From fcedfddf00b3f994e4f4e40332ac7fc192c63244 Mon Sep 17 00:00:00 2001 From: polwex Date: Sun, 5 Oct 2025 21:56:51 +0700 Subject: claude is gud --- vere/.gitignore | 289 + vere/CONTRIBUTING.md | 173 + vere/INSTALL.md | 151 + vere/LICENSE.txt | 21 + vere/MAINTAINERS.md | 178 + vere/README.md | 45 + vere/boot-fake-ship.sh | 60 + vere/build.zig | 721 + vere/build.zig.zon | 73 + vere/doc/spec/nock/4.txt | 45 + vere/doc/spec/nock/5.txt | 39 + vere/doc/spec/u3.md | 1571 + vere/docker/Dockerfile | 12 + vere/docker/README.md | 135 + vere/docker/get_urbit_code.sh | 8 + vere/docker/reset_urbit_code.sh | 16 + vere/docker/start_urbit.sh | 71 + vere/ext/avahi/build.zig | 810 + vere/ext/avahi/build.zig.zon | 22 + vere/ext/backtrace/build.zig | 207 + vere/ext/backtrace/build.zig.zon | 14 + vere/ext/curl/build.zig | 418 + vere/ext/curl/build.zig.zon | 17 + vere/ext/gmp/build.zig | 969 + vere/ext/gmp/build.zig.zon | 14 + vere/ext/gmp/gen/README.md | 74 + vere/ext/gmp/gen/aarch64-linux/config.h | 672 + vere/ext/gmp/gen/aarch64-linux/fac_table.h | 49 + vere/ext/gmp/gen/aarch64-linux/fib_table.h | 8 + vere/ext/gmp/gen/aarch64-linux/mp_bases.h | 13 + vere/ext/gmp/gen/aarch64-linux/mpn/add_n.s | 134 + vere/ext/gmp/gen/aarch64-linux/mpn/addlsh1_n.s | 161 + vere/ext/gmp/gen/aarch64-linux/mpn/addlsh2_n.s | 161 + vere/ext/gmp/gen/aarch64-linux/mpn/addmul_1.s | 147 + vere/ext/gmp/gen/aarch64-linux/mpn/and_n.s | 127 + vere/ext/gmp/gen/aarch64-linux/mpn/andn_n.s | 127 + vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_dbm1c.s | 123 + vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_q_1.s | 137 + vere/ext/gmp/gen/aarch64-linux/mpn/cnd_add_n.s | 136 + vere/ext/gmp/gen/aarch64-linux/mpn/cnd_sub_n.s | 136 + vere/ext/gmp/gen/aarch64-linux/mpn/com.s | 96 + vere/ext/gmp/gen/aarch64-linux/mpn/copyd.s | 105 + vere/ext/gmp/gen/aarch64-linux/mpn/copyi.s | 90 + vere/ext/gmp/gen/aarch64-linux/mpn/fib_table.c | 107 + vere/ext/gmp/gen/aarch64-linux/mpn/gcd_11.s | 80 + vere/ext/gmp/gen/aarch64-linux/mpn/gcd_22.s | 124 + vere/ext/gmp/gen/aarch64-linux/mpn/hamdist.s | 193 + vere/ext/gmp/gen/aarch64-linux/mpn/invert_limb.s | 347 + vere/ext/gmp/gen/aarch64-linux/mpn/ior_n.s | 127 + vere/ext/gmp/gen/aarch64-linux/mpn/iorn_n.s | 127 + vere/ext/gmp/gen/aarch64-linux/mpn/jacobitab.h | 13 + vere/ext/gmp/gen/aarch64-linux/mpn/lshift.s | 150 + vere/ext/gmp/gen/aarch64-linux/mpn/lshiftc.s | 153 + vere/ext/gmp/gen/aarch64-linux/mpn/mod_34lsub1.s | 136 + vere/ext/gmp/gen/aarch64-linux/mpn/mp_bases.c | 268 + vere/ext/gmp/gen/aarch64-linux/mpn/mul_1.s | 142 + vere/ext/gmp/gen/aarch64-linux/mpn/nand_n.s | 135 + vere/ext/gmp/gen/aarch64-linux/mpn/nior_n.s | 135 + vere/ext/gmp/gen/aarch64-linux/mpn/perfsqr.h | 46 + vere/ext/gmp/gen/aarch64-linux/mpn/popcount.s | 169 + vere/ext/gmp/gen/aarch64-linux/mpn/rsblsh1_n.s | 161 + vere/ext/gmp/gen/aarch64-linux/mpn/rsblsh2_n.s | 161 + vere/ext/gmp/gen/aarch64-linux/mpn/rsh1add_n.s | 175 + vere/ext/gmp/gen/aarch64-linux/mpn/rsh1sub_n.s | 175 + vere/ext/gmp/gen/aarch64-linux/mpn/rshift.s | 148 + vere/ext/gmp/gen/aarch64-linux/mpn/sec_tabselect.s | 133 + .../gmp/gen/aarch64-linux/mpn/sqr_diag_addlsh1.s | 113 + vere/ext/gmp/gen/aarch64-linux/mpn/sub_n.s | 134 + vere/ext/gmp/gen/aarch64-linux/mpn/sublsh1_n.s | 161 + vere/ext/gmp/gen/aarch64-linux/mpn/sublsh2_n.s | 161 + vere/ext/gmp/gen/aarch64-linux/mpn/submul_1.s | 147 + vere/ext/gmp/gen/aarch64-linux/mpn/xnor_n.s | 127 + vere/ext/gmp/gen/aarch64-linux/mpn/xor_n.s | 127 + vere/ext/gmp/gen/aarch64-linux/sieve_table.h | 46 + vere/ext/gmp/gen/aarch64-linux/trialdivtab.h | 1214 + vere/ext/gmp/gen/aarch64-macos/config.h | 668 + vere/ext/gmp/gen/aarch64-macos/fac_table.h | 49 + vere/ext/gmp/gen/aarch64-macos/fib_table.h | 8 + vere/ext/gmp/gen/aarch64-macos/mp_bases.h | 13 + vere/ext/gmp/gen/aarch64-macos/mpn/add_n.s | 134 + vere/ext/gmp/gen/aarch64-macos/mpn/addlsh1_n.s | 161 + vere/ext/gmp/gen/aarch64-macos/mpn/addlsh2_n.s | 161 + vere/ext/gmp/gen/aarch64-macos/mpn/addmul_1.s | 152 + vere/ext/gmp/gen/aarch64-macos/mpn/and_n.s | 127 + vere/ext/gmp/gen/aarch64-macos/mpn/andn_n.s | 127 + vere/ext/gmp/gen/aarch64-macos/mpn/bdiv_dbm1c.s | 123 + vere/ext/gmp/gen/aarch64-macos/mpn/bdiv_q_1.s | 137 + vere/ext/gmp/gen/aarch64-macos/mpn/cnd_add_n.s | 136 + vere/ext/gmp/gen/aarch64-macos/mpn/cnd_sub_n.s | 136 + vere/ext/gmp/gen/aarch64-macos/mpn/com.s | 104 + vere/ext/gmp/gen/aarch64-macos/mpn/copyd.s | 97 + vere/ext/gmp/gen/aarch64-macos/mpn/copyi.s | 94 + vere/ext/gmp/gen/aarch64-macos/mpn/divrem_1.s | 235 + vere/ext/gmp/gen/aarch64-macos/mpn/fib_table.c | 107 + vere/ext/gmp/gen/aarch64-macos/mpn/gcd_11.s | 80 + vere/ext/gmp/gen/aarch64-macos/mpn/gcd_22.s | 124 + vere/ext/gmp/gen/aarch64-macos/mpn/hamdist.s | 193 + vere/ext/gmp/gen/aarch64-macos/mpn/invert_limb.s | 347 + vere/ext/gmp/gen/aarch64-macos/mpn/ior_n.s | 127 + vere/ext/gmp/gen/aarch64-macos/mpn/iorn_n.s | 127 + vere/ext/gmp/gen/aarch64-macos/mpn/jacobitab.h | 13 + vere/ext/gmp/gen/aarch64-macos/mpn/lshift.s | 150 + vere/ext/gmp/gen/aarch64-macos/mpn/lshiftc.s | 153 + vere/ext/gmp/gen/aarch64-macos/mpn/mod_34lsub1.s | 136 + vere/ext/gmp/gen/aarch64-macos/mpn/mp_bases.c | 268 + vere/ext/gmp/gen/aarch64-macos/mpn/mul_1.s | 143 + vere/ext/gmp/gen/aarch64-macos/mpn/nand_n.s | 135 + vere/ext/gmp/gen/aarch64-macos/mpn/nior_n.s | 135 + vere/ext/gmp/gen/aarch64-macos/mpn/perfsqr.h | 46 + vere/ext/gmp/gen/aarch64-macos/mpn/popcount.s | 169 + vere/ext/gmp/gen/aarch64-macos/mpn/rsblsh1_n.s | 161 + vere/ext/gmp/gen/aarch64-macos/mpn/rsblsh2_n.s | 161 + vere/ext/gmp/gen/aarch64-macos/mpn/rsh1add_n.s | 175 + vere/ext/gmp/gen/aarch64-macos/mpn/rsh1sub_n.s | 175 + vere/ext/gmp/gen/aarch64-macos/mpn/rshift.s | 148 + vere/ext/gmp/gen/aarch64-macos/mpn/sec_tabselect.s | 133 + .../gmp/gen/aarch64-macos/mpn/sqr_diag_addlsh1.s | 113 + vere/ext/gmp/gen/aarch64-macos/mpn/sub_n.s | 134 + vere/ext/gmp/gen/aarch64-macos/mpn/sublsh1_n.s | 161 + vere/ext/gmp/gen/aarch64-macos/mpn/sublsh2_n.s | 161 + vere/ext/gmp/gen/aarch64-macos/mpn/submul_1.s | 152 + vere/ext/gmp/gen/aarch64-macos/mpn/tmp-add_n.s | 134 + vere/ext/gmp/gen/aarch64-macos/mpn/xnor_n.s | 127 + vere/ext/gmp/gen/aarch64-macos/mpn/xor_n.s | 127 + vere/ext/gmp/gen/aarch64-macos/sieve_table.h | 46 + vere/ext/gmp/gen/aarch64-macos/trialdivtab.h | 1214 + vere/ext/gmp/gen/x86_64-linux/config.h | 668 + vere/ext/gmp/gen/x86_64-linux/fac_table.h | 49 + vere/ext/gmp/gen/x86_64-linux/fib_table.h | 8 + vere/ext/gmp/gen/x86_64-linux/mp_bases.h | 13 + vere/ext/gmp/gen/x86_64-linux/mpn/add_err1_n.s | 237 + vere/ext/gmp/gen/x86_64-linux/mpn/add_err2_n.s | 184 + vere/ext/gmp/gen/x86_64-linux/mpn/add_err3_n.s | 168 + vere/ext/gmp/gen/x86_64-linux/mpn/add_n.s | 194 + .../ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s | 185 + vere/ext/gmp/gen/x86_64-linux/mpn/addlsh1_n.s | 179 + vere/ext/gmp/gen/x86_64-linux/mpn/addlsh2_n.s | 204 + vere/ext/gmp/gen/x86_64-linux/mpn/addlsh_n.s | 228 + vere/ext/gmp/gen/x86_64-linux/mpn/addmul_1.s | 196 + vere/ext/gmp/gen/x86_64-linux/mpn/addmul_2.s | 209 + vere/ext/gmp/gen/x86_64-linux/mpn/and_n.s | 149 + vere/ext/gmp/gen/x86_64-linux/mpn/andn_n.s | 154 + vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_dbm1c.s | 121 + vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_q_1.s | 198 + vere/ext/gmp/gen/x86_64-linux/mpn/cnd_add_n.s | 190 + vere/ext/gmp/gen/x86_64-linux/mpn/cnd_sub_n.s | 190 + vere/ext/gmp/gen/x86_64-linux/mpn/com.s | 110 + vere/ext/gmp/gen/x86_64-linux/mpn/copyd.s | 108 + vere/ext/gmp/gen/x86_64-linux/mpn/copyi.s | 107 + vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_1n_pi1.s | 261 + vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2n_pi1.s | 171 + vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2u_pi1.s | 211 + vere/ext/gmp/gen/x86_64-linux/mpn/dive_1.s | 175 + vere/ext/gmp/gen/x86_64-linux/mpn/divrem_1.s | 335 + vere/ext/gmp/gen/x86_64-linux/mpn/divrem_2.s | 208 + vere/ext/gmp/gen/x86_64-linux/mpn/fib_table.c | 107 + vere/ext/gmp/gen/x86_64-linux/mpn/gcd_11.s | 256 + vere/ext/gmp/gen/x86_64-linux/mpn/gcd_22.s | 434 + vere/ext/gmp/gen/x86_64-linux/mpn/hamdist.s | 167 + vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb.s | 123 + .../gmp/gen/x86_64-linux/mpn/invert_limb_table.s | 313 + vere/ext/gmp/gen/x86_64-linux/mpn/ior_n.s | 149 + vere/ext/gmp/gen/x86_64-linux/mpn/iorn_n.s | 154 + vere/ext/gmp/gen/x86_64-linux/mpn/jacobitab.h | 13 + vere/ext/gmp/gen/x86_64-linux/mpn/lshift.s | 186 + vere/ext/gmp/gen/x86_64-linux/mpn/lshiftc.s | 197 + vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_1.s | 241 + vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_2.s | 252 + vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_4.s | 283 + vere/ext/gmp/gen/x86_64-linux/mpn/mod_34lsub1.s | 228 + vere/ext/gmp/gen/x86_64-linux/mpn/mode1o.s | 189 + vere/ext/gmp/gen/x86_64-linux/mpn/mp_bases.c | 268 + vere/ext/gmp/gen/x86_64-linux/mpn/mul_1.s | 205 + vere/ext/gmp/gen/x86_64-linux/mpn/mul_2.s | 218 + vere/ext/gmp/gen/x86_64-linux/mpn/mul_basecase.s | 483 + vere/ext/gmp/gen/x86_64-linux/mpn/mullo_basecase.s | 439 + .../ext/gmp/gen/x86_64-linux/mpn/mulmid_basecase.s | 573 + vere/ext/gmp/gen/x86_64-linux/mpn/nand_n.s | 155 + vere/ext/gmp/gen/x86_64-linux/mpn/nior_n.s | 155 + vere/ext/gmp/gen/x86_64-linux/mpn/perfsqr.h | 46 + vere/ext/gmp/gen/x86_64-linux/mpn/popcount.s | 160 + vere/ext/gmp/gen/x86_64-linux/mpn/redc_1.s | 603 + vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh1_n.s | 179 + vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh2_n.s | 204 + vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh_n.s | 228 + vere/ext/gmp/gen/x86_64-linux/mpn/rsh1add_n.s | 203 + vere/ext/gmp/gen/x86_64-linux/mpn/rsh1sub_n.s | 203 + vere/ext/gmp/gen/x86_64-linux/mpn/rshift.s | 191 + vere/ext/gmp/gen/x86_64-linux/mpn/sec_tabselect.s | 190 + vere/ext/gmp/gen/x86_64-linux/mpn/sqr_basecase.s | 818 + .../gmp/gen/x86_64-linux/mpn/sqr_diag_addlsh1.s | 130 + vere/ext/gmp/gen/x86_64-linux/mpn/sub_err1_n.s | 237 + vere/ext/gmp/gen/x86_64-linux/mpn/sub_err2_n.s | 184 + vere/ext/gmp/gen/x86_64-linux/mpn/sub_err3_n.s | 168 + vere/ext/gmp/gen/x86_64-linux/mpn/sub_n.s | 194 + vere/ext/gmp/gen/x86_64-linux/mpn/sublsh1_n.s | 175 + vere/ext/gmp/gen/x86_64-linux/mpn/submul_1.s | 196 + vere/ext/gmp/gen/x86_64-linux/mpn/xnor_n.s | 154 + vere/ext/gmp/gen/x86_64-linux/mpn/xor_n.s | 149 + vere/ext/gmp/gen/x86_64-linux/sieve_table.h | 46 + vere/ext/gmp/gen/x86_64-linux/trialdivtab.h | 1214 + vere/ext/gmp/gen/x86_64-macos/config.h | 672 + vere/ext/gmp/gen/x86_64-macos/fac_table.h | 49 + vere/ext/gmp/gen/x86_64-macos/fib_table.h | 8 + vere/ext/gmp/gen/x86_64-macos/mp_bases.h | 13 + vere/ext/gmp/gen/x86_64-macos/mpn/add_err1_n.s | 237 + vere/ext/gmp/gen/x86_64-macos/mpn/add_err2_n.s | 184 + vere/ext/gmp/gen/x86_64-macos/mpn/add_err3_n.s | 168 + vere/ext/gmp/gen/x86_64-macos/mpn/add_n.s | 289 + vere/ext/gmp/gen/x86_64-macos/mpn/addlsh1_n.s | 212 + vere/ext/gmp/gen/x86_64-macos/mpn/addlsh2_n.s | 214 + vere/ext/gmp/gen/x86_64-macos/mpn/addlsh_n.s | 269 + vere/ext/gmp/gen/x86_64-macos/mpn/addmul_1.s | 211 + vere/ext/gmp/gen/x86_64-macos/mpn/addmul_2.s | 255 + vere/ext/gmp/gen/x86_64-macos/mpn/and_n.s | 158 + vere/ext/gmp/gen/x86_64-macos/mpn/andn_n.s | 163 + vere/ext/gmp/gen/x86_64-macos/mpn/bdiv_dbm1c.s | 121 + vere/ext/gmp/gen/x86_64-macos/mpn/bdiv_q_1.s | 215 + vere/ext/gmp/gen/x86_64-macos/mpn/cnd_add_n.s | 184 + vere/ext/gmp/gen/x86_64-macos/mpn/cnd_sub_n.s | 207 + vere/ext/gmp/gen/x86_64-macos/mpn/com.s | 335 + vere/ext/gmp/gen/x86_64-macos/mpn/copyd.s | 279 + vere/ext/gmp/gen/x86_64-macos/mpn/copyi.s | 324 + vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_1n_pi1.s | 259 + vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_2n_pi1.s | 171 + vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_2u_pi1.s | 211 + vere/ext/gmp/gen/x86_64-macos/mpn/dive_1.s | 175 + vere/ext/gmp/gen/x86_64-macos/mpn/divrem_1.s | 348 + vere/ext/gmp/gen/x86_64-macos/mpn/divrem_2.s | 207 + vere/ext/gmp/gen/x86_64-macos/mpn/fib_table.c | 107 + vere/ext/gmp/gen/x86_64-macos/mpn/gcd_11.s | 120 + vere/ext/gmp/gen/x86_64-macos/mpn/gcd_22.s | 152 + vere/ext/gmp/gen/x86_64-macos/mpn/hamdist.s | 217 + vere/ext/gmp/gen/x86_64-macos/mpn/invert_limb.s | 124 + .../gmp/gen/x86_64-macos/mpn/invert_limb_table.s | 313 + vere/ext/gmp/gen/x86_64-macos/mpn/ior_n.s | 158 + vere/ext/gmp/gen/x86_64-macos/mpn/iorn_n.s | 163 + vere/ext/gmp/gen/x86_64-macos/mpn/jacobitab.h | 13 + vere/ext/gmp/gen/x86_64-macos/mpn/lshift.s | 211 + vere/ext/gmp/gen/x86_64-macos/mpn/lshiftc.s | 222 + vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_1.s | 240 + vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_2.s | 251 + vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_4.s | 282 + vere/ext/gmp/gen/x86_64-macos/mpn/mod_34lsub1.s | 246 + vere/ext/gmp/gen/x86_64-macos/mpn/mode1o.s | 189 + vere/ext/gmp/gen/x86_64-macos/mpn/mp_bases.c | 268 + vere/ext/gmp/gen/x86_64-macos/mpn/mul_1.s | 173 + vere/ext/gmp/gen/x86_64-macos/mpn/mul_2.s | 190 + vere/ext/gmp/gen/x86_64-macos/mpn/mul_basecase.s | 455 + vere/ext/gmp/gen/x86_64-macos/mpn/mullo_basecase.s | 436 + vere/ext/gmp/gen/x86_64-macos/mpn/nand_n.s | 164 + vere/ext/gmp/gen/x86_64-macos/mpn/nior_n.s | 164 + vere/ext/gmp/gen/x86_64-macos/mpn/perfsqr.h | 46 + vere/ext/gmp/gen/x86_64-macos/mpn/popcount.s | 211 + vere/ext/gmp/gen/x86_64-macos/mpn/redc_1.s | 446 + vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh1_n.s | 212 + vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh2_n.s | 214 + vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh_n.s | 269 + vere/ext/gmp/gen/x86_64-macos/mpn/rsh1add_n.s | 208 + vere/ext/gmp/gen/x86_64-macos/mpn/rsh1sub_n.s | 208 + vere/ext/gmp/gen/x86_64-macos/mpn/rshift.s | 230 + vere/ext/gmp/gen/x86_64-macos/mpn/sec_tabselect.s | 233 + vere/ext/gmp/gen/x86_64-macos/mpn/sqr_basecase.s | 520 + .../gmp/gen/x86_64-macos/mpn/sqr_diag_addlsh1.s | 130 + vere/ext/gmp/gen/x86_64-macos/mpn/sub_err1_n.s | 237 + vere/ext/gmp/gen/x86_64-macos/mpn/sub_err2_n.s | 184 + vere/ext/gmp/gen/x86_64-macos/mpn/sub_err3_n.s | 168 + vere/ext/gmp/gen/x86_64-macos/mpn/sub_n.s | 289 + vere/ext/gmp/gen/x86_64-macos/mpn/sublsh1_n.s | 190 + vere/ext/gmp/gen/x86_64-macos/mpn/sublsh2_n.s | 190 + vere/ext/gmp/gen/x86_64-macos/mpn/submul_1.s | 211 + vere/ext/gmp/gen/x86_64-macos/mpn/xnor_n.s | 163 + vere/ext/gmp/gen/x86_64-macos/mpn/xor_n.s | 158 + vere/ext/gmp/gen/x86_64-macos/sieve_table.h | 46 + vere/ext/gmp/gen/x86_64-macos/trialdivtab.h | 1214 + vere/ext/gmp/gen/x86_64-windows/config.h | 674 + vere/ext/gmp/gen/x86_64-windows/fac_table.h | 49 + vere/ext/gmp/gen/x86_64-windows/fib_table.h | 8 + vere/ext/gmp/gen/x86_64-windows/gmp.h | 2344 ++ vere/ext/gmp/gen/x86_64-windows/mp_bases.h | 13 + vere/ext/gmp/gen/x86_64-windows/mpn/add_n.s | 216 + .../gmp/gen/x86_64-windows/mpn/addaddmul_1msb0.s | 178 + vere/ext/gmp/gen/x86_64-windows/mpn/addlsh1_n.s | 189 + vere/ext/gmp/gen/x86_64-windows/mpn/addlsh2_n.s | 214 + vere/ext/gmp/gen/x86_64-windows/mpn/addlsh_n.s | 238 + vere/ext/gmp/gen/x86_64-windows/mpn/addmul_1.s | 199 + vere/ext/gmp/gen/x86_64-windows/mpn/addmul_2.s | 219 + vere/ext/gmp/gen/x86_64-windows/mpn/and_n.s | 159 + vere/ext/gmp/gen/x86_64-windows/mpn/andn_n.s | 164 + vere/ext/gmp/gen/x86_64-windows/mpn/bdiv_dbm1c.s | 131 + vere/ext/gmp/gen/x86_64-windows/mpn/bdiv_q_1.s | 218 + vere/ext/gmp/gen/x86_64-windows/mpn/cnd_add_n.s | 200 + vere/ext/gmp/gen/x86_64-windows/mpn/cnd_sub_n.s | 200 + vere/ext/gmp/gen/x86_64-windows/mpn/com.s | 119 + vere/ext/gmp/gen/x86_64-windows/mpn/copyd.s | 111 + vere/ext/gmp/gen/x86_64-windows/mpn/copyi.s | 110 + .../ext/gmp/gen/x86_64-windows/mpn/div_qr_2n_pi1.s | 181 + vere/ext/gmp/gen/x86_64-windows/mpn/dive_1.s | 186 + vere/ext/gmp/gen/x86_64-windows/mpn/divrem_1.s | 352 + vere/ext/gmp/gen/x86_64-windows/mpn/divrem_2.s | 217 + vere/ext/gmp/gen/x86_64-windows/mpn/fib_table.c | 107 + vere/ext/gmp/gen/x86_64-windows/mpn/gcd_11.s | 264 + vere/ext/gmp/gen/x86_64-windows/mpn/hamdist.s | 176 + vere/ext/gmp/gen/x86_64-windows/mpn/invert_limb.s | 130 + .../gmp/gen/x86_64-windows/mpn/invert_limb_table.s | 313 + vere/ext/gmp/gen/x86_64-windows/mpn/ior_n.s | 159 + vere/ext/gmp/gen/x86_64-windows/mpn/iorn_n.s | 164 + vere/ext/gmp/gen/x86_64-windows/mpn/jacobitab.h | 13 + vere/ext/gmp/gen/x86_64-windows/mpn/lshift.s | 196 + vere/ext/gmp/gen/x86_64-windows/mpn/lshiftc.s | 207 + vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_1.s | 258 + vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_2.s | 269 + vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_4.s | 300 + vere/ext/gmp/gen/x86_64-windows/mpn/mod_34lsub1.s | 237 + vere/ext/gmp/gen/x86_64-windows/mpn/mode1o.s | 207 + vere/ext/gmp/gen/x86_64-windows/mpn/mp_bases.c | 268 + vere/ext/gmp/gen/x86_64-windows/mpn/mul_1.s | 211 + vere/ext/gmp/gen/x86_64-windows/mpn/mul_2.s | 228 + vere/ext/gmp/gen/x86_64-windows/mpn/mul_basecase.s | 493 + .../gmp/gen/x86_64-windows/mpn/mullo_basecase.s | 452 + .../gmp/gen/x86_64-windows/mpn/mulmid_basecase.s | 583 + vere/ext/gmp/gen/x86_64-windows/mpn/nand_n.s | 165 + vere/ext/gmp/gen/x86_64-windows/mpn/nior_n.s | 165 + vere/ext/gmp/gen/x86_64-windows/mpn/perfsqr.h | 46 + vere/ext/gmp/gen/x86_64-windows/mpn/popcount.s | 168 + vere/ext/gmp/gen/x86_64-windows/mpn/redc_1.s | 613 + vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh1_n.s | 189 + vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh2_n.s | 214 + vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh_n.s | 238 + vere/ext/gmp/gen/x86_64-windows/mpn/rsh1add_n.s | 222 + vere/ext/gmp/gen/x86_64-windows/mpn/rsh1sub_n.s | 222 + vere/ext/gmp/gen/x86_64-windows/mpn/rshift.s | 201 + .../ext/gmp/gen/x86_64-windows/mpn/sec_tabselect.s | 200 + vere/ext/gmp/gen/x86_64-windows/mpn/sqr_basecase.s | 831 + .../gmp/gen/x86_64-windows/mpn/sqr_diag_addlsh1.s | 140 + vere/ext/gmp/gen/x86_64-windows/mpn/sub_n.s | 216 + vere/ext/gmp/gen/x86_64-windows/mpn/sublsh1_n.s | 185 + vere/ext/gmp/gen/x86_64-windows/mpn/submul_1.s | 199 + vere/ext/gmp/gen/x86_64-windows/mpn/xnor_n.s | 164 + vere/ext/gmp/gen/x86_64-windows/mpn/xor_n.s | 159 + vere/ext/gmp/gen/x86_64-windows/sieve_table.h | 46 + vere/ext/gmp/gen/x86_64-windows/trialdivtab.h | 1214 + vere/ext/h2o/build.zig | 457 + vere/ext/h2o/build.zig.zon | 34 + vere/ext/h2o/patches/h2o-2.2.6/deps/klib/kopen.c | 344 + vere/ext/h2o/patches/h2o-2.2.6/deps/klib/ksw.c | 637 + .../patches/h2o-2.2.6/deps/klib/test/kbit_test.c | 141 + .../h2o-2.2.6/deps/picohttpparser/picohttpparser.c | 622 + vere/ext/libuv/build.zig | 170 + vere/ext/libuv/build.zig.zon | 14 + vere/ext/lmdb/build.zig | 56 + vere/ext/lmdb/build.zig.zon | 14 + vere/ext/lmdb/patches/lmdb-0.9.29/mdb.c | 10324 +++++++ vere/ext/murmur3/build.zig | 38 + vere/ext/murmur3/build.zig.zon | 8 + vere/ext/murmur3/vendor/murmur3.c | 314 + vere/ext/murmur3/vendor/murmur3.h | 30 + vere/ext/nasm/.gitattributes | 1 + vere/ext/nasm/.gitignore | 2 + vere/ext/nasm/LICENSE | 29 + vere/ext/nasm/README.md | 24 + vere/ext/nasm/asm/assemble.c | 3411 +++ vere/ext/nasm/asm/assemble.h | 56 + vere/ext/nasm/asm/directbl.c | 192 + vere/ext/nasm/asm/directiv.c | 567 + vere/ext/nasm/asm/directiv.dat | 110 + vere/ext/nasm/asm/directiv.h | 79 + vere/ext/nasm/asm/error.c | 288 + vere/ext/nasm/asm/eval.c | 1067 + vere/ext/nasm/asm/eval.h | 49 + vere/ext/nasm/asm/exprdump.c | 79 + vere/ext/nasm/asm/exprlib.c | 200 + vere/ext/nasm/asm/floats.c | 960 + vere/ext/nasm/asm/floats.h | 67 + vere/ext/nasm/asm/labels.c | 720 + vere/ext/nasm/asm/listing.c | 415 + vere/ext/nasm/asm/listing.h | 196 + vere/ext/nasm/asm/nasm.c | 2352 ++ vere/ext/nasm/asm/parser.c | 1322 + vere/ext/nasm/asm/parser.h | 45 + vere/ext/nasm/asm/pptok.c | 848 + vere/ext/nasm/asm/pptok.dat | 117 + vere/ext/nasm/asm/pptok.h | 202 + vere/ext/nasm/asm/pptok.pl | 353 + vere/ext/nasm/asm/pragma.c | 369 + vere/ext/nasm/asm/preproc.c | 8070 +++++ vere/ext/nasm/asm/preproc.h | 56 + vere/ext/nasm/asm/quote.c | 563 + vere/ext/nasm/asm/quote.h | 61 + vere/ext/nasm/asm/rdstrnum.c | 70 + vere/ext/nasm/asm/segalloc.c | 51 + vere/ext/nasm/asm/srcfile.c | 118 + vere/ext/nasm/asm/srcfile.h | 183 + vere/ext/nasm/asm/stdscan.c | 346 + vere/ext/nasm/asm/stdscan.h | 49 + vere/ext/nasm/asm/strfunc.c | 359 + vere/ext/nasm/asm/tokens.dat | 215 + vere/ext/nasm/asm/tokens.h | 11 + vere/ext/nasm/asm/tokhash.c | 19045 ++++++++++++ vere/ext/nasm/asm/tokhash.pl | 282 + vere/ext/nasm/asm/warnings.c | 241 + vere/ext/nasm/asm/warnings.pl | 303 + vere/ext/nasm/build.zig | 830 + vere/ext/nasm/build.zig.zon | 25 + vere/ext/nasm/common/common.c | 65 + vere/ext/nasm/config/config.h.in | 913 + vere/ext/nasm/config/msvc.h | 196 + vere/ext/nasm/config/unconfig.h | 182 + vere/ext/nasm/config/unknown.h | 51 + vere/ext/nasm/config/watcom.h | 105 + vere/ext/nasm/disasm/disasm.c | 1762 ++ vere/ext/nasm/disasm/disasm.h | 49 + vere/ext/nasm/disasm/ndisasm.c | 400 + vere/ext/nasm/disasm/sync.c | 129 + vere/ext/nasm/disasm/sync.h | 45 + vere/ext/nasm/headers/c | 33 + vere/ext/nasm/headers/doc | 33 + vere/ext/nasm/headers/mac | 33 + vere/ext/nasm/headers/perl | 33 + vere/ext/nasm/include/bytesex.h | 261 + vere/ext/nasm/include/compiler.h | 415 + vere/ext/nasm/include/dbginfo.h | 115 + vere/ext/nasm/include/disp8.h | 45 + vere/ext/nasm/include/error.h | 162 + vere/ext/nasm/include/hashtbl.h | 108 + vere/ext/nasm/include/iflag.h | 134 + vere/ext/nasm/include/ilog2.h | 201 + vere/ext/nasm/include/insns.h | 132 + vere/ext/nasm/include/labels.h | 79 + vere/ext/nasm/include/md5.h | 21 + vere/ext/nasm/include/nasm.h | 1461 + vere/ext/nasm/include/nasmint.h | 219 + vere/ext/nasm/include/nasmlib.h | 467 + vere/ext/nasm/include/nctype.h | 127 + vere/ext/nasm/include/opflags.h | 301 + vere/ext/nasm/include/perfhash.h | 52 + vere/ext/nasm/include/raa.h | 49 + vere/ext/nasm/include/rbtree.h | 108 + vere/ext/nasm/include/rdoff.h | 169 + vere/ext/nasm/include/saa.h | 94 + vere/ext/nasm/include/strlist.h | 93 + vere/ext/nasm/include/tables.h | 77 + vere/ext/nasm/include/ver.h | 55 + vere/ext/nasm/include/warnings.h | 131 + vere/ext/nasm/macros/altreg.mac | 107 + vere/ext/nasm/macros/fp.mac | 62 + vere/ext/nasm/macros/ifunc.mac | 48 + vere/ext/nasm/macros/macros.c | 875 + vere/ext/nasm/macros/macros.pl | 311 + vere/ext/nasm/macros/masm.mac | 82 + vere/ext/nasm/macros/smartalign.mac | 191 + vere/ext/nasm/macros/standard.mac | 331 + vere/ext/nasm/misc/Doxyfile | 752 + vere/ext/nasm/misc/Nindent | 18 + vere/ext/nasm/misc/README | 2 + vere/ext/nasm/misc/c16.mac | 82 + vere/ext/nasm/misc/c32.mac | 52 + vere/ext/nasm/misc/crcgen.c | 44 + vere/ext/nasm/misc/emacstbl.pl | 215 + vere/ext/nasm/misc/exebin.mac | 57 + vere/ext/nasm/misc/exebin2.mac | 114 + vere/ext/nasm/misc/fmtinsns.pl | 40 + vere/ext/nasm/misc/genfma.pl | 63 + vere/ext/nasm/misc/hints.txt | 26 + vere/ext/nasm/misc/magic | 6 + vere/ext/nasm/misc/myC32.mac | 121 + vere/ext/nasm/misc/nasm.sl | 320 + vere/ext/nasm/misc/nasmstab | 296 + vere/ext/nasm/misc/omfdump.c | 516 + vere/ext/nasm/misc/pmw.bat | 9 + vere/ext/nasm/misc/proc32.ash | 441 + vere/ext/nasm/misc/scitech.mac | 1222 + vere/ext/nasm/misc/xcrcgen.c | 79 + vere/ext/nasm/nasmlib/alloc.c | 197 + vere/ext/nasm/nasmlib/alloc.h | 50 + vere/ext/nasm/nasmlib/asprintf.c | 94 + vere/ext/nasm/nasmlib/badenum.c | 43 + vere/ext/nasm/nasmlib/bsi.c | 76 + vere/ext/nasm/nasmlib/crc32.c | 115 + vere/ext/nasm/nasmlib/crc64.c | 207 + vere/ext/nasm/nasmlib/errfile.c | 4 + vere/ext/nasm/nasmlib/file.c | 352 + vere/ext/nasm/nasmlib/file.h | 234 + vere/ext/nasm/nasmlib/filename.c | 63 + vere/ext/nasm/nasmlib/hashtbl.c | 287 + vere/ext/nasm/nasmlib/ilog2.c | 2 + vere/ext/nasm/nasmlib/md5c.c | 246 + vere/ext/nasm/nasmlib/mmap.c | 139 + vere/ext/nasm/nasmlib/nctype.c | 116 + vere/ext/nasm/nasmlib/path.c | 186 + vere/ext/nasm/nasmlib/perfhash.c | 55 + vere/ext/nasm/nasmlib/perfhash.pl | 357 + vere/ext/nasm/nasmlib/raa.c | 198 + vere/ext/nasm/nasmlib/rbtree.c | 259 + vere/ext/nasm/nasmlib/readnum.c | 179 + vere/ext/nasm/nasmlib/realpath.c | 133 + vere/ext/nasm/nasmlib/rlimit.c | 78 + vere/ext/nasm/nasmlib/saa.c | 383 + vere/ext/nasm/nasmlib/string.c | 224 + vere/ext/nasm/nasmlib/strlist.c | 207 + vere/ext/nasm/nasmlib/ver.c | 80 + vere/ext/nasm/nasmlib/zerobuf.c | 42 + vere/ext/nasm/output/codeview.c | 820 + vere/ext/nasm/output/dwarf.h | 621 + vere/ext/nasm/output/elf.h | 557 + vere/ext/nasm/output/legacy.c | 122 + vere/ext/nasm/output/macho.h | 282 + vere/ext/nasm/output/nulldbg.c | 96 + vere/ext/nasm/output/nullout.c | 60 + vere/ext/nasm/output/outaout.c | 923 + vere/ext/nasm/output/outaout.mac | 37 + vere/ext/nasm/output/outas86.c | 611 + vere/ext/nasm/output/outas86.mac | 37 + vere/ext/nasm/output/outbin.c | 1669 ++ vere/ext/nasm/output/outbin.mac | 40 + vere/ext/nasm/output/outcoff.c | 1436 + vere/ext/nasm/output/outcoff.mac | 43 + vere/ext/nasm/output/outdbg.c | 576 + vere/ext/nasm/output/outdbg.mac | 56 + vere/ext/nasm/output/outelf.c | 3672 +++ vere/ext/nasm/output/outelf.h | 133 + vere/ext/nasm/output/outelf.mac | 41 + vere/ext/nasm/output/outform.c | 135 + vere/ext/nasm/output/outform.h | 354 + vere/ext/nasm/output/outieee.c | 1521 + vere/ext/nasm/output/outlib.c | 324 + vere/ext/nasm/output/outlib.h | 313 + vere/ext/nasm/output/outmacho.c | 2411 ++ vere/ext/nasm/output/outmacho.mac | 49 + vere/ext/nasm/output/outobj.c | 2701 ++ vere/ext/nasm/output/outobj.mac | 49 + vere/ext/nasm/output/pecoff.h | 542 + vere/ext/nasm/output/stabs.h | 150 + vere/ext/nasm/perllib/crc64.ph | 158 + vere/ext/nasm/perllib/gensv.pl | 34 + vere/ext/nasm/perllib/phash.ph | 203 + vere/ext/nasm/perllib/random_sv_vectors.ph | 67 + vere/ext/nasm/stdlib/snprintf.c | 26 + vere/ext/nasm/stdlib/strlcpy.c | 51 + vere/ext/nasm/stdlib/strnlen.c | 45 + vere/ext/nasm/stdlib/strrchrnul.c | 49 + vere/ext/nasm/stdlib/vsnprintf.c | 46 + vere/ext/nasm/x86/disp8.c | 131 + vere/ext/nasm/x86/iflag.c | 315 + vere/ext/nasm/x86/iflaggen.h | 287 + vere/ext/nasm/x86/iflags.ph | 153 + vere/ext/nasm/x86/insns-iflags.ph | 251 + vere/ext/nasm/x86/insns.dat | 6570 ++++ vere/ext/nasm/x86/insns.pl | 1167 + vere/ext/nasm/x86/insnsa.c | 19532 ++++++++++++ vere/ext/nasm/x86/insnsb.c | 6748 +++++ vere/ext/nasm/x86/insnsd.c | 29941 +++++++++++++++++++ vere/ext/nasm/x86/insnsi.h | 2265 ++ vere/ext/nasm/x86/insnsn.c | 2254 ++ vere/ext/nasm/x86/regdis.c | 21 + vere/ext/nasm/x86/regflags.c | 256 + vere/ext/nasm/x86/regs.c | 254 + vere/ext/nasm/x86/regs.dat | 141 + vere/ext/nasm/x86/regs.h | 514 + vere/ext/nasm/x86/regs.pl | 205 + vere/ext/nasm/x86/regvals.c | 255 + vere/ext/natpmp/build.zig | 45 + vere/ext/natpmp/build.zig.zon | 15 + vere/ext/openssl/build.zig | 1164 + vere/ext/openssl/build.zig.zon | 22 + .../gen/linux-aarch64/crypto/aes/aesv8-armx.S | 757 + .../gen/linux-aarch64/crypto/aes/vpaes-armv8.S | 1196 + .../openssl/gen/linux-aarch64/crypto/arm64cpuid.S | 122 + .../gen/linux-aarch64/crypto/bn/armv8-mont.S | 1408 + .../gen/linux-aarch64/crypto/chacha/chacha-armv8.S | 1977 ++ .../linux-aarch64/crypto/ec/ecp_nistz256-armv8.S | 4242 +++ .../gen/linux-aarch64/crypto/modes/ghashv8-armx.S | 552 + .../linux-aarch64/crypto/poly1305/poly1305-armv8.S | 870 + .../linux-aarch64/crypto/sha/keccak1600-armv8.S | 1095 + .../gen/linux-aarch64/crypto/sha/sha1-armv8.S | 1221 + .../gen/linux-aarch64/crypto/sha/sha256-armv8.S | 2063 ++ .../gen/linux-aarch64/crypto/sha/sha512-armv8.S | 1618 + .../gen/linux-aarch64/include/crypto/bn_conf.h | 28 + .../gen/linux-aarch64/include/crypto/buildinf.h | 37 + .../gen/linux-aarch64/include/crypto/dso_conf.h | 17 + .../linux-aarch64/include/openssl/opensslconf.h | 197 + .../gen/linux-x86_64/crypto/aes/aesni-mb-x86_64.s | 1507 + .../linux-x86_64/crypto/aes/aesni-sha1-x86_64.s | 3035 ++ .../linux-x86_64/crypto/aes/aesni-sha256-x86_64.s | 4435 +++ .../gen/linux-x86_64/crypto/aes/aesni-x86_64.s | 4474 +++ .../gen/linux-x86_64/crypto/aes/vpaes-x86_64.s | 853 + .../openssl/gen/linux-x86_64/crypto/bn/rsaz-avx2.s | 1744 ++ .../gen/linux-x86_64/crypto/bn/rsaz-x86_64.s | 2015 ++ .../gen/linux-x86_64/crypto/bn/x86_64-gf2m.s | 311 + .../gen/linux-x86_64/crypto/bn/x86_64-mont.s | 1239 + .../gen/linux-x86_64/crypto/bn/x86_64-mont5.s | 3603 +++ .../gen/linux-x86_64/crypto/camellia/cmll-x86_64.s | 1924 ++ .../gen/linux-x86_64/crypto/chacha/chacha-x86_64.s | 2193 ++ .../linux-x86_64/crypto/ec/ecp_nistz256-x86_64.s | 7343 +++++ .../gen/linux-x86_64/crypto/ec/x25519-x86_64.s | 802 + .../gen/linux-x86_64/crypto/md5/md5-x86_64.s | 683 + .../linux-x86_64/crypto/modes/aesni-gcm-x86_64.s | 789 + .../gen/linux-x86_64/crypto/modes/ghash-x86_64.s | 1847 ++ .../linux-x86_64/crypto/poly1305/poly1305-x86_64.s | 2068 ++ .../gen/linux-x86_64/crypto/rc4/rc4-md5-x86_64.s | 1281 + .../gen/linux-x86_64/crypto/rc4/rc4-x86_64.s | 632 + .../linux-x86_64/crypto/sha/keccak1600-x86_64.s | 524 + .../gen/linux-x86_64/crypto/sha/sha1-mb-x86_64.s | 7267 +++++ .../gen/linux-x86_64/crypto/sha/sha1-x86_64.s | 5450 ++++ .../gen/linux-x86_64/crypto/sha/sha256-mb-x86_64.s | 7948 +++++ .../gen/linux-x86_64/crypto/sha/sha256-x86_64.s | 5456 ++++ .../gen/linux-x86_64/crypto/sha/sha512-x86_64.s | 5461 ++++ .../gen/linux-x86_64/crypto/whrlpool/wp-x86_64.s | 879 + .../openssl/gen/linux-x86_64/crypto/x86_64cpuid.s | 481 + .../gen/linux-x86_64/engines/e_padlock-x86_64.s | 1037 + .../gen/linux-x86_64/include/crypto/bn_conf.h | 28 + .../gen/linux-x86_64/include/crypto/buildinf.h | 45 + .../gen/linux-x86_64/include/crypto/dso_conf.h | 17 + .../gen/linux-x86_64/include/openssl/opensslconf.h | 197 + .../gen/macos-aarch64/crypto/aes/aesv8-armx.S | 757 + .../gen/macos-aarch64/crypto/aes/vpaes-armv8.S | 1196 + .../openssl/gen/macos-aarch64/crypto/arm64cpuid.S | 122 + .../gen/macos-aarch64/crypto/bn/armv8-mont.S | 1408 + .../gen/macos-aarch64/crypto/chacha/chacha-armv8.S | 1977 ++ .../macos-aarch64/crypto/ec/ecp_nistz256-armv8.S | 4242 +++ .../gen/macos-aarch64/crypto/modes/ghashv8-armx.S | 552 + .../macos-aarch64/crypto/poly1305/poly1305-armv8.S | 870 + .../macos-aarch64/crypto/sha/keccak1600-armv8.S | 1095 + .../gen/macos-aarch64/crypto/sha/sha1-armv8.S | 1221 + .../gen/macos-aarch64/crypto/sha/sha256-armv8.S | 2063 ++ .../gen/macos-aarch64/crypto/sha/sha512-armv8.S | 1618 + .../gen/macos-aarch64/include/crypto/bn_conf.h | 28 + .../gen/macos-aarch64/include/crypto/buildinf.h | 37 + .../gen/macos-aarch64/include/crypto/dso_conf.h | 17 + .../macos-aarch64/include/openssl/opensslconf.h | 203 + .../gen/macos-x86_64/crypto/aes/aesni-mb-x86_64.s | 1507 + .../macos-x86_64/crypto/aes/aesni-sha1-x86_64.s | 3023 ++ .../macos-x86_64/crypto/aes/aesni-sha256-x86_64.s | 4435 +++ .../gen/macos-x86_64/crypto/aes/aesni-x86_64.s | 4464 +++ .../gen/macos-x86_64/crypto/aes/vpaes-x86_64.s | 853 + .../openssl/gen/macos-x86_64/crypto/bn/rsaz-avx2.s | 1744 ++ .../gen/macos-x86_64/crypto/bn/rsaz-x86_64.s | 1985 ++ .../gen/macos-x86_64/crypto/bn/x86_64-gf2m.s | 311 + .../gen/macos-x86_64/crypto/bn/x86_64-mont.s | 1239 + .../gen/macos-x86_64/crypto/bn/x86_64-mont5.s | 3603 +++ .../gen/macos-x86_64/crypto/camellia/cmll-x86_64.s | 1903 ++ .../gen/macos-x86_64/crypto/chacha/chacha-x86_64.s | 2187 ++ .../macos-x86_64/crypto/ec/ecp_nistz256-x86_64.s | 7257 +++++ .../gen/macos-x86_64/crypto/ec/x25519-x86_64.s | 770 + .../gen/macos-x86_64/crypto/md5/md5-x86_64.s | 678 + .../macos-x86_64/crypto/modes/aesni-gcm-x86_64.s | 789 + .../gen/macos-x86_64/crypto/modes/ghash-x86_64.s | 1835 ++ .../macos-x86_64/crypto/poly1305/poly1305-x86_64.s | 2038 ++ .../gen/macos-x86_64/crypto/rc4/rc4-md5-x86_64.s | 1275 + .../gen/macos-x86_64/crypto/rc4/rc4-x86_64.s | 629 + .../macos-x86_64/crypto/sha/keccak1600-x86_64.s | 494 + .../gen/macos-x86_64/crypto/sha/sha1-mb-x86_64.s | 7267 +++++ .../gen/macos-x86_64/crypto/sha/sha1-x86_64.s | 5450 ++++ .../gen/macos-x86_64/crypto/sha/sha256-mb-x86_64.s | 7948 +++++ .../gen/macos-x86_64/crypto/sha/sha256-x86_64.s | 5456 ++++ .../gen/macos-x86_64/crypto/sha/sha512-x86_64.s | 5461 ++++ .../gen/macos-x86_64/crypto/whrlpool/wp-x86_64.s | 879 + .../openssl/gen/macos-x86_64/crypto/x86_64cpuid.s | 482 + .../gen/macos-x86_64/engines/e_padlock-x86_64.s | 1037 + .../gen/macos-x86_64/include/crypto/bn_conf.h | 28 + .../gen/macos-x86_64/include/crypto/buildinf.h | 44 + .../gen/macos-x86_64/include/crypto/dso_conf.h | 17 + .../gen/macos-x86_64/include/openssl/opensslconf.h | 203 + .../windows-x86_64/crypto/aes/aesni-mb-x86_64.asm | 1765 ++ .../crypto/aes/aesni-sha1-x86_64.asm | 3268 ++ .../crypto/aes/aesni-sha256-x86_64.asm | 4708 +++ .../gen/windows-x86_64/crypto/aes/aesni-x86_64.asm | 5093 ++++ .../gen/windows-x86_64/crypto/aes/vpaes-x86_64.asm | 1163 + .../gen/windows-x86_64/crypto/bn/rsaz-avx2.asm | 1981 ++ .../gen/windows-x86_64/crypto/bn/rsaz-x86_64.asm | 2261 ++ .../gen/windows-x86_64/crypto/bn/x86_64-gf2m.asm | 425 + .../gen/windows-x86_64/crypto/bn/x86_64-mont.asm | 1472 + .../gen/windows-x86_64/crypto/bn/x86_64-mont5.asm | 3842 +++ .../windows-x86_64/crypto/camellia/cmll-x86_64.asm | 2159 ++ .../windows-x86_64/crypto/chacha/chacha-x86_64.asm | 3949 +++ .../crypto/ec/ecp_nistz256-x86_64.asm | 7920 +++++ .../gen/windows-x86_64/crypto/ec/x25519-x86_64.asm | 1064 + .../gen/windows-x86_64/crypto/md5/md5-x86_64.asm | 786 + .../crypto/modes/aesni-gcm-x86_64.asm | 981 + .../windows-x86_64/crypto/modes/ghash-x86_64.asm | 2070 ++ .../crypto/poly1305/poly1305-x86_64.asm | 2965 ++ .../windows-x86_64/crypto/rc4/rc4-md5-x86_64.asm | 1388 + .../gen/windows-x86_64/crypto/rc4/rc4-x86_64.asm | 782 + .../crypto/sha/keccak1600-x86_64.asm | 527 + .../windows-x86_64/crypto/sha/sha1-mb-x86_64.asm | 7574 +++++ .../gen/windows-x86_64/crypto/sha/sha1-x86_64.asm | 5766 ++++ .../windows-x86_64/crypto/sha/sha256-mb-x86_64.asm | 8255 +++++ .../windows-x86_64/crypto/sha/sha256-x86_64.asm | 5711 ++++ .../windows-x86_64/crypto/sha/sha512-x86_64.asm | 5665 ++++ .../gen/windows-x86_64/crypto/uplink-x86_64.asm | 503 + .../windows-x86_64/crypto/whrlpool/wp-x86_64.asm | 989 + .../gen/windows-x86_64/crypto/x86_64cpuid.asm | 481 + .../windows-x86_64/engines/e_padlock-x86_64.asm | 1182 + .../gen/windows-x86_64/include/crypto/bn_conf.h | 28 + .../gen/windows-x86_64/include/crypto/buildinf.h | 45 + .../gen/windows-x86_64/include/crypto/dso_conf.h | 16 + .../windows-x86_64/include/openssl/opensslconf.h | 203 + vere/ext/pdjson/build.zig | 38 + vere/ext/pdjson/build.zig.zon | 14 + vere/ext/sigsegv/build.zig | 151 + vere/ext/sigsegv/build.zig.zon | 18 + vere/ext/softblas/build.zig | 80 + vere/ext/softblas/build.zig.zon | 17 + vere/ext/softfloat/build.zig | 610 + vere/ext/softfloat/build.zig.zon | 14 + vere/ext/tracy/build.zig | 52 + vere/ext/tracy/build.zig.zon | 13 + vere/ext/unwind/build.zig | 262 + vere/ext/unwind/build.zig.zon | 13 + vere/ext/urcrypt/build.zig | 515 + vere/ext/urcrypt/build.zig.zon | 25 + vere/ext/wasm3/build.zig | 91 + vere/ext/wasm3/build.zig.zon | 18 + vere/ext/whereami/build.zig | 33 + vere/ext/whereami/build.zig.zon | 14 + vere/flake.lock | 48 + vere/flake.nix | 127 + vere/lldbinit.txt | 4 + vere/pkg/c3/build.zig | 56 + vere/pkg/c3/build.zig.zon | 15 + vere/pkg/c3/c3.h | 11 + vere/pkg/c3/defs.c | 19 + vere/pkg/c3/defs.h | 283 + vere/pkg/c3/motes.h | 1397 + vere/pkg/c3/platform/windows/compat.c | 611 + vere/pkg/c3/platform/windows/compat.h | 28 + vere/pkg/c3/platform/windows/mman.h | 26 + vere/pkg/c3/platform/windows/wsetjmp.h | 7 + vere/pkg/c3/portable.h | 268 + vere/pkg/c3/types.h | 75 + vere/pkg/ent/.gitignore | 4 + vere/pkg/ent/LICENSE | 20 + vere/pkg/ent/README.md | 36 + vere/pkg/ent/build.zig | 43 + vere/pkg/ent/ent.c | 74 + vere/pkg/ent/ent.h | 13 + vere/pkg/ent/tests.c | 20 + vere/pkg/noun/allocate.c | 2012 ++ vere/pkg/noun/allocate.h | 854 + vere/pkg/noun/build.zig | 439 + vere/pkg/noun/build.zig.zon | 67 + vere/pkg/noun/equality_tests.c | 164 + vere/pkg/noun/error.h | 38 + vere/pkg/noun/events.c | 1583 + vere/pkg/noun/events.h | 131 + vere/pkg/noun/hashtable.c | 1408 + vere/pkg/noun/hashtable.h | 206 + vere/pkg/noun/hashtable_tests.c | 301 + vere/pkg/noun/imprison.c | 772 + vere/pkg/noun/imprison.h | 170 + vere/pkg/noun/jets.c | 2445 ++ vere/pkg/noun/jets.h | 322 + vere/pkg/noun/jets/136/tree.c | 1268 + vere/pkg/noun/jets/137/tree.c | 1184 + vere/pkg/noun/jets/a/add.c | 61 + vere/pkg/noun/jets/a/dec.c | 57 + vere/pkg/noun/jets/a/div.c | 57 + vere/pkg/noun/jets/a/gte.c | 51 + vere/pkg/noun/jets/a/gth.c | 60 + vere/pkg/noun/jets/a/lte.c | 60 + vere/pkg/noun/jets/a/lth.c | 51 + vere/pkg/noun/jets/a/max.c | 60 + vere/pkg/noun/jets/a/min.c | 62 + vere/pkg/noun/jets/a/mod.c | 55 + vere/pkg/noun/jets/a/mul.c | 58 + vere/pkg/noun/jets/a/sub.c | 67 + vere/pkg/noun/jets/b/bind.c | 30 + vere/pkg/noun/jets/b/clap.c | 36 + vere/pkg/noun/jets/b/find.c | 50 + vere/pkg/noun/jets/b/flop.c | 34 + vere/pkg/noun/jets/b/lent.c | 37 + vere/pkg/noun/jets/b/levy.c | 51 + vere/pkg/noun/jets/b/lien.c | 51 + vere/pkg/noun/jets/b/mate.c | 30 + vere/pkg/noun/jets/b/murn.c | 54 + vere/pkg/noun/jets/b/need.c | 30 + vere/pkg/noun/jets/b/reap.c | 41 + vere/pkg/noun/jets/b/reel.c | 52 + vere/pkg/noun/jets/b/roll.c | 44 + vere/pkg/noun/jets/b/scag.c | 53 + vere/pkg/noun/jets/b/skid.c | 62 + vere/pkg/noun/jets/b/skim.c | 56 + vere/pkg/noun/jets/b/skip.c | 56 + vere/pkg/noun/jets/b/slag.c | 43 + vere/pkg/noun/jets/b/snag.c | 44 + vere/pkg/noun/jets/b/sort.c | 125 + vere/pkg/noun/jets/b/turn.c | 49 + vere/pkg/noun/jets/b/weld.c | 48 + vere/pkg/noun/jets/b/zing.c | 47 + vere/pkg/noun/jets/c/aor.c | 69 + vere/pkg/noun/jets/c/bex.c | 55 + vere/pkg/noun/jets/c/c0n.c | 55 + vere/pkg/noun/jets/c/can.c | 85 + vere/pkg/noun/jets/c/cap.c | 25 + vere/pkg/noun/jets/c/cat.c | 54 + vere/pkg/noun/jets/c/clz.c | 75 + vere/pkg/noun/jets/c/ctz.c | 34 + vere/pkg/noun/jets/c/cut.c | 68 + vere/pkg/noun/jets/c/dis.c | 46 + vere/pkg/noun/jets/c/dor.c | 49 + vere/pkg/noun/jets/c/dvr.c | 46 + vere/pkg/noun/jets/c/end.c | 51 + vere/pkg/noun/jets/c/gor.c | 32 + vere/pkg/noun/jets/c/ham.c | 27 + vere/pkg/noun/jets/c/hew.c | 87 + vere/pkg/noun/jets/c/lsh.c | 63 + vere/pkg/noun/jets/c/mas.c | 48 + vere/pkg/noun/jets/c/met.c | 42 + vere/pkg/noun/jets/c/mix.c | 56 + vere/pkg/noun/jets/c/mor.c | 31 + vere/pkg/noun/jets/c/mug.c | 19 + vere/pkg/noun/jets/c/muk.c | 76 + vere/pkg/noun/jets/c/peg.c | 66 + vere/pkg/noun/jets/c/po.c | 1427 + vere/pkg/noun/jets/c/pow.c | 38 + vere/pkg/noun/jets/c/rap.c | 88 + vere/pkg/noun/jets/c/rep.c | 199 + vere/pkg/noun/jets/c/rev.c | 51 + vere/pkg/noun/jets/c/rig.c | 82 + vere/pkg/noun/jets/c/rip.c | 192 + vere/pkg/noun/jets/c/rsh.c | 60 + vere/pkg/noun/jets/c/sew.c | 74 + vere/pkg/noun/jets/c/sqt.c | 33 + vere/pkg/noun/jets/c/swp.c | 50 + vere/pkg/noun/jets/c/xeb.c | 32 + vere/pkg/noun/jets/d/by_all.c | 51 + vere/pkg/noun/jets/d/by_any.c | 51 + vere/pkg/noun/jets/d/by_apt.c | 78 + vere/pkg/noun/jets/d/by_bif.c | 74 + vere/pkg/noun/jets/d/by_del.c | 93 + vere/pkg/noun/jets/d/by_dif.c | 83 + vere/pkg/noun/jets/d/by_gas.c | 44 + vere/pkg/noun/jets/d/by_get.c | 63 + vere/pkg/noun/jets/d/by_has.c | 47 + vere/pkg/noun/jets/d/by_int.c | 72 + vere/pkg/noun/jets/d/by_jab.c | 63 + vere/pkg/noun/jets/d/by_key.c | 42 + vere/pkg/noun/jets/d/by_put.c | 102 + vere/pkg/noun/jets/d/by_run.c | 53 + vere/pkg/noun/jets/d/by_uni.c | 101 + vere/pkg/noun/jets/d/by_urn.c | 52 + vere/pkg/noun/jets/d/in_apt.c | 121 + vere/pkg/noun/jets/d/in_bif.c | 72 + vere/pkg/noun/jets/d/in_del.c | 88 + vere/pkg/noun/jets/d/in_dif.c | 82 + vere/pkg/noun/jets/d/in_gas.c | 42 + vere/pkg/noun/jets/d/in_has.c | 45 + vere/pkg/noun/jets/d/in_int.c | 65 + vere/pkg/noun/jets/d/in_put.c | 87 + vere/pkg/noun/jets/d/in_rep.c | 52 + vere/pkg/noun/jets/d/in_run.c | 59 + vere/pkg/noun/jets/d/in_tap.c | 46 + vere/pkg/noun/jets/d/in_uni.c | 98 + vere/pkg/noun/jets/d/in_wyt.c | 35 + vere/pkg/noun/jets/e/adler.c | 127 + vere/pkg/noun/jets/e/aes_cbc.c | 182 + vere/pkg/noun/jets/e/aes_ecb.c | 166 + vere/pkg/noun/jets/e/aes_siv.c | 370 + vere/pkg/noun/jets/e/argon2.c | 151 + vere/pkg/noun/jets/e/base.c | 152 + vere/pkg/noun/jets/e/blake.c | 163 + vere/pkg/noun/jets/e/bytestream.c | 1247 + vere/pkg/noun/jets/e/chacha.c | 74 + vere/pkg/noun/jets/e/crc.c | 59 + vere/pkg/noun/jets/e/cue.c | 27 + vere/pkg/noun/jets/e/ed_add_double_scalarmult.c | 72 + .../jets/e/ed_add_scalarmult_scalarmult_base.c | 66 + vere/pkg/noun/jets/e/ed_luck.c | 37 + vere/pkg/noun/jets/e/ed_point_add.c | 40 + vere/pkg/noun/jets/e/ed_point_neg.c | 37 + vere/pkg/noun/jets/e/ed_puck.c | 36 + vere/pkg/noun/jets/e/ed_recs.c | 48 + vere/pkg/noun/jets/e/ed_scad.c | 124 + vere/pkg/noun/jets/e/ed_scalarmult.c | 54 + vere/pkg/noun/jets/e/ed_scalarmult_base.c | 46 + vere/pkg/noun/jets/e/ed_shar.c | 74 + vere/pkg/noun/jets/e/ed_sign.c | 166 + vere/pkg/noun/jets/e/ed_smac.c | 73 + vere/pkg/noun/jets/e/ed_veri.c | 85 + vere/pkg/noun/jets/e/fein_ob.c | 90 + vere/pkg/noun/jets/e/fl.c | 441 + vere/pkg/noun/jets/e/fynd_ob.c | 94 + vere/pkg/noun/jets/e/hmac.c | 94 + vere/pkg/noun/jets/e/jam.c | 60 + vere/pkg/noun/jets/e/json_de.c | 258 + vere/pkg/noun/jets/e/json_en.c | 416 + vere/pkg/noun/jets/e/keccak.c | 42 + vere/pkg/noun/jets/e/leer.c | 131 + vere/pkg/noun/jets/e/loss.c | 297 + vere/pkg/noun/jets/e/lune.c | 57 + vere/pkg/noun/jets/e/mat.c | 49 + vere/pkg/noun/jets/e/mice.c | 23 + vere/pkg/noun/jets/e/mink.c | 27 + vere/pkg/noun/jets/e/mole.c | 18 + vere/pkg/noun/jets/e/mule.c | 19 + vere/pkg/noun/jets/e/parse.c | 1052 + vere/pkg/noun/jets/e/rd.c | 390 + vere/pkg/noun/jets/e/rh.c | 390 + vere/pkg/noun/jets/e/ripe.c | 45 + vere/pkg/noun/jets/e/rq.c | 446 + vere/pkg/noun/jets/e/rs.c | 390 + vere/pkg/noun/jets/e/rub.c | 85 + vere/pkg/noun/jets/e/scot.c | 30 + vere/pkg/noun/jets/e/scow.c | 251 + vere/pkg/noun/jets/e/scr.c | 227 + vere/pkg/noun/jets/e/secp.c | 298 + vere/pkg/noun/jets/e/sha1.c | 40 + vere/pkg/noun/jets/e/shax.c | 194 + vere/pkg/noun/jets/e/slaw.c | 477 + vere/pkg/noun/jets/e/tape.c | 53 + vere/pkg/noun/jets/e/trip.c | 33 + vere/pkg/noun/jets/e/urwasm.c | 3086 ++ vere/pkg/noun/jets/e/zlib.c | 225 + vere/pkg/noun/jets/f/cell.c | 29 + vere/pkg/noun/jets/f/comb.c | 70 + vere/pkg/noun/jets/f/cons.c | 54 + vere/pkg/noun/jets/f/core.c | 118 + vere/pkg/noun/jets/f/face.c | 31 + vere/pkg/noun/jets/f/fine.c | 35 + vere/pkg/noun/jets/f/fitz.c | 75 + vere/pkg/noun/jets/f/flan.c | 47 + vere/pkg/noun/jets/f/flip.c | 39 + vere/pkg/noun/jets/f/flor.c | 47 + vere/pkg/noun/jets/f/fork.c | 79 + vere/pkg/noun/jets/f/help.c | 31 + vere/pkg/noun/jets/f/hint.c | 32 + vere/pkg/noun/jets/f/look.c | 134 + vere/pkg/noun/jets/f/loot.c | 133 + vere/pkg/noun/jets/f/ut_crop.c | 34 + vere/pkg/noun/jets/f/ut_fish.c | 35 + vere/pkg/noun/jets/f/ut_fuse.c | 34 + vere/pkg/noun/jets/f/ut_mint.c | 36 + vere/pkg/noun/jets/f/ut_mull.c | 37 + vere/pkg/noun/jets/f/ut_nest.c | 50 + vere/pkg/noun/jets/f/ut_redo.c | 34 + vere/pkg/noun/jets/f/ut_rest.c | 34 + vere/pkg/noun/jets/g/plot.c | 364 + vere/pkg/noun/jets/i/lagoon.c | 3315 ++ vere/pkg/noun/jets/k.h | 185 + vere/pkg/noun/jets/q.h | 306 + vere/pkg/noun/jets/tree.c | 2658 ++ vere/pkg/noun/jets/w.h | 433 + vere/pkg/noun/jets_tests.c | 994 + vere/pkg/noun/log.c | 40 + vere/pkg/noun/log.h | 24 + vere/pkg/noun/manage.c | 2615 ++ vere/pkg/noun/manage.h | 215 + vere/pkg/noun/nock.c | 3268 ++ vere/pkg/noun/nock.h | 149 + vere/pkg/noun/nock_tests.c | 83 + vere/pkg/noun/noun.h | 26 + vere/pkg/noun/options.c | 5 + vere/pkg/noun/options.h | 59 + vere/pkg/noun/palloc.c | 2400 ++ vere/pkg/noun/palloc_tests.c | 91 + vere/pkg/noun/platform/darwin/rsignal.h | 13 + vere/pkg/noun/platform/linux/rsignal.h | 13 + vere/pkg/noun/platform/windows/rsignal.c | 167 + vere/pkg/noun/platform/windows/rsignal.h | 21 + vere/pkg/noun/platform/windows/veh_handler.c | 26 + vere/pkg/noun/platform/windows/veh_handler.h | 1 + vere/pkg/noun/retrieve.c | 1943 ++ vere/pkg/noun/retrieve.h | 547 + vere/pkg/noun/retrieve_tests.c | 247 + vere/pkg/noun/serial.c | 1456 + vere/pkg/noun/serial.h | 137 + vere/pkg/noun/serial_tests.c | 264 + vere/pkg/noun/ship.c | 109 + vere/pkg/noun/ship.h | 57 + vere/pkg/noun/trace.c | 1242 + vere/pkg/noun/trace.h | 230 + vere/pkg/noun/types.h | 64 + vere/pkg/noun/urth.c | 1042 + vere/pkg/noun/urth.h | 49 + vere/pkg/noun/version.h | 43 + vere/pkg/noun/verstable.h | 1949 ++ vere/pkg/noun/vortex.c | 411 + vere/pkg/noun/vortex.h | 135 + vere/pkg/noun/xtract.c | 33 + vere/pkg/noun/xtract.h | 162 + vere/pkg/noun/zave.c | 157 + vere/pkg/noun/zave.h | 69 + vere/pkg/past/build.zig | 88 + vere/pkg/past/build.zig.zon | 23 + vere/pkg/past/migrate.h | 13 + vere/pkg/past/migrate_v2.c | 368 + vere/pkg/past/migrate_v3.c | 100 + vere/pkg/past/migrate_v4.c | 29 + vere/pkg/past/migrate_v5.c | 167 + vere/pkg/past/v1.c | 636 + vere/pkg/past/v1.h | 42 + vere/pkg/past/v2.c | 116 + vere/pkg/past/v2.h | 216 + vere/pkg/past/v3.c | 22 + vere/pkg/past/v3.h | 92 + vere/pkg/past/v4.c | 826 + vere/pkg/past/v4.h | 242 + vere/pkg/past/v5.h | 60 + vere/pkg/ur/bitstream.c | 1283 + vere/pkg/ur/bitstream.h | 239 + vere/pkg/ur/build.zig | 42 + vere/pkg/ur/build.zig.zon | 13 + vere/pkg/ur/defs.h | 86 + vere/pkg/ur/hashcons.c | 1026 + vere/pkg/ur/hashcons.h | 259 + vere/pkg/ur/serial.c | 588 + vere/pkg/ur/serial.h | 114 + vere/pkg/ur/tests.c | 1862 ++ vere/pkg/ur/ur.h | 11 + vere/pkg/vere/PACE | 1 + vere/pkg/vere/VERSION | 1 + vere/pkg/vere/ames_tests.c | 102 + vere/pkg/vere/arena.h | 47 + vere/pkg/vere/auto.c | 445 + vere/pkg/vere/benchmarks.c | 465 + vere/pkg/vere/boot_tests.c | 70 + vere/pkg/vere/build.zig | 264 + vere/pkg/vere/build.zig.zon | 61 + vere/pkg/vere/ca_bundle/ca_bundle.c | 4 + vere/pkg/vere/ca_bundle/ca_bundle.h | 5 + vere/pkg/vere/ca_bundle/ca_bundle.sh | 47 + vere/pkg/vere/dawn.c | 487 + vere/pkg/vere/db/lmdb.c | 639 + vere/pkg/vere/db/lmdb.h | 94 + vere/pkg/vere/disk.c | 2147 ++ vere/pkg/vere/dns_sd.h | 1722 ++ vere/pkg/vere/foil.c | 148 + vere/pkg/vere/hamt_test.c | 136 + vere/pkg/vere/io/ames.c | 2960 ++ vere/pkg/vere/io/ames/stun.c | 192 + vere/pkg/vere/io/ames/stun.h | 35 + vere/pkg/vere/io/behn.c | 257 + vere/pkg/vere/io/conn.c | 968 + vere/pkg/vere/io/cttp.c | 1170 + vere/pkg/vere/io/fore.c | 168 + vere/pkg/vere/io/hind.c | 86 + vere/pkg/vere/io/http.c | 3149 ++ vere/pkg/vere/io/lick.c | 654 + vere/pkg/vere/io/lss.c | 391 + vere/pkg/vere/io/lss.h | 63 + vere/pkg/vere/io/mesa.c | 3065 ++ vere/pkg/vere/io/mesa/bitset.c | 124 + vere/pkg/vere/io/mesa/bitset.h | 24 + vere/pkg/vere/io/mesa/mesa.h | 175 + vere/pkg/vere/io/mesa/pact.c | 1605 + vere/pkg/vere/io/mesa/pact_test.c | 3 + vere/pkg/vere/io/serial.h | 0 vere/pkg/vere/io/term.c | 1816 ++ vere/pkg/vere/io/unix.c | 1604 + vere/pkg/vere/ivory/ivory.c | 4 + vere/pkg/vere/ivory/ivory.h | 5 + vere/pkg/vere/ivory/ivory.sh | 47 + vere/pkg/vere/king.c | 1828 ++ vere/pkg/vere/lord.c | 1336 + vere/pkg/vere/main.c | 3341 +++ vere/pkg/vere/mars.c | 2043 ++ vere/pkg/vere/mars.h | 94 + vere/pkg/vere/mdns.c | 236 + vere/pkg/vere/mdns.h | 6 + vere/pkg/vere/melt.c | 211 + vere/pkg/vere/newt.c | 416 + vere/pkg/vere/newt_tests.c | 355 + vere/pkg/vere/noun_tests.c | 1789 ++ vere/pkg/vere/pier.c | 1459 + vere/pkg/vere/platform/darwin/daemon.c | 93 + vere/pkg/vere/platform/darwin/mach.c | 28 + vere/pkg/vere/platform/darwin/ptty.c | 192 + vere/pkg/vere/platform/linux/daemon.c | 93 + vere/pkg/vere/platform/linux/ptty.c | 192 + vere/pkg/vere/platform/windows/ctrlc.c | 7 + vere/pkg/vere/platform/windows/daemon.c | 116 + vere/pkg/vere/platform/windows/ptty.c | 149 + vere/pkg/vere/time.c | 169 + vere/pkg/vere/tracy_test.c | 50 + vere/pkg/vere/unix_tests.c | 67 + vere/pkg/vere/vere.h | 1524 + vere/pkg/vere/ward.c | 209 + vere/pkg/vere/xmas_tests.c | 59 + vere/test-fake-ship.sh | 175 + 1079 files changed, 641937 insertions(+) create mode 100644 vere/.gitignore create mode 100644 vere/CONTRIBUTING.md create mode 100644 vere/INSTALL.md create mode 100644 vere/LICENSE.txt create mode 100644 vere/MAINTAINERS.md create mode 100644 vere/README.md create mode 100755 vere/boot-fake-ship.sh create mode 100644 vere/build.zig create mode 100644 vere/build.zig.zon create mode 100644 vere/doc/spec/nock/4.txt create mode 100644 vere/doc/spec/nock/5.txt create mode 100644 vere/doc/spec/u3.md create mode 100644 vere/docker/Dockerfile create mode 100644 vere/docker/README.md create mode 100755 vere/docker/get_urbit_code.sh create mode 100755 vere/docker/reset_urbit_code.sh create mode 100755 vere/docker/start_urbit.sh create mode 100644 vere/ext/avahi/build.zig create mode 100644 vere/ext/avahi/build.zig.zon create mode 100644 vere/ext/backtrace/build.zig create mode 100644 vere/ext/backtrace/build.zig.zon create mode 100644 vere/ext/curl/build.zig create mode 100644 vere/ext/curl/build.zig.zon create mode 100644 vere/ext/gmp/build.zig create mode 100644 vere/ext/gmp/build.zig.zon create mode 100644 vere/ext/gmp/gen/README.md create mode 100644 vere/ext/gmp/gen/aarch64-linux/config.h create mode 100644 vere/ext/gmp/gen/aarch64-linux/fac_table.h create mode 100644 vere/ext/gmp/gen/aarch64-linux/fib_table.h create mode 100644 vere/ext/gmp/gen/aarch64-linux/mp_bases.h create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/add_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/addlsh1_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/addlsh2_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/addmul_1.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/and_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/andn_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_dbm1c.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_q_1.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/cnd_add_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/cnd_sub_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/com.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/copyd.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/copyi.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/fib_table.c create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/gcd_11.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/gcd_22.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/hamdist.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/invert_limb.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/ior_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/iorn_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/jacobitab.h create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/lshift.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/lshiftc.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/mod_34lsub1.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/mp_bases.c create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/mul_1.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/nand_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/nior_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/perfsqr.h create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/popcount.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/rsblsh1_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/rsblsh2_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/rsh1add_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/rsh1sub_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/rshift.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/sec_tabselect.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/sqr_diag_addlsh1.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/sub_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/sublsh1_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/sublsh2_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/submul_1.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/xnor_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/mpn/xor_n.s create mode 100644 vere/ext/gmp/gen/aarch64-linux/sieve_table.h create mode 100644 vere/ext/gmp/gen/aarch64-linux/trialdivtab.h create mode 100644 vere/ext/gmp/gen/aarch64-macos/config.h create mode 100644 vere/ext/gmp/gen/aarch64-macos/fac_table.h create mode 100644 vere/ext/gmp/gen/aarch64-macos/fib_table.h create mode 100644 vere/ext/gmp/gen/aarch64-macos/mp_bases.h create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/add_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/addlsh1_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/addlsh2_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/addmul_1.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/and_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/andn_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/bdiv_dbm1c.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/bdiv_q_1.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/cnd_add_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/cnd_sub_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/com.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/copyd.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/copyi.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/divrem_1.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/fib_table.c create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/gcd_11.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/gcd_22.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/hamdist.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/invert_limb.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/ior_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/iorn_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/jacobitab.h create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/lshift.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/lshiftc.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/mod_34lsub1.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/mp_bases.c create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/mul_1.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/nand_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/nior_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/perfsqr.h create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/popcount.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/rsblsh1_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/rsblsh2_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/rsh1add_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/rsh1sub_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/rshift.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/sec_tabselect.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/sqr_diag_addlsh1.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/sub_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/sublsh1_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/sublsh2_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/submul_1.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/tmp-add_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/xnor_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/mpn/xor_n.s create mode 100644 vere/ext/gmp/gen/aarch64-macos/sieve_table.h create mode 100644 vere/ext/gmp/gen/aarch64-macos/trialdivtab.h create mode 100644 vere/ext/gmp/gen/x86_64-linux/config.h create mode 100644 vere/ext/gmp/gen/x86_64-linux/fac_table.h create mode 100644 vere/ext/gmp/gen/x86_64-linux/fib_table.h create mode 100644 vere/ext/gmp/gen/x86_64-linux/mp_bases.h create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/add_err1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/add_err2_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/add_err3_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/add_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/addlsh1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/addlsh2_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/addlsh_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/addmul_1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/addmul_2.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/and_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/andn_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_dbm1c.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_q_1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/cnd_add_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/cnd_sub_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/com.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/copyd.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/copyi.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_1n_pi1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2n_pi1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2u_pi1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/dive_1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/divrem_1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/divrem_2.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/fib_table.c create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/gcd_11.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/gcd_22.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/hamdist.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb_table.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/ior_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/iorn_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/jacobitab.h create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/lshift.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/lshiftc.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_2.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_4.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/mod_34lsub1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/mode1o.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/mp_bases.c create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/mul_1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/mul_2.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/mul_basecase.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/mullo_basecase.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/mulmid_basecase.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/nand_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/nior_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/perfsqr.h create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/popcount.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/redc_1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh2_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/rsh1add_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/rsh1sub_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/rshift.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/sec_tabselect.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/sqr_basecase.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/sqr_diag_addlsh1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/sub_err1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/sub_err2_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/sub_err3_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/sub_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/sublsh1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/submul_1.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/xnor_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/mpn/xor_n.s create mode 100644 vere/ext/gmp/gen/x86_64-linux/sieve_table.h create mode 100644 vere/ext/gmp/gen/x86_64-linux/trialdivtab.h create mode 100644 vere/ext/gmp/gen/x86_64-macos/config.h create mode 100644 vere/ext/gmp/gen/x86_64-macos/fac_table.h create mode 100644 vere/ext/gmp/gen/x86_64-macos/fib_table.h create mode 100644 vere/ext/gmp/gen/x86_64-macos/mp_bases.h create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/add_err1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/add_err2_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/add_err3_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/add_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/addlsh1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/addlsh2_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/addlsh_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/addmul_1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/addmul_2.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/and_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/andn_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/bdiv_dbm1c.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/bdiv_q_1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/cnd_add_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/cnd_sub_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/com.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/copyd.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/copyi.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_1n_pi1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_2n_pi1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_2u_pi1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/dive_1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/divrem_1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/divrem_2.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/fib_table.c create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/gcd_11.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/gcd_22.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/hamdist.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/invert_limb.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/invert_limb_table.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/ior_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/iorn_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/jacobitab.h create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/lshift.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/lshiftc.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_2.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_4.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/mod_34lsub1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/mode1o.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/mp_bases.c create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/mul_1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/mul_2.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/mul_basecase.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/mullo_basecase.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/nand_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/nior_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/perfsqr.h create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/popcount.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/redc_1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh2_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/rsh1add_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/rsh1sub_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/rshift.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/sec_tabselect.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/sqr_basecase.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/sqr_diag_addlsh1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/sub_err1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/sub_err2_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/sub_err3_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/sub_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/sublsh1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/sublsh2_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/submul_1.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/xnor_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/mpn/xor_n.s create mode 100644 vere/ext/gmp/gen/x86_64-macos/sieve_table.h create mode 100644 vere/ext/gmp/gen/x86_64-macos/trialdivtab.h create mode 100644 vere/ext/gmp/gen/x86_64-windows/config.h create mode 100644 vere/ext/gmp/gen/x86_64-windows/fac_table.h create mode 100644 vere/ext/gmp/gen/x86_64-windows/fib_table.h create mode 100644 vere/ext/gmp/gen/x86_64-windows/gmp.h create mode 100644 vere/ext/gmp/gen/x86_64-windows/mp_bases.h create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/add_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/addaddmul_1msb0.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/addlsh1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/addlsh2_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/addlsh_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/addmul_1.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/addmul_2.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/and_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/andn_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/bdiv_dbm1c.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/bdiv_q_1.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/cnd_add_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/cnd_sub_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/com.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/copyd.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/copyi.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/div_qr_2n_pi1.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/dive_1.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/divrem_1.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/divrem_2.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/fib_table.c create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/gcd_11.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/hamdist.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/invert_limb.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/invert_limb_table.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/ior_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/iorn_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/jacobitab.h create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/lshift.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/lshiftc.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_1.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_2.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_4.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/mod_34lsub1.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/mode1o.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/mp_bases.c create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/mul_1.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/mul_2.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/mul_basecase.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/mullo_basecase.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/mulmid_basecase.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/nand_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/nior_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/perfsqr.h create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/popcount.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/redc_1.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh2_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/rsh1add_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/rsh1sub_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/rshift.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/sec_tabselect.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/sqr_basecase.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/sqr_diag_addlsh1.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/sub_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/sublsh1_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/submul_1.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/xnor_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/mpn/xor_n.s create mode 100644 vere/ext/gmp/gen/x86_64-windows/sieve_table.h create mode 100644 vere/ext/gmp/gen/x86_64-windows/trialdivtab.h create mode 100644 vere/ext/h2o/build.zig create mode 100644 vere/ext/h2o/build.zig.zon create mode 100644 vere/ext/h2o/patches/h2o-2.2.6/deps/klib/kopen.c create mode 100644 vere/ext/h2o/patches/h2o-2.2.6/deps/klib/ksw.c create mode 100644 vere/ext/h2o/patches/h2o-2.2.6/deps/klib/test/kbit_test.c create mode 100644 vere/ext/h2o/patches/h2o-2.2.6/deps/picohttpparser/picohttpparser.c create mode 100644 vere/ext/libuv/build.zig create mode 100644 vere/ext/libuv/build.zig.zon create mode 100644 vere/ext/lmdb/build.zig create mode 100644 vere/ext/lmdb/build.zig.zon create mode 100644 vere/ext/lmdb/patches/lmdb-0.9.29/mdb.c create mode 100644 vere/ext/murmur3/build.zig create mode 100644 vere/ext/murmur3/build.zig.zon create mode 100644 vere/ext/murmur3/vendor/murmur3.c create mode 100644 vere/ext/murmur3/vendor/murmur3.h create mode 100644 vere/ext/nasm/.gitattributes create mode 100644 vere/ext/nasm/.gitignore create mode 100644 vere/ext/nasm/LICENSE create mode 100644 vere/ext/nasm/README.md create mode 100644 vere/ext/nasm/asm/assemble.c create mode 100644 vere/ext/nasm/asm/assemble.h create mode 100644 vere/ext/nasm/asm/directbl.c create mode 100644 vere/ext/nasm/asm/directiv.c create mode 100644 vere/ext/nasm/asm/directiv.dat create mode 100644 vere/ext/nasm/asm/directiv.h create mode 100644 vere/ext/nasm/asm/error.c create mode 100644 vere/ext/nasm/asm/eval.c create mode 100644 vere/ext/nasm/asm/eval.h create mode 100644 vere/ext/nasm/asm/exprdump.c create mode 100644 vere/ext/nasm/asm/exprlib.c create mode 100644 vere/ext/nasm/asm/floats.c create mode 100644 vere/ext/nasm/asm/floats.h create mode 100644 vere/ext/nasm/asm/labels.c create mode 100644 vere/ext/nasm/asm/listing.c create mode 100644 vere/ext/nasm/asm/listing.h create mode 100644 vere/ext/nasm/asm/nasm.c create mode 100644 vere/ext/nasm/asm/parser.c create mode 100644 vere/ext/nasm/asm/parser.h create mode 100644 vere/ext/nasm/asm/pptok.c create mode 100644 vere/ext/nasm/asm/pptok.dat create mode 100644 vere/ext/nasm/asm/pptok.h create mode 100755 vere/ext/nasm/asm/pptok.pl create mode 100644 vere/ext/nasm/asm/pragma.c create mode 100644 vere/ext/nasm/asm/preproc.c create mode 100644 vere/ext/nasm/asm/preproc.h create mode 100644 vere/ext/nasm/asm/quote.c create mode 100644 vere/ext/nasm/asm/quote.h create mode 100644 vere/ext/nasm/asm/rdstrnum.c create mode 100644 vere/ext/nasm/asm/segalloc.c create mode 100644 vere/ext/nasm/asm/srcfile.c create mode 100644 vere/ext/nasm/asm/srcfile.h create mode 100644 vere/ext/nasm/asm/stdscan.c create mode 100644 vere/ext/nasm/asm/stdscan.h create mode 100644 vere/ext/nasm/asm/strfunc.c create mode 100644 vere/ext/nasm/asm/tokens.dat create mode 100644 vere/ext/nasm/asm/tokens.h create mode 100644 vere/ext/nasm/asm/tokhash.c create mode 100755 vere/ext/nasm/asm/tokhash.pl create mode 100644 vere/ext/nasm/asm/warnings.c create mode 100755 vere/ext/nasm/asm/warnings.pl create mode 100644 vere/ext/nasm/build.zig create mode 100644 vere/ext/nasm/build.zig.zon create mode 100644 vere/ext/nasm/common/common.c create mode 100644 vere/ext/nasm/config/config.h.in create mode 100644 vere/ext/nasm/config/msvc.h create mode 100644 vere/ext/nasm/config/unconfig.h create mode 100644 vere/ext/nasm/config/unknown.h create mode 100644 vere/ext/nasm/config/watcom.h create mode 100644 vere/ext/nasm/disasm/disasm.c create mode 100644 vere/ext/nasm/disasm/disasm.h create mode 100644 vere/ext/nasm/disasm/ndisasm.c create mode 100644 vere/ext/nasm/disasm/sync.c create mode 100644 vere/ext/nasm/disasm/sync.h create mode 100644 vere/ext/nasm/headers/c create mode 100644 vere/ext/nasm/headers/doc create mode 100644 vere/ext/nasm/headers/mac create mode 100644 vere/ext/nasm/headers/perl create mode 100644 vere/ext/nasm/include/bytesex.h create mode 100644 vere/ext/nasm/include/compiler.h create mode 100644 vere/ext/nasm/include/dbginfo.h create mode 100644 vere/ext/nasm/include/disp8.h create mode 100644 vere/ext/nasm/include/error.h create mode 100644 vere/ext/nasm/include/hashtbl.h create mode 100644 vere/ext/nasm/include/iflag.h create mode 100644 vere/ext/nasm/include/ilog2.h create mode 100644 vere/ext/nasm/include/insns.h create mode 100644 vere/ext/nasm/include/labels.h create mode 100644 vere/ext/nasm/include/md5.h create mode 100644 vere/ext/nasm/include/nasm.h create mode 100644 vere/ext/nasm/include/nasmint.h create mode 100644 vere/ext/nasm/include/nasmlib.h create mode 100644 vere/ext/nasm/include/nctype.h create mode 100644 vere/ext/nasm/include/opflags.h create mode 100644 vere/ext/nasm/include/perfhash.h create mode 100644 vere/ext/nasm/include/raa.h create mode 100644 vere/ext/nasm/include/rbtree.h create mode 100644 vere/ext/nasm/include/rdoff.h create mode 100644 vere/ext/nasm/include/saa.h create mode 100644 vere/ext/nasm/include/strlist.h create mode 100644 vere/ext/nasm/include/tables.h create mode 100644 vere/ext/nasm/include/ver.h create mode 100644 vere/ext/nasm/include/warnings.h create mode 100644 vere/ext/nasm/macros/altreg.mac create mode 100644 vere/ext/nasm/macros/fp.mac create mode 100644 vere/ext/nasm/macros/ifunc.mac create mode 100644 vere/ext/nasm/macros/macros.c create mode 100755 vere/ext/nasm/macros/macros.pl create mode 100644 vere/ext/nasm/macros/masm.mac create mode 100644 vere/ext/nasm/macros/smartalign.mac create mode 100644 vere/ext/nasm/macros/standard.mac create mode 100644 vere/ext/nasm/misc/Doxyfile create mode 100755 vere/ext/nasm/misc/Nindent create mode 100644 vere/ext/nasm/misc/README create mode 100644 vere/ext/nasm/misc/c16.mac create mode 100644 vere/ext/nasm/misc/c32.mac create mode 100644 vere/ext/nasm/misc/crcgen.c create mode 100755 vere/ext/nasm/misc/emacstbl.pl create mode 100644 vere/ext/nasm/misc/exebin.mac create mode 100644 vere/ext/nasm/misc/exebin2.mac create mode 100755 vere/ext/nasm/misc/fmtinsns.pl create mode 100755 vere/ext/nasm/misc/genfma.pl create mode 100644 vere/ext/nasm/misc/hints.txt create mode 100644 vere/ext/nasm/misc/magic create mode 100644 vere/ext/nasm/misc/myC32.mac create mode 100644 vere/ext/nasm/misc/nasm.sl create mode 100644 vere/ext/nasm/misc/nasmstab create mode 100644 vere/ext/nasm/misc/omfdump.c create mode 100644 vere/ext/nasm/misc/pmw.bat create mode 100644 vere/ext/nasm/misc/proc32.ash create mode 100644 vere/ext/nasm/misc/scitech.mac create mode 100644 vere/ext/nasm/misc/xcrcgen.c create mode 100644 vere/ext/nasm/nasmlib/alloc.c create mode 100644 vere/ext/nasm/nasmlib/alloc.h create mode 100644 vere/ext/nasm/nasmlib/asprintf.c create mode 100644 vere/ext/nasm/nasmlib/badenum.c create mode 100644 vere/ext/nasm/nasmlib/bsi.c create mode 100644 vere/ext/nasm/nasmlib/crc32.c create mode 100644 vere/ext/nasm/nasmlib/crc64.c create mode 100644 vere/ext/nasm/nasmlib/errfile.c create mode 100644 vere/ext/nasm/nasmlib/file.c create mode 100644 vere/ext/nasm/nasmlib/file.h create mode 100644 vere/ext/nasm/nasmlib/filename.c create mode 100644 vere/ext/nasm/nasmlib/hashtbl.c create mode 100644 vere/ext/nasm/nasmlib/ilog2.c create mode 100644 vere/ext/nasm/nasmlib/md5c.c create mode 100644 vere/ext/nasm/nasmlib/mmap.c create mode 100644 vere/ext/nasm/nasmlib/nctype.c create mode 100644 vere/ext/nasm/nasmlib/path.c create mode 100644 vere/ext/nasm/nasmlib/perfhash.c create mode 100755 vere/ext/nasm/nasmlib/perfhash.pl create mode 100644 vere/ext/nasm/nasmlib/raa.c create mode 100644 vere/ext/nasm/nasmlib/rbtree.c create mode 100644 vere/ext/nasm/nasmlib/readnum.c create mode 100644 vere/ext/nasm/nasmlib/realpath.c create mode 100644 vere/ext/nasm/nasmlib/rlimit.c create mode 100644 vere/ext/nasm/nasmlib/saa.c create mode 100644 vere/ext/nasm/nasmlib/string.c create mode 100644 vere/ext/nasm/nasmlib/strlist.c create mode 100644 vere/ext/nasm/nasmlib/ver.c create mode 100644 vere/ext/nasm/nasmlib/zerobuf.c create mode 100644 vere/ext/nasm/output/codeview.c create mode 100644 vere/ext/nasm/output/dwarf.h create mode 100644 vere/ext/nasm/output/elf.h create mode 100644 vere/ext/nasm/output/legacy.c create mode 100644 vere/ext/nasm/output/macho.h create mode 100644 vere/ext/nasm/output/nulldbg.c create mode 100644 vere/ext/nasm/output/nullout.c create mode 100644 vere/ext/nasm/output/outaout.c create mode 100644 vere/ext/nasm/output/outaout.mac create mode 100644 vere/ext/nasm/output/outas86.c create mode 100644 vere/ext/nasm/output/outas86.mac create mode 100644 vere/ext/nasm/output/outbin.c create mode 100644 vere/ext/nasm/output/outbin.mac create mode 100644 vere/ext/nasm/output/outcoff.c create mode 100644 vere/ext/nasm/output/outcoff.mac create mode 100644 vere/ext/nasm/output/outdbg.c create mode 100644 vere/ext/nasm/output/outdbg.mac create mode 100644 vere/ext/nasm/output/outelf.c create mode 100644 vere/ext/nasm/output/outelf.h create mode 100644 vere/ext/nasm/output/outelf.mac create mode 100644 vere/ext/nasm/output/outform.c create mode 100644 vere/ext/nasm/output/outform.h create mode 100644 vere/ext/nasm/output/outieee.c create mode 100644 vere/ext/nasm/output/outlib.c create mode 100644 vere/ext/nasm/output/outlib.h create mode 100644 vere/ext/nasm/output/outmacho.c create mode 100644 vere/ext/nasm/output/outmacho.mac create mode 100644 vere/ext/nasm/output/outobj.c create mode 100644 vere/ext/nasm/output/outobj.mac create mode 100644 vere/ext/nasm/output/pecoff.h create mode 100644 vere/ext/nasm/output/stabs.h create mode 100644 vere/ext/nasm/perllib/crc64.ph create mode 100755 vere/ext/nasm/perllib/gensv.pl create mode 100644 vere/ext/nasm/perllib/phash.ph create mode 100644 vere/ext/nasm/perllib/random_sv_vectors.ph create mode 100644 vere/ext/nasm/stdlib/snprintf.c create mode 100644 vere/ext/nasm/stdlib/strlcpy.c create mode 100644 vere/ext/nasm/stdlib/strnlen.c create mode 100644 vere/ext/nasm/stdlib/strrchrnul.c create mode 100644 vere/ext/nasm/stdlib/vsnprintf.c create mode 100644 vere/ext/nasm/x86/disp8.c create mode 100644 vere/ext/nasm/x86/iflag.c create mode 100644 vere/ext/nasm/x86/iflaggen.h create mode 100644 vere/ext/nasm/x86/iflags.ph create mode 100644 vere/ext/nasm/x86/insns-iflags.ph create mode 100644 vere/ext/nasm/x86/insns.dat create mode 100755 vere/ext/nasm/x86/insns.pl create mode 100644 vere/ext/nasm/x86/insnsa.c create mode 100644 vere/ext/nasm/x86/insnsb.c create mode 100644 vere/ext/nasm/x86/insnsd.c create mode 100644 vere/ext/nasm/x86/insnsi.h create mode 100644 vere/ext/nasm/x86/insnsn.c create mode 100644 vere/ext/nasm/x86/regdis.c create mode 100644 vere/ext/nasm/x86/regflags.c create mode 100644 vere/ext/nasm/x86/regs.c create mode 100644 vere/ext/nasm/x86/regs.dat create mode 100644 vere/ext/nasm/x86/regs.h create mode 100755 vere/ext/nasm/x86/regs.pl create mode 100644 vere/ext/nasm/x86/regvals.c create mode 100644 vere/ext/natpmp/build.zig create mode 100644 vere/ext/natpmp/build.zig.zon create mode 100644 vere/ext/openssl/build.zig create mode 100644 vere/ext/openssl/build.zig.zon create mode 100644 vere/ext/openssl/gen/linux-aarch64/crypto/aes/aesv8-armx.S create mode 100644 vere/ext/openssl/gen/linux-aarch64/crypto/aes/vpaes-armv8.S create mode 100644 vere/ext/openssl/gen/linux-aarch64/crypto/arm64cpuid.S create mode 100644 vere/ext/openssl/gen/linux-aarch64/crypto/bn/armv8-mont.S create mode 100644 vere/ext/openssl/gen/linux-aarch64/crypto/chacha/chacha-armv8.S create mode 100644 vere/ext/openssl/gen/linux-aarch64/crypto/ec/ecp_nistz256-armv8.S create mode 100644 vere/ext/openssl/gen/linux-aarch64/crypto/modes/ghashv8-armx.S create mode 100644 vere/ext/openssl/gen/linux-aarch64/crypto/poly1305/poly1305-armv8.S create mode 100644 vere/ext/openssl/gen/linux-aarch64/crypto/sha/keccak1600-armv8.S create mode 100644 vere/ext/openssl/gen/linux-aarch64/crypto/sha/sha1-armv8.S create mode 100644 vere/ext/openssl/gen/linux-aarch64/crypto/sha/sha256-armv8.S create mode 100644 vere/ext/openssl/gen/linux-aarch64/crypto/sha/sha512-armv8.S create mode 100644 vere/ext/openssl/gen/linux-aarch64/include/crypto/bn_conf.h create mode 100644 vere/ext/openssl/gen/linux-aarch64/include/crypto/buildinf.h create mode 100644 vere/ext/openssl/gen/linux-aarch64/include/crypto/dso_conf.h create mode 100644 vere/ext/openssl/gen/linux-aarch64/include/openssl/opensslconf.h create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-mb-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-sha1-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-sha256-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/aes/vpaes-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/bn/rsaz-avx2.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/bn/rsaz-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/bn/x86_64-gf2m.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/bn/x86_64-mont.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/bn/x86_64-mont5.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/camellia/cmll-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/chacha/chacha-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/ec/ecp_nistz256-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/ec/x25519-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/md5/md5-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/modes/aesni-gcm-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/modes/ghash-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/poly1305/poly1305-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/rc4/rc4-md5-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/rc4/rc4-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/sha/keccak1600-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha1-mb-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha1-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha256-mb-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha256-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha512-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/whrlpool/wp-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/crypto/x86_64cpuid.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/engines/e_padlock-x86_64.s create mode 100644 vere/ext/openssl/gen/linux-x86_64/include/crypto/bn_conf.h create mode 100644 vere/ext/openssl/gen/linux-x86_64/include/crypto/buildinf.h create mode 100644 vere/ext/openssl/gen/linux-x86_64/include/crypto/dso_conf.h create mode 100644 vere/ext/openssl/gen/linux-x86_64/include/openssl/opensslconf.h create mode 100644 vere/ext/openssl/gen/macos-aarch64/crypto/aes/aesv8-armx.S create mode 100644 vere/ext/openssl/gen/macos-aarch64/crypto/aes/vpaes-armv8.S create mode 100644 vere/ext/openssl/gen/macos-aarch64/crypto/arm64cpuid.S create mode 100644 vere/ext/openssl/gen/macos-aarch64/crypto/bn/armv8-mont.S create mode 100644 vere/ext/openssl/gen/macos-aarch64/crypto/chacha/chacha-armv8.S create mode 100644 vere/ext/openssl/gen/macos-aarch64/crypto/ec/ecp_nistz256-armv8.S create mode 100644 vere/ext/openssl/gen/macos-aarch64/crypto/modes/ghashv8-armx.S create mode 100644 vere/ext/openssl/gen/macos-aarch64/crypto/poly1305/poly1305-armv8.S create mode 100644 vere/ext/openssl/gen/macos-aarch64/crypto/sha/keccak1600-armv8.S create mode 100644 vere/ext/openssl/gen/macos-aarch64/crypto/sha/sha1-armv8.S create mode 100644 vere/ext/openssl/gen/macos-aarch64/crypto/sha/sha256-armv8.S create mode 100644 vere/ext/openssl/gen/macos-aarch64/crypto/sha/sha512-armv8.S create mode 100644 vere/ext/openssl/gen/macos-aarch64/include/crypto/bn_conf.h create mode 100644 vere/ext/openssl/gen/macos-aarch64/include/crypto/buildinf.h create mode 100644 vere/ext/openssl/gen/macos-aarch64/include/crypto/dso_conf.h create mode 100644 vere/ext/openssl/gen/macos-aarch64/include/openssl/opensslconf.h create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-mb-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-sha1-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-sha256-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/aes/vpaes-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/bn/rsaz-avx2.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/bn/rsaz-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/bn/x86_64-gf2m.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/bn/x86_64-mont.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/bn/x86_64-mont5.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/camellia/cmll-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/chacha/chacha-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/ec/ecp_nistz256-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/ec/x25519-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/md5/md5-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/modes/aesni-gcm-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/modes/ghash-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/poly1305/poly1305-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/rc4/rc4-md5-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/rc4/rc4-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/sha/keccak1600-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha1-mb-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha1-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha256-mb-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha256-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha512-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/whrlpool/wp-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/crypto/x86_64cpuid.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/engines/e_padlock-x86_64.s create mode 100644 vere/ext/openssl/gen/macos-x86_64/include/crypto/bn_conf.h create mode 100644 vere/ext/openssl/gen/macos-x86_64/include/crypto/buildinf.h create mode 100644 vere/ext/openssl/gen/macos-x86_64/include/crypto/dso_conf.h create mode 100644 vere/ext/openssl/gen/macos-x86_64/include/openssl/opensslconf.h create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-mb-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-sha1-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-sha256-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/aes/vpaes-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/bn/rsaz-avx2.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/bn/rsaz-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/bn/x86_64-gf2m.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/bn/x86_64-mont.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/bn/x86_64-mont5.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/camellia/cmll-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/chacha/chacha-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/ec/ecp_nistz256-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/ec/x25519-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/md5/md5-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/modes/aesni-gcm-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/modes/ghash-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/poly1305/poly1305-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/rc4/rc4-md5-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/rc4/rc4-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/sha/keccak1600-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha1-mb-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha1-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha256-mb-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha256-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha512-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/uplink-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/whrlpool/wp-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/crypto/x86_64cpuid.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/engines/e_padlock-x86_64.asm create mode 100644 vere/ext/openssl/gen/windows-x86_64/include/crypto/bn_conf.h create mode 100644 vere/ext/openssl/gen/windows-x86_64/include/crypto/buildinf.h create mode 100644 vere/ext/openssl/gen/windows-x86_64/include/crypto/dso_conf.h create mode 100644 vere/ext/openssl/gen/windows-x86_64/include/openssl/opensslconf.h create mode 100644 vere/ext/pdjson/build.zig create mode 100644 vere/ext/pdjson/build.zig.zon create mode 100644 vere/ext/sigsegv/build.zig create mode 100644 vere/ext/sigsegv/build.zig.zon create mode 100644 vere/ext/softblas/build.zig create mode 100644 vere/ext/softblas/build.zig.zon create mode 100644 vere/ext/softfloat/build.zig create mode 100644 vere/ext/softfloat/build.zig.zon create mode 100644 vere/ext/tracy/build.zig create mode 100644 vere/ext/tracy/build.zig.zon create mode 100644 vere/ext/unwind/build.zig create mode 100644 vere/ext/unwind/build.zig.zon create mode 100644 vere/ext/urcrypt/build.zig create mode 100644 vere/ext/urcrypt/build.zig.zon create mode 100644 vere/ext/wasm3/build.zig create mode 100644 vere/ext/wasm3/build.zig.zon create mode 100644 vere/ext/whereami/build.zig create mode 100644 vere/ext/whereami/build.zig.zon create mode 100644 vere/flake.lock create mode 100644 vere/flake.nix create mode 100644 vere/lldbinit.txt create mode 100644 vere/pkg/c3/build.zig create mode 100644 vere/pkg/c3/build.zig.zon create mode 100644 vere/pkg/c3/c3.h create mode 100644 vere/pkg/c3/defs.c create mode 100644 vere/pkg/c3/defs.h create mode 100644 vere/pkg/c3/motes.h create mode 100644 vere/pkg/c3/platform/windows/compat.c create mode 100644 vere/pkg/c3/platform/windows/compat.h create mode 100644 vere/pkg/c3/platform/windows/mman.h create mode 100644 vere/pkg/c3/platform/windows/wsetjmp.h create mode 100644 vere/pkg/c3/portable.h create mode 100644 vere/pkg/c3/types.h create mode 100644 vere/pkg/ent/.gitignore create mode 100644 vere/pkg/ent/LICENSE create mode 100644 vere/pkg/ent/README.md create mode 100644 vere/pkg/ent/build.zig create mode 100644 vere/pkg/ent/ent.c create mode 100644 vere/pkg/ent/ent.h create mode 100644 vere/pkg/ent/tests.c create mode 100644 vere/pkg/noun/allocate.c create mode 100644 vere/pkg/noun/allocate.h create mode 100644 vere/pkg/noun/build.zig create mode 100644 vere/pkg/noun/build.zig.zon create mode 100644 vere/pkg/noun/equality_tests.c create mode 100644 vere/pkg/noun/error.h create mode 100644 vere/pkg/noun/events.c create mode 100644 vere/pkg/noun/events.h create mode 100644 vere/pkg/noun/hashtable.c create mode 100644 vere/pkg/noun/hashtable.h create mode 100644 vere/pkg/noun/hashtable_tests.c create mode 100644 vere/pkg/noun/imprison.c create mode 100644 vere/pkg/noun/imprison.h create mode 100644 vere/pkg/noun/jets.c create mode 100644 vere/pkg/noun/jets.h create mode 100644 vere/pkg/noun/jets/136/tree.c create mode 100644 vere/pkg/noun/jets/137/tree.c create mode 100644 vere/pkg/noun/jets/a/add.c create mode 100644 vere/pkg/noun/jets/a/dec.c create mode 100644 vere/pkg/noun/jets/a/div.c create mode 100644 vere/pkg/noun/jets/a/gte.c create mode 100644 vere/pkg/noun/jets/a/gth.c create mode 100644 vere/pkg/noun/jets/a/lte.c create mode 100644 vere/pkg/noun/jets/a/lth.c create mode 100644 vere/pkg/noun/jets/a/max.c create mode 100644 vere/pkg/noun/jets/a/min.c create mode 100644 vere/pkg/noun/jets/a/mod.c create mode 100644 vere/pkg/noun/jets/a/mul.c create mode 100644 vere/pkg/noun/jets/a/sub.c create mode 100644 vere/pkg/noun/jets/b/bind.c create mode 100644 vere/pkg/noun/jets/b/clap.c create mode 100644 vere/pkg/noun/jets/b/find.c create mode 100644 vere/pkg/noun/jets/b/flop.c create mode 100644 vere/pkg/noun/jets/b/lent.c create mode 100644 vere/pkg/noun/jets/b/levy.c create mode 100644 vere/pkg/noun/jets/b/lien.c create mode 100644 vere/pkg/noun/jets/b/mate.c create mode 100644 vere/pkg/noun/jets/b/murn.c create mode 100644 vere/pkg/noun/jets/b/need.c create mode 100644 vere/pkg/noun/jets/b/reap.c create mode 100644 vere/pkg/noun/jets/b/reel.c create mode 100644 vere/pkg/noun/jets/b/roll.c create mode 100644 vere/pkg/noun/jets/b/scag.c create mode 100644 vere/pkg/noun/jets/b/skid.c create mode 100644 vere/pkg/noun/jets/b/skim.c create mode 100644 vere/pkg/noun/jets/b/skip.c create mode 100644 vere/pkg/noun/jets/b/slag.c create mode 100644 vere/pkg/noun/jets/b/snag.c create mode 100644 vere/pkg/noun/jets/b/sort.c create mode 100644 vere/pkg/noun/jets/b/turn.c create mode 100644 vere/pkg/noun/jets/b/weld.c create mode 100644 vere/pkg/noun/jets/b/zing.c create mode 100644 vere/pkg/noun/jets/c/aor.c create mode 100644 vere/pkg/noun/jets/c/bex.c create mode 100644 vere/pkg/noun/jets/c/c0n.c create mode 100644 vere/pkg/noun/jets/c/can.c create mode 100644 vere/pkg/noun/jets/c/cap.c create mode 100644 vere/pkg/noun/jets/c/cat.c create mode 100644 vere/pkg/noun/jets/c/clz.c create mode 100644 vere/pkg/noun/jets/c/ctz.c create mode 100644 vere/pkg/noun/jets/c/cut.c create mode 100644 vere/pkg/noun/jets/c/dis.c create mode 100644 vere/pkg/noun/jets/c/dor.c create mode 100644 vere/pkg/noun/jets/c/dvr.c create mode 100644 vere/pkg/noun/jets/c/end.c create mode 100644 vere/pkg/noun/jets/c/gor.c create mode 100644 vere/pkg/noun/jets/c/ham.c create mode 100644 vere/pkg/noun/jets/c/hew.c create mode 100644 vere/pkg/noun/jets/c/lsh.c create mode 100644 vere/pkg/noun/jets/c/mas.c create mode 100644 vere/pkg/noun/jets/c/met.c create mode 100644 vere/pkg/noun/jets/c/mix.c create mode 100644 vere/pkg/noun/jets/c/mor.c create mode 100644 vere/pkg/noun/jets/c/mug.c create mode 100644 vere/pkg/noun/jets/c/muk.c create mode 100644 vere/pkg/noun/jets/c/peg.c create mode 100644 vere/pkg/noun/jets/c/po.c create mode 100644 vere/pkg/noun/jets/c/pow.c create mode 100644 vere/pkg/noun/jets/c/rap.c create mode 100644 vere/pkg/noun/jets/c/rep.c create mode 100644 vere/pkg/noun/jets/c/rev.c create mode 100644 vere/pkg/noun/jets/c/rig.c create mode 100644 vere/pkg/noun/jets/c/rip.c create mode 100644 vere/pkg/noun/jets/c/rsh.c create mode 100644 vere/pkg/noun/jets/c/sew.c create mode 100644 vere/pkg/noun/jets/c/sqt.c create mode 100644 vere/pkg/noun/jets/c/swp.c create mode 100644 vere/pkg/noun/jets/c/xeb.c create mode 100644 vere/pkg/noun/jets/d/by_all.c create mode 100644 vere/pkg/noun/jets/d/by_any.c create mode 100644 vere/pkg/noun/jets/d/by_apt.c create mode 100644 vere/pkg/noun/jets/d/by_bif.c create mode 100644 vere/pkg/noun/jets/d/by_del.c create mode 100644 vere/pkg/noun/jets/d/by_dif.c create mode 100644 vere/pkg/noun/jets/d/by_gas.c create mode 100644 vere/pkg/noun/jets/d/by_get.c create mode 100644 vere/pkg/noun/jets/d/by_has.c create mode 100644 vere/pkg/noun/jets/d/by_int.c create mode 100644 vere/pkg/noun/jets/d/by_jab.c create mode 100644 vere/pkg/noun/jets/d/by_key.c create mode 100644 vere/pkg/noun/jets/d/by_put.c create mode 100644 vere/pkg/noun/jets/d/by_run.c create mode 100644 vere/pkg/noun/jets/d/by_uni.c create mode 100644 vere/pkg/noun/jets/d/by_urn.c create mode 100644 vere/pkg/noun/jets/d/in_apt.c create mode 100644 vere/pkg/noun/jets/d/in_bif.c create mode 100644 vere/pkg/noun/jets/d/in_del.c create mode 100644 vere/pkg/noun/jets/d/in_dif.c create mode 100644 vere/pkg/noun/jets/d/in_gas.c create mode 100644 vere/pkg/noun/jets/d/in_has.c create mode 100644 vere/pkg/noun/jets/d/in_int.c create mode 100644 vere/pkg/noun/jets/d/in_put.c create mode 100644 vere/pkg/noun/jets/d/in_rep.c create mode 100644 vere/pkg/noun/jets/d/in_run.c create mode 100644 vere/pkg/noun/jets/d/in_tap.c create mode 100644 vere/pkg/noun/jets/d/in_uni.c create mode 100644 vere/pkg/noun/jets/d/in_wyt.c create mode 100644 vere/pkg/noun/jets/e/adler.c create mode 100644 vere/pkg/noun/jets/e/aes_cbc.c create mode 100644 vere/pkg/noun/jets/e/aes_ecb.c create mode 100644 vere/pkg/noun/jets/e/aes_siv.c create mode 100644 vere/pkg/noun/jets/e/argon2.c create mode 100644 vere/pkg/noun/jets/e/base.c create mode 100644 vere/pkg/noun/jets/e/blake.c create mode 100644 vere/pkg/noun/jets/e/bytestream.c create mode 100644 vere/pkg/noun/jets/e/chacha.c create mode 100644 vere/pkg/noun/jets/e/crc.c create mode 100644 vere/pkg/noun/jets/e/cue.c create mode 100644 vere/pkg/noun/jets/e/ed_add_double_scalarmult.c create mode 100644 vere/pkg/noun/jets/e/ed_add_scalarmult_scalarmult_base.c create mode 100644 vere/pkg/noun/jets/e/ed_luck.c create mode 100644 vere/pkg/noun/jets/e/ed_point_add.c create mode 100644 vere/pkg/noun/jets/e/ed_point_neg.c create mode 100644 vere/pkg/noun/jets/e/ed_puck.c create mode 100644 vere/pkg/noun/jets/e/ed_recs.c create mode 100644 vere/pkg/noun/jets/e/ed_scad.c create mode 100644 vere/pkg/noun/jets/e/ed_scalarmult.c create mode 100644 vere/pkg/noun/jets/e/ed_scalarmult_base.c create mode 100644 vere/pkg/noun/jets/e/ed_shar.c create mode 100644 vere/pkg/noun/jets/e/ed_sign.c create mode 100644 vere/pkg/noun/jets/e/ed_smac.c create mode 100644 vere/pkg/noun/jets/e/ed_veri.c create mode 100644 vere/pkg/noun/jets/e/fein_ob.c create mode 100644 vere/pkg/noun/jets/e/fl.c create mode 100644 vere/pkg/noun/jets/e/fynd_ob.c create mode 100644 vere/pkg/noun/jets/e/hmac.c create mode 100644 vere/pkg/noun/jets/e/jam.c create mode 100644 vere/pkg/noun/jets/e/json_de.c create mode 100644 vere/pkg/noun/jets/e/json_en.c create mode 100644 vere/pkg/noun/jets/e/keccak.c create mode 100644 vere/pkg/noun/jets/e/leer.c create mode 100644 vere/pkg/noun/jets/e/loss.c create mode 100644 vere/pkg/noun/jets/e/lune.c create mode 100644 vere/pkg/noun/jets/e/mat.c create mode 100644 vere/pkg/noun/jets/e/mice.c create mode 100644 vere/pkg/noun/jets/e/mink.c create mode 100644 vere/pkg/noun/jets/e/mole.c create mode 100644 vere/pkg/noun/jets/e/mule.c create mode 100644 vere/pkg/noun/jets/e/parse.c create mode 100644 vere/pkg/noun/jets/e/rd.c create mode 100644 vere/pkg/noun/jets/e/rh.c create mode 100644 vere/pkg/noun/jets/e/ripe.c create mode 100644 vere/pkg/noun/jets/e/rq.c create mode 100644 vere/pkg/noun/jets/e/rs.c create mode 100644 vere/pkg/noun/jets/e/rub.c create mode 100644 vere/pkg/noun/jets/e/scot.c create mode 100644 vere/pkg/noun/jets/e/scow.c create mode 100644 vere/pkg/noun/jets/e/scr.c create mode 100644 vere/pkg/noun/jets/e/secp.c create mode 100644 vere/pkg/noun/jets/e/sha1.c create mode 100644 vere/pkg/noun/jets/e/shax.c create mode 100644 vere/pkg/noun/jets/e/slaw.c create mode 100644 vere/pkg/noun/jets/e/tape.c create mode 100644 vere/pkg/noun/jets/e/trip.c create mode 100644 vere/pkg/noun/jets/e/urwasm.c create mode 100644 vere/pkg/noun/jets/e/zlib.c create mode 100644 vere/pkg/noun/jets/f/cell.c create mode 100644 vere/pkg/noun/jets/f/comb.c create mode 100644 vere/pkg/noun/jets/f/cons.c create mode 100644 vere/pkg/noun/jets/f/core.c create mode 100644 vere/pkg/noun/jets/f/face.c create mode 100644 vere/pkg/noun/jets/f/fine.c create mode 100644 vere/pkg/noun/jets/f/fitz.c create mode 100644 vere/pkg/noun/jets/f/flan.c create mode 100644 vere/pkg/noun/jets/f/flip.c create mode 100644 vere/pkg/noun/jets/f/flor.c create mode 100644 vere/pkg/noun/jets/f/fork.c create mode 100644 vere/pkg/noun/jets/f/help.c create mode 100644 vere/pkg/noun/jets/f/hint.c create mode 100644 vere/pkg/noun/jets/f/look.c create mode 100644 vere/pkg/noun/jets/f/loot.c create mode 100644 vere/pkg/noun/jets/f/ut_crop.c create mode 100644 vere/pkg/noun/jets/f/ut_fish.c create mode 100644 vere/pkg/noun/jets/f/ut_fuse.c create mode 100644 vere/pkg/noun/jets/f/ut_mint.c create mode 100644 vere/pkg/noun/jets/f/ut_mull.c create mode 100644 vere/pkg/noun/jets/f/ut_nest.c create mode 100644 vere/pkg/noun/jets/f/ut_redo.c create mode 100644 vere/pkg/noun/jets/f/ut_rest.c create mode 100644 vere/pkg/noun/jets/g/plot.c create mode 100644 vere/pkg/noun/jets/i/lagoon.c create mode 100644 vere/pkg/noun/jets/k.h create mode 100644 vere/pkg/noun/jets/q.h create mode 100644 vere/pkg/noun/jets/tree.c create mode 100644 vere/pkg/noun/jets/w.h create mode 100644 vere/pkg/noun/jets_tests.c create mode 100644 vere/pkg/noun/log.c create mode 100644 vere/pkg/noun/log.h create mode 100644 vere/pkg/noun/manage.c create mode 100644 vere/pkg/noun/manage.h create mode 100644 vere/pkg/noun/nock.c create mode 100644 vere/pkg/noun/nock.h create mode 100644 vere/pkg/noun/nock_tests.c create mode 100644 vere/pkg/noun/noun.h create mode 100644 vere/pkg/noun/options.c create mode 100644 vere/pkg/noun/options.h create mode 100644 vere/pkg/noun/palloc.c create mode 100644 vere/pkg/noun/palloc_tests.c create mode 100644 vere/pkg/noun/platform/darwin/rsignal.h create mode 100644 vere/pkg/noun/platform/linux/rsignal.h create mode 100644 vere/pkg/noun/platform/windows/rsignal.c create mode 100644 vere/pkg/noun/platform/windows/rsignal.h create mode 100644 vere/pkg/noun/platform/windows/veh_handler.c create mode 100644 vere/pkg/noun/platform/windows/veh_handler.h create mode 100644 vere/pkg/noun/retrieve.c create mode 100644 vere/pkg/noun/retrieve.h create mode 100644 vere/pkg/noun/retrieve_tests.c create mode 100644 vere/pkg/noun/serial.c create mode 100644 vere/pkg/noun/serial.h create mode 100644 vere/pkg/noun/serial_tests.c create mode 100644 vere/pkg/noun/ship.c create mode 100644 vere/pkg/noun/ship.h create mode 100644 vere/pkg/noun/trace.c create mode 100644 vere/pkg/noun/trace.h create mode 100644 vere/pkg/noun/types.h create mode 100644 vere/pkg/noun/urth.c create mode 100644 vere/pkg/noun/urth.h create mode 100644 vere/pkg/noun/version.h create mode 100644 vere/pkg/noun/verstable.h create mode 100644 vere/pkg/noun/vortex.c create mode 100644 vere/pkg/noun/vortex.h create mode 100644 vere/pkg/noun/xtract.c create mode 100644 vere/pkg/noun/xtract.h create mode 100644 vere/pkg/noun/zave.c create mode 100644 vere/pkg/noun/zave.h create mode 100644 vere/pkg/past/build.zig create mode 100644 vere/pkg/past/build.zig.zon create mode 100644 vere/pkg/past/migrate.h create mode 100644 vere/pkg/past/migrate_v2.c create mode 100644 vere/pkg/past/migrate_v3.c create mode 100644 vere/pkg/past/migrate_v4.c create mode 100644 vere/pkg/past/migrate_v5.c create mode 100644 vere/pkg/past/v1.c create mode 100644 vere/pkg/past/v1.h create mode 100644 vere/pkg/past/v2.c create mode 100644 vere/pkg/past/v2.h create mode 100644 vere/pkg/past/v3.c create mode 100644 vere/pkg/past/v3.h create mode 100644 vere/pkg/past/v4.c create mode 100644 vere/pkg/past/v4.h create mode 100644 vere/pkg/past/v5.h create mode 100644 vere/pkg/ur/bitstream.c create mode 100644 vere/pkg/ur/bitstream.h create mode 100644 vere/pkg/ur/build.zig create mode 100644 vere/pkg/ur/build.zig.zon create mode 100644 vere/pkg/ur/defs.h create mode 100644 vere/pkg/ur/hashcons.c create mode 100644 vere/pkg/ur/hashcons.h create mode 100644 vere/pkg/ur/serial.c create mode 100644 vere/pkg/ur/serial.h create mode 100644 vere/pkg/ur/tests.c create mode 100644 vere/pkg/ur/ur.h create mode 100644 vere/pkg/vere/PACE create mode 100644 vere/pkg/vere/VERSION create mode 100644 vere/pkg/vere/ames_tests.c create mode 100644 vere/pkg/vere/arena.h create mode 100644 vere/pkg/vere/auto.c create mode 100644 vere/pkg/vere/benchmarks.c create mode 100644 vere/pkg/vere/boot_tests.c create mode 100644 vere/pkg/vere/build.zig create mode 100644 vere/pkg/vere/build.zig.zon create mode 100644 vere/pkg/vere/ca_bundle/ca_bundle.c create mode 100644 vere/pkg/vere/ca_bundle/ca_bundle.h create mode 100755 vere/pkg/vere/ca_bundle/ca_bundle.sh create mode 100644 vere/pkg/vere/dawn.c create mode 100644 vere/pkg/vere/db/lmdb.c create mode 100644 vere/pkg/vere/db/lmdb.h create mode 100644 vere/pkg/vere/disk.c create mode 100644 vere/pkg/vere/dns_sd.h create mode 100644 vere/pkg/vere/foil.c create mode 100644 vere/pkg/vere/hamt_test.c create mode 100644 vere/pkg/vere/io/ames.c create mode 100644 vere/pkg/vere/io/ames/stun.c create mode 100644 vere/pkg/vere/io/ames/stun.h create mode 100644 vere/pkg/vere/io/behn.c create mode 100644 vere/pkg/vere/io/conn.c create mode 100644 vere/pkg/vere/io/cttp.c create mode 100644 vere/pkg/vere/io/fore.c create mode 100644 vere/pkg/vere/io/hind.c create mode 100644 vere/pkg/vere/io/http.c create mode 100644 vere/pkg/vere/io/lick.c create mode 100644 vere/pkg/vere/io/lss.c create mode 100644 vere/pkg/vere/io/lss.h create mode 100644 vere/pkg/vere/io/mesa.c create mode 100644 vere/pkg/vere/io/mesa/bitset.c create mode 100644 vere/pkg/vere/io/mesa/bitset.h create mode 100644 vere/pkg/vere/io/mesa/mesa.h create mode 100644 vere/pkg/vere/io/mesa/pact.c create mode 100644 vere/pkg/vere/io/mesa/pact_test.c create mode 100644 vere/pkg/vere/io/serial.h create mode 100644 vere/pkg/vere/io/term.c create mode 100644 vere/pkg/vere/io/unix.c create mode 100644 vere/pkg/vere/ivory/ivory.c create mode 100644 vere/pkg/vere/ivory/ivory.h create mode 100755 vere/pkg/vere/ivory/ivory.sh create mode 100644 vere/pkg/vere/king.c create mode 100644 vere/pkg/vere/lord.c create mode 100644 vere/pkg/vere/main.c create mode 100644 vere/pkg/vere/mars.c create mode 100644 vere/pkg/vere/mars.h create mode 100644 vere/pkg/vere/mdns.c create mode 100644 vere/pkg/vere/mdns.h create mode 100644 vere/pkg/vere/melt.c create mode 100644 vere/pkg/vere/newt.c create mode 100644 vere/pkg/vere/newt_tests.c create mode 100644 vere/pkg/vere/noun_tests.c create mode 100644 vere/pkg/vere/pier.c create mode 100644 vere/pkg/vere/platform/darwin/daemon.c create mode 100644 vere/pkg/vere/platform/darwin/mach.c create mode 100644 vere/pkg/vere/platform/darwin/ptty.c create mode 100644 vere/pkg/vere/platform/linux/daemon.c create mode 100644 vere/pkg/vere/platform/linux/ptty.c create mode 100644 vere/pkg/vere/platform/windows/ctrlc.c create mode 100644 vere/pkg/vere/platform/windows/daemon.c create mode 100644 vere/pkg/vere/platform/windows/ptty.c create mode 100644 vere/pkg/vere/time.c create mode 100644 vere/pkg/vere/tracy_test.c create mode 100644 vere/pkg/vere/unix_tests.c create mode 100644 vere/pkg/vere/vere.h create mode 100644 vere/pkg/vere/ward.c create mode 100644 vere/pkg/vere/xmas_tests.c create mode 100755 vere/test-fake-ship.sh (limited to 'vere') diff --git a/vere/.gitignore b/vere/.gitignore new file mode 100644 index 0000000..69db695 --- /dev/null +++ b/vere/.gitignore @@ -0,0 +1,289 @@ +# IDEs. +/.vscode +/.idea + +# Bazel. +/.user.bazelrc +/bazel-* +/urbit +MODULE.bazel +MODULE.bazel.lock + +# Zig +**/.zig-cache +**/zig-out + +# clangd +**/.cache +compile_commands.json + +# Swap files. +*.swo +*.swp + +# Tags +.tags +.etags +TAGS +TAGS* +GPATH +GRTAGS +GTAGS + +# Fake ships. +/zod +/nec +/bud +/wes +/sev +/per +/sut +/let +/ful +/pen +/syt +/dur +/wep +/ser +/wyl +/sun +/ryp +/syx +/dyr +/nup +/heb +/peg +/lup +/dep +/dys +/put +/lug +/hec +/ryt +/tyv +/syd +/nex +/lun +/mep +/lut +/sep +/pes +/del +/sul +/ped +/tem +/led +/tul +/met +/wen +/byn +/hex +/feb +/pyl +/dul +/het +/mev +/rut +/tyl +/wyd +/tep +/bes +/dex +/sef +/wyc +/bur +/der +/nep +/pur +/rys +/reb +/den +/nut +/sub +/pet +/rul +/syn +/reg +/tyd +/sup +/sem +/wyn +/rec +/meg +/net +/sec +/mul +/nym +/tev +/web +/sum +/mut +/nyx +/rex +/teb +/fus +/hep +/ben +/mus +/wyx +/sym +/sel +/ruc +/dec +/wex +/syr +/wet +/dyl +/myn +/mes +/det +/bet +/bel +/tux +/tug +/myr +/pel +/syp +/ter +/meb +/set +/dut +/deg +/tex +/sur +/fel +/tud +/nux +/rux +/ren +/wyt +/nub +/med +/lyt +/dus +/neb +/rum +/tyn +/seg +/lyx +/pun +/res +/red +/fun +/rev +/ref +/mec +/ted +/rus +/bex +/leb +/dux +/ryn +/num +/pyx +/ryg +/ryx +/fep +/tyr +/tus +/tyc +/leg +/nem +/fer +/mer +/ten +/lus +/nus +/syl +/tec +/mex +/pub +/rym +/tuc +/fyl +/lep +/deb +/ber +/mug +/hut +/tun +/byl +/sud +/pem +/dev +/lur +/def +/bus +/bep +/run +/mel +/pex +/dyt +/byt +/typ +/lev +/myl +/wed +/duc +/fur +/fex +/nul +/luc +/len +/ner +/lex +/rup +/ned +/lec +/ryd +/lyd +/fen +/wel +/nyd +/hus +/rel +/rud +/nes +/hes +/fet +/des +/ret +/dun +/ler +/nyr +/seb +/hul +/ryl +/lud +/rem +/lys +/fyn +/wer +/ryc +/sug +/nys +/nyl +/lyn +/dyn +/dem +/lux +/fed +/sed +/bec +/mun +/lyr +/tes +/mud +/nyt +/byr +/sen +/weg +/fyr +/mur +/tel +/rep +/teg +/pec +/nel +/nev +/fes diff --git a/vere/CONTRIBUTING.md b/vere/CONTRIBUTING.md new file mode 100644 index 0000000..e2738b8 --- /dev/null +++ b/vere/CONTRIBUTING.md @@ -0,0 +1,173 @@ +# Contributing + +## Workflow + +Before beginning any unit of work, you should ensure you have a GitHub issue +detailing the scope of the work. This could be an issue someone else filed and +has been assigned to you (or you've assigned to yourself) or a new issue you +filed specifically for this unit of work. As much as possible, discussion of the +work should take place in the issue. When this is not possible, please update +the issue with relevant details from any offline conversations. Each issue +should provide a clear and thorough history of the work from inception to +completion. + +### Branch Names + +Every branch that you intend to put up for review must adhere to the form +`i//<...>`, where `` is the number of the issue that the branch corresponds +to and `<...>` is an optional short description of the branch to aid in +readability. If `<...>` is omitted, the `/` should be omitted as well, which +makes `i/` a well-formed branch name. + +### Commits + +Commit messages should be written in an imperative style and include a mandatory +short description and optional long description. + +``` +Require a short description + +Optionally add a long description. +``` + +### Pull Requests and Merges + +When your work is ready for review, open a pull request, making sure to link +to the tracking issue in the description, which should be formatted as follows +(where `` is the number of this work's tracking issue): + +``` +### Description + +Resolves #. + +Thoroughly describe the changes made. + +### Related + +Reference any related issues, links, papers, etc. here. +``` + +Tests will run automatically via GitHub Actions when you open a pull request or +push new commits to an existing pull request. + +With current github permissions, a PR is merge-ready after a single approval +from any member of @urbit/runtime. Although anyone can hit the merge button, +defer to the PR author to merge unless it's an urgent hotfix that needs to be +merged ASAP. + +Once you've collected and addressed feedback and are ready to merge, merge the +pull request. Use the default commit message which should default to your PR +title and description. Assuming that you properly included the "Resolves #N." +directive in the pull request description, merging will automatically close the +tracking issue associated with the pull request. + + +## Development Environment + +Although you likely have an identity on the live network, developing on the live +network is high-risk and largely unnecessary. Instead, standard practice is to +work on a fake ship. Fake ships use deterministic keys derived from the ship's +address, don't communicate on the live network, and can communicate with other +fake ships over the local loopback. + +### Boot a New Fake Ship + +To boot a new fake ship, pass the `-F` flag and a valid Urbit ship name to +`urbit`: + +```console +$ bazel build :urbit +$ ln -s bazel-bin/pkg/vere/urbit urbit +$ ./urbit -F +``` + +By default, booting a fake ship will use the same pre-compiled kernelspace-- +a "pill"-- that livenet ships use, which leads to a non-trivial boot time on the +order of tens of minutes. However, using a development specific pill-- a "solid" +pill-- the time to boot a new fake ship can be reduced to a few minutes. + +The solid pill (and other pills) live in the [Urbit repo][urbit]. To boot using +the solid pill, download the pill and then run: + +```console +$ ./urbit -F -B solid.pill +``` + +Instead of downloading the pill, you can also generate one yourself using +[`dojo`][dojo]: + +```console +dojo> .urbit/pill +solid +``` + +This will write the pill to `/.urb/put/urbit.pill` (note that `` is +the ship directory), which you can then use to boot a new ship: + +```console +$ ./urbit -F -B /.urb/put/urbit.pill +``` + +### Launch an Existing Fake Ship + +To launch an existing fake ship, supply the pier (the ship directory), which is +simply the name of the ship[^1], to `urbit`: + +```console +$ ./urbit +``` + + +[^1]: Unless you specify the pier using the `-c` flag. + +### Enable Language Server Processing + +We support the [`clangd`](https://clangd.llvm.org/installation) +language server, which can be installed directly on your system or +via one of the official editor plugins. + +After installing `clangd`, configure it to use the following arguments +(location of these arguments may vary depending on your editor plugin or +if you've installed `clangd` directly on your system). + +For example, if you use Visual Studio Code, you can add the following to your +user settings: + +```json +{ + "clangd.arguments": [ + "--header-insertion=never", + "--compile-commands-dir=${workspaceFolder}/", + "--query-driver=**", + ], +} +``` + +For other editors, please refer to the +[editor plugin documentation](https://clangd.llvm.org/installation.html#editor-plugins). + +Finally, run the following command to generate a `compile_commands.json` file, +which is used by `clangd` to enable all of its features (e.g. code completion, +jump to definition, cross-references, hovering, symbol renaming, etc.): + +```console +bazel run //bazel:refresh_compile_commands +``` + +### Debugging + +Prefer GDB for interactive debugging. You need to compile with the symbol table: + +```bash +bazel build :urbit --compilation_mode=dbg +gdb --args ./bazel-bin/pkg/vere/urbit zod +``` + +In GDB, set the following, and any breakpoints (e.g. `break u3m_bail`): + +```gdb +set follow-fork-mode child +handle SIGSEGV nostop noprint +``` + +Then run the Urbit program as usual with `r`. diff --git a/vere/INSTALL.md b/vere/INSTALL.md new file mode 100644 index 0000000..38af414 --- /dev/null +++ b/vere/INSTALL.md @@ -0,0 +1,151 @@ +# Building Vere + +We use [`zig`][zig] to build Vere, which is packaged as a single binary, +`urbit`. + +## Supported Targets + +Main (`-Dall`) targets: +- `aarch64-linux-musl` +- `x86_64-linux-musl` +- `aarch64-macos` +- `x86_64-macos` + +Additional targets: +- `aarch64-linux-gnu` +- `x86_64-linux-gnu` + +## Prerequisites + +Install version 0.14.0 of `zig` with the package manager of your choosing, e.g., `brew install zig`, or download the binary from [here][zig-download]. + +### macOS debugger + +macOS is curious operating system because the kernel is derived from from two codebases, the Mach kernel and the BSD kernel. It inherits two different hardware exception handling facilities, Mach exceptions and POSIX signals. We use `libsigsegv` and utilize the POSIX signals which is usually fine except when it comes to debugging with `lldb`. + +`lldb` hijacks the Mach exception ports for the task when it attaches to the process. Mach exceptions get handled before POSIX signals which means that as soon as vere faults (this happens often) `lldb` stop with a `EXC_BAD_ACCESS`. It is impossible to continue debugging from this state without the workaround we implemented in https://github.com/urbit/vere/pull/611. + +There are more annoying warts with `lldb` currently. First, if you attach the debugger when booting the ship with `lldb -- your-ship/.run` you have to specify `-t`, otherwise the ship is unable to boot for mysterious reasons. The other option is to start the ship and attach afterwards with `lldb -p PID`. Afterwards you should do this dance: + +``` +p (void)darwin_register_mach_exception_handler() +pro hand -p true -s false -n false SIGBUS +pro hand -p true -s false -n false SIGSEGV +``` + +### Sanitizers + +Sanitizers are supported for native builds only and you need to have `llvm-19` (and `clang-19` on linux) installed on your machine. + +For native linux builds this is the only situation where we actually build against the native abi. Normally we build agains musl even on native gnu machines. + +macOS: +```terminal +brew install llvm@19 +``` + +Debian/Ubuntu: +```terminal +apt-get install llvm-19 clang-19 +``` + +## Build + +Once you install `zig`, you're ready to build: +```console +zig build +``` +This builds a native debug binary. + +### Build options + +A quick overview of the more useful build options. +See `zig build --help` for more. + +#### `-Dtarget=[string]` +Cross-compilation target. See [supported targets](#supported-targets). + +#### `-Doptimize=[enum]` +Optimization mode. + +Supported values: +- Debug (default) => enable debugging information and runtime safety checks +- ReleaseSafe => optimize for memory safety +- ReleaseSmall => optimize for binary size +- ReleaseFast => optimize for speed + +#### `-Dall` +Build for all [supported targets](#supported-targets). + +#### `-Drelease` +Release flag. Builds with `-Doptimize=ReleaseFast` and `-Dpace=live`, and omits +git rev from binary version. + +#### `-Dpace=[enum]` +Release train. + +Supported values: +- once (default) +- live +- soon +- edge + +#### `-Dcopt=[list]` +Provide additional compiler flags. These propagate to all build artifacts. + +Example: `zig build -Dcopt="-g" -Dcopt="-fno-sanitize=all"` + +#### `-Dasan` +Enable address sanitizer. Only supported natively. Requires `llvm@19`, see [prerequisites](#sanitizers). + +#### `-Dubsan` +Enable undefined behavior sanitizer. Only supported natively. Requires `llvm@19`, see [prerequisites](#sanitizers). + +#### `-Dtracy` +Enable [Tracy profiler](https://github.com/wolfpld/tracy) integration for performance analysis. When enabled, the application will broadcast profiling data that can be captured by the Tracy profiler GUI. + +Usage: +```console +zig build -Dtracy=true +``` + +#### `-Dtracy-callstack` +Enable callstack capture in Tracy profiler. Only available when `-Dtracy=true` is also set. + +#### `-Dtracy-no-exit` +Wait for profiler connection before exiting. Useful for profiling short-running commands. Only available when `-Dtracy=true` is also set. + +Example with all Tracy options: +```console +zig build -Dtracy=true -Dtracy-callstack=true -Dtracy-no-exit=true +``` + +To use Tracy profiling: +1. Build with `-Dtracy=true` +2. Download and run the [Tracy profiler GUI](https://github.com/wolfpld/tracy/releases) +3. Run your urbit binary +4. In Tracy GUI, connect to capture profiling data + + + + + + + + + + + + +## Test + +Run tests by giving `zig bulid` the test names as arguments, e.g.: + +```console +zig build nock-test ames-test --summary all +``` + +See `zig build --help` for all available tests. + +[zig]: https://ziglang.org +[zig-download]: https://ziglang.org/download/ diff --git a/vere/LICENSE.txt b/vere/LICENSE.txt new file mode 100644 index 0000000..6404c00 --- /dev/null +++ b/vere/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Urbit + +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. \ No newline at end of file diff --git a/vere/MAINTAINERS.md b/vere/MAINTAINERS.md new file mode 100644 index 0000000..9907492 --- /dev/null +++ b/vere/MAINTAINERS.md @@ -0,0 +1,178 @@ +# Maintaining + +## Overview + +We use a three-stage release pipeline. Each stage of the release pipeline has +its own dedicated branch and a corresponding "train" (also called a pace). +Features and bug fixes progress through each stage--and are subject to testing +along the way--until they're eventually released to the live network. This +pipeline automates our release process, making it much easier to quickly and +reliably ship code. It's also simple to reason about. + +## Branches and Trains + +The branches and their corresponding trains that comprise the stages of the +release pipeline are: + +| Branch | Train | Target audience | +|-----------|--------|--------------------| +| `develop` | `edge` | Runtime developers | +| `release` | `soon` | Early adopters | +| `master` | `live` | Everyone else | + +`develop` is the default branch in the repo, which means that all new pull +requests target it by default. The general flow of a new feature or bug fix +through the pipeline is: + +```console +feature branch ----> develop ----> release ----> master + | | | + deployed to deployed to deployed to + edge train soon train live train +``` + +If an issue arises in the course of testing the `release` branch (because more +people are using `soon` than `edge`), a PR can be opened to target `release`. +If that's the case, the `master` needs to be merged back into `develop` after +`release` merges into `master` to ensure that `develop` gets the fix. + +## Version Numbers + +Each time a commit is pushed to `develop`, `release`, or `master`--say, when a +PR merges--we build and deploy a new version of the binary available for +consumption by anyone subscribed to that train (via `/.bin/pace`). + +For `edge` and `soon`, each binary is given a version of the form +`{version number}-{shortened commit SHA}`, where `{version number}` is the +version number listed in the [version file in the root of this repo][version] +and `{shortened commit SHA}` is the shortened commit SHA of the commit the +binary was built from. This allows subscribers to `edge` and `soon` to +continually pull down new binaries via the `next` subcommand even when the +version number in the [version file][version] remains the same. + +For `master`, each binary is given a version of the form `{version number}`, +where `{version number}` is simply the version number listed in the +[version file in the root of this repo][version]. + +Each time a release is cut (i.e. `develop` is merged into `release` to kick off +a release), the version number should be bumped on `develop` in anticipation of +the next release. + +## Deploy Endpoints + +Binaries are deployed to the following endpoints, where `{VN}` is the version +number in `VERSION`, `{CS}` is the shortened commit SHA of the commit the binary +is built from, and `{P}` is one of `linux-aarch64`, `linux-x86_64`, +`macos-aarch64`, and `macos-x86_64`: + +- https://bootstrap.urbit.org/vere/edge/v{VN}-{CS}/vere-v{VN}-{CS}-{P} +- https://bootstrap.urbit.org/vere/soon/v{VN}-{CS}/vere-v{VN}-{CS}-{P} +- https://bootstrap.urbit.org/vere/live/v{VN}/vere-v{VN}-{P} + +The most recently deployed version of a given train (pace) is uploaded to +https://bootstrap.urbit.org/vere/{T}/last, where `{T}` is one of `edge`, `soon`, +and `live`. + +### `next/kelvin/*` Endpoints + +We also upload binaries for `next/kelvin/*` branches, where `{K}` is the Kelvin +version of the branch: + +- https://bootstrap.urbit.org/vere/next/kelvin/{K}/v{VN}-{CS}/vere-v{VN}-{CS}-{P} + +Last deployed version strings for the `next/kelvin/*` branches are uploaded to: + +- https://bootstrap.urbit.org/vere/next/kelvin/{K}/last + +## Releases + +In anticipation of a new release to `live`, create a new pull request +targeting `master` from `release`. + +When you're ready to release to `live`, tag the tip of `release` with a tag of +the form `vere-v{version}`, where `{version}` is the contents of +[VERSION][version]: +```console +$ cd path/to/vere/repo +$ git checkout release +$ git fetch origin && git merge origin/release +$ git tag vere-v$(cat VERSION) +$ git push origin vere-v$(cat VERSION) +``` + +Then merge the pull request, which triggers the deployment of the `live` +binaries. **Once the binaries have been deployed**, which usually takes about +thirty minutes, create a GitHub release using the following checklist: + +- [ ] Select the just-created tag as the tag for the release. +- [ ] Select `master` as the target for the release. +- [ ] Use the tag name (i.e. `vere-v1.17`) as the title of the release. +- [ ] Select the prevoius release's tag (i.e. `vere-v1.16`) as the previous tag. +- [ ] Click "Generate release notes". +- [ ] Add the following information above the autogenerated `## What's Changed` + section: +```text +Arvo {Kelvin version}K +Vere {Vere version} + +## Description +{Notes describing the release} +``` +- [ ] Upload a tarball of the binary to the release for each platform we + support. Generate a platform's tarball using the following commands, where + `{platform}` is one of `linux-aarch64`, `linux-x86_64`, `macos-aarch64`, + and `macos-x86_64`: +```console +$ wget https://bootstrap.urbit.org/vere/live/v{version}/vere-v{version}-{platform} +$ chmod +x vere-v{version}-{platform} +$ tar zcf {platform}.tgz vere-v{version}-{platform} +``` +- [ ] Check the box marked "Set as the latest release". +- [ ] Click "Publish release". +- [ ] Create a placeholder pill for the new binary exists by running `gsutil cp gs://bootstrap.urbit.org/urbit-vOLD.pill gs://bootstrap.urbit.org/urbit-vNEW.pill` +- [ ] Ensure that a new urbit can be booted by using the [Getting Started guide](https://urbit.org/getting-started/cli) +- [ ] Post the contents of the GH Release notes to the [urbit-dev mailing list](https://groups.google.com/a/urbit.org/g/dev) + +Post an announcement to the [urbit-dev mailing +list][urbit-dev] containing a copy of the release notes. When in doubt, follow +the format of the previous release's announcement. Also post an announcement to +the "General" channel of the [Urbit Community group][urbit-community]. + +[urbit-community]: https://urbit.org/groups/~bitbet-bolbel/urbit-community +[urbit-dev]: https://groups.google.com/a/urbit.org/g/dev +[version]: https://github.com/urbit/vere/tree/develop/VERSION + +## Updating Infrastructure Ships + +- [ ] `~zod` and other live galaxies (TODO which?) should all be updated to the new binary, to make sure they will be ready to install and deploy Arvo releases on the latest Kelvin. +- [ ] `~marzod` and other live stars (TODO which?) should also be updated to the new binary. +- [ ] Ships that host official UF groups should be updated: `~bitdeg`, `~halbex-palheb`, TODO: more. + +## Preparing for the Next Release + +This instructions are performed **on release day** to prepare the next release candidate. + +- [ ] Merge `master` into `develop` (to ensure any changes made to `master` are reflected back into `develop`) + - [ ] `git fetch --all` + - [ ] `git checkout master` + - [ ] `git reset --hard origin/master` + - [ ] `git checkout -b merge-master-v{version}-into-develop` + - [ ] `git push origin merge-master-v{version}-into-develop` + - [ ] Create, approve, and merge a pull request from `merge-master-v{version}-into-develop` into `master` +- [ ] Merge `develop` into `release` (to ensure any changes made to `develop` are reflected back into `release`) + - [ ] `git fetch --all` + - [ ] `git checkout develop` + - [ ] `git reset --hard origin/develop` + - [ ] `git checkout -b merge-develop-v{version}-into-release` + - [ ] `git push origin merge-develop-v{version}-into-release` + - [ ] Create, approve, and merge a pull request from `merge-develop-v{version}-into-release` into `release` +- [ ] Bump the version number on `develop` + - [ ] `git fetch --all` + - [ ] `git checkout develop` + - [ ] `git reset --hard origin/develop` + - [ ] `git checkout -b bump-version-v{version}-to-v{next-version}` + - [ ] `echo {next-version} > VERSION` + - [ ] `git add VERSION` + - [ ] `git commit -m "Bump version to v{next-version}"` + - [ ] `git push origin bump-version-v{version}-to-v{next-version}` + - [ ] Create, approve, and merge a pull request from `bump-version-v{version}-to-v{next-version}` into `develop` diff --git a/vere/README.md b/vere/README.md new file mode 100644 index 0000000..5f2e0ca --- /dev/null +++ b/vere/README.md @@ -0,0 +1,45 @@ +# Urbit Runtime + +[Urbit][urbit] is a personal server stack built from scratch. This repository +contains [Urbit's runtime environment][vere], the lowest layer of the Urbit +stack, which includes the Nock virtual machine, I/O drivers, event log, and +snapshotting system. + +## Getting Started + +If you've never used Urbit before, head over [here](get-on-urbit) to get on +Urbit. + +For a high-level overview of the salient aspects of Urbit's architecture, visit +[docs.urbit.org][docs]. + +## Packages + +Urbit's runtime is broken down into a few separate layers, each of which is +defined in its own package: + +- [`pkg/c3`](pkg/c3): A set of basic utilities for writing Urbit's style of C. +- [`pkg/ent`](pkg/ent): A cross-platform wrapper for `getentropy(2)`. +- [`pkg/ur`](pkg/ur): An implementation of [jam][jam] and [cue][cue], Urbit's + bitwise noun serialization and deserialization algorithms, respectively. +- [`pkg/noun`](pkg/noun): The Nock virtual machine and snapshotting system. +- [`pkg/vere`](pkg/vere): The I/O drivers, event log, and main event loop. + + +## Build + +See [INSTALL.md](INSTALL.md). + +## Contributing + +Contributions of any form are more than welcome. Please take a look at our +[contributing guidelines][contributing] for details on our git practices, coding +styles, how we manage issues, and so on. + +[docs]: https://docs.urbit.org +[contributing]: https://github.com/urbit/urbit/blob/master/CONTRIBUTING.md +[cue]: https://docs.urbit.org/hoon/stdlib/2p#cue +[get-on-urbit]: https://docs.urbit.org/get-on-urbit +[jam]: https://docs.urbit.org/hoon/stdlib/2p#jam +[urbit]: https://urbit.org +[vere]: https://docs.urbit.org/build-on-urbit/runtime diff --git a/vere/boot-fake-ship.sh b/vere/boot-fake-ship.sh new file mode 100755 index 0000000..f9b6362 --- /dev/null +++ b/vere/boot-fake-ship.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +set -xeuo pipefail + +urbit_binary=$GITHUB_WORKSPACE/$URBIT_BINARY +brass_pill=$GITHUB_WORKSPACE/brass.pill + +curl -LJ -o $brass_pill https://github.com/urbit/urbit/raw/592b957a30b302cb7ae7fea78c6804c9d63d97ef/bin/brass.pill +curl -LJ -o urbit.tar.gz https://github.com/urbit/urbit/archive/592b957a30b302cb7ae7fea78c6804c9d63d97ef.tar.gz + +mkdir ./urbit +tar xfz urbit.tar.gz -C ./urbit --strip-components=1 +cp -RL ./urbit/tests ./urbit/pkg/arvo/tests + +$urbit_binary --lite-boot --daemon --fake bus \ + --bootstrap $brass_pill \ + --arvo ./urbit/pkg/arvo \ + --pier ./pier + +cleanup() { + if [ -f ./pier/.vere.lock ]; then + kill $(< ./pier/.vere.lock) || true + fi + set +x +} + +trap cleanup EXIT +port=$(grep loopback ./pier/.http.ports | awk -F ' ' '{print $1}') + +lensd() { + curl -s \ + --data "{\"source\":{\"dojo\":\"$1\"},\"sink\":{\"stdout\":null}}" \ + "http://localhost:$port" | xargs printf %s | sed 's/\\n/\n/g' +} + +lensa() { + curl -s \ + --data "{\"source\":{\"dojo\":\"$2\"},\"sink\":{\"app\":\"$1\"}}" \ + "http://localhost:$port" | xargs printf %s | sed 's/\\n/\n/g' +} + +check() { + [ 3 -eq $(lensd 3) ] +} + +lensd '+vat %base' + +if check && sleep 10 && check; then + echo "boot success" + lensa hood '+hood/exit' + while [ -f ./pier/.vere.lock ]; do + echo "waiting for pier to shut down" + sleep 5 + done +else + echo "boot failure" + kill $(< ./pier/.vere.lock) || true + set +x + exit 1 +fi diff --git a/vere/build.zig b/vere/build.zig new file mode 100644 index 0000000..66318a0 --- /dev/null +++ b/vere/build.zig @@ -0,0 +1,721 @@ +const std = @import("std"); + +const VERSION = "4.0"; + +const main_targets: []const std.Target.Query = &[_]std.Target.Query{ + .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = null }, + .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = null }, + .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .musl }, + .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .musl }, + .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .gnu }, +}; + +const supported_targets: []const std.Target.Query = &[_]std.Target.Query{ + .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = null }, + .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = null }, + .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .musl }, + .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .musl }, + .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnu }, + .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .gnu }, + .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .gnu, .glibc_version = std.SemanticVersion{ .major = 2, .minor = 27, .patch = 0 } }, + .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .gnu }, +}; + +const targets: []const std.Target.Query = main_targets; + +const BuildCfg = struct { + version: []const u8, + pace: []const u8, + binary_name: []const u8, + flags: []const []const u8 = &.{}, + include_test_steps: bool = true, + cpu_dbg: bool = false, + mem_dbg: bool = false, + c3dbg: bool = false, + snapshot_validation: bool = false, + ubsan: bool = false, + asan: bool = false, + tracy_enable: bool = false, + tracy_callstack: bool = false, + tracy_no_exit: bool = false, +}; + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{ .whitelist = supported_targets }); + var optimize = b.standardOptimizeOption(.{}); + + // + // Additional Project-Specific Options + // + + const all = b.option(bool, "all", "Build all targets") orelse false; + + const release = b.option(bool, "release", "Build for release") orelse false; + if (release) optimize = .ReleaseFast; + + const Pace = enum { once, live, soon, edge }; + const pace = @tagName(b.option( + Pace, + "pace", + "Release train (Default: once)", + ) orelse if (release) Pace.live else Pace.once); + + const copts: []const []const u8 = b.option( + []const []const u8, + "copt", + "Provide additional compiler flags", + ) orelse &.{}; + + const cpu_dbg = b.option( + bool, + "cpu-dbg", + "Enable cpu debug mode (-DU3_CPU_DEBUG)", + ) orelse false; + + const mem_dbg = b.option( + bool, + "mem-dbg", + "Enable memory debug mode (-DU3_MEMORY_DEBUG)", + ) orelse false; + + const c3dbg = b.option( + bool, + "c3dbg", + "Enable debug assertions (-DC3DBG)", + ) orelse false; + + const snapshot_validation = b.option( + bool, + "snapshot-validation", + "Enable snapshot validation (-DU3_SNAPSHOT_VALIDATION)", + ) orelse false; + + const binary_name = b.option( + []const u8, + "binary-name", + "Binary name (Default: urbit)", + ) orelse "urbit"; + + const asan = if (target.query.isNative()) + b.option( + bool, + "asan", + "Enable address sanitizer (native only, requires llvm@18)", + ) orelse false + else + false; + + const ubsan = if (target.query.isNative()) + b.option( + bool, + "ubsan", + "Enable undefined behavior sanitizer (native only, requires llvm@18)", + ) orelse false + else + false; + + const tracy_enable = b.option(bool, "tracy", "Enable Tracy profiler") orelse false; + const tracy_callstack = b.option(bool, "tracy-callstack", "Enable Tracy callstack capture") orelse false; + const tracy_no_exit = b.option(bool, "tracy-no-exit", "Wait for profiler connection before exiting") orelse false; + + // Parse short git rev + var file = try std.fs.cwd().openFile(".git/logs/HEAD", .{}); + defer file.close(); + var buf_reader = std.io.bufferedReader(file.reader()); + var in_stream = buf_reader.reader(); + var buf: [1024]u8 = undefined; + var last_line: [1024]u8 = undefined; + while (try in_stream.readUntilDelimiterOrEof(&buf, '\n')) |line| { + if (line.len > 0) + last_line = buf; + } + const git_rev = buf[41..51]; + + // Binary version + const version = if (!release) + VERSION ++ "-" ++ git_rev + else + VERSION; + + // + // Build + // + + const build_cfg: BuildCfg = .{ + .version = version, + .pace = pace, + .flags = copts, + .binary_name = binary_name, + .cpu_dbg = cpu_dbg, + .mem_dbg = mem_dbg, + .c3dbg = c3dbg, + .snapshot_validation = snapshot_validation, + .asan = asan, + .ubsan = ubsan, + .tracy_enable = tracy_enable, + .tracy_callstack = tracy_callstack, + .tracy_no_exit = tracy_no_exit, + .include_test_steps = !all, + }; + + if (all) { + for (targets) |t| { + try buildBinary(b, b.resolveTargetQuery(t), optimize, build_cfg); + } + } else { + const t = target.result; + try buildBinary( + b, + if (t.os.tag == .linux and + target.query.isNative() and + !asan and !ubsan) + b.resolveTargetQuery(.{ .abi = .musl }) + else + target, + optimize, + build_cfg, + ); + } +} + +fn buildBinary( + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, + cfg: BuildCfg, +) !void { + const t = target.result; + + // + // Global C Opts + // TODO: Propagate these to all 3rd party dependencies + // + + var global_flags = std.ArrayList([]const u8).init(b.allocator); + defer global_flags.deinit(); + + try global_flags.appendSlice(cfg.flags); + try global_flags.appendSlice(&.{ + "-g3", + "-Wall", + "-Werror", + }); + + if (!cfg.asan and !cfg.ubsan) { + try global_flags.appendSlice(&.{ + "-fno-sanitize=all", + }); + if (t.os.tag == .windows) { + try global_flags.appendSlice(&.{ + "-Qunused-arguments", + }); + } + } + + if (cfg.asan and !cfg.ubsan) + try global_flags.appendSlice(&.{ + "-Wno-deprecated", + "-fsanitize=address", + "-fno-sanitize=undefined", + "-fno-sanitize-trap=undefined", + }); + + if (!cfg.asan and cfg.ubsan) + try global_flags.appendSlice(&.{ + "-fsanitize=undefined", + "-fno-sanitize-trap=undefined", + }); + + if (cfg.asan and cfg.ubsan) + try global_flags.appendSlice(&.{ + "-Wno-deprecated", + "-fsanitize=address", + "-fsanitize=undefined", + "-fno-sanitize-trap=undefined", + }); + + // + // C Opts for Urbit PKGs And Binary + // + + var urbit_flags = std.ArrayList([]const u8).init(b.allocator); + defer urbit_flags.deinit(); + + try urbit_flags.appendSlice(global_flags.items); + try urbit_flags.appendSlice(&.{ + "-Wno-deprecated-non-prototype", + "-Wno-gnu-binary-literal", + "-Wno-gnu-empty-initializer", + "-Wno-gnu-statement-expression", + "-Wno-unused-variable", + "-Wno-unused-function", + "-Wno-gnu", + "-fno-omit-frame-pointer", + "-fms-extensions", + "-DU3_GUARD_PAGE", // pkg_noun + "-DU3_OS_ENDIAN_little=1", // pkg_c3 + "-DU3_OS_PROF=1", // pkg_c3 + }); + + if (cfg.cpu_dbg) + try urbit_flags.appendSlice(&.{"-DU3_CPU_DEBUG"}); + + if (cfg.mem_dbg) + try urbit_flags.appendSlice(&.{"-DU3_MEMORY_DEBUG"}); + + if (cfg.c3dbg) + try urbit_flags.appendSlice(&.{"-DC3DBG"}); + + if (cfg.snapshot_validation) + try urbit_flags.appendSlice(&.{"-DU3_SNAPSHOT_VALIDATION"}); + + if (cfg.tracy_enable) { + try urbit_flags.appendSlice(&.{"-DTRACY_ENABLE"}); + if (cfg.tracy_callstack) { + try urbit_flags.appendSlice(&.{"-DTRACY_CALLSTACK"}); + } + if (cfg.tracy_no_exit) { + try urbit_flags.appendSlice(&.{"-DTRACY_NO_EXIT"}); + } + } + + if (t.cpu.arch == .aarch64) { + try urbit_flags.appendSlice(&.{ + "-DU3_CPU_aarch64=1", + }); + } + + if (t.os.tag == .macos) { + try urbit_flags.appendSlice(&.{ + "-DU3_OS_osx=1", + "-DENT_GETENTROPY_SYSRANDOM", // pkg_ent + }); + } + + if (t.os.tag == .linux) { + try urbit_flags.appendSlice(&.{ + "-DU3_OS_linux=1", + "-DENT_GETENTROPY_UNISTD", //pkg_ent + }); + } + + if (t.os.tag == .windows) { + try urbit_flags.appendSlice(&.{ + "-DU3_OS_windows=1", + "-DWIN32_LEAN_AND_MEAN", + "-DENT_GETENTROPY_BCRYPTGENRANDOM", // pkg_ent + "-DO_CLOEXEC=0", + "-DH2O_NO_UNIX_SOCKETS", + "-DH2O_NO_HTTP3", + "-DH2O_NO_REDIS", + "-DH2O_NO_MEMCACHED", + "-DCURL_STATICLIB", + }); + } + + // + // Dependencies + // + + const copts: []const []const u8 = urbit_flags.items; + + const pkg_c3 = b.dependency("pkg_c3", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_ent = b.dependency("pkg_ent", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_ur = b.dependency("pkg_ur", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_noun = b.dependency("pkg_noun", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_past = b.dependency("pkg_past", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_vere = b.dependency("pkg_vere", .{ + .target = target, + .optimize = optimize, + .copt = copts, + .pace = cfg.pace, + .version = cfg.version, + }); + + const curl = b.dependency("curl", .{ + .target = target, + .optimize = optimize, + }); + + const gmp = b.dependency("gmp", .{ + .target = target, + .optimize = optimize, + }); + + const h2o = b.dependency("h2o", .{ + .target = target, + .optimize = optimize, + }); + + const libuv = b.dependency("libuv", .{ + .target = target, + .optimize = optimize, + }); + + const lmdb = b.dependency("lmdb", .{ + .target = target, + .optimize = optimize, + }); + + const natpmp = b.dependency("natpmp", .{ + .target = target, + .optimize = optimize, + }); + + const openssl = b.dependency("openssl", .{ + .target = target, + .optimize = optimize, + }); + + const sigsegv = b.dependency("sigsegv", .{ + .target = target, + .optimize = optimize, + }); + + const urcrypt = b.dependency("urcrypt", .{ + .target = target, + .optimize = optimize, + }); + + const whereami = b.dependency("whereami", .{ + .target = target, + .optimize = optimize, + }); + + const zlib = b.dependency("zlib", .{ + .target = target, + .optimize = optimize, + }); + + const wasm3 = b.dependency("wasm3", .{ + .target = target, + .optimize = optimize, + }); + + const tracy = if (cfg.tracy_enable) b.dependency("tracy", .{ + .target = target, + .optimize = optimize, + }) else null; + + // + // Build Artifact + // + + const urbit = b.addExecutable(.{ + .name = cfg.binary_name, + .target = target, + .optimize = optimize, + }); + + if (t.os.tag == .windows) { + urbit.stack_size = 67108864; + } else { + urbit.stack_size = 0; + } + + if (t.os.tag == .windows) { + urbit.linkSystemLibrary("ws2_32"); // WSA*, socket, htons, inet_*, gethostbyname, etc. + } + + const target_query: std.Target.Query = .{ + .cpu_arch = t.cpu.arch, + .os_tag = t.os.tag, + .abi = t.abi, + .os_version_min = .none, + .os_version_max = .none, + }; + const target_output = b.addInstallArtifact(urbit, .{ + .dest_dir = .{ + .override = .{ + .custom = try target_query.zigTriple(b.allocator), + }, + }, + }); + b.getInstallStep().dependOn(&target_output.step); + + if (target.result.os.tag.isDarwin() and !target.query.isNative()) { + const macos_sdk = b.lazyDependency("macos_sdk", .{ + .target = target, + .optimize = optimize, + }); + if (macos_sdk != null) { + urbit.addSystemIncludePath(macos_sdk.?.path("usr/include")); + urbit.addLibraryPath(macos_sdk.?.path("usr/lib")); + urbit.addFrameworkPath(macos_sdk.?.path("System/Library/Frameworks")); + } + } + + urbit.linkLibC(); + + urbit.linkLibrary(pkg_vere.artifact("vere")); + urbit.linkLibrary(pkg_noun.artifact("noun")); + urbit.linkLibrary(pkg_past.artifact("past")); + urbit.linkLibrary(pkg_c3.artifact("c3")); + urbit.linkLibrary(pkg_ur.artifact("ur")); + + urbit.linkLibrary(gmp.artifact("gmp")); + + urbit.linkLibrary(h2o.artifact("h2o")); + urbit.linkLibrary(curl.artifact("curl")); + urbit.linkLibrary(libuv.artifact("libuv")); + urbit.linkLibrary(lmdb.artifact("lmdb")); + urbit.linkLibrary(openssl.artifact("ssl")); + if (t.os.tag != .windows) + urbit.linkLibrary(sigsegv.artifact("sigsegv")); + urbit.linkLibrary(urcrypt.artifact("urcrypt")); + urbit.linkLibrary(whereami.artifact("whereami")); + urbit.linkLibrary(wasm3.artifact("wasm3")); + + if (cfg.tracy_enable) { + urbit.linkLibrary(tracy.?.artifact("tracy")); + urbit.addIncludePath(tracy.?.path("")); + } + + if (t.os.tag.isDarwin()) { + // Requires llvm@18 homebrew installation + if (cfg.asan or cfg.ubsan) + urbit.addLibraryPath(.{ + .cwd_relative = "/opt/homebrew/opt/llvm@18/lib/clang/18/lib/darwin", + }); + if (cfg.asan) urbit.linkSystemLibrary("clang_rt.asan_osx_dynamic"); + if (cfg.ubsan) urbit.linkSystemLibrary("clang_rt.ubsan_osx_dynamic"); + } + + if (t.os.tag == .linux) { + // Requires llvm-18 and clang-18 installation + if (cfg.asan or cfg.ubsan) + urbit.addLibraryPath(.{ + .cwd_relative = "/usr/lib/clang/18/lib/linux", + }); + if (t.cpu.arch == .x86_64) { + if (cfg.asan) urbit.linkSystemLibrary("clang_rt.asan-x86_64"); + if (cfg.ubsan) + urbit.linkSystemLibrary("clang_rt.ubsan_standalone-x86_64"); + } + if (t.cpu.arch == .aarch64) { + if (cfg.asan) urbit.linkSystemLibrary("clang_rt.asan-aarch64"); + if (cfg.ubsan) + urbit.linkSystemLibrary("clang_rt.ubsan_standalone-aarch64"); + } + } + + urbit.addCSourceFiles(.{ + .root = b.path("pkg/vere"), + .files = &.{ + "main.c", + }, + .flags = urbit_flags.items, + }); + + // CI needs generated version.h so we install libvere as a quick fix + const vere_install = b.addInstallArtifact(pkg_vere.artifact("vere"), .{}); + b.getInstallStep().dependOn(&vere_install.step); + + // + // Tests + // + + if (cfg.include_test_steps) { + const noun_test_deps = &.{ + pkg_noun.artifact("noun"), + pkg_c3.artifact("c3"), + gmp.artifact("gmp"), + }; + const vere_test_deps = &.{ + pkg_vere.artifact("vere"), + pkg_noun.artifact("noun"), + pkg_ur.artifact("ur"), + pkg_ent.artifact("ent"), + pkg_c3.artifact("c3"), + gmp.artifact("gmp"), + libuv.artifact("libuv"), + lmdb.artifact("lmdb"), + natpmp.artifact("natpmp"), + zlib.artifact("z"), + }; + const tests = [_]struct { + name: []const u8, + file: []const u8, + deps: []const *std.Build.Step.Compile, + }{ + // pkg_ur + .{ + .name = "ur-test", + .file = "pkg/ur/tests.c", + .deps = &.{pkg_ur.artifact("ur")}, + }, + // pkg_ent + .{ + .name = "ent-test", + .file = "pkg/ent/tests.c", + .deps = &.{pkg_ent.artifact("ent")}, + }, + // pkg_noun + .{ + .name = "palloc-test", + .file = "pkg/noun/palloc_tests.c", + .deps = noun_test_deps, + }, + .{ + .name = "equality-test", + .file = "pkg/noun/equality_tests.c", + .deps = noun_test_deps, + }, + .{ + .name = "hashtable-test", + .file = "pkg/noun/hashtable_tests.c", + .deps = noun_test_deps, + }, + .{ + .name = "hamt-test", + .file = "pkg/vere/hamt_test.c", + .deps = vere_test_deps, + }, + .{ + .name = "jets-test", + .file = "pkg/noun/jets_tests.c", + .deps = noun_test_deps, + }, + .{ + .name = "nock-test", + .file = "pkg/noun/nock_tests.c", + .deps = noun_test_deps, + }, + .{ + .name = "retrieve-test", + .file = "pkg/noun/retrieve_tests.c", + .deps = noun_test_deps, + }, + .{ + .name = "serial-test", + .file = "pkg/noun/serial_tests.c", + .deps = noun_test_deps, + }, + // pkg_vere + .{ + .name = "ames-test", + .file = "pkg/vere/ames_tests.c", + .deps = vere_test_deps, + }, + .{ + .name = "boot-test", + .file = "pkg/vere/boot_tests.c", + .deps = vere_test_deps, + }, + .{ + .name = "newt-test", + .file = "pkg/vere/newt_tests.c", + .deps = vere_test_deps, + }, + .{ + .name = "vere-noun-test", + .file = "pkg/vere/noun_tests.c", + .deps = vere_test_deps, + }, + .{ + .name = "unix-test", + .file = "pkg/vere/unix_tests.c", + .deps = vere_test_deps, + }, + .{ + .name = "benchmarks", + .file = "pkg/vere/benchmarks.c", + .deps = vere_test_deps, + }, + .{ + .name = "pact-test", + .file = "pkg/vere/io/mesa/pact_test.c", + .deps = vere_test_deps, + }, + .{ + .name = "tracy-test", + .file = "pkg/vere/tracy_test.c", + .deps = vere_test_deps, + }, + }; + + for (tests) |tst| { + const test_step = + b.step(tst.name, b.fmt("Build & run: {s}", .{tst.file})); + const test_exe = b.addExecutable(.{ + .name = tst.name, + .target = target, + .optimize = optimize, + }); + + if (t.os.tag.isDarwin() and !target.query.isNative()) { + const macos_sdk = b.lazyDependency("macos_sdk", .{ + .target = target, + .optimize = optimize, + }); + if (macos_sdk != null) { + test_exe.addSystemIncludePath(macos_sdk.?.path("usr/include")); + test_exe.addLibraryPath(macos_sdk.?.path("usr/lib")); + test_exe.addFrameworkPath(macos_sdk.?.path("System/Library/Frameworks")); + } + } + + if (t.os.tag == .windows) { + test_exe.linkSystemLibrary("ws2_32"); + } + + if (t.os.tag.isDarwin()) { + // Requires llvm@18 homebrew installation + if (cfg.asan or cfg.ubsan) + test_exe.addLibraryPath(.{ + .cwd_relative = "/opt/homebrew/opt/llvm@18/lib/clang/18/lib/darwin", + }); + if (cfg.asan) test_exe.linkSystemLibrary("clang_rt.asan_osx_dynamic"); + if (cfg.ubsan) test_exe.linkSystemLibrary("clang_rt.ubsan_osx_dynamic"); + } + + test_exe.stack_size = 0; + test_exe.linkLibC(); + for (tst.deps) |dep| { + test_exe.linkLibrary(dep); + } + if (cfg.tracy_enable) { + test_exe.linkLibrary(tracy.?.artifact("tracy")); + test_exe.addIncludePath(tracy.?.path("")); + } + test_exe.addCSourceFiles(.{ + .files = &.{tst.file}, + .flags = urbit_flags.items, + }); + const exe_install = b.addInstallArtifact(test_exe, .{}); + const run_unit_tests = b.addRunArtifact(test_exe); + if ( t.os.tag.isDarwin() and (cfg.asan or cfg.ubsan) ) { + // disable libmalloc warnings + run_unit_tests.setEnvironmentVariable("MallocNanoZone", "0"); + } + run_unit_tests.skip_foreign_checks = true; + test_step.dependOn(&run_unit_tests.step); + test_step.dependOn(&exe_install.step); + } + } +} diff --git a/vere/build.zig.zon b/vere/build.zig.zon new file mode 100644 index 0000000..84e8ef2 --- /dev/null +++ b/vere/build.zig.zon @@ -0,0 +1,73 @@ +.{ + .name = .urbit, + .version = "0.0.1", + .fingerprint = 0x9e228a3003a2736b, + .dependencies = .{ + .macos_sdk = .{ + .url = "https://github.com/joseluisq/macosx-sdks/releases/download/14.5/MacOSX14.5.sdk.tar.xz", + .hash = "N-V-__8AAKtK4FMzqcFsY_ZrpMg9bGH0h7BqZDXtVyAerMtM", + .lazy = true, + }, + .pkg_c3 = .{ + .path = "./pkg/c3", + }, + .pkg_ent = .{ + .path = "./pkg/ent", + }, + .pkg_ur = .{ + .path = "./pkg/ur", + }, + .pkg_noun = .{ + .path = "./pkg/noun", + }, + .pkg_past = .{ + .path = "./pkg/past", + }, + .pkg_vere = .{ + .path = "./pkg/vere", + }, + .curl = .{ + .path = "./ext/curl", + }, + .gmp = .{ + .path = "./ext/gmp", + }, + .h2o = .{ + .path = "./ext/h2o", + }, + .libuv = .{ + .path = "./ext/libuv", + }, + .lmdb = .{ + .path = "./ext/lmdb", + }, + .natpmp = .{ + .path = "./ext/natpmp", + }, + .openssl = .{ + .path = "./ext/openssl", + }, + .sigsegv = .{ + .path = "./ext/sigsegv", + }, + .urcrypt = .{ + .path = "./ext/urcrypt", + }, + .whereami = .{ + .path = "./ext/whereami", + }, + .zlib = .{ + .url = "https://github.com/allyourcodebase/zlib/archive/61e7df7e996ec5a5f13a653db3c419adb340d6ef.tar.gz", + .hash = "zlib-1.3.1-ZZQ7lbYMAAB1hTSOKSXAKAgHsfDcyWNH_37ojw5WSpgR", + }, + .wasm3 = .{ + .path = "./ext/wasm3", + }, + .tracy = .{ + .path = "./ext/tracy", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/doc/spec/nock/4.txt b/vere/doc/spec/nock/4.txt new file mode 100644 index 0000000..3457d6b --- /dev/null +++ b/vere/doc/spec/nock/4.txt @@ -0,0 +1,45 @@ +A noun is an atom or a cell. An atom is a natural number. A cell is an ordered pair of nouns. + +Reduce by the first matching pattern; variables match any noun. + +nock(a) *a +[a b c] [a [b c]] + +?[a b] 0 +?a 1 ++[a b] +[a b] ++a 1 + a +=[a a] 0 +=[a b] 1 + +/[1 a] a +/[2 a b] a +/[3 a b] b +/[(a + a) b] /[2 /[a b]] +/[(a + a + 1) b] /[3 /[a b]] +/a /a + +#[1 a b] a +#[(a + a) b c] #[a [b /[(a + a + 1) c]] c] +#[(a + a + 1) b c] #[a [/[(a + a) c] b] c] +#a #a + +*[a [b c] d] [*[a b c] *[a d]] + +*[a 0 b] /[b a] +*[a 1 b] b +*[a 2 b c] *[*[a b] *[a c]] +*[a 3 b] ?*[a b] +*[a 4 b] +*[a b] +*[a 5 b c] =[*[a b] *[a c]] + +*[a 6 b c d] *[a *[[c d] 0 *[[2 3] 0 *[a 4 4 b]]]] +*[a 7 b c] *[*[a b] c] +*[a 8 b c] *[[*[a b] a] c] +*[a 9 b c] *[*[a c] 2 [0 1] 0 b] +*[a 10 [b c] d] #[b *[a c] *[a d]] + +*[a 11 [b c] d] *[[*[a c] *[a d]] 0 3] +*[a 11 b c] *[a c] + +*a *a diff --git a/vere/doc/spec/nock/5.txt b/vere/doc/spec/nock/5.txt new file mode 100644 index 0000000..54261c5 --- /dev/null +++ b/vere/doc/spec/nock/5.txt @@ -0,0 +1,39 @@ +A noun is an atom or a cell. An atom is a natural number. A cell is an ordered +pair of nouns. + +nock(a) *a +[a b c] [a [b c]] + +?[a b] 0 +?a 1 ++[a b] +[a b] ++a 1 + a +=[a a] 0 +=[a b] 1 +=a =a + +/[1 a] a +/[2 a b] a +/[3 a b] b +/[(a + a) b] /[2 /[a b]] +/[(a + a + 1) b] /[3 /[a b]] +/a /a + +*[a [b c] d] [*[a b c] *[a d]] + +*[a 0 b] /[b a] +*[a 1 b] b +*[a 2 b c] *[*[a b] *[a c]] +*[a 3 b] ?*[a b] +*[a 4 b] +*[a b] +*[a 5 b] =*[a b] + +*[a 6 b c d] *[a 2 [0 1] 2 [1 c d] [1 0] 2 [1 2 3] [1 0] 4 4 b] +*[a 7 b c] *[a 2 b 1 c] +*[a 8 b c] *[a 7 [[7 [0 1] b] 0 1] c] +*[a 9 b c] *[a 7 c 2 [0 1] 0 b] +*[a 10 [b c] d] *[a 8 c 7 [0 3] d] +*[a 10 b c] *[a c] + +*a *a + diff --git a/vere/doc/spec/u3.md b/vere/doc/spec/u3.md new file mode 100644 index 0000000..32ce9e8 --- /dev/null +++ b/vere/doc/spec/u3.md @@ -0,0 +1,1571 @@ +# u3: noun processing in C. + +`u3` is the C library that makes Urbit work. If it wasn't called +`u3`, it might be called `libnoun` - it's a library for making +and storing nouns. + +What's a noun? A noun is either a cell or an atom. A cell is an +ordered pair of any two nouns. An atom is an unsigned integer of +any size. + +To the C programmer, this is not a terribly complicated data +structure, so why do you need a library for it? + +One: nouns have a well-defined computation kernel, Nock, whose +spec fits on a page and gzips to 340 bytes. But the only +arithmetic operation in Nock is increment. So it's nontrivial +to compute both efficiently and correctly. + +Two: `u3` is designed to support "permanent computing," ie, a +single-level store which is transparently snapshotted. This +implies a specialized memory-management model, etc, etc. + +(Does `u3` depend on the higher levels of Urbit, Arvo and Hoon? +Yes and no. `u3` expects you to load something shaped like an +Arvo kernel, and use it as an event-processing function. But you +don't need to use this feature if you don't want, and your kernel +doesn't have to be Arvo proper - just Arvo-compatible. Think of +`u3` as the BIOS and Arvo as the boot kernel. And there are no +dependencies at all between Hoon the language and `u3`.) + +## c3: C in Urbit + +Under `u3` is the simple `c3` layer, which is just how we write C +in Urbit. + +When writing C in u3, please of course follow the conventions of +the code around you as regards indentation, etc. It's especially +important that every function have a header comment, even if it +says nothing interesting. + +But some of our idiosyncrasies go beyond convention. Yes, we've +done awful things to C. Here's what we did and why we did. + +### c3: integer types + +First, it's generally acknowledged that underspecified integer +types are C's worst disaster. C99 fixed this, but the `stdint` +types are wordy and annoying. We've replaced them with: + + /* Good integers. + */ + typedef uint64_t c3_d; // double-word + typedef int64_t c3_ds; // signed double-word + typedef uint32_t c3_w; // word + typedef int32_t c3_ws; // signed word + typedef uint16_t c3_s; // short + typedef int16_t c3_ss; // signed short + typedef uint8_t c3_y; // byte + typedef int8_t c3_ys; // signed byte + typedef uint8_t c3_b; // bit + + typedef uint8_t c3_t; // boolean + typedef uint8_t c3_o; // loobean + typedef uint8_t c3_g; // 5-bit atom for a 32-bit log. + typedef uint32_t c3_l; // little; 31-bit unsigned integer + typedef uint32_t c3_m; // mote; also c3_l; LSB first a-z 4-char string. + + /* Bad integers. + */ + typedef char c3_c; // does not match int8_t or uint8_t + typedef int c3_i; // int - really bad + typedef uintptr_t c3_p; // pointer-length uint - really really bad + typedef intptr_t c3_ps; // pointer-length int - really really bad + +Some of these need explanation. A loobean is a Nock boolean - +Nock, for mysterious reasons, uses 0 as true (always say "yes") +and 1 as false (always say "no"). + +Nock and/or Hoon cannot tell the difference between a short atom +and a long one, but at the `u3` level every atom under `2^31` is +direct. The `c3_l` type is useful to annotate this. A `c3_m` is +a *mote* - a string of up to 4 characters in a `c3_l`, least +significant byte first. A `c3_g` should be a 5-bit atom. Of +course, C cannot enforce these constraints, only document them. + +Use the "bad" - ie, poorly specified - integer types only when +interfacing with external code that expects them. + +An enormous number of motes are defined in `i/c/motes.h`. There +is no reason to delete motes that aren't being used, or even to +modularize the definitions. Keep them alphabetical, though. + +### c3: variables and variable naming + +The C3 style uses Hoon style TLV variable names, with a quasi +Hungarian syntax. This is weird, but works really well, as long +as what you're doing isn't hideously complicated. (Then it works +badly, but we shouldn't need anything hideous in u3.) + +A TLV variable name is a random pronounceable three-letter +string, sometimes with some vague relationship to its meaning, +but usually not. Usually CVC (consonant-vowel-consonant) is a +good choice. + +You should use TLVs much the way math people use Greek letters. +The same concept should in general get the same name across +different contexts. When you're working in a given area, you'll +tend to remember the binding from TLV to concept by sheer power +of associative memory. When you come back to it, it's not that +hard to relearn. And of course, when in doubt, comment it. + +Variables take pseudo-Hungarian suffixes, matching in general the +suffix of the integer type: + + c3_w wor_w; // 32-bit word + +Unlike in standard Hungarian, there is no change for pointer +variables. C structure variables take a `_u` suffix. + +### c3: loobeans + +The code (from `defs.h`) tells the story: + + # define c3y 0 + # define c3n 1 + + # define _(x) (c3y == (x)) + # define __(x) ((x) ? c3y : c3n) + # define c3a(x, y) __(_(x) && _(y)) + # define c3o(x, y) __(_(x) || _(y)) + +In short, use `_()` to turn a loobean into a boolean, `__` to go +the other way. Use `!` as usual, `c3y` for yes and `c3n` for no, +`c3a` for and and `c3o` for or. + +## u3: land of nouns + +The division between `c3` and `u3` is that you could theoretically +imagine using `c3` as just a generic C environment. Anything to do +with nouns is in `u3`. + +### u3: a map of the system + +There are two kinds of symbols in `u3`: regular and irregular. +Regular symbols follow this pattern: + + prefix purpose .h .c + ------------------------------------------------------- + u3a_ allocation i/n/a.h n/a.c + u3e_ persistence i/n/e.h n/e.c + u3h_ hashtables i/n/h.h n/h.c + u3i_ noun construction i/n/i.h n/i.c + u3j_ jet control i/n/j.h n/j.c + u3m_ system management i/n/m.h n/m.c + u3n_ nock computation i/n/n.h n/n.c + u3r_ noun access (error returns) i/n/r.h n/r.c + u3t_ profiling i/n/t.h n/t.c + u3v_ arvo i/n/v.h n/v.c + u3x_ noun access (error crashes) i/n/x.h n/x.c + u3z_ memoization i/n/z.h n/z.c + u3k[a-g] jets (transfer, C args) i/j/k.h j/[a-g]/*.c + u3q[a-g] jets (retain, C args) i/j/q.h j/[a-g]/*.c + u3w[a-g] jets (retain, nock core) i/j/w.h j/[a-g]/*.c + +Irregular symbols always start with `u3` and obey no other rules. +They're defined in `i/n/aliases.h`. Finally, `i/all.h` includes +all these headers (fast compilers, yay) and is all you need to +program in `u3`. + +### u3: noun internals + +A noun is a `u3_noun` - currently defined as a 32-bit `c3_w`. + +If your `u3_noun` is less than `(1 << 31)`, it's a direct atom. +Every unsigned integer between `0` and `0x7fffffff` inclusive is +its own noun. + +If bit `31` is set in a `u3_noun` and bit `30` is `1` the noun +is an indirect cell. If bit `31` is set and bit `30` is `0` the +noun is an indirect atom. Bits `29` through `0` are a word +pointer into the loom - see below. The structures are: + + typedef struct { + c3_w mug_w; + c3_w len_w; + c3_w buf_w[0]; // actually [len_w] + } u3a_atom; + + typedef struct { + c3_w mug_w; + u3_noun hed; + u3_noun tel; + } u3a_cell; + +The only thing that should be mysterious here is `mug_w`, which +is a 31-bit lazily computed nonzero short hash (FNV currently, +soon Murmur3). If `mug_w` is 0, the hash is not yet computed. +We also hijack this field for various hacks, such as saving the +new address of a noun when copying over. + +Also, the value `0xffffffff` is `u3_none`, which is never a valid +noun. Use the type `u3_weak` to express that a noun variable may +be `u3_none`. + +### u3: reference counts + +The only really essential thing you need to know about `u3` is +how to handle reference counts. Everything else, you can skip +and just get to work. + +u3 deals with reference-counted, immutable, acyclic nouns. +Unfortunately, we are not Apple and can't build reference +counting into your C compiler, so you need to count by hand. + +Every allocated noun (or any allocation object, because our +allocator is general-purpose) contains a counter which counts the +number of references to it - typically variables with type +`u3_noun`. When this counter goes to 0, the noun is freed. + +To tell `u3` that you've added a reference to a noun, call the +function `u3a_gain()` or its shorthand `u3k()`. (For your +convenience, this function returns its argument.) To tell `u3` +that you've destroyed a reference, call `u3a_lose()` or `u3z()`. + +(If you screw up by decrementing the counter too much, `u3` will +dump core in horrible ways. If you screw up by incrementing it +too much, `u3` will leak memory. To check for memory leaks, +set the `bug_o` flag in `u3e_boot()` - eg, run `vere` with `-g`. +Memory leaks are difficult to debug - the best way to handle +leaks is just to revert to a version that didn't have them, and +look over your code again.) + +(You can gain or lose a direct atom. It does nothing.) + +### u3: reference protocols + +*THIS IS THE MOST CRITICAL SECTION IN THE `u3` DOCUMENTATION.* + +The key question when calling a C function in a refcounted world +is what the function will do to the noun refcounts - and, if the +function returns a noun, what it does to the return. + +There are two semantic patterns, `transfer` and `retain`. In +`transfer` semantics, the caller "gives" a use count to the +callee, which "gives back" any return. For instance, if I have + + { + u3_noun foo = u3i_string("foobar"); + u3_noun bar; + + bar = u3f_futz(foo); + [...] + u3z(bar); + } + +Suppose `u3f_futz()` has `transfer` semantics. At `[...]`, my +code holds one reference to `bar` and zero references to `foo` - +which has been freed, unless it's part of `bar`. My code now +owns `bar` and gets to work with it until it's done, at which +point a `u3z()` is required. + +On the other hand, if `u3f_futz()` has `retain` semantics, we +need to write + + { + u3_noun foo = u3i_string("foobar"); + u3_noun bar; + + bar = u3f_futz(foo); + [...] + u3z(foo); + } + +because calling `u3f_futz()` does not release our ownership of +`foo`, which we have to free ourselves. + +But if we free `bar`, we are making a great mistake, because our +reference to it is not in any way registered in the memory +manager (which cannot track references in C variables, of +course). It is normal and healthy to have these uncounted +C references, but they must be treated with care. + +The bottom line is that it's essential for the caller to know +the refcount semantics of any function which takes or returns a +noun. (In some unusual circumstances, different arguments or +returns in one function may be handled differently.) + +Broadly speaking, as a design question, retain semantics are more +appropriate for functions which inspect or query nouns. For +instance, `u3h()` (which takes the head of a noun) retains, so +that we can traverse a noun tree without constantly incrementing +and decrementing. + +Transfer semantics are more appropriate for functions which make +nouns, which is obviously what most functions do. + +In general, though, in most places it's not worth thinking about +what your function does. There is a convention for it, which +depends on where it is, not what it does. Follow the convention. + +### u3: reference conventions + +The `u3` convention is that, unless otherwise specified, *all +functions have transfer semantics* - with the exception of the +prefixes: `u3r`, `u3x`, `u3z`, `u3q` and `u3w`. Also, within +jet directories `a` through `f` (but not `g`), internal functions +retain (for historical reasons). + +If functions outside this set have retain semantics, they need to +be commented, both in the `.h` and `.c` file, with `RETAIN` in +all caps. Yes, it's this important. + +### u3: system architecture + +If you just want to tinker with some existing code, it might be +enough to understand the above. If not, it's probably worth +taking the time to look at `u3` as a whole. + +`u3` is designed to work as a persistent event processor. +Logically, it computes a function of the form + + f(event, old state) -> (actions, new state) + +Obviously almost any computing model - including, but not limited +to, Urbit - can be defined in this form. To create the illusion +of a computer that never loses state and never fails, we: + +- log every event externally before it goes into u3 +- keep a single reference to a permanent state noun. +- can abort any event without damaging the permanent state. +- snapshot the permanent state periodically, and/or prune logs. + +### u3: the road model + +`u3` uses a memory design which I'm sure someone has invented +somewhere before, because it's not very clever, but I've never +seen it anywhere in particular. + +Every allocation starts with a solid block of memory, which `u3` +calls the `loom`. How do we allocate on the loom? You're +probably familiar with the Unix heap-stack design, in which the +stack grows downward and the heap (malloc arena) grows upward: + + 0 brk ffff + | heap | stack | + |------------#################################+++++++++++++| + | | | + 0 sp ffff + +A road is a normal heap-stack system, except that the heap +and stack can point in *either direction*. Therefore, inside +a road, we can nest another road in the *opposite direction*. + +When the opposite road completes, its heap is left on top of +the opposite heap's stack. It's no more than the normal +behavior of a stack machine for all subcomputations to push +their results on the stack. + +The performance tradeoff of "leaping" - reversing directions in +the road - is that if the outer computation wants to preserve the +results of the inner one, not just use them for temporary +purposes, it has to *copy them*. + +This is a trivial cost in some cases, a prohibitive cost in +others. The upside, of course, is that all garbage accrued +in the inner computation is discarded at zero cost. + +The goal of the road system is the ability to *layer* memory +models. If you are allocating on a road, you have no idea +how deep within a nested road system you are - in other words, +you have no idea exactly how durable your result may be. +But free space is never fragmented within a road. + +Roads do not reduce the generality or performance of a memory +system, since even the most complex GC system can be nested +within a road at no particular loss of performance - a road +is just a block of memory. + +Each road (`u3a_road` to be exact) uses four pointers: `rut` is +the bottom of the arena, `hat` the top of the arena, `mat` the +bottom of the stack, `cap` the top of the stack. (Bear in mind +that the road "stack" is not actually used as the C function-call +stack, though it probably should be.) + +A "north" road has the stack high and the heap low: + + 0 rut hat ffff + | | | | + |~~~~~~~~~~~~-------##########################+++++++$~~~~~| + | | | | + 0 cap mat ffff + +A "south" road is the other way around: + + 0 mat cap ffff + | | | | + |~~~~~~~~~~~~$++++++##########################--------~~~~~| + | | | | + 0 hat rut ffff + +Legend: `-` is durable storage (heap); `+` is temporary storage +(stack); `~` is deep storage (immutable); `$` is the allocation +frame; `#` is free memory. + +Pointer restrictions: pointers stored in `+` can point anywhere. +Of course, pointing to `#` (free memory) would be a bug. +Pointers in `-` can only point to `-` or `~`; pointers in `~` +only point to `~`. + +To "leap" is to create a new inner road in the `###` free space. +but in the reverse direction, so that when the inner road +"falls" (terminates), its durable storage is left on the +temporary storage of the outer road. + +`u3` keeps a global variable, `u3_Road` or its alias `u3R`, which +points to the current road. (If we ever run threads in inner +roads - see below - this will become a thread-local variable.) +Relative to `u3R`, `+` memory is called `junior` memory; `-` +memory is `normal` memory; `~` is `senior` memory. + +### u3: explaining the road model + +But... why? + +We're now ready to understand why the road system works so +logically with the event and persistence model. + +The key is that *we don't update refcounts in senior memory.* +A pointer from an inner road to an outer road is not counted. +Also, the outmost, or `surface` road, is the only part of the +image that gets checkpointed. + +So the surface road contains the entire durable state of `u3`. +When we process an event, or perform any kind of complicated or +interesting calculation, *we process it in an inner road*. If +its results are saved, they need to be copied. + +Since processing in an inner road does not touch surface memory, +(a) we can leave the surface road in a read-only state and not +mark its pages dirty; (b) we can abort an inner calculation +without screwing up the surface; and (c) because inner results +are copied onto the surface, the surface doesn't get fragmented. + +All of (a), (b) and (c) are needed for checkpointing to be easy. +It might be tractable otherwise, but easy is even better. + +Moreover, while the surface is most definitely single-threaded, +we could easily run multiple threads in multiple inner roads +(as long as the threads don't have pointers into each others' +memory, which they obviously shouldn't). + +Moreover, in future, we'll experiment more with adding road +control hints to the programmer's toolbox. Reference counting is +expensive. We hypothesize that in many - if not most - cases, +the programmer can identify procedural structures whose garbage +should be discarded in one step by copying the results. Then, +within the procedure, we can switch the allocator into `sand` +mode, and stop tracking references at all. + +### u3: rules for C programming + +There are two levels at which we program in C: (1) above the +interpreter; (2) within the interpreter or jets. These have +separate rules which need to be respected. + +### u3: rules above the interpreter + +In its relations with Unix, Urbit follows a strict rule of "call +me, I won't call you." We do of course call Unix system calls, +but only for the purpose of actually computing. + +Above Urbit, you are in a normal C/Unix programming environment +and can call anything in or out of Urbit. Note that when using +`u3`, you're always on the surface road, which is not thread-safe +by default. Generally speaking, `u3` is designed to support +event-oriented, single-threaded programming. + +If you need threads which create nouns, you could use +`u3m_hate()` and `u3m_love()` to run these threads in subroads. +You'd need to make the global road pointer, `u3R`, a thread-local +variable instead. This seems perfectly practical, but we haven't +done it because we haven't needed to. + +### u3: rules within the interpreter + +Within the interpreter, your code can run either in the surface +road or in a deep road. You can test this by testing + + (&u3H->rod_u == u3R) + +ie: does the pier's home road equal the current road pointer? + +Normally in this context you assume you're obeying the rules of +running on an inner road, ie, "deep memory." Remember, however, +that the interpreter *can* run on surface memory - but anything +you can do deep, you can do on the surface. The converse is by +no means the case. + +In deep memory, think of yourself as if in a signal handler. +Your execution context is extremely fragile and may be terminated +without warning or cleanup at any time (for instance, by ^C). + +For instance, you can't call `malloc` (or C++ `new`) in your C +code, because you don't have the right to modify data structures +at the global level, and will leave them in an inconsistent state +if your inner road gets terminated. (Instead, use our drop-in +replacements, `u3a_malloc()`, `u3a_free()`, `u3a_realloc()`.) + +A good example is the different meaning of `u3_assert()` inside +and outside the interpreter. At either layer, you can use +regular assert(), which will just kill your process. On the +surface, `u3_assert()` will just... kill your process. + +In deep execution, `u3_assert()` will issue an exception that +queues an error event, complete with trace stack, on the Arvo +event queue. Let's see how this happens. + +### u3: exceptions + +You produce an exception with + + /* u3m_bail(): bail out. Does not return. + ** + ** Bail motes: + ** + ** %exit :: semantic failure + ** %evil :: bad crypto + ** %intr :: interrupt + ** %fail :: execution failure + ** %foul :: assert failure + ** %need :: network block + ** %meme :: out of memory + ** %time :: timed out + ** %oops :: assertion failure + */ + c3_i + u3m_bail(c3_m how_m); + +Broadly speaking, there are two classes of exception: internal +and external. An external exception begins in a Unix signal +handler. An internal exception begins with a call to longjmp() +on the main thread. + +There are also two kinds of exception: mild and severe. An +external exception is always severe. An internal exception is +normally mild, but some (like `c3__oops`, generated by +`u3_assert()`) are severe. + +Either way, exceptions come with a stack trace. The `u3` nock +interpreter is instrumented to retain stack trace hints and +produce them as a printable `(list tank)`. + +Mild exceptions are caught by the first virtualization layer and +returned to the caller, following the behavior of the Nock +virtualizer `++mock` (in `hoon.hoon`) + +Severe exceptions, or mild exceptions at the surface, terminate +the entire execution stack at any depth and send the cumulative +trace back to the `u3` caller. + +For instance, `vere` uses this trace to construct a `%crud` +event, which conveys our trace back toward the Arvo context where +it crashed. This lets any UI component anywhere, even on a +remote node, render the stacktrace as a consequence of the user's +action - even if its its direct cause was (for instance) a Unix +SIGINT or SIGALRM. + +### u3: C structures on the loom + +Normally, all data on the loom is nouns. Sometimes we break this +rule just a little, though - eg, in the `u3h` hashtables. + +To point to non-noun C structs on the loom, we use a `u3_post`, +which is just a loom word offset. A macro lets us declare this +as if it was a pointer: + + typedef c3_w u3_post; + #define u3p(type) u3_post + +Some may regard this as clever, others as pointless. Anyway, use +`u3to()` and `u3of()` to convert to and from pointers. + +When using C structs on the loom - generally a bad idea - make +sure anything which could be on the surface road is structurally +portable, eg, won't change size when the pointer size changes. +(Note also: we consider little-endian, rightly or wrongly, to +have won the endian wars.) + +## u3: API overview by prefix + +Let's run through the `u3` modules one by one. All public +functions are commented, but the comments may be cryptic. + +### u3m: main control + +To start `u3`, run + + /* u3m_boot(): start the u3 system. + */ + void + u3m_boot(c3_o nuu_o, c3_o bug_o, c3_c* dir_c); + +`nuu_o` is `c3y` (yes, `0`) if you're creating a new pier, +`c3n` (no, `1`) if you're loading an existing one. `bug_o` +is `c3y` if you want to test the garbage-collector, `c3n` +otherwise. `dir_c` is the directory for the pier files. + +`u3m_boot()` expects an `urbit.pill` file to load the kernel +from. This is specified with the -B commandline option. + +Any significant computation with nouns, certainly anything Turing +complete, should be run (a) virtualized and (b) in an inner road. +These are slightly different things, but at the highest level we +bundle them together for your convenience, in `u3m_soft()`: + + /* u3m_soft(): system soft wrapper. unifies unix and nock errors. + ** + ** Produces [%$ result] or [%error (list tank)]. + */ + u3_noun + u3m_soft(c3_w sec_w, u3_funk fun_f, u3_noun arg); + +`sec_w` is the number of seconds to time out the computation. +`fun_f` is a C function accepting `arg`. + +The result of `u3m_soft()` is a cell whose head is an atom. If +the head is `%$` - ie, `0` - the tail is the result of +`fun_f(arg)`. Otherwise, the head is a `term` (an atom which is +an LSB first string), and the tail is a `(list tank)` (a list of +`tank` printables - see `++tank` in `hoon.hoon`). Error terms +should be the same as the exception terms above. + +If you're confident that your computation won't fail, you can +use `u3m_soft_sure()`, `u3m_soft_slam()`, or `u3m_soft_nock()` +for C functions, Hoon function calls, and Nock invocations. +Caution - this returns just the result, and asserts globally. + +All the `u3m_soft` functions above work *only on the surface*. +Within the surface, virtualize with `u3m_soft_run()`. Note that +this takes a `fly` (a namespace gate), thus activating the `11` +super-operator in the nock virtualizer, `++mock`. When actually +using the `fly`, call `u3m_soft_esc()`. Don't do either unless +you know what you're doing! + +For descending into a subroad *without* Nock virtualization, +use `u3m_hate()` and `u3m_love` respectively. Hating enters +a subroad; loving leaves it, copying out a product noun. + +Other miscellaneous tools in `u3m`: `u3m_file()` loads a Unix +file as a Nock atom; `u3m_water()` measures the boundaries of +the loom in current use (ie, watermarks); and a variety of +prettyprinting routines, none perfect, are available, mainly for +debugging printfs: `u3m_pretty()`, `u3m_p()`, `u3m_tape()` and +`u3m_wall()`. + +It's sometimes nice to run a mark-and-sweep garbage collector, +`u3m_grab()`, which collects the world from a list of roots, +and asserts if it finds any leaks or incorrect refcounts. This +tool is for debugging and long-term maintenance only; refcounts +should never err. + +### u3j: jets + +The jet system, `u3j`, is what makes `u3` and `nock` in any sense +a useful computing environment. Except perhaps `u3a` (there is +really no such thing as a trivial allocator, though `u3a` is +dumber than most) - `u3j` is the most interesting code in `u3`. + +Let's consider the minor miracle of driver-to-battery binding +which lets `u3j` work - and decrement not be `O(n)` - without +violating the precisely defined semantics of pure Nock, *ever*. + +It's easy to assume that jets represent an architectural coupling +between Hoon language semantics and Nock interpreter internals. +Indeed such a coupling would be wholly wrongtious and un-Urbit. +But the jet system is not Hoon-specific. It is specific to nock +runtime systems that use a design pattern we call a `core`. + +#### u3j: core structure + +A core is no more than a cell `[code data]`, in which a `code` is +either a Nock formula or a cell of `code`s, and `data` is anything. +In a proper core, the subject each formula expects is the core +itself. + +Except for the arbitrary decision to make a core `[code data]`, +(or as we sometimes say, `[battery payload]`), instead of `[data +code]`, any high-level language transforming itself to Nock would +use this design. + +So jets are in fact fully general. Broadly speaking, the jet +system works by matching a C *driver* to a battery. When the +battery is invoked with Nock operator `9`, it must be found in +associative memory and linked to its driver. Then we link the +formula axis of the operation (`a` in `[9 a b]`) to a specific +function in the driver. + +To validate this jet binding, we need to know two things. One, +we need to know the C function actually is a perfect semantic +match for the Nock formula. This can be developed with driver +test flags, which work, and locked down with a secure formula +hash in the driver, which we haven't bothered with just yet. +(You could also try to develop a formal method for verifying +that C functions and Nock formulas are equivalent, but this is +a research problem for the future.) + +Two, we need to validate that the payload is appropriate for the +battery. We should note that jets are a Nock feature and have no +reference to Hoon. A driver which relies on the Hoon type system +to only pair it with valid payloads is a broken driver, and +breaks the Nock compliance of the system as a whole. So don't. + +Now, a casual observer might look at `[battery payload]` and +expect the simplest case of it to be `[formula subject]`. That +is: to execute a simple core whose battery is a single formula, +we compute + + nock(+.a -.a) + +Then, naturally, when we go from Hoon or a high-level language +containing functions down to Nock, `[function arguments]` turns +into `[formula subject]`. This seems like an obvious design, and +we mention it only because it is *completely wrong*. + +Rather, to execute a one-armed core like the above, we run + + nock(a -.a) + +and the normal structure of a `gate`, which is simply Urbitese +for "function," is: + + [formula [sample context]] + +where `sample` is Urbitese for "arguments" - and `context`, any +Lisper will at once recognize, is Urbitese for "environment." + +To `slam` or call the gate, we simply replace the default sample +with the caller's data, then nock the formula on the entire gate. + +What's in the context? Unlike in most dynamic languages, it is +not some secret system-level bag of tricks. Almost always it is +another core. This onion continues until at the bottom, there is +an atomic constant, conventionally is the kernel version number. + +Thus a (highly desirable) `static` core is one of the form + + [battery constant] + [battery static-core] + +ie, a solid stack of nested libraries without any dynamic data. +The typical gate will thus be, for example, + + [formula [sample [battery battery battery constant]]] + +but we would be most foolish to restrict the jet mechanism to +cores of this particular structure. We cannot constrain a +payload to be `[sample static-core]`, or even `[sample core]`. +Any such constraint would not be rich enough to handle Hoon, +let alone other languages. + +#### u3j: jet state + +There are two fundamental rules of computer science: (1) every +system is best understood through its state; (2) less state is +better than more state. Sadly, a pier has three different jet +state systems: `cold`, `warm` and `hot`. It needs all of them. + +Hot state is associated with this particular Unix process. The +persistent pier is portable not just between process and process, +but machine and machine or OS and OS. The set of jets loaded +into a pier may itself change (in theory, though not in the +present implementation) during the lifetime of the process. Hot +state is a pure C data structure. + +Cold state is associated with the logical execution history of +the pier. It consists entirely of nouns and ignores restarts. + +Warm state contains all dependencies between cold and hot +state. It consists of C structures allocated on the loom. + +Warm state is purely a function of cold and hot states, and +we can wipe and regenerate it at any time. On any restart where +the hot state might have changed, we clear the warm state +with `u3j_ream()`. + +There is only one hot state, the global jet dashboard +`u3j_Dash` or `u3D` for short. In the present implementation, +u3D is a static structure not modified at runtime, except for +numbering itself on process initialization. This structure - +which embeds function pointers to all the jets - is defined +in `j/tree.c`. The data structures: + + /* u3j_harm: driver arm. + */ + typedef struct _u3j_harm { + c3_c* fcs_c; // `.axe` or name + u3_noun (*fun_f)(u3_noun); // compute or 0 / semitransfer + c3_o ice; // perfect (don't test) + c3_o tot; // total (never punts) + c3_o liv; // live (enabled) + } u3j_harm; + + /* u3j_core: C core driver. + */ + typedef struct _u3j_core { + c3_c* cos_c; // control string + struct _u3j_harm* arm_u; // blank-terminated static list + struct _u3j_core* dev_u; // blank-terminated static list + struct _u3j_core* par_u; // dynamic parent pointer + c3_l jax_l; // dynamic jet index + } u3j_core; + + /* u3e_dash, u3_Dash, u3D: jet dashboard singleton + */ + typedef struct _u3e_dash { + u3j_core* dev_u; // null-terminated static list + c3_l len_l; // ray_u filled length + c3_l all_l; // ray_u allocated length + u3j_core* ray_u; // dynamic driver array + } u3j_dash; + +Warm and cold state is *per road*. In other words, as we nest +roads, we also nest jet state. The jet state in the road is: + + struct { // jet dashboard + u3p(u3h_root) har_p; // warm state + u3_noun das; // cold state + } jed; + +In case you understand Hoon, `das` (cold state) is a `++dash`, +and `har_p` (warm state) is a map from battery to `++calx`: + + ++ bane ,@tas :: battery name + ++ bash ,@uvH :: label hash + ++ bosh ,@uvH :: local battery hash + ++ batt ,* :: battery + ++ calf :: + $: jax=,@ud :: hot core index + hap=(map ,@ud ,@ud) :: axis/hot arm index + lab=path :: label as path + jit=* :: arbitrary data + == :: + ++ calx (trel calf (pair bash cope) club) :: cached by battery + ++ clog (pair cope (map batt club)) :: identity record + ++ club (pair corp (map term nock)) :: battery pattern + ++ cope (trel bane axis (each bash noun)) :: core pattern + ++ core ,* :: core + ++ corp (each core batt) :: parent or static + ++ dash (map bash clog) :: jet system + +The driver index `jax` in a `++calx` is an index into `ray_u` in the +dashboard - ie, a pointer into hot state. This is why the warm +state has to be reset when we reload the pier in a new process. + +Why is jet state nested? Nock of course is a functional system, +so as we compute we don't explicitly create state. Jet state is +an exception to this principle (which works only because it can't +be semantically detected from Nock/Hoon) - but it can't violate +the fundamental rules of the allocation system. + +For instance, when we're on an inner road, we can't allocate on +an outer road, or point from an outer road to an inner. So if we +learn something - like a mapping from battery to jet - in the +inner road, we have to keep it in the inner road. + +Mitigating this problem, when we leave an inner road (with +`u3m_love()`), we call `u3j_reap()` to promote jet information in +the dying road. Reaping promotes anything we've learned about +any battery that either (a) already existed in the outer road, or +(b) is being saved to the outer road. + +#### u3j: jet binding + +Jet binding starts with a `%fast` hint. (In Hoon, this is +produced by the runes `~%`, for the general case, or `~/` +for simple functions.) To bind a jet, execute a formula of the +form: + + [10 [%fast clue-formula] core-formula] + +`core-formula` assembles the core to be jet-propelled. +`clue-formula` produces the hint information, or `++clue` +above, which we want to annotate it with. + +A clue is a triple of name, parent, and hooks: + + ++ clue (trel chum nock (list (pair term nock))) + +The name, or `++chum`, has a bunch of historical structure which +we don't need (cleaning these things up is tricky), but just gets +flattened into a term. + +The parent axis is a nock formula, but always reduces to a simple +axis, which is the address of this core's *parent*. Consider +again an ordinary gate + + [formula [sample context]] + +Typically the `context` is itself a library core, which itself +has a jet binding. If so, the parent axis of this gate is `7`. + +If the parent is already bound - and the parent *must* be already +bound, in this road or a road containing it - we can hook this core +bottom-up into a tree hierarchy. Normally the child core is +produced by an arm of the parent core, so this is not a problem - +we wouldn't have the child if we hadn't already made the parent. + +The clue also contains a list of *hooks*, named nock formulas on +the core. Usually these are arms, but they need not be. The +point is that we often want to call a core from C, in a situation +where we have no type or other source information. A common case +of this is a complex system in which we're mixing functions which +are jet-propelled with functions that aren't. + +In any case, all the information in the `%fast` hint goes to +`u3j_mine()`, which registers the battery in cold state (`das` in +`jed` in `u3R`), then warm state (`har_p` in `jed`). + +It's essential to understand that the `%fast` hint has to be, +well, fast - because we apply it whenever we build a core. For +instance, if the core is a Hoon gate - a function - we will call +`u3j_mine` every time the function is called. + +### u3j: the cold jet dashboard + +For even more fun, the jet tree is not actually a tree of +batteries. It's a tree of battery *labels*, where a label is +an [axis term] path from the root of the tree. (At the root, +if the core pattern is always followed properly, is a core whose +payload is an atomic constant, conventionally the Hoon version.) + +Under each of these labels, it's normal to have an arbitrary +number of different Nock batteries (not just multiple copies +of the same noun, a situation we *do* strive to avoid). For +instance, one might be compiled with debugging hints, one not. + +We might even have changed the semantics of the battery without +changing the label - so long as those semantics don't invalidate +any attached driver. + +et tree. For instance, it's normal to have +two equivalent Nock batteries at the same time in one pier: one +battery compiled with debugging hints, one not. + +Rather, the jet tree is a semantic hierarchy. The root of the +hierarchy is a constant, by convention the Hoon kernel version +because any normal jet-propelled core has, at the bottom of its +onion of libraries, the standard kernel. Thus if the core is + + [foo-battery [bar-battery [moo-battery 164]]] + +we can reverse the nesting to construct a hierarchical core +path. The static core + + 164/moo/bar/foo + +extends the static core `164/moo/bar` by wrapping the `foo` +battery (ie, in Hoon, `|%`) around it. With the core above, +you can compute `foo` stuff, `bar` stuff, and `moo` stuff. +Rocket science, not. + +Not all cores are static, of course - they may contain live data, +like the sample in a gate (ie, argument to a function). Once +again, it's important to remember that we track jet bindings not +by the core, which may not be static, but by the battery, which +is always static. + +(And if you're wondering how we can use a deep noun like a Nock +formula or battery as a key in a key-value table, remember +`mug_w`, the lazily computed short hash, in all boxed nouns.) + +In any case, `das`, the dashboard, is a map from `bash` to jet +location record (`++clog`). A `clog` in turn contains two kinds +of information: the `++cope`, or per-location noun; and a map of +batteries to a per-battery `++club`. + +The `cope` is a triple of `++bane` (battery name, right now just +a `term`); `++axis`, the axis, within *this* core, of the parent; +and `(each bash noun)`, which is either `[0 bash]` if the parent +is another core, or `[1 noun]`, for the constant noun (like +`164`) if there is no parent core. + +A `bash` is just the noun hash (`++sham`) of a `cope`, which +uniquely expresses the battery's hierarchical location without +depending on the actual formulas. + +The `club` contains a `++corp`, which we use to actually validate +the core. Obviously jet execution has to be perfectly compatible +with Nock. We search on the battery, but getting the battery +right is not enough - a typical battery is dependent on its +context. For example, your jet-propelled library function is +very likely to call `++dec` or other advanced kernel technology. +If you've replaced the kernel in your context with something +else, we need to detect this and not run the jet. + +There are two cases for a jet-propelled core - either the entire +core is a static constant, or it isn't. Hence the definition +of `corp`: + + ++ corp (each core batt) :: parent or static + +Ie, a `corp` is `[0 core]` or `[1 batt]`. If it's static - +meaning that the jet only works with one specific core, ie, the +parent axis of each location in the hierarchy is `3` - we can +validate with a single comparison. Otherwise, we have to recurse +upward by checking the parent. + +Note that there is at present no way to force a jet to depend on +static *data*. + +### u3j: the warm jet dashboard + +We don't use the cold state to match jets as we call them. We +use the cold state to register jets as we find them, and also to +rebuild the warm state after the hot state is reset. + +What we actually use at runtime is the warm state, `jed->har_p`, +which is a `u3h` (built-in hashtable), allocated on the loom, +from battery to `++calx`. + +A `calx` is a triple of a `++calf`, a `[bash cope]` cell, and a +`club`. The latter two are all straight from cold state. + +The `calf` contains warm data dependent on hot state. It's a +quadruple: of `jax`, the hot driver index (in `ray_u` in +`u3j_dash`); `hap`, a table from arm axis (ie, the axis of each +formula within the battery) to driver arm index (into `arm_u` in +`u3j_core`); `lab`, the complete label path; and `jit`, any +other dynamic data that may speed up execution. + +We construct `hap`, when we create the calx, by iterating through +the arms registered in the `u3j_core`. Note the way a `u3j_harm` +declares itself, with the string `fcs_c` which can contain either +an axis or a name. Most jetted cores are of course gates, which +have one formula at one axis within the core: `fcs_c` is `".3"`. + +But we do often have fast cores with more complex arm structure, +and it would be sad to have to manage their axes by hand. To use +an `fcs_c` with a named arm, it's sufficient to make sure the +name is bound to a formula `[0 axis]` in the hook table. + +`jit`, as its name suggests, is a stub where any sort of +optimization data computed on battery registration might go. To +use it, fill in the `_cj_jit()` function. + +### u3j: the hot dashboard + +Now it should be easy to see how we actually invoke jets. Every +time we run a nock `9` instruction (pretty often, obviously), we +have a core and an axis. We pass these to `u3j_kick()`, which +will try to execute them. + +Because nouns with a reference count of 1 are precious, +`u3j_kick()` has a tricky reference control definition. It +reserves the right to return `u3_none` in the case where there is +no driver, or the driver does not apply for this case; in this +case, it retains argument `cor`. If it succeeds, though, it +transfers `cor`. + +`u3j_kick()` searches for the battery (always the head of the +core, of course) in the hot dashboard. If the battery is +registered, it searches for the axis in `hap` in the `calx`. +If it exists, the core matches a driver and the driver jets this +arm. If not, we return `u3_none`. + +Otherwise, we call `fun_f` in our `u3j_harm`. This obeys the +same protocol as `u3j_kick()`; it can refuse to function by +returning `u3_none`, or consume the noun. + +Besides the actual function pointer `fun_f`, we have some flags +in the `u3j_harm` which tell us how to call the arm function. + +If `ice` is yes (`&`, `0`), the jet is known to be perfect and we +can just trust the product of `fun_f`. Otherwise, we need to run +*both* the Nock arm and `fun_f`, and compare their results. + +(Note that while executing the C side of this test, we have to +set `ice` to yes; on the Nock side, we have to set `liv` to no. +Otherwise, many non-exponential functions become exponential. +When auto-testing jets in this way, the principle is that the +test is on the outermost layer of recursion.) + +(Note also that anyone who multi-threads this execution +environment has a slight locking problem with these flags if arm +testing is multi-threaded.) + +If `tot` is yes, (`&`, `0`), the arm function is *total* and has +to return properly (though it can still return *u3_none*). +Otherwise, it is *partial* and can `u3_cm_bail()` out with +c3__punt. This feature has a cost: the jet runs in a subroad. + +Finally, if `liv` is no (`|`, 1), the jet is off and doesn't run. + +It should be easy to see how the tree of cores gets declared - +precisely, in `j/dash.c`. We declare the hierarchy as a tree +of `u3j_core` structures, each of which comes with a static list +of arms `arm_u` and sub-cores `dev_u`. + +In `u3j_boot()`, we traverse the hierarchy, fill in parent +pointers `par_u`, and enumerate all `u3j_core` structures +into a single flat array `u3j_dash.ray_u`. Our hot state +then appears ready for action. + +### u3j: jet functions + +At present, all drivers are compiled statically into `u3`. This is +not a long-term permanent solution or anything. However, it will +always be the case with a certain amount of core functionality. + +For instance, there are some jet functions that we need to call +as part of loading the Arvo kernel - like `++cue` to unpack a +noun from an atom. And obviously it makes sense, when jets are +significant enough to compile into `u3`, to export their symbols +in headers and the linker. + +There are three interface prefixes for standard jet functions: +`u3k`, `u3q`, and `u3w`. All jets have `u3w` interfaces; most +have `u3q`; some have `u3k`. Of course the actual logic is +shared. + +`u3w` interfaces use the same protocol as `fun_f` above: the +caller passes the entire core, which is retained if the function +returns `u3_none`, transferred otherwise. Why? Again, use +counts of 1 are special and precious for performance hackers. + +`u3q` interfaces break the core into C arguments, *retain* noun +arguments, and *transfer* noun returns. `u3k` interfaces are the +same, except with more use of `u3_none` and other simple C +variations on the Hoon original, but *transfer* both arguments +and returns. Generally, `u3k` are most convenient for new code. + +Following `u3k/q/w` is `[a-f]`, corresponding to the 6 logical +tiers of the kernel, or `g` for user-level jets. Another letter +is added for functions within subcores. The filename, under +`j/`, follows the tier and the function name. + +For instance, `++add` is `u3wa_add(cor)`, `u3qa_add(a, b)`, or +`u3ka_add(a, b)`, in `j/a/add.c`. `++get` in `++by` is +`u3wdb_get(cor)`, `u3kdb_get(a, b)`, etc, in `j/d/by_get.c`. + +For historical reasons, all internal jet code in `j/[a-f]` +*retains* noun arguments, and *transfers* noun results. Please +do not do this in new `g` jets! The new standard protocol is to +transfer both arguments and results. + +### u3a: allocation functions + +`u3a` allocates on the current road (u3R). Its internal +structures are uninteresting and typical of a naive allocator. + +The two most-used `u3a` functions are `u3a_gain()` to add a +reference count, and `u3a_lose()` to release one (and free the +noun, if the use count is zero). For convenience, `u3a_gain()` +returns its argument. The pair are generally abbreviated with +the macros `u3k()` and `u3z()` respectively. + +Normally we create nouns through `u3i` functions, and don't call +the `u3a` allocators directly. But if you do: + +One, there are *two* sets of allocators: the word-aligned +allocators and the fully-aligned (ie, malloc compatible) +allocators. For instance, on a typical OS X setup, malloc +produces 16-byte aligned results - needed for some SSE +instructions. + +These allocators are *not compatible*. For 32-bit alignment +as used in nouns, call + + /* u3a_walloc(): allocate storage measured in words. + */ + void* + u3a_walloc(c3_w len_w); + + /* u3a_wfree(): free storage. + */ + void + u3a_wfree(void* lag_v); + + /* u3a_wealloc(): word realloc. + */ + void* + u3a_wealloc(void* lag_v, c3_w len_w); + +For full alignment, call: + + /* u3a_malloc(): aligned storage measured in bytes. + */ + void* + u3a_malloc(size_t len_i); + + /* u3a_realloc(): aligned realloc in bytes. + */ + void* + u3a_realloc(void* lag_v, size_t len_i); + + /* u3a_realloc2(): gmp-shaped realloc. + */ + void* + u3a_realloc2(void* lag_v, size_t old_i, size_t new_i); + + /* u3a_free(): free for aligned malloc. + */ + void + u3a_free(void* tox_v); + + /* u3a_free2(): gmp-shaped free. + */ + void + u3a_free2(void* tox_v, size_t siz_i); + +There are also a set of special-purpose allocators for building +atoms. When building atoms, please remember that it's incorrect +to have a high 0 word - the word length in the atom structure +must be strictly correct. + +Of course, we don't always know how large our atom will be. +Therefore, the standard way of building large atoms is to +allocate a block of raw space with `u3a_slab()`, then chop off +the end with `u3a_malt()` (which does the measuring itself) +or `u3a_mint()` in case you've measured it yourself. + +Once again, *do not call `malloc()`* (or C++ `new`) within any +code that may be run within a jet. This will cause rare sporadic +corruption when we interrupt execution within a `malloc()`. We'd +just override the symbol, but `libuv` uses `malloc()` across +threads within its own synchronization primitives - for this to +work with `u3a_malloc()`, we'd have to introduce our own locks on +the surface-level road (which might be a viable solution). + +### u3n: nock execution + +The `u3n` routines execute Nock itself. On the inside, they have +a surprising resemblance to the spec proper (the only interesting +detail is how we handle tail-call elimination) and are, as one +would expect, quite slow. (There is no such thing as a fast tree +interpreter.) + +There is only one Nock, but there are lots of ways to call it. +(Remember that all `u3n` functions *transfer* C arguments and +returns.) + +The simplest interpreter, `u3n_nock_on(u3_noun bus, u3_noun fol)` +invokes Nock on `bus` (the subject) and `fol` (the formula). +(Why is it`[subject formula]`, not `[formula subject]`? The same +reason `0` is true and `1` is false.) + +A close relative is `u3n_slam_on(u3_noun gat, u3_noun sam)`, +which slams a *gate* (`gat`) on a sample (`sam`). (In a normal +programming language which didn't talk funny and was retarded, +`u3n_slam_on()` would call a function on an argument.) We could +write it most simply as: + + u3_noun + u3n_slam_on(u3_noun gat, u3_noun sam) + { + u3_noun pro = u3n_nock_on + (u3nc(u3k(u3h(gat)), + u3nc(sam, u3k(u3t(u3t(gat))))), + u3k(u3h(gat))); + u3z(gat); + return pro; + } + +Simpler is `u3n_kick_on(u3_noun gat)`, which slams a gate (or, +more generally, a *trap* - because sample structure is not even +needed here) without changing its sample: + + u3_noun + u3n_kick_on(u3_noun gat, u3_noun sam) + { + return u3n_nock_on(gat, u3k(u3h(gat))); + } + +The `_on` functions in `u3n` are all defined as pure Nock. But +actually, even though we say we don't extend Nock, we do. But we +don't. But we do. + +Note that `u3` has a well-developed error handling system - +`u3m_bail()` to throw an exception, `u3m_soft_*` to catch one. +But Nock has no exception model at all. That's okay - all it +means if that if an `_on` function bails, the exception is an +exception in the caller. + +However, `u3`'s exception handling happens to match a convenient +virtual super-Nock in `hoon.hoon`, the infamous `++mock`. Of +course, Nock is slow, and `mock` is Nock in Nock, so it is +(logically) super-slow. Then again, so is decrement. + +With the power of `u3`, we nest arbitrary layers of `mock` +without any particular performance cost. Moreover, we simply +treat Nock proper as a special case of `mock`. (More precisely, +the internal VM loop is `++mink` and the error compiler is +`++mook`. But we call the whole sandbox system `mock`.) + +The nice thing about `mock` functions is that (by executing +within `u3m_soft_run()`, which as you may recall uses a nested +road) they provide both exceptions and the namespace operator - +`.^` in Hoon, which becomes operator `11` in `mock`. + +`11` requires a namespace function, or `fly`, which produces a +`++unit` - `~` (`0`) for no binding, or `[0 value]`. The sample +to a `fly` is a `++path`, just a list of text `span`. + +`mock` functions produce a `++toon`. Fully elaborated: + + ++ noun ,* :: any noun + ++ path (list ,@ta) :: namespace path + ++ span ,@ta :: text-atom (ASCII) + ++ toon $% [%0 p=noun] :: success + [%1 p=(list path)] :: blocking paths + [%2 p=(list tank)] :: stack trace + == :: + ++ tank :: printable + $% [%leaf p=tape] :: flat text + $: %palm :: backstep list + p=[p=tape q=tape r=tape s=tape] :: mid cap open close + q=(list tank) :: contents + == :: + $: %rose :: straight list + p=[p=tape q=tape r=tape] :: mid open close + q=(list tank) :: contents + == :: + == + +(Note that `tank` is overdesigned and due for replacement.) + +What does a `toon` mean? Either your computation succeded (`[0 +noun]`, or could not finish because it blocked on one or more +global paths (`[1 (list path)]`), or it exited with a stack trace +(`[2 (list tank)]`). + +Note that of all the `u3` exceptions, only `%exit` is produced +deterministically by the Nock definition. Therefore, only +`%exit` produces a `2` result. Any other argument to +`u3m_bail()` will unwind the virtualization stack all the way to +the top - or to be more exact, to `u3m_soft_top()`. + +In any case, the simplest `mock` functions are `u3n_nock_un()` +and `u3n_slam_un()`. These provide exception control without +any namespace change, as you can see by the code: + + /* u3n_nock_un(): produce .*(bus fol), as ++toon. + */ + u3_noun + u3n_nock_un(u3_noun bus, u3_noun fol) + { + u3_noun fly = u3nt(u3nt(11, 0, 6), 0, 0); // |=(a=* .^(a)) + + return u3n_nock_in(fly, bus, fol); + } + + /* u3n_slam_un(): produce (gat sam), as ++toon. + */ + u3_noun + u3n_slam_un(u3_noun gat, u3_noun sam) + { + u3_noun fly = u3nt(u3nt(11, 0, 6), 0, 0); // |=(a=* .^(a)) + + return u3n_slam_in(fly, gat, sam); + } + +The `fly` is added as the first argument to `u3n_nock_in()` and +`u3n_slam_in()`. Of course, logically, `fly` executes in the +caller's exception layer. (Maintaining this illusion is slightly +nontrivial.) Finally, `u3n_nock_an()` is a sandbox with a null +namespace. + +### u3e: persistence + +The only `u3e` function you should need to call is `u3e_save()`, +which saves the loom. As it can be restored on any platform, +please make sure you don't have any state in the loom that is +bound to your process or architecture - except for exceptions +like the warm jet state, which is actively purged on reboot. + +### u3r: reading nouns (weak) + +As befits accessors they don't make anything, `u3r` noun reading +functions always retain their arguments and their returns. They +never bail; rather, when they don't work, they return a `u3_weak` +result. + +Most of these functions are straightforward and do only what +their comments say. A few are interesting enough to discuss. + +`u3r_at()` is the familiar tree fragment function, `/` from the +Nock spec. For taking complex nouns apart, `u3r_mean()` is a +relatively funky way of deconstructing nouns with a varargs list +of `axis`, `u3_noun *`. For cells, triples, etc, decompose with +`u3r_cell()`, `u3r_trel()`, etc. For the tagged equivalents, use +`u3r_pq()` and friends. + +`u3r_sing(u3_noun a, u3_noun b)` (true if `a` and `b` are a +*single* noun) are interesting because it uses mugs to help it +out. Clearly, different nouns may have the same mug, but the +same nouns cannot have a different mug. It's important to +understand the performance characteristics of `u3r_sing()`: +the worst possible case is a comparison of duplicate nouns, +which have the same value but were created separately. In this +case, the tree is traversed + +`u3r_sung()` is a deeply funky and frightening version of +`u3r_sing()` that unifies pointers to the duplicate nouns it +finds, freeing the second copy. Obviously, do not use +`u3r_sung()` when you have live, but not reference counted, noun +references from C - if they match a noun with a refcount of 1 +that gets freed, bad things happen. + +It's important to remember that `u3r_mug()`, which produces a +31-bit, nonzero insecure hash, uses the `mug_w` slot in any boxed +noun as a lazy cache. There are a number of variants of +`u3r_mug()` that can get you out of building unneeded nouns. + +### u3x: reading nouns (bail) + +`u3x` functions are like `u3r` functions, but instead of +returning `u3_none` when (for instance) we try to take the head +of an atom, they bail with `%exit`. In other words, they do what +the same operation would do in Nock. + +### u3h: hash tables. + +We can of course use the Hoon `map` structure as an associative +array. This is a balanced treap and reasonably fast. However, +it's considerably inferior to a custom structure like an HAMT +(hash array-mapped trie). We use `u3_post` to allocate HAMT +structures on the loom. + +(Our HAMT implements the classic Bagwell algorithm which depends +on the `gcc` standard directive `__builtin_popcount()`. On a CPU +which doesn't support popcount or an equivalent instruction, some +other design would probably be preferable.) + +There's no particular rocket science in the API. `u3h_new()` +creates a hashtable; `u3h_free()` destroys one; `u3h_put()` +inserts, `u3h_get()` retrieves. You can transform values in a +hashtable with `u3h_walk()`. + +The only funky function is `u3h_gut()`, which unifies keys with +`u3r_sung()`. As with all cases of `u3r_sung()`, this must be +used with extreme caution. + +### u3z: memoization + +Connected to the `~+` rune in Hoon, via the Nock `%memo` hint, +the memoization facility is a general-purpose cache. + +(It's also used for partial memoization - a feature that'll +probably be removed, in which conservative worklist algorithms +(which would otherwise be exponential) memoize everything in the +subject *except* the worklist. This is used heavily in the Hoon +compiler jets (j/f/*.c). Unfortunately, it's probably not +possible to make this work perfectly in that it can't be abused +to violate Nock, so we'll probably remove it at a later date, +instead making `++ut` keep its own monadic cache.) + +Each `u3z` function comes with a `c3_m` mote which disambiguates +the function mapping key to value. For Nock itself, use 0. For +extra speed, small tuples are split out in C; thus, find with + + u3_weak u3z_find(c3_m, u3_noun); + u3_weak u3z_find_2(c3_m, u3_noun, u3_noun); + u3_weak u3z_find_3(c3_m, u3_noun, u3_noun, u3_noun); + u3_weak u3z_find_4(c3_m, u3_noun, u3_noun, u3_noun, u3_noun); + +and save with + + u3_noun u3z_save(c3_m, u3_noun, u3_noun); + u3_noun u3z_save_2(c3_m, u3_noun, u3_noun, u3_noun); + u3_noun u3z_save_3(c3_m, u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3z_save_4(c3_m, u3_noun, u3_noun, u3_noun, u3_noun, u3_noun); + +where the value is the last argument. To eliminate duplicate +nouns, there is also + + u3_noun + u3z_uniq(u3_noun); + +`u3z` functions retain keys and transfer values. + +The `u3z` cache, built on `u3h` hashes, is part of the current +road, and goes away when it goes away. (In future, we may wish +to promote keys/values which outlive the road, as we do with jet +state.) There is no cache reclamation at present, so be careful. + +### u3t: tracing and profiling. + +TBD. + +### u3v: the Arvo kernel + +An Arvo kernel - or at least, a core that compiles with the Arvo +interface - is part of the global `u3` state. What is an Arvo +core? Slightly pseudocoded: + + ++ arvo + |% + ++ come |= [yen=@ ova=(list ovum) nyf=pone] :: 11 + ^- [(list ovum) _+>] + !! + ++ keep |= [now=@da hap=path] :: 4 + ^- (unit ,@da) + !! + ++ load |= [yen=@ ova=(list ovum) nyf=pane] :: 86 + ^- [(list ovum) _+>] + !! + ++ peek |= [now=@da path] :: 87 + ^- (unit) + !! + ++ poke |= [now=@da ovo=ovum] :: 42 + ^- [(list ovum) _+>] + !! + ++ wish |= txt=@ta :: 20 + ^- * + !! + -- + ++ card ,[p=@tas q=*] :: typeless card + ++ ovum ,[p=wire q=card] :: Arvo event + ++ wire path :: event cause + +This is the Arvo ABI in a very real sense. Arvo is a core with +these six arms. To use these arms, we hardcode the axis of the +formula (`11`, `4`, `86`, etc) into the C code that calls Arvo, +because otherwise we'd need type metadata - which we can get, by +calling Arvo. + +It's important to understand the Arvo event/action structure, or +`++ovum`. An `ovum` is a `card`, which is any `[term noun]` +cell, and a `++wire`, a `path` which indicates the location of +the event. At the Unix level, the `wire` corresponds to a system +module or context. For input events, this is the module that +caused the event; for output actions, it's the module that +performs the action. + +`++poke` sends Arvo an event `ovum`, producing a cell of action +ova and a new Arvo core. + +`++peek` dereferences the Arvo namespace. It takes a date and a +key, and produces `~` (`0`) or `[~ value]`. + +`++keep` asks Arvo the next time it wants to be woken up, for the +given `wire`. (This input will probably be eliminated in favor +of a single global timer.) + +`++wish` compiles a string of Hoon source. While just a +convenience, it's a very convenient convenience. + +`++come` and `++load` are used by Arvo to reset itself (more +precisely, to shift the Arvo state from an old kernel to a new +one); there is no need to call them from C. + +Now that we understand the Arvo kernel interface, let's look at +the `u3v` API. As usual, all the functions in `u3v` are +commented, but unfortunately it's hard to describe this API as +clean at present. The problem is that `u3v` remains design +coupled to the old `vere` event handling code written for `u2`. +But let's describe the functions you should be calling, assuming +you're not writing the next event system. There are only two. + +`u3v_wish(str_c)` wraps the `++wish` functionality in a cache +(which is read-only unless you're on the surface road). + +`u3v_do()` uses `wish` to provide a convenient interface for +calling Hoon kernel functions by name. Even more conveniently, +we tend to call `u3v_do()` with these convenient aliases: + + #define u3do(txt_c, arg) u3v_do(txt_c, arg) + #define u3dc(txt_c, a, b) u3v_do(txt_c, u3nc(a, b)) + #define u3dt(txt_c, a, b, c) u3v_do(txt_c, u3nt(a, b, c)) + #define u3dq(txt_c, a, b, c, d) u3v_do(txt_c, u3nt(a, b, c, d)) + diff --git a/vere/docker/Dockerfile b/vere/docker/Dockerfile new file mode 100644 index 0000000..7151534 --- /dev/null +++ b/vere/docker/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:3.17.1 +RUN apk update && apk add bash curl +ENV PATH="$PATH:/bin" +COPY get_urbit_code.sh /bin/get_urbit_code +COPY reset_urbit_code.sh /bin/reset_urbit_code +COPY start_urbit.sh /bin/start_urbit +COPY urbit /bin/ +EXPOSE 80/tcp +EXPOSE 34343/udp +VOLUME /urbit +WORKDIR /urbit +ENTRYPOINT ["/bin/start_urbit"] diff --git a/vere/docker/README.md b/vere/docker/README.md new file mode 100644 index 0000000..1cae449 --- /dev/null +++ b/vere/docker/README.md @@ -0,0 +1,135 @@ +# Official Urbit Docker Image + +This is the official Docker image for [Urbit](https://urbit.org). + +Urbit is a clean-slate OS and network for the 21st century. + +## Using + +To use this image, you should mount a volume with a keyfile, comet file, or +existing pier at `/urbit`, and map ports as described below. + +### Volume Mount + +This image expects a volume mounted at `/urbit`. This volume should initially +contain one of: +- A keyfile `.key` for a galaxy, star, planet, or moon. See the + setup instructions for information on + [obtaining a keyfile](https://urbit.org/getting-started/get-id). + - e.g. `sampel-palnet.key` for the planet `~sampel-palnet`. +- An empty file with the extension `.comet`. This will cause Urbit to boot a + comet in a pier named for the `.comet` file (less the extension). + - e.g. starting with an empty file `my-urbit-bot.comet` will result in Urbit + booting a comet into the pier `my-urbit-bot` under your volume. +- An existing pier as a directory ``. You can migrate an existing ship + to a new docker container in this way by placing its pier under the volume. + - e.g. if your ship is `sampel-palnet` then you likely have a directory + `sampel-palnet` whose path you pass to `./urbit` when starting. + [Move your pier](https://docs.urbit.org/user-manual/os/basics#moving-your-pier) + directory to the volume and then start the container. + +The first two options result in Urbit attempting to boot either the ship named +by the keyfile, or a comet. In both cases, after that boot is successful, the +`.key` or `.comet` file will be removed from the volume and the pier will take +its place. + +Therefore, it is safe to remove the Docker container and start a new container +which mounts the same volume (e.g. to upgrade the version of the Urbit binary +by running a newer image). It is also possible to stop the container and then +move the pier out of the Docker volume (e.g. to run it using an Urbit binary +directly). If you do this, make sure to delete the Docker volume after you move +your pier; if you launch a container using this same pier after moving it and +launching it elsewhere, you will likely need to perform a +[breach](https://docs.urbit.org/user-manual/id/guide-to-resets). + +### Ports + +The image includes `EXPOSE` directives for TCP port `80` and UDP port `34343`. +Port `80` is used for Urbit's HTTP interface for both Landscape and for +[API calls](https://docs.urbit.org/build-on-urbit/tools/js-libs/http-api-guide) +to the ship. Port `34343` is set by default to be used by +[Ames](https://docs.urbit.org/urbit-os/kernel/ames) for ship-to-ship communication. + +You can either pass the `-P` flag to docker to map ports directly to the +corresponding ports on the host, or map them individually with `-p` flags. For +local testing the latter is often convenient, for instance to remap port `80` to +an unprivileged port. + +For best performance, you must map the Ames UDP port to the *same* port on the +host. If you map to a different port Ames will not be able to make direct +connections and your network performance may suffer somewhat. Note that using +the same port is required for direct connections but is not by itself sufficient +for them. If you are behind a NAT router or the host is not on a public IP +address (or you are firewalled), you may not achieve direct connections +regardless. + +For this reason, you can force Ames to use a custom port. +`/bin/start-urbit --port=$AMES_PORT` can be passed as an argument to the +`docker start` command. Passing `/bin/start-urbit --port=13436` for example, +would use port `13436`. Note that you must pass the full script command +`/bin/start-urbit` in order to also pass arguments. If the script is omitted, +your container will not start. + +You can also set the http port using `--http-port=$HTTP_PORT`. Passing +`/bin/start-urbit --http-port=8085` for example, would use port `8085`. The +default http port is `8080`. + +### Variable Loom Size + +You can also set a variable loom size (Urbit memory size) using +`--loom=$LOOM_SIZE`. Passing `/bin/start-urbit --loom=32` for example, would set +up a 4GiB loom (`2^32 bytes = 4GiB`). The default loom size is `31` (2GiB). + +### Examples + +Creating a volume for `~sampel-palnet`: +``` +docker volume create sampel-palnet +``` + +Copying key to `~sampel-palnet`'s volume (assumes default Docker location): +``` +sudo cp ~/sampel-palnet.key /var/lib/docker/volumes/sampel-palnet/_data/sampel-palnet.key +``` + +Using that volume and launching `~sampel-palnet` on host port `8080` with Ames +talking on the default host port `34343`: +``` +docker run -d -p 8080:80 -p 34343:34343/udp --name sampel-palnet \ + --mount type=volume,source=sampel-palnet,destination=/urbit \ + tloncorp/vere +``` + +Using host port `8088` with Ames talking on host port `23232`: +``` +docker run -d -p 8088:80 -p 23232:23232/udp --name sampel-palnet \ + --mount type=volume,source=sampel-palnet,destination=/urbit \ + tloncorp/vere /bin/start-urbit --port=23232 +``` + +### Getting and resetting the Landscape `+code` + +This docker image includes tools for retrieving and resetting the Landscape +login code belonging to a ship, for programmatic use so the container does not +need a tty. These scripts can be called using `docker container exec`. + +Getting the code: +``` +$ docker container exec sampel-palnet /bin/get-urbit-code +sampel-sampel-sampel-sampel +``` + +Resetting the code: +``` +$ docker container exec sampel-palnet /bin/reset-urbit-code +OK +``` + +## Extending + +You likely do not want to extend this image. External applications which +interact with Urbit do so primarily via an HTTP API, which should be exposed as +described above. For containerized applications using Urbit, it is more +appropriate to use a container orchestration service such as Docker Compose or +Kubernetes to run Urbit alongside other containers which will interface with its +API. diff --git a/vere/docker/get_urbit_code.sh b/vere/docker/get_urbit_code.sh new file mode 100755 index 0000000..4873a04 --- /dev/null +++ b/vere/docker/get_urbit_code.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +code=$(curl -s -X POST -H "Content-Type: application/json" \ + -d '{ "source": { "dojo": "+code" }, "sink": { "stdout": null } }' \ + http://127.0.0.1:12321) + +# Trim newlines and double quotes. +echo "$code" | sed 's/\\n//' | tr -d '"' diff --git a/vere/docker/reset_urbit_code.sh b/vere/docker/reset_urbit_code.sh new file mode 100755 index 0000000..20af60d --- /dev/null +++ b/vere/docker/reset_urbit_code.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Sending `+hood/code %reset` to `dojo` resets the `+code`, but it requires +# interactive confirmation to do so. Obviously, we don't want to have to provide +# that confirmation, so we force reset the `+code` using +# `+hood/pass [%j %step ~]`, credit for which goes to ~wicdev-wisryt. +resp=$(curl -s -X POST -H "Content-Type: application/json" \ + -d '{ "source": { "dojo": "+hood/pass [%j %step ~]" }, "sink": { "app": "hood" } }' \ + http://127.0.0.1:12321) + +if [[ $? -eq 0 ]] +then + echo "OK" +else + echo "Curl error: $?" +fi diff --git a/vere/docker/start_urbit.sh b/vere/docker/start_urbit.sh new file mode 100755 index 0000000..809f2f1 --- /dev/null +++ b/vere/docker/start_urbit.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +set -eu + +# set defaults +amesPort="34343" +httpPort="80" +loom="31" +snap="2" + +# check args +for i in "$@" +do +case $i in + -p=*|--port=*) + amesPort="${i#*=}" + shift + ;; + --http-port=*) + httpPort="${i#*=}" + shift + ;; + --loom=*) + loom="${i#*=}" + shift + ;; + --snap-time=*) + snap="${i#*=}" + shift + ;; +esac +done + +# If the container is not started with the `-i` flag +# then STDIN will be closed and we need to start +# Urbit/vere with the `-t` flag. +ttyflag="" +if [ ! -t 0 ]; then + echo "Running with no STDIN" + ttyflag="-t" +fi + +# Check if there is a keyfile, if so boot a ship with its name, and then remove the key +if [ -e *.key ]; then + # Get the name of the key + keynames="*.key" + keys=( $keynames ) + keyname=''${keys[0]} + mv $keyname /tmp + + # Boot urbit with the key, exit when done booting + urbit $ttyflag -w $(basename $keyname .key) -k /tmp/$keyname -c $(basename $keyname .key) -p $amesPort -x --http-port $httpPort --loom $loom --snap-time $snap + + # Remove the keyfile for security + rm /tmp/$keyname + rm *.key || true +elif [ -e *.comet ]; then + cometnames="*.comet" + comets=( $cometnames ) + cometname=''${comets[0]} + rm *.comet + + urbit $ttyflag -c $(basename $cometname .comet) -p $amesPort -x --http-port $httpPort --loom $loom --snap-time $snap +fi + +# Find the first directory and start urbit with the ship therein +dirnames="*/" +dirs=( $dirnames ) +dirname=''${dirnames[0]} + +exec urbit $ttyflag -p $amesPort --http-port $httpPort --loom $loom $dirname --snap-time $snap diff --git a/vere/ext/avahi/build.zig b/vere/ext/avahi/build.zig new file mode 100644 index 0000000..a389a95 --- /dev/null +++ b/vere/ext/avahi/build.zig @@ -0,0 +1,810 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const expat_c = b.dependency("expat", .{ + .target = target, + .optimize = optimize, + }); + const expat = b.addStaticLibrary(.{ + .name = "expat", + .target = target, + .optimize = optimize, + .version = .{ + .major = 1, + .minor = 9, + .patch = 0, + }, + }); + expat.linkLibC(); + + const expat_cmake_config = b.addConfigHeader(.{ + .style = .{ + .cmake = expat_c.path("expat_config.h.cmake"), + }, + .include_path = "expat_config.h", + }, .{ + .PACKAGE_BUGREPORT = "https://github.com/libexpat/libexpat/issues", + .PACKAGE_NAME = "expat", + .PACKAGE_STRING = "expat 2.6.0", + .HAVE_GETPAGESIZE = 1, + .XML_CONTEXT_BYTES = 1, + .XML_DEV_URANDOM = 1, + .XML_GE = 1, + // + .BYTEORDER = 1234, + .PACKAGE_TARNAME = "expat-2.6.0.tar", + .PACKAGE_VERSION = "2.6.0", + .OFF_T = "long", + .SIZE_T = "unsigned", + }); + + expat.addConfigHeader(expat_cmake_config); + expat.addIncludePath(expat_c.path("lib")); + + expat.addCSourceFiles(.{ + .root = expat_c.path("lib"), + .files = &.{ + "xmlrole.c", + // "xmltok_ns.c", + "xmlparse.c", + "xmltok.c", + // "xmltok_impl.c", + }, + }); + + expat.installConfigHeader(expat_cmake_config); + expat.installHeadersDirectory(expat_c.path("lib"), "", .{ + .include_extensions = &.{ + "expat.h", + "expat_external.h", + }, + }); + + const dbus_c = b.dependency("dbus", .{ + .target = target, + .optimize = optimize, + }); + const dbus = b.addStaticLibrary(.{ + .name = "dbus-1", + .target = target, + .optimize = optimize, + .version = .{ + .major = 3, + .minor = 38, + .patch = 0, + }, + }); + dbus.linkLibC(); + dbus.linkLibrary(expat); + + dbus.root_module.addCMacro("HAVE_ERRNO_H", ""); + dbus.root_module.addCMacro("VERSION", "1.14.8"); + dbus.root_module.addCMacro("SOVERSION", "3.38.0"); + dbus.root_module.addCMacro("DBUS_DAEMON_NAME", "\"dbus\""); + dbus.root_module.addCMacro("DBUS_COMPILATION", ""); + dbus.root_module.addCMacro("DBUS_VA_COPY", "va_copy"); + dbus.root_module.addCMacro("DBUS_SESSION_BUS_CONNECT_ADDRESS", "\"autolaunch:\""); + dbus.root_module.addCMacro("DBUS_SYSTEM_BUS_DEFAULT_ADDRESS", "\"unix:tmpdir=/tmp\""); + dbus.root_module.addCMacro("DBUS_ENABLE_CHECKS", ""); + dbus.root_module.addCMacro("DBUS_ENABLE_ASSERT", ""); + dbus.root_module.addCMacro("HAVE_ALLOCA_H", ""); + dbus.root_module.addCMacro("_GNU_SOURCE", ""); + dbus.root_module.addCMacro("HAVE_SYSLOG_H", ""); + dbus.root_module.addCMacro("HAVE_SOCKLEN_T", ""); + dbus.root_module.addCMacro("HAVE_SYS_RANDOM_H", ""); + dbus.root_module.addCMacro("DBUS_UNIX", ""); + dbus.root_module.addCMacro("HAVE_GETPWNAM_R", ""); + + dbus.root_module.addCMacro("ENOMEM", "ERROR_NOT_ENOUGH_MEMORY"); + dbus.root_module.addCMacro("HAVE_STDINT_H", ""); + dbus.root_module.addCMacro("HAVE_SIGNAL_H", ""); + dbus.root_module.addCMacro("HAVE_GETPEEREID", ""); + + if (t.os.tag == .linux) { + dbus.root_module.addCMacro("HAVE_APPARMOR", ""); + dbus.root_module.addCMacro("HAVE_APPARMOR_2_10", ""); + dbus.root_module.addCMacro("HAVE_LIBAUDIT", ""); + dbus.root_module.addCMacro("HAVE_SELINUX", ""); + dbus.root_module.addCMacro("DBUS_HAVE_LINUX_EPOLL", ""); + } + + // dbus.root_module.addCMacro("DBUS_PREFIX", b.fmt("\"{s}\"", .{ + // b.install_prefix, + // })); + // dbus.root_module.addCMacro("DBUS_BINDIR", b.fmt("\"{s}\"", .{ + // b.getInstallPath(.bin, ""), + // })); + // dbus.root_module.addCMacro("DBUS_DATADIR", b.fmt("\"{s}\"", .{ + // b.getInstallPath(.prefix, "usr/share"), + // })); + dbus.root_module.addCMacro("DBUS_MACHINE_UUID_FILE", b.fmt("\"{s}\"", .{ + b.getInstallPath(.prefix, "lib/dbus/machine-id"), + })); + // dbus.root_module.addCMacro("DBUS_SYSTEM_CONFIG_FILE", b.fmt("\"{s}\"", .{ + // b.getInstallPath(.prefix, "usr/share/dbus-1/system.conf"), + // })); + // dbus.root_module.addCMacro("DBUS_SESSION_CONFIG_FILE", b.fmt("\"{s}\"", .{ + // b.getInstallPath(.prefix, "usr/share/dbus-1/session.conf"), + // })); + + // dbus.root_module.addCMacro("HAVE_CONFIG_H", ""); + // const dbus_config_h = b.addConfigHeader(.{ + // .style = .{ .autoconf = dbus_c.path("config.h.in") }, + // .include_path = "config.h", + // }, .{ + // .HAVE_ERRNO_H = "", + // .VERSION = "1.14.8", + // .DBUS_DAEMON_NAME = "\"dbus\"", + // .DBUS_VA_COPY = "va_copy", + // .DBUS_SESSION_BUS_CONNECT_ADDRESS = "\"autolaunch:\"", + // .DBUS_SYSTEM_BUS_DEFAULT_ADDRESS = "\"unix:tmpdir=/tmp\"", + // .HAVE_ALLOCA_H = "", + // ._GNU_SOURCE = "", + // .HAVE_SYSLOG_H = "", + // .HAVE_SOCKLEN_T = "", + // .HAVE_SYS_RANDOM_H = "", + // .DBUS_UNIX = "", + // .HAVE_GETPWNAM_R = "", + // .HAVE_STDINT_H = "", + // .HAVE_SIGNAL_H = "", + // .HAVE_GETPEEREID = "", + // .@"inline" = null, + // .AC_APPLE_UNIVERSAL_BUILD = null, + // .DBUS_BINDIR = null, + // .DBUS_BUILD_X11 = null, + // .DBUS_BUILT_R_DYNAMIC = null, + // .DBUS_BUS_ENABLE_INOTIFY = null, + // .DBUS_BUS_ENABLE_KQUEUE = null, + // .DBUS_CONSOLE_AUTH_DIR = null, + // .DBUS_CONSOLE_OWNER_FILE = null, + // .DBUS_CYGWIN = null, + // .DBUS_DAEMONDIR = null, + // .DBUS_DATADIR = null, + // .DBUS_DISABLE_ASSERT = null, + // .DBUS_DISABLE_CHECKS = null, + // .DBUS_ENABLE_EMBEDDED_TESTS = null, + // .DBUS_ENABLE_LAUNCHD = null, + // .DBUS_ENABLE_MODULAR_TESTS = null, + // .DBUS_ENABLE_STATS = null, + // .DBUS_ENABLE_VERBOSE_MODE = null, + // .DBUS_ENABLE_X11_AUTOLAUNCH = null, + // .DBUS_EXEEXT = null, + // .DBUS_GCOV_ENABLED = null, + // .DBUS_HAVE_LINUX_EPOLL = null, + // .DBUS_LIBEXECDIR = null, + // .DBUS_PREFIX = null, + // .DBUS_SESSION_SOCKET_DIR = null, + // .DBUS_SYSTEM_SOCKET = null, + // .DBUS_TEST_LAUNCH_HELPER_BINARY = null, + // .DBUS_TEST_SOCKET_DIR = null, + // .DBUS_TEST_USER = null, + // .DBUS_USER = null, + // .DBUS_USE_SYNC = null, + // .DBUS_WIN = null, + // .DBUS_WINCE = null, + // .DBUS_WITH_GLIB = null, + // .ENABLE_TRADITIONAL_ACTIVATION = null, + // .FD_SETSIZE = null, + // .GETTEXT_PACKAGE = null, + // .GLIB_VERSION_MAX_ALLOWED = null, + // .GLIB_VERSION_MIN_REQUIRED = null, + // .G_DISABLE_CHECKS = null, + // .HAVE_ACCEPT4 = null, + // .HAVE_ADT = null, + // .HAVE_APPARMOR = null, + // .HAVE_APPARMOR_2_10 = null, + // .HAVE_BACKTRACE = null, + // .HAVE_BYTESWAP_H = null, + // .HAVE_CLEARENV = null, + // .HAVE_CMSGCRED = null, + // .HAVE_CONSOLE_OWNER_FILE = null, + // .HAVE_CRT_EXTERNS_H = null, + // .HAVE_DDFD = null, + // .HAVE_DECL_ENVIRON = null, + // .HAVE_DECL_LOG_PERROR = null, + // .HAVE_DECL_MSG_NOSIGNAL = null, + // .HAVE_DIRENT_H = null, + // .HAVE_DIRFD = null, + // .HAVE_DLFCN_H = null, + // .HAVE_EXECINFO_H = null, + // .HAVE_FPATHCONF = null, + // .HAVE_GETGROUPLIST = null, + // .HAVE_GETPEERUCRED = null, + // .HAVE_GETRANDOM = null, + // .HAVE_GETRESUID = null, + // .HAVE_GETRLIMIT = null, + // .HAVE_GIO_UNIX = null, + // .HAVE_INOTIFY_INIT1 = null, + // .HAVE_INTTYPES_H = null, + // .HAVE_ISSETUGID = null, + // .HAVE_LIBAUDIT = null, + // .HAVE_LIBNSL = null, + // .HAVE_LOCALECONV = null, + // .HAVE_LOCALE_H = null, + // .HAVE_MINIX_CONFIG_H = null, + // .HAVE_MONOTONIC_CLOCK = null, + // .HAVE_NANOSLEEP = null, + // .HAVE_NSGETENVIRON = null, + // .HAVE_PIPE2 = null, + // .HAVE_POLL = null, + // .HAVE_PRCTL = null, + // .HAVE_PRLIMIT = null, + // .HAVE_RAISE = null, + // .HAVE_SELINUX = null, + // .HAVE_SETENV = null, + // .HAVE_SETLOCALE = null, + // .HAVE_SETRESUID = null, + // .HAVE_SETRLIMIT = null, + // .HAVE_SOCKETPAIR = null, + // .HAVE_STDIO_H = null, + // .HAVE_STDLIB_H = null, + // .HAVE_STRINGS_H = null, + // .HAVE_STRING_H = null, + // .HAVE_STRTOLL = null, + // .HAVE_STRTOULL = null, + // .HAVE_SYSTEMD = null, + // .HAVE_SYS_INOTIFY_H = null, + // .HAVE_SYS_PRCTL_H = null, + // .HAVE_SYS_RESOURCE_H = null, + // .HAVE_SYS_STAT_H = null, + // .HAVE_SYS_TIME_H = null, + // .HAVE_SYS_TYPES_H = null, + // .HAVE_SYS_UIO_H = null, + // .HAVE_UNISTD_H = null, + // .HAVE_UNIX_FD_PASSING = null, + // .HAVE_UNPCBID = null, + // .HAVE_UNSETENV = null, + // .HAVE_USLEEP = null, + // .HAVE_VISIBILITY = null, + // .HAVE_WCHAR_H = null, + // .HAVE_WRITEV = null, + // .HAVE_WS2TCPIP_H = null, + // .HAVE_X11 = null, + // .HAVE_XML_SETHASHSALT = null, + // .LT_OBJDIR = null, + // .NDEBUG = null, + // .PACKAGE = null, + // .PACKAGE_BUGREPORT = null, + // .PACKAGE_NAME = null, + // .PACKAGE_STRING = null, + // .PACKAGE_TARNAME = null, + // .PACKAGE_URL = null, + // .PACKAGE_VERSION = null, + // .SIZEOF_CHAR = null, + // .SIZEOF_INT = null, + // .SIZEOF_LONG = null, + // .SIZEOF_LONG_LONG = null, + // .SIZEOF_SHORT = null, + // .SIZEOF_VOID_P = null, + // .SIZEOF___INT64 = null, + // .STDC_HEADERS = null, + // .TEST_LISTEN = null, + // .WITH_VALGRIND = null, + // .WORDS_BIGENDIAN = null, + // ._ALL_SOURCE = null, + // ._BSD_SOURCE = null, + // ._DARWIN_C_SOURCE = null, + // ._FILE_OFFSET_BITS = null, + // ._HPUX_ALT_XOPEN_SOCKET_API = null, + // ._LARGE_FILES = null, + // ._MINIX = null, + // ._NETBSD_SOURCE = null, + // ._OPENBSD_SOURCE = null, + // ._POSIX_1_SOURCE = null, + // ._POSIX_C_SOURCE = null, + // ._POSIX_PTHREAD_SEMANTICS = null, + // ._POSIX_SOURCE = null, + // ._TANDEM_SOURCE = null, + // ._WIN32_WCE = null, + // ._WIN32_WINNT = null, + // ._XOPEN_SOURCE = null, + // .__EXTENSIONS__ = null, + // .__STDC_WANT_IEC_60559_ATTRIBS_EXT__ = null, + // .__STDC_WANT_IEC_60559_BFP_EXT__ = null, + // .__STDC_WANT_IEC_60559_DFP_EXT__ = null, + // .__STDC_WANT_IEC_60559_FUNCS_EXT__ = null, + // .__STDC_WANT_IEC_60559_TYPES_EXT__ = null, + // .__STDC_WANT_LIB_EXT2__ = null, + // .__STDC_WANT_MATH_SPEC_FUNCS__ = null, + // }); + + const dbus_config_h = b.addConfigHeader(.{ + .style = .blank, + .include_path = "config.h", + }, .{}); + + const dbus_arch_deps_h = b.addConfigHeader( + .{ + .style = .{ .cmake = dbus_c.path("dbus/dbus-arch-deps.h.in") }, + .include_path = "dbus/dbus-arch-deps.h", + }, + .{ + .DBUS_VERSION = "1.14.10", + .DBUS_MAJOR_VERSION = "1", + .DBUS_MINOR_VERSION = "14", + .DBUS_MICRO_VERSION = "10", + .DBUS_INT64_TYPE = "long long", + .DBUS_INT32_TYPE = "int", + .DBUS_INT16_TYPE = "short", + .DBUS_SIZEOF_VOID_P = "sizeof (void*)", + .DBUS_INT64_CONSTANT = "(val##LL)", + .DBUS_UINT64_CONSTANT = "(val##ULL)", + }, + ); + + dbus.addConfigHeader(dbus_config_h); + dbus.addConfigHeader(dbus_arch_deps_h); + + dbus.addIncludePath(dbus_c.path("")); + dbus.addIncludePath(dbus_c.path("dbus")); + + dbus.addCSourceFiles(.{ + .root = dbus_c.path("dbus"), + .files = &.{ + // DBUS_LIB_SOURCES + "dbus-address.c", + "dbus-auth.c", + "dbus-bus.c", + "dbus-connection.c", + "dbus-credentials.c", + "dbus-errors.c", + "dbus-keyring.c", + "dbus-marshal-header.c", + "dbus-marshal-byteswap.c", + "dbus-marshal-recursive.c", + "dbus-marshal-validate.c", + "dbus-message.c", + "dbus-misc.c", + "dbus-nonce.c", + "dbus-object-tree.c", + "dbus-pending-call.c", + "dbus-resources.c", + "dbus-server.c", + "dbus-server-socket.c", + "dbus-server-debug-pipe.c", + "dbus-sha.c", + "dbus-signature.c", + "dbus-syntax.c", + "dbus-timeout.c", + "dbus-threads.c", + "dbus-transport.c", + "dbus-transport-socket.c", + "dbus-watch.c", + // DBUS_SHARED_SOURCES + "dbus-dataslot.c", + "dbus-file.c", + "dbus-hash.c", + "dbus-internals.c", + "dbus-list.c", + "dbus-marshal-basic.c", + "dbus-memory.c", + "dbus-mempool.c", + "dbus-string.c", + "dbus-sysdeps.c", + "dbus-pipe.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + + // Platform specific sources + if (target.result.os.tag == .windows) { + dbus.addCSourceFiles(.{ + .root = dbus_c.path("dbus"), + .files = &.{ + // LIB + "dbus-transport-win.c", + "dbus-server-win.c", + // SHARED + "dbus-file-win.c", + "dbus-init-win.cpp", + "dbus-sysdeps-win.c", + "dbus-pipe-win.c", + "dbus-sysdeps-thread-win.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + } else { + dbus.addCSourceFiles(.{ + .root = dbus_c.path("dbus"), + .files = &.{ + // LIB + "dbus-uuidgen.c", + "dbus-transport-unix.c", + "dbus-server-unix.c", + // SHARED + "dbus-file-unix.c", + "dbus-pipe-unix.c", + "dbus-sysdeps-unix.c", + "dbus-sysdeps-pthread.c", + "dbus-userdb.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + } + + dbus.installConfigHeader(dbus_arch_deps_h); + + // DBUS CLIENT LIBRARY HEADERS + dbus.installHeadersDirectory(dbus_c.path("dbus"), "dbus", .{ + .include_extensions = &.{ + // DBUS INCLUDE HEADERS + "dbus.h", + "dbus-address.h", + "dbus-bus.h", + "dbus-connection.h", + "dbus-errors.h", + "dbus-macros.h", + "dbus-memory.h", + "dbus-message.h", + "dbus-misc.h", + "dbus-pending-call.h", + "dbus-protocol.h", + "dbus-server.h", + "dbus-shared.h", + "dbus-signature.h", + "dbus-syntax.h", + "dbus-threads.h", + "dbus-types.h", + "dbus-arch-deps.h", + // DBUS_LIB_HEADERS + "dbus-auth.h", + "dbus-connection-internal.h", + "dbus-credentials.h", + "dbus-keyring.h", + "dbus-marshal-header.h", + "dbus-marshal-byteswap.h", + "dbus-marshal-recursive.h", + "dbus-marshal-validate.h", + "dbus-message-internal.h", + "dbus-message-private.h", + "dbus-misc.h", + "dbus-object-tree.h", + "dbus-protocol.h", + "dbus-resources.h", + "dbus-server-debug-pipe.h", + "dbus-server-protected.h", + "dbus-server-unix.h", + "dbus-sha.h", + "dbus-timeout.h", + "dbus-threads.h", + "dbus-threads-internal.h", + "dbus-transport.h", + "dbus-transport-protected.h", + "dbus-uuidgen.h", + "dbus-watch.h", + // DBUS_SHARED_HEADERS + "dbus-dataslot.h", + "dbus-file.h", + "dbus-hash.h", + "dbus-internals.h", + "dbus-list.h", + "dbus-marshal-basic.h", + "dbus-mempool.h", + "dbus-string.h", + "dbus-string-private.h", + "dbus-pipe.h", + "dbus-sysdeps.h", + }, + }); + + // Platform specific headers + if (target.result.os.tag == .windows) { + dbus.installHeadersDirectory(dbus_c.path("dbus"), "dbus", .{ + .include_extensions = &.{ + "dbus-transport-win.h", + "dbus-sockets-win.h", + "dbus-sysdeps-win.h", + }, + }); + } else { + dbus.installHeadersDirectory(dbus_c.path("dbus"), "dbus", .{ + .include_extensions = &.{ + "dbus-transport-unix.h", + "dbus-server-unix.h", + "dbus-sysdeps-unix.h", + "dbus-userdb.h", + }, + }); + } + + const avahi_c = b.dependency("avahi", .{ + .target = target, + .optimize = optimize, + }); + + const avahi = b.addStaticLibrary(.{ + .name = "dns-sd", + .target = target, + .optimize = optimize, + }); + + avahi.linkLibC(); + avahi.linkLibrary(dbus); + + avahi.root_module.addCMacro("GETTEXT_PACKAGE", "\"avahi\""); + + avahi.root_module.addCMacro("HAVE_DBUS", ""); + avahi.root_module.addCMacro("HAVE_DBUS_BUS_GET_PRIVATE", "0"); + avahi.root_module.addCMacro("HAVE_DBUS_CONNECTION_CLOSE", "0"); + avahi.root_module.addCMacro("HAVE_EXPAT_H", "1"); + avahi.root_module.addCMacro("HAVE_CONFIG_H", "1"); + if (!t.isGnuLibC()) + avahi.root_module.addCMacro("HAVE_STRLCPY", "1"); + + const avahi_config_h = b.addConfigHeader(.{ + .style = .blank, + .include_path = "config.h", + }, .{}); + + // avahi.root_module.addCMacro("HAVE_CONFIG_H", "1"); + // const avahi_config_h = b.addConfigHeader(.{ + // .style = .{ .autoconf = avahi_c.path("config.h.in") }, + // .include_path = "config.h", + // }, .{ + // .AVAHI_AUTOIPD_GROUP = null, + // .AVAHI_AUTOIPD_USER = null, + // .AVAHI_GROUP = null, + // .AVAHI_PRIV_ACCESS_GROUP = null, + // .AVAHI_USER = null, + // .ENABLE_CHROOT = null, + // .ENABLE_NLS = null, + // .ENABLE_SSP_CC = null, + // .ENABLE_SSP_CXX = null, + // .GETTEXT_PACKAGE = "\"avahi\"", + // .HAVE_ARPA_INET_H = null, + // .HAVE_BSDXML_H = null, + // .HAVE_CFLOCALECOPYCURRENT = null, + // .HAVE_CFPREFERENCESCOPYAPPVALUE = null, + // .HAVE_CHOWN = null, + // .HAVE_CHROOT = null, + // .HAVE_DBM = null, + // .HAVE_DBUS = "1", + // .HAVE_DBUS_BUS_GET_PRIVATE = "0", + // .HAVE_DBUS_CONNECTION_CLOSE = "0", + // .HAVE_DCGETTEXT = null, + // .HAVE_DECL_ENVIRON = null, + // .HAVE_DLFCN_H = null, + // .HAVE_DLOPEN = null, + // .HAVE_EXPAT_H = "1", + // .HAVE_FCNTL_H = null, + // .HAVE_GCC_VISIBILITY = null, + // .HAVE_GDBM = null, + // .HAVE_GDBM_H = null, + // .HAVE_GETHOSTBYNAME = null, + // .HAVE_GETHOSTNAME = null, + // .HAVE_GETPROGNAME = null, + // .HAVE_GETTEXT = null, + // .HAVE_GETTIMEOFDAY = null, + // .HAVE_ICONV = null, + // .HAVE_INOTIFY = null, + // .HAVE_INTTYPES_H = null, + // .HAVE_KQUEUE = null, + // .HAVE_LIMITS_H = null, + // .HAVE_MEMCHR = null, + // .HAVE_MEMMOVE = null, + // .HAVE_MEMORY_H = null, + // .HAVE_MEMSET = null, + // .HAVE_MKDIR = null, + // .HAVE_NDBM_H = null, + // .HAVE_NETDB_H = null, + // .HAVE_NETINET_IN_H = null, + // .HAVE_NETLINK = null, + // .HAVE_PF_ROUTE = null, + // .HAVE_PTHREAD = null, + // .HAVE_PUTENV = null, + // .HAVE_SELECT = null, + // .HAVE_SETEGID = null, + // .HAVE_SETEUID = null, + // .HAVE_SETPROCTITLE = null, + // .HAVE_SETREGID = null, + // .HAVE_SETRESGID = null, + // .HAVE_SETRESUID = null, + // .HAVE_SETREUID = null, + // .HAVE_SOCKET = null, + // .HAVE_STAT_EMPTY_STRING_BUG = null, + // .HAVE_STDBOOL_H = null, + // .HAVE_STDINT_H = null, + // .HAVE_STDLIB_H = null, + // .HAVE_STRCASECMP = null, + // .HAVE_STRCHR = null, + // .HAVE_STRCSPN = null, + // .HAVE_STRDUP = null, + // .HAVE_STRERROR = null, + // .HAVE_STRINGS_H = null, + // .HAVE_STRING_H = null, + // .HAVE_STRLCPY = "1", + // .HAVE_STRNCASECMP = null, + // .HAVE_STRRCHR = null, + // .HAVE_STRSPN = null, + // .HAVE_STRSTR = null, + // .HAVE_STRUCT_IP_MREQ = null, + // .HAVE_STRUCT_IP_MREQN = null, + // .HAVE_STRUCT_LIFCONF = null, + // .HAVE_SYSLOG_H = null, + // .HAVE_SYS_CAPABILITY_H = null, + // .HAVE_SYS_FILIO_H = null, + // .HAVE_SYS_INOTIFY_H = null, + // .HAVE_SYS_IOCTL_H = null, + // .HAVE_SYS_PRCTL_H = null, + // .HAVE_SYS_SELECT_H = null, + // .HAVE_SYS_SOCKET_H = null, + // .HAVE_SYS_STAT_H = null, + // .HAVE_SYS_SYSCTL_H = null, + // .HAVE_SYS_TIME_H = null, + // .HAVE_SYS_TYPES_H = null, + // .HAVE_SYS_WAIT_H = null, + // .HAVE_UNAME = null, + // .HAVE_UNISTD_H = null, + // .HAVE_VISIBILITY_HIDDEN = null, + // .HAVE__BOOL = null, + // .LSTAT_FOLLOWS_SLASHED_SYMLINK = null, + // .LT_OBJDIR = null, + // .PACKAGE = null, + // .PACKAGE_BUGREPORT = null, + // .PACKAGE_NAME = null, + // .PACKAGE_STRING = null, + // .PACKAGE_TARNAME = null, + // .PACKAGE_URL = null, + // .PACKAGE_VERSION = null, + // .PTHREAD_CREATE_JOINABLE = null, + // .SELECT_TYPE_ARG1 = null, + // .SELECT_TYPE_ARG234 = null, + // .SELECT_TYPE_ARG5 = null, + // .STDC_HEADERS = null, + // .TIME_WITH_SYS_TIME = null, + // ._ALL_SOURCE = null, + // ._GNU_SOURCE = null, + // ._POSIX_PTHREAD_SEMANTICS = null, + // ._TANDEM_SOURCE = null, + // .__EXTENSIONS__ = null, + // .VERSION = null, + // ._MINIX = null, + // ._POSIX_1_SOURCE = null, + // ._POSIX_SOURCE = null, + // .@"const" = null, + // .gid_t = null, + // .mode_t = null, + // .pid_t = null, + // .size_t = null, + // .uid_t = null, + // }); + + avahi.addConfigHeader(avahi_config_h); + avahi.addIncludePath(avahi_c.path("")); + + avahi.addCSourceFiles(.{ + .root = avahi_c.path(""), + .files = &.{ + // "avahi-autoipd/iface-bsd.c", + // "avahi-autoipd/iface-linux.c", + // "avahi-autoipd/main.c", + "avahi-client/browser.c", + "avahi-client/check-nss.c", + "avahi-client/client.c", + "avahi-client/entrygroup.c", + "avahi-client/resolver.c", + "avahi-client/xdg-config.c", + "avahi-common/address.c", + "avahi-common/alternative.c", + "avahi-common/dbus-watch-glue.c", + "avahi-common/dbus.c", + "avahi-common/domain.c", + "avahi-common/error.c", + "avahi-common/i18n.c", + "avahi-common/malloc.c", + "avahi-common/rlist.c", + "avahi-common/simple-watch.c", + "avahi-common/strlst.c", + "avahi-common/thread-watch.c", + "avahi-common/timeval.c", + "avahi-common/utf8.c", + // "avahi-compat-howl/address.c", + // "avahi-compat-howl/compat.c", + // "avahi-compat-howl/samples/browse.c", + // "avahi-compat-howl/samples/publish.c", + // "avahi-compat-howl/samples/query.c", + // "avahi-compat-howl/samples/resolve.c", + // "avahi-compat-howl/text.c", + // "avahi-compat-howl/unsupported.c", + // "avahi-compat-howl/warn.c", + "avahi-compat-libdns_sd/compat.c", + "avahi-compat-libdns_sd/txt.c", + "avahi-compat-libdns_sd/unsupported.c", + "avahi-compat-libdns_sd/warn.c", + // "avahi-core/addr-util.c", + // "avahi-core/announce.c", + // "avahi-core/avahi-reflector.c", + // "avahi-core/browse-dns-server.c", + // "avahi-core/browse-domain.c", + // "avahi-core/browse-service-type.c", + // "avahi-core/browse-service.c", + // "avahi-core/browse.c", + // "avahi-core/cache.c", + // "avahi-core/dns.c", + // "avahi-core/domain-util.c", + // "avahi-core/entry.c", + // "avahi-core/fdutil.c", + // "avahi-core/hashmap.c", + // "avahi-core/iface-linux.c", + // "avahi-core/iface-none.c", + // "avahi-core/iface-pfroute.c", + // "avahi-core/iface.c", + // "avahi-core/log.c", + // "avahi-core/multicast-lookup.c", + // "avahi-core/netlink.c", + // "avahi-core/prioq.c", + // "avahi-core/probe-sched.c", + // "avahi-core/querier.c", + // "avahi-core/query-sched.c", + // "avahi-core/resolve-address.c", + // "avahi-core/resolve-host-name.c", + // "avahi-core/resolve-service.c", + // "avahi-core/response-sched.c", + // "avahi-core/rr.c", + // "avahi-core/rrlist.c", + // "avahi-core/server.c", + // "avahi-core/socket.c", + // "avahi-core/timeeventq.c", + // "avahi-core/util.c", + // "avahi-core/wide-area.c", + // "avahi-daemon/caps.c", + // "avahi-daemon/chroot.c", + // "avahi-daemon/dbus-async-address-resolver.c", + // "avahi-daemon/dbus-async-host-name-resolver.c", + // "avahi-daemon/dbus-async-service-resolver.c", + // "avahi-daemon/dbus-domain-browser.c", + // "avahi-daemon/dbus-entry-group.c", + // "avahi-daemon/dbus-protocol.c", + // "avahi-daemon/dbus-record-browser.c", + // "avahi-daemon/dbus-service-browser.c", + // "avahi-daemon/dbus-service-type-browser.c", + // "avahi-daemon/dbus-sync-address-resolver.c", + // "avahi-daemon/dbus-sync-host-name-resolver.c", + // "avahi-daemon/dbus-sync-service-resolver.c", + // "avahi-daemon/dbus-util.c", + // "avahi-daemon/ini-file-parser.c", + // "avahi-daemon/main.c", + // "avahi-daemon/sd-daemon.c", + // "avahi-daemon/setproctitle.c", + // "avahi-daemon/simple-protocol.c", + // "avahi-daemon/static-hosts.c", + // "avahi-daemon/static-services.c", + // "avahi-discover-standalone/main.c", + // "avahi-dnsconfd/main.c", + // "avahi-glib/glib-malloc.c", + // "avahi-glib/glib-watch.c", + // "avahi-gobject/ga-client.c", + // "avahi-gobject/ga-entry-group.c", + // "avahi-gobject/ga-error.c", + // "avahi-gobject/ga-record-browser.c", + // "avahi-gobject/ga-service-browser.c", + // "avahi-gobject/ga-service-resolver.c", + // "avahi-libevent/libevent-watch.c", + // "avahi-ui/avahi-ui.c", + // "avahi-ui/bssh.c", + // "avahi-utils/avahi-browse.c", + // "avahi-utils/avahi-publish.c", + // "avahi-utils/avahi-resolve.c", + // "avahi-utils/avahi-set-host-name.c", + // "avahi-utils/sigint.c", + // "avahi-utils/stdb.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + + avahi.installHeader(avahi_c.path("avahi-compat-libdns_sd/dns_sd.h"), "dns_sd.h"); + + b.installArtifact(avahi); +} diff --git a/vere/ext/avahi/build.zig.zon b/vere/ext/avahi/build.zig.zon new file mode 100644 index 0000000..58ac25b --- /dev/null +++ b/vere/ext/avahi/build.zig.zon @@ -0,0 +1,22 @@ +.{ + .name = "avahi", + .version = "0.0.1", + .dependencies = .{ + .avahi = .{ + .url = "https://github.com/lathiat/avahi/releases/download/v0.8/avahi-0.8.tar.gz", + .hash = "N-V-__8AAOLVeQDfYsiL0A86OXqDtfyLSrZXiEu8RSplOJJ5", + }, + .dbus = .{ + .url = "https://distfiles.alpinelinux.org/distfiles/v3.17/dbus-1.14.8.tar.xz", + // .url = "https://src.fedoraproject.org/repo/pkgs/dbus/dbus-1.14.8.tar.xz/sha512/f3dfc73da28cbe20449d15bbe4166c3574f0e551dfd15fca7cce2b8c71e778360ed2dd391ee5c414a7a47ff4b958727b26ef4cabfee70564f8d0a34bf5ad2386/dbus-1.14.8.tar.xz", + .hash = "N-V-__8AAEB_jACD3zKb7YOxOD4R_51AA41kNzD31hDwAmCN", + }, + .expat = .{ + .url = "https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.xz", + .hash = "N-V-__8AABFoMgCxh01WjWFoh4nrLx8v4e0G9muwSAAA32Rc", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/backtrace/build.zig b/vere/ext/backtrace/build.zig new file mode 100644 index 0000000..86cbdcd --- /dev/null +++ b/vere/ext/backtrace/build.zig @@ -0,0 +1,207 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const dep_c = b.dependency("backtrace", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "backtrace", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + var config_h: *std.Build.Step.ConfigHeader = undefined; + + if (t.os.tag != .windows) { + config_h = b.addConfigHeader(.{ + .style = .{ + .autoconf = dep_c.path("config.h.in"), + }, + .include_path = "config.h", + }, .{ + .BACKTRACE_ELF_SIZE = 64, + .BACKTRACE_XCOFF_SIZE = 64, + .HAVE_ATOMIC_FUNCTIONS = 1, + .HAVE_CLOCK_GETTIME = 1, + .HAVE_DECL_GETPAGESIZE = 1, + .HAVE_DECL_STRNLEN = 1, + .HAVE_DECL__PGMPTR = 0, + .HAVE_DLFCN_H = 1, + .HAVE_DL_ITERATE_PHDR = null, + .HAVE_FCNTL = 0, + .HAVE_GETEXECNAME = null, + .HAVE_GETIPINFO = 1, + .HAVE_INTTYPES_H = 1, + .HAVE_KERN_PROC = null, + .HAVE_KERN_PROC_ARGS = null, + .HAVE_LIBLZMA = 1, + .HAVE_LINK_H = null, + .HAVE_LOADQUERY = null, + .HAVE_LSTAT = 1, + .HAVE_MACH_O_DYLD_H = null, + .HAVE_MEMORY_H = 1, + .HAVE_READLINK = 1, + .HAVE_STDINT_H = 1, + .HAVE_STDLIB_H = 1, + .HAVE_STRINGS_H = 1, + .HAVE_STRING_H = 1, + .HAVE_SYNC_FUNCTIONS = 1, + .HAVE_SYS_LDR_H = null, + .HAVE_SYS_LINK_H = null, + .HAVE_SYS_MMAN_H = 1, + .HAVE_SYS_STAT_H = 1, + .HAVE_SYS_TYPES_H = 1, + .HAVE_TLHELP32_H = null, + .HAVE_UNISTD_H = 1, + .HAVE_WINDOWS_H = null, + .HAVE_ZLIB = 1, + .HAVE_ZSTD = null, + .LT_OBJDIR = "", + .PACKAGE_BUGREPORT = "", + .PACKAGE_NAME = "", + .PACKAGE_STRING = "", + .PACKAGE_TARNAME = "", + .PACKAGE_URL = "", + .PACKAGE_VERSION = "", + .STDC_HEADERS = 1, + ._ALL_SOURCE = 1, + ._GNU_SOURCE = 1, + ._POSIX_PTHREAD_SEMANTICS = 1, + ._TANDEM_SOURCE = 1, + .__EXTENSIONS__ = 1, + ._FILE_OFFSET_BITS = null, + ._LARGE_FILES = null, + ._MINIX = null, + ._POSIX_1_SOURCE = null, + ._POSIX_SOURCE = null, + }); + + if (t.os.tag.isDarwin()) { + config_h.addValues(.{ + .HAVE_MACH_O_DYLD_H = 1, + }); + } + } else { + config_h = b.addConfigHeader(.{ + .style = .{ + .autoconf = dep_c.path("config.h.in"), + }, + .include_path = "config.h", + }, .{ + .BACKTRACE_ELF_SIZE = 64, + .BACKTRACE_XCOFF_SIZE = 64, + .HAVE_ATOMIC_FUNCTIONS = 1, + .HAVE_CLOCK_GETTIME = 1, + .HAVE_DECL_GETPAGESIZE = 1, + .HAVE_DECL_STRNLEN = 1, + .HAVE_DECL__PGMPTR = 0, + .HAVE_DLFCN_H = 1, + .HAVE_DL_ITERATE_PHDR = null, + .HAVE_FCNTL = null, + .HAVE_GETEXECNAME = null, + .HAVE_GETIPINFO = 1, + .HAVE_INTTYPES_H = 1, + .HAVE_KERN_PROC = null, + .HAVE_KERN_PROC_ARGS = null, + .HAVE_LIBLZMA = 1, + .HAVE_LINK_H = null, + .HAVE_LOADQUERY = null, + .HAVE_LSTAT = null, + .HAVE_MACH_O_DYLD_H = null, + .HAVE_MEMORY_H = 1, + .HAVE_READLINK = null, + .HAVE_STDINT_H = 1, + .HAVE_STDLIB_H = 1, + .HAVE_STRINGS_H = 1, + .HAVE_STRING_H = 1, + .HAVE_SYNC_FUNCTIONS = 1, + .HAVE_SYS_LDR_H = null, + .HAVE_SYS_LINK_H = null, + .HAVE_SYS_MMAN_H = null, + .HAVE_SYS_STAT_H = 1, + .HAVE_SYS_TYPES_H = 1, + .HAVE_TLHELP32_H = null, + .HAVE_UNISTD_H = 1, + .HAVE_WINDOWS_H = 1, + .HAVE_ZLIB = 1, + .HAVE_ZSTD = null, + .LT_OBJDIR = "", + .PACKAGE_BUGREPORT = "", + .PACKAGE_NAME = "", + .PACKAGE_STRING = "", + .PACKAGE_TARNAME = "", + .PACKAGE_URL = "", + .PACKAGE_VERSION = "", + .STDC_HEADERS = 1, + ._ALL_SOURCE = 1, + ._GNU_SOURCE = 1, + ._POSIX_PTHREAD_SEMANTICS = 1, + ._TANDEM_SOURCE = 1, + .__EXTENSIONS__ = 1, + ._FILE_OFFSET_BITS = null, + ._LARGE_FILES = null, + ._MINIX = null, + ._POSIX_1_SOURCE = null, + ._POSIX_SOURCE = null, + }); + } + + const backtrace_supported_h = b.addConfigHeader(.{ + .style = .{ + .cmake = dep_c.path("backtrace-supported.h.in"), + }, + .include_path = "backtrace-supported.h", + }, .{ + .BACKTRACE_SUPPORTED = 1, + .BACKTRACE_USES_MALLOC = 0, + .BACKTRACE_SUPPORTS_THREADS = 1, + .BACKTRACE_SUPPORTS_DATA = 1, + }); + + lib.addConfigHeader(config_h); + lib.addConfigHeader(backtrace_supported_h); + lib.addIncludePath(dep_c.path("")); + + lib.addCSourceFiles(.{ + .root = dep_c.path(""), + .files = &.{ + // libbacktrace_la_SOURCES + "atomic.c", + "dwarf.c", + "fileline.c", + "posix.c", + "print.c", + "sort.c", + "state.c", + // BACKTRACE_FILES + "backtrace.c", + "simple.c", + "nounwind.c", + // FORMAT_FILES + "elf.c", + "macho.c", + "pecoff.c", + "unknown.c", + "xcoff.c", + // VIEW_FILES + if (t.os.tag == .windows) "read.c" else "mmapio.c", + // ALLOC_FILES + if (t.os.tag == .windows) "alloc.c" else "mmap.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + + lib.installHeader(dep_c.path("backtrace.h"), "backtrace.h"); + + b.installArtifact(lib); +} diff --git a/vere/ext/backtrace/build.zig.zon b/vere/ext/backtrace/build.zig.zon new file mode 100644 index 0000000..230fa01 --- /dev/null +++ b/vere/ext/backtrace/build.zig.zon @@ -0,0 +1,14 @@ +.{ + .name = .backtrace, + .fingerprint = 0xa7c996f4b29cd817, + .version = "0.0.1", + .dependencies = .{ + .backtrace = .{ + .url = "https://github.com/ianlancetaylor/libbacktrace/archive/4ead348bb45f753121ca0bd44170ff8352d4c514.tar.gz", + .hash = "N-V-__8AADzSKgBaRtVnvQd2FZXVZ4ehq7SHwyHiBL8xSONl", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/curl/build.zig b/vere/ext/curl/build.zig new file mode 100644 index 0000000..9ba69f9 --- /dev/null +++ b/vere/ext/curl/build.zig @@ -0,0 +1,418 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const openssl = b.dependency("openssl", .{ + .target = target, + .optimize = optimize, + }); + + const curl_c = b.dependency("curl", .{ + .target = target, + .optimize = optimize, + }); + + const curl = b.addStaticLibrary(.{ + .name = "curl", + .target = target, + .optimize = optimize, + }); + + curl.linkLibC(); + curl.linkLibrary(openssl.artifact("ssl")); + curl.linkLibrary(openssl.artifact("crypto")); + + curl.root_module.addCMacro("BUILDING_LIBCURL", ""); + curl.root_module.addCMacro("CURL_STATICLIB", "1"); + curl.root_module.addCMacro("USE_OPENSSL", "1"); + curl.root_module.addCMacro("CURL_DISABLE_ALTSVC", "1"); + curl.root_module.addCMacro("CURL_DISABLE_COOKIES", "1"); + curl.root_module.addCMacro("CURL_DISABLE_BASIC_AUTH", "1"); + curl.root_module.addCMacro("CURL_DISABLE_BEARER_AUTH", "1"); + curl.root_module.addCMacro("CURL_DISABLE_DIGEST_AUTH", "1"); + curl.root_module.addCMacro("CURL_DISABLE_KERBEROS_AUTH", "1"); + curl.root_module.addCMacro("CURL_DISABLE_NEGOTIATE_AUTH", "1"); + curl.root_module.addCMacro("CURL_DISABLE_AWS", "1"); + curl.root_module.addCMacro("CURL_DISABLE_DICT", "1"); + curl.root_module.addCMacro("CURL_DISABLE_DOH", "1"); + curl.root_module.addCMacro("CURL_DISABLE_FILE", "1"); + curl.root_module.addCMacro("CURL_DISABLE_FORM_API", "1"); + curl.root_module.addCMacro("CURL_DISABLE_FTP", "1"); + curl.root_module.addCMacro("CURL_DISABLE_GETOPTIONS", "1"); + curl.root_module.addCMacro("CURL_DISABLE_GOPHER", "1"); + // curl.root_module.addCMacro("CURL_DISABLE_HEADERS_API", "1"); + // curl.root_module.addCMacro("CURL_DISABLE_HSTS", "1"); + // curl.root_module.addCMacro("CURL_DISABLE_HTTP", "1"); + curl.root_module.addCMacro("CURL_DISABLE_IMAP", "1"); + curl.root_module.addCMacro("CURL_DISABLE_LDAP", "1"); + curl.root_module.addCMacro("CURL_DISABLE_LDAPS", "1"); + curl.root_module.addCMacro("CURL_DISABLE_LIBCURL_OPTION", "1"); + // curl.root_module.addCMacro("CURL_DISABLE_MIME", "1"); + // curl.root_module.addCMacro("CURL_DISABLE_BINDLOCAL", "1"); + curl.root_module.addCMacro("CURL_DISABLE_MQTT", "1"); + curl.root_module.addCMacro("CURL_DISABLE_NETRC", "1"); + curl.root_module.addCMacro("CURL_DISABLE_NTLM", "1"); + curl.root_module.addCMacro("CURL_DISABLE_PARSEDATE", "1"); + curl.root_module.addCMacro("CURL_DISABLE_POP3", "1"); + curl.root_module.addCMacro("CURL_DISABLE_PROGRESS_METER", "1"); + curl.root_module.addCMacro("CURL_DISABLE_PROXY", "1"); + curl.root_module.addCMacro("CURL_DISABLE_RTSP", "1"); + curl.root_module.addCMacro("CURL_DISABLE_SMB", "1"); + curl.root_module.addCMacro("CURL_DISABLE_SMTP", "1"); + curl.root_module.addCMacro("CURL_DISABLE_SOCKETPAIR", "1"); + curl.root_module.addCMacro("CURL_DISABLE_TELNET", "1"); + curl.root_module.addCMacro("CURL_DISABLE_TFTP", "1"); + curl.root_module.addCMacro("CURL_DISABLE_VERBOSE_STRINGS", "1"); + // curl.root_module.addCMacro("CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG", "1"); + + if (target.result.os.tag == .windows) { + curl.linkSystemLibrary("bcrypt"); + } else { + curl.root_module.addCMacro("CURL_EXTERN_SYMBOL", "__attribute__ ((__visibility__ (\"default\"))"); + + const isDarwin = target.result.os.tag.isDarwin(); + if (!isDarwin) + curl.root_module.addCMacro("ENABLE_IPV6", "1"); + curl.root_module.addCMacro("HAVE_ALARM", "1"); + curl.root_module.addCMacro("HAVE_ALLOCA_H", "1"); + curl.root_module.addCMacro("HAVE_ARPA_INET_H", "1"); + curl.root_module.addCMacro("HAVE_ARPA_TFTP_H", "1"); + curl.root_module.addCMacro("HAVE_ASSERT_H", "1"); + curl.root_module.addCMacro("HAVE_BASENAME", "1"); + curl.root_module.addCMacro("HAVE_BOOL_T", "1"); + curl.root_module.addCMacro("HAVE_BUILTIN_AVAILABLE", "1"); + curl.root_module.addCMacro("HAVE_CLOCK_GETTIME_MONOTONIC", "1"); + curl.root_module.addCMacro("HAVE_DLFCN_H", "1"); + curl.root_module.addCMacro("HAVE_ERRNO_H", "1"); + curl.root_module.addCMacro("HAVE_FCNTL", "1"); + curl.root_module.addCMacro("HAVE_FCNTL_H", "1"); + curl.root_module.addCMacro("HAVE_FCNTL_O_NONBLOCK", "1"); + curl.root_module.addCMacro("HAVE_FREEADDRINFO", "1"); + curl.root_module.addCMacro("HAVE_FTRUNCATE", "1"); + curl.root_module.addCMacro("HAVE_GETADDRINFO", "1"); + curl.root_module.addCMacro("HAVE_GETEUID", "1"); + curl.root_module.addCMacro("HAVE_GETPPID", "1"); + curl.root_module.addCMacro("HAVE_GETHOSTBYNAME", "1"); + if (!isDarwin) + curl.root_module.addCMacro("HAVE_GETHOSTBYNAME_R", "1"); + curl.root_module.addCMacro("HAVE_GETHOSTBYNAME_R_6", "1"); + curl.root_module.addCMacro("HAVE_GETHOSTNAME", "1"); + curl.root_module.addCMacro("HAVE_GETPPID", "1"); + curl.root_module.addCMacro("HAVE_GETPROTOBYNAME", "1"); + curl.root_module.addCMacro("HAVE_GETPEERNAME", "1"); + curl.root_module.addCMacro("HAVE_GETSOCKNAME", "1"); + curl.root_module.addCMacro("HAVE_IF_NAMETOINDEX", "1"); + curl.root_module.addCMacro("HAVE_GETPWUID", "1"); + curl.root_module.addCMacro("HAVE_GETPWUID_R", "1"); + curl.root_module.addCMacro("HAVE_GETRLIMIT", "1"); + curl.root_module.addCMacro("HAVE_GETTIMEOFDAY", "1"); + curl.root_module.addCMacro("HAVE_GMTIME_R", "1"); + curl.root_module.addCMacro("HAVE_IFADDRS_H", "1"); + curl.root_module.addCMacro("HAVE_INET_ADDR", "1"); + curl.root_module.addCMacro("HAVE_INET_PTON", "1"); + curl.root_module.addCMacro("HAVE_SA_FAMILY_T", "1"); + curl.root_module.addCMacro("HAVE_INTTYPES_H", "1"); + curl.root_module.addCMacro("HAVE_IOCTL", "1"); + curl.root_module.addCMacro("HAVE_IOCTL_FIONBIO", "1"); + curl.root_module.addCMacro("HAVE_IOCTL_SIOCGIFADDR", "1"); + curl.root_module.addCMacro("HAVE_LDAP_URL_PARSE", "1"); + curl.root_module.addCMacro("HAVE_LIBGEN_H", "1"); + curl.root_module.addCMacro("HAVE_IDN2_H", "1"); + curl.root_module.addCMacro("HAVE_LL", "1"); + curl.root_module.addCMacro("HAVE_LOCALE_H", "1"); + curl.root_module.addCMacro("HAVE_LOCALTIME_R", "1"); + curl.root_module.addCMacro("HAVE_LONGLONG", "1"); + curl.root_module.addCMacro("HAVE_MALLOC_H", "1"); + curl.root_module.addCMacro("HAVE_MEMORY_H", "1"); + if (!isDarwin) + curl.root_module.addCMacro("HAVE_MSG_NOSIGNAL", "1"); + curl.root_module.addCMacro("HAVE_NETDB_H", "1"); + curl.root_module.addCMacro("HAVE_NETINET_IN_H", "1"); + curl.root_module.addCMacro("HAVE_NETINET_TCP_H", "1"); + + if (target.result.os.tag == .linux) + curl.root_module.addCMacro("HAVE_LINUX_TCP_H", "1"); + curl.root_module.addCMacro("HAVE_NET_IF_H", "1"); + curl.root_module.addCMacro("HAVE_PIPE", "1"); + curl.root_module.addCMacro("HAVE_POLL", "1"); + curl.root_module.addCMacro("HAVE_POLL_FINE", "1"); + curl.root_module.addCMacro("HAVE_POLL_H", "1"); + curl.root_module.addCMacro("HAVE_POSIX_STRERROR_R", "1"); + curl.root_module.addCMacro("HAVE_PTHREAD_H", "1"); + curl.root_module.addCMacro("HAVE_PWD_H", "1"); + curl.root_module.addCMacro("HAVE_RECV", "1"); + curl.root_module.addCMacro("HAVE_SELECT", "1"); + curl.root_module.addCMacro("HAVE_SEND", "1"); + curl.root_module.addCMacro("HAVE_FSETXATTR", "1"); + curl.root_module.addCMacro("HAVE_FSETXATTR_5", "1"); + curl.root_module.addCMacro("HAVE_SETJMP_H", "1"); + curl.root_module.addCMacro("HAVE_SETLOCALE", "1"); + curl.root_module.addCMacro("HAVE_SETRLIMIT", "1"); + curl.root_module.addCMacro("HAVE_SETSOCKOPT", "1"); + curl.root_module.addCMacro("HAVE_SIGACTION", "1"); + curl.root_module.addCMacro("HAVE_SIGINTERRUPT", "1"); + curl.root_module.addCMacro("HAVE_SIGNAL", "1"); + curl.root_module.addCMacro("HAVE_SIGNAL_H", "1"); + curl.root_module.addCMacro("HAVE_SIGSETJMP", "1"); + curl.root_module.addCMacro("HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID", "1"); + curl.root_module.addCMacro("HAVE_SOCKET", "1"); + curl.root_module.addCMacro("HAVE_STDBOOL_H", "1"); + curl.root_module.addCMacro("HAVE_STDINT_H", "1"); + curl.root_module.addCMacro("HAVE_STDIO_H", "1"); + curl.root_module.addCMacro("HAVE_STDLIB_H", "1"); + curl.root_module.addCMacro("HAVE_STRCASECMP", "1"); + curl.root_module.addCMacro("HAVE_STRDUP", "1"); + curl.root_module.addCMacro("HAVE_STRERROR_R", "1"); + curl.root_module.addCMacro("HAVE_STRINGS_H", "1"); + curl.root_module.addCMacro("HAVE_STRING_H", "1"); + curl.root_module.addCMacro("HAVE_STRSTR", "1"); + curl.root_module.addCMacro("HAVE_STRTOK_R", "1"); + curl.root_module.addCMacro("HAVE_STRTOLL", "1"); + curl.root_module.addCMacro("HAVE_STRUCT_SOCKADDR_STORAGE", "1"); + curl.root_module.addCMacro("HAVE_STRUCT_TIMEVAL", "1"); + curl.root_module.addCMacro("HAVE_SYS_IOCTL_H", "1"); + curl.root_module.addCMacro("HAVE_SYS_PARAM_H", "1"); + curl.root_module.addCMacro("HAVE_SYS_POLL_H", "1"); + curl.root_module.addCMacro("HAVE_SYS_RESOURCE_H", "1"); + curl.root_module.addCMacro("HAVE_SYS_SELECT_H", "1"); + curl.root_module.addCMacro("HAVE_SYS_SOCKET_H", "1"); + curl.root_module.addCMacro("HAVE_SYS_STAT_H", "1"); + curl.root_module.addCMacro("HAVE_SYS_TIME_H", "1"); + curl.root_module.addCMacro("HAVE_SYS_TYPES_H", "1"); + curl.root_module.addCMacro("HAVE_SYS_UIO_H", "1"); + curl.root_module.addCMacro("HAVE_SYS_UN_H", "1"); + curl.root_module.addCMacro("HAVE_TERMIOS_H", "1"); + curl.root_module.addCMacro("HAVE_TERMIO_H", "1"); + curl.root_module.addCMacro("HAVE_TIME_H", "1"); + curl.root_module.addCMacro("HAVE_UNAME", "1"); + curl.root_module.addCMacro("HAVE_UNISTD_H", "1"); + curl.root_module.addCMacro("HAVE_UTIME", "1"); + curl.root_module.addCMacro("HAVE_UTIMES", "1"); + curl.root_module.addCMacro("HAVE_UTIME_H", "1"); + curl.root_module.addCMacro("HAVE_VARIADIC_MACROS_C99", "1"); + curl.root_module.addCMacro("HAVE_VARIADIC_MACROS_GCC", "1"); + curl.root_module.addCMacro("OS", "\"Linux\""); + curl.root_module.addCMacro("RANDOM_FILE", "\"/dev/urandom\""); + curl.root_module.addCMacro("RECV_TYPE_ARG1", "int"); + curl.root_module.addCMacro("RECV_TYPE_ARG2", "void *"); + curl.root_module.addCMacro("RECV_TYPE_ARG3", "size_t"); + curl.root_module.addCMacro("RECV_TYPE_ARG4", "int"); + curl.root_module.addCMacro("RECV_TYPE_RETV", "ssize_t"); + curl.root_module.addCMacro("SEND_QUAL_ARG2", "const"); + curl.root_module.addCMacro("SEND_TYPE_ARG1", "int"); + curl.root_module.addCMacro("SEND_TYPE_ARG2", "void *"); + curl.root_module.addCMacro("SEND_TYPE_ARG3", "size_t"); + curl.root_module.addCMacro("SEND_TYPE_ARG4", "int"); + curl.root_module.addCMacro("SEND_TYPE_RETV", "ssize_t"); + curl.root_module.addCMacro("SIZEOF_INT", "4"); + curl.root_module.addCMacro("SIZEOF_SHORT", "2"); + curl.root_module.addCMacro("SIZEOF_LONG", "8"); + curl.root_module.addCMacro("SIZEOF_OFF_T", "8"); + curl.root_module.addCMacro("SIZEOF_CURL_OFF_T", "8"); + curl.root_module.addCMacro("SIZEOF_SIZE_T", "8"); + curl.root_module.addCMacro("SIZEOF_TIME_T", "8"); + curl.root_module.addCMacro("STDC_HEADERS", "1"); + curl.root_module.addCMacro("TIME_WITH_SYS_TIME", "1"); + curl.root_module.addCMacro("USE_THREADS_POSIX", "1"); + curl.root_module.addCMacro("USE_UNIX_SOCKETS", ""); + curl.root_module.addCMacro("_FILE_OFFSET_BITS", "64"); + } + + curl.addIncludePath(curl_c.path("lib")); + curl.addIncludePath(curl_c.path("include")); + + curl.addCSourceFiles(.{ + .root = curl_c.path("lib"), + .files = &.{ + "vauth/krb5_sspi.c", + "vauth/spnego_sspi.c", + "vauth/ntlm.c", + "vauth/gsasl.c", + "vauth/spnego_gssapi.c", + "vauth/ntlm_sspi.c", + "vauth/vauth.c", + "vauth/oauth2.c", + "vauth/cram.c", + "vauth/cleartext.c", + "vauth/krb5_gssapi.c", + "vauth/digest.c", + "vauth/digest_sspi.c", + "vquic/vquic.c", + "vquic/curl_ngtcp2.c", + // "vquic/curl_osslq.c", + // "vquic/vquic-tls.c", + "vquic/curl_quiche.c", + "vquic/curl_msh3.c", + "vssh/libssh.c", + "vssh/libssh2.c", + "vssh/wolfssh.c", + // "vtls/mbedtls.c", + "vtls/gtls.c", + "vtls/bearssl.c", + "vtls/hostcheck.c", + "vtls/rustls.c", + "vtls/schannel.c", + "vtls/sectransp.c", + "vtls/schannel_verify.c", + "vtls/vtls.c", + "vtls/cipher_suite.c", + "vtls/keylog.c", + "vtls/openssl.c", + "vtls/wolfssl.c", + "vtls/mbedtls_threadlock.c", + "vtls/x509asn1.c", + "strcase.c", + "easyoptions.c", + "dict.c", + "llist.c", + "mprintf.c", + "pingpong.c", + "socks_gssapi.c", + "psl.c", + "url.c", + "timeval.c", + "curl_get_line.c", + "hmac.c", + "md4.c", + "curl_range.c", + "idn.c", + "hostsyn.c", + "strtok.c", + "curl_threads.c", + "if2ip.c", + "c-hyper.c", + "cf-socket.c", + "http_negotiate.c", + "doh.c", + "curl_endian.c", + "formdata.c", + "easygetopt.c", + "cf-https-connect.c", + "timediff.c", + "dynbuf.c", + "rand.c", + "http2.c", + "request.c", + "dynhds.c", + "content_encoding.c", + "hostip.c", + "escape.c", + "version_win32.c", + "easy.c", + "rename.c", + "share.c", + "slist.c", + "inet_pton.c", + "tftp.c", + "mqtt.c", + "fopen.c", + "socks.c", + "parsedate.c", + "curl_trc.c", + "warnless.c", + "cf-haproxy.c", + "cfilters.c", + "curl_sha512_256.c", + "system_win32.c", + "transfer.c", + "curl_rtmp.c", + "nonblock.c", + "select.c", + "hostip4.c", + "http1.c", + "urlapi.c", + "openldap.c", + "getenv.c", + "hash.c", + "bufq.c", + "http_proxy.c", + "krb5.c", + "multi.c", + "strdup.c", + "mime.c", + "socks_sspi.c", + "smtp.c", + "http_aws_sigv4.c", + "curl_addrinfo.c", + "cf-h2-proxy.c", + "memdebug.c", + "progress.c", + "curl_ntlm_core.c", + "curl_path.c", + "hostasyn.c", + "pop3.c", + "noproxy.c", + "gopher.c", + "rtsp.c", + "curl_gethostname.c", + "curl_des.c", + "base64.c", + "splay.c", + "http.c", + "curl_sspi.c", + "http_chunks.c", + "telnet.c", + "amigaos.c", + "fileinfo.c", + "version.c", + "ldap.c", + "bufref.c", + "curl_sasl.c", + "netrc.c", + "socketpair.c", + "strerror.c", + "curl_multibyte.c", + "altsvc.c", + "conncache.c", + "curl_memrchr.c", + "dllmain.c", + "smb.c", + "sha256.c", + "connect.c", + "ws.c", + "ftp.c", + "strtoofft.c", + "md5.c", + "file.c", + "http_digest.c", + "asyn-thread.c", + "cf-h1-proxy.c", + "hsts.c", + "asyn-ares.c", + "imap.c", + "headers.c", + "macos.c", + "cookie.c", + "hostip6.c", + "sendf.c", + "ftplistparser.c", + "http_ntlm.c", + "setopt.c", + "getinfo.c", + "speedcheck.c", + "inet_ntop.c", + "cw-out.c", + "curl_gssapi.c", + "curl_fnmatch.c", + }, + .flags = &.{ + "-fno-sanitize=all", + "-std=gnu89", + "-Wno-unknown-warning-option", + "-Wswitch-default", + "-Wno-parentheses-equality", + "-Wno-language-extension-token", + "-Wno-extended-offsetof", + "-Wconditional-uninitialized", + "-Wincompatible-pointer-types-discards-qualifiers", + "-Wmissing-variable-declarations", + "-Wno-int-conversion", + }, + }); + + curl.installHeadersDirectory(curl_c.path("include/curl"), "curl", .{}); + + b.installArtifact(curl); +} diff --git a/vere/ext/curl/build.zig.zon b/vere/ext/curl/build.zig.zon new file mode 100644 index 0000000..220d033 --- /dev/null +++ b/vere/ext/curl/build.zig.zon @@ -0,0 +1,17 @@ +.{ + .name = .curl, + .fingerprint = 0x3e01b4d06e29bb1, + .version = "0.0.1", + .dependencies = .{ + .curl = .{ + .url = "https://github.com/curl/curl/releases/download/curl-8_9_1/curl-8.9.1.tar.gz", + .hash = "N-V-__8AAFnEQQHzY3X3pCO43EGxRhLWhfSOAwsl0PbraQER", + }, + .openssl = .{ + .path = "../openssl", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/gmp/build.zig b/vere/ext/gmp/build.zig new file mode 100644 index 0000000..7e26a8f --- /dev/null +++ b/vere/ext/gmp/build.zig @@ -0,0 +1,969 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const dep_c = b.dependency("gmp", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "gmp", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + // TODO: Finish this + if (t.os.tag != .windows) { + const gmp_h = b.addConfigHeader(.{ + .style = .{ + .cmake = dep_c.path("gmp-h.in"), + }, + .include_path = "gmp.h", + }, .{ + .HAVE_HOST_CPU_FAMILY_power = 0, + .HAVE_HOST_CPU_FAMILY_powerpc = 0, + .GMP_LIMB_BITS = 64, + .GMP_NAIL_BITS = 0, + .DEFN_LONG_LONG_LIMB = "", + .LIBGMP_DLL = 0, + .CC = "gcc", + .CFLAGS = "-O2 -pedantic -march=armv8-a", + }); + + lib.addConfigHeader(gmp_h); + lib.installConfigHeader(gmp_h); + } + + // Static headers + lib.addIncludePath(dep_c.path(".")); + lib.addIncludePath(dep_c.path("mpf")); + lib.addIncludePath(dep_c.path("mpn")); + lib.addIncludePath(dep_c.path("mpq")); + lib.addIncludePath(dep_c.path("mpz")); + lib.addIncludePath(dep_c.path("printf")); + lib.addIncludePath(dep_c.path("rand")); + lib.addIncludePath(dep_c.path("scanf")); + if (t.cpu.arch.isAARCH64()) { + lib.addIncludePath(dep_c.path("mpn/arm64")); + } else if (t.cpu.arch.isX86()) { + lib.addIncludePath(dep_c.path("mpn/x86_64")); + } + + // Generated Sources + if (t.os.tag == .macos and t.cpu.arch == .aarch64) { + lib.addIncludePath(b.path("gen/aarch64-macos")); + lib.addIncludePath(b.path("gen/aarch64-macos/mpn")); + for (aarch64_macos_asm_sources) |rel_path| { + lib.addAssemblyFile(b.path(rel_path)); + } + lib.addCSourceFiles(.{ + .root = b.path("gen/aarch64-macos"), + .files = &.{ + "mpn/mp_bases.c", + "mpn/fib_table.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + } + if (t.os.tag == .macos and t.cpu.arch == .x86_64) { + lib.addIncludePath(b.path("gen/x86_64-macos")); + lib.addIncludePath(b.path("gen/x86_64-macos/mpn")); + for (x86_64_macos_asm_sources) |rel_path| { + lib.addAssemblyFile(b.path(rel_path)); + } + lib.addCSourceFiles(.{ + .root = b.path("gen/x86_64-macos"), + .files = &.{ + "mpn/mp_bases.c", + "mpn/fib_table.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + } + if (t.os.tag == .linux and t.cpu.arch == .aarch64) { + lib.addIncludePath(b.path("gen/aarch64-linux")); + lib.addIncludePath(b.path("gen/aarch64-linux/mpn")); + for (aarch64_linux_asm_sources) |rel_path| { + lib.addAssemblyFile(b.path(rel_path)); + } + lib.addCSourceFiles(.{ + .root = b.path("gen/aarch64-linux"), + .files = &.{ + "mpn/mp_bases.c", + "mpn/fib_table.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + } + if (t.os.tag == .linux and t.cpu.arch == .x86_64) { + lib.addIncludePath(b.path("gen/x86_64-linux")); + lib.addIncludePath(b.path("gen/x86_64-linux/mpn")); + for (x86_64_linux_asm_sources) |rel_path| { + lib.addAssemblyFile(b.path(rel_path)); + } + lib.addCSourceFiles(.{ + .root = b.path("gen/x86_64-linux"), + .files = &.{ + "mpn/mp_bases.c", + "mpn/fib_table.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + } + + if (t.os.tag == .windows and t.cpu.arch == .x86_64) { + lib.addIncludePath(b.path("gen/x86_64-windows")); + lib.addIncludePath(b.path("gen/x86_64-windows/mpn")); + for (x86_64_windows_asm_sources) |rel_path| { + lib.addAssemblyFile(b.path(rel_path)); + } + lib.addCSourceFiles(.{ + .root = b.path("gen/x86_64-windows"), + .files = &.{ + "mpn/mp_bases.c", + "mpn/fib_table.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + } + + // Generic C Sources + lib.addCSourceFiles(.{ + .root = dep_c.path(""), + .files = &generic_c_sources, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + + // These files need to be compiles twice with different macros + lib.addCSourceFiles(.{ + .root = dep_c.path(""), + .files = &.{ + "mpn/generic/sec_div.c", + "mpn/generic/sec_pi1_div.c", + "mpn/generic/sec_aors_1.c", + }, + .flags = &.{ + "-fno-sanitize=all", + "-DOPERATION_sec_div_qr", // sec_div.c + "-DOPERATION_sec_pi1_div_qr", // sec_pi1_div.c + "-DOPERATION_sec_add_1", // sec_aors_1.c + }, + }); + lib.addCSourceFiles(.{ + .root = dep_c.path(""), + .files = &.{ + "mpn/generic/sec_div.c", + "mpn/generic/sec_pi1_div.c", + "mpn/generic/sec_aors_1.c", + }, + .flags = &.{ + "-fno-sanitize=all", + "-DOPERATION_sec_div_r", // sec_div.c + "-DOPERATION_sec_pi1_div_r", // sec_pi1_div.c + "-DOPERATION_sec_sub_1", // sec_aors_1.c + }, + }); + + if (t.os.tag == .windows) { + lib.installHeader(b.path("gen/x86_64-windows/gmp.h"), "gmp.h"); + } + + b.installArtifact(lib); +} + +const aarch64_macos_asm_sources = [_][]const u8{ + "gen/aarch64-macos/mpn/add_n.s", + "gen/aarch64-macos/mpn/addlsh1_n.s", + "gen/aarch64-macos/mpn/addlsh2_n.s", + "gen/aarch64-macos/mpn/addmul_1.s", + "gen/aarch64-macos/mpn/and_n.s", + "gen/aarch64-macos/mpn/andn_n.s", + "gen/aarch64-macos/mpn/bdiv_dbm1c.s", + "gen/aarch64-macos/mpn/bdiv_q_1.s", + "gen/aarch64-macos/mpn/cnd_add_n.s", + "gen/aarch64-macos/mpn/cnd_sub_n.s", + "gen/aarch64-macos/mpn/com.s", + "gen/aarch64-macos/mpn/copyd.s", + "gen/aarch64-macos/mpn/copyi.s", + "gen/aarch64-macos/mpn/gcd_11.s", + "gen/aarch64-macos/mpn/gcd_22.s", + "gen/aarch64-macos/mpn/hamdist.s", + "gen/aarch64-macos/mpn/invert_limb.s", + "gen/aarch64-macos/mpn/ior_n.s", + "gen/aarch64-macos/mpn/iorn_n.s", + "gen/aarch64-macos/mpn/lshift.s", + "gen/aarch64-macos/mpn/lshiftc.s", + "gen/aarch64-macos/mpn/mod_34lsub1.s", + "gen/aarch64-macos/mpn/mul_1.s", + "gen/aarch64-macos/mpn/nand_n.s", + "gen/aarch64-macos/mpn/nior_n.s", + "gen/aarch64-macos/mpn/popcount.s", + "gen/aarch64-macos/mpn/rsblsh1_n.s", + "gen/aarch64-macos/mpn/rsblsh2_n.s", + "gen/aarch64-macos/mpn/rsh1add_n.s", + "gen/aarch64-macos/mpn/rsh1sub_n.s", + "gen/aarch64-macos/mpn/rshift.s", + "gen/aarch64-macos/mpn/sec_tabselect.s", + "gen/aarch64-macos/mpn/sqr_diag_addlsh1.s", + "gen/aarch64-macos/mpn/sub_n.s", + "gen/aarch64-macos/mpn/sublsh1_n.s", + "gen/aarch64-macos/mpn/sublsh2_n.s", + "gen/aarch64-macos/mpn/submul_1.s", + "gen/aarch64-macos/mpn/xnor_n.s", + "gen/aarch64-macos/mpn/xor_n.s", +}; + +const x86_64_macos_asm_sources = [_][]const u8{ + "gen/x86_64-macos/mpn/add_err1_n.s", + "gen/x86_64-macos/mpn/add_err2_n.s", + "gen/x86_64-macos/mpn/add_err3_n.s", + "gen/x86_64-macos/mpn/add_n.s", + "gen/x86_64-macos/mpn/addlsh1_n.s", + "gen/x86_64-macos/mpn/addlsh2_n.s", + "gen/x86_64-macos/mpn/addlsh_n.s", + "gen/x86_64-macos/mpn/addmul_1.s", + "gen/x86_64-macos/mpn/addmul_2.s", + "gen/x86_64-macos/mpn/and_n.s", + "gen/x86_64-macos/mpn/andn_n.s", + "gen/x86_64-macos/mpn/bdiv_dbm1c.s", + "gen/x86_64-macos/mpn/bdiv_q_1.s", + "gen/x86_64-macos/mpn/cnd_add_n.s", + "gen/x86_64-macos/mpn/cnd_sub_n.s", + "gen/x86_64-macos/mpn/com.s", + "gen/x86_64-macos/mpn/copyd.s", + "gen/x86_64-macos/mpn/copyi.s", + "gen/x86_64-macos/mpn/div_qr_1n_pi1.s", + "gen/x86_64-macos/mpn/div_qr_2n_pi1.s", + "gen/x86_64-macos/mpn/div_qr_2u_pi1.s", + "gen/x86_64-macos/mpn/dive_1.s", + "gen/x86_64-macos/mpn/divrem_1.s", + "gen/x86_64-macos/mpn/divrem_2.s", + "gen/x86_64-macos/mpn/gcd_11.s", + "gen/x86_64-macos/mpn/gcd_22.s", + "gen/x86_64-macos/mpn/hamdist.s", + "gen/x86_64-macos/mpn/invert_limb.s", + "gen/x86_64-macos/mpn/invert_limb_table.s", + "gen/x86_64-macos/mpn/ior_n.s", + "gen/x86_64-macos/mpn/iorn_n.s", + "gen/x86_64-macos/mpn/lshift.s", + "gen/x86_64-macos/mpn/lshiftc.s", + "gen/x86_64-macos/mpn/mod_1_1.s", + "gen/x86_64-macos/mpn/mod_1_2.s", + "gen/x86_64-macos/mpn/mod_1_4.s", + "gen/x86_64-macos/mpn/mod_34lsub1.s", + "gen/x86_64-macos/mpn/mode1o.s", + "gen/x86_64-macos/mpn/mul_1.s", + "gen/x86_64-macos/mpn/mul_2.s", + "gen/x86_64-macos/mpn/mul_basecase.s", + "gen/x86_64-macos/mpn/mullo_basecase.s", + "gen/x86_64-macos/mpn/nand_n.s", + "gen/x86_64-macos/mpn/nior_n.s", + "gen/x86_64-macos/mpn/popcount.s", + "gen/x86_64-macos/mpn/redc_1.s", + "gen/x86_64-macos/mpn/rsblsh1_n.s", + "gen/x86_64-macos/mpn/rsblsh2_n.s", + "gen/x86_64-macos/mpn/rsblsh_n.s", + "gen/x86_64-macos/mpn/rsh1add_n.s", + "gen/x86_64-macos/mpn/rsh1sub_n.s", + "gen/x86_64-macos/mpn/rshift.s", + "gen/x86_64-macos/mpn/sec_tabselect.s", + "gen/x86_64-macos/mpn/sqr_basecase.s", + "gen/x86_64-macos/mpn/sqr_diag_addlsh1.s", + "gen/x86_64-macos/mpn/sub_err1_n.s", + "gen/x86_64-macos/mpn/sub_err2_n.s", + "gen/x86_64-macos/mpn/sub_err3_n.s", + "gen/x86_64-macos/mpn/sub_n.s", + "gen/x86_64-macos/mpn/sublsh1_n.s", + "gen/x86_64-macos/mpn/sublsh2_n.s", + "gen/x86_64-macos/mpn/submul_1.s", + "gen/x86_64-macos/mpn/xnor_n.s", + "gen/x86_64-macos/mpn/xor_n.s", +}; + +const x86_64_windows_asm_sources = [_][]const u8{ + "gen/x86_64-windows/mpn/add_n.s", + "gen/x86_64-windows/mpn/addaddmul_1msb0.s", + "gen/x86_64-windows/mpn/addlsh1_n.s", + "gen/x86_64-windows/mpn/addlsh2_n.s", + "gen/x86_64-windows/mpn/addlsh_n.s", + "gen/x86_64-windows/mpn/addmul_1.s", + "gen/x86_64-windows/mpn/addmul_2.s", + "gen/x86_64-windows/mpn/and_n.s", + "gen/x86_64-windows/mpn/andn_n.s", + "gen/x86_64-windows/mpn/bdiv_dbm1c.s", + "gen/x86_64-windows/mpn/bdiv_q_1.s", + "gen/x86_64-windows/mpn/cnd_add_n.s", + "gen/x86_64-windows/mpn/cnd_sub_n.s", + "gen/x86_64-windows/mpn/com.s", + "gen/x86_64-windows/mpn/copyd.s", + "gen/x86_64-windows/mpn/copyi.s", + "gen/x86_64-windows/mpn/div_qr_2n_pi1.s", + "gen/x86_64-windows/mpn/dive_1.s", + "gen/x86_64-windows/mpn/divrem_1.s", + "gen/x86_64-windows/mpn/divrem_2.s", + "gen/x86_64-windows/mpn/gcd_11.s", + "gen/x86_64-windows/mpn/hamdist.s", + "gen/x86_64-windows/mpn/invert_limb.s", + "gen/x86_64-windows/mpn/invert_limb_table.s", + "gen/x86_64-windows/mpn/ior_n.s", + "gen/x86_64-windows/mpn/iorn_n.s", + "gen/x86_64-windows/mpn/lshift.s", + "gen/x86_64-windows/mpn/lshiftc.s", + "gen/x86_64-windows/mpn/mod_1_1.s", + "gen/x86_64-windows/mpn/mod_1_2.s", + "gen/x86_64-windows/mpn/mod_1_4.s", + "gen/x86_64-windows/mpn/mod_34lsub1.s", + "gen/x86_64-windows/mpn/mode1o.s", + "gen/x86_64-windows/mpn/mul_1.s", + "gen/x86_64-windows/mpn/mul_2.s", + "gen/x86_64-windows/mpn/mul_basecase.s", + "gen/x86_64-windows/mpn/mullo_basecase.s", + "gen/x86_64-windows/mpn/mulmid_basecase.s", + "gen/x86_64-windows/mpn/nand_n.s", + "gen/x86_64-windows/mpn/nior_n.s", + "gen/x86_64-windows/mpn/popcount.s", + "gen/x86_64-windows/mpn/redc_1.s", + "gen/x86_64-windows/mpn/rsblsh1_n.s", + "gen/x86_64-windows/mpn/rsblsh2_n.s", + "gen/x86_64-windows/mpn/rsblsh_n.s", + "gen/x86_64-windows/mpn/rsh1add_n.s", + "gen/x86_64-windows/mpn/rsh1sub_n.s", + "gen/x86_64-windows/mpn/rshift.s", + "gen/x86_64-windows/mpn/sec_tabselect.s", + "gen/x86_64-windows/mpn/sqr_basecase.s", + "gen/x86_64-windows/mpn/sqr_diag_addlsh1.s", + "gen/x86_64-windows/mpn/sub_n.s", + "gen/x86_64-windows/mpn/sublsh1_n.s", + "gen/x86_64-windows/mpn/submul_1.s", + "gen/x86_64-windows/mpn/xnor_n.s", + "gen/x86_64-windows/mpn/xor_n.s", +}; + +const aarch64_linux_asm_sources = [_][]const u8{ + "gen/aarch64-linux/mpn/add_n.s", + "gen/aarch64-linux/mpn/addlsh1_n.s", + "gen/aarch64-linux/mpn/addlsh2_n.s", + "gen/aarch64-linux/mpn/addmul_1.s", + "gen/aarch64-linux/mpn/and_n.s", + "gen/aarch64-linux/mpn/andn_n.s", + "gen/aarch64-linux/mpn/bdiv_dbm1c.s", + "gen/aarch64-linux/mpn/bdiv_q_1.s", + "gen/aarch64-linux/mpn/cnd_add_n.s", + "gen/aarch64-linux/mpn/cnd_sub_n.s", + "gen/aarch64-linux/mpn/com.s", + "gen/aarch64-linux/mpn/copyd.s", + "gen/aarch64-linux/mpn/copyi.s", + "gen/aarch64-linux/mpn/gcd_11.s", + "gen/aarch64-linux/mpn/gcd_22.s", + "gen/aarch64-linux/mpn/hamdist.s", + "gen/aarch64-linux/mpn/invert_limb.s", + "gen/aarch64-linux/mpn/ior_n.s", + "gen/aarch64-linux/mpn/iorn_n.s", + "gen/aarch64-linux/mpn/lshift.s", + "gen/aarch64-linux/mpn/lshiftc.s", + "gen/aarch64-linux/mpn/mod_34lsub1.s", + "gen/aarch64-linux/mpn/mul_1.s", + "gen/aarch64-linux/mpn/nand_n.s", + "gen/aarch64-linux/mpn/nior_n.s", + "gen/aarch64-linux/mpn/popcount.s", + "gen/aarch64-linux/mpn/rsblsh1_n.s", + "gen/aarch64-linux/mpn/rsblsh2_n.s", + "gen/aarch64-linux/mpn/rsh1add_n.s", + "gen/aarch64-linux/mpn/rsh1sub_n.s", + "gen/aarch64-linux/mpn/rshift.s", + "gen/aarch64-linux/mpn/sec_tabselect.s", + "gen/aarch64-linux/mpn/sqr_diag_addlsh1.s", + "gen/aarch64-linux/mpn/sub_n.s", + "gen/aarch64-linux/mpn/sublsh1_n.s", + "gen/aarch64-linux/mpn/sublsh2_n.s", + "gen/aarch64-linux/mpn/submul_1.s", + "gen/aarch64-linux/mpn/xnor_n.s", + "gen/aarch64-linux/mpn/xor_n.s", +}; + +const x86_64_linux_asm_sources = [_][]const u8{ + "gen/x86_64-linux/mpn/add_err1_n.s", + "gen/x86_64-linux/mpn/add_err2_n.s", + "gen/x86_64-linux/mpn/add_err3_n.s", + "gen/x86_64-linux/mpn/add_n.s", + "gen/x86_64-linux/mpn/addaddmul_1msb0.s", + "gen/x86_64-linux/mpn/addlsh1_n.s", + "gen/x86_64-linux/mpn/addlsh2_n.s", + "gen/x86_64-linux/mpn/addlsh_n.s", + "gen/x86_64-linux/mpn/addmul_1.s", + "gen/x86_64-linux/mpn/addmul_2.s", + "gen/x86_64-linux/mpn/and_n.s", + "gen/x86_64-linux/mpn/andn_n.s", + "gen/x86_64-linux/mpn/bdiv_dbm1c.s", + "gen/x86_64-linux/mpn/bdiv_q_1.s", + "gen/x86_64-linux/mpn/cnd_add_n.s", + "gen/x86_64-linux/mpn/cnd_sub_n.s", + "gen/x86_64-linux/mpn/com.s", + "gen/x86_64-linux/mpn/copyd.s", + "gen/x86_64-linux/mpn/copyi.s", + "gen/x86_64-linux/mpn/div_qr_1n_pi1.s", + "gen/x86_64-linux/mpn/div_qr_2n_pi1.s", + "gen/x86_64-linux/mpn/div_qr_2u_pi1.s", + "gen/x86_64-linux/mpn/dive_1.s", + "gen/x86_64-linux/mpn/divrem_1.s", + "gen/x86_64-linux/mpn/divrem_2.s", + "gen/x86_64-linux/mpn/gcd_11.s", + "gen/x86_64-linux/mpn/gcd_22.s", + "gen/x86_64-linux/mpn/hamdist.s", + "gen/x86_64-linux/mpn/invert_limb.s", + "gen/x86_64-linux/mpn/invert_limb_table.s", + "gen/x86_64-linux/mpn/ior_n.s", + "gen/x86_64-linux/mpn/iorn_n.s", + "gen/x86_64-linux/mpn/lshift.s", + "gen/x86_64-linux/mpn/lshiftc.s", + "gen/x86_64-linux/mpn/mod_1_1.s", + "gen/x86_64-linux/mpn/mod_1_2.s", + "gen/x86_64-linux/mpn/mod_1_4.s", + "gen/x86_64-linux/mpn/mod_34lsub1.s", + "gen/x86_64-linux/mpn/mode1o.s", + "gen/x86_64-linux/mpn/mul_1.s", + "gen/x86_64-linux/mpn/mul_2.s", + "gen/x86_64-linux/mpn/mul_basecase.s", + "gen/x86_64-linux/mpn/mullo_basecase.s", + "gen/x86_64-linux/mpn/mulmid_basecase.s", + "gen/x86_64-linux/mpn/nand_n.s", + "gen/x86_64-linux/mpn/nior_n.s", + "gen/x86_64-linux/mpn/popcount.s", + "gen/x86_64-linux/mpn/redc_1.s", + "gen/x86_64-linux/mpn/rsblsh1_n.s", + "gen/x86_64-linux/mpn/rsblsh2_n.s", + "gen/x86_64-linux/mpn/rsblsh_n.s", + "gen/x86_64-linux/mpn/rsh1add_n.s", + "gen/x86_64-linux/mpn/rsh1sub_n.s", + "gen/x86_64-linux/mpn/rshift.s", + "gen/x86_64-linux/mpn/sec_tabselect.s", + "gen/x86_64-linux/mpn/sqr_basecase.s", + "gen/x86_64-linux/mpn/sqr_diag_addlsh1.s", + "gen/x86_64-linux/mpn/sub_err1_n.s", + "gen/x86_64-linux/mpn/sub_err2_n.s", + "gen/x86_64-linux/mpn/sub_err3_n.s", + "gen/x86_64-linux/mpn/sub_n.s", + "gen/x86_64-linux/mpn/sublsh1_n.s", + "gen/x86_64-linux/mpn/submul_1.s", + "gen/x86_64-linux/mpn/xnor_n.s", + "gen/x86_64-linux/mpn/xor_n.s", +}; + +const generic_c_sources = [_][]const u8{ + "assert.c", + "bootstrap.c", + "compat.c", + "errno.c", + "extract-dbl.c", + // "gen-bases.c", + // "gen-fac.c", + // "gen-fib.c", + // "gen-jacobitab.c", + // "gen-psqr.c", + // "gen-trialdivtab.c", + "invalid.c", + "memory.c", + "mp_bpl.c", + "mp_clz_tab.c", + "mp_dv_tab.c", + "mp_get_fns.c", + "mp_minv_tab.c", + "mp_set_fns.c", + "nextprime.c", + "primesieve.c", + // "tal-debug.c", + // "tal-notreent.c", + "tal-reent.c", + "version.c", + + "mpf/abs.c", + "mpf/add.c", + "mpf/add_ui.c", + "mpf/ceilfloor.c", + "mpf/clear.c", + "mpf/clears.c", + "mpf/cmp.c", + "mpf/cmp_d.c", + "mpf/cmp_si.c", + "mpf/cmp_ui.c", + "mpf/cmp_z.c", + "mpf/div.c", + "mpf/div_2exp.c", + "mpf/div_ui.c", + "mpf/dump.c", + "mpf/eq.c", + "mpf/fits_sint.c", + "mpf/fits_slong.c", + "mpf/fits_sshort.c", + "mpf/fits_uint.c", + "mpf/fits_ulong.c", + "mpf/fits_ushort.c", + "mpf/get_d.c", + "mpf/get_d_2exp.c", + "mpf/get_dfl_prec.c", + "mpf/get_prc.c", + "mpf/get_si.c", + "mpf/get_str.c", + "mpf/get_ui.c", + "mpf/init.c", + "mpf/init2.c", + "mpf/inits.c", + "mpf/inp_str.c", + "mpf/int_p.c", + "mpf/iset.c", + "mpf/iset_d.c", + "mpf/iset_si.c", + "mpf/iset_str.c", + "mpf/iset_ui.c", + "mpf/mul.c", + "mpf/mul_2exp.c", + "mpf/mul_ui.c", + "mpf/neg.c", + "mpf/out_str.c", + "mpf/pow_ui.c", + "mpf/random2.c", + "mpf/reldiff.c", + "mpf/set.c", + "mpf/set_d.c", + "mpf/set_dfl_prec.c", + "mpf/set_prc.c", + "mpf/set_prc_raw.c", + "mpf/set_q.c", + "mpf/set_si.c", + "mpf/set_str.c", + "mpf/set_ui.c", + "mpf/set_z.c", + "mpf/size.c", + "mpf/sqrt.c", + "mpf/sqrt_ui.c", + "mpf/sub.c", + "mpf/sub_ui.c", + "mpf/swap.c", + "mpf/trunc.c", + "mpf/ui_div.c", + "mpf/ui_sub.c", + "mpf/urandomb.c", + + "mpn/generic/add.c", + "mpn/generic/add_1.c", + "mpn/generic/add_err1_n.c", + "mpn/generic/add_err2_n.c", + "mpn/generic/add_err3_n.c", + "mpn/generic/add_n_sub_n.c", + "mpn/generic/bdiv_q.c", + "mpn/generic/bdiv_qr.c", + "mpn/generic/binvert.c", + "mpn/generic/broot.c", + "mpn/generic/brootinv.c", + "mpn/generic/bsqrt.c", + "mpn/generic/bsqrtinv.c", + "mpn/generic/cmp.c", + "mpn/generic/cnd_swap.c", + "mpn/generic/comb_tables.c", + "mpn/generic/compute_powtab.c", + "mpn/generic/dcpi1_bdiv_q.c", + "mpn/generic/dcpi1_bdiv_qr.c", + "mpn/generic/dcpi1_div_q.c", + "mpn/generic/dcpi1_div_qr.c", + "mpn/generic/dcpi1_divappr_q.c", + "mpn/generic/div_q.c", + "mpn/generic/div_qr_1.c", + "mpn/generic/div_qr_1n_pi1.c", + "mpn/generic/div_qr_2.c", + "mpn/generic/div_qr_2n_pi1.c", + "mpn/generic/div_qr_2u_pi1.c", + "mpn/generic/dive_1.c", + "mpn/generic/diveby3.c", + "mpn/generic/divexact.c", + "mpn/generic/divis.c", + "mpn/generic/divrem.c", + "mpn/generic/divrem_1.c", + "mpn/generic/divrem_2.c", + "mpn/generic/dump.c", + "mpn/generic/fib2_ui.c", + "mpn/generic/fib2m.c", + "mpn/generic/gcd.c", + "mpn/generic/gcd_1.c", + "mpn/generic/gcd_subdiv_step.c", + "mpn/generic/gcdext.c", + "mpn/generic/gcdext_1.c", + "mpn/generic/gcdext_lehmer.c", + "mpn/generic/get_d.c", + "mpn/generic/get_str.c", + "mpn/generic/hgcd.c", + "mpn/generic/hgcd2.c", + "mpn/generic/hgcd2_jacobi.c", + "mpn/generic/hgcd_appr.c", + "mpn/generic/hgcd_jacobi.c", + "mpn/generic/hgcd_matrix.c", + "mpn/generic/hgcd_reduce.c", + "mpn/generic/hgcd_step.c", + "mpn/generic/invert.c", + "mpn/generic/invertappr.c", + "mpn/generic/jacbase.c", + "mpn/generic/jacobi.c", + "mpn/generic/jacobi_2.c", + "mpn/generic/matrix22_mul.c", + "mpn/generic/matrix22_mul1_inverse_vector.c", + "mpn/generic/mod_1.c", + "mpn/generic/mod_1_1.c", + "mpn/generic/mod_1_2.c", + "mpn/generic/mod_1_3.c", + "mpn/generic/mod_1_4.c", + "mpn/generic/mode1o.c", + "mpn/generic/mu_bdiv_q.c", + "mpn/generic/mu_bdiv_qr.c", + "mpn/generic/mu_div_q.c", + "mpn/generic/mu_div_qr.c", + "mpn/generic/mu_divappr_q.c", + "mpn/generic/mul.c", + "mpn/generic/mul_basecase.c", + "mpn/generic/mul_fft.c", + "mpn/generic/mul_n.c", + "mpn/generic/mullo_basecase.c", + "mpn/generic/mullo_n.c", + "mpn/generic/mulmid.c", + "mpn/generic/mulmid_basecase.c", + "mpn/generic/mulmid_n.c", + "mpn/generic/mulmod_bnm1.c", + "mpn/generic/mulmod_bknp1.c", + "mpn/generic/neg.c", + "mpn/generic/nussbaumer_mul.c", + "mpn/generic/perfpow.c", + "mpn/generic/perfsqr.c", + "mpn/generic/pow_1.c", + "mpn/generic/powlo.c", + "mpn/generic/powm.c", + "mpn/generic/pre_divrem_1.c", + "mpn/generic/pre_mod_1.c", + "mpn/generic/random.c", + "mpn/generic/random2.c", + "mpn/generic/redc_1.c", + "mpn/generic/redc_2.c", + "mpn/generic/redc_n.c", + "mpn/generic/remove.c", + "mpn/generic/rootrem.c", + "mpn/generic/sbpi1_bdiv_q.c", + "mpn/generic/sbpi1_bdiv_qr.c", + "mpn/generic/sbpi1_bdiv_r.c", + "mpn/generic/sbpi1_div_q.c", + "mpn/generic/sbpi1_div_qr.c", + "mpn/generic/sbpi1_divappr_q.c", + "mpn/generic/scan0.c", + "mpn/generic/scan1.c", + // "mpn/generic/sec_aors_1.c", + // "mpn/generic/sec_div.c", + "mpn/generic/sec_invert.c", + "mpn/generic/sec_mul.c", + // "mpn/generic/sec_pi1_div.c", + "mpn/generic/sec_powm.c", + "mpn/generic/sec_sqr.c", + "mpn/generic/set_str.c", + "mpn/generic/sizeinbase.c", + "mpn/generic/sqr.c", + "mpn/generic/sqr_basecase.c", + "mpn/generic/sqrlo.c", + "mpn/generic/sqrlo_basecase.c", + "mpn/generic/sqrmod_bnm1.c", + "mpn/generic/sqrtrem.c", + "mpn/generic/strongfibo.c", + "mpn/generic/sub.c", + "mpn/generic/sub_1.c", + "mpn/generic/sub_err1_n.c", + "mpn/generic/sub_err2_n.c", + "mpn/generic/sub_err3_n.c", + "mpn/generic/tdiv_qr.c", + "mpn/generic/toom22_mul.c", + "mpn/generic/toom2_sqr.c", + "mpn/generic/toom32_mul.c", + "mpn/generic/toom33_mul.c", + "mpn/generic/toom3_sqr.c", + "mpn/generic/toom42_mul.c", + "mpn/generic/toom42_mulmid.c", + "mpn/generic/toom43_mul.c", + "mpn/generic/toom44_mul.c", + "mpn/generic/toom4_sqr.c", + "mpn/generic/toom52_mul.c", + "mpn/generic/toom53_mul.c", + "mpn/generic/toom54_mul.c", + "mpn/generic/toom62_mul.c", + "mpn/generic/toom63_mul.c", + "mpn/generic/toom6_sqr.c", + "mpn/generic/toom6h_mul.c", + "mpn/generic/toom8_sqr.c", + "mpn/generic/toom8h_mul.c", + "mpn/generic/toom_couple_handling.c", + "mpn/generic/toom_eval_dgr3_pm1.c", + "mpn/generic/toom_eval_dgr3_pm2.c", + "mpn/generic/toom_eval_pm1.c", + "mpn/generic/toom_eval_pm2.c", + "mpn/generic/toom_eval_pm2exp.c", + "mpn/generic/toom_eval_pm2rexp.c", + "mpn/generic/toom_interpolate_12pts.c", + "mpn/generic/toom_interpolate_16pts.c", + "mpn/generic/toom_interpolate_5pts.c", + "mpn/generic/toom_interpolate_6pts.c", + "mpn/generic/toom_interpolate_7pts.c", + "mpn/generic/toom_interpolate_8pts.c", + "mpn/generic/trialdiv.c", + "mpn/generic/zero.c", + "mpn/generic/zero_p.c", + + "mpq/abs.c", + "mpq/aors.c", + "mpq/canonicalize.c", + "mpq/clear.c", + "mpq/clears.c", + "mpq/cmp.c", + "mpq/cmp_si.c", + "mpq/cmp_ui.c", + "mpq/div.c", + "mpq/equal.c", + "mpq/get_d.c", + "mpq/get_den.c", + "mpq/get_num.c", + "mpq/get_str.c", + "mpq/init.c", + "mpq/inits.c", + "mpq/inp_str.c", + "mpq/inv.c", + "mpq/md_2exp.c", + "mpq/mul.c", + "mpq/neg.c", + "mpq/out_str.c", + "mpq/set.c", + "mpq/set_d.c", + "mpq/set_den.c", + "mpq/set_f.c", + "mpq/set_num.c", + "mpq/set_si.c", + "mpq/set_str.c", + "mpq/set_ui.c", + "mpq/set_z.c", + "mpq/swap.c", + + "mpz/2fac_ui.c", + "mpz/abs.c", + "mpz/add.c", + "mpz/add_ui.c", + "mpz/and.c", + "mpz/aorsmul.c", + "mpz/aorsmul_i.c", + "mpz/array_init.c", + "mpz/bin_ui.c", + "mpz/bin_uiui.c", + "mpz/cdiv_q.c", + "mpz/cdiv_q_ui.c", + "mpz/cdiv_qr.c", + "mpz/cdiv_qr_ui.c", + "mpz/cdiv_r.c", + "mpz/cdiv_r_ui.c", + "mpz/cdiv_ui.c", + "mpz/cfdiv_q_2exp.c", + "mpz/cfdiv_r_2exp.c", + "mpz/clear.c", + "mpz/clears.c", + "mpz/clrbit.c", + "mpz/cmp.c", + "mpz/cmp_d.c", + "mpz/cmp_si.c", + "mpz/cmp_ui.c", + "mpz/cmpabs.c", + "mpz/cmpabs_d.c", + "mpz/cmpabs_ui.c", + "mpz/com.c", + "mpz/combit.c", + "mpz/cong.c", + "mpz/cong_2exp.c", + "mpz/cong_ui.c", + "mpz/dive_ui.c", + "mpz/divegcd.c", + "mpz/divexact.c", + "mpz/divis.c", + "mpz/divis_2exp.c", + "mpz/divis_ui.c", + "mpz/dump.c", + "mpz/export.c", + "mpz/fac_ui.c", + "mpz/fdiv_q.c", + "mpz/fdiv_q_ui.c", + "mpz/fdiv_qr.c", + "mpz/fdiv_qr_ui.c", + "mpz/fdiv_r.c", + "mpz/fdiv_r_ui.c", + "mpz/fdiv_ui.c", + "mpz/fib2_ui.c", + "mpz/fib_ui.c", + "mpz/fits_sint.c", + "mpz/fits_slong.c", + "mpz/fits_sshort.c", + "mpz/fits_uint.c", + "mpz/fits_ulong.c", + "mpz/fits_ushort.c", + "mpz/gcd.c", + "mpz/gcd_ui.c", + "mpz/gcdext.c", + "mpz/get_d.c", + "mpz/get_d_2exp.c", + "mpz/get_si.c", + "mpz/get_str.c", + "mpz/get_ui.c", + "mpz/getlimbn.c", + "mpz/hamdist.c", + "mpz/import.c", + "mpz/init.c", + "mpz/init2.c", + "mpz/inits.c", + "mpz/inp_raw.c", + "mpz/inp_str.c", + "mpz/invert.c", + "mpz/ior.c", + "mpz/iset.c", + "mpz/iset_d.c", + "mpz/iset_si.c", + "mpz/iset_str.c", + "mpz/iset_ui.c", + "mpz/jacobi.c", + "mpz/kronsz.c", + "mpz/kronuz.c", + "mpz/kronzs.c", + "mpz/kronzu.c", + "mpz/lcm.c", + "mpz/lcm_ui.c", + "mpz/limbs_finish.c", + "mpz/limbs_modify.c", + "mpz/limbs_read.c", + "mpz/limbs_write.c", + "mpz/lucmod.c", + "mpz/lucnum2_ui.c", + "mpz/lucnum_ui.c", + "mpz/mfac_uiui.c", + "mpz/millerrabin.c", + "mpz/mod.c", + "mpz/mul.c", + "mpz/mul_2exp.c", + "mpz/mul_si.c", + "mpz/mul_ui.c", + "mpz/n_pow_ui.c", + "mpz/neg.c", + "mpz/nextprime.c", + "mpz/oddfac_1.c", + "mpz/out_raw.c", + "mpz/out_str.c", + "mpz/perfpow.c", + "mpz/perfsqr.c", + "mpz/popcount.c", + "mpz/pow_ui.c", + "mpz/powm.c", + "mpz/powm_sec.c", + "mpz/powm_ui.c", + "mpz/pprime_p.c", + "mpz/primorial_ui.c", + "mpz/prodlimbs.c", + "mpz/random.c", + "mpz/random2.c", + "mpz/realloc.c", + "mpz/realloc2.c", + "mpz/remove.c", + "mpz/roinit_n.c", + "mpz/root.c", + "mpz/rootrem.c", + "mpz/rrandomb.c", + "mpz/scan0.c", + "mpz/scan1.c", + "mpz/set.c", + "mpz/set_d.c", + "mpz/set_f.c", + "mpz/set_q.c", + "mpz/set_si.c", + "mpz/set_str.c", + "mpz/set_ui.c", + "mpz/setbit.c", + "mpz/size.c", + "mpz/sizeinbase.c", + "mpz/sqrt.c", + "mpz/sqrtrem.c", + "mpz/stronglucas.c", + "mpz/sub.c", + "mpz/sub_ui.c", + "mpz/swap.c", + "mpz/tdiv_q.c", + "mpz/tdiv_q_2exp.c", + "mpz/tdiv_q_ui.c", + "mpz/tdiv_qr.c", + "mpz/tdiv_qr_ui.c", + "mpz/tdiv_r.c", + "mpz/tdiv_r_2exp.c", + "mpz/tdiv_r_ui.c", + "mpz/tdiv_ui.c", + "mpz/tstbit.c", + "mpz/ui_pow_ui.c", + "mpz/ui_sub.c", + "mpz/urandomb.c", + "mpz/urandomm.c", + "mpz/xor.c", + + "printf/asprintf.c", + "printf/asprntffuns.c", + "printf/doprnt.c", + "printf/doprntf.c", + "printf/doprnti.c", + "printf/fprintf.c", + "printf/obprintf.c", + "printf/obprntffuns.c", + "printf/obvprintf.c", + "printf/printf.c", + "printf/printffuns.c", + "printf/repl-vsnprintf.c", + "printf/snprintf.c", + "printf/snprntffuns.c", + "printf/sprintf.c", + "printf/sprintffuns.c", + "printf/vasprintf.c", + "printf/vfprintf.c", + "printf/vprintf.c", + "printf/vsnprintf.c", + "printf/vsprintf.c", + + "rand/rand.c", + "rand/randbui.c", + "rand/randclr.c", + "rand/randdef.c", + "rand/randiset.c", + "rand/randlc2s.c", + "rand/randlc2x.c", + "rand/randmt.c", + "rand/randmts.c", + "rand/randmui.c", + "rand/rands.c", + "rand/randsd.c", + "rand/randsdui.c", + + "scanf/doscan.c", + "scanf/fscanf.c", + "scanf/fscanffuns.c", + "scanf/scanf.c", + "scanf/sscanf.c", + "scanf/sscanffuns.c", + "scanf/vfscanf.c", + "scanf/vscanf.c", + "scanf/vsscanf.c", +}; diff --git a/vere/ext/gmp/build.zig.zon b/vere/ext/gmp/build.zig.zon new file mode 100644 index 0000000..41572e3 --- /dev/null +++ b/vere/ext/gmp/build.zig.zon @@ -0,0 +1,14 @@ +.{ + .name = .gmp, + .version = "0.0.1", + .fingerprint = 0x328f6061a804066a, + .dependencies = .{ + .gmp = .{ + .url = "https://ftp.fr.openbsd.org/pub/OpenBSD/distfiles/gmp-6.3.0.tar.xz", + .hash = "N-V-__8AAE5fAwHUYgLBeqNatYSKf3qBK3l8nwdpjyY8igK0", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/gmp/gen/README.md b/vere/ext/gmp/gen/README.md new file mode 100644 index 0000000..ebc0bca --- /dev/null +++ b/vere/ext/gmp/gen/README.md @@ -0,0 +1,74 @@ +# Generated architecture specific `.c`, `.s`, and `.h` files + +To generate these, first run the `./configure` script under the unpacked GMP dependency directory with the following options: + +macOS: +```terminal +./configure --with-pic --disable-shared +``` + +linux-x86_64: +```terminal +./configure --with-pic --disable-shared --host=x86_64-linux-musl +``` + +linux-aarch64: +```terminal +./configure --with-pic --disable-shared --host=aarch64-linux-musl +``` + +windows (from wsl): +```terminal +CC_FOR_BUILD=gcc ./configure --host=x86_64-w64-mingw32 --disable-shared +``` + +Next, navigate under `mpn/` and run the following to generate the assembly files: + +```bash +for file in $(find . -maxdepth 1 -print | grep "\.asm$"); do + filename_no_path="${file#"./"}"; + filename="${filename_no_path%.*}"; + echo "m4 -DHAVE_CONFIG_H -D__GMP_WITHIN_GMP -DOPERATION_${filename} -DPIC $file > ${filename}.s"; + m4 -DHAVE_CONFIG_H -D__GMP_WITHIN_GMP -DOPERATION_${filename} -DPIC $file > ${filename}.s; +done +``` + +Next, copy the generated `mpn/*.s` files under the appropriate path, e.g., +`aarch64-macos/mpn/.` + +Now, under the GMP root dir run `make` and copy these files as well: + +- `config.h` +- `mp_bases.h` +- `fac_table.h` +- `fib_table.h` +- `trialdivtab.h` +- `sieve_table.h` +- `mpn/fib_table.c` +- `mpn/jacobitab.h` +- `mpn/mp_bases.c` +- `mpn/perfsqr.h` + +e.g. +```bash +cp {config.h, mp_bases.h,fac_table.h,fib_table.h,trialdivtab.h,sieve_table.h} aarch64-macos/. +cp {mpn/fib_table.c,mpn/jacobitab.h,mpn/mp_bases.c,mpn/perfsqr.h} aarch64-macos/mpn/. +``` + +## Some additional snippets + +### Write the generated assembly file paths into a file `ssources` + +```bash +for file in $(find ./mpn -maxdepth 1 -print | grep "\.s" | sort); do + echo $(realpath $file) >> ssources; +done +``` + +### Write the relevant C source file paths into a file `csources` + +```bash +for file in $(find ./mpn -maxdepth 1 -print | grep "\.c" | sort); do + echo $(realpath $file) >> csources; +done +``` diff --git a/vere/ext/gmp/gen/aarch64-linux/config.h b/vere/ext/gmp/gen/aarch64-linux/config.h new file mode 100644 index 0000000..ad9547c --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/config.h @@ -0,0 +1,672 @@ +/* config.h. Generated from config.in by configure. */ +/* config.in. Generated from configure.ac by autoheader. */ + +/* + +Copyright 1996-2022 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + +or + + * the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any + later version. + +or both in parallel, as here. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library. If not, +see https://www.gnu.org/licenses/. +*/ + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* The gmp-mparam.h file (a string) the tune program should suggest updating. + */ +#define GMP_MPARAM_H_SUGGEST "./mpn/arm64/gmp-mparam.h" + +/* Define to 1 if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Define to 1 if alloca() works (via gmp-impl.h). */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((const)) */ +#define HAVE_ATTRIBUTE_CONST 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((malloc)) */ +#define HAVE_ATTRIBUTE_MALLOC 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((mode (XX))) + */ +#define HAVE_ATTRIBUTE_MODE 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((noreturn)) */ +#define HAVE_ATTRIBUTE_NORETURN 1 + +/* Define to 1 if you have the `attr_get' function. */ +/* #undef HAVE_ATTR_GET */ + +/* Define to 1 if tests/libtests has calling conventions checking for the CPU + */ +/* #undef HAVE_CALLING_CONVENTIONS */ + +/* Define to 1 if you have the `clock' function. */ +#define HAVE_CLOCK 1 + +/* Define to 1 if you have the `clock_gettime' function */ +#define HAVE_CLOCK_GETTIME 1 + +/* Define to 1 if you have the `cputime' function. */ +/* #undef HAVE_CPUTIME */ + +/* Define to 1 if you have the declaration of `fgetc', and to 0 if you don't. + */ +#define HAVE_DECL_FGETC 1 + +/* Define to 1 if you have the declaration of `fscanf', and to 0 if you don't. + */ +#define HAVE_DECL_FSCANF 1 + +/* Define to 1 if you have the declaration of `optarg', and to 0 if you don't. + */ +#define HAVE_DECL_OPTARG 1 + +/* Define to 1 if you have the declaration of `sys_errlist', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_ERRLIST 0 + +/* Define to 1 if you have the declaration of `sys_nerr', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_NERR 0 + +/* Define to 1 if you have the declaration of `ungetc', and to 0 if you don't. + */ +#define HAVE_DECL_UNGETC 1 + +/* Define to 1 if you have the declaration of `vfprintf', and to 0 if you + don't. */ +#define HAVE_DECL_VFPRINTF 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define one of the following to 1 for the format of a `double'. + If your format is not among these choices, or you don't know what it is, + then leave all undefined. + IEEE_LITTLE_SWAPPED means little endian, but with the two 4-byte halves + swapped, as used by ARM CPUs in little endian mode. */ +/* #undef HAVE_DOUBLE_IEEE_BIG_ENDIAN */ +#define HAVE_DOUBLE_IEEE_LITTLE_ENDIAN 1 +/* #undef HAVE_DOUBLE_IEEE_LITTLE_SWAPPED */ +/* #undef HAVE_DOUBLE_VAX_D */ +/* #undef HAVE_DOUBLE_VAX_G */ +/* #undef HAVE_DOUBLE_CRAY_CFP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define to 1 if you have the `getrusage' function. */ +#define HAVE_GETRUSAGE 1 + +/* Define to 1 if you have the `getsysinfo' function. */ +/* #undef HAVE_GETSYSINFO */ + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((visibility)) + and __attribute__ ((alias)) */ +#define HAVE_HIDDEN_ALIAS 1 + +/* Define one of these to 1 for the host CPU family. + If your CPU is not in any of these families, leave all undefined. + For an AMD64 chip, define "x86" in ABI=32, but not in ABI=64. */ +/* #undef HAVE_HOST_CPU_FAMILY_alpha */ +/* #undef HAVE_HOST_CPU_FAMILY_m68k */ +/* #undef HAVE_HOST_CPU_FAMILY_power */ +/* #undef HAVE_HOST_CPU_FAMILY_powerpc */ +/* #undef HAVE_HOST_CPU_FAMILY_x86 */ +/* #undef HAVE_HOST_CPU_FAMILY_x86_64 */ + +/* Define one of the following to 1 for the host CPU, as per the output of + ./config.guess. If your CPU is not listed here, leave all undefined. */ +/* #undef HAVE_HOST_CPU_alphaev67 */ +/* #undef HAVE_HOST_CPU_alphaev68 */ +/* #undef HAVE_HOST_CPU_alphaev7 */ +/* #undef HAVE_HOST_CPU_m68020 */ +/* #undef HAVE_HOST_CPU_m68030 */ +/* #undef HAVE_HOST_CPU_m68040 */ +/* #undef HAVE_HOST_CPU_m68060 */ +/* #undef HAVE_HOST_CPU_m68360 */ +/* #undef HAVE_HOST_CPU_powerpc604 */ +/* #undef HAVE_HOST_CPU_powerpc604e */ +/* #undef HAVE_HOST_CPU_powerpc750 */ +/* #undef HAVE_HOST_CPU_powerpc7400 */ +/* #undef HAVE_HOST_CPU_supersparc */ +/* #undef HAVE_HOST_CPU_i386 */ +/* #undef HAVE_HOST_CPU_i586 */ +/* #undef HAVE_HOST_CPU_i686 */ +/* #undef HAVE_HOST_CPU_pentium */ +/* #undef HAVE_HOST_CPU_pentiummmx */ +/* #undef HAVE_HOST_CPU_pentiumpro */ +/* #undef HAVE_HOST_CPU_pentium2 */ +/* #undef HAVE_HOST_CPU_pentium3 */ +/* #undef HAVE_HOST_CPU_pentium4 */ +/* #undef HAVE_HOST_CPU_core2 */ +/* #undef HAVE_HOST_CPU_nehalem */ +/* #undef HAVE_HOST_CPU_westmere */ +/* #undef HAVE_HOST_CPU_sandybridge */ +/* #undef HAVE_HOST_CPU_ivybridge */ +/* #undef HAVE_HOST_CPU_haswell */ +/* #undef HAVE_HOST_CPU_broadwell */ +/* #undef HAVE_HOST_CPU_skylake */ +/* #undef HAVE_HOST_CPU_silvermont */ +/* #undef HAVE_HOST_CPU_goldmont */ +/* #undef HAVE_HOST_CPU_tremont */ +/* #undef HAVE_HOST_CPU_k8 */ +/* #undef HAVE_HOST_CPU_k10 */ +/* #undef HAVE_HOST_CPU_bulldozer */ +/* #undef HAVE_HOST_CPU_piledriver */ +/* #undef HAVE_HOST_CPU_steamroller */ +/* #undef HAVE_HOST_CPU_excavator */ +/* #undef HAVE_HOST_CPU_zen */ +/* #undef HAVE_HOST_CPU_bobcat */ +/* #undef HAVE_HOST_CPU_jaguar */ +/* #undef HAVE_HOST_CPU_s390_z900 */ +/* #undef HAVE_HOST_CPU_s390_z990 */ +/* #undef HAVE_HOST_CPU_s390_z9 */ +/* #undef HAVE_HOST_CPU_s390_z10 */ +/* #undef HAVE_HOST_CPU_s390_z196 */ +/* #undef HAVE_HOST_CPU_s390_z13 */ +/* #undef HAVE_HOST_CPU_s390_z14 */ +/* #undef HAVE_HOST_CPU_s390_z15 */ + +/* Define to 1 iff we have a s390 with 64-bit registers. */ +/* #undef HAVE_HOST_CPU_s390_zarch */ + +/* Define to 1 if the system has the type `intmax_t'. */ +#define HAVE_INTMAX_T 1 + +/* Define to 1 if the system has the type `intptr_t'. */ +#define HAVE_INTPTR_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_INVENT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LANGINFO_H 1 + +/* Define one of these to 1 for the endianness of `mp_limb_t'. + If the endianness is not a simple big or little, or you don't know what + it is, then leave both undefined. */ +/* #undef HAVE_LIMB_BIG_ENDIAN */ +#define HAVE_LIMB_LITTLE_ENDIAN 1 + +/* Define to 1 if you have the `localeconv' function. */ +#define HAVE_LOCALECONV 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if the system has the type `long double'. */ +#define HAVE_LONG_DOUBLE 1 + +/* Define to 1 if the system has the type `long long'. */ +#define HAVE_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACHINE_HAL_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `mmap' function. */ +#define HAVE_MMAP 1 + +/* Define to 1 if you have the `mprotect' function. */ +#define HAVE_MPROTECT 1 + +/* Define to 1 each of the following for which a native (ie. CPU specific) + implementation of the corresponding routine exists. */ +#define HAVE_NATIVE_mpn_add_n 1 +/* #undef HAVE_NATIVE_mpn_add_n_sub_n */ +#define HAVE_NATIVE_mpn_add_nc 1 +/* #undef HAVE_NATIVE_mpn_addaddmul_1msb0 */ +#define HAVE_NATIVE_mpn_addlsh1_n 1 +#define HAVE_NATIVE_mpn_addlsh2_n 1 +/* #undef HAVE_NATIVE_mpn_addlsh_n */ +/* #undef HAVE_NATIVE_mpn_addlsh1_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addmul_1c */ +/* #undef HAVE_NATIVE_mpn_addmul_2 */ +/* #undef HAVE_NATIVE_mpn_addmul_3 */ +/* #undef HAVE_NATIVE_mpn_addmul_4 */ +/* #undef HAVE_NATIVE_mpn_addmul_5 */ +/* #undef HAVE_NATIVE_mpn_addmul_6 */ +/* #undef HAVE_NATIVE_mpn_addmul_7 */ +/* #undef HAVE_NATIVE_mpn_addmul_8 */ +/* #undef HAVE_NATIVE_mpn_addmul_2s */ +#define HAVE_NATIVE_mpn_and_n 1 +#define HAVE_NATIVE_mpn_andn_n 1 +#define HAVE_NATIVE_mpn_bdiv_dbm1c 1 +#define HAVE_NATIVE_mpn_bdiv_q_1 1 +#define HAVE_NATIVE_mpn_pi1_bdiv_q_1 1 +#define HAVE_NATIVE_mpn_cnd_add_n 1 +#define HAVE_NATIVE_mpn_cnd_sub_n 1 +#define HAVE_NATIVE_mpn_com 1 +#define HAVE_NATIVE_mpn_copyd 1 +#define HAVE_NATIVE_mpn_copyi 1 +/* #undef HAVE_NATIVE_mpn_div_qr_1n_pi1 */ +/* #undef HAVE_NATIVE_mpn_div_qr_2 */ +/* #undef HAVE_NATIVE_mpn_divexact_1 */ +/* #undef HAVE_NATIVE_mpn_divexact_by3c */ +#define HAVE_NATIVE_mpn_divrem_1 1 +/* #undef HAVE_NATIVE_mpn_divrem_1c */ +/* #undef HAVE_NATIVE_mpn_divrem_2 */ +/* #undef HAVE_NATIVE_mpn_gcd_1 */ +#define HAVE_NATIVE_mpn_gcd_11 1 +#define HAVE_NATIVE_mpn_gcd_22 1 +#define HAVE_NATIVE_mpn_hamdist 1 +#define HAVE_NATIVE_mpn_invert_limb 1 +#define HAVE_NATIVE_mpn_ior_n 1 +#define HAVE_NATIVE_mpn_iorn_n 1 +#define HAVE_NATIVE_mpn_lshift 1 +#define HAVE_NATIVE_mpn_lshiftc 1 +/* #undef HAVE_NATIVE_mpn_lshsub_n */ +/* #undef HAVE_NATIVE_mpn_mod_1 */ +/* #undef HAVE_NATIVE_mpn_mod_1_1p */ +/* #undef HAVE_NATIVE_mpn_mod_1c */ +/* #undef HAVE_NATIVE_mpn_mod_1s_2p */ +/* #undef HAVE_NATIVE_mpn_mod_1s_4p */ +#define HAVE_NATIVE_mpn_mod_34lsub1 1 +/* #undef HAVE_NATIVE_mpn_modexact_1_odd */ +/* #undef HAVE_NATIVE_mpn_modexact_1c_odd */ +#define HAVE_NATIVE_mpn_mul_1 1 +#define HAVE_NATIVE_mpn_mul_1c 1 +/* #undef HAVE_NATIVE_mpn_mul_2 */ +/* #undef HAVE_NATIVE_mpn_mul_3 */ +/* #undef HAVE_NATIVE_mpn_mul_4 */ +/* #undef HAVE_NATIVE_mpn_mul_5 */ +/* #undef HAVE_NATIVE_mpn_mul_6 */ +/* #undef HAVE_NATIVE_mpn_mul_basecase */ +/* #undef HAVE_NATIVE_mpn_mullo_basecase */ +#define HAVE_NATIVE_mpn_nand_n 1 +#define HAVE_NATIVE_mpn_nior_n 1 +#define HAVE_NATIVE_mpn_popcount 1 +#define HAVE_NATIVE_mpn_preinv_divrem_1 1 +/* #undef HAVE_NATIVE_mpn_preinv_mod_1 */ +/* #undef HAVE_NATIVE_mpn_redc_1 */ +/* #undef HAVE_NATIVE_mpn_redc_2 */ +#define HAVE_NATIVE_mpn_rsblsh1_n 1 +#define HAVE_NATIVE_mpn_rsblsh2_n 1 +/* #undef HAVE_NATIVE_mpn_rsblsh_n */ +/* #undef HAVE_NATIVE_mpn_rsblsh1_nc */ +/* #undef HAVE_NATIVE_mpn_rsblsh2_nc */ +/* #undef HAVE_NATIVE_mpn_rsblsh_nc */ +#define HAVE_NATIVE_mpn_rsh1add_n 1 +/* #undef HAVE_NATIVE_mpn_rsh1add_nc */ +#define HAVE_NATIVE_mpn_rsh1sub_n 1 +/* #undef HAVE_NATIVE_mpn_rsh1sub_nc */ +#define HAVE_NATIVE_mpn_rshift 1 +/* #undef HAVE_NATIVE_mpn_sbpi1_bdiv_r */ +/* #undef HAVE_NATIVE_mpn_sqr_basecase */ +/* #undef HAVE_NATIVE_mpn_sqr_diagonal */ +#define HAVE_NATIVE_mpn_sqr_diag_addlsh1 1 +#define HAVE_NATIVE_mpn_sub_n 1 +#define HAVE_NATIVE_mpn_sub_nc 1 +#define HAVE_NATIVE_mpn_sublsh1_n 1 +#define HAVE_NATIVE_mpn_sublsh2_n 1 +/* #undef HAVE_NATIVE_mpn_sublsh_n */ +/* #undef HAVE_NATIVE_mpn_sublsh1_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh2_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh1_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh2_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh1_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh2_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_submul_1c */ +/* #undef HAVE_NATIVE_mpn_tabselect */ +/* #undef HAVE_NATIVE_mpn_udiv_qrnnd */ +/* #undef HAVE_NATIVE_mpn_udiv_qrnnd_r */ +/* #undef HAVE_NATIVE_mpn_umul_ppmm */ +/* #undef HAVE_NATIVE_mpn_umul_ppmm_r */ +#define HAVE_NATIVE_mpn_xor_n 1 +#define HAVE_NATIVE_mpn_xnor_n 1 + +/* Define to 1 if you have the `nl_langinfo' function. */ +#define HAVE_NL_LANGINFO 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NL_TYPES_H 1 + +/* Define to 1 if you have the `obstack_vprintf' function. */ +/* #undef HAVE_OBSTACK_VPRINTF 1 */ + +/* Define to 1 if you have the `popen' function. */ +#define HAVE_POPEN 1 + +/* Define to 1 if you have the `processor_info' function. */ +/* #undef HAVE_PROCESSOR_INFO */ + +/* Define to 1 if `struct pst_processor' exists and contains + `psp_iticksperclktick'. */ +/* #undef HAVE_PSP_ITICKSPERCLKTICK */ + +/* Define to 1 if you have the `pstat_getprocessor' function. */ +/* #undef HAVE_PSTAT_GETPROCESSOR */ + +/* Define to 1 if the system has the type `ptrdiff_t'. */ +#define HAVE_PTRDIFF_T 1 + +/* Define to 1 if the system has the type `quad_t'. */ +#define HAVE_QUAD_T 1 + +/* Define to 1 if you have the `raise' function. */ +#define HAVE_RAISE 1 + +/* Define to 1 if you have the `read_real_time' function. */ +/* #undef HAVE_READ_REAL_TIME */ + +/* Define to 1 if you have the `sigaction' function. */ +#define HAVE_SIGACTION 1 + +/* Define to 1 if you have the `sigaltstack' function. */ +#define HAVE_SIGALTSTACK 1 + +/* Define to 1 if you have the `sigstack' function. */ +#define HAVE_SIGSTACK 1 + +/* Tune directory speed_cyclecounter, undef=none, 1=32bits, 2=64bits) */ +/* #undef HAVE_SPEED_CYCLECOUNTER */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SSTREAM */ + +/* Define to 1 if the system has the type `stack_t'. */ +#define HAVE_STACK_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if the system has the type `std::locale'. */ +/* #undef HAVE_STD__LOCALE */ + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strnlen' function. */ +#define HAVE_STRNLEN 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the `sysconf' function. */ +#define HAVE_SYSCONF 1 + +/* Define to 1 if you have the `sysctl' function. */ +/* #undef HAVE_SYSCTL */ + +/* Define to 1 if you have the `sysctlbyname' function. */ +/* #undef HAVE_SYSCTLBYNAME */ + +/* Define to 1 if you have the `syssgi' function. */ +/* #undef HAVE_SYSSGI */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_ATTRIBUTES_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_IOGRAPH_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_MMAN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PROCESSOR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PSTAT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSCTL_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SYSINFO_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSSGI_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSTEMCFG_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `times' function. */ +#define HAVE_TIMES 1 + +/* Define to 1 if the system has the type `uint_least32_t'. */ +#define HAVE_UINT_LEAST32_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `vsnprintf' function and it works properly. */ +#define HAVE_VSNPRINTF 1 + +/* Define to 1 for Windos/64 */ +/* #undef HOST_DOS64 */ + +/* Assembler local label prefix */ +#define LSYM_PREFIX ".L" + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Define to 1 to disable the use of inline assembly */ +/* #undef NO_ASM */ + +/* Name of package */ +#define PACKAGE "gmp" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "gmp-bugs@gmplib.org (see https://gmplib.org/manual/Reporting-Bugs.html)" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "GNU MP" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "GNU MP 6.3.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "gmp" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "http://www.gnu.org/software/gmp/" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "6.3.0" + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* The size of `mp_limb_t', as computed by sizeof. */ +#define SIZEOF_MP_LIMB_T 8 + +/* The size of `unsigned', as computed by sizeof. */ +#define SIZEOF_UNSIGNED 4 + +/* The size of `unsigned long', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_LONG 8 + +/* The size of `unsigned short', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_SHORT 2 + +/* The size of `void *', as computed by sizeof. */ +#define SIZEOF_VOID_P 8 + +/* Define to 1 if sscanf requires writable inputs */ +/* #undef SSCANF_WRITABLE_INPUT */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Maximum size the tune program can test for SQR_TOOM2_THRESHOLD */ +#define TUNE_SQR_TOOM2_MAX SQR_TOOM2_MAX_GENERIC + +/* Version number of package */ +#define VERSION "6.3.0" + +/* Define to 1 to enable ASSERT checking, per --enable-assert */ +/* #undef WANT_ASSERT */ + +/* Define to 1 to enable GMP_CPU_TYPE faking cpuid, per --enable-fake-cpuid */ +/* #undef WANT_FAKE_CPUID */ + +/* Define to 1 when building a fat binary. */ +/* #undef WANT_FAT_BINARY */ + +/* Define to 1 to enable FFTs for multiplication, per --enable-fft */ +#define WANT_FFT 1 + +/* Define to 1 to enable old mpn_mul_fft_full for multiplication, per + --enable-old-fft-full */ +/* #undef WANT_OLD_FFT_FULL */ + +/* Define to 1 if --enable-profiling=gprof */ +/* #undef WANT_PROFILING_GPROF */ + +/* Define to 1 if --enable-profiling=instrument */ +/* #undef WANT_PROFILING_INSTRUMENT */ + +/* Define to 1 if --enable-profiling=prof */ +/* #undef WANT_PROFILING_PROF */ + +/* Define one of these to 1 for the desired temporary memory allocation + method, per --enable-alloca. */ +#define WANT_TMP_ALLOCA 1 +/* #undef WANT_TMP_REENTRANT */ +/* #undef WANT_TMP_NOTREENTRANT */ +/* #undef WANT_TMP_DEBUG */ + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* Define to 1 if the assembler understands the mulx instruction */ +/* #undef X86_ASM_MULX */ + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +/* #undef YYTEXT_POINTER */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported directly. */ +#define restrict __restrict +/* Work around a bug in Sun C++: it does not support _Restrict or + __restrict__, even though the corresponding Sun C compiler ends up with + "#define restrict _Restrict" or "#define restrict __restrict__" in the + previous line. Perhaps some future version of Sun C++ will work with + restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ +#if defined __SUNPRO_CC && !defined __RESTRICT +# define _Restrict +# define __restrict__ +#endif + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +/* #undef volatile */ diff --git a/vere/ext/gmp/gen/aarch64-linux/fac_table.h b/vere/ext/gmp/gen/aarch64-linux/fac_table.h new file mode 100644 index 0000000..6708348 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/fac_table.h @@ -0,0 +1,49 @@ +/* This file is automatically generated by gen-fac.c */ + +#if GMP_NUMB_BITS != 64 +Error , error this data is for 64 GMP_NUMB_BITS only +#endif +/* This table is 0!,1!,2!,3!,...,n! where n! has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x2),CNST_LIMB(0x6),CNST_LIMB(0x18),CNST_LIMB(0x78),CNST_LIMB(0x2d0),CNST_LIMB(0x13b0),CNST_LIMB(0x9d80),CNST_LIMB(0x58980),CNST_LIMB(0x375f00),CNST_LIMB(0x2611500),CNST_LIMB(0x1c8cfc00),CNST_LIMB(0x17328cc00),CNST_LIMB(0x144c3b2800),CNST_LIMB(0x13077775800),CNST_LIMB(0x130777758000),CNST_LIMB(0x1437eeecd8000),CNST_LIMB(0x16beecca730000),CNST_LIMB(0x1b02b9306890000),CNST_LIMB(0x21c3677c82b40000) + +/* This table is 0!,1!,2!/2,3!/2,...,n!/2^sn where n!/2^sn is an */ +/* odd integer for each n, and n!/2^sn has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_ODD_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x3),CNST_LIMB(0x3),CNST_LIMB(0xf),CNST_LIMB(0x2d),CNST_LIMB(0x13b),CNST_LIMB(0x13b),CNST_LIMB(0xb13),CNST_LIMB(0x375f),CNST_LIMB(0x26115),CNST_LIMB(0x7233f),CNST_LIMB(0x5cca33),CNST_LIMB(0x2898765),CNST_LIMB(0x260eeeeb),CNST_LIMB(0x260eeeeb),CNST_LIMB(0x286fddd9b),CNST_LIMB(0x16beecca73),CNST_LIMB(0x1b02b930689),CNST_LIMB(0x870d9df20ad),CNST_LIMB(0xb141df4dae31),CNST_LIMB(0x79dd498567c1b),CNST_LIMB(0xaf2e19afc5266d),CNST_LIMB(0x20d8a4d0f4f7347),CNST_LIMB(0x335281867ec241ef) +#define ODD_FACTORIAL_TABLE_MAX CNST_LIMB(0x335281867ec241ef) +#define ODD_FACTORIAL_TABLE_LIMIT (25) + +/* Previous table, continued, values modulo 2^GMP_NUMB_BITS */ +#define ONE_LIMB_ODD_FACTORIAL_EXTTABLE CNST_LIMB(0x9b3093d46fdd5923),CNST_LIMB(0x5e1f9767cc5866b1),CNST_LIMB(0x92dd23d6966aced7),CNST_LIMB(0xa30d0f4f0a196e5b),CNST_LIMB(0x8dc3e5a1977d7755),CNST_LIMB(0x2ab8ce915831734b),CNST_LIMB(0x2ab8ce915831734b),CNST_LIMB(0x81d2a0bc5e5fdcab),CNST_LIMB(0x9efcac82445da75b),CNST_LIMB(0xbc8b95cf58cde171),CNST_LIMB(0xa0e8444a1f3cecf9),CNST_LIMB(0x4191deb683ce3ffd),CNST_LIMB(0xddd3878bc84ebfc7),CNST_LIMB(0xcb39a64b83ff3751),CNST_LIMB(0xf8203f7993fc1495),CNST_LIMB(0xbd2a2a78b35f4bdd),CNST_LIMB(0x84757be6b6d13921),CNST_LIMB(0x3fbbcfc0b524988b),CNST_LIMB(0xbd11ed47c8928df9),CNST_LIMB(0x3c26b59e41c2f4c5),CNST_LIMB(0x677a5137e883fdb3),CNST_LIMB(0xff74e943b03b93dd),CNST_LIMB(0xfe5ebbcb10b2bb97),CNST_LIMB(0xb021f1de3235e7e7),CNST_LIMB(0x33509eb2e743a58f),CNST_LIMB(0x390f9da41279fb7d),CNST_LIMB(0xe5cb0154f031c559),CNST_LIMB(0x93074695ba4ddb6d),CNST_LIMB(0x81c471caa636247f),CNST_LIMB(0xe1347289b5a1d749),CNST_LIMB(0x286f21c3f76ce2ff),CNST_LIMB(0xbe84a2173e8ac7),CNST_LIMB(0x1595065ca215b88b),CNST_LIMB(0xf95877595b018809),CNST_LIMB(0x9c2efe3c5516f887),CNST_LIMB(0x373294604679382b),CNST_LIMB(0xaf1ff7a888adcd35),CNST_LIMB(0x18ddf279a2c5800b),CNST_LIMB(0x18ddf279a2c5800b),CNST_LIMB(0x505a90e2542582cb),CNST_LIMB(0x5bacad2cd8d5dc2b),CNST_LIMB(0xfe3152bcbff89f41) +#define ODD_FACTORIAL_EXTTABLE_LIMIT (67) + +/* This table is 1!!,3!!,...,(2n+1)!! where (2n+1)!! has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_ODD_DOUBLEFACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x3),CNST_LIMB(0xf),CNST_LIMB(0x69),CNST_LIMB(0x3b1),CNST_LIMB(0x289b),CNST_LIMB(0x20fdf),CNST_LIMB(0x1eee11),CNST_LIMB(0x20dcf21),CNST_LIMB(0x27065f73),CNST_LIMB(0x33385d46f),CNST_LIMB(0x49a10615f9),CNST_LIMB(0x730b9982551),CNST_LIMB(0xc223930bef8b),CNST_LIMB(0x15fe07a85a22bf),CNST_LIMB(0x2a9c2ed62ea3521),CNST_LIMB(0x57e22099c030d941) +#define ODD_DOUBLEFACTORIAL_TABLE_MAX CNST_LIMB(0x57e22099c030d941) +#define ODD_DOUBLEFACTORIAL_TABLE_LIMIT (33) + +/* This table x_1, x_2,... contains values s.t. x_n^n has <= GMP_NUMB_BITS bits */ +#define NTH_ROOT_NUMB_MASK_TABLE (GMP_NUMB_MASK),CNST_LIMB(0xffffffff),CNST_LIMB(0x285145),CNST_LIMB(0xffff),CNST_LIMB(0x1bdb),CNST_LIMB(0x659),CNST_LIMB(0x235),CNST_LIMB(0xff) + +/* This table contains inverses of odd factorials, modulo 2^GMP_NUMB_BITS */ + +/* It begins with (2!/2)^-1=1 */ +#define ONE_LIMB_ODD_FACTORIAL_INVERSES_TABLE CNST_LIMB(0x1),CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0xeeeeeeeeeeeeeeef),CNST_LIMB(0x4fa4fa4fa4fa4fa5),CNST_LIMB(0x2ff2ff2ff2ff2ff3),CNST_LIMB(0x2ff2ff2ff2ff2ff3),CNST_LIMB(0x938cc70553e3771b),CNST_LIMB(0xb71c27cddd93e49f),CNST_LIMB(0xb38e3229fcdee63d),CNST_LIMB(0xe684bb63544a4cbf),CNST_LIMB(0xc2f684917ca340fb),CNST_LIMB(0xf747c9cba417526d),CNST_LIMB(0xbb26eb51d7bd49c3),CNST_LIMB(0xbb26eb51d7bd49c3),CNST_LIMB(0xb0a7efb985294093),CNST_LIMB(0xbe4b8c69f259eabb),CNST_LIMB(0x6854d17ed6dc4fb9),CNST_LIMB(0xe1aa904c915f4325),CNST_LIMB(0x3b8206df131cead1),CNST_LIMB(0x79c6009fea76fe13),CNST_LIMB(0xd8c5d381633cd365),CNST_LIMB(0x4841f12b21144677),CNST_LIMB(0x4a91ff68200b0d0f),CNST_LIMB(0x8f9513a58c4f9e8b),CNST_LIMB(0x2b3e690621a42251),CNST_LIMB(0x4f520f00e03c04e7),CNST_LIMB(0x2edf84ee600211d3),CNST_LIMB(0xadcaa2764aaacdfd),CNST_LIMB(0x161f4f9033f4fe63),CNST_LIMB(0x161f4f9033f4fe63),CNST_LIMB(0xbada2932ea4d3e03),CNST_LIMB(0xcec189f3efaa30d3),CNST_LIMB(0xf7475bb68330bf91),CNST_LIMB(0x37eb7bf7d5b01549),CNST_LIMB(0x46b35660a4e91555),CNST_LIMB(0xa567c12d81f151f7),CNST_LIMB(0x4c724007bb2071b1),CNST_LIMB(0xf4a0cce58a016bd),CNST_LIMB(0xfa21068e66106475),CNST_LIMB(0x244ab72b5a318ae1),CNST_LIMB(0x366ce67e080d0f23),CNST_LIMB(0xd666fdae5dd2a449),CNST_LIMB(0xd740ddd0acc06a0d),CNST_LIMB(0xb050bbbb28e6f97b),CNST_LIMB(0x70b003fe890a5c75),CNST_LIMB(0xd03aabff83037427),CNST_LIMB(0x13ec4ca72c783bd7),CNST_LIMB(0x90282c06afdbd96f),CNST_LIMB(0x4414ddb9db4a95d5),CNST_LIMB(0xa2c68735ae6832e9),CNST_LIMB(0xbf72d71455676665),CNST_LIMB(0xa8469fab6b759b7f),CNST_LIMB(0xc1e55b56e606caf9),CNST_LIMB(0x40455630fc4a1cff),CNST_LIMB(0x120a7b0046d16f7),CNST_LIMB(0xa7c3553b08faef23),CNST_LIMB(0x9f0bfd1b08d48639),CNST_LIMB(0xa433ffce9a304d37),CNST_LIMB(0xa22ad1d53915c683),CNST_LIMB(0xcb6cbc723ba5dd1d),CNST_LIMB(0x547fb1b8ab9d0ba3),CNST_LIMB(0x547fb1b8ab9d0ba3),CNST_LIMB(0x8f15a826498852e3) + +/* This table contains 2n-popc(2n) for small n */ + +/* It begins with 2-1=1 (n=1) */ +#define TABLE_2N_MINUS_POPC_2N 1,3,4,7,8,10,11,15,16,18,19,22,23,25,26,31,32,34,35,38,39,41,42,46,47,49,50,53,54,56,57,63,64,66,67,70,71,73,74,78 +#define TABLE_LIMIT_2N_MINUS_POPC_2N 81 +#define ODD_CENTRAL_BINOMIAL_OFFSET (13) + +/* This table contains binomial(2k,k)/2^t */ + +/* It begins with ODD_CENTRAL_BINOMIAL_TABLE_MIN */ +#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_TABLE CNST_LIMB(0x13d66b),CNST_LIMB(0x4c842f),CNST_LIMB(0x93ee7d),CNST_LIMB(0x11e9e123),CNST_LIMB(0x22c60053),CNST_LIMB(0x873ae4d1),CNST_LIMB(0x10757bd97),CNST_LIMB(0x80612c6cd),CNST_LIMB(0xfaa556bc1),CNST_LIMB(0x3d3cc24821),CNST_LIMB(0x77cfeb6bbb),CNST_LIMB(0x7550ebd97c7),CNST_LIMB(0xe5f08695caf),CNST_LIMB(0x386120ffce11),CNST_LIMB(0x6eabb28dd6df),CNST_LIMB(0x3658e31c82a8f),CNST_LIMB(0x6ad2050312783),CNST_LIMB(0x1a42902a5af0bf),CNST_LIMB(0x33ac44f881661d),CNST_LIMB(0xcb764f927d82123),CNST_LIMB(0x190c23fa46b93983),CNST_LIMB(0x62b7609e25caf1b9),CNST_LIMB(0xc29cb72925ef2cff) +#define ODD_CENTRAL_BINOMIAL_TABLE_LIMIT (35) + +/* This table contains the inverses of elements in the previous table. */ +#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_INVERSE_TABLE CNST_LIMB(0x61e5bd199bb12643),CNST_LIMB(0x78321494dc8342cf),CNST_LIMB(0x4fd348704ebf7ad5),CNST_LIMB(0x7e722ba086ab568b),CNST_LIMB(0xa5fcc124265843db),CNST_LIMB(0x89c4a6b18633f431),CNST_LIMB(0x4daa2c15f8ce9227),CNST_LIMB(0x801c618ca9be9605),CNST_LIMB(0x32dc192f948a441),CNST_LIMB(0xd02b90c2bf3be1),CNST_LIMB(0xd897e8c1749aa173),CNST_LIMB(0x54a234fc01fef9f7),CNST_LIMB(0x83ff2ab4d1ff7a4f),CNST_LIMB(0xa427f1c9b304e2f1),CNST_LIMB(0x9c14595d1793651f),CNST_LIMB(0x883a71c607a7b46f),CNST_LIMB(0xd089863c54bc9f2b),CNST_LIMB(0x9022f6bce5d07f3f),CNST_LIMB(0xbec207e218768c35),CNST_LIMB(0x9d70cb4cbb4f168b),CNST_LIMB(0x3c3d3403828a9d2b),CNST_LIMB(0x7672df58c56bc489),CNST_LIMB(0x1e66ca55d727d2ff) + +/* This table contains the values t in the formula binomial(2k,k)/2^t */ +#define CENTRAL_BINOMIAL_2FAC_TABLE 3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3 diff --git a/vere/ext/gmp/gen/aarch64-linux/fib_table.h b/vere/ext/gmp/gen/aarch64-linux/fib_table.h new file mode 100644 index 0000000..66ac4d6 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/fib_table.h @@ -0,0 +1,8 @@ +/* This file generated by gen-fib.c - DO NOT EDIT. */ + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +#define FIB_TABLE_LIMIT 93 +#define FIB_TABLE_LUCNUM_LIMIT 92 diff --git a/vere/ext/gmp/gen/aarch64-linux/mp_bases.h b/vere/ext/gmp/gen/aarch64-linux/mp_bases.h new file mode 100644 index 0000000..08ede78 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mp_bases.h @@ -0,0 +1,13 @@ +/* This file generated by gen-bases.c - DO NOT EDIT. */ + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +/* mp_bases[10] data, as literal values */ +#define MP_BASES_CHARS_PER_LIMB_10 19 +#define MP_BASES_BIG_BASE_CTZ_10 19 +#define MP_BASES_BIG_BASE_10 CNST_LIMB(0x8ac7230489e80000) +#define MP_BASES_BIG_BASE_INVERTED_10 CNST_LIMB(0xd83c94fb6d2ac34a) +#define MP_BASES_BIG_BASE_BINVERTED_10 CNST_LIMB(0x26b172506559ce15) +#define MP_BASES_NORMALIZATION_STEPS_10 0 diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/add_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/add_n.s new file mode 100644 index 0000000..67212a5 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/add_n.s @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_add_nc + .type __gmpn_add_nc,@function +__gmpn_add_nc: + cmp x4, #1 + b .Lent + .size __gmpn_add_nc,.-__gmpn_add_nc + .text + .align 3 + .globl __gmpn_add_n + .type __gmpn_add_n,@function +__gmpn_add_n: + cmn xzr, xzr +.Lent: lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x7, [x1] + ldr x11, [x2] + adcs x13, x7, x11 + str x13, [x0],#8 + tbnz x3, #1, .Lb11 + +.Lb01: cbz x18, .Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b .Lmid + +.Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: ldp x4, x5, [x1] + ldp x8, x9, [x2] + sub x1, x1, #16 + sub x2, x2, #16 + b .Lmid + +.Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + adcs x12, x6, x10 + adcs x13, x7, x11 + stp x12, x13, [x0],#16 +.Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + adcs x12, x4, x8 + adcs x13, x5, x9 + stp x12, x13, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: adcs x12, x6, x10 + adcs x13, x7, x11 + stp x12, x13, [x0] +.Lret: cset x0, cs + ret + .size __gmpn_add_n,.-__gmpn_add_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/addlsh1_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/addlsh1_n.s new file mode 100644 index 0000000..91f17cb --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/addlsh1_n.s @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_addlsh1_n + .type __gmpn_addlsh1_n,@function +__gmpn_addlsh1_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x5, [x1] + tbnz x3, #1, .Lb11 + +.Lb01: ldr x11, [x2] + cbz x18, .L1 + ldp x8, x9, [x2,#8] + lsl x13, x11, #1 + adds x15, x13, x5 + str x15, [x0],#8 + sub x1, x1, #24 + sub x2, x2, #8 + b .Lmid + +.L1: lsl x13, x11, #1 + adds x15, x13, x5 + str x15, [x0] + lsr x0, x11, 63 + adc x0, x0, xzr + ret + +.Lb11: ldr x9, [x2] + ldp x10, x11, [x2,#8]! + lsl x13, x9, #1 + adds x17, x13, x5 + str x17, [x0],#8 + sub x1, x1, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: adds x11, xzr, xzr + ldp x8, x9, [x2],#-16 + sub x1, x1, #32 + b .Lmid + +.Lb10: adds x9, xzr, xzr + ldp x10, x11, [x2] + sub x1, x1, #16 + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #63 + ldp x8, x9, [x2,#16] + extr x13, x11, x10, #63 + adcs x14, x12, x4 + adcs x15, x13, x5 + stp x14, x15, [x0],#16 +.Lmid: ldp x4, x5, [x1,#32]! + extr x12, x8, x11, #63 + ldp x10, x11, [x2,#32]! + extr x13, x9, x8, #63 + adcs x16, x12, x4 + adcs x17, x13, x5 + stp x16, x17, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #63 + extr x13, x11, x10, #63 + adcs x14, x12, x4 + adcs x15, x13, x5 + stp x14, x15, [x0] + lsr x0, x11, 63 + adc x0, x0, xzr + ret + .size __gmpn_addlsh1_n,.-__gmpn_addlsh1_n + diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/addlsh2_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/addlsh2_n.s new file mode 100644 index 0000000..66299fc --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/addlsh2_n.s @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_addlsh2_n + .type __gmpn_addlsh2_n,@function +__gmpn_addlsh2_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x5, [x1] + tbnz x3, #1, .Lb11 + +.Lb01: ldr x11, [x2] + cbz x18, .L1 + ldp x8, x9, [x2,#8] + lsl x13, x11, #2 + adds x15, x13, x5 + str x15, [x0],#8 + sub x1, x1, #24 + sub x2, x2, #8 + b .Lmid + +.L1: lsl x13, x11, #2 + adds x15, x13, x5 + str x15, [x0] + lsr x0, x11, 62 + adc x0, x0, xzr + ret + +.Lb11: ldr x9, [x2] + ldp x10, x11, [x2,#8]! + lsl x13, x9, #2 + adds x17, x13, x5 + str x17, [x0],#8 + sub x1, x1, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: adds x11, xzr, xzr + ldp x8, x9, [x2],#-16 + sub x1, x1, #32 + b .Lmid + +.Lb10: adds x9, xzr, xzr + ldp x10, x11, [x2] + sub x1, x1, #16 + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #62 + ldp x8, x9, [x2,#16] + extr x13, x11, x10, #62 + adcs x14, x12, x4 + adcs x15, x13, x5 + stp x14, x15, [x0],#16 +.Lmid: ldp x4, x5, [x1,#32]! + extr x12, x8, x11, #62 + ldp x10, x11, [x2,#32]! + extr x13, x9, x8, #62 + adcs x16, x12, x4 + adcs x17, x13, x5 + stp x16, x17, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #62 + extr x13, x11, x10, #62 + adcs x14, x12, x4 + adcs x15, x13, x5 + stp x14, x15, [x0] + lsr x0, x11, 62 + adc x0, x0, xzr + ret + .size __gmpn_addlsh2_n,.-__gmpn_addlsh2_n + diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/addmul_1.s b/vere/ext/gmp/gen/aarch64-linux/mpn/addmul_1.s new file mode 100644 index 0000000..f268546 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/addmul_1.s @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_addmul_1 + .type __gmpn_addmul_1,@function +__gmpn_addmul_1: + adds x15, xzr, xzr + + tbz x2, #0, .L1 + + ldr x4, [x1],#8 + mul x8, x4, x3 + umulh x12, x4, x3 + ldr x4, [x0] + adds x8, x4, x8 + csinc x15, x12, x12, cc + str x8, [x0],#8 + +.L1: tbz x2, #1, .L2 + + ldp x4, x5, [x1],#16 + mul x8, x4, x3 + umulh x12, x4, x3 + mul x9, x5, x3 + umulh x13, x5, x3 + adds x8, x8, x15 + adcs x9, x9, x12 + ldp x4, x5, [x0] + adc x15, x13, xzr + adds x8, x4, x8 + adcs x9, x5, x9 + csinc x15, x15, x15, cc + stp x8, x9, [x0],#16 + +.L2: lsr x2, x2, #2 + cbz x2, .Lle3 + ldp x4, x5, [x1],#32 + ldp x6, x7, [x1,#-16] + b .Lmid +.Lle3: mov x0, x15 + ret + + .align 4 +.Ltop: ldp x4, x5, [x1],#32 + ldp x6, x7, [x1,#-16] + adds x8, x16, x8 + adcs x9, x17, x9 + stp x8, x9, [x0],#32 + adcs x10, x12, x10 + adcs x11, x13, x11 + stp x10, x11, [x0,#-16] + csinc x15, x15, x15, cc +.Lmid: sub x2, x2, #1 + mul x8, x4, x3 + umulh x12, x4, x3 + mul x9, x5, x3 + umulh x13, x5, x3 + adds x8, x8, x15 + mul x10, x6, x3 + umulh x14, x6, x3 + adcs x9, x9, x12 + mul x11, x7, x3 + umulh x15, x7, x3 + adcs x10, x10, x13 + ldp x16, x17, [x0] + adcs x11, x11, x14 + ldp x12, x13, [x0,#16] + adc x15, x15, xzr + cbnz x2, .Ltop + + adds x8, x16, x8 + adcs x9, x17, x9 + adcs x10, x12, x10 + adcs x11, x13, x11 + stp x8, x9, [x0] + stp x10, x11, [x0,#16] + csinc x0, x15, x15, cc + ret + .size __gmpn_addmul_1,.-__gmpn_addmul_1 diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/and_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/and_n.s new file mode 100644 index 0000000..a4d41c5 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/and_n.s @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_and_n + .type __gmpn_and_n,@function +__gmpn_and_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x7, [x1] + ldr x11, [x2] + and x15, x7, x11 + str x15, [x0],#8 + tbnz x3, #1, .Lb11 + +.Lb01: cbz x18, .Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b .Lmid + +.Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b .Lmid + +.Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + and x12, x6, x10 + and x13, x7, x11 + stp x12, x13, [x0],#16 +.Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + and x12, x4, x8 + and x13, x5, x9 + stp x12, x13, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: and x12, x6, x10 + and x13, x7, x11 + stp x12, x13, [x0] +.Lret: ret + .size __gmpn_and_n,.-__gmpn_and_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/andn_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/andn_n.s new file mode 100644 index 0000000..316f075 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/andn_n.s @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_andn_n + .type __gmpn_andn_n,@function +__gmpn_andn_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x7, [x1] + ldr x11, [x2] + bic x15, x7, x11 + str x15, [x0],#8 + tbnz x3, #1, .Lb11 + +.Lb01: cbz x18, .Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b .Lmid + +.Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b .Lmid + +.Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + bic x12, x6, x10 + bic x13, x7, x11 + stp x12, x13, [x0],#16 +.Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + bic x12, x4, x8 + bic x13, x5, x9 + stp x12, x13, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: bic x12, x6, x10 + bic x13, x7, x11 + stp x12, x13, [x0] +.Lret: ret + .size __gmpn_andn_n,.-__gmpn_andn_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_dbm1c.s b/vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_dbm1c.s new file mode 100644 index 0000000..859498b --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_dbm1c.s @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4 + .text + .align 3 + .globl __gmpn_bdiv_dbm1c + .type __gmpn_bdiv_dbm1c,@function +__gmpn_bdiv_dbm1c: + ldr x5, [x1], #8 + ands x6, x2, #3 + b.eq .Lfi0 + cmp x6, #2 + b.cc .Lfi1 + b.eq .Lfi2 + +.Lfi3: mul x12, x5, x3 + umulh x13, x5, x3 + ldr x5, [x1], #8 + b .Llo3 + +.Lfi0: mul x10, x5, x3 + umulh x11, x5, x3 + ldr x5, [x1], #8 + b .Llo0 + +.Lfi1: subs x2, x2, #1 + mul x12, x5, x3 + umulh x13, x5, x3 + b.ls .Lwd1 + ldr x5, [x1], #8 + b .Llo1 + +.Lfi2: mul x10, x5, x3 + umulh x11, x5, x3 + ldr x5, [x1], #8 + b .Llo2 + +.Ltop: ldr x5, [x1], #8 + subs x4, x4, x10 + str x4, [x0], #8 + sbc x4, x4, x11 +.Llo1: mul x10, x5, x3 + umulh x11, x5, x3 + ldr x5, [x1], #8 + subs x4, x4, x12 + str x4, [x0], #8 + sbc x4, x4, x13 +.Llo0: mul x12, x5, x3 + umulh x13, x5, x3 + ldr x5, [x1], #8 + subs x4, x4, x10 + str x4, [x0], #8 + sbc x4, x4, x11 +.Llo3: mul x10, x5, x3 + umulh x11, x5, x3 + ldr x5, [x1], #8 + subs x4, x4, x12 + str x4, [x0], #8 + sbc x4, x4, x13 +.Llo2: subs x2, x2, #4 + mul x12, x5, x3 + umulh x13, x5, x3 + b.hi .Ltop + +.Lwd2: subs x4, x4, x10 + str x4, [x0], #8 + sbc x4, x4, x11 +.Lwd1: subs x4, x4, x12 + str x4, [x0] + sbc x0, x4, x13 + ret + .size __gmpn_bdiv_dbm1c,.-__gmpn_bdiv_dbm1c diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_q_1.s b/vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_q_1.s new file mode 100644 index 0000000..0a530ea --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_q_1.s @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_bdiv_q_1 + .type __gmpn_bdiv_q_1,@function +__gmpn_bdiv_q_1: + + rbit x6, x3 + clz x5, x6 + lsr x3, x3, x5 + + adrp x7, :got:__gmp_binvert_limb_table + ubfx x6, x3, 1, 7 + ldr x7, [x7, #:got_lo12:__gmp_binvert_limb_table] + ldrb w6, [x7, x6] + ubfiz x7, x6, 1, 8 + umull x6, w6, w6 + msub x6, x6, x3, x7 + lsl x7, x6, 1 + mul x6, x6, x6 + msub x6, x6, x3, x7 + lsl x7, x6, 1 + mul x6, x6, x6 + msub x4, x6, x3, x7 + + b __gmpn_pi1_bdiv_q_1 + .size __gmpn_bdiv_q_1,.-__gmpn_bdiv_q_1 + + .text + .align 3 + .globl __gmpn_pi1_bdiv_q_1 + .type __gmpn_pi1_bdiv_q_1,@function +__gmpn_pi1_bdiv_q_1: + sub x2, x2, #1 + subs x6, x6, x6 + ldr x9, [x1],#8 + cbz x5, .Lnorm + +.Lunorm: + lsr x12, x9, x5 + cbz x2, .Leu1 + sub x8, xzr, x5 + +.Ltpu: ldr x9, [x1],#8 + lsl x7, x9, x8 + orr x7, x7, x12 + sbcs x6, x7, x6 + mul x7, x6, x4 + str x7, [x0],#8 + lsr x12, x9, x5 + umulh x6, x7, x3 + sub x2, x2, #1 + cbnz x2, .Ltpu + +.Leu1: sbcs x6, x12, x6 + mul x6, x6, x4 + str x6, [x0] + ret + +.Lnorm: + mul x5, x9, x4 + str x5, [x0],#8 + cbz x2, .Len1 + +.Ltpn: ldr x9, [x1],#8 + umulh x5, x5, x3 + sbcs x5, x9, x5 + mul x5, x5, x4 + str x5, [x0],#8 + sub x2, x2, #1 + cbnz x2, .Ltpn + +.Len1: ret + .size __gmpn_pi1_bdiv_q_1,.-__gmpn_pi1_bdiv_q_1 diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/cnd_add_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/cnd_add_n.s new file mode 100644 index 0000000..d5d623c --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/cnd_add_n.s @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_cnd_add_n + .type __gmpn_cnd_add_n,@function +__gmpn_cnd_add_n: + cmp x0, #1 + sbc x0, x0, x0 + + cmn xzr, xzr + + lsr x18, x4, #2 + tbz x4, #0, .Lbx0 + +.Lbx1: ldr x13, [x3] + ldr x11, [x2] + bic x7, x13, x0 + adcs x9, x11, x7 + str x9, [x1] + tbnz x4, #1, .Lb11 + +.Lb01: cbz x18, .Lrt + ldp x12, x13, [x3,#8] + ldp x10, x11, [x2,#8] + sub x2, x2, #8 + sub x3, x3, #8 + sub x1, x1, #24 + b .Lmid + +.Lb11: ldp x12, x13, [x3,#8]! + ldp x10, x11, [x2,#8]! + sub x1, x1, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: ldp x12, x13, [x3] + ldp x10, x11, [x2] + tbnz x4, #1, .Lb10 + +.Lb00: sub x2, x2, #16 + sub x3, x3, #16 + sub x1, x1, #32 + b .Lmid + +.Lb10: sub x1, x1, #16 + cbz x18, .Lend + + .align 4 +.Ltop: bic x6, x12, x0 + bic x7, x13, x0 + ldp x12, x13, [x3,#16] + adcs x8, x10, x6 + adcs x9, x11, x7 + ldp x10, x11, [x2,#16] + stp x8, x9, [x1,#16] +.Lmid: bic x6, x12, x0 + bic x7, x13, x0 + ldp x12, x13, [x3,#32]! + adcs x8, x10, x6 + adcs x9, x11, x7 + ldp x10, x11, [x2,#32]! + stp x8, x9, [x1,#32]! + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: bic x6, x12, x0 + bic x7, x13, x0 + adcs x8, x10, x6 + adcs x9, x11, x7 + stp x8, x9, [x1,#16] +.Lrt: cset x0, cs + ret + .size __gmpn_cnd_add_n,.-__gmpn_cnd_add_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/cnd_sub_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/cnd_sub_n.s new file mode 100644 index 0000000..2590823 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/cnd_sub_n.s @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_cnd_sub_n + .type __gmpn_cnd_sub_n,@function +__gmpn_cnd_sub_n: + cmp x0, #1 + sbc x0, x0, x0 + + cmp xzr, xzr + + lsr x18, x4, #2 + tbz x4, #0, .Lbx0 + +.Lbx1: ldr x13, [x3] + ldr x11, [x2] + bic x7, x13, x0 + sbcs x9, x11, x7 + str x9, [x1] + tbnz x4, #1, .Lb11 + +.Lb01: cbz x18, .Lrt + ldp x12, x13, [x3,#8] + ldp x10, x11, [x2,#8] + sub x2, x2, #8 + sub x3, x3, #8 + sub x1, x1, #24 + b .Lmid + +.Lb11: ldp x12, x13, [x3,#8]! + ldp x10, x11, [x2,#8]! + sub x1, x1, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: ldp x12, x13, [x3] + ldp x10, x11, [x2] + tbnz x4, #1, .Lb10 + +.Lb00: sub x2, x2, #16 + sub x3, x3, #16 + sub x1, x1, #32 + b .Lmid + +.Lb10: sub x1, x1, #16 + cbz x18, .Lend + + .align 4 +.Ltop: bic x6, x12, x0 + bic x7, x13, x0 + ldp x12, x13, [x3,#16] + sbcs x8, x10, x6 + sbcs x9, x11, x7 + ldp x10, x11, [x2,#16] + stp x8, x9, [x1,#16] +.Lmid: bic x6, x12, x0 + bic x7, x13, x0 + ldp x12, x13, [x3,#32]! + sbcs x8, x10, x6 + sbcs x9, x11, x7 + ldp x10, x11, [x2,#32]! + stp x8, x9, [x1,#32]! + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: bic x6, x12, x0 + bic x7, x13, x0 + sbcs x8, x10, x6 + sbcs x9, x11, x7 + stp x8, x9, [x1,#16] +.Lrt: cset x0, cc + ret + .size __gmpn_cnd_sub_n,.-__gmpn_cnd_sub_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/com.s b/vere/ext/gmp/gen/aarch64-linux/mpn/com.s new file mode 100644 index 0000000..cdabc5f --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/com.s @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_com + .type __gmpn_com,@function +__gmpn_com: + cmp x2, #3 + b.le .Lbc + + + tbz x0, #3, .Lal2 + ld1 {v22.1d}, [x1], #8 + sub x2, x2, #1 + mvn v22.8b, v22.8b + st1 {v22.1d}, [x0], #8 + +.Lal2: ld1 {v26.2d}, [x1], #16 + subs x2, x2, #6 + b.lt .Lend + + .align 4 +.Ltop: ld1 {v22.2d}, [x1], #16 + mvn v26.16b, v26.16b + st1 {v26.2d}, [x0], #16 + ld1 {v26.2d}, [x1], #16 + mvn v22.16b, v22.16b + st1 {v22.2d}, [x0], #16 + subs x2, x2, #4 + b.ge .Ltop + +.Lend: mvn v26.16b, v26.16b + st1 {v26.2d}, [x0], #16 + + + +.Lbc: tbz x2, #1, .Ltl1 + ld1 {v22.2d}, [x1], #16 + mvn v22.16b, v22.16b + st1 {v22.2d}, [x0], #16 +.Ltl1: tbz x2, #0, .Ltl2 + ld1 {v22.1d}, [x1] + mvn v22.8b, v22.8b + st1 {v22.1d}, [x0] +.Ltl2: ret + .size __gmpn_com,.-__gmpn_com diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/copyd.s b/vere/ext/gmp/gen/aarch64-linux/mpn/copyd.s new file mode 100644 index 0000000..5ef050b --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/copyd.s @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_copyd + .type __gmpn_copyd,@function +__gmpn_copyd: + add x0, x0, x2, lsl #3 + add x1, x1, x2, lsl #3 + + cmp x2, #3 + b.le .Lbc + + + tbz x0, #3, .Lal2 + sub x1, x1, #8 + ld1 {v22.1d}, [x1] + sub x2, x2, #1 + sub x0, x0, #8 + st1 {v22.1d}, [x0] + +.Lal2: sub x1, x1, #16 + ld1 {v26.2d}, [x1] + sub x2, x2, #6 + sub x0, x0, #16 + tbnz x2, #63, .Lend + + sub x1, x1, #16 + mov x12, #-16 + + .align 4 +.Ltop: ld1 {v22.2d}, [x1], x12 + st1 {v26.2d}, [x0], x12 + ld1 {v26.2d}, [x1], x12 + st1 {v22.2d}, [x0], x12 + sub x2, x2, #4 + tbz x2, #63, .Ltop + + add x1, x1, #16 + +.Lend: st1 {v26.2d}, [x0] + + + +.Lbc: tbz x2, #1, .Ltl1 + sub x1, x1, #16 + ld1 {v22.2d}, [x1] + sub x0, x0, #16 + st1 {v22.2d}, [x0] +.Ltl1: tbz x2, #0, .Ltl2 + sub x1, x1, #8 + ld1 {v22.1d}, [x1] + sub x0, x0, #8 + st1 {v22.1d}, [x0] +.Ltl2: ret + .size __gmpn_copyd,.-__gmpn_copyd diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/copyi.s b/vere/ext/gmp/gen/aarch64-linux/mpn/copyi.s new file mode 100644 index 0000000..67819d4 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/copyi.s @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_copyi + .type __gmpn_copyi,@function +__gmpn_copyi: + cmp x2, #3 + b.le .Lbc + + + tbz x0, #3, .Lal2 + ld1 {v22.1d}, [x1], #8 + sub x2, x2, #1 + st1 {v22.1d}, [x0], #8 + +.Lal2: ld1 {v26.2d}, [x1], #16 + sub x2, x2, #6 + tbnz x2, #63, .Lend + + .align 4 +.Ltop: ld1 {v22.2d}, [x1], #16 + st1 {v26.2d}, [x0], #16 + ld1 {v26.2d}, [x1], #16 + st1 {v22.2d}, [x0], #16 + sub x2, x2, #4 + tbz x2, #63, .Ltop + +.Lend: st1 {v26.2d}, [x0], #16 + + + +.Lbc: tbz x2, #1, .Ltl1 + ld1 {v22.2d}, [x1], #16 + st1 {v22.2d}, [x0], #16 +.Ltl1: tbz x2, #0, .Ltl2 + ld1 {v22.1d}, [x1] + st1 {v22.1d}, [x0] +.Ltl2: ret + .size __gmpn_copyi,.-__gmpn_copyi diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/fib_table.c b/vere/ext/gmp/gen/aarch64-linux/mpn/fib_table.c new file mode 100644 index 0000000..a830475 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/fib_table.c @@ -0,0 +1,107 @@ +/* This file generated by gen-fib.c - DO NOT EDIT. */ + +#include "gmp.h" +#include "gmp-impl.h" + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +const mp_limb_t +__gmp_fib_table[FIB_TABLE_LIMIT+2] = { + CNST_LIMB (0x1), /* -1 */ + CNST_LIMB (0x0), /* 0 */ + CNST_LIMB (0x1), /* 1 */ + CNST_LIMB (0x1), /* 2 */ + CNST_LIMB (0x2), /* 3 */ + CNST_LIMB (0x3), /* 4 */ + CNST_LIMB (0x5), /* 5 */ + CNST_LIMB (0x8), /* 6 */ + CNST_LIMB (0xd), /* 7 */ + CNST_LIMB (0x15), /* 8 */ + CNST_LIMB (0x22), /* 9 */ + CNST_LIMB (0x37), /* 10 */ + CNST_LIMB (0x59), /* 11 */ + CNST_LIMB (0x90), /* 12 */ + CNST_LIMB (0xe9), /* 13 */ + CNST_LIMB (0x179), /* 14 */ + CNST_LIMB (0x262), /* 15 */ + CNST_LIMB (0x3db), /* 16 */ + CNST_LIMB (0x63d), /* 17 */ + CNST_LIMB (0xa18), /* 18 */ + CNST_LIMB (0x1055), /* 19 */ + CNST_LIMB (0x1a6d), /* 20 */ + CNST_LIMB (0x2ac2), /* 21 */ + CNST_LIMB (0x452f), /* 22 */ + CNST_LIMB (0x6ff1), /* 23 */ + CNST_LIMB (0xb520), /* 24 */ + CNST_LIMB (0x12511), /* 25 */ + CNST_LIMB (0x1da31), /* 26 */ + CNST_LIMB (0x2ff42), /* 27 */ + CNST_LIMB (0x4d973), /* 28 */ + CNST_LIMB (0x7d8b5), /* 29 */ + CNST_LIMB (0xcb228), /* 30 */ + CNST_LIMB (0x148add), /* 31 */ + CNST_LIMB (0x213d05), /* 32 */ + CNST_LIMB (0x35c7e2), /* 33 */ + CNST_LIMB (0x5704e7), /* 34 */ + CNST_LIMB (0x8cccc9), /* 35 */ + CNST_LIMB (0xe3d1b0), /* 36 */ + CNST_LIMB (0x1709e79), /* 37 */ + CNST_LIMB (0x2547029), /* 38 */ + CNST_LIMB (0x3c50ea2), /* 39 */ + CNST_LIMB (0x6197ecb), /* 40 */ + CNST_LIMB (0x9de8d6d), /* 41 */ + CNST_LIMB (0xff80c38), /* 42 */ + CNST_LIMB (0x19d699a5), /* 43 */ + CNST_LIMB (0x29cea5dd), /* 44 */ + CNST_LIMB (0x43a53f82), /* 45 */ + CNST_LIMB (0x6d73e55f), /* 46 */ + CNST_LIMB (0xb11924e1), /* 47 */ + CNST_LIMB (0x11e8d0a40), /* 48 */ + CNST_LIMB (0x1cfa62f21), /* 49 */ + CNST_LIMB (0x2ee333961), /* 50 */ + CNST_LIMB (0x4bdd96882), /* 51 */ + CNST_LIMB (0x7ac0ca1e3), /* 52 */ + CNST_LIMB (0xc69e60a65), /* 53 */ + CNST_LIMB (0x1415f2ac48), /* 54 */ + CNST_LIMB (0x207fd8b6ad), /* 55 */ + CNST_LIMB (0x3495cb62f5), /* 56 */ + CNST_LIMB (0x5515a419a2), /* 57 */ + CNST_LIMB (0x89ab6f7c97), /* 58 */ + CNST_LIMB (0xdec1139639), /* 59 */ + CNST_LIMB (0x1686c8312d0), /* 60 */ + CNST_LIMB (0x2472d96a909), /* 61 */ + CNST_LIMB (0x3af9a19bbd9), /* 62 */ + CNST_LIMB (0x5f6c7b064e2), /* 63 */ + CNST_LIMB (0x9a661ca20bb), /* 64 */ + CNST_LIMB (0xf9d297a859d), /* 65 */ + CNST_LIMB (0x19438b44a658), /* 66 */ + CNST_LIMB (0x28e0b4bf2bf5), /* 67 */ + CNST_LIMB (0x42244003d24d), /* 68 */ + CNST_LIMB (0x6b04f4c2fe42), /* 69 */ + CNST_LIMB (0xad2934c6d08f), /* 70 */ + CNST_LIMB (0x1182e2989ced1), /* 71 */ + CNST_LIMB (0x1c5575e509f60), /* 72 */ + CNST_LIMB (0x2dd8587da6e31), /* 73 */ + CNST_LIMB (0x4a2dce62b0d91), /* 74 */ + CNST_LIMB (0x780626e057bc2), /* 75 */ + CNST_LIMB (0xc233f54308953), /* 76 */ + CNST_LIMB (0x13a3a1c2360515), /* 77 */ + CNST_LIMB (0x1fc6e116668e68), /* 78 */ + CNST_LIMB (0x336a82d89c937d), /* 79 */ + CNST_LIMB (0x533163ef0321e5), /* 80 */ + CNST_LIMB (0x869be6c79fb562), /* 81 */ + CNST_LIMB (0xd9cd4ab6a2d747), /* 82 */ + CNST_LIMB (0x16069317e428ca9), /* 83 */ + CNST_LIMB (0x23a367c34e563f0), /* 84 */ + CNST_LIMB (0x39a9fadb327f099), /* 85 */ + CNST_LIMB (0x5d4d629e80d5489), /* 86 */ + CNST_LIMB (0x96f75d79b354522), /* 87 */ + CNST_LIMB (0xf444c01834299ab), /* 88 */ + CNST_LIMB (0x18b3c1d91e77decd), /* 89 */ + CNST_LIMB (0x27f80ddaa1ba7878), /* 90 */ + CNST_LIMB (0x40abcfb3c0325745), /* 91 */ + CNST_LIMB (0x68a3dd8e61eccfbd), /* 92 */ + CNST_LIMB (0xa94fad42221f2702), /* 93 */ +}; diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/gcd_11.s b/vere/ext/gmp/gen/aarch64-linux/mpn/gcd_11.s new file mode 100644 index 0000000..1c3b84f --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/gcd_11.s @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4 + .text + .align 3 + .globl __gmpn_gcd_11 + .type __gmpn_gcd_11,@function +__gmpn_gcd_11: + subs x3, x0, x1 + b.eq .Lend + + .align 4 +.Ltop: rbit x12, x3 + clz x12, x12 + csneg x3, x3, x3, cs + csel x0, x1, x0, cs + lsr x1, x3, x12 + subs x3, x0, x1 + b.ne .Ltop + +.Lend: ret + .size __gmpn_gcd_11,.-__gmpn_gcd_11 diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/gcd_22.s b/vere/ext/gmp/gen/aarch64-linux/mpn/gcd_22.s new file mode 100644 index 0000000..d0ff99c --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/gcd_22.s @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_gcd_22 + .type __gmpn_gcd_22,@function +__gmpn_gcd_22: + + .align 4 +.Ltop: subs x5, x1, x3 + cbz x5, .Llowz + sbcs x6, x0, x2 + + rbit x7, x5 + + cneg x5, x5, cc + cinv x6, x6, cc +.Lbck: csel x3, x3, x1, cs + csel x2, x2, x0, cs + + clz x7, x7 + sub x8, xzr, x7 + + lsr x1, x5, x7 + lsl x14, x6, x8 + lsr x0, x6, x7 + orr x1, x1, x14 + + orr x11, x0, x2 + cbnz x11, .Ltop + + + subs x4, x1, x3 + b.eq .Lend1 + + .align 4 +.Ltop1:rbit x12, x4 + clz x12, x12 + csneg x4, x4, x4, cs + csel x1, x3, x1, cs + lsr x3, x4, x12 + subs x4, x1, x3 + b.ne .Ltop1 +.Lend1:mov x0, x1 + mov x1, #0 + ret + +.Llowz: + + + subs x5, x0, x2 + b.eq .Lend + mov x6, #0 + rbit x7, x5 + cneg x5, x5, cc + b .Lbck + +.Lend: mov x0, x3 + mov x1, x2 + ret + .size __gmpn_gcd_22,.-__gmpn_gcd_22 diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/hamdist.s b/vere/ext/gmp/gen/aarch64-linux/mpn/hamdist.s new file mode 100644 index 0000000..624b72d --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/hamdist.s @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_hamdist + .type __gmpn_hamdist,@function +__gmpn_hamdist: + + mov x11, #0x1fff + cmp x2, x11 + b.hi .Lgt8k + +.Llt8k: + movi v4.16b, #0 + movi v5.16b, #0 + + tbz x2, #0, .Lxx0 + sub x2, x2, #1 + ld1 {v0.1d}, [x0], #8 + ld1 {v16.1d}, [x1], #8 + eor v0.16b, v0.16b, v16.16b + cnt v6.16b, v0.16b + uadalp v4.8h, v6.16b + +.Lxx0: tbz x2, #1, .Lx00 + sub x2, x2, #2 + ld1 {v0.2d}, [x0], #16 + ld1 {v16.2d}, [x1], #16 + eor v0.16b, v0.16b, v16.16b + cnt v6.16b, v0.16b + uadalp v4.8h, v6.16b + +.Lx00: tbz x2, #2, .L000 + subs x2, x2, #4 + ld1 {v0.2d,v1.2d}, [x0], #32 + ld1 {v16.2d,v17.2d}, [x1], #32 + b.ls .Lsum + +.Lgt4: ld1 {v2.2d,v3.2d}, [x0], #32 + ld1 {v18.2d,v19.2d}, [x1], #32 + eor v0.16b, v0.16b, v16.16b + eor v1.16b, v1.16b, v17.16b + sub x2, x2, #4 + cnt v6.16b, v0.16b + cnt v7.16b, v1.16b + b .Lmid + +.L000: subs x2, x2, #8 + b.lo .Le0 + +.Lchu: ld1 {v2.2d,v3.2d}, [x0], #32 + ld1 {v0.2d,v1.2d}, [x0], #32 + ld1 {v18.2d,v19.2d}, [x1], #32 + ld1 {v16.2d,v17.2d}, [x1], #32 + eor v2.16b, v2.16b, v18.16b + eor v3.16b, v3.16b, v19.16b + cnt v6.16b, v2.16b + cnt v7.16b, v3.16b + subs x2, x2, #8 + b.lo .Lend + +.Ltop: ld1 {v2.2d,v3.2d}, [x0], #32 + ld1 {v18.2d,v19.2d}, [x1], #32 + eor v0.16b, v0.16b, v16.16b + eor v1.16b, v1.16b, v17.16b + uadalp v4.8h, v6.16b + cnt v6.16b, v0.16b + uadalp v5.8h, v7.16b + cnt v7.16b, v1.16b +.Lmid: ld1 {v0.2d,v1.2d}, [x0], #32 + ld1 {v16.2d,v17.2d}, [x1], #32 + eor v2.16b, v2.16b, v18.16b + eor v3.16b, v3.16b, v19.16b + subs x2, x2, #8 + uadalp v4.8h, v6.16b + cnt v6.16b, v2.16b + uadalp v5.8h, v7.16b + cnt v7.16b, v3.16b + b.hs .Ltop + +.Lend: uadalp v4.8h, v6.16b + uadalp v5.8h, v7.16b +.Lsum: eor v0.16b, v0.16b, v16.16b + eor v1.16b, v1.16b, v17.16b + cnt v6.16b, v0.16b + cnt v7.16b, v1.16b + uadalp v4.8h, v6.16b + uadalp v5.8h, v7.16b + add v4.8h, v4.8h, v5.8h + +.Le0: uaddlp v4.4s, v4.8h + uaddlp v4.2d, v4.4s + mov x0, v4.d[0] + mov x1, v4.d[1] + add x0, x0, x1 + ret + + + + +.Lgt8k: + mov x8, x30 + mov x7, x2 + mov x4, #0 + mov x9, #0x1ff0*8 + mov x10, #0x1ff0 + +1: add x5, x0, x9 + add x6, x1, x9 + mov x2, #0x1ff0-8 + movi v4.16b, #0 + movi v5.16b, #0 + bl .Lchu + add x4, x4, x0 + mov x0, x5 + mov x1, x6 + sub x7, x7, x10 + cmp x7, x11 + b.hi 1b + + mov x2, x7 + bl .Llt8k + add x0, x4, x0 + mov x30, x8 + ret + .size __gmpn_hamdist,.-__gmpn_hamdist diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/invert_limb.s b/vere/ext/gmp/gen/aarch64-linux/mpn/invert_limb.s new file mode 100644 index 0000000..9c42cb3 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/invert_limb.s @@ -0,0 +1,347 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_invert_limb + .type __gmpn_invert_limb,@function +__gmpn_invert_limb: + lsr x2, x0, #54 + adrp x1, :got:approx_tab + and x2, x2, #0x1fe + ldr x1, [x1, #:got_lo12:approx_tab] + ldrh w3, [x1,x2] + lsr x4, x0, #24 + add x4, x4, #1 + ubfiz x2, x3, #11, #16 + umull x3, w3, w3 + mul x3, x3, x4 + sub x2, x2, #1 + sub x2, x2, x3, lsr #40 + lsl x3, x2, #60 + mul x1, x2, x2 + msub x1, x1, x4, x3 + lsl x2, x2, #13 + add x1, x2, x1, lsr #47 + and x2, x0, #1 + neg x3, x2 + and x3, x3, x1, lsr #1 + add x2, x2, x0, lsr #1 + msub x2, x1, x2, x3 + umulh x2, x2, x1 + lsl x1, x1, #31 + add x1, x1, x2, lsr #1 + mul x3, x1, x0 + umulh x2, x1, x0 + adds x4, x3, x0 + adc x0, x2, x0 + sub x0, x1, x0 + ret + .size __gmpn_invert_limb,.-__gmpn_invert_limb + + .section .rodata + .align 1 + .type approx_tab,@object + .size approx_tab,512 +approx_tab: + .hword 2045 + .hword 2037 + .hword 2029 + .hword 2021 + .hword 2013 + .hword 2005 + .hword 1998 + .hword 1990 + .hword 1983 + .hword 1975 + .hword 1968 + .hword 1960 + .hword 1953 + .hword 1946 + .hword 1938 + .hword 1931 + .hword 1924 + .hword 1917 + .hword 1910 + .hword 1903 + .hword 1896 + .hword 1889 + .hword 1883 + .hword 1876 + .hword 1869 + .hword 1863 + .hword 1856 + .hword 1849 + .hword 1843 + .hword 1836 + .hword 1830 + .hword 1824 + .hword 1817 + .hword 1811 + .hword 1805 + .hword 1799 + .hword 1792 + .hword 1786 + .hword 1780 + .hword 1774 + .hword 1768 + .hword 1762 + .hword 1756 + .hword 1750 + .hword 1745 + .hword 1739 + .hword 1733 + .hword 1727 + .hword 1722 + .hword 1716 + .hword 1710 + .hword 1705 + .hword 1699 + .hword 1694 + .hword 1688 + .hword 1683 + .hword 1677 + .hword 1672 + .hword 1667 + .hword 1661 + .hword 1656 + .hword 1651 + .hword 1646 + .hword 1641 + .hword 1636 + .hword 1630 + .hword 1625 + .hword 1620 + .hword 1615 + .hword 1610 + .hword 1605 + .hword 1600 + .hword 1596 + .hword 1591 + .hword 1586 + .hword 1581 + .hword 1576 + .hword 1572 + .hword 1567 + .hword 1562 + .hword 1558 + .hword 1553 + .hword 1548 + .hword 1544 + .hword 1539 + .hword 1535 + .hword 1530 + .hword 1526 + .hword 1521 + .hword 1517 + .hword 1513 + .hword 1508 + .hword 1504 + .hword 1500 + .hword 1495 + .hword 1491 + .hword 1487 + .hword 1483 + .hword 1478 + .hword 1474 + .hword 1470 + .hword 1466 + .hword 1462 + .hword 1458 + .hword 1454 + .hword 1450 + .hword 1446 + .hword 1442 + .hword 1438 + .hword 1434 + .hword 1430 + .hword 1426 + .hword 1422 + .hword 1418 + .hword 1414 + .hword 1411 + .hword 1407 + .hword 1403 + .hword 1399 + .hword 1396 + .hword 1392 + .hword 1388 + .hword 1384 + .hword 1381 + .hword 1377 + .hword 1374 + .hword 1370 + .hword 1366 + .hword 1363 + .hword 1359 + .hword 1356 + .hword 1352 + .hword 1349 + .hword 1345 + .hword 1342 + .hword 1338 + .hword 1335 + .hword 1332 + .hword 1328 + .hword 1325 + .hword 1322 + .hword 1318 + .hword 1315 + .hword 1312 + .hword 1308 + .hword 1305 + .hword 1302 + .hword 1299 + .hword 1295 + .hword 1292 + .hword 1289 + .hword 1286 + .hword 1283 + .hword 1280 + .hword 1276 + .hword 1273 + .hword 1270 + .hword 1267 + .hword 1264 + .hword 1261 + .hword 1258 + .hword 1255 + .hword 1252 + .hword 1249 + .hword 1246 + .hword 1243 + .hword 1240 + .hword 1237 + .hword 1234 + .hword 1231 + .hword 1228 + .hword 1226 + .hword 1223 + .hword 1220 + .hword 1217 + .hword 1214 + .hword 1211 + .hword 1209 + .hword 1206 + .hword 1203 + .hword 1200 + .hword 1197 + .hword 1195 + .hword 1192 + .hword 1189 + .hword 1187 + .hword 1184 + .hword 1181 + .hword 1179 + .hword 1176 + .hword 1173 + .hword 1171 + .hword 1168 + .hword 1165 + .hword 1163 + .hword 1160 + .hword 1158 + .hword 1155 + .hword 1153 + .hword 1150 + .hword 1148 + .hword 1145 + .hword 1143 + .hword 1140 + .hword 1138 + .hword 1135 + .hword 1133 + .hword 1130 + .hword 1128 + .hword 1125 + .hword 1123 + .hword 1121 + .hword 1118 + .hword 1116 + .hword 1113 + .hword 1111 + .hword 1109 + .hword 1106 + .hword 1104 + .hword 1102 + .hword 1099 + .hword 1097 + .hword 1095 + .hword 1092 + .hword 1090 + .hword 1088 + .hword 1086 + .hword 1083 + .hword 1081 + .hword 1079 + .hword 1077 + .hword 1074 + .hword 1072 + .hword 1070 + .hword 1068 + .hword 1066 + .hword 1064 + .hword 1061 + .hword 1059 + .hword 1057 + .hword 1055 + .hword 1053 + .hword 1051 + .hword 1049 + .hword 1047 + .hword 1044 + .hword 1042 + .hword 1040 + .hword 1038 + .hword 1036 + .hword 1034 + .hword 1032 + .hword 1030 + .hword 1028 + .hword 1026 + .hword 1024 diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/ior_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/ior_n.s new file mode 100644 index 0000000..e94c0f4 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/ior_n.s @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_ior_n + .type __gmpn_ior_n,@function +__gmpn_ior_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x7, [x1] + ldr x11, [x2] + orr x15, x7, x11 + str x15, [x0],#8 + tbnz x3, #1, .Lb11 + +.Lb01: cbz x18, .Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b .Lmid + +.Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b .Lmid + +.Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + orr x12, x6, x10 + orr x13, x7, x11 + stp x12, x13, [x0],#16 +.Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + orr x12, x4, x8 + orr x13, x5, x9 + stp x12, x13, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: orr x12, x6, x10 + orr x13, x7, x11 + stp x12, x13, [x0] +.Lret: ret + .size __gmpn_ior_n,.-__gmpn_ior_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/iorn_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/iorn_n.s new file mode 100644 index 0000000..3a745fb --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/iorn_n.s @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_iorn_n + .type __gmpn_iorn_n,@function +__gmpn_iorn_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x7, [x1] + ldr x11, [x2] + orn x15, x7, x11 + str x15, [x0],#8 + tbnz x3, #1, .Lb11 + +.Lb01: cbz x18, .Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b .Lmid + +.Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b .Lmid + +.Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + orn x12, x6, x10 + orn x13, x7, x11 + stp x12, x13, [x0],#16 +.Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + orn x12, x4, x8 + orn x13, x5, x9 + stp x12, x13, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: orn x12, x6, x10 + orn x13, x7, x11 + stp x12, x13, [x0] +.Lret: ret + .size __gmpn_iorn_n,.-__gmpn_iorn_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/jacobitab.h b/vere/ext/gmp/gen/aarch64-linux/mpn/jacobitab.h new file mode 100644 index 0000000..4bdbfcc --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/jacobitab.h @@ -0,0 +1,13 @@ + 0, 0, 0, 0, 0,12, 8, 4, 1, 1, 1, 1, 1,13, 9, 5, + 2, 2, 2, 2, 2, 6,10,14, 3, 3, 3, 3, 3, 7,11,15, + 4,16, 6,18, 4, 0,12, 8, 5,17, 7,19, 5, 1,13, 9, + 6,18, 4,16, 6,10,14, 2, 7,19, 5,17, 7,11,15, 3, + 8,10, 9,11, 8, 4, 0,12, 9,11, 8,10, 9, 5, 1,13, +10, 9,11, 8,10,14, 2, 6,11, 8,10, 9,11,15, 3, 7, +12,22,24,20,12, 8, 4, 0,13,23,25,21,13, 9, 5, 1, +25,21,13,23,14, 2, 6,10,24,20,12,22,15, 3, 7,11, +16, 6,18, 4,16,16,16,16,17, 7,19, 5,17,17,17,17, +18, 4,16, 6,18,22,19,23,19, 5,17, 7,19,23,18,22, +20,12,22,24,20,20,20,20,21,13,23,25,21,21,21,21, +22,24,20,12,22,19,23,18,23,25,21,13,23,18,22,19, +24,20,12,22,15, 3, 7,11,25,21,13,23,14, 2, 6,10, diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/lshift.s b/vere/ext/gmp/gen/aarch64-linux/mpn/lshift.s new file mode 100644 index 0000000..8d39593 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/lshift.s @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_lshift + .type __gmpn_lshift,@function +__gmpn_lshift: + add x16, x0, x2, lsl #3 + add x1, x1, x2, lsl #3 + sub x8, xzr, x3 + lsr x18, x2, #2 + tbz x2, #0, .Lbx0 + +.Lbx1: ldr x4, [x1,#-8] + tbnz x2, #1, .Lb11 + +.Lb01: lsr x0, x4, x8 + lsl x2, x4, x3 + cbnz x18, .Lgt1 + str x2, [x16,#-8] + ret +.Lgt1: ldp x4, x5, [x1,#-24] + sub x1, x1, #8 + add x16, x16, #16 + b .Llo2 + +.Lb11: lsr x0, x4, x8 + lsl x2, x4, x3 + ldp x6, x7, [x1,#-24]! + b .Llo3 + +.Lbx0: ldp x4, x5, [x1,#-16] + tbz x2, #1, .Lb00 + +.Lb10: lsr x0, x5, x8 + lsl x13, x5, x3 + lsr x10, x4, x8 + lsl x2, x4, x3 + cbnz x18, .Lgt2 + orr x10, x10, x13 + stp x2, x10, [x16,#-16] + ret +.Lgt2: ldp x4, x5, [x1,#-32] + orr x10, x10, x13 + str x10, [x16,#-8] + sub x1, x1, #16 + add x16, x16, #8 + b .Llo2 + +.Lb00: lsr x0, x5, x8 + lsl x13, x5, x3 + lsr x10, x4, x8 + lsl x2, x4, x3 + ldp x6, x7, [x1,#-32]! + orr x10, x10, x13 + str x10, [x16,#-8]! + b .Llo0 + + .align 4 +.Ltop: ldp x4, x5, [x1,#-16] + orr x10, x10, x13 + orr x11, x12, x2 + stp x10, x11, [x16,#-16] + lsl x2, x6, x3 +.Llo2: lsr x10, x4, x8 + lsl x13, x5, x3 + lsr x12, x5, x8 + ldp x6, x7, [x1,#-32]! + orr x10, x10, x13 + orr x11, x12, x2 + stp x10, x11, [x16,#-32]! + lsl x2, x4, x3 +.Llo0: sub x18, x18, #1 +.Llo3: lsr x10, x6, x8 + lsl x13, x7, x3 + lsr x12, x7, x8 + cbnz x18, .Ltop + +.Lend: orr x10, x10, x13 + orr x11, x12, x2 + lsl x2, x6, x3 + stp x10, x11, [x16,#-16] + str x2, [x16,#-24] + ret + .size __gmpn_lshift,.-__gmpn_lshift diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/lshiftc.s b/vere/ext/gmp/gen/aarch64-linux/mpn/lshiftc.s new file mode 100644 index 0000000..f890952 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/lshiftc.s @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_lshiftc + .type __gmpn_lshiftc,@function +__gmpn_lshiftc: + add x16, x0, x2, lsl #3 + add x1, x1, x2, lsl #3 + sub x8, xzr, x3 + lsr x18, x2, #2 + tbz x2, #0, .Lbx0 + +.Lbx1: ldr x4, [x1,#-8] + tbnz x2, #1, .Lb11 + +.Lb01: lsr x0, x4, x8 + lsl x2, x4, x3 + cbnz x18, .Lgt1 + mvn x2, x2 + str x2, [x16,#-8] + ret +.Lgt1: ldp x4, x5, [x1,#-24] + sub x1, x1, #8 + add x16, x16, #16 + b .Llo2 + +.Lb11: lsr x0, x4, x8 + lsl x2, x4, x3 + ldp x6, x7, [x1,#-24]! + b .Llo3 + +.Lbx0: ldp x4, x5, [x1,#-16] + tbz x2, #1, .Lb00 + +.Lb10: lsr x0, x5, x8 + lsl x13, x5, x3 + lsr x10, x4, x8 + lsl x2, x4, x3 + cbnz x18, .Lgt2 + eon x10, x10, x13 + mvn x2, x2 + stp x2, x10, [x16,#-16] + ret +.Lgt2: ldp x4, x5, [x1,#-32] + eon x10, x10, x13 + str x10, [x16,#-8] + sub x1, x1, #16 + add x16, x16, #8 + b .Llo2 + +.Lb00: lsr x0, x5, x8 + lsl x13, x5, x3 + lsr x10, x4, x8 + lsl x2, x4, x3 + ldp x6, x7, [x1,#-32]! + eon x10, x10, x13 + str x10, [x16,#-8]! + b .Llo0 + + .align 4 +.Ltop: ldp x4, x5, [x1,#-16] + eon x10, x10, x13 + eon x11, x12, x2 + stp x10, x11, [x16,#-16] + lsl x2, x6, x3 +.Llo2: lsr x10, x4, x8 + lsl x13, x5, x3 + lsr x12, x5, x8 + ldp x6, x7, [x1,#-32]! + eon x10, x10, x13 + eon x11, x12, x2 + stp x10, x11, [x16,#-32]! + lsl x2, x4, x3 +.Llo0: sub x18, x18, #1 +.Llo3: lsr x10, x6, x8 + lsl x13, x7, x3 + lsr x12, x7, x8 + cbnz x18, .Ltop + +.Lend: eon x10, x10, x13 + eon x11, x12, x2 + lsl x2, x6, x3 + stp x10, x11, [x16,#-16] + mvn x2, x2 + str x2, [x16,#-24] + ret + .size __gmpn_lshiftc,.-__gmpn_lshiftc diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/mod_34lsub1.s b/vere/ext/gmp/gen/aarch64-linux/mpn/mod_34lsub1.s new file mode 100644 index 0000000..f59f660 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/mod_34lsub1.s @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5 + .text + .align 3 + .globl __gmpn_mod_34lsub1 + .type __gmpn_mod_34lsub1,@function +__gmpn_mod_34lsub1: + subs x1, x1, #3 + mov x8, #0 + b.lt .Lle2 + + ldp x2, x3, [x0, #0] + ldr x4, [x0, #16] + add x0, x0, #24 + subs x1, x1, #3 + b.lt .Lsum + cmn x0, #0 + +.Ltop: ldp x5, x6, [x0, #0] + ldr x7, [x0, #16] + add x0, x0, #24 + sub x1, x1, #3 + adcs x2, x2, x5 + adcs x3, x3, x6 + adcs x4, x4, x7 + tbz x1, #63, .Ltop + + adc x8, xzr, xzr + +.Lsum: cmn x1, #2 + mov x5, #0 + b.lo 1f + ldr x5, [x0], #8 +1: mov x6, #0 + b.ls 1f + ldr x6, [x0], #8 +1: adds x2, x2, x5 + adcs x3, x3, x6 + adcs x4, x4, xzr + adc x8, x8, xzr + +.Lsum2: + and x0, x2, #0xffffffffffff + add x0, x0, x2, lsr #48 + add x0, x0, x8 + + lsl x8, x3, #16 + and x1, x8, #0xffffffffffff + add x0, x0, x1 + add x0, x0, x3, lsr #32 + + lsl x8, x4, #32 + and x1, x8, #0xffffffffffff + add x0, x0, x1 + add x0, x0, x4, lsr #16 + ret + +.Lle2: cmn x1, #1 + b.ne .L1 + ldp x2, x3, [x0] + mov x4, #0 + b .Lsum2 +.L1: ldr x2, [x0] + and x0, x2, #0xffffffffffff + add x0, x0, x2, lsr #48 + ret + .size __gmpn_mod_34lsub1,.-__gmpn_mod_34lsub1 diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/mp_bases.c b/vere/ext/gmp/gen/aarch64-linux/mpn/mp_bases.c new file mode 100644 index 0000000..c72c531 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/mp_bases.c @@ -0,0 +1,268 @@ +/* This file generated by gen-bases.c - DO NOT EDIT. */ + +#include "gmp-impl.h" + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +const struct bases mp_bases[257] = +{ + /* 0 */ { 0, 0, 0, 0, 0 }, + /* 1 */ { 0, 0, 0, 0, 0 }, + /* 2 */ { 64, CNST_LIMB(0xffffffffffffffff), CNST_LIMB(0x1fffffffffffffff), CNST_LIMB(0x1), CNST_LIMB(0x0) }, + /* 3 */ { 40, CNST_LIMB(0xa1849cc1a9a9e94e), CNST_LIMB(0x32b803473f7ad0f3), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 4 */ { 32, CNST_LIMB(0x7fffffffffffffff), CNST_LIMB(0x3fffffffffffffff), CNST_LIMB(0x2), CNST_LIMB(0x0) }, + /* 5 */ { 27, CNST_LIMB(0x6e40d1a4143dcb94), CNST_LIMB(0x4a4d3c25e68dc57f), CNST_LIMB(0x6765c793fa10079d), CNST_LIMB(0x3ce9a36f23c0fc90) }, + /* 6 */ { 24, CNST_LIMB(0x6308c91b702a7cf4), CNST_LIMB(0x52b803473f7ad0f3), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 7 */ { 22, CNST_LIMB(0x5b3064eb3aa6d388), CNST_LIMB(0x59d5d9fd5010b366), CNST_LIMB(0x3642798750226111), CNST_LIMB(0x2df495ccaa57147b) }, + /* 8 */ { 21, CNST_LIMB(0x5555555555555555), CNST_LIMB(0x5fffffffffffffff), CNST_LIMB(0x3), CNST_LIMB(0x0) }, + /* 9 */ { 20, CNST_LIMB(0x50c24e60d4d4f4a7), CNST_LIMB(0x6570068e7ef5a1e7), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 10 */ { 19, CNST_LIMB(0x4d104d427de7fbcc), CNST_LIMB(0x6a4d3c25e68dc57f), CNST_LIMB(0x8ac7230489e80000), CNST_LIMB(0xd83c94fb6d2ac34a) }, + /* 11 */ { 18, CNST_LIMB(0x4a00270775914e88), CNST_LIMB(0x6eb3a9f01975077f), CNST_LIMB(0x4d28cb56c33fa539), CNST_LIMB(0xa8adf7ae45e7577b) }, + /* 12 */ { 17, CNST_LIMB(0x4768ce0d05818e12), CNST_LIMB(0x72b803473f7ad0f3), CNST_LIMB(0x1eca170c00000000), CNST_LIMB(0xa10c2bec5da8f8f) }, + /* 13 */ { 17, CNST_LIMB(0x452e53e365907bda), CNST_LIMB(0x766a008e4788cbcd), CNST_LIMB(0x780c7372621bd74d), CNST_LIMB(0x10f4becafe412ec3) }, + /* 14 */ { 16, CNST_LIMB(0x433cfffb4b5aae55), CNST_LIMB(0x79d5d9fd5010b366), CNST_LIMB(0x1e39a5057d810000), CNST_LIMB(0xf08480f672b4e86) }, + /* 15 */ { 16, CNST_LIMB(0x41867711b4f85355), CNST_LIMB(0x7d053f6d26089673), CNST_LIMB(0x5b27ac993df97701), CNST_LIMB(0x6779c7f90dc42f48) }, + /* 16 */ { 16, CNST_LIMB(0x3fffffffffffffff), CNST_LIMB(0x7fffffffffffffff), CNST_LIMB(0x4), CNST_LIMB(0x0) }, + /* 17 */ { 15, CNST_LIMB(0x3ea16afd58b10966), CNST_LIMB(0x82cc7edf592262cf), CNST_LIMB(0x27b95e997e21d9f1), CNST_LIMB(0x9c71e11bab279323) }, + /* 18 */ { 15, CNST_LIMB(0x3d64598d154dc4de), CNST_LIMB(0x8570068e7ef5a1e7), CNST_LIMB(0x5da0e1e53c5c8000), CNST_LIMB(0x5dfaa697ec6f6a1c) }, + /* 19 */ { 15, CNST_LIMB(0x3c43c23018bb5563), CNST_LIMB(0x87ef05ae409a0288), CNST_LIMB(0xd2ae3299c1c4aedb), CNST_LIMB(0x3711783f6be7e9ec) }, + /* 20 */ { 14, CNST_LIMB(0x3b3b9a42873069c7), CNST_LIMB(0x8a4d3c25e68dc57f), CNST_LIMB(0x16bcc41e90000000), CNST_LIMB(0x6849b86a12b9b01e) }, + /* 21 */ { 14, CNST_LIMB(0x3a4898f06cf41ac9), CNST_LIMB(0x8c8ddd448f8b845a), CNST_LIMB(0x2d04b7fdd9c0ef49), CNST_LIMB(0x6bf097ba5ca5e239) }, + /* 22 */ { 14, CNST_LIMB(0x39680b13582e7c18), CNST_LIMB(0x8eb3a9f01975077f), CNST_LIMB(0x5658597bcaa24000), CNST_LIMB(0x7b8015c8d7af8f08) }, + /* 23 */ { 14, CNST_LIMB(0x3897b2b751ae561a), CNST_LIMB(0x90c10500d63aa658), CNST_LIMB(0xa0e2073737609371), CNST_LIMB(0x975a24b3a3151b38) }, + /* 24 */ { 13, CNST_LIMB(0x37d5aed131f19c98), CNST_LIMB(0x92b803473f7ad0f3), CNST_LIMB(0xc29e98000000000), CNST_LIMB(0x50bd367972689db1) }, + /* 25 */ { 13, CNST_LIMB(0x372068d20a1ee5ca), CNST_LIMB(0x949a784bcd1b8afe), CNST_LIMB(0x14adf4b7320334b9), CNST_LIMB(0x8c240c4aecb13bb5) }, + /* 26 */ { 13, CNST_LIMB(0x3676867e5d60de29), CNST_LIMB(0x966a008e4788cbcd), CNST_LIMB(0x226ed36478bfa000), CNST_LIMB(0xdbd2e56854e118c9) }, + /* 27 */ { 13, CNST_LIMB(0x35d6deeb388df86f), CNST_LIMB(0x982809d5be7072db), CNST_LIMB(0x383d9170b85ff80b), CNST_LIMB(0x2351ffcaa9c7c4ae) }, + /* 28 */ { 13, CNST_LIMB(0x354071d61c77fa2e), CNST_LIMB(0x99d5d9fd5010b366), CNST_LIMB(0x5a3c23e39c000000), CNST_LIMB(0x6b24188ca33b0636) }, + /* 29 */ { 13, CNST_LIMB(0x34b260c5671b18ac), CNST_LIMB(0x9b74948f5532da4b), CNST_LIMB(0x8e65137388122bcd), CNST_LIMB(0xcc3dceaf2b8ba99d) }, + /* 30 */ { 13, CNST_LIMB(0x342be986572b45cc), CNST_LIMB(0x9d053f6d26089673), CNST_LIMB(0xdd41bb36d259e000), CNST_LIMB(0x2832e835c6c7d6b6) }, + /* 31 */ { 12, CNST_LIMB(0x33ac61b998fbbdf2), CNST_LIMB(0x9e88c6b3626a72aa), CNST_LIMB(0xaee5720ee830681), CNST_LIMB(0x76b6aa272e1873c5) }, + /* 32 */ { 12, CNST_LIMB(0x3333333333333333), CNST_LIMB(0x9fffffffffffffff), CNST_LIMB(0x5), CNST_LIMB(0x0) }, + /* 33 */ { 12, CNST_LIMB(0x32bfd90114c12861), CNST_LIMB(0xa16bad3758efd873), CNST_LIMB(0x172588ad4f5f0981), CNST_LIMB(0x61eaf5d402c7bf4f) }, + /* 34 */ { 12, CNST_LIMB(0x3251dcf6169e45f2), CNST_LIMB(0xa2cc7edf592262cf), CNST_LIMB(0x211e44f7d02c1000), CNST_LIMB(0xeeb658123ffb27ec) }, + /* 35 */ { 12, CNST_LIMB(0x31e8d59f180dc630), CNST_LIMB(0xa4231623369e78e5), CNST_LIMB(0x2ee56725f06e5c71), CNST_LIMB(0x5d5e3762e6fdf509) }, + /* 36 */ { 12, CNST_LIMB(0x3184648db8153e7a), CNST_LIMB(0xa570068e7ef5a1e7), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 37 */ { 12, CNST_LIMB(0x312434e89c35dacd), CNST_LIMB(0xa6b3d78b6d3b24fb), CNST_LIMB(0x5b5b57f8a98a5dd1), CNST_LIMB(0x66ae7831762efb6f) }, + /* 38 */ { 12, CNST_LIMB(0x30c7fa349460a541), CNST_LIMB(0xa7ef05ae409a0288), CNST_LIMB(0x7dcff8986ea31000), CNST_LIMB(0x47388865a00f544) }, + /* 39 */ { 12, CNST_LIMB(0x306f6f4c8432bc6d), CNST_LIMB(0xa92203d587039cc1), CNST_LIMB(0xabd4211662a6b2a1), CNST_LIMB(0x7d673c33a123b54c) }, + /* 40 */ { 12, CNST_LIMB(0x301a557ffbfdd252), CNST_LIMB(0xaa4d3c25e68dc57f), CNST_LIMB(0xe8d4a51000000000), CNST_LIMB(0x19799812dea11197) }, + /* 41 */ { 11, CNST_LIMB(0x2fc873d1fda55f3b), CNST_LIMB(0xab7110e6ce866f2b), CNST_LIMB(0x7a32956ad081b79), CNST_LIMB(0xc27e62e0686feae) }, + /* 42 */ { 11, CNST_LIMB(0x2f799652a4e6dc49), CNST_LIMB(0xac8ddd448f8b845a), CNST_LIMB(0x9f49aaff0e86800), CNST_LIMB(0x9b6e7507064ce7c7) }, + /* 43 */ { 11, CNST_LIMB(0x2f2d8d8f64460aad), CNST_LIMB(0xada3f5fb9c415052), CNST_LIMB(0xce583bb812d37b3), CNST_LIMB(0x3d9ac2bf66cfed94) }, + /* 44 */ { 11, CNST_LIMB(0x2ee42e164e8f53a4), CNST_LIMB(0xaeb3a9f01975077f), CNST_LIMB(0x109b79a654c00000), CNST_LIMB(0xed46bc50ce59712a) }, + /* 45 */ { 11, CNST_LIMB(0x2e9d500984041dbd), CNST_LIMB(0xafbd42b465836767), CNST_LIMB(0x1543beff214c8b95), CNST_LIMB(0x813d97e2c89b8d46) }, + /* 46 */ { 11, CNST_LIMB(0x2e58cec05a6a8144), CNST_LIMB(0xb0c10500d63aa658), CNST_LIMB(0x1b149a79459a3800), CNST_LIMB(0x2e81751956af8083) }, + /* 47 */ { 11, CNST_LIMB(0x2e1688743ef9104c), CNST_LIMB(0xb1bf311e95d00de3), CNST_LIMB(0x224edfb5434a830f), CNST_LIMB(0xdd8e0a95e30c0988) }, + /* 48 */ { 11, CNST_LIMB(0x2dd65df7a583598f), CNST_LIMB(0xb2b803473f7ad0f3), CNST_LIMB(0x2b3fb00000000000), CNST_LIMB(0x7ad4dd48a0b5b167) }, + /* 49 */ { 11, CNST_LIMB(0x2d9832759d5369c4), CNST_LIMB(0xb3abb3faa02166cc), CNST_LIMB(0x3642798750226111), CNST_LIMB(0x2df495ccaa57147b) }, + /* 50 */ { 11, CNST_LIMB(0x2d5beb38dcd1394c), CNST_LIMB(0xb49a784bcd1b8afe), CNST_LIMB(0x43c33c1937564800), CNST_LIMB(0xe392010175ee5962) }, + /* 51 */ { 11, CNST_LIMB(0x2d216f7943e2ba6a), CNST_LIMB(0xb5848226989d33c3), CNST_LIMB(0x54411b2441c3cd8b), CNST_LIMB(0x84eaf11b2fe7738e) }, + /* 52 */ { 11, CNST_LIMB(0x2ce8a82efbb3ff2c), CNST_LIMB(0xb66a008e4788cbcd), CNST_LIMB(0x6851455acd400000), CNST_LIMB(0x3a1e3971e008995d) }, + /* 53 */ { 11, CNST_LIMB(0x2cb17fea7ad7e332), CNST_LIMB(0xb74b1fd64e0753c6), CNST_LIMB(0x80a23b117c8feb6d), CNST_LIMB(0xfd7a462344ffce25) }, + /* 54 */ { 11, CNST_LIMB(0x2c7be2b0cfa1ba50), CNST_LIMB(0xb82809d5be7072db), CNST_LIMB(0x9dff7d32d5dc1800), CNST_LIMB(0x9eca40b40ebcef8a) }, + /* 55 */ { 11, CNST_LIMB(0x2c47bddba92d7463), CNST_LIMB(0xb900e6160002ccfe), CNST_LIMB(0xc155af6faeffe6a7), CNST_LIMB(0x52fa161a4a48e43d) }, + /* 56 */ { 11, CNST_LIMB(0x2c14fffcaa8b131e), CNST_LIMB(0xb9d5d9fd5010b366), CNST_LIMB(0xebb7392e00000000), CNST_LIMB(0x1607a2cbacf930c1) }, + /* 57 */ { 10, CNST_LIMB(0x2be398c3a38be053), CNST_LIMB(0xbaa708f58014d37c), CNST_LIMB(0x50633659656d971), CNST_LIMB(0x97a014f8e3be55f1) }, + /* 58 */ { 10, CNST_LIMB(0x2bb378e758451068), CNST_LIMB(0xbb74948f5532da4b), CNST_LIMB(0x5fa8624c7fba400), CNST_LIMB(0x568df8b76cbf212c) }, + /* 59 */ { 10, CNST_LIMB(0x2b8492108be5e5f7), CNST_LIMB(0xbc3e9ca2e1a05533), CNST_LIMB(0x717d9faa73c5679), CNST_LIMB(0x20ba7c4b4e6ef492) }, + /* 60 */ { 10, CNST_LIMB(0x2b56d6c70d55481b), CNST_LIMB(0xbd053f6d26089673), CNST_LIMB(0x86430aac6100000), CNST_LIMB(0xe81ee46b9ef492f5) }, + /* 61 */ { 10, CNST_LIMB(0x2b2a3a608c72ddd5), CNST_LIMB(0xbdc899ab3ff56c5e), CNST_LIMB(0x9e64d9944b57f29), CNST_LIMB(0x9dc0d10d51940416) }, + /* 62 */ { 10, CNST_LIMB(0x2afeb0f1060c7e41), CNST_LIMB(0xbe88c6b3626a72aa), CNST_LIMB(0xba5ca5392cb0400), CNST_LIMB(0x5fa8ed2f450272a5) }, + /* 63 */ { 10, CNST_LIMB(0x2ad42f3c9aca595c), CNST_LIMB(0xbf45e08bcf06554e), CNST_LIMB(0xdab2ce1d022cd81), CNST_LIMB(0x2ba9eb8c5e04e641) }, + /* 64 */ { 10, CNST_LIMB(0x2aaaaaaaaaaaaaaa), CNST_LIMB(0xbfffffffffffffff), CNST_LIMB(0x6), CNST_LIMB(0x0) }, + /* 65 */ { 10, CNST_LIMB(0x2a82193a13425883), CNST_LIMB(0xc0b73cb42e16914c), CNST_LIMB(0x12aeed5fd3e2d281), CNST_LIMB(0xb67759cc00287bf1) }, + /* 66 */ { 10, CNST_LIMB(0x2a5a717672f66450), CNST_LIMB(0xc16bad3758efd873), CNST_LIMB(0x15c3da1572d50400), CNST_LIMB(0x78621feeb7f4ed33) }, + /* 67 */ { 10, CNST_LIMB(0x2a33aa6e56d9c71c), CNST_LIMB(0xc21d6713f453f356), CNST_LIMB(0x194c05534f75ee29), CNST_LIMB(0x43d55b5f72943bc0) }, + /* 68 */ { 10, CNST_LIMB(0x2a0dbbaa3bdfcea4), CNST_LIMB(0xc2cc7edf592262cf), CNST_LIMB(0x1d56299ada100000), CNST_LIMB(0x173decb64d1d4409) }, + /* 69 */ { 10, CNST_LIMB(0x29e89d244eb4bfaf), CNST_LIMB(0xc379084815b5774c), CNST_LIMB(0x21f2a089a4ff4f79), CNST_LIMB(0xe29fb54fd6b6074f) }, + /* 70 */ { 10, CNST_LIMB(0x29c44740d7db51e6), CNST_LIMB(0xc4231623369e78e5), CNST_LIMB(0x2733896c68d9a400), CNST_LIMB(0xa1f1f5c210d54e62) }, + /* 71 */ { 10, CNST_LIMB(0x29a0b2c743b14d74), CNST_LIMB(0xc4caba789e2b8687), CNST_LIMB(0x2d2cf2c33b533c71), CNST_LIMB(0x6aac7f9bfafd57b2) }, + /* 72 */ { 10, CNST_LIMB(0x297dd8dbb7c22a2d), CNST_LIMB(0xc570068e7ef5a1e7), CNST_LIMB(0x33f506e440000000), CNST_LIMB(0x3b563c2478b72ee2) }, + /* 73 */ { 10, CNST_LIMB(0x295bb2f9285c8c1b), CNST_LIMB(0xc6130af40bc0ecbf), CNST_LIMB(0x3ba43bec1d062211), CNST_LIMB(0x12b536b574e92d1b) }, + /* 74 */ { 10, CNST_LIMB(0x293a3aebe2be1c92), CNST_LIMB(0xc6b3d78b6d3b24fb), CNST_LIMB(0x4455872d8fd4e400), CNST_LIMB(0xdf86c03020404fa5) }, + /* 75 */ { 10, CNST_LIMB(0x29196acc815ebd9f), CNST_LIMB(0xc7527b930c965bf2), CNST_LIMB(0x4e2694539f2f6c59), CNST_LIMB(0xa34adf02234eea8e) }, + /* 76 */ { 10, CNST_LIMB(0x28f93cfb40f5c22a), CNST_LIMB(0xc7ef05ae409a0288), CNST_LIMB(0x5938006c18900000), CNST_LIMB(0x6f46eb8574eb59dd) }, + /* 77 */ { 10, CNST_LIMB(0x28d9ac1badc64117), CNST_LIMB(0xc88983ed6985bae5), CNST_LIMB(0x65ad9912474aa649), CNST_LIMB(0x42459b481df47cec) }, + /* 78 */ { 10, CNST_LIMB(0x28bab310a196b478), CNST_LIMB(0xc92203d587039cc1), CNST_LIMB(0x73ae9ff4241ec400), CNST_LIMB(0x1b424b95d80ca505) }, + /* 79 */ { 10, CNST_LIMB(0x289c4cf88b774469), CNST_LIMB(0xc9b892675266f66c), CNST_LIMB(0x836612ee9c4ce1e1), CNST_LIMB(0xf2c1b982203a0dac) }, + /* 80 */ { 10, CNST_LIMB(0x287e7529fb244e91), CNST_LIMB(0xca4d3c25e68dc57f), CNST_LIMB(0x9502f90000000000), CNST_LIMB(0xb7cdfd9d7bdbab7d) }, + /* 81 */ { 10, CNST_LIMB(0x286127306a6a7a53), CNST_LIMB(0xcae00d1cfdeb43cf), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 82 */ { 10, CNST_LIMB(0x28445ec93f792b1e), CNST_LIMB(0xcb7110e6ce866f2b), CNST_LIMB(0xbebf59a07dab4400), CNST_LIMB(0x57931eeaf85cf64f) }, + /* 83 */ { 10, CNST_LIMB(0x282817e1038950fa), CNST_LIMB(0xcc0052b18b0e2a19), CNST_LIMB(0xd7540d4093bc3109), CNST_LIMB(0x305a944507c82f47) }, + /* 84 */ { 10, CNST_LIMB(0x280c4e90c9ab1f45), CNST_LIMB(0xcc8ddd448f8b845a), CNST_LIMB(0xf2b96616f1900000), CNST_LIMB(0xe007ccc9c22781a) }, + /* 85 */ { 9, CNST_LIMB(0x27f0ff1bc1ee87cd), CNST_LIMB(0xcd19bb053fb0284e), CNST_LIMB(0x336de62af2bca35), CNST_LIMB(0x3e92c42e000eeed4) }, + /* 86 */ { 9, CNST_LIMB(0x27d625ecf571c340), CNST_LIMB(0xcda3f5fb9c415052), CNST_LIMB(0x39235ec33d49600), CNST_LIMB(0x1ebe59130db2795e) }, + /* 87 */ { 9, CNST_LIMB(0x27bbbf95282fcd45), CNST_LIMB(0xce2c97d694adab3f), CNST_LIMB(0x3f674e539585a17), CNST_LIMB(0x268859e90f51b89) }, + /* 88 */ { 9, CNST_LIMB(0x27a1c8c8ddaf84da), CNST_LIMB(0xceb3a9f01975077f), CNST_LIMB(0x4645b6958000000), CNST_LIMB(0xd24cde0463108cfa) }, + /* 89 */ { 9, CNST_LIMB(0x27883e5e7df3f518), CNST_LIMB(0xcf393550f3aa6906), CNST_LIMB(0x4dcb74afbc49c19), CNST_LIMB(0xa536009f37adc383) }, + /* 90 */ { 9, CNST_LIMB(0x276f1d4c9847e90e), CNST_LIMB(0xcfbd42b465836767), CNST_LIMB(0x56064e1d18d9a00), CNST_LIMB(0x7cea06ce1c9ace10) }, + /* 91 */ { 9, CNST_LIMB(0x275662a841b30191), CNST_LIMB(0xd03fda8b97997f33), CNST_LIMB(0x5f04fe2cd8a39fb), CNST_LIMB(0x58db032e72e8ba43) }, + /* 92 */ { 9, CNST_LIMB(0x273e0ba38d15a47b), CNST_LIMB(0xd0c10500d63aa658), CNST_LIMB(0x68d74421f5c0000), CNST_LIMB(0x388cc17cae105447) }, + /* 93 */ { 9, CNST_LIMB(0x2726158c1b13cf03), CNST_LIMB(0xd140c9faa1e5439e), CNST_LIMB(0x738df1f6ab4827d), CNST_LIMB(0x1b92672857620ce0) }, + /* 94 */ { 9, CNST_LIMB(0x270e7dc9c01d8e9b), CNST_LIMB(0xd1bf311e95d00de3), CNST_LIMB(0x7f3afbc9cfb5e00), CNST_LIMB(0x18c6a9575c2ade4) }, + /* 95 */ { 9, CNST_LIMB(0x26f741dd3f070d61), CNST_LIMB(0xd23c41d42727c808), CNST_LIMB(0x8bf187fba88f35f), CNST_LIMB(0xd44da7da8e44b24f) }, + /* 96 */ { 9, CNST_LIMB(0x26e05f5f16c2159e), CNST_LIMB(0xd2b803473f7ad0f3), CNST_LIMB(0x99c600000000000), CNST_LIMB(0xaa2f78f1b4cc6794) }, + /* 97 */ { 9, CNST_LIMB(0x26c9d3fe61e80598), CNST_LIMB(0xd3327c6ab49ca6c8), CNST_LIMB(0xa8ce21eb6531361), CNST_LIMB(0x843c067d091ee4cc) }, + /* 98 */ { 9, CNST_LIMB(0x26b39d7fc6ddab08), CNST_LIMB(0xd3abb3faa02166cc), CNST_LIMB(0xb92112c1a0b6200), CNST_LIMB(0x62005e1e913356e3) }, + /* 99 */ { 9, CNST_LIMB(0x269db9bc7772a5cc), CNST_LIMB(0xd423b07e986aa967), CNST_LIMB(0xcad7718b8747c43), CNST_LIMB(0x4316eed01dedd518) }, + /* 100 */ { 9, CNST_LIMB(0x268826a13ef3fde6), CNST_LIMB(0xd49a784bcd1b8afe), CNST_LIMB(0xde0b6b3a7640000), CNST_LIMB(0x2725dd1d243aba0e) }, + /* 101 */ { 9, CNST_LIMB(0x2672e22d9dbdbd9f), CNST_LIMB(0xd510118708a8f8dd), CNST_LIMB(0xf2d8cf5fe6d74c5), CNST_LIMB(0xddd9057c24cb54f) }, + /* 102 */ { 9, CNST_LIMB(0x265dea72f169cc99), CNST_LIMB(0xd5848226989d33c3), CNST_LIMB(0x1095d25bfa712600), CNST_LIMB(0xedeee175a736d2a1) }, + /* 103 */ { 9, CNST_LIMB(0x26493d93a8cb2514), CNST_LIMB(0xd5f7cff41e09aeb8), CNST_LIMB(0x121b7c4c3698faa7), CNST_LIMB(0xc4699f3df8b6b328) }, + /* 104 */ { 9, CNST_LIMB(0x2634d9c282f3ef82), CNST_LIMB(0xd66a008e4788cbcd), CNST_LIMB(0x13c09e8d68000000), CNST_LIMB(0x9ebbe7d859cb5a7c) }, + /* 105 */ { 9, CNST_LIMB(0x2620bd41d8933adc), CNST_LIMB(0xd6db196a761949d9), CNST_LIMB(0x15876ccb0b709ca9), CNST_LIMB(0x7c828b9887eb2179) }, + /* 106 */ { 9, CNST_LIMB(0x260ce662ef04088a), CNST_LIMB(0xd74b1fd64e0753c6), CNST_LIMB(0x17723c2976da2a00), CNST_LIMB(0x5d652ab99001adcf) }, + /* 107 */ { 9, CNST_LIMB(0x25f95385547353fd), CNST_LIMB(0xd7ba18f93502e409), CNST_LIMB(0x198384e9c259048b), CNST_LIMB(0x4114f1754e5d7b32) }, + /* 108 */ { 9, CNST_LIMB(0x25e60316448db8e1), CNST_LIMB(0xd82809d5be7072db), CNST_LIMB(0x1bbde41dfeec0000), CNST_LIMB(0x274b7c902f7e0188) }, + /* 109 */ { 9, CNST_LIMB(0x25d2f390152f74f5), CNST_LIMB(0xd894f74b06ef8b40), CNST_LIMB(0x1e241d6e3337910d), CNST_LIMB(0xfc9e0fbb32e210c) }, + /* 110 */ { 9, CNST_LIMB(0x25c02379aa9ad043), CNST_LIMB(0xd900e6160002ccfe), CNST_LIMB(0x20b91cee9901ee00), CNST_LIMB(0xf4afa3e594f8ea1f) }, + /* 111 */ { 9, CNST_LIMB(0x25ad9165f2c18907), CNST_LIMB(0xd96bdad2acb5f5ef), CNST_LIMB(0x237ff9079863dfef), CNST_LIMB(0xcd85c32e9e4437b0) }, + /* 112 */ { 9, CNST_LIMB(0x259b3bf36735c90c), CNST_LIMB(0xd9d5d9fd5010b366), CNST_LIMB(0x267bf47000000000), CNST_LIMB(0xa9bbb147e0dd92a8) }, + /* 113 */ { 9, CNST_LIMB(0x258921cb955e7693), CNST_LIMB(0xda3ee7f38e181ed0), CNST_LIMB(0x29b08039fbeda7f1), CNST_LIMB(0x8900447b70e8eb82) }, + /* 114 */ { 9, CNST_LIMB(0x257741a2ac9170af), CNST_LIMB(0xdaa708f58014d37c), CNST_LIMB(0x2d213df34f65f200), CNST_LIMB(0x6b0a92adaad5848a) }, + /* 115 */ { 9, CNST_LIMB(0x25659a3711bc827d), CNST_LIMB(0xdb0e4126bcc86bd7), CNST_LIMB(0x30d201d957a7c2d3), CNST_LIMB(0x4f990ad8740f0ee5) }, + /* 116 */ { 9, CNST_LIMB(0x25542a50f84b9c39), CNST_LIMB(0xdb74948f5532da4b), CNST_LIMB(0x34c6d52160f40000), CNST_LIMB(0x3670a9663a8d3610) }, + /* 117 */ { 9, CNST_LIMB(0x2542f0c20000377d), CNST_LIMB(0xdbda071cc67e6db5), CNST_LIMB(0x3903f855d8f4c755), CNST_LIMB(0x1f5c44188057be3c) }, + /* 118 */ { 9, CNST_LIMB(0x2531ec64d772bd64), CNST_LIMB(0xdc3e9ca2e1a05533), CNST_LIMB(0x3d8de5c8ec59b600), CNST_LIMB(0xa2bea956c4e4977) }, + /* 119 */ { 9, CNST_LIMB(0x25211c1ce2fb5a6e), CNST_LIMB(0xdca258dca9331635), CNST_LIMB(0x4269541d1ff01337), CNST_LIMB(0xed68b23033c3637e) }, + /* 120 */ { 9, CNST_LIMB(0x25107ed5e7c3ec3b), CNST_LIMB(0xdd053f6d26089673), CNST_LIMB(0x479b38e478000000), CNST_LIMB(0xc99cf624e50549c5) }, + /* 121 */ { 9, CNST_LIMB(0x25001383bac8a744), CNST_LIMB(0xdd6753e032ea0efe), CNST_LIMB(0x4d28cb56c33fa539), CNST_LIMB(0xa8adf7ae45e7577b) }, + /* 122 */ { 9, CNST_LIMB(0x24efd921f390bce3), CNST_LIMB(0xddc899ab3ff56c5e), CNST_LIMB(0x5317871fa13aba00), CNST_LIMB(0x8a5bc740b1c113e5) }, + /* 123 */ { 9, CNST_LIMB(0x24dfceb3a26bb203), CNST_LIMB(0xde29142e0e01401f), CNST_LIMB(0x596d2f44de9fa71b), CNST_LIMB(0x6e6c7efb81cfbb9b) }, + /* 124 */ { 9, CNST_LIMB(0x24cff3430a0341a7), CNST_LIMB(0xde88c6b3626a72aa), CNST_LIMB(0x602fd125c47c0000), CNST_LIMB(0x54aba5c5cada5f10) }, + /* 125 */ { 9, CNST_LIMB(0x24c045e15c149931), CNST_LIMB(0xdee7b471b3a9507d), CNST_LIMB(0x6765c793fa10079d), CNST_LIMB(0x3ce9a36f23c0fc90) }, + /* 126 */ { 9, CNST_LIMB(0x24b0c5a679267ae2), CNST_LIMB(0xdf45e08bcf06554e), CNST_LIMB(0x6f15be069b847e00), CNST_LIMB(0x26fb43de2c8cd2a8) }, + /* 127 */ { 9, CNST_LIMB(0x24a171b0b31461c8), CNST_LIMB(0xdfa34e1177c23362), CNST_LIMB(0x7746b3e82a77047f), CNST_LIMB(0x12b94793db8486a1) }, + /* 128 */ { 9, CNST_LIMB(0x2492492492492492), CNST_LIMB(0xdfffffffffffffff), CNST_LIMB(0x7), CNST_LIMB(0x0) }, + /* 129 */ { 9, CNST_LIMB(0x24834b2c9d85cdfe), CNST_LIMB(0xe05bf942dbbc2145), CNST_LIMB(0x894953f7ea890481), CNST_LIMB(0xdd5deca404c0156d) }, + /* 130 */ { 9, CNST_LIMB(0x247476f924137501), CNST_LIMB(0xe0b73cb42e16914c), CNST_LIMB(0x932abffea4848200), CNST_LIMB(0xbd51373330291de0) }, + /* 131 */ { 9, CNST_LIMB(0x2465cbc00a40cec0), CNST_LIMB(0xe111cd1d5133412e), CNST_LIMB(0x9dacb687d3d6a163), CNST_LIMB(0x9fa4025d66f23085) }, + /* 132 */ { 9, CNST_LIMB(0x245748bc980e0427), CNST_LIMB(0xe16bad3758efd873), CNST_LIMB(0xa8d8102a44840000), CNST_LIMB(0x842530ee2db4949d) }, + /* 133 */ { 9, CNST_LIMB(0x2448ed2f49eb0633), CNST_LIMB(0xe1c4dfab90aab5ef), CNST_LIMB(0xb4b60f9d140541e5), CNST_LIMB(0x6aa7f2766b03dc25) }, + /* 134 */ { 9, CNST_LIMB(0x243ab85da36e3167), CNST_LIMB(0xe21d6713f453f356), CNST_LIMB(0xc15065d4856e4600), CNST_LIMB(0x53035ba7ebf32e8d) }, + /* 135 */ { 9, CNST_LIMB(0x242ca99203ea8c18), CNST_LIMB(0xe27545fba4fe385a), CNST_LIMB(0xceb1363f396d23c7), CNST_LIMB(0x3d12091fc9fb4914) }, + /* 136 */ { 9, CNST_LIMB(0x241ec01b7cce4ea0), CNST_LIMB(0xe2cc7edf592262cf), CNST_LIMB(0xdce31b2488000000), CNST_LIMB(0x28b1cb81b1ef1849) }, + /* 137 */ { 9, CNST_LIMB(0x2410fb4da9b3b0fc), CNST_LIMB(0xe323142dc8c66b55), CNST_LIMB(0xebf12a24bca135c9), CNST_LIMB(0x15c35be67ae3e2c9) }, + /* 138 */ { 9, CNST_LIMB(0x24035a808a0f315e), CNST_LIMB(0xe379084815b5774c), CNST_LIMB(0xfbe6f8dbf88f4a00), CNST_LIMB(0x42a17bd09be1ff0) }, + /* 139 */ { 8, CNST_LIMB(0x23f5dd105c67ab9d), CNST_LIMB(0xe3ce5d822ff4b643), CNST_LIMB(0x1ef156c084ce761), CNST_LIMB(0x8bf461f03cf0bbf) }, + /* 140 */ { 8, CNST_LIMB(0x23e8825d7b05abb1), CNST_LIMB(0xe4231623369e78e5), CNST_LIMB(0x20c4e3b94a10000), CNST_LIMB(0xf3fbb43f68a32d05) }, + /* 141 */ { 8, CNST_LIMB(0x23db49cc3a0866fe), CNST_LIMB(0xe4773465d54aded7), CNST_LIMB(0x22b0695a08ba421), CNST_LIMB(0xd84f44c48564dc19) }, + /* 142 */ { 8, CNST_LIMB(0x23ce32c4c6cfb9f5), CNST_LIMB(0xe4caba789e2b8687), CNST_LIMB(0x24b4f35d7a4c100), CNST_LIMB(0xbe58ebcce7956abe) }, + /* 143 */ { 8, CNST_LIMB(0x23c13cb308ab6ab7), CNST_LIMB(0xe51daa7e60fdd34c), CNST_LIMB(0x26d397284975781), CNST_LIMB(0xa5fac463c7c134b7) }, + /* 144 */ { 8, CNST_LIMB(0x23b4670682c0c709), CNST_LIMB(0xe570068e7ef5a1e7), CNST_LIMB(0x290d74100000000), CNST_LIMB(0x8f19241e28c7d757) }, + /* 145 */ { 8, CNST_LIMB(0x23a7b13237187c8b), CNST_LIMB(0xe5c1d0b53bc09fca), CNST_LIMB(0x2b63b3a37866081), CNST_LIMB(0x799a6d046c0ae1ae) }, + /* 146 */ { 8, CNST_LIMB(0x239b1aac8ac74728), CNST_LIMB(0xe6130af40bc0ecbf), CNST_LIMB(0x2dd789f4d894100), CNST_LIMB(0x6566e37d746a9e40) }, + /* 147 */ { 8, CNST_LIMB(0x238ea2ef2b24c379), CNST_LIMB(0xe663b741df9c37c0), CNST_LIMB(0x306a35e51b58721), CNST_LIMB(0x526887dbfb5f788f) }, + /* 148 */ { 8, CNST_LIMB(0x23824976f4045a26), CNST_LIMB(0xe6b3d78b6d3b24fb), CNST_LIMB(0x331d01712e10000), CNST_LIMB(0x408af3382b8efd3d) }, + /* 149 */ { 8, CNST_LIMB(0x23760dc3d6e4d729), CNST_LIMB(0xe7036db376537b90), CNST_LIMB(0x35f14200a827c61), CNST_LIMB(0x2fbb374806ec05f1) }, + /* 150 */ { 8, CNST_LIMB(0x2369ef58c30bd43e), CNST_LIMB(0xe7527b930c965bf2), CNST_LIMB(0x38e858b62216100), CNST_LIMB(0x1fe7c0f0afce87fe) }, + /* 151 */ { 8, CNST_LIMB(0x235dedbb8e82aa1c), CNST_LIMB(0xe7a102f9d39a9331), CNST_LIMB(0x3c03b2c13176a41), CNST_LIMB(0x11003d517540d32e) }, + /* 152 */ { 8, CNST_LIMB(0x23520874dfeb1ffd), CNST_LIMB(0xe7ef05ae409a0288), CNST_LIMB(0x3f44c9b21000000), CNST_LIMB(0x2f5810f98eff0dc) }, + /* 153 */ { 8, CNST_LIMB(0x23463f1019228dd7), CNST_LIMB(0xe83c856dd81804b7), CNST_LIMB(0x42ad23cef3113c1), CNST_LIMB(0xeb72e35e7840d910) }, + /* 154 */ { 8, CNST_LIMB(0x233a911b42aa9b3c), CNST_LIMB(0xe88983ed6985bae5), CNST_LIMB(0x463e546b19a2100), CNST_LIMB(0xd27de19593dc3614) }, + /* 155 */ { 8, CNST_LIMB(0x232efe26f7cf33f9), CNST_LIMB(0xe8d602d948f83829), CNST_LIMB(0x49f9fc3f96684e1), CNST_LIMB(0xbaf391fd3e5e6fc2) }, + /* 156 */ { 8, CNST_LIMB(0x232385c65381b485), CNST_LIMB(0xe92203d587039cc1), CNST_LIMB(0x4de1c9c5dc10000), CNST_LIMB(0xa4bd38c55228c81d) }, + /* 157 */ { 8, CNST_LIMB(0x2318278edde1b39b), CNST_LIMB(0xe96d887e26cd57b7), CNST_LIMB(0x51f77994116d2a1), CNST_LIMB(0x8fc5a8de8e1de782) }, + /* 158 */ { 8, CNST_LIMB(0x230ce3187a6c2be9), CNST_LIMB(0xe9b892675266f66c), CNST_LIMB(0x563cd6bb3398100), CNST_LIMB(0x7bf9265bea9d3a3b) }, + /* 159 */ { 8, CNST_LIMB(0x2301b7fd56ca21bb), CNST_LIMB(0xea03231d8d8224ba), CNST_LIMB(0x5ab3bb270beeb01), CNST_LIMB(0x69454b325983dccd) }, + /* 160 */ { 8, CNST_LIMB(0x22f6a5d9da38341c), CNST_LIMB(0xea4d3c25e68dc57f), CNST_LIMB(0x5f5e10000000000), CNST_LIMB(0x5798ee2308c39df9) }, + /* 161 */ { 8, CNST_LIMB(0x22ebac4c9580d89f), CNST_LIMB(0xea96defe264b59be), CNST_LIMB(0x643dce0ec16f501), CNST_LIMB(0x46e40ba0fa66a753) }, + /* 162 */ { 8, CNST_LIMB(0x22e0caf633834beb), CNST_LIMB(0xeae00d1cfdeb43cf), CNST_LIMB(0x6954fe21e3e8100), CNST_LIMB(0x3717b0870b0db3a7) }, + /* 163 */ { 8, CNST_LIMB(0x22d601796a418886), CNST_LIMB(0xeb28c7f233bdd372), CNST_LIMB(0x6ea5b9755f440a1), CNST_LIMB(0x2825e6775d11cdeb) }, + /* 164 */ { 8, CNST_LIMB(0x22cb4f7aec6fd8b4), CNST_LIMB(0xeb7110e6ce866f2b), CNST_LIMB(0x74322a1c0410000), CNST_LIMB(0x1a01a1c09d1b4dac) }, + /* 165 */ { 8, CNST_LIMB(0x22c0b4a15b80d83e), CNST_LIMB(0xebb8e95d3f7d9df2), CNST_LIMB(0x79fc8b6ae8a46e1), CNST_LIMB(0xc9eb0a8bebc8f3e) }, + /* 166 */ { 8, CNST_LIMB(0x22b630953a28f77a), CNST_LIMB(0xec0052b18b0e2a19), CNST_LIMB(0x80072a66d512100), CNST_LIMB(0xffe357ff59e6a004) }, + /* 167 */ { 8, CNST_LIMB(0x22abc300df54ca7c), CNST_LIMB(0xec474e39705912d2), CNST_LIMB(0x86546633b42b9c1), CNST_LIMB(0xe7dfd1be05fa61a8) }, + /* 168 */ { 8, CNST_LIMB(0x22a16b90698da5d2), CNST_LIMB(0xec8ddd448f8b845a), CNST_LIMB(0x8ce6b0861000000), CNST_LIMB(0xd11ed6fc78f760e5) }, + /* 169 */ { 8, CNST_LIMB(0x229729f1b2c83ded), CNST_LIMB(0xecd4011c8f11979a), CNST_LIMB(0x93c08e16a022441), CNST_LIMB(0xbb8db609dd29ebfe) }, + /* 170 */ { 8, CNST_LIMB(0x228cfdd444992f78), CNST_LIMB(0xed19bb053fb0284e), CNST_LIMB(0x9ae49717f026100), CNST_LIMB(0xa71aec8d1813d532) }, + /* 171 */ { 8, CNST_LIMB(0x2282e6e94ccb8588), CNST_LIMB(0xed5f0c3cbf8fa470), CNST_LIMB(0xa25577ae24c1a61), CNST_LIMB(0x93b612a9f20fbc02) }, + /* 172 */ { 8, CNST_LIMB(0x2278e4e392557ecf), CNST_LIMB(0xeda3f5fb9c415052), CNST_LIMB(0xaa15f068e610000), CNST_LIMB(0x814fc7b19a67d317) }, + /* 173 */ { 8, CNST_LIMB(0x226ef7776aa7fd29), CNST_LIMB(0xede87974f3c81855), CNST_LIMB(0xb228d6bf7577921), CNST_LIMB(0x6fd9a03f2e0a4b7c) }, + /* 174 */ { 8, CNST_LIMB(0x22651e5aaf5532d0), CNST_LIMB(0xee2c97d694adab3f), CNST_LIMB(0xba91158ef5c4100), CNST_LIMB(0x5f4615a38d0d316e) }, + /* 175 */ { 8, CNST_LIMB(0x225b5944b40b4694), CNST_LIMB(0xee7052491d2c3e64), CNST_LIMB(0xc351ad9aec0b681), CNST_LIMB(0x4f8876863479a286) }, + /* 176 */ { 8, CNST_LIMB(0x2251a7ee3cdfcca5), CNST_LIMB(0xeeb3a9f01975077f), CNST_LIMB(0xcc6db6100000000), CNST_LIMB(0x4094d8a3041b60eb) }, + /* 177 */ { 8, CNST_LIMB(0x22480a1174e913d9), CNST_LIMB(0xeef69fea211b2627), CNST_LIMB(0xd5e85d09025c181), CNST_LIMB(0x32600b8ed883a09b) }, + /* 178 */ { 8, CNST_LIMB(0x223e7f69e522683c), CNST_LIMB(0xef393550f3aa6906), CNST_LIMB(0xdfc4e816401c100), CNST_LIMB(0x24df8c6eb4b6d1f1) }, + /* 179 */ { 8, CNST_LIMB(0x223507b46b988abe), CNST_LIMB(0xef7b6b399471103e), CNST_LIMB(0xea06b4c72947221), CNST_LIMB(0x18097a8ee151acef) }, + /* 180 */ { 8, CNST_LIMB(0x222ba2af32dbbb9e), CNST_LIMB(0xefbd42b465836767), CNST_LIMB(0xf4b139365210000), CNST_LIMB(0xbd48cc8ec1cd8e3) }, + /* 181 */ { 8, CNST_LIMB(0x22225019a9b4d16c), CNST_LIMB(0xeffebccd41ffcd5c), CNST_LIMB(0xffc80497d520961), CNST_LIMB(0x3807a8d67485fb) }, + /* 182 */ { 8, CNST_LIMB(0x22190fb47b1af172), CNST_LIMB(0xf03fda8b97997f33), CNST_LIMB(0x10b4ebfca1dee100), CNST_LIMB(0xea5768860b62e8d8) }, + /* 183 */ { 8, CNST_LIMB(0x220fe14186679801), CNST_LIMB(0xf0809cf27f703d52), CNST_LIMB(0x117492de921fc141), CNST_LIMB(0xd54faf5b635c5005) }, + /* 184 */ { 8, CNST_LIMB(0x2206c483d7c6b786), CNST_LIMB(0xf0c10500d63aa658), CNST_LIMB(0x123bb2ce41000000), CNST_LIMB(0xc14a56233a377926) }, + /* 185 */ { 8, CNST_LIMB(0x21fdb93fa0e0ccc5), CNST_LIMB(0xf10113b153c8ea7b), CNST_LIMB(0x130a8b6157bdecc1), CNST_LIMB(0xae39a88db7cd329f) }, + /* 186 */ { 8, CNST_LIMB(0x21f4bf3a31bcdcaa), CNST_LIMB(0xf140c9faa1e5439e), CNST_LIMB(0x13e15dede0e8a100), CNST_LIMB(0x9c10bde69efa7ab6) }, + /* 187 */ { 8, CNST_LIMB(0x21ebd639f1d86584), CNST_LIMB(0xf18028cf72976a4e), CNST_LIMB(0x14c06d941c0ca7e1), CNST_LIMB(0x8ac36c42a2836497) }, + /* 188 */ { 8, CNST_LIMB(0x21e2fe06597361a6), CNST_LIMB(0xf1bf311e95d00de3), CNST_LIMB(0x15a7ff487a810000), CNST_LIMB(0x7a463c8b84f5ef67) }, + /* 189 */ { 8, CNST_LIMB(0x21da3667eb0e8ccb), CNST_LIMB(0xf1fde3d30e812642), CNST_LIMB(0x169859ddc5c697a1), CNST_LIMB(0x6a8e5f5ad090fd4b) }, + /* 190 */ { 8, CNST_LIMB(0x21d17f282d1a300e), CNST_LIMB(0xf23c41d42727c808), CNST_LIMB(0x1791c60f6fed0100), CNST_LIMB(0x5b91a2943596fc56) }, + /* 191 */ { 8, CNST_LIMB(0x21c8d811a3d3c9e1), CNST_LIMB(0xf27a4c0585cbf805), CNST_LIMB(0x18948e8c0e6fba01), CNST_LIMB(0x4d4667b1c468e8f0) }, + /* 192 */ { 8, CNST_LIMB(0x21c040efcb50f858), CNST_LIMB(0xf2b803473f7ad0f3), CNST_LIMB(0x19a1000000000000), CNST_LIMB(0x3fa39ab547994daf) }, + /* 193 */ { 8, CNST_LIMB(0x21b7b98f11b61c1a), CNST_LIMB(0xf2f56875eb3f2614), CNST_LIMB(0x1ab769203dafc601), CNST_LIMB(0x32a0a9b2faee1e2a) }, + /* 194 */ { 8, CNST_LIMB(0x21af41bcd19739ba), CNST_LIMB(0xf3327c6ab49ca6c8), CNST_LIMB(0x1bd81ab557f30100), CNST_LIMB(0x26357ceac0e96962) }, + /* 195 */ { 8, CNST_LIMB(0x21a6d9474c81adf0), CNST_LIMB(0xf36f3ffb6d916240), CNST_LIMB(0x1d0367a69fed1ba1), CNST_LIMB(0x1a5a6f65caa5859e) }, + /* 196 */ { 8, CNST_LIMB(0x219e7ffda5ad572a), CNST_LIMB(0xf3abb3faa02166cc), CNST_LIMB(0x1e39a5057d810000), CNST_LIMB(0xf08480f672b4e86) }, + /* 197 */ { 8, CNST_LIMB(0x219635afdcd3e46d), CNST_LIMB(0xf3e7d9379f70166a), CNST_LIMB(0x1f7b2a18f29ac3e1), CNST_LIMB(0x4383340615612ca) }, + /* 198 */ { 8, CNST_LIMB(0x218dfa2ec92d0643), CNST_LIMB(0xf423b07e986aa967), CNST_LIMB(0x20c850694c2aa100), CNST_LIMB(0xf3c77969ee4be5a2) }, + /* 199 */ { 8, CNST_LIMB(0x2185cd4c148e4ae2), CNST_LIMB(0xf45f3a98a20738a4), CNST_LIMB(0x222173cc014980c1), CNST_LIMB(0xe00993cc187c5ec9) }, + /* 200 */ { 8, CNST_LIMB(0x217daeda36ad7a5c), CNST_LIMB(0xf49a784bcd1b8afe), CNST_LIMB(0x2386f26fc1000000), CNST_LIMB(0xcd2b297d889bc2b6) }, + /* 201 */ { 8, CNST_LIMB(0x21759eac708452fe), CNST_LIMB(0xf4d56a5b33cec44a), CNST_LIMB(0x24f92ce8af296d41), CNST_LIMB(0xbb214d5064862b22) }, + /* 202 */ { 8, CNST_LIMB(0x216d9c96c7d490d4), CNST_LIMB(0xf510118708a8f8dd), CNST_LIMB(0x2678863cd0ece100), CNST_LIMB(0xa9e1a7ca7ea10e20) }, + /* 203 */ { 8, CNST_LIMB(0x2165a86e02cb358c), CNST_LIMB(0xf54a6e8ca5438db1), CNST_LIMB(0x280563f0a9472d61), CNST_LIMB(0x99626e72b39ea0cf) }, + /* 204 */ { 8, CNST_LIMB(0x215dc207a3c20fdf), CNST_LIMB(0xf5848226989d33c3), CNST_LIMB(0x29a02e1406210000), CNST_LIMB(0x899a5ba9c13fafd9) }, + /* 205 */ { 8, CNST_LIMB(0x2155e939e51e8b37), CNST_LIMB(0xf5be4d0cb51434aa), CNST_LIMB(0x2b494f4efe6d2e21), CNST_LIMB(0x7a80a705391e96ff) }, + /* 206 */ { 8, CNST_LIMB(0x214e1ddbb54cd933), CNST_LIMB(0xf5f7cff41e09aeb8), CNST_LIMB(0x2d0134ef21cbc100), CNST_LIMB(0x6c0cfe23de23042a) }, + /* 207 */ { 8, CNST_LIMB(0x21465fc4b2d68f98), CNST_LIMB(0xf6310b8f55304840), CNST_LIMB(0x2ec84ef4da2ef581), CNST_LIMB(0x5e377df359c944dd) }, + /* 208 */ { 8, CNST_LIMB(0x213eaecd2893dd60), CNST_LIMB(0xf66a008e4788cbcd), CNST_LIMB(0x309f102100000000), CNST_LIMB(0x50f8ac5fc8f53985) }, + /* 209 */ { 8, CNST_LIMB(0x21370ace09f681c6), CNST_LIMB(0xf6a2af9e5a0f0a08), CNST_LIMB(0x3285ee02a1420281), CNST_LIMB(0x44497266278e35b7) }, + /* 210 */ { 8, CNST_LIMB(0x212f73a0ef6db7cb), CNST_LIMB(0xf6db196a761949d9), CNST_LIMB(0x347d6104fc324100), CNST_LIMB(0x382316831f7ee175) }, + /* 211 */ { 8, CNST_LIMB(0x2127e92012e25004), CNST_LIMB(0xf7133e9b156c7be5), CNST_LIMB(0x3685e47dade53d21), CNST_LIMB(0x2c7f377833b8946e) }, + /* 212 */ { 8, CNST_LIMB(0x21206b264c4a39a7), CNST_LIMB(0xf74b1fd64e0753c6), CNST_LIMB(0x389ff6bb15610000), CNST_LIMB(0x2157c761ab4163ef) }, + /* 213 */ { 8, CNST_LIMB(0x2118f98f0e52c28f), CNST_LIMB(0xf782bdbfdda6577b), CNST_LIMB(0x3acc1912ebb57661), CNST_LIMB(0x16a7071803cc49a9) }, + /* 214 */ { 8, CNST_LIMB(0x211194366320dc66), CNST_LIMB(0xf7ba18f93502e409), CNST_LIMB(0x3d0acff111946100), CNST_LIMB(0xc6781d80f8224fc) }, + /* 215 */ { 8, CNST_LIMB(0x210a3af8e926bb78), CNST_LIMB(0xf7f1322182cf15d1), CNST_LIMB(0x3f5ca2e692eaf841), CNST_LIMB(0x294092d370a900b) }, + /* 216 */ { 8, CNST_LIMB(0x2102edb3d00e29a6), CNST_LIMB(0xf82809d5be7072db), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 217 */ { 8, CNST_LIMB(0x20fbac44d5b6edc2), CNST_LIMB(0xf85ea0b0b27b2610), CNST_LIMB(0x443bcb714399a5c1), CNST_LIMB(0xe03b98f103fad6d2) }, + /* 218 */ { 8, CNST_LIMB(0x20f4768a4348ad08), CNST_LIMB(0xf894f74b06ef8b40), CNST_LIMB(0x46ca406c81af2100), CNST_LIMB(0xcee3d32cad2a9049) }, + /* 219 */ { 8, CNST_LIMB(0x20ed4c62ea57b1f0), CNST_LIMB(0xf8cb0e3b4b3bbdb3), CNST_LIMB(0x496e106ac22aaae1), CNST_LIMB(0xbe3f9df9277fdada) }, + /* 220 */ { 8, CNST_LIMB(0x20e62dae221c087a), CNST_LIMB(0xf900e6160002ccfe), CNST_LIMB(0x4c27d39fa5410000), CNST_LIMB(0xae46f0d94c05e933) }, + /* 221 */ { 8, CNST_LIMB(0x20df1a4bc4ba6525), CNST_LIMB(0xf9367f6da0ab2e9c), CNST_LIMB(0x4ef825c296e43ca1), CNST_LIMB(0x9ef2280fb437a33d) }, + /* 222 */ { 8, CNST_LIMB(0x20d8121c2c9e506e), CNST_LIMB(0xf96bdad2acb5f5ef), CNST_LIMB(0x51dfa61f5ad88100), CNST_LIMB(0x9039ff426d3f284b) }, + /* 223 */ { 8, CNST_LIMB(0x20d1150031e51549), CNST_LIMB(0xf9a0f8d3b0e04fde), CNST_LIMB(0x54def7a6d2f16901), CNST_LIMB(0x82178c6d6b51f8f4) }, + /* 224 */ { 8, CNST_LIMB(0x20ca22d927d8f54d), CNST_LIMB(0xf9d5d9fd5010b366), CNST_LIMB(0x57f6c10000000000), CNST_LIMB(0x74843b1ee4c1e053) }, + /* 225 */ { 8, CNST_LIMB(0x20c33b88da7c29aa), CNST_LIMB(0xfa0a7eda4c112ce6), CNST_LIMB(0x5b27ac993df97701), CNST_LIMB(0x6779c7f90dc42f48) }, + /* 226 */ { 8, CNST_LIMB(0x20bc5ef18c233bdf), CNST_LIMB(0xfa3ee7f38e181ed0), CNST_LIMB(0x5e7268b9bbdf8100), CNST_LIMB(0x5af23c74f9ad9fe9) }, + /* 227 */ { 8, CNST_LIMB(0x20b58cf5f31e4526), CNST_LIMB(0xfa7315d02f20c7bd), CNST_LIMB(0x61d7a7932ff3d6a1), CNST_LIMB(0x4ee7eae2acdc617e) }, + /* 228 */ { 8, CNST_LIMB(0x20aec5793770a74d), CNST_LIMB(0xfaa708f58014d37c), CNST_LIMB(0x65581f53c8c10000), CNST_LIMB(0x43556aa2ac262a0b) }, + /* 229 */ { 8, CNST_LIMB(0x20a8085ef096d530), CNST_LIMB(0xfadac1e711c832d1), CNST_LIMB(0x68f48a385b8320e1), CNST_LIMB(0x3835949593b8ddd1) }, + /* 230 */ { 8, CNST_LIMB(0x20a1558b2359c4b1), CNST_LIMB(0xfb0e4126bcc86bd7), CNST_LIMB(0x6cada69ed07c2100), CNST_LIMB(0x2d837fbe78458762) }, + /* 231 */ { 8, CNST_LIMB(0x209aace23fafa72e), CNST_LIMB(0xfb418734a9008bd9), CNST_LIMB(0x70843718cdbf27c1), CNST_LIMB(0x233a7e150a54a555) }, + /* 232 */ { 8, CNST_LIMB(0x20940e491ea988d7), CNST_LIMB(0xfb74948f5532da4b), CNST_LIMB(0x7479027ea1000000), CNST_LIMB(0x19561984a50ff8fe) }, + /* 233 */ { 8, CNST_LIMB(0x208d79a5006d7a47), CNST_LIMB(0xfba769b39e49640e), CNST_LIMB(0x788cd40268f39641), CNST_LIMB(0xfd211159fe3490f) }, + /* 234 */ { 8, CNST_LIMB(0x2086eedb8a3cead3), CNST_LIMB(0xfbda071cc67e6db5), CNST_LIMB(0x7cc07b437ecf6100), CNST_LIMB(0x6aa563e655033e3) }, + /* 235 */ { 8, CNST_LIMB(0x20806dd2c486dcc6), CNST_LIMB(0xfc0c6d447c5dd362), CNST_LIMB(0x8114cc6220762061), CNST_LIMB(0xfbb614b3f2d3b14c) }, + /* 236 */ { 8, CNST_LIMB(0x2079f67119059fae), CNST_LIMB(0xfc3e9ca2e1a05533), CNST_LIMB(0x858aa0135be10000), CNST_LIMB(0xeac0f8837fb05773) }, + /* 237 */ { 8, CNST_LIMB(0x2073889d50e7bf63), CNST_LIMB(0xfc7095ae91e1c760), CNST_LIMB(0x8a22d3b53c54c321), CNST_LIMB(0xda6e4c10e8615ca5) }, + /* 238 */ { 8, CNST_LIMB(0x206d243e9303d929), CNST_LIMB(0xfca258dca9331635), CNST_LIMB(0x8ede496339f34100), CNST_LIMB(0xcab755a8d01fa67f) }, + /* 239 */ { 8, CNST_LIMB(0x2066c93c62170aa8), CNST_LIMB(0xfcd3e6a0ca8906c2), CNST_LIMB(0x93bde80aec3a1481), CNST_LIMB(0xbb95a9ae71aa3e0c) }, + /* 240 */ { 8, CNST_LIMB(0x2060777e9b0db0f6), CNST_LIMB(0xfd053f6d26089673), CNST_LIMB(0x98c29b8100000000), CNST_LIMB(0xad0326c296b4f529) }, + /* 241 */ { 8, CNST_LIMB(0x205a2eed73563032), CNST_LIMB(0xfd3663b27f31d529), CNST_LIMB(0x9ded549671832381), CNST_LIMB(0x9ef9f21eed31b7c1) }, + /* 242 */ { 8, CNST_LIMB(0x2053ef71773d7e6a), CNST_LIMB(0xfd6753e032ea0efe), CNST_LIMB(0xa33f092e0b1ac100), CNST_LIMB(0x91747422be14b0b2) }, + /* 243 */ { 8, CNST_LIMB(0x204db8f388552ea9), CNST_LIMB(0xfd9810643d6614c3), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 244 */ { 8, CNST_LIMB(0x20478b5cdbe2bb2f), CNST_LIMB(0xfdc899ab3ff56c5e), CNST_LIMB(0xae5b564ac3a10000), CNST_LIMB(0x77df79e9a96c06f6) }, + /* 245 */ { 8, CNST_LIMB(0x20416696f957cfbf), CNST_LIMB(0xfdf8f02086af2c4b), CNST_LIMB(0xb427f4b3be74c361), CNST_LIMB(0x6bc6019636c7d0c2) }, + /* 246 */ { 8, CNST_LIMB(0x203b4a8bb8d356e7), CNST_LIMB(0xfe29142e0e01401f), CNST_LIMB(0xba1f9a938041e100), CNST_LIMB(0x601c4205aebd9e47) }, + /* 247 */ { 8, CNST_LIMB(0x2035372541ab0f0d), CNST_LIMB(0xfe59063c8822ce56), CNST_LIMB(0xc0435871d1110f41), CNST_LIMB(0x54ddc59756f05016) }, + /* 248 */ { 8, CNST_LIMB(0x202f2c4e08fd6dcc), CNST_LIMB(0xfe88c6b3626a72aa), CNST_LIMB(0xc694446f01000000), CNST_LIMB(0x4a0648979c838c18) }, + /* 249 */ { 8, CNST_LIMB(0x202929f0d04b99e9), CNST_LIMB(0xfeb855f8ca88fb0d), CNST_LIMB(0xcd137a5b57ac3ec1), CNST_LIMB(0x3f91b6e0bb3a053d) }, + /* 250 */ { 8, CNST_LIMB(0x20232ff8a41b45eb), CNST_LIMB(0xfee7b471b3a9507d), CNST_LIMB(0xd3c21bcecceda100), CNST_LIMB(0x357c299a88ea76a5) }, + /* 251 */ { 8, CNST_LIMB(0x201d3e50daa036db), CNST_LIMB(0xff16e281db76303b), CNST_LIMB(0xdaa150410b788de1), CNST_LIMB(0x2bc1e517aecc56e3) }, + /* 252 */ { 8, CNST_LIMB(0x201754e5126d446d), CNST_LIMB(0xff45e08bcf06554e), CNST_LIMB(0xe1b24521be010000), CNST_LIMB(0x225f56ceb3da9f5d) }, + /* 253 */ { 8, CNST_LIMB(0x201173a1312ca135), CNST_LIMB(0xff74aef0efafadd7), CNST_LIMB(0xe8f62df12777c1a1), CNST_LIMB(0x1951136d53ad63ac) }, + /* 254 */ { 8, CNST_LIMB(0x200b9a71625f3b13), CNST_LIMB(0xffa34e1177c23362), CNST_LIMB(0xf06e445906fc0100), CNST_LIMB(0x1093d504b3cd7d93) }, + /* 255 */ { 8, CNST_LIMB(0x2005c94216230568), CNST_LIMB(0xffd1be4c7f2af942), CNST_LIMB(0xf81bc845c81bf801), CNST_LIMB(0x824794d1ec1814f) }, + /* 256 */ { 8, CNST_LIMB(0x1fffffffffffffff), CNST_LIMB(0xffffffffffffffff), CNST_LIMB(0x8), CNST_LIMB(0x0) }, +}; diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/mul_1.s b/vere/ext/gmp/gen/aarch64-linux/mpn/mul_1.s new file mode 100644 index 0000000..c8c5fab --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/mul_1.s @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_mul_1c + .type __gmpn_mul_1c,@function +__gmpn_mul_1c: + adds xzr, xzr, xzr + b .Lcom + .size __gmpn_mul_1c,.-__gmpn_mul_1c + + .text + .align 3 + .globl __gmpn_mul_1 + .type __gmpn_mul_1,@function +__gmpn_mul_1: + adds x4, xzr, xzr +.Lcom: lsr x18, x2, #2 + tbnz x2, #0, .Lbx1 + +.Lbx0: mov x11, x4 + tbz x2, #1, .Lb00 + +.Lb10: ldp x4, x5, [x1] + mul x8, x4, x3 + umulh x10, x4, x3 + cbz x18, .L2 + ldp x6, x7, [x1,#16]! + mul x9, x5, x3 + b .Lmid-8 + +.L2: mul x9, x5, x3 + b .L2e + +.Lbx1: ldr x7, [x1],#8 + mul x9, x7, x3 + umulh x11, x7, x3 + adds x9, x9, x4 + str x9, [x0],#8 + tbnz x2, #1, .Lb10 + +.Lb01: cbz x18, .L1 + +.Lb00: ldp x6, x7, [x1] + mul x8, x6, x3 + umulh x10, x6, x3 + ldp x4, x5, [x1,#16] + mul x9, x7, x3 + adcs x12, x8, x11 + umulh x11, x7, x3 + add x0, x0, #16 + sub x18, x18, #1 + cbz x18, .Lend + + .align 4 +.Ltop: mul x8, x4, x3 + ldp x6, x7, [x1,#32]! + adcs x13, x9, x10 + umulh x10, x4, x3 + mul x9, x5, x3 + stp x12, x13, [x0,#-16] + adcs x12, x8, x11 + umulh x11, x5, x3 +.Lmid: mul x8, x6, x3 + ldp x4, x5, [x1,#16] + adcs x13, x9, x10 + umulh x10, x6, x3 + mul x9, x7, x3 + stp x12, x13, [x0],#32 + adcs x12, x8, x11 + umulh x11, x7, x3 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: mul x8, x4, x3 + adcs x13, x9, x10 + umulh x10, x4, x3 + mul x9, x5, x3 + stp x12, x13, [x0,#-16] +.L2e: adcs x12, x8, x11 + umulh x11, x5, x3 + adcs x13, x9, x10 + stp x12, x13, [x0] +.L1: adc x0, x11, xzr + ret + .size __gmpn_mul_1,.-__gmpn_mul_1 diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/nand_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/nand_n.s new file mode 100644 index 0000000..03ebda2 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/nand_n.s @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_nand_n + .type __gmpn_nand_n,@function +__gmpn_nand_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x7, [x1] + ldr x11, [x2] + and x15, x7, x11 + mvn x15, x15 + str x15, [x0],#8 + tbnz x3, #1, .Lb11 + +.Lb01: cbz x18, .Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b .Lmid + +.Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b .Lmid + +.Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + and x12, x6, x10 + and x13, x7, x11 + mvn x12, x12 + mvn x13, x13 + stp x12, x13, [x0],#16 +.Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + and x12, x4, x8 + and x13, x5, x9 + mvn x12, x12 + mvn x13, x13 + stp x12, x13, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: and x12, x6, x10 + and x13, x7, x11 + mvn x12, x12 + mvn x13, x13 + stp x12, x13, [x0] +.Lret: ret + .size __gmpn_nand_n,.-__gmpn_nand_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/nior_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/nior_n.s new file mode 100644 index 0000000..5de9102 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/nior_n.s @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_nior_n + .type __gmpn_nior_n,@function +__gmpn_nior_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x7, [x1] + ldr x11, [x2] + orr x15, x7, x11 + mvn x15, x15 + str x15, [x0],#8 + tbnz x3, #1, .Lb11 + +.Lb01: cbz x18, .Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b .Lmid + +.Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b .Lmid + +.Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + orr x12, x6, x10 + orr x13, x7, x11 + mvn x12, x12 + mvn x13, x13 + stp x12, x13, [x0],#16 +.Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + orr x12, x4, x8 + orr x13, x5, x9 + mvn x12, x12 + mvn x13, x13 + stp x12, x13, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: orr x12, x6, x10 + orr x13, x7, x11 + mvn x12, x12 + mvn x13, x13 + stp x12, x13, [x0] +.Lret: ret + .size __gmpn_nior_n,.-__gmpn_nior_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/perfsqr.h b/vere/ext/gmp/gen/aarch64-linux/mpn/perfsqr.h new file mode 100644 index 0000000..80c5eb7 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/perfsqr.h @@ -0,0 +1,46 @@ +/* This file generated by gen-psqr.c - DO NOT EDIT. */ + +#if GMP_LIMB_BITS != 64 || GMP_NAIL_BITS != 0 +Error, error, this data is for 64 bit limb and 0 bit nail +#endif + +/* Non-zero bit indicates a quadratic residue mod 0x100. + This test identifies 82.81% as non-squares (212/256). */ +static const mp_limb_t +sq_res_0x100[4] = { + CNST_LIMB(0x202021202030213), + CNST_LIMB(0x202021202020213), + CNST_LIMB(0x202021202030212), + CNST_LIMB(0x202021202020212), +}; + +/* 2^48-1 = 3^2 * 5 * 7 * 13 * 17 * 97 ... */ +#define PERFSQR_MOD_BITS 49 + +/* This test identifies 97.81% as non-squares. */ +#define PERFSQR_MOD_TEST(up, usize) \ + do { \ + mp_limb_t r; \ + PERFSQR_MOD_34 (r, up, usize); \ + \ + /* 69.23% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(91), CNST_LIMB(0xfd2fd2fd2fd3), \ + CNST_LIMB(0x2191240), CNST_LIMB(0x8850a206953820e1)); \ + \ + /* 68.24% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(85), CNST_LIMB(0xfcfcfcfcfcfd), \ + CNST_LIMB(0x82158), CNST_LIMB(0x10b48c4b4206a105)); \ + \ + /* 55.56% */ \ + PERFSQR_MOD_1 (r, CNST_LIMB( 9), CNST_LIMB(0xe38e38e38e39), \ + CNST_LIMB(0x93)); \ + \ + /* 49.48% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(97), CNST_LIMB(0xfd5c5f02a3a1), \ + CNST_LIMB(0x1eb628b47), CNST_LIMB(0x6067981b8b451b5f)); \ + } while (0) + +/* Grand total sq_res_0x100 and PERFSQR_MOD_TEST, 99.62% non-squares. */ + +/* helper for tests/mpz/t-perfsqr.c */ +#define PERFSQR_DIVISORS { 256, 91, 85, 9, 97, } diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/popcount.s b/vere/ext/gmp/gen/aarch64-linux/mpn/popcount.s new file mode 100644 index 0000000..e0d09b0 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/popcount.s @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_popcount + .type __gmpn_popcount,@function +__gmpn_popcount: + + mov x11, #0x1fff + cmp x1, x11 + b.hi .Lgt8k + +.Llt8k: + movi v4.16b, #0 + movi v5.16b, #0 + + tbz x1, #0, .Lxx0 + sub x1, x1, #1 + ld1 {v0.1d}, [x0], #8 + cnt v6.16b, v0.16b + uadalp v4.8h, v6.16b + +.Lxx0: tbz x1, #1, .Lx00 + sub x1, x1, #2 + ld1 {v0.2d}, [x0], #16 + cnt v6.16b, v0.16b + uadalp v4.8h, v6.16b + +.Lx00: tbz x1, #2, .L000 + subs x1, x1, #4 + ld1 {v0.2d,v1.2d}, [x0], #32 + b.ls .Lsum + +.Lgt4: ld1 {v2.2d,v3.2d}, [x0], #32 + sub x1, x1, #4 + cnt v6.16b, v0.16b + cnt v7.16b, v1.16b + b .Lmid + +.L000: subs x1, x1, #8 + b.lo .Le0 + +.Lchu: ld1 {v2.2d,v3.2d}, [x0], #32 + ld1 {v0.2d,v1.2d}, [x0], #32 + cnt v6.16b, v2.16b + cnt v7.16b, v3.16b + subs x1, x1, #8 + b.lo .Lend + +.Ltop: ld1 {v2.2d,v3.2d}, [x0], #32 + uadalp v4.8h, v6.16b + cnt v6.16b, v0.16b + uadalp v5.8h, v7.16b + cnt v7.16b, v1.16b +.Lmid: ld1 {v0.2d,v1.2d}, [x0], #32 + subs x1, x1, #8 + uadalp v4.8h, v6.16b + cnt v6.16b, v2.16b + uadalp v5.8h, v7.16b + cnt v7.16b, v3.16b + b.hs .Ltop + +.Lend: uadalp v4.8h, v6.16b + uadalp v5.8h, v7.16b +.Lsum: cnt v6.16b, v0.16b + cnt v7.16b, v1.16b + uadalp v4.8h, v6.16b + uadalp v5.8h, v7.16b + add v4.8h, v4.8h, v5.8h + +.Le0: uaddlp v4.4s, v4.8h + uaddlp v4.2d, v4.4s + mov x0, v4.d[0] + mov x1, v4.d[1] + add x0, x0, x1 + ret + + + +.Lgt8k: + mov x8, x30 + mov x7, x1 + mov x4, #0 + mov x9, #0x1ff0*8 + mov x10, #0x1ff0 + +1: add x5, x0, x9 + mov x1, #0x1ff0-8 + movi v4.16b, #0 + movi v5.16b, #0 + bl .Lchu + add x4, x4, x0 + mov x0, x5 + sub x7, x7, x10 + cmp x7, x11 + b.hi 1b + + mov x1, x7 + bl .Llt8k + add x0, x4, x0 + mov x30, x8 + ret + .size __gmpn_popcount,.-__gmpn_popcount diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/rsblsh1_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/rsblsh1_n.s new file mode 100644 index 0000000..1c6f4fc --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/rsblsh1_n.s @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_rsblsh1_n + .type __gmpn_rsblsh1_n,@function +__gmpn_rsblsh1_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x5, [x1] + tbnz x3, #1, .Lb11 + +.Lb01: ldr x11, [x2] + cbz x18, .L1 + ldp x8, x9, [x2,#8] + lsl x13, x11, #1 + subs x15, x13, x5 + str x15, [x0],#8 + sub x1, x1, #24 + sub x2, x2, #8 + b .Lmid + +.L1: lsl x13, x11, #1 + subs x15, x13, x5 + str x15, [x0] + lsr x0, x11, 63 + sbc x0, x0, xzr + ret + +.Lb11: ldr x9, [x2] + ldp x10, x11, [x2,#8]! + lsl x13, x9, #1 + subs x17, x13, x5 + str x17, [x0],#8 + sub x1, x1, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: subs x11, xzr, xzr + ldp x8, x9, [x2],#-16 + sub x1, x1, #32 + b .Lmid + +.Lb10: subs x9, xzr, xzr + ldp x10, x11, [x2] + sub x1, x1, #16 + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #63 + ldp x8, x9, [x2,#16] + extr x13, x11, x10, #63 + sbcs x14, x12, x4 + sbcs x15, x13, x5 + stp x14, x15, [x0],#16 +.Lmid: ldp x4, x5, [x1,#32]! + extr x12, x8, x11, #63 + ldp x10, x11, [x2,#32]! + extr x13, x9, x8, #63 + sbcs x16, x12, x4 + sbcs x17, x13, x5 + stp x16, x17, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #63 + extr x13, x11, x10, #63 + sbcs x14, x12, x4 + sbcs x15, x13, x5 + stp x14, x15, [x0] + lsr x0, x11, 63 + sbc x0, x0, xzr + ret + .size __gmpn_rsblsh1_n,.-__gmpn_rsblsh1_n + diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/rsblsh2_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/rsblsh2_n.s new file mode 100644 index 0000000..8fe8980 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/rsblsh2_n.s @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_rsblsh2_n + .type __gmpn_rsblsh2_n,@function +__gmpn_rsblsh2_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x5, [x1] + tbnz x3, #1, .Lb11 + +.Lb01: ldr x11, [x2] + cbz x18, .L1 + ldp x8, x9, [x2,#8] + lsl x13, x11, #2 + subs x15, x13, x5 + str x15, [x0],#8 + sub x1, x1, #24 + sub x2, x2, #8 + b .Lmid + +.L1: lsl x13, x11, #2 + subs x15, x13, x5 + str x15, [x0] + lsr x0, x11, 62 + sbc x0, x0, xzr + ret + +.Lb11: ldr x9, [x2] + ldp x10, x11, [x2,#8]! + lsl x13, x9, #2 + subs x17, x13, x5 + str x17, [x0],#8 + sub x1, x1, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: subs x11, xzr, xzr + ldp x8, x9, [x2],#-16 + sub x1, x1, #32 + b .Lmid + +.Lb10: subs x9, xzr, xzr + ldp x10, x11, [x2] + sub x1, x1, #16 + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #62 + ldp x8, x9, [x2,#16] + extr x13, x11, x10, #62 + sbcs x14, x12, x4 + sbcs x15, x13, x5 + stp x14, x15, [x0],#16 +.Lmid: ldp x4, x5, [x1,#32]! + extr x12, x8, x11, #62 + ldp x10, x11, [x2,#32]! + extr x13, x9, x8, #62 + sbcs x16, x12, x4 + sbcs x17, x13, x5 + stp x16, x17, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #62 + extr x13, x11, x10, #62 + sbcs x14, x12, x4 + sbcs x15, x13, x5 + stp x14, x15, [x0] + lsr x0, x11, 62 + sbc x0, x0, xzr + ret + .size __gmpn_rsblsh2_n,.-__gmpn_rsblsh2_n + diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/rsh1add_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/rsh1add_n.s new file mode 100644 index 0000000..b36f5d8 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/rsh1add_n.s @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_rsh1add_n + .type __gmpn_rsh1add_n,@function +__gmpn_rsh1add_n: + lsr x18, x3, #2 + + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x5, [x1],#8 + ldr x9, [x2],#8 + tbnz x3, #1, .Lb11 + +.Lb01: adds x13, x5, x9 + and x10, x13, #1 + cbz x18, .L1 + ldp x4, x5, [x1],#48 + ldp x8, x9, [x2],#48 + adcs x14, x4, x8 + adcs x15, x5, x9 + ldp x4, x5, [x1,#-32] + ldp x8, x9, [x2,#-32] + extr x17, x14, x13, #1 + adcs x12, x4, x8 + adcs x13, x5, x9 + str x17, [x0], #24 + sub x18, x18, #1 + cbz x18, .Lend + b .Ltop + +.L1: cset x14, cs + extr x17, x14, x13, #1 + str x17, [x0] + mov x0, x10 + ret + +.Lb11: adds x15, x5, x9 + and x10, x15, #1 + + ldp x4, x5, [x1],#32 + ldp x8, x9, [x2],#32 + adcs x12, x4, x8 + adcs x13, x5, x9 + cbz x18, .L3 + ldp x4, x5, [x1,#-16] + ldp x8, x9, [x2,#-16] + extr x17, x12, x15, #1 + adcs x14, x4, x8 + adcs x15, x5, x9 + str x17, [x0], #8 + b .Lmid + +.L3: extr x17, x12, x15, #1 + str x17, [x0], #8 + b .L2 + +.Lbx0: tbz x3, #1, .Lb00 + +.Lb10: ldp x4, x5, [x1],#32 + ldp x8, x9, [x2],#32 + adds x12, x4, x8 + adcs x13, x5, x9 + and x10, x12, #1 + cbz x18, .L2 + ldp x4, x5, [x1,#-16] + ldp x8, x9, [x2,#-16] + adcs x14, x4, x8 + adcs x15, x5, x9 + b .Lmid + +.Lb00: ldp x4, x5, [x1],#48 + ldp x8, x9, [x2],#48 + adds x14, x4, x8 + adcs x15, x5, x9 + and x10, x14, #1 + ldp x4, x5, [x1,#-32] + ldp x8, x9, [x2,#-32] + adcs x12, x4, x8 + adcs x13, x5, x9 + add x0, x0, #16 + sub x18, x18, #1 + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#-16] + ldp x8, x9, [x2,#-16] + extr x16, x15, x14, #1 + extr x17, x12, x15, #1 + adcs x14, x4, x8 + adcs x15, x5, x9 + stp x16, x17, [x0,#-16] +.Lmid: ldp x4, x5, [x1],#32 + ldp x8, x9, [x2],#32 + extr x16, x13, x12, #1 + extr x17, x14, x13, #1 + adcs x12, x4, x8 + adcs x13, x5, x9 + stp x16, x17, [x0],#32 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: extr x16, x15, x14, #1 + extr x17, x12, x15, #1 + stp x16, x17, [x0,#-16] +.L2: cset x14, cs + extr x16, x13, x12, #1 + extr x17, x14, x13, #1 + stp x16, x17, [x0] + +.Lret: mov x0, x10 + ret + .size __gmpn_rsh1add_n,.-__gmpn_rsh1add_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/rsh1sub_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/rsh1sub_n.s new file mode 100644 index 0000000..a744993 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/rsh1sub_n.s @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_rsh1sub_n + .type __gmpn_rsh1sub_n,@function +__gmpn_rsh1sub_n: + lsr x18, x3, #2 + + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x5, [x1],#8 + ldr x9, [x2],#8 + tbnz x3, #1, .Lb11 + +.Lb01: subs x13, x5, x9 + and x10, x13, #1 + cbz x18, .L1 + ldp x4, x5, [x1],#48 + ldp x8, x9, [x2],#48 + sbcs x14, x4, x8 + sbcs x15, x5, x9 + ldp x4, x5, [x1,#-32] + ldp x8, x9, [x2,#-32] + extr x17, x14, x13, #1 + sbcs x12, x4, x8 + sbcs x13, x5, x9 + str x17, [x0], #24 + sub x18, x18, #1 + cbz x18, .Lend + b .Ltop + +.L1: cset x14, cc + extr x17, x14, x13, #1 + str x17, [x0] + mov x0, x10 + ret + +.Lb11: subs x15, x5, x9 + and x10, x15, #1 + + ldp x4, x5, [x1],#32 + ldp x8, x9, [x2],#32 + sbcs x12, x4, x8 + sbcs x13, x5, x9 + cbz x18, .L3 + ldp x4, x5, [x1,#-16] + ldp x8, x9, [x2,#-16] + extr x17, x12, x15, #1 + sbcs x14, x4, x8 + sbcs x15, x5, x9 + str x17, [x0], #8 + b .Lmid + +.L3: extr x17, x12, x15, #1 + str x17, [x0], #8 + b .L2 + +.Lbx0: tbz x3, #1, .Lb00 + +.Lb10: ldp x4, x5, [x1],#32 + ldp x8, x9, [x2],#32 + subs x12, x4, x8 + sbcs x13, x5, x9 + and x10, x12, #1 + cbz x18, .L2 + ldp x4, x5, [x1,#-16] + ldp x8, x9, [x2,#-16] + sbcs x14, x4, x8 + sbcs x15, x5, x9 + b .Lmid + +.Lb00: ldp x4, x5, [x1],#48 + ldp x8, x9, [x2],#48 + subs x14, x4, x8 + sbcs x15, x5, x9 + and x10, x14, #1 + ldp x4, x5, [x1,#-32] + ldp x8, x9, [x2,#-32] + sbcs x12, x4, x8 + sbcs x13, x5, x9 + add x0, x0, #16 + sub x18, x18, #1 + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#-16] + ldp x8, x9, [x2,#-16] + extr x16, x15, x14, #1 + extr x17, x12, x15, #1 + sbcs x14, x4, x8 + sbcs x15, x5, x9 + stp x16, x17, [x0,#-16] +.Lmid: ldp x4, x5, [x1],#32 + ldp x8, x9, [x2],#32 + extr x16, x13, x12, #1 + extr x17, x14, x13, #1 + sbcs x12, x4, x8 + sbcs x13, x5, x9 + stp x16, x17, [x0],#32 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: extr x16, x15, x14, #1 + extr x17, x12, x15, #1 + stp x16, x17, [x0,#-16] +.L2: cset x14, cc + extr x16, x13, x12, #1 + extr x17, x14, x13, #1 + stp x16, x17, [x0] + +.Lret: mov x0, x10 + ret + .size __gmpn_rsh1sub_n,.-__gmpn_rsh1sub_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/rshift.s b/vere/ext/gmp/gen/aarch64-linux/mpn/rshift.s new file mode 100644 index 0000000..04def66 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/rshift.s @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_rshift + .type __gmpn_rshift,@function +__gmpn_rshift: + mov x16, x0 + sub x8, xzr, x3 + lsr x18, x2, #2 + tbz x2, #0, .Lbx0 + +.Lbx1: ldr x5, [x1] + tbnz x2, #1, .Lb11 + +.Lb01: lsl x0, x5, x8 + lsr x2, x5, x3 + cbnz x18, .Lgt1 + str x2, [x16] + ret +.Lgt1: ldp x4, x5, [x1,#8] + sub x1, x1, #8 + sub x16, x16, #32 + b .Llo2 + +.Lb11: lsl x0, x5, x8 + lsr x2, x5, x3 + ldp x6, x7, [x1,#8]! + sub x16, x16, #16 + b .Llo3 + +.Lbx0: ldp x4, x5, [x1] + tbz x2, #1, .Lb00 + +.Lb10: lsl x0, x4, x8 + lsr x13, x4, x3 + lsl x10, x5, x8 + lsr x2, x5, x3 + cbnz x18, .Lgt2 + orr x10, x10, x13 + stp x10, x2, [x16] + ret +.Lgt2: ldp x4, x5, [x1,#16] + orr x10, x10, x13 + str x10, [x16],#-24 + b .Llo2 + +.Lb00: lsl x0, x4, x8 + lsr x13, x4, x3 + lsl x10, x5, x8 + lsr x2, x5, x3 + ldp x6, x7, [x1,#16]! + orr x10, x10, x13 + str x10, [x16],#-8 + b .Llo0 + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + orr x10, x10, x13 + orr x11, x12, x2 + stp x11, x10, [x16,#16] + lsr x2, x7, x3 +.Llo2: lsl x10, x5, x8 + lsl x12, x4, x8 + lsr x13, x4, x3 + ldp x6, x7, [x1,#32]! + orr x10, x10, x13 + orr x11, x12, x2 + stp x11, x10, [x16,#32]! + lsr x2, x5, x3 +.Llo0: sub x18, x18, #1 +.Llo3: lsl x10, x7, x8 + lsl x12, x6, x8 + lsr x13, x6, x3 + cbnz x18, .Ltop + +.Lend: orr x10, x10, x13 + orr x11, x12, x2 + lsr x2, x7, x3 + stp x11, x10, [x16,#16] + str x2, [x16,#32] + ret + .size __gmpn_rshift,.-__gmpn_rshift diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/sec_tabselect.s b/vere/ext/gmp/gen/aarch64-linux/mpn/sec_tabselect.s new file mode 100644 index 0000000..b966351 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/sec_tabselect.s @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_sec_tabselect + .type __gmpn_sec_tabselect,@function +__gmpn_sec_tabselect: + dup v7.2d, x4 + + mov x10, #1 + dup v6.2d, x10 + + subs x6, x2, #4 + b.mi .Louter_end + +.Louter_top: + mov x5, x3 + mov x12, x1 + movi v5.16b, #0 + movi v2.16b, #0 + movi v3.16b, #0 + .align 4 +.Ltp4: cmeq v4.2d, v5.2d, v7.2d + ld1 {v0.2d,v1.2d}, [x1] + add v5.2d, v5.2d, v6.2d + bit v2.16b, v0.16b, v4.16b + bit v3.16b, v1.16b, v4.16b + add x1, x1, x2, lsl #3 + sub x5, x5, #1 + cbnz x5, .Ltp4 + st1 {v2.2d,v3.2d}, [x0], #32 + add x1, x12, #32 + subs x6, x6, #4 + b.pl .Louter_top +.Louter_end: + + tbz x2, #1, .Lb0x + mov x5, x3 + mov x12, x1 + movi v5.16b, #0 + movi v2.16b, #0 + .align 4 +.Ltp2: cmeq v4.2d, v5.2d, v7.2d + ld1 {v0.2d}, [x1] + add v5.2d, v5.2d, v6.2d + bit v2.16b, v0.16b, v4.16b + add x1, x1, x2, lsl #3 + sub x5, x5, #1 + cbnz x5, .Ltp2 + st1 {v2.2d}, [x0], #16 + add x1, x12, #16 + +.Lb0x: tbz x2, #0, .Lb00 + mov x5, x3 + mov x12, x1 + movi v5.16b, #0 + movi v2.16b, #0 + .align 4 +.Ltp1: cmeq v4.2d, v5.2d, v7.2d + ld1 {v0.1d}, [x1] + add v5.2d, v5.2d, v6.2d + bit v2.8b, v0.8b, v4.8b + add x1, x1, x2, lsl #3 + sub x5, x5, #1 + cbnz x5, .Ltp1 + st1 {v2.1d}, [x0], #8 + add x1, x12, #8 + +.Lb00: ret + .size __gmpn_sec_tabselect,.-__gmpn_sec_tabselect diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/sqr_diag_addlsh1.s b/vere/ext/gmp/gen/aarch64-linux/mpn/sqr_diag_addlsh1.s new file mode 100644 index 0000000..96df05b --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/sqr_diag_addlsh1.s @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_sqr_diag_addlsh1 + .type __gmpn_sqr_diag_addlsh1,@function +__gmpn_sqr_diag_addlsh1: + ldr x15, [x2],#8 + lsr x18, x3, #1 + tbz x3, #0, .Lbx0 + +.Lbx1: adds x7, xzr, xzr + mul x12, x15, x15 + ldr x16, [x2],#8 + ldp x4, x5, [x1],#16 + umulh x11, x15, x15 + b .Lmid + +.Lbx0: adds x5, xzr, xzr + mul x12, x15, x15 + ldr x17, [x2],#16 + ldp x6, x7, [x1],#32 + umulh x11, x15, x15 + sub x18, x18, #1 + cbz x18, .Lend + + .align 4 +.Ltop: extr x9, x6, x5, #63 + mul x10, x17, x17 + ldr x16, [x2,#-8] + adcs x13, x9, x11 + ldp x4, x5, [x1,#-16] + umulh x11, x17, x17 + extr x8, x7, x6, #63 + stp x12, x13, [x0],#16 + adcs x12, x8, x10 +.Lmid: extr x9, x4, x7, #63 + mul x10, x16, x16 + ldr x17, [x2],#16 + adcs x13, x9, x11 + ldp x6, x7, [x1],#32 + umulh x11, x16, x16 + extr x8, x5, x4, #63 + stp x12, x13, [x0],#16 + adcs x12, x8, x10 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: extr x9, x6, x5, #63 + mul x10, x17, x17 + adcs x13, x9, x11 + umulh x11, x17, x17 + extr x8, x7, x6, #63 + stp x12, x13, [x0] + adcs x12, x8, x10 + extr x9, xzr, x7, #63 + adcs x13, x9, x11 + stp x12, x13, [x0,#16] + + ret + .size __gmpn_sqr_diag_addlsh1,.-__gmpn_sqr_diag_addlsh1 diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/sub_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/sub_n.s new file mode 100644 index 0000000..1d9a2f0 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/sub_n.s @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_sub_nc + .type __gmpn_sub_nc,@function +__gmpn_sub_nc: + cmp xzr, x4 + b .Lent + .size __gmpn_sub_nc,.-__gmpn_sub_nc + .text + .align 3 + .globl __gmpn_sub_n + .type __gmpn_sub_n,@function +__gmpn_sub_n: + cmp xzr, xzr +.Lent: lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x7, [x1] + ldr x11, [x2] + sbcs x13, x7, x11 + str x13, [x0],#8 + tbnz x3, #1, .Lb11 + +.Lb01: cbz x18, .Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b .Lmid + +.Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: ldp x4, x5, [x1] + ldp x8, x9, [x2] + sub x1, x1, #16 + sub x2, x2, #16 + b .Lmid + +.Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + sbcs x12, x6, x10 + sbcs x13, x7, x11 + stp x12, x13, [x0],#16 +.Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + sbcs x12, x4, x8 + sbcs x13, x5, x9 + stp x12, x13, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: sbcs x12, x6, x10 + sbcs x13, x7, x11 + stp x12, x13, [x0] +.Lret: cset x0, cc + ret + .size __gmpn_sub_n,.-__gmpn_sub_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/sublsh1_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/sublsh1_n.s new file mode 100644 index 0000000..ba36536 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/sublsh1_n.s @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_sublsh1_n + .type __gmpn_sublsh1_n,@function +__gmpn_sublsh1_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x5, [x1] + tbnz x3, #1, .Lb11 + +.Lb01: ldr x11, [x2] + cbz x18, .L1 + ldp x8, x9, [x2,#8] + lsl x13, x11, #1 + subs x15, x5, x13 + str x15, [x0],#8 + sub x1, x1, #24 + sub x2, x2, #8 + b .Lmid + +.L1: lsl x13, x11, #1 + subs x15, x5, x13 + str x15, [x0] + lsr x0, x11, 63 + cinc x0, x0, cc + ret + +.Lb11: ldr x9, [x2] + ldp x10, x11, [x2,#8]! + lsl x13, x9, #1 + subs x17, x5, x13 + str x17, [x0],#8 + sub x1, x1, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: subs x11, xzr, xzr + ldp x8, x9, [x2],#-16 + sub x1, x1, #32 + b .Lmid + +.Lb10: subs x9, xzr, xzr + ldp x10, x11, [x2] + sub x1, x1, #16 + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #63 + ldp x8, x9, [x2,#16] + extr x13, x11, x10, #63 + sbcs x14, x4, x12 + sbcs x15, x5, x13 + stp x14, x15, [x0],#16 +.Lmid: ldp x4, x5, [x1,#32]! + extr x12, x8, x11, #63 + ldp x10, x11, [x2,#32]! + extr x13, x9, x8, #63 + sbcs x16, x4, x12 + sbcs x17, x5, x13 + stp x16, x17, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #63 + extr x13, x11, x10, #63 + sbcs x14, x4, x12 + sbcs x15, x5, x13 + stp x14, x15, [x0] + lsr x0, x11, 63 + cinc x0, x0, cc + ret + .size __gmpn_sublsh1_n,.-__gmpn_sublsh1_n + diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/sublsh2_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/sublsh2_n.s new file mode 100644 index 0000000..fa78221 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/sublsh2_n.s @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_sublsh2_n + .type __gmpn_sublsh2_n,@function +__gmpn_sublsh2_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x5, [x1] + tbnz x3, #1, .Lb11 + +.Lb01: ldr x11, [x2] + cbz x18, .L1 + ldp x8, x9, [x2,#8] + lsl x13, x11, #2 + subs x15, x5, x13 + str x15, [x0],#8 + sub x1, x1, #24 + sub x2, x2, #8 + b .Lmid + +.L1: lsl x13, x11, #2 + subs x15, x5, x13 + str x15, [x0] + lsr x0, x11, 62 + cinc x0, x0, cc + ret + +.Lb11: ldr x9, [x2] + ldp x10, x11, [x2,#8]! + lsl x13, x9, #2 + subs x17, x5, x13 + str x17, [x0],#8 + sub x1, x1, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: subs x11, xzr, xzr + ldp x8, x9, [x2],#-16 + sub x1, x1, #32 + b .Lmid + +.Lb10: subs x9, xzr, xzr + ldp x10, x11, [x2] + sub x1, x1, #16 + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #62 + ldp x8, x9, [x2,#16] + extr x13, x11, x10, #62 + sbcs x14, x4, x12 + sbcs x15, x5, x13 + stp x14, x15, [x0],#16 +.Lmid: ldp x4, x5, [x1,#32]! + extr x12, x8, x11, #62 + ldp x10, x11, [x2,#32]! + extr x13, x9, x8, #62 + sbcs x16, x4, x12 + sbcs x17, x5, x13 + stp x16, x17, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #62 + extr x13, x11, x10, #62 + sbcs x14, x4, x12 + sbcs x15, x5, x13 + stp x14, x15, [x0] + lsr x0, x11, 62 + cinc x0, x0, cc + ret + .size __gmpn_sublsh2_n,.-__gmpn_sublsh2_n + diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/submul_1.s b/vere/ext/gmp/gen/aarch64-linux/mpn/submul_1.s new file mode 100644 index 0000000..682b318 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/submul_1.s @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_submul_1 + .type __gmpn_submul_1,@function +__gmpn_submul_1: + adds x15, xzr, xzr + + tbz x2, #0, .L1 + + ldr x4, [x1],#8 + mul x8, x4, x3 + umulh x12, x4, x3 + ldr x4, [x0] + subs x8, x4, x8 + csinc x15, x12, x12, cs + str x8, [x0],#8 + +.L1: tbz x2, #1, .L2 + + ldp x4, x5, [x1],#16 + mul x8, x4, x3 + umulh x12, x4, x3 + mul x9, x5, x3 + umulh x13, x5, x3 + adds x8, x8, x15 + adcs x9, x9, x12 + ldp x4, x5, [x0] + adc x15, x13, xzr + subs x8, x4, x8 + sbcs x9, x5, x9 + csinc x15, x15, x15, cs + stp x8, x9, [x0],#16 + +.L2: lsr x2, x2, #2 + cbz x2, .Lle3 + ldp x4, x5, [x1],#32 + ldp x6, x7, [x1,#-16] + b .Lmid +.Lle3: mov x0, x15 + ret + + .align 4 +.Ltop: ldp x4, x5, [x1],#32 + ldp x6, x7, [x1,#-16] + subs x8, x16, x8 + sbcs x9, x17, x9 + stp x8, x9, [x0],#32 + sbcs x10, x12, x10 + sbcs x11, x13, x11 + stp x10, x11, [x0,#-16] + csinc x15, x15, x15, cs +.Lmid: sub x2, x2, #1 + mul x8, x4, x3 + umulh x12, x4, x3 + mul x9, x5, x3 + umulh x13, x5, x3 + adds x8, x8, x15 + mul x10, x6, x3 + umulh x14, x6, x3 + adcs x9, x9, x12 + mul x11, x7, x3 + umulh x15, x7, x3 + adcs x10, x10, x13 + ldp x16, x17, [x0] + adcs x11, x11, x14 + ldp x12, x13, [x0,#16] + adc x15, x15, xzr + cbnz x2, .Ltop + + subs x8, x16, x8 + sbcs x9, x17, x9 + sbcs x10, x12, x10 + sbcs x11, x13, x11 + stp x8, x9, [x0] + stp x10, x11, [x0,#16] + csinc x0, x15, x15, cs + ret + .size __gmpn_submul_1,.-__gmpn_submul_1 diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/xnor_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/xnor_n.s new file mode 100644 index 0000000..25f59c9 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/xnor_n.s @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_xnor_n + .type __gmpn_xnor_n,@function +__gmpn_xnor_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x7, [x1] + ldr x11, [x2] + eon x15, x7, x11 + str x15, [x0],#8 + tbnz x3, #1, .Lb11 + +.Lb01: cbz x18, .Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b .Lmid + +.Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b .Lmid + +.Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + eon x12, x6, x10 + eon x13, x7, x11 + stp x12, x13, [x0],#16 +.Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + eon x12, x4, x8 + eon x13, x5, x9 + stp x12, x13, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: eon x12, x6, x10 + eon x13, x7, x11 + stp x12, x13, [x0] +.Lret: ret + .size __gmpn_xnor_n,.-__gmpn_xnor_n diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/xor_n.s b/vere/ext/gmp/gen/aarch64-linux/mpn/xor_n.s new file mode 100644 index 0000000..dc27922 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/xor_n.s @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl __gmpn_xor_n + .type __gmpn_xor_n,@function +__gmpn_xor_n: + lsr x18, x3, #2 + tbz x3, #0, .Lbx0 + +.Lbx1: ldr x7, [x1] + ldr x11, [x2] + eor x15, x7, x11 + str x15, [x0],#8 + tbnz x3, #1, .Lb11 + +.Lb01: cbz x18, .Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b .Lmid + +.Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x18, .Lend + b .Ltop + +.Lbx0: tbnz x3, #1, .Lb10 + +.Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b .Lmid + +.Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x18, .Lend + + .align 4 +.Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + eor x12, x6, x10 + eor x13, x7, x11 + stp x12, x13, [x0],#16 +.Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + eor x12, x4, x8 + eor x13, x5, x9 + stp x12, x13, [x0],#16 + sub x18, x18, #1 + cbnz x18, .Ltop + +.Lend: eor x12, x6, x10 + eor x13, x7, x11 + stp x12, x13, [x0] +.Lret: ret + .size __gmpn_xor_n,.-__gmpn_xor_n diff --git a/vere/ext/gmp/gen/aarch64-linux/sieve_table.h b/vere/ext/gmp/gen/aarch64-linux/sieve_table.h new file mode 100644 index 0000000..ee9ac14 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/sieve_table.h @@ -0,0 +1,46 @@ +/* This file generated by gen-sieve.c - DO NOT EDIT. */ + +#if GMP_LIMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +#define PRIMESIEVE_INIT_TABLE \ + CNST_LIMB (0x3294C9E069128480), /* 5 - 196 (42 primes) */ \ + CNST_LIMB (0x95A35E1EC4AB21DC), /* 197 - 388 (32 primes) */ \ + CNST_LIMB (0x4AD7CE99B8693366), /* 389 - 580 (30 primes) */ \ + CNST_LIMB (0x6595B6DA728DC52B), /* 581 - 772 (30 primes) */ \ + CNST_LIMB (0xEA6D9F8787B0CEDE), /* 773 - 964 (26 primes) */ \ + CNST_LIMB (0x3F56A1F4CD3275A9), /* 965 - 1156 (29 primes) */ \ + CNST_LIMB (0xFD3848FB74A76ADB), /* 1157 - 1348 (26 primes) */ \ + CNST_LIMB (0xDBBA0DD1A1EDF6AF), /* 1349 - 1540 (25 primes) */ \ + CNST_LIMB (0xCEC7F17ED22799A5), /* 1541 - 1732 (27 primes) */ \ + CNST_LIMB (0xEAEC17BDBB717D56), /* 1733 - 1924 (24 primes) */ \ + CNST_LIMB (0x3B0EB7B3585AFCF3), /* 1925 - 2116 (26 primes) */ \ + CNST_LIMB (0xE563D8F69FDF6C4F), /* 2117 - 2308 (23 primes) */ \ + CNST_LIMB (0xFE5BA7ABA45E92FC), /* 2309 - 2500 (25 primes) */ \ + CNST_LIMB (0x158DEE6F3BF49B7D), /* 2501 - 2692 (24 primes) */ \ + CNST_LIMB (0xBE5A7BC4EDE6CD1A), /* 2693 - 2884 (26 primes) */ \ + CNST_LIMB (0xD7679B3FCA7BB6AD), /* 2885 - 3076 (22 primes) */ \ + CNST_LIMB (0xC3F66B971FEF37E9), /* 3077 - 3268 (22 primes) */ \ + CNST_LIMB (0x6F7EBCF339C953FD), /* 3269 - 3460 (22 primes) */ \ + CNST_LIMB (0xD5A5ECDCD235DBF0), /* 3461 - 3652 (27 primes) */ \ + CNST_LIMB (0xECFA7B2FD5B65E3B), /* 3653 - 3844 (22 primes) */ \ + CNST_LIMB (0xD28EFDF9C89F67B1), /* 3845 - 4036 (25 primes) */ \ + CNST_LIMB (0xCB7F7C7A3DD3AF4F), /* 4037 - 4228 (21 primes) */ \ + CNST_LIMB (0xEEBED6CDFF6B32CC), /* 4229 - 4420 (22 primes) */ \ + CNST_LIMB (0xD5BD73F85ECFA97C), /* 4421 - 4612 (23 primes) */ \ + CNST_LIMB (0x21FDBE4FBBAD48F7), /* 4613 - 4804 (24 primes) */ \ + CNST_LIMB (0x5E35A3B5EEB7FDE7), /* 4805 - 4996 (21 primes) */ \ + CNST_LIMB (0xD9EBFD53A7DBBCC9), /* 4997 - 5188 (22 primes) */ \ + CNST_LIMB (0xFF9EDEAF2EFE1F76), /* 5189 - 5380 (18 primes) */ +#define PRIMESIEVE_NUMBEROF_TABLE 28 +/* #define PRIMESIEVE_PRIMES_IN_TABLE 706 */ +#define PRIMESIEVE_HIGHEST_PRIME 5351 +/* #define PRIMESIEVE_FIRST_UNCHECKED 5381 */ + +#define SIEVE_MASK1 CNST_LIMB(0x3204C1A049120485) +#define SIEVE_MASKT CNST_LIMB(0xA1204892058) +#define SIEVE_2MSK1 CNST_LIMB(0x29048402110840A) +#define SIEVE_2MSK2 CNST_LIMB(0x9402180C40230184) +#define SIEVE_2MSKT CNST_LIMB(0x5021088402120) + diff --git a/vere/ext/gmp/gen/aarch64-linux/trialdivtab.h b/vere/ext/gmp/gen/aarch64-linux/trialdivtab.h new file mode 100644 index 0000000..eb81d7f --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/trialdivtab.h @@ -0,0 +1,1214 @@ +#if GMP_LIMB_BITS != 64 +#error This table is for GMP_LIMB_BITS = 64 +#endif + +#if GMP_NAIL_BITS != 0 +#error This table does not support nails +#endif + +#ifdef WANT_dtab + P(3,CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0x5555555555555555)), + P(5,CNST_LIMB(0xcccccccccccccccd),CNST_LIMB(0x3333333333333333)), + P(7,CNST_LIMB(0x6db6db6db6db6db7),CNST_LIMB(0x2492492492492492)), + P(11,CNST_LIMB(0x2e8ba2e8ba2e8ba3),CNST_LIMB(0x1745d1745d1745d1)), + P(13,CNST_LIMB(0x4ec4ec4ec4ec4ec5),CNST_LIMB(0x13b13b13b13b13b1)), + P(17,CNST_LIMB(0xf0f0f0f0f0f0f0f1),CNST_LIMB(0xf0f0f0f0f0f0f0f)), + P(19,CNST_LIMB(0x86bca1af286bca1b),CNST_LIMB(0xd79435e50d79435)), + P(23,CNST_LIMB(0xd37a6f4de9bd37a7),CNST_LIMB(0xb21642c8590b216)), + P(29,CNST_LIMB(0x34f72c234f72c235),CNST_LIMB(0x8d3dcb08d3dcb08)), + P(31,CNST_LIMB(0xef7bdef7bdef7bdf),CNST_LIMB(0x842108421084210)), + P(37,CNST_LIMB(0x14c1bacf914c1bad),CNST_LIMB(0x6eb3e45306eb3e4)), + P(41,CNST_LIMB(0x8f9c18f9c18f9c19),CNST_LIMB(0x63e7063e7063e70)), + P(43,CNST_LIMB(0x82fa0be82fa0be83),CNST_LIMB(0x5f417d05f417d05)), + P(47,CNST_LIMB(0x51b3bea3677d46cf),CNST_LIMB(0x572620ae4c415c9)), + P(53,CNST_LIMB(0x21cfb2b78c13521d),CNST_LIMB(0x4d4873ecade304d)), + P(59,CNST_LIMB(0xcbeea4e1a08ad8f3),CNST_LIMB(0x456c797dd49c341)), + P(61,CNST_LIMB(0x4fbcda3ac10c9715),CNST_LIMB(0x4325c53ef368eb0)), + P(67,CNST_LIMB(0xf0b7672a07a44c6b),CNST_LIMB(0x3d226357e16ece5)), + P(71,CNST_LIMB(0x193d4bb7e327a977),CNST_LIMB(0x39b0ad12073615a)), + P(73,CNST_LIMB(0x7e3f1f8fc7e3f1f9),CNST_LIMB(0x381c0e070381c0e)), + P(79,CNST_LIMB(0x9b8b577e613716af),CNST_LIMB(0x33d91d2a2067b23)), + P(83,CNST_LIMB(0xa3784a062b2e43db),CNST_LIMB(0x3159721ed7e7534)), + P(89,CNST_LIMB(0xf47e8fd1fa3f47e9),CNST_LIMB(0x2e05c0b81702e05)), + P(97,CNST_LIMB(0xa3a0fd5c5f02a3a1),CNST_LIMB(0x2a3a0fd5c5f02a3)), + P(101,CNST_LIMB(0x3a4c0a237c32b16d),CNST_LIMB(0x288df0cac5b3f5d)), + P(103,CNST_LIMB(0xdab7ec1dd3431b57),CNST_LIMB(0x27c45979c95204f)), + P(107,CNST_LIMB(0x77a04c8f8d28ac43),CNST_LIMB(0x2647c69456217ec)), + P(109,CNST_LIMB(0xa6c0964fda6c0965),CNST_LIMB(0x2593f69b02593f6)), + P(113,CNST_LIMB(0x90fdbc090fdbc091),CNST_LIMB(0x243f6f0243f6f02)), + P(127,CNST_LIMB(0x7efdfbf7efdfbf7f),CNST_LIMB(0x204081020408102)), + P(131,CNST_LIMB(0x3e88cb3c9484e2b),CNST_LIMB(0x1f44659e4a42715)), + P(137,CNST_LIMB(0xe21a291c077975b9),CNST_LIMB(0x1de5d6e3f8868a4)), + P(139,CNST_LIMB(0x3aef6ca970586723),CNST_LIMB(0x1d77b654b82c339)), + P(149,CNST_LIMB(0xdf5b0f768ce2cabd),CNST_LIMB(0x1b7d6c3dda338b2)), + P(151,CNST_LIMB(0x6fe4dfc9bf937f27),CNST_LIMB(0x1b2036406c80d90)), + P(157,CNST_LIMB(0x5b4fe5e92c0685b5),CNST_LIMB(0x1a16d3f97a4b01a)), + P(163,CNST_LIMB(0x1f693a1c451ab30b),CNST_LIMB(0x1920fb49d0e228d)), + P(167,CNST_LIMB(0x8d07aa27db35a717),CNST_LIMB(0x1886e5f0abb0499)), + P(173,CNST_LIMB(0x882383b30d516325),CNST_LIMB(0x17ad2208e0ecc35)), + P(179,CNST_LIMB(0xed6866f8d962ae7b),CNST_LIMB(0x16e1f76b4337c6c)), + P(181,CNST_LIMB(0x3454dca410f8ed9d),CNST_LIMB(0x16a13cd15372904)), + P(191,CNST_LIMB(0x1d7ca632ee936f3f),CNST_LIMB(0x1571ed3c506b39a)), + P(193,CNST_LIMB(0x70bf015390948f41),CNST_LIMB(0x15390948f40feac)), + P(197,CNST_LIMB(0xc96bdb9d3d137e0d),CNST_LIMB(0x14cab88725af6e7)), + P(199,CNST_LIMB(0x2697cc8aef46c0f7),CNST_LIMB(0x149539e3b2d066e)), + P(211,CNST_LIMB(0xc0e8f2a76e68575b),CNST_LIMB(0x13698df3de07479)), + P(223,CNST_LIMB(0x687763dfdb43bb1f),CNST_LIMB(0x125e22708092f11)), + P(227,CNST_LIMB(0x1b10ea929ba144cb),CNST_LIMB(0x120b470c67c0d88)), + P(229,CNST_LIMB(0x1d10c4c0478bbced),CNST_LIMB(0x11e2ef3b3fb8744)), + P(233,CNST_LIMB(0x63fb9aeb1fdcd759),CNST_LIMB(0x119453808ca29c0)), + P(239,CNST_LIMB(0x64afaa4f437b2e0f),CNST_LIMB(0x112358e75d30336)), + P(241,CNST_LIMB(0xf010fef010fef011),CNST_LIMB(0x10fef010fef010f)), + P(251,CNST_LIMB(0x28cbfbeb9a020a33),CNST_LIMB(0x105197f7d734041)), + P(257,CNST_LIMB(0xff00ff00ff00ff01),CNST_LIMB(0xff00ff00ff00ff)), + P(263,CNST_LIMB(0xd624fd1470e99cb7),CNST_LIMB(0xf92fb2211855a8)), + P(269,CNST_LIMB(0x8fb3ddbd6205b5c5),CNST_LIMB(0xf3a0d52cba8723)), + P(271,CNST_LIMB(0xd57da36ca27acdef),CNST_LIMB(0xf1d48bcee0d399)), + P(277,CNST_LIMB(0xee70c03b25e4463d),CNST_LIMB(0xec979118f3fc4d)), + P(281,CNST_LIMB(0xc5b1a6b80749cb29),CNST_LIMB(0xe939651fe2d8d3)), + P(283,CNST_LIMB(0x47768073c9b97113),CNST_LIMB(0xe79372e225fe30)), + P(293,CNST_LIMB(0x2591e94884ce32ad),CNST_LIMB(0xdfac1f74346c57)), + P(307,CNST_LIMB(0xf02806abc74be1fb),CNST_LIMB(0xd578e97c3f5fe5)), + P(311,CNST_LIMB(0x7ec3e8f3a7198487),CNST_LIMB(0xd2ba083b445250)), + P(313,CNST_LIMB(0x58550f8a39409d09),CNST_LIMB(0xd161543e28e502)), + P(317,CNST_LIMB(0xec9e48ae6f71de15),CNST_LIMB(0xcebcf8bb5b4169)), + P(331,CNST_LIMB(0x2ff3a018bfce8063),CNST_LIMB(0xc5fe740317f9d0)), + P(337,CNST_LIMB(0x7f9ec3fcf61fe7b1),CNST_LIMB(0xc2780613c0309e)), + P(347,CNST_LIMB(0x89f5abe570e046d3),CNST_LIMB(0xbcdd535db1cc5b)), + P(349,CNST_LIMB(0xda971b23f1545af5),CNST_LIMB(0xbbc8408cd63069)), + P(353,CNST_LIMB(0x79d5f00b9a7862a1),CNST_LIMB(0xb9a7862a0ff465)), + P(359,CNST_LIMB(0x4dba1df32a128a57),CNST_LIMB(0xb68d31340e4307)), + P(367,CNST_LIMB(0x87530217b7747d8f),CNST_LIMB(0xb2927c29da5519)), + P(373,CNST_LIMB(0x30baae53bb5e06dd),CNST_LIMB(0xafb321a1496fdf)), + P(379,CNST_LIMB(0xee70206c12e9b5b3),CNST_LIMB(0xaceb0f891e6551)), + P(383,CNST_LIMB(0xcdde9462ec9dbe7f),CNST_LIMB(0xab1cbdd3e2970f)), + P(389,CNST_LIMB(0xafb64b05ec41cf4d),CNST_LIMB(0xa87917088e262b)), + P(397,CNST_LIMB(0x2944ff5aec02945),CNST_LIMB(0xa513fd6bb00a51)), + P(401,CNST_LIMB(0x2cb033128382df71),CNST_LIMB(0xa36e71a2cb0331)), + P(409,CNST_LIMB(0x1ccacc0c84b1c2a9),CNST_LIMB(0xa03c1688732b30)), + P(419,CNST_LIMB(0x19a93db575eb3a0b),CNST_LIMB(0x9c69169b30446d)), + P(421,CNST_LIMB(0xcebeef94fa86fe2d),CNST_LIMB(0x9baade8e4a2f6e)), + P(431,CNST_LIMB(0x6faa77fb3f8df54f),CNST_LIMB(0x980e4156201301)), + P(433,CNST_LIMB(0x68a58af00975a751),CNST_LIMB(0x975a750ff68a58)), + P(439,CNST_LIMB(0xd56e36d0c3efac07),CNST_LIMB(0x9548e4979e0829)), + P(443,CNST_LIMB(0xd8b44c47a8299b73),CNST_LIMB(0x93efd1c50e726b)), + P(449,CNST_LIMB(0x2d9ccaf9ba70e41),CNST_LIMB(0x91f5bcb8bb02d9)), + P(457,CNST_LIMB(0x985e1c023d9e879),CNST_LIMB(0x8f67a1e3fdc261)), + P(461,CNST_LIMB(0x2a343316c494d305),CNST_LIMB(0x8e2917e0e702c6)), + P(463,CNST_LIMB(0x70cb7916ab67652f),CNST_LIMB(0x8d8be33f95d715)), + P(467,CNST_LIMB(0xd398f132fb10fe5b),CNST_LIMB(0x8c55841c815ed5)), + P(479,CNST_LIMB(0x6f2a38a6bf54fa1f),CNST_LIMB(0x88d180cd3a4133)), + P(487,CNST_LIMB(0x211df689b98f81d7),CNST_LIMB(0x869222b1acf1ce)), + P(491,CNST_LIMB(0xe994983e90f1ec3),CNST_LIMB(0x85797b917765ab)), + P(499,CNST_LIMB(0xad671e44bed87f3b),CNST_LIMB(0x8355ace3c897db)), + P(503,CNST_LIMB(0xf9623a0516e70fc7),CNST_LIMB(0x824a4e60b3262b)), + P(509,CNST_LIMB(0x4b7129be9dece355),CNST_LIMB(0x80c121b28bd1ba)), + P(521,CNST_LIMB(0x190f3b7473f62c39),CNST_LIMB(0x7dc9f3397d4c29)), + P(523,CNST_LIMB(0x63dacc9aad46f9a3),CNST_LIMB(0x7d4ece8fe88139)), + P(541,CNST_LIMB(0xc1108fda24e8d035),CNST_LIMB(0x79237d65bcce50)), + P(547,CNST_LIMB(0xb77578472319bd8b),CNST_LIMB(0x77cf53c5f7936c)), + P(557,CNST_LIMB(0x473d20a1c7ed9da5),CNST_LIMB(0x75a8accfbdd11e)), + P(563,CNST_LIMB(0xfbe85af0fea2c8fb),CNST_LIMB(0x7467ac557c228e)), + P(569,CNST_LIMB(0x58a1f7e6ce0f4c09),CNST_LIMB(0x732d70ed8db8e9)), + P(571,CNST_LIMB(0x1a00e58c544986f3),CNST_LIMB(0x72c62a24c3797f)), + P(577,CNST_LIMB(0x7194a17f55a10dc1),CNST_LIMB(0x7194a17f55a10d)), + P(587,CNST_LIMB(0x7084944785e33763),CNST_LIMB(0x6fa549b41da7e7)), + P(593,CNST_LIMB(0xba10679bd84886b1),CNST_LIMB(0x6e8419e6f61221)), + P(599,CNST_LIMB(0xebe9c6bb31260967),CNST_LIMB(0x6d68b5356c207b)), + P(601,CNST_LIMB(0x97a3fe4bd1ff25e9),CNST_LIMB(0x6d0b803685c01b)), + P(607,CNST_LIMB(0x6c6388395b84d99f),CNST_LIMB(0x6bf790a8b2d207)), + P(613,CNST_LIMB(0x8c51da6a1335df6d),CNST_LIMB(0x6ae907ef4b96c2)), + P(617,CNST_LIMB(0x46f3234475d5add9),CNST_LIMB(0x6a37991a23aead)), + P(619,CNST_LIMB(0x905605ca3c619a43),CNST_LIMB(0x69dfbdd4295b66)), + P(631,CNST_LIMB(0xcee8dff304767747),CNST_LIMB(0x67dc4c45c8033e)), + P(641,CNST_LIMB(0xff99c27f00663d81),CNST_LIMB(0x663d80ff99c27f)), + P(643,CNST_LIMB(0xacca407f671ddc2b),CNST_LIMB(0x65ec17e3559948)), + P(647,CNST_LIMB(0xe71298bac1e12337),CNST_LIMB(0x654ac835cfba5c)), + P(653,CNST_LIMB(0xfa1e94309cd09045),CNST_LIMB(0x645c854ae10772)), + P(659,CNST_LIMB(0xbebccb8e91496b9b),CNST_LIMB(0x6372990e5f901f)), + P(661,CNST_LIMB(0x312fa30cc7d7b8bd),CNST_LIMB(0x6325913c07beef)), + P(673,CNST_LIMB(0x6160ff9e9f006161),CNST_LIMB(0x6160ff9e9f0061)), + P(677,CNST_LIMB(0x6b03673b5e28152d),CNST_LIMB(0x60cdb520e5e88e)), + P(683,CNST_LIMB(0xfe802ffa00bfe803),CNST_LIMB(0x5ff4017fd005ff)), + P(691,CNST_LIMB(0xe66fe25c9e907c7b),CNST_LIMB(0x5ed79e31a4dccd)), + P(701,CNST_LIMB(0x3f8b236c76528895),CNST_LIMB(0x5d7d42d48ac5ef)), + P(709,CNST_LIMB(0xf6f923bf01ce2c0d),CNST_LIMB(0x5c6f35ccba5028)), + P(719,CNST_LIMB(0x6c3d3d98bed7c42f),CNST_LIMB(0x5b2618ec6ad0a5)), + P(727,CNST_LIMB(0x30981efcd4b010e7),CNST_LIMB(0x5a2553748e42e7)), + P(733,CNST_LIMB(0x6f691fc81ebbe575),CNST_LIMB(0x59686cf744cd5b)), + P(739,CNST_LIMB(0xb10480ddb47b52cb),CNST_LIMB(0x58ae97bab79976)), + P(743,CNST_LIMB(0x74cd59ed64f3f0d7),CNST_LIMB(0x58345f1876865f)), + P(751,CNST_LIMB(0x105cb81316d6c0f),CNST_LIMB(0x5743d5bb24795a)), + P(757,CNST_LIMB(0x9be64c6d91c1195d),CNST_LIMB(0x5692c4d1ab74ab)), + P(761,CNST_LIMB(0x71b3f945a27b1f49),CNST_LIMB(0x561e46a4d5f337)), + P(769,CNST_LIMB(0x77d80d50e508fd01),CNST_LIMB(0x5538ed06533997)), + P(773,CNST_LIMB(0xa5eb778e133551cd),CNST_LIMB(0x54c807f2c0bec2)), + P(787,CNST_LIMB(0x18657d3c2d8a3f1b),CNST_LIMB(0x5345efbc572d36)), + P(797,CNST_LIMB(0x2e40e220c34ad735),CNST_LIMB(0x523a758f941345)), + P(809,CNST_LIMB(0xa76593c70a714919),CNST_LIMB(0x5102370f816c89)), + P(811,CNST_LIMB(0x1eef452124eea383),CNST_LIMB(0x50cf129fb94acf)), + P(821,CNST_LIMB(0x38206dc242ba771d),CNST_LIMB(0x4fd31941cafdd1)), + P(823,CNST_LIMB(0x4cd4c35807772287),CNST_LIMB(0x4fa1704aa75945)), + P(827,CNST_LIMB(0x83de917d5e69ddf3),CNST_LIMB(0x4f3ed6d45a63ad)), + P(829,CNST_LIMB(0x882ef0403b4a6c15),CNST_LIMB(0x4f0de57154ebed)), + P(839,CNST_LIMB(0xf8fb6c51c606b677),CNST_LIMB(0x4e1cae8815f811)), + P(853,CNST_LIMB(0xb4abaac446d3e1fd),CNST_LIMB(0x4cd47ba5f6ff19)), + P(857,CNST_LIMB(0xa9f83bbe484a14e9),CNST_LIMB(0x4c78ae734df709)), + P(859,CNST_LIMB(0xbebbc0d1ce874d3),CNST_LIMB(0x4c4b19ed85cfb8)), + P(863,CNST_LIMB(0xbd418eaf0473189f),CNST_LIMB(0x4bf093221d1218)), + P(877,CNST_LIMB(0x44e3af6f372b7e65),CNST_LIMB(0x4aba3c21dc633f)), + P(881,CNST_LIMB(0xc87fdace4f9e5d91),CNST_LIMB(0x4a6360c344de00)), + P(883,CNST_LIMB(0xec93479c446bd9bb),CNST_LIMB(0x4a383e9f74d68a)), + P(887,CNST_LIMB(0xdac4d592e777c647),CNST_LIMB(0x49e28fbabb9940)), + P(907,CNST_LIMB(0xa63ea8c8f61f0c23),CNST_LIMB(0x48417b57c78cd7)), + P(911,CNST_LIMB(0xe476062ea5cbbb6f),CNST_LIMB(0x47f043713f3a2b)), + P(919,CNST_LIMB(0xdf68761c69daac27),CNST_LIMB(0x474ff2a10281cf)), + P(929,CNST_LIMB(0xb813d737637aa061),CNST_LIMB(0x468b6f9a978f91)), + P(937,CNST_LIMB(0xa3a77aac1fb15099),CNST_LIMB(0x45f13f1caff2e2)), + P(941,CNST_LIMB(0x17f0c3e0712c5825),CNST_LIMB(0x45a5228cec23e9)), + P(947,CNST_LIMB(0xfd912a70ff30637b),CNST_LIMB(0x45342c556c66b9)), + P(953,CNST_LIMB(0xfbb3b5dc01131289),CNST_LIMB(0x44c4a23feeced7)), + P(967,CNST_LIMB(0x856d560a0f5acdf7),CNST_LIMB(0x43c5c20d3c9fe6)), + P(971,CNST_LIMB(0x96472f314d3f89e3),CNST_LIMB(0x437e494b239798)), + P(977,CNST_LIMB(0xa76f5c7ed2253531),CNST_LIMB(0x43142d118e47cb)), + P(983,CNST_LIMB(0x816eae7c7bf69fe7),CNST_LIMB(0x42ab5c73a13458)), + P(991,CNST_LIMB(0xb6a2bea4cfb1781f),CNST_LIMB(0x4221950db0f3db)), + P(997,CNST_LIMB(0xa3900c53318e81ed),CNST_LIMB(0x41bbb2f80a4553)), + P(1009,CNST_LIMB(0x60aa7f5d9f148d11),CNST_LIMB(0x40f391612c6680)), + P(1013,CNST_LIMB(0x6be8c0102c7a505d),CNST_LIMB(0x40b1e94173fefd)), + P(1019,CNST_LIMB(0x8ff3f0ed28728f33),CNST_LIMB(0x4050647d9d0445)), + P(1021,CNST_LIMB(0x680e0a87e5ec7155),CNST_LIMB(0x4030241b144f3b)), + P(1031,CNST_LIMB(0xbbf70fa49fe829b7),CNST_LIMB(0x3f90c2ab542cb1)), + P(1033,CNST_LIMB(0xd69d1e7b6a50ca39),CNST_LIMB(0x3f71412d59f597)), + P(1039,CNST_LIMB(0x1a1e0f46b6d26aef),CNST_LIMB(0x3f137701b98841)), + P(1049,CNST_LIMB(0x7429f9a7a8251829),CNST_LIMB(0x3e79886b60e278)), + P(1051,CNST_LIMB(0xd9c2219d1b863613),CNST_LIMB(0x3e5b1916a7181d)), + P(1061,CNST_LIMB(0x91406c1820d077ad),CNST_LIMB(0x3dc4a50968f524)), + P(1063,CNST_LIMB(0x521f4ec02e3d2b97),CNST_LIMB(0x3da6e4c9550321)), + P(1069,CNST_LIMB(0xbb8283b63dc8eba5),CNST_LIMB(0x3d4e4f06f1def3)), + P(1087,CNST_LIMB(0x431eda153229ebbf),CNST_LIMB(0x3c4a6bdd24f9a4)), + P(1091,CNST_LIMB(0xaf0bf78d7e01686b),CNST_LIMB(0x3c11d54b525c73)), + P(1093,CNST_LIMB(0xa9ced0742c086e8d),CNST_LIMB(0x3bf5b1c5721065)), + P(1097,CNST_LIMB(0xc26458ad9f632df9),CNST_LIMB(0x3bbdb9862f23b4)), + P(1103,CNST_LIMB(0xbbff1255dff892af),CNST_LIMB(0x3b6a8801db5440)), + P(1109,CNST_LIMB(0xcbd49a333f04d8fd),CNST_LIMB(0x3b183cf0fed886)), + P(1117,CNST_LIMB(0xec84ed6f9cfdeff5),CNST_LIMB(0x3aabe394bdc3f4)), + P(1123,CNST_LIMB(0x97980cc40bda9d4b),CNST_LIMB(0x3a5ba3e76156da)), + P(1129,CNST_LIMB(0x777f34d524f5cbd9),CNST_LIMB(0x3a0c3e953378db)), + P(1151,CNST_LIMB(0x2797051d94cbbb7f),CNST_LIMB(0x38f03561320b1e)), + P(1153,CNST_LIMB(0xea769051b4f43b81),CNST_LIMB(0x38d6ecaef5908a)), + P(1163,CNST_LIMB(0xce7910f3034d4323),CNST_LIMB(0x3859cf221e6069)), + P(1171,CNST_LIMB(0x92791d1374f5b99b),CNST_LIMB(0x37f7415dc9588a)), + P(1181,CNST_LIMB(0x89a5645cc68ea1b5),CNST_LIMB(0x377df0d3902626)), + P(1187,CNST_LIMB(0x5f8aacf796c0cf0b),CNST_LIMB(0x373622136907fa)), + P(1193,CNST_LIMB(0xf2e90a15e33edf99),CNST_LIMB(0x36ef0c3b39b92f)), + P(1201,CNST_LIMB(0x8e99e5feb897c451),CNST_LIMB(0x36915f47d55e6d)), + P(1213,CNST_LIMB(0xaca2eda38fb91695),CNST_LIMB(0x36072cf3f866fd)), + P(1217,CNST_LIMB(0x5d9b737be5ea8b41),CNST_LIMB(0x35d9b737be5ea8)), + P(1223,CNST_LIMB(0x4aefe1db93fd7cf7),CNST_LIMB(0x35961559cc81c7)), + P(1229,CNST_LIMB(0xa0994ef20b3f8805),CNST_LIMB(0x35531c897a4592)), + P(1231,CNST_LIMB(0x103890bda912822f),CNST_LIMB(0x353ceebd3e98a4)), + P(1237,CNST_LIMB(0xb441659d13a9147d),CNST_LIMB(0x34fad381585e5e)), + P(1249,CNST_LIMB(0x1e2134440c4c3f21),CNST_LIMB(0x347884d1103130)), + P(1259,CNST_LIMB(0x263a27727a6883c3),CNST_LIMB(0x340dd3ac39bf56)), + P(1277,CNST_LIMB(0x78e221472ab33855),CNST_LIMB(0x3351fdfecc140c)), + P(1279,CNST_LIMB(0x95eac88e82e6faff),CNST_LIMB(0x333d72b089b524)), + P(1283,CNST_LIMB(0xf66c258317be8dab),CNST_LIMB(0x33148d44d6b261)), + P(1289,CNST_LIMB(0x9ee202c7cb91939),CNST_LIMB(0x32d7aef8412458)), + P(1291,CNST_LIMB(0x8d2fca1042a09ea3),CNST_LIMB(0x32c3850e79c0f1)), + P(1297,CNST_LIMB(0x82779c856d8b8bf1),CNST_LIMB(0x328766d59048a2)), + P(1301,CNST_LIMB(0x3879361cba8a223d),CNST_LIMB(0x325fa18cb11833)), + P(1303,CNST_LIMB(0xf23f43639c3182a7),CNST_LIMB(0x324bd659327e22)), + P(1307,CNST_LIMB(0xa03868fc474bcd13),CNST_LIMB(0x32246e784360f4)), + P(1319,CNST_LIMB(0x651e78b8c5311a97),CNST_LIMB(0x31afa5f1a33a08)), + P(1321,CNST_LIMB(0x8ffce639c00c6719),CNST_LIMB(0x319c63ff398e70)), + P(1327,CNST_LIMB(0xf7b460754b0b61cf),CNST_LIMB(0x3162f7519a86a7)), + P(1361,CNST_LIMB(0x7b03f3359b8e63b1),CNST_LIMB(0x30271fc9d3fc3c)), + P(1367,CNST_LIMB(0xa55c5326041eb667),CNST_LIMB(0x2ff104ae89750b)), + P(1373,CNST_LIMB(0x647f88ab896a76f5),CNST_LIMB(0x2fbb62a236d133)), + P(1381,CNST_LIMB(0x8fd971434a55a46d),CNST_LIMB(0x2f74997d2070b4)), + P(1399,CNST_LIMB(0x9fbf969958046447),CNST_LIMB(0x2ed84aa8b6fce3)), + P(1409,CNST_LIMB(0x9986feba69be3a81),CNST_LIMB(0x2e832df7a46dbd)), + P(1423,CNST_LIMB(0xa668b3e6d053796f),CNST_LIMB(0x2e0e0846857cab)), + P(1427,CNST_LIMB(0x97694e6589f4e09b),CNST_LIMB(0x2decfbdfb55ee6)), + P(1429,CNST_LIMB(0x37890c00b7721dbd),CNST_LIMB(0x2ddc876f3ff488)), + P(1433,CNST_LIMB(0x5ac094a235f37ea9),CNST_LIMB(0x2dbbc1d4c482c4)), + P(1439,CNST_LIMB(0x31cff775f2d5d65f),CNST_LIMB(0x2d8af0e0de0556)), + P(1447,CNST_LIMB(0xddad8e6b36505217),CNST_LIMB(0x2d4a7b7d14b30a)), + P(1451,CNST_LIMB(0x5a27df897062cd03),CNST_LIMB(0x2d2a85073bcf4e)), + P(1453,CNST_LIMB(0xe2396fe0fdb5a625),CNST_LIMB(0x2d1a9ab13e8be4)), + P(1459,CNST_LIMB(0xb352a4957e82317b),CNST_LIMB(0x2ceb1eb4b9fd8b)), + P(1471,CNST_LIMB(0xd8ab3f2c60c2ea3f),CNST_LIMB(0x2c8d503a79794c)), + P(1481,CNST_LIMB(0x6893f702f0452479),CNST_LIMB(0x2c404d708784ed)), + P(1483,CNST_LIMB(0x9686fdc182acf7e3),CNST_LIMB(0x2c31066315ec52)), + P(1487,CNST_LIMB(0x6854037173dce12f),CNST_LIMB(0x2c1297d80f2664)), + P(1489,CNST_LIMB(0x7f0ded1685c27331),CNST_LIMB(0x2c037044c55f6b)), + P(1493,CNST_LIMB(0xeeda72e1fe490b7d),CNST_LIMB(0x2be5404cd13086)), + P(1499,CNST_LIMB(0x9e7bfc959a8e6e53),CNST_LIMB(0x2bb845adaf0cce)), + P(1511,CNST_LIMB(0x49b314d6d4753dd7),CNST_LIMB(0x2b5f62c639f16d)), + P(1523,CNST_LIMB(0x2e8f8c5ac4aa1b3b),CNST_LIMB(0x2b07e6734f2b88)), + P(1531,CNST_LIMB(0xb8ef723481163d33),CNST_LIMB(0x2ace569d8342b7)), + P(1543,CNST_LIMB(0x6a2ec96a594287b7),CNST_LIMB(0x2a791d5dbd4dcf)), + P(1549,CNST_LIMB(0xdba41c6d13aab8c5),CNST_LIMB(0x2a4eff8113017c)), + P(1553,CNST_LIMB(0xc2adbe648dc3aaf1),CNST_LIMB(0x2a3319e156df32)), + P(1559,CNST_LIMB(0x87a2bade565f91a7),CNST_LIMB(0x2a0986286526ea)), + P(1567,CNST_LIMB(0x4d6fe8798c01f5df),CNST_LIMB(0x29d29551d91e39)), + P(1571,CNST_LIMB(0x3791310c8c23d98b),CNST_LIMB(0x29b7529e109f0a)), + P(1579,CNST_LIMB(0xf80e446b01228883),CNST_LIMB(0x298137491ea465)), + P(1583,CNST_LIMB(0x9aed1436fbf500cf),CNST_LIMB(0x29665e1eb9f9da)), + P(1597,CNST_LIMB(0x7839b54cc8b24115),CNST_LIMB(0x2909752e019a5e)), + P(1601,CNST_LIMB(0xc128c646ad0309c1),CNST_LIMB(0x28ef35e2e5efb0)), + P(1607,CNST_LIMB(0x14de631624a3c377),CNST_LIMB(0x28c815aa4b8278)), + P(1609,CNST_LIMB(0x3f7b9fe68b0ecbf9),CNST_LIMB(0x28bb1b867199da)), + P(1613,CNST_LIMB(0x284ffd75ec00a285),CNST_LIMB(0x28a13ff5d7b002)), + P(1619,CNST_LIMB(0x37803cb80dea2ddb),CNST_LIMB(0x287ab3f173e755)), + P(1621,CNST_LIMB(0x86b63f7c9ac4c6fd),CNST_LIMB(0x286dead67713bd)), + P(1627,CNST_LIMB(0x8b6851d1bd99b9d3),CNST_LIMB(0x2847bfcda6503e)), + P(1637,CNST_LIMB(0xb62fda77ca343b6d),CNST_LIMB(0x2808c1ea6b4777)), + P(1657,CNST_LIMB(0x1f0dc009e34383c9),CNST_LIMB(0x278d0e0f23ff61)), + P(1663,CNST_LIMB(0x496dc21ddd35b97f),CNST_LIMB(0x2768863c093c7f)), + P(1667,CNST_LIMB(0xb0e96ce17090f82b),CNST_LIMB(0x27505115a73ca8)), + P(1669,CNST_LIMB(0xaadf05acdd7d024d),CNST_LIMB(0x274441a61dc1b9)), + P(1693,CNST_LIMB(0xcb138196746eafb5),CNST_LIMB(0x26b5c166113cf0)), + P(1697,CNST_LIMB(0x347f523736755d61),CNST_LIMB(0x269e65ad07b18e)), + P(1699,CNST_LIMB(0xd14a48a051f7dd0b),CNST_LIMB(0x2692c25f877560)), + P(1709,CNST_LIMB(0x474d71b1ce914d25),CNST_LIMB(0x2658fa7523cd11)), + P(1721,CNST_LIMB(0x386063f5e28c1f89),CNST_LIMB(0x26148710cf0f9e)), + P(1723,CNST_LIMB(0x1db7325e32d04e73),CNST_LIMB(0x2609363b22524f)), + P(1733,CNST_LIMB(0xfef748d3893b880d),CNST_LIMB(0x25d1065a1c1122)), + P(1741,CNST_LIMB(0x2f3351506e935605),CNST_LIMB(0x25a48a382b863f)), + P(1747,CNST_LIMB(0x7a3637fa2376415b),CNST_LIMB(0x25837190eccdbc)), + P(1753,CNST_LIMB(0x4ac525d2baa21969),CNST_LIMB(0x256292e95d510c)), + P(1759,CNST_LIMB(0x3a11c16b42cd351f),CNST_LIMB(0x2541eda98d068c)), + P(1777,CNST_LIMB(0x6c7abde0049c2a11),CNST_LIMB(0x24e15087fed8f5)), + P(1783,CNST_LIMB(0x54dad0303e069ac7),CNST_LIMB(0x24c18b20979e5d)), + P(1787,CNST_LIMB(0xebf1ac9fdfe91433),CNST_LIMB(0x24ac7b336de0c5)), + P(1789,CNST_LIMB(0xfafdda8237cec655),CNST_LIMB(0x24a1fc478c60bb)), + P(1801,CNST_LIMB(0xdce3ff6e71ffb739),CNST_LIMB(0x2463801231c009)), + P(1811,CNST_LIMB(0xbed5737d6286db1b),CNST_LIMB(0x24300fd506ed33)), + P(1823,CNST_LIMB(0xe479e431fe08b4df),CNST_LIMB(0x23f314a494da81)), + P(1831,CNST_LIMB(0x9dd9b0dd7742f897),CNST_LIMB(0x23cadedd2fad3a)), + P(1847,CNST_LIMB(0x8f09d7402c5a5e87),CNST_LIMB(0x237b7ed2664a03)), + P(1861,CNST_LIMB(0x9216d5c4d958738d),CNST_LIMB(0x23372967dbaf1d)), + P(1867,CNST_LIMB(0xb3139ba11d34ca63),CNST_LIMB(0x231a308a371f20)), + P(1871,CNST_LIMB(0x47d54f7ed644afaf),CNST_LIMB(0x2306fa63e1e600)), + P(1873,CNST_LIMB(0x92a81d85cf11a1b1),CNST_LIMB(0x22fd6731575684)), + P(1877,CNST_LIMB(0x754b26533253bdfd),CNST_LIMB(0x22ea507805749c)), + P(1879,CNST_LIMB(0xbbe0efc980bfd467),CNST_LIMB(0x22e0cce8b3d720)), + P(1889,CNST_LIMB(0xc0d8d594f024dca1),CNST_LIMB(0x22b1887857d161)), + P(1901,CNST_LIMB(0x8238d43bcaac1a65),CNST_LIMB(0x227977fcc49cc0)), + P(1907,CNST_LIMB(0x27779c1fae6175bb),CNST_LIMB(0x225db37b5e5f4f)), + P(1913,CNST_LIMB(0xa746ca9af708b2c9),CNST_LIMB(0x22421b91322ed6)), + P(1931,CNST_LIMB(0x93f3cd9f389be823),CNST_LIMB(0x21f05b35f52102)), + P(1933,CNST_LIMB(0x5cb4a4c04c489345),CNST_LIMB(0x21e75de5c70d60)), + P(1949,CNST_LIMB(0xbf6047743e85b6b5),CNST_LIMB(0x21a01d6c19be96)), + P(1951,CNST_LIMB(0x61c147831563545f),CNST_LIMB(0x21974a6615c81a)), + P(1973,CNST_LIMB(0xedb47c0ae62dee9d),CNST_LIMB(0x213767697cf36a)), + P(1979,CNST_LIMB(0xa3824386673a573),CNST_LIMB(0x211d9f7fad35f1)), + P(1987,CNST_LIMB(0xa4a77d19e575a0eb),CNST_LIMB(0x20fb7d9dd36c18)), + P(1993,CNST_LIMB(0xa2bee045e066c279),CNST_LIMB(0x20e2123d661e0e)), + P(1997,CNST_LIMB(0xc23618de8ab43d05),CNST_LIMB(0x20d135b66ae990)), + P(1999,CNST_LIMB(0x266b515216cb9f2f),CNST_LIMB(0x20c8cded4d7a8e)), + P(2003,CNST_LIMB(0xe279edd9e9c2e85b),CNST_LIMB(0x20b80b3f43ddbf)), + P(2011,CNST_LIMB(0xd0c591c221dc9c53),CNST_LIMB(0x2096b9180f46a6)), + P(2017,CNST_LIMB(0x6da8ee9c9ee7c21),CNST_LIMB(0x207de7e28de5da)), + P(2027,CNST_LIMB(0x9dfebcaf4c27e8c3),CNST_LIMB(0x2054dec8cf1fb3)), + P(2029,CNST_LIMB(0x49aeff9f19dd6de5),CNST_LIMB(0x204cb630b3aab5)), + P(2039,CNST_LIMB(0x86976a57a296e9c7),CNST_LIMB(0x202428adc37beb)), + P(2053,CNST_LIMB(0xa3b9abf4872b84cd),CNST_LIMB(0x1fec0c7834def4)), + P(2063,CNST_LIMB(0x34fca6483895e6ef),CNST_LIMB(0x1fc46fae98a1d0)), + P(2069,CNST_LIMB(0x34b5a333988f873d),CNST_LIMB(0x1facda430ff619)), + P(2081,CNST_LIMB(0xd9dd4f19b5f17be1),CNST_LIMB(0x1f7e17dd8e15e5)), + P(2083,CNST_LIMB(0xb935b507fd0ce78b),CNST_LIMB(0x1f765a3556a4ee)), + P(2087,CNST_LIMB(0xb450f5540660e797),CNST_LIMB(0x1f66ea49d802f1)), + P(2089,CNST_LIMB(0x63ff82831ffc1419),CNST_LIMB(0x1f5f3800faf9c0)), + P(2099,CNST_LIMB(0x8992f718c22a32fb),CNST_LIMB(0x1f38f4e6c0f1f9)), + P(2111,CNST_LIMB(0x5f3253ad0d37e7bf),CNST_LIMB(0x1f0b8546752578)), + P(2113,CNST_LIMB(0x7c0ffe0fc007c1),CNST_LIMB(0x1f03ff83f001f0)), + P(2129,CNST_LIMB(0x4d8ebadc0c0640b1),CNST_LIMB(0x1ec853b0a3883c)), + P(2131,CNST_LIMB(0xe2729af831037bdb),CNST_LIMB(0x1ec0ee573723eb)), + P(2137,CNST_LIMB(0xb8f64bf30feebfe9),CNST_LIMB(0x1eaad38e6f6894)), + P(2141,CNST_LIMB(0xda93124b544c0bf5),CNST_LIMB(0x1e9c28a765fe53)), + P(2143,CNST_LIMB(0x9cf7ff0b593c539f),CNST_LIMB(0x1e94d8758c2003)), + P(2153,CNST_LIMB(0xd6bd8861fa0e07d9),CNST_LIMB(0x1e707ba8f65e68)), + P(2161,CNST_LIMB(0x5cfe75c0bd8ab891),CNST_LIMB(0x1e53a2a68f574e)), + P(2179,CNST_LIMB(0x43e808757c2e862b),CNST_LIMB(0x1e1380a56b438d)), + P(2203,CNST_LIMB(0x90caa96d595c9d93),CNST_LIMB(0x1dbf9f513a3802)), + P(2207,CNST_LIMB(0x8fd550625d07135f),CNST_LIMB(0x1db1d1d58bc600)), + P(2213,CNST_LIMB(0x76b010a86e209f2d),CNST_LIMB(0x1d9d358f53de38)), + P(2221,CNST_LIMB(0xecc0426447769b25),CNST_LIMB(0x1d81e6df6165c7)), + P(2237,CNST_LIMB(0xe381339caabe3295),CNST_LIMB(0x1d4bdf7fd40e30)), + P(2239,CNST_LIMB(0xd1b190a2d0c7673f),CNST_LIMB(0x1d452c7a1c958d)), + P(2243,CNST_LIMB(0xc3bce3cf26b0e7eb),CNST_LIMB(0x1d37cf9b902659)), + P(2251,CNST_LIMB(0x5f87e76f56c61ce3),CNST_LIMB(0x1d1d3a5791e97b)), + P(2267,CNST_LIMB(0xc06c6857a124b353),CNST_LIMB(0x1ce89fe6b47416)), + P(2269,CNST_LIMB(0x38c040fcba630f75),CNST_LIMB(0x1ce219f3235071)), + P(2273,CNST_LIMB(0xd078bc4fbd533b21),CNST_LIMB(0x1cd516dcf92139)), + P(2281,CNST_LIMB(0xde8e15c5dd354f59),CNST_LIMB(0x1cbb33bd1c2b8b)), + P(2287,CNST_LIMB(0xca61d53d7414260f),CNST_LIMB(0x1ca7e7d2546688)), + P(2293,CNST_LIMB(0xb56bf5ba8eae635d),CNST_LIMB(0x1c94b5c1b3dbd3)), + P(2297,CNST_LIMB(0x44a72cb0fb6e3949),CNST_LIMB(0x1c87f7f9c241c1)), + P(2309,CNST_LIMB(0x879839a714f45bcd),CNST_LIMB(0x1c6202706c35a9)), + P(2311,CNST_LIMB(0x2a8994fde5314b7),CNST_LIMB(0x1c5bb8a9437632)), + P(2333,CNST_LIMB(0xb971920cf2b90135),CNST_LIMB(0x1c174343b4111e)), + P(2339,CNST_LIMB(0x8a8fd0b7df9a6e8b),CNST_LIMB(0x1c04d0d3e46b42)), + P(2341,CNST_LIMB(0xb31f9a84c1c6eaad),CNST_LIMB(0x1bfeb00fbf4308)), + P(2347,CNST_LIMB(0x92293b02823c6d83),CNST_LIMB(0x1bec5dce0b202d)), + P(2351,CNST_LIMB(0xeee77ff20fe5ddcf),CNST_LIMB(0x1be03444620037)), + P(2357,CNST_LIMB(0xe1ea0f6c496c11d),CNST_LIMB(0x1bce09c66f6fc3)), + P(2371,CNST_LIMB(0xfdf2d3d6f88ccb6b),CNST_LIMB(0x1ba40228d02b30)), + P(2377,CNST_LIMB(0xfa9d74a3457738f9),CNST_LIMB(0x1b9225b1cf8919)), + P(2381,CNST_LIMB(0xefc3ca3db71a5785),CNST_LIMB(0x1b864a2ff3f53f)), + P(2383,CNST_LIMB(0x8e2071718d0d6daf),CNST_LIMB(0x1b80604150e49b)), + P(2389,CNST_LIMB(0xbc0fdbfeb6cfabfd),CNST_LIMB(0x1b6eb1aaeaacf3)), + P(2393,CNST_LIMB(0x1eeab613e5e5aee9),CNST_LIMB(0x1b62f48da3c8cc)), + P(2399,CNST_LIMB(0x2d2388e90e9e929f),CNST_LIMB(0x1b516babe96092)), + P(2411,CNST_LIMB(0x81dbafba588ddb43),CNST_LIMB(0x1b2e9cef1e0c87)), + P(2417,CNST_LIMB(0x52eebc51c4799791),CNST_LIMB(0x1b1d56bedc849b)), + P(2423,CNST_LIMB(0x1c6bc4693b45a047),CNST_LIMB(0x1b0c267546aec0)), + P(2437,CNST_LIMB(0x6eee0974498874d),CNST_LIMB(0x1ae45f62024fa0)), + P(2441,CNST_LIMB(0xd85b7377a9953cb9),CNST_LIMB(0x1ad917631b5f54)), + P(2447,CNST_LIMB(0x4b6df412d4caf56f),CNST_LIMB(0x1ac83d18cb608f)), + P(2459,CNST_LIMB(0x6b8afbbb4a053493),CNST_LIMB(0x1aa6c7ad8c063f)), + P(2467,CNST_LIMB(0xcc5299c96ac7720b),CNST_LIMB(0x1a90a7b1228e2a)), + P(2473,CNST_LIMB(0xadce84b5c710aa99),CNST_LIMB(0x1a8027c03ba059)), + P(2477,CNST_LIMB(0x9d673f5aa3804225),CNST_LIMB(0x1a7533289deb89)), + P(2503,CNST_LIMB(0xe6541268efbce7f7),CNST_LIMB(0x1a2ed7ce16b49f)), + P(2521,CNST_LIMB(0xfcf41e76cf5be669),CNST_LIMB(0x19fefc0a279a73)), + P(2531,CNST_LIMB(0x5c3eb5dc31c383cb),CNST_LIMB(0x19e4b0cd873b5f)), + P(2539,CNST_LIMB(0x301832d11d8ad6c3),CNST_LIMB(0x19cfcdfd60e514)), + P(2543,CNST_LIMB(0x2e9c0942f1ce450f),CNST_LIMB(0x19c56932d66c85)), + P(2549,CNST_LIMB(0x97f3f2be37a39a5d),CNST_LIMB(0x19b5e1ab6fc7c2)), + P(2551,CNST_LIMB(0xe8b7d8a9654187c7),CNST_LIMB(0x19b0b8a62f2a73)), + P(2557,CNST_LIMB(0xb5d024d7da5b1b55),CNST_LIMB(0x19a149fc98942c)), + P(2579,CNST_LIMB(0xb8ba9d6e7ae3501b),CNST_LIMB(0x1969517ec25b85)), + P(2591,CNST_LIMB(0xf50865f71b90f1df),CNST_LIMB(0x194b3083360ba8)), + P(2593,CNST_LIMB(0x739c1682847df9e1),CNST_LIMB(0x194631f4bebdc1)), + P(2609,CNST_LIMB(0xc470a4d842b90ed1),CNST_LIMB(0x191e84127268fd)), + P(2617,CNST_LIMB(0x1fb1be11698cc409),CNST_LIMB(0x190adbb543984f)), + P(2621,CNST_LIMB(0xd8d5512a7cd35d15),CNST_LIMB(0x1901130bd18200)), + P(2633,CNST_LIMB(0xa5496821723e07f9),CNST_LIMB(0x18e3e6b889ac94)), + P(2647,CNST_LIMB(0xbcc8c6d7abaa8167),CNST_LIMB(0x18c233420e1ec1)), + P(2657,CNST_LIMB(0x52c396c95eb619a1),CNST_LIMB(0x18aa5872d92bd6)), + P(2659,CNST_LIMB(0x6eb7e380878ec74b),CNST_LIMB(0x18a5989945ccf9)), + P(2663,CNST_LIMB(0x3d5513b504537157),CNST_LIMB(0x189c1e60b57f60)), + P(2671,CNST_LIMB(0x314391f8862e948f),CNST_LIMB(0x18893fbc8690b9)), + P(2677,CNST_LIMB(0xdc0b17cfcd81f5dd),CNST_LIMB(0x187b2bb3e1041c)), + P(2683,CNST_LIMB(0x2f6bea3ec89044b3),CNST_LIMB(0x186d27c9cdcfb8)), + P(2687,CNST_LIMB(0xce13a05869f1b57f),CNST_LIMB(0x1863d8bf4f2c1c)), + P(2689,CNST_LIMB(0x7593474e8ace3581),CNST_LIMB(0x185f33e2ad7593)), + P(2693,CNST_LIMB(0x7fc329295a05e4d),CNST_LIMB(0x1855ef75973e13)), + P(2699,CNST_LIMB(0xb05377cba4908d23),CNST_LIMB(0x1848160153f134)), + P(2707,CNST_LIMB(0xe7b2131a628aa39b),CNST_LIMB(0x1835b72e6f0656)), + P(2711,CNST_LIMB(0x9031dbed7de01527),CNST_LIMB(0x182c922d83eb39)), + P(2713,CNST_LIMB(0x76844b1c670aa9a9),CNST_LIMB(0x18280243c0365a)), + P(2719,CNST_LIMB(0x6a03f4533b08915f),CNST_LIMB(0x181a5cd5898e73)), + P(2729,CNST_LIMB(0x1dbca579db0a3999),CNST_LIMB(0x1803c0961773aa)), + P(2731,CNST_LIMB(0x2ffe800bffa003),CNST_LIMB(0x17ff4005ffd001)), + P(2741,CNST_LIMB(0x478ab1a3e936139d),CNST_LIMB(0x17e8d670433edb)), + P(2749,CNST_LIMB(0x66e722bc4c5cc095),CNST_LIMB(0x17d7066cf4bb5d)), + P(2753,CNST_LIMB(0x7a8f63c717278541),CNST_LIMB(0x17ce285b806b1f)), + P(2767,CNST_LIMB(0xdf6eee24d292bc2f),CNST_LIMB(0x17af52cdf27e02)), + P(2777,CNST_LIMB(0x9fc20d17237dd569),CNST_LIMB(0x17997d47d01039)), + P(2789,CNST_LIMB(0xcdf9932356bda2ed),CNST_LIMB(0x177f7ec2c6d0ba)), + P(2791,CNST_LIMB(0x97b5e332e80f68d7),CNST_LIMB(0x177b2f3cd00756)), + P(2797,CNST_LIMB(0x46eee26fd875e2e5),CNST_LIMB(0x176e4a22f692a0)), + P(2801,CNST_LIMB(0x3548a8e65157a611),CNST_LIMB(0x1765b94271e11b)), + P(2803,CNST_LIMB(0xc288d03be9b71e3b),CNST_LIMB(0x1761732b044ae4)), + P(2819,CNST_LIMB(0x8151186db38937ab),CNST_LIMB(0x173f7a5300a2bc)), + P(2833,CNST_LIMB(0x7800b910895a45f1),CNST_LIMB(0x1722112b48be1f)), + P(2837,CNST_LIMB(0xaee0b024182eec3d),CNST_LIMB(0x1719b7a16eb843)), + P(2843,CNST_LIMB(0x96323eda173b5713),CNST_LIMB(0x170d3c99cc5052)), + P(2851,CNST_LIMB(0xed0dbd03ae77c8b),CNST_LIMB(0x16fcad7aed3bb6)), + P(2857,CNST_LIMB(0xf73800b7828dc119),CNST_LIMB(0x16f051b8231ffd)), + P(2861,CNST_LIMB(0x1b61715ec22b7ca5),CNST_LIMB(0x16e81beae20643)), + P(2879,CNST_LIMB(0xa8533a991ead64bf),CNST_LIMB(0x16c3721584c1d8)), + P(2887,CNST_LIMB(0x7f6c7290e46c2e77),CNST_LIMB(0x16b34c2ba09663)), + P(2897,CNST_LIMB(0x6325e8d907b01db1),CNST_LIMB(0x169f3ce292ddcd)), + P(2903,CNST_LIMB(0x28909f70152a1067),CNST_LIMB(0x169344b2220a0d)), + P(2909,CNST_LIMB(0xea7077af0997a0f5),CNST_LIMB(0x1687592593c1b1)), + P(2917,CNST_LIMB(0x7e605cad10c32e6d),CNST_LIMB(0x167787f1418ec9)), + P(2927,CNST_LIMB(0x471b33570635b38f),CNST_LIMB(0x1663e190395ff2)), + P(2939,CNST_LIMB(0xab559fa997a61bb3),CNST_LIMB(0x164c7a4b6eb5b3)), + P(2953,CNST_LIMB(0xad4bdae562bddab9),CNST_LIMB(0x16316a061182fd)), + P(2957,CNST_LIMB(0x55e1b2f2ed62f45),CNST_LIMB(0x1629ba914584e4)), + P(2963,CNST_LIMB(0x3cd328b1a2dca9b),CNST_LIMB(0x161e3d57de21b2)), + P(2969,CNST_LIMB(0xd28f4e08733218a9),CNST_LIMB(0x1612cc01b977f0)), + P(2971,CNST_LIMB(0xb6800b077f186293),CNST_LIMB(0x160efe30c525ff)), + P(2999,CNST_LIMB(0x6fbd138c3fd9c207),CNST_LIMB(0x15da45249ec5de)), + P(3001,CNST_LIMB(0xb117ccd12ae88a89),CNST_LIMB(0x15d68ab4acff92)), + P(3011,CNST_LIMB(0x2f1a1a044046bceb),CNST_LIMB(0x15c3f989d1eb15)), + P(3019,CNST_LIMB(0x548aba0b060541e3),CNST_LIMB(0x15b535ad11b8f0)), + P(3023,CNST_LIMB(0xcf4e808cea111b2f),CNST_LIMB(0x15addb3f424ec1)), + P(3037,CNST_LIMB(0xdbec1b4fa855a475),CNST_LIMB(0x159445cb91be6b)), + P(3041,CNST_LIMB(0xe3f794eb600d7821),CNST_LIMB(0x158d0199771e63)), + P(3049,CNST_LIMB(0x34fae0d9a11f7c59),CNST_LIMB(0x157e87d9b69e04)), + P(3061,CNST_LIMB(0xf006b0ccbbac085d),CNST_LIMB(0x1568f58bc01ac3)), + P(3067,CNST_LIMB(0x3f45076dc3114733),CNST_LIMB(0x155e3c993fda9b)), + P(3079,CNST_LIMB(0xeef49bfa58a1a1b7),CNST_LIMB(0x1548eacc5e1e6e)), + P(3083,CNST_LIMB(0x12c4218bea691fa3),CNST_LIMB(0x1541d8f91ba6a7)), + P(3089,CNST_LIMB(0xbc7504e3bd5e64f1),CNST_LIMB(0x153747060cc340)), + P(3109,CNST_LIMB(0x4ee21c292bb92fad),CNST_LIMB(0x1514569f93f7c4)), + P(3119,CNST_LIMB(0x34338b7327a4bacf),CNST_LIMB(0x150309705d3d79)), + P(3121,CNST_LIMB(0x3fe5c0833d6fccd1),CNST_LIMB(0x14ff97020cf5bf)), + P(3137,CNST_LIMB(0xb1e70743535203c1),CNST_LIMB(0x14e42c114cf47e)), + P(3163,CNST_LIMB(0xefbb5dcdfb4e43d3),CNST_LIMB(0x14b835bdcb6447)), + P(3167,CNST_LIMB(0xca68467ca5394f9f),CNST_LIMB(0x14b182b53a9ab7)), + P(3169,CNST_LIMB(0x8c51c081408b97a1),CNST_LIMB(0x14ae2ad094a3d3)), + P(3181,CNST_LIMB(0x3275a899dfa5dd65),CNST_LIMB(0x149a320ea59f96)), + P(3187,CNST_LIMB(0x9e674cb62e1b78bb),CNST_LIMB(0x1490441de1a2fb)), + P(3191,CNST_LIMB(0xa37ff5bb2a998d47),CNST_LIMB(0x1489aacce57200)), + P(3203,CNST_LIMB(0x792a999db131a22b),CNST_LIMB(0x1475f82ad6ff99)), + P(3209,CNST_LIMB(0x1b48841bc30d29b9),CNST_LIMB(0x146c2cfe53204f)), + P(3217,CNST_LIMB(0xf06721d2011d3471),CNST_LIMB(0x145f2ca490d4a1)), + P(3221,CNST_LIMB(0x93fd2386dff85ebd),CNST_LIMB(0x1458b2aae0ec87)), + P(3229,CNST_LIMB(0x4ce72f54c07ed9b5),CNST_LIMB(0x144bcb0a3a3150)), + P(3251,CNST_LIMB(0xd6d0fd3e71dd827b),CNST_LIMB(0x1428a1e65441d4)), + P(3253,CNST_LIMB(0x856405fb1eed819d),CNST_LIMB(0x142575a6c210d7)), + P(3257,CNST_LIMB(0x8ea8aceb7c443989),CNST_LIMB(0x141f2025ba5c46)), + P(3259,CNST_LIMB(0x34a13026f62e5873),CNST_LIMB(0x141bf6e35420fd)), + P(3271,CNST_LIMB(0x1eea0208ec0af4f7),CNST_LIMB(0x1409141d1d313a)), + P(3299,CNST_LIMB(0x63679853cea598cb),CNST_LIMB(0x13dd8bc19c3513)), + P(3301,CNST_LIMB(0xc30b3ebd61f2d0ed),CNST_LIMB(0x13da76f714dc8f)), + P(3307,CNST_LIMB(0x7eb9037bc7f43bc3),CNST_LIMB(0x13d13e50f8f49e)), + P(3313,CNST_LIMB(0xa583e6f6ce016411),CNST_LIMB(0x13c80e37ca3819)), + P(3319,CNST_LIMB(0xf1938d895f1a74c7),CNST_LIMB(0x13bee69fa99ccf)), + P(3323,CNST_LIMB(0x80cf1491c1e81e33),CNST_LIMB(0x13b8d0ede55835)), + P(3329,CNST_LIMB(0x3c0f12886ba8f301),CNST_LIMB(0x13afb7680bb054)), + P(3331,CNST_LIMB(0xe4b786e0dfcc5ab),CNST_LIMB(0x13acb0c3841c96)), + P(3343,CNST_LIMB(0x672684c93f2d41ef),CNST_LIMB(0x139a9c5f434fde)), + P(3347,CNST_LIMB(0xe00757badb35c51b),CNST_LIMB(0x13949cf33a0d9d)), + P(3359,CNST_LIMB(0xd6d84afe66472edf),CNST_LIMB(0x1382b4a00c31b0)), + P(3361,CNST_LIMB(0xfbbc0eedcbbfb6e1),CNST_LIMB(0x137fbbc0eedcbb)), + P(3371,CNST_LIMB(0x250f43aa08a84983),CNST_LIMB(0x1370ecf047b069)), + P(3373,CNST_LIMB(0x4400e927b1acaa5),CNST_LIMB(0x136df9790e3155)), + P(3389,CNST_LIMB(0x56572be34b9d3215),CNST_LIMB(0x13567dd8defd5b)), + P(3391,CNST_LIMB(0x87964ef7781c62bf),CNST_LIMB(0x13539261fdbc34)), + P(3407,CNST_LIMB(0x29ed84051c06e9af),CNST_LIMB(0x133c564292d28a)), + P(3413,CNST_LIMB(0xb00acd11ed3f87fd),CNST_LIMB(0x1333ae178d6388)), + P(3433,CNST_LIMB(0x6307881744152d9),CNST_LIMB(0x13170ad00d1fd7)), + P(3449,CNST_LIMB(0x7a786459f5c1ccc9),CNST_LIMB(0x13005f01db0947)), + P(3457,CNST_LIMB(0x1308125d74563281),CNST_LIMB(0x12f51d40342210)), + P(3461,CNST_LIMB(0x395310a480b3e34d),CNST_LIMB(0x12ef815e4ed950)), + P(3463,CNST_LIMB(0x35985baa8b202837),CNST_LIMB(0x12ecb4abccd827)), + P(3467,CNST_LIMB(0x96304a6e052b3223),CNST_LIMB(0x12e71dc1d3d820)), + P(3469,CNST_LIMB(0xbd8265fc9af8fd45),CNST_LIMB(0x12e45389a16495)), + P(3491,CNST_LIMB(0x1b6d0b383ec58e0b),CNST_LIMB(0x12c5d9226476cc)), + P(3499,CNST_LIMB(0xc21a7c3b68b28503),CNST_LIMB(0x12badc391156fd)), + P(3511,CNST_LIMB(0x236fa180fbfd6007),CNST_LIMB(0x12aa78e412f522)), + P(3517,CNST_LIMB(0xc42accd440ed9595),CNST_LIMB(0x12a251f5f47fd1)), + P(3527,CNST_LIMB(0x7acf7128236ba3f7),CNST_LIMB(0x1294cb85c53534)), + P(3529,CNST_LIMB(0xf909367a987b9c79),CNST_LIMB(0x12921963beb65e)), + P(3533,CNST_LIMB(0xb64efb252bfba705),CNST_LIMB(0x128cb777c69ca8)), + P(3539,CNST_LIMB(0x980d4f5a7e4cd25b),CNST_LIMB(0x1284aa6cf07294)), + P(3541,CNST_LIMB(0xe1ecc4ef27b0c37d),CNST_LIMB(0x1281fcf6ac7f87)), + P(3547,CNST_LIMB(0x9111aebb81d72653),CNST_LIMB(0x1279f937367db9)), + P(3557,CNST_LIMB(0x8951f985cb2c67ed),CNST_LIMB(0x126cad0488be94)), + P(3559,CNST_LIMB(0xc439d4fc54e0b5d7),CNST_LIMB(0x126a06794646a2)), + P(3571,CNST_LIMB(0xe857bf31896d533b),CNST_LIMB(0x125a2f2bcd3e95)), + P(3581,CNST_LIMB(0xb614bb4cb5023755),CNST_LIMB(0x124d108389e6b1)), + P(3583,CNST_LIMB(0x938a89e5473bf1ff),CNST_LIMB(0x124a73083771ac)), + P(3593,CNST_LIMB(0xeac481aca34de039),CNST_LIMB(0x123d6acda0620a)), + P(3607,CNST_LIMB(0x14b961badf4809a7),CNST_LIMB(0x122b4b2917eafd)), + P(3613,CNST_LIMB(0x76784fecba352435),CNST_LIMB(0x122391bfce1e2f)), + P(3617,CNST_LIMB(0xefa689bb58aef5e1),CNST_LIMB(0x121e6f1ea579f2)), + P(3623,CNST_LIMB(0xb2b2c4db9c3a8197),CNST_LIMB(0x1216c09e471568)), + P(3631,CNST_LIMB(0x2503bc992279f8cf),CNST_LIMB(0x120c8cb9d93909)), + P(3637,CNST_LIMB(0xd2ab9aec5ca1541d),CNST_LIMB(0x1204ed58e64ef9)), + P(3643,CNST_LIMB(0x3e78ba1460f99af3),CNST_LIMB(0x11fd546578f00c)), + P(3659,CNST_LIMB(0xa01426572cfcb63),CNST_LIMB(0x11e9310b8b4c9c)), + P(3671,CNST_LIMB(0xbea857968f3cbd67),CNST_LIMB(0x11da3405db9911)), + P(3673,CNST_LIMB(0x78db213eefe659e9),CNST_LIMB(0x11d7b6f4eb055d)), + P(3677,CNST_LIMB(0x963e8541a74d35f5),CNST_LIMB(0x11d2bee748c145)), + P(3691,CNST_LIMB(0x9e22d152776f2e43),CNST_LIMB(0x11c1706ddce7a7)), + P(3697,CNST_LIMB(0x5d10d39d1e1f291),CNST_LIMB(0x11ba0fed2a4f14)), + P(3701,CNST_LIMB(0x374468dccaced1dd),CNST_LIMB(0x11b528538ed64a)), + P(3709,CNST_LIMB(0x8d145c7d110c5ad5),CNST_LIMB(0x11ab61404242ac)), + P(3719,CNST_LIMB(0x3251a39f5acb5737),CNST_LIMB(0x119f378ce81d2f)), + P(3727,CNST_LIMB(0xa66e50171443506f),CNST_LIMB(0x1195889ece79da)), + P(3733,CNST_LIMB(0x124f69ad91dd4cbd),CNST_LIMB(0x118e4c65387077)), + P(3739,CNST_LIMB(0xec24f8f2a61a2793),CNST_LIMB(0x1187161d70e725)), + P(3761,CNST_LIMB(0xb472148e656b7a51),CNST_LIMB(0x116cd6d1c85239)), + P(3767,CNST_LIMB(0xadf9570e1142f07),CNST_LIMB(0x1165bbe7ce86b1)), + P(3769,CNST_LIMB(0x89bf33b065119789),CNST_LIMB(0x11635ee344ce36)), + P(3779,CNST_LIMB(0x8f0149803cb291eb),CNST_LIMB(0x11579767b6d679)), + P(3793,CNST_LIMB(0x8334b63afd190a31),CNST_LIMB(0x114734711e2b54)), + P(3797,CNST_LIMB(0x920908d50d6aba7d),CNST_LIMB(0x11428b90147f05)), + P(3803,CNST_LIMB(0x57d8b018c5a33d53),CNST_LIMB(0x113b92f3021636)), + P(3821,CNST_LIMB(0xea1773092dc27ee5),CNST_LIMB(0x1126cabc886884)), + P(3823,CNST_LIMB(0xcae5f38b7bf2e00f),CNST_LIMB(0x11247eb1b85976)), + P(3833,CNST_LIMB(0x2bd02df34f695349),CNST_LIMB(0x11190bb01efd65)), + P(3847,CNST_LIMB(0xddfecd5be62e2eb7),CNST_LIMB(0x11091de0fd679c)), + P(3851,CNST_LIMB(0xdbf849ebec96c4a3),CNST_LIMB(0x1104963c7e4e0b)), + P(3853,CNST_LIMB(0xda31d4d0187357c5),CNST_LIMB(0x110253516420b0)), + P(3863,CNST_LIMB(0xe34e21cc2d5418a7),CNST_LIMB(0x10f70db7c41797)), + P(3877,CNST_LIMB(0x68ca5137a9e574ad),CNST_LIMB(0x10e75ee2bf9ecd)), + P(3881,CNST_LIMB(0x3eaa0d0f804bfd19),CNST_LIMB(0x10e2e91c6e0676)), + P(3889,CNST_LIMB(0x554fb753cc20e9d1),CNST_LIMB(0x10da049b9d428d)), + P(3907,CNST_LIMB(0x797afcca1300756b),CNST_LIMB(0x10c6248fe3b1a2)), + P(3911,CNST_LIMB(0x8b8d950b52eeea77),CNST_LIMB(0x10c1c03ed690eb)), + P(3917,CNST_LIMB(0xfb6cd166acabc185),CNST_LIMB(0x10bb2e1379e3a2)), + P(3919,CNST_LIMB(0x4eb6c5ed9437a7af),CNST_LIMB(0x10b8fe7f61228e)), + P(3923,CNST_LIMB(0xd1eddbd91b790cdb),CNST_LIMB(0x10b4a10d60a4f7)), + P(3929,CNST_LIMB(0x93d714ea4d8948e9),CNST_LIMB(0x10ae192681ec0f)), + P(3931,CNST_LIMB(0x3ca13ed8145188d3),CNST_LIMB(0x10abecfbe5b0ae)), + P(3943,CNST_LIMB(0x829086016da89c57),CNST_LIMB(0x109eefd568b96d)), + P(3947,CNST_LIMB(0xd7da1f432124a543),CNST_LIMB(0x109a9ff178b40c)), + P(3967,CNST_LIMB(0x7ead5581632fb07f),CNST_LIMB(0x108531e22f9ff9)), + P(3989,CNST_LIMB(0x35443837f63ec3bd),CNST_LIMB(0x106ddec1af4417)), + P(4001,CNST_LIMB(0x89e2b200e5519461),CNST_LIMB(0x10614174a4911d)), + P(4003,CNST_LIMB(0xe9ae44f0b7289c0b),CNST_LIMB(0x105f291f0448e7)), + P(4007,CNST_LIMB(0x94387a277b9fa817),CNST_LIMB(0x105afa0ef32891)), + P(4013,CNST_LIMB(0xc84f1a58abfc2c25),CNST_LIMB(0x1054b777bd2530)), + P(4019,CNST_LIMB(0x71101d8e3c83377b),CNST_LIMB(0x104e79a97fb69e)), + P(4021,CNST_LIMB(0xc024abe5c50ba69d),CNST_LIMB(0x104c661eafd845)), + P(4027,CNST_LIMB(0x15de4eb365a65d73),CNST_LIMB(0x10462ea939c933)), + P(4049,CNST_LIMB(0x9ed28a76bcca931),CNST_LIMB(0x102f8baa442836)), + P(4051,CNST_LIMB(0x816bffbf4a00205b),CNST_LIMB(0x102d7ff7e94004)), + P(4057,CNST_LIMB(0x1f5c71543d558069),CNST_LIMB(0x10275ff9f13c02)), + P(4073,CNST_LIMB(0xf25c64d0ec53b859),CNST_LIMB(0x1017213fcbb4d3)), + P(4079,CNST_LIMB(0x96c02c2ef1e0ff0f),CNST_LIMB(0x101112234579d1)), + P(4091,CNST_LIMB(0x19a804816870a333),CNST_LIMB(0x100501907d271c)), + P(4093,CNST_LIMB(0x6de49add0971c555),CNST_LIMB(0x100300901b0510)), + P(4099,CNST_LIMB(0x528087e684c71aab),CNST_LIMB(0xffd008fe5050f)), + P(4111,CNST_LIMB(0xa94152c269bcdeef),CNST_LIMB(0xff10e02dd5084)), + P(4127,CNST_LIMB(0x379450a3c2b6bdf),CNST_LIMB(0xfe13b9c80c67f)), + P(4129,CNST_LIMB(0xd2cd38bafe5373e1),CNST_LIMB(0xfdf4384be37ad)), + P(4133,CNST_LIMB(0xc29df2bea71d8bad),CNST_LIMB(0xfdb54cbe8766e)), + P(4139,CNST_LIMB(0xc15862775f302e83),CNST_LIMB(0xfd5725ca6ff32)), + P(4153,CNST_LIMB(0x1016af2fe55ede09),CNST_LIMB(0xfc7c84684c6fb)), + P(4157,CNST_LIMB(0x3d26dbd9d1910715),CNST_LIMB(0xfc3e5265dbaa8)), + P(4159,CNST_LIMB(0x621dab2dfaf3dfbf),CNST_LIMB(0xfc1f44e0cae12)), + P(4177,CNST_LIMB(0xb6f1d7ac287338b1),CNST_LIMB(0xfb0921c50a7af)), + P(4201,CNST_LIMB(0x8d9e9f0c3f9e7fd9),CNST_LIMB(0xf999fd70cbc6b)), + P(4211,CNST_LIMB(0x60a93f8762e914bb),CNST_LIMB(0xf9023fd5339d0)), + P(4217,CNST_LIMB(0xb14371f247c159c9),CNST_LIMB(0xf8a78ce671475)), + P(4219,CNST_LIMB(0x6dd3b484471d4eb3),CNST_LIMB(0xf8895fee86574)), + P(4229,CNST_LIMB(0xcd172f4701c1684d),CNST_LIMB(0xf7f2ecb084b10)), + P(4231,CNST_LIMB(0x372e686ed8bb537),CNST_LIMB(0xf7d4eb7d10c29)), + P(4241,CNST_LIMB(0xbc07f7ca65c5b071),CNST_LIMB(0xf73f52277a3c3)), + P(4243,CNST_LIMB(0xab2b6170c3f78d9b),CNST_LIMB(0xf7217c598961c)), + P(4253,CNST_LIMB(0xf3d74f461fe6f5b5),CNST_LIMB(0xf68cbb1448f42)), + P(4259,CNST_LIMB(0xdbc13f4b31f3230b),CNST_LIMB(0xf633d0276e4c5)), + P(4261,CNST_LIMB(0xd1420716e3f1572d),CNST_LIMB(0xf6163ac20ec79)), + P(4271,CNST_LIMB(0xd5be2fd4d805464f),CNST_LIMB(0xf582ba2bc16c6)), + P(4273,CNST_LIMB(0xc68b97c136943851),CNST_LIMB(0xf5654f43290a0)), + P(4283,CNST_LIMB(0x9e27918af7cfb473),CNST_LIMB(0xf4d2a23810bc6)), + P(4289,CNST_LIMB(0x5ec8ab6c36ac7f41),CNST_LIMB(0xf47af4d6a2f27)), + P(4297,CNST_LIMB(0x964076331dd90979),CNST_LIMB(0xf4066f2b6e652)), + P(4327,CNST_LIMB(0x30198eff77b002d7),CNST_LIMB(0xf2555048e3a92)), + P(4337,CNST_LIMB(0x3af7cb9583ece011),CNST_LIMB(0xf1c64588a5bf6)), + P(4339,CNST_LIMB(0x34ce06f643d9883b),CNST_LIMB(0xf1a9be09cb411)), + P(4349,CNST_LIMB(0x79f767e528708c55),CNST_LIMB(0xf11b7d5259d39)), + P(4357,CNST_LIMB(0x185332d2ef2313cd),CNST_LIMB(0xf0aa284e7f802)), + P(4363,CNST_LIMB(0x43b611b84c8332a3),CNST_LIMB(0xf0556e5e3b7f2)), + P(4373,CNST_LIMB(0xc2e215e4f43bb63d),CNST_LIMB(0xefc8bcbc808e5)), + P(4391,CNST_LIMB(0xf94b9dd22ce44e97),CNST_LIMB(0xeecd1a690efbb)), + P(4397,CNST_LIMB(0xd895834a1db166a5),CNST_LIMB(0xee79aed6d65f2)), + P(4409,CNST_LIMB(0x347d2f16d19b8d09),CNST_LIMB(0xedd386114d83a)), + P(4421,CNST_LIMB(0x1b54d4dc45b7d98d),CNST_LIMB(0xed2e44366e5e2)), + P(4423,CNST_LIMB(0x117ac30d9a044877),CNST_LIMB(0xed12cf8e17f64)), + P(4441,CNST_LIMB(0xe10b78a67a526e9),CNST_LIMB(0xec1cd284b2b2d)), + P(4447,CNST_LIMB(0x92da68a818688a9f),CNST_LIMB(0xebcb44cadda1e)), + P(4451,CNST_LIMB(0xcf2b6c87f741f84b),CNST_LIMB(0xeb9505943771d)), + P(4457,CNST_LIMB(0xd264f9bd41e18ed9),CNST_LIMB(0xeb43d57efeadc)), + P(4463,CNST_LIMB(0x733cbeaa97166d8f),CNST_LIMB(0xeaf2dd4c00b03)), + P(4481,CNST_LIMB(0xc9f475b021d22e81),CNST_LIMB(0xea0141c1ba6a6)), + P(4483,CNST_LIMB(0x731f76f2ec4c852b),CNST_LIMB(0xe9e68805f05a7)), + P(4493,CNST_LIMB(0xdaf6f0c978f69945),CNST_LIMB(0xe96142b87e431)), + P(4507,CNST_LIMB(0x749c8ad20c61ec93),CNST_LIMB(0xe8a7acd811b8c)), + P(4513,CNST_LIMB(0x9307ff8bd3c1261),CNST_LIMB(0xe8587db3e001d)), + P(4517,CNST_LIMB(0x334a69fb5a486e2d),CNST_LIMB(0xe823d186d44dc)), + P(4519,CNST_LIMB(0x1f36c7bf31578617),CNST_LIMB(0xe8098463ee194)), + P(4523,CNST_LIMB(0x31ebbcc279ea6103),CNST_LIMB(0xe7d4fbfb3ee1d)), + P(4547,CNST_LIMB(0x42e2aad119f466eb),CNST_LIMB(0xe69bba6981ffa)), + P(4549,CNST_LIMB(0x106ec05a0ab1450d),CNST_LIMB(0xe681c5cf7d707)), + P(4561,CNST_LIMB(0xb1b38db92a99e731),CNST_LIMB(0xe5e684930e334)), + P(4567,CNST_LIMB(0x784ae377e67071e7),CNST_LIMB(0xe5993247dc92d)), + P(4583,CNST_LIMB(0x3e9e1471ba6671d7),CNST_LIMB(0xe4cbfee201016)), + P(4591,CNST_LIMB(0x82c29b59d4d73d0f),CNST_LIMB(0xe465ee7daf979)), + P(4597,CNST_LIMB(0xc23dd07128b5525d),CNST_LIMB(0xe4199de07af5c)), + P(4603,CNST_LIMB(0x4d4e5ce0e9245133),CNST_LIMB(0xe3cd8031d4f40)), + P(4621,CNST_LIMB(0xc8fd1057c09f8cc5),CNST_LIMB(0xe2ea56c157eb2)), + P(4637,CNST_LIMB(0xea1516e94f394035),CNST_LIMB(0xe221e5d4d3c73)), + P(4639,CNST_LIMB(0xb5e3319c564ee9df),CNST_LIMB(0xe208f09a841c7)), + P(4643,CNST_LIMB(0x126a69f90d822d8b),CNST_LIMB(0xe1d716a945161)), + P(4649,CNST_LIMB(0x501ed6348857aa19),CNST_LIMB(0xe18c78ec8fd4d)), + P(4651,CNST_LIMB(0xde344a324eee1c83),CNST_LIMB(0xe173a4a162079)), + P(4657,CNST_LIMB(0x1dd9690cb2c406d1),CNST_LIMB(0xe1294881bb494)), + P(4663,CNST_LIMB(0x8d6c5178d5e4387),CNST_LIMB(0xe0df1d5f24661)), + P(4673,CNST_LIMB(0x4cea4050a3e8fdc1),CNST_LIMB(0xe063ec7f50b1e)), + P(4679,CNST_LIMB(0xc114a06acc83f777),CNST_LIMB(0xe01a4313dc53d)), + P(4691,CNST_LIMB(0x20b060ebc0ea01db),CNST_LIMB(0xdf8780f47c350)), + P(4703,CNST_LIMB(0xfe50045acb78c99f),CNST_LIMB(0xdef57e8eb9666)), + P(4721,CNST_LIMB(0x291a68705b196e91),CNST_LIMB(0xde1bdf3f63d46)), + P(4723,CNST_LIMB(0xc1042c724273e2bb),CNST_LIMB(0xde03cb5099809)), + P(4729,CNST_LIMB(0x2cee680bb165b7c9),CNST_LIMB(0xddbbaecc84bc9)), + P(4733,CNST_LIMB(0xfd2ff9f12e0776d5),CNST_LIMB(0xdd8bb5ca73db6)), + P(4751,CNST_LIMB(0x166a5da63af2cc6f),CNST_LIMB(0xdcb4d529a6e07)), + P(4759,CNST_LIMB(0xedd16a5930408d27),CNST_LIMB(0xdc55da73dea60)), + P(4783,CNST_LIMB(0x2adf30c26528844f),CNST_LIMB(0xdb3ad2585011f)), + P(4787,CNST_LIMB(0x9a48d6572b5eec7b),CNST_LIMB(0xdb0becf636a79)), + P(4789,CNST_LIMB(0x6e8bf2877503cb9d),CNST_LIMB(0xdaf481ca6fefb)), + P(4793,CNST_LIMB(0xea27a191a7045389),CNST_LIMB(0xdac5ba7565dae)), + P(4799,CNST_LIMB(0x6eb091f34dd45d3f),CNST_LIMB(0xda7fb4e419d19)), + P(4801,CNST_LIMB(0xdc8a6cabb2937d41),CNST_LIMB(0xda6867a88d327)), + P(4813,CNST_LIMB(0xbc2f04f254922a05),CNST_LIMB(0xd9dd005f50b02)), + P(4817,CNST_LIMB(0x41431f4d6eb38631),CNST_LIMB(0xd9aeb01f763f7)), + P(4831,CNST_LIMB(0x7bd717435a08291f),CNST_LIMB(0xd90d31dd5804a)), + P(4861,CNST_LIMB(0x4232df9c91fc1a55),CNST_LIMB(0xd7b6453358f31)), + P(4871,CNST_LIMB(0xa4651e1d5382eab7),CNST_LIMB(0xd744e69d900e4)), + P(4877,CNST_LIMB(0x7cfb5409de4cf3c5),CNST_LIMB(0xd7011a317260e)), + P(4889,CNST_LIMB(0xcdd636fb068b9929),CNST_LIMB(0xd67a0126e7c19)), + P(4903,CNST_LIMB(0xee8f95e740462c97),CNST_LIMB(0xd5dd39e775bd7)), + P(4909,CNST_LIMB(0x490f97b3a758b4a5),CNST_LIMB(0xd59a4f2990168)), + P(4919,CNST_LIMB(0x641431563c441287),CNST_LIMB(0xd52b24cb6269d)), + P(4931,CNST_LIMB(0xb743dad3ec45916b),CNST_LIMB(0xd4a6571da4f04)), + P(4933,CNST_LIMB(0x7b188be8f55c878d),CNST_LIMB(0xd49044eac6581)), + P(4937,CNST_LIMB(0xd805648b2ca54ef9),CNST_LIMB(0xd4642e40d1129)), + P(4943,CNST_LIMB(0x76dbe6eef60123af),CNST_LIMB(0xd4222e81fe723)), + P(4951,CNST_LIMB(0x3711525e6a9e8867),CNST_LIMB(0xd3ca6e8c89f41)), + P(4957,CNST_LIMB(0x85c2215cb383d8f5),CNST_LIMB(0xd388ce29d4edc)), + P(4967,CNST_LIMB(0xe58f554c89825857),CNST_LIMB(0xd31bc7b7d8013)), + P(4969,CNST_LIMB(0x8fbd3b17c01dacd9),CNST_LIMB(0xd306071c13fd5)), + P(4973,CNST_LIMB(0x4c8c39dc7aedee65),CNST_LIMB(0xd2da935479b1a)), + P(4987,CNST_LIMB(0x653ac6dda86cd3b3),CNST_LIMB(0xd2430aa043597)), + P(4993,CNST_LIMB(0xd61c6791a9c2c81),CNST_LIMB(0xd2025bc6c7db7)), + P(4999,CNST_LIMB(0xb627a30090354237),CNST_LIMB(0xd1c1d4ad1732b)), + P(5003,CNST_LIMB(0x83a89a539c527c23),CNST_LIMB(0xd196e5f46f8c8)), + P(5009,CNST_LIMB(0x28c8c09330e90d71),CNST_LIMB(0xd156a0c9293e8)), + P(5011,CNST_LIMB(0xee1178d27b1f029b),CNST_LIMB(0xd1413d26e0aee)), + P(5021,CNST_LIMB(0xcecc740b37860ab5),CNST_LIMB(0xd0d68c6a4128f)), + P(5023,CNST_LIMB(0x79736fde910c485f),CNST_LIMB(0xd0c142eaf3837)), + P(5039,CNST_LIMB(0x6873d51f2487234f),CNST_LIMB(0xd01792ab9d70d)), + P(5051,CNST_LIMB(0x2a112180614fb973),CNST_LIMB(0xcf990317775bc)), + P(5059,CNST_LIMB(0xcb04cea98508f4eb),CNST_LIMB(0xcf44f8c38790a)), + P(5077,CNST_LIMB(0xc2fcd2c527e28d7d),CNST_LIMB(0xce88d96d10e45)), + P(5081,CNST_LIMB(0x980203ee10393c69),CNST_LIMB(0xce5f39b07e906)), + P(5087,CNST_LIMB(0x3fa90a1d7d75681f),CNST_LIMB(0xce20e98148847)), + P(5099,CNST_LIMB(0xdbf3bfefef217cc3),CNST_LIMB(0xcda4b9c30ccd7)), + P(5101,CNST_LIMB(0x66a17fd3087b41e5),CNST_LIMB(0xcd9015ae32495)), + P(5107,CNST_LIMB(0x962195d496fbbd3b),CNST_LIMB(0xcd524244aca36)), + P(5113,CNST_LIMB(0xc705a86155443e49),CNST_LIMB(0xcd14940099cf6)), + P(5119,CNST_LIMB(0x3f298ee0be6febff),CNST_LIMB(0xccd70ac089a07)), + P(5147,CNST_LIMB(0xaa99b084e62fa613),CNST_LIMB(0xcbb9c535c4371)), + P(5153,CNST_LIMB(0x1f000cb7d0b46fe1),CNST_LIMB(0xcb7d0b46fe0ff)), + P(5167,CNST_LIMB(0x9ed7858637c9b2cf),CNST_LIMB(0xcaefe5d7135f4)), + P(5171,CNST_LIMB(0x4d871aaf27c106fb),CNST_LIMB(0xcac7b5f00f0cd)), + P(5179,CNST_LIMB(0x2e6a467cdc75a4f3),CNST_LIMB(0xca7785ceddbea)), + P(5189,CNST_LIMB(0xe9d938fb696dde8d),CNST_LIMB(0xca13a2a86e1db)), + P(5197,CNST_LIMB(0x40ec71b0b1554485),CNST_LIMB(0xc9c4009753007)), + P(5209,CNST_LIMB(0x3aae12f861e5f3e9),CNST_LIMB(0xc94d02e64bfab)), + P(5227,CNST_LIMB(0xa97565873959f843),CNST_LIMB(0xc89b8c9c875ef)), + P(5231,CNST_LIMB(0xb5a960c09fbca8f),CNST_LIMB(0xc87447737277e)), + P(5233,CNST_LIMB(0x463fe3d268012c91),CNST_LIMB(0xc860aaa2514e3)), + P(5237,CNST_LIMB(0xe59a6bd5f5ee1bdd),CNST_LIMB(0xc8397c813f1b9)), + P(5261,CNST_LIMB(0x6542e84d7775ce45),CNST_LIMB(0xc74fa805d6d56)), + P(5273,CNST_LIMB(0x8b6eef58fd9effa9),CNST_LIMB(0xc6db8a1f5cdfe)), + P(5279,CNST_LIMB(0x58993dbb9f98075f),CNST_LIMB(0xc6a1add9e2398)), + P(5281,CNST_LIMB(0x2997955a810acf61),CNST_LIMB(0xc68e6be826648)), + P(5297,CNST_LIMB(0x76e3d2f5077db451),CNST_LIMB(0xc5f4e25fc9df0)), + P(5303,CNST_LIMB(0xb37c1d2867e30907),CNST_LIMB(0xc5bb8bf2ad1cd)), + P(5309,CNST_LIMB(0x53ce6e09bd8d8695),CNST_LIMB(0xc58256b316ced)), + P(5323,CNST_LIMB(0x39db291ea2a6b0e3),CNST_LIMB(0xc4fd5ad917b5b)), + P(5333,CNST_LIMB(0xddd265ab9c58847d),CNST_LIMB(0xc49ecb3ea4d7a)), + P(5347,CNST_LIMB(0x5beca8562dddd0cb),CNST_LIMB(0xc41b00b7d950a)), + P(5351,CNST_LIMB(0xb69031c153ddbed7),CNST_LIMB(0xc3f57990b87a1)), + P(5381,CNST_LIMB(0xd03c2271b42a6fcd),CNST_LIMB(0xc2ddcb31250f8)), + P(5387,CNST_LIMB(0xcd6fd19e63e40ea3),CNST_LIMB(0xc2a63b3651432)), + P(5393,CNST_LIMB(0xf7687aa8e4fd7bf1),CNST_LIMB(0xc26ecae1db72e)), + P(5399,CNST_LIMB(0x649dfda112a272a7),CNST_LIMB(0xc2377a18c051e)), + P(5407,CNST_LIMB(0xecf7866a56d526df),CNST_LIMB(0xc1ede9efcec29)), + P(5413,CNST_LIMB(0x72bbf1cfdaebfead),CNST_LIMB(0xc1b6e258d13a0)), + P(5417,CNST_LIMB(0x55f6a48df7055719),CNST_LIMB(0xc19243f5399bb)), + P(5419,CNST_LIMB(0x80060bffcfa00183),CNST_LIMB(0xc17ff9f400305)), + P(5431,CNST_LIMB(0x8a104f309919b087),CNST_LIMB(0xc112865703b94)), + P(5437,CNST_LIMB(0x98fa7db7652f6a15),CNST_LIMB(0xc0dbfaea33225)), + P(5441,CNST_LIMB(0x5d7d1b3df70f7ac1),CNST_LIMB(0xc0b7af12ddfb9)), + P(5443,CNST_LIMB(0x16ab7b5e04cc1f6b),CNST_LIMB(0xc0a58e464462c)), + P(5449,CNST_LIMB(0x78a5bfd2e5ececf9),CNST_LIMB(0xc06f40512eef2)), + P(5471,CNST_LIMB(0x6506392e171d869f),CNST_LIMB(0xbfa9275a2b247)), + P(5477,CNST_LIMB(0xc3fc12e221ef146d),CNST_LIMB(0xbf7367402cdf0)), + P(5479,CNST_LIMB(0xf8aa132822c33657),CNST_LIMB(0xbf61833f4f921)), + P(5483,CNST_LIMB(0x894496574f536f43),CNST_LIMB(0xbf3dc543a74a1)), + P(5501,CNST_LIMB(0x8b2546b08fb4cbd5),CNST_LIMB(0xbe9d9302a7115)), + P(5503,CNST_LIMB(0x43bbb561bd1aa7f),CNST_LIMB(0xbe8bd6e051e01)), + P(5507,CNST_LIMB(0x2412c7cc4ea7a12b),CNST_LIMB(0xbe6868804d5a6)), + P(5519,CNST_LIMB(0x6f0bd406dd71696f),CNST_LIMB(0xbdfe6c4359f0e)), + P(5521,CNST_LIMB(0xad475c6988d54b71),CNST_LIMB(0xbdeccdb0b5c3a)), + P(5527,CNST_LIMB(0xd812e5d48dbbba27),CNST_LIMB(0xbdb8058ee429a)), + P(5531,CNST_LIMB(0x22aaca437ba04893),CNST_LIMB(0xbd94e5c1b371f)), + P(5557,CNST_LIMB(0xdba6ff1fecd5f09d),CNST_LIMB(0xbcb1d293b1af3)), + P(5563,CNST_LIMB(0x13016d3396286773),CNST_LIMB(0xbc7db8db0c1a5)), + P(5569,CNST_LIMB(0xc746494631bcfa41),CNST_LIMB(0xbc49bbdfd2662)), + P(5573,CNST_LIMB(0xd14888565bf6a10d),CNST_LIMB(0xbc2723240f402)), + P(5581,CNST_LIMB(0xc002ef885f0adf05),CNST_LIMB(0xbbe217c2b7c13)), + P(5591,CNST_LIMB(0xe5a04da7fee6ade7),CNST_LIMB(0xbb8c10aab27b2)), + P(5623,CNST_LIMB(0xc114ce5468593bc7),CNST_LIMB(0xba7ad528a7e79)), + P(5639,CNST_LIMB(0xbb6747dd7f577b7),CNST_LIMB(0xb9f3611b48c5e)), + P(5641,CNST_LIMB(0x395ce5a20f285839),CNST_LIMB(0xb9e2806e5e7c4)), + P(5647,CNST_LIMB(0x6eee8be66e8618ef),CNST_LIMB(0xb9aff0c4913fe)), + P(5651,CNST_LIMB(0x52acf64297f1241b),CNST_LIMB(0xb98e4aedd581c)), + P(5653,CNST_LIMB(0x361dcc48a364093d),CNST_LIMB(0xb97d7c94b7dc2)), + P(5657,CNST_LIMB(0x342d6f475d72e629),CNST_LIMB(0xb95be902d9d9e)), + P(5659,CNST_LIMB(0x5e978bd46410d413),CNST_LIMB(0xb94b23c872b90)), + P(5669,CNST_LIMB(0xcc3433d75ba015ad),CNST_LIMB(0xb8f77714d15a1)), + P(5683,CNST_LIMB(0x1c83b7628458d4fb),CNST_LIMB(0xb882d0beff6a1)), + P(5689,CNST_LIMB(0xf9ca45637e38f809),CNST_LIMB(0xb850ff9852703)), + P(5693,CNST_LIMB(0xcbed792ffaf6b115),CNST_LIMB(0xb82fd86db8806)), + P(5701,CNST_LIMB(0x9abd961d8c0e8c8d),CNST_LIMB(0xb7edadd32f76c)), + P(5711,CNST_LIMB(0xe69572fa659340af),CNST_LIMB(0xb79b3b4df3b7b)), + P(5717,CNST_LIMB(0x9187e7483a6436fd),CNST_LIMB(0xb769e6d59833f)), + P(5737,CNST_LIMB(0x1e9c726993bed9d9),CNST_LIMB(0xb6c636b5141ff)), + P(5741,CNST_LIMB(0x243554db91976365),CNST_LIMB(0xb6a59ceae8801)), + P(5743,CNST_LIMB(0x4d06ff994c0088f),CNST_LIMB(0xb6955461e38f7)), + P(5749,CNST_LIMB(0x25b76abcb74889dd),CNST_LIMB(0xb6648c2dc6bc2)), + P(5779,CNST_LIMB(0x3a409642893c779b),CNST_LIMB(0xb572282260209)), + P(5783,CNST_LIMB(0x8f8f620d8bc0c927),CNST_LIMB(0xb552072bde889)), + P(5791,CNST_LIMB(0x6f9f196b3369855f),CNST_LIMB(0xb511e7552f9c4)), + P(5801,CNST_LIMB(0x92a522bb0638ed99),CNST_LIMB(0xb4c1ff34a5c0e)), + P(5807,CNST_LIMB(0x96270f1efdd7004f),CNST_LIMB(0xb4922f58d4aa2)), + P(5813,CNST_LIMB(0xb4844b380fdaa79d),CNST_LIMB(0xb46278c16b967)), + P(5821,CNST_LIMB(0x108936aa5f9c1495),CNST_LIMB(0xb42301cd99b49)), + P(5827,CNST_LIMB(0xb60f606f104c9eb),CNST_LIMB(0xb3f385dd77e4e)), + P(5839,CNST_LIMB(0xc663dfe8263b302f),CNST_LIMB(0xb394d8ef8f0f6)), + P(5843,CNST_LIMB(0xc91a280b9110b15b),CNST_LIMB(0xb375601507c14)), + P(5849,CNST_LIMB(0x904287118d10969),CNST_LIMB(0xb3463f76be376)), + P(5851,CNST_LIMB(0x160d36a5d31bf553),CNST_LIMB(0xb3368f6c4a07c)), + P(5857,CNST_LIMB(0xe84f5fda3c67ad21),CNST_LIMB(0xb3078fc1c25f0)), + P(5861,CNST_LIMB(0xbd85701f72d4b6ed),CNST_LIMB(0xb2e84854e93e5)), + P(5867,CNST_LIMB(0x4c50cf5924dee1c3),CNST_LIMB(0xb2b971aa909a4)), + P(5869,CNST_LIMB(0x2455aaf1633bb6e5),CNST_LIMB(0xb2a9da39d6bc8)), + P(5879,CNST_LIMB(0xd775b39f549b8ac7),CNST_LIMB(0xb25c0dc29a0fc)), + P(5881,CNST_LIMB(0x87fcdda7a252cb49),CNST_LIMB(0xb24c8698449a7)), + P(5897,CNST_LIMB(0x53df2e3bd254a739),CNST_LIMB(0xb1d0ae579aefe)), + P(5903,CNST_LIMB(0x8915e69623a5f7ef),CNST_LIMB(0xb1a2698ea2f9e)), + P(5923,CNST_LIMB(0x1ef24c80742dd08b),CNST_LIMB(0xb108dc4186078)), + P(5927,CNST_LIMB(0xb4d87aaa6fb1e897),CNST_LIMB(0xb0ea463b00212)), + P(5939,CNST_LIMB(0x788573e8b92dbbfb),CNST_LIMB(0xb08ec37007962)), + P(5953,CNST_LIMB(0x2527b137b0878c1),CNST_LIMB(0xb024778cc023c)), + P(5981,CNST_LIMB(0x1870a7c8dee9f4f5),CNST_LIMB(0xaf515df36a88e)), + P(5987,CNST_LIMB(0x39b99e40910a224b),CNST_LIMB(0xaf24635f6561e)), + P(6007,CNST_LIMB(0x45821c0abd4df247),CNST_LIMB(0xae8f1b92baeaf)), + P(6011,CNST_LIMB(0x10fe2b2f50e02fb3),CNST_LIMB(0xae715eee11f8e)), + P(6029,CNST_LIMB(0x5762b90c043f0345),CNST_LIMB(0xadec0b0a3bb36)), + P(6037,CNST_LIMB(0x82a67b9193b27bbd),CNST_LIMB(0xadb10aa4c956f)), + P(6043,CNST_LIMB(0xa6e914e28ec37693),CNST_LIMB(0xad84e49752245)), + P(6047,CNST_LIMB(0x835d9a4facaf445f),CNST_LIMB(0xad6782597f0c2)), + P(6053,CNST_LIMB(0x48def8175884f82d),CNST_LIMB(0xad3b81a0d72fe)), + P(6067,CNST_LIMB(0xae900e2d7c9a6f7b),CNST_LIMB(0xacd52beced79e)), + P(6073,CNST_LIMB(0x1c08431bdd18be89),CNST_LIMB(0xaca9755063254)), + P(6079,CNST_LIMB(0xb370a66d684fd83f),CNST_LIMB(0xac7dd4cafb12a)), + P(6089,CNST_LIMB(0xb4be33e18f93b279),CNST_LIMB(0xac354f80dca44)), + P(6091,CNST_LIMB(0x310c50872a7dd5e3),CNST_LIMB(0xac26d5c2b8ad2)), + P(6101,CNST_LIMB(0x447ab1281276697d),CNST_LIMB(0xabde997dabd3d)), + P(6113,CNST_LIMB(0xc2f122216b2a6c21),CNST_LIMB(0xab883aa1100a0)), + P(6121,CNST_LIMB(0xab99c8b5ae1c3059),CNST_LIMB(0xab4ed637f5a0b)), + P(6131,CNST_LIMB(0xb78e17a2227d593b),CNST_LIMB(0xab074e9febf52)), + P(6133,CNST_LIMB(0xabf97d03f7269c5d),CNST_LIMB(0xaaf90778c2039)), + P(6143,CNST_LIMB(0x867aefc9fdbfe7ff),CNST_LIMB(0xaab1c7684f034)), + P(6151,CNST_LIMB(0xf7f7ad182e47d5b7),CNST_LIMB(0xaa78f20ebbb3e)), + P(6163,CNST_LIMB(0x50dff95a9847721b),CNST_LIMB(0xaa23f8dafd4cc)), + P(6173,CNST_LIMB(0xe4cb8a0e83cb6a35),CNST_LIMB(0xa9dd69cad5934)), + P(6197,CNST_LIMB(0x8da72ecdf9247a1d),CNST_LIMB(0xa935004a07302)), + P(6199,CNST_LIMB(0xc5b04bfc87f31d87),CNST_LIMB(0xa9270690f3d14)), + P(6203,CNST_LIMB(0xe2dcf622ea2b00f3),CNST_LIMB(0xa90b1a0aa5d30)), + P(6211,CNST_LIMB(0xb9ce9f2e4972f46b),CNST_LIMB(0xa8d35c9d731e9)), + P(6217,CNST_LIMB(0x1ed785c911bf59f9),CNST_LIMB(0xa8a9a6a51f16c)), + P(6221,CNST_LIMB(0x4ddb8a4eed70e085),CNST_LIMB(0xa88de370f596b)), + P(6229,CNST_LIMB(0x81e93b4df68c24fd),CNST_LIMB(0xa856786adae36)), + P(6247,CNST_LIMB(0xee0d0812afcd8357),CNST_LIMB(0xa7da4c77d3161)), + P(6257,CNST_LIMB(0xf62e3ba72268a891),CNST_LIMB(0xa7959f863d4a1)), + P(6263,CNST_LIMB(0x3194d367c8154147),CNST_LIMB(0xa76c85e80c195)), + P(6269,CNST_LIMB(0xd096ede8e30c20d5),CNST_LIMB(0xa743806dc44c4)), + P(6271,CNST_LIMB(0xd68624d27b87a77f),CNST_LIMB(0xa735d866dfa0a)), + P(6277,CNST_LIMB(0xb728fcdc11c8204d),CNST_LIMB(0xa70cedb02531e)), + P(6287,CNST_LIMB(0x9d6b6038077e066f),CNST_LIMB(0xa6c8e842c770f)), + P(6299,CNST_LIMB(0xaa732d7a4a360d93),CNST_LIMB(0xa67791215dd74)), + P(6301,CNST_LIMB(0x36af98a423972db5),CNST_LIMB(0xa66a0a51d363d)), + P(6311,CNST_LIMB(0xc31d00da12940f17),CNST_LIMB(0xa626893011861)), + P(6317,CNST_LIMB(0xed85352107410b25),CNST_LIMB(0xa5fe22c55c089)), + P(6323,CNST_LIMB(0x829c85ee6db8567b),CNST_LIMB(0xa5d5cffb77275)), + P(6329,CNST_LIMB(0xef60258952cc6d89),CNST_LIMB(0xa5ad90c4186e5)), + P(6337,CNST_LIMB(0xcf28c2e0da787741),CNST_LIMB(0xa578057e7c2eb)), + P(6343,CNST_LIMB(0x57567d8494af28f7),CNST_LIMB(0xa54ff3bb10e91)), + P(6353,CNST_LIMB(0x2c7c98518f174031),CNST_LIMB(0xa50d5683edc94)), + P(6359,CNST_LIMB(0xb28b363a36825ae7),CNST_LIMB(0xa4e57854b3df4)), + P(6361,CNST_LIMB(0xed1ffeb64f9ae769),CNST_LIMB(0xa4d8328c4b800)), + P(6367,CNST_LIMB(0xcbbb0115e9b9a31f),CNST_LIMB(0xa4b06e01d97b3)), + P(6373,CNST_LIMB(0x8d3c5fecb7f9e4ed),CNST_LIMB(0xa488bca2c4449)), + P(6379,CNST_LIMB(0x816271698195cfc3),CNST_LIMB(0xa4611e6132ed5)), + P(6389,CNST_LIMB(0x9ac939d1c2b1d35d),CNST_LIMB(0xa41f40f39e646)), + P(6397,CNST_LIMB(0xdd9fb7017b0ec455),CNST_LIMB(0xa3eab5c3e44e9)), + P(6421,CNST_LIMB(0xc94cab1e57276e3d),CNST_LIMB(0xa34ddd50561e0)), + P(6427,CNST_LIMB(0x8b8806b117c79913),CNST_LIMB(0xa326d60e94186)), + P(6449,CNST_LIMB(0xa9e63292a3269fd1),CNST_LIMB(0xa2985a81ce614)), + P(6451,CNST_LIMB(0x76da5710f1e989fb),CNST_LIMB(0xa28b72e26f82e)), + P(6469,CNST_LIMB(0xdded6688d83a918d),CNST_LIMB(0xa217aa3479693)), + P(6473,CNST_LIMB(0x4e446b6a305428f9),CNST_LIMB(0xa1fe05c62df4b)), + P(6481,CNST_LIMB(0x4ddaca7a3696cfb1),CNST_LIMB(0xa1cad538aebf9)), + P(6491,CNST_LIMB(0x7eadc4eb87f26ed3),CNST_LIMB(0xa18b05f490083)), + P(6521,CNST_LIMB(0x76c13a0ff04c00c9),CNST_LIMB(0xa0ccc4c28fc31)), + P(6529,CNST_LIMB(0xcbf800504d2a2681),CNST_LIMB(0xa09a544d01ffe)), + P(6547,CNST_LIMB(0x731dada6c4fec9b),CNST_LIMB(0xa0294aa53e9a2)), + P(6551,CNST_LIMB(0xbcb52a664e63f627),CNST_LIMB(0xa01041a6aaed5)), + P(6553,CNST_LIMB(0xf1f9abda071c2aa9),CNST_LIMB(0xa003c01680870)), + P(6563,CNST_LIMB(0xf262ffa620ffe20b),CNST_LIMB(0x9fc5558a971c8)), + P(6569,CNST_LIMB(0x93774a3d57199a99),CNST_LIMB(0x9f9ff9c3c03e5)), + P(6571,CNST_LIMB(0xfb3541cd467a1903),CNST_LIMB(0x9f9389b864ab9)), + P(6577,CNST_LIMB(0x6828cab6b4fe8f51),CNST_LIMB(0x9f6e4534bdca8)), + P(6581,CNST_LIMB(0x12ac03e3d624cc9d),CNST_LIMB(0x9f557687235c2)), + P(6599,CNST_LIMB(0x6363bd1e9bb7d7f7),CNST_LIMB(0x9ee633c0391ab)), + P(6607,CNST_LIMB(0x334cfd676a484d2f),CNST_LIMB(0x9eb4f28e0bb39)), + P(6619,CNST_LIMB(0xd511acd86f143a53),CNST_LIMB(0x9e6b49e92e4bb)), + P(6637,CNST_LIMB(0x73fc2490e0062be5),CNST_LIMB(0x9dfd4ccbd0045)), + P(6653,CNST_LIMB(0x10780dda36b78b55),CNST_LIMB(0x9d9c0828536c1)), + P(6659,CNST_LIMB(0xabf601274064e0ab),CNST_LIMB(0x9d77ad449f777)), + P(6661,CNST_LIMB(0x3ef3e4ca27e4a2cd),CNST_LIMB(0x9d6b92b28ee48)), + P(6673,CNST_LIMB(0x9216a26e690a16f1),CNST_LIMB(0x9d231a476ed51)), + P(6679,CNST_LIMB(0xbae4849e6034bda7),CNST_LIMB(0x9cfef711bf120)), + P(6689,CNST_LIMB(0xf943a0520e01e9e1),CNST_LIMB(0x9cc2e1448b765)), + P(6691,CNST_LIMB(0x7c89958f48f6658b),CNST_LIMB(0x9cb6e26cbc64d)), + P(6701,CNST_LIMB(0xe67128750e0545a5),CNST_LIMB(0x9c7b03b4a9c67)), + P(6703,CNST_LIMB(0xc6c9e1d414516ccf),CNST_LIMB(0x9c6f0fd980ab1)), + P(6709,CNST_LIMB(0x805307f996e9e81d),CNST_LIMB(0x9c4b3f3a30c3f)), + P(6719,CNST_LIMB(0x3eddd2cff46ad5bf),CNST_LIMB(0x9c0fb29436687)), + P(6733,CNST_LIMB(0x35582c1aeb5aae85),CNST_LIMB(0x9bbca025b7aec)), + P(6737,CNST_LIMB(0x4973c88573ef6eb1),CNST_LIMB(0x9ba4f4421e52c)), + P(6761,CNST_LIMB(0x3063f627c1e715d9),CNST_LIMB(0x9b1783809ff03)), + P(6763,CNST_LIMB(0x711ad679a8dcc243),CNST_LIMB(0x9b0bc5b4d2eac)), + P(6779,CNST_LIMB(0x51c224a17a3db4b3),CNST_LIMB(0x9aae172fd8b9c)), + P(6781,CNST_LIMB(0x612325ca50ddaed5),CNST_LIMB(0x9aa26954607ed)), + P(6791,CNST_LIMB(0x9929a7b6b7958b37),CNST_LIMB(0x9a681e758a022)), + P(6793,CNST_LIMB(0xa78d222e5a857bb9),CNST_LIMB(0x9a5c7b284942e)), + P(6803,CNST_LIMB(0x3ad0ffe3198d139b),CNST_LIMB(0x9a2264ecc5558)), + P(6823,CNST_LIMB(0x8b4659ac547ed17),CNST_LIMB(0x99aebb39be56f)), + P(6827,CNST_LIMB(0x1752e8904aff1003),CNST_LIMB(0x9997ae1a9faac)), + P(6829,CNST_LIMB(0x60745c37ee4e5925),CNST_LIMB(0x998c2a22b6900)), + P(6833,CNST_LIMB(0x29e2da1f6557ee51),CNST_LIMB(0x997527603f8a8)), + P(6841,CNST_LIMB(0x80d78c24ac49cb89),CNST_LIMB(0x99473685e4d50)), + P(6857,CNST_LIMB(0xc56c3b495c8d1f79),CNST_LIMB(0x98eba72512a13)), + P(6863,CNST_LIMB(0xcf5bdf9f5088ac2f),CNST_LIMB(0x98c96d8dee9e1)), + P(6869,CNST_LIMB(0x8a44800e4fae4e7d),CNST_LIMB(0x98a743453554e)), + P(6871,CNST_LIMB(0xdd76384277e578e7),CNST_LIMB(0x989be33c9e6bd)), + P(6883,CNST_LIMB(0x20b1562d2703facb),CNST_LIMB(0x9857c692e9a59)), + P(6899,CNST_LIMB(0xef56caf96e9d8e3b),CNST_LIMB(0x97fd540c05c9e)), + P(6907,CNST_LIMB(0xf54061416aede033),CNST_LIMB(0x97d04302ed944)), + P(6911,CNST_LIMB(0xe0bc78c21a26e4ff),CNST_LIMB(0x97b9c48289935)), + P(6917,CNST_LIMB(0x524f92731a179cd),CNST_LIMB(0x9798133ece717)), + P(6947,CNST_LIMB(0x5d3b4ad7deafec8b),CNST_LIMB(0x96f07c683689e)), + P(6949,CNST_LIMB(0x508828f744da88ad),CNST_LIMB(0x96e55d6393fc5)), + P(6959,CNST_LIMB(0x6e82014031710bcf),CNST_LIMB(0x96addad861696)), + P(6961,CNST_LIMB(0xadf3b77a22595dd1),CNST_LIMB(0x96a2c5a2cf0cf)), + P(6967,CNST_LIMB(0xd8f0c03f7ea8a87),CNST_LIMB(0x96818fc825eba)), + P(6971,CNST_LIMB(0x2c49e3483c3a05f3),CNST_LIMB(0x966b74027f48a)), + P(6977,CNST_LIMB(0xccecbc98c91274c1),CNST_LIMB(0x964a56850b8ed)), + P(6983,CNST_LIMB(0x273a08941bb71e77),CNST_LIMB(0x962947990eb36)), + P(6991,CNST_LIMB(0xdead5a1e3f341baf),CNST_LIMB(0x95fd4a4c885e0)), + P(6997,CNST_LIMB(0x83eee092593309fd),CNST_LIMB(0x95dc5d3954fde)), + P(7001,CNST_LIMB(0x4af5f1bd3ae87ce9),CNST_LIMB(0x95c671ddfe516)), + P(7013,CNST_LIMB(0x4ca85ad2301c9e6d),CNST_LIMB(0x9584d6340ddf1)), + P(7019,CNST_LIMB(0x1b19592cd31a3943),CNST_LIMB(0x95641de84afcc)), + P(7027,CNST_LIMB(0x3e7aa05e6dcd81bb),CNST_LIMB(0x953893c386521)), + P(7039,CNST_LIMB(0x86336cecb02ba47f),CNST_LIMB(0x94f7740d87794)), + P(7043,CNST_LIMB(0xa96b30d0c8a44b2b),CNST_LIMB(0x94e1cb70c9ce0)), + P(7057,CNST_LIMB(0xb7c63fa0cfca0571),CNST_LIMB(0x94962ecbcc7ce)), + P(7069,CNST_LIMB(0x8eaf59b405a642b5),CNST_LIMB(0x94559c69059cf)), + P(7079,CNST_LIMB(0xdf29e9cbb536dc17),CNST_LIMB(0x941ff7e640716)), + P(7103,CNST_LIMB(0xed14132c82c1d43f),CNST_LIMB(0x939fd7a24b099)), + P(7109,CNST_LIMB(0xaf68778e34caab0d),CNST_LIMB(0x937ff22c014bd)), + P(7121,CNST_LIMB(0xa4f04a3368941d31),CNST_LIMB(0x934050872c09e)), + P(7127,CNST_LIMB(0xe9960969357c07e7),CNST_LIMB(0x93209446d56f6)), + P(7129,CNST_LIMB(0xeb47b62b7360b469),CNST_LIMB(0x9316033b5bd22)), + P(7151,CNST_LIMB(0x64c653d779ae730f),CNST_LIMB(0x92a22b9a79374)), + P(7159,CNST_LIMB(0x479702d3319915c7),CNST_LIMB(0x927838edba206)), + P(7177,CNST_LIMB(0xef3c3eebc6803239),CNST_LIMB(0x921a2e7112833)), + P(7187,CNST_LIMB(0x93807b1a2e3c0e1b),CNST_LIMB(0x91e623d5660d0)), + P(7193,CNST_LIMB(0x8167e33e3f478029),CNST_LIMB(0x91c6fc0cab8b6)), + P(7207,CNST_LIMB(0x60cb76e38c339397),CNST_LIMB(0x917e7d88028eb)), + P(7211,CNST_LIMB(0xae34788ffe4bc283),CNST_LIMB(0x9169d455585cd)), + P(7213,CNST_LIMB(0x4b6246a0c6c093a5),CNST_LIMB(0x915f81ef2d529)), + P(7219,CNST_LIMB(0x872e594b12b03efb),CNST_LIMB(0x9140938595d3a)), + P(7229,CNST_LIMB(0xbc0ae83ce9045b15),CNST_LIMB(0x910d2360a450e)), + P(7237,CNST_LIMB(0xad30a3917e0968d),CNST_LIMB(0x90e417104eabd)), + P(7243,CNST_LIMB(0x124ef5a4e1c7cd63),CNST_LIMB(0x90c55d0fdea28)), + P(7247,CNST_LIMB(0x5b98fe0e9fe17aaf),CNST_LIMB(0x90b0e84c04f20)), + P(7253,CNST_LIMB(0x414306cfe45400fd),CNST_LIMB(0x909243fac6b70)), + P(7283,CNST_LIMB(0xa06d1b4fd391e8bb),CNST_LIMB(0x8ff9d0440d137)), + P(7297,CNST_LIMB(0x11939803a60c2381),CNST_LIMB(0x8fb3192789d73)), + P(7307,CNST_LIMB(0x668c11cc37ea6b23),CNST_LIMB(0x8f80c0d5031e3)), + P(7309,CNST_LIMB(0x83f9b2089dc10645),CNST_LIMB(0x8f76b3664f164)), + P(7321,CNST_LIMB(0x65dc8ae47af277a9),CNST_LIMB(0x8f3a80550abc3)), + P(7331,CNST_LIMB(0x6e2368b9c685770b),CNST_LIMB(0x8f087c50e00c4)), + P(7333,CNST_LIMB(0x3ea137aeba5a6b2d),CNST_LIMB(0x8efe7fb408cc2)), + P(7349,CNST_LIMB(0x735f57adca48f19d),CNST_LIMB(0x8eaecce5c4fd7)), + P(7351,CNST_LIMB(0x69a8de0ba1b18107),CNST_LIMB(0x8ea4dccaaec0b)), + P(7369,CNST_LIMB(0x8fb84bdf5822bd79),CNST_LIMB(0x8e4ba9fbc2ff0)), + P(7393,CNST_LIMB(0xb8fab3b748562721),CNST_LIMB(0x8dd5688a3b7d6)), + P(7411,CNST_LIMB(0xa6c658ea10a65c3b),CNST_LIMB(0x8d7d3821fd94f)), + P(7417,CNST_LIMB(0xe56381f33ab5e549),CNST_LIMB(0x8d5feb03c31d7)), + P(7433,CNST_LIMB(0xe3c224da14988139),CNST_LIMB(0x8d12033cc9d30)), + P(7451,CNST_LIMB(0x438c253e6d99f513),CNST_LIMB(0x8cbac4dec6a82)), + P(7457,CNST_LIMB(0xc1b99f8841a3a6e1),CNST_LIMB(0x8c9dc80ab604b)), + P(7459,CNST_LIMB(0x63fa18c79c54fa8b),CNST_LIMB(0x8c942115dcc96)), + P(7477,CNST_LIMB(0xe7f6f609619d0d1d),CNST_LIMB(0x8c3d7df67b539)), + P(7481,CNST_LIMB(0x7b39ef3b70afc109),CNST_LIMB(0x8c2a4bc35cb3b)), + P(7487,CNST_LIMB(0x73922c61ca7452bf),CNST_LIMB(0x8c0d8a4f1f264)), + P(7489,CNST_LIMB(0x28d96828332372c1),CNST_LIMB(0x8c03f71cbf906)), + P(7499,CNST_LIMB(0x6b6e92968c4e8463),CNST_LIMB(0x8bd42abd9a107)), + P(7507,CNST_LIMB(0x571861f084962edb),CNST_LIMB(0x8bae051d7f6ff)), + P(7517,CNST_LIMB(0xd935c64f140f1ef5),CNST_LIMB(0x8b7e735068135)), + P(7523,CNST_LIMB(0x96459f8fd72a4c4b),CNST_LIMB(0x8b61f82c5fb08)), + P(7529,CNST_LIMB(0x410ba9a2a18242d9),CNST_LIMB(0x8b4588a74a05a)), + P(7537,CNST_LIMB(0xcf90979f89870391),CNST_LIMB(0x8b1fb0a7ed403)), + P(7541,CNST_LIMB(0x10f94ff26bc00add),CNST_LIMB(0x8b0ccc5d8f5c8)), + P(7547,CNST_LIMB(0xa6619fbb9da139b3),CNST_LIMB(0x8af07f8ac5146)), + P(7549,CNST_LIMB(0x765a23334efb03d5),CNST_LIMB(0x8ae71328ffd49)), + P(7559,CNST_LIMB(0x6f2f613b5e631837),CNST_LIMB(0x8ab8086624822)), + P(7561,CNST_LIMB(0x666b99bfbcd368b9),CNST_LIMB(0x8aaea3ab5ae89)), + P(7573,CNST_LIMB(0x922b78eb01ed45bd),CNST_LIMB(0x8a7661f7020fe)), + P(7577,CNST_LIMB(0x7079a199c31de6a9),CNST_LIMB(0x8a63ab88aa8dd)), + P(7583,CNST_LIMB(0xa181abcda167be5f),CNST_LIMB(0x8a47a35d020f3)), + P(7589,CNST_LIMB(0x2f6dbbcab3a9822d),CNST_LIMB(0x8a2ba68a3cebf)), + P(7591,CNST_LIMB(0xc5a83ff0e43eba17),CNST_LIMB(0x8a2254c852497)), + P(7603,CNST_LIMB(0x28c68613dda7d97b),CNST_LIMB(0x89ea849898bb3)), + P(7607,CNST_LIMB(0x5cf33ed49efa5007),CNST_LIMB(0x89d7f3e285109)), + P(7621,CNST_LIMB(0x9125fdead661590d),CNST_LIMB(0x899720af36739)), + P(7639,CNST_LIMB(0xaee67f478c7325e7),CNST_LIMB(0x89442160d11dc)), + P(7643,CNST_LIMB(0x735b1274a0e89653),CNST_LIMB(0x8931bd5875a22)), + P(7649,CNST_LIMB(0x733b56eae1a4e621),CNST_LIMB(0x891630877aedf)), + P(7669,CNST_LIMB(0x1944ffb316ffe65d),CNST_LIMB(0x88baaad83e38f)), + P(7673,CNST_LIMB(0xf26bc3cfd2a01449),CNST_LIMB(0x88a86b9090aa4)), + P(7681,CNST_LIMB(0xb5827ba68b83e201),CNST_LIMB(0x8883fb99bf244)), + P(7687,CNST_LIMB(0xac139507e48eefb7),CNST_LIMB(0x8868b45e727ee)), + P(7691,CNST_LIMB(0xeb7676b25834fda3),CNST_LIMB(0x88568aef30d47)), + P(7699,CNST_LIMB(0xad898f4763da5c1b),CNST_LIMB(0x8832468f0bcdd)), + P(7703,CNST_LIMB(0xea906f224398f9a7),CNST_LIMB(0x88202b9a4df76)), + P(7717,CNST_LIMB(0xa8aff3caca28cdad),CNST_LIMB(0x87e0f31872e9b)), + P(7723,CNST_LIMB(0x46c53aa36b19b083),CNST_LIMB(0x87c5ecd731f42)), + P(7727,CNST_LIMB(0x9ada32b09603e8cf),CNST_LIMB(0x87b3eea3bb388)), + P(7741,CNST_LIMB(0xd31f842ef5d8e915),CNST_LIMB(0x87751a6c67d78)), + P(7753,CNST_LIMB(0x6124af44730a33f9),CNST_LIMB(0x873f6e2f9d34a)), + P(7757,CNST_LIMB(0x828ec4c2b6e64a85),CNST_LIMB(0x872d938dcfc01)), + P(7759,CNST_LIMB(0x3d6f49df999638af),CNST_LIMB(0x8724a80151dba)), + P(7789,CNST_LIMB(0x7641460a0ea89b65),CNST_LIMB(0x869f677f6cc1a)), + P(7793,CNST_LIMB(0x97703f98fb7fe291),CNST_LIMB(0x868db701df58d)), + P(7817,CNST_LIMB(0xd343c209e3e6b7b9),CNST_LIMB(0x8623f563a7d6d)), + P(7823,CNST_LIMB(0x4e5fc01f6a41406f),CNST_LIMB(0x86099ef0c8886)), + P(7829,CNST_LIMB(0xb78a05b08aa4bcbd),CNST_LIMB(0x85ef52d38fe87)), + P(7841,CNST_LIMB(0x3434a14919d34561),CNST_LIMB(0x85bad981c7847)), + P(7853,CNST_LIMB(0xccead7dee120f525),CNST_LIMB(0x8586893de7cfc)), + P(7867,CNST_LIMB(0xe1375a2bccd87673),CNST_LIMB(0x8549b491e9efe)), + P(7873,CNST_LIMB(0xf727d51420a57141),CNST_LIMB(0x852fb3859bea4)), + P(7877,CNST_LIMB(0x2c3b68cfbcebb00d),CNST_LIMB(0x851e631fc08f8)), + P(7879,CNST_LIMB(0xda91e2f3e17542f7),CNST_LIMB(0x8515bc9cde5f1)), + P(7883,CNST_LIMB(0xb55f6100ae95d6e3),CNST_LIMB(0x850472f6185b3)), + P(7901,CNST_LIMB(0x6a0c608e0bbaa975),CNST_LIMB(0x84b6defbc166b)), + P(7907,CNST_LIMB(0xac5f2fc151c016cb),CNST_LIMB(0x849d17159854b)), + P(7919,CNST_LIMB(0xb1e5af8146e4d00f),CNST_LIMB(0x8469a54a20645)), + P(7927,CNST_LIMB(0x6e283d3b112602c7),CNST_LIMB(0x84476f9401ade)), + P(7933,CNST_LIMB(0xf9a48bcb76c96e55),CNST_LIMB(0x842dd2e2dc25d)), + P(7937,CNST_LIMB(0xa776780ca4c0e101),CNST_LIMB(0x841cc543f58cb)), +#define SMALLEST_OMITTED_PRIME 7949 +#endif +#ifdef WANT_ptab + {CNST_LIMB(0x444437fed9a2349),{CNST_LIMB(0xe00056482545e92a),5,CNST_LIMB(0x2e044fdfbae4),CNST_LIMB(0x2c8f9615733fe6),CNST_LIMB(0x15319a745d44889),CNST_LIMB(0x30314bfee31fe08),CNST_LIMB(0x213845b5eb1d02b)},0,14}, + {CNST_LIMB(0x34091fa96ffdf47b),{CNST_LIMB(0x3adc72bf62f96a49),2,CNST_LIMB(0x2fdb815a40082e14),CNST_LIMB(0xa2fb4713ee182be),CNST_LIMB(0x6691fcc7a3042b5),CNST_LIMB(0xd7baca281bd7bfe),CNST_LIMB(0x31645ad7700b6fe1)},14,10}, + {CNST_LIMB(0x3c47d8d728a77ebb),{CNST_LIMB(0xfcb9aee19f3d0ca),2,CNST_LIMB(0xee09ca35d620514),CNST_LIMB(0x25e3c1639f7dc597),CNST_LIMB(0x176f977d1145f08f),CNST_LIMB(0x4a431b566c292ba),CNST_LIMB(0x100ae9d9482d6937)},24,9}, + {CNST_LIMB(0x77ab7da9d709ea9),{CNST_LIMB(0x11d1e7012ab3aa25),5,CNST_LIMB(0x1b394f7170aed8e),CNST_LIMB(0x546efaf8f3107d0),CNST_LIMB(0x42ed2efa9db39d8),CNST_LIMB(0xcf1c08fc6f825e),CNST_LIMB(0x252dd3fc3932c60)},33,8}, + {CNST_LIMB(0x310df3e7bd4bc897),{CNST_LIMB(0x4dfeef7ace095886),2,CNST_LIMB(0xaba3c794d85150d),CNST_LIMB(0x17a7ea757afc9b41),CNST_LIMB(0x27386bf8f31e3ba7),CNST_LIMB(0x14f913784ca1b09a),CNST_LIMB(0x19a5850266378808)},41,8}, + {CNST_LIMB(0xd997f089e8af1f),{CNST_LIMB(0x2d2f79839e6b7329),8,CNST_LIMB(0x285a2dd96a188d),CNST_LIMB(0x334ffbd384a516),CNST_LIMB(0xd9f5c4d959d8c),CNST_LIMB(0x1a7b0c8f9e2a8),CNST_LIMB(0x51d4df5ea86eca)},49,7}, + {CNST_LIMB(0x2514ab8fece6d79),{CNST_LIMB(0xb9d8ba8530d526d2),6,CNST_LIMB(0x111e482834cf602),CNST_LIMB(0x2099b9b4399ea77),CNST_LIMB(0xa7e65453d2c58b),CNST_LIMB(0x1543e97a71ba902),CNST_LIMB(0x13c9258fa65ea5c)},56,7}, + {CNST_LIMB(0x690efbefde431f9),{CNST_LIMB(0x37e6fe9321e30a89),5,CNST_LIMB(0x67c69a65020950a),CNST_LIMB(0x3d4da34fd3fb29d),CNST_LIMB(0x4481530580bf270),CNST_LIMB(0x53418b541a702fb),CNST_LIMB(0x5a63ba140615695)},63,7}, + {CNST_LIMB(0xf49e199a5f2f371),{CNST_LIMB(0xbe97cf50195e4cf),4,CNST_LIMB(0xb61e665a0d0c8f0),CNST_LIMB(0x12404319392532e),CNST_LIMB(0xc11fa27489010aa),CNST_LIMB(0x9486cdb3a063f1d),CNST_LIMB(0x90fb58fe1716f29)},70,7}, + {CNST_LIMB(0x20e4ce7eee0a5edf),{CNST_LIMB(0xf216910d87cce9ec),2,CNST_LIMB(0x19be5a877db767e7),CNST_LIMB(0x14174edbad8e4db0),CNST_LIMB(0x13aa47a54ebc0ab3),CNST_LIMB(0x34e03d849eed1a0),CNST_LIMB(0x1c348c675b2b87a9)},77,7}, + {CNST_LIMB(0x3c3b299a83e166e5),{CNST_LIMB(0x1004d8385b0845e0),2,CNST_LIMB(0xf135995f07a646c),CNST_LIMB(0x39f996f3e7c62cb6),CNST_LIMB(0x10e385c8b908ec46),CNST_LIMB(0x108780c61cd93a1),CNST_LIMB(0xece590a749ce9e6)},84,7}, + {CNST_LIMB(0x7385117dabf89767),{CNST_LIMB(0x1ba83180cf48fd02),1,CNST_LIMB(0x18f5dd04a80ed132),CNST_LIMB(0x134aacf48cf374fd),CNST_LIMB(0x5f5e8ab304a603e1),CNST_LIMB(0x8196d4d84952f0b),CNST_LIMB(0x27fbce261e06981)},91,7}, + {CNST_LIMB(0x6b1dd94152d113),{CNST_LIMB(0x31e8de86cb665558),9,CNST_LIMB(0x57c2791756ffa7),CNST_LIMB(0x155d1b6359e72e),CNST_LIMB(0x26e2dd434311d6),CNST_LIMB(0x2d6624583bf57f),CNST_LIMB(0x4b3c0311592466)},98,6}, + {CNST_LIMB(0x9bed1488742f9b),{CNST_LIMB(0xa44d3b1c6d785d44),8,CNST_LIMB(0x2f0a502161e5b4),CNST_LIMB(0x9197cc3e5a5b04),CNST_LIMB(0x58ecad625341f6),CNST_LIMB(0x2c8e81222f4972),CNST_LIMB(0x1f80904334e61e)},104,6}, + {CNST_LIMB(0xd851b0362c316b),{CNST_LIMB(0x2ef5b88db4540035),8,CNST_LIMB(0xcfa22017ddb3c6),CNST_LIMB(0x213062fd865691),CNST_LIMB(0x81822846481a0d),CNST_LIMB(0x4b3f5844dfd386),CNST_LIMB(0x746b08e79bff57)},110,6}, + {CNST_LIMB(0x129e6025385b5e9),{CNST_LIMB(0xb7fd23d5247f5d33),7,CNST_LIMB(0x1283c028c9d61ad),CNST_LIMB(0x8a2496a2184268),CNST_LIMB(0x702aa9d6cae97c),CNST_LIMB(0x8700d0e7b38adb),CNST_LIMB(0x562031b42d3873)},116,6}, + {CNST_LIMB(0x1b399405df9e1d9),{CNST_LIMB(0x2ce69e058ed22408),7,CNST_LIMB(0xc43448ef95aada),CNST_LIMB(0x2a35f6f5397332),CNST_LIMB(0x18bba0a2b06f9b5),CNST_LIMB(0x1bf0769bdd0a51),CNST_LIMB(0xdaf86a9dd4f157)},122,6}, + {CNST_LIMB(0x26a9c83b1da0183),{CNST_LIMB(0xa7c312b1de2834bc),6,CNST_LIMB(0x245cdfc0d956145),CNST_LIMB(0xcfb5812fdbb80b),CNST_LIMB(0x7f9bd0fd4d9771),CNST_LIMB(0x206d41f157b339d),CNST_LIMB(0x1597d040f39bed6)},128,6}, + {CNST_LIMB(0x36518f1ed35fae9),{CNST_LIMB(0x2da0bb538e68c61b),6,CNST_LIMB(0x161b11f812f7dbd),CNST_LIMB(0x1912054119f8337),CNST_LIMB(0x28b68baf0254a33),CNST_LIMB(0x1febc2a846ec627),CNST_LIMB(0x106e286e91657ac)},134,6}, + {CNST_LIMB(0x499cea9952ffcb7),{CNST_LIMB(0xbd2398239911cb86),5,CNST_LIMB(0x2f49990f2b0b4af),CNST_LIMB(0x3efc376b6d3879a),CNST_LIMB(0x16bf595684e7cae),CNST_LIMB(0x2096f989291e15a),CNST_LIMB(0x3f877653fe30a29)},140,6}, + {CNST_LIMB(0x603dc1f0578e36b),{CNST_LIMB(0x547a4d1f60bb6de6),5,CNST_LIMB(0x35de2e91a2ab072),CNST_LIMB(0x3ae19a039d933f9),CNST_LIMB(0x49f04fa32aed515),CNST_LIMB(0x49f39ce5e69737b),CNST_LIMB(0x48e7a8d6354cb3f)},146,6}, + {CNST_LIMB(0x822f4ff1bb75c7d),{CNST_LIMB(0xf7684c1a915fd94f),4,CNST_LIMB(0x3c4551ba4cbccdd),CNST_LIMB(0x3e072857c5d22e8),CNST_LIMB(0x757d8256f24de27),CNST_LIMB(0x256d9df09b5df5c),CNST_LIMB(0x19974713584ab80)},152,6}, + {CNST_LIMB(0xacfc9fbdf683023),{CNST_LIMB(0x7ad9852da99412df),4,CNST_LIMB(0x754da5eeda3acdb),CNST_LIMB(0x91f55d002dee623),CNST_LIMB(0x96936cc5e49d5ea),CNST_LIMB(0x766649a4996390),CNST_LIMB(0xaa8c52b8eea17dd)},158,6}, + {CNST_LIMB(0xe09d410f1fe4edb),{CNST_LIMB(0x23c5744aa32cf453),4,CNST_LIMB(0x34f16cefc1e749a),CNST_LIMB(0x2668179180c1b62),CNST_LIMB(0xdb241be2f133397),CNST_LIMB(0xa7c11527a49744e),CNST_LIMB(0x67d18e0669fea5b)},164,6}, + {CNST_LIMB(0x1149424a578f0ce7),{CNST_LIMB(0xd9e7a906d91cf1db),3,CNST_LIMB(0xdfe5fef362d4b5e),CNST_LIMB(0xcf056a84b77c77c),CNST_LIMB(0x985dfab0d2bd76b),CNST_LIMB(0xf57931f6922ec07),CNST_LIMB(0x44b19bfab74d6)},170,6}, + {CNST_LIMB(0x15b025d5fd579777),{CNST_LIMB(0x79b813c3ed8f4fd2),3,CNST_LIMB(0x116e5fce1d3c7de3),CNST_LIMB(0x1468c60d0220a399),CNST_LIMB(0xf10192b1089742d),CNST_LIMB(0xeae0b108eba5be6),CNST_LIMB(0xf0e98ff5e4d57d4)},176,6}, + {CNST_LIMB(0x1a5f81f6e38d3f1d),{CNST_LIMB(0x369eab91d724ae89),3,CNST_LIMB(0x12a46e520008c7fb),CNST_LIMB(0x638a97340d45e81),CNST_LIMB(0x12b4b0c893a62d44),CNST_LIMB(0x1072dcd55e5547d0),CNST_LIMB(0x18ce18c4a086d95f)},182,6}, + {CNST_LIMB(0x23293bf9b6fe2259),{CNST_LIMB(0xd1f849a43b917c65),2,CNST_LIMB(0x9df5c2bff0d0f91),CNST_LIMB(0xff1fdef6c15b8c),CNST_LIMB(0xec1383d93946006),CNST_LIMB(0x20ce6fd4fbbb8838),CNST_LIMB(0x55871453993a979)},188,6}, + {CNST_LIMB(0x2c1eaa6645e21b17),{CNST_LIMB(0x735a473662e09835),2,CNST_LIMB(0x2366ac00a295788d),CNST_LIMB(0xf8778468c26bac6),CNST_LIMB(0x10ecc751d2724c63),CNST_LIMB(0x4882fbd9d3d43e1),CNST_LIMB(0x2de76607a7f1541)},194,6}, + {CNST_LIMB(0x3646542a1110061b),{CNST_LIMB(0x2ddf24b018173a2c),2,CNST_LIMB(0x26e6af57bbbfe794),CNST_LIMB(0x1974e8d33a8f431f),CNST_LIMB(0x34da7258db6f7b4f),CNST_LIMB(0x2af310e921f874f8),CNST_LIMB(0x3cfeed9d4afc97)},200,6}, + {CNST_LIMB(0x4125602df5b7fa0b),{CNST_LIMB(0xf6fe47f7e339f3ce),1,CNST_LIMB(0x3c8fdf761ed811df),CNST_LIMB(0x145648c8769aba41),CNST_LIMB(0x3270209c06bd9a17),CNST_LIMB(0x2c03f98e45b9dca3),CNST_LIMB(0x3341dcfe340ee93e)},206,6}, + {CNST_LIMB(0x4e06bb83aa64f48d),{CNST_LIMB(0xa3f6020ab0b7e0d3),1,CNST_LIMB(0x15ebcd7500d12259),CNST_LIMB(0x786bf28f0081f92),CNST_LIMB(0x15d832d09f03b587),CNST_LIMB(0xaa3e94d54c2a575),CNST_LIMB(0x471850a042d21386)},212,6}, + {CNST_LIMB(0x6953db39a8298d8b),{CNST_LIMB(0x371b0bbe24632f20),1,CNST_LIMB(0x2d58498caface4ea),CNST_LIMB(0x557c399022219340),CNST_LIMB(0x2cb32a1a8fdd68c2),CNST_LIMB(0x122684249d42b9a9),CNST_LIMB(0x13c80507e77a929c)},218,6}, + {CNST_LIMB(0x15fafabe1c1777),{CNST_LIMB(0x74b22475baab0cce),11,CNST_LIMB(0xc763842e2c34d),CNST_LIMB(0x77d3f710b457b),CNST_LIMB(0x155a43f5525196),CNST_LIMB(0x148e30e0a5dee3),CNST_LIMB(0x13aa97836b8150)},224,5}, + {CNST_LIMB(0x18552ab4f8303b),{CNST_LIMB(0x50aaa1ed4d926e62),11,CNST_LIMB(0x815be492ca359),CNST_LIMB(0x1b55fe26d36ad),CNST_LIMB(0x113a54ceb7846),CNST_LIMB(0x1688511dfe47f),CNST_LIMB(0x66ccabff6c6c8)},229,5}, + {CNST_LIMB(0x1a99c2502dda5f),{CNST_LIMB(0x33f675a22ebecef5),11,CNST_LIMB(0x12ab7e96d807ff),CNST_LIMB(0x1d3db891dce3b),CNST_LIMB(0x19511de2e3095c),CNST_LIMB(0x2741e555a0bff),CNST_LIMB(0x51c7d31a19281)},234,5}, + {CNST_LIMB(0x1ebf9e78cd7ecb),{CNST_LIMB(0xa6b5da36fa2470c),11,CNST_LIMB(0xaebd869698c2f),CNST_LIMB(0x18e178fc70e26a),CNST_LIMB(0x64439ec9707b5),CNST_LIMB(0x116d1f70d29f20),CNST_LIMB(0xeea2317a9a585)},239,5}, + {CNST_LIMB(0x2214c7d5d9ce07),{CNST_LIMB(0xe0bc0f6215d26cf9),10,CNST_LIMB(0x1ffbac72c32f72),CNST_LIMB(0x1447f31b055129),CNST_LIMB(0x122d28bd754f9a),CNST_LIMB(0x106685d95b6d85),CNST_LIMB(0x18c9fdf391bdff)},244,5}, + {CNST_LIMB(0x25e2755d49ffa7),{CNST_LIMB(0xb078a0cae16506b6),10,CNST_LIMB(0x218554ef385919),CNST_LIMB(0xe00c975692d8e),CNST_LIMB(0x1afd2511d2f776),CNST_LIMB(0x108b0b031673f7),CNST_LIMB(0x8d919ed067cf0)},249,5}, + {CNST_LIMB(0x2925e3d5425d41),{CNST_LIMB(0x8e2c20d6f8f795ce),10,CNST_LIMB(0x1c5f29cb4c13c8),CNST_LIMB(0x15e11f6e5f634),CNST_LIMB(0xb32166d7982b3),CNST_LIMB(0xa636cf5c4f642),CNST_LIMB(0x28f997d81938bc)},254,5}, + {CNST_LIMB(0x2f39e99d11c26d),{CNST_LIMB(0x5aed08e710697213),10,CNST_LIMB(0x213b4a00c79b71),CNST_LIMB(0x1bd2737e294111),CNST_LIMB(0xd01c8aaaae314),CNST_LIMB(0xb00f1e27ed99e),CNST_LIMB(0x1d21748adab7e4)},259,5}, + {CNST_LIMB(0x3502a3ce62a769),{CNST_LIMB(0x35126ab40383fc5c),10,CNST_LIMB(0xf411f8bafb90c),CNST_LIMB(0x1fa38c975e6347),CNST_LIMB(0xf4058b043df4e),CNST_LIMB(0x2af2733656b159),CNST_LIMB(0x196e94f446c597)},264,5}, + {CNST_LIMB(0x3b357b23b014b1),{CNST_LIMB(0x14b711563eba7d77),10,CNST_LIMB(0x32f1ffd1469b4e),CNST_LIMB(0x197f48859c01a3),CNST_LIMB(0x29509dc5352d40),CNST_LIMB(0x335e5c9ef5d7fe),CNST_LIMB(0x284e1a5376a683)},269,5}, + {CNST_LIMB(0x420d06773114d3),{CNST_LIMB(0xf01a36d7bbf66dfc),9,CNST_LIMB(0xd86f221cf4e60),CNST_LIMB(0x728955d2f4a8d),CNST_LIMB(0x1a631ed35adca5),CNST_LIMB(0x2d592810a2cd39),CNST_LIMB(0x1215b15f856f68)},274,5}, + {CNST_LIMB(0x4c19f733c90d09),{CNST_LIMB(0xae954f9b28df48d8),9,CNST_LIMB(0xcab96d4cf28bb),CNST_LIMB(0x42b5fc3fd6e7ec),CNST_LIMB(0x2b7f897adc30de),CNST_LIMB(0x1a97bb06e110c0),CNST_LIMB(0x304db431256118)},279,5}, + {CNST_LIMB(0x52f224bf890ffd),{CNST_LIMB(0x8b0d84b8653cb09f),9,CNST_LIMB(0x8c298ef08a942),CNST_LIMB(0x2999ac4ebb9e26),CNST_LIMB(0x3dd9eb9ca2c026),CNST_LIMB(0x43401c4563f790),CNST_LIMB(0x38d5e8bf6d2c89)},284,5}, + {CNST_LIMB(0x5bf703dda941b1),{CNST_LIMB(0x644f51d4add132a4),9,CNST_LIMB(0x38fd3f81414bb8),CNST_LIMB(0x20049119d93b7c),CNST_LIMB(0x4e479d97844206),CNST_LIMB(0x294a3066f3b775),CNST_LIMB(0x1c21bda84cf2fc)},289,5}, + {CNST_LIMB(0x68cf321fe6202f),{CNST_LIMB(0x38a4d27caeef8e91),9,CNST_LIMB(0x1e26a01f2b6d41),CNST_LIMB(0x9e9e8993d282b),CNST_LIMB(0x417ad2819cd4fb),CNST_LIMB(0x627fb183ab0b1a),CNST_LIMB(0x278b9f029564e7)},294,5}, + {CNST_LIMB(0x71dad4e06cde9b),{CNST_LIMB(0x1fce1dcd4eb47a27),9,CNST_LIMB(0x457bdbeb7801db),CNST_LIMB(0x1f2b3df5db8f09),CNST_LIMB(0x2149ca25813ef0),CNST_LIMB(0x17d20c710e4487),CNST_LIMB(0x40ceb8ee4ca73d)},299,5}, + {CNST_LIMB(0x7b5e9ca091c63d),{CNST_LIMB(0x99bc23041414782),9,CNST_LIMB(0x1ac11ef1a1cf79),CNST_LIMB(0x313f0652fefffc),CNST_LIMB(0x12f34ea4e7a5db),CNST_LIMB(0x2aa2b3b3300bfd),CNST_LIMB(0x3245caffd0690c)},304,5}, + {CNST_LIMB(0x892f2017af4a77),{CNST_LIMB(0xddb91a666e887a07),8,CNST_LIMB(0x633133de624045),CNST_LIMB(0x7f207860875935),CNST_LIMB(0x702aff29ff7777),CNST_LIMB(0x1cc53fa2f53db9),CNST_LIMB(0x2c5ff88b6e27ee)},309,5}, + {CNST_LIMB(0x93efab3d98e265),{CNST_LIMB(0xbb00736076c6c8fc),8,CNST_LIMB(0x42ac68703b39),CNST_LIMB(0x4d4d015d5d1bd7),CNST_LIMB(0x85c801afb0f411),CNST_LIMB(0x4579d8022d0a69),CNST_LIMB(0x32ea2e520e3d23)},314,5}, + {CNST_LIMB(0x9fd1e9a289b8f9),{CNST_LIMB(0x9a0fb77008192e78),8,CNST_LIMB(0x9cfd1af6dc136),CNST_LIMB(0x23a28bc352c87c),CNST_LIMB(0x582383446e53c2),CNST_LIMB(0x3d52e0695b07e4),CNST_LIMB(0x83c6fc0e7cfd23)},319,5}, + {CNST_LIMB(0xb3ffc82a3b00bb),{CNST_LIMB(0x6c17325c7676de1f),8,CNST_LIMB(0x104f63f41af61c),CNST_LIMB(0x838ff92da5d267),CNST_LIMB(0xb37001a22f0194),CNST_LIMB(0x4487295b668b16),CNST_LIMB(0xa06ce4ed65729d)},324,5}, + {CNST_LIMB(0xc78aab3260ed67),{CNST_LIMB(0x486ec1d048657b5d),8,CNST_LIMB(0x5654a773cfd408),CNST_LIMB(0xb3f20a79edde43),CNST_LIMB(0xaebbd1a69724dd),CNST_LIMB(0x81191f0503a9),CNST_LIMB(0x3b54fc6e1ed034)},329,5}, + {CNST_LIMB(0xd8b06a4b9eddc9),{CNST_LIMB(0x2e7147c081441aeb),8,CNST_LIMB(0x5fe29aca965ce2),CNST_LIMB(0x9cb19caad665ca),CNST_LIMB(0x147b04c65844fd),CNST_LIMB(0x7a1c878be8db45),CNST_LIMB(0x8f4f4d51c80dfd)},334,5}, + {CNST_LIMB(0xe8f35bfe49ae4b),{CNST_LIMB(0x19547b44fa632b82),8,CNST_LIMB(0x4ce005e11fafad),CNST_LIMB(0x57f2d94de4ea00),CNST_LIMB(0xb885b9e976e473),CNST_LIMB(0x1eb25c197e9b39),CNST_LIMB(0xe2c45221f5cdb7)},339,5}, + {CNST_LIMB(0xfcff7f19788a27),{CNST_LIMB(0x3099f4bf7423272),8,CNST_LIMB(0x982693b0c3a8b),CNST_LIMB(0xa6eee9dce0fc63),CNST_LIMB(0xf1290f2b74223c),CNST_LIMB(0x36c85e11826e0b),CNST_LIMB(0xbe15668a4d3771)},344,5}, + {CNST_LIMB(0x10f681c21a80325),{CNST_LIMB(0xe2ef902951d2322d),7,CNST_LIMB(0x7efd8450d50a2b),CNST_LIMB(0x37c115b60abfde),CNST_LIMB(0x4a31517b3a2c0),CNST_LIMB(0x8ee426b2c25e26),CNST_LIMB(0xaf5e09c0582f8)},349,5}, + {CNST_LIMB(0x11ffa8ecf7814fb),{CNST_LIMB(0xc7250b86192832ab),7,CNST_LIMB(0xa4d35e0885656f),CNST_LIMB(0x6d14e9be5101ec),CNST_LIMB(0x93b36726a244a),CNST_LIMB(0xb56f38bde55186),CNST_LIMB(0x11443988cbd610f)},354,5}, + {CNST_LIMB(0x139b8ddf439b133),{CNST_LIMB(0xa1cbe52ffcdca969),7,CNST_LIMB(0x119cba991200690),CNST_LIMB(0xa8a1be12145159),CNST_LIMB(0x49831f7f1eb091),CNST_LIMB(0x5fe3a0bd210422),CNST_LIMB(0x11b90612ebf719f)},359,5}, + {CNST_LIMB(0x15b90aaef040351),{CNST_LIMB(0x791d6da971f79fb1),7,CNST_LIMB(0xc1c278790d9084),CNST_LIMB(0xa6bc771172ca70),CNST_LIMB(0x1219044d36b161b),CNST_LIMB(0x9363a00d9d3f5f),CNST_LIMB(0x14079ec2a37ea93)},364,5}, + {CNST_LIMB(0x17d664f86c88bd3),{CNST_LIMB(0x57a9176de3f40918),7,CNST_LIMB(0x13ca8e0f80a9a0f),CNST_LIMB(0xfc1ecc66c0c93b),CNST_LIMB(0x15be6192051cb1a),CNST_LIMB(0x136f263b7a50fcc),CNST_LIMB(0x3820db8623a7)},369,5}, + {CNST_LIMB(0x1a44cc5ef4c16b5),{CNST_LIMB(0x37da80020a7d1f74),7,CNST_LIMB(0x18584281cee4069),CNST_LIMB(0x178a63d22596ba9),CNST_LIMB(0x6739c7c5ac4f2d),CNST_LIMB(0x14c57a38e4d612a),CNST_LIMB(0x13d2e7fd35623ae)},374,5}, + {CNST_LIMB(0x1ca80b29773de79),{CNST_LIMB(0x1dde9f723a4f55dc),7,CNST_LIMB(0x1ac9ceffdba98e2),CNST_LIMB(0xf4618a5f0fdaa9),CNST_LIMB(0x17b96b4ded53ebb),CNST_LIMB(0x7faf749bdd9cb1),CNST_LIMB(0xfa9d50111fc549)},379,5}, + {CNST_LIMB(0x1e7b019a7fa8931),{CNST_LIMB(0xcc3160c520cdb96),7,CNST_LIMB(0xb9d29212dc305a),CNST_LIMB(0x91586fa7d2facc),CNST_LIMB(0x2638c4c9135f19),CNST_LIMB(0x1c315565816b84a),CNST_LIMB(0xa92e9c918ad70f)},384,5}, + {CNST_LIMB(0x1fd932c2a6c3463),{CNST_LIMB(0x137e41a0c0b8d4f),7,CNST_LIMB(0x13669eac9e5ce80),CNST_LIMB(0x94dc55b30276b5),CNST_LIMB(0x1c52a400cc7dae6),CNST_LIMB(0x1cd876c8023e81b),CNST_LIMB(0x8e06dbbb7e4c2d)},389,5}, + {CNST_LIMB(0x2175e8bd7050e79),{CNST_LIMB(0xe9a698d03a5e604b),6,CNST_LIMB(0xdcf15b87971a56),CNST_LIMB(0x2e9e439e7517fb),CNST_LIMB(0x85bbfca7ac6da9),CNST_LIMB(0x500c9508abde31),CNST_LIMB(0x1c9d7aa292a48b0)},394,5}, + {CNST_LIMB(0x24033b205fe4527),{CNST_LIMB(0xc6f39cee1695e79a),6,CNST_LIMB(0x1a92e6b5ac379c9),CNST_LIMB(0x1f1b86c0e7f8d15),CNST_LIMB(0x1e362d27d79fda9),CNST_LIMB(0x4dcd13ebf2a00a),CNST_LIMB(0x408b8bd354f1b4)},399,5}, + {CNST_LIMB(0x265d2eb09cdc073),{CNST_LIMB(0xab112e468a91ceb0),6,CNST_LIMB(0x1d6aaadf0ce5062),CNST_LIMB(0x8cb5be41003782),CNST_LIMB(0x52b9980c0c4bec),CNST_LIMB(0x2228f2e6cbe8667),CNST_LIMB(0xca6f7400df044e)},404,5}, + {CNST_LIMB(0x2953a0e65ca6a1d),{CNST_LIMB(0x8c7372d9ab5569c1),6,CNST_LIMB(0x4a8c6ea2b8f6c9),CNST_LIMB(0x3588f2393801ce),CNST_LIMB(0x1fce38ab648e336),CNST_LIMB(0x89544c1c4d5e80),CNST_LIMB(0x6e5d409692ed37)},409,5}, + {CNST_LIMB(0x2c67f25a6bc9c63),{CNST_LIMB(0x70f57416f0cce89e),6,CNST_LIMB(0xaa4e781437cc6c),CNST_LIMB(0x1c38f9d456ca8d),CNST_LIMB(0x2682eae3a0afadb),CNST_LIMB(0x2b54835e8a4f4ca),CNST_LIMB(0x1ff894f600fa94f)},414,5}, + {CNST_LIMB(0x2fdd1a7524ae76d),{CNST_LIMB(0x564e31abce2eba47),6,CNST_LIMB(0x1b96371ad2128cf),CNST_LIMB(0x35309a6895ab0d),CNST_LIMB(0x14de5531da96df1),CNST_LIMB(0x3a924ccc42ac90),CNST_LIMB(0x315a6b9b99a595)},419,5}, + {CNST_LIMB(0x33770e6e18aeb53),{CNST_LIMB(0x3e5a14fd0434a100),6,CNST_LIMB(0x1e428c066216163),CNST_LIMB(0x93d03854bffefa),CNST_LIMB(0x77e62b6df8d4a1),CNST_LIMB(0x8a8b138bb2ed69),CNST_LIMB(0x292d249664af8db)},424,5}, + {CNST_LIMB(0x379c7dff6334d3b),{CNST_LIMB(0x269dcc0c8d56e875),6,CNST_LIMB(0x2460122cb5efa2d),CNST_LIMB(0x28e51e3c7265f2e),CNST_LIMB(0x1efacb51926e686),CNST_LIMB(0xfc8248ae79bd5f),CNST_LIMB(0x2f3b91b1fe1f65)},429,5}, + {CNST_LIMB(0x3b82f15f7249c49),{CNST_LIMB(0x134ee332d51f0306),6,CNST_LIMB(0x3137e2a5a467c9c),CNST_LIMB(0x79d488798b4960),CNST_LIMB(0xb436578d1069bb),CNST_LIMB(0x10ad84e585582d0),CNST_LIMB(0x3215616c9b153bf)},434,5}, + {CNST_LIMB(0x3fff4dd17ad4ff9),{CNST_LIMB(0x2c8c1d50d30af),6,CNST_LIMB(0x2c8ba14ac01c0),CNST_LIMB(0x2bd06852b51e327),CNST_LIMB(0x30714e5452d2c1),CNST_LIMB(0x327ff42efc6d9c),CNST_LIMB(0x244bb5001864710)},439,5}, + {CNST_LIMB(0x465670cc294b181),{CNST_LIMB(0xd1ddf947b9d55be0),5,CNST_LIMB(0x106a71bea4fc8c6),CNST_LIMB(0xa255b26c45d27f),CNST_LIMB(0x460d26a6240e466),CNST_LIMB(0x1dda425d1868b60),CNST_LIMB(0x3d6eff8580e97e1)},444,5}, + {CNST_LIMB(0x4aaaab2fe3fee47),{CNST_LIMB(0xb6db6aa7d3a37a63),5,CNST_LIMB(0x3fffe3e5e83bd06),CNST_LIMB(0xa8a65f30809160),CNST_LIMB(0xbfd8fef4142370),CNST_LIMB(0x358c77f78c2a4d0),CNST_LIMB(0x3a89f0ee6796b95)},449,5}, + {CNST_LIMB(0x4f8bbff17c95ef7),{CNST_LIMB(0x9bf032ee57751395),5,CNST_LIMB(0x2728c2e42e214cb),CNST_LIMB(0x37fb2686e89761e),CNST_LIMB(0x4a264029edea029),CNST_LIMB(0x1d504d3aecaaa50),CNST_LIMB(0x45b5a7b35031756)},454,5}, + {CNST_LIMB(0x553ea1ce3216691),{CNST_LIMB(0x806643148e9063ef),5,CNST_LIMB(0x441a9569bcc4d0),CNST_LIMB(0x535ae4be3f071a1),CNST_LIMB(0x545a793067e09d8),CNST_LIMB(0xd5d15c09afe8cd),CNST_LIMB(0x4534c23a01c6a96)},459,5}, + {CNST_LIMB(0x59f7c9a4fefb517),{CNST_LIMB(0x6c37fd6421ef50ed),5,CNST_LIMB(0x2f718dff2dd2af5),CNST_LIMB(0x4aea82d40c5cc72),CNST_LIMB(0x4f7cec2a6861199),CNST_LIMB(0xe868a369a42529),CNST_LIMB(0x40e610cd320b2f7)},464,5}, + {CNST_LIMB(0x5e8d3fa86f95521),{CNST_LIMB(0x5a8fc0667cc240fe),5,CNST_LIMB(0x1e464eb541eb375),CNST_LIMB(0x3892fa43db27fd5),CNST_LIMB(0x4e5c7836ddc791a),CNST_LIMB(0x36e537bed96365e),CNST_LIMB(0x4375094ddcb8820)},469,5}, + {CNST_LIMB(0x64157c62c33e31d),{CNST_LIMB(0x4767bbee2675bc54),5,CNST_LIMB(0x5ca490917e48378),CNST_LIMB(0x11867a67aa79db0),CNST_LIMB(0x6198c4cbcaf84e6),CNST_LIMB(0x4338ebe5ab25fcf),CNST_LIMB(0x11e91c53e48fd1e)},474,5}, + {CNST_LIMB(0x6ceeed4c43f4183),{CNST_LIMB(0x2cced2b1dae4601a),5,CNST_LIMB(0x4177b3fa2db8811),CNST_LIMB(0x2b3db3648dc8a5),CNST_LIMB(0x50f060794aa127),CNST_LIMB(0x4f7cdc200df8c9a),CNST_LIMB(0x4525db055625df3)},479,5}, + {CNST_LIMB(0x7287ee7e5f96919),{CNST_LIMB(0x1e1b2205d593e3a6),5,CNST_LIMB(0x576a64b8ee6a195),CNST_LIMB(0x7bd2ea513c7027),CNST_LIMB(0x17c4152c6d55daa),CNST_LIMB(0x39f7aac6f902f57),CNST_LIMB(0x14765413bf9b5ca)},484,5}, + {CNST_LIMB(0x79886d10dfa5165),{CNST_LIMB(0xd9f57c223f379ca),5,CNST_LIMB(0x5569f0d32bb81fb),CNST_LIMB(0x6f08a7fc8e770a6),CNST_LIMB(0x2c14d325ec8479f),CNST_LIMB(0x4499d22e49d3c7),CNST_LIMB(0x53f1f1eecdc8c2)},489,5}, + {CNST_LIMB(0x7e13347ac1526bf),{CNST_LIMB(0x3e8a375cf0fb774),5,CNST_LIMB(0x3d9970a7d5b2820),CNST_LIMB(0x3664c9d670bba16),CNST_LIMB(0x6ba929ee3cbcd5c),CNST_LIMB(0xd5d262e6d92452),CNST_LIMB(0x2f545142add8d05)},494,5}, + {CNST_LIMB(0x8566f0377d15459),{CNST_LIMB(0xeb44411c1363bcf4),4,CNST_LIMB(0x5defd97f5781d92),CNST_LIMB(0x16eaae98cb00189),CNST_LIMB(0x986f4f6d77c243),CNST_LIMB(0x57c736925ddfd9),CNST_LIMB(0x10a756243dbe4ca)},499,5}, + {CNST_LIMB(0x8bfc83897e6cdaf),{CNST_LIMB(0xd428ea393317b9f2),4,CNST_LIMB(0x2465196cadab32d),CNST_LIMB(0x7594e9e684d904a),CNST_LIMB(0x19cd4a75383b2d1),CNST_LIMB(0x6a0e9c23f177e64),CNST_LIMB(0x56f0f2ae36c5465)},504,5}, + {CNST_LIMB(0x94ad790245385eb),{CNST_LIMB(0xb8cae8ae9a639526),4,CNST_LIMB(0x51b43cc2b30e037),CNST_LIMB(0x4cb133bb88b3adc),CNST_LIMB(0x3ede33df9c5e3e3),CNST_LIMB(0x665226a2d290ac4),CNST_LIMB(0x33db5ce835ec6e4)},509,5}, + {CNST_LIMB(0x9c30734d93b1379),{CNST_LIMB(0xa397f073b55bde0b),4,CNST_LIMB(0x23144a1f00005b6),CNST_LIMB(0x826ad253a3ed324),CNST_LIMB(0x940ad5d52b4806c),CNST_LIMB(0x1729e9d2d022730),CNST_LIMB(0x20a978fb381a6c2)},514,5}, + {CNST_LIMB(0xa57e1fd7a44fbb9),{CNST_LIMB(0x8c0164efd39df203),4,CNST_LIMB(0x7c2d03c898866a8),CNST_LIMB(0x4037558c6f1e4eb),CNST_LIMB(0x6694cdbbb8803c7),CNST_LIMB(0x99396c89bf97452),CNST_LIMB(0x436126c1b000fab)},519,5}, + {CNST_LIMB(0xaf9b9be9c8401d1),{CNST_LIMB(0x7531f66eca55c19b),4,CNST_LIMB(0x3904fdff023d639),CNST_LIMB(0x962f9b532413fb3),CNST_LIMB(0x27ec74df2758058),CNST_LIMB(0x5836483d1e34f66),CNST_LIMB(0x8384a37fad8866d)},524,5}, + {CNST_LIMB(0xb9ba711d6e4a84f),{CNST_LIMB(0x60dc0b5cc82154b3),4,CNST_LIMB(0x9fa47788598936),CNST_LIMB(0x82bd019c1fa5a56),CNST_LIMB(0x50db17c34711736),CNST_LIMB(0x739121f55c5b75d),CNST_LIMB(0x912fe4d49b6d56)},529,5}, + {CNST_LIMB(0xc41a8a6c63a70d1),{CNST_LIMB(0x4e30c99728e3c197),4,CNST_LIMB(0xaded2f8836f2fac),CNST_LIMB(0xab84ac5c6d525d9),CNST_LIMB(0x488aa0b1f301ccb),CNST_LIMB(0x5fdf2905d976ad6),CNST_LIMB(0x5cb75a7adbb8561)},534,5}, + {CNST_LIMB(0xcd79628a71801f7),{CNST_LIMB(0x3ef33887b9ad5b44),4,CNST_LIMB(0xbffdafb9937daab),CNST_LIMB(0x8c3722255b2b8c7),CNST_LIMB(0x63cd1bbc0e9c22a),CNST_LIMB(0xbd17bc2e12ad950),CNST_LIMB(0x15e9799e0d76f1e)},539,5}, + {CNST_LIMB(0xd6f67d4726eaaf5),{CNST_LIMB(0x30df0c865cc92a96),4,CNST_LIMB(0xbb4b3b81c94fd1),CNST_LIMB(0x2a20ca76128ce99),CNST_LIMB(0x4a4022bdd8f612e),CNST_LIMB(0x3bafa50d5be5f8b),CNST_LIMB(0xb86a67f06630908)},544,5}, + {CNST_LIMB(0xe5d3b047627f8e3),{CNST_LIMB(0x1d275ac8c78303ec),4,CNST_LIMB(0xbcf14b4275878ed),CNST_LIMB(0x5ee8b82b0662dd),CNST_LIMB(0x77e3de57e11f662),CNST_LIMB(0x5ed59e5dfb5cd16),CNST_LIMB(0xbe6a6366650aef1)},549,5}, + {CNST_LIMB(0xef42ae515bfb29d),{CNST_LIMB(0x11e922af2e24e769),4,CNST_LIMB(0x1c926c98e452393),CNST_LIMB(0xd26a458c9c34765),CNST_LIMB(0x5da54b52a8aa98a),CNST_LIMB(0xa2ed4f828338df7),CNST_LIMB(0xe69ac190926521a)},554,5}, + {CNST_LIMB(0xfd32459f0b3d4bb),{CNST_LIMB(0x2d5ace688e647e9),4,CNST_LIMB(0x2cdba60f4c2b450),CNST_LIMB(0x2577b742a8ed5db),CNST_LIMB(0x144ef4109272736),CNST_LIMB(0xbe9326c4f15e1a9),CNST_LIMB(0xb96de853277fb4f)},559,5}, + {CNST_LIMB(0x10a16ef6c96a16c7),{CNST_LIMB(0xec9602538c0df011),3,CNST_LIMB(0x68a7f8a32c8aa57),CNST_LIMB(0x1445e7d17b921f3),CNST_LIMB(0x81c8debc8176f0b),CNST_LIMB(0xe3a1c5b816e4a65),CNST_LIMB(0xa52ad5bb93c9f4b)},564,5}, + {CNST_LIMB(0x117c2fec47f5e013),{CNST_LIMB(0xd48355880989be17),3,CNST_LIMB(0xb356114108dbef6),CNST_LIMB(0xe7ddeca9ba6a20c),CNST_LIMB(0xf2d7618ea8a6953),CNST_LIMB(0x412256baaec5c27),CNST_LIMB(0x1f8e16ca6e5c0d7)},569,5}, + {CNST_LIMB(0x129a8c10ae1f364b),{CNST_LIMB(0xb857af53b5b43644),3,CNST_LIMB(0xe26e327286a3e31),CNST_LIMB(0xeef9d55a9d06dbf),CNST_LIMB(0xe61febd3beb02b6),CNST_LIMB(0x10d018a00b7fd6a5),CNST_LIMB(0x32009c46e7c1314)},574,5}, + {CNST_LIMB(0x134631392d507059),{CNST_LIMB(0xa9063d94bb92a978),3,CNST_LIMB(0x56f8018b2ea4b7b),CNST_LIMB(0x1270cb710b035935),CNST_LIMB(0x11033d859716c4f9),CNST_LIMB(0xd45bebac416a68c),CNST_LIMB(0xc08fe72fc6eef84)},579,5}, + {CNST_LIMB(0x13fde7755d5fd9ed),{CNST_LIMB(0x99c48a788248a856),3,CNST_LIMB(0x1019267f9f81c8e4),CNST_LIMB(0x394e4098ea8549),CNST_LIMB(0x33c85c2a1514436),CNST_LIMB(0xa1e569d4432f4bb),CNST_LIMB(0x128bfbc862fb3c58)},584,5}, + {CNST_LIMB(0x15698c0906cc26a5),{CNST_LIMB(0x7e957ed81f600c1e),3,CNST_LIMB(0x1476fb9cb53a56e9),CNST_LIMB(0xeff15504451beab),CNST_LIMB(0xdea55fc79c32599),CNST_LIMB(0x76a982d54d956a1),CNST_LIMB(0x4d131625675abd7)},589,5}, + {CNST_LIMB(0x168a1ee80f6d92f5),{CNST_LIMB(0x6b73459d204359d1),3,CNST_LIMB(0x810ac07564aaf79),CNST_LIMB(0x874d5996e15561a),CNST_LIMB(0xb75c73837694b49),CNST_LIMB(0xd4645617d29779b),CNST_LIMB(0x12af15ef931be940)},594,5}, + {CNST_LIMB(0x17daa6de32466fbf),{CNST_LIMB(0x576bc18853c72908),3,CNST_LIMB(0x11757b52093fa28a),CNST_LIMB(0xff4c0f212559944),CNST_LIMB(0x40af9872004a0a5),CNST_LIMB(0x2b2b7c424c54c2b),CNST_LIMB(0x1a2b7130739c4c7)},599,5}, + {CNST_LIMB(0x18ea5f2dbe212911),{CNST_LIMB(0x48ca86c98010be89),3,CNST_LIMB(0x6d8483692b46556),CNST_LIMB(0x305d89220ec48d2),CNST_LIMB(0x1772200dfc1938dc),CNST_LIMB(0xded80c44ca87607),CNST_LIMB(0xb498b0490dc55dd)},604,5}, + {CNST_LIMB(0x1a0fa1ef47787d1b),{CNST_LIMB(0x3a56b20c2d70e08a),3,CNST_LIMB(0x15734e967cc39a0d),CNST_LIMB(0x8fc968191dc0fd3),CNST_LIMB(0x1680d35f18721f8f),CNST_LIMB(0x197b4a3e18c9e8bc),CNST_LIMB(0xc0ad81d645f40c7)},609,5}, + {CNST_LIMB(0x1b673b66a023a93f),{CNST_LIMB(0x2af150ff9195ac0f),3,CNST_LIMB(0x95ee9645ebf0cc9),CNST_LIMB(0x1717202bbc3e0a78),CNST_LIMB(0x126d365df320adf6),CNST_LIMB(0x137d63165361ab0e),CNST_LIMB(0x19ca69d84cc1417c)},614,5}, + {CNST_LIMB(0x1ce34de10c258111),{CNST_LIMB(0x1b9430b6521be183),3,CNST_LIMB(0x18e590f79ed3f778),CNST_LIMB(0xbcbaeb9ec0a1624),CNST_LIMB(0x18f51ac04296ceb6),CNST_LIMB(0x161b15271d06a3e1),CNST_LIMB(0x5f0a62fb317dd86)},619,5}, + {CNST_LIMB(0x1e19674e354f4667),{CNST_LIMB(0x102a99b0acd64358),3,CNST_LIMB(0xf34c58e5585ccc8),CNST_LIMB(0x15fad9b7ef3a5cbd),CNST_LIMB(0x1874ea34e3e274f9),CNST_LIMB(0x841598977c90581),CNST_LIMB(0x1c04690158b888d)},624,5}, + {CNST_LIMB(0x1f3740adb603b24d),{CNST_LIMB(0x66e52892f80015e),3,CNST_LIMB(0x645fa924fe26d98),CNST_LIMB(0xc022a525d7f5a4f),CNST_LIMB(0x16d7e66846e5d65b),CNST_LIMB(0x10105a92c09c5aa9),CNST_LIMB(0xedddad56d23fc0e)},629,5}, + {CNST_LIMB(0x20e7b3c0e3b73671),{CNST_LIMB(0xf1eabc8c8352c9af),2,CNST_LIMB(0x19aa15b9c5fd82e9),CNST_LIMB(0x10fd7c871bd5d222),CNST_LIMB(0x4ee89a76e1259e0),CNST_LIMB(0x1280d75e6bf3c134),CNST_LIMB(0x85e103f1853c3d)},634,5}, + {CNST_LIMB(0x22b5b4fc40d4c35f),{CNST_LIMB(0xd807362226cc7e50),2,CNST_LIMB(0xd080d1a3a2ea867),CNST_LIMB(0x1f068368adc3fde1),CNST_LIMB(0x178240b1c3cf35a9),CNST_LIMB(0x1dc077b2ed00fd8c),CNST_LIMB(0x2e6e64a07f9c833)},639,5}, + {CNST_LIMB(0x23cff30e6fb8f7fd),{CNST_LIMB(0xc97f150b60a9e71b),2,CNST_LIMB(0x5505a9af1f13815),CNST_LIMB(0x22434bb477153d47),CNST_LIMB(0x87670d53a068a58),CNST_LIMB(0x21b754fa0ae7b745),CNST_LIMB(0x2182750984e9f50b)},644,5}, + {CNST_LIMB(0x266a30ee37cc7341),{CNST_LIMB(0xaa808f26b38df4ef),2,CNST_LIMB(0x1982da6ab1354c7a),CNST_LIMB(0xfda1381ca806f81),CNST_LIMB(0x1a31d30d06bd5b7b),CNST_LIMB(0xbc65e21d25000c6),CNST_LIMB(0x132d8167c6a0973b)},649,5}, + {CNST_LIMB(0x283e6bddfbebab6d),{CNST_LIMB(0x971e4733b2e0d2bf),2,CNST_LIMB(0xe8978cc1879fb72),CNST_LIMB(0x1c9e26afc4d767da),CNST_LIMB(0x1e376fcf488c8249),CNST_LIMB(0x977e63f145b0e1d),CNST_LIMB(0xe2db9891e737aa1)},654,5}, + {CNST_LIMB(0x298d29c47d06f16b),{CNST_LIMB(0x8a4e7f92da9842e7),2,CNST_LIMB(0x6b1056511d6577e),CNST_LIMB(0x592f6f3bbda49cc),CNST_LIMB(0x2692769f01fb0a5b),CNST_LIMB(0x5f3e5623e91d30d),CNST_LIMB(0x2104d5242a92b48d)},659,5}, + {CNST_LIMB(0x2afa8c16de374c13),{CNST_LIMB(0x7d364b6556c2b905),2,CNST_LIMB(0x291b438da8eb83a1),CNST_LIMB(0x14222ff3cbf7d671),CNST_LIMB(0x126ac7f90facd4d3),CNST_LIMB(0x46d452f540a8d2),CNST_LIMB(0xb0b0fc23426b0b7)},664,5}, + {CNST_LIMB(0x2c44b3413ab0dee7),{CNST_LIMB(0x721b37f337583151),2,CNST_LIMB(0x22a87fb9da8ba57d),CNST_LIMB(0x26943e2ad67b49d6),CNST_LIMB(0x1ef6cfa904bef1cd),CNST_LIMB(0x18e7d1baf5588938),CNST_LIMB(0x1ad24c5276c66d2f)},669,5}, + {CNST_LIMB(0x2e88fa7433ac7823),{CNST_LIMB(0x60141b17275393e2),2,CNST_LIMB(0x17531bbafda1a751),CNST_LIMB(0xf3ea18441a36068),CNST_LIMB(0x130110257a01259a),CNST_LIMB(0x14122cf2cde8eecc),CNST_LIMB(0x24d25acd522c56b7)},674,5}, + {CNST_LIMB(0x303fb77cc2bfe62b),{CNST_LIMB(0x539292e31ed6db25),2,CNST_LIMB(0xec16a9032408129),CNST_LIMB(0x22483ceeb16c18a3),CNST_LIMB(0x1dd1cf7128399e5a),CNST_LIMB(0x11b3d478af2cbe42),CNST_LIMB(0x2a86cb29ac9873d3)},679,5}, + {CNST_LIMB(0x32eeac8f8d221e55),{CNST_LIMB(0x41ae89b9e560d65a),2,CNST_LIMB(0x156a1323e556857),CNST_LIMB(0x865eccdcf192078),CNST_LIMB(0x29e9014382ce253e),CNST_LIMB(0x737a633527d55ef),CNST_LIMB(0xe3223c22b887658)},684,5}, + {CNST_LIMB(0x354d75b3270eaedd),{CNST_LIMB(0x336093f2bc204c55),2,CNST_LIMB(0x2aca293363c5448c),CNST_LIMB(0x17160152eb4aa39f),CNST_LIMB(0x16b50b70fa80acee),CNST_LIMB(0x2493bd25f34e1536),CNST_LIMB(0x18f710cf9496617c)},689,5}, + {CNST_LIMB(0x37b26a3f703f6027),{CNST_LIMB(0x2629d54caca5a93b),2,CNST_LIMB(0x213657023f027f64),CNST_LIMB(0x257ed9007720600c),CNST_LIMB(0xaf3dcc0f043ce98),CNST_LIMB(0x115787f3ada80173),CNST_LIMB(0x7071885da2772a7)},694,5}, + {CNST_LIMB(0x3a2d837d37f39e39),{CNST_LIMB(0x199e982941bda182),2,CNST_LIMB(0x1749f20b2031871c),CNST_LIMB(0x153d7d45eae3fbc6),CNST_LIMB(0x3035b3e81047b52f),CNST_LIMB(0x3096ed6d9a28fa5a),CNST_LIMB(0x221887c4142d7434)},699,5}, + {CNST_LIMB(0x3d6201596c85db3f),{CNST_LIMB(0xaea3e9ef4bf14aa),2,CNST_LIMB(0xa77fa9a4de89304),CNST_LIMB(0x140df851fb641569),CNST_LIMB(0x275b27f619d2cffb),CNST_LIMB(0x16df2d5134102662),CNST_LIMB(0x10ab318b9b8a8aef)},704,5}, + {CNST_LIMB(0x401080f68635f765),{CNST_LIMB(0xff7c1a4f020138fa),1,CNST_LIMB(0x3fce7d1c6d5e19d1),CNST_LIMB(0x1feb2b2abf929ebc),CNST_LIMB(0x279cb7a4291af740),CNST_LIMB(0x384bce4293f19637),CNST_LIMB(0x168a9776844c9b6f)},709,5}, + {CNST_LIMB(0x41c3dea2c7c4509b),{CNST_LIMB(0xf2421126ad7a2852),1,CNST_LIMB(0x3ab46417a8b30e2f),CNST_LIMB(0x35206295938b9c19),CNST_LIMB(0x317d8909a9980afe),CNST_LIMB(0x195b889376db752f),CNST_LIMB(0xeb8a8f47083a08e)},714,5}, + {CNST_LIMB(0x441255580dcabef7),{CNST_LIMB(0xe1601977719c2988),1,CNST_LIMB(0x33c8fff7d69fc31b),CNST_LIMB(0x3aa78ab59c61fb90),CNST_LIMB(0x3c41600b3a070fd7),CNST_LIMB(0x121266b65d774473),CNST_LIMB(0x5812c8f46959e7)},719,5}, + {CNST_LIMB(0x467e90ff075dfa77),{CNST_LIMB(0xd0d4ccbfd7fdb2ae),1,CNST_LIMB(0x2c844d02e9e6109b),CNST_LIMB(0x395a6f0c5abc0a3c),CNST_LIMB(0x30393c08245d18c3),CNST_LIMB(0xac042a1b1191d06),CNST_LIMB(0x1d0c88b0cc347eed)},724,5}, + {CNST_LIMB(0x35b7e6a52de6b),{CNST_LIMB(0x30ff8515bed6fc1f),14,CNST_LIMB(0x2f4533b937fab),CNST_LIMB(0xeb33cd2951b7),CNST_LIMB(0x28ce28b5e1739),CNST_LIMB(0x30d609f6bade3),CNST_LIMB(0x249a87bc9957)},729,4}, + {CNST_LIMB(0x4b9237b1fac55af1),{CNST_LIMB(0xb19ac3ed68fa0441),1,CNST_LIMB(0x1d4958ea0fafef2d),CNST_LIMB(0x4ba7c350e3c499e),CNST_LIMB(0xe26c59f6a4a42e5),CNST_LIMB(0x4acd391ac5c14c62),CNST_LIMB(0x38a0169051f4a371)},733,5}, + {CNST_LIMB(0x4fa265b31b73c6df),{CNST_LIMB(0x9b7b0be2fb2dbf62),1,CNST_LIMB(0x1118cee6ada4ab63),CNST_LIMB(0x2b4fe57f0434fb44),CNST_LIMB(0x2cffeb10b15bf6),CNST_LIMB(0xe12f06864906a7b),CNST_LIMB(0x2a0824475f11f823)},738,5}, + {CNST_LIMB(0x516d33f3efe608d5),{CNST_LIMB(0x926c85237f2dc355),1,CNST_LIMB(0xbb86424304de581),CNST_LIMB(0x3ec190a9cee7a48e),CNST_LIMB(0xd7d8bfe60d52602),CNST_LIMB(0xdff7561c9c07756),CNST_LIMB(0x3c1d2db82b327710)},743,5}, + {CNST_LIMB(0x545e342d68fbf683),{CNST_LIMB(0x8464ceb2fdd80297),1,CNST_LIMB(0x2e56377c50c1c77),CNST_LIMB(0x474ec2f4bd92576),CNST_LIMB(0x2a5da9663350db1),CNST_LIMB(0x220077cd63148dd2),CNST_LIMB(0x280dcbaf0c2ad61c)},748,5}, + {CNST_LIMB(0x57e94c457826bd6b),{CNST_LIMB(0x74bd3fdb5c8280eb),1,CNST_LIMB(0x502d67750fb2852a),CNST_LIMB(0x45149579eaa28023),CNST_LIMB(0x3bb53a4c0c4db579),CNST_LIMB(0x3a96a3180f221b2),CNST_LIMB(0x27f9af8526a8cf70)},753,5}, + {CNST_LIMB(0x5b9b45655ebf3b79),{CNST_LIMB(0x65b42a0f00510df2),1,CNST_LIMB(0x48c975354281890e),CNST_LIMB(0x2929df87cfd7453c),CNST_LIMB(0x1b6bb026965ae7ed),CNST_LIMB(0x52659a85b7df96c2),CNST_LIMB(0x21db715c0f72134)},758,5}, + {CNST_LIMB(0x5e6ad0d2eaa14c25),{CNST_LIMB(0x5b0e2387ccda26c3),1,CNST_LIMB(0x432a5e5a2abd67b6),CNST_LIMB(0x14b7571d1a05b77d),CNST_LIMB(0x498547c0b3350ce8),CNST_LIMB(0x9d4e28ce05c6c27),CNST_LIMB(0x4913b5ba5c5edc8)},763,5}, + {CNST_LIMB(0x60704759208cd21d),{CNST_LIMB(0x53c7ef8bdf16795b),1,CNST_LIMB(0x3f1f714dbee65bc6),CNST_LIMB(0x25fc61d1a473562),CNST_LIMB(0x158a2ce0171d5fd),CNST_LIMB(0x2f3bdc4b8520f24c),CNST_LIMB(0x4081386865e00703)},768,5}, + {CNST_LIMB(0x63bc6b32a19c883b),{CNST_LIMB(0x488c1dcdc113150a),1,CNST_LIMB(0x3887299abcc6ef8a),CNST_LIMB(0x2aab5731e10d2529),CNST_LIMB(0x5eeeb60320f0bef4),CNST_LIMB(0x18e4d9f1c279596e),CNST_LIMB(0xf478370d7e2465f)},773,5}, + {CNST_LIMB(0x47f6a9e8dab75),{CNST_LIMB(0xc7577d2a861d140e),13,CNST_LIMB(0x435dc14ffaf0e),CNST_LIMB(0x2557057e3745b),CNST_LIMB(0x450b5149277a6),CNST_LIMB(0xda1fae30c112),CNST_LIMB(0x3951ca3221a2d)},778,4}, + {CNST_LIMB(0x6e373b550764872f),{CNST_LIMB(0x294ecadbf29bc1cb),1,CNST_LIMB(0x23918955f136f1a2),CNST_LIMB(0x29cffcf11c6e3647),CNST_LIMB(0x4af7d1191966b3e0),CNST_LIMB(0x38ebd581ce6f80c6),CNST_LIMB(0x14ebbbc9200a6d59)},782,5}, + {CNST_LIMB(0x4ca8ed991d8b9),{CNST_LIMB(0xab7251b581f8c74d),13,CNST_LIMB(0x1639351769382),CNST_LIMB(0x3145f1b0a8e59),CNST_LIMB(0xff20704d1793),CNST_LIMB(0x1cd9e54d284e),CNST_LIMB(0x1602f3ac7db9c)},787,4}, + {CNST_LIMB(0x74b13dc12b016dc1),{CNST_LIMB(0x18ce87a5c4d39e85),1,CNST_LIMB(0x169d847da9fd247e),CNST_LIMB(0x286e093dede24bb5),CNST_LIMB(0x1854fa948ad9109d),CNST_LIMB(0x6b81a8b81781577c),CNST_LIMB(0xad44a3d15bc6be5)},791,5}, + {CNST_LIMB(0x78b0c5ae997e31ef),{CNST_LIMB(0xf811cf8a4bb1f80),1,CNST_LIMB(0xe9e74a2cd039c22),CNST_LIMB(0x30a04d242d0dfd11),CNST_LIMB(0x128fe81eea336414),CNST_LIMB(0x3639736d1defa144),CNST_LIMB(0x5eeb71b0497f58ff)},796,5}, + {CNST_LIMB(0x7dcf3e856f4612d7),{CNST_LIMB(0x47509bc7743383b),1,CNST_LIMB(0x46182f52173da52),CNST_LIMB(0x430e9fd64eeb40e6),CNST_LIMB(0x2774902fd5f53d5b),CNST_LIMB(0x4f5c0d7033943d05),CNST_LIMB(0x3be559075217f3a8)},801,5}, + {CNST_LIMB(0x550e24ca1a54b),{CNST_LIMB(0x81416693b884d74c),13,CNST_LIMB(0xee45b7c01c48),CNST_LIMB(0x3848946d8aec8),CNST_LIMB(0x541aec862a3ac),CNST_LIMB(0x4f2e818315dbc),CNST_LIMB(0xa8197f5fb2b)},806,4}, + {CNST_LIMB(0x573c8f376a18d),{CNST_LIMB(0x779f50fc3a19a6c9),13,CNST_LIMB(0x4fc81955d5129),CNST_LIMB(0xe80abe2896a1),CNST_LIMB(0x3a505801c159e),CNST_LIMB(0x162eeea75d4cd),CNST_LIMB(0x20dd0efbe8570)},810,4}, + {CNST_LIMB(0x589c3c614e917),{CNST_LIMB(0x71cc8c064f8788ee),13,CNST_LIMB(0x325d12375f7e1),CNST_LIMB(0x514f8f320e7d3),CNST_LIMB(0x55cf104cf51d3),CNST_LIMB(0x23278b29858c6),CNST_LIMB(0x3b956eecbdd30)},814,4}, + {CNST_LIMB(0x5a494bafe993d),{CNST_LIMB(0x6aef2ee9b04422dc),13,CNST_LIMB(0x5111950929bd7),CNST_LIMB(0x2c3779cd17b37),CNST_LIMB(0x2b7f886fc6966),CNST_LIMB(0x4f0b47ffa902d),CNST_LIMB(0x10bd268a51d6c)},818,4}, + {CNST_LIMB(0x5bdea84b0b73f),{CNST_LIMB(0x64adca063056bccb),13,CNST_LIMB(0x427b265a68455),CNST_LIMB(0x2ef4f15ac34a6),CNST_LIMB(0x493c4fd89b0ce),CNST_LIMB(0x7e61acb14b3a),CNST_LIMB(0x20d0328207c83)},822,4}, + {CNST_LIMB(0x5d4c55a25a945),{CNST_LIMB(0x5f37ce4e679bb0c3),13,CNST_LIMB(0x5b08caebb5502),CNST_LIMB(0x3d0eab29a51f1),CNST_LIMB(0x3c9ac2f5a187d),CNST_LIMB(0x29304bdf75a79),CNST_LIMB(0x14d681f7ea1f0)},826,4}, + {CNST_LIMB(0x5f286a042b527),{CNST_LIMB(0x585aa50035c6eb19),13,CNST_LIMB(0x1f74be8b4aa53),CNST_LIMB(0x47290f02b2679),CNST_LIMB(0x44c4bd1ee1378),CNST_LIMB(0x51286cbc40de1),CNST_LIMB(0xc379e189a860)},830,4}, + {CNST_LIMB(0x62521adc68615),{CNST_LIMB(0x4d46d1e25221a4ef),13,CNST_LIMB(0x53d112a3ea538),CNST_LIMB(0x26e6ad330e6d8),CNST_LIMB(0x56830d4191021),CNST_LIMB(0xed06536bee19),CNST_LIMB(0x5ba5998aa1cbd)},834,4}, + {CNST_LIMB(0x64f0108522a4b),{CNST_LIMB(0x44a2bea99b1fe52b),13,CNST_LIMB(0x22a1a59e3d4a4),CNST_LIMB(0x55422d57d71a4),CNST_LIMB(0x48b99527500ba),CNST_LIMB(0x5dffbfb3a890f),CNST_LIMB(0x618de61d17b82)},838,4}, + {CNST_LIMB(0x684eced8d04ad),{CNST_LIMB(0x3a25a4304e45cd70),13,CNST_LIMB(0x498e06ad4670c),CNST_LIMB(0x6397605c9b1d3),CNST_LIMB(0x1107048baaf16),CNST_LIMB(0x6292ac8aeb164),CNST_LIMB(0x4def8ba3a7552)},842,4}, + {CNST_LIMB(0x69e938da0b6b9),{CNST_LIMB(0x35644b98f3e9b802),13,CNST_LIMB(0x38dd6fce5c5b4),CNST_LIMB(0x6307e2db6000d),CNST_LIMB(0x56835d316819f),CNST_LIMB(0x2b1da7eb24a08),CNST_LIMB(0xf110b6d6a913)},846,4}, + {CNST_LIMB(0x6bf4be42947af),{CNST_LIMB(0x2f87eee6ccd631e7),13,CNST_LIMB(0x6b0e021f080f0),CNST_LIMB(0x4b469e0f2c53a),CNST_LIMB(0x50664c269b5e3),CNST_LIMB(0x4139b73b961d6),CNST_LIMB(0x13dc91bdbee0f)},850,4}, + {CNST_LIMB(0x6f54dbd6ccf57),{CNST_LIMB(0x26540878c92cd039),13,CNST_LIMB(0x382053afc295a),CNST_LIMB(0x2c8c19e89353d),CNST_LIMB(0x534384d9aa927),CNST_LIMB(0x249d03e328fc1),CNST_LIMB(0x2c57702938274)},854,4}, + {CNST_LIMB(0x71632fdcf6c15),{CNST_LIMB(0x20fdcdbf333d83af),13,CNST_LIMB(0x5242218aef575),CNST_LIMB(0x9ab7cecd8cd3),CNST_LIMB(0x4ea4e8bc18b4d),CNST_LIMB(0x16d9320fd98f4),CNST_LIMB(0x2d2b50a730c10)},858,4}, + {CNST_LIMB(0x7317fb257e1e1),{CNST_LIMB(0x1cb50c1361edfd6e),13,CNST_LIMB(0x489cb7c9fe32a),CNST_LIMB(0x258cf78a73422),CNST_LIMB(0x560fbee8c2cf2),CNST_LIMB(0x467156be8e294),CNST_LIMB(0xc593edc4d71f)},862,4}, + {CNST_LIMB(0x75e5d5c5e4577),{CNST_LIMB(0x15ef86e1cee16113),13,CNST_LIMB(0x6eece492ce925),CNST_LIMB(0x561b9134c02bf),CNST_LIMB(0x596b2a81ab56d),CNST_LIMB(0x296835004dd20),CNST_LIMB(0x3160915ef8c65)},866,4}, + {CNST_LIMB(0x788a813bc2fb1),{CNST_LIMB(0xfd74e4e944c107b),13,CNST_LIMB(0x6e15178139c26),CNST_LIMB(0x7828db84f90d2),CNST_LIMB(0x3e1e0cdc0bb1c),CNST_LIMB(0x4bbcd0685b013),CNST_LIMB(0x60b28bb37de31)},870,4}, + {CNST_LIMB(0x7b02c02e67beb),{CNST_LIMB(0xa621b97c2ae6cdb),13,CNST_LIMB(0x2068f6d99eb3c),CNST_LIMB(0x4ba3bacf8ed2f),CNST_LIMB(0x79baf6516f06a),CNST_LIMB(0x34fac2ffdfb3b),CNST_LIMB(0x601bda55ddca3)},874,4}, + {CNST_LIMB(0x7d0b0166731df),{CNST_LIMB(0x60dcab2ebe68654),13,CNST_LIMB(0x5a87235f786e1),CNST_LIMB(0x498c71a4f2c04),CNST_LIMB(0x6c4cf93aac90f),CNST_LIMB(0x2fc43a717ef2e),CNST_LIMB(0x61100c40f26dc)},878,4}, + {CNST_LIMB(0x7f65827009e4b),{CNST_LIMB(0x13671d16472022c),13,CNST_LIMB(0x66a0a221f20de),CNST_LIMB(0x1863cc32757a5),CNST_LIMB(0x72205d2b707de),CNST_LIMB(0x41eb3856479f4),CNST_LIMB(0x62a869dadecf2)},882,4}, + {CNST_LIMB(0x826267aca5d6b),{CNST_LIMB(0xf6a307f100c87643),12,CNST_LIMB(0x18b32a6e55cb2),CNST_LIMB(0x800c79d089746),CNST_LIMB(0x4df069eb6014f),CNST_LIMB(0xa67afd1d0f6b),CNST_LIMB(0x39654bc96e516)},886,4}, + {CNST_LIMB(0x854fadbb02f0d),{CNST_LIMB(0xeb99f80c181c04d8),12,CNST_LIMB(0x530f8982a799b),CNST_LIMB(0x488a5468d8f30),CNST_LIMB(0xcb498b28c81),CNST_LIMB(0x1d791c8466f6a),CNST_LIMB(0x583d384518de9)},890,4}, + {CNST_LIMB(0x86f75f67e5373),{CNST_LIMB(0xe592b4846fa38885),12,CNST_LIMB(0x16d1a804d8305),CNST_LIMB(0x3a9f7db1defba),CNST_LIMB(0x53fa43529d63d),CNST_LIMB(0x380980122856a),CNST_LIMB(0x59320408536cb)},894,4}, + {CNST_LIMB(0x89110415e014b),{CNST_LIMB(0xde220b6a3ca63611),12,CNST_LIMB(0x1183ea4dd5cca),CNST_LIMB(0x6cd0a51299316),CNST_LIMB(0x2c53d4f8b0ee6),CNST_LIMB(0x39ef54aed56eb),CNST_LIMB(0x7f71b2a9bf0fd)},898,4}, + {CNST_LIMB(0x8bbeefef93d97),{CNST_LIMB(0xd4f7338df110e1c1),12,CNST_LIMB(0x3ee5d151be367),CNST_LIMB(0x2e6b9dfc4bbcb),CNST_LIMB(0x225349b2e386e),CNST_LIMB(0x492ce15456b18),CNST_LIMB(0x856a0d6e68759)},902,4}, + {CNST_LIMB(0x8fa29248f38e9),{CNST_LIMB(0xc84479a2d3ad73b2),12,CNST_LIMB(0x282c97bed2bdc),CNST_LIMB(0x86b44220fa8e0),CNST_LIMB(0x497c548d39ada),CNST_LIMB(0x6928a8433805d),CNST_LIMB(0x1d2f77b091c29)},906,4}, + {CNST_LIMB(0x9311da8eb3ea1),{CNST_LIMB(0xbd9c9989aacc578d),12,CNST_LIMB(0x73d0b00fcee87),CNST_LIMB(0x44acd3ec00c9b),CNST_LIMB(0x3b8ead35b82f4),CNST_LIMB(0x7a1ca1fa55a8c),CNST_LIMB(0x98634149273d)},910,4}, + {CNST_LIMB(0x96fc1b51999b5),{CNST_LIMB(0xb20e950936df3d71),12,CNST_LIMB(0x899afa996b260),CNST_LIMB(0x2d7d06dae3233),CNST_LIMB(0x143e323027e28),CNST_LIMB(0x8483b9a26498e),CNST_LIMB(0x689b7b1e2fc91)},914,4}, + {CNST_LIMB(0x99d2dc5aa820b),{CNST_LIMB(0xaa0bd71d4333c056),12,CNST_LIMB(0x71d5124399b20),CNST_LIMB(0x62e94421a897f),CNST_LIMB(0x892c96c6ff4dc),CNST_LIMB(0x54dc6420d0ec4),CNST_LIMB(0x43a10331ebf4f)},918,4}, + {CNST_LIMB(0x9c18c1a21f755),{CNST_LIMB(0xa3d7a1305040e509),12,CNST_LIMB(0x4a6f652c96ebf),CNST_LIMB(0x92a1dbc9a1bc4),CNST_LIMB(0x7856fe0adb2e7),CNST_LIMB(0x65020d02f02aa),CNST_LIMB(0x7983e2f6dcbd)},922,4}, + {CNST_LIMB(0xa019a0d84ce05),{CNST_LIMB(0x99580856e1c2e36b),12,CNST_LIMB(0x5060429959a17),CNST_LIMB(0x8af3dd6c8fedb),CNST_LIMB(0x8521b97cefc72),CNST_LIMB(0x7289dc3848291),CNST_LIMB(0x51cb410c11cef)},926,4}, + {CNST_LIMB(0xa3837104af50b),{CNST_LIMB(0x90cc816ca127f31c),12,CNST_LIMB(0x7fcd3ea8e707c),CNST_LIMB(0x1ea9bdca73534),CNST_LIMB(0x3d0d37ad79bcf),CNST_LIMB(0x78befa2ea5ef8),CNST_LIMB(0x8c7846571c14b)},930,4}, + {CNST_LIMB(0xa74ba276e925b),{CNST_LIMB(0x87bcf3ca6aa1f420),12,CNST_LIMB(0x876dcb0272647),CNST_LIMB(0x63761f150b253),CNST_LIMB(0xa347a550c386b),CNST_LIMB(0xb7438cfe5ad4),CNST_LIMB(0x7bca2b8c0aabf)},934,4}, + {CNST_LIMB(0xad0c05b3ae661),{CNST_LIMB(0x7ab7cf1782b58dcf),12,CNST_LIMB(0x54750c4f56635),CNST_LIMB(0x2eac67167559c),CNST_LIMB(0x563c222f2aff7),CNST_LIMB(0x7b738313b7ac1),CNST_LIMB(0x65d997bccd9d9)},938,4}, + {CNST_LIMB(0xb0da5211cc3e7),{CNST_LIMB(0x72916ab867f7595c),12,CNST_LIMB(0xfa941ccadf01),CNST_LIMB(0x8d756d36295ea),CNST_LIMB(0x4f9f479e132fd),CNST_LIMB(0x18526df562fde),CNST_LIMB(0x434f07e1d9d33)},942,4}, + {CNST_LIMB(0xb36ca8c3991af),{CNST_LIMB(0x6d41bd767e129ba0),12,CNST_LIMB(0x13836edce5114),CNST_LIMB(0xa52c71bc138ab),CNST_LIMB(0x339d5f264e899),CNST_LIMB(0x65473fc2cfa57),CNST_LIMB(0x4714fd9da5ac0)},946,4}, + {CNST_LIMB(0xb6694790c60df),{CNST_LIMB(0x6746add17a9a2fee),12,CNST_LIMB(0x4c2521610f0f4),CNST_LIMB(0x1ef55755cab96),CNST_LIMB(0x3bb413c494cbb),CNST_LIMB(0x59bedca68abba),CNST_LIMB(0x618c95ba5598b)},950,4}, + {CNST_LIMB(0xb89a345c48d7d),{CNST_LIMB(0x6302ff6c309d06ee),12,CNST_LIMB(0x2296406fcba90),CNST_LIMB(0x4d697f4e83909),CNST_LIMB(0xa16067eedb775),CNST_LIMB(0xa50f824607f2b),CNST_LIMB(0x3d3946b54c9f9)},954,4}, + {CNST_LIMB(0xbb02a8b8a132b),{CNST_LIMB(0x5e70bfded3b337fc),12,CNST_LIMB(0x8c29c2d62d33),CNST_LIMB(0x3f082e296ef8f),CNST_LIMB(0x49afe57a19b90),CNST_LIMB(0xb7bd5be58da15),CNST_LIMB(0x8de61bd7e627f)},958,4}, + {CNST_LIMB(0xbd6468bb171ff),{CNST_LIMB(0x5a0880d51b052fd7),12,CNST_LIMB(0x64a7322bed5a0),CNST_LIMB(0x3f94ed2b89267),CNST_LIMB(0x980b9bde44b2d),CNST_LIMB(0x4a6676c0e7d13),CNST_LIMB(0xb24baad1f0c40)},962,4}, + {CNST_LIMB(0xc17671b548641),{CNST_LIMB(0x52c0b00a813a011e),12,CNST_LIMB(0x85095e7597d4),CNST_LIMB(0x55524352a702c),CNST_LIMB(0x868164742fab5),CNST_LIMB(0x3b3bcfdffb2cf),CNST_LIMB(0xab11b067d542f)},966,4}, + {CNST_LIMB(0xc57f07d496e1b),{CNST_LIMB(0x4bd58ed22f4b2aac),12,CNST_LIMB(0x449a9c42f9a11),CNST_LIMB(0x2b9c2279a88de),CNST_LIMB(0xa905cf41733e1),CNST_LIMB(0x206b2bfa8b896),CNST_LIMB(0xb378d16c66efd)},970,4}, + {CNST_LIMB(0xc814b88200ac3),{CNST_LIMB(0x478c251716699c98),12,CNST_LIMB(0x97df5b023b898),CNST_LIMB(0x5507d796eedc1),CNST_LIMB(0xb4a34312d58e3),CNST_LIMB(0x4324fc6d4f6f2),CNST_LIMB(0x29d3a7f3d88da)},974,4}, + {CNST_LIMB(0xcb958ba8e9259),{CNST_LIMB(0x41e93d5390ce4a3c),12,CNST_LIMB(0x75906ffdbe592),CNST_LIMB(0x35d1e8b619b02),CNST_LIMB(0x5535c122a3ba7),CNST_LIMB(0xb2c9d287f29c8),CNST_LIMB(0x7f9a7f1adf9d9)},978,4}, + {CNST_LIMB(0xcfaa956d67517),{CNST_LIMB(0x3b9549c76b39f2a8),12,CNST_LIMB(0x44a2e5454ad61),CNST_LIMB(0xa8d0541bab05b),CNST_LIMB(0x801e8693083d4),CNST_LIMB(0xc17c6af57bddf),CNST_LIMB(0xc7b4d9a0870d9)},982,4}, + {CNST_LIMB(0xd56380a0e8273),{CNST_LIMB(0x331ecd3feca3d608),12,CNST_LIMB(0xc5686ff8a7efd),CNST_LIMB(0x61e35c54a4f3f),CNST_LIMB(0x4bf5dc73ede0f),CNST_LIMB(0x2bf7f029f09a5),CNST_LIMB(0x718dc3463c882)},986,4}, + {CNST_LIMB(0xd9c8b65d94f5b),{CNST_LIMB(0x2cec062e71d179c4),12,CNST_LIMB(0xa3aaac38dbec6),CNST_LIMB(0x78cabf09fa56c),CNST_LIMB(0xcaf0fccc6b30b),CNST_LIMB(0xce30344eb1fac),CNST_LIMB(0x4ba46e5575b11)},990,4}, + {CNST_LIMB(0xdc90a482debcb),{CNST_LIMB(0x2920b89d6fc02e7f),12,CNST_LIMB(0x9f0f9b3b403a),CNST_LIMB(0x619327b332542),CNST_LIMB(0xa75eae1f8ff9f),CNST_LIMB(0x62350a1cba491),CNST_LIMB(0x22ac2e8eb19f9)},994,4}, + {CNST_LIMB(0xe0ac9922e6235),{CNST_LIMB(0x23b187206556b5c4),12,CNST_LIMB(0x157440c67a3c9),CNST_LIMB(0x696b5be3cc464),CNST_LIMB(0x2ebcde890e790),CNST_LIMB(0xae767f93832de),CNST_LIMB(0xcb1eade2d80a8)},998,4} +#endif diff --git a/vere/ext/gmp/gen/aarch64-macos/config.h b/vere/ext/gmp/gen/aarch64-macos/config.h new file mode 100644 index 0000000..dd1ca7f --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/config.h @@ -0,0 +1,668 @@ +/* config.h. Generated from config.in by configure. */ +/* config.in. Generated from configure.ac by autoheader. */ + +/* + +Copyright 1996-2020 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + +or + + * the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any + later version. + +or both in parallel, as here. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library. If not, +see https://www.gnu.org/licenses/. +*/ + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* The gmp-mparam.h file (a string) the tune program should suggest updating. + */ +#define GMP_MPARAM_H_SUGGEST "./mpn/arm64/gmp-mparam.h" + +/* Define to 1 if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Define to 1 if alloca() works (via gmp-impl.h). */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((const)) */ +#define HAVE_ATTRIBUTE_CONST 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((malloc)) */ +#define HAVE_ATTRIBUTE_MALLOC 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((mode (XX))) + */ +#define HAVE_ATTRIBUTE_MODE 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((noreturn)) */ +#define HAVE_ATTRIBUTE_NORETURN 1 + +/* Define to 1 if you have the `attr_get' function. */ +/* #undef HAVE_ATTR_GET */ + +/* Define to 1 if tests/libtests has calling conventions checking for the CPU + */ +/* #undef HAVE_CALLING_CONVENTIONS */ + +/* Define to 1 if you have the `clock' function. */ +#define HAVE_CLOCK 1 + +/* Define to 1 if you have the `clock_gettime' function */ +#define HAVE_CLOCK_GETTIME 1 + +/* Define to 1 if you have the `cputime' function. */ +/* #undef HAVE_CPUTIME */ + +/* Define to 1 if you have the declaration of `fgetc', and to 0 if you don't. + */ +#define HAVE_DECL_FGETC 1 + +/* Define to 1 if you have the declaration of `fscanf', and to 0 if you don't. + */ +#define HAVE_DECL_FSCANF 1 + +/* Define to 1 if you have the declaration of `optarg', and to 0 if you don't. + */ +#define HAVE_DECL_OPTARG 1 + +/* Define to 1 if you have the declaration of `sys_errlist', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_ERRLIST 1 + +/* Define to 1 if you have the declaration of `sys_nerr', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_NERR 1 + +/* Define to 1 if you have the declaration of `ungetc', and to 0 if you don't. + */ +#define HAVE_DECL_UNGETC 1 + +/* Define to 1 if you have the declaration of `vfprintf', and to 0 if you + don't. */ +#define HAVE_DECL_VFPRINTF 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define one of the following to 1 for the format of a `double'. + If your format is not among these choices, or you don't know what it is, + then leave all undefined. + IEEE_LITTLE_SWAPPED means little endian, but with the two 4-byte halves + swapped, as used by ARM CPUs in little endian mode. */ +/* #undef HAVE_DOUBLE_IEEE_BIG_ENDIAN */ +#define HAVE_DOUBLE_IEEE_LITTLE_ENDIAN 1 +/* #undef HAVE_DOUBLE_IEEE_LITTLE_SWAPPED */ +/* #undef HAVE_DOUBLE_VAX_D */ +/* #undef HAVE_DOUBLE_VAX_G */ +/* #undef HAVE_DOUBLE_CRAY_CFP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define to 1 if you have the `getrusage' function. */ +#define HAVE_GETRUSAGE 1 + +/* Define to 1 if you have the `getsysinfo' function. */ +/* #undef HAVE_GETSYSINFO */ + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((visibility)) + and __attribute__ ((alias)) */ +/* #undef HAVE_HIDDEN_ALIAS */ + +/* Define one of these to 1 for the host CPU family. + If your CPU is not in any of these families, leave all undefined. + For an AMD64 chip, define "x86" in ABI=32, but not in ABI=64. */ +/* #undef HAVE_HOST_CPU_FAMILY_alpha */ +/* #undef HAVE_HOST_CPU_FAMILY_m68k */ +/* #undef HAVE_HOST_CPU_FAMILY_power */ +/* #undef HAVE_HOST_CPU_FAMILY_powerpc */ +/* #undef HAVE_HOST_CPU_FAMILY_x86 */ +/* #undef HAVE_HOST_CPU_FAMILY_x86_64 */ + +/* Define one of the following to 1 for the host CPU, as per the output of + ./config.guess. If your CPU is not listed here, leave all undefined. */ +/* #undef HAVE_HOST_CPU_alphaev67 */ +/* #undef HAVE_HOST_CPU_alphaev68 */ +/* #undef HAVE_HOST_CPU_alphaev7 */ +/* #undef HAVE_HOST_CPU_m68020 */ +/* #undef HAVE_HOST_CPU_m68030 */ +/* #undef HAVE_HOST_CPU_m68040 */ +/* #undef HAVE_HOST_CPU_m68060 */ +/* #undef HAVE_HOST_CPU_m68360 */ +/* #undef HAVE_HOST_CPU_powerpc604 */ +/* #undef HAVE_HOST_CPU_powerpc604e */ +/* #undef HAVE_HOST_CPU_powerpc750 */ +/* #undef HAVE_HOST_CPU_powerpc7400 */ +/* #undef HAVE_HOST_CPU_supersparc */ +/* #undef HAVE_HOST_CPU_i386 */ +/* #undef HAVE_HOST_CPU_i586 */ +/* #undef HAVE_HOST_CPU_i686 */ +/* #undef HAVE_HOST_CPU_pentium */ +/* #undef HAVE_HOST_CPU_pentiummmx */ +/* #undef HAVE_HOST_CPU_pentiumpro */ +/* #undef HAVE_HOST_CPU_pentium2 */ +/* #undef HAVE_HOST_CPU_pentium3 */ +/* #undef HAVE_HOST_CPU_pentium4 */ +/* #undef HAVE_HOST_CPU_core2 */ +/* #undef HAVE_HOST_CPU_nehalem */ +/* #undef HAVE_HOST_CPU_westmere */ +/* #undef HAVE_HOST_CPU_sandybridge */ +/* #undef HAVE_HOST_CPU_ivybridge */ +/* #undef HAVE_HOST_CPU_haswell */ +/* #undef HAVE_HOST_CPU_broadwell */ +/* #undef HAVE_HOST_CPU_skylake */ +/* #undef HAVE_HOST_CPU_silvermont */ +/* #undef HAVE_HOST_CPU_goldmont */ +/* #undef HAVE_HOST_CPU_k8 */ +/* #undef HAVE_HOST_CPU_k10 */ +/* #undef HAVE_HOST_CPU_bulldozer */ +/* #undef HAVE_HOST_CPU_piledriver */ +/* #undef HAVE_HOST_CPU_steamroller */ +/* #undef HAVE_HOST_CPU_excavator */ +/* #undef HAVE_HOST_CPU_zen */ +/* #undef HAVE_HOST_CPU_bobcat */ +/* #undef HAVE_HOST_CPU_jaguar */ +/* #undef HAVE_HOST_CPU_s390_z900 */ +/* #undef HAVE_HOST_CPU_s390_z990 */ +/* #undef HAVE_HOST_CPU_s390_z9 */ +/* #undef HAVE_HOST_CPU_s390_z10 */ +/* #undef HAVE_HOST_CPU_s390_z196 */ + +/* Define to 1 iff we have a s390 with 64-bit registers. */ +/* #undef HAVE_HOST_CPU_s390_zarch */ + +/* Define to 1 if the system has the type `intmax_t'. */ +#define HAVE_INTMAX_T 1 + +/* Define to 1 if the system has the type `intptr_t'. */ +#define HAVE_INTPTR_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_INVENT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LANGINFO_H 1 + +/* Define one of these to 1 for the endianness of `mp_limb_t'. + If the endianness is not a simple big or little, or you don't know what + it is, then leave both undefined. */ +/* #undef HAVE_LIMB_BIG_ENDIAN */ +#define HAVE_LIMB_LITTLE_ENDIAN 1 + +/* Define to 1 if you have the `localeconv' function. */ +#define HAVE_LOCALECONV 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if the system has the type `long double'. */ +#define HAVE_LONG_DOUBLE 1 + +/* Define to 1 if the system has the type `long long'. */ +#define HAVE_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACHINE_HAL_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `mmap' function. */ +#define HAVE_MMAP 1 + +/* Define to 1 if you have the `mprotect' function. */ +#define HAVE_MPROTECT 1 + +/* Define to 1 each of the following for which a native (ie. CPU specific) + implementation of the corresponding routine exists. */ +#define HAVE_NATIVE_mpn_add_n 1 +/* #undef HAVE_NATIVE_mpn_add_n_sub_n */ +#define HAVE_NATIVE_mpn_add_nc 1 +/* #undef HAVE_NATIVE_mpn_addaddmul_1msb0 */ +#define HAVE_NATIVE_mpn_addlsh1_n 1 +#define HAVE_NATIVE_mpn_addlsh2_n 1 +/* #undef HAVE_NATIVE_mpn_addlsh_n */ +/* #undef HAVE_NATIVE_mpn_addlsh1_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addmul_1c */ +/* #undef HAVE_NATIVE_mpn_addmul_2 */ +/* #undef HAVE_NATIVE_mpn_addmul_3 */ +/* #undef HAVE_NATIVE_mpn_addmul_4 */ +/* #undef HAVE_NATIVE_mpn_addmul_5 */ +/* #undef HAVE_NATIVE_mpn_addmul_6 */ +/* #undef HAVE_NATIVE_mpn_addmul_7 */ +/* #undef HAVE_NATIVE_mpn_addmul_8 */ +/* #undef HAVE_NATIVE_mpn_addmul_2s */ +#define HAVE_NATIVE_mpn_and_n 1 +#define HAVE_NATIVE_mpn_andn_n 1 +#define HAVE_NATIVE_mpn_bdiv_dbm1c 1 +#define HAVE_NATIVE_mpn_bdiv_q_1 1 +#define HAVE_NATIVE_mpn_pi1_bdiv_q_1 1 +#define HAVE_NATIVE_mpn_cnd_add_n 1 +#define HAVE_NATIVE_mpn_cnd_sub_n 1 +#define HAVE_NATIVE_mpn_com 1 +#define HAVE_NATIVE_mpn_copyd 1 +#define HAVE_NATIVE_mpn_copyi 1 +/* #undef HAVE_NATIVE_mpn_div_qr_1n_pi1 */ +/* #undef HAVE_NATIVE_mpn_div_qr_2 */ +/* #undef HAVE_NATIVE_mpn_divexact_1 */ +/* #undef HAVE_NATIVE_mpn_divexact_by3c */ +/* #undef HAVE_NATIVE_mpn_divrem_1 */ +/* #undef HAVE_NATIVE_mpn_divrem_1c */ +/* #undef HAVE_NATIVE_mpn_divrem_2 */ +/* #undef HAVE_NATIVE_mpn_gcd_1 */ +#define HAVE_NATIVE_mpn_gcd_11 1 +#define HAVE_NATIVE_mpn_gcd_22 1 +#define HAVE_NATIVE_mpn_hamdist 1 +#define HAVE_NATIVE_mpn_invert_limb 1 +#define HAVE_NATIVE_mpn_ior_n 1 +#define HAVE_NATIVE_mpn_iorn_n 1 +#define HAVE_NATIVE_mpn_lshift 1 +#define HAVE_NATIVE_mpn_lshiftc 1 +/* #undef HAVE_NATIVE_mpn_lshsub_n */ +/* #undef HAVE_NATIVE_mpn_mod_1 */ +/* #undef HAVE_NATIVE_mpn_mod_1_1p */ +/* #undef HAVE_NATIVE_mpn_mod_1c */ +/* #undef HAVE_NATIVE_mpn_mod_1s_2p */ +/* #undef HAVE_NATIVE_mpn_mod_1s_4p */ +#define HAVE_NATIVE_mpn_mod_34lsub1 1 +/* #undef HAVE_NATIVE_mpn_modexact_1_odd */ +/* #undef HAVE_NATIVE_mpn_modexact_1c_odd */ +#define HAVE_NATIVE_mpn_mul_1 1 +#define HAVE_NATIVE_mpn_mul_1c 1 +/* #undef HAVE_NATIVE_mpn_mul_2 */ +/* #undef HAVE_NATIVE_mpn_mul_3 */ +/* #undef HAVE_NATIVE_mpn_mul_4 */ +/* #undef HAVE_NATIVE_mpn_mul_5 */ +/* #undef HAVE_NATIVE_mpn_mul_6 */ +/* #undef HAVE_NATIVE_mpn_mul_basecase */ +/* #undef HAVE_NATIVE_mpn_mullo_basecase */ +#define HAVE_NATIVE_mpn_nand_n 1 +#define HAVE_NATIVE_mpn_nior_n 1 +#define HAVE_NATIVE_mpn_popcount 1 +/* #undef HAVE_NATIVE_mpn_preinv_divrem_1 */ +/* #undef HAVE_NATIVE_mpn_preinv_mod_1 */ +/* #undef HAVE_NATIVE_mpn_redc_1 */ +/* #undef HAVE_NATIVE_mpn_redc_2 */ +#define HAVE_NATIVE_mpn_rsblsh1_n 1 +#define HAVE_NATIVE_mpn_rsblsh2_n 1 +/* #undef HAVE_NATIVE_mpn_rsblsh_n */ +/* #undef HAVE_NATIVE_mpn_rsblsh1_nc */ +/* #undef HAVE_NATIVE_mpn_rsblsh2_nc */ +/* #undef HAVE_NATIVE_mpn_rsblsh_nc */ +#define HAVE_NATIVE_mpn_rsh1add_n 1 +/* #undef HAVE_NATIVE_mpn_rsh1add_nc */ +#define HAVE_NATIVE_mpn_rsh1sub_n 1 +/* #undef HAVE_NATIVE_mpn_rsh1sub_nc */ +#define HAVE_NATIVE_mpn_rshift 1 +/* #undef HAVE_NATIVE_mpn_sbpi1_bdiv_r */ +/* #undef HAVE_NATIVE_mpn_sqr_basecase */ +/* #undef HAVE_NATIVE_mpn_sqr_diagonal */ +#define HAVE_NATIVE_mpn_sqr_diag_addlsh1 1 +#define HAVE_NATIVE_mpn_sub_n 1 +#define HAVE_NATIVE_mpn_sub_nc 1 +#define HAVE_NATIVE_mpn_sublsh1_n 1 +#define HAVE_NATIVE_mpn_sublsh2_n 1 +/* #undef HAVE_NATIVE_mpn_sublsh_n */ +/* #undef HAVE_NATIVE_mpn_sublsh1_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh2_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh1_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh2_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh1_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh2_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_submul_1c */ +/* #undef HAVE_NATIVE_mpn_tabselect */ +/* #undef HAVE_NATIVE_mpn_udiv_qrnnd */ +/* #undef HAVE_NATIVE_mpn_udiv_qrnnd_r */ +/* #undef HAVE_NATIVE_mpn_umul_ppmm */ +/* #undef HAVE_NATIVE_mpn_umul_ppmm_r */ +#define HAVE_NATIVE_mpn_xor_n 1 +#define HAVE_NATIVE_mpn_xnor_n 1 + +/* Define to 1 if you have the `nl_langinfo' function. */ +#define HAVE_NL_LANGINFO 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NL_TYPES_H 1 + +/* Define to 1 if you have the `obstack_vprintf' function. */ +/* #undef HAVE_OBSTACK_VPRINTF */ + +/* Define to 1 if you have the `popen' function. */ +#define HAVE_POPEN 1 + +/* Define to 1 if you have the `processor_info' function. */ +#define HAVE_PROCESSOR_INFO 1 + +/* Define to 1 if `struct pst_processor' exists and contains + `psp_iticksperclktick'. */ +/* #undef HAVE_PSP_ITICKSPERCLKTICK */ + +/* Define to 1 if you have the `pstat_getprocessor' function. */ +/* #undef HAVE_PSTAT_GETPROCESSOR */ + +/* Define to 1 if the system has the type `ptrdiff_t'. */ +#define HAVE_PTRDIFF_T 1 + +/* Define to 1 if the system has the type `quad_t'. */ +#define HAVE_QUAD_T 1 + +/* Define to 1 if you have the `raise' function. */ +#define HAVE_RAISE 1 + +/* Define to 1 if you have the `read_real_time' function. */ +/* #undef HAVE_READ_REAL_TIME */ + +/* Define to 1 if you have the `sigaction' function. */ +#define HAVE_SIGACTION 1 + +/* Define to 1 if you have the `sigaltstack' function. */ +#define HAVE_SIGALTSTACK 1 + +/* Define to 1 if you have the `sigstack' function. */ +/* #undef HAVE_SIGSTACK */ + +/* Tune directory speed_cyclecounter, undef=none, 1=32bits, 2=64bits) */ +/* #undef HAVE_SPEED_CYCLECOUNTER */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SSTREAM */ + +/* Define to 1 if the system has the type `stack_t'. */ +#define HAVE_STACK_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if the system has the type `std::locale'. */ +/* #undef HAVE_STD__LOCALE */ + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strnlen' function. */ +#define HAVE_STRNLEN 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the `sysconf' function. */ +#define HAVE_SYSCONF 1 + +/* Define to 1 if you have the `sysctl' function. */ +#define HAVE_SYSCTL 1 + +/* Define to 1 if you have the `sysctlbyname' function. */ +#define HAVE_SYSCTLBYNAME 1 + +/* Define to 1 if you have the `syssgi' function. */ +/* #undef HAVE_SYSSGI */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_ATTRIBUTES_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_IOGRAPH_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_MMAN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PROCESSOR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PSTAT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SYSCTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSSGI_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSTEMCFG_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `times' function. */ +#define HAVE_TIMES 1 + +/* Define to 1 if the system has the type `uint_least32_t'. */ +#define HAVE_UINT_LEAST32_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `vsnprintf' function and it works properly. */ +#define HAVE_VSNPRINTF 1 + +/* Define to 1 for Windos/64 */ +/* #undef HOST_DOS64 */ + +/* Assembler local label prefix */ +#define LSYM_PREFIX "L" + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Define to 1 to disable the use of inline assembly */ +/* #undef NO_ASM */ + +/* Name of package */ +#define PACKAGE "gmp" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "gmp-bugs@gmplib.org, see https://gmplib.org/manual/Reporting-Bugs.html" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "GNU MP" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "GNU MP 6.2.1" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "gmp" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "http://www.gnu.org/software/gmp/" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "6.2.1" + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* The size of `mp_limb_t', as computed by sizeof. */ +#define SIZEOF_MP_LIMB_T 8 + +/* The size of `unsigned', as computed by sizeof. */ +#define SIZEOF_UNSIGNED 4 + +/* The size of `unsigned long', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_LONG 8 + +/* The size of `unsigned short', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_SHORT 2 + +/* The size of `void *', as computed by sizeof. */ +#define SIZEOF_VOID_P 8 + +/* Define to 1 if sscanf requires writable inputs */ +/* #undef SSCANF_WRITABLE_INPUT */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Maximum size the tune program can test for SQR_TOOM2_THRESHOLD */ +#define TUNE_SQR_TOOM2_MAX SQR_TOOM2_MAX_GENERIC + +/* Version number of package */ +#define VERSION "6.2.1" + +/* Define to 1 to enable ASSERT checking, per --enable-assert */ +/* #undef WANT_ASSERT */ + +/* Define to 1 to enable GMP_CPU_TYPE faking cpuid, per --enable-fake-cpuid */ +/* #undef WANT_FAKE_CPUID */ + +/* Define to 1 when building a fat binary. */ +/* #undef WANT_FAT_BINARY */ + +/* Define to 1 to enable FFTs for multiplication, per --enable-fft */ +#define WANT_FFT 1 + +/* Define to 1 to enable old mpn_mul_fft_full for multiplication, per + --enable-old-fft-full */ +/* #undef WANT_OLD_FFT_FULL */ + +/* Define to 1 if --enable-profiling=gprof */ +/* #undef WANT_PROFILING_GPROF */ + +/* Define to 1 if --enable-profiling=instrument */ +/* #undef WANT_PROFILING_INSTRUMENT */ + +/* Define to 1 if --enable-profiling=prof */ +/* #undef WANT_PROFILING_PROF */ + +/* Define one of these to 1 for the desired temporary memory allocation + method, per --enable-alloca. */ +#define WANT_TMP_ALLOCA 1 +/* #undef WANT_TMP_REENTRANT */ +/* #undef WANT_TMP_NOTREENTRANT */ +/* #undef WANT_TMP_DEBUG */ + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* Define to 1 if the assembler understands the mulx instruction */ +/* #undef X86_ASM_MULX */ + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +#define YYTEXT_POINTER 1 + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported directly. */ +#define restrict __restrict +/* Work around a bug in Sun C++: it does not support _Restrict or + __restrict__, even though the corresponding Sun C compiler ends up with + "#define restrict _Restrict" or "#define restrict __restrict__" in the + previous line. Perhaps some future version of Sun C++ will work with + restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ +#if defined __SUNPRO_CC && !defined __RESTRICT +# define _Restrict +# define __restrict__ +#endif + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +/* #undef volatile */ diff --git a/vere/ext/gmp/gen/aarch64-macos/fac_table.h b/vere/ext/gmp/gen/aarch64-macos/fac_table.h new file mode 100644 index 0000000..6708348 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/fac_table.h @@ -0,0 +1,49 @@ +/* This file is automatically generated by gen-fac.c */ + +#if GMP_NUMB_BITS != 64 +Error , error this data is for 64 GMP_NUMB_BITS only +#endif +/* This table is 0!,1!,2!,3!,...,n! where n! has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x2),CNST_LIMB(0x6),CNST_LIMB(0x18),CNST_LIMB(0x78),CNST_LIMB(0x2d0),CNST_LIMB(0x13b0),CNST_LIMB(0x9d80),CNST_LIMB(0x58980),CNST_LIMB(0x375f00),CNST_LIMB(0x2611500),CNST_LIMB(0x1c8cfc00),CNST_LIMB(0x17328cc00),CNST_LIMB(0x144c3b2800),CNST_LIMB(0x13077775800),CNST_LIMB(0x130777758000),CNST_LIMB(0x1437eeecd8000),CNST_LIMB(0x16beecca730000),CNST_LIMB(0x1b02b9306890000),CNST_LIMB(0x21c3677c82b40000) + +/* This table is 0!,1!,2!/2,3!/2,...,n!/2^sn where n!/2^sn is an */ +/* odd integer for each n, and n!/2^sn has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_ODD_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x3),CNST_LIMB(0x3),CNST_LIMB(0xf),CNST_LIMB(0x2d),CNST_LIMB(0x13b),CNST_LIMB(0x13b),CNST_LIMB(0xb13),CNST_LIMB(0x375f),CNST_LIMB(0x26115),CNST_LIMB(0x7233f),CNST_LIMB(0x5cca33),CNST_LIMB(0x2898765),CNST_LIMB(0x260eeeeb),CNST_LIMB(0x260eeeeb),CNST_LIMB(0x286fddd9b),CNST_LIMB(0x16beecca73),CNST_LIMB(0x1b02b930689),CNST_LIMB(0x870d9df20ad),CNST_LIMB(0xb141df4dae31),CNST_LIMB(0x79dd498567c1b),CNST_LIMB(0xaf2e19afc5266d),CNST_LIMB(0x20d8a4d0f4f7347),CNST_LIMB(0x335281867ec241ef) +#define ODD_FACTORIAL_TABLE_MAX CNST_LIMB(0x335281867ec241ef) +#define ODD_FACTORIAL_TABLE_LIMIT (25) + +/* Previous table, continued, values modulo 2^GMP_NUMB_BITS */ +#define ONE_LIMB_ODD_FACTORIAL_EXTTABLE CNST_LIMB(0x9b3093d46fdd5923),CNST_LIMB(0x5e1f9767cc5866b1),CNST_LIMB(0x92dd23d6966aced7),CNST_LIMB(0xa30d0f4f0a196e5b),CNST_LIMB(0x8dc3e5a1977d7755),CNST_LIMB(0x2ab8ce915831734b),CNST_LIMB(0x2ab8ce915831734b),CNST_LIMB(0x81d2a0bc5e5fdcab),CNST_LIMB(0x9efcac82445da75b),CNST_LIMB(0xbc8b95cf58cde171),CNST_LIMB(0xa0e8444a1f3cecf9),CNST_LIMB(0x4191deb683ce3ffd),CNST_LIMB(0xddd3878bc84ebfc7),CNST_LIMB(0xcb39a64b83ff3751),CNST_LIMB(0xf8203f7993fc1495),CNST_LIMB(0xbd2a2a78b35f4bdd),CNST_LIMB(0x84757be6b6d13921),CNST_LIMB(0x3fbbcfc0b524988b),CNST_LIMB(0xbd11ed47c8928df9),CNST_LIMB(0x3c26b59e41c2f4c5),CNST_LIMB(0x677a5137e883fdb3),CNST_LIMB(0xff74e943b03b93dd),CNST_LIMB(0xfe5ebbcb10b2bb97),CNST_LIMB(0xb021f1de3235e7e7),CNST_LIMB(0x33509eb2e743a58f),CNST_LIMB(0x390f9da41279fb7d),CNST_LIMB(0xe5cb0154f031c559),CNST_LIMB(0x93074695ba4ddb6d),CNST_LIMB(0x81c471caa636247f),CNST_LIMB(0xe1347289b5a1d749),CNST_LIMB(0x286f21c3f76ce2ff),CNST_LIMB(0xbe84a2173e8ac7),CNST_LIMB(0x1595065ca215b88b),CNST_LIMB(0xf95877595b018809),CNST_LIMB(0x9c2efe3c5516f887),CNST_LIMB(0x373294604679382b),CNST_LIMB(0xaf1ff7a888adcd35),CNST_LIMB(0x18ddf279a2c5800b),CNST_LIMB(0x18ddf279a2c5800b),CNST_LIMB(0x505a90e2542582cb),CNST_LIMB(0x5bacad2cd8d5dc2b),CNST_LIMB(0xfe3152bcbff89f41) +#define ODD_FACTORIAL_EXTTABLE_LIMIT (67) + +/* This table is 1!!,3!!,...,(2n+1)!! where (2n+1)!! has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_ODD_DOUBLEFACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x3),CNST_LIMB(0xf),CNST_LIMB(0x69),CNST_LIMB(0x3b1),CNST_LIMB(0x289b),CNST_LIMB(0x20fdf),CNST_LIMB(0x1eee11),CNST_LIMB(0x20dcf21),CNST_LIMB(0x27065f73),CNST_LIMB(0x33385d46f),CNST_LIMB(0x49a10615f9),CNST_LIMB(0x730b9982551),CNST_LIMB(0xc223930bef8b),CNST_LIMB(0x15fe07a85a22bf),CNST_LIMB(0x2a9c2ed62ea3521),CNST_LIMB(0x57e22099c030d941) +#define ODD_DOUBLEFACTORIAL_TABLE_MAX CNST_LIMB(0x57e22099c030d941) +#define ODD_DOUBLEFACTORIAL_TABLE_LIMIT (33) + +/* This table x_1, x_2,... contains values s.t. x_n^n has <= GMP_NUMB_BITS bits */ +#define NTH_ROOT_NUMB_MASK_TABLE (GMP_NUMB_MASK),CNST_LIMB(0xffffffff),CNST_LIMB(0x285145),CNST_LIMB(0xffff),CNST_LIMB(0x1bdb),CNST_LIMB(0x659),CNST_LIMB(0x235),CNST_LIMB(0xff) + +/* This table contains inverses of odd factorials, modulo 2^GMP_NUMB_BITS */ + +/* It begins with (2!/2)^-1=1 */ +#define ONE_LIMB_ODD_FACTORIAL_INVERSES_TABLE CNST_LIMB(0x1),CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0xeeeeeeeeeeeeeeef),CNST_LIMB(0x4fa4fa4fa4fa4fa5),CNST_LIMB(0x2ff2ff2ff2ff2ff3),CNST_LIMB(0x2ff2ff2ff2ff2ff3),CNST_LIMB(0x938cc70553e3771b),CNST_LIMB(0xb71c27cddd93e49f),CNST_LIMB(0xb38e3229fcdee63d),CNST_LIMB(0xe684bb63544a4cbf),CNST_LIMB(0xc2f684917ca340fb),CNST_LIMB(0xf747c9cba417526d),CNST_LIMB(0xbb26eb51d7bd49c3),CNST_LIMB(0xbb26eb51d7bd49c3),CNST_LIMB(0xb0a7efb985294093),CNST_LIMB(0xbe4b8c69f259eabb),CNST_LIMB(0x6854d17ed6dc4fb9),CNST_LIMB(0xe1aa904c915f4325),CNST_LIMB(0x3b8206df131cead1),CNST_LIMB(0x79c6009fea76fe13),CNST_LIMB(0xd8c5d381633cd365),CNST_LIMB(0x4841f12b21144677),CNST_LIMB(0x4a91ff68200b0d0f),CNST_LIMB(0x8f9513a58c4f9e8b),CNST_LIMB(0x2b3e690621a42251),CNST_LIMB(0x4f520f00e03c04e7),CNST_LIMB(0x2edf84ee600211d3),CNST_LIMB(0xadcaa2764aaacdfd),CNST_LIMB(0x161f4f9033f4fe63),CNST_LIMB(0x161f4f9033f4fe63),CNST_LIMB(0xbada2932ea4d3e03),CNST_LIMB(0xcec189f3efaa30d3),CNST_LIMB(0xf7475bb68330bf91),CNST_LIMB(0x37eb7bf7d5b01549),CNST_LIMB(0x46b35660a4e91555),CNST_LIMB(0xa567c12d81f151f7),CNST_LIMB(0x4c724007bb2071b1),CNST_LIMB(0xf4a0cce58a016bd),CNST_LIMB(0xfa21068e66106475),CNST_LIMB(0x244ab72b5a318ae1),CNST_LIMB(0x366ce67e080d0f23),CNST_LIMB(0xd666fdae5dd2a449),CNST_LIMB(0xd740ddd0acc06a0d),CNST_LIMB(0xb050bbbb28e6f97b),CNST_LIMB(0x70b003fe890a5c75),CNST_LIMB(0xd03aabff83037427),CNST_LIMB(0x13ec4ca72c783bd7),CNST_LIMB(0x90282c06afdbd96f),CNST_LIMB(0x4414ddb9db4a95d5),CNST_LIMB(0xa2c68735ae6832e9),CNST_LIMB(0xbf72d71455676665),CNST_LIMB(0xa8469fab6b759b7f),CNST_LIMB(0xc1e55b56e606caf9),CNST_LIMB(0x40455630fc4a1cff),CNST_LIMB(0x120a7b0046d16f7),CNST_LIMB(0xa7c3553b08faef23),CNST_LIMB(0x9f0bfd1b08d48639),CNST_LIMB(0xa433ffce9a304d37),CNST_LIMB(0xa22ad1d53915c683),CNST_LIMB(0xcb6cbc723ba5dd1d),CNST_LIMB(0x547fb1b8ab9d0ba3),CNST_LIMB(0x547fb1b8ab9d0ba3),CNST_LIMB(0x8f15a826498852e3) + +/* This table contains 2n-popc(2n) for small n */ + +/* It begins with 2-1=1 (n=1) */ +#define TABLE_2N_MINUS_POPC_2N 1,3,4,7,8,10,11,15,16,18,19,22,23,25,26,31,32,34,35,38,39,41,42,46,47,49,50,53,54,56,57,63,64,66,67,70,71,73,74,78 +#define TABLE_LIMIT_2N_MINUS_POPC_2N 81 +#define ODD_CENTRAL_BINOMIAL_OFFSET (13) + +/* This table contains binomial(2k,k)/2^t */ + +/* It begins with ODD_CENTRAL_BINOMIAL_TABLE_MIN */ +#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_TABLE CNST_LIMB(0x13d66b),CNST_LIMB(0x4c842f),CNST_LIMB(0x93ee7d),CNST_LIMB(0x11e9e123),CNST_LIMB(0x22c60053),CNST_LIMB(0x873ae4d1),CNST_LIMB(0x10757bd97),CNST_LIMB(0x80612c6cd),CNST_LIMB(0xfaa556bc1),CNST_LIMB(0x3d3cc24821),CNST_LIMB(0x77cfeb6bbb),CNST_LIMB(0x7550ebd97c7),CNST_LIMB(0xe5f08695caf),CNST_LIMB(0x386120ffce11),CNST_LIMB(0x6eabb28dd6df),CNST_LIMB(0x3658e31c82a8f),CNST_LIMB(0x6ad2050312783),CNST_LIMB(0x1a42902a5af0bf),CNST_LIMB(0x33ac44f881661d),CNST_LIMB(0xcb764f927d82123),CNST_LIMB(0x190c23fa46b93983),CNST_LIMB(0x62b7609e25caf1b9),CNST_LIMB(0xc29cb72925ef2cff) +#define ODD_CENTRAL_BINOMIAL_TABLE_LIMIT (35) + +/* This table contains the inverses of elements in the previous table. */ +#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_INVERSE_TABLE CNST_LIMB(0x61e5bd199bb12643),CNST_LIMB(0x78321494dc8342cf),CNST_LIMB(0x4fd348704ebf7ad5),CNST_LIMB(0x7e722ba086ab568b),CNST_LIMB(0xa5fcc124265843db),CNST_LIMB(0x89c4a6b18633f431),CNST_LIMB(0x4daa2c15f8ce9227),CNST_LIMB(0x801c618ca9be9605),CNST_LIMB(0x32dc192f948a441),CNST_LIMB(0xd02b90c2bf3be1),CNST_LIMB(0xd897e8c1749aa173),CNST_LIMB(0x54a234fc01fef9f7),CNST_LIMB(0x83ff2ab4d1ff7a4f),CNST_LIMB(0xa427f1c9b304e2f1),CNST_LIMB(0x9c14595d1793651f),CNST_LIMB(0x883a71c607a7b46f),CNST_LIMB(0xd089863c54bc9f2b),CNST_LIMB(0x9022f6bce5d07f3f),CNST_LIMB(0xbec207e218768c35),CNST_LIMB(0x9d70cb4cbb4f168b),CNST_LIMB(0x3c3d3403828a9d2b),CNST_LIMB(0x7672df58c56bc489),CNST_LIMB(0x1e66ca55d727d2ff) + +/* This table contains the values t in the formula binomial(2k,k)/2^t */ +#define CENTRAL_BINOMIAL_2FAC_TABLE 3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3 diff --git a/vere/ext/gmp/gen/aarch64-macos/fib_table.h b/vere/ext/gmp/gen/aarch64-macos/fib_table.h new file mode 100644 index 0000000..66ac4d6 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/fib_table.h @@ -0,0 +1,8 @@ +/* This file generated by gen-fib.c - DO NOT EDIT. */ + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +#define FIB_TABLE_LIMIT 93 +#define FIB_TABLE_LUCNUM_LIMIT 92 diff --git a/vere/ext/gmp/gen/aarch64-macos/mp_bases.h b/vere/ext/gmp/gen/aarch64-macos/mp_bases.h new file mode 100644 index 0000000..08ede78 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mp_bases.h @@ -0,0 +1,13 @@ +/* This file generated by gen-bases.c - DO NOT EDIT. */ + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +/* mp_bases[10] data, as literal values */ +#define MP_BASES_CHARS_PER_LIMB_10 19 +#define MP_BASES_BIG_BASE_CTZ_10 19 +#define MP_BASES_BIG_BASE_10 CNST_LIMB(0x8ac7230489e80000) +#define MP_BASES_BIG_BASE_INVERTED_10 CNST_LIMB(0xd83c94fb6d2ac34a) +#define MP_BASES_BIG_BASE_BINVERTED_10 CNST_LIMB(0x26b172506559ce15) +#define MP_BASES_NORMALIZATION_STEPS_10 0 diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/add_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/add_n.s new file mode 100644 index 0000000..5f2b539 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/add_n.s @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_add_nc + +___gmpn_add_nc: + cmp x4, #1 + b Lent + + .text + .align 3 + .globl ___gmpn_add_n + +___gmpn_add_n: + cmn xzr, xzr +Lent: lsr x17, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x7, [x1] + ldr x11, [x2] + adcs x13, x7, x11 + str x13, [x0],#8 + tbnz x3, #1, Lb11 + +Lb01: cbz x17, Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b Lmid + +Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x17, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: ldp x4, x5, [x1] + ldp x8, x9, [x2] + sub x1, x1, #16 + sub x2, x2, #16 + b Lmid + +Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x17, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + adcs x12, x6, x10 + adcs x13, x7, x11 + stp x12, x13, [x0],#16 +Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + adcs x12, x4, x8 + adcs x13, x5, x9 + stp x12, x13, [x0],#16 + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: adcs x12, x6, x10 + adcs x13, x7, x11 + stp x12, x13, [x0] +Lret: cset x0, cs + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/addlsh1_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/addlsh1_n.s new file mode 100644 index 0000000..bf0bdcb --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/addlsh1_n.s @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_addlsh1_n + +___gmpn_addlsh1_n: + lsr x6, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x5, [x1] + tbnz x3, #1, Lb11 + +Lb01: ldr x11, [x2] + cbz x6, L1 + ldp x8, x9, [x2,#8] + lsl x13, x11, #1 + adds x15, x13, x5 + str x15, [x0],#8 + sub x1, x1, #24 + sub x2, x2, #8 + b Lmid + +L1: lsl x13, x11, #1 + adds x15, x13, x5 + str x15, [x0] + lsr x0, x11, 63 + adc x0, x0, xzr + ret + +Lb11: ldr x9, [x2] + ldp x10, x11, [x2,#8]! + lsl x13, x9, #1 + adds x17, x13, x5 + str x17, [x0],#8 + sub x1, x1, #8 + cbz x6, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: adds x11, xzr, xzr + ldp x8, x9, [x2],#-16 + sub x1, x1, #32 + b Lmid + +Lb10: adds x9, xzr, xzr + ldp x10, x11, [x2] + sub x1, x1, #16 + cbz x6, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #63 + ldp x8, x9, [x2,#16] + extr x13, x11, x10, #63 + adcs x14, x12, x4 + adcs x15, x13, x5 + stp x14, x15, [x0],#16 +Lmid: ldp x4, x5, [x1,#32]! + extr x12, x8, x11, #63 + ldp x10, x11, [x2,#32]! + extr x13, x9, x8, #63 + adcs x16, x12, x4 + adcs x17, x13, x5 + stp x16, x17, [x0],#16 + sub x6, x6, #1 + cbnz x6, Ltop + +Lend: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #63 + extr x13, x11, x10, #63 + adcs x14, x12, x4 + adcs x15, x13, x5 + stp x14, x15, [x0] + lsr x0, x11, 63 + adc x0, x0, xzr + ret + + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/addlsh2_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/addlsh2_n.s new file mode 100644 index 0000000..e167b89 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/addlsh2_n.s @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_addlsh2_n + +___gmpn_addlsh2_n: + lsr x6, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x5, [x1] + tbnz x3, #1, Lb11 + +Lb01: ldr x11, [x2] + cbz x6, L1 + ldp x8, x9, [x2,#8] + lsl x13, x11, #2 + adds x15, x13, x5 + str x15, [x0],#8 + sub x1, x1, #24 + sub x2, x2, #8 + b Lmid + +L1: lsl x13, x11, #2 + adds x15, x13, x5 + str x15, [x0] + lsr x0, x11, 62 + adc x0, x0, xzr + ret + +Lb11: ldr x9, [x2] + ldp x10, x11, [x2,#8]! + lsl x13, x9, #2 + adds x17, x13, x5 + str x17, [x0],#8 + sub x1, x1, #8 + cbz x6, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: adds x11, xzr, xzr + ldp x8, x9, [x2],#-16 + sub x1, x1, #32 + b Lmid + +Lb10: adds x9, xzr, xzr + ldp x10, x11, [x2] + sub x1, x1, #16 + cbz x6, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #62 + ldp x8, x9, [x2,#16] + extr x13, x11, x10, #62 + adcs x14, x12, x4 + adcs x15, x13, x5 + stp x14, x15, [x0],#16 +Lmid: ldp x4, x5, [x1,#32]! + extr x12, x8, x11, #62 + ldp x10, x11, [x2,#32]! + extr x13, x9, x8, #62 + adcs x16, x12, x4 + adcs x17, x13, x5 + stp x16, x17, [x0],#16 + sub x6, x6, #1 + cbnz x6, Ltop + +Lend: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #62 + extr x13, x11, x10, #62 + adcs x14, x12, x4 + adcs x15, x13, x5 + stp x14, x15, [x0] + lsr x0, x11, 62 + adc x0, x0, xzr + ret + + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/addmul_1.s b/vere/ext/gmp/gen/aarch64-macos/mpn/addmul_1.s new file mode 100644 index 0000000..09ce6a3 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/addmul_1.s @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_addmul_1 + +___gmpn_addmul_1: + adds x15, xzr, xzr + + tbz x2, #0, L1 + + ldr x4, [x1],#8 + mul x8, x4, x3 + umulh x12, x4, x3 + ldr x4, [x0] + adds x8, x4, x8 + csinc x15, x12, x12, cc + str x8, [x0],#8 + +L1: tbz x2, #1, L2 + + ldp x4, x5, [x1],#16 + mul x8, x4, x3 + umulh x12, x4, x3 + mul x9, x5, x3 + umulh x13, x5, x3 + adds x8, x8, x15 + adcs x9, x9, x12 + ldp x4, x5, [x0] + adc x15, x13, xzr + adds x8, x4, x8 + adcs x9, x5, x9 + csinc x15, x15, x15, cc + stp x8, x9, [x0],#16 + +L2: lsr x2, x2, #2 + cbz x2, Lle3 + ldp x4, x5, [x1],#32 + ldp x6, x7, [x1,#-16] + b Lmid +Lle3: mov x0, x15 + ret + + .align 4 +Ltop: ldp x4, x5, [x1],#32 + ldp x6, x7, [x1,#-16] + adds x8, x16, x8 + adcs x9, x17, x9 + stp x8, x9, [x0],#32 + adcs x10, x12, x10 + adcs x11, x13, x11 + stp x10, x11, [x0,#-16] + csinc x15, x15, x15, cc +Lmid: sub x2, x2, #1 + mul x8, x4, x3 + umulh x12, x4, x3 + mul x9, x5, x3 + umulh x13, x5, x3 + adds x8, x8, x15 + mul x10, x6, x3 + umulh x14, x6, x3 + adcs x9, x9, x12 + mul x11, x7, x3 + umulh x15, x7, x3 + adcs x10, x10, x13 + ldp x16, x17, [x0] + adcs x11, x11, x14 + ldp x12, x13, [x0,#16] + adc x15, x15, xzr + cbnz x2, Ltop + + adds x8, x16, x8 + adcs x9, x17, x9 + adcs x10, x12, x10 + adcs x11, x13, x11 + stp x8, x9, [x0] + stp x10, x11, [x0,#16] + csinc x0, x15, x15, cc + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/and_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/and_n.s new file mode 100644 index 0000000..6967e35 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/and_n.s @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_and_n + +___gmpn_and_n: + lsr x17, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x7, [x1] + ldr x11, [x2] + and x15, x7, x11 + str x15, [x0],#8 + tbnz x3, #1, Lb11 + +Lb01: cbz x17, Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b Lmid + +Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x17, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b Lmid + +Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x17, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + and x12, x6, x10 + and x13, x7, x11 + stp x12, x13, [x0],#16 +Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + and x12, x4, x8 + and x13, x5, x9 + stp x12, x13, [x0],#16 + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: and x12, x6, x10 + and x13, x7, x11 + stp x12, x13, [x0] +Lret: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/andn_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/andn_n.s new file mode 100644 index 0000000..6f928f1 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/andn_n.s @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_andn_n + +___gmpn_andn_n: + lsr x17, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x7, [x1] + ldr x11, [x2] + bic x15, x7, x11 + str x15, [x0],#8 + tbnz x3, #1, Lb11 + +Lb01: cbz x17, Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b Lmid + +Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x17, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b Lmid + +Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x17, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + bic x12, x6, x10 + bic x13, x7, x11 + stp x12, x13, [x0],#16 +Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + bic x12, x4, x8 + bic x13, x5, x9 + stp x12, x13, [x0],#16 + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: bic x12, x6, x10 + bic x13, x7, x11 + stp x12, x13, [x0] +Lret: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/bdiv_dbm1c.s b/vere/ext/gmp/gen/aarch64-macos/mpn/bdiv_dbm1c.s new file mode 100644 index 0000000..8c606f4 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/bdiv_dbm1c.s @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4 + .text + .align 3 + .globl ___gmpn_bdiv_dbm1c + +___gmpn_bdiv_dbm1c: + ldr x5, [x1], #8 + ands x6, x2, #3 + b.eq Lfi0 + cmp x6, #2 + b.cc Lfi1 + b.eq Lfi2 + +Lfi3: mul x12, x5, x3 + umulh x13, x5, x3 + ldr x5, [x1], #8 + b Llo3 + +Lfi0: mul x10, x5, x3 + umulh x11, x5, x3 + ldr x5, [x1], #8 + b Llo0 + +Lfi1: subs x2, x2, #1 + mul x12, x5, x3 + umulh x13, x5, x3 + b.ls Lwd1 + ldr x5, [x1], #8 + b Llo1 + +Lfi2: mul x10, x5, x3 + umulh x11, x5, x3 + ldr x5, [x1], #8 + b Llo2 + +Ltop: ldr x5, [x1], #8 + subs x4, x4, x10 + str x4, [x0], #8 + sbc x4, x4, x11 +Llo1: mul x10, x5, x3 + umulh x11, x5, x3 + ldr x5, [x1], #8 + subs x4, x4, x12 + str x4, [x0], #8 + sbc x4, x4, x13 +Llo0: mul x12, x5, x3 + umulh x13, x5, x3 + ldr x5, [x1], #8 + subs x4, x4, x10 + str x4, [x0], #8 + sbc x4, x4, x11 +Llo3: mul x10, x5, x3 + umulh x11, x5, x3 + ldr x5, [x1], #8 + subs x4, x4, x12 + str x4, [x0], #8 + sbc x4, x4, x13 +Llo2: subs x2, x2, #4 + mul x12, x5, x3 + umulh x13, x5, x3 + b.hi Ltop + +Lwd2: subs x4, x4, x10 + str x4, [x0], #8 + sbc x4, x4, x11 +Lwd1: subs x4, x4, x12 + str x4, [x0] + sbc x0, x4, x13 + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/bdiv_q_1.s b/vere/ext/gmp/gen/aarch64-macos/mpn/bdiv_q_1.s new file mode 100644 index 0000000..8ee70a5 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/bdiv_q_1.s @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_bdiv_q_1 + +___gmpn_bdiv_q_1: + + rbit x6, x3 + clz x5, x6 + lsr x3, x3, x5 + + adrp x7, ___gmp_binvert_limb_table@GOTPAGE + ubfx x6, x3, 1, 7 + ldr x7, [x7, ___gmp_binvert_limb_table@GOTPAGEOFF] + ldrb w6, [x7, x6] + ubfiz x7, x6, 1, 8 + umull x6, w6, w6 + msub x6, x6, x3, x7 + lsl x7, x6, 1 + mul x6, x6, x6 + msub x6, x6, x3, x7 + lsl x7, x6, 1 + mul x6, x6, x6 + msub x4, x6, x3, x7 + + b ___gmpn_pi1_bdiv_q_1 + + + .text + .align 3 + .globl ___gmpn_pi1_bdiv_q_1 + +___gmpn_pi1_bdiv_q_1: + sub x2, x2, #1 + subs x6, x6, x6 + ldr x9, [x1],#8 + cbz x5, Lnorm + +Lunorm: + lsr x12, x9, x5 + cbz x2, Leu1 + sub x8, xzr, x5 + +Ltpu: ldr x9, [x1],#8 + lsl x7, x9, x8 + orr x7, x7, x12 + sbcs x6, x7, x6 + mul x7, x6, x4 + str x7, [x0],#8 + lsr x12, x9, x5 + umulh x6, x7, x3 + sub x2, x2, #1 + cbnz x2, Ltpu + +Leu1: sbcs x6, x12, x6 + mul x6, x6, x4 + str x6, [x0] + ret + +Lnorm: + mul x5, x9, x4 + str x5, [x0],#8 + cbz x2, Len1 + +Ltpn: ldr x9, [x1],#8 + umulh x5, x5, x3 + sbcs x5, x9, x5 + mul x5, x5, x4 + str x5, [x0],#8 + sub x2, x2, #1 + cbnz x2, Ltpn + +Len1: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/cnd_add_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/cnd_add_n.s new file mode 100644 index 0000000..606d6c4 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/cnd_add_n.s @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_cnd_add_n + +___gmpn_cnd_add_n: + cmp x0, #1 + sbc x0, x0, x0 + + cmn xzr, xzr + + lsr x17, x4, #2 + tbz x4, #0, Lbx0 + +Lbx1: ldr x13, [x3] + ldr x11, [x2] + bic x7, x13, x0 + adcs x9, x11, x7 + str x9, [x1] + tbnz x4, #1, Lb11 + +Lb01: cbz x17, Lrt + ldp x12, x13, [x3,#8] + ldp x10, x11, [x2,#8] + sub x2, x2, #8 + sub x3, x3, #8 + sub x1, x1, #24 + b Lmid + +Lb11: ldp x12, x13, [x3,#8]! + ldp x10, x11, [x2,#8]! + sub x1, x1, #8 + cbz x17, Lend + b Ltop + +Lbx0: ldp x12, x13, [x3] + ldp x10, x11, [x2] + tbnz x4, #1, Lb10 + +Lb00: sub x2, x2, #16 + sub x3, x3, #16 + sub x1, x1, #32 + b Lmid + +Lb10: sub x1, x1, #16 + cbz x17, Lend + + .align 4 +Ltop: bic x6, x12, x0 + bic x7, x13, x0 + ldp x12, x13, [x3,#16] + adcs x8, x10, x6 + adcs x9, x11, x7 + ldp x10, x11, [x2,#16] + stp x8, x9, [x1,#16] +Lmid: bic x6, x12, x0 + bic x7, x13, x0 + ldp x12, x13, [x3,#32]! + adcs x8, x10, x6 + adcs x9, x11, x7 + ldp x10, x11, [x2,#32]! + stp x8, x9, [x1,#32]! + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: bic x6, x12, x0 + bic x7, x13, x0 + adcs x8, x10, x6 + adcs x9, x11, x7 + stp x8, x9, [x1,#16] +Lrt: cset x0, cs + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/cnd_sub_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/cnd_sub_n.s new file mode 100644 index 0000000..be253fe --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/cnd_sub_n.s @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_cnd_sub_n + +___gmpn_cnd_sub_n: + cmp x0, #1 + sbc x0, x0, x0 + + cmp xzr, xzr + + lsr x17, x4, #2 + tbz x4, #0, Lbx0 + +Lbx1: ldr x13, [x3] + ldr x11, [x2] + bic x7, x13, x0 + sbcs x9, x11, x7 + str x9, [x1] + tbnz x4, #1, Lb11 + +Lb01: cbz x17, Lrt + ldp x12, x13, [x3,#8] + ldp x10, x11, [x2,#8] + sub x2, x2, #8 + sub x3, x3, #8 + sub x1, x1, #24 + b Lmid + +Lb11: ldp x12, x13, [x3,#8]! + ldp x10, x11, [x2,#8]! + sub x1, x1, #8 + cbz x17, Lend + b Ltop + +Lbx0: ldp x12, x13, [x3] + ldp x10, x11, [x2] + tbnz x4, #1, Lb10 + +Lb00: sub x2, x2, #16 + sub x3, x3, #16 + sub x1, x1, #32 + b Lmid + +Lb10: sub x1, x1, #16 + cbz x17, Lend + + .align 4 +Ltop: bic x6, x12, x0 + bic x7, x13, x0 + ldp x12, x13, [x3,#16] + sbcs x8, x10, x6 + sbcs x9, x11, x7 + ldp x10, x11, [x2,#16] + stp x8, x9, [x1,#16] +Lmid: bic x6, x12, x0 + bic x7, x13, x0 + ldp x12, x13, [x3,#32]! + sbcs x8, x10, x6 + sbcs x9, x11, x7 + ldp x10, x11, [x2,#32]! + stp x8, x9, [x1,#32]! + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: bic x6, x12, x0 + bic x7, x13, x0 + sbcs x8, x10, x6 + sbcs x9, x11, x7 + stp x8, x9, [x1,#16] +Lrt: cset x0, cc + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/com.s b/vere/ext/gmp/gen/aarch64-macos/mpn/com.s new file mode 100644 index 0000000..5eaf1f4 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/com.s @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_com + +___gmpn_com: + cmp x2, #3 + b.le Lbc + + + tbz x0, #3, Lal2 + ldr x4, [x1],#8 + sub x2, x2, #1 + mvn x4, x4 + str x4, [x0],#8 + +Lal2: ldp x4,x5, [x1],#16 + sub x2, x2, #6 + tbnz x2, #63, Lend + + .align 4 +Ltop: ldp x6,x7, [x1],#32 + mvn x4, x4 + mvn x5, x5 + stp x4,x5, [x0],#32 + ldp x4,x5, [x1,#-16] + mvn x6, x6 + mvn x7, x7 + stp x6,x7, [x0,#-16] + sub x2, x2, #4 + tbz x2, #63, Ltop + +Lend: mvn x4, x4 + mvn x5, x5 + stp x4,x5, [x0],#16 + + + +Lbc: tbz x2, #1, Ltl1 + ldp x4,x5, [x1],#16 + mvn x4, x4 + mvn x5, x5 + stp x4,x5, [x0],#16 +Ltl1: tbz x2, #0, Ltl2 + ldr x4, [x1] + mvn x4, x4 + str x4, [x0] +Ltl2: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/copyd.s b/vere/ext/gmp/gen/aarch64-macos/mpn/copyd.s new file mode 100644 index 0000000..a3a3af6 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/copyd.s @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_copyd + +___gmpn_copyd: + add x0, x0, x2, lsl #3 + add x1, x1, x2, lsl #3 + + cmp x2, #3 + b.le Lbc + + + tbz x0, #3, Lal2 + ldr x4, [x1,#-8]! + sub x2, x2, #1 + str x4, [x0,#-8]! + +Lal2: ldp x4,x5, [x1,#-16]! + sub x2, x2, #6 + tbnz x2, #63, Lend + + .align 4 +Ltop: ldp x6,x7, [x1,#-16] + stp x4,x5, [x0,#-16] + ldp x4,x5, [x1,#-32]! + stp x6,x7, [x0,#-32]! + sub x2, x2, #4 + tbz x2, #63, Ltop + +Lend: stp x4,x5, [x0,#-16]! + + + +Lbc: tbz x2, #1, Ltl1 + ldp x4,x5, [x1,#-16]! + stp x4,x5, [x0,#-16]! +Ltl1: tbz x2, #0, Ltl2 + ldr x4, [x1,#-8] + str x4, [x0,#-8] +Ltl2: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/copyi.s b/vere/ext/gmp/gen/aarch64-macos/mpn/copyi.s new file mode 100644 index 0000000..b87f4fc --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/copyi.s @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_copyi + +___gmpn_copyi: + cmp x2, #3 + b.le Lbc + + + tbz x0, #3, Lal2 + ldr x4, [x1],#8 + sub x2, x2, #1 + str x4, [x0],#8 + +Lal2: ldp x4,x5, [x1],#16 + sub x2, x2, #6 + tbnz x2, #63, Lend + + .align 4 +Ltop: ldp x6,x7, [x1],#32 + stp x4,x5, [x0],#32 + ldp x4,x5, [x1,#-16] + stp x6,x7, [x0,#-16] + sub x2, x2, #4 + tbz x2, #63, Ltop + +Lend: stp x4,x5, [x0],#16 + + + +Lbc: tbz x2, #1, Ltl1 + ldp x4,x5, [x1],#16 + stp x4,x5, [x0],#16 +Ltl1: tbz x2, #0, Ltl2 + ldr x4, [x1] + str x4, [x0] +Ltl2: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/divrem_1.s b/vere/ext/gmp/gen/aarch64-macos/mpn/divrem_1.s new file mode 100644 index 0000000..3d4ca8c --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/divrem_1.s @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_preinv_divrem_1 + +___gmpn_preinv_divrem_1: + cbz x3, Lfz + stp x29, x30, [sp, #-80]! + mov x29, sp + stp x19, x20, [sp, #16] + stp x21, x22, [sp, #32] + stp x23, x24, [sp, #48] + + sub x21, x3, #1 + add x7, x21, x1 + add x20, x2, x21, lsl #3 + add x19, x0, x7, lsl #3 + mov x24, x1 + mov x22, x4 + mov x0, x5 + tbnz x4, #63, Lnentry + mov x23, x6 + b Luentry + + + .text + .align 3 + .globl ___gmpn_divrem_1 + +___gmpn_divrem_1: + cbz x3, Lfz + stp x29, x30, [sp, #-80]! + mov x29, sp + stp x19, x20, [sp, #16] + stp x21, x22, [sp, #32] + stp x23, x24, [sp, #48] + + sub x21, x3, #1 + add x7, x21, x1 + add x20, x2, x21, lsl #3 + add x19, x0, x7, lsl #3 + mov x24, x1 + mov x22, x4 + tbnz x4, #63, Lnormalised + +Lunnorm: + clz x23, x22 + lsl x0, x22, x23 + bl ___gmpn_invert_limb +Luentry: + lsl x22, x22, x23 + ldr x7, [x20], #-8 + sub x8, xzr, x23 + lsr x11, x7, x8 + lsl x1, x7, x23 + cbz x21, Luend + +Lutop:ldr x7, [x20], #-8 + add x2, x11, #1 + mul x10, x11, x0 + umulh x17, x11, x0 + lsr x9, x7, x8 + orr x1, x1, x9 + adds x10, x1, x10 + adc x2, x2, x17 + msub x11, x22, x2, x1 + lsl x1, x7, x23 + cmp x10, x11 + add x14, x11, x22 + csel x11, x14, x11, cc + sbc x2, x2, xzr + cmp x11, x22 + bcs Lufx +Luok: str x2, [x19], #-8 + sub x21, x21, #1 + cbnz x21, Lutop + +Luend:add x2, x11, #1 + mul x10, x11, x0 + umulh x17, x11, x0 + adds x10, x1, x10 + adc x2, x2, x17 + msub x11, x22, x2, x1 + cmp x10, x11 + add x14, x11, x22 + csel x11, x14, x11, cc + sbc x2, x2, xzr + subs x14, x11, x22 + adc x2, x2, xzr + csel x11, x14, x11, cs + str x2, [x19], #-8 + + cbnz x24, Lftop + lsr x0, x11, x23 + ldp x19, x20, [sp, #16] + ldp x21, x22, [sp, #32] + ldp x23, x24, [sp, #48] + ldp x29, x30, [sp], #80 + ret + +Lufx: add x2, x2, #1 + sub x11, x11, x22 + b Luok + + +Lnormalised: + mov x0, x22 + bl ___gmpn_invert_limb +Lnentry: + ldr x7, [x20], #-8 + subs x14, x7, x22 + adc x2, xzr, xzr + csel x11, x14, x7, cs + b Lnok + +Lntop:ldr x1, [x20], #-8 + add x2, x11, #1 + mul x10, x11, x0 + umulh x17, x11, x0 + adds x10, x1, x10 + adc x2, x2, x17 + msub x11, x22, x2, x1 + cmp x10, x11 + add x14, x11, x22 + csel x11, x14, x11, cc + sbc x2, x2, xzr + cmp x11, x22 + bcs Lnfx +Lnok: str x2, [x19], #-8 + sub x21, x21, #1 + tbz x21, #63, Lntop + +Lnend:cbnz x24, Lfrac + mov x0, x11 + ldp x19, x20, [sp, #16] + ldp x21, x22, [sp, #32] + ldp x23, x24, [sp, #48] + ldp x29, x30, [sp], #80 + ret + +Lnfx: add x2, x2, #1 + sub x11, x11, x22 + b Lnok + +Lfrac:mov x23, #0 +Lftop:add x2, x11, #1 + mul x10, x11, x0 + umulh x17, x11, x0 + add x2, x2, x17 + msub x11, x22, x2, xzr + cmp x10, x11 + add x14, x11, x22 + csel x11, x14, x11, cc + sbc x2, x2, xzr + str x2, [x19], #-8 + sub x24, x24, #1 + cbnz x24, Lftop + + lsr x0, x11, x23 + ldp x19, x20, [sp, #16] + ldp x21, x22, [sp, #32] + ldp x23, x24, [sp, #48] + ldp x29, x30, [sp], #80 + ret + + +Lfz: cbz x1, Lzend +Lztop:str xzr, [x0], #8 + sub x1, x1, #1 + cbnz x1, Lztop +Lzend:mov x0, #0 + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/fib_table.c b/vere/ext/gmp/gen/aarch64-macos/mpn/fib_table.c new file mode 100644 index 0000000..a830475 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/fib_table.c @@ -0,0 +1,107 @@ +/* This file generated by gen-fib.c - DO NOT EDIT. */ + +#include "gmp.h" +#include "gmp-impl.h" + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +const mp_limb_t +__gmp_fib_table[FIB_TABLE_LIMIT+2] = { + CNST_LIMB (0x1), /* -1 */ + CNST_LIMB (0x0), /* 0 */ + CNST_LIMB (0x1), /* 1 */ + CNST_LIMB (0x1), /* 2 */ + CNST_LIMB (0x2), /* 3 */ + CNST_LIMB (0x3), /* 4 */ + CNST_LIMB (0x5), /* 5 */ + CNST_LIMB (0x8), /* 6 */ + CNST_LIMB (0xd), /* 7 */ + CNST_LIMB (0x15), /* 8 */ + CNST_LIMB (0x22), /* 9 */ + CNST_LIMB (0x37), /* 10 */ + CNST_LIMB (0x59), /* 11 */ + CNST_LIMB (0x90), /* 12 */ + CNST_LIMB (0xe9), /* 13 */ + CNST_LIMB (0x179), /* 14 */ + CNST_LIMB (0x262), /* 15 */ + CNST_LIMB (0x3db), /* 16 */ + CNST_LIMB (0x63d), /* 17 */ + CNST_LIMB (0xa18), /* 18 */ + CNST_LIMB (0x1055), /* 19 */ + CNST_LIMB (0x1a6d), /* 20 */ + CNST_LIMB (0x2ac2), /* 21 */ + CNST_LIMB (0x452f), /* 22 */ + CNST_LIMB (0x6ff1), /* 23 */ + CNST_LIMB (0xb520), /* 24 */ + CNST_LIMB (0x12511), /* 25 */ + CNST_LIMB (0x1da31), /* 26 */ + CNST_LIMB (0x2ff42), /* 27 */ + CNST_LIMB (0x4d973), /* 28 */ + CNST_LIMB (0x7d8b5), /* 29 */ + CNST_LIMB (0xcb228), /* 30 */ + CNST_LIMB (0x148add), /* 31 */ + CNST_LIMB (0x213d05), /* 32 */ + CNST_LIMB (0x35c7e2), /* 33 */ + CNST_LIMB (0x5704e7), /* 34 */ + CNST_LIMB (0x8cccc9), /* 35 */ + CNST_LIMB (0xe3d1b0), /* 36 */ + CNST_LIMB (0x1709e79), /* 37 */ + CNST_LIMB (0x2547029), /* 38 */ + CNST_LIMB (0x3c50ea2), /* 39 */ + CNST_LIMB (0x6197ecb), /* 40 */ + CNST_LIMB (0x9de8d6d), /* 41 */ + CNST_LIMB (0xff80c38), /* 42 */ + CNST_LIMB (0x19d699a5), /* 43 */ + CNST_LIMB (0x29cea5dd), /* 44 */ + CNST_LIMB (0x43a53f82), /* 45 */ + CNST_LIMB (0x6d73e55f), /* 46 */ + CNST_LIMB (0xb11924e1), /* 47 */ + CNST_LIMB (0x11e8d0a40), /* 48 */ + CNST_LIMB (0x1cfa62f21), /* 49 */ + CNST_LIMB (0x2ee333961), /* 50 */ + CNST_LIMB (0x4bdd96882), /* 51 */ + CNST_LIMB (0x7ac0ca1e3), /* 52 */ + CNST_LIMB (0xc69e60a65), /* 53 */ + CNST_LIMB (0x1415f2ac48), /* 54 */ + CNST_LIMB (0x207fd8b6ad), /* 55 */ + CNST_LIMB (0x3495cb62f5), /* 56 */ + CNST_LIMB (0x5515a419a2), /* 57 */ + CNST_LIMB (0x89ab6f7c97), /* 58 */ + CNST_LIMB (0xdec1139639), /* 59 */ + CNST_LIMB (0x1686c8312d0), /* 60 */ + CNST_LIMB (0x2472d96a909), /* 61 */ + CNST_LIMB (0x3af9a19bbd9), /* 62 */ + CNST_LIMB (0x5f6c7b064e2), /* 63 */ + CNST_LIMB (0x9a661ca20bb), /* 64 */ + CNST_LIMB (0xf9d297a859d), /* 65 */ + CNST_LIMB (0x19438b44a658), /* 66 */ + CNST_LIMB (0x28e0b4bf2bf5), /* 67 */ + CNST_LIMB (0x42244003d24d), /* 68 */ + CNST_LIMB (0x6b04f4c2fe42), /* 69 */ + CNST_LIMB (0xad2934c6d08f), /* 70 */ + CNST_LIMB (0x1182e2989ced1), /* 71 */ + CNST_LIMB (0x1c5575e509f60), /* 72 */ + CNST_LIMB (0x2dd8587da6e31), /* 73 */ + CNST_LIMB (0x4a2dce62b0d91), /* 74 */ + CNST_LIMB (0x780626e057bc2), /* 75 */ + CNST_LIMB (0xc233f54308953), /* 76 */ + CNST_LIMB (0x13a3a1c2360515), /* 77 */ + CNST_LIMB (0x1fc6e116668e68), /* 78 */ + CNST_LIMB (0x336a82d89c937d), /* 79 */ + CNST_LIMB (0x533163ef0321e5), /* 80 */ + CNST_LIMB (0x869be6c79fb562), /* 81 */ + CNST_LIMB (0xd9cd4ab6a2d747), /* 82 */ + CNST_LIMB (0x16069317e428ca9), /* 83 */ + CNST_LIMB (0x23a367c34e563f0), /* 84 */ + CNST_LIMB (0x39a9fadb327f099), /* 85 */ + CNST_LIMB (0x5d4d629e80d5489), /* 86 */ + CNST_LIMB (0x96f75d79b354522), /* 87 */ + CNST_LIMB (0xf444c01834299ab), /* 88 */ + CNST_LIMB (0x18b3c1d91e77decd), /* 89 */ + CNST_LIMB (0x27f80ddaa1ba7878), /* 90 */ + CNST_LIMB (0x40abcfb3c0325745), /* 91 */ + CNST_LIMB (0x68a3dd8e61eccfbd), /* 92 */ + CNST_LIMB (0xa94fad42221f2702), /* 93 */ +}; diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/gcd_11.s b/vere/ext/gmp/gen/aarch64-macos/mpn/gcd_11.s new file mode 100644 index 0000000..a318b2b --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/gcd_11.s @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4 + .text + .align 3 + .globl ___gmpn_gcd_11 + +___gmpn_gcd_11: + subs x3, x0, x1 + b.eq Lend + + .align 4 +Ltop: rbit x12, x3 + clz x12, x12 + csneg x3, x3, x3, cs + csel x0, x1, x0, cs + lsr x1, x3, x12 + subs x3, x0, x1 + b.ne Ltop + +Lend: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/gcd_22.s b/vere/ext/gmp/gen/aarch64-macos/mpn/gcd_22.s new file mode 100644 index 0000000..ff49970 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/gcd_22.s @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_gcd_22 + +___gmpn_gcd_22: + + .align 4 +Ltop: subs x5, x1, x3 + cbz x5, Llowz + sbcs x6, x0, x2 + + rbit x7, x5 + + cneg x5, x5, cc + cinv x6, x6, cc +Lbck: csel x3, x3, x1, cs + csel x2, x2, x0, cs + + clz x7, x7 + sub x8, xzr, x7 + + lsr x1, x5, x7 + lsl x14, x6, x8 + lsr x0, x6, x7 + orr x1, x1, x14 + + orr x11, x0, x2 + cbnz x11, Ltop + + + subs x4, x1, x3 + b.eq Lend1 + + .align 4 +Ltop1:rbit x12, x4 + clz x12, x12 + csneg x4, x4, x4, cs + csel x1, x3, x1, cs + lsr x3, x4, x12 + subs x4, x1, x3 + b.ne Ltop1 +Lend1:mov x0, x1 + mov x1, #0 + ret + +Llowz: + + + subs x5, x0, x2 + b.eq Lend + mov x6, #0 + rbit x7, x5 + cneg x5, x5, cc + b Lbck + +Lend: mov x0, x3 + mov x1, x2 + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/hamdist.s b/vere/ext/gmp/gen/aarch64-macos/mpn/hamdist.s new file mode 100644 index 0000000..d492362 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/hamdist.s @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_hamdist + +___gmpn_hamdist: + + mov x11, #0x1fff + cmp x2, x11 + b.hi Lgt8k + +Llt8k: + movi v4.16b, #0 + movi v5.16b, #0 + + tbz x2, #0, Lxx0 + sub x2, x2, #1 + ld1 {v0.1d}, [x0], #8 + ld1 {v16.1d}, [x1], #8 + eor v0.16b, v0.16b, v16.16b + cnt v6.16b, v0.16b + uadalp v4.8h, v6.16b + +Lxx0: tbz x2, #1, Lx00 + sub x2, x2, #2 + ld1 {v0.2d}, [x0], #16 + ld1 {v16.2d}, [x1], #16 + eor v0.16b, v0.16b, v16.16b + cnt v6.16b, v0.16b + uadalp v4.8h, v6.16b + +Lx00: tbz x2, #2, L000 + subs x2, x2, #4 + ld1 {v0.2d,v1.2d}, [x0], #32 + ld1 {v16.2d,v17.2d}, [x1], #32 + b.ls Lsum + +Lgt4: ld1 {v2.2d,v3.2d}, [x0], #32 + ld1 {v18.2d,v19.2d}, [x1], #32 + eor v0.16b, v0.16b, v16.16b + eor v1.16b, v1.16b, v17.16b + sub x2, x2, #4 + cnt v6.16b, v0.16b + cnt v7.16b, v1.16b + b Lmid + +L000: subs x2, x2, #8 + b.lo Le0 + +Lchu: ld1 {v2.2d,v3.2d}, [x0], #32 + ld1 {v0.2d,v1.2d}, [x0], #32 + ld1 {v18.2d,v19.2d}, [x1], #32 + ld1 {v16.2d,v17.2d}, [x1], #32 + eor v2.16b, v2.16b, v18.16b + eor v3.16b, v3.16b, v19.16b + cnt v6.16b, v2.16b + cnt v7.16b, v3.16b + subs x2, x2, #8 + b.lo Lend + +Ltop: ld1 {v2.2d,v3.2d}, [x0], #32 + ld1 {v18.2d,v19.2d}, [x1], #32 + eor v0.16b, v0.16b, v16.16b + eor v1.16b, v1.16b, v17.16b + uadalp v4.8h, v6.16b + cnt v6.16b, v0.16b + uadalp v5.8h, v7.16b + cnt v7.16b, v1.16b +Lmid: ld1 {v0.2d,v1.2d}, [x0], #32 + ld1 {v16.2d,v17.2d}, [x1], #32 + eor v2.16b, v2.16b, v18.16b + eor v3.16b, v3.16b, v19.16b + subs x2, x2, #8 + uadalp v4.8h, v6.16b + cnt v6.16b, v2.16b + uadalp v5.8h, v7.16b + cnt v7.16b, v3.16b + b.hs Ltop + +Lend: uadalp v4.8h, v6.16b + uadalp v5.8h, v7.16b +Lsum: eor v0.16b, v0.16b, v16.16b + eor v1.16b, v1.16b, v17.16b + cnt v6.16b, v0.16b + cnt v7.16b, v1.16b + uadalp v4.8h, v6.16b + uadalp v5.8h, v7.16b + add v4.8h, v4.8h, v5.8h + +Le0: uaddlp v4.4s, v4.8h + uaddlp v4.2d, v4.4s + mov x0, v4.d[0] + mov x1, v4.d[1] + add x0, x0, x1 + ret + + + + +Lgt8k: + mov x8, x30 + mov x7, x2 + mov x4, #0 + mov x9, #0x1ff0*8 + mov x10, #0x1ff0 + +1: add x5, x0, x9 + add x6, x1, x9 + mov x2, #0x1ff0-8 + movi v4.16b, #0 + movi v5.16b, #0 + bl Lchu + add x4, x4, x0 + mov x0, x5 + mov x1, x6 + sub x7, x7, x10 + cmp x7, x11 + b.hi 1b + + mov x2, x7 + bl Llt8k + add x0, x4, x0 + mov x30, x8 + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/invert_limb.s b/vere/ext/gmp/gen/aarch64-macos/mpn/invert_limb.s new file mode 100644 index 0000000..927ae41 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/invert_limb.s @@ -0,0 +1,347 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_invert_limb + +___gmpn_invert_limb: + lsr x2, x0, #54 + adrp x1, approx_tab@GOTPAGE + and x2, x2, #0x1fe + ldr x1, [x1, approx_tab@GOTPAGEOFF] + ldrh w3, [x1,x2] + lsr x4, x0, #24 + add x4, x4, #1 + ubfiz x2, x3, #11, #16 + umull x3, w3, w3 + mul x3, x3, x4 + sub x2, x2, #1 + sub x2, x2, x3, lsr #40 + lsl x3, x2, #60 + mul x1, x2, x2 + msub x1, x1, x4, x3 + lsl x2, x2, #13 + add x1, x2, x1, lsr #47 + and x2, x0, #1 + neg x3, x2 + and x3, x3, x1, lsr #1 + add x2, x2, x0, lsr #1 + msub x2, x1, x2, x3 + umulh x2, x2, x1 + lsl x1, x1, #31 + add x1, x1, x2, lsr #1 + mul x3, x1, x0 + umulh x2, x1, x0 + adds x4, x3, x0 + adc x0, x2, x0 + sub x0, x1, x0 + ret + + + .section __TEXT,__const + .align 1 + + +approx_tab: + .hword 2045 + .hword 2037 + .hword 2029 + .hword 2021 + .hword 2013 + .hword 2005 + .hword 1998 + .hword 1990 + .hword 1983 + .hword 1975 + .hword 1968 + .hword 1960 + .hword 1953 + .hword 1946 + .hword 1938 + .hword 1931 + .hword 1924 + .hword 1917 + .hword 1910 + .hword 1903 + .hword 1896 + .hword 1889 + .hword 1883 + .hword 1876 + .hword 1869 + .hword 1863 + .hword 1856 + .hword 1849 + .hword 1843 + .hword 1836 + .hword 1830 + .hword 1824 + .hword 1817 + .hword 1811 + .hword 1805 + .hword 1799 + .hword 1792 + .hword 1786 + .hword 1780 + .hword 1774 + .hword 1768 + .hword 1762 + .hword 1756 + .hword 1750 + .hword 1745 + .hword 1739 + .hword 1733 + .hword 1727 + .hword 1722 + .hword 1716 + .hword 1710 + .hword 1705 + .hword 1699 + .hword 1694 + .hword 1688 + .hword 1683 + .hword 1677 + .hword 1672 + .hword 1667 + .hword 1661 + .hword 1656 + .hword 1651 + .hword 1646 + .hword 1641 + .hword 1636 + .hword 1630 + .hword 1625 + .hword 1620 + .hword 1615 + .hword 1610 + .hword 1605 + .hword 1600 + .hword 1596 + .hword 1591 + .hword 1586 + .hword 1581 + .hword 1576 + .hword 1572 + .hword 1567 + .hword 1562 + .hword 1558 + .hword 1553 + .hword 1548 + .hword 1544 + .hword 1539 + .hword 1535 + .hword 1530 + .hword 1526 + .hword 1521 + .hword 1517 + .hword 1513 + .hword 1508 + .hword 1504 + .hword 1500 + .hword 1495 + .hword 1491 + .hword 1487 + .hword 1483 + .hword 1478 + .hword 1474 + .hword 1470 + .hword 1466 + .hword 1462 + .hword 1458 + .hword 1454 + .hword 1450 + .hword 1446 + .hword 1442 + .hword 1438 + .hword 1434 + .hword 1430 + .hword 1426 + .hword 1422 + .hword 1418 + .hword 1414 + .hword 1411 + .hword 1407 + .hword 1403 + .hword 1399 + .hword 1396 + .hword 1392 + .hword 1388 + .hword 1384 + .hword 1381 + .hword 1377 + .hword 1374 + .hword 1370 + .hword 1366 + .hword 1363 + .hword 1359 + .hword 1356 + .hword 1352 + .hword 1349 + .hword 1345 + .hword 1342 + .hword 1338 + .hword 1335 + .hword 1332 + .hword 1328 + .hword 1325 + .hword 1322 + .hword 1318 + .hword 1315 + .hword 1312 + .hword 1308 + .hword 1305 + .hword 1302 + .hword 1299 + .hword 1295 + .hword 1292 + .hword 1289 + .hword 1286 + .hword 1283 + .hword 1280 + .hword 1276 + .hword 1273 + .hword 1270 + .hword 1267 + .hword 1264 + .hword 1261 + .hword 1258 + .hword 1255 + .hword 1252 + .hword 1249 + .hword 1246 + .hword 1243 + .hword 1240 + .hword 1237 + .hword 1234 + .hword 1231 + .hword 1228 + .hword 1226 + .hword 1223 + .hword 1220 + .hword 1217 + .hword 1214 + .hword 1211 + .hword 1209 + .hword 1206 + .hword 1203 + .hword 1200 + .hword 1197 + .hword 1195 + .hword 1192 + .hword 1189 + .hword 1187 + .hword 1184 + .hword 1181 + .hword 1179 + .hword 1176 + .hword 1173 + .hword 1171 + .hword 1168 + .hword 1165 + .hword 1163 + .hword 1160 + .hword 1158 + .hword 1155 + .hword 1153 + .hword 1150 + .hword 1148 + .hword 1145 + .hword 1143 + .hword 1140 + .hword 1138 + .hword 1135 + .hword 1133 + .hword 1130 + .hword 1128 + .hword 1125 + .hword 1123 + .hword 1121 + .hword 1118 + .hword 1116 + .hword 1113 + .hword 1111 + .hword 1109 + .hword 1106 + .hword 1104 + .hword 1102 + .hword 1099 + .hword 1097 + .hword 1095 + .hword 1092 + .hword 1090 + .hword 1088 + .hword 1086 + .hword 1083 + .hword 1081 + .hword 1079 + .hword 1077 + .hword 1074 + .hword 1072 + .hword 1070 + .hword 1068 + .hword 1066 + .hword 1064 + .hword 1061 + .hword 1059 + .hword 1057 + .hword 1055 + .hword 1053 + .hword 1051 + .hword 1049 + .hword 1047 + .hword 1044 + .hword 1042 + .hword 1040 + .hword 1038 + .hword 1036 + .hword 1034 + .hword 1032 + .hword 1030 + .hword 1028 + .hword 1026 + .hword 1024 diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/ior_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/ior_n.s new file mode 100644 index 0000000..4b4b643 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/ior_n.s @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_ior_n + +___gmpn_ior_n: + lsr x17, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x7, [x1] + ldr x11, [x2] + orr x15, x7, x11 + str x15, [x0],#8 + tbnz x3, #1, Lb11 + +Lb01: cbz x17, Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b Lmid + +Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x17, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b Lmid + +Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x17, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + orr x12, x6, x10 + orr x13, x7, x11 + stp x12, x13, [x0],#16 +Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + orr x12, x4, x8 + orr x13, x5, x9 + stp x12, x13, [x0],#16 + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: orr x12, x6, x10 + orr x13, x7, x11 + stp x12, x13, [x0] +Lret: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/iorn_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/iorn_n.s new file mode 100644 index 0000000..73d86e9 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/iorn_n.s @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_iorn_n + +___gmpn_iorn_n: + lsr x17, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x7, [x1] + ldr x11, [x2] + orn x15, x7, x11 + str x15, [x0],#8 + tbnz x3, #1, Lb11 + +Lb01: cbz x17, Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b Lmid + +Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x17, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b Lmid + +Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x17, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + orn x12, x6, x10 + orn x13, x7, x11 + stp x12, x13, [x0],#16 +Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + orn x12, x4, x8 + orn x13, x5, x9 + stp x12, x13, [x0],#16 + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: orn x12, x6, x10 + orn x13, x7, x11 + stp x12, x13, [x0] +Lret: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/jacobitab.h b/vere/ext/gmp/gen/aarch64-macos/mpn/jacobitab.h new file mode 100644 index 0000000..4bdbfcc --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/jacobitab.h @@ -0,0 +1,13 @@ + 0, 0, 0, 0, 0,12, 8, 4, 1, 1, 1, 1, 1,13, 9, 5, + 2, 2, 2, 2, 2, 6,10,14, 3, 3, 3, 3, 3, 7,11,15, + 4,16, 6,18, 4, 0,12, 8, 5,17, 7,19, 5, 1,13, 9, + 6,18, 4,16, 6,10,14, 2, 7,19, 5,17, 7,11,15, 3, + 8,10, 9,11, 8, 4, 0,12, 9,11, 8,10, 9, 5, 1,13, +10, 9,11, 8,10,14, 2, 6,11, 8,10, 9,11,15, 3, 7, +12,22,24,20,12, 8, 4, 0,13,23,25,21,13, 9, 5, 1, +25,21,13,23,14, 2, 6,10,24,20,12,22,15, 3, 7,11, +16, 6,18, 4,16,16,16,16,17, 7,19, 5,17,17,17,17, +18, 4,16, 6,18,22,19,23,19, 5,17, 7,19,23,18,22, +20,12,22,24,20,20,20,20,21,13,23,25,21,21,21,21, +22,24,20,12,22,19,23,18,23,25,21,13,23,18,22,19, +24,20,12,22,15, 3, 7,11,25,21,13,23,14, 2, 6,10, diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/lshift.s b/vere/ext/gmp/gen/aarch64-macos/mpn/lshift.s new file mode 100644 index 0000000..14e5a71 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/lshift.s @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_lshift + +___gmpn_lshift: + add x16, x0, x2, lsl #3 + add x1, x1, x2, lsl #3 + sub x8, xzr, x3 + lsr x17, x2, #2 + tbz x2, #0, Lbx0 + +Lbx1: ldr x4, [x1,#-8] + tbnz x2, #1, Lb11 + +Lb01: lsr x0, x4, x8 + lsl x2, x4, x3 + cbnz x17, Lgt1 + str x2, [x16,#-8] + ret +Lgt1: ldp x4, x5, [x1,#-24] + sub x1, x1, #8 + add x16, x16, #16 + b Llo2 + +Lb11: lsr x0, x4, x8 + lsl x2, x4, x3 + ldp x6, x7, [x1,#-24]! + b Llo3 + +Lbx0: ldp x4, x5, [x1,#-16] + tbz x2, #1, Lb00 + +Lb10: lsr x0, x5, x8 + lsl x13, x5, x3 + lsr x10, x4, x8 + lsl x2, x4, x3 + cbnz x17, Lgt2 + orr x10, x10, x13 + stp x2, x10, [x16,#-16] + ret +Lgt2: ldp x4, x5, [x1,#-32] + orr x10, x10, x13 + str x10, [x16,#-8] + sub x1, x1, #16 + add x16, x16, #8 + b Llo2 + +Lb00: lsr x0, x5, x8 + lsl x13, x5, x3 + lsr x10, x4, x8 + lsl x2, x4, x3 + ldp x6, x7, [x1,#-32]! + orr x10, x10, x13 + str x10, [x16,#-8]! + b Llo0 + + .align 4 +Ltop: ldp x4, x5, [x1,#-16] + orr x10, x10, x13 + orr x11, x12, x2 + stp x10, x11, [x16,#-16] + lsl x2, x6, x3 +Llo2: lsr x10, x4, x8 + lsl x13, x5, x3 + lsr x12, x5, x8 + ldp x6, x7, [x1,#-32]! + orr x10, x10, x13 + orr x11, x12, x2 + stp x10, x11, [x16,#-32]! + lsl x2, x4, x3 +Llo0: sub x17, x17, #1 +Llo3: lsr x10, x6, x8 + lsl x13, x7, x3 + lsr x12, x7, x8 + cbnz x17, Ltop + +Lend: orr x10, x10, x13 + orr x11, x12, x2 + lsl x2, x6, x3 + stp x10, x11, [x16,#-16] + str x2, [x16,#-24] + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/lshiftc.s b/vere/ext/gmp/gen/aarch64-macos/mpn/lshiftc.s new file mode 100644 index 0000000..438136f --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/lshiftc.s @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_lshiftc + +___gmpn_lshiftc: + add x16, x0, x2, lsl #3 + add x1, x1, x2, lsl #3 + sub x8, xzr, x3 + lsr x17, x2, #2 + tbz x2, #0, Lbx0 + +Lbx1: ldr x4, [x1,#-8] + tbnz x2, #1, Lb11 + +Lb01: lsr x0, x4, x8 + lsl x2, x4, x3 + cbnz x17, Lgt1 + mvn x2, x2 + str x2, [x16,#-8] + ret +Lgt1: ldp x4, x5, [x1,#-24] + sub x1, x1, #8 + add x16, x16, #16 + b Llo2 + +Lb11: lsr x0, x4, x8 + lsl x2, x4, x3 + ldp x6, x7, [x1,#-24]! + b Llo3 + +Lbx0: ldp x4, x5, [x1,#-16] + tbz x2, #1, Lb00 + +Lb10: lsr x0, x5, x8 + lsl x13, x5, x3 + lsr x10, x4, x8 + lsl x2, x4, x3 + cbnz x17, Lgt2 + eon x10, x10, x13 + mvn x2, x2 + stp x2, x10, [x16,#-16] + ret +Lgt2: ldp x4, x5, [x1,#-32] + eon x10, x10, x13 + str x10, [x16,#-8] + sub x1, x1, #16 + add x16, x16, #8 + b Llo2 + +Lb00: lsr x0, x5, x8 + lsl x13, x5, x3 + lsr x10, x4, x8 + lsl x2, x4, x3 + ldp x6, x7, [x1,#-32]! + eon x10, x10, x13 + str x10, [x16,#-8]! + b Llo0 + + .align 4 +Ltop: ldp x4, x5, [x1,#-16] + eon x10, x10, x13 + eon x11, x12, x2 + stp x10, x11, [x16,#-16] + lsl x2, x6, x3 +Llo2: lsr x10, x4, x8 + lsl x13, x5, x3 + lsr x12, x5, x8 + ldp x6, x7, [x1,#-32]! + eon x10, x10, x13 + eon x11, x12, x2 + stp x10, x11, [x16,#-32]! + lsl x2, x4, x3 +Llo0: sub x17, x17, #1 +Llo3: lsr x10, x6, x8 + lsl x13, x7, x3 + lsr x12, x7, x8 + cbnz x17, Ltop + +Lend: eon x10, x10, x13 + eon x11, x12, x2 + lsl x2, x6, x3 + stp x10, x11, [x16,#-16] + mvn x2, x2 + str x2, [x16,#-24] + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/mod_34lsub1.s b/vere/ext/gmp/gen/aarch64-macos/mpn/mod_34lsub1.s new file mode 100644 index 0000000..9ba8210 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/mod_34lsub1.s @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5 + .text + .align 3 + .globl ___gmpn_mod_34lsub1 + +___gmpn_mod_34lsub1: + subs x1, x1, #3 + mov x8, #0 + b.lt Lle2 + + ldp x2, x3, [x0, #0] + ldr x4, [x0, #16] + add x0, x0, #24 + subs x1, x1, #3 + b.lt Lsum + cmn x0, #0 + +Ltop: ldp x5, x6, [x0, #0] + ldr x7, [x0, #16] + add x0, x0, #24 + sub x1, x1, #3 + adcs x2, x2, x5 + adcs x3, x3, x6 + adcs x4, x4, x7 + tbz x1, #63, Ltop + + adc x8, xzr, xzr + +Lsum: cmn x1, #2 + mov x5, #0 + b.lo 1f + ldr x5, [x0], #8 +1: mov x6, #0 + b.ls 1f + ldr x6, [x0], #8 +1: adds x2, x2, x5 + adcs x3, x3, x6 + adcs x4, x4, xzr + adc x8, x8, xzr + +Lsum2: + and x0, x2, #0xffffffffffff + add x0, x0, x2, lsr #48 + add x0, x0, x8 + + lsl x8, x3, #16 + and x1, x8, #0xffffffffffff + add x0, x0, x1 + add x0, x0, x3, lsr #32 + + lsl x8, x4, #32 + and x1, x8, #0xffffffffffff + add x0, x0, x1 + add x0, x0, x4, lsr #16 + ret + +Lle2: cmn x1, #1 + b.ne L1 + ldp x2, x3, [x0] + mov x4, #0 + b Lsum2 +L1: ldr x2, [x0] + and x0, x2, #0xffffffffffff + add x0, x0, x2, lsr #48 + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/mp_bases.c b/vere/ext/gmp/gen/aarch64-macos/mpn/mp_bases.c new file mode 100644 index 0000000..c72c531 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/mp_bases.c @@ -0,0 +1,268 @@ +/* This file generated by gen-bases.c - DO NOT EDIT. */ + +#include "gmp-impl.h" + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +const struct bases mp_bases[257] = +{ + /* 0 */ { 0, 0, 0, 0, 0 }, + /* 1 */ { 0, 0, 0, 0, 0 }, + /* 2 */ { 64, CNST_LIMB(0xffffffffffffffff), CNST_LIMB(0x1fffffffffffffff), CNST_LIMB(0x1), CNST_LIMB(0x0) }, + /* 3 */ { 40, CNST_LIMB(0xa1849cc1a9a9e94e), CNST_LIMB(0x32b803473f7ad0f3), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 4 */ { 32, CNST_LIMB(0x7fffffffffffffff), CNST_LIMB(0x3fffffffffffffff), CNST_LIMB(0x2), CNST_LIMB(0x0) }, + /* 5 */ { 27, CNST_LIMB(0x6e40d1a4143dcb94), CNST_LIMB(0x4a4d3c25e68dc57f), CNST_LIMB(0x6765c793fa10079d), CNST_LIMB(0x3ce9a36f23c0fc90) }, + /* 6 */ { 24, CNST_LIMB(0x6308c91b702a7cf4), CNST_LIMB(0x52b803473f7ad0f3), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 7 */ { 22, CNST_LIMB(0x5b3064eb3aa6d388), CNST_LIMB(0x59d5d9fd5010b366), CNST_LIMB(0x3642798750226111), CNST_LIMB(0x2df495ccaa57147b) }, + /* 8 */ { 21, CNST_LIMB(0x5555555555555555), CNST_LIMB(0x5fffffffffffffff), CNST_LIMB(0x3), CNST_LIMB(0x0) }, + /* 9 */ { 20, CNST_LIMB(0x50c24e60d4d4f4a7), CNST_LIMB(0x6570068e7ef5a1e7), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 10 */ { 19, CNST_LIMB(0x4d104d427de7fbcc), CNST_LIMB(0x6a4d3c25e68dc57f), CNST_LIMB(0x8ac7230489e80000), CNST_LIMB(0xd83c94fb6d2ac34a) }, + /* 11 */ { 18, CNST_LIMB(0x4a00270775914e88), CNST_LIMB(0x6eb3a9f01975077f), CNST_LIMB(0x4d28cb56c33fa539), CNST_LIMB(0xa8adf7ae45e7577b) }, + /* 12 */ { 17, CNST_LIMB(0x4768ce0d05818e12), CNST_LIMB(0x72b803473f7ad0f3), CNST_LIMB(0x1eca170c00000000), CNST_LIMB(0xa10c2bec5da8f8f) }, + /* 13 */ { 17, CNST_LIMB(0x452e53e365907bda), CNST_LIMB(0x766a008e4788cbcd), CNST_LIMB(0x780c7372621bd74d), CNST_LIMB(0x10f4becafe412ec3) }, + /* 14 */ { 16, CNST_LIMB(0x433cfffb4b5aae55), CNST_LIMB(0x79d5d9fd5010b366), CNST_LIMB(0x1e39a5057d810000), CNST_LIMB(0xf08480f672b4e86) }, + /* 15 */ { 16, CNST_LIMB(0x41867711b4f85355), CNST_LIMB(0x7d053f6d26089673), CNST_LIMB(0x5b27ac993df97701), CNST_LIMB(0x6779c7f90dc42f48) }, + /* 16 */ { 16, CNST_LIMB(0x3fffffffffffffff), CNST_LIMB(0x7fffffffffffffff), CNST_LIMB(0x4), CNST_LIMB(0x0) }, + /* 17 */ { 15, CNST_LIMB(0x3ea16afd58b10966), CNST_LIMB(0x82cc7edf592262cf), CNST_LIMB(0x27b95e997e21d9f1), CNST_LIMB(0x9c71e11bab279323) }, + /* 18 */ { 15, CNST_LIMB(0x3d64598d154dc4de), CNST_LIMB(0x8570068e7ef5a1e7), CNST_LIMB(0x5da0e1e53c5c8000), CNST_LIMB(0x5dfaa697ec6f6a1c) }, + /* 19 */ { 15, CNST_LIMB(0x3c43c23018bb5563), CNST_LIMB(0x87ef05ae409a0288), CNST_LIMB(0xd2ae3299c1c4aedb), CNST_LIMB(0x3711783f6be7e9ec) }, + /* 20 */ { 14, CNST_LIMB(0x3b3b9a42873069c7), CNST_LIMB(0x8a4d3c25e68dc57f), CNST_LIMB(0x16bcc41e90000000), CNST_LIMB(0x6849b86a12b9b01e) }, + /* 21 */ { 14, CNST_LIMB(0x3a4898f06cf41ac9), CNST_LIMB(0x8c8ddd448f8b845a), CNST_LIMB(0x2d04b7fdd9c0ef49), CNST_LIMB(0x6bf097ba5ca5e239) }, + /* 22 */ { 14, CNST_LIMB(0x39680b13582e7c18), CNST_LIMB(0x8eb3a9f01975077f), CNST_LIMB(0x5658597bcaa24000), CNST_LIMB(0x7b8015c8d7af8f08) }, + /* 23 */ { 14, CNST_LIMB(0x3897b2b751ae561a), CNST_LIMB(0x90c10500d63aa658), CNST_LIMB(0xa0e2073737609371), CNST_LIMB(0x975a24b3a3151b38) }, + /* 24 */ { 13, CNST_LIMB(0x37d5aed131f19c98), CNST_LIMB(0x92b803473f7ad0f3), CNST_LIMB(0xc29e98000000000), CNST_LIMB(0x50bd367972689db1) }, + /* 25 */ { 13, CNST_LIMB(0x372068d20a1ee5ca), CNST_LIMB(0x949a784bcd1b8afe), CNST_LIMB(0x14adf4b7320334b9), CNST_LIMB(0x8c240c4aecb13bb5) }, + /* 26 */ { 13, CNST_LIMB(0x3676867e5d60de29), CNST_LIMB(0x966a008e4788cbcd), CNST_LIMB(0x226ed36478bfa000), CNST_LIMB(0xdbd2e56854e118c9) }, + /* 27 */ { 13, CNST_LIMB(0x35d6deeb388df86f), CNST_LIMB(0x982809d5be7072db), CNST_LIMB(0x383d9170b85ff80b), CNST_LIMB(0x2351ffcaa9c7c4ae) }, + /* 28 */ { 13, CNST_LIMB(0x354071d61c77fa2e), CNST_LIMB(0x99d5d9fd5010b366), CNST_LIMB(0x5a3c23e39c000000), CNST_LIMB(0x6b24188ca33b0636) }, + /* 29 */ { 13, CNST_LIMB(0x34b260c5671b18ac), CNST_LIMB(0x9b74948f5532da4b), CNST_LIMB(0x8e65137388122bcd), CNST_LIMB(0xcc3dceaf2b8ba99d) }, + /* 30 */ { 13, CNST_LIMB(0x342be986572b45cc), CNST_LIMB(0x9d053f6d26089673), CNST_LIMB(0xdd41bb36d259e000), CNST_LIMB(0x2832e835c6c7d6b6) }, + /* 31 */ { 12, CNST_LIMB(0x33ac61b998fbbdf2), CNST_LIMB(0x9e88c6b3626a72aa), CNST_LIMB(0xaee5720ee830681), CNST_LIMB(0x76b6aa272e1873c5) }, + /* 32 */ { 12, CNST_LIMB(0x3333333333333333), CNST_LIMB(0x9fffffffffffffff), CNST_LIMB(0x5), CNST_LIMB(0x0) }, + /* 33 */ { 12, CNST_LIMB(0x32bfd90114c12861), CNST_LIMB(0xa16bad3758efd873), CNST_LIMB(0x172588ad4f5f0981), CNST_LIMB(0x61eaf5d402c7bf4f) }, + /* 34 */ { 12, CNST_LIMB(0x3251dcf6169e45f2), CNST_LIMB(0xa2cc7edf592262cf), CNST_LIMB(0x211e44f7d02c1000), CNST_LIMB(0xeeb658123ffb27ec) }, + /* 35 */ { 12, CNST_LIMB(0x31e8d59f180dc630), CNST_LIMB(0xa4231623369e78e5), CNST_LIMB(0x2ee56725f06e5c71), CNST_LIMB(0x5d5e3762e6fdf509) }, + /* 36 */ { 12, CNST_LIMB(0x3184648db8153e7a), CNST_LIMB(0xa570068e7ef5a1e7), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 37 */ { 12, CNST_LIMB(0x312434e89c35dacd), CNST_LIMB(0xa6b3d78b6d3b24fb), CNST_LIMB(0x5b5b57f8a98a5dd1), CNST_LIMB(0x66ae7831762efb6f) }, + /* 38 */ { 12, CNST_LIMB(0x30c7fa349460a541), CNST_LIMB(0xa7ef05ae409a0288), CNST_LIMB(0x7dcff8986ea31000), CNST_LIMB(0x47388865a00f544) }, + /* 39 */ { 12, CNST_LIMB(0x306f6f4c8432bc6d), CNST_LIMB(0xa92203d587039cc1), CNST_LIMB(0xabd4211662a6b2a1), CNST_LIMB(0x7d673c33a123b54c) }, + /* 40 */ { 12, CNST_LIMB(0x301a557ffbfdd252), CNST_LIMB(0xaa4d3c25e68dc57f), CNST_LIMB(0xe8d4a51000000000), CNST_LIMB(0x19799812dea11197) }, + /* 41 */ { 11, CNST_LIMB(0x2fc873d1fda55f3b), CNST_LIMB(0xab7110e6ce866f2b), CNST_LIMB(0x7a32956ad081b79), CNST_LIMB(0xc27e62e0686feae) }, + /* 42 */ { 11, CNST_LIMB(0x2f799652a4e6dc49), CNST_LIMB(0xac8ddd448f8b845a), CNST_LIMB(0x9f49aaff0e86800), CNST_LIMB(0x9b6e7507064ce7c7) }, + /* 43 */ { 11, CNST_LIMB(0x2f2d8d8f64460aad), CNST_LIMB(0xada3f5fb9c415052), CNST_LIMB(0xce583bb812d37b3), CNST_LIMB(0x3d9ac2bf66cfed94) }, + /* 44 */ { 11, CNST_LIMB(0x2ee42e164e8f53a4), CNST_LIMB(0xaeb3a9f01975077f), CNST_LIMB(0x109b79a654c00000), CNST_LIMB(0xed46bc50ce59712a) }, + /* 45 */ { 11, CNST_LIMB(0x2e9d500984041dbd), CNST_LIMB(0xafbd42b465836767), CNST_LIMB(0x1543beff214c8b95), CNST_LIMB(0x813d97e2c89b8d46) }, + /* 46 */ { 11, CNST_LIMB(0x2e58cec05a6a8144), CNST_LIMB(0xb0c10500d63aa658), CNST_LIMB(0x1b149a79459a3800), CNST_LIMB(0x2e81751956af8083) }, + /* 47 */ { 11, CNST_LIMB(0x2e1688743ef9104c), CNST_LIMB(0xb1bf311e95d00de3), CNST_LIMB(0x224edfb5434a830f), CNST_LIMB(0xdd8e0a95e30c0988) }, + /* 48 */ { 11, CNST_LIMB(0x2dd65df7a583598f), CNST_LIMB(0xb2b803473f7ad0f3), CNST_LIMB(0x2b3fb00000000000), CNST_LIMB(0x7ad4dd48a0b5b167) }, + /* 49 */ { 11, CNST_LIMB(0x2d9832759d5369c4), CNST_LIMB(0xb3abb3faa02166cc), CNST_LIMB(0x3642798750226111), CNST_LIMB(0x2df495ccaa57147b) }, + /* 50 */ { 11, CNST_LIMB(0x2d5beb38dcd1394c), CNST_LIMB(0xb49a784bcd1b8afe), CNST_LIMB(0x43c33c1937564800), CNST_LIMB(0xe392010175ee5962) }, + /* 51 */ { 11, CNST_LIMB(0x2d216f7943e2ba6a), CNST_LIMB(0xb5848226989d33c3), CNST_LIMB(0x54411b2441c3cd8b), CNST_LIMB(0x84eaf11b2fe7738e) }, + /* 52 */ { 11, CNST_LIMB(0x2ce8a82efbb3ff2c), CNST_LIMB(0xb66a008e4788cbcd), CNST_LIMB(0x6851455acd400000), CNST_LIMB(0x3a1e3971e008995d) }, + /* 53 */ { 11, CNST_LIMB(0x2cb17fea7ad7e332), CNST_LIMB(0xb74b1fd64e0753c6), CNST_LIMB(0x80a23b117c8feb6d), CNST_LIMB(0xfd7a462344ffce25) }, + /* 54 */ { 11, CNST_LIMB(0x2c7be2b0cfa1ba50), CNST_LIMB(0xb82809d5be7072db), CNST_LIMB(0x9dff7d32d5dc1800), CNST_LIMB(0x9eca40b40ebcef8a) }, + /* 55 */ { 11, CNST_LIMB(0x2c47bddba92d7463), CNST_LIMB(0xb900e6160002ccfe), CNST_LIMB(0xc155af6faeffe6a7), CNST_LIMB(0x52fa161a4a48e43d) }, + /* 56 */ { 11, CNST_LIMB(0x2c14fffcaa8b131e), CNST_LIMB(0xb9d5d9fd5010b366), CNST_LIMB(0xebb7392e00000000), CNST_LIMB(0x1607a2cbacf930c1) }, + /* 57 */ { 10, CNST_LIMB(0x2be398c3a38be053), CNST_LIMB(0xbaa708f58014d37c), CNST_LIMB(0x50633659656d971), CNST_LIMB(0x97a014f8e3be55f1) }, + /* 58 */ { 10, CNST_LIMB(0x2bb378e758451068), CNST_LIMB(0xbb74948f5532da4b), CNST_LIMB(0x5fa8624c7fba400), CNST_LIMB(0x568df8b76cbf212c) }, + /* 59 */ { 10, CNST_LIMB(0x2b8492108be5e5f7), CNST_LIMB(0xbc3e9ca2e1a05533), CNST_LIMB(0x717d9faa73c5679), CNST_LIMB(0x20ba7c4b4e6ef492) }, + /* 60 */ { 10, CNST_LIMB(0x2b56d6c70d55481b), CNST_LIMB(0xbd053f6d26089673), CNST_LIMB(0x86430aac6100000), CNST_LIMB(0xe81ee46b9ef492f5) }, + /* 61 */ { 10, CNST_LIMB(0x2b2a3a608c72ddd5), CNST_LIMB(0xbdc899ab3ff56c5e), CNST_LIMB(0x9e64d9944b57f29), CNST_LIMB(0x9dc0d10d51940416) }, + /* 62 */ { 10, CNST_LIMB(0x2afeb0f1060c7e41), CNST_LIMB(0xbe88c6b3626a72aa), CNST_LIMB(0xba5ca5392cb0400), CNST_LIMB(0x5fa8ed2f450272a5) }, + /* 63 */ { 10, CNST_LIMB(0x2ad42f3c9aca595c), CNST_LIMB(0xbf45e08bcf06554e), CNST_LIMB(0xdab2ce1d022cd81), CNST_LIMB(0x2ba9eb8c5e04e641) }, + /* 64 */ { 10, CNST_LIMB(0x2aaaaaaaaaaaaaaa), CNST_LIMB(0xbfffffffffffffff), CNST_LIMB(0x6), CNST_LIMB(0x0) }, + /* 65 */ { 10, CNST_LIMB(0x2a82193a13425883), CNST_LIMB(0xc0b73cb42e16914c), CNST_LIMB(0x12aeed5fd3e2d281), CNST_LIMB(0xb67759cc00287bf1) }, + /* 66 */ { 10, CNST_LIMB(0x2a5a717672f66450), CNST_LIMB(0xc16bad3758efd873), CNST_LIMB(0x15c3da1572d50400), CNST_LIMB(0x78621feeb7f4ed33) }, + /* 67 */ { 10, CNST_LIMB(0x2a33aa6e56d9c71c), CNST_LIMB(0xc21d6713f453f356), CNST_LIMB(0x194c05534f75ee29), CNST_LIMB(0x43d55b5f72943bc0) }, + /* 68 */ { 10, CNST_LIMB(0x2a0dbbaa3bdfcea4), CNST_LIMB(0xc2cc7edf592262cf), CNST_LIMB(0x1d56299ada100000), CNST_LIMB(0x173decb64d1d4409) }, + /* 69 */ { 10, CNST_LIMB(0x29e89d244eb4bfaf), CNST_LIMB(0xc379084815b5774c), CNST_LIMB(0x21f2a089a4ff4f79), CNST_LIMB(0xe29fb54fd6b6074f) }, + /* 70 */ { 10, CNST_LIMB(0x29c44740d7db51e6), CNST_LIMB(0xc4231623369e78e5), CNST_LIMB(0x2733896c68d9a400), CNST_LIMB(0xa1f1f5c210d54e62) }, + /* 71 */ { 10, CNST_LIMB(0x29a0b2c743b14d74), CNST_LIMB(0xc4caba789e2b8687), CNST_LIMB(0x2d2cf2c33b533c71), CNST_LIMB(0x6aac7f9bfafd57b2) }, + /* 72 */ { 10, CNST_LIMB(0x297dd8dbb7c22a2d), CNST_LIMB(0xc570068e7ef5a1e7), CNST_LIMB(0x33f506e440000000), CNST_LIMB(0x3b563c2478b72ee2) }, + /* 73 */ { 10, CNST_LIMB(0x295bb2f9285c8c1b), CNST_LIMB(0xc6130af40bc0ecbf), CNST_LIMB(0x3ba43bec1d062211), CNST_LIMB(0x12b536b574e92d1b) }, + /* 74 */ { 10, CNST_LIMB(0x293a3aebe2be1c92), CNST_LIMB(0xc6b3d78b6d3b24fb), CNST_LIMB(0x4455872d8fd4e400), CNST_LIMB(0xdf86c03020404fa5) }, + /* 75 */ { 10, CNST_LIMB(0x29196acc815ebd9f), CNST_LIMB(0xc7527b930c965bf2), CNST_LIMB(0x4e2694539f2f6c59), CNST_LIMB(0xa34adf02234eea8e) }, + /* 76 */ { 10, CNST_LIMB(0x28f93cfb40f5c22a), CNST_LIMB(0xc7ef05ae409a0288), CNST_LIMB(0x5938006c18900000), CNST_LIMB(0x6f46eb8574eb59dd) }, + /* 77 */ { 10, CNST_LIMB(0x28d9ac1badc64117), CNST_LIMB(0xc88983ed6985bae5), CNST_LIMB(0x65ad9912474aa649), CNST_LIMB(0x42459b481df47cec) }, + /* 78 */ { 10, CNST_LIMB(0x28bab310a196b478), CNST_LIMB(0xc92203d587039cc1), CNST_LIMB(0x73ae9ff4241ec400), CNST_LIMB(0x1b424b95d80ca505) }, + /* 79 */ { 10, CNST_LIMB(0x289c4cf88b774469), CNST_LIMB(0xc9b892675266f66c), CNST_LIMB(0x836612ee9c4ce1e1), CNST_LIMB(0xf2c1b982203a0dac) }, + /* 80 */ { 10, CNST_LIMB(0x287e7529fb244e91), CNST_LIMB(0xca4d3c25e68dc57f), CNST_LIMB(0x9502f90000000000), CNST_LIMB(0xb7cdfd9d7bdbab7d) }, + /* 81 */ { 10, CNST_LIMB(0x286127306a6a7a53), CNST_LIMB(0xcae00d1cfdeb43cf), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 82 */ { 10, CNST_LIMB(0x28445ec93f792b1e), CNST_LIMB(0xcb7110e6ce866f2b), CNST_LIMB(0xbebf59a07dab4400), CNST_LIMB(0x57931eeaf85cf64f) }, + /* 83 */ { 10, CNST_LIMB(0x282817e1038950fa), CNST_LIMB(0xcc0052b18b0e2a19), CNST_LIMB(0xd7540d4093bc3109), CNST_LIMB(0x305a944507c82f47) }, + /* 84 */ { 10, CNST_LIMB(0x280c4e90c9ab1f45), CNST_LIMB(0xcc8ddd448f8b845a), CNST_LIMB(0xf2b96616f1900000), CNST_LIMB(0xe007ccc9c22781a) }, + /* 85 */ { 9, CNST_LIMB(0x27f0ff1bc1ee87cd), CNST_LIMB(0xcd19bb053fb0284e), CNST_LIMB(0x336de62af2bca35), CNST_LIMB(0x3e92c42e000eeed4) }, + /* 86 */ { 9, CNST_LIMB(0x27d625ecf571c340), CNST_LIMB(0xcda3f5fb9c415052), CNST_LIMB(0x39235ec33d49600), CNST_LIMB(0x1ebe59130db2795e) }, + /* 87 */ { 9, CNST_LIMB(0x27bbbf95282fcd45), CNST_LIMB(0xce2c97d694adab3f), CNST_LIMB(0x3f674e539585a17), CNST_LIMB(0x268859e90f51b89) }, + /* 88 */ { 9, CNST_LIMB(0x27a1c8c8ddaf84da), CNST_LIMB(0xceb3a9f01975077f), CNST_LIMB(0x4645b6958000000), CNST_LIMB(0xd24cde0463108cfa) }, + /* 89 */ { 9, CNST_LIMB(0x27883e5e7df3f518), CNST_LIMB(0xcf393550f3aa6906), CNST_LIMB(0x4dcb74afbc49c19), CNST_LIMB(0xa536009f37adc383) }, + /* 90 */ { 9, CNST_LIMB(0x276f1d4c9847e90e), CNST_LIMB(0xcfbd42b465836767), CNST_LIMB(0x56064e1d18d9a00), CNST_LIMB(0x7cea06ce1c9ace10) }, + /* 91 */ { 9, CNST_LIMB(0x275662a841b30191), CNST_LIMB(0xd03fda8b97997f33), CNST_LIMB(0x5f04fe2cd8a39fb), CNST_LIMB(0x58db032e72e8ba43) }, + /* 92 */ { 9, CNST_LIMB(0x273e0ba38d15a47b), CNST_LIMB(0xd0c10500d63aa658), CNST_LIMB(0x68d74421f5c0000), CNST_LIMB(0x388cc17cae105447) }, + /* 93 */ { 9, CNST_LIMB(0x2726158c1b13cf03), CNST_LIMB(0xd140c9faa1e5439e), CNST_LIMB(0x738df1f6ab4827d), CNST_LIMB(0x1b92672857620ce0) }, + /* 94 */ { 9, CNST_LIMB(0x270e7dc9c01d8e9b), CNST_LIMB(0xd1bf311e95d00de3), CNST_LIMB(0x7f3afbc9cfb5e00), CNST_LIMB(0x18c6a9575c2ade4) }, + /* 95 */ { 9, CNST_LIMB(0x26f741dd3f070d61), CNST_LIMB(0xd23c41d42727c808), CNST_LIMB(0x8bf187fba88f35f), CNST_LIMB(0xd44da7da8e44b24f) }, + /* 96 */ { 9, CNST_LIMB(0x26e05f5f16c2159e), CNST_LIMB(0xd2b803473f7ad0f3), CNST_LIMB(0x99c600000000000), CNST_LIMB(0xaa2f78f1b4cc6794) }, + /* 97 */ { 9, CNST_LIMB(0x26c9d3fe61e80598), CNST_LIMB(0xd3327c6ab49ca6c8), CNST_LIMB(0xa8ce21eb6531361), CNST_LIMB(0x843c067d091ee4cc) }, + /* 98 */ { 9, CNST_LIMB(0x26b39d7fc6ddab08), CNST_LIMB(0xd3abb3faa02166cc), CNST_LIMB(0xb92112c1a0b6200), CNST_LIMB(0x62005e1e913356e3) }, + /* 99 */ { 9, CNST_LIMB(0x269db9bc7772a5cc), CNST_LIMB(0xd423b07e986aa967), CNST_LIMB(0xcad7718b8747c43), CNST_LIMB(0x4316eed01dedd518) }, + /* 100 */ { 9, CNST_LIMB(0x268826a13ef3fde6), CNST_LIMB(0xd49a784bcd1b8afe), CNST_LIMB(0xde0b6b3a7640000), CNST_LIMB(0x2725dd1d243aba0e) }, + /* 101 */ { 9, CNST_LIMB(0x2672e22d9dbdbd9f), CNST_LIMB(0xd510118708a8f8dd), CNST_LIMB(0xf2d8cf5fe6d74c5), CNST_LIMB(0xddd9057c24cb54f) }, + /* 102 */ { 9, CNST_LIMB(0x265dea72f169cc99), CNST_LIMB(0xd5848226989d33c3), CNST_LIMB(0x1095d25bfa712600), CNST_LIMB(0xedeee175a736d2a1) }, + /* 103 */ { 9, CNST_LIMB(0x26493d93a8cb2514), CNST_LIMB(0xd5f7cff41e09aeb8), CNST_LIMB(0x121b7c4c3698faa7), CNST_LIMB(0xc4699f3df8b6b328) }, + /* 104 */ { 9, CNST_LIMB(0x2634d9c282f3ef82), CNST_LIMB(0xd66a008e4788cbcd), CNST_LIMB(0x13c09e8d68000000), CNST_LIMB(0x9ebbe7d859cb5a7c) }, + /* 105 */ { 9, CNST_LIMB(0x2620bd41d8933adc), CNST_LIMB(0xd6db196a761949d9), CNST_LIMB(0x15876ccb0b709ca9), CNST_LIMB(0x7c828b9887eb2179) }, + /* 106 */ { 9, CNST_LIMB(0x260ce662ef04088a), CNST_LIMB(0xd74b1fd64e0753c6), CNST_LIMB(0x17723c2976da2a00), CNST_LIMB(0x5d652ab99001adcf) }, + /* 107 */ { 9, CNST_LIMB(0x25f95385547353fd), CNST_LIMB(0xd7ba18f93502e409), CNST_LIMB(0x198384e9c259048b), CNST_LIMB(0x4114f1754e5d7b32) }, + /* 108 */ { 9, CNST_LIMB(0x25e60316448db8e1), CNST_LIMB(0xd82809d5be7072db), CNST_LIMB(0x1bbde41dfeec0000), CNST_LIMB(0x274b7c902f7e0188) }, + /* 109 */ { 9, CNST_LIMB(0x25d2f390152f74f5), CNST_LIMB(0xd894f74b06ef8b40), CNST_LIMB(0x1e241d6e3337910d), CNST_LIMB(0xfc9e0fbb32e210c) }, + /* 110 */ { 9, CNST_LIMB(0x25c02379aa9ad043), CNST_LIMB(0xd900e6160002ccfe), CNST_LIMB(0x20b91cee9901ee00), CNST_LIMB(0xf4afa3e594f8ea1f) }, + /* 111 */ { 9, CNST_LIMB(0x25ad9165f2c18907), CNST_LIMB(0xd96bdad2acb5f5ef), CNST_LIMB(0x237ff9079863dfef), CNST_LIMB(0xcd85c32e9e4437b0) }, + /* 112 */ { 9, CNST_LIMB(0x259b3bf36735c90c), CNST_LIMB(0xd9d5d9fd5010b366), CNST_LIMB(0x267bf47000000000), CNST_LIMB(0xa9bbb147e0dd92a8) }, + /* 113 */ { 9, CNST_LIMB(0x258921cb955e7693), CNST_LIMB(0xda3ee7f38e181ed0), CNST_LIMB(0x29b08039fbeda7f1), CNST_LIMB(0x8900447b70e8eb82) }, + /* 114 */ { 9, CNST_LIMB(0x257741a2ac9170af), CNST_LIMB(0xdaa708f58014d37c), CNST_LIMB(0x2d213df34f65f200), CNST_LIMB(0x6b0a92adaad5848a) }, + /* 115 */ { 9, CNST_LIMB(0x25659a3711bc827d), CNST_LIMB(0xdb0e4126bcc86bd7), CNST_LIMB(0x30d201d957a7c2d3), CNST_LIMB(0x4f990ad8740f0ee5) }, + /* 116 */ { 9, CNST_LIMB(0x25542a50f84b9c39), CNST_LIMB(0xdb74948f5532da4b), CNST_LIMB(0x34c6d52160f40000), CNST_LIMB(0x3670a9663a8d3610) }, + /* 117 */ { 9, CNST_LIMB(0x2542f0c20000377d), CNST_LIMB(0xdbda071cc67e6db5), CNST_LIMB(0x3903f855d8f4c755), CNST_LIMB(0x1f5c44188057be3c) }, + /* 118 */ { 9, CNST_LIMB(0x2531ec64d772bd64), CNST_LIMB(0xdc3e9ca2e1a05533), CNST_LIMB(0x3d8de5c8ec59b600), CNST_LIMB(0xa2bea956c4e4977) }, + /* 119 */ { 9, CNST_LIMB(0x25211c1ce2fb5a6e), CNST_LIMB(0xdca258dca9331635), CNST_LIMB(0x4269541d1ff01337), CNST_LIMB(0xed68b23033c3637e) }, + /* 120 */ { 9, CNST_LIMB(0x25107ed5e7c3ec3b), CNST_LIMB(0xdd053f6d26089673), CNST_LIMB(0x479b38e478000000), CNST_LIMB(0xc99cf624e50549c5) }, + /* 121 */ { 9, CNST_LIMB(0x25001383bac8a744), CNST_LIMB(0xdd6753e032ea0efe), CNST_LIMB(0x4d28cb56c33fa539), CNST_LIMB(0xa8adf7ae45e7577b) }, + /* 122 */ { 9, CNST_LIMB(0x24efd921f390bce3), CNST_LIMB(0xddc899ab3ff56c5e), CNST_LIMB(0x5317871fa13aba00), CNST_LIMB(0x8a5bc740b1c113e5) }, + /* 123 */ { 9, CNST_LIMB(0x24dfceb3a26bb203), CNST_LIMB(0xde29142e0e01401f), CNST_LIMB(0x596d2f44de9fa71b), CNST_LIMB(0x6e6c7efb81cfbb9b) }, + /* 124 */ { 9, CNST_LIMB(0x24cff3430a0341a7), CNST_LIMB(0xde88c6b3626a72aa), CNST_LIMB(0x602fd125c47c0000), CNST_LIMB(0x54aba5c5cada5f10) }, + /* 125 */ { 9, CNST_LIMB(0x24c045e15c149931), CNST_LIMB(0xdee7b471b3a9507d), CNST_LIMB(0x6765c793fa10079d), CNST_LIMB(0x3ce9a36f23c0fc90) }, + /* 126 */ { 9, CNST_LIMB(0x24b0c5a679267ae2), CNST_LIMB(0xdf45e08bcf06554e), CNST_LIMB(0x6f15be069b847e00), CNST_LIMB(0x26fb43de2c8cd2a8) }, + /* 127 */ { 9, CNST_LIMB(0x24a171b0b31461c8), CNST_LIMB(0xdfa34e1177c23362), CNST_LIMB(0x7746b3e82a77047f), CNST_LIMB(0x12b94793db8486a1) }, + /* 128 */ { 9, CNST_LIMB(0x2492492492492492), CNST_LIMB(0xdfffffffffffffff), CNST_LIMB(0x7), CNST_LIMB(0x0) }, + /* 129 */ { 9, CNST_LIMB(0x24834b2c9d85cdfe), CNST_LIMB(0xe05bf942dbbc2145), CNST_LIMB(0x894953f7ea890481), CNST_LIMB(0xdd5deca404c0156d) }, + /* 130 */ { 9, CNST_LIMB(0x247476f924137501), CNST_LIMB(0xe0b73cb42e16914c), CNST_LIMB(0x932abffea4848200), CNST_LIMB(0xbd51373330291de0) }, + /* 131 */ { 9, CNST_LIMB(0x2465cbc00a40cec0), CNST_LIMB(0xe111cd1d5133412e), CNST_LIMB(0x9dacb687d3d6a163), CNST_LIMB(0x9fa4025d66f23085) }, + /* 132 */ { 9, CNST_LIMB(0x245748bc980e0427), CNST_LIMB(0xe16bad3758efd873), CNST_LIMB(0xa8d8102a44840000), CNST_LIMB(0x842530ee2db4949d) }, + /* 133 */ { 9, CNST_LIMB(0x2448ed2f49eb0633), CNST_LIMB(0xe1c4dfab90aab5ef), CNST_LIMB(0xb4b60f9d140541e5), CNST_LIMB(0x6aa7f2766b03dc25) }, + /* 134 */ { 9, CNST_LIMB(0x243ab85da36e3167), CNST_LIMB(0xe21d6713f453f356), CNST_LIMB(0xc15065d4856e4600), CNST_LIMB(0x53035ba7ebf32e8d) }, + /* 135 */ { 9, CNST_LIMB(0x242ca99203ea8c18), CNST_LIMB(0xe27545fba4fe385a), CNST_LIMB(0xceb1363f396d23c7), CNST_LIMB(0x3d12091fc9fb4914) }, + /* 136 */ { 9, CNST_LIMB(0x241ec01b7cce4ea0), CNST_LIMB(0xe2cc7edf592262cf), CNST_LIMB(0xdce31b2488000000), CNST_LIMB(0x28b1cb81b1ef1849) }, + /* 137 */ { 9, CNST_LIMB(0x2410fb4da9b3b0fc), CNST_LIMB(0xe323142dc8c66b55), CNST_LIMB(0xebf12a24bca135c9), CNST_LIMB(0x15c35be67ae3e2c9) }, + /* 138 */ { 9, CNST_LIMB(0x24035a808a0f315e), CNST_LIMB(0xe379084815b5774c), CNST_LIMB(0xfbe6f8dbf88f4a00), CNST_LIMB(0x42a17bd09be1ff0) }, + /* 139 */ { 8, CNST_LIMB(0x23f5dd105c67ab9d), CNST_LIMB(0xe3ce5d822ff4b643), CNST_LIMB(0x1ef156c084ce761), CNST_LIMB(0x8bf461f03cf0bbf) }, + /* 140 */ { 8, CNST_LIMB(0x23e8825d7b05abb1), CNST_LIMB(0xe4231623369e78e5), CNST_LIMB(0x20c4e3b94a10000), CNST_LIMB(0xf3fbb43f68a32d05) }, + /* 141 */ { 8, CNST_LIMB(0x23db49cc3a0866fe), CNST_LIMB(0xe4773465d54aded7), CNST_LIMB(0x22b0695a08ba421), CNST_LIMB(0xd84f44c48564dc19) }, + /* 142 */ { 8, CNST_LIMB(0x23ce32c4c6cfb9f5), CNST_LIMB(0xe4caba789e2b8687), CNST_LIMB(0x24b4f35d7a4c100), CNST_LIMB(0xbe58ebcce7956abe) }, + /* 143 */ { 8, CNST_LIMB(0x23c13cb308ab6ab7), CNST_LIMB(0xe51daa7e60fdd34c), CNST_LIMB(0x26d397284975781), CNST_LIMB(0xa5fac463c7c134b7) }, + /* 144 */ { 8, CNST_LIMB(0x23b4670682c0c709), CNST_LIMB(0xe570068e7ef5a1e7), CNST_LIMB(0x290d74100000000), CNST_LIMB(0x8f19241e28c7d757) }, + /* 145 */ { 8, CNST_LIMB(0x23a7b13237187c8b), CNST_LIMB(0xe5c1d0b53bc09fca), CNST_LIMB(0x2b63b3a37866081), CNST_LIMB(0x799a6d046c0ae1ae) }, + /* 146 */ { 8, CNST_LIMB(0x239b1aac8ac74728), CNST_LIMB(0xe6130af40bc0ecbf), CNST_LIMB(0x2dd789f4d894100), CNST_LIMB(0x6566e37d746a9e40) }, + /* 147 */ { 8, CNST_LIMB(0x238ea2ef2b24c379), CNST_LIMB(0xe663b741df9c37c0), CNST_LIMB(0x306a35e51b58721), CNST_LIMB(0x526887dbfb5f788f) }, + /* 148 */ { 8, CNST_LIMB(0x23824976f4045a26), CNST_LIMB(0xe6b3d78b6d3b24fb), CNST_LIMB(0x331d01712e10000), CNST_LIMB(0x408af3382b8efd3d) }, + /* 149 */ { 8, CNST_LIMB(0x23760dc3d6e4d729), CNST_LIMB(0xe7036db376537b90), CNST_LIMB(0x35f14200a827c61), CNST_LIMB(0x2fbb374806ec05f1) }, + /* 150 */ { 8, CNST_LIMB(0x2369ef58c30bd43e), CNST_LIMB(0xe7527b930c965bf2), CNST_LIMB(0x38e858b62216100), CNST_LIMB(0x1fe7c0f0afce87fe) }, + /* 151 */ { 8, CNST_LIMB(0x235dedbb8e82aa1c), CNST_LIMB(0xe7a102f9d39a9331), CNST_LIMB(0x3c03b2c13176a41), CNST_LIMB(0x11003d517540d32e) }, + /* 152 */ { 8, CNST_LIMB(0x23520874dfeb1ffd), CNST_LIMB(0xe7ef05ae409a0288), CNST_LIMB(0x3f44c9b21000000), CNST_LIMB(0x2f5810f98eff0dc) }, + /* 153 */ { 8, CNST_LIMB(0x23463f1019228dd7), CNST_LIMB(0xe83c856dd81804b7), CNST_LIMB(0x42ad23cef3113c1), CNST_LIMB(0xeb72e35e7840d910) }, + /* 154 */ { 8, CNST_LIMB(0x233a911b42aa9b3c), CNST_LIMB(0xe88983ed6985bae5), CNST_LIMB(0x463e546b19a2100), CNST_LIMB(0xd27de19593dc3614) }, + /* 155 */ { 8, CNST_LIMB(0x232efe26f7cf33f9), CNST_LIMB(0xe8d602d948f83829), CNST_LIMB(0x49f9fc3f96684e1), CNST_LIMB(0xbaf391fd3e5e6fc2) }, + /* 156 */ { 8, CNST_LIMB(0x232385c65381b485), CNST_LIMB(0xe92203d587039cc1), CNST_LIMB(0x4de1c9c5dc10000), CNST_LIMB(0xa4bd38c55228c81d) }, + /* 157 */ { 8, CNST_LIMB(0x2318278edde1b39b), CNST_LIMB(0xe96d887e26cd57b7), CNST_LIMB(0x51f77994116d2a1), CNST_LIMB(0x8fc5a8de8e1de782) }, + /* 158 */ { 8, CNST_LIMB(0x230ce3187a6c2be9), CNST_LIMB(0xe9b892675266f66c), CNST_LIMB(0x563cd6bb3398100), CNST_LIMB(0x7bf9265bea9d3a3b) }, + /* 159 */ { 8, CNST_LIMB(0x2301b7fd56ca21bb), CNST_LIMB(0xea03231d8d8224ba), CNST_LIMB(0x5ab3bb270beeb01), CNST_LIMB(0x69454b325983dccd) }, + /* 160 */ { 8, CNST_LIMB(0x22f6a5d9da38341c), CNST_LIMB(0xea4d3c25e68dc57f), CNST_LIMB(0x5f5e10000000000), CNST_LIMB(0x5798ee2308c39df9) }, + /* 161 */ { 8, CNST_LIMB(0x22ebac4c9580d89f), CNST_LIMB(0xea96defe264b59be), CNST_LIMB(0x643dce0ec16f501), CNST_LIMB(0x46e40ba0fa66a753) }, + /* 162 */ { 8, CNST_LIMB(0x22e0caf633834beb), CNST_LIMB(0xeae00d1cfdeb43cf), CNST_LIMB(0x6954fe21e3e8100), CNST_LIMB(0x3717b0870b0db3a7) }, + /* 163 */ { 8, CNST_LIMB(0x22d601796a418886), CNST_LIMB(0xeb28c7f233bdd372), CNST_LIMB(0x6ea5b9755f440a1), CNST_LIMB(0x2825e6775d11cdeb) }, + /* 164 */ { 8, CNST_LIMB(0x22cb4f7aec6fd8b4), CNST_LIMB(0xeb7110e6ce866f2b), CNST_LIMB(0x74322a1c0410000), CNST_LIMB(0x1a01a1c09d1b4dac) }, + /* 165 */ { 8, CNST_LIMB(0x22c0b4a15b80d83e), CNST_LIMB(0xebb8e95d3f7d9df2), CNST_LIMB(0x79fc8b6ae8a46e1), CNST_LIMB(0xc9eb0a8bebc8f3e) }, + /* 166 */ { 8, CNST_LIMB(0x22b630953a28f77a), CNST_LIMB(0xec0052b18b0e2a19), CNST_LIMB(0x80072a66d512100), CNST_LIMB(0xffe357ff59e6a004) }, + /* 167 */ { 8, CNST_LIMB(0x22abc300df54ca7c), CNST_LIMB(0xec474e39705912d2), CNST_LIMB(0x86546633b42b9c1), CNST_LIMB(0xe7dfd1be05fa61a8) }, + /* 168 */ { 8, CNST_LIMB(0x22a16b90698da5d2), CNST_LIMB(0xec8ddd448f8b845a), CNST_LIMB(0x8ce6b0861000000), CNST_LIMB(0xd11ed6fc78f760e5) }, + /* 169 */ { 8, CNST_LIMB(0x229729f1b2c83ded), CNST_LIMB(0xecd4011c8f11979a), CNST_LIMB(0x93c08e16a022441), CNST_LIMB(0xbb8db609dd29ebfe) }, + /* 170 */ { 8, CNST_LIMB(0x228cfdd444992f78), CNST_LIMB(0xed19bb053fb0284e), CNST_LIMB(0x9ae49717f026100), CNST_LIMB(0xa71aec8d1813d532) }, + /* 171 */ { 8, CNST_LIMB(0x2282e6e94ccb8588), CNST_LIMB(0xed5f0c3cbf8fa470), CNST_LIMB(0xa25577ae24c1a61), CNST_LIMB(0x93b612a9f20fbc02) }, + /* 172 */ { 8, CNST_LIMB(0x2278e4e392557ecf), CNST_LIMB(0xeda3f5fb9c415052), CNST_LIMB(0xaa15f068e610000), CNST_LIMB(0x814fc7b19a67d317) }, + /* 173 */ { 8, CNST_LIMB(0x226ef7776aa7fd29), CNST_LIMB(0xede87974f3c81855), CNST_LIMB(0xb228d6bf7577921), CNST_LIMB(0x6fd9a03f2e0a4b7c) }, + /* 174 */ { 8, CNST_LIMB(0x22651e5aaf5532d0), CNST_LIMB(0xee2c97d694adab3f), CNST_LIMB(0xba91158ef5c4100), CNST_LIMB(0x5f4615a38d0d316e) }, + /* 175 */ { 8, CNST_LIMB(0x225b5944b40b4694), CNST_LIMB(0xee7052491d2c3e64), CNST_LIMB(0xc351ad9aec0b681), CNST_LIMB(0x4f8876863479a286) }, + /* 176 */ { 8, CNST_LIMB(0x2251a7ee3cdfcca5), CNST_LIMB(0xeeb3a9f01975077f), CNST_LIMB(0xcc6db6100000000), CNST_LIMB(0x4094d8a3041b60eb) }, + /* 177 */ { 8, CNST_LIMB(0x22480a1174e913d9), CNST_LIMB(0xeef69fea211b2627), CNST_LIMB(0xd5e85d09025c181), CNST_LIMB(0x32600b8ed883a09b) }, + /* 178 */ { 8, CNST_LIMB(0x223e7f69e522683c), CNST_LIMB(0xef393550f3aa6906), CNST_LIMB(0xdfc4e816401c100), CNST_LIMB(0x24df8c6eb4b6d1f1) }, + /* 179 */ { 8, CNST_LIMB(0x223507b46b988abe), CNST_LIMB(0xef7b6b399471103e), CNST_LIMB(0xea06b4c72947221), CNST_LIMB(0x18097a8ee151acef) }, + /* 180 */ { 8, CNST_LIMB(0x222ba2af32dbbb9e), CNST_LIMB(0xefbd42b465836767), CNST_LIMB(0xf4b139365210000), CNST_LIMB(0xbd48cc8ec1cd8e3) }, + /* 181 */ { 8, CNST_LIMB(0x22225019a9b4d16c), CNST_LIMB(0xeffebccd41ffcd5c), CNST_LIMB(0xffc80497d520961), CNST_LIMB(0x3807a8d67485fb) }, + /* 182 */ { 8, CNST_LIMB(0x22190fb47b1af172), CNST_LIMB(0xf03fda8b97997f33), CNST_LIMB(0x10b4ebfca1dee100), CNST_LIMB(0xea5768860b62e8d8) }, + /* 183 */ { 8, CNST_LIMB(0x220fe14186679801), CNST_LIMB(0xf0809cf27f703d52), CNST_LIMB(0x117492de921fc141), CNST_LIMB(0xd54faf5b635c5005) }, + /* 184 */ { 8, CNST_LIMB(0x2206c483d7c6b786), CNST_LIMB(0xf0c10500d63aa658), CNST_LIMB(0x123bb2ce41000000), CNST_LIMB(0xc14a56233a377926) }, + /* 185 */ { 8, CNST_LIMB(0x21fdb93fa0e0ccc5), CNST_LIMB(0xf10113b153c8ea7b), CNST_LIMB(0x130a8b6157bdecc1), CNST_LIMB(0xae39a88db7cd329f) }, + /* 186 */ { 8, CNST_LIMB(0x21f4bf3a31bcdcaa), CNST_LIMB(0xf140c9faa1e5439e), CNST_LIMB(0x13e15dede0e8a100), CNST_LIMB(0x9c10bde69efa7ab6) }, + /* 187 */ { 8, CNST_LIMB(0x21ebd639f1d86584), CNST_LIMB(0xf18028cf72976a4e), CNST_LIMB(0x14c06d941c0ca7e1), CNST_LIMB(0x8ac36c42a2836497) }, + /* 188 */ { 8, CNST_LIMB(0x21e2fe06597361a6), CNST_LIMB(0xf1bf311e95d00de3), CNST_LIMB(0x15a7ff487a810000), CNST_LIMB(0x7a463c8b84f5ef67) }, + /* 189 */ { 8, CNST_LIMB(0x21da3667eb0e8ccb), CNST_LIMB(0xf1fde3d30e812642), CNST_LIMB(0x169859ddc5c697a1), CNST_LIMB(0x6a8e5f5ad090fd4b) }, + /* 190 */ { 8, CNST_LIMB(0x21d17f282d1a300e), CNST_LIMB(0xf23c41d42727c808), CNST_LIMB(0x1791c60f6fed0100), CNST_LIMB(0x5b91a2943596fc56) }, + /* 191 */ { 8, CNST_LIMB(0x21c8d811a3d3c9e1), CNST_LIMB(0xf27a4c0585cbf805), CNST_LIMB(0x18948e8c0e6fba01), CNST_LIMB(0x4d4667b1c468e8f0) }, + /* 192 */ { 8, CNST_LIMB(0x21c040efcb50f858), CNST_LIMB(0xf2b803473f7ad0f3), CNST_LIMB(0x19a1000000000000), CNST_LIMB(0x3fa39ab547994daf) }, + /* 193 */ { 8, CNST_LIMB(0x21b7b98f11b61c1a), CNST_LIMB(0xf2f56875eb3f2614), CNST_LIMB(0x1ab769203dafc601), CNST_LIMB(0x32a0a9b2faee1e2a) }, + /* 194 */ { 8, CNST_LIMB(0x21af41bcd19739ba), CNST_LIMB(0xf3327c6ab49ca6c8), CNST_LIMB(0x1bd81ab557f30100), CNST_LIMB(0x26357ceac0e96962) }, + /* 195 */ { 8, CNST_LIMB(0x21a6d9474c81adf0), CNST_LIMB(0xf36f3ffb6d916240), CNST_LIMB(0x1d0367a69fed1ba1), CNST_LIMB(0x1a5a6f65caa5859e) }, + /* 196 */ { 8, CNST_LIMB(0x219e7ffda5ad572a), CNST_LIMB(0xf3abb3faa02166cc), CNST_LIMB(0x1e39a5057d810000), CNST_LIMB(0xf08480f672b4e86) }, + /* 197 */ { 8, CNST_LIMB(0x219635afdcd3e46d), CNST_LIMB(0xf3e7d9379f70166a), CNST_LIMB(0x1f7b2a18f29ac3e1), CNST_LIMB(0x4383340615612ca) }, + /* 198 */ { 8, CNST_LIMB(0x218dfa2ec92d0643), CNST_LIMB(0xf423b07e986aa967), CNST_LIMB(0x20c850694c2aa100), CNST_LIMB(0xf3c77969ee4be5a2) }, + /* 199 */ { 8, CNST_LIMB(0x2185cd4c148e4ae2), CNST_LIMB(0xf45f3a98a20738a4), CNST_LIMB(0x222173cc014980c1), CNST_LIMB(0xe00993cc187c5ec9) }, + /* 200 */ { 8, CNST_LIMB(0x217daeda36ad7a5c), CNST_LIMB(0xf49a784bcd1b8afe), CNST_LIMB(0x2386f26fc1000000), CNST_LIMB(0xcd2b297d889bc2b6) }, + /* 201 */ { 8, CNST_LIMB(0x21759eac708452fe), CNST_LIMB(0xf4d56a5b33cec44a), CNST_LIMB(0x24f92ce8af296d41), CNST_LIMB(0xbb214d5064862b22) }, + /* 202 */ { 8, CNST_LIMB(0x216d9c96c7d490d4), CNST_LIMB(0xf510118708a8f8dd), CNST_LIMB(0x2678863cd0ece100), CNST_LIMB(0xa9e1a7ca7ea10e20) }, + /* 203 */ { 8, CNST_LIMB(0x2165a86e02cb358c), CNST_LIMB(0xf54a6e8ca5438db1), CNST_LIMB(0x280563f0a9472d61), CNST_LIMB(0x99626e72b39ea0cf) }, + /* 204 */ { 8, CNST_LIMB(0x215dc207a3c20fdf), CNST_LIMB(0xf5848226989d33c3), CNST_LIMB(0x29a02e1406210000), CNST_LIMB(0x899a5ba9c13fafd9) }, + /* 205 */ { 8, CNST_LIMB(0x2155e939e51e8b37), CNST_LIMB(0xf5be4d0cb51434aa), CNST_LIMB(0x2b494f4efe6d2e21), CNST_LIMB(0x7a80a705391e96ff) }, + /* 206 */ { 8, CNST_LIMB(0x214e1ddbb54cd933), CNST_LIMB(0xf5f7cff41e09aeb8), CNST_LIMB(0x2d0134ef21cbc100), CNST_LIMB(0x6c0cfe23de23042a) }, + /* 207 */ { 8, CNST_LIMB(0x21465fc4b2d68f98), CNST_LIMB(0xf6310b8f55304840), CNST_LIMB(0x2ec84ef4da2ef581), CNST_LIMB(0x5e377df359c944dd) }, + /* 208 */ { 8, CNST_LIMB(0x213eaecd2893dd60), CNST_LIMB(0xf66a008e4788cbcd), CNST_LIMB(0x309f102100000000), CNST_LIMB(0x50f8ac5fc8f53985) }, + /* 209 */ { 8, CNST_LIMB(0x21370ace09f681c6), CNST_LIMB(0xf6a2af9e5a0f0a08), CNST_LIMB(0x3285ee02a1420281), CNST_LIMB(0x44497266278e35b7) }, + /* 210 */ { 8, CNST_LIMB(0x212f73a0ef6db7cb), CNST_LIMB(0xf6db196a761949d9), CNST_LIMB(0x347d6104fc324100), CNST_LIMB(0x382316831f7ee175) }, + /* 211 */ { 8, CNST_LIMB(0x2127e92012e25004), CNST_LIMB(0xf7133e9b156c7be5), CNST_LIMB(0x3685e47dade53d21), CNST_LIMB(0x2c7f377833b8946e) }, + /* 212 */ { 8, CNST_LIMB(0x21206b264c4a39a7), CNST_LIMB(0xf74b1fd64e0753c6), CNST_LIMB(0x389ff6bb15610000), CNST_LIMB(0x2157c761ab4163ef) }, + /* 213 */ { 8, CNST_LIMB(0x2118f98f0e52c28f), CNST_LIMB(0xf782bdbfdda6577b), CNST_LIMB(0x3acc1912ebb57661), CNST_LIMB(0x16a7071803cc49a9) }, + /* 214 */ { 8, CNST_LIMB(0x211194366320dc66), CNST_LIMB(0xf7ba18f93502e409), CNST_LIMB(0x3d0acff111946100), CNST_LIMB(0xc6781d80f8224fc) }, + /* 215 */ { 8, CNST_LIMB(0x210a3af8e926bb78), CNST_LIMB(0xf7f1322182cf15d1), CNST_LIMB(0x3f5ca2e692eaf841), CNST_LIMB(0x294092d370a900b) }, + /* 216 */ { 8, CNST_LIMB(0x2102edb3d00e29a6), CNST_LIMB(0xf82809d5be7072db), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 217 */ { 8, CNST_LIMB(0x20fbac44d5b6edc2), CNST_LIMB(0xf85ea0b0b27b2610), CNST_LIMB(0x443bcb714399a5c1), CNST_LIMB(0xe03b98f103fad6d2) }, + /* 218 */ { 8, CNST_LIMB(0x20f4768a4348ad08), CNST_LIMB(0xf894f74b06ef8b40), CNST_LIMB(0x46ca406c81af2100), CNST_LIMB(0xcee3d32cad2a9049) }, + /* 219 */ { 8, CNST_LIMB(0x20ed4c62ea57b1f0), CNST_LIMB(0xf8cb0e3b4b3bbdb3), CNST_LIMB(0x496e106ac22aaae1), CNST_LIMB(0xbe3f9df9277fdada) }, + /* 220 */ { 8, CNST_LIMB(0x20e62dae221c087a), CNST_LIMB(0xf900e6160002ccfe), CNST_LIMB(0x4c27d39fa5410000), CNST_LIMB(0xae46f0d94c05e933) }, + /* 221 */ { 8, CNST_LIMB(0x20df1a4bc4ba6525), CNST_LIMB(0xf9367f6da0ab2e9c), CNST_LIMB(0x4ef825c296e43ca1), CNST_LIMB(0x9ef2280fb437a33d) }, + /* 222 */ { 8, CNST_LIMB(0x20d8121c2c9e506e), CNST_LIMB(0xf96bdad2acb5f5ef), CNST_LIMB(0x51dfa61f5ad88100), CNST_LIMB(0x9039ff426d3f284b) }, + /* 223 */ { 8, CNST_LIMB(0x20d1150031e51549), CNST_LIMB(0xf9a0f8d3b0e04fde), CNST_LIMB(0x54def7a6d2f16901), CNST_LIMB(0x82178c6d6b51f8f4) }, + /* 224 */ { 8, CNST_LIMB(0x20ca22d927d8f54d), CNST_LIMB(0xf9d5d9fd5010b366), CNST_LIMB(0x57f6c10000000000), CNST_LIMB(0x74843b1ee4c1e053) }, + /* 225 */ { 8, CNST_LIMB(0x20c33b88da7c29aa), CNST_LIMB(0xfa0a7eda4c112ce6), CNST_LIMB(0x5b27ac993df97701), CNST_LIMB(0x6779c7f90dc42f48) }, + /* 226 */ { 8, CNST_LIMB(0x20bc5ef18c233bdf), CNST_LIMB(0xfa3ee7f38e181ed0), CNST_LIMB(0x5e7268b9bbdf8100), CNST_LIMB(0x5af23c74f9ad9fe9) }, + /* 227 */ { 8, CNST_LIMB(0x20b58cf5f31e4526), CNST_LIMB(0xfa7315d02f20c7bd), CNST_LIMB(0x61d7a7932ff3d6a1), CNST_LIMB(0x4ee7eae2acdc617e) }, + /* 228 */ { 8, CNST_LIMB(0x20aec5793770a74d), CNST_LIMB(0xfaa708f58014d37c), CNST_LIMB(0x65581f53c8c10000), CNST_LIMB(0x43556aa2ac262a0b) }, + /* 229 */ { 8, CNST_LIMB(0x20a8085ef096d530), CNST_LIMB(0xfadac1e711c832d1), CNST_LIMB(0x68f48a385b8320e1), CNST_LIMB(0x3835949593b8ddd1) }, + /* 230 */ { 8, CNST_LIMB(0x20a1558b2359c4b1), CNST_LIMB(0xfb0e4126bcc86bd7), CNST_LIMB(0x6cada69ed07c2100), CNST_LIMB(0x2d837fbe78458762) }, + /* 231 */ { 8, CNST_LIMB(0x209aace23fafa72e), CNST_LIMB(0xfb418734a9008bd9), CNST_LIMB(0x70843718cdbf27c1), CNST_LIMB(0x233a7e150a54a555) }, + /* 232 */ { 8, CNST_LIMB(0x20940e491ea988d7), CNST_LIMB(0xfb74948f5532da4b), CNST_LIMB(0x7479027ea1000000), CNST_LIMB(0x19561984a50ff8fe) }, + /* 233 */ { 8, CNST_LIMB(0x208d79a5006d7a47), CNST_LIMB(0xfba769b39e49640e), CNST_LIMB(0x788cd40268f39641), CNST_LIMB(0xfd211159fe3490f) }, + /* 234 */ { 8, CNST_LIMB(0x2086eedb8a3cead3), CNST_LIMB(0xfbda071cc67e6db5), CNST_LIMB(0x7cc07b437ecf6100), CNST_LIMB(0x6aa563e655033e3) }, + /* 235 */ { 8, CNST_LIMB(0x20806dd2c486dcc6), CNST_LIMB(0xfc0c6d447c5dd362), CNST_LIMB(0x8114cc6220762061), CNST_LIMB(0xfbb614b3f2d3b14c) }, + /* 236 */ { 8, CNST_LIMB(0x2079f67119059fae), CNST_LIMB(0xfc3e9ca2e1a05533), CNST_LIMB(0x858aa0135be10000), CNST_LIMB(0xeac0f8837fb05773) }, + /* 237 */ { 8, CNST_LIMB(0x2073889d50e7bf63), CNST_LIMB(0xfc7095ae91e1c760), CNST_LIMB(0x8a22d3b53c54c321), CNST_LIMB(0xda6e4c10e8615ca5) }, + /* 238 */ { 8, CNST_LIMB(0x206d243e9303d929), CNST_LIMB(0xfca258dca9331635), CNST_LIMB(0x8ede496339f34100), CNST_LIMB(0xcab755a8d01fa67f) }, + /* 239 */ { 8, CNST_LIMB(0x2066c93c62170aa8), CNST_LIMB(0xfcd3e6a0ca8906c2), CNST_LIMB(0x93bde80aec3a1481), CNST_LIMB(0xbb95a9ae71aa3e0c) }, + /* 240 */ { 8, CNST_LIMB(0x2060777e9b0db0f6), CNST_LIMB(0xfd053f6d26089673), CNST_LIMB(0x98c29b8100000000), CNST_LIMB(0xad0326c296b4f529) }, + /* 241 */ { 8, CNST_LIMB(0x205a2eed73563032), CNST_LIMB(0xfd3663b27f31d529), CNST_LIMB(0x9ded549671832381), CNST_LIMB(0x9ef9f21eed31b7c1) }, + /* 242 */ { 8, CNST_LIMB(0x2053ef71773d7e6a), CNST_LIMB(0xfd6753e032ea0efe), CNST_LIMB(0xa33f092e0b1ac100), CNST_LIMB(0x91747422be14b0b2) }, + /* 243 */ { 8, CNST_LIMB(0x204db8f388552ea9), CNST_LIMB(0xfd9810643d6614c3), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 244 */ { 8, CNST_LIMB(0x20478b5cdbe2bb2f), CNST_LIMB(0xfdc899ab3ff56c5e), CNST_LIMB(0xae5b564ac3a10000), CNST_LIMB(0x77df79e9a96c06f6) }, + /* 245 */ { 8, CNST_LIMB(0x20416696f957cfbf), CNST_LIMB(0xfdf8f02086af2c4b), CNST_LIMB(0xb427f4b3be74c361), CNST_LIMB(0x6bc6019636c7d0c2) }, + /* 246 */ { 8, CNST_LIMB(0x203b4a8bb8d356e7), CNST_LIMB(0xfe29142e0e01401f), CNST_LIMB(0xba1f9a938041e100), CNST_LIMB(0x601c4205aebd9e47) }, + /* 247 */ { 8, CNST_LIMB(0x2035372541ab0f0d), CNST_LIMB(0xfe59063c8822ce56), CNST_LIMB(0xc0435871d1110f41), CNST_LIMB(0x54ddc59756f05016) }, + /* 248 */ { 8, CNST_LIMB(0x202f2c4e08fd6dcc), CNST_LIMB(0xfe88c6b3626a72aa), CNST_LIMB(0xc694446f01000000), CNST_LIMB(0x4a0648979c838c18) }, + /* 249 */ { 8, CNST_LIMB(0x202929f0d04b99e9), CNST_LIMB(0xfeb855f8ca88fb0d), CNST_LIMB(0xcd137a5b57ac3ec1), CNST_LIMB(0x3f91b6e0bb3a053d) }, + /* 250 */ { 8, CNST_LIMB(0x20232ff8a41b45eb), CNST_LIMB(0xfee7b471b3a9507d), CNST_LIMB(0xd3c21bcecceda100), CNST_LIMB(0x357c299a88ea76a5) }, + /* 251 */ { 8, CNST_LIMB(0x201d3e50daa036db), CNST_LIMB(0xff16e281db76303b), CNST_LIMB(0xdaa150410b788de1), CNST_LIMB(0x2bc1e517aecc56e3) }, + /* 252 */ { 8, CNST_LIMB(0x201754e5126d446d), CNST_LIMB(0xff45e08bcf06554e), CNST_LIMB(0xe1b24521be010000), CNST_LIMB(0x225f56ceb3da9f5d) }, + /* 253 */ { 8, CNST_LIMB(0x201173a1312ca135), CNST_LIMB(0xff74aef0efafadd7), CNST_LIMB(0xe8f62df12777c1a1), CNST_LIMB(0x1951136d53ad63ac) }, + /* 254 */ { 8, CNST_LIMB(0x200b9a71625f3b13), CNST_LIMB(0xffa34e1177c23362), CNST_LIMB(0xf06e445906fc0100), CNST_LIMB(0x1093d504b3cd7d93) }, + /* 255 */ { 8, CNST_LIMB(0x2005c94216230568), CNST_LIMB(0xffd1be4c7f2af942), CNST_LIMB(0xf81bc845c81bf801), CNST_LIMB(0x824794d1ec1814f) }, + /* 256 */ { 8, CNST_LIMB(0x1fffffffffffffff), CNST_LIMB(0xffffffffffffffff), CNST_LIMB(0x8), CNST_LIMB(0x0) }, +}; diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/mul_1.s b/vere/ext/gmp/gen/aarch64-macos/mpn/mul_1.s new file mode 100644 index 0000000..7858152 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/mul_1.s @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_mul_1c + +___gmpn_mul_1c: + adds xzr, xzr, xzr + b Lcom + + + .text + .align 3 + .globl ___gmpn_mul_1 + +___gmpn_mul_1: + adds x4, xzr, xzr +Lcom: lsr x17, x2, #2 + tbnz x2, #0, Lbx1 + +Lbx0: mov x11, x4 + tbz x2, #1, Lb00 + +Lb10: ldp x4, x5, [x1] + mul x8, x4, x3 + umulh x10, x4, x3 + cbz x17, L2 + ldp x6, x7, [x1,#16]! + mul x9, x5, x3 + b Lmid-8 + +L2: mul x9, x5, x3 + b L2e + +Lbx1: ldr x7, [x1],#8 + mul x9, x7, x3 + umulh x11, x7, x3 + adds x9, x9, x4 + str x9, [x0],#8 + tbnz x2, #1, Lb10 + +Lb01: cbz x17, L1 + +Lb00: ldp x6, x7, [x1] + mul x8, x6, x3 + umulh x10, x6, x3 + ldp x4, x5, [x1,#16] + mul x9, x7, x3 + adcs x12, x8, x11 + umulh x11, x7, x3 + add x0, x0, #16 + sub x17, x17, #1 + cbz x17, Lend + + .align 4 +Ltop: mul x8, x4, x3 + ldp x6, x7, [x1,#32]! + adcs x13, x9, x10 + umulh x10, x4, x3 + mul x9, x5, x3 + stp x12, x13, [x0,#-16] + adcs x12, x8, x11 + umulh x11, x5, x3 +Lmid: mul x8, x6, x3 + ldp x4, x5, [x1,#16] + adcs x13, x9, x10 + umulh x10, x6, x3 + mul x9, x7, x3 + stp x12, x13, [x0],#32 + adcs x12, x8, x11 + umulh x11, x7, x3 + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: mul x8, x4, x3 + adcs x13, x9, x10 + umulh x10, x4, x3 + mul x9, x5, x3 + stp x12, x13, [x0,#-16] +L2e: adcs x12, x8, x11 + umulh x11, x5, x3 + adcs x13, x9, x10 + stp x12, x13, [x0] +L1: adc x0, x11, xzr + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/nand_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/nand_n.s new file mode 100644 index 0000000..083703a --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/nand_n.s @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_nand_n + +___gmpn_nand_n: + lsr x17, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x7, [x1] + ldr x11, [x2] + and x15, x7, x11 + mvn x15, x15 + str x15, [x0],#8 + tbnz x3, #1, Lb11 + +Lb01: cbz x17, Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b Lmid + +Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x17, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b Lmid + +Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x17, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + and x12, x6, x10 + and x13, x7, x11 + mvn x12, x12 + mvn x13, x13 + stp x12, x13, [x0],#16 +Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + and x12, x4, x8 + and x13, x5, x9 + mvn x12, x12 + mvn x13, x13 + stp x12, x13, [x0],#16 + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: and x12, x6, x10 + and x13, x7, x11 + mvn x12, x12 + mvn x13, x13 + stp x12, x13, [x0] +Lret: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/nior_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/nior_n.s new file mode 100644 index 0000000..392a012 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/nior_n.s @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_nior_n + +___gmpn_nior_n: + lsr x17, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x7, [x1] + ldr x11, [x2] + orr x15, x7, x11 + mvn x15, x15 + str x15, [x0],#8 + tbnz x3, #1, Lb11 + +Lb01: cbz x17, Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b Lmid + +Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x17, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b Lmid + +Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x17, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + orr x12, x6, x10 + orr x13, x7, x11 + mvn x12, x12 + mvn x13, x13 + stp x12, x13, [x0],#16 +Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + orr x12, x4, x8 + orr x13, x5, x9 + mvn x12, x12 + mvn x13, x13 + stp x12, x13, [x0],#16 + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: orr x12, x6, x10 + orr x13, x7, x11 + mvn x12, x12 + mvn x13, x13 + stp x12, x13, [x0] +Lret: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/perfsqr.h b/vere/ext/gmp/gen/aarch64-macos/mpn/perfsqr.h new file mode 100644 index 0000000..80c5eb7 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/perfsqr.h @@ -0,0 +1,46 @@ +/* This file generated by gen-psqr.c - DO NOT EDIT. */ + +#if GMP_LIMB_BITS != 64 || GMP_NAIL_BITS != 0 +Error, error, this data is for 64 bit limb and 0 bit nail +#endif + +/* Non-zero bit indicates a quadratic residue mod 0x100. + This test identifies 82.81% as non-squares (212/256). */ +static const mp_limb_t +sq_res_0x100[4] = { + CNST_LIMB(0x202021202030213), + CNST_LIMB(0x202021202020213), + CNST_LIMB(0x202021202030212), + CNST_LIMB(0x202021202020212), +}; + +/* 2^48-1 = 3^2 * 5 * 7 * 13 * 17 * 97 ... */ +#define PERFSQR_MOD_BITS 49 + +/* This test identifies 97.81% as non-squares. */ +#define PERFSQR_MOD_TEST(up, usize) \ + do { \ + mp_limb_t r; \ + PERFSQR_MOD_34 (r, up, usize); \ + \ + /* 69.23% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(91), CNST_LIMB(0xfd2fd2fd2fd3), \ + CNST_LIMB(0x2191240), CNST_LIMB(0x8850a206953820e1)); \ + \ + /* 68.24% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(85), CNST_LIMB(0xfcfcfcfcfcfd), \ + CNST_LIMB(0x82158), CNST_LIMB(0x10b48c4b4206a105)); \ + \ + /* 55.56% */ \ + PERFSQR_MOD_1 (r, CNST_LIMB( 9), CNST_LIMB(0xe38e38e38e39), \ + CNST_LIMB(0x93)); \ + \ + /* 49.48% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(97), CNST_LIMB(0xfd5c5f02a3a1), \ + CNST_LIMB(0x1eb628b47), CNST_LIMB(0x6067981b8b451b5f)); \ + } while (0) + +/* Grand total sq_res_0x100 and PERFSQR_MOD_TEST, 99.62% non-squares. */ + +/* helper for tests/mpz/t-perfsqr.c */ +#define PERFSQR_DIVISORS { 256, 91, 85, 9, 97, } diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/popcount.s b/vere/ext/gmp/gen/aarch64-macos/mpn/popcount.s new file mode 100644 index 0000000..66e12fc --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/popcount.s @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_popcount + +___gmpn_popcount: + + mov x11, #0x1fff + cmp x1, x11 + b.hi Lgt8k + +Llt8k: + movi v4.16b, #0 + movi v5.16b, #0 + + tbz x1, #0, Lxx0 + sub x1, x1, #1 + ld1 {v0.1d}, [x0], #8 + cnt v6.16b, v0.16b + uadalp v4.8h, v6.16b + +Lxx0: tbz x1, #1, Lx00 + sub x1, x1, #2 + ld1 {v0.2d}, [x0], #16 + cnt v6.16b, v0.16b + uadalp v4.8h, v6.16b + +Lx00: tbz x1, #2, L000 + subs x1, x1, #4 + ld1 {v0.2d,v1.2d}, [x0], #32 + b.ls Lsum + +Lgt4: ld1 {v2.2d,v3.2d}, [x0], #32 + sub x1, x1, #4 + cnt v6.16b, v0.16b + cnt v7.16b, v1.16b + b Lmid + +L000: subs x1, x1, #8 + b.lo Le0 + +Lchu: ld1 {v2.2d,v3.2d}, [x0], #32 + ld1 {v0.2d,v1.2d}, [x0], #32 + cnt v6.16b, v2.16b + cnt v7.16b, v3.16b + subs x1, x1, #8 + b.lo Lend + +Ltop: ld1 {v2.2d,v3.2d}, [x0], #32 + uadalp v4.8h, v6.16b + cnt v6.16b, v0.16b + uadalp v5.8h, v7.16b + cnt v7.16b, v1.16b +Lmid: ld1 {v0.2d,v1.2d}, [x0], #32 + subs x1, x1, #8 + uadalp v4.8h, v6.16b + cnt v6.16b, v2.16b + uadalp v5.8h, v7.16b + cnt v7.16b, v3.16b + b.hs Ltop + +Lend: uadalp v4.8h, v6.16b + uadalp v5.8h, v7.16b +Lsum: cnt v6.16b, v0.16b + cnt v7.16b, v1.16b + uadalp v4.8h, v6.16b + uadalp v5.8h, v7.16b + add v4.8h, v4.8h, v5.8h + +Le0: uaddlp v4.4s, v4.8h + uaddlp v4.2d, v4.4s + mov x0, v4.d[0] + mov x1, v4.d[1] + add x0, x0, x1 + ret + + + +Lgt8k: + mov x8, x30 + mov x7, x1 + mov x4, #0 + mov x9, #0x1ff0*8 + mov x10, #0x1ff0 + +1: add x5, x0, x9 + mov x1, #0x1ff0-8 + movi v4.16b, #0 + movi v5.16b, #0 + bl Lchu + add x4, x4, x0 + mov x0, x5 + sub x7, x7, x10 + cmp x7, x11 + b.hi 1b + + mov x1, x7 + bl Llt8k + add x0, x4, x0 + mov x30, x8 + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/rsblsh1_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/rsblsh1_n.s new file mode 100644 index 0000000..2d5cf13 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/rsblsh1_n.s @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_rsblsh1_n + +___gmpn_rsblsh1_n: + lsr x6, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x5, [x1] + tbnz x3, #1, Lb11 + +Lb01: ldr x11, [x2] + cbz x6, L1 + ldp x8, x9, [x2,#8] + lsl x13, x11, #1 + subs x15, x13, x5 + str x15, [x0],#8 + sub x1, x1, #24 + sub x2, x2, #8 + b Lmid + +L1: lsl x13, x11, #1 + subs x15, x13, x5 + str x15, [x0] + lsr x0, x11, 63 + sbc x0, x0, xzr + ret + +Lb11: ldr x9, [x2] + ldp x10, x11, [x2,#8]! + lsl x13, x9, #1 + subs x17, x13, x5 + str x17, [x0],#8 + sub x1, x1, #8 + cbz x6, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: subs x11, xzr, xzr + ldp x8, x9, [x2],#-16 + sub x1, x1, #32 + b Lmid + +Lb10: subs x9, xzr, xzr + ldp x10, x11, [x2] + sub x1, x1, #16 + cbz x6, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #63 + ldp x8, x9, [x2,#16] + extr x13, x11, x10, #63 + sbcs x14, x12, x4 + sbcs x15, x13, x5 + stp x14, x15, [x0],#16 +Lmid: ldp x4, x5, [x1,#32]! + extr x12, x8, x11, #63 + ldp x10, x11, [x2,#32]! + extr x13, x9, x8, #63 + sbcs x16, x12, x4 + sbcs x17, x13, x5 + stp x16, x17, [x0],#16 + sub x6, x6, #1 + cbnz x6, Ltop + +Lend: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #63 + extr x13, x11, x10, #63 + sbcs x14, x12, x4 + sbcs x15, x13, x5 + stp x14, x15, [x0] + lsr x0, x11, 63 + sbc x0, x0, xzr + ret + + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/rsblsh2_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/rsblsh2_n.s new file mode 100644 index 0000000..1e79fe1 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/rsblsh2_n.s @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_rsblsh2_n + +___gmpn_rsblsh2_n: + lsr x6, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x5, [x1] + tbnz x3, #1, Lb11 + +Lb01: ldr x11, [x2] + cbz x6, L1 + ldp x8, x9, [x2,#8] + lsl x13, x11, #2 + subs x15, x13, x5 + str x15, [x0],#8 + sub x1, x1, #24 + sub x2, x2, #8 + b Lmid + +L1: lsl x13, x11, #2 + subs x15, x13, x5 + str x15, [x0] + lsr x0, x11, 62 + sbc x0, x0, xzr + ret + +Lb11: ldr x9, [x2] + ldp x10, x11, [x2,#8]! + lsl x13, x9, #2 + subs x17, x13, x5 + str x17, [x0],#8 + sub x1, x1, #8 + cbz x6, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: subs x11, xzr, xzr + ldp x8, x9, [x2],#-16 + sub x1, x1, #32 + b Lmid + +Lb10: subs x9, xzr, xzr + ldp x10, x11, [x2] + sub x1, x1, #16 + cbz x6, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #62 + ldp x8, x9, [x2,#16] + extr x13, x11, x10, #62 + sbcs x14, x12, x4 + sbcs x15, x13, x5 + stp x14, x15, [x0],#16 +Lmid: ldp x4, x5, [x1,#32]! + extr x12, x8, x11, #62 + ldp x10, x11, [x2,#32]! + extr x13, x9, x8, #62 + sbcs x16, x12, x4 + sbcs x17, x13, x5 + stp x16, x17, [x0],#16 + sub x6, x6, #1 + cbnz x6, Ltop + +Lend: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #62 + extr x13, x11, x10, #62 + sbcs x14, x12, x4 + sbcs x15, x13, x5 + stp x14, x15, [x0] + lsr x0, x11, 62 + sbc x0, x0, xzr + ret + + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/rsh1add_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/rsh1add_n.s new file mode 100644 index 0000000..0e46013 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/rsh1add_n.s @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_rsh1add_n + +___gmpn_rsh1add_n: + lsr x6, x3, #2 + + tbz x3, #0, Lbx0 + +Lbx1: ldr x5, [x1],#8 + ldr x9, [x2],#8 + tbnz x3, #1, Lb11 + +Lb01: adds x13, x5, x9 + and x10, x13, #1 + cbz x6, L1 + ldp x4, x5, [x1],#48 + ldp x8, x9, [x2],#48 + adcs x14, x4, x8 + adcs x15, x5, x9 + ldp x4, x5, [x1,#-32] + ldp x8, x9, [x2,#-32] + extr x17, x14, x13, #1 + adcs x12, x4, x8 + adcs x13, x5, x9 + str x17, [x0], #24 + sub x6, x6, #1 + cbz x6, Lend + b Ltop + +L1: cset x14, cs + extr x17, x14, x13, #1 + str x17, [x0] + mov x0, x10 + ret + +Lb11: adds x15, x5, x9 + and x10, x15, #1 + + ldp x4, x5, [x1],#32 + ldp x8, x9, [x2],#32 + adcs x12, x4, x8 + adcs x13, x5, x9 + cbz x6, L3 + ldp x4, x5, [x1,#-16] + ldp x8, x9, [x2,#-16] + extr x17, x12, x15, #1 + adcs x14, x4, x8 + adcs x15, x5, x9 + str x17, [x0], #8 + b Lmid + +L3: extr x17, x12, x15, #1 + str x17, [x0], #8 + b L2 + +Lbx0: tbz x3, #1, Lb00 + +Lb10: ldp x4, x5, [x1],#32 + ldp x8, x9, [x2],#32 + adds x12, x4, x8 + adcs x13, x5, x9 + and x10, x12, #1 + cbz x6, L2 + ldp x4, x5, [x1,#-16] + ldp x8, x9, [x2,#-16] + adcs x14, x4, x8 + adcs x15, x5, x9 + b Lmid + +Lb00: ldp x4, x5, [x1],#48 + ldp x8, x9, [x2],#48 + adds x14, x4, x8 + adcs x15, x5, x9 + and x10, x14, #1 + ldp x4, x5, [x1,#-32] + ldp x8, x9, [x2,#-32] + adcs x12, x4, x8 + adcs x13, x5, x9 + add x0, x0, #16 + sub x6, x6, #1 + cbz x6, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#-16] + ldp x8, x9, [x2,#-16] + extr x16, x15, x14, #1 + extr x17, x12, x15, #1 + adcs x14, x4, x8 + adcs x15, x5, x9 + stp x16, x17, [x0,#-16] +Lmid: ldp x4, x5, [x1],#32 + ldp x8, x9, [x2],#32 + extr x16, x13, x12, #1 + extr x17, x14, x13, #1 + adcs x12, x4, x8 + adcs x13, x5, x9 + stp x16, x17, [x0],#32 + sub x6, x6, #1 + cbnz x6, Ltop + +Lend: extr x16, x15, x14, #1 + extr x17, x12, x15, #1 + stp x16, x17, [x0,#-16] +L2: cset x14, cs + extr x16, x13, x12, #1 + extr x17, x14, x13, #1 + stp x16, x17, [x0] + +Lret: mov x0, x10 + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/rsh1sub_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/rsh1sub_n.s new file mode 100644 index 0000000..2600b60 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/rsh1sub_n.s @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_rsh1sub_n + +___gmpn_rsh1sub_n: + lsr x6, x3, #2 + + tbz x3, #0, Lbx0 + +Lbx1: ldr x5, [x1],#8 + ldr x9, [x2],#8 + tbnz x3, #1, Lb11 + +Lb01: subs x13, x5, x9 + and x10, x13, #1 + cbz x6, L1 + ldp x4, x5, [x1],#48 + ldp x8, x9, [x2],#48 + sbcs x14, x4, x8 + sbcs x15, x5, x9 + ldp x4, x5, [x1,#-32] + ldp x8, x9, [x2,#-32] + extr x17, x14, x13, #1 + sbcs x12, x4, x8 + sbcs x13, x5, x9 + str x17, [x0], #24 + sub x6, x6, #1 + cbz x6, Lend + b Ltop + +L1: cset x14, cc + extr x17, x14, x13, #1 + str x17, [x0] + mov x0, x10 + ret + +Lb11: subs x15, x5, x9 + and x10, x15, #1 + + ldp x4, x5, [x1],#32 + ldp x8, x9, [x2],#32 + sbcs x12, x4, x8 + sbcs x13, x5, x9 + cbz x6, L3 + ldp x4, x5, [x1,#-16] + ldp x8, x9, [x2,#-16] + extr x17, x12, x15, #1 + sbcs x14, x4, x8 + sbcs x15, x5, x9 + str x17, [x0], #8 + b Lmid + +L3: extr x17, x12, x15, #1 + str x17, [x0], #8 + b L2 + +Lbx0: tbz x3, #1, Lb00 + +Lb10: ldp x4, x5, [x1],#32 + ldp x8, x9, [x2],#32 + subs x12, x4, x8 + sbcs x13, x5, x9 + and x10, x12, #1 + cbz x6, L2 + ldp x4, x5, [x1,#-16] + ldp x8, x9, [x2,#-16] + sbcs x14, x4, x8 + sbcs x15, x5, x9 + b Lmid + +Lb00: ldp x4, x5, [x1],#48 + ldp x8, x9, [x2],#48 + subs x14, x4, x8 + sbcs x15, x5, x9 + and x10, x14, #1 + ldp x4, x5, [x1,#-32] + ldp x8, x9, [x2,#-32] + sbcs x12, x4, x8 + sbcs x13, x5, x9 + add x0, x0, #16 + sub x6, x6, #1 + cbz x6, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#-16] + ldp x8, x9, [x2,#-16] + extr x16, x15, x14, #1 + extr x17, x12, x15, #1 + sbcs x14, x4, x8 + sbcs x15, x5, x9 + stp x16, x17, [x0,#-16] +Lmid: ldp x4, x5, [x1],#32 + ldp x8, x9, [x2],#32 + extr x16, x13, x12, #1 + extr x17, x14, x13, #1 + sbcs x12, x4, x8 + sbcs x13, x5, x9 + stp x16, x17, [x0],#32 + sub x6, x6, #1 + cbnz x6, Ltop + +Lend: extr x16, x15, x14, #1 + extr x17, x12, x15, #1 + stp x16, x17, [x0,#-16] +L2: cset x14, cc + extr x16, x13, x12, #1 + extr x17, x14, x13, #1 + stp x16, x17, [x0] + +Lret: mov x0, x10 + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/rshift.s b/vere/ext/gmp/gen/aarch64-macos/mpn/rshift.s new file mode 100644 index 0000000..a277519 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/rshift.s @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_rshift + +___gmpn_rshift: + mov x16, x0 + sub x8, xzr, x3 + lsr x17, x2, #2 + tbz x2, #0, Lbx0 + +Lbx1: ldr x5, [x1] + tbnz x2, #1, Lb11 + +Lb01: lsl x0, x5, x8 + lsr x2, x5, x3 + cbnz x17, Lgt1 + str x2, [x16] + ret +Lgt1: ldp x4, x5, [x1,#8] + sub x1, x1, #8 + sub x16, x16, #32 + b Llo2 + +Lb11: lsl x0, x5, x8 + lsr x2, x5, x3 + ldp x6, x7, [x1,#8]! + sub x16, x16, #16 + b Llo3 + +Lbx0: ldp x4, x5, [x1] + tbz x2, #1, Lb00 + +Lb10: lsl x0, x4, x8 + lsr x13, x4, x3 + lsl x10, x5, x8 + lsr x2, x5, x3 + cbnz x17, Lgt2 + orr x10, x10, x13 + stp x10, x2, [x16] + ret +Lgt2: ldp x4, x5, [x1,#16] + orr x10, x10, x13 + str x10, [x16],#-24 + b Llo2 + +Lb00: lsl x0, x4, x8 + lsr x13, x4, x3 + lsl x10, x5, x8 + lsr x2, x5, x3 + ldp x6, x7, [x1,#16]! + orr x10, x10, x13 + str x10, [x16],#-8 + b Llo0 + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + orr x10, x10, x13 + orr x11, x12, x2 + stp x11, x10, [x16,#16] + lsr x2, x7, x3 +Llo2: lsl x10, x5, x8 + lsl x12, x4, x8 + lsr x13, x4, x3 + ldp x6, x7, [x1,#32]! + orr x10, x10, x13 + orr x11, x12, x2 + stp x11, x10, [x16,#32]! + lsr x2, x5, x3 +Llo0: sub x17, x17, #1 +Llo3: lsl x10, x7, x8 + lsl x12, x6, x8 + lsr x13, x6, x3 + cbnz x17, Ltop + +Lend: orr x10, x10, x13 + orr x11, x12, x2 + lsr x2, x7, x3 + stp x11, x10, [x16,#16] + str x2, [x16,#32] + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/sec_tabselect.s b/vere/ext/gmp/gen/aarch64-macos/mpn/sec_tabselect.s new file mode 100644 index 0000000..13cb719 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/sec_tabselect.s @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_sec_tabselect + +___gmpn_sec_tabselect: + dup v7.2d, x4 + + mov x10, #1 + dup v6.2d, x10 + + subs x6, x2, #4 + b.mi Louter_end + +Louter_top: + mov x5, x3 + mov x12, x1 + movi v5.16b, #0 + movi v2.16b, #0 + movi v3.16b, #0 + .align 4 +Ltp4: cmeq v4.2d, v5.2d, v7.2d + ld1 {v0.2d,v1.2d}, [x1] + add v5.2d, v5.2d, v6.2d + bit v2.16b, v0.16b, v4.16b + bit v3.16b, v1.16b, v4.16b + add x1, x1, x2, lsl #3 + sub x5, x5, #1 + cbnz x5, Ltp4 + st1 {v2.2d,v3.2d}, [x0], #32 + add x1, x12, #32 + subs x6, x6, #4 + b.pl Louter_top +Louter_end: + + tbz x2, #1, Lb0x + mov x5, x3 + mov x12, x1 + movi v5.16b, #0 + movi v2.16b, #0 + .align 4 +Ltp2: cmeq v4.2d, v5.2d, v7.2d + ld1 {v0.2d}, [x1] + add v5.2d, v5.2d, v6.2d + bit v2.16b, v0.16b, v4.16b + add x1, x1, x2, lsl #3 + sub x5, x5, #1 + cbnz x5, Ltp2 + st1 {v2.2d}, [x0], #16 + add x1, x12, #16 + +Lb0x: tbz x2, #0, Lb00 + mov x5, x3 + mov x12, x1 + movi v5.16b, #0 + movi v2.16b, #0 + .align 4 +Ltp1: cmeq v4.2d, v5.2d, v7.2d + ld1 {v0.1d}, [x1] + add v5.2d, v5.2d, v6.2d + bit v2.8b, v0.8b, v4.8b + add x1, x1, x2, lsl #3 + sub x5, x5, #1 + cbnz x5, Ltp1 + st1 {v2.1d}, [x0], #8 + add x1, x12, #8 + +Lb00: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/sqr_diag_addlsh1.s b/vere/ext/gmp/gen/aarch64-macos/mpn/sqr_diag_addlsh1.s new file mode 100644 index 0000000..0255158 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/sqr_diag_addlsh1.s @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_sqr_diag_addlsh1 + +___gmpn_sqr_diag_addlsh1: + ldr x15, [x2],#8 + lsr x14, x3, #1 + tbz x3, #0, Lbx0 + +Lbx1: adds x7, xzr, xzr + mul x12, x15, x15 + ldr x16, [x2],#8 + ldp x4, x5, [x1],#16 + umulh x11, x15, x15 + b Lmid + +Lbx0: adds x5, xzr, xzr + mul x12, x15, x15 + ldr x17, [x2],#16 + ldp x6, x7, [x1],#32 + umulh x11, x15, x15 + sub x14, x14, #1 + cbz x14, Lend + + .align 4 +Ltop: extr x9, x6, x5, #63 + mul x10, x17, x17 + ldr x16, [x2,#-8] + adcs x13, x9, x11 + ldp x4, x5, [x1,#-16] + umulh x11, x17, x17 + extr x8, x7, x6, #63 + stp x12, x13, [x0],#16 + adcs x12, x8, x10 +Lmid: extr x9, x4, x7, #63 + mul x10, x16, x16 + ldr x17, [x2],#16 + adcs x13, x9, x11 + ldp x6, x7, [x1],#32 + umulh x11, x16, x16 + extr x8, x5, x4, #63 + stp x12, x13, [x0],#16 + adcs x12, x8, x10 + sub x14, x14, #1 + cbnz x14, Ltop + +Lend: extr x9, x6, x5, #63 + mul x10, x17, x17 + adcs x13, x9, x11 + umulh x11, x17, x17 + extr x8, x7, x6, #63 + stp x12, x13, [x0] + adcs x12, x8, x10 + extr x9, xzr, x7, #63 + adcs x13, x9, x11 + stp x12, x13, [x0,#16] + + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/sub_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/sub_n.s new file mode 100644 index 0000000..3695521 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/sub_n.s @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_sub_nc + +___gmpn_sub_nc: + cmp xzr, x4 + b Lent + + .text + .align 3 + .globl ___gmpn_sub_n + +___gmpn_sub_n: + cmp xzr, xzr +Lent: lsr x17, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x7, [x1] + ldr x11, [x2] + sbcs x13, x7, x11 + str x13, [x0],#8 + tbnz x3, #1, Lb11 + +Lb01: cbz x17, Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b Lmid + +Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x17, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: ldp x4, x5, [x1] + ldp x8, x9, [x2] + sub x1, x1, #16 + sub x2, x2, #16 + b Lmid + +Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x17, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + sbcs x12, x6, x10 + sbcs x13, x7, x11 + stp x12, x13, [x0],#16 +Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + sbcs x12, x4, x8 + sbcs x13, x5, x9 + stp x12, x13, [x0],#16 + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: sbcs x12, x6, x10 + sbcs x13, x7, x11 + stp x12, x13, [x0] +Lret: cset x0, cc + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/sublsh1_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/sublsh1_n.s new file mode 100644 index 0000000..e3e924f --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/sublsh1_n.s @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_sublsh1_n + +___gmpn_sublsh1_n: + lsr x6, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x5, [x1] + tbnz x3, #1, Lb11 + +Lb01: ldr x11, [x2] + cbz x6, L1 + ldp x8, x9, [x2,#8] + lsl x13, x11, #1 + subs x15, x5, x13 + str x15, [x0],#8 + sub x1, x1, #24 + sub x2, x2, #8 + b Lmid + +L1: lsl x13, x11, #1 + subs x15, x5, x13 + str x15, [x0] + lsr x0, x11, 63 + cinc x0, x0, cc + ret + +Lb11: ldr x9, [x2] + ldp x10, x11, [x2,#8]! + lsl x13, x9, #1 + subs x17, x5, x13 + str x17, [x0],#8 + sub x1, x1, #8 + cbz x6, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: subs x11, xzr, xzr + ldp x8, x9, [x2],#-16 + sub x1, x1, #32 + b Lmid + +Lb10: subs x9, xzr, xzr + ldp x10, x11, [x2] + sub x1, x1, #16 + cbz x6, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #63 + ldp x8, x9, [x2,#16] + extr x13, x11, x10, #63 + sbcs x14, x4, x12 + sbcs x15, x5, x13 + stp x14, x15, [x0],#16 +Lmid: ldp x4, x5, [x1,#32]! + extr x12, x8, x11, #63 + ldp x10, x11, [x2,#32]! + extr x13, x9, x8, #63 + sbcs x16, x4, x12 + sbcs x17, x5, x13 + stp x16, x17, [x0],#16 + sub x6, x6, #1 + cbnz x6, Ltop + +Lend: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #63 + extr x13, x11, x10, #63 + sbcs x14, x4, x12 + sbcs x15, x5, x13 + stp x14, x15, [x0] + lsr x0, x11, 63 + cinc x0, x0, cc + ret + + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/sublsh2_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/sublsh2_n.s new file mode 100644 index 0000000..0df8084 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/sublsh2_n.s @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_sublsh2_n + +___gmpn_sublsh2_n: + lsr x6, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x5, [x1] + tbnz x3, #1, Lb11 + +Lb01: ldr x11, [x2] + cbz x6, L1 + ldp x8, x9, [x2,#8] + lsl x13, x11, #2 + subs x15, x5, x13 + str x15, [x0],#8 + sub x1, x1, #24 + sub x2, x2, #8 + b Lmid + +L1: lsl x13, x11, #2 + subs x15, x5, x13 + str x15, [x0] + lsr x0, x11, 62 + cinc x0, x0, cc + ret + +Lb11: ldr x9, [x2] + ldp x10, x11, [x2,#8]! + lsl x13, x9, #2 + subs x17, x5, x13 + str x17, [x0],#8 + sub x1, x1, #8 + cbz x6, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: subs x11, xzr, xzr + ldp x8, x9, [x2],#-16 + sub x1, x1, #32 + b Lmid + +Lb10: subs x9, xzr, xzr + ldp x10, x11, [x2] + sub x1, x1, #16 + cbz x6, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #62 + ldp x8, x9, [x2,#16] + extr x13, x11, x10, #62 + sbcs x14, x4, x12 + sbcs x15, x5, x13 + stp x14, x15, [x0],#16 +Lmid: ldp x4, x5, [x1,#32]! + extr x12, x8, x11, #62 + ldp x10, x11, [x2,#32]! + extr x13, x9, x8, #62 + sbcs x16, x4, x12 + sbcs x17, x5, x13 + stp x16, x17, [x0],#16 + sub x6, x6, #1 + cbnz x6, Ltop + +Lend: ldp x4, x5, [x1,#16] + extr x12, x10, x9, #62 + extr x13, x11, x10, #62 + sbcs x14, x4, x12 + sbcs x15, x5, x13 + stp x14, x15, [x0] + lsr x0, x11, 62 + cinc x0, x0, cc + ret + + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/submul_1.s b/vere/ext/gmp/gen/aarch64-macos/mpn/submul_1.s new file mode 100644 index 0000000..11f80f4 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/submul_1.s @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_submul_1 + +___gmpn_submul_1: + adds x15, xzr, xzr + + tbz x2, #0, L1 + + ldr x4, [x1],#8 + mul x8, x4, x3 + umulh x12, x4, x3 + ldr x4, [x0] + subs x8, x4, x8 + csinc x15, x12, x12, cs + str x8, [x0],#8 + +L1: tbz x2, #1, L2 + + ldp x4, x5, [x1],#16 + mul x8, x4, x3 + umulh x12, x4, x3 + mul x9, x5, x3 + umulh x13, x5, x3 + adds x8, x8, x15 + adcs x9, x9, x12 + ldp x4, x5, [x0] + adc x15, x13, xzr + subs x8, x4, x8 + sbcs x9, x5, x9 + csinc x15, x15, x15, cs + stp x8, x9, [x0],#16 + +L2: lsr x2, x2, #2 + cbz x2, Lle3 + ldp x4, x5, [x1],#32 + ldp x6, x7, [x1,#-16] + b Lmid +Lle3: mov x0, x15 + ret + + .align 4 +Ltop: ldp x4, x5, [x1],#32 + ldp x6, x7, [x1,#-16] + subs x8, x16, x8 + sbcs x9, x17, x9 + stp x8, x9, [x0],#32 + sbcs x10, x12, x10 + sbcs x11, x13, x11 + stp x10, x11, [x0,#-16] + csinc x15, x15, x15, cs +Lmid: sub x2, x2, #1 + mul x8, x4, x3 + umulh x12, x4, x3 + mul x9, x5, x3 + umulh x13, x5, x3 + adds x8, x8, x15 + mul x10, x6, x3 + umulh x14, x6, x3 + adcs x9, x9, x12 + mul x11, x7, x3 + umulh x15, x7, x3 + adcs x10, x10, x13 + ldp x16, x17, [x0] + adcs x11, x11, x14 + ldp x12, x13, [x0,#16] + adc x15, x15, xzr + cbnz x2, Ltop + + subs x8, x16, x8 + sbcs x9, x17, x9 + sbcs x10, x12, x10 + sbcs x11, x13, x11 + stp x8, x9, [x0] + stp x10, x11, [x0,#16] + csinc x0, x15, x15, cs + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/tmp-add_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/tmp-add_n.s new file mode 100644 index 0000000..5f2b539 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/tmp-add_n.s @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_add_nc + +___gmpn_add_nc: + cmp x4, #1 + b Lent + + .text + .align 3 + .globl ___gmpn_add_n + +___gmpn_add_n: + cmn xzr, xzr +Lent: lsr x17, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x7, [x1] + ldr x11, [x2] + adcs x13, x7, x11 + str x13, [x0],#8 + tbnz x3, #1, Lb11 + +Lb01: cbz x17, Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b Lmid + +Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x17, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: ldp x4, x5, [x1] + ldp x8, x9, [x2] + sub x1, x1, #16 + sub x2, x2, #16 + b Lmid + +Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x17, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + adcs x12, x6, x10 + adcs x13, x7, x11 + stp x12, x13, [x0],#16 +Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + adcs x12, x4, x8 + adcs x13, x5, x9 + stp x12, x13, [x0],#16 + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: adcs x12, x6, x10 + adcs x13, x7, x11 + stp x12, x13, [x0] +Lret: cset x0, cs + ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/xnor_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/xnor_n.s new file mode 100644 index 0000000..345378e --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/xnor_n.s @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_xnor_n + +___gmpn_xnor_n: + lsr x17, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x7, [x1] + ldr x11, [x2] + eon x15, x7, x11 + str x15, [x0],#8 + tbnz x3, #1, Lb11 + +Lb01: cbz x17, Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b Lmid + +Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x17, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b Lmid + +Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x17, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + eon x12, x6, x10 + eon x13, x7, x11 + stp x12, x13, [x0],#16 +Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + eon x12, x4, x8 + eon x13, x5, x9 + stp x12, x13, [x0],#16 + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: eon x12, x6, x10 + eon x13, x7, x11 + stp x12, x13, [x0] +Lret: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/mpn/xor_n.s b/vere/ext/gmp/gen/aarch64-macos/mpn/xor_n.s new file mode 100644 index 0000000..2b59a4b --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/mpn/xor_n.s @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3 + .globl ___gmpn_xor_n + +___gmpn_xor_n: + lsr x17, x3, #2 + tbz x3, #0, Lbx0 + +Lbx1: ldr x7, [x1] + ldr x11, [x2] + eor x15, x7, x11 + str x15, [x0],#8 + tbnz x3, #1, Lb11 + +Lb01: cbz x17, Lret + ldp x4, x5, [x1,#8] + ldp x8, x9, [x2,#8] + sub x1, x1, #8 + sub x2, x2, #8 + b Lmid + +Lb11: ldp x6, x7, [x1,#8] + ldp x10, x11, [x2,#8] + add x1, x1, #8 + add x2, x2, #8 + cbz x17, Lend + b Ltop + +Lbx0: tbnz x3, #1, Lb10 + +Lb00: ldp x4, x5, [x1],#-16 + ldp x8, x9, [x2],#-16 + b Lmid + +Lb10: ldp x6, x7, [x1] + ldp x10, x11, [x2] + cbz x17, Lend + + .align 4 +Ltop: ldp x4, x5, [x1,#16] + ldp x8, x9, [x2,#16] + eor x12, x6, x10 + eor x13, x7, x11 + stp x12, x13, [x0],#16 +Lmid: ldp x6, x7, [x1,#32]! + ldp x10, x11, [x2,#32]! + eor x12, x4, x8 + eor x13, x5, x9 + stp x12, x13, [x0],#16 + sub x17, x17, #1 + cbnz x17, Ltop + +Lend: eor x12, x6, x10 + eor x13, x7, x11 + stp x12, x13, [x0] +Lret: ret + diff --git a/vere/ext/gmp/gen/aarch64-macos/sieve_table.h b/vere/ext/gmp/gen/aarch64-macos/sieve_table.h new file mode 100644 index 0000000..ee9ac14 --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/sieve_table.h @@ -0,0 +1,46 @@ +/* This file generated by gen-sieve.c - DO NOT EDIT. */ + +#if GMP_LIMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +#define PRIMESIEVE_INIT_TABLE \ + CNST_LIMB (0x3294C9E069128480), /* 5 - 196 (42 primes) */ \ + CNST_LIMB (0x95A35E1EC4AB21DC), /* 197 - 388 (32 primes) */ \ + CNST_LIMB (0x4AD7CE99B8693366), /* 389 - 580 (30 primes) */ \ + CNST_LIMB (0x6595B6DA728DC52B), /* 581 - 772 (30 primes) */ \ + CNST_LIMB (0xEA6D9F8787B0CEDE), /* 773 - 964 (26 primes) */ \ + CNST_LIMB (0x3F56A1F4CD3275A9), /* 965 - 1156 (29 primes) */ \ + CNST_LIMB (0xFD3848FB74A76ADB), /* 1157 - 1348 (26 primes) */ \ + CNST_LIMB (0xDBBA0DD1A1EDF6AF), /* 1349 - 1540 (25 primes) */ \ + CNST_LIMB (0xCEC7F17ED22799A5), /* 1541 - 1732 (27 primes) */ \ + CNST_LIMB (0xEAEC17BDBB717D56), /* 1733 - 1924 (24 primes) */ \ + CNST_LIMB (0x3B0EB7B3585AFCF3), /* 1925 - 2116 (26 primes) */ \ + CNST_LIMB (0xE563D8F69FDF6C4F), /* 2117 - 2308 (23 primes) */ \ + CNST_LIMB (0xFE5BA7ABA45E92FC), /* 2309 - 2500 (25 primes) */ \ + CNST_LIMB (0x158DEE6F3BF49B7D), /* 2501 - 2692 (24 primes) */ \ + CNST_LIMB (0xBE5A7BC4EDE6CD1A), /* 2693 - 2884 (26 primes) */ \ + CNST_LIMB (0xD7679B3FCA7BB6AD), /* 2885 - 3076 (22 primes) */ \ + CNST_LIMB (0xC3F66B971FEF37E9), /* 3077 - 3268 (22 primes) */ \ + CNST_LIMB (0x6F7EBCF339C953FD), /* 3269 - 3460 (22 primes) */ \ + CNST_LIMB (0xD5A5ECDCD235DBF0), /* 3461 - 3652 (27 primes) */ \ + CNST_LIMB (0xECFA7B2FD5B65E3B), /* 3653 - 3844 (22 primes) */ \ + CNST_LIMB (0xD28EFDF9C89F67B1), /* 3845 - 4036 (25 primes) */ \ + CNST_LIMB (0xCB7F7C7A3DD3AF4F), /* 4037 - 4228 (21 primes) */ \ + CNST_LIMB (0xEEBED6CDFF6B32CC), /* 4229 - 4420 (22 primes) */ \ + CNST_LIMB (0xD5BD73F85ECFA97C), /* 4421 - 4612 (23 primes) */ \ + CNST_LIMB (0x21FDBE4FBBAD48F7), /* 4613 - 4804 (24 primes) */ \ + CNST_LIMB (0x5E35A3B5EEB7FDE7), /* 4805 - 4996 (21 primes) */ \ + CNST_LIMB (0xD9EBFD53A7DBBCC9), /* 4997 - 5188 (22 primes) */ \ + CNST_LIMB (0xFF9EDEAF2EFE1F76), /* 5189 - 5380 (18 primes) */ +#define PRIMESIEVE_NUMBEROF_TABLE 28 +/* #define PRIMESIEVE_PRIMES_IN_TABLE 706 */ +#define PRIMESIEVE_HIGHEST_PRIME 5351 +/* #define PRIMESIEVE_FIRST_UNCHECKED 5381 */ + +#define SIEVE_MASK1 CNST_LIMB(0x3204C1A049120485) +#define SIEVE_MASKT CNST_LIMB(0xA1204892058) +#define SIEVE_2MSK1 CNST_LIMB(0x29048402110840A) +#define SIEVE_2MSK2 CNST_LIMB(0x9402180C40230184) +#define SIEVE_2MSKT CNST_LIMB(0x5021088402120) + diff --git a/vere/ext/gmp/gen/aarch64-macos/trialdivtab.h b/vere/ext/gmp/gen/aarch64-macos/trialdivtab.h new file mode 100644 index 0000000..eb81d7f --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-macos/trialdivtab.h @@ -0,0 +1,1214 @@ +#if GMP_LIMB_BITS != 64 +#error This table is for GMP_LIMB_BITS = 64 +#endif + +#if GMP_NAIL_BITS != 0 +#error This table does not support nails +#endif + +#ifdef WANT_dtab + P(3,CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0x5555555555555555)), + P(5,CNST_LIMB(0xcccccccccccccccd),CNST_LIMB(0x3333333333333333)), + P(7,CNST_LIMB(0x6db6db6db6db6db7),CNST_LIMB(0x2492492492492492)), + P(11,CNST_LIMB(0x2e8ba2e8ba2e8ba3),CNST_LIMB(0x1745d1745d1745d1)), + P(13,CNST_LIMB(0x4ec4ec4ec4ec4ec5),CNST_LIMB(0x13b13b13b13b13b1)), + P(17,CNST_LIMB(0xf0f0f0f0f0f0f0f1),CNST_LIMB(0xf0f0f0f0f0f0f0f)), + P(19,CNST_LIMB(0x86bca1af286bca1b),CNST_LIMB(0xd79435e50d79435)), + P(23,CNST_LIMB(0xd37a6f4de9bd37a7),CNST_LIMB(0xb21642c8590b216)), + P(29,CNST_LIMB(0x34f72c234f72c235),CNST_LIMB(0x8d3dcb08d3dcb08)), + P(31,CNST_LIMB(0xef7bdef7bdef7bdf),CNST_LIMB(0x842108421084210)), + P(37,CNST_LIMB(0x14c1bacf914c1bad),CNST_LIMB(0x6eb3e45306eb3e4)), + P(41,CNST_LIMB(0x8f9c18f9c18f9c19),CNST_LIMB(0x63e7063e7063e70)), + P(43,CNST_LIMB(0x82fa0be82fa0be83),CNST_LIMB(0x5f417d05f417d05)), + P(47,CNST_LIMB(0x51b3bea3677d46cf),CNST_LIMB(0x572620ae4c415c9)), + P(53,CNST_LIMB(0x21cfb2b78c13521d),CNST_LIMB(0x4d4873ecade304d)), + P(59,CNST_LIMB(0xcbeea4e1a08ad8f3),CNST_LIMB(0x456c797dd49c341)), + P(61,CNST_LIMB(0x4fbcda3ac10c9715),CNST_LIMB(0x4325c53ef368eb0)), + P(67,CNST_LIMB(0xf0b7672a07a44c6b),CNST_LIMB(0x3d226357e16ece5)), + P(71,CNST_LIMB(0x193d4bb7e327a977),CNST_LIMB(0x39b0ad12073615a)), + P(73,CNST_LIMB(0x7e3f1f8fc7e3f1f9),CNST_LIMB(0x381c0e070381c0e)), + P(79,CNST_LIMB(0x9b8b577e613716af),CNST_LIMB(0x33d91d2a2067b23)), + P(83,CNST_LIMB(0xa3784a062b2e43db),CNST_LIMB(0x3159721ed7e7534)), + P(89,CNST_LIMB(0xf47e8fd1fa3f47e9),CNST_LIMB(0x2e05c0b81702e05)), + P(97,CNST_LIMB(0xa3a0fd5c5f02a3a1),CNST_LIMB(0x2a3a0fd5c5f02a3)), + P(101,CNST_LIMB(0x3a4c0a237c32b16d),CNST_LIMB(0x288df0cac5b3f5d)), + P(103,CNST_LIMB(0xdab7ec1dd3431b57),CNST_LIMB(0x27c45979c95204f)), + P(107,CNST_LIMB(0x77a04c8f8d28ac43),CNST_LIMB(0x2647c69456217ec)), + P(109,CNST_LIMB(0xa6c0964fda6c0965),CNST_LIMB(0x2593f69b02593f6)), + P(113,CNST_LIMB(0x90fdbc090fdbc091),CNST_LIMB(0x243f6f0243f6f02)), + P(127,CNST_LIMB(0x7efdfbf7efdfbf7f),CNST_LIMB(0x204081020408102)), + P(131,CNST_LIMB(0x3e88cb3c9484e2b),CNST_LIMB(0x1f44659e4a42715)), + P(137,CNST_LIMB(0xe21a291c077975b9),CNST_LIMB(0x1de5d6e3f8868a4)), + P(139,CNST_LIMB(0x3aef6ca970586723),CNST_LIMB(0x1d77b654b82c339)), + P(149,CNST_LIMB(0xdf5b0f768ce2cabd),CNST_LIMB(0x1b7d6c3dda338b2)), + P(151,CNST_LIMB(0x6fe4dfc9bf937f27),CNST_LIMB(0x1b2036406c80d90)), + P(157,CNST_LIMB(0x5b4fe5e92c0685b5),CNST_LIMB(0x1a16d3f97a4b01a)), + P(163,CNST_LIMB(0x1f693a1c451ab30b),CNST_LIMB(0x1920fb49d0e228d)), + P(167,CNST_LIMB(0x8d07aa27db35a717),CNST_LIMB(0x1886e5f0abb0499)), + P(173,CNST_LIMB(0x882383b30d516325),CNST_LIMB(0x17ad2208e0ecc35)), + P(179,CNST_LIMB(0xed6866f8d962ae7b),CNST_LIMB(0x16e1f76b4337c6c)), + P(181,CNST_LIMB(0x3454dca410f8ed9d),CNST_LIMB(0x16a13cd15372904)), + P(191,CNST_LIMB(0x1d7ca632ee936f3f),CNST_LIMB(0x1571ed3c506b39a)), + P(193,CNST_LIMB(0x70bf015390948f41),CNST_LIMB(0x15390948f40feac)), + P(197,CNST_LIMB(0xc96bdb9d3d137e0d),CNST_LIMB(0x14cab88725af6e7)), + P(199,CNST_LIMB(0x2697cc8aef46c0f7),CNST_LIMB(0x149539e3b2d066e)), + P(211,CNST_LIMB(0xc0e8f2a76e68575b),CNST_LIMB(0x13698df3de07479)), + P(223,CNST_LIMB(0x687763dfdb43bb1f),CNST_LIMB(0x125e22708092f11)), + P(227,CNST_LIMB(0x1b10ea929ba144cb),CNST_LIMB(0x120b470c67c0d88)), + P(229,CNST_LIMB(0x1d10c4c0478bbced),CNST_LIMB(0x11e2ef3b3fb8744)), + P(233,CNST_LIMB(0x63fb9aeb1fdcd759),CNST_LIMB(0x119453808ca29c0)), + P(239,CNST_LIMB(0x64afaa4f437b2e0f),CNST_LIMB(0x112358e75d30336)), + P(241,CNST_LIMB(0xf010fef010fef011),CNST_LIMB(0x10fef010fef010f)), + P(251,CNST_LIMB(0x28cbfbeb9a020a33),CNST_LIMB(0x105197f7d734041)), + P(257,CNST_LIMB(0xff00ff00ff00ff01),CNST_LIMB(0xff00ff00ff00ff)), + P(263,CNST_LIMB(0xd624fd1470e99cb7),CNST_LIMB(0xf92fb2211855a8)), + P(269,CNST_LIMB(0x8fb3ddbd6205b5c5),CNST_LIMB(0xf3a0d52cba8723)), + P(271,CNST_LIMB(0xd57da36ca27acdef),CNST_LIMB(0xf1d48bcee0d399)), + P(277,CNST_LIMB(0xee70c03b25e4463d),CNST_LIMB(0xec979118f3fc4d)), + P(281,CNST_LIMB(0xc5b1a6b80749cb29),CNST_LIMB(0xe939651fe2d8d3)), + P(283,CNST_LIMB(0x47768073c9b97113),CNST_LIMB(0xe79372e225fe30)), + P(293,CNST_LIMB(0x2591e94884ce32ad),CNST_LIMB(0xdfac1f74346c57)), + P(307,CNST_LIMB(0xf02806abc74be1fb),CNST_LIMB(0xd578e97c3f5fe5)), + P(311,CNST_LIMB(0x7ec3e8f3a7198487),CNST_LIMB(0xd2ba083b445250)), + P(313,CNST_LIMB(0x58550f8a39409d09),CNST_LIMB(0xd161543e28e502)), + P(317,CNST_LIMB(0xec9e48ae6f71de15),CNST_LIMB(0xcebcf8bb5b4169)), + P(331,CNST_LIMB(0x2ff3a018bfce8063),CNST_LIMB(0xc5fe740317f9d0)), + P(337,CNST_LIMB(0x7f9ec3fcf61fe7b1),CNST_LIMB(0xc2780613c0309e)), + P(347,CNST_LIMB(0x89f5abe570e046d3),CNST_LIMB(0xbcdd535db1cc5b)), + P(349,CNST_LIMB(0xda971b23f1545af5),CNST_LIMB(0xbbc8408cd63069)), + P(353,CNST_LIMB(0x79d5f00b9a7862a1),CNST_LIMB(0xb9a7862a0ff465)), + P(359,CNST_LIMB(0x4dba1df32a128a57),CNST_LIMB(0xb68d31340e4307)), + P(367,CNST_LIMB(0x87530217b7747d8f),CNST_LIMB(0xb2927c29da5519)), + P(373,CNST_LIMB(0x30baae53bb5e06dd),CNST_LIMB(0xafb321a1496fdf)), + P(379,CNST_LIMB(0xee70206c12e9b5b3),CNST_LIMB(0xaceb0f891e6551)), + P(383,CNST_LIMB(0xcdde9462ec9dbe7f),CNST_LIMB(0xab1cbdd3e2970f)), + P(389,CNST_LIMB(0xafb64b05ec41cf4d),CNST_LIMB(0xa87917088e262b)), + P(397,CNST_LIMB(0x2944ff5aec02945),CNST_LIMB(0xa513fd6bb00a51)), + P(401,CNST_LIMB(0x2cb033128382df71),CNST_LIMB(0xa36e71a2cb0331)), + P(409,CNST_LIMB(0x1ccacc0c84b1c2a9),CNST_LIMB(0xa03c1688732b30)), + P(419,CNST_LIMB(0x19a93db575eb3a0b),CNST_LIMB(0x9c69169b30446d)), + P(421,CNST_LIMB(0xcebeef94fa86fe2d),CNST_LIMB(0x9baade8e4a2f6e)), + P(431,CNST_LIMB(0x6faa77fb3f8df54f),CNST_LIMB(0x980e4156201301)), + P(433,CNST_LIMB(0x68a58af00975a751),CNST_LIMB(0x975a750ff68a58)), + P(439,CNST_LIMB(0xd56e36d0c3efac07),CNST_LIMB(0x9548e4979e0829)), + P(443,CNST_LIMB(0xd8b44c47a8299b73),CNST_LIMB(0x93efd1c50e726b)), + P(449,CNST_LIMB(0x2d9ccaf9ba70e41),CNST_LIMB(0x91f5bcb8bb02d9)), + P(457,CNST_LIMB(0x985e1c023d9e879),CNST_LIMB(0x8f67a1e3fdc261)), + P(461,CNST_LIMB(0x2a343316c494d305),CNST_LIMB(0x8e2917e0e702c6)), + P(463,CNST_LIMB(0x70cb7916ab67652f),CNST_LIMB(0x8d8be33f95d715)), + P(467,CNST_LIMB(0xd398f132fb10fe5b),CNST_LIMB(0x8c55841c815ed5)), + P(479,CNST_LIMB(0x6f2a38a6bf54fa1f),CNST_LIMB(0x88d180cd3a4133)), + P(487,CNST_LIMB(0x211df689b98f81d7),CNST_LIMB(0x869222b1acf1ce)), + P(491,CNST_LIMB(0xe994983e90f1ec3),CNST_LIMB(0x85797b917765ab)), + P(499,CNST_LIMB(0xad671e44bed87f3b),CNST_LIMB(0x8355ace3c897db)), + P(503,CNST_LIMB(0xf9623a0516e70fc7),CNST_LIMB(0x824a4e60b3262b)), + P(509,CNST_LIMB(0x4b7129be9dece355),CNST_LIMB(0x80c121b28bd1ba)), + P(521,CNST_LIMB(0x190f3b7473f62c39),CNST_LIMB(0x7dc9f3397d4c29)), + P(523,CNST_LIMB(0x63dacc9aad46f9a3),CNST_LIMB(0x7d4ece8fe88139)), + P(541,CNST_LIMB(0xc1108fda24e8d035),CNST_LIMB(0x79237d65bcce50)), + P(547,CNST_LIMB(0xb77578472319bd8b),CNST_LIMB(0x77cf53c5f7936c)), + P(557,CNST_LIMB(0x473d20a1c7ed9da5),CNST_LIMB(0x75a8accfbdd11e)), + P(563,CNST_LIMB(0xfbe85af0fea2c8fb),CNST_LIMB(0x7467ac557c228e)), + P(569,CNST_LIMB(0x58a1f7e6ce0f4c09),CNST_LIMB(0x732d70ed8db8e9)), + P(571,CNST_LIMB(0x1a00e58c544986f3),CNST_LIMB(0x72c62a24c3797f)), + P(577,CNST_LIMB(0x7194a17f55a10dc1),CNST_LIMB(0x7194a17f55a10d)), + P(587,CNST_LIMB(0x7084944785e33763),CNST_LIMB(0x6fa549b41da7e7)), + P(593,CNST_LIMB(0xba10679bd84886b1),CNST_LIMB(0x6e8419e6f61221)), + P(599,CNST_LIMB(0xebe9c6bb31260967),CNST_LIMB(0x6d68b5356c207b)), + P(601,CNST_LIMB(0x97a3fe4bd1ff25e9),CNST_LIMB(0x6d0b803685c01b)), + P(607,CNST_LIMB(0x6c6388395b84d99f),CNST_LIMB(0x6bf790a8b2d207)), + P(613,CNST_LIMB(0x8c51da6a1335df6d),CNST_LIMB(0x6ae907ef4b96c2)), + P(617,CNST_LIMB(0x46f3234475d5add9),CNST_LIMB(0x6a37991a23aead)), + P(619,CNST_LIMB(0x905605ca3c619a43),CNST_LIMB(0x69dfbdd4295b66)), + P(631,CNST_LIMB(0xcee8dff304767747),CNST_LIMB(0x67dc4c45c8033e)), + P(641,CNST_LIMB(0xff99c27f00663d81),CNST_LIMB(0x663d80ff99c27f)), + P(643,CNST_LIMB(0xacca407f671ddc2b),CNST_LIMB(0x65ec17e3559948)), + P(647,CNST_LIMB(0xe71298bac1e12337),CNST_LIMB(0x654ac835cfba5c)), + P(653,CNST_LIMB(0xfa1e94309cd09045),CNST_LIMB(0x645c854ae10772)), + P(659,CNST_LIMB(0xbebccb8e91496b9b),CNST_LIMB(0x6372990e5f901f)), + P(661,CNST_LIMB(0x312fa30cc7d7b8bd),CNST_LIMB(0x6325913c07beef)), + P(673,CNST_LIMB(0x6160ff9e9f006161),CNST_LIMB(0x6160ff9e9f0061)), + P(677,CNST_LIMB(0x6b03673b5e28152d),CNST_LIMB(0x60cdb520e5e88e)), + P(683,CNST_LIMB(0xfe802ffa00bfe803),CNST_LIMB(0x5ff4017fd005ff)), + P(691,CNST_LIMB(0xe66fe25c9e907c7b),CNST_LIMB(0x5ed79e31a4dccd)), + P(701,CNST_LIMB(0x3f8b236c76528895),CNST_LIMB(0x5d7d42d48ac5ef)), + P(709,CNST_LIMB(0xf6f923bf01ce2c0d),CNST_LIMB(0x5c6f35ccba5028)), + P(719,CNST_LIMB(0x6c3d3d98bed7c42f),CNST_LIMB(0x5b2618ec6ad0a5)), + P(727,CNST_LIMB(0x30981efcd4b010e7),CNST_LIMB(0x5a2553748e42e7)), + P(733,CNST_LIMB(0x6f691fc81ebbe575),CNST_LIMB(0x59686cf744cd5b)), + P(739,CNST_LIMB(0xb10480ddb47b52cb),CNST_LIMB(0x58ae97bab79976)), + P(743,CNST_LIMB(0x74cd59ed64f3f0d7),CNST_LIMB(0x58345f1876865f)), + P(751,CNST_LIMB(0x105cb81316d6c0f),CNST_LIMB(0x5743d5bb24795a)), + P(757,CNST_LIMB(0x9be64c6d91c1195d),CNST_LIMB(0x5692c4d1ab74ab)), + P(761,CNST_LIMB(0x71b3f945a27b1f49),CNST_LIMB(0x561e46a4d5f337)), + P(769,CNST_LIMB(0x77d80d50e508fd01),CNST_LIMB(0x5538ed06533997)), + P(773,CNST_LIMB(0xa5eb778e133551cd),CNST_LIMB(0x54c807f2c0bec2)), + P(787,CNST_LIMB(0x18657d3c2d8a3f1b),CNST_LIMB(0x5345efbc572d36)), + P(797,CNST_LIMB(0x2e40e220c34ad735),CNST_LIMB(0x523a758f941345)), + P(809,CNST_LIMB(0xa76593c70a714919),CNST_LIMB(0x5102370f816c89)), + P(811,CNST_LIMB(0x1eef452124eea383),CNST_LIMB(0x50cf129fb94acf)), + P(821,CNST_LIMB(0x38206dc242ba771d),CNST_LIMB(0x4fd31941cafdd1)), + P(823,CNST_LIMB(0x4cd4c35807772287),CNST_LIMB(0x4fa1704aa75945)), + P(827,CNST_LIMB(0x83de917d5e69ddf3),CNST_LIMB(0x4f3ed6d45a63ad)), + P(829,CNST_LIMB(0x882ef0403b4a6c15),CNST_LIMB(0x4f0de57154ebed)), + P(839,CNST_LIMB(0xf8fb6c51c606b677),CNST_LIMB(0x4e1cae8815f811)), + P(853,CNST_LIMB(0xb4abaac446d3e1fd),CNST_LIMB(0x4cd47ba5f6ff19)), + P(857,CNST_LIMB(0xa9f83bbe484a14e9),CNST_LIMB(0x4c78ae734df709)), + P(859,CNST_LIMB(0xbebbc0d1ce874d3),CNST_LIMB(0x4c4b19ed85cfb8)), + P(863,CNST_LIMB(0xbd418eaf0473189f),CNST_LIMB(0x4bf093221d1218)), + P(877,CNST_LIMB(0x44e3af6f372b7e65),CNST_LIMB(0x4aba3c21dc633f)), + P(881,CNST_LIMB(0xc87fdace4f9e5d91),CNST_LIMB(0x4a6360c344de00)), + P(883,CNST_LIMB(0xec93479c446bd9bb),CNST_LIMB(0x4a383e9f74d68a)), + P(887,CNST_LIMB(0xdac4d592e777c647),CNST_LIMB(0x49e28fbabb9940)), + P(907,CNST_LIMB(0xa63ea8c8f61f0c23),CNST_LIMB(0x48417b57c78cd7)), + P(911,CNST_LIMB(0xe476062ea5cbbb6f),CNST_LIMB(0x47f043713f3a2b)), + P(919,CNST_LIMB(0xdf68761c69daac27),CNST_LIMB(0x474ff2a10281cf)), + P(929,CNST_LIMB(0xb813d737637aa061),CNST_LIMB(0x468b6f9a978f91)), + P(937,CNST_LIMB(0xa3a77aac1fb15099),CNST_LIMB(0x45f13f1caff2e2)), + P(941,CNST_LIMB(0x17f0c3e0712c5825),CNST_LIMB(0x45a5228cec23e9)), + P(947,CNST_LIMB(0xfd912a70ff30637b),CNST_LIMB(0x45342c556c66b9)), + P(953,CNST_LIMB(0xfbb3b5dc01131289),CNST_LIMB(0x44c4a23feeced7)), + P(967,CNST_LIMB(0x856d560a0f5acdf7),CNST_LIMB(0x43c5c20d3c9fe6)), + P(971,CNST_LIMB(0x96472f314d3f89e3),CNST_LIMB(0x437e494b239798)), + P(977,CNST_LIMB(0xa76f5c7ed2253531),CNST_LIMB(0x43142d118e47cb)), + P(983,CNST_LIMB(0x816eae7c7bf69fe7),CNST_LIMB(0x42ab5c73a13458)), + P(991,CNST_LIMB(0xb6a2bea4cfb1781f),CNST_LIMB(0x4221950db0f3db)), + P(997,CNST_LIMB(0xa3900c53318e81ed),CNST_LIMB(0x41bbb2f80a4553)), + P(1009,CNST_LIMB(0x60aa7f5d9f148d11),CNST_LIMB(0x40f391612c6680)), + P(1013,CNST_LIMB(0x6be8c0102c7a505d),CNST_LIMB(0x40b1e94173fefd)), + P(1019,CNST_LIMB(0x8ff3f0ed28728f33),CNST_LIMB(0x4050647d9d0445)), + P(1021,CNST_LIMB(0x680e0a87e5ec7155),CNST_LIMB(0x4030241b144f3b)), + P(1031,CNST_LIMB(0xbbf70fa49fe829b7),CNST_LIMB(0x3f90c2ab542cb1)), + P(1033,CNST_LIMB(0xd69d1e7b6a50ca39),CNST_LIMB(0x3f71412d59f597)), + P(1039,CNST_LIMB(0x1a1e0f46b6d26aef),CNST_LIMB(0x3f137701b98841)), + P(1049,CNST_LIMB(0x7429f9a7a8251829),CNST_LIMB(0x3e79886b60e278)), + P(1051,CNST_LIMB(0xd9c2219d1b863613),CNST_LIMB(0x3e5b1916a7181d)), + P(1061,CNST_LIMB(0x91406c1820d077ad),CNST_LIMB(0x3dc4a50968f524)), + P(1063,CNST_LIMB(0x521f4ec02e3d2b97),CNST_LIMB(0x3da6e4c9550321)), + P(1069,CNST_LIMB(0xbb8283b63dc8eba5),CNST_LIMB(0x3d4e4f06f1def3)), + P(1087,CNST_LIMB(0x431eda153229ebbf),CNST_LIMB(0x3c4a6bdd24f9a4)), + P(1091,CNST_LIMB(0xaf0bf78d7e01686b),CNST_LIMB(0x3c11d54b525c73)), + P(1093,CNST_LIMB(0xa9ced0742c086e8d),CNST_LIMB(0x3bf5b1c5721065)), + P(1097,CNST_LIMB(0xc26458ad9f632df9),CNST_LIMB(0x3bbdb9862f23b4)), + P(1103,CNST_LIMB(0xbbff1255dff892af),CNST_LIMB(0x3b6a8801db5440)), + P(1109,CNST_LIMB(0xcbd49a333f04d8fd),CNST_LIMB(0x3b183cf0fed886)), + P(1117,CNST_LIMB(0xec84ed6f9cfdeff5),CNST_LIMB(0x3aabe394bdc3f4)), + P(1123,CNST_LIMB(0x97980cc40bda9d4b),CNST_LIMB(0x3a5ba3e76156da)), + P(1129,CNST_LIMB(0x777f34d524f5cbd9),CNST_LIMB(0x3a0c3e953378db)), + P(1151,CNST_LIMB(0x2797051d94cbbb7f),CNST_LIMB(0x38f03561320b1e)), + P(1153,CNST_LIMB(0xea769051b4f43b81),CNST_LIMB(0x38d6ecaef5908a)), + P(1163,CNST_LIMB(0xce7910f3034d4323),CNST_LIMB(0x3859cf221e6069)), + P(1171,CNST_LIMB(0x92791d1374f5b99b),CNST_LIMB(0x37f7415dc9588a)), + P(1181,CNST_LIMB(0x89a5645cc68ea1b5),CNST_LIMB(0x377df0d3902626)), + P(1187,CNST_LIMB(0x5f8aacf796c0cf0b),CNST_LIMB(0x373622136907fa)), + P(1193,CNST_LIMB(0xf2e90a15e33edf99),CNST_LIMB(0x36ef0c3b39b92f)), + P(1201,CNST_LIMB(0x8e99e5feb897c451),CNST_LIMB(0x36915f47d55e6d)), + P(1213,CNST_LIMB(0xaca2eda38fb91695),CNST_LIMB(0x36072cf3f866fd)), + P(1217,CNST_LIMB(0x5d9b737be5ea8b41),CNST_LIMB(0x35d9b737be5ea8)), + P(1223,CNST_LIMB(0x4aefe1db93fd7cf7),CNST_LIMB(0x35961559cc81c7)), + P(1229,CNST_LIMB(0xa0994ef20b3f8805),CNST_LIMB(0x35531c897a4592)), + P(1231,CNST_LIMB(0x103890bda912822f),CNST_LIMB(0x353ceebd3e98a4)), + P(1237,CNST_LIMB(0xb441659d13a9147d),CNST_LIMB(0x34fad381585e5e)), + P(1249,CNST_LIMB(0x1e2134440c4c3f21),CNST_LIMB(0x347884d1103130)), + P(1259,CNST_LIMB(0x263a27727a6883c3),CNST_LIMB(0x340dd3ac39bf56)), + P(1277,CNST_LIMB(0x78e221472ab33855),CNST_LIMB(0x3351fdfecc140c)), + P(1279,CNST_LIMB(0x95eac88e82e6faff),CNST_LIMB(0x333d72b089b524)), + P(1283,CNST_LIMB(0xf66c258317be8dab),CNST_LIMB(0x33148d44d6b261)), + P(1289,CNST_LIMB(0x9ee202c7cb91939),CNST_LIMB(0x32d7aef8412458)), + P(1291,CNST_LIMB(0x8d2fca1042a09ea3),CNST_LIMB(0x32c3850e79c0f1)), + P(1297,CNST_LIMB(0x82779c856d8b8bf1),CNST_LIMB(0x328766d59048a2)), + P(1301,CNST_LIMB(0x3879361cba8a223d),CNST_LIMB(0x325fa18cb11833)), + P(1303,CNST_LIMB(0xf23f43639c3182a7),CNST_LIMB(0x324bd659327e22)), + P(1307,CNST_LIMB(0xa03868fc474bcd13),CNST_LIMB(0x32246e784360f4)), + P(1319,CNST_LIMB(0x651e78b8c5311a97),CNST_LIMB(0x31afa5f1a33a08)), + P(1321,CNST_LIMB(0x8ffce639c00c6719),CNST_LIMB(0x319c63ff398e70)), + P(1327,CNST_LIMB(0xf7b460754b0b61cf),CNST_LIMB(0x3162f7519a86a7)), + P(1361,CNST_LIMB(0x7b03f3359b8e63b1),CNST_LIMB(0x30271fc9d3fc3c)), + P(1367,CNST_LIMB(0xa55c5326041eb667),CNST_LIMB(0x2ff104ae89750b)), + P(1373,CNST_LIMB(0x647f88ab896a76f5),CNST_LIMB(0x2fbb62a236d133)), + P(1381,CNST_LIMB(0x8fd971434a55a46d),CNST_LIMB(0x2f74997d2070b4)), + P(1399,CNST_LIMB(0x9fbf969958046447),CNST_LIMB(0x2ed84aa8b6fce3)), + P(1409,CNST_LIMB(0x9986feba69be3a81),CNST_LIMB(0x2e832df7a46dbd)), + P(1423,CNST_LIMB(0xa668b3e6d053796f),CNST_LIMB(0x2e0e0846857cab)), + P(1427,CNST_LIMB(0x97694e6589f4e09b),CNST_LIMB(0x2decfbdfb55ee6)), + P(1429,CNST_LIMB(0x37890c00b7721dbd),CNST_LIMB(0x2ddc876f3ff488)), + P(1433,CNST_LIMB(0x5ac094a235f37ea9),CNST_LIMB(0x2dbbc1d4c482c4)), + P(1439,CNST_LIMB(0x31cff775f2d5d65f),CNST_LIMB(0x2d8af0e0de0556)), + P(1447,CNST_LIMB(0xddad8e6b36505217),CNST_LIMB(0x2d4a7b7d14b30a)), + P(1451,CNST_LIMB(0x5a27df897062cd03),CNST_LIMB(0x2d2a85073bcf4e)), + P(1453,CNST_LIMB(0xe2396fe0fdb5a625),CNST_LIMB(0x2d1a9ab13e8be4)), + P(1459,CNST_LIMB(0xb352a4957e82317b),CNST_LIMB(0x2ceb1eb4b9fd8b)), + P(1471,CNST_LIMB(0xd8ab3f2c60c2ea3f),CNST_LIMB(0x2c8d503a79794c)), + P(1481,CNST_LIMB(0x6893f702f0452479),CNST_LIMB(0x2c404d708784ed)), + P(1483,CNST_LIMB(0x9686fdc182acf7e3),CNST_LIMB(0x2c31066315ec52)), + P(1487,CNST_LIMB(0x6854037173dce12f),CNST_LIMB(0x2c1297d80f2664)), + P(1489,CNST_LIMB(0x7f0ded1685c27331),CNST_LIMB(0x2c037044c55f6b)), + P(1493,CNST_LIMB(0xeeda72e1fe490b7d),CNST_LIMB(0x2be5404cd13086)), + P(1499,CNST_LIMB(0x9e7bfc959a8e6e53),CNST_LIMB(0x2bb845adaf0cce)), + P(1511,CNST_LIMB(0x49b314d6d4753dd7),CNST_LIMB(0x2b5f62c639f16d)), + P(1523,CNST_LIMB(0x2e8f8c5ac4aa1b3b),CNST_LIMB(0x2b07e6734f2b88)), + P(1531,CNST_LIMB(0xb8ef723481163d33),CNST_LIMB(0x2ace569d8342b7)), + P(1543,CNST_LIMB(0x6a2ec96a594287b7),CNST_LIMB(0x2a791d5dbd4dcf)), + P(1549,CNST_LIMB(0xdba41c6d13aab8c5),CNST_LIMB(0x2a4eff8113017c)), + P(1553,CNST_LIMB(0xc2adbe648dc3aaf1),CNST_LIMB(0x2a3319e156df32)), + P(1559,CNST_LIMB(0x87a2bade565f91a7),CNST_LIMB(0x2a0986286526ea)), + P(1567,CNST_LIMB(0x4d6fe8798c01f5df),CNST_LIMB(0x29d29551d91e39)), + P(1571,CNST_LIMB(0x3791310c8c23d98b),CNST_LIMB(0x29b7529e109f0a)), + P(1579,CNST_LIMB(0xf80e446b01228883),CNST_LIMB(0x298137491ea465)), + P(1583,CNST_LIMB(0x9aed1436fbf500cf),CNST_LIMB(0x29665e1eb9f9da)), + P(1597,CNST_LIMB(0x7839b54cc8b24115),CNST_LIMB(0x2909752e019a5e)), + P(1601,CNST_LIMB(0xc128c646ad0309c1),CNST_LIMB(0x28ef35e2e5efb0)), + P(1607,CNST_LIMB(0x14de631624a3c377),CNST_LIMB(0x28c815aa4b8278)), + P(1609,CNST_LIMB(0x3f7b9fe68b0ecbf9),CNST_LIMB(0x28bb1b867199da)), + P(1613,CNST_LIMB(0x284ffd75ec00a285),CNST_LIMB(0x28a13ff5d7b002)), + P(1619,CNST_LIMB(0x37803cb80dea2ddb),CNST_LIMB(0x287ab3f173e755)), + P(1621,CNST_LIMB(0x86b63f7c9ac4c6fd),CNST_LIMB(0x286dead67713bd)), + P(1627,CNST_LIMB(0x8b6851d1bd99b9d3),CNST_LIMB(0x2847bfcda6503e)), + P(1637,CNST_LIMB(0xb62fda77ca343b6d),CNST_LIMB(0x2808c1ea6b4777)), + P(1657,CNST_LIMB(0x1f0dc009e34383c9),CNST_LIMB(0x278d0e0f23ff61)), + P(1663,CNST_LIMB(0x496dc21ddd35b97f),CNST_LIMB(0x2768863c093c7f)), + P(1667,CNST_LIMB(0xb0e96ce17090f82b),CNST_LIMB(0x27505115a73ca8)), + P(1669,CNST_LIMB(0xaadf05acdd7d024d),CNST_LIMB(0x274441a61dc1b9)), + P(1693,CNST_LIMB(0xcb138196746eafb5),CNST_LIMB(0x26b5c166113cf0)), + P(1697,CNST_LIMB(0x347f523736755d61),CNST_LIMB(0x269e65ad07b18e)), + P(1699,CNST_LIMB(0xd14a48a051f7dd0b),CNST_LIMB(0x2692c25f877560)), + P(1709,CNST_LIMB(0x474d71b1ce914d25),CNST_LIMB(0x2658fa7523cd11)), + P(1721,CNST_LIMB(0x386063f5e28c1f89),CNST_LIMB(0x26148710cf0f9e)), + P(1723,CNST_LIMB(0x1db7325e32d04e73),CNST_LIMB(0x2609363b22524f)), + P(1733,CNST_LIMB(0xfef748d3893b880d),CNST_LIMB(0x25d1065a1c1122)), + P(1741,CNST_LIMB(0x2f3351506e935605),CNST_LIMB(0x25a48a382b863f)), + P(1747,CNST_LIMB(0x7a3637fa2376415b),CNST_LIMB(0x25837190eccdbc)), + P(1753,CNST_LIMB(0x4ac525d2baa21969),CNST_LIMB(0x256292e95d510c)), + P(1759,CNST_LIMB(0x3a11c16b42cd351f),CNST_LIMB(0x2541eda98d068c)), + P(1777,CNST_LIMB(0x6c7abde0049c2a11),CNST_LIMB(0x24e15087fed8f5)), + P(1783,CNST_LIMB(0x54dad0303e069ac7),CNST_LIMB(0x24c18b20979e5d)), + P(1787,CNST_LIMB(0xebf1ac9fdfe91433),CNST_LIMB(0x24ac7b336de0c5)), + P(1789,CNST_LIMB(0xfafdda8237cec655),CNST_LIMB(0x24a1fc478c60bb)), + P(1801,CNST_LIMB(0xdce3ff6e71ffb739),CNST_LIMB(0x2463801231c009)), + P(1811,CNST_LIMB(0xbed5737d6286db1b),CNST_LIMB(0x24300fd506ed33)), + P(1823,CNST_LIMB(0xe479e431fe08b4df),CNST_LIMB(0x23f314a494da81)), + P(1831,CNST_LIMB(0x9dd9b0dd7742f897),CNST_LIMB(0x23cadedd2fad3a)), + P(1847,CNST_LIMB(0x8f09d7402c5a5e87),CNST_LIMB(0x237b7ed2664a03)), + P(1861,CNST_LIMB(0x9216d5c4d958738d),CNST_LIMB(0x23372967dbaf1d)), + P(1867,CNST_LIMB(0xb3139ba11d34ca63),CNST_LIMB(0x231a308a371f20)), + P(1871,CNST_LIMB(0x47d54f7ed644afaf),CNST_LIMB(0x2306fa63e1e600)), + P(1873,CNST_LIMB(0x92a81d85cf11a1b1),CNST_LIMB(0x22fd6731575684)), + P(1877,CNST_LIMB(0x754b26533253bdfd),CNST_LIMB(0x22ea507805749c)), + P(1879,CNST_LIMB(0xbbe0efc980bfd467),CNST_LIMB(0x22e0cce8b3d720)), + P(1889,CNST_LIMB(0xc0d8d594f024dca1),CNST_LIMB(0x22b1887857d161)), + P(1901,CNST_LIMB(0x8238d43bcaac1a65),CNST_LIMB(0x227977fcc49cc0)), + P(1907,CNST_LIMB(0x27779c1fae6175bb),CNST_LIMB(0x225db37b5e5f4f)), + P(1913,CNST_LIMB(0xa746ca9af708b2c9),CNST_LIMB(0x22421b91322ed6)), + P(1931,CNST_LIMB(0x93f3cd9f389be823),CNST_LIMB(0x21f05b35f52102)), + P(1933,CNST_LIMB(0x5cb4a4c04c489345),CNST_LIMB(0x21e75de5c70d60)), + P(1949,CNST_LIMB(0xbf6047743e85b6b5),CNST_LIMB(0x21a01d6c19be96)), + P(1951,CNST_LIMB(0x61c147831563545f),CNST_LIMB(0x21974a6615c81a)), + P(1973,CNST_LIMB(0xedb47c0ae62dee9d),CNST_LIMB(0x213767697cf36a)), + P(1979,CNST_LIMB(0xa3824386673a573),CNST_LIMB(0x211d9f7fad35f1)), + P(1987,CNST_LIMB(0xa4a77d19e575a0eb),CNST_LIMB(0x20fb7d9dd36c18)), + P(1993,CNST_LIMB(0xa2bee045e066c279),CNST_LIMB(0x20e2123d661e0e)), + P(1997,CNST_LIMB(0xc23618de8ab43d05),CNST_LIMB(0x20d135b66ae990)), + P(1999,CNST_LIMB(0x266b515216cb9f2f),CNST_LIMB(0x20c8cded4d7a8e)), + P(2003,CNST_LIMB(0xe279edd9e9c2e85b),CNST_LIMB(0x20b80b3f43ddbf)), + P(2011,CNST_LIMB(0xd0c591c221dc9c53),CNST_LIMB(0x2096b9180f46a6)), + P(2017,CNST_LIMB(0x6da8ee9c9ee7c21),CNST_LIMB(0x207de7e28de5da)), + P(2027,CNST_LIMB(0x9dfebcaf4c27e8c3),CNST_LIMB(0x2054dec8cf1fb3)), + P(2029,CNST_LIMB(0x49aeff9f19dd6de5),CNST_LIMB(0x204cb630b3aab5)), + P(2039,CNST_LIMB(0x86976a57a296e9c7),CNST_LIMB(0x202428adc37beb)), + P(2053,CNST_LIMB(0xa3b9abf4872b84cd),CNST_LIMB(0x1fec0c7834def4)), + P(2063,CNST_LIMB(0x34fca6483895e6ef),CNST_LIMB(0x1fc46fae98a1d0)), + P(2069,CNST_LIMB(0x34b5a333988f873d),CNST_LIMB(0x1facda430ff619)), + P(2081,CNST_LIMB(0xd9dd4f19b5f17be1),CNST_LIMB(0x1f7e17dd8e15e5)), + P(2083,CNST_LIMB(0xb935b507fd0ce78b),CNST_LIMB(0x1f765a3556a4ee)), + P(2087,CNST_LIMB(0xb450f5540660e797),CNST_LIMB(0x1f66ea49d802f1)), + P(2089,CNST_LIMB(0x63ff82831ffc1419),CNST_LIMB(0x1f5f3800faf9c0)), + P(2099,CNST_LIMB(0x8992f718c22a32fb),CNST_LIMB(0x1f38f4e6c0f1f9)), + P(2111,CNST_LIMB(0x5f3253ad0d37e7bf),CNST_LIMB(0x1f0b8546752578)), + P(2113,CNST_LIMB(0x7c0ffe0fc007c1),CNST_LIMB(0x1f03ff83f001f0)), + P(2129,CNST_LIMB(0x4d8ebadc0c0640b1),CNST_LIMB(0x1ec853b0a3883c)), + P(2131,CNST_LIMB(0xe2729af831037bdb),CNST_LIMB(0x1ec0ee573723eb)), + P(2137,CNST_LIMB(0xb8f64bf30feebfe9),CNST_LIMB(0x1eaad38e6f6894)), + P(2141,CNST_LIMB(0xda93124b544c0bf5),CNST_LIMB(0x1e9c28a765fe53)), + P(2143,CNST_LIMB(0x9cf7ff0b593c539f),CNST_LIMB(0x1e94d8758c2003)), + P(2153,CNST_LIMB(0xd6bd8861fa0e07d9),CNST_LIMB(0x1e707ba8f65e68)), + P(2161,CNST_LIMB(0x5cfe75c0bd8ab891),CNST_LIMB(0x1e53a2a68f574e)), + P(2179,CNST_LIMB(0x43e808757c2e862b),CNST_LIMB(0x1e1380a56b438d)), + P(2203,CNST_LIMB(0x90caa96d595c9d93),CNST_LIMB(0x1dbf9f513a3802)), + P(2207,CNST_LIMB(0x8fd550625d07135f),CNST_LIMB(0x1db1d1d58bc600)), + P(2213,CNST_LIMB(0x76b010a86e209f2d),CNST_LIMB(0x1d9d358f53de38)), + P(2221,CNST_LIMB(0xecc0426447769b25),CNST_LIMB(0x1d81e6df6165c7)), + P(2237,CNST_LIMB(0xe381339caabe3295),CNST_LIMB(0x1d4bdf7fd40e30)), + P(2239,CNST_LIMB(0xd1b190a2d0c7673f),CNST_LIMB(0x1d452c7a1c958d)), + P(2243,CNST_LIMB(0xc3bce3cf26b0e7eb),CNST_LIMB(0x1d37cf9b902659)), + P(2251,CNST_LIMB(0x5f87e76f56c61ce3),CNST_LIMB(0x1d1d3a5791e97b)), + P(2267,CNST_LIMB(0xc06c6857a124b353),CNST_LIMB(0x1ce89fe6b47416)), + P(2269,CNST_LIMB(0x38c040fcba630f75),CNST_LIMB(0x1ce219f3235071)), + P(2273,CNST_LIMB(0xd078bc4fbd533b21),CNST_LIMB(0x1cd516dcf92139)), + P(2281,CNST_LIMB(0xde8e15c5dd354f59),CNST_LIMB(0x1cbb33bd1c2b8b)), + P(2287,CNST_LIMB(0xca61d53d7414260f),CNST_LIMB(0x1ca7e7d2546688)), + P(2293,CNST_LIMB(0xb56bf5ba8eae635d),CNST_LIMB(0x1c94b5c1b3dbd3)), + P(2297,CNST_LIMB(0x44a72cb0fb6e3949),CNST_LIMB(0x1c87f7f9c241c1)), + P(2309,CNST_LIMB(0x879839a714f45bcd),CNST_LIMB(0x1c6202706c35a9)), + P(2311,CNST_LIMB(0x2a8994fde5314b7),CNST_LIMB(0x1c5bb8a9437632)), + P(2333,CNST_LIMB(0xb971920cf2b90135),CNST_LIMB(0x1c174343b4111e)), + P(2339,CNST_LIMB(0x8a8fd0b7df9a6e8b),CNST_LIMB(0x1c04d0d3e46b42)), + P(2341,CNST_LIMB(0xb31f9a84c1c6eaad),CNST_LIMB(0x1bfeb00fbf4308)), + P(2347,CNST_LIMB(0x92293b02823c6d83),CNST_LIMB(0x1bec5dce0b202d)), + P(2351,CNST_LIMB(0xeee77ff20fe5ddcf),CNST_LIMB(0x1be03444620037)), + P(2357,CNST_LIMB(0xe1ea0f6c496c11d),CNST_LIMB(0x1bce09c66f6fc3)), + P(2371,CNST_LIMB(0xfdf2d3d6f88ccb6b),CNST_LIMB(0x1ba40228d02b30)), + P(2377,CNST_LIMB(0xfa9d74a3457738f9),CNST_LIMB(0x1b9225b1cf8919)), + P(2381,CNST_LIMB(0xefc3ca3db71a5785),CNST_LIMB(0x1b864a2ff3f53f)), + P(2383,CNST_LIMB(0x8e2071718d0d6daf),CNST_LIMB(0x1b80604150e49b)), + P(2389,CNST_LIMB(0xbc0fdbfeb6cfabfd),CNST_LIMB(0x1b6eb1aaeaacf3)), + P(2393,CNST_LIMB(0x1eeab613e5e5aee9),CNST_LIMB(0x1b62f48da3c8cc)), + P(2399,CNST_LIMB(0x2d2388e90e9e929f),CNST_LIMB(0x1b516babe96092)), + P(2411,CNST_LIMB(0x81dbafba588ddb43),CNST_LIMB(0x1b2e9cef1e0c87)), + P(2417,CNST_LIMB(0x52eebc51c4799791),CNST_LIMB(0x1b1d56bedc849b)), + P(2423,CNST_LIMB(0x1c6bc4693b45a047),CNST_LIMB(0x1b0c267546aec0)), + P(2437,CNST_LIMB(0x6eee0974498874d),CNST_LIMB(0x1ae45f62024fa0)), + P(2441,CNST_LIMB(0xd85b7377a9953cb9),CNST_LIMB(0x1ad917631b5f54)), + P(2447,CNST_LIMB(0x4b6df412d4caf56f),CNST_LIMB(0x1ac83d18cb608f)), + P(2459,CNST_LIMB(0x6b8afbbb4a053493),CNST_LIMB(0x1aa6c7ad8c063f)), + P(2467,CNST_LIMB(0xcc5299c96ac7720b),CNST_LIMB(0x1a90a7b1228e2a)), + P(2473,CNST_LIMB(0xadce84b5c710aa99),CNST_LIMB(0x1a8027c03ba059)), + P(2477,CNST_LIMB(0x9d673f5aa3804225),CNST_LIMB(0x1a7533289deb89)), + P(2503,CNST_LIMB(0xe6541268efbce7f7),CNST_LIMB(0x1a2ed7ce16b49f)), + P(2521,CNST_LIMB(0xfcf41e76cf5be669),CNST_LIMB(0x19fefc0a279a73)), + P(2531,CNST_LIMB(0x5c3eb5dc31c383cb),CNST_LIMB(0x19e4b0cd873b5f)), + P(2539,CNST_LIMB(0x301832d11d8ad6c3),CNST_LIMB(0x19cfcdfd60e514)), + P(2543,CNST_LIMB(0x2e9c0942f1ce450f),CNST_LIMB(0x19c56932d66c85)), + P(2549,CNST_LIMB(0x97f3f2be37a39a5d),CNST_LIMB(0x19b5e1ab6fc7c2)), + P(2551,CNST_LIMB(0xe8b7d8a9654187c7),CNST_LIMB(0x19b0b8a62f2a73)), + P(2557,CNST_LIMB(0xb5d024d7da5b1b55),CNST_LIMB(0x19a149fc98942c)), + P(2579,CNST_LIMB(0xb8ba9d6e7ae3501b),CNST_LIMB(0x1969517ec25b85)), + P(2591,CNST_LIMB(0xf50865f71b90f1df),CNST_LIMB(0x194b3083360ba8)), + P(2593,CNST_LIMB(0x739c1682847df9e1),CNST_LIMB(0x194631f4bebdc1)), + P(2609,CNST_LIMB(0xc470a4d842b90ed1),CNST_LIMB(0x191e84127268fd)), + P(2617,CNST_LIMB(0x1fb1be11698cc409),CNST_LIMB(0x190adbb543984f)), + P(2621,CNST_LIMB(0xd8d5512a7cd35d15),CNST_LIMB(0x1901130bd18200)), + P(2633,CNST_LIMB(0xa5496821723e07f9),CNST_LIMB(0x18e3e6b889ac94)), + P(2647,CNST_LIMB(0xbcc8c6d7abaa8167),CNST_LIMB(0x18c233420e1ec1)), + P(2657,CNST_LIMB(0x52c396c95eb619a1),CNST_LIMB(0x18aa5872d92bd6)), + P(2659,CNST_LIMB(0x6eb7e380878ec74b),CNST_LIMB(0x18a5989945ccf9)), + P(2663,CNST_LIMB(0x3d5513b504537157),CNST_LIMB(0x189c1e60b57f60)), + P(2671,CNST_LIMB(0x314391f8862e948f),CNST_LIMB(0x18893fbc8690b9)), + P(2677,CNST_LIMB(0xdc0b17cfcd81f5dd),CNST_LIMB(0x187b2bb3e1041c)), + P(2683,CNST_LIMB(0x2f6bea3ec89044b3),CNST_LIMB(0x186d27c9cdcfb8)), + P(2687,CNST_LIMB(0xce13a05869f1b57f),CNST_LIMB(0x1863d8bf4f2c1c)), + P(2689,CNST_LIMB(0x7593474e8ace3581),CNST_LIMB(0x185f33e2ad7593)), + P(2693,CNST_LIMB(0x7fc329295a05e4d),CNST_LIMB(0x1855ef75973e13)), + P(2699,CNST_LIMB(0xb05377cba4908d23),CNST_LIMB(0x1848160153f134)), + P(2707,CNST_LIMB(0xe7b2131a628aa39b),CNST_LIMB(0x1835b72e6f0656)), + P(2711,CNST_LIMB(0x9031dbed7de01527),CNST_LIMB(0x182c922d83eb39)), + P(2713,CNST_LIMB(0x76844b1c670aa9a9),CNST_LIMB(0x18280243c0365a)), + P(2719,CNST_LIMB(0x6a03f4533b08915f),CNST_LIMB(0x181a5cd5898e73)), + P(2729,CNST_LIMB(0x1dbca579db0a3999),CNST_LIMB(0x1803c0961773aa)), + P(2731,CNST_LIMB(0x2ffe800bffa003),CNST_LIMB(0x17ff4005ffd001)), + P(2741,CNST_LIMB(0x478ab1a3e936139d),CNST_LIMB(0x17e8d670433edb)), + P(2749,CNST_LIMB(0x66e722bc4c5cc095),CNST_LIMB(0x17d7066cf4bb5d)), + P(2753,CNST_LIMB(0x7a8f63c717278541),CNST_LIMB(0x17ce285b806b1f)), + P(2767,CNST_LIMB(0xdf6eee24d292bc2f),CNST_LIMB(0x17af52cdf27e02)), + P(2777,CNST_LIMB(0x9fc20d17237dd569),CNST_LIMB(0x17997d47d01039)), + P(2789,CNST_LIMB(0xcdf9932356bda2ed),CNST_LIMB(0x177f7ec2c6d0ba)), + P(2791,CNST_LIMB(0x97b5e332e80f68d7),CNST_LIMB(0x177b2f3cd00756)), + P(2797,CNST_LIMB(0x46eee26fd875e2e5),CNST_LIMB(0x176e4a22f692a0)), + P(2801,CNST_LIMB(0x3548a8e65157a611),CNST_LIMB(0x1765b94271e11b)), + P(2803,CNST_LIMB(0xc288d03be9b71e3b),CNST_LIMB(0x1761732b044ae4)), + P(2819,CNST_LIMB(0x8151186db38937ab),CNST_LIMB(0x173f7a5300a2bc)), + P(2833,CNST_LIMB(0x7800b910895a45f1),CNST_LIMB(0x1722112b48be1f)), + P(2837,CNST_LIMB(0xaee0b024182eec3d),CNST_LIMB(0x1719b7a16eb843)), + P(2843,CNST_LIMB(0x96323eda173b5713),CNST_LIMB(0x170d3c99cc5052)), + P(2851,CNST_LIMB(0xed0dbd03ae77c8b),CNST_LIMB(0x16fcad7aed3bb6)), + P(2857,CNST_LIMB(0xf73800b7828dc119),CNST_LIMB(0x16f051b8231ffd)), + P(2861,CNST_LIMB(0x1b61715ec22b7ca5),CNST_LIMB(0x16e81beae20643)), + P(2879,CNST_LIMB(0xa8533a991ead64bf),CNST_LIMB(0x16c3721584c1d8)), + P(2887,CNST_LIMB(0x7f6c7290e46c2e77),CNST_LIMB(0x16b34c2ba09663)), + P(2897,CNST_LIMB(0x6325e8d907b01db1),CNST_LIMB(0x169f3ce292ddcd)), + P(2903,CNST_LIMB(0x28909f70152a1067),CNST_LIMB(0x169344b2220a0d)), + P(2909,CNST_LIMB(0xea7077af0997a0f5),CNST_LIMB(0x1687592593c1b1)), + P(2917,CNST_LIMB(0x7e605cad10c32e6d),CNST_LIMB(0x167787f1418ec9)), + P(2927,CNST_LIMB(0x471b33570635b38f),CNST_LIMB(0x1663e190395ff2)), + P(2939,CNST_LIMB(0xab559fa997a61bb3),CNST_LIMB(0x164c7a4b6eb5b3)), + P(2953,CNST_LIMB(0xad4bdae562bddab9),CNST_LIMB(0x16316a061182fd)), + P(2957,CNST_LIMB(0x55e1b2f2ed62f45),CNST_LIMB(0x1629ba914584e4)), + P(2963,CNST_LIMB(0x3cd328b1a2dca9b),CNST_LIMB(0x161e3d57de21b2)), + P(2969,CNST_LIMB(0xd28f4e08733218a9),CNST_LIMB(0x1612cc01b977f0)), + P(2971,CNST_LIMB(0xb6800b077f186293),CNST_LIMB(0x160efe30c525ff)), + P(2999,CNST_LIMB(0x6fbd138c3fd9c207),CNST_LIMB(0x15da45249ec5de)), + P(3001,CNST_LIMB(0xb117ccd12ae88a89),CNST_LIMB(0x15d68ab4acff92)), + P(3011,CNST_LIMB(0x2f1a1a044046bceb),CNST_LIMB(0x15c3f989d1eb15)), + P(3019,CNST_LIMB(0x548aba0b060541e3),CNST_LIMB(0x15b535ad11b8f0)), + P(3023,CNST_LIMB(0xcf4e808cea111b2f),CNST_LIMB(0x15addb3f424ec1)), + P(3037,CNST_LIMB(0xdbec1b4fa855a475),CNST_LIMB(0x159445cb91be6b)), + P(3041,CNST_LIMB(0xe3f794eb600d7821),CNST_LIMB(0x158d0199771e63)), + P(3049,CNST_LIMB(0x34fae0d9a11f7c59),CNST_LIMB(0x157e87d9b69e04)), + P(3061,CNST_LIMB(0xf006b0ccbbac085d),CNST_LIMB(0x1568f58bc01ac3)), + P(3067,CNST_LIMB(0x3f45076dc3114733),CNST_LIMB(0x155e3c993fda9b)), + P(3079,CNST_LIMB(0xeef49bfa58a1a1b7),CNST_LIMB(0x1548eacc5e1e6e)), + P(3083,CNST_LIMB(0x12c4218bea691fa3),CNST_LIMB(0x1541d8f91ba6a7)), + P(3089,CNST_LIMB(0xbc7504e3bd5e64f1),CNST_LIMB(0x153747060cc340)), + P(3109,CNST_LIMB(0x4ee21c292bb92fad),CNST_LIMB(0x1514569f93f7c4)), + P(3119,CNST_LIMB(0x34338b7327a4bacf),CNST_LIMB(0x150309705d3d79)), + P(3121,CNST_LIMB(0x3fe5c0833d6fccd1),CNST_LIMB(0x14ff97020cf5bf)), + P(3137,CNST_LIMB(0xb1e70743535203c1),CNST_LIMB(0x14e42c114cf47e)), + P(3163,CNST_LIMB(0xefbb5dcdfb4e43d3),CNST_LIMB(0x14b835bdcb6447)), + P(3167,CNST_LIMB(0xca68467ca5394f9f),CNST_LIMB(0x14b182b53a9ab7)), + P(3169,CNST_LIMB(0x8c51c081408b97a1),CNST_LIMB(0x14ae2ad094a3d3)), + P(3181,CNST_LIMB(0x3275a899dfa5dd65),CNST_LIMB(0x149a320ea59f96)), + P(3187,CNST_LIMB(0x9e674cb62e1b78bb),CNST_LIMB(0x1490441de1a2fb)), + P(3191,CNST_LIMB(0xa37ff5bb2a998d47),CNST_LIMB(0x1489aacce57200)), + P(3203,CNST_LIMB(0x792a999db131a22b),CNST_LIMB(0x1475f82ad6ff99)), + P(3209,CNST_LIMB(0x1b48841bc30d29b9),CNST_LIMB(0x146c2cfe53204f)), + P(3217,CNST_LIMB(0xf06721d2011d3471),CNST_LIMB(0x145f2ca490d4a1)), + P(3221,CNST_LIMB(0x93fd2386dff85ebd),CNST_LIMB(0x1458b2aae0ec87)), + P(3229,CNST_LIMB(0x4ce72f54c07ed9b5),CNST_LIMB(0x144bcb0a3a3150)), + P(3251,CNST_LIMB(0xd6d0fd3e71dd827b),CNST_LIMB(0x1428a1e65441d4)), + P(3253,CNST_LIMB(0x856405fb1eed819d),CNST_LIMB(0x142575a6c210d7)), + P(3257,CNST_LIMB(0x8ea8aceb7c443989),CNST_LIMB(0x141f2025ba5c46)), + P(3259,CNST_LIMB(0x34a13026f62e5873),CNST_LIMB(0x141bf6e35420fd)), + P(3271,CNST_LIMB(0x1eea0208ec0af4f7),CNST_LIMB(0x1409141d1d313a)), + P(3299,CNST_LIMB(0x63679853cea598cb),CNST_LIMB(0x13dd8bc19c3513)), + P(3301,CNST_LIMB(0xc30b3ebd61f2d0ed),CNST_LIMB(0x13da76f714dc8f)), + P(3307,CNST_LIMB(0x7eb9037bc7f43bc3),CNST_LIMB(0x13d13e50f8f49e)), + P(3313,CNST_LIMB(0xa583e6f6ce016411),CNST_LIMB(0x13c80e37ca3819)), + P(3319,CNST_LIMB(0xf1938d895f1a74c7),CNST_LIMB(0x13bee69fa99ccf)), + P(3323,CNST_LIMB(0x80cf1491c1e81e33),CNST_LIMB(0x13b8d0ede55835)), + P(3329,CNST_LIMB(0x3c0f12886ba8f301),CNST_LIMB(0x13afb7680bb054)), + P(3331,CNST_LIMB(0xe4b786e0dfcc5ab),CNST_LIMB(0x13acb0c3841c96)), + P(3343,CNST_LIMB(0x672684c93f2d41ef),CNST_LIMB(0x139a9c5f434fde)), + P(3347,CNST_LIMB(0xe00757badb35c51b),CNST_LIMB(0x13949cf33a0d9d)), + P(3359,CNST_LIMB(0xd6d84afe66472edf),CNST_LIMB(0x1382b4a00c31b0)), + P(3361,CNST_LIMB(0xfbbc0eedcbbfb6e1),CNST_LIMB(0x137fbbc0eedcbb)), + P(3371,CNST_LIMB(0x250f43aa08a84983),CNST_LIMB(0x1370ecf047b069)), + P(3373,CNST_LIMB(0x4400e927b1acaa5),CNST_LIMB(0x136df9790e3155)), + P(3389,CNST_LIMB(0x56572be34b9d3215),CNST_LIMB(0x13567dd8defd5b)), + P(3391,CNST_LIMB(0x87964ef7781c62bf),CNST_LIMB(0x13539261fdbc34)), + P(3407,CNST_LIMB(0x29ed84051c06e9af),CNST_LIMB(0x133c564292d28a)), + P(3413,CNST_LIMB(0xb00acd11ed3f87fd),CNST_LIMB(0x1333ae178d6388)), + P(3433,CNST_LIMB(0x6307881744152d9),CNST_LIMB(0x13170ad00d1fd7)), + P(3449,CNST_LIMB(0x7a786459f5c1ccc9),CNST_LIMB(0x13005f01db0947)), + P(3457,CNST_LIMB(0x1308125d74563281),CNST_LIMB(0x12f51d40342210)), + P(3461,CNST_LIMB(0x395310a480b3e34d),CNST_LIMB(0x12ef815e4ed950)), + P(3463,CNST_LIMB(0x35985baa8b202837),CNST_LIMB(0x12ecb4abccd827)), + P(3467,CNST_LIMB(0x96304a6e052b3223),CNST_LIMB(0x12e71dc1d3d820)), + P(3469,CNST_LIMB(0xbd8265fc9af8fd45),CNST_LIMB(0x12e45389a16495)), + P(3491,CNST_LIMB(0x1b6d0b383ec58e0b),CNST_LIMB(0x12c5d9226476cc)), + P(3499,CNST_LIMB(0xc21a7c3b68b28503),CNST_LIMB(0x12badc391156fd)), + P(3511,CNST_LIMB(0x236fa180fbfd6007),CNST_LIMB(0x12aa78e412f522)), + P(3517,CNST_LIMB(0xc42accd440ed9595),CNST_LIMB(0x12a251f5f47fd1)), + P(3527,CNST_LIMB(0x7acf7128236ba3f7),CNST_LIMB(0x1294cb85c53534)), + P(3529,CNST_LIMB(0xf909367a987b9c79),CNST_LIMB(0x12921963beb65e)), + P(3533,CNST_LIMB(0xb64efb252bfba705),CNST_LIMB(0x128cb777c69ca8)), + P(3539,CNST_LIMB(0x980d4f5a7e4cd25b),CNST_LIMB(0x1284aa6cf07294)), + P(3541,CNST_LIMB(0xe1ecc4ef27b0c37d),CNST_LIMB(0x1281fcf6ac7f87)), + P(3547,CNST_LIMB(0x9111aebb81d72653),CNST_LIMB(0x1279f937367db9)), + P(3557,CNST_LIMB(0x8951f985cb2c67ed),CNST_LIMB(0x126cad0488be94)), + P(3559,CNST_LIMB(0xc439d4fc54e0b5d7),CNST_LIMB(0x126a06794646a2)), + P(3571,CNST_LIMB(0xe857bf31896d533b),CNST_LIMB(0x125a2f2bcd3e95)), + P(3581,CNST_LIMB(0xb614bb4cb5023755),CNST_LIMB(0x124d108389e6b1)), + P(3583,CNST_LIMB(0x938a89e5473bf1ff),CNST_LIMB(0x124a73083771ac)), + P(3593,CNST_LIMB(0xeac481aca34de039),CNST_LIMB(0x123d6acda0620a)), + P(3607,CNST_LIMB(0x14b961badf4809a7),CNST_LIMB(0x122b4b2917eafd)), + P(3613,CNST_LIMB(0x76784fecba352435),CNST_LIMB(0x122391bfce1e2f)), + P(3617,CNST_LIMB(0xefa689bb58aef5e1),CNST_LIMB(0x121e6f1ea579f2)), + P(3623,CNST_LIMB(0xb2b2c4db9c3a8197),CNST_LIMB(0x1216c09e471568)), + P(3631,CNST_LIMB(0x2503bc992279f8cf),CNST_LIMB(0x120c8cb9d93909)), + P(3637,CNST_LIMB(0xd2ab9aec5ca1541d),CNST_LIMB(0x1204ed58e64ef9)), + P(3643,CNST_LIMB(0x3e78ba1460f99af3),CNST_LIMB(0x11fd546578f00c)), + P(3659,CNST_LIMB(0xa01426572cfcb63),CNST_LIMB(0x11e9310b8b4c9c)), + P(3671,CNST_LIMB(0xbea857968f3cbd67),CNST_LIMB(0x11da3405db9911)), + P(3673,CNST_LIMB(0x78db213eefe659e9),CNST_LIMB(0x11d7b6f4eb055d)), + P(3677,CNST_LIMB(0x963e8541a74d35f5),CNST_LIMB(0x11d2bee748c145)), + P(3691,CNST_LIMB(0x9e22d152776f2e43),CNST_LIMB(0x11c1706ddce7a7)), + P(3697,CNST_LIMB(0x5d10d39d1e1f291),CNST_LIMB(0x11ba0fed2a4f14)), + P(3701,CNST_LIMB(0x374468dccaced1dd),CNST_LIMB(0x11b528538ed64a)), + P(3709,CNST_LIMB(0x8d145c7d110c5ad5),CNST_LIMB(0x11ab61404242ac)), + P(3719,CNST_LIMB(0x3251a39f5acb5737),CNST_LIMB(0x119f378ce81d2f)), + P(3727,CNST_LIMB(0xa66e50171443506f),CNST_LIMB(0x1195889ece79da)), + P(3733,CNST_LIMB(0x124f69ad91dd4cbd),CNST_LIMB(0x118e4c65387077)), + P(3739,CNST_LIMB(0xec24f8f2a61a2793),CNST_LIMB(0x1187161d70e725)), + P(3761,CNST_LIMB(0xb472148e656b7a51),CNST_LIMB(0x116cd6d1c85239)), + P(3767,CNST_LIMB(0xadf9570e1142f07),CNST_LIMB(0x1165bbe7ce86b1)), + P(3769,CNST_LIMB(0x89bf33b065119789),CNST_LIMB(0x11635ee344ce36)), + P(3779,CNST_LIMB(0x8f0149803cb291eb),CNST_LIMB(0x11579767b6d679)), + P(3793,CNST_LIMB(0x8334b63afd190a31),CNST_LIMB(0x114734711e2b54)), + P(3797,CNST_LIMB(0x920908d50d6aba7d),CNST_LIMB(0x11428b90147f05)), + P(3803,CNST_LIMB(0x57d8b018c5a33d53),CNST_LIMB(0x113b92f3021636)), + P(3821,CNST_LIMB(0xea1773092dc27ee5),CNST_LIMB(0x1126cabc886884)), + P(3823,CNST_LIMB(0xcae5f38b7bf2e00f),CNST_LIMB(0x11247eb1b85976)), + P(3833,CNST_LIMB(0x2bd02df34f695349),CNST_LIMB(0x11190bb01efd65)), + P(3847,CNST_LIMB(0xddfecd5be62e2eb7),CNST_LIMB(0x11091de0fd679c)), + P(3851,CNST_LIMB(0xdbf849ebec96c4a3),CNST_LIMB(0x1104963c7e4e0b)), + P(3853,CNST_LIMB(0xda31d4d0187357c5),CNST_LIMB(0x110253516420b0)), + P(3863,CNST_LIMB(0xe34e21cc2d5418a7),CNST_LIMB(0x10f70db7c41797)), + P(3877,CNST_LIMB(0x68ca5137a9e574ad),CNST_LIMB(0x10e75ee2bf9ecd)), + P(3881,CNST_LIMB(0x3eaa0d0f804bfd19),CNST_LIMB(0x10e2e91c6e0676)), + P(3889,CNST_LIMB(0x554fb753cc20e9d1),CNST_LIMB(0x10da049b9d428d)), + P(3907,CNST_LIMB(0x797afcca1300756b),CNST_LIMB(0x10c6248fe3b1a2)), + P(3911,CNST_LIMB(0x8b8d950b52eeea77),CNST_LIMB(0x10c1c03ed690eb)), + P(3917,CNST_LIMB(0xfb6cd166acabc185),CNST_LIMB(0x10bb2e1379e3a2)), + P(3919,CNST_LIMB(0x4eb6c5ed9437a7af),CNST_LIMB(0x10b8fe7f61228e)), + P(3923,CNST_LIMB(0xd1eddbd91b790cdb),CNST_LIMB(0x10b4a10d60a4f7)), + P(3929,CNST_LIMB(0x93d714ea4d8948e9),CNST_LIMB(0x10ae192681ec0f)), + P(3931,CNST_LIMB(0x3ca13ed8145188d3),CNST_LIMB(0x10abecfbe5b0ae)), + P(3943,CNST_LIMB(0x829086016da89c57),CNST_LIMB(0x109eefd568b96d)), + P(3947,CNST_LIMB(0xd7da1f432124a543),CNST_LIMB(0x109a9ff178b40c)), + P(3967,CNST_LIMB(0x7ead5581632fb07f),CNST_LIMB(0x108531e22f9ff9)), + P(3989,CNST_LIMB(0x35443837f63ec3bd),CNST_LIMB(0x106ddec1af4417)), + P(4001,CNST_LIMB(0x89e2b200e5519461),CNST_LIMB(0x10614174a4911d)), + P(4003,CNST_LIMB(0xe9ae44f0b7289c0b),CNST_LIMB(0x105f291f0448e7)), + P(4007,CNST_LIMB(0x94387a277b9fa817),CNST_LIMB(0x105afa0ef32891)), + P(4013,CNST_LIMB(0xc84f1a58abfc2c25),CNST_LIMB(0x1054b777bd2530)), + P(4019,CNST_LIMB(0x71101d8e3c83377b),CNST_LIMB(0x104e79a97fb69e)), + P(4021,CNST_LIMB(0xc024abe5c50ba69d),CNST_LIMB(0x104c661eafd845)), + P(4027,CNST_LIMB(0x15de4eb365a65d73),CNST_LIMB(0x10462ea939c933)), + P(4049,CNST_LIMB(0x9ed28a76bcca931),CNST_LIMB(0x102f8baa442836)), + P(4051,CNST_LIMB(0x816bffbf4a00205b),CNST_LIMB(0x102d7ff7e94004)), + P(4057,CNST_LIMB(0x1f5c71543d558069),CNST_LIMB(0x10275ff9f13c02)), + P(4073,CNST_LIMB(0xf25c64d0ec53b859),CNST_LIMB(0x1017213fcbb4d3)), + P(4079,CNST_LIMB(0x96c02c2ef1e0ff0f),CNST_LIMB(0x101112234579d1)), + P(4091,CNST_LIMB(0x19a804816870a333),CNST_LIMB(0x100501907d271c)), + P(4093,CNST_LIMB(0x6de49add0971c555),CNST_LIMB(0x100300901b0510)), + P(4099,CNST_LIMB(0x528087e684c71aab),CNST_LIMB(0xffd008fe5050f)), + P(4111,CNST_LIMB(0xa94152c269bcdeef),CNST_LIMB(0xff10e02dd5084)), + P(4127,CNST_LIMB(0x379450a3c2b6bdf),CNST_LIMB(0xfe13b9c80c67f)), + P(4129,CNST_LIMB(0xd2cd38bafe5373e1),CNST_LIMB(0xfdf4384be37ad)), + P(4133,CNST_LIMB(0xc29df2bea71d8bad),CNST_LIMB(0xfdb54cbe8766e)), + P(4139,CNST_LIMB(0xc15862775f302e83),CNST_LIMB(0xfd5725ca6ff32)), + P(4153,CNST_LIMB(0x1016af2fe55ede09),CNST_LIMB(0xfc7c84684c6fb)), + P(4157,CNST_LIMB(0x3d26dbd9d1910715),CNST_LIMB(0xfc3e5265dbaa8)), + P(4159,CNST_LIMB(0x621dab2dfaf3dfbf),CNST_LIMB(0xfc1f44e0cae12)), + P(4177,CNST_LIMB(0xb6f1d7ac287338b1),CNST_LIMB(0xfb0921c50a7af)), + P(4201,CNST_LIMB(0x8d9e9f0c3f9e7fd9),CNST_LIMB(0xf999fd70cbc6b)), + P(4211,CNST_LIMB(0x60a93f8762e914bb),CNST_LIMB(0xf9023fd5339d0)), + P(4217,CNST_LIMB(0xb14371f247c159c9),CNST_LIMB(0xf8a78ce671475)), + P(4219,CNST_LIMB(0x6dd3b484471d4eb3),CNST_LIMB(0xf8895fee86574)), + P(4229,CNST_LIMB(0xcd172f4701c1684d),CNST_LIMB(0xf7f2ecb084b10)), + P(4231,CNST_LIMB(0x372e686ed8bb537),CNST_LIMB(0xf7d4eb7d10c29)), + P(4241,CNST_LIMB(0xbc07f7ca65c5b071),CNST_LIMB(0xf73f52277a3c3)), + P(4243,CNST_LIMB(0xab2b6170c3f78d9b),CNST_LIMB(0xf7217c598961c)), + P(4253,CNST_LIMB(0xf3d74f461fe6f5b5),CNST_LIMB(0xf68cbb1448f42)), + P(4259,CNST_LIMB(0xdbc13f4b31f3230b),CNST_LIMB(0xf633d0276e4c5)), + P(4261,CNST_LIMB(0xd1420716e3f1572d),CNST_LIMB(0xf6163ac20ec79)), + P(4271,CNST_LIMB(0xd5be2fd4d805464f),CNST_LIMB(0xf582ba2bc16c6)), + P(4273,CNST_LIMB(0xc68b97c136943851),CNST_LIMB(0xf5654f43290a0)), + P(4283,CNST_LIMB(0x9e27918af7cfb473),CNST_LIMB(0xf4d2a23810bc6)), + P(4289,CNST_LIMB(0x5ec8ab6c36ac7f41),CNST_LIMB(0xf47af4d6a2f27)), + P(4297,CNST_LIMB(0x964076331dd90979),CNST_LIMB(0xf4066f2b6e652)), + P(4327,CNST_LIMB(0x30198eff77b002d7),CNST_LIMB(0xf2555048e3a92)), + P(4337,CNST_LIMB(0x3af7cb9583ece011),CNST_LIMB(0xf1c64588a5bf6)), + P(4339,CNST_LIMB(0x34ce06f643d9883b),CNST_LIMB(0xf1a9be09cb411)), + P(4349,CNST_LIMB(0x79f767e528708c55),CNST_LIMB(0xf11b7d5259d39)), + P(4357,CNST_LIMB(0x185332d2ef2313cd),CNST_LIMB(0xf0aa284e7f802)), + P(4363,CNST_LIMB(0x43b611b84c8332a3),CNST_LIMB(0xf0556e5e3b7f2)), + P(4373,CNST_LIMB(0xc2e215e4f43bb63d),CNST_LIMB(0xefc8bcbc808e5)), + P(4391,CNST_LIMB(0xf94b9dd22ce44e97),CNST_LIMB(0xeecd1a690efbb)), + P(4397,CNST_LIMB(0xd895834a1db166a5),CNST_LIMB(0xee79aed6d65f2)), + P(4409,CNST_LIMB(0x347d2f16d19b8d09),CNST_LIMB(0xedd386114d83a)), + P(4421,CNST_LIMB(0x1b54d4dc45b7d98d),CNST_LIMB(0xed2e44366e5e2)), + P(4423,CNST_LIMB(0x117ac30d9a044877),CNST_LIMB(0xed12cf8e17f64)), + P(4441,CNST_LIMB(0xe10b78a67a526e9),CNST_LIMB(0xec1cd284b2b2d)), + P(4447,CNST_LIMB(0x92da68a818688a9f),CNST_LIMB(0xebcb44cadda1e)), + P(4451,CNST_LIMB(0xcf2b6c87f741f84b),CNST_LIMB(0xeb9505943771d)), + P(4457,CNST_LIMB(0xd264f9bd41e18ed9),CNST_LIMB(0xeb43d57efeadc)), + P(4463,CNST_LIMB(0x733cbeaa97166d8f),CNST_LIMB(0xeaf2dd4c00b03)), + P(4481,CNST_LIMB(0xc9f475b021d22e81),CNST_LIMB(0xea0141c1ba6a6)), + P(4483,CNST_LIMB(0x731f76f2ec4c852b),CNST_LIMB(0xe9e68805f05a7)), + P(4493,CNST_LIMB(0xdaf6f0c978f69945),CNST_LIMB(0xe96142b87e431)), + P(4507,CNST_LIMB(0x749c8ad20c61ec93),CNST_LIMB(0xe8a7acd811b8c)), + P(4513,CNST_LIMB(0x9307ff8bd3c1261),CNST_LIMB(0xe8587db3e001d)), + P(4517,CNST_LIMB(0x334a69fb5a486e2d),CNST_LIMB(0xe823d186d44dc)), + P(4519,CNST_LIMB(0x1f36c7bf31578617),CNST_LIMB(0xe8098463ee194)), + P(4523,CNST_LIMB(0x31ebbcc279ea6103),CNST_LIMB(0xe7d4fbfb3ee1d)), + P(4547,CNST_LIMB(0x42e2aad119f466eb),CNST_LIMB(0xe69bba6981ffa)), + P(4549,CNST_LIMB(0x106ec05a0ab1450d),CNST_LIMB(0xe681c5cf7d707)), + P(4561,CNST_LIMB(0xb1b38db92a99e731),CNST_LIMB(0xe5e684930e334)), + P(4567,CNST_LIMB(0x784ae377e67071e7),CNST_LIMB(0xe5993247dc92d)), + P(4583,CNST_LIMB(0x3e9e1471ba6671d7),CNST_LIMB(0xe4cbfee201016)), + P(4591,CNST_LIMB(0x82c29b59d4d73d0f),CNST_LIMB(0xe465ee7daf979)), + P(4597,CNST_LIMB(0xc23dd07128b5525d),CNST_LIMB(0xe4199de07af5c)), + P(4603,CNST_LIMB(0x4d4e5ce0e9245133),CNST_LIMB(0xe3cd8031d4f40)), + P(4621,CNST_LIMB(0xc8fd1057c09f8cc5),CNST_LIMB(0xe2ea56c157eb2)), + P(4637,CNST_LIMB(0xea1516e94f394035),CNST_LIMB(0xe221e5d4d3c73)), + P(4639,CNST_LIMB(0xb5e3319c564ee9df),CNST_LIMB(0xe208f09a841c7)), + P(4643,CNST_LIMB(0x126a69f90d822d8b),CNST_LIMB(0xe1d716a945161)), + P(4649,CNST_LIMB(0x501ed6348857aa19),CNST_LIMB(0xe18c78ec8fd4d)), + P(4651,CNST_LIMB(0xde344a324eee1c83),CNST_LIMB(0xe173a4a162079)), + P(4657,CNST_LIMB(0x1dd9690cb2c406d1),CNST_LIMB(0xe1294881bb494)), + P(4663,CNST_LIMB(0x8d6c5178d5e4387),CNST_LIMB(0xe0df1d5f24661)), + P(4673,CNST_LIMB(0x4cea4050a3e8fdc1),CNST_LIMB(0xe063ec7f50b1e)), + P(4679,CNST_LIMB(0xc114a06acc83f777),CNST_LIMB(0xe01a4313dc53d)), + P(4691,CNST_LIMB(0x20b060ebc0ea01db),CNST_LIMB(0xdf8780f47c350)), + P(4703,CNST_LIMB(0xfe50045acb78c99f),CNST_LIMB(0xdef57e8eb9666)), + P(4721,CNST_LIMB(0x291a68705b196e91),CNST_LIMB(0xde1bdf3f63d46)), + P(4723,CNST_LIMB(0xc1042c724273e2bb),CNST_LIMB(0xde03cb5099809)), + P(4729,CNST_LIMB(0x2cee680bb165b7c9),CNST_LIMB(0xddbbaecc84bc9)), + P(4733,CNST_LIMB(0xfd2ff9f12e0776d5),CNST_LIMB(0xdd8bb5ca73db6)), + P(4751,CNST_LIMB(0x166a5da63af2cc6f),CNST_LIMB(0xdcb4d529a6e07)), + P(4759,CNST_LIMB(0xedd16a5930408d27),CNST_LIMB(0xdc55da73dea60)), + P(4783,CNST_LIMB(0x2adf30c26528844f),CNST_LIMB(0xdb3ad2585011f)), + P(4787,CNST_LIMB(0x9a48d6572b5eec7b),CNST_LIMB(0xdb0becf636a79)), + P(4789,CNST_LIMB(0x6e8bf2877503cb9d),CNST_LIMB(0xdaf481ca6fefb)), + P(4793,CNST_LIMB(0xea27a191a7045389),CNST_LIMB(0xdac5ba7565dae)), + P(4799,CNST_LIMB(0x6eb091f34dd45d3f),CNST_LIMB(0xda7fb4e419d19)), + P(4801,CNST_LIMB(0xdc8a6cabb2937d41),CNST_LIMB(0xda6867a88d327)), + P(4813,CNST_LIMB(0xbc2f04f254922a05),CNST_LIMB(0xd9dd005f50b02)), + P(4817,CNST_LIMB(0x41431f4d6eb38631),CNST_LIMB(0xd9aeb01f763f7)), + P(4831,CNST_LIMB(0x7bd717435a08291f),CNST_LIMB(0xd90d31dd5804a)), + P(4861,CNST_LIMB(0x4232df9c91fc1a55),CNST_LIMB(0xd7b6453358f31)), + P(4871,CNST_LIMB(0xa4651e1d5382eab7),CNST_LIMB(0xd744e69d900e4)), + P(4877,CNST_LIMB(0x7cfb5409de4cf3c5),CNST_LIMB(0xd7011a317260e)), + P(4889,CNST_LIMB(0xcdd636fb068b9929),CNST_LIMB(0xd67a0126e7c19)), + P(4903,CNST_LIMB(0xee8f95e740462c97),CNST_LIMB(0xd5dd39e775bd7)), + P(4909,CNST_LIMB(0x490f97b3a758b4a5),CNST_LIMB(0xd59a4f2990168)), + P(4919,CNST_LIMB(0x641431563c441287),CNST_LIMB(0xd52b24cb6269d)), + P(4931,CNST_LIMB(0xb743dad3ec45916b),CNST_LIMB(0xd4a6571da4f04)), + P(4933,CNST_LIMB(0x7b188be8f55c878d),CNST_LIMB(0xd49044eac6581)), + P(4937,CNST_LIMB(0xd805648b2ca54ef9),CNST_LIMB(0xd4642e40d1129)), + P(4943,CNST_LIMB(0x76dbe6eef60123af),CNST_LIMB(0xd4222e81fe723)), + P(4951,CNST_LIMB(0x3711525e6a9e8867),CNST_LIMB(0xd3ca6e8c89f41)), + P(4957,CNST_LIMB(0x85c2215cb383d8f5),CNST_LIMB(0xd388ce29d4edc)), + P(4967,CNST_LIMB(0xe58f554c89825857),CNST_LIMB(0xd31bc7b7d8013)), + P(4969,CNST_LIMB(0x8fbd3b17c01dacd9),CNST_LIMB(0xd306071c13fd5)), + P(4973,CNST_LIMB(0x4c8c39dc7aedee65),CNST_LIMB(0xd2da935479b1a)), + P(4987,CNST_LIMB(0x653ac6dda86cd3b3),CNST_LIMB(0xd2430aa043597)), + P(4993,CNST_LIMB(0xd61c6791a9c2c81),CNST_LIMB(0xd2025bc6c7db7)), + P(4999,CNST_LIMB(0xb627a30090354237),CNST_LIMB(0xd1c1d4ad1732b)), + P(5003,CNST_LIMB(0x83a89a539c527c23),CNST_LIMB(0xd196e5f46f8c8)), + P(5009,CNST_LIMB(0x28c8c09330e90d71),CNST_LIMB(0xd156a0c9293e8)), + P(5011,CNST_LIMB(0xee1178d27b1f029b),CNST_LIMB(0xd1413d26e0aee)), + P(5021,CNST_LIMB(0xcecc740b37860ab5),CNST_LIMB(0xd0d68c6a4128f)), + P(5023,CNST_LIMB(0x79736fde910c485f),CNST_LIMB(0xd0c142eaf3837)), + P(5039,CNST_LIMB(0x6873d51f2487234f),CNST_LIMB(0xd01792ab9d70d)), + P(5051,CNST_LIMB(0x2a112180614fb973),CNST_LIMB(0xcf990317775bc)), + P(5059,CNST_LIMB(0xcb04cea98508f4eb),CNST_LIMB(0xcf44f8c38790a)), + P(5077,CNST_LIMB(0xc2fcd2c527e28d7d),CNST_LIMB(0xce88d96d10e45)), + P(5081,CNST_LIMB(0x980203ee10393c69),CNST_LIMB(0xce5f39b07e906)), + P(5087,CNST_LIMB(0x3fa90a1d7d75681f),CNST_LIMB(0xce20e98148847)), + P(5099,CNST_LIMB(0xdbf3bfefef217cc3),CNST_LIMB(0xcda4b9c30ccd7)), + P(5101,CNST_LIMB(0x66a17fd3087b41e5),CNST_LIMB(0xcd9015ae32495)), + P(5107,CNST_LIMB(0x962195d496fbbd3b),CNST_LIMB(0xcd524244aca36)), + P(5113,CNST_LIMB(0xc705a86155443e49),CNST_LIMB(0xcd14940099cf6)), + P(5119,CNST_LIMB(0x3f298ee0be6febff),CNST_LIMB(0xccd70ac089a07)), + P(5147,CNST_LIMB(0xaa99b084e62fa613),CNST_LIMB(0xcbb9c535c4371)), + P(5153,CNST_LIMB(0x1f000cb7d0b46fe1),CNST_LIMB(0xcb7d0b46fe0ff)), + P(5167,CNST_LIMB(0x9ed7858637c9b2cf),CNST_LIMB(0xcaefe5d7135f4)), + P(5171,CNST_LIMB(0x4d871aaf27c106fb),CNST_LIMB(0xcac7b5f00f0cd)), + P(5179,CNST_LIMB(0x2e6a467cdc75a4f3),CNST_LIMB(0xca7785ceddbea)), + P(5189,CNST_LIMB(0xe9d938fb696dde8d),CNST_LIMB(0xca13a2a86e1db)), + P(5197,CNST_LIMB(0x40ec71b0b1554485),CNST_LIMB(0xc9c4009753007)), + P(5209,CNST_LIMB(0x3aae12f861e5f3e9),CNST_LIMB(0xc94d02e64bfab)), + P(5227,CNST_LIMB(0xa97565873959f843),CNST_LIMB(0xc89b8c9c875ef)), + P(5231,CNST_LIMB(0xb5a960c09fbca8f),CNST_LIMB(0xc87447737277e)), + P(5233,CNST_LIMB(0x463fe3d268012c91),CNST_LIMB(0xc860aaa2514e3)), + P(5237,CNST_LIMB(0xe59a6bd5f5ee1bdd),CNST_LIMB(0xc8397c813f1b9)), + P(5261,CNST_LIMB(0x6542e84d7775ce45),CNST_LIMB(0xc74fa805d6d56)), + P(5273,CNST_LIMB(0x8b6eef58fd9effa9),CNST_LIMB(0xc6db8a1f5cdfe)), + P(5279,CNST_LIMB(0x58993dbb9f98075f),CNST_LIMB(0xc6a1add9e2398)), + P(5281,CNST_LIMB(0x2997955a810acf61),CNST_LIMB(0xc68e6be826648)), + P(5297,CNST_LIMB(0x76e3d2f5077db451),CNST_LIMB(0xc5f4e25fc9df0)), + P(5303,CNST_LIMB(0xb37c1d2867e30907),CNST_LIMB(0xc5bb8bf2ad1cd)), + P(5309,CNST_LIMB(0x53ce6e09bd8d8695),CNST_LIMB(0xc58256b316ced)), + P(5323,CNST_LIMB(0x39db291ea2a6b0e3),CNST_LIMB(0xc4fd5ad917b5b)), + P(5333,CNST_LIMB(0xddd265ab9c58847d),CNST_LIMB(0xc49ecb3ea4d7a)), + P(5347,CNST_LIMB(0x5beca8562dddd0cb),CNST_LIMB(0xc41b00b7d950a)), + P(5351,CNST_LIMB(0xb69031c153ddbed7),CNST_LIMB(0xc3f57990b87a1)), + P(5381,CNST_LIMB(0xd03c2271b42a6fcd),CNST_LIMB(0xc2ddcb31250f8)), + P(5387,CNST_LIMB(0xcd6fd19e63e40ea3),CNST_LIMB(0xc2a63b3651432)), + P(5393,CNST_LIMB(0xf7687aa8e4fd7bf1),CNST_LIMB(0xc26ecae1db72e)), + P(5399,CNST_LIMB(0x649dfda112a272a7),CNST_LIMB(0xc2377a18c051e)), + P(5407,CNST_LIMB(0xecf7866a56d526df),CNST_LIMB(0xc1ede9efcec29)), + P(5413,CNST_LIMB(0x72bbf1cfdaebfead),CNST_LIMB(0xc1b6e258d13a0)), + P(5417,CNST_LIMB(0x55f6a48df7055719),CNST_LIMB(0xc19243f5399bb)), + P(5419,CNST_LIMB(0x80060bffcfa00183),CNST_LIMB(0xc17ff9f400305)), + P(5431,CNST_LIMB(0x8a104f309919b087),CNST_LIMB(0xc112865703b94)), + P(5437,CNST_LIMB(0x98fa7db7652f6a15),CNST_LIMB(0xc0dbfaea33225)), + P(5441,CNST_LIMB(0x5d7d1b3df70f7ac1),CNST_LIMB(0xc0b7af12ddfb9)), + P(5443,CNST_LIMB(0x16ab7b5e04cc1f6b),CNST_LIMB(0xc0a58e464462c)), + P(5449,CNST_LIMB(0x78a5bfd2e5ececf9),CNST_LIMB(0xc06f40512eef2)), + P(5471,CNST_LIMB(0x6506392e171d869f),CNST_LIMB(0xbfa9275a2b247)), + P(5477,CNST_LIMB(0xc3fc12e221ef146d),CNST_LIMB(0xbf7367402cdf0)), + P(5479,CNST_LIMB(0xf8aa132822c33657),CNST_LIMB(0xbf61833f4f921)), + P(5483,CNST_LIMB(0x894496574f536f43),CNST_LIMB(0xbf3dc543a74a1)), + P(5501,CNST_LIMB(0x8b2546b08fb4cbd5),CNST_LIMB(0xbe9d9302a7115)), + P(5503,CNST_LIMB(0x43bbb561bd1aa7f),CNST_LIMB(0xbe8bd6e051e01)), + P(5507,CNST_LIMB(0x2412c7cc4ea7a12b),CNST_LIMB(0xbe6868804d5a6)), + P(5519,CNST_LIMB(0x6f0bd406dd71696f),CNST_LIMB(0xbdfe6c4359f0e)), + P(5521,CNST_LIMB(0xad475c6988d54b71),CNST_LIMB(0xbdeccdb0b5c3a)), + P(5527,CNST_LIMB(0xd812e5d48dbbba27),CNST_LIMB(0xbdb8058ee429a)), + P(5531,CNST_LIMB(0x22aaca437ba04893),CNST_LIMB(0xbd94e5c1b371f)), + P(5557,CNST_LIMB(0xdba6ff1fecd5f09d),CNST_LIMB(0xbcb1d293b1af3)), + P(5563,CNST_LIMB(0x13016d3396286773),CNST_LIMB(0xbc7db8db0c1a5)), + P(5569,CNST_LIMB(0xc746494631bcfa41),CNST_LIMB(0xbc49bbdfd2662)), + P(5573,CNST_LIMB(0xd14888565bf6a10d),CNST_LIMB(0xbc2723240f402)), + P(5581,CNST_LIMB(0xc002ef885f0adf05),CNST_LIMB(0xbbe217c2b7c13)), + P(5591,CNST_LIMB(0xe5a04da7fee6ade7),CNST_LIMB(0xbb8c10aab27b2)), + P(5623,CNST_LIMB(0xc114ce5468593bc7),CNST_LIMB(0xba7ad528a7e79)), + P(5639,CNST_LIMB(0xbb6747dd7f577b7),CNST_LIMB(0xb9f3611b48c5e)), + P(5641,CNST_LIMB(0x395ce5a20f285839),CNST_LIMB(0xb9e2806e5e7c4)), + P(5647,CNST_LIMB(0x6eee8be66e8618ef),CNST_LIMB(0xb9aff0c4913fe)), + P(5651,CNST_LIMB(0x52acf64297f1241b),CNST_LIMB(0xb98e4aedd581c)), + P(5653,CNST_LIMB(0x361dcc48a364093d),CNST_LIMB(0xb97d7c94b7dc2)), + P(5657,CNST_LIMB(0x342d6f475d72e629),CNST_LIMB(0xb95be902d9d9e)), + P(5659,CNST_LIMB(0x5e978bd46410d413),CNST_LIMB(0xb94b23c872b90)), + P(5669,CNST_LIMB(0xcc3433d75ba015ad),CNST_LIMB(0xb8f77714d15a1)), + P(5683,CNST_LIMB(0x1c83b7628458d4fb),CNST_LIMB(0xb882d0beff6a1)), + P(5689,CNST_LIMB(0xf9ca45637e38f809),CNST_LIMB(0xb850ff9852703)), + P(5693,CNST_LIMB(0xcbed792ffaf6b115),CNST_LIMB(0xb82fd86db8806)), + P(5701,CNST_LIMB(0x9abd961d8c0e8c8d),CNST_LIMB(0xb7edadd32f76c)), + P(5711,CNST_LIMB(0xe69572fa659340af),CNST_LIMB(0xb79b3b4df3b7b)), + P(5717,CNST_LIMB(0x9187e7483a6436fd),CNST_LIMB(0xb769e6d59833f)), + P(5737,CNST_LIMB(0x1e9c726993bed9d9),CNST_LIMB(0xb6c636b5141ff)), + P(5741,CNST_LIMB(0x243554db91976365),CNST_LIMB(0xb6a59ceae8801)), + P(5743,CNST_LIMB(0x4d06ff994c0088f),CNST_LIMB(0xb6955461e38f7)), + P(5749,CNST_LIMB(0x25b76abcb74889dd),CNST_LIMB(0xb6648c2dc6bc2)), + P(5779,CNST_LIMB(0x3a409642893c779b),CNST_LIMB(0xb572282260209)), + P(5783,CNST_LIMB(0x8f8f620d8bc0c927),CNST_LIMB(0xb552072bde889)), + P(5791,CNST_LIMB(0x6f9f196b3369855f),CNST_LIMB(0xb511e7552f9c4)), + P(5801,CNST_LIMB(0x92a522bb0638ed99),CNST_LIMB(0xb4c1ff34a5c0e)), + P(5807,CNST_LIMB(0x96270f1efdd7004f),CNST_LIMB(0xb4922f58d4aa2)), + P(5813,CNST_LIMB(0xb4844b380fdaa79d),CNST_LIMB(0xb46278c16b967)), + P(5821,CNST_LIMB(0x108936aa5f9c1495),CNST_LIMB(0xb42301cd99b49)), + P(5827,CNST_LIMB(0xb60f606f104c9eb),CNST_LIMB(0xb3f385dd77e4e)), + P(5839,CNST_LIMB(0xc663dfe8263b302f),CNST_LIMB(0xb394d8ef8f0f6)), + P(5843,CNST_LIMB(0xc91a280b9110b15b),CNST_LIMB(0xb375601507c14)), + P(5849,CNST_LIMB(0x904287118d10969),CNST_LIMB(0xb3463f76be376)), + P(5851,CNST_LIMB(0x160d36a5d31bf553),CNST_LIMB(0xb3368f6c4a07c)), + P(5857,CNST_LIMB(0xe84f5fda3c67ad21),CNST_LIMB(0xb3078fc1c25f0)), + P(5861,CNST_LIMB(0xbd85701f72d4b6ed),CNST_LIMB(0xb2e84854e93e5)), + P(5867,CNST_LIMB(0x4c50cf5924dee1c3),CNST_LIMB(0xb2b971aa909a4)), + P(5869,CNST_LIMB(0x2455aaf1633bb6e5),CNST_LIMB(0xb2a9da39d6bc8)), + P(5879,CNST_LIMB(0xd775b39f549b8ac7),CNST_LIMB(0xb25c0dc29a0fc)), + P(5881,CNST_LIMB(0x87fcdda7a252cb49),CNST_LIMB(0xb24c8698449a7)), + P(5897,CNST_LIMB(0x53df2e3bd254a739),CNST_LIMB(0xb1d0ae579aefe)), + P(5903,CNST_LIMB(0x8915e69623a5f7ef),CNST_LIMB(0xb1a2698ea2f9e)), + P(5923,CNST_LIMB(0x1ef24c80742dd08b),CNST_LIMB(0xb108dc4186078)), + P(5927,CNST_LIMB(0xb4d87aaa6fb1e897),CNST_LIMB(0xb0ea463b00212)), + P(5939,CNST_LIMB(0x788573e8b92dbbfb),CNST_LIMB(0xb08ec37007962)), + P(5953,CNST_LIMB(0x2527b137b0878c1),CNST_LIMB(0xb024778cc023c)), + P(5981,CNST_LIMB(0x1870a7c8dee9f4f5),CNST_LIMB(0xaf515df36a88e)), + P(5987,CNST_LIMB(0x39b99e40910a224b),CNST_LIMB(0xaf24635f6561e)), + P(6007,CNST_LIMB(0x45821c0abd4df247),CNST_LIMB(0xae8f1b92baeaf)), + P(6011,CNST_LIMB(0x10fe2b2f50e02fb3),CNST_LIMB(0xae715eee11f8e)), + P(6029,CNST_LIMB(0x5762b90c043f0345),CNST_LIMB(0xadec0b0a3bb36)), + P(6037,CNST_LIMB(0x82a67b9193b27bbd),CNST_LIMB(0xadb10aa4c956f)), + P(6043,CNST_LIMB(0xa6e914e28ec37693),CNST_LIMB(0xad84e49752245)), + P(6047,CNST_LIMB(0x835d9a4facaf445f),CNST_LIMB(0xad6782597f0c2)), + P(6053,CNST_LIMB(0x48def8175884f82d),CNST_LIMB(0xad3b81a0d72fe)), + P(6067,CNST_LIMB(0xae900e2d7c9a6f7b),CNST_LIMB(0xacd52beced79e)), + P(6073,CNST_LIMB(0x1c08431bdd18be89),CNST_LIMB(0xaca9755063254)), + P(6079,CNST_LIMB(0xb370a66d684fd83f),CNST_LIMB(0xac7dd4cafb12a)), + P(6089,CNST_LIMB(0xb4be33e18f93b279),CNST_LIMB(0xac354f80dca44)), + P(6091,CNST_LIMB(0x310c50872a7dd5e3),CNST_LIMB(0xac26d5c2b8ad2)), + P(6101,CNST_LIMB(0x447ab1281276697d),CNST_LIMB(0xabde997dabd3d)), + P(6113,CNST_LIMB(0xc2f122216b2a6c21),CNST_LIMB(0xab883aa1100a0)), + P(6121,CNST_LIMB(0xab99c8b5ae1c3059),CNST_LIMB(0xab4ed637f5a0b)), + P(6131,CNST_LIMB(0xb78e17a2227d593b),CNST_LIMB(0xab074e9febf52)), + P(6133,CNST_LIMB(0xabf97d03f7269c5d),CNST_LIMB(0xaaf90778c2039)), + P(6143,CNST_LIMB(0x867aefc9fdbfe7ff),CNST_LIMB(0xaab1c7684f034)), + P(6151,CNST_LIMB(0xf7f7ad182e47d5b7),CNST_LIMB(0xaa78f20ebbb3e)), + P(6163,CNST_LIMB(0x50dff95a9847721b),CNST_LIMB(0xaa23f8dafd4cc)), + P(6173,CNST_LIMB(0xe4cb8a0e83cb6a35),CNST_LIMB(0xa9dd69cad5934)), + P(6197,CNST_LIMB(0x8da72ecdf9247a1d),CNST_LIMB(0xa935004a07302)), + P(6199,CNST_LIMB(0xc5b04bfc87f31d87),CNST_LIMB(0xa9270690f3d14)), + P(6203,CNST_LIMB(0xe2dcf622ea2b00f3),CNST_LIMB(0xa90b1a0aa5d30)), + P(6211,CNST_LIMB(0xb9ce9f2e4972f46b),CNST_LIMB(0xa8d35c9d731e9)), + P(6217,CNST_LIMB(0x1ed785c911bf59f9),CNST_LIMB(0xa8a9a6a51f16c)), + P(6221,CNST_LIMB(0x4ddb8a4eed70e085),CNST_LIMB(0xa88de370f596b)), + P(6229,CNST_LIMB(0x81e93b4df68c24fd),CNST_LIMB(0xa856786adae36)), + P(6247,CNST_LIMB(0xee0d0812afcd8357),CNST_LIMB(0xa7da4c77d3161)), + P(6257,CNST_LIMB(0xf62e3ba72268a891),CNST_LIMB(0xa7959f863d4a1)), + P(6263,CNST_LIMB(0x3194d367c8154147),CNST_LIMB(0xa76c85e80c195)), + P(6269,CNST_LIMB(0xd096ede8e30c20d5),CNST_LIMB(0xa743806dc44c4)), + P(6271,CNST_LIMB(0xd68624d27b87a77f),CNST_LIMB(0xa735d866dfa0a)), + P(6277,CNST_LIMB(0xb728fcdc11c8204d),CNST_LIMB(0xa70cedb02531e)), + P(6287,CNST_LIMB(0x9d6b6038077e066f),CNST_LIMB(0xa6c8e842c770f)), + P(6299,CNST_LIMB(0xaa732d7a4a360d93),CNST_LIMB(0xa67791215dd74)), + P(6301,CNST_LIMB(0x36af98a423972db5),CNST_LIMB(0xa66a0a51d363d)), + P(6311,CNST_LIMB(0xc31d00da12940f17),CNST_LIMB(0xa626893011861)), + P(6317,CNST_LIMB(0xed85352107410b25),CNST_LIMB(0xa5fe22c55c089)), + P(6323,CNST_LIMB(0x829c85ee6db8567b),CNST_LIMB(0xa5d5cffb77275)), + P(6329,CNST_LIMB(0xef60258952cc6d89),CNST_LIMB(0xa5ad90c4186e5)), + P(6337,CNST_LIMB(0xcf28c2e0da787741),CNST_LIMB(0xa578057e7c2eb)), + P(6343,CNST_LIMB(0x57567d8494af28f7),CNST_LIMB(0xa54ff3bb10e91)), + P(6353,CNST_LIMB(0x2c7c98518f174031),CNST_LIMB(0xa50d5683edc94)), + P(6359,CNST_LIMB(0xb28b363a36825ae7),CNST_LIMB(0xa4e57854b3df4)), + P(6361,CNST_LIMB(0xed1ffeb64f9ae769),CNST_LIMB(0xa4d8328c4b800)), + P(6367,CNST_LIMB(0xcbbb0115e9b9a31f),CNST_LIMB(0xa4b06e01d97b3)), + P(6373,CNST_LIMB(0x8d3c5fecb7f9e4ed),CNST_LIMB(0xa488bca2c4449)), + P(6379,CNST_LIMB(0x816271698195cfc3),CNST_LIMB(0xa4611e6132ed5)), + P(6389,CNST_LIMB(0x9ac939d1c2b1d35d),CNST_LIMB(0xa41f40f39e646)), + P(6397,CNST_LIMB(0xdd9fb7017b0ec455),CNST_LIMB(0xa3eab5c3e44e9)), + P(6421,CNST_LIMB(0xc94cab1e57276e3d),CNST_LIMB(0xa34ddd50561e0)), + P(6427,CNST_LIMB(0x8b8806b117c79913),CNST_LIMB(0xa326d60e94186)), + P(6449,CNST_LIMB(0xa9e63292a3269fd1),CNST_LIMB(0xa2985a81ce614)), + P(6451,CNST_LIMB(0x76da5710f1e989fb),CNST_LIMB(0xa28b72e26f82e)), + P(6469,CNST_LIMB(0xdded6688d83a918d),CNST_LIMB(0xa217aa3479693)), + P(6473,CNST_LIMB(0x4e446b6a305428f9),CNST_LIMB(0xa1fe05c62df4b)), + P(6481,CNST_LIMB(0x4ddaca7a3696cfb1),CNST_LIMB(0xa1cad538aebf9)), + P(6491,CNST_LIMB(0x7eadc4eb87f26ed3),CNST_LIMB(0xa18b05f490083)), + P(6521,CNST_LIMB(0x76c13a0ff04c00c9),CNST_LIMB(0xa0ccc4c28fc31)), + P(6529,CNST_LIMB(0xcbf800504d2a2681),CNST_LIMB(0xa09a544d01ffe)), + P(6547,CNST_LIMB(0x731dada6c4fec9b),CNST_LIMB(0xa0294aa53e9a2)), + P(6551,CNST_LIMB(0xbcb52a664e63f627),CNST_LIMB(0xa01041a6aaed5)), + P(6553,CNST_LIMB(0xf1f9abda071c2aa9),CNST_LIMB(0xa003c01680870)), + P(6563,CNST_LIMB(0xf262ffa620ffe20b),CNST_LIMB(0x9fc5558a971c8)), + P(6569,CNST_LIMB(0x93774a3d57199a99),CNST_LIMB(0x9f9ff9c3c03e5)), + P(6571,CNST_LIMB(0xfb3541cd467a1903),CNST_LIMB(0x9f9389b864ab9)), + P(6577,CNST_LIMB(0x6828cab6b4fe8f51),CNST_LIMB(0x9f6e4534bdca8)), + P(6581,CNST_LIMB(0x12ac03e3d624cc9d),CNST_LIMB(0x9f557687235c2)), + P(6599,CNST_LIMB(0x6363bd1e9bb7d7f7),CNST_LIMB(0x9ee633c0391ab)), + P(6607,CNST_LIMB(0x334cfd676a484d2f),CNST_LIMB(0x9eb4f28e0bb39)), + P(6619,CNST_LIMB(0xd511acd86f143a53),CNST_LIMB(0x9e6b49e92e4bb)), + P(6637,CNST_LIMB(0x73fc2490e0062be5),CNST_LIMB(0x9dfd4ccbd0045)), + P(6653,CNST_LIMB(0x10780dda36b78b55),CNST_LIMB(0x9d9c0828536c1)), + P(6659,CNST_LIMB(0xabf601274064e0ab),CNST_LIMB(0x9d77ad449f777)), + P(6661,CNST_LIMB(0x3ef3e4ca27e4a2cd),CNST_LIMB(0x9d6b92b28ee48)), + P(6673,CNST_LIMB(0x9216a26e690a16f1),CNST_LIMB(0x9d231a476ed51)), + P(6679,CNST_LIMB(0xbae4849e6034bda7),CNST_LIMB(0x9cfef711bf120)), + P(6689,CNST_LIMB(0xf943a0520e01e9e1),CNST_LIMB(0x9cc2e1448b765)), + P(6691,CNST_LIMB(0x7c89958f48f6658b),CNST_LIMB(0x9cb6e26cbc64d)), + P(6701,CNST_LIMB(0xe67128750e0545a5),CNST_LIMB(0x9c7b03b4a9c67)), + P(6703,CNST_LIMB(0xc6c9e1d414516ccf),CNST_LIMB(0x9c6f0fd980ab1)), + P(6709,CNST_LIMB(0x805307f996e9e81d),CNST_LIMB(0x9c4b3f3a30c3f)), + P(6719,CNST_LIMB(0x3eddd2cff46ad5bf),CNST_LIMB(0x9c0fb29436687)), + P(6733,CNST_LIMB(0x35582c1aeb5aae85),CNST_LIMB(0x9bbca025b7aec)), + P(6737,CNST_LIMB(0x4973c88573ef6eb1),CNST_LIMB(0x9ba4f4421e52c)), + P(6761,CNST_LIMB(0x3063f627c1e715d9),CNST_LIMB(0x9b1783809ff03)), + P(6763,CNST_LIMB(0x711ad679a8dcc243),CNST_LIMB(0x9b0bc5b4d2eac)), + P(6779,CNST_LIMB(0x51c224a17a3db4b3),CNST_LIMB(0x9aae172fd8b9c)), + P(6781,CNST_LIMB(0x612325ca50ddaed5),CNST_LIMB(0x9aa26954607ed)), + P(6791,CNST_LIMB(0x9929a7b6b7958b37),CNST_LIMB(0x9a681e758a022)), + P(6793,CNST_LIMB(0xa78d222e5a857bb9),CNST_LIMB(0x9a5c7b284942e)), + P(6803,CNST_LIMB(0x3ad0ffe3198d139b),CNST_LIMB(0x9a2264ecc5558)), + P(6823,CNST_LIMB(0x8b4659ac547ed17),CNST_LIMB(0x99aebb39be56f)), + P(6827,CNST_LIMB(0x1752e8904aff1003),CNST_LIMB(0x9997ae1a9faac)), + P(6829,CNST_LIMB(0x60745c37ee4e5925),CNST_LIMB(0x998c2a22b6900)), + P(6833,CNST_LIMB(0x29e2da1f6557ee51),CNST_LIMB(0x997527603f8a8)), + P(6841,CNST_LIMB(0x80d78c24ac49cb89),CNST_LIMB(0x99473685e4d50)), + P(6857,CNST_LIMB(0xc56c3b495c8d1f79),CNST_LIMB(0x98eba72512a13)), + P(6863,CNST_LIMB(0xcf5bdf9f5088ac2f),CNST_LIMB(0x98c96d8dee9e1)), + P(6869,CNST_LIMB(0x8a44800e4fae4e7d),CNST_LIMB(0x98a743453554e)), + P(6871,CNST_LIMB(0xdd76384277e578e7),CNST_LIMB(0x989be33c9e6bd)), + P(6883,CNST_LIMB(0x20b1562d2703facb),CNST_LIMB(0x9857c692e9a59)), + P(6899,CNST_LIMB(0xef56caf96e9d8e3b),CNST_LIMB(0x97fd540c05c9e)), + P(6907,CNST_LIMB(0xf54061416aede033),CNST_LIMB(0x97d04302ed944)), + P(6911,CNST_LIMB(0xe0bc78c21a26e4ff),CNST_LIMB(0x97b9c48289935)), + P(6917,CNST_LIMB(0x524f92731a179cd),CNST_LIMB(0x9798133ece717)), + P(6947,CNST_LIMB(0x5d3b4ad7deafec8b),CNST_LIMB(0x96f07c683689e)), + P(6949,CNST_LIMB(0x508828f744da88ad),CNST_LIMB(0x96e55d6393fc5)), + P(6959,CNST_LIMB(0x6e82014031710bcf),CNST_LIMB(0x96addad861696)), + P(6961,CNST_LIMB(0xadf3b77a22595dd1),CNST_LIMB(0x96a2c5a2cf0cf)), + P(6967,CNST_LIMB(0xd8f0c03f7ea8a87),CNST_LIMB(0x96818fc825eba)), + P(6971,CNST_LIMB(0x2c49e3483c3a05f3),CNST_LIMB(0x966b74027f48a)), + P(6977,CNST_LIMB(0xccecbc98c91274c1),CNST_LIMB(0x964a56850b8ed)), + P(6983,CNST_LIMB(0x273a08941bb71e77),CNST_LIMB(0x962947990eb36)), + P(6991,CNST_LIMB(0xdead5a1e3f341baf),CNST_LIMB(0x95fd4a4c885e0)), + P(6997,CNST_LIMB(0x83eee092593309fd),CNST_LIMB(0x95dc5d3954fde)), + P(7001,CNST_LIMB(0x4af5f1bd3ae87ce9),CNST_LIMB(0x95c671ddfe516)), + P(7013,CNST_LIMB(0x4ca85ad2301c9e6d),CNST_LIMB(0x9584d6340ddf1)), + P(7019,CNST_LIMB(0x1b19592cd31a3943),CNST_LIMB(0x95641de84afcc)), + P(7027,CNST_LIMB(0x3e7aa05e6dcd81bb),CNST_LIMB(0x953893c386521)), + P(7039,CNST_LIMB(0x86336cecb02ba47f),CNST_LIMB(0x94f7740d87794)), + P(7043,CNST_LIMB(0xa96b30d0c8a44b2b),CNST_LIMB(0x94e1cb70c9ce0)), + P(7057,CNST_LIMB(0xb7c63fa0cfca0571),CNST_LIMB(0x94962ecbcc7ce)), + P(7069,CNST_LIMB(0x8eaf59b405a642b5),CNST_LIMB(0x94559c69059cf)), + P(7079,CNST_LIMB(0xdf29e9cbb536dc17),CNST_LIMB(0x941ff7e640716)), + P(7103,CNST_LIMB(0xed14132c82c1d43f),CNST_LIMB(0x939fd7a24b099)), + P(7109,CNST_LIMB(0xaf68778e34caab0d),CNST_LIMB(0x937ff22c014bd)), + P(7121,CNST_LIMB(0xa4f04a3368941d31),CNST_LIMB(0x934050872c09e)), + P(7127,CNST_LIMB(0xe9960969357c07e7),CNST_LIMB(0x93209446d56f6)), + P(7129,CNST_LIMB(0xeb47b62b7360b469),CNST_LIMB(0x9316033b5bd22)), + P(7151,CNST_LIMB(0x64c653d779ae730f),CNST_LIMB(0x92a22b9a79374)), + P(7159,CNST_LIMB(0x479702d3319915c7),CNST_LIMB(0x927838edba206)), + P(7177,CNST_LIMB(0xef3c3eebc6803239),CNST_LIMB(0x921a2e7112833)), + P(7187,CNST_LIMB(0x93807b1a2e3c0e1b),CNST_LIMB(0x91e623d5660d0)), + P(7193,CNST_LIMB(0x8167e33e3f478029),CNST_LIMB(0x91c6fc0cab8b6)), + P(7207,CNST_LIMB(0x60cb76e38c339397),CNST_LIMB(0x917e7d88028eb)), + P(7211,CNST_LIMB(0xae34788ffe4bc283),CNST_LIMB(0x9169d455585cd)), + P(7213,CNST_LIMB(0x4b6246a0c6c093a5),CNST_LIMB(0x915f81ef2d529)), + P(7219,CNST_LIMB(0x872e594b12b03efb),CNST_LIMB(0x9140938595d3a)), + P(7229,CNST_LIMB(0xbc0ae83ce9045b15),CNST_LIMB(0x910d2360a450e)), + P(7237,CNST_LIMB(0xad30a3917e0968d),CNST_LIMB(0x90e417104eabd)), + P(7243,CNST_LIMB(0x124ef5a4e1c7cd63),CNST_LIMB(0x90c55d0fdea28)), + P(7247,CNST_LIMB(0x5b98fe0e9fe17aaf),CNST_LIMB(0x90b0e84c04f20)), + P(7253,CNST_LIMB(0x414306cfe45400fd),CNST_LIMB(0x909243fac6b70)), + P(7283,CNST_LIMB(0xa06d1b4fd391e8bb),CNST_LIMB(0x8ff9d0440d137)), + P(7297,CNST_LIMB(0x11939803a60c2381),CNST_LIMB(0x8fb3192789d73)), + P(7307,CNST_LIMB(0x668c11cc37ea6b23),CNST_LIMB(0x8f80c0d5031e3)), + P(7309,CNST_LIMB(0x83f9b2089dc10645),CNST_LIMB(0x8f76b3664f164)), + P(7321,CNST_LIMB(0x65dc8ae47af277a9),CNST_LIMB(0x8f3a80550abc3)), + P(7331,CNST_LIMB(0x6e2368b9c685770b),CNST_LIMB(0x8f087c50e00c4)), + P(7333,CNST_LIMB(0x3ea137aeba5a6b2d),CNST_LIMB(0x8efe7fb408cc2)), + P(7349,CNST_LIMB(0x735f57adca48f19d),CNST_LIMB(0x8eaecce5c4fd7)), + P(7351,CNST_LIMB(0x69a8de0ba1b18107),CNST_LIMB(0x8ea4dccaaec0b)), + P(7369,CNST_LIMB(0x8fb84bdf5822bd79),CNST_LIMB(0x8e4ba9fbc2ff0)), + P(7393,CNST_LIMB(0xb8fab3b748562721),CNST_LIMB(0x8dd5688a3b7d6)), + P(7411,CNST_LIMB(0xa6c658ea10a65c3b),CNST_LIMB(0x8d7d3821fd94f)), + P(7417,CNST_LIMB(0xe56381f33ab5e549),CNST_LIMB(0x8d5feb03c31d7)), + P(7433,CNST_LIMB(0xe3c224da14988139),CNST_LIMB(0x8d12033cc9d30)), + P(7451,CNST_LIMB(0x438c253e6d99f513),CNST_LIMB(0x8cbac4dec6a82)), + P(7457,CNST_LIMB(0xc1b99f8841a3a6e1),CNST_LIMB(0x8c9dc80ab604b)), + P(7459,CNST_LIMB(0x63fa18c79c54fa8b),CNST_LIMB(0x8c942115dcc96)), + P(7477,CNST_LIMB(0xe7f6f609619d0d1d),CNST_LIMB(0x8c3d7df67b539)), + P(7481,CNST_LIMB(0x7b39ef3b70afc109),CNST_LIMB(0x8c2a4bc35cb3b)), + P(7487,CNST_LIMB(0x73922c61ca7452bf),CNST_LIMB(0x8c0d8a4f1f264)), + P(7489,CNST_LIMB(0x28d96828332372c1),CNST_LIMB(0x8c03f71cbf906)), + P(7499,CNST_LIMB(0x6b6e92968c4e8463),CNST_LIMB(0x8bd42abd9a107)), + P(7507,CNST_LIMB(0x571861f084962edb),CNST_LIMB(0x8bae051d7f6ff)), + P(7517,CNST_LIMB(0xd935c64f140f1ef5),CNST_LIMB(0x8b7e735068135)), + P(7523,CNST_LIMB(0x96459f8fd72a4c4b),CNST_LIMB(0x8b61f82c5fb08)), + P(7529,CNST_LIMB(0x410ba9a2a18242d9),CNST_LIMB(0x8b4588a74a05a)), + P(7537,CNST_LIMB(0xcf90979f89870391),CNST_LIMB(0x8b1fb0a7ed403)), + P(7541,CNST_LIMB(0x10f94ff26bc00add),CNST_LIMB(0x8b0ccc5d8f5c8)), + P(7547,CNST_LIMB(0xa6619fbb9da139b3),CNST_LIMB(0x8af07f8ac5146)), + P(7549,CNST_LIMB(0x765a23334efb03d5),CNST_LIMB(0x8ae71328ffd49)), + P(7559,CNST_LIMB(0x6f2f613b5e631837),CNST_LIMB(0x8ab8086624822)), + P(7561,CNST_LIMB(0x666b99bfbcd368b9),CNST_LIMB(0x8aaea3ab5ae89)), + P(7573,CNST_LIMB(0x922b78eb01ed45bd),CNST_LIMB(0x8a7661f7020fe)), + P(7577,CNST_LIMB(0x7079a199c31de6a9),CNST_LIMB(0x8a63ab88aa8dd)), + P(7583,CNST_LIMB(0xa181abcda167be5f),CNST_LIMB(0x8a47a35d020f3)), + P(7589,CNST_LIMB(0x2f6dbbcab3a9822d),CNST_LIMB(0x8a2ba68a3cebf)), + P(7591,CNST_LIMB(0xc5a83ff0e43eba17),CNST_LIMB(0x8a2254c852497)), + P(7603,CNST_LIMB(0x28c68613dda7d97b),CNST_LIMB(0x89ea849898bb3)), + P(7607,CNST_LIMB(0x5cf33ed49efa5007),CNST_LIMB(0x89d7f3e285109)), + P(7621,CNST_LIMB(0x9125fdead661590d),CNST_LIMB(0x899720af36739)), + P(7639,CNST_LIMB(0xaee67f478c7325e7),CNST_LIMB(0x89442160d11dc)), + P(7643,CNST_LIMB(0x735b1274a0e89653),CNST_LIMB(0x8931bd5875a22)), + P(7649,CNST_LIMB(0x733b56eae1a4e621),CNST_LIMB(0x891630877aedf)), + P(7669,CNST_LIMB(0x1944ffb316ffe65d),CNST_LIMB(0x88baaad83e38f)), + P(7673,CNST_LIMB(0xf26bc3cfd2a01449),CNST_LIMB(0x88a86b9090aa4)), + P(7681,CNST_LIMB(0xb5827ba68b83e201),CNST_LIMB(0x8883fb99bf244)), + P(7687,CNST_LIMB(0xac139507e48eefb7),CNST_LIMB(0x8868b45e727ee)), + P(7691,CNST_LIMB(0xeb7676b25834fda3),CNST_LIMB(0x88568aef30d47)), + P(7699,CNST_LIMB(0xad898f4763da5c1b),CNST_LIMB(0x8832468f0bcdd)), + P(7703,CNST_LIMB(0xea906f224398f9a7),CNST_LIMB(0x88202b9a4df76)), + P(7717,CNST_LIMB(0xa8aff3caca28cdad),CNST_LIMB(0x87e0f31872e9b)), + P(7723,CNST_LIMB(0x46c53aa36b19b083),CNST_LIMB(0x87c5ecd731f42)), + P(7727,CNST_LIMB(0x9ada32b09603e8cf),CNST_LIMB(0x87b3eea3bb388)), + P(7741,CNST_LIMB(0xd31f842ef5d8e915),CNST_LIMB(0x87751a6c67d78)), + P(7753,CNST_LIMB(0x6124af44730a33f9),CNST_LIMB(0x873f6e2f9d34a)), + P(7757,CNST_LIMB(0x828ec4c2b6e64a85),CNST_LIMB(0x872d938dcfc01)), + P(7759,CNST_LIMB(0x3d6f49df999638af),CNST_LIMB(0x8724a80151dba)), + P(7789,CNST_LIMB(0x7641460a0ea89b65),CNST_LIMB(0x869f677f6cc1a)), + P(7793,CNST_LIMB(0x97703f98fb7fe291),CNST_LIMB(0x868db701df58d)), + P(7817,CNST_LIMB(0xd343c209e3e6b7b9),CNST_LIMB(0x8623f563a7d6d)), + P(7823,CNST_LIMB(0x4e5fc01f6a41406f),CNST_LIMB(0x86099ef0c8886)), + P(7829,CNST_LIMB(0xb78a05b08aa4bcbd),CNST_LIMB(0x85ef52d38fe87)), + P(7841,CNST_LIMB(0x3434a14919d34561),CNST_LIMB(0x85bad981c7847)), + P(7853,CNST_LIMB(0xccead7dee120f525),CNST_LIMB(0x8586893de7cfc)), + P(7867,CNST_LIMB(0xe1375a2bccd87673),CNST_LIMB(0x8549b491e9efe)), + P(7873,CNST_LIMB(0xf727d51420a57141),CNST_LIMB(0x852fb3859bea4)), + P(7877,CNST_LIMB(0x2c3b68cfbcebb00d),CNST_LIMB(0x851e631fc08f8)), + P(7879,CNST_LIMB(0xda91e2f3e17542f7),CNST_LIMB(0x8515bc9cde5f1)), + P(7883,CNST_LIMB(0xb55f6100ae95d6e3),CNST_LIMB(0x850472f6185b3)), + P(7901,CNST_LIMB(0x6a0c608e0bbaa975),CNST_LIMB(0x84b6defbc166b)), + P(7907,CNST_LIMB(0xac5f2fc151c016cb),CNST_LIMB(0x849d17159854b)), + P(7919,CNST_LIMB(0xb1e5af8146e4d00f),CNST_LIMB(0x8469a54a20645)), + P(7927,CNST_LIMB(0x6e283d3b112602c7),CNST_LIMB(0x84476f9401ade)), + P(7933,CNST_LIMB(0xf9a48bcb76c96e55),CNST_LIMB(0x842dd2e2dc25d)), + P(7937,CNST_LIMB(0xa776780ca4c0e101),CNST_LIMB(0x841cc543f58cb)), +#define SMALLEST_OMITTED_PRIME 7949 +#endif +#ifdef WANT_ptab + {CNST_LIMB(0x444437fed9a2349),{CNST_LIMB(0xe00056482545e92a),5,CNST_LIMB(0x2e044fdfbae4),CNST_LIMB(0x2c8f9615733fe6),CNST_LIMB(0x15319a745d44889),CNST_LIMB(0x30314bfee31fe08),CNST_LIMB(0x213845b5eb1d02b)},0,14}, + {CNST_LIMB(0x34091fa96ffdf47b),{CNST_LIMB(0x3adc72bf62f96a49),2,CNST_LIMB(0x2fdb815a40082e14),CNST_LIMB(0xa2fb4713ee182be),CNST_LIMB(0x6691fcc7a3042b5),CNST_LIMB(0xd7baca281bd7bfe),CNST_LIMB(0x31645ad7700b6fe1)},14,10}, + {CNST_LIMB(0x3c47d8d728a77ebb),{CNST_LIMB(0xfcb9aee19f3d0ca),2,CNST_LIMB(0xee09ca35d620514),CNST_LIMB(0x25e3c1639f7dc597),CNST_LIMB(0x176f977d1145f08f),CNST_LIMB(0x4a431b566c292ba),CNST_LIMB(0x100ae9d9482d6937)},24,9}, + {CNST_LIMB(0x77ab7da9d709ea9),{CNST_LIMB(0x11d1e7012ab3aa25),5,CNST_LIMB(0x1b394f7170aed8e),CNST_LIMB(0x546efaf8f3107d0),CNST_LIMB(0x42ed2efa9db39d8),CNST_LIMB(0xcf1c08fc6f825e),CNST_LIMB(0x252dd3fc3932c60)},33,8}, + {CNST_LIMB(0x310df3e7bd4bc897),{CNST_LIMB(0x4dfeef7ace095886),2,CNST_LIMB(0xaba3c794d85150d),CNST_LIMB(0x17a7ea757afc9b41),CNST_LIMB(0x27386bf8f31e3ba7),CNST_LIMB(0x14f913784ca1b09a),CNST_LIMB(0x19a5850266378808)},41,8}, + {CNST_LIMB(0xd997f089e8af1f),{CNST_LIMB(0x2d2f79839e6b7329),8,CNST_LIMB(0x285a2dd96a188d),CNST_LIMB(0x334ffbd384a516),CNST_LIMB(0xd9f5c4d959d8c),CNST_LIMB(0x1a7b0c8f9e2a8),CNST_LIMB(0x51d4df5ea86eca)},49,7}, + {CNST_LIMB(0x2514ab8fece6d79),{CNST_LIMB(0xb9d8ba8530d526d2),6,CNST_LIMB(0x111e482834cf602),CNST_LIMB(0x2099b9b4399ea77),CNST_LIMB(0xa7e65453d2c58b),CNST_LIMB(0x1543e97a71ba902),CNST_LIMB(0x13c9258fa65ea5c)},56,7}, + {CNST_LIMB(0x690efbefde431f9),{CNST_LIMB(0x37e6fe9321e30a89),5,CNST_LIMB(0x67c69a65020950a),CNST_LIMB(0x3d4da34fd3fb29d),CNST_LIMB(0x4481530580bf270),CNST_LIMB(0x53418b541a702fb),CNST_LIMB(0x5a63ba140615695)},63,7}, + {CNST_LIMB(0xf49e199a5f2f371),{CNST_LIMB(0xbe97cf50195e4cf),4,CNST_LIMB(0xb61e665a0d0c8f0),CNST_LIMB(0x12404319392532e),CNST_LIMB(0xc11fa27489010aa),CNST_LIMB(0x9486cdb3a063f1d),CNST_LIMB(0x90fb58fe1716f29)},70,7}, + {CNST_LIMB(0x20e4ce7eee0a5edf),{CNST_LIMB(0xf216910d87cce9ec),2,CNST_LIMB(0x19be5a877db767e7),CNST_LIMB(0x14174edbad8e4db0),CNST_LIMB(0x13aa47a54ebc0ab3),CNST_LIMB(0x34e03d849eed1a0),CNST_LIMB(0x1c348c675b2b87a9)},77,7}, + {CNST_LIMB(0x3c3b299a83e166e5),{CNST_LIMB(0x1004d8385b0845e0),2,CNST_LIMB(0xf135995f07a646c),CNST_LIMB(0x39f996f3e7c62cb6),CNST_LIMB(0x10e385c8b908ec46),CNST_LIMB(0x108780c61cd93a1),CNST_LIMB(0xece590a749ce9e6)},84,7}, + {CNST_LIMB(0x7385117dabf89767),{CNST_LIMB(0x1ba83180cf48fd02),1,CNST_LIMB(0x18f5dd04a80ed132),CNST_LIMB(0x134aacf48cf374fd),CNST_LIMB(0x5f5e8ab304a603e1),CNST_LIMB(0x8196d4d84952f0b),CNST_LIMB(0x27fbce261e06981)},91,7}, + {CNST_LIMB(0x6b1dd94152d113),{CNST_LIMB(0x31e8de86cb665558),9,CNST_LIMB(0x57c2791756ffa7),CNST_LIMB(0x155d1b6359e72e),CNST_LIMB(0x26e2dd434311d6),CNST_LIMB(0x2d6624583bf57f),CNST_LIMB(0x4b3c0311592466)},98,6}, + {CNST_LIMB(0x9bed1488742f9b),{CNST_LIMB(0xa44d3b1c6d785d44),8,CNST_LIMB(0x2f0a502161e5b4),CNST_LIMB(0x9197cc3e5a5b04),CNST_LIMB(0x58ecad625341f6),CNST_LIMB(0x2c8e81222f4972),CNST_LIMB(0x1f80904334e61e)},104,6}, + {CNST_LIMB(0xd851b0362c316b),{CNST_LIMB(0x2ef5b88db4540035),8,CNST_LIMB(0xcfa22017ddb3c6),CNST_LIMB(0x213062fd865691),CNST_LIMB(0x81822846481a0d),CNST_LIMB(0x4b3f5844dfd386),CNST_LIMB(0x746b08e79bff57)},110,6}, + {CNST_LIMB(0x129e6025385b5e9),{CNST_LIMB(0xb7fd23d5247f5d33),7,CNST_LIMB(0x1283c028c9d61ad),CNST_LIMB(0x8a2496a2184268),CNST_LIMB(0x702aa9d6cae97c),CNST_LIMB(0x8700d0e7b38adb),CNST_LIMB(0x562031b42d3873)},116,6}, + {CNST_LIMB(0x1b399405df9e1d9),{CNST_LIMB(0x2ce69e058ed22408),7,CNST_LIMB(0xc43448ef95aada),CNST_LIMB(0x2a35f6f5397332),CNST_LIMB(0x18bba0a2b06f9b5),CNST_LIMB(0x1bf0769bdd0a51),CNST_LIMB(0xdaf86a9dd4f157)},122,6}, + {CNST_LIMB(0x26a9c83b1da0183),{CNST_LIMB(0xa7c312b1de2834bc),6,CNST_LIMB(0x245cdfc0d956145),CNST_LIMB(0xcfb5812fdbb80b),CNST_LIMB(0x7f9bd0fd4d9771),CNST_LIMB(0x206d41f157b339d),CNST_LIMB(0x1597d040f39bed6)},128,6}, + {CNST_LIMB(0x36518f1ed35fae9),{CNST_LIMB(0x2da0bb538e68c61b),6,CNST_LIMB(0x161b11f812f7dbd),CNST_LIMB(0x1912054119f8337),CNST_LIMB(0x28b68baf0254a33),CNST_LIMB(0x1febc2a846ec627),CNST_LIMB(0x106e286e91657ac)},134,6}, + {CNST_LIMB(0x499cea9952ffcb7),{CNST_LIMB(0xbd2398239911cb86),5,CNST_LIMB(0x2f49990f2b0b4af),CNST_LIMB(0x3efc376b6d3879a),CNST_LIMB(0x16bf595684e7cae),CNST_LIMB(0x2096f989291e15a),CNST_LIMB(0x3f877653fe30a29)},140,6}, + {CNST_LIMB(0x603dc1f0578e36b),{CNST_LIMB(0x547a4d1f60bb6de6),5,CNST_LIMB(0x35de2e91a2ab072),CNST_LIMB(0x3ae19a039d933f9),CNST_LIMB(0x49f04fa32aed515),CNST_LIMB(0x49f39ce5e69737b),CNST_LIMB(0x48e7a8d6354cb3f)},146,6}, + {CNST_LIMB(0x822f4ff1bb75c7d),{CNST_LIMB(0xf7684c1a915fd94f),4,CNST_LIMB(0x3c4551ba4cbccdd),CNST_LIMB(0x3e072857c5d22e8),CNST_LIMB(0x757d8256f24de27),CNST_LIMB(0x256d9df09b5df5c),CNST_LIMB(0x19974713584ab80)},152,6}, + {CNST_LIMB(0xacfc9fbdf683023),{CNST_LIMB(0x7ad9852da99412df),4,CNST_LIMB(0x754da5eeda3acdb),CNST_LIMB(0x91f55d002dee623),CNST_LIMB(0x96936cc5e49d5ea),CNST_LIMB(0x766649a4996390),CNST_LIMB(0xaa8c52b8eea17dd)},158,6}, + {CNST_LIMB(0xe09d410f1fe4edb),{CNST_LIMB(0x23c5744aa32cf453),4,CNST_LIMB(0x34f16cefc1e749a),CNST_LIMB(0x2668179180c1b62),CNST_LIMB(0xdb241be2f133397),CNST_LIMB(0xa7c11527a49744e),CNST_LIMB(0x67d18e0669fea5b)},164,6}, + {CNST_LIMB(0x1149424a578f0ce7),{CNST_LIMB(0xd9e7a906d91cf1db),3,CNST_LIMB(0xdfe5fef362d4b5e),CNST_LIMB(0xcf056a84b77c77c),CNST_LIMB(0x985dfab0d2bd76b),CNST_LIMB(0xf57931f6922ec07),CNST_LIMB(0x44b19bfab74d6)},170,6}, + {CNST_LIMB(0x15b025d5fd579777),{CNST_LIMB(0x79b813c3ed8f4fd2),3,CNST_LIMB(0x116e5fce1d3c7de3),CNST_LIMB(0x1468c60d0220a399),CNST_LIMB(0xf10192b1089742d),CNST_LIMB(0xeae0b108eba5be6),CNST_LIMB(0xf0e98ff5e4d57d4)},176,6}, + {CNST_LIMB(0x1a5f81f6e38d3f1d),{CNST_LIMB(0x369eab91d724ae89),3,CNST_LIMB(0x12a46e520008c7fb),CNST_LIMB(0x638a97340d45e81),CNST_LIMB(0x12b4b0c893a62d44),CNST_LIMB(0x1072dcd55e5547d0),CNST_LIMB(0x18ce18c4a086d95f)},182,6}, + {CNST_LIMB(0x23293bf9b6fe2259),{CNST_LIMB(0xd1f849a43b917c65),2,CNST_LIMB(0x9df5c2bff0d0f91),CNST_LIMB(0xff1fdef6c15b8c),CNST_LIMB(0xec1383d93946006),CNST_LIMB(0x20ce6fd4fbbb8838),CNST_LIMB(0x55871453993a979)},188,6}, + {CNST_LIMB(0x2c1eaa6645e21b17),{CNST_LIMB(0x735a473662e09835),2,CNST_LIMB(0x2366ac00a295788d),CNST_LIMB(0xf8778468c26bac6),CNST_LIMB(0x10ecc751d2724c63),CNST_LIMB(0x4882fbd9d3d43e1),CNST_LIMB(0x2de76607a7f1541)},194,6}, + {CNST_LIMB(0x3646542a1110061b),{CNST_LIMB(0x2ddf24b018173a2c),2,CNST_LIMB(0x26e6af57bbbfe794),CNST_LIMB(0x1974e8d33a8f431f),CNST_LIMB(0x34da7258db6f7b4f),CNST_LIMB(0x2af310e921f874f8),CNST_LIMB(0x3cfeed9d4afc97)},200,6}, + {CNST_LIMB(0x4125602df5b7fa0b),{CNST_LIMB(0xf6fe47f7e339f3ce),1,CNST_LIMB(0x3c8fdf761ed811df),CNST_LIMB(0x145648c8769aba41),CNST_LIMB(0x3270209c06bd9a17),CNST_LIMB(0x2c03f98e45b9dca3),CNST_LIMB(0x3341dcfe340ee93e)},206,6}, + {CNST_LIMB(0x4e06bb83aa64f48d),{CNST_LIMB(0xa3f6020ab0b7e0d3),1,CNST_LIMB(0x15ebcd7500d12259),CNST_LIMB(0x786bf28f0081f92),CNST_LIMB(0x15d832d09f03b587),CNST_LIMB(0xaa3e94d54c2a575),CNST_LIMB(0x471850a042d21386)},212,6}, + {CNST_LIMB(0x6953db39a8298d8b),{CNST_LIMB(0x371b0bbe24632f20),1,CNST_LIMB(0x2d58498caface4ea),CNST_LIMB(0x557c399022219340),CNST_LIMB(0x2cb32a1a8fdd68c2),CNST_LIMB(0x122684249d42b9a9),CNST_LIMB(0x13c80507e77a929c)},218,6}, + {CNST_LIMB(0x15fafabe1c1777),{CNST_LIMB(0x74b22475baab0cce),11,CNST_LIMB(0xc763842e2c34d),CNST_LIMB(0x77d3f710b457b),CNST_LIMB(0x155a43f5525196),CNST_LIMB(0x148e30e0a5dee3),CNST_LIMB(0x13aa97836b8150)},224,5}, + {CNST_LIMB(0x18552ab4f8303b),{CNST_LIMB(0x50aaa1ed4d926e62),11,CNST_LIMB(0x815be492ca359),CNST_LIMB(0x1b55fe26d36ad),CNST_LIMB(0x113a54ceb7846),CNST_LIMB(0x1688511dfe47f),CNST_LIMB(0x66ccabff6c6c8)},229,5}, + {CNST_LIMB(0x1a99c2502dda5f),{CNST_LIMB(0x33f675a22ebecef5),11,CNST_LIMB(0x12ab7e96d807ff),CNST_LIMB(0x1d3db891dce3b),CNST_LIMB(0x19511de2e3095c),CNST_LIMB(0x2741e555a0bff),CNST_LIMB(0x51c7d31a19281)},234,5}, + {CNST_LIMB(0x1ebf9e78cd7ecb),{CNST_LIMB(0xa6b5da36fa2470c),11,CNST_LIMB(0xaebd869698c2f),CNST_LIMB(0x18e178fc70e26a),CNST_LIMB(0x64439ec9707b5),CNST_LIMB(0x116d1f70d29f20),CNST_LIMB(0xeea2317a9a585)},239,5}, + {CNST_LIMB(0x2214c7d5d9ce07),{CNST_LIMB(0xe0bc0f6215d26cf9),10,CNST_LIMB(0x1ffbac72c32f72),CNST_LIMB(0x1447f31b055129),CNST_LIMB(0x122d28bd754f9a),CNST_LIMB(0x106685d95b6d85),CNST_LIMB(0x18c9fdf391bdff)},244,5}, + {CNST_LIMB(0x25e2755d49ffa7),{CNST_LIMB(0xb078a0cae16506b6),10,CNST_LIMB(0x218554ef385919),CNST_LIMB(0xe00c975692d8e),CNST_LIMB(0x1afd2511d2f776),CNST_LIMB(0x108b0b031673f7),CNST_LIMB(0x8d919ed067cf0)},249,5}, + {CNST_LIMB(0x2925e3d5425d41),{CNST_LIMB(0x8e2c20d6f8f795ce),10,CNST_LIMB(0x1c5f29cb4c13c8),CNST_LIMB(0x15e11f6e5f634),CNST_LIMB(0xb32166d7982b3),CNST_LIMB(0xa636cf5c4f642),CNST_LIMB(0x28f997d81938bc)},254,5}, + {CNST_LIMB(0x2f39e99d11c26d),{CNST_LIMB(0x5aed08e710697213),10,CNST_LIMB(0x213b4a00c79b71),CNST_LIMB(0x1bd2737e294111),CNST_LIMB(0xd01c8aaaae314),CNST_LIMB(0xb00f1e27ed99e),CNST_LIMB(0x1d21748adab7e4)},259,5}, + {CNST_LIMB(0x3502a3ce62a769),{CNST_LIMB(0x35126ab40383fc5c),10,CNST_LIMB(0xf411f8bafb90c),CNST_LIMB(0x1fa38c975e6347),CNST_LIMB(0xf4058b043df4e),CNST_LIMB(0x2af2733656b159),CNST_LIMB(0x196e94f446c597)},264,5}, + {CNST_LIMB(0x3b357b23b014b1),{CNST_LIMB(0x14b711563eba7d77),10,CNST_LIMB(0x32f1ffd1469b4e),CNST_LIMB(0x197f48859c01a3),CNST_LIMB(0x29509dc5352d40),CNST_LIMB(0x335e5c9ef5d7fe),CNST_LIMB(0x284e1a5376a683)},269,5}, + {CNST_LIMB(0x420d06773114d3),{CNST_LIMB(0xf01a36d7bbf66dfc),9,CNST_LIMB(0xd86f221cf4e60),CNST_LIMB(0x728955d2f4a8d),CNST_LIMB(0x1a631ed35adca5),CNST_LIMB(0x2d592810a2cd39),CNST_LIMB(0x1215b15f856f68)},274,5}, + {CNST_LIMB(0x4c19f733c90d09),{CNST_LIMB(0xae954f9b28df48d8),9,CNST_LIMB(0xcab96d4cf28bb),CNST_LIMB(0x42b5fc3fd6e7ec),CNST_LIMB(0x2b7f897adc30de),CNST_LIMB(0x1a97bb06e110c0),CNST_LIMB(0x304db431256118)},279,5}, + {CNST_LIMB(0x52f224bf890ffd),{CNST_LIMB(0x8b0d84b8653cb09f),9,CNST_LIMB(0x8c298ef08a942),CNST_LIMB(0x2999ac4ebb9e26),CNST_LIMB(0x3dd9eb9ca2c026),CNST_LIMB(0x43401c4563f790),CNST_LIMB(0x38d5e8bf6d2c89)},284,5}, + {CNST_LIMB(0x5bf703dda941b1),{CNST_LIMB(0x644f51d4add132a4),9,CNST_LIMB(0x38fd3f81414bb8),CNST_LIMB(0x20049119d93b7c),CNST_LIMB(0x4e479d97844206),CNST_LIMB(0x294a3066f3b775),CNST_LIMB(0x1c21bda84cf2fc)},289,5}, + {CNST_LIMB(0x68cf321fe6202f),{CNST_LIMB(0x38a4d27caeef8e91),9,CNST_LIMB(0x1e26a01f2b6d41),CNST_LIMB(0x9e9e8993d282b),CNST_LIMB(0x417ad2819cd4fb),CNST_LIMB(0x627fb183ab0b1a),CNST_LIMB(0x278b9f029564e7)},294,5}, + {CNST_LIMB(0x71dad4e06cde9b),{CNST_LIMB(0x1fce1dcd4eb47a27),9,CNST_LIMB(0x457bdbeb7801db),CNST_LIMB(0x1f2b3df5db8f09),CNST_LIMB(0x2149ca25813ef0),CNST_LIMB(0x17d20c710e4487),CNST_LIMB(0x40ceb8ee4ca73d)},299,5}, + {CNST_LIMB(0x7b5e9ca091c63d),{CNST_LIMB(0x99bc23041414782),9,CNST_LIMB(0x1ac11ef1a1cf79),CNST_LIMB(0x313f0652fefffc),CNST_LIMB(0x12f34ea4e7a5db),CNST_LIMB(0x2aa2b3b3300bfd),CNST_LIMB(0x3245caffd0690c)},304,5}, + {CNST_LIMB(0x892f2017af4a77),{CNST_LIMB(0xddb91a666e887a07),8,CNST_LIMB(0x633133de624045),CNST_LIMB(0x7f207860875935),CNST_LIMB(0x702aff29ff7777),CNST_LIMB(0x1cc53fa2f53db9),CNST_LIMB(0x2c5ff88b6e27ee)},309,5}, + {CNST_LIMB(0x93efab3d98e265),{CNST_LIMB(0xbb00736076c6c8fc),8,CNST_LIMB(0x42ac68703b39),CNST_LIMB(0x4d4d015d5d1bd7),CNST_LIMB(0x85c801afb0f411),CNST_LIMB(0x4579d8022d0a69),CNST_LIMB(0x32ea2e520e3d23)},314,5}, + {CNST_LIMB(0x9fd1e9a289b8f9),{CNST_LIMB(0x9a0fb77008192e78),8,CNST_LIMB(0x9cfd1af6dc136),CNST_LIMB(0x23a28bc352c87c),CNST_LIMB(0x582383446e53c2),CNST_LIMB(0x3d52e0695b07e4),CNST_LIMB(0x83c6fc0e7cfd23)},319,5}, + {CNST_LIMB(0xb3ffc82a3b00bb),{CNST_LIMB(0x6c17325c7676de1f),8,CNST_LIMB(0x104f63f41af61c),CNST_LIMB(0x838ff92da5d267),CNST_LIMB(0xb37001a22f0194),CNST_LIMB(0x4487295b668b16),CNST_LIMB(0xa06ce4ed65729d)},324,5}, + {CNST_LIMB(0xc78aab3260ed67),{CNST_LIMB(0x486ec1d048657b5d),8,CNST_LIMB(0x5654a773cfd408),CNST_LIMB(0xb3f20a79edde43),CNST_LIMB(0xaebbd1a69724dd),CNST_LIMB(0x81191f0503a9),CNST_LIMB(0x3b54fc6e1ed034)},329,5}, + {CNST_LIMB(0xd8b06a4b9eddc9),{CNST_LIMB(0x2e7147c081441aeb),8,CNST_LIMB(0x5fe29aca965ce2),CNST_LIMB(0x9cb19caad665ca),CNST_LIMB(0x147b04c65844fd),CNST_LIMB(0x7a1c878be8db45),CNST_LIMB(0x8f4f4d51c80dfd)},334,5}, + {CNST_LIMB(0xe8f35bfe49ae4b),{CNST_LIMB(0x19547b44fa632b82),8,CNST_LIMB(0x4ce005e11fafad),CNST_LIMB(0x57f2d94de4ea00),CNST_LIMB(0xb885b9e976e473),CNST_LIMB(0x1eb25c197e9b39),CNST_LIMB(0xe2c45221f5cdb7)},339,5}, + {CNST_LIMB(0xfcff7f19788a27),{CNST_LIMB(0x3099f4bf7423272),8,CNST_LIMB(0x982693b0c3a8b),CNST_LIMB(0xa6eee9dce0fc63),CNST_LIMB(0xf1290f2b74223c),CNST_LIMB(0x36c85e11826e0b),CNST_LIMB(0xbe15668a4d3771)},344,5}, + {CNST_LIMB(0x10f681c21a80325),{CNST_LIMB(0xe2ef902951d2322d),7,CNST_LIMB(0x7efd8450d50a2b),CNST_LIMB(0x37c115b60abfde),CNST_LIMB(0x4a31517b3a2c0),CNST_LIMB(0x8ee426b2c25e26),CNST_LIMB(0xaf5e09c0582f8)},349,5}, + {CNST_LIMB(0x11ffa8ecf7814fb),{CNST_LIMB(0xc7250b86192832ab),7,CNST_LIMB(0xa4d35e0885656f),CNST_LIMB(0x6d14e9be5101ec),CNST_LIMB(0x93b36726a244a),CNST_LIMB(0xb56f38bde55186),CNST_LIMB(0x11443988cbd610f)},354,5}, + {CNST_LIMB(0x139b8ddf439b133),{CNST_LIMB(0xa1cbe52ffcdca969),7,CNST_LIMB(0x119cba991200690),CNST_LIMB(0xa8a1be12145159),CNST_LIMB(0x49831f7f1eb091),CNST_LIMB(0x5fe3a0bd210422),CNST_LIMB(0x11b90612ebf719f)},359,5}, + {CNST_LIMB(0x15b90aaef040351),{CNST_LIMB(0x791d6da971f79fb1),7,CNST_LIMB(0xc1c278790d9084),CNST_LIMB(0xa6bc771172ca70),CNST_LIMB(0x1219044d36b161b),CNST_LIMB(0x9363a00d9d3f5f),CNST_LIMB(0x14079ec2a37ea93)},364,5}, + {CNST_LIMB(0x17d664f86c88bd3),{CNST_LIMB(0x57a9176de3f40918),7,CNST_LIMB(0x13ca8e0f80a9a0f),CNST_LIMB(0xfc1ecc66c0c93b),CNST_LIMB(0x15be6192051cb1a),CNST_LIMB(0x136f263b7a50fcc),CNST_LIMB(0x3820db8623a7)},369,5}, + {CNST_LIMB(0x1a44cc5ef4c16b5),{CNST_LIMB(0x37da80020a7d1f74),7,CNST_LIMB(0x18584281cee4069),CNST_LIMB(0x178a63d22596ba9),CNST_LIMB(0x6739c7c5ac4f2d),CNST_LIMB(0x14c57a38e4d612a),CNST_LIMB(0x13d2e7fd35623ae)},374,5}, + {CNST_LIMB(0x1ca80b29773de79),{CNST_LIMB(0x1dde9f723a4f55dc),7,CNST_LIMB(0x1ac9ceffdba98e2),CNST_LIMB(0xf4618a5f0fdaa9),CNST_LIMB(0x17b96b4ded53ebb),CNST_LIMB(0x7faf749bdd9cb1),CNST_LIMB(0xfa9d50111fc549)},379,5}, + {CNST_LIMB(0x1e7b019a7fa8931),{CNST_LIMB(0xcc3160c520cdb96),7,CNST_LIMB(0xb9d29212dc305a),CNST_LIMB(0x91586fa7d2facc),CNST_LIMB(0x2638c4c9135f19),CNST_LIMB(0x1c315565816b84a),CNST_LIMB(0xa92e9c918ad70f)},384,5}, + {CNST_LIMB(0x1fd932c2a6c3463),{CNST_LIMB(0x137e41a0c0b8d4f),7,CNST_LIMB(0x13669eac9e5ce80),CNST_LIMB(0x94dc55b30276b5),CNST_LIMB(0x1c52a400cc7dae6),CNST_LIMB(0x1cd876c8023e81b),CNST_LIMB(0x8e06dbbb7e4c2d)},389,5}, + {CNST_LIMB(0x2175e8bd7050e79),{CNST_LIMB(0xe9a698d03a5e604b),6,CNST_LIMB(0xdcf15b87971a56),CNST_LIMB(0x2e9e439e7517fb),CNST_LIMB(0x85bbfca7ac6da9),CNST_LIMB(0x500c9508abde31),CNST_LIMB(0x1c9d7aa292a48b0)},394,5}, + {CNST_LIMB(0x24033b205fe4527),{CNST_LIMB(0xc6f39cee1695e79a),6,CNST_LIMB(0x1a92e6b5ac379c9),CNST_LIMB(0x1f1b86c0e7f8d15),CNST_LIMB(0x1e362d27d79fda9),CNST_LIMB(0x4dcd13ebf2a00a),CNST_LIMB(0x408b8bd354f1b4)},399,5}, + {CNST_LIMB(0x265d2eb09cdc073),{CNST_LIMB(0xab112e468a91ceb0),6,CNST_LIMB(0x1d6aaadf0ce5062),CNST_LIMB(0x8cb5be41003782),CNST_LIMB(0x52b9980c0c4bec),CNST_LIMB(0x2228f2e6cbe8667),CNST_LIMB(0xca6f7400df044e)},404,5}, + {CNST_LIMB(0x2953a0e65ca6a1d),{CNST_LIMB(0x8c7372d9ab5569c1),6,CNST_LIMB(0x4a8c6ea2b8f6c9),CNST_LIMB(0x3588f2393801ce),CNST_LIMB(0x1fce38ab648e336),CNST_LIMB(0x89544c1c4d5e80),CNST_LIMB(0x6e5d409692ed37)},409,5}, + {CNST_LIMB(0x2c67f25a6bc9c63),{CNST_LIMB(0x70f57416f0cce89e),6,CNST_LIMB(0xaa4e781437cc6c),CNST_LIMB(0x1c38f9d456ca8d),CNST_LIMB(0x2682eae3a0afadb),CNST_LIMB(0x2b54835e8a4f4ca),CNST_LIMB(0x1ff894f600fa94f)},414,5}, + {CNST_LIMB(0x2fdd1a7524ae76d),{CNST_LIMB(0x564e31abce2eba47),6,CNST_LIMB(0x1b96371ad2128cf),CNST_LIMB(0x35309a6895ab0d),CNST_LIMB(0x14de5531da96df1),CNST_LIMB(0x3a924ccc42ac90),CNST_LIMB(0x315a6b9b99a595)},419,5}, + {CNST_LIMB(0x33770e6e18aeb53),{CNST_LIMB(0x3e5a14fd0434a100),6,CNST_LIMB(0x1e428c066216163),CNST_LIMB(0x93d03854bffefa),CNST_LIMB(0x77e62b6df8d4a1),CNST_LIMB(0x8a8b138bb2ed69),CNST_LIMB(0x292d249664af8db)},424,5}, + {CNST_LIMB(0x379c7dff6334d3b),{CNST_LIMB(0x269dcc0c8d56e875),6,CNST_LIMB(0x2460122cb5efa2d),CNST_LIMB(0x28e51e3c7265f2e),CNST_LIMB(0x1efacb51926e686),CNST_LIMB(0xfc8248ae79bd5f),CNST_LIMB(0x2f3b91b1fe1f65)},429,5}, + {CNST_LIMB(0x3b82f15f7249c49),{CNST_LIMB(0x134ee332d51f0306),6,CNST_LIMB(0x3137e2a5a467c9c),CNST_LIMB(0x79d488798b4960),CNST_LIMB(0xb436578d1069bb),CNST_LIMB(0x10ad84e585582d0),CNST_LIMB(0x3215616c9b153bf)},434,5}, + {CNST_LIMB(0x3fff4dd17ad4ff9),{CNST_LIMB(0x2c8c1d50d30af),6,CNST_LIMB(0x2c8ba14ac01c0),CNST_LIMB(0x2bd06852b51e327),CNST_LIMB(0x30714e5452d2c1),CNST_LIMB(0x327ff42efc6d9c),CNST_LIMB(0x244bb5001864710)},439,5}, + {CNST_LIMB(0x465670cc294b181),{CNST_LIMB(0xd1ddf947b9d55be0),5,CNST_LIMB(0x106a71bea4fc8c6),CNST_LIMB(0xa255b26c45d27f),CNST_LIMB(0x460d26a6240e466),CNST_LIMB(0x1dda425d1868b60),CNST_LIMB(0x3d6eff8580e97e1)},444,5}, + {CNST_LIMB(0x4aaaab2fe3fee47),{CNST_LIMB(0xb6db6aa7d3a37a63),5,CNST_LIMB(0x3fffe3e5e83bd06),CNST_LIMB(0xa8a65f30809160),CNST_LIMB(0xbfd8fef4142370),CNST_LIMB(0x358c77f78c2a4d0),CNST_LIMB(0x3a89f0ee6796b95)},449,5}, + {CNST_LIMB(0x4f8bbff17c95ef7),{CNST_LIMB(0x9bf032ee57751395),5,CNST_LIMB(0x2728c2e42e214cb),CNST_LIMB(0x37fb2686e89761e),CNST_LIMB(0x4a264029edea029),CNST_LIMB(0x1d504d3aecaaa50),CNST_LIMB(0x45b5a7b35031756)},454,5}, + {CNST_LIMB(0x553ea1ce3216691),{CNST_LIMB(0x806643148e9063ef),5,CNST_LIMB(0x441a9569bcc4d0),CNST_LIMB(0x535ae4be3f071a1),CNST_LIMB(0x545a793067e09d8),CNST_LIMB(0xd5d15c09afe8cd),CNST_LIMB(0x4534c23a01c6a96)},459,5}, + {CNST_LIMB(0x59f7c9a4fefb517),{CNST_LIMB(0x6c37fd6421ef50ed),5,CNST_LIMB(0x2f718dff2dd2af5),CNST_LIMB(0x4aea82d40c5cc72),CNST_LIMB(0x4f7cec2a6861199),CNST_LIMB(0xe868a369a42529),CNST_LIMB(0x40e610cd320b2f7)},464,5}, + {CNST_LIMB(0x5e8d3fa86f95521),{CNST_LIMB(0x5a8fc0667cc240fe),5,CNST_LIMB(0x1e464eb541eb375),CNST_LIMB(0x3892fa43db27fd5),CNST_LIMB(0x4e5c7836ddc791a),CNST_LIMB(0x36e537bed96365e),CNST_LIMB(0x4375094ddcb8820)},469,5}, + {CNST_LIMB(0x64157c62c33e31d),{CNST_LIMB(0x4767bbee2675bc54),5,CNST_LIMB(0x5ca490917e48378),CNST_LIMB(0x11867a67aa79db0),CNST_LIMB(0x6198c4cbcaf84e6),CNST_LIMB(0x4338ebe5ab25fcf),CNST_LIMB(0x11e91c53e48fd1e)},474,5}, + {CNST_LIMB(0x6ceeed4c43f4183),{CNST_LIMB(0x2cced2b1dae4601a),5,CNST_LIMB(0x4177b3fa2db8811),CNST_LIMB(0x2b3db3648dc8a5),CNST_LIMB(0x50f060794aa127),CNST_LIMB(0x4f7cdc200df8c9a),CNST_LIMB(0x4525db055625df3)},479,5}, + {CNST_LIMB(0x7287ee7e5f96919),{CNST_LIMB(0x1e1b2205d593e3a6),5,CNST_LIMB(0x576a64b8ee6a195),CNST_LIMB(0x7bd2ea513c7027),CNST_LIMB(0x17c4152c6d55daa),CNST_LIMB(0x39f7aac6f902f57),CNST_LIMB(0x14765413bf9b5ca)},484,5}, + {CNST_LIMB(0x79886d10dfa5165),{CNST_LIMB(0xd9f57c223f379ca),5,CNST_LIMB(0x5569f0d32bb81fb),CNST_LIMB(0x6f08a7fc8e770a6),CNST_LIMB(0x2c14d325ec8479f),CNST_LIMB(0x4499d22e49d3c7),CNST_LIMB(0x53f1f1eecdc8c2)},489,5}, + {CNST_LIMB(0x7e13347ac1526bf),{CNST_LIMB(0x3e8a375cf0fb774),5,CNST_LIMB(0x3d9970a7d5b2820),CNST_LIMB(0x3664c9d670bba16),CNST_LIMB(0x6ba929ee3cbcd5c),CNST_LIMB(0xd5d262e6d92452),CNST_LIMB(0x2f545142add8d05)},494,5}, + {CNST_LIMB(0x8566f0377d15459),{CNST_LIMB(0xeb44411c1363bcf4),4,CNST_LIMB(0x5defd97f5781d92),CNST_LIMB(0x16eaae98cb00189),CNST_LIMB(0x986f4f6d77c243),CNST_LIMB(0x57c736925ddfd9),CNST_LIMB(0x10a756243dbe4ca)},499,5}, + {CNST_LIMB(0x8bfc83897e6cdaf),{CNST_LIMB(0xd428ea393317b9f2),4,CNST_LIMB(0x2465196cadab32d),CNST_LIMB(0x7594e9e684d904a),CNST_LIMB(0x19cd4a75383b2d1),CNST_LIMB(0x6a0e9c23f177e64),CNST_LIMB(0x56f0f2ae36c5465)},504,5}, + {CNST_LIMB(0x94ad790245385eb),{CNST_LIMB(0xb8cae8ae9a639526),4,CNST_LIMB(0x51b43cc2b30e037),CNST_LIMB(0x4cb133bb88b3adc),CNST_LIMB(0x3ede33df9c5e3e3),CNST_LIMB(0x665226a2d290ac4),CNST_LIMB(0x33db5ce835ec6e4)},509,5}, + {CNST_LIMB(0x9c30734d93b1379),{CNST_LIMB(0xa397f073b55bde0b),4,CNST_LIMB(0x23144a1f00005b6),CNST_LIMB(0x826ad253a3ed324),CNST_LIMB(0x940ad5d52b4806c),CNST_LIMB(0x1729e9d2d022730),CNST_LIMB(0x20a978fb381a6c2)},514,5}, + {CNST_LIMB(0xa57e1fd7a44fbb9),{CNST_LIMB(0x8c0164efd39df203),4,CNST_LIMB(0x7c2d03c898866a8),CNST_LIMB(0x4037558c6f1e4eb),CNST_LIMB(0x6694cdbbb8803c7),CNST_LIMB(0x99396c89bf97452),CNST_LIMB(0x436126c1b000fab)},519,5}, + {CNST_LIMB(0xaf9b9be9c8401d1),{CNST_LIMB(0x7531f66eca55c19b),4,CNST_LIMB(0x3904fdff023d639),CNST_LIMB(0x962f9b532413fb3),CNST_LIMB(0x27ec74df2758058),CNST_LIMB(0x5836483d1e34f66),CNST_LIMB(0x8384a37fad8866d)},524,5}, + {CNST_LIMB(0xb9ba711d6e4a84f),{CNST_LIMB(0x60dc0b5cc82154b3),4,CNST_LIMB(0x9fa47788598936),CNST_LIMB(0x82bd019c1fa5a56),CNST_LIMB(0x50db17c34711736),CNST_LIMB(0x739121f55c5b75d),CNST_LIMB(0x912fe4d49b6d56)},529,5}, + {CNST_LIMB(0xc41a8a6c63a70d1),{CNST_LIMB(0x4e30c99728e3c197),4,CNST_LIMB(0xaded2f8836f2fac),CNST_LIMB(0xab84ac5c6d525d9),CNST_LIMB(0x488aa0b1f301ccb),CNST_LIMB(0x5fdf2905d976ad6),CNST_LIMB(0x5cb75a7adbb8561)},534,5}, + {CNST_LIMB(0xcd79628a71801f7),{CNST_LIMB(0x3ef33887b9ad5b44),4,CNST_LIMB(0xbffdafb9937daab),CNST_LIMB(0x8c3722255b2b8c7),CNST_LIMB(0x63cd1bbc0e9c22a),CNST_LIMB(0xbd17bc2e12ad950),CNST_LIMB(0x15e9799e0d76f1e)},539,5}, + {CNST_LIMB(0xd6f67d4726eaaf5),{CNST_LIMB(0x30df0c865cc92a96),4,CNST_LIMB(0xbb4b3b81c94fd1),CNST_LIMB(0x2a20ca76128ce99),CNST_LIMB(0x4a4022bdd8f612e),CNST_LIMB(0x3bafa50d5be5f8b),CNST_LIMB(0xb86a67f06630908)},544,5}, + {CNST_LIMB(0xe5d3b047627f8e3),{CNST_LIMB(0x1d275ac8c78303ec),4,CNST_LIMB(0xbcf14b4275878ed),CNST_LIMB(0x5ee8b82b0662dd),CNST_LIMB(0x77e3de57e11f662),CNST_LIMB(0x5ed59e5dfb5cd16),CNST_LIMB(0xbe6a6366650aef1)},549,5}, + {CNST_LIMB(0xef42ae515bfb29d),{CNST_LIMB(0x11e922af2e24e769),4,CNST_LIMB(0x1c926c98e452393),CNST_LIMB(0xd26a458c9c34765),CNST_LIMB(0x5da54b52a8aa98a),CNST_LIMB(0xa2ed4f828338df7),CNST_LIMB(0xe69ac190926521a)},554,5}, + {CNST_LIMB(0xfd32459f0b3d4bb),{CNST_LIMB(0x2d5ace688e647e9),4,CNST_LIMB(0x2cdba60f4c2b450),CNST_LIMB(0x2577b742a8ed5db),CNST_LIMB(0x144ef4109272736),CNST_LIMB(0xbe9326c4f15e1a9),CNST_LIMB(0xb96de853277fb4f)},559,5}, + {CNST_LIMB(0x10a16ef6c96a16c7),{CNST_LIMB(0xec9602538c0df011),3,CNST_LIMB(0x68a7f8a32c8aa57),CNST_LIMB(0x1445e7d17b921f3),CNST_LIMB(0x81c8debc8176f0b),CNST_LIMB(0xe3a1c5b816e4a65),CNST_LIMB(0xa52ad5bb93c9f4b)},564,5}, + {CNST_LIMB(0x117c2fec47f5e013),{CNST_LIMB(0xd48355880989be17),3,CNST_LIMB(0xb356114108dbef6),CNST_LIMB(0xe7ddeca9ba6a20c),CNST_LIMB(0xf2d7618ea8a6953),CNST_LIMB(0x412256baaec5c27),CNST_LIMB(0x1f8e16ca6e5c0d7)},569,5}, + {CNST_LIMB(0x129a8c10ae1f364b),{CNST_LIMB(0xb857af53b5b43644),3,CNST_LIMB(0xe26e327286a3e31),CNST_LIMB(0xeef9d55a9d06dbf),CNST_LIMB(0xe61febd3beb02b6),CNST_LIMB(0x10d018a00b7fd6a5),CNST_LIMB(0x32009c46e7c1314)},574,5}, + {CNST_LIMB(0x134631392d507059),{CNST_LIMB(0xa9063d94bb92a978),3,CNST_LIMB(0x56f8018b2ea4b7b),CNST_LIMB(0x1270cb710b035935),CNST_LIMB(0x11033d859716c4f9),CNST_LIMB(0xd45bebac416a68c),CNST_LIMB(0xc08fe72fc6eef84)},579,5}, + {CNST_LIMB(0x13fde7755d5fd9ed),{CNST_LIMB(0x99c48a788248a856),3,CNST_LIMB(0x1019267f9f81c8e4),CNST_LIMB(0x394e4098ea8549),CNST_LIMB(0x33c85c2a1514436),CNST_LIMB(0xa1e569d4432f4bb),CNST_LIMB(0x128bfbc862fb3c58)},584,5}, + {CNST_LIMB(0x15698c0906cc26a5),{CNST_LIMB(0x7e957ed81f600c1e),3,CNST_LIMB(0x1476fb9cb53a56e9),CNST_LIMB(0xeff15504451beab),CNST_LIMB(0xdea55fc79c32599),CNST_LIMB(0x76a982d54d956a1),CNST_LIMB(0x4d131625675abd7)},589,5}, + {CNST_LIMB(0x168a1ee80f6d92f5),{CNST_LIMB(0x6b73459d204359d1),3,CNST_LIMB(0x810ac07564aaf79),CNST_LIMB(0x874d5996e15561a),CNST_LIMB(0xb75c73837694b49),CNST_LIMB(0xd4645617d29779b),CNST_LIMB(0x12af15ef931be940)},594,5}, + {CNST_LIMB(0x17daa6de32466fbf),{CNST_LIMB(0x576bc18853c72908),3,CNST_LIMB(0x11757b52093fa28a),CNST_LIMB(0xff4c0f212559944),CNST_LIMB(0x40af9872004a0a5),CNST_LIMB(0x2b2b7c424c54c2b),CNST_LIMB(0x1a2b7130739c4c7)},599,5}, + {CNST_LIMB(0x18ea5f2dbe212911),{CNST_LIMB(0x48ca86c98010be89),3,CNST_LIMB(0x6d8483692b46556),CNST_LIMB(0x305d89220ec48d2),CNST_LIMB(0x1772200dfc1938dc),CNST_LIMB(0xded80c44ca87607),CNST_LIMB(0xb498b0490dc55dd)},604,5}, + {CNST_LIMB(0x1a0fa1ef47787d1b),{CNST_LIMB(0x3a56b20c2d70e08a),3,CNST_LIMB(0x15734e967cc39a0d),CNST_LIMB(0x8fc968191dc0fd3),CNST_LIMB(0x1680d35f18721f8f),CNST_LIMB(0x197b4a3e18c9e8bc),CNST_LIMB(0xc0ad81d645f40c7)},609,5}, + {CNST_LIMB(0x1b673b66a023a93f),{CNST_LIMB(0x2af150ff9195ac0f),3,CNST_LIMB(0x95ee9645ebf0cc9),CNST_LIMB(0x1717202bbc3e0a78),CNST_LIMB(0x126d365df320adf6),CNST_LIMB(0x137d63165361ab0e),CNST_LIMB(0x19ca69d84cc1417c)},614,5}, + {CNST_LIMB(0x1ce34de10c258111),{CNST_LIMB(0x1b9430b6521be183),3,CNST_LIMB(0x18e590f79ed3f778),CNST_LIMB(0xbcbaeb9ec0a1624),CNST_LIMB(0x18f51ac04296ceb6),CNST_LIMB(0x161b15271d06a3e1),CNST_LIMB(0x5f0a62fb317dd86)},619,5}, + {CNST_LIMB(0x1e19674e354f4667),{CNST_LIMB(0x102a99b0acd64358),3,CNST_LIMB(0xf34c58e5585ccc8),CNST_LIMB(0x15fad9b7ef3a5cbd),CNST_LIMB(0x1874ea34e3e274f9),CNST_LIMB(0x841598977c90581),CNST_LIMB(0x1c04690158b888d)},624,5}, + {CNST_LIMB(0x1f3740adb603b24d),{CNST_LIMB(0x66e52892f80015e),3,CNST_LIMB(0x645fa924fe26d98),CNST_LIMB(0xc022a525d7f5a4f),CNST_LIMB(0x16d7e66846e5d65b),CNST_LIMB(0x10105a92c09c5aa9),CNST_LIMB(0xedddad56d23fc0e)},629,5}, + {CNST_LIMB(0x20e7b3c0e3b73671),{CNST_LIMB(0xf1eabc8c8352c9af),2,CNST_LIMB(0x19aa15b9c5fd82e9),CNST_LIMB(0x10fd7c871bd5d222),CNST_LIMB(0x4ee89a76e1259e0),CNST_LIMB(0x1280d75e6bf3c134),CNST_LIMB(0x85e103f1853c3d)},634,5}, + {CNST_LIMB(0x22b5b4fc40d4c35f),{CNST_LIMB(0xd807362226cc7e50),2,CNST_LIMB(0xd080d1a3a2ea867),CNST_LIMB(0x1f068368adc3fde1),CNST_LIMB(0x178240b1c3cf35a9),CNST_LIMB(0x1dc077b2ed00fd8c),CNST_LIMB(0x2e6e64a07f9c833)},639,5}, + {CNST_LIMB(0x23cff30e6fb8f7fd),{CNST_LIMB(0xc97f150b60a9e71b),2,CNST_LIMB(0x5505a9af1f13815),CNST_LIMB(0x22434bb477153d47),CNST_LIMB(0x87670d53a068a58),CNST_LIMB(0x21b754fa0ae7b745),CNST_LIMB(0x2182750984e9f50b)},644,5}, + {CNST_LIMB(0x266a30ee37cc7341),{CNST_LIMB(0xaa808f26b38df4ef),2,CNST_LIMB(0x1982da6ab1354c7a),CNST_LIMB(0xfda1381ca806f81),CNST_LIMB(0x1a31d30d06bd5b7b),CNST_LIMB(0xbc65e21d25000c6),CNST_LIMB(0x132d8167c6a0973b)},649,5}, + {CNST_LIMB(0x283e6bddfbebab6d),{CNST_LIMB(0x971e4733b2e0d2bf),2,CNST_LIMB(0xe8978cc1879fb72),CNST_LIMB(0x1c9e26afc4d767da),CNST_LIMB(0x1e376fcf488c8249),CNST_LIMB(0x977e63f145b0e1d),CNST_LIMB(0xe2db9891e737aa1)},654,5}, + {CNST_LIMB(0x298d29c47d06f16b),{CNST_LIMB(0x8a4e7f92da9842e7),2,CNST_LIMB(0x6b1056511d6577e),CNST_LIMB(0x592f6f3bbda49cc),CNST_LIMB(0x2692769f01fb0a5b),CNST_LIMB(0x5f3e5623e91d30d),CNST_LIMB(0x2104d5242a92b48d)},659,5}, + {CNST_LIMB(0x2afa8c16de374c13),{CNST_LIMB(0x7d364b6556c2b905),2,CNST_LIMB(0x291b438da8eb83a1),CNST_LIMB(0x14222ff3cbf7d671),CNST_LIMB(0x126ac7f90facd4d3),CNST_LIMB(0x46d452f540a8d2),CNST_LIMB(0xb0b0fc23426b0b7)},664,5}, + {CNST_LIMB(0x2c44b3413ab0dee7),{CNST_LIMB(0x721b37f337583151),2,CNST_LIMB(0x22a87fb9da8ba57d),CNST_LIMB(0x26943e2ad67b49d6),CNST_LIMB(0x1ef6cfa904bef1cd),CNST_LIMB(0x18e7d1baf5588938),CNST_LIMB(0x1ad24c5276c66d2f)},669,5}, + {CNST_LIMB(0x2e88fa7433ac7823),{CNST_LIMB(0x60141b17275393e2),2,CNST_LIMB(0x17531bbafda1a751),CNST_LIMB(0xf3ea18441a36068),CNST_LIMB(0x130110257a01259a),CNST_LIMB(0x14122cf2cde8eecc),CNST_LIMB(0x24d25acd522c56b7)},674,5}, + {CNST_LIMB(0x303fb77cc2bfe62b),{CNST_LIMB(0x539292e31ed6db25),2,CNST_LIMB(0xec16a9032408129),CNST_LIMB(0x22483ceeb16c18a3),CNST_LIMB(0x1dd1cf7128399e5a),CNST_LIMB(0x11b3d478af2cbe42),CNST_LIMB(0x2a86cb29ac9873d3)},679,5}, + {CNST_LIMB(0x32eeac8f8d221e55),{CNST_LIMB(0x41ae89b9e560d65a),2,CNST_LIMB(0x156a1323e556857),CNST_LIMB(0x865eccdcf192078),CNST_LIMB(0x29e9014382ce253e),CNST_LIMB(0x737a633527d55ef),CNST_LIMB(0xe3223c22b887658)},684,5}, + {CNST_LIMB(0x354d75b3270eaedd),{CNST_LIMB(0x336093f2bc204c55),2,CNST_LIMB(0x2aca293363c5448c),CNST_LIMB(0x17160152eb4aa39f),CNST_LIMB(0x16b50b70fa80acee),CNST_LIMB(0x2493bd25f34e1536),CNST_LIMB(0x18f710cf9496617c)},689,5}, + {CNST_LIMB(0x37b26a3f703f6027),{CNST_LIMB(0x2629d54caca5a93b),2,CNST_LIMB(0x213657023f027f64),CNST_LIMB(0x257ed9007720600c),CNST_LIMB(0xaf3dcc0f043ce98),CNST_LIMB(0x115787f3ada80173),CNST_LIMB(0x7071885da2772a7)},694,5}, + {CNST_LIMB(0x3a2d837d37f39e39),{CNST_LIMB(0x199e982941bda182),2,CNST_LIMB(0x1749f20b2031871c),CNST_LIMB(0x153d7d45eae3fbc6),CNST_LIMB(0x3035b3e81047b52f),CNST_LIMB(0x3096ed6d9a28fa5a),CNST_LIMB(0x221887c4142d7434)},699,5}, + {CNST_LIMB(0x3d6201596c85db3f),{CNST_LIMB(0xaea3e9ef4bf14aa),2,CNST_LIMB(0xa77fa9a4de89304),CNST_LIMB(0x140df851fb641569),CNST_LIMB(0x275b27f619d2cffb),CNST_LIMB(0x16df2d5134102662),CNST_LIMB(0x10ab318b9b8a8aef)},704,5}, + {CNST_LIMB(0x401080f68635f765),{CNST_LIMB(0xff7c1a4f020138fa),1,CNST_LIMB(0x3fce7d1c6d5e19d1),CNST_LIMB(0x1feb2b2abf929ebc),CNST_LIMB(0x279cb7a4291af740),CNST_LIMB(0x384bce4293f19637),CNST_LIMB(0x168a9776844c9b6f)},709,5}, + {CNST_LIMB(0x41c3dea2c7c4509b),{CNST_LIMB(0xf2421126ad7a2852),1,CNST_LIMB(0x3ab46417a8b30e2f),CNST_LIMB(0x35206295938b9c19),CNST_LIMB(0x317d8909a9980afe),CNST_LIMB(0x195b889376db752f),CNST_LIMB(0xeb8a8f47083a08e)},714,5}, + {CNST_LIMB(0x441255580dcabef7),{CNST_LIMB(0xe1601977719c2988),1,CNST_LIMB(0x33c8fff7d69fc31b),CNST_LIMB(0x3aa78ab59c61fb90),CNST_LIMB(0x3c41600b3a070fd7),CNST_LIMB(0x121266b65d774473),CNST_LIMB(0x5812c8f46959e7)},719,5}, + {CNST_LIMB(0x467e90ff075dfa77),{CNST_LIMB(0xd0d4ccbfd7fdb2ae),1,CNST_LIMB(0x2c844d02e9e6109b),CNST_LIMB(0x395a6f0c5abc0a3c),CNST_LIMB(0x30393c08245d18c3),CNST_LIMB(0xac042a1b1191d06),CNST_LIMB(0x1d0c88b0cc347eed)},724,5}, + {CNST_LIMB(0x35b7e6a52de6b),{CNST_LIMB(0x30ff8515bed6fc1f),14,CNST_LIMB(0x2f4533b937fab),CNST_LIMB(0xeb33cd2951b7),CNST_LIMB(0x28ce28b5e1739),CNST_LIMB(0x30d609f6bade3),CNST_LIMB(0x249a87bc9957)},729,4}, + {CNST_LIMB(0x4b9237b1fac55af1),{CNST_LIMB(0xb19ac3ed68fa0441),1,CNST_LIMB(0x1d4958ea0fafef2d),CNST_LIMB(0x4ba7c350e3c499e),CNST_LIMB(0xe26c59f6a4a42e5),CNST_LIMB(0x4acd391ac5c14c62),CNST_LIMB(0x38a0169051f4a371)},733,5}, + {CNST_LIMB(0x4fa265b31b73c6df),{CNST_LIMB(0x9b7b0be2fb2dbf62),1,CNST_LIMB(0x1118cee6ada4ab63),CNST_LIMB(0x2b4fe57f0434fb44),CNST_LIMB(0x2cffeb10b15bf6),CNST_LIMB(0xe12f06864906a7b),CNST_LIMB(0x2a0824475f11f823)},738,5}, + {CNST_LIMB(0x516d33f3efe608d5),{CNST_LIMB(0x926c85237f2dc355),1,CNST_LIMB(0xbb86424304de581),CNST_LIMB(0x3ec190a9cee7a48e),CNST_LIMB(0xd7d8bfe60d52602),CNST_LIMB(0xdff7561c9c07756),CNST_LIMB(0x3c1d2db82b327710)},743,5}, + {CNST_LIMB(0x545e342d68fbf683),{CNST_LIMB(0x8464ceb2fdd80297),1,CNST_LIMB(0x2e56377c50c1c77),CNST_LIMB(0x474ec2f4bd92576),CNST_LIMB(0x2a5da9663350db1),CNST_LIMB(0x220077cd63148dd2),CNST_LIMB(0x280dcbaf0c2ad61c)},748,5}, + {CNST_LIMB(0x57e94c457826bd6b),{CNST_LIMB(0x74bd3fdb5c8280eb),1,CNST_LIMB(0x502d67750fb2852a),CNST_LIMB(0x45149579eaa28023),CNST_LIMB(0x3bb53a4c0c4db579),CNST_LIMB(0x3a96a3180f221b2),CNST_LIMB(0x27f9af8526a8cf70)},753,5}, + {CNST_LIMB(0x5b9b45655ebf3b79),{CNST_LIMB(0x65b42a0f00510df2),1,CNST_LIMB(0x48c975354281890e),CNST_LIMB(0x2929df87cfd7453c),CNST_LIMB(0x1b6bb026965ae7ed),CNST_LIMB(0x52659a85b7df96c2),CNST_LIMB(0x21db715c0f72134)},758,5}, + {CNST_LIMB(0x5e6ad0d2eaa14c25),{CNST_LIMB(0x5b0e2387ccda26c3),1,CNST_LIMB(0x432a5e5a2abd67b6),CNST_LIMB(0x14b7571d1a05b77d),CNST_LIMB(0x498547c0b3350ce8),CNST_LIMB(0x9d4e28ce05c6c27),CNST_LIMB(0x4913b5ba5c5edc8)},763,5}, + {CNST_LIMB(0x60704759208cd21d),{CNST_LIMB(0x53c7ef8bdf16795b),1,CNST_LIMB(0x3f1f714dbee65bc6),CNST_LIMB(0x25fc61d1a473562),CNST_LIMB(0x158a2ce0171d5fd),CNST_LIMB(0x2f3bdc4b8520f24c),CNST_LIMB(0x4081386865e00703)},768,5}, + {CNST_LIMB(0x63bc6b32a19c883b),{CNST_LIMB(0x488c1dcdc113150a),1,CNST_LIMB(0x3887299abcc6ef8a),CNST_LIMB(0x2aab5731e10d2529),CNST_LIMB(0x5eeeb60320f0bef4),CNST_LIMB(0x18e4d9f1c279596e),CNST_LIMB(0xf478370d7e2465f)},773,5}, + {CNST_LIMB(0x47f6a9e8dab75),{CNST_LIMB(0xc7577d2a861d140e),13,CNST_LIMB(0x435dc14ffaf0e),CNST_LIMB(0x2557057e3745b),CNST_LIMB(0x450b5149277a6),CNST_LIMB(0xda1fae30c112),CNST_LIMB(0x3951ca3221a2d)},778,4}, + {CNST_LIMB(0x6e373b550764872f),{CNST_LIMB(0x294ecadbf29bc1cb),1,CNST_LIMB(0x23918955f136f1a2),CNST_LIMB(0x29cffcf11c6e3647),CNST_LIMB(0x4af7d1191966b3e0),CNST_LIMB(0x38ebd581ce6f80c6),CNST_LIMB(0x14ebbbc9200a6d59)},782,5}, + {CNST_LIMB(0x4ca8ed991d8b9),{CNST_LIMB(0xab7251b581f8c74d),13,CNST_LIMB(0x1639351769382),CNST_LIMB(0x3145f1b0a8e59),CNST_LIMB(0xff20704d1793),CNST_LIMB(0x1cd9e54d284e),CNST_LIMB(0x1602f3ac7db9c)},787,4}, + {CNST_LIMB(0x74b13dc12b016dc1),{CNST_LIMB(0x18ce87a5c4d39e85),1,CNST_LIMB(0x169d847da9fd247e),CNST_LIMB(0x286e093dede24bb5),CNST_LIMB(0x1854fa948ad9109d),CNST_LIMB(0x6b81a8b81781577c),CNST_LIMB(0xad44a3d15bc6be5)},791,5}, + {CNST_LIMB(0x78b0c5ae997e31ef),{CNST_LIMB(0xf811cf8a4bb1f80),1,CNST_LIMB(0xe9e74a2cd039c22),CNST_LIMB(0x30a04d242d0dfd11),CNST_LIMB(0x128fe81eea336414),CNST_LIMB(0x3639736d1defa144),CNST_LIMB(0x5eeb71b0497f58ff)},796,5}, + {CNST_LIMB(0x7dcf3e856f4612d7),{CNST_LIMB(0x47509bc7743383b),1,CNST_LIMB(0x46182f52173da52),CNST_LIMB(0x430e9fd64eeb40e6),CNST_LIMB(0x2774902fd5f53d5b),CNST_LIMB(0x4f5c0d7033943d05),CNST_LIMB(0x3be559075217f3a8)},801,5}, + {CNST_LIMB(0x550e24ca1a54b),{CNST_LIMB(0x81416693b884d74c),13,CNST_LIMB(0xee45b7c01c48),CNST_LIMB(0x3848946d8aec8),CNST_LIMB(0x541aec862a3ac),CNST_LIMB(0x4f2e818315dbc),CNST_LIMB(0xa8197f5fb2b)},806,4}, + {CNST_LIMB(0x573c8f376a18d),{CNST_LIMB(0x779f50fc3a19a6c9),13,CNST_LIMB(0x4fc81955d5129),CNST_LIMB(0xe80abe2896a1),CNST_LIMB(0x3a505801c159e),CNST_LIMB(0x162eeea75d4cd),CNST_LIMB(0x20dd0efbe8570)},810,4}, + {CNST_LIMB(0x589c3c614e917),{CNST_LIMB(0x71cc8c064f8788ee),13,CNST_LIMB(0x325d12375f7e1),CNST_LIMB(0x514f8f320e7d3),CNST_LIMB(0x55cf104cf51d3),CNST_LIMB(0x23278b29858c6),CNST_LIMB(0x3b956eecbdd30)},814,4}, + {CNST_LIMB(0x5a494bafe993d),{CNST_LIMB(0x6aef2ee9b04422dc),13,CNST_LIMB(0x5111950929bd7),CNST_LIMB(0x2c3779cd17b37),CNST_LIMB(0x2b7f886fc6966),CNST_LIMB(0x4f0b47ffa902d),CNST_LIMB(0x10bd268a51d6c)},818,4}, + {CNST_LIMB(0x5bdea84b0b73f),{CNST_LIMB(0x64adca063056bccb),13,CNST_LIMB(0x427b265a68455),CNST_LIMB(0x2ef4f15ac34a6),CNST_LIMB(0x493c4fd89b0ce),CNST_LIMB(0x7e61acb14b3a),CNST_LIMB(0x20d0328207c83)},822,4}, + {CNST_LIMB(0x5d4c55a25a945),{CNST_LIMB(0x5f37ce4e679bb0c3),13,CNST_LIMB(0x5b08caebb5502),CNST_LIMB(0x3d0eab29a51f1),CNST_LIMB(0x3c9ac2f5a187d),CNST_LIMB(0x29304bdf75a79),CNST_LIMB(0x14d681f7ea1f0)},826,4}, + {CNST_LIMB(0x5f286a042b527),{CNST_LIMB(0x585aa50035c6eb19),13,CNST_LIMB(0x1f74be8b4aa53),CNST_LIMB(0x47290f02b2679),CNST_LIMB(0x44c4bd1ee1378),CNST_LIMB(0x51286cbc40de1),CNST_LIMB(0xc379e189a860)},830,4}, + {CNST_LIMB(0x62521adc68615),{CNST_LIMB(0x4d46d1e25221a4ef),13,CNST_LIMB(0x53d112a3ea538),CNST_LIMB(0x26e6ad330e6d8),CNST_LIMB(0x56830d4191021),CNST_LIMB(0xed06536bee19),CNST_LIMB(0x5ba5998aa1cbd)},834,4}, + {CNST_LIMB(0x64f0108522a4b),{CNST_LIMB(0x44a2bea99b1fe52b),13,CNST_LIMB(0x22a1a59e3d4a4),CNST_LIMB(0x55422d57d71a4),CNST_LIMB(0x48b99527500ba),CNST_LIMB(0x5dffbfb3a890f),CNST_LIMB(0x618de61d17b82)},838,4}, + {CNST_LIMB(0x684eced8d04ad),{CNST_LIMB(0x3a25a4304e45cd70),13,CNST_LIMB(0x498e06ad4670c),CNST_LIMB(0x6397605c9b1d3),CNST_LIMB(0x1107048baaf16),CNST_LIMB(0x6292ac8aeb164),CNST_LIMB(0x4def8ba3a7552)},842,4}, + {CNST_LIMB(0x69e938da0b6b9),{CNST_LIMB(0x35644b98f3e9b802),13,CNST_LIMB(0x38dd6fce5c5b4),CNST_LIMB(0x6307e2db6000d),CNST_LIMB(0x56835d316819f),CNST_LIMB(0x2b1da7eb24a08),CNST_LIMB(0xf110b6d6a913)},846,4}, + {CNST_LIMB(0x6bf4be42947af),{CNST_LIMB(0x2f87eee6ccd631e7),13,CNST_LIMB(0x6b0e021f080f0),CNST_LIMB(0x4b469e0f2c53a),CNST_LIMB(0x50664c269b5e3),CNST_LIMB(0x4139b73b961d6),CNST_LIMB(0x13dc91bdbee0f)},850,4}, + {CNST_LIMB(0x6f54dbd6ccf57),{CNST_LIMB(0x26540878c92cd039),13,CNST_LIMB(0x382053afc295a),CNST_LIMB(0x2c8c19e89353d),CNST_LIMB(0x534384d9aa927),CNST_LIMB(0x249d03e328fc1),CNST_LIMB(0x2c57702938274)},854,4}, + {CNST_LIMB(0x71632fdcf6c15),{CNST_LIMB(0x20fdcdbf333d83af),13,CNST_LIMB(0x5242218aef575),CNST_LIMB(0x9ab7cecd8cd3),CNST_LIMB(0x4ea4e8bc18b4d),CNST_LIMB(0x16d9320fd98f4),CNST_LIMB(0x2d2b50a730c10)},858,4}, + {CNST_LIMB(0x7317fb257e1e1),{CNST_LIMB(0x1cb50c1361edfd6e),13,CNST_LIMB(0x489cb7c9fe32a),CNST_LIMB(0x258cf78a73422),CNST_LIMB(0x560fbee8c2cf2),CNST_LIMB(0x467156be8e294),CNST_LIMB(0xc593edc4d71f)},862,4}, + {CNST_LIMB(0x75e5d5c5e4577),{CNST_LIMB(0x15ef86e1cee16113),13,CNST_LIMB(0x6eece492ce925),CNST_LIMB(0x561b9134c02bf),CNST_LIMB(0x596b2a81ab56d),CNST_LIMB(0x296835004dd20),CNST_LIMB(0x3160915ef8c65)},866,4}, + {CNST_LIMB(0x788a813bc2fb1),{CNST_LIMB(0xfd74e4e944c107b),13,CNST_LIMB(0x6e15178139c26),CNST_LIMB(0x7828db84f90d2),CNST_LIMB(0x3e1e0cdc0bb1c),CNST_LIMB(0x4bbcd0685b013),CNST_LIMB(0x60b28bb37de31)},870,4}, + {CNST_LIMB(0x7b02c02e67beb),{CNST_LIMB(0xa621b97c2ae6cdb),13,CNST_LIMB(0x2068f6d99eb3c),CNST_LIMB(0x4ba3bacf8ed2f),CNST_LIMB(0x79baf6516f06a),CNST_LIMB(0x34fac2ffdfb3b),CNST_LIMB(0x601bda55ddca3)},874,4}, + {CNST_LIMB(0x7d0b0166731df),{CNST_LIMB(0x60dcab2ebe68654),13,CNST_LIMB(0x5a87235f786e1),CNST_LIMB(0x498c71a4f2c04),CNST_LIMB(0x6c4cf93aac90f),CNST_LIMB(0x2fc43a717ef2e),CNST_LIMB(0x61100c40f26dc)},878,4}, + {CNST_LIMB(0x7f65827009e4b),{CNST_LIMB(0x13671d16472022c),13,CNST_LIMB(0x66a0a221f20de),CNST_LIMB(0x1863cc32757a5),CNST_LIMB(0x72205d2b707de),CNST_LIMB(0x41eb3856479f4),CNST_LIMB(0x62a869dadecf2)},882,4}, + {CNST_LIMB(0x826267aca5d6b),{CNST_LIMB(0xf6a307f100c87643),12,CNST_LIMB(0x18b32a6e55cb2),CNST_LIMB(0x800c79d089746),CNST_LIMB(0x4df069eb6014f),CNST_LIMB(0xa67afd1d0f6b),CNST_LIMB(0x39654bc96e516)},886,4}, + {CNST_LIMB(0x854fadbb02f0d),{CNST_LIMB(0xeb99f80c181c04d8),12,CNST_LIMB(0x530f8982a799b),CNST_LIMB(0x488a5468d8f30),CNST_LIMB(0xcb498b28c81),CNST_LIMB(0x1d791c8466f6a),CNST_LIMB(0x583d384518de9)},890,4}, + {CNST_LIMB(0x86f75f67e5373),{CNST_LIMB(0xe592b4846fa38885),12,CNST_LIMB(0x16d1a804d8305),CNST_LIMB(0x3a9f7db1defba),CNST_LIMB(0x53fa43529d63d),CNST_LIMB(0x380980122856a),CNST_LIMB(0x59320408536cb)},894,4}, + {CNST_LIMB(0x89110415e014b),{CNST_LIMB(0xde220b6a3ca63611),12,CNST_LIMB(0x1183ea4dd5cca),CNST_LIMB(0x6cd0a51299316),CNST_LIMB(0x2c53d4f8b0ee6),CNST_LIMB(0x39ef54aed56eb),CNST_LIMB(0x7f71b2a9bf0fd)},898,4}, + {CNST_LIMB(0x8bbeefef93d97),{CNST_LIMB(0xd4f7338df110e1c1),12,CNST_LIMB(0x3ee5d151be367),CNST_LIMB(0x2e6b9dfc4bbcb),CNST_LIMB(0x225349b2e386e),CNST_LIMB(0x492ce15456b18),CNST_LIMB(0x856a0d6e68759)},902,4}, + {CNST_LIMB(0x8fa29248f38e9),{CNST_LIMB(0xc84479a2d3ad73b2),12,CNST_LIMB(0x282c97bed2bdc),CNST_LIMB(0x86b44220fa8e0),CNST_LIMB(0x497c548d39ada),CNST_LIMB(0x6928a8433805d),CNST_LIMB(0x1d2f77b091c29)},906,4}, + {CNST_LIMB(0x9311da8eb3ea1),{CNST_LIMB(0xbd9c9989aacc578d),12,CNST_LIMB(0x73d0b00fcee87),CNST_LIMB(0x44acd3ec00c9b),CNST_LIMB(0x3b8ead35b82f4),CNST_LIMB(0x7a1ca1fa55a8c),CNST_LIMB(0x98634149273d)},910,4}, + {CNST_LIMB(0x96fc1b51999b5),{CNST_LIMB(0xb20e950936df3d71),12,CNST_LIMB(0x899afa996b260),CNST_LIMB(0x2d7d06dae3233),CNST_LIMB(0x143e323027e28),CNST_LIMB(0x8483b9a26498e),CNST_LIMB(0x689b7b1e2fc91)},914,4}, + {CNST_LIMB(0x99d2dc5aa820b),{CNST_LIMB(0xaa0bd71d4333c056),12,CNST_LIMB(0x71d5124399b20),CNST_LIMB(0x62e94421a897f),CNST_LIMB(0x892c96c6ff4dc),CNST_LIMB(0x54dc6420d0ec4),CNST_LIMB(0x43a10331ebf4f)},918,4}, + {CNST_LIMB(0x9c18c1a21f755),{CNST_LIMB(0xa3d7a1305040e509),12,CNST_LIMB(0x4a6f652c96ebf),CNST_LIMB(0x92a1dbc9a1bc4),CNST_LIMB(0x7856fe0adb2e7),CNST_LIMB(0x65020d02f02aa),CNST_LIMB(0x7983e2f6dcbd)},922,4}, + {CNST_LIMB(0xa019a0d84ce05),{CNST_LIMB(0x99580856e1c2e36b),12,CNST_LIMB(0x5060429959a17),CNST_LIMB(0x8af3dd6c8fedb),CNST_LIMB(0x8521b97cefc72),CNST_LIMB(0x7289dc3848291),CNST_LIMB(0x51cb410c11cef)},926,4}, + {CNST_LIMB(0xa3837104af50b),{CNST_LIMB(0x90cc816ca127f31c),12,CNST_LIMB(0x7fcd3ea8e707c),CNST_LIMB(0x1ea9bdca73534),CNST_LIMB(0x3d0d37ad79bcf),CNST_LIMB(0x78befa2ea5ef8),CNST_LIMB(0x8c7846571c14b)},930,4}, + {CNST_LIMB(0xa74ba276e925b),{CNST_LIMB(0x87bcf3ca6aa1f420),12,CNST_LIMB(0x876dcb0272647),CNST_LIMB(0x63761f150b253),CNST_LIMB(0xa347a550c386b),CNST_LIMB(0xb7438cfe5ad4),CNST_LIMB(0x7bca2b8c0aabf)},934,4}, + {CNST_LIMB(0xad0c05b3ae661),{CNST_LIMB(0x7ab7cf1782b58dcf),12,CNST_LIMB(0x54750c4f56635),CNST_LIMB(0x2eac67167559c),CNST_LIMB(0x563c222f2aff7),CNST_LIMB(0x7b738313b7ac1),CNST_LIMB(0x65d997bccd9d9)},938,4}, + {CNST_LIMB(0xb0da5211cc3e7),{CNST_LIMB(0x72916ab867f7595c),12,CNST_LIMB(0xfa941ccadf01),CNST_LIMB(0x8d756d36295ea),CNST_LIMB(0x4f9f479e132fd),CNST_LIMB(0x18526df562fde),CNST_LIMB(0x434f07e1d9d33)},942,4}, + {CNST_LIMB(0xb36ca8c3991af),{CNST_LIMB(0x6d41bd767e129ba0),12,CNST_LIMB(0x13836edce5114),CNST_LIMB(0xa52c71bc138ab),CNST_LIMB(0x339d5f264e899),CNST_LIMB(0x65473fc2cfa57),CNST_LIMB(0x4714fd9da5ac0)},946,4}, + {CNST_LIMB(0xb6694790c60df),{CNST_LIMB(0x6746add17a9a2fee),12,CNST_LIMB(0x4c2521610f0f4),CNST_LIMB(0x1ef55755cab96),CNST_LIMB(0x3bb413c494cbb),CNST_LIMB(0x59bedca68abba),CNST_LIMB(0x618c95ba5598b)},950,4}, + {CNST_LIMB(0xb89a345c48d7d),{CNST_LIMB(0x6302ff6c309d06ee),12,CNST_LIMB(0x2296406fcba90),CNST_LIMB(0x4d697f4e83909),CNST_LIMB(0xa16067eedb775),CNST_LIMB(0xa50f824607f2b),CNST_LIMB(0x3d3946b54c9f9)},954,4}, + {CNST_LIMB(0xbb02a8b8a132b),{CNST_LIMB(0x5e70bfded3b337fc),12,CNST_LIMB(0x8c29c2d62d33),CNST_LIMB(0x3f082e296ef8f),CNST_LIMB(0x49afe57a19b90),CNST_LIMB(0xb7bd5be58da15),CNST_LIMB(0x8de61bd7e627f)},958,4}, + {CNST_LIMB(0xbd6468bb171ff),{CNST_LIMB(0x5a0880d51b052fd7),12,CNST_LIMB(0x64a7322bed5a0),CNST_LIMB(0x3f94ed2b89267),CNST_LIMB(0x980b9bde44b2d),CNST_LIMB(0x4a6676c0e7d13),CNST_LIMB(0xb24baad1f0c40)},962,4}, + {CNST_LIMB(0xc17671b548641),{CNST_LIMB(0x52c0b00a813a011e),12,CNST_LIMB(0x85095e7597d4),CNST_LIMB(0x55524352a702c),CNST_LIMB(0x868164742fab5),CNST_LIMB(0x3b3bcfdffb2cf),CNST_LIMB(0xab11b067d542f)},966,4}, + {CNST_LIMB(0xc57f07d496e1b),{CNST_LIMB(0x4bd58ed22f4b2aac),12,CNST_LIMB(0x449a9c42f9a11),CNST_LIMB(0x2b9c2279a88de),CNST_LIMB(0xa905cf41733e1),CNST_LIMB(0x206b2bfa8b896),CNST_LIMB(0xb378d16c66efd)},970,4}, + {CNST_LIMB(0xc814b88200ac3),{CNST_LIMB(0x478c251716699c98),12,CNST_LIMB(0x97df5b023b898),CNST_LIMB(0x5507d796eedc1),CNST_LIMB(0xb4a34312d58e3),CNST_LIMB(0x4324fc6d4f6f2),CNST_LIMB(0x29d3a7f3d88da)},974,4}, + {CNST_LIMB(0xcb958ba8e9259),{CNST_LIMB(0x41e93d5390ce4a3c),12,CNST_LIMB(0x75906ffdbe592),CNST_LIMB(0x35d1e8b619b02),CNST_LIMB(0x5535c122a3ba7),CNST_LIMB(0xb2c9d287f29c8),CNST_LIMB(0x7f9a7f1adf9d9)},978,4}, + {CNST_LIMB(0xcfaa956d67517),{CNST_LIMB(0x3b9549c76b39f2a8),12,CNST_LIMB(0x44a2e5454ad61),CNST_LIMB(0xa8d0541bab05b),CNST_LIMB(0x801e8693083d4),CNST_LIMB(0xc17c6af57bddf),CNST_LIMB(0xc7b4d9a0870d9)},982,4}, + {CNST_LIMB(0xd56380a0e8273),{CNST_LIMB(0x331ecd3feca3d608),12,CNST_LIMB(0xc5686ff8a7efd),CNST_LIMB(0x61e35c54a4f3f),CNST_LIMB(0x4bf5dc73ede0f),CNST_LIMB(0x2bf7f029f09a5),CNST_LIMB(0x718dc3463c882)},986,4}, + {CNST_LIMB(0xd9c8b65d94f5b),{CNST_LIMB(0x2cec062e71d179c4),12,CNST_LIMB(0xa3aaac38dbec6),CNST_LIMB(0x78cabf09fa56c),CNST_LIMB(0xcaf0fccc6b30b),CNST_LIMB(0xce30344eb1fac),CNST_LIMB(0x4ba46e5575b11)},990,4}, + {CNST_LIMB(0xdc90a482debcb),{CNST_LIMB(0x2920b89d6fc02e7f),12,CNST_LIMB(0x9f0f9b3b403a),CNST_LIMB(0x619327b332542),CNST_LIMB(0xa75eae1f8ff9f),CNST_LIMB(0x62350a1cba491),CNST_LIMB(0x22ac2e8eb19f9)},994,4}, + {CNST_LIMB(0xe0ac9922e6235),{CNST_LIMB(0x23b187206556b5c4),12,CNST_LIMB(0x157440c67a3c9),CNST_LIMB(0x696b5be3cc464),CNST_LIMB(0x2ebcde890e790),CNST_LIMB(0xae767f93832de),CNST_LIMB(0xcb1eade2d80a8)},998,4} +#endif diff --git a/vere/ext/gmp/gen/x86_64-linux/config.h b/vere/ext/gmp/gen/x86_64-linux/config.h new file mode 100644 index 0000000..47840ff --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/config.h @@ -0,0 +1,668 @@ +/* config.h. Generated from config.in by configure. */ +/* config.in. Generated from configure.ac by autoheader. */ + +/* + +Copyright 1996-2020 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + +or + + * the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any + later version. + +or both in parallel, as here. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library. If not, +see https://www.gnu.org/licenses/. +*/ + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* The gmp-mparam.h file (a string) the tune program should suggest updating. + */ +#define GMP_MPARAM_H_SUGGEST "./mpn/x86_64/k8/gmp-mparam.h" + +/* Define to 1 if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Define to 1 if alloca() works (via gmp-impl.h). */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((const)) */ +#define HAVE_ATTRIBUTE_CONST 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((malloc)) */ +#define HAVE_ATTRIBUTE_MALLOC 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((mode (XX))) + */ +#define HAVE_ATTRIBUTE_MODE 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((noreturn)) */ +#define HAVE_ATTRIBUTE_NORETURN 1 + +/* Define to 1 if you have the `attr_get' function. */ +/* #undef HAVE_ATTR_GET */ + +/* Define to 1 if tests/libtests has calling conventions checking for the CPU + */ +#define HAVE_CALLING_CONVENTIONS 1 + +/* Define to 1 if you have the `clock' function. */ +#define HAVE_CLOCK 1 + +/* Define to 1 if you have the `clock_gettime' function */ +#define HAVE_CLOCK_GETTIME 1 + +/* Define to 1 if you have the `cputime' function. */ +/* #undef HAVE_CPUTIME */ + +/* Define to 1 if you have the declaration of `fgetc', and to 0 if you don't. + */ +#define HAVE_DECL_FGETC 1 + +/* Define to 1 if you have the declaration of `fscanf', and to 0 if you don't. + */ +#define HAVE_DECL_FSCANF 1 + +/* Define to 1 if you have the declaration of `optarg', and to 0 if you don't. + */ +#define HAVE_DECL_OPTARG 1 + +/* Define to 1 if you have the declaration of `sys_errlist', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_ERRLIST 0 + +/* Define to 1 if you have the declaration of `sys_nerr', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_NERR 0 + +/* Define to 1 if you have the declaration of `ungetc', and to 0 if you don't. + */ +#define HAVE_DECL_UNGETC 1 + +/* Define to 1 if you have the declaration of `vfprintf', and to 0 if you + don't. */ +#define HAVE_DECL_VFPRINTF 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define one of the following to 1 for the format of a `double'. + If your format is not among these choices, or you don't know what it is, + then leave all undefined. + IEEE_LITTLE_SWAPPED means little endian, but with the two 4-byte halves + swapped, as used by ARM CPUs in little endian mode. */ +/* #undef HAVE_DOUBLE_IEEE_BIG_ENDIAN */ +#define HAVE_DOUBLE_IEEE_LITTLE_ENDIAN 1 +/* #undef HAVE_DOUBLE_IEEE_LITTLE_SWAPPED */ +/* #undef HAVE_DOUBLE_VAX_D */ +/* #undef HAVE_DOUBLE_VAX_G */ +/* #undef HAVE_DOUBLE_CRAY_CFP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define to 1 if you have the `getrusage' function. */ +#define HAVE_GETRUSAGE 1 + +/* Define to 1 if you have the `getsysinfo' function. */ +/* #undef HAVE_GETSYSINFO */ + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((visibility)) + and __attribute__ ((alias)) */ +#define HAVE_HIDDEN_ALIAS 1 + +/* Define one of these to 1 for the host CPU family. + If your CPU is not in any of these families, leave all undefined. + For an AMD64 chip, define "x86" in ABI=32, but not in ABI=64. */ +/* #undef HAVE_HOST_CPU_FAMILY_alpha */ +/* #undef HAVE_HOST_CPU_FAMILY_m68k */ +/* #undef HAVE_HOST_CPU_FAMILY_power */ +/* #undef HAVE_HOST_CPU_FAMILY_powerpc */ +/* #undef HAVE_HOST_CPU_FAMILY_x86 */ +#define HAVE_HOST_CPU_FAMILY_x86_64 1 + +/* Define one of the following to 1 for the host CPU, as per the output of + ./config.guess. If your CPU is not listed here, leave all undefined. */ +/* #undef HAVE_HOST_CPU_alphaev67 */ +/* #undef HAVE_HOST_CPU_alphaev68 */ +/* #undef HAVE_HOST_CPU_alphaev7 */ +/* #undef HAVE_HOST_CPU_m68020 */ +/* #undef HAVE_HOST_CPU_m68030 */ +/* #undef HAVE_HOST_CPU_m68040 */ +/* #undef HAVE_HOST_CPU_m68060 */ +/* #undef HAVE_HOST_CPU_m68360 */ +/* #undef HAVE_HOST_CPU_powerpc604 */ +/* #undef HAVE_HOST_CPU_powerpc604e */ +/* #undef HAVE_HOST_CPU_powerpc750 */ +/* #undef HAVE_HOST_CPU_powerpc7400 */ +/* #undef HAVE_HOST_CPU_supersparc */ +/* #undef HAVE_HOST_CPU_i386 */ +/* #undef HAVE_HOST_CPU_i586 */ +/* #undef HAVE_HOST_CPU_i686 */ +/* #undef HAVE_HOST_CPU_pentium */ +/* #undef HAVE_HOST_CPU_pentiummmx */ +/* #undef HAVE_HOST_CPU_pentiumpro */ +/* #undef HAVE_HOST_CPU_pentium2 */ +/* #undef HAVE_HOST_CPU_pentium3 */ +/* #undef HAVE_HOST_CPU_pentium4 */ +/* #undef HAVE_HOST_CPU_core2 */ +/* #undef HAVE_HOST_CPU_nehalem */ +/* #undef HAVE_HOST_CPU_westmere */ +/* #undef HAVE_HOST_CPU_sandybridge */ +/* #undef HAVE_HOST_CPU_ivybridge */ +/* #undef HAVE_HOST_CPU_haswell */ +/* #undef HAVE_HOST_CPU_broadwell */ +/* #undef HAVE_HOST_CPU_skylake */ +/* #undef HAVE_HOST_CPU_silvermont */ +/* #undef HAVE_HOST_CPU_goldmont */ +/* #undef HAVE_HOST_CPU_k8 */ +/* #undef HAVE_HOST_CPU_k10 */ +/* #undef HAVE_HOST_CPU_bulldozer */ +/* #undef HAVE_HOST_CPU_piledriver */ +/* #undef HAVE_HOST_CPU_steamroller */ +/* #undef HAVE_HOST_CPU_excavator */ +/* #undef HAVE_HOST_CPU_zen */ +/* #undef HAVE_HOST_CPU_bobcat */ +/* #undef HAVE_HOST_CPU_jaguar */ +/* #undef HAVE_HOST_CPU_s390_z900 */ +/* #undef HAVE_HOST_CPU_s390_z990 */ +/* #undef HAVE_HOST_CPU_s390_z9 */ +/* #undef HAVE_HOST_CPU_s390_z10 */ +/* #undef HAVE_HOST_CPU_s390_z196 */ + +/* Define to 1 iff we have a s390 with 64-bit registers. */ +/* #undef HAVE_HOST_CPU_s390_zarch */ + +/* Define to 1 if the system has the type `intmax_t'. */ +#define HAVE_INTMAX_T 1 + +/* Define to 1 if the system has the type `intptr_t'. */ +#define HAVE_INTPTR_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_INVENT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LANGINFO_H 1 + +/* Define one of these to 1 for the endianness of `mp_limb_t'. + If the endianness is not a simple big or little, or you don't know what + it is, then leave both undefined. */ +/* #undef HAVE_LIMB_BIG_ENDIAN */ +#define HAVE_LIMB_LITTLE_ENDIAN 1 + +/* Define to 1 if you have the `localeconv' function. */ +#define HAVE_LOCALECONV 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if the system has the type `long double'. */ +#define HAVE_LONG_DOUBLE 1 + +/* Define to 1 if the system has the type `long long'. */ +#define HAVE_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACHINE_HAL_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `mmap' function. */ +#define HAVE_MMAP 1 + +/* Define to 1 if you have the `mprotect' function. */ +#define HAVE_MPROTECT 1 + +/* Define to 1 each of the following for which a native (ie. CPU specific) + implementation of the corresponding routine exists. */ +#define HAVE_NATIVE_mpn_add_n 1 +/* #undef HAVE_NATIVE_mpn_add_n_sub_n */ +#define HAVE_NATIVE_mpn_add_nc 1 +#define HAVE_NATIVE_mpn_addaddmul_1msb0 1 +#define HAVE_NATIVE_mpn_addlsh1_n 1 +#define HAVE_NATIVE_mpn_addlsh2_n 1 +#define HAVE_NATIVE_mpn_addlsh_n 1 +/* #undef HAVE_NATIVE_mpn_addlsh1_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addmul_1c */ +#define HAVE_NATIVE_mpn_addmul_2 1 +/* #undef HAVE_NATIVE_mpn_addmul_3 */ +/* #undef HAVE_NATIVE_mpn_addmul_4 */ +/* #undef HAVE_NATIVE_mpn_addmul_5 */ +/* #undef HAVE_NATIVE_mpn_addmul_6 */ +/* #undef HAVE_NATIVE_mpn_addmul_7 */ +/* #undef HAVE_NATIVE_mpn_addmul_8 */ +/* #undef HAVE_NATIVE_mpn_addmul_2s */ +#define HAVE_NATIVE_mpn_and_n 1 +#define HAVE_NATIVE_mpn_andn_n 1 +#define HAVE_NATIVE_mpn_bdiv_dbm1c 1 +#define HAVE_NATIVE_mpn_bdiv_q_1 1 +#define HAVE_NATIVE_mpn_pi1_bdiv_q_1 1 +#define HAVE_NATIVE_mpn_cnd_add_n 1 +#define HAVE_NATIVE_mpn_cnd_sub_n 1 +#define HAVE_NATIVE_mpn_com 1 +#define HAVE_NATIVE_mpn_copyd 1 +#define HAVE_NATIVE_mpn_copyi 1 +#define HAVE_NATIVE_mpn_div_qr_1n_pi1 1 +/* #undef HAVE_NATIVE_mpn_div_qr_2 */ +#define HAVE_NATIVE_mpn_divexact_1 1 +/* #undef HAVE_NATIVE_mpn_divexact_by3c */ +#define HAVE_NATIVE_mpn_divrem_1 1 +/* #undef HAVE_NATIVE_mpn_divrem_1c */ +#define HAVE_NATIVE_mpn_divrem_2 1 +/* #undef HAVE_NATIVE_mpn_gcd_1 */ +#define HAVE_NATIVE_mpn_gcd_11 1 +#define HAVE_NATIVE_mpn_gcd_22 1 +#define HAVE_NATIVE_mpn_hamdist 1 +#define HAVE_NATIVE_mpn_invert_limb 1 +#define HAVE_NATIVE_mpn_ior_n 1 +#define HAVE_NATIVE_mpn_iorn_n 1 +#define HAVE_NATIVE_mpn_lshift 1 +#define HAVE_NATIVE_mpn_lshiftc 1 +/* #undef HAVE_NATIVE_mpn_lshsub_n */ +/* #undef HAVE_NATIVE_mpn_mod_1 */ +#define HAVE_NATIVE_mpn_mod_1_1p 1 +/* #undef HAVE_NATIVE_mpn_mod_1c */ +#define HAVE_NATIVE_mpn_mod_1s_2p 1 +#define HAVE_NATIVE_mpn_mod_1s_4p 1 +#define HAVE_NATIVE_mpn_mod_34lsub1 1 +#define HAVE_NATIVE_mpn_modexact_1_odd 1 +#define HAVE_NATIVE_mpn_modexact_1c_odd 1 +#define HAVE_NATIVE_mpn_mul_1 1 +#define HAVE_NATIVE_mpn_mul_1c 1 +#define HAVE_NATIVE_mpn_mul_2 1 +/* #undef HAVE_NATIVE_mpn_mul_3 */ +/* #undef HAVE_NATIVE_mpn_mul_4 */ +/* #undef HAVE_NATIVE_mpn_mul_5 */ +/* #undef HAVE_NATIVE_mpn_mul_6 */ +#define HAVE_NATIVE_mpn_mul_basecase 1 +#define HAVE_NATIVE_mpn_mullo_basecase 1 +#define HAVE_NATIVE_mpn_nand_n 1 +#define HAVE_NATIVE_mpn_nior_n 1 +#define HAVE_NATIVE_mpn_popcount 1 +#define HAVE_NATIVE_mpn_preinv_divrem_1 1 +/* #undef HAVE_NATIVE_mpn_preinv_mod_1 */ +#define HAVE_NATIVE_mpn_redc_1 1 +/* #undef HAVE_NATIVE_mpn_redc_2 */ +#define HAVE_NATIVE_mpn_rsblsh1_n 1 +#define HAVE_NATIVE_mpn_rsblsh2_n 1 +#define HAVE_NATIVE_mpn_rsblsh_n 1 +/* #undef HAVE_NATIVE_mpn_rsblsh1_nc */ +/* #undef HAVE_NATIVE_mpn_rsblsh2_nc */ +/* #undef HAVE_NATIVE_mpn_rsblsh_nc */ +#define HAVE_NATIVE_mpn_rsh1add_n 1 +#define HAVE_NATIVE_mpn_rsh1add_nc 1 +#define HAVE_NATIVE_mpn_rsh1sub_n 1 +#define HAVE_NATIVE_mpn_rsh1sub_nc 1 +#define HAVE_NATIVE_mpn_rshift 1 +/* #undef HAVE_NATIVE_mpn_sbpi1_bdiv_r */ +#define HAVE_NATIVE_mpn_sqr_basecase 1 +/* #undef HAVE_NATIVE_mpn_sqr_diagonal */ +#define HAVE_NATIVE_mpn_sqr_diag_addlsh1 1 +#define HAVE_NATIVE_mpn_sub_n 1 +#define HAVE_NATIVE_mpn_sub_nc 1 +#define HAVE_NATIVE_mpn_sublsh1_n 1 +/* #undef HAVE_NATIVE_mpn_sublsh2_n */ +/* #undef HAVE_NATIVE_mpn_sublsh_n */ +/* #undef HAVE_NATIVE_mpn_sublsh1_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh2_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh1_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh2_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh1_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh2_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_submul_1c */ +/* #undef HAVE_NATIVE_mpn_tabselect */ +/* #undef HAVE_NATIVE_mpn_udiv_qrnnd */ +/* #undef HAVE_NATIVE_mpn_udiv_qrnnd_r */ +/* #undef HAVE_NATIVE_mpn_umul_ppmm */ +/* #undef HAVE_NATIVE_mpn_umul_ppmm_r */ +#define HAVE_NATIVE_mpn_xor_n 1 +#define HAVE_NATIVE_mpn_xnor_n 1 + +/* Define to 1 if you have the `nl_langinfo' function. */ +#define HAVE_NL_LANGINFO 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NL_TYPES_H 1 + +/* Define to 1 if you have the `obstack_vprintf' function. */ +/* #define HAVE_OBSTACK_VPRINTF 1 */ + +/* Define to 1 if you have the `popen' function. */ +#define HAVE_POPEN 1 + +/* Define to 1 if you have the `processor_info' function. */ +/* #undef HAVE_PROCESSOR_INFO */ + +/* Define to 1 if `struct pst_processor' exists and contains + `psp_iticksperclktick'. */ +/* #undef HAVE_PSP_ITICKSPERCLKTICK */ + +/* Define to 1 if you have the `pstat_getprocessor' function. */ +/* #undef HAVE_PSTAT_GETPROCESSOR */ + +/* Define to 1 if the system has the type `ptrdiff_t'. */ +#define HAVE_PTRDIFF_T 1 + +/* Define to 1 if the system has the type `quad_t'. */ +#define HAVE_QUAD_T 1 + +/* Define to 1 if you have the `raise' function. */ +#define HAVE_RAISE 1 + +/* Define to 1 if you have the `read_real_time' function. */ +/* #undef HAVE_READ_REAL_TIME */ + +/* Define to 1 if you have the `sigaction' function. */ +#define HAVE_SIGACTION 1 + +/* Define to 1 if you have the `sigaltstack' function. */ +#define HAVE_SIGALTSTACK 1 + +/* Define to 1 if you have the `sigstack' function. */ +#define HAVE_SIGSTACK 1 + +/* Tune directory speed_cyclecounter, undef=none, 1=32bits, 2=64bits) */ +#define HAVE_SPEED_CYCLECOUNTER 2 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SSTREAM */ + +/* Define to 1 if the system has the type `stack_t'. */ +#define HAVE_STACK_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if the system has the type `std::locale'. */ +/* #undef HAVE_STD__LOCALE */ + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strnlen' function. */ +#define HAVE_STRNLEN 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the `sysconf' function. */ +#define HAVE_SYSCONF 1 + +/* Define to 1 if you have the `sysctl' function. */ +/* #undef HAVE_SYSCTL */ + +/* Define to 1 if you have the `sysctlbyname' function. */ +/* #undef HAVE_SYSCTLBYNAME */ + +/* Define to 1 if you have the `syssgi' function. */ +/* #undef HAVE_SYSSGI */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_ATTRIBUTES_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_IOGRAPH_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_MMAN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PROCESSOR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PSTAT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSCTL_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SYSINFO_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSSGI_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSTEMCFG_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `times' function. */ +#define HAVE_TIMES 1 + +/* Define to 1 if the system has the type `uint_least32_t'. */ +#define HAVE_UINT_LEAST32_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `vsnprintf' function and it works properly. */ +#define HAVE_VSNPRINTF 1 + +/* Define to 1 for Windos/64 */ +/* #undef HOST_DOS64 */ + +/* Assembler local label prefix */ +#define LSYM_PREFIX ".L" + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Define to 1 to disable the use of inline assembly */ +/* #undef NO_ASM */ + +/* Name of package */ +#define PACKAGE "gmp" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "gmp-bugs@gmplib.org, see https://gmplib.org/manual/Reporting-Bugs.html" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "GNU MP" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "GNU MP 6.2.1" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "gmp" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "http://www.gnu.org/software/gmp/" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "6.2.1" + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* The size of `mp_limb_t', as computed by sizeof. */ +#define SIZEOF_MP_LIMB_T 8 + +/* The size of `unsigned', as computed by sizeof. */ +#define SIZEOF_UNSIGNED 4 + +/* The size of `unsigned long', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_LONG 8 + +/* The size of `unsigned short', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_SHORT 2 + +/* The size of `void *', as computed by sizeof. */ +#define SIZEOF_VOID_P 8 + +/* Define to 1 if sscanf requires writable inputs */ +/* #undef SSCANF_WRITABLE_INPUT */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Maximum size the tune program can test for SQR_TOOM2_THRESHOLD */ +/* #undef TUNE_SQR_TOOM2_MAX */ + +/* Version number of package */ +#define VERSION "6.2.1" + +/* Define to 1 to enable ASSERT checking, per --enable-assert */ +/* #undef WANT_ASSERT */ + +/* Define to 1 to enable GMP_CPU_TYPE faking cpuid, per --enable-fake-cpuid */ +/* #undef WANT_FAKE_CPUID */ + +/* Define to 1 when building a fat binary. */ +/* #undef WANT_FAT_BINARY */ + +/* Define to 1 to enable FFTs for multiplication, per --enable-fft */ +#define WANT_FFT 1 + +/* Define to 1 to enable old mpn_mul_fft_full for multiplication, per + --enable-old-fft-full */ +/* #undef WANT_OLD_FFT_FULL */ + +/* Define to 1 if --enable-profiling=gprof */ +/* #undef WANT_PROFILING_GPROF */ + +/* Define to 1 if --enable-profiling=instrument */ +/* #undef WANT_PROFILING_INSTRUMENT */ + +/* Define to 1 if --enable-profiling=prof */ +/* #undef WANT_PROFILING_PROF */ + +/* Define one of these to 1 for the desired temporary memory allocation + method, per --enable-alloca. */ +#define WANT_TMP_ALLOCA 1 +/* #undef WANT_TMP_REENTRANT */ +/* #undef WANT_TMP_NOTREENTRANT */ +/* #undef WANT_TMP_DEBUG */ + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* Define to 1 if the assembler understands the mulx instruction */ +/* #undef X86_ASM_MULX */ + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +/* #undef YYTEXT_POINTER */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported directly. */ +#define restrict __restrict +/* Work around a bug in Sun C++: it does not support _Restrict or + __restrict__, even though the corresponding Sun C compiler ends up with + "#define restrict _Restrict" or "#define restrict __restrict__" in the + previous line. Perhaps some future version of Sun C++ will work with + restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ +#if defined __SUNPRO_CC && !defined __RESTRICT +# define _Restrict +# define __restrict__ +#endif + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +/* #undef volatile */ diff --git a/vere/ext/gmp/gen/x86_64-linux/fac_table.h b/vere/ext/gmp/gen/x86_64-linux/fac_table.h new file mode 100644 index 0000000..6708348 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/fac_table.h @@ -0,0 +1,49 @@ +/* This file is automatically generated by gen-fac.c */ + +#if GMP_NUMB_BITS != 64 +Error , error this data is for 64 GMP_NUMB_BITS only +#endif +/* This table is 0!,1!,2!,3!,...,n! where n! has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x2),CNST_LIMB(0x6),CNST_LIMB(0x18),CNST_LIMB(0x78),CNST_LIMB(0x2d0),CNST_LIMB(0x13b0),CNST_LIMB(0x9d80),CNST_LIMB(0x58980),CNST_LIMB(0x375f00),CNST_LIMB(0x2611500),CNST_LIMB(0x1c8cfc00),CNST_LIMB(0x17328cc00),CNST_LIMB(0x144c3b2800),CNST_LIMB(0x13077775800),CNST_LIMB(0x130777758000),CNST_LIMB(0x1437eeecd8000),CNST_LIMB(0x16beecca730000),CNST_LIMB(0x1b02b9306890000),CNST_LIMB(0x21c3677c82b40000) + +/* This table is 0!,1!,2!/2,3!/2,...,n!/2^sn where n!/2^sn is an */ +/* odd integer for each n, and n!/2^sn has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_ODD_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x3),CNST_LIMB(0x3),CNST_LIMB(0xf),CNST_LIMB(0x2d),CNST_LIMB(0x13b),CNST_LIMB(0x13b),CNST_LIMB(0xb13),CNST_LIMB(0x375f),CNST_LIMB(0x26115),CNST_LIMB(0x7233f),CNST_LIMB(0x5cca33),CNST_LIMB(0x2898765),CNST_LIMB(0x260eeeeb),CNST_LIMB(0x260eeeeb),CNST_LIMB(0x286fddd9b),CNST_LIMB(0x16beecca73),CNST_LIMB(0x1b02b930689),CNST_LIMB(0x870d9df20ad),CNST_LIMB(0xb141df4dae31),CNST_LIMB(0x79dd498567c1b),CNST_LIMB(0xaf2e19afc5266d),CNST_LIMB(0x20d8a4d0f4f7347),CNST_LIMB(0x335281867ec241ef) +#define ODD_FACTORIAL_TABLE_MAX CNST_LIMB(0x335281867ec241ef) +#define ODD_FACTORIAL_TABLE_LIMIT (25) + +/* Previous table, continued, values modulo 2^GMP_NUMB_BITS */ +#define ONE_LIMB_ODD_FACTORIAL_EXTTABLE CNST_LIMB(0x9b3093d46fdd5923),CNST_LIMB(0x5e1f9767cc5866b1),CNST_LIMB(0x92dd23d6966aced7),CNST_LIMB(0xa30d0f4f0a196e5b),CNST_LIMB(0x8dc3e5a1977d7755),CNST_LIMB(0x2ab8ce915831734b),CNST_LIMB(0x2ab8ce915831734b),CNST_LIMB(0x81d2a0bc5e5fdcab),CNST_LIMB(0x9efcac82445da75b),CNST_LIMB(0xbc8b95cf58cde171),CNST_LIMB(0xa0e8444a1f3cecf9),CNST_LIMB(0x4191deb683ce3ffd),CNST_LIMB(0xddd3878bc84ebfc7),CNST_LIMB(0xcb39a64b83ff3751),CNST_LIMB(0xf8203f7993fc1495),CNST_LIMB(0xbd2a2a78b35f4bdd),CNST_LIMB(0x84757be6b6d13921),CNST_LIMB(0x3fbbcfc0b524988b),CNST_LIMB(0xbd11ed47c8928df9),CNST_LIMB(0x3c26b59e41c2f4c5),CNST_LIMB(0x677a5137e883fdb3),CNST_LIMB(0xff74e943b03b93dd),CNST_LIMB(0xfe5ebbcb10b2bb97),CNST_LIMB(0xb021f1de3235e7e7),CNST_LIMB(0x33509eb2e743a58f),CNST_LIMB(0x390f9da41279fb7d),CNST_LIMB(0xe5cb0154f031c559),CNST_LIMB(0x93074695ba4ddb6d),CNST_LIMB(0x81c471caa636247f),CNST_LIMB(0xe1347289b5a1d749),CNST_LIMB(0x286f21c3f76ce2ff),CNST_LIMB(0xbe84a2173e8ac7),CNST_LIMB(0x1595065ca215b88b),CNST_LIMB(0xf95877595b018809),CNST_LIMB(0x9c2efe3c5516f887),CNST_LIMB(0x373294604679382b),CNST_LIMB(0xaf1ff7a888adcd35),CNST_LIMB(0x18ddf279a2c5800b),CNST_LIMB(0x18ddf279a2c5800b),CNST_LIMB(0x505a90e2542582cb),CNST_LIMB(0x5bacad2cd8d5dc2b),CNST_LIMB(0xfe3152bcbff89f41) +#define ODD_FACTORIAL_EXTTABLE_LIMIT (67) + +/* This table is 1!!,3!!,...,(2n+1)!! where (2n+1)!! has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_ODD_DOUBLEFACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x3),CNST_LIMB(0xf),CNST_LIMB(0x69),CNST_LIMB(0x3b1),CNST_LIMB(0x289b),CNST_LIMB(0x20fdf),CNST_LIMB(0x1eee11),CNST_LIMB(0x20dcf21),CNST_LIMB(0x27065f73),CNST_LIMB(0x33385d46f),CNST_LIMB(0x49a10615f9),CNST_LIMB(0x730b9982551),CNST_LIMB(0xc223930bef8b),CNST_LIMB(0x15fe07a85a22bf),CNST_LIMB(0x2a9c2ed62ea3521),CNST_LIMB(0x57e22099c030d941) +#define ODD_DOUBLEFACTORIAL_TABLE_MAX CNST_LIMB(0x57e22099c030d941) +#define ODD_DOUBLEFACTORIAL_TABLE_LIMIT (33) + +/* This table x_1, x_2,... contains values s.t. x_n^n has <= GMP_NUMB_BITS bits */ +#define NTH_ROOT_NUMB_MASK_TABLE (GMP_NUMB_MASK),CNST_LIMB(0xffffffff),CNST_LIMB(0x285145),CNST_LIMB(0xffff),CNST_LIMB(0x1bdb),CNST_LIMB(0x659),CNST_LIMB(0x235),CNST_LIMB(0xff) + +/* This table contains inverses of odd factorials, modulo 2^GMP_NUMB_BITS */ + +/* It begins with (2!/2)^-1=1 */ +#define ONE_LIMB_ODD_FACTORIAL_INVERSES_TABLE CNST_LIMB(0x1),CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0xeeeeeeeeeeeeeeef),CNST_LIMB(0x4fa4fa4fa4fa4fa5),CNST_LIMB(0x2ff2ff2ff2ff2ff3),CNST_LIMB(0x2ff2ff2ff2ff2ff3),CNST_LIMB(0x938cc70553e3771b),CNST_LIMB(0xb71c27cddd93e49f),CNST_LIMB(0xb38e3229fcdee63d),CNST_LIMB(0xe684bb63544a4cbf),CNST_LIMB(0xc2f684917ca340fb),CNST_LIMB(0xf747c9cba417526d),CNST_LIMB(0xbb26eb51d7bd49c3),CNST_LIMB(0xbb26eb51d7bd49c3),CNST_LIMB(0xb0a7efb985294093),CNST_LIMB(0xbe4b8c69f259eabb),CNST_LIMB(0x6854d17ed6dc4fb9),CNST_LIMB(0xe1aa904c915f4325),CNST_LIMB(0x3b8206df131cead1),CNST_LIMB(0x79c6009fea76fe13),CNST_LIMB(0xd8c5d381633cd365),CNST_LIMB(0x4841f12b21144677),CNST_LIMB(0x4a91ff68200b0d0f),CNST_LIMB(0x8f9513a58c4f9e8b),CNST_LIMB(0x2b3e690621a42251),CNST_LIMB(0x4f520f00e03c04e7),CNST_LIMB(0x2edf84ee600211d3),CNST_LIMB(0xadcaa2764aaacdfd),CNST_LIMB(0x161f4f9033f4fe63),CNST_LIMB(0x161f4f9033f4fe63),CNST_LIMB(0xbada2932ea4d3e03),CNST_LIMB(0xcec189f3efaa30d3),CNST_LIMB(0xf7475bb68330bf91),CNST_LIMB(0x37eb7bf7d5b01549),CNST_LIMB(0x46b35660a4e91555),CNST_LIMB(0xa567c12d81f151f7),CNST_LIMB(0x4c724007bb2071b1),CNST_LIMB(0xf4a0cce58a016bd),CNST_LIMB(0xfa21068e66106475),CNST_LIMB(0x244ab72b5a318ae1),CNST_LIMB(0x366ce67e080d0f23),CNST_LIMB(0xd666fdae5dd2a449),CNST_LIMB(0xd740ddd0acc06a0d),CNST_LIMB(0xb050bbbb28e6f97b),CNST_LIMB(0x70b003fe890a5c75),CNST_LIMB(0xd03aabff83037427),CNST_LIMB(0x13ec4ca72c783bd7),CNST_LIMB(0x90282c06afdbd96f),CNST_LIMB(0x4414ddb9db4a95d5),CNST_LIMB(0xa2c68735ae6832e9),CNST_LIMB(0xbf72d71455676665),CNST_LIMB(0xa8469fab6b759b7f),CNST_LIMB(0xc1e55b56e606caf9),CNST_LIMB(0x40455630fc4a1cff),CNST_LIMB(0x120a7b0046d16f7),CNST_LIMB(0xa7c3553b08faef23),CNST_LIMB(0x9f0bfd1b08d48639),CNST_LIMB(0xa433ffce9a304d37),CNST_LIMB(0xa22ad1d53915c683),CNST_LIMB(0xcb6cbc723ba5dd1d),CNST_LIMB(0x547fb1b8ab9d0ba3),CNST_LIMB(0x547fb1b8ab9d0ba3),CNST_LIMB(0x8f15a826498852e3) + +/* This table contains 2n-popc(2n) for small n */ + +/* It begins with 2-1=1 (n=1) */ +#define TABLE_2N_MINUS_POPC_2N 1,3,4,7,8,10,11,15,16,18,19,22,23,25,26,31,32,34,35,38,39,41,42,46,47,49,50,53,54,56,57,63,64,66,67,70,71,73,74,78 +#define TABLE_LIMIT_2N_MINUS_POPC_2N 81 +#define ODD_CENTRAL_BINOMIAL_OFFSET (13) + +/* This table contains binomial(2k,k)/2^t */ + +/* It begins with ODD_CENTRAL_BINOMIAL_TABLE_MIN */ +#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_TABLE CNST_LIMB(0x13d66b),CNST_LIMB(0x4c842f),CNST_LIMB(0x93ee7d),CNST_LIMB(0x11e9e123),CNST_LIMB(0x22c60053),CNST_LIMB(0x873ae4d1),CNST_LIMB(0x10757bd97),CNST_LIMB(0x80612c6cd),CNST_LIMB(0xfaa556bc1),CNST_LIMB(0x3d3cc24821),CNST_LIMB(0x77cfeb6bbb),CNST_LIMB(0x7550ebd97c7),CNST_LIMB(0xe5f08695caf),CNST_LIMB(0x386120ffce11),CNST_LIMB(0x6eabb28dd6df),CNST_LIMB(0x3658e31c82a8f),CNST_LIMB(0x6ad2050312783),CNST_LIMB(0x1a42902a5af0bf),CNST_LIMB(0x33ac44f881661d),CNST_LIMB(0xcb764f927d82123),CNST_LIMB(0x190c23fa46b93983),CNST_LIMB(0x62b7609e25caf1b9),CNST_LIMB(0xc29cb72925ef2cff) +#define ODD_CENTRAL_BINOMIAL_TABLE_LIMIT (35) + +/* This table contains the inverses of elements in the previous table. */ +#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_INVERSE_TABLE CNST_LIMB(0x61e5bd199bb12643),CNST_LIMB(0x78321494dc8342cf),CNST_LIMB(0x4fd348704ebf7ad5),CNST_LIMB(0x7e722ba086ab568b),CNST_LIMB(0xa5fcc124265843db),CNST_LIMB(0x89c4a6b18633f431),CNST_LIMB(0x4daa2c15f8ce9227),CNST_LIMB(0x801c618ca9be9605),CNST_LIMB(0x32dc192f948a441),CNST_LIMB(0xd02b90c2bf3be1),CNST_LIMB(0xd897e8c1749aa173),CNST_LIMB(0x54a234fc01fef9f7),CNST_LIMB(0x83ff2ab4d1ff7a4f),CNST_LIMB(0xa427f1c9b304e2f1),CNST_LIMB(0x9c14595d1793651f),CNST_LIMB(0x883a71c607a7b46f),CNST_LIMB(0xd089863c54bc9f2b),CNST_LIMB(0x9022f6bce5d07f3f),CNST_LIMB(0xbec207e218768c35),CNST_LIMB(0x9d70cb4cbb4f168b),CNST_LIMB(0x3c3d3403828a9d2b),CNST_LIMB(0x7672df58c56bc489),CNST_LIMB(0x1e66ca55d727d2ff) + +/* This table contains the values t in the formula binomial(2k,k)/2^t */ +#define CENTRAL_BINOMIAL_2FAC_TABLE 3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3 diff --git a/vere/ext/gmp/gen/x86_64-linux/fib_table.h b/vere/ext/gmp/gen/x86_64-linux/fib_table.h new file mode 100644 index 0000000..66ac4d6 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/fib_table.h @@ -0,0 +1,8 @@ +/* This file generated by gen-fib.c - DO NOT EDIT. */ + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +#define FIB_TABLE_LIMIT 93 +#define FIB_TABLE_LUCNUM_LIMIT 92 diff --git a/vere/ext/gmp/gen/x86_64-linux/mp_bases.h b/vere/ext/gmp/gen/x86_64-linux/mp_bases.h new file mode 100644 index 0000000..08ede78 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mp_bases.h @@ -0,0 +1,13 @@ +/* This file generated by gen-bases.c - DO NOT EDIT. */ + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +/* mp_bases[10] data, as literal values */ +#define MP_BASES_CHARS_PER_LIMB_10 19 +#define MP_BASES_BIG_BASE_CTZ_10 19 +#define MP_BASES_BIG_BASE_10 CNST_LIMB(0x8ac7230489e80000) +#define MP_BASES_BIG_BASE_INVERTED_10 CNST_LIMB(0xd83c94fb6d2ac34a) +#define MP_BASES_BIG_BASE_BINVERTED_10 CNST_LIMB(0x26b172506559ce15) +#define MP_BASES_NORMALIZATION_STEPS_10 0 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/add_err1_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/add_err1_n.s new file mode 100644 index 0000000..2cbba6a --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/add_err1_n.s @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_add_err1_n + .type __gmpn_add_err1_n,@function + +__gmpn_add_err1_n: + + mov 8(%rsp), %rax + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + lea (%rsi,%r9,8), %rsi + lea (%rdx,%r9,8), %rdx + lea (%rdi,%r9,8), %rdi + + mov %r9d, %r10d + and $3, %r10d + jz .L0mod4 + cmp $2, %r10d + jc .L1mod4 + jz .L2mod4 +.L3mod4: + xor %ebx, %ebx + xor %ebp, %ebp + xor %r10d, %r10d + xor %r11d, %r11d + lea -24(%r8,%r9,8), %r8 + neg %r9 + + shr $1, %al + mov (%rsi,%r9,8), %r14 + mov 8(%rsi,%r9,8), %r15 + adc (%rdx,%r9,8), %r14 + mov %r14, (%rdi,%r9,8) + cmovc 16(%r8), %rbx + adc 8(%rdx,%r9,8), %r15 + mov %r15, 8(%rdi,%r9,8) + cmovc 8(%r8), %r10 + mov 16(%rsi,%r9,8), %r14 + adc 16(%rdx,%r9,8), %r14 + mov %r14, 16(%rdi,%r9,8) + cmovc (%r8), %r11 + setc %al + add %r10, %rbx + adc $0, %rbp + add %r11, %rbx + adc $0, %rbp + + add $3, %r9 + jnz .Lloop + jmp .Lend + + .align 16, 0x90 +.L0mod4: + xor %ebx, %ebx + xor %ebp, %ebp + lea (%r8,%r9,8), %r8 + neg %r9 + jmp .Lloop + + .align 16, 0x90 +.L1mod4: + xor %ebx, %ebx + xor %ebp, %ebp + lea -8(%r8,%r9,8), %r8 + neg %r9 + + shr $1, %al + mov (%rsi,%r9,8), %r14 + adc (%rdx,%r9,8), %r14 + mov %r14, (%rdi,%r9,8) + cmovc (%r8), %rbx + setc %al + + add $1, %r9 + jnz .Lloop + jmp .Lend + + .align 16, 0x90 +.L2mod4: + xor %ebx, %ebx + xor %ebp, %ebp + xor %r10d, %r10d + lea -16(%r8,%r9,8), %r8 + neg %r9 + + shr $1, %al + mov (%rsi,%r9,8), %r14 + mov 8(%rsi,%r9,8), %r15 + adc (%rdx,%r9,8), %r14 + mov %r14, (%rdi,%r9,8) + cmovc 8(%r8), %rbx + adc 8(%rdx,%r9,8), %r15 + mov %r15, 8(%rdi,%r9,8) + cmovc (%r8), %r10 + setc %al + add %r10, %rbx + adc $0, %rbp + + add $2, %r9 + jnz .Lloop + jmp .Lend + + .align 32, 0x90 +.Lloop: + shr $1, %al + mov -8(%r8), %r10 + mov $0, %r13d + mov (%rsi,%r9,8), %r14 + mov 8(%rsi,%r9,8), %r15 + adc (%rdx,%r9,8), %r14 + cmovnc %r13, %r10 + adc 8(%rdx,%r9,8), %r15 + mov -16(%r8), %r11 + mov %r14, (%rdi,%r9,8) + mov 16(%rsi,%r9,8), %r14 + mov %r15, 8(%rdi,%r9,8) + cmovnc %r13, %r11 + mov -24(%r8), %r12 + adc 16(%rdx,%r9,8), %r14 + cmovnc %r13, %r12 + mov 24(%rsi,%r9,8), %r15 + adc 24(%rdx,%r9,8), %r15 + cmovc -32(%r8), %r13 + setc %al + add %r10, %rbx + adc $0, %rbp + add %r11, %rbx + adc $0, %rbp + add %r12, %rbx + adc $0, %rbp + mov %r14, 16(%rdi,%r9,8) + add %r13, %rbx + lea -32(%r8), %r8 + adc $0, %rbp + mov %r15, 24(%rdi,%r9,8) + add $4, %r9 + jnz .Lloop + +.Lend: + mov %rbx, (%rcx) + mov %rbp, 8(%rcx) + + pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + ret + .size __gmpn_add_err1_n,.-__gmpn_add_err1_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/add_err2_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/add_err2_n.s new file mode 100644 index 0000000..1008479 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/add_err2_n.s @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_add_err2_n + .type __gmpn_add_err2_n,@function + +__gmpn_add_err2_n: + + mov 16(%rsp), %rax + mov 8(%rsp), %r10 + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + + xor %ebp, %ebp + xor %r11d, %r11d + xor %r12d, %r12d + xor %r13d, %r13d + + sub %r8, %r9 + + lea (%rdi,%r10,8), %rdi + lea (%rsi,%r10,8), %rsi + lea (%rdx,%r10,8), %rdx + + test $1, %r10 + jnz .Lodd + + lea -8(%r8,%r10,8), %r8 + neg %r10 + jmp .Ltop + + .align 16, 0x90 +.Lodd: + lea -16(%r8,%r10,8), %r8 + neg %r10 + shr $1, %rax + mov (%rsi,%r10,8), %rbx + adc (%rdx,%r10,8), %rbx + cmovc 8(%r8), %rbp + cmovc 8(%r8,%r9), %r12 + mov %rbx, (%rdi,%r10,8) + sbb %rax, %rax + inc %r10 + jz .Lend + + .align 16, 0x90 +.Ltop: + mov (%rsi,%r10,8), %rbx + shr $1, %rax + adc (%rdx,%r10,8), %rbx + mov %rbx, (%rdi,%r10,8) + sbb %r14, %r14 + + mov 8(%rsi,%r10,8), %rbx + adc 8(%rdx,%r10,8), %rbx + mov %rbx, 8(%rdi,%r10,8) + sbb %rax, %rax + + mov (%r8), %rbx + and %r14, %rbx + add %rbx, %rbp + adc $0, %r11 + + and (%r8,%r9), %r14 + add %r14, %r12 + adc $0, %r13 + + mov -8(%r8), %rbx + and %rax, %rbx + add %rbx, %rbp + adc $0, %r11 + + mov -8(%r8,%r9), %rbx + and %rax, %rbx + add %rbx, %r12 + adc $0, %r13 + + add $2, %r10 + lea -16(%r8), %r8 + jnz .Ltop +.Lend: + + mov %rbp, (%rcx) + mov %r11, 8(%rcx) + mov %r12, 16(%rcx) + mov %r13, 24(%rcx) + + and $1, %eax + + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + ret + .size __gmpn_add_err2_n,.-__gmpn_add_err2_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/add_err3_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/add_err3_n.s new file mode 100644 index 0000000..cf99415 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/add_err3_n.s @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_add_err3_n + .type __gmpn_add_err3_n,@function + +__gmpn_add_err3_n: + + mov 24(%rsp), %rax + mov 16(%rsp), %r10 + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + push %rcx + mov 64(%rsp), %rcx + + xor %ebp, %ebp + xor %r11d, %r11d + xor %r12d, %r12d + xor %r13d, %r13d + xor %r14d, %r14d + xor %r15d, %r15d + + sub %r8, %r9 + sub %r8, %rcx + + lea -8(%r8,%r10,8), %r8 + lea (%rdi,%r10,8), %rdi + lea (%rsi,%r10,8), %rsi + lea (%rdx,%r10,8), %rdx + neg %r10 + + .align 16, 0x90 +.Ltop: + shr $1, %rax + mov (%rsi,%r10,8), %rax + adc (%rdx,%r10,8), %rax + mov %rax, (%rdi,%r10,8) + sbb %rax, %rax + + mov (%r8), %rbx + and %rax, %rbx + add %rbx, %rbp + adc $0, %r11 + + mov (%r8,%r9), %rbx + and %rax, %rbx + add %rbx, %r12 + adc $0, %r13 + + mov (%r8,%rcx), %rbx + and %rax, %rbx + add %rbx, %r14 + adc $0, %r15 + + lea -8(%r8), %r8 + inc %r10 + jnz .Ltop + +.Lend: + and $1, %eax + pop %rcx + + mov %rbp, (%rcx) + mov %r11, 8(%rcx) + mov %r12, 16(%rcx) + mov %r13, 24(%rcx) + mov %r14, 32(%rcx) + mov %r15, 40(%rcx) + + pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + ret + .size __gmpn_add_err3_n,.-__gmpn_add_err3_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/add_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/add_n.s new file mode 100644 index 0000000..14cc32b --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/add_n.s @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_add_nc + .type __gmpn_add_nc,@function + +__gmpn_add_nc: + + + + mov %ecx, %eax + shr $2, %rcx + and $3, %eax + bt $0, %r8 + jrcxz .Llt4 + + mov (%rsi), %r8 + mov 8(%rsi), %r9 + dec %rcx + jmp .Lmid + + .size __gmpn_add_nc,.-__gmpn_add_nc + .align 16, 0x90 + .globl __gmpn_add_n + .type __gmpn_add_n,@function + +__gmpn_add_n: + + + mov %ecx, %eax + shr $2, %rcx + and $3, %eax + jrcxz .Llt4 + + mov (%rsi), %r8 + mov 8(%rsi), %r9 + dec %rcx + jmp .Lmid + +.Llt4: dec %eax + mov (%rsi), %r8 + jnz .L2 + adc (%rdx), %r8 + mov %r8, (%rdi) + adc %eax, %eax + + ret + +.L2: dec %eax + mov 8(%rsi), %r9 + jnz .L3 + adc (%rdx), %r8 + adc 8(%rdx), %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + adc %eax, %eax + + ret + +.L3: mov 16(%rsi), %r10 + adc (%rdx), %r8 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + setc %al + + ret + + .align 16, 0x90 +.Ltop: adc (%rdx), %r8 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + adc 24(%rdx), %r11 + mov %r8, (%rdi) + lea 32(%rsi), %rsi + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + dec %rcx + mov %r11, 24(%rdi) + lea 32(%rdx), %rdx + mov (%rsi), %r8 + mov 8(%rsi), %r9 + lea 32(%rdi), %rdi +.Lmid: mov 16(%rsi), %r10 + mov 24(%rsi), %r11 + jnz .Ltop + +.Lend: lea 32(%rsi), %rsi + adc (%rdx), %r8 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + adc 24(%rdx), %r11 + lea 32(%rdx), %rdx + mov %r8, (%rdi) + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + mov %r11, 24(%rdi) + lea 32(%rdi), %rdi + + inc %eax + dec %eax + jnz .Llt4 + adc %eax, %eax + + ret + .size __gmpn_add_n,.-__gmpn_add_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s new file mode 100644 index 0000000..c821f7b --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addaddmul_1msb0 + .type __gmpn_addaddmul_1msb0,@function + +__gmpn_addaddmul_1msb0: + + push %r12 + push %rbp + + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rbp + lea (%rdi,%rcx,8), %rdi + neg %rcx + + mov (%rsi,%rcx,8), %rax + mul %r8 + mov %rax, %r12 + mov (%rbp,%rcx,8), %rax + mov %rdx, %r10 + add $3, %rcx + jns .Lend + + .align 16, 0x90 +.Ltop: mul %r9 + add %rax, %r12 + mov -16(%rsi,%rcx,8), %rax + adc %rdx, %r10 + mov %r12, -24(%rdi,%rcx,8) + mul %r8 + add %rax, %r10 + mov -16(%rbp,%rcx,8), %rax + mov $0, %r11d + adc %rdx, %r11 + mul %r9 + add %rax, %r10 + mov -8(%rsi,%rcx,8), %rax + adc %rdx, %r11 + mov %r10, -16(%rdi,%rcx,8) + mul %r8 + add %rax, %r11 + mov -8(%rbp,%rcx,8), %rax + mov $0, %r12d + adc %rdx, %r12 + mul %r9 + add %rax, %r11 + adc %rdx, %r12 + mov (%rsi,%rcx,8), %rax + mul %r8 + add %rax, %r12 + mov %r11, -8(%rdi,%rcx,8) + mov (%rbp,%rcx,8), %rax + mov $0, %r10d + adc %rdx, %r10 + add $3, %rcx + js .Ltop + +.Lend: cmp $1, %ecx + ja 2f + jz 1f + + mul %r9 + add %rax, %r12 + mov -16(%rsi), %rax + adc %rdx, %r10 + mov %r12, -24(%rdi) + mul %r8 + add %rax, %r10 + mov -16(%rbp), %rax + mov $0, %r11d + adc %rdx, %r11 + mul %r9 + add %rax, %r10 + mov -8(%rsi), %rax + adc %rdx, %r11 + mov %r10, -16(%rdi) + mul %r8 + add %rax, %r11 + mov -8(%rbp), %rax + mov $0, %r12d + adc %rdx, %r12 + mul %r9 + add %rax, %r11 + adc %rdx, %r12 + mov %r11, -8(%rdi) + mov %r12, %rax + pop %rbp + pop %r12 + ret + +1: mul %r9 + add %rax, %r12 + mov -8(%rsi), %rax + adc %rdx, %r10 + mov %r12, -16(%rdi) + mul %r8 + add %rax, %r10 + mov -8(%rbp), %rax + mov $0, %r11d + adc %rdx, %r11 + mul %r9 + add %rax, %r10 + adc %rdx, %r11 + mov %r10, -8(%rdi) + mov %r11, %rax + pop %rbp + pop %r12 + ret + +2: mul %r9 + add %rax, %r12 + mov %r12, -8(%rdi) + adc %rdx, %r10 + mov %r10, %rax + pop %rbp + pop %r12 + ret + .size __gmpn_addaddmul_1msb0,.-__gmpn_addaddmul_1msb0 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh1_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh1_n.s new file mode 100644 index 0000000..e3d3aae --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh1_n.s @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addlsh1_n + .type __gmpn_addlsh1_n,@function + +__gmpn_addlsh1_n: + + + push %rbp + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rdx + neg %rcx + xor %ebp, %ebp + and $3, %eax + je .Lb00 + cmp $2, %eax + jc .Lb01 + je .Lb10 + +.Lb11: add %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + mov 16(%rdx,%rcx,8), %r10 + adc %r10, %r10 + sbb %eax, %eax + add (%rsi,%rcx,8), %r8 + adc 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) + adc 16(%rsi,%rcx,8), %r10 + mov %r10, 16(%rdi,%rcx,8) + sbb %ebp, %ebp + add $3, %rcx + jmp .Lent + +.Lb10: add %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + sbb %eax, %eax + add (%rsi,%rcx,8), %r8 + adc 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) + sbb %ebp, %ebp + add $2, %rcx + jmp .Lent + +.Lb01: add %r8, %r8 + sbb %eax, %eax + add (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + sbb %ebp, %ebp + inc %rcx +.Lent: jns .Lend + + .align 16, 0x90 +.Ltop: add %eax, %eax + + mov (%rdx,%rcx,8), %r8 +.Lb00: adc %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + mov 16(%rdx,%rcx,8), %r10 + adc %r10, %r10 + mov 24(%rdx,%rcx,8), %r11 + adc %r11, %r11 + + sbb %eax, %eax + add %ebp, %ebp + + adc (%rsi,%rcx,8), %r8 + nop + adc 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) + adc 16(%rsi,%rcx,8), %r10 + adc 24(%rsi,%rcx,8), %r11 + mov %r10, 16(%rdi,%rcx,8) + mov %r11, 24(%rdi,%rcx,8) + + sbb %ebp, %ebp + add $4, %rcx + js .Ltop + +.Lend: + + add %ebp, %eax + neg %eax + + + pop %rbp + + ret + .size __gmpn_addlsh1_n,.-__gmpn_addlsh1_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh2_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh2_n.s new file mode 100644 index 0000000..00e2090 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh2_n.s @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addlsh2_n + .type __gmpn_addlsh2_n,@function + +__gmpn_addlsh2_n: + + + push %r12 + push %r13 + push %r14 + push %r15 + + mov (%rdx), %r8 + lea (,%r8,4), %r12 + shr $62, %r8 + + mov %ecx, %eax + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rdx + neg %rcx + and $3, %al + je .Lb00 + cmp $2, %al + jc .Lb01 + je .Lb10 + +.Lb11: mov 8(%rdx,%rcx,8), %r10 + lea (%r8,%r10,4), %r14 + shr $62, %r10 + mov 16(%rdx,%rcx,8), %r11 + lea (%r10,%r11,4), %r15 + shr $62, %r11 + add (%rsi,%rcx,8), %r12 + adc 8(%rsi,%rcx,8), %r14 + adc 16(%rsi,%rcx,8), %r15 + sbb %eax, %eax + mov %r12, (%rdi,%rcx,8) + mov %r14, 8(%rdi,%rcx,8) + mov %r15, 16(%rdi,%rcx,8) + add $3, %rcx + js .Ltop + jmp .Lend + +.Lb01: mov %r8, %r11 + add (%rsi,%rcx,8), %r12 + sbb %eax, %eax + mov %r12, (%rdi,%rcx,8) + add $1, %rcx + js .Ltop + jmp .Lend + +.Lb10: mov 8(%rdx,%rcx,8), %r11 + lea (%r8,%r11,4), %r15 + shr $62, %r11 + add (%rsi,%rcx,8), %r12 + adc 8(%rsi,%rcx,8), %r15 + sbb %eax, %eax + mov %r12, (%rdi,%rcx,8) + mov %r15, 8(%rdi,%rcx,8) + add $2, %rcx + js .Ltop + jmp .Lend + +.Lb00: mov 8(%rdx,%rcx,8), %r9 + mov 16(%rdx,%rcx,8), %r10 + jmp .Le00 + + .align 16, 0x90 +.Ltop: mov 16(%rdx,%rcx,8), %r10 + mov (%rdx,%rcx,8), %r8 + mov 8(%rdx,%rcx,8), %r9 + lea (%r11,%r8,4), %r12 + shr $62, %r8 +.Le00: lea (%r8,%r9,4), %r13 + shr $62, %r9 + mov 24(%rdx,%rcx,8), %r11 + lea (%r9,%r10,4), %r14 + shr $62, %r10 + lea (%r10,%r11,4), %r15 + shr $62, %r11 + add %eax, %eax + adc (%rsi,%rcx,8), %r12 + adc 8(%rsi,%rcx,8), %r13 + adc 16(%rsi,%rcx,8), %r14 + adc 24(%rsi,%rcx,8), %r15 + mov %r12, (%rdi,%rcx,8) + mov %r13, 8(%rdi,%rcx,8) + mov %r14, 16(%rdi,%rcx,8) + sbb %eax, %eax + mov %r15, 24(%rdi,%rcx,8) + add $4, %rcx + js .Ltop +.Lend: + + + sub %r11d, %eax + neg %eax + + pop %r15 + pop %r14 + pop %r13 + pop %r12 + + ret + .size __gmpn_addlsh2_n,.-__gmpn_addlsh2_n + diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh_n.s new file mode 100644 index 0000000..2d261d5 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh_n.s @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addlsh_n + .type __gmpn_addlsh_n,@function + +__gmpn_addlsh_n: + + + + push %r12 + push %rbp + push %rbx + + mov (%rdx), %rax + + mov $0, %ebp + sub %rcx, %rbp + + lea -16(%rsi,%rcx,8), %rsi + lea -16(%rdi,%rcx,8), %rdi + lea 16(%rdx,%rcx,8), %r12 + + mov %rcx, %r9 + + mov %r8, %rcx + mov $1, %r8d + shl %cl, %r8 + + mul %r8 + + and $3, %r9d + jz .Lb0 + cmp $2, %r9d + jc .Lb1 + jz .Lb2 + +.Lb3: mov %rax, %r11 + add 16(%rsi,%rbp,8), %r11 + mov -8(%r12,%rbp,8), %rax + sbb %ecx, %ecx + mov %rdx, %rbx + mul %r8 + or %rax, %rbx + mov (%r12,%rbp,8), %rax + mov %rdx, %r9 + mul %r8 + or %rax, %r9 + add $3, %rbp + jnz .Llo3 + jmp .Lcj3 + +.Lb2: mov %rax, %rbx + mov -8(%r12,%rbp,8), %rax + mov %rdx, %r9 + mul %r8 + or %rax, %r9 + add $2, %rbp + jz .Lcj2 + mov %rdx, %r10 + mov -16(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r10 + xor %ecx, %ecx + jmp .Llo2 + +.Lb1: mov %rax, %r9 + mov %rdx, %r10 + add $1, %rbp + jnz .Lgt1 + add 8(%rsi,%rbp,8), %r9 + jmp .Lcj1 +.Lgt1: mov -16(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r10 + mov %rdx, %r11 + mov -8(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r11 + add 8(%rsi,%rbp,8), %r9 + adc 16(%rsi,%rbp,8), %r10 + adc 24(%rsi,%rbp,8), %r11 + mov (%r12,%rbp,8), %rax + sbb %ecx, %ecx + jmp .Llo1 + +.Lb0: mov %rax, %r10 + mov %rdx, %r11 + mov -8(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r11 + add 16(%rsi,%rbp,8), %r10 + adc 24(%rsi,%rbp,8), %r11 + mov (%r12,%rbp,8), %rax + sbb %ecx, %ecx + mov %rdx, %rbx + mul %r8 + or %rax, %rbx + mov 8(%r12,%rbp,8), %rax + add $4, %rbp + jz .Lend + + .align 8, 0x90 +.Ltop: mov %rdx, %r9 + mul %r8 + or %rax, %r9 + mov %r10, -16(%rdi,%rbp,8) +.Llo3: mov %rdx, %r10 + mov -16(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r10 + mov %r11, -8(%rdi,%rbp,8) +.Llo2: mov %rdx, %r11 + mov -8(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r11 + add %ecx, %ecx + adc (%rsi,%rbp,8), %rbx + adc 8(%rsi,%rbp,8), %r9 + adc 16(%rsi,%rbp,8), %r10 + adc 24(%rsi,%rbp,8), %r11 + mov (%r12,%rbp,8), %rax + sbb %ecx, %ecx + mov %rbx, (%rdi,%rbp,8) +.Llo1: mov %rdx, %rbx + mul %r8 + or %rax, %rbx + mov %r9, 8(%rdi,%rbp,8) +.Llo0: mov 8(%r12,%rbp,8), %rax + add $4, %rbp + jnz .Ltop + +.Lend: mov %rdx, %r9 + mul %r8 + or %rax, %r9 + mov %r10, -16(%rdi,%rbp,8) +.Lcj3: mov %r11, -8(%rdi,%rbp,8) +.Lcj2: add %ecx, %ecx + adc (%rsi,%rbp,8), %rbx + adc 8(%rsi,%rbp,8), %r9 + mov %rbx, (%rdi,%rbp,8) +.Lcj1: mov %r9, 8(%rdi,%rbp,8) + mov %rdx, %rax + adc $0, %rax + pop %rbx + pop %rbp + pop %r12 + + ret + .size __gmpn_addlsh_n,.-__gmpn_addlsh_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addmul_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addmul_1.s new file mode 100644 index 0000000..8daf1ac --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addmul_1.s @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addmul_1 + .type __gmpn_addmul_1,@function + +__gmpn_addmul_1: + + + + + + + mov (%rsi), %rax + push %rbx + mov %rdx, %rbx + + mul %rcx + mov %rbx, %r11 + + and $3, %ebx + jz .Lb0 + cmp $2, %ebx + jz .Lb2 + jg .Lb3 + +.Lb1: dec %r11 + jne .Lgt1 + add %rax, (%rdi) + jmp .Lret +.Lgt1: lea 8(%rsi,%r11,8), %rsi + lea -8(%rdi,%r11,8), %rdi + neg %r11 + xor %r10, %r10 + xor %ebx, %ebx + mov %rax, %r9 + mov (%rsi,%r11,8), %rax + mov %rdx, %r8 + jmp .LL1 + +.Lb0: lea (%rsi,%r11,8), %rsi + lea -16(%rdi,%r11,8), %rdi + neg %r11 + xor %r10, %r10 + mov %rax, %r8 + mov %rdx, %rbx + jmp .LL0 + +.Lb3: lea -8(%rsi,%r11,8), %rsi + lea -24(%rdi,%r11,8), %rdi + neg %r11 + mov %rax, %rbx + mov %rdx, %r10 + jmp .LL3 + +.Lb2: lea -16(%rsi,%r11,8), %rsi + lea -32(%rdi,%r11,8), %rdi + neg %r11 + xor %r8, %r8 + xor %ebx, %ebx + mov %rax, %r10 + mov 24(%rsi,%r11,8), %rax + mov %rdx, %r9 + jmp .LL2 + + .align 16, 0x90 +.Ltop: add %r10, (%rdi,%r11,8) + adc %rax, %r9 + mov (%rsi,%r11,8), %rax + adc %rdx, %r8 + mov $0, %r10d +.LL1: mul %rcx + add %r9, 8(%rdi,%r11,8) + adc %rax, %r8 + adc %rdx, %rbx +.LL0: mov 8(%rsi,%r11,8), %rax + mul %rcx + add %r8, 16(%rdi,%r11,8) + adc %rax, %rbx + adc %rdx, %r10 +.LL3: mov 16(%rsi,%r11,8), %rax + mul %rcx + add %rbx, 24(%rdi,%r11,8) + mov $0, %r8d + mov %r8, %rbx + adc %rax, %r10 + mov 24(%rsi,%r11,8), %rax + mov %r8, %r9 + adc %rdx, %r9 +.LL2: mul %rcx + add $4, %r11 + js .Ltop + + add %r10, (%rdi,%r11,8) + adc %rax, %r9 + adc %r8, %rdx + add %r9, 8(%rdi,%r11,8) +.Lret: adc $0, %rdx + mov %rdx, %rax + + pop %rbx + + + ret + .size __gmpn_addmul_1,.-__gmpn_addmul_1 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addmul_2.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addmul_2.s new file mode 100644 index 0000000..5883dab --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addmul_2.s @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addmul_2 + .type __gmpn_addmul_2,@function + +__gmpn_addmul_2: + + + mov %rdx, %r11 + push %rbx + push %rbp + + mov 0(%rcx), %r8 + mov 8(%rcx), %r9 + + mov %edx, %ebx + mov (%rsi), %rax + lea -8(%rsi,%rdx,8), %rsi + lea -8(%rdi,%rdx,8), %rdi + mul %r8 + neg %r11 + and $3, %ebx + jz .Lb0 + cmp $2, %ebx + jc .Lb1 + jz .Lb2 + +.Lb3: mov %rax, %rcx + mov %rdx, %rbp + xor %r10d, %r10d + mov 8(%rsi,%r11,8), %rax + dec %r11 + jmp .Llo3 + +.Lb2: mov %rax, %rbp + mov 8(%rsi,%r11,8), %rax + mov %rdx, %r10 + xor %ebx, %ebx + add $-2, %r11 + jmp .Llo2 + +.Lb1: mov %rax, %r10 + mov 8(%rsi,%r11,8), %rax + mov %rdx, %rbx + xor %ecx, %ecx + inc %r11 + jmp .Llo1 + +.Lb0: mov $0, %r10d + mov %rax, %rbx + mov 8(%rsi,%r11,8), %rax + mov %rdx, %rcx + xor %ebp, %ebp + jmp .Llo0 + + .align 32, 0x90 +.Ltop: mov $0, %ecx + mul %r8 + add %rax, %r10 + mov (%rsi,%r11,8), %rax + adc %rdx, %rbx + adc $0, %ecx +.Llo1: mul %r9 + add %r10, (%rdi,%r11,8) + mov $0, %r10d + adc %rax, %rbx + mov $0, %ebp + mov 8(%rsi,%r11,8), %rax + adc %rdx, %rcx + mul %r8 + add %rax, %rbx + mov 8(%rsi,%r11,8), %rax + adc %rdx, %rcx + adc $0, %ebp +.Llo0: mul %r9 + add %rbx, 8(%rdi,%r11,8) + adc %rax, %rcx + adc %rdx, %rbp + mov 16(%rsi,%r11,8), %rax + mul %r8 + add %rax, %rcx + adc %rdx, %rbp + adc $0, %r10d + mov 16(%rsi,%r11,8), %rax +.Llo3: mul %r9 + add %rcx, 16(%rdi,%r11,8) + adc %rax, %rbp + adc %rdx, %r10 + xor %ebx, %ebx + mov 24(%rsi,%r11,8), %rax + mul %r8 + add %rax, %rbp + mov 24(%rsi,%r11,8), %rax + adc %rdx, %r10 + adc $0, %ebx +.Llo2: mul %r9 + add %rbp, 24(%rdi,%r11,8) + adc %rax, %r10 + adc %rdx, %rbx + mov 32(%rsi,%r11,8), %rax + add $4, %r11 + js .Ltop + +.Lend: xor %ecx, %ecx + mul %r8 + add %rax, %r10 + mov (%rsi), %rax + adc %rdx, %rbx + adc %ecx, %ecx + mul %r9 + add %r10, (%rdi) + adc %rax, %rbx + adc %rdx, %rcx + mov %rbx, 8(%rdi) + mov %rcx, %rax + + pop %rbp + pop %rbx + + ret + .size __gmpn_addmul_2,.-__gmpn_addmul_2 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/and_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/and_n.s new file mode 100644 index 0000000..946906e --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/and_n.s @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_and_n + .type __gmpn_and_n,@function + +__gmpn_and_n: + + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je .Lb00 + cmp $2, %eax + jc .Lb01 + je .Lb10 + +.Lb11: and (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp .Le11 +.Lb10: add $-2, %rcx + jmp .Le10 +.Lb01: and (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz .Lret + +.Ltop: mov (%rdx,%rcx,8), %r8 +.Lb00: mov 8(%rdx,%rcx,8), %r9 + and (%rsi,%rcx,8), %r8 + and 8(%rsi,%rcx,8), %r9 + nop + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +.Le11: mov 16(%rdx,%rcx,8), %r8 +.Le10: mov 24(%rdx,%rcx,8), %r9 + and 16(%rsi,%rcx,8), %r8 + and 24(%rsi,%rcx,8), %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc .Ltop + +.Lret: + ret + .size __gmpn_and_n,.-__gmpn_and_n + + + + + diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/andn_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/andn_n.s new file mode 100644 index 0000000..aee1df4 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/andn_n.s @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_andn_n + .type __gmpn_andn_n,@function + +__gmpn_andn_n: + + + mov (%rdx), %r8 + not %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je .Lb00 + cmp $2, %eax + jc .Lb01 + je .Lb10 + +.Lb11: and (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp .Le11 +.Lb10: add $-2, %rcx + jmp .Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90 +.Lb01: and (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz .Lret + +.Ltop: mov (%rdx,%rcx,8), %r8 + not %r8 +.Lb00: mov 8(%rdx,%rcx,8), %r9 + not %r9 + and (%rsi,%rcx,8), %r8 + and 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +.Le11: mov 16(%rdx,%rcx,8), %r8 + not %r8 +.Le10: mov 24(%rdx,%rcx,8), %r9 + not %r9 + and 16(%rsi,%rcx,8), %r8 + and 24(%rsi,%rcx,8), %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc .Ltop + +.Lret: + ret + .size __gmpn_andn_n,.-__gmpn_andn_n + + + diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_dbm1c.s b/vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_dbm1c.s new file mode 100644 index 0000000..2fda4a0 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_dbm1c.s @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_bdiv_dbm1c + .type __gmpn_bdiv_dbm1c,@function + +__gmpn_bdiv_dbm1c: + + + + mov (%rsi), %rax + mov %rdx, %r9 + mov %edx, %r11d + mul %rcx + lea (%rsi,%r9,8), %rsi + lea (%rdi,%r9,8), %rdi + neg %r9 + and $3, %r11d + jz .Llo0 + lea -4(%r9,%r11), %r9 + cmp $2, %r11d + jc .Llo1 + jz .Llo2 + jmp .Llo3 + + .align 16, 0x90 +.Ltop: mov (%rsi,%r9,8), %rax + mul %rcx +.Llo0: sub %rax, %r8 + mov %r8, (%rdi,%r9,8) + sbb %rdx, %r8 + mov 8(%rsi,%r9,8), %rax + mul %rcx +.Llo3: sub %rax, %r8 + mov %r8, 8(%rdi,%r9,8) + sbb %rdx, %r8 + mov 16(%rsi,%r9,8), %rax + mul %rcx +.Llo2: sub %rax, %r8 + mov %r8, 16(%rdi,%r9,8) + sbb %rdx, %r8 + mov 24(%rsi,%r9,8), %rax + mul %rcx +.Llo1: sub %rax, %r8 + mov %r8, 24(%rdi,%r9,8) + sbb %rdx, %r8 + add $4, %r9 + jnz .Ltop + + mov %r8, %rax + + ret + .size __gmpn_bdiv_dbm1c,.-__gmpn_bdiv_dbm1c diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_q_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_q_1.s new file mode 100644 index 0000000..4f58778 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_q_1.s @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_bdiv_q_1 + .type __gmpn_bdiv_q_1,@function + +__gmpn_bdiv_q_1: + + + push %rbx + + mov %rcx, %rax + xor %ecx, %ecx + mov %rdx, %r10 + + bt $0, %eax + jnc .Levn + +.Lodd: mov %rax, %rbx + shr %eax + and $127, %eax + + mov __gmp_binvert_limb_table@GOTPCREL(%rip), %rdx + + + + movzbl (%rdx,%rax), %eax + + mov %rbx, %r11 + + lea (%rax,%rax), %edx + imul %eax, %eax + imul %ebx, %eax + sub %eax, %edx + + lea (%rdx,%rdx), %eax + imul %edx, %edx + imul %ebx, %edx + sub %edx, %eax + + lea (%rax,%rax), %r8 + imul %rax, %rax + imul %rbx, %rax + sub %rax, %r8 + + jmp .Lpi1 + +.Levn: bsf %rax, %rcx + shr %cl, %rax + jmp .Lodd + .size __gmpn_bdiv_q_1,.-__gmpn_bdiv_q_1 + + .globl __gmpn_pi1_bdiv_q_1 + .type __gmpn_pi1_bdiv_q_1,@function + +__gmpn_pi1_bdiv_q_1: + + + + + push %rbx + + mov %rcx, %r11 + mov %rdx, %r10 + mov %r9, %rcx + +.Lpi1: mov (%rsi), %rax + + dec %r10 + jz .Lone + + mov 8(%rsi), %rdx + lea (%rsi,%r10,8), %rsi + lea (%rdi,%r10,8), %rdi + neg %r10 + + shrd %cl, %rdx, %rax + + xor %ebx, %ebx + jmp .Lent + + .align 8, 0x90 +.Ltop: + + + + + + + + mul %r11 + mov (%rsi,%r10,8), %rax + mov 8(%rsi,%r10,8), %r9 + shrd %cl, %r9, %rax + nop + sub %rbx, %rax + setc %bl + sub %rdx, %rax + adc $0, %ebx +.Lent: imul %r8, %rax + mov %rax, (%rdi,%r10,8) + inc %r10 + jnz .Ltop + + mul %r11 + mov (%rsi), %rax + shr %cl, %rax + sub %rbx, %rax + sub %rdx, %rax + imul %r8, %rax + mov %rax, (%rdi) + pop %rbx + + ret + +.Lone: shr %cl, %rax + imul %r8, %rax + mov %rax, (%rdi) + pop %rbx + + ret + .size __gmpn_pi1_bdiv_q_1,.-__gmpn_pi1_bdiv_q_1 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/cnd_add_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/cnd_add_n.s new file mode 100644 index 0000000..b046e36 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/cnd_add_n.s @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_cnd_add_n + .type __gmpn_cnd_add_n,@function + +__gmpn_cnd_add_n: + + + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + + neg %rdi + sbb %rdi, %rdi + + lea (%rcx,%r8,8), %rcx + lea (%rdx,%r8,8), %rdx + lea (%rsi,%r8,8), %rsi + + mov %r8d, %eax + neg %r8 + and $3, %eax + jz .Ltop + cmp $2, %eax + jc .Lb1 + jz .Lb2 + +.Lb3: mov (%rcx,%r8,8), %r12 + mov 8(%rcx,%r8,8), %r13 + mov 16(%rcx,%r8,8), %r14 + and %rdi, %r12 + mov (%rdx,%r8,8), %r10 + and %rdi, %r13 + mov 8(%rdx,%r8,8), %rbx + and %rdi, %r14 + mov 16(%rdx,%r8,8), %rbp + add %r12, %r10 + mov %r10, (%rsi,%r8,8) + adc %r13, %rbx + mov %rbx, 8(%rsi,%r8,8) + adc %r14, %rbp + mov %rbp, 16(%rsi,%r8,8) + sbb %eax, %eax + add $3, %r8 + js .Ltop + jmp .Lend + +.Lb2: mov (%rcx,%r8,8), %r12 + mov 8(%rcx,%r8,8), %r13 + mov (%rdx,%r8,8), %r10 + and %rdi, %r12 + mov 8(%rdx,%r8,8), %rbx + and %rdi, %r13 + add %r12, %r10 + mov %r10, (%rsi,%r8,8) + adc %r13, %rbx + mov %rbx, 8(%rsi,%r8,8) + sbb %eax, %eax + add $2, %r8 + js .Ltop + jmp .Lend + +.Lb1: mov (%rcx,%r8,8), %r12 + mov (%rdx,%r8,8), %r10 + and %rdi, %r12 + add %r12, %r10 + mov %r10, (%rsi,%r8,8) + sbb %eax, %eax + add $1, %r8 + jns .Lend + + .align 16, 0x90 +.Ltop: mov (%rcx,%r8,8), %r12 + mov 8(%rcx,%r8,8), %r13 + mov 16(%rcx,%r8,8), %r14 + mov 24(%rcx,%r8,8), %r11 + and %rdi, %r12 + mov (%rdx,%r8,8), %r10 + and %rdi, %r13 + mov 8(%rdx,%r8,8), %rbx + and %rdi, %r14 + mov 16(%rdx,%r8,8), %rbp + and %rdi, %r11 + mov 24(%rdx,%r8,8), %r9 + add %eax, %eax + adc %r12, %r10 + mov %r10, (%rsi,%r8,8) + adc %r13, %rbx + mov %rbx, 8(%rsi,%r8,8) + adc %r14, %rbp + mov %rbp, 16(%rsi,%r8,8) + adc %r11, %r9 + mov %r9, 24(%rsi,%r8,8) + sbb %eax, %eax + add $4, %r8 + js .Ltop + +.Lend: neg %eax + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + .size __gmpn_cnd_add_n,.-__gmpn_cnd_add_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/cnd_sub_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/cnd_sub_n.s new file mode 100644 index 0000000..596dd8f --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/cnd_sub_n.s @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_cnd_sub_n + .type __gmpn_cnd_sub_n,@function + +__gmpn_cnd_sub_n: + + + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + + neg %rdi + sbb %rdi, %rdi + + lea (%rcx,%r8,8), %rcx + lea (%rdx,%r8,8), %rdx + lea (%rsi,%r8,8), %rsi + + mov %r8d, %eax + neg %r8 + and $3, %eax + jz .Ltop + cmp $2, %eax + jc .Lb1 + jz .Lb2 + +.Lb3: mov (%rcx,%r8,8), %r12 + mov 8(%rcx,%r8,8), %r13 + mov 16(%rcx,%r8,8), %r14 + and %rdi, %r12 + mov (%rdx,%r8,8), %r10 + and %rdi, %r13 + mov 8(%rdx,%r8,8), %rbx + and %rdi, %r14 + mov 16(%rdx,%r8,8), %rbp + sub %r12, %r10 + mov %r10, (%rsi,%r8,8) + sbb %r13, %rbx + mov %rbx, 8(%rsi,%r8,8) + sbb %r14, %rbp + mov %rbp, 16(%rsi,%r8,8) + sbb %eax, %eax + add $3, %r8 + js .Ltop + jmp .Lend + +.Lb2: mov (%rcx,%r8,8), %r12 + mov 8(%rcx,%r8,8), %r13 + mov (%rdx,%r8,8), %r10 + and %rdi, %r12 + mov 8(%rdx,%r8,8), %rbx + and %rdi, %r13 + sub %r12, %r10 + mov %r10, (%rsi,%r8,8) + sbb %r13, %rbx + mov %rbx, 8(%rsi,%r8,8) + sbb %eax, %eax + add $2, %r8 + js .Ltop + jmp .Lend + +.Lb1: mov (%rcx,%r8,8), %r12 + mov (%rdx,%r8,8), %r10 + and %rdi, %r12 + sub %r12, %r10 + mov %r10, (%rsi,%r8,8) + sbb %eax, %eax + add $1, %r8 + jns .Lend + + .align 16, 0x90 +.Ltop: mov (%rcx,%r8,8), %r12 + mov 8(%rcx,%r8,8), %r13 + mov 16(%rcx,%r8,8), %r14 + mov 24(%rcx,%r8,8), %r11 + and %rdi, %r12 + mov (%rdx,%r8,8), %r10 + and %rdi, %r13 + mov 8(%rdx,%r8,8), %rbx + and %rdi, %r14 + mov 16(%rdx,%r8,8), %rbp + and %rdi, %r11 + mov 24(%rdx,%r8,8), %r9 + add %eax, %eax + sbb %r12, %r10 + mov %r10, (%rsi,%r8,8) + sbb %r13, %rbx + mov %rbx, 8(%rsi,%r8,8) + sbb %r14, %rbp + mov %rbp, 16(%rsi,%r8,8) + sbb %r11, %r9 + mov %r9, 24(%rsi,%r8,8) + sbb %eax, %eax + add $4, %r8 + js .Ltop + +.Lend: neg %eax + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + .size __gmpn_cnd_sub_n,.-__gmpn_cnd_sub_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/com.s b/vere/ext/gmp/gen/x86_64-linux/mpn/com.s new file mode 100644 index 0000000..ff14001 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/com.s @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_com + .type __gmpn_com,@function + +__gmpn_com: + + + movq (%rsi), %r8 + movl %edx, %eax + leaq (%rsi,%rdx,8), %rsi + leaq (%rdi,%rdx,8), %rdi + negq %rdx + andl $3, %eax + je .Lb00 + cmpl $2, %eax + jc .Lb01 + je .Lb10 + +.Lb11: notq %r8 + movq %r8, (%rdi,%rdx,8) + decq %rdx + jmp .Le11 +.Lb10: addq $-2, %rdx + jmp .Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90 +.Lb01: notq %r8 + movq %r8, (%rdi,%rdx,8) + incq %rdx + jz .Lret + +.Loop: movq (%rsi,%rdx,8), %r8 +.Lb00: movq 8(%rsi,%rdx,8), %r9 + notq %r8 + notq %r9 + movq %r8, (%rdi,%rdx,8) + movq %r9, 8(%rdi,%rdx,8) +.Le11: movq 16(%rsi,%rdx,8), %r8 +.Le10: movq 24(%rsi,%rdx,8), %r9 + notq %r8 + notq %r9 + movq %r8, 16(%rdi,%rdx,8) + movq %r9, 24(%rdi,%rdx,8) + addq $4, %rdx + jnc .Loop +.Lret: + ret + .size __gmpn_com,.-__gmpn_com diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/copyd.s b/vere/ext/gmp/gen/x86_64-linux/mpn/copyd.s new file mode 100644 index 0000000..f375481 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/copyd.s @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 64, 0x90 + .globl __gmpn_copyd + .type __gmpn_copyd,@function + +__gmpn_copyd: + + lea -8(%rsi,%rdx,8), %rsi + lea (%rdi,%rdx,8), %rdi + sub $4, %rdx + jc .Lend + nop + +.Ltop: mov (%rsi), %rax + mov -8(%rsi), %r9 + lea -32(%rdi), %rdi + mov -16(%rsi), %r10 + mov -24(%rsi), %r11 + lea -32(%rsi), %rsi + mov %rax, 24(%rdi) + mov %r9, 16(%rdi) + sub $4, %rdx + mov %r10, 8(%rdi) + mov %r11, (%rdi) + jnc .Ltop + +.Lend: shr %edx + jnc 1f + mov (%rsi), %rax + mov %rax, -8(%rdi) + lea -8(%rdi), %rdi + lea -8(%rsi), %rsi +1: shr %edx + jnc 1f + mov (%rsi), %rax + mov -8(%rsi), %r9 + mov %rax, -8(%rdi) + mov %r9, -16(%rdi) +1: ret + .size __gmpn_copyd,.-__gmpn_copyd diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/copyi.s b/vere/ext/gmp/gen/x86_64-linux/mpn/copyi.s new file mode 100644 index 0000000..dc746b2 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/copyi.s @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 64, 0x90 + .byte 0,0,0,0,0,0 + .globl __gmpn_copyi + .type __gmpn_copyi,@function + +__gmpn_copyi: + + lea -8(%rdi), %rdi + sub $4, %rdx + jc .Lend + +.Ltop: mov (%rsi), %rax + mov 8(%rsi), %r9 + lea 32(%rdi), %rdi + mov 16(%rsi), %r10 + mov 24(%rsi), %r11 + lea 32(%rsi), %rsi + mov %rax, -24(%rdi) + mov %r9, -16(%rdi) + sub $4, %rdx + mov %r10, -8(%rdi) + mov %r11, (%rdi) + jnc .Ltop + +.Lend: shr %edx + jnc 1f + mov (%rsi), %rax + mov %rax, 8(%rdi) + lea 8(%rdi), %rdi + lea 8(%rsi), %rsi +1: shr %edx + jnc 1f + mov (%rsi), %rax + mov 8(%rsi), %r9 + mov %rax, 8(%rdi) + mov %r9, 16(%rdi) +1: ret + .size __gmpn_copyi,.-__gmpn_copyi diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_1n_pi1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_1n_pi1.s new file mode 100644 index 0000000..fd8ce8e --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_1n_pi1.s @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_div_qr_1n_pi1 + .type __gmpn_div_qr_1n_pi1,@function + +__gmpn_div_qr_1n_pi1: + + + + + dec %rdx + jnz .Lfirst + + + + lea 1(%rcx), %r10 + mov %rcx, %rax + mul %r9 + mov (%rsi), %r11 + add %r11, %rax + adc %r10, %rdx + mov %rdx, %r10 + imul %r8, %rdx + sub %rdx, %r11 + cmp %r11, %rax + lea (%r11, %r8), %rax + cmovnc %r11, %rax + sbb $0, %r10 + cmp %r8, %rax + jc .Lsingle_div_done + sub %r8, %rax + add $1, %r10 +.Lsingle_div_done: + mov %r10, (%rdi) + + ret +.Lfirst: + + push %r15 + push %r14 + push %r13 + push %r12 + push %rbx + push %rbp + + mov %r8, %rbp + imul %r9, %rbp + neg %rbp + mov %rbp, %rbx + sub %r8, %rbx + + + push %r8 + mov %rdx, %r8 + + mov %r9, %rax + mul %rcx + mov %rax, %r13 + add %rcx, %rdx + mov %rdx, %r10 + + mov %rbp, %rax + mul %rcx + mov -8(%rsi, %r8, 8), %r11 + mov (%rsi, %r8, 8), %rcx + mov %r10, (%rdi, %r8, 8) + add %rax, %r11 + adc %rdx, %rcx + sbb %r12, %r12 + dec %r8 + mov %rcx, %rax + jz .Lfinal + mov $0, %r14d + + .align 16, 0x90 + + + + +.Lloop: + + + cmovc %r9, %r14 + mov %r12, %r15 + neg %r15 + mul %r9 + add %rdx, %r14 + adc $0, %r15 + add %r13, %r14 + mov %rax, %r13 + mov %rbp, %rax + lea (%rbx, %r11), %r10 + adc $0, %r15 + + + mul %rcx + and %rbp, %r12 + add %r12, %r11 + cmovnc %r11, %r10 + + + adc %rcx, %r14 + mov -8(%rsi, %r8, 8), %r11 + adc %r15, 8(%rdi, %r8, 8) + jc .Lq_incr +.Lq_incr_done: + add %rax, %r11 + mov %r10, %rax + adc %rdx, %rax + mov %r14, (%rdi, %r8, 8) + mov $0, %r14d + sbb %r12, %r12 + dec %r8 + mov %rax, %rcx + jnz .Lloop + +.Lfinal: + pop %r8 + + mov %r12, %r14 + and %r8, %r12 + sub %r12, %rax + neg %r14 + + mov %rax, %rcx + sub %r8, %rax + cmovc %rcx, %rax + sbb $-1, %r14 + + lea 1(%rax), %r10 + mul %r9 + add %r11, %rax + adc %r10, %rdx + mov %rdx, %r10 + imul %r8, %rdx + sub %rdx, %r11 + cmp %r11, %rax + lea (%r11, %r8), %rax + cmovnc %r11, %rax + sbb $0, %r10 + cmp %r8, %rax + jc .Ldiv_done + sub %r8, %rax + add $1, %r10 +.Ldiv_done: + add %r10, %r13 + mov %r13, (%rdi) + adc %r14, 8(%rdi) + jnc .Ldone +.Lfinal_q_incr: + addq $1, 16(%rdi) + lea 8(%rdi), %rdi + jc .Lfinal_q_incr + +.Ldone: + pop %rbp + pop %rbx + pop %r12 + pop %r13 + pop %r14 + pop %r15 + + ret + +.Lq_incr: + + lea 16(%rdi, %r8, 8), %rcx +.Lq_incr_loop: + addq $1, (%rcx) + jnc .Lq_incr_done + lea 8(%rcx), %rcx + jmp .Lq_incr_loop + .size __gmpn_div_qr_1n_pi1,.-__gmpn_div_qr_1n_pi1 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2n_pi1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2n_pi1.s new file mode 100644 index 0000000..67618f7 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2n_pi1.s @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_div_qr_2n_pi1 + .type __gmpn_div_qr_2n_pi1,@function + +__gmpn_div_qr_2n_pi1: + + + + + + mov 8(%rsp), %r10 + mov %rdx, %r11 + push %r15 + push %r14 + push %r13 + push %r12 + push %rbx + + mov -16(%r11, %rcx, 8), %r12 + mov -8(%r11, %rcx, 8), %rbx + + mov %r12, %r14 + mov %rbx, %r13 + sub %r9, %r14 + sbb %r8, %r13 + cmovnc %r14, %r12 + cmovnc %r13, %rbx + + sbb %rax, %rax + inc %rax + push %rax + lea -2(%rcx), %rcx + mov %r8, %r15 + neg %r15 + + jmp .Lnext + + .align 16, 0x90 +.Lloop: + + + + mov %r10, %rax + mul %rbx + mov %r12, %r14 + add %rax, %r14 + adc %rbx, %rdx + mov %rdx, %r13 + imul %r15, %rdx + mov %r9, %rax + lea (%rdx, %r12), %rbx + mul %r13 + mov (%r11, %rcx, 8), %r12 + sub %r9, %r12 + sbb %r8, %rbx + sub %rax, %r12 + sbb %rdx, %rbx + xor %eax, %eax + xor %edx, %edx + cmp %r14, %rbx + cmovnc %r9, %rax + cmovnc %r8, %rdx + adc $0, %r13 + nop + add %rax, %r12 + adc %rdx, %rbx + cmp %r8, %rbx + jae .Lfix +.Lbck: + mov %r13, (%rdi, %rcx, 8) +.Lnext: + sub $1, %rcx + jnc .Lloop +.Lend: + mov %rbx, 8(%rsi) + mov %r12, (%rsi) + + + pop %rax + + pop %rbx + pop %r12 + pop %r13 + pop %r14 + pop %r15 + + ret + +.Lfix: + seta %dl + cmp %r9, %r12 + setae %al + orb %dl, %al + je .Lbck + inc %r13 + sub %r9, %r12 + sbb %r8, %rbx + jmp .Lbck + .size __gmpn_div_qr_2n_pi1,.-__gmpn_div_qr_2n_pi1 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2u_pi1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2u_pi1.s new file mode 100644 index 0000000..a11a847 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2u_pi1.s @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + + .globl __gmpn_div_qr_2u_pi1 + .type __gmpn_div_qr_2u_pi1,@function + +__gmpn_div_qr_2u_pi1: + + mov 0+16(%rsp), %r10 + mov %rdx, %r11 + push %r15 + push %r14 + push %r13 + push %r12 + push %rbx + push %rbp + push %rsi + + lea -2(%rcx), %rbp + mov %r8, %r15 + neg %r15 + + + movl 56+8(%rsp), %ecx + + + + xor %ebx, %ebx + mov 8(%r11, %rbp, 8), %r12 + shld %cl, %r12, %rbx + + + mov %r10, %rax + mul %rbx + mov (%r11, %rbp, 8), %rsi + shld %cl, %rsi, %r12 + mov %r12, %r14 + add %rax, %r14 + adc %rbx, %rdx + mov %rdx, %r13 + imul %r15, %rdx + mov %r9, %rax + lea (%rdx, %r12), %rbx + mul %r13 + mov %rsi, %r12 + shl %cl, %r12 + sub %r9, %r12 + sbb %r8, %rbx + sub %rax, %r12 + sbb %rdx, %rbx + xor %eax, %eax + xor %edx, %edx + cmp %r14, %rbx + cmovnc %r9, %rax + cmovnc %r8, %rdx + adc $0, %r13 + nop + add %rax, %r12 + adc %rdx, %rbx + cmp %r8, %rbx + jae .Lfix_qh +.Lbck_qh: + push %r13 + + jmp .Lnext + + .align 16, 0x90 +.Lloop: + + + + mov %r10, %rax + mul %rbx + mov (%r11, %rbp, 8), %rsi + xor %r13d, %r13d + shld %cl, %rsi, %r13 + or %r13, %r12 + mov %r12, %r14 + add %rax, %r14 + adc %rbx, %rdx + mov %rdx, %r13 + imul %r15, %rdx + mov %r9, %rax + lea (%rdx, %r12), %rbx + mul %r13 + mov %rsi, %r12 + shl %cl, %r12 + sub %r9, %r12 + sbb %r8, %rbx + sub %rax, %r12 + sbb %rdx, %rbx + xor %eax, %eax + xor %edx, %edx + cmp %r14, %rbx + cmovnc %r9, %rax + cmovnc %r8, %rdx + adc $0, %r13 + nop + add %rax, %r12 + adc %rdx, %rbx + cmp %r8, %rbx + jae .Lfix +.Lbck: + mov %r13, (%rdi, %rbp, 8) +.Lnext: + sub $1, %rbp + jnc .Lloop +.Lend: + + pop %rax + pop %rsi + shrd %cl, %rbx, %r12 + shr %cl, %rbx + mov %rbx, 8(%rsi) + mov %r12, (%rsi) + + pop %rbp + pop %rbx + pop %r12 + pop %r13 + pop %r14 + pop %r15 + ret + +.Lfix: + seta %dl + cmp %r9, %r12 + setae %al + orb %dl, %al + je .Lbck + inc %r13 + sub %r9, %r12 + sbb %r8, %rbx + jmp .Lbck + + +.Lfix_qh: + seta %dl + cmp %r9, %r12 + setae %al + orb %dl, %al + je .Lbck_qh + inc %r13 + sub %r9, %r12 + sbb %r8, %rbx + jmp .Lbck_qh + .size __gmpn_div_qr_2u_pi1,.-__gmpn_div_qr_2u_pi1 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/dive_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/dive_1.s new file mode 100644 index 0000000..23a35c8 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/dive_1.s @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_divexact_1 + .type __gmpn_divexact_1,@function + +__gmpn_divexact_1: + + + push %rbx + + mov %rcx, %rax + xor %ecx, %ecx + mov %rdx, %r8 + + bt $0, %eax + jnc .Levn + +.Lodd: mov %rax, %rbx + shr %eax + and $127, %eax + + mov __gmp_binvert_limb_table@GOTPCREL(%rip), %rdx + + + + movzbl (%rdx,%rax), %eax + + mov %rbx, %r11 + + lea (%rax,%rax), %edx + imul %eax, %eax + imul %ebx, %eax + sub %eax, %edx + + lea (%rdx,%rdx), %eax + imul %edx, %edx + imul %ebx, %edx + sub %edx, %eax + + lea (%rax,%rax), %r10 + imul %rax, %rax + imul %rbx, %rax + sub %rax, %r10 + + lea (%rsi,%r8,8), %rsi + lea -8(%rdi,%r8,8), %rdi + neg %r8 + + mov (%rsi,%r8,8), %rax + + inc %r8 + jz .Lone + + mov (%rsi,%r8,8), %rdx + + shrd %cl, %rdx, %rax + + xor %ebx, %ebx + jmp .Lent + +.Levn: bsf %rax, %rcx + shr %cl, %rax + jmp .Lodd + + .align 8, 0x90 +.Ltop: + + + + + + + + + + + mul %r11 + mov -8(%rsi,%r8,8), %rax + mov (%rsi,%r8,8), %r9 + shrd %cl, %r9, %rax + nop + sub %rbx, %rax + setc %bl + sub %rdx, %rax + adc $0, %rbx +.Lent: imul %r10, %rax + mov %rax, (%rdi,%r8,8) + inc %r8 + jnz .Ltop + + mul %r11 + mov -8(%rsi), %rax + shr %cl, %rax + sub %rbx, %rax + sub %rdx, %rax + imul %r10, %rax + mov %rax, (%rdi) + pop %rbx + + ret + +.Lone: shr %cl, %rax + imul %r10, %rax + mov %rax, (%rdi) + pop %rbx + + ret + + .size __gmpn_divexact_1,.-__gmpn_divexact_1 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/divrem_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/divrem_1.s new file mode 100644 index 0000000..e689bd2 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/divrem_1.s @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_preinv_divrem_1 + .type __gmpn_preinv_divrem_1,@function + +__gmpn_preinv_divrem_1: + + + + + xor %eax, %eax + push %r13 + push %r12 + push %rbp + push %rbx + + mov %rsi, %r12 + mov %rcx, %rbx + add %rsi, %rcx + mov %rdx, %rsi + + lea -8(%rdi,%rcx,8), %rdi + + test %r8, %r8 + js .Lnent + + mov 40(%rsp), %cl + shl %cl, %r8 + jmp .Luent + .size __gmpn_preinv_divrem_1,.-__gmpn_preinv_divrem_1 + + .align 16, 0x90 + .globl __gmpn_divrem_1 + .type __gmpn_divrem_1,@function + +__gmpn_divrem_1: + + + + xor %eax, %eax + push %r13 + push %r12 + push %rbp + push %rbx + + mov %rsi, %r12 + mov %rcx, %rbx + add %rsi, %rcx + mov %rdx, %rsi + je .Lret + + lea -8(%rdi,%rcx,8), %rdi + xor %ebp, %ebp + + test %r8, %r8 + jns .Lunnormalized + +.Lnormalized: + test %rbx, %rbx + je .L8 + mov -8(%rsi,%rbx,8), %rbp + dec %rbx + mov %rbp, %rax + sub %r8, %rbp + cmovc %rax, %rbp + sbb %eax, %eax + inc %eax + mov %rax, (%rdi) + lea -8(%rdi), %rdi +.L8: + push %rdi + push %rsi + push %r8 + mov %r8, %rdi + + + + call __gmpn_invert_limb@PLT + + + pop %r8 + pop %rsi + pop %rdi + + mov %rax, %r9 + mov %rbp, %rax + jmp .Lnent + + .align 16, 0x90 +.Lntop:mov (%rsi,%rbx,8), %r10 + mul %r9 + add %r10, %rax + adc %rbp, %rdx + mov %rax, %rbp + mov %rdx, %r13 + imul %r8, %rdx + sub %rdx, %r10 + mov %r8, %rax + add %r10, %rax + cmp %rbp, %r10 + cmovc %r10, %rax + adc $-1, %r13 + cmp %r8, %rax + jae .Lnfx +.Lnok: mov %r13, (%rdi) + sub $8, %rdi +.Lnent:lea 1(%rax), %rbp + dec %rbx + jns .Lntop + + xor %ecx, %ecx + jmp .Lfrac + +.Lnfx: sub %r8, %rax + inc %r13 + jmp .Lnok + +.Lunnormalized: + test %rbx, %rbx + je .L44 + mov -8(%rsi,%rbx,8), %rax + cmp %r8, %rax + jae .L44 + mov %rbp, (%rdi) + mov %rax, %rbp + lea -8(%rdi), %rdi + je .Lret + dec %rbx +.L44: + bsr %r8, %rcx + not %ecx + shl %cl, %r8 + shl %cl, %rbp + + push %rcx + push %rdi + push %rsi + push %r8 + sub $8, %rsp + mov %r8, %rdi + + + + call __gmpn_invert_limb@PLT + + add $8, %rsp + + pop %r8 + pop %rsi + pop %rdi + pop %rcx + + mov %rax, %r9 + mov %rbp, %rax + test %rbx, %rbx + je .Lfrac + +.Luent:dec %rbx + mov (%rsi,%rbx,8), %rbp + neg %ecx + shr %cl, %rbp + neg %ecx + or %rbp, %rax + jmp .Lent + + .align 16, 0x90 +.Lutop:mov (%rsi,%rbx,8), %r10 + shl %cl, %rbp + neg %ecx + shr %cl, %r10 + neg %ecx + or %r10, %rbp + mul %r9 + add %rbp, %rax + adc %r11, %rdx + mov %rax, %r11 + mov %rdx, %r13 + imul %r8, %rdx + sub %rdx, %rbp + mov %r8, %rax + add %rbp, %rax + cmp %r11, %rbp + cmovc %rbp, %rax + adc $-1, %r13 + cmp %r8, %rax + jae .Lufx +.Luok: mov %r13, (%rdi) + sub $8, %rdi +.Lent: mov (%rsi,%rbx,8), %rbp + dec %rbx + lea 1(%rax), %r11 + jns .Lutop + +.Luend:shl %cl, %rbp + mul %r9 + add %rbp, %rax + adc %r11, %rdx + mov %rax, %r11 + mov %rdx, %r13 + imul %r8, %rdx + sub %rdx, %rbp + mov %r8, %rax + add %rbp, %rax + cmp %r11, %rbp + cmovc %rbp, %rax + adc $-1, %r13 + cmp %r8, %rax + jae .Lefx +.Leok: mov %r13, (%rdi) + sub $8, %rdi + jmp .Lfrac + +.Lufx: sub %r8, %rax + inc %r13 + jmp .Luok +.Lefx: sub %r8, %rax + inc %r13 + jmp .Leok + +.Lfrac:mov %r8, %rbp + neg %rbp + jmp .Lfent + + .align 16, 0x90 +.Lftop:mul %r9 + add %r11, %rdx + mov %rax, %r11 + mov %rdx, %r13 + imul %rbp, %rdx + mov %r8, %rax + add %rdx, %rax + cmp %r11, %rdx + cmovc %rdx, %rax + adc $-1, %r13 + mov %r13, (%rdi) + sub $8, %rdi +.Lfent:lea 1(%rax), %r11 + dec %r12 + jns .Lftop + + shr %cl, %rax +.Lret: pop %rbx + pop %rbp + pop %r12 + pop %r13 + + ret + .size __gmpn_divrem_1,.-__gmpn_divrem_1 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/divrem_2.s b/vere/ext/gmp/gen/x86_64-linux/mpn/divrem_2.s new file mode 100644 index 0000000..b1c0d5b --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/divrem_2.s @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_divrem_2 + .type __gmpn_divrem_2,@function + +__gmpn_divrem_2: + + + + push %r15 + push %r14 + push %r13 + push %r12 + lea -24(%rdx,%rcx,8), %r12 + mov %rsi, %r13 + push %rbp + mov %rdi, %rbp + push %rbx + mov 8(%r8), %r11 + mov 16(%r12), %rbx + mov (%r8), %r8 + mov 8(%r12), %r10 + + xor %r15d, %r15d + cmp %rbx, %r11 + ja .L2 + setb %dl + cmp %r10, %r8 + setbe %al + orb %al, %dl + je .L2 + inc %r15d + sub %r8, %r10 + sbb %r11, %rbx +.L2: + lea -3(%rcx,%r13), %r14 + test %r14, %r14 + js .Lend + + push %r8 + push %r10 + push %r11 + mov %r11, %rdi + + + + call __gmpn_invert_limb@PLT + + + pop %r11 + pop %r10 + pop %r8 + + mov %r11, %rdx + mov %rax, %rdi + imul %rax, %rdx + mov %rdx, %r9 + mul %r8 + xor %ecx, %ecx + add %r8, %r9 + adc $-1, %rcx + add %rdx, %r9 + adc $0, %rcx + js 2f +1: dec %rdi + sub %r11, %r9 + sbb $0, %rcx + jns 1b +2: + + lea (%rbp,%r14,8), %rbp + mov %r11, %rsi + neg %rsi + + + + + .align 16, 0x90 +.Ltop: mov %rdi, %rax + mul %rbx + mov %r10, %rcx + add %rax, %rcx + adc %rbx, %rdx + mov %rdx, %r9 + imul %rsi, %rdx + mov %r8, %rax + lea (%rdx, %r10), %rbx + xor %r10d, %r10d + mul %r9 + cmp %r14, %r13 + jg .L19 + mov (%r12), %r10 + sub $8, %r12 +.L19: sub %r8, %r10 + sbb %r11, %rbx + sub %rax, %r10 + sbb %rdx, %rbx + xor %eax, %eax + xor %edx, %edx + cmp %rcx, %rbx + cmovnc %r8, %rax + cmovnc %r11, %rdx + adc $0, %r9 + nop + add %rax, %r10 + adc %rdx, %rbx + cmp %r11, %rbx + jae .Lfix +.Lbck: mov %r9, (%rbp) + sub $8, %rbp + dec %r14 + jns .Ltop + +.Lend: mov %r10, 8(%r12) + mov %rbx, 16(%r12) + pop %rbx + pop %rbp + pop %r12 + pop %r13 + pop %r14 + mov %r15, %rax + pop %r15 + + ret + +.Lfix: seta %dl + cmp %r8, %r10 + setae %al + orb %dl, %al + je .Lbck + inc %r9 + sub %r8, %r10 + sbb %r11, %rbx + jmp .Lbck + .size __gmpn_divrem_2,.-__gmpn_divrem_2 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/fib_table.c b/vere/ext/gmp/gen/x86_64-linux/mpn/fib_table.c new file mode 100644 index 0000000..a830475 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/fib_table.c @@ -0,0 +1,107 @@ +/* This file generated by gen-fib.c - DO NOT EDIT. */ + +#include "gmp.h" +#include "gmp-impl.h" + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +const mp_limb_t +__gmp_fib_table[FIB_TABLE_LIMIT+2] = { + CNST_LIMB (0x1), /* -1 */ + CNST_LIMB (0x0), /* 0 */ + CNST_LIMB (0x1), /* 1 */ + CNST_LIMB (0x1), /* 2 */ + CNST_LIMB (0x2), /* 3 */ + CNST_LIMB (0x3), /* 4 */ + CNST_LIMB (0x5), /* 5 */ + CNST_LIMB (0x8), /* 6 */ + CNST_LIMB (0xd), /* 7 */ + CNST_LIMB (0x15), /* 8 */ + CNST_LIMB (0x22), /* 9 */ + CNST_LIMB (0x37), /* 10 */ + CNST_LIMB (0x59), /* 11 */ + CNST_LIMB (0x90), /* 12 */ + CNST_LIMB (0xe9), /* 13 */ + CNST_LIMB (0x179), /* 14 */ + CNST_LIMB (0x262), /* 15 */ + CNST_LIMB (0x3db), /* 16 */ + CNST_LIMB (0x63d), /* 17 */ + CNST_LIMB (0xa18), /* 18 */ + CNST_LIMB (0x1055), /* 19 */ + CNST_LIMB (0x1a6d), /* 20 */ + CNST_LIMB (0x2ac2), /* 21 */ + CNST_LIMB (0x452f), /* 22 */ + CNST_LIMB (0x6ff1), /* 23 */ + CNST_LIMB (0xb520), /* 24 */ + CNST_LIMB (0x12511), /* 25 */ + CNST_LIMB (0x1da31), /* 26 */ + CNST_LIMB (0x2ff42), /* 27 */ + CNST_LIMB (0x4d973), /* 28 */ + CNST_LIMB (0x7d8b5), /* 29 */ + CNST_LIMB (0xcb228), /* 30 */ + CNST_LIMB (0x148add), /* 31 */ + CNST_LIMB (0x213d05), /* 32 */ + CNST_LIMB (0x35c7e2), /* 33 */ + CNST_LIMB (0x5704e7), /* 34 */ + CNST_LIMB (0x8cccc9), /* 35 */ + CNST_LIMB (0xe3d1b0), /* 36 */ + CNST_LIMB (0x1709e79), /* 37 */ + CNST_LIMB (0x2547029), /* 38 */ + CNST_LIMB (0x3c50ea2), /* 39 */ + CNST_LIMB (0x6197ecb), /* 40 */ + CNST_LIMB (0x9de8d6d), /* 41 */ + CNST_LIMB (0xff80c38), /* 42 */ + CNST_LIMB (0x19d699a5), /* 43 */ + CNST_LIMB (0x29cea5dd), /* 44 */ + CNST_LIMB (0x43a53f82), /* 45 */ + CNST_LIMB (0x6d73e55f), /* 46 */ + CNST_LIMB (0xb11924e1), /* 47 */ + CNST_LIMB (0x11e8d0a40), /* 48 */ + CNST_LIMB (0x1cfa62f21), /* 49 */ + CNST_LIMB (0x2ee333961), /* 50 */ + CNST_LIMB (0x4bdd96882), /* 51 */ + CNST_LIMB (0x7ac0ca1e3), /* 52 */ + CNST_LIMB (0xc69e60a65), /* 53 */ + CNST_LIMB (0x1415f2ac48), /* 54 */ + CNST_LIMB (0x207fd8b6ad), /* 55 */ + CNST_LIMB (0x3495cb62f5), /* 56 */ + CNST_LIMB (0x5515a419a2), /* 57 */ + CNST_LIMB (0x89ab6f7c97), /* 58 */ + CNST_LIMB (0xdec1139639), /* 59 */ + CNST_LIMB (0x1686c8312d0), /* 60 */ + CNST_LIMB (0x2472d96a909), /* 61 */ + CNST_LIMB (0x3af9a19bbd9), /* 62 */ + CNST_LIMB (0x5f6c7b064e2), /* 63 */ + CNST_LIMB (0x9a661ca20bb), /* 64 */ + CNST_LIMB (0xf9d297a859d), /* 65 */ + CNST_LIMB (0x19438b44a658), /* 66 */ + CNST_LIMB (0x28e0b4bf2bf5), /* 67 */ + CNST_LIMB (0x42244003d24d), /* 68 */ + CNST_LIMB (0x6b04f4c2fe42), /* 69 */ + CNST_LIMB (0xad2934c6d08f), /* 70 */ + CNST_LIMB (0x1182e2989ced1), /* 71 */ + CNST_LIMB (0x1c5575e509f60), /* 72 */ + CNST_LIMB (0x2dd8587da6e31), /* 73 */ + CNST_LIMB (0x4a2dce62b0d91), /* 74 */ + CNST_LIMB (0x780626e057bc2), /* 75 */ + CNST_LIMB (0xc233f54308953), /* 76 */ + CNST_LIMB (0x13a3a1c2360515), /* 77 */ + CNST_LIMB (0x1fc6e116668e68), /* 78 */ + CNST_LIMB (0x336a82d89c937d), /* 79 */ + CNST_LIMB (0x533163ef0321e5), /* 80 */ + CNST_LIMB (0x869be6c79fb562), /* 81 */ + CNST_LIMB (0xd9cd4ab6a2d747), /* 82 */ + CNST_LIMB (0x16069317e428ca9), /* 83 */ + CNST_LIMB (0x23a367c34e563f0), /* 84 */ + CNST_LIMB (0x39a9fadb327f099), /* 85 */ + CNST_LIMB (0x5d4d629e80d5489), /* 86 */ + CNST_LIMB (0x96f75d79b354522), /* 87 */ + CNST_LIMB (0xf444c01834299ab), /* 88 */ + CNST_LIMB (0x18b3c1d91e77decd), /* 89 */ + CNST_LIMB (0x27f80ddaa1ba7878), /* 90 */ + CNST_LIMB (0x40abcfb3c0325745), /* 91 */ + CNST_LIMB (0x68a3dd8e61eccfbd), /* 92 */ + CNST_LIMB (0xa94fad42221f2702), /* 93 */ +}; diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/gcd_11.s b/vere/ext/gmp/gen/x86_64-linux/mpn/gcd_11.s new file mode 100644 index 0000000..cf35d25 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/gcd_11.s @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .section .rodata + .align 64, 0x90 +ctz_table: + + .byte 7 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 5 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 6 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 5 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + + .size ctz_table,.-ctz_table + + + + + + + + + .text + .align 64, 0x90 + .globl __gmpn_gcd_11 + .type __gmpn_gcd_11,@function + +__gmpn_gcd_11: + + + mov ctz_table@GOTPCREL(%rip), %r8 + + + jmp .Lent + + .align 16, 0x90 +.Ltop: cmovc %rdx, %rdi + cmovc %rax, %rsi +.Lmid: and $127, %edx + movzbl (%r8,%rdx), %ecx + jz .Lshift_alot + shr %cl, %rdi +.Lent: mov %rdi, %rax + mov %rsi, %rdx + sub %rdi, %rdx + sub %rsi, %rdi + jnz .Ltop + +.Lend: + + + ret + +.Lshift_alot: + shr $7, %rdi + mov %rdi, %rdx + jmp .Lmid + .size __gmpn_gcd_11,.-__gmpn_gcd_11 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/gcd_22.s b/vere/ext/gmp/gen/x86_64-linux/mpn/gcd_22.s new file mode 100644 index 0000000..60f4c71 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/gcd_22.s @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .section .rodata + .align 64, 0x90 +ctz_table: + + .byte 8 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 5 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 6 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 5 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 7 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 5 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 6 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 5 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + + .size ctz_table,.-ctz_table + + + + + + + + + + + + + + + + + + .text + .align 64, 0x90 + .globl __gmpn_gcd_22 + .type __gmpn_gcd_22,@function + +__gmpn_gcd_22: + + + mov %rcx, %rax + + mov ctz_table@GOTPCREL(%rip), %r10 + + + + .align 16, 0x90 +.Ltop: mov %rax, %rcx + sub %rsi, %rcx + jz .Llowz + mov %rdx, %r11 + sbb %rdi, %r11 + + mov %rsi, %r8 + mov %rdi, %r9 + + sub %rax, %rsi + sbb %rdx, %rdi + +.Lbck: cmovc %rcx, %rsi + cmovc %r11, %rdi + cmovc %r8, %rax + cmovc %r9, %rdx + + and $255, %ecx + movzbl (%r10,%rcx), %ecx + jz .Lcount_better + +.Lshr: shr %cl, %rsi + mov %rdi, %r11 + shr %cl, %rdi + neg %rcx + shl %cl, %r11 + or %r11, %rsi + + test %rdx, %rdx + jnz .Ltop + test %rdi, %rdi + jnz .Ltop + +.Lgcd_11: + mov %rax, %rdi + + jmp __gmpn_gcd_11@PLT + + +.Lcount_better: + rep;bsf %rsi, %rcx + jmp .Lshr + +.Llowz: + + + mov %rdx, %rcx + sub %rdi, %rcx + je .Lend + + xor %r11, %r11 + mov %rsi, %r8 + mov %rdi, %r9 + mov %rdi, %rsi + xor %rdi, %rdi + sub %rdx, %rsi + jmp .Lbck + +.Lend: + + + ret + .size __gmpn_gcd_22,.-__gmpn_gcd_22 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/hamdist.s b/vere/ext/gmp/gen/x86_64-linux/mpn/hamdist.s new file mode 100644 index 0000000..1ab3a8c --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/hamdist.s @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_hamdist + .type __gmpn_hamdist,@function + +__gmpn_hamdist: + + + push %rbx + mov $0x5555555555555555, %r10 + push %rbp + mov $0x3333333333333333, %r11 + push %r12 + lea (%rdi,%rdx,8), %rdi + mov $0x0f0f0f0f0f0f0f0f, %rcx + lea (%rsi,%rdx,8), %rsi + neg %rdx + mov $0x0101010101010101, %r12 + xor %eax, %eax + test $1, %dl + jz .Ltop + + mov (%rdi,%rdx,8), %r8 + xor (%rsi,%rdx,8), %r8 + + mov %r8, %r9 + shr %r8 + and %r10, %r8 + sub %r8, %r9 + + mov %r9, %r8 + shr $2, %r9 + and %r11, %r8 + and %r11, %r9 + add %r8, %r9 + + dec %rdx + jmp .Lmid + + .align 16, 0x90 +.Ltop: mov (%rdi,%rdx,8), %r8 + mov 8(%rdi,%rdx,8), %rbx + xor (%rsi,%rdx,8), %r8 + xor 8(%rsi,%rdx,8), %rbx + + mov %r8, %r9 + mov %rbx, %rbp + shr %r8 + shr %rbx + and %r10, %r8 + and %r10, %rbx + sub %r8, %r9 + sub %rbx, %rbp + + mov %r9, %r8 + mov %rbp, %rbx + shr $2, %r9 + shr $2, %rbp + and %r11, %r8 + and %r11, %r9 + and %r11, %rbx + and %r11, %rbp + add %r8, %r9 + add %rbx, %rbp + + add %rbp, %r9 +.Lmid: mov %r9, %r8 + shr $4, %r9 + and %rcx, %r8 + and %rcx, %r9 + add %r8, %r9 + + imul %r12, %r9 + shr $56, %r9 + + add %r9, %rax + add $2, %rdx + jnc .Ltop + +.Lend: + pop %r12 + pop %rbp + pop %rbx + + ret + .size __gmpn_hamdist,.-__gmpn_hamdist diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb.s b/vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb.s new file mode 100644 index 0000000..d7352e7 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb.s @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.hidden __gmpn_invert_limb_table + + + .text + .align 16, 0x90 + .globl __gmpn_invert_limb + .type __gmpn_invert_limb,@function + +__gmpn_invert_limb: + + + mov %rdi, %rax + shr $55, %rax + + lea -512+__gmpn_invert_limb_table(%rip), %r8 + + movzwl (%r8,%rax,2), %ecx + + + mov %rdi, %rsi + mov %ecx, %eax + imul %ecx, %ecx + shr $24, %rsi + inc %rsi + imul %rsi, %rcx + shr $40, %rcx + sal $11, %eax + dec %eax + sub %ecx, %eax + + + mov $0x1000000000000000, %rcx + imul %rax, %rsi + sub %rsi, %rcx + imul %rax, %rcx + sal $13, %rax + shr $47, %rcx + add %rax, %rcx + + + mov %rdi, %rsi + shr %rsi + sbb %rax, %rax + sub %rax, %rsi + imul %rcx, %rsi + and %rcx, %rax + shr %rax + sub %rsi, %rax + mul %rcx + sal $31, %rcx + shr %rdx + add %rdx, %rcx + + mov %rdi, %rax + mul %rcx + add %rdi, %rax + mov %rcx, %rax + adc %rdi, %rdx + sub %rdx, %rax + + + ret + .size __gmpn_invert_limb,.-__gmpn_invert_limb + diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb_table.s b/vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb_table.s new file mode 100644 index 0000000..a990458 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb_table.s @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.hidden __gmpn_invert_limb_table + + + + + .section .rodata + .align 2, 0x90 + .globl __gmpn_invert_limb_table +__gmpn_invert_limb_table: + .value 2045 + .value 2037 + .value 2029 + .value 2021 + .value 2013 + .value 2005 + .value 1998 + .value 1990 + .value 1983 + .value 1975 + .value 1968 + .value 1960 + .value 1953 + .value 1946 + .value 1938 + .value 1931 + .value 1924 + .value 1917 + .value 1910 + .value 1903 + .value 1896 + .value 1889 + .value 1883 + .value 1876 + .value 1869 + .value 1863 + .value 1856 + .value 1849 + .value 1843 + .value 1836 + .value 1830 + .value 1824 + .value 1817 + .value 1811 + .value 1805 + .value 1799 + .value 1792 + .value 1786 + .value 1780 + .value 1774 + .value 1768 + .value 1762 + .value 1756 + .value 1750 + .value 1745 + .value 1739 + .value 1733 + .value 1727 + .value 1722 + .value 1716 + .value 1710 + .value 1705 + .value 1699 + .value 1694 + .value 1688 + .value 1683 + .value 1677 + .value 1672 + .value 1667 + .value 1661 + .value 1656 + .value 1651 + .value 1646 + .value 1641 + .value 1636 + .value 1630 + .value 1625 + .value 1620 + .value 1615 + .value 1610 + .value 1605 + .value 1600 + .value 1596 + .value 1591 + .value 1586 + .value 1581 + .value 1576 + .value 1572 + .value 1567 + .value 1562 + .value 1558 + .value 1553 + .value 1548 + .value 1544 + .value 1539 + .value 1535 + .value 1530 + .value 1526 + .value 1521 + .value 1517 + .value 1513 + .value 1508 + .value 1504 + .value 1500 + .value 1495 + .value 1491 + .value 1487 + .value 1483 + .value 1478 + .value 1474 + .value 1470 + .value 1466 + .value 1462 + .value 1458 + .value 1454 + .value 1450 + .value 1446 + .value 1442 + .value 1438 + .value 1434 + .value 1430 + .value 1426 + .value 1422 + .value 1418 + .value 1414 + .value 1411 + .value 1407 + .value 1403 + .value 1399 + .value 1396 + .value 1392 + .value 1388 + .value 1384 + .value 1381 + .value 1377 + .value 1374 + .value 1370 + .value 1366 + .value 1363 + .value 1359 + .value 1356 + .value 1352 + .value 1349 + .value 1345 + .value 1342 + .value 1338 + .value 1335 + .value 1332 + .value 1328 + .value 1325 + .value 1322 + .value 1318 + .value 1315 + .value 1312 + .value 1308 + .value 1305 + .value 1302 + .value 1299 + .value 1295 + .value 1292 + .value 1289 + .value 1286 + .value 1283 + .value 1280 + .value 1276 + .value 1273 + .value 1270 + .value 1267 + .value 1264 + .value 1261 + .value 1258 + .value 1255 + .value 1252 + .value 1249 + .value 1246 + .value 1243 + .value 1240 + .value 1237 + .value 1234 + .value 1231 + .value 1228 + .value 1226 + .value 1223 + .value 1220 + .value 1217 + .value 1214 + .value 1211 + .value 1209 + .value 1206 + .value 1203 + .value 1200 + .value 1197 + .value 1195 + .value 1192 + .value 1189 + .value 1187 + .value 1184 + .value 1181 + .value 1179 + .value 1176 + .value 1173 + .value 1171 + .value 1168 + .value 1165 + .value 1163 + .value 1160 + .value 1158 + .value 1155 + .value 1153 + .value 1150 + .value 1148 + .value 1145 + .value 1143 + .value 1140 + .value 1138 + .value 1135 + .value 1133 + .value 1130 + .value 1128 + .value 1125 + .value 1123 + .value 1121 + .value 1118 + .value 1116 + .value 1113 + .value 1111 + .value 1109 + .value 1106 + .value 1104 + .value 1102 + .value 1099 + .value 1097 + .value 1095 + .value 1092 + .value 1090 + .value 1088 + .value 1086 + .value 1083 + .value 1081 + .value 1079 + .value 1077 + .value 1074 + .value 1072 + .value 1070 + .value 1068 + .value 1066 + .value 1064 + .value 1061 + .value 1059 + .value 1057 + .value 1055 + .value 1053 + .value 1051 + .value 1049 + .value 1047 + .value 1044 + .value 1042 + .value 1040 + .value 1038 + .value 1036 + .value 1034 + .value 1032 + .value 1030 + .value 1028 + .value 1026 + .value 1024 + diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/ior_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/ior_n.s new file mode 100644 index 0000000..6509f28 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/ior_n.s @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_ior_n + .type __gmpn_ior_n,@function + +__gmpn_ior_n: + + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je .Lb00 + cmp $2, %eax + jc .Lb01 + je .Lb10 + +.Lb11: or (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp .Le11 +.Lb10: add $-2, %rcx + jmp .Le10 +.Lb01: or (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz .Lret + +.Ltop: mov (%rdx,%rcx,8), %r8 +.Lb00: mov 8(%rdx,%rcx,8), %r9 + or (%rsi,%rcx,8), %r8 + or 8(%rsi,%rcx,8), %r9 + nop + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +.Le11: mov 16(%rdx,%rcx,8), %r8 +.Le10: mov 24(%rdx,%rcx,8), %r9 + or 16(%rsi,%rcx,8), %r8 + or 24(%rsi,%rcx,8), %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc .Ltop + +.Lret: + ret + .size __gmpn_ior_n,.-__gmpn_ior_n + + + + + diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/iorn_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/iorn_n.s new file mode 100644 index 0000000..b199ca3 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/iorn_n.s @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_iorn_n + .type __gmpn_iorn_n,@function + +__gmpn_iorn_n: + + + mov (%rdx), %r8 + not %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je .Lb00 + cmp $2, %eax + jc .Lb01 + je .Lb10 + +.Lb11: or (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp .Le11 +.Lb10: add $-2, %rcx + jmp .Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90 +.Lb01: or (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz .Lret + +.Ltop: mov (%rdx,%rcx,8), %r8 + not %r8 +.Lb00: mov 8(%rdx,%rcx,8), %r9 + not %r9 + or (%rsi,%rcx,8), %r8 + or 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +.Le11: mov 16(%rdx,%rcx,8), %r8 + not %r8 +.Le10: mov 24(%rdx,%rcx,8), %r9 + not %r9 + or 16(%rsi,%rcx,8), %r8 + or 24(%rsi,%rcx,8), %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc .Ltop + +.Lret: + ret + .size __gmpn_iorn_n,.-__gmpn_iorn_n + + + diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/jacobitab.h b/vere/ext/gmp/gen/x86_64-linux/mpn/jacobitab.h new file mode 100644 index 0000000..4bdbfcc --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/jacobitab.h @@ -0,0 +1,13 @@ + 0, 0, 0, 0, 0,12, 8, 4, 1, 1, 1, 1, 1,13, 9, 5, + 2, 2, 2, 2, 2, 6,10,14, 3, 3, 3, 3, 3, 7,11,15, + 4,16, 6,18, 4, 0,12, 8, 5,17, 7,19, 5, 1,13, 9, + 6,18, 4,16, 6,10,14, 2, 7,19, 5,17, 7,11,15, 3, + 8,10, 9,11, 8, 4, 0,12, 9,11, 8,10, 9, 5, 1,13, +10, 9,11, 8,10,14, 2, 6,11, 8,10, 9,11,15, 3, 7, +12,22,24,20,12, 8, 4, 0,13,23,25,21,13, 9, 5, 1, +25,21,13,23,14, 2, 6,10,24,20,12,22,15, 3, 7,11, +16, 6,18, 4,16,16,16,16,17, 7,19, 5,17,17,17,17, +18, 4,16, 6,18,22,19,23,19, 5,17, 7,19,23,18,22, +20,12,22,24,20,20,20,20,21,13,23,25,21,21,21,21, +22,24,20,12,22,19,23,18,23,25,21,13,23,18,22,19, +24,20,12,22,15, 3, 7,11,25,21,13,23,14, 2, 6,10, diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/lshift.s b/vere/ext/gmp/gen/x86_64-linux/mpn/lshift.s new file mode 100644 index 0000000..89e9566 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/lshift.s @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_lshift + .type __gmpn_lshift,@function + +__gmpn_lshift: + + + neg %ecx + mov -8(%rsi,%rdx,8), %rax + shr %cl, %rax + + neg %ecx + lea 1(%rdx), %r8d + and $3, %r8d + je .Lrlx + + dec %r8d + jne .L1 + + mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + shr %cl, %r8 + or %r8, %r10 + mov %r10, -8(%rdi,%rdx,8) + dec %rdx + jmp .Lrll + +.L1: dec %r8d + je .L1x + + mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + shr %cl, %r8 + or %r8, %r10 + mov %r10, -8(%rdi,%rdx,8) + dec %rdx + neg %ecx +.L1x: + cmp $1, %rdx + je .Last + mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + mov -16(%rsi,%rdx,8), %r11 + shl %cl, %r11 + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + mov -24(%rsi,%rdx,8), %r9 + shr %cl, %r8 + or %r8, %r10 + shr %cl, %r9 + or %r9, %r11 + mov %r10, -8(%rdi,%rdx,8) + mov %r11, -16(%rdi,%rdx,8) + sub $2, %rdx + +.Lrll: neg %ecx +.Lrlx: mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + mov -16(%rsi,%rdx,8), %r11 + shl %cl, %r11 + + sub $4, %rdx + jb .Lend + .align 16, 0x90 +.Ltop: + + neg %ecx + mov 16(%rsi,%rdx,8), %r8 + mov 8(%rsi,%rdx,8), %r9 + shr %cl, %r8 + or %r8, %r10 + shr %cl, %r9 + or %r9, %r11 + mov %r10, 24(%rdi,%rdx,8) + mov %r11, 16(%rdi,%rdx,8) + + mov 0(%rsi,%rdx,8), %r8 + mov -8(%rsi,%rdx,8), %r9 + shr %cl, %r8 + shr %cl, %r9 + + + neg %ecx + mov 8(%rsi,%rdx,8), %r10 + mov 0(%rsi,%rdx,8), %r11 + shl %cl, %r10 + or %r10, %r8 + shl %cl, %r11 + or %r11, %r9 + mov %r8, 8(%rdi,%rdx,8) + mov %r9, 0(%rdi,%rdx,8) + + mov -8(%rsi,%rdx,8), %r10 + mov -16(%rsi,%rdx,8), %r11 + shl %cl, %r10 + shl %cl, %r11 + + sub $4, %rdx + jae .Ltop +.Lend: + neg %ecx + mov 8(%rsi), %r8 + shr %cl, %r8 + or %r8, %r10 + mov (%rsi), %r9 + shr %cl, %r9 + or %r9, %r11 + mov %r10, 16(%rdi) + mov %r11, 8(%rdi) + + neg %ecx +.Last: mov (%rsi), %r10 + shl %cl, %r10 + mov %r10, (%rdi) + + ret + .size __gmpn_lshift,.-__gmpn_lshift diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/lshiftc.s b/vere/ext/gmp/gen/x86_64-linux/mpn/lshiftc.s new file mode 100644 index 0000000..6809940 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/lshiftc.s @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_lshiftc + .type __gmpn_lshiftc,@function + +__gmpn_lshiftc: + + + neg %ecx + mov -8(%rsi,%rdx,8), %rax + shr %cl, %rax + + neg %ecx + lea 1(%rdx), %r8d + and $3, %r8d + je .Lrlx + + dec %r8d + jne .L1 + + mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + shr %cl, %r8 + or %r8, %r10 + not %r10 + mov %r10, -8(%rdi,%rdx,8) + dec %rdx + jmp .Lrll + +.L1: dec %r8d + je .L1x + + mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + shr %cl, %r8 + or %r8, %r10 + not %r10 + mov %r10, -8(%rdi,%rdx,8) + dec %rdx + neg %ecx +.L1x: + cmp $1, %rdx + je .Last + mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + mov -16(%rsi,%rdx,8), %r11 + shl %cl, %r11 + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + mov -24(%rsi,%rdx,8), %r9 + shr %cl, %r8 + or %r8, %r10 + shr %cl, %r9 + or %r9, %r11 + not %r10 + not %r11 + mov %r10, -8(%rdi,%rdx,8) + mov %r11, -16(%rdi,%rdx,8) + sub $2, %rdx + +.Lrll: neg %ecx +.Lrlx: mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + mov -16(%rsi,%rdx,8), %r11 + shl %cl, %r11 + + sub $4, %rdx + jb .Lend + .align 16, 0x90 +.Ltop: + + neg %ecx + mov 16(%rsi,%rdx,8), %r8 + mov 8(%rsi,%rdx,8), %r9 + shr %cl, %r8 + or %r8, %r10 + shr %cl, %r9 + or %r9, %r11 + not %r10 + not %r11 + mov %r10, 24(%rdi,%rdx,8) + mov %r11, 16(%rdi,%rdx,8) + + mov 0(%rsi,%rdx,8), %r8 + mov -8(%rsi,%rdx,8), %r9 + shr %cl, %r8 + shr %cl, %r9 + + + neg %ecx + mov 8(%rsi,%rdx,8), %r10 + mov 0(%rsi,%rdx,8), %r11 + shl %cl, %r10 + or %r10, %r8 + shl %cl, %r11 + or %r11, %r9 + not %r8 + not %r9 + mov %r8, 8(%rdi,%rdx,8) + mov %r9, 0(%rdi,%rdx,8) + + mov -8(%rsi,%rdx,8), %r10 + mov -16(%rsi,%rdx,8), %r11 + shl %cl, %r10 + shl %cl, %r11 + + sub $4, %rdx + jae .Ltop +.Lend: + neg %ecx + mov 8(%rsi), %r8 + shr %cl, %r8 + or %r8, %r10 + mov (%rsi), %r9 + shr %cl, %r9 + or %r9, %r11 + not %r10 + not %r11 + mov %r10, 16(%rdi) + mov %r11, 8(%rdi) + + neg %ecx +.Last: mov (%rsi), %r10 + shl %cl, %r10 + not %r10 + mov %r10, (%rdi) + + ret + .size __gmpn_lshiftc,.-__gmpn_lshiftc diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_1.s new file mode 100644 index 0000000..a8e3198 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_1.s @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mod_1_1p + .type __gmpn_mod_1_1p,@function + +__gmpn_mod_1_1p: + + + push %rbp + push %rbx + mov %rdx, %rbx + mov %rcx, %r8 + + mov -8(%rdi, %rsi, 8), %rax + cmp $3, %rsi + jnc .Lfirst + mov -16(%rdi, %rsi, 8), %rbp + jmp .Lreduce_two + +.Lfirst: + + mov 24(%r8), %r11 + mul %r11 + mov -24(%rdi, %rsi, 8), %rbp + add %rax, %rbp + mov -16(%rdi, %rsi, 8), %rax + adc %rdx, %rax + sbb %rcx, %rcx + sub $4, %rsi + jc .Lreduce_three + + mov %r11, %r10 + sub %rbx, %r10 + + .align 16, 0x90 +.Ltop: and %r11, %rcx + lea (%r10, %rbp), %r9 + mul %r11 + add %rbp, %rcx + mov (%rdi, %rsi, 8), %rbp + cmovc %r9, %rcx + add %rax, %rbp + mov %rcx, %rax + adc %rdx, %rax + sbb %rcx, %rcx + sub $1, %rsi + jnc .Ltop + +.Lreduce_three: + + and %rbx, %rcx + sub %rcx, %rax + +.Lreduce_two: + mov 8(%r8), %ecx + test %ecx, %ecx + jz .Lnormalized + + + mulq 16(%r8) + xor %r9, %r9 + add %rax, %rbp + adc %rdx, %r9 + mov %r9, %rax + + + + shld %cl, %rbp, %rax + + shl %cl, %rbp + jmp .Ludiv + +.Lnormalized: + mov %rax, %r9 + sub %rbx, %r9 + cmovnc %r9, %rax + +.Ludiv: + lea 1(%rax), %r9 + mulq (%r8) + add %rbp, %rax + adc %r9, %rdx + imul %rbx, %rdx + sub %rdx, %rbp + cmp %rbp, %rax + lea (%rbx, %rbp), %rax + cmovnc %rbp, %rax + cmp %rbx, %rax + jnc .Lfix +.Lok: shr %cl, %rax + + pop %rbx + pop %rbp + + ret +.Lfix: sub %rbx, %rax + jmp .Lok + .size __gmpn_mod_1_1p,.-__gmpn_mod_1_1p + + .align 16, 0x90 + .globl __gmpn_mod_1_1p_cps + .type __gmpn_mod_1_1p_cps,@function + +__gmpn_mod_1_1p_cps: + + + push %rbp + bsr %rsi, %rcx + push %rbx + mov %rdi, %rbx + push %r12 + xor $63, %ecx + mov %rsi, %r12 + mov %ecx, %ebp + sal %cl, %r12 + mov %r12, %rdi + + + + call __gmpn_invert_limb@PLT + + + neg %r12 + mov %r12, %r8 + mov %rax, (%rbx) + mov %rbp, 8(%rbx) + imul %rax, %r12 + mov %r12, 24(%rbx) + mov %ebp, %ecx + test %ecx, %ecx + jz .Lz + + mov $1, %edx + + shld %cl, %rax, %rdx + + imul %rdx, %r8 + shr %cl, %r8 + mov %r8, 16(%rbx) +.Lz: + pop %r12 + pop %rbx + pop %rbp + + ret + .size __gmpn_mod_1_1p_cps,.-__gmpn_mod_1_1p_cps + diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_2.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_2.s new file mode 100644 index 0000000..1a19107 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_2.s @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mod_1s_2p + .type __gmpn_mod_1s_2p,@function + +__gmpn_mod_1s_2p: + + + push %r14 + test $1, %sil + mov %rdx, %r14 + push %r13 + mov %rcx, %r13 + push %r12 + push %rbp + push %rbx + mov 16(%rcx), %r10 + mov 24(%rcx), %rbx + mov 32(%rcx), %rbp + je .Lb0 + dec %rsi + je .Lone + mov -8(%rdi,%rsi,8), %rax + mul %r10 + mov %rax, %r9 + mov %rdx, %r8 + mov (%rdi,%rsi,8), %rax + add -16(%rdi,%rsi,8), %r9 + adc $0, %r8 + mul %rbx + add %rax, %r9 + adc %rdx, %r8 + jmp .L11 + +.Lb0: mov -8(%rdi,%rsi,8), %r8 + mov -16(%rdi,%rsi,8), %r9 + +.L11: sub $4, %rsi + jb .Led2 + lea 40(%rdi,%rsi,8), %rdi + mov -40(%rdi), %r11 + mov -32(%rdi), %rax + jmp .Lm0 + + .align 16, 0x90 +.Ltop: mov -24(%rdi), %r9 + add %rax, %r11 + mov -16(%rdi), %rax + adc %rdx, %r12 + mul %r10 + add %rax, %r9 + mov %r11, %rax + mov %rdx, %r8 + adc $0, %r8 + mul %rbx + add %rax, %r9 + mov %r12, %rax + adc %rdx, %r8 + mul %rbp + sub $2, %rsi + jb .Led1 + mov -40(%rdi), %r11 + add %rax, %r9 + mov -32(%rdi), %rax + adc %rdx, %r8 +.Lm0: mul %r10 + add %rax, %r11 + mov %r9, %rax + mov %rdx, %r12 + adc $0, %r12 + mul %rbx + add %rax, %r11 + lea -32(%rdi), %rdi + mov %r8, %rax + adc %rdx, %r12 + mul %rbp + sub $2, %rsi + jae .Ltop + +.Led0: mov %r11, %r9 + mov %r12, %r8 +.Led1: add %rax, %r9 + adc %rdx, %r8 +.Led2: mov 8(%r13), %edi + mov %r8, %rax + mov %r9, %r8 + mul %r10 + add %rax, %r8 + adc $0, %rdx +.L1: xor %ecx, %ecx + mov %r8, %r9 + sub %edi, %ecx + shr %cl, %r9 + mov %edi, %ecx + sal %cl, %rdx + or %rdx, %r9 + sal %cl, %r8 + mov %r9, %rax + mulq (%r13) + mov %rax, %rsi + inc %r9 + add %r8, %rsi + adc %r9, %rdx + imul %r14, %rdx + sub %rdx, %r8 + lea (%r8,%r14), %rax + cmp %r8, %rsi + cmovc %rax, %r8 + mov %r8, %rax + sub %r14, %rax + cmovc %r8, %rax + mov %edi, %ecx + shr %cl, %rax + pop %rbx + pop %rbp + pop %r12 + pop %r13 + pop %r14 + + ret +.Lone: + mov (%rdi), %r8 + mov 8(%rcx), %edi + xor %rdx, %rdx + jmp .L1 + .size __gmpn_mod_1s_2p,.-__gmpn_mod_1s_2p + + .align 16, 0x90 + .globl __gmpn_mod_1s_2p_cps + .type __gmpn_mod_1s_2p_cps,@function + +__gmpn_mod_1s_2p_cps: + + + push %rbp + bsr %rsi, %rcx + push %rbx + mov %rdi, %rbx + push %r12 + xor $63, %ecx + mov %rsi, %r12 + mov %ecx, %ebp + sal %cl, %r12 + mov %r12, %rdi + + + + call __gmpn_invert_limb@PLT + + + mov %r12, %r8 + mov %rax, %r11 + mov %rax, (%rbx) + mov %rbp, 8(%rbx) + neg %r8 + mov %ebp, %ecx + mov $1, %esi + + shld %cl, %rax, %rsi + + imul %r8, %rsi + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 16(%rbx) + + not %rdx + imul %r12, %rdx + lea (%rdx,%r12), %rsi + cmp %rdx, %rax + cmovnc %rdx, %rsi + mov %r11, %rax + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 24(%rbx) + + not %rdx + imul %r12, %rdx + add %rdx, %r12 + cmp %rdx, %rax + cmovnc %rdx, %r12 + + shr %cl, %r12 + mov %r12, 32(%rbx) + + pop %r12 + pop %rbx + pop %rbp + + ret + .size __gmpn_mod_1s_2p_cps,.-__gmpn_mod_1s_2p_cps diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_4.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_4.s new file mode 100644 index 0000000..491753d --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_4.s @@ -0,0 +1,283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mod_1s_4p + .type __gmpn_mod_1s_4p,@function + +__gmpn_mod_1s_4p: + + + push %r15 + push %r14 + push %r13 + push %r12 + push %rbp + push %rbx + + mov %rdx, %r15 + mov %rcx, %r14 + mov 16(%rcx), %r11 + mov 24(%rcx), %rbx + mov 32(%rcx), %rbp + mov 40(%rcx), %r13 + mov 48(%rcx), %r12 + xor %r8d, %r8d + mov %esi, %edx + and $3, %edx + je .Lb0 + cmp $2, %edx + jc .Lb1 + je .Lb2 + +.Lb3: lea -24(%rdi,%rsi,8), %rdi + mov 8(%rdi), %rax + mul %r11 + mov (%rdi), %r9 + add %rax, %r9 + adc %rdx, %r8 + mov 16(%rdi), %rax + mul %rbx + jmp .Lm0 + + .align 8, 0x90 +.Lb0: lea -32(%rdi,%rsi,8), %rdi + mov 8(%rdi), %rax + mul %r11 + mov (%rdi), %r9 + add %rax, %r9 + adc %rdx, %r8 + mov 16(%rdi), %rax + mul %rbx + add %rax, %r9 + adc %rdx, %r8 + mov 24(%rdi), %rax + mul %rbp + jmp .Lm0 + + .align 8, 0x90 +.Lb1: lea -8(%rdi,%rsi,8), %rdi + mov (%rdi), %r9 + jmp .Lm1 + + .align 8, 0x90 +.Lb2: lea -16(%rdi,%rsi,8), %rdi + mov 8(%rdi), %r8 + mov (%rdi), %r9 + jmp .Lm1 + + .align 16, 0x90 +.Ltop: mov -24(%rdi), %rax + mov -32(%rdi), %r10 + mul %r11 + add %rax, %r10 + mov -16(%rdi), %rax + mov $0, %ecx + adc %rdx, %rcx + mul %rbx + add %rax, %r10 + mov -8(%rdi), %rax + adc %rdx, %rcx + sub $32, %rdi + mul %rbp + add %rax, %r10 + mov %r13, %rax + adc %rdx, %rcx + mul %r9 + add %rax, %r10 + mov %r12, %rax + adc %rdx, %rcx + mul %r8 + mov %r10, %r9 + mov %rcx, %r8 +.Lm0: add %rax, %r9 + adc %rdx, %r8 +.Lm1: sub $4, %rsi + ja .Ltop + +.Lend: mov 8(%r14), %esi + mov %r8, %rax + mul %r11 + mov %rax, %r8 + add %r9, %r8 + adc $0, %rdx + xor %ecx, %ecx + sub %esi, %ecx + mov %r8, %rdi + shr %cl, %rdi + mov %esi, %ecx + sal %cl, %rdx + or %rdx, %rdi + mov %rdi, %rax + mulq (%r14) + mov %r15, %rbx + mov %rax, %r9 + sal %cl, %r8 + inc %rdi + add %r8, %r9 + adc %rdi, %rdx + imul %rbx, %rdx + sub %rdx, %r8 + lea (%r8,%rbx), %rax + cmp %r8, %r9 + cmovc %rax, %r8 + mov %r8, %rax + sub %rbx, %rax + cmovc %r8, %rax + shr %cl, %rax + pop %rbx + pop %rbp + pop %r12 + pop %r13 + pop %r14 + pop %r15 + + ret + .size __gmpn_mod_1s_4p,.-__gmpn_mod_1s_4p + + .align 16, 0x90 + .globl __gmpn_mod_1s_4p_cps + .type __gmpn_mod_1s_4p_cps,@function + +__gmpn_mod_1s_4p_cps: + + + push %rbp + bsr %rsi, %rcx + push %rbx + mov %rdi, %rbx + push %r12 + xor $63, %ecx + mov %rsi, %r12 + mov %ecx, %ebp + sal %cl, %r12 + mov %r12, %rdi + + + + call __gmpn_invert_limb@PLT + + + mov %r12, %r8 + mov %rax, %r11 + mov %rax, (%rbx) + mov %rbp, 8(%rbx) + neg %r8 + mov %ebp, %ecx + mov $1, %esi + + shld %cl, %rax, %rsi + + imul %r8, %rsi + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 16(%rbx) + + not %rdx + imul %r12, %rdx + lea (%rdx,%r12), %rsi + cmp %rdx, %rax + cmovnc %rdx, %rsi + mov %r11, %rax + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 24(%rbx) + + not %rdx + imul %r12, %rdx + lea (%rdx,%r12), %rsi + cmp %rdx, %rax + cmovnc %rdx, %rsi + mov %r11, %rax + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 32(%rbx) + + not %rdx + imul %r12, %rdx + lea (%rdx,%r12), %rsi + cmp %rdx, %rax + cmovnc %rdx, %rsi + mov %r11, %rax + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 40(%rbx) + + not %rdx + imul %r12, %rdx + add %rdx, %r12 + cmp %rdx, %rax + cmovnc %rdx, %r12 + + shr %cl, %r12 + mov %r12, 48(%rbx) + + pop %r12 + pop %rbx + pop %rbp + + ret + .size __gmpn_mod_1s_4p_cps,.-__gmpn_mod_1s_4p_cps diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mod_34lsub1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_34lsub1.s new file mode 100644 index 0000000..e2a2ebb --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_34lsub1.s @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_mod_34lsub1 + .type __gmpn_mod_34lsub1,@function + +__gmpn_mod_34lsub1: + + + + mov $0x0000FFFFFFFFFFFF, %r11 + + mov (%rdi), %rax + + cmp $2, %rsi + ja .Lgt2 + + jb .Lone + + mov 8(%rdi), %rsi + mov %rax, %rdx + shr $48, %rax + + and %r11, %rdx + add %rdx, %rax + mov %esi, %edx + + shr $32, %rsi + add %rsi, %rax + + shl $16, %rdx + add %rdx, %rax +.Lone: + ret + + + + + +.Lgt2: mov 8(%rdi), %rcx + mov 16(%rdi), %rdx + xor %r9, %r9 + add $24, %rdi + sub $12, %rsi + jc .Lend + .align 16, 0x90 +.Ltop: + add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add 24(%rdi), %rax + adc 32(%rdi), %rcx + adc 40(%rdi), %rdx + adc $0, %r9 + add 48(%rdi), %rax + adc 56(%rdi), %rcx + adc 64(%rdi), %rdx + adc $0, %r9 + add $72, %rdi + sub $9, %rsi + jnc .Ltop + +.Lend: + lea .Ltab(%rip), %r8 + movslq 36(%r8,%rsi,4), %r10 + add %r10, %r8 + jmp *%r8 + + .section .data.rel.ro.local,"a",@progbits + .align 8, 0x90 +.Ltab: .long .L0-.Ltab + .long .L1-.Ltab + .long .L2-.Ltab + .long .L3-.Ltab + .long .L4-.Ltab + .long .L5-.Ltab + .long .L6-.Ltab + .long .L7-.Ltab + .long .L8-.Ltab + .text + +.L6: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +.L3: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + jmp .Lcj1 + +.L7: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +.L4: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +.L1: add (%rdi), %rax + adc $0, %rcx + jmp .Lcj2 + +.L8: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +.L5: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +.L2: add (%rdi), %rax + adc 8(%rdi), %rcx + +.Lcj2: adc $0, %rdx +.Lcj1: adc $0, %r9 +.L0: add %r9, %rax + adc $0, %rcx + adc $0, %rdx + adc $0, %rax + + mov %rax, %rdi + shr $48, %rax + + and %r11, %rdi + mov %ecx, %r10d + + shr $32, %rcx + + add %rdi, %rax + movzwl %dx, %edi + shl $16, %r10 + + add %rcx, %rax + shr $16, %rdx + + add %r10, %rax + shl $32, %rdi + + add %rdx, %rax + add %rdi, %rax + + + ret + .size __gmpn_mod_34lsub1,.-__gmpn_mod_34lsub1 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mode1o.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mode1o.s new file mode 100644 index 0000000..bff06a3 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mode1o.s @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_modexact_1_odd + .type __gmpn_modexact_1_odd,@function + +__gmpn_modexact_1_odd: + + + mov $0, %ecx + + + .globl __gmpn_modexact_1c_odd + .type __gmpn_modexact_1c_odd,@function + +__gmpn_modexact_1c_odd: + + +.Lent: + + + + + + mov %rdx, %r8 + shr %edx + + mov __gmp_binvert_limb_table@GOTPCREL(%rip), %r9 + + + + and $127, %edx + mov %rcx, %r10 + + movzbl (%r9,%rdx), %edx + + mov (%rdi), %rax + lea (%rdi,%rsi,8), %r11 + mov %r8, %rdi + + lea (%rdx,%rdx), %ecx + imul %edx, %edx + + neg %rsi + + imul %edi, %edx + + sub %edx, %ecx + + lea (%rcx,%rcx), %edx + imul %ecx, %ecx + + imul %edi, %ecx + + sub %ecx, %edx + xor %ecx, %ecx + + lea (%rdx,%rdx), %r9 + imul %rdx, %rdx + + imul %r8, %rdx + + sub %rdx, %r9 + mov %r10, %rdx + + + + inc %rsi + jz .Lone + + + .align 16, 0x90 +.Ltop: + + + + + + + + + + sub %rdx, %rax + + adc $0, %rcx + imul %r9, %rax + + mul %r8 + + mov (%r11,%rsi,8), %rax + sub %rcx, %rax + setc %cl + + inc %rsi + jnz .Ltop + + +.Lone: + sub %rdx, %rax + + adc $0, %rcx + imul %r9, %rax + + mul %r8 + + lea (%rcx,%rdx), %rax + + ret + + .size __gmpn_modexact_1c_odd,.-__gmpn_modexact_1c_odd + .size __gmpn_modexact_1_odd,.-__gmpn_modexact_1_odd diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mp_bases.c b/vere/ext/gmp/gen/x86_64-linux/mpn/mp_bases.c new file mode 100644 index 0000000..c72c531 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mp_bases.c @@ -0,0 +1,268 @@ +/* This file generated by gen-bases.c - DO NOT EDIT. */ + +#include "gmp-impl.h" + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +const struct bases mp_bases[257] = +{ + /* 0 */ { 0, 0, 0, 0, 0 }, + /* 1 */ { 0, 0, 0, 0, 0 }, + /* 2 */ { 64, CNST_LIMB(0xffffffffffffffff), CNST_LIMB(0x1fffffffffffffff), CNST_LIMB(0x1), CNST_LIMB(0x0) }, + /* 3 */ { 40, CNST_LIMB(0xa1849cc1a9a9e94e), CNST_LIMB(0x32b803473f7ad0f3), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 4 */ { 32, CNST_LIMB(0x7fffffffffffffff), CNST_LIMB(0x3fffffffffffffff), CNST_LIMB(0x2), CNST_LIMB(0x0) }, + /* 5 */ { 27, CNST_LIMB(0x6e40d1a4143dcb94), CNST_LIMB(0x4a4d3c25e68dc57f), CNST_LIMB(0x6765c793fa10079d), CNST_LIMB(0x3ce9a36f23c0fc90) }, + /* 6 */ { 24, CNST_LIMB(0x6308c91b702a7cf4), CNST_LIMB(0x52b803473f7ad0f3), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 7 */ { 22, CNST_LIMB(0x5b3064eb3aa6d388), CNST_LIMB(0x59d5d9fd5010b366), CNST_LIMB(0x3642798750226111), CNST_LIMB(0x2df495ccaa57147b) }, + /* 8 */ { 21, CNST_LIMB(0x5555555555555555), CNST_LIMB(0x5fffffffffffffff), CNST_LIMB(0x3), CNST_LIMB(0x0) }, + /* 9 */ { 20, CNST_LIMB(0x50c24e60d4d4f4a7), CNST_LIMB(0x6570068e7ef5a1e7), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 10 */ { 19, CNST_LIMB(0x4d104d427de7fbcc), CNST_LIMB(0x6a4d3c25e68dc57f), CNST_LIMB(0x8ac7230489e80000), CNST_LIMB(0xd83c94fb6d2ac34a) }, + /* 11 */ { 18, CNST_LIMB(0x4a00270775914e88), CNST_LIMB(0x6eb3a9f01975077f), CNST_LIMB(0x4d28cb56c33fa539), CNST_LIMB(0xa8adf7ae45e7577b) }, + /* 12 */ { 17, CNST_LIMB(0x4768ce0d05818e12), CNST_LIMB(0x72b803473f7ad0f3), CNST_LIMB(0x1eca170c00000000), CNST_LIMB(0xa10c2bec5da8f8f) }, + /* 13 */ { 17, CNST_LIMB(0x452e53e365907bda), CNST_LIMB(0x766a008e4788cbcd), CNST_LIMB(0x780c7372621bd74d), CNST_LIMB(0x10f4becafe412ec3) }, + /* 14 */ { 16, CNST_LIMB(0x433cfffb4b5aae55), CNST_LIMB(0x79d5d9fd5010b366), CNST_LIMB(0x1e39a5057d810000), CNST_LIMB(0xf08480f672b4e86) }, + /* 15 */ { 16, CNST_LIMB(0x41867711b4f85355), CNST_LIMB(0x7d053f6d26089673), CNST_LIMB(0x5b27ac993df97701), CNST_LIMB(0x6779c7f90dc42f48) }, + /* 16 */ { 16, CNST_LIMB(0x3fffffffffffffff), CNST_LIMB(0x7fffffffffffffff), CNST_LIMB(0x4), CNST_LIMB(0x0) }, + /* 17 */ { 15, CNST_LIMB(0x3ea16afd58b10966), CNST_LIMB(0x82cc7edf592262cf), CNST_LIMB(0x27b95e997e21d9f1), CNST_LIMB(0x9c71e11bab279323) }, + /* 18 */ { 15, CNST_LIMB(0x3d64598d154dc4de), CNST_LIMB(0x8570068e7ef5a1e7), CNST_LIMB(0x5da0e1e53c5c8000), CNST_LIMB(0x5dfaa697ec6f6a1c) }, + /* 19 */ { 15, CNST_LIMB(0x3c43c23018bb5563), CNST_LIMB(0x87ef05ae409a0288), CNST_LIMB(0xd2ae3299c1c4aedb), CNST_LIMB(0x3711783f6be7e9ec) }, + /* 20 */ { 14, CNST_LIMB(0x3b3b9a42873069c7), CNST_LIMB(0x8a4d3c25e68dc57f), CNST_LIMB(0x16bcc41e90000000), CNST_LIMB(0x6849b86a12b9b01e) }, + /* 21 */ { 14, CNST_LIMB(0x3a4898f06cf41ac9), CNST_LIMB(0x8c8ddd448f8b845a), CNST_LIMB(0x2d04b7fdd9c0ef49), CNST_LIMB(0x6bf097ba5ca5e239) }, + /* 22 */ { 14, CNST_LIMB(0x39680b13582e7c18), CNST_LIMB(0x8eb3a9f01975077f), CNST_LIMB(0x5658597bcaa24000), CNST_LIMB(0x7b8015c8d7af8f08) }, + /* 23 */ { 14, CNST_LIMB(0x3897b2b751ae561a), CNST_LIMB(0x90c10500d63aa658), CNST_LIMB(0xa0e2073737609371), CNST_LIMB(0x975a24b3a3151b38) }, + /* 24 */ { 13, CNST_LIMB(0x37d5aed131f19c98), CNST_LIMB(0x92b803473f7ad0f3), CNST_LIMB(0xc29e98000000000), CNST_LIMB(0x50bd367972689db1) }, + /* 25 */ { 13, CNST_LIMB(0x372068d20a1ee5ca), CNST_LIMB(0x949a784bcd1b8afe), CNST_LIMB(0x14adf4b7320334b9), CNST_LIMB(0x8c240c4aecb13bb5) }, + /* 26 */ { 13, CNST_LIMB(0x3676867e5d60de29), CNST_LIMB(0x966a008e4788cbcd), CNST_LIMB(0x226ed36478bfa000), CNST_LIMB(0xdbd2e56854e118c9) }, + /* 27 */ { 13, CNST_LIMB(0x35d6deeb388df86f), CNST_LIMB(0x982809d5be7072db), CNST_LIMB(0x383d9170b85ff80b), CNST_LIMB(0x2351ffcaa9c7c4ae) }, + /* 28 */ { 13, CNST_LIMB(0x354071d61c77fa2e), CNST_LIMB(0x99d5d9fd5010b366), CNST_LIMB(0x5a3c23e39c000000), CNST_LIMB(0x6b24188ca33b0636) }, + /* 29 */ { 13, CNST_LIMB(0x34b260c5671b18ac), CNST_LIMB(0x9b74948f5532da4b), CNST_LIMB(0x8e65137388122bcd), CNST_LIMB(0xcc3dceaf2b8ba99d) }, + /* 30 */ { 13, CNST_LIMB(0x342be986572b45cc), CNST_LIMB(0x9d053f6d26089673), CNST_LIMB(0xdd41bb36d259e000), CNST_LIMB(0x2832e835c6c7d6b6) }, + /* 31 */ { 12, CNST_LIMB(0x33ac61b998fbbdf2), CNST_LIMB(0x9e88c6b3626a72aa), CNST_LIMB(0xaee5720ee830681), CNST_LIMB(0x76b6aa272e1873c5) }, + /* 32 */ { 12, CNST_LIMB(0x3333333333333333), CNST_LIMB(0x9fffffffffffffff), CNST_LIMB(0x5), CNST_LIMB(0x0) }, + /* 33 */ { 12, CNST_LIMB(0x32bfd90114c12861), CNST_LIMB(0xa16bad3758efd873), CNST_LIMB(0x172588ad4f5f0981), CNST_LIMB(0x61eaf5d402c7bf4f) }, + /* 34 */ { 12, CNST_LIMB(0x3251dcf6169e45f2), CNST_LIMB(0xa2cc7edf592262cf), CNST_LIMB(0x211e44f7d02c1000), CNST_LIMB(0xeeb658123ffb27ec) }, + /* 35 */ { 12, CNST_LIMB(0x31e8d59f180dc630), CNST_LIMB(0xa4231623369e78e5), CNST_LIMB(0x2ee56725f06e5c71), CNST_LIMB(0x5d5e3762e6fdf509) }, + /* 36 */ { 12, CNST_LIMB(0x3184648db8153e7a), CNST_LIMB(0xa570068e7ef5a1e7), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 37 */ { 12, CNST_LIMB(0x312434e89c35dacd), CNST_LIMB(0xa6b3d78b6d3b24fb), CNST_LIMB(0x5b5b57f8a98a5dd1), CNST_LIMB(0x66ae7831762efb6f) }, + /* 38 */ { 12, CNST_LIMB(0x30c7fa349460a541), CNST_LIMB(0xa7ef05ae409a0288), CNST_LIMB(0x7dcff8986ea31000), CNST_LIMB(0x47388865a00f544) }, + /* 39 */ { 12, CNST_LIMB(0x306f6f4c8432bc6d), CNST_LIMB(0xa92203d587039cc1), CNST_LIMB(0xabd4211662a6b2a1), CNST_LIMB(0x7d673c33a123b54c) }, + /* 40 */ { 12, CNST_LIMB(0x301a557ffbfdd252), CNST_LIMB(0xaa4d3c25e68dc57f), CNST_LIMB(0xe8d4a51000000000), CNST_LIMB(0x19799812dea11197) }, + /* 41 */ { 11, CNST_LIMB(0x2fc873d1fda55f3b), CNST_LIMB(0xab7110e6ce866f2b), CNST_LIMB(0x7a32956ad081b79), CNST_LIMB(0xc27e62e0686feae) }, + /* 42 */ { 11, CNST_LIMB(0x2f799652a4e6dc49), CNST_LIMB(0xac8ddd448f8b845a), CNST_LIMB(0x9f49aaff0e86800), CNST_LIMB(0x9b6e7507064ce7c7) }, + /* 43 */ { 11, CNST_LIMB(0x2f2d8d8f64460aad), CNST_LIMB(0xada3f5fb9c415052), CNST_LIMB(0xce583bb812d37b3), CNST_LIMB(0x3d9ac2bf66cfed94) }, + /* 44 */ { 11, CNST_LIMB(0x2ee42e164e8f53a4), CNST_LIMB(0xaeb3a9f01975077f), CNST_LIMB(0x109b79a654c00000), CNST_LIMB(0xed46bc50ce59712a) }, + /* 45 */ { 11, CNST_LIMB(0x2e9d500984041dbd), CNST_LIMB(0xafbd42b465836767), CNST_LIMB(0x1543beff214c8b95), CNST_LIMB(0x813d97e2c89b8d46) }, + /* 46 */ { 11, CNST_LIMB(0x2e58cec05a6a8144), CNST_LIMB(0xb0c10500d63aa658), CNST_LIMB(0x1b149a79459a3800), CNST_LIMB(0x2e81751956af8083) }, + /* 47 */ { 11, CNST_LIMB(0x2e1688743ef9104c), CNST_LIMB(0xb1bf311e95d00de3), CNST_LIMB(0x224edfb5434a830f), CNST_LIMB(0xdd8e0a95e30c0988) }, + /* 48 */ { 11, CNST_LIMB(0x2dd65df7a583598f), CNST_LIMB(0xb2b803473f7ad0f3), CNST_LIMB(0x2b3fb00000000000), CNST_LIMB(0x7ad4dd48a0b5b167) }, + /* 49 */ { 11, CNST_LIMB(0x2d9832759d5369c4), CNST_LIMB(0xb3abb3faa02166cc), CNST_LIMB(0x3642798750226111), CNST_LIMB(0x2df495ccaa57147b) }, + /* 50 */ { 11, CNST_LIMB(0x2d5beb38dcd1394c), CNST_LIMB(0xb49a784bcd1b8afe), CNST_LIMB(0x43c33c1937564800), CNST_LIMB(0xe392010175ee5962) }, + /* 51 */ { 11, CNST_LIMB(0x2d216f7943e2ba6a), CNST_LIMB(0xb5848226989d33c3), CNST_LIMB(0x54411b2441c3cd8b), CNST_LIMB(0x84eaf11b2fe7738e) }, + /* 52 */ { 11, CNST_LIMB(0x2ce8a82efbb3ff2c), CNST_LIMB(0xb66a008e4788cbcd), CNST_LIMB(0x6851455acd400000), CNST_LIMB(0x3a1e3971e008995d) }, + /* 53 */ { 11, CNST_LIMB(0x2cb17fea7ad7e332), CNST_LIMB(0xb74b1fd64e0753c6), CNST_LIMB(0x80a23b117c8feb6d), CNST_LIMB(0xfd7a462344ffce25) }, + /* 54 */ { 11, CNST_LIMB(0x2c7be2b0cfa1ba50), CNST_LIMB(0xb82809d5be7072db), CNST_LIMB(0x9dff7d32d5dc1800), CNST_LIMB(0x9eca40b40ebcef8a) }, + /* 55 */ { 11, CNST_LIMB(0x2c47bddba92d7463), CNST_LIMB(0xb900e6160002ccfe), CNST_LIMB(0xc155af6faeffe6a7), CNST_LIMB(0x52fa161a4a48e43d) }, + /* 56 */ { 11, CNST_LIMB(0x2c14fffcaa8b131e), CNST_LIMB(0xb9d5d9fd5010b366), CNST_LIMB(0xebb7392e00000000), CNST_LIMB(0x1607a2cbacf930c1) }, + /* 57 */ { 10, CNST_LIMB(0x2be398c3a38be053), CNST_LIMB(0xbaa708f58014d37c), CNST_LIMB(0x50633659656d971), CNST_LIMB(0x97a014f8e3be55f1) }, + /* 58 */ { 10, CNST_LIMB(0x2bb378e758451068), CNST_LIMB(0xbb74948f5532da4b), CNST_LIMB(0x5fa8624c7fba400), CNST_LIMB(0x568df8b76cbf212c) }, + /* 59 */ { 10, CNST_LIMB(0x2b8492108be5e5f7), CNST_LIMB(0xbc3e9ca2e1a05533), CNST_LIMB(0x717d9faa73c5679), CNST_LIMB(0x20ba7c4b4e6ef492) }, + /* 60 */ { 10, CNST_LIMB(0x2b56d6c70d55481b), CNST_LIMB(0xbd053f6d26089673), CNST_LIMB(0x86430aac6100000), CNST_LIMB(0xe81ee46b9ef492f5) }, + /* 61 */ { 10, CNST_LIMB(0x2b2a3a608c72ddd5), CNST_LIMB(0xbdc899ab3ff56c5e), CNST_LIMB(0x9e64d9944b57f29), CNST_LIMB(0x9dc0d10d51940416) }, + /* 62 */ { 10, CNST_LIMB(0x2afeb0f1060c7e41), CNST_LIMB(0xbe88c6b3626a72aa), CNST_LIMB(0xba5ca5392cb0400), CNST_LIMB(0x5fa8ed2f450272a5) }, + /* 63 */ { 10, CNST_LIMB(0x2ad42f3c9aca595c), CNST_LIMB(0xbf45e08bcf06554e), CNST_LIMB(0xdab2ce1d022cd81), CNST_LIMB(0x2ba9eb8c5e04e641) }, + /* 64 */ { 10, CNST_LIMB(0x2aaaaaaaaaaaaaaa), CNST_LIMB(0xbfffffffffffffff), CNST_LIMB(0x6), CNST_LIMB(0x0) }, + /* 65 */ { 10, CNST_LIMB(0x2a82193a13425883), CNST_LIMB(0xc0b73cb42e16914c), CNST_LIMB(0x12aeed5fd3e2d281), CNST_LIMB(0xb67759cc00287bf1) }, + /* 66 */ { 10, CNST_LIMB(0x2a5a717672f66450), CNST_LIMB(0xc16bad3758efd873), CNST_LIMB(0x15c3da1572d50400), CNST_LIMB(0x78621feeb7f4ed33) }, + /* 67 */ { 10, CNST_LIMB(0x2a33aa6e56d9c71c), CNST_LIMB(0xc21d6713f453f356), CNST_LIMB(0x194c05534f75ee29), CNST_LIMB(0x43d55b5f72943bc0) }, + /* 68 */ { 10, CNST_LIMB(0x2a0dbbaa3bdfcea4), CNST_LIMB(0xc2cc7edf592262cf), CNST_LIMB(0x1d56299ada100000), CNST_LIMB(0x173decb64d1d4409) }, + /* 69 */ { 10, CNST_LIMB(0x29e89d244eb4bfaf), CNST_LIMB(0xc379084815b5774c), CNST_LIMB(0x21f2a089a4ff4f79), CNST_LIMB(0xe29fb54fd6b6074f) }, + /* 70 */ { 10, CNST_LIMB(0x29c44740d7db51e6), CNST_LIMB(0xc4231623369e78e5), CNST_LIMB(0x2733896c68d9a400), CNST_LIMB(0xa1f1f5c210d54e62) }, + /* 71 */ { 10, CNST_LIMB(0x29a0b2c743b14d74), CNST_LIMB(0xc4caba789e2b8687), CNST_LIMB(0x2d2cf2c33b533c71), CNST_LIMB(0x6aac7f9bfafd57b2) }, + /* 72 */ { 10, CNST_LIMB(0x297dd8dbb7c22a2d), CNST_LIMB(0xc570068e7ef5a1e7), CNST_LIMB(0x33f506e440000000), CNST_LIMB(0x3b563c2478b72ee2) }, + /* 73 */ { 10, CNST_LIMB(0x295bb2f9285c8c1b), CNST_LIMB(0xc6130af40bc0ecbf), CNST_LIMB(0x3ba43bec1d062211), CNST_LIMB(0x12b536b574e92d1b) }, + /* 74 */ { 10, CNST_LIMB(0x293a3aebe2be1c92), CNST_LIMB(0xc6b3d78b6d3b24fb), CNST_LIMB(0x4455872d8fd4e400), CNST_LIMB(0xdf86c03020404fa5) }, + /* 75 */ { 10, CNST_LIMB(0x29196acc815ebd9f), CNST_LIMB(0xc7527b930c965bf2), CNST_LIMB(0x4e2694539f2f6c59), CNST_LIMB(0xa34adf02234eea8e) }, + /* 76 */ { 10, CNST_LIMB(0x28f93cfb40f5c22a), CNST_LIMB(0xc7ef05ae409a0288), CNST_LIMB(0x5938006c18900000), CNST_LIMB(0x6f46eb8574eb59dd) }, + /* 77 */ { 10, CNST_LIMB(0x28d9ac1badc64117), CNST_LIMB(0xc88983ed6985bae5), CNST_LIMB(0x65ad9912474aa649), CNST_LIMB(0x42459b481df47cec) }, + /* 78 */ { 10, CNST_LIMB(0x28bab310a196b478), CNST_LIMB(0xc92203d587039cc1), CNST_LIMB(0x73ae9ff4241ec400), CNST_LIMB(0x1b424b95d80ca505) }, + /* 79 */ { 10, CNST_LIMB(0x289c4cf88b774469), CNST_LIMB(0xc9b892675266f66c), CNST_LIMB(0x836612ee9c4ce1e1), CNST_LIMB(0xf2c1b982203a0dac) }, + /* 80 */ { 10, CNST_LIMB(0x287e7529fb244e91), CNST_LIMB(0xca4d3c25e68dc57f), CNST_LIMB(0x9502f90000000000), CNST_LIMB(0xb7cdfd9d7bdbab7d) }, + /* 81 */ { 10, CNST_LIMB(0x286127306a6a7a53), CNST_LIMB(0xcae00d1cfdeb43cf), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 82 */ { 10, CNST_LIMB(0x28445ec93f792b1e), CNST_LIMB(0xcb7110e6ce866f2b), CNST_LIMB(0xbebf59a07dab4400), CNST_LIMB(0x57931eeaf85cf64f) }, + /* 83 */ { 10, CNST_LIMB(0x282817e1038950fa), CNST_LIMB(0xcc0052b18b0e2a19), CNST_LIMB(0xd7540d4093bc3109), CNST_LIMB(0x305a944507c82f47) }, + /* 84 */ { 10, CNST_LIMB(0x280c4e90c9ab1f45), CNST_LIMB(0xcc8ddd448f8b845a), CNST_LIMB(0xf2b96616f1900000), CNST_LIMB(0xe007ccc9c22781a) }, + /* 85 */ { 9, CNST_LIMB(0x27f0ff1bc1ee87cd), CNST_LIMB(0xcd19bb053fb0284e), CNST_LIMB(0x336de62af2bca35), CNST_LIMB(0x3e92c42e000eeed4) }, + /* 86 */ { 9, CNST_LIMB(0x27d625ecf571c340), CNST_LIMB(0xcda3f5fb9c415052), CNST_LIMB(0x39235ec33d49600), CNST_LIMB(0x1ebe59130db2795e) }, + /* 87 */ { 9, CNST_LIMB(0x27bbbf95282fcd45), CNST_LIMB(0xce2c97d694adab3f), CNST_LIMB(0x3f674e539585a17), CNST_LIMB(0x268859e90f51b89) }, + /* 88 */ { 9, CNST_LIMB(0x27a1c8c8ddaf84da), CNST_LIMB(0xceb3a9f01975077f), CNST_LIMB(0x4645b6958000000), CNST_LIMB(0xd24cde0463108cfa) }, + /* 89 */ { 9, CNST_LIMB(0x27883e5e7df3f518), CNST_LIMB(0xcf393550f3aa6906), CNST_LIMB(0x4dcb74afbc49c19), CNST_LIMB(0xa536009f37adc383) }, + /* 90 */ { 9, CNST_LIMB(0x276f1d4c9847e90e), CNST_LIMB(0xcfbd42b465836767), CNST_LIMB(0x56064e1d18d9a00), CNST_LIMB(0x7cea06ce1c9ace10) }, + /* 91 */ { 9, CNST_LIMB(0x275662a841b30191), CNST_LIMB(0xd03fda8b97997f33), CNST_LIMB(0x5f04fe2cd8a39fb), CNST_LIMB(0x58db032e72e8ba43) }, + /* 92 */ { 9, CNST_LIMB(0x273e0ba38d15a47b), CNST_LIMB(0xd0c10500d63aa658), CNST_LIMB(0x68d74421f5c0000), CNST_LIMB(0x388cc17cae105447) }, + /* 93 */ { 9, CNST_LIMB(0x2726158c1b13cf03), CNST_LIMB(0xd140c9faa1e5439e), CNST_LIMB(0x738df1f6ab4827d), CNST_LIMB(0x1b92672857620ce0) }, + /* 94 */ { 9, CNST_LIMB(0x270e7dc9c01d8e9b), CNST_LIMB(0xd1bf311e95d00de3), CNST_LIMB(0x7f3afbc9cfb5e00), CNST_LIMB(0x18c6a9575c2ade4) }, + /* 95 */ { 9, CNST_LIMB(0x26f741dd3f070d61), CNST_LIMB(0xd23c41d42727c808), CNST_LIMB(0x8bf187fba88f35f), CNST_LIMB(0xd44da7da8e44b24f) }, + /* 96 */ { 9, CNST_LIMB(0x26e05f5f16c2159e), CNST_LIMB(0xd2b803473f7ad0f3), CNST_LIMB(0x99c600000000000), CNST_LIMB(0xaa2f78f1b4cc6794) }, + /* 97 */ { 9, CNST_LIMB(0x26c9d3fe61e80598), CNST_LIMB(0xd3327c6ab49ca6c8), CNST_LIMB(0xa8ce21eb6531361), CNST_LIMB(0x843c067d091ee4cc) }, + /* 98 */ { 9, CNST_LIMB(0x26b39d7fc6ddab08), CNST_LIMB(0xd3abb3faa02166cc), CNST_LIMB(0xb92112c1a0b6200), CNST_LIMB(0x62005e1e913356e3) }, + /* 99 */ { 9, CNST_LIMB(0x269db9bc7772a5cc), CNST_LIMB(0xd423b07e986aa967), CNST_LIMB(0xcad7718b8747c43), CNST_LIMB(0x4316eed01dedd518) }, + /* 100 */ { 9, CNST_LIMB(0x268826a13ef3fde6), CNST_LIMB(0xd49a784bcd1b8afe), CNST_LIMB(0xde0b6b3a7640000), CNST_LIMB(0x2725dd1d243aba0e) }, + /* 101 */ { 9, CNST_LIMB(0x2672e22d9dbdbd9f), CNST_LIMB(0xd510118708a8f8dd), CNST_LIMB(0xf2d8cf5fe6d74c5), CNST_LIMB(0xddd9057c24cb54f) }, + /* 102 */ { 9, CNST_LIMB(0x265dea72f169cc99), CNST_LIMB(0xd5848226989d33c3), CNST_LIMB(0x1095d25bfa712600), CNST_LIMB(0xedeee175a736d2a1) }, + /* 103 */ { 9, CNST_LIMB(0x26493d93a8cb2514), CNST_LIMB(0xd5f7cff41e09aeb8), CNST_LIMB(0x121b7c4c3698faa7), CNST_LIMB(0xc4699f3df8b6b328) }, + /* 104 */ { 9, CNST_LIMB(0x2634d9c282f3ef82), CNST_LIMB(0xd66a008e4788cbcd), CNST_LIMB(0x13c09e8d68000000), CNST_LIMB(0x9ebbe7d859cb5a7c) }, + /* 105 */ { 9, CNST_LIMB(0x2620bd41d8933adc), CNST_LIMB(0xd6db196a761949d9), CNST_LIMB(0x15876ccb0b709ca9), CNST_LIMB(0x7c828b9887eb2179) }, + /* 106 */ { 9, CNST_LIMB(0x260ce662ef04088a), CNST_LIMB(0xd74b1fd64e0753c6), CNST_LIMB(0x17723c2976da2a00), CNST_LIMB(0x5d652ab99001adcf) }, + /* 107 */ { 9, CNST_LIMB(0x25f95385547353fd), CNST_LIMB(0xd7ba18f93502e409), CNST_LIMB(0x198384e9c259048b), CNST_LIMB(0x4114f1754e5d7b32) }, + /* 108 */ { 9, CNST_LIMB(0x25e60316448db8e1), CNST_LIMB(0xd82809d5be7072db), CNST_LIMB(0x1bbde41dfeec0000), CNST_LIMB(0x274b7c902f7e0188) }, + /* 109 */ { 9, CNST_LIMB(0x25d2f390152f74f5), CNST_LIMB(0xd894f74b06ef8b40), CNST_LIMB(0x1e241d6e3337910d), CNST_LIMB(0xfc9e0fbb32e210c) }, + /* 110 */ { 9, CNST_LIMB(0x25c02379aa9ad043), CNST_LIMB(0xd900e6160002ccfe), CNST_LIMB(0x20b91cee9901ee00), CNST_LIMB(0xf4afa3e594f8ea1f) }, + /* 111 */ { 9, CNST_LIMB(0x25ad9165f2c18907), CNST_LIMB(0xd96bdad2acb5f5ef), CNST_LIMB(0x237ff9079863dfef), CNST_LIMB(0xcd85c32e9e4437b0) }, + /* 112 */ { 9, CNST_LIMB(0x259b3bf36735c90c), CNST_LIMB(0xd9d5d9fd5010b366), CNST_LIMB(0x267bf47000000000), CNST_LIMB(0xa9bbb147e0dd92a8) }, + /* 113 */ { 9, CNST_LIMB(0x258921cb955e7693), CNST_LIMB(0xda3ee7f38e181ed0), CNST_LIMB(0x29b08039fbeda7f1), CNST_LIMB(0x8900447b70e8eb82) }, + /* 114 */ { 9, CNST_LIMB(0x257741a2ac9170af), CNST_LIMB(0xdaa708f58014d37c), CNST_LIMB(0x2d213df34f65f200), CNST_LIMB(0x6b0a92adaad5848a) }, + /* 115 */ { 9, CNST_LIMB(0x25659a3711bc827d), CNST_LIMB(0xdb0e4126bcc86bd7), CNST_LIMB(0x30d201d957a7c2d3), CNST_LIMB(0x4f990ad8740f0ee5) }, + /* 116 */ { 9, CNST_LIMB(0x25542a50f84b9c39), CNST_LIMB(0xdb74948f5532da4b), CNST_LIMB(0x34c6d52160f40000), CNST_LIMB(0x3670a9663a8d3610) }, + /* 117 */ { 9, CNST_LIMB(0x2542f0c20000377d), CNST_LIMB(0xdbda071cc67e6db5), CNST_LIMB(0x3903f855d8f4c755), CNST_LIMB(0x1f5c44188057be3c) }, + /* 118 */ { 9, CNST_LIMB(0x2531ec64d772bd64), CNST_LIMB(0xdc3e9ca2e1a05533), CNST_LIMB(0x3d8de5c8ec59b600), CNST_LIMB(0xa2bea956c4e4977) }, + /* 119 */ { 9, CNST_LIMB(0x25211c1ce2fb5a6e), CNST_LIMB(0xdca258dca9331635), CNST_LIMB(0x4269541d1ff01337), CNST_LIMB(0xed68b23033c3637e) }, + /* 120 */ { 9, CNST_LIMB(0x25107ed5e7c3ec3b), CNST_LIMB(0xdd053f6d26089673), CNST_LIMB(0x479b38e478000000), CNST_LIMB(0xc99cf624e50549c5) }, + /* 121 */ { 9, CNST_LIMB(0x25001383bac8a744), CNST_LIMB(0xdd6753e032ea0efe), CNST_LIMB(0x4d28cb56c33fa539), CNST_LIMB(0xa8adf7ae45e7577b) }, + /* 122 */ { 9, CNST_LIMB(0x24efd921f390bce3), CNST_LIMB(0xddc899ab3ff56c5e), CNST_LIMB(0x5317871fa13aba00), CNST_LIMB(0x8a5bc740b1c113e5) }, + /* 123 */ { 9, CNST_LIMB(0x24dfceb3a26bb203), CNST_LIMB(0xde29142e0e01401f), CNST_LIMB(0x596d2f44de9fa71b), CNST_LIMB(0x6e6c7efb81cfbb9b) }, + /* 124 */ { 9, CNST_LIMB(0x24cff3430a0341a7), CNST_LIMB(0xde88c6b3626a72aa), CNST_LIMB(0x602fd125c47c0000), CNST_LIMB(0x54aba5c5cada5f10) }, + /* 125 */ { 9, CNST_LIMB(0x24c045e15c149931), CNST_LIMB(0xdee7b471b3a9507d), CNST_LIMB(0x6765c793fa10079d), CNST_LIMB(0x3ce9a36f23c0fc90) }, + /* 126 */ { 9, CNST_LIMB(0x24b0c5a679267ae2), CNST_LIMB(0xdf45e08bcf06554e), CNST_LIMB(0x6f15be069b847e00), CNST_LIMB(0x26fb43de2c8cd2a8) }, + /* 127 */ { 9, CNST_LIMB(0x24a171b0b31461c8), CNST_LIMB(0xdfa34e1177c23362), CNST_LIMB(0x7746b3e82a77047f), CNST_LIMB(0x12b94793db8486a1) }, + /* 128 */ { 9, CNST_LIMB(0x2492492492492492), CNST_LIMB(0xdfffffffffffffff), CNST_LIMB(0x7), CNST_LIMB(0x0) }, + /* 129 */ { 9, CNST_LIMB(0x24834b2c9d85cdfe), CNST_LIMB(0xe05bf942dbbc2145), CNST_LIMB(0x894953f7ea890481), CNST_LIMB(0xdd5deca404c0156d) }, + /* 130 */ { 9, CNST_LIMB(0x247476f924137501), CNST_LIMB(0xe0b73cb42e16914c), CNST_LIMB(0x932abffea4848200), CNST_LIMB(0xbd51373330291de0) }, + /* 131 */ { 9, CNST_LIMB(0x2465cbc00a40cec0), CNST_LIMB(0xe111cd1d5133412e), CNST_LIMB(0x9dacb687d3d6a163), CNST_LIMB(0x9fa4025d66f23085) }, + /* 132 */ { 9, CNST_LIMB(0x245748bc980e0427), CNST_LIMB(0xe16bad3758efd873), CNST_LIMB(0xa8d8102a44840000), CNST_LIMB(0x842530ee2db4949d) }, + /* 133 */ { 9, CNST_LIMB(0x2448ed2f49eb0633), CNST_LIMB(0xe1c4dfab90aab5ef), CNST_LIMB(0xb4b60f9d140541e5), CNST_LIMB(0x6aa7f2766b03dc25) }, + /* 134 */ { 9, CNST_LIMB(0x243ab85da36e3167), CNST_LIMB(0xe21d6713f453f356), CNST_LIMB(0xc15065d4856e4600), CNST_LIMB(0x53035ba7ebf32e8d) }, + /* 135 */ { 9, CNST_LIMB(0x242ca99203ea8c18), CNST_LIMB(0xe27545fba4fe385a), CNST_LIMB(0xceb1363f396d23c7), CNST_LIMB(0x3d12091fc9fb4914) }, + /* 136 */ { 9, CNST_LIMB(0x241ec01b7cce4ea0), CNST_LIMB(0xe2cc7edf592262cf), CNST_LIMB(0xdce31b2488000000), CNST_LIMB(0x28b1cb81b1ef1849) }, + /* 137 */ { 9, CNST_LIMB(0x2410fb4da9b3b0fc), CNST_LIMB(0xe323142dc8c66b55), CNST_LIMB(0xebf12a24bca135c9), CNST_LIMB(0x15c35be67ae3e2c9) }, + /* 138 */ { 9, CNST_LIMB(0x24035a808a0f315e), CNST_LIMB(0xe379084815b5774c), CNST_LIMB(0xfbe6f8dbf88f4a00), CNST_LIMB(0x42a17bd09be1ff0) }, + /* 139 */ { 8, CNST_LIMB(0x23f5dd105c67ab9d), CNST_LIMB(0xe3ce5d822ff4b643), CNST_LIMB(0x1ef156c084ce761), CNST_LIMB(0x8bf461f03cf0bbf) }, + /* 140 */ { 8, CNST_LIMB(0x23e8825d7b05abb1), CNST_LIMB(0xe4231623369e78e5), CNST_LIMB(0x20c4e3b94a10000), CNST_LIMB(0xf3fbb43f68a32d05) }, + /* 141 */ { 8, CNST_LIMB(0x23db49cc3a0866fe), CNST_LIMB(0xe4773465d54aded7), CNST_LIMB(0x22b0695a08ba421), CNST_LIMB(0xd84f44c48564dc19) }, + /* 142 */ { 8, CNST_LIMB(0x23ce32c4c6cfb9f5), CNST_LIMB(0xe4caba789e2b8687), CNST_LIMB(0x24b4f35d7a4c100), CNST_LIMB(0xbe58ebcce7956abe) }, + /* 143 */ { 8, CNST_LIMB(0x23c13cb308ab6ab7), CNST_LIMB(0xe51daa7e60fdd34c), CNST_LIMB(0x26d397284975781), CNST_LIMB(0xa5fac463c7c134b7) }, + /* 144 */ { 8, CNST_LIMB(0x23b4670682c0c709), CNST_LIMB(0xe570068e7ef5a1e7), CNST_LIMB(0x290d74100000000), CNST_LIMB(0x8f19241e28c7d757) }, + /* 145 */ { 8, CNST_LIMB(0x23a7b13237187c8b), CNST_LIMB(0xe5c1d0b53bc09fca), CNST_LIMB(0x2b63b3a37866081), CNST_LIMB(0x799a6d046c0ae1ae) }, + /* 146 */ { 8, CNST_LIMB(0x239b1aac8ac74728), CNST_LIMB(0xe6130af40bc0ecbf), CNST_LIMB(0x2dd789f4d894100), CNST_LIMB(0x6566e37d746a9e40) }, + /* 147 */ { 8, CNST_LIMB(0x238ea2ef2b24c379), CNST_LIMB(0xe663b741df9c37c0), CNST_LIMB(0x306a35e51b58721), CNST_LIMB(0x526887dbfb5f788f) }, + /* 148 */ { 8, CNST_LIMB(0x23824976f4045a26), CNST_LIMB(0xe6b3d78b6d3b24fb), CNST_LIMB(0x331d01712e10000), CNST_LIMB(0x408af3382b8efd3d) }, + /* 149 */ { 8, CNST_LIMB(0x23760dc3d6e4d729), CNST_LIMB(0xe7036db376537b90), CNST_LIMB(0x35f14200a827c61), CNST_LIMB(0x2fbb374806ec05f1) }, + /* 150 */ { 8, CNST_LIMB(0x2369ef58c30bd43e), CNST_LIMB(0xe7527b930c965bf2), CNST_LIMB(0x38e858b62216100), CNST_LIMB(0x1fe7c0f0afce87fe) }, + /* 151 */ { 8, CNST_LIMB(0x235dedbb8e82aa1c), CNST_LIMB(0xe7a102f9d39a9331), CNST_LIMB(0x3c03b2c13176a41), CNST_LIMB(0x11003d517540d32e) }, + /* 152 */ { 8, CNST_LIMB(0x23520874dfeb1ffd), CNST_LIMB(0xe7ef05ae409a0288), CNST_LIMB(0x3f44c9b21000000), CNST_LIMB(0x2f5810f98eff0dc) }, + /* 153 */ { 8, CNST_LIMB(0x23463f1019228dd7), CNST_LIMB(0xe83c856dd81804b7), CNST_LIMB(0x42ad23cef3113c1), CNST_LIMB(0xeb72e35e7840d910) }, + /* 154 */ { 8, CNST_LIMB(0x233a911b42aa9b3c), CNST_LIMB(0xe88983ed6985bae5), CNST_LIMB(0x463e546b19a2100), CNST_LIMB(0xd27de19593dc3614) }, + /* 155 */ { 8, CNST_LIMB(0x232efe26f7cf33f9), CNST_LIMB(0xe8d602d948f83829), CNST_LIMB(0x49f9fc3f96684e1), CNST_LIMB(0xbaf391fd3e5e6fc2) }, + /* 156 */ { 8, CNST_LIMB(0x232385c65381b485), CNST_LIMB(0xe92203d587039cc1), CNST_LIMB(0x4de1c9c5dc10000), CNST_LIMB(0xa4bd38c55228c81d) }, + /* 157 */ { 8, CNST_LIMB(0x2318278edde1b39b), CNST_LIMB(0xe96d887e26cd57b7), CNST_LIMB(0x51f77994116d2a1), CNST_LIMB(0x8fc5a8de8e1de782) }, + /* 158 */ { 8, CNST_LIMB(0x230ce3187a6c2be9), CNST_LIMB(0xe9b892675266f66c), CNST_LIMB(0x563cd6bb3398100), CNST_LIMB(0x7bf9265bea9d3a3b) }, + /* 159 */ { 8, CNST_LIMB(0x2301b7fd56ca21bb), CNST_LIMB(0xea03231d8d8224ba), CNST_LIMB(0x5ab3bb270beeb01), CNST_LIMB(0x69454b325983dccd) }, + /* 160 */ { 8, CNST_LIMB(0x22f6a5d9da38341c), CNST_LIMB(0xea4d3c25e68dc57f), CNST_LIMB(0x5f5e10000000000), CNST_LIMB(0x5798ee2308c39df9) }, + /* 161 */ { 8, CNST_LIMB(0x22ebac4c9580d89f), CNST_LIMB(0xea96defe264b59be), CNST_LIMB(0x643dce0ec16f501), CNST_LIMB(0x46e40ba0fa66a753) }, + /* 162 */ { 8, CNST_LIMB(0x22e0caf633834beb), CNST_LIMB(0xeae00d1cfdeb43cf), CNST_LIMB(0x6954fe21e3e8100), CNST_LIMB(0x3717b0870b0db3a7) }, + /* 163 */ { 8, CNST_LIMB(0x22d601796a418886), CNST_LIMB(0xeb28c7f233bdd372), CNST_LIMB(0x6ea5b9755f440a1), CNST_LIMB(0x2825e6775d11cdeb) }, + /* 164 */ { 8, CNST_LIMB(0x22cb4f7aec6fd8b4), CNST_LIMB(0xeb7110e6ce866f2b), CNST_LIMB(0x74322a1c0410000), CNST_LIMB(0x1a01a1c09d1b4dac) }, + /* 165 */ { 8, CNST_LIMB(0x22c0b4a15b80d83e), CNST_LIMB(0xebb8e95d3f7d9df2), CNST_LIMB(0x79fc8b6ae8a46e1), CNST_LIMB(0xc9eb0a8bebc8f3e) }, + /* 166 */ { 8, CNST_LIMB(0x22b630953a28f77a), CNST_LIMB(0xec0052b18b0e2a19), CNST_LIMB(0x80072a66d512100), CNST_LIMB(0xffe357ff59e6a004) }, + /* 167 */ { 8, CNST_LIMB(0x22abc300df54ca7c), CNST_LIMB(0xec474e39705912d2), CNST_LIMB(0x86546633b42b9c1), CNST_LIMB(0xe7dfd1be05fa61a8) }, + /* 168 */ { 8, CNST_LIMB(0x22a16b90698da5d2), CNST_LIMB(0xec8ddd448f8b845a), CNST_LIMB(0x8ce6b0861000000), CNST_LIMB(0xd11ed6fc78f760e5) }, + /* 169 */ { 8, CNST_LIMB(0x229729f1b2c83ded), CNST_LIMB(0xecd4011c8f11979a), CNST_LIMB(0x93c08e16a022441), CNST_LIMB(0xbb8db609dd29ebfe) }, + /* 170 */ { 8, CNST_LIMB(0x228cfdd444992f78), CNST_LIMB(0xed19bb053fb0284e), CNST_LIMB(0x9ae49717f026100), CNST_LIMB(0xa71aec8d1813d532) }, + /* 171 */ { 8, CNST_LIMB(0x2282e6e94ccb8588), CNST_LIMB(0xed5f0c3cbf8fa470), CNST_LIMB(0xa25577ae24c1a61), CNST_LIMB(0x93b612a9f20fbc02) }, + /* 172 */ { 8, CNST_LIMB(0x2278e4e392557ecf), CNST_LIMB(0xeda3f5fb9c415052), CNST_LIMB(0xaa15f068e610000), CNST_LIMB(0x814fc7b19a67d317) }, + /* 173 */ { 8, CNST_LIMB(0x226ef7776aa7fd29), CNST_LIMB(0xede87974f3c81855), CNST_LIMB(0xb228d6bf7577921), CNST_LIMB(0x6fd9a03f2e0a4b7c) }, + /* 174 */ { 8, CNST_LIMB(0x22651e5aaf5532d0), CNST_LIMB(0xee2c97d694adab3f), CNST_LIMB(0xba91158ef5c4100), CNST_LIMB(0x5f4615a38d0d316e) }, + /* 175 */ { 8, CNST_LIMB(0x225b5944b40b4694), CNST_LIMB(0xee7052491d2c3e64), CNST_LIMB(0xc351ad9aec0b681), CNST_LIMB(0x4f8876863479a286) }, + /* 176 */ { 8, CNST_LIMB(0x2251a7ee3cdfcca5), CNST_LIMB(0xeeb3a9f01975077f), CNST_LIMB(0xcc6db6100000000), CNST_LIMB(0x4094d8a3041b60eb) }, + /* 177 */ { 8, CNST_LIMB(0x22480a1174e913d9), CNST_LIMB(0xeef69fea211b2627), CNST_LIMB(0xd5e85d09025c181), CNST_LIMB(0x32600b8ed883a09b) }, + /* 178 */ { 8, CNST_LIMB(0x223e7f69e522683c), CNST_LIMB(0xef393550f3aa6906), CNST_LIMB(0xdfc4e816401c100), CNST_LIMB(0x24df8c6eb4b6d1f1) }, + /* 179 */ { 8, CNST_LIMB(0x223507b46b988abe), CNST_LIMB(0xef7b6b399471103e), CNST_LIMB(0xea06b4c72947221), CNST_LIMB(0x18097a8ee151acef) }, + /* 180 */ { 8, CNST_LIMB(0x222ba2af32dbbb9e), CNST_LIMB(0xefbd42b465836767), CNST_LIMB(0xf4b139365210000), CNST_LIMB(0xbd48cc8ec1cd8e3) }, + /* 181 */ { 8, CNST_LIMB(0x22225019a9b4d16c), CNST_LIMB(0xeffebccd41ffcd5c), CNST_LIMB(0xffc80497d520961), CNST_LIMB(0x3807a8d67485fb) }, + /* 182 */ { 8, CNST_LIMB(0x22190fb47b1af172), CNST_LIMB(0xf03fda8b97997f33), CNST_LIMB(0x10b4ebfca1dee100), CNST_LIMB(0xea5768860b62e8d8) }, + /* 183 */ { 8, CNST_LIMB(0x220fe14186679801), CNST_LIMB(0xf0809cf27f703d52), CNST_LIMB(0x117492de921fc141), CNST_LIMB(0xd54faf5b635c5005) }, + /* 184 */ { 8, CNST_LIMB(0x2206c483d7c6b786), CNST_LIMB(0xf0c10500d63aa658), CNST_LIMB(0x123bb2ce41000000), CNST_LIMB(0xc14a56233a377926) }, + /* 185 */ { 8, CNST_LIMB(0x21fdb93fa0e0ccc5), CNST_LIMB(0xf10113b153c8ea7b), CNST_LIMB(0x130a8b6157bdecc1), CNST_LIMB(0xae39a88db7cd329f) }, + /* 186 */ { 8, CNST_LIMB(0x21f4bf3a31bcdcaa), CNST_LIMB(0xf140c9faa1e5439e), CNST_LIMB(0x13e15dede0e8a100), CNST_LIMB(0x9c10bde69efa7ab6) }, + /* 187 */ { 8, CNST_LIMB(0x21ebd639f1d86584), CNST_LIMB(0xf18028cf72976a4e), CNST_LIMB(0x14c06d941c0ca7e1), CNST_LIMB(0x8ac36c42a2836497) }, + /* 188 */ { 8, CNST_LIMB(0x21e2fe06597361a6), CNST_LIMB(0xf1bf311e95d00de3), CNST_LIMB(0x15a7ff487a810000), CNST_LIMB(0x7a463c8b84f5ef67) }, + /* 189 */ { 8, CNST_LIMB(0x21da3667eb0e8ccb), CNST_LIMB(0xf1fde3d30e812642), CNST_LIMB(0x169859ddc5c697a1), CNST_LIMB(0x6a8e5f5ad090fd4b) }, + /* 190 */ { 8, CNST_LIMB(0x21d17f282d1a300e), CNST_LIMB(0xf23c41d42727c808), CNST_LIMB(0x1791c60f6fed0100), CNST_LIMB(0x5b91a2943596fc56) }, + /* 191 */ { 8, CNST_LIMB(0x21c8d811a3d3c9e1), CNST_LIMB(0xf27a4c0585cbf805), CNST_LIMB(0x18948e8c0e6fba01), CNST_LIMB(0x4d4667b1c468e8f0) }, + /* 192 */ { 8, CNST_LIMB(0x21c040efcb50f858), CNST_LIMB(0xf2b803473f7ad0f3), CNST_LIMB(0x19a1000000000000), CNST_LIMB(0x3fa39ab547994daf) }, + /* 193 */ { 8, CNST_LIMB(0x21b7b98f11b61c1a), CNST_LIMB(0xf2f56875eb3f2614), CNST_LIMB(0x1ab769203dafc601), CNST_LIMB(0x32a0a9b2faee1e2a) }, + /* 194 */ { 8, CNST_LIMB(0x21af41bcd19739ba), CNST_LIMB(0xf3327c6ab49ca6c8), CNST_LIMB(0x1bd81ab557f30100), CNST_LIMB(0x26357ceac0e96962) }, + /* 195 */ { 8, CNST_LIMB(0x21a6d9474c81adf0), CNST_LIMB(0xf36f3ffb6d916240), CNST_LIMB(0x1d0367a69fed1ba1), CNST_LIMB(0x1a5a6f65caa5859e) }, + /* 196 */ { 8, CNST_LIMB(0x219e7ffda5ad572a), CNST_LIMB(0xf3abb3faa02166cc), CNST_LIMB(0x1e39a5057d810000), CNST_LIMB(0xf08480f672b4e86) }, + /* 197 */ { 8, CNST_LIMB(0x219635afdcd3e46d), CNST_LIMB(0xf3e7d9379f70166a), CNST_LIMB(0x1f7b2a18f29ac3e1), CNST_LIMB(0x4383340615612ca) }, + /* 198 */ { 8, CNST_LIMB(0x218dfa2ec92d0643), CNST_LIMB(0xf423b07e986aa967), CNST_LIMB(0x20c850694c2aa100), CNST_LIMB(0xf3c77969ee4be5a2) }, + /* 199 */ { 8, CNST_LIMB(0x2185cd4c148e4ae2), CNST_LIMB(0xf45f3a98a20738a4), CNST_LIMB(0x222173cc014980c1), CNST_LIMB(0xe00993cc187c5ec9) }, + /* 200 */ { 8, CNST_LIMB(0x217daeda36ad7a5c), CNST_LIMB(0xf49a784bcd1b8afe), CNST_LIMB(0x2386f26fc1000000), CNST_LIMB(0xcd2b297d889bc2b6) }, + /* 201 */ { 8, CNST_LIMB(0x21759eac708452fe), CNST_LIMB(0xf4d56a5b33cec44a), CNST_LIMB(0x24f92ce8af296d41), CNST_LIMB(0xbb214d5064862b22) }, + /* 202 */ { 8, CNST_LIMB(0x216d9c96c7d490d4), CNST_LIMB(0xf510118708a8f8dd), CNST_LIMB(0x2678863cd0ece100), CNST_LIMB(0xa9e1a7ca7ea10e20) }, + /* 203 */ { 8, CNST_LIMB(0x2165a86e02cb358c), CNST_LIMB(0xf54a6e8ca5438db1), CNST_LIMB(0x280563f0a9472d61), CNST_LIMB(0x99626e72b39ea0cf) }, + /* 204 */ { 8, CNST_LIMB(0x215dc207a3c20fdf), CNST_LIMB(0xf5848226989d33c3), CNST_LIMB(0x29a02e1406210000), CNST_LIMB(0x899a5ba9c13fafd9) }, + /* 205 */ { 8, CNST_LIMB(0x2155e939e51e8b37), CNST_LIMB(0xf5be4d0cb51434aa), CNST_LIMB(0x2b494f4efe6d2e21), CNST_LIMB(0x7a80a705391e96ff) }, + /* 206 */ { 8, CNST_LIMB(0x214e1ddbb54cd933), CNST_LIMB(0xf5f7cff41e09aeb8), CNST_LIMB(0x2d0134ef21cbc100), CNST_LIMB(0x6c0cfe23de23042a) }, + /* 207 */ { 8, CNST_LIMB(0x21465fc4b2d68f98), CNST_LIMB(0xf6310b8f55304840), CNST_LIMB(0x2ec84ef4da2ef581), CNST_LIMB(0x5e377df359c944dd) }, + /* 208 */ { 8, CNST_LIMB(0x213eaecd2893dd60), CNST_LIMB(0xf66a008e4788cbcd), CNST_LIMB(0x309f102100000000), CNST_LIMB(0x50f8ac5fc8f53985) }, + /* 209 */ { 8, CNST_LIMB(0x21370ace09f681c6), CNST_LIMB(0xf6a2af9e5a0f0a08), CNST_LIMB(0x3285ee02a1420281), CNST_LIMB(0x44497266278e35b7) }, + /* 210 */ { 8, CNST_LIMB(0x212f73a0ef6db7cb), CNST_LIMB(0xf6db196a761949d9), CNST_LIMB(0x347d6104fc324100), CNST_LIMB(0x382316831f7ee175) }, + /* 211 */ { 8, CNST_LIMB(0x2127e92012e25004), CNST_LIMB(0xf7133e9b156c7be5), CNST_LIMB(0x3685e47dade53d21), CNST_LIMB(0x2c7f377833b8946e) }, + /* 212 */ { 8, CNST_LIMB(0x21206b264c4a39a7), CNST_LIMB(0xf74b1fd64e0753c6), CNST_LIMB(0x389ff6bb15610000), CNST_LIMB(0x2157c761ab4163ef) }, + /* 213 */ { 8, CNST_LIMB(0x2118f98f0e52c28f), CNST_LIMB(0xf782bdbfdda6577b), CNST_LIMB(0x3acc1912ebb57661), CNST_LIMB(0x16a7071803cc49a9) }, + /* 214 */ { 8, CNST_LIMB(0x211194366320dc66), CNST_LIMB(0xf7ba18f93502e409), CNST_LIMB(0x3d0acff111946100), CNST_LIMB(0xc6781d80f8224fc) }, + /* 215 */ { 8, CNST_LIMB(0x210a3af8e926bb78), CNST_LIMB(0xf7f1322182cf15d1), CNST_LIMB(0x3f5ca2e692eaf841), CNST_LIMB(0x294092d370a900b) }, + /* 216 */ { 8, CNST_LIMB(0x2102edb3d00e29a6), CNST_LIMB(0xf82809d5be7072db), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 217 */ { 8, CNST_LIMB(0x20fbac44d5b6edc2), CNST_LIMB(0xf85ea0b0b27b2610), CNST_LIMB(0x443bcb714399a5c1), CNST_LIMB(0xe03b98f103fad6d2) }, + /* 218 */ { 8, CNST_LIMB(0x20f4768a4348ad08), CNST_LIMB(0xf894f74b06ef8b40), CNST_LIMB(0x46ca406c81af2100), CNST_LIMB(0xcee3d32cad2a9049) }, + /* 219 */ { 8, CNST_LIMB(0x20ed4c62ea57b1f0), CNST_LIMB(0xf8cb0e3b4b3bbdb3), CNST_LIMB(0x496e106ac22aaae1), CNST_LIMB(0xbe3f9df9277fdada) }, + /* 220 */ { 8, CNST_LIMB(0x20e62dae221c087a), CNST_LIMB(0xf900e6160002ccfe), CNST_LIMB(0x4c27d39fa5410000), CNST_LIMB(0xae46f0d94c05e933) }, + /* 221 */ { 8, CNST_LIMB(0x20df1a4bc4ba6525), CNST_LIMB(0xf9367f6da0ab2e9c), CNST_LIMB(0x4ef825c296e43ca1), CNST_LIMB(0x9ef2280fb437a33d) }, + /* 222 */ { 8, CNST_LIMB(0x20d8121c2c9e506e), CNST_LIMB(0xf96bdad2acb5f5ef), CNST_LIMB(0x51dfa61f5ad88100), CNST_LIMB(0x9039ff426d3f284b) }, + /* 223 */ { 8, CNST_LIMB(0x20d1150031e51549), CNST_LIMB(0xf9a0f8d3b0e04fde), CNST_LIMB(0x54def7a6d2f16901), CNST_LIMB(0x82178c6d6b51f8f4) }, + /* 224 */ { 8, CNST_LIMB(0x20ca22d927d8f54d), CNST_LIMB(0xf9d5d9fd5010b366), CNST_LIMB(0x57f6c10000000000), CNST_LIMB(0x74843b1ee4c1e053) }, + /* 225 */ { 8, CNST_LIMB(0x20c33b88da7c29aa), CNST_LIMB(0xfa0a7eda4c112ce6), CNST_LIMB(0x5b27ac993df97701), CNST_LIMB(0x6779c7f90dc42f48) }, + /* 226 */ { 8, CNST_LIMB(0x20bc5ef18c233bdf), CNST_LIMB(0xfa3ee7f38e181ed0), CNST_LIMB(0x5e7268b9bbdf8100), CNST_LIMB(0x5af23c74f9ad9fe9) }, + /* 227 */ { 8, CNST_LIMB(0x20b58cf5f31e4526), CNST_LIMB(0xfa7315d02f20c7bd), CNST_LIMB(0x61d7a7932ff3d6a1), CNST_LIMB(0x4ee7eae2acdc617e) }, + /* 228 */ { 8, CNST_LIMB(0x20aec5793770a74d), CNST_LIMB(0xfaa708f58014d37c), CNST_LIMB(0x65581f53c8c10000), CNST_LIMB(0x43556aa2ac262a0b) }, + /* 229 */ { 8, CNST_LIMB(0x20a8085ef096d530), CNST_LIMB(0xfadac1e711c832d1), CNST_LIMB(0x68f48a385b8320e1), CNST_LIMB(0x3835949593b8ddd1) }, + /* 230 */ { 8, CNST_LIMB(0x20a1558b2359c4b1), CNST_LIMB(0xfb0e4126bcc86bd7), CNST_LIMB(0x6cada69ed07c2100), CNST_LIMB(0x2d837fbe78458762) }, + /* 231 */ { 8, CNST_LIMB(0x209aace23fafa72e), CNST_LIMB(0xfb418734a9008bd9), CNST_LIMB(0x70843718cdbf27c1), CNST_LIMB(0x233a7e150a54a555) }, + /* 232 */ { 8, CNST_LIMB(0x20940e491ea988d7), CNST_LIMB(0xfb74948f5532da4b), CNST_LIMB(0x7479027ea1000000), CNST_LIMB(0x19561984a50ff8fe) }, + /* 233 */ { 8, CNST_LIMB(0x208d79a5006d7a47), CNST_LIMB(0xfba769b39e49640e), CNST_LIMB(0x788cd40268f39641), CNST_LIMB(0xfd211159fe3490f) }, + /* 234 */ { 8, CNST_LIMB(0x2086eedb8a3cead3), CNST_LIMB(0xfbda071cc67e6db5), CNST_LIMB(0x7cc07b437ecf6100), CNST_LIMB(0x6aa563e655033e3) }, + /* 235 */ { 8, CNST_LIMB(0x20806dd2c486dcc6), CNST_LIMB(0xfc0c6d447c5dd362), CNST_LIMB(0x8114cc6220762061), CNST_LIMB(0xfbb614b3f2d3b14c) }, + /* 236 */ { 8, CNST_LIMB(0x2079f67119059fae), CNST_LIMB(0xfc3e9ca2e1a05533), CNST_LIMB(0x858aa0135be10000), CNST_LIMB(0xeac0f8837fb05773) }, + /* 237 */ { 8, CNST_LIMB(0x2073889d50e7bf63), CNST_LIMB(0xfc7095ae91e1c760), CNST_LIMB(0x8a22d3b53c54c321), CNST_LIMB(0xda6e4c10e8615ca5) }, + /* 238 */ { 8, CNST_LIMB(0x206d243e9303d929), CNST_LIMB(0xfca258dca9331635), CNST_LIMB(0x8ede496339f34100), CNST_LIMB(0xcab755a8d01fa67f) }, + /* 239 */ { 8, CNST_LIMB(0x2066c93c62170aa8), CNST_LIMB(0xfcd3e6a0ca8906c2), CNST_LIMB(0x93bde80aec3a1481), CNST_LIMB(0xbb95a9ae71aa3e0c) }, + /* 240 */ { 8, CNST_LIMB(0x2060777e9b0db0f6), CNST_LIMB(0xfd053f6d26089673), CNST_LIMB(0x98c29b8100000000), CNST_LIMB(0xad0326c296b4f529) }, + /* 241 */ { 8, CNST_LIMB(0x205a2eed73563032), CNST_LIMB(0xfd3663b27f31d529), CNST_LIMB(0x9ded549671832381), CNST_LIMB(0x9ef9f21eed31b7c1) }, + /* 242 */ { 8, CNST_LIMB(0x2053ef71773d7e6a), CNST_LIMB(0xfd6753e032ea0efe), CNST_LIMB(0xa33f092e0b1ac100), CNST_LIMB(0x91747422be14b0b2) }, + /* 243 */ { 8, CNST_LIMB(0x204db8f388552ea9), CNST_LIMB(0xfd9810643d6614c3), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 244 */ { 8, CNST_LIMB(0x20478b5cdbe2bb2f), CNST_LIMB(0xfdc899ab3ff56c5e), CNST_LIMB(0xae5b564ac3a10000), CNST_LIMB(0x77df79e9a96c06f6) }, + /* 245 */ { 8, CNST_LIMB(0x20416696f957cfbf), CNST_LIMB(0xfdf8f02086af2c4b), CNST_LIMB(0xb427f4b3be74c361), CNST_LIMB(0x6bc6019636c7d0c2) }, + /* 246 */ { 8, CNST_LIMB(0x203b4a8bb8d356e7), CNST_LIMB(0xfe29142e0e01401f), CNST_LIMB(0xba1f9a938041e100), CNST_LIMB(0x601c4205aebd9e47) }, + /* 247 */ { 8, CNST_LIMB(0x2035372541ab0f0d), CNST_LIMB(0xfe59063c8822ce56), CNST_LIMB(0xc0435871d1110f41), CNST_LIMB(0x54ddc59756f05016) }, + /* 248 */ { 8, CNST_LIMB(0x202f2c4e08fd6dcc), CNST_LIMB(0xfe88c6b3626a72aa), CNST_LIMB(0xc694446f01000000), CNST_LIMB(0x4a0648979c838c18) }, + /* 249 */ { 8, CNST_LIMB(0x202929f0d04b99e9), CNST_LIMB(0xfeb855f8ca88fb0d), CNST_LIMB(0xcd137a5b57ac3ec1), CNST_LIMB(0x3f91b6e0bb3a053d) }, + /* 250 */ { 8, CNST_LIMB(0x20232ff8a41b45eb), CNST_LIMB(0xfee7b471b3a9507d), CNST_LIMB(0xd3c21bcecceda100), CNST_LIMB(0x357c299a88ea76a5) }, + /* 251 */ { 8, CNST_LIMB(0x201d3e50daa036db), CNST_LIMB(0xff16e281db76303b), CNST_LIMB(0xdaa150410b788de1), CNST_LIMB(0x2bc1e517aecc56e3) }, + /* 252 */ { 8, CNST_LIMB(0x201754e5126d446d), CNST_LIMB(0xff45e08bcf06554e), CNST_LIMB(0xe1b24521be010000), CNST_LIMB(0x225f56ceb3da9f5d) }, + /* 253 */ { 8, CNST_LIMB(0x201173a1312ca135), CNST_LIMB(0xff74aef0efafadd7), CNST_LIMB(0xe8f62df12777c1a1), CNST_LIMB(0x1951136d53ad63ac) }, + /* 254 */ { 8, CNST_LIMB(0x200b9a71625f3b13), CNST_LIMB(0xffa34e1177c23362), CNST_LIMB(0xf06e445906fc0100), CNST_LIMB(0x1093d504b3cd7d93) }, + /* 255 */ { 8, CNST_LIMB(0x2005c94216230568), CNST_LIMB(0xffd1be4c7f2af942), CNST_LIMB(0xf81bc845c81bf801), CNST_LIMB(0x824794d1ec1814f) }, + /* 256 */ { 8, CNST_LIMB(0x1fffffffffffffff), CNST_LIMB(0xffffffffffffffff), CNST_LIMB(0x8), CNST_LIMB(0x0) }, +}; diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mul_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mul_1.s new file mode 100644 index 0000000..1644074 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mul_1.s @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mul_1c + .type __gmpn_mul_1c,@function + +__gmpn_mul_1c: + + + + + push %rbx + mov %r8, %r10 + + jmp .Lcommon + .size __gmpn_mul_1c,.-__gmpn_mul_1c + + .globl __gmpn_mul_1 + .type __gmpn_mul_1,@function + +__gmpn_mul_1: + + + + + + push %rbx + xor %r10, %r10 +.Lcommon: + mov (%rsi), %rax + mov %rdx, %rbx + + mul %rcx + mov %rbx, %r11 + + add %r10, %rax + adc $0, %rdx + + and $3, %ebx + jz .Lb0 + cmp $2, %ebx + jz .Lb2 + jg .Lb3 + +.Lb1: dec %r11 + jne .Lgt1 + mov %rax, (%rdi) + jmp .Lret +.Lgt1: lea 8(%rsi,%r11,8), %rsi + lea -8(%rdi,%r11,8), %rdi + neg %r11 + xor %r10, %r10 + xor %ebx, %ebx + mov %rax, %r9 + mov (%rsi,%r11,8), %rax + mov %rdx, %r8 + jmp .LL1 + +.Lb0: lea (%rsi,%r11,8), %rsi + lea -16(%rdi,%r11,8), %rdi + neg %r11 + xor %r10, %r10 + mov %rax, %r8 + mov %rdx, %rbx + jmp .LL0 + +.Lb3: lea -8(%rsi,%r11,8), %rsi + lea -24(%rdi,%r11,8), %rdi + neg %r11 + mov %rax, %rbx + mov %rdx, %r10 + jmp .LL3 + +.Lb2: lea -16(%rsi,%r11,8), %rsi + lea -32(%rdi,%r11,8), %rdi + neg %r11 + xor %r8, %r8 + xor %ebx, %ebx + mov %rax, %r10 + mov 24(%rsi,%r11,8), %rax + mov %rdx, %r9 + jmp .LL2 + + .align 16, 0x90 +.Ltop: mov %r10, (%rdi,%r11,8) + add %rax, %r9 + mov (%rsi,%r11,8), %rax + adc %rdx, %r8 + mov $0, %r10d +.LL1: mul %rcx + mov %r9, 8(%rdi,%r11,8) + add %rax, %r8 + adc %rdx, %rbx +.LL0: mov 8(%rsi,%r11,8), %rax + mul %rcx + mov %r8, 16(%rdi,%r11,8) + add %rax, %rbx + adc %rdx, %r10 +.LL3: mov 16(%rsi,%r11,8), %rax + mul %rcx + mov %rbx, 24(%rdi,%r11,8) + mov $0, %r8d + mov %r8, %rbx + add %rax, %r10 + mov 24(%rsi,%r11,8), %rax + mov %r8, %r9 + adc %rdx, %r9 +.LL2: mul %rcx + add $4, %r11 + js .Ltop + + mov %r10, (%rdi,%r11,8) + add %rax, %r9 + adc %r8, %rdx + mov %r9, 8(%rdi,%r11,8) + add %r8, %rdx +.Lret: mov %rdx, %rax + + pop %rbx + + + ret + .size __gmpn_mul_1,.-__gmpn_mul_1 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mul_2.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mul_2.s new file mode 100644 index 0000000..0c3310d --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mul_2.s @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mul_2 + .type __gmpn_mul_2,@function + +__gmpn_mul_2: + + + push %rbx + push %rbp + + mov (%rcx), %r8 + mov 8(%rcx), %r9 + + mov (%rsi), %rax + + mov %rdx, %r11 + neg %r11 + lea -8(%rsi,%rdx,8), %rsi + lea -8(%rdi,%rdx,8), %rdi + + and $3, %edx + jz .Lm2p0 + cmp $2, %edx + jc .Lm2p1 + jz .Lm2p2 +.Lm2p3: + mul %r8 + xor %r10d, %r10d + mov %rax, %rcx + mov %rdx, %rbp + mov 8(%rsi,%r11,8), %rax + add $-1, %r11 + mul %r9 + add %rax, %rbp + jmp .Lm23 +.Lm2p0: + mul %r8 + xor %ebp, %ebp + mov %rax, %rbx + mov %rdx, %rcx + jmp .Lm20 +.Lm2p1: + mul %r8 + xor %r10d, %r10d + xor %ebx, %ebx + xor %ecx, %ecx + add $1, %r11 + jmp .Lm2top +.Lm2p2: + mul %r8 + xor %ebx, %ebx + xor %ecx, %ecx + mov %rax, %rbp + mov %rdx, %r10 + mov 8(%rsi,%r11,8), %rax + add $-2, %r11 + jmp .Lm22 + + + .align 32, 0x90 +.Lm2top: + add %rax, %r10 + adc %rdx, %rbx + mov 0(%rsi,%r11,8), %rax + adc $0, %ecx + mov $0, %ebp + mul %r9 + add %rax, %rbx + mov %r10, 0(%rdi,%r11,8) + adc %rdx, %rcx + mov 8(%rsi,%r11,8), %rax + mul %r8 + add %rax, %rbx + adc %rdx, %rcx + adc $0, %ebp +.Lm20: mov 8(%rsi,%r11,8), %rax + mul %r9 + add %rax, %rcx + adc %rdx, %rbp + mov 16(%rsi,%r11,8), %rax + mov $0, %r10d + mul %r8 + add %rax, %rcx + mov 16(%rsi,%r11,8), %rax + adc %rdx, %rbp + adc $0, %r10d + mul %r9 + add %rax, %rbp + mov %rbx, 8(%rdi,%r11,8) +.Lm23: adc %rdx, %r10 + mov 24(%rsi,%r11,8), %rax + mul %r8 + mov $0, %ebx + add %rax, %rbp + adc %rdx, %r10 + mov %rcx, 16(%rdi,%r11,8) + mov 24(%rsi,%r11,8), %rax + mov $0, %ecx + adc $0, %ebx +.Lm22: mul %r9 + add %rax, %r10 + mov %rbp, 24(%rdi,%r11,8) + adc %rdx, %rbx + mov 32(%rsi,%r11,8), %rax + mul %r8 + add $4, %r11 + js .Lm2top + + + add %rax, %r10 + adc %rdx, %rbx + adc $0, %ecx + mov (%rsi), %rax + mul %r9 + mov %r10, (%rdi) + add %rax, %rbx + adc %rdx, %rcx + mov %rbx, 8(%rdi) + mov %rcx, %rax + + pop %rbp + pop %rbx + + ret + .size __gmpn_mul_2,.-__gmpn_mul_2 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mul_basecase.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mul_basecase.s new file mode 100644 index 0000000..2cfb7aa --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mul_basecase.s @@ -0,0 +1,483 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mul_basecase + .type __gmpn_mul_basecase,@function + +__gmpn_mul_basecase: + + + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + xor %r13d, %r13d + mov (%rsi), %rax + mov (%rcx), %r12 + + sub %rdx, %r13 + mov %r13, %r11 + mov %edx, %ebx + + lea (%rdi,%rdx,8), %rdi + lea (%rsi,%rdx,8), %rsi + + mul %r12 + + test $1, %r8b + jz .Lmul_2 + + + + +.Lmul_1: + and $3, %ebx + jz .Lmul_1_prologue_0 + cmp $2, %ebx + jc .Lmul_1_prologue_1 + jz .Lmul_1_prologue_2 + +.Lmul_1_prologue_3: + add $-1, %r11 + lea .Laddmul_outer_3(%rip), %r14 + mov %rax, %r10 + mov %rdx, %rbx + jmp .Lmul_1_entry_3 + +.Lmul_1_prologue_0: + mov %rax, %rbp + mov %rdx, %r10 + lea .Laddmul_outer_0(%rip), %r14 + jmp .Lmul_1_entry_0 + +.Lmul_1_prologue_1: + cmp $-1, %r13 + jne 2f + mov %rax, -8(%rdi) + mov %rdx, (%rdi) + jmp .Lret +2: add $1, %r11 + lea .Laddmul_outer_1(%rip), %r14 + mov %rax, %r15 + mov %rdx, %rbp + xor %r10d, %r10d + mov (%rsi,%r11,8), %rax + jmp .Lmul_1_entry_1 + +.Lmul_1_prologue_2: + add $-2, %r11 + lea .Laddmul_outer_2(%rip), %r14 + mov %rax, %rbx + mov %rdx, %r15 + mov 24(%rsi,%r11,8), %rax + xor %ebp, %ebp + xor %r10d, %r10d + jmp .Lmul_1_entry_2 + + + + + .align 16, 0x90 +.Lmul_1_top: + mov %rbx, -16(%rdi,%r11,8) + add %rax, %r15 + mov (%rsi,%r11,8), %rax + adc %rdx, %rbp +.Lmul_1_entry_1: + xor %ebx, %ebx + mul %r12 + mov %r15, -8(%rdi,%r11,8) + add %rax, %rbp + adc %rdx, %r10 +.Lmul_1_entry_0: + mov 8(%rsi,%r11,8), %rax + mul %r12 + mov %rbp, (%rdi,%r11,8) + add %rax, %r10 + adc %rdx, %rbx +.Lmul_1_entry_3: + mov 16(%rsi,%r11,8), %rax + mul %r12 + mov %r10, 8(%rdi,%r11,8) + xor %ebp, %ebp + mov %rbp, %r10 + add %rax, %rbx + mov 24(%rsi,%r11,8), %rax + mov %rbp, %r15 + adc %rdx, %r15 +.Lmul_1_entry_2: + mul %r12 + add $4, %r11 + js .Lmul_1_top + + mov %rbx, -16(%rdi) + add %rax, %r15 + mov %r15, -8(%rdi) + adc %rdx, %rbp + mov %rbp, (%rdi) + + add $-1, %r8 + jz .Lret + + mov 8(%rcx), %r12 + mov 16(%rcx), %r9 + + lea 8(%rcx), %rcx + lea 8(%rdi), %rdi + + jmp *%r14 + + + + + .align 16, 0x90 +.Lmul_2: + mov 8(%rcx), %r9 + + and $3, %ebx + jz .Lmul_2_prologue_0 + cmp $2, %ebx + jz .Lmul_2_prologue_2 + jc .Lmul_2_prologue_1 + +.Lmul_2_prologue_3: + lea .Laddmul_outer_3(%rip), %r14 + add $2, %r11 + mov %rax, -16(%rdi,%r11,8) + mov %rdx, %rbp + xor %r10d, %r10d + xor %ebx, %ebx + mov -16(%rsi,%r11,8), %rax + jmp .Lmul_2_entry_3 + + .align 16, 0x90 +.Lmul_2_prologue_0: + add $3, %r11 + mov %rax, %rbx + mov %rdx, %r15 + xor %ebp, %ebp + mov -24(%rsi,%r11,8), %rax + lea .Laddmul_outer_0(%rip), %r14 + jmp .Lmul_2_entry_0 + + .align 16, 0x90 +.Lmul_2_prologue_1: + mov %rax, %r10 + mov %rdx, %rbx + xor %r15d, %r15d + lea .Laddmul_outer_1(%rip), %r14 + jmp .Lmul_2_entry_1 + + .align 16, 0x90 +.Lmul_2_prologue_2: + add $1, %r11 + lea .Laddmul_outer_2(%rip), %r14 + mov $0, %ebx + mov $0, %r15d + mov %rax, %rbp + mov -8(%rsi,%r11,8), %rax + mov %rdx, %r10 + jmp .Lmul_2_entry_2 + + + + .align 16, 0x90 +.Lmul_2_top: + mov -32(%rsi,%r11,8), %rax + mul %r9 + add %rax, %rbx + adc %rdx, %r15 + mov -24(%rsi,%r11,8), %rax + xor %ebp, %ebp + mul %r12 + add %rax, %rbx + mov -24(%rsi,%r11,8), %rax + adc %rdx, %r15 + adc $0, %ebp +.Lmul_2_entry_0: + mul %r9 + add %rax, %r15 + mov %rbx, -24(%rdi,%r11,8) + adc %rdx, %rbp + mov -16(%rsi,%r11,8), %rax + mul %r12 + mov $0, %r10d + add %rax, %r15 + adc %rdx, %rbp + mov -16(%rsi,%r11,8), %rax + adc $0, %r10d + mov $0, %ebx + mov %r15, -16(%rdi,%r11,8) +.Lmul_2_entry_3: + mul %r9 + add %rax, %rbp + mov -8(%rsi,%r11,8), %rax + adc %rdx, %r10 + mov $0, %r15d + mul %r12 + add %rax, %rbp + mov -8(%rsi,%r11,8), %rax + adc %rdx, %r10 + adc %r15d, %ebx +.Lmul_2_entry_2: + mul %r9 + add %rax, %r10 + mov %rbp, -8(%rdi,%r11,8) + adc %rdx, %rbx + mov (%rsi,%r11,8), %rax + mul %r12 + add %rax, %r10 + adc %rdx, %rbx + adc $0, %r15d +.Lmul_2_entry_1: + add $4, %r11 + mov %r10, -32(%rdi,%r11,8) + js .Lmul_2_top + + mov -32(%rsi,%r11,8), %rax + mul %r9 + add %rax, %rbx + mov %rbx, (%rdi) + adc %rdx, %r15 + mov %r15, 8(%rdi) + + add $-2, %r8 + jz .Lret + + mov 16(%rcx), %r12 + mov 24(%rcx), %r9 + + lea 16(%rcx), %rcx + lea 16(%rdi), %rdi + + jmp *%r14 + + + + + + + + +.Laddmul_outer_0: + add $3, %r13 + lea 0(%rip), %r14 + + mov %r13, %r11 + mov -24(%rsi,%r13,8), %rax + mul %r12 + mov %rax, %rbx + mov -24(%rsi,%r13,8), %rax + mov %rdx, %r15 + xor %ebp, %ebp + jmp .Laddmul_entry_0 + +.Laddmul_outer_1: + mov %r13, %r11 + mov (%rsi,%r13,8), %rax + mul %r12 + mov %rax, %r10 + mov (%rsi,%r13,8), %rax + mov %rdx, %rbx + xor %r15d, %r15d + jmp .Laddmul_entry_1 + +.Laddmul_outer_2: + add $1, %r13 + lea 0(%rip), %r14 + + mov %r13, %r11 + mov -8(%rsi,%r13,8), %rax + mul %r12 + xor %ebx, %ebx + mov %rax, %rbp + xor %r15d, %r15d + mov %rdx, %r10 + mov -8(%rsi,%r13,8), %rax + jmp .Laddmul_entry_2 + +.Laddmul_outer_3: + add $2, %r13 + lea 0(%rip), %r14 + + mov %r13, %r11 + mov -16(%rsi,%r13,8), %rax + xor %r10d, %r10d + mul %r12 + mov %rax, %r15 + mov -16(%rsi,%r13,8), %rax + mov %rdx, %rbp + jmp .Laddmul_entry_3 + + + + .align 16, 0x90 +.Laddmul_top: + add %r10, -32(%rdi,%r11,8) + adc %rax, %rbx + mov -24(%rsi,%r11,8), %rax + adc %rdx, %r15 + xor %ebp, %ebp + mul %r12 + add %rax, %rbx + mov -24(%rsi,%r11,8), %rax + adc %rdx, %r15 + adc %ebp, %ebp +.Laddmul_entry_0: + mul %r9 + xor %r10d, %r10d + add %rbx, -24(%rdi,%r11,8) + adc %rax, %r15 + mov -16(%rsi,%r11,8), %rax + adc %rdx, %rbp + mul %r12 + add %rax, %r15 + mov -16(%rsi,%r11,8), %rax + adc %rdx, %rbp + adc $0, %r10d +.Laddmul_entry_3: + mul %r9 + add %r15, -16(%rdi,%r11,8) + adc %rax, %rbp + mov -8(%rsi,%r11,8), %rax + adc %rdx, %r10 + mul %r12 + xor %ebx, %ebx + add %rax, %rbp + adc %rdx, %r10 + mov $0, %r15d + mov -8(%rsi,%r11,8), %rax + adc %r15d, %ebx +.Laddmul_entry_2: + mul %r9 + add %rbp, -8(%rdi,%r11,8) + adc %rax, %r10 + adc %rdx, %rbx + mov (%rsi,%r11,8), %rax + mul %r12 + add %rax, %r10 + mov (%rsi,%r11,8), %rax + adc %rdx, %rbx + adc $0, %r15d +.Laddmul_entry_1: + mul %r9 + add $4, %r11 + js .Laddmul_top + + add %r10, -8(%rdi) + adc %rax, %rbx + mov %rbx, (%rdi) + adc %rdx, %r15 + mov %r15, 8(%rdi) + + add $-2, %r8 + jz .Lret + + lea 16(%rdi), %rdi + lea 16(%rcx), %rcx + + mov (%rcx), %r12 + mov 8(%rcx), %r9 + + jmp *%r14 + + .align 16, 0x90 +.Lret: pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + + .size __gmpn_mul_basecase,.-__gmpn_mul_basecase diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mullo_basecase.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mullo_basecase.s new file mode 100644 index 0000000..d76272c --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mullo_basecase.s @@ -0,0 +1,439 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mullo_basecase + .type __gmpn_mullo_basecase,@function + +__gmpn_mullo_basecase: + + + cmp $4, %rcx + jge .Lgen + mov (%rsi), %rax + mov (%rdx), %r8 + + lea .Ltab(%rip), %r9 + movslq (%r9,%rcx,4), %r10 + add %r10, %r9 + jmp *%r9 + + .section .data.rel.ro.local,"a",@progbits + .align 8, 0x90 +.Ltab: .long .Ltab-.Ltab + .long .L1-.Ltab + .long .L2-.Ltab + .long .L3-.Ltab + .text + +.L1: imul %r8, %rax + mov %rax, (%rdi) + + ret + +.L2: mov 8(%rdx), %r11 + imul %rax, %r11 + mul %r8 + mov %rax, (%rdi) + imul 8(%rsi), %r8 + lea (%r11, %rdx), %rax + add %r8, %rax + mov %rax, 8(%rdi) + + ret + +.L3: mov 8(%rdx), %r9 + mov 16(%rdx), %r11 + mul %r8 + mov %rax, (%rdi) + mov (%rsi), %rax + mov %rdx, %rcx + mul %r9 + imul 8(%rsi), %r9 + mov 16(%rsi), %r10 + imul %r8, %r10 + add %rax, %rcx + adc %rdx, %r9 + add %r10, %r9 + mov 8(%rsi), %rax + mul %r8 + add %rax, %rcx + adc %rdx, %r9 + mov %r11, %rax + imul (%rsi), %rax + add %rax, %r9 + mov %rcx, 8(%rdi) + mov %r9, 16(%rdi) + + ret + +.L0m4: +.L1m4: +.L2m4: +.L3m4: +.Lgen: push %rbx + push %rbp + push %r13 + push %r14 + push %r15 + + mov (%rsi), %rax + mov (%rdx), %r13 + mov %rdx, %r11 + + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + neg %rcx + + mul %r13 + + test $1, %cl + jz .Lmul_2 + +.Lmul_1: + lea -8(%rdi), %rdi + lea -8(%rsi), %rsi + test $2, %cl + jnz .Lmul_1_prologue_3 + +.Lmul_1_prologue_2: + lea -1(%rcx), %r9 + lea .Laddmul_outer_1(%rip), %r8 + mov %rax, %rbx + mov %rdx, %r15 + xor %ebp, %ebp + xor %r10d, %r10d + mov 16(%rsi,%rcx,8), %rax + jmp .Lmul_1_entry_2 + +.Lmul_1_prologue_3: + lea 1(%rcx), %r9 + lea .Laddmul_outer_3(%rip), %r8 + mov %rax, %rbp + mov %rdx, %r10 + xor %ebx, %ebx + jmp .Lmul_1_entry_0 + + .align 16, 0x90 +.Lmul_1_top: + mov %rbx, -16(%rdi,%r9,8) + add %rax, %r15 + mov (%rsi,%r9,8), %rax + adc %rdx, %rbp + xor %ebx, %ebx + mul %r13 + mov %r15, -8(%rdi,%r9,8) + add %rax, %rbp + adc %rdx, %r10 +.Lmul_1_entry_0: + mov 8(%rsi,%r9,8), %rax + mul %r13 + mov %rbp, (%rdi,%r9,8) + add %rax, %r10 + adc %rdx, %rbx + mov 16(%rsi,%r9,8), %rax + mul %r13 + mov %r10, 8(%rdi,%r9,8) + xor %ebp, %ebp + mov %rbp, %r10 + add %rax, %rbx + mov 24(%rsi,%r9,8), %rax + mov %rbp, %r15 + adc %rdx, %r15 +.Lmul_1_entry_2: + mul %r13 + add $4, %r9 + js .Lmul_1_top + + mov %rbx, -16(%rdi) + add %rax, %r15 + mov %r15, -8(%rdi) + adc %rdx, %rbp + + imul (%rsi), %r13 + add %r13, %rbp + mov %rbp, (%rdi) + + add $1, %rcx + jz .Lret + + mov 8(%r11), %r13 + mov 16(%r11), %r14 + + lea 16(%rsi), %rsi + lea 8(%r11), %r11 + lea 24(%rdi), %rdi + + jmp *%r8 + + +.Lmul_2: + mov 8(%r11), %r14 + test $2, %cl + jz .Lmul_2_prologue_3 + + .align 16, 0x90 +.Lmul_2_prologue_1: + lea 0(%rcx), %r9 + mov %rax, %r10 + mov %rdx, %rbx + xor %r15d, %r15d + mov (%rsi,%rcx,8), %rax + lea .Laddmul_outer_3(%rip), %r8 + jmp .Lmul_2_entry_1 + + .align 16, 0x90 +.Lmul_2_prologue_3: + lea 2(%rcx), %r9 + mov $0, %r10d + mov %rax, %r15 + mov (%rsi,%rcx,8), %rax + mov %rdx, %rbp + lea .Laddmul_outer_1(%rip), %r8 + jmp .Lmul_2_entry_3 + + .align 16, 0x90 +.Lmul_2_top: + mov -32(%rsi,%r9,8), %rax + mul %r14 + add %rax, %rbx + adc %rdx, %r15 + mov -24(%rsi,%r9,8), %rax + xor %ebp, %ebp + mul %r13 + add %rax, %rbx + mov -24(%rsi,%r9,8), %rax + adc %rdx, %r15 + adc $0, %ebp + mul %r14 + add %rax, %r15 + mov %rbx, -24(%rdi,%r9,8) + adc %rdx, %rbp + mov -16(%rsi,%r9,8), %rax + mul %r13 + mov $0, %r10d + add %rax, %r15 + adc %rdx, %rbp + mov -16(%rsi,%r9,8), %rax + adc $0, %r10d +.Lmul_2_entry_3: + mov $0, %ebx + mov %r15, -16(%rdi,%r9,8) + mul %r14 + add %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + mov $0, %r15d + mul %r13 + add %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + adc %r15d, %ebx + mul %r14 + add %rax, %r10 + mov %rbp, -8(%rdi,%r9,8) + adc %rdx, %rbx + mov (%rsi,%r9,8), %rax + mul %r13 + add %rax, %r10 + adc %rdx, %rbx + adc $0, %r15d +.Lmul_2_entry_1: + add $4, %r9 + mov %r10, -32(%rdi,%r9,8) + js .Lmul_2_top + + imul -16(%rsi), %r14 + add %r14, %rbx + imul -8(%rsi), %r13 + add %r13, %rbx + mov %rbx, -8(%rdi) + + add $2, %rcx + jz .Lret + + mov 16(%r11), %r13 + mov 24(%r11), %r14 + + lea 16(%r11), %r11 + lea 16(%rdi), %rdi + + jmp *%r8 + + +.Laddmul_outer_1: + lea -2(%rcx), %r9 + mov -16(%rsi,%rcx,8), %rax + mul %r13 + mov %rax, %r10 + mov -16(%rsi,%rcx,8), %rax + mov %rdx, %rbx + xor %r15d, %r15d + lea .Laddmul_outer_3(%rip), %r8 + jmp .Laddmul_entry_1 + +.Laddmul_outer_3: + lea 0(%rcx), %r9 + mov -16(%rsi,%rcx,8), %rax + xor %r10d, %r10d + mul %r13 + mov %rax, %r15 + mov -16(%rsi,%rcx,8), %rax + mov %rdx, %rbp + lea .Laddmul_outer_1(%rip), %r8 + jmp .Laddmul_entry_3 + + .align 16, 0x90 +.Laddmul_top: + add %r10, -32(%rdi,%r9,8) + adc %rax, %rbx + mov -24(%rsi,%r9,8), %rax + adc %rdx, %r15 + xor %ebp, %ebp + mul %r13 + add %rax, %rbx + mov -24(%rsi,%r9,8), %rax + adc %rdx, %r15 + adc %ebp, %ebp + mul %r14 + xor %r10d, %r10d + add %rbx, -24(%rdi,%r9,8) + adc %rax, %r15 + mov -16(%rsi,%r9,8), %rax + adc %rdx, %rbp + mul %r13 + add %rax, %r15 + mov -16(%rsi,%r9,8), %rax + adc %rdx, %rbp + adc $0, %r10d +.Laddmul_entry_3: + mul %r14 + add %r15, -16(%rdi,%r9,8) + adc %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + mul %r13 + xor %ebx, %ebx + add %rax, %rbp + adc %rdx, %r10 + mov $0, %r15d + mov -8(%rsi,%r9,8), %rax + adc %r15d, %ebx + mul %r14 + add %rbp, -8(%rdi,%r9,8) + adc %rax, %r10 + adc %rdx, %rbx + mov (%rsi,%r9,8), %rax + mul %r13 + add %rax, %r10 + mov (%rsi,%r9,8), %rax + adc %rdx, %rbx + adc $0, %r15d +.Laddmul_entry_1: + mul %r14 + add $4, %r9 + js .Laddmul_top + + add %r10, -32(%rdi) + adc %rax, %rbx + + imul -24(%rsi), %r13 + add %r13, %rbx + add %rbx, -24(%rdi) + + add $2, %rcx + jns .Lret + + lea 16(%r11), %r11 + + mov (%r11), %r13 + mov 8(%r11), %r14 + + lea -16(%rsi), %rsi + + jmp *%r8 + +.Lret: pop %r15 + pop %r14 + pop %r13 + pop %rbp + pop %rbx + + ret + .size __gmpn_mullo_basecase,.-__gmpn_mullo_basecase diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mulmid_basecase.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mulmid_basecase.s new file mode 100644 index 0000000..b607e84 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mulmid_basecase.s @@ -0,0 +1,573 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mulmid_basecase + .type __gmpn_mulmid_basecase,@function + +__gmpn_mulmid_basecase: + + + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + mov %rcx, %r15 + + + lea 1(%rdx), %r13 + sub %r8, %r13 + + lea (%rdi,%r13,8), %rdi + + cmp $4, %r13 + jc .Ldiagonal + + lea (%rsi,%rdx,8), %rsi + + test $1, %r8 + jz .Lmul_2 + + + + +.Lmul_1: + mov %r13d, %ebx + + neg %r13 + mov (%rsi,%r13,8), %rax + mov (%r15), %r12 + mul %r12 + + and $-4, %r13 + mov %r13, %r11 + + and $3, %ebx + jz .Lmul_1_prologue_0 + cmp $2, %ebx + jc .Lmul_1_prologue_1 + jz .Lmul_1_prologue_2 + +.Lmul_1_prologue_3: + mov %rax, %r10 + mov %rdx, %rbx + lea .Laddmul_prologue_3(%rip), %r14 + jmp .Lmul_1_entry_3 + + .align 16, 0x90 +.Lmul_1_prologue_0: + mov %rax, %rbp + mov %rdx, %r10 + lea .Laddmul_prologue_0(%rip), %r14 + jmp .Lmul_1_entry_0 + + .align 16, 0x90 +.Lmul_1_prologue_1: + add $4, %r11 + mov %rax, %rcx + mov %rdx, %rbp + mov $0, %r10d + mov (%rsi,%r11,8), %rax + lea .Laddmul_prologue_1(%rip), %r14 + jmp .Lmul_1_entry_1 + + .align 16, 0x90 +.Lmul_1_prologue_2: + mov %rax, %rbx + mov %rdx, %rcx + mov 24(%rsi,%r11,8), %rax + mov $0, %ebp + mov $0, %r10d + lea .Laddmul_prologue_2(%rip), %r14 + jmp .Lmul_1_entry_2 + + + + + .align 16, 0x90 +.Lmul_1_top: + mov %rbx, -16(%rdi,%r11,8) + add %rax, %rcx + mov (%rsi,%r11,8), %rax + adc %rdx, %rbp +.Lmul_1_entry_1: + mov $0, %ebx + mul %r12 + mov %rcx, -8(%rdi,%r11,8) + add %rax, %rbp + adc %rdx, %r10 +.Lmul_1_entry_0: + mov 8(%rsi,%r11,8), %rax + mul %r12 + mov %rbp, (%rdi,%r11,8) + add %rax, %r10 + adc %rdx, %rbx +.Lmul_1_entry_3: + mov 16(%rsi,%r11,8), %rax + mul %r12 + mov %r10, 8(%rdi,%r11,8) + mov $0, %ebp + mov %rbp, %r10 + add %rax, %rbx + mov 24(%rsi,%r11,8), %rax + mov %rbp, %rcx + adc %rdx, %rcx +.Lmul_1_entry_2: + mul %r12 + add $4, %r11 + js .Lmul_1_top + + mov %rbx, -16(%rdi) + add %rax, %rcx + mov %rcx, -8(%rdi) + mov %rbp, 8(%rdi) + adc %rdx, %rbp + mov %rbp, (%rdi) + + dec %r8 + jz .Lret + + lea -8(%rsi), %rsi + lea 8(%r15), %r15 + + mov %r13, %r11 + mov (%r15), %r12 + mov 8(%r15), %r9 + + jmp *%r14 + + + + + .align 16, 0x90 +.Lmul_2: + mov %r13d, %ebx + + neg %r13 + mov -8(%rsi,%r13,8), %rax + mov (%r15), %r12 + mov 8(%r15), %r9 + mul %r9 + + and $-4, %r13 + mov %r13, %r11 + + and $3, %ebx + jz .Lmul_2_prologue_0 + cmp $2, %ebx + jc .Lmul_2_prologue_1 + jz .Lmul_2_prologue_2 + +.Lmul_2_prologue_3: + mov %rax, %rcx + mov %rdx, %rbp + lea .Laddmul_prologue_3(%rip), %r14 + jmp .Lmul_2_entry_3 + + .align 16, 0x90 +.Lmul_2_prologue_0: + mov %rax, %rbx + mov %rdx, %rcx + lea .Laddmul_prologue_0(%rip), %r14 + jmp .Lmul_2_entry_0 + + .align 16, 0x90 +.Lmul_2_prologue_1: + mov %rax, %r10 + mov %rdx, %rbx + mov $0, %ecx + lea .Laddmul_prologue_1(%rip), %r14 + jmp .Lmul_2_entry_1 + + .align 16, 0x90 +.Lmul_2_prologue_2: + mov %rax, %rbp + mov %rdx, %r10 + mov $0, %ebx + mov 16(%rsi,%r11,8), %rax + lea .Laddmul_prologue_2(%rip), %r14 + jmp .Lmul_2_entry_2 + + + + + .align 16, 0x90 +.Lmul_2_top: + mov -8(%rsi,%r11,8), %rax + mul %r9 + add %rax, %rbx + adc %rdx, %rcx +.Lmul_2_entry_0: + mov $0, %ebp + mov (%rsi,%r11,8), %rax + mul %r12 + add %rax, %rbx + mov (%rsi,%r11,8), %rax + adc %rdx, %rcx + adc $0, %ebp + mul %r9 + add %rax, %rcx + mov %rbx, (%rdi,%r11,8) + adc %rdx, %rbp +.Lmul_2_entry_3: + mov 8(%rsi,%r11,8), %rax + mul %r12 + mov $0, %r10d + add %rax, %rcx + adc %rdx, %rbp + mov $0, %ebx + adc $0, %r10d + mov 8(%rsi,%r11,8), %rax + mov %rcx, 8(%rdi,%r11,8) + mul %r9 + add %rax, %rbp + mov 16(%rsi,%r11,8), %rax + adc %rdx, %r10 +.Lmul_2_entry_2: + mov $0, %ecx + mul %r12 + add %rax, %rbp + mov 16(%rsi,%r11,8), %rax + adc %rdx, %r10 + adc $0, %ebx + mul %r9 + add %rax, %r10 + mov %rbp, 16(%rdi,%r11,8) + adc %rdx, %rbx +.Lmul_2_entry_1: + mov 24(%rsi,%r11,8), %rax + mul %r12 + add %rax, %r10 + adc %rdx, %rbx + adc $0, %ecx + add $4, %r11 + mov %r10, -8(%rdi,%r11,8) + jnz .Lmul_2_top + + mov %rbx, (%rdi) + mov %rcx, 8(%rdi) + + sub $2, %r8 + jz .Lret + + lea 16(%r15), %r15 + lea -16(%rsi), %rsi + + mov %r13, %r11 + mov (%r15), %r12 + mov 8(%r15), %r9 + + jmp *%r14 + + + + + .align 16, 0x90 +.Laddmul_prologue_0: + mov -8(%rsi,%r11,8), %rax + mul %r9 + mov %rax, %rcx + mov %rdx, %rbp + mov $0, %r10d + jmp .Laddmul_entry_0 + + .align 16, 0x90 +.Laddmul_prologue_1: + mov 16(%rsi,%r11,8), %rax + mul %r9 + mov %rax, %rbx + mov %rdx, %rcx + mov $0, %ebp + mov 24(%rsi,%r11,8), %rax + jmp .Laddmul_entry_1 + + .align 16, 0x90 +.Laddmul_prologue_2: + mov 8(%rsi,%r11,8), %rax + mul %r9 + mov %rax, %r10 + mov %rdx, %rbx + mov $0, %ecx + jmp .Laddmul_entry_2 + + .align 16, 0x90 +.Laddmul_prologue_3: + mov (%rsi,%r11,8), %rax + mul %r9 + mov %rax, %rbp + mov %rdx, %r10 + mov $0, %ebx + mov $0, %ecx + jmp .Laddmul_entry_3 + + + + .align 16, 0x90 +.Laddmul_top: + mov $0, %r10d + add %rax, %rbx + mov -8(%rsi,%r11,8), %rax + adc %rdx, %rcx + adc $0, %ebp + mul %r9 + add %rbx, -8(%rdi,%r11,8) + adc %rax, %rcx + adc %rdx, %rbp +.Laddmul_entry_0: + mov (%rsi,%r11,8), %rax + mul %r12 + add %rax, %rcx + mov (%rsi,%r11,8), %rax + adc %rdx, %rbp + adc $0, %r10d + mul %r9 + add %rcx, (%rdi,%r11,8) + mov $0, %ecx + adc %rax, %rbp + mov $0, %ebx + adc %rdx, %r10 +.Laddmul_entry_3: + mov 8(%rsi,%r11,8), %rax + mul %r12 + add %rax, %rbp + mov 8(%rsi,%r11,8), %rax + adc %rdx, %r10 + adc $0, %ebx + mul %r9 + add %rbp, 8(%rdi,%r11,8) + adc %rax, %r10 + adc %rdx, %rbx +.Laddmul_entry_2: + mov 16(%rsi,%r11,8), %rax + mul %r12 + add %rax, %r10 + mov 16(%rsi,%r11,8), %rax + adc %rdx, %rbx + adc $0, %ecx + mul %r9 + add %r10, 16(%rdi,%r11,8) + nop + adc %rax, %rbx + mov $0, %ebp + mov 24(%rsi,%r11,8), %rax + adc %rdx, %rcx +.Laddmul_entry_1: + mul %r12 + add $4, %r11 + jnz .Laddmul_top + + add %rax, %rbx + adc %rdx, %rcx + adc $0, %ebp + + add %rbx, -8(%rdi) + adc %rcx, (%rdi) + adc %rbp, 8(%rdi) + + sub $2, %r8 + jz .Lret + + lea 16(%r15), %r15 + lea -16(%rsi), %rsi + + mov %r13, %r11 + mov (%r15), %r12 + mov 8(%r15), %r9 + + jmp *%r14 + + + + + .align 16, 0x90 +.Ldiagonal: + xor %ebx, %ebx + xor %ecx, %ecx + xor %ebp, %ebp + + neg %r13 + + mov %r8d, %eax + and $3, %eax + jz .Ldiag_prologue_0 + cmp $2, %eax + jc .Ldiag_prologue_1 + jz .Ldiag_prologue_2 + +.Ldiag_prologue_3: + lea -8(%r15), %r15 + mov %r15, %r10 + add $1, %r8 + mov %r8, %r11 + lea .Ldiag_entry_3(%rip), %r14 + jmp .Ldiag_entry_3 + +.Ldiag_prologue_0: + mov %r15, %r10 + mov %r8, %r11 + lea 0(%rip), %r14 + mov -8(%rsi,%r11,8), %rax + jmp .Ldiag_entry_0 + +.Ldiag_prologue_1: + lea 8(%r15), %r15 + mov %r15, %r10 + add $3, %r8 + mov %r8, %r11 + lea 0(%rip), %r14 + mov -8(%r10), %rax + jmp .Ldiag_entry_1 + +.Ldiag_prologue_2: + lea -16(%r15), %r15 + mov %r15, %r10 + add $2, %r8 + mov %r8, %r11 + lea 0(%rip), %r14 + mov 16(%r10), %rax + jmp .Ldiag_entry_2 + + + + + .align 16, 0x90 +.Ldiag_top: + add %rax, %rbx + adc %rdx, %rcx + mov -8(%rsi,%r11,8), %rax + adc $0, %rbp +.Ldiag_entry_0: + mulq (%r10) + add %rax, %rbx + adc %rdx, %rcx + adc $0, %rbp +.Ldiag_entry_3: + mov -16(%rsi,%r11,8), %rax + mulq 8(%r10) + add %rax, %rbx + mov 16(%r10), %rax + adc %rdx, %rcx + adc $0, %rbp +.Ldiag_entry_2: + mulq -24(%rsi,%r11,8) + add %rax, %rbx + mov 24(%r10), %rax + adc %rdx, %rcx + lea 32(%r10), %r10 + adc $0, %rbp +.Ldiag_entry_1: + mulq -32(%rsi,%r11,8) + sub $4, %r11 + jnz .Ldiag_top + + add %rax, %rbx + adc %rdx, %rcx + adc $0, %rbp + + mov %rbx, (%rdi,%r13,8) + + inc %r13 + jz .Ldiag_end + + mov %r8, %r11 + mov %r15, %r10 + + lea 8(%rsi), %rsi + mov %rcx, %rbx + mov %rbp, %rcx + xor %ebp, %ebp + + jmp *%r14 + +.Ldiag_end: + mov %rcx, (%rdi) + mov %rbp, 8(%rdi) + +.Lret: pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + .size __gmpn_mulmid_basecase,.-__gmpn_mulmid_basecase diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/nand_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/nand_n.s new file mode 100644 index 0000000..04593b9 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/nand_n.s @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_nand_n + .type __gmpn_nand_n,@function + +__gmpn_nand_n: + + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je .Lb00 + cmp $2, %eax + jc .Lb01 + je .Lb10 + +.Lb11: and (%rsi,%rcx,8), %r8 + not %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp .Le11 +.Lb10: add $-2, %rcx + jmp .Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90 +.Lb01: and (%rsi,%rcx,8), %r8 + not %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz .Lret + +.Ltop: mov (%rdx,%rcx,8), %r8 +.Lb00: mov 8(%rdx,%rcx,8), %r9 + and (%rsi,%rcx,8), %r8 + not %r8 + and 8(%rsi,%rcx,8), %r9 + not %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +.Le11: mov 16(%rdx,%rcx,8), %r8 +.Le10: mov 24(%rdx,%rcx,8), %r9 + and 16(%rsi,%rcx,8), %r8 + not %r8 + and 24(%rsi,%rcx,8), %r9 + not %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc .Ltop + +.Lret: + ret + .size __gmpn_nand_n,.-__gmpn_nand_n + diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/nior_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/nior_n.s new file mode 100644 index 0000000..8ea0437 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/nior_n.s @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_nior_n + .type __gmpn_nior_n,@function + +__gmpn_nior_n: + + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je .Lb00 + cmp $2, %eax + jc .Lb01 + je .Lb10 + +.Lb11: or (%rsi,%rcx,8), %r8 + not %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp .Le11 +.Lb10: add $-2, %rcx + jmp .Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90 +.Lb01: or (%rsi,%rcx,8), %r8 + not %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz .Lret + +.Ltop: mov (%rdx,%rcx,8), %r8 +.Lb00: mov 8(%rdx,%rcx,8), %r9 + or (%rsi,%rcx,8), %r8 + not %r8 + or 8(%rsi,%rcx,8), %r9 + not %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +.Le11: mov 16(%rdx,%rcx,8), %r8 +.Le10: mov 24(%rdx,%rcx,8), %r9 + or 16(%rsi,%rcx,8), %r8 + not %r8 + or 24(%rsi,%rcx,8), %r9 + not %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc .Ltop + +.Lret: + ret + .size __gmpn_nior_n,.-__gmpn_nior_n + diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/perfsqr.h b/vere/ext/gmp/gen/x86_64-linux/mpn/perfsqr.h new file mode 100644 index 0000000..80c5eb7 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/perfsqr.h @@ -0,0 +1,46 @@ +/* This file generated by gen-psqr.c - DO NOT EDIT. */ + +#if GMP_LIMB_BITS != 64 || GMP_NAIL_BITS != 0 +Error, error, this data is for 64 bit limb and 0 bit nail +#endif + +/* Non-zero bit indicates a quadratic residue mod 0x100. + This test identifies 82.81% as non-squares (212/256). */ +static const mp_limb_t +sq_res_0x100[4] = { + CNST_LIMB(0x202021202030213), + CNST_LIMB(0x202021202020213), + CNST_LIMB(0x202021202030212), + CNST_LIMB(0x202021202020212), +}; + +/* 2^48-1 = 3^2 * 5 * 7 * 13 * 17 * 97 ... */ +#define PERFSQR_MOD_BITS 49 + +/* This test identifies 97.81% as non-squares. */ +#define PERFSQR_MOD_TEST(up, usize) \ + do { \ + mp_limb_t r; \ + PERFSQR_MOD_34 (r, up, usize); \ + \ + /* 69.23% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(91), CNST_LIMB(0xfd2fd2fd2fd3), \ + CNST_LIMB(0x2191240), CNST_LIMB(0x8850a206953820e1)); \ + \ + /* 68.24% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(85), CNST_LIMB(0xfcfcfcfcfcfd), \ + CNST_LIMB(0x82158), CNST_LIMB(0x10b48c4b4206a105)); \ + \ + /* 55.56% */ \ + PERFSQR_MOD_1 (r, CNST_LIMB( 9), CNST_LIMB(0xe38e38e38e39), \ + CNST_LIMB(0x93)); \ + \ + /* 49.48% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(97), CNST_LIMB(0xfd5c5f02a3a1), \ + CNST_LIMB(0x1eb628b47), CNST_LIMB(0x6067981b8b451b5f)); \ + } while (0) + +/* Grand total sq_res_0x100 and PERFSQR_MOD_TEST, 99.62% non-squares. */ + +/* helper for tests/mpz/t-perfsqr.c */ +#define PERFSQR_DIVISORS { 256, 91, 85, 9, 97, } diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/popcount.s b/vere/ext/gmp/gen/x86_64-linux/mpn/popcount.s new file mode 100644 index 0000000..243219e --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/popcount.s @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_popcount + .type __gmpn_popcount,@function + +__gmpn_popcount: + + + push %rbx + mov $0x5555555555555555, %r10 + push %rbp + mov $0x3333333333333333, %r11 + lea (%rdi,%rsi,8), %rdi + mov $0x0f0f0f0f0f0f0f0f, %rcx + neg %rsi + mov $0x0101010101010101, %rdx + xor %eax, %eax + test $1, %sil + jz .Ltop + + mov (%rdi,%rsi,8), %r8 + + mov %r8, %r9 + shr %r8 + and %r10, %r8 + sub %r8, %r9 + + mov %r9, %r8 + shr $2, %r9 + and %r11, %r8 + and %r11, %r9 + add %r8, %r9 + + dec %rsi + jmp .Lmid + + .align 16, 0x90 +.Ltop: mov (%rdi,%rsi,8), %r8 + mov 8(%rdi,%rsi,8), %rbx + + mov %r8, %r9 + mov %rbx, %rbp + shr %r8 + shr %rbx + and %r10, %r8 + and %r10, %rbx + sub %r8, %r9 + sub %rbx, %rbp + + mov %r9, %r8 + mov %rbp, %rbx + shr $2, %r9 + shr $2, %rbp + and %r11, %r8 + and %r11, %r9 + and %r11, %rbx + and %r11, %rbp + add %r8, %r9 + add %rbx, %rbp + + add %rbp, %r9 +.Lmid: mov %r9, %r8 + shr $4, %r9 + and %rcx, %r8 + and %rcx, %r9 + add %r8, %r9 + + imul %rdx, %r9 + shr $56, %r9 + + add %r9, %rax + add $2, %rsi + jnc .Ltop + +.Lend: + pop %rbp + pop %rbx + + ret + .size __gmpn_popcount,.-__gmpn_popcount diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/redc_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/redc_1.s new file mode 100644 index 0000000..da7fd88 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/redc_1.s @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_redc_1 + .type __gmpn_redc_1,@function + +__gmpn_redc_1: + + + + push %rbp + mov (%rsi), %rbp + push %rbx + imul %r8, %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + mov %rcx, %r12 + neg %r12 + lea (%rdx,%rcx,8), %r13 + lea -16(%rsi,%rcx,8), %rsi + + mov %ecx, %eax + and $3, %eax + lea 4(%rax), %r9 + cmp $4, %ecx + cmovg %r9, %rax + lea .Ltab(%rip), %r9 + + movslq (%r9,%rax,4), %rax + add %r9, %rax + jmp *%rax + + + .section .data.rel.ro.local,"a",@progbits + .align 8, 0x90 +.Ltab: .long .L0-.Ltab + .long .L1-.Ltab + .long .L2-.Ltab + .long .L3-.Ltab + .long .L0m4-.Ltab + .long .L1m4-.Ltab + .long .L2m4-.Ltab + .long .L3m4-.Ltab + .text + + .align 16, 0x90 +.L1: mov (%rdx), %rax + mul %rbp + add 8(%rsi), %rax + adc 16(%rsi), %rdx + mov %rdx, (%rdi) + mov $0, %eax + adc %eax, %eax + jmp .Lret + + + .align 16, 0x90 +.L2: mov (%rdx), %rax + mul %rbp + xor %r14d, %r14d + mov %rax, %r10 + mov -8(%r13), %rax + mov %rdx, %r9 + mul %rbp + add (%rsi), %r10 + adc %rax, %r9 + adc %rdx, %r14 + add 8(%rsi), %r9 + adc $0, %r14 + mov %r9, %rbp + imul %r8, %rbp + mov -16(%r13), %rax + mul %rbp + xor %ebx, %ebx + mov %rax, %r10 + mov -8(%r13), %rax + mov %rdx, %r11 + mul %rbp + add %r9, %r10 + adc %rax, %r11 + adc %rdx, %rbx + add 16(%rsi), %r11 + adc $0, %rbx + xor %eax, %eax + add %r11, %r14 + adc 24(%rsi), %rbx + mov %r14, (%rdi) + mov %rbx, 8(%rdi) + adc %eax, %eax + jmp .Lret + + +.L3: mov (%rdx), %rax + mul %rbp + mov %rax, %rbx + mov %rdx, %r10 + mov -16(%r13), %rax + mul %rbp + xor %r9d, %r9d + xor %r14d, %r14d + add -8(%rsi), %rbx + adc %rax, %r10 + mov -8(%r13), %rax + adc %rdx, %r9 + mul %rbp + add (%rsi), %r10 + mov %r10, (%rsi) + adc %rax, %r9 + adc %rdx, %r14 + mov %r10, %rbp + imul %r8, %rbp + add %r9, 8(%rsi) + adc $0, %r14 + mov %r14, -8(%rsi) + + mov -24(%r13), %rax + mul %rbp + mov %rax, %rbx + mov %rdx, %r10 + mov -16(%r13), %rax + mul %rbp + xor %r9d, %r9d + xor %r14d, %r14d + add (%rsi), %rbx + adc %rax, %r10 + mov -8(%r13), %rax + adc %rdx, %r9 + mul %rbp + add 8(%rsi), %r10 + mov %r10, 8(%rsi) + adc %rax, %r9 + adc %rdx, %r14 + mov %r10, %rbp + imul %r8, %rbp + add %r9, 16(%rsi) + adc $0, %r14 + mov %r14, (%rsi) + + mov -24(%r13), %rax + mul %rbp + mov %rax, %rbx + mov %rdx, %r10 + mov -16(%r13), %rax + mul %rbp + xor %r9d, %r9d + xor %r14d, %r14d + add 8(%rsi), %rbx + adc %rax, %r10 + mov -8(%r13), %rax + adc %rdx, %r9 + mul %rbp + add 16(%rsi), %r10 + adc %rax, %r9 + adc %rdx, %r14 + add 24(%rsi), %r9 + adc $0, %r14 + + xor %eax, %eax + add -8(%rsi), %r10 + adc (%rsi), %r9 + adc 32(%rsi), %r14 + mov %r10, (%rdi) + mov %r9, 8(%rdi) + mov %r14, 16(%rdi) + adc %eax, %eax + jmp .Lret + + + .align 16, 0x90 +.L2m4: +.Llo2: mov (%r13,%r12,8), %rax + mul %rbp + xor %r14d, %r14d + xor %ebx, %ebx + mov %rax, %r10 + mov 8(%r13,%r12,8), %rax + mov 24(%rsi,%r12,8), %r15 + mov %rdx, %r9 + mul %rbp + add 16(%rsi,%r12,8), %r10 + adc %rax, %r9 + mov 16(%r13,%r12,8), %rax + adc %rdx, %r14 + mul %rbp + mov $0, %r10d + lea 2(%r12), %r11 + add %r9, %r15 + imul %r8, %r15 + jmp .Le2 + + .align 16, 0x90 +.Lli2: add %r10, (%rsi,%r11,8) + adc %rax, %r9 + mov (%r13,%r11,8), %rax + adc %rdx, %r14 + xor %r10d, %r10d + mul %rbp +.Le2: add %r9, 8(%rsi,%r11,8) + adc %rax, %r14 + adc %rdx, %rbx + mov 8(%r13,%r11,8), %rax + mul %rbp + add %r14, 16(%rsi,%r11,8) + adc %rax, %rbx + adc %rdx, %r10 + mov 16(%r13,%r11,8), %rax + mul %rbp + add %rbx, 24(%rsi,%r11,8) + mov $0, %r14d + mov %r14, %rbx + adc %rax, %r10 + mov 24(%r13,%r11,8), %rax + mov %r14, %r9 + adc %rdx, %r9 + mul %rbp + add $4, %r11 + js .Lli2 + +.Lle2: add %r10, (%rsi) + adc %rax, %r9 + adc %r14, %rdx + add %r9, 8(%rsi) + adc $0, %rdx + mov %rdx, 16(%rsi,%r12,8) + add $8, %rsi + mov %r15, %rbp + dec %rcx + jnz .Llo2 + + mov %r12, %rcx + sar $2, %rcx + lea 32(%rsi,%r12,8), %rsi + lea (%rsi,%r12,8), %rdx + + mov -16(%rsi), %r8 + mov -8(%rsi), %r9 + add -16(%rdx), %r8 + adc -8(%rdx), %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + lea 16(%rdi), %rdi + jmp .Laddx + + + .align 16, 0x90 +.L1m4: +.Llo1: mov (%r13,%r12,8), %rax + xor %r9, %r9 + xor %ebx, %ebx + mul %rbp + mov %rax, %r9 + mov 8(%r13,%r12,8), %rax + mov 24(%rsi,%r12,8), %r15 + mov %rdx, %r14 + mov $0, %r10d + mul %rbp + add 16(%rsi,%r12,8), %r9 + adc %rax, %r14 + adc %rdx, %rbx + mov 16(%r13,%r12,8), %rax + mul %rbp + lea 1(%r12), %r11 + add %r14, %r15 + imul %r8, %r15 + jmp .Le1 + + .align 16, 0x90 +.Lli1: add %r10, (%rsi,%r11,8) + adc %rax, %r9 + mov (%r13,%r11,8), %rax + adc %rdx, %r14 + xor %r10d, %r10d + mul %rbp + add %r9, 8(%rsi,%r11,8) + adc %rax, %r14 + adc %rdx, %rbx + mov 8(%r13,%r11,8), %rax + mul %rbp +.Le1: add %r14, 16(%rsi,%r11,8) + adc %rax, %rbx + adc %rdx, %r10 + mov 16(%r13,%r11,8), %rax + mul %rbp + add %rbx, 24(%rsi,%r11,8) + mov $0, %r14d + mov %r14, %rbx + adc %rax, %r10 + mov 24(%r13,%r11,8), %rax + mov %r14, %r9 + adc %rdx, %r9 + mul %rbp + add $4, %r11 + js .Lli1 + +.Lle1: add %r10, (%rsi) + adc %rax, %r9 + adc %r14, %rdx + add %r9, 8(%rsi) + adc $0, %rdx + mov %rdx, 16(%rsi,%r12,8) + add $8, %rsi + mov %r15, %rbp + dec %rcx + jnz .Llo1 + + mov %r12, %rcx + sar $2, %rcx + lea 24(%rsi,%r12,8), %rsi + lea (%rsi,%r12,8), %rdx + + mov -8(%rsi), %r8 + add -8(%rdx), %r8 + mov %r8, (%rdi) + lea 8(%rdi), %rdi + jmp .Laddx + + + .align 16, 0x90 +.L0: +.L0m4: +.Llo0: mov (%r13,%r12,8), %rax + mov %r12, %r11 + mul %rbp + xor %r10d, %r10d + mov %rax, %r14 + mov %rdx, %rbx + mov 8(%r13,%r12,8), %rax + mov 24(%rsi,%r12,8), %r15 + mul %rbp + add 16(%rsi,%r12,8), %r14 + adc %rax, %rbx + adc %rdx, %r10 + add %rbx, %r15 + imul %r8, %r15 + jmp .Le0 + + .align 16, 0x90 +.Lli0: add %r10, (%rsi,%r11,8) + adc %rax, %r9 + mov (%r13,%r11,8), %rax + adc %rdx, %r14 + xor %r10d, %r10d + mul %rbp + add %r9, 8(%rsi,%r11,8) + adc %rax, %r14 + adc %rdx, %rbx + mov 8(%r13,%r11,8), %rax + mul %rbp + add %r14, 16(%rsi,%r11,8) + adc %rax, %rbx + adc %rdx, %r10 +.Le0: mov 16(%r13,%r11,8), %rax + mul %rbp + add %rbx, 24(%rsi,%r11,8) + mov $0, %r14d + mov %r14, %rbx + adc %rax, %r10 + mov 24(%r13,%r11,8), %rax + mov %r14, %r9 + adc %rdx, %r9 + mul %rbp + add $4, %r11 + js .Lli0 + +.Lle0: add %r10, (%rsi) + adc %rax, %r9 + adc %r14, %rdx + add %r9, 8(%rsi) + adc $0, %rdx + mov %rdx, 16(%rsi,%r12,8) + add $8, %rsi + mov %r15, %rbp + dec %rcx + jnz .Llo0 + + mov %r12, %rcx + sar $2, %rcx + clc + lea 16(%rsi,%r12,8), %rsi + lea (%rsi,%r12,8), %rdx + jmp .Laddy + + + .align 16, 0x90 +.L3m4: +.Llo3: mov (%r13,%r12,8), %rax + mul %rbp + mov %rax, %rbx + mov %rdx, %r10 + mov 8(%r13,%r12,8), %rax + mov 24(%rsi,%r12,8), %r15 + mul %rbp + add 16(%rsi,%r12,8), %rbx + mov $0, %ebx + mov %rbx, %r14 + adc %rax, %r10 + mov 16(%r13,%r12,8), %rax + mov %r14, %r9 + adc %rdx, %r9 + add %r10, %r15 + mul %rbp + lea 3(%r12), %r11 + imul %r8, %r15 + + + .align 16, 0x90 +.Lli3: add %r10, (%rsi,%r11,8) + adc %rax, %r9 + mov (%r13,%r11,8), %rax + adc %rdx, %r14 + xor %r10d, %r10d + mul %rbp + add %r9, 8(%rsi,%r11,8) + adc %rax, %r14 + adc %rdx, %rbx + mov 8(%r13,%r11,8), %rax + mul %rbp + add %r14, 16(%rsi,%r11,8) + adc %rax, %rbx + adc %rdx, %r10 + mov 16(%r13,%r11,8), %rax + mul %rbp + add %rbx, 24(%rsi,%r11,8) + mov $0, %r14d + mov %r14, %rbx + adc %rax, %r10 + mov 24(%r13,%r11,8), %rax + mov %r14, %r9 + adc %rdx, %r9 + mul %rbp + add $4, %r11 + js .Lli3 + +.Lle3: add %r10, (%rsi) + adc %rax, %r9 + adc %r14, %rdx + add %r9, 8(%rsi) + adc $0, %rdx + mov %rdx, 16(%rsi,%r12,8) + mov %r15, %rbp + lea 8(%rsi), %rsi + dec %rcx + jnz .Llo3 + + + + mov %r12, %rcx + sar $2, %rcx + lea 40(%rsi,%r12,8), %rsi + lea (%rsi,%r12,8), %rdx + + mov -24(%rsi), %r8 + mov -16(%rsi), %r9 + mov -8(%rsi), %r10 + add -24(%rdx), %r8 + adc -16(%rdx), %r9 + adc -8(%rdx), %r10 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + lea 24(%rdi), %rdi + +.Laddx:inc %rcx + jz .Lad3 + +.Laddy:mov (%rsi), %r8 + mov 8(%rsi), %r9 + inc %rcx + jmp .Lmid + + +.Lal3: adc (%rdx), %r8 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + adc 24(%rdx), %r11 + mov %r8, (%rdi) + lea 32(%rsi), %rsi + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + inc %rcx + mov %r11, 24(%rdi) + lea 32(%rdx), %rdx + mov (%rsi), %r8 + mov 8(%rsi), %r9 + lea 32(%rdi), %rdi +.Lmid: mov 16(%rsi), %r10 + mov 24(%rsi), %r11 + jnz .Lal3 + +.Lae3: adc (%rdx), %r8 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + adc 24(%rdx), %r11 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + mov %r11, 24(%rdi) + +.Lad3: mov %ecx, %eax + adc %eax, %eax + +.Lret: pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbx + pop %rbp + + ret + .size __gmpn_redc_1,.-__gmpn_redc_1 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh1_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh1_n.s new file mode 100644 index 0000000..ac1323b --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh1_n.s @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_rsblsh1_n + .type __gmpn_rsblsh1_n,@function + +__gmpn_rsblsh1_n: + + + push %rbp + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rdx + neg %rcx + xor %ebp, %ebp + and $3, %eax + je .Lb00 + cmp $2, %eax + jc .Lb01 + je .Lb10 + +.Lb11: add %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + mov 16(%rdx,%rcx,8), %r10 + adc %r10, %r10 + sbb %eax, %eax + sub (%rsi,%rcx,8), %r8 + sbb 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) + sbb 16(%rsi,%rcx,8), %r10 + mov %r10, 16(%rdi,%rcx,8) + sbb %ebp, %ebp + add $3, %rcx + jmp .Lent + +.Lb10: add %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + sbb %eax, %eax + sub (%rsi,%rcx,8), %r8 + sbb 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) + sbb %ebp, %ebp + add $2, %rcx + jmp .Lent + +.Lb01: add %r8, %r8 + sbb %eax, %eax + sub (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + sbb %ebp, %ebp + inc %rcx +.Lent: jns .Lend + + .align 16, 0x90 +.Ltop: add %eax, %eax + + mov (%rdx,%rcx,8), %r8 +.Lb00: adc %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + mov 16(%rdx,%rcx,8), %r10 + adc %r10, %r10 + mov 24(%rdx,%rcx,8), %r11 + adc %r11, %r11 + + sbb %eax, %eax + add %ebp, %ebp + + sbb (%rsi,%rcx,8), %r8 + nop + sbb 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) + sbb 16(%rsi,%rcx,8), %r10 + sbb 24(%rsi,%rcx,8), %r11 + mov %r10, 16(%rdi,%rcx,8) + mov %r11, 24(%rdi,%rcx,8) + + sbb %ebp, %ebp + add $4, %rcx + js .Ltop + +.Lend: + + + sub %eax, %ebp + movslq %ebp, %rax + + pop %rbp + + ret + .size __gmpn_rsblsh1_n,.-__gmpn_rsblsh1_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh2_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh2_n.s new file mode 100644 index 0000000..e9f079a --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh2_n.s @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_rsblsh2_n + .type __gmpn_rsblsh2_n,@function + +__gmpn_rsblsh2_n: + + + push %r12 + push %r13 + push %r14 + push %r15 + + mov (%rdx), %r8 + lea (,%r8,4), %r12 + shr $62, %r8 + + mov %ecx, %eax + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rdx + neg %rcx + and $3, %al + je .Lb00 + cmp $2, %al + jc .Lb01 + je .Lb10 + +.Lb11: mov 8(%rdx,%rcx,8), %r10 + lea (%r8,%r10,4), %r14 + shr $62, %r10 + mov 16(%rdx,%rcx,8), %r11 + lea (%r10,%r11,4), %r15 + shr $62, %r11 + sub (%rsi,%rcx,8), %r12 + sbb 8(%rsi,%rcx,8), %r14 + sbb 16(%rsi,%rcx,8), %r15 + sbb %eax, %eax + mov %r12, (%rdi,%rcx,8) + mov %r14, 8(%rdi,%rcx,8) + mov %r15, 16(%rdi,%rcx,8) + add $3, %rcx + js .Ltop + jmp .Lend + +.Lb01: mov %r8, %r11 + sub (%rsi,%rcx,8), %r12 + sbb %eax, %eax + mov %r12, (%rdi,%rcx,8) + add $1, %rcx + js .Ltop + jmp .Lend + +.Lb10: mov 8(%rdx,%rcx,8), %r11 + lea (%r8,%r11,4), %r15 + shr $62, %r11 + sub (%rsi,%rcx,8), %r12 + sbb 8(%rsi,%rcx,8), %r15 + sbb %eax, %eax + mov %r12, (%rdi,%rcx,8) + mov %r15, 8(%rdi,%rcx,8) + add $2, %rcx + js .Ltop + jmp .Lend + +.Lb00: mov 8(%rdx,%rcx,8), %r9 + mov 16(%rdx,%rcx,8), %r10 + jmp .Le00 + + .align 16, 0x90 +.Ltop: mov 16(%rdx,%rcx,8), %r10 + mov (%rdx,%rcx,8), %r8 + mov 8(%rdx,%rcx,8), %r9 + lea (%r11,%r8,4), %r12 + shr $62, %r8 +.Le00: lea (%r8,%r9,4), %r13 + shr $62, %r9 + mov 24(%rdx,%rcx,8), %r11 + lea (%r9,%r10,4), %r14 + shr $62, %r10 + lea (%r10,%r11,4), %r15 + shr $62, %r11 + add %eax, %eax + sbb (%rsi,%rcx,8), %r12 + sbb 8(%rsi,%rcx,8), %r13 + sbb 16(%rsi,%rcx,8), %r14 + sbb 24(%rsi,%rcx,8), %r15 + mov %r12, (%rdi,%rcx,8) + mov %r13, 8(%rdi,%rcx,8) + mov %r14, 16(%rdi,%rcx,8) + sbb %eax, %eax + mov %r15, 24(%rdi,%rcx,8) + add $4, %rcx + js .Ltop +.Lend: + + + add %r11d, %eax + movslq %eax, %rax + + pop %r15 + pop %r14 + pop %r13 + pop %r12 + + ret + .size __gmpn_rsblsh2_n,.-__gmpn_rsblsh2_n + diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh_n.s new file mode 100644 index 0000000..d439217 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh_n.s @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_rsblsh_n + .type __gmpn_rsblsh_n,@function + +__gmpn_rsblsh_n: + + + + push %r12 + push %rbp + push %rbx + + mov (%rdx), %rax + + mov $0, %ebp + sub %rcx, %rbp + + lea -16(%rsi,%rcx,8), %rsi + lea -16(%rdi,%rcx,8), %rdi + lea 16(%rdx,%rcx,8), %r12 + + mov %rcx, %r9 + + mov %r8, %rcx + mov $1, %r8d + shl %cl, %r8 + + mul %r8 + + and $3, %r9d + jz .Lb0 + cmp $2, %r9d + jc .Lb1 + jz .Lb2 + +.Lb3: mov %rax, %r11 + sub 16(%rsi,%rbp,8), %r11 + mov -8(%r12,%rbp,8), %rax + sbb %ecx, %ecx + mov %rdx, %rbx + mul %r8 + or %rax, %rbx + mov (%r12,%rbp,8), %rax + mov %rdx, %r9 + mul %r8 + or %rax, %r9 + add $3, %rbp + jnz .Llo3 + jmp .Lcj3 + +.Lb2: mov %rax, %rbx + mov -8(%r12,%rbp,8), %rax + mov %rdx, %r9 + mul %r8 + or %rax, %r9 + add $2, %rbp + jz .Lcj2 + mov %rdx, %r10 + mov -16(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r10 + xor %ecx, %ecx + jmp .Llo2 + +.Lb1: mov %rax, %r9 + mov %rdx, %r10 + add $1, %rbp + jnz .Lgt1 + sub 8(%rsi,%rbp,8), %r9 + jmp .Lcj1 +.Lgt1: mov -16(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r10 + mov %rdx, %r11 + mov -8(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r11 + sub 8(%rsi,%rbp,8), %r9 + sbb 16(%rsi,%rbp,8), %r10 + sbb 24(%rsi,%rbp,8), %r11 + mov (%r12,%rbp,8), %rax + sbb %ecx, %ecx + jmp .Llo1 + +.Lb0: mov %rax, %r10 + mov %rdx, %r11 + mov -8(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r11 + sub 16(%rsi,%rbp,8), %r10 + sbb 24(%rsi,%rbp,8), %r11 + mov (%r12,%rbp,8), %rax + sbb %ecx, %ecx + mov %rdx, %rbx + mul %r8 + or %rax, %rbx + mov 8(%r12,%rbp,8), %rax + add $4, %rbp + jz .Lend + + .align 8, 0x90 +.Ltop: mov %rdx, %r9 + mul %r8 + or %rax, %r9 + mov %r10, -16(%rdi,%rbp,8) +.Llo3: mov %rdx, %r10 + mov -16(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r10 + mov %r11, -8(%rdi,%rbp,8) +.Llo2: mov %rdx, %r11 + mov -8(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r11 + add %ecx, %ecx + sbb (%rsi,%rbp,8), %rbx + sbb 8(%rsi,%rbp,8), %r9 + sbb 16(%rsi,%rbp,8), %r10 + sbb 24(%rsi,%rbp,8), %r11 + mov (%r12,%rbp,8), %rax + sbb %ecx, %ecx + mov %rbx, (%rdi,%rbp,8) +.Llo1: mov %rdx, %rbx + mul %r8 + or %rax, %rbx + mov %r9, 8(%rdi,%rbp,8) +.Llo0: mov 8(%r12,%rbp,8), %rax + add $4, %rbp + jnz .Ltop + +.Lend: mov %rdx, %r9 + mul %r8 + or %rax, %r9 + mov %r10, -16(%rdi,%rbp,8) +.Lcj3: mov %r11, -8(%rdi,%rbp,8) +.Lcj2: add %ecx, %ecx + sbb (%rsi,%rbp,8), %rbx + sbb 8(%rsi,%rbp,8), %r9 + mov %rbx, (%rdi,%rbp,8) +.Lcj1: mov %r9, 8(%rdi,%rbp,8) + mov %rdx, %rax + sbb $0, %rax + pop %rbx + pop %rbp + pop %r12 + + ret + .size __gmpn_rsblsh_n,.-__gmpn_rsblsh_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/rsh1add_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/rsh1add_n.s new file mode 100644 index 0000000..8554f6f --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/rsh1add_n.s @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_rsh1add_nc + .type __gmpn_rsh1add_nc,@function + +__gmpn_rsh1add_nc: + + + + push %rbx + + xor %eax, %eax + neg %r8 + mov (%rsi), %rbx + adc (%rdx), %rbx + jmp .Lent + .size __gmpn_rsh1add_nc,.-__gmpn_rsh1add_nc + + .align 16, 0x90 + .globl __gmpn_rsh1add_n + .type __gmpn_rsh1add_n,@function + +__gmpn_rsh1add_n: + + + push %rbx + + xor %eax, %eax + mov (%rsi), %rbx + add (%rdx), %rbx +.Lent: + rcr %rbx + adc %eax, %eax + + mov %ecx, %r11d + and $3, %r11d + + cmp $1, %r11d + je .Ldo + +.Ln1: cmp $2, %r11d + jne .Ln2 + add %rbx, %rbx + mov 8(%rsi), %r10 + adc 8(%rdx), %r10 + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + rcr %r10 + rcr %rbx + mov %rbx, -8(%rdi) + jmp .Lcj1 + +.Ln2: cmp $3, %r11d + jne .Ln3 + add %rbx, %rbx + mov 8(%rsi), %r9 + mov 16(%rsi), %r10 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea 16(%rdi), %rdi + rcr %r10 + rcr %r9 + rcr %rbx + mov %rbx, -16(%rdi) + jmp .Lcj2 + +.Ln3: dec %rcx + add %rbx, %rbx + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + adc 8(%rdx), %r8 + adc 16(%rdx), %r9 + mov 24(%rsi), %r10 + adc 24(%rdx), %r10 + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea 24(%rdi), %rdi + rcr %r10 + rcr %r9 + rcr %r8 + rcr %rbx + mov %rbx, -24(%rdi) + mov %r8, -16(%rdi) +.Lcj2: mov %r9, -8(%rdi) +.Lcj1: mov %r10, %rbx + +.Ldo: + shr $2, %rcx + je .Lend + .align 16, 0x90 +.Ltop: add %rbx, %rbx + + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + adc 8(%rdx), %r8 + adc 16(%rdx), %r9 + mov 24(%rsi), %r10 + mov 32(%rsi), %r11 + adc 24(%rdx), %r10 + adc 32(%rdx), %r11 + + lea 32(%rsi), %rsi + lea 32(%rdx), %rdx + + rcr %r11 + rcr %r10 + rcr %r9 + rcr %r8 + + rcr %rbx + mov %rbx, (%rdi) + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) + mov %r10, 24(%rdi) + mov %r11, %rbx + + lea 32(%rdi), %rdi + dec %rcx + jne .Ltop + +.Lend: mov %rbx, (%rdi) + pop %rbx + + ret + .size __gmpn_rsh1add_n,.-__gmpn_rsh1add_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/rsh1sub_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/rsh1sub_n.s new file mode 100644 index 0000000..ff06ece --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/rsh1sub_n.s @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_rsh1sub_nc + .type __gmpn_rsh1sub_nc,@function + +__gmpn_rsh1sub_nc: + + + + push %rbx + + xor %eax, %eax + neg %r8 + mov (%rsi), %rbx + sbb (%rdx), %rbx + jmp .Lent + .size __gmpn_rsh1sub_nc,.-__gmpn_rsh1sub_nc + + .align 16, 0x90 + .globl __gmpn_rsh1sub_n + .type __gmpn_rsh1sub_n,@function + +__gmpn_rsh1sub_n: + + + push %rbx + + xor %eax, %eax + mov (%rsi), %rbx + sub (%rdx), %rbx +.Lent: + rcr %rbx + adc %eax, %eax + + mov %ecx, %r11d + and $3, %r11d + + cmp $1, %r11d + je .Ldo + +.Ln1: cmp $2, %r11d + jne .Ln2 + add %rbx, %rbx + mov 8(%rsi), %r10 + sbb 8(%rdx), %r10 + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + rcr %r10 + rcr %rbx + mov %rbx, -8(%rdi) + jmp .Lcj1 + +.Ln2: cmp $3, %r11d + jne .Ln3 + add %rbx, %rbx + mov 8(%rsi), %r9 + mov 16(%rsi), %r10 + sbb 8(%rdx), %r9 + sbb 16(%rdx), %r10 + lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea 16(%rdi), %rdi + rcr %r10 + rcr %r9 + rcr %rbx + mov %rbx, -16(%rdi) + jmp .Lcj2 + +.Ln3: dec %rcx + add %rbx, %rbx + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + sbb 8(%rdx), %r8 + sbb 16(%rdx), %r9 + mov 24(%rsi), %r10 + sbb 24(%rdx), %r10 + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea 24(%rdi), %rdi + rcr %r10 + rcr %r9 + rcr %r8 + rcr %rbx + mov %rbx, -24(%rdi) + mov %r8, -16(%rdi) +.Lcj2: mov %r9, -8(%rdi) +.Lcj1: mov %r10, %rbx + +.Ldo: + shr $2, %rcx + je .Lend + .align 16, 0x90 +.Ltop: add %rbx, %rbx + + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + sbb 8(%rdx), %r8 + sbb 16(%rdx), %r9 + mov 24(%rsi), %r10 + mov 32(%rsi), %r11 + sbb 24(%rdx), %r10 + sbb 32(%rdx), %r11 + + lea 32(%rsi), %rsi + lea 32(%rdx), %rdx + + rcr %r11 + rcr %r10 + rcr %r9 + rcr %r8 + + rcr %rbx + mov %rbx, (%rdi) + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) + mov %r10, 24(%rdi) + mov %r11, %rbx + + lea 32(%rdi), %rdi + dec %rcx + jne .Ltop + +.Lend: mov %rbx, (%rdi) + pop %rbx + + ret + .size __gmpn_rsh1sub_n,.-__gmpn_rsh1sub_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/rshift.s b/vere/ext/gmp/gen/x86_64-linux/mpn/rshift.s new file mode 100644 index 0000000..8ddd7b5 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/rshift.s @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_rshift + .type __gmpn_rshift,@function + +__gmpn_rshift: + + + neg %ecx + mov (%rsi), %rax + shl %cl, %rax + neg %ecx + + lea 1(%rdx), %r8d + + lea -8(%rsi,%rdx,8), %rsi + lea -8(%rdi,%rdx,8), %rdi + neg %rdx + + and $3, %r8d + je .Lrlx + + dec %r8d + jne .L1 + + mov 8(%rsi,%rdx,8), %r10 + shr %cl, %r10 + neg %ecx + mov 16(%rsi,%rdx,8), %r8 + shl %cl, %r8 + or %r8, %r10 + mov %r10, 8(%rdi,%rdx,8) + inc %rdx + jmp .Lrll + +.L1: dec %r8d + je .L1x + + mov 8(%rsi,%rdx,8), %r10 + shr %cl, %r10 + neg %ecx + mov 16(%rsi,%rdx,8), %r8 + shl %cl, %r8 + or %r8, %r10 + mov %r10, 8(%rdi,%rdx,8) + inc %rdx + neg %ecx +.L1x: + cmp $-1, %rdx + je .Last + mov 8(%rsi,%rdx,8), %r10 + shr %cl, %r10 + mov 16(%rsi,%rdx,8), %r11 + shr %cl, %r11 + neg %ecx + mov 16(%rsi,%rdx,8), %r8 + mov 24(%rsi,%rdx,8), %r9 + shl %cl, %r8 + or %r8, %r10 + shl %cl, %r9 + or %r9, %r11 + mov %r10, 8(%rdi,%rdx,8) + mov %r11, 16(%rdi,%rdx,8) + add $2, %rdx + +.Lrll: neg %ecx +.Lrlx: mov 8(%rsi,%rdx,8), %r10 + shr %cl, %r10 + mov 16(%rsi,%rdx,8), %r11 + shr %cl, %r11 + + add $4, %rdx + jb .Lend + .align 16, 0x90 +.Ltop: + + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + mov -8(%rsi,%rdx,8), %r9 + shl %cl, %r8 + or %r8, %r10 + shl %cl, %r9 + or %r9, %r11 + mov %r10, -24(%rdi,%rdx,8) + mov %r11, -16(%rdi,%rdx,8) + + mov (%rsi,%rdx,8), %r8 + mov 8(%rsi,%rdx,8), %r9 + shl %cl, %r8 + shl %cl, %r9 + + + neg %ecx + mov -8(%rsi,%rdx,8), %r10 + mov 0(%rsi,%rdx,8), %r11 + shr %cl, %r10 + or %r10, %r8 + shr %cl, %r11 + or %r11, %r9 + mov %r8, -8(%rdi,%rdx,8) + mov %r9, 0(%rdi,%rdx,8) + + mov 8(%rsi,%rdx,8), %r10 + mov 16(%rsi,%rdx,8), %r11 + shr %cl, %r10 + shr %cl, %r11 + + add $4, %rdx + jae .Ltop +.Lend: + neg %ecx + mov -8(%rsi), %r8 + shl %cl, %r8 + or %r8, %r10 + mov (%rsi), %r9 + shl %cl, %r9 + or %r9, %r11 + mov %r10, -16(%rdi) + mov %r11, -8(%rdi) + + neg %ecx +.Last: mov (%rsi), %r10 + shr %cl, %r10 + mov %r10, (%rdi) + + ret + .size __gmpn_rshift,.-__gmpn_rshift diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sec_tabselect.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sec_tabselect.s new file mode 100644 index 0000000..7a50a70 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sec_tabselect.s @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_sec_tabselect + .type __gmpn_sec_tabselect,@function + +__gmpn_sec_tabselect: + + + + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + mov %rdx, %r9 + add $-4, %r9 + js .Louter_end + +.Louter_top: + mov %rcx, %rbp + push %rsi + xor %r12d, %r12d + xor %r13d, %r13d + xor %r14d, %r14d + xor %r15d, %r15d + mov %r8, %rbx + + .align 16, 0x90 +.Ltop: sub $1, %rbx + sbb %rax, %rax + mov 0(%rsi), %r10 + mov 8(%rsi), %r11 + and %rax, %r10 + and %rax, %r11 + or %r10, %r12 + or %r11, %r13 + mov 16(%rsi), %r10 + mov 24(%rsi), %r11 + and %rax, %r10 + and %rax, %r11 + or %r10, %r14 + or %r11, %r15 + lea (%rsi,%rdx,8), %rsi + add $-1, %rbp + jne .Ltop + + mov %r12, 0(%rdi) + mov %r13, 8(%rdi) + mov %r14, 16(%rdi) + mov %r15, 24(%rdi) + pop %rsi + lea 32(%rsi), %rsi + lea 32(%rdi), %rdi + add $-4, %r9 + jns .Louter_top +.Louter_end: + + test $2, %dl + jz .Lb0x +.Lb1x: mov %rcx, %rbp + push %rsi + xor %r12d, %r12d + xor %r13d, %r13d + mov %r8, %rbx + .align 16, 0x90 +.Ltp2: sub $1, %rbx + sbb %rax, %rax + mov 0(%rsi), %r10 + mov 8(%rsi), %r11 + and %rax, %r10 + and %rax, %r11 + or %r10, %r12 + or %r11, %r13 + lea (%rsi,%rdx,8), %rsi + add $-1, %rbp + jne .Ltp2 + mov %r12, 0(%rdi) + mov %r13, 8(%rdi) + pop %rsi + lea 16(%rsi), %rsi + lea 16(%rdi), %rdi + +.Lb0x: test $1, %dl + jz .Lb00 +.Lb01: mov %rcx, %rbp + xor %r12d, %r12d + mov %r8, %rbx + .align 16, 0x90 +.Ltp1: sub $1, %rbx + sbb %rax, %rax + mov 0(%rsi), %r10 + and %rax, %r10 + or %r10, %r12 + lea (%rsi,%rdx,8), %rsi + add $-1, %rbp + jne .Ltp1 + mov %r12, 0(%rdi) + +.Lb00: pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + .size __gmpn_sec_tabselect,.-__gmpn_sec_tabselect diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sqr_basecase.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sqr_basecase.s new file mode 100644 index 0000000..eb24851 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sqr_basecase.s @@ -0,0 +1,818 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_sqr_basecase + .type __gmpn_sqr_basecase,@function + +__gmpn_sqr_basecase: + + + mov %edx, %ecx + mov %edx, %r11d + + add $-40, %rsp + + and $3, %ecx + cmp $4, %edx + lea 4(%rcx), %r8 + + mov %rbx, 32(%rsp) + mov %rbp, 24(%rsp) + mov %r12, 16(%rsp) + mov %r13, 8(%rsp) + mov %r14, (%rsp) + + cmovg %r8, %rcx + + lea .Ltab(%rip), %rax + movslq (%rax,%rcx,4), %r10 + add %r10, %rax + jmp *%rax + + .section .data.rel.ro.local,"a",@progbits + .align 8, 0x90 +.Ltab: .long .L4-.Ltab + .long .L1-.Ltab + .long .L2-.Ltab + .long .L3-.Ltab + .long .L0m4-.Ltab + .long .L1m4-.Ltab + .long .L2m4-.Ltab + .long .L3m4-.Ltab + .text + +.L1: mov (%rsi), %rax + mul %rax + add $40, %rsp + mov %rax, (%rdi) + mov %rdx, 8(%rdi) + + ret + +.L2: mov (%rsi), %rax + mov %rax, %r8 + mul %rax + mov 8(%rsi), %r11 + mov %rax, (%rdi) + mov %r11, %rax + mov %rdx, %r9 + mul %rax + add $40, %rsp + mov %rax, %r10 + mov %r11, %rax + mov %rdx, %r11 + mul %r8 + xor %r8, %r8 + add %rax, %r9 + adc %rdx, %r10 + adc %r8, %r11 + add %rax, %r9 + mov %r9, 8(%rdi) + adc %rdx, %r10 + mov %r10, 16(%rdi) + adc %r8, %r11 + mov %r11, 24(%rdi) + + ret + +.L3: mov (%rsi), %rax + mov %rax, %r10 + mul %rax + mov 8(%rsi), %r11 + mov %rax, (%rdi) + mov %r11, %rax + mov %rdx, 8(%rdi) + mul %rax + mov 16(%rsi), %rcx + mov %rax, 16(%rdi) + mov %rcx, %rax + mov %rdx, 24(%rdi) + mul %rax + mov %rax, 32(%rdi) + mov %rdx, 40(%rdi) + + mov %r11, %rax + mul %r10 + mov %rax, %r8 + mov %rcx, %rax + mov %rdx, %r9 + mul %r10 + xor %r10, %r10 + add %rax, %r9 + mov %r11, %rax + mov %r10, %r11 + adc %rdx, %r10 + + mul %rcx + add $40, %rsp + add %rax, %r10 + adc %r11, %rdx + add %r8, %r8 + adc %r9, %r9 + adc %r10, %r10 + adc %rdx, %rdx + adc %r11, %r11 + add %r8, 8(%rdi) + adc %r9, 16(%rdi) + adc %r10, 24(%rdi) + adc %rdx, 32(%rdi) + adc %r11, 40(%rdi) + + ret + +.L4: mov (%rsi), %rax + mov %rax, %r11 + mul %rax + mov 8(%rsi), %rbx + mov %rax, (%rdi) + mov %rbx, %rax + mov %rdx, 8(%rdi) + mul %rax + mov %rax, 16(%rdi) + mov %rdx, 24(%rdi) + mov 16(%rsi), %rax + mul %rax + mov %rax, 32(%rdi) + mov %rdx, 40(%rdi) + mov 24(%rsi), %rax + mul %rax + mov %rax, 48(%rdi) + mov %rbx, %rax + mov %rdx, 56(%rdi) + + mul %r11 + add $32, %rsp + mov %rax, %r8 + mov %rdx, %r9 + mov 16(%rsi), %rax + mul %r11 + xor %r10, %r10 + add %rax, %r9 + adc %rdx, %r10 + mov 24(%rsi), %rax + mul %r11 + xor %r11, %r11 + add %rax, %r10 + adc %rdx, %r11 + mov 16(%rsi), %rax + mul %rbx + xor %rcx, %rcx + add %rax, %r10 + adc %rdx, %r11 + adc $0, %rcx + mov 24(%rsi), %rax + mul %rbx + pop %rbx + add %rax, %r11 + adc %rdx, %rcx + mov 16(%rsi), %rdx + mov 24(%rsi), %rax + mul %rdx + add %rax, %rcx + adc $0, %rdx + + add %r8, %r8 + adc %r9, %r9 + adc %r10, %r10 + adc %r11, %r11 + adc %rcx, %rcx + mov $0, %eax + adc %rdx, %rdx + + adc %rax, %rax + add %r8, 8(%rdi) + adc %r9, 16(%rdi) + adc %r10, 24(%rdi) + adc %r11, 32(%rdi) + adc %rcx, 40(%rdi) + adc %rdx, 48(%rdi) + adc %rax, 56(%rdi) + + ret + + +.L0m4: + lea -16(%rdi,%r11,8), %r12 + mov (%rsi), %r13 + mov 8(%rsi), %rax + lea (%rsi,%r11,8), %rsi + + lea -4(%r11), %r8 + + xor %r9d, %r9d + sub %r11, %r9 + + mul %r13 + xor %ebp, %ebp + mov %rax, %rbx + mov 16(%rsi,%r9,8), %rax + mov %rdx, %r10 + jmp .LL3 + + .align 16, 0x90 +.Lmul_1_m3_top: + add %rax, %rbp + mov %r10, (%r12,%r9,8) + mov (%rsi,%r9,8), %rax + adc %rdx, %rcx + xor %ebx, %ebx + mul %r13 + xor %r10d, %r10d + mov %rbp, 8(%r12,%r9,8) + add %rax, %rcx + adc %rdx, %rbx + mov 8(%rsi,%r9,8), %rax + mov %rcx, 16(%r12,%r9,8) + xor %ebp, %ebp + mul %r13 + add %rax, %rbx + mov 16(%rsi,%r9,8), %rax + adc %rdx, %r10 +.LL3: xor %ecx, %ecx + mul %r13 + add %rax, %r10 + mov 24(%rsi,%r9,8), %rax + adc %rdx, %rbp + mov %rbx, 24(%r12,%r9,8) + mul %r13 + add $4, %r9 + js .Lmul_1_m3_top + + add %rax, %rbp + mov %r10, (%r12) + adc %rdx, %rcx + mov %rbp, 8(%r12) + mov %rcx, 16(%r12) + + lea 16(%r12), %r12 + lea -8(%rsi), %rsi + jmp .Ldowhile + + +.L1m4: + lea 8(%rdi,%r11,8), %r12 + mov (%rsi), %r13 + mov 8(%rsi), %rax + lea 8(%rsi,%r11,8), %rsi + + lea -3(%r11), %r8 + + lea -3(%r11), %r9 + neg %r9 + + mov %rax, %r14 + mul %r13 + mov %rdx, %rcx + xor %ebp, %ebp + mov %rax, 8(%rdi) + jmp .Lm0 + + .align 16, 0x90 +.Lmul_2_m0_top: + mul %r14 + add %rax, %rbx + adc %rdx, %rcx + mov -24(%rsi,%r9,8), %rax + mov $0, %ebp + mul %r13 + add %rax, %rbx + mov -24(%rsi,%r9,8), %rax + adc %rdx, %rcx + adc $0, %ebp + mul %r14 + add %rax, %rcx + mov %rbx, -24(%r12,%r9,8) + adc %rdx, %rbp +.Lm0: mov -16(%rsi,%r9,8), %rax + mul %r13 + mov $0, %r10d + add %rax, %rcx + adc %rdx, %rbp + mov -16(%rsi,%r9,8), %rax + adc $0, %r10d + mov $0, %ebx + mov %rcx, -16(%r12,%r9,8) + mul %r14 + add %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + mov $0, %ecx + mul %r13 + add %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + adc $0, %ebx + mul %r14 + add %rax, %r10 + mov %rbp, -8(%r12,%r9,8) + adc %rdx, %rbx +.Lm2x: mov (%rsi,%r9,8), %rax + mul %r13 + add %rax, %r10 + adc %rdx, %rbx + adc $0, %ecx + add $4, %r9 + mov -32(%rsi,%r9,8), %rax + mov %r10, -32(%r12,%r9,8) + js .Lmul_2_m0_top + + mul %r14 + add %rax, %rbx + adc %rdx, %rcx + mov %rbx, -8(%r12) + mov %rcx, (%r12) + + lea -16(%rsi), %rsi + lea 0(%r12), %r12 + jmp .Ldowhile_end + + +.L2m4: + lea -16(%rdi,%r11,8), %r12 + mov (%rsi), %r13 + mov 8(%rsi), %rax + lea (%rsi,%r11,8), %rsi + + lea -4(%r11), %r8 + + lea -2(%r11), %r9 + neg %r9 + + mul %r13 + mov %rax, %rbp + mov (%rsi,%r9,8), %rax + mov %rdx, %rcx + jmp .LL1 + + .align 16, 0x90 +.Lmul_1_m1_top: + add %rax, %rbp + mov %r10, (%r12,%r9,8) + mov (%rsi,%r9,8), %rax + adc %rdx, %rcx +.LL1: xor %ebx, %ebx + mul %r13 + xor %r10d, %r10d + mov %rbp, 8(%r12,%r9,8) + add %rax, %rcx + adc %rdx, %rbx + mov 8(%rsi,%r9,8), %rax + mov %rcx, 16(%r12,%r9,8) + xor %ebp, %ebp + mul %r13 + add %rax, %rbx + mov 16(%rsi,%r9,8), %rax + adc %rdx, %r10 + xor %ecx, %ecx + mul %r13 + add %rax, %r10 + mov 24(%rsi,%r9,8), %rax + adc %rdx, %rbp + mov %rbx, 24(%r12,%r9,8) + mul %r13 + add $4, %r9 + js .Lmul_1_m1_top + + add %rax, %rbp + mov %r10, (%r12) + adc %rdx, %rcx + mov %rbp, 8(%r12) + mov %rcx, 16(%r12) + + lea 16(%r12), %r12 + lea -8(%rsi), %rsi + jmp .Ldowhile_mid + + +.L3m4: + lea 8(%rdi,%r11,8), %r12 + mov (%rsi), %r13 + mov 8(%rsi), %rax + lea 8(%rsi,%r11,8), %rsi + + lea -5(%r11), %r8 + + lea -1(%r11), %r9 + neg %r9 + + mov %rax, %r14 + mul %r13 + mov %rdx, %r10 + xor %ebx, %ebx + xor %ecx, %ecx + mov %rax, 8(%rdi) + jmp .Lm2 + + .align 16, 0x90 +.Lmul_2_m2_top: + mul %r14 + add %rax, %rbx + adc %rdx, %rcx + mov -24(%rsi,%r9,8), %rax + mov $0, %ebp + mul %r13 + add %rax, %rbx + mov -24(%rsi,%r9,8), %rax + adc %rdx, %rcx + adc $0, %ebp + mul %r14 + add %rax, %rcx + mov %rbx, -24(%r12,%r9,8) + adc %rdx, %rbp + mov -16(%rsi,%r9,8), %rax + mul %r13 + mov $0, %r10d + add %rax, %rcx + adc %rdx, %rbp + mov -16(%rsi,%r9,8), %rax + adc $0, %r10d + mov $0, %ebx + mov %rcx, -16(%r12,%r9,8) + mul %r14 + add %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + mov $0, %ecx + mul %r13 + add %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + adc $0, %ebx + mul %r14 + add %rax, %r10 + mov %rbp, -8(%r12,%r9,8) + adc %rdx, %rbx +.Lm2: mov (%rsi,%r9,8), %rax + mul %r13 + add %rax, %r10 + adc %rdx, %rbx + adc $0, %ecx + add $4, %r9 + mov -32(%rsi,%r9,8), %rax + mov %r10, -32(%r12,%r9,8) + js .Lmul_2_m2_top + + mul %r14 + add %rax, %rbx + adc %rdx, %rcx + mov %rbx, -8(%r12) + mov %rcx, (%r12) + + lea -16(%rsi), %rsi + jmp .Ldowhile_mid + +.Ldowhile: + + lea 4(%r8), %r9 + neg %r9 + + mov 16(%rsi,%r9,8), %r13 + mov 24(%rsi,%r9,8), %r14 + mov 24(%rsi,%r9,8), %rax + mul %r13 + xor %r10d, %r10d + add %rax, 24(%r12,%r9,8) + adc %rdx, %r10 + xor %ebx, %ebx + xor %ecx, %ecx + jmp .Lam2 + + .align 16, 0x90 +.Laddmul_2_m2_top: + add %r10, (%r12,%r9,8) + adc %rax, %rbx + mov 8(%rsi,%r9,8), %rax + adc %rdx, %rcx + mov $0, %ebp + mul %r13 + add %rax, %rbx + mov 8(%rsi,%r9,8), %rax + adc %rdx, %rcx + adc $0, %ebp + mul %r14 + add %rbx, 8(%r12,%r9,8) + adc %rax, %rcx + adc %rdx, %rbp + mov 16(%rsi,%r9,8), %rax + mov $0, %r10d + mul %r13 + add %rax, %rcx + mov 16(%rsi,%r9,8), %rax + adc %rdx, %rbp + adc $0, %r10d + mul %r14 + add %rcx, 16(%r12,%r9,8) + adc %rax, %rbp + mov 24(%rsi,%r9,8), %rax + adc %rdx, %r10 + mul %r13 + mov $0, %ebx + add %rax, %rbp + adc %rdx, %r10 + mov $0, %ecx + mov 24(%rsi,%r9,8), %rax + adc $0, %ebx + mul %r14 + add %rbp, 24(%r12,%r9,8) + adc %rax, %r10 + adc %rdx, %rbx +.Lam2: mov 32(%rsi,%r9,8), %rax + mul %r13 + add %rax, %r10 + mov 32(%rsi,%r9,8), %rax + adc %rdx, %rbx + adc $0, %ecx + mul %r14 + add $4, %r9 + js .Laddmul_2_m2_top + + add %r10, (%r12) + adc %rax, %rbx + adc %rdx, %rcx + mov %rbx, 8(%r12) + mov %rcx, 16(%r12) + + lea 16(%r12), %r12 + + add $-2, %r8d + +.Ldowhile_mid: + + lea 2(%r8), %r9 + neg %r9 + + mov (%rsi,%r9,8), %r13 + mov 8(%rsi,%r9,8), %r14 + mov 8(%rsi,%r9,8), %rax + mul %r13 + xor %ecx, %ecx + add %rax, 8(%r12,%r9,8) + adc %rdx, %rcx + xor %ebp, %ebp + jmp .L20 + + .align 16, 0x90 +.Laddmul_2_m0_top: + add %r10, (%r12,%r9,8) + adc %rax, %rbx + mov 8(%rsi,%r9,8), %rax + adc %rdx, %rcx + mov $0, %ebp + mul %r13 + add %rax, %rbx + mov 8(%rsi,%r9,8), %rax + adc %rdx, %rcx + adc $0, %ebp + mul %r14 + add %rbx, 8(%r12,%r9,8) + adc %rax, %rcx + adc %rdx, %rbp +.L20: mov 16(%rsi,%r9,8), %rax + mov $0, %r10d + mul %r13 + add %rax, %rcx + mov 16(%rsi,%r9,8), %rax + adc %rdx, %rbp + adc $0, %r10d + mul %r14 + add %rcx, 16(%r12,%r9,8) + adc %rax, %rbp + mov 24(%rsi,%r9,8), %rax + adc %rdx, %r10 + mul %r13 + mov $0, %ebx + add %rax, %rbp + adc %rdx, %r10 + mov $0, %ecx + mov 24(%rsi,%r9,8), %rax + adc $0, %ebx + mul %r14 + add %rbp, 24(%r12,%r9,8) + adc %rax, %r10 + adc %rdx, %rbx + mov 32(%rsi,%r9,8), %rax + mul %r13 + add %rax, %r10 + mov 32(%rsi,%r9,8), %rax + adc %rdx, %rbx + adc $0, %ecx + mul %r14 + add $4, %r9 + js .Laddmul_2_m0_top + + add %r10, (%r12) + adc %rax, %rbx + adc %rdx, %rcx + mov %rbx, 8(%r12) + mov %rcx, 16(%r12) + + lea 16(%r12), %r12 +.Ldowhile_end: + + add $-2, %r8d + jne .Ldowhile + + + mov -16(%rsi), %r13 + mov -8(%rsi), %r14 + mov -8(%rsi), %rax + mul %r13 + xor %r10d, %r10d + add %rax, -8(%r12) + adc %rdx, %r10 + xor %ebx, %ebx + xor %ecx, %ecx + mov (%rsi), %rax + mul %r13 + add %rax, %r10 + mov (%rsi), %rax + adc %rdx, %rbx + mul %r14 + add %r10, (%r12) + adc %rax, %rbx + adc %rdx, %rcx + mov %rbx, 8(%r12) + mov %rcx, 16(%r12) + + + lea -4(%r11,%r11), %r9 + + mov 8(%rdi), %r11 + lea -8(%rsi), %rsi + lea (%rdi,%r9,8), %rdi + neg %r9 + mov (%rsi,%r9,4), %rax + mul %rax + test $2, %r9b + jnz .Lodd + +.Levn: add %r11, %r11 + sbb %ebx, %ebx + add %rdx, %r11 + mov %rax, (%rdi,%r9,8) + jmp .Ld0 + +.Lodd: add %r11, %r11 + sbb %ebp, %ebp + add %rdx, %r11 + mov %rax, (%rdi,%r9,8) + lea -2(%r9), %r9 + jmp .Ld1 + + .align 16, 0x90 +.Ltop: mov (%rsi,%r9,4), %rax + mul %rax + add %ebp, %ebp + adc %rax, %r10 + adc %rdx, %r11 + mov %r10, (%rdi,%r9,8) +.Ld0: mov %r11, 8(%rdi,%r9,8) + mov 16(%rdi,%r9,8), %r10 + adc %r10, %r10 + mov 24(%rdi,%r9,8), %r11 + adc %r11, %r11 + nop + sbb %ebp, %ebp + mov 8(%rsi,%r9,4), %rax + mul %rax + add %ebx, %ebx + adc %rax, %r10 + adc %rdx, %r11 + mov %r10, 16(%rdi,%r9,8) +.Ld1: mov %r11, 24(%rdi,%r9,8) + mov 32(%rdi,%r9,8), %r10 + adc %r10, %r10 + mov 40(%rdi,%r9,8), %r11 + adc %r11, %r11 + sbb %ebx, %ebx + add $4, %r9 + js .Ltop + + mov (%rsi), %rax + mul %rax + add %ebp, %ebp + adc %rax, %r10 + adc %rdx, %r11 + mov %r10, (%rdi) + mov %r11, 8(%rdi) + mov 16(%rdi), %r10 + adc %r10, %r10 + sbb %ebp, %ebp + neg %ebp + mov 8(%rsi), %rax + mul %rax + add %ebx, %ebx + adc %rax, %r10 + adc %rbp, %rdx + mov %r10, 16(%rdi) + mov %rdx, 24(%rdi) + + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + .size __gmpn_sqr_basecase,.-__gmpn_sqr_basecase diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sqr_diag_addlsh1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sqr_diag_addlsh1.s new file mode 100644 index 0000000..7203603 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sqr_diag_addlsh1.s @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_sqr_diag_addlsh1 + .type __gmpn_sqr_diag_addlsh1,@function + +__gmpn_sqr_diag_addlsh1: + + + push %rbx + + dec %rcx + shl %rcx + + mov (%rdx), %rax + + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,4), %r11 + neg %rcx + + mul %rax + mov %rax, (%rdi,%rcx,8) + + xor %ebx, %ebx + jmp .Lmid + + .align 16, 0x90 +.Ltop: add %r10, %r8 + adc %rax, %r9 + mov %r8, -8(%rdi,%rcx,8) + mov %r9, (%rdi,%rcx,8) +.Lmid: mov 8(%r11,%rcx,4), %rax + mov (%rsi,%rcx,8), %r8 + mov 8(%rsi,%rcx,8), %r9 + adc %r8, %r8 + adc %r9, %r9 + lea (%rdx,%rbx), %r10 + setc %bl + mul %rax + add $2, %rcx + js .Ltop + +.Lend: add %r10, %r8 + adc %rax, %r9 + mov %r8, -8(%rdi) + mov %r9, (%rdi) + adc %rbx, %rdx + mov %rdx, 8(%rdi) + + pop %rbx + + ret + .size __gmpn_sqr_diag_addlsh1,.-__gmpn_sqr_diag_addlsh1 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err1_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err1_n.s new file mode 100644 index 0000000..cbef8af --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err1_n.s @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_sub_err1_n + .type __gmpn_sub_err1_n,@function + +__gmpn_sub_err1_n: + + mov 8(%rsp), %rax + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + lea (%rsi,%r9,8), %rsi + lea (%rdx,%r9,8), %rdx + lea (%rdi,%r9,8), %rdi + + mov %r9d, %r10d + and $3, %r10d + jz .L0mod4 + cmp $2, %r10d + jc .L1mod4 + jz .L2mod4 +.L3mod4: + xor %ebx, %ebx + xor %ebp, %ebp + xor %r10d, %r10d + xor %r11d, %r11d + lea -24(%r8,%r9,8), %r8 + neg %r9 + + shr $1, %al + mov (%rsi,%r9,8), %r14 + mov 8(%rsi,%r9,8), %r15 + sbb (%rdx,%r9,8), %r14 + mov %r14, (%rdi,%r9,8) + cmovc 16(%r8), %rbx + sbb 8(%rdx,%r9,8), %r15 + mov %r15, 8(%rdi,%r9,8) + cmovc 8(%r8), %r10 + mov 16(%rsi,%r9,8), %r14 + sbb 16(%rdx,%r9,8), %r14 + mov %r14, 16(%rdi,%r9,8) + cmovc (%r8), %r11 + setc %al + add %r10, %rbx + adc $0, %rbp + add %r11, %rbx + adc $0, %rbp + + add $3, %r9 + jnz .Lloop + jmp .Lend + + .align 16, 0x90 +.L0mod4: + xor %ebx, %ebx + xor %ebp, %ebp + lea (%r8,%r9,8), %r8 + neg %r9 + jmp .Lloop + + .align 16, 0x90 +.L1mod4: + xor %ebx, %ebx + xor %ebp, %ebp + lea -8(%r8,%r9,8), %r8 + neg %r9 + + shr $1, %al + mov (%rsi,%r9,8), %r14 + sbb (%rdx,%r9,8), %r14 + mov %r14, (%rdi,%r9,8) + cmovc (%r8), %rbx + setc %al + + add $1, %r9 + jnz .Lloop + jmp .Lend + + .align 16, 0x90 +.L2mod4: + xor %ebx, %ebx + xor %ebp, %ebp + xor %r10d, %r10d + lea -16(%r8,%r9,8), %r8 + neg %r9 + + shr $1, %al + mov (%rsi,%r9,8), %r14 + mov 8(%rsi,%r9,8), %r15 + sbb (%rdx,%r9,8), %r14 + mov %r14, (%rdi,%r9,8) + cmovc 8(%r8), %rbx + sbb 8(%rdx,%r9,8), %r15 + mov %r15, 8(%rdi,%r9,8) + cmovc (%r8), %r10 + setc %al + add %r10, %rbx + adc $0, %rbp + + add $2, %r9 + jnz .Lloop + jmp .Lend + + .align 32, 0x90 +.Lloop: + shr $1, %al + mov -8(%r8), %r10 + mov $0, %r13d + mov (%rsi,%r9,8), %r14 + mov 8(%rsi,%r9,8), %r15 + sbb (%rdx,%r9,8), %r14 + cmovnc %r13, %r10 + sbb 8(%rdx,%r9,8), %r15 + mov -16(%r8), %r11 + mov %r14, (%rdi,%r9,8) + mov 16(%rsi,%r9,8), %r14 + mov %r15, 8(%rdi,%r9,8) + cmovnc %r13, %r11 + mov -24(%r8), %r12 + sbb 16(%rdx,%r9,8), %r14 + cmovnc %r13, %r12 + mov 24(%rsi,%r9,8), %r15 + sbb 24(%rdx,%r9,8), %r15 + cmovc -32(%r8), %r13 + setc %al + add %r10, %rbx + adc $0, %rbp + add %r11, %rbx + adc $0, %rbp + add %r12, %rbx + adc $0, %rbp + mov %r14, 16(%rdi,%r9,8) + add %r13, %rbx + lea -32(%r8), %r8 + adc $0, %rbp + mov %r15, 24(%rdi,%r9,8) + add $4, %r9 + jnz .Lloop + +.Lend: + mov %rbx, (%rcx) + mov %rbp, 8(%rcx) + + pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + ret + .size __gmpn_sub_err1_n,.-__gmpn_sub_err1_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err2_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err2_n.s new file mode 100644 index 0000000..77ebcb7 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err2_n.s @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_sub_err2_n + .type __gmpn_sub_err2_n,@function + +__gmpn_sub_err2_n: + + mov 16(%rsp), %rax + mov 8(%rsp), %r10 + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + + xor %ebp, %ebp + xor %r11d, %r11d + xor %r12d, %r12d + xor %r13d, %r13d + + sub %r8, %r9 + + lea (%rdi,%r10,8), %rdi + lea (%rsi,%r10,8), %rsi + lea (%rdx,%r10,8), %rdx + + test $1, %r10 + jnz .Lodd + + lea -8(%r8,%r10,8), %r8 + neg %r10 + jmp .Ltop + + .align 16, 0x90 +.Lodd: + lea -16(%r8,%r10,8), %r8 + neg %r10 + shr $1, %rax + mov (%rsi,%r10,8), %rbx + sbb (%rdx,%r10,8), %rbx + cmovc 8(%r8), %rbp + cmovc 8(%r8,%r9), %r12 + mov %rbx, (%rdi,%r10,8) + sbb %rax, %rax + inc %r10 + jz .Lend + + .align 16, 0x90 +.Ltop: + mov (%rsi,%r10,8), %rbx + shr $1, %rax + sbb (%rdx,%r10,8), %rbx + mov %rbx, (%rdi,%r10,8) + sbb %r14, %r14 + + mov 8(%rsi,%r10,8), %rbx + sbb 8(%rdx,%r10,8), %rbx + mov %rbx, 8(%rdi,%r10,8) + sbb %rax, %rax + + mov (%r8), %rbx + and %r14, %rbx + add %rbx, %rbp + adc $0, %r11 + + and (%r8,%r9), %r14 + add %r14, %r12 + adc $0, %r13 + + mov -8(%r8), %rbx + and %rax, %rbx + add %rbx, %rbp + adc $0, %r11 + + mov -8(%r8,%r9), %rbx + and %rax, %rbx + add %rbx, %r12 + adc $0, %r13 + + add $2, %r10 + lea -16(%r8), %r8 + jnz .Ltop +.Lend: + + mov %rbp, (%rcx) + mov %r11, 8(%rcx) + mov %r12, 16(%rcx) + mov %r13, 24(%rcx) + + and $1, %eax + + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + ret + .size __gmpn_sub_err2_n,.-__gmpn_sub_err2_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err3_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err3_n.s new file mode 100644 index 0000000..b995ec7 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err3_n.s @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_sub_err3_n + .type __gmpn_sub_err3_n,@function + +__gmpn_sub_err3_n: + + mov 24(%rsp), %rax + mov 16(%rsp), %r10 + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + push %rcx + mov 64(%rsp), %rcx + + xor %ebp, %ebp + xor %r11d, %r11d + xor %r12d, %r12d + xor %r13d, %r13d + xor %r14d, %r14d + xor %r15d, %r15d + + sub %r8, %r9 + sub %r8, %rcx + + lea -8(%r8,%r10,8), %r8 + lea (%rdi,%r10,8), %rdi + lea (%rsi,%r10,8), %rsi + lea (%rdx,%r10,8), %rdx + neg %r10 + + .align 16, 0x90 +.Ltop: + shr $1, %rax + mov (%rsi,%r10,8), %rax + sbb (%rdx,%r10,8), %rax + mov %rax, (%rdi,%r10,8) + sbb %rax, %rax + + mov (%r8), %rbx + and %rax, %rbx + add %rbx, %rbp + adc $0, %r11 + + mov (%r8,%r9), %rbx + and %rax, %rbx + add %rbx, %r12 + adc $0, %r13 + + mov (%r8,%rcx), %rbx + and %rax, %rbx + add %rbx, %r14 + adc $0, %r15 + + lea -8(%r8), %r8 + inc %r10 + jnz .Ltop + +.Lend: + and $1, %eax + pop %rcx + + mov %rbp, (%rcx) + mov %r11, 8(%rcx) + mov %r12, 16(%rcx) + mov %r13, 24(%rcx) + mov %r14, 32(%rcx) + mov %r15, 40(%rcx) + + pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + ret + .size __gmpn_sub_err3_n,.-__gmpn_sub_err3_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sub_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_n.s new file mode 100644 index 0000000..8c1db0a --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_n.s @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_sub_nc + .type __gmpn_sub_nc,@function + +__gmpn_sub_nc: + + + + mov %ecx, %eax + shr $2, %rcx + and $3, %eax + bt $0, %r8 + jrcxz .Llt4 + + mov (%rsi), %r8 + mov 8(%rsi), %r9 + dec %rcx + jmp .Lmid + + .size __gmpn_sub_nc,.-__gmpn_sub_nc + .align 16, 0x90 + .globl __gmpn_sub_n + .type __gmpn_sub_n,@function + +__gmpn_sub_n: + + + mov %ecx, %eax + shr $2, %rcx + and $3, %eax + jrcxz .Llt4 + + mov (%rsi), %r8 + mov 8(%rsi), %r9 + dec %rcx + jmp .Lmid + +.Llt4: dec %eax + mov (%rsi), %r8 + jnz .L2 + sbb (%rdx), %r8 + mov %r8, (%rdi) + adc %eax, %eax + + ret + +.L2: dec %eax + mov 8(%rsi), %r9 + jnz .L3 + sbb (%rdx), %r8 + sbb 8(%rdx), %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + adc %eax, %eax + + ret + +.L3: mov 16(%rsi), %r10 + sbb (%rdx), %r8 + sbb 8(%rdx), %r9 + sbb 16(%rdx), %r10 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + setc %al + + ret + + .align 16, 0x90 +.Ltop: sbb (%rdx), %r8 + sbb 8(%rdx), %r9 + sbb 16(%rdx), %r10 + sbb 24(%rdx), %r11 + mov %r8, (%rdi) + lea 32(%rsi), %rsi + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + dec %rcx + mov %r11, 24(%rdi) + lea 32(%rdx), %rdx + mov (%rsi), %r8 + mov 8(%rsi), %r9 + lea 32(%rdi), %rdi +.Lmid: mov 16(%rsi), %r10 + mov 24(%rsi), %r11 + jnz .Ltop + +.Lend: lea 32(%rsi), %rsi + sbb (%rdx), %r8 + sbb 8(%rdx), %r9 + sbb 16(%rdx), %r10 + sbb 24(%rdx), %r11 + lea 32(%rdx), %rdx + mov %r8, (%rdi) + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + mov %r11, 24(%rdi) + lea 32(%rdi), %rdi + + inc %eax + dec %eax + jnz .Llt4 + adc %eax, %eax + + ret + .size __gmpn_sub_n,.-__gmpn_sub_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sublsh1_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sublsh1_n.s new file mode 100644 index 0000000..d257a05 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sublsh1_n.s @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_sublsh1_n + .type __gmpn_sublsh1_n,@function + +__gmpn_sublsh1_n: + + + push %rbx + push %rbp + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rdx + neg %rcx + xor %ebp, %ebp + and $3, %eax + je .Lb00 + cmp $2, %eax + jc .Lb01 + je .Lb10 + +.Lb11: add %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + mov 16(%rdx,%rcx,8), %r10 + adc %r10, %r10 + sbb %eax, %eax + mov (%rsi,%rcx,8), %rbp + mov 8(%rsi,%rcx,8), %rbx + sub %r8, %rbp + sbb %r9, %rbx + mov %rbp, (%rdi,%rcx,8) + mov %rbx, 8(%rdi,%rcx,8) + mov 16(%rsi,%rcx,8), %rbp + sbb %r10, %rbp + mov %rbp, 16(%rdi,%rcx,8) + sbb %ebp, %ebp + add $3, %rcx + jmp .Lent + +.Lb10: add %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + sbb %eax, %eax + mov (%rsi,%rcx,8), %rbp + mov 8(%rsi,%rcx,8), %rbx + sub %r8, %rbp + sbb %r9, %rbx + mov %rbp, (%rdi,%rcx,8) + mov %rbx, 8(%rdi,%rcx,8) + sbb %ebp, %ebp + add $2, %rcx + jmp .Lent + +.Lb01: add %r8, %r8 + sbb %eax, %eax + mov (%rsi,%rcx,8), %rbp + sub %r8, %rbp + mov %rbp, (%rdi,%rcx,8) + sbb %ebp, %ebp + inc %rcx +.Lent: jns .Lend + + .align 16, 0x90 +.Ltop: add %eax, %eax + + mov (%rdx,%rcx,8), %r8 +.Lb00: adc %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + mov 16(%rdx,%rcx,8), %r10 + adc %r10, %r10 + mov 24(%rdx,%rcx,8), %r11 + adc %r11, %r11 + + sbb %eax, %eax + add %ebp, %ebp + + mov (%rsi,%rcx,8), %rbp + mov 8(%rsi,%rcx,8), %rbx + sbb %r8, %rbp + sbb %r9, %rbx + mov %rbp, (%rdi,%rcx,8) + mov %rbx, 8(%rdi,%rcx,8) + mov 16(%rsi,%rcx,8), %rbp + mov 24(%rsi,%rcx,8), %rbx + sbb %r10, %rbp + sbb %r11, %rbx + mov %rbp, 16(%rdi,%rcx,8) + mov %rbx, 24(%rdi,%rcx,8) + + sbb %ebp, %ebp + add $4, %rcx + js .Ltop + +.Lend: add %ebp, %eax + neg %eax + + pop %rbp + pop %rbx + + ret + .size __gmpn_sublsh1_n,.-__gmpn_sublsh1_n diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/submul_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/submul_1.s new file mode 100644 index 0000000..5e34932 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/submul_1.s @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_submul_1 + .type __gmpn_submul_1,@function + +__gmpn_submul_1: + + + + + + + mov (%rsi), %rax + push %rbx + mov %rdx, %rbx + + mul %rcx + mov %rbx, %r11 + + and $3, %ebx + jz .Lb0 + cmp $2, %ebx + jz .Lb2 + jg .Lb3 + +.Lb1: dec %r11 + jne .Lgt1 + sub %rax, (%rdi) + jmp .Lret +.Lgt1: lea 8(%rsi,%r11,8), %rsi + lea -8(%rdi,%r11,8), %rdi + neg %r11 + xor %r10, %r10 + xor %ebx, %ebx + mov %rax, %r9 + mov (%rsi,%r11,8), %rax + mov %rdx, %r8 + jmp .LL1 + +.Lb0: lea (%rsi,%r11,8), %rsi + lea -16(%rdi,%r11,8), %rdi + neg %r11 + xor %r10, %r10 + mov %rax, %r8 + mov %rdx, %rbx + jmp .LL0 + +.Lb3: lea -8(%rsi,%r11,8), %rsi + lea -24(%rdi,%r11,8), %rdi + neg %r11 + mov %rax, %rbx + mov %rdx, %r10 + jmp .LL3 + +.Lb2: lea -16(%rsi,%r11,8), %rsi + lea -32(%rdi,%r11,8), %rdi + neg %r11 + xor %r8, %r8 + xor %ebx, %ebx + mov %rax, %r10 + mov 24(%rsi,%r11,8), %rax + mov %rdx, %r9 + jmp .LL2 + + .align 16, 0x90 +.Ltop: sub %r10, (%rdi,%r11,8) + adc %rax, %r9 + mov (%rsi,%r11,8), %rax + adc %rdx, %r8 + mov $0, %r10d +.LL1: mul %rcx + sub %r9, 8(%rdi,%r11,8) + adc %rax, %r8 + adc %rdx, %rbx +.LL0: mov 8(%rsi,%r11,8), %rax + mul %rcx + sub %r8, 16(%rdi,%r11,8) + adc %rax, %rbx + adc %rdx, %r10 +.LL3: mov 16(%rsi,%r11,8), %rax + mul %rcx + sub %rbx, 24(%rdi,%r11,8) + mov $0, %r8d + mov %r8, %rbx + adc %rax, %r10 + mov 24(%rsi,%r11,8), %rax + mov %r8, %r9 + adc %rdx, %r9 +.LL2: mul %rcx + add $4, %r11 + js .Ltop + + sub %r10, (%rdi,%r11,8) + adc %rax, %r9 + adc %r8, %rdx + sub %r9, 8(%rdi,%r11,8) +.Lret: adc $0, %rdx + mov %rdx, %rax + + pop %rbx + + + ret + .size __gmpn_submul_1,.-__gmpn_submul_1 diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/xnor_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/xnor_n.s new file mode 100644 index 0000000..4db0497 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/xnor_n.s @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_xnor_n + .type __gmpn_xnor_n,@function + +__gmpn_xnor_n: + + + mov (%rdx), %r8 + not %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je .Lb00 + cmp $2, %eax + jc .Lb01 + je .Lb10 + +.Lb11: xor (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp .Le11 +.Lb10: add $-2, %rcx + jmp .Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90 +.Lb01: xor (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz .Lret + +.Ltop: mov (%rdx,%rcx,8), %r8 + not %r8 +.Lb00: mov 8(%rdx,%rcx,8), %r9 + not %r9 + xor (%rsi,%rcx,8), %r8 + xor 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +.Le11: mov 16(%rdx,%rcx,8), %r8 + not %r8 +.Le10: mov 24(%rdx,%rcx,8), %r9 + not %r9 + xor 16(%rsi,%rcx,8), %r8 + xor 24(%rsi,%rcx,8), %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc .Ltop + +.Lret: + ret + .size __gmpn_xnor_n,.-__gmpn_xnor_n + + + diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/xor_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/xor_n.s new file mode 100644 index 0000000..8ef14d0 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/mpn/xor_n.s @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_xor_n + .type __gmpn_xor_n,@function + +__gmpn_xor_n: + + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je .Lb00 + cmp $2, %eax + jc .Lb01 + je .Lb10 + +.Lb11: xor (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp .Le11 +.Lb10: add $-2, %rcx + jmp .Le10 +.Lb01: xor (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz .Lret + +.Ltop: mov (%rdx,%rcx,8), %r8 +.Lb00: mov 8(%rdx,%rcx,8), %r9 + xor (%rsi,%rcx,8), %r8 + xor 8(%rsi,%rcx,8), %r9 + nop + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +.Le11: mov 16(%rdx,%rcx,8), %r8 +.Le10: mov 24(%rdx,%rcx,8), %r9 + xor 16(%rsi,%rcx,8), %r8 + xor 24(%rsi,%rcx,8), %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc .Ltop + +.Lret: + ret + .size __gmpn_xor_n,.-__gmpn_xor_n + + + + + diff --git a/vere/ext/gmp/gen/x86_64-linux/sieve_table.h b/vere/ext/gmp/gen/x86_64-linux/sieve_table.h new file mode 100644 index 0000000..ee9ac14 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/sieve_table.h @@ -0,0 +1,46 @@ +/* This file generated by gen-sieve.c - DO NOT EDIT. */ + +#if GMP_LIMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +#define PRIMESIEVE_INIT_TABLE \ + CNST_LIMB (0x3294C9E069128480), /* 5 - 196 (42 primes) */ \ + CNST_LIMB (0x95A35E1EC4AB21DC), /* 197 - 388 (32 primes) */ \ + CNST_LIMB (0x4AD7CE99B8693366), /* 389 - 580 (30 primes) */ \ + CNST_LIMB (0x6595B6DA728DC52B), /* 581 - 772 (30 primes) */ \ + CNST_LIMB (0xEA6D9F8787B0CEDE), /* 773 - 964 (26 primes) */ \ + CNST_LIMB (0x3F56A1F4CD3275A9), /* 965 - 1156 (29 primes) */ \ + CNST_LIMB (0xFD3848FB74A76ADB), /* 1157 - 1348 (26 primes) */ \ + CNST_LIMB (0xDBBA0DD1A1EDF6AF), /* 1349 - 1540 (25 primes) */ \ + CNST_LIMB (0xCEC7F17ED22799A5), /* 1541 - 1732 (27 primes) */ \ + CNST_LIMB (0xEAEC17BDBB717D56), /* 1733 - 1924 (24 primes) */ \ + CNST_LIMB (0x3B0EB7B3585AFCF3), /* 1925 - 2116 (26 primes) */ \ + CNST_LIMB (0xE563D8F69FDF6C4F), /* 2117 - 2308 (23 primes) */ \ + CNST_LIMB (0xFE5BA7ABA45E92FC), /* 2309 - 2500 (25 primes) */ \ + CNST_LIMB (0x158DEE6F3BF49B7D), /* 2501 - 2692 (24 primes) */ \ + CNST_LIMB (0xBE5A7BC4EDE6CD1A), /* 2693 - 2884 (26 primes) */ \ + CNST_LIMB (0xD7679B3FCA7BB6AD), /* 2885 - 3076 (22 primes) */ \ + CNST_LIMB (0xC3F66B971FEF37E9), /* 3077 - 3268 (22 primes) */ \ + CNST_LIMB (0x6F7EBCF339C953FD), /* 3269 - 3460 (22 primes) */ \ + CNST_LIMB (0xD5A5ECDCD235DBF0), /* 3461 - 3652 (27 primes) */ \ + CNST_LIMB (0xECFA7B2FD5B65E3B), /* 3653 - 3844 (22 primes) */ \ + CNST_LIMB (0xD28EFDF9C89F67B1), /* 3845 - 4036 (25 primes) */ \ + CNST_LIMB (0xCB7F7C7A3DD3AF4F), /* 4037 - 4228 (21 primes) */ \ + CNST_LIMB (0xEEBED6CDFF6B32CC), /* 4229 - 4420 (22 primes) */ \ + CNST_LIMB (0xD5BD73F85ECFA97C), /* 4421 - 4612 (23 primes) */ \ + CNST_LIMB (0x21FDBE4FBBAD48F7), /* 4613 - 4804 (24 primes) */ \ + CNST_LIMB (0x5E35A3B5EEB7FDE7), /* 4805 - 4996 (21 primes) */ \ + CNST_LIMB (0xD9EBFD53A7DBBCC9), /* 4997 - 5188 (22 primes) */ \ + CNST_LIMB (0xFF9EDEAF2EFE1F76), /* 5189 - 5380 (18 primes) */ +#define PRIMESIEVE_NUMBEROF_TABLE 28 +/* #define PRIMESIEVE_PRIMES_IN_TABLE 706 */ +#define PRIMESIEVE_HIGHEST_PRIME 5351 +/* #define PRIMESIEVE_FIRST_UNCHECKED 5381 */ + +#define SIEVE_MASK1 CNST_LIMB(0x3204C1A049120485) +#define SIEVE_MASKT CNST_LIMB(0xA1204892058) +#define SIEVE_2MSK1 CNST_LIMB(0x29048402110840A) +#define SIEVE_2MSK2 CNST_LIMB(0x9402180C40230184) +#define SIEVE_2MSKT CNST_LIMB(0x5021088402120) + diff --git a/vere/ext/gmp/gen/x86_64-linux/trialdivtab.h b/vere/ext/gmp/gen/x86_64-linux/trialdivtab.h new file mode 100644 index 0000000..eb81d7f --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-linux/trialdivtab.h @@ -0,0 +1,1214 @@ +#if GMP_LIMB_BITS != 64 +#error This table is for GMP_LIMB_BITS = 64 +#endif + +#if GMP_NAIL_BITS != 0 +#error This table does not support nails +#endif + +#ifdef WANT_dtab + P(3,CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0x5555555555555555)), + P(5,CNST_LIMB(0xcccccccccccccccd),CNST_LIMB(0x3333333333333333)), + P(7,CNST_LIMB(0x6db6db6db6db6db7),CNST_LIMB(0x2492492492492492)), + P(11,CNST_LIMB(0x2e8ba2e8ba2e8ba3),CNST_LIMB(0x1745d1745d1745d1)), + P(13,CNST_LIMB(0x4ec4ec4ec4ec4ec5),CNST_LIMB(0x13b13b13b13b13b1)), + P(17,CNST_LIMB(0xf0f0f0f0f0f0f0f1),CNST_LIMB(0xf0f0f0f0f0f0f0f)), + P(19,CNST_LIMB(0x86bca1af286bca1b),CNST_LIMB(0xd79435e50d79435)), + P(23,CNST_LIMB(0xd37a6f4de9bd37a7),CNST_LIMB(0xb21642c8590b216)), + P(29,CNST_LIMB(0x34f72c234f72c235),CNST_LIMB(0x8d3dcb08d3dcb08)), + P(31,CNST_LIMB(0xef7bdef7bdef7bdf),CNST_LIMB(0x842108421084210)), + P(37,CNST_LIMB(0x14c1bacf914c1bad),CNST_LIMB(0x6eb3e45306eb3e4)), + P(41,CNST_LIMB(0x8f9c18f9c18f9c19),CNST_LIMB(0x63e7063e7063e70)), + P(43,CNST_LIMB(0x82fa0be82fa0be83),CNST_LIMB(0x5f417d05f417d05)), + P(47,CNST_LIMB(0x51b3bea3677d46cf),CNST_LIMB(0x572620ae4c415c9)), + P(53,CNST_LIMB(0x21cfb2b78c13521d),CNST_LIMB(0x4d4873ecade304d)), + P(59,CNST_LIMB(0xcbeea4e1a08ad8f3),CNST_LIMB(0x456c797dd49c341)), + P(61,CNST_LIMB(0x4fbcda3ac10c9715),CNST_LIMB(0x4325c53ef368eb0)), + P(67,CNST_LIMB(0xf0b7672a07a44c6b),CNST_LIMB(0x3d226357e16ece5)), + P(71,CNST_LIMB(0x193d4bb7e327a977),CNST_LIMB(0x39b0ad12073615a)), + P(73,CNST_LIMB(0x7e3f1f8fc7e3f1f9),CNST_LIMB(0x381c0e070381c0e)), + P(79,CNST_LIMB(0x9b8b577e613716af),CNST_LIMB(0x33d91d2a2067b23)), + P(83,CNST_LIMB(0xa3784a062b2e43db),CNST_LIMB(0x3159721ed7e7534)), + P(89,CNST_LIMB(0xf47e8fd1fa3f47e9),CNST_LIMB(0x2e05c0b81702e05)), + P(97,CNST_LIMB(0xa3a0fd5c5f02a3a1),CNST_LIMB(0x2a3a0fd5c5f02a3)), + P(101,CNST_LIMB(0x3a4c0a237c32b16d),CNST_LIMB(0x288df0cac5b3f5d)), + P(103,CNST_LIMB(0xdab7ec1dd3431b57),CNST_LIMB(0x27c45979c95204f)), + P(107,CNST_LIMB(0x77a04c8f8d28ac43),CNST_LIMB(0x2647c69456217ec)), + P(109,CNST_LIMB(0xa6c0964fda6c0965),CNST_LIMB(0x2593f69b02593f6)), + P(113,CNST_LIMB(0x90fdbc090fdbc091),CNST_LIMB(0x243f6f0243f6f02)), + P(127,CNST_LIMB(0x7efdfbf7efdfbf7f),CNST_LIMB(0x204081020408102)), + P(131,CNST_LIMB(0x3e88cb3c9484e2b),CNST_LIMB(0x1f44659e4a42715)), + P(137,CNST_LIMB(0xe21a291c077975b9),CNST_LIMB(0x1de5d6e3f8868a4)), + P(139,CNST_LIMB(0x3aef6ca970586723),CNST_LIMB(0x1d77b654b82c339)), + P(149,CNST_LIMB(0xdf5b0f768ce2cabd),CNST_LIMB(0x1b7d6c3dda338b2)), + P(151,CNST_LIMB(0x6fe4dfc9bf937f27),CNST_LIMB(0x1b2036406c80d90)), + P(157,CNST_LIMB(0x5b4fe5e92c0685b5),CNST_LIMB(0x1a16d3f97a4b01a)), + P(163,CNST_LIMB(0x1f693a1c451ab30b),CNST_LIMB(0x1920fb49d0e228d)), + P(167,CNST_LIMB(0x8d07aa27db35a717),CNST_LIMB(0x1886e5f0abb0499)), + P(173,CNST_LIMB(0x882383b30d516325),CNST_LIMB(0x17ad2208e0ecc35)), + P(179,CNST_LIMB(0xed6866f8d962ae7b),CNST_LIMB(0x16e1f76b4337c6c)), + P(181,CNST_LIMB(0x3454dca410f8ed9d),CNST_LIMB(0x16a13cd15372904)), + P(191,CNST_LIMB(0x1d7ca632ee936f3f),CNST_LIMB(0x1571ed3c506b39a)), + P(193,CNST_LIMB(0x70bf015390948f41),CNST_LIMB(0x15390948f40feac)), + P(197,CNST_LIMB(0xc96bdb9d3d137e0d),CNST_LIMB(0x14cab88725af6e7)), + P(199,CNST_LIMB(0x2697cc8aef46c0f7),CNST_LIMB(0x149539e3b2d066e)), + P(211,CNST_LIMB(0xc0e8f2a76e68575b),CNST_LIMB(0x13698df3de07479)), + P(223,CNST_LIMB(0x687763dfdb43bb1f),CNST_LIMB(0x125e22708092f11)), + P(227,CNST_LIMB(0x1b10ea929ba144cb),CNST_LIMB(0x120b470c67c0d88)), + P(229,CNST_LIMB(0x1d10c4c0478bbced),CNST_LIMB(0x11e2ef3b3fb8744)), + P(233,CNST_LIMB(0x63fb9aeb1fdcd759),CNST_LIMB(0x119453808ca29c0)), + P(239,CNST_LIMB(0x64afaa4f437b2e0f),CNST_LIMB(0x112358e75d30336)), + P(241,CNST_LIMB(0xf010fef010fef011),CNST_LIMB(0x10fef010fef010f)), + P(251,CNST_LIMB(0x28cbfbeb9a020a33),CNST_LIMB(0x105197f7d734041)), + P(257,CNST_LIMB(0xff00ff00ff00ff01),CNST_LIMB(0xff00ff00ff00ff)), + P(263,CNST_LIMB(0xd624fd1470e99cb7),CNST_LIMB(0xf92fb2211855a8)), + P(269,CNST_LIMB(0x8fb3ddbd6205b5c5),CNST_LIMB(0xf3a0d52cba8723)), + P(271,CNST_LIMB(0xd57da36ca27acdef),CNST_LIMB(0xf1d48bcee0d399)), + P(277,CNST_LIMB(0xee70c03b25e4463d),CNST_LIMB(0xec979118f3fc4d)), + P(281,CNST_LIMB(0xc5b1a6b80749cb29),CNST_LIMB(0xe939651fe2d8d3)), + P(283,CNST_LIMB(0x47768073c9b97113),CNST_LIMB(0xe79372e225fe30)), + P(293,CNST_LIMB(0x2591e94884ce32ad),CNST_LIMB(0xdfac1f74346c57)), + P(307,CNST_LIMB(0xf02806abc74be1fb),CNST_LIMB(0xd578e97c3f5fe5)), + P(311,CNST_LIMB(0x7ec3e8f3a7198487),CNST_LIMB(0xd2ba083b445250)), + P(313,CNST_LIMB(0x58550f8a39409d09),CNST_LIMB(0xd161543e28e502)), + P(317,CNST_LIMB(0xec9e48ae6f71de15),CNST_LIMB(0xcebcf8bb5b4169)), + P(331,CNST_LIMB(0x2ff3a018bfce8063),CNST_LIMB(0xc5fe740317f9d0)), + P(337,CNST_LIMB(0x7f9ec3fcf61fe7b1),CNST_LIMB(0xc2780613c0309e)), + P(347,CNST_LIMB(0x89f5abe570e046d3),CNST_LIMB(0xbcdd535db1cc5b)), + P(349,CNST_LIMB(0xda971b23f1545af5),CNST_LIMB(0xbbc8408cd63069)), + P(353,CNST_LIMB(0x79d5f00b9a7862a1),CNST_LIMB(0xb9a7862a0ff465)), + P(359,CNST_LIMB(0x4dba1df32a128a57),CNST_LIMB(0xb68d31340e4307)), + P(367,CNST_LIMB(0x87530217b7747d8f),CNST_LIMB(0xb2927c29da5519)), + P(373,CNST_LIMB(0x30baae53bb5e06dd),CNST_LIMB(0xafb321a1496fdf)), + P(379,CNST_LIMB(0xee70206c12e9b5b3),CNST_LIMB(0xaceb0f891e6551)), + P(383,CNST_LIMB(0xcdde9462ec9dbe7f),CNST_LIMB(0xab1cbdd3e2970f)), + P(389,CNST_LIMB(0xafb64b05ec41cf4d),CNST_LIMB(0xa87917088e262b)), + P(397,CNST_LIMB(0x2944ff5aec02945),CNST_LIMB(0xa513fd6bb00a51)), + P(401,CNST_LIMB(0x2cb033128382df71),CNST_LIMB(0xa36e71a2cb0331)), + P(409,CNST_LIMB(0x1ccacc0c84b1c2a9),CNST_LIMB(0xa03c1688732b30)), + P(419,CNST_LIMB(0x19a93db575eb3a0b),CNST_LIMB(0x9c69169b30446d)), + P(421,CNST_LIMB(0xcebeef94fa86fe2d),CNST_LIMB(0x9baade8e4a2f6e)), + P(431,CNST_LIMB(0x6faa77fb3f8df54f),CNST_LIMB(0x980e4156201301)), + P(433,CNST_LIMB(0x68a58af00975a751),CNST_LIMB(0x975a750ff68a58)), + P(439,CNST_LIMB(0xd56e36d0c3efac07),CNST_LIMB(0x9548e4979e0829)), + P(443,CNST_LIMB(0xd8b44c47a8299b73),CNST_LIMB(0x93efd1c50e726b)), + P(449,CNST_LIMB(0x2d9ccaf9ba70e41),CNST_LIMB(0x91f5bcb8bb02d9)), + P(457,CNST_LIMB(0x985e1c023d9e879),CNST_LIMB(0x8f67a1e3fdc261)), + P(461,CNST_LIMB(0x2a343316c494d305),CNST_LIMB(0x8e2917e0e702c6)), + P(463,CNST_LIMB(0x70cb7916ab67652f),CNST_LIMB(0x8d8be33f95d715)), + P(467,CNST_LIMB(0xd398f132fb10fe5b),CNST_LIMB(0x8c55841c815ed5)), + P(479,CNST_LIMB(0x6f2a38a6bf54fa1f),CNST_LIMB(0x88d180cd3a4133)), + P(487,CNST_LIMB(0x211df689b98f81d7),CNST_LIMB(0x869222b1acf1ce)), + P(491,CNST_LIMB(0xe994983e90f1ec3),CNST_LIMB(0x85797b917765ab)), + P(499,CNST_LIMB(0xad671e44bed87f3b),CNST_LIMB(0x8355ace3c897db)), + P(503,CNST_LIMB(0xf9623a0516e70fc7),CNST_LIMB(0x824a4e60b3262b)), + P(509,CNST_LIMB(0x4b7129be9dece355),CNST_LIMB(0x80c121b28bd1ba)), + P(521,CNST_LIMB(0x190f3b7473f62c39),CNST_LIMB(0x7dc9f3397d4c29)), + P(523,CNST_LIMB(0x63dacc9aad46f9a3),CNST_LIMB(0x7d4ece8fe88139)), + P(541,CNST_LIMB(0xc1108fda24e8d035),CNST_LIMB(0x79237d65bcce50)), + P(547,CNST_LIMB(0xb77578472319bd8b),CNST_LIMB(0x77cf53c5f7936c)), + P(557,CNST_LIMB(0x473d20a1c7ed9da5),CNST_LIMB(0x75a8accfbdd11e)), + P(563,CNST_LIMB(0xfbe85af0fea2c8fb),CNST_LIMB(0x7467ac557c228e)), + P(569,CNST_LIMB(0x58a1f7e6ce0f4c09),CNST_LIMB(0x732d70ed8db8e9)), + P(571,CNST_LIMB(0x1a00e58c544986f3),CNST_LIMB(0x72c62a24c3797f)), + P(577,CNST_LIMB(0x7194a17f55a10dc1),CNST_LIMB(0x7194a17f55a10d)), + P(587,CNST_LIMB(0x7084944785e33763),CNST_LIMB(0x6fa549b41da7e7)), + P(593,CNST_LIMB(0xba10679bd84886b1),CNST_LIMB(0x6e8419e6f61221)), + P(599,CNST_LIMB(0xebe9c6bb31260967),CNST_LIMB(0x6d68b5356c207b)), + P(601,CNST_LIMB(0x97a3fe4bd1ff25e9),CNST_LIMB(0x6d0b803685c01b)), + P(607,CNST_LIMB(0x6c6388395b84d99f),CNST_LIMB(0x6bf790a8b2d207)), + P(613,CNST_LIMB(0x8c51da6a1335df6d),CNST_LIMB(0x6ae907ef4b96c2)), + P(617,CNST_LIMB(0x46f3234475d5add9),CNST_LIMB(0x6a37991a23aead)), + P(619,CNST_LIMB(0x905605ca3c619a43),CNST_LIMB(0x69dfbdd4295b66)), + P(631,CNST_LIMB(0xcee8dff304767747),CNST_LIMB(0x67dc4c45c8033e)), + P(641,CNST_LIMB(0xff99c27f00663d81),CNST_LIMB(0x663d80ff99c27f)), + P(643,CNST_LIMB(0xacca407f671ddc2b),CNST_LIMB(0x65ec17e3559948)), + P(647,CNST_LIMB(0xe71298bac1e12337),CNST_LIMB(0x654ac835cfba5c)), + P(653,CNST_LIMB(0xfa1e94309cd09045),CNST_LIMB(0x645c854ae10772)), + P(659,CNST_LIMB(0xbebccb8e91496b9b),CNST_LIMB(0x6372990e5f901f)), + P(661,CNST_LIMB(0x312fa30cc7d7b8bd),CNST_LIMB(0x6325913c07beef)), + P(673,CNST_LIMB(0x6160ff9e9f006161),CNST_LIMB(0x6160ff9e9f0061)), + P(677,CNST_LIMB(0x6b03673b5e28152d),CNST_LIMB(0x60cdb520e5e88e)), + P(683,CNST_LIMB(0xfe802ffa00bfe803),CNST_LIMB(0x5ff4017fd005ff)), + P(691,CNST_LIMB(0xe66fe25c9e907c7b),CNST_LIMB(0x5ed79e31a4dccd)), + P(701,CNST_LIMB(0x3f8b236c76528895),CNST_LIMB(0x5d7d42d48ac5ef)), + P(709,CNST_LIMB(0xf6f923bf01ce2c0d),CNST_LIMB(0x5c6f35ccba5028)), + P(719,CNST_LIMB(0x6c3d3d98bed7c42f),CNST_LIMB(0x5b2618ec6ad0a5)), + P(727,CNST_LIMB(0x30981efcd4b010e7),CNST_LIMB(0x5a2553748e42e7)), + P(733,CNST_LIMB(0x6f691fc81ebbe575),CNST_LIMB(0x59686cf744cd5b)), + P(739,CNST_LIMB(0xb10480ddb47b52cb),CNST_LIMB(0x58ae97bab79976)), + P(743,CNST_LIMB(0x74cd59ed64f3f0d7),CNST_LIMB(0x58345f1876865f)), + P(751,CNST_LIMB(0x105cb81316d6c0f),CNST_LIMB(0x5743d5bb24795a)), + P(757,CNST_LIMB(0x9be64c6d91c1195d),CNST_LIMB(0x5692c4d1ab74ab)), + P(761,CNST_LIMB(0x71b3f945a27b1f49),CNST_LIMB(0x561e46a4d5f337)), + P(769,CNST_LIMB(0x77d80d50e508fd01),CNST_LIMB(0x5538ed06533997)), + P(773,CNST_LIMB(0xa5eb778e133551cd),CNST_LIMB(0x54c807f2c0bec2)), + P(787,CNST_LIMB(0x18657d3c2d8a3f1b),CNST_LIMB(0x5345efbc572d36)), + P(797,CNST_LIMB(0x2e40e220c34ad735),CNST_LIMB(0x523a758f941345)), + P(809,CNST_LIMB(0xa76593c70a714919),CNST_LIMB(0x5102370f816c89)), + P(811,CNST_LIMB(0x1eef452124eea383),CNST_LIMB(0x50cf129fb94acf)), + P(821,CNST_LIMB(0x38206dc242ba771d),CNST_LIMB(0x4fd31941cafdd1)), + P(823,CNST_LIMB(0x4cd4c35807772287),CNST_LIMB(0x4fa1704aa75945)), + P(827,CNST_LIMB(0x83de917d5e69ddf3),CNST_LIMB(0x4f3ed6d45a63ad)), + P(829,CNST_LIMB(0x882ef0403b4a6c15),CNST_LIMB(0x4f0de57154ebed)), + P(839,CNST_LIMB(0xf8fb6c51c606b677),CNST_LIMB(0x4e1cae8815f811)), + P(853,CNST_LIMB(0xb4abaac446d3e1fd),CNST_LIMB(0x4cd47ba5f6ff19)), + P(857,CNST_LIMB(0xa9f83bbe484a14e9),CNST_LIMB(0x4c78ae734df709)), + P(859,CNST_LIMB(0xbebbc0d1ce874d3),CNST_LIMB(0x4c4b19ed85cfb8)), + P(863,CNST_LIMB(0xbd418eaf0473189f),CNST_LIMB(0x4bf093221d1218)), + P(877,CNST_LIMB(0x44e3af6f372b7e65),CNST_LIMB(0x4aba3c21dc633f)), + P(881,CNST_LIMB(0xc87fdace4f9e5d91),CNST_LIMB(0x4a6360c344de00)), + P(883,CNST_LIMB(0xec93479c446bd9bb),CNST_LIMB(0x4a383e9f74d68a)), + P(887,CNST_LIMB(0xdac4d592e777c647),CNST_LIMB(0x49e28fbabb9940)), + P(907,CNST_LIMB(0xa63ea8c8f61f0c23),CNST_LIMB(0x48417b57c78cd7)), + P(911,CNST_LIMB(0xe476062ea5cbbb6f),CNST_LIMB(0x47f043713f3a2b)), + P(919,CNST_LIMB(0xdf68761c69daac27),CNST_LIMB(0x474ff2a10281cf)), + P(929,CNST_LIMB(0xb813d737637aa061),CNST_LIMB(0x468b6f9a978f91)), + P(937,CNST_LIMB(0xa3a77aac1fb15099),CNST_LIMB(0x45f13f1caff2e2)), + P(941,CNST_LIMB(0x17f0c3e0712c5825),CNST_LIMB(0x45a5228cec23e9)), + P(947,CNST_LIMB(0xfd912a70ff30637b),CNST_LIMB(0x45342c556c66b9)), + P(953,CNST_LIMB(0xfbb3b5dc01131289),CNST_LIMB(0x44c4a23feeced7)), + P(967,CNST_LIMB(0x856d560a0f5acdf7),CNST_LIMB(0x43c5c20d3c9fe6)), + P(971,CNST_LIMB(0x96472f314d3f89e3),CNST_LIMB(0x437e494b239798)), + P(977,CNST_LIMB(0xa76f5c7ed2253531),CNST_LIMB(0x43142d118e47cb)), + P(983,CNST_LIMB(0x816eae7c7bf69fe7),CNST_LIMB(0x42ab5c73a13458)), + P(991,CNST_LIMB(0xb6a2bea4cfb1781f),CNST_LIMB(0x4221950db0f3db)), + P(997,CNST_LIMB(0xa3900c53318e81ed),CNST_LIMB(0x41bbb2f80a4553)), + P(1009,CNST_LIMB(0x60aa7f5d9f148d11),CNST_LIMB(0x40f391612c6680)), + P(1013,CNST_LIMB(0x6be8c0102c7a505d),CNST_LIMB(0x40b1e94173fefd)), + P(1019,CNST_LIMB(0x8ff3f0ed28728f33),CNST_LIMB(0x4050647d9d0445)), + P(1021,CNST_LIMB(0x680e0a87e5ec7155),CNST_LIMB(0x4030241b144f3b)), + P(1031,CNST_LIMB(0xbbf70fa49fe829b7),CNST_LIMB(0x3f90c2ab542cb1)), + P(1033,CNST_LIMB(0xd69d1e7b6a50ca39),CNST_LIMB(0x3f71412d59f597)), + P(1039,CNST_LIMB(0x1a1e0f46b6d26aef),CNST_LIMB(0x3f137701b98841)), + P(1049,CNST_LIMB(0x7429f9a7a8251829),CNST_LIMB(0x3e79886b60e278)), + P(1051,CNST_LIMB(0xd9c2219d1b863613),CNST_LIMB(0x3e5b1916a7181d)), + P(1061,CNST_LIMB(0x91406c1820d077ad),CNST_LIMB(0x3dc4a50968f524)), + P(1063,CNST_LIMB(0x521f4ec02e3d2b97),CNST_LIMB(0x3da6e4c9550321)), + P(1069,CNST_LIMB(0xbb8283b63dc8eba5),CNST_LIMB(0x3d4e4f06f1def3)), + P(1087,CNST_LIMB(0x431eda153229ebbf),CNST_LIMB(0x3c4a6bdd24f9a4)), + P(1091,CNST_LIMB(0xaf0bf78d7e01686b),CNST_LIMB(0x3c11d54b525c73)), + P(1093,CNST_LIMB(0xa9ced0742c086e8d),CNST_LIMB(0x3bf5b1c5721065)), + P(1097,CNST_LIMB(0xc26458ad9f632df9),CNST_LIMB(0x3bbdb9862f23b4)), + P(1103,CNST_LIMB(0xbbff1255dff892af),CNST_LIMB(0x3b6a8801db5440)), + P(1109,CNST_LIMB(0xcbd49a333f04d8fd),CNST_LIMB(0x3b183cf0fed886)), + P(1117,CNST_LIMB(0xec84ed6f9cfdeff5),CNST_LIMB(0x3aabe394bdc3f4)), + P(1123,CNST_LIMB(0x97980cc40bda9d4b),CNST_LIMB(0x3a5ba3e76156da)), + P(1129,CNST_LIMB(0x777f34d524f5cbd9),CNST_LIMB(0x3a0c3e953378db)), + P(1151,CNST_LIMB(0x2797051d94cbbb7f),CNST_LIMB(0x38f03561320b1e)), + P(1153,CNST_LIMB(0xea769051b4f43b81),CNST_LIMB(0x38d6ecaef5908a)), + P(1163,CNST_LIMB(0xce7910f3034d4323),CNST_LIMB(0x3859cf221e6069)), + P(1171,CNST_LIMB(0x92791d1374f5b99b),CNST_LIMB(0x37f7415dc9588a)), + P(1181,CNST_LIMB(0x89a5645cc68ea1b5),CNST_LIMB(0x377df0d3902626)), + P(1187,CNST_LIMB(0x5f8aacf796c0cf0b),CNST_LIMB(0x373622136907fa)), + P(1193,CNST_LIMB(0xf2e90a15e33edf99),CNST_LIMB(0x36ef0c3b39b92f)), + P(1201,CNST_LIMB(0x8e99e5feb897c451),CNST_LIMB(0x36915f47d55e6d)), + P(1213,CNST_LIMB(0xaca2eda38fb91695),CNST_LIMB(0x36072cf3f866fd)), + P(1217,CNST_LIMB(0x5d9b737be5ea8b41),CNST_LIMB(0x35d9b737be5ea8)), + P(1223,CNST_LIMB(0x4aefe1db93fd7cf7),CNST_LIMB(0x35961559cc81c7)), + P(1229,CNST_LIMB(0xa0994ef20b3f8805),CNST_LIMB(0x35531c897a4592)), + P(1231,CNST_LIMB(0x103890bda912822f),CNST_LIMB(0x353ceebd3e98a4)), + P(1237,CNST_LIMB(0xb441659d13a9147d),CNST_LIMB(0x34fad381585e5e)), + P(1249,CNST_LIMB(0x1e2134440c4c3f21),CNST_LIMB(0x347884d1103130)), + P(1259,CNST_LIMB(0x263a27727a6883c3),CNST_LIMB(0x340dd3ac39bf56)), + P(1277,CNST_LIMB(0x78e221472ab33855),CNST_LIMB(0x3351fdfecc140c)), + P(1279,CNST_LIMB(0x95eac88e82e6faff),CNST_LIMB(0x333d72b089b524)), + P(1283,CNST_LIMB(0xf66c258317be8dab),CNST_LIMB(0x33148d44d6b261)), + P(1289,CNST_LIMB(0x9ee202c7cb91939),CNST_LIMB(0x32d7aef8412458)), + P(1291,CNST_LIMB(0x8d2fca1042a09ea3),CNST_LIMB(0x32c3850e79c0f1)), + P(1297,CNST_LIMB(0x82779c856d8b8bf1),CNST_LIMB(0x328766d59048a2)), + P(1301,CNST_LIMB(0x3879361cba8a223d),CNST_LIMB(0x325fa18cb11833)), + P(1303,CNST_LIMB(0xf23f43639c3182a7),CNST_LIMB(0x324bd659327e22)), + P(1307,CNST_LIMB(0xa03868fc474bcd13),CNST_LIMB(0x32246e784360f4)), + P(1319,CNST_LIMB(0x651e78b8c5311a97),CNST_LIMB(0x31afa5f1a33a08)), + P(1321,CNST_LIMB(0x8ffce639c00c6719),CNST_LIMB(0x319c63ff398e70)), + P(1327,CNST_LIMB(0xf7b460754b0b61cf),CNST_LIMB(0x3162f7519a86a7)), + P(1361,CNST_LIMB(0x7b03f3359b8e63b1),CNST_LIMB(0x30271fc9d3fc3c)), + P(1367,CNST_LIMB(0xa55c5326041eb667),CNST_LIMB(0x2ff104ae89750b)), + P(1373,CNST_LIMB(0x647f88ab896a76f5),CNST_LIMB(0x2fbb62a236d133)), + P(1381,CNST_LIMB(0x8fd971434a55a46d),CNST_LIMB(0x2f74997d2070b4)), + P(1399,CNST_LIMB(0x9fbf969958046447),CNST_LIMB(0x2ed84aa8b6fce3)), + P(1409,CNST_LIMB(0x9986feba69be3a81),CNST_LIMB(0x2e832df7a46dbd)), + P(1423,CNST_LIMB(0xa668b3e6d053796f),CNST_LIMB(0x2e0e0846857cab)), + P(1427,CNST_LIMB(0x97694e6589f4e09b),CNST_LIMB(0x2decfbdfb55ee6)), + P(1429,CNST_LIMB(0x37890c00b7721dbd),CNST_LIMB(0x2ddc876f3ff488)), + P(1433,CNST_LIMB(0x5ac094a235f37ea9),CNST_LIMB(0x2dbbc1d4c482c4)), + P(1439,CNST_LIMB(0x31cff775f2d5d65f),CNST_LIMB(0x2d8af0e0de0556)), + P(1447,CNST_LIMB(0xddad8e6b36505217),CNST_LIMB(0x2d4a7b7d14b30a)), + P(1451,CNST_LIMB(0x5a27df897062cd03),CNST_LIMB(0x2d2a85073bcf4e)), + P(1453,CNST_LIMB(0xe2396fe0fdb5a625),CNST_LIMB(0x2d1a9ab13e8be4)), + P(1459,CNST_LIMB(0xb352a4957e82317b),CNST_LIMB(0x2ceb1eb4b9fd8b)), + P(1471,CNST_LIMB(0xd8ab3f2c60c2ea3f),CNST_LIMB(0x2c8d503a79794c)), + P(1481,CNST_LIMB(0x6893f702f0452479),CNST_LIMB(0x2c404d708784ed)), + P(1483,CNST_LIMB(0x9686fdc182acf7e3),CNST_LIMB(0x2c31066315ec52)), + P(1487,CNST_LIMB(0x6854037173dce12f),CNST_LIMB(0x2c1297d80f2664)), + P(1489,CNST_LIMB(0x7f0ded1685c27331),CNST_LIMB(0x2c037044c55f6b)), + P(1493,CNST_LIMB(0xeeda72e1fe490b7d),CNST_LIMB(0x2be5404cd13086)), + P(1499,CNST_LIMB(0x9e7bfc959a8e6e53),CNST_LIMB(0x2bb845adaf0cce)), + P(1511,CNST_LIMB(0x49b314d6d4753dd7),CNST_LIMB(0x2b5f62c639f16d)), + P(1523,CNST_LIMB(0x2e8f8c5ac4aa1b3b),CNST_LIMB(0x2b07e6734f2b88)), + P(1531,CNST_LIMB(0xb8ef723481163d33),CNST_LIMB(0x2ace569d8342b7)), + P(1543,CNST_LIMB(0x6a2ec96a594287b7),CNST_LIMB(0x2a791d5dbd4dcf)), + P(1549,CNST_LIMB(0xdba41c6d13aab8c5),CNST_LIMB(0x2a4eff8113017c)), + P(1553,CNST_LIMB(0xc2adbe648dc3aaf1),CNST_LIMB(0x2a3319e156df32)), + P(1559,CNST_LIMB(0x87a2bade565f91a7),CNST_LIMB(0x2a0986286526ea)), + P(1567,CNST_LIMB(0x4d6fe8798c01f5df),CNST_LIMB(0x29d29551d91e39)), + P(1571,CNST_LIMB(0x3791310c8c23d98b),CNST_LIMB(0x29b7529e109f0a)), + P(1579,CNST_LIMB(0xf80e446b01228883),CNST_LIMB(0x298137491ea465)), + P(1583,CNST_LIMB(0x9aed1436fbf500cf),CNST_LIMB(0x29665e1eb9f9da)), + P(1597,CNST_LIMB(0x7839b54cc8b24115),CNST_LIMB(0x2909752e019a5e)), + P(1601,CNST_LIMB(0xc128c646ad0309c1),CNST_LIMB(0x28ef35e2e5efb0)), + P(1607,CNST_LIMB(0x14de631624a3c377),CNST_LIMB(0x28c815aa4b8278)), + P(1609,CNST_LIMB(0x3f7b9fe68b0ecbf9),CNST_LIMB(0x28bb1b867199da)), + P(1613,CNST_LIMB(0x284ffd75ec00a285),CNST_LIMB(0x28a13ff5d7b002)), + P(1619,CNST_LIMB(0x37803cb80dea2ddb),CNST_LIMB(0x287ab3f173e755)), + P(1621,CNST_LIMB(0x86b63f7c9ac4c6fd),CNST_LIMB(0x286dead67713bd)), + P(1627,CNST_LIMB(0x8b6851d1bd99b9d3),CNST_LIMB(0x2847bfcda6503e)), + P(1637,CNST_LIMB(0xb62fda77ca343b6d),CNST_LIMB(0x2808c1ea6b4777)), + P(1657,CNST_LIMB(0x1f0dc009e34383c9),CNST_LIMB(0x278d0e0f23ff61)), + P(1663,CNST_LIMB(0x496dc21ddd35b97f),CNST_LIMB(0x2768863c093c7f)), + P(1667,CNST_LIMB(0xb0e96ce17090f82b),CNST_LIMB(0x27505115a73ca8)), + P(1669,CNST_LIMB(0xaadf05acdd7d024d),CNST_LIMB(0x274441a61dc1b9)), + P(1693,CNST_LIMB(0xcb138196746eafb5),CNST_LIMB(0x26b5c166113cf0)), + P(1697,CNST_LIMB(0x347f523736755d61),CNST_LIMB(0x269e65ad07b18e)), + P(1699,CNST_LIMB(0xd14a48a051f7dd0b),CNST_LIMB(0x2692c25f877560)), + P(1709,CNST_LIMB(0x474d71b1ce914d25),CNST_LIMB(0x2658fa7523cd11)), + P(1721,CNST_LIMB(0x386063f5e28c1f89),CNST_LIMB(0x26148710cf0f9e)), + P(1723,CNST_LIMB(0x1db7325e32d04e73),CNST_LIMB(0x2609363b22524f)), + P(1733,CNST_LIMB(0xfef748d3893b880d),CNST_LIMB(0x25d1065a1c1122)), + P(1741,CNST_LIMB(0x2f3351506e935605),CNST_LIMB(0x25a48a382b863f)), + P(1747,CNST_LIMB(0x7a3637fa2376415b),CNST_LIMB(0x25837190eccdbc)), + P(1753,CNST_LIMB(0x4ac525d2baa21969),CNST_LIMB(0x256292e95d510c)), + P(1759,CNST_LIMB(0x3a11c16b42cd351f),CNST_LIMB(0x2541eda98d068c)), + P(1777,CNST_LIMB(0x6c7abde0049c2a11),CNST_LIMB(0x24e15087fed8f5)), + P(1783,CNST_LIMB(0x54dad0303e069ac7),CNST_LIMB(0x24c18b20979e5d)), + P(1787,CNST_LIMB(0xebf1ac9fdfe91433),CNST_LIMB(0x24ac7b336de0c5)), + P(1789,CNST_LIMB(0xfafdda8237cec655),CNST_LIMB(0x24a1fc478c60bb)), + P(1801,CNST_LIMB(0xdce3ff6e71ffb739),CNST_LIMB(0x2463801231c009)), + P(1811,CNST_LIMB(0xbed5737d6286db1b),CNST_LIMB(0x24300fd506ed33)), + P(1823,CNST_LIMB(0xe479e431fe08b4df),CNST_LIMB(0x23f314a494da81)), + P(1831,CNST_LIMB(0x9dd9b0dd7742f897),CNST_LIMB(0x23cadedd2fad3a)), + P(1847,CNST_LIMB(0x8f09d7402c5a5e87),CNST_LIMB(0x237b7ed2664a03)), + P(1861,CNST_LIMB(0x9216d5c4d958738d),CNST_LIMB(0x23372967dbaf1d)), + P(1867,CNST_LIMB(0xb3139ba11d34ca63),CNST_LIMB(0x231a308a371f20)), + P(1871,CNST_LIMB(0x47d54f7ed644afaf),CNST_LIMB(0x2306fa63e1e600)), + P(1873,CNST_LIMB(0x92a81d85cf11a1b1),CNST_LIMB(0x22fd6731575684)), + P(1877,CNST_LIMB(0x754b26533253bdfd),CNST_LIMB(0x22ea507805749c)), + P(1879,CNST_LIMB(0xbbe0efc980bfd467),CNST_LIMB(0x22e0cce8b3d720)), + P(1889,CNST_LIMB(0xc0d8d594f024dca1),CNST_LIMB(0x22b1887857d161)), + P(1901,CNST_LIMB(0x8238d43bcaac1a65),CNST_LIMB(0x227977fcc49cc0)), + P(1907,CNST_LIMB(0x27779c1fae6175bb),CNST_LIMB(0x225db37b5e5f4f)), + P(1913,CNST_LIMB(0xa746ca9af708b2c9),CNST_LIMB(0x22421b91322ed6)), + P(1931,CNST_LIMB(0x93f3cd9f389be823),CNST_LIMB(0x21f05b35f52102)), + P(1933,CNST_LIMB(0x5cb4a4c04c489345),CNST_LIMB(0x21e75de5c70d60)), + P(1949,CNST_LIMB(0xbf6047743e85b6b5),CNST_LIMB(0x21a01d6c19be96)), + P(1951,CNST_LIMB(0x61c147831563545f),CNST_LIMB(0x21974a6615c81a)), + P(1973,CNST_LIMB(0xedb47c0ae62dee9d),CNST_LIMB(0x213767697cf36a)), + P(1979,CNST_LIMB(0xa3824386673a573),CNST_LIMB(0x211d9f7fad35f1)), + P(1987,CNST_LIMB(0xa4a77d19e575a0eb),CNST_LIMB(0x20fb7d9dd36c18)), + P(1993,CNST_LIMB(0xa2bee045e066c279),CNST_LIMB(0x20e2123d661e0e)), + P(1997,CNST_LIMB(0xc23618de8ab43d05),CNST_LIMB(0x20d135b66ae990)), + P(1999,CNST_LIMB(0x266b515216cb9f2f),CNST_LIMB(0x20c8cded4d7a8e)), + P(2003,CNST_LIMB(0xe279edd9e9c2e85b),CNST_LIMB(0x20b80b3f43ddbf)), + P(2011,CNST_LIMB(0xd0c591c221dc9c53),CNST_LIMB(0x2096b9180f46a6)), + P(2017,CNST_LIMB(0x6da8ee9c9ee7c21),CNST_LIMB(0x207de7e28de5da)), + P(2027,CNST_LIMB(0x9dfebcaf4c27e8c3),CNST_LIMB(0x2054dec8cf1fb3)), + P(2029,CNST_LIMB(0x49aeff9f19dd6de5),CNST_LIMB(0x204cb630b3aab5)), + P(2039,CNST_LIMB(0x86976a57a296e9c7),CNST_LIMB(0x202428adc37beb)), + P(2053,CNST_LIMB(0xa3b9abf4872b84cd),CNST_LIMB(0x1fec0c7834def4)), + P(2063,CNST_LIMB(0x34fca6483895e6ef),CNST_LIMB(0x1fc46fae98a1d0)), + P(2069,CNST_LIMB(0x34b5a333988f873d),CNST_LIMB(0x1facda430ff619)), + P(2081,CNST_LIMB(0xd9dd4f19b5f17be1),CNST_LIMB(0x1f7e17dd8e15e5)), + P(2083,CNST_LIMB(0xb935b507fd0ce78b),CNST_LIMB(0x1f765a3556a4ee)), + P(2087,CNST_LIMB(0xb450f5540660e797),CNST_LIMB(0x1f66ea49d802f1)), + P(2089,CNST_LIMB(0x63ff82831ffc1419),CNST_LIMB(0x1f5f3800faf9c0)), + P(2099,CNST_LIMB(0x8992f718c22a32fb),CNST_LIMB(0x1f38f4e6c0f1f9)), + P(2111,CNST_LIMB(0x5f3253ad0d37e7bf),CNST_LIMB(0x1f0b8546752578)), + P(2113,CNST_LIMB(0x7c0ffe0fc007c1),CNST_LIMB(0x1f03ff83f001f0)), + P(2129,CNST_LIMB(0x4d8ebadc0c0640b1),CNST_LIMB(0x1ec853b0a3883c)), + P(2131,CNST_LIMB(0xe2729af831037bdb),CNST_LIMB(0x1ec0ee573723eb)), + P(2137,CNST_LIMB(0xb8f64bf30feebfe9),CNST_LIMB(0x1eaad38e6f6894)), + P(2141,CNST_LIMB(0xda93124b544c0bf5),CNST_LIMB(0x1e9c28a765fe53)), + P(2143,CNST_LIMB(0x9cf7ff0b593c539f),CNST_LIMB(0x1e94d8758c2003)), + P(2153,CNST_LIMB(0xd6bd8861fa0e07d9),CNST_LIMB(0x1e707ba8f65e68)), + P(2161,CNST_LIMB(0x5cfe75c0bd8ab891),CNST_LIMB(0x1e53a2a68f574e)), + P(2179,CNST_LIMB(0x43e808757c2e862b),CNST_LIMB(0x1e1380a56b438d)), + P(2203,CNST_LIMB(0x90caa96d595c9d93),CNST_LIMB(0x1dbf9f513a3802)), + P(2207,CNST_LIMB(0x8fd550625d07135f),CNST_LIMB(0x1db1d1d58bc600)), + P(2213,CNST_LIMB(0x76b010a86e209f2d),CNST_LIMB(0x1d9d358f53de38)), + P(2221,CNST_LIMB(0xecc0426447769b25),CNST_LIMB(0x1d81e6df6165c7)), + P(2237,CNST_LIMB(0xe381339caabe3295),CNST_LIMB(0x1d4bdf7fd40e30)), + P(2239,CNST_LIMB(0xd1b190a2d0c7673f),CNST_LIMB(0x1d452c7a1c958d)), + P(2243,CNST_LIMB(0xc3bce3cf26b0e7eb),CNST_LIMB(0x1d37cf9b902659)), + P(2251,CNST_LIMB(0x5f87e76f56c61ce3),CNST_LIMB(0x1d1d3a5791e97b)), + P(2267,CNST_LIMB(0xc06c6857a124b353),CNST_LIMB(0x1ce89fe6b47416)), + P(2269,CNST_LIMB(0x38c040fcba630f75),CNST_LIMB(0x1ce219f3235071)), + P(2273,CNST_LIMB(0xd078bc4fbd533b21),CNST_LIMB(0x1cd516dcf92139)), + P(2281,CNST_LIMB(0xde8e15c5dd354f59),CNST_LIMB(0x1cbb33bd1c2b8b)), + P(2287,CNST_LIMB(0xca61d53d7414260f),CNST_LIMB(0x1ca7e7d2546688)), + P(2293,CNST_LIMB(0xb56bf5ba8eae635d),CNST_LIMB(0x1c94b5c1b3dbd3)), + P(2297,CNST_LIMB(0x44a72cb0fb6e3949),CNST_LIMB(0x1c87f7f9c241c1)), + P(2309,CNST_LIMB(0x879839a714f45bcd),CNST_LIMB(0x1c6202706c35a9)), + P(2311,CNST_LIMB(0x2a8994fde5314b7),CNST_LIMB(0x1c5bb8a9437632)), + P(2333,CNST_LIMB(0xb971920cf2b90135),CNST_LIMB(0x1c174343b4111e)), + P(2339,CNST_LIMB(0x8a8fd0b7df9a6e8b),CNST_LIMB(0x1c04d0d3e46b42)), + P(2341,CNST_LIMB(0xb31f9a84c1c6eaad),CNST_LIMB(0x1bfeb00fbf4308)), + P(2347,CNST_LIMB(0x92293b02823c6d83),CNST_LIMB(0x1bec5dce0b202d)), + P(2351,CNST_LIMB(0xeee77ff20fe5ddcf),CNST_LIMB(0x1be03444620037)), + P(2357,CNST_LIMB(0xe1ea0f6c496c11d),CNST_LIMB(0x1bce09c66f6fc3)), + P(2371,CNST_LIMB(0xfdf2d3d6f88ccb6b),CNST_LIMB(0x1ba40228d02b30)), + P(2377,CNST_LIMB(0xfa9d74a3457738f9),CNST_LIMB(0x1b9225b1cf8919)), + P(2381,CNST_LIMB(0xefc3ca3db71a5785),CNST_LIMB(0x1b864a2ff3f53f)), + P(2383,CNST_LIMB(0x8e2071718d0d6daf),CNST_LIMB(0x1b80604150e49b)), + P(2389,CNST_LIMB(0xbc0fdbfeb6cfabfd),CNST_LIMB(0x1b6eb1aaeaacf3)), + P(2393,CNST_LIMB(0x1eeab613e5e5aee9),CNST_LIMB(0x1b62f48da3c8cc)), + P(2399,CNST_LIMB(0x2d2388e90e9e929f),CNST_LIMB(0x1b516babe96092)), + P(2411,CNST_LIMB(0x81dbafba588ddb43),CNST_LIMB(0x1b2e9cef1e0c87)), + P(2417,CNST_LIMB(0x52eebc51c4799791),CNST_LIMB(0x1b1d56bedc849b)), + P(2423,CNST_LIMB(0x1c6bc4693b45a047),CNST_LIMB(0x1b0c267546aec0)), + P(2437,CNST_LIMB(0x6eee0974498874d),CNST_LIMB(0x1ae45f62024fa0)), + P(2441,CNST_LIMB(0xd85b7377a9953cb9),CNST_LIMB(0x1ad917631b5f54)), + P(2447,CNST_LIMB(0x4b6df412d4caf56f),CNST_LIMB(0x1ac83d18cb608f)), + P(2459,CNST_LIMB(0x6b8afbbb4a053493),CNST_LIMB(0x1aa6c7ad8c063f)), + P(2467,CNST_LIMB(0xcc5299c96ac7720b),CNST_LIMB(0x1a90a7b1228e2a)), + P(2473,CNST_LIMB(0xadce84b5c710aa99),CNST_LIMB(0x1a8027c03ba059)), + P(2477,CNST_LIMB(0x9d673f5aa3804225),CNST_LIMB(0x1a7533289deb89)), + P(2503,CNST_LIMB(0xe6541268efbce7f7),CNST_LIMB(0x1a2ed7ce16b49f)), + P(2521,CNST_LIMB(0xfcf41e76cf5be669),CNST_LIMB(0x19fefc0a279a73)), + P(2531,CNST_LIMB(0x5c3eb5dc31c383cb),CNST_LIMB(0x19e4b0cd873b5f)), + P(2539,CNST_LIMB(0x301832d11d8ad6c3),CNST_LIMB(0x19cfcdfd60e514)), + P(2543,CNST_LIMB(0x2e9c0942f1ce450f),CNST_LIMB(0x19c56932d66c85)), + P(2549,CNST_LIMB(0x97f3f2be37a39a5d),CNST_LIMB(0x19b5e1ab6fc7c2)), + P(2551,CNST_LIMB(0xe8b7d8a9654187c7),CNST_LIMB(0x19b0b8a62f2a73)), + P(2557,CNST_LIMB(0xb5d024d7da5b1b55),CNST_LIMB(0x19a149fc98942c)), + P(2579,CNST_LIMB(0xb8ba9d6e7ae3501b),CNST_LIMB(0x1969517ec25b85)), + P(2591,CNST_LIMB(0xf50865f71b90f1df),CNST_LIMB(0x194b3083360ba8)), + P(2593,CNST_LIMB(0x739c1682847df9e1),CNST_LIMB(0x194631f4bebdc1)), + P(2609,CNST_LIMB(0xc470a4d842b90ed1),CNST_LIMB(0x191e84127268fd)), + P(2617,CNST_LIMB(0x1fb1be11698cc409),CNST_LIMB(0x190adbb543984f)), + P(2621,CNST_LIMB(0xd8d5512a7cd35d15),CNST_LIMB(0x1901130bd18200)), + P(2633,CNST_LIMB(0xa5496821723e07f9),CNST_LIMB(0x18e3e6b889ac94)), + P(2647,CNST_LIMB(0xbcc8c6d7abaa8167),CNST_LIMB(0x18c233420e1ec1)), + P(2657,CNST_LIMB(0x52c396c95eb619a1),CNST_LIMB(0x18aa5872d92bd6)), + P(2659,CNST_LIMB(0x6eb7e380878ec74b),CNST_LIMB(0x18a5989945ccf9)), + P(2663,CNST_LIMB(0x3d5513b504537157),CNST_LIMB(0x189c1e60b57f60)), + P(2671,CNST_LIMB(0x314391f8862e948f),CNST_LIMB(0x18893fbc8690b9)), + P(2677,CNST_LIMB(0xdc0b17cfcd81f5dd),CNST_LIMB(0x187b2bb3e1041c)), + P(2683,CNST_LIMB(0x2f6bea3ec89044b3),CNST_LIMB(0x186d27c9cdcfb8)), + P(2687,CNST_LIMB(0xce13a05869f1b57f),CNST_LIMB(0x1863d8bf4f2c1c)), + P(2689,CNST_LIMB(0x7593474e8ace3581),CNST_LIMB(0x185f33e2ad7593)), + P(2693,CNST_LIMB(0x7fc329295a05e4d),CNST_LIMB(0x1855ef75973e13)), + P(2699,CNST_LIMB(0xb05377cba4908d23),CNST_LIMB(0x1848160153f134)), + P(2707,CNST_LIMB(0xe7b2131a628aa39b),CNST_LIMB(0x1835b72e6f0656)), + P(2711,CNST_LIMB(0x9031dbed7de01527),CNST_LIMB(0x182c922d83eb39)), + P(2713,CNST_LIMB(0x76844b1c670aa9a9),CNST_LIMB(0x18280243c0365a)), + P(2719,CNST_LIMB(0x6a03f4533b08915f),CNST_LIMB(0x181a5cd5898e73)), + P(2729,CNST_LIMB(0x1dbca579db0a3999),CNST_LIMB(0x1803c0961773aa)), + P(2731,CNST_LIMB(0x2ffe800bffa003),CNST_LIMB(0x17ff4005ffd001)), + P(2741,CNST_LIMB(0x478ab1a3e936139d),CNST_LIMB(0x17e8d670433edb)), + P(2749,CNST_LIMB(0x66e722bc4c5cc095),CNST_LIMB(0x17d7066cf4bb5d)), + P(2753,CNST_LIMB(0x7a8f63c717278541),CNST_LIMB(0x17ce285b806b1f)), + P(2767,CNST_LIMB(0xdf6eee24d292bc2f),CNST_LIMB(0x17af52cdf27e02)), + P(2777,CNST_LIMB(0x9fc20d17237dd569),CNST_LIMB(0x17997d47d01039)), + P(2789,CNST_LIMB(0xcdf9932356bda2ed),CNST_LIMB(0x177f7ec2c6d0ba)), + P(2791,CNST_LIMB(0x97b5e332e80f68d7),CNST_LIMB(0x177b2f3cd00756)), + P(2797,CNST_LIMB(0x46eee26fd875e2e5),CNST_LIMB(0x176e4a22f692a0)), + P(2801,CNST_LIMB(0x3548a8e65157a611),CNST_LIMB(0x1765b94271e11b)), + P(2803,CNST_LIMB(0xc288d03be9b71e3b),CNST_LIMB(0x1761732b044ae4)), + P(2819,CNST_LIMB(0x8151186db38937ab),CNST_LIMB(0x173f7a5300a2bc)), + P(2833,CNST_LIMB(0x7800b910895a45f1),CNST_LIMB(0x1722112b48be1f)), + P(2837,CNST_LIMB(0xaee0b024182eec3d),CNST_LIMB(0x1719b7a16eb843)), + P(2843,CNST_LIMB(0x96323eda173b5713),CNST_LIMB(0x170d3c99cc5052)), + P(2851,CNST_LIMB(0xed0dbd03ae77c8b),CNST_LIMB(0x16fcad7aed3bb6)), + P(2857,CNST_LIMB(0xf73800b7828dc119),CNST_LIMB(0x16f051b8231ffd)), + P(2861,CNST_LIMB(0x1b61715ec22b7ca5),CNST_LIMB(0x16e81beae20643)), + P(2879,CNST_LIMB(0xa8533a991ead64bf),CNST_LIMB(0x16c3721584c1d8)), + P(2887,CNST_LIMB(0x7f6c7290e46c2e77),CNST_LIMB(0x16b34c2ba09663)), + P(2897,CNST_LIMB(0x6325e8d907b01db1),CNST_LIMB(0x169f3ce292ddcd)), + P(2903,CNST_LIMB(0x28909f70152a1067),CNST_LIMB(0x169344b2220a0d)), + P(2909,CNST_LIMB(0xea7077af0997a0f5),CNST_LIMB(0x1687592593c1b1)), + P(2917,CNST_LIMB(0x7e605cad10c32e6d),CNST_LIMB(0x167787f1418ec9)), + P(2927,CNST_LIMB(0x471b33570635b38f),CNST_LIMB(0x1663e190395ff2)), + P(2939,CNST_LIMB(0xab559fa997a61bb3),CNST_LIMB(0x164c7a4b6eb5b3)), + P(2953,CNST_LIMB(0xad4bdae562bddab9),CNST_LIMB(0x16316a061182fd)), + P(2957,CNST_LIMB(0x55e1b2f2ed62f45),CNST_LIMB(0x1629ba914584e4)), + P(2963,CNST_LIMB(0x3cd328b1a2dca9b),CNST_LIMB(0x161e3d57de21b2)), + P(2969,CNST_LIMB(0xd28f4e08733218a9),CNST_LIMB(0x1612cc01b977f0)), + P(2971,CNST_LIMB(0xb6800b077f186293),CNST_LIMB(0x160efe30c525ff)), + P(2999,CNST_LIMB(0x6fbd138c3fd9c207),CNST_LIMB(0x15da45249ec5de)), + P(3001,CNST_LIMB(0xb117ccd12ae88a89),CNST_LIMB(0x15d68ab4acff92)), + P(3011,CNST_LIMB(0x2f1a1a044046bceb),CNST_LIMB(0x15c3f989d1eb15)), + P(3019,CNST_LIMB(0x548aba0b060541e3),CNST_LIMB(0x15b535ad11b8f0)), + P(3023,CNST_LIMB(0xcf4e808cea111b2f),CNST_LIMB(0x15addb3f424ec1)), + P(3037,CNST_LIMB(0xdbec1b4fa855a475),CNST_LIMB(0x159445cb91be6b)), + P(3041,CNST_LIMB(0xe3f794eb600d7821),CNST_LIMB(0x158d0199771e63)), + P(3049,CNST_LIMB(0x34fae0d9a11f7c59),CNST_LIMB(0x157e87d9b69e04)), + P(3061,CNST_LIMB(0xf006b0ccbbac085d),CNST_LIMB(0x1568f58bc01ac3)), + P(3067,CNST_LIMB(0x3f45076dc3114733),CNST_LIMB(0x155e3c993fda9b)), + P(3079,CNST_LIMB(0xeef49bfa58a1a1b7),CNST_LIMB(0x1548eacc5e1e6e)), + P(3083,CNST_LIMB(0x12c4218bea691fa3),CNST_LIMB(0x1541d8f91ba6a7)), + P(3089,CNST_LIMB(0xbc7504e3bd5e64f1),CNST_LIMB(0x153747060cc340)), + P(3109,CNST_LIMB(0x4ee21c292bb92fad),CNST_LIMB(0x1514569f93f7c4)), + P(3119,CNST_LIMB(0x34338b7327a4bacf),CNST_LIMB(0x150309705d3d79)), + P(3121,CNST_LIMB(0x3fe5c0833d6fccd1),CNST_LIMB(0x14ff97020cf5bf)), + P(3137,CNST_LIMB(0xb1e70743535203c1),CNST_LIMB(0x14e42c114cf47e)), + P(3163,CNST_LIMB(0xefbb5dcdfb4e43d3),CNST_LIMB(0x14b835bdcb6447)), + P(3167,CNST_LIMB(0xca68467ca5394f9f),CNST_LIMB(0x14b182b53a9ab7)), + P(3169,CNST_LIMB(0x8c51c081408b97a1),CNST_LIMB(0x14ae2ad094a3d3)), + P(3181,CNST_LIMB(0x3275a899dfa5dd65),CNST_LIMB(0x149a320ea59f96)), + P(3187,CNST_LIMB(0x9e674cb62e1b78bb),CNST_LIMB(0x1490441de1a2fb)), + P(3191,CNST_LIMB(0xa37ff5bb2a998d47),CNST_LIMB(0x1489aacce57200)), + P(3203,CNST_LIMB(0x792a999db131a22b),CNST_LIMB(0x1475f82ad6ff99)), + P(3209,CNST_LIMB(0x1b48841bc30d29b9),CNST_LIMB(0x146c2cfe53204f)), + P(3217,CNST_LIMB(0xf06721d2011d3471),CNST_LIMB(0x145f2ca490d4a1)), + P(3221,CNST_LIMB(0x93fd2386dff85ebd),CNST_LIMB(0x1458b2aae0ec87)), + P(3229,CNST_LIMB(0x4ce72f54c07ed9b5),CNST_LIMB(0x144bcb0a3a3150)), + P(3251,CNST_LIMB(0xd6d0fd3e71dd827b),CNST_LIMB(0x1428a1e65441d4)), + P(3253,CNST_LIMB(0x856405fb1eed819d),CNST_LIMB(0x142575a6c210d7)), + P(3257,CNST_LIMB(0x8ea8aceb7c443989),CNST_LIMB(0x141f2025ba5c46)), + P(3259,CNST_LIMB(0x34a13026f62e5873),CNST_LIMB(0x141bf6e35420fd)), + P(3271,CNST_LIMB(0x1eea0208ec0af4f7),CNST_LIMB(0x1409141d1d313a)), + P(3299,CNST_LIMB(0x63679853cea598cb),CNST_LIMB(0x13dd8bc19c3513)), + P(3301,CNST_LIMB(0xc30b3ebd61f2d0ed),CNST_LIMB(0x13da76f714dc8f)), + P(3307,CNST_LIMB(0x7eb9037bc7f43bc3),CNST_LIMB(0x13d13e50f8f49e)), + P(3313,CNST_LIMB(0xa583e6f6ce016411),CNST_LIMB(0x13c80e37ca3819)), + P(3319,CNST_LIMB(0xf1938d895f1a74c7),CNST_LIMB(0x13bee69fa99ccf)), + P(3323,CNST_LIMB(0x80cf1491c1e81e33),CNST_LIMB(0x13b8d0ede55835)), + P(3329,CNST_LIMB(0x3c0f12886ba8f301),CNST_LIMB(0x13afb7680bb054)), + P(3331,CNST_LIMB(0xe4b786e0dfcc5ab),CNST_LIMB(0x13acb0c3841c96)), + P(3343,CNST_LIMB(0x672684c93f2d41ef),CNST_LIMB(0x139a9c5f434fde)), + P(3347,CNST_LIMB(0xe00757badb35c51b),CNST_LIMB(0x13949cf33a0d9d)), + P(3359,CNST_LIMB(0xd6d84afe66472edf),CNST_LIMB(0x1382b4a00c31b0)), + P(3361,CNST_LIMB(0xfbbc0eedcbbfb6e1),CNST_LIMB(0x137fbbc0eedcbb)), + P(3371,CNST_LIMB(0x250f43aa08a84983),CNST_LIMB(0x1370ecf047b069)), + P(3373,CNST_LIMB(0x4400e927b1acaa5),CNST_LIMB(0x136df9790e3155)), + P(3389,CNST_LIMB(0x56572be34b9d3215),CNST_LIMB(0x13567dd8defd5b)), + P(3391,CNST_LIMB(0x87964ef7781c62bf),CNST_LIMB(0x13539261fdbc34)), + P(3407,CNST_LIMB(0x29ed84051c06e9af),CNST_LIMB(0x133c564292d28a)), + P(3413,CNST_LIMB(0xb00acd11ed3f87fd),CNST_LIMB(0x1333ae178d6388)), + P(3433,CNST_LIMB(0x6307881744152d9),CNST_LIMB(0x13170ad00d1fd7)), + P(3449,CNST_LIMB(0x7a786459f5c1ccc9),CNST_LIMB(0x13005f01db0947)), + P(3457,CNST_LIMB(0x1308125d74563281),CNST_LIMB(0x12f51d40342210)), + P(3461,CNST_LIMB(0x395310a480b3e34d),CNST_LIMB(0x12ef815e4ed950)), + P(3463,CNST_LIMB(0x35985baa8b202837),CNST_LIMB(0x12ecb4abccd827)), + P(3467,CNST_LIMB(0x96304a6e052b3223),CNST_LIMB(0x12e71dc1d3d820)), + P(3469,CNST_LIMB(0xbd8265fc9af8fd45),CNST_LIMB(0x12e45389a16495)), + P(3491,CNST_LIMB(0x1b6d0b383ec58e0b),CNST_LIMB(0x12c5d9226476cc)), + P(3499,CNST_LIMB(0xc21a7c3b68b28503),CNST_LIMB(0x12badc391156fd)), + P(3511,CNST_LIMB(0x236fa180fbfd6007),CNST_LIMB(0x12aa78e412f522)), + P(3517,CNST_LIMB(0xc42accd440ed9595),CNST_LIMB(0x12a251f5f47fd1)), + P(3527,CNST_LIMB(0x7acf7128236ba3f7),CNST_LIMB(0x1294cb85c53534)), + P(3529,CNST_LIMB(0xf909367a987b9c79),CNST_LIMB(0x12921963beb65e)), + P(3533,CNST_LIMB(0xb64efb252bfba705),CNST_LIMB(0x128cb777c69ca8)), + P(3539,CNST_LIMB(0x980d4f5a7e4cd25b),CNST_LIMB(0x1284aa6cf07294)), + P(3541,CNST_LIMB(0xe1ecc4ef27b0c37d),CNST_LIMB(0x1281fcf6ac7f87)), + P(3547,CNST_LIMB(0x9111aebb81d72653),CNST_LIMB(0x1279f937367db9)), + P(3557,CNST_LIMB(0x8951f985cb2c67ed),CNST_LIMB(0x126cad0488be94)), + P(3559,CNST_LIMB(0xc439d4fc54e0b5d7),CNST_LIMB(0x126a06794646a2)), + P(3571,CNST_LIMB(0xe857bf31896d533b),CNST_LIMB(0x125a2f2bcd3e95)), + P(3581,CNST_LIMB(0xb614bb4cb5023755),CNST_LIMB(0x124d108389e6b1)), + P(3583,CNST_LIMB(0x938a89e5473bf1ff),CNST_LIMB(0x124a73083771ac)), + P(3593,CNST_LIMB(0xeac481aca34de039),CNST_LIMB(0x123d6acda0620a)), + P(3607,CNST_LIMB(0x14b961badf4809a7),CNST_LIMB(0x122b4b2917eafd)), + P(3613,CNST_LIMB(0x76784fecba352435),CNST_LIMB(0x122391bfce1e2f)), + P(3617,CNST_LIMB(0xefa689bb58aef5e1),CNST_LIMB(0x121e6f1ea579f2)), + P(3623,CNST_LIMB(0xb2b2c4db9c3a8197),CNST_LIMB(0x1216c09e471568)), + P(3631,CNST_LIMB(0x2503bc992279f8cf),CNST_LIMB(0x120c8cb9d93909)), + P(3637,CNST_LIMB(0xd2ab9aec5ca1541d),CNST_LIMB(0x1204ed58e64ef9)), + P(3643,CNST_LIMB(0x3e78ba1460f99af3),CNST_LIMB(0x11fd546578f00c)), + P(3659,CNST_LIMB(0xa01426572cfcb63),CNST_LIMB(0x11e9310b8b4c9c)), + P(3671,CNST_LIMB(0xbea857968f3cbd67),CNST_LIMB(0x11da3405db9911)), + P(3673,CNST_LIMB(0x78db213eefe659e9),CNST_LIMB(0x11d7b6f4eb055d)), + P(3677,CNST_LIMB(0x963e8541a74d35f5),CNST_LIMB(0x11d2bee748c145)), + P(3691,CNST_LIMB(0x9e22d152776f2e43),CNST_LIMB(0x11c1706ddce7a7)), + P(3697,CNST_LIMB(0x5d10d39d1e1f291),CNST_LIMB(0x11ba0fed2a4f14)), + P(3701,CNST_LIMB(0x374468dccaced1dd),CNST_LIMB(0x11b528538ed64a)), + P(3709,CNST_LIMB(0x8d145c7d110c5ad5),CNST_LIMB(0x11ab61404242ac)), + P(3719,CNST_LIMB(0x3251a39f5acb5737),CNST_LIMB(0x119f378ce81d2f)), + P(3727,CNST_LIMB(0xa66e50171443506f),CNST_LIMB(0x1195889ece79da)), + P(3733,CNST_LIMB(0x124f69ad91dd4cbd),CNST_LIMB(0x118e4c65387077)), + P(3739,CNST_LIMB(0xec24f8f2a61a2793),CNST_LIMB(0x1187161d70e725)), + P(3761,CNST_LIMB(0xb472148e656b7a51),CNST_LIMB(0x116cd6d1c85239)), + P(3767,CNST_LIMB(0xadf9570e1142f07),CNST_LIMB(0x1165bbe7ce86b1)), + P(3769,CNST_LIMB(0x89bf33b065119789),CNST_LIMB(0x11635ee344ce36)), + P(3779,CNST_LIMB(0x8f0149803cb291eb),CNST_LIMB(0x11579767b6d679)), + P(3793,CNST_LIMB(0x8334b63afd190a31),CNST_LIMB(0x114734711e2b54)), + P(3797,CNST_LIMB(0x920908d50d6aba7d),CNST_LIMB(0x11428b90147f05)), + P(3803,CNST_LIMB(0x57d8b018c5a33d53),CNST_LIMB(0x113b92f3021636)), + P(3821,CNST_LIMB(0xea1773092dc27ee5),CNST_LIMB(0x1126cabc886884)), + P(3823,CNST_LIMB(0xcae5f38b7bf2e00f),CNST_LIMB(0x11247eb1b85976)), + P(3833,CNST_LIMB(0x2bd02df34f695349),CNST_LIMB(0x11190bb01efd65)), + P(3847,CNST_LIMB(0xddfecd5be62e2eb7),CNST_LIMB(0x11091de0fd679c)), + P(3851,CNST_LIMB(0xdbf849ebec96c4a3),CNST_LIMB(0x1104963c7e4e0b)), + P(3853,CNST_LIMB(0xda31d4d0187357c5),CNST_LIMB(0x110253516420b0)), + P(3863,CNST_LIMB(0xe34e21cc2d5418a7),CNST_LIMB(0x10f70db7c41797)), + P(3877,CNST_LIMB(0x68ca5137a9e574ad),CNST_LIMB(0x10e75ee2bf9ecd)), + P(3881,CNST_LIMB(0x3eaa0d0f804bfd19),CNST_LIMB(0x10e2e91c6e0676)), + P(3889,CNST_LIMB(0x554fb753cc20e9d1),CNST_LIMB(0x10da049b9d428d)), + P(3907,CNST_LIMB(0x797afcca1300756b),CNST_LIMB(0x10c6248fe3b1a2)), + P(3911,CNST_LIMB(0x8b8d950b52eeea77),CNST_LIMB(0x10c1c03ed690eb)), + P(3917,CNST_LIMB(0xfb6cd166acabc185),CNST_LIMB(0x10bb2e1379e3a2)), + P(3919,CNST_LIMB(0x4eb6c5ed9437a7af),CNST_LIMB(0x10b8fe7f61228e)), + P(3923,CNST_LIMB(0xd1eddbd91b790cdb),CNST_LIMB(0x10b4a10d60a4f7)), + P(3929,CNST_LIMB(0x93d714ea4d8948e9),CNST_LIMB(0x10ae192681ec0f)), + P(3931,CNST_LIMB(0x3ca13ed8145188d3),CNST_LIMB(0x10abecfbe5b0ae)), + P(3943,CNST_LIMB(0x829086016da89c57),CNST_LIMB(0x109eefd568b96d)), + P(3947,CNST_LIMB(0xd7da1f432124a543),CNST_LIMB(0x109a9ff178b40c)), + P(3967,CNST_LIMB(0x7ead5581632fb07f),CNST_LIMB(0x108531e22f9ff9)), + P(3989,CNST_LIMB(0x35443837f63ec3bd),CNST_LIMB(0x106ddec1af4417)), + P(4001,CNST_LIMB(0x89e2b200e5519461),CNST_LIMB(0x10614174a4911d)), + P(4003,CNST_LIMB(0xe9ae44f0b7289c0b),CNST_LIMB(0x105f291f0448e7)), + P(4007,CNST_LIMB(0x94387a277b9fa817),CNST_LIMB(0x105afa0ef32891)), + P(4013,CNST_LIMB(0xc84f1a58abfc2c25),CNST_LIMB(0x1054b777bd2530)), + P(4019,CNST_LIMB(0x71101d8e3c83377b),CNST_LIMB(0x104e79a97fb69e)), + P(4021,CNST_LIMB(0xc024abe5c50ba69d),CNST_LIMB(0x104c661eafd845)), + P(4027,CNST_LIMB(0x15de4eb365a65d73),CNST_LIMB(0x10462ea939c933)), + P(4049,CNST_LIMB(0x9ed28a76bcca931),CNST_LIMB(0x102f8baa442836)), + P(4051,CNST_LIMB(0x816bffbf4a00205b),CNST_LIMB(0x102d7ff7e94004)), + P(4057,CNST_LIMB(0x1f5c71543d558069),CNST_LIMB(0x10275ff9f13c02)), + P(4073,CNST_LIMB(0xf25c64d0ec53b859),CNST_LIMB(0x1017213fcbb4d3)), + P(4079,CNST_LIMB(0x96c02c2ef1e0ff0f),CNST_LIMB(0x101112234579d1)), + P(4091,CNST_LIMB(0x19a804816870a333),CNST_LIMB(0x100501907d271c)), + P(4093,CNST_LIMB(0x6de49add0971c555),CNST_LIMB(0x100300901b0510)), + P(4099,CNST_LIMB(0x528087e684c71aab),CNST_LIMB(0xffd008fe5050f)), + P(4111,CNST_LIMB(0xa94152c269bcdeef),CNST_LIMB(0xff10e02dd5084)), + P(4127,CNST_LIMB(0x379450a3c2b6bdf),CNST_LIMB(0xfe13b9c80c67f)), + P(4129,CNST_LIMB(0xd2cd38bafe5373e1),CNST_LIMB(0xfdf4384be37ad)), + P(4133,CNST_LIMB(0xc29df2bea71d8bad),CNST_LIMB(0xfdb54cbe8766e)), + P(4139,CNST_LIMB(0xc15862775f302e83),CNST_LIMB(0xfd5725ca6ff32)), + P(4153,CNST_LIMB(0x1016af2fe55ede09),CNST_LIMB(0xfc7c84684c6fb)), + P(4157,CNST_LIMB(0x3d26dbd9d1910715),CNST_LIMB(0xfc3e5265dbaa8)), + P(4159,CNST_LIMB(0x621dab2dfaf3dfbf),CNST_LIMB(0xfc1f44e0cae12)), + P(4177,CNST_LIMB(0xb6f1d7ac287338b1),CNST_LIMB(0xfb0921c50a7af)), + P(4201,CNST_LIMB(0x8d9e9f0c3f9e7fd9),CNST_LIMB(0xf999fd70cbc6b)), + P(4211,CNST_LIMB(0x60a93f8762e914bb),CNST_LIMB(0xf9023fd5339d0)), + P(4217,CNST_LIMB(0xb14371f247c159c9),CNST_LIMB(0xf8a78ce671475)), + P(4219,CNST_LIMB(0x6dd3b484471d4eb3),CNST_LIMB(0xf8895fee86574)), + P(4229,CNST_LIMB(0xcd172f4701c1684d),CNST_LIMB(0xf7f2ecb084b10)), + P(4231,CNST_LIMB(0x372e686ed8bb537),CNST_LIMB(0xf7d4eb7d10c29)), + P(4241,CNST_LIMB(0xbc07f7ca65c5b071),CNST_LIMB(0xf73f52277a3c3)), + P(4243,CNST_LIMB(0xab2b6170c3f78d9b),CNST_LIMB(0xf7217c598961c)), + P(4253,CNST_LIMB(0xf3d74f461fe6f5b5),CNST_LIMB(0xf68cbb1448f42)), + P(4259,CNST_LIMB(0xdbc13f4b31f3230b),CNST_LIMB(0xf633d0276e4c5)), + P(4261,CNST_LIMB(0xd1420716e3f1572d),CNST_LIMB(0xf6163ac20ec79)), + P(4271,CNST_LIMB(0xd5be2fd4d805464f),CNST_LIMB(0xf582ba2bc16c6)), + P(4273,CNST_LIMB(0xc68b97c136943851),CNST_LIMB(0xf5654f43290a0)), + P(4283,CNST_LIMB(0x9e27918af7cfb473),CNST_LIMB(0xf4d2a23810bc6)), + P(4289,CNST_LIMB(0x5ec8ab6c36ac7f41),CNST_LIMB(0xf47af4d6a2f27)), + P(4297,CNST_LIMB(0x964076331dd90979),CNST_LIMB(0xf4066f2b6e652)), + P(4327,CNST_LIMB(0x30198eff77b002d7),CNST_LIMB(0xf2555048e3a92)), + P(4337,CNST_LIMB(0x3af7cb9583ece011),CNST_LIMB(0xf1c64588a5bf6)), + P(4339,CNST_LIMB(0x34ce06f643d9883b),CNST_LIMB(0xf1a9be09cb411)), + P(4349,CNST_LIMB(0x79f767e528708c55),CNST_LIMB(0xf11b7d5259d39)), + P(4357,CNST_LIMB(0x185332d2ef2313cd),CNST_LIMB(0xf0aa284e7f802)), + P(4363,CNST_LIMB(0x43b611b84c8332a3),CNST_LIMB(0xf0556e5e3b7f2)), + P(4373,CNST_LIMB(0xc2e215e4f43bb63d),CNST_LIMB(0xefc8bcbc808e5)), + P(4391,CNST_LIMB(0xf94b9dd22ce44e97),CNST_LIMB(0xeecd1a690efbb)), + P(4397,CNST_LIMB(0xd895834a1db166a5),CNST_LIMB(0xee79aed6d65f2)), + P(4409,CNST_LIMB(0x347d2f16d19b8d09),CNST_LIMB(0xedd386114d83a)), + P(4421,CNST_LIMB(0x1b54d4dc45b7d98d),CNST_LIMB(0xed2e44366e5e2)), + P(4423,CNST_LIMB(0x117ac30d9a044877),CNST_LIMB(0xed12cf8e17f64)), + P(4441,CNST_LIMB(0xe10b78a67a526e9),CNST_LIMB(0xec1cd284b2b2d)), + P(4447,CNST_LIMB(0x92da68a818688a9f),CNST_LIMB(0xebcb44cadda1e)), + P(4451,CNST_LIMB(0xcf2b6c87f741f84b),CNST_LIMB(0xeb9505943771d)), + P(4457,CNST_LIMB(0xd264f9bd41e18ed9),CNST_LIMB(0xeb43d57efeadc)), + P(4463,CNST_LIMB(0x733cbeaa97166d8f),CNST_LIMB(0xeaf2dd4c00b03)), + P(4481,CNST_LIMB(0xc9f475b021d22e81),CNST_LIMB(0xea0141c1ba6a6)), + P(4483,CNST_LIMB(0x731f76f2ec4c852b),CNST_LIMB(0xe9e68805f05a7)), + P(4493,CNST_LIMB(0xdaf6f0c978f69945),CNST_LIMB(0xe96142b87e431)), + P(4507,CNST_LIMB(0x749c8ad20c61ec93),CNST_LIMB(0xe8a7acd811b8c)), + P(4513,CNST_LIMB(0x9307ff8bd3c1261),CNST_LIMB(0xe8587db3e001d)), + P(4517,CNST_LIMB(0x334a69fb5a486e2d),CNST_LIMB(0xe823d186d44dc)), + P(4519,CNST_LIMB(0x1f36c7bf31578617),CNST_LIMB(0xe8098463ee194)), + P(4523,CNST_LIMB(0x31ebbcc279ea6103),CNST_LIMB(0xe7d4fbfb3ee1d)), + P(4547,CNST_LIMB(0x42e2aad119f466eb),CNST_LIMB(0xe69bba6981ffa)), + P(4549,CNST_LIMB(0x106ec05a0ab1450d),CNST_LIMB(0xe681c5cf7d707)), + P(4561,CNST_LIMB(0xb1b38db92a99e731),CNST_LIMB(0xe5e684930e334)), + P(4567,CNST_LIMB(0x784ae377e67071e7),CNST_LIMB(0xe5993247dc92d)), + P(4583,CNST_LIMB(0x3e9e1471ba6671d7),CNST_LIMB(0xe4cbfee201016)), + P(4591,CNST_LIMB(0x82c29b59d4d73d0f),CNST_LIMB(0xe465ee7daf979)), + P(4597,CNST_LIMB(0xc23dd07128b5525d),CNST_LIMB(0xe4199de07af5c)), + P(4603,CNST_LIMB(0x4d4e5ce0e9245133),CNST_LIMB(0xe3cd8031d4f40)), + P(4621,CNST_LIMB(0xc8fd1057c09f8cc5),CNST_LIMB(0xe2ea56c157eb2)), + P(4637,CNST_LIMB(0xea1516e94f394035),CNST_LIMB(0xe221e5d4d3c73)), + P(4639,CNST_LIMB(0xb5e3319c564ee9df),CNST_LIMB(0xe208f09a841c7)), + P(4643,CNST_LIMB(0x126a69f90d822d8b),CNST_LIMB(0xe1d716a945161)), + P(4649,CNST_LIMB(0x501ed6348857aa19),CNST_LIMB(0xe18c78ec8fd4d)), + P(4651,CNST_LIMB(0xde344a324eee1c83),CNST_LIMB(0xe173a4a162079)), + P(4657,CNST_LIMB(0x1dd9690cb2c406d1),CNST_LIMB(0xe1294881bb494)), + P(4663,CNST_LIMB(0x8d6c5178d5e4387),CNST_LIMB(0xe0df1d5f24661)), + P(4673,CNST_LIMB(0x4cea4050a3e8fdc1),CNST_LIMB(0xe063ec7f50b1e)), + P(4679,CNST_LIMB(0xc114a06acc83f777),CNST_LIMB(0xe01a4313dc53d)), + P(4691,CNST_LIMB(0x20b060ebc0ea01db),CNST_LIMB(0xdf8780f47c350)), + P(4703,CNST_LIMB(0xfe50045acb78c99f),CNST_LIMB(0xdef57e8eb9666)), + P(4721,CNST_LIMB(0x291a68705b196e91),CNST_LIMB(0xde1bdf3f63d46)), + P(4723,CNST_LIMB(0xc1042c724273e2bb),CNST_LIMB(0xde03cb5099809)), + P(4729,CNST_LIMB(0x2cee680bb165b7c9),CNST_LIMB(0xddbbaecc84bc9)), + P(4733,CNST_LIMB(0xfd2ff9f12e0776d5),CNST_LIMB(0xdd8bb5ca73db6)), + P(4751,CNST_LIMB(0x166a5da63af2cc6f),CNST_LIMB(0xdcb4d529a6e07)), + P(4759,CNST_LIMB(0xedd16a5930408d27),CNST_LIMB(0xdc55da73dea60)), + P(4783,CNST_LIMB(0x2adf30c26528844f),CNST_LIMB(0xdb3ad2585011f)), + P(4787,CNST_LIMB(0x9a48d6572b5eec7b),CNST_LIMB(0xdb0becf636a79)), + P(4789,CNST_LIMB(0x6e8bf2877503cb9d),CNST_LIMB(0xdaf481ca6fefb)), + P(4793,CNST_LIMB(0xea27a191a7045389),CNST_LIMB(0xdac5ba7565dae)), + P(4799,CNST_LIMB(0x6eb091f34dd45d3f),CNST_LIMB(0xda7fb4e419d19)), + P(4801,CNST_LIMB(0xdc8a6cabb2937d41),CNST_LIMB(0xda6867a88d327)), + P(4813,CNST_LIMB(0xbc2f04f254922a05),CNST_LIMB(0xd9dd005f50b02)), + P(4817,CNST_LIMB(0x41431f4d6eb38631),CNST_LIMB(0xd9aeb01f763f7)), + P(4831,CNST_LIMB(0x7bd717435a08291f),CNST_LIMB(0xd90d31dd5804a)), + P(4861,CNST_LIMB(0x4232df9c91fc1a55),CNST_LIMB(0xd7b6453358f31)), + P(4871,CNST_LIMB(0xa4651e1d5382eab7),CNST_LIMB(0xd744e69d900e4)), + P(4877,CNST_LIMB(0x7cfb5409de4cf3c5),CNST_LIMB(0xd7011a317260e)), + P(4889,CNST_LIMB(0xcdd636fb068b9929),CNST_LIMB(0xd67a0126e7c19)), + P(4903,CNST_LIMB(0xee8f95e740462c97),CNST_LIMB(0xd5dd39e775bd7)), + P(4909,CNST_LIMB(0x490f97b3a758b4a5),CNST_LIMB(0xd59a4f2990168)), + P(4919,CNST_LIMB(0x641431563c441287),CNST_LIMB(0xd52b24cb6269d)), + P(4931,CNST_LIMB(0xb743dad3ec45916b),CNST_LIMB(0xd4a6571da4f04)), + P(4933,CNST_LIMB(0x7b188be8f55c878d),CNST_LIMB(0xd49044eac6581)), + P(4937,CNST_LIMB(0xd805648b2ca54ef9),CNST_LIMB(0xd4642e40d1129)), + P(4943,CNST_LIMB(0x76dbe6eef60123af),CNST_LIMB(0xd4222e81fe723)), + P(4951,CNST_LIMB(0x3711525e6a9e8867),CNST_LIMB(0xd3ca6e8c89f41)), + P(4957,CNST_LIMB(0x85c2215cb383d8f5),CNST_LIMB(0xd388ce29d4edc)), + P(4967,CNST_LIMB(0xe58f554c89825857),CNST_LIMB(0xd31bc7b7d8013)), + P(4969,CNST_LIMB(0x8fbd3b17c01dacd9),CNST_LIMB(0xd306071c13fd5)), + P(4973,CNST_LIMB(0x4c8c39dc7aedee65),CNST_LIMB(0xd2da935479b1a)), + P(4987,CNST_LIMB(0x653ac6dda86cd3b3),CNST_LIMB(0xd2430aa043597)), + P(4993,CNST_LIMB(0xd61c6791a9c2c81),CNST_LIMB(0xd2025bc6c7db7)), + P(4999,CNST_LIMB(0xb627a30090354237),CNST_LIMB(0xd1c1d4ad1732b)), + P(5003,CNST_LIMB(0x83a89a539c527c23),CNST_LIMB(0xd196e5f46f8c8)), + P(5009,CNST_LIMB(0x28c8c09330e90d71),CNST_LIMB(0xd156a0c9293e8)), + P(5011,CNST_LIMB(0xee1178d27b1f029b),CNST_LIMB(0xd1413d26e0aee)), + P(5021,CNST_LIMB(0xcecc740b37860ab5),CNST_LIMB(0xd0d68c6a4128f)), + P(5023,CNST_LIMB(0x79736fde910c485f),CNST_LIMB(0xd0c142eaf3837)), + P(5039,CNST_LIMB(0x6873d51f2487234f),CNST_LIMB(0xd01792ab9d70d)), + P(5051,CNST_LIMB(0x2a112180614fb973),CNST_LIMB(0xcf990317775bc)), + P(5059,CNST_LIMB(0xcb04cea98508f4eb),CNST_LIMB(0xcf44f8c38790a)), + P(5077,CNST_LIMB(0xc2fcd2c527e28d7d),CNST_LIMB(0xce88d96d10e45)), + P(5081,CNST_LIMB(0x980203ee10393c69),CNST_LIMB(0xce5f39b07e906)), + P(5087,CNST_LIMB(0x3fa90a1d7d75681f),CNST_LIMB(0xce20e98148847)), + P(5099,CNST_LIMB(0xdbf3bfefef217cc3),CNST_LIMB(0xcda4b9c30ccd7)), + P(5101,CNST_LIMB(0x66a17fd3087b41e5),CNST_LIMB(0xcd9015ae32495)), + P(5107,CNST_LIMB(0x962195d496fbbd3b),CNST_LIMB(0xcd524244aca36)), + P(5113,CNST_LIMB(0xc705a86155443e49),CNST_LIMB(0xcd14940099cf6)), + P(5119,CNST_LIMB(0x3f298ee0be6febff),CNST_LIMB(0xccd70ac089a07)), + P(5147,CNST_LIMB(0xaa99b084e62fa613),CNST_LIMB(0xcbb9c535c4371)), + P(5153,CNST_LIMB(0x1f000cb7d0b46fe1),CNST_LIMB(0xcb7d0b46fe0ff)), + P(5167,CNST_LIMB(0x9ed7858637c9b2cf),CNST_LIMB(0xcaefe5d7135f4)), + P(5171,CNST_LIMB(0x4d871aaf27c106fb),CNST_LIMB(0xcac7b5f00f0cd)), + P(5179,CNST_LIMB(0x2e6a467cdc75a4f3),CNST_LIMB(0xca7785ceddbea)), + P(5189,CNST_LIMB(0xe9d938fb696dde8d),CNST_LIMB(0xca13a2a86e1db)), + P(5197,CNST_LIMB(0x40ec71b0b1554485),CNST_LIMB(0xc9c4009753007)), + P(5209,CNST_LIMB(0x3aae12f861e5f3e9),CNST_LIMB(0xc94d02e64bfab)), + P(5227,CNST_LIMB(0xa97565873959f843),CNST_LIMB(0xc89b8c9c875ef)), + P(5231,CNST_LIMB(0xb5a960c09fbca8f),CNST_LIMB(0xc87447737277e)), + P(5233,CNST_LIMB(0x463fe3d268012c91),CNST_LIMB(0xc860aaa2514e3)), + P(5237,CNST_LIMB(0xe59a6bd5f5ee1bdd),CNST_LIMB(0xc8397c813f1b9)), + P(5261,CNST_LIMB(0x6542e84d7775ce45),CNST_LIMB(0xc74fa805d6d56)), + P(5273,CNST_LIMB(0x8b6eef58fd9effa9),CNST_LIMB(0xc6db8a1f5cdfe)), + P(5279,CNST_LIMB(0x58993dbb9f98075f),CNST_LIMB(0xc6a1add9e2398)), + P(5281,CNST_LIMB(0x2997955a810acf61),CNST_LIMB(0xc68e6be826648)), + P(5297,CNST_LIMB(0x76e3d2f5077db451),CNST_LIMB(0xc5f4e25fc9df0)), + P(5303,CNST_LIMB(0xb37c1d2867e30907),CNST_LIMB(0xc5bb8bf2ad1cd)), + P(5309,CNST_LIMB(0x53ce6e09bd8d8695),CNST_LIMB(0xc58256b316ced)), + P(5323,CNST_LIMB(0x39db291ea2a6b0e3),CNST_LIMB(0xc4fd5ad917b5b)), + P(5333,CNST_LIMB(0xddd265ab9c58847d),CNST_LIMB(0xc49ecb3ea4d7a)), + P(5347,CNST_LIMB(0x5beca8562dddd0cb),CNST_LIMB(0xc41b00b7d950a)), + P(5351,CNST_LIMB(0xb69031c153ddbed7),CNST_LIMB(0xc3f57990b87a1)), + P(5381,CNST_LIMB(0xd03c2271b42a6fcd),CNST_LIMB(0xc2ddcb31250f8)), + P(5387,CNST_LIMB(0xcd6fd19e63e40ea3),CNST_LIMB(0xc2a63b3651432)), + P(5393,CNST_LIMB(0xf7687aa8e4fd7bf1),CNST_LIMB(0xc26ecae1db72e)), + P(5399,CNST_LIMB(0x649dfda112a272a7),CNST_LIMB(0xc2377a18c051e)), + P(5407,CNST_LIMB(0xecf7866a56d526df),CNST_LIMB(0xc1ede9efcec29)), + P(5413,CNST_LIMB(0x72bbf1cfdaebfead),CNST_LIMB(0xc1b6e258d13a0)), + P(5417,CNST_LIMB(0x55f6a48df7055719),CNST_LIMB(0xc19243f5399bb)), + P(5419,CNST_LIMB(0x80060bffcfa00183),CNST_LIMB(0xc17ff9f400305)), + P(5431,CNST_LIMB(0x8a104f309919b087),CNST_LIMB(0xc112865703b94)), + P(5437,CNST_LIMB(0x98fa7db7652f6a15),CNST_LIMB(0xc0dbfaea33225)), + P(5441,CNST_LIMB(0x5d7d1b3df70f7ac1),CNST_LIMB(0xc0b7af12ddfb9)), + P(5443,CNST_LIMB(0x16ab7b5e04cc1f6b),CNST_LIMB(0xc0a58e464462c)), + P(5449,CNST_LIMB(0x78a5bfd2e5ececf9),CNST_LIMB(0xc06f40512eef2)), + P(5471,CNST_LIMB(0x6506392e171d869f),CNST_LIMB(0xbfa9275a2b247)), + P(5477,CNST_LIMB(0xc3fc12e221ef146d),CNST_LIMB(0xbf7367402cdf0)), + P(5479,CNST_LIMB(0xf8aa132822c33657),CNST_LIMB(0xbf61833f4f921)), + P(5483,CNST_LIMB(0x894496574f536f43),CNST_LIMB(0xbf3dc543a74a1)), + P(5501,CNST_LIMB(0x8b2546b08fb4cbd5),CNST_LIMB(0xbe9d9302a7115)), + P(5503,CNST_LIMB(0x43bbb561bd1aa7f),CNST_LIMB(0xbe8bd6e051e01)), + P(5507,CNST_LIMB(0x2412c7cc4ea7a12b),CNST_LIMB(0xbe6868804d5a6)), + P(5519,CNST_LIMB(0x6f0bd406dd71696f),CNST_LIMB(0xbdfe6c4359f0e)), + P(5521,CNST_LIMB(0xad475c6988d54b71),CNST_LIMB(0xbdeccdb0b5c3a)), + P(5527,CNST_LIMB(0xd812e5d48dbbba27),CNST_LIMB(0xbdb8058ee429a)), + P(5531,CNST_LIMB(0x22aaca437ba04893),CNST_LIMB(0xbd94e5c1b371f)), + P(5557,CNST_LIMB(0xdba6ff1fecd5f09d),CNST_LIMB(0xbcb1d293b1af3)), + P(5563,CNST_LIMB(0x13016d3396286773),CNST_LIMB(0xbc7db8db0c1a5)), + P(5569,CNST_LIMB(0xc746494631bcfa41),CNST_LIMB(0xbc49bbdfd2662)), + P(5573,CNST_LIMB(0xd14888565bf6a10d),CNST_LIMB(0xbc2723240f402)), + P(5581,CNST_LIMB(0xc002ef885f0adf05),CNST_LIMB(0xbbe217c2b7c13)), + P(5591,CNST_LIMB(0xe5a04da7fee6ade7),CNST_LIMB(0xbb8c10aab27b2)), + P(5623,CNST_LIMB(0xc114ce5468593bc7),CNST_LIMB(0xba7ad528a7e79)), + P(5639,CNST_LIMB(0xbb6747dd7f577b7),CNST_LIMB(0xb9f3611b48c5e)), + P(5641,CNST_LIMB(0x395ce5a20f285839),CNST_LIMB(0xb9e2806e5e7c4)), + P(5647,CNST_LIMB(0x6eee8be66e8618ef),CNST_LIMB(0xb9aff0c4913fe)), + P(5651,CNST_LIMB(0x52acf64297f1241b),CNST_LIMB(0xb98e4aedd581c)), + P(5653,CNST_LIMB(0x361dcc48a364093d),CNST_LIMB(0xb97d7c94b7dc2)), + P(5657,CNST_LIMB(0x342d6f475d72e629),CNST_LIMB(0xb95be902d9d9e)), + P(5659,CNST_LIMB(0x5e978bd46410d413),CNST_LIMB(0xb94b23c872b90)), + P(5669,CNST_LIMB(0xcc3433d75ba015ad),CNST_LIMB(0xb8f77714d15a1)), + P(5683,CNST_LIMB(0x1c83b7628458d4fb),CNST_LIMB(0xb882d0beff6a1)), + P(5689,CNST_LIMB(0xf9ca45637e38f809),CNST_LIMB(0xb850ff9852703)), + P(5693,CNST_LIMB(0xcbed792ffaf6b115),CNST_LIMB(0xb82fd86db8806)), + P(5701,CNST_LIMB(0x9abd961d8c0e8c8d),CNST_LIMB(0xb7edadd32f76c)), + P(5711,CNST_LIMB(0xe69572fa659340af),CNST_LIMB(0xb79b3b4df3b7b)), + P(5717,CNST_LIMB(0x9187e7483a6436fd),CNST_LIMB(0xb769e6d59833f)), + P(5737,CNST_LIMB(0x1e9c726993bed9d9),CNST_LIMB(0xb6c636b5141ff)), + P(5741,CNST_LIMB(0x243554db91976365),CNST_LIMB(0xb6a59ceae8801)), + P(5743,CNST_LIMB(0x4d06ff994c0088f),CNST_LIMB(0xb6955461e38f7)), + P(5749,CNST_LIMB(0x25b76abcb74889dd),CNST_LIMB(0xb6648c2dc6bc2)), + P(5779,CNST_LIMB(0x3a409642893c779b),CNST_LIMB(0xb572282260209)), + P(5783,CNST_LIMB(0x8f8f620d8bc0c927),CNST_LIMB(0xb552072bde889)), + P(5791,CNST_LIMB(0x6f9f196b3369855f),CNST_LIMB(0xb511e7552f9c4)), + P(5801,CNST_LIMB(0x92a522bb0638ed99),CNST_LIMB(0xb4c1ff34a5c0e)), + P(5807,CNST_LIMB(0x96270f1efdd7004f),CNST_LIMB(0xb4922f58d4aa2)), + P(5813,CNST_LIMB(0xb4844b380fdaa79d),CNST_LIMB(0xb46278c16b967)), + P(5821,CNST_LIMB(0x108936aa5f9c1495),CNST_LIMB(0xb42301cd99b49)), + P(5827,CNST_LIMB(0xb60f606f104c9eb),CNST_LIMB(0xb3f385dd77e4e)), + P(5839,CNST_LIMB(0xc663dfe8263b302f),CNST_LIMB(0xb394d8ef8f0f6)), + P(5843,CNST_LIMB(0xc91a280b9110b15b),CNST_LIMB(0xb375601507c14)), + P(5849,CNST_LIMB(0x904287118d10969),CNST_LIMB(0xb3463f76be376)), + P(5851,CNST_LIMB(0x160d36a5d31bf553),CNST_LIMB(0xb3368f6c4a07c)), + P(5857,CNST_LIMB(0xe84f5fda3c67ad21),CNST_LIMB(0xb3078fc1c25f0)), + P(5861,CNST_LIMB(0xbd85701f72d4b6ed),CNST_LIMB(0xb2e84854e93e5)), + P(5867,CNST_LIMB(0x4c50cf5924dee1c3),CNST_LIMB(0xb2b971aa909a4)), + P(5869,CNST_LIMB(0x2455aaf1633bb6e5),CNST_LIMB(0xb2a9da39d6bc8)), + P(5879,CNST_LIMB(0xd775b39f549b8ac7),CNST_LIMB(0xb25c0dc29a0fc)), + P(5881,CNST_LIMB(0x87fcdda7a252cb49),CNST_LIMB(0xb24c8698449a7)), + P(5897,CNST_LIMB(0x53df2e3bd254a739),CNST_LIMB(0xb1d0ae579aefe)), + P(5903,CNST_LIMB(0x8915e69623a5f7ef),CNST_LIMB(0xb1a2698ea2f9e)), + P(5923,CNST_LIMB(0x1ef24c80742dd08b),CNST_LIMB(0xb108dc4186078)), + P(5927,CNST_LIMB(0xb4d87aaa6fb1e897),CNST_LIMB(0xb0ea463b00212)), + P(5939,CNST_LIMB(0x788573e8b92dbbfb),CNST_LIMB(0xb08ec37007962)), + P(5953,CNST_LIMB(0x2527b137b0878c1),CNST_LIMB(0xb024778cc023c)), + P(5981,CNST_LIMB(0x1870a7c8dee9f4f5),CNST_LIMB(0xaf515df36a88e)), + P(5987,CNST_LIMB(0x39b99e40910a224b),CNST_LIMB(0xaf24635f6561e)), + P(6007,CNST_LIMB(0x45821c0abd4df247),CNST_LIMB(0xae8f1b92baeaf)), + P(6011,CNST_LIMB(0x10fe2b2f50e02fb3),CNST_LIMB(0xae715eee11f8e)), + P(6029,CNST_LIMB(0x5762b90c043f0345),CNST_LIMB(0xadec0b0a3bb36)), + P(6037,CNST_LIMB(0x82a67b9193b27bbd),CNST_LIMB(0xadb10aa4c956f)), + P(6043,CNST_LIMB(0xa6e914e28ec37693),CNST_LIMB(0xad84e49752245)), + P(6047,CNST_LIMB(0x835d9a4facaf445f),CNST_LIMB(0xad6782597f0c2)), + P(6053,CNST_LIMB(0x48def8175884f82d),CNST_LIMB(0xad3b81a0d72fe)), + P(6067,CNST_LIMB(0xae900e2d7c9a6f7b),CNST_LIMB(0xacd52beced79e)), + P(6073,CNST_LIMB(0x1c08431bdd18be89),CNST_LIMB(0xaca9755063254)), + P(6079,CNST_LIMB(0xb370a66d684fd83f),CNST_LIMB(0xac7dd4cafb12a)), + P(6089,CNST_LIMB(0xb4be33e18f93b279),CNST_LIMB(0xac354f80dca44)), + P(6091,CNST_LIMB(0x310c50872a7dd5e3),CNST_LIMB(0xac26d5c2b8ad2)), + P(6101,CNST_LIMB(0x447ab1281276697d),CNST_LIMB(0xabde997dabd3d)), + P(6113,CNST_LIMB(0xc2f122216b2a6c21),CNST_LIMB(0xab883aa1100a0)), + P(6121,CNST_LIMB(0xab99c8b5ae1c3059),CNST_LIMB(0xab4ed637f5a0b)), + P(6131,CNST_LIMB(0xb78e17a2227d593b),CNST_LIMB(0xab074e9febf52)), + P(6133,CNST_LIMB(0xabf97d03f7269c5d),CNST_LIMB(0xaaf90778c2039)), + P(6143,CNST_LIMB(0x867aefc9fdbfe7ff),CNST_LIMB(0xaab1c7684f034)), + P(6151,CNST_LIMB(0xf7f7ad182e47d5b7),CNST_LIMB(0xaa78f20ebbb3e)), + P(6163,CNST_LIMB(0x50dff95a9847721b),CNST_LIMB(0xaa23f8dafd4cc)), + P(6173,CNST_LIMB(0xe4cb8a0e83cb6a35),CNST_LIMB(0xa9dd69cad5934)), + P(6197,CNST_LIMB(0x8da72ecdf9247a1d),CNST_LIMB(0xa935004a07302)), + P(6199,CNST_LIMB(0xc5b04bfc87f31d87),CNST_LIMB(0xa9270690f3d14)), + P(6203,CNST_LIMB(0xe2dcf622ea2b00f3),CNST_LIMB(0xa90b1a0aa5d30)), + P(6211,CNST_LIMB(0xb9ce9f2e4972f46b),CNST_LIMB(0xa8d35c9d731e9)), + P(6217,CNST_LIMB(0x1ed785c911bf59f9),CNST_LIMB(0xa8a9a6a51f16c)), + P(6221,CNST_LIMB(0x4ddb8a4eed70e085),CNST_LIMB(0xa88de370f596b)), + P(6229,CNST_LIMB(0x81e93b4df68c24fd),CNST_LIMB(0xa856786adae36)), + P(6247,CNST_LIMB(0xee0d0812afcd8357),CNST_LIMB(0xa7da4c77d3161)), + P(6257,CNST_LIMB(0xf62e3ba72268a891),CNST_LIMB(0xa7959f863d4a1)), + P(6263,CNST_LIMB(0x3194d367c8154147),CNST_LIMB(0xa76c85e80c195)), + P(6269,CNST_LIMB(0xd096ede8e30c20d5),CNST_LIMB(0xa743806dc44c4)), + P(6271,CNST_LIMB(0xd68624d27b87a77f),CNST_LIMB(0xa735d866dfa0a)), + P(6277,CNST_LIMB(0xb728fcdc11c8204d),CNST_LIMB(0xa70cedb02531e)), + P(6287,CNST_LIMB(0x9d6b6038077e066f),CNST_LIMB(0xa6c8e842c770f)), + P(6299,CNST_LIMB(0xaa732d7a4a360d93),CNST_LIMB(0xa67791215dd74)), + P(6301,CNST_LIMB(0x36af98a423972db5),CNST_LIMB(0xa66a0a51d363d)), + P(6311,CNST_LIMB(0xc31d00da12940f17),CNST_LIMB(0xa626893011861)), + P(6317,CNST_LIMB(0xed85352107410b25),CNST_LIMB(0xa5fe22c55c089)), + P(6323,CNST_LIMB(0x829c85ee6db8567b),CNST_LIMB(0xa5d5cffb77275)), + P(6329,CNST_LIMB(0xef60258952cc6d89),CNST_LIMB(0xa5ad90c4186e5)), + P(6337,CNST_LIMB(0xcf28c2e0da787741),CNST_LIMB(0xa578057e7c2eb)), + P(6343,CNST_LIMB(0x57567d8494af28f7),CNST_LIMB(0xa54ff3bb10e91)), + P(6353,CNST_LIMB(0x2c7c98518f174031),CNST_LIMB(0xa50d5683edc94)), + P(6359,CNST_LIMB(0xb28b363a36825ae7),CNST_LIMB(0xa4e57854b3df4)), + P(6361,CNST_LIMB(0xed1ffeb64f9ae769),CNST_LIMB(0xa4d8328c4b800)), + P(6367,CNST_LIMB(0xcbbb0115e9b9a31f),CNST_LIMB(0xa4b06e01d97b3)), + P(6373,CNST_LIMB(0x8d3c5fecb7f9e4ed),CNST_LIMB(0xa488bca2c4449)), + P(6379,CNST_LIMB(0x816271698195cfc3),CNST_LIMB(0xa4611e6132ed5)), + P(6389,CNST_LIMB(0x9ac939d1c2b1d35d),CNST_LIMB(0xa41f40f39e646)), + P(6397,CNST_LIMB(0xdd9fb7017b0ec455),CNST_LIMB(0xa3eab5c3e44e9)), + P(6421,CNST_LIMB(0xc94cab1e57276e3d),CNST_LIMB(0xa34ddd50561e0)), + P(6427,CNST_LIMB(0x8b8806b117c79913),CNST_LIMB(0xa326d60e94186)), + P(6449,CNST_LIMB(0xa9e63292a3269fd1),CNST_LIMB(0xa2985a81ce614)), + P(6451,CNST_LIMB(0x76da5710f1e989fb),CNST_LIMB(0xa28b72e26f82e)), + P(6469,CNST_LIMB(0xdded6688d83a918d),CNST_LIMB(0xa217aa3479693)), + P(6473,CNST_LIMB(0x4e446b6a305428f9),CNST_LIMB(0xa1fe05c62df4b)), + P(6481,CNST_LIMB(0x4ddaca7a3696cfb1),CNST_LIMB(0xa1cad538aebf9)), + P(6491,CNST_LIMB(0x7eadc4eb87f26ed3),CNST_LIMB(0xa18b05f490083)), + P(6521,CNST_LIMB(0x76c13a0ff04c00c9),CNST_LIMB(0xa0ccc4c28fc31)), + P(6529,CNST_LIMB(0xcbf800504d2a2681),CNST_LIMB(0xa09a544d01ffe)), + P(6547,CNST_LIMB(0x731dada6c4fec9b),CNST_LIMB(0xa0294aa53e9a2)), + P(6551,CNST_LIMB(0xbcb52a664e63f627),CNST_LIMB(0xa01041a6aaed5)), + P(6553,CNST_LIMB(0xf1f9abda071c2aa9),CNST_LIMB(0xa003c01680870)), + P(6563,CNST_LIMB(0xf262ffa620ffe20b),CNST_LIMB(0x9fc5558a971c8)), + P(6569,CNST_LIMB(0x93774a3d57199a99),CNST_LIMB(0x9f9ff9c3c03e5)), + P(6571,CNST_LIMB(0xfb3541cd467a1903),CNST_LIMB(0x9f9389b864ab9)), + P(6577,CNST_LIMB(0x6828cab6b4fe8f51),CNST_LIMB(0x9f6e4534bdca8)), + P(6581,CNST_LIMB(0x12ac03e3d624cc9d),CNST_LIMB(0x9f557687235c2)), + P(6599,CNST_LIMB(0x6363bd1e9bb7d7f7),CNST_LIMB(0x9ee633c0391ab)), + P(6607,CNST_LIMB(0x334cfd676a484d2f),CNST_LIMB(0x9eb4f28e0bb39)), + P(6619,CNST_LIMB(0xd511acd86f143a53),CNST_LIMB(0x9e6b49e92e4bb)), + P(6637,CNST_LIMB(0x73fc2490e0062be5),CNST_LIMB(0x9dfd4ccbd0045)), + P(6653,CNST_LIMB(0x10780dda36b78b55),CNST_LIMB(0x9d9c0828536c1)), + P(6659,CNST_LIMB(0xabf601274064e0ab),CNST_LIMB(0x9d77ad449f777)), + P(6661,CNST_LIMB(0x3ef3e4ca27e4a2cd),CNST_LIMB(0x9d6b92b28ee48)), + P(6673,CNST_LIMB(0x9216a26e690a16f1),CNST_LIMB(0x9d231a476ed51)), + P(6679,CNST_LIMB(0xbae4849e6034bda7),CNST_LIMB(0x9cfef711bf120)), + P(6689,CNST_LIMB(0xf943a0520e01e9e1),CNST_LIMB(0x9cc2e1448b765)), + P(6691,CNST_LIMB(0x7c89958f48f6658b),CNST_LIMB(0x9cb6e26cbc64d)), + P(6701,CNST_LIMB(0xe67128750e0545a5),CNST_LIMB(0x9c7b03b4a9c67)), + P(6703,CNST_LIMB(0xc6c9e1d414516ccf),CNST_LIMB(0x9c6f0fd980ab1)), + P(6709,CNST_LIMB(0x805307f996e9e81d),CNST_LIMB(0x9c4b3f3a30c3f)), + P(6719,CNST_LIMB(0x3eddd2cff46ad5bf),CNST_LIMB(0x9c0fb29436687)), + P(6733,CNST_LIMB(0x35582c1aeb5aae85),CNST_LIMB(0x9bbca025b7aec)), + P(6737,CNST_LIMB(0x4973c88573ef6eb1),CNST_LIMB(0x9ba4f4421e52c)), + P(6761,CNST_LIMB(0x3063f627c1e715d9),CNST_LIMB(0x9b1783809ff03)), + P(6763,CNST_LIMB(0x711ad679a8dcc243),CNST_LIMB(0x9b0bc5b4d2eac)), + P(6779,CNST_LIMB(0x51c224a17a3db4b3),CNST_LIMB(0x9aae172fd8b9c)), + P(6781,CNST_LIMB(0x612325ca50ddaed5),CNST_LIMB(0x9aa26954607ed)), + P(6791,CNST_LIMB(0x9929a7b6b7958b37),CNST_LIMB(0x9a681e758a022)), + P(6793,CNST_LIMB(0xa78d222e5a857bb9),CNST_LIMB(0x9a5c7b284942e)), + P(6803,CNST_LIMB(0x3ad0ffe3198d139b),CNST_LIMB(0x9a2264ecc5558)), + P(6823,CNST_LIMB(0x8b4659ac547ed17),CNST_LIMB(0x99aebb39be56f)), + P(6827,CNST_LIMB(0x1752e8904aff1003),CNST_LIMB(0x9997ae1a9faac)), + P(6829,CNST_LIMB(0x60745c37ee4e5925),CNST_LIMB(0x998c2a22b6900)), + P(6833,CNST_LIMB(0x29e2da1f6557ee51),CNST_LIMB(0x997527603f8a8)), + P(6841,CNST_LIMB(0x80d78c24ac49cb89),CNST_LIMB(0x99473685e4d50)), + P(6857,CNST_LIMB(0xc56c3b495c8d1f79),CNST_LIMB(0x98eba72512a13)), + P(6863,CNST_LIMB(0xcf5bdf9f5088ac2f),CNST_LIMB(0x98c96d8dee9e1)), + P(6869,CNST_LIMB(0x8a44800e4fae4e7d),CNST_LIMB(0x98a743453554e)), + P(6871,CNST_LIMB(0xdd76384277e578e7),CNST_LIMB(0x989be33c9e6bd)), + P(6883,CNST_LIMB(0x20b1562d2703facb),CNST_LIMB(0x9857c692e9a59)), + P(6899,CNST_LIMB(0xef56caf96e9d8e3b),CNST_LIMB(0x97fd540c05c9e)), + P(6907,CNST_LIMB(0xf54061416aede033),CNST_LIMB(0x97d04302ed944)), + P(6911,CNST_LIMB(0xe0bc78c21a26e4ff),CNST_LIMB(0x97b9c48289935)), + P(6917,CNST_LIMB(0x524f92731a179cd),CNST_LIMB(0x9798133ece717)), + P(6947,CNST_LIMB(0x5d3b4ad7deafec8b),CNST_LIMB(0x96f07c683689e)), + P(6949,CNST_LIMB(0x508828f744da88ad),CNST_LIMB(0x96e55d6393fc5)), + P(6959,CNST_LIMB(0x6e82014031710bcf),CNST_LIMB(0x96addad861696)), + P(6961,CNST_LIMB(0xadf3b77a22595dd1),CNST_LIMB(0x96a2c5a2cf0cf)), + P(6967,CNST_LIMB(0xd8f0c03f7ea8a87),CNST_LIMB(0x96818fc825eba)), + P(6971,CNST_LIMB(0x2c49e3483c3a05f3),CNST_LIMB(0x966b74027f48a)), + P(6977,CNST_LIMB(0xccecbc98c91274c1),CNST_LIMB(0x964a56850b8ed)), + P(6983,CNST_LIMB(0x273a08941bb71e77),CNST_LIMB(0x962947990eb36)), + P(6991,CNST_LIMB(0xdead5a1e3f341baf),CNST_LIMB(0x95fd4a4c885e0)), + P(6997,CNST_LIMB(0x83eee092593309fd),CNST_LIMB(0x95dc5d3954fde)), + P(7001,CNST_LIMB(0x4af5f1bd3ae87ce9),CNST_LIMB(0x95c671ddfe516)), + P(7013,CNST_LIMB(0x4ca85ad2301c9e6d),CNST_LIMB(0x9584d6340ddf1)), + P(7019,CNST_LIMB(0x1b19592cd31a3943),CNST_LIMB(0x95641de84afcc)), + P(7027,CNST_LIMB(0x3e7aa05e6dcd81bb),CNST_LIMB(0x953893c386521)), + P(7039,CNST_LIMB(0x86336cecb02ba47f),CNST_LIMB(0x94f7740d87794)), + P(7043,CNST_LIMB(0xa96b30d0c8a44b2b),CNST_LIMB(0x94e1cb70c9ce0)), + P(7057,CNST_LIMB(0xb7c63fa0cfca0571),CNST_LIMB(0x94962ecbcc7ce)), + P(7069,CNST_LIMB(0x8eaf59b405a642b5),CNST_LIMB(0x94559c69059cf)), + P(7079,CNST_LIMB(0xdf29e9cbb536dc17),CNST_LIMB(0x941ff7e640716)), + P(7103,CNST_LIMB(0xed14132c82c1d43f),CNST_LIMB(0x939fd7a24b099)), + P(7109,CNST_LIMB(0xaf68778e34caab0d),CNST_LIMB(0x937ff22c014bd)), + P(7121,CNST_LIMB(0xa4f04a3368941d31),CNST_LIMB(0x934050872c09e)), + P(7127,CNST_LIMB(0xe9960969357c07e7),CNST_LIMB(0x93209446d56f6)), + P(7129,CNST_LIMB(0xeb47b62b7360b469),CNST_LIMB(0x9316033b5bd22)), + P(7151,CNST_LIMB(0x64c653d779ae730f),CNST_LIMB(0x92a22b9a79374)), + P(7159,CNST_LIMB(0x479702d3319915c7),CNST_LIMB(0x927838edba206)), + P(7177,CNST_LIMB(0xef3c3eebc6803239),CNST_LIMB(0x921a2e7112833)), + P(7187,CNST_LIMB(0x93807b1a2e3c0e1b),CNST_LIMB(0x91e623d5660d0)), + P(7193,CNST_LIMB(0x8167e33e3f478029),CNST_LIMB(0x91c6fc0cab8b6)), + P(7207,CNST_LIMB(0x60cb76e38c339397),CNST_LIMB(0x917e7d88028eb)), + P(7211,CNST_LIMB(0xae34788ffe4bc283),CNST_LIMB(0x9169d455585cd)), + P(7213,CNST_LIMB(0x4b6246a0c6c093a5),CNST_LIMB(0x915f81ef2d529)), + P(7219,CNST_LIMB(0x872e594b12b03efb),CNST_LIMB(0x9140938595d3a)), + P(7229,CNST_LIMB(0xbc0ae83ce9045b15),CNST_LIMB(0x910d2360a450e)), + P(7237,CNST_LIMB(0xad30a3917e0968d),CNST_LIMB(0x90e417104eabd)), + P(7243,CNST_LIMB(0x124ef5a4e1c7cd63),CNST_LIMB(0x90c55d0fdea28)), + P(7247,CNST_LIMB(0x5b98fe0e9fe17aaf),CNST_LIMB(0x90b0e84c04f20)), + P(7253,CNST_LIMB(0x414306cfe45400fd),CNST_LIMB(0x909243fac6b70)), + P(7283,CNST_LIMB(0xa06d1b4fd391e8bb),CNST_LIMB(0x8ff9d0440d137)), + P(7297,CNST_LIMB(0x11939803a60c2381),CNST_LIMB(0x8fb3192789d73)), + P(7307,CNST_LIMB(0x668c11cc37ea6b23),CNST_LIMB(0x8f80c0d5031e3)), + P(7309,CNST_LIMB(0x83f9b2089dc10645),CNST_LIMB(0x8f76b3664f164)), + P(7321,CNST_LIMB(0x65dc8ae47af277a9),CNST_LIMB(0x8f3a80550abc3)), + P(7331,CNST_LIMB(0x6e2368b9c685770b),CNST_LIMB(0x8f087c50e00c4)), + P(7333,CNST_LIMB(0x3ea137aeba5a6b2d),CNST_LIMB(0x8efe7fb408cc2)), + P(7349,CNST_LIMB(0x735f57adca48f19d),CNST_LIMB(0x8eaecce5c4fd7)), + P(7351,CNST_LIMB(0x69a8de0ba1b18107),CNST_LIMB(0x8ea4dccaaec0b)), + P(7369,CNST_LIMB(0x8fb84bdf5822bd79),CNST_LIMB(0x8e4ba9fbc2ff0)), + P(7393,CNST_LIMB(0xb8fab3b748562721),CNST_LIMB(0x8dd5688a3b7d6)), + P(7411,CNST_LIMB(0xa6c658ea10a65c3b),CNST_LIMB(0x8d7d3821fd94f)), + P(7417,CNST_LIMB(0xe56381f33ab5e549),CNST_LIMB(0x8d5feb03c31d7)), + P(7433,CNST_LIMB(0xe3c224da14988139),CNST_LIMB(0x8d12033cc9d30)), + P(7451,CNST_LIMB(0x438c253e6d99f513),CNST_LIMB(0x8cbac4dec6a82)), + P(7457,CNST_LIMB(0xc1b99f8841a3a6e1),CNST_LIMB(0x8c9dc80ab604b)), + P(7459,CNST_LIMB(0x63fa18c79c54fa8b),CNST_LIMB(0x8c942115dcc96)), + P(7477,CNST_LIMB(0xe7f6f609619d0d1d),CNST_LIMB(0x8c3d7df67b539)), + P(7481,CNST_LIMB(0x7b39ef3b70afc109),CNST_LIMB(0x8c2a4bc35cb3b)), + P(7487,CNST_LIMB(0x73922c61ca7452bf),CNST_LIMB(0x8c0d8a4f1f264)), + P(7489,CNST_LIMB(0x28d96828332372c1),CNST_LIMB(0x8c03f71cbf906)), + P(7499,CNST_LIMB(0x6b6e92968c4e8463),CNST_LIMB(0x8bd42abd9a107)), + P(7507,CNST_LIMB(0x571861f084962edb),CNST_LIMB(0x8bae051d7f6ff)), + P(7517,CNST_LIMB(0xd935c64f140f1ef5),CNST_LIMB(0x8b7e735068135)), + P(7523,CNST_LIMB(0x96459f8fd72a4c4b),CNST_LIMB(0x8b61f82c5fb08)), + P(7529,CNST_LIMB(0x410ba9a2a18242d9),CNST_LIMB(0x8b4588a74a05a)), + P(7537,CNST_LIMB(0xcf90979f89870391),CNST_LIMB(0x8b1fb0a7ed403)), + P(7541,CNST_LIMB(0x10f94ff26bc00add),CNST_LIMB(0x8b0ccc5d8f5c8)), + P(7547,CNST_LIMB(0xa6619fbb9da139b3),CNST_LIMB(0x8af07f8ac5146)), + P(7549,CNST_LIMB(0x765a23334efb03d5),CNST_LIMB(0x8ae71328ffd49)), + P(7559,CNST_LIMB(0x6f2f613b5e631837),CNST_LIMB(0x8ab8086624822)), + P(7561,CNST_LIMB(0x666b99bfbcd368b9),CNST_LIMB(0x8aaea3ab5ae89)), + P(7573,CNST_LIMB(0x922b78eb01ed45bd),CNST_LIMB(0x8a7661f7020fe)), + P(7577,CNST_LIMB(0x7079a199c31de6a9),CNST_LIMB(0x8a63ab88aa8dd)), + P(7583,CNST_LIMB(0xa181abcda167be5f),CNST_LIMB(0x8a47a35d020f3)), + P(7589,CNST_LIMB(0x2f6dbbcab3a9822d),CNST_LIMB(0x8a2ba68a3cebf)), + P(7591,CNST_LIMB(0xc5a83ff0e43eba17),CNST_LIMB(0x8a2254c852497)), + P(7603,CNST_LIMB(0x28c68613dda7d97b),CNST_LIMB(0x89ea849898bb3)), + P(7607,CNST_LIMB(0x5cf33ed49efa5007),CNST_LIMB(0x89d7f3e285109)), + P(7621,CNST_LIMB(0x9125fdead661590d),CNST_LIMB(0x899720af36739)), + P(7639,CNST_LIMB(0xaee67f478c7325e7),CNST_LIMB(0x89442160d11dc)), + P(7643,CNST_LIMB(0x735b1274a0e89653),CNST_LIMB(0x8931bd5875a22)), + P(7649,CNST_LIMB(0x733b56eae1a4e621),CNST_LIMB(0x891630877aedf)), + P(7669,CNST_LIMB(0x1944ffb316ffe65d),CNST_LIMB(0x88baaad83e38f)), + P(7673,CNST_LIMB(0xf26bc3cfd2a01449),CNST_LIMB(0x88a86b9090aa4)), + P(7681,CNST_LIMB(0xb5827ba68b83e201),CNST_LIMB(0x8883fb99bf244)), + P(7687,CNST_LIMB(0xac139507e48eefb7),CNST_LIMB(0x8868b45e727ee)), + P(7691,CNST_LIMB(0xeb7676b25834fda3),CNST_LIMB(0x88568aef30d47)), + P(7699,CNST_LIMB(0xad898f4763da5c1b),CNST_LIMB(0x8832468f0bcdd)), + P(7703,CNST_LIMB(0xea906f224398f9a7),CNST_LIMB(0x88202b9a4df76)), + P(7717,CNST_LIMB(0xa8aff3caca28cdad),CNST_LIMB(0x87e0f31872e9b)), + P(7723,CNST_LIMB(0x46c53aa36b19b083),CNST_LIMB(0x87c5ecd731f42)), + P(7727,CNST_LIMB(0x9ada32b09603e8cf),CNST_LIMB(0x87b3eea3bb388)), + P(7741,CNST_LIMB(0xd31f842ef5d8e915),CNST_LIMB(0x87751a6c67d78)), + P(7753,CNST_LIMB(0x6124af44730a33f9),CNST_LIMB(0x873f6e2f9d34a)), + P(7757,CNST_LIMB(0x828ec4c2b6e64a85),CNST_LIMB(0x872d938dcfc01)), + P(7759,CNST_LIMB(0x3d6f49df999638af),CNST_LIMB(0x8724a80151dba)), + P(7789,CNST_LIMB(0x7641460a0ea89b65),CNST_LIMB(0x869f677f6cc1a)), + P(7793,CNST_LIMB(0x97703f98fb7fe291),CNST_LIMB(0x868db701df58d)), + P(7817,CNST_LIMB(0xd343c209e3e6b7b9),CNST_LIMB(0x8623f563a7d6d)), + P(7823,CNST_LIMB(0x4e5fc01f6a41406f),CNST_LIMB(0x86099ef0c8886)), + P(7829,CNST_LIMB(0xb78a05b08aa4bcbd),CNST_LIMB(0x85ef52d38fe87)), + P(7841,CNST_LIMB(0x3434a14919d34561),CNST_LIMB(0x85bad981c7847)), + P(7853,CNST_LIMB(0xccead7dee120f525),CNST_LIMB(0x8586893de7cfc)), + P(7867,CNST_LIMB(0xe1375a2bccd87673),CNST_LIMB(0x8549b491e9efe)), + P(7873,CNST_LIMB(0xf727d51420a57141),CNST_LIMB(0x852fb3859bea4)), + P(7877,CNST_LIMB(0x2c3b68cfbcebb00d),CNST_LIMB(0x851e631fc08f8)), + P(7879,CNST_LIMB(0xda91e2f3e17542f7),CNST_LIMB(0x8515bc9cde5f1)), + P(7883,CNST_LIMB(0xb55f6100ae95d6e3),CNST_LIMB(0x850472f6185b3)), + P(7901,CNST_LIMB(0x6a0c608e0bbaa975),CNST_LIMB(0x84b6defbc166b)), + P(7907,CNST_LIMB(0xac5f2fc151c016cb),CNST_LIMB(0x849d17159854b)), + P(7919,CNST_LIMB(0xb1e5af8146e4d00f),CNST_LIMB(0x8469a54a20645)), + P(7927,CNST_LIMB(0x6e283d3b112602c7),CNST_LIMB(0x84476f9401ade)), + P(7933,CNST_LIMB(0xf9a48bcb76c96e55),CNST_LIMB(0x842dd2e2dc25d)), + P(7937,CNST_LIMB(0xa776780ca4c0e101),CNST_LIMB(0x841cc543f58cb)), +#define SMALLEST_OMITTED_PRIME 7949 +#endif +#ifdef WANT_ptab + {CNST_LIMB(0x444437fed9a2349),{CNST_LIMB(0xe00056482545e92a),5,CNST_LIMB(0x2e044fdfbae4),CNST_LIMB(0x2c8f9615733fe6),CNST_LIMB(0x15319a745d44889),CNST_LIMB(0x30314bfee31fe08),CNST_LIMB(0x213845b5eb1d02b)},0,14}, + {CNST_LIMB(0x34091fa96ffdf47b),{CNST_LIMB(0x3adc72bf62f96a49),2,CNST_LIMB(0x2fdb815a40082e14),CNST_LIMB(0xa2fb4713ee182be),CNST_LIMB(0x6691fcc7a3042b5),CNST_LIMB(0xd7baca281bd7bfe),CNST_LIMB(0x31645ad7700b6fe1)},14,10}, + {CNST_LIMB(0x3c47d8d728a77ebb),{CNST_LIMB(0xfcb9aee19f3d0ca),2,CNST_LIMB(0xee09ca35d620514),CNST_LIMB(0x25e3c1639f7dc597),CNST_LIMB(0x176f977d1145f08f),CNST_LIMB(0x4a431b566c292ba),CNST_LIMB(0x100ae9d9482d6937)},24,9}, + {CNST_LIMB(0x77ab7da9d709ea9),{CNST_LIMB(0x11d1e7012ab3aa25),5,CNST_LIMB(0x1b394f7170aed8e),CNST_LIMB(0x546efaf8f3107d0),CNST_LIMB(0x42ed2efa9db39d8),CNST_LIMB(0xcf1c08fc6f825e),CNST_LIMB(0x252dd3fc3932c60)},33,8}, + {CNST_LIMB(0x310df3e7bd4bc897),{CNST_LIMB(0x4dfeef7ace095886),2,CNST_LIMB(0xaba3c794d85150d),CNST_LIMB(0x17a7ea757afc9b41),CNST_LIMB(0x27386bf8f31e3ba7),CNST_LIMB(0x14f913784ca1b09a),CNST_LIMB(0x19a5850266378808)},41,8}, + {CNST_LIMB(0xd997f089e8af1f),{CNST_LIMB(0x2d2f79839e6b7329),8,CNST_LIMB(0x285a2dd96a188d),CNST_LIMB(0x334ffbd384a516),CNST_LIMB(0xd9f5c4d959d8c),CNST_LIMB(0x1a7b0c8f9e2a8),CNST_LIMB(0x51d4df5ea86eca)},49,7}, + {CNST_LIMB(0x2514ab8fece6d79),{CNST_LIMB(0xb9d8ba8530d526d2),6,CNST_LIMB(0x111e482834cf602),CNST_LIMB(0x2099b9b4399ea77),CNST_LIMB(0xa7e65453d2c58b),CNST_LIMB(0x1543e97a71ba902),CNST_LIMB(0x13c9258fa65ea5c)},56,7}, + {CNST_LIMB(0x690efbefde431f9),{CNST_LIMB(0x37e6fe9321e30a89),5,CNST_LIMB(0x67c69a65020950a),CNST_LIMB(0x3d4da34fd3fb29d),CNST_LIMB(0x4481530580bf270),CNST_LIMB(0x53418b541a702fb),CNST_LIMB(0x5a63ba140615695)},63,7}, + {CNST_LIMB(0xf49e199a5f2f371),{CNST_LIMB(0xbe97cf50195e4cf),4,CNST_LIMB(0xb61e665a0d0c8f0),CNST_LIMB(0x12404319392532e),CNST_LIMB(0xc11fa27489010aa),CNST_LIMB(0x9486cdb3a063f1d),CNST_LIMB(0x90fb58fe1716f29)},70,7}, + {CNST_LIMB(0x20e4ce7eee0a5edf),{CNST_LIMB(0xf216910d87cce9ec),2,CNST_LIMB(0x19be5a877db767e7),CNST_LIMB(0x14174edbad8e4db0),CNST_LIMB(0x13aa47a54ebc0ab3),CNST_LIMB(0x34e03d849eed1a0),CNST_LIMB(0x1c348c675b2b87a9)},77,7}, + {CNST_LIMB(0x3c3b299a83e166e5),{CNST_LIMB(0x1004d8385b0845e0),2,CNST_LIMB(0xf135995f07a646c),CNST_LIMB(0x39f996f3e7c62cb6),CNST_LIMB(0x10e385c8b908ec46),CNST_LIMB(0x108780c61cd93a1),CNST_LIMB(0xece590a749ce9e6)},84,7}, + {CNST_LIMB(0x7385117dabf89767),{CNST_LIMB(0x1ba83180cf48fd02),1,CNST_LIMB(0x18f5dd04a80ed132),CNST_LIMB(0x134aacf48cf374fd),CNST_LIMB(0x5f5e8ab304a603e1),CNST_LIMB(0x8196d4d84952f0b),CNST_LIMB(0x27fbce261e06981)},91,7}, + {CNST_LIMB(0x6b1dd94152d113),{CNST_LIMB(0x31e8de86cb665558),9,CNST_LIMB(0x57c2791756ffa7),CNST_LIMB(0x155d1b6359e72e),CNST_LIMB(0x26e2dd434311d6),CNST_LIMB(0x2d6624583bf57f),CNST_LIMB(0x4b3c0311592466)},98,6}, + {CNST_LIMB(0x9bed1488742f9b),{CNST_LIMB(0xa44d3b1c6d785d44),8,CNST_LIMB(0x2f0a502161e5b4),CNST_LIMB(0x9197cc3e5a5b04),CNST_LIMB(0x58ecad625341f6),CNST_LIMB(0x2c8e81222f4972),CNST_LIMB(0x1f80904334e61e)},104,6}, + {CNST_LIMB(0xd851b0362c316b),{CNST_LIMB(0x2ef5b88db4540035),8,CNST_LIMB(0xcfa22017ddb3c6),CNST_LIMB(0x213062fd865691),CNST_LIMB(0x81822846481a0d),CNST_LIMB(0x4b3f5844dfd386),CNST_LIMB(0x746b08e79bff57)},110,6}, + {CNST_LIMB(0x129e6025385b5e9),{CNST_LIMB(0xb7fd23d5247f5d33),7,CNST_LIMB(0x1283c028c9d61ad),CNST_LIMB(0x8a2496a2184268),CNST_LIMB(0x702aa9d6cae97c),CNST_LIMB(0x8700d0e7b38adb),CNST_LIMB(0x562031b42d3873)},116,6}, + {CNST_LIMB(0x1b399405df9e1d9),{CNST_LIMB(0x2ce69e058ed22408),7,CNST_LIMB(0xc43448ef95aada),CNST_LIMB(0x2a35f6f5397332),CNST_LIMB(0x18bba0a2b06f9b5),CNST_LIMB(0x1bf0769bdd0a51),CNST_LIMB(0xdaf86a9dd4f157)},122,6}, + {CNST_LIMB(0x26a9c83b1da0183),{CNST_LIMB(0xa7c312b1de2834bc),6,CNST_LIMB(0x245cdfc0d956145),CNST_LIMB(0xcfb5812fdbb80b),CNST_LIMB(0x7f9bd0fd4d9771),CNST_LIMB(0x206d41f157b339d),CNST_LIMB(0x1597d040f39bed6)},128,6}, + {CNST_LIMB(0x36518f1ed35fae9),{CNST_LIMB(0x2da0bb538e68c61b),6,CNST_LIMB(0x161b11f812f7dbd),CNST_LIMB(0x1912054119f8337),CNST_LIMB(0x28b68baf0254a33),CNST_LIMB(0x1febc2a846ec627),CNST_LIMB(0x106e286e91657ac)},134,6}, + {CNST_LIMB(0x499cea9952ffcb7),{CNST_LIMB(0xbd2398239911cb86),5,CNST_LIMB(0x2f49990f2b0b4af),CNST_LIMB(0x3efc376b6d3879a),CNST_LIMB(0x16bf595684e7cae),CNST_LIMB(0x2096f989291e15a),CNST_LIMB(0x3f877653fe30a29)},140,6}, + {CNST_LIMB(0x603dc1f0578e36b),{CNST_LIMB(0x547a4d1f60bb6de6),5,CNST_LIMB(0x35de2e91a2ab072),CNST_LIMB(0x3ae19a039d933f9),CNST_LIMB(0x49f04fa32aed515),CNST_LIMB(0x49f39ce5e69737b),CNST_LIMB(0x48e7a8d6354cb3f)},146,6}, + {CNST_LIMB(0x822f4ff1bb75c7d),{CNST_LIMB(0xf7684c1a915fd94f),4,CNST_LIMB(0x3c4551ba4cbccdd),CNST_LIMB(0x3e072857c5d22e8),CNST_LIMB(0x757d8256f24de27),CNST_LIMB(0x256d9df09b5df5c),CNST_LIMB(0x19974713584ab80)},152,6}, + {CNST_LIMB(0xacfc9fbdf683023),{CNST_LIMB(0x7ad9852da99412df),4,CNST_LIMB(0x754da5eeda3acdb),CNST_LIMB(0x91f55d002dee623),CNST_LIMB(0x96936cc5e49d5ea),CNST_LIMB(0x766649a4996390),CNST_LIMB(0xaa8c52b8eea17dd)},158,6}, + {CNST_LIMB(0xe09d410f1fe4edb),{CNST_LIMB(0x23c5744aa32cf453),4,CNST_LIMB(0x34f16cefc1e749a),CNST_LIMB(0x2668179180c1b62),CNST_LIMB(0xdb241be2f133397),CNST_LIMB(0xa7c11527a49744e),CNST_LIMB(0x67d18e0669fea5b)},164,6}, + {CNST_LIMB(0x1149424a578f0ce7),{CNST_LIMB(0xd9e7a906d91cf1db),3,CNST_LIMB(0xdfe5fef362d4b5e),CNST_LIMB(0xcf056a84b77c77c),CNST_LIMB(0x985dfab0d2bd76b),CNST_LIMB(0xf57931f6922ec07),CNST_LIMB(0x44b19bfab74d6)},170,6}, + {CNST_LIMB(0x15b025d5fd579777),{CNST_LIMB(0x79b813c3ed8f4fd2),3,CNST_LIMB(0x116e5fce1d3c7de3),CNST_LIMB(0x1468c60d0220a399),CNST_LIMB(0xf10192b1089742d),CNST_LIMB(0xeae0b108eba5be6),CNST_LIMB(0xf0e98ff5e4d57d4)},176,6}, + {CNST_LIMB(0x1a5f81f6e38d3f1d),{CNST_LIMB(0x369eab91d724ae89),3,CNST_LIMB(0x12a46e520008c7fb),CNST_LIMB(0x638a97340d45e81),CNST_LIMB(0x12b4b0c893a62d44),CNST_LIMB(0x1072dcd55e5547d0),CNST_LIMB(0x18ce18c4a086d95f)},182,6}, + {CNST_LIMB(0x23293bf9b6fe2259),{CNST_LIMB(0xd1f849a43b917c65),2,CNST_LIMB(0x9df5c2bff0d0f91),CNST_LIMB(0xff1fdef6c15b8c),CNST_LIMB(0xec1383d93946006),CNST_LIMB(0x20ce6fd4fbbb8838),CNST_LIMB(0x55871453993a979)},188,6}, + {CNST_LIMB(0x2c1eaa6645e21b17),{CNST_LIMB(0x735a473662e09835),2,CNST_LIMB(0x2366ac00a295788d),CNST_LIMB(0xf8778468c26bac6),CNST_LIMB(0x10ecc751d2724c63),CNST_LIMB(0x4882fbd9d3d43e1),CNST_LIMB(0x2de76607a7f1541)},194,6}, + {CNST_LIMB(0x3646542a1110061b),{CNST_LIMB(0x2ddf24b018173a2c),2,CNST_LIMB(0x26e6af57bbbfe794),CNST_LIMB(0x1974e8d33a8f431f),CNST_LIMB(0x34da7258db6f7b4f),CNST_LIMB(0x2af310e921f874f8),CNST_LIMB(0x3cfeed9d4afc97)},200,6}, + {CNST_LIMB(0x4125602df5b7fa0b),{CNST_LIMB(0xf6fe47f7e339f3ce),1,CNST_LIMB(0x3c8fdf761ed811df),CNST_LIMB(0x145648c8769aba41),CNST_LIMB(0x3270209c06bd9a17),CNST_LIMB(0x2c03f98e45b9dca3),CNST_LIMB(0x3341dcfe340ee93e)},206,6}, + {CNST_LIMB(0x4e06bb83aa64f48d),{CNST_LIMB(0xa3f6020ab0b7e0d3),1,CNST_LIMB(0x15ebcd7500d12259),CNST_LIMB(0x786bf28f0081f92),CNST_LIMB(0x15d832d09f03b587),CNST_LIMB(0xaa3e94d54c2a575),CNST_LIMB(0x471850a042d21386)},212,6}, + {CNST_LIMB(0x6953db39a8298d8b),{CNST_LIMB(0x371b0bbe24632f20),1,CNST_LIMB(0x2d58498caface4ea),CNST_LIMB(0x557c399022219340),CNST_LIMB(0x2cb32a1a8fdd68c2),CNST_LIMB(0x122684249d42b9a9),CNST_LIMB(0x13c80507e77a929c)},218,6}, + {CNST_LIMB(0x15fafabe1c1777),{CNST_LIMB(0x74b22475baab0cce),11,CNST_LIMB(0xc763842e2c34d),CNST_LIMB(0x77d3f710b457b),CNST_LIMB(0x155a43f5525196),CNST_LIMB(0x148e30e0a5dee3),CNST_LIMB(0x13aa97836b8150)},224,5}, + {CNST_LIMB(0x18552ab4f8303b),{CNST_LIMB(0x50aaa1ed4d926e62),11,CNST_LIMB(0x815be492ca359),CNST_LIMB(0x1b55fe26d36ad),CNST_LIMB(0x113a54ceb7846),CNST_LIMB(0x1688511dfe47f),CNST_LIMB(0x66ccabff6c6c8)},229,5}, + {CNST_LIMB(0x1a99c2502dda5f),{CNST_LIMB(0x33f675a22ebecef5),11,CNST_LIMB(0x12ab7e96d807ff),CNST_LIMB(0x1d3db891dce3b),CNST_LIMB(0x19511de2e3095c),CNST_LIMB(0x2741e555a0bff),CNST_LIMB(0x51c7d31a19281)},234,5}, + {CNST_LIMB(0x1ebf9e78cd7ecb),{CNST_LIMB(0xa6b5da36fa2470c),11,CNST_LIMB(0xaebd869698c2f),CNST_LIMB(0x18e178fc70e26a),CNST_LIMB(0x64439ec9707b5),CNST_LIMB(0x116d1f70d29f20),CNST_LIMB(0xeea2317a9a585)},239,5}, + {CNST_LIMB(0x2214c7d5d9ce07),{CNST_LIMB(0xe0bc0f6215d26cf9),10,CNST_LIMB(0x1ffbac72c32f72),CNST_LIMB(0x1447f31b055129),CNST_LIMB(0x122d28bd754f9a),CNST_LIMB(0x106685d95b6d85),CNST_LIMB(0x18c9fdf391bdff)},244,5}, + {CNST_LIMB(0x25e2755d49ffa7),{CNST_LIMB(0xb078a0cae16506b6),10,CNST_LIMB(0x218554ef385919),CNST_LIMB(0xe00c975692d8e),CNST_LIMB(0x1afd2511d2f776),CNST_LIMB(0x108b0b031673f7),CNST_LIMB(0x8d919ed067cf0)},249,5}, + {CNST_LIMB(0x2925e3d5425d41),{CNST_LIMB(0x8e2c20d6f8f795ce),10,CNST_LIMB(0x1c5f29cb4c13c8),CNST_LIMB(0x15e11f6e5f634),CNST_LIMB(0xb32166d7982b3),CNST_LIMB(0xa636cf5c4f642),CNST_LIMB(0x28f997d81938bc)},254,5}, + {CNST_LIMB(0x2f39e99d11c26d),{CNST_LIMB(0x5aed08e710697213),10,CNST_LIMB(0x213b4a00c79b71),CNST_LIMB(0x1bd2737e294111),CNST_LIMB(0xd01c8aaaae314),CNST_LIMB(0xb00f1e27ed99e),CNST_LIMB(0x1d21748adab7e4)},259,5}, + {CNST_LIMB(0x3502a3ce62a769),{CNST_LIMB(0x35126ab40383fc5c),10,CNST_LIMB(0xf411f8bafb90c),CNST_LIMB(0x1fa38c975e6347),CNST_LIMB(0xf4058b043df4e),CNST_LIMB(0x2af2733656b159),CNST_LIMB(0x196e94f446c597)},264,5}, + {CNST_LIMB(0x3b357b23b014b1),{CNST_LIMB(0x14b711563eba7d77),10,CNST_LIMB(0x32f1ffd1469b4e),CNST_LIMB(0x197f48859c01a3),CNST_LIMB(0x29509dc5352d40),CNST_LIMB(0x335e5c9ef5d7fe),CNST_LIMB(0x284e1a5376a683)},269,5}, + {CNST_LIMB(0x420d06773114d3),{CNST_LIMB(0xf01a36d7bbf66dfc),9,CNST_LIMB(0xd86f221cf4e60),CNST_LIMB(0x728955d2f4a8d),CNST_LIMB(0x1a631ed35adca5),CNST_LIMB(0x2d592810a2cd39),CNST_LIMB(0x1215b15f856f68)},274,5}, + {CNST_LIMB(0x4c19f733c90d09),{CNST_LIMB(0xae954f9b28df48d8),9,CNST_LIMB(0xcab96d4cf28bb),CNST_LIMB(0x42b5fc3fd6e7ec),CNST_LIMB(0x2b7f897adc30de),CNST_LIMB(0x1a97bb06e110c0),CNST_LIMB(0x304db431256118)},279,5}, + {CNST_LIMB(0x52f224bf890ffd),{CNST_LIMB(0x8b0d84b8653cb09f),9,CNST_LIMB(0x8c298ef08a942),CNST_LIMB(0x2999ac4ebb9e26),CNST_LIMB(0x3dd9eb9ca2c026),CNST_LIMB(0x43401c4563f790),CNST_LIMB(0x38d5e8bf6d2c89)},284,5}, + {CNST_LIMB(0x5bf703dda941b1),{CNST_LIMB(0x644f51d4add132a4),9,CNST_LIMB(0x38fd3f81414bb8),CNST_LIMB(0x20049119d93b7c),CNST_LIMB(0x4e479d97844206),CNST_LIMB(0x294a3066f3b775),CNST_LIMB(0x1c21bda84cf2fc)},289,5}, + {CNST_LIMB(0x68cf321fe6202f),{CNST_LIMB(0x38a4d27caeef8e91),9,CNST_LIMB(0x1e26a01f2b6d41),CNST_LIMB(0x9e9e8993d282b),CNST_LIMB(0x417ad2819cd4fb),CNST_LIMB(0x627fb183ab0b1a),CNST_LIMB(0x278b9f029564e7)},294,5}, + {CNST_LIMB(0x71dad4e06cde9b),{CNST_LIMB(0x1fce1dcd4eb47a27),9,CNST_LIMB(0x457bdbeb7801db),CNST_LIMB(0x1f2b3df5db8f09),CNST_LIMB(0x2149ca25813ef0),CNST_LIMB(0x17d20c710e4487),CNST_LIMB(0x40ceb8ee4ca73d)},299,5}, + {CNST_LIMB(0x7b5e9ca091c63d),{CNST_LIMB(0x99bc23041414782),9,CNST_LIMB(0x1ac11ef1a1cf79),CNST_LIMB(0x313f0652fefffc),CNST_LIMB(0x12f34ea4e7a5db),CNST_LIMB(0x2aa2b3b3300bfd),CNST_LIMB(0x3245caffd0690c)},304,5}, + {CNST_LIMB(0x892f2017af4a77),{CNST_LIMB(0xddb91a666e887a07),8,CNST_LIMB(0x633133de624045),CNST_LIMB(0x7f207860875935),CNST_LIMB(0x702aff29ff7777),CNST_LIMB(0x1cc53fa2f53db9),CNST_LIMB(0x2c5ff88b6e27ee)},309,5}, + {CNST_LIMB(0x93efab3d98e265),{CNST_LIMB(0xbb00736076c6c8fc),8,CNST_LIMB(0x42ac68703b39),CNST_LIMB(0x4d4d015d5d1bd7),CNST_LIMB(0x85c801afb0f411),CNST_LIMB(0x4579d8022d0a69),CNST_LIMB(0x32ea2e520e3d23)},314,5}, + {CNST_LIMB(0x9fd1e9a289b8f9),{CNST_LIMB(0x9a0fb77008192e78),8,CNST_LIMB(0x9cfd1af6dc136),CNST_LIMB(0x23a28bc352c87c),CNST_LIMB(0x582383446e53c2),CNST_LIMB(0x3d52e0695b07e4),CNST_LIMB(0x83c6fc0e7cfd23)},319,5}, + {CNST_LIMB(0xb3ffc82a3b00bb),{CNST_LIMB(0x6c17325c7676de1f),8,CNST_LIMB(0x104f63f41af61c),CNST_LIMB(0x838ff92da5d267),CNST_LIMB(0xb37001a22f0194),CNST_LIMB(0x4487295b668b16),CNST_LIMB(0xa06ce4ed65729d)},324,5}, + {CNST_LIMB(0xc78aab3260ed67),{CNST_LIMB(0x486ec1d048657b5d),8,CNST_LIMB(0x5654a773cfd408),CNST_LIMB(0xb3f20a79edde43),CNST_LIMB(0xaebbd1a69724dd),CNST_LIMB(0x81191f0503a9),CNST_LIMB(0x3b54fc6e1ed034)},329,5}, + {CNST_LIMB(0xd8b06a4b9eddc9),{CNST_LIMB(0x2e7147c081441aeb),8,CNST_LIMB(0x5fe29aca965ce2),CNST_LIMB(0x9cb19caad665ca),CNST_LIMB(0x147b04c65844fd),CNST_LIMB(0x7a1c878be8db45),CNST_LIMB(0x8f4f4d51c80dfd)},334,5}, + {CNST_LIMB(0xe8f35bfe49ae4b),{CNST_LIMB(0x19547b44fa632b82),8,CNST_LIMB(0x4ce005e11fafad),CNST_LIMB(0x57f2d94de4ea00),CNST_LIMB(0xb885b9e976e473),CNST_LIMB(0x1eb25c197e9b39),CNST_LIMB(0xe2c45221f5cdb7)},339,5}, + {CNST_LIMB(0xfcff7f19788a27),{CNST_LIMB(0x3099f4bf7423272),8,CNST_LIMB(0x982693b0c3a8b),CNST_LIMB(0xa6eee9dce0fc63),CNST_LIMB(0xf1290f2b74223c),CNST_LIMB(0x36c85e11826e0b),CNST_LIMB(0xbe15668a4d3771)},344,5}, + {CNST_LIMB(0x10f681c21a80325),{CNST_LIMB(0xe2ef902951d2322d),7,CNST_LIMB(0x7efd8450d50a2b),CNST_LIMB(0x37c115b60abfde),CNST_LIMB(0x4a31517b3a2c0),CNST_LIMB(0x8ee426b2c25e26),CNST_LIMB(0xaf5e09c0582f8)},349,5}, + {CNST_LIMB(0x11ffa8ecf7814fb),{CNST_LIMB(0xc7250b86192832ab),7,CNST_LIMB(0xa4d35e0885656f),CNST_LIMB(0x6d14e9be5101ec),CNST_LIMB(0x93b36726a244a),CNST_LIMB(0xb56f38bde55186),CNST_LIMB(0x11443988cbd610f)},354,5}, + {CNST_LIMB(0x139b8ddf439b133),{CNST_LIMB(0xa1cbe52ffcdca969),7,CNST_LIMB(0x119cba991200690),CNST_LIMB(0xa8a1be12145159),CNST_LIMB(0x49831f7f1eb091),CNST_LIMB(0x5fe3a0bd210422),CNST_LIMB(0x11b90612ebf719f)},359,5}, + {CNST_LIMB(0x15b90aaef040351),{CNST_LIMB(0x791d6da971f79fb1),7,CNST_LIMB(0xc1c278790d9084),CNST_LIMB(0xa6bc771172ca70),CNST_LIMB(0x1219044d36b161b),CNST_LIMB(0x9363a00d9d3f5f),CNST_LIMB(0x14079ec2a37ea93)},364,5}, + {CNST_LIMB(0x17d664f86c88bd3),{CNST_LIMB(0x57a9176de3f40918),7,CNST_LIMB(0x13ca8e0f80a9a0f),CNST_LIMB(0xfc1ecc66c0c93b),CNST_LIMB(0x15be6192051cb1a),CNST_LIMB(0x136f263b7a50fcc),CNST_LIMB(0x3820db8623a7)},369,5}, + {CNST_LIMB(0x1a44cc5ef4c16b5),{CNST_LIMB(0x37da80020a7d1f74),7,CNST_LIMB(0x18584281cee4069),CNST_LIMB(0x178a63d22596ba9),CNST_LIMB(0x6739c7c5ac4f2d),CNST_LIMB(0x14c57a38e4d612a),CNST_LIMB(0x13d2e7fd35623ae)},374,5}, + {CNST_LIMB(0x1ca80b29773de79),{CNST_LIMB(0x1dde9f723a4f55dc),7,CNST_LIMB(0x1ac9ceffdba98e2),CNST_LIMB(0xf4618a5f0fdaa9),CNST_LIMB(0x17b96b4ded53ebb),CNST_LIMB(0x7faf749bdd9cb1),CNST_LIMB(0xfa9d50111fc549)},379,5}, + {CNST_LIMB(0x1e7b019a7fa8931),{CNST_LIMB(0xcc3160c520cdb96),7,CNST_LIMB(0xb9d29212dc305a),CNST_LIMB(0x91586fa7d2facc),CNST_LIMB(0x2638c4c9135f19),CNST_LIMB(0x1c315565816b84a),CNST_LIMB(0xa92e9c918ad70f)},384,5}, + {CNST_LIMB(0x1fd932c2a6c3463),{CNST_LIMB(0x137e41a0c0b8d4f),7,CNST_LIMB(0x13669eac9e5ce80),CNST_LIMB(0x94dc55b30276b5),CNST_LIMB(0x1c52a400cc7dae6),CNST_LIMB(0x1cd876c8023e81b),CNST_LIMB(0x8e06dbbb7e4c2d)},389,5}, + {CNST_LIMB(0x2175e8bd7050e79),{CNST_LIMB(0xe9a698d03a5e604b),6,CNST_LIMB(0xdcf15b87971a56),CNST_LIMB(0x2e9e439e7517fb),CNST_LIMB(0x85bbfca7ac6da9),CNST_LIMB(0x500c9508abde31),CNST_LIMB(0x1c9d7aa292a48b0)},394,5}, + {CNST_LIMB(0x24033b205fe4527),{CNST_LIMB(0xc6f39cee1695e79a),6,CNST_LIMB(0x1a92e6b5ac379c9),CNST_LIMB(0x1f1b86c0e7f8d15),CNST_LIMB(0x1e362d27d79fda9),CNST_LIMB(0x4dcd13ebf2a00a),CNST_LIMB(0x408b8bd354f1b4)},399,5}, + {CNST_LIMB(0x265d2eb09cdc073),{CNST_LIMB(0xab112e468a91ceb0),6,CNST_LIMB(0x1d6aaadf0ce5062),CNST_LIMB(0x8cb5be41003782),CNST_LIMB(0x52b9980c0c4bec),CNST_LIMB(0x2228f2e6cbe8667),CNST_LIMB(0xca6f7400df044e)},404,5}, + {CNST_LIMB(0x2953a0e65ca6a1d),{CNST_LIMB(0x8c7372d9ab5569c1),6,CNST_LIMB(0x4a8c6ea2b8f6c9),CNST_LIMB(0x3588f2393801ce),CNST_LIMB(0x1fce38ab648e336),CNST_LIMB(0x89544c1c4d5e80),CNST_LIMB(0x6e5d409692ed37)},409,5}, + {CNST_LIMB(0x2c67f25a6bc9c63),{CNST_LIMB(0x70f57416f0cce89e),6,CNST_LIMB(0xaa4e781437cc6c),CNST_LIMB(0x1c38f9d456ca8d),CNST_LIMB(0x2682eae3a0afadb),CNST_LIMB(0x2b54835e8a4f4ca),CNST_LIMB(0x1ff894f600fa94f)},414,5}, + {CNST_LIMB(0x2fdd1a7524ae76d),{CNST_LIMB(0x564e31abce2eba47),6,CNST_LIMB(0x1b96371ad2128cf),CNST_LIMB(0x35309a6895ab0d),CNST_LIMB(0x14de5531da96df1),CNST_LIMB(0x3a924ccc42ac90),CNST_LIMB(0x315a6b9b99a595)},419,5}, + {CNST_LIMB(0x33770e6e18aeb53),{CNST_LIMB(0x3e5a14fd0434a100),6,CNST_LIMB(0x1e428c066216163),CNST_LIMB(0x93d03854bffefa),CNST_LIMB(0x77e62b6df8d4a1),CNST_LIMB(0x8a8b138bb2ed69),CNST_LIMB(0x292d249664af8db)},424,5}, + {CNST_LIMB(0x379c7dff6334d3b),{CNST_LIMB(0x269dcc0c8d56e875),6,CNST_LIMB(0x2460122cb5efa2d),CNST_LIMB(0x28e51e3c7265f2e),CNST_LIMB(0x1efacb51926e686),CNST_LIMB(0xfc8248ae79bd5f),CNST_LIMB(0x2f3b91b1fe1f65)},429,5}, + {CNST_LIMB(0x3b82f15f7249c49),{CNST_LIMB(0x134ee332d51f0306),6,CNST_LIMB(0x3137e2a5a467c9c),CNST_LIMB(0x79d488798b4960),CNST_LIMB(0xb436578d1069bb),CNST_LIMB(0x10ad84e585582d0),CNST_LIMB(0x3215616c9b153bf)},434,5}, + {CNST_LIMB(0x3fff4dd17ad4ff9),{CNST_LIMB(0x2c8c1d50d30af),6,CNST_LIMB(0x2c8ba14ac01c0),CNST_LIMB(0x2bd06852b51e327),CNST_LIMB(0x30714e5452d2c1),CNST_LIMB(0x327ff42efc6d9c),CNST_LIMB(0x244bb5001864710)},439,5}, + {CNST_LIMB(0x465670cc294b181),{CNST_LIMB(0xd1ddf947b9d55be0),5,CNST_LIMB(0x106a71bea4fc8c6),CNST_LIMB(0xa255b26c45d27f),CNST_LIMB(0x460d26a6240e466),CNST_LIMB(0x1dda425d1868b60),CNST_LIMB(0x3d6eff8580e97e1)},444,5}, + {CNST_LIMB(0x4aaaab2fe3fee47),{CNST_LIMB(0xb6db6aa7d3a37a63),5,CNST_LIMB(0x3fffe3e5e83bd06),CNST_LIMB(0xa8a65f30809160),CNST_LIMB(0xbfd8fef4142370),CNST_LIMB(0x358c77f78c2a4d0),CNST_LIMB(0x3a89f0ee6796b95)},449,5}, + {CNST_LIMB(0x4f8bbff17c95ef7),{CNST_LIMB(0x9bf032ee57751395),5,CNST_LIMB(0x2728c2e42e214cb),CNST_LIMB(0x37fb2686e89761e),CNST_LIMB(0x4a264029edea029),CNST_LIMB(0x1d504d3aecaaa50),CNST_LIMB(0x45b5a7b35031756)},454,5}, + {CNST_LIMB(0x553ea1ce3216691),{CNST_LIMB(0x806643148e9063ef),5,CNST_LIMB(0x441a9569bcc4d0),CNST_LIMB(0x535ae4be3f071a1),CNST_LIMB(0x545a793067e09d8),CNST_LIMB(0xd5d15c09afe8cd),CNST_LIMB(0x4534c23a01c6a96)},459,5}, + {CNST_LIMB(0x59f7c9a4fefb517),{CNST_LIMB(0x6c37fd6421ef50ed),5,CNST_LIMB(0x2f718dff2dd2af5),CNST_LIMB(0x4aea82d40c5cc72),CNST_LIMB(0x4f7cec2a6861199),CNST_LIMB(0xe868a369a42529),CNST_LIMB(0x40e610cd320b2f7)},464,5}, + {CNST_LIMB(0x5e8d3fa86f95521),{CNST_LIMB(0x5a8fc0667cc240fe),5,CNST_LIMB(0x1e464eb541eb375),CNST_LIMB(0x3892fa43db27fd5),CNST_LIMB(0x4e5c7836ddc791a),CNST_LIMB(0x36e537bed96365e),CNST_LIMB(0x4375094ddcb8820)},469,5}, + {CNST_LIMB(0x64157c62c33e31d),{CNST_LIMB(0x4767bbee2675bc54),5,CNST_LIMB(0x5ca490917e48378),CNST_LIMB(0x11867a67aa79db0),CNST_LIMB(0x6198c4cbcaf84e6),CNST_LIMB(0x4338ebe5ab25fcf),CNST_LIMB(0x11e91c53e48fd1e)},474,5}, + {CNST_LIMB(0x6ceeed4c43f4183),{CNST_LIMB(0x2cced2b1dae4601a),5,CNST_LIMB(0x4177b3fa2db8811),CNST_LIMB(0x2b3db3648dc8a5),CNST_LIMB(0x50f060794aa127),CNST_LIMB(0x4f7cdc200df8c9a),CNST_LIMB(0x4525db055625df3)},479,5}, + {CNST_LIMB(0x7287ee7e5f96919),{CNST_LIMB(0x1e1b2205d593e3a6),5,CNST_LIMB(0x576a64b8ee6a195),CNST_LIMB(0x7bd2ea513c7027),CNST_LIMB(0x17c4152c6d55daa),CNST_LIMB(0x39f7aac6f902f57),CNST_LIMB(0x14765413bf9b5ca)},484,5}, + {CNST_LIMB(0x79886d10dfa5165),{CNST_LIMB(0xd9f57c223f379ca),5,CNST_LIMB(0x5569f0d32bb81fb),CNST_LIMB(0x6f08a7fc8e770a6),CNST_LIMB(0x2c14d325ec8479f),CNST_LIMB(0x4499d22e49d3c7),CNST_LIMB(0x53f1f1eecdc8c2)},489,5}, + {CNST_LIMB(0x7e13347ac1526bf),{CNST_LIMB(0x3e8a375cf0fb774),5,CNST_LIMB(0x3d9970a7d5b2820),CNST_LIMB(0x3664c9d670bba16),CNST_LIMB(0x6ba929ee3cbcd5c),CNST_LIMB(0xd5d262e6d92452),CNST_LIMB(0x2f545142add8d05)},494,5}, + {CNST_LIMB(0x8566f0377d15459),{CNST_LIMB(0xeb44411c1363bcf4),4,CNST_LIMB(0x5defd97f5781d92),CNST_LIMB(0x16eaae98cb00189),CNST_LIMB(0x986f4f6d77c243),CNST_LIMB(0x57c736925ddfd9),CNST_LIMB(0x10a756243dbe4ca)},499,5}, + {CNST_LIMB(0x8bfc83897e6cdaf),{CNST_LIMB(0xd428ea393317b9f2),4,CNST_LIMB(0x2465196cadab32d),CNST_LIMB(0x7594e9e684d904a),CNST_LIMB(0x19cd4a75383b2d1),CNST_LIMB(0x6a0e9c23f177e64),CNST_LIMB(0x56f0f2ae36c5465)},504,5}, + {CNST_LIMB(0x94ad790245385eb),{CNST_LIMB(0xb8cae8ae9a639526),4,CNST_LIMB(0x51b43cc2b30e037),CNST_LIMB(0x4cb133bb88b3adc),CNST_LIMB(0x3ede33df9c5e3e3),CNST_LIMB(0x665226a2d290ac4),CNST_LIMB(0x33db5ce835ec6e4)},509,5}, + {CNST_LIMB(0x9c30734d93b1379),{CNST_LIMB(0xa397f073b55bde0b),4,CNST_LIMB(0x23144a1f00005b6),CNST_LIMB(0x826ad253a3ed324),CNST_LIMB(0x940ad5d52b4806c),CNST_LIMB(0x1729e9d2d022730),CNST_LIMB(0x20a978fb381a6c2)},514,5}, + {CNST_LIMB(0xa57e1fd7a44fbb9),{CNST_LIMB(0x8c0164efd39df203),4,CNST_LIMB(0x7c2d03c898866a8),CNST_LIMB(0x4037558c6f1e4eb),CNST_LIMB(0x6694cdbbb8803c7),CNST_LIMB(0x99396c89bf97452),CNST_LIMB(0x436126c1b000fab)},519,5}, + {CNST_LIMB(0xaf9b9be9c8401d1),{CNST_LIMB(0x7531f66eca55c19b),4,CNST_LIMB(0x3904fdff023d639),CNST_LIMB(0x962f9b532413fb3),CNST_LIMB(0x27ec74df2758058),CNST_LIMB(0x5836483d1e34f66),CNST_LIMB(0x8384a37fad8866d)},524,5}, + {CNST_LIMB(0xb9ba711d6e4a84f),{CNST_LIMB(0x60dc0b5cc82154b3),4,CNST_LIMB(0x9fa47788598936),CNST_LIMB(0x82bd019c1fa5a56),CNST_LIMB(0x50db17c34711736),CNST_LIMB(0x739121f55c5b75d),CNST_LIMB(0x912fe4d49b6d56)},529,5}, + {CNST_LIMB(0xc41a8a6c63a70d1),{CNST_LIMB(0x4e30c99728e3c197),4,CNST_LIMB(0xaded2f8836f2fac),CNST_LIMB(0xab84ac5c6d525d9),CNST_LIMB(0x488aa0b1f301ccb),CNST_LIMB(0x5fdf2905d976ad6),CNST_LIMB(0x5cb75a7adbb8561)},534,5}, + {CNST_LIMB(0xcd79628a71801f7),{CNST_LIMB(0x3ef33887b9ad5b44),4,CNST_LIMB(0xbffdafb9937daab),CNST_LIMB(0x8c3722255b2b8c7),CNST_LIMB(0x63cd1bbc0e9c22a),CNST_LIMB(0xbd17bc2e12ad950),CNST_LIMB(0x15e9799e0d76f1e)},539,5}, + {CNST_LIMB(0xd6f67d4726eaaf5),{CNST_LIMB(0x30df0c865cc92a96),4,CNST_LIMB(0xbb4b3b81c94fd1),CNST_LIMB(0x2a20ca76128ce99),CNST_LIMB(0x4a4022bdd8f612e),CNST_LIMB(0x3bafa50d5be5f8b),CNST_LIMB(0xb86a67f06630908)},544,5}, + {CNST_LIMB(0xe5d3b047627f8e3),{CNST_LIMB(0x1d275ac8c78303ec),4,CNST_LIMB(0xbcf14b4275878ed),CNST_LIMB(0x5ee8b82b0662dd),CNST_LIMB(0x77e3de57e11f662),CNST_LIMB(0x5ed59e5dfb5cd16),CNST_LIMB(0xbe6a6366650aef1)},549,5}, + {CNST_LIMB(0xef42ae515bfb29d),{CNST_LIMB(0x11e922af2e24e769),4,CNST_LIMB(0x1c926c98e452393),CNST_LIMB(0xd26a458c9c34765),CNST_LIMB(0x5da54b52a8aa98a),CNST_LIMB(0xa2ed4f828338df7),CNST_LIMB(0xe69ac190926521a)},554,5}, + {CNST_LIMB(0xfd32459f0b3d4bb),{CNST_LIMB(0x2d5ace688e647e9),4,CNST_LIMB(0x2cdba60f4c2b450),CNST_LIMB(0x2577b742a8ed5db),CNST_LIMB(0x144ef4109272736),CNST_LIMB(0xbe9326c4f15e1a9),CNST_LIMB(0xb96de853277fb4f)},559,5}, + {CNST_LIMB(0x10a16ef6c96a16c7),{CNST_LIMB(0xec9602538c0df011),3,CNST_LIMB(0x68a7f8a32c8aa57),CNST_LIMB(0x1445e7d17b921f3),CNST_LIMB(0x81c8debc8176f0b),CNST_LIMB(0xe3a1c5b816e4a65),CNST_LIMB(0xa52ad5bb93c9f4b)},564,5}, + {CNST_LIMB(0x117c2fec47f5e013),{CNST_LIMB(0xd48355880989be17),3,CNST_LIMB(0xb356114108dbef6),CNST_LIMB(0xe7ddeca9ba6a20c),CNST_LIMB(0xf2d7618ea8a6953),CNST_LIMB(0x412256baaec5c27),CNST_LIMB(0x1f8e16ca6e5c0d7)},569,5}, + {CNST_LIMB(0x129a8c10ae1f364b),{CNST_LIMB(0xb857af53b5b43644),3,CNST_LIMB(0xe26e327286a3e31),CNST_LIMB(0xeef9d55a9d06dbf),CNST_LIMB(0xe61febd3beb02b6),CNST_LIMB(0x10d018a00b7fd6a5),CNST_LIMB(0x32009c46e7c1314)},574,5}, + {CNST_LIMB(0x134631392d507059),{CNST_LIMB(0xa9063d94bb92a978),3,CNST_LIMB(0x56f8018b2ea4b7b),CNST_LIMB(0x1270cb710b035935),CNST_LIMB(0x11033d859716c4f9),CNST_LIMB(0xd45bebac416a68c),CNST_LIMB(0xc08fe72fc6eef84)},579,5}, + {CNST_LIMB(0x13fde7755d5fd9ed),{CNST_LIMB(0x99c48a788248a856),3,CNST_LIMB(0x1019267f9f81c8e4),CNST_LIMB(0x394e4098ea8549),CNST_LIMB(0x33c85c2a1514436),CNST_LIMB(0xa1e569d4432f4bb),CNST_LIMB(0x128bfbc862fb3c58)},584,5}, + {CNST_LIMB(0x15698c0906cc26a5),{CNST_LIMB(0x7e957ed81f600c1e),3,CNST_LIMB(0x1476fb9cb53a56e9),CNST_LIMB(0xeff15504451beab),CNST_LIMB(0xdea55fc79c32599),CNST_LIMB(0x76a982d54d956a1),CNST_LIMB(0x4d131625675abd7)},589,5}, + {CNST_LIMB(0x168a1ee80f6d92f5),{CNST_LIMB(0x6b73459d204359d1),3,CNST_LIMB(0x810ac07564aaf79),CNST_LIMB(0x874d5996e15561a),CNST_LIMB(0xb75c73837694b49),CNST_LIMB(0xd4645617d29779b),CNST_LIMB(0x12af15ef931be940)},594,5}, + {CNST_LIMB(0x17daa6de32466fbf),{CNST_LIMB(0x576bc18853c72908),3,CNST_LIMB(0x11757b52093fa28a),CNST_LIMB(0xff4c0f212559944),CNST_LIMB(0x40af9872004a0a5),CNST_LIMB(0x2b2b7c424c54c2b),CNST_LIMB(0x1a2b7130739c4c7)},599,5}, + {CNST_LIMB(0x18ea5f2dbe212911),{CNST_LIMB(0x48ca86c98010be89),3,CNST_LIMB(0x6d8483692b46556),CNST_LIMB(0x305d89220ec48d2),CNST_LIMB(0x1772200dfc1938dc),CNST_LIMB(0xded80c44ca87607),CNST_LIMB(0xb498b0490dc55dd)},604,5}, + {CNST_LIMB(0x1a0fa1ef47787d1b),{CNST_LIMB(0x3a56b20c2d70e08a),3,CNST_LIMB(0x15734e967cc39a0d),CNST_LIMB(0x8fc968191dc0fd3),CNST_LIMB(0x1680d35f18721f8f),CNST_LIMB(0x197b4a3e18c9e8bc),CNST_LIMB(0xc0ad81d645f40c7)},609,5}, + {CNST_LIMB(0x1b673b66a023a93f),{CNST_LIMB(0x2af150ff9195ac0f),3,CNST_LIMB(0x95ee9645ebf0cc9),CNST_LIMB(0x1717202bbc3e0a78),CNST_LIMB(0x126d365df320adf6),CNST_LIMB(0x137d63165361ab0e),CNST_LIMB(0x19ca69d84cc1417c)},614,5}, + {CNST_LIMB(0x1ce34de10c258111),{CNST_LIMB(0x1b9430b6521be183),3,CNST_LIMB(0x18e590f79ed3f778),CNST_LIMB(0xbcbaeb9ec0a1624),CNST_LIMB(0x18f51ac04296ceb6),CNST_LIMB(0x161b15271d06a3e1),CNST_LIMB(0x5f0a62fb317dd86)},619,5}, + {CNST_LIMB(0x1e19674e354f4667),{CNST_LIMB(0x102a99b0acd64358),3,CNST_LIMB(0xf34c58e5585ccc8),CNST_LIMB(0x15fad9b7ef3a5cbd),CNST_LIMB(0x1874ea34e3e274f9),CNST_LIMB(0x841598977c90581),CNST_LIMB(0x1c04690158b888d)},624,5}, + {CNST_LIMB(0x1f3740adb603b24d),{CNST_LIMB(0x66e52892f80015e),3,CNST_LIMB(0x645fa924fe26d98),CNST_LIMB(0xc022a525d7f5a4f),CNST_LIMB(0x16d7e66846e5d65b),CNST_LIMB(0x10105a92c09c5aa9),CNST_LIMB(0xedddad56d23fc0e)},629,5}, + {CNST_LIMB(0x20e7b3c0e3b73671),{CNST_LIMB(0xf1eabc8c8352c9af),2,CNST_LIMB(0x19aa15b9c5fd82e9),CNST_LIMB(0x10fd7c871bd5d222),CNST_LIMB(0x4ee89a76e1259e0),CNST_LIMB(0x1280d75e6bf3c134),CNST_LIMB(0x85e103f1853c3d)},634,5}, + {CNST_LIMB(0x22b5b4fc40d4c35f),{CNST_LIMB(0xd807362226cc7e50),2,CNST_LIMB(0xd080d1a3a2ea867),CNST_LIMB(0x1f068368adc3fde1),CNST_LIMB(0x178240b1c3cf35a9),CNST_LIMB(0x1dc077b2ed00fd8c),CNST_LIMB(0x2e6e64a07f9c833)},639,5}, + {CNST_LIMB(0x23cff30e6fb8f7fd),{CNST_LIMB(0xc97f150b60a9e71b),2,CNST_LIMB(0x5505a9af1f13815),CNST_LIMB(0x22434bb477153d47),CNST_LIMB(0x87670d53a068a58),CNST_LIMB(0x21b754fa0ae7b745),CNST_LIMB(0x2182750984e9f50b)},644,5}, + {CNST_LIMB(0x266a30ee37cc7341),{CNST_LIMB(0xaa808f26b38df4ef),2,CNST_LIMB(0x1982da6ab1354c7a),CNST_LIMB(0xfda1381ca806f81),CNST_LIMB(0x1a31d30d06bd5b7b),CNST_LIMB(0xbc65e21d25000c6),CNST_LIMB(0x132d8167c6a0973b)},649,5}, + {CNST_LIMB(0x283e6bddfbebab6d),{CNST_LIMB(0x971e4733b2e0d2bf),2,CNST_LIMB(0xe8978cc1879fb72),CNST_LIMB(0x1c9e26afc4d767da),CNST_LIMB(0x1e376fcf488c8249),CNST_LIMB(0x977e63f145b0e1d),CNST_LIMB(0xe2db9891e737aa1)},654,5}, + {CNST_LIMB(0x298d29c47d06f16b),{CNST_LIMB(0x8a4e7f92da9842e7),2,CNST_LIMB(0x6b1056511d6577e),CNST_LIMB(0x592f6f3bbda49cc),CNST_LIMB(0x2692769f01fb0a5b),CNST_LIMB(0x5f3e5623e91d30d),CNST_LIMB(0x2104d5242a92b48d)},659,5}, + {CNST_LIMB(0x2afa8c16de374c13),{CNST_LIMB(0x7d364b6556c2b905),2,CNST_LIMB(0x291b438da8eb83a1),CNST_LIMB(0x14222ff3cbf7d671),CNST_LIMB(0x126ac7f90facd4d3),CNST_LIMB(0x46d452f540a8d2),CNST_LIMB(0xb0b0fc23426b0b7)},664,5}, + {CNST_LIMB(0x2c44b3413ab0dee7),{CNST_LIMB(0x721b37f337583151),2,CNST_LIMB(0x22a87fb9da8ba57d),CNST_LIMB(0x26943e2ad67b49d6),CNST_LIMB(0x1ef6cfa904bef1cd),CNST_LIMB(0x18e7d1baf5588938),CNST_LIMB(0x1ad24c5276c66d2f)},669,5}, + {CNST_LIMB(0x2e88fa7433ac7823),{CNST_LIMB(0x60141b17275393e2),2,CNST_LIMB(0x17531bbafda1a751),CNST_LIMB(0xf3ea18441a36068),CNST_LIMB(0x130110257a01259a),CNST_LIMB(0x14122cf2cde8eecc),CNST_LIMB(0x24d25acd522c56b7)},674,5}, + {CNST_LIMB(0x303fb77cc2bfe62b),{CNST_LIMB(0x539292e31ed6db25),2,CNST_LIMB(0xec16a9032408129),CNST_LIMB(0x22483ceeb16c18a3),CNST_LIMB(0x1dd1cf7128399e5a),CNST_LIMB(0x11b3d478af2cbe42),CNST_LIMB(0x2a86cb29ac9873d3)},679,5}, + {CNST_LIMB(0x32eeac8f8d221e55),{CNST_LIMB(0x41ae89b9e560d65a),2,CNST_LIMB(0x156a1323e556857),CNST_LIMB(0x865eccdcf192078),CNST_LIMB(0x29e9014382ce253e),CNST_LIMB(0x737a633527d55ef),CNST_LIMB(0xe3223c22b887658)},684,5}, + {CNST_LIMB(0x354d75b3270eaedd),{CNST_LIMB(0x336093f2bc204c55),2,CNST_LIMB(0x2aca293363c5448c),CNST_LIMB(0x17160152eb4aa39f),CNST_LIMB(0x16b50b70fa80acee),CNST_LIMB(0x2493bd25f34e1536),CNST_LIMB(0x18f710cf9496617c)},689,5}, + {CNST_LIMB(0x37b26a3f703f6027),{CNST_LIMB(0x2629d54caca5a93b),2,CNST_LIMB(0x213657023f027f64),CNST_LIMB(0x257ed9007720600c),CNST_LIMB(0xaf3dcc0f043ce98),CNST_LIMB(0x115787f3ada80173),CNST_LIMB(0x7071885da2772a7)},694,5}, + {CNST_LIMB(0x3a2d837d37f39e39),{CNST_LIMB(0x199e982941bda182),2,CNST_LIMB(0x1749f20b2031871c),CNST_LIMB(0x153d7d45eae3fbc6),CNST_LIMB(0x3035b3e81047b52f),CNST_LIMB(0x3096ed6d9a28fa5a),CNST_LIMB(0x221887c4142d7434)},699,5}, + {CNST_LIMB(0x3d6201596c85db3f),{CNST_LIMB(0xaea3e9ef4bf14aa),2,CNST_LIMB(0xa77fa9a4de89304),CNST_LIMB(0x140df851fb641569),CNST_LIMB(0x275b27f619d2cffb),CNST_LIMB(0x16df2d5134102662),CNST_LIMB(0x10ab318b9b8a8aef)},704,5}, + {CNST_LIMB(0x401080f68635f765),{CNST_LIMB(0xff7c1a4f020138fa),1,CNST_LIMB(0x3fce7d1c6d5e19d1),CNST_LIMB(0x1feb2b2abf929ebc),CNST_LIMB(0x279cb7a4291af740),CNST_LIMB(0x384bce4293f19637),CNST_LIMB(0x168a9776844c9b6f)},709,5}, + {CNST_LIMB(0x41c3dea2c7c4509b),{CNST_LIMB(0xf2421126ad7a2852),1,CNST_LIMB(0x3ab46417a8b30e2f),CNST_LIMB(0x35206295938b9c19),CNST_LIMB(0x317d8909a9980afe),CNST_LIMB(0x195b889376db752f),CNST_LIMB(0xeb8a8f47083a08e)},714,5}, + {CNST_LIMB(0x441255580dcabef7),{CNST_LIMB(0xe1601977719c2988),1,CNST_LIMB(0x33c8fff7d69fc31b),CNST_LIMB(0x3aa78ab59c61fb90),CNST_LIMB(0x3c41600b3a070fd7),CNST_LIMB(0x121266b65d774473),CNST_LIMB(0x5812c8f46959e7)},719,5}, + {CNST_LIMB(0x467e90ff075dfa77),{CNST_LIMB(0xd0d4ccbfd7fdb2ae),1,CNST_LIMB(0x2c844d02e9e6109b),CNST_LIMB(0x395a6f0c5abc0a3c),CNST_LIMB(0x30393c08245d18c3),CNST_LIMB(0xac042a1b1191d06),CNST_LIMB(0x1d0c88b0cc347eed)},724,5}, + {CNST_LIMB(0x35b7e6a52de6b),{CNST_LIMB(0x30ff8515bed6fc1f),14,CNST_LIMB(0x2f4533b937fab),CNST_LIMB(0xeb33cd2951b7),CNST_LIMB(0x28ce28b5e1739),CNST_LIMB(0x30d609f6bade3),CNST_LIMB(0x249a87bc9957)},729,4}, + {CNST_LIMB(0x4b9237b1fac55af1),{CNST_LIMB(0xb19ac3ed68fa0441),1,CNST_LIMB(0x1d4958ea0fafef2d),CNST_LIMB(0x4ba7c350e3c499e),CNST_LIMB(0xe26c59f6a4a42e5),CNST_LIMB(0x4acd391ac5c14c62),CNST_LIMB(0x38a0169051f4a371)},733,5}, + {CNST_LIMB(0x4fa265b31b73c6df),{CNST_LIMB(0x9b7b0be2fb2dbf62),1,CNST_LIMB(0x1118cee6ada4ab63),CNST_LIMB(0x2b4fe57f0434fb44),CNST_LIMB(0x2cffeb10b15bf6),CNST_LIMB(0xe12f06864906a7b),CNST_LIMB(0x2a0824475f11f823)},738,5}, + {CNST_LIMB(0x516d33f3efe608d5),{CNST_LIMB(0x926c85237f2dc355),1,CNST_LIMB(0xbb86424304de581),CNST_LIMB(0x3ec190a9cee7a48e),CNST_LIMB(0xd7d8bfe60d52602),CNST_LIMB(0xdff7561c9c07756),CNST_LIMB(0x3c1d2db82b327710)},743,5}, + {CNST_LIMB(0x545e342d68fbf683),{CNST_LIMB(0x8464ceb2fdd80297),1,CNST_LIMB(0x2e56377c50c1c77),CNST_LIMB(0x474ec2f4bd92576),CNST_LIMB(0x2a5da9663350db1),CNST_LIMB(0x220077cd63148dd2),CNST_LIMB(0x280dcbaf0c2ad61c)},748,5}, + {CNST_LIMB(0x57e94c457826bd6b),{CNST_LIMB(0x74bd3fdb5c8280eb),1,CNST_LIMB(0x502d67750fb2852a),CNST_LIMB(0x45149579eaa28023),CNST_LIMB(0x3bb53a4c0c4db579),CNST_LIMB(0x3a96a3180f221b2),CNST_LIMB(0x27f9af8526a8cf70)},753,5}, + {CNST_LIMB(0x5b9b45655ebf3b79),{CNST_LIMB(0x65b42a0f00510df2),1,CNST_LIMB(0x48c975354281890e),CNST_LIMB(0x2929df87cfd7453c),CNST_LIMB(0x1b6bb026965ae7ed),CNST_LIMB(0x52659a85b7df96c2),CNST_LIMB(0x21db715c0f72134)},758,5}, + {CNST_LIMB(0x5e6ad0d2eaa14c25),{CNST_LIMB(0x5b0e2387ccda26c3),1,CNST_LIMB(0x432a5e5a2abd67b6),CNST_LIMB(0x14b7571d1a05b77d),CNST_LIMB(0x498547c0b3350ce8),CNST_LIMB(0x9d4e28ce05c6c27),CNST_LIMB(0x4913b5ba5c5edc8)},763,5}, + {CNST_LIMB(0x60704759208cd21d),{CNST_LIMB(0x53c7ef8bdf16795b),1,CNST_LIMB(0x3f1f714dbee65bc6),CNST_LIMB(0x25fc61d1a473562),CNST_LIMB(0x158a2ce0171d5fd),CNST_LIMB(0x2f3bdc4b8520f24c),CNST_LIMB(0x4081386865e00703)},768,5}, + {CNST_LIMB(0x63bc6b32a19c883b),{CNST_LIMB(0x488c1dcdc113150a),1,CNST_LIMB(0x3887299abcc6ef8a),CNST_LIMB(0x2aab5731e10d2529),CNST_LIMB(0x5eeeb60320f0bef4),CNST_LIMB(0x18e4d9f1c279596e),CNST_LIMB(0xf478370d7e2465f)},773,5}, + {CNST_LIMB(0x47f6a9e8dab75),{CNST_LIMB(0xc7577d2a861d140e),13,CNST_LIMB(0x435dc14ffaf0e),CNST_LIMB(0x2557057e3745b),CNST_LIMB(0x450b5149277a6),CNST_LIMB(0xda1fae30c112),CNST_LIMB(0x3951ca3221a2d)},778,4}, + {CNST_LIMB(0x6e373b550764872f),{CNST_LIMB(0x294ecadbf29bc1cb),1,CNST_LIMB(0x23918955f136f1a2),CNST_LIMB(0x29cffcf11c6e3647),CNST_LIMB(0x4af7d1191966b3e0),CNST_LIMB(0x38ebd581ce6f80c6),CNST_LIMB(0x14ebbbc9200a6d59)},782,5}, + {CNST_LIMB(0x4ca8ed991d8b9),{CNST_LIMB(0xab7251b581f8c74d),13,CNST_LIMB(0x1639351769382),CNST_LIMB(0x3145f1b0a8e59),CNST_LIMB(0xff20704d1793),CNST_LIMB(0x1cd9e54d284e),CNST_LIMB(0x1602f3ac7db9c)},787,4}, + {CNST_LIMB(0x74b13dc12b016dc1),{CNST_LIMB(0x18ce87a5c4d39e85),1,CNST_LIMB(0x169d847da9fd247e),CNST_LIMB(0x286e093dede24bb5),CNST_LIMB(0x1854fa948ad9109d),CNST_LIMB(0x6b81a8b81781577c),CNST_LIMB(0xad44a3d15bc6be5)},791,5}, + {CNST_LIMB(0x78b0c5ae997e31ef),{CNST_LIMB(0xf811cf8a4bb1f80),1,CNST_LIMB(0xe9e74a2cd039c22),CNST_LIMB(0x30a04d242d0dfd11),CNST_LIMB(0x128fe81eea336414),CNST_LIMB(0x3639736d1defa144),CNST_LIMB(0x5eeb71b0497f58ff)},796,5}, + {CNST_LIMB(0x7dcf3e856f4612d7),{CNST_LIMB(0x47509bc7743383b),1,CNST_LIMB(0x46182f52173da52),CNST_LIMB(0x430e9fd64eeb40e6),CNST_LIMB(0x2774902fd5f53d5b),CNST_LIMB(0x4f5c0d7033943d05),CNST_LIMB(0x3be559075217f3a8)},801,5}, + {CNST_LIMB(0x550e24ca1a54b),{CNST_LIMB(0x81416693b884d74c),13,CNST_LIMB(0xee45b7c01c48),CNST_LIMB(0x3848946d8aec8),CNST_LIMB(0x541aec862a3ac),CNST_LIMB(0x4f2e818315dbc),CNST_LIMB(0xa8197f5fb2b)},806,4}, + {CNST_LIMB(0x573c8f376a18d),{CNST_LIMB(0x779f50fc3a19a6c9),13,CNST_LIMB(0x4fc81955d5129),CNST_LIMB(0xe80abe2896a1),CNST_LIMB(0x3a505801c159e),CNST_LIMB(0x162eeea75d4cd),CNST_LIMB(0x20dd0efbe8570)},810,4}, + {CNST_LIMB(0x589c3c614e917),{CNST_LIMB(0x71cc8c064f8788ee),13,CNST_LIMB(0x325d12375f7e1),CNST_LIMB(0x514f8f320e7d3),CNST_LIMB(0x55cf104cf51d3),CNST_LIMB(0x23278b29858c6),CNST_LIMB(0x3b956eecbdd30)},814,4}, + {CNST_LIMB(0x5a494bafe993d),{CNST_LIMB(0x6aef2ee9b04422dc),13,CNST_LIMB(0x5111950929bd7),CNST_LIMB(0x2c3779cd17b37),CNST_LIMB(0x2b7f886fc6966),CNST_LIMB(0x4f0b47ffa902d),CNST_LIMB(0x10bd268a51d6c)},818,4}, + {CNST_LIMB(0x5bdea84b0b73f),{CNST_LIMB(0x64adca063056bccb),13,CNST_LIMB(0x427b265a68455),CNST_LIMB(0x2ef4f15ac34a6),CNST_LIMB(0x493c4fd89b0ce),CNST_LIMB(0x7e61acb14b3a),CNST_LIMB(0x20d0328207c83)},822,4}, + {CNST_LIMB(0x5d4c55a25a945),{CNST_LIMB(0x5f37ce4e679bb0c3),13,CNST_LIMB(0x5b08caebb5502),CNST_LIMB(0x3d0eab29a51f1),CNST_LIMB(0x3c9ac2f5a187d),CNST_LIMB(0x29304bdf75a79),CNST_LIMB(0x14d681f7ea1f0)},826,4}, + {CNST_LIMB(0x5f286a042b527),{CNST_LIMB(0x585aa50035c6eb19),13,CNST_LIMB(0x1f74be8b4aa53),CNST_LIMB(0x47290f02b2679),CNST_LIMB(0x44c4bd1ee1378),CNST_LIMB(0x51286cbc40de1),CNST_LIMB(0xc379e189a860)},830,4}, + {CNST_LIMB(0x62521adc68615),{CNST_LIMB(0x4d46d1e25221a4ef),13,CNST_LIMB(0x53d112a3ea538),CNST_LIMB(0x26e6ad330e6d8),CNST_LIMB(0x56830d4191021),CNST_LIMB(0xed06536bee19),CNST_LIMB(0x5ba5998aa1cbd)},834,4}, + {CNST_LIMB(0x64f0108522a4b),{CNST_LIMB(0x44a2bea99b1fe52b),13,CNST_LIMB(0x22a1a59e3d4a4),CNST_LIMB(0x55422d57d71a4),CNST_LIMB(0x48b99527500ba),CNST_LIMB(0x5dffbfb3a890f),CNST_LIMB(0x618de61d17b82)},838,4}, + {CNST_LIMB(0x684eced8d04ad),{CNST_LIMB(0x3a25a4304e45cd70),13,CNST_LIMB(0x498e06ad4670c),CNST_LIMB(0x6397605c9b1d3),CNST_LIMB(0x1107048baaf16),CNST_LIMB(0x6292ac8aeb164),CNST_LIMB(0x4def8ba3a7552)},842,4}, + {CNST_LIMB(0x69e938da0b6b9),{CNST_LIMB(0x35644b98f3e9b802),13,CNST_LIMB(0x38dd6fce5c5b4),CNST_LIMB(0x6307e2db6000d),CNST_LIMB(0x56835d316819f),CNST_LIMB(0x2b1da7eb24a08),CNST_LIMB(0xf110b6d6a913)},846,4}, + {CNST_LIMB(0x6bf4be42947af),{CNST_LIMB(0x2f87eee6ccd631e7),13,CNST_LIMB(0x6b0e021f080f0),CNST_LIMB(0x4b469e0f2c53a),CNST_LIMB(0x50664c269b5e3),CNST_LIMB(0x4139b73b961d6),CNST_LIMB(0x13dc91bdbee0f)},850,4}, + {CNST_LIMB(0x6f54dbd6ccf57),{CNST_LIMB(0x26540878c92cd039),13,CNST_LIMB(0x382053afc295a),CNST_LIMB(0x2c8c19e89353d),CNST_LIMB(0x534384d9aa927),CNST_LIMB(0x249d03e328fc1),CNST_LIMB(0x2c57702938274)},854,4}, + {CNST_LIMB(0x71632fdcf6c15),{CNST_LIMB(0x20fdcdbf333d83af),13,CNST_LIMB(0x5242218aef575),CNST_LIMB(0x9ab7cecd8cd3),CNST_LIMB(0x4ea4e8bc18b4d),CNST_LIMB(0x16d9320fd98f4),CNST_LIMB(0x2d2b50a730c10)},858,4}, + {CNST_LIMB(0x7317fb257e1e1),{CNST_LIMB(0x1cb50c1361edfd6e),13,CNST_LIMB(0x489cb7c9fe32a),CNST_LIMB(0x258cf78a73422),CNST_LIMB(0x560fbee8c2cf2),CNST_LIMB(0x467156be8e294),CNST_LIMB(0xc593edc4d71f)},862,4}, + {CNST_LIMB(0x75e5d5c5e4577),{CNST_LIMB(0x15ef86e1cee16113),13,CNST_LIMB(0x6eece492ce925),CNST_LIMB(0x561b9134c02bf),CNST_LIMB(0x596b2a81ab56d),CNST_LIMB(0x296835004dd20),CNST_LIMB(0x3160915ef8c65)},866,4}, + {CNST_LIMB(0x788a813bc2fb1),{CNST_LIMB(0xfd74e4e944c107b),13,CNST_LIMB(0x6e15178139c26),CNST_LIMB(0x7828db84f90d2),CNST_LIMB(0x3e1e0cdc0bb1c),CNST_LIMB(0x4bbcd0685b013),CNST_LIMB(0x60b28bb37de31)},870,4}, + {CNST_LIMB(0x7b02c02e67beb),{CNST_LIMB(0xa621b97c2ae6cdb),13,CNST_LIMB(0x2068f6d99eb3c),CNST_LIMB(0x4ba3bacf8ed2f),CNST_LIMB(0x79baf6516f06a),CNST_LIMB(0x34fac2ffdfb3b),CNST_LIMB(0x601bda55ddca3)},874,4}, + {CNST_LIMB(0x7d0b0166731df),{CNST_LIMB(0x60dcab2ebe68654),13,CNST_LIMB(0x5a87235f786e1),CNST_LIMB(0x498c71a4f2c04),CNST_LIMB(0x6c4cf93aac90f),CNST_LIMB(0x2fc43a717ef2e),CNST_LIMB(0x61100c40f26dc)},878,4}, + {CNST_LIMB(0x7f65827009e4b),{CNST_LIMB(0x13671d16472022c),13,CNST_LIMB(0x66a0a221f20de),CNST_LIMB(0x1863cc32757a5),CNST_LIMB(0x72205d2b707de),CNST_LIMB(0x41eb3856479f4),CNST_LIMB(0x62a869dadecf2)},882,4}, + {CNST_LIMB(0x826267aca5d6b),{CNST_LIMB(0xf6a307f100c87643),12,CNST_LIMB(0x18b32a6e55cb2),CNST_LIMB(0x800c79d089746),CNST_LIMB(0x4df069eb6014f),CNST_LIMB(0xa67afd1d0f6b),CNST_LIMB(0x39654bc96e516)},886,4}, + {CNST_LIMB(0x854fadbb02f0d),{CNST_LIMB(0xeb99f80c181c04d8),12,CNST_LIMB(0x530f8982a799b),CNST_LIMB(0x488a5468d8f30),CNST_LIMB(0xcb498b28c81),CNST_LIMB(0x1d791c8466f6a),CNST_LIMB(0x583d384518de9)},890,4}, + {CNST_LIMB(0x86f75f67e5373),{CNST_LIMB(0xe592b4846fa38885),12,CNST_LIMB(0x16d1a804d8305),CNST_LIMB(0x3a9f7db1defba),CNST_LIMB(0x53fa43529d63d),CNST_LIMB(0x380980122856a),CNST_LIMB(0x59320408536cb)},894,4}, + {CNST_LIMB(0x89110415e014b),{CNST_LIMB(0xde220b6a3ca63611),12,CNST_LIMB(0x1183ea4dd5cca),CNST_LIMB(0x6cd0a51299316),CNST_LIMB(0x2c53d4f8b0ee6),CNST_LIMB(0x39ef54aed56eb),CNST_LIMB(0x7f71b2a9bf0fd)},898,4}, + {CNST_LIMB(0x8bbeefef93d97),{CNST_LIMB(0xd4f7338df110e1c1),12,CNST_LIMB(0x3ee5d151be367),CNST_LIMB(0x2e6b9dfc4bbcb),CNST_LIMB(0x225349b2e386e),CNST_LIMB(0x492ce15456b18),CNST_LIMB(0x856a0d6e68759)},902,4}, + {CNST_LIMB(0x8fa29248f38e9),{CNST_LIMB(0xc84479a2d3ad73b2),12,CNST_LIMB(0x282c97bed2bdc),CNST_LIMB(0x86b44220fa8e0),CNST_LIMB(0x497c548d39ada),CNST_LIMB(0x6928a8433805d),CNST_LIMB(0x1d2f77b091c29)},906,4}, + {CNST_LIMB(0x9311da8eb3ea1),{CNST_LIMB(0xbd9c9989aacc578d),12,CNST_LIMB(0x73d0b00fcee87),CNST_LIMB(0x44acd3ec00c9b),CNST_LIMB(0x3b8ead35b82f4),CNST_LIMB(0x7a1ca1fa55a8c),CNST_LIMB(0x98634149273d)},910,4}, + {CNST_LIMB(0x96fc1b51999b5),{CNST_LIMB(0xb20e950936df3d71),12,CNST_LIMB(0x899afa996b260),CNST_LIMB(0x2d7d06dae3233),CNST_LIMB(0x143e323027e28),CNST_LIMB(0x8483b9a26498e),CNST_LIMB(0x689b7b1e2fc91)},914,4}, + {CNST_LIMB(0x99d2dc5aa820b),{CNST_LIMB(0xaa0bd71d4333c056),12,CNST_LIMB(0x71d5124399b20),CNST_LIMB(0x62e94421a897f),CNST_LIMB(0x892c96c6ff4dc),CNST_LIMB(0x54dc6420d0ec4),CNST_LIMB(0x43a10331ebf4f)},918,4}, + {CNST_LIMB(0x9c18c1a21f755),{CNST_LIMB(0xa3d7a1305040e509),12,CNST_LIMB(0x4a6f652c96ebf),CNST_LIMB(0x92a1dbc9a1bc4),CNST_LIMB(0x7856fe0adb2e7),CNST_LIMB(0x65020d02f02aa),CNST_LIMB(0x7983e2f6dcbd)},922,4}, + {CNST_LIMB(0xa019a0d84ce05),{CNST_LIMB(0x99580856e1c2e36b),12,CNST_LIMB(0x5060429959a17),CNST_LIMB(0x8af3dd6c8fedb),CNST_LIMB(0x8521b97cefc72),CNST_LIMB(0x7289dc3848291),CNST_LIMB(0x51cb410c11cef)},926,4}, + {CNST_LIMB(0xa3837104af50b),{CNST_LIMB(0x90cc816ca127f31c),12,CNST_LIMB(0x7fcd3ea8e707c),CNST_LIMB(0x1ea9bdca73534),CNST_LIMB(0x3d0d37ad79bcf),CNST_LIMB(0x78befa2ea5ef8),CNST_LIMB(0x8c7846571c14b)},930,4}, + {CNST_LIMB(0xa74ba276e925b),{CNST_LIMB(0x87bcf3ca6aa1f420),12,CNST_LIMB(0x876dcb0272647),CNST_LIMB(0x63761f150b253),CNST_LIMB(0xa347a550c386b),CNST_LIMB(0xb7438cfe5ad4),CNST_LIMB(0x7bca2b8c0aabf)},934,4}, + {CNST_LIMB(0xad0c05b3ae661),{CNST_LIMB(0x7ab7cf1782b58dcf),12,CNST_LIMB(0x54750c4f56635),CNST_LIMB(0x2eac67167559c),CNST_LIMB(0x563c222f2aff7),CNST_LIMB(0x7b738313b7ac1),CNST_LIMB(0x65d997bccd9d9)},938,4}, + {CNST_LIMB(0xb0da5211cc3e7),{CNST_LIMB(0x72916ab867f7595c),12,CNST_LIMB(0xfa941ccadf01),CNST_LIMB(0x8d756d36295ea),CNST_LIMB(0x4f9f479e132fd),CNST_LIMB(0x18526df562fde),CNST_LIMB(0x434f07e1d9d33)},942,4}, + {CNST_LIMB(0xb36ca8c3991af),{CNST_LIMB(0x6d41bd767e129ba0),12,CNST_LIMB(0x13836edce5114),CNST_LIMB(0xa52c71bc138ab),CNST_LIMB(0x339d5f264e899),CNST_LIMB(0x65473fc2cfa57),CNST_LIMB(0x4714fd9da5ac0)},946,4}, + {CNST_LIMB(0xb6694790c60df),{CNST_LIMB(0x6746add17a9a2fee),12,CNST_LIMB(0x4c2521610f0f4),CNST_LIMB(0x1ef55755cab96),CNST_LIMB(0x3bb413c494cbb),CNST_LIMB(0x59bedca68abba),CNST_LIMB(0x618c95ba5598b)},950,4}, + {CNST_LIMB(0xb89a345c48d7d),{CNST_LIMB(0x6302ff6c309d06ee),12,CNST_LIMB(0x2296406fcba90),CNST_LIMB(0x4d697f4e83909),CNST_LIMB(0xa16067eedb775),CNST_LIMB(0xa50f824607f2b),CNST_LIMB(0x3d3946b54c9f9)},954,4}, + {CNST_LIMB(0xbb02a8b8a132b),{CNST_LIMB(0x5e70bfded3b337fc),12,CNST_LIMB(0x8c29c2d62d33),CNST_LIMB(0x3f082e296ef8f),CNST_LIMB(0x49afe57a19b90),CNST_LIMB(0xb7bd5be58da15),CNST_LIMB(0x8de61bd7e627f)},958,4}, + {CNST_LIMB(0xbd6468bb171ff),{CNST_LIMB(0x5a0880d51b052fd7),12,CNST_LIMB(0x64a7322bed5a0),CNST_LIMB(0x3f94ed2b89267),CNST_LIMB(0x980b9bde44b2d),CNST_LIMB(0x4a6676c0e7d13),CNST_LIMB(0xb24baad1f0c40)},962,4}, + {CNST_LIMB(0xc17671b548641),{CNST_LIMB(0x52c0b00a813a011e),12,CNST_LIMB(0x85095e7597d4),CNST_LIMB(0x55524352a702c),CNST_LIMB(0x868164742fab5),CNST_LIMB(0x3b3bcfdffb2cf),CNST_LIMB(0xab11b067d542f)},966,4}, + {CNST_LIMB(0xc57f07d496e1b),{CNST_LIMB(0x4bd58ed22f4b2aac),12,CNST_LIMB(0x449a9c42f9a11),CNST_LIMB(0x2b9c2279a88de),CNST_LIMB(0xa905cf41733e1),CNST_LIMB(0x206b2bfa8b896),CNST_LIMB(0xb378d16c66efd)},970,4}, + {CNST_LIMB(0xc814b88200ac3),{CNST_LIMB(0x478c251716699c98),12,CNST_LIMB(0x97df5b023b898),CNST_LIMB(0x5507d796eedc1),CNST_LIMB(0xb4a34312d58e3),CNST_LIMB(0x4324fc6d4f6f2),CNST_LIMB(0x29d3a7f3d88da)},974,4}, + {CNST_LIMB(0xcb958ba8e9259),{CNST_LIMB(0x41e93d5390ce4a3c),12,CNST_LIMB(0x75906ffdbe592),CNST_LIMB(0x35d1e8b619b02),CNST_LIMB(0x5535c122a3ba7),CNST_LIMB(0xb2c9d287f29c8),CNST_LIMB(0x7f9a7f1adf9d9)},978,4}, + {CNST_LIMB(0xcfaa956d67517),{CNST_LIMB(0x3b9549c76b39f2a8),12,CNST_LIMB(0x44a2e5454ad61),CNST_LIMB(0xa8d0541bab05b),CNST_LIMB(0x801e8693083d4),CNST_LIMB(0xc17c6af57bddf),CNST_LIMB(0xc7b4d9a0870d9)},982,4}, + {CNST_LIMB(0xd56380a0e8273),{CNST_LIMB(0x331ecd3feca3d608),12,CNST_LIMB(0xc5686ff8a7efd),CNST_LIMB(0x61e35c54a4f3f),CNST_LIMB(0x4bf5dc73ede0f),CNST_LIMB(0x2bf7f029f09a5),CNST_LIMB(0x718dc3463c882)},986,4}, + {CNST_LIMB(0xd9c8b65d94f5b),{CNST_LIMB(0x2cec062e71d179c4),12,CNST_LIMB(0xa3aaac38dbec6),CNST_LIMB(0x78cabf09fa56c),CNST_LIMB(0xcaf0fccc6b30b),CNST_LIMB(0xce30344eb1fac),CNST_LIMB(0x4ba46e5575b11)},990,4}, + {CNST_LIMB(0xdc90a482debcb),{CNST_LIMB(0x2920b89d6fc02e7f),12,CNST_LIMB(0x9f0f9b3b403a),CNST_LIMB(0x619327b332542),CNST_LIMB(0xa75eae1f8ff9f),CNST_LIMB(0x62350a1cba491),CNST_LIMB(0x22ac2e8eb19f9)},994,4}, + {CNST_LIMB(0xe0ac9922e6235),{CNST_LIMB(0x23b187206556b5c4),12,CNST_LIMB(0x157440c67a3c9),CNST_LIMB(0x696b5be3cc464),CNST_LIMB(0x2ebcde890e790),CNST_LIMB(0xae767f93832de),CNST_LIMB(0xcb1eade2d80a8)},998,4} +#endif diff --git a/vere/ext/gmp/gen/x86_64-macos/config.h b/vere/ext/gmp/gen/x86_64-macos/config.h new file mode 100644 index 0000000..c0e4285 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/config.h @@ -0,0 +1,672 @@ +/* config.h. Generated from config.in by configure. */ +/* config.in. Generated from configure.ac by autoheader. */ + +/* + +Copyright 1996-2022 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + +or + + * the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any + later version. + +or both in parallel, as here. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library. If not, +see https://www.gnu.org/licenses/. +*/ + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* The gmp-mparam.h file (a string) the tune program should suggest updating. + */ +#define GMP_MPARAM_H_SUGGEST "./mpn/x86_64/coreihwl/gmp-mparam.h" + +/* Define to 1 if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Define to 1 if alloca() works (via gmp-impl.h). */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((const)) */ +#define HAVE_ATTRIBUTE_CONST 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((malloc)) */ +#define HAVE_ATTRIBUTE_MALLOC 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((mode (XX))) + */ +#define HAVE_ATTRIBUTE_MODE 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((noreturn)) */ +#define HAVE_ATTRIBUTE_NORETURN 1 + +/* Define to 1 if you have the `attr_get' function. */ +/* #undef HAVE_ATTR_GET */ + +/* Define to 1 if tests/libtests has calling conventions checking for the CPU + */ +#define HAVE_CALLING_CONVENTIONS 1 + +/* Define to 1 if you have the `clock' function. */ +#define HAVE_CLOCK 1 + +/* Define to 1 if you have the `clock_gettime' function */ +#define HAVE_CLOCK_GETTIME 1 + +/* Define to 1 if you have the `cputime' function. */ +/* #undef HAVE_CPUTIME */ + +/* Define to 1 if you have the declaration of `fgetc', and to 0 if you don't. + */ +#define HAVE_DECL_FGETC 1 + +/* Define to 1 if you have the declaration of `fscanf', and to 0 if you don't. + */ +#define HAVE_DECL_FSCANF 1 + +/* Define to 1 if you have the declaration of `optarg', and to 0 if you don't. + */ +#define HAVE_DECL_OPTARG 1 + +/* Define to 1 if you have the declaration of `sys_errlist', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_ERRLIST 1 + +/* Define to 1 if you have the declaration of `sys_nerr', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_NERR 1 + +/* Define to 1 if you have the declaration of `ungetc', and to 0 if you don't. + */ +#define HAVE_DECL_UNGETC 1 + +/* Define to 1 if you have the declaration of `vfprintf', and to 0 if you + don't. */ +#define HAVE_DECL_VFPRINTF 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define one of the following to 1 for the format of a `double'. + If your format is not among these choices, or you don't know what it is, + then leave all undefined. + IEEE_LITTLE_SWAPPED means little endian, but with the two 4-byte halves + swapped, as used by ARM CPUs in little endian mode. */ +/* #undef HAVE_DOUBLE_IEEE_BIG_ENDIAN */ +#define HAVE_DOUBLE_IEEE_LITTLE_ENDIAN 1 +/* #undef HAVE_DOUBLE_IEEE_LITTLE_SWAPPED */ +/* #undef HAVE_DOUBLE_VAX_D */ +/* #undef HAVE_DOUBLE_VAX_G */ +/* #undef HAVE_DOUBLE_CRAY_CFP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define to 1 if you have the `getrusage' function. */ +#define HAVE_GETRUSAGE 1 + +/* Define to 1 if you have the `getsysinfo' function. */ +/* #undef HAVE_GETSYSINFO */ + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((visibility)) + and __attribute__ ((alias)) */ +/* #undef HAVE_HIDDEN_ALIAS */ + +/* Define one of these to 1 for the host CPU family. + If your CPU is not in any of these families, leave all undefined. + For an AMD64 chip, define "x86" in ABI=32, but not in ABI=64. */ +/* #undef HAVE_HOST_CPU_FAMILY_alpha */ +/* #undef HAVE_HOST_CPU_FAMILY_m68k */ +/* #undef HAVE_HOST_CPU_FAMILY_power */ +/* #undef HAVE_HOST_CPU_FAMILY_powerpc */ +/* #undef HAVE_HOST_CPU_FAMILY_x86 */ +#define HAVE_HOST_CPU_FAMILY_x86_64 1 + +/* Define one of the following to 1 for the host CPU, as per the output of + ./config.guess. If your CPU is not listed here, leave all undefined. */ +/* #undef HAVE_HOST_CPU_alphaev67 */ +/* #undef HAVE_HOST_CPU_alphaev68 */ +/* #undef HAVE_HOST_CPU_alphaev7 */ +/* #undef HAVE_HOST_CPU_m68020 */ +/* #undef HAVE_HOST_CPU_m68030 */ +/* #undef HAVE_HOST_CPU_m68040 */ +/* #undef HAVE_HOST_CPU_m68060 */ +/* #undef HAVE_HOST_CPU_m68360 */ +/* #undef HAVE_HOST_CPU_powerpc604 */ +/* #undef HAVE_HOST_CPU_powerpc604e */ +/* #undef HAVE_HOST_CPU_powerpc750 */ +/* #undef HAVE_HOST_CPU_powerpc7400 */ +/* #undef HAVE_HOST_CPU_supersparc */ +/* #undef HAVE_HOST_CPU_i386 */ +/* #undef HAVE_HOST_CPU_i586 */ +/* #undef HAVE_HOST_CPU_i686 */ +/* #undef HAVE_HOST_CPU_pentium */ +/* #undef HAVE_HOST_CPU_pentiummmx */ +/* #undef HAVE_HOST_CPU_pentiumpro */ +/* #undef HAVE_HOST_CPU_pentium2 */ +/* #undef HAVE_HOST_CPU_pentium3 */ +/* #undef HAVE_HOST_CPU_pentium4 */ +/* #undef HAVE_HOST_CPU_core2 */ +/* #undef HAVE_HOST_CPU_nehalem */ +/* #undef HAVE_HOST_CPU_westmere */ +/* #undef HAVE_HOST_CPU_sandybridge */ +/* #undef HAVE_HOST_CPU_ivybridge */ +#define HAVE_HOST_CPU_haswell 1 +/* #undef HAVE_HOST_CPU_broadwell */ +/* #undef HAVE_HOST_CPU_skylake */ +/* #undef HAVE_HOST_CPU_silvermont */ +/* #undef HAVE_HOST_CPU_goldmont */ +/* #undef HAVE_HOST_CPU_tremont */ +/* #undef HAVE_HOST_CPU_k8 */ +/* #undef HAVE_HOST_CPU_k10 */ +/* #undef HAVE_HOST_CPU_bulldozer */ +/* #undef HAVE_HOST_CPU_piledriver */ +/* #undef HAVE_HOST_CPU_steamroller */ +/* #undef HAVE_HOST_CPU_excavator */ +/* #undef HAVE_HOST_CPU_zen */ +/* #undef HAVE_HOST_CPU_bobcat */ +/* #undef HAVE_HOST_CPU_jaguar */ +/* #undef HAVE_HOST_CPU_s390_z900 */ +/* #undef HAVE_HOST_CPU_s390_z990 */ +/* #undef HAVE_HOST_CPU_s390_z9 */ +/* #undef HAVE_HOST_CPU_s390_z10 */ +/* #undef HAVE_HOST_CPU_s390_z196 */ +/* #undef HAVE_HOST_CPU_s390_z13 */ +/* #undef HAVE_HOST_CPU_s390_z14 */ +/* #undef HAVE_HOST_CPU_s390_z15 */ + +/* Define to 1 iff we have a s390 with 64-bit registers. */ +/* #undef HAVE_HOST_CPU_s390_zarch */ + +/* Define to 1 if the system has the type `intmax_t'. */ +#define HAVE_INTMAX_T 1 + +/* Define to 1 if the system has the type `intptr_t'. */ +#define HAVE_INTPTR_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_INVENT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LANGINFO_H 1 + +/* Define one of these to 1 for the endianness of `mp_limb_t'. + If the endianness is not a simple big or little, or you don't know what + it is, then leave both undefined. */ +/* #undef HAVE_LIMB_BIG_ENDIAN */ +#define HAVE_LIMB_LITTLE_ENDIAN 1 + +/* Define to 1 if you have the `localeconv' function. */ +#define HAVE_LOCALECONV 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if the system has the type `long double'. */ +#define HAVE_LONG_DOUBLE 1 + +/* Define to 1 if the system has the type `long long'. */ +#define HAVE_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACHINE_HAL_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `mmap' function. */ +#define HAVE_MMAP 1 + +/* Define to 1 if you have the `mprotect' function. */ +#define HAVE_MPROTECT 1 + +/* Define to 1 each of the following for which a native (ie. CPU specific) + implementation of the corresponding routine exists. */ +#define HAVE_NATIVE_mpn_add_n 1 +/* #undef HAVE_NATIVE_mpn_add_n_sub_n */ +#define HAVE_NATIVE_mpn_add_nc 1 +/* #undef HAVE_NATIVE_mpn_addaddmul_1msb0 */ +#define HAVE_NATIVE_mpn_addlsh1_n 1 +#define HAVE_NATIVE_mpn_addlsh2_n 1 +#define HAVE_NATIVE_mpn_addlsh_n 1 +#define HAVE_NATIVE_mpn_addlsh1_nc 1 +#define HAVE_NATIVE_mpn_addlsh2_nc 1 +/* #undef HAVE_NATIVE_mpn_addlsh_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addmul_1c */ +#define HAVE_NATIVE_mpn_addmul_2 1 +/* #undef HAVE_NATIVE_mpn_addmul_3 */ +/* #undef HAVE_NATIVE_mpn_addmul_4 */ +/* #undef HAVE_NATIVE_mpn_addmul_5 */ +/* #undef HAVE_NATIVE_mpn_addmul_6 */ +/* #undef HAVE_NATIVE_mpn_addmul_7 */ +/* #undef HAVE_NATIVE_mpn_addmul_8 */ +/* #undef HAVE_NATIVE_mpn_addmul_2s */ +#define HAVE_NATIVE_mpn_and_n 1 +#define HAVE_NATIVE_mpn_andn_n 1 +#define HAVE_NATIVE_mpn_bdiv_dbm1c 1 +#define HAVE_NATIVE_mpn_bdiv_q_1 1 +#define HAVE_NATIVE_mpn_pi1_bdiv_q_1 1 +#define HAVE_NATIVE_mpn_cnd_add_n 1 +#define HAVE_NATIVE_mpn_cnd_sub_n 1 +#define HAVE_NATIVE_mpn_com 1 +#define HAVE_NATIVE_mpn_copyd 1 +#define HAVE_NATIVE_mpn_copyi 1 +#define HAVE_NATIVE_mpn_div_qr_1n_pi1 1 +/* #undef HAVE_NATIVE_mpn_div_qr_2 */ +#define HAVE_NATIVE_mpn_divexact_1 1 +/* #undef HAVE_NATIVE_mpn_divexact_by3c */ +#define HAVE_NATIVE_mpn_divrem_1 1 +/* #undef HAVE_NATIVE_mpn_divrem_1c */ +#define HAVE_NATIVE_mpn_divrem_2 1 +/* #undef HAVE_NATIVE_mpn_gcd_1 */ +#define HAVE_NATIVE_mpn_gcd_11 1 +#define HAVE_NATIVE_mpn_gcd_22 1 +#define HAVE_NATIVE_mpn_hamdist 1 +#define HAVE_NATIVE_mpn_invert_limb 1 +#define HAVE_NATIVE_mpn_ior_n 1 +#define HAVE_NATIVE_mpn_iorn_n 1 +#define HAVE_NATIVE_mpn_lshift 1 +#define HAVE_NATIVE_mpn_lshiftc 1 +/* #undef HAVE_NATIVE_mpn_lshsub_n */ +/* #undef HAVE_NATIVE_mpn_mod_1 */ +#define HAVE_NATIVE_mpn_mod_1_1p 1 +/* #undef HAVE_NATIVE_mpn_mod_1c */ +#define HAVE_NATIVE_mpn_mod_1s_2p 1 +#define HAVE_NATIVE_mpn_mod_1s_4p 1 +#define HAVE_NATIVE_mpn_mod_34lsub1 1 +#define HAVE_NATIVE_mpn_modexact_1_odd 1 +#define HAVE_NATIVE_mpn_modexact_1c_odd 1 +#define HAVE_NATIVE_mpn_mul_1 1 +/* #undef HAVE_NATIVE_mpn_mul_1c */ +#define HAVE_NATIVE_mpn_mul_2 1 +/* #undef HAVE_NATIVE_mpn_mul_3 */ +/* #undef HAVE_NATIVE_mpn_mul_4 */ +/* #undef HAVE_NATIVE_mpn_mul_5 */ +/* #undef HAVE_NATIVE_mpn_mul_6 */ +#define HAVE_NATIVE_mpn_mul_basecase 1 +#define HAVE_NATIVE_mpn_mullo_basecase 1 +#define HAVE_NATIVE_mpn_nand_n 1 +#define HAVE_NATIVE_mpn_nior_n 1 +#define HAVE_NATIVE_mpn_popcount 1 +#define HAVE_NATIVE_mpn_preinv_divrem_1 1 +/* #undef HAVE_NATIVE_mpn_preinv_mod_1 */ +#define HAVE_NATIVE_mpn_redc_1 1 +/* #undef HAVE_NATIVE_mpn_redc_2 */ +#define HAVE_NATIVE_mpn_rsblsh1_n 1 +#define HAVE_NATIVE_mpn_rsblsh2_n 1 +#define HAVE_NATIVE_mpn_rsblsh_n 1 +#define HAVE_NATIVE_mpn_rsblsh1_nc 1 +/* #undef HAVE_NATIVE_mpn_rsblsh2_nc */ +/* #undef HAVE_NATIVE_mpn_rsblsh_nc */ +#define HAVE_NATIVE_mpn_rsh1add_n 1 +#define HAVE_NATIVE_mpn_rsh1add_nc 1 +#define HAVE_NATIVE_mpn_rsh1sub_n 1 +#define HAVE_NATIVE_mpn_rsh1sub_nc 1 +#define HAVE_NATIVE_mpn_rshift 1 +/* #undef HAVE_NATIVE_mpn_sbpi1_bdiv_r */ +#define HAVE_NATIVE_mpn_sqr_basecase 1 +/* #undef HAVE_NATIVE_mpn_sqr_diagonal */ +#define HAVE_NATIVE_mpn_sqr_diag_addlsh1 1 +#define HAVE_NATIVE_mpn_sub_n 1 +#define HAVE_NATIVE_mpn_sub_nc 1 +#define HAVE_NATIVE_mpn_sublsh1_n 1 +#define HAVE_NATIVE_mpn_sublsh2_n 1 +/* #undef HAVE_NATIVE_mpn_sublsh_n */ +/* #undef HAVE_NATIVE_mpn_sublsh1_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh2_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh1_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh2_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh1_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh2_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_submul_1c */ +/* #undef HAVE_NATIVE_mpn_tabselect */ +/* #undef HAVE_NATIVE_mpn_udiv_qrnnd */ +/* #undef HAVE_NATIVE_mpn_udiv_qrnnd_r */ +/* #undef HAVE_NATIVE_mpn_umul_ppmm */ +/* #undef HAVE_NATIVE_mpn_umul_ppmm_r */ +#define HAVE_NATIVE_mpn_xor_n 1 +#define HAVE_NATIVE_mpn_xnor_n 1 + +/* Define to 1 if you have the `nl_langinfo' function. */ +#define HAVE_NL_LANGINFO 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NL_TYPES_H 1 + +/* Define to 1 if you have the `obstack_vprintf' function. */ +/* #undef HAVE_OBSTACK_VPRINTF */ + +/* Define to 1 if you have the `popen' function. */ +#define HAVE_POPEN 1 + +/* Define to 1 if you have the `processor_info' function. */ +#define HAVE_PROCESSOR_INFO 1 + +/* Define to 1 if `struct pst_processor' exists and contains + `psp_iticksperclktick'. */ +/* #undef HAVE_PSP_ITICKSPERCLKTICK */ + +/* Define to 1 if you have the `pstat_getprocessor' function. */ +/* #undef HAVE_PSTAT_GETPROCESSOR */ + +/* Define to 1 if the system has the type `ptrdiff_t'. */ +#define HAVE_PTRDIFF_T 1 + +/* Define to 1 if the system has the type `quad_t'. */ +#define HAVE_QUAD_T 1 + +/* Define to 1 if you have the `raise' function. */ +#define HAVE_RAISE 1 + +/* Define to 1 if you have the `read_real_time' function. */ +/* #undef HAVE_READ_REAL_TIME */ + +/* Define to 1 if you have the `sigaction' function. */ +#define HAVE_SIGACTION 1 + +/* Define to 1 if you have the `sigaltstack' function. */ +#define HAVE_SIGALTSTACK 1 + +/* Define to 1 if you have the `sigstack' function. */ +/* #undef HAVE_SIGSTACK */ + +/* Tune directory speed_cyclecounter, undef=none, 1=32bits, 2=64bits) */ +#define HAVE_SPEED_CYCLECOUNTER 2 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SSTREAM */ + +/* Define to 1 if the system has the type `stack_t'. */ +#define HAVE_STACK_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if the system has the type `std::locale'. */ +/* #undef HAVE_STD__LOCALE */ + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strnlen' function. */ +#define HAVE_STRNLEN 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the `sysconf' function. */ +#define HAVE_SYSCONF 1 + +/* Define to 1 if you have the `sysctl' function. */ +#define HAVE_SYSCTL 1 + +/* Define to 1 if you have the `sysctlbyname' function. */ +#define HAVE_SYSCTLBYNAME 1 + +/* Define to 1 if you have the `syssgi' function. */ +/* #undef HAVE_SYSSGI */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_ATTRIBUTES_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_IOGRAPH_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_MMAN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PROCESSOR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PSTAT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SYSCTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSSGI_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSTEMCFG_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `times' function. */ +#define HAVE_TIMES 1 + +/* Define to 1 if the system has the type `uint_least32_t'. */ +#define HAVE_UINT_LEAST32_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `vsnprintf' function and it works properly. */ +#define HAVE_VSNPRINTF 1 + +/* Define to 1 for Windos/64 */ +/* #undef HOST_DOS64 */ + +/* Assembler local label prefix */ +#define LSYM_PREFIX "L" + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Define to 1 to disable the use of inline assembly */ +/* #undef NO_ASM */ + +/* Name of package */ +#define PACKAGE "gmp" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "gmp-bugs@gmplib.org (see https://gmplib.org/manual/Reporting-Bugs.html)" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "GNU MP" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "GNU MP 6.3.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "gmp" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "http://www.gnu.org/software/gmp/" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "6.3.0" + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* The size of `mp_limb_t', as computed by sizeof. */ +#define SIZEOF_MP_LIMB_T 8 + +/* The size of `unsigned', as computed by sizeof. */ +#define SIZEOF_UNSIGNED 4 + +/* The size of `unsigned long', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_LONG 8 + +/* The size of `unsigned short', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_SHORT 2 + +/* The size of `void *', as computed by sizeof. */ +#define SIZEOF_VOID_P 8 + +/* Define to 1 if sscanf requires writable inputs */ +/* #undef SSCANF_WRITABLE_INPUT */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Maximum size the tune program can test for SQR_TOOM2_THRESHOLD */ +/* #undef TUNE_SQR_TOOM2_MAX */ + +/* Version number of package */ +#define VERSION "6.3.0" + +/* Define to 1 to enable ASSERT checking, per --enable-assert */ +/* #undef WANT_ASSERT */ + +/* Define to 1 to enable GMP_CPU_TYPE faking cpuid, per --enable-fake-cpuid */ +/* #undef WANT_FAKE_CPUID */ + +/* Define to 1 when building a fat binary. */ +/* #undef WANT_FAT_BINARY */ + +/* Define to 1 to enable FFTs for multiplication, per --enable-fft */ +#define WANT_FFT 1 + +/* Define to 1 to enable old mpn_mul_fft_full for multiplication, per + --enable-old-fft-full */ +/* #undef WANT_OLD_FFT_FULL */ + +/* Define to 1 if --enable-profiling=gprof */ +/* #undef WANT_PROFILING_GPROF */ + +/* Define to 1 if --enable-profiling=instrument */ +/* #undef WANT_PROFILING_INSTRUMENT */ + +/* Define to 1 if --enable-profiling=prof */ +/* #undef WANT_PROFILING_PROF */ + +/* Define one of these to 1 for the desired temporary memory allocation + method, per --enable-alloca. */ +#define WANT_TMP_ALLOCA 1 +/* #undef WANT_TMP_REENTRANT */ +/* #undef WANT_TMP_NOTREENTRANT */ +/* #undef WANT_TMP_DEBUG */ + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* Define to 1 if the assembler understands the mulx instruction */ +#define X86_ASM_MULX 1 + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +#define YYTEXT_POINTER 1 + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported directly. */ +#define restrict __restrict +/* Work around a bug in Sun C++: it does not support _Restrict or + __restrict__, even though the corresponding Sun C compiler ends up with + "#define restrict _Restrict" or "#define restrict __restrict__" in the + previous line. Perhaps some future version of Sun C++ will work with + restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ +#if defined __SUNPRO_CC && !defined __RESTRICT +# define _Restrict +# define __restrict__ +#endif + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +/* #undef volatile */ diff --git a/vere/ext/gmp/gen/x86_64-macos/fac_table.h b/vere/ext/gmp/gen/x86_64-macos/fac_table.h new file mode 100644 index 0000000..6708348 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/fac_table.h @@ -0,0 +1,49 @@ +/* This file is automatically generated by gen-fac.c */ + +#if GMP_NUMB_BITS != 64 +Error , error this data is for 64 GMP_NUMB_BITS only +#endif +/* This table is 0!,1!,2!,3!,...,n! where n! has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x2),CNST_LIMB(0x6),CNST_LIMB(0x18),CNST_LIMB(0x78),CNST_LIMB(0x2d0),CNST_LIMB(0x13b0),CNST_LIMB(0x9d80),CNST_LIMB(0x58980),CNST_LIMB(0x375f00),CNST_LIMB(0x2611500),CNST_LIMB(0x1c8cfc00),CNST_LIMB(0x17328cc00),CNST_LIMB(0x144c3b2800),CNST_LIMB(0x13077775800),CNST_LIMB(0x130777758000),CNST_LIMB(0x1437eeecd8000),CNST_LIMB(0x16beecca730000),CNST_LIMB(0x1b02b9306890000),CNST_LIMB(0x21c3677c82b40000) + +/* This table is 0!,1!,2!/2,3!/2,...,n!/2^sn where n!/2^sn is an */ +/* odd integer for each n, and n!/2^sn has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_ODD_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x3),CNST_LIMB(0x3),CNST_LIMB(0xf),CNST_LIMB(0x2d),CNST_LIMB(0x13b),CNST_LIMB(0x13b),CNST_LIMB(0xb13),CNST_LIMB(0x375f),CNST_LIMB(0x26115),CNST_LIMB(0x7233f),CNST_LIMB(0x5cca33),CNST_LIMB(0x2898765),CNST_LIMB(0x260eeeeb),CNST_LIMB(0x260eeeeb),CNST_LIMB(0x286fddd9b),CNST_LIMB(0x16beecca73),CNST_LIMB(0x1b02b930689),CNST_LIMB(0x870d9df20ad),CNST_LIMB(0xb141df4dae31),CNST_LIMB(0x79dd498567c1b),CNST_LIMB(0xaf2e19afc5266d),CNST_LIMB(0x20d8a4d0f4f7347),CNST_LIMB(0x335281867ec241ef) +#define ODD_FACTORIAL_TABLE_MAX CNST_LIMB(0x335281867ec241ef) +#define ODD_FACTORIAL_TABLE_LIMIT (25) + +/* Previous table, continued, values modulo 2^GMP_NUMB_BITS */ +#define ONE_LIMB_ODD_FACTORIAL_EXTTABLE CNST_LIMB(0x9b3093d46fdd5923),CNST_LIMB(0x5e1f9767cc5866b1),CNST_LIMB(0x92dd23d6966aced7),CNST_LIMB(0xa30d0f4f0a196e5b),CNST_LIMB(0x8dc3e5a1977d7755),CNST_LIMB(0x2ab8ce915831734b),CNST_LIMB(0x2ab8ce915831734b),CNST_LIMB(0x81d2a0bc5e5fdcab),CNST_LIMB(0x9efcac82445da75b),CNST_LIMB(0xbc8b95cf58cde171),CNST_LIMB(0xa0e8444a1f3cecf9),CNST_LIMB(0x4191deb683ce3ffd),CNST_LIMB(0xddd3878bc84ebfc7),CNST_LIMB(0xcb39a64b83ff3751),CNST_LIMB(0xf8203f7993fc1495),CNST_LIMB(0xbd2a2a78b35f4bdd),CNST_LIMB(0x84757be6b6d13921),CNST_LIMB(0x3fbbcfc0b524988b),CNST_LIMB(0xbd11ed47c8928df9),CNST_LIMB(0x3c26b59e41c2f4c5),CNST_LIMB(0x677a5137e883fdb3),CNST_LIMB(0xff74e943b03b93dd),CNST_LIMB(0xfe5ebbcb10b2bb97),CNST_LIMB(0xb021f1de3235e7e7),CNST_LIMB(0x33509eb2e743a58f),CNST_LIMB(0x390f9da41279fb7d),CNST_LIMB(0xe5cb0154f031c559),CNST_LIMB(0x93074695ba4ddb6d),CNST_LIMB(0x81c471caa636247f),CNST_LIMB(0xe1347289b5a1d749),CNST_LIMB(0x286f21c3f76ce2ff),CNST_LIMB(0xbe84a2173e8ac7),CNST_LIMB(0x1595065ca215b88b),CNST_LIMB(0xf95877595b018809),CNST_LIMB(0x9c2efe3c5516f887),CNST_LIMB(0x373294604679382b),CNST_LIMB(0xaf1ff7a888adcd35),CNST_LIMB(0x18ddf279a2c5800b),CNST_LIMB(0x18ddf279a2c5800b),CNST_LIMB(0x505a90e2542582cb),CNST_LIMB(0x5bacad2cd8d5dc2b),CNST_LIMB(0xfe3152bcbff89f41) +#define ODD_FACTORIAL_EXTTABLE_LIMIT (67) + +/* This table is 1!!,3!!,...,(2n+1)!! where (2n+1)!! has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_ODD_DOUBLEFACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x3),CNST_LIMB(0xf),CNST_LIMB(0x69),CNST_LIMB(0x3b1),CNST_LIMB(0x289b),CNST_LIMB(0x20fdf),CNST_LIMB(0x1eee11),CNST_LIMB(0x20dcf21),CNST_LIMB(0x27065f73),CNST_LIMB(0x33385d46f),CNST_LIMB(0x49a10615f9),CNST_LIMB(0x730b9982551),CNST_LIMB(0xc223930bef8b),CNST_LIMB(0x15fe07a85a22bf),CNST_LIMB(0x2a9c2ed62ea3521),CNST_LIMB(0x57e22099c030d941) +#define ODD_DOUBLEFACTORIAL_TABLE_MAX CNST_LIMB(0x57e22099c030d941) +#define ODD_DOUBLEFACTORIAL_TABLE_LIMIT (33) + +/* This table x_1, x_2,... contains values s.t. x_n^n has <= GMP_NUMB_BITS bits */ +#define NTH_ROOT_NUMB_MASK_TABLE (GMP_NUMB_MASK),CNST_LIMB(0xffffffff),CNST_LIMB(0x285145),CNST_LIMB(0xffff),CNST_LIMB(0x1bdb),CNST_LIMB(0x659),CNST_LIMB(0x235),CNST_LIMB(0xff) + +/* This table contains inverses of odd factorials, modulo 2^GMP_NUMB_BITS */ + +/* It begins with (2!/2)^-1=1 */ +#define ONE_LIMB_ODD_FACTORIAL_INVERSES_TABLE CNST_LIMB(0x1),CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0xeeeeeeeeeeeeeeef),CNST_LIMB(0x4fa4fa4fa4fa4fa5),CNST_LIMB(0x2ff2ff2ff2ff2ff3),CNST_LIMB(0x2ff2ff2ff2ff2ff3),CNST_LIMB(0x938cc70553e3771b),CNST_LIMB(0xb71c27cddd93e49f),CNST_LIMB(0xb38e3229fcdee63d),CNST_LIMB(0xe684bb63544a4cbf),CNST_LIMB(0xc2f684917ca340fb),CNST_LIMB(0xf747c9cba417526d),CNST_LIMB(0xbb26eb51d7bd49c3),CNST_LIMB(0xbb26eb51d7bd49c3),CNST_LIMB(0xb0a7efb985294093),CNST_LIMB(0xbe4b8c69f259eabb),CNST_LIMB(0x6854d17ed6dc4fb9),CNST_LIMB(0xe1aa904c915f4325),CNST_LIMB(0x3b8206df131cead1),CNST_LIMB(0x79c6009fea76fe13),CNST_LIMB(0xd8c5d381633cd365),CNST_LIMB(0x4841f12b21144677),CNST_LIMB(0x4a91ff68200b0d0f),CNST_LIMB(0x8f9513a58c4f9e8b),CNST_LIMB(0x2b3e690621a42251),CNST_LIMB(0x4f520f00e03c04e7),CNST_LIMB(0x2edf84ee600211d3),CNST_LIMB(0xadcaa2764aaacdfd),CNST_LIMB(0x161f4f9033f4fe63),CNST_LIMB(0x161f4f9033f4fe63),CNST_LIMB(0xbada2932ea4d3e03),CNST_LIMB(0xcec189f3efaa30d3),CNST_LIMB(0xf7475bb68330bf91),CNST_LIMB(0x37eb7bf7d5b01549),CNST_LIMB(0x46b35660a4e91555),CNST_LIMB(0xa567c12d81f151f7),CNST_LIMB(0x4c724007bb2071b1),CNST_LIMB(0xf4a0cce58a016bd),CNST_LIMB(0xfa21068e66106475),CNST_LIMB(0x244ab72b5a318ae1),CNST_LIMB(0x366ce67e080d0f23),CNST_LIMB(0xd666fdae5dd2a449),CNST_LIMB(0xd740ddd0acc06a0d),CNST_LIMB(0xb050bbbb28e6f97b),CNST_LIMB(0x70b003fe890a5c75),CNST_LIMB(0xd03aabff83037427),CNST_LIMB(0x13ec4ca72c783bd7),CNST_LIMB(0x90282c06afdbd96f),CNST_LIMB(0x4414ddb9db4a95d5),CNST_LIMB(0xa2c68735ae6832e9),CNST_LIMB(0xbf72d71455676665),CNST_LIMB(0xa8469fab6b759b7f),CNST_LIMB(0xc1e55b56e606caf9),CNST_LIMB(0x40455630fc4a1cff),CNST_LIMB(0x120a7b0046d16f7),CNST_LIMB(0xa7c3553b08faef23),CNST_LIMB(0x9f0bfd1b08d48639),CNST_LIMB(0xa433ffce9a304d37),CNST_LIMB(0xa22ad1d53915c683),CNST_LIMB(0xcb6cbc723ba5dd1d),CNST_LIMB(0x547fb1b8ab9d0ba3),CNST_LIMB(0x547fb1b8ab9d0ba3),CNST_LIMB(0x8f15a826498852e3) + +/* This table contains 2n-popc(2n) for small n */ + +/* It begins with 2-1=1 (n=1) */ +#define TABLE_2N_MINUS_POPC_2N 1,3,4,7,8,10,11,15,16,18,19,22,23,25,26,31,32,34,35,38,39,41,42,46,47,49,50,53,54,56,57,63,64,66,67,70,71,73,74,78 +#define TABLE_LIMIT_2N_MINUS_POPC_2N 81 +#define ODD_CENTRAL_BINOMIAL_OFFSET (13) + +/* This table contains binomial(2k,k)/2^t */ + +/* It begins with ODD_CENTRAL_BINOMIAL_TABLE_MIN */ +#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_TABLE CNST_LIMB(0x13d66b),CNST_LIMB(0x4c842f),CNST_LIMB(0x93ee7d),CNST_LIMB(0x11e9e123),CNST_LIMB(0x22c60053),CNST_LIMB(0x873ae4d1),CNST_LIMB(0x10757bd97),CNST_LIMB(0x80612c6cd),CNST_LIMB(0xfaa556bc1),CNST_LIMB(0x3d3cc24821),CNST_LIMB(0x77cfeb6bbb),CNST_LIMB(0x7550ebd97c7),CNST_LIMB(0xe5f08695caf),CNST_LIMB(0x386120ffce11),CNST_LIMB(0x6eabb28dd6df),CNST_LIMB(0x3658e31c82a8f),CNST_LIMB(0x6ad2050312783),CNST_LIMB(0x1a42902a5af0bf),CNST_LIMB(0x33ac44f881661d),CNST_LIMB(0xcb764f927d82123),CNST_LIMB(0x190c23fa46b93983),CNST_LIMB(0x62b7609e25caf1b9),CNST_LIMB(0xc29cb72925ef2cff) +#define ODD_CENTRAL_BINOMIAL_TABLE_LIMIT (35) + +/* This table contains the inverses of elements in the previous table. */ +#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_INVERSE_TABLE CNST_LIMB(0x61e5bd199bb12643),CNST_LIMB(0x78321494dc8342cf),CNST_LIMB(0x4fd348704ebf7ad5),CNST_LIMB(0x7e722ba086ab568b),CNST_LIMB(0xa5fcc124265843db),CNST_LIMB(0x89c4a6b18633f431),CNST_LIMB(0x4daa2c15f8ce9227),CNST_LIMB(0x801c618ca9be9605),CNST_LIMB(0x32dc192f948a441),CNST_LIMB(0xd02b90c2bf3be1),CNST_LIMB(0xd897e8c1749aa173),CNST_LIMB(0x54a234fc01fef9f7),CNST_LIMB(0x83ff2ab4d1ff7a4f),CNST_LIMB(0xa427f1c9b304e2f1),CNST_LIMB(0x9c14595d1793651f),CNST_LIMB(0x883a71c607a7b46f),CNST_LIMB(0xd089863c54bc9f2b),CNST_LIMB(0x9022f6bce5d07f3f),CNST_LIMB(0xbec207e218768c35),CNST_LIMB(0x9d70cb4cbb4f168b),CNST_LIMB(0x3c3d3403828a9d2b),CNST_LIMB(0x7672df58c56bc489),CNST_LIMB(0x1e66ca55d727d2ff) + +/* This table contains the values t in the formula binomial(2k,k)/2^t */ +#define CENTRAL_BINOMIAL_2FAC_TABLE 3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3 diff --git a/vere/ext/gmp/gen/x86_64-macos/fib_table.h b/vere/ext/gmp/gen/x86_64-macos/fib_table.h new file mode 100644 index 0000000..66ac4d6 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/fib_table.h @@ -0,0 +1,8 @@ +/* This file generated by gen-fib.c - DO NOT EDIT. */ + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +#define FIB_TABLE_LIMIT 93 +#define FIB_TABLE_LUCNUM_LIMIT 92 diff --git a/vere/ext/gmp/gen/x86_64-macos/mp_bases.h b/vere/ext/gmp/gen/x86_64-macos/mp_bases.h new file mode 100644 index 0000000..08ede78 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mp_bases.h @@ -0,0 +1,13 @@ +/* This file generated by gen-bases.c - DO NOT EDIT. */ + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +/* mp_bases[10] data, as literal values */ +#define MP_BASES_CHARS_PER_LIMB_10 19 +#define MP_BASES_BIG_BASE_CTZ_10 19 +#define MP_BASES_BIG_BASE_10 CNST_LIMB(0x8ac7230489e80000) +#define MP_BASES_BIG_BASE_INVERTED_10 CNST_LIMB(0xd83c94fb6d2ac34a) +#define MP_BASES_BIG_BASE_BINVERTED_10 CNST_LIMB(0x26b172506559ce15) +#define MP_BASES_NORMALIZATION_STEPS_10 0 diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/add_err1_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/add_err1_n.s new file mode 100644 index 0000000..4bb4f97 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/add_err1_n.s @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_add_err1_n + + +___gmpn_add_err1_n: + + mov 8(%rsp), %rax + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + lea (%rsi,%r9,8), %rsi + lea (%rdx,%r9,8), %rdx + lea (%rdi,%r9,8), %rdi + + mov %r9d, %r10d + and $3, %r10d + jz L0mod4 + cmp $2, %r10d + jc L1mod4 + jz L2mod4 +L3mod4: + xor %ebx, %ebx + xor %ebp, %ebp + xor %r10d, %r10d + xor %r11d, %r11d + lea -24(%r8,%r9,8), %r8 + neg %r9 + + shr $1, %al + mov (%rsi,%r9,8), %r14 + mov 8(%rsi,%r9,8), %r15 + adc (%rdx,%r9,8), %r14 + mov %r14, (%rdi,%r9,8) + cmovc 16(%r8), %rbx + adc 8(%rdx,%r9,8), %r15 + mov %r15, 8(%rdi,%r9,8) + cmovc 8(%r8), %r10 + mov 16(%rsi,%r9,8), %r14 + adc 16(%rdx,%r9,8), %r14 + mov %r14, 16(%rdi,%r9,8) + cmovc (%r8), %r11 + setc %al + add %r10, %rbx + adc $0, %rbp + add %r11, %rbx + adc $0, %rbp + + add $3, %r9 + jnz Lloop + jmp Lend + + .align 4, 0x90 +L0mod4: + xor %ebx, %ebx + xor %ebp, %ebp + lea (%r8,%r9,8), %r8 + neg %r9 + jmp Lloop + + .align 4, 0x90 +L1mod4: + xor %ebx, %ebx + xor %ebp, %ebp + lea -8(%r8,%r9,8), %r8 + neg %r9 + + shr $1, %al + mov (%rsi,%r9,8), %r14 + adc (%rdx,%r9,8), %r14 + mov %r14, (%rdi,%r9,8) + cmovc (%r8), %rbx + setc %al + + add $1, %r9 + jnz Lloop + jmp Lend + + .align 4, 0x90 +L2mod4: + xor %ebx, %ebx + xor %ebp, %ebp + xor %r10d, %r10d + lea -16(%r8,%r9,8), %r8 + neg %r9 + + shr $1, %al + mov (%rsi,%r9,8), %r14 + mov 8(%rsi,%r9,8), %r15 + adc (%rdx,%r9,8), %r14 + mov %r14, (%rdi,%r9,8) + cmovc 8(%r8), %rbx + adc 8(%rdx,%r9,8), %r15 + mov %r15, 8(%rdi,%r9,8) + cmovc (%r8), %r10 + setc %al + add %r10, %rbx + adc $0, %rbp + + add $2, %r9 + jnz Lloop + jmp Lend + + .align 5, 0x90 +Lloop: + mov (%rsi,%r9,8), %r14 + shr $1, %al + mov -8(%r8), %r10 + mov $0, %r13d + adc (%rdx,%r9,8), %r14 + cmovnc %r13, %r10 + mov %r14, (%rdi,%r9,8) + mov 8(%rsi,%r9,8), %r15 + mov 16(%rsi,%r9,8), %r14 + adc 8(%rdx,%r9,8), %r15 + mov -16(%r8), %r11 + cmovnc %r13, %r11 + mov -24(%r8), %r12 + mov %r15, 8(%rdi,%r9,8) + adc 16(%rdx,%r9,8), %r14 + cmovnc %r13, %r12 + mov 24(%rsi,%r9,8), %r15 + adc 24(%rdx,%r9,8), %r15 + cmovc -32(%r8), %r13 + setc %al + add %r10, %rbx + adc $0, %rbp + add %r11, %rbx + adc $0, %rbp + add %r12, %rbx + adc $0, %rbp + lea -32(%r8), %r8 + mov %r14, 16(%rdi,%r9,8) + add %r13, %rbx + adc $0, %rbp + add $4, %r9 + mov %r15, -8(%rdi,%r9,8) + jnz Lloop + +Lend: + mov %rbx, (%rcx) + mov %rbp, 8(%rcx) + + pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/add_err2_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/add_err2_n.s new file mode 100644 index 0000000..ba4fb6d --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/add_err2_n.s @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_add_err2_n + + +___gmpn_add_err2_n: + + mov 16(%rsp), %rax + mov 8(%rsp), %r10 + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + + xor %ebp, %ebp + xor %r11d, %r11d + xor %r12d, %r12d + xor %r13d, %r13d + + sub %r8, %r9 + + lea (%rdi,%r10,8), %rdi + lea (%rsi,%r10,8), %rsi + lea (%rdx,%r10,8), %rdx + + test $1, %r10 + jnz Lodd + + lea -8(%r8,%r10,8), %r8 + neg %r10 + jmp Ltop + + .align 4, 0x90 +Lodd: + lea -16(%r8,%r10,8), %r8 + neg %r10 + shr $1, %rax + mov (%rsi,%r10,8), %rbx + adc (%rdx,%r10,8), %rbx + cmovc 8(%r8), %rbp + cmovc 8(%r8,%r9), %r12 + mov %rbx, (%rdi,%r10,8) + sbb %rax, %rax + inc %r10 + jz Lend + + .align 4, 0x90 +Ltop: + mov (%rsi,%r10,8), %rbx + shr $1, %rax + adc (%rdx,%r10,8), %rbx + mov %rbx, (%rdi,%r10,8) + sbb %r14, %r14 + + mov 8(%rsi,%r10,8), %rbx + adc 8(%rdx,%r10,8), %rbx + mov %rbx, 8(%rdi,%r10,8) + sbb %rax, %rax + + mov (%r8), %rbx + and %r14, %rbx + add %rbx, %rbp + adc $0, %r11 + + and (%r8,%r9), %r14 + add %r14, %r12 + adc $0, %r13 + + mov -8(%r8), %rbx + and %rax, %rbx + add %rbx, %rbp + adc $0, %r11 + + mov -8(%r8,%r9), %rbx + and %rax, %rbx + add %rbx, %r12 + adc $0, %r13 + + add $2, %r10 + lea -16(%r8), %r8 + jnz Ltop +Lend: + + mov %rbp, (%rcx) + mov %r11, 8(%rcx) + mov %r12, 16(%rcx) + mov %r13, 24(%rcx) + + and $1, %eax + + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/add_err3_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/add_err3_n.s new file mode 100644 index 0000000..3e0e39d --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/add_err3_n.s @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_add_err3_n + + +___gmpn_add_err3_n: + + mov 24(%rsp), %rax + mov 16(%rsp), %r10 + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + push %rcx + mov 64(%rsp), %rcx + + xor %ebp, %ebp + xor %r11d, %r11d + xor %r12d, %r12d + xor %r13d, %r13d + xor %r14d, %r14d + xor %r15d, %r15d + + sub %r8, %r9 + sub %r8, %rcx + + lea -8(%r8,%r10,8), %r8 + lea (%rdi,%r10,8), %rdi + lea (%rsi,%r10,8), %rsi + lea (%rdx,%r10,8), %rdx + neg %r10 + + .align 4, 0x90 +Ltop: + shr $1, %rax + mov (%rsi,%r10,8), %rax + adc (%rdx,%r10,8), %rax + mov %rax, (%rdi,%r10,8) + sbb %rax, %rax + + mov (%r8), %rbx + and %rax, %rbx + add %rbx, %rbp + adc $0, %r11 + + mov (%r8,%r9), %rbx + and %rax, %rbx + add %rbx, %r12 + adc $0, %r13 + + mov (%r8,%rcx), %rbx + and %rax, %rbx + add %rbx, %r14 + adc $0, %r15 + + lea -8(%r8), %r8 + inc %r10 + jnz Ltop + +Lend: + and $1, %eax + pop %rcx + + mov %rbp, (%rcx) + mov %r11, 8(%rcx) + mov %r12, 16(%rcx) + mov %r13, 24(%rcx) + mov %r14, 32(%rcx) + mov %r15, 40(%rcx) + + pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/add_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/add_n.s new file mode 100644 index 0000000..84fc0f3 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/add_n.s @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_add_nc + + +___gmpn_add_nc: + + + + + mov %ecx, %eax + shr $3, %rcx + and $7, %eax + + lea Ltab(%rip), %r9 + neg %r8 + + movslq (%r9,%rax,4), %rax + lea (%r9,%rax), %rax + jmp *%rax + + + + .align 4, 0x90 + .globl ___gmpn_add_n + + +___gmpn_add_n: + + + + mov %ecx, %eax + shr $3, %rcx + and $7, %eax + + lea Ltab(%rip), %r9 + + movslq (%r9,%rax,4), %rax + lea (%r9,%rax), %rax + jmp *%rax + + +L0: mov (%rsi), %r8 + mov 8(%rsi), %r9 + adc (%rdx), %r8 + jmp Le0 + +L4: mov (%rsi), %r8 + mov 8(%rsi), %r9 + adc (%rdx), %r8 + lea -32(%rsi), %rsi + lea -32(%rdx), %rdx + lea -32(%rdi), %rdi + inc %rcx + jmp Le4 + +L5: mov (%rsi), %r11 + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + adc (%rdx), %r11 + lea -24(%rsi), %rsi + lea -24(%rdx), %rdx + lea -24(%rdi), %rdi + inc %rcx + jmp Le5 + +L6: mov (%rsi), %r10 + adc (%rdx), %r10 + mov 8(%rsi), %r11 + lea -16(%rsi), %rsi + lea -16(%rdx), %rdx + lea -16(%rdi), %rdi + inc %rcx + jmp Le6 + +L7: mov (%rsi), %r9 + mov 8(%rsi), %r10 + adc (%rdx), %r9 + adc 8(%rdx), %r10 + lea -8(%rsi), %rsi + lea -8(%rdx), %rdx + lea -8(%rdi), %rdi + inc %rcx + jmp Le7 + + .align 4, 0x90 +Ltop: +Le3: mov %r9, 40(%rdi) +Le2: mov %r10, 48(%rdi) +Le1: mov (%rsi), %r8 + mov 8(%rsi), %r9 + adc (%rdx), %r8 + mov %r11, 56(%rdi) + lea 64(%rdi), %rdi +Le0: mov 16(%rsi), %r10 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + mov %r8, (%rdi) +Le7: mov 24(%rsi), %r11 + mov %r9, 8(%rdi) +Le6: mov 32(%rsi), %r8 + mov 40(%rsi), %r9 + adc 24(%rdx), %r11 + mov %r10, 16(%rdi) +Le5: adc 32(%rdx), %r8 + mov %r11, 24(%rdi) +Le4: mov 48(%rsi), %r10 + mov 56(%rsi), %r11 + mov %r8, 32(%rdi) + lea 64(%rsi), %rsi + adc 40(%rdx), %r9 + adc 48(%rdx), %r10 + adc 56(%rdx), %r11 + lea 64(%rdx), %rdx + dec %rcx + jnz Ltop + +Lend: mov %r9, 40(%rdi) + mov %r10, 48(%rdi) + mov %r11, 56(%rdi) + mov %ecx, %eax + adc %ecx, %eax + + ret + + .align 4, 0x90 +L3: mov (%rsi), %r9 + mov 8(%rsi), %r10 + mov 16(%rsi), %r11 + adc (%rdx), %r9 + adc 8(%rdx), %r10 + adc 16(%rdx), %r11 + jrcxz Lx3 + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea -40(%rdi), %rdi + jmp Le3 +Lx3: mov %r9, (%rdi) + mov %r10, 8(%rdi) + mov %r11, 16(%rdi) + mov %ecx, %eax + adc %ecx, %eax + + ret + + .align 4, 0x90 +L1: mov (%rsi), %r11 + adc (%rdx), %r11 + jrcxz Lx1 + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea -56(%rdi), %rdi + jmp Le1 +Lx1: mov %r11, (%rdi) + mov %ecx, %eax + adc %ecx, %eax + + ret + + .align 4, 0x90 +L2: mov (%rsi), %r10 + mov 8(%rsi), %r11 + adc (%rdx), %r10 + adc 8(%rdx), %r11 + jrcxz Lx2 + lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea -48(%rdi), %rdi + jmp Le2 +Lx2: mov %r10, (%rdi) + mov %r11, 8(%rdi) + mov %ecx, %eax + adc %ecx, %eax + + ret + + .text + .align 3, 0x90 +Ltab: .set L0_tmp, L0-Ltab + .long L0_tmp + + .set L1_tmp, L1-Ltab + .long L1_tmp + + .set L2_tmp, L2-Ltab + .long L2_tmp + + .set L3_tmp, L3-Ltab + .long L3_tmp + + .set L4_tmp, L4-Ltab + .long L4_tmp + + .set L5_tmp, L5-Ltab + .long L5_tmp + + .set L6_tmp, L6-Ltab + .long L6_tmp + + .set L7_tmp, L7-Ltab + .long L7_tmp + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/addlsh1_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/addlsh1_n.s new file mode 100644 index 0000000..90fca0b --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/addlsh1_n.s @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_addlsh1_nc + + +___gmpn_addlsh1_nc: + + + + push %rbp + mov %r8, %rax + neg %rax + xor %ebp, %ebp + mov (%rdx), %r8 + shrd $63, %r8, %rbp + mov %ecx, %r9d + and $3, %r9d + je Lb00 + cmp $2, %r9d + jc Lb01 + je Lb10 + jmp Lb11 + + + .align 4, 0x90 + .globl ___gmpn_addlsh1_n + + +___gmpn_addlsh1_n: + + + push %rbp + xor %ebp, %ebp + mov (%rdx), %r8 + shrd $63, %r8, %rbp + mov %ecx, %eax + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: mov 8(%rdx), %r9 + shrd $63, %r9, %r8 + mov 16(%rdx), %r10 + shrd $63, %r10, %r9 + add %eax, %eax + adc (%rsi), %rbp + adc 8(%rsi), %r8 + adc 16(%rsi), %r9 + mov %rbp, (%rdi) + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) + mov %r10, %rbp + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea 24(%rdi), %rdi + sbb %eax, %eax + sub $3, %rcx + ja Ltop + jmp Lend + +Lb01: add %eax, %eax + adc (%rsi), %rbp + mov %rbp, (%rdi) + mov %r8, %rbp + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + sbb %eax, %eax + sub $1, %rcx + ja Ltop + jmp Lend + +Lb10: mov 8(%rdx), %r9 + shrd $63, %r9, %r8 + add %eax, %eax + adc (%rsi), %rbp + adc 8(%rsi), %r8 + mov %rbp, (%rdi) + mov %r8, 8(%rdi) + mov %r9, %rbp + lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea 16(%rdi), %rdi + sbb %eax, %eax + sub $2, %rcx + ja Ltop + jmp Lend + + .align 4, 0x90 +Ltop: mov (%rdx), %r8 + shrd $63, %r8, %rbp +Lb00: mov 8(%rdx), %r9 + shrd $63, %r9, %r8 + mov 16(%rdx), %r10 + shrd $63, %r10, %r9 + mov 24(%rdx), %r11 + shrd $63, %r11, %r10 + lea 32(%rdx), %rdx + add %eax, %eax + adc (%rsi), %rbp + adc 8(%rsi), %r8 + adc 16(%rsi), %r9 + adc 24(%rsi), %r10 + lea 32(%rsi), %rsi + mov %rbp, (%rdi) + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) + mov %r10, 24(%rdi) + mov %r11, %rbp + lea 32(%rdi), %rdi + sbb %eax, %eax + sub $4, %rcx + jnz Ltop + +Lend: shr $63, %rbp + add %eax, %eax + adc $0, %rbp + mov %rbp, %rax + pop %rbp + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/addlsh2_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/addlsh2_n.s new file mode 100644 index 0000000..5d61f82 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/addlsh2_n.s @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_addlsh2_nc + + +___gmpn_addlsh2_nc: + + + + push %rbp + mov %r8, %rax + neg %rax + xor %ebp, %ebp + mov (%rdx), %r8 + shrd $62, %r8, %rbp + mov %ecx, %r9d + and $3, %r9d + je Lb00 + cmp $2, %r9d + jc Lb01 + je Lb10 + jmp Lb11 + + + .align 4, 0x90 + .globl ___gmpn_addlsh2_n + + +___gmpn_addlsh2_n: + + + push %rbp + xor %ebp, %ebp + mov (%rdx), %r8 + shrd $62, %r8, %rbp + mov %ecx, %eax + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: mov 8(%rdx), %r9 + shrd $62, %r9, %r8 + mov 16(%rdx), %r10 + shrd $62, %r10, %r9 + add %eax, %eax + adc (%rsi), %rbp + adc 8(%rsi), %r8 + adc 16(%rsi), %r9 + mov %rbp, (%rdi) + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) + mov %r10, %rbp + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea 24(%rdi), %rdi + sbb %eax, %eax + sub $3, %rcx + ja Ltop + jmp Lend + +Lb01: add %eax, %eax + adc (%rsi), %rbp + mov %rbp, (%rdi) + mov %r8, %rbp + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + sbb %eax, %eax + sub $1, %rcx + ja Ltop + jmp Lend + +Lb10: mov 8(%rdx), %r9 + shrd $62, %r9, %r8 + add %eax, %eax + adc (%rsi), %rbp + adc 8(%rsi), %r8 + mov %rbp, (%rdi) + mov %r8, 8(%rdi) + mov %r9, %rbp + lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea 16(%rdi), %rdi + sbb %eax, %eax + sub $2, %rcx + ja Ltop + jmp Lend + + .align 4, 0x90 +Ltop: mov (%rdx), %r8 + shrd $62, %r8, %rbp +Lb00: mov 8(%rdx), %r9 + shrd $62, %r9, %r8 + mov 16(%rdx), %r10 + shrd $62, %r10, %r9 + mov 24(%rdx), %r11 + shrd $62, %r11, %r10 + lea 32(%rdx), %rdx + add %eax, %eax + adc (%rsi), %rbp + adc 8(%rsi), %r8 + adc 16(%rsi), %r9 + adc 24(%rsi), %r10 + lea 32(%rsi), %rsi + mov %rbp, (%rdi) + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) + mov %r10, 24(%rdi) + mov %r11, %rbp + lea 32(%rdi), %rdi + sbb %eax, %eax + sub $4, %rcx + jnz Ltop + +Lend: shr $62, %rbp + add %eax, %eax + adc $0, %rbp + mov %rbp, %rax + pop %rbp + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/addlsh_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/addlsh_n.s new file mode 100644 index 0000000..f71088e --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/addlsh_n.s @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_addlsh_n + + +___gmpn_addlsh_n: + + + + + mov (%rdx), %r10 + + mov %ecx, %eax + shr $3, %rcx + xor %r9d, %r9d + sub %r8, %r9 + and $7, %eax + + lea Ltab(%rip), %r11 + + movslq (%r11,%rax,4), %rax + add %r11, %rax + jmp *%rax + + +L0: lea 32(%rsi), %rsi + lea 32(%rdx), %rdx + lea 32(%rdi), %rdi + xor %r11d, %r11d + jmp Le0 + +L7: mov %r10, %r11 + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea 24(%rdi), %rdi + xor %r10d, %r10d + jmp Le7 + +L6: lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea 16(%rdi), %rdi + xor %r11d, %r11d + jmp Le6 + +L5: mov %r10, %r11 + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + xor %r10d, %r10d + jmp Le5 + +Lend: adc 24(%rsi), %rax + mov %rax, -40(%rdi) + .byte 0xc4,194,179,0xf7,195 + adc %rcx, %rax + + ret + + .align 5, 0x90 +Ltop: jrcxz Lend + mov -32(%rdx), %r10 + adc 24(%rsi), %rax + lea 64(%rsi), %rsi + .byte 0xc4,66,179,0xf7,219 + mov %rax, -40(%rdi) +Le0: dec %rcx + .byte 0xc4,194,185,0xf7,194 + lea (%r11,%rax), %rax + mov -24(%rdx), %r11 + adc -32(%rsi), %rax + .byte 0xc4,66,179,0xf7,210 + mov %rax, -32(%rdi) +Le7: .byte 0xc4,194,185,0xf7,195 + lea (%r10,%rax), %rax + mov -16(%rdx), %r10 + adc -24(%rsi), %rax + .byte 0xc4,66,179,0xf7,219 + mov %rax, -24(%rdi) +Le6: .byte 0xc4,194,185,0xf7,194 + lea (%r11,%rax), %rax + mov -8(%rdx), %r11 + adc -16(%rsi), %rax + .byte 0xc4,66,179,0xf7,210 + mov %rax, -16(%rdi) +Le5: .byte 0xc4,194,185,0xf7,195 + lea (%r10,%rax), %rax + mov (%rdx), %r10 + adc -8(%rsi), %rax + .byte 0xc4,66,179,0xf7,219 + mov %rax, -8(%rdi) +Le4: .byte 0xc4,194,185,0xf7,194 + lea (%r11,%rax), %rax + mov 8(%rdx), %r11 + adc (%rsi), %rax + .byte 0xc4,66,179,0xf7,210 + mov %rax, (%rdi) +Le3: .byte 0xc4,194,185,0xf7,195 + lea (%r10,%rax), %rax + mov 16(%rdx), %r10 + adc 8(%rsi), %rax + .byte 0xc4,66,179,0xf7,219 + mov %rax, 8(%rdi) +Le2: .byte 0xc4,194,185,0xf7,194 + lea (%r11,%rax), %rax + mov 24(%rdx), %r11 + adc 16(%rsi), %rax + lea 64(%rdx), %rdx + .byte 0xc4,66,179,0xf7,210 + mov %rax, 16(%rdi) + lea 64(%rdi), %rdi +Le1: .byte 0xc4,194,185,0xf7,195 + lea (%r10,%rax), %rax + jmp Ltop + +L4: xor %r11d, %r11d + jmp Le4 + +L3: mov %r10, %r11 + lea -8(%rsi), %rsi + lea -8(%rdx), %rdx + lea -8(%rdi), %rdi + xor %r10d, %r10d + jmp Le3 + +L2: lea -16(%rsi), %rsi + lea -16(%rdx), %rdx + lea -16(%rdi), %rdi + xor %r11d, %r11d + jmp Le2 + +L1: mov %r10, %r11 + lea -24(%rsi), %rsi + lea 40(%rdx), %rdx + lea 40(%rdi), %rdi + xor %r10d, %r10d + jmp Le1 + + .text + .align 3, 0x90 +Ltab: .set L0_tmp, L0-Ltab + .long L0_tmp + + .set L1_tmp, L1-Ltab + .long L1_tmp + + .set L2_tmp, L2-Ltab + .long L2_tmp + + .set L3_tmp, L3-Ltab + .long L3_tmp + + .set L4_tmp, L4-Ltab + .long L4_tmp + + .set L5_tmp, L5-Ltab + .long L5_tmp + + .set L6_tmp, L6-Ltab + .long L6_tmp + + .set L7_tmp, L7-Ltab + .long L7_tmp + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/addmul_1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/addmul_1.s new file mode 100644 index 0000000..a53c8bf --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/addmul_1.s @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_addmul_1 + + +___gmpn_addmul_1: + + + push %rbx + push %rbp + push %r12 + push %r13 + + mov %rdx, %rbp + mov %rcx, %rdx + + test $1, %bpl + jnz Lbx1 + +Lbx0: shr $2, %rbp + jc Lb10 + +Lb00: .byte 0xc4,98,147,0xf6,38 + .byte 0xc4,226,227,0xf6,70,8 + add %r12, %rbx + adc $0, %rax + mov (%rdi), %r12 + mov 8(%rdi), %rcx + .byte 0xc4,98,179,0xf6,70,16 + lea -16(%rdi), %rdi + lea 16(%rsi), %rsi + add %r13, %r12 + jmp Llo0 + +Lbx1: shr $2, %rbp + jc Lb11 + +Lb01: .byte 0xc4,98,163,0xf6,22 + jnz Lgt1 +Ln1: add %r11, (%rdi) + mov $0, %eax + adc %r10, %rax + jmp Lret + +Lgt1: .byte 0xc4,98,147,0xf6,102,8 + .byte 0xc4,226,227,0xf6,70,16 + lea 24(%rsi), %rsi + add %r10, %r13 + adc %r12, %rbx + adc $0, %rax + mov (%rdi), %r10 + mov 8(%rdi), %r12 + mov 16(%rdi), %rcx + lea -8(%rdi), %rdi + add %r11, %r10 + jmp Llo1 + +Lb11: .byte 0xc4,226,227,0xf6,6 + mov (%rdi), %rcx + .byte 0xc4,98,179,0xf6,70,8 + lea 8(%rsi), %rsi + lea -24(%rdi), %rdi + inc %rbp + add %rbx, %rcx + jmp Llo3 + +Lb10: .byte 0xc4,98,179,0xf6,6 + .byte 0xc4,98,163,0xf6,86,8 + lea -32(%rdi), %rdi + mov $0, %eax + clc + jz Lend + + .align 4, 0x90 +Ltop: adc %rax, %r9 + lea 32(%rdi), %rdi + adc %r8, %r11 + .byte 0xc4,98,147,0xf6,102,16 + mov (%rdi), %r8 + .byte 0xc4,226,227,0xf6,70,24 + lea 32(%rsi), %rsi + adc %r10, %r13 + adc %r12, %rbx + adc $0, %rax + mov 8(%rdi), %r10 + mov 16(%rdi), %r12 + add %r9, %r8 + mov 24(%rdi), %rcx + mov %r8, (%rdi) + adc %r11, %r10 +Llo1: .byte 0xc4,98,179,0xf6,6 + mov %r10, 8(%rdi) + adc %r13, %r12 +Llo0: mov %r12, 16(%rdi) + adc %rbx, %rcx +Llo3: .byte 0xc4,98,163,0xf6,86,8 + mov %rcx, 24(%rdi) + dec %rbp + jnz Ltop + +Lend: adc %rax, %r9 + adc %r8, %r11 + mov 32(%rdi), %r8 + mov %r10, %rax + adc $0, %rax + mov 40(%rdi), %r10 + add %r9, %r8 + mov %r8, 32(%rdi) + adc %r11, %r10 + mov %r10, 40(%rdi) + adc $0, %rax + +Lret: pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/addmul_2.s b/vere/ext/gmp/gen/x86_64-macos/mpn/addmul_2.s new file mode 100644 index 0000000..d2b04a9 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/addmul_2.s @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_addmul_2 + + +___gmpn_addmul_2: + + + push %rbx + push %rbp + push %r12 + push %r13 + + mov (%rcx), %r8 + mov 8(%rcx), %r9 + + mov %rdx, %r11 + shr $2, %r11 + + test $1, %dl + jnz Lbx1 + +Lbx0: mov (%rdi), %r12 + mov 8(%rdi), %r13 + test $2, %dl + jnz Lb10 + +Lb00: mov (%rsi), %rdx + lea 16(%rsi), %rsi + .byte 0xc4,194,251,0xf6,200 + add %rax, %r12 + .byte 0xc4,194,251,0xf6,233 + adc $0, %rcx + mov %r12, (%rdi) + add %rax, %r13 + adc $0, %rbp + mov -8(%rsi), %rdx + lea 16(%rdi), %rdi + jmp Llo0 + +Lb10: mov (%rsi), %rdx + inc %r11 + .byte 0xc4,194,251,0xf6,200 + add %rax, %r12 + adc $0, %rcx + .byte 0xc4,194,251,0xf6,233 + mov %r12, (%rdi) + mov 16(%rdi), %r12 + add %rax, %r13 + adc $0, %rbp + xor %rbx, %rbx + jmp Llo2 + +Lbx1: mov (%rdi), %r13 + mov 8(%rdi), %r12 + test $2, %dl + jnz Lb11 + +Lb01: mov (%rsi), %rdx + .byte 0xc4,66,251,0xf6,208 + add %rax, %r13 + adc $0, %r10 + .byte 0xc4,194,251,0xf6,217 + add %rax, %r12 + adc $0, %rbx + mov 8(%rsi), %rdx + mov %r13, (%rdi) + mov 16(%rdi), %r13 + .byte 0xc4,194,251,0xf6,200 + lea 24(%rdi), %rdi + lea 24(%rsi), %rsi + jmp Llo1 + +Lb11: mov (%rsi), %rdx + inc %r11 + .byte 0xc4,66,251,0xf6,208 + add %rax, %r13 + adc $0, %r10 + .byte 0xc4,194,251,0xf6,217 + add %rax, %r12 + adc $0, %rbx + mov %r13, (%rdi) + mov 8(%rsi), %rdx + .byte 0xc4,194,251,0xf6,200 + lea 8(%rdi), %rdi + lea 8(%rsi), %rsi + jmp Llo3 + + .align 4, 0x90 +Ltop: .byte 0xc4,66,251,0xf6,208 + add %rbx, %r13 + adc $0, %rbp + add %rax, %r13 + adc $0, %r10 + .byte 0xc4,194,251,0xf6,217 + add %rax, %r12 + adc $0, %rbx + lea 32(%rdi), %rdi + add %rcx, %r13 + mov -16(%rsi), %rdx + mov %r13, -24(%rdi) + adc $0, %r10 + add %rbp, %r12 + mov -8(%rdi), %r13 + .byte 0xc4,194,251,0xf6,200 + adc $0, %rbx +Llo1: add %rax, %r12 + .byte 0xc4,194,251,0xf6,233 + adc $0, %rcx + add %r10, %r12 + mov %r12, -16(%rdi) + adc $0, %rcx + add %rax, %r13 + adc $0, %rbp + add %rbx, %r13 + mov -8(%rsi), %rdx + adc $0, %rbp +Llo0: .byte 0xc4,66,251,0xf6,208 + add %rax, %r13 + adc $0, %r10 + mov (%rdi), %r12 + .byte 0xc4,194,251,0xf6,217 + add %rax, %r12 + adc $0, %rbx + add %rcx, %r13 + mov %r13, -8(%rdi) + adc $0, %r10 + mov (%rsi), %rdx + add %rbp, %r12 + .byte 0xc4,194,251,0xf6,200 + adc $0, %rbx +Llo3: add %rax, %r12 + adc $0, %rcx + .byte 0xc4,194,251,0xf6,233 + add %r10, %r12 + mov 8(%rdi), %r13 + mov %r12, (%rdi) + mov 16(%rdi), %r12 + adc $0, %rcx + add %rax, %r13 + adc $0, %rbp +Llo2: mov 8(%rsi), %rdx + lea 32(%rsi), %rsi + dec %r11 + jnz Ltop + +Lend: .byte 0xc4,66,251,0xf6,208 + add %rbx, %r13 + adc $0, %rbp + add %rax, %r13 + adc $0, %r10 + .byte 0xc4,194,235,0xf6,193 + add %rcx, %r13 + mov %r13, 8(%rdi) + adc $0, %r10 + add %rbp, %rdx + adc $0, %rax + add %r10, %rdx + mov %rdx, 16(%rdi) + adc $0, %rax + + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/and_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/and_n.s new file mode 100644 index 0000000..bb75a2c --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/and_n.s @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_and_n + + +___gmpn_and_n: + + + mov (%rdx), %r8 + mov %ecx, %eax + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: and (%rsi), %r8 + mov %r8, (%rdi) + inc %rcx + lea -8(%rsi), %rsi + lea -8(%rdx), %rdx + lea -8(%rdi), %rdi + jmp Le11 +Lb10: add $2, %rcx + lea -16(%rsi), %rsi + lea -16(%rdx), %rdx + lea -16(%rdi), %rdi + jmp Le10 +Lb01: and (%rsi), %r8 + mov %r8, (%rdi) + dec %rcx + jz Lret + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + + .align 4, 0x90 +Ltop: mov (%rdx), %r8 +Lb00: mov 8(%rdx), %r9 + and (%rsi), %r8 + and 8(%rsi), %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) +Le11: mov 16(%rdx), %r8 +Le10: mov 24(%rdx), %r9 + lea 32(%rdx), %rdx + and 16(%rsi), %r8 + and 24(%rsi), %r9 + lea 32(%rsi), %rsi + mov %r8, 16(%rdi) + mov %r9, 24(%rdi) + lea 32(%rdi), %rdi + sub $4, %rcx + jnz Ltop + +Lret: + ret + + + + + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/andn_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/andn_n.s new file mode 100644 index 0000000..704eaa3 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/andn_n.s @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_andn_n + + +___gmpn_andn_n: + + + mov (%rdx), %r8 + not %r8 + mov %ecx, %eax + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: and (%rsi), %r8 + mov %r8, (%rdi) + inc %rcx + lea -8(%rsi), %rsi + lea -8(%rdx), %rdx + lea -8(%rdi), %rdi + jmp Le11 +Lb10: add $2, %rcx + lea -16(%rsi), %rsi + lea -16(%rdx), %rdx + lea -16(%rdi), %rdi + jmp Le10 +Lb01: and (%rsi), %r8 + mov %r8, (%rdi) + dec %rcx + jz Lret + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + + .align 4, 0x90 +Ltop: mov (%rdx), %r8 + not %r8 +Lb00: mov 8(%rdx), %r9 + not %r9 + and (%rsi), %r8 + and 8(%rsi), %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) +Le11: mov 16(%rdx), %r8 + not %r8 +Le10: mov 24(%rdx), %r9 + not %r9 + lea 32(%rdx), %rdx + and 16(%rsi), %r8 + and 24(%rsi), %r9 + lea 32(%rsi), %rsi + mov %r8, 16(%rdi) + mov %r9, 24(%rdi) + lea 32(%rdi), %rdi + sub $4, %rcx + jnz Ltop + +Lret: + ret + + + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/bdiv_dbm1c.s b/vere/ext/gmp/gen/x86_64-macos/mpn/bdiv_dbm1c.s new file mode 100644 index 0000000..b4e7295 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/bdiv_dbm1c.s @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_bdiv_dbm1c + + +___gmpn_bdiv_dbm1c: + + + + mov (%rsi), %rax + mov %rdx, %r9 + mov %edx, %r11d + mul %rcx + lea (%rsi,%r9,8), %rsi + lea (%rdi,%r9,8), %rdi + neg %r9 + and $3, %r11d + jz Llo0 + lea -4(%r9,%r11), %r9 + cmp $2, %r11d + jc Llo1 + jz Llo2 + jmp Llo3 + + .align 4, 0x90 +Ltop: mov (%rsi,%r9,8), %rax + mul %rcx +Llo0: sub %rax, %r8 + mov %r8, (%rdi,%r9,8) + sbb %rdx, %r8 + mov 8(%rsi,%r9,8), %rax + mul %rcx +Llo3: sub %rax, %r8 + mov %r8, 8(%rdi,%r9,8) + sbb %rdx, %r8 + mov 16(%rsi,%r9,8), %rax + mul %rcx +Llo2: sub %rax, %r8 + mov %r8, 16(%rdi,%r9,8) + sbb %rdx, %r8 + mov 24(%rsi,%r9,8), %rax + mul %rcx +Llo1: sub %rax, %r8 + mov %r8, 24(%rdi,%r9,8) + sbb %rdx, %r8 + add $4, %r9 + jnz Ltop + + mov %r8, %rax + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/bdiv_q_1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/bdiv_q_1.s new file mode 100644 index 0000000..c21f024 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/bdiv_q_1.s @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_bdiv_q_1 + + +___gmpn_bdiv_q_1: + + + push %rbx + + mov %rcx, %rax + xor %ecx, %ecx + mov %rdx, %r10 + + bt $0, %eax + jnc Levn + +Lodd: mov %rax, %rbx + shr %eax + and $127, %eax + + lea ___gmp_binvert_limb_table(%rip), %rdx + + + + movzbl (%rdx,%rax), %eax + + mov %rbx, %r11 + + lea (%rax,%rax), %edx + imul %eax, %eax + imul %ebx, %eax + sub %eax, %edx + + lea (%rdx,%rdx), %eax + imul %edx, %edx + imul %ebx, %edx + sub %edx, %eax + + lea (%rax,%rax), %r8 + imul %rax, %rax + imul %rbx, %rax + sub %rax, %r8 + + jmp Lpi1 + +Levn: bsf %rax, %rcx + shr %cl, %rax + jmp Lodd + + + .globl ___gmpn_pi1_bdiv_q_1 + + +___gmpn_pi1_bdiv_q_1: + + + + + push %rbx + + mov %rcx, %r11 + mov %rdx, %r10 + mov %r9, %rcx + +Lpi1: mov (%rsi), %rax + + dec %r10 + jz Lone + + lea 8(%rsi,%r10,8), %rsi + lea (%rdi,%r10,8), %rdi + neg %r10 + + test %ecx, %ecx + jnz Lunorm + xor %ebx, %ebx + jmp Lnent + + .align 3, 0x90 +Lntop:mul %r11 + mov -8(%rsi,%r10,8), %rax + sub %rbx, %rax + setc %bl + sub %rdx, %rax + adc $0, %ebx +Lnent:imul %r8, %rax + mov %rax, (%rdi,%r10,8) + inc %r10 + jnz Lntop + + mov -8(%rsi), %r9 + jmp Lcom + +Lunorm: + mov (%rsi,%r10,8), %r9 + shr %cl, %rax + neg %ecx + shl %cl, %r9 + neg %ecx + or %r9, %rax + xor %ebx, %ebx + jmp Luent + + .align 3, 0x90 +Lutop:mul %r11 + mov (%rsi,%r10,8), %rax + shl %cl, %rax + neg %ecx + or %r9, %rax + sub %rbx, %rax + setc %bl + sub %rdx, %rax + adc $0, %ebx +Luent:imul %r8, %rax + mov (%rsi,%r10,8), %r9 + shr %cl, %r9 + neg %ecx + mov %rax, (%rdi,%r10,8) + inc %r10 + jnz Lutop + +Lcom: mul %r11 + sub %rbx, %r9 + sub %rdx, %r9 + imul %r8, %r9 + mov %r9, (%rdi) + pop %rbx + + ret + +Lone: shr %cl, %rax + imul %r8, %rax + mov %rax, (%rdi) + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/cnd_add_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/cnd_add_n.s new file mode 100644 index 0000000..274a59f --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/cnd_add_n.s @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_cnd_add_n + + +___gmpn_cnd_add_n: + + + + push %rbx + + neg %rdi + sbb %rbx, %rbx + + test $1, %r8b + jz Lx0 +Lx1: test $2, %r8b + jz Lb1 + +Lb3: mov (%rcx), %rdi + mov 8(%rcx), %r9 + mov 16(%rcx), %r10 + and %rbx, %rdi + and %rbx, %r9 + and %rbx, %r10 + add (%rdx), %rdi + mov %rdi, (%rsi) + adc 8(%rdx), %r9 + mov %r9, 8(%rsi) + adc 16(%rdx), %r10 + mov %r10, 16(%rsi) + sbb %eax, %eax + lea 24(%rdx), %rdx + lea 24(%rcx), %rcx + lea 24(%rsi), %rsi + sub $3, %r8 + jnz Ltop + jmp Lend + +Lx0: xor %eax, %eax + test $2, %r8b + jz Ltop + +Lb2: mov (%rcx), %rdi + mov 8(%rcx), %r9 + and %rbx, %rdi + and %rbx, %r9 + add (%rdx), %rdi + mov %rdi, (%rsi) + adc 8(%rdx), %r9 + mov %r9, 8(%rsi) + sbb %eax, %eax + lea 16(%rdx), %rdx + lea 16(%rcx), %rcx + lea 16(%rsi), %rsi + sub $2, %r8 + jnz Ltop + jmp Lend + +Lb1: mov (%rcx), %rdi + and %rbx, %rdi + add (%rdx), %rdi + mov %rdi, (%rsi) + sbb %eax, %eax + lea 8(%rdx), %rdx + lea 8(%rcx), %rcx + lea 8(%rsi), %rsi + dec %r8 + jz Lend + + .align 4, 0x90 +Ltop: mov (%rcx), %rdi + mov 8(%rcx), %r9 + mov 16(%rcx), %r10 + mov 24(%rcx), %r11 + lea 32(%rcx), %rcx + and %rbx, %rdi + and %rbx, %r9 + and %rbx, %r10 + and %rbx, %r11 + add %eax, %eax + adc (%rdx), %rdi + mov %rdi, (%rsi) + adc 8(%rdx), %r9 + mov %r9, 8(%rsi) + adc 16(%rdx), %r10 + mov %r10, 16(%rsi) + adc 24(%rdx), %r11 + lea 32(%rdx), %rdx + mov %r11, 24(%rsi) + lea 32(%rsi), %rsi + sbb %eax, %eax + sub $4, %r8 + jnz Ltop + +Lend: neg %eax + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/cnd_sub_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/cnd_sub_n.s new file mode 100644 index 0000000..79ac5c3 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/cnd_sub_n.s @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_cnd_sub_n + + +___gmpn_cnd_sub_n: + + + + push %rbx + push %rbp + push %r12 + push %r13 + + neg %rdi + sbb %rbx, %rbx + + test $1, %r8b + jz Lx0 +Lx1: test $2, %r8b + jz Lb1 + +Lb3: mov (%rcx), %rdi + mov 8(%rcx), %r9 + mov 16(%rcx), %r10 + and %rbx, %rdi + mov (%rdx), %r12 + and %rbx, %r9 + mov 8(%rdx), %r13 + and %rbx, %r10 + mov 16(%rdx), %rbp + sub %rdi, %r12 + mov %r12, (%rsi) + sbb %r9, %r13 + mov %r13, 8(%rsi) + sbb %r10, %rbp + mov %rbp, 16(%rsi) + sbb %eax, %eax + lea 24(%rdx), %rdx + lea 24(%rcx), %rcx + lea 24(%rsi), %rsi + sub $3, %r8 + jnz Ltop + jmp Lend + +Lx0: xor %eax, %eax + test $2, %r8b + jz Ltop + +Lb2: mov (%rcx), %rdi + mov 8(%rcx), %r9 + mov (%rdx), %r12 + and %rbx, %rdi + mov 8(%rdx), %r13 + and %rbx, %r9 + sub %rdi, %r12 + mov %r12, (%rsi) + sbb %r9, %r13 + mov %r13, 8(%rsi) + sbb %eax, %eax + lea 16(%rdx), %rdx + lea 16(%rcx), %rcx + lea 16(%rsi), %rsi + sub $2, %r8 + jnz Ltop + jmp Lend + +Lb1: mov (%rcx), %rdi + mov (%rdx), %r12 + and %rbx, %rdi + sub %rdi, %r12 + mov %r12, (%rsi) + sbb %eax, %eax + lea 8(%rdx), %rdx + lea 8(%rcx), %rcx + lea 8(%rsi), %rsi + dec %r8 + jz Lend + + .align 4, 0x90 +Ltop: mov (%rcx), %rdi + mov 8(%rcx), %r9 + mov 16(%rcx), %r10 + mov 24(%rcx), %r11 + lea 32(%rcx), %rcx + and %rbx, %rdi + mov (%rdx), %r12 + and %rbx, %r9 + mov 8(%rdx), %r13 + and %rbx, %r10 + mov 16(%rdx), %rbp + and %rbx, %r11 + add %eax, %eax + mov 24(%rdx), %rax + lea 32(%rdx), %rdx + sbb %rdi, %r12 + mov %r12, (%rsi) + sbb %r9, %r13 + mov %r13, 8(%rsi) + sbb %r10, %rbp + mov %rbp, 16(%rsi) + sbb %r11, %rax + mov %rax, 24(%rsi) + lea 32(%rsi), %rsi + sbb %eax, %eax + sub $4, %r8 + jnz Ltop + +Lend: neg %eax + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/com.s b/vere/ext/gmp/gen/x86_64-macos/mpn/com.s new file mode 100644 index 0000000..bfac7e2 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/com.s @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 6, 0x90 + .globl ___gmpn_com + + +___gmpn_com: + + + + cmp $7, %rdx + jbe Lbc + + pcmpeqb %xmm5, %xmm5 + + test $8, %dil + jz Lrp_aligned + + mov (%rsi), %r8 + lea 8(%rsi), %rsi + not %r8 + mov %r8, (%rdi) + lea 8(%rdi), %rdi + dec %rdx + +Lrp_aligned: + test $8, %sil + jnz Luent + + jmp Lam + + .align 4, 0x90 +Latop:movaps 0(%rsi), %xmm0 + movaps 16(%rsi), %xmm1 + movaps 32(%rsi), %xmm2 + movaps 48(%rsi), %xmm3 + lea 64(%rsi), %rsi + pxor %xmm5, %xmm0 + pxor %xmm5, %xmm1 + pxor %xmm5, %xmm2 + pxor %xmm5, %xmm3 + movaps %xmm0, (%rdi) + movaps %xmm1, 16(%rdi) + movaps %xmm2, 32(%rdi) + movaps %xmm3, 48(%rdi) + lea 64(%rdi), %rdi +Lam: sub $8, %rdx + jnc Latop + + test $4, %dl + jz 1f + movaps (%rsi), %xmm0 + movaps 16(%rsi), %xmm1 + lea 32(%rsi), %rsi + pxor %xmm5, %xmm0 + pxor %xmm5, %xmm1 + movaps %xmm0, (%rdi) + movaps %xmm1, 16(%rdi) + lea 32(%rdi), %rdi + +1: test $2, %dl + jz 1f + movaps (%rsi), %xmm0 + lea 16(%rsi), %rsi + pxor %xmm5, %xmm0 + movaps %xmm0, (%rdi) + lea 16(%rdi), %rdi + +1: test $1, %dl + jz 1f + mov (%rsi), %r8 + not %r8 + mov %r8, (%rdi) + +1: + ret + +Luent: + + + + + lea -40(%rsi), %rax + sub %rdi, %rax + cmp $80, %rax + jbe Lbc + + sub $16, %rdx + jc Luend + + movaps 120(%rsi), %xmm3 + + sub $16, %rdx + jmp Lum + + .align 4, 0x90 +Lutop:movaps 120(%rsi), %xmm3 + pxor %xmm5, %xmm0 + movaps %xmm0, -128(%rdi) + sub $16, %rdx +Lum: movaps 104(%rsi), %xmm2 + .byte 0x66,0x0f,0x3a,0x0f,218,8 + movaps 88(%rsi), %xmm1 + pxor %xmm5, %xmm3 + movaps %xmm3, 112(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,209,8 + movaps 72(%rsi), %xmm0 + pxor %xmm5, %xmm2 + movaps %xmm2, 96(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,200,8 + movaps 56(%rsi), %xmm3 + pxor %xmm5, %xmm1 + movaps %xmm1, 80(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,195,8 + movaps 40(%rsi), %xmm2 + pxor %xmm5, %xmm0 + movaps %xmm0, 64(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,218,8 + movaps 24(%rsi), %xmm1 + pxor %xmm5, %xmm3 + movaps %xmm3, 48(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,209,8 + movaps 8(%rsi), %xmm0 + pxor %xmm5, %xmm2 + movaps %xmm2, 32(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,200,8 + movaps -8(%rsi), %xmm3 + pxor %xmm5, %xmm1 + movaps %xmm1, 16(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,195,8 + lea 128(%rsi), %rsi + lea 128(%rdi), %rdi + jnc Lutop + + pxor %xmm5, %xmm0 + movaps %xmm0, -128(%rdi) + +Luend:test $8, %dl + jz 1f + movaps 56(%rsi), %xmm3 + movaps 40(%rsi), %xmm2 + .byte 0x66,0x0f,0x3a,0x0f,218,8 + movaps 24(%rsi), %xmm1 + pxor %xmm5, %xmm3 + movaps %xmm3, 48(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,209,8 + movaps 8(%rsi), %xmm0 + pxor %xmm5, %xmm2 + movaps %xmm2, 32(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,200,8 + movaps -8(%rsi), %xmm3 + pxor %xmm5, %xmm1 + movaps %xmm1, 16(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,195,8 + lea 64(%rsi), %rsi + pxor %xmm5, %xmm0 + movaps %xmm0, (%rdi) + lea 64(%rdi), %rdi + +1: test $4, %dl + jz 1f + movaps 24(%rsi), %xmm1 + movaps 8(%rsi), %xmm0 + .byte 0x66,0x0f,0x3a,0x0f,200,8 + movaps -8(%rsi), %xmm3 + pxor %xmm5, %xmm1 + movaps %xmm1, 16(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,195,8 + lea 32(%rsi), %rsi + pxor %xmm5, %xmm0 + movaps %xmm0, (%rdi) + lea 32(%rdi), %rdi + +1: test $2, %dl + jz 1f + movaps 8(%rsi), %xmm0 + movaps -8(%rsi), %xmm3 + .byte 0x66,0x0f,0x3a,0x0f,195,8 + lea 16(%rsi), %rsi + pxor %xmm5, %xmm0 + movaps %xmm0, (%rdi) + lea 16(%rdi), %rdi + +1: test $1, %dl + jz 1f + mov (%rsi), %r8 + not %r8 + mov %r8, (%rdi) + +1: + ret + + + + +Lbc: lea -8(%rdi), %rdi + sub $4, %edx + jc Lend + + .align 4, 0x90 +Ltop: mov (%rsi), %r8 + mov 8(%rsi), %r9 + lea 32(%rdi), %rdi + mov 16(%rsi), %r10 + mov 24(%rsi), %r11 + lea 32(%rsi), %rsi + not %r8 + not %r9 + not %r10 + not %r11 + mov %r8, -24(%rdi) + mov %r9, -16(%rdi) + sub $4, %edx + mov %r10, -8(%rdi) + mov %r11, (%rdi) + jnc Ltop + +Lend: test $1, %dl + jz 1f + mov (%rsi), %r8 + not %r8 + mov %r8, 8(%rdi) + lea 8(%rdi), %rdi + lea 8(%rsi), %rsi +1: test $2, %dl + jz 1f + mov (%rsi), %r8 + mov 8(%rsi), %r9 + not %r8 + not %r9 + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) +1: + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/copyd.s b/vere/ext/gmp/gen/x86_64-macos/mpn/copyd.s new file mode 100644 index 0000000..eced825 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/copyd.s @@ -0,0 +1,279 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 6, 0x90 + .globl ___gmpn_copyd + + +___gmpn_copyd: + + + + lea -8(%rsi,%rdx,8), %rsi + lea -8(%rdi,%rdx,8), %rdi + + cmp $7, %rdx + jbe Lbc + + test $8, %dil + jnz Lrp_aligned + + mov (%rsi), %rax + mov %rax, (%rdi) + lea -8(%rsi), %rsi + lea -8(%rdi), %rdi + dec %rdx + +Lrp_aligned: + test $8, %sil + jz Luent + + jmp Lam + + .align 4, 0x90 +Latop:movaps -8(%rsi), %xmm0 + movaps -24(%rsi), %xmm1 + movaps -40(%rsi), %xmm2 + movaps -56(%rsi), %xmm3 + lea -64(%rsi), %rsi + movaps %xmm0, -8(%rdi) + movaps %xmm1, -24(%rdi) + movaps %xmm2, -40(%rdi) + movaps %xmm3, -56(%rdi) + lea -64(%rdi), %rdi +Lam: sub $8, %rdx + jnc Latop + + test $4, %dl + jz 1f + movaps -8(%rsi), %xmm0 + movaps -24(%rsi), %xmm1 + lea -32(%rsi), %rsi + movaps %xmm0, -8(%rdi) + movaps %xmm1, -24(%rdi) + lea -32(%rdi), %rdi + +1: test $2, %dl + jz 1f + movaps -8(%rsi), %xmm0 + lea -16(%rsi), %rsi + movaps %xmm0, -8(%rdi) + lea -16(%rdi), %rdi + +1: test $1, %dl + jz 1f + mov (%rsi), %r8 + mov %r8, (%rdi) + +1: + ret + +Luent:sub $16, %rdx + movaps (%rsi), %xmm0 + jc Luend + + .align 4, 0x90 +Lutop:sub $16, %rdx + movaps -16(%rsi), %xmm1 + .byte 0x66,0x0f,0x3a,0x0f,193,8 + movaps %xmm0, -8(%rdi) + movaps -32(%rsi), %xmm2 + .byte 0x66,0x0f,0x3a,0x0f,202,8 + movaps %xmm1, -24(%rdi) + movaps -48(%rsi), %xmm3 + .byte 0x66,0x0f,0x3a,0x0f,211,8 + movaps %xmm2, -40(%rdi) + movaps -64(%rsi), %xmm0 + .byte 0x66,0x0f,0x3a,0x0f,216,8 + movaps %xmm3, -56(%rdi) + movaps -80(%rsi), %xmm1 + .byte 0x66,0x0f,0x3a,0x0f,193,8 + movaps %xmm0, -72(%rdi) + movaps -96(%rsi), %xmm2 + .byte 0x66,0x0f,0x3a,0x0f,202,8 + movaps %xmm1, -88(%rdi) + movaps -112(%rsi), %xmm3 + .byte 0x66,0x0f,0x3a,0x0f,211,8 + movaps %xmm2, -104(%rdi) + movaps -128(%rsi), %xmm0 + .byte 0x66,0x0f,0x3a,0x0f,216,8 + movaps %xmm3, -120(%rdi) + lea -128(%rsi), %rsi + lea -128(%rdi), %rdi + jnc Lutop + +Luend:test $8, %dl + jz 1f + movaps -16(%rsi), %xmm1 + .byte 0x66,0x0f,0x3a,0x0f,193,8 + movaps %xmm0, -8(%rdi) + movaps -32(%rsi), %xmm0 + .byte 0x66,0x0f,0x3a,0x0f,200,8 + movaps %xmm1, -24(%rdi) + movaps -48(%rsi), %xmm1 + .byte 0x66,0x0f,0x3a,0x0f,193,8 + movaps %xmm0, -40(%rdi) + movaps -64(%rsi), %xmm0 + .byte 0x66,0x0f,0x3a,0x0f,200,8 + movaps %xmm1, -56(%rdi) + lea -64(%rsi), %rsi + lea -64(%rdi), %rdi + +1: test $4, %dl + jz 1f + movaps -16(%rsi), %xmm1 + .byte 0x66,0x0f,0x3a,0x0f,193,8 + movaps %xmm0, -8(%rdi) + movaps -32(%rsi), %xmm0 + .byte 0x66,0x0f,0x3a,0x0f,200,8 + movaps %xmm1, -24(%rdi) + lea -32(%rsi), %rsi + lea -32(%rdi), %rdi + +1: test $2, %dl + jz 1f + movaps -16(%rsi), %xmm1 + .byte 0x66,0x0f,0x3a,0x0f,193,8 + movaps %xmm0, -8(%rdi) + lea -16(%rsi), %rsi + lea -16(%rdi), %rdi + +1: test $1, %dl + jz 1f + mov (%rsi), %r8 + mov %r8, (%rdi) + +1: + ret + + + + +Lbc: sub $4, %edx + jc Lend + + .align 4, 0x90 +Ltop: mov (%rsi), %r8 + mov -8(%rsi), %r9 + lea -32(%rdi), %rdi + mov -16(%rsi), %r10 + mov -24(%rsi), %r11 + lea -32(%rsi), %rsi + mov %r8, 32(%rdi) + mov %r9, 24(%rdi) + + mov %r10, 16(%rdi) + mov %r11, 8(%rdi) + + +Lend: test $1, %dl + jz 1f + mov (%rsi), %r8 + mov %r8, (%rdi) + lea -8(%rdi), %rdi + lea -8(%rsi), %rsi +1: test $2, %dl + jz 1f + mov (%rsi), %r8 + mov -8(%rsi), %r9 + mov %r8, (%rdi) + mov %r9, -8(%rdi) +1: + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/copyi.s b/vere/ext/gmp/gen/x86_64-macos/mpn/copyi.s new file mode 100644 index 0000000..9f77e50 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/copyi.s @@ -0,0 +1,324 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 6, 0x90 + .globl ___gmpn_copyi + + +___gmpn_copyi: + + + + cmp $7, %rdx + jbe Lbc + + test $8, %dil + jz Lrp_aligned + + movsq + dec %rdx + +Lrp_aligned: + test $8, %sil + jnz Luent + + jmp Lam + + .align 4, 0x90 +Latop:movdqa 0(%rsi), %xmm0 + movdqa 16(%rsi), %xmm1 + movdqa 32(%rsi), %xmm2 + movdqa 48(%rsi), %xmm3 + lea 64(%rsi), %rsi + movdqa %xmm0, (%rdi) + movdqa %xmm1, 16(%rdi) + movdqa %xmm2, 32(%rdi) + movdqa %xmm3, 48(%rdi) + lea 64(%rdi), %rdi +Lam: sub $8, %rdx + jnc Latop + + test $4, %dl + jz 1f + movdqa (%rsi), %xmm0 + movdqa 16(%rsi), %xmm1 + lea 32(%rsi), %rsi + movdqa %xmm0, (%rdi) + movdqa %xmm1, 16(%rdi) + lea 32(%rdi), %rdi + +1: test $2, %dl + jz 1f + movdqa (%rsi), %xmm0 + lea 16(%rsi), %rsi + movdqa %xmm0, (%rdi) + lea 16(%rdi), %rdi + +1: test $1, %dl + jz 1f + mov (%rsi), %r8 + mov %r8, (%rdi) + +1: + ret + +Luent: + + + cmp $16, %rdx + jc Lued0 + + + + + + + movaps 120(%rsi), %xmm7 + movaps 104(%rsi), %xmm6 + movaps 88(%rsi), %xmm5 + movaps 72(%rsi), %xmm4 + movaps 56(%rsi), %xmm3 + movaps 40(%rsi), %xmm2 + lea 128(%rsi), %rsi + sub $32, %rdx + jc Lued1 + + .align 4, 0x90 +Lutop:movaps -104(%rsi), %xmm1 + sub $16, %rdx + movaps -120(%rsi), %xmm0 + .byte 0x66,0x0f,0x3a,0x0f,254,8 + movaps -136(%rsi), %xmm8 + movdqa %xmm7, 112(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,245,8 + movaps 120(%rsi), %xmm7 + movdqa %xmm6, 96(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,236,8 + movaps 104(%rsi), %xmm6 + movdqa %xmm5, 80(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,227,8 + movaps 88(%rsi), %xmm5 + movdqa %xmm4, 64(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,218,8 + movaps 72(%rsi), %xmm4 + movdqa %xmm3, 48(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,209,8 + movaps 56(%rsi), %xmm3 + movdqa %xmm2, 32(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,200,8 + movaps 40(%rsi), %xmm2 + movdqa %xmm1, 16(%rdi) + .byte 0x66,65,0x0f,0x3a,0x0f,192,8 + lea 128(%rsi), %rsi + movdqa %xmm0, (%rdi) + lea 128(%rdi), %rdi + jnc Lutop + +Lued1:movaps -104(%rsi), %xmm1 + movaps -120(%rsi), %xmm0 + movaps -136(%rsi), %xmm8 + .byte 0x66,0x0f,0x3a,0x0f,254,8 + movdqa %xmm7, 112(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,245,8 + movdqa %xmm6, 96(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,236,8 + movdqa %xmm5, 80(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,227,8 + movdqa %xmm4, 64(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,218,8 + movdqa %xmm3, 48(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,209,8 + movdqa %xmm2, 32(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,200,8 + movdqa %xmm1, 16(%rdi) + .byte 0x66,65,0x0f,0x3a,0x0f,192,8 + movdqa %xmm0, (%rdi) + lea 128(%rdi), %rdi + + + + + + +Lued0:test $8, %dl + jz 1f + movaps 56(%rsi), %xmm3 + movaps 40(%rsi), %xmm2 + movaps 24(%rsi), %xmm1 + movaps 8(%rsi), %xmm0 + movaps -8(%rsi), %xmm4 + .byte 0x66,0x0f,0x3a,0x0f,218,8 + movdqa %xmm3, 48(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,209,8 + movdqa %xmm2, 32(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,200,8 + movdqa %xmm1, 16(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,196,8 + lea 64(%rsi), %rsi + movdqa %xmm0, (%rdi) + lea 64(%rdi), %rdi + +1: test $4, %dl + jz 1f + movaps 24(%rsi), %xmm1 + movaps 8(%rsi), %xmm0 + .byte 0x66,0x0f,0x3a,0x0f,200,8 + movaps -8(%rsi), %xmm3 + movdqa %xmm1, 16(%rdi) + .byte 0x66,0x0f,0x3a,0x0f,195,8 + lea 32(%rsi), %rsi + movdqa %xmm0, (%rdi) + lea 32(%rdi), %rdi + +1: test $2, %dl + jz 1f + movdqa 8(%rsi), %xmm0 + movdqa -8(%rsi), %xmm3 + .byte 0x66,0x0f,0x3a,0x0f,195,8 + lea 16(%rsi), %rsi + movdqa %xmm0, (%rdi) + lea 16(%rdi), %rdi + +1: test $1, %dl + jz 1f + mov (%rsi), %r8 + mov %r8, (%rdi) + +1: + ret + + + + +Lbc: lea -8(%rdi), %rdi + sub $4, %edx + jc Lend + + .align 4, 0x90 +Ltop: mov (%rsi), %r8 + mov 8(%rsi), %r9 + lea 32(%rdi), %rdi + mov 16(%rsi), %r10 + mov 24(%rsi), %r11 + lea 32(%rsi), %rsi + mov %r8, -24(%rdi) + mov %r9, -16(%rdi) + + mov %r10, -8(%rdi) + mov %r11, (%rdi) + + +Lend: test $1, %dl + jz 1f + mov (%rsi), %r8 + mov %r8, 8(%rdi) + lea 8(%rdi), %rdi + lea 8(%rsi), %rsi +1: test $2, %dl + jz 1f + mov (%rsi), %r8 + mov 8(%rsi), %r9 + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) +1: + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_1n_pi1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_1n_pi1.s new file mode 100644 index 0000000..5ca7107 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_1n_pi1.s @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_div_qr_1n_pi1 + + +___gmpn_div_qr_1n_pi1: + + + + + dec %rdx + jnz Lfirst + + + + lea 1(%rcx), %r10 + mov %rcx, %rax + mul %r9 + mov (%rsi), %r11 + add %r11, %rax + adc %r10, %rdx + mov %rdx, %r10 + imul %r8, %rdx + sub %rdx, %r11 + cmp %r11, %rax + lea (%r11, %r8), %rax + cmovnc %r11, %rax + sbb $0, %r10 + cmp %r8, %rax + jc Lsingle_div_done + sub %r8, %rax + add $1, %r10 +Lsingle_div_done: + mov %r10, (%rdi) + + ret +Lfirst: + + push %r15 + push %r14 + push %r13 + push %r12 + push %rbx + push %rbp + + mov %r8, %rbp + imul %r9, %rbp + neg %rbp + mov %rbp, %rbx + sub %r8, %rbx + + + push %r8 + mov %rdx, %r8 + + mov %r9, %rax + mul %rcx + mov %rax, %r13 + add %rcx, %rdx + mov %rdx, %r10 + + mov %rbp, %rax + mul %rcx + mov -8(%rsi, %r8, 8), %r11 + mov (%rsi, %r8, 8), %rcx + mov %r10, (%rdi, %r8, 8) + add %rax, %r11 + adc %rdx, %rcx + sbb %r12, %r12 + dec %r8 + mov %rcx, %rax + jz Lfinal + + .align 4, 0x90 + + + +Lloop: + + + mov %r9, %r14 + mov %r12, %r15 + and %r12, %r14 + neg %r15 + mul %r9 + add %rdx, %r14 + adc $0, %r15 + add %r13, %r14 + mov %rax, %r13 + mov %rbp, %rax + lea (%rbx, %r11), %r10 + adc $0, %r15 + + + mul %rcx + and %rbp, %r12 + add %r12, %r11 + cmovnc %r11, %r10 + + + adc %rcx, %r14 + mov -8(%rsi, %r8, 8), %r11 + adc %r15, 8(%rdi, %r8, 8) + jc Lq_incr +Lq_incr_done: + add %rax, %r11 + mov %r10, %rax + adc %rdx, %rax + mov %r14, (%rdi, %r8, 8) + sbb %r12, %r12 + dec %r8 + mov %rax, %rcx + jnz Lloop + +Lfinal: + pop %r8 + + mov %r12, %r14 + and %r8, %r12 + sub %r12, %rax + neg %r14 + + mov %rax, %rcx + sub %r8, %rax + cmovc %rcx, %rax + sbb $-1, %r14 + + lea 1(%rax), %r10 + mul %r9 + add %r11, %rax + adc %r10, %rdx + mov %rdx, %r10 + imul %r8, %rdx + sub %rdx, %r11 + cmp %r11, %rax + lea (%r11, %r8), %rax + cmovnc %r11, %rax + sbb $0, %r10 + cmp %r8, %rax + jc Ldiv_done + sub %r8, %rax + add $1, %r10 +Ldiv_done: + add %r10, %r13 + mov %r13, (%rdi) + adc %r14, 8(%rdi) + jnc Ldone +Lfinal_q_incr: + addq $1, 16(%rdi) + lea 8(%rdi), %rdi + jc Lfinal_q_incr + +Ldone: + pop %rbp + pop %rbx + pop %r12 + pop %r13 + pop %r14 + pop %r15 + + ret + +Lq_incr: + + lea 16(%rdi, %r8, 8), %rcx +Lq_incr_loop: + addq $1, (%rcx) + jnc Lq_incr_done + lea 8(%rcx), %rcx + jmp Lq_incr_loop + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_2n_pi1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_2n_pi1.s new file mode 100644 index 0000000..1334c1e --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_2n_pi1.s @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_div_qr_2n_pi1 + + +___gmpn_div_qr_2n_pi1: + + + + + + mov 8(%rsp), %r10 + mov %rdx, %r11 + push %r15 + push %r14 + push %r13 + push %r12 + push %rbx + + mov -16(%r11, %rcx, 8), %r12 + mov -8(%r11, %rcx, 8), %rbx + + mov %r12, %r14 + mov %rbx, %r13 + sub %r9, %r14 + sbb %r8, %r13 + cmovnc %r14, %r12 + cmovnc %r13, %rbx + + sbb %rax, %rax + inc %rax + push %rax + lea -2(%rcx), %rcx + mov %r8, %r15 + neg %r15 + + jmp Lnext + + .align 4, 0x90 +Lloop: + + + + mov %r10, %rax + mul %rbx + mov %r12, %r14 + add %rax, %r14 + adc %rbx, %rdx + mov %rdx, %r13 + imul %r15, %rdx + mov %r9, %rax + lea (%rdx, %r12), %rbx + mul %r13 + mov (%r11, %rcx, 8), %r12 + sub %r9, %r12 + sbb %r8, %rbx + sub %rax, %r12 + sbb %rdx, %rbx + xor %eax, %eax + xor %edx, %edx + cmp %r14, %rbx + cmovnc %r9, %rax + cmovnc %r8, %rdx + adc $0, %r13 + nop + add %rax, %r12 + adc %rdx, %rbx + cmp %r8, %rbx + jae Lfix +Lbck: + mov %r13, (%rdi, %rcx, 8) +Lnext: + sub $1, %rcx + jnc Lloop +Lend: + mov %rbx, 8(%rsi) + mov %r12, (%rsi) + + + pop %rax + + pop %rbx + pop %r12 + pop %r13 + pop %r14 + pop %r15 + + ret + +Lfix: + seta %dl + cmp %r9, %r12 + setae %al + orb %dl, %al + je Lbck + inc %r13 + sub %r9, %r12 + sbb %r8, %rbx + jmp Lbck + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_2u_pi1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_2u_pi1.s new file mode 100644 index 0000000..62fb8b7 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/div_qr_2u_pi1.s @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + + .globl ___gmpn_div_qr_2u_pi1 + + +___gmpn_div_qr_2u_pi1: + + mov 0+16(%rsp), %r10 + mov %rdx, %r11 + push %r15 + push %r14 + push %r13 + push %r12 + push %rbx + push %rbp + push %rsi + + lea -2(%rcx), %rbp + mov %r8, %r15 + neg %r15 + + + movl 56+8(%rsp), %ecx + + + + xor %ebx, %ebx + mov 8(%r11, %rbp, 8), %r12 + shld %cl, %r12, %rbx + + + mov %r10, %rax + mul %rbx + mov (%r11, %rbp, 8), %rsi + shld %cl, %rsi, %r12 + mov %r12, %r14 + add %rax, %r14 + adc %rbx, %rdx + mov %rdx, %r13 + imul %r15, %rdx + mov %r9, %rax + lea (%rdx, %r12), %rbx + mul %r13 + mov %rsi, %r12 + shl %cl, %r12 + sub %r9, %r12 + sbb %r8, %rbx + sub %rax, %r12 + sbb %rdx, %rbx + xor %eax, %eax + xor %edx, %edx + cmp %r14, %rbx + cmovnc %r9, %rax + cmovnc %r8, %rdx + adc $0, %r13 + nop + add %rax, %r12 + adc %rdx, %rbx + cmp %r8, %rbx + jae Lfix_qh +Lbck_qh: + push %r13 + + jmp Lnext + + .align 4, 0x90 +Lloop: + + + + mov %r10, %rax + mul %rbx + mov (%r11, %rbp, 8), %rsi + xor %r13d, %r13d + shld %cl, %rsi, %r13 + or %r13, %r12 + mov %r12, %r14 + add %rax, %r14 + adc %rbx, %rdx + mov %rdx, %r13 + imul %r15, %rdx + mov %r9, %rax + lea (%rdx, %r12), %rbx + mul %r13 + mov %rsi, %r12 + shl %cl, %r12 + sub %r9, %r12 + sbb %r8, %rbx + sub %rax, %r12 + sbb %rdx, %rbx + xor %eax, %eax + xor %edx, %edx + cmp %r14, %rbx + cmovnc %r9, %rax + cmovnc %r8, %rdx + adc $0, %r13 + nop + add %rax, %r12 + adc %rdx, %rbx + cmp %r8, %rbx + jae Lfix +Lbck: + mov %r13, (%rdi, %rbp, 8) +Lnext: + sub $1, %rbp + jnc Lloop +Lend: + + pop %rax + pop %rsi + shrd %cl, %rbx, %r12 + shr %cl, %rbx + mov %rbx, 8(%rsi) + mov %r12, (%rsi) + + pop %rbp + pop %rbx + pop %r12 + pop %r13 + pop %r14 + pop %r15 + ret + +Lfix: + seta %dl + cmp %r9, %r12 + setae %al + orb %dl, %al + je Lbck + inc %r13 + sub %r9, %r12 + sbb %r8, %rbx + jmp Lbck + + +Lfix_qh: + seta %dl + cmp %r9, %r12 + setae %al + orb %dl, %al + je Lbck_qh + inc %r13 + sub %r9, %r12 + sbb %r8, %rbx + jmp Lbck_qh + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/dive_1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/dive_1.s new file mode 100644 index 0000000..4d45de0 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/dive_1.s @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_divexact_1 + + +___gmpn_divexact_1: + + + push %rbx + + mov %rcx, %rax + xor %ecx, %ecx + mov %rdx, %r8 + + bt $0, %eax + jnc Levn + +Lodd: mov %rax, %rbx + shr %eax + and $127, %eax + + lea ___gmp_binvert_limb_table(%rip), %rdx + + + + movzbl (%rdx,%rax), %eax + + mov %rbx, %r11 + + lea (%rax,%rax), %edx + imul %eax, %eax + imul %ebx, %eax + sub %eax, %edx + + lea (%rdx,%rdx), %eax + imul %edx, %edx + imul %ebx, %edx + sub %edx, %eax + + lea (%rax,%rax), %r10 + imul %rax, %rax + imul %rbx, %rax + sub %rax, %r10 + + lea (%rsi,%r8,8), %rsi + lea -8(%rdi,%r8,8), %rdi + neg %r8 + + mov (%rsi,%r8,8), %rax + + inc %r8 + jz Lone + + mov (%rsi,%r8,8), %rdx + + shrd %cl, %rdx, %rax + + xor %ebx, %ebx + jmp Lent + +Levn: bsf %rax, %rcx + shr %cl, %rax + jmp Lodd + + .align 3, 0x90 +Ltop: + + + + + + + + + + + mul %r11 + mov -8(%rsi,%r8,8), %rax + mov (%rsi,%r8,8), %r9 + shrd %cl, %r9, %rax + nop + sub %rbx, %rax + setc %bl + sub %rdx, %rax + adc $0, %rbx +Lent: imul %r10, %rax + mov %rax, (%rdi,%r8,8) + inc %r8 + jnz Ltop + + mul %r11 + mov -8(%rsi), %rax + shr %cl, %rax + sub %rbx, %rax + sub %rdx, %rax + imul %r10, %rax + mov %rax, (%rdi) + pop %rbx + + ret + +Lone: shr %cl, %rax + imul %r10, %rax + mov %rax, (%rdi) + pop %rbx + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/divrem_1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/divrem_1.s new file mode 100644 index 0000000..c0d5b59 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/divrem_1.s @@ -0,0 +1,348 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_preinv_divrem_1 + + +___gmpn_preinv_divrem_1: + + + + + xor %eax, %eax + push %r13 + push %r12 + push %rbp + push %rbx + + mov %rsi, %r12 + mov %rcx, %rbx + add %rsi, %rcx + mov %rdx, %rsi + + lea -8(%rdi,%rcx,8), %rdi + + test %r8, %r8 + js Lnent + + mov 40(%rsp), %cl + shl %cl, %r8 + jmp Luent + + + .align 4, 0x90 + .globl ___gmpn_divrem_1 + + +___gmpn_divrem_1: + + + + xor %eax, %eax + push %r13 + push %r12 + push %rbp + push %rbx + + mov %rsi, %r12 + mov %rcx, %rbx + add %rsi, %rcx + mov %rdx, %rsi + je Lret + + lea -8(%rdi,%rcx,8), %rdi + xor %ebp, %ebp + + test %r8, %r8 + jns Lunnormalized + +Lnormalized: + test %rbx, %rbx + je L8 + mov -8(%rsi,%rbx,8), %rbp + dec %rbx + mov %rbp, %rax + sub %r8, %rbp + cmovc %rax, %rbp + sbb %eax, %eax + inc %eax + mov %rax, (%rdi) + lea -8(%rdi), %rdi +L8: + push %rdi + push %rsi + push %r8 + mov %r8, %rdi + + + + call ___gmpn_invert_limb + + pop %r8 + pop %rsi + pop %rdi + + mov %rax, %r9 + mov %rbp, %rax + jmp Lnent + + .align 4, 0x90 +Lntop:mov (%rsi,%rbx,8), %r10 + mul %r9 + add %r10, %rax + adc %rbp, %rdx + mov %rax, %rbp + mov %rdx, %r13 + imul %r8, %rdx + sub %rdx, %r10 + mov %r8, %rax + add %r10, %rax + cmp %rbp, %r10 + cmovc %r10, %rax + adc $-1, %r13 + cmp %r8, %rax + jae Lnfx +Lnok: mov %r13, (%rdi) + sub $8, %rdi +Lnent:lea 1(%rax), %rbp + dec %rbx + jns Lntop + + xor %ecx, %ecx + jmp Lfrac + +Lnfx: sub %r8, %rax + inc %r13 + jmp Lnok + +Lunnormalized: + test %rbx, %rbx + je L44 + mov -8(%rsi,%rbx,8), %rax + cmp %r8, %rax + jae L44 + mov %rbp, (%rdi) + mov %rax, %rbp + lea -8(%rdi), %rdi + je Lret + dec %rbx +L44: + bsr %r8, %rcx + not %ecx + shl %cl, %r8 + shl %cl, %rbp + + push %rcx + push %rdi + push %rsi + push %r8 + sub $8, %rsp + mov %r8, %rdi + + + + call ___gmpn_invert_limb + add $8, %rsp + + pop %r8 + pop %rsi + pop %rdi + pop %rcx + + mov %rax, %r9 + mov %rbp, %rax + test %rbx, %rbx + je Lfrac + +Luent:dec %rbx + mov (%rsi,%rbx,8), %rbp + neg %ecx + shr %cl, %rbp + neg %ecx + or %rbp, %rax + jmp Lent + + .align 4, 0x90 +Lutop:mov (%rsi,%rbx,8), %r10 + shl %cl, %rbp + neg %ecx + shr %cl, %r10 + neg %ecx + or %r10, %rbp + mul %r9 + add %rbp, %rax + adc %r11, %rdx + mov %rax, %r11 + mov %rdx, %r13 + imul %r8, %rdx + sub %rdx, %rbp + mov %r8, %rax + add %rbp, %rax + cmp %r11, %rbp + cmovc %rbp, %rax + adc $-1, %r13 + cmp %r8, %rax + jae Lufx +Luok: mov %r13, (%rdi) + sub $8, %rdi +Lent: mov (%rsi,%rbx,8), %rbp + dec %rbx + lea 1(%rax), %r11 + jns Lutop + +Luend:shl %cl, %rbp + mul %r9 + add %rbp, %rax + adc %r11, %rdx + mov %rax, %r11 + mov %rdx, %r13 + imul %r8, %rdx + sub %rdx, %rbp + mov %r8, %rax + add %rbp, %rax + cmp %r11, %rbp + cmovc %rbp, %rax + adc $-1, %r13 + cmp %r8, %rax + jae Lefx +Leok: mov %r13, (%rdi) + sub $8, %rdi + jmp Lfrac + +Lufx: sub %r8, %rax + inc %r13 + jmp Luok +Lefx: sub %r8, %rax + inc %r13 + jmp Leok + +Lfrac:mov %r8, %rbp + neg %rbp + jmp Lfent + + .align 4, 0x90 +Lftop:mul %r9 + add %r11, %rdx + mov %rax, %r11 + mov %rdx, %r13 + imul %rbp, %rdx + mov %r8, %rax + add %rdx, %rax + cmp %r11, %rdx + cmovc %rdx, %rax + adc $-1, %r13 + mov %r13, (%rdi) + sub $8, %rdi +Lfent:lea 1(%rax), %r11 + dec %r12 + jns Lftop + + shr %cl, %rax +Lret: pop %rbx + pop %rbp + pop %r12 + pop %r13 + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/divrem_2.s b/vere/ext/gmp/gen/x86_64-macos/mpn/divrem_2.s new file mode 100644 index 0000000..a1c614e --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/divrem_2.s @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_divrem_2 + + +___gmpn_divrem_2: + + + + push %r15 + push %r14 + push %r13 + push %r12 + lea -24(%rdx,%rcx,8), %r12 + mov %rsi, %r13 + push %rbp + mov %rdi, %rbp + push %rbx + mov 8(%r8), %r11 + mov 16(%r12), %rbx + mov (%r8), %r8 + mov 8(%r12), %r10 + + xor %r15d, %r15d + cmp %rbx, %r11 + ja L2 + setb %dl + cmp %r10, %r8 + setbe %al + orb %al, %dl + je L2 + inc %r15d + sub %r8, %r10 + sbb %r11, %rbx +L2: + lea -3(%rcx,%r13), %r14 + test %r14, %r14 + js Lend + + push %r8 + push %r10 + push %r11 + mov %r11, %rdi + + + + call ___gmpn_invert_limb + + pop %r11 + pop %r10 + pop %r8 + + mov %r11, %rdx + mov %rax, %rdi + imul %rax, %rdx + mov %rdx, %r9 + mul %r8 + xor %ecx, %ecx + add %r8, %r9 + adc $-1, %rcx + add %rdx, %r9 + adc $0, %rcx + js 2f +1: dec %rdi + sub %r11, %r9 + sbb $0, %rcx + jns 1b +2: + + lea (%rbp,%r14,8), %rbp + mov %r11, %rsi + neg %rsi + + + + + .align 4, 0x90 +Ltop: mov %rdi, %rax + mul %rbx + mov %r10, %rcx + add %rax, %rcx + adc %rbx, %rdx + mov %rdx, %r9 + imul %rsi, %rdx + mov %r8, %rax + lea (%rdx, %r10), %rbx + xor %r10d, %r10d + mul %r9 + cmp %r14, %r13 + jg L19 + mov (%r12), %r10 + sub $8, %r12 +L19: sub %r8, %r10 + sbb %r11, %rbx + sub %rax, %r10 + sbb %rdx, %rbx + xor %eax, %eax + xor %edx, %edx + cmp %rcx, %rbx + cmovnc %r8, %rax + cmovnc %r11, %rdx + adc $0, %r9 + nop + add %rax, %r10 + adc %rdx, %rbx + cmp %r11, %rbx + jae Lfix +Lbck: mov %r9, (%rbp) + sub $8, %rbp + dec %r14 + jns Ltop + +Lend: mov %r10, 8(%r12) + mov %rbx, 16(%r12) + pop %rbx + pop %rbp + pop %r12 + pop %r13 + pop %r14 + mov %r15, %rax + pop %r15 + + ret + +Lfix: seta %dl + cmp %r8, %r10 + setae %al + orb %dl, %al + je Lbck + inc %r9 + sub %r8, %r10 + sbb %r11, %rbx + jmp Lbck + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/fib_table.c b/vere/ext/gmp/gen/x86_64-macos/mpn/fib_table.c new file mode 100644 index 0000000..a830475 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/fib_table.c @@ -0,0 +1,107 @@ +/* This file generated by gen-fib.c - DO NOT EDIT. */ + +#include "gmp.h" +#include "gmp-impl.h" + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +const mp_limb_t +__gmp_fib_table[FIB_TABLE_LIMIT+2] = { + CNST_LIMB (0x1), /* -1 */ + CNST_LIMB (0x0), /* 0 */ + CNST_LIMB (0x1), /* 1 */ + CNST_LIMB (0x1), /* 2 */ + CNST_LIMB (0x2), /* 3 */ + CNST_LIMB (0x3), /* 4 */ + CNST_LIMB (0x5), /* 5 */ + CNST_LIMB (0x8), /* 6 */ + CNST_LIMB (0xd), /* 7 */ + CNST_LIMB (0x15), /* 8 */ + CNST_LIMB (0x22), /* 9 */ + CNST_LIMB (0x37), /* 10 */ + CNST_LIMB (0x59), /* 11 */ + CNST_LIMB (0x90), /* 12 */ + CNST_LIMB (0xe9), /* 13 */ + CNST_LIMB (0x179), /* 14 */ + CNST_LIMB (0x262), /* 15 */ + CNST_LIMB (0x3db), /* 16 */ + CNST_LIMB (0x63d), /* 17 */ + CNST_LIMB (0xa18), /* 18 */ + CNST_LIMB (0x1055), /* 19 */ + CNST_LIMB (0x1a6d), /* 20 */ + CNST_LIMB (0x2ac2), /* 21 */ + CNST_LIMB (0x452f), /* 22 */ + CNST_LIMB (0x6ff1), /* 23 */ + CNST_LIMB (0xb520), /* 24 */ + CNST_LIMB (0x12511), /* 25 */ + CNST_LIMB (0x1da31), /* 26 */ + CNST_LIMB (0x2ff42), /* 27 */ + CNST_LIMB (0x4d973), /* 28 */ + CNST_LIMB (0x7d8b5), /* 29 */ + CNST_LIMB (0xcb228), /* 30 */ + CNST_LIMB (0x148add), /* 31 */ + CNST_LIMB (0x213d05), /* 32 */ + CNST_LIMB (0x35c7e2), /* 33 */ + CNST_LIMB (0x5704e7), /* 34 */ + CNST_LIMB (0x8cccc9), /* 35 */ + CNST_LIMB (0xe3d1b0), /* 36 */ + CNST_LIMB (0x1709e79), /* 37 */ + CNST_LIMB (0x2547029), /* 38 */ + CNST_LIMB (0x3c50ea2), /* 39 */ + CNST_LIMB (0x6197ecb), /* 40 */ + CNST_LIMB (0x9de8d6d), /* 41 */ + CNST_LIMB (0xff80c38), /* 42 */ + CNST_LIMB (0x19d699a5), /* 43 */ + CNST_LIMB (0x29cea5dd), /* 44 */ + CNST_LIMB (0x43a53f82), /* 45 */ + CNST_LIMB (0x6d73e55f), /* 46 */ + CNST_LIMB (0xb11924e1), /* 47 */ + CNST_LIMB (0x11e8d0a40), /* 48 */ + CNST_LIMB (0x1cfa62f21), /* 49 */ + CNST_LIMB (0x2ee333961), /* 50 */ + CNST_LIMB (0x4bdd96882), /* 51 */ + CNST_LIMB (0x7ac0ca1e3), /* 52 */ + CNST_LIMB (0xc69e60a65), /* 53 */ + CNST_LIMB (0x1415f2ac48), /* 54 */ + CNST_LIMB (0x207fd8b6ad), /* 55 */ + CNST_LIMB (0x3495cb62f5), /* 56 */ + CNST_LIMB (0x5515a419a2), /* 57 */ + CNST_LIMB (0x89ab6f7c97), /* 58 */ + CNST_LIMB (0xdec1139639), /* 59 */ + CNST_LIMB (0x1686c8312d0), /* 60 */ + CNST_LIMB (0x2472d96a909), /* 61 */ + CNST_LIMB (0x3af9a19bbd9), /* 62 */ + CNST_LIMB (0x5f6c7b064e2), /* 63 */ + CNST_LIMB (0x9a661ca20bb), /* 64 */ + CNST_LIMB (0xf9d297a859d), /* 65 */ + CNST_LIMB (0x19438b44a658), /* 66 */ + CNST_LIMB (0x28e0b4bf2bf5), /* 67 */ + CNST_LIMB (0x42244003d24d), /* 68 */ + CNST_LIMB (0x6b04f4c2fe42), /* 69 */ + CNST_LIMB (0xad2934c6d08f), /* 70 */ + CNST_LIMB (0x1182e2989ced1), /* 71 */ + CNST_LIMB (0x1c5575e509f60), /* 72 */ + CNST_LIMB (0x2dd8587da6e31), /* 73 */ + CNST_LIMB (0x4a2dce62b0d91), /* 74 */ + CNST_LIMB (0x780626e057bc2), /* 75 */ + CNST_LIMB (0xc233f54308953), /* 76 */ + CNST_LIMB (0x13a3a1c2360515), /* 77 */ + CNST_LIMB (0x1fc6e116668e68), /* 78 */ + CNST_LIMB (0x336a82d89c937d), /* 79 */ + CNST_LIMB (0x533163ef0321e5), /* 80 */ + CNST_LIMB (0x869be6c79fb562), /* 81 */ + CNST_LIMB (0xd9cd4ab6a2d747), /* 82 */ + CNST_LIMB (0x16069317e428ca9), /* 83 */ + CNST_LIMB (0x23a367c34e563f0), /* 84 */ + CNST_LIMB (0x39a9fadb327f099), /* 85 */ + CNST_LIMB (0x5d4d629e80d5489), /* 86 */ + CNST_LIMB (0x96f75d79b354522), /* 87 */ + CNST_LIMB (0xf444c01834299ab), /* 88 */ + CNST_LIMB (0x18b3c1d91e77decd), /* 89 */ + CNST_LIMB (0x27f80ddaa1ba7878), /* 90 */ + CNST_LIMB (0x40abcfb3c0325745), /* 91 */ + CNST_LIMB (0x68a3dd8e61eccfbd), /* 92 */ + CNST_LIMB (0xa94fad42221f2702), /* 93 */ +}; diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/gcd_11.s b/vere/ext/gmp/gen/x86_64-macos/mpn/gcd_11.s new file mode 100644 index 0000000..700ac46 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/gcd_11.s @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 6, 0x90 + .globl ___gmpn_gcd_11 + + +___gmpn_gcd_11: + + + jmp Lodd + + .align 4, 0x90 +Ltop: cmovc %rdx, %rdi + cmovc %rax, %rsi + shr %cl, %rdi +Lodd: mov %rsi, %rdx + sub %rdi, %rdx + bsf %rdx, %rcx + mov %rdi, %rax + sub %rsi, %rdi + jnz Ltop + +Lend: + + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/gcd_22.s b/vere/ext/gmp/gen/x86_64-macos/mpn/gcd_22.s new file mode 100644 index 0000000..02be83c --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/gcd_22.s @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 6, 0x90 + .globl ___gmpn_gcd_22 + + +___gmpn_gcd_22: + + + + .align 4, 0x90 +Ltop: mov %rcx, %r10 + sub %rsi, %r10 + jz Llowz + mov %rdx, %r11 + sbb %rdi, %r11 + + rep;bsf %r10, %rax + + mov %rsi, %r8 + sub %rcx, %rsi + mov %rdi, %r9 + sbb %rdx, %rdi + +Lbck: cmovc %r10, %rsi + cmovc %r11, %rdi + cmovc %r8, %rcx + cmovc %r9, %rdx + + xor %r10d, %r10d + sub %rax, %r10 + .byte 0xc4,98,169,0xf7,207 + .byte 0xc4,226,251,0xf7,246 + .byte 0xc4,226,251,0xf7,255 + or %r9, %rsi + + test %rdx, %rdx + jnz Ltop + test %rdi, %rdi + jnz Ltop + +Lgcd_11: + mov %rcx, %rdi + + jmp ___gmpn_gcd_11 + +Llowz: + + + mov %rdx, %r10 + sub %rdi, %r10 + je Lend + + xor %r11, %r11 + mov %rsi, %r8 + mov %rdi, %r9 + rep;bsf %r10, %rax + mov %rdi, %rsi + xor %rdi, %rdi + sub %rdx, %rsi + jmp Lbck + +Lend: mov %rcx, %rax + +Lret: + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/hamdist.s b/vere/ext/gmp/gen/x86_64-macos/mpn/hamdist.s new file mode 100644 index 0000000..32c21c6 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/hamdist.s @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_hamdist + + +___gmpn_hamdist: + + + push %rbx + push %rbp + + mov (%rdi), %r10 + xor (%rsi), %r10 + + mov %edx, %r8d + and $3, %r8d + + xor %ecx, %ecx + .byte 0xf3,0x49,0x0f,0xb8,0xc2 + + lea Ltab(%rip), %r9 + + movslq (%r9,%r8,4), %r8 + add %r9, %r8 + jmp *%r8 + + +L3: mov 8(%rdi), %r10 + mov 16(%rdi), %r11 + xor 8(%rsi), %r10 + xor 16(%rsi), %r11 + xor %ebp, %ebp + sub $4, %rdx + jle Lx3 + mov 24(%rdi), %r8 + mov 32(%rdi), %r9 + add $24, %rdi + add $24, %rsi + jmp Le3 + +L0: mov 8(%rdi), %r9 + xor 8(%rsi), %r9 + mov 16(%rdi), %r10 + mov 24(%rdi), %r11 + xor %ebx, %ebx + xor 16(%rsi), %r10 + xor 24(%rsi), %r11 + add $32, %rdi + add $32, %rsi + sub $4, %rdx + jle Lx4 + + .align 4, 0x90 +Ltop: +Le0: .byte 0xf3,0x49,0x0f,0xb8,0xe9 + mov (%rdi), %r8 + mov 8(%rdi), %r9 + add %rbx, %rax +Le3: .byte 0xf3,0x49,0x0f,0xb8,0xda + xor (%rsi), %r8 + xor 8(%rsi), %r9 + add %rbp, %rcx +Le2: .byte 0xf3,0x49,0x0f,0xb8,0xeb + mov 16(%rdi), %r10 + mov 24(%rdi), %r11 + add $32, %rdi + add %rbx, %rax +Le1: .byte 0xf3,0x49,0x0f,0xb8,0xd8 + xor 16(%rsi), %r10 + xor 24(%rsi), %r11 + add $32, %rsi + add %rbp, %rcx + sub $4, %rdx + jg Ltop + +Lx4: .byte 0xf3,0x49,0x0f,0xb8,0xe9 + add %rbx, %rax +Lx3: .byte 0xf3,0x49,0x0f,0xb8,0xda + add %rbp, %rcx + .byte 0xf3,0x49,0x0f,0xb8,0xeb + add %rbx, %rax + add %rbp, %rcx +Lx2: add %rcx, %rax +Lx1: pop %rbp + pop %rbx + + ret + +L2: mov 8(%rdi), %r11 + xor 8(%rsi), %r11 + sub $2, %rdx + jle Ln2 + mov 16(%rdi), %r8 + mov 24(%rdi), %r9 + xor %ebx, %ebx + xor 16(%rsi), %r8 + xor 24(%rsi), %r9 + add $16, %rdi + add $16, %rsi + jmp Le2 +Ln2: .byte 0xf3,0x49,0x0f,0xb8,0xcb + jmp Lx2 + +L1: dec %rdx + jle Lx1 + mov 8(%rdi), %r8 + mov 16(%rdi), %r9 + xor 8(%rsi), %r8 + xor 16(%rsi), %r9 + xor %ebp, %ebp + mov 24(%rdi), %r10 + mov 32(%rdi), %r11 + add $40, %rdi + add $8, %rsi + jmp Le1 + + + .text + .align 3, 0x90 +Ltab: .set L0_tmp, L0-Ltab + .long L0_tmp + + .set L1_tmp, L1-Ltab + .long L1_tmp + + .set L2_tmp, L2-Ltab + .long L2_tmp + + .set L3_tmp, L3-Ltab + .long L3_tmp + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/invert_limb.s b/vere/ext/gmp/gen/x86_64-macos/mpn/invert_limb.s new file mode 100644 index 0000000..a5f251b --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/invert_limb.s @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.private_extern __gmpn_invert_limb_table + + + .text + .align 4, 0x90 + .globl ___gmpn_invert_limb + + +___gmpn_invert_limb: + + + mov %rdi, %rax + shr $55, %rax + + lea __gmpn_invert_limb_table(%rip), %r8 + add $-512, %r8 + + movzwl (%r8,%rax,2), %ecx + + + mov %rdi, %rsi + mov %ecx, %eax + imul %ecx, %ecx + shr $24, %rsi + inc %rsi + imul %rsi, %rcx + shr $40, %rcx + sal $11, %eax + dec %eax + sub %ecx, %eax + + + mov $0x1000000000000000, %rcx + imul %rax, %rsi + sub %rsi, %rcx + imul %rax, %rcx + sal $13, %rax + shr $47, %rcx + add %rax, %rcx + + + mov %rdi, %rsi + shr %rsi + sbb %rax, %rax + sub %rax, %rsi + imul %rcx, %rsi + and %rcx, %rax + shr %rax + sub %rsi, %rax + mul %rcx + sal $31, %rcx + shr %rdx + add %rdx, %rcx + + mov %rdi, %rax + mul %rcx + add %rdi, %rax + mov %rcx, %rax + adc %rdi, %rdx + sub %rdx, %rax + + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/invert_limb_table.s b/vere/ext/gmp/gen/x86_64-macos/mpn/invert_limb_table.s new file mode 100644 index 0000000..b937cd0 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/invert_limb_table.s @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.private_extern __gmpn_invert_limb_table + + + + + .section __TEXT,__const + .align 1, 0x90 + .globl __gmpn_invert_limb_table +__gmpn_invert_limb_table: + .value 2045 + .value 2037 + .value 2029 + .value 2021 + .value 2013 + .value 2005 + .value 1998 + .value 1990 + .value 1983 + .value 1975 + .value 1968 + .value 1960 + .value 1953 + .value 1946 + .value 1938 + .value 1931 + .value 1924 + .value 1917 + .value 1910 + .value 1903 + .value 1896 + .value 1889 + .value 1883 + .value 1876 + .value 1869 + .value 1863 + .value 1856 + .value 1849 + .value 1843 + .value 1836 + .value 1830 + .value 1824 + .value 1817 + .value 1811 + .value 1805 + .value 1799 + .value 1792 + .value 1786 + .value 1780 + .value 1774 + .value 1768 + .value 1762 + .value 1756 + .value 1750 + .value 1745 + .value 1739 + .value 1733 + .value 1727 + .value 1722 + .value 1716 + .value 1710 + .value 1705 + .value 1699 + .value 1694 + .value 1688 + .value 1683 + .value 1677 + .value 1672 + .value 1667 + .value 1661 + .value 1656 + .value 1651 + .value 1646 + .value 1641 + .value 1636 + .value 1630 + .value 1625 + .value 1620 + .value 1615 + .value 1610 + .value 1605 + .value 1600 + .value 1596 + .value 1591 + .value 1586 + .value 1581 + .value 1576 + .value 1572 + .value 1567 + .value 1562 + .value 1558 + .value 1553 + .value 1548 + .value 1544 + .value 1539 + .value 1535 + .value 1530 + .value 1526 + .value 1521 + .value 1517 + .value 1513 + .value 1508 + .value 1504 + .value 1500 + .value 1495 + .value 1491 + .value 1487 + .value 1483 + .value 1478 + .value 1474 + .value 1470 + .value 1466 + .value 1462 + .value 1458 + .value 1454 + .value 1450 + .value 1446 + .value 1442 + .value 1438 + .value 1434 + .value 1430 + .value 1426 + .value 1422 + .value 1418 + .value 1414 + .value 1411 + .value 1407 + .value 1403 + .value 1399 + .value 1396 + .value 1392 + .value 1388 + .value 1384 + .value 1381 + .value 1377 + .value 1374 + .value 1370 + .value 1366 + .value 1363 + .value 1359 + .value 1356 + .value 1352 + .value 1349 + .value 1345 + .value 1342 + .value 1338 + .value 1335 + .value 1332 + .value 1328 + .value 1325 + .value 1322 + .value 1318 + .value 1315 + .value 1312 + .value 1308 + .value 1305 + .value 1302 + .value 1299 + .value 1295 + .value 1292 + .value 1289 + .value 1286 + .value 1283 + .value 1280 + .value 1276 + .value 1273 + .value 1270 + .value 1267 + .value 1264 + .value 1261 + .value 1258 + .value 1255 + .value 1252 + .value 1249 + .value 1246 + .value 1243 + .value 1240 + .value 1237 + .value 1234 + .value 1231 + .value 1228 + .value 1226 + .value 1223 + .value 1220 + .value 1217 + .value 1214 + .value 1211 + .value 1209 + .value 1206 + .value 1203 + .value 1200 + .value 1197 + .value 1195 + .value 1192 + .value 1189 + .value 1187 + .value 1184 + .value 1181 + .value 1179 + .value 1176 + .value 1173 + .value 1171 + .value 1168 + .value 1165 + .value 1163 + .value 1160 + .value 1158 + .value 1155 + .value 1153 + .value 1150 + .value 1148 + .value 1145 + .value 1143 + .value 1140 + .value 1138 + .value 1135 + .value 1133 + .value 1130 + .value 1128 + .value 1125 + .value 1123 + .value 1121 + .value 1118 + .value 1116 + .value 1113 + .value 1111 + .value 1109 + .value 1106 + .value 1104 + .value 1102 + .value 1099 + .value 1097 + .value 1095 + .value 1092 + .value 1090 + .value 1088 + .value 1086 + .value 1083 + .value 1081 + .value 1079 + .value 1077 + .value 1074 + .value 1072 + .value 1070 + .value 1068 + .value 1066 + .value 1064 + .value 1061 + .value 1059 + .value 1057 + .value 1055 + .value 1053 + .value 1051 + .value 1049 + .value 1047 + .value 1044 + .value 1042 + .value 1040 + .value 1038 + .value 1036 + .value 1034 + .value 1032 + .value 1030 + .value 1028 + .value 1026 + .value 1024 + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/ior_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/ior_n.s new file mode 100644 index 0000000..7a15d18 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/ior_n.s @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_ior_n + + +___gmpn_ior_n: + + + mov (%rdx), %r8 + mov %ecx, %eax + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: or (%rsi), %r8 + mov %r8, (%rdi) + inc %rcx + lea -8(%rsi), %rsi + lea -8(%rdx), %rdx + lea -8(%rdi), %rdi + jmp Le11 +Lb10: add $2, %rcx + lea -16(%rsi), %rsi + lea -16(%rdx), %rdx + lea -16(%rdi), %rdi + jmp Le10 +Lb01: or (%rsi), %r8 + mov %r8, (%rdi) + dec %rcx + jz Lret + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + + .align 4, 0x90 +Ltop: mov (%rdx), %r8 +Lb00: mov 8(%rdx), %r9 + or (%rsi), %r8 + or 8(%rsi), %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) +Le11: mov 16(%rdx), %r8 +Le10: mov 24(%rdx), %r9 + lea 32(%rdx), %rdx + or 16(%rsi), %r8 + or 24(%rsi), %r9 + lea 32(%rsi), %rsi + mov %r8, 16(%rdi) + mov %r9, 24(%rdi) + lea 32(%rdi), %rdi + sub $4, %rcx + jnz Ltop + +Lret: + ret + + + + + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/iorn_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/iorn_n.s new file mode 100644 index 0000000..b14be40 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/iorn_n.s @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_iorn_n + + +___gmpn_iorn_n: + + + mov (%rdx), %r8 + not %r8 + mov %ecx, %eax + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: or (%rsi), %r8 + mov %r8, (%rdi) + inc %rcx + lea -8(%rsi), %rsi + lea -8(%rdx), %rdx + lea -8(%rdi), %rdi + jmp Le11 +Lb10: add $2, %rcx + lea -16(%rsi), %rsi + lea -16(%rdx), %rdx + lea -16(%rdi), %rdi + jmp Le10 +Lb01: or (%rsi), %r8 + mov %r8, (%rdi) + dec %rcx + jz Lret + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + + .align 4, 0x90 +Ltop: mov (%rdx), %r8 + not %r8 +Lb00: mov 8(%rdx), %r9 + not %r9 + or (%rsi), %r8 + or 8(%rsi), %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) +Le11: mov 16(%rdx), %r8 + not %r8 +Le10: mov 24(%rdx), %r9 + not %r9 + lea 32(%rdx), %rdx + or 16(%rsi), %r8 + or 24(%rsi), %r9 + lea 32(%rsi), %rsi + mov %r8, 16(%rdi) + mov %r9, 24(%rdi) + lea 32(%rdi), %rdi + sub $4, %rcx + jnz Ltop + +Lret: + ret + + + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/jacobitab.h b/vere/ext/gmp/gen/x86_64-macos/mpn/jacobitab.h new file mode 100644 index 0000000..4bdbfcc --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/jacobitab.h @@ -0,0 +1,13 @@ + 0, 0, 0, 0, 0,12, 8, 4, 1, 1, 1, 1, 1,13, 9, 5, + 2, 2, 2, 2, 2, 6,10,14, 3, 3, 3, 3, 3, 7,11,15, + 4,16, 6,18, 4, 0,12, 8, 5,17, 7,19, 5, 1,13, 9, + 6,18, 4,16, 6,10,14, 2, 7,19, 5,17, 7,11,15, 3, + 8,10, 9,11, 8, 4, 0,12, 9,11, 8,10, 9, 5, 1,13, +10, 9,11, 8,10,14, 2, 6,11, 8,10, 9,11,15, 3, 7, +12,22,24,20,12, 8, 4, 0,13,23,25,21,13, 9, 5, 1, +25,21,13,23,14, 2, 6,10,24,20,12,22,15, 3, 7,11, +16, 6,18, 4,16,16,16,16,17, 7,19, 5,17,17,17,17, +18, 4,16, 6,18,22,19,23,19, 5,17, 7,19,23,18,22, +20,12,22,24,20,20,20,20,21,13,23,25,21,21,21,21, +22,24,20,12,22,19,23,18,23,25,21,13,23,18,22,19, +24,20,12,22,15, 3, 7,11,25,21,13,23,14, 2, 6,10, diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/lshift.s b/vere/ext/gmp/gen/x86_64-macos/mpn/lshift.s new file mode 100644 index 0000000..6463cbe --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/lshift.s @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 6, 0x90 + .globl ___gmpn_lshift + + +___gmpn_lshift: + + + movd %ecx, %xmm4 + mov $64, %eax + sub %ecx, %eax + movd %eax, %xmm5 + + neg %ecx + mov -8(%rsi,%rdx,8), %rax + shr %cl, %rax + + cmp $3, %rdx + jle Lbc + + lea (%rdi,%rdx,8), %ecx + test $8, %cl + jz Lrp_aligned + + + movq -8(%rsi,%rdx,8), %xmm0 + movq -16(%rsi,%rdx,8), %xmm1 + psllq %xmm4, %xmm0 + psrlq %xmm5, %xmm1 + por %xmm1, %xmm0 + movq %xmm0, -8(%rdi,%rdx,8) + dec %rdx + +Lrp_aligned: + lea 1(%rdx), %r8d + + and $6, %r8d + jz Lba0 + cmp $4, %r8d + jz Lba4 + jc Lba2 +Lba6: add $-4, %rdx + jmp Li56 +Lba0: add $-6, %rdx + jmp Li70 +Lba4: add $-2, %rdx + jmp Li34 +Lba2: add $-8, %rdx + jle Lend + + .align 4, 0x90 +Ltop: movdqu 40(%rsi,%rdx,8), %xmm1 + movdqu 48(%rsi,%rdx,8), %xmm0 + psllq %xmm4, %xmm0 + psrlq %xmm5, %xmm1 + por %xmm1, %xmm0 + movdqa %xmm0, 48(%rdi,%rdx,8) +Li70: + movdqu 24(%rsi,%rdx,8), %xmm1 + movdqu 32(%rsi,%rdx,8), %xmm0 + psllq %xmm4, %xmm0 + psrlq %xmm5, %xmm1 + por %xmm1, %xmm0 + movdqa %xmm0, 32(%rdi,%rdx,8) +Li56: + movdqu 8(%rsi,%rdx,8), %xmm1 + movdqu 16(%rsi,%rdx,8), %xmm0 + psllq %xmm4, %xmm0 + psrlq %xmm5, %xmm1 + por %xmm1, %xmm0 + movdqa %xmm0, 16(%rdi,%rdx,8) +Li34: + movdqu -8(%rsi,%rdx,8), %xmm1 + movdqu (%rsi,%rdx,8), %xmm0 + psllq %xmm4, %xmm0 + psrlq %xmm5, %xmm1 + por %xmm1, %xmm0 + movdqa %xmm0, (%rdi,%rdx,8) + sub $8, %rdx + jg Ltop + +Lend: test $1, %dl + jnz Lend8 + + movdqu (%rsi), %xmm1 + pxor %xmm0, %xmm0 + punpcklqdq %xmm1, %xmm0 + psllq %xmm4, %xmm1 + psrlq %xmm5, %xmm0 + por %xmm1, %xmm0 + movdqa %xmm0, (%rdi) + + ret + + + .align 4, 0x90 +Lbc: dec %edx + jz Lend8 + + movq (%rsi,%rdx,8), %xmm1 + movq -8(%rsi,%rdx,8), %xmm0 + psllq %xmm4, %xmm1 + psrlq %xmm5, %xmm0 + por %xmm1, %xmm0 + movq %xmm0, (%rdi,%rdx,8) + sub $2, %edx + jl Lend8 + movq 8(%rsi), %xmm1 + movq (%rsi), %xmm0 + psllq %xmm4, %xmm1 + psrlq %xmm5, %xmm0 + por %xmm1, %xmm0 + movq %xmm0, 8(%rdi) + +Lend8:movq (%rsi), %xmm0 + psllq %xmm4, %xmm0 + movq %xmm0, (%rdi) + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/lshiftc.s b/vere/ext/gmp/gen/x86_64-macos/mpn/lshiftc.s new file mode 100644 index 0000000..ffd7e35 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/lshiftc.s @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 6, 0x90 + .globl ___gmpn_lshiftc + + +___gmpn_lshiftc: + + + movd %ecx, %xmm4 + mov $64, %eax + sub %ecx, %eax + movd %eax, %xmm5 + + neg %ecx + mov -8(%rsi,%rdx,8), %rax + shr %cl, %rax + + pcmpeqb %xmm3, %xmm3 + + cmp $3, %rdx + jle Lbc + + lea (%rdi,%rdx,8), %ecx + test $8, %cl + jz Lrp_aligned + + + movq -8(%rsi,%rdx,8), %xmm0 + movq -16(%rsi,%rdx,8), %xmm1 + psllq %xmm4, %xmm0 + psrlq %xmm5, %xmm1 + por %xmm1, %xmm0 + pxor %xmm3, %xmm0 + movq %xmm0, -8(%rdi,%rdx,8) + dec %rdx + +Lrp_aligned: + lea 1(%rdx), %r8d + + and $6, %r8d + jz Lba0 + cmp $4, %r8d + jz Lba4 + jc Lba2 +Lba6: add $-4, %rdx + jmp Li56 +Lba0: add $-6, %rdx + jmp Li70 +Lba4: add $-2, %rdx + jmp Li34 +Lba2: add $-8, %rdx + jle Lend + + .align 4, 0x90 +Ltop: movdqu 40(%rsi,%rdx,8), %xmm1 + movdqu 48(%rsi,%rdx,8), %xmm0 + psllq %xmm4, %xmm0 + psrlq %xmm5, %xmm1 + por %xmm1, %xmm0 + pxor %xmm3, %xmm0 + movdqa %xmm0, 48(%rdi,%rdx,8) +Li70: + movdqu 24(%rsi,%rdx,8), %xmm1 + movdqu 32(%rsi,%rdx,8), %xmm0 + psllq %xmm4, %xmm0 + psrlq %xmm5, %xmm1 + por %xmm1, %xmm0 + pxor %xmm3, %xmm0 + movdqa %xmm0, 32(%rdi,%rdx,8) +Li56: + movdqu 8(%rsi,%rdx,8), %xmm1 + movdqu 16(%rsi,%rdx,8), %xmm0 + psllq %xmm4, %xmm0 + psrlq %xmm5, %xmm1 + por %xmm1, %xmm0 + pxor %xmm3, %xmm0 + movdqa %xmm0, 16(%rdi,%rdx,8) +Li34: + movdqu -8(%rsi,%rdx,8), %xmm1 + movdqu (%rsi,%rdx,8), %xmm0 + psllq %xmm4, %xmm0 + psrlq %xmm5, %xmm1 + por %xmm1, %xmm0 + pxor %xmm3, %xmm0 + movdqa %xmm0, (%rdi,%rdx,8) + sub $8, %rdx + jg Ltop + +Lend: test $1, %dl + jnz Lend8 + + movdqu (%rsi), %xmm1 + pxor %xmm0, %xmm0 + punpcklqdq %xmm1, %xmm0 + psllq %xmm4, %xmm1 + psrlq %xmm5, %xmm0 + por %xmm1, %xmm0 + pxor %xmm3, %xmm0 + movdqa %xmm0, (%rdi) + + ret + + + .align 4, 0x90 +Lbc: dec %edx + jz Lend8 + + movq (%rsi,%rdx,8), %xmm1 + movq -8(%rsi,%rdx,8), %xmm0 + psllq %xmm4, %xmm1 + psrlq %xmm5, %xmm0 + por %xmm1, %xmm0 + pxor %xmm3, %xmm0 + movq %xmm0, (%rdi,%rdx,8) + sub $2, %edx + jl Lend8 + movq 8(%rsi), %xmm1 + movq (%rsi), %xmm0 + psllq %xmm4, %xmm1 + psrlq %xmm5, %xmm0 + por %xmm1, %xmm0 + pxor %xmm3, %xmm0 + movq %xmm0, 8(%rdi) + +Lend8:movq (%rsi), %xmm0 + psllq %xmm4, %xmm0 + pxor %xmm3, %xmm0 + movq %xmm0, (%rdi) + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_1.s new file mode 100644 index 0000000..a9b4801 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_1.s @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_mod_1_1p + + +___gmpn_mod_1_1p: + + + push %rbp + push %rbx + mov %rdx, %rbx + mov %rcx, %r8 + + mov -8(%rdi, %rsi, 8), %rax + cmp $3, %rsi + jnc Lfirst + mov -16(%rdi, %rsi, 8), %rbp + jmp Lreduce_two + +Lfirst: + + mov 24(%r8), %r11 + mul %r11 + mov -24(%rdi, %rsi, 8), %rbp + add %rax, %rbp + mov -16(%rdi, %rsi, 8), %rax + adc %rdx, %rax + sbb %rcx, %rcx + sub $4, %rsi + jc Lreduce_three + + mov %r11, %r10 + sub %rbx, %r10 + + .align 4, 0x90 +Ltop: and %r11, %rcx + lea (%r10, %rbp), %r9 + mul %r11 + add %rbp, %rcx + mov (%rdi, %rsi, 8), %rbp + cmovc %r9, %rcx + add %rax, %rbp + mov %rcx, %rax + adc %rdx, %rax + sbb %rcx, %rcx + sub $1, %rsi + jnc Ltop + +Lreduce_three: + + and %rbx, %rcx + sub %rcx, %rax + +Lreduce_two: + mov 8(%r8), %ecx + test %ecx, %ecx + jz Lnormalized + + + mulq 16(%r8) + xor %r9, %r9 + add %rax, %rbp + adc %rdx, %r9 + mov %r9, %rax + + + + shld %cl, %rbp, %rax + + shl %cl, %rbp + jmp Ludiv + +Lnormalized: + mov %rax, %r9 + sub %rbx, %r9 + cmovnc %r9, %rax + +Ludiv: + lea 1(%rax), %r9 + mulq (%r8) + add %rbp, %rax + adc %r9, %rdx + imul %rbx, %rdx + sub %rdx, %rbp + cmp %rbp, %rax + lea (%rbx, %rbp), %rax + cmovnc %rbp, %rax + cmp %rbx, %rax + jnc Lfix +Lok: shr %cl, %rax + + pop %rbx + pop %rbp + + ret +Lfix: sub %rbx, %rax + jmp Lok + + + .align 4, 0x90 + .globl ___gmpn_mod_1_1p_cps + + +___gmpn_mod_1_1p_cps: + + + push %rbp + bsr %rsi, %rcx + push %rbx + mov %rdi, %rbx + push %r12 + xor $63, %ecx + mov %rsi, %r12 + mov %ecx, %ebp + sal %cl, %r12 + mov %r12, %rdi + + + + call ___gmpn_invert_limb + + neg %r12 + mov %r12, %r8 + mov %rax, (%rbx) + mov %rbp, 8(%rbx) + imul %rax, %r12 + mov %r12, 24(%rbx) + mov %ebp, %ecx + test %ecx, %ecx + jz Lz + + mov $1, %edx + + shld %cl, %rax, %rdx + + imul %rdx, %r8 + shr %cl, %r8 + mov %r8, 16(%rbx) +Lz: + pop %r12 + pop %rbx + pop %rbp + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_2.s b/vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_2.s new file mode 100644 index 0000000..9feb233 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_2.s @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_mod_1s_2p + + +___gmpn_mod_1s_2p: + + + push %r14 + test $1, %sil + mov %rdx, %r14 + push %r13 + mov %rcx, %r13 + push %r12 + push %rbp + push %rbx + mov 16(%rcx), %r10 + mov 24(%rcx), %rbx + mov 32(%rcx), %rbp + je Lb0 + dec %rsi + je Lone + mov -8(%rdi,%rsi,8), %rax + mul %r10 + mov %rax, %r9 + mov %rdx, %r8 + mov (%rdi,%rsi,8), %rax + add -16(%rdi,%rsi,8), %r9 + adc $0, %r8 + mul %rbx + add %rax, %r9 + adc %rdx, %r8 + jmp L11 + +Lb0: mov -8(%rdi,%rsi,8), %r8 + mov -16(%rdi,%rsi,8), %r9 + +L11: sub $4, %rsi + jb Led2 + lea 40(%rdi,%rsi,8), %rdi + mov -40(%rdi), %r11 + mov -32(%rdi), %rax + jmp Lm0 + + .align 4, 0x90 +Ltop: mov -24(%rdi), %r9 + add %rax, %r11 + mov -16(%rdi), %rax + adc %rdx, %r12 + mul %r10 + add %rax, %r9 + mov %r11, %rax + mov %rdx, %r8 + adc $0, %r8 + mul %rbx + add %rax, %r9 + mov %r12, %rax + adc %rdx, %r8 + mul %rbp + sub $2, %rsi + jb Led1 + mov -40(%rdi), %r11 + add %rax, %r9 + mov -32(%rdi), %rax + adc %rdx, %r8 +Lm0: mul %r10 + add %rax, %r11 + mov %r9, %rax + mov %rdx, %r12 + adc $0, %r12 + mul %rbx + add %rax, %r11 + lea -32(%rdi), %rdi + mov %r8, %rax + adc %rdx, %r12 + mul %rbp + sub $2, %rsi + jae Ltop + +Led0: mov %r11, %r9 + mov %r12, %r8 +Led1: add %rax, %r9 + adc %rdx, %r8 +Led2: mov 8(%r13), %edi + mov %r8, %rax + mov %r9, %r8 + mul %r10 + add %rax, %r8 + adc $0, %rdx +L1: xor %ecx, %ecx + mov %r8, %r9 + sub %edi, %ecx + shr %cl, %r9 + mov %edi, %ecx + sal %cl, %rdx + or %rdx, %r9 + sal %cl, %r8 + mov %r9, %rax + mulq (%r13) + mov %rax, %rsi + inc %r9 + add %r8, %rsi + adc %r9, %rdx + imul %r14, %rdx + sub %rdx, %r8 + lea (%r8,%r14), %rax + cmp %r8, %rsi + cmovc %rax, %r8 + mov %r8, %rax + sub %r14, %rax + cmovc %r8, %rax + mov %edi, %ecx + shr %cl, %rax + pop %rbx + pop %rbp + pop %r12 + pop %r13 + pop %r14 + + ret +Lone: + mov (%rdi), %r8 + mov 8(%rcx), %edi + xor %rdx, %rdx + jmp L1 + + + .align 4, 0x90 + .globl ___gmpn_mod_1s_2p_cps + + +___gmpn_mod_1s_2p_cps: + + + push %rbp + bsr %rsi, %rcx + push %rbx + mov %rdi, %rbx + push %r12 + xor $63, %ecx + mov %rsi, %r12 + mov %ecx, %ebp + sal %cl, %r12 + mov %r12, %rdi + + + + call ___gmpn_invert_limb + + mov %r12, %r8 + mov %rax, %r11 + mov %rax, (%rbx) + mov %rbp, 8(%rbx) + neg %r8 + mov %ebp, %ecx + mov $1, %esi + + shld %cl, %rax, %rsi + + imul %r8, %rsi + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 16(%rbx) + + not %rdx + imul %r12, %rdx + lea (%rdx,%r12), %rsi + cmp %rdx, %rax + cmovnc %rdx, %rsi + mov %r11, %rax + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 24(%rbx) + + not %rdx + imul %r12, %rdx + add %rdx, %r12 + cmp %rdx, %rax + cmovnc %rdx, %r12 + + shr %cl, %r12 + mov %r12, 32(%rbx) + + pop %r12 + pop %rbx + pop %rbp + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_4.s b/vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_4.s new file mode 100644 index 0000000..675a4eb --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/mod_1_4.s @@ -0,0 +1,282 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_mod_1s_4p + + +___gmpn_mod_1s_4p: + + + push %r15 + push %r14 + push %r13 + push %r12 + push %rbp + push %rbx + + mov %rdx, %r15 + mov %rcx, %r14 + mov 16(%rcx), %r11 + mov 24(%rcx), %rbx + mov 32(%rcx), %rbp + mov 40(%rcx), %r13 + mov 48(%rcx), %r12 + xor %r8d, %r8d + mov %esi, %edx + and $3, %edx + je Lb0 + cmp $2, %edx + jc Lb1 + je Lb2 + +Lb3: lea -24(%rdi,%rsi,8), %rdi + mov 8(%rdi), %rax + mul %r11 + mov (%rdi), %r9 + add %rax, %r9 + adc %rdx, %r8 + mov 16(%rdi), %rax + mul %rbx + jmp Lm0 + + .align 3, 0x90 +Lb0: lea -32(%rdi,%rsi,8), %rdi + mov 8(%rdi), %rax + mul %r11 + mov (%rdi), %r9 + add %rax, %r9 + adc %rdx, %r8 + mov 16(%rdi), %rax + mul %rbx + add %rax, %r9 + adc %rdx, %r8 + mov 24(%rdi), %rax + mul %rbp + jmp Lm0 + + .align 3, 0x90 +Lb1: lea -8(%rdi,%rsi,8), %rdi + mov (%rdi), %r9 + jmp Lm1 + + .align 3, 0x90 +Lb2: lea -16(%rdi,%rsi,8), %rdi + mov 8(%rdi), %r8 + mov (%rdi), %r9 + jmp Lm1 + + .align 4, 0x90 +Ltop: mov -24(%rdi), %rax + mov -32(%rdi), %r10 + mul %r11 + add %rax, %r10 + mov -16(%rdi), %rax + mov $0, %ecx + adc %rdx, %rcx + mul %rbx + add %rax, %r10 + mov -8(%rdi), %rax + adc %rdx, %rcx + sub $32, %rdi + mul %rbp + add %rax, %r10 + mov %r13, %rax + adc %rdx, %rcx + mul %r9 + add %rax, %r10 + mov %r12, %rax + adc %rdx, %rcx + mul %r8 + mov %r10, %r9 + mov %rcx, %r8 +Lm0: add %rax, %r9 + adc %rdx, %r8 +Lm1: sub $4, %rsi + ja Ltop + +Lend: mov 8(%r14), %esi + mov %r8, %rax + mul %r11 + mov %rax, %r8 + add %r9, %r8 + adc $0, %rdx + xor %ecx, %ecx + sub %esi, %ecx + mov %r8, %rdi + shr %cl, %rdi + mov %esi, %ecx + sal %cl, %rdx + or %rdx, %rdi + mov %rdi, %rax + mulq (%r14) + mov %r15, %rbx + mov %rax, %r9 + sal %cl, %r8 + inc %rdi + add %r8, %r9 + adc %rdi, %rdx + imul %rbx, %rdx + sub %rdx, %r8 + lea (%r8,%rbx), %rax + cmp %r8, %r9 + cmovc %rax, %r8 + mov %r8, %rax + sub %rbx, %rax + cmovc %r8, %rax + shr %cl, %rax + pop %rbx + pop %rbp + pop %r12 + pop %r13 + pop %r14 + pop %r15 + + ret + + + .align 4, 0x90 + .globl ___gmpn_mod_1s_4p_cps + + +___gmpn_mod_1s_4p_cps: + + + push %rbp + bsr %rsi, %rcx + push %rbx + mov %rdi, %rbx + push %r12 + xor $63, %ecx + mov %rsi, %r12 + mov %ecx, %ebp + sal %cl, %r12 + mov %r12, %rdi + + + + call ___gmpn_invert_limb + + mov %r12, %r8 + mov %rax, %r11 + mov %rax, (%rbx) + mov %rbp, 8(%rbx) + neg %r8 + mov %ebp, %ecx + mov $1, %esi + + shld %cl, %rax, %rsi + + imul %r8, %rsi + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 16(%rbx) + + not %rdx + imul %r12, %rdx + lea (%rdx,%r12), %rsi + cmp %rdx, %rax + cmovnc %rdx, %rsi + mov %r11, %rax + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 24(%rbx) + + not %rdx + imul %r12, %rdx + lea (%rdx,%r12), %rsi + cmp %rdx, %rax + cmovnc %rdx, %rsi + mov %r11, %rax + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 32(%rbx) + + not %rdx + imul %r12, %rdx + lea (%rdx,%r12), %rsi + cmp %rdx, %rax + cmovnc %rdx, %rsi + mov %r11, %rax + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 40(%rbx) + + not %rdx + imul %r12, %rdx + add %rdx, %r12 + cmp %rdx, %rax + cmovnc %rdx, %r12 + + shr %cl, %r12 + mov %r12, 48(%rbx) + + pop %r12 + pop %rbx + pop %rbp + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/mod_34lsub1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/mod_34lsub1.s new file mode 100644 index 0000000..141c810 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/mod_34lsub1.s @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_mod_34lsub1 + + +___gmpn_mod_34lsub1: + + + + mov $0x0000FFFFFFFFFFFF, %r11 + + mov (%rdi), %rax + + cmp $2, %rsi + ja Lgt2 + + jb Lone + + mov 8(%rdi), %rsi + mov %rax, %rdx + shr $48, %rax + + and %r11, %rdx + add %rdx, %rax + mov %esi, %edx + + shr $32, %rsi + add %rsi, %rax + + shl $16, %rdx + add %rdx, %rax +Lone: + ret + + + + + +Lgt2: mov 8(%rdi), %rcx + mov 16(%rdi), %rdx + xor %r9, %r9 + add $24, %rdi + sub $12, %rsi + jc Lend + .align 4, 0x90 +Ltop: + add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add 24(%rdi), %rax + adc 32(%rdi), %rcx + adc 40(%rdi), %rdx + adc $0, %r9 + add 48(%rdi), %rax + adc 56(%rdi), %rcx + adc 64(%rdi), %rdx + adc $0, %r9 + add $72, %rdi + sub $9, %rsi + jnc Ltop + +Lend: + lea Ltab(%rip), %r8 + movslq 36(%r8,%rsi,4), %r10 + add %r10, %r8 + jmp *%r8 + + .text + .align 3, 0x90 +Ltab: .set L0_tmp, L0-Ltab + .long L0_tmp + + .set L1_tmp, L1-Ltab + .long L1_tmp + + .set L2_tmp, L2-Ltab + .long L2_tmp + + .set L3_tmp, L3-Ltab + .long L3_tmp + + .set L4_tmp, L4-Ltab + .long L4_tmp + + .set L5_tmp, L5-Ltab + .long L5_tmp + + .set L6_tmp, L6-Ltab + .long L6_tmp + + .set L7_tmp, L7-Ltab + .long L7_tmp + + .set L8_tmp, L8-Ltab + .long L8_tmp + + .text + +L6: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +L3: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + jmp Lcj1 + +L7: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +L4: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +L1: add (%rdi), %rax + adc $0, %rcx + jmp Lcj2 + +L8: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +L5: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +L2: add (%rdi), %rax + adc 8(%rdi), %rcx + +Lcj2: adc $0, %rdx +Lcj1: adc $0, %r9 +L0: add %r9, %rax + adc $0, %rcx + adc $0, %rdx + adc $0, %rax + + mov %rax, %rdi + shr $48, %rax + + and %r11, %rdi + mov %ecx, %r10d + + shr $32, %rcx + + add %rdi, %rax + movzwl %dx, %edi + shl $16, %r10 + + add %rcx, %rax + shr $16, %rdx + + add %r10, %rax + shl $32, %rdi + + add %rdx, %rax + add %rdi, %rax + + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/mode1o.s b/vere/ext/gmp/gen/x86_64-macos/mpn/mode1o.s new file mode 100644 index 0000000..c715f7c --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/mode1o.s @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_modexact_1_odd + + +___gmpn_modexact_1_odd: + + + mov $0, %ecx + + + .globl ___gmpn_modexact_1c_odd + + +___gmpn_modexact_1c_odd: + + +Lent: + + + + + + mov %rdx, %r8 + shr %edx + + lea ___gmp_binvert_limb_table(%rip), %r9 + + + + and $127, %edx + mov %rcx, %r10 + + movzbl (%r9,%rdx), %edx + + mov (%rdi), %rax + lea (%rdi,%rsi,8), %r11 + mov %r8, %rdi + + lea (%rdx,%rdx), %ecx + imul %edx, %edx + + neg %rsi + + imul %edi, %edx + + sub %edx, %ecx + + lea (%rcx,%rcx), %edx + imul %ecx, %ecx + + imul %edi, %ecx + + sub %ecx, %edx + xor %ecx, %ecx + + lea (%rdx,%rdx), %r9 + imul %rdx, %rdx + + imul %r8, %rdx + + sub %rdx, %r9 + mov %r10, %rdx + + + + inc %rsi + jz Lone + + + .align 4, 0x90 +Ltop: + + + + + + + + + + sub %rdx, %rax + + adc $0, %rcx + imul %r9, %rax + + mul %r8 + + mov (%r11,%rsi,8), %rax + sub %rcx, %rax + setc %cl + + inc %rsi + jnz Ltop + + +Lone: + sub %rdx, %rax + + adc $0, %rcx + imul %r9, %rax + + mul %r8 + + lea (%rcx,%rdx), %rax + + ret + + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/mp_bases.c b/vere/ext/gmp/gen/x86_64-macos/mpn/mp_bases.c new file mode 100644 index 0000000..c72c531 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/mp_bases.c @@ -0,0 +1,268 @@ +/* This file generated by gen-bases.c - DO NOT EDIT. */ + +#include "gmp-impl.h" + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +const struct bases mp_bases[257] = +{ + /* 0 */ { 0, 0, 0, 0, 0 }, + /* 1 */ { 0, 0, 0, 0, 0 }, + /* 2 */ { 64, CNST_LIMB(0xffffffffffffffff), CNST_LIMB(0x1fffffffffffffff), CNST_LIMB(0x1), CNST_LIMB(0x0) }, + /* 3 */ { 40, CNST_LIMB(0xa1849cc1a9a9e94e), CNST_LIMB(0x32b803473f7ad0f3), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 4 */ { 32, CNST_LIMB(0x7fffffffffffffff), CNST_LIMB(0x3fffffffffffffff), CNST_LIMB(0x2), CNST_LIMB(0x0) }, + /* 5 */ { 27, CNST_LIMB(0x6e40d1a4143dcb94), CNST_LIMB(0x4a4d3c25e68dc57f), CNST_LIMB(0x6765c793fa10079d), CNST_LIMB(0x3ce9a36f23c0fc90) }, + /* 6 */ { 24, CNST_LIMB(0x6308c91b702a7cf4), CNST_LIMB(0x52b803473f7ad0f3), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 7 */ { 22, CNST_LIMB(0x5b3064eb3aa6d388), CNST_LIMB(0x59d5d9fd5010b366), CNST_LIMB(0x3642798750226111), CNST_LIMB(0x2df495ccaa57147b) }, + /* 8 */ { 21, CNST_LIMB(0x5555555555555555), CNST_LIMB(0x5fffffffffffffff), CNST_LIMB(0x3), CNST_LIMB(0x0) }, + /* 9 */ { 20, CNST_LIMB(0x50c24e60d4d4f4a7), CNST_LIMB(0x6570068e7ef5a1e7), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 10 */ { 19, CNST_LIMB(0x4d104d427de7fbcc), CNST_LIMB(0x6a4d3c25e68dc57f), CNST_LIMB(0x8ac7230489e80000), CNST_LIMB(0xd83c94fb6d2ac34a) }, + /* 11 */ { 18, CNST_LIMB(0x4a00270775914e88), CNST_LIMB(0x6eb3a9f01975077f), CNST_LIMB(0x4d28cb56c33fa539), CNST_LIMB(0xa8adf7ae45e7577b) }, + /* 12 */ { 17, CNST_LIMB(0x4768ce0d05818e12), CNST_LIMB(0x72b803473f7ad0f3), CNST_LIMB(0x1eca170c00000000), CNST_LIMB(0xa10c2bec5da8f8f) }, + /* 13 */ { 17, CNST_LIMB(0x452e53e365907bda), CNST_LIMB(0x766a008e4788cbcd), CNST_LIMB(0x780c7372621bd74d), CNST_LIMB(0x10f4becafe412ec3) }, + /* 14 */ { 16, CNST_LIMB(0x433cfffb4b5aae55), CNST_LIMB(0x79d5d9fd5010b366), CNST_LIMB(0x1e39a5057d810000), CNST_LIMB(0xf08480f672b4e86) }, + /* 15 */ { 16, CNST_LIMB(0x41867711b4f85355), CNST_LIMB(0x7d053f6d26089673), CNST_LIMB(0x5b27ac993df97701), CNST_LIMB(0x6779c7f90dc42f48) }, + /* 16 */ { 16, CNST_LIMB(0x3fffffffffffffff), CNST_LIMB(0x7fffffffffffffff), CNST_LIMB(0x4), CNST_LIMB(0x0) }, + /* 17 */ { 15, CNST_LIMB(0x3ea16afd58b10966), CNST_LIMB(0x82cc7edf592262cf), CNST_LIMB(0x27b95e997e21d9f1), CNST_LIMB(0x9c71e11bab279323) }, + /* 18 */ { 15, CNST_LIMB(0x3d64598d154dc4de), CNST_LIMB(0x8570068e7ef5a1e7), CNST_LIMB(0x5da0e1e53c5c8000), CNST_LIMB(0x5dfaa697ec6f6a1c) }, + /* 19 */ { 15, CNST_LIMB(0x3c43c23018bb5563), CNST_LIMB(0x87ef05ae409a0288), CNST_LIMB(0xd2ae3299c1c4aedb), CNST_LIMB(0x3711783f6be7e9ec) }, + /* 20 */ { 14, CNST_LIMB(0x3b3b9a42873069c7), CNST_LIMB(0x8a4d3c25e68dc57f), CNST_LIMB(0x16bcc41e90000000), CNST_LIMB(0x6849b86a12b9b01e) }, + /* 21 */ { 14, CNST_LIMB(0x3a4898f06cf41ac9), CNST_LIMB(0x8c8ddd448f8b845a), CNST_LIMB(0x2d04b7fdd9c0ef49), CNST_LIMB(0x6bf097ba5ca5e239) }, + /* 22 */ { 14, CNST_LIMB(0x39680b13582e7c18), CNST_LIMB(0x8eb3a9f01975077f), CNST_LIMB(0x5658597bcaa24000), CNST_LIMB(0x7b8015c8d7af8f08) }, + /* 23 */ { 14, CNST_LIMB(0x3897b2b751ae561a), CNST_LIMB(0x90c10500d63aa658), CNST_LIMB(0xa0e2073737609371), CNST_LIMB(0x975a24b3a3151b38) }, + /* 24 */ { 13, CNST_LIMB(0x37d5aed131f19c98), CNST_LIMB(0x92b803473f7ad0f3), CNST_LIMB(0xc29e98000000000), CNST_LIMB(0x50bd367972689db1) }, + /* 25 */ { 13, CNST_LIMB(0x372068d20a1ee5ca), CNST_LIMB(0x949a784bcd1b8afe), CNST_LIMB(0x14adf4b7320334b9), CNST_LIMB(0x8c240c4aecb13bb5) }, + /* 26 */ { 13, CNST_LIMB(0x3676867e5d60de29), CNST_LIMB(0x966a008e4788cbcd), CNST_LIMB(0x226ed36478bfa000), CNST_LIMB(0xdbd2e56854e118c9) }, + /* 27 */ { 13, CNST_LIMB(0x35d6deeb388df86f), CNST_LIMB(0x982809d5be7072db), CNST_LIMB(0x383d9170b85ff80b), CNST_LIMB(0x2351ffcaa9c7c4ae) }, + /* 28 */ { 13, CNST_LIMB(0x354071d61c77fa2e), CNST_LIMB(0x99d5d9fd5010b366), CNST_LIMB(0x5a3c23e39c000000), CNST_LIMB(0x6b24188ca33b0636) }, + /* 29 */ { 13, CNST_LIMB(0x34b260c5671b18ac), CNST_LIMB(0x9b74948f5532da4b), CNST_LIMB(0x8e65137388122bcd), CNST_LIMB(0xcc3dceaf2b8ba99d) }, + /* 30 */ { 13, CNST_LIMB(0x342be986572b45cc), CNST_LIMB(0x9d053f6d26089673), CNST_LIMB(0xdd41bb36d259e000), CNST_LIMB(0x2832e835c6c7d6b6) }, + /* 31 */ { 12, CNST_LIMB(0x33ac61b998fbbdf2), CNST_LIMB(0x9e88c6b3626a72aa), CNST_LIMB(0xaee5720ee830681), CNST_LIMB(0x76b6aa272e1873c5) }, + /* 32 */ { 12, CNST_LIMB(0x3333333333333333), CNST_LIMB(0x9fffffffffffffff), CNST_LIMB(0x5), CNST_LIMB(0x0) }, + /* 33 */ { 12, CNST_LIMB(0x32bfd90114c12861), CNST_LIMB(0xa16bad3758efd873), CNST_LIMB(0x172588ad4f5f0981), CNST_LIMB(0x61eaf5d402c7bf4f) }, + /* 34 */ { 12, CNST_LIMB(0x3251dcf6169e45f2), CNST_LIMB(0xa2cc7edf592262cf), CNST_LIMB(0x211e44f7d02c1000), CNST_LIMB(0xeeb658123ffb27ec) }, + /* 35 */ { 12, CNST_LIMB(0x31e8d59f180dc630), CNST_LIMB(0xa4231623369e78e5), CNST_LIMB(0x2ee56725f06e5c71), CNST_LIMB(0x5d5e3762e6fdf509) }, + /* 36 */ { 12, CNST_LIMB(0x3184648db8153e7a), CNST_LIMB(0xa570068e7ef5a1e7), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 37 */ { 12, CNST_LIMB(0x312434e89c35dacd), CNST_LIMB(0xa6b3d78b6d3b24fb), CNST_LIMB(0x5b5b57f8a98a5dd1), CNST_LIMB(0x66ae7831762efb6f) }, + /* 38 */ { 12, CNST_LIMB(0x30c7fa349460a541), CNST_LIMB(0xa7ef05ae409a0288), CNST_LIMB(0x7dcff8986ea31000), CNST_LIMB(0x47388865a00f544) }, + /* 39 */ { 12, CNST_LIMB(0x306f6f4c8432bc6d), CNST_LIMB(0xa92203d587039cc1), CNST_LIMB(0xabd4211662a6b2a1), CNST_LIMB(0x7d673c33a123b54c) }, + /* 40 */ { 12, CNST_LIMB(0x301a557ffbfdd252), CNST_LIMB(0xaa4d3c25e68dc57f), CNST_LIMB(0xe8d4a51000000000), CNST_LIMB(0x19799812dea11197) }, + /* 41 */ { 11, CNST_LIMB(0x2fc873d1fda55f3b), CNST_LIMB(0xab7110e6ce866f2b), CNST_LIMB(0x7a32956ad081b79), CNST_LIMB(0xc27e62e0686feae) }, + /* 42 */ { 11, CNST_LIMB(0x2f799652a4e6dc49), CNST_LIMB(0xac8ddd448f8b845a), CNST_LIMB(0x9f49aaff0e86800), CNST_LIMB(0x9b6e7507064ce7c7) }, + /* 43 */ { 11, CNST_LIMB(0x2f2d8d8f64460aad), CNST_LIMB(0xada3f5fb9c415052), CNST_LIMB(0xce583bb812d37b3), CNST_LIMB(0x3d9ac2bf66cfed94) }, + /* 44 */ { 11, CNST_LIMB(0x2ee42e164e8f53a4), CNST_LIMB(0xaeb3a9f01975077f), CNST_LIMB(0x109b79a654c00000), CNST_LIMB(0xed46bc50ce59712a) }, + /* 45 */ { 11, CNST_LIMB(0x2e9d500984041dbd), CNST_LIMB(0xafbd42b465836767), CNST_LIMB(0x1543beff214c8b95), CNST_LIMB(0x813d97e2c89b8d46) }, + /* 46 */ { 11, CNST_LIMB(0x2e58cec05a6a8144), CNST_LIMB(0xb0c10500d63aa658), CNST_LIMB(0x1b149a79459a3800), CNST_LIMB(0x2e81751956af8083) }, + /* 47 */ { 11, CNST_LIMB(0x2e1688743ef9104c), CNST_LIMB(0xb1bf311e95d00de3), CNST_LIMB(0x224edfb5434a830f), CNST_LIMB(0xdd8e0a95e30c0988) }, + /* 48 */ { 11, CNST_LIMB(0x2dd65df7a583598f), CNST_LIMB(0xb2b803473f7ad0f3), CNST_LIMB(0x2b3fb00000000000), CNST_LIMB(0x7ad4dd48a0b5b167) }, + /* 49 */ { 11, CNST_LIMB(0x2d9832759d5369c4), CNST_LIMB(0xb3abb3faa02166cc), CNST_LIMB(0x3642798750226111), CNST_LIMB(0x2df495ccaa57147b) }, + /* 50 */ { 11, CNST_LIMB(0x2d5beb38dcd1394c), CNST_LIMB(0xb49a784bcd1b8afe), CNST_LIMB(0x43c33c1937564800), CNST_LIMB(0xe392010175ee5962) }, + /* 51 */ { 11, CNST_LIMB(0x2d216f7943e2ba6a), CNST_LIMB(0xb5848226989d33c3), CNST_LIMB(0x54411b2441c3cd8b), CNST_LIMB(0x84eaf11b2fe7738e) }, + /* 52 */ { 11, CNST_LIMB(0x2ce8a82efbb3ff2c), CNST_LIMB(0xb66a008e4788cbcd), CNST_LIMB(0x6851455acd400000), CNST_LIMB(0x3a1e3971e008995d) }, + /* 53 */ { 11, CNST_LIMB(0x2cb17fea7ad7e332), CNST_LIMB(0xb74b1fd64e0753c6), CNST_LIMB(0x80a23b117c8feb6d), CNST_LIMB(0xfd7a462344ffce25) }, + /* 54 */ { 11, CNST_LIMB(0x2c7be2b0cfa1ba50), CNST_LIMB(0xb82809d5be7072db), CNST_LIMB(0x9dff7d32d5dc1800), CNST_LIMB(0x9eca40b40ebcef8a) }, + /* 55 */ { 11, CNST_LIMB(0x2c47bddba92d7463), CNST_LIMB(0xb900e6160002ccfe), CNST_LIMB(0xc155af6faeffe6a7), CNST_LIMB(0x52fa161a4a48e43d) }, + /* 56 */ { 11, CNST_LIMB(0x2c14fffcaa8b131e), CNST_LIMB(0xb9d5d9fd5010b366), CNST_LIMB(0xebb7392e00000000), CNST_LIMB(0x1607a2cbacf930c1) }, + /* 57 */ { 10, CNST_LIMB(0x2be398c3a38be053), CNST_LIMB(0xbaa708f58014d37c), CNST_LIMB(0x50633659656d971), CNST_LIMB(0x97a014f8e3be55f1) }, + /* 58 */ { 10, CNST_LIMB(0x2bb378e758451068), CNST_LIMB(0xbb74948f5532da4b), CNST_LIMB(0x5fa8624c7fba400), CNST_LIMB(0x568df8b76cbf212c) }, + /* 59 */ { 10, CNST_LIMB(0x2b8492108be5e5f7), CNST_LIMB(0xbc3e9ca2e1a05533), CNST_LIMB(0x717d9faa73c5679), CNST_LIMB(0x20ba7c4b4e6ef492) }, + /* 60 */ { 10, CNST_LIMB(0x2b56d6c70d55481b), CNST_LIMB(0xbd053f6d26089673), CNST_LIMB(0x86430aac6100000), CNST_LIMB(0xe81ee46b9ef492f5) }, + /* 61 */ { 10, CNST_LIMB(0x2b2a3a608c72ddd5), CNST_LIMB(0xbdc899ab3ff56c5e), CNST_LIMB(0x9e64d9944b57f29), CNST_LIMB(0x9dc0d10d51940416) }, + /* 62 */ { 10, CNST_LIMB(0x2afeb0f1060c7e41), CNST_LIMB(0xbe88c6b3626a72aa), CNST_LIMB(0xba5ca5392cb0400), CNST_LIMB(0x5fa8ed2f450272a5) }, + /* 63 */ { 10, CNST_LIMB(0x2ad42f3c9aca595c), CNST_LIMB(0xbf45e08bcf06554e), CNST_LIMB(0xdab2ce1d022cd81), CNST_LIMB(0x2ba9eb8c5e04e641) }, + /* 64 */ { 10, CNST_LIMB(0x2aaaaaaaaaaaaaaa), CNST_LIMB(0xbfffffffffffffff), CNST_LIMB(0x6), CNST_LIMB(0x0) }, + /* 65 */ { 10, CNST_LIMB(0x2a82193a13425883), CNST_LIMB(0xc0b73cb42e16914c), CNST_LIMB(0x12aeed5fd3e2d281), CNST_LIMB(0xb67759cc00287bf1) }, + /* 66 */ { 10, CNST_LIMB(0x2a5a717672f66450), CNST_LIMB(0xc16bad3758efd873), CNST_LIMB(0x15c3da1572d50400), CNST_LIMB(0x78621feeb7f4ed33) }, + /* 67 */ { 10, CNST_LIMB(0x2a33aa6e56d9c71c), CNST_LIMB(0xc21d6713f453f356), CNST_LIMB(0x194c05534f75ee29), CNST_LIMB(0x43d55b5f72943bc0) }, + /* 68 */ { 10, CNST_LIMB(0x2a0dbbaa3bdfcea4), CNST_LIMB(0xc2cc7edf592262cf), CNST_LIMB(0x1d56299ada100000), CNST_LIMB(0x173decb64d1d4409) }, + /* 69 */ { 10, CNST_LIMB(0x29e89d244eb4bfaf), CNST_LIMB(0xc379084815b5774c), CNST_LIMB(0x21f2a089a4ff4f79), CNST_LIMB(0xe29fb54fd6b6074f) }, + /* 70 */ { 10, CNST_LIMB(0x29c44740d7db51e6), CNST_LIMB(0xc4231623369e78e5), CNST_LIMB(0x2733896c68d9a400), CNST_LIMB(0xa1f1f5c210d54e62) }, + /* 71 */ { 10, CNST_LIMB(0x29a0b2c743b14d74), CNST_LIMB(0xc4caba789e2b8687), CNST_LIMB(0x2d2cf2c33b533c71), CNST_LIMB(0x6aac7f9bfafd57b2) }, + /* 72 */ { 10, CNST_LIMB(0x297dd8dbb7c22a2d), CNST_LIMB(0xc570068e7ef5a1e7), CNST_LIMB(0x33f506e440000000), CNST_LIMB(0x3b563c2478b72ee2) }, + /* 73 */ { 10, CNST_LIMB(0x295bb2f9285c8c1b), CNST_LIMB(0xc6130af40bc0ecbf), CNST_LIMB(0x3ba43bec1d062211), CNST_LIMB(0x12b536b574e92d1b) }, + /* 74 */ { 10, CNST_LIMB(0x293a3aebe2be1c92), CNST_LIMB(0xc6b3d78b6d3b24fb), CNST_LIMB(0x4455872d8fd4e400), CNST_LIMB(0xdf86c03020404fa5) }, + /* 75 */ { 10, CNST_LIMB(0x29196acc815ebd9f), CNST_LIMB(0xc7527b930c965bf2), CNST_LIMB(0x4e2694539f2f6c59), CNST_LIMB(0xa34adf02234eea8e) }, + /* 76 */ { 10, CNST_LIMB(0x28f93cfb40f5c22a), CNST_LIMB(0xc7ef05ae409a0288), CNST_LIMB(0x5938006c18900000), CNST_LIMB(0x6f46eb8574eb59dd) }, + /* 77 */ { 10, CNST_LIMB(0x28d9ac1badc64117), CNST_LIMB(0xc88983ed6985bae5), CNST_LIMB(0x65ad9912474aa649), CNST_LIMB(0x42459b481df47cec) }, + /* 78 */ { 10, CNST_LIMB(0x28bab310a196b478), CNST_LIMB(0xc92203d587039cc1), CNST_LIMB(0x73ae9ff4241ec400), CNST_LIMB(0x1b424b95d80ca505) }, + /* 79 */ { 10, CNST_LIMB(0x289c4cf88b774469), CNST_LIMB(0xc9b892675266f66c), CNST_LIMB(0x836612ee9c4ce1e1), CNST_LIMB(0xf2c1b982203a0dac) }, + /* 80 */ { 10, CNST_LIMB(0x287e7529fb244e91), CNST_LIMB(0xca4d3c25e68dc57f), CNST_LIMB(0x9502f90000000000), CNST_LIMB(0xb7cdfd9d7bdbab7d) }, + /* 81 */ { 10, CNST_LIMB(0x286127306a6a7a53), CNST_LIMB(0xcae00d1cfdeb43cf), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 82 */ { 10, CNST_LIMB(0x28445ec93f792b1e), CNST_LIMB(0xcb7110e6ce866f2b), CNST_LIMB(0xbebf59a07dab4400), CNST_LIMB(0x57931eeaf85cf64f) }, + /* 83 */ { 10, CNST_LIMB(0x282817e1038950fa), CNST_LIMB(0xcc0052b18b0e2a19), CNST_LIMB(0xd7540d4093bc3109), CNST_LIMB(0x305a944507c82f47) }, + /* 84 */ { 10, CNST_LIMB(0x280c4e90c9ab1f45), CNST_LIMB(0xcc8ddd448f8b845a), CNST_LIMB(0xf2b96616f1900000), CNST_LIMB(0xe007ccc9c22781a) }, + /* 85 */ { 9, CNST_LIMB(0x27f0ff1bc1ee87cd), CNST_LIMB(0xcd19bb053fb0284e), CNST_LIMB(0x336de62af2bca35), CNST_LIMB(0x3e92c42e000eeed4) }, + /* 86 */ { 9, CNST_LIMB(0x27d625ecf571c340), CNST_LIMB(0xcda3f5fb9c415052), CNST_LIMB(0x39235ec33d49600), CNST_LIMB(0x1ebe59130db2795e) }, + /* 87 */ { 9, CNST_LIMB(0x27bbbf95282fcd45), CNST_LIMB(0xce2c97d694adab3f), CNST_LIMB(0x3f674e539585a17), CNST_LIMB(0x268859e90f51b89) }, + /* 88 */ { 9, CNST_LIMB(0x27a1c8c8ddaf84da), CNST_LIMB(0xceb3a9f01975077f), CNST_LIMB(0x4645b6958000000), CNST_LIMB(0xd24cde0463108cfa) }, + /* 89 */ { 9, CNST_LIMB(0x27883e5e7df3f518), CNST_LIMB(0xcf393550f3aa6906), CNST_LIMB(0x4dcb74afbc49c19), CNST_LIMB(0xa536009f37adc383) }, + /* 90 */ { 9, CNST_LIMB(0x276f1d4c9847e90e), CNST_LIMB(0xcfbd42b465836767), CNST_LIMB(0x56064e1d18d9a00), CNST_LIMB(0x7cea06ce1c9ace10) }, + /* 91 */ { 9, CNST_LIMB(0x275662a841b30191), CNST_LIMB(0xd03fda8b97997f33), CNST_LIMB(0x5f04fe2cd8a39fb), CNST_LIMB(0x58db032e72e8ba43) }, + /* 92 */ { 9, CNST_LIMB(0x273e0ba38d15a47b), CNST_LIMB(0xd0c10500d63aa658), CNST_LIMB(0x68d74421f5c0000), CNST_LIMB(0x388cc17cae105447) }, + /* 93 */ { 9, CNST_LIMB(0x2726158c1b13cf03), CNST_LIMB(0xd140c9faa1e5439e), CNST_LIMB(0x738df1f6ab4827d), CNST_LIMB(0x1b92672857620ce0) }, + /* 94 */ { 9, CNST_LIMB(0x270e7dc9c01d8e9b), CNST_LIMB(0xd1bf311e95d00de3), CNST_LIMB(0x7f3afbc9cfb5e00), CNST_LIMB(0x18c6a9575c2ade4) }, + /* 95 */ { 9, CNST_LIMB(0x26f741dd3f070d61), CNST_LIMB(0xd23c41d42727c808), CNST_LIMB(0x8bf187fba88f35f), CNST_LIMB(0xd44da7da8e44b24f) }, + /* 96 */ { 9, CNST_LIMB(0x26e05f5f16c2159e), CNST_LIMB(0xd2b803473f7ad0f3), CNST_LIMB(0x99c600000000000), CNST_LIMB(0xaa2f78f1b4cc6794) }, + /* 97 */ { 9, CNST_LIMB(0x26c9d3fe61e80598), CNST_LIMB(0xd3327c6ab49ca6c8), CNST_LIMB(0xa8ce21eb6531361), CNST_LIMB(0x843c067d091ee4cc) }, + /* 98 */ { 9, CNST_LIMB(0x26b39d7fc6ddab08), CNST_LIMB(0xd3abb3faa02166cc), CNST_LIMB(0xb92112c1a0b6200), CNST_LIMB(0x62005e1e913356e3) }, + /* 99 */ { 9, CNST_LIMB(0x269db9bc7772a5cc), CNST_LIMB(0xd423b07e986aa967), CNST_LIMB(0xcad7718b8747c43), CNST_LIMB(0x4316eed01dedd518) }, + /* 100 */ { 9, CNST_LIMB(0x268826a13ef3fde6), CNST_LIMB(0xd49a784bcd1b8afe), CNST_LIMB(0xde0b6b3a7640000), CNST_LIMB(0x2725dd1d243aba0e) }, + /* 101 */ { 9, CNST_LIMB(0x2672e22d9dbdbd9f), CNST_LIMB(0xd510118708a8f8dd), CNST_LIMB(0xf2d8cf5fe6d74c5), CNST_LIMB(0xddd9057c24cb54f) }, + /* 102 */ { 9, CNST_LIMB(0x265dea72f169cc99), CNST_LIMB(0xd5848226989d33c3), CNST_LIMB(0x1095d25bfa712600), CNST_LIMB(0xedeee175a736d2a1) }, + /* 103 */ { 9, CNST_LIMB(0x26493d93a8cb2514), CNST_LIMB(0xd5f7cff41e09aeb8), CNST_LIMB(0x121b7c4c3698faa7), CNST_LIMB(0xc4699f3df8b6b328) }, + /* 104 */ { 9, CNST_LIMB(0x2634d9c282f3ef82), CNST_LIMB(0xd66a008e4788cbcd), CNST_LIMB(0x13c09e8d68000000), CNST_LIMB(0x9ebbe7d859cb5a7c) }, + /* 105 */ { 9, CNST_LIMB(0x2620bd41d8933adc), CNST_LIMB(0xd6db196a761949d9), CNST_LIMB(0x15876ccb0b709ca9), CNST_LIMB(0x7c828b9887eb2179) }, + /* 106 */ { 9, CNST_LIMB(0x260ce662ef04088a), CNST_LIMB(0xd74b1fd64e0753c6), CNST_LIMB(0x17723c2976da2a00), CNST_LIMB(0x5d652ab99001adcf) }, + /* 107 */ { 9, CNST_LIMB(0x25f95385547353fd), CNST_LIMB(0xd7ba18f93502e409), CNST_LIMB(0x198384e9c259048b), CNST_LIMB(0x4114f1754e5d7b32) }, + /* 108 */ { 9, CNST_LIMB(0x25e60316448db8e1), CNST_LIMB(0xd82809d5be7072db), CNST_LIMB(0x1bbde41dfeec0000), CNST_LIMB(0x274b7c902f7e0188) }, + /* 109 */ { 9, CNST_LIMB(0x25d2f390152f74f5), CNST_LIMB(0xd894f74b06ef8b40), CNST_LIMB(0x1e241d6e3337910d), CNST_LIMB(0xfc9e0fbb32e210c) }, + /* 110 */ { 9, CNST_LIMB(0x25c02379aa9ad043), CNST_LIMB(0xd900e6160002ccfe), CNST_LIMB(0x20b91cee9901ee00), CNST_LIMB(0xf4afa3e594f8ea1f) }, + /* 111 */ { 9, CNST_LIMB(0x25ad9165f2c18907), CNST_LIMB(0xd96bdad2acb5f5ef), CNST_LIMB(0x237ff9079863dfef), CNST_LIMB(0xcd85c32e9e4437b0) }, + /* 112 */ { 9, CNST_LIMB(0x259b3bf36735c90c), CNST_LIMB(0xd9d5d9fd5010b366), CNST_LIMB(0x267bf47000000000), CNST_LIMB(0xa9bbb147e0dd92a8) }, + /* 113 */ { 9, CNST_LIMB(0x258921cb955e7693), CNST_LIMB(0xda3ee7f38e181ed0), CNST_LIMB(0x29b08039fbeda7f1), CNST_LIMB(0x8900447b70e8eb82) }, + /* 114 */ { 9, CNST_LIMB(0x257741a2ac9170af), CNST_LIMB(0xdaa708f58014d37c), CNST_LIMB(0x2d213df34f65f200), CNST_LIMB(0x6b0a92adaad5848a) }, + /* 115 */ { 9, CNST_LIMB(0x25659a3711bc827d), CNST_LIMB(0xdb0e4126bcc86bd7), CNST_LIMB(0x30d201d957a7c2d3), CNST_LIMB(0x4f990ad8740f0ee5) }, + /* 116 */ { 9, CNST_LIMB(0x25542a50f84b9c39), CNST_LIMB(0xdb74948f5532da4b), CNST_LIMB(0x34c6d52160f40000), CNST_LIMB(0x3670a9663a8d3610) }, + /* 117 */ { 9, CNST_LIMB(0x2542f0c20000377d), CNST_LIMB(0xdbda071cc67e6db5), CNST_LIMB(0x3903f855d8f4c755), CNST_LIMB(0x1f5c44188057be3c) }, + /* 118 */ { 9, CNST_LIMB(0x2531ec64d772bd64), CNST_LIMB(0xdc3e9ca2e1a05533), CNST_LIMB(0x3d8de5c8ec59b600), CNST_LIMB(0xa2bea956c4e4977) }, + /* 119 */ { 9, CNST_LIMB(0x25211c1ce2fb5a6e), CNST_LIMB(0xdca258dca9331635), CNST_LIMB(0x4269541d1ff01337), CNST_LIMB(0xed68b23033c3637e) }, + /* 120 */ { 9, CNST_LIMB(0x25107ed5e7c3ec3b), CNST_LIMB(0xdd053f6d26089673), CNST_LIMB(0x479b38e478000000), CNST_LIMB(0xc99cf624e50549c5) }, + /* 121 */ { 9, CNST_LIMB(0x25001383bac8a744), CNST_LIMB(0xdd6753e032ea0efe), CNST_LIMB(0x4d28cb56c33fa539), CNST_LIMB(0xa8adf7ae45e7577b) }, + /* 122 */ { 9, CNST_LIMB(0x24efd921f390bce3), CNST_LIMB(0xddc899ab3ff56c5e), CNST_LIMB(0x5317871fa13aba00), CNST_LIMB(0x8a5bc740b1c113e5) }, + /* 123 */ { 9, CNST_LIMB(0x24dfceb3a26bb203), CNST_LIMB(0xde29142e0e01401f), CNST_LIMB(0x596d2f44de9fa71b), CNST_LIMB(0x6e6c7efb81cfbb9b) }, + /* 124 */ { 9, CNST_LIMB(0x24cff3430a0341a7), CNST_LIMB(0xde88c6b3626a72aa), CNST_LIMB(0x602fd125c47c0000), CNST_LIMB(0x54aba5c5cada5f10) }, + /* 125 */ { 9, CNST_LIMB(0x24c045e15c149931), CNST_LIMB(0xdee7b471b3a9507d), CNST_LIMB(0x6765c793fa10079d), CNST_LIMB(0x3ce9a36f23c0fc90) }, + /* 126 */ { 9, CNST_LIMB(0x24b0c5a679267ae2), CNST_LIMB(0xdf45e08bcf06554e), CNST_LIMB(0x6f15be069b847e00), CNST_LIMB(0x26fb43de2c8cd2a8) }, + /* 127 */ { 9, CNST_LIMB(0x24a171b0b31461c8), CNST_LIMB(0xdfa34e1177c23362), CNST_LIMB(0x7746b3e82a77047f), CNST_LIMB(0x12b94793db8486a1) }, + /* 128 */ { 9, CNST_LIMB(0x2492492492492492), CNST_LIMB(0xdfffffffffffffff), CNST_LIMB(0x7), CNST_LIMB(0x0) }, + /* 129 */ { 9, CNST_LIMB(0x24834b2c9d85cdfe), CNST_LIMB(0xe05bf942dbbc2145), CNST_LIMB(0x894953f7ea890481), CNST_LIMB(0xdd5deca404c0156d) }, + /* 130 */ { 9, CNST_LIMB(0x247476f924137501), CNST_LIMB(0xe0b73cb42e16914c), CNST_LIMB(0x932abffea4848200), CNST_LIMB(0xbd51373330291de0) }, + /* 131 */ { 9, CNST_LIMB(0x2465cbc00a40cec0), CNST_LIMB(0xe111cd1d5133412e), CNST_LIMB(0x9dacb687d3d6a163), CNST_LIMB(0x9fa4025d66f23085) }, + /* 132 */ { 9, CNST_LIMB(0x245748bc980e0427), CNST_LIMB(0xe16bad3758efd873), CNST_LIMB(0xa8d8102a44840000), CNST_LIMB(0x842530ee2db4949d) }, + /* 133 */ { 9, CNST_LIMB(0x2448ed2f49eb0633), CNST_LIMB(0xe1c4dfab90aab5ef), CNST_LIMB(0xb4b60f9d140541e5), CNST_LIMB(0x6aa7f2766b03dc25) }, + /* 134 */ { 9, CNST_LIMB(0x243ab85da36e3167), CNST_LIMB(0xe21d6713f453f356), CNST_LIMB(0xc15065d4856e4600), CNST_LIMB(0x53035ba7ebf32e8d) }, + /* 135 */ { 9, CNST_LIMB(0x242ca99203ea8c18), CNST_LIMB(0xe27545fba4fe385a), CNST_LIMB(0xceb1363f396d23c7), CNST_LIMB(0x3d12091fc9fb4914) }, + /* 136 */ { 9, CNST_LIMB(0x241ec01b7cce4ea0), CNST_LIMB(0xe2cc7edf592262cf), CNST_LIMB(0xdce31b2488000000), CNST_LIMB(0x28b1cb81b1ef1849) }, + /* 137 */ { 9, CNST_LIMB(0x2410fb4da9b3b0fc), CNST_LIMB(0xe323142dc8c66b55), CNST_LIMB(0xebf12a24bca135c9), CNST_LIMB(0x15c35be67ae3e2c9) }, + /* 138 */ { 9, CNST_LIMB(0x24035a808a0f315e), CNST_LIMB(0xe379084815b5774c), CNST_LIMB(0xfbe6f8dbf88f4a00), CNST_LIMB(0x42a17bd09be1ff0) }, + /* 139 */ { 8, CNST_LIMB(0x23f5dd105c67ab9d), CNST_LIMB(0xe3ce5d822ff4b643), CNST_LIMB(0x1ef156c084ce761), CNST_LIMB(0x8bf461f03cf0bbf) }, + /* 140 */ { 8, CNST_LIMB(0x23e8825d7b05abb1), CNST_LIMB(0xe4231623369e78e5), CNST_LIMB(0x20c4e3b94a10000), CNST_LIMB(0xf3fbb43f68a32d05) }, + /* 141 */ { 8, CNST_LIMB(0x23db49cc3a0866fe), CNST_LIMB(0xe4773465d54aded7), CNST_LIMB(0x22b0695a08ba421), CNST_LIMB(0xd84f44c48564dc19) }, + /* 142 */ { 8, CNST_LIMB(0x23ce32c4c6cfb9f5), CNST_LIMB(0xe4caba789e2b8687), CNST_LIMB(0x24b4f35d7a4c100), CNST_LIMB(0xbe58ebcce7956abe) }, + /* 143 */ { 8, CNST_LIMB(0x23c13cb308ab6ab7), CNST_LIMB(0xe51daa7e60fdd34c), CNST_LIMB(0x26d397284975781), CNST_LIMB(0xa5fac463c7c134b7) }, + /* 144 */ { 8, CNST_LIMB(0x23b4670682c0c709), CNST_LIMB(0xe570068e7ef5a1e7), CNST_LIMB(0x290d74100000000), CNST_LIMB(0x8f19241e28c7d757) }, + /* 145 */ { 8, CNST_LIMB(0x23a7b13237187c8b), CNST_LIMB(0xe5c1d0b53bc09fca), CNST_LIMB(0x2b63b3a37866081), CNST_LIMB(0x799a6d046c0ae1ae) }, + /* 146 */ { 8, CNST_LIMB(0x239b1aac8ac74728), CNST_LIMB(0xe6130af40bc0ecbf), CNST_LIMB(0x2dd789f4d894100), CNST_LIMB(0x6566e37d746a9e40) }, + /* 147 */ { 8, CNST_LIMB(0x238ea2ef2b24c379), CNST_LIMB(0xe663b741df9c37c0), CNST_LIMB(0x306a35e51b58721), CNST_LIMB(0x526887dbfb5f788f) }, + /* 148 */ { 8, CNST_LIMB(0x23824976f4045a26), CNST_LIMB(0xe6b3d78b6d3b24fb), CNST_LIMB(0x331d01712e10000), CNST_LIMB(0x408af3382b8efd3d) }, + /* 149 */ { 8, CNST_LIMB(0x23760dc3d6e4d729), CNST_LIMB(0xe7036db376537b90), CNST_LIMB(0x35f14200a827c61), CNST_LIMB(0x2fbb374806ec05f1) }, + /* 150 */ { 8, CNST_LIMB(0x2369ef58c30bd43e), CNST_LIMB(0xe7527b930c965bf2), CNST_LIMB(0x38e858b62216100), CNST_LIMB(0x1fe7c0f0afce87fe) }, + /* 151 */ { 8, CNST_LIMB(0x235dedbb8e82aa1c), CNST_LIMB(0xe7a102f9d39a9331), CNST_LIMB(0x3c03b2c13176a41), CNST_LIMB(0x11003d517540d32e) }, + /* 152 */ { 8, CNST_LIMB(0x23520874dfeb1ffd), CNST_LIMB(0xe7ef05ae409a0288), CNST_LIMB(0x3f44c9b21000000), CNST_LIMB(0x2f5810f98eff0dc) }, + /* 153 */ { 8, CNST_LIMB(0x23463f1019228dd7), CNST_LIMB(0xe83c856dd81804b7), CNST_LIMB(0x42ad23cef3113c1), CNST_LIMB(0xeb72e35e7840d910) }, + /* 154 */ { 8, CNST_LIMB(0x233a911b42aa9b3c), CNST_LIMB(0xe88983ed6985bae5), CNST_LIMB(0x463e546b19a2100), CNST_LIMB(0xd27de19593dc3614) }, + /* 155 */ { 8, CNST_LIMB(0x232efe26f7cf33f9), CNST_LIMB(0xe8d602d948f83829), CNST_LIMB(0x49f9fc3f96684e1), CNST_LIMB(0xbaf391fd3e5e6fc2) }, + /* 156 */ { 8, CNST_LIMB(0x232385c65381b485), CNST_LIMB(0xe92203d587039cc1), CNST_LIMB(0x4de1c9c5dc10000), CNST_LIMB(0xa4bd38c55228c81d) }, + /* 157 */ { 8, CNST_LIMB(0x2318278edde1b39b), CNST_LIMB(0xe96d887e26cd57b7), CNST_LIMB(0x51f77994116d2a1), CNST_LIMB(0x8fc5a8de8e1de782) }, + /* 158 */ { 8, CNST_LIMB(0x230ce3187a6c2be9), CNST_LIMB(0xe9b892675266f66c), CNST_LIMB(0x563cd6bb3398100), CNST_LIMB(0x7bf9265bea9d3a3b) }, + /* 159 */ { 8, CNST_LIMB(0x2301b7fd56ca21bb), CNST_LIMB(0xea03231d8d8224ba), CNST_LIMB(0x5ab3bb270beeb01), CNST_LIMB(0x69454b325983dccd) }, + /* 160 */ { 8, CNST_LIMB(0x22f6a5d9da38341c), CNST_LIMB(0xea4d3c25e68dc57f), CNST_LIMB(0x5f5e10000000000), CNST_LIMB(0x5798ee2308c39df9) }, + /* 161 */ { 8, CNST_LIMB(0x22ebac4c9580d89f), CNST_LIMB(0xea96defe264b59be), CNST_LIMB(0x643dce0ec16f501), CNST_LIMB(0x46e40ba0fa66a753) }, + /* 162 */ { 8, CNST_LIMB(0x22e0caf633834beb), CNST_LIMB(0xeae00d1cfdeb43cf), CNST_LIMB(0x6954fe21e3e8100), CNST_LIMB(0x3717b0870b0db3a7) }, + /* 163 */ { 8, CNST_LIMB(0x22d601796a418886), CNST_LIMB(0xeb28c7f233bdd372), CNST_LIMB(0x6ea5b9755f440a1), CNST_LIMB(0x2825e6775d11cdeb) }, + /* 164 */ { 8, CNST_LIMB(0x22cb4f7aec6fd8b4), CNST_LIMB(0xeb7110e6ce866f2b), CNST_LIMB(0x74322a1c0410000), CNST_LIMB(0x1a01a1c09d1b4dac) }, + /* 165 */ { 8, CNST_LIMB(0x22c0b4a15b80d83e), CNST_LIMB(0xebb8e95d3f7d9df2), CNST_LIMB(0x79fc8b6ae8a46e1), CNST_LIMB(0xc9eb0a8bebc8f3e) }, + /* 166 */ { 8, CNST_LIMB(0x22b630953a28f77a), CNST_LIMB(0xec0052b18b0e2a19), CNST_LIMB(0x80072a66d512100), CNST_LIMB(0xffe357ff59e6a004) }, + /* 167 */ { 8, CNST_LIMB(0x22abc300df54ca7c), CNST_LIMB(0xec474e39705912d2), CNST_LIMB(0x86546633b42b9c1), CNST_LIMB(0xe7dfd1be05fa61a8) }, + /* 168 */ { 8, CNST_LIMB(0x22a16b90698da5d2), CNST_LIMB(0xec8ddd448f8b845a), CNST_LIMB(0x8ce6b0861000000), CNST_LIMB(0xd11ed6fc78f760e5) }, + /* 169 */ { 8, CNST_LIMB(0x229729f1b2c83ded), CNST_LIMB(0xecd4011c8f11979a), CNST_LIMB(0x93c08e16a022441), CNST_LIMB(0xbb8db609dd29ebfe) }, + /* 170 */ { 8, CNST_LIMB(0x228cfdd444992f78), CNST_LIMB(0xed19bb053fb0284e), CNST_LIMB(0x9ae49717f026100), CNST_LIMB(0xa71aec8d1813d532) }, + /* 171 */ { 8, CNST_LIMB(0x2282e6e94ccb8588), CNST_LIMB(0xed5f0c3cbf8fa470), CNST_LIMB(0xa25577ae24c1a61), CNST_LIMB(0x93b612a9f20fbc02) }, + /* 172 */ { 8, CNST_LIMB(0x2278e4e392557ecf), CNST_LIMB(0xeda3f5fb9c415052), CNST_LIMB(0xaa15f068e610000), CNST_LIMB(0x814fc7b19a67d317) }, + /* 173 */ { 8, CNST_LIMB(0x226ef7776aa7fd29), CNST_LIMB(0xede87974f3c81855), CNST_LIMB(0xb228d6bf7577921), CNST_LIMB(0x6fd9a03f2e0a4b7c) }, + /* 174 */ { 8, CNST_LIMB(0x22651e5aaf5532d0), CNST_LIMB(0xee2c97d694adab3f), CNST_LIMB(0xba91158ef5c4100), CNST_LIMB(0x5f4615a38d0d316e) }, + /* 175 */ { 8, CNST_LIMB(0x225b5944b40b4694), CNST_LIMB(0xee7052491d2c3e64), CNST_LIMB(0xc351ad9aec0b681), CNST_LIMB(0x4f8876863479a286) }, + /* 176 */ { 8, CNST_LIMB(0x2251a7ee3cdfcca5), CNST_LIMB(0xeeb3a9f01975077f), CNST_LIMB(0xcc6db6100000000), CNST_LIMB(0x4094d8a3041b60eb) }, + /* 177 */ { 8, CNST_LIMB(0x22480a1174e913d9), CNST_LIMB(0xeef69fea211b2627), CNST_LIMB(0xd5e85d09025c181), CNST_LIMB(0x32600b8ed883a09b) }, + /* 178 */ { 8, CNST_LIMB(0x223e7f69e522683c), CNST_LIMB(0xef393550f3aa6906), CNST_LIMB(0xdfc4e816401c100), CNST_LIMB(0x24df8c6eb4b6d1f1) }, + /* 179 */ { 8, CNST_LIMB(0x223507b46b988abe), CNST_LIMB(0xef7b6b399471103e), CNST_LIMB(0xea06b4c72947221), CNST_LIMB(0x18097a8ee151acef) }, + /* 180 */ { 8, CNST_LIMB(0x222ba2af32dbbb9e), CNST_LIMB(0xefbd42b465836767), CNST_LIMB(0xf4b139365210000), CNST_LIMB(0xbd48cc8ec1cd8e3) }, + /* 181 */ { 8, CNST_LIMB(0x22225019a9b4d16c), CNST_LIMB(0xeffebccd41ffcd5c), CNST_LIMB(0xffc80497d520961), CNST_LIMB(0x3807a8d67485fb) }, + /* 182 */ { 8, CNST_LIMB(0x22190fb47b1af172), CNST_LIMB(0xf03fda8b97997f33), CNST_LIMB(0x10b4ebfca1dee100), CNST_LIMB(0xea5768860b62e8d8) }, + /* 183 */ { 8, CNST_LIMB(0x220fe14186679801), CNST_LIMB(0xf0809cf27f703d52), CNST_LIMB(0x117492de921fc141), CNST_LIMB(0xd54faf5b635c5005) }, + /* 184 */ { 8, CNST_LIMB(0x2206c483d7c6b786), CNST_LIMB(0xf0c10500d63aa658), CNST_LIMB(0x123bb2ce41000000), CNST_LIMB(0xc14a56233a377926) }, + /* 185 */ { 8, CNST_LIMB(0x21fdb93fa0e0ccc5), CNST_LIMB(0xf10113b153c8ea7b), CNST_LIMB(0x130a8b6157bdecc1), CNST_LIMB(0xae39a88db7cd329f) }, + /* 186 */ { 8, CNST_LIMB(0x21f4bf3a31bcdcaa), CNST_LIMB(0xf140c9faa1e5439e), CNST_LIMB(0x13e15dede0e8a100), CNST_LIMB(0x9c10bde69efa7ab6) }, + /* 187 */ { 8, CNST_LIMB(0x21ebd639f1d86584), CNST_LIMB(0xf18028cf72976a4e), CNST_LIMB(0x14c06d941c0ca7e1), CNST_LIMB(0x8ac36c42a2836497) }, + /* 188 */ { 8, CNST_LIMB(0x21e2fe06597361a6), CNST_LIMB(0xf1bf311e95d00de3), CNST_LIMB(0x15a7ff487a810000), CNST_LIMB(0x7a463c8b84f5ef67) }, + /* 189 */ { 8, CNST_LIMB(0x21da3667eb0e8ccb), CNST_LIMB(0xf1fde3d30e812642), CNST_LIMB(0x169859ddc5c697a1), CNST_LIMB(0x6a8e5f5ad090fd4b) }, + /* 190 */ { 8, CNST_LIMB(0x21d17f282d1a300e), CNST_LIMB(0xf23c41d42727c808), CNST_LIMB(0x1791c60f6fed0100), CNST_LIMB(0x5b91a2943596fc56) }, + /* 191 */ { 8, CNST_LIMB(0x21c8d811a3d3c9e1), CNST_LIMB(0xf27a4c0585cbf805), CNST_LIMB(0x18948e8c0e6fba01), CNST_LIMB(0x4d4667b1c468e8f0) }, + /* 192 */ { 8, CNST_LIMB(0x21c040efcb50f858), CNST_LIMB(0xf2b803473f7ad0f3), CNST_LIMB(0x19a1000000000000), CNST_LIMB(0x3fa39ab547994daf) }, + /* 193 */ { 8, CNST_LIMB(0x21b7b98f11b61c1a), CNST_LIMB(0xf2f56875eb3f2614), CNST_LIMB(0x1ab769203dafc601), CNST_LIMB(0x32a0a9b2faee1e2a) }, + /* 194 */ { 8, CNST_LIMB(0x21af41bcd19739ba), CNST_LIMB(0xf3327c6ab49ca6c8), CNST_LIMB(0x1bd81ab557f30100), CNST_LIMB(0x26357ceac0e96962) }, + /* 195 */ { 8, CNST_LIMB(0x21a6d9474c81adf0), CNST_LIMB(0xf36f3ffb6d916240), CNST_LIMB(0x1d0367a69fed1ba1), CNST_LIMB(0x1a5a6f65caa5859e) }, + /* 196 */ { 8, CNST_LIMB(0x219e7ffda5ad572a), CNST_LIMB(0xf3abb3faa02166cc), CNST_LIMB(0x1e39a5057d810000), CNST_LIMB(0xf08480f672b4e86) }, + /* 197 */ { 8, CNST_LIMB(0x219635afdcd3e46d), CNST_LIMB(0xf3e7d9379f70166a), CNST_LIMB(0x1f7b2a18f29ac3e1), CNST_LIMB(0x4383340615612ca) }, + /* 198 */ { 8, CNST_LIMB(0x218dfa2ec92d0643), CNST_LIMB(0xf423b07e986aa967), CNST_LIMB(0x20c850694c2aa100), CNST_LIMB(0xf3c77969ee4be5a2) }, + /* 199 */ { 8, CNST_LIMB(0x2185cd4c148e4ae2), CNST_LIMB(0xf45f3a98a20738a4), CNST_LIMB(0x222173cc014980c1), CNST_LIMB(0xe00993cc187c5ec9) }, + /* 200 */ { 8, CNST_LIMB(0x217daeda36ad7a5c), CNST_LIMB(0xf49a784bcd1b8afe), CNST_LIMB(0x2386f26fc1000000), CNST_LIMB(0xcd2b297d889bc2b6) }, + /* 201 */ { 8, CNST_LIMB(0x21759eac708452fe), CNST_LIMB(0xf4d56a5b33cec44a), CNST_LIMB(0x24f92ce8af296d41), CNST_LIMB(0xbb214d5064862b22) }, + /* 202 */ { 8, CNST_LIMB(0x216d9c96c7d490d4), CNST_LIMB(0xf510118708a8f8dd), CNST_LIMB(0x2678863cd0ece100), CNST_LIMB(0xa9e1a7ca7ea10e20) }, + /* 203 */ { 8, CNST_LIMB(0x2165a86e02cb358c), CNST_LIMB(0xf54a6e8ca5438db1), CNST_LIMB(0x280563f0a9472d61), CNST_LIMB(0x99626e72b39ea0cf) }, + /* 204 */ { 8, CNST_LIMB(0x215dc207a3c20fdf), CNST_LIMB(0xf5848226989d33c3), CNST_LIMB(0x29a02e1406210000), CNST_LIMB(0x899a5ba9c13fafd9) }, + /* 205 */ { 8, CNST_LIMB(0x2155e939e51e8b37), CNST_LIMB(0xf5be4d0cb51434aa), CNST_LIMB(0x2b494f4efe6d2e21), CNST_LIMB(0x7a80a705391e96ff) }, + /* 206 */ { 8, CNST_LIMB(0x214e1ddbb54cd933), CNST_LIMB(0xf5f7cff41e09aeb8), CNST_LIMB(0x2d0134ef21cbc100), CNST_LIMB(0x6c0cfe23de23042a) }, + /* 207 */ { 8, CNST_LIMB(0x21465fc4b2d68f98), CNST_LIMB(0xf6310b8f55304840), CNST_LIMB(0x2ec84ef4da2ef581), CNST_LIMB(0x5e377df359c944dd) }, + /* 208 */ { 8, CNST_LIMB(0x213eaecd2893dd60), CNST_LIMB(0xf66a008e4788cbcd), CNST_LIMB(0x309f102100000000), CNST_LIMB(0x50f8ac5fc8f53985) }, + /* 209 */ { 8, CNST_LIMB(0x21370ace09f681c6), CNST_LIMB(0xf6a2af9e5a0f0a08), CNST_LIMB(0x3285ee02a1420281), CNST_LIMB(0x44497266278e35b7) }, + /* 210 */ { 8, CNST_LIMB(0x212f73a0ef6db7cb), CNST_LIMB(0xf6db196a761949d9), CNST_LIMB(0x347d6104fc324100), CNST_LIMB(0x382316831f7ee175) }, + /* 211 */ { 8, CNST_LIMB(0x2127e92012e25004), CNST_LIMB(0xf7133e9b156c7be5), CNST_LIMB(0x3685e47dade53d21), CNST_LIMB(0x2c7f377833b8946e) }, + /* 212 */ { 8, CNST_LIMB(0x21206b264c4a39a7), CNST_LIMB(0xf74b1fd64e0753c6), CNST_LIMB(0x389ff6bb15610000), CNST_LIMB(0x2157c761ab4163ef) }, + /* 213 */ { 8, CNST_LIMB(0x2118f98f0e52c28f), CNST_LIMB(0xf782bdbfdda6577b), CNST_LIMB(0x3acc1912ebb57661), CNST_LIMB(0x16a7071803cc49a9) }, + /* 214 */ { 8, CNST_LIMB(0x211194366320dc66), CNST_LIMB(0xf7ba18f93502e409), CNST_LIMB(0x3d0acff111946100), CNST_LIMB(0xc6781d80f8224fc) }, + /* 215 */ { 8, CNST_LIMB(0x210a3af8e926bb78), CNST_LIMB(0xf7f1322182cf15d1), CNST_LIMB(0x3f5ca2e692eaf841), CNST_LIMB(0x294092d370a900b) }, + /* 216 */ { 8, CNST_LIMB(0x2102edb3d00e29a6), CNST_LIMB(0xf82809d5be7072db), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 217 */ { 8, CNST_LIMB(0x20fbac44d5b6edc2), CNST_LIMB(0xf85ea0b0b27b2610), CNST_LIMB(0x443bcb714399a5c1), CNST_LIMB(0xe03b98f103fad6d2) }, + /* 218 */ { 8, CNST_LIMB(0x20f4768a4348ad08), CNST_LIMB(0xf894f74b06ef8b40), CNST_LIMB(0x46ca406c81af2100), CNST_LIMB(0xcee3d32cad2a9049) }, + /* 219 */ { 8, CNST_LIMB(0x20ed4c62ea57b1f0), CNST_LIMB(0xf8cb0e3b4b3bbdb3), CNST_LIMB(0x496e106ac22aaae1), CNST_LIMB(0xbe3f9df9277fdada) }, + /* 220 */ { 8, CNST_LIMB(0x20e62dae221c087a), CNST_LIMB(0xf900e6160002ccfe), CNST_LIMB(0x4c27d39fa5410000), CNST_LIMB(0xae46f0d94c05e933) }, + /* 221 */ { 8, CNST_LIMB(0x20df1a4bc4ba6525), CNST_LIMB(0xf9367f6da0ab2e9c), CNST_LIMB(0x4ef825c296e43ca1), CNST_LIMB(0x9ef2280fb437a33d) }, + /* 222 */ { 8, CNST_LIMB(0x20d8121c2c9e506e), CNST_LIMB(0xf96bdad2acb5f5ef), CNST_LIMB(0x51dfa61f5ad88100), CNST_LIMB(0x9039ff426d3f284b) }, + /* 223 */ { 8, CNST_LIMB(0x20d1150031e51549), CNST_LIMB(0xf9a0f8d3b0e04fde), CNST_LIMB(0x54def7a6d2f16901), CNST_LIMB(0x82178c6d6b51f8f4) }, + /* 224 */ { 8, CNST_LIMB(0x20ca22d927d8f54d), CNST_LIMB(0xf9d5d9fd5010b366), CNST_LIMB(0x57f6c10000000000), CNST_LIMB(0x74843b1ee4c1e053) }, + /* 225 */ { 8, CNST_LIMB(0x20c33b88da7c29aa), CNST_LIMB(0xfa0a7eda4c112ce6), CNST_LIMB(0x5b27ac993df97701), CNST_LIMB(0x6779c7f90dc42f48) }, + /* 226 */ { 8, CNST_LIMB(0x20bc5ef18c233bdf), CNST_LIMB(0xfa3ee7f38e181ed0), CNST_LIMB(0x5e7268b9bbdf8100), CNST_LIMB(0x5af23c74f9ad9fe9) }, + /* 227 */ { 8, CNST_LIMB(0x20b58cf5f31e4526), CNST_LIMB(0xfa7315d02f20c7bd), CNST_LIMB(0x61d7a7932ff3d6a1), CNST_LIMB(0x4ee7eae2acdc617e) }, + /* 228 */ { 8, CNST_LIMB(0x20aec5793770a74d), CNST_LIMB(0xfaa708f58014d37c), CNST_LIMB(0x65581f53c8c10000), CNST_LIMB(0x43556aa2ac262a0b) }, + /* 229 */ { 8, CNST_LIMB(0x20a8085ef096d530), CNST_LIMB(0xfadac1e711c832d1), CNST_LIMB(0x68f48a385b8320e1), CNST_LIMB(0x3835949593b8ddd1) }, + /* 230 */ { 8, CNST_LIMB(0x20a1558b2359c4b1), CNST_LIMB(0xfb0e4126bcc86bd7), CNST_LIMB(0x6cada69ed07c2100), CNST_LIMB(0x2d837fbe78458762) }, + /* 231 */ { 8, CNST_LIMB(0x209aace23fafa72e), CNST_LIMB(0xfb418734a9008bd9), CNST_LIMB(0x70843718cdbf27c1), CNST_LIMB(0x233a7e150a54a555) }, + /* 232 */ { 8, CNST_LIMB(0x20940e491ea988d7), CNST_LIMB(0xfb74948f5532da4b), CNST_LIMB(0x7479027ea1000000), CNST_LIMB(0x19561984a50ff8fe) }, + /* 233 */ { 8, CNST_LIMB(0x208d79a5006d7a47), CNST_LIMB(0xfba769b39e49640e), CNST_LIMB(0x788cd40268f39641), CNST_LIMB(0xfd211159fe3490f) }, + /* 234 */ { 8, CNST_LIMB(0x2086eedb8a3cead3), CNST_LIMB(0xfbda071cc67e6db5), CNST_LIMB(0x7cc07b437ecf6100), CNST_LIMB(0x6aa563e655033e3) }, + /* 235 */ { 8, CNST_LIMB(0x20806dd2c486dcc6), CNST_LIMB(0xfc0c6d447c5dd362), CNST_LIMB(0x8114cc6220762061), CNST_LIMB(0xfbb614b3f2d3b14c) }, + /* 236 */ { 8, CNST_LIMB(0x2079f67119059fae), CNST_LIMB(0xfc3e9ca2e1a05533), CNST_LIMB(0x858aa0135be10000), CNST_LIMB(0xeac0f8837fb05773) }, + /* 237 */ { 8, CNST_LIMB(0x2073889d50e7bf63), CNST_LIMB(0xfc7095ae91e1c760), CNST_LIMB(0x8a22d3b53c54c321), CNST_LIMB(0xda6e4c10e8615ca5) }, + /* 238 */ { 8, CNST_LIMB(0x206d243e9303d929), CNST_LIMB(0xfca258dca9331635), CNST_LIMB(0x8ede496339f34100), CNST_LIMB(0xcab755a8d01fa67f) }, + /* 239 */ { 8, CNST_LIMB(0x2066c93c62170aa8), CNST_LIMB(0xfcd3e6a0ca8906c2), CNST_LIMB(0x93bde80aec3a1481), CNST_LIMB(0xbb95a9ae71aa3e0c) }, + /* 240 */ { 8, CNST_LIMB(0x2060777e9b0db0f6), CNST_LIMB(0xfd053f6d26089673), CNST_LIMB(0x98c29b8100000000), CNST_LIMB(0xad0326c296b4f529) }, + /* 241 */ { 8, CNST_LIMB(0x205a2eed73563032), CNST_LIMB(0xfd3663b27f31d529), CNST_LIMB(0x9ded549671832381), CNST_LIMB(0x9ef9f21eed31b7c1) }, + /* 242 */ { 8, CNST_LIMB(0x2053ef71773d7e6a), CNST_LIMB(0xfd6753e032ea0efe), CNST_LIMB(0xa33f092e0b1ac100), CNST_LIMB(0x91747422be14b0b2) }, + /* 243 */ { 8, CNST_LIMB(0x204db8f388552ea9), CNST_LIMB(0xfd9810643d6614c3), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 244 */ { 8, CNST_LIMB(0x20478b5cdbe2bb2f), CNST_LIMB(0xfdc899ab3ff56c5e), CNST_LIMB(0xae5b564ac3a10000), CNST_LIMB(0x77df79e9a96c06f6) }, + /* 245 */ { 8, CNST_LIMB(0x20416696f957cfbf), CNST_LIMB(0xfdf8f02086af2c4b), CNST_LIMB(0xb427f4b3be74c361), CNST_LIMB(0x6bc6019636c7d0c2) }, + /* 246 */ { 8, CNST_LIMB(0x203b4a8bb8d356e7), CNST_LIMB(0xfe29142e0e01401f), CNST_LIMB(0xba1f9a938041e100), CNST_LIMB(0x601c4205aebd9e47) }, + /* 247 */ { 8, CNST_LIMB(0x2035372541ab0f0d), CNST_LIMB(0xfe59063c8822ce56), CNST_LIMB(0xc0435871d1110f41), CNST_LIMB(0x54ddc59756f05016) }, + /* 248 */ { 8, CNST_LIMB(0x202f2c4e08fd6dcc), CNST_LIMB(0xfe88c6b3626a72aa), CNST_LIMB(0xc694446f01000000), CNST_LIMB(0x4a0648979c838c18) }, + /* 249 */ { 8, CNST_LIMB(0x202929f0d04b99e9), CNST_LIMB(0xfeb855f8ca88fb0d), CNST_LIMB(0xcd137a5b57ac3ec1), CNST_LIMB(0x3f91b6e0bb3a053d) }, + /* 250 */ { 8, CNST_LIMB(0x20232ff8a41b45eb), CNST_LIMB(0xfee7b471b3a9507d), CNST_LIMB(0xd3c21bcecceda100), CNST_LIMB(0x357c299a88ea76a5) }, + /* 251 */ { 8, CNST_LIMB(0x201d3e50daa036db), CNST_LIMB(0xff16e281db76303b), CNST_LIMB(0xdaa150410b788de1), CNST_LIMB(0x2bc1e517aecc56e3) }, + /* 252 */ { 8, CNST_LIMB(0x201754e5126d446d), CNST_LIMB(0xff45e08bcf06554e), CNST_LIMB(0xe1b24521be010000), CNST_LIMB(0x225f56ceb3da9f5d) }, + /* 253 */ { 8, CNST_LIMB(0x201173a1312ca135), CNST_LIMB(0xff74aef0efafadd7), CNST_LIMB(0xe8f62df12777c1a1), CNST_LIMB(0x1951136d53ad63ac) }, + /* 254 */ { 8, CNST_LIMB(0x200b9a71625f3b13), CNST_LIMB(0xffa34e1177c23362), CNST_LIMB(0xf06e445906fc0100), CNST_LIMB(0x1093d504b3cd7d93) }, + /* 255 */ { 8, CNST_LIMB(0x2005c94216230568), CNST_LIMB(0xffd1be4c7f2af942), CNST_LIMB(0xf81bc845c81bf801), CNST_LIMB(0x824794d1ec1814f) }, + /* 256 */ { 8, CNST_LIMB(0x1fffffffffffffff), CNST_LIMB(0xffffffffffffffff), CNST_LIMB(0x8), CNST_LIMB(0x0) }, +}; diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/mul_1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/mul_1.s new file mode 100644 index 0000000..cfa791d --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/mul_1.s @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_mul_1 + + +___gmpn_mul_1: + + + push %rbx + push %rbp + push %r12 + + mov %rdx, %rbp + shr $2, %rbp + + test $1, %dl + jnz Lbx1 + +Lbx0: test $2, %dl + mov %rcx, %rdx + jnz Lb10 + +Lb00: .byte 0xc4,98,179,0xf6,6 + .byte 0xc4,98,163,0xf6,86,8 + .byte 0xc4,98,243,0xf6,102,16 + lea -32(%rdi), %rdi + jmp Llo0 + +Lb10: .byte 0xc4,98,243,0xf6,38 + .byte 0xc4,226,227,0xf6,70,8 + lea -16(%rdi), %rdi + test %rbp, %rbp + jz Lcj2 + .byte 0xc4,98,179,0xf6,70,16 + lea 16(%rsi), %rsi + jmp Llo2 + +Lbx1: test $2, %dl + mov %rcx, %rdx + jnz Lb11 + +Lb01: .byte 0xc4,226,227,0xf6,6 + lea -24(%rdi), %rdi + test %rbp, %rbp + jz Lcj1 + .byte 0xc4,98,179,0xf6,70,8 + lea 8(%rsi), %rsi + jmp Llo1 + +Lb11: .byte 0xc4,98,163,0xf6,22 + .byte 0xc4,98,243,0xf6,102,8 + .byte 0xc4,226,227,0xf6,70,16 + lea -8(%rdi), %rdi + test %rbp, %rbp + jz Lcj3 + lea 24(%rsi), %rsi + jmp Llo3 + + .align 5, 0x90 +Ltop: lea 32(%rdi), %rdi + mov %r9, (%rdi) + adc %r8, %r11 +Llo3: .byte 0xc4,98,179,0xf6,6 + mov %r11, 8(%rdi) + adc %r10, %rcx +Llo2: mov %rcx, 16(%rdi) + adc %r12, %rbx +Llo1: .byte 0xc4,98,163,0xf6,86,8 + adc %rax, %r9 + .byte 0xc4,98,243,0xf6,102,16 + mov %rbx, 24(%rdi) +Llo0: .byte 0xc4,226,227,0xf6,70,24 + lea 32(%rsi), %rsi + dec %rbp + jnz Ltop + +Lend: lea 32(%rdi), %rdi + mov %r9, (%rdi) + adc %r8, %r11 +Lcj3: mov %r11, 8(%rdi) + adc %r10, %rcx +Lcj2: mov %rcx, 16(%rdi) + adc %r12, %rbx +Lcj1: mov %rbx, 24(%rdi) + adc $0, %rax + + pop %r12 + pop %rbp + pop %rbx + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/mul_2.s b/vere/ext/gmp/gen/x86_64-macos/mpn/mul_2.s new file mode 100644 index 0000000..132a72b --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/mul_2.s @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_mul_2 + + +___gmpn_mul_2: + + + push %rbx + push %rbp + + mov (%rcx), %r8 + mov 8(%rcx), %r9 + + lea 3(%rdx), %r11 + shr $2, %r11 + + test $1, %dl + jnz Lbx1 + +Lbx0: xor %rbx, %rbx + test $2, %dl + mov (%rsi), %rdx + .byte 0xc4,194,211,0xf6,200 + jz Llo0 + +Lb10: lea -16(%rdi), %rdi + lea -16(%rsi), %rsi + jmp Llo2 + +Lbx1: xor %rbp, %rbp + test $2, %dl + mov (%rsi), %rdx + .byte 0xc4,66,227,0xf6,208 + jnz Lb11 + +Lb01: lea -24(%rdi), %rdi + lea 8(%rsi), %rsi + jmp Llo1 + +Lb11: lea -8(%rdi), %rdi + lea -8(%rsi), %rsi + jmp Llo3 + + .align 4, 0x90 +Ltop: .byte 0xc4,194,251,0xf6,217 + add %rax, %rbp + mov (%rsi), %rdx + .byte 0xc4,194,251,0xf6,200 + adc $0, %rbx + add %rax, %rbp + adc $0, %rcx + add %r10, %rbp +Llo0: mov %rbp, (%rdi) + adc $0, %rcx + .byte 0xc4,194,251,0xf6,233 + add %rax, %rbx + mov 8(%rsi), %rdx + adc $0, %rbp + .byte 0xc4,66,251,0xf6,208 + add %rax, %rbx + adc $0, %r10 + add %rcx, %rbx +Llo3: mov %rbx, 8(%rdi) + adc $0, %r10 + .byte 0xc4,194,251,0xf6,217 + add %rax, %rbp + mov 16(%rsi), %rdx + .byte 0xc4,194,251,0xf6,200 + adc $0, %rbx + add %rax, %rbp + adc $0, %rcx + add %r10, %rbp +Llo2: mov %rbp, 16(%rdi) + adc $0, %rcx + .byte 0xc4,194,251,0xf6,233 + add %rax, %rbx + mov 24(%rsi), %rdx + adc $0, %rbp + .byte 0xc4,66,251,0xf6,208 + add %rax, %rbx + adc $0, %r10 + add %rcx, %rbx + lea 32(%rsi), %rsi +Llo1: mov %rbx, 24(%rdi) + adc $0, %r10 + dec %r11 + lea 32(%rdi), %rdi + jnz Ltop + +Lend: .byte 0xc4,194,235,0xf6,193 + add %rdx, %rbp + adc $0, %rax + add %r10, %rbp + mov %rbp, (%rdi) + adc $0, %rax + + pop %rbp + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/mul_basecase.s b/vere/ext/gmp/gen/x86_64-macos/mpn/mul_basecase.s new file mode 100644 index 0000000..b5439c0 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/mul_basecase.s @@ -0,0 +1,455 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_mul_basecase + + +___gmpn_mul_basecase: + + + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + mov %rdx, %rbx + neg %rbx + + mov %rdx, %rbp + sar $2, %rbp + + test $1, %r8b + jz Ldo_mul_2 + + + + + mov (%rcx), %rdx + +Ldo_mul_1: + test $1, %bl + jnz Lm1x1 + +Lm1x0:test $2, %bl + jnz Lm110 + +Lm100: + .byte 0xc4,98,139,0xf6,38 + .byte 0xc4,98,163,0xf6,110,8 + lea -24(%rdi), %rdi + jmp Lm1l0 + +Lm110: + .byte 0xc4,98,147,0xf6,14 + .byte 0xc4,98,163,0xf6,118,8 + lea -8(%rdi), %rdi + test %rbp, %rbp + jz Lcj2 + .byte 0xc4,98,171,0xf6,102,16 + lea 16(%rsi), %rsi + jmp Lm1l2 + +Lm1x1:test $2, %bl + jz Lm111 + +Lm101: + .byte 0xc4,98,179,0xf6,54 + lea -16(%rdi), %rdi + test %rbp, %rbp + jz Lcj1 + .byte 0xc4,98,171,0xf6,102,8 + lea 8(%rsi), %rsi + jmp Lm1l1 + +Lm111: + .byte 0xc4,98,155,0xf6,46 + .byte 0xc4,98,171,0xf6,78,8 + .byte 0xc4,98,163,0xf6,118,16 + lea 24(%rsi), %rsi + test %rbp, %rbp + jnz Lgt3 + add %r10, %r13 + jmp Lcj3 +Lgt3: add %r10, %r13 + jmp Lm1l3 + + .align 5, 0x90 +Lm1tp:lea 32(%rdi), %rdi +Lm1l3:mov %r12, (%rdi) + .byte 0xc4,98,171,0xf6,38 +Lm1l2:mov %r13, 8(%rdi) + adc %r11, %r9 +Lm1l1:adc %r10, %r14 + mov %r9, 16(%rdi) + .byte 0xc4,98,163,0xf6,110,8 +Lm1l0:mov %r14, 24(%rdi) + .byte 0xc4,98,171,0xf6,78,16 + adc %r11, %r12 + .byte 0xc4,98,163,0xf6,118,24 + adc %r10, %r13 + lea 32(%rsi), %rsi + dec %rbp + jnz Lm1tp + +Lm1ed:lea 32(%rdi), %rdi +Lcj3: mov %r12, (%rdi) +Lcj2: mov %r13, 8(%rdi) + adc %r11, %r9 +Lcj1: mov %r9, 16(%rdi) + adc $0, %r14 + mov %r14, 24(%rdi) + + dec %r8d + jz Lret5 + + lea 8(%rcx), %rcx + lea 32(%rdi), %rdi + + + + jmp Ldo_addmul + +Ldo_mul_2: + + + + + + mov (%rcx), %r9 + mov 8(%rcx), %r14 + + lea (%rbx), %rbp + sar $2, %rbp + + test $1, %bl + jnz Lm2x1 + +Lm2x0:xor %r10, %r10 + test $2, %bl + mov (%rsi), %rdx + .byte 0xc4,66,155,0xf6,217 + jz Lm2l0 + +Lm210:lea -16(%rdi), %rdi + lea -16(%rsi), %rsi + jmp Lm2l2 + +Lm2x1:xor %r12, %r12 + test $2, %bl + mov (%rsi), %rdx + .byte 0xc4,66,171,0xf6,233 + jz Lm211 + +Lm201:lea -24(%rdi), %rdi + lea 8(%rsi), %rsi + jmp Lm2l1 + +Lm211:lea -8(%rdi), %rdi + lea -8(%rsi), %rsi + jmp Lm2l3 + + .align 4, 0x90 +Lm2tp:.byte 0xc4,66,251,0xf6,214 + add %rax, %r12 + mov (%rsi), %rdx + .byte 0xc4,66,251,0xf6,217 + adc $0, %r10 + add %rax, %r12 + adc $0, %r11 + add %r13, %r12 +Lm2l0:mov %r12, (%rdi) + adc $0, %r11 + .byte 0xc4,66,251,0xf6,230 + add %rax, %r10 + mov 8(%rsi), %rdx + adc $0, %r12 + .byte 0xc4,66,251,0xf6,233 + add %rax, %r10 + adc $0, %r13 + add %r11, %r10 +Lm2l3:mov %r10, 8(%rdi) + adc $0, %r13 + .byte 0xc4,66,251,0xf6,214 + add %rax, %r12 + mov 16(%rsi), %rdx + .byte 0xc4,66,251,0xf6,217 + adc $0, %r10 + add %rax, %r12 + adc $0, %r11 + add %r13, %r12 +Lm2l2:mov %r12, 16(%rdi) + adc $0, %r11 + .byte 0xc4,66,251,0xf6,230 + add %rax, %r10 + mov 24(%rsi), %rdx + adc $0, %r12 + .byte 0xc4,66,251,0xf6,233 + add %rax, %r10 + adc $0, %r13 + add %r11, %r10 + lea 32(%rsi), %rsi +Lm2l1:mov %r10, 24(%rdi) + adc $0, %r13 + inc %rbp + lea 32(%rdi), %rdi + jnz Lm2tp + +Lm2ed:.byte 0xc4,194,235,0xf6,198 + add %rdx, %r12 + adc $0, %rax + add %r13, %r12 + mov %r12, (%rdi) + adc $0, %rax + mov %rax, 8(%rdi) + + add $-2, %r8d + jz Lret5 + lea 16(%rcx), %rcx + lea 16(%rdi), %rdi + + +Ldo_addmul: + push %r15 + push %r8 + + + + + + lea (%rdi,%rbx,8), %rdi + lea (%rsi,%rbx,8), %rsi + +Louter: + mov (%rcx), %r9 + mov 8(%rcx), %r8 + + lea 2(%rbx), %rbp + sar $2, %rbp + + mov (%rsi), %rdx + test $1, %bl + jnz Lbx1 + +Lbx0: mov (%rdi), %r14 + mov 8(%rdi), %r15 + .byte 0xc4,66,251,0xf6,217 + add %rax, %r14 + .byte 0xc4,66,251,0xf6,224 + adc $0, %r11 + mov %r14, (%rdi) + add %rax, %r15 + adc $0, %r12 + mov 8(%rsi), %rdx + test $2, %bl + jnz Lb10 + +Lb00: lea 16(%rsi), %rsi + lea 16(%rdi), %rdi + jmp Llo0 + +Lb10: mov 16(%rdi), %r14 + lea 32(%rsi), %rsi + .byte 0xc4,66,251,0xf6,233 + jmp Llo2 + +Lbx1: mov (%rdi), %r15 + mov 8(%rdi), %r14 + .byte 0xc4,66,251,0xf6,233 + add %rax, %r15 + adc $0, %r13 + .byte 0xc4,66,251,0xf6,208 + add %rax, %r14 + adc $0, %r10 + mov 8(%rsi), %rdx + mov %r15, (%rdi) + .byte 0xc4,66,251,0xf6,217 + test $2, %bl + jz Lb11 + +Lb01: mov 16(%rdi), %r15 + lea 24(%rdi), %rdi + lea 24(%rsi), %rsi + jmp Llo1 + +Lb11: lea 8(%rdi), %rdi + lea 8(%rsi), %rsi + jmp Llo3 + + .align 4, 0x90 +Ltop: .byte 0xc4,66,251,0xf6,233 + add %r10, %r15 + adc $0, %r12 +Llo2: add %rax, %r15 + adc $0, %r13 + .byte 0xc4,66,251,0xf6,208 + add %rax, %r14 + adc $0, %r10 + lea 32(%rdi), %rdi + add %r11, %r15 + mov -16(%rsi), %rdx + mov %r15, -24(%rdi) + adc $0, %r13 + add %r12, %r14 + mov -8(%rdi), %r15 + .byte 0xc4,66,251,0xf6,217 + adc $0, %r10 +Llo1: add %rax, %r14 + .byte 0xc4,66,251,0xf6,224 + adc $0, %r11 + add %r13, %r14 + mov %r14, -16(%rdi) + adc $0, %r11 + add %rax, %r15 + adc $0, %r12 + add %r10, %r15 + mov -8(%rsi), %rdx + adc $0, %r12 +Llo0: .byte 0xc4,66,251,0xf6,233 + add %rax, %r15 + adc $0, %r13 + mov (%rdi), %r14 + .byte 0xc4,66,251,0xf6,208 + add %rax, %r14 + adc $0, %r10 + add %r11, %r15 + mov %r15, -8(%rdi) + adc $0, %r13 + mov (%rsi), %rdx + add %r12, %r14 + .byte 0xc4,66,251,0xf6,217 + adc $0, %r10 +Llo3: add %rax, %r14 + adc $0, %r11 + .byte 0xc4,66,251,0xf6,224 + add %r13, %r14 + mov 8(%rdi), %r15 + mov %r14, (%rdi) + mov 16(%rdi), %r14 + adc $0, %r11 + add %rax, %r15 + adc $0, %r12 + mov 8(%rsi), %rdx + lea 32(%rsi), %rsi + inc %rbp + jnz Ltop + +Lend: .byte 0xc4,66,251,0xf6,233 + add %r10, %r15 + adc $0, %r12 + add %rax, %r15 + adc $0, %r13 + .byte 0xc4,194,235,0xf6,192 + add %r11, %r15 + mov %r15, 8(%rdi) + adc $0, %r13 + add %r12, %rdx + adc $0, %rax + add %r13, %rdx + mov %rdx, 16(%rdi) + adc $0, %rax + mov %rax, 24(%rdi) + + addl $-2, (%rsp) + lea 16(%rcx), %rcx + lea -16(%rsi,%rbx,8), %rsi + lea 32(%rdi,%rbx,8), %rdi + jnz Louter + + pop %rax + pop %r15 +Lret5:pop %r14 +Lret4:pop %r13 +Lret3:pop %r12 +Lret2:pop %rbp + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/mullo_basecase.s b/vere/ext/gmp/gen/x86_64-macos/mpn/mullo_basecase.s new file mode 100644 index 0000000..127dd3f --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/mullo_basecase.s @@ -0,0 +1,436 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_mullo_basecase + + +___gmpn_mullo_basecase: + + + + mov %rdx, %r8 + mov (%rsi), %rdx + + cmp $4, %rcx + jb Lsmall + + push %rbx + push %rbp + push %r12 + push %r13 + + mov (%r8), %r9 + mov 8(%r8), %rbx + + lea 2(%rcx), %rbp + shr $2, %rbp + neg %rcx + add $2, %rcx + + push %rsi + + test $1, %cl + jnz Lm2x1 + +Lm2x0:.byte 0xc4,66,171,0xf6,233 + xor %r12d, %r12d + test $2, %cl + jz Lm2b2 + +Lm2b0:lea -8(%rdi), %rdi + lea -8(%rsi), %rsi + jmp Lm2e0 + +Lm2b2:lea -24(%rdi), %rdi + lea 8(%rsi), %rsi + jmp Lm2e2 + +Lm2x1:.byte 0xc4,66,155,0xf6,217 + xor %r10d, %r10d + test $2, %cl + jnz Lm2b3 + +Lm2b1:jmp Lm2e1 + +Lm2b3:lea -16(%rdi), %rdi + lea -16(%rsi), %rsi + jmp Lm2e3 + + .align 4, 0x90 +Lm2tp:.byte 0xc4,98,251,0xf6,211 + add %rax, %r12 + mov (%rsi), %rdx + .byte 0xc4,66,251,0xf6,217 + adc $0, %r10 + add %rax, %r12 + adc $0, %r11 + add %r13, %r12 +Lm2e1:mov %r12, (%rdi) + adc $0, %r11 + .byte 0xc4,98,251,0xf6,227 + add %rax, %r10 + mov 8(%rsi), %rdx + adc $0, %r12 + .byte 0xc4,66,251,0xf6,233 + add %rax, %r10 + adc $0, %r13 + add %r11, %r10 +Lm2e0:mov %r10, 8(%rdi) + adc $0, %r13 + .byte 0xc4,98,251,0xf6,211 + add %rax, %r12 + mov 16(%rsi), %rdx + .byte 0xc4,66,251,0xf6,217 + adc $0, %r10 + add %rax, %r12 + adc $0, %r11 + add %r13, %r12 +Lm2e3:mov %r12, 16(%rdi) + adc $0, %r11 + .byte 0xc4,98,251,0xf6,227 + add %rax, %r10 + mov 24(%rsi), %rdx + adc $0, %r12 + .byte 0xc4,66,251,0xf6,233 + add %rax, %r10 + adc $0, %r13 + add %r11, %r10 + lea 32(%rsi), %rsi +Lm2e2:mov %r10, 24(%rdi) + adc $0, %r13 + dec %rbp + lea 32(%rdi), %rdi + jnz Lm2tp + +Lm2ed:.byte 0xc4,98,251,0xf6,211 + add %rax, %r12 + mov (%rsi), %rdx + .byte 0xc4,66,251,0xf6,217 + add %r12, %rax + add %r13, %rax + mov %rax, (%rdi) + + mov (%rsp), %rsi + lea 16(%r8), %r8 + lea 8(%rdi,%rcx,8), %rdi + add $2, %rcx + jge Lcor1 + + push %r14 + push %r15 + +Louter: + mov (%r8), %r9 + mov 8(%r8), %rbx + + lea (%rcx), %rbp + sar $2, %rbp + + mov (%rsi), %rdx + test $1, %cl + jnz Lbx1 + +Lbx0: mov (%rdi), %r15 + mov 8(%rdi), %r14 + .byte 0xc4,66,251,0xf6,233 + add %rax, %r15 + adc $0, %r13 + .byte 0xc4,98,251,0xf6,211 + add %rax, %r14 + adc $0, %r10 + mov 8(%rsi), %rdx + mov %r15, (%rdi) + .byte 0xc4,66,251,0xf6,217 + test $2, %cl + jz Lb2 + +Lb0: lea 8(%rdi), %rdi + lea 8(%rsi), %rsi + jmp Llo0 + +Lb2: mov 16(%rdi), %r15 + lea 24(%rdi), %rdi + lea 24(%rsi), %rsi + jmp Llo2 + +Lbx1: mov (%rdi), %r14 + mov 8(%rdi), %r15 + .byte 0xc4,66,251,0xf6,217 + add %rax, %r14 + .byte 0xc4,98,251,0xf6,227 + adc $0, %r11 + mov %r14, (%rdi) + add %rax, %r15 + adc $0, %r12 + mov 8(%rsi), %rdx + test $2, %cl + jnz Lb3 + +Lb1: lea 16(%rsi), %rsi + lea 16(%rdi), %rdi + jmp Llo1 + +Lb3: mov 16(%rdi), %r14 + lea 32(%rsi), %rsi + .byte 0xc4,66,251,0xf6,233 + inc %rbp + jz Lcj3 + jmp Llo3 + + .align 4, 0x90 +Ltop: .byte 0xc4,66,251,0xf6,233 + add %r10, %r15 + adc $0, %r12 +Llo3: add %rax, %r15 + adc $0, %r13 + .byte 0xc4,98,251,0xf6,211 + add %rax, %r14 + adc $0, %r10 + lea 32(%rdi), %rdi + add %r11, %r15 + mov -16(%rsi), %rdx + mov %r15, -24(%rdi) + adc $0, %r13 + add %r12, %r14 + mov -8(%rdi), %r15 + .byte 0xc4,66,251,0xf6,217 + adc $0, %r10 +Llo2: add %rax, %r14 + .byte 0xc4,98,251,0xf6,227 + adc $0, %r11 + add %r13, %r14 + mov %r14, -16(%rdi) + adc $0, %r11 + add %rax, %r15 + adc $0, %r12 + add %r10, %r15 + mov -8(%rsi), %rdx + adc $0, %r12 +Llo1: .byte 0xc4,66,251,0xf6,233 + add %rax, %r15 + adc $0, %r13 + mov (%rdi), %r14 + .byte 0xc4,98,251,0xf6,211 + add %rax, %r14 + adc $0, %r10 + add %r11, %r15 + mov %r15, -8(%rdi) + adc $0, %r13 + mov (%rsi), %rdx + add %r12, %r14 + .byte 0xc4,66,251,0xf6,217 + adc $0, %r10 +Llo0: add %rax, %r14 + adc $0, %r11 + .byte 0xc4,98,251,0xf6,227 + add %r13, %r14 + mov 8(%rdi), %r15 + mov %r14, (%rdi) + mov 16(%rdi), %r14 + adc $0, %r11 + add %rax, %r15 + adc $0, %r12 + mov 8(%rsi), %rdx + lea 32(%rsi), %rsi + inc %rbp + jnz Ltop + +Lend: .byte 0xc4,66,251,0xf6,233 + add %r10, %r15 + adc $0, %r12 +Lcj3: add %rax, %r15 + adc $0, %r13 + .byte 0xc4,98,251,0xf6,211 + add %rax, %r14 + add %r11, %r15 + mov -16(%rsi), %rdx + mov %r15, 8(%rdi) + adc $0, %r13 + add %r12, %r14 + .byte 0xc4,66,251,0xf6,217 + add %r14, %rax + add %r13, %rax + mov %rax, 16(%rdi) + + mov 16(%rsp), %rsi + lea 16(%r8), %r8 + lea 24(%rdi,%rcx,8), %rdi + add $2, %rcx + jl Louter + + pop %r15 + pop %r14 + + jnz Lcor0 + +Lcor1:mov (%r8), %r9 + mov 8(%r8), %rbx + mov (%rsi), %rdx + .byte 0xc4,194,155,0xf6,233 + add (%rdi), %r12 + adc %rax, %rbp + mov 8(%rsi), %r10 + imul %r9, %r10 + imul %rbx, %rdx + mov %r12, (%rdi) + add %r10, %rdx + add %rbp, %rdx + mov %rdx, 8(%rdi) + pop %rax + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + +Lcor0:mov (%r8), %r11 + imul (%rsi), %r11 + add %rax, %r11 + mov %r11, (%rdi) + pop %rax + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + + .align 4, 0x90 +Lsmall: + cmp $2, %rcx + jae Lgt1 +Ln1: imul (%r8), %rdx + mov %rdx, (%rdi) + + ret +Lgt1: ja Lgt2 +Ln2: mov (%r8), %r9 + .byte 0xc4,194,251,0xf6,209 + mov %rax, (%rdi) + mov 8(%rsi), %rax + imul %r9, %rax + add %rax, %rdx + mov 8(%r8), %r9 + mov (%rsi), %rcx + imul %r9, %rcx + add %rcx, %rdx + mov %rdx, 8(%rdi) + + ret +Lgt2: +Ln3: mov (%r8), %r9 + .byte 0xc4,66,251,0xf6,209 + mov %rax, (%rdi) + mov 8(%rsi), %rdx + .byte 0xc4,194,251,0xf6,209 + imul 16(%rsi), %r9 + add %rax, %r10 + adc %rdx, %r9 + mov 8(%r8), %r11 + mov (%rsi), %rdx + .byte 0xc4,194,251,0xf6,211 + add %rax, %r10 + adc %rdx, %r9 + imul 8(%rsi), %r11 + add %r11, %r9 + mov %r10, 8(%rdi) + mov 16(%r8), %r10 + mov (%rsi), %rax + imul %rax, %r10 + add %r10, %r9 + mov %r9, 16(%rdi) + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/nand_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/nand_n.s new file mode 100644 index 0000000..79898b8 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/nand_n.s @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_nand_n + + +___gmpn_nand_n: + + + mov (%rdx), %r8 + mov %ecx, %eax + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: and (%rsi), %r8 + not %r8 + mov %r8, (%rdi) + inc %rcx + lea -8(%rsi), %rsi + lea -8(%rdx), %rdx + lea -8(%rdi), %rdi + jmp Le11 +Lb10: add $2, %rcx + lea -16(%rsi), %rsi + lea -16(%rdx), %rdx + lea -16(%rdi), %rdi + jmp Le10 +Lb01: and (%rsi), %r8 + not %r8 + mov %r8, (%rdi) + dec %rcx + jz Lret + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + + .align 4, 0x90 +Ltop: mov (%rdx), %r8 +Lb00: mov 8(%rdx), %r9 + and (%rsi), %r8 + not %r8 + and 8(%rsi), %r9 + not %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) +Le11: mov 16(%rdx), %r8 +Le10: mov 24(%rdx), %r9 + lea 32(%rdx), %rdx + and 16(%rsi), %r8 + not %r8 + and 24(%rsi), %r9 + lea 32(%rsi), %rsi + not %r9 + mov %r8, 16(%rdi) + mov %r9, 24(%rdi) + lea 32(%rdi), %rdi + sub $4, %rcx + jnz Ltop + +Lret: + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/nior_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/nior_n.s new file mode 100644 index 0000000..b8d0008 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/nior_n.s @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_nior_n + + +___gmpn_nior_n: + + + mov (%rdx), %r8 + mov %ecx, %eax + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: or (%rsi), %r8 + not %r8 + mov %r8, (%rdi) + inc %rcx + lea -8(%rsi), %rsi + lea -8(%rdx), %rdx + lea -8(%rdi), %rdi + jmp Le11 +Lb10: add $2, %rcx + lea -16(%rsi), %rsi + lea -16(%rdx), %rdx + lea -16(%rdi), %rdi + jmp Le10 +Lb01: or (%rsi), %r8 + not %r8 + mov %r8, (%rdi) + dec %rcx + jz Lret + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + + .align 4, 0x90 +Ltop: mov (%rdx), %r8 +Lb00: mov 8(%rdx), %r9 + or (%rsi), %r8 + not %r8 + or 8(%rsi), %r9 + not %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) +Le11: mov 16(%rdx), %r8 +Le10: mov 24(%rdx), %r9 + lea 32(%rdx), %rdx + or 16(%rsi), %r8 + not %r8 + or 24(%rsi), %r9 + lea 32(%rsi), %rsi + not %r9 + mov %r8, 16(%rdi) + mov %r9, 24(%rdi) + lea 32(%rdi), %rdi + sub $4, %rcx + jnz Ltop + +Lret: + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/perfsqr.h b/vere/ext/gmp/gen/x86_64-macos/mpn/perfsqr.h new file mode 100644 index 0000000..80c5eb7 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/perfsqr.h @@ -0,0 +1,46 @@ +/* This file generated by gen-psqr.c - DO NOT EDIT. */ + +#if GMP_LIMB_BITS != 64 || GMP_NAIL_BITS != 0 +Error, error, this data is for 64 bit limb and 0 bit nail +#endif + +/* Non-zero bit indicates a quadratic residue mod 0x100. + This test identifies 82.81% as non-squares (212/256). */ +static const mp_limb_t +sq_res_0x100[4] = { + CNST_LIMB(0x202021202030213), + CNST_LIMB(0x202021202020213), + CNST_LIMB(0x202021202030212), + CNST_LIMB(0x202021202020212), +}; + +/* 2^48-1 = 3^2 * 5 * 7 * 13 * 17 * 97 ... */ +#define PERFSQR_MOD_BITS 49 + +/* This test identifies 97.81% as non-squares. */ +#define PERFSQR_MOD_TEST(up, usize) \ + do { \ + mp_limb_t r; \ + PERFSQR_MOD_34 (r, up, usize); \ + \ + /* 69.23% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(91), CNST_LIMB(0xfd2fd2fd2fd3), \ + CNST_LIMB(0x2191240), CNST_LIMB(0x8850a206953820e1)); \ + \ + /* 68.24% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(85), CNST_LIMB(0xfcfcfcfcfcfd), \ + CNST_LIMB(0x82158), CNST_LIMB(0x10b48c4b4206a105)); \ + \ + /* 55.56% */ \ + PERFSQR_MOD_1 (r, CNST_LIMB( 9), CNST_LIMB(0xe38e38e38e39), \ + CNST_LIMB(0x93)); \ + \ + /* 49.48% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(97), CNST_LIMB(0xfd5c5f02a3a1), \ + CNST_LIMB(0x1eb628b47), CNST_LIMB(0x6067981b8b451b5f)); \ + } while (0) + +/* Grand total sq_res_0x100 and PERFSQR_MOD_TEST, 99.62% non-squares. */ + +/* helper for tests/mpz/t-perfsqr.c */ +#define PERFSQR_DIVISORS { 256, 91, 85, 9, 97, } diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/popcount.s b/vere/ext/gmp/gen/x86_64-macos/mpn/popcount.s new file mode 100644 index 0000000..c7695bb --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/popcount.s @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_popcount + + +___gmpn_popcount: + + + + mov %esi, %r8d + and $7, %r8d + + .byte 0xf3,0x48,0x0f,0xb8,0x07 + xor %ecx, %ecx + + lea Ltab(%rip), %r9 + + movslq (%r9,%r8,4), %r8 + add %r9, %r8 + jmp *%r8 + + +L3: .byte 0xf3,0x4c,0x0f,0xb8,0x57,0x08 + .byte 0xf3,0x4c,0x0f,0xb8,0x5f,0x10 + add $24, %rdi + sub $8, %rsi + jg Le34 + add %r10, %rax + add %r11, %rax +Ls1: + ret + +L1: sub $8, %rsi + jle Ls1 + .byte 0xf3,0x4c,0x0f,0xb8,0x47,0x08 + .byte 0xf3,0x4c,0x0f,0xb8,0x4f,0x10 + add $8, %rdi + jmp Le12 + +L7: .byte 0xf3,0x4c,0x0f,0xb8,0x57,0x08 + .byte 0xf3,0x4c,0x0f,0xb8,0x5f,0x10 + add $-8, %rdi + jmp Le07 + +L0: .byte 0xf3,0x48,0x0f,0xb8,0x4f,0x08 + .byte 0xf3,0x4c,0x0f,0xb8,0x57,0x10 + .byte 0xf3,0x4c,0x0f,0xb8,0x5f,0x18 + jmp Le07 + +L4: .byte 0xf3,0x48,0x0f,0xb8,0x4f,0x08 + .byte 0xf3,0x4c,0x0f,0xb8,0x57,0x10 + .byte 0xf3,0x4c,0x0f,0xb8,0x5f,0x18 + add $32, %rdi + sub $8, %rsi + jle Lx4 + + .align 4, 0x90 +Ltop: +Le34: .byte 0xf3,0x4c,0x0f,0xb8,0x07 + .byte 0xf3,0x4c,0x0f,0xb8,0x4f,0x08 + add %r10, %rcx + add %r11, %rax +Le12: .byte 0xf3,0x4c,0x0f,0xb8,0x57,0x10 + .byte 0xf3,0x4c,0x0f,0xb8,0x5f,0x18 + add %r8, %rcx + add %r9, %rax +Le07: .byte 0xf3,0x4c,0x0f,0xb8,0x47,0x20 + .byte 0xf3,0x4c,0x0f,0xb8,0x4f,0x28 + add %r10, %rcx + add %r11, %rax +Le56: .byte 0xf3,0x4c,0x0f,0xb8,0x57,0x30 + .byte 0xf3,0x4c,0x0f,0xb8,0x5f,0x38 + add $64, %rdi + add %r8, %rcx + add %r9, %rax + sub $8, %rsi + jg Ltop + +Lx4: add %r10, %rcx + add %r11, %rax +Lx2: add %rcx, %rax + + + ret + +L2: .byte 0xf3,0x48,0x0f,0xb8,0x4f,0x08 + sub $8, %rsi + jle Lx2 + .byte 0xf3,0x4c,0x0f,0xb8,0x47,0x10 + .byte 0xf3,0x4c,0x0f,0xb8,0x4f,0x18 + add $16, %rdi + jmp Le12 + +L5: .byte 0xf3,0x4c,0x0f,0xb8,0x47,0x08 + .byte 0xf3,0x4c,0x0f,0xb8,0x4f,0x10 + add $-24, %rdi + jmp Le56 + +L6: .byte 0xf3,0x48,0x0f,0xb8,0x4f,0x08 + .byte 0xf3,0x4c,0x0f,0xb8,0x47,0x10 + .byte 0xf3,0x4c,0x0f,0xb8,0x4f,0x18 + add $-16, %rdi + jmp Le56 + + .text + .align 3, 0x90 +Ltab: .set L0_tmp, L0-Ltab + .long L0_tmp + + .set L1_tmp, L1-Ltab + .long L1_tmp + + .set L2_tmp, L2-Ltab + .long L2_tmp + + .set L3_tmp, L3-Ltab + .long L3_tmp + + .set L4_tmp, L4-Ltab + .long L4_tmp + + .set L5_tmp, L5-Ltab + .long L5_tmp + + .set L6_tmp, L6-Ltab + .long L6_tmp + + .set L7_tmp, L7-Ltab + .long L7_tmp + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/redc_1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/redc_1.s new file mode 100644 index 0000000..55ef11f --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/redc_1.s @@ -0,0 +1,446 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_redc_1 + + +___gmpn_redc_1: + + + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + push %rdi + mov %rdx, %rdi + mov (%rsi), %rdx + + neg %rcx + push %r8 + imul %r8, %rdx + mov %rcx, %r15 + + test $1, %cl + jnz Lbx1 + +Lbx0: test $2, %cl + jz Lo0b + + cmp $-2, %ecx + jnz Lo2 + + + mov 8(%rsp), %rbx + lea 16(%rsp), %rsp + .byte 0xc4,98,179,0xf6,39 + .byte 0xc4,98,163,0xf6,87,8 + add %r12, %r11 + adc $0, %r10 + add (%rsi), %r9 + adc 8(%rsi), %r11 + adc $0, %r10 + mov %r11, %rdx + imul %r8, %rdx + .byte 0xc4,98,147,0xf6,39 + .byte 0xc4,98,139,0xf6,127,8 + xor %eax, %eax + add %r12, %r14 + adc $0, %r15 + add %r11, %r13 + adc 16(%rsi), %r14 + adc $0, %r15 + add %r14, %r10 + adc 24(%rsi), %r15 + mov %r10, (%rbx) + mov %r15, 8(%rbx) + setc %al + jmp Lret + +Lo2: lea 2(%rcx), %r14 + .byte 0xc4,98,179,0xf6,7 + .byte 0xc4,98,163,0xf6,87,8 + sar $2, %r14 + add %r8, %r11 + jmp Llo2 + + .align 4, 0x90 +Ltp2: adc %rax, %r9 + lea 32(%rsi), %rsi + adc %r8, %r11 +Llo2: .byte 0xc4,98,147,0xf6,103,16 + mov (%rsi), %r8 + .byte 0xc4,226,227,0xf6,71,24 + lea 32(%rdi), %rdi + adc %r10, %r13 + adc %r12, %rbx + adc $0, %rax + mov 8(%rsi), %r10 + mov 16(%rsi), %r12 + add %r9, %r8 + mov 24(%rsi), %rbp + mov %r8, (%rsi) + adc %r11, %r10 + .byte 0xc4,98,179,0xf6,7 + mov %r10, 8(%rsi) + adc %r13, %r12 + mov %r12, 16(%rsi) + adc %rbx, %rbp + .byte 0xc4,98,163,0xf6,87,8 + mov %rbp, 24(%rsi) + inc %r14 + jnz Ltp2 + +Led2: mov 56(%rsi,%rcx,8), %rdx + lea 16(%rdi,%rcx,8), %rdi + adc %rax, %r9 + adc %r8, %r11 + mov 32(%rsi), %r8 + adc $0, %r10 + imul (%rsp), %rdx + mov 40(%rsi), %rax + add %r9, %r8 + mov %r8, 32(%rsi) + adc %r11, %rax + mov %rax, 40(%rsi) + lea 56(%rsi,%rcx,8), %rsi + adc $0, %r10 + mov %r10, -8(%rsi) + inc %r15 + jnz Lo2 + + jmp Lcj + + +Lbx1: test $2, %cl + jz Lo3a + +Lo1a: cmp $-1, %ecx + jnz Lo1b + + + mov 8(%rsp), %rbx + lea 16(%rsp), %rsp + .byte 0xc4,98,163,0xf6,23 + add (%rsi), %r11 + adc 8(%rsi), %r10 + mov %r10, (%rbx) + mov $0, %eax + setc %al + jmp Lret + +Lo1b: lea 24(%rdi), %rdi +Lo1: lea 1(%rcx), %r14 + .byte 0xc4,98,163,0xf6,87,232 + .byte 0xc4,98,147,0xf6,103,240 + .byte 0xc4,226,227,0xf6,71,248 + sar $2, %r14 + add %r10, %r13 + adc %r12, %rbx + adc $0, %rax + mov (%rsi), %r10 + mov 8(%rsi), %r12 + mov 16(%rsi), %rbp + add %r11, %r10 + jmp Llo1 + + .align 4, 0x90 +Ltp1: adc %rax, %r9 + lea 32(%rsi), %rsi + adc %r8, %r11 + .byte 0xc4,98,147,0xf6,103,16 + mov -8(%rsi), %r8 + .byte 0xc4,226,227,0xf6,71,24 + lea 32(%rdi), %rdi + adc %r10, %r13 + adc %r12, %rbx + adc $0, %rax + mov (%rsi), %r10 + mov 8(%rsi), %r12 + add %r9, %r8 + mov 16(%rsi), %rbp + mov %r8, -8(%rsi) + adc %r11, %r10 +Llo1: .byte 0xc4,98,179,0xf6,7 + mov %r10, (%rsi) + adc %r13, %r12 + mov %r12, 8(%rsi) + adc %rbx, %rbp + .byte 0xc4,98,163,0xf6,87,8 + mov %rbp, 16(%rsi) + inc %r14 + jnz Ltp1 + +Led1: mov 48(%rsi,%rcx,8), %rdx + lea 40(%rdi,%rcx,8), %rdi + adc %rax, %r9 + adc %r8, %r11 + mov 24(%rsi), %r8 + adc $0, %r10 + imul (%rsp), %rdx + mov 32(%rsi), %rax + add %r9, %r8 + mov %r8, 24(%rsi) + adc %r11, %rax + mov %rax, 32(%rsi) + lea 48(%rsi,%rcx,8), %rsi + adc $0, %r10 + mov %r10, -8(%rsi) + inc %r15 + jnz Lo1 + + jmp Lcj + +Lo3a: cmp $-3, %ecx + jnz Lo3b + + +Ln3: .byte 0xc4,226,227,0xf6,7 + .byte 0xc4,98,179,0xf6,119,8 + add (%rsi), %rbx + .byte 0xc4,98,163,0xf6,87,16 + adc %rax, %r9 + adc %r14, %r11 + mov 8(%rsi), %r14 + mov %r8, %rdx + adc $0, %r10 + mov 16(%rsi), %rax + add %r9, %r14 + mov %r14, 8(%rsi) + .byte 0xc4,66,235,0xf6,238 + adc %r11, %rax + mov %rax, 16(%rsi) + adc $0, %r10 + mov %r10, (%rsi) + lea 8(%rsi), %rsi + inc %r15 + jnz Ln3 + + jmp Lcj + +Lo3b: lea 8(%rdi), %rdi +Lo3: lea 4(%rcx), %r14 + .byte 0xc4,226,227,0xf6,71,248 + .byte 0xc4,98,179,0xf6,7 + mov (%rsi), %rbp + .byte 0xc4,98,163,0xf6,87,8 + sar $2, %r14 + add %rbx, %rbp + nop + adc %rax, %r9 + jmp Llo3 + + .align 4, 0x90 +Ltp3: adc %rax, %r9 + lea 32(%rsi), %rsi +Llo3: adc %r8, %r11 + .byte 0xc4,98,147,0xf6,103,16 + mov 8(%rsi), %r8 + .byte 0xc4,226,227,0xf6,71,24 + lea 32(%rdi), %rdi + adc %r10, %r13 + adc %r12, %rbx + adc $0, %rax + mov 16(%rsi), %r10 + mov 24(%rsi), %r12 + add %r9, %r8 + mov 32(%rsi), %rbp + mov %r8, 8(%rsi) + adc %r11, %r10 + .byte 0xc4,98,179,0xf6,7 + mov %r10, 16(%rsi) + adc %r13, %r12 + mov %r12, 24(%rsi) + adc %rbx, %rbp + .byte 0xc4,98,163,0xf6,87,8 + mov %rbp, 32(%rsi) + inc %r14 + jnz Ltp3 + +Led3: mov 64(%rsi,%rcx,8), %rdx + lea 24(%rdi,%rcx,8), %rdi + adc %rax, %r9 + adc %r8, %r11 + mov 40(%rsi), %r8 + adc $0, %r10 + imul (%rsp), %rdx + mov 48(%rsi), %rax + add %r9, %r8 + mov %r8, 40(%rsi) + adc %r11, %rax + mov %rax, 48(%rsi) + lea 64(%rsi,%rcx,8), %rsi + adc $0, %r10 + mov %r10, -8(%rsi) + inc %r15 + jnz Lo3 + + jmp Lcj + +Lo0b: lea 16(%rdi), %rdi +Lo0: mov %rcx, %r14 + .byte 0xc4,98,147,0xf6,103,240 + .byte 0xc4,226,227,0xf6,71,248 + sar $2, %r14 + add %r12, %rbx + adc $0, %rax + mov (%rsi), %r12 + mov 8(%rsi), %rbp + .byte 0xc4,98,179,0xf6,7 + add %r13, %r12 + jmp Llo0 + + .align 4, 0x90 +Ltp0: adc %rax, %r9 + lea 32(%rsi), %rsi + adc %r8, %r11 + .byte 0xc4,98,147,0xf6,103,16 + mov -16(%rsi), %r8 + .byte 0xc4,226,227,0xf6,71,24 + lea 32(%rdi), %rdi + adc %r10, %r13 + adc %r12, %rbx + adc $0, %rax + mov -8(%rsi), %r10 + mov (%rsi), %r12 + add %r9, %r8 + mov 8(%rsi), %rbp + mov %r8, -16(%rsi) + adc %r11, %r10 + .byte 0xc4,98,179,0xf6,7 + mov %r10, -8(%rsi) + adc %r13, %r12 + mov %r12, (%rsi) +Llo0: adc %rbx, %rbp + .byte 0xc4,98,163,0xf6,87,8 + mov %rbp, 8(%rsi) + inc %r14 + jnz Ltp0 + +Led0: mov 40(%rsi,%rcx,8), %rdx + lea 32(%rdi,%rcx,8), %rdi + adc %rax, %r9 + adc %r8, %r11 + mov 16(%rsi), %r8 + adc $0, %r10 + imul (%rsp), %rdx + mov 24(%rsi), %rax + add %r9, %r8 + mov %r8, 16(%rsi) + adc %r11, %rax + mov %rax, 24(%rsi) + lea 40(%rsi,%rcx,8), %rsi + adc $0, %r10 + mov %r10, -8(%rsi) + inc %r15 + jnz Lo0 + +Lcj: + mov 8(%rsp), %rdi + lea 16-8(%rsp), %rsp + lea (%rsi,%rcx,8), %rdx + neg %ecx + + + + + call ___gmpn_add_n + + lea 8(%rsp), %rsp + + +Lret: pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh1_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh1_n.s new file mode 100644 index 0000000..824e7af --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh1_n.s @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_rsblsh1_nc + + +___gmpn_rsblsh1_nc: + + + + push %rbp + mov %r8, %rax + neg %rax + xor %ebp, %ebp + mov (%rdx), %r8 + shrd $63, %r8, %rbp + mov %ecx, %r9d + and $3, %r9d + je Lb00 + cmp $2, %r9d + jc Lb01 + je Lb10 + jmp Lb11 + + + .align 4, 0x90 + .globl ___gmpn_rsblsh1_n + + +___gmpn_rsblsh1_n: + + + push %rbp + xor %ebp, %ebp + mov (%rdx), %r8 + shrd $63, %r8, %rbp + mov %ecx, %eax + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: mov 8(%rdx), %r9 + shrd $63, %r9, %r8 + mov 16(%rdx), %r10 + shrd $63, %r10, %r9 + add %eax, %eax + sbb (%rsi), %rbp + sbb 8(%rsi), %r8 + sbb 16(%rsi), %r9 + mov %rbp, (%rdi) + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) + mov %r10, %rbp + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea 24(%rdi), %rdi + sbb %eax, %eax + sub $3, %rcx + ja Ltop + jmp Lend + +Lb01: add %eax, %eax + sbb (%rsi), %rbp + mov %rbp, (%rdi) + mov %r8, %rbp + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + sbb %eax, %eax + sub $1, %rcx + ja Ltop + jmp Lend + +Lb10: mov 8(%rdx), %r9 + shrd $63, %r9, %r8 + add %eax, %eax + sbb (%rsi), %rbp + sbb 8(%rsi), %r8 + mov %rbp, (%rdi) + mov %r8, 8(%rdi) + mov %r9, %rbp + lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea 16(%rdi), %rdi + sbb %eax, %eax + sub $2, %rcx + ja Ltop + jmp Lend + + .align 4, 0x90 +Ltop: mov (%rdx), %r8 + shrd $63, %r8, %rbp +Lb00: mov 8(%rdx), %r9 + shrd $63, %r9, %r8 + mov 16(%rdx), %r10 + shrd $63, %r10, %r9 + mov 24(%rdx), %r11 + shrd $63, %r11, %r10 + lea 32(%rdx), %rdx + add %eax, %eax + sbb (%rsi), %rbp + sbb 8(%rsi), %r8 + sbb 16(%rsi), %r9 + sbb 24(%rsi), %r10 + lea 32(%rsi), %rsi + mov %rbp, (%rdi) + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) + mov %r10, 24(%rdi) + mov %r11, %rbp + lea 32(%rdi), %rdi + sbb %eax, %eax + sub $4, %rcx + jnz Ltop + +Lend: shr $63, %rbp + add %eax, %eax + sbb $0, %rbp + mov %rbp, %rax + pop %rbp + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh2_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh2_n.s new file mode 100644 index 0000000..77e0be2 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh2_n.s @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_rsblsh2_nc + + +___gmpn_rsblsh2_nc: + + + + push %rbp + mov %r8, %rax + neg %rax + xor %ebp, %ebp + mov (%rdx), %r8 + shrd $62, %r8, %rbp + mov %ecx, %r9d + and $3, %r9d + je Lb00 + cmp $2, %r9d + jc Lb01 + je Lb10 + jmp Lb11 + + + .align 4, 0x90 + .globl ___gmpn_rsblsh2_n + + +___gmpn_rsblsh2_n: + + + push %rbp + xor %ebp, %ebp + mov (%rdx), %r8 + shrd $62, %r8, %rbp + mov %ecx, %eax + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: mov 8(%rdx), %r9 + shrd $62, %r9, %r8 + mov 16(%rdx), %r10 + shrd $62, %r10, %r9 + add %eax, %eax + sbb (%rsi), %rbp + sbb 8(%rsi), %r8 + sbb 16(%rsi), %r9 + mov %rbp, (%rdi) + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) + mov %r10, %rbp + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea 24(%rdi), %rdi + sbb %eax, %eax + sub $3, %rcx + ja Ltop + jmp Lend + +Lb01: add %eax, %eax + sbb (%rsi), %rbp + mov %rbp, (%rdi) + mov %r8, %rbp + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + sbb %eax, %eax + sub $1, %rcx + ja Ltop + jmp Lend + +Lb10: mov 8(%rdx), %r9 + shrd $62, %r9, %r8 + add %eax, %eax + sbb (%rsi), %rbp + sbb 8(%rsi), %r8 + mov %rbp, (%rdi) + mov %r8, 8(%rdi) + mov %r9, %rbp + lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea 16(%rdi), %rdi + sbb %eax, %eax + sub $2, %rcx + ja Ltop + jmp Lend + + .align 4, 0x90 +Ltop: mov (%rdx), %r8 + shrd $62, %r8, %rbp +Lb00: mov 8(%rdx), %r9 + shrd $62, %r9, %r8 + mov 16(%rdx), %r10 + shrd $62, %r10, %r9 + mov 24(%rdx), %r11 + shrd $62, %r11, %r10 + lea 32(%rdx), %rdx + add %eax, %eax + sbb (%rsi), %rbp + sbb 8(%rsi), %r8 + sbb 16(%rsi), %r9 + sbb 24(%rsi), %r10 + lea 32(%rsi), %rsi + mov %rbp, (%rdi) + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) + mov %r10, 24(%rdi) + mov %r11, %rbp + lea 32(%rdi), %rdi + sbb %eax, %eax + sub $4, %rcx + jnz Ltop + +Lend: shr $62, %rbp + add %eax, %eax + sbb $0, %rbp + mov %rbp, %rax + pop %rbp + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh_n.s new file mode 100644 index 0000000..329c600 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/rsblsh_n.s @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_rsblsh_n + + +___gmpn_rsblsh_n: + + + + + mov (%rdx), %r10 + + mov %ecx, %eax + shr $3, %rcx + xor %r9d, %r9d + sub %r8, %r9 + and $7, %eax + + lea Ltab(%rip), %r11 + + movslq (%r11,%rax,4), %rax + add %r11, %rax + jmp *%rax + + +L0: lea 32(%rsi), %rsi + lea 32(%rdx), %rdx + lea 32(%rdi), %rdi + xor %r11d, %r11d + jmp Le0 + +L7: mov %r10, %r11 + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea 24(%rdi), %rdi + xor %r10d, %r10d + jmp Le7 + +L6: lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea 16(%rdi), %rdi + xor %r11d, %r11d + jmp Le6 + +L5: mov %r10, %r11 + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + xor %r10d, %r10d + jmp Le5 + +Lend: sbb 24(%rsi), %rax + mov %rax, -40(%rdi) + .byte 0xc4,194,179,0xf7,195 + sbb %rcx, %rax + + ret + + .align 5, 0x90 +Ltop: jrcxz Lend + mov -32(%rdx), %r10 + sbb 24(%rsi), %rax + lea 64(%rsi), %rsi + .byte 0xc4,66,179,0xf7,219 + mov %rax, -40(%rdi) +Le0: dec %rcx + .byte 0xc4,194,185,0xf7,194 + lea (%r11,%rax), %rax + mov -24(%rdx), %r11 + sbb -32(%rsi), %rax + .byte 0xc4,66,179,0xf7,210 + mov %rax, -32(%rdi) +Le7: .byte 0xc4,194,185,0xf7,195 + lea (%r10,%rax), %rax + mov -16(%rdx), %r10 + sbb -24(%rsi), %rax + .byte 0xc4,66,179,0xf7,219 + mov %rax, -24(%rdi) +Le6: .byte 0xc4,194,185,0xf7,194 + lea (%r11,%rax), %rax + mov -8(%rdx), %r11 + sbb -16(%rsi), %rax + .byte 0xc4,66,179,0xf7,210 + mov %rax, -16(%rdi) +Le5: .byte 0xc4,194,185,0xf7,195 + lea (%r10,%rax), %rax + mov (%rdx), %r10 + sbb -8(%rsi), %rax + .byte 0xc4,66,179,0xf7,219 + mov %rax, -8(%rdi) +Le4: .byte 0xc4,194,185,0xf7,194 + lea (%r11,%rax), %rax + mov 8(%rdx), %r11 + sbb (%rsi), %rax + .byte 0xc4,66,179,0xf7,210 + mov %rax, (%rdi) +Le3: .byte 0xc4,194,185,0xf7,195 + lea (%r10,%rax), %rax + mov 16(%rdx), %r10 + sbb 8(%rsi), %rax + .byte 0xc4,66,179,0xf7,219 + mov %rax, 8(%rdi) +Le2: .byte 0xc4,194,185,0xf7,194 + lea (%r11,%rax), %rax + mov 24(%rdx), %r11 + sbb 16(%rsi), %rax + lea 64(%rdx), %rdx + .byte 0xc4,66,179,0xf7,210 + mov %rax, 16(%rdi) + lea 64(%rdi), %rdi +Le1: .byte 0xc4,194,185,0xf7,195 + lea (%r10,%rax), %rax + jmp Ltop + +L4: xor %r11d, %r11d + jmp Le4 + +L3: mov %r10, %r11 + lea -8(%rsi), %rsi + lea -8(%rdx), %rdx + lea -8(%rdi), %rdi + xor %r10d, %r10d + jmp Le3 + +L2: lea -16(%rsi), %rsi + lea -16(%rdx), %rdx + lea -16(%rdi), %rdi + xor %r11d, %r11d + jmp Le2 + +L1: mov %r10, %r11 + lea -24(%rsi), %rsi + lea 40(%rdx), %rdx + lea 40(%rdi), %rdi + xor %r10d, %r10d + jmp Le1 + + .text + .align 3, 0x90 +Ltab: .set L0_tmp, L0-Ltab + .long L0_tmp + + .set L1_tmp, L1-Ltab + .long L1_tmp + + .set L2_tmp, L2-Ltab + .long L2_tmp + + .set L3_tmp, L3-Ltab + .long L3_tmp + + .set L4_tmp, L4-Ltab + .long L4_tmp + + .set L5_tmp, L5-Ltab + .long L5_tmp + + .set L6_tmp, L6-Ltab + .long L6_tmp + + .set L7_tmp, L7-Ltab + .long L7_tmp + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/rsh1add_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/rsh1add_n.s new file mode 100644 index 0000000..96749ec --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/rsh1add_n.s @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + + .align 4, 0x90 + .globl ___gmpn_rsh1add_nc + + +___gmpn_rsh1add_nc: + + + + push %rbx + push %rbp + + neg %r8 + mov (%rsi), %rbp + adc (%rdx), %rbp + + jmp Lent + + + .align 4, 0x90 + .globl ___gmpn_rsh1add_n + + +___gmpn_rsh1add_n: + + + push %rbx + push %rbp + + mov (%rsi), %rbp + add (%rdx), %rbp +Lent: + sbb %ebx, %ebx + mov %ebp, %eax + and $1, %eax + + mov %ecx, %r11d + and $3, %r11d + + cmp $1, %r11d + je Ldo + +Ln1: cmp $2, %r11d + jne Ln2 + add %ebx, %ebx + mov 8(%rsi), %r10 + adc 8(%rdx), %r10 + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + sbb %ebx, %ebx + + shrd $1, %r10, %rbp + mov %rbp, -8(%rdi) + jmp Lcj1 + +Ln2: cmp $3, %r11d + jne Ln3 + add %ebx, %ebx + mov 8(%rsi), %r9 + mov 16(%rsi), %r10 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea 16(%rdi), %rdi + sbb %ebx, %ebx + + shrd $1, %r9, %rbp + mov %rbp, -16(%rdi) + jmp Lcj2 + +Ln3: dec %rcx + add %ebx, %ebx + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + adc 8(%rdx), %r8 + adc 16(%rdx), %r9 + mov 24(%rsi), %r10 + adc 24(%rdx), %r10 + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea 24(%rdi), %rdi + sbb %ebx, %ebx + + shrd $1, %r8, %rbp + mov %rbp, -24(%rdi) + shrd $1, %r9, %r8 + mov %r8, -16(%rdi) +Lcj2: shrd $1, %r10, %r9 + mov %r9, -8(%rdi) +Lcj1: mov %r10, %rbp + +Ldo: + shr $2, %rcx + je Lend + .align 4, 0x90 +Ltop: add %ebx, %ebx + + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + adc 8(%rdx), %r8 + adc 16(%rdx), %r9 + mov 24(%rsi), %r10 + mov 32(%rsi), %r11 + adc 24(%rdx), %r10 + adc 32(%rdx), %r11 + + lea 32(%rsi), %rsi + lea 32(%rdx), %rdx + + sbb %ebx, %ebx + + shrd $1, %r8, %rbp + mov %rbp, (%rdi) + shrd $1, %r9, %r8 + mov %r8, 8(%rdi) + shrd $1, %r10, %r9 + mov %r9, 16(%rdi) + shrd $1, %r11, %r10 + mov %r10, 24(%rdi) + + dec %rcx + mov %r11, %rbp + lea 32(%rdi), %rdi + jne Ltop + +Lend: shrd $1, %rbx, %rbp + mov %rbp, (%rdi) + pop %rbp + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/rsh1sub_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/rsh1sub_n.s new file mode 100644 index 0000000..ca201b3 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/rsh1sub_n.s @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + + .align 4, 0x90 + .globl ___gmpn_rsh1sub_nc + + +___gmpn_rsh1sub_nc: + + + + push %rbx + push %rbp + + neg %r8 + mov (%rsi), %rbp + sbb (%rdx), %rbp + + jmp Lent + + + .align 4, 0x90 + .globl ___gmpn_rsh1sub_n + + +___gmpn_rsh1sub_n: + + + push %rbx + push %rbp + + mov (%rsi), %rbp + sub (%rdx), %rbp +Lent: + sbb %ebx, %ebx + mov %ebp, %eax + and $1, %eax + + mov %ecx, %r11d + and $3, %r11d + + cmp $1, %r11d + je Ldo + +Ln1: cmp $2, %r11d + jne Ln2 + add %ebx, %ebx + mov 8(%rsi), %r10 + sbb 8(%rdx), %r10 + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + sbb %ebx, %ebx + + shrd $1, %r10, %rbp + mov %rbp, -8(%rdi) + jmp Lcj1 + +Ln2: cmp $3, %r11d + jne Ln3 + add %ebx, %ebx + mov 8(%rsi), %r9 + mov 16(%rsi), %r10 + sbb 8(%rdx), %r9 + sbb 16(%rdx), %r10 + lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea 16(%rdi), %rdi + sbb %ebx, %ebx + + shrd $1, %r9, %rbp + mov %rbp, -16(%rdi) + jmp Lcj2 + +Ln3: dec %rcx + add %ebx, %ebx + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + sbb 8(%rdx), %r8 + sbb 16(%rdx), %r9 + mov 24(%rsi), %r10 + sbb 24(%rdx), %r10 + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea 24(%rdi), %rdi + sbb %ebx, %ebx + + shrd $1, %r8, %rbp + mov %rbp, -24(%rdi) + shrd $1, %r9, %r8 + mov %r8, -16(%rdi) +Lcj2: shrd $1, %r10, %r9 + mov %r9, -8(%rdi) +Lcj1: mov %r10, %rbp + +Ldo: + shr $2, %rcx + je Lend + .align 4, 0x90 +Ltop: add %ebx, %ebx + + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + sbb 8(%rdx), %r8 + sbb 16(%rdx), %r9 + mov 24(%rsi), %r10 + mov 32(%rsi), %r11 + sbb 24(%rdx), %r10 + sbb 32(%rdx), %r11 + + lea 32(%rsi), %rsi + lea 32(%rdx), %rdx + + sbb %ebx, %ebx + + shrd $1, %r8, %rbp + mov %rbp, (%rdi) + shrd $1, %r9, %r8 + mov %r8, 8(%rdi) + shrd $1, %r10, %r9 + mov %r9, 16(%rdi) + shrd $1, %r11, %r10 + mov %r10, 24(%rdi) + + dec %rcx + mov %r11, %rbp + lea 32(%rdi), %rdi + jne Ltop + +Lend: shrd $1, %rbx, %rbp + mov %rbp, (%rdi) + pop %rbp + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/rshift.s b/vere/ext/gmp/gen/x86_64-macos/mpn/rshift.s new file mode 100644 index 0000000..7528e27 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/rshift.s @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 6, 0x90 + .globl ___gmpn_rshift + + +___gmpn_rshift: + + + movd %ecx, %xmm4 + mov $64, %eax + sub %ecx, %eax + movd %eax, %xmm5 + + neg %ecx + mov (%rsi), %rax + shl %cl, %rax + + cmp $3, %rdx + jle Lbc + + test $8, %dil + jz Lrp_aligned + + + movq (%rsi), %xmm0 + movq 8(%rsi), %xmm1 + psrlq %xmm4, %xmm0 + psllq %xmm5, %xmm1 + por %xmm1, %xmm0 + movq %xmm0, (%rdi) + lea 8(%rsi), %rsi + lea 8(%rdi), %rdi + dec %rdx + +Lrp_aligned: + lea 1(%rdx), %r8d + lea (%rsi,%rdx,8), %rsi + lea (%rdi,%rdx,8), %rdi + neg %rdx + + and $6, %r8d + jz Lbu0 + cmp $4, %r8d + jz Lbu4 + jc Lbu2 +Lbu6: add $4, %rdx + jmp Li56 +Lbu0: add $6, %rdx + jmp Li70 +Lbu4: add $2, %rdx + jmp Li34 +Lbu2: add $8, %rdx + jge Lend + + .align 4, 0x90 +Ltop: movdqu -64(%rsi,%rdx,8), %xmm1 + movdqu -56(%rsi,%rdx,8), %xmm0 + psllq %xmm5, %xmm0 + psrlq %xmm4, %xmm1 + por %xmm1, %xmm0 + movdqa %xmm0, -64(%rdi,%rdx,8) +Li70: + movdqu -48(%rsi,%rdx,8), %xmm1 + movdqu -40(%rsi,%rdx,8), %xmm0 + psllq %xmm5, %xmm0 + psrlq %xmm4, %xmm1 + por %xmm1, %xmm0 + movdqa %xmm0, -48(%rdi,%rdx,8) +Li56: + movdqu -32(%rsi,%rdx,8), %xmm1 + movdqu -24(%rsi,%rdx,8), %xmm0 + psllq %xmm5, %xmm0 + psrlq %xmm4, %xmm1 + por %xmm1, %xmm0 + movdqa %xmm0, -32(%rdi,%rdx,8) +Li34: + movdqu -16(%rsi,%rdx,8), %xmm1 + movdqu -8(%rsi,%rdx,8), %xmm0 + psllq %xmm5, %xmm0 + psrlq %xmm4, %xmm1 + por %xmm1, %xmm0 + movdqa %xmm0, -16(%rdi,%rdx,8) + add $8, %rdx + jl Ltop + +Lend: test $1, %dl + jnz Le1 + + movdqu -16(%rsi), %xmm1 + movq -8(%rsi), %xmm0 + psrlq %xmm4, %xmm1 + psllq %xmm5, %xmm0 + por %xmm1, %xmm0 + movdqa %xmm0, -16(%rdi) + + ret + +Le1: movq -8(%rsi), %xmm0 + psrlq %xmm4, %xmm0 + movq %xmm0, -8(%rdi) + + ret + + + .align 4, 0x90 +Lbc: dec %edx + jnz 1f + movq (%rsi), %xmm0 + psrlq %xmm4, %xmm0 + movq %xmm0, (%rdi) + + ret + +1: movq (%rsi), %xmm1 + movq 8(%rsi), %xmm0 + psrlq %xmm4, %xmm1 + psllq %xmm5, %xmm0 + por %xmm1, %xmm0 + movq %xmm0, (%rdi) + dec %edx + jnz 1f + movq 8(%rsi), %xmm0 + psrlq %xmm4, %xmm0 + movq %xmm0, 8(%rdi) + + ret + +1: movq 8(%rsi), %xmm1 + movq 16(%rsi), %xmm0 + psrlq %xmm4, %xmm1 + psllq %xmm5, %xmm0 + por %xmm1, %xmm0 + movq %xmm0, 8(%rdi) + movq 16(%rsi), %xmm0 + psrlq %xmm4, %xmm0 + movq %xmm0, 16(%rdi) + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/sec_tabselect.s b/vere/ext/gmp/gen/x86_64-macos/mpn/sec_tabselect.s new file mode 100644 index 0000000..46c87ed --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/sec_tabselect.s @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_sec_tabselect + + +___gmpn_sec_tabselect: + + + + + + + + + + + movd %r8, %xmm8 + pshufd $0, %xmm8, %xmm8 + mov $1, %eax + movd %rax, %xmm9 + pshufd $0, %xmm9, %xmm9 + + mov %rdx, %r9 + add $-8, %r9 + js Louter_end + +Louter_top: + mov %rcx, %r10 + mov %rsi, %r11 + pxor %xmm1, %xmm1 + pxor %xmm4, %xmm4 + pxor %xmm5, %xmm5 + pxor %xmm6, %xmm6 + pxor %xmm7, %xmm7 + .align 4, 0x90 +Ltop: movdqa %xmm8, %xmm0 + pcmpeqd %xmm1, %xmm0 + paddd %xmm9, %xmm1 + movdqu 0(%rsi), %xmm2 + movdqu 16(%rsi), %xmm3 + pand %xmm0, %xmm2 + pand %xmm0, %xmm3 + por %xmm2, %xmm4 + por %xmm3, %xmm5 + movdqu 32(%rsi), %xmm2 + movdqu 48(%rsi), %xmm3 + pand %xmm0, %xmm2 + pand %xmm0, %xmm3 + por %xmm2, %xmm6 + por %xmm3, %xmm7 + lea (%rsi,%rdx,8), %rsi + add $-1, %r10 + jne Ltop + + movdqu %xmm4, 0(%rdi) + movdqu %xmm5, 16(%rdi) + movdqu %xmm6, 32(%rdi) + movdqu %xmm7, 48(%rdi) + + lea 64(%r11), %rsi + lea 64(%rdi), %rdi + add $-8, %r9 + jns Louter_top +Louter_end: + + test $4, %dl + je Lb0xx +Lb1xx:mov %rcx, %r10 + mov %rsi, %r11 + pxor %xmm1, %xmm1 + pxor %xmm4, %xmm4 + pxor %xmm5, %xmm5 + .align 4, 0x90 +Ltp4: movdqa %xmm8, %xmm0 + pcmpeqd %xmm1, %xmm0 + paddd %xmm9, %xmm1 + movdqu 0(%rsi), %xmm2 + movdqu 16(%rsi), %xmm3 + pand %xmm0, %xmm2 + pand %xmm0, %xmm3 + por %xmm2, %xmm4 + por %xmm3, %xmm5 + lea (%rsi,%rdx,8), %rsi + add $-1, %r10 + jne Ltp4 + movdqu %xmm4, 0(%rdi) + movdqu %xmm5, 16(%rdi) + lea 32(%r11), %rsi + lea 32(%rdi), %rdi + +Lb0xx:test $2, %dl + je Lb00x +Lb01x:mov %rcx, %r10 + mov %rsi, %r11 + pxor %xmm1, %xmm1 + pxor %xmm4, %xmm4 + .align 4, 0x90 +Ltp2: movdqa %xmm8, %xmm0 + pcmpeqd %xmm1, %xmm0 + paddd %xmm9, %xmm1 + movdqu 0(%rsi), %xmm2 + pand %xmm0, %xmm2 + por %xmm2, %xmm4 + lea (%rsi,%rdx,8), %rsi + add $-1, %r10 + jne Ltp2 + movdqu %xmm4, 0(%rdi) + lea 16(%r11), %rsi + lea 16(%rdi), %rdi + +Lb00x:test $1, %dl + je Lb000 +Lb001:mov %rcx, %r10 + mov %rsi, %r11 + pxor %xmm1, %xmm1 + pxor %xmm4, %xmm4 + .align 4, 0x90 +Ltp1: movdqa %xmm8, %xmm0 + pcmpeqd %xmm1, %xmm0 + paddd %xmm9, %xmm1 + movq 0(%rsi), %xmm2 + pand %xmm0, %xmm2 + por %xmm2, %xmm4 + lea (%rsi,%rdx,8), %rsi + add $-1, %r10 + jne Ltp1 + movq %xmm4, 0(%rdi) + +Lb000: + + + + + + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/sqr_basecase.s b/vere/ext/gmp/gen/x86_64-macos/mpn/sqr_basecase.s new file mode 100644 index 0000000..fea3649 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/sqr_basecase.s @@ -0,0 +1,520 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_sqr_basecase + + +___gmpn_sqr_basecase: + + + + cmp $2, %rdx + jae Lgt1 + + mov (%rsi), %rdx + .byte 0xc4,226,251,0xf6,210 + mov %rax, (%rdi) + mov %rdx, 8(%rdi) + + ret + +Lgt1: jne Lgt2 + + mov (%rsi), %rdx + mov 8(%rsi), %rcx + .byte 0xc4,98,179,0xf6,209 + .byte 0xc4,98,251,0xf6,194 + mov %rcx, %rdx + .byte 0xc4,226,163,0xf6,210 + add %r9, %r9 + adc %r10, %r10 + adc $0, %rdx + add %r9, %r8 + adc %r11, %r10 + adc $0, %rdx + mov %rax, (%rdi) + mov %r8, 8(%rdi) + mov %r10, 16(%rdi) + mov %rdx, 24(%rdi) + + ret + +Lgt2: cmp $4, %rdx + jae Lgt3 + + + + + + mov (%rsi), %r8 + mov 8(%rsi), %rdx + mov %rdx, %r9 + .byte 0xc4,194,163,0xf6,192 + mov 16(%rsi), %rdx + .byte 0xc4,194,171,0xf6,200 + mov %r11, %r8 + add %rax, %r10 + adc $0, %rcx + .byte 0xc4,194,235,0xf6,193 + add %rcx, %rdx + mov %rdx, 24(%rdi) + adc $0, %rax + mov %rax, 32(%rdi) + xor %ecx, %ecx + mov (%rsi), %rdx + .byte 0xc4,98,251,0xf6,218 + mov %rax, (%rdi) + add %r8, %r8 + adc %r10, %r10 + setc %cl + mov 8(%rsi), %rdx + .byte 0xc4,226,251,0xf6,210 + add %r11, %r8 + adc %rax, %r10 + mov %r8, 8(%rdi) + mov %r10, 16(%rdi) + mov 24(%rdi), %r8 + mov 32(%rdi), %r10 + lea (%rdx,%rcx), %r11 + adc %r8, %r8 + adc %r10, %r10 + setc %cl + mov 16(%rsi), %rdx + .byte 0xc4,226,251,0xf6,210 + add %r11, %r8 + adc %rax, %r10 + mov %r8, 24(%rdi) + mov %r10, 32(%rdi) + adc %rcx, %rdx + mov %rdx, 40(%rdi) + + ret + +Lgt3: + + + + + + + + + + + + + +Ldo_mul_2: + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + mov $0, %r12d + sub %rdx, %r12 + push %r12 + mov (%rsi), %r8 + mov 8(%rsi), %rdx + lea 2(%r12), %rcx + sar $2, %rcx + inc %r12 + mov %rdx, %r9 + + test $1, %r12b + jnz Lmx1 + +Lmx0: .byte 0xc4,66,227,0xf6,216 + mov 16(%rsi), %rdx + mov %rbx, 8(%rdi) + xor %rbx, %rbx + .byte 0xc4,194,171,0xf6,232 + test $2, %r12b + jz Lm00 + +Lm10: lea -8(%rdi), %rdi + lea -8(%rsi), %rsi + jmp Lmlo2 + +Lm00: lea 8(%rsi), %rsi + lea 8(%rdi), %rdi + jmp Lmlo0 + +Lmx1: .byte 0xc4,194,171,0xf6,232 + mov 16(%rsi), %rdx + mov %r10, 8(%rdi) + xor %r10, %r10 + .byte 0xc4,66,227,0xf6,216 + test $2, %r12b + jz Lmlo3 + +Lm01: lea 16(%rdi), %rdi + lea 16(%rsi), %rsi + jmp Lmlo1 + + .align 5, 0x90 +Lmtop:.byte 0xc4,66,251,0xf6,209 + add %rax, %rbx + mov (%rsi), %rdx + .byte 0xc4,66,251,0xf6,216 + adc $0, %r10 + add %rax, %rbx +Lmlo1:adc $0, %r11 + add %rbp, %rbx + mov %rbx, (%rdi) + adc $0, %r11 + .byte 0xc4,194,251,0xf6,217 + add %rax, %r10 + mov 8(%rsi), %rdx + adc $0, %rbx + .byte 0xc4,194,251,0xf6,232 + add %rax, %r10 + adc $0, %rbp +Lmlo0:add %r11, %r10 + mov %r10, 8(%rdi) + adc $0, %rbp + .byte 0xc4,66,251,0xf6,209 + add %rax, %rbx + mov 16(%rsi), %rdx + .byte 0xc4,66,251,0xf6,216 + adc $0, %r10 + add %rax, %rbx + adc $0, %r11 +Lmlo3:add %rbp, %rbx + mov %rbx, 16(%rdi) + adc $0, %r11 + .byte 0xc4,194,251,0xf6,217 + add %rax, %r10 + mov 24(%rsi), %rdx + adc $0, %rbx + .byte 0xc4,194,251,0xf6,232 + add %rax, %r10 + adc $0, %rbp +Lmlo2:add %r11, %r10 + lea 32(%rsi), %rsi + mov %r10, 24(%rdi) + adc $0, %rbp + inc %rcx + lea 32(%rdi), %rdi + jnz Lmtop + +Lmend:.byte 0xc4,194,235,0xf6,193 + add %rdx, %rbx + adc $0, %rax + add %rbp, %rbx + mov %rbx, (%rdi) + adc $0, %rax + mov %rax, 8(%rdi) + + lea 16(%rsi), %rsi + lea -16(%rdi), %rdi + +Ldo_addmul_2: +Louter: + lea (%rsi,%r12,8), %rsi + lea 48(%rdi,%r12,8), %rdi + + mov -8(%rsi), %r8 + + add $2, %r12 + cmp $-2, %r12 + jge Lcorner + + mov (%rsi), %r9 + + lea 1(%r12), %rcx + sar $2, %rcx + + mov %r9, %rdx + test $1, %r12b + jnz Lbx1 + +Lbx0: mov (%rdi), %r13 + mov 8(%rdi), %r14 + .byte 0xc4,66,251,0xf6,216 + add %rax, %r13 + adc $0, %r11 + mov %r13, (%rdi) + xor %rbx, %rbx + test $2, %r12b + jnz Lb10 + +Lb00: mov 8(%rsi), %rdx + lea 16(%rdi), %rdi + lea 16(%rsi), %rsi + jmp Llo0 + +Lb10: mov 8(%rsi), %rdx + mov 16(%rdi), %r13 + lea 32(%rsi), %rsi + inc %rcx + .byte 0xc4,194,251,0xf6,232 + jz Lex + jmp Llo2 + +Lbx1: mov (%rdi), %r14 + mov 8(%rdi), %r13 + .byte 0xc4,194,251,0xf6,232 + mov 8(%rsi), %rdx + add %rax, %r14 + adc $0, %rbp + xor %r10, %r10 + mov %r14, (%rdi) + .byte 0xc4,66,251,0xf6,216 + test $2, %r12b + jz Lb11 + +Lb01: mov 16(%rdi), %r14 + lea 24(%rdi), %rdi + lea 24(%rsi), %rsi + jmp Llo1 + +Lb11: lea 8(%rdi), %rdi + lea 8(%rsi), %rsi + jmp Llo3 + + .align 5, 0x90 +Ltop: .byte 0xc4,194,251,0xf6,232 + add %r10, %r14 + adc $0, %rbx +Llo2: add %rax, %r14 + adc $0, %rbp + .byte 0xc4,66,251,0xf6,209 + add %rax, %r13 + adc $0, %r10 + lea 32(%rdi), %rdi + add %r11, %r14 + mov -16(%rsi), %rdx + mov %r14, -24(%rdi) + adc $0, %rbp + add %rbx, %r13 + mov -8(%rdi), %r14 + .byte 0xc4,66,251,0xf6,216 + adc $0, %r10 +Llo1: add %rax, %r13 + .byte 0xc4,194,251,0xf6,217 + adc $0, %r11 + add %rbp, %r13 + mov %r13, -16(%rdi) + adc $0, %r11 + add %rax, %r14 + adc $0, %rbx + add %r10, %r14 + mov -8(%rsi), %rdx + adc $0, %rbx +Llo0: .byte 0xc4,194,251,0xf6,232 + add %rax, %r14 + adc $0, %rbp + mov (%rdi), %r13 + .byte 0xc4,66,251,0xf6,209 + add %rax, %r13 + adc $0, %r10 + add %r11, %r14 + mov %r14, -8(%rdi) + adc $0, %rbp + mov (%rsi), %rdx + add %rbx, %r13 + .byte 0xc4,66,251,0xf6,216 + adc $0, %r10 +Llo3: add %rax, %r13 + adc $0, %r11 + .byte 0xc4,194,251,0xf6,217 + add %rbp, %r13 + mov 8(%rdi), %r14 + mov %r13, (%rdi) + mov 16(%rdi), %r13 + adc $0, %r11 + add %rax, %r14 + adc $0, %rbx + mov 8(%rsi), %rdx + lea 32(%rsi), %rsi + inc %rcx + jnz Ltop + +Lend: .byte 0xc4,194,251,0xf6,232 + add %r10, %r14 + adc $0, %rbx +Lex: add %rax, %r14 + adc $0, %rbp + .byte 0xc4,194,235,0xf6,193 + add %r11, %r14 + mov %r14, 8(%rdi) + adc $0, %rbp + add %rbx, %rdx + adc $0, %rax + add %rdx, %rbp + mov %rbp, 16(%rdi) + adc $0, %rax + mov %rax, 24(%rdi) + + jmp Louter + +Lcorner: + pop %r12 + mov (%rsi), %rdx + jg Lsmall_corner + + mov %rdx, %r9 + mov (%rdi), %r13 + mov %rax, %r14 + .byte 0xc4,66,251,0xf6,216 + add %rax, %r13 + adc $0, %r11 + mov %r13, (%rdi) + mov 8(%rsi), %rdx + .byte 0xc4,194,251,0xf6,232 + add %rax, %r14 + adc $0, %rbp + .byte 0xc4,194,235,0xf6,193 + add %r11, %r14 + mov %r14, 8(%rdi) + adc $0, %rbp + add %rbp, %rdx + mov %rdx, 16(%rdi) + adc $0, %rax + mov %rax, 24(%rdi) + lea 32(%rdi), %rdi + lea 16(%rsi), %rsi + jmp Lcom + +Lsmall_corner: + .byte 0xc4,194,139,0xf6,232 + add %rax, %r14 + adc $0, %rbp + mov %r14, (%rdi) + mov %rbp, 8(%rdi) + lea 16(%rdi), %rdi + lea 8(%rsi), %rsi + +Lcom: + +Lsqr_diag_addlsh1: + lea 8(%rsi,%r12,8), %rsi + lea (%rdi,%r12,8), %rdi + lea (%rdi,%r12,8), %rdi + inc %r12 + + mov -8(%rsi), %rdx + xor %ebx, %ebx + .byte 0xc4,98,251,0xf6,210 + mov %rax, 8(%rdi) + mov 16(%rdi), %r8 + mov 24(%rdi), %r9 + jmp Ldm + + .align 4, 0x90 +Ldtop:mov 32(%rdi), %r8 + mov 40(%rdi), %r9 + lea 16(%rdi), %rdi + lea (%rdx,%rbx), %r10 +Ldm: adc %r8, %r8 + adc %r9, %r9 + setc %bl + mov (%rsi), %rdx + lea 8(%rsi), %rsi + .byte 0xc4,226,251,0xf6,210 + add %r10, %r8 + adc %rax, %r9 + mov %r8, 16(%rdi) + mov %r9, 24(%rdi) + inc %r12 + jnz Ldtop + +Ldend:adc %rbx, %rdx + mov %rdx, 32(%rdi) + + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/sqr_diag_addlsh1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/sqr_diag_addlsh1.s new file mode 100644 index 0000000..f82bd03 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/sqr_diag_addlsh1.s @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_sqr_diag_addlsh1 + + +___gmpn_sqr_diag_addlsh1: + + + push %rbx + + dec %rcx + shl %rcx + + mov (%rdx), %rax + + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,4), %r11 + neg %rcx + + mul %rax + mov %rax, (%rdi,%rcx,8) + + xor %ebx, %ebx + jmp Lmid + + .align 4, 0x90 +Ltop: add %r10, %r8 + adc %rax, %r9 + mov %r8, -8(%rdi,%rcx,8) + mov %r9, (%rdi,%rcx,8) +Lmid: mov 8(%r11,%rcx,4), %rax + mov (%rsi,%rcx,8), %r8 + mov 8(%rsi,%rcx,8), %r9 + adc %r8, %r8 + adc %r9, %r9 + lea (%rdx,%rbx), %r10 + setc %bl + mul %rax + add $2, %rcx + js Ltop + +Lend: add %r10, %r8 + adc %rax, %r9 + mov %r8, -8(%rdi) + mov %r9, (%rdi) + adc %rbx, %rdx + mov %rdx, 8(%rdi) + + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/sub_err1_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/sub_err1_n.s new file mode 100644 index 0000000..68dcb90 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/sub_err1_n.s @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_sub_err1_n + + +___gmpn_sub_err1_n: + + mov 8(%rsp), %rax + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + lea (%rsi,%r9,8), %rsi + lea (%rdx,%r9,8), %rdx + lea (%rdi,%r9,8), %rdi + + mov %r9d, %r10d + and $3, %r10d + jz L0mod4 + cmp $2, %r10d + jc L1mod4 + jz L2mod4 +L3mod4: + xor %ebx, %ebx + xor %ebp, %ebp + xor %r10d, %r10d + xor %r11d, %r11d + lea -24(%r8,%r9,8), %r8 + neg %r9 + + shr $1, %al + mov (%rsi,%r9,8), %r14 + mov 8(%rsi,%r9,8), %r15 + sbb (%rdx,%r9,8), %r14 + mov %r14, (%rdi,%r9,8) + cmovc 16(%r8), %rbx + sbb 8(%rdx,%r9,8), %r15 + mov %r15, 8(%rdi,%r9,8) + cmovc 8(%r8), %r10 + mov 16(%rsi,%r9,8), %r14 + sbb 16(%rdx,%r9,8), %r14 + mov %r14, 16(%rdi,%r9,8) + cmovc (%r8), %r11 + setc %al + add %r10, %rbx + adc $0, %rbp + add %r11, %rbx + adc $0, %rbp + + add $3, %r9 + jnz Lloop + jmp Lend + + .align 4, 0x90 +L0mod4: + xor %ebx, %ebx + xor %ebp, %ebp + lea (%r8,%r9,8), %r8 + neg %r9 + jmp Lloop + + .align 4, 0x90 +L1mod4: + xor %ebx, %ebx + xor %ebp, %ebp + lea -8(%r8,%r9,8), %r8 + neg %r9 + + shr $1, %al + mov (%rsi,%r9,8), %r14 + sbb (%rdx,%r9,8), %r14 + mov %r14, (%rdi,%r9,8) + cmovc (%r8), %rbx + setc %al + + add $1, %r9 + jnz Lloop + jmp Lend + + .align 4, 0x90 +L2mod4: + xor %ebx, %ebx + xor %ebp, %ebp + xor %r10d, %r10d + lea -16(%r8,%r9,8), %r8 + neg %r9 + + shr $1, %al + mov (%rsi,%r9,8), %r14 + mov 8(%rsi,%r9,8), %r15 + sbb (%rdx,%r9,8), %r14 + mov %r14, (%rdi,%r9,8) + cmovc 8(%r8), %rbx + sbb 8(%rdx,%r9,8), %r15 + mov %r15, 8(%rdi,%r9,8) + cmovc (%r8), %r10 + setc %al + add %r10, %rbx + adc $0, %rbp + + add $2, %r9 + jnz Lloop + jmp Lend + + .align 5, 0x90 +Lloop: + mov (%rsi,%r9,8), %r14 + shr $1, %al + mov -8(%r8), %r10 + mov $0, %r13d + sbb (%rdx,%r9,8), %r14 + cmovnc %r13, %r10 + mov %r14, (%rdi,%r9,8) + mov 8(%rsi,%r9,8), %r15 + mov 16(%rsi,%r9,8), %r14 + sbb 8(%rdx,%r9,8), %r15 + mov -16(%r8), %r11 + cmovnc %r13, %r11 + mov -24(%r8), %r12 + mov %r15, 8(%rdi,%r9,8) + sbb 16(%rdx,%r9,8), %r14 + cmovnc %r13, %r12 + mov 24(%rsi,%r9,8), %r15 + sbb 24(%rdx,%r9,8), %r15 + cmovc -32(%r8), %r13 + setc %al + add %r10, %rbx + adc $0, %rbp + add %r11, %rbx + adc $0, %rbp + add %r12, %rbx + adc $0, %rbp + lea -32(%r8), %r8 + mov %r14, 16(%rdi,%r9,8) + add %r13, %rbx + adc $0, %rbp + add $4, %r9 + mov %r15, -8(%rdi,%r9,8) + jnz Lloop + +Lend: + mov %rbx, (%rcx) + mov %rbp, 8(%rcx) + + pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/sub_err2_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/sub_err2_n.s new file mode 100644 index 0000000..bfa02d4 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/sub_err2_n.s @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_sub_err2_n + + +___gmpn_sub_err2_n: + + mov 16(%rsp), %rax + mov 8(%rsp), %r10 + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + + xor %ebp, %ebp + xor %r11d, %r11d + xor %r12d, %r12d + xor %r13d, %r13d + + sub %r8, %r9 + + lea (%rdi,%r10,8), %rdi + lea (%rsi,%r10,8), %rsi + lea (%rdx,%r10,8), %rdx + + test $1, %r10 + jnz Lodd + + lea -8(%r8,%r10,8), %r8 + neg %r10 + jmp Ltop + + .align 4, 0x90 +Lodd: + lea -16(%r8,%r10,8), %r8 + neg %r10 + shr $1, %rax + mov (%rsi,%r10,8), %rbx + sbb (%rdx,%r10,8), %rbx + cmovc 8(%r8), %rbp + cmovc 8(%r8,%r9), %r12 + mov %rbx, (%rdi,%r10,8) + sbb %rax, %rax + inc %r10 + jz Lend + + .align 4, 0x90 +Ltop: + mov (%rsi,%r10,8), %rbx + shr $1, %rax + sbb (%rdx,%r10,8), %rbx + mov %rbx, (%rdi,%r10,8) + sbb %r14, %r14 + + mov 8(%rsi,%r10,8), %rbx + sbb 8(%rdx,%r10,8), %rbx + mov %rbx, 8(%rdi,%r10,8) + sbb %rax, %rax + + mov (%r8), %rbx + and %r14, %rbx + add %rbx, %rbp + adc $0, %r11 + + and (%r8,%r9), %r14 + add %r14, %r12 + adc $0, %r13 + + mov -8(%r8), %rbx + and %rax, %rbx + add %rbx, %rbp + adc $0, %r11 + + mov -8(%r8,%r9), %rbx + and %rax, %rbx + add %rbx, %r12 + adc $0, %r13 + + add $2, %r10 + lea -16(%r8), %r8 + jnz Ltop +Lend: + + mov %rbp, (%rcx) + mov %r11, 8(%rcx) + mov %r12, 16(%rcx) + mov %r13, 24(%rcx) + + and $1, %eax + + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/sub_err3_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/sub_err3_n.s new file mode 100644 index 0000000..fcccfe3 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/sub_err3_n.s @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_sub_err3_n + + +___gmpn_sub_err3_n: + + mov 24(%rsp), %rax + mov 16(%rsp), %r10 + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + push %rcx + mov 64(%rsp), %rcx + + xor %ebp, %ebp + xor %r11d, %r11d + xor %r12d, %r12d + xor %r13d, %r13d + xor %r14d, %r14d + xor %r15d, %r15d + + sub %r8, %r9 + sub %r8, %rcx + + lea -8(%r8,%r10,8), %r8 + lea (%rdi,%r10,8), %rdi + lea (%rsi,%r10,8), %rsi + lea (%rdx,%r10,8), %rdx + neg %r10 + + .align 4, 0x90 +Ltop: + shr $1, %rax + mov (%rsi,%r10,8), %rax + sbb (%rdx,%r10,8), %rax + mov %rax, (%rdi,%r10,8) + sbb %rax, %rax + + mov (%r8), %rbx + and %rax, %rbx + add %rbx, %rbp + adc $0, %r11 + + mov (%r8,%r9), %rbx + and %rax, %rbx + add %rbx, %r12 + adc $0, %r13 + + mov (%r8,%rcx), %rbx + and %rax, %rbx + add %rbx, %r14 + adc $0, %r15 + + lea -8(%r8), %r8 + inc %r10 + jnz Ltop + +Lend: + and $1, %eax + pop %rcx + + mov %rbp, (%rcx) + mov %r11, 8(%rcx) + mov %r12, 16(%rcx) + mov %r13, 24(%rcx) + mov %r14, 32(%rcx) + mov %r15, 40(%rcx) + + pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/sub_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/sub_n.s new file mode 100644 index 0000000..f9868bb --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/sub_n.s @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_sub_nc + + +___gmpn_sub_nc: + + + + + mov %ecx, %eax + shr $3, %rcx + and $7, %eax + + lea Ltab(%rip), %r9 + neg %r8 + + movslq (%r9,%rax,4), %rax + lea (%r9,%rax), %rax + jmp *%rax + + + + .align 4, 0x90 + .globl ___gmpn_sub_n + + +___gmpn_sub_n: + + + + mov %ecx, %eax + shr $3, %rcx + and $7, %eax + + lea Ltab(%rip), %r9 + + movslq (%r9,%rax,4), %rax + lea (%r9,%rax), %rax + jmp *%rax + + +L0: mov (%rsi), %r8 + mov 8(%rsi), %r9 + sbb (%rdx), %r8 + jmp Le0 + +L4: mov (%rsi), %r8 + mov 8(%rsi), %r9 + sbb (%rdx), %r8 + lea -32(%rsi), %rsi + lea -32(%rdx), %rdx + lea -32(%rdi), %rdi + inc %rcx + jmp Le4 + +L5: mov (%rsi), %r11 + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + sbb (%rdx), %r11 + lea -24(%rsi), %rsi + lea -24(%rdx), %rdx + lea -24(%rdi), %rdi + inc %rcx + jmp Le5 + +L6: mov (%rsi), %r10 + sbb (%rdx), %r10 + mov 8(%rsi), %r11 + lea -16(%rsi), %rsi + lea -16(%rdx), %rdx + lea -16(%rdi), %rdi + inc %rcx + jmp Le6 + +L7: mov (%rsi), %r9 + mov 8(%rsi), %r10 + sbb (%rdx), %r9 + sbb 8(%rdx), %r10 + lea -8(%rsi), %rsi + lea -8(%rdx), %rdx + lea -8(%rdi), %rdi + inc %rcx + jmp Le7 + + .align 4, 0x90 +Ltop: +Le3: mov %r9, 40(%rdi) +Le2: mov %r10, 48(%rdi) +Le1: mov (%rsi), %r8 + mov 8(%rsi), %r9 + sbb (%rdx), %r8 + mov %r11, 56(%rdi) + lea 64(%rdi), %rdi +Le0: mov 16(%rsi), %r10 + sbb 8(%rdx), %r9 + sbb 16(%rdx), %r10 + mov %r8, (%rdi) +Le7: mov 24(%rsi), %r11 + mov %r9, 8(%rdi) +Le6: mov 32(%rsi), %r8 + mov 40(%rsi), %r9 + sbb 24(%rdx), %r11 + mov %r10, 16(%rdi) +Le5: sbb 32(%rdx), %r8 + mov %r11, 24(%rdi) +Le4: mov 48(%rsi), %r10 + mov 56(%rsi), %r11 + mov %r8, 32(%rdi) + lea 64(%rsi), %rsi + sbb 40(%rdx), %r9 + sbb 48(%rdx), %r10 + sbb 56(%rdx), %r11 + lea 64(%rdx), %rdx + dec %rcx + jnz Ltop + +Lend: mov %r9, 40(%rdi) + mov %r10, 48(%rdi) + mov %r11, 56(%rdi) + mov %ecx, %eax + adc %ecx, %eax + + ret + + .align 4, 0x90 +L3: mov (%rsi), %r9 + mov 8(%rsi), %r10 + mov 16(%rsi), %r11 + sbb (%rdx), %r9 + sbb 8(%rdx), %r10 + sbb 16(%rdx), %r11 + jrcxz Lx3 + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea -40(%rdi), %rdi + jmp Le3 +Lx3: mov %r9, (%rdi) + mov %r10, 8(%rdi) + mov %r11, 16(%rdi) + mov %ecx, %eax + adc %ecx, %eax + + ret + + .align 4, 0x90 +L1: mov (%rsi), %r11 + sbb (%rdx), %r11 + jrcxz Lx1 + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea -56(%rdi), %rdi + jmp Le1 +Lx1: mov %r11, (%rdi) + mov %ecx, %eax + adc %ecx, %eax + + ret + + .align 4, 0x90 +L2: mov (%rsi), %r10 + mov 8(%rsi), %r11 + sbb (%rdx), %r10 + sbb 8(%rdx), %r11 + jrcxz Lx2 + lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea -48(%rdi), %rdi + jmp Le2 +Lx2: mov %r10, (%rdi) + mov %r11, 8(%rdi) + mov %ecx, %eax + adc %ecx, %eax + + ret + + .text + .align 3, 0x90 +Ltab: .set L0_tmp, L0-Ltab + .long L0_tmp + + .set L1_tmp, L1-Ltab + .long L1_tmp + + .set L2_tmp, L2-Ltab + .long L2_tmp + + .set L3_tmp, L3-Ltab + .long L3_tmp + + .set L4_tmp, L4-Ltab + .long L4_tmp + + .set L5_tmp, L5-Ltab + .long L5_tmp + + .set L6_tmp, L6-Ltab + .long L6_tmp + + .set L7_tmp, L7-Ltab + .long L7_tmp + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/sublsh1_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/sublsh1_n.s new file mode 100644 index 0000000..40b2b48 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/sublsh1_n.s @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3, 0x90 + .globl ___gmpn_sublsh1_n + + +___gmpn_sublsh1_n: + + + push %rbx + push %r12 + + mov %ecx, %eax + lea 24(%rsi,%rcx,8), %rsi + lea 24(%rdx,%rcx,8), %rdx + lea 24(%rdi,%rcx,8), %rdi + neg %rcx + + xor %r11d, %r11d + + mov -24(%rdx,%rcx,8), %r8 + shrd $63, %r8, %r11 + + and $3, %eax + je Lb0 + cmp $2, %eax + jc Lb1 + je Lb2 + +Lb3: mov -16(%rdx,%rcx,8), %r9 + shrd $63, %r9, %r8 + mov -8(%rdx,%rcx,8), %r10 + shrd $63, %r10, %r9 + mov -24(%rsi,%rcx,8), %r12 + sub %r11, %r12 + mov %r12, -24(%rdi,%rcx,8) + mov -16(%rsi,%rcx,8), %r12 + sbb %r8, %r12 + mov %r12, -16(%rdi,%rcx,8) + mov -8(%rsi,%rcx,8), %r12 + sbb %r9, %r12 + mov %r12, -8(%rdi,%rcx,8) + mov %r10, %r11 + sbb %eax, %eax + add $3, %rcx + js Ltop + jmp Lend + +Lb1: mov -24(%rsi,%rcx,8), %r12 + sub %r11, %r12 + mov %r12, -24(%rdi,%rcx,8) + mov %r8, %r11 + sbb %eax, %eax + inc %rcx + js Ltop + jmp Lend + +Lb2: mov -16(%rdx,%rcx,8), %r9 + shrd $63, %r9, %r8 + mov -24(%rsi,%rcx,8), %r12 + sub %r11, %r12 + mov %r12, -24(%rdi,%rcx,8) + mov -16(%rsi,%rcx,8), %r12 + sbb %r8, %r12 + mov %r12, -16(%rdi,%rcx,8) + mov %r9, %r11 + sbb %eax, %eax + add $2, %rcx + js Ltop + jmp Lend + + .align 4, 0x90 +Ltop: mov -24(%rdx,%rcx,8), %r8 + shrd $63, %r8, %r11 +Lb0: mov -16(%rdx,%rcx,8), %r9 + shrd $63, %r9, %r8 + mov -8(%rdx,%rcx,8), %r10 + shrd $63, %r10, %r9 + mov (%rdx,%rcx,8), %rbx + shrd $63, %rbx, %r10 + + add %eax, %eax + + mov -24(%rsi,%rcx,8), %r12 + sbb %r11, %r12 + mov %r12, -24(%rdi,%rcx,8) + + mov -16(%rsi,%rcx,8), %r12 + sbb %r8, %r12 + mov %r12, -16(%rdi,%rcx,8) + + mov -8(%rsi,%rcx,8), %r12 + sbb %r9, %r12 + mov %r12, -8(%rdi,%rcx,8) + + mov (%rsi,%rcx,8), %r12 + sbb %r10, %r12 + mov %r12, (%rdi,%rcx,8) + + mov %rbx, %r11 + sbb %eax, %eax + + add $4, %rcx + js Ltop + +Lend: shr $63, %r11 + pop %r12 + pop %rbx + sub %r11d, %eax + neg %eax + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/sublsh2_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/sublsh2_n.s new file mode 100644 index 0000000..8e62cfe --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/sublsh2_n.s @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 3, 0x90 + .globl ___gmpn_sublsh2_n + + +___gmpn_sublsh2_n: + + + push %rbx + push %r12 + + mov %ecx, %eax + lea 24(%rsi,%rcx,8), %rsi + lea 24(%rdx,%rcx,8), %rdx + lea 24(%rdi,%rcx,8), %rdi + neg %rcx + + xor %r11d, %r11d + + mov -24(%rdx,%rcx,8), %r8 + shrd $62, %r8, %r11 + + and $3, %eax + je Lb0 + cmp $2, %eax + jc Lb1 + je Lb2 + +Lb3: mov -16(%rdx,%rcx,8), %r9 + shrd $62, %r9, %r8 + mov -8(%rdx,%rcx,8), %r10 + shrd $62, %r10, %r9 + mov -24(%rsi,%rcx,8), %r12 + sub %r11, %r12 + mov %r12, -24(%rdi,%rcx,8) + mov -16(%rsi,%rcx,8), %r12 + sbb %r8, %r12 + mov %r12, -16(%rdi,%rcx,8) + mov -8(%rsi,%rcx,8), %r12 + sbb %r9, %r12 + mov %r12, -8(%rdi,%rcx,8) + mov %r10, %r11 + sbb %eax, %eax + add $3, %rcx + js Ltop + jmp Lend + +Lb1: mov -24(%rsi,%rcx,8), %r12 + sub %r11, %r12 + mov %r12, -24(%rdi,%rcx,8) + mov %r8, %r11 + sbb %eax, %eax + inc %rcx + js Ltop + jmp Lend + +Lb2: mov -16(%rdx,%rcx,8), %r9 + shrd $62, %r9, %r8 + mov -24(%rsi,%rcx,8), %r12 + sub %r11, %r12 + mov %r12, -24(%rdi,%rcx,8) + mov -16(%rsi,%rcx,8), %r12 + sbb %r8, %r12 + mov %r12, -16(%rdi,%rcx,8) + mov %r9, %r11 + sbb %eax, %eax + add $2, %rcx + js Ltop + jmp Lend + + .align 4, 0x90 +Ltop: mov -24(%rdx,%rcx,8), %r8 + shrd $62, %r8, %r11 +Lb0: mov -16(%rdx,%rcx,8), %r9 + shrd $62, %r9, %r8 + mov -8(%rdx,%rcx,8), %r10 + shrd $62, %r10, %r9 + mov (%rdx,%rcx,8), %rbx + shrd $62, %rbx, %r10 + + add %eax, %eax + + mov -24(%rsi,%rcx,8), %r12 + sbb %r11, %r12 + mov %r12, -24(%rdi,%rcx,8) + + mov -16(%rsi,%rcx,8), %r12 + sbb %r8, %r12 + mov %r12, -16(%rdi,%rcx,8) + + mov -8(%rsi,%rcx,8), %r12 + sbb %r9, %r12 + mov %r12, -8(%rdi,%rcx,8) + + mov (%rsi,%rcx,8), %r12 + sbb %r10, %r12 + mov %r12, (%rdi,%rcx,8) + + mov %rbx, %r11 + sbb %eax, %eax + + add $4, %rcx + js Ltop + +Lend: shr $62, %r11 + pop %r12 + pop %rbx + sub %r11d, %eax + neg %eax + + ret + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/submul_1.s b/vere/ext/gmp/gen/x86_64-macos/mpn/submul_1.s new file mode 100644 index 0000000..37fcb54 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/submul_1.s @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4, 0x90 + .globl ___gmpn_submul_1 + + +___gmpn_submul_1: + + + push %rbx + push %rbp + push %r12 + push %r13 + + mov %rdx, %rbp + mov %rcx, %rdx + + test $1, %bpl + jnz Lbx1 + +Lbx0: shr $2, %rbp + jc Lb10 + +Lb00: .byte 0xc4,98,147,0xf6,38 + .byte 0xc4,226,227,0xf6,70,8 + add %r12, %rbx + adc $0, %rax + mov (%rdi), %r12 + mov 8(%rdi), %rcx + .byte 0xc4,98,179,0xf6,70,16 + lea -16(%rdi), %rdi + lea 16(%rsi), %rsi + sub %r13, %r12 + jmp Llo0 + +Lbx1: shr $2, %rbp + jc Lb11 + +Lb01: .byte 0xc4,98,163,0xf6,22 + jnz Lgt1 +Ln1: sub %r11, (%rdi) + mov $0, %eax + adc %r10, %rax + jmp Lret + +Lgt1: .byte 0xc4,98,147,0xf6,102,8 + .byte 0xc4,226,227,0xf6,70,16 + lea 24(%rsi), %rsi + add %r10, %r13 + adc %r12, %rbx + adc $0, %rax + mov (%rdi), %r10 + mov 8(%rdi), %r12 + mov 16(%rdi), %rcx + lea -8(%rdi), %rdi + sub %r11, %r10 + jmp Llo1 + +Lb11: .byte 0xc4,226,227,0xf6,6 + mov (%rdi), %rcx + .byte 0xc4,98,179,0xf6,70,8 + lea 8(%rsi), %rsi + lea -24(%rdi), %rdi + inc %rbp + sub %rbx, %rcx + jmp Llo3 + +Lb10: .byte 0xc4,98,179,0xf6,6 + .byte 0xc4,98,163,0xf6,86,8 + lea -32(%rdi), %rdi + mov $0, %eax + clc + jz Lend + + .align 4, 0x90 +Ltop: adc %rax, %r9 + lea 32(%rdi), %rdi + adc %r8, %r11 + .byte 0xc4,98,147,0xf6,102,16 + mov (%rdi), %r8 + .byte 0xc4,226,227,0xf6,70,24 + lea 32(%rsi), %rsi + adc %r10, %r13 + adc %r12, %rbx + adc $0, %rax + mov 8(%rdi), %r10 + mov 16(%rdi), %r12 + sub %r9, %r8 + mov 24(%rdi), %rcx + mov %r8, (%rdi) + sbb %r11, %r10 +Llo1: .byte 0xc4,98,179,0xf6,6 + mov %r10, 8(%rdi) + sbb %r13, %r12 +Llo0: mov %r12, 16(%rdi) + sbb %rbx, %rcx +Llo3: .byte 0xc4,98,163,0xf6,86,8 + mov %rcx, 24(%rdi) + dec %rbp + jnz Ltop + +Lend: adc %rax, %r9 + adc %r8, %r11 + mov 32(%rdi), %r8 + mov %r10, %rax + adc $0, %rax + mov 40(%rdi), %r10 + sub %r9, %r8 + mov %r8, 32(%rdi) + sbb %r11, %r10 + mov %r10, 40(%rdi) + adc $0, %rax + +Lret: pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/xnor_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/xnor_n.s new file mode 100644 index 0000000..fb72dba --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/xnor_n.s @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_xnor_n + + +___gmpn_xnor_n: + + + mov (%rdx), %r8 + not %r8 + mov %ecx, %eax + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: xor (%rsi), %r8 + mov %r8, (%rdi) + inc %rcx + lea -8(%rsi), %rsi + lea -8(%rdx), %rdx + lea -8(%rdi), %rdi + jmp Le11 +Lb10: add $2, %rcx + lea -16(%rsi), %rsi + lea -16(%rdx), %rdx + lea -16(%rdi), %rdi + jmp Le10 +Lb01: xor (%rsi), %r8 + mov %r8, (%rdi) + dec %rcx + jz Lret + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + + .align 4, 0x90 +Ltop: mov (%rdx), %r8 + not %r8 +Lb00: mov 8(%rdx), %r9 + not %r9 + xor (%rsi), %r8 + xor 8(%rsi), %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) +Le11: mov 16(%rdx), %r8 + not %r8 +Le10: mov 24(%rdx), %r9 + not %r9 + lea 32(%rdx), %rdx + xor 16(%rsi), %r8 + xor 24(%rsi), %r9 + lea 32(%rsi), %rsi + mov %r8, 16(%rdi) + mov %r9, 24(%rdi) + lea 32(%rdi), %rdi + sub $4, %rcx + jnz Ltop + +Lret: + ret + + + + diff --git a/vere/ext/gmp/gen/x86_64-macos/mpn/xor_n.s b/vere/ext/gmp/gen/x86_64-macos/mpn/xor_n.s new file mode 100644 index 0000000..e6ec0c5 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/mpn/xor_n.s @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 5, 0x90 + .globl ___gmpn_xor_n + + +___gmpn_xor_n: + + + mov (%rdx), %r8 + mov %ecx, %eax + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: xor (%rsi), %r8 + mov %r8, (%rdi) + inc %rcx + lea -8(%rsi), %rsi + lea -8(%rdx), %rdx + lea -8(%rdi), %rdi + jmp Le11 +Lb10: add $2, %rcx + lea -16(%rsi), %rsi + lea -16(%rdx), %rdx + lea -16(%rdi), %rdi + jmp Le10 +Lb01: xor (%rsi), %r8 + mov %r8, (%rdi) + dec %rcx + jz Lret + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + + .align 4, 0x90 +Ltop: mov (%rdx), %r8 +Lb00: mov 8(%rdx), %r9 + xor (%rsi), %r8 + xor 8(%rsi), %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) +Le11: mov 16(%rdx), %r8 +Le10: mov 24(%rdx), %r9 + lea 32(%rdx), %rdx + xor 16(%rsi), %r8 + xor 24(%rsi), %r9 + lea 32(%rsi), %rsi + mov %r8, 16(%rdi) + mov %r9, 24(%rdi) + lea 32(%rdi), %rdi + sub $4, %rcx + jnz Ltop + +Lret: + ret + + + + + + diff --git a/vere/ext/gmp/gen/x86_64-macos/sieve_table.h b/vere/ext/gmp/gen/x86_64-macos/sieve_table.h new file mode 100644 index 0000000..ee9ac14 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/sieve_table.h @@ -0,0 +1,46 @@ +/* This file generated by gen-sieve.c - DO NOT EDIT. */ + +#if GMP_LIMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +#define PRIMESIEVE_INIT_TABLE \ + CNST_LIMB (0x3294C9E069128480), /* 5 - 196 (42 primes) */ \ + CNST_LIMB (0x95A35E1EC4AB21DC), /* 197 - 388 (32 primes) */ \ + CNST_LIMB (0x4AD7CE99B8693366), /* 389 - 580 (30 primes) */ \ + CNST_LIMB (0x6595B6DA728DC52B), /* 581 - 772 (30 primes) */ \ + CNST_LIMB (0xEA6D9F8787B0CEDE), /* 773 - 964 (26 primes) */ \ + CNST_LIMB (0x3F56A1F4CD3275A9), /* 965 - 1156 (29 primes) */ \ + CNST_LIMB (0xFD3848FB74A76ADB), /* 1157 - 1348 (26 primes) */ \ + CNST_LIMB (0xDBBA0DD1A1EDF6AF), /* 1349 - 1540 (25 primes) */ \ + CNST_LIMB (0xCEC7F17ED22799A5), /* 1541 - 1732 (27 primes) */ \ + CNST_LIMB (0xEAEC17BDBB717D56), /* 1733 - 1924 (24 primes) */ \ + CNST_LIMB (0x3B0EB7B3585AFCF3), /* 1925 - 2116 (26 primes) */ \ + CNST_LIMB (0xE563D8F69FDF6C4F), /* 2117 - 2308 (23 primes) */ \ + CNST_LIMB (0xFE5BA7ABA45E92FC), /* 2309 - 2500 (25 primes) */ \ + CNST_LIMB (0x158DEE6F3BF49B7D), /* 2501 - 2692 (24 primes) */ \ + CNST_LIMB (0xBE5A7BC4EDE6CD1A), /* 2693 - 2884 (26 primes) */ \ + CNST_LIMB (0xD7679B3FCA7BB6AD), /* 2885 - 3076 (22 primes) */ \ + CNST_LIMB (0xC3F66B971FEF37E9), /* 3077 - 3268 (22 primes) */ \ + CNST_LIMB (0x6F7EBCF339C953FD), /* 3269 - 3460 (22 primes) */ \ + CNST_LIMB (0xD5A5ECDCD235DBF0), /* 3461 - 3652 (27 primes) */ \ + CNST_LIMB (0xECFA7B2FD5B65E3B), /* 3653 - 3844 (22 primes) */ \ + CNST_LIMB (0xD28EFDF9C89F67B1), /* 3845 - 4036 (25 primes) */ \ + CNST_LIMB (0xCB7F7C7A3DD3AF4F), /* 4037 - 4228 (21 primes) */ \ + CNST_LIMB (0xEEBED6CDFF6B32CC), /* 4229 - 4420 (22 primes) */ \ + CNST_LIMB (0xD5BD73F85ECFA97C), /* 4421 - 4612 (23 primes) */ \ + CNST_LIMB (0x21FDBE4FBBAD48F7), /* 4613 - 4804 (24 primes) */ \ + CNST_LIMB (0x5E35A3B5EEB7FDE7), /* 4805 - 4996 (21 primes) */ \ + CNST_LIMB (0xD9EBFD53A7DBBCC9), /* 4997 - 5188 (22 primes) */ \ + CNST_LIMB (0xFF9EDEAF2EFE1F76), /* 5189 - 5380 (18 primes) */ +#define PRIMESIEVE_NUMBEROF_TABLE 28 +/* #define PRIMESIEVE_PRIMES_IN_TABLE 706 */ +#define PRIMESIEVE_HIGHEST_PRIME 5351 +/* #define PRIMESIEVE_FIRST_UNCHECKED 5381 */ + +#define SIEVE_MASK1 CNST_LIMB(0x3204C1A049120485) +#define SIEVE_MASKT CNST_LIMB(0xA1204892058) +#define SIEVE_2MSK1 CNST_LIMB(0x29048402110840A) +#define SIEVE_2MSK2 CNST_LIMB(0x9402180C40230184) +#define SIEVE_2MSKT CNST_LIMB(0x5021088402120) + diff --git a/vere/ext/gmp/gen/x86_64-macos/trialdivtab.h b/vere/ext/gmp/gen/x86_64-macos/trialdivtab.h new file mode 100644 index 0000000..eb81d7f --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-macos/trialdivtab.h @@ -0,0 +1,1214 @@ +#if GMP_LIMB_BITS != 64 +#error This table is for GMP_LIMB_BITS = 64 +#endif + +#if GMP_NAIL_BITS != 0 +#error This table does not support nails +#endif + +#ifdef WANT_dtab + P(3,CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0x5555555555555555)), + P(5,CNST_LIMB(0xcccccccccccccccd),CNST_LIMB(0x3333333333333333)), + P(7,CNST_LIMB(0x6db6db6db6db6db7),CNST_LIMB(0x2492492492492492)), + P(11,CNST_LIMB(0x2e8ba2e8ba2e8ba3),CNST_LIMB(0x1745d1745d1745d1)), + P(13,CNST_LIMB(0x4ec4ec4ec4ec4ec5),CNST_LIMB(0x13b13b13b13b13b1)), + P(17,CNST_LIMB(0xf0f0f0f0f0f0f0f1),CNST_LIMB(0xf0f0f0f0f0f0f0f)), + P(19,CNST_LIMB(0x86bca1af286bca1b),CNST_LIMB(0xd79435e50d79435)), + P(23,CNST_LIMB(0xd37a6f4de9bd37a7),CNST_LIMB(0xb21642c8590b216)), + P(29,CNST_LIMB(0x34f72c234f72c235),CNST_LIMB(0x8d3dcb08d3dcb08)), + P(31,CNST_LIMB(0xef7bdef7bdef7bdf),CNST_LIMB(0x842108421084210)), + P(37,CNST_LIMB(0x14c1bacf914c1bad),CNST_LIMB(0x6eb3e45306eb3e4)), + P(41,CNST_LIMB(0x8f9c18f9c18f9c19),CNST_LIMB(0x63e7063e7063e70)), + P(43,CNST_LIMB(0x82fa0be82fa0be83),CNST_LIMB(0x5f417d05f417d05)), + P(47,CNST_LIMB(0x51b3bea3677d46cf),CNST_LIMB(0x572620ae4c415c9)), + P(53,CNST_LIMB(0x21cfb2b78c13521d),CNST_LIMB(0x4d4873ecade304d)), + P(59,CNST_LIMB(0xcbeea4e1a08ad8f3),CNST_LIMB(0x456c797dd49c341)), + P(61,CNST_LIMB(0x4fbcda3ac10c9715),CNST_LIMB(0x4325c53ef368eb0)), + P(67,CNST_LIMB(0xf0b7672a07a44c6b),CNST_LIMB(0x3d226357e16ece5)), + P(71,CNST_LIMB(0x193d4bb7e327a977),CNST_LIMB(0x39b0ad12073615a)), + P(73,CNST_LIMB(0x7e3f1f8fc7e3f1f9),CNST_LIMB(0x381c0e070381c0e)), + P(79,CNST_LIMB(0x9b8b577e613716af),CNST_LIMB(0x33d91d2a2067b23)), + P(83,CNST_LIMB(0xa3784a062b2e43db),CNST_LIMB(0x3159721ed7e7534)), + P(89,CNST_LIMB(0xf47e8fd1fa3f47e9),CNST_LIMB(0x2e05c0b81702e05)), + P(97,CNST_LIMB(0xa3a0fd5c5f02a3a1),CNST_LIMB(0x2a3a0fd5c5f02a3)), + P(101,CNST_LIMB(0x3a4c0a237c32b16d),CNST_LIMB(0x288df0cac5b3f5d)), + P(103,CNST_LIMB(0xdab7ec1dd3431b57),CNST_LIMB(0x27c45979c95204f)), + P(107,CNST_LIMB(0x77a04c8f8d28ac43),CNST_LIMB(0x2647c69456217ec)), + P(109,CNST_LIMB(0xa6c0964fda6c0965),CNST_LIMB(0x2593f69b02593f6)), + P(113,CNST_LIMB(0x90fdbc090fdbc091),CNST_LIMB(0x243f6f0243f6f02)), + P(127,CNST_LIMB(0x7efdfbf7efdfbf7f),CNST_LIMB(0x204081020408102)), + P(131,CNST_LIMB(0x3e88cb3c9484e2b),CNST_LIMB(0x1f44659e4a42715)), + P(137,CNST_LIMB(0xe21a291c077975b9),CNST_LIMB(0x1de5d6e3f8868a4)), + P(139,CNST_LIMB(0x3aef6ca970586723),CNST_LIMB(0x1d77b654b82c339)), + P(149,CNST_LIMB(0xdf5b0f768ce2cabd),CNST_LIMB(0x1b7d6c3dda338b2)), + P(151,CNST_LIMB(0x6fe4dfc9bf937f27),CNST_LIMB(0x1b2036406c80d90)), + P(157,CNST_LIMB(0x5b4fe5e92c0685b5),CNST_LIMB(0x1a16d3f97a4b01a)), + P(163,CNST_LIMB(0x1f693a1c451ab30b),CNST_LIMB(0x1920fb49d0e228d)), + P(167,CNST_LIMB(0x8d07aa27db35a717),CNST_LIMB(0x1886e5f0abb0499)), + P(173,CNST_LIMB(0x882383b30d516325),CNST_LIMB(0x17ad2208e0ecc35)), + P(179,CNST_LIMB(0xed6866f8d962ae7b),CNST_LIMB(0x16e1f76b4337c6c)), + P(181,CNST_LIMB(0x3454dca410f8ed9d),CNST_LIMB(0x16a13cd15372904)), + P(191,CNST_LIMB(0x1d7ca632ee936f3f),CNST_LIMB(0x1571ed3c506b39a)), + P(193,CNST_LIMB(0x70bf015390948f41),CNST_LIMB(0x15390948f40feac)), + P(197,CNST_LIMB(0xc96bdb9d3d137e0d),CNST_LIMB(0x14cab88725af6e7)), + P(199,CNST_LIMB(0x2697cc8aef46c0f7),CNST_LIMB(0x149539e3b2d066e)), + P(211,CNST_LIMB(0xc0e8f2a76e68575b),CNST_LIMB(0x13698df3de07479)), + P(223,CNST_LIMB(0x687763dfdb43bb1f),CNST_LIMB(0x125e22708092f11)), + P(227,CNST_LIMB(0x1b10ea929ba144cb),CNST_LIMB(0x120b470c67c0d88)), + P(229,CNST_LIMB(0x1d10c4c0478bbced),CNST_LIMB(0x11e2ef3b3fb8744)), + P(233,CNST_LIMB(0x63fb9aeb1fdcd759),CNST_LIMB(0x119453808ca29c0)), + P(239,CNST_LIMB(0x64afaa4f437b2e0f),CNST_LIMB(0x112358e75d30336)), + P(241,CNST_LIMB(0xf010fef010fef011),CNST_LIMB(0x10fef010fef010f)), + P(251,CNST_LIMB(0x28cbfbeb9a020a33),CNST_LIMB(0x105197f7d734041)), + P(257,CNST_LIMB(0xff00ff00ff00ff01),CNST_LIMB(0xff00ff00ff00ff)), + P(263,CNST_LIMB(0xd624fd1470e99cb7),CNST_LIMB(0xf92fb2211855a8)), + P(269,CNST_LIMB(0x8fb3ddbd6205b5c5),CNST_LIMB(0xf3a0d52cba8723)), + P(271,CNST_LIMB(0xd57da36ca27acdef),CNST_LIMB(0xf1d48bcee0d399)), + P(277,CNST_LIMB(0xee70c03b25e4463d),CNST_LIMB(0xec979118f3fc4d)), + P(281,CNST_LIMB(0xc5b1a6b80749cb29),CNST_LIMB(0xe939651fe2d8d3)), + P(283,CNST_LIMB(0x47768073c9b97113),CNST_LIMB(0xe79372e225fe30)), + P(293,CNST_LIMB(0x2591e94884ce32ad),CNST_LIMB(0xdfac1f74346c57)), + P(307,CNST_LIMB(0xf02806abc74be1fb),CNST_LIMB(0xd578e97c3f5fe5)), + P(311,CNST_LIMB(0x7ec3e8f3a7198487),CNST_LIMB(0xd2ba083b445250)), + P(313,CNST_LIMB(0x58550f8a39409d09),CNST_LIMB(0xd161543e28e502)), + P(317,CNST_LIMB(0xec9e48ae6f71de15),CNST_LIMB(0xcebcf8bb5b4169)), + P(331,CNST_LIMB(0x2ff3a018bfce8063),CNST_LIMB(0xc5fe740317f9d0)), + P(337,CNST_LIMB(0x7f9ec3fcf61fe7b1),CNST_LIMB(0xc2780613c0309e)), + P(347,CNST_LIMB(0x89f5abe570e046d3),CNST_LIMB(0xbcdd535db1cc5b)), + P(349,CNST_LIMB(0xda971b23f1545af5),CNST_LIMB(0xbbc8408cd63069)), + P(353,CNST_LIMB(0x79d5f00b9a7862a1),CNST_LIMB(0xb9a7862a0ff465)), + P(359,CNST_LIMB(0x4dba1df32a128a57),CNST_LIMB(0xb68d31340e4307)), + P(367,CNST_LIMB(0x87530217b7747d8f),CNST_LIMB(0xb2927c29da5519)), + P(373,CNST_LIMB(0x30baae53bb5e06dd),CNST_LIMB(0xafb321a1496fdf)), + P(379,CNST_LIMB(0xee70206c12e9b5b3),CNST_LIMB(0xaceb0f891e6551)), + P(383,CNST_LIMB(0xcdde9462ec9dbe7f),CNST_LIMB(0xab1cbdd3e2970f)), + P(389,CNST_LIMB(0xafb64b05ec41cf4d),CNST_LIMB(0xa87917088e262b)), + P(397,CNST_LIMB(0x2944ff5aec02945),CNST_LIMB(0xa513fd6bb00a51)), + P(401,CNST_LIMB(0x2cb033128382df71),CNST_LIMB(0xa36e71a2cb0331)), + P(409,CNST_LIMB(0x1ccacc0c84b1c2a9),CNST_LIMB(0xa03c1688732b30)), + P(419,CNST_LIMB(0x19a93db575eb3a0b),CNST_LIMB(0x9c69169b30446d)), + P(421,CNST_LIMB(0xcebeef94fa86fe2d),CNST_LIMB(0x9baade8e4a2f6e)), + P(431,CNST_LIMB(0x6faa77fb3f8df54f),CNST_LIMB(0x980e4156201301)), + P(433,CNST_LIMB(0x68a58af00975a751),CNST_LIMB(0x975a750ff68a58)), + P(439,CNST_LIMB(0xd56e36d0c3efac07),CNST_LIMB(0x9548e4979e0829)), + P(443,CNST_LIMB(0xd8b44c47a8299b73),CNST_LIMB(0x93efd1c50e726b)), + P(449,CNST_LIMB(0x2d9ccaf9ba70e41),CNST_LIMB(0x91f5bcb8bb02d9)), + P(457,CNST_LIMB(0x985e1c023d9e879),CNST_LIMB(0x8f67a1e3fdc261)), + P(461,CNST_LIMB(0x2a343316c494d305),CNST_LIMB(0x8e2917e0e702c6)), + P(463,CNST_LIMB(0x70cb7916ab67652f),CNST_LIMB(0x8d8be33f95d715)), + P(467,CNST_LIMB(0xd398f132fb10fe5b),CNST_LIMB(0x8c55841c815ed5)), + P(479,CNST_LIMB(0x6f2a38a6bf54fa1f),CNST_LIMB(0x88d180cd3a4133)), + P(487,CNST_LIMB(0x211df689b98f81d7),CNST_LIMB(0x869222b1acf1ce)), + P(491,CNST_LIMB(0xe994983e90f1ec3),CNST_LIMB(0x85797b917765ab)), + P(499,CNST_LIMB(0xad671e44bed87f3b),CNST_LIMB(0x8355ace3c897db)), + P(503,CNST_LIMB(0xf9623a0516e70fc7),CNST_LIMB(0x824a4e60b3262b)), + P(509,CNST_LIMB(0x4b7129be9dece355),CNST_LIMB(0x80c121b28bd1ba)), + P(521,CNST_LIMB(0x190f3b7473f62c39),CNST_LIMB(0x7dc9f3397d4c29)), + P(523,CNST_LIMB(0x63dacc9aad46f9a3),CNST_LIMB(0x7d4ece8fe88139)), + P(541,CNST_LIMB(0xc1108fda24e8d035),CNST_LIMB(0x79237d65bcce50)), + P(547,CNST_LIMB(0xb77578472319bd8b),CNST_LIMB(0x77cf53c5f7936c)), + P(557,CNST_LIMB(0x473d20a1c7ed9da5),CNST_LIMB(0x75a8accfbdd11e)), + P(563,CNST_LIMB(0xfbe85af0fea2c8fb),CNST_LIMB(0x7467ac557c228e)), + P(569,CNST_LIMB(0x58a1f7e6ce0f4c09),CNST_LIMB(0x732d70ed8db8e9)), + P(571,CNST_LIMB(0x1a00e58c544986f3),CNST_LIMB(0x72c62a24c3797f)), + P(577,CNST_LIMB(0x7194a17f55a10dc1),CNST_LIMB(0x7194a17f55a10d)), + P(587,CNST_LIMB(0x7084944785e33763),CNST_LIMB(0x6fa549b41da7e7)), + P(593,CNST_LIMB(0xba10679bd84886b1),CNST_LIMB(0x6e8419e6f61221)), + P(599,CNST_LIMB(0xebe9c6bb31260967),CNST_LIMB(0x6d68b5356c207b)), + P(601,CNST_LIMB(0x97a3fe4bd1ff25e9),CNST_LIMB(0x6d0b803685c01b)), + P(607,CNST_LIMB(0x6c6388395b84d99f),CNST_LIMB(0x6bf790a8b2d207)), + P(613,CNST_LIMB(0x8c51da6a1335df6d),CNST_LIMB(0x6ae907ef4b96c2)), + P(617,CNST_LIMB(0x46f3234475d5add9),CNST_LIMB(0x6a37991a23aead)), + P(619,CNST_LIMB(0x905605ca3c619a43),CNST_LIMB(0x69dfbdd4295b66)), + P(631,CNST_LIMB(0xcee8dff304767747),CNST_LIMB(0x67dc4c45c8033e)), + P(641,CNST_LIMB(0xff99c27f00663d81),CNST_LIMB(0x663d80ff99c27f)), + P(643,CNST_LIMB(0xacca407f671ddc2b),CNST_LIMB(0x65ec17e3559948)), + P(647,CNST_LIMB(0xe71298bac1e12337),CNST_LIMB(0x654ac835cfba5c)), + P(653,CNST_LIMB(0xfa1e94309cd09045),CNST_LIMB(0x645c854ae10772)), + P(659,CNST_LIMB(0xbebccb8e91496b9b),CNST_LIMB(0x6372990e5f901f)), + P(661,CNST_LIMB(0x312fa30cc7d7b8bd),CNST_LIMB(0x6325913c07beef)), + P(673,CNST_LIMB(0x6160ff9e9f006161),CNST_LIMB(0x6160ff9e9f0061)), + P(677,CNST_LIMB(0x6b03673b5e28152d),CNST_LIMB(0x60cdb520e5e88e)), + P(683,CNST_LIMB(0xfe802ffa00bfe803),CNST_LIMB(0x5ff4017fd005ff)), + P(691,CNST_LIMB(0xe66fe25c9e907c7b),CNST_LIMB(0x5ed79e31a4dccd)), + P(701,CNST_LIMB(0x3f8b236c76528895),CNST_LIMB(0x5d7d42d48ac5ef)), + P(709,CNST_LIMB(0xf6f923bf01ce2c0d),CNST_LIMB(0x5c6f35ccba5028)), + P(719,CNST_LIMB(0x6c3d3d98bed7c42f),CNST_LIMB(0x5b2618ec6ad0a5)), + P(727,CNST_LIMB(0x30981efcd4b010e7),CNST_LIMB(0x5a2553748e42e7)), + P(733,CNST_LIMB(0x6f691fc81ebbe575),CNST_LIMB(0x59686cf744cd5b)), + P(739,CNST_LIMB(0xb10480ddb47b52cb),CNST_LIMB(0x58ae97bab79976)), + P(743,CNST_LIMB(0x74cd59ed64f3f0d7),CNST_LIMB(0x58345f1876865f)), + P(751,CNST_LIMB(0x105cb81316d6c0f),CNST_LIMB(0x5743d5bb24795a)), + P(757,CNST_LIMB(0x9be64c6d91c1195d),CNST_LIMB(0x5692c4d1ab74ab)), + P(761,CNST_LIMB(0x71b3f945a27b1f49),CNST_LIMB(0x561e46a4d5f337)), + P(769,CNST_LIMB(0x77d80d50e508fd01),CNST_LIMB(0x5538ed06533997)), + P(773,CNST_LIMB(0xa5eb778e133551cd),CNST_LIMB(0x54c807f2c0bec2)), + P(787,CNST_LIMB(0x18657d3c2d8a3f1b),CNST_LIMB(0x5345efbc572d36)), + P(797,CNST_LIMB(0x2e40e220c34ad735),CNST_LIMB(0x523a758f941345)), + P(809,CNST_LIMB(0xa76593c70a714919),CNST_LIMB(0x5102370f816c89)), + P(811,CNST_LIMB(0x1eef452124eea383),CNST_LIMB(0x50cf129fb94acf)), + P(821,CNST_LIMB(0x38206dc242ba771d),CNST_LIMB(0x4fd31941cafdd1)), + P(823,CNST_LIMB(0x4cd4c35807772287),CNST_LIMB(0x4fa1704aa75945)), + P(827,CNST_LIMB(0x83de917d5e69ddf3),CNST_LIMB(0x4f3ed6d45a63ad)), + P(829,CNST_LIMB(0x882ef0403b4a6c15),CNST_LIMB(0x4f0de57154ebed)), + P(839,CNST_LIMB(0xf8fb6c51c606b677),CNST_LIMB(0x4e1cae8815f811)), + P(853,CNST_LIMB(0xb4abaac446d3e1fd),CNST_LIMB(0x4cd47ba5f6ff19)), + P(857,CNST_LIMB(0xa9f83bbe484a14e9),CNST_LIMB(0x4c78ae734df709)), + P(859,CNST_LIMB(0xbebbc0d1ce874d3),CNST_LIMB(0x4c4b19ed85cfb8)), + P(863,CNST_LIMB(0xbd418eaf0473189f),CNST_LIMB(0x4bf093221d1218)), + P(877,CNST_LIMB(0x44e3af6f372b7e65),CNST_LIMB(0x4aba3c21dc633f)), + P(881,CNST_LIMB(0xc87fdace4f9e5d91),CNST_LIMB(0x4a6360c344de00)), + P(883,CNST_LIMB(0xec93479c446bd9bb),CNST_LIMB(0x4a383e9f74d68a)), + P(887,CNST_LIMB(0xdac4d592e777c647),CNST_LIMB(0x49e28fbabb9940)), + P(907,CNST_LIMB(0xa63ea8c8f61f0c23),CNST_LIMB(0x48417b57c78cd7)), + P(911,CNST_LIMB(0xe476062ea5cbbb6f),CNST_LIMB(0x47f043713f3a2b)), + P(919,CNST_LIMB(0xdf68761c69daac27),CNST_LIMB(0x474ff2a10281cf)), + P(929,CNST_LIMB(0xb813d737637aa061),CNST_LIMB(0x468b6f9a978f91)), + P(937,CNST_LIMB(0xa3a77aac1fb15099),CNST_LIMB(0x45f13f1caff2e2)), + P(941,CNST_LIMB(0x17f0c3e0712c5825),CNST_LIMB(0x45a5228cec23e9)), + P(947,CNST_LIMB(0xfd912a70ff30637b),CNST_LIMB(0x45342c556c66b9)), + P(953,CNST_LIMB(0xfbb3b5dc01131289),CNST_LIMB(0x44c4a23feeced7)), + P(967,CNST_LIMB(0x856d560a0f5acdf7),CNST_LIMB(0x43c5c20d3c9fe6)), + P(971,CNST_LIMB(0x96472f314d3f89e3),CNST_LIMB(0x437e494b239798)), + P(977,CNST_LIMB(0xa76f5c7ed2253531),CNST_LIMB(0x43142d118e47cb)), + P(983,CNST_LIMB(0x816eae7c7bf69fe7),CNST_LIMB(0x42ab5c73a13458)), + P(991,CNST_LIMB(0xb6a2bea4cfb1781f),CNST_LIMB(0x4221950db0f3db)), + P(997,CNST_LIMB(0xa3900c53318e81ed),CNST_LIMB(0x41bbb2f80a4553)), + P(1009,CNST_LIMB(0x60aa7f5d9f148d11),CNST_LIMB(0x40f391612c6680)), + P(1013,CNST_LIMB(0x6be8c0102c7a505d),CNST_LIMB(0x40b1e94173fefd)), + P(1019,CNST_LIMB(0x8ff3f0ed28728f33),CNST_LIMB(0x4050647d9d0445)), + P(1021,CNST_LIMB(0x680e0a87e5ec7155),CNST_LIMB(0x4030241b144f3b)), + P(1031,CNST_LIMB(0xbbf70fa49fe829b7),CNST_LIMB(0x3f90c2ab542cb1)), + P(1033,CNST_LIMB(0xd69d1e7b6a50ca39),CNST_LIMB(0x3f71412d59f597)), + P(1039,CNST_LIMB(0x1a1e0f46b6d26aef),CNST_LIMB(0x3f137701b98841)), + P(1049,CNST_LIMB(0x7429f9a7a8251829),CNST_LIMB(0x3e79886b60e278)), + P(1051,CNST_LIMB(0xd9c2219d1b863613),CNST_LIMB(0x3e5b1916a7181d)), + P(1061,CNST_LIMB(0x91406c1820d077ad),CNST_LIMB(0x3dc4a50968f524)), + P(1063,CNST_LIMB(0x521f4ec02e3d2b97),CNST_LIMB(0x3da6e4c9550321)), + P(1069,CNST_LIMB(0xbb8283b63dc8eba5),CNST_LIMB(0x3d4e4f06f1def3)), + P(1087,CNST_LIMB(0x431eda153229ebbf),CNST_LIMB(0x3c4a6bdd24f9a4)), + P(1091,CNST_LIMB(0xaf0bf78d7e01686b),CNST_LIMB(0x3c11d54b525c73)), + P(1093,CNST_LIMB(0xa9ced0742c086e8d),CNST_LIMB(0x3bf5b1c5721065)), + P(1097,CNST_LIMB(0xc26458ad9f632df9),CNST_LIMB(0x3bbdb9862f23b4)), + P(1103,CNST_LIMB(0xbbff1255dff892af),CNST_LIMB(0x3b6a8801db5440)), + P(1109,CNST_LIMB(0xcbd49a333f04d8fd),CNST_LIMB(0x3b183cf0fed886)), + P(1117,CNST_LIMB(0xec84ed6f9cfdeff5),CNST_LIMB(0x3aabe394bdc3f4)), + P(1123,CNST_LIMB(0x97980cc40bda9d4b),CNST_LIMB(0x3a5ba3e76156da)), + P(1129,CNST_LIMB(0x777f34d524f5cbd9),CNST_LIMB(0x3a0c3e953378db)), + P(1151,CNST_LIMB(0x2797051d94cbbb7f),CNST_LIMB(0x38f03561320b1e)), + P(1153,CNST_LIMB(0xea769051b4f43b81),CNST_LIMB(0x38d6ecaef5908a)), + P(1163,CNST_LIMB(0xce7910f3034d4323),CNST_LIMB(0x3859cf221e6069)), + P(1171,CNST_LIMB(0x92791d1374f5b99b),CNST_LIMB(0x37f7415dc9588a)), + P(1181,CNST_LIMB(0x89a5645cc68ea1b5),CNST_LIMB(0x377df0d3902626)), + P(1187,CNST_LIMB(0x5f8aacf796c0cf0b),CNST_LIMB(0x373622136907fa)), + P(1193,CNST_LIMB(0xf2e90a15e33edf99),CNST_LIMB(0x36ef0c3b39b92f)), + P(1201,CNST_LIMB(0x8e99e5feb897c451),CNST_LIMB(0x36915f47d55e6d)), + P(1213,CNST_LIMB(0xaca2eda38fb91695),CNST_LIMB(0x36072cf3f866fd)), + P(1217,CNST_LIMB(0x5d9b737be5ea8b41),CNST_LIMB(0x35d9b737be5ea8)), + P(1223,CNST_LIMB(0x4aefe1db93fd7cf7),CNST_LIMB(0x35961559cc81c7)), + P(1229,CNST_LIMB(0xa0994ef20b3f8805),CNST_LIMB(0x35531c897a4592)), + P(1231,CNST_LIMB(0x103890bda912822f),CNST_LIMB(0x353ceebd3e98a4)), + P(1237,CNST_LIMB(0xb441659d13a9147d),CNST_LIMB(0x34fad381585e5e)), + P(1249,CNST_LIMB(0x1e2134440c4c3f21),CNST_LIMB(0x347884d1103130)), + P(1259,CNST_LIMB(0x263a27727a6883c3),CNST_LIMB(0x340dd3ac39bf56)), + P(1277,CNST_LIMB(0x78e221472ab33855),CNST_LIMB(0x3351fdfecc140c)), + P(1279,CNST_LIMB(0x95eac88e82e6faff),CNST_LIMB(0x333d72b089b524)), + P(1283,CNST_LIMB(0xf66c258317be8dab),CNST_LIMB(0x33148d44d6b261)), + P(1289,CNST_LIMB(0x9ee202c7cb91939),CNST_LIMB(0x32d7aef8412458)), + P(1291,CNST_LIMB(0x8d2fca1042a09ea3),CNST_LIMB(0x32c3850e79c0f1)), + P(1297,CNST_LIMB(0x82779c856d8b8bf1),CNST_LIMB(0x328766d59048a2)), + P(1301,CNST_LIMB(0x3879361cba8a223d),CNST_LIMB(0x325fa18cb11833)), + P(1303,CNST_LIMB(0xf23f43639c3182a7),CNST_LIMB(0x324bd659327e22)), + P(1307,CNST_LIMB(0xa03868fc474bcd13),CNST_LIMB(0x32246e784360f4)), + P(1319,CNST_LIMB(0x651e78b8c5311a97),CNST_LIMB(0x31afa5f1a33a08)), + P(1321,CNST_LIMB(0x8ffce639c00c6719),CNST_LIMB(0x319c63ff398e70)), + P(1327,CNST_LIMB(0xf7b460754b0b61cf),CNST_LIMB(0x3162f7519a86a7)), + P(1361,CNST_LIMB(0x7b03f3359b8e63b1),CNST_LIMB(0x30271fc9d3fc3c)), + P(1367,CNST_LIMB(0xa55c5326041eb667),CNST_LIMB(0x2ff104ae89750b)), + P(1373,CNST_LIMB(0x647f88ab896a76f5),CNST_LIMB(0x2fbb62a236d133)), + P(1381,CNST_LIMB(0x8fd971434a55a46d),CNST_LIMB(0x2f74997d2070b4)), + P(1399,CNST_LIMB(0x9fbf969958046447),CNST_LIMB(0x2ed84aa8b6fce3)), + P(1409,CNST_LIMB(0x9986feba69be3a81),CNST_LIMB(0x2e832df7a46dbd)), + P(1423,CNST_LIMB(0xa668b3e6d053796f),CNST_LIMB(0x2e0e0846857cab)), + P(1427,CNST_LIMB(0x97694e6589f4e09b),CNST_LIMB(0x2decfbdfb55ee6)), + P(1429,CNST_LIMB(0x37890c00b7721dbd),CNST_LIMB(0x2ddc876f3ff488)), + P(1433,CNST_LIMB(0x5ac094a235f37ea9),CNST_LIMB(0x2dbbc1d4c482c4)), + P(1439,CNST_LIMB(0x31cff775f2d5d65f),CNST_LIMB(0x2d8af0e0de0556)), + P(1447,CNST_LIMB(0xddad8e6b36505217),CNST_LIMB(0x2d4a7b7d14b30a)), + P(1451,CNST_LIMB(0x5a27df897062cd03),CNST_LIMB(0x2d2a85073bcf4e)), + P(1453,CNST_LIMB(0xe2396fe0fdb5a625),CNST_LIMB(0x2d1a9ab13e8be4)), + P(1459,CNST_LIMB(0xb352a4957e82317b),CNST_LIMB(0x2ceb1eb4b9fd8b)), + P(1471,CNST_LIMB(0xd8ab3f2c60c2ea3f),CNST_LIMB(0x2c8d503a79794c)), + P(1481,CNST_LIMB(0x6893f702f0452479),CNST_LIMB(0x2c404d708784ed)), + P(1483,CNST_LIMB(0x9686fdc182acf7e3),CNST_LIMB(0x2c31066315ec52)), + P(1487,CNST_LIMB(0x6854037173dce12f),CNST_LIMB(0x2c1297d80f2664)), + P(1489,CNST_LIMB(0x7f0ded1685c27331),CNST_LIMB(0x2c037044c55f6b)), + P(1493,CNST_LIMB(0xeeda72e1fe490b7d),CNST_LIMB(0x2be5404cd13086)), + P(1499,CNST_LIMB(0x9e7bfc959a8e6e53),CNST_LIMB(0x2bb845adaf0cce)), + P(1511,CNST_LIMB(0x49b314d6d4753dd7),CNST_LIMB(0x2b5f62c639f16d)), + P(1523,CNST_LIMB(0x2e8f8c5ac4aa1b3b),CNST_LIMB(0x2b07e6734f2b88)), + P(1531,CNST_LIMB(0xb8ef723481163d33),CNST_LIMB(0x2ace569d8342b7)), + P(1543,CNST_LIMB(0x6a2ec96a594287b7),CNST_LIMB(0x2a791d5dbd4dcf)), + P(1549,CNST_LIMB(0xdba41c6d13aab8c5),CNST_LIMB(0x2a4eff8113017c)), + P(1553,CNST_LIMB(0xc2adbe648dc3aaf1),CNST_LIMB(0x2a3319e156df32)), + P(1559,CNST_LIMB(0x87a2bade565f91a7),CNST_LIMB(0x2a0986286526ea)), + P(1567,CNST_LIMB(0x4d6fe8798c01f5df),CNST_LIMB(0x29d29551d91e39)), + P(1571,CNST_LIMB(0x3791310c8c23d98b),CNST_LIMB(0x29b7529e109f0a)), + P(1579,CNST_LIMB(0xf80e446b01228883),CNST_LIMB(0x298137491ea465)), + P(1583,CNST_LIMB(0x9aed1436fbf500cf),CNST_LIMB(0x29665e1eb9f9da)), + P(1597,CNST_LIMB(0x7839b54cc8b24115),CNST_LIMB(0x2909752e019a5e)), + P(1601,CNST_LIMB(0xc128c646ad0309c1),CNST_LIMB(0x28ef35e2e5efb0)), + P(1607,CNST_LIMB(0x14de631624a3c377),CNST_LIMB(0x28c815aa4b8278)), + P(1609,CNST_LIMB(0x3f7b9fe68b0ecbf9),CNST_LIMB(0x28bb1b867199da)), + P(1613,CNST_LIMB(0x284ffd75ec00a285),CNST_LIMB(0x28a13ff5d7b002)), + P(1619,CNST_LIMB(0x37803cb80dea2ddb),CNST_LIMB(0x287ab3f173e755)), + P(1621,CNST_LIMB(0x86b63f7c9ac4c6fd),CNST_LIMB(0x286dead67713bd)), + P(1627,CNST_LIMB(0x8b6851d1bd99b9d3),CNST_LIMB(0x2847bfcda6503e)), + P(1637,CNST_LIMB(0xb62fda77ca343b6d),CNST_LIMB(0x2808c1ea6b4777)), + P(1657,CNST_LIMB(0x1f0dc009e34383c9),CNST_LIMB(0x278d0e0f23ff61)), + P(1663,CNST_LIMB(0x496dc21ddd35b97f),CNST_LIMB(0x2768863c093c7f)), + P(1667,CNST_LIMB(0xb0e96ce17090f82b),CNST_LIMB(0x27505115a73ca8)), + P(1669,CNST_LIMB(0xaadf05acdd7d024d),CNST_LIMB(0x274441a61dc1b9)), + P(1693,CNST_LIMB(0xcb138196746eafb5),CNST_LIMB(0x26b5c166113cf0)), + P(1697,CNST_LIMB(0x347f523736755d61),CNST_LIMB(0x269e65ad07b18e)), + P(1699,CNST_LIMB(0xd14a48a051f7dd0b),CNST_LIMB(0x2692c25f877560)), + P(1709,CNST_LIMB(0x474d71b1ce914d25),CNST_LIMB(0x2658fa7523cd11)), + P(1721,CNST_LIMB(0x386063f5e28c1f89),CNST_LIMB(0x26148710cf0f9e)), + P(1723,CNST_LIMB(0x1db7325e32d04e73),CNST_LIMB(0x2609363b22524f)), + P(1733,CNST_LIMB(0xfef748d3893b880d),CNST_LIMB(0x25d1065a1c1122)), + P(1741,CNST_LIMB(0x2f3351506e935605),CNST_LIMB(0x25a48a382b863f)), + P(1747,CNST_LIMB(0x7a3637fa2376415b),CNST_LIMB(0x25837190eccdbc)), + P(1753,CNST_LIMB(0x4ac525d2baa21969),CNST_LIMB(0x256292e95d510c)), + P(1759,CNST_LIMB(0x3a11c16b42cd351f),CNST_LIMB(0x2541eda98d068c)), + P(1777,CNST_LIMB(0x6c7abde0049c2a11),CNST_LIMB(0x24e15087fed8f5)), + P(1783,CNST_LIMB(0x54dad0303e069ac7),CNST_LIMB(0x24c18b20979e5d)), + P(1787,CNST_LIMB(0xebf1ac9fdfe91433),CNST_LIMB(0x24ac7b336de0c5)), + P(1789,CNST_LIMB(0xfafdda8237cec655),CNST_LIMB(0x24a1fc478c60bb)), + P(1801,CNST_LIMB(0xdce3ff6e71ffb739),CNST_LIMB(0x2463801231c009)), + P(1811,CNST_LIMB(0xbed5737d6286db1b),CNST_LIMB(0x24300fd506ed33)), + P(1823,CNST_LIMB(0xe479e431fe08b4df),CNST_LIMB(0x23f314a494da81)), + P(1831,CNST_LIMB(0x9dd9b0dd7742f897),CNST_LIMB(0x23cadedd2fad3a)), + P(1847,CNST_LIMB(0x8f09d7402c5a5e87),CNST_LIMB(0x237b7ed2664a03)), + P(1861,CNST_LIMB(0x9216d5c4d958738d),CNST_LIMB(0x23372967dbaf1d)), + P(1867,CNST_LIMB(0xb3139ba11d34ca63),CNST_LIMB(0x231a308a371f20)), + P(1871,CNST_LIMB(0x47d54f7ed644afaf),CNST_LIMB(0x2306fa63e1e600)), + P(1873,CNST_LIMB(0x92a81d85cf11a1b1),CNST_LIMB(0x22fd6731575684)), + P(1877,CNST_LIMB(0x754b26533253bdfd),CNST_LIMB(0x22ea507805749c)), + P(1879,CNST_LIMB(0xbbe0efc980bfd467),CNST_LIMB(0x22e0cce8b3d720)), + P(1889,CNST_LIMB(0xc0d8d594f024dca1),CNST_LIMB(0x22b1887857d161)), + P(1901,CNST_LIMB(0x8238d43bcaac1a65),CNST_LIMB(0x227977fcc49cc0)), + P(1907,CNST_LIMB(0x27779c1fae6175bb),CNST_LIMB(0x225db37b5e5f4f)), + P(1913,CNST_LIMB(0xa746ca9af708b2c9),CNST_LIMB(0x22421b91322ed6)), + P(1931,CNST_LIMB(0x93f3cd9f389be823),CNST_LIMB(0x21f05b35f52102)), + P(1933,CNST_LIMB(0x5cb4a4c04c489345),CNST_LIMB(0x21e75de5c70d60)), + P(1949,CNST_LIMB(0xbf6047743e85b6b5),CNST_LIMB(0x21a01d6c19be96)), + P(1951,CNST_LIMB(0x61c147831563545f),CNST_LIMB(0x21974a6615c81a)), + P(1973,CNST_LIMB(0xedb47c0ae62dee9d),CNST_LIMB(0x213767697cf36a)), + P(1979,CNST_LIMB(0xa3824386673a573),CNST_LIMB(0x211d9f7fad35f1)), + P(1987,CNST_LIMB(0xa4a77d19e575a0eb),CNST_LIMB(0x20fb7d9dd36c18)), + P(1993,CNST_LIMB(0xa2bee045e066c279),CNST_LIMB(0x20e2123d661e0e)), + P(1997,CNST_LIMB(0xc23618de8ab43d05),CNST_LIMB(0x20d135b66ae990)), + P(1999,CNST_LIMB(0x266b515216cb9f2f),CNST_LIMB(0x20c8cded4d7a8e)), + P(2003,CNST_LIMB(0xe279edd9e9c2e85b),CNST_LIMB(0x20b80b3f43ddbf)), + P(2011,CNST_LIMB(0xd0c591c221dc9c53),CNST_LIMB(0x2096b9180f46a6)), + P(2017,CNST_LIMB(0x6da8ee9c9ee7c21),CNST_LIMB(0x207de7e28de5da)), + P(2027,CNST_LIMB(0x9dfebcaf4c27e8c3),CNST_LIMB(0x2054dec8cf1fb3)), + P(2029,CNST_LIMB(0x49aeff9f19dd6de5),CNST_LIMB(0x204cb630b3aab5)), + P(2039,CNST_LIMB(0x86976a57a296e9c7),CNST_LIMB(0x202428adc37beb)), + P(2053,CNST_LIMB(0xa3b9abf4872b84cd),CNST_LIMB(0x1fec0c7834def4)), + P(2063,CNST_LIMB(0x34fca6483895e6ef),CNST_LIMB(0x1fc46fae98a1d0)), + P(2069,CNST_LIMB(0x34b5a333988f873d),CNST_LIMB(0x1facda430ff619)), + P(2081,CNST_LIMB(0xd9dd4f19b5f17be1),CNST_LIMB(0x1f7e17dd8e15e5)), + P(2083,CNST_LIMB(0xb935b507fd0ce78b),CNST_LIMB(0x1f765a3556a4ee)), + P(2087,CNST_LIMB(0xb450f5540660e797),CNST_LIMB(0x1f66ea49d802f1)), + P(2089,CNST_LIMB(0x63ff82831ffc1419),CNST_LIMB(0x1f5f3800faf9c0)), + P(2099,CNST_LIMB(0x8992f718c22a32fb),CNST_LIMB(0x1f38f4e6c0f1f9)), + P(2111,CNST_LIMB(0x5f3253ad0d37e7bf),CNST_LIMB(0x1f0b8546752578)), + P(2113,CNST_LIMB(0x7c0ffe0fc007c1),CNST_LIMB(0x1f03ff83f001f0)), + P(2129,CNST_LIMB(0x4d8ebadc0c0640b1),CNST_LIMB(0x1ec853b0a3883c)), + P(2131,CNST_LIMB(0xe2729af831037bdb),CNST_LIMB(0x1ec0ee573723eb)), + P(2137,CNST_LIMB(0xb8f64bf30feebfe9),CNST_LIMB(0x1eaad38e6f6894)), + P(2141,CNST_LIMB(0xda93124b544c0bf5),CNST_LIMB(0x1e9c28a765fe53)), + P(2143,CNST_LIMB(0x9cf7ff0b593c539f),CNST_LIMB(0x1e94d8758c2003)), + P(2153,CNST_LIMB(0xd6bd8861fa0e07d9),CNST_LIMB(0x1e707ba8f65e68)), + P(2161,CNST_LIMB(0x5cfe75c0bd8ab891),CNST_LIMB(0x1e53a2a68f574e)), + P(2179,CNST_LIMB(0x43e808757c2e862b),CNST_LIMB(0x1e1380a56b438d)), + P(2203,CNST_LIMB(0x90caa96d595c9d93),CNST_LIMB(0x1dbf9f513a3802)), + P(2207,CNST_LIMB(0x8fd550625d07135f),CNST_LIMB(0x1db1d1d58bc600)), + P(2213,CNST_LIMB(0x76b010a86e209f2d),CNST_LIMB(0x1d9d358f53de38)), + P(2221,CNST_LIMB(0xecc0426447769b25),CNST_LIMB(0x1d81e6df6165c7)), + P(2237,CNST_LIMB(0xe381339caabe3295),CNST_LIMB(0x1d4bdf7fd40e30)), + P(2239,CNST_LIMB(0xd1b190a2d0c7673f),CNST_LIMB(0x1d452c7a1c958d)), + P(2243,CNST_LIMB(0xc3bce3cf26b0e7eb),CNST_LIMB(0x1d37cf9b902659)), + P(2251,CNST_LIMB(0x5f87e76f56c61ce3),CNST_LIMB(0x1d1d3a5791e97b)), + P(2267,CNST_LIMB(0xc06c6857a124b353),CNST_LIMB(0x1ce89fe6b47416)), + P(2269,CNST_LIMB(0x38c040fcba630f75),CNST_LIMB(0x1ce219f3235071)), + P(2273,CNST_LIMB(0xd078bc4fbd533b21),CNST_LIMB(0x1cd516dcf92139)), + P(2281,CNST_LIMB(0xde8e15c5dd354f59),CNST_LIMB(0x1cbb33bd1c2b8b)), + P(2287,CNST_LIMB(0xca61d53d7414260f),CNST_LIMB(0x1ca7e7d2546688)), + P(2293,CNST_LIMB(0xb56bf5ba8eae635d),CNST_LIMB(0x1c94b5c1b3dbd3)), + P(2297,CNST_LIMB(0x44a72cb0fb6e3949),CNST_LIMB(0x1c87f7f9c241c1)), + P(2309,CNST_LIMB(0x879839a714f45bcd),CNST_LIMB(0x1c6202706c35a9)), + P(2311,CNST_LIMB(0x2a8994fde5314b7),CNST_LIMB(0x1c5bb8a9437632)), + P(2333,CNST_LIMB(0xb971920cf2b90135),CNST_LIMB(0x1c174343b4111e)), + P(2339,CNST_LIMB(0x8a8fd0b7df9a6e8b),CNST_LIMB(0x1c04d0d3e46b42)), + P(2341,CNST_LIMB(0xb31f9a84c1c6eaad),CNST_LIMB(0x1bfeb00fbf4308)), + P(2347,CNST_LIMB(0x92293b02823c6d83),CNST_LIMB(0x1bec5dce0b202d)), + P(2351,CNST_LIMB(0xeee77ff20fe5ddcf),CNST_LIMB(0x1be03444620037)), + P(2357,CNST_LIMB(0xe1ea0f6c496c11d),CNST_LIMB(0x1bce09c66f6fc3)), + P(2371,CNST_LIMB(0xfdf2d3d6f88ccb6b),CNST_LIMB(0x1ba40228d02b30)), + P(2377,CNST_LIMB(0xfa9d74a3457738f9),CNST_LIMB(0x1b9225b1cf8919)), + P(2381,CNST_LIMB(0xefc3ca3db71a5785),CNST_LIMB(0x1b864a2ff3f53f)), + P(2383,CNST_LIMB(0x8e2071718d0d6daf),CNST_LIMB(0x1b80604150e49b)), + P(2389,CNST_LIMB(0xbc0fdbfeb6cfabfd),CNST_LIMB(0x1b6eb1aaeaacf3)), + P(2393,CNST_LIMB(0x1eeab613e5e5aee9),CNST_LIMB(0x1b62f48da3c8cc)), + P(2399,CNST_LIMB(0x2d2388e90e9e929f),CNST_LIMB(0x1b516babe96092)), + P(2411,CNST_LIMB(0x81dbafba588ddb43),CNST_LIMB(0x1b2e9cef1e0c87)), + P(2417,CNST_LIMB(0x52eebc51c4799791),CNST_LIMB(0x1b1d56bedc849b)), + P(2423,CNST_LIMB(0x1c6bc4693b45a047),CNST_LIMB(0x1b0c267546aec0)), + P(2437,CNST_LIMB(0x6eee0974498874d),CNST_LIMB(0x1ae45f62024fa0)), + P(2441,CNST_LIMB(0xd85b7377a9953cb9),CNST_LIMB(0x1ad917631b5f54)), + P(2447,CNST_LIMB(0x4b6df412d4caf56f),CNST_LIMB(0x1ac83d18cb608f)), + P(2459,CNST_LIMB(0x6b8afbbb4a053493),CNST_LIMB(0x1aa6c7ad8c063f)), + P(2467,CNST_LIMB(0xcc5299c96ac7720b),CNST_LIMB(0x1a90a7b1228e2a)), + P(2473,CNST_LIMB(0xadce84b5c710aa99),CNST_LIMB(0x1a8027c03ba059)), + P(2477,CNST_LIMB(0x9d673f5aa3804225),CNST_LIMB(0x1a7533289deb89)), + P(2503,CNST_LIMB(0xe6541268efbce7f7),CNST_LIMB(0x1a2ed7ce16b49f)), + P(2521,CNST_LIMB(0xfcf41e76cf5be669),CNST_LIMB(0x19fefc0a279a73)), + P(2531,CNST_LIMB(0x5c3eb5dc31c383cb),CNST_LIMB(0x19e4b0cd873b5f)), + P(2539,CNST_LIMB(0x301832d11d8ad6c3),CNST_LIMB(0x19cfcdfd60e514)), + P(2543,CNST_LIMB(0x2e9c0942f1ce450f),CNST_LIMB(0x19c56932d66c85)), + P(2549,CNST_LIMB(0x97f3f2be37a39a5d),CNST_LIMB(0x19b5e1ab6fc7c2)), + P(2551,CNST_LIMB(0xe8b7d8a9654187c7),CNST_LIMB(0x19b0b8a62f2a73)), + P(2557,CNST_LIMB(0xb5d024d7da5b1b55),CNST_LIMB(0x19a149fc98942c)), + P(2579,CNST_LIMB(0xb8ba9d6e7ae3501b),CNST_LIMB(0x1969517ec25b85)), + P(2591,CNST_LIMB(0xf50865f71b90f1df),CNST_LIMB(0x194b3083360ba8)), + P(2593,CNST_LIMB(0x739c1682847df9e1),CNST_LIMB(0x194631f4bebdc1)), + P(2609,CNST_LIMB(0xc470a4d842b90ed1),CNST_LIMB(0x191e84127268fd)), + P(2617,CNST_LIMB(0x1fb1be11698cc409),CNST_LIMB(0x190adbb543984f)), + P(2621,CNST_LIMB(0xd8d5512a7cd35d15),CNST_LIMB(0x1901130bd18200)), + P(2633,CNST_LIMB(0xa5496821723e07f9),CNST_LIMB(0x18e3e6b889ac94)), + P(2647,CNST_LIMB(0xbcc8c6d7abaa8167),CNST_LIMB(0x18c233420e1ec1)), + P(2657,CNST_LIMB(0x52c396c95eb619a1),CNST_LIMB(0x18aa5872d92bd6)), + P(2659,CNST_LIMB(0x6eb7e380878ec74b),CNST_LIMB(0x18a5989945ccf9)), + P(2663,CNST_LIMB(0x3d5513b504537157),CNST_LIMB(0x189c1e60b57f60)), + P(2671,CNST_LIMB(0x314391f8862e948f),CNST_LIMB(0x18893fbc8690b9)), + P(2677,CNST_LIMB(0xdc0b17cfcd81f5dd),CNST_LIMB(0x187b2bb3e1041c)), + P(2683,CNST_LIMB(0x2f6bea3ec89044b3),CNST_LIMB(0x186d27c9cdcfb8)), + P(2687,CNST_LIMB(0xce13a05869f1b57f),CNST_LIMB(0x1863d8bf4f2c1c)), + P(2689,CNST_LIMB(0x7593474e8ace3581),CNST_LIMB(0x185f33e2ad7593)), + P(2693,CNST_LIMB(0x7fc329295a05e4d),CNST_LIMB(0x1855ef75973e13)), + P(2699,CNST_LIMB(0xb05377cba4908d23),CNST_LIMB(0x1848160153f134)), + P(2707,CNST_LIMB(0xe7b2131a628aa39b),CNST_LIMB(0x1835b72e6f0656)), + P(2711,CNST_LIMB(0x9031dbed7de01527),CNST_LIMB(0x182c922d83eb39)), + P(2713,CNST_LIMB(0x76844b1c670aa9a9),CNST_LIMB(0x18280243c0365a)), + P(2719,CNST_LIMB(0x6a03f4533b08915f),CNST_LIMB(0x181a5cd5898e73)), + P(2729,CNST_LIMB(0x1dbca579db0a3999),CNST_LIMB(0x1803c0961773aa)), + P(2731,CNST_LIMB(0x2ffe800bffa003),CNST_LIMB(0x17ff4005ffd001)), + P(2741,CNST_LIMB(0x478ab1a3e936139d),CNST_LIMB(0x17e8d670433edb)), + P(2749,CNST_LIMB(0x66e722bc4c5cc095),CNST_LIMB(0x17d7066cf4bb5d)), + P(2753,CNST_LIMB(0x7a8f63c717278541),CNST_LIMB(0x17ce285b806b1f)), + P(2767,CNST_LIMB(0xdf6eee24d292bc2f),CNST_LIMB(0x17af52cdf27e02)), + P(2777,CNST_LIMB(0x9fc20d17237dd569),CNST_LIMB(0x17997d47d01039)), + P(2789,CNST_LIMB(0xcdf9932356bda2ed),CNST_LIMB(0x177f7ec2c6d0ba)), + P(2791,CNST_LIMB(0x97b5e332e80f68d7),CNST_LIMB(0x177b2f3cd00756)), + P(2797,CNST_LIMB(0x46eee26fd875e2e5),CNST_LIMB(0x176e4a22f692a0)), + P(2801,CNST_LIMB(0x3548a8e65157a611),CNST_LIMB(0x1765b94271e11b)), + P(2803,CNST_LIMB(0xc288d03be9b71e3b),CNST_LIMB(0x1761732b044ae4)), + P(2819,CNST_LIMB(0x8151186db38937ab),CNST_LIMB(0x173f7a5300a2bc)), + P(2833,CNST_LIMB(0x7800b910895a45f1),CNST_LIMB(0x1722112b48be1f)), + P(2837,CNST_LIMB(0xaee0b024182eec3d),CNST_LIMB(0x1719b7a16eb843)), + P(2843,CNST_LIMB(0x96323eda173b5713),CNST_LIMB(0x170d3c99cc5052)), + P(2851,CNST_LIMB(0xed0dbd03ae77c8b),CNST_LIMB(0x16fcad7aed3bb6)), + P(2857,CNST_LIMB(0xf73800b7828dc119),CNST_LIMB(0x16f051b8231ffd)), + P(2861,CNST_LIMB(0x1b61715ec22b7ca5),CNST_LIMB(0x16e81beae20643)), + P(2879,CNST_LIMB(0xa8533a991ead64bf),CNST_LIMB(0x16c3721584c1d8)), + P(2887,CNST_LIMB(0x7f6c7290e46c2e77),CNST_LIMB(0x16b34c2ba09663)), + P(2897,CNST_LIMB(0x6325e8d907b01db1),CNST_LIMB(0x169f3ce292ddcd)), + P(2903,CNST_LIMB(0x28909f70152a1067),CNST_LIMB(0x169344b2220a0d)), + P(2909,CNST_LIMB(0xea7077af0997a0f5),CNST_LIMB(0x1687592593c1b1)), + P(2917,CNST_LIMB(0x7e605cad10c32e6d),CNST_LIMB(0x167787f1418ec9)), + P(2927,CNST_LIMB(0x471b33570635b38f),CNST_LIMB(0x1663e190395ff2)), + P(2939,CNST_LIMB(0xab559fa997a61bb3),CNST_LIMB(0x164c7a4b6eb5b3)), + P(2953,CNST_LIMB(0xad4bdae562bddab9),CNST_LIMB(0x16316a061182fd)), + P(2957,CNST_LIMB(0x55e1b2f2ed62f45),CNST_LIMB(0x1629ba914584e4)), + P(2963,CNST_LIMB(0x3cd328b1a2dca9b),CNST_LIMB(0x161e3d57de21b2)), + P(2969,CNST_LIMB(0xd28f4e08733218a9),CNST_LIMB(0x1612cc01b977f0)), + P(2971,CNST_LIMB(0xb6800b077f186293),CNST_LIMB(0x160efe30c525ff)), + P(2999,CNST_LIMB(0x6fbd138c3fd9c207),CNST_LIMB(0x15da45249ec5de)), + P(3001,CNST_LIMB(0xb117ccd12ae88a89),CNST_LIMB(0x15d68ab4acff92)), + P(3011,CNST_LIMB(0x2f1a1a044046bceb),CNST_LIMB(0x15c3f989d1eb15)), + P(3019,CNST_LIMB(0x548aba0b060541e3),CNST_LIMB(0x15b535ad11b8f0)), + P(3023,CNST_LIMB(0xcf4e808cea111b2f),CNST_LIMB(0x15addb3f424ec1)), + P(3037,CNST_LIMB(0xdbec1b4fa855a475),CNST_LIMB(0x159445cb91be6b)), + P(3041,CNST_LIMB(0xe3f794eb600d7821),CNST_LIMB(0x158d0199771e63)), + P(3049,CNST_LIMB(0x34fae0d9a11f7c59),CNST_LIMB(0x157e87d9b69e04)), + P(3061,CNST_LIMB(0xf006b0ccbbac085d),CNST_LIMB(0x1568f58bc01ac3)), + P(3067,CNST_LIMB(0x3f45076dc3114733),CNST_LIMB(0x155e3c993fda9b)), + P(3079,CNST_LIMB(0xeef49bfa58a1a1b7),CNST_LIMB(0x1548eacc5e1e6e)), + P(3083,CNST_LIMB(0x12c4218bea691fa3),CNST_LIMB(0x1541d8f91ba6a7)), + P(3089,CNST_LIMB(0xbc7504e3bd5e64f1),CNST_LIMB(0x153747060cc340)), + P(3109,CNST_LIMB(0x4ee21c292bb92fad),CNST_LIMB(0x1514569f93f7c4)), + P(3119,CNST_LIMB(0x34338b7327a4bacf),CNST_LIMB(0x150309705d3d79)), + P(3121,CNST_LIMB(0x3fe5c0833d6fccd1),CNST_LIMB(0x14ff97020cf5bf)), + P(3137,CNST_LIMB(0xb1e70743535203c1),CNST_LIMB(0x14e42c114cf47e)), + P(3163,CNST_LIMB(0xefbb5dcdfb4e43d3),CNST_LIMB(0x14b835bdcb6447)), + P(3167,CNST_LIMB(0xca68467ca5394f9f),CNST_LIMB(0x14b182b53a9ab7)), + P(3169,CNST_LIMB(0x8c51c081408b97a1),CNST_LIMB(0x14ae2ad094a3d3)), + P(3181,CNST_LIMB(0x3275a899dfa5dd65),CNST_LIMB(0x149a320ea59f96)), + P(3187,CNST_LIMB(0x9e674cb62e1b78bb),CNST_LIMB(0x1490441de1a2fb)), + P(3191,CNST_LIMB(0xa37ff5bb2a998d47),CNST_LIMB(0x1489aacce57200)), + P(3203,CNST_LIMB(0x792a999db131a22b),CNST_LIMB(0x1475f82ad6ff99)), + P(3209,CNST_LIMB(0x1b48841bc30d29b9),CNST_LIMB(0x146c2cfe53204f)), + P(3217,CNST_LIMB(0xf06721d2011d3471),CNST_LIMB(0x145f2ca490d4a1)), + P(3221,CNST_LIMB(0x93fd2386dff85ebd),CNST_LIMB(0x1458b2aae0ec87)), + P(3229,CNST_LIMB(0x4ce72f54c07ed9b5),CNST_LIMB(0x144bcb0a3a3150)), + P(3251,CNST_LIMB(0xd6d0fd3e71dd827b),CNST_LIMB(0x1428a1e65441d4)), + P(3253,CNST_LIMB(0x856405fb1eed819d),CNST_LIMB(0x142575a6c210d7)), + P(3257,CNST_LIMB(0x8ea8aceb7c443989),CNST_LIMB(0x141f2025ba5c46)), + P(3259,CNST_LIMB(0x34a13026f62e5873),CNST_LIMB(0x141bf6e35420fd)), + P(3271,CNST_LIMB(0x1eea0208ec0af4f7),CNST_LIMB(0x1409141d1d313a)), + P(3299,CNST_LIMB(0x63679853cea598cb),CNST_LIMB(0x13dd8bc19c3513)), + P(3301,CNST_LIMB(0xc30b3ebd61f2d0ed),CNST_LIMB(0x13da76f714dc8f)), + P(3307,CNST_LIMB(0x7eb9037bc7f43bc3),CNST_LIMB(0x13d13e50f8f49e)), + P(3313,CNST_LIMB(0xa583e6f6ce016411),CNST_LIMB(0x13c80e37ca3819)), + P(3319,CNST_LIMB(0xf1938d895f1a74c7),CNST_LIMB(0x13bee69fa99ccf)), + P(3323,CNST_LIMB(0x80cf1491c1e81e33),CNST_LIMB(0x13b8d0ede55835)), + P(3329,CNST_LIMB(0x3c0f12886ba8f301),CNST_LIMB(0x13afb7680bb054)), + P(3331,CNST_LIMB(0xe4b786e0dfcc5ab),CNST_LIMB(0x13acb0c3841c96)), + P(3343,CNST_LIMB(0x672684c93f2d41ef),CNST_LIMB(0x139a9c5f434fde)), + P(3347,CNST_LIMB(0xe00757badb35c51b),CNST_LIMB(0x13949cf33a0d9d)), + P(3359,CNST_LIMB(0xd6d84afe66472edf),CNST_LIMB(0x1382b4a00c31b0)), + P(3361,CNST_LIMB(0xfbbc0eedcbbfb6e1),CNST_LIMB(0x137fbbc0eedcbb)), + P(3371,CNST_LIMB(0x250f43aa08a84983),CNST_LIMB(0x1370ecf047b069)), + P(3373,CNST_LIMB(0x4400e927b1acaa5),CNST_LIMB(0x136df9790e3155)), + P(3389,CNST_LIMB(0x56572be34b9d3215),CNST_LIMB(0x13567dd8defd5b)), + P(3391,CNST_LIMB(0x87964ef7781c62bf),CNST_LIMB(0x13539261fdbc34)), + P(3407,CNST_LIMB(0x29ed84051c06e9af),CNST_LIMB(0x133c564292d28a)), + P(3413,CNST_LIMB(0xb00acd11ed3f87fd),CNST_LIMB(0x1333ae178d6388)), + P(3433,CNST_LIMB(0x6307881744152d9),CNST_LIMB(0x13170ad00d1fd7)), + P(3449,CNST_LIMB(0x7a786459f5c1ccc9),CNST_LIMB(0x13005f01db0947)), + P(3457,CNST_LIMB(0x1308125d74563281),CNST_LIMB(0x12f51d40342210)), + P(3461,CNST_LIMB(0x395310a480b3e34d),CNST_LIMB(0x12ef815e4ed950)), + P(3463,CNST_LIMB(0x35985baa8b202837),CNST_LIMB(0x12ecb4abccd827)), + P(3467,CNST_LIMB(0x96304a6e052b3223),CNST_LIMB(0x12e71dc1d3d820)), + P(3469,CNST_LIMB(0xbd8265fc9af8fd45),CNST_LIMB(0x12e45389a16495)), + P(3491,CNST_LIMB(0x1b6d0b383ec58e0b),CNST_LIMB(0x12c5d9226476cc)), + P(3499,CNST_LIMB(0xc21a7c3b68b28503),CNST_LIMB(0x12badc391156fd)), + P(3511,CNST_LIMB(0x236fa180fbfd6007),CNST_LIMB(0x12aa78e412f522)), + P(3517,CNST_LIMB(0xc42accd440ed9595),CNST_LIMB(0x12a251f5f47fd1)), + P(3527,CNST_LIMB(0x7acf7128236ba3f7),CNST_LIMB(0x1294cb85c53534)), + P(3529,CNST_LIMB(0xf909367a987b9c79),CNST_LIMB(0x12921963beb65e)), + P(3533,CNST_LIMB(0xb64efb252bfba705),CNST_LIMB(0x128cb777c69ca8)), + P(3539,CNST_LIMB(0x980d4f5a7e4cd25b),CNST_LIMB(0x1284aa6cf07294)), + P(3541,CNST_LIMB(0xe1ecc4ef27b0c37d),CNST_LIMB(0x1281fcf6ac7f87)), + P(3547,CNST_LIMB(0x9111aebb81d72653),CNST_LIMB(0x1279f937367db9)), + P(3557,CNST_LIMB(0x8951f985cb2c67ed),CNST_LIMB(0x126cad0488be94)), + P(3559,CNST_LIMB(0xc439d4fc54e0b5d7),CNST_LIMB(0x126a06794646a2)), + P(3571,CNST_LIMB(0xe857bf31896d533b),CNST_LIMB(0x125a2f2bcd3e95)), + P(3581,CNST_LIMB(0xb614bb4cb5023755),CNST_LIMB(0x124d108389e6b1)), + P(3583,CNST_LIMB(0x938a89e5473bf1ff),CNST_LIMB(0x124a73083771ac)), + P(3593,CNST_LIMB(0xeac481aca34de039),CNST_LIMB(0x123d6acda0620a)), + P(3607,CNST_LIMB(0x14b961badf4809a7),CNST_LIMB(0x122b4b2917eafd)), + P(3613,CNST_LIMB(0x76784fecba352435),CNST_LIMB(0x122391bfce1e2f)), + P(3617,CNST_LIMB(0xefa689bb58aef5e1),CNST_LIMB(0x121e6f1ea579f2)), + P(3623,CNST_LIMB(0xb2b2c4db9c3a8197),CNST_LIMB(0x1216c09e471568)), + P(3631,CNST_LIMB(0x2503bc992279f8cf),CNST_LIMB(0x120c8cb9d93909)), + P(3637,CNST_LIMB(0xd2ab9aec5ca1541d),CNST_LIMB(0x1204ed58e64ef9)), + P(3643,CNST_LIMB(0x3e78ba1460f99af3),CNST_LIMB(0x11fd546578f00c)), + P(3659,CNST_LIMB(0xa01426572cfcb63),CNST_LIMB(0x11e9310b8b4c9c)), + P(3671,CNST_LIMB(0xbea857968f3cbd67),CNST_LIMB(0x11da3405db9911)), + P(3673,CNST_LIMB(0x78db213eefe659e9),CNST_LIMB(0x11d7b6f4eb055d)), + P(3677,CNST_LIMB(0x963e8541a74d35f5),CNST_LIMB(0x11d2bee748c145)), + P(3691,CNST_LIMB(0x9e22d152776f2e43),CNST_LIMB(0x11c1706ddce7a7)), + P(3697,CNST_LIMB(0x5d10d39d1e1f291),CNST_LIMB(0x11ba0fed2a4f14)), + P(3701,CNST_LIMB(0x374468dccaced1dd),CNST_LIMB(0x11b528538ed64a)), + P(3709,CNST_LIMB(0x8d145c7d110c5ad5),CNST_LIMB(0x11ab61404242ac)), + P(3719,CNST_LIMB(0x3251a39f5acb5737),CNST_LIMB(0x119f378ce81d2f)), + P(3727,CNST_LIMB(0xa66e50171443506f),CNST_LIMB(0x1195889ece79da)), + P(3733,CNST_LIMB(0x124f69ad91dd4cbd),CNST_LIMB(0x118e4c65387077)), + P(3739,CNST_LIMB(0xec24f8f2a61a2793),CNST_LIMB(0x1187161d70e725)), + P(3761,CNST_LIMB(0xb472148e656b7a51),CNST_LIMB(0x116cd6d1c85239)), + P(3767,CNST_LIMB(0xadf9570e1142f07),CNST_LIMB(0x1165bbe7ce86b1)), + P(3769,CNST_LIMB(0x89bf33b065119789),CNST_LIMB(0x11635ee344ce36)), + P(3779,CNST_LIMB(0x8f0149803cb291eb),CNST_LIMB(0x11579767b6d679)), + P(3793,CNST_LIMB(0x8334b63afd190a31),CNST_LIMB(0x114734711e2b54)), + P(3797,CNST_LIMB(0x920908d50d6aba7d),CNST_LIMB(0x11428b90147f05)), + P(3803,CNST_LIMB(0x57d8b018c5a33d53),CNST_LIMB(0x113b92f3021636)), + P(3821,CNST_LIMB(0xea1773092dc27ee5),CNST_LIMB(0x1126cabc886884)), + P(3823,CNST_LIMB(0xcae5f38b7bf2e00f),CNST_LIMB(0x11247eb1b85976)), + P(3833,CNST_LIMB(0x2bd02df34f695349),CNST_LIMB(0x11190bb01efd65)), + P(3847,CNST_LIMB(0xddfecd5be62e2eb7),CNST_LIMB(0x11091de0fd679c)), + P(3851,CNST_LIMB(0xdbf849ebec96c4a3),CNST_LIMB(0x1104963c7e4e0b)), + P(3853,CNST_LIMB(0xda31d4d0187357c5),CNST_LIMB(0x110253516420b0)), + P(3863,CNST_LIMB(0xe34e21cc2d5418a7),CNST_LIMB(0x10f70db7c41797)), + P(3877,CNST_LIMB(0x68ca5137a9e574ad),CNST_LIMB(0x10e75ee2bf9ecd)), + P(3881,CNST_LIMB(0x3eaa0d0f804bfd19),CNST_LIMB(0x10e2e91c6e0676)), + P(3889,CNST_LIMB(0x554fb753cc20e9d1),CNST_LIMB(0x10da049b9d428d)), + P(3907,CNST_LIMB(0x797afcca1300756b),CNST_LIMB(0x10c6248fe3b1a2)), + P(3911,CNST_LIMB(0x8b8d950b52eeea77),CNST_LIMB(0x10c1c03ed690eb)), + P(3917,CNST_LIMB(0xfb6cd166acabc185),CNST_LIMB(0x10bb2e1379e3a2)), + P(3919,CNST_LIMB(0x4eb6c5ed9437a7af),CNST_LIMB(0x10b8fe7f61228e)), + P(3923,CNST_LIMB(0xd1eddbd91b790cdb),CNST_LIMB(0x10b4a10d60a4f7)), + P(3929,CNST_LIMB(0x93d714ea4d8948e9),CNST_LIMB(0x10ae192681ec0f)), + P(3931,CNST_LIMB(0x3ca13ed8145188d3),CNST_LIMB(0x10abecfbe5b0ae)), + P(3943,CNST_LIMB(0x829086016da89c57),CNST_LIMB(0x109eefd568b96d)), + P(3947,CNST_LIMB(0xd7da1f432124a543),CNST_LIMB(0x109a9ff178b40c)), + P(3967,CNST_LIMB(0x7ead5581632fb07f),CNST_LIMB(0x108531e22f9ff9)), + P(3989,CNST_LIMB(0x35443837f63ec3bd),CNST_LIMB(0x106ddec1af4417)), + P(4001,CNST_LIMB(0x89e2b200e5519461),CNST_LIMB(0x10614174a4911d)), + P(4003,CNST_LIMB(0xe9ae44f0b7289c0b),CNST_LIMB(0x105f291f0448e7)), + P(4007,CNST_LIMB(0x94387a277b9fa817),CNST_LIMB(0x105afa0ef32891)), + P(4013,CNST_LIMB(0xc84f1a58abfc2c25),CNST_LIMB(0x1054b777bd2530)), + P(4019,CNST_LIMB(0x71101d8e3c83377b),CNST_LIMB(0x104e79a97fb69e)), + P(4021,CNST_LIMB(0xc024abe5c50ba69d),CNST_LIMB(0x104c661eafd845)), + P(4027,CNST_LIMB(0x15de4eb365a65d73),CNST_LIMB(0x10462ea939c933)), + P(4049,CNST_LIMB(0x9ed28a76bcca931),CNST_LIMB(0x102f8baa442836)), + P(4051,CNST_LIMB(0x816bffbf4a00205b),CNST_LIMB(0x102d7ff7e94004)), + P(4057,CNST_LIMB(0x1f5c71543d558069),CNST_LIMB(0x10275ff9f13c02)), + P(4073,CNST_LIMB(0xf25c64d0ec53b859),CNST_LIMB(0x1017213fcbb4d3)), + P(4079,CNST_LIMB(0x96c02c2ef1e0ff0f),CNST_LIMB(0x101112234579d1)), + P(4091,CNST_LIMB(0x19a804816870a333),CNST_LIMB(0x100501907d271c)), + P(4093,CNST_LIMB(0x6de49add0971c555),CNST_LIMB(0x100300901b0510)), + P(4099,CNST_LIMB(0x528087e684c71aab),CNST_LIMB(0xffd008fe5050f)), + P(4111,CNST_LIMB(0xa94152c269bcdeef),CNST_LIMB(0xff10e02dd5084)), + P(4127,CNST_LIMB(0x379450a3c2b6bdf),CNST_LIMB(0xfe13b9c80c67f)), + P(4129,CNST_LIMB(0xd2cd38bafe5373e1),CNST_LIMB(0xfdf4384be37ad)), + P(4133,CNST_LIMB(0xc29df2bea71d8bad),CNST_LIMB(0xfdb54cbe8766e)), + P(4139,CNST_LIMB(0xc15862775f302e83),CNST_LIMB(0xfd5725ca6ff32)), + P(4153,CNST_LIMB(0x1016af2fe55ede09),CNST_LIMB(0xfc7c84684c6fb)), + P(4157,CNST_LIMB(0x3d26dbd9d1910715),CNST_LIMB(0xfc3e5265dbaa8)), + P(4159,CNST_LIMB(0x621dab2dfaf3dfbf),CNST_LIMB(0xfc1f44e0cae12)), + P(4177,CNST_LIMB(0xb6f1d7ac287338b1),CNST_LIMB(0xfb0921c50a7af)), + P(4201,CNST_LIMB(0x8d9e9f0c3f9e7fd9),CNST_LIMB(0xf999fd70cbc6b)), + P(4211,CNST_LIMB(0x60a93f8762e914bb),CNST_LIMB(0xf9023fd5339d0)), + P(4217,CNST_LIMB(0xb14371f247c159c9),CNST_LIMB(0xf8a78ce671475)), + P(4219,CNST_LIMB(0x6dd3b484471d4eb3),CNST_LIMB(0xf8895fee86574)), + P(4229,CNST_LIMB(0xcd172f4701c1684d),CNST_LIMB(0xf7f2ecb084b10)), + P(4231,CNST_LIMB(0x372e686ed8bb537),CNST_LIMB(0xf7d4eb7d10c29)), + P(4241,CNST_LIMB(0xbc07f7ca65c5b071),CNST_LIMB(0xf73f52277a3c3)), + P(4243,CNST_LIMB(0xab2b6170c3f78d9b),CNST_LIMB(0xf7217c598961c)), + P(4253,CNST_LIMB(0xf3d74f461fe6f5b5),CNST_LIMB(0xf68cbb1448f42)), + P(4259,CNST_LIMB(0xdbc13f4b31f3230b),CNST_LIMB(0xf633d0276e4c5)), + P(4261,CNST_LIMB(0xd1420716e3f1572d),CNST_LIMB(0xf6163ac20ec79)), + P(4271,CNST_LIMB(0xd5be2fd4d805464f),CNST_LIMB(0xf582ba2bc16c6)), + P(4273,CNST_LIMB(0xc68b97c136943851),CNST_LIMB(0xf5654f43290a0)), + P(4283,CNST_LIMB(0x9e27918af7cfb473),CNST_LIMB(0xf4d2a23810bc6)), + P(4289,CNST_LIMB(0x5ec8ab6c36ac7f41),CNST_LIMB(0xf47af4d6a2f27)), + P(4297,CNST_LIMB(0x964076331dd90979),CNST_LIMB(0xf4066f2b6e652)), + P(4327,CNST_LIMB(0x30198eff77b002d7),CNST_LIMB(0xf2555048e3a92)), + P(4337,CNST_LIMB(0x3af7cb9583ece011),CNST_LIMB(0xf1c64588a5bf6)), + P(4339,CNST_LIMB(0x34ce06f643d9883b),CNST_LIMB(0xf1a9be09cb411)), + P(4349,CNST_LIMB(0x79f767e528708c55),CNST_LIMB(0xf11b7d5259d39)), + P(4357,CNST_LIMB(0x185332d2ef2313cd),CNST_LIMB(0xf0aa284e7f802)), + P(4363,CNST_LIMB(0x43b611b84c8332a3),CNST_LIMB(0xf0556e5e3b7f2)), + P(4373,CNST_LIMB(0xc2e215e4f43bb63d),CNST_LIMB(0xefc8bcbc808e5)), + P(4391,CNST_LIMB(0xf94b9dd22ce44e97),CNST_LIMB(0xeecd1a690efbb)), + P(4397,CNST_LIMB(0xd895834a1db166a5),CNST_LIMB(0xee79aed6d65f2)), + P(4409,CNST_LIMB(0x347d2f16d19b8d09),CNST_LIMB(0xedd386114d83a)), + P(4421,CNST_LIMB(0x1b54d4dc45b7d98d),CNST_LIMB(0xed2e44366e5e2)), + P(4423,CNST_LIMB(0x117ac30d9a044877),CNST_LIMB(0xed12cf8e17f64)), + P(4441,CNST_LIMB(0xe10b78a67a526e9),CNST_LIMB(0xec1cd284b2b2d)), + P(4447,CNST_LIMB(0x92da68a818688a9f),CNST_LIMB(0xebcb44cadda1e)), + P(4451,CNST_LIMB(0xcf2b6c87f741f84b),CNST_LIMB(0xeb9505943771d)), + P(4457,CNST_LIMB(0xd264f9bd41e18ed9),CNST_LIMB(0xeb43d57efeadc)), + P(4463,CNST_LIMB(0x733cbeaa97166d8f),CNST_LIMB(0xeaf2dd4c00b03)), + P(4481,CNST_LIMB(0xc9f475b021d22e81),CNST_LIMB(0xea0141c1ba6a6)), + P(4483,CNST_LIMB(0x731f76f2ec4c852b),CNST_LIMB(0xe9e68805f05a7)), + P(4493,CNST_LIMB(0xdaf6f0c978f69945),CNST_LIMB(0xe96142b87e431)), + P(4507,CNST_LIMB(0x749c8ad20c61ec93),CNST_LIMB(0xe8a7acd811b8c)), + P(4513,CNST_LIMB(0x9307ff8bd3c1261),CNST_LIMB(0xe8587db3e001d)), + P(4517,CNST_LIMB(0x334a69fb5a486e2d),CNST_LIMB(0xe823d186d44dc)), + P(4519,CNST_LIMB(0x1f36c7bf31578617),CNST_LIMB(0xe8098463ee194)), + P(4523,CNST_LIMB(0x31ebbcc279ea6103),CNST_LIMB(0xe7d4fbfb3ee1d)), + P(4547,CNST_LIMB(0x42e2aad119f466eb),CNST_LIMB(0xe69bba6981ffa)), + P(4549,CNST_LIMB(0x106ec05a0ab1450d),CNST_LIMB(0xe681c5cf7d707)), + P(4561,CNST_LIMB(0xb1b38db92a99e731),CNST_LIMB(0xe5e684930e334)), + P(4567,CNST_LIMB(0x784ae377e67071e7),CNST_LIMB(0xe5993247dc92d)), + P(4583,CNST_LIMB(0x3e9e1471ba6671d7),CNST_LIMB(0xe4cbfee201016)), + P(4591,CNST_LIMB(0x82c29b59d4d73d0f),CNST_LIMB(0xe465ee7daf979)), + P(4597,CNST_LIMB(0xc23dd07128b5525d),CNST_LIMB(0xe4199de07af5c)), + P(4603,CNST_LIMB(0x4d4e5ce0e9245133),CNST_LIMB(0xe3cd8031d4f40)), + P(4621,CNST_LIMB(0xc8fd1057c09f8cc5),CNST_LIMB(0xe2ea56c157eb2)), + P(4637,CNST_LIMB(0xea1516e94f394035),CNST_LIMB(0xe221e5d4d3c73)), + P(4639,CNST_LIMB(0xb5e3319c564ee9df),CNST_LIMB(0xe208f09a841c7)), + P(4643,CNST_LIMB(0x126a69f90d822d8b),CNST_LIMB(0xe1d716a945161)), + P(4649,CNST_LIMB(0x501ed6348857aa19),CNST_LIMB(0xe18c78ec8fd4d)), + P(4651,CNST_LIMB(0xde344a324eee1c83),CNST_LIMB(0xe173a4a162079)), + P(4657,CNST_LIMB(0x1dd9690cb2c406d1),CNST_LIMB(0xe1294881bb494)), + P(4663,CNST_LIMB(0x8d6c5178d5e4387),CNST_LIMB(0xe0df1d5f24661)), + P(4673,CNST_LIMB(0x4cea4050a3e8fdc1),CNST_LIMB(0xe063ec7f50b1e)), + P(4679,CNST_LIMB(0xc114a06acc83f777),CNST_LIMB(0xe01a4313dc53d)), + P(4691,CNST_LIMB(0x20b060ebc0ea01db),CNST_LIMB(0xdf8780f47c350)), + P(4703,CNST_LIMB(0xfe50045acb78c99f),CNST_LIMB(0xdef57e8eb9666)), + P(4721,CNST_LIMB(0x291a68705b196e91),CNST_LIMB(0xde1bdf3f63d46)), + P(4723,CNST_LIMB(0xc1042c724273e2bb),CNST_LIMB(0xde03cb5099809)), + P(4729,CNST_LIMB(0x2cee680bb165b7c9),CNST_LIMB(0xddbbaecc84bc9)), + P(4733,CNST_LIMB(0xfd2ff9f12e0776d5),CNST_LIMB(0xdd8bb5ca73db6)), + P(4751,CNST_LIMB(0x166a5da63af2cc6f),CNST_LIMB(0xdcb4d529a6e07)), + P(4759,CNST_LIMB(0xedd16a5930408d27),CNST_LIMB(0xdc55da73dea60)), + P(4783,CNST_LIMB(0x2adf30c26528844f),CNST_LIMB(0xdb3ad2585011f)), + P(4787,CNST_LIMB(0x9a48d6572b5eec7b),CNST_LIMB(0xdb0becf636a79)), + P(4789,CNST_LIMB(0x6e8bf2877503cb9d),CNST_LIMB(0xdaf481ca6fefb)), + P(4793,CNST_LIMB(0xea27a191a7045389),CNST_LIMB(0xdac5ba7565dae)), + P(4799,CNST_LIMB(0x6eb091f34dd45d3f),CNST_LIMB(0xda7fb4e419d19)), + P(4801,CNST_LIMB(0xdc8a6cabb2937d41),CNST_LIMB(0xda6867a88d327)), + P(4813,CNST_LIMB(0xbc2f04f254922a05),CNST_LIMB(0xd9dd005f50b02)), + P(4817,CNST_LIMB(0x41431f4d6eb38631),CNST_LIMB(0xd9aeb01f763f7)), + P(4831,CNST_LIMB(0x7bd717435a08291f),CNST_LIMB(0xd90d31dd5804a)), + P(4861,CNST_LIMB(0x4232df9c91fc1a55),CNST_LIMB(0xd7b6453358f31)), + P(4871,CNST_LIMB(0xa4651e1d5382eab7),CNST_LIMB(0xd744e69d900e4)), + P(4877,CNST_LIMB(0x7cfb5409de4cf3c5),CNST_LIMB(0xd7011a317260e)), + P(4889,CNST_LIMB(0xcdd636fb068b9929),CNST_LIMB(0xd67a0126e7c19)), + P(4903,CNST_LIMB(0xee8f95e740462c97),CNST_LIMB(0xd5dd39e775bd7)), + P(4909,CNST_LIMB(0x490f97b3a758b4a5),CNST_LIMB(0xd59a4f2990168)), + P(4919,CNST_LIMB(0x641431563c441287),CNST_LIMB(0xd52b24cb6269d)), + P(4931,CNST_LIMB(0xb743dad3ec45916b),CNST_LIMB(0xd4a6571da4f04)), + P(4933,CNST_LIMB(0x7b188be8f55c878d),CNST_LIMB(0xd49044eac6581)), + P(4937,CNST_LIMB(0xd805648b2ca54ef9),CNST_LIMB(0xd4642e40d1129)), + P(4943,CNST_LIMB(0x76dbe6eef60123af),CNST_LIMB(0xd4222e81fe723)), + P(4951,CNST_LIMB(0x3711525e6a9e8867),CNST_LIMB(0xd3ca6e8c89f41)), + P(4957,CNST_LIMB(0x85c2215cb383d8f5),CNST_LIMB(0xd388ce29d4edc)), + P(4967,CNST_LIMB(0xe58f554c89825857),CNST_LIMB(0xd31bc7b7d8013)), + P(4969,CNST_LIMB(0x8fbd3b17c01dacd9),CNST_LIMB(0xd306071c13fd5)), + P(4973,CNST_LIMB(0x4c8c39dc7aedee65),CNST_LIMB(0xd2da935479b1a)), + P(4987,CNST_LIMB(0x653ac6dda86cd3b3),CNST_LIMB(0xd2430aa043597)), + P(4993,CNST_LIMB(0xd61c6791a9c2c81),CNST_LIMB(0xd2025bc6c7db7)), + P(4999,CNST_LIMB(0xb627a30090354237),CNST_LIMB(0xd1c1d4ad1732b)), + P(5003,CNST_LIMB(0x83a89a539c527c23),CNST_LIMB(0xd196e5f46f8c8)), + P(5009,CNST_LIMB(0x28c8c09330e90d71),CNST_LIMB(0xd156a0c9293e8)), + P(5011,CNST_LIMB(0xee1178d27b1f029b),CNST_LIMB(0xd1413d26e0aee)), + P(5021,CNST_LIMB(0xcecc740b37860ab5),CNST_LIMB(0xd0d68c6a4128f)), + P(5023,CNST_LIMB(0x79736fde910c485f),CNST_LIMB(0xd0c142eaf3837)), + P(5039,CNST_LIMB(0x6873d51f2487234f),CNST_LIMB(0xd01792ab9d70d)), + P(5051,CNST_LIMB(0x2a112180614fb973),CNST_LIMB(0xcf990317775bc)), + P(5059,CNST_LIMB(0xcb04cea98508f4eb),CNST_LIMB(0xcf44f8c38790a)), + P(5077,CNST_LIMB(0xc2fcd2c527e28d7d),CNST_LIMB(0xce88d96d10e45)), + P(5081,CNST_LIMB(0x980203ee10393c69),CNST_LIMB(0xce5f39b07e906)), + P(5087,CNST_LIMB(0x3fa90a1d7d75681f),CNST_LIMB(0xce20e98148847)), + P(5099,CNST_LIMB(0xdbf3bfefef217cc3),CNST_LIMB(0xcda4b9c30ccd7)), + P(5101,CNST_LIMB(0x66a17fd3087b41e5),CNST_LIMB(0xcd9015ae32495)), + P(5107,CNST_LIMB(0x962195d496fbbd3b),CNST_LIMB(0xcd524244aca36)), + P(5113,CNST_LIMB(0xc705a86155443e49),CNST_LIMB(0xcd14940099cf6)), + P(5119,CNST_LIMB(0x3f298ee0be6febff),CNST_LIMB(0xccd70ac089a07)), + P(5147,CNST_LIMB(0xaa99b084e62fa613),CNST_LIMB(0xcbb9c535c4371)), + P(5153,CNST_LIMB(0x1f000cb7d0b46fe1),CNST_LIMB(0xcb7d0b46fe0ff)), + P(5167,CNST_LIMB(0x9ed7858637c9b2cf),CNST_LIMB(0xcaefe5d7135f4)), + P(5171,CNST_LIMB(0x4d871aaf27c106fb),CNST_LIMB(0xcac7b5f00f0cd)), + P(5179,CNST_LIMB(0x2e6a467cdc75a4f3),CNST_LIMB(0xca7785ceddbea)), + P(5189,CNST_LIMB(0xe9d938fb696dde8d),CNST_LIMB(0xca13a2a86e1db)), + P(5197,CNST_LIMB(0x40ec71b0b1554485),CNST_LIMB(0xc9c4009753007)), + P(5209,CNST_LIMB(0x3aae12f861e5f3e9),CNST_LIMB(0xc94d02e64bfab)), + P(5227,CNST_LIMB(0xa97565873959f843),CNST_LIMB(0xc89b8c9c875ef)), + P(5231,CNST_LIMB(0xb5a960c09fbca8f),CNST_LIMB(0xc87447737277e)), + P(5233,CNST_LIMB(0x463fe3d268012c91),CNST_LIMB(0xc860aaa2514e3)), + P(5237,CNST_LIMB(0xe59a6bd5f5ee1bdd),CNST_LIMB(0xc8397c813f1b9)), + P(5261,CNST_LIMB(0x6542e84d7775ce45),CNST_LIMB(0xc74fa805d6d56)), + P(5273,CNST_LIMB(0x8b6eef58fd9effa9),CNST_LIMB(0xc6db8a1f5cdfe)), + P(5279,CNST_LIMB(0x58993dbb9f98075f),CNST_LIMB(0xc6a1add9e2398)), + P(5281,CNST_LIMB(0x2997955a810acf61),CNST_LIMB(0xc68e6be826648)), + P(5297,CNST_LIMB(0x76e3d2f5077db451),CNST_LIMB(0xc5f4e25fc9df0)), + P(5303,CNST_LIMB(0xb37c1d2867e30907),CNST_LIMB(0xc5bb8bf2ad1cd)), + P(5309,CNST_LIMB(0x53ce6e09bd8d8695),CNST_LIMB(0xc58256b316ced)), + P(5323,CNST_LIMB(0x39db291ea2a6b0e3),CNST_LIMB(0xc4fd5ad917b5b)), + P(5333,CNST_LIMB(0xddd265ab9c58847d),CNST_LIMB(0xc49ecb3ea4d7a)), + P(5347,CNST_LIMB(0x5beca8562dddd0cb),CNST_LIMB(0xc41b00b7d950a)), + P(5351,CNST_LIMB(0xb69031c153ddbed7),CNST_LIMB(0xc3f57990b87a1)), + P(5381,CNST_LIMB(0xd03c2271b42a6fcd),CNST_LIMB(0xc2ddcb31250f8)), + P(5387,CNST_LIMB(0xcd6fd19e63e40ea3),CNST_LIMB(0xc2a63b3651432)), + P(5393,CNST_LIMB(0xf7687aa8e4fd7bf1),CNST_LIMB(0xc26ecae1db72e)), + P(5399,CNST_LIMB(0x649dfda112a272a7),CNST_LIMB(0xc2377a18c051e)), + P(5407,CNST_LIMB(0xecf7866a56d526df),CNST_LIMB(0xc1ede9efcec29)), + P(5413,CNST_LIMB(0x72bbf1cfdaebfead),CNST_LIMB(0xc1b6e258d13a0)), + P(5417,CNST_LIMB(0x55f6a48df7055719),CNST_LIMB(0xc19243f5399bb)), + P(5419,CNST_LIMB(0x80060bffcfa00183),CNST_LIMB(0xc17ff9f400305)), + P(5431,CNST_LIMB(0x8a104f309919b087),CNST_LIMB(0xc112865703b94)), + P(5437,CNST_LIMB(0x98fa7db7652f6a15),CNST_LIMB(0xc0dbfaea33225)), + P(5441,CNST_LIMB(0x5d7d1b3df70f7ac1),CNST_LIMB(0xc0b7af12ddfb9)), + P(5443,CNST_LIMB(0x16ab7b5e04cc1f6b),CNST_LIMB(0xc0a58e464462c)), + P(5449,CNST_LIMB(0x78a5bfd2e5ececf9),CNST_LIMB(0xc06f40512eef2)), + P(5471,CNST_LIMB(0x6506392e171d869f),CNST_LIMB(0xbfa9275a2b247)), + P(5477,CNST_LIMB(0xc3fc12e221ef146d),CNST_LIMB(0xbf7367402cdf0)), + P(5479,CNST_LIMB(0xf8aa132822c33657),CNST_LIMB(0xbf61833f4f921)), + P(5483,CNST_LIMB(0x894496574f536f43),CNST_LIMB(0xbf3dc543a74a1)), + P(5501,CNST_LIMB(0x8b2546b08fb4cbd5),CNST_LIMB(0xbe9d9302a7115)), + P(5503,CNST_LIMB(0x43bbb561bd1aa7f),CNST_LIMB(0xbe8bd6e051e01)), + P(5507,CNST_LIMB(0x2412c7cc4ea7a12b),CNST_LIMB(0xbe6868804d5a6)), + P(5519,CNST_LIMB(0x6f0bd406dd71696f),CNST_LIMB(0xbdfe6c4359f0e)), + P(5521,CNST_LIMB(0xad475c6988d54b71),CNST_LIMB(0xbdeccdb0b5c3a)), + P(5527,CNST_LIMB(0xd812e5d48dbbba27),CNST_LIMB(0xbdb8058ee429a)), + P(5531,CNST_LIMB(0x22aaca437ba04893),CNST_LIMB(0xbd94e5c1b371f)), + P(5557,CNST_LIMB(0xdba6ff1fecd5f09d),CNST_LIMB(0xbcb1d293b1af3)), + P(5563,CNST_LIMB(0x13016d3396286773),CNST_LIMB(0xbc7db8db0c1a5)), + P(5569,CNST_LIMB(0xc746494631bcfa41),CNST_LIMB(0xbc49bbdfd2662)), + P(5573,CNST_LIMB(0xd14888565bf6a10d),CNST_LIMB(0xbc2723240f402)), + P(5581,CNST_LIMB(0xc002ef885f0adf05),CNST_LIMB(0xbbe217c2b7c13)), + P(5591,CNST_LIMB(0xe5a04da7fee6ade7),CNST_LIMB(0xbb8c10aab27b2)), + P(5623,CNST_LIMB(0xc114ce5468593bc7),CNST_LIMB(0xba7ad528a7e79)), + P(5639,CNST_LIMB(0xbb6747dd7f577b7),CNST_LIMB(0xb9f3611b48c5e)), + P(5641,CNST_LIMB(0x395ce5a20f285839),CNST_LIMB(0xb9e2806e5e7c4)), + P(5647,CNST_LIMB(0x6eee8be66e8618ef),CNST_LIMB(0xb9aff0c4913fe)), + P(5651,CNST_LIMB(0x52acf64297f1241b),CNST_LIMB(0xb98e4aedd581c)), + P(5653,CNST_LIMB(0x361dcc48a364093d),CNST_LIMB(0xb97d7c94b7dc2)), + P(5657,CNST_LIMB(0x342d6f475d72e629),CNST_LIMB(0xb95be902d9d9e)), + P(5659,CNST_LIMB(0x5e978bd46410d413),CNST_LIMB(0xb94b23c872b90)), + P(5669,CNST_LIMB(0xcc3433d75ba015ad),CNST_LIMB(0xb8f77714d15a1)), + P(5683,CNST_LIMB(0x1c83b7628458d4fb),CNST_LIMB(0xb882d0beff6a1)), + P(5689,CNST_LIMB(0xf9ca45637e38f809),CNST_LIMB(0xb850ff9852703)), + P(5693,CNST_LIMB(0xcbed792ffaf6b115),CNST_LIMB(0xb82fd86db8806)), + P(5701,CNST_LIMB(0x9abd961d8c0e8c8d),CNST_LIMB(0xb7edadd32f76c)), + P(5711,CNST_LIMB(0xe69572fa659340af),CNST_LIMB(0xb79b3b4df3b7b)), + P(5717,CNST_LIMB(0x9187e7483a6436fd),CNST_LIMB(0xb769e6d59833f)), + P(5737,CNST_LIMB(0x1e9c726993bed9d9),CNST_LIMB(0xb6c636b5141ff)), + P(5741,CNST_LIMB(0x243554db91976365),CNST_LIMB(0xb6a59ceae8801)), + P(5743,CNST_LIMB(0x4d06ff994c0088f),CNST_LIMB(0xb6955461e38f7)), + P(5749,CNST_LIMB(0x25b76abcb74889dd),CNST_LIMB(0xb6648c2dc6bc2)), + P(5779,CNST_LIMB(0x3a409642893c779b),CNST_LIMB(0xb572282260209)), + P(5783,CNST_LIMB(0x8f8f620d8bc0c927),CNST_LIMB(0xb552072bde889)), + P(5791,CNST_LIMB(0x6f9f196b3369855f),CNST_LIMB(0xb511e7552f9c4)), + P(5801,CNST_LIMB(0x92a522bb0638ed99),CNST_LIMB(0xb4c1ff34a5c0e)), + P(5807,CNST_LIMB(0x96270f1efdd7004f),CNST_LIMB(0xb4922f58d4aa2)), + P(5813,CNST_LIMB(0xb4844b380fdaa79d),CNST_LIMB(0xb46278c16b967)), + P(5821,CNST_LIMB(0x108936aa5f9c1495),CNST_LIMB(0xb42301cd99b49)), + P(5827,CNST_LIMB(0xb60f606f104c9eb),CNST_LIMB(0xb3f385dd77e4e)), + P(5839,CNST_LIMB(0xc663dfe8263b302f),CNST_LIMB(0xb394d8ef8f0f6)), + P(5843,CNST_LIMB(0xc91a280b9110b15b),CNST_LIMB(0xb375601507c14)), + P(5849,CNST_LIMB(0x904287118d10969),CNST_LIMB(0xb3463f76be376)), + P(5851,CNST_LIMB(0x160d36a5d31bf553),CNST_LIMB(0xb3368f6c4a07c)), + P(5857,CNST_LIMB(0xe84f5fda3c67ad21),CNST_LIMB(0xb3078fc1c25f0)), + P(5861,CNST_LIMB(0xbd85701f72d4b6ed),CNST_LIMB(0xb2e84854e93e5)), + P(5867,CNST_LIMB(0x4c50cf5924dee1c3),CNST_LIMB(0xb2b971aa909a4)), + P(5869,CNST_LIMB(0x2455aaf1633bb6e5),CNST_LIMB(0xb2a9da39d6bc8)), + P(5879,CNST_LIMB(0xd775b39f549b8ac7),CNST_LIMB(0xb25c0dc29a0fc)), + P(5881,CNST_LIMB(0x87fcdda7a252cb49),CNST_LIMB(0xb24c8698449a7)), + P(5897,CNST_LIMB(0x53df2e3bd254a739),CNST_LIMB(0xb1d0ae579aefe)), + P(5903,CNST_LIMB(0x8915e69623a5f7ef),CNST_LIMB(0xb1a2698ea2f9e)), + P(5923,CNST_LIMB(0x1ef24c80742dd08b),CNST_LIMB(0xb108dc4186078)), + P(5927,CNST_LIMB(0xb4d87aaa6fb1e897),CNST_LIMB(0xb0ea463b00212)), + P(5939,CNST_LIMB(0x788573e8b92dbbfb),CNST_LIMB(0xb08ec37007962)), + P(5953,CNST_LIMB(0x2527b137b0878c1),CNST_LIMB(0xb024778cc023c)), + P(5981,CNST_LIMB(0x1870a7c8dee9f4f5),CNST_LIMB(0xaf515df36a88e)), + P(5987,CNST_LIMB(0x39b99e40910a224b),CNST_LIMB(0xaf24635f6561e)), + P(6007,CNST_LIMB(0x45821c0abd4df247),CNST_LIMB(0xae8f1b92baeaf)), + P(6011,CNST_LIMB(0x10fe2b2f50e02fb3),CNST_LIMB(0xae715eee11f8e)), + P(6029,CNST_LIMB(0x5762b90c043f0345),CNST_LIMB(0xadec0b0a3bb36)), + P(6037,CNST_LIMB(0x82a67b9193b27bbd),CNST_LIMB(0xadb10aa4c956f)), + P(6043,CNST_LIMB(0xa6e914e28ec37693),CNST_LIMB(0xad84e49752245)), + P(6047,CNST_LIMB(0x835d9a4facaf445f),CNST_LIMB(0xad6782597f0c2)), + P(6053,CNST_LIMB(0x48def8175884f82d),CNST_LIMB(0xad3b81a0d72fe)), + P(6067,CNST_LIMB(0xae900e2d7c9a6f7b),CNST_LIMB(0xacd52beced79e)), + P(6073,CNST_LIMB(0x1c08431bdd18be89),CNST_LIMB(0xaca9755063254)), + P(6079,CNST_LIMB(0xb370a66d684fd83f),CNST_LIMB(0xac7dd4cafb12a)), + P(6089,CNST_LIMB(0xb4be33e18f93b279),CNST_LIMB(0xac354f80dca44)), + P(6091,CNST_LIMB(0x310c50872a7dd5e3),CNST_LIMB(0xac26d5c2b8ad2)), + P(6101,CNST_LIMB(0x447ab1281276697d),CNST_LIMB(0xabde997dabd3d)), + P(6113,CNST_LIMB(0xc2f122216b2a6c21),CNST_LIMB(0xab883aa1100a0)), + P(6121,CNST_LIMB(0xab99c8b5ae1c3059),CNST_LIMB(0xab4ed637f5a0b)), + P(6131,CNST_LIMB(0xb78e17a2227d593b),CNST_LIMB(0xab074e9febf52)), + P(6133,CNST_LIMB(0xabf97d03f7269c5d),CNST_LIMB(0xaaf90778c2039)), + P(6143,CNST_LIMB(0x867aefc9fdbfe7ff),CNST_LIMB(0xaab1c7684f034)), + P(6151,CNST_LIMB(0xf7f7ad182e47d5b7),CNST_LIMB(0xaa78f20ebbb3e)), + P(6163,CNST_LIMB(0x50dff95a9847721b),CNST_LIMB(0xaa23f8dafd4cc)), + P(6173,CNST_LIMB(0xe4cb8a0e83cb6a35),CNST_LIMB(0xa9dd69cad5934)), + P(6197,CNST_LIMB(0x8da72ecdf9247a1d),CNST_LIMB(0xa935004a07302)), + P(6199,CNST_LIMB(0xc5b04bfc87f31d87),CNST_LIMB(0xa9270690f3d14)), + P(6203,CNST_LIMB(0xe2dcf622ea2b00f3),CNST_LIMB(0xa90b1a0aa5d30)), + P(6211,CNST_LIMB(0xb9ce9f2e4972f46b),CNST_LIMB(0xa8d35c9d731e9)), + P(6217,CNST_LIMB(0x1ed785c911bf59f9),CNST_LIMB(0xa8a9a6a51f16c)), + P(6221,CNST_LIMB(0x4ddb8a4eed70e085),CNST_LIMB(0xa88de370f596b)), + P(6229,CNST_LIMB(0x81e93b4df68c24fd),CNST_LIMB(0xa856786adae36)), + P(6247,CNST_LIMB(0xee0d0812afcd8357),CNST_LIMB(0xa7da4c77d3161)), + P(6257,CNST_LIMB(0xf62e3ba72268a891),CNST_LIMB(0xa7959f863d4a1)), + P(6263,CNST_LIMB(0x3194d367c8154147),CNST_LIMB(0xa76c85e80c195)), + P(6269,CNST_LIMB(0xd096ede8e30c20d5),CNST_LIMB(0xa743806dc44c4)), + P(6271,CNST_LIMB(0xd68624d27b87a77f),CNST_LIMB(0xa735d866dfa0a)), + P(6277,CNST_LIMB(0xb728fcdc11c8204d),CNST_LIMB(0xa70cedb02531e)), + P(6287,CNST_LIMB(0x9d6b6038077e066f),CNST_LIMB(0xa6c8e842c770f)), + P(6299,CNST_LIMB(0xaa732d7a4a360d93),CNST_LIMB(0xa67791215dd74)), + P(6301,CNST_LIMB(0x36af98a423972db5),CNST_LIMB(0xa66a0a51d363d)), + P(6311,CNST_LIMB(0xc31d00da12940f17),CNST_LIMB(0xa626893011861)), + P(6317,CNST_LIMB(0xed85352107410b25),CNST_LIMB(0xa5fe22c55c089)), + P(6323,CNST_LIMB(0x829c85ee6db8567b),CNST_LIMB(0xa5d5cffb77275)), + P(6329,CNST_LIMB(0xef60258952cc6d89),CNST_LIMB(0xa5ad90c4186e5)), + P(6337,CNST_LIMB(0xcf28c2e0da787741),CNST_LIMB(0xa578057e7c2eb)), + P(6343,CNST_LIMB(0x57567d8494af28f7),CNST_LIMB(0xa54ff3bb10e91)), + P(6353,CNST_LIMB(0x2c7c98518f174031),CNST_LIMB(0xa50d5683edc94)), + P(6359,CNST_LIMB(0xb28b363a36825ae7),CNST_LIMB(0xa4e57854b3df4)), + P(6361,CNST_LIMB(0xed1ffeb64f9ae769),CNST_LIMB(0xa4d8328c4b800)), + P(6367,CNST_LIMB(0xcbbb0115e9b9a31f),CNST_LIMB(0xa4b06e01d97b3)), + P(6373,CNST_LIMB(0x8d3c5fecb7f9e4ed),CNST_LIMB(0xa488bca2c4449)), + P(6379,CNST_LIMB(0x816271698195cfc3),CNST_LIMB(0xa4611e6132ed5)), + P(6389,CNST_LIMB(0x9ac939d1c2b1d35d),CNST_LIMB(0xa41f40f39e646)), + P(6397,CNST_LIMB(0xdd9fb7017b0ec455),CNST_LIMB(0xa3eab5c3e44e9)), + P(6421,CNST_LIMB(0xc94cab1e57276e3d),CNST_LIMB(0xa34ddd50561e0)), + P(6427,CNST_LIMB(0x8b8806b117c79913),CNST_LIMB(0xa326d60e94186)), + P(6449,CNST_LIMB(0xa9e63292a3269fd1),CNST_LIMB(0xa2985a81ce614)), + P(6451,CNST_LIMB(0x76da5710f1e989fb),CNST_LIMB(0xa28b72e26f82e)), + P(6469,CNST_LIMB(0xdded6688d83a918d),CNST_LIMB(0xa217aa3479693)), + P(6473,CNST_LIMB(0x4e446b6a305428f9),CNST_LIMB(0xa1fe05c62df4b)), + P(6481,CNST_LIMB(0x4ddaca7a3696cfb1),CNST_LIMB(0xa1cad538aebf9)), + P(6491,CNST_LIMB(0x7eadc4eb87f26ed3),CNST_LIMB(0xa18b05f490083)), + P(6521,CNST_LIMB(0x76c13a0ff04c00c9),CNST_LIMB(0xa0ccc4c28fc31)), + P(6529,CNST_LIMB(0xcbf800504d2a2681),CNST_LIMB(0xa09a544d01ffe)), + P(6547,CNST_LIMB(0x731dada6c4fec9b),CNST_LIMB(0xa0294aa53e9a2)), + P(6551,CNST_LIMB(0xbcb52a664e63f627),CNST_LIMB(0xa01041a6aaed5)), + P(6553,CNST_LIMB(0xf1f9abda071c2aa9),CNST_LIMB(0xa003c01680870)), + P(6563,CNST_LIMB(0xf262ffa620ffe20b),CNST_LIMB(0x9fc5558a971c8)), + P(6569,CNST_LIMB(0x93774a3d57199a99),CNST_LIMB(0x9f9ff9c3c03e5)), + P(6571,CNST_LIMB(0xfb3541cd467a1903),CNST_LIMB(0x9f9389b864ab9)), + P(6577,CNST_LIMB(0x6828cab6b4fe8f51),CNST_LIMB(0x9f6e4534bdca8)), + P(6581,CNST_LIMB(0x12ac03e3d624cc9d),CNST_LIMB(0x9f557687235c2)), + P(6599,CNST_LIMB(0x6363bd1e9bb7d7f7),CNST_LIMB(0x9ee633c0391ab)), + P(6607,CNST_LIMB(0x334cfd676a484d2f),CNST_LIMB(0x9eb4f28e0bb39)), + P(6619,CNST_LIMB(0xd511acd86f143a53),CNST_LIMB(0x9e6b49e92e4bb)), + P(6637,CNST_LIMB(0x73fc2490e0062be5),CNST_LIMB(0x9dfd4ccbd0045)), + P(6653,CNST_LIMB(0x10780dda36b78b55),CNST_LIMB(0x9d9c0828536c1)), + P(6659,CNST_LIMB(0xabf601274064e0ab),CNST_LIMB(0x9d77ad449f777)), + P(6661,CNST_LIMB(0x3ef3e4ca27e4a2cd),CNST_LIMB(0x9d6b92b28ee48)), + P(6673,CNST_LIMB(0x9216a26e690a16f1),CNST_LIMB(0x9d231a476ed51)), + P(6679,CNST_LIMB(0xbae4849e6034bda7),CNST_LIMB(0x9cfef711bf120)), + P(6689,CNST_LIMB(0xf943a0520e01e9e1),CNST_LIMB(0x9cc2e1448b765)), + P(6691,CNST_LIMB(0x7c89958f48f6658b),CNST_LIMB(0x9cb6e26cbc64d)), + P(6701,CNST_LIMB(0xe67128750e0545a5),CNST_LIMB(0x9c7b03b4a9c67)), + P(6703,CNST_LIMB(0xc6c9e1d414516ccf),CNST_LIMB(0x9c6f0fd980ab1)), + P(6709,CNST_LIMB(0x805307f996e9e81d),CNST_LIMB(0x9c4b3f3a30c3f)), + P(6719,CNST_LIMB(0x3eddd2cff46ad5bf),CNST_LIMB(0x9c0fb29436687)), + P(6733,CNST_LIMB(0x35582c1aeb5aae85),CNST_LIMB(0x9bbca025b7aec)), + P(6737,CNST_LIMB(0x4973c88573ef6eb1),CNST_LIMB(0x9ba4f4421e52c)), + P(6761,CNST_LIMB(0x3063f627c1e715d9),CNST_LIMB(0x9b1783809ff03)), + P(6763,CNST_LIMB(0x711ad679a8dcc243),CNST_LIMB(0x9b0bc5b4d2eac)), + P(6779,CNST_LIMB(0x51c224a17a3db4b3),CNST_LIMB(0x9aae172fd8b9c)), + P(6781,CNST_LIMB(0x612325ca50ddaed5),CNST_LIMB(0x9aa26954607ed)), + P(6791,CNST_LIMB(0x9929a7b6b7958b37),CNST_LIMB(0x9a681e758a022)), + P(6793,CNST_LIMB(0xa78d222e5a857bb9),CNST_LIMB(0x9a5c7b284942e)), + P(6803,CNST_LIMB(0x3ad0ffe3198d139b),CNST_LIMB(0x9a2264ecc5558)), + P(6823,CNST_LIMB(0x8b4659ac547ed17),CNST_LIMB(0x99aebb39be56f)), + P(6827,CNST_LIMB(0x1752e8904aff1003),CNST_LIMB(0x9997ae1a9faac)), + P(6829,CNST_LIMB(0x60745c37ee4e5925),CNST_LIMB(0x998c2a22b6900)), + P(6833,CNST_LIMB(0x29e2da1f6557ee51),CNST_LIMB(0x997527603f8a8)), + P(6841,CNST_LIMB(0x80d78c24ac49cb89),CNST_LIMB(0x99473685e4d50)), + P(6857,CNST_LIMB(0xc56c3b495c8d1f79),CNST_LIMB(0x98eba72512a13)), + P(6863,CNST_LIMB(0xcf5bdf9f5088ac2f),CNST_LIMB(0x98c96d8dee9e1)), + P(6869,CNST_LIMB(0x8a44800e4fae4e7d),CNST_LIMB(0x98a743453554e)), + P(6871,CNST_LIMB(0xdd76384277e578e7),CNST_LIMB(0x989be33c9e6bd)), + P(6883,CNST_LIMB(0x20b1562d2703facb),CNST_LIMB(0x9857c692e9a59)), + P(6899,CNST_LIMB(0xef56caf96e9d8e3b),CNST_LIMB(0x97fd540c05c9e)), + P(6907,CNST_LIMB(0xf54061416aede033),CNST_LIMB(0x97d04302ed944)), + P(6911,CNST_LIMB(0xe0bc78c21a26e4ff),CNST_LIMB(0x97b9c48289935)), + P(6917,CNST_LIMB(0x524f92731a179cd),CNST_LIMB(0x9798133ece717)), + P(6947,CNST_LIMB(0x5d3b4ad7deafec8b),CNST_LIMB(0x96f07c683689e)), + P(6949,CNST_LIMB(0x508828f744da88ad),CNST_LIMB(0x96e55d6393fc5)), + P(6959,CNST_LIMB(0x6e82014031710bcf),CNST_LIMB(0x96addad861696)), + P(6961,CNST_LIMB(0xadf3b77a22595dd1),CNST_LIMB(0x96a2c5a2cf0cf)), + P(6967,CNST_LIMB(0xd8f0c03f7ea8a87),CNST_LIMB(0x96818fc825eba)), + P(6971,CNST_LIMB(0x2c49e3483c3a05f3),CNST_LIMB(0x966b74027f48a)), + P(6977,CNST_LIMB(0xccecbc98c91274c1),CNST_LIMB(0x964a56850b8ed)), + P(6983,CNST_LIMB(0x273a08941bb71e77),CNST_LIMB(0x962947990eb36)), + P(6991,CNST_LIMB(0xdead5a1e3f341baf),CNST_LIMB(0x95fd4a4c885e0)), + P(6997,CNST_LIMB(0x83eee092593309fd),CNST_LIMB(0x95dc5d3954fde)), + P(7001,CNST_LIMB(0x4af5f1bd3ae87ce9),CNST_LIMB(0x95c671ddfe516)), + P(7013,CNST_LIMB(0x4ca85ad2301c9e6d),CNST_LIMB(0x9584d6340ddf1)), + P(7019,CNST_LIMB(0x1b19592cd31a3943),CNST_LIMB(0x95641de84afcc)), + P(7027,CNST_LIMB(0x3e7aa05e6dcd81bb),CNST_LIMB(0x953893c386521)), + P(7039,CNST_LIMB(0x86336cecb02ba47f),CNST_LIMB(0x94f7740d87794)), + P(7043,CNST_LIMB(0xa96b30d0c8a44b2b),CNST_LIMB(0x94e1cb70c9ce0)), + P(7057,CNST_LIMB(0xb7c63fa0cfca0571),CNST_LIMB(0x94962ecbcc7ce)), + P(7069,CNST_LIMB(0x8eaf59b405a642b5),CNST_LIMB(0x94559c69059cf)), + P(7079,CNST_LIMB(0xdf29e9cbb536dc17),CNST_LIMB(0x941ff7e640716)), + P(7103,CNST_LIMB(0xed14132c82c1d43f),CNST_LIMB(0x939fd7a24b099)), + P(7109,CNST_LIMB(0xaf68778e34caab0d),CNST_LIMB(0x937ff22c014bd)), + P(7121,CNST_LIMB(0xa4f04a3368941d31),CNST_LIMB(0x934050872c09e)), + P(7127,CNST_LIMB(0xe9960969357c07e7),CNST_LIMB(0x93209446d56f6)), + P(7129,CNST_LIMB(0xeb47b62b7360b469),CNST_LIMB(0x9316033b5bd22)), + P(7151,CNST_LIMB(0x64c653d779ae730f),CNST_LIMB(0x92a22b9a79374)), + P(7159,CNST_LIMB(0x479702d3319915c7),CNST_LIMB(0x927838edba206)), + P(7177,CNST_LIMB(0xef3c3eebc6803239),CNST_LIMB(0x921a2e7112833)), + P(7187,CNST_LIMB(0x93807b1a2e3c0e1b),CNST_LIMB(0x91e623d5660d0)), + P(7193,CNST_LIMB(0x8167e33e3f478029),CNST_LIMB(0x91c6fc0cab8b6)), + P(7207,CNST_LIMB(0x60cb76e38c339397),CNST_LIMB(0x917e7d88028eb)), + P(7211,CNST_LIMB(0xae34788ffe4bc283),CNST_LIMB(0x9169d455585cd)), + P(7213,CNST_LIMB(0x4b6246a0c6c093a5),CNST_LIMB(0x915f81ef2d529)), + P(7219,CNST_LIMB(0x872e594b12b03efb),CNST_LIMB(0x9140938595d3a)), + P(7229,CNST_LIMB(0xbc0ae83ce9045b15),CNST_LIMB(0x910d2360a450e)), + P(7237,CNST_LIMB(0xad30a3917e0968d),CNST_LIMB(0x90e417104eabd)), + P(7243,CNST_LIMB(0x124ef5a4e1c7cd63),CNST_LIMB(0x90c55d0fdea28)), + P(7247,CNST_LIMB(0x5b98fe0e9fe17aaf),CNST_LIMB(0x90b0e84c04f20)), + P(7253,CNST_LIMB(0x414306cfe45400fd),CNST_LIMB(0x909243fac6b70)), + P(7283,CNST_LIMB(0xa06d1b4fd391e8bb),CNST_LIMB(0x8ff9d0440d137)), + P(7297,CNST_LIMB(0x11939803a60c2381),CNST_LIMB(0x8fb3192789d73)), + P(7307,CNST_LIMB(0x668c11cc37ea6b23),CNST_LIMB(0x8f80c0d5031e3)), + P(7309,CNST_LIMB(0x83f9b2089dc10645),CNST_LIMB(0x8f76b3664f164)), + P(7321,CNST_LIMB(0x65dc8ae47af277a9),CNST_LIMB(0x8f3a80550abc3)), + P(7331,CNST_LIMB(0x6e2368b9c685770b),CNST_LIMB(0x8f087c50e00c4)), + P(7333,CNST_LIMB(0x3ea137aeba5a6b2d),CNST_LIMB(0x8efe7fb408cc2)), + P(7349,CNST_LIMB(0x735f57adca48f19d),CNST_LIMB(0x8eaecce5c4fd7)), + P(7351,CNST_LIMB(0x69a8de0ba1b18107),CNST_LIMB(0x8ea4dccaaec0b)), + P(7369,CNST_LIMB(0x8fb84bdf5822bd79),CNST_LIMB(0x8e4ba9fbc2ff0)), + P(7393,CNST_LIMB(0xb8fab3b748562721),CNST_LIMB(0x8dd5688a3b7d6)), + P(7411,CNST_LIMB(0xa6c658ea10a65c3b),CNST_LIMB(0x8d7d3821fd94f)), + P(7417,CNST_LIMB(0xe56381f33ab5e549),CNST_LIMB(0x8d5feb03c31d7)), + P(7433,CNST_LIMB(0xe3c224da14988139),CNST_LIMB(0x8d12033cc9d30)), + P(7451,CNST_LIMB(0x438c253e6d99f513),CNST_LIMB(0x8cbac4dec6a82)), + P(7457,CNST_LIMB(0xc1b99f8841a3a6e1),CNST_LIMB(0x8c9dc80ab604b)), + P(7459,CNST_LIMB(0x63fa18c79c54fa8b),CNST_LIMB(0x8c942115dcc96)), + P(7477,CNST_LIMB(0xe7f6f609619d0d1d),CNST_LIMB(0x8c3d7df67b539)), + P(7481,CNST_LIMB(0x7b39ef3b70afc109),CNST_LIMB(0x8c2a4bc35cb3b)), + P(7487,CNST_LIMB(0x73922c61ca7452bf),CNST_LIMB(0x8c0d8a4f1f264)), + P(7489,CNST_LIMB(0x28d96828332372c1),CNST_LIMB(0x8c03f71cbf906)), + P(7499,CNST_LIMB(0x6b6e92968c4e8463),CNST_LIMB(0x8bd42abd9a107)), + P(7507,CNST_LIMB(0x571861f084962edb),CNST_LIMB(0x8bae051d7f6ff)), + P(7517,CNST_LIMB(0xd935c64f140f1ef5),CNST_LIMB(0x8b7e735068135)), + P(7523,CNST_LIMB(0x96459f8fd72a4c4b),CNST_LIMB(0x8b61f82c5fb08)), + P(7529,CNST_LIMB(0x410ba9a2a18242d9),CNST_LIMB(0x8b4588a74a05a)), + P(7537,CNST_LIMB(0xcf90979f89870391),CNST_LIMB(0x8b1fb0a7ed403)), + P(7541,CNST_LIMB(0x10f94ff26bc00add),CNST_LIMB(0x8b0ccc5d8f5c8)), + P(7547,CNST_LIMB(0xa6619fbb9da139b3),CNST_LIMB(0x8af07f8ac5146)), + P(7549,CNST_LIMB(0x765a23334efb03d5),CNST_LIMB(0x8ae71328ffd49)), + P(7559,CNST_LIMB(0x6f2f613b5e631837),CNST_LIMB(0x8ab8086624822)), + P(7561,CNST_LIMB(0x666b99bfbcd368b9),CNST_LIMB(0x8aaea3ab5ae89)), + P(7573,CNST_LIMB(0x922b78eb01ed45bd),CNST_LIMB(0x8a7661f7020fe)), + P(7577,CNST_LIMB(0x7079a199c31de6a9),CNST_LIMB(0x8a63ab88aa8dd)), + P(7583,CNST_LIMB(0xa181abcda167be5f),CNST_LIMB(0x8a47a35d020f3)), + P(7589,CNST_LIMB(0x2f6dbbcab3a9822d),CNST_LIMB(0x8a2ba68a3cebf)), + P(7591,CNST_LIMB(0xc5a83ff0e43eba17),CNST_LIMB(0x8a2254c852497)), + P(7603,CNST_LIMB(0x28c68613dda7d97b),CNST_LIMB(0x89ea849898bb3)), + P(7607,CNST_LIMB(0x5cf33ed49efa5007),CNST_LIMB(0x89d7f3e285109)), + P(7621,CNST_LIMB(0x9125fdead661590d),CNST_LIMB(0x899720af36739)), + P(7639,CNST_LIMB(0xaee67f478c7325e7),CNST_LIMB(0x89442160d11dc)), + P(7643,CNST_LIMB(0x735b1274a0e89653),CNST_LIMB(0x8931bd5875a22)), + P(7649,CNST_LIMB(0x733b56eae1a4e621),CNST_LIMB(0x891630877aedf)), + P(7669,CNST_LIMB(0x1944ffb316ffe65d),CNST_LIMB(0x88baaad83e38f)), + P(7673,CNST_LIMB(0xf26bc3cfd2a01449),CNST_LIMB(0x88a86b9090aa4)), + P(7681,CNST_LIMB(0xb5827ba68b83e201),CNST_LIMB(0x8883fb99bf244)), + P(7687,CNST_LIMB(0xac139507e48eefb7),CNST_LIMB(0x8868b45e727ee)), + P(7691,CNST_LIMB(0xeb7676b25834fda3),CNST_LIMB(0x88568aef30d47)), + P(7699,CNST_LIMB(0xad898f4763da5c1b),CNST_LIMB(0x8832468f0bcdd)), + P(7703,CNST_LIMB(0xea906f224398f9a7),CNST_LIMB(0x88202b9a4df76)), + P(7717,CNST_LIMB(0xa8aff3caca28cdad),CNST_LIMB(0x87e0f31872e9b)), + P(7723,CNST_LIMB(0x46c53aa36b19b083),CNST_LIMB(0x87c5ecd731f42)), + P(7727,CNST_LIMB(0x9ada32b09603e8cf),CNST_LIMB(0x87b3eea3bb388)), + P(7741,CNST_LIMB(0xd31f842ef5d8e915),CNST_LIMB(0x87751a6c67d78)), + P(7753,CNST_LIMB(0x6124af44730a33f9),CNST_LIMB(0x873f6e2f9d34a)), + P(7757,CNST_LIMB(0x828ec4c2b6e64a85),CNST_LIMB(0x872d938dcfc01)), + P(7759,CNST_LIMB(0x3d6f49df999638af),CNST_LIMB(0x8724a80151dba)), + P(7789,CNST_LIMB(0x7641460a0ea89b65),CNST_LIMB(0x869f677f6cc1a)), + P(7793,CNST_LIMB(0x97703f98fb7fe291),CNST_LIMB(0x868db701df58d)), + P(7817,CNST_LIMB(0xd343c209e3e6b7b9),CNST_LIMB(0x8623f563a7d6d)), + P(7823,CNST_LIMB(0x4e5fc01f6a41406f),CNST_LIMB(0x86099ef0c8886)), + P(7829,CNST_LIMB(0xb78a05b08aa4bcbd),CNST_LIMB(0x85ef52d38fe87)), + P(7841,CNST_LIMB(0x3434a14919d34561),CNST_LIMB(0x85bad981c7847)), + P(7853,CNST_LIMB(0xccead7dee120f525),CNST_LIMB(0x8586893de7cfc)), + P(7867,CNST_LIMB(0xe1375a2bccd87673),CNST_LIMB(0x8549b491e9efe)), + P(7873,CNST_LIMB(0xf727d51420a57141),CNST_LIMB(0x852fb3859bea4)), + P(7877,CNST_LIMB(0x2c3b68cfbcebb00d),CNST_LIMB(0x851e631fc08f8)), + P(7879,CNST_LIMB(0xda91e2f3e17542f7),CNST_LIMB(0x8515bc9cde5f1)), + P(7883,CNST_LIMB(0xb55f6100ae95d6e3),CNST_LIMB(0x850472f6185b3)), + P(7901,CNST_LIMB(0x6a0c608e0bbaa975),CNST_LIMB(0x84b6defbc166b)), + P(7907,CNST_LIMB(0xac5f2fc151c016cb),CNST_LIMB(0x849d17159854b)), + P(7919,CNST_LIMB(0xb1e5af8146e4d00f),CNST_LIMB(0x8469a54a20645)), + P(7927,CNST_LIMB(0x6e283d3b112602c7),CNST_LIMB(0x84476f9401ade)), + P(7933,CNST_LIMB(0xf9a48bcb76c96e55),CNST_LIMB(0x842dd2e2dc25d)), + P(7937,CNST_LIMB(0xa776780ca4c0e101),CNST_LIMB(0x841cc543f58cb)), +#define SMALLEST_OMITTED_PRIME 7949 +#endif +#ifdef WANT_ptab + {CNST_LIMB(0x444437fed9a2349),{CNST_LIMB(0xe00056482545e92a),5,CNST_LIMB(0x2e044fdfbae4),CNST_LIMB(0x2c8f9615733fe6),CNST_LIMB(0x15319a745d44889),CNST_LIMB(0x30314bfee31fe08),CNST_LIMB(0x213845b5eb1d02b)},0,14}, + {CNST_LIMB(0x34091fa96ffdf47b),{CNST_LIMB(0x3adc72bf62f96a49),2,CNST_LIMB(0x2fdb815a40082e14),CNST_LIMB(0xa2fb4713ee182be),CNST_LIMB(0x6691fcc7a3042b5),CNST_LIMB(0xd7baca281bd7bfe),CNST_LIMB(0x31645ad7700b6fe1)},14,10}, + {CNST_LIMB(0x3c47d8d728a77ebb),{CNST_LIMB(0xfcb9aee19f3d0ca),2,CNST_LIMB(0xee09ca35d620514),CNST_LIMB(0x25e3c1639f7dc597),CNST_LIMB(0x176f977d1145f08f),CNST_LIMB(0x4a431b566c292ba),CNST_LIMB(0x100ae9d9482d6937)},24,9}, + {CNST_LIMB(0x77ab7da9d709ea9),{CNST_LIMB(0x11d1e7012ab3aa25),5,CNST_LIMB(0x1b394f7170aed8e),CNST_LIMB(0x546efaf8f3107d0),CNST_LIMB(0x42ed2efa9db39d8),CNST_LIMB(0xcf1c08fc6f825e),CNST_LIMB(0x252dd3fc3932c60)},33,8}, + {CNST_LIMB(0x310df3e7bd4bc897),{CNST_LIMB(0x4dfeef7ace095886),2,CNST_LIMB(0xaba3c794d85150d),CNST_LIMB(0x17a7ea757afc9b41),CNST_LIMB(0x27386bf8f31e3ba7),CNST_LIMB(0x14f913784ca1b09a),CNST_LIMB(0x19a5850266378808)},41,8}, + {CNST_LIMB(0xd997f089e8af1f),{CNST_LIMB(0x2d2f79839e6b7329),8,CNST_LIMB(0x285a2dd96a188d),CNST_LIMB(0x334ffbd384a516),CNST_LIMB(0xd9f5c4d959d8c),CNST_LIMB(0x1a7b0c8f9e2a8),CNST_LIMB(0x51d4df5ea86eca)},49,7}, + {CNST_LIMB(0x2514ab8fece6d79),{CNST_LIMB(0xb9d8ba8530d526d2),6,CNST_LIMB(0x111e482834cf602),CNST_LIMB(0x2099b9b4399ea77),CNST_LIMB(0xa7e65453d2c58b),CNST_LIMB(0x1543e97a71ba902),CNST_LIMB(0x13c9258fa65ea5c)},56,7}, + {CNST_LIMB(0x690efbefde431f9),{CNST_LIMB(0x37e6fe9321e30a89),5,CNST_LIMB(0x67c69a65020950a),CNST_LIMB(0x3d4da34fd3fb29d),CNST_LIMB(0x4481530580bf270),CNST_LIMB(0x53418b541a702fb),CNST_LIMB(0x5a63ba140615695)},63,7}, + {CNST_LIMB(0xf49e199a5f2f371),{CNST_LIMB(0xbe97cf50195e4cf),4,CNST_LIMB(0xb61e665a0d0c8f0),CNST_LIMB(0x12404319392532e),CNST_LIMB(0xc11fa27489010aa),CNST_LIMB(0x9486cdb3a063f1d),CNST_LIMB(0x90fb58fe1716f29)},70,7}, + {CNST_LIMB(0x20e4ce7eee0a5edf),{CNST_LIMB(0xf216910d87cce9ec),2,CNST_LIMB(0x19be5a877db767e7),CNST_LIMB(0x14174edbad8e4db0),CNST_LIMB(0x13aa47a54ebc0ab3),CNST_LIMB(0x34e03d849eed1a0),CNST_LIMB(0x1c348c675b2b87a9)},77,7}, + {CNST_LIMB(0x3c3b299a83e166e5),{CNST_LIMB(0x1004d8385b0845e0),2,CNST_LIMB(0xf135995f07a646c),CNST_LIMB(0x39f996f3e7c62cb6),CNST_LIMB(0x10e385c8b908ec46),CNST_LIMB(0x108780c61cd93a1),CNST_LIMB(0xece590a749ce9e6)},84,7}, + {CNST_LIMB(0x7385117dabf89767),{CNST_LIMB(0x1ba83180cf48fd02),1,CNST_LIMB(0x18f5dd04a80ed132),CNST_LIMB(0x134aacf48cf374fd),CNST_LIMB(0x5f5e8ab304a603e1),CNST_LIMB(0x8196d4d84952f0b),CNST_LIMB(0x27fbce261e06981)},91,7}, + {CNST_LIMB(0x6b1dd94152d113),{CNST_LIMB(0x31e8de86cb665558),9,CNST_LIMB(0x57c2791756ffa7),CNST_LIMB(0x155d1b6359e72e),CNST_LIMB(0x26e2dd434311d6),CNST_LIMB(0x2d6624583bf57f),CNST_LIMB(0x4b3c0311592466)},98,6}, + {CNST_LIMB(0x9bed1488742f9b),{CNST_LIMB(0xa44d3b1c6d785d44),8,CNST_LIMB(0x2f0a502161e5b4),CNST_LIMB(0x9197cc3e5a5b04),CNST_LIMB(0x58ecad625341f6),CNST_LIMB(0x2c8e81222f4972),CNST_LIMB(0x1f80904334e61e)},104,6}, + {CNST_LIMB(0xd851b0362c316b),{CNST_LIMB(0x2ef5b88db4540035),8,CNST_LIMB(0xcfa22017ddb3c6),CNST_LIMB(0x213062fd865691),CNST_LIMB(0x81822846481a0d),CNST_LIMB(0x4b3f5844dfd386),CNST_LIMB(0x746b08e79bff57)},110,6}, + {CNST_LIMB(0x129e6025385b5e9),{CNST_LIMB(0xb7fd23d5247f5d33),7,CNST_LIMB(0x1283c028c9d61ad),CNST_LIMB(0x8a2496a2184268),CNST_LIMB(0x702aa9d6cae97c),CNST_LIMB(0x8700d0e7b38adb),CNST_LIMB(0x562031b42d3873)},116,6}, + {CNST_LIMB(0x1b399405df9e1d9),{CNST_LIMB(0x2ce69e058ed22408),7,CNST_LIMB(0xc43448ef95aada),CNST_LIMB(0x2a35f6f5397332),CNST_LIMB(0x18bba0a2b06f9b5),CNST_LIMB(0x1bf0769bdd0a51),CNST_LIMB(0xdaf86a9dd4f157)},122,6}, + {CNST_LIMB(0x26a9c83b1da0183),{CNST_LIMB(0xa7c312b1de2834bc),6,CNST_LIMB(0x245cdfc0d956145),CNST_LIMB(0xcfb5812fdbb80b),CNST_LIMB(0x7f9bd0fd4d9771),CNST_LIMB(0x206d41f157b339d),CNST_LIMB(0x1597d040f39bed6)},128,6}, + {CNST_LIMB(0x36518f1ed35fae9),{CNST_LIMB(0x2da0bb538e68c61b),6,CNST_LIMB(0x161b11f812f7dbd),CNST_LIMB(0x1912054119f8337),CNST_LIMB(0x28b68baf0254a33),CNST_LIMB(0x1febc2a846ec627),CNST_LIMB(0x106e286e91657ac)},134,6}, + {CNST_LIMB(0x499cea9952ffcb7),{CNST_LIMB(0xbd2398239911cb86),5,CNST_LIMB(0x2f49990f2b0b4af),CNST_LIMB(0x3efc376b6d3879a),CNST_LIMB(0x16bf595684e7cae),CNST_LIMB(0x2096f989291e15a),CNST_LIMB(0x3f877653fe30a29)},140,6}, + {CNST_LIMB(0x603dc1f0578e36b),{CNST_LIMB(0x547a4d1f60bb6de6),5,CNST_LIMB(0x35de2e91a2ab072),CNST_LIMB(0x3ae19a039d933f9),CNST_LIMB(0x49f04fa32aed515),CNST_LIMB(0x49f39ce5e69737b),CNST_LIMB(0x48e7a8d6354cb3f)},146,6}, + {CNST_LIMB(0x822f4ff1bb75c7d),{CNST_LIMB(0xf7684c1a915fd94f),4,CNST_LIMB(0x3c4551ba4cbccdd),CNST_LIMB(0x3e072857c5d22e8),CNST_LIMB(0x757d8256f24de27),CNST_LIMB(0x256d9df09b5df5c),CNST_LIMB(0x19974713584ab80)},152,6}, + {CNST_LIMB(0xacfc9fbdf683023),{CNST_LIMB(0x7ad9852da99412df),4,CNST_LIMB(0x754da5eeda3acdb),CNST_LIMB(0x91f55d002dee623),CNST_LIMB(0x96936cc5e49d5ea),CNST_LIMB(0x766649a4996390),CNST_LIMB(0xaa8c52b8eea17dd)},158,6}, + {CNST_LIMB(0xe09d410f1fe4edb),{CNST_LIMB(0x23c5744aa32cf453),4,CNST_LIMB(0x34f16cefc1e749a),CNST_LIMB(0x2668179180c1b62),CNST_LIMB(0xdb241be2f133397),CNST_LIMB(0xa7c11527a49744e),CNST_LIMB(0x67d18e0669fea5b)},164,6}, + {CNST_LIMB(0x1149424a578f0ce7),{CNST_LIMB(0xd9e7a906d91cf1db),3,CNST_LIMB(0xdfe5fef362d4b5e),CNST_LIMB(0xcf056a84b77c77c),CNST_LIMB(0x985dfab0d2bd76b),CNST_LIMB(0xf57931f6922ec07),CNST_LIMB(0x44b19bfab74d6)},170,6}, + {CNST_LIMB(0x15b025d5fd579777),{CNST_LIMB(0x79b813c3ed8f4fd2),3,CNST_LIMB(0x116e5fce1d3c7de3),CNST_LIMB(0x1468c60d0220a399),CNST_LIMB(0xf10192b1089742d),CNST_LIMB(0xeae0b108eba5be6),CNST_LIMB(0xf0e98ff5e4d57d4)},176,6}, + {CNST_LIMB(0x1a5f81f6e38d3f1d),{CNST_LIMB(0x369eab91d724ae89),3,CNST_LIMB(0x12a46e520008c7fb),CNST_LIMB(0x638a97340d45e81),CNST_LIMB(0x12b4b0c893a62d44),CNST_LIMB(0x1072dcd55e5547d0),CNST_LIMB(0x18ce18c4a086d95f)},182,6}, + {CNST_LIMB(0x23293bf9b6fe2259),{CNST_LIMB(0xd1f849a43b917c65),2,CNST_LIMB(0x9df5c2bff0d0f91),CNST_LIMB(0xff1fdef6c15b8c),CNST_LIMB(0xec1383d93946006),CNST_LIMB(0x20ce6fd4fbbb8838),CNST_LIMB(0x55871453993a979)},188,6}, + {CNST_LIMB(0x2c1eaa6645e21b17),{CNST_LIMB(0x735a473662e09835),2,CNST_LIMB(0x2366ac00a295788d),CNST_LIMB(0xf8778468c26bac6),CNST_LIMB(0x10ecc751d2724c63),CNST_LIMB(0x4882fbd9d3d43e1),CNST_LIMB(0x2de76607a7f1541)},194,6}, + {CNST_LIMB(0x3646542a1110061b),{CNST_LIMB(0x2ddf24b018173a2c),2,CNST_LIMB(0x26e6af57bbbfe794),CNST_LIMB(0x1974e8d33a8f431f),CNST_LIMB(0x34da7258db6f7b4f),CNST_LIMB(0x2af310e921f874f8),CNST_LIMB(0x3cfeed9d4afc97)},200,6}, + {CNST_LIMB(0x4125602df5b7fa0b),{CNST_LIMB(0xf6fe47f7e339f3ce),1,CNST_LIMB(0x3c8fdf761ed811df),CNST_LIMB(0x145648c8769aba41),CNST_LIMB(0x3270209c06bd9a17),CNST_LIMB(0x2c03f98e45b9dca3),CNST_LIMB(0x3341dcfe340ee93e)},206,6}, + {CNST_LIMB(0x4e06bb83aa64f48d),{CNST_LIMB(0xa3f6020ab0b7e0d3),1,CNST_LIMB(0x15ebcd7500d12259),CNST_LIMB(0x786bf28f0081f92),CNST_LIMB(0x15d832d09f03b587),CNST_LIMB(0xaa3e94d54c2a575),CNST_LIMB(0x471850a042d21386)},212,6}, + {CNST_LIMB(0x6953db39a8298d8b),{CNST_LIMB(0x371b0bbe24632f20),1,CNST_LIMB(0x2d58498caface4ea),CNST_LIMB(0x557c399022219340),CNST_LIMB(0x2cb32a1a8fdd68c2),CNST_LIMB(0x122684249d42b9a9),CNST_LIMB(0x13c80507e77a929c)},218,6}, + {CNST_LIMB(0x15fafabe1c1777),{CNST_LIMB(0x74b22475baab0cce),11,CNST_LIMB(0xc763842e2c34d),CNST_LIMB(0x77d3f710b457b),CNST_LIMB(0x155a43f5525196),CNST_LIMB(0x148e30e0a5dee3),CNST_LIMB(0x13aa97836b8150)},224,5}, + {CNST_LIMB(0x18552ab4f8303b),{CNST_LIMB(0x50aaa1ed4d926e62),11,CNST_LIMB(0x815be492ca359),CNST_LIMB(0x1b55fe26d36ad),CNST_LIMB(0x113a54ceb7846),CNST_LIMB(0x1688511dfe47f),CNST_LIMB(0x66ccabff6c6c8)},229,5}, + {CNST_LIMB(0x1a99c2502dda5f),{CNST_LIMB(0x33f675a22ebecef5),11,CNST_LIMB(0x12ab7e96d807ff),CNST_LIMB(0x1d3db891dce3b),CNST_LIMB(0x19511de2e3095c),CNST_LIMB(0x2741e555a0bff),CNST_LIMB(0x51c7d31a19281)},234,5}, + {CNST_LIMB(0x1ebf9e78cd7ecb),{CNST_LIMB(0xa6b5da36fa2470c),11,CNST_LIMB(0xaebd869698c2f),CNST_LIMB(0x18e178fc70e26a),CNST_LIMB(0x64439ec9707b5),CNST_LIMB(0x116d1f70d29f20),CNST_LIMB(0xeea2317a9a585)},239,5}, + {CNST_LIMB(0x2214c7d5d9ce07),{CNST_LIMB(0xe0bc0f6215d26cf9),10,CNST_LIMB(0x1ffbac72c32f72),CNST_LIMB(0x1447f31b055129),CNST_LIMB(0x122d28bd754f9a),CNST_LIMB(0x106685d95b6d85),CNST_LIMB(0x18c9fdf391bdff)},244,5}, + {CNST_LIMB(0x25e2755d49ffa7),{CNST_LIMB(0xb078a0cae16506b6),10,CNST_LIMB(0x218554ef385919),CNST_LIMB(0xe00c975692d8e),CNST_LIMB(0x1afd2511d2f776),CNST_LIMB(0x108b0b031673f7),CNST_LIMB(0x8d919ed067cf0)},249,5}, + {CNST_LIMB(0x2925e3d5425d41),{CNST_LIMB(0x8e2c20d6f8f795ce),10,CNST_LIMB(0x1c5f29cb4c13c8),CNST_LIMB(0x15e11f6e5f634),CNST_LIMB(0xb32166d7982b3),CNST_LIMB(0xa636cf5c4f642),CNST_LIMB(0x28f997d81938bc)},254,5}, + {CNST_LIMB(0x2f39e99d11c26d),{CNST_LIMB(0x5aed08e710697213),10,CNST_LIMB(0x213b4a00c79b71),CNST_LIMB(0x1bd2737e294111),CNST_LIMB(0xd01c8aaaae314),CNST_LIMB(0xb00f1e27ed99e),CNST_LIMB(0x1d21748adab7e4)},259,5}, + {CNST_LIMB(0x3502a3ce62a769),{CNST_LIMB(0x35126ab40383fc5c),10,CNST_LIMB(0xf411f8bafb90c),CNST_LIMB(0x1fa38c975e6347),CNST_LIMB(0xf4058b043df4e),CNST_LIMB(0x2af2733656b159),CNST_LIMB(0x196e94f446c597)},264,5}, + {CNST_LIMB(0x3b357b23b014b1),{CNST_LIMB(0x14b711563eba7d77),10,CNST_LIMB(0x32f1ffd1469b4e),CNST_LIMB(0x197f48859c01a3),CNST_LIMB(0x29509dc5352d40),CNST_LIMB(0x335e5c9ef5d7fe),CNST_LIMB(0x284e1a5376a683)},269,5}, + {CNST_LIMB(0x420d06773114d3),{CNST_LIMB(0xf01a36d7bbf66dfc),9,CNST_LIMB(0xd86f221cf4e60),CNST_LIMB(0x728955d2f4a8d),CNST_LIMB(0x1a631ed35adca5),CNST_LIMB(0x2d592810a2cd39),CNST_LIMB(0x1215b15f856f68)},274,5}, + {CNST_LIMB(0x4c19f733c90d09),{CNST_LIMB(0xae954f9b28df48d8),9,CNST_LIMB(0xcab96d4cf28bb),CNST_LIMB(0x42b5fc3fd6e7ec),CNST_LIMB(0x2b7f897adc30de),CNST_LIMB(0x1a97bb06e110c0),CNST_LIMB(0x304db431256118)},279,5}, + {CNST_LIMB(0x52f224bf890ffd),{CNST_LIMB(0x8b0d84b8653cb09f),9,CNST_LIMB(0x8c298ef08a942),CNST_LIMB(0x2999ac4ebb9e26),CNST_LIMB(0x3dd9eb9ca2c026),CNST_LIMB(0x43401c4563f790),CNST_LIMB(0x38d5e8bf6d2c89)},284,5}, + {CNST_LIMB(0x5bf703dda941b1),{CNST_LIMB(0x644f51d4add132a4),9,CNST_LIMB(0x38fd3f81414bb8),CNST_LIMB(0x20049119d93b7c),CNST_LIMB(0x4e479d97844206),CNST_LIMB(0x294a3066f3b775),CNST_LIMB(0x1c21bda84cf2fc)},289,5}, + {CNST_LIMB(0x68cf321fe6202f),{CNST_LIMB(0x38a4d27caeef8e91),9,CNST_LIMB(0x1e26a01f2b6d41),CNST_LIMB(0x9e9e8993d282b),CNST_LIMB(0x417ad2819cd4fb),CNST_LIMB(0x627fb183ab0b1a),CNST_LIMB(0x278b9f029564e7)},294,5}, + {CNST_LIMB(0x71dad4e06cde9b),{CNST_LIMB(0x1fce1dcd4eb47a27),9,CNST_LIMB(0x457bdbeb7801db),CNST_LIMB(0x1f2b3df5db8f09),CNST_LIMB(0x2149ca25813ef0),CNST_LIMB(0x17d20c710e4487),CNST_LIMB(0x40ceb8ee4ca73d)},299,5}, + {CNST_LIMB(0x7b5e9ca091c63d),{CNST_LIMB(0x99bc23041414782),9,CNST_LIMB(0x1ac11ef1a1cf79),CNST_LIMB(0x313f0652fefffc),CNST_LIMB(0x12f34ea4e7a5db),CNST_LIMB(0x2aa2b3b3300bfd),CNST_LIMB(0x3245caffd0690c)},304,5}, + {CNST_LIMB(0x892f2017af4a77),{CNST_LIMB(0xddb91a666e887a07),8,CNST_LIMB(0x633133de624045),CNST_LIMB(0x7f207860875935),CNST_LIMB(0x702aff29ff7777),CNST_LIMB(0x1cc53fa2f53db9),CNST_LIMB(0x2c5ff88b6e27ee)},309,5}, + {CNST_LIMB(0x93efab3d98e265),{CNST_LIMB(0xbb00736076c6c8fc),8,CNST_LIMB(0x42ac68703b39),CNST_LIMB(0x4d4d015d5d1bd7),CNST_LIMB(0x85c801afb0f411),CNST_LIMB(0x4579d8022d0a69),CNST_LIMB(0x32ea2e520e3d23)},314,5}, + {CNST_LIMB(0x9fd1e9a289b8f9),{CNST_LIMB(0x9a0fb77008192e78),8,CNST_LIMB(0x9cfd1af6dc136),CNST_LIMB(0x23a28bc352c87c),CNST_LIMB(0x582383446e53c2),CNST_LIMB(0x3d52e0695b07e4),CNST_LIMB(0x83c6fc0e7cfd23)},319,5}, + {CNST_LIMB(0xb3ffc82a3b00bb),{CNST_LIMB(0x6c17325c7676de1f),8,CNST_LIMB(0x104f63f41af61c),CNST_LIMB(0x838ff92da5d267),CNST_LIMB(0xb37001a22f0194),CNST_LIMB(0x4487295b668b16),CNST_LIMB(0xa06ce4ed65729d)},324,5}, + {CNST_LIMB(0xc78aab3260ed67),{CNST_LIMB(0x486ec1d048657b5d),8,CNST_LIMB(0x5654a773cfd408),CNST_LIMB(0xb3f20a79edde43),CNST_LIMB(0xaebbd1a69724dd),CNST_LIMB(0x81191f0503a9),CNST_LIMB(0x3b54fc6e1ed034)},329,5}, + {CNST_LIMB(0xd8b06a4b9eddc9),{CNST_LIMB(0x2e7147c081441aeb),8,CNST_LIMB(0x5fe29aca965ce2),CNST_LIMB(0x9cb19caad665ca),CNST_LIMB(0x147b04c65844fd),CNST_LIMB(0x7a1c878be8db45),CNST_LIMB(0x8f4f4d51c80dfd)},334,5}, + {CNST_LIMB(0xe8f35bfe49ae4b),{CNST_LIMB(0x19547b44fa632b82),8,CNST_LIMB(0x4ce005e11fafad),CNST_LIMB(0x57f2d94de4ea00),CNST_LIMB(0xb885b9e976e473),CNST_LIMB(0x1eb25c197e9b39),CNST_LIMB(0xe2c45221f5cdb7)},339,5}, + {CNST_LIMB(0xfcff7f19788a27),{CNST_LIMB(0x3099f4bf7423272),8,CNST_LIMB(0x982693b0c3a8b),CNST_LIMB(0xa6eee9dce0fc63),CNST_LIMB(0xf1290f2b74223c),CNST_LIMB(0x36c85e11826e0b),CNST_LIMB(0xbe15668a4d3771)},344,5}, + {CNST_LIMB(0x10f681c21a80325),{CNST_LIMB(0xe2ef902951d2322d),7,CNST_LIMB(0x7efd8450d50a2b),CNST_LIMB(0x37c115b60abfde),CNST_LIMB(0x4a31517b3a2c0),CNST_LIMB(0x8ee426b2c25e26),CNST_LIMB(0xaf5e09c0582f8)},349,5}, + {CNST_LIMB(0x11ffa8ecf7814fb),{CNST_LIMB(0xc7250b86192832ab),7,CNST_LIMB(0xa4d35e0885656f),CNST_LIMB(0x6d14e9be5101ec),CNST_LIMB(0x93b36726a244a),CNST_LIMB(0xb56f38bde55186),CNST_LIMB(0x11443988cbd610f)},354,5}, + {CNST_LIMB(0x139b8ddf439b133),{CNST_LIMB(0xa1cbe52ffcdca969),7,CNST_LIMB(0x119cba991200690),CNST_LIMB(0xa8a1be12145159),CNST_LIMB(0x49831f7f1eb091),CNST_LIMB(0x5fe3a0bd210422),CNST_LIMB(0x11b90612ebf719f)},359,5}, + {CNST_LIMB(0x15b90aaef040351),{CNST_LIMB(0x791d6da971f79fb1),7,CNST_LIMB(0xc1c278790d9084),CNST_LIMB(0xa6bc771172ca70),CNST_LIMB(0x1219044d36b161b),CNST_LIMB(0x9363a00d9d3f5f),CNST_LIMB(0x14079ec2a37ea93)},364,5}, + {CNST_LIMB(0x17d664f86c88bd3),{CNST_LIMB(0x57a9176de3f40918),7,CNST_LIMB(0x13ca8e0f80a9a0f),CNST_LIMB(0xfc1ecc66c0c93b),CNST_LIMB(0x15be6192051cb1a),CNST_LIMB(0x136f263b7a50fcc),CNST_LIMB(0x3820db8623a7)},369,5}, + {CNST_LIMB(0x1a44cc5ef4c16b5),{CNST_LIMB(0x37da80020a7d1f74),7,CNST_LIMB(0x18584281cee4069),CNST_LIMB(0x178a63d22596ba9),CNST_LIMB(0x6739c7c5ac4f2d),CNST_LIMB(0x14c57a38e4d612a),CNST_LIMB(0x13d2e7fd35623ae)},374,5}, + {CNST_LIMB(0x1ca80b29773de79),{CNST_LIMB(0x1dde9f723a4f55dc),7,CNST_LIMB(0x1ac9ceffdba98e2),CNST_LIMB(0xf4618a5f0fdaa9),CNST_LIMB(0x17b96b4ded53ebb),CNST_LIMB(0x7faf749bdd9cb1),CNST_LIMB(0xfa9d50111fc549)},379,5}, + {CNST_LIMB(0x1e7b019a7fa8931),{CNST_LIMB(0xcc3160c520cdb96),7,CNST_LIMB(0xb9d29212dc305a),CNST_LIMB(0x91586fa7d2facc),CNST_LIMB(0x2638c4c9135f19),CNST_LIMB(0x1c315565816b84a),CNST_LIMB(0xa92e9c918ad70f)},384,5}, + {CNST_LIMB(0x1fd932c2a6c3463),{CNST_LIMB(0x137e41a0c0b8d4f),7,CNST_LIMB(0x13669eac9e5ce80),CNST_LIMB(0x94dc55b30276b5),CNST_LIMB(0x1c52a400cc7dae6),CNST_LIMB(0x1cd876c8023e81b),CNST_LIMB(0x8e06dbbb7e4c2d)},389,5}, + {CNST_LIMB(0x2175e8bd7050e79),{CNST_LIMB(0xe9a698d03a5e604b),6,CNST_LIMB(0xdcf15b87971a56),CNST_LIMB(0x2e9e439e7517fb),CNST_LIMB(0x85bbfca7ac6da9),CNST_LIMB(0x500c9508abde31),CNST_LIMB(0x1c9d7aa292a48b0)},394,5}, + {CNST_LIMB(0x24033b205fe4527),{CNST_LIMB(0xc6f39cee1695e79a),6,CNST_LIMB(0x1a92e6b5ac379c9),CNST_LIMB(0x1f1b86c0e7f8d15),CNST_LIMB(0x1e362d27d79fda9),CNST_LIMB(0x4dcd13ebf2a00a),CNST_LIMB(0x408b8bd354f1b4)},399,5}, + {CNST_LIMB(0x265d2eb09cdc073),{CNST_LIMB(0xab112e468a91ceb0),6,CNST_LIMB(0x1d6aaadf0ce5062),CNST_LIMB(0x8cb5be41003782),CNST_LIMB(0x52b9980c0c4bec),CNST_LIMB(0x2228f2e6cbe8667),CNST_LIMB(0xca6f7400df044e)},404,5}, + {CNST_LIMB(0x2953a0e65ca6a1d),{CNST_LIMB(0x8c7372d9ab5569c1),6,CNST_LIMB(0x4a8c6ea2b8f6c9),CNST_LIMB(0x3588f2393801ce),CNST_LIMB(0x1fce38ab648e336),CNST_LIMB(0x89544c1c4d5e80),CNST_LIMB(0x6e5d409692ed37)},409,5}, + {CNST_LIMB(0x2c67f25a6bc9c63),{CNST_LIMB(0x70f57416f0cce89e),6,CNST_LIMB(0xaa4e781437cc6c),CNST_LIMB(0x1c38f9d456ca8d),CNST_LIMB(0x2682eae3a0afadb),CNST_LIMB(0x2b54835e8a4f4ca),CNST_LIMB(0x1ff894f600fa94f)},414,5}, + {CNST_LIMB(0x2fdd1a7524ae76d),{CNST_LIMB(0x564e31abce2eba47),6,CNST_LIMB(0x1b96371ad2128cf),CNST_LIMB(0x35309a6895ab0d),CNST_LIMB(0x14de5531da96df1),CNST_LIMB(0x3a924ccc42ac90),CNST_LIMB(0x315a6b9b99a595)},419,5}, + {CNST_LIMB(0x33770e6e18aeb53),{CNST_LIMB(0x3e5a14fd0434a100),6,CNST_LIMB(0x1e428c066216163),CNST_LIMB(0x93d03854bffefa),CNST_LIMB(0x77e62b6df8d4a1),CNST_LIMB(0x8a8b138bb2ed69),CNST_LIMB(0x292d249664af8db)},424,5}, + {CNST_LIMB(0x379c7dff6334d3b),{CNST_LIMB(0x269dcc0c8d56e875),6,CNST_LIMB(0x2460122cb5efa2d),CNST_LIMB(0x28e51e3c7265f2e),CNST_LIMB(0x1efacb51926e686),CNST_LIMB(0xfc8248ae79bd5f),CNST_LIMB(0x2f3b91b1fe1f65)},429,5}, + {CNST_LIMB(0x3b82f15f7249c49),{CNST_LIMB(0x134ee332d51f0306),6,CNST_LIMB(0x3137e2a5a467c9c),CNST_LIMB(0x79d488798b4960),CNST_LIMB(0xb436578d1069bb),CNST_LIMB(0x10ad84e585582d0),CNST_LIMB(0x3215616c9b153bf)},434,5}, + {CNST_LIMB(0x3fff4dd17ad4ff9),{CNST_LIMB(0x2c8c1d50d30af),6,CNST_LIMB(0x2c8ba14ac01c0),CNST_LIMB(0x2bd06852b51e327),CNST_LIMB(0x30714e5452d2c1),CNST_LIMB(0x327ff42efc6d9c),CNST_LIMB(0x244bb5001864710)},439,5}, + {CNST_LIMB(0x465670cc294b181),{CNST_LIMB(0xd1ddf947b9d55be0),5,CNST_LIMB(0x106a71bea4fc8c6),CNST_LIMB(0xa255b26c45d27f),CNST_LIMB(0x460d26a6240e466),CNST_LIMB(0x1dda425d1868b60),CNST_LIMB(0x3d6eff8580e97e1)},444,5}, + {CNST_LIMB(0x4aaaab2fe3fee47),{CNST_LIMB(0xb6db6aa7d3a37a63),5,CNST_LIMB(0x3fffe3e5e83bd06),CNST_LIMB(0xa8a65f30809160),CNST_LIMB(0xbfd8fef4142370),CNST_LIMB(0x358c77f78c2a4d0),CNST_LIMB(0x3a89f0ee6796b95)},449,5}, + {CNST_LIMB(0x4f8bbff17c95ef7),{CNST_LIMB(0x9bf032ee57751395),5,CNST_LIMB(0x2728c2e42e214cb),CNST_LIMB(0x37fb2686e89761e),CNST_LIMB(0x4a264029edea029),CNST_LIMB(0x1d504d3aecaaa50),CNST_LIMB(0x45b5a7b35031756)},454,5}, + {CNST_LIMB(0x553ea1ce3216691),{CNST_LIMB(0x806643148e9063ef),5,CNST_LIMB(0x441a9569bcc4d0),CNST_LIMB(0x535ae4be3f071a1),CNST_LIMB(0x545a793067e09d8),CNST_LIMB(0xd5d15c09afe8cd),CNST_LIMB(0x4534c23a01c6a96)},459,5}, + {CNST_LIMB(0x59f7c9a4fefb517),{CNST_LIMB(0x6c37fd6421ef50ed),5,CNST_LIMB(0x2f718dff2dd2af5),CNST_LIMB(0x4aea82d40c5cc72),CNST_LIMB(0x4f7cec2a6861199),CNST_LIMB(0xe868a369a42529),CNST_LIMB(0x40e610cd320b2f7)},464,5}, + {CNST_LIMB(0x5e8d3fa86f95521),{CNST_LIMB(0x5a8fc0667cc240fe),5,CNST_LIMB(0x1e464eb541eb375),CNST_LIMB(0x3892fa43db27fd5),CNST_LIMB(0x4e5c7836ddc791a),CNST_LIMB(0x36e537bed96365e),CNST_LIMB(0x4375094ddcb8820)},469,5}, + {CNST_LIMB(0x64157c62c33e31d),{CNST_LIMB(0x4767bbee2675bc54),5,CNST_LIMB(0x5ca490917e48378),CNST_LIMB(0x11867a67aa79db0),CNST_LIMB(0x6198c4cbcaf84e6),CNST_LIMB(0x4338ebe5ab25fcf),CNST_LIMB(0x11e91c53e48fd1e)},474,5}, + {CNST_LIMB(0x6ceeed4c43f4183),{CNST_LIMB(0x2cced2b1dae4601a),5,CNST_LIMB(0x4177b3fa2db8811),CNST_LIMB(0x2b3db3648dc8a5),CNST_LIMB(0x50f060794aa127),CNST_LIMB(0x4f7cdc200df8c9a),CNST_LIMB(0x4525db055625df3)},479,5}, + {CNST_LIMB(0x7287ee7e5f96919),{CNST_LIMB(0x1e1b2205d593e3a6),5,CNST_LIMB(0x576a64b8ee6a195),CNST_LIMB(0x7bd2ea513c7027),CNST_LIMB(0x17c4152c6d55daa),CNST_LIMB(0x39f7aac6f902f57),CNST_LIMB(0x14765413bf9b5ca)},484,5}, + {CNST_LIMB(0x79886d10dfa5165),{CNST_LIMB(0xd9f57c223f379ca),5,CNST_LIMB(0x5569f0d32bb81fb),CNST_LIMB(0x6f08a7fc8e770a6),CNST_LIMB(0x2c14d325ec8479f),CNST_LIMB(0x4499d22e49d3c7),CNST_LIMB(0x53f1f1eecdc8c2)},489,5}, + {CNST_LIMB(0x7e13347ac1526bf),{CNST_LIMB(0x3e8a375cf0fb774),5,CNST_LIMB(0x3d9970a7d5b2820),CNST_LIMB(0x3664c9d670bba16),CNST_LIMB(0x6ba929ee3cbcd5c),CNST_LIMB(0xd5d262e6d92452),CNST_LIMB(0x2f545142add8d05)},494,5}, + {CNST_LIMB(0x8566f0377d15459),{CNST_LIMB(0xeb44411c1363bcf4),4,CNST_LIMB(0x5defd97f5781d92),CNST_LIMB(0x16eaae98cb00189),CNST_LIMB(0x986f4f6d77c243),CNST_LIMB(0x57c736925ddfd9),CNST_LIMB(0x10a756243dbe4ca)},499,5}, + {CNST_LIMB(0x8bfc83897e6cdaf),{CNST_LIMB(0xd428ea393317b9f2),4,CNST_LIMB(0x2465196cadab32d),CNST_LIMB(0x7594e9e684d904a),CNST_LIMB(0x19cd4a75383b2d1),CNST_LIMB(0x6a0e9c23f177e64),CNST_LIMB(0x56f0f2ae36c5465)},504,5}, + {CNST_LIMB(0x94ad790245385eb),{CNST_LIMB(0xb8cae8ae9a639526),4,CNST_LIMB(0x51b43cc2b30e037),CNST_LIMB(0x4cb133bb88b3adc),CNST_LIMB(0x3ede33df9c5e3e3),CNST_LIMB(0x665226a2d290ac4),CNST_LIMB(0x33db5ce835ec6e4)},509,5}, + {CNST_LIMB(0x9c30734d93b1379),{CNST_LIMB(0xa397f073b55bde0b),4,CNST_LIMB(0x23144a1f00005b6),CNST_LIMB(0x826ad253a3ed324),CNST_LIMB(0x940ad5d52b4806c),CNST_LIMB(0x1729e9d2d022730),CNST_LIMB(0x20a978fb381a6c2)},514,5}, + {CNST_LIMB(0xa57e1fd7a44fbb9),{CNST_LIMB(0x8c0164efd39df203),4,CNST_LIMB(0x7c2d03c898866a8),CNST_LIMB(0x4037558c6f1e4eb),CNST_LIMB(0x6694cdbbb8803c7),CNST_LIMB(0x99396c89bf97452),CNST_LIMB(0x436126c1b000fab)},519,5}, + {CNST_LIMB(0xaf9b9be9c8401d1),{CNST_LIMB(0x7531f66eca55c19b),4,CNST_LIMB(0x3904fdff023d639),CNST_LIMB(0x962f9b532413fb3),CNST_LIMB(0x27ec74df2758058),CNST_LIMB(0x5836483d1e34f66),CNST_LIMB(0x8384a37fad8866d)},524,5}, + {CNST_LIMB(0xb9ba711d6e4a84f),{CNST_LIMB(0x60dc0b5cc82154b3),4,CNST_LIMB(0x9fa47788598936),CNST_LIMB(0x82bd019c1fa5a56),CNST_LIMB(0x50db17c34711736),CNST_LIMB(0x739121f55c5b75d),CNST_LIMB(0x912fe4d49b6d56)},529,5}, + {CNST_LIMB(0xc41a8a6c63a70d1),{CNST_LIMB(0x4e30c99728e3c197),4,CNST_LIMB(0xaded2f8836f2fac),CNST_LIMB(0xab84ac5c6d525d9),CNST_LIMB(0x488aa0b1f301ccb),CNST_LIMB(0x5fdf2905d976ad6),CNST_LIMB(0x5cb75a7adbb8561)},534,5}, + {CNST_LIMB(0xcd79628a71801f7),{CNST_LIMB(0x3ef33887b9ad5b44),4,CNST_LIMB(0xbffdafb9937daab),CNST_LIMB(0x8c3722255b2b8c7),CNST_LIMB(0x63cd1bbc0e9c22a),CNST_LIMB(0xbd17bc2e12ad950),CNST_LIMB(0x15e9799e0d76f1e)},539,5}, + {CNST_LIMB(0xd6f67d4726eaaf5),{CNST_LIMB(0x30df0c865cc92a96),4,CNST_LIMB(0xbb4b3b81c94fd1),CNST_LIMB(0x2a20ca76128ce99),CNST_LIMB(0x4a4022bdd8f612e),CNST_LIMB(0x3bafa50d5be5f8b),CNST_LIMB(0xb86a67f06630908)},544,5}, + {CNST_LIMB(0xe5d3b047627f8e3),{CNST_LIMB(0x1d275ac8c78303ec),4,CNST_LIMB(0xbcf14b4275878ed),CNST_LIMB(0x5ee8b82b0662dd),CNST_LIMB(0x77e3de57e11f662),CNST_LIMB(0x5ed59e5dfb5cd16),CNST_LIMB(0xbe6a6366650aef1)},549,5}, + {CNST_LIMB(0xef42ae515bfb29d),{CNST_LIMB(0x11e922af2e24e769),4,CNST_LIMB(0x1c926c98e452393),CNST_LIMB(0xd26a458c9c34765),CNST_LIMB(0x5da54b52a8aa98a),CNST_LIMB(0xa2ed4f828338df7),CNST_LIMB(0xe69ac190926521a)},554,5}, + {CNST_LIMB(0xfd32459f0b3d4bb),{CNST_LIMB(0x2d5ace688e647e9),4,CNST_LIMB(0x2cdba60f4c2b450),CNST_LIMB(0x2577b742a8ed5db),CNST_LIMB(0x144ef4109272736),CNST_LIMB(0xbe9326c4f15e1a9),CNST_LIMB(0xb96de853277fb4f)},559,5}, + {CNST_LIMB(0x10a16ef6c96a16c7),{CNST_LIMB(0xec9602538c0df011),3,CNST_LIMB(0x68a7f8a32c8aa57),CNST_LIMB(0x1445e7d17b921f3),CNST_LIMB(0x81c8debc8176f0b),CNST_LIMB(0xe3a1c5b816e4a65),CNST_LIMB(0xa52ad5bb93c9f4b)},564,5}, + {CNST_LIMB(0x117c2fec47f5e013),{CNST_LIMB(0xd48355880989be17),3,CNST_LIMB(0xb356114108dbef6),CNST_LIMB(0xe7ddeca9ba6a20c),CNST_LIMB(0xf2d7618ea8a6953),CNST_LIMB(0x412256baaec5c27),CNST_LIMB(0x1f8e16ca6e5c0d7)},569,5}, + {CNST_LIMB(0x129a8c10ae1f364b),{CNST_LIMB(0xb857af53b5b43644),3,CNST_LIMB(0xe26e327286a3e31),CNST_LIMB(0xeef9d55a9d06dbf),CNST_LIMB(0xe61febd3beb02b6),CNST_LIMB(0x10d018a00b7fd6a5),CNST_LIMB(0x32009c46e7c1314)},574,5}, + {CNST_LIMB(0x134631392d507059),{CNST_LIMB(0xa9063d94bb92a978),3,CNST_LIMB(0x56f8018b2ea4b7b),CNST_LIMB(0x1270cb710b035935),CNST_LIMB(0x11033d859716c4f9),CNST_LIMB(0xd45bebac416a68c),CNST_LIMB(0xc08fe72fc6eef84)},579,5}, + {CNST_LIMB(0x13fde7755d5fd9ed),{CNST_LIMB(0x99c48a788248a856),3,CNST_LIMB(0x1019267f9f81c8e4),CNST_LIMB(0x394e4098ea8549),CNST_LIMB(0x33c85c2a1514436),CNST_LIMB(0xa1e569d4432f4bb),CNST_LIMB(0x128bfbc862fb3c58)},584,5}, + {CNST_LIMB(0x15698c0906cc26a5),{CNST_LIMB(0x7e957ed81f600c1e),3,CNST_LIMB(0x1476fb9cb53a56e9),CNST_LIMB(0xeff15504451beab),CNST_LIMB(0xdea55fc79c32599),CNST_LIMB(0x76a982d54d956a1),CNST_LIMB(0x4d131625675abd7)},589,5}, + {CNST_LIMB(0x168a1ee80f6d92f5),{CNST_LIMB(0x6b73459d204359d1),3,CNST_LIMB(0x810ac07564aaf79),CNST_LIMB(0x874d5996e15561a),CNST_LIMB(0xb75c73837694b49),CNST_LIMB(0xd4645617d29779b),CNST_LIMB(0x12af15ef931be940)},594,5}, + {CNST_LIMB(0x17daa6de32466fbf),{CNST_LIMB(0x576bc18853c72908),3,CNST_LIMB(0x11757b52093fa28a),CNST_LIMB(0xff4c0f212559944),CNST_LIMB(0x40af9872004a0a5),CNST_LIMB(0x2b2b7c424c54c2b),CNST_LIMB(0x1a2b7130739c4c7)},599,5}, + {CNST_LIMB(0x18ea5f2dbe212911),{CNST_LIMB(0x48ca86c98010be89),3,CNST_LIMB(0x6d8483692b46556),CNST_LIMB(0x305d89220ec48d2),CNST_LIMB(0x1772200dfc1938dc),CNST_LIMB(0xded80c44ca87607),CNST_LIMB(0xb498b0490dc55dd)},604,5}, + {CNST_LIMB(0x1a0fa1ef47787d1b),{CNST_LIMB(0x3a56b20c2d70e08a),3,CNST_LIMB(0x15734e967cc39a0d),CNST_LIMB(0x8fc968191dc0fd3),CNST_LIMB(0x1680d35f18721f8f),CNST_LIMB(0x197b4a3e18c9e8bc),CNST_LIMB(0xc0ad81d645f40c7)},609,5}, + {CNST_LIMB(0x1b673b66a023a93f),{CNST_LIMB(0x2af150ff9195ac0f),3,CNST_LIMB(0x95ee9645ebf0cc9),CNST_LIMB(0x1717202bbc3e0a78),CNST_LIMB(0x126d365df320adf6),CNST_LIMB(0x137d63165361ab0e),CNST_LIMB(0x19ca69d84cc1417c)},614,5}, + {CNST_LIMB(0x1ce34de10c258111),{CNST_LIMB(0x1b9430b6521be183),3,CNST_LIMB(0x18e590f79ed3f778),CNST_LIMB(0xbcbaeb9ec0a1624),CNST_LIMB(0x18f51ac04296ceb6),CNST_LIMB(0x161b15271d06a3e1),CNST_LIMB(0x5f0a62fb317dd86)},619,5}, + {CNST_LIMB(0x1e19674e354f4667),{CNST_LIMB(0x102a99b0acd64358),3,CNST_LIMB(0xf34c58e5585ccc8),CNST_LIMB(0x15fad9b7ef3a5cbd),CNST_LIMB(0x1874ea34e3e274f9),CNST_LIMB(0x841598977c90581),CNST_LIMB(0x1c04690158b888d)},624,5}, + {CNST_LIMB(0x1f3740adb603b24d),{CNST_LIMB(0x66e52892f80015e),3,CNST_LIMB(0x645fa924fe26d98),CNST_LIMB(0xc022a525d7f5a4f),CNST_LIMB(0x16d7e66846e5d65b),CNST_LIMB(0x10105a92c09c5aa9),CNST_LIMB(0xedddad56d23fc0e)},629,5}, + {CNST_LIMB(0x20e7b3c0e3b73671),{CNST_LIMB(0xf1eabc8c8352c9af),2,CNST_LIMB(0x19aa15b9c5fd82e9),CNST_LIMB(0x10fd7c871bd5d222),CNST_LIMB(0x4ee89a76e1259e0),CNST_LIMB(0x1280d75e6bf3c134),CNST_LIMB(0x85e103f1853c3d)},634,5}, + {CNST_LIMB(0x22b5b4fc40d4c35f),{CNST_LIMB(0xd807362226cc7e50),2,CNST_LIMB(0xd080d1a3a2ea867),CNST_LIMB(0x1f068368adc3fde1),CNST_LIMB(0x178240b1c3cf35a9),CNST_LIMB(0x1dc077b2ed00fd8c),CNST_LIMB(0x2e6e64a07f9c833)},639,5}, + {CNST_LIMB(0x23cff30e6fb8f7fd),{CNST_LIMB(0xc97f150b60a9e71b),2,CNST_LIMB(0x5505a9af1f13815),CNST_LIMB(0x22434bb477153d47),CNST_LIMB(0x87670d53a068a58),CNST_LIMB(0x21b754fa0ae7b745),CNST_LIMB(0x2182750984e9f50b)},644,5}, + {CNST_LIMB(0x266a30ee37cc7341),{CNST_LIMB(0xaa808f26b38df4ef),2,CNST_LIMB(0x1982da6ab1354c7a),CNST_LIMB(0xfda1381ca806f81),CNST_LIMB(0x1a31d30d06bd5b7b),CNST_LIMB(0xbc65e21d25000c6),CNST_LIMB(0x132d8167c6a0973b)},649,5}, + {CNST_LIMB(0x283e6bddfbebab6d),{CNST_LIMB(0x971e4733b2e0d2bf),2,CNST_LIMB(0xe8978cc1879fb72),CNST_LIMB(0x1c9e26afc4d767da),CNST_LIMB(0x1e376fcf488c8249),CNST_LIMB(0x977e63f145b0e1d),CNST_LIMB(0xe2db9891e737aa1)},654,5}, + {CNST_LIMB(0x298d29c47d06f16b),{CNST_LIMB(0x8a4e7f92da9842e7),2,CNST_LIMB(0x6b1056511d6577e),CNST_LIMB(0x592f6f3bbda49cc),CNST_LIMB(0x2692769f01fb0a5b),CNST_LIMB(0x5f3e5623e91d30d),CNST_LIMB(0x2104d5242a92b48d)},659,5}, + {CNST_LIMB(0x2afa8c16de374c13),{CNST_LIMB(0x7d364b6556c2b905),2,CNST_LIMB(0x291b438da8eb83a1),CNST_LIMB(0x14222ff3cbf7d671),CNST_LIMB(0x126ac7f90facd4d3),CNST_LIMB(0x46d452f540a8d2),CNST_LIMB(0xb0b0fc23426b0b7)},664,5}, + {CNST_LIMB(0x2c44b3413ab0dee7),{CNST_LIMB(0x721b37f337583151),2,CNST_LIMB(0x22a87fb9da8ba57d),CNST_LIMB(0x26943e2ad67b49d6),CNST_LIMB(0x1ef6cfa904bef1cd),CNST_LIMB(0x18e7d1baf5588938),CNST_LIMB(0x1ad24c5276c66d2f)},669,5}, + {CNST_LIMB(0x2e88fa7433ac7823),{CNST_LIMB(0x60141b17275393e2),2,CNST_LIMB(0x17531bbafda1a751),CNST_LIMB(0xf3ea18441a36068),CNST_LIMB(0x130110257a01259a),CNST_LIMB(0x14122cf2cde8eecc),CNST_LIMB(0x24d25acd522c56b7)},674,5}, + {CNST_LIMB(0x303fb77cc2bfe62b),{CNST_LIMB(0x539292e31ed6db25),2,CNST_LIMB(0xec16a9032408129),CNST_LIMB(0x22483ceeb16c18a3),CNST_LIMB(0x1dd1cf7128399e5a),CNST_LIMB(0x11b3d478af2cbe42),CNST_LIMB(0x2a86cb29ac9873d3)},679,5}, + {CNST_LIMB(0x32eeac8f8d221e55),{CNST_LIMB(0x41ae89b9e560d65a),2,CNST_LIMB(0x156a1323e556857),CNST_LIMB(0x865eccdcf192078),CNST_LIMB(0x29e9014382ce253e),CNST_LIMB(0x737a633527d55ef),CNST_LIMB(0xe3223c22b887658)},684,5}, + {CNST_LIMB(0x354d75b3270eaedd),{CNST_LIMB(0x336093f2bc204c55),2,CNST_LIMB(0x2aca293363c5448c),CNST_LIMB(0x17160152eb4aa39f),CNST_LIMB(0x16b50b70fa80acee),CNST_LIMB(0x2493bd25f34e1536),CNST_LIMB(0x18f710cf9496617c)},689,5}, + {CNST_LIMB(0x37b26a3f703f6027),{CNST_LIMB(0x2629d54caca5a93b),2,CNST_LIMB(0x213657023f027f64),CNST_LIMB(0x257ed9007720600c),CNST_LIMB(0xaf3dcc0f043ce98),CNST_LIMB(0x115787f3ada80173),CNST_LIMB(0x7071885da2772a7)},694,5}, + {CNST_LIMB(0x3a2d837d37f39e39),{CNST_LIMB(0x199e982941bda182),2,CNST_LIMB(0x1749f20b2031871c),CNST_LIMB(0x153d7d45eae3fbc6),CNST_LIMB(0x3035b3e81047b52f),CNST_LIMB(0x3096ed6d9a28fa5a),CNST_LIMB(0x221887c4142d7434)},699,5}, + {CNST_LIMB(0x3d6201596c85db3f),{CNST_LIMB(0xaea3e9ef4bf14aa),2,CNST_LIMB(0xa77fa9a4de89304),CNST_LIMB(0x140df851fb641569),CNST_LIMB(0x275b27f619d2cffb),CNST_LIMB(0x16df2d5134102662),CNST_LIMB(0x10ab318b9b8a8aef)},704,5}, + {CNST_LIMB(0x401080f68635f765),{CNST_LIMB(0xff7c1a4f020138fa),1,CNST_LIMB(0x3fce7d1c6d5e19d1),CNST_LIMB(0x1feb2b2abf929ebc),CNST_LIMB(0x279cb7a4291af740),CNST_LIMB(0x384bce4293f19637),CNST_LIMB(0x168a9776844c9b6f)},709,5}, + {CNST_LIMB(0x41c3dea2c7c4509b),{CNST_LIMB(0xf2421126ad7a2852),1,CNST_LIMB(0x3ab46417a8b30e2f),CNST_LIMB(0x35206295938b9c19),CNST_LIMB(0x317d8909a9980afe),CNST_LIMB(0x195b889376db752f),CNST_LIMB(0xeb8a8f47083a08e)},714,5}, + {CNST_LIMB(0x441255580dcabef7),{CNST_LIMB(0xe1601977719c2988),1,CNST_LIMB(0x33c8fff7d69fc31b),CNST_LIMB(0x3aa78ab59c61fb90),CNST_LIMB(0x3c41600b3a070fd7),CNST_LIMB(0x121266b65d774473),CNST_LIMB(0x5812c8f46959e7)},719,5}, + {CNST_LIMB(0x467e90ff075dfa77),{CNST_LIMB(0xd0d4ccbfd7fdb2ae),1,CNST_LIMB(0x2c844d02e9e6109b),CNST_LIMB(0x395a6f0c5abc0a3c),CNST_LIMB(0x30393c08245d18c3),CNST_LIMB(0xac042a1b1191d06),CNST_LIMB(0x1d0c88b0cc347eed)},724,5}, + {CNST_LIMB(0x35b7e6a52de6b),{CNST_LIMB(0x30ff8515bed6fc1f),14,CNST_LIMB(0x2f4533b937fab),CNST_LIMB(0xeb33cd2951b7),CNST_LIMB(0x28ce28b5e1739),CNST_LIMB(0x30d609f6bade3),CNST_LIMB(0x249a87bc9957)},729,4}, + {CNST_LIMB(0x4b9237b1fac55af1),{CNST_LIMB(0xb19ac3ed68fa0441),1,CNST_LIMB(0x1d4958ea0fafef2d),CNST_LIMB(0x4ba7c350e3c499e),CNST_LIMB(0xe26c59f6a4a42e5),CNST_LIMB(0x4acd391ac5c14c62),CNST_LIMB(0x38a0169051f4a371)},733,5}, + {CNST_LIMB(0x4fa265b31b73c6df),{CNST_LIMB(0x9b7b0be2fb2dbf62),1,CNST_LIMB(0x1118cee6ada4ab63),CNST_LIMB(0x2b4fe57f0434fb44),CNST_LIMB(0x2cffeb10b15bf6),CNST_LIMB(0xe12f06864906a7b),CNST_LIMB(0x2a0824475f11f823)},738,5}, + {CNST_LIMB(0x516d33f3efe608d5),{CNST_LIMB(0x926c85237f2dc355),1,CNST_LIMB(0xbb86424304de581),CNST_LIMB(0x3ec190a9cee7a48e),CNST_LIMB(0xd7d8bfe60d52602),CNST_LIMB(0xdff7561c9c07756),CNST_LIMB(0x3c1d2db82b327710)},743,5}, + {CNST_LIMB(0x545e342d68fbf683),{CNST_LIMB(0x8464ceb2fdd80297),1,CNST_LIMB(0x2e56377c50c1c77),CNST_LIMB(0x474ec2f4bd92576),CNST_LIMB(0x2a5da9663350db1),CNST_LIMB(0x220077cd63148dd2),CNST_LIMB(0x280dcbaf0c2ad61c)},748,5}, + {CNST_LIMB(0x57e94c457826bd6b),{CNST_LIMB(0x74bd3fdb5c8280eb),1,CNST_LIMB(0x502d67750fb2852a),CNST_LIMB(0x45149579eaa28023),CNST_LIMB(0x3bb53a4c0c4db579),CNST_LIMB(0x3a96a3180f221b2),CNST_LIMB(0x27f9af8526a8cf70)},753,5}, + {CNST_LIMB(0x5b9b45655ebf3b79),{CNST_LIMB(0x65b42a0f00510df2),1,CNST_LIMB(0x48c975354281890e),CNST_LIMB(0x2929df87cfd7453c),CNST_LIMB(0x1b6bb026965ae7ed),CNST_LIMB(0x52659a85b7df96c2),CNST_LIMB(0x21db715c0f72134)},758,5}, + {CNST_LIMB(0x5e6ad0d2eaa14c25),{CNST_LIMB(0x5b0e2387ccda26c3),1,CNST_LIMB(0x432a5e5a2abd67b6),CNST_LIMB(0x14b7571d1a05b77d),CNST_LIMB(0x498547c0b3350ce8),CNST_LIMB(0x9d4e28ce05c6c27),CNST_LIMB(0x4913b5ba5c5edc8)},763,5}, + {CNST_LIMB(0x60704759208cd21d),{CNST_LIMB(0x53c7ef8bdf16795b),1,CNST_LIMB(0x3f1f714dbee65bc6),CNST_LIMB(0x25fc61d1a473562),CNST_LIMB(0x158a2ce0171d5fd),CNST_LIMB(0x2f3bdc4b8520f24c),CNST_LIMB(0x4081386865e00703)},768,5}, + {CNST_LIMB(0x63bc6b32a19c883b),{CNST_LIMB(0x488c1dcdc113150a),1,CNST_LIMB(0x3887299abcc6ef8a),CNST_LIMB(0x2aab5731e10d2529),CNST_LIMB(0x5eeeb60320f0bef4),CNST_LIMB(0x18e4d9f1c279596e),CNST_LIMB(0xf478370d7e2465f)},773,5}, + {CNST_LIMB(0x47f6a9e8dab75),{CNST_LIMB(0xc7577d2a861d140e),13,CNST_LIMB(0x435dc14ffaf0e),CNST_LIMB(0x2557057e3745b),CNST_LIMB(0x450b5149277a6),CNST_LIMB(0xda1fae30c112),CNST_LIMB(0x3951ca3221a2d)},778,4}, + {CNST_LIMB(0x6e373b550764872f),{CNST_LIMB(0x294ecadbf29bc1cb),1,CNST_LIMB(0x23918955f136f1a2),CNST_LIMB(0x29cffcf11c6e3647),CNST_LIMB(0x4af7d1191966b3e0),CNST_LIMB(0x38ebd581ce6f80c6),CNST_LIMB(0x14ebbbc9200a6d59)},782,5}, + {CNST_LIMB(0x4ca8ed991d8b9),{CNST_LIMB(0xab7251b581f8c74d),13,CNST_LIMB(0x1639351769382),CNST_LIMB(0x3145f1b0a8e59),CNST_LIMB(0xff20704d1793),CNST_LIMB(0x1cd9e54d284e),CNST_LIMB(0x1602f3ac7db9c)},787,4}, + {CNST_LIMB(0x74b13dc12b016dc1),{CNST_LIMB(0x18ce87a5c4d39e85),1,CNST_LIMB(0x169d847da9fd247e),CNST_LIMB(0x286e093dede24bb5),CNST_LIMB(0x1854fa948ad9109d),CNST_LIMB(0x6b81a8b81781577c),CNST_LIMB(0xad44a3d15bc6be5)},791,5}, + {CNST_LIMB(0x78b0c5ae997e31ef),{CNST_LIMB(0xf811cf8a4bb1f80),1,CNST_LIMB(0xe9e74a2cd039c22),CNST_LIMB(0x30a04d242d0dfd11),CNST_LIMB(0x128fe81eea336414),CNST_LIMB(0x3639736d1defa144),CNST_LIMB(0x5eeb71b0497f58ff)},796,5}, + {CNST_LIMB(0x7dcf3e856f4612d7),{CNST_LIMB(0x47509bc7743383b),1,CNST_LIMB(0x46182f52173da52),CNST_LIMB(0x430e9fd64eeb40e6),CNST_LIMB(0x2774902fd5f53d5b),CNST_LIMB(0x4f5c0d7033943d05),CNST_LIMB(0x3be559075217f3a8)},801,5}, + {CNST_LIMB(0x550e24ca1a54b),{CNST_LIMB(0x81416693b884d74c),13,CNST_LIMB(0xee45b7c01c48),CNST_LIMB(0x3848946d8aec8),CNST_LIMB(0x541aec862a3ac),CNST_LIMB(0x4f2e818315dbc),CNST_LIMB(0xa8197f5fb2b)},806,4}, + {CNST_LIMB(0x573c8f376a18d),{CNST_LIMB(0x779f50fc3a19a6c9),13,CNST_LIMB(0x4fc81955d5129),CNST_LIMB(0xe80abe2896a1),CNST_LIMB(0x3a505801c159e),CNST_LIMB(0x162eeea75d4cd),CNST_LIMB(0x20dd0efbe8570)},810,4}, + {CNST_LIMB(0x589c3c614e917),{CNST_LIMB(0x71cc8c064f8788ee),13,CNST_LIMB(0x325d12375f7e1),CNST_LIMB(0x514f8f320e7d3),CNST_LIMB(0x55cf104cf51d3),CNST_LIMB(0x23278b29858c6),CNST_LIMB(0x3b956eecbdd30)},814,4}, + {CNST_LIMB(0x5a494bafe993d),{CNST_LIMB(0x6aef2ee9b04422dc),13,CNST_LIMB(0x5111950929bd7),CNST_LIMB(0x2c3779cd17b37),CNST_LIMB(0x2b7f886fc6966),CNST_LIMB(0x4f0b47ffa902d),CNST_LIMB(0x10bd268a51d6c)},818,4}, + {CNST_LIMB(0x5bdea84b0b73f),{CNST_LIMB(0x64adca063056bccb),13,CNST_LIMB(0x427b265a68455),CNST_LIMB(0x2ef4f15ac34a6),CNST_LIMB(0x493c4fd89b0ce),CNST_LIMB(0x7e61acb14b3a),CNST_LIMB(0x20d0328207c83)},822,4}, + {CNST_LIMB(0x5d4c55a25a945),{CNST_LIMB(0x5f37ce4e679bb0c3),13,CNST_LIMB(0x5b08caebb5502),CNST_LIMB(0x3d0eab29a51f1),CNST_LIMB(0x3c9ac2f5a187d),CNST_LIMB(0x29304bdf75a79),CNST_LIMB(0x14d681f7ea1f0)},826,4}, + {CNST_LIMB(0x5f286a042b527),{CNST_LIMB(0x585aa50035c6eb19),13,CNST_LIMB(0x1f74be8b4aa53),CNST_LIMB(0x47290f02b2679),CNST_LIMB(0x44c4bd1ee1378),CNST_LIMB(0x51286cbc40de1),CNST_LIMB(0xc379e189a860)},830,4}, + {CNST_LIMB(0x62521adc68615),{CNST_LIMB(0x4d46d1e25221a4ef),13,CNST_LIMB(0x53d112a3ea538),CNST_LIMB(0x26e6ad330e6d8),CNST_LIMB(0x56830d4191021),CNST_LIMB(0xed06536bee19),CNST_LIMB(0x5ba5998aa1cbd)},834,4}, + {CNST_LIMB(0x64f0108522a4b),{CNST_LIMB(0x44a2bea99b1fe52b),13,CNST_LIMB(0x22a1a59e3d4a4),CNST_LIMB(0x55422d57d71a4),CNST_LIMB(0x48b99527500ba),CNST_LIMB(0x5dffbfb3a890f),CNST_LIMB(0x618de61d17b82)},838,4}, + {CNST_LIMB(0x684eced8d04ad),{CNST_LIMB(0x3a25a4304e45cd70),13,CNST_LIMB(0x498e06ad4670c),CNST_LIMB(0x6397605c9b1d3),CNST_LIMB(0x1107048baaf16),CNST_LIMB(0x6292ac8aeb164),CNST_LIMB(0x4def8ba3a7552)},842,4}, + {CNST_LIMB(0x69e938da0b6b9),{CNST_LIMB(0x35644b98f3e9b802),13,CNST_LIMB(0x38dd6fce5c5b4),CNST_LIMB(0x6307e2db6000d),CNST_LIMB(0x56835d316819f),CNST_LIMB(0x2b1da7eb24a08),CNST_LIMB(0xf110b6d6a913)},846,4}, + {CNST_LIMB(0x6bf4be42947af),{CNST_LIMB(0x2f87eee6ccd631e7),13,CNST_LIMB(0x6b0e021f080f0),CNST_LIMB(0x4b469e0f2c53a),CNST_LIMB(0x50664c269b5e3),CNST_LIMB(0x4139b73b961d6),CNST_LIMB(0x13dc91bdbee0f)},850,4}, + {CNST_LIMB(0x6f54dbd6ccf57),{CNST_LIMB(0x26540878c92cd039),13,CNST_LIMB(0x382053afc295a),CNST_LIMB(0x2c8c19e89353d),CNST_LIMB(0x534384d9aa927),CNST_LIMB(0x249d03e328fc1),CNST_LIMB(0x2c57702938274)},854,4}, + {CNST_LIMB(0x71632fdcf6c15),{CNST_LIMB(0x20fdcdbf333d83af),13,CNST_LIMB(0x5242218aef575),CNST_LIMB(0x9ab7cecd8cd3),CNST_LIMB(0x4ea4e8bc18b4d),CNST_LIMB(0x16d9320fd98f4),CNST_LIMB(0x2d2b50a730c10)},858,4}, + {CNST_LIMB(0x7317fb257e1e1),{CNST_LIMB(0x1cb50c1361edfd6e),13,CNST_LIMB(0x489cb7c9fe32a),CNST_LIMB(0x258cf78a73422),CNST_LIMB(0x560fbee8c2cf2),CNST_LIMB(0x467156be8e294),CNST_LIMB(0xc593edc4d71f)},862,4}, + {CNST_LIMB(0x75e5d5c5e4577),{CNST_LIMB(0x15ef86e1cee16113),13,CNST_LIMB(0x6eece492ce925),CNST_LIMB(0x561b9134c02bf),CNST_LIMB(0x596b2a81ab56d),CNST_LIMB(0x296835004dd20),CNST_LIMB(0x3160915ef8c65)},866,4}, + {CNST_LIMB(0x788a813bc2fb1),{CNST_LIMB(0xfd74e4e944c107b),13,CNST_LIMB(0x6e15178139c26),CNST_LIMB(0x7828db84f90d2),CNST_LIMB(0x3e1e0cdc0bb1c),CNST_LIMB(0x4bbcd0685b013),CNST_LIMB(0x60b28bb37de31)},870,4}, + {CNST_LIMB(0x7b02c02e67beb),{CNST_LIMB(0xa621b97c2ae6cdb),13,CNST_LIMB(0x2068f6d99eb3c),CNST_LIMB(0x4ba3bacf8ed2f),CNST_LIMB(0x79baf6516f06a),CNST_LIMB(0x34fac2ffdfb3b),CNST_LIMB(0x601bda55ddca3)},874,4}, + {CNST_LIMB(0x7d0b0166731df),{CNST_LIMB(0x60dcab2ebe68654),13,CNST_LIMB(0x5a87235f786e1),CNST_LIMB(0x498c71a4f2c04),CNST_LIMB(0x6c4cf93aac90f),CNST_LIMB(0x2fc43a717ef2e),CNST_LIMB(0x61100c40f26dc)},878,4}, + {CNST_LIMB(0x7f65827009e4b),{CNST_LIMB(0x13671d16472022c),13,CNST_LIMB(0x66a0a221f20de),CNST_LIMB(0x1863cc32757a5),CNST_LIMB(0x72205d2b707de),CNST_LIMB(0x41eb3856479f4),CNST_LIMB(0x62a869dadecf2)},882,4}, + {CNST_LIMB(0x826267aca5d6b),{CNST_LIMB(0xf6a307f100c87643),12,CNST_LIMB(0x18b32a6e55cb2),CNST_LIMB(0x800c79d089746),CNST_LIMB(0x4df069eb6014f),CNST_LIMB(0xa67afd1d0f6b),CNST_LIMB(0x39654bc96e516)},886,4}, + {CNST_LIMB(0x854fadbb02f0d),{CNST_LIMB(0xeb99f80c181c04d8),12,CNST_LIMB(0x530f8982a799b),CNST_LIMB(0x488a5468d8f30),CNST_LIMB(0xcb498b28c81),CNST_LIMB(0x1d791c8466f6a),CNST_LIMB(0x583d384518de9)},890,4}, + {CNST_LIMB(0x86f75f67e5373),{CNST_LIMB(0xe592b4846fa38885),12,CNST_LIMB(0x16d1a804d8305),CNST_LIMB(0x3a9f7db1defba),CNST_LIMB(0x53fa43529d63d),CNST_LIMB(0x380980122856a),CNST_LIMB(0x59320408536cb)},894,4}, + {CNST_LIMB(0x89110415e014b),{CNST_LIMB(0xde220b6a3ca63611),12,CNST_LIMB(0x1183ea4dd5cca),CNST_LIMB(0x6cd0a51299316),CNST_LIMB(0x2c53d4f8b0ee6),CNST_LIMB(0x39ef54aed56eb),CNST_LIMB(0x7f71b2a9bf0fd)},898,4}, + {CNST_LIMB(0x8bbeefef93d97),{CNST_LIMB(0xd4f7338df110e1c1),12,CNST_LIMB(0x3ee5d151be367),CNST_LIMB(0x2e6b9dfc4bbcb),CNST_LIMB(0x225349b2e386e),CNST_LIMB(0x492ce15456b18),CNST_LIMB(0x856a0d6e68759)},902,4}, + {CNST_LIMB(0x8fa29248f38e9),{CNST_LIMB(0xc84479a2d3ad73b2),12,CNST_LIMB(0x282c97bed2bdc),CNST_LIMB(0x86b44220fa8e0),CNST_LIMB(0x497c548d39ada),CNST_LIMB(0x6928a8433805d),CNST_LIMB(0x1d2f77b091c29)},906,4}, + {CNST_LIMB(0x9311da8eb3ea1),{CNST_LIMB(0xbd9c9989aacc578d),12,CNST_LIMB(0x73d0b00fcee87),CNST_LIMB(0x44acd3ec00c9b),CNST_LIMB(0x3b8ead35b82f4),CNST_LIMB(0x7a1ca1fa55a8c),CNST_LIMB(0x98634149273d)},910,4}, + {CNST_LIMB(0x96fc1b51999b5),{CNST_LIMB(0xb20e950936df3d71),12,CNST_LIMB(0x899afa996b260),CNST_LIMB(0x2d7d06dae3233),CNST_LIMB(0x143e323027e28),CNST_LIMB(0x8483b9a26498e),CNST_LIMB(0x689b7b1e2fc91)},914,4}, + {CNST_LIMB(0x99d2dc5aa820b),{CNST_LIMB(0xaa0bd71d4333c056),12,CNST_LIMB(0x71d5124399b20),CNST_LIMB(0x62e94421a897f),CNST_LIMB(0x892c96c6ff4dc),CNST_LIMB(0x54dc6420d0ec4),CNST_LIMB(0x43a10331ebf4f)},918,4}, + {CNST_LIMB(0x9c18c1a21f755),{CNST_LIMB(0xa3d7a1305040e509),12,CNST_LIMB(0x4a6f652c96ebf),CNST_LIMB(0x92a1dbc9a1bc4),CNST_LIMB(0x7856fe0adb2e7),CNST_LIMB(0x65020d02f02aa),CNST_LIMB(0x7983e2f6dcbd)},922,4}, + {CNST_LIMB(0xa019a0d84ce05),{CNST_LIMB(0x99580856e1c2e36b),12,CNST_LIMB(0x5060429959a17),CNST_LIMB(0x8af3dd6c8fedb),CNST_LIMB(0x8521b97cefc72),CNST_LIMB(0x7289dc3848291),CNST_LIMB(0x51cb410c11cef)},926,4}, + {CNST_LIMB(0xa3837104af50b),{CNST_LIMB(0x90cc816ca127f31c),12,CNST_LIMB(0x7fcd3ea8e707c),CNST_LIMB(0x1ea9bdca73534),CNST_LIMB(0x3d0d37ad79bcf),CNST_LIMB(0x78befa2ea5ef8),CNST_LIMB(0x8c7846571c14b)},930,4}, + {CNST_LIMB(0xa74ba276e925b),{CNST_LIMB(0x87bcf3ca6aa1f420),12,CNST_LIMB(0x876dcb0272647),CNST_LIMB(0x63761f150b253),CNST_LIMB(0xa347a550c386b),CNST_LIMB(0xb7438cfe5ad4),CNST_LIMB(0x7bca2b8c0aabf)},934,4}, + {CNST_LIMB(0xad0c05b3ae661),{CNST_LIMB(0x7ab7cf1782b58dcf),12,CNST_LIMB(0x54750c4f56635),CNST_LIMB(0x2eac67167559c),CNST_LIMB(0x563c222f2aff7),CNST_LIMB(0x7b738313b7ac1),CNST_LIMB(0x65d997bccd9d9)},938,4}, + {CNST_LIMB(0xb0da5211cc3e7),{CNST_LIMB(0x72916ab867f7595c),12,CNST_LIMB(0xfa941ccadf01),CNST_LIMB(0x8d756d36295ea),CNST_LIMB(0x4f9f479e132fd),CNST_LIMB(0x18526df562fde),CNST_LIMB(0x434f07e1d9d33)},942,4}, + {CNST_LIMB(0xb36ca8c3991af),{CNST_LIMB(0x6d41bd767e129ba0),12,CNST_LIMB(0x13836edce5114),CNST_LIMB(0xa52c71bc138ab),CNST_LIMB(0x339d5f264e899),CNST_LIMB(0x65473fc2cfa57),CNST_LIMB(0x4714fd9da5ac0)},946,4}, + {CNST_LIMB(0xb6694790c60df),{CNST_LIMB(0x6746add17a9a2fee),12,CNST_LIMB(0x4c2521610f0f4),CNST_LIMB(0x1ef55755cab96),CNST_LIMB(0x3bb413c494cbb),CNST_LIMB(0x59bedca68abba),CNST_LIMB(0x618c95ba5598b)},950,4}, + {CNST_LIMB(0xb89a345c48d7d),{CNST_LIMB(0x6302ff6c309d06ee),12,CNST_LIMB(0x2296406fcba90),CNST_LIMB(0x4d697f4e83909),CNST_LIMB(0xa16067eedb775),CNST_LIMB(0xa50f824607f2b),CNST_LIMB(0x3d3946b54c9f9)},954,4}, + {CNST_LIMB(0xbb02a8b8a132b),{CNST_LIMB(0x5e70bfded3b337fc),12,CNST_LIMB(0x8c29c2d62d33),CNST_LIMB(0x3f082e296ef8f),CNST_LIMB(0x49afe57a19b90),CNST_LIMB(0xb7bd5be58da15),CNST_LIMB(0x8de61bd7e627f)},958,4}, + {CNST_LIMB(0xbd6468bb171ff),{CNST_LIMB(0x5a0880d51b052fd7),12,CNST_LIMB(0x64a7322bed5a0),CNST_LIMB(0x3f94ed2b89267),CNST_LIMB(0x980b9bde44b2d),CNST_LIMB(0x4a6676c0e7d13),CNST_LIMB(0xb24baad1f0c40)},962,4}, + {CNST_LIMB(0xc17671b548641),{CNST_LIMB(0x52c0b00a813a011e),12,CNST_LIMB(0x85095e7597d4),CNST_LIMB(0x55524352a702c),CNST_LIMB(0x868164742fab5),CNST_LIMB(0x3b3bcfdffb2cf),CNST_LIMB(0xab11b067d542f)},966,4}, + {CNST_LIMB(0xc57f07d496e1b),{CNST_LIMB(0x4bd58ed22f4b2aac),12,CNST_LIMB(0x449a9c42f9a11),CNST_LIMB(0x2b9c2279a88de),CNST_LIMB(0xa905cf41733e1),CNST_LIMB(0x206b2bfa8b896),CNST_LIMB(0xb378d16c66efd)},970,4}, + {CNST_LIMB(0xc814b88200ac3),{CNST_LIMB(0x478c251716699c98),12,CNST_LIMB(0x97df5b023b898),CNST_LIMB(0x5507d796eedc1),CNST_LIMB(0xb4a34312d58e3),CNST_LIMB(0x4324fc6d4f6f2),CNST_LIMB(0x29d3a7f3d88da)},974,4}, + {CNST_LIMB(0xcb958ba8e9259),{CNST_LIMB(0x41e93d5390ce4a3c),12,CNST_LIMB(0x75906ffdbe592),CNST_LIMB(0x35d1e8b619b02),CNST_LIMB(0x5535c122a3ba7),CNST_LIMB(0xb2c9d287f29c8),CNST_LIMB(0x7f9a7f1adf9d9)},978,4}, + {CNST_LIMB(0xcfaa956d67517),{CNST_LIMB(0x3b9549c76b39f2a8),12,CNST_LIMB(0x44a2e5454ad61),CNST_LIMB(0xa8d0541bab05b),CNST_LIMB(0x801e8693083d4),CNST_LIMB(0xc17c6af57bddf),CNST_LIMB(0xc7b4d9a0870d9)},982,4}, + {CNST_LIMB(0xd56380a0e8273),{CNST_LIMB(0x331ecd3feca3d608),12,CNST_LIMB(0xc5686ff8a7efd),CNST_LIMB(0x61e35c54a4f3f),CNST_LIMB(0x4bf5dc73ede0f),CNST_LIMB(0x2bf7f029f09a5),CNST_LIMB(0x718dc3463c882)},986,4}, + {CNST_LIMB(0xd9c8b65d94f5b),{CNST_LIMB(0x2cec062e71d179c4),12,CNST_LIMB(0xa3aaac38dbec6),CNST_LIMB(0x78cabf09fa56c),CNST_LIMB(0xcaf0fccc6b30b),CNST_LIMB(0xce30344eb1fac),CNST_LIMB(0x4ba46e5575b11)},990,4}, + {CNST_LIMB(0xdc90a482debcb),{CNST_LIMB(0x2920b89d6fc02e7f),12,CNST_LIMB(0x9f0f9b3b403a),CNST_LIMB(0x619327b332542),CNST_LIMB(0xa75eae1f8ff9f),CNST_LIMB(0x62350a1cba491),CNST_LIMB(0x22ac2e8eb19f9)},994,4}, + {CNST_LIMB(0xe0ac9922e6235),{CNST_LIMB(0x23b187206556b5c4),12,CNST_LIMB(0x157440c67a3c9),CNST_LIMB(0x696b5be3cc464),CNST_LIMB(0x2ebcde890e790),CNST_LIMB(0xae767f93832de),CNST_LIMB(0xcb1eade2d80a8)},998,4} +#endif diff --git a/vere/ext/gmp/gen/x86_64-windows/config.h b/vere/ext/gmp/gen/x86_64-windows/config.h new file mode 100644 index 0000000..be27958 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/config.h @@ -0,0 +1,674 @@ +/* config.h. Generated from config.in by configure. */ +/* config.in. Generated from configure.ac by autoheader. */ + +/* + +Copyright 1996-2022 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + +or + + * the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any + later version. + +or both in parallel, as here. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library. If not, +see https://www.gnu.org/licenses/. +*/ + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* The gmp-mparam.h file (a string) the tune program should suggest updating. + */ +#define GMP_MPARAM_H_SUGGEST "./mpn/x86_64/k8/gmp-mparam.h" + +/* Define to 1 if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Define to 1 if alloca() works (via gmp-impl.h). */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +/* #undef HAVE_ALLOCA_H */ + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((const)) */ +#define HAVE_ATTRIBUTE_CONST 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((malloc)) */ +#define HAVE_ATTRIBUTE_MALLOC 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((mode (XX))) + */ +#define HAVE_ATTRIBUTE_MODE 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((noreturn)) */ +#define HAVE_ATTRIBUTE_NORETURN 1 + +/* Define to 1 if you have the `attr_get' function. */ +/* #undef HAVE_ATTR_GET */ + +/* Define to 1 if tests/libtests has calling conventions checking for the CPU + */ +/* #undef HAVE_CALLING_CONVENTIONS */ + +/* Define to 1 if you have the `clock' function. */ +#define HAVE_CLOCK 1 + +/* Define to 1 if you have the `clock_gettime' function */ +/* #undef HAVE_CLOCK_GETTIME */ + +/* Define to 1 if you have the `cputime' function. */ +/* #undef HAVE_CPUTIME */ + +/* Define to 1 if you have the declaration of `fgetc', and to 0 if you don't. + */ +#define HAVE_DECL_FGETC 1 + +/* Define to 1 if you have the declaration of `fscanf', and to 0 if you don't. + */ +#define HAVE_DECL_FSCANF 1 + +/* Define to 1 if you have the declaration of `optarg', and to 0 if you don't. + */ +#define HAVE_DECL_OPTARG 1 + +/* Define to 1 if you have the declaration of `sys_errlist', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_ERRLIST 0 + +/* Define to 1 if you have the declaration of `sys_nerr', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_NERR 0 + +/* Define to 1 if you have the declaration of `ungetc', and to 0 if you don't. + */ +#define HAVE_DECL_UNGETC 1 + +/* Define to 1 if you have the declaration of `vfprintf', and to 0 if you + don't. */ +#define HAVE_DECL_VFPRINTF 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_DLFCN_H */ + +/* Define one of the following to 1 for the format of a `double'. + If your format is not among these choices, or you don't know what it is, + then leave all undefined. + IEEE_LITTLE_SWAPPED means little endian, but with the two 4-byte halves + swapped, as used by ARM CPUs in little endian mode. */ +/* #undef HAVE_DOUBLE_IEEE_BIG_ENDIAN */ +#define HAVE_DOUBLE_IEEE_LITTLE_ENDIAN 1 +/* #undef HAVE_DOUBLE_IEEE_LITTLE_SWAPPED */ +/* #undef HAVE_DOUBLE_VAX_D */ +/* #undef HAVE_DOUBLE_VAX_G */ +/* #undef HAVE_DOUBLE_CRAY_CFP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define to 1 if you have the `getrusage' function. */ +/* #undef HAVE_GETRUSAGE */ + +/* Define to 1 if you have the `getsysinfo' function. */ +/* #undef HAVE_GETSYSINFO */ + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if the compiler accepts gcc style __attribute__ ((visibility)) + and __attribute__ ((alias)) */ +#define HAVE_HIDDEN_ALIAS 1 + +/* Define one of these to 1 for the host CPU family. + If your CPU is not in any of these families, leave all undefined. + For an AMD64 chip, define "x86" in ABI=32, but not in ABI=64. */ +/* #undef HAVE_HOST_CPU_FAMILY_alpha */ +/* #undef HAVE_HOST_CPU_FAMILY_m68k */ +/* #undef HAVE_HOST_CPU_FAMILY_power */ +/* #undef HAVE_HOST_CPU_FAMILY_powerpc */ +/* #undef HAVE_HOST_CPU_FAMILY_x86 */ +#define HAVE_HOST_CPU_FAMILY_x86_64 1 + +/* Define one of the following to 1 for the host CPU, as per the output of + ./config.guess. If your CPU is not listed here, leave all undefined. */ +/* #undef HAVE_HOST_CPU_alphaev67 */ +/* #undef HAVE_HOST_CPU_alphaev68 */ +/* #undef HAVE_HOST_CPU_alphaev7 */ +/* #undef HAVE_HOST_CPU_m68020 */ +/* #undef HAVE_HOST_CPU_m68030 */ +/* #undef HAVE_HOST_CPU_m68040 */ +/* #undef HAVE_HOST_CPU_m68060 */ +/* #undef HAVE_HOST_CPU_m68360 */ +/* #undef HAVE_HOST_CPU_powerpc604 */ +/* #undef HAVE_HOST_CPU_powerpc604e */ +/* #undef HAVE_HOST_CPU_powerpc750 */ +/* #undef HAVE_HOST_CPU_powerpc7400 */ +/* #undef HAVE_HOST_CPU_supersparc */ +/* #undef HAVE_HOST_CPU_i386 */ +/* #undef HAVE_HOST_CPU_i586 */ +/* #undef HAVE_HOST_CPU_i686 */ +/* #undef HAVE_HOST_CPU_pentium */ +/* #undef HAVE_HOST_CPU_pentiummmx */ +/* #undef HAVE_HOST_CPU_pentiumpro */ +/* #undef HAVE_HOST_CPU_pentium2 */ +/* #undef HAVE_HOST_CPU_pentium3 */ +/* #undef HAVE_HOST_CPU_pentium4 */ +/* #undef HAVE_HOST_CPU_core2 */ +/* #undef HAVE_HOST_CPU_nehalem */ +/* #undef HAVE_HOST_CPU_westmere */ +/* #undef HAVE_HOST_CPU_sandybridge */ +/* #undef HAVE_HOST_CPU_ivybridge */ +/* #undef HAVE_HOST_CPU_haswell */ +/* #undef HAVE_HOST_CPU_broadwell */ +/* #undef HAVE_HOST_CPU_skylake */ +/* #undef HAVE_HOST_CPU_silvermont */ +/* #undef HAVE_HOST_CPU_goldmont */ +/* #undef HAVE_HOST_CPU_tremont */ +/* #undef HAVE_HOST_CPU_k8 */ +/* #undef HAVE_HOST_CPU_k10 */ +/* #undef HAVE_HOST_CPU_bulldozer */ +/* #undef HAVE_HOST_CPU_piledriver */ +/* #undef HAVE_HOST_CPU_steamroller */ +/* #undef HAVE_HOST_CPU_excavator */ +/* #undef HAVE_HOST_CPU_zen */ +/* #undef HAVE_HOST_CPU_bobcat */ +/* #undef HAVE_HOST_CPU_jaguar */ +/* #undef HAVE_HOST_CPU_s390_z900 */ +/* #undef HAVE_HOST_CPU_s390_z990 */ +/* #undef HAVE_HOST_CPU_s390_z9 */ +/* #undef HAVE_HOST_CPU_s390_z10 */ +/* #undef HAVE_HOST_CPU_s390_z196 */ +/* #undef HAVE_HOST_CPU_s390_z13 */ +/* #undef HAVE_HOST_CPU_s390_z14 */ +/* #undef HAVE_HOST_CPU_s390_z15 */ + +/* Define to 1 iff we have a s390 with 64-bit registers. */ +/* #undef HAVE_HOST_CPU_s390_zarch */ + +/* Define to 1 if the system has the type `intmax_t'. */ +#define HAVE_INTMAX_T 1 + +/* Define to 1 if the system has the type `intptr_t'. */ +#define HAVE_INTPTR_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_INVENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LANGINFO_H */ + +/* Define one of these to 1 for the endianness of `mp_limb_t'. + If the endianness is not a simple big or little, or you don't know what + it is, then leave both undefined. */ +/* #undef HAVE_LIMB_BIG_ENDIAN */ +#define HAVE_LIMB_LITTLE_ENDIAN 1 + +#define _LONG_LONG_LIMB 1 + +/* Define to 1 if you have the `localeconv' function. */ +#define HAVE_LOCALECONV 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if the system has the type `long double'. */ +#define HAVE_LONG_DOUBLE 1 + +/* Define to 1 if the system has the type `long long'. */ +#define HAVE_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACHINE_HAL_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `mmap' function. */ +/* #undef HAVE_MMAP */ + +/* Define to 1 if you have the `mprotect' function. */ +#define HAVE_MPROTECT 1 + +/* Define to 1 each of the following for which a native (ie. CPU specific) + implementation of the corresponding routine exists. */ +#define HAVE_NATIVE_mpn_add_n 1 +/* #undef HAVE_NATIVE_mpn_add_n_sub_n */ +#define HAVE_NATIVE_mpn_add_nc 1 +#define HAVE_NATIVE_mpn_addaddmul_1msb0 1 +#define HAVE_NATIVE_mpn_addlsh1_n 1 +#define HAVE_NATIVE_mpn_addlsh2_n 1 +#define HAVE_NATIVE_mpn_addlsh_n 1 +/* #undef HAVE_NATIVE_mpn_addlsh1_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc */ +/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh_n_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip2 */ +/* #undef HAVE_NATIVE_mpn_addmul_1c */ +#define HAVE_NATIVE_mpn_addmul_2 1 +/* #undef HAVE_NATIVE_mpn_addmul_3 */ +/* #undef HAVE_NATIVE_mpn_addmul_4 */ +/* #undef HAVE_NATIVE_mpn_addmul_5 */ +/* #undef HAVE_NATIVE_mpn_addmul_6 */ +/* #undef HAVE_NATIVE_mpn_addmul_7 */ +/* #undef HAVE_NATIVE_mpn_addmul_8 */ +/* #undef HAVE_NATIVE_mpn_addmul_2s */ +#define HAVE_NATIVE_mpn_and_n 1 +#define HAVE_NATIVE_mpn_andn_n 1 +#define HAVE_NATIVE_mpn_bdiv_dbm1c 1 +#define HAVE_NATIVE_mpn_bdiv_q_1 1 +#define HAVE_NATIVE_mpn_pi1_bdiv_q_1 1 +#define HAVE_NATIVE_mpn_cnd_add_n 1 +#define HAVE_NATIVE_mpn_cnd_sub_n 1 +#define HAVE_NATIVE_mpn_com 1 +#define HAVE_NATIVE_mpn_copyd 1 +#define HAVE_NATIVE_mpn_copyi 1 +/* #undef HAVE_NATIVE_mpn_div_qr_1n_pi1 */ +/* #undef HAVE_NATIVE_mpn_div_qr_2 */ +#define HAVE_NATIVE_mpn_divexact_1 1 +/* #undef HAVE_NATIVE_mpn_divexact_by3c */ +#define HAVE_NATIVE_mpn_divrem_1 1 +/* #undef HAVE_NATIVE_mpn_divrem_1c */ +#define HAVE_NATIVE_mpn_divrem_2 1 +/* #undef HAVE_NATIVE_mpn_gcd_1 */ +#define HAVE_NATIVE_mpn_gcd_11 1 +/* #undef HAVE_NATIVE_mpn_gcd_22 */ +#define HAVE_NATIVE_mpn_hamdist 1 +#define HAVE_NATIVE_mpn_invert_limb 1 +#define HAVE_NATIVE_mpn_ior_n 1 +#define HAVE_NATIVE_mpn_iorn_n 1 +#define HAVE_NATIVE_mpn_lshift 1 +#define HAVE_NATIVE_mpn_lshiftc 1 +/* #undef HAVE_NATIVE_mpn_lshsub_n */ +/* #undef HAVE_NATIVE_mpn_mod_1 */ +#define HAVE_NATIVE_mpn_mod_1_1p 1 +/* #undef HAVE_NATIVE_mpn_mod_1c */ +#define HAVE_NATIVE_mpn_mod_1s_2p 1 +#define HAVE_NATIVE_mpn_mod_1s_4p 1 +#define HAVE_NATIVE_mpn_mod_34lsub1 1 +#define HAVE_NATIVE_mpn_modexact_1_odd 1 +#define HAVE_NATIVE_mpn_modexact_1c_odd 1 +#define HAVE_NATIVE_mpn_mul_1 1 +#define HAVE_NATIVE_mpn_mul_1c 1 +#define HAVE_NATIVE_mpn_mul_2 1 +/* #undef HAVE_NATIVE_mpn_mul_3 */ +/* #undef HAVE_NATIVE_mpn_mul_4 */ +/* #undef HAVE_NATIVE_mpn_mul_5 */ +/* #undef HAVE_NATIVE_mpn_mul_6 */ +#define HAVE_NATIVE_mpn_mul_basecase 1 +#define HAVE_NATIVE_mpn_mullo_basecase 1 +#define HAVE_NATIVE_mpn_nand_n 1 +#define HAVE_NATIVE_mpn_nior_n 1 +#define HAVE_NATIVE_mpn_popcount 1 +#define HAVE_NATIVE_mpn_preinv_divrem_1 1 +/* #undef HAVE_NATIVE_mpn_preinv_mod_1 */ +#define HAVE_NATIVE_mpn_redc_1 1 +/* #undef HAVE_NATIVE_mpn_redc_2 */ +#define HAVE_NATIVE_mpn_rsblsh1_n 1 +#define HAVE_NATIVE_mpn_rsblsh2_n 1 +#define HAVE_NATIVE_mpn_rsblsh_n 1 +/* #undef HAVE_NATIVE_mpn_rsblsh1_nc */ +/* #undef HAVE_NATIVE_mpn_rsblsh2_nc */ +/* #undef HAVE_NATIVE_mpn_rsblsh_nc */ +#define HAVE_NATIVE_mpn_rsh1add_n 1 +#define HAVE_NATIVE_mpn_rsh1add_nc 1 +#define HAVE_NATIVE_mpn_rsh1sub_n 1 +#define HAVE_NATIVE_mpn_rsh1sub_nc 1 +#define HAVE_NATIVE_mpn_rshift 1 +/* #undef HAVE_NATIVE_mpn_sbpi1_bdiv_r */ +#define HAVE_NATIVE_mpn_sqr_basecase 1 +/* #undef HAVE_NATIVE_mpn_sqr_diagonal */ +#define HAVE_NATIVE_mpn_sqr_diag_addlsh1 1 +#define HAVE_NATIVE_mpn_sub_n 1 +#define HAVE_NATIVE_mpn_sub_nc 1 +#define HAVE_NATIVE_mpn_sublsh1_n 1 +/* #undef HAVE_NATIVE_mpn_sublsh2_n */ +/* #undef HAVE_NATIVE_mpn_sublsh_n */ +/* #undef HAVE_NATIVE_mpn_sublsh1_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh2_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh_nc */ +/* #undef HAVE_NATIVE_mpn_sublsh1_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh2_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh_n_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh1_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh2_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_sublsh_nc_ip1 */ +/* #undef HAVE_NATIVE_mpn_submul_1c */ +/* #undef HAVE_NATIVE_mpn_tabselect */ +/* #undef HAVE_NATIVE_mpn_udiv_qrnnd */ +/* #undef HAVE_NATIVE_mpn_udiv_qrnnd_r */ +/* #undef HAVE_NATIVE_mpn_umul_ppmm */ +/* #undef HAVE_NATIVE_mpn_umul_ppmm_r */ +#define HAVE_NATIVE_mpn_xor_n 1 +#define HAVE_NATIVE_mpn_xnor_n 1 + +/* Define to 1 if you have the `nl_langinfo' function. */ +/* #undef HAVE_NL_LANGINFO */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NL_TYPES_H */ + +/* Define to 1 if you have the `obstack_vprintf' function. */ +/* #undef HAVE_OBSTACK_VPRINTF */ + +/* Define to 1 if you have the `popen' function. */ +#define HAVE_POPEN 1 + +/* Define to 1 if you have the `processor_info' function. */ +/* #undef HAVE_PROCESSOR_INFO */ + +/* Define to 1 if `struct pst_processor' exists and contains + `psp_iticksperclktick'. */ +/* #undef HAVE_PSP_ITICKSPERCLKTICK */ + +/* Define to 1 if you have the `pstat_getprocessor' function. */ +/* #undef HAVE_PSTAT_GETPROCESSOR */ + +/* Define to 1 if the system has the type `ptrdiff_t'. */ +#define HAVE_PTRDIFF_T 1 + +/* Define to 1 if the system has the type `quad_t'. */ +/* #undef HAVE_QUAD_T */ + +/* Define to 1 if you have the `raise' function. */ +#define HAVE_RAISE 1 + +/* Define to 1 if you have the `read_real_time' function. */ +/* #undef HAVE_READ_REAL_TIME */ + +/* Define to 1 if you have the `sigaction' function. */ +/* #undef HAVE_SIGACTION */ + +/* Define to 1 if you have the `sigaltstack' function. */ +/* #undef HAVE_SIGALTSTACK */ + +/* Define to 1 if you have the `sigstack' function. */ +/* #undef HAVE_SIGSTACK */ + +/* Tune directory speed_cyclecounter, undef=none, 1=32bits, 2=64bits) */ +#define HAVE_SPEED_CYCLECOUNTER 2 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SSTREAM */ + +/* Define to 1 if the system has the type `stack_t'. */ +/* #undef HAVE_STACK_T */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if the system has the type `std::locale'. */ +/* #undef HAVE_STD__LOCALE */ + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strnlen' function. */ +#define HAVE_STRNLEN 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the `sysconf' function. */ +/* #undef HAVE_SYSCONF */ + +/* Define to 1 if you have the `sysctl' function. */ +/* #undef HAVE_SYSCTL */ + +/* Define to 1 if you have the `sysctlbyname' function. */ +/* #undef HAVE_SYSCTLBYNAME */ + +/* Define to 1 if you have the `syssgi' function. */ +/* #undef HAVE_SYSSGI */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_ATTRIBUTES_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_IOGRAPH_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MMAN_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PROCESSOR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PSTAT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_RESOURCE_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSSGI_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSTEMCFG_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_TIMES_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `times' function. */ +/* #undef HAVE_TIMES */ + +/* Define to 1 if the system has the type `uint_least32_t'. */ +#define HAVE_UINT_LEAST32_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `vsnprintf' function and it works properly. */ +#define HAVE_VSNPRINTF 1 + +/* Define to 1 for Windos/64 */ +#define HOST_DOS64 1 + +/* Assembler local label prefix */ +#define LSYM_PREFIX "L" + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Define to 1 to disable the use of inline assembly */ +/* #undef NO_ASM */ + +/* Name of package */ +#define PACKAGE "gmp" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "gmp-bugs@gmplib.org (see https://gmplib.org/manual/Reporting-Bugs.html)" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "GNU MP" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "GNU MP 6.3.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "gmp" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "http://www.gnu.org/software/gmp/" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "6.3.0" + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* The size of `mp_limb_t', as computed by sizeof. */ +#define SIZEOF_MP_LIMB_T 8 + +/* The size of `unsigned', as computed by sizeof. */ +#define SIZEOF_UNSIGNED 4 + +/* The size of `unsigned long', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_LONG 4 + +/* The size of `unsigned short', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_SHORT 2 + +/* The size of `void *', as computed by sizeof. */ +#define SIZEOF_VOID_P 8 + +/* Define to 1 if sscanf requires writable inputs */ +/* #undef SSCANF_WRITABLE_INPUT */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Maximum size the tune program can test for SQR_TOOM2_THRESHOLD */ +/* #undef TUNE_SQR_TOOM2_MAX */ + +/* Version number of package */ +#define VERSION "6.3.0" + +/* Define to 1 to enable ASSERT checking, per --enable-assert */ +/* #undef WANT_ASSERT */ + +/* Define to 1 to enable GMP_CPU_TYPE faking cpuid, per --enable-fake-cpuid */ +/* #undef WANT_FAKE_CPUID */ + +/* Define to 1 when building a fat binary. */ +/* #undef WANT_FAT_BINARY */ + +/* Define to 1 to enable FFTs for multiplication, per --enable-fft */ +#define WANT_FFT 1 + +/* Define to 1 to enable old mpn_mul_fft_full for multiplication, per + --enable-old-fft-full */ +/* #undef WANT_OLD_FFT_FULL */ + +/* Define to 1 if --enable-profiling=gprof */ +/* #undef WANT_PROFILING_GPROF */ + +/* Define to 1 if --enable-profiling=instrument */ +/* #undef WANT_PROFILING_INSTRUMENT */ + +/* Define to 1 if --enable-profiling=prof */ +/* #undef WANT_PROFILING_PROF */ + +/* Define one of these to 1 for the desired temporary memory allocation + method, per --enable-alloca. */ +#define WANT_TMP_ALLOCA 1 +/* #undef WANT_TMP_REENTRANT */ +/* #undef WANT_TMP_NOTREENTRANT */ +/* #undef WANT_TMP_DEBUG */ + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* Define to 1 if the assembler understands the mulx instruction */ +/* #undef X86_ASM_MULX */ + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +/* #undef YYTEXT_POINTER */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported directly. */ +#define restrict __restrict +/* Work around a bug in Sun C++: it does not support _Restrict or + __restrict__, even though the corresponding Sun C compiler ends up with + "#define restrict _Restrict" or "#define restrict __restrict__" in the + previous line. Perhaps some future version of Sun C++ will work with + restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ +#if defined __SUNPRO_CC && !defined __RESTRICT +# define _Restrict +# define __restrict__ +#endif + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +/* #undef volatile */ diff --git a/vere/ext/gmp/gen/x86_64-windows/fac_table.h b/vere/ext/gmp/gen/x86_64-windows/fac_table.h new file mode 100644 index 0000000..6708348 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/fac_table.h @@ -0,0 +1,49 @@ +/* This file is automatically generated by gen-fac.c */ + +#if GMP_NUMB_BITS != 64 +Error , error this data is for 64 GMP_NUMB_BITS only +#endif +/* This table is 0!,1!,2!,3!,...,n! where n! has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x2),CNST_LIMB(0x6),CNST_LIMB(0x18),CNST_LIMB(0x78),CNST_LIMB(0x2d0),CNST_LIMB(0x13b0),CNST_LIMB(0x9d80),CNST_LIMB(0x58980),CNST_LIMB(0x375f00),CNST_LIMB(0x2611500),CNST_LIMB(0x1c8cfc00),CNST_LIMB(0x17328cc00),CNST_LIMB(0x144c3b2800),CNST_LIMB(0x13077775800),CNST_LIMB(0x130777758000),CNST_LIMB(0x1437eeecd8000),CNST_LIMB(0x16beecca730000),CNST_LIMB(0x1b02b9306890000),CNST_LIMB(0x21c3677c82b40000) + +/* This table is 0!,1!,2!/2,3!/2,...,n!/2^sn where n!/2^sn is an */ +/* odd integer for each n, and n!/2^sn has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_ODD_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x3),CNST_LIMB(0x3),CNST_LIMB(0xf),CNST_LIMB(0x2d),CNST_LIMB(0x13b),CNST_LIMB(0x13b),CNST_LIMB(0xb13),CNST_LIMB(0x375f),CNST_LIMB(0x26115),CNST_LIMB(0x7233f),CNST_LIMB(0x5cca33),CNST_LIMB(0x2898765),CNST_LIMB(0x260eeeeb),CNST_LIMB(0x260eeeeb),CNST_LIMB(0x286fddd9b),CNST_LIMB(0x16beecca73),CNST_LIMB(0x1b02b930689),CNST_LIMB(0x870d9df20ad),CNST_LIMB(0xb141df4dae31),CNST_LIMB(0x79dd498567c1b),CNST_LIMB(0xaf2e19afc5266d),CNST_LIMB(0x20d8a4d0f4f7347),CNST_LIMB(0x335281867ec241ef) +#define ODD_FACTORIAL_TABLE_MAX CNST_LIMB(0x335281867ec241ef) +#define ODD_FACTORIAL_TABLE_LIMIT (25) + +/* Previous table, continued, values modulo 2^GMP_NUMB_BITS */ +#define ONE_LIMB_ODD_FACTORIAL_EXTTABLE CNST_LIMB(0x9b3093d46fdd5923),CNST_LIMB(0x5e1f9767cc5866b1),CNST_LIMB(0x92dd23d6966aced7),CNST_LIMB(0xa30d0f4f0a196e5b),CNST_LIMB(0x8dc3e5a1977d7755),CNST_LIMB(0x2ab8ce915831734b),CNST_LIMB(0x2ab8ce915831734b),CNST_LIMB(0x81d2a0bc5e5fdcab),CNST_LIMB(0x9efcac82445da75b),CNST_LIMB(0xbc8b95cf58cde171),CNST_LIMB(0xa0e8444a1f3cecf9),CNST_LIMB(0x4191deb683ce3ffd),CNST_LIMB(0xddd3878bc84ebfc7),CNST_LIMB(0xcb39a64b83ff3751),CNST_LIMB(0xf8203f7993fc1495),CNST_LIMB(0xbd2a2a78b35f4bdd),CNST_LIMB(0x84757be6b6d13921),CNST_LIMB(0x3fbbcfc0b524988b),CNST_LIMB(0xbd11ed47c8928df9),CNST_LIMB(0x3c26b59e41c2f4c5),CNST_LIMB(0x677a5137e883fdb3),CNST_LIMB(0xff74e943b03b93dd),CNST_LIMB(0xfe5ebbcb10b2bb97),CNST_LIMB(0xb021f1de3235e7e7),CNST_LIMB(0x33509eb2e743a58f),CNST_LIMB(0x390f9da41279fb7d),CNST_LIMB(0xe5cb0154f031c559),CNST_LIMB(0x93074695ba4ddb6d),CNST_LIMB(0x81c471caa636247f),CNST_LIMB(0xe1347289b5a1d749),CNST_LIMB(0x286f21c3f76ce2ff),CNST_LIMB(0xbe84a2173e8ac7),CNST_LIMB(0x1595065ca215b88b),CNST_LIMB(0xf95877595b018809),CNST_LIMB(0x9c2efe3c5516f887),CNST_LIMB(0x373294604679382b),CNST_LIMB(0xaf1ff7a888adcd35),CNST_LIMB(0x18ddf279a2c5800b),CNST_LIMB(0x18ddf279a2c5800b),CNST_LIMB(0x505a90e2542582cb),CNST_LIMB(0x5bacad2cd8d5dc2b),CNST_LIMB(0xfe3152bcbff89f41) +#define ODD_FACTORIAL_EXTTABLE_LIMIT (67) + +/* This table is 1!!,3!!,...,(2n+1)!! where (2n+1)!! has <= GMP_NUMB_BITS bits */ +#define ONE_LIMB_ODD_DOUBLEFACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x3),CNST_LIMB(0xf),CNST_LIMB(0x69),CNST_LIMB(0x3b1),CNST_LIMB(0x289b),CNST_LIMB(0x20fdf),CNST_LIMB(0x1eee11),CNST_LIMB(0x20dcf21),CNST_LIMB(0x27065f73),CNST_LIMB(0x33385d46f),CNST_LIMB(0x49a10615f9),CNST_LIMB(0x730b9982551),CNST_LIMB(0xc223930bef8b),CNST_LIMB(0x15fe07a85a22bf),CNST_LIMB(0x2a9c2ed62ea3521),CNST_LIMB(0x57e22099c030d941) +#define ODD_DOUBLEFACTORIAL_TABLE_MAX CNST_LIMB(0x57e22099c030d941) +#define ODD_DOUBLEFACTORIAL_TABLE_LIMIT (33) + +/* This table x_1, x_2,... contains values s.t. x_n^n has <= GMP_NUMB_BITS bits */ +#define NTH_ROOT_NUMB_MASK_TABLE (GMP_NUMB_MASK),CNST_LIMB(0xffffffff),CNST_LIMB(0x285145),CNST_LIMB(0xffff),CNST_LIMB(0x1bdb),CNST_LIMB(0x659),CNST_LIMB(0x235),CNST_LIMB(0xff) + +/* This table contains inverses of odd factorials, modulo 2^GMP_NUMB_BITS */ + +/* It begins with (2!/2)^-1=1 */ +#define ONE_LIMB_ODD_FACTORIAL_INVERSES_TABLE CNST_LIMB(0x1),CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0xeeeeeeeeeeeeeeef),CNST_LIMB(0x4fa4fa4fa4fa4fa5),CNST_LIMB(0x2ff2ff2ff2ff2ff3),CNST_LIMB(0x2ff2ff2ff2ff2ff3),CNST_LIMB(0x938cc70553e3771b),CNST_LIMB(0xb71c27cddd93e49f),CNST_LIMB(0xb38e3229fcdee63d),CNST_LIMB(0xe684bb63544a4cbf),CNST_LIMB(0xc2f684917ca340fb),CNST_LIMB(0xf747c9cba417526d),CNST_LIMB(0xbb26eb51d7bd49c3),CNST_LIMB(0xbb26eb51d7bd49c3),CNST_LIMB(0xb0a7efb985294093),CNST_LIMB(0xbe4b8c69f259eabb),CNST_LIMB(0x6854d17ed6dc4fb9),CNST_LIMB(0xe1aa904c915f4325),CNST_LIMB(0x3b8206df131cead1),CNST_LIMB(0x79c6009fea76fe13),CNST_LIMB(0xd8c5d381633cd365),CNST_LIMB(0x4841f12b21144677),CNST_LIMB(0x4a91ff68200b0d0f),CNST_LIMB(0x8f9513a58c4f9e8b),CNST_LIMB(0x2b3e690621a42251),CNST_LIMB(0x4f520f00e03c04e7),CNST_LIMB(0x2edf84ee600211d3),CNST_LIMB(0xadcaa2764aaacdfd),CNST_LIMB(0x161f4f9033f4fe63),CNST_LIMB(0x161f4f9033f4fe63),CNST_LIMB(0xbada2932ea4d3e03),CNST_LIMB(0xcec189f3efaa30d3),CNST_LIMB(0xf7475bb68330bf91),CNST_LIMB(0x37eb7bf7d5b01549),CNST_LIMB(0x46b35660a4e91555),CNST_LIMB(0xa567c12d81f151f7),CNST_LIMB(0x4c724007bb2071b1),CNST_LIMB(0xf4a0cce58a016bd),CNST_LIMB(0xfa21068e66106475),CNST_LIMB(0x244ab72b5a318ae1),CNST_LIMB(0x366ce67e080d0f23),CNST_LIMB(0xd666fdae5dd2a449),CNST_LIMB(0xd740ddd0acc06a0d),CNST_LIMB(0xb050bbbb28e6f97b),CNST_LIMB(0x70b003fe890a5c75),CNST_LIMB(0xd03aabff83037427),CNST_LIMB(0x13ec4ca72c783bd7),CNST_LIMB(0x90282c06afdbd96f),CNST_LIMB(0x4414ddb9db4a95d5),CNST_LIMB(0xa2c68735ae6832e9),CNST_LIMB(0xbf72d71455676665),CNST_LIMB(0xa8469fab6b759b7f),CNST_LIMB(0xc1e55b56e606caf9),CNST_LIMB(0x40455630fc4a1cff),CNST_LIMB(0x120a7b0046d16f7),CNST_LIMB(0xa7c3553b08faef23),CNST_LIMB(0x9f0bfd1b08d48639),CNST_LIMB(0xa433ffce9a304d37),CNST_LIMB(0xa22ad1d53915c683),CNST_LIMB(0xcb6cbc723ba5dd1d),CNST_LIMB(0x547fb1b8ab9d0ba3),CNST_LIMB(0x547fb1b8ab9d0ba3),CNST_LIMB(0x8f15a826498852e3) + +/* This table contains 2n-popc(2n) for small n */ + +/* It begins with 2-1=1 (n=1) */ +#define TABLE_2N_MINUS_POPC_2N 1,3,4,7,8,10,11,15,16,18,19,22,23,25,26,31,32,34,35,38,39,41,42,46,47,49,50,53,54,56,57,63,64,66,67,70,71,73,74,78 +#define TABLE_LIMIT_2N_MINUS_POPC_2N 81 +#define ODD_CENTRAL_BINOMIAL_OFFSET (13) + +/* This table contains binomial(2k,k)/2^t */ + +/* It begins with ODD_CENTRAL_BINOMIAL_TABLE_MIN */ +#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_TABLE CNST_LIMB(0x13d66b),CNST_LIMB(0x4c842f),CNST_LIMB(0x93ee7d),CNST_LIMB(0x11e9e123),CNST_LIMB(0x22c60053),CNST_LIMB(0x873ae4d1),CNST_LIMB(0x10757bd97),CNST_LIMB(0x80612c6cd),CNST_LIMB(0xfaa556bc1),CNST_LIMB(0x3d3cc24821),CNST_LIMB(0x77cfeb6bbb),CNST_LIMB(0x7550ebd97c7),CNST_LIMB(0xe5f08695caf),CNST_LIMB(0x386120ffce11),CNST_LIMB(0x6eabb28dd6df),CNST_LIMB(0x3658e31c82a8f),CNST_LIMB(0x6ad2050312783),CNST_LIMB(0x1a42902a5af0bf),CNST_LIMB(0x33ac44f881661d),CNST_LIMB(0xcb764f927d82123),CNST_LIMB(0x190c23fa46b93983),CNST_LIMB(0x62b7609e25caf1b9),CNST_LIMB(0xc29cb72925ef2cff) +#define ODD_CENTRAL_BINOMIAL_TABLE_LIMIT (35) + +/* This table contains the inverses of elements in the previous table. */ +#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_INVERSE_TABLE CNST_LIMB(0x61e5bd199bb12643),CNST_LIMB(0x78321494dc8342cf),CNST_LIMB(0x4fd348704ebf7ad5),CNST_LIMB(0x7e722ba086ab568b),CNST_LIMB(0xa5fcc124265843db),CNST_LIMB(0x89c4a6b18633f431),CNST_LIMB(0x4daa2c15f8ce9227),CNST_LIMB(0x801c618ca9be9605),CNST_LIMB(0x32dc192f948a441),CNST_LIMB(0xd02b90c2bf3be1),CNST_LIMB(0xd897e8c1749aa173),CNST_LIMB(0x54a234fc01fef9f7),CNST_LIMB(0x83ff2ab4d1ff7a4f),CNST_LIMB(0xa427f1c9b304e2f1),CNST_LIMB(0x9c14595d1793651f),CNST_LIMB(0x883a71c607a7b46f),CNST_LIMB(0xd089863c54bc9f2b),CNST_LIMB(0x9022f6bce5d07f3f),CNST_LIMB(0xbec207e218768c35),CNST_LIMB(0x9d70cb4cbb4f168b),CNST_LIMB(0x3c3d3403828a9d2b),CNST_LIMB(0x7672df58c56bc489),CNST_LIMB(0x1e66ca55d727d2ff) + +/* This table contains the values t in the formula binomial(2k,k)/2^t */ +#define CENTRAL_BINOMIAL_2FAC_TABLE 3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3 diff --git a/vere/ext/gmp/gen/x86_64-windows/fib_table.h b/vere/ext/gmp/gen/x86_64-windows/fib_table.h new file mode 100644 index 0000000..66ac4d6 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/fib_table.h @@ -0,0 +1,8 @@ +/* This file generated by gen-fib.c - DO NOT EDIT. */ + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +#define FIB_TABLE_LIMIT 93 +#define FIB_TABLE_LUCNUM_LIMIT 92 diff --git a/vere/ext/gmp/gen/x86_64-windows/gmp.h b/vere/ext/gmp/gen/x86_64-windows/gmp.h new file mode 100644 index 0000000..0a1efe7 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/gmp.h @@ -0,0 +1,2344 @@ +/* Definitions for GNU multiple precision functions. -*- mode: c -*- + +Copyright 1991, 1993-1997, 1999-2016, 2020, 2021 Free Software +Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + +or + + * the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any + later version. + +or both in parallel, as here. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library. If not, +see https://www.gnu.org/licenses/. */ + +#ifndef __GMP_H__ + +#if defined (__cplusplus) +#include /* for std::istream, std::ostream, std::string */ +#include +#endif + + +/* Instantiated by configure. */ +#if ! defined (__GMP_WITHIN_CONFIGURE) +#define __GMP_HAVE_HOST_CPU_FAMILY_power 0 +#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0 +#define GMP_LIMB_BITS 64 +#define GMP_NAIL_BITS 0 +#endif +#define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS) +#define GMP_NUMB_MASK ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS) +#define GMP_NUMB_MAX GMP_NUMB_MASK +#define GMP_NAIL_MASK (~ GMP_NUMB_MASK) + + +#ifndef __GNU_MP__ +#define __GNU_MP__ 6 + +#include /* for size_t */ +#include + +/* Instantiated by configure. */ +#if ! defined (__GMP_WITHIN_CONFIGURE) +#define _LONG_LONG_LIMB 1 +#define __GMP_LIBGMP_DLL 0 +#endif + + +/* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in + all other circumstances. + + When compiling objects for libgmp, __GMP_DECLSPEC is an export directive, + or when compiling for an application it's an import directive. The two + cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles + (and not defined from an application). + + __GMP_DECLSPEC_XX is similarly used for libgmpxx. __GMP_WITHIN_GMPXX + indicates when building libgmpxx, and in that case libgmpxx functions are + exports, but libgmp functions which might get called are imports. + + Libtool DLL_EXPORT define is not used. + + There's no attempt to support GMP built both static and DLL. Doing so + would mean applications would have to tell us which of the two is going + to be used when linking, and that seems very tedious and error prone if + using GMP by hand, and equally tedious from a package since autoconf and + automake don't give much help. + + __GMP_DECLSPEC is required on all documented global functions and + variables, the various internals in gmp-impl.h etc can be left unadorned. + But internals used by the test programs or speed measuring programs + should have __GMP_DECLSPEC, and certainly constants or variables must + have it or the wrong address will be resolved. + + In gcc __declspec can go at either the start or end of a prototype. + + In Microsoft C __declspec must go at the start, or after the type like + void __declspec(...) *foo()". There's no __dllexport or anything to + guard against someone foolish #defining dllexport. _export used to be + available, but no longer. + + In Borland C _export still exists, but needs to go after the type, like + "void _export foo();". Would have to change the __GMP_DECLSPEC syntax to + make use of that. Probably more trouble than it's worth. */ + +#if defined (__GNUC__) +#define __GMP_DECLSPEC_EXPORT __declspec(__dllexport__) +#define __GMP_DECLSPEC_IMPORT __declspec(__dllimport__) +#endif +#if defined (_MSC_VER) || defined (__BORLANDC__) +#define __GMP_DECLSPEC_EXPORT __declspec(dllexport) +#define __GMP_DECLSPEC_IMPORT __declspec(dllimport) +#endif +#ifdef __WATCOMC__ +#define __GMP_DECLSPEC_EXPORT __export +#define __GMP_DECLSPEC_IMPORT __import +#endif +#ifdef __IBMC__ +#define __GMP_DECLSPEC_EXPORT _Export +#define __GMP_DECLSPEC_IMPORT _Import +#endif + +#if __GMP_LIBGMP_DLL +#ifdef __GMP_WITHIN_GMP +/* compiling to go into a DLL libgmp */ +#define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT +#else +/* compiling to go into an application which will link to a DLL libgmp */ +#define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT +#endif +#else +/* all other cases */ +#define __GMP_DECLSPEC +#endif + + +#ifdef __GMP_SHORT_LIMB +typedef unsigned int mp_limb_t; +typedef int mp_limb_signed_t; +#else +#ifdef _LONG_LONG_LIMB +typedef unsigned long long int mp_limb_t; +typedef long long int mp_limb_signed_t; +#else +typedef unsigned long int mp_limb_t; +typedef long int mp_limb_signed_t; +#endif +#endif +typedef unsigned long int mp_bitcnt_t; + +/* For reference, note that the name __mpz_struct gets into C++ mangled + function names, which means although the "__" suggests an internal, we + must leave this name for binary compatibility. */ +typedef struct +{ + int _mp_alloc; /* Number of *limbs* allocated and pointed + to by the _mp_d field. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpz_struct; + +#endif /* __GNU_MP__ */ + + +typedef __mpz_struct MP_INT; /* gmp 1 source compatibility */ +typedef __mpz_struct mpz_t[1]; + +typedef mp_limb_t * mp_ptr; +typedef const mp_limb_t * mp_srcptr; +#if defined (_CRAY) && ! defined (_CRAYMPP) +/* plain `int' is much faster (48 bits) */ +#define __GMP_MP_SIZE_T_INT 1 +typedef int mp_size_t; +typedef int mp_exp_t; +#else +#define __GMP_MP_SIZE_T_INT 0 +typedef long int mp_size_t; +typedef long int mp_exp_t; +#endif + +typedef struct +{ + __mpz_struct _mp_num; + __mpz_struct _mp_den; +} __mpq_struct; + +typedef __mpq_struct MP_RAT; /* gmp 1 source compatibility */ +typedef __mpq_struct mpq_t[1]; + +typedef struct +{ + int _mp_prec; /* Max precision, in number of `mp_limb_t's. + Set by mpf_init and modified by + mpf_set_prec. The area pointed to by the + _mp_d field contains `prec' + 1 limbs. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpf_struct; + +/* typedef __mpf_struct MP_FLOAT; */ +typedef __mpf_struct mpf_t[1]; + +/* Available random number generation algorithms. */ +typedef enum +{ + GMP_RAND_ALG_DEFAULT = 0, + GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */ +} gmp_randalg_t; + +/* Random state struct. */ +typedef struct +{ + mpz_t _mp_seed; /* _mp_d member points to state of the generator. */ + gmp_randalg_t _mp_alg; /* Currently unused. */ + union { + void *_mp_lc; /* Pointer to function pointers structure. */ + } _mp_algdata; +} __gmp_randstate_struct; +typedef __gmp_randstate_struct gmp_randstate_t[1]; + +/* Types for function declarations in gmp files. */ +/* ??? Should not pollute user name space with these ??? */ +typedef const __mpz_struct *mpz_srcptr; +typedef __mpz_struct *mpz_ptr; +typedef const __mpf_struct *mpf_srcptr; +typedef __mpf_struct *mpf_ptr; +typedef const __mpq_struct *mpq_srcptr; +typedef __mpq_struct *mpq_ptr; +typedef __gmp_randstate_struct *gmp_randstate_ptr; +typedef const __gmp_randstate_struct *gmp_randstate_srcptr; + + +#if __GMP_LIBGMP_DLL +#ifdef __GMP_WITHIN_GMPXX +/* compiling to go into a DLL libgmpxx */ +#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_EXPORT +#else +/* compiling to go into a application which will link to a DLL libgmpxx */ +#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_IMPORT +#endif +#else +/* all other cases */ +#define __GMP_DECLSPEC_XX +#endif + + +#ifndef __MPN +#define __MPN(x) __gmpn_##x +#endif + +/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4, + defines EOF but not FILE. */ +#if defined (FILE) \ + || defined (H_STDIO) \ + || defined (_H_STDIO) /* AIX */ \ + || defined (_STDIO_H) /* glibc, Sun, SCO */ \ + || defined (_STDIO_H_) /* BSD, OSF */ \ + || defined (__STDIO_H) /* Borland */ \ + || defined (__STDIO_H__) /* IRIX */ \ + || defined (_STDIO_INCLUDED) /* HPUX */ \ + || defined (__dj_include_stdio_h_) /* DJGPP */ \ + || defined (_FILE_DEFINED) /* Microsoft */ \ + || defined (__STDIO__) /* Apple MPW MrC */ \ + || defined (_MSL_STDIO_H) /* Metrowerks */ \ + || defined (_STDIO_H_INCLUDED) /* QNX4 */ \ + || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ \ + || defined (__STDIO_LOADED) /* VMS */ \ + || defined (_STDIO) /* HPE NonStop */ \ + || defined (__DEFINED_FILE) /* musl */ +#define _GMP_H_HAVE_FILE 1 +#endif + +/* In ISO C, if a prototype involving "struct obstack *" is given without + that structure defined, then the struct is scoped down to just the + prototype, causing a conflict if it's subsequently defined for real. So + only give prototypes if we've got obstack.h. */ +#if defined (_OBSTACK_H) /* glibc */ +#define _GMP_H_HAVE_OBSTACK 1 +#endif + +/* The prototypes for gmp_vprintf etc are provided only if va_list is defined, + via an application having included . Usually va_list is a typedef + so can't be tested directly, but C99 specifies that va_start is a macro. + + will define some sort of va_list for vprintf and vfprintf, but + let's not bother trying to use that since it's not standard and since + application uses for gmp_vprintf etc will almost certainly require the + whole anyway. */ + +#ifdef va_start +#define _GMP_H_HAVE_VA_LIST 1 +#endif + +/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ +#if defined (__GNUC__) && defined (__GNUC_MINOR__) +#define __GMP_GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +#else +#define __GMP_GNUC_PREREQ(maj, min) 0 +#endif + +/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically + it means a function does nothing but examine its arguments and memory + (global or via arguments) to generate a return value, but changes nothing + and has no side-effects. __GMP_NO_ATTRIBUTE_CONST_PURE lets + tune/common.c etc turn this off when trying to write timing loops. */ +#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE) +#define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +#define __GMP_ATTRIBUTE_PURE +#endif + + +/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean + to "g++ -Wold-style-cast". + + Casts in "extern inline" code within an extern "C" block don't induce + these warnings, so __GMP_CAST only needs to be used on documented + macros. */ + +#ifdef __cplusplus +#define __GMP_CAST(type, expr) (static_cast (expr)) +#else +#define __GMP_CAST(type, expr) ((type) (expr)) +#endif + + +/* An empty "throw ()" means the function doesn't throw any C++ exceptions, + this can save some stack frame info in applications. + + Currently it's given only on functions which never divide-by-zero etc, + don't allocate memory, and are expected to never need to allocate memory. + This leaves open the possibility of a C++ throw from a future GMP + exceptions scheme. + + mpz_set_ui etc are omitted to leave open the lazy allocation scheme + described in doc/tasks.html. mpz_get_d etc are omitted to leave open + exceptions for float overflows. + + Note that __GMP_NOTHROW must be given on any inlines the same as on their + prototypes (for g++ at least, where they're used together). Note also + that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like + __GMP_ATTRIBUTE_PURE. */ + +#if defined (__cplusplus) +#if __cplusplus >= 201103L +#define __GMP_NOTHROW noexcept +#else +#define __GMP_NOTHROW throw () +#endif +#else +#define __GMP_NOTHROW +#endif + + +/* PORTME: What other compilers have a useful "extern inline"? "static + inline" would be an acceptable substitute if the compiler (or linker) + discards unused statics. */ + + /* gcc has __inline__ in all modes, including strict ansi. Give a prototype + for an inline too, so as to correctly specify "dllimport" on windows, in + case the function is called rather than inlined. + GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 + inline semantics, unless -fgnu89-inline is used. */ +#ifdef __GNUC__ +#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2) \ + || (defined __GNUC_GNU_INLINE__ && defined __cplusplus) +#define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__)) +#else +#define __GMP_EXTERN_INLINE extern __inline__ +#endif +#define __GMP_INLINE_PROTOTYPES 1 +#endif + +/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1 + strict ANSI mode. Inlining is done even when not optimizing (ie. -O0 + mode, which is the default), but an unnecessary local copy of foo is + emitted unless -O is used. "extern __inline" is accepted, but the + "extern" appears to be ignored, ie. it becomes a plain global function + but which is inlined within its file. Don't know if all old versions of + DEC C supported __inline, but as a start let's do the right thing for + current versions. */ +#ifdef __DECC +#define __GMP_EXTERN_INLINE static __inline +#endif + +/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict + ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes + place under -O. Without -O "foo" seems to be emitted whether it's used + or not, which is wasteful. "extern inline foo()" isn't useful, the + "extern" is apparently ignored, so foo is inlined if possible but also + emitted as a global, which causes multiple definition errors when + building a shared libgmp. */ +#ifdef __SCO_VERSION__ +#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \ + && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE static inline +#endif +#endif + +/* Microsoft's C compiler accepts __inline */ +#ifdef _MSC_VER +#define __GMP_EXTERN_INLINE __inline +#endif + +/* Recent enough Sun C compilers want "inline" */ +#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x560 \ + && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE inline +#endif + +/* Somewhat older Sun C compilers want "static inline" */ +#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x540 \ + && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE static inline +#endif + + +/* C++ always has "inline" and since it's a normal feature the linker should + discard duplicate non-inlined copies, or if it doesn't then that's a + problem for everyone, not just GMP. */ +#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE) +#define __GMP_EXTERN_INLINE inline +#endif + +/* Don't do any inlining within a configure run, since if the compiler ends + up emitting copies of the code into the object file it can end up + demanding the various support routines (like mpn_popcount) for linking, + making the "alloca" test and perhaps others fail. And on hppa ia64 a + pre-release gcc 3.2 was seen not respecting the "extern" in "extern + __inline__", triggering this problem too. */ +#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE +#undef __GMP_EXTERN_INLINE +#endif + +/* By default, don't give a prototype when there's going to be an inline + version. Note in particular that Cray C++ objects to the combination of + prototype and inline. */ +#ifdef __GMP_EXTERN_INLINE +#ifndef __GMP_INLINE_PROTOTYPES +#define __GMP_INLINE_PROTOTYPES 0 +#endif +#else +#define __GMP_INLINE_PROTOTYPES 1 +#endif + + +#define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x)) +#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i)) + + +/* __builtin_expect is in gcc 3.0, and not in 2.95. */ +#if __GMP_GNUC_PREREQ (3,0) +#define __GMP_LIKELY(cond) __builtin_expect ((cond) != 0, 1) +#define __GMP_UNLIKELY(cond) __builtin_expect ((cond) != 0, 0) +#else +#define __GMP_LIKELY(cond) (cond) +#define __GMP_UNLIKELY(cond) (cond) +#endif + +#ifdef _CRAY +#define __GMP_CRAY_Pragma(str) _Pragma (str) +#else +#define __GMP_CRAY_Pragma(str) +#endif + + +/* Allow direct user access to numerator and denominator of an mpq_t object. */ +#define mpq_numref(Q) (&((Q)->_mp_num)) +#define mpq_denref(Q) (&((Q)->_mp_den)) + + +#if defined (__cplusplus) +extern "C" { +using std::FILE; +#endif + +#define mp_set_memory_functions __gmp_set_memory_functions +__GMP_DECLSPEC void mp_set_memory_functions (void *(*) (size_t), + void *(*) (void *, size_t, size_t), + void (*) (void *, size_t)) __GMP_NOTHROW; + +#define mp_get_memory_functions __gmp_get_memory_functions +__GMP_DECLSPEC void mp_get_memory_functions (void *(**) (size_t), + void *(**) (void *, size_t, size_t), + void (**) (void *, size_t)) __GMP_NOTHROW; + +#define mp_bits_per_limb __gmp_bits_per_limb +__GMP_DECLSPEC extern const int mp_bits_per_limb; + +#define gmp_errno __gmp_errno +__GMP_DECLSPEC extern int gmp_errno; + +#define gmp_version __gmp_version +__GMP_DECLSPEC extern const char * const gmp_version; + + +/**************** Random number routines. ****************/ + +/* obsolete */ +#define gmp_randinit __gmp_randinit +__GMP_DECLSPEC void gmp_randinit (gmp_randstate_ptr, gmp_randalg_t, ...); + +#define gmp_randinit_default __gmp_randinit_default +__GMP_DECLSPEC void gmp_randinit_default (gmp_randstate_ptr); + +#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp +__GMP_DECLSPEC void gmp_randinit_lc_2exp (gmp_randstate_ptr, mpz_srcptr, unsigned long int, mp_bitcnt_t); + +#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size +__GMP_DECLSPEC int gmp_randinit_lc_2exp_size (gmp_randstate_ptr, mp_bitcnt_t); + +#define gmp_randinit_mt __gmp_randinit_mt +__GMP_DECLSPEC void gmp_randinit_mt (gmp_randstate_ptr); + +#define gmp_randinit_set __gmp_randinit_set +__GMP_DECLSPEC void gmp_randinit_set (gmp_randstate_ptr, gmp_randstate_srcptr); + +#define gmp_randseed __gmp_randseed +__GMP_DECLSPEC void gmp_randseed (gmp_randstate_ptr, mpz_srcptr); + +#define gmp_randseed_ui __gmp_randseed_ui +__GMP_DECLSPEC void gmp_randseed_ui (gmp_randstate_ptr, unsigned long int); + +#define gmp_randclear __gmp_randclear +__GMP_DECLSPEC void gmp_randclear (gmp_randstate_ptr); + +#define gmp_urandomb_ui __gmp_urandomb_ui +__GMP_DECLSPEC unsigned long gmp_urandomb_ui (gmp_randstate_ptr, unsigned long); + +#define gmp_urandomm_ui __gmp_urandomm_ui +__GMP_DECLSPEC unsigned long gmp_urandomm_ui (gmp_randstate_ptr, unsigned long); + + +/**************** Formatted output routines. ****************/ + +#define gmp_asprintf __gmp_asprintf +__GMP_DECLSPEC int gmp_asprintf (char **, const char *, ...); + +#define gmp_fprintf __gmp_fprintf +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC int gmp_fprintf (FILE *, const char *, ...); +#endif + +#define gmp_obstack_printf __gmp_obstack_printf +#if defined (_GMP_H_HAVE_OBSTACK) +__GMP_DECLSPEC int gmp_obstack_printf (struct obstack *, const char *, ...); +#endif + +#define gmp_obstack_vprintf __gmp_obstack_vprintf +#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_obstack_vprintf (struct obstack *, const char *, va_list); +#endif + +#define gmp_printf __gmp_printf +__GMP_DECLSPEC int gmp_printf (const char *, ...); + +#define gmp_snprintf __gmp_snprintf +__GMP_DECLSPEC int gmp_snprintf (char *, size_t, const char *, ...); + +#define gmp_sprintf __gmp_sprintf +__GMP_DECLSPEC int gmp_sprintf (char *, const char *, ...); + +#define gmp_vasprintf __gmp_vasprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vasprintf (char **, const char *, va_list); +#endif + +#define gmp_vfprintf __gmp_vfprintf +#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vfprintf (FILE *, const char *, va_list); +#endif + +#define gmp_vprintf __gmp_vprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vprintf (const char *, va_list); +#endif + +#define gmp_vsnprintf __gmp_vsnprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsnprintf (char *, size_t, const char *, va_list); +#endif + +#define gmp_vsprintf __gmp_vsprintf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsprintf (char *, const char *, va_list); +#endif + + +/**************** Formatted input routines. ****************/ + +#define gmp_fscanf __gmp_fscanf +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC int gmp_fscanf (FILE *, const char *, ...); +#endif + +#define gmp_scanf __gmp_scanf +__GMP_DECLSPEC int gmp_scanf (const char *, ...); + +#define gmp_sscanf __gmp_sscanf +__GMP_DECLSPEC int gmp_sscanf (const char *, const char *, ...); + +#define gmp_vfscanf __gmp_vfscanf +#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vfscanf (FILE *, const char *, va_list); +#endif + +#define gmp_vscanf __gmp_vscanf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vscanf (const char *, va_list); +#endif + +#define gmp_vsscanf __gmp_vsscanf +#if defined (_GMP_H_HAVE_VA_LIST) +__GMP_DECLSPEC int gmp_vsscanf (const char *, const char *, va_list); +#endif + + +/**************** Integer (i.e. Z) routines. ****************/ + +#define _mpz_realloc __gmpz_realloc +#define mpz_realloc __gmpz_realloc +__GMP_DECLSPEC void *_mpz_realloc (mpz_ptr, mp_size_t); + +#define mpz_abs __gmpz_abs +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs) +__GMP_DECLSPEC void mpz_abs (mpz_ptr, mpz_srcptr); +#endif + +#define mpz_add __gmpz_add +__GMP_DECLSPEC void mpz_add (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_add_ui __gmpz_add_ui +__GMP_DECLSPEC void mpz_add_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_addmul __gmpz_addmul +__GMP_DECLSPEC void mpz_addmul (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_addmul_ui __gmpz_addmul_ui +__GMP_DECLSPEC void mpz_addmul_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_and __gmpz_and +__GMP_DECLSPEC void mpz_and (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_array_init __gmpz_array_init +__GMP_DECLSPEC void mpz_array_init (mpz_ptr, mp_size_t, mp_size_t); + +#define mpz_bin_ui __gmpz_bin_ui +__GMP_DECLSPEC void mpz_bin_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_bin_uiui __gmpz_bin_uiui +__GMP_DECLSPEC void mpz_bin_uiui (mpz_ptr, unsigned long int, unsigned long int); + +#define mpz_cdiv_q __gmpz_cdiv_q +__GMP_DECLSPEC void mpz_cdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp +__GMP_DECLSPEC void mpz_cdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_cdiv_qr __gmpz_cdiv_qr +__GMP_DECLSPEC void mpz_cdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_cdiv_r __gmpz_cdiv_r +__GMP_DECLSPEC void mpz_cdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp +__GMP_DECLSPEC void mpz_cdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_cdiv_ui __gmpz_cdiv_ui +__GMP_DECLSPEC unsigned long int mpz_cdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE; + +#define mpz_clear __gmpz_clear +__GMP_DECLSPEC void mpz_clear (mpz_ptr); + +#define mpz_clears __gmpz_clears +__GMP_DECLSPEC void mpz_clears (mpz_ptr, ...); + +#define mpz_clrbit __gmpz_clrbit +__GMP_DECLSPEC void mpz_clrbit (mpz_ptr, mp_bitcnt_t); + +#define mpz_cmp __gmpz_cmp +__GMP_DECLSPEC int mpz_cmp (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmp_d __gmpz_cmp_d +__GMP_DECLSPEC int mpz_cmp_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE; + +#define _mpz_cmp_si __gmpz_cmp_si +__GMP_DECLSPEC int _mpz_cmp_si (mpz_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define _mpz_cmp_ui __gmpz_cmp_ui +__GMP_DECLSPEC int _mpz_cmp_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs __gmpz_cmpabs +__GMP_DECLSPEC int mpz_cmpabs (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs_d __gmpz_cmpabs_d +__GMP_DECLSPEC int mpz_cmpabs_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE; + +#define mpz_cmpabs_ui __gmpz_cmpabs_ui +__GMP_DECLSPEC int mpz_cmpabs_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_com __gmpz_com +__GMP_DECLSPEC void mpz_com (mpz_ptr, mpz_srcptr); + +#define mpz_combit __gmpz_combit +__GMP_DECLSPEC void mpz_combit (mpz_ptr, mp_bitcnt_t); + +#define mpz_congruent_p __gmpz_congruent_p +__GMP_DECLSPEC int mpz_congruent_p (mpz_srcptr, mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p +__GMP_DECLSPEC int mpz_congruent_2exp_p (mpz_srcptr, mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_congruent_ui_p __gmpz_congruent_ui_p +__GMP_DECLSPEC int mpz_congruent_ui_p (mpz_srcptr, unsigned long, unsigned long) __GMP_ATTRIBUTE_PURE; + +#define mpz_divexact __gmpz_divexact +__GMP_DECLSPEC void mpz_divexact (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_divexact_ui __gmpz_divexact_ui +__GMP_DECLSPEC void mpz_divexact_ui (mpz_ptr, mpz_srcptr, unsigned long); + +#define mpz_divisible_p __gmpz_divisible_p +__GMP_DECLSPEC int mpz_divisible_p (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_divisible_ui_p __gmpz_divisible_ui_p +__GMP_DECLSPEC int mpz_divisible_ui_p (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE; + +#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p +__GMP_DECLSPEC int mpz_divisible_2exp_p (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_dump __gmpz_dump +__GMP_DECLSPEC void mpz_dump (mpz_srcptr); + +#define mpz_export __gmpz_export +__GMP_DECLSPEC void *mpz_export (void *, size_t *, int, size_t, int, size_t, mpz_srcptr); + +#define mpz_fac_ui __gmpz_fac_ui +__GMP_DECLSPEC void mpz_fac_ui (mpz_ptr, unsigned long int); + +#define mpz_2fac_ui __gmpz_2fac_ui +__GMP_DECLSPEC void mpz_2fac_ui (mpz_ptr, unsigned long int); + +#define mpz_mfac_uiui __gmpz_mfac_uiui +__GMP_DECLSPEC void mpz_mfac_uiui (mpz_ptr, unsigned long int, unsigned long int); + +#define mpz_primorial_ui __gmpz_primorial_ui +__GMP_DECLSPEC void mpz_primorial_ui (mpz_ptr, unsigned long int); + +#define mpz_fdiv_q __gmpz_fdiv_q +__GMP_DECLSPEC void mpz_fdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp +__GMP_DECLSPEC void mpz_fdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_fdiv_qr __gmpz_fdiv_qr +__GMP_DECLSPEC void mpz_fdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_fdiv_r __gmpz_fdiv_r +__GMP_DECLSPEC void mpz_fdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp +__GMP_DECLSPEC void mpz_fdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_fdiv_ui __gmpz_fdiv_ui +__GMP_DECLSPEC unsigned long int mpz_fdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE; + +#define mpz_fib_ui __gmpz_fib_ui +__GMP_DECLSPEC void mpz_fib_ui (mpz_ptr, unsigned long int); + +#define mpz_fib2_ui __gmpz_fib2_ui +__GMP_DECLSPEC void mpz_fib2_ui (mpz_ptr, mpz_ptr, unsigned long int); + +#define mpz_fits_sint_p __gmpz_fits_sint_p +__GMP_DECLSPEC int mpz_fits_sint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_slong_p __gmpz_fits_slong_p +__GMP_DECLSPEC int mpz_fits_slong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_sshort_p __gmpz_fits_sshort_p +__GMP_DECLSPEC int mpz_fits_sshort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_fits_uint_p __gmpz_fits_uint_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p) +__GMP_DECLSPEC int mpz_fits_uint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ulong_p __gmpz_fits_ulong_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p) +__GMP_DECLSPEC int mpz_fits_ulong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_fits_ushort_p __gmpz_fits_ushort_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p) +__GMP_DECLSPEC int mpz_fits_ushort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_gcd __gmpz_gcd +__GMP_DECLSPEC void mpz_gcd (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_gcd_ui __gmpz_gcd_ui +__GMP_DECLSPEC unsigned long int mpz_gcd_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_gcdext __gmpz_gcdext +__GMP_DECLSPEC void mpz_gcdext (mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_get_d __gmpz_get_d +__GMP_DECLSPEC double mpz_get_d (mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_get_d_2exp __gmpz_get_d_2exp +__GMP_DECLSPEC double mpz_get_d_2exp (signed long int *, mpz_srcptr); + +#define mpz_get_si __gmpz_get_si +__GMP_DECLSPEC /* signed */ long int mpz_get_si (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_get_str __gmpz_get_str +__GMP_DECLSPEC char *mpz_get_str (char *, int, mpz_srcptr); + +#define mpz_get_ui __gmpz_get_ui +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui) +__GMP_DECLSPEC unsigned long int mpz_get_ui (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_getlimbn __gmpz_getlimbn +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn) +__GMP_DECLSPEC mp_limb_t mpz_getlimbn (mpz_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_hamdist __gmpz_hamdist +__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_import __gmpz_import +__GMP_DECLSPEC void mpz_import (mpz_ptr, size_t, int, size_t, int, size_t, const void *); + +#define mpz_init __gmpz_init +__GMP_DECLSPEC void mpz_init (mpz_ptr) __GMP_NOTHROW; + +#define mpz_init2 __gmpz_init2 +__GMP_DECLSPEC void mpz_init2 (mpz_ptr, mp_bitcnt_t); + +#define mpz_inits __gmpz_inits +__GMP_DECLSPEC void mpz_inits (mpz_ptr, ...) __GMP_NOTHROW; + +#define mpz_init_set __gmpz_init_set +__GMP_DECLSPEC void mpz_init_set (mpz_ptr, mpz_srcptr); + +#define mpz_init_set_d __gmpz_init_set_d +__GMP_DECLSPEC void mpz_init_set_d (mpz_ptr, double); + +#define mpz_init_set_si __gmpz_init_set_si +__GMP_DECLSPEC void mpz_init_set_si (mpz_ptr, signed long int); + +#define mpz_init_set_str __gmpz_init_set_str +__GMP_DECLSPEC int mpz_init_set_str (mpz_ptr, const char *, int); + +#define mpz_init_set_ui __gmpz_init_set_ui +__GMP_DECLSPEC void mpz_init_set_ui (mpz_ptr, unsigned long int); + +#define mpz_inp_raw __gmpz_inp_raw +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_inp_raw (mpz_ptr, FILE *); +#endif + +#define mpz_inp_str __gmpz_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_inp_str (mpz_ptr, FILE *, int); +#endif + +#define mpz_invert __gmpz_invert +__GMP_DECLSPEC int mpz_invert (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_ior __gmpz_ior +__GMP_DECLSPEC void mpz_ior (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_jacobi __gmpz_jacobi +__GMP_DECLSPEC int mpz_jacobi (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_kronecker mpz_jacobi /* alias */ + +#define mpz_kronecker_si __gmpz_kronecker_si +__GMP_DECLSPEC int mpz_kronecker_si (mpz_srcptr, long) __GMP_ATTRIBUTE_PURE; + +#define mpz_kronecker_ui __gmpz_kronecker_ui +__GMP_DECLSPEC int mpz_kronecker_ui (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE; + +#define mpz_si_kronecker __gmpz_si_kronecker +__GMP_DECLSPEC int mpz_si_kronecker (long, mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_ui_kronecker __gmpz_ui_kronecker +__GMP_DECLSPEC int mpz_ui_kronecker (unsigned long, mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_lcm __gmpz_lcm +__GMP_DECLSPEC void mpz_lcm (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_lcm_ui __gmpz_lcm_ui +__GMP_DECLSPEC void mpz_lcm_ui (mpz_ptr, mpz_srcptr, unsigned long); + +#define mpz_legendre mpz_jacobi /* alias */ + +#define mpz_lucnum_ui __gmpz_lucnum_ui +__GMP_DECLSPEC void mpz_lucnum_ui (mpz_ptr, unsigned long int); + +#define mpz_lucnum2_ui __gmpz_lucnum2_ui +__GMP_DECLSPEC void mpz_lucnum2_ui (mpz_ptr, mpz_ptr, unsigned long int); + +#define mpz_millerrabin __gmpz_millerrabin +__GMP_DECLSPEC int mpz_millerrabin (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE; + +#define mpz_mod __gmpz_mod +__GMP_DECLSPEC void mpz_mod (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */ + +#define mpz_mul __gmpz_mul +__GMP_DECLSPEC void mpz_mul (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_mul_2exp __gmpz_mul_2exp +__GMP_DECLSPEC void mpz_mul_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_mul_si __gmpz_mul_si +__GMP_DECLSPEC void mpz_mul_si (mpz_ptr, mpz_srcptr, long int); + +#define mpz_mul_ui __gmpz_mul_ui +__GMP_DECLSPEC void mpz_mul_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_neg __gmpz_neg +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg) +__GMP_DECLSPEC void mpz_neg (mpz_ptr, mpz_srcptr); +#endif + +#define mpz_nextprime __gmpz_nextprime +__GMP_DECLSPEC void mpz_nextprime (mpz_ptr, mpz_srcptr); + +#define mpz_prevprime __gmpz_prevprime +__GMP_DECLSPEC int mpz_prevprime (mpz_ptr, mpz_srcptr); + +#define mpz_out_raw __gmpz_out_raw +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_out_raw (FILE *, mpz_srcptr); +#endif + +#define mpz_out_str __gmpz_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr); +#endif + +#define mpz_perfect_power_p __gmpz_perfect_power_p +__GMP_DECLSPEC int mpz_perfect_power_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpz_perfect_square_p __gmpz_perfect_square_p +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p) +__GMP_DECLSPEC int mpz_perfect_square_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_popcount __gmpz_popcount +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount) +__GMP_DECLSPEC mp_bitcnt_t mpz_popcount (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_pow_ui __gmpz_pow_ui +__GMP_DECLSPEC void mpz_pow_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_powm __gmpz_powm +__GMP_DECLSPEC void mpz_powm (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr); + +#define mpz_powm_sec __gmpz_powm_sec +__GMP_DECLSPEC void mpz_powm_sec (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr); + +#define mpz_powm_ui __gmpz_powm_ui +__GMP_DECLSPEC void mpz_powm_ui (mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr); + +#define mpz_probab_prime_p __gmpz_probab_prime_p +__GMP_DECLSPEC int mpz_probab_prime_p (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE; + +#define mpz_random __gmpz_random +__GMP_DECLSPEC void mpz_random (mpz_ptr, mp_size_t); + +#define mpz_random2 __gmpz_random2 +__GMP_DECLSPEC void mpz_random2 (mpz_ptr, mp_size_t); + +#define mpz_realloc2 __gmpz_realloc2 +__GMP_DECLSPEC void mpz_realloc2 (mpz_ptr, mp_bitcnt_t); + +#define mpz_remove __gmpz_remove +__GMP_DECLSPEC mp_bitcnt_t mpz_remove (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_root __gmpz_root +__GMP_DECLSPEC int mpz_root (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_rootrem __gmpz_rootrem +__GMP_DECLSPEC void mpz_rootrem (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_rrandomb __gmpz_rrandomb +__GMP_DECLSPEC void mpz_rrandomb (mpz_ptr, gmp_randstate_ptr, mp_bitcnt_t); + +#define mpz_scan0 __gmpz_scan0 +__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_scan1 __gmpz_scan1 +__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_set __gmpz_set +__GMP_DECLSPEC void mpz_set (mpz_ptr, mpz_srcptr); + +#define mpz_set_d __gmpz_set_d +__GMP_DECLSPEC void mpz_set_d (mpz_ptr, double); + +#define mpz_set_f __gmpz_set_f +__GMP_DECLSPEC void mpz_set_f (mpz_ptr, mpf_srcptr); + +#define mpz_set_q __gmpz_set_q +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q) +__GMP_DECLSPEC void mpz_set_q (mpz_ptr, mpq_srcptr); +#endif + +#define mpz_set_si __gmpz_set_si +__GMP_DECLSPEC void mpz_set_si (mpz_ptr, signed long int); + +#define mpz_set_str __gmpz_set_str +__GMP_DECLSPEC int mpz_set_str (mpz_ptr, const char *, int); + +#define mpz_set_ui __gmpz_set_ui +__GMP_DECLSPEC void mpz_set_ui (mpz_ptr, unsigned long int); + +#define mpz_setbit __gmpz_setbit +__GMP_DECLSPEC void mpz_setbit (mpz_ptr, mp_bitcnt_t); + +#define mpz_size __gmpz_size +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size) +__GMP_DECLSPEC size_t mpz_size (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpz_sizeinbase __gmpz_sizeinbase +__GMP_DECLSPEC size_t mpz_sizeinbase (mpz_srcptr, int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_sqrt __gmpz_sqrt +__GMP_DECLSPEC void mpz_sqrt (mpz_ptr, mpz_srcptr); + +#define mpz_sqrtrem __gmpz_sqrtrem +__GMP_DECLSPEC void mpz_sqrtrem (mpz_ptr, mpz_ptr, mpz_srcptr); + +#define mpz_sub __gmpz_sub +__GMP_DECLSPEC void mpz_sub (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_sub_ui __gmpz_sub_ui +__GMP_DECLSPEC void mpz_sub_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_ui_sub __gmpz_ui_sub +__GMP_DECLSPEC void mpz_ui_sub (mpz_ptr, unsigned long int, mpz_srcptr); + +#define mpz_submul __gmpz_submul +__GMP_DECLSPEC void mpz_submul (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_submul_ui __gmpz_submul_ui +__GMP_DECLSPEC void mpz_submul_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_swap __gmpz_swap +__GMP_DECLSPEC void mpz_swap (mpz_ptr, mpz_ptr) __GMP_NOTHROW; + +#define mpz_tdiv_ui __gmpz_tdiv_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE; + +#define mpz_tdiv_q __gmpz_tdiv_q +__GMP_DECLSPEC void mpz_tdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp +__GMP_DECLSPEC void mpz_tdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_tdiv_qr __gmpz_tdiv_qr +__GMP_DECLSPEC void mpz_tdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_tdiv_r __gmpz_tdiv_r +__GMP_DECLSPEC void mpz_tdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp +__GMP_DECLSPEC void mpz_tdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); + +#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui +__GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int); + +#define mpz_tstbit __gmpz_tstbit +__GMP_DECLSPEC int mpz_tstbit (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpz_ui_pow_ui __gmpz_ui_pow_ui +__GMP_DECLSPEC void mpz_ui_pow_ui (mpz_ptr, unsigned long int, unsigned long int); + +#define mpz_urandomb __gmpz_urandomb +__GMP_DECLSPEC void mpz_urandomb (mpz_ptr, gmp_randstate_ptr, mp_bitcnt_t); + +#define mpz_urandomm __gmpz_urandomm +__GMP_DECLSPEC void mpz_urandomm (mpz_ptr, gmp_randstate_ptr, mpz_srcptr); + +#define mpz_xor __gmpz_xor +#define mpz_eor __gmpz_xor +__GMP_DECLSPEC void mpz_xor (mpz_ptr, mpz_srcptr, mpz_srcptr); + +#define mpz_limbs_read __gmpz_limbs_read +__GMP_DECLSPEC mp_srcptr mpz_limbs_read (mpz_srcptr); + +#define mpz_limbs_write __gmpz_limbs_write +__GMP_DECLSPEC mp_ptr mpz_limbs_write (mpz_ptr, mp_size_t); + +#define mpz_limbs_modify __gmpz_limbs_modify +__GMP_DECLSPEC mp_ptr mpz_limbs_modify (mpz_ptr, mp_size_t); + +#define mpz_limbs_finish __gmpz_limbs_finish +__GMP_DECLSPEC void mpz_limbs_finish (mpz_ptr, mp_size_t); + +#define mpz_roinit_n __gmpz_roinit_n +__GMP_DECLSPEC mpz_srcptr mpz_roinit_n (mpz_ptr, mp_srcptr, mp_size_t); + +#define MPZ_ROINIT_N(xp, xs) {{0, (xs),(xp) }} + +/**************** Rational (i.e. Q) routines. ****************/ + +#define mpq_abs __gmpq_abs +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs) +__GMP_DECLSPEC void mpq_abs (mpq_ptr, mpq_srcptr); +#endif + +#define mpq_add __gmpq_add +__GMP_DECLSPEC void mpq_add (mpq_ptr, mpq_srcptr, mpq_srcptr); + +#define mpq_canonicalize __gmpq_canonicalize +__GMP_DECLSPEC void mpq_canonicalize (mpq_ptr); + +#define mpq_clear __gmpq_clear +__GMP_DECLSPEC void mpq_clear (mpq_ptr); + +#define mpq_clears __gmpq_clears +__GMP_DECLSPEC void mpq_clears (mpq_ptr, ...); + +#define mpq_cmp __gmpq_cmp +__GMP_DECLSPEC int mpq_cmp (mpq_srcptr, mpq_srcptr) __GMP_ATTRIBUTE_PURE; + +#define _mpq_cmp_si __gmpq_cmp_si +__GMP_DECLSPEC int _mpq_cmp_si (mpq_srcptr, long, unsigned long) __GMP_ATTRIBUTE_PURE; + +#define _mpq_cmp_ui __gmpq_cmp_ui +__GMP_DECLSPEC int _mpq_cmp_ui (mpq_srcptr, unsigned long int, unsigned long int) __GMP_ATTRIBUTE_PURE; + +#define mpq_cmp_z __gmpq_cmp_z +__GMP_DECLSPEC int mpq_cmp_z (mpq_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpq_div __gmpq_div +__GMP_DECLSPEC void mpq_div (mpq_ptr, mpq_srcptr, mpq_srcptr); + +#define mpq_div_2exp __gmpq_div_2exp +__GMP_DECLSPEC void mpq_div_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t); + +#define mpq_equal __gmpq_equal +__GMP_DECLSPEC int mpq_equal (mpq_srcptr, mpq_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpq_get_num __gmpq_get_num +__GMP_DECLSPEC void mpq_get_num (mpz_ptr, mpq_srcptr); + +#define mpq_get_den __gmpq_get_den +__GMP_DECLSPEC void mpq_get_den (mpz_ptr, mpq_srcptr); + +#define mpq_get_d __gmpq_get_d +__GMP_DECLSPEC double mpq_get_d (mpq_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpq_get_str __gmpq_get_str +__GMP_DECLSPEC char *mpq_get_str (char *, int, mpq_srcptr); + +#define mpq_init __gmpq_init +__GMP_DECLSPEC void mpq_init (mpq_ptr); + +#define mpq_inits __gmpq_inits +__GMP_DECLSPEC void mpq_inits (mpq_ptr, ...); + +#define mpq_inp_str __gmpq_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpq_inp_str (mpq_ptr, FILE *, int); +#endif + +#define mpq_inv __gmpq_inv +__GMP_DECLSPEC void mpq_inv (mpq_ptr, mpq_srcptr); + +#define mpq_mul __gmpq_mul +__GMP_DECLSPEC void mpq_mul (mpq_ptr, mpq_srcptr, mpq_srcptr); + +#define mpq_mul_2exp __gmpq_mul_2exp +__GMP_DECLSPEC void mpq_mul_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t); + +#define mpq_neg __gmpq_neg +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg) +__GMP_DECLSPEC void mpq_neg (mpq_ptr, mpq_srcptr); +#endif + +#define mpq_out_str __gmpq_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpq_out_str (FILE *, int, mpq_srcptr); +#endif + +#define mpq_set __gmpq_set +__GMP_DECLSPEC void mpq_set (mpq_ptr, mpq_srcptr); + +#define mpq_set_d __gmpq_set_d +__GMP_DECLSPEC void mpq_set_d (mpq_ptr, double); + +#define mpq_set_den __gmpq_set_den +__GMP_DECLSPEC void mpq_set_den (mpq_ptr, mpz_srcptr); + +#define mpq_set_f __gmpq_set_f +__GMP_DECLSPEC void mpq_set_f (mpq_ptr, mpf_srcptr); + +#define mpq_set_num __gmpq_set_num +__GMP_DECLSPEC void mpq_set_num (mpq_ptr, mpz_srcptr); + +#define mpq_set_si __gmpq_set_si +__GMP_DECLSPEC void mpq_set_si (mpq_ptr, signed long int, unsigned long int); + +#define mpq_set_str __gmpq_set_str +__GMP_DECLSPEC int mpq_set_str (mpq_ptr, const char *, int); + +#define mpq_set_ui __gmpq_set_ui +__GMP_DECLSPEC void mpq_set_ui (mpq_ptr, unsigned long int, unsigned long int); + +#define mpq_set_z __gmpq_set_z +__GMP_DECLSPEC void mpq_set_z (mpq_ptr, mpz_srcptr); + +#define mpq_sub __gmpq_sub +__GMP_DECLSPEC void mpq_sub (mpq_ptr, mpq_srcptr, mpq_srcptr); + +#define mpq_swap __gmpq_swap +__GMP_DECLSPEC void mpq_swap (mpq_ptr, mpq_ptr) __GMP_NOTHROW; + + +/**************** Float (i.e. F) routines. ****************/ + +#define mpf_abs __gmpf_abs +__GMP_DECLSPEC void mpf_abs (mpf_ptr, mpf_srcptr); + +#define mpf_add __gmpf_add +__GMP_DECLSPEC void mpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr); + +#define mpf_add_ui __gmpf_add_ui +__GMP_DECLSPEC void mpf_add_ui (mpf_ptr, mpf_srcptr, unsigned long int); +#define mpf_ceil __gmpf_ceil +__GMP_DECLSPEC void mpf_ceil (mpf_ptr, mpf_srcptr); + +#define mpf_clear __gmpf_clear +__GMP_DECLSPEC void mpf_clear (mpf_ptr); + +#define mpf_clears __gmpf_clears +__GMP_DECLSPEC void mpf_clears (mpf_ptr, ...); + +#define mpf_cmp __gmpf_cmp +__GMP_DECLSPEC int mpf_cmp (mpf_srcptr, mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_z __gmpf_cmp_z +__GMP_DECLSPEC int mpf_cmp_z (mpf_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_d __gmpf_cmp_d +__GMP_DECLSPEC int mpf_cmp_d (mpf_srcptr, double) __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_si __gmpf_cmp_si +__GMP_DECLSPEC int mpf_cmp_si (mpf_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_cmp_ui __gmpf_cmp_ui +__GMP_DECLSPEC int mpf_cmp_ui (mpf_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_div __gmpf_div +__GMP_DECLSPEC void mpf_div (mpf_ptr, mpf_srcptr, mpf_srcptr); + +#define mpf_div_2exp __gmpf_div_2exp +__GMP_DECLSPEC void mpf_div_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t); + +#define mpf_div_ui __gmpf_div_ui +__GMP_DECLSPEC void mpf_div_ui (mpf_ptr, mpf_srcptr, unsigned long int); + +#define mpf_dump __gmpf_dump +__GMP_DECLSPEC void mpf_dump (mpf_srcptr); + +#define mpf_eq __gmpf_eq +__GMP_DECLSPEC int mpf_eq (mpf_srcptr, mpf_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_sint_p __gmpf_fits_sint_p +__GMP_DECLSPEC int mpf_fits_sint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_slong_p __gmpf_fits_slong_p +__GMP_DECLSPEC int mpf_fits_slong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_sshort_p __gmpf_fits_sshort_p +__GMP_DECLSPEC int mpf_fits_sshort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_uint_p __gmpf_fits_uint_p +__GMP_DECLSPEC int mpf_fits_uint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ulong_p __gmpf_fits_ulong_p +__GMP_DECLSPEC int mpf_fits_ulong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_fits_ushort_p __gmpf_fits_ushort_p +__GMP_DECLSPEC int mpf_fits_ushort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_floor __gmpf_floor +__GMP_DECLSPEC void mpf_floor (mpf_ptr, mpf_srcptr); + +#define mpf_get_d __gmpf_get_d +__GMP_DECLSPEC double mpf_get_d (mpf_srcptr) __GMP_ATTRIBUTE_PURE; + +#define mpf_get_d_2exp __gmpf_get_d_2exp +__GMP_DECLSPEC double mpf_get_d_2exp (signed long int *, mpf_srcptr); + +#define mpf_get_default_prec __gmpf_get_default_prec +__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec (void) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_prec __gmpf_get_prec +__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_si __gmpf_get_si +__GMP_DECLSPEC long mpf_get_si (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_get_str __gmpf_get_str +__GMP_DECLSPEC char *mpf_get_str (char *, mp_exp_t *, int, size_t, mpf_srcptr); + +#define mpf_get_ui __gmpf_get_ui +__GMP_DECLSPEC unsigned long mpf_get_ui (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_init __gmpf_init +__GMP_DECLSPEC void mpf_init (mpf_ptr); + +#define mpf_init2 __gmpf_init2 +__GMP_DECLSPEC void mpf_init2 (mpf_ptr, mp_bitcnt_t); + +#define mpf_inits __gmpf_inits +__GMP_DECLSPEC void mpf_inits (mpf_ptr, ...); + +#define mpf_init_set __gmpf_init_set +__GMP_DECLSPEC void mpf_init_set (mpf_ptr, mpf_srcptr); + +#define mpf_init_set_d __gmpf_init_set_d +__GMP_DECLSPEC void mpf_init_set_d (mpf_ptr, double); + +#define mpf_init_set_si __gmpf_init_set_si +__GMP_DECLSPEC void mpf_init_set_si (mpf_ptr, signed long int); + +#define mpf_init_set_str __gmpf_init_set_str +__GMP_DECLSPEC int mpf_init_set_str (mpf_ptr, const char *, int); + +#define mpf_init_set_ui __gmpf_init_set_ui +__GMP_DECLSPEC void mpf_init_set_ui (mpf_ptr, unsigned long int); + +#define mpf_inp_str __gmpf_inp_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpf_inp_str (mpf_ptr, FILE *, int); +#endif + +#define mpf_integer_p __gmpf_integer_p +__GMP_DECLSPEC int mpf_integer_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_mul __gmpf_mul +__GMP_DECLSPEC void mpf_mul (mpf_ptr, mpf_srcptr, mpf_srcptr); + +#define mpf_mul_2exp __gmpf_mul_2exp +__GMP_DECLSPEC void mpf_mul_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t); + +#define mpf_mul_ui __gmpf_mul_ui +__GMP_DECLSPEC void mpf_mul_ui (mpf_ptr, mpf_srcptr, unsigned long int); + +#define mpf_neg __gmpf_neg +__GMP_DECLSPEC void mpf_neg (mpf_ptr, mpf_srcptr); + +#define mpf_out_str __gmpf_out_str +#ifdef _GMP_H_HAVE_FILE +__GMP_DECLSPEC size_t mpf_out_str (FILE *, int, size_t, mpf_srcptr); +#endif + +#define mpf_pow_ui __gmpf_pow_ui +__GMP_DECLSPEC void mpf_pow_ui (mpf_ptr, mpf_srcptr, unsigned long int); + +#define mpf_random2 __gmpf_random2 +__GMP_DECLSPEC void mpf_random2 (mpf_ptr, mp_size_t, mp_exp_t); + +#define mpf_reldiff __gmpf_reldiff +__GMP_DECLSPEC void mpf_reldiff (mpf_ptr, mpf_srcptr, mpf_srcptr); + +#define mpf_set __gmpf_set +__GMP_DECLSPEC void mpf_set (mpf_ptr, mpf_srcptr); + +#define mpf_set_d __gmpf_set_d +__GMP_DECLSPEC void mpf_set_d (mpf_ptr, double); + +#define mpf_set_default_prec __gmpf_set_default_prec +__GMP_DECLSPEC void mpf_set_default_prec (mp_bitcnt_t) __GMP_NOTHROW; + +#define mpf_set_prec __gmpf_set_prec +__GMP_DECLSPEC void mpf_set_prec (mpf_ptr, mp_bitcnt_t); + +#define mpf_set_prec_raw __gmpf_set_prec_raw +__GMP_DECLSPEC void mpf_set_prec_raw (mpf_ptr, mp_bitcnt_t) __GMP_NOTHROW; + +#define mpf_set_q __gmpf_set_q +__GMP_DECLSPEC void mpf_set_q (mpf_ptr, mpq_srcptr); + +#define mpf_set_si __gmpf_set_si +__GMP_DECLSPEC void mpf_set_si (mpf_ptr, signed long int); + +#define mpf_set_str __gmpf_set_str +__GMP_DECLSPEC int mpf_set_str (mpf_ptr, const char *, int); + +#define mpf_set_ui __gmpf_set_ui +__GMP_DECLSPEC void mpf_set_ui (mpf_ptr, unsigned long int); + +#define mpf_set_z __gmpf_set_z +__GMP_DECLSPEC void mpf_set_z (mpf_ptr, mpz_srcptr); + +#define mpf_size __gmpf_size +__GMP_DECLSPEC size_t mpf_size (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpf_sqrt __gmpf_sqrt +__GMP_DECLSPEC void mpf_sqrt (mpf_ptr, mpf_srcptr); + +#define mpf_sqrt_ui __gmpf_sqrt_ui +__GMP_DECLSPEC void mpf_sqrt_ui (mpf_ptr, unsigned long int); + +#define mpf_sub __gmpf_sub +__GMP_DECLSPEC void mpf_sub (mpf_ptr, mpf_srcptr, mpf_srcptr); + +#define mpf_sub_ui __gmpf_sub_ui +__GMP_DECLSPEC void mpf_sub_ui (mpf_ptr, mpf_srcptr, unsigned long int); + +#define mpf_swap __gmpf_swap +__GMP_DECLSPEC void mpf_swap (mpf_ptr, mpf_ptr) __GMP_NOTHROW; + +#define mpf_trunc __gmpf_trunc +__GMP_DECLSPEC void mpf_trunc (mpf_ptr, mpf_srcptr); + +#define mpf_ui_div __gmpf_ui_div +__GMP_DECLSPEC void mpf_ui_div (mpf_ptr, unsigned long int, mpf_srcptr); + +#define mpf_ui_sub __gmpf_ui_sub +__GMP_DECLSPEC void mpf_ui_sub (mpf_ptr, unsigned long int, mpf_srcptr); + +#define mpf_urandomb __gmpf_urandomb +__GMP_DECLSPEC void mpf_urandomb (mpf_ptr, gmp_randstate_ptr, mp_bitcnt_t); + + +/************ Low level positive-integer (i.e. N) routines. ************/ + +/* This is ugly, but we need to make user calls reach the prefixed function. */ + +#define mpn_add __MPN(add) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add) +__GMP_DECLSPEC mp_limb_t mpn_add (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); +#endif + +#define mpn_add_1 __MPN(add_1) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1) +__GMP_DECLSPEC mp_limb_t mpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW; +#endif + +#define mpn_add_n __MPN(add_n) +__GMP_DECLSPEC mp_limb_t mpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); + +#define mpn_addmul_1 __MPN(addmul_1) +__GMP_DECLSPEC mp_limb_t mpn_addmul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_cmp __MPN(cmp) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp) +__GMP_DECLSPEC int mpn_cmp (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpn_zero_p __MPN(zero_p) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_zero_p) +__GMP_DECLSPEC int mpn_zero_p (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; +#endif + +#define mpn_divexact_1 __MPN(divexact_1) +__GMP_DECLSPEC void mpn_divexact_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_divexact_by3(dst,src,size) \ + mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0)) + +#define mpn_divexact_by3c __MPN(divexact_by3c) +__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_divmod_1(qp,np,nsize,dlimb) \ + mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb) + +#define mpn_divrem __MPN(divrem) +__GMP_DECLSPEC mp_limb_t mpn_divrem (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t); + +#define mpn_divrem_1 __MPN(divrem_1) +__GMP_DECLSPEC mp_limb_t mpn_divrem_1 (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_divrem_2 __MPN(divrem_2) +__GMP_DECLSPEC mp_limb_t mpn_divrem_2 (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr); + +#define mpn_div_qr_1 __MPN(div_qr_1) +__GMP_DECLSPEC mp_limb_t mpn_div_qr_1 (mp_ptr, mp_limb_t *, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_div_qr_2 __MPN(div_qr_2) +__GMP_DECLSPEC mp_limb_t mpn_div_qr_2 (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr); + +#define mpn_gcd __MPN(gcd) +__GMP_DECLSPEC mp_size_t mpn_gcd (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t); + +#define mpn_gcd_11 __MPN(gcd_11) +__GMP_DECLSPEC mp_limb_t mpn_gcd_11 (mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_gcd_1 __MPN(gcd_1) +__GMP_DECLSPEC mp_limb_t mpn_gcd_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_gcdext_1 __MPN(gcdext_1) +__GMP_DECLSPEC mp_limb_t mpn_gcdext_1 (mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t); + +#define mpn_gcdext __MPN(gcdext) +__GMP_DECLSPEC mp_size_t mpn_gcdext (mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t); + +#define mpn_get_str __MPN(get_str) +__GMP_DECLSPEC size_t mpn_get_str (unsigned char *, int, mp_ptr, mp_size_t); + +#define mpn_hamdist __MPN(hamdist) +__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpn_lshift __MPN(lshift) +__GMP_DECLSPEC mp_limb_t mpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int); + +#define mpn_mod_1 __MPN(mod_1) +__GMP_DECLSPEC mp_limb_t mpn_mod_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_mul __MPN(mul) +__GMP_DECLSPEC mp_limb_t mpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); + +#define mpn_mul_1 __MPN(mul_1) +__GMP_DECLSPEC mp_limb_t mpn_mul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_mul_n __MPN(mul_n) +__GMP_DECLSPEC void mpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); + +#define mpn_sqr __MPN(sqr) +__GMP_DECLSPEC void mpn_sqr (mp_ptr, mp_srcptr, mp_size_t); + +#define mpn_neg __MPN(neg) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_neg) +__GMP_DECLSPEC mp_limb_t mpn_neg (mp_ptr, mp_srcptr, mp_size_t); +#endif + +#define mpn_com __MPN(com) +__GMP_DECLSPEC void mpn_com (mp_ptr, mp_srcptr, mp_size_t); + +#define mpn_perfect_square_p __MPN(perfect_square_p) +__GMP_DECLSPEC int mpn_perfect_square_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_perfect_power_p __MPN(perfect_power_p) +__GMP_DECLSPEC int mpn_perfect_power_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_popcount __MPN(popcount) +__GMP_DECLSPEC mp_bitcnt_t mpn_popcount (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE; + +#define mpn_pow_1 __MPN(pow_1) +__GMP_DECLSPEC mp_size_t mpn_pow_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr); + +/* undocumented now, but retained here for upward compatibility */ +#define mpn_preinv_mod_1 __MPN(preinv_mod_1) +__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 (mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_random __MPN(random) +__GMP_DECLSPEC void mpn_random (mp_ptr, mp_size_t); + +#define mpn_random2 __MPN(random2) +__GMP_DECLSPEC void mpn_random2 (mp_ptr, mp_size_t); + +#define mpn_rshift __MPN(rshift) +__GMP_DECLSPEC mp_limb_t mpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int); + +#define mpn_scan0 __MPN(scan0) +__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_scan1 __MPN(scan1) +__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_set_str __MPN(set_str) +__GMP_DECLSPEC mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int); + +#define mpn_sizeinbase __MPN(sizeinbase) +__GMP_DECLSPEC size_t mpn_sizeinbase (mp_srcptr, mp_size_t, int); + +#define mpn_sqrtrem __MPN(sqrtrem) +__GMP_DECLSPEC mp_size_t mpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t); + +#define mpn_sub __MPN(sub) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub) +__GMP_DECLSPEC mp_limb_t mpn_sub (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); +#endif + +#define mpn_sub_1 __MPN(sub_1) +#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1) +__GMP_DECLSPEC mp_limb_t mpn_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW; +#endif + +#define mpn_sub_n __MPN(sub_n) +__GMP_DECLSPEC mp_limb_t mpn_sub_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); + +#define mpn_submul_1 __MPN(submul_1) +__GMP_DECLSPEC mp_limb_t mpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); + +#define mpn_tdiv_qr __MPN(tdiv_qr) +__GMP_DECLSPEC void mpn_tdiv_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); + +#define mpn_and_n __MPN(and_n) +__GMP_DECLSPEC void mpn_and_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_andn_n __MPN(andn_n) +__GMP_DECLSPEC void mpn_andn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_nand_n __MPN(nand_n) +__GMP_DECLSPEC void mpn_nand_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_ior_n __MPN(ior_n) +__GMP_DECLSPEC void mpn_ior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_iorn_n __MPN(iorn_n) +__GMP_DECLSPEC void mpn_iorn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_nior_n __MPN(nior_n) +__GMP_DECLSPEC void mpn_nior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_xor_n __MPN(xor_n) +__GMP_DECLSPEC void mpn_xor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_xnor_n __MPN(xnor_n) +__GMP_DECLSPEC void mpn_xnor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); + +#define mpn_copyi __MPN(copyi) +__GMP_DECLSPEC void mpn_copyi (mp_ptr, mp_srcptr, mp_size_t); +#define mpn_copyd __MPN(copyd) +__GMP_DECLSPEC void mpn_copyd (mp_ptr, mp_srcptr, mp_size_t); +#define mpn_zero __MPN(zero) +__GMP_DECLSPEC void mpn_zero (mp_ptr, mp_size_t); + +#define mpn_cnd_add_n __MPN(cnd_add_n) +__GMP_DECLSPEC mp_limb_t mpn_cnd_add_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +#define mpn_cnd_sub_n __MPN(cnd_sub_n) +__GMP_DECLSPEC mp_limb_t mpn_cnd_sub_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); + +#define mpn_sec_add_1 __MPN(sec_add_1) +__GMP_DECLSPEC mp_limb_t mpn_sec_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr); +#define mpn_sec_add_1_itch __MPN(sec_add_1_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_add_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_sec_sub_1 __MPN(sec_sub_1) +__GMP_DECLSPEC mp_limb_t mpn_sec_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr); +#define mpn_sec_sub_1_itch __MPN(sec_sub_1_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_sub_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_cnd_swap __MPN(cnd_swap) +__GMP_DECLSPEC void mpn_cnd_swap (mp_limb_t, volatile mp_limb_t *, volatile mp_limb_t *, mp_size_t); + +#define mpn_sec_mul __MPN(sec_mul) +__GMP_DECLSPEC void mpn_sec_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr); +#define mpn_sec_mul_itch __MPN(sec_mul_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_mul_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_sec_sqr __MPN(sec_sqr) +__GMP_DECLSPEC void mpn_sec_sqr (mp_ptr, mp_srcptr, mp_size_t, mp_ptr); +#define mpn_sec_sqr_itch __MPN(sec_sqr_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_sqr_itch (mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_sec_powm __MPN(sec_powm) +__GMP_DECLSPEC void mpn_sec_powm (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_bitcnt_t, mp_srcptr, mp_size_t, mp_ptr); +#define mpn_sec_powm_itch __MPN(sec_powm_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_powm_itch (mp_size_t, mp_bitcnt_t, mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_sec_tabselect __MPN(sec_tabselect) +__GMP_DECLSPEC void mpn_sec_tabselect (volatile mp_limb_t *, volatile const mp_limb_t *, mp_size_t, mp_size_t, mp_size_t); + +#define mpn_sec_div_qr __MPN(sec_div_qr) +__GMP_DECLSPEC mp_limb_t mpn_sec_div_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr); +#define mpn_sec_div_qr_itch __MPN(sec_div_qr_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_div_qr_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE; +#define mpn_sec_div_r __MPN(sec_div_r) +__GMP_DECLSPEC void mpn_sec_div_r (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr); +#define mpn_sec_div_r_itch __MPN(sec_div_r_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_div_r_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE; + +#define mpn_sec_invert __MPN(sec_invert) +__GMP_DECLSPEC int mpn_sec_invert (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_bitcnt_t, mp_ptr); +#define mpn_sec_invert_itch __MPN(sec_invert_itch) +__GMP_DECLSPEC mp_size_t mpn_sec_invert_itch (mp_size_t) __GMP_ATTRIBUTE_PURE; + + +/**************** mpz inlines ****************/ + +/* The following are provided as inlines where possible, but always exist as + library functions too, for binary compatibility. + + Within gmp itself this inlining generally isn't relied on, since it + doesn't get done for all compilers, whereas if something is worth + inlining then it's worth arranging always. + + There are two styles of inlining here. When the same bit of code is + wanted for the inline as for the library version, then __GMP_FORCE_foo + arranges for that code to be emitted and the __GMP_EXTERN_INLINE + directive suppressed, eg. mpz_fits_uint_p. When a different bit of code + is wanted for the inline than for the library version, then + __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */ + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs) +__GMP_EXTERN_INLINE void +mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpz_set (__gmp_w, __gmp_u); + __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size); +} +#endif + +#if GMP_NAIL_BITS == 0 +#define __GMPZ_FITS_UTYPE_P(z,maxval) \ + mp_size_t __gmp_n = z->_mp_size; \ + mp_ptr __gmp_p = z->_mp_d; \ + return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)); +#else +#define __GMPZ_FITS_UTYPE_P(z,maxval) \ + mp_size_t __gmp_n = z->_mp_size; \ + mp_ptr __gmp_p = z->_mp_d; \ + return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval) \ + || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS))); +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p) +#if ! defined (__GMP_FORCE_mpz_fits_uint_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, UINT_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p) +#if ! defined (__GMP_FORCE_mpz_fits_ulong_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, ULONG_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p) +#if ! defined (__GMP_FORCE_mpz_fits_ushort_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + __GMPZ_FITS_UTYPE_P (__gmp_z, USHRT_MAX); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui) +#if ! defined (__GMP_FORCE_mpz_get_ui) +__GMP_EXTERN_INLINE +#endif +unsigned long +mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + mp_ptr __gmp_p = __gmp_z->_mp_d; + mp_size_t __gmp_n = __gmp_z->_mp_size; + mp_limb_t __gmp_l = __gmp_p[0]; + /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings + about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland + C++ 6.0 warnings about condition always true for something like + "ULONG_MAX < GMP_NUMB_MASK". */ +#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB) + /* limb==long and no nails, or limb==longlong, one limb is enough */ + return (__gmp_n != 0 ? __gmp_l : 0); +#else + /* limb==long and nails, need two limbs when available */ + __gmp_n = __GMP_ABS (__gmp_n); + if (__gmp_n <= 1) + return (__gmp_n != 0 ? __gmp_l : 0); + else + return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS); +#endif +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn) +#if ! defined (__GMP_FORCE_mpz_getlimbn) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_result = 0; + if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size))) + __gmp_result = __gmp_z->_mp_d[__gmp_n]; + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg) +__GMP_EXTERN_INLINE void +mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpz_set (__gmp_w, __gmp_u); + __gmp_w->_mp_size = - __gmp_w->_mp_size; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p) +#if ! defined (__GMP_FORCE_mpz_perfect_square_p) +__GMP_EXTERN_INLINE +#endif +int +mpz_perfect_square_p (mpz_srcptr __gmp_a) +{ + mp_size_t __gmp_asize; + int __gmp_result; + + __gmp_asize = __gmp_a->_mp_size; + __gmp_result = (__gmp_asize >= 0); /* zero is a square, negatives are not */ + if (__GMP_LIKELY (__gmp_asize > 0)) + __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount) +#if ! defined (__GMP_FORCE_mpz_popcount) +__GMP_EXTERN_INLINE +#endif +mp_bitcnt_t +mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW +{ + mp_size_t __gmp_usize; + mp_bitcnt_t __gmp_result; + + __gmp_usize = __gmp_u->_mp_size; + __gmp_result = (__gmp_usize < 0 ? ~ __GMP_CAST (mp_bitcnt_t, 0) : __GMP_CAST (mp_bitcnt_t, 0)); + if (__GMP_LIKELY (__gmp_usize > 0)) + __gmp_result = mpn_popcount (__gmp_u->_mp_d, __gmp_usize); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q) +#if ! defined (__GMP_FORCE_mpz_set_q) +__GMP_EXTERN_INLINE +#endif +void +mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u)); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size) +#if ! defined (__GMP_FORCE_mpz_size) +__GMP_EXTERN_INLINE +#endif +size_t +mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW +{ + return __GMP_ABS (__gmp_z->_mp_size); +} +#endif + + +/**************** mpq inlines ****************/ + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs) +__GMP_EXTERN_INLINE void +mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpq_set (__gmp_w, __gmp_u); + __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size); +} +#endif + +#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg) +__GMP_EXTERN_INLINE void +mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) + mpq_set (__gmp_w, __gmp_u); + __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; +} +#endif + + +/**************** mpn inlines ****************/ + +/* The comments with __GMPN_ADD_1 below apply here too. + + The test for FUNCTION returning 0 should predict well. If it's assumed + {yp,ysize} will usually have a random number of bits then the high limb + won't be full and a carry out will occur a good deal less than 50% of the + time. + + ysize==0 isn't a documented feature, but is used internally in a few + places. + + Producing cout last stops it using up a register during the main part of + the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))" + doesn't seem able to move the true and false legs of the conditional up + to the two places cout is generated. */ + +#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x; \ + \ + /* ASSERT ((ysize) >= 0); */ \ + /* ASSERT ((xsize) >= (ysize)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \ + \ + __gmp_i = (ysize); \ + if (__gmp_i != 0) \ + { \ + if (FUNCTION (wp, xp, yp, __gmp_i)) \ + { \ + do \ + { \ + if (__gmp_i >= (xsize)) \ + { \ + (cout) = 1; \ + goto __gmp_done; \ + } \ + __gmp_x = (xp)[__gmp_i]; \ + } \ + while (TEST); \ + } \ + } \ + if ((wp) != (xp)) \ + __GMPN_COPY_REST (wp, xp, xsize, __gmp_i); \ + (cout) = 0; \ + __gmp_done: \ + ; \ + } while (0) + +#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \ + __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \ + (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0)) +#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \ + __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \ + (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0)) + + +/* The use of __gmp_i indexing is designed to ensure a compile time src==dst + remains nice and clear to the compiler, so that __GMPN_COPY_REST can + disappear, and the load/add/store gets a chance to become a + read-modify-write on CISC CPUs. + + Alternatives: + + Using a pair of pointers instead of indexing would be possible, but gcc + isn't able to recognise compile-time src==dst in that case, even when the + pointers are incremented more or less together. Other compilers would + very likely have similar difficulty. + + gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or + similar to detect a compile-time src==dst. This works nicely on gcc + 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems + to be always false, for a pointer p. But the current code form seems + good enough for src==dst anyway. + + gcc on x86 as usual doesn't give particularly good flags handling for the + carry/borrow detection. It's tempting to want some multi instruction asm + blocks to help it, and this was tried, but in truth there's only a few + instructions to save and any gain is all too easily lost by register + juggling setting up for the asm. */ + +#if GMP_NAIL_BITS == 0 +#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_r; \ + \ + /* ASSERT ((n) >= 1); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ + \ + __gmp_x = (src)[0]; \ + __gmp_r = __gmp_x OP (v); \ + (dst)[0] = __gmp_r; \ + if (CB (__gmp_r, __gmp_x, (v))) \ + { \ + (cout) = 1; \ + for (__gmp_i = 1; __gmp_i < (n);) \ + { \ + __gmp_x = (src)[__gmp_i]; \ + __gmp_r = __gmp_x OP 1; \ + (dst)[__gmp_i] = __gmp_r; \ + ++__gmp_i; \ + if (!CB (__gmp_r, __gmp_x, 1)) \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, __gmp_i); \ + (cout) = 0; \ + break; \ + } \ + } \ + } \ + else \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, 1); \ + (cout) = 0; \ + } \ + } while (0) +#endif + +#if GMP_NAIL_BITS >= 1 +#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_r; \ + \ + /* ASSERT ((n) >= 1); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \ + \ + __gmp_x = (src)[0]; \ + __gmp_r = __gmp_x OP (v); \ + (dst)[0] = __gmp_r & GMP_NUMB_MASK; \ + if (__gmp_r >> GMP_NUMB_BITS != 0) \ + { \ + (cout) = 1; \ + for (__gmp_i = 1; __gmp_i < (n);) \ + { \ + __gmp_x = (src)[__gmp_i]; \ + __gmp_r = __gmp_x OP 1; \ + (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK; \ + ++__gmp_i; \ + if (__gmp_r >> GMP_NUMB_BITS == 0) \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, __gmp_i); \ + (cout) = 0; \ + break; \ + } \ + } \ + } \ + else \ + { \ + if ((src) != (dst)) \ + __GMPN_COPY_REST (dst, src, n, 1); \ + (cout) = 0; \ + } \ + } while (0) +#endif + +#define __GMPN_ADDCB(r,x,y) ((r) < (y)) +#define __GMPN_SUBCB(r,x,y) ((x) < (y)) + +#define __GMPN_ADD_1(cout, dst, src, n, v) \ + __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB) +#define __GMPN_SUB_1(cout, dst, src, n, v) \ + __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB) + + +/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or + negative. size==0 is allowed. On random data usually only one limb will + need to be examined to get a result, so it's worth having it inline. */ +#define __GMPN_CMP(result, xp, yp, size) \ + do { \ + mp_size_t __gmp_i; \ + mp_limb_t __gmp_x, __gmp_y; \ + \ + /* ASSERT ((size) >= 0); */ \ + \ + (result) = 0; \ + __gmp_i = (size); \ + while (--__gmp_i >= 0) \ + { \ + __gmp_x = (xp)[__gmp_i]; \ + __gmp_y = (yp)[__gmp_i]; \ + if (__gmp_x != __gmp_y) \ + { \ + /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */ \ + (result) = (__gmp_x > __gmp_y ? 1 : -1); \ + break; \ + } \ + } \ + } while (0) + + +#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST) +#define __GMPN_COPY_REST(dst, src, size, start) \ + do { \ + /* ASSERT ((start) >= 0); */ \ + /* ASSERT ((start) <= (size)); */ \ + __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \ + } while (0) +#endif + +/* Copy {src,size} to {dst,size}, starting at "start". This is designed to + keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1, + __GMPN_ADD, etc. */ +#if ! defined (__GMPN_COPY_REST) +#define __GMPN_COPY_REST(dst, src, size, start) \ + do { \ + mp_size_t __gmp_j; \ + /* ASSERT ((size) >= 0); */ \ + /* ASSERT ((start) >= 0); */ \ + /* ASSERT ((start) <= (size)); */ \ + /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \ + __GMP_CRAY_Pragma ("_CRI ivdep"); \ + for (__gmp_j = (start); __gmp_j < (size); __gmp_j++) \ + (dst)[__gmp_j] = (src)[__gmp_j]; \ + } while (0) +#endif + +/* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use + mpn_copyi if there's a native version, and if we don't mind demanding + binary compatibility for it (on targets which use it). */ + +#if ! defined (__GMPN_COPY) +#define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0) +#endif + + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add) +#if ! defined (__GMP_FORCE_mpn_add) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1) +#if ! defined (__GMP_FORCE_mpn_add_1) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_c; + __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp) +#if ! defined (__GMP_FORCE_mpn_cmp) +__GMP_EXTERN_INLINE +#endif +int +mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW +{ + int __gmp_result; + __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size); + return __gmp_result; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_zero_p) +#if ! defined (__GMP_FORCE_mpn_zero_p) +__GMP_EXTERN_INLINE +#endif +int +mpn_zero_p (mp_srcptr __gmp_p, mp_size_t __gmp_n) __GMP_NOTHROW +{ + /* if (__GMP_LIKELY (__gmp_n > 0)) */ + do { + if (__gmp_p[--__gmp_n] != 0) + return 0; + } while (__gmp_n != 0); + return 1; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub) +#if ! defined (__GMP_FORCE_mpn_sub) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1) +#if ! defined (__GMP_FORCE_mpn_sub_1) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW +{ + mp_limb_t __gmp_c; + __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n); + return __gmp_c; +} +#endif + +#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_neg) +#if ! defined (__GMP_FORCE_mpn_neg) +__GMP_EXTERN_INLINE +#endif +mp_limb_t +mpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n) +{ + while (*__gmp_up == 0) /* Low zero limbs are unchanged by negation. */ + { + *__gmp_rp = 0; + if (!--__gmp_n) /* All zero */ + return 0; + ++__gmp_up; ++__gmp_rp; + } + + *__gmp_rp = (- *__gmp_up) & GMP_NUMB_MASK; + + if (--__gmp_n) /* Higher limbs get complemented. */ + mpn_com (++__gmp_rp, ++__gmp_up, __gmp_n); + + return 1; +} +#endif + +#if defined (__cplusplus) +} +#endif + + +/* Allow faster testing for negative, zero, and positive. */ +#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0) +#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0) +#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0) + +/* When using GCC, optimize certain common comparisons. */ +#if defined (__GNUC__) && __GNUC__ >= 2 +#define mpz_cmp_ui(Z,UI) \ + (__builtin_constant_p (UI) && (UI) == 0 \ + ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI)) +#define mpz_cmp_si(Z,SI) \ + (__builtin_constant_p ((SI) >= 0) && (SI) >= 0 \ + ? mpz_cmp_ui (Z, __GMP_CAST (unsigned long, SI)) \ + : _mpz_cmp_si (Z,SI)) +#define mpq_cmp_ui(Q,NUI,DUI) \ + (__builtin_constant_p (NUI) && (NUI) == 0 ? mpq_sgn (Q) \ + : __builtin_constant_p ((NUI) == (DUI)) && (NUI) == (DUI) \ + ? mpz_cmp (mpq_numref (Q), mpq_denref (Q)) \ + : _mpq_cmp_ui (Q,NUI,DUI)) +#define mpq_cmp_si(q,n,d) \ + (__builtin_constant_p ((n) >= 0) && (n) >= 0 \ + ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \ + : _mpq_cmp_si (q, n, d)) +#else +#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI) +#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI) +#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI) +#define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d) +#endif + + +/* Using "&" rather than "&&" means these can come out branch-free. Every + mpz_t has at least one limb allocated, so fetching the low limb is always + allowed. */ +#define mpz_odd_p(z) (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0])) +#define mpz_even_p(z) (! mpz_odd_p (z)) + + +/**************** C++ routines ****************/ + +#ifdef __cplusplus +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr); +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr); +__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr); +__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr); +#endif + + +/* Source-level compatibility with GMP 2 and earlier. */ +#define mpn_divmod(qp,np,nsize,dp,dsize) \ + mpn_divrem (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dp, dsize) + +/* Source-level compatibility with GMP 1. */ +#define mpz_mdiv mpz_fdiv_q +#define mpz_mdivmod mpz_fdiv_qr +#define mpz_mmod mpz_fdiv_r +#define mpz_mdiv_ui mpz_fdiv_q_ui +#define mpz_mdivmod_ui(q,r,n,d) \ + (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d)) +#define mpz_mmod_ui(r,n,d) \ + (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d)) + +/* Useful synonyms, but not quite compatible with GMP 1. */ +#define mpz_div mpz_fdiv_q +#define mpz_divmod mpz_fdiv_qr +#define mpz_div_ui mpz_fdiv_q_ui +#define mpz_divmod_ui mpz_fdiv_qr_ui +#define mpz_div_2exp mpz_fdiv_q_2exp +#define mpz_mod_2exp mpz_fdiv_r_2exp + +enum +{ + GMP_ERROR_NONE = 0, + GMP_ERROR_UNSUPPORTED_ARGUMENT = 1, + GMP_ERROR_DIVISION_BY_ZERO = 2, + GMP_ERROR_SQRT_OF_NEGATIVE = 4, + GMP_ERROR_INVALID_ARGUMENT = 8, + GMP_ERROR_MPZ_OVERFLOW = 16 +}; + +/* Define CC and CFLAGS which were used to build this version of GMP */ +#define __GMP_CC "x86_64-w64-mingw32-gcc" +#define __GMP_CFLAGS "-O2 -pedantic -fomit-frame-pointer -m64 -mtune=k8 -march=k8" + +/* Major version number is the value of __GNU_MP__ too, above. */ +#define __GNU_MP_VERSION 6 +#define __GNU_MP_VERSION_MINOR 3 +#define __GNU_MP_VERSION_PATCHLEVEL 0 +#define __GNU_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL) + +#define __GMP_H__ +#endif /* __GMP_H__ */ diff --git a/vere/ext/gmp/gen/x86_64-windows/mp_bases.h b/vere/ext/gmp/gen/x86_64-windows/mp_bases.h new file mode 100644 index 0000000..08ede78 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mp_bases.h @@ -0,0 +1,13 @@ +/* This file generated by gen-bases.c - DO NOT EDIT. */ + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +/* mp_bases[10] data, as literal values */ +#define MP_BASES_CHARS_PER_LIMB_10 19 +#define MP_BASES_BIG_BASE_CTZ_10 19 +#define MP_BASES_BIG_BASE_10 CNST_LIMB(0x8ac7230489e80000) +#define MP_BASES_BIG_BASE_INVERTED_10 CNST_LIMB(0xd83c94fb6d2ac34a) +#define MP_BASES_BIG_BASE_BINVERTED_10 CNST_LIMB(0x26b172506559ce15) +#define MP_BASES_NORMALIZATION_STEPS_10 0 diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/add_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/add_n.s new file mode 100644 index 0000000..a46b76b --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/add_n.s @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_add_nc + + .def __gmpn_add_nc + .scl 2 + .type 32 + .endef +__gmpn_add_nc: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + mov %ecx, %eax + shr $2, %rcx + and $3, %eax + bt $0, %r8 + jrcxz Llt4 + + mov (%rsi), %r8 + mov 8(%rsi), %r9 + dec %rcx + jmp Lmid + + + .align 16, 0x90 + .globl __gmpn_add_n + + .def __gmpn_add_n + .scl 2 + .type 32 + .endef +__gmpn_add_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov %ecx, %eax + shr $2, %rcx + and $3, %eax + jrcxz Llt4 + + mov (%rsi), %r8 + mov 8(%rsi), %r9 + dec %rcx + jmp Lmid + +Llt4: dec %eax + mov (%rsi), %r8 + jnz L2 + adc (%rdx), %r8 + mov %r8, (%rdi) + adc %eax, %eax + pop %rsi + pop %rdi + ret + +L2: dec %eax + mov 8(%rsi), %r9 + jnz L3 + adc (%rdx), %r8 + adc 8(%rdx), %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + adc %eax, %eax + pop %rsi + pop %rdi + ret + +L3: mov 16(%rsi), %r10 + adc (%rdx), %r8 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + setc %al + pop %rsi + pop %rdi + ret + + .align 16, 0x90 +Ltop: adc (%rdx), %r8 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + adc 24(%rdx), %r11 + mov %r8, (%rdi) + lea 32(%rsi), %rsi + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + dec %rcx + mov %r11, 24(%rdi) + lea 32(%rdx), %rdx + mov (%rsi), %r8 + mov 8(%rsi), %r9 + lea 32(%rdi), %rdi +Lmid: mov 16(%rsi), %r10 + mov 24(%rsi), %r11 + jnz Ltop + +Lend: lea 32(%rsi), %rsi + adc (%rdx), %r8 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + adc 24(%rdx), %r11 + lea 32(%rdx), %rdx + mov %r8, (%rdi) + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + mov %r11, 24(%rdi) + lea 32(%rdi), %rdi + + inc %eax + dec %eax + jnz Llt4 + adc %eax, %eax + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/addaddmul_1msb0.s b/vere/ext/gmp/gen/x86_64-windows/mpn/addaddmul_1msb0.s new file mode 100644 index 0000000..2757eac --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/addaddmul_1msb0.s @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addaddmul_1msb0 + + .def __gmpn_addaddmul_1msb0 + .scl 2 + .type 32 + .endef +__gmpn_addaddmul_1msb0: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + mov 64(%rsp), %r9 + push %rbp + + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rbp + lea (%rdi,%rcx,8), %rdi + neg %rcx + + mov (%rsi,%rcx,8), %rax + mul %r8 + mov %rax, %r11 + mov (%rbp,%rcx,8), %rax + mov %rdx, %r10 + add $3, %rcx + jns Lend + + push %r13 + + .align 16, 0x90 +Ltop: mul %r9 + add %rax, %r11 + mov -16(%rsi,%rcx,8), %rax + adc %rdx, %r10 + mov %r11, -24(%rdi,%rcx,8) + mul %r8 + add %rax, %r10 + mov -16(%rbp,%rcx,8), %rax + mov $0, %r13d + adc %rdx, %r13 + mul %r9 + add %rax, %r10 + mov -8(%rsi,%rcx,8), %rax + adc %rdx, %r13 + mov %r10, -16(%rdi,%rcx,8) + mul %r8 + add %rax, %r13 + mov -8(%rbp,%rcx,8), %rax + mov $0, %r11d + adc %rdx, %r11 + mul %r9 + add %rax, %r13 + adc %rdx, %r11 + mov (%rsi,%rcx,8), %rax + mul %r8 + add %rax, %r11 + mov %r13, -8(%rdi,%rcx,8) + mov (%rbp,%rcx,8), %rax + mov $0, %r10d + adc %rdx, %r10 + add $3, %rcx + js Ltop + + pop %r13 + +Lend: mul %r9 + add %rax, %r11 + adc %rdx, %r10 + cmp $1, %ecx + ja Ltwo + mov -16(%rsi,%rcx,8), %rax + mov %r11, -24(%rdi,%rcx,8) + mov %r10, %r11 + jz Lone + +Lnul: mul %r8 + add %rax, %r10 + mov -16(%rbp), %rax + mov $0, %r11d + adc %rdx, %r11 + mul %r9 + add %rax, %r10 + mov -8(%rsi), %rax + adc %rdx, %r11 + mov %r10, -16(%rdi) +Lone: mul %r8 + add %rax, %r11 + mov -8(%rbp), %rax + mov $0, %r10d + adc %rdx, %r10 + mul %r9 + add %rax, %r11 + adc %rdx, %r10 + +Ltwo: mov %r11, -8(%rdi) + mov %r10, %rax +Lret: pop %rbp + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/addlsh1_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/addlsh1_n.s new file mode 100644 index 0000000..a72f5e6 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/addlsh1_n.s @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addlsh1_n + + .def __gmpn_addlsh1_n + .scl 2 + .type 32 + .endef +__gmpn_addlsh1_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %rbp + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rdx + neg %rcx + xor %ebp, %ebp + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: add %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + mov 16(%rdx,%rcx,8), %r10 + adc %r10, %r10 + sbb %eax, %eax + add (%rsi,%rcx,8), %r8 + adc 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) + adc 16(%rsi,%rcx,8), %r10 + mov %r10, 16(%rdi,%rcx,8) + sbb %ebp, %ebp + add $3, %rcx + jmp Lent + +Lb10: add %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + sbb %eax, %eax + add (%rsi,%rcx,8), %r8 + adc 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) + sbb %ebp, %ebp + add $2, %rcx + jmp Lent + +Lb01: add %r8, %r8 + sbb %eax, %eax + add (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + sbb %ebp, %ebp + inc %rcx +Lent: jns Lend + + .align 16, 0x90 +Ltop: add %eax, %eax + + mov (%rdx,%rcx,8), %r8 +Lb00: adc %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + mov 16(%rdx,%rcx,8), %r10 + adc %r10, %r10 + mov 24(%rdx,%rcx,8), %r11 + adc %r11, %r11 + + sbb %eax, %eax + add %ebp, %ebp + + adc (%rsi,%rcx,8), %r8 + nop + adc 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) + adc 16(%rsi,%rcx,8), %r10 + adc 24(%rsi,%rcx,8), %r11 + mov %r10, 16(%rdi,%rcx,8) + mov %r11, 24(%rdi,%rcx,8) + + sbb %ebp, %ebp + add $4, %rcx + js Ltop + +Lend: + + add %ebp, %eax + neg %eax + + + pop %rbp + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/addlsh2_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/addlsh2_n.s new file mode 100644 index 0000000..b5e6266 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/addlsh2_n.s @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addlsh2_n + + .def __gmpn_addlsh2_n + .scl 2 + .type 32 + .endef +__gmpn_addlsh2_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %r12 + push %r13 + push %r14 + push %r15 + + mov (%rdx), %r8 + lea (,%r8,4), %r12 + shr $62, %r8 + + mov %ecx, %eax + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rdx + neg %rcx + and $3, %al + je Lb00 + cmp $2, %al + jc Lb01 + je Lb10 + +Lb11: mov 8(%rdx,%rcx,8), %r10 + lea (%r8,%r10,4), %r14 + shr $62, %r10 + mov 16(%rdx,%rcx,8), %r11 + lea (%r10,%r11,4), %r15 + shr $62, %r11 + add (%rsi,%rcx,8), %r12 + adc 8(%rsi,%rcx,8), %r14 + adc 16(%rsi,%rcx,8), %r15 + sbb %eax, %eax + mov %r12, (%rdi,%rcx,8) + mov %r14, 8(%rdi,%rcx,8) + mov %r15, 16(%rdi,%rcx,8) + add $3, %rcx + js Ltop + jmp Lend + +Lb01: mov %r8, %r11 + add (%rsi,%rcx,8), %r12 + sbb %eax, %eax + mov %r12, (%rdi,%rcx,8) + add $1, %rcx + js Ltop + jmp Lend + +Lb10: mov 8(%rdx,%rcx,8), %r11 + lea (%r8,%r11,4), %r15 + shr $62, %r11 + add (%rsi,%rcx,8), %r12 + adc 8(%rsi,%rcx,8), %r15 + sbb %eax, %eax + mov %r12, (%rdi,%rcx,8) + mov %r15, 8(%rdi,%rcx,8) + add $2, %rcx + js Ltop + jmp Lend + +Lb00: mov 8(%rdx,%rcx,8), %r9 + mov 16(%rdx,%rcx,8), %r10 + jmp Le00 + + .align 16, 0x90 +Ltop: mov 16(%rdx,%rcx,8), %r10 + mov (%rdx,%rcx,8), %r8 + mov 8(%rdx,%rcx,8), %r9 + lea (%r11,%r8,4), %r12 + shr $62, %r8 +Le00: lea (%r8,%r9,4), %r13 + shr $62, %r9 + mov 24(%rdx,%rcx,8), %r11 + lea (%r9,%r10,4), %r14 + shr $62, %r10 + lea (%r10,%r11,4), %r15 + shr $62, %r11 + add %eax, %eax + adc (%rsi,%rcx,8), %r12 + adc 8(%rsi,%rcx,8), %r13 + adc 16(%rsi,%rcx,8), %r14 + adc 24(%rsi,%rcx,8), %r15 + mov %r12, (%rdi,%rcx,8) + mov %r13, 8(%rdi,%rcx,8) + mov %r14, 16(%rdi,%rcx,8) + sbb %eax, %eax + mov %r15, 24(%rdi,%rcx,8) + add $4, %rcx + js Ltop +Lend: + + + sub %r11d, %eax + neg %eax + + pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rsi + pop %rdi + ret + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/addlsh_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/addlsh_n.s new file mode 100644 index 0000000..5cfbe9e --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/addlsh_n.s @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addlsh_n + + .def __gmpn_addlsh_n + .scl 2 + .type 32 + .endef +__gmpn_addlsh_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8d + push %r12 + push %rbp + push %rbx + + mov (%rdx), %rax + + mov $0, %ebp + sub %rcx, %rbp + + lea -16(%rsi,%rcx,8), %rsi + lea -16(%rdi,%rcx,8), %rdi + lea 16(%rdx,%rcx,8), %r12 + + mov %rcx, %r9 + + mov %r8, %rcx + mov $1, %r8d + shl %cl, %r8 + + mul %r8 + + and $3, %r9d + jz Lb0 + cmp $2, %r9d + jc Lb1 + jz Lb2 + +Lb3: mov %rax, %r11 + add 16(%rsi,%rbp,8), %r11 + mov -8(%r12,%rbp,8), %rax + sbb %ecx, %ecx + mov %rdx, %rbx + mul %r8 + or %rax, %rbx + mov (%r12,%rbp,8), %rax + mov %rdx, %r9 + mul %r8 + or %rax, %r9 + add $3, %rbp + jnz Llo3 + jmp Lcj3 + +Lb2: mov %rax, %rbx + mov -8(%r12,%rbp,8), %rax + mov %rdx, %r9 + mul %r8 + or %rax, %r9 + add $2, %rbp + jz Lcj2 + mov %rdx, %r10 + mov -16(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r10 + xor %ecx, %ecx + jmp Llo2 + +Lb1: mov %rax, %r9 + mov %rdx, %r10 + add $1, %rbp + jnz Lgt1 + add 8(%rsi,%rbp,8), %r9 + jmp Lcj1 +Lgt1: mov -16(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r10 + mov %rdx, %r11 + mov -8(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r11 + add 8(%rsi,%rbp,8), %r9 + adc 16(%rsi,%rbp,8), %r10 + adc 24(%rsi,%rbp,8), %r11 + mov (%r12,%rbp,8), %rax + sbb %ecx, %ecx + jmp Llo1 + +Lb0: mov %rax, %r10 + mov %rdx, %r11 + mov -8(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r11 + add 16(%rsi,%rbp,8), %r10 + adc 24(%rsi,%rbp,8), %r11 + mov (%r12,%rbp,8), %rax + sbb %ecx, %ecx + mov %rdx, %rbx + mul %r8 + or %rax, %rbx + mov 8(%r12,%rbp,8), %rax + add $4, %rbp + jz Lend + + .align 8, 0x90 +Ltop: mov %rdx, %r9 + mul %r8 + or %rax, %r9 + mov %r10, -16(%rdi,%rbp,8) +Llo3: mov %rdx, %r10 + mov -16(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r10 + mov %r11, -8(%rdi,%rbp,8) +Llo2: mov %rdx, %r11 + mov -8(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r11 + add %ecx, %ecx + adc (%rsi,%rbp,8), %rbx + adc 8(%rsi,%rbp,8), %r9 + adc 16(%rsi,%rbp,8), %r10 + adc 24(%rsi,%rbp,8), %r11 + mov (%r12,%rbp,8), %rax + sbb %ecx, %ecx + mov %rbx, (%rdi,%rbp,8) +Llo1: mov %rdx, %rbx + mul %r8 + or %rax, %rbx + mov %r9, 8(%rdi,%rbp,8) +Llo0: mov 8(%r12,%rbp,8), %rax + add $4, %rbp + jnz Ltop + +Lend: mov %rdx, %r9 + mul %r8 + or %rax, %r9 + mov %r10, -16(%rdi,%rbp,8) +Lcj3: mov %r11, -8(%rdi,%rbp,8) +Lcj2: add %ecx, %ecx + adc (%rsi,%rbp,8), %rbx + adc 8(%rsi,%rbp,8), %r9 + mov %rbx, (%rdi,%rbp,8) +Lcj1: mov %r9, 8(%rdi,%rbp,8) + mov %rdx, %rax + adc $0, %rax + pop %rbx + pop %rbp + pop %r12 + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/addmul_1.s b/vere/ext/gmp/gen/x86_64-windows/mpn/addmul_1.s new file mode 100644 index 0000000..3a2880c --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/addmul_1.s @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addmul_1 + + .def __gmpn_addmul_1 + .scl 2 + .type 32 + .endef +__gmpn_addmul_1: + + +push %rsi +push %rdi +mov %rdx, %rsi + + mov (%rsi), %rax + push %rbx + + mov %r8, %rbx + mul %r9 + + + and $3, %ebx + jz Lb0 + cmp $2, %ebx + jz Lb2 + jg Lb3 + +Lb1: dec %r8 + jne Lgt1 + add %rax, (%rcx) + jmp Lret +Lgt1: lea 8(%rsi,%r8,8), %rsi + lea -8(%rcx,%r8,8), %rcx + neg %r8 + xor %r10, %r10 + xor %ebx, %ebx + mov %rax, %rdi + mov (%rsi,%r8,8), %rax + mov %rdx, %r11 + jmp LL1 + +Lb0: lea (%rsi,%r8,8), %rsi + lea -16(%rcx,%r8,8), %rcx + neg %r8 + xor %r10, %r10 + mov %rax, %r11 + mov %rdx, %rbx + jmp LL0 + +Lb3: lea -8(%rsi,%r8,8), %rsi + lea -24(%rcx,%r8,8), %rcx + neg %r8 + mov %rax, %rbx + mov %rdx, %r10 + jmp LL3 + +Lb2: lea -16(%rsi,%r8,8), %rsi + lea -32(%rcx,%r8,8), %rcx + neg %r8 + xor %r11, %r11 + xor %ebx, %ebx + mov %rax, %r10 + mov 24(%rsi,%r8,8), %rax + mov %rdx, %rdi + jmp LL2 + + .align 16, 0x90 +Ltop: add %r10, (%rcx,%r8,8) + adc %rax, %rdi + mov (%rsi,%r8,8), %rax + adc %rdx, %r11 + mov $0, %r10d +LL1: mul %r9 + add %rdi, 8(%rcx,%r8,8) + adc %rax, %r11 + adc %rdx, %rbx +LL0: mov 8(%rsi,%r8,8), %rax + mul %r9 + add %r11, 16(%rcx,%r8,8) + adc %rax, %rbx + adc %rdx, %r10 +LL3: mov 16(%rsi,%r8,8), %rax + mul %r9 + add %rbx, 24(%rcx,%r8,8) + mov $0, %r11d + mov %r11, %rbx + adc %rax, %r10 + mov 24(%rsi,%r8,8), %rax + mov %r11, %rdi + adc %rdx, %rdi +LL2: mul %r9 + add $4, %r8 + js Ltop + + add %r10, (%rcx,%r8,8) + adc %rax, %rdi + adc %r11, %rdx + add %rdi, 8(%rcx,%r8,8) +Lret: adc $0, %rdx + mov %rdx, %rax + + pop %rbx +pop %rdi +pop %rsi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/addmul_2.s b/vere/ext/gmp/gen/x86_64-windows/mpn/addmul_2.s new file mode 100644 index 0000000..9b3b59d --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/addmul_2.s @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addmul_2 + + .def __gmpn_addmul_2 + .scl 2 + .type 32 + .endef +__gmpn_addmul_2: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov %rdx, %r11 + push %rbx + push %rbp + + mov 0(%rcx), %r8 + mov 8(%rcx), %r9 + + mov %edx, %ebx + mov (%rsi), %rax + lea -8(%rsi,%rdx,8), %rsi + lea -8(%rdi,%rdx,8), %rdi + mul %r8 + neg %r11 + and $3, %ebx + jz Lb0 + cmp $2, %ebx + jc Lb1 + jz Lb2 + +Lb3: mov %rax, %rcx + mov %rdx, %rbp + xor %r10d, %r10d + mov 8(%rsi,%r11,8), %rax + dec %r11 + jmp Llo3 + +Lb2: mov %rax, %rbp + mov 8(%rsi,%r11,8), %rax + mov %rdx, %r10 + xor %ebx, %ebx + add $-2, %r11 + jmp Llo2 + +Lb1: mov %rax, %r10 + mov 8(%rsi,%r11,8), %rax + mov %rdx, %rbx + xor %ecx, %ecx + inc %r11 + jmp Llo1 + +Lb0: mov $0, %r10d + mov %rax, %rbx + mov 8(%rsi,%r11,8), %rax + mov %rdx, %rcx + xor %ebp, %ebp + jmp Llo0 + + .align 32, 0x90 +Ltop: mov $0, %ecx + mul %r8 + add %rax, %r10 + mov (%rsi,%r11,8), %rax + adc %rdx, %rbx + adc $0, %ecx +Llo1: mul %r9 + add %r10, (%rdi,%r11,8) + mov $0, %r10d + adc %rax, %rbx + mov $0, %ebp + mov 8(%rsi,%r11,8), %rax + adc %rdx, %rcx + mul %r8 + add %rax, %rbx + mov 8(%rsi,%r11,8), %rax + adc %rdx, %rcx + adc $0, %ebp +Llo0: mul %r9 + add %rbx, 8(%rdi,%r11,8) + adc %rax, %rcx + adc %rdx, %rbp + mov 16(%rsi,%r11,8), %rax + mul %r8 + add %rax, %rcx + adc %rdx, %rbp + adc $0, %r10d + mov 16(%rsi,%r11,8), %rax +Llo3: mul %r9 + add %rcx, 16(%rdi,%r11,8) + adc %rax, %rbp + adc %rdx, %r10 + xor %ebx, %ebx + mov 24(%rsi,%r11,8), %rax + mul %r8 + add %rax, %rbp + mov 24(%rsi,%r11,8), %rax + adc %rdx, %r10 + adc $0, %ebx +Llo2: mul %r9 + add %rbp, 24(%rdi,%r11,8) + adc %rax, %r10 + adc %rdx, %rbx + mov 32(%rsi,%r11,8), %rax + add $4, %r11 + js Ltop + +Lend: xor %ecx, %ecx + mul %r8 + add %rax, %r10 + mov (%rsi), %rax + adc %rdx, %rbx + adc %ecx, %ecx + mul %r9 + add %r10, (%rdi) + adc %rax, %rbx + adc %rdx, %rcx + mov %rbx, 8(%rdi) + mov %rcx, %rax + + pop %rbp + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/and_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/and_n.s new file mode 100644 index 0000000..9dba50a --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/and_n.s @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_and_n + + .def __gmpn_and_n + .scl 2 + .type 32 + .endef +__gmpn_and_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: and (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp Le11 +Lb10: add $-2, %rcx + jmp Le10 +Lb01: and (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz Lret + +Ltop: mov (%rdx,%rcx,8), %r8 +Lb00: mov 8(%rdx,%rcx,8), %r9 + and (%rsi,%rcx,8), %r8 + and 8(%rsi,%rcx,8), %r9 + nop + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +Le11: mov 16(%rdx,%rcx,8), %r8 +Le10: mov 24(%rdx,%rcx,8), %r9 + and 16(%rsi,%rcx,8), %r8 + and 24(%rsi,%rcx,8), %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc Ltop + +Lret: pop %rsi + pop %rdi + ret + + + + + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/andn_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/andn_n.s new file mode 100644 index 0000000..c0c6acc --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/andn_n.s @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_andn_n + + .def __gmpn_andn_n + .scl 2 + .type 32 + .endef +__gmpn_andn_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov (%rdx), %r8 + not %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: and (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp Le11 +Lb10: add $-2, %rcx + jmp Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90 +Lb01: and (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz Lret + +Ltop: mov (%rdx,%rcx,8), %r8 + not %r8 +Lb00: mov 8(%rdx,%rcx,8), %r9 + not %r9 + and (%rsi,%rcx,8), %r8 + and 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +Le11: mov 16(%rdx,%rcx,8), %r8 + not %r8 +Le10: mov 24(%rdx,%rcx,8), %r9 + not %r9 + and 16(%rsi,%rcx,8), %r8 + and 24(%rsi,%rcx,8), %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc Ltop + +Lret: pop %rsi + pop %rdi + ret + + + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/bdiv_dbm1c.s b/vere/ext/gmp/gen/x86_64-windows/mpn/bdiv_dbm1c.s new file mode 100644 index 0000000..384066d --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/bdiv_dbm1c.s @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_bdiv_dbm1c + + .def __gmpn_bdiv_dbm1c + .scl 2 + .type 32 + .endef +__gmpn_bdiv_dbm1c: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + mov (%rsi), %rax + mov %rdx, %r9 + mov %edx, %r11d + mul %rcx + lea (%rsi,%r9,8), %rsi + lea (%rdi,%r9,8), %rdi + neg %r9 + and $3, %r11d + jz Llo0 + lea -4(%r9,%r11), %r9 + cmp $2, %r11d + jc Llo1 + jz Llo2 + jmp Llo3 + + .align 16, 0x90 +Ltop: mov (%rsi,%r9,8), %rax + mul %rcx +Llo0: sub %rax, %r8 + mov %r8, (%rdi,%r9,8) + sbb %rdx, %r8 + mov 8(%rsi,%r9,8), %rax + mul %rcx +Llo3: sub %rax, %r8 + mov %r8, 8(%rdi,%r9,8) + sbb %rdx, %r8 + mov 16(%rsi,%r9,8), %rax + mul %rcx +Llo2: sub %rax, %r8 + mov %r8, 16(%rdi,%r9,8) + sbb %rdx, %r8 + mov 24(%rsi,%r9,8), %rax + mul %rcx +Llo1: sub %rax, %r8 + mov %r8, 24(%rdi,%r9,8) + sbb %rdx, %r8 + add $4, %r9 + jnz Ltop + + mov %r8, %rax + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/bdiv_q_1.s b/vere/ext/gmp/gen/x86_64-windows/mpn/bdiv_q_1.s new file mode 100644 index 0000000..acdcfb3 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/bdiv_q_1.s @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_bdiv_q_1 + + .def __gmpn_bdiv_q_1 + .scl 2 + .type 32 + .endef +__gmpn_bdiv_q_1: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %rbx + + mov %rcx, %rax + xor %ecx, %ecx + mov %rdx, %r10 + + bt $0, %eax + jnc Levn + +Lodd: mov %rax, %rbx + shr %eax + and $127, %eax + + + lea __gmp_binvert_limb_table(%rip), %rdx + + + movzbl (%rdx,%rax), %eax + + mov %rbx, %r11 + + lea (%rax,%rax), %edx + imul %eax, %eax + imul %ebx, %eax + sub %eax, %edx + + lea (%rdx,%rdx), %eax + imul %edx, %edx + imul %ebx, %edx + sub %edx, %eax + + lea (%rax,%rax), %r8 + imul %rax, %rax + imul %rbx, %rax + sub %rax, %r8 + + jmp Lpi1 + +Levn: bsf %rax, %rcx + shr %cl, %rax + jmp Lodd + + + .globl __gmpn_pi1_bdiv_q_1 + + .def __gmpn_pi1_bdiv_q_1 + .scl 2 + .type 32 + .endef +__gmpn_pi1_bdiv_q_1: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + mov 64(%rsp), %r9 + push %rbx + + mov %rcx, %r11 + mov %rdx, %r10 + mov %r9, %rcx + +Lpi1: mov (%rsi), %rax + + dec %r10 + jz Lone + + mov 8(%rsi), %rdx + lea (%rsi,%r10,8), %rsi + lea (%rdi,%r10,8), %rdi + neg %r10 + + shrd %cl, %rdx, %rax + + xor %ebx, %ebx + jmp Lent + + .align 8, 0x90 +Ltop: + + + + + + + + mul %r11 + mov (%rsi,%r10,8), %rax + mov 8(%rsi,%r10,8), %r9 + shrd %cl, %r9, %rax + nop + sub %rbx, %rax + setc %bl + sub %rdx, %rax + adc $0, %ebx +Lent: imul %r8, %rax + mov %rax, (%rdi,%r10,8) + inc %r10 + jnz Ltop + + mul %r11 + mov (%rsi), %rax + shr %cl, %rax + sub %rbx, %rax + sub %rdx, %rax + imul %r8, %rax + mov %rax, (%rdi) + pop %rbx + pop %rsi + pop %rdi + ret + +Lone: shr %cl, %rax + imul %r8, %rax + mov %rax, (%rdi) + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/cnd_add_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/cnd_add_n.s new file mode 100644 index 0000000..681925a --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/cnd_add_n.s @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_cnd_add_n + + .def __gmpn_cnd_add_n + .scl 2 + .type 32 + .endef +__gmpn_cnd_add_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8d + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + + neg %rdi + sbb %rdi, %rdi + + lea (%rcx,%r8,8), %rcx + lea (%rdx,%r8,8), %rdx + lea (%rsi,%r8,8), %rsi + + mov %r8d, %eax + neg %r8 + and $3, %eax + jz Ltop + cmp $2, %eax + jc Lb1 + jz Lb2 + +Lb3: mov (%rcx,%r8,8), %r12 + mov 8(%rcx,%r8,8), %r13 + mov 16(%rcx,%r8,8), %r14 + and %rdi, %r12 + mov (%rdx,%r8,8), %r10 + and %rdi, %r13 + mov 8(%rdx,%r8,8), %rbx + and %rdi, %r14 + mov 16(%rdx,%r8,8), %rbp + add %r12, %r10 + mov %r10, (%rsi,%r8,8) + adc %r13, %rbx + mov %rbx, 8(%rsi,%r8,8) + adc %r14, %rbp + mov %rbp, 16(%rsi,%r8,8) + sbb %eax, %eax + add $3, %r8 + js Ltop + jmp Lend + +Lb2: mov (%rcx,%r8,8), %r12 + mov 8(%rcx,%r8,8), %r13 + mov (%rdx,%r8,8), %r10 + and %rdi, %r12 + mov 8(%rdx,%r8,8), %rbx + and %rdi, %r13 + add %r12, %r10 + mov %r10, (%rsi,%r8,8) + adc %r13, %rbx + mov %rbx, 8(%rsi,%r8,8) + sbb %eax, %eax + add $2, %r8 + js Ltop + jmp Lend + +Lb1: mov (%rcx,%r8,8), %r12 + mov (%rdx,%r8,8), %r10 + and %rdi, %r12 + add %r12, %r10 + mov %r10, (%rsi,%r8,8) + sbb %eax, %eax + add $1, %r8 + jns Lend + + .align 16, 0x90 +Ltop: mov (%rcx,%r8,8), %r12 + mov 8(%rcx,%r8,8), %r13 + mov 16(%rcx,%r8,8), %r14 + mov 24(%rcx,%r8,8), %r11 + and %rdi, %r12 + mov (%rdx,%r8,8), %r10 + and %rdi, %r13 + mov 8(%rdx,%r8,8), %rbx + and %rdi, %r14 + mov 16(%rdx,%r8,8), %rbp + and %rdi, %r11 + mov 24(%rdx,%r8,8), %r9 + add %eax, %eax + adc %r12, %r10 + mov %r10, (%rsi,%r8,8) + adc %r13, %rbx + mov %rbx, 8(%rsi,%r8,8) + adc %r14, %rbp + mov %rbp, 16(%rsi,%r8,8) + adc %r11, %r9 + mov %r9, 24(%rsi,%r8,8) + sbb %eax, %eax + add $4, %r8 + js Ltop + +Lend: neg %eax + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/cnd_sub_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/cnd_sub_n.s new file mode 100644 index 0000000..d4652ca --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/cnd_sub_n.s @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_cnd_sub_n + + .def __gmpn_cnd_sub_n + .scl 2 + .type 32 + .endef +__gmpn_cnd_sub_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8d + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + + neg %rdi + sbb %rdi, %rdi + + lea (%rcx,%r8,8), %rcx + lea (%rdx,%r8,8), %rdx + lea (%rsi,%r8,8), %rsi + + mov %r8d, %eax + neg %r8 + and $3, %eax + jz Ltop + cmp $2, %eax + jc Lb1 + jz Lb2 + +Lb3: mov (%rcx,%r8,8), %r12 + mov 8(%rcx,%r8,8), %r13 + mov 16(%rcx,%r8,8), %r14 + and %rdi, %r12 + mov (%rdx,%r8,8), %r10 + and %rdi, %r13 + mov 8(%rdx,%r8,8), %rbx + and %rdi, %r14 + mov 16(%rdx,%r8,8), %rbp + sub %r12, %r10 + mov %r10, (%rsi,%r8,8) + sbb %r13, %rbx + mov %rbx, 8(%rsi,%r8,8) + sbb %r14, %rbp + mov %rbp, 16(%rsi,%r8,8) + sbb %eax, %eax + add $3, %r8 + js Ltop + jmp Lend + +Lb2: mov (%rcx,%r8,8), %r12 + mov 8(%rcx,%r8,8), %r13 + mov (%rdx,%r8,8), %r10 + and %rdi, %r12 + mov 8(%rdx,%r8,8), %rbx + and %rdi, %r13 + sub %r12, %r10 + mov %r10, (%rsi,%r8,8) + sbb %r13, %rbx + mov %rbx, 8(%rsi,%r8,8) + sbb %eax, %eax + add $2, %r8 + js Ltop + jmp Lend + +Lb1: mov (%rcx,%r8,8), %r12 + mov (%rdx,%r8,8), %r10 + and %rdi, %r12 + sub %r12, %r10 + mov %r10, (%rsi,%r8,8) + sbb %eax, %eax + add $1, %r8 + jns Lend + + .align 16, 0x90 +Ltop: mov (%rcx,%r8,8), %r12 + mov 8(%rcx,%r8,8), %r13 + mov 16(%rcx,%r8,8), %r14 + mov 24(%rcx,%r8,8), %r11 + and %rdi, %r12 + mov (%rdx,%r8,8), %r10 + and %rdi, %r13 + mov 8(%rdx,%r8,8), %rbx + and %rdi, %r14 + mov 16(%rdx,%r8,8), %rbp + and %rdi, %r11 + mov 24(%rdx,%r8,8), %r9 + add %eax, %eax + sbb %r12, %r10 + mov %r10, (%rsi,%r8,8) + sbb %r13, %rbx + mov %rbx, 8(%rsi,%r8,8) + sbb %r14, %rbp + mov %rbp, 16(%rsi,%r8,8) + sbb %r11, %r9 + mov %r9, 24(%rsi,%r8,8) + sbb %eax, %eax + add $4, %r8 + js Ltop + +Lend: neg %eax + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/com.s b/vere/ext/gmp/gen/x86_64-windows/mpn/com.s new file mode 100644 index 0000000..f193cd2 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/com.s @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_com + + .def __gmpn_com + .scl 2 + .type 32 + .endef +__gmpn_com: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + + movq (%rsi), %r8 + movl %edx, %eax + leaq (%rsi,%rdx,8), %rsi + leaq (%rdi,%rdx,8), %rdi + negq %rdx + andl $3, %eax + je Lb00 + cmpl $2, %eax + jc Lb01 + je Lb10 + +Lb11: notq %r8 + movq %r8, (%rdi,%rdx,8) + decq %rdx + jmp Le11 +Lb10: addq $-2, %rdx + jmp Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90 +Lb01: notq %r8 + movq %r8, (%rdi,%rdx,8) + incq %rdx + jz Lret + +Loop: movq (%rsi,%rdx,8), %r8 +Lb00: movq 8(%rsi,%rdx,8), %r9 + notq %r8 + notq %r9 + movq %r8, (%rdi,%rdx,8) + movq %r9, 8(%rdi,%rdx,8) +Le11: movq 16(%rsi,%rdx,8), %r8 +Le10: movq 24(%rsi,%rdx,8), %r9 + notq %r8 + notq %r9 + movq %r8, 16(%rdi,%rdx,8) + movq %r9, 24(%rdi,%rdx,8) + addq $4, %rdx + jnc Loop +Lret: pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/copyd.s b/vere/ext/gmp/gen/x86_64-windows/mpn/copyd.s new file mode 100644 index 0000000..43c6257 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/copyd.s @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 64, 0x90 + .globl __gmpn_copyd + + .def __gmpn_copyd + .scl 2 + .type 32 + .endef +__gmpn_copyd: + + lea -8(%rdx,%r8,8), %rdx + lea (%rcx,%r8,8), %rcx + sub $4, %r8 + jc Lend + nop + +Ltop: mov (%rdx), %rax + mov -8(%rdx), %r9 + lea -32(%rcx), %rcx + mov -16(%rdx), %r10 + mov -24(%rdx), %r11 + lea -32(%rdx), %rdx + mov %rax, 24(%rcx) + mov %r9, 16(%rcx) + sub $4, %r8 + mov %r10, 8(%rcx) + mov %r11, (%rcx) + jnc Ltop + +Lend: shr %r8d + jnc 1f + mov (%rdx), %rax + mov %rax, -8(%rcx) + lea -8(%rcx), %rcx + lea -8(%rdx), %rdx +1: shr %r8d + jnc 1f + mov (%rdx), %rax + mov -8(%rdx), %r9 + mov %rax, -8(%rcx) + mov %r9, -16(%rcx) +1: ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/copyi.s b/vere/ext/gmp/gen/x86_64-windows/mpn/copyi.s new file mode 100644 index 0000000..0849b37 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/copyi.s @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 64, 0x90 + .byte 0,0,0,0,0,0 + .globl __gmpn_copyi + + .def __gmpn_copyi + .scl 2 + .type 32 + .endef +__gmpn_copyi: + + lea -8(%rcx), %rcx + sub $4, %r8 + jc Lend + +Ltop: mov (%rdx), %rax + mov 8(%rdx), %r9 + lea 32(%rcx), %rcx + mov 16(%rdx), %r10 + mov 24(%rdx), %r11 + lea 32(%rdx), %rdx + mov %rax, -24(%rcx) + mov %r9, -16(%rcx) + sub $4, %r8 + mov %r10, -8(%rcx) + mov %r11, (%rcx) + jnc Ltop + +Lend: shr %r8d + jnc 1f + mov (%rdx), %rax + mov %rax, 8(%rcx) + lea 8(%rcx), %rcx + lea 8(%rdx), %rdx +1: shr %r8d + jnc 1f + mov (%rdx), %rax + mov 8(%rdx), %r9 + mov %rax, 8(%rcx) + mov %r9, 16(%rcx) +1: ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/div_qr_2n_pi1.s b/vere/ext/gmp/gen/x86_64-windows/mpn/div_qr_2n_pi1.s new file mode 100644 index 0000000..fa2d87a --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/div_qr_2n_pi1.s @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_div_qr_2n_pi1 + + .def __gmpn_div_qr_2n_pi1 + .scl 2 + .type 32 + .endef +__gmpn_div_qr_2n_pi1: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + mov 64(%rsp), %r9 + + mov 72(%rsp), %r10 + mov %rdx, %r11 + push %r15 + push %r14 + push %r13 + push %r12 + push %rbx + + mov -16(%r11, %rcx, 8), %r12 + mov -8(%r11, %rcx, 8), %rbx + + mov %r12, %r14 + mov %rbx, %r13 + sub %r9, %r14 + sbb %r8, %r13 + cmovnc %r14, %r12 + cmovnc %r13, %rbx + + sbb %rax, %rax + inc %rax + push %rax + lea -2(%rcx), %rcx + mov %r8, %r15 + neg %r15 + + jmp Lnext + + .align 16, 0x90 +Lloop: + + + + mov %r10, %rax + mul %rbx + mov %r12, %r14 + add %rax, %r14 + adc %rbx, %rdx + mov %rdx, %r13 + imul %r15, %rdx + mov %r9, %rax + lea (%rdx, %r12), %rbx + mul %r13 + mov (%r11, %rcx, 8), %r12 + sub %r9, %r12 + sbb %r8, %rbx + sub %rax, %r12 + sbb %rdx, %rbx + xor %eax, %eax + xor %edx, %edx + cmp %r14, %rbx + cmovnc %r9, %rax + cmovnc %r8, %rdx + adc $0, %r13 + nop + add %rax, %r12 + adc %rdx, %rbx + cmp %r8, %rbx + jae Lfix +Lbck: + mov %r13, (%rdi, %rcx, 8) +Lnext: + sub $1, %rcx + jnc Lloop +Lend: + mov %rbx, 8(%rsi) + mov %r12, (%rsi) + + + pop %rax + + pop %rbx + pop %r12 + pop %r13 + pop %r14 + pop %r15 + pop %rsi + pop %rdi + ret + +Lfix: + seta %dl + cmp %r9, %r12 + setae %al + orb %dl, %al + je Lbck + inc %r13 + sub %r9, %r12 + sbb %r8, %rbx + jmp Lbck + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/dive_1.s b/vere/ext/gmp/gen/x86_64-windows/mpn/dive_1.s new file mode 100644 index 0000000..dba7cb5 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/dive_1.s @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_divexact_1 + + .def __gmpn_divexact_1 + .scl 2 + .type 32 + .endef +__gmpn_divexact_1: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %rbx + + mov %rcx, %rax + xor %ecx, %ecx + mov %rdx, %r8 + + bt $0, %eax + jnc Levn + +Lodd: mov %rax, %rbx + shr %eax + and $127, %eax + + + lea __gmp_binvert_limb_table(%rip), %rdx + + + movzbl (%rdx,%rax), %eax + + mov %rbx, %r11 + + lea (%rax,%rax), %edx + imul %eax, %eax + imul %ebx, %eax + sub %eax, %edx + + lea (%rdx,%rdx), %eax + imul %edx, %edx + imul %ebx, %edx + sub %edx, %eax + + lea (%rax,%rax), %r10 + imul %rax, %rax + imul %rbx, %rax + sub %rax, %r10 + + lea (%rsi,%r8,8), %rsi + lea -8(%rdi,%r8,8), %rdi + neg %r8 + + mov (%rsi,%r8,8), %rax + + inc %r8 + jz Lone + + mov (%rsi,%r8,8), %rdx + + shrd %cl, %rdx, %rax + + xor %ebx, %ebx + jmp Lent + +Levn: bsf %rax, %rcx + shr %cl, %rax + jmp Lodd + + .align 8, 0x90 +Ltop: + + + + + + + + + + + mul %r11 + mov -8(%rsi,%r8,8), %rax + mov (%rsi,%r8,8), %r9 + shrd %cl, %r9, %rax + nop + sub %rbx, %rax + setc %bl + sub %rdx, %rax + adc $0, %rbx +Lent: imul %r10, %rax + mov %rax, (%rdi,%r8,8) + inc %r8 + jnz Ltop + + mul %r11 + mov -8(%rsi), %rax + shr %cl, %rax + sub %rbx, %rax + sub %rdx, %rax + imul %r10, %rax + mov %rax, (%rdi) + pop %rbx + pop %rsi + pop %rdi + ret + +Lone: shr %cl, %rax + imul %r10, %rax + mov %rax, (%rdi) + pop %rbx + pop %rsi + pop %rdi + ret + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/divrem_1.s b/vere/ext/gmp/gen/x86_64-windows/mpn/divrem_1.s new file mode 100644 index 0000000..3670b33 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/divrem_1.s @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_preinv_divrem_1 + + .def __gmpn_preinv_divrem_1 + .scl 2 + .type 32 + .endef +__gmpn_preinv_divrem_1: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + mov 64(%rsp), %r9 + xor %eax, %eax + push %r13 + push %r12 + push %rbp + push %rbx + + mov %rsi, %r12 + mov %rcx, %rbx + add %rsi, %rcx + mov %rdx, %rsi + + lea -8(%rdi,%rcx,8), %rdi + + test %r8, %r8 + js Lnent + + mov 104(%rsp), %cl + shl %cl, %r8 + jmp Luent + + + .align 16, 0x90 + .globl __gmpn_divrem_1 + + .def __gmpn_divrem_1 + .scl 2 + .type 32 + .endef +__gmpn_divrem_1: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + xor %eax, %eax + push %r13 + push %r12 + push %rbp + push %rbx + + mov %rsi, %r12 + mov %rcx, %rbx + add %rsi, %rcx + mov %rdx, %rsi + je Lret + + lea -8(%rdi,%rcx,8), %rdi + xor %ebp, %ebp + + test %r8, %r8 + jns Lunnormalized + +Lnormalized: + test %rbx, %rbx + je L8 + mov -8(%rsi,%rbx,8), %rbp + dec %rbx + mov %rbp, %rax + sub %r8, %rbp + cmovc %rax, %rbp + sbb %eax, %eax + inc %eax + mov %rax, (%rdi) + lea -8(%rdi), %rdi +L8: + + + push %r8 + + sub $32, %rsp + mov %r8, %rcx + + call __gmpn_invert_limb + add $32, %rsp + pop %r8 + + + + mov %rax, %r9 + mov %rbp, %rax + jmp Lnent + + .align 16, 0x90 +Lntop:mov (%rsi,%rbx,8), %r10 + mul %r9 + add %r10, %rax + adc %rbp, %rdx + mov %rax, %rbp + mov %rdx, %r13 + imul %r8, %rdx + sub %rdx, %r10 + mov %r8, %rax + add %r10, %rax + cmp %rbp, %r10 + cmovc %r10, %rax + adc $-1, %r13 + cmp %r8, %rax + jae Lnfx +Lnok: mov %r13, (%rdi) + sub $8, %rdi +Lnent:lea 1(%rax), %rbp + dec %rbx + jns Lntop + + xor %ecx, %ecx + jmp Lfrac + +Lnfx: sub %r8, %rax + inc %r13 + jmp Lnok + +Lunnormalized: + test %rbx, %rbx + je L44 + mov -8(%rsi,%rbx,8), %rax + cmp %r8, %rax + jae L44 + mov %rbp, (%rdi) + mov %rax, %rbp + lea -8(%rdi), %rdi + je Lret + dec %rbx +L44: + bsr %r8, %rcx + not %ecx + shl %cl, %r8 + shl %cl, %rbp + + push %rcx + + + push %r8 + + + sub $40, %rsp + mov %r8, %rcx + + call __gmpn_invert_limb + + add $40, %rsp + pop %r8 + + + pop %rcx + + mov %rax, %r9 + mov %rbp, %rax + test %rbx, %rbx + je Lfrac + +Luent:dec %rbx + mov (%rsi,%rbx,8), %rbp + neg %ecx + shr %cl, %rbp + neg %ecx + or %rbp, %rax + jmp Lent + + .align 16, 0x90 +Lutop:mov (%rsi,%rbx,8), %r10 + shl %cl, %rbp + neg %ecx + shr %cl, %r10 + neg %ecx + or %r10, %rbp + mul %r9 + add %rbp, %rax + adc %r11, %rdx + mov %rax, %r11 + mov %rdx, %r13 + imul %r8, %rdx + sub %rdx, %rbp + mov %r8, %rax + add %rbp, %rax + cmp %r11, %rbp + cmovc %rbp, %rax + adc $-1, %r13 + cmp %r8, %rax + jae Lufx +Luok: mov %r13, (%rdi) + sub $8, %rdi +Lent: mov (%rsi,%rbx,8), %rbp + dec %rbx + lea 1(%rax), %r11 + jns Lutop + +Luend:shl %cl, %rbp + mul %r9 + add %rbp, %rax + adc %r11, %rdx + mov %rax, %r11 + mov %rdx, %r13 + imul %r8, %rdx + sub %rdx, %rbp + mov %r8, %rax + add %rbp, %rax + cmp %r11, %rbp + cmovc %rbp, %rax + adc $-1, %r13 + cmp %r8, %rax + jae Lefx +Leok: mov %r13, (%rdi) + sub $8, %rdi + jmp Lfrac + +Lufx: sub %r8, %rax + inc %r13 + jmp Luok +Lefx: sub %r8, %rax + inc %r13 + jmp Leok + +Lfrac:mov %r8, %rbp + neg %rbp + jmp Lfent + + .align 16, 0x90 +Lftop:mul %r9 + add %r11, %rdx + mov %rax, %r11 + mov %rdx, %r13 + imul %rbp, %rdx + mov %r8, %rax + add %rdx, %rax + cmp %r11, %rdx + cmovc %rdx, %rax + adc $-1, %r13 + mov %r13, (%rdi) + sub $8, %rdi +Lfent:lea 1(%rax), %r11 + dec %r12 + jns Lftop + + shr %cl, %rax +Lret: pop %rbx + pop %rbp + pop %r12 + pop %r13 + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/divrem_2.s b/vere/ext/gmp/gen/x86_64-windows/mpn/divrem_2.s new file mode 100644 index 0000000..b7e63a3 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/divrem_2.s @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_divrem_2 + + .def __gmpn_divrem_2 + .scl 2 + .type 32 + .endef +__gmpn_divrem_2: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + push %r15 + push %r14 + push %r13 + push %r12 + lea -24(%rdx,%rcx,8), %r12 + mov %rsi, %r13 + push %rbp + mov %rdi, %rbp + push %rbx + mov 8(%r8), %r11 + mov 16(%r12), %rbx + mov (%r8), %r8 + mov 8(%r12), %r10 + + xor %r15d, %r15d + cmp %rbx, %r11 + ja L2 + setb %dl + cmp %r10, %r8 + setbe %al + orb %al, %dl + je L2 + inc %r15d + sub %r8, %r10 + sbb %r11, %rbx +L2: + lea -3(%rcx,%r13), %r14 + test %r14, %r14 + js Lend + + push %r8 + push %r10 + push %r11 + + mov %r11, %rcx + sub $32, %rsp + + call __gmpn_invert_limb + add $32, %rsp + pop %r11 + pop %r10 + pop %r8 + + mov %r11, %rdx + mov %rax, %rdi + imul %rax, %rdx + mov %rdx, %r9 + mul %r8 + xor %ecx, %ecx + add %r8, %r9 + adc $-1, %rcx + add %rdx, %r9 + adc $0, %rcx + js 2f +1: dec %rdi + sub %r11, %r9 + sbb $0, %rcx + jns 1b +2: + + lea (%rbp,%r14,8), %rbp + mov %r11, %rsi + neg %rsi + + + + + .align 16, 0x90 +Ltop: mov %rdi, %rax + mul %rbx + mov %r10, %rcx + add %rax, %rcx + adc %rbx, %rdx + mov %rdx, %r9 + imul %rsi, %rdx + mov %r8, %rax + lea (%rdx, %r10), %rbx + xor %r10d, %r10d + mul %r9 + cmp %r14, %r13 + jg L19 + mov (%r12), %r10 + sub $8, %r12 +L19: sub %r8, %r10 + sbb %r11, %rbx + sub %rax, %r10 + sbb %rdx, %rbx + xor %eax, %eax + xor %edx, %edx + cmp %rcx, %rbx + cmovnc %r8, %rax + cmovnc %r11, %rdx + adc $0, %r9 + nop + add %rax, %r10 + adc %rdx, %rbx + cmp %r11, %rbx + jae Lfix +Lbck: mov %r9, (%rbp) + sub $8, %rbp + dec %r14 + jns Ltop + +Lend: mov %r10, 8(%r12) + mov %rbx, 16(%r12) + pop %rbx + pop %rbp + pop %r12 + pop %r13 + pop %r14 + mov %r15, %rax + pop %r15 + pop %rsi + pop %rdi + ret + +Lfix: seta %dl + cmp %r8, %r10 + setae %al + orb %dl, %al + je Lbck + inc %r9 + sub %r8, %r10 + sbb %r11, %rbx + jmp Lbck + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/fib_table.c b/vere/ext/gmp/gen/x86_64-windows/mpn/fib_table.c new file mode 100644 index 0000000..a830475 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/fib_table.c @@ -0,0 +1,107 @@ +/* This file generated by gen-fib.c - DO NOT EDIT. */ + +#include "gmp.h" +#include "gmp-impl.h" + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +const mp_limb_t +__gmp_fib_table[FIB_TABLE_LIMIT+2] = { + CNST_LIMB (0x1), /* -1 */ + CNST_LIMB (0x0), /* 0 */ + CNST_LIMB (0x1), /* 1 */ + CNST_LIMB (0x1), /* 2 */ + CNST_LIMB (0x2), /* 3 */ + CNST_LIMB (0x3), /* 4 */ + CNST_LIMB (0x5), /* 5 */ + CNST_LIMB (0x8), /* 6 */ + CNST_LIMB (0xd), /* 7 */ + CNST_LIMB (0x15), /* 8 */ + CNST_LIMB (0x22), /* 9 */ + CNST_LIMB (0x37), /* 10 */ + CNST_LIMB (0x59), /* 11 */ + CNST_LIMB (0x90), /* 12 */ + CNST_LIMB (0xe9), /* 13 */ + CNST_LIMB (0x179), /* 14 */ + CNST_LIMB (0x262), /* 15 */ + CNST_LIMB (0x3db), /* 16 */ + CNST_LIMB (0x63d), /* 17 */ + CNST_LIMB (0xa18), /* 18 */ + CNST_LIMB (0x1055), /* 19 */ + CNST_LIMB (0x1a6d), /* 20 */ + CNST_LIMB (0x2ac2), /* 21 */ + CNST_LIMB (0x452f), /* 22 */ + CNST_LIMB (0x6ff1), /* 23 */ + CNST_LIMB (0xb520), /* 24 */ + CNST_LIMB (0x12511), /* 25 */ + CNST_LIMB (0x1da31), /* 26 */ + CNST_LIMB (0x2ff42), /* 27 */ + CNST_LIMB (0x4d973), /* 28 */ + CNST_LIMB (0x7d8b5), /* 29 */ + CNST_LIMB (0xcb228), /* 30 */ + CNST_LIMB (0x148add), /* 31 */ + CNST_LIMB (0x213d05), /* 32 */ + CNST_LIMB (0x35c7e2), /* 33 */ + CNST_LIMB (0x5704e7), /* 34 */ + CNST_LIMB (0x8cccc9), /* 35 */ + CNST_LIMB (0xe3d1b0), /* 36 */ + CNST_LIMB (0x1709e79), /* 37 */ + CNST_LIMB (0x2547029), /* 38 */ + CNST_LIMB (0x3c50ea2), /* 39 */ + CNST_LIMB (0x6197ecb), /* 40 */ + CNST_LIMB (0x9de8d6d), /* 41 */ + CNST_LIMB (0xff80c38), /* 42 */ + CNST_LIMB (0x19d699a5), /* 43 */ + CNST_LIMB (0x29cea5dd), /* 44 */ + CNST_LIMB (0x43a53f82), /* 45 */ + CNST_LIMB (0x6d73e55f), /* 46 */ + CNST_LIMB (0xb11924e1), /* 47 */ + CNST_LIMB (0x11e8d0a40), /* 48 */ + CNST_LIMB (0x1cfa62f21), /* 49 */ + CNST_LIMB (0x2ee333961), /* 50 */ + CNST_LIMB (0x4bdd96882), /* 51 */ + CNST_LIMB (0x7ac0ca1e3), /* 52 */ + CNST_LIMB (0xc69e60a65), /* 53 */ + CNST_LIMB (0x1415f2ac48), /* 54 */ + CNST_LIMB (0x207fd8b6ad), /* 55 */ + CNST_LIMB (0x3495cb62f5), /* 56 */ + CNST_LIMB (0x5515a419a2), /* 57 */ + CNST_LIMB (0x89ab6f7c97), /* 58 */ + CNST_LIMB (0xdec1139639), /* 59 */ + CNST_LIMB (0x1686c8312d0), /* 60 */ + CNST_LIMB (0x2472d96a909), /* 61 */ + CNST_LIMB (0x3af9a19bbd9), /* 62 */ + CNST_LIMB (0x5f6c7b064e2), /* 63 */ + CNST_LIMB (0x9a661ca20bb), /* 64 */ + CNST_LIMB (0xf9d297a859d), /* 65 */ + CNST_LIMB (0x19438b44a658), /* 66 */ + CNST_LIMB (0x28e0b4bf2bf5), /* 67 */ + CNST_LIMB (0x42244003d24d), /* 68 */ + CNST_LIMB (0x6b04f4c2fe42), /* 69 */ + CNST_LIMB (0xad2934c6d08f), /* 70 */ + CNST_LIMB (0x1182e2989ced1), /* 71 */ + CNST_LIMB (0x1c5575e509f60), /* 72 */ + CNST_LIMB (0x2dd8587da6e31), /* 73 */ + CNST_LIMB (0x4a2dce62b0d91), /* 74 */ + CNST_LIMB (0x780626e057bc2), /* 75 */ + CNST_LIMB (0xc233f54308953), /* 76 */ + CNST_LIMB (0x13a3a1c2360515), /* 77 */ + CNST_LIMB (0x1fc6e116668e68), /* 78 */ + CNST_LIMB (0x336a82d89c937d), /* 79 */ + CNST_LIMB (0x533163ef0321e5), /* 80 */ + CNST_LIMB (0x869be6c79fb562), /* 81 */ + CNST_LIMB (0xd9cd4ab6a2d747), /* 82 */ + CNST_LIMB (0x16069317e428ca9), /* 83 */ + CNST_LIMB (0x23a367c34e563f0), /* 84 */ + CNST_LIMB (0x39a9fadb327f099), /* 85 */ + CNST_LIMB (0x5d4d629e80d5489), /* 86 */ + CNST_LIMB (0x96f75d79b354522), /* 87 */ + CNST_LIMB (0xf444c01834299ab), /* 88 */ + CNST_LIMB (0x18b3c1d91e77decd), /* 89 */ + CNST_LIMB (0x27f80ddaa1ba7878), /* 90 */ + CNST_LIMB (0x40abcfb3c0325745), /* 91 */ + CNST_LIMB (0x68a3dd8e61eccfbd), /* 92 */ + CNST_LIMB (0xa94fad42221f2702), /* 93 */ +}; diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/gcd_11.s b/vere/ext/gmp/gen/x86_64-windows/mpn/gcd_11.s new file mode 100644 index 0000000..eaf48fd --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/gcd_11.s @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .section .rdata,"dr" + .align 64, 0x90 +ctz_table: + + .byte 7 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 5 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 6 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 5 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + + + + + + + + + + + .text + .align 64, 0x90 + .globl __gmpn_gcd_11 + + .def __gmpn_gcd_11 + .scl 2 + .type 32 + .endef +__gmpn_gcd_11: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + + + lea ctz_table(%rip), %r8 + + jmp Lent + + .align 16, 0x90 +Ltop: cmovc %rdx, %rdi + cmovc %rax, %rsi +Lmid: and $127, %edx + movzbl (%r8,%rdx), %ecx + jz Lshift_alot + shr %cl, %rdi +Lent: mov %rdi, %rax + mov %rsi, %rdx + sub %rdi, %rdx + sub %rsi, %rdi + jnz Ltop + +Lend: + + pop %rsi + pop %rdi + ret + +Lshift_alot: + shr $7, %rdi + mov %rdi, %rdx + jmp Lmid + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/hamdist.s b/vere/ext/gmp/gen/x86_64-windows/mpn/hamdist.s new file mode 100644 index 0000000..ae1c563 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/hamdist.s @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_hamdist + + .def __gmpn_hamdist + .scl 2 + .type 32 + .endef +__gmpn_hamdist: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + + push %rbx + mov $0x5555555555555555, %r10 + push %rbp + mov $0x3333333333333333, %r11 + push %r12 + lea (%rdi,%rdx,8), %rdi + mov $0x0f0f0f0f0f0f0f0f, %rcx + lea (%rsi,%rdx,8), %rsi + neg %rdx + mov $0x0101010101010101, %r12 + xor %eax, %eax + test $1, %dl + jz Ltop + + mov (%rdi,%rdx,8), %r8 + xor (%rsi,%rdx,8), %r8 + + mov %r8, %r9 + shr %r8 + and %r10, %r8 + sub %r8, %r9 + + mov %r9, %r8 + shr $2, %r9 + and %r11, %r8 + and %r11, %r9 + add %r8, %r9 + + dec %rdx + jmp Lmid + + .align 16, 0x90 +Ltop: mov (%rdi,%rdx,8), %r8 + mov 8(%rdi,%rdx,8), %rbx + xor (%rsi,%rdx,8), %r8 + xor 8(%rsi,%rdx,8), %rbx + + mov %r8, %r9 + mov %rbx, %rbp + shr %r8 + shr %rbx + and %r10, %r8 + and %r10, %rbx + sub %r8, %r9 + sub %rbx, %rbp + + mov %r9, %r8 + mov %rbp, %rbx + shr $2, %r9 + shr $2, %rbp + and %r11, %r8 + and %r11, %r9 + and %r11, %rbx + and %r11, %rbp + add %r8, %r9 + add %rbx, %rbp + + add %rbp, %r9 +Lmid: mov %r9, %r8 + shr $4, %r9 + and %rcx, %r8 + and %rcx, %r9 + add %r8, %r9 + + imul %r12, %r9 + shr $56, %r9 + + add %r9, %rax + add $2, %rdx + jnc Ltop + +Lend: + pop %r12 + pop %rbp + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/invert_limb.s b/vere/ext/gmp/gen/x86_64-windows/mpn/invert_limb.s new file mode 100644 index 0000000..ae2d2f0 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/invert_limb.s @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_invert_limb + + .def __gmpn_invert_limb + .scl 2 + .type 32 + .endef +__gmpn_invert_limb: + + push %rdi + push %rsi + mov %rcx, %rdi + + mov %rdi, %rax + shr $55, %rax + + lea -512+__gmpn_invert_limb_table(%rip), %r8 + + movzwl (%r8,%rax,2), %ecx + + + mov %rdi, %rsi + mov %ecx, %eax + imul %ecx, %ecx + shr $24, %rsi + inc %rsi + imul %rsi, %rcx + shr $40, %rcx + sal $11, %eax + dec %eax + sub %ecx, %eax + + + mov $0x1000000000000000, %rcx + imul %rax, %rsi + sub %rsi, %rcx + imul %rax, %rcx + sal $13, %rax + shr $47, %rcx + add %rax, %rcx + + + mov %rdi, %rsi + shr %rsi + sbb %rax, %rax + sub %rax, %rsi + imul %rcx, %rsi + and %rcx, %rax + shr %rax + sub %rsi, %rax + mul %rcx + sal $31, %rcx + shr %rdx + add %rdx, %rcx + + mov %rdi, %rax + mul %rcx + add %rdi, %rax + mov %rcx, %rax + adc %rdi, %rdx + sub %rdx, %rax + + pop %rsi + pop %rdi + ret + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/invert_limb_table.s b/vere/ext/gmp/gen/x86_64-windows/mpn/invert_limb_table.s new file mode 100644 index 0000000..b6e3cd8 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/invert_limb_table.s @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .section .rdata,"dr" + .align 2, 0x90 + .globl __gmpn_invert_limb_table +__gmpn_invert_limb_table: + .value 2045 + .value 2037 + .value 2029 + .value 2021 + .value 2013 + .value 2005 + .value 1998 + .value 1990 + .value 1983 + .value 1975 + .value 1968 + .value 1960 + .value 1953 + .value 1946 + .value 1938 + .value 1931 + .value 1924 + .value 1917 + .value 1910 + .value 1903 + .value 1896 + .value 1889 + .value 1883 + .value 1876 + .value 1869 + .value 1863 + .value 1856 + .value 1849 + .value 1843 + .value 1836 + .value 1830 + .value 1824 + .value 1817 + .value 1811 + .value 1805 + .value 1799 + .value 1792 + .value 1786 + .value 1780 + .value 1774 + .value 1768 + .value 1762 + .value 1756 + .value 1750 + .value 1745 + .value 1739 + .value 1733 + .value 1727 + .value 1722 + .value 1716 + .value 1710 + .value 1705 + .value 1699 + .value 1694 + .value 1688 + .value 1683 + .value 1677 + .value 1672 + .value 1667 + .value 1661 + .value 1656 + .value 1651 + .value 1646 + .value 1641 + .value 1636 + .value 1630 + .value 1625 + .value 1620 + .value 1615 + .value 1610 + .value 1605 + .value 1600 + .value 1596 + .value 1591 + .value 1586 + .value 1581 + .value 1576 + .value 1572 + .value 1567 + .value 1562 + .value 1558 + .value 1553 + .value 1548 + .value 1544 + .value 1539 + .value 1535 + .value 1530 + .value 1526 + .value 1521 + .value 1517 + .value 1513 + .value 1508 + .value 1504 + .value 1500 + .value 1495 + .value 1491 + .value 1487 + .value 1483 + .value 1478 + .value 1474 + .value 1470 + .value 1466 + .value 1462 + .value 1458 + .value 1454 + .value 1450 + .value 1446 + .value 1442 + .value 1438 + .value 1434 + .value 1430 + .value 1426 + .value 1422 + .value 1418 + .value 1414 + .value 1411 + .value 1407 + .value 1403 + .value 1399 + .value 1396 + .value 1392 + .value 1388 + .value 1384 + .value 1381 + .value 1377 + .value 1374 + .value 1370 + .value 1366 + .value 1363 + .value 1359 + .value 1356 + .value 1352 + .value 1349 + .value 1345 + .value 1342 + .value 1338 + .value 1335 + .value 1332 + .value 1328 + .value 1325 + .value 1322 + .value 1318 + .value 1315 + .value 1312 + .value 1308 + .value 1305 + .value 1302 + .value 1299 + .value 1295 + .value 1292 + .value 1289 + .value 1286 + .value 1283 + .value 1280 + .value 1276 + .value 1273 + .value 1270 + .value 1267 + .value 1264 + .value 1261 + .value 1258 + .value 1255 + .value 1252 + .value 1249 + .value 1246 + .value 1243 + .value 1240 + .value 1237 + .value 1234 + .value 1231 + .value 1228 + .value 1226 + .value 1223 + .value 1220 + .value 1217 + .value 1214 + .value 1211 + .value 1209 + .value 1206 + .value 1203 + .value 1200 + .value 1197 + .value 1195 + .value 1192 + .value 1189 + .value 1187 + .value 1184 + .value 1181 + .value 1179 + .value 1176 + .value 1173 + .value 1171 + .value 1168 + .value 1165 + .value 1163 + .value 1160 + .value 1158 + .value 1155 + .value 1153 + .value 1150 + .value 1148 + .value 1145 + .value 1143 + .value 1140 + .value 1138 + .value 1135 + .value 1133 + .value 1130 + .value 1128 + .value 1125 + .value 1123 + .value 1121 + .value 1118 + .value 1116 + .value 1113 + .value 1111 + .value 1109 + .value 1106 + .value 1104 + .value 1102 + .value 1099 + .value 1097 + .value 1095 + .value 1092 + .value 1090 + .value 1088 + .value 1086 + .value 1083 + .value 1081 + .value 1079 + .value 1077 + .value 1074 + .value 1072 + .value 1070 + .value 1068 + .value 1066 + .value 1064 + .value 1061 + .value 1059 + .value 1057 + .value 1055 + .value 1053 + .value 1051 + .value 1049 + .value 1047 + .value 1044 + .value 1042 + .value 1040 + .value 1038 + .value 1036 + .value 1034 + .value 1032 + .value 1030 + .value 1028 + .value 1026 + .value 1024 + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/ior_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/ior_n.s new file mode 100644 index 0000000..cd5cd3e --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/ior_n.s @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_ior_n + + .def __gmpn_ior_n + .scl 2 + .type 32 + .endef +__gmpn_ior_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: or (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp Le11 +Lb10: add $-2, %rcx + jmp Le10 +Lb01: or (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz Lret + +Ltop: mov (%rdx,%rcx,8), %r8 +Lb00: mov 8(%rdx,%rcx,8), %r9 + or (%rsi,%rcx,8), %r8 + or 8(%rsi,%rcx,8), %r9 + nop + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +Le11: mov 16(%rdx,%rcx,8), %r8 +Le10: mov 24(%rdx,%rcx,8), %r9 + or 16(%rsi,%rcx,8), %r8 + or 24(%rsi,%rcx,8), %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc Ltop + +Lret: pop %rsi + pop %rdi + ret + + + + + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/iorn_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/iorn_n.s new file mode 100644 index 0000000..be9263a --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/iorn_n.s @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_iorn_n + + .def __gmpn_iorn_n + .scl 2 + .type 32 + .endef +__gmpn_iorn_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov (%rdx), %r8 + not %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: or (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp Le11 +Lb10: add $-2, %rcx + jmp Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90 +Lb01: or (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz Lret + +Ltop: mov (%rdx,%rcx,8), %r8 + not %r8 +Lb00: mov 8(%rdx,%rcx,8), %r9 + not %r9 + or (%rsi,%rcx,8), %r8 + or 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +Le11: mov 16(%rdx,%rcx,8), %r8 + not %r8 +Le10: mov 24(%rdx,%rcx,8), %r9 + not %r9 + or 16(%rsi,%rcx,8), %r8 + or 24(%rsi,%rcx,8), %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc Ltop + +Lret: pop %rsi + pop %rdi + ret + + + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/jacobitab.h b/vere/ext/gmp/gen/x86_64-windows/mpn/jacobitab.h new file mode 100644 index 0000000..4bdbfcc --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/jacobitab.h @@ -0,0 +1,13 @@ + 0, 0, 0, 0, 0,12, 8, 4, 1, 1, 1, 1, 1,13, 9, 5, + 2, 2, 2, 2, 2, 6,10,14, 3, 3, 3, 3, 3, 7,11,15, + 4,16, 6,18, 4, 0,12, 8, 5,17, 7,19, 5, 1,13, 9, + 6,18, 4,16, 6,10,14, 2, 7,19, 5,17, 7,11,15, 3, + 8,10, 9,11, 8, 4, 0,12, 9,11, 8,10, 9, 5, 1,13, +10, 9,11, 8,10,14, 2, 6,11, 8,10, 9,11,15, 3, 7, +12,22,24,20,12, 8, 4, 0,13,23,25,21,13, 9, 5, 1, +25,21,13,23,14, 2, 6,10,24,20,12,22,15, 3, 7,11, +16, 6,18, 4,16,16,16,16,17, 7,19, 5,17,17,17,17, +18, 4,16, 6,18,22,19,23,19, 5,17, 7,19,23,18,22, +20,12,22,24,20,20,20,20,21,13,23,25,21,21,21,21, +22,24,20,12,22,19,23,18,23,25,21,13,23,18,22,19, +24,20,12,22,15, 3, 7,11,25,21,13,23,14, 2, 6,10, diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/lshift.s b/vere/ext/gmp/gen/x86_64-windows/mpn/lshift.s new file mode 100644 index 0000000..31599f8 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/lshift.s @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_lshift + + .def __gmpn_lshift + .scl 2 + .type 32 + .endef +__gmpn_lshift: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + neg %ecx + mov -8(%rsi,%rdx,8), %rax + shr %cl, %rax + + neg %ecx + lea 1(%rdx), %r8d + and $3, %r8d + je Lrlx + + dec %r8d + jne L1 + + mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + shr %cl, %r8 + or %r8, %r10 + mov %r10, -8(%rdi,%rdx,8) + dec %rdx + jmp Lrll + +L1: dec %r8d + je L1x + + mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + shr %cl, %r8 + or %r8, %r10 + mov %r10, -8(%rdi,%rdx,8) + dec %rdx + neg %ecx +L1x: + cmp $1, %rdx + je Last + mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + mov -16(%rsi,%rdx,8), %r11 + shl %cl, %r11 + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + mov -24(%rsi,%rdx,8), %r9 + shr %cl, %r8 + or %r8, %r10 + shr %cl, %r9 + or %r9, %r11 + mov %r10, -8(%rdi,%rdx,8) + mov %r11, -16(%rdi,%rdx,8) + sub $2, %rdx + +Lrll: neg %ecx +Lrlx: mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + mov -16(%rsi,%rdx,8), %r11 + shl %cl, %r11 + + sub $4, %rdx + jb Lend + .align 16, 0x90 +Ltop: + + neg %ecx + mov 16(%rsi,%rdx,8), %r8 + mov 8(%rsi,%rdx,8), %r9 + shr %cl, %r8 + or %r8, %r10 + shr %cl, %r9 + or %r9, %r11 + mov %r10, 24(%rdi,%rdx,8) + mov %r11, 16(%rdi,%rdx,8) + + mov 0(%rsi,%rdx,8), %r8 + mov -8(%rsi,%rdx,8), %r9 + shr %cl, %r8 + shr %cl, %r9 + + + neg %ecx + mov 8(%rsi,%rdx,8), %r10 + mov 0(%rsi,%rdx,8), %r11 + shl %cl, %r10 + or %r10, %r8 + shl %cl, %r11 + or %r11, %r9 + mov %r8, 8(%rdi,%rdx,8) + mov %r9, 0(%rdi,%rdx,8) + + mov -8(%rsi,%rdx,8), %r10 + mov -16(%rsi,%rdx,8), %r11 + shl %cl, %r10 + shl %cl, %r11 + + sub $4, %rdx + jae Ltop +Lend: + neg %ecx + mov 8(%rsi), %r8 + shr %cl, %r8 + or %r8, %r10 + mov (%rsi), %r9 + shr %cl, %r9 + or %r9, %r11 + mov %r10, 16(%rdi) + mov %r11, 8(%rdi) + + neg %ecx +Last: mov (%rsi), %r10 + shl %cl, %r10 + mov %r10, (%rdi) + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/lshiftc.s b/vere/ext/gmp/gen/x86_64-windows/mpn/lshiftc.s new file mode 100644 index 0000000..192e440 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/lshiftc.s @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_lshiftc + + .def __gmpn_lshiftc + .scl 2 + .type 32 + .endef +__gmpn_lshiftc: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + neg %ecx + mov -8(%rsi,%rdx,8), %rax + shr %cl, %rax + + neg %ecx + lea 1(%rdx), %r8d + and $3, %r8d + je Lrlx + + dec %r8d + jne L1 + + mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + shr %cl, %r8 + or %r8, %r10 + not %r10 + mov %r10, -8(%rdi,%rdx,8) + dec %rdx + jmp Lrll + +L1: dec %r8d + je L1x + + mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + shr %cl, %r8 + or %r8, %r10 + not %r10 + mov %r10, -8(%rdi,%rdx,8) + dec %rdx + neg %ecx +L1x: + cmp $1, %rdx + je Last + mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + mov -16(%rsi,%rdx,8), %r11 + shl %cl, %r11 + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + mov -24(%rsi,%rdx,8), %r9 + shr %cl, %r8 + or %r8, %r10 + shr %cl, %r9 + or %r9, %r11 + not %r10 + not %r11 + mov %r10, -8(%rdi,%rdx,8) + mov %r11, -16(%rdi,%rdx,8) + sub $2, %rdx + +Lrll: neg %ecx +Lrlx: mov -8(%rsi,%rdx,8), %r10 + shl %cl, %r10 + mov -16(%rsi,%rdx,8), %r11 + shl %cl, %r11 + + sub $4, %rdx + jb Lend + .align 16, 0x90 +Ltop: + + neg %ecx + mov 16(%rsi,%rdx,8), %r8 + mov 8(%rsi,%rdx,8), %r9 + shr %cl, %r8 + or %r8, %r10 + shr %cl, %r9 + or %r9, %r11 + not %r10 + not %r11 + mov %r10, 24(%rdi,%rdx,8) + mov %r11, 16(%rdi,%rdx,8) + + mov 0(%rsi,%rdx,8), %r8 + mov -8(%rsi,%rdx,8), %r9 + shr %cl, %r8 + shr %cl, %r9 + + + neg %ecx + mov 8(%rsi,%rdx,8), %r10 + mov 0(%rsi,%rdx,8), %r11 + shl %cl, %r10 + or %r10, %r8 + shl %cl, %r11 + or %r11, %r9 + not %r8 + not %r9 + mov %r8, 8(%rdi,%rdx,8) + mov %r9, 0(%rdi,%rdx,8) + + mov -8(%rsi,%rdx,8), %r10 + mov -16(%rsi,%rdx,8), %r11 + shl %cl, %r10 + shl %cl, %r11 + + sub $4, %rdx + jae Ltop +Lend: + neg %ecx + mov 8(%rsi), %r8 + shr %cl, %r8 + or %r8, %r10 + mov (%rsi), %r9 + shr %cl, %r9 + or %r9, %r11 + not %r10 + not %r11 + mov %r10, 16(%rdi) + mov %r11, 8(%rdi) + + neg %ecx +Last: mov (%rsi), %r10 + shl %cl, %r10 + not %r10 + mov %r10, (%rdi) + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_1.s b/vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_1.s new file mode 100644 index 0000000..b013e99 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_1.s @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mod_1_1p + + .def __gmpn_mod_1_1p + .scl 2 + .type 32 + .endef +__gmpn_mod_1_1p: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %rbp + push %rbx + mov %rdx, %rbx + mov %rcx, %r8 + + mov -8(%rdi, %rsi, 8), %rax + cmp $3, %rsi + jnc Lfirst + mov -16(%rdi, %rsi, 8), %rbp + jmp Lreduce_two + +Lfirst: + + mov 24(%r8), %r11 + mul %r11 + mov -24(%rdi, %rsi, 8), %rbp + add %rax, %rbp + mov -16(%rdi, %rsi, 8), %rax + adc %rdx, %rax + sbb %rcx, %rcx + sub $4, %rsi + jc Lreduce_three + + mov %r11, %r10 + sub %rbx, %r10 + + .align 16, 0x90 +Ltop: and %r11, %rcx + lea (%r10, %rbp), %r9 + mul %r11 + add %rbp, %rcx + mov (%rdi, %rsi, 8), %rbp + cmovc %r9, %rcx + add %rax, %rbp + mov %rcx, %rax + adc %rdx, %rax + sbb %rcx, %rcx + sub $1, %rsi + jnc Ltop + +Lreduce_three: + + and %rbx, %rcx + sub %rcx, %rax + +Lreduce_two: + mov 8(%r8), %ecx + test %ecx, %ecx + jz Lnormalized + + + mulq 16(%r8) + xor %r9, %r9 + add %rax, %rbp + adc %rdx, %r9 + mov %r9, %rax + + + + shld %cl, %rbp, %rax + + shl %cl, %rbp + jmp Ludiv + +Lnormalized: + mov %rax, %r9 + sub %rbx, %r9 + cmovnc %r9, %rax + +Ludiv: + lea 1(%rax), %r9 + mulq (%r8) + add %rbp, %rax + adc %r9, %rdx + imul %rbx, %rdx + sub %rdx, %rbp + cmp %rbp, %rax + lea (%rbx, %rbp), %rax + cmovnc %rbp, %rax + cmp %rbx, %rax + jnc Lfix +Lok: shr %cl, %rax + + pop %rbx + pop %rbp + pop %rsi + pop %rdi + ret +Lfix: sub %rbx, %rax + jmp Lok + + + .align 16, 0x90 + .globl __gmpn_mod_1_1p_cps + + .def __gmpn_mod_1_1p_cps + .scl 2 + .type 32 + .endef +__gmpn_mod_1_1p_cps: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + + push %rbp + bsr %rsi, %rcx + push %rbx + mov %rdi, %rbx + push %r12 + xor $63, %ecx + mov %rsi, %r12 + mov %ecx, %ebp + sal %cl, %r12 + + mov %r12, %rcx + sub $32, %rsp + + call __gmpn_invert_limb + add $32, %rsp + neg %r12 + mov %r12, %r8 + mov %rax, (%rbx) + mov %rbp, 8(%rbx) + imul %rax, %r12 + mov %r12, 24(%rbx) + mov %ebp, %ecx + test %ecx, %ecx + jz Lz + + mov $1, %edx + + shld %cl, %rax, %rdx + + imul %rdx, %r8 + shr %cl, %r8 + mov %r8, 16(%rbx) +Lz: + pop %r12 + pop %rbx + pop %rbp + pop %rsi + pop %rdi + ret + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_2.s b/vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_2.s new file mode 100644 index 0000000..6dd3bfe --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_2.s @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mod_1s_2p + + .def __gmpn_mod_1s_2p + .scl 2 + .type 32 + .endef +__gmpn_mod_1s_2p: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %r14 + test $1, %sil + mov %rdx, %r14 + push %r13 + mov %rcx, %r13 + push %r12 + push %rbp + push %rbx + mov 16(%rcx), %r10 + mov 24(%rcx), %rbx + mov 32(%rcx), %rbp + je Lb0 + dec %rsi + je Lone + mov -8(%rdi,%rsi,8), %rax + mul %r10 + mov %rax, %r9 + mov %rdx, %r8 + mov (%rdi,%rsi,8), %rax + add -16(%rdi,%rsi,8), %r9 + adc $0, %r8 + mul %rbx + add %rax, %r9 + adc %rdx, %r8 + jmp L11 + +Lb0: mov -8(%rdi,%rsi,8), %r8 + mov -16(%rdi,%rsi,8), %r9 + +L11: sub $4, %rsi + jb Led2 + lea 40(%rdi,%rsi,8), %rdi + mov -40(%rdi), %r11 + mov -32(%rdi), %rax + jmp Lm0 + + .align 16, 0x90 +Ltop: mov -24(%rdi), %r9 + add %rax, %r11 + mov -16(%rdi), %rax + adc %rdx, %r12 + mul %r10 + add %rax, %r9 + mov %r11, %rax + mov %rdx, %r8 + adc $0, %r8 + mul %rbx + add %rax, %r9 + mov %r12, %rax + adc %rdx, %r8 + mul %rbp + sub $2, %rsi + jb Led1 + mov -40(%rdi), %r11 + add %rax, %r9 + mov -32(%rdi), %rax + adc %rdx, %r8 +Lm0: mul %r10 + add %rax, %r11 + mov %r9, %rax + mov %rdx, %r12 + adc $0, %r12 + mul %rbx + add %rax, %r11 + lea -32(%rdi), %rdi + mov %r8, %rax + adc %rdx, %r12 + mul %rbp + sub $2, %rsi + jae Ltop + +Led0: mov %r11, %r9 + mov %r12, %r8 +Led1: add %rax, %r9 + adc %rdx, %r8 +Led2: mov 8(%r13), %edi + mov %r8, %rax + mov %r9, %r8 + mul %r10 + add %rax, %r8 + adc $0, %rdx +L1: xor %ecx, %ecx + mov %r8, %r9 + sub %edi, %ecx + shr %cl, %r9 + mov %edi, %ecx + sal %cl, %rdx + or %rdx, %r9 + sal %cl, %r8 + mov %r9, %rax + mulq (%r13) + mov %rax, %rsi + inc %r9 + add %r8, %rsi + adc %r9, %rdx + imul %r14, %rdx + sub %rdx, %r8 + lea (%r8,%r14), %rax + cmp %r8, %rsi + cmovc %rax, %r8 + mov %r8, %rax + sub %r14, %rax + cmovc %r8, %rax + mov %edi, %ecx + shr %cl, %rax + pop %rbx + pop %rbp + pop %r12 + pop %r13 + pop %r14 + pop %rsi + pop %rdi + ret +Lone: + mov (%rdi), %r8 + mov 8(%rcx), %edi + xor %rdx, %rdx + jmp L1 + + + .align 16, 0x90 + .globl __gmpn_mod_1s_2p_cps + + .def __gmpn_mod_1s_2p_cps + .scl 2 + .type 32 + .endef +__gmpn_mod_1s_2p_cps: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + + push %rbp + bsr %rsi, %rcx + push %rbx + mov %rdi, %rbx + push %r12 + xor $63, %ecx + mov %rsi, %r12 + mov %ecx, %ebp + sal %cl, %r12 + + mov %r12, %rcx + sub $32, %rsp + + call __gmpn_invert_limb + add $32, %rsp + mov %r12, %r8 + mov %rax, %r11 + mov %rax, (%rbx) + mov %rbp, 8(%rbx) + neg %r8 + mov %ebp, %ecx + mov $1, %esi + + shld %cl, %rax, %rsi + + imul %r8, %rsi + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 16(%rbx) + + not %rdx + imul %r12, %rdx + lea (%rdx,%r12), %rsi + cmp %rdx, %rax + cmovnc %rdx, %rsi + mov %r11, %rax + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 24(%rbx) + + not %rdx + imul %r12, %rdx + add %rdx, %r12 + cmp %rdx, %rax + cmovnc %rdx, %r12 + + shr %cl, %r12 + mov %r12, 32(%rbx) + + pop %r12 + pop %rbx + pop %rbp + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_4.s b/vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_4.s new file mode 100644 index 0000000..1a8b397 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/mod_1_4.s @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mod_1s_4p + + .def __gmpn_mod_1s_4p + .scl 2 + .type 32 + .endef +__gmpn_mod_1s_4p: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %r15 + push %r14 + push %r13 + push %r12 + push %rbp + push %rbx + + mov %rdx, %r15 + mov %rcx, %r14 + mov 16(%rcx), %r11 + mov 24(%rcx), %rbx + mov 32(%rcx), %rbp + mov 40(%rcx), %r13 + mov 48(%rcx), %r12 + xor %r8d, %r8d + mov %esi, %edx + and $3, %edx + je Lb0 + cmp $2, %edx + jc Lb1 + je Lb2 + +Lb3: lea -24(%rdi,%rsi,8), %rdi + mov 8(%rdi), %rax + mul %r11 + mov (%rdi), %r9 + add %rax, %r9 + adc %rdx, %r8 + mov 16(%rdi), %rax + mul %rbx + jmp Lm0 + + .align 8, 0x90 +Lb0: lea -32(%rdi,%rsi,8), %rdi + mov 8(%rdi), %rax + mul %r11 + mov (%rdi), %r9 + add %rax, %r9 + adc %rdx, %r8 + mov 16(%rdi), %rax + mul %rbx + add %rax, %r9 + adc %rdx, %r8 + mov 24(%rdi), %rax + mul %rbp + jmp Lm0 + + .align 8, 0x90 +Lb1: lea -8(%rdi,%rsi,8), %rdi + mov (%rdi), %r9 + jmp Lm1 + + .align 8, 0x90 +Lb2: lea -16(%rdi,%rsi,8), %rdi + mov 8(%rdi), %r8 + mov (%rdi), %r9 + jmp Lm1 + + .align 16, 0x90 +Ltop: mov -24(%rdi), %rax + mov -32(%rdi), %r10 + mul %r11 + add %rax, %r10 + mov -16(%rdi), %rax + mov $0, %ecx + adc %rdx, %rcx + mul %rbx + add %rax, %r10 + mov -8(%rdi), %rax + adc %rdx, %rcx + sub $32, %rdi + mul %rbp + add %rax, %r10 + mov %r13, %rax + adc %rdx, %rcx + mul %r9 + add %rax, %r10 + mov %r12, %rax + adc %rdx, %rcx + mul %r8 + mov %r10, %r9 + mov %rcx, %r8 +Lm0: add %rax, %r9 + adc %rdx, %r8 +Lm1: sub $4, %rsi + ja Ltop + +Lend: mov 8(%r14), %esi + mov %r8, %rax + mul %r11 + mov %rax, %r8 + add %r9, %r8 + adc $0, %rdx + xor %ecx, %ecx + sub %esi, %ecx + mov %r8, %rdi + shr %cl, %rdi + mov %esi, %ecx + sal %cl, %rdx + or %rdx, %rdi + mov %rdi, %rax + mulq (%r14) + mov %r15, %rbx + mov %rax, %r9 + sal %cl, %r8 + inc %rdi + add %r8, %r9 + adc %rdi, %rdx + imul %rbx, %rdx + sub %rdx, %r8 + lea (%r8,%rbx), %rax + cmp %r8, %r9 + cmovc %rax, %r8 + mov %r8, %rax + sub %rbx, %rax + cmovc %r8, %rax + shr %cl, %rax + pop %rbx + pop %rbp + pop %r12 + pop %r13 + pop %r14 + pop %r15 + pop %rsi + pop %rdi + ret + + + .align 16, 0x90 + .globl __gmpn_mod_1s_4p_cps + + .def __gmpn_mod_1s_4p_cps + .scl 2 + .type 32 + .endef +__gmpn_mod_1s_4p_cps: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + + push %rbp + bsr %rsi, %rcx + push %rbx + mov %rdi, %rbx + push %r12 + xor $63, %ecx + mov %rsi, %r12 + mov %ecx, %ebp + sal %cl, %r12 + + mov %r12, %rcx + sub $32, %rsp + + call __gmpn_invert_limb + add $32, %rsp + mov %r12, %r8 + mov %rax, %r11 + mov %rax, (%rbx) + mov %rbp, 8(%rbx) + neg %r8 + mov %ebp, %ecx + mov $1, %esi + + shld %cl, %rax, %rsi + + imul %r8, %rsi + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 16(%rbx) + + not %rdx + imul %r12, %rdx + lea (%rdx,%r12), %rsi + cmp %rdx, %rax + cmovnc %rdx, %rsi + mov %r11, %rax + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 24(%rbx) + + not %rdx + imul %r12, %rdx + lea (%rdx,%r12), %rsi + cmp %rdx, %rax + cmovnc %rdx, %rsi + mov %r11, %rax + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 32(%rbx) + + not %rdx + imul %r12, %rdx + lea (%rdx,%r12), %rsi + cmp %rdx, %rax + cmovnc %rdx, %rsi + mov %r11, %rax + mul %rsi + + add %rsi, %rdx + shr %cl, %rsi + mov %rsi, 40(%rbx) + + not %rdx + imul %r12, %rdx + add %rdx, %r12 + cmp %rdx, %rax + cmovnc %rdx, %r12 + + shr %cl, %r12 + mov %r12, 48(%rbx) + + pop %r12 + pop %rbx + pop %rbp + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/mod_34lsub1.s b/vere/ext/gmp/gen/x86_64-windows/mpn/mod_34lsub1.s new file mode 100644 index 0000000..4ffc93b --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/mod_34lsub1.s @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_mod_34lsub1 + + .def __gmpn_mod_34lsub1 + .scl 2 + .type 32 + .endef +__gmpn_mod_34lsub1: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + + + mov $0x0000FFFFFFFFFFFF, %r11 + + mov (%rdi), %rax + + cmp $2, %rsi + ja Lgt2 + + jb Lone + + mov 8(%rdi), %rsi + mov %rax, %rdx + shr $48, %rax + + and %r11, %rdx + add %rdx, %rax + mov %esi, %edx + + shr $32, %rsi + add %rsi, %rax + + shl $16, %rdx + add %rdx, %rax +Lone: pop %rsi + pop %rdi + ret + + + + + +Lgt2: mov 8(%rdi), %rcx + mov 16(%rdi), %rdx + xor %r9, %r9 + add $24, %rdi + sub $12, %rsi + jc Lend + .align 16, 0x90 +Ltop: + add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add 24(%rdi), %rax + adc 32(%rdi), %rcx + adc 40(%rdi), %rdx + adc $0, %r9 + add 48(%rdi), %rax + adc 56(%rdi), %rcx + adc 64(%rdi), %rdx + adc $0, %r9 + add $72, %rdi + sub $9, %rsi + jnc Ltop + +Lend: + lea Ltab(%rip), %r8 + movslq 36(%r8,%rsi,4), %r10 + add %r10, %r8 + jmp *%r8 + + .section .rdata,"dr" + .align 8, 0x90 +Ltab: .long L0-Ltab + .long L1-Ltab + .long L2-Ltab + .long L3-Ltab + .long L4-Ltab + .long L5-Ltab + .long L6-Ltab + .long L7-Ltab + .long L8-Ltab + .text + +L6: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +L3: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + jmp Lcj1 + +L7: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +L4: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +L1: add (%rdi), %rax + adc $0, %rcx + jmp Lcj2 + +L8: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +L5: add (%rdi), %rax + adc 8(%rdi), %rcx + adc 16(%rdi), %rdx + adc $0, %r9 + add $24, %rdi +L2: add (%rdi), %rax + adc 8(%rdi), %rcx + +Lcj2: adc $0, %rdx +Lcj1: adc $0, %r9 +L0: add %r9, %rax + adc $0, %rcx + adc $0, %rdx + adc $0, %rax + + mov %rax, %rdi + shr $48, %rax + + and %r11, %rdi + mov %ecx, %r10d + + shr $32, %rcx + + add %rdi, %rax + movzwl %dx, %edi + shl $16, %r10 + + add %rcx, %rax + shr $16, %rdx + + add %r10, %rax + shl $32, %rdi + + add %rdx, %rax + add %rdi, %rax + + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/mode1o.s b/vere/ext/gmp/gen/x86_64-windows/mpn/mode1o.s new file mode 100644 index 0000000..3cc7720 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/mode1o.s @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_modexact_1_odd + + .def __gmpn_modexact_1_odd + .scl 2 + .type 32 + .endef +__gmpn_modexact_1_odd: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + + mov $0, %ecx + jmp Lent + + .globl __gmpn_modexact_1c_odd + + .def __gmpn_modexact_1c_odd + .scl 2 + .type 32 + .endef +__gmpn_modexact_1c_odd: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + +Lent: + + + + + + mov %rdx, %r8 + shr %edx + + + lea __gmp_binvert_limb_table(%rip), %r9 + + + and $127, %edx + mov %rcx, %r10 + + movzbl (%r9,%rdx), %edx + + mov (%rdi), %rax + lea (%rdi,%rsi,8), %r11 + mov %r8, %rdi + + lea (%rdx,%rdx), %ecx + imul %edx, %edx + + neg %rsi + + imul %edi, %edx + + sub %edx, %ecx + + lea (%rcx,%rcx), %edx + imul %ecx, %ecx + + imul %edi, %ecx + + sub %ecx, %edx + xor %ecx, %ecx + + lea (%rdx,%rdx), %r9 + imul %rdx, %rdx + + imul %r8, %rdx + + sub %rdx, %r9 + mov %r10, %rdx + + + + inc %rsi + jz Lone + + + .align 16, 0x90 +Ltop: + + + + + + + + + + sub %rdx, %rax + + adc $0, %rcx + imul %r9, %rax + + mul %r8 + + mov (%r11,%rsi,8), %rax + sub %rcx, %rax + setc %cl + + inc %rsi + jnz Ltop + + +Lone: + sub %rdx, %rax + + adc $0, %rcx + imul %r9, %rax + + mul %r8 + + lea (%rcx,%rdx), %rax + pop %rsi + pop %rdi + ret + + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/mp_bases.c b/vere/ext/gmp/gen/x86_64-windows/mpn/mp_bases.c new file mode 100644 index 0000000..c72c531 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/mp_bases.c @@ -0,0 +1,268 @@ +/* This file generated by gen-bases.c - DO NOT EDIT. */ + +#include "gmp-impl.h" + +#if GMP_NUMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +const struct bases mp_bases[257] = +{ + /* 0 */ { 0, 0, 0, 0, 0 }, + /* 1 */ { 0, 0, 0, 0, 0 }, + /* 2 */ { 64, CNST_LIMB(0xffffffffffffffff), CNST_LIMB(0x1fffffffffffffff), CNST_LIMB(0x1), CNST_LIMB(0x0) }, + /* 3 */ { 40, CNST_LIMB(0xa1849cc1a9a9e94e), CNST_LIMB(0x32b803473f7ad0f3), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 4 */ { 32, CNST_LIMB(0x7fffffffffffffff), CNST_LIMB(0x3fffffffffffffff), CNST_LIMB(0x2), CNST_LIMB(0x0) }, + /* 5 */ { 27, CNST_LIMB(0x6e40d1a4143dcb94), CNST_LIMB(0x4a4d3c25e68dc57f), CNST_LIMB(0x6765c793fa10079d), CNST_LIMB(0x3ce9a36f23c0fc90) }, + /* 6 */ { 24, CNST_LIMB(0x6308c91b702a7cf4), CNST_LIMB(0x52b803473f7ad0f3), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 7 */ { 22, CNST_LIMB(0x5b3064eb3aa6d388), CNST_LIMB(0x59d5d9fd5010b366), CNST_LIMB(0x3642798750226111), CNST_LIMB(0x2df495ccaa57147b) }, + /* 8 */ { 21, CNST_LIMB(0x5555555555555555), CNST_LIMB(0x5fffffffffffffff), CNST_LIMB(0x3), CNST_LIMB(0x0) }, + /* 9 */ { 20, CNST_LIMB(0x50c24e60d4d4f4a7), CNST_LIMB(0x6570068e7ef5a1e7), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 10 */ { 19, CNST_LIMB(0x4d104d427de7fbcc), CNST_LIMB(0x6a4d3c25e68dc57f), CNST_LIMB(0x8ac7230489e80000), CNST_LIMB(0xd83c94fb6d2ac34a) }, + /* 11 */ { 18, CNST_LIMB(0x4a00270775914e88), CNST_LIMB(0x6eb3a9f01975077f), CNST_LIMB(0x4d28cb56c33fa539), CNST_LIMB(0xa8adf7ae45e7577b) }, + /* 12 */ { 17, CNST_LIMB(0x4768ce0d05818e12), CNST_LIMB(0x72b803473f7ad0f3), CNST_LIMB(0x1eca170c00000000), CNST_LIMB(0xa10c2bec5da8f8f) }, + /* 13 */ { 17, CNST_LIMB(0x452e53e365907bda), CNST_LIMB(0x766a008e4788cbcd), CNST_LIMB(0x780c7372621bd74d), CNST_LIMB(0x10f4becafe412ec3) }, + /* 14 */ { 16, CNST_LIMB(0x433cfffb4b5aae55), CNST_LIMB(0x79d5d9fd5010b366), CNST_LIMB(0x1e39a5057d810000), CNST_LIMB(0xf08480f672b4e86) }, + /* 15 */ { 16, CNST_LIMB(0x41867711b4f85355), CNST_LIMB(0x7d053f6d26089673), CNST_LIMB(0x5b27ac993df97701), CNST_LIMB(0x6779c7f90dc42f48) }, + /* 16 */ { 16, CNST_LIMB(0x3fffffffffffffff), CNST_LIMB(0x7fffffffffffffff), CNST_LIMB(0x4), CNST_LIMB(0x0) }, + /* 17 */ { 15, CNST_LIMB(0x3ea16afd58b10966), CNST_LIMB(0x82cc7edf592262cf), CNST_LIMB(0x27b95e997e21d9f1), CNST_LIMB(0x9c71e11bab279323) }, + /* 18 */ { 15, CNST_LIMB(0x3d64598d154dc4de), CNST_LIMB(0x8570068e7ef5a1e7), CNST_LIMB(0x5da0e1e53c5c8000), CNST_LIMB(0x5dfaa697ec6f6a1c) }, + /* 19 */ { 15, CNST_LIMB(0x3c43c23018bb5563), CNST_LIMB(0x87ef05ae409a0288), CNST_LIMB(0xd2ae3299c1c4aedb), CNST_LIMB(0x3711783f6be7e9ec) }, + /* 20 */ { 14, CNST_LIMB(0x3b3b9a42873069c7), CNST_LIMB(0x8a4d3c25e68dc57f), CNST_LIMB(0x16bcc41e90000000), CNST_LIMB(0x6849b86a12b9b01e) }, + /* 21 */ { 14, CNST_LIMB(0x3a4898f06cf41ac9), CNST_LIMB(0x8c8ddd448f8b845a), CNST_LIMB(0x2d04b7fdd9c0ef49), CNST_LIMB(0x6bf097ba5ca5e239) }, + /* 22 */ { 14, CNST_LIMB(0x39680b13582e7c18), CNST_LIMB(0x8eb3a9f01975077f), CNST_LIMB(0x5658597bcaa24000), CNST_LIMB(0x7b8015c8d7af8f08) }, + /* 23 */ { 14, CNST_LIMB(0x3897b2b751ae561a), CNST_LIMB(0x90c10500d63aa658), CNST_LIMB(0xa0e2073737609371), CNST_LIMB(0x975a24b3a3151b38) }, + /* 24 */ { 13, CNST_LIMB(0x37d5aed131f19c98), CNST_LIMB(0x92b803473f7ad0f3), CNST_LIMB(0xc29e98000000000), CNST_LIMB(0x50bd367972689db1) }, + /* 25 */ { 13, CNST_LIMB(0x372068d20a1ee5ca), CNST_LIMB(0x949a784bcd1b8afe), CNST_LIMB(0x14adf4b7320334b9), CNST_LIMB(0x8c240c4aecb13bb5) }, + /* 26 */ { 13, CNST_LIMB(0x3676867e5d60de29), CNST_LIMB(0x966a008e4788cbcd), CNST_LIMB(0x226ed36478bfa000), CNST_LIMB(0xdbd2e56854e118c9) }, + /* 27 */ { 13, CNST_LIMB(0x35d6deeb388df86f), CNST_LIMB(0x982809d5be7072db), CNST_LIMB(0x383d9170b85ff80b), CNST_LIMB(0x2351ffcaa9c7c4ae) }, + /* 28 */ { 13, CNST_LIMB(0x354071d61c77fa2e), CNST_LIMB(0x99d5d9fd5010b366), CNST_LIMB(0x5a3c23e39c000000), CNST_LIMB(0x6b24188ca33b0636) }, + /* 29 */ { 13, CNST_LIMB(0x34b260c5671b18ac), CNST_LIMB(0x9b74948f5532da4b), CNST_LIMB(0x8e65137388122bcd), CNST_LIMB(0xcc3dceaf2b8ba99d) }, + /* 30 */ { 13, CNST_LIMB(0x342be986572b45cc), CNST_LIMB(0x9d053f6d26089673), CNST_LIMB(0xdd41bb36d259e000), CNST_LIMB(0x2832e835c6c7d6b6) }, + /* 31 */ { 12, CNST_LIMB(0x33ac61b998fbbdf2), CNST_LIMB(0x9e88c6b3626a72aa), CNST_LIMB(0xaee5720ee830681), CNST_LIMB(0x76b6aa272e1873c5) }, + /* 32 */ { 12, CNST_LIMB(0x3333333333333333), CNST_LIMB(0x9fffffffffffffff), CNST_LIMB(0x5), CNST_LIMB(0x0) }, + /* 33 */ { 12, CNST_LIMB(0x32bfd90114c12861), CNST_LIMB(0xa16bad3758efd873), CNST_LIMB(0x172588ad4f5f0981), CNST_LIMB(0x61eaf5d402c7bf4f) }, + /* 34 */ { 12, CNST_LIMB(0x3251dcf6169e45f2), CNST_LIMB(0xa2cc7edf592262cf), CNST_LIMB(0x211e44f7d02c1000), CNST_LIMB(0xeeb658123ffb27ec) }, + /* 35 */ { 12, CNST_LIMB(0x31e8d59f180dc630), CNST_LIMB(0xa4231623369e78e5), CNST_LIMB(0x2ee56725f06e5c71), CNST_LIMB(0x5d5e3762e6fdf509) }, + /* 36 */ { 12, CNST_LIMB(0x3184648db8153e7a), CNST_LIMB(0xa570068e7ef5a1e7), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 37 */ { 12, CNST_LIMB(0x312434e89c35dacd), CNST_LIMB(0xa6b3d78b6d3b24fb), CNST_LIMB(0x5b5b57f8a98a5dd1), CNST_LIMB(0x66ae7831762efb6f) }, + /* 38 */ { 12, CNST_LIMB(0x30c7fa349460a541), CNST_LIMB(0xa7ef05ae409a0288), CNST_LIMB(0x7dcff8986ea31000), CNST_LIMB(0x47388865a00f544) }, + /* 39 */ { 12, CNST_LIMB(0x306f6f4c8432bc6d), CNST_LIMB(0xa92203d587039cc1), CNST_LIMB(0xabd4211662a6b2a1), CNST_LIMB(0x7d673c33a123b54c) }, + /* 40 */ { 12, CNST_LIMB(0x301a557ffbfdd252), CNST_LIMB(0xaa4d3c25e68dc57f), CNST_LIMB(0xe8d4a51000000000), CNST_LIMB(0x19799812dea11197) }, + /* 41 */ { 11, CNST_LIMB(0x2fc873d1fda55f3b), CNST_LIMB(0xab7110e6ce866f2b), CNST_LIMB(0x7a32956ad081b79), CNST_LIMB(0xc27e62e0686feae) }, + /* 42 */ { 11, CNST_LIMB(0x2f799652a4e6dc49), CNST_LIMB(0xac8ddd448f8b845a), CNST_LIMB(0x9f49aaff0e86800), CNST_LIMB(0x9b6e7507064ce7c7) }, + /* 43 */ { 11, CNST_LIMB(0x2f2d8d8f64460aad), CNST_LIMB(0xada3f5fb9c415052), CNST_LIMB(0xce583bb812d37b3), CNST_LIMB(0x3d9ac2bf66cfed94) }, + /* 44 */ { 11, CNST_LIMB(0x2ee42e164e8f53a4), CNST_LIMB(0xaeb3a9f01975077f), CNST_LIMB(0x109b79a654c00000), CNST_LIMB(0xed46bc50ce59712a) }, + /* 45 */ { 11, CNST_LIMB(0x2e9d500984041dbd), CNST_LIMB(0xafbd42b465836767), CNST_LIMB(0x1543beff214c8b95), CNST_LIMB(0x813d97e2c89b8d46) }, + /* 46 */ { 11, CNST_LIMB(0x2e58cec05a6a8144), CNST_LIMB(0xb0c10500d63aa658), CNST_LIMB(0x1b149a79459a3800), CNST_LIMB(0x2e81751956af8083) }, + /* 47 */ { 11, CNST_LIMB(0x2e1688743ef9104c), CNST_LIMB(0xb1bf311e95d00de3), CNST_LIMB(0x224edfb5434a830f), CNST_LIMB(0xdd8e0a95e30c0988) }, + /* 48 */ { 11, CNST_LIMB(0x2dd65df7a583598f), CNST_LIMB(0xb2b803473f7ad0f3), CNST_LIMB(0x2b3fb00000000000), CNST_LIMB(0x7ad4dd48a0b5b167) }, + /* 49 */ { 11, CNST_LIMB(0x2d9832759d5369c4), CNST_LIMB(0xb3abb3faa02166cc), CNST_LIMB(0x3642798750226111), CNST_LIMB(0x2df495ccaa57147b) }, + /* 50 */ { 11, CNST_LIMB(0x2d5beb38dcd1394c), CNST_LIMB(0xb49a784bcd1b8afe), CNST_LIMB(0x43c33c1937564800), CNST_LIMB(0xe392010175ee5962) }, + /* 51 */ { 11, CNST_LIMB(0x2d216f7943e2ba6a), CNST_LIMB(0xb5848226989d33c3), CNST_LIMB(0x54411b2441c3cd8b), CNST_LIMB(0x84eaf11b2fe7738e) }, + /* 52 */ { 11, CNST_LIMB(0x2ce8a82efbb3ff2c), CNST_LIMB(0xb66a008e4788cbcd), CNST_LIMB(0x6851455acd400000), CNST_LIMB(0x3a1e3971e008995d) }, + /* 53 */ { 11, CNST_LIMB(0x2cb17fea7ad7e332), CNST_LIMB(0xb74b1fd64e0753c6), CNST_LIMB(0x80a23b117c8feb6d), CNST_LIMB(0xfd7a462344ffce25) }, + /* 54 */ { 11, CNST_LIMB(0x2c7be2b0cfa1ba50), CNST_LIMB(0xb82809d5be7072db), CNST_LIMB(0x9dff7d32d5dc1800), CNST_LIMB(0x9eca40b40ebcef8a) }, + /* 55 */ { 11, CNST_LIMB(0x2c47bddba92d7463), CNST_LIMB(0xb900e6160002ccfe), CNST_LIMB(0xc155af6faeffe6a7), CNST_LIMB(0x52fa161a4a48e43d) }, + /* 56 */ { 11, CNST_LIMB(0x2c14fffcaa8b131e), CNST_LIMB(0xb9d5d9fd5010b366), CNST_LIMB(0xebb7392e00000000), CNST_LIMB(0x1607a2cbacf930c1) }, + /* 57 */ { 10, CNST_LIMB(0x2be398c3a38be053), CNST_LIMB(0xbaa708f58014d37c), CNST_LIMB(0x50633659656d971), CNST_LIMB(0x97a014f8e3be55f1) }, + /* 58 */ { 10, CNST_LIMB(0x2bb378e758451068), CNST_LIMB(0xbb74948f5532da4b), CNST_LIMB(0x5fa8624c7fba400), CNST_LIMB(0x568df8b76cbf212c) }, + /* 59 */ { 10, CNST_LIMB(0x2b8492108be5e5f7), CNST_LIMB(0xbc3e9ca2e1a05533), CNST_LIMB(0x717d9faa73c5679), CNST_LIMB(0x20ba7c4b4e6ef492) }, + /* 60 */ { 10, CNST_LIMB(0x2b56d6c70d55481b), CNST_LIMB(0xbd053f6d26089673), CNST_LIMB(0x86430aac6100000), CNST_LIMB(0xe81ee46b9ef492f5) }, + /* 61 */ { 10, CNST_LIMB(0x2b2a3a608c72ddd5), CNST_LIMB(0xbdc899ab3ff56c5e), CNST_LIMB(0x9e64d9944b57f29), CNST_LIMB(0x9dc0d10d51940416) }, + /* 62 */ { 10, CNST_LIMB(0x2afeb0f1060c7e41), CNST_LIMB(0xbe88c6b3626a72aa), CNST_LIMB(0xba5ca5392cb0400), CNST_LIMB(0x5fa8ed2f450272a5) }, + /* 63 */ { 10, CNST_LIMB(0x2ad42f3c9aca595c), CNST_LIMB(0xbf45e08bcf06554e), CNST_LIMB(0xdab2ce1d022cd81), CNST_LIMB(0x2ba9eb8c5e04e641) }, + /* 64 */ { 10, CNST_LIMB(0x2aaaaaaaaaaaaaaa), CNST_LIMB(0xbfffffffffffffff), CNST_LIMB(0x6), CNST_LIMB(0x0) }, + /* 65 */ { 10, CNST_LIMB(0x2a82193a13425883), CNST_LIMB(0xc0b73cb42e16914c), CNST_LIMB(0x12aeed5fd3e2d281), CNST_LIMB(0xb67759cc00287bf1) }, + /* 66 */ { 10, CNST_LIMB(0x2a5a717672f66450), CNST_LIMB(0xc16bad3758efd873), CNST_LIMB(0x15c3da1572d50400), CNST_LIMB(0x78621feeb7f4ed33) }, + /* 67 */ { 10, CNST_LIMB(0x2a33aa6e56d9c71c), CNST_LIMB(0xc21d6713f453f356), CNST_LIMB(0x194c05534f75ee29), CNST_LIMB(0x43d55b5f72943bc0) }, + /* 68 */ { 10, CNST_LIMB(0x2a0dbbaa3bdfcea4), CNST_LIMB(0xc2cc7edf592262cf), CNST_LIMB(0x1d56299ada100000), CNST_LIMB(0x173decb64d1d4409) }, + /* 69 */ { 10, CNST_LIMB(0x29e89d244eb4bfaf), CNST_LIMB(0xc379084815b5774c), CNST_LIMB(0x21f2a089a4ff4f79), CNST_LIMB(0xe29fb54fd6b6074f) }, + /* 70 */ { 10, CNST_LIMB(0x29c44740d7db51e6), CNST_LIMB(0xc4231623369e78e5), CNST_LIMB(0x2733896c68d9a400), CNST_LIMB(0xa1f1f5c210d54e62) }, + /* 71 */ { 10, CNST_LIMB(0x29a0b2c743b14d74), CNST_LIMB(0xc4caba789e2b8687), CNST_LIMB(0x2d2cf2c33b533c71), CNST_LIMB(0x6aac7f9bfafd57b2) }, + /* 72 */ { 10, CNST_LIMB(0x297dd8dbb7c22a2d), CNST_LIMB(0xc570068e7ef5a1e7), CNST_LIMB(0x33f506e440000000), CNST_LIMB(0x3b563c2478b72ee2) }, + /* 73 */ { 10, CNST_LIMB(0x295bb2f9285c8c1b), CNST_LIMB(0xc6130af40bc0ecbf), CNST_LIMB(0x3ba43bec1d062211), CNST_LIMB(0x12b536b574e92d1b) }, + /* 74 */ { 10, CNST_LIMB(0x293a3aebe2be1c92), CNST_LIMB(0xc6b3d78b6d3b24fb), CNST_LIMB(0x4455872d8fd4e400), CNST_LIMB(0xdf86c03020404fa5) }, + /* 75 */ { 10, CNST_LIMB(0x29196acc815ebd9f), CNST_LIMB(0xc7527b930c965bf2), CNST_LIMB(0x4e2694539f2f6c59), CNST_LIMB(0xa34adf02234eea8e) }, + /* 76 */ { 10, CNST_LIMB(0x28f93cfb40f5c22a), CNST_LIMB(0xc7ef05ae409a0288), CNST_LIMB(0x5938006c18900000), CNST_LIMB(0x6f46eb8574eb59dd) }, + /* 77 */ { 10, CNST_LIMB(0x28d9ac1badc64117), CNST_LIMB(0xc88983ed6985bae5), CNST_LIMB(0x65ad9912474aa649), CNST_LIMB(0x42459b481df47cec) }, + /* 78 */ { 10, CNST_LIMB(0x28bab310a196b478), CNST_LIMB(0xc92203d587039cc1), CNST_LIMB(0x73ae9ff4241ec400), CNST_LIMB(0x1b424b95d80ca505) }, + /* 79 */ { 10, CNST_LIMB(0x289c4cf88b774469), CNST_LIMB(0xc9b892675266f66c), CNST_LIMB(0x836612ee9c4ce1e1), CNST_LIMB(0xf2c1b982203a0dac) }, + /* 80 */ { 10, CNST_LIMB(0x287e7529fb244e91), CNST_LIMB(0xca4d3c25e68dc57f), CNST_LIMB(0x9502f90000000000), CNST_LIMB(0xb7cdfd9d7bdbab7d) }, + /* 81 */ { 10, CNST_LIMB(0x286127306a6a7a53), CNST_LIMB(0xcae00d1cfdeb43cf), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 82 */ { 10, CNST_LIMB(0x28445ec93f792b1e), CNST_LIMB(0xcb7110e6ce866f2b), CNST_LIMB(0xbebf59a07dab4400), CNST_LIMB(0x57931eeaf85cf64f) }, + /* 83 */ { 10, CNST_LIMB(0x282817e1038950fa), CNST_LIMB(0xcc0052b18b0e2a19), CNST_LIMB(0xd7540d4093bc3109), CNST_LIMB(0x305a944507c82f47) }, + /* 84 */ { 10, CNST_LIMB(0x280c4e90c9ab1f45), CNST_LIMB(0xcc8ddd448f8b845a), CNST_LIMB(0xf2b96616f1900000), CNST_LIMB(0xe007ccc9c22781a) }, + /* 85 */ { 9, CNST_LIMB(0x27f0ff1bc1ee87cd), CNST_LIMB(0xcd19bb053fb0284e), CNST_LIMB(0x336de62af2bca35), CNST_LIMB(0x3e92c42e000eeed4) }, + /* 86 */ { 9, CNST_LIMB(0x27d625ecf571c340), CNST_LIMB(0xcda3f5fb9c415052), CNST_LIMB(0x39235ec33d49600), CNST_LIMB(0x1ebe59130db2795e) }, + /* 87 */ { 9, CNST_LIMB(0x27bbbf95282fcd45), CNST_LIMB(0xce2c97d694adab3f), CNST_LIMB(0x3f674e539585a17), CNST_LIMB(0x268859e90f51b89) }, + /* 88 */ { 9, CNST_LIMB(0x27a1c8c8ddaf84da), CNST_LIMB(0xceb3a9f01975077f), CNST_LIMB(0x4645b6958000000), CNST_LIMB(0xd24cde0463108cfa) }, + /* 89 */ { 9, CNST_LIMB(0x27883e5e7df3f518), CNST_LIMB(0xcf393550f3aa6906), CNST_LIMB(0x4dcb74afbc49c19), CNST_LIMB(0xa536009f37adc383) }, + /* 90 */ { 9, CNST_LIMB(0x276f1d4c9847e90e), CNST_LIMB(0xcfbd42b465836767), CNST_LIMB(0x56064e1d18d9a00), CNST_LIMB(0x7cea06ce1c9ace10) }, + /* 91 */ { 9, CNST_LIMB(0x275662a841b30191), CNST_LIMB(0xd03fda8b97997f33), CNST_LIMB(0x5f04fe2cd8a39fb), CNST_LIMB(0x58db032e72e8ba43) }, + /* 92 */ { 9, CNST_LIMB(0x273e0ba38d15a47b), CNST_LIMB(0xd0c10500d63aa658), CNST_LIMB(0x68d74421f5c0000), CNST_LIMB(0x388cc17cae105447) }, + /* 93 */ { 9, CNST_LIMB(0x2726158c1b13cf03), CNST_LIMB(0xd140c9faa1e5439e), CNST_LIMB(0x738df1f6ab4827d), CNST_LIMB(0x1b92672857620ce0) }, + /* 94 */ { 9, CNST_LIMB(0x270e7dc9c01d8e9b), CNST_LIMB(0xd1bf311e95d00de3), CNST_LIMB(0x7f3afbc9cfb5e00), CNST_LIMB(0x18c6a9575c2ade4) }, + /* 95 */ { 9, CNST_LIMB(0x26f741dd3f070d61), CNST_LIMB(0xd23c41d42727c808), CNST_LIMB(0x8bf187fba88f35f), CNST_LIMB(0xd44da7da8e44b24f) }, + /* 96 */ { 9, CNST_LIMB(0x26e05f5f16c2159e), CNST_LIMB(0xd2b803473f7ad0f3), CNST_LIMB(0x99c600000000000), CNST_LIMB(0xaa2f78f1b4cc6794) }, + /* 97 */ { 9, CNST_LIMB(0x26c9d3fe61e80598), CNST_LIMB(0xd3327c6ab49ca6c8), CNST_LIMB(0xa8ce21eb6531361), CNST_LIMB(0x843c067d091ee4cc) }, + /* 98 */ { 9, CNST_LIMB(0x26b39d7fc6ddab08), CNST_LIMB(0xd3abb3faa02166cc), CNST_LIMB(0xb92112c1a0b6200), CNST_LIMB(0x62005e1e913356e3) }, + /* 99 */ { 9, CNST_LIMB(0x269db9bc7772a5cc), CNST_LIMB(0xd423b07e986aa967), CNST_LIMB(0xcad7718b8747c43), CNST_LIMB(0x4316eed01dedd518) }, + /* 100 */ { 9, CNST_LIMB(0x268826a13ef3fde6), CNST_LIMB(0xd49a784bcd1b8afe), CNST_LIMB(0xde0b6b3a7640000), CNST_LIMB(0x2725dd1d243aba0e) }, + /* 101 */ { 9, CNST_LIMB(0x2672e22d9dbdbd9f), CNST_LIMB(0xd510118708a8f8dd), CNST_LIMB(0xf2d8cf5fe6d74c5), CNST_LIMB(0xddd9057c24cb54f) }, + /* 102 */ { 9, CNST_LIMB(0x265dea72f169cc99), CNST_LIMB(0xd5848226989d33c3), CNST_LIMB(0x1095d25bfa712600), CNST_LIMB(0xedeee175a736d2a1) }, + /* 103 */ { 9, CNST_LIMB(0x26493d93a8cb2514), CNST_LIMB(0xd5f7cff41e09aeb8), CNST_LIMB(0x121b7c4c3698faa7), CNST_LIMB(0xc4699f3df8b6b328) }, + /* 104 */ { 9, CNST_LIMB(0x2634d9c282f3ef82), CNST_LIMB(0xd66a008e4788cbcd), CNST_LIMB(0x13c09e8d68000000), CNST_LIMB(0x9ebbe7d859cb5a7c) }, + /* 105 */ { 9, CNST_LIMB(0x2620bd41d8933adc), CNST_LIMB(0xd6db196a761949d9), CNST_LIMB(0x15876ccb0b709ca9), CNST_LIMB(0x7c828b9887eb2179) }, + /* 106 */ { 9, CNST_LIMB(0x260ce662ef04088a), CNST_LIMB(0xd74b1fd64e0753c6), CNST_LIMB(0x17723c2976da2a00), CNST_LIMB(0x5d652ab99001adcf) }, + /* 107 */ { 9, CNST_LIMB(0x25f95385547353fd), CNST_LIMB(0xd7ba18f93502e409), CNST_LIMB(0x198384e9c259048b), CNST_LIMB(0x4114f1754e5d7b32) }, + /* 108 */ { 9, CNST_LIMB(0x25e60316448db8e1), CNST_LIMB(0xd82809d5be7072db), CNST_LIMB(0x1bbde41dfeec0000), CNST_LIMB(0x274b7c902f7e0188) }, + /* 109 */ { 9, CNST_LIMB(0x25d2f390152f74f5), CNST_LIMB(0xd894f74b06ef8b40), CNST_LIMB(0x1e241d6e3337910d), CNST_LIMB(0xfc9e0fbb32e210c) }, + /* 110 */ { 9, CNST_LIMB(0x25c02379aa9ad043), CNST_LIMB(0xd900e6160002ccfe), CNST_LIMB(0x20b91cee9901ee00), CNST_LIMB(0xf4afa3e594f8ea1f) }, + /* 111 */ { 9, CNST_LIMB(0x25ad9165f2c18907), CNST_LIMB(0xd96bdad2acb5f5ef), CNST_LIMB(0x237ff9079863dfef), CNST_LIMB(0xcd85c32e9e4437b0) }, + /* 112 */ { 9, CNST_LIMB(0x259b3bf36735c90c), CNST_LIMB(0xd9d5d9fd5010b366), CNST_LIMB(0x267bf47000000000), CNST_LIMB(0xa9bbb147e0dd92a8) }, + /* 113 */ { 9, CNST_LIMB(0x258921cb955e7693), CNST_LIMB(0xda3ee7f38e181ed0), CNST_LIMB(0x29b08039fbeda7f1), CNST_LIMB(0x8900447b70e8eb82) }, + /* 114 */ { 9, CNST_LIMB(0x257741a2ac9170af), CNST_LIMB(0xdaa708f58014d37c), CNST_LIMB(0x2d213df34f65f200), CNST_LIMB(0x6b0a92adaad5848a) }, + /* 115 */ { 9, CNST_LIMB(0x25659a3711bc827d), CNST_LIMB(0xdb0e4126bcc86bd7), CNST_LIMB(0x30d201d957a7c2d3), CNST_LIMB(0x4f990ad8740f0ee5) }, + /* 116 */ { 9, CNST_LIMB(0x25542a50f84b9c39), CNST_LIMB(0xdb74948f5532da4b), CNST_LIMB(0x34c6d52160f40000), CNST_LIMB(0x3670a9663a8d3610) }, + /* 117 */ { 9, CNST_LIMB(0x2542f0c20000377d), CNST_LIMB(0xdbda071cc67e6db5), CNST_LIMB(0x3903f855d8f4c755), CNST_LIMB(0x1f5c44188057be3c) }, + /* 118 */ { 9, CNST_LIMB(0x2531ec64d772bd64), CNST_LIMB(0xdc3e9ca2e1a05533), CNST_LIMB(0x3d8de5c8ec59b600), CNST_LIMB(0xa2bea956c4e4977) }, + /* 119 */ { 9, CNST_LIMB(0x25211c1ce2fb5a6e), CNST_LIMB(0xdca258dca9331635), CNST_LIMB(0x4269541d1ff01337), CNST_LIMB(0xed68b23033c3637e) }, + /* 120 */ { 9, CNST_LIMB(0x25107ed5e7c3ec3b), CNST_LIMB(0xdd053f6d26089673), CNST_LIMB(0x479b38e478000000), CNST_LIMB(0xc99cf624e50549c5) }, + /* 121 */ { 9, CNST_LIMB(0x25001383bac8a744), CNST_LIMB(0xdd6753e032ea0efe), CNST_LIMB(0x4d28cb56c33fa539), CNST_LIMB(0xa8adf7ae45e7577b) }, + /* 122 */ { 9, CNST_LIMB(0x24efd921f390bce3), CNST_LIMB(0xddc899ab3ff56c5e), CNST_LIMB(0x5317871fa13aba00), CNST_LIMB(0x8a5bc740b1c113e5) }, + /* 123 */ { 9, CNST_LIMB(0x24dfceb3a26bb203), CNST_LIMB(0xde29142e0e01401f), CNST_LIMB(0x596d2f44de9fa71b), CNST_LIMB(0x6e6c7efb81cfbb9b) }, + /* 124 */ { 9, CNST_LIMB(0x24cff3430a0341a7), CNST_LIMB(0xde88c6b3626a72aa), CNST_LIMB(0x602fd125c47c0000), CNST_LIMB(0x54aba5c5cada5f10) }, + /* 125 */ { 9, CNST_LIMB(0x24c045e15c149931), CNST_LIMB(0xdee7b471b3a9507d), CNST_LIMB(0x6765c793fa10079d), CNST_LIMB(0x3ce9a36f23c0fc90) }, + /* 126 */ { 9, CNST_LIMB(0x24b0c5a679267ae2), CNST_LIMB(0xdf45e08bcf06554e), CNST_LIMB(0x6f15be069b847e00), CNST_LIMB(0x26fb43de2c8cd2a8) }, + /* 127 */ { 9, CNST_LIMB(0x24a171b0b31461c8), CNST_LIMB(0xdfa34e1177c23362), CNST_LIMB(0x7746b3e82a77047f), CNST_LIMB(0x12b94793db8486a1) }, + /* 128 */ { 9, CNST_LIMB(0x2492492492492492), CNST_LIMB(0xdfffffffffffffff), CNST_LIMB(0x7), CNST_LIMB(0x0) }, + /* 129 */ { 9, CNST_LIMB(0x24834b2c9d85cdfe), CNST_LIMB(0xe05bf942dbbc2145), CNST_LIMB(0x894953f7ea890481), CNST_LIMB(0xdd5deca404c0156d) }, + /* 130 */ { 9, CNST_LIMB(0x247476f924137501), CNST_LIMB(0xe0b73cb42e16914c), CNST_LIMB(0x932abffea4848200), CNST_LIMB(0xbd51373330291de0) }, + /* 131 */ { 9, CNST_LIMB(0x2465cbc00a40cec0), CNST_LIMB(0xe111cd1d5133412e), CNST_LIMB(0x9dacb687d3d6a163), CNST_LIMB(0x9fa4025d66f23085) }, + /* 132 */ { 9, CNST_LIMB(0x245748bc980e0427), CNST_LIMB(0xe16bad3758efd873), CNST_LIMB(0xa8d8102a44840000), CNST_LIMB(0x842530ee2db4949d) }, + /* 133 */ { 9, CNST_LIMB(0x2448ed2f49eb0633), CNST_LIMB(0xe1c4dfab90aab5ef), CNST_LIMB(0xb4b60f9d140541e5), CNST_LIMB(0x6aa7f2766b03dc25) }, + /* 134 */ { 9, CNST_LIMB(0x243ab85da36e3167), CNST_LIMB(0xe21d6713f453f356), CNST_LIMB(0xc15065d4856e4600), CNST_LIMB(0x53035ba7ebf32e8d) }, + /* 135 */ { 9, CNST_LIMB(0x242ca99203ea8c18), CNST_LIMB(0xe27545fba4fe385a), CNST_LIMB(0xceb1363f396d23c7), CNST_LIMB(0x3d12091fc9fb4914) }, + /* 136 */ { 9, CNST_LIMB(0x241ec01b7cce4ea0), CNST_LIMB(0xe2cc7edf592262cf), CNST_LIMB(0xdce31b2488000000), CNST_LIMB(0x28b1cb81b1ef1849) }, + /* 137 */ { 9, CNST_LIMB(0x2410fb4da9b3b0fc), CNST_LIMB(0xe323142dc8c66b55), CNST_LIMB(0xebf12a24bca135c9), CNST_LIMB(0x15c35be67ae3e2c9) }, + /* 138 */ { 9, CNST_LIMB(0x24035a808a0f315e), CNST_LIMB(0xe379084815b5774c), CNST_LIMB(0xfbe6f8dbf88f4a00), CNST_LIMB(0x42a17bd09be1ff0) }, + /* 139 */ { 8, CNST_LIMB(0x23f5dd105c67ab9d), CNST_LIMB(0xe3ce5d822ff4b643), CNST_LIMB(0x1ef156c084ce761), CNST_LIMB(0x8bf461f03cf0bbf) }, + /* 140 */ { 8, CNST_LIMB(0x23e8825d7b05abb1), CNST_LIMB(0xe4231623369e78e5), CNST_LIMB(0x20c4e3b94a10000), CNST_LIMB(0xf3fbb43f68a32d05) }, + /* 141 */ { 8, CNST_LIMB(0x23db49cc3a0866fe), CNST_LIMB(0xe4773465d54aded7), CNST_LIMB(0x22b0695a08ba421), CNST_LIMB(0xd84f44c48564dc19) }, + /* 142 */ { 8, CNST_LIMB(0x23ce32c4c6cfb9f5), CNST_LIMB(0xe4caba789e2b8687), CNST_LIMB(0x24b4f35d7a4c100), CNST_LIMB(0xbe58ebcce7956abe) }, + /* 143 */ { 8, CNST_LIMB(0x23c13cb308ab6ab7), CNST_LIMB(0xe51daa7e60fdd34c), CNST_LIMB(0x26d397284975781), CNST_LIMB(0xa5fac463c7c134b7) }, + /* 144 */ { 8, CNST_LIMB(0x23b4670682c0c709), CNST_LIMB(0xe570068e7ef5a1e7), CNST_LIMB(0x290d74100000000), CNST_LIMB(0x8f19241e28c7d757) }, + /* 145 */ { 8, CNST_LIMB(0x23a7b13237187c8b), CNST_LIMB(0xe5c1d0b53bc09fca), CNST_LIMB(0x2b63b3a37866081), CNST_LIMB(0x799a6d046c0ae1ae) }, + /* 146 */ { 8, CNST_LIMB(0x239b1aac8ac74728), CNST_LIMB(0xe6130af40bc0ecbf), CNST_LIMB(0x2dd789f4d894100), CNST_LIMB(0x6566e37d746a9e40) }, + /* 147 */ { 8, CNST_LIMB(0x238ea2ef2b24c379), CNST_LIMB(0xe663b741df9c37c0), CNST_LIMB(0x306a35e51b58721), CNST_LIMB(0x526887dbfb5f788f) }, + /* 148 */ { 8, CNST_LIMB(0x23824976f4045a26), CNST_LIMB(0xe6b3d78b6d3b24fb), CNST_LIMB(0x331d01712e10000), CNST_LIMB(0x408af3382b8efd3d) }, + /* 149 */ { 8, CNST_LIMB(0x23760dc3d6e4d729), CNST_LIMB(0xe7036db376537b90), CNST_LIMB(0x35f14200a827c61), CNST_LIMB(0x2fbb374806ec05f1) }, + /* 150 */ { 8, CNST_LIMB(0x2369ef58c30bd43e), CNST_LIMB(0xe7527b930c965bf2), CNST_LIMB(0x38e858b62216100), CNST_LIMB(0x1fe7c0f0afce87fe) }, + /* 151 */ { 8, CNST_LIMB(0x235dedbb8e82aa1c), CNST_LIMB(0xe7a102f9d39a9331), CNST_LIMB(0x3c03b2c13176a41), CNST_LIMB(0x11003d517540d32e) }, + /* 152 */ { 8, CNST_LIMB(0x23520874dfeb1ffd), CNST_LIMB(0xe7ef05ae409a0288), CNST_LIMB(0x3f44c9b21000000), CNST_LIMB(0x2f5810f98eff0dc) }, + /* 153 */ { 8, CNST_LIMB(0x23463f1019228dd7), CNST_LIMB(0xe83c856dd81804b7), CNST_LIMB(0x42ad23cef3113c1), CNST_LIMB(0xeb72e35e7840d910) }, + /* 154 */ { 8, CNST_LIMB(0x233a911b42aa9b3c), CNST_LIMB(0xe88983ed6985bae5), CNST_LIMB(0x463e546b19a2100), CNST_LIMB(0xd27de19593dc3614) }, + /* 155 */ { 8, CNST_LIMB(0x232efe26f7cf33f9), CNST_LIMB(0xe8d602d948f83829), CNST_LIMB(0x49f9fc3f96684e1), CNST_LIMB(0xbaf391fd3e5e6fc2) }, + /* 156 */ { 8, CNST_LIMB(0x232385c65381b485), CNST_LIMB(0xe92203d587039cc1), CNST_LIMB(0x4de1c9c5dc10000), CNST_LIMB(0xa4bd38c55228c81d) }, + /* 157 */ { 8, CNST_LIMB(0x2318278edde1b39b), CNST_LIMB(0xe96d887e26cd57b7), CNST_LIMB(0x51f77994116d2a1), CNST_LIMB(0x8fc5a8de8e1de782) }, + /* 158 */ { 8, CNST_LIMB(0x230ce3187a6c2be9), CNST_LIMB(0xe9b892675266f66c), CNST_LIMB(0x563cd6bb3398100), CNST_LIMB(0x7bf9265bea9d3a3b) }, + /* 159 */ { 8, CNST_LIMB(0x2301b7fd56ca21bb), CNST_LIMB(0xea03231d8d8224ba), CNST_LIMB(0x5ab3bb270beeb01), CNST_LIMB(0x69454b325983dccd) }, + /* 160 */ { 8, CNST_LIMB(0x22f6a5d9da38341c), CNST_LIMB(0xea4d3c25e68dc57f), CNST_LIMB(0x5f5e10000000000), CNST_LIMB(0x5798ee2308c39df9) }, + /* 161 */ { 8, CNST_LIMB(0x22ebac4c9580d89f), CNST_LIMB(0xea96defe264b59be), CNST_LIMB(0x643dce0ec16f501), CNST_LIMB(0x46e40ba0fa66a753) }, + /* 162 */ { 8, CNST_LIMB(0x22e0caf633834beb), CNST_LIMB(0xeae00d1cfdeb43cf), CNST_LIMB(0x6954fe21e3e8100), CNST_LIMB(0x3717b0870b0db3a7) }, + /* 163 */ { 8, CNST_LIMB(0x22d601796a418886), CNST_LIMB(0xeb28c7f233bdd372), CNST_LIMB(0x6ea5b9755f440a1), CNST_LIMB(0x2825e6775d11cdeb) }, + /* 164 */ { 8, CNST_LIMB(0x22cb4f7aec6fd8b4), CNST_LIMB(0xeb7110e6ce866f2b), CNST_LIMB(0x74322a1c0410000), CNST_LIMB(0x1a01a1c09d1b4dac) }, + /* 165 */ { 8, CNST_LIMB(0x22c0b4a15b80d83e), CNST_LIMB(0xebb8e95d3f7d9df2), CNST_LIMB(0x79fc8b6ae8a46e1), CNST_LIMB(0xc9eb0a8bebc8f3e) }, + /* 166 */ { 8, CNST_LIMB(0x22b630953a28f77a), CNST_LIMB(0xec0052b18b0e2a19), CNST_LIMB(0x80072a66d512100), CNST_LIMB(0xffe357ff59e6a004) }, + /* 167 */ { 8, CNST_LIMB(0x22abc300df54ca7c), CNST_LIMB(0xec474e39705912d2), CNST_LIMB(0x86546633b42b9c1), CNST_LIMB(0xe7dfd1be05fa61a8) }, + /* 168 */ { 8, CNST_LIMB(0x22a16b90698da5d2), CNST_LIMB(0xec8ddd448f8b845a), CNST_LIMB(0x8ce6b0861000000), CNST_LIMB(0xd11ed6fc78f760e5) }, + /* 169 */ { 8, CNST_LIMB(0x229729f1b2c83ded), CNST_LIMB(0xecd4011c8f11979a), CNST_LIMB(0x93c08e16a022441), CNST_LIMB(0xbb8db609dd29ebfe) }, + /* 170 */ { 8, CNST_LIMB(0x228cfdd444992f78), CNST_LIMB(0xed19bb053fb0284e), CNST_LIMB(0x9ae49717f026100), CNST_LIMB(0xa71aec8d1813d532) }, + /* 171 */ { 8, CNST_LIMB(0x2282e6e94ccb8588), CNST_LIMB(0xed5f0c3cbf8fa470), CNST_LIMB(0xa25577ae24c1a61), CNST_LIMB(0x93b612a9f20fbc02) }, + /* 172 */ { 8, CNST_LIMB(0x2278e4e392557ecf), CNST_LIMB(0xeda3f5fb9c415052), CNST_LIMB(0xaa15f068e610000), CNST_LIMB(0x814fc7b19a67d317) }, + /* 173 */ { 8, CNST_LIMB(0x226ef7776aa7fd29), CNST_LIMB(0xede87974f3c81855), CNST_LIMB(0xb228d6bf7577921), CNST_LIMB(0x6fd9a03f2e0a4b7c) }, + /* 174 */ { 8, CNST_LIMB(0x22651e5aaf5532d0), CNST_LIMB(0xee2c97d694adab3f), CNST_LIMB(0xba91158ef5c4100), CNST_LIMB(0x5f4615a38d0d316e) }, + /* 175 */ { 8, CNST_LIMB(0x225b5944b40b4694), CNST_LIMB(0xee7052491d2c3e64), CNST_LIMB(0xc351ad9aec0b681), CNST_LIMB(0x4f8876863479a286) }, + /* 176 */ { 8, CNST_LIMB(0x2251a7ee3cdfcca5), CNST_LIMB(0xeeb3a9f01975077f), CNST_LIMB(0xcc6db6100000000), CNST_LIMB(0x4094d8a3041b60eb) }, + /* 177 */ { 8, CNST_LIMB(0x22480a1174e913d9), CNST_LIMB(0xeef69fea211b2627), CNST_LIMB(0xd5e85d09025c181), CNST_LIMB(0x32600b8ed883a09b) }, + /* 178 */ { 8, CNST_LIMB(0x223e7f69e522683c), CNST_LIMB(0xef393550f3aa6906), CNST_LIMB(0xdfc4e816401c100), CNST_LIMB(0x24df8c6eb4b6d1f1) }, + /* 179 */ { 8, CNST_LIMB(0x223507b46b988abe), CNST_LIMB(0xef7b6b399471103e), CNST_LIMB(0xea06b4c72947221), CNST_LIMB(0x18097a8ee151acef) }, + /* 180 */ { 8, CNST_LIMB(0x222ba2af32dbbb9e), CNST_LIMB(0xefbd42b465836767), CNST_LIMB(0xf4b139365210000), CNST_LIMB(0xbd48cc8ec1cd8e3) }, + /* 181 */ { 8, CNST_LIMB(0x22225019a9b4d16c), CNST_LIMB(0xeffebccd41ffcd5c), CNST_LIMB(0xffc80497d520961), CNST_LIMB(0x3807a8d67485fb) }, + /* 182 */ { 8, CNST_LIMB(0x22190fb47b1af172), CNST_LIMB(0xf03fda8b97997f33), CNST_LIMB(0x10b4ebfca1dee100), CNST_LIMB(0xea5768860b62e8d8) }, + /* 183 */ { 8, CNST_LIMB(0x220fe14186679801), CNST_LIMB(0xf0809cf27f703d52), CNST_LIMB(0x117492de921fc141), CNST_LIMB(0xd54faf5b635c5005) }, + /* 184 */ { 8, CNST_LIMB(0x2206c483d7c6b786), CNST_LIMB(0xf0c10500d63aa658), CNST_LIMB(0x123bb2ce41000000), CNST_LIMB(0xc14a56233a377926) }, + /* 185 */ { 8, CNST_LIMB(0x21fdb93fa0e0ccc5), CNST_LIMB(0xf10113b153c8ea7b), CNST_LIMB(0x130a8b6157bdecc1), CNST_LIMB(0xae39a88db7cd329f) }, + /* 186 */ { 8, CNST_LIMB(0x21f4bf3a31bcdcaa), CNST_LIMB(0xf140c9faa1e5439e), CNST_LIMB(0x13e15dede0e8a100), CNST_LIMB(0x9c10bde69efa7ab6) }, + /* 187 */ { 8, CNST_LIMB(0x21ebd639f1d86584), CNST_LIMB(0xf18028cf72976a4e), CNST_LIMB(0x14c06d941c0ca7e1), CNST_LIMB(0x8ac36c42a2836497) }, + /* 188 */ { 8, CNST_LIMB(0x21e2fe06597361a6), CNST_LIMB(0xf1bf311e95d00de3), CNST_LIMB(0x15a7ff487a810000), CNST_LIMB(0x7a463c8b84f5ef67) }, + /* 189 */ { 8, CNST_LIMB(0x21da3667eb0e8ccb), CNST_LIMB(0xf1fde3d30e812642), CNST_LIMB(0x169859ddc5c697a1), CNST_LIMB(0x6a8e5f5ad090fd4b) }, + /* 190 */ { 8, CNST_LIMB(0x21d17f282d1a300e), CNST_LIMB(0xf23c41d42727c808), CNST_LIMB(0x1791c60f6fed0100), CNST_LIMB(0x5b91a2943596fc56) }, + /* 191 */ { 8, CNST_LIMB(0x21c8d811a3d3c9e1), CNST_LIMB(0xf27a4c0585cbf805), CNST_LIMB(0x18948e8c0e6fba01), CNST_LIMB(0x4d4667b1c468e8f0) }, + /* 192 */ { 8, CNST_LIMB(0x21c040efcb50f858), CNST_LIMB(0xf2b803473f7ad0f3), CNST_LIMB(0x19a1000000000000), CNST_LIMB(0x3fa39ab547994daf) }, + /* 193 */ { 8, CNST_LIMB(0x21b7b98f11b61c1a), CNST_LIMB(0xf2f56875eb3f2614), CNST_LIMB(0x1ab769203dafc601), CNST_LIMB(0x32a0a9b2faee1e2a) }, + /* 194 */ { 8, CNST_LIMB(0x21af41bcd19739ba), CNST_LIMB(0xf3327c6ab49ca6c8), CNST_LIMB(0x1bd81ab557f30100), CNST_LIMB(0x26357ceac0e96962) }, + /* 195 */ { 8, CNST_LIMB(0x21a6d9474c81adf0), CNST_LIMB(0xf36f3ffb6d916240), CNST_LIMB(0x1d0367a69fed1ba1), CNST_LIMB(0x1a5a6f65caa5859e) }, + /* 196 */ { 8, CNST_LIMB(0x219e7ffda5ad572a), CNST_LIMB(0xf3abb3faa02166cc), CNST_LIMB(0x1e39a5057d810000), CNST_LIMB(0xf08480f672b4e86) }, + /* 197 */ { 8, CNST_LIMB(0x219635afdcd3e46d), CNST_LIMB(0xf3e7d9379f70166a), CNST_LIMB(0x1f7b2a18f29ac3e1), CNST_LIMB(0x4383340615612ca) }, + /* 198 */ { 8, CNST_LIMB(0x218dfa2ec92d0643), CNST_LIMB(0xf423b07e986aa967), CNST_LIMB(0x20c850694c2aa100), CNST_LIMB(0xf3c77969ee4be5a2) }, + /* 199 */ { 8, CNST_LIMB(0x2185cd4c148e4ae2), CNST_LIMB(0xf45f3a98a20738a4), CNST_LIMB(0x222173cc014980c1), CNST_LIMB(0xe00993cc187c5ec9) }, + /* 200 */ { 8, CNST_LIMB(0x217daeda36ad7a5c), CNST_LIMB(0xf49a784bcd1b8afe), CNST_LIMB(0x2386f26fc1000000), CNST_LIMB(0xcd2b297d889bc2b6) }, + /* 201 */ { 8, CNST_LIMB(0x21759eac708452fe), CNST_LIMB(0xf4d56a5b33cec44a), CNST_LIMB(0x24f92ce8af296d41), CNST_LIMB(0xbb214d5064862b22) }, + /* 202 */ { 8, CNST_LIMB(0x216d9c96c7d490d4), CNST_LIMB(0xf510118708a8f8dd), CNST_LIMB(0x2678863cd0ece100), CNST_LIMB(0xa9e1a7ca7ea10e20) }, + /* 203 */ { 8, CNST_LIMB(0x2165a86e02cb358c), CNST_LIMB(0xf54a6e8ca5438db1), CNST_LIMB(0x280563f0a9472d61), CNST_LIMB(0x99626e72b39ea0cf) }, + /* 204 */ { 8, CNST_LIMB(0x215dc207a3c20fdf), CNST_LIMB(0xf5848226989d33c3), CNST_LIMB(0x29a02e1406210000), CNST_LIMB(0x899a5ba9c13fafd9) }, + /* 205 */ { 8, CNST_LIMB(0x2155e939e51e8b37), CNST_LIMB(0xf5be4d0cb51434aa), CNST_LIMB(0x2b494f4efe6d2e21), CNST_LIMB(0x7a80a705391e96ff) }, + /* 206 */ { 8, CNST_LIMB(0x214e1ddbb54cd933), CNST_LIMB(0xf5f7cff41e09aeb8), CNST_LIMB(0x2d0134ef21cbc100), CNST_LIMB(0x6c0cfe23de23042a) }, + /* 207 */ { 8, CNST_LIMB(0x21465fc4b2d68f98), CNST_LIMB(0xf6310b8f55304840), CNST_LIMB(0x2ec84ef4da2ef581), CNST_LIMB(0x5e377df359c944dd) }, + /* 208 */ { 8, CNST_LIMB(0x213eaecd2893dd60), CNST_LIMB(0xf66a008e4788cbcd), CNST_LIMB(0x309f102100000000), CNST_LIMB(0x50f8ac5fc8f53985) }, + /* 209 */ { 8, CNST_LIMB(0x21370ace09f681c6), CNST_LIMB(0xf6a2af9e5a0f0a08), CNST_LIMB(0x3285ee02a1420281), CNST_LIMB(0x44497266278e35b7) }, + /* 210 */ { 8, CNST_LIMB(0x212f73a0ef6db7cb), CNST_LIMB(0xf6db196a761949d9), CNST_LIMB(0x347d6104fc324100), CNST_LIMB(0x382316831f7ee175) }, + /* 211 */ { 8, CNST_LIMB(0x2127e92012e25004), CNST_LIMB(0xf7133e9b156c7be5), CNST_LIMB(0x3685e47dade53d21), CNST_LIMB(0x2c7f377833b8946e) }, + /* 212 */ { 8, CNST_LIMB(0x21206b264c4a39a7), CNST_LIMB(0xf74b1fd64e0753c6), CNST_LIMB(0x389ff6bb15610000), CNST_LIMB(0x2157c761ab4163ef) }, + /* 213 */ { 8, CNST_LIMB(0x2118f98f0e52c28f), CNST_LIMB(0xf782bdbfdda6577b), CNST_LIMB(0x3acc1912ebb57661), CNST_LIMB(0x16a7071803cc49a9) }, + /* 214 */ { 8, CNST_LIMB(0x211194366320dc66), CNST_LIMB(0xf7ba18f93502e409), CNST_LIMB(0x3d0acff111946100), CNST_LIMB(0xc6781d80f8224fc) }, + /* 215 */ { 8, CNST_LIMB(0x210a3af8e926bb78), CNST_LIMB(0xf7f1322182cf15d1), CNST_LIMB(0x3f5ca2e692eaf841), CNST_LIMB(0x294092d370a900b) }, + /* 216 */ { 8, CNST_LIMB(0x2102edb3d00e29a6), CNST_LIMB(0xf82809d5be7072db), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) }, + /* 217 */ { 8, CNST_LIMB(0x20fbac44d5b6edc2), CNST_LIMB(0xf85ea0b0b27b2610), CNST_LIMB(0x443bcb714399a5c1), CNST_LIMB(0xe03b98f103fad6d2) }, + /* 218 */ { 8, CNST_LIMB(0x20f4768a4348ad08), CNST_LIMB(0xf894f74b06ef8b40), CNST_LIMB(0x46ca406c81af2100), CNST_LIMB(0xcee3d32cad2a9049) }, + /* 219 */ { 8, CNST_LIMB(0x20ed4c62ea57b1f0), CNST_LIMB(0xf8cb0e3b4b3bbdb3), CNST_LIMB(0x496e106ac22aaae1), CNST_LIMB(0xbe3f9df9277fdada) }, + /* 220 */ { 8, CNST_LIMB(0x20e62dae221c087a), CNST_LIMB(0xf900e6160002ccfe), CNST_LIMB(0x4c27d39fa5410000), CNST_LIMB(0xae46f0d94c05e933) }, + /* 221 */ { 8, CNST_LIMB(0x20df1a4bc4ba6525), CNST_LIMB(0xf9367f6da0ab2e9c), CNST_LIMB(0x4ef825c296e43ca1), CNST_LIMB(0x9ef2280fb437a33d) }, + /* 222 */ { 8, CNST_LIMB(0x20d8121c2c9e506e), CNST_LIMB(0xf96bdad2acb5f5ef), CNST_LIMB(0x51dfa61f5ad88100), CNST_LIMB(0x9039ff426d3f284b) }, + /* 223 */ { 8, CNST_LIMB(0x20d1150031e51549), CNST_LIMB(0xf9a0f8d3b0e04fde), CNST_LIMB(0x54def7a6d2f16901), CNST_LIMB(0x82178c6d6b51f8f4) }, + /* 224 */ { 8, CNST_LIMB(0x20ca22d927d8f54d), CNST_LIMB(0xf9d5d9fd5010b366), CNST_LIMB(0x57f6c10000000000), CNST_LIMB(0x74843b1ee4c1e053) }, + /* 225 */ { 8, CNST_LIMB(0x20c33b88da7c29aa), CNST_LIMB(0xfa0a7eda4c112ce6), CNST_LIMB(0x5b27ac993df97701), CNST_LIMB(0x6779c7f90dc42f48) }, + /* 226 */ { 8, CNST_LIMB(0x20bc5ef18c233bdf), CNST_LIMB(0xfa3ee7f38e181ed0), CNST_LIMB(0x5e7268b9bbdf8100), CNST_LIMB(0x5af23c74f9ad9fe9) }, + /* 227 */ { 8, CNST_LIMB(0x20b58cf5f31e4526), CNST_LIMB(0xfa7315d02f20c7bd), CNST_LIMB(0x61d7a7932ff3d6a1), CNST_LIMB(0x4ee7eae2acdc617e) }, + /* 228 */ { 8, CNST_LIMB(0x20aec5793770a74d), CNST_LIMB(0xfaa708f58014d37c), CNST_LIMB(0x65581f53c8c10000), CNST_LIMB(0x43556aa2ac262a0b) }, + /* 229 */ { 8, CNST_LIMB(0x20a8085ef096d530), CNST_LIMB(0xfadac1e711c832d1), CNST_LIMB(0x68f48a385b8320e1), CNST_LIMB(0x3835949593b8ddd1) }, + /* 230 */ { 8, CNST_LIMB(0x20a1558b2359c4b1), CNST_LIMB(0xfb0e4126bcc86bd7), CNST_LIMB(0x6cada69ed07c2100), CNST_LIMB(0x2d837fbe78458762) }, + /* 231 */ { 8, CNST_LIMB(0x209aace23fafa72e), CNST_LIMB(0xfb418734a9008bd9), CNST_LIMB(0x70843718cdbf27c1), CNST_LIMB(0x233a7e150a54a555) }, + /* 232 */ { 8, CNST_LIMB(0x20940e491ea988d7), CNST_LIMB(0xfb74948f5532da4b), CNST_LIMB(0x7479027ea1000000), CNST_LIMB(0x19561984a50ff8fe) }, + /* 233 */ { 8, CNST_LIMB(0x208d79a5006d7a47), CNST_LIMB(0xfba769b39e49640e), CNST_LIMB(0x788cd40268f39641), CNST_LIMB(0xfd211159fe3490f) }, + /* 234 */ { 8, CNST_LIMB(0x2086eedb8a3cead3), CNST_LIMB(0xfbda071cc67e6db5), CNST_LIMB(0x7cc07b437ecf6100), CNST_LIMB(0x6aa563e655033e3) }, + /* 235 */ { 8, CNST_LIMB(0x20806dd2c486dcc6), CNST_LIMB(0xfc0c6d447c5dd362), CNST_LIMB(0x8114cc6220762061), CNST_LIMB(0xfbb614b3f2d3b14c) }, + /* 236 */ { 8, CNST_LIMB(0x2079f67119059fae), CNST_LIMB(0xfc3e9ca2e1a05533), CNST_LIMB(0x858aa0135be10000), CNST_LIMB(0xeac0f8837fb05773) }, + /* 237 */ { 8, CNST_LIMB(0x2073889d50e7bf63), CNST_LIMB(0xfc7095ae91e1c760), CNST_LIMB(0x8a22d3b53c54c321), CNST_LIMB(0xda6e4c10e8615ca5) }, + /* 238 */ { 8, CNST_LIMB(0x206d243e9303d929), CNST_LIMB(0xfca258dca9331635), CNST_LIMB(0x8ede496339f34100), CNST_LIMB(0xcab755a8d01fa67f) }, + /* 239 */ { 8, CNST_LIMB(0x2066c93c62170aa8), CNST_LIMB(0xfcd3e6a0ca8906c2), CNST_LIMB(0x93bde80aec3a1481), CNST_LIMB(0xbb95a9ae71aa3e0c) }, + /* 240 */ { 8, CNST_LIMB(0x2060777e9b0db0f6), CNST_LIMB(0xfd053f6d26089673), CNST_LIMB(0x98c29b8100000000), CNST_LIMB(0xad0326c296b4f529) }, + /* 241 */ { 8, CNST_LIMB(0x205a2eed73563032), CNST_LIMB(0xfd3663b27f31d529), CNST_LIMB(0x9ded549671832381), CNST_LIMB(0x9ef9f21eed31b7c1) }, + /* 242 */ { 8, CNST_LIMB(0x2053ef71773d7e6a), CNST_LIMB(0xfd6753e032ea0efe), CNST_LIMB(0xa33f092e0b1ac100), CNST_LIMB(0x91747422be14b0b2) }, + /* 243 */ { 8, CNST_LIMB(0x204db8f388552ea9), CNST_LIMB(0xfd9810643d6614c3), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) }, + /* 244 */ { 8, CNST_LIMB(0x20478b5cdbe2bb2f), CNST_LIMB(0xfdc899ab3ff56c5e), CNST_LIMB(0xae5b564ac3a10000), CNST_LIMB(0x77df79e9a96c06f6) }, + /* 245 */ { 8, CNST_LIMB(0x20416696f957cfbf), CNST_LIMB(0xfdf8f02086af2c4b), CNST_LIMB(0xb427f4b3be74c361), CNST_LIMB(0x6bc6019636c7d0c2) }, + /* 246 */ { 8, CNST_LIMB(0x203b4a8bb8d356e7), CNST_LIMB(0xfe29142e0e01401f), CNST_LIMB(0xba1f9a938041e100), CNST_LIMB(0x601c4205aebd9e47) }, + /* 247 */ { 8, CNST_LIMB(0x2035372541ab0f0d), CNST_LIMB(0xfe59063c8822ce56), CNST_LIMB(0xc0435871d1110f41), CNST_LIMB(0x54ddc59756f05016) }, + /* 248 */ { 8, CNST_LIMB(0x202f2c4e08fd6dcc), CNST_LIMB(0xfe88c6b3626a72aa), CNST_LIMB(0xc694446f01000000), CNST_LIMB(0x4a0648979c838c18) }, + /* 249 */ { 8, CNST_LIMB(0x202929f0d04b99e9), CNST_LIMB(0xfeb855f8ca88fb0d), CNST_LIMB(0xcd137a5b57ac3ec1), CNST_LIMB(0x3f91b6e0bb3a053d) }, + /* 250 */ { 8, CNST_LIMB(0x20232ff8a41b45eb), CNST_LIMB(0xfee7b471b3a9507d), CNST_LIMB(0xd3c21bcecceda100), CNST_LIMB(0x357c299a88ea76a5) }, + /* 251 */ { 8, CNST_LIMB(0x201d3e50daa036db), CNST_LIMB(0xff16e281db76303b), CNST_LIMB(0xdaa150410b788de1), CNST_LIMB(0x2bc1e517aecc56e3) }, + /* 252 */ { 8, CNST_LIMB(0x201754e5126d446d), CNST_LIMB(0xff45e08bcf06554e), CNST_LIMB(0xe1b24521be010000), CNST_LIMB(0x225f56ceb3da9f5d) }, + /* 253 */ { 8, CNST_LIMB(0x201173a1312ca135), CNST_LIMB(0xff74aef0efafadd7), CNST_LIMB(0xe8f62df12777c1a1), CNST_LIMB(0x1951136d53ad63ac) }, + /* 254 */ { 8, CNST_LIMB(0x200b9a71625f3b13), CNST_LIMB(0xffa34e1177c23362), CNST_LIMB(0xf06e445906fc0100), CNST_LIMB(0x1093d504b3cd7d93) }, + /* 255 */ { 8, CNST_LIMB(0x2005c94216230568), CNST_LIMB(0xffd1be4c7f2af942), CNST_LIMB(0xf81bc845c81bf801), CNST_LIMB(0x824794d1ec1814f) }, + /* 256 */ { 8, CNST_LIMB(0x1fffffffffffffff), CNST_LIMB(0xffffffffffffffff), CNST_LIMB(0x8), CNST_LIMB(0x0) }, +}; diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/mul_1.s b/vere/ext/gmp/gen/x86_64-windows/mpn/mul_1.s new file mode 100644 index 0000000..4115e20 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/mul_1.s @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mul_1c + + .def __gmpn_mul_1c + .scl 2 + .type 32 + .endef +__gmpn_mul_1c: + +push %rsi +push %rdi +mov %rdx, %rsi + push %rbx + + mov 64(%rsp), %r10 + jmp Lcommon + + + .globl __gmpn_mul_1 + + .def __gmpn_mul_1 + .scl 2 + .type 32 + .endef +__gmpn_mul_1: + +push %rsi +push %rdi +mov %rdx, %rsi + + push %rbx + xor %r10, %r10 +Lcommon: + mov (%rsi), %rax + + mov %r8, %rbx + mul %r9 + + + add %r10, %rax + adc $0, %rdx + + and $3, %ebx + jz Lb0 + cmp $2, %ebx + jz Lb2 + jg Lb3 + +Lb1: dec %r8 + jne Lgt1 + mov %rax, (%rcx) + jmp Lret +Lgt1: lea 8(%rsi,%r8,8), %rsi + lea -8(%rcx,%r8,8), %rcx + neg %r8 + xor %r10, %r10 + xor %ebx, %ebx + mov %rax, %rdi + mov (%rsi,%r8,8), %rax + mov %rdx, %r11 + jmp LL1 + +Lb0: lea (%rsi,%r8,8), %rsi + lea -16(%rcx,%r8,8), %rcx + neg %r8 + xor %r10, %r10 + mov %rax, %r11 + mov %rdx, %rbx + jmp LL0 + +Lb3: lea -8(%rsi,%r8,8), %rsi + lea -24(%rcx,%r8,8), %rcx + neg %r8 + mov %rax, %rbx + mov %rdx, %r10 + jmp LL3 + +Lb2: lea -16(%rsi,%r8,8), %rsi + lea -32(%rcx,%r8,8), %rcx + neg %r8 + xor %r11, %r11 + xor %ebx, %ebx + mov %rax, %r10 + mov 24(%rsi,%r8,8), %rax + mov %rdx, %rdi + jmp LL2 + + .align 16, 0x90 +Ltop: mov %r10, (%rcx,%r8,8) + add %rax, %rdi + mov (%rsi,%r8,8), %rax + adc %rdx, %r11 + mov $0, %r10d +LL1: mul %r9 + mov %rdi, 8(%rcx,%r8,8) + add %rax, %r11 + adc %rdx, %rbx +LL0: mov 8(%rsi,%r8,8), %rax + mul %r9 + mov %r11, 16(%rcx,%r8,8) + add %rax, %rbx + adc %rdx, %r10 +LL3: mov 16(%rsi,%r8,8), %rax + mul %r9 + mov %rbx, 24(%rcx,%r8,8) + mov $0, %r11d + mov %r11, %rbx + add %rax, %r10 + mov 24(%rsi,%r8,8), %rax + mov %r11, %rdi + adc %rdx, %rdi +LL2: mul %r9 + add $4, %r8 + js Ltop + + mov %r10, (%rcx,%r8,8) + add %rax, %rdi + adc %r11, %rdx + mov %rdi, 8(%rcx,%r8,8) + add %r11, %rdx +Lret: mov %rdx, %rax + + pop %rbx +pop %rdi +pop %rsi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/mul_2.s b/vere/ext/gmp/gen/x86_64-windows/mpn/mul_2.s new file mode 100644 index 0000000..e3ba0a0 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/mul_2.s @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mul_2 + + .def __gmpn_mul_2 + .scl 2 + .type 32 + .endef +__gmpn_mul_2: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %rbx + push %rbp + + mov (%rcx), %r8 + mov 8(%rcx), %r9 + + mov (%rsi), %rax + + mov %rdx, %r11 + neg %r11 + lea -8(%rsi,%rdx,8), %rsi + lea -8(%rdi,%rdx,8), %rdi + + and $3, %edx + jz Lm2p0 + cmp $2, %edx + jc Lm2p1 + jz Lm2p2 +Lm2p3: + mul %r8 + xor %r10d, %r10d + mov %rax, %rcx + mov %rdx, %rbp + mov 8(%rsi,%r11,8), %rax + add $-1, %r11 + mul %r9 + add %rax, %rbp + jmp Lm23 +Lm2p0: + mul %r8 + xor %ebp, %ebp + mov %rax, %rbx + mov %rdx, %rcx + jmp Lm20 +Lm2p1: + mul %r8 + xor %r10d, %r10d + xor %ebx, %ebx + xor %ecx, %ecx + add $1, %r11 + jmp Lm2top +Lm2p2: + mul %r8 + xor %ebx, %ebx + xor %ecx, %ecx + mov %rax, %rbp + mov %rdx, %r10 + mov 8(%rsi,%r11,8), %rax + add $-2, %r11 + jmp Lm22 + + + .align 32, 0x90 +Lm2top: + add %rax, %r10 + adc %rdx, %rbx + mov 0(%rsi,%r11,8), %rax + adc $0, %ecx + mov $0, %ebp + mul %r9 + add %rax, %rbx + mov %r10, 0(%rdi,%r11,8) + adc %rdx, %rcx + mov 8(%rsi,%r11,8), %rax + mul %r8 + add %rax, %rbx + adc %rdx, %rcx + adc $0, %ebp +Lm20: mov 8(%rsi,%r11,8), %rax + mul %r9 + add %rax, %rcx + adc %rdx, %rbp + mov 16(%rsi,%r11,8), %rax + mov $0, %r10d + mul %r8 + add %rax, %rcx + mov 16(%rsi,%r11,8), %rax + adc %rdx, %rbp + adc $0, %r10d + mul %r9 + add %rax, %rbp + mov %rbx, 8(%rdi,%r11,8) +Lm23: adc %rdx, %r10 + mov 24(%rsi,%r11,8), %rax + mul %r8 + mov $0, %ebx + add %rax, %rbp + adc %rdx, %r10 + mov %rcx, 16(%rdi,%r11,8) + mov 24(%rsi,%r11,8), %rax + mov $0, %ecx + adc $0, %ebx +Lm22: mul %r9 + add %rax, %r10 + mov %rbp, 24(%rdi,%r11,8) + adc %rdx, %rbx + mov 32(%rsi,%r11,8), %rax + mul %r8 + add $4, %r11 + js Lm2top + + + add %rax, %r10 + adc %rdx, %rbx + adc $0, %ecx + mov (%rsi), %rax + mul %r9 + mov %r10, (%rdi) + add %rax, %rbx + adc %rdx, %rcx + mov %rbx, 8(%rdi) + mov %rcx, %rax + + pop %rbp + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/mul_basecase.s b/vere/ext/gmp/gen/x86_64-windows/mpn/mul_basecase.s new file mode 100644 index 0000000..d17d35d --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/mul_basecase.s @@ -0,0 +1,493 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mul_basecase + + .def __gmpn_mul_basecase + .scl 2 + .type 32 + .endef +__gmpn_mul_basecase: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8d + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + xor %r13d, %r13d + mov (%rsi), %rax + mov (%rcx), %r12 + + sub %rdx, %r13 + mov %r13, %r11 + mov %edx, %ebx + + lea (%rdi,%rdx,8), %rdi + lea (%rsi,%rdx,8), %rsi + + mul %r12 + + test $1, %r8b + jz Lmul_2 + + + + +Lmul_1: + and $3, %ebx + jz Lmul_1_prologue_0 + cmp $2, %ebx + jc Lmul_1_prologue_1 + jz Lmul_1_prologue_2 + +Lmul_1_prologue_3: + add $-1, %r11 + lea Laddmul_outer_3(%rip), %r14 + mov %rax, %r10 + mov %rdx, %rbx + jmp Lmul_1_entry_3 + +Lmul_1_prologue_0: + mov %rax, %rbp + mov %rdx, %r10 + lea Laddmul_outer_0(%rip), %r14 + jmp Lmul_1_entry_0 + +Lmul_1_prologue_1: + cmp $-1, %r13 + jne 2f + mov %rax, -8(%rdi) + mov %rdx, (%rdi) + jmp Lret +2: add $1, %r11 + lea Laddmul_outer_1(%rip), %r14 + mov %rax, %r15 + mov %rdx, %rbp + xor %r10d, %r10d + mov (%rsi,%r11,8), %rax + jmp Lmul_1_entry_1 + +Lmul_1_prologue_2: + add $-2, %r11 + lea Laddmul_outer_2(%rip), %r14 + mov %rax, %rbx + mov %rdx, %r15 + mov 24(%rsi,%r11,8), %rax + xor %ebp, %ebp + xor %r10d, %r10d + jmp Lmul_1_entry_2 + + + + + .align 16, 0x90 +Lmul_1_top: + mov %rbx, -16(%rdi,%r11,8) + add %rax, %r15 + mov (%rsi,%r11,8), %rax + adc %rdx, %rbp +Lmul_1_entry_1: + xor %ebx, %ebx + mul %r12 + mov %r15, -8(%rdi,%r11,8) + add %rax, %rbp + adc %rdx, %r10 +Lmul_1_entry_0: + mov 8(%rsi,%r11,8), %rax + mul %r12 + mov %rbp, (%rdi,%r11,8) + add %rax, %r10 + adc %rdx, %rbx +Lmul_1_entry_3: + mov 16(%rsi,%r11,8), %rax + mul %r12 + mov %r10, 8(%rdi,%r11,8) + xor %ebp, %ebp + mov %rbp, %r10 + add %rax, %rbx + mov 24(%rsi,%r11,8), %rax + mov %rbp, %r15 + adc %rdx, %r15 +Lmul_1_entry_2: + mul %r12 + add $4, %r11 + js Lmul_1_top + + mov %rbx, -16(%rdi) + add %rax, %r15 + mov %r15, -8(%rdi) + adc %rdx, %rbp + mov %rbp, (%rdi) + + add $-1, %r8 + jz Lret + + mov 8(%rcx), %r12 + mov 16(%rcx), %r9 + + lea 8(%rcx), %rcx + lea 8(%rdi), %rdi + + jmp *%r14 + + + + + .align 16, 0x90 +Lmul_2: + mov 8(%rcx), %r9 + + and $3, %ebx + jz Lmul_2_prologue_0 + cmp $2, %ebx + jz Lmul_2_prologue_2 + jc Lmul_2_prologue_1 + +Lmul_2_prologue_3: + lea Laddmul_outer_3(%rip), %r14 + add $2, %r11 + mov %rax, -16(%rdi,%r11,8) + mov %rdx, %rbp + xor %r10d, %r10d + xor %ebx, %ebx + mov -16(%rsi,%r11,8), %rax + jmp Lmul_2_entry_3 + + .align 16, 0x90 +Lmul_2_prologue_0: + add $3, %r11 + mov %rax, %rbx + mov %rdx, %r15 + xor %ebp, %ebp + mov -24(%rsi,%r11,8), %rax + lea Laddmul_outer_0(%rip), %r14 + jmp Lmul_2_entry_0 + + .align 16, 0x90 +Lmul_2_prologue_1: + mov %rax, %r10 + mov %rdx, %rbx + xor %r15d, %r15d + lea Laddmul_outer_1(%rip), %r14 + jmp Lmul_2_entry_1 + + .align 16, 0x90 +Lmul_2_prologue_2: + add $1, %r11 + lea Laddmul_outer_2(%rip), %r14 + mov $0, %ebx + mov $0, %r15d + mov %rax, %rbp + mov -8(%rsi,%r11,8), %rax + mov %rdx, %r10 + jmp Lmul_2_entry_2 + + + + .align 16, 0x90 +Lmul_2_top: + mov -32(%rsi,%r11,8), %rax + mul %r9 + add %rax, %rbx + adc %rdx, %r15 + mov -24(%rsi,%r11,8), %rax + xor %ebp, %ebp + mul %r12 + add %rax, %rbx + mov -24(%rsi,%r11,8), %rax + adc %rdx, %r15 + adc $0, %ebp +Lmul_2_entry_0: + mul %r9 + add %rax, %r15 + mov %rbx, -24(%rdi,%r11,8) + adc %rdx, %rbp + mov -16(%rsi,%r11,8), %rax + mul %r12 + mov $0, %r10d + add %rax, %r15 + adc %rdx, %rbp + mov -16(%rsi,%r11,8), %rax + adc $0, %r10d + mov $0, %ebx + mov %r15, -16(%rdi,%r11,8) +Lmul_2_entry_3: + mul %r9 + add %rax, %rbp + mov -8(%rsi,%r11,8), %rax + adc %rdx, %r10 + mov $0, %r15d + mul %r12 + add %rax, %rbp + mov -8(%rsi,%r11,8), %rax + adc %rdx, %r10 + adc %r15d, %ebx +Lmul_2_entry_2: + mul %r9 + add %rax, %r10 + mov %rbp, -8(%rdi,%r11,8) + adc %rdx, %rbx + mov (%rsi,%r11,8), %rax + mul %r12 + add %rax, %r10 + adc %rdx, %rbx + adc $0, %r15d +Lmul_2_entry_1: + add $4, %r11 + mov %r10, -32(%rdi,%r11,8) + js Lmul_2_top + + mov -32(%rsi,%r11,8), %rax + mul %r9 + add %rax, %rbx + mov %rbx, (%rdi) + adc %rdx, %r15 + mov %r15, 8(%rdi) + + add $-2, %r8 + jz Lret + + mov 16(%rcx), %r12 + mov 24(%rcx), %r9 + + lea 16(%rcx), %rcx + lea 16(%rdi), %rdi + + jmp *%r14 + + + + + + + + +Laddmul_outer_0: + add $3, %r13 + lea 0(%rip), %r14 + + mov %r13, %r11 + mov -24(%rsi,%r13,8), %rax + mul %r12 + mov %rax, %rbx + mov -24(%rsi,%r13,8), %rax + mov %rdx, %r15 + xor %ebp, %ebp + jmp Laddmul_entry_0 + +Laddmul_outer_1: + mov %r13, %r11 + mov (%rsi,%r13,8), %rax + mul %r12 + mov %rax, %r10 + mov (%rsi,%r13,8), %rax + mov %rdx, %rbx + xor %r15d, %r15d + jmp Laddmul_entry_1 + +Laddmul_outer_2: + add $1, %r13 + lea 0(%rip), %r14 + + mov %r13, %r11 + mov -8(%rsi,%r13,8), %rax + mul %r12 + xor %ebx, %ebx + mov %rax, %rbp + xor %r15d, %r15d + mov %rdx, %r10 + mov -8(%rsi,%r13,8), %rax + jmp Laddmul_entry_2 + +Laddmul_outer_3: + add $2, %r13 + lea 0(%rip), %r14 + + mov %r13, %r11 + mov -16(%rsi,%r13,8), %rax + xor %r10d, %r10d + mul %r12 + mov %rax, %r15 + mov -16(%rsi,%r13,8), %rax + mov %rdx, %rbp + jmp Laddmul_entry_3 + + + + .align 16, 0x90 +Laddmul_top: + add %r10, -32(%rdi,%r11,8) + adc %rax, %rbx + mov -24(%rsi,%r11,8), %rax + adc %rdx, %r15 + xor %ebp, %ebp + mul %r12 + add %rax, %rbx + mov -24(%rsi,%r11,8), %rax + adc %rdx, %r15 + adc %ebp, %ebp +Laddmul_entry_0: + mul %r9 + xor %r10d, %r10d + add %rbx, -24(%rdi,%r11,8) + adc %rax, %r15 + mov -16(%rsi,%r11,8), %rax + adc %rdx, %rbp + mul %r12 + add %rax, %r15 + mov -16(%rsi,%r11,8), %rax + adc %rdx, %rbp + adc $0, %r10d +Laddmul_entry_3: + mul %r9 + add %r15, -16(%rdi,%r11,8) + adc %rax, %rbp + mov -8(%rsi,%r11,8), %rax + adc %rdx, %r10 + mul %r12 + xor %ebx, %ebx + add %rax, %rbp + adc %rdx, %r10 + mov $0, %r15d + mov -8(%rsi,%r11,8), %rax + adc %r15d, %ebx +Laddmul_entry_2: + mul %r9 + add %rbp, -8(%rdi,%r11,8) + adc %rax, %r10 + adc %rdx, %rbx + mov (%rsi,%r11,8), %rax + mul %r12 + add %rax, %r10 + mov (%rsi,%r11,8), %rax + adc %rdx, %rbx + adc $0, %r15d +Laddmul_entry_1: + mul %r9 + add $4, %r11 + js Laddmul_top + + add %r10, -8(%rdi) + adc %rax, %rbx + mov %rbx, (%rdi) + adc %rdx, %r15 + mov %r15, 8(%rdi) + + add $-2, %r8 + jz Lret + + lea 16(%rdi), %rdi + lea 16(%rcx), %rcx + + mov (%rcx), %r12 + mov 8(%rcx), %r9 + + jmp *%r14 + + .align 16, 0x90 +Lret: pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + pop %rsi + pop %rdi + ret + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/mullo_basecase.s b/vere/ext/gmp/gen/x86_64-windows/mpn/mullo_basecase.s new file mode 100644 index 0000000..27bb7ab --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/mullo_basecase.s @@ -0,0 +1,452 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mullo_basecase + + .def __gmpn_mullo_basecase + .scl 2 + .type 32 + .endef +__gmpn_mullo_basecase: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + cmp $4, %rcx + jge Lgen + mov (%rsi), %rax + mov (%rdx), %r8 + + lea Ltab(%rip), %r9 + movslq (%r9,%rcx,4), %r10 + add %r10, %r9 + jmp *%r9 + + .section .rdata,"dr" + .align 8, 0x90 +Ltab: .long Ltab-Ltab + .long L1-Ltab + .long L2-Ltab + .long L3-Ltab + .text + +L1: imul %r8, %rax + mov %rax, (%rdi) + pop %rsi + pop %rdi + ret + +L2: mov 8(%rdx), %r11 + imul %rax, %r11 + mul %r8 + mov %rax, (%rdi) + imul 8(%rsi), %r8 + lea (%r11, %rdx), %rax + add %r8, %rax + mov %rax, 8(%rdi) + pop %rsi + pop %rdi + ret + +L3: mov 8(%rdx), %r9 + mov 16(%rdx), %r11 + mul %r8 + mov %rax, (%rdi) + mov (%rsi), %rax + mov %rdx, %rcx + mul %r9 + imul 8(%rsi), %r9 + mov 16(%rsi), %r10 + imul %r8, %r10 + add %rax, %rcx + adc %rdx, %r9 + add %r10, %r9 + mov 8(%rsi), %rax + mul %r8 + add %rax, %rcx + adc %rdx, %r9 + mov %r11, %rax + imul (%rsi), %rax + add %rax, %r9 + mov %rcx, 8(%rdi) + mov %r9, 16(%rdi) + pop %rsi + pop %rdi + ret + +L0m4: +L1m4: +L2m4: +L3m4: +Lgen: push %rbx + push %rbp + push %r13 + push %r14 + push %r15 + + mov (%rsi), %rax + mov (%rdx), %r13 + mov %rdx, %r11 + + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + neg %rcx + + mul %r13 + + test $1, %cl + jz Lmul_2 + +Lmul_1: + lea -8(%rdi), %rdi + lea -8(%rsi), %rsi + test $2, %cl + jnz Lmul_1_prologue_3 + +Lmul_1_prologue_2: + lea -1(%rcx), %r9 + lea Laddmul_outer_1(%rip), %r8 + mov %rax, %rbx + mov %rdx, %r15 + xor %ebp, %ebp + xor %r10d, %r10d + mov 16(%rsi,%rcx,8), %rax + jmp Lmul_1_entry_2 + +Lmul_1_prologue_3: + lea 1(%rcx), %r9 + lea Laddmul_outer_3(%rip), %r8 + mov %rax, %rbp + mov %rdx, %r10 + xor %ebx, %ebx + jmp Lmul_1_entry_0 + + .align 16, 0x90 +Lmul_1_top: + mov %rbx, -16(%rdi,%r9,8) + add %rax, %r15 + mov (%rsi,%r9,8), %rax + adc %rdx, %rbp + xor %ebx, %ebx + mul %r13 + mov %r15, -8(%rdi,%r9,8) + add %rax, %rbp + adc %rdx, %r10 +Lmul_1_entry_0: + mov 8(%rsi,%r9,8), %rax + mul %r13 + mov %rbp, (%rdi,%r9,8) + add %rax, %r10 + adc %rdx, %rbx + mov 16(%rsi,%r9,8), %rax + mul %r13 + mov %r10, 8(%rdi,%r9,8) + xor %ebp, %ebp + mov %rbp, %r10 + add %rax, %rbx + mov 24(%rsi,%r9,8), %rax + mov %rbp, %r15 + adc %rdx, %r15 +Lmul_1_entry_2: + mul %r13 + add $4, %r9 + js Lmul_1_top + + mov %rbx, -16(%rdi) + add %rax, %r15 + mov %r15, -8(%rdi) + adc %rdx, %rbp + + imul (%rsi), %r13 + add %r13, %rbp + mov %rbp, (%rdi) + + add $1, %rcx + jz Lret + + mov 8(%r11), %r13 + mov 16(%r11), %r14 + + lea 16(%rsi), %rsi + lea 8(%r11), %r11 + lea 24(%rdi), %rdi + + jmp *%r8 + + +Lmul_2: + mov 8(%r11), %r14 + test $2, %cl + jz Lmul_2_prologue_3 + + .align 16, 0x90 +Lmul_2_prologue_1: + lea 0(%rcx), %r9 + mov %rax, %r10 + mov %rdx, %rbx + xor %r15d, %r15d + mov (%rsi,%rcx,8), %rax + lea Laddmul_outer_3(%rip), %r8 + jmp Lmul_2_entry_1 + + .align 16, 0x90 +Lmul_2_prologue_3: + lea 2(%rcx), %r9 + mov $0, %r10d + mov %rax, %r15 + mov (%rsi,%rcx,8), %rax + mov %rdx, %rbp + lea Laddmul_outer_1(%rip), %r8 + jmp Lmul_2_entry_3 + + .align 16, 0x90 +Lmul_2_top: + mov -32(%rsi,%r9,8), %rax + mul %r14 + add %rax, %rbx + adc %rdx, %r15 + mov -24(%rsi,%r9,8), %rax + xor %ebp, %ebp + mul %r13 + add %rax, %rbx + mov -24(%rsi,%r9,8), %rax + adc %rdx, %r15 + adc $0, %ebp + mul %r14 + add %rax, %r15 + mov %rbx, -24(%rdi,%r9,8) + adc %rdx, %rbp + mov -16(%rsi,%r9,8), %rax + mul %r13 + mov $0, %r10d + add %rax, %r15 + adc %rdx, %rbp + mov -16(%rsi,%r9,8), %rax + adc $0, %r10d +Lmul_2_entry_3: + mov $0, %ebx + mov %r15, -16(%rdi,%r9,8) + mul %r14 + add %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + mov $0, %r15d + mul %r13 + add %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + adc %r15d, %ebx + mul %r14 + add %rax, %r10 + mov %rbp, -8(%rdi,%r9,8) + adc %rdx, %rbx + mov (%rsi,%r9,8), %rax + mul %r13 + add %rax, %r10 + adc %rdx, %rbx + adc $0, %r15d +Lmul_2_entry_1: + add $4, %r9 + mov %r10, -32(%rdi,%r9,8) + js Lmul_2_top + + imul -16(%rsi), %r14 + add %r14, %rbx + imul -8(%rsi), %r13 + add %r13, %rbx + mov %rbx, -8(%rdi) + + add $2, %rcx + jz Lret + + mov 16(%r11), %r13 + mov 24(%r11), %r14 + + lea 16(%r11), %r11 + lea 16(%rdi), %rdi + + jmp *%r8 + + +Laddmul_outer_1: + lea -2(%rcx), %r9 + mov -16(%rsi,%rcx,8), %rax + mul %r13 + mov %rax, %r10 + mov -16(%rsi,%rcx,8), %rax + mov %rdx, %rbx + xor %r15d, %r15d + lea Laddmul_outer_3(%rip), %r8 + jmp Laddmul_entry_1 + +Laddmul_outer_3: + lea 0(%rcx), %r9 + mov -16(%rsi,%rcx,8), %rax + xor %r10d, %r10d + mul %r13 + mov %rax, %r15 + mov -16(%rsi,%rcx,8), %rax + mov %rdx, %rbp + lea Laddmul_outer_1(%rip), %r8 + jmp Laddmul_entry_3 + + .align 16, 0x90 +Laddmul_top: + add %r10, -32(%rdi,%r9,8) + adc %rax, %rbx + mov -24(%rsi,%r9,8), %rax + adc %rdx, %r15 + xor %ebp, %ebp + mul %r13 + add %rax, %rbx + mov -24(%rsi,%r9,8), %rax + adc %rdx, %r15 + adc %ebp, %ebp + mul %r14 + xor %r10d, %r10d + add %rbx, -24(%rdi,%r9,8) + adc %rax, %r15 + mov -16(%rsi,%r9,8), %rax + adc %rdx, %rbp + mul %r13 + add %rax, %r15 + mov -16(%rsi,%r9,8), %rax + adc %rdx, %rbp + adc $0, %r10d +Laddmul_entry_3: + mul %r14 + add %r15, -16(%rdi,%r9,8) + adc %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + mul %r13 + xor %ebx, %ebx + add %rax, %rbp + adc %rdx, %r10 + mov $0, %r15d + mov -8(%rsi,%r9,8), %rax + adc %r15d, %ebx + mul %r14 + add %rbp, -8(%rdi,%r9,8) + adc %rax, %r10 + adc %rdx, %rbx + mov (%rsi,%r9,8), %rax + mul %r13 + add %rax, %r10 + mov (%rsi,%r9,8), %rax + adc %rdx, %rbx + adc $0, %r15d +Laddmul_entry_1: + mul %r14 + add $4, %r9 + js Laddmul_top + + add %r10, -32(%rdi) + adc %rax, %rbx + + imul -24(%rsi), %r13 + add %r13, %rbx + add %rbx, -24(%rdi) + + add $2, %rcx + jns Lret + + lea 16(%r11), %r11 + + mov (%r11), %r13 + mov 8(%r11), %r14 + + lea -16(%rsi), %rsi + + jmp *%r8 + +Lret: pop %r15 + pop %r14 + pop %r13 + pop %rbp + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/mulmid_basecase.s b/vere/ext/gmp/gen/x86_64-windows/mpn/mulmid_basecase.s new file mode 100644 index 0000000..234babd --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/mulmid_basecase.s @@ -0,0 +1,583 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_mulmid_basecase + + .def __gmpn_mulmid_basecase + .scl 2 + .type 32 + .endef +__gmpn_mulmid_basecase: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8d + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + mov %rcx, %r15 + + + lea 1(%rdx), %r13 + sub %r8, %r13 + + lea (%rdi,%r13,8), %rdi + + cmp $4, %r13 + jc Ldiagonal + + lea (%rsi,%rdx,8), %rsi + + test $1, %r8 + jz Lmul_2 + + + + +Lmul_1: + mov %r13d, %ebx + + neg %r13 + mov (%rsi,%r13,8), %rax + mov (%r15), %r12 + mul %r12 + + and $-4, %r13 + mov %r13, %r11 + + and $3, %ebx + jz Lmul_1_prologue_0 + cmp $2, %ebx + jc Lmul_1_prologue_1 + jz Lmul_1_prologue_2 + +Lmul_1_prologue_3: + mov %rax, %r10 + mov %rdx, %rbx + lea Laddmul_prologue_3(%rip), %r14 + jmp Lmul_1_entry_3 + + .align 16, 0x90 +Lmul_1_prologue_0: + mov %rax, %rbp + mov %rdx, %r10 + lea Laddmul_prologue_0(%rip), %r14 + jmp Lmul_1_entry_0 + + .align 16, 0x90 +Lmul_1_prologue_1: + add $4, %r11 + mov %rax, %rcx + mov %rdx, %rbp + mov $0, %r10d + mov (%rsi,%r11,8), %rax + lea Laddmul_prologue_1(%rip), %r14 + jmp Lmul_1_entry_1 + + .align 16, 0x90 +Lmul_1_prologue_2: + mov %rax, %rbx + mov %rdx, %rcx + mov 24(%rsi,%r11,8), %rax + mov $0, %ebp + mov $0, %r10d + lea Laddmul_prologue_2(%rip), %r14 + jmp Lmul_1_entry_2 + + + + + .align 16, 0x90 +Lmul_1_top: + mov %rbx, -16(%rdi,%r11,8) + add %rax, %rcx + mov (%rsi,%r11,8), %rax + adc %rdx, %rbp +Lmul_1_entry_1: + mov $0, %ebx + mul %r12 + mov %rcx, -8(%rdi,%r11,8) + add %rax, %rbp + adc %rdx, %r10 +Lmul_1_entry_0: + mov 8(%rsi,%r11,8), %rax + mul %r12 + mov %rbp, (%rdi,%r11,8) + add %rax, %r10 + adc %rdx, %rbx +Lmul_1_entry_3: + mov 16(%rsi,%r11,8), %rax + mul %r12 + mov %r10, 8(%rdi,%r11,8) + mov $0, %ebp + mov %rbp, %r10 + add %rax, %rbx + mov 24(%rsi,%r11,8), %rax + mov %rbp, %rcx + adc %rdx, %rcx +Lmul_1_entry_2: + mul %r12 + add $4, %r11 + js Lmul_1_top + + mov %rbx, -16(%rdi) + add %rax, %rcx + mov %rcx, -8(%rdi) + mov %rbp, 8(%rdi) + adc %rdx, %rbp + mov %rbp, (%rdi) + + dec %r8 + jz Lret + + lea -8(%rsi), %rsi + lea 8(%r15), %r15 + + mov %r13, %r11 + mov (%r15), %r12 + mov 8(%r15), %r9 + + jmp *%r14 + + + + + .align 16, 0x90 +Lmul_2: + mov %r13d, %ebx + + neg %r13 + mov -8(%rsi,%r13,8), %rax + mov (%r15), %r12 + mov 8(%r15), %r9 + mul %r9 + + and $-4, %r13 + mov %r13, %r11 + + and $3, %ebx + jz Lmul_2_prologue_0 + cmp $2, %ebx + jc Lmul_2_prologue_1 + jz Lmul_2_prologue_2 + +Lmul_2_prologue_3: + mov %rax, %rcx + mov %rdx, %rbp + lea Laddmul_prologue_3(%rip), %r14 + jmp Lmul_2_entry_3 + + .align 16, 0x90 +Lmul_2_prologue_0: + mov %rax, %rbx + mov %rdx, %rcx + lea Laddmul_prologue_0(%rip), %r14 + jmp Lmul_2_entry_0 + + .align 16, 0x90 +Lmul_2_prologue_1: + mov %rax, %r10 + mov %rdx, %rbx + mov $0, %ecx + lea Laddmul_prologue_1(%rip), %r14 + jmp Lmul_2_entry_1 + + .align 16, 0x90 +Lmul_2_prologue_2: + mov %rax, %rbp + mov %rdx, %r10 + mov $0, %ebx + mov 16(%rsi,%r11,8), %rax + lea Laddmul_prologue_2(%rip), %r14 + jmp Lmul_2_entry_2 + + + + + .align 16, 0x90 +Lmul_2_top: + mov -8(%rsi,%r11,8), %rax + mul %r9 + add %rax, %rbx + adc %rdx, %rcx +Lmul_2_entry_0: + mov $0, %ebp + mov (%rsi,%r11,8), %rax + mul %r12 + add %rax, %rbx + mov (%rsi,%r11,8), %rax + adc %rdx, %rcx + adc $0, %ebp + mul %r9 + add %rax, %rcx + mov %rbx, (%rdi,%r11,8) + adc %rdx, %rbp +Lmul_2_entry_3: + mov 8(%rsi,%r11,8), %rax + mul %r12 + mov $0, %r10d + add %rax, %rcx + adc %rdx, %rbp + mov $0, %ebx + adc $0, %r10d + mov 8(%rsi,%r11,8), %rax + mov %rcx, 8(%rdi,%r11,8) + mul %r9 + add %rax, %rbp + mov 16(%rsi,%r11,8), %rax + adc %rdx, %r10 +Lmul_2_entry_2: + mov $0, %ecx + mul %r12 + add %rax, %rbp + mov 16(%rsi,%r11,8), %rax + adc %rdx, %r10 + adc $0, %ebx + mul %r9 + add %rax, %r10 + mov %rbp, 16(%rdi,%r11,8) + adc %rdx, %rbx +Lmul_2_entry_1: + mov 24(%rsi,%r11,8), %rax + mul %r12 + add %rax, %r10 + adc %rdx, %rbx + adc $0, %ecx + add $4, %r11 + mov %r10, -8(%rdi,%r11,8) + jnz Lmul_2_top + + mov %rbx, (%rdi) + mov %rcx, 8(%rdi) + + sub $2, %r8 + jz Lret + + lea 16(%r15), %r15 + lea -16(%rsi), %rsi + + mov %r13, %r11 + mov (%r15), %r12 + mov 8(%r15), %r9 + + jmp *%r14 + + + + + .align 16, 0x90 +Laddmul_prologue_0: + mov -8(%rsi,%r11,8), %rax + mul %r9 + mov %rax, %rcx + mov %rdx, %rbp + mov $0, %r10d + jmp Laddmul_entry_0 + + .align 16, 0x90 +Laddmul_prologue_1: + mov 16(%rsi,%r11,8), %rax + mul %r9 + mov %rax, %rbx + mov %rdx, %rcx + mov $0, %ebp + mov 24(%rsi,%r11,8), %rax + jmp Laddmul_entry_1 + + .align 16, 0x90 +Laddmul_prologue_2: + mov 8(%rsi,%r11,8), %rax + mul %r9 + mov %rax, %r10 + mov %rdx, %rbx + mov $0, %ecx + jmp Laddmul_entry_2 + + .align 16, 0x90 +Laddmul_prologue_3: + mov (%rsi,%r11,8), %rax + mul %r9 + mov %rax, %rbp + mov %rdx, %r10 + mov $0, %ebx + mov $0, %ecx + jmp Laddmul_entry_3 + + + + .align 16, 0x90 +Laddmul_top: + mov $0, %r10d + add %rax, %rbx + mov -8(%rsi,%r11,8), %rax + adc %rdx, %rcx + adc $0, %ebp + mul %r9 + add %rbx, -8(%rdi,%r11,8) + adc %rax, %rcx + adc %rdx, %rbp +Laddmul_entry_0: + mov (%rsi,%r11,8), %rax + mul %r12 + add %rax, %rcx + mov (%rsi,%r11,8), %rax + adc %rdx, %rbp + adc $0, %r10d + mul %r9 + add %rcx, (%rdi,%r11,8) + mov $0, %ecx + adc %rax, %rbp + mov $0, %ebx + adc %rdx, %r10 +Laddmul_entry_3: + mov 8(%rsi,%r11,8), %rax + mul %r12 + add %rax, %rbp + mov 8(%rsi,%r11,8), %rax + adc %rdx, %r10 + adc $0, %ebx + mul %r9 + add %rbp, 8(%rdi,%r11,8) + adc %rax, %r10 + adc %rdx, %rbx +Laddmul_entry_2: + mov 16(%rsi,%r11,8), %rax + mul %r12 + add %rax, %r10 + mov 16(%rsi,%r11,8), %rax + adc %rdx, %rbx + adc $0, %ecx + mul %r9 + add %r10, 16(%rdi,%r11,8) + nop + adc %rax, %rbx + mov $0, %ebp + mov 24(%rsi,%r11,8), %rax + adc %rdx, %rcx +Laddmul_entry_1: + mul %r12 + add $4, %r11 + jnz Laddmul_top + + add %rax, %rbx + adc %rdx, %rcx + adc $0, %ebp + + add %rbx, -8(%rdi) + adc %rcx, (%rdi) + adc %rbp, 8(%rdi) + + sub $2, %r8 + jz Lret + + lea 16(%r15), %r15 + lea -16(%rsi), %rsi + + mov %r13, %r11 + mov (%r15), %r12 + mov 8(%r15), %r9 + + jmp *%r14 + + + + + .align 16, 0x90 +Ldiagonal: + xor %ebx, %ebx + xor %ecx, %ecx + xor %ebp, %ebp + + neg %r13 + + mov %r8d, %eax + and $3, %eax + jz Ldiag_prologue_0 + cmp $2, %eax + jc Ldiag_prologue_1 + jz Ldiag_prologue_2 + +Ldiag_prologue_3: + lea -8(%r15), %r15 + mov %r15, %r10 + add $1, %r8 + mov %r8, %r11 + lea Ldiag_entry_3(%rip), %r14 + jmp Ldiag_entry_3 + +Ldiag_prologue_0: + mov %r15, %r10 + mov %r8, %r11 + lea 0(%rip), %r14 + mov -8(%rsi,%r11,8), %rax + jmp Ldiag_entry_0 + +Ldiag_prologue_1: + lea 8(%r15), %r15 + mov %r15, %r10 + add $3, %r8 + mov %r8, %r11 + lea 0(%rip), %r14 + mov -8(%r10), %rax + jmp Ldiag_entry_1 + +Ldiag_prologue_2: + lea -16(%r15), %r15 + mov %r15, %r10 + add $2, %r8 + mov %r8, %r11 + lea 0(%rip), %r14 + mov 16(%r10), %rax + jmp Ldiag_entry_2 + + + + + .align 16, 0x90 +Ldiag_top: + add %rax, %rbx + adc %rdx, %rcx + mov -8(%rsi,%r11,8), %rax + adc $0, %rbp +Ldiag_entry_0: + mulq (%r10) + add %rax, %rbx + adc %rdx, %rcx + adc $0, %rbp +Ldiag_entry_3: + mov -16(%rsi,%r11,8), %rax + mulq 8(%r10) + add %rax, %rbx + mov 16(%r10), %rax + adc %rdx, %rcx + adc $0, %rbp +Ldiag_entry_2: + mulq -24(%rsi,%r11,8) + add %rax, %rbx + mov 24(%r10), %rax + adc %rdx, %rcx + lea 32(%r10), %r10 + adc $0, %rbp +Ldiag_entry_1: + mulq -32(%rsi,%r11,8) + sub $4, %r11 + jnz Ldiag_top + + add %rax, %rbx + adc %rdx, %rcx + adc $0, %rbp + + mov %rbx, (%rdi,%r13,8) + + inc %r13 + jz Ldiag_end + + mov %r8, %r11 + mov %r15, %r10 + + lea 8(%rsi), %rsi + mov %rcx, %rbx + mov %rbp, %rcx + xor %ebp, %ebp + + jmp *%r14 + +Ldiag_end: + mov %rcx, (%rdi) + mov %rbp, 8(%rdi) + +Lret: pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/nand_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/nand_n.s new file mode 100644 index 0000000..ee5068a --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/nand_n.s @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_nand_n + + .def __gmpn_nand_n + .scl 2 + .type 32 + .endef +__gmpn_nand_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: and (%rsi,%rcx,8), %r8 + not %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp Le11 +Lb10: add $-2, %rcx + jmp Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90 +Lb01: and (%rsi,%rcx,8), %r8 + not %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz Lret + +Ltop: mov (%rdx,%rcx,8), %r8 +Lb00: mov 8(%rdx,%rcx,8), %r9 + and (%rsi,%rcx,8), %r8 + not %r8 + and 8(%rsi,%rcx,8), %r9 + not %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +Le11: mov 16(%rdx,%rcx,8), %r8 +Le10: mov 24(%rdx,%rcx,8), %r9 + and 16(%rsi,%rcx,8), %r8 + not %r8 + and 24(%rsi,%rcx,8), %r9 + not %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc Ltop + +Lret: pop %rsi + pop %rdi + ret + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/nior_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/nior_n.s new file mode 100644 index 0000000..25ccc4f --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/nior_n.s @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_nior_n + + .def __gmpn_nior_n + .scl 2 + .type 32 + .endef +__gmpn_nior_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: or (%rsi,%rcx,8), %r8 + not %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp Le11 +Lb10: add $-2, %rcx + jmp Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90 +Lb01: or (%rsi,%rcx,8), %r8 + not %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz Lret + +Ltop: mov (%rdx,%rcx,8), %r8 +Lb00: mov 8(%rdx,%rcx,8), %r9 + or (%rsi,%rcx,8), %r8 + not %r8 + or 8(%rsi,%rcx,8), %r9 + not %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +Le11: mov 16(%rdx,%rcx,8), %r8 +Le10: mov 24(%rdx,%rcx,8), %r9 + or 16(%rsi,%rcx,8), %r8 + not %r8 + or 24(%rsi,%rcx,8), %r9 + not %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc Ltop + +Lret: pop %rsi + pop %rdi + ret + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/perfsqr.h b/vere/ext/gmp/gen/x86_64-windows/mpn/perfsqr.h new file mode 100644 index 0000000..80c5eb7 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/perfsqr.h @@ -0,0 +1,46 @@ +/* This file generated by gen-psqr.c - DO NOT EDIT. */ + +#if GMP_LIMB_BITS != 64 || GMP_NAIL_BITS != 0 +Error, error, this data is for 64 bit limb and 0 bit nail +#endif + +/* Non-zero bit indicates a quadratic residue mod 0x100. + This test identifies 82.81% as non-squares (212/256). */ +static const mp_limb_t +sq_res_0x100[4] = { + CNST_LIMB(0x202021202030213), + CNST_LIMB(0x202021202020213), + CNST_LIMB(0x202021202030212), + CNST_LIMB(0x202021202020212), +}; + +/* 2^48-1 = 3^2 * 5 * 7 * 13 * 17 * 97 ... */ +#define PERFSQR_MOD_BITS 49 + +/* This test identifies 97.81% as non-squares. */ +#define PERFSQR_MOD_TEST(up, usize) \ + do { \ + mp_limb_t r; \ + PERFSQR_MOD_34 (r, up, usize); \ + \ + /* 69.23% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(91), CNST_LIMB(0xfd2fd2fd2fd3), \ + CNST_LIMB(0x2191240), CNST_LIMB(0x8850a206953820e1)); \ + \ + /* 68.24% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(85), CNST_LIMB(0xfcfcfcfcfcfd), \ + CNST_LIMB(0x82158), CNST_LIMB(0x10b48c4b4206a105)); \ + \ + /* 55.56% */ \ + PERFSQR_MOD_1 (r, CNST_LIMB( 9), CNST_LIMB(0xe38e38e38e39), \ + CNST_LIMB(0x93)); \ + \ + /* 49.48% */ \ + PERFSQR_MOD_2 (r, CNST_LIMB(97), CNST_LIMB(0xfd5c5f02a3a1), \ + CNST_LIMB(0x1eb628b47), CNST_LIMB(0x6067981b8b451b5f)); \ + } while (0) + +/* Grand total sq_res_0x100 and PERFSQR_MOD_TEST, 99.62% non-squares. */ + +/* helper for tests/mpz/t-perfsqr.c */ +#define PERFSQR_DIVISORS { 256, 91, 85, 9, 97, } diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/popcount.s b/vere/ext/gmp/gen/x86_64-windows/mpn/popcount.s new file mode 100644 index 0000000..f15089c --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/popcount.s @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_popcount + + .def __gmpn_popcount + .scl 2 + .type 32 + .endef +__gmpn_popcount: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + + push %rbx + mov $0x5555555555555555, %r10 + push %rbp + mov $0x3333333333333333, %r11 + lea (%rdi,%rsi,8), %rdi + mov $0x0f0f0f0f0f0f0f0f, %rcx + neg %rsi + mov $0x0101010101010101, %rdx + xor %eax, %eax + test $1, %sil + jz Ltop + + mov (%rdi,%rsi,8), %r8 + + mov %r8, %r9 + shr %r8 + and %r10, %r8 + sub %r8, %r9 + + mov %r9, %r8 + shr $2, %r9 + and %r11, %r8 + and %r11, %r9 + add %r8, %r9 + + dec %rsi + jmp Lmid + + .align 16, 0x90 +Ltop: mov (%rdi,%rsi,8), %r8 + mov 8(%rdi,%rsi,8), %rbx + + mov %r8, %r9 + mov %rbx, %rbp + shr %r8 + shr %rbx + and %r10, %r8 + and %r10, %rbx + sub %r8, %r9 + sub %rbx, %rbp + + mov %r9, %r8 + mov %rbp, %rbx + shr $2, %r9 + shr $2, %rbp + and %r11, %r8 + and %r11, %r9 + and %r11, %rbx + and %r11, %rbp + add %r8, %r9 + add %rbx, %rbp + + add %rbp, %r9 +Lmid: mov %r9, %r8 + shr $4, %r9 + and %rcx, %r8 + and %rcx, %r9 + add %r8, %r9 + + imul %rdx, %r9 + shr $56, %r9 + + add %r9, %rax + add $2, %rsi + jnc Ltop + +Lend: + pop %rbp + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/redc_1.s b/vere/ext/gmp/gen/x86_64-windows/mpn/redc_1.s new file mode 100644 index 0000000..34f87ad --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/redc_1.s @@ -0,0 +1,613 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_redc_1 + + .def __gmpn_redc_1 + .scl 2 + .type 32 + .endef +__gmpn_redc_1: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + push %rbp + mov (%rsi), %rbp + push %rbx + imul %r8, %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + mov %rcx, %r12 + neg %r12 + lea (%rdx,%rcx,8), %r13 + lea -16(%rsi,%rcx,8), %rsi + + mov %ecx, %eax + and $3, %eax + lea 4(%rax), %r9 + cmp $4, %ecx + cmovg %r9, %rax + lea Ltab(%rip), %r9 + + movslq (%r9,%rax,4), %rax + add %r9, %rax + jmp *%rax + + + .section .rdata,"dr" + .align 8, 0x90 +Ltab: .long L0-Ltab + .long L1-Ltab + .long L2-Ltab + .long L3-Ltab + .long L0m4-Ltab + .long L1m4-Ltab + .long L2m4-Ltab + .long L3m4-Ltab + .text + + .align 16, 0x90 +L1: mov (%rdx), %rax + mul %rbp + add 8(%rsi), %rax + adc 16(%rsi), %rdx + mov %rdx, (%rdi) + mov $0, %eax + adc %eax, %eax + jmp Lret + + + .align 16, 0x90 +L2: mov (%rdx), %rax + mul %rbp + xor %r14d, %r14d + mov %rax, %r10 + mov -8(%r13), %rax + mov %rdx, %r9 + mul %rbp + add (%rsi), %r10 + adc %rax, %r9 + adc %rdx, %r14 + add 8(%rsi), %r9 + adc $0, %r14 + mov %r9, %rbp + imul %r8, %rbp + mov -16(%r13), %rax + mul %rbp + xor %ebx, %ebx + mov %rax, %r10 + mov -8(%r13), %rax + mov %rdx, %r11 + mul %rbp + add %r9, %r10 + adc %rax, %r11 + adc %rdx, %rbx + add 16(%rsi), %r11 + adc $0, %rbx + xor %eax, %eax + add %r11, %r14 + adc 24(%rsi), %rbx + mov %r14, (%rdi) + mov %rbx, 8(%rdi) + adc %eax, %eax + jmp Lret + + +L3: mov (%rdx), %rax + mul %rbp + mov %rax, %rbx + mov %rdx, %r10 + mov -16(%r13), %rax + mul %rbp + xor %r9d, %r9d + xor %r14d, %r14d + add -8(%rsi), %rbx + adc %rax, %r10 + mov -8(%r13), %rax + adc %rdx, %r9 + mul %rbp + add (%rsi), %r10 + mov %r10, (%rsi) + adc %rax, %r9 + adc %rdx, %r14 + mov %r10, %rbp + imul %r8, %rbp + add %r9, 8(%rsi) + adc $0, %r14 + mov %r14, -8(%rsi) + + mov -24(%r13), %rax + mul %rbp + mov %rax, %rbx + mov %rdx, %r10 + mov -16(%r13), %rax + mul %rbp + xor %r9d, %r9d + xor %r14d, %r14d + add (%rsi), %rbx + adc %rax, %r10 + mov -8(%r13), %rax + adc %rdx, %r9 + mul %rbp + add 8(%rsi), %r10 + mov %r10, 8(%rsi) + adc %rax, %r9 + adc %rdx, %r14 + mov %r10, %rbp + imul %r8, %rbp + add %r9, 16(%rsi) + adc $0, %r14 + mov %r14, (%rsi) + + mov -24(%r13), %rax + mul %rbp + mov %rax, %rbx + mov %rdx, %r10 + mov -16(%r13), %rax + mul %rbp + xor %r9d, %r9d + xor %r14d, %r14d + add 8(%rsi), %rbx + adc %rax, %r10 + mov -8(%r13), %rax + adc %rdx, %r9 + mul %rbp + add 16(%rsi), %r10 + adc %rax, %r9 + adc %rdx, %r14 + add 24(%rsi), %r9 + adc $0, %r14 + + xor %eax, %eax + add -8(%rsi), %r10 + adc (%rsi), %r9 + adc 32(%rsi), %r14 + mov %r10, (%rdi) + mov %r9, 8(%rdi) + mov %r14, 16(%rdi) + adc %eax, %eax + jmp Lret + + + .align 16, 0x90 +L2m4: +Llo2: mov (%r13,%r12,8), %rax + mul %rbp + xor %r14d, %r14d + xor %ebx, %ebx + mov %rax, %r10 + mov 8(%r13,%r12,8), %rax + mov 24(%rsi,%r12,8), %r15 + mov %rdx, %r9 + mul %rbp + add 16(%rsi,%r12,8), %r10 + adc %rax, %r9 + mov 16(%r13,%r12,8), %rax + adc %rdx, %r14 + mul %rbp + mov $0, %r10d + lea 2(%r12), %r11 + add %r9, %r15 + imul %r8, %r15 + jmp Le2 + + .align 16, 0x90 +Lli2: add %r10, (%rsi,%r11,8) + adc %rax, %r9 + mov (%r13,%r11,8), %rax + adc %rdx, %r14 + xor %r10d, %r10d + mul %rbp +Le2: add %r9, 8(%rsi,%r11,8) + adc %rax, %r14 + adc %rdx, %rbx + mov 8(%r13,%r11,8), %rax + mul %rbp + add %r14, 16(%rsi,%r11,8) + adc %rax, %rbx + adc %rdx, %r10 + mov 16(%r13,%r11,8), %rax + mul %rbp + add %rbx, 24(%rsi,%r11,8) + mov $0, %r14d + mov %r14, %rbx + adc %rax, %r10 + mov 24(%r13,%r11,8), %rax + mov %r14, %r9 + adc %rdx, %r9 + mul %rbp + add $4, %r11 + js Lli2 + +Lle2: add %r10, (%rsi) + adc %rax, %r9 + adc %r14, %rdx + add %r9, 8(%rsi) + adc $0, %rdx + mov %rdx, 16(%rsi,%r12,8) + add $8, %rsi + mov %r15, %rbp + dec %rcx + jnz Llo2 + + mov %r12, %rcx + sar $2, %rcx + lea 32(%rsi,%r12,8), %rsi + lea (%rsi,%r12,8), %rdx + + mov -16(%rsi), %r8 + mov -8(%rsi), %r9 + add -16(%rdx), %r8 + adc -8(%rdx), %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + lea 16(%rdi), %rdi + jmp Laddx + + + .align 16, 0x90 +L1m4: +Llo1: mov (%r13,%r12,8), %rax + xor %r9, %r9 + xor %ebx, %ebx + mul %rbp + mov %rax, %r9 + mov 8(%r13,%r12,8), %rax + mov 24(%rsi,%r12,8), %r15 + mov %rdx, %r14 + mov $0, %r10d + mul %rbp + add 16(%rsi,%r12,8), %r9 + adc %rax, %r14 + adc %rdx, %rbx + mov 16(%r13,%r12,8), %rax + mul %rbp + lea 1(%r12), %r11 + add %r14, %r15 + imul %r8, %r15 + jmp Le1 + + .align 16, 0x90 +Lli1: add %r10, (%rsi,%r11,8) + adc %rax, %r9 + mov (%r13,%r11,8), %rax + adc %rdx, %r14 + xor %r10d, %r10d + mul %rbp + add %r9, 8(%rsi,%r11,8) + adc %rax, %r14 + adc %rdx, %rbx + mov 8(%r13,%r11,8), %rax + mul %rbp +Le1: add %r14, 16(%rsi,%r11,8) + adc %rax, %rbx + adc %rdx, %r10 + mov 16(%r13,%r11,8), %rax + mul %rbp + add %rbx, 24(%rsi,%r11,8) + mov $0, %r14d + mov %r14, %rbx + adc %rax, %r10 + mov 24(%r13,%r11,8), %rax + mov %r14, %r9 + adc %rdx, %r9 + mul %rbp + add $4, %r11 + js Lli1 + +Lle1: add %r10, (%rsi) + adc %rax, %r9 + adc %r14, %rdx + add %r9, 8(%rsi) + adc $0, %rdx + mov %rdx, 16(%rsi,%r12,8) + add $8, %rsi + mov %r15, %rbp + dec %rcx + jnz Llo1 + + mov %r12, %rcx + sar $2, %rcx + lea 24(%rsi,%r12,8), %rsi + lea (%rsi,%r12,8), %rdx + + mov -8(%rsi), %r8 + add -8(%rdx), %r8 + mov %r8, (%rdi) + lea 8(%rdi), %rdi + jmp Laddx + + + .align 16, 0x90 +L0: +L0m4: +Llo0: mov (%r13,%r12,8), %rax + mov %r12, %r11 + mul %rbp + xor %r10d, %r10d + mov %rax, %r14 + mov %rdx, %rbx + mov 8(%r13,%r12,8), %rax + mov 24(%rsi,%r12,8), %r15 + mul %rbp + add 16(%rsi,%r12,8), %r14 + adc %rax, %rbx + adc %rdx, %r10 + add %rbx, %r15 + imul %r8, %r15 + jmp Le0 + + .align 16, 0x90 +Lli0: add %r10, (%rsi,%r11,8) + adc %rax, %r9 + mov (%r13,%r11,8), %rax + adc %rdx, %r14 + xor %r10d, %r10d + mul %rbp + add %r9, 8(%rsi,%r11,8) + adc %rax, %r14 + adc %rdx, %rbx + mov 8(%r13,%r11,8), %rax + mul %rbp + add %r14, 16(%rsi,%r11,8) + adc %rax, %rbx + adc %rdx, %r10 +Le0: mov 16(%r13,%r11,8), %rax + mul %rbp + add %rbx, 24(%rsi,%r11,8) + mov $0, %r14d + mov %r14, %rbx + adc %rax, %r10 + mov 24(%r13,%r11,8), %rax + mov %r14, %r9 + adc %rdx, %r9 + mul %rbp + add $4, %r11 + js Lli0 + +Lle0: add %r10, (%rsi) + adc %rax, %r9 + adc %r14, %rdx + add %r9, 8(%rsi) + adc $0, %rdx + mov %rdx, 16(%rsi,%r12,8) + add $8, %rsi + mov %r15, %rbp + dec %rcx + jnz Llo0 + + mov %r12, %rcx + sar $2, %rcx + clc + lea 16(%rsi,%r12,8), %rsi + lea (%rsi,%r12,8), %rdx + jmp Laddy + + + .align 16, 0x90 +L3m4: +Llo3: mov (%r13,%r12,8), %rax + mul %rbp + mov %rax, %rbx + mov %rdx, %r10 + mov 8(%r13,%r12,8), %rax + mov 24(%rsi,%r12,8), %r15 + mul %rbp + add 16(%rsi,%r12,8), %rbx + mov $0, %ebx + mov %rbx, %r14 + adc %rax, %r10 + mov 16(%r13,%r12,8), %rax + mov %r14, %r9 + adc %rdx, %r9 + add %r10, %r15 + mul %rbp + lea 3(%r12), %r11 + imul %r8, %r15 + + + .align 16, 0x90 +Lli3: add %r10, (%rsi,%r11,8) + adc %rax, %r9 + mov (%r13,%r11,8), %rax + adc %rdx, %r14 + xor %r10d, %r10d + mul %rbp + add %r9, 8(%rsi,%r11,8) + adc %rax, %r14 + adc %rdx, %rbx + mov 8(%r13,%r11,8), %rax + mul %rbp + add %r14, 16(%rsi,%r11,8) + adc %rax, %rbx + adc %rdx, %r10 + mov 16(%r13,%r11,8), %rax + mul %rbp + add %rbx, 24(%rsi,%r11,8) + mov $0, %r14d + mov %r14, %rbx + adc %rax, %r10 + mov 24(%r13,%r11,8), %rax + mov %r14, %r9 + adc %rdx, %r9 + mul %rbp + add $4, %r11 + js Lli3 + +Lle3: add %r10, (%rsi) + adc %rax, %r9 + adc %r14, %rdx + add %r9, 8(%rsi) + adc $0, %rdx + mov %rdx, 16(%rsi,%r12,8) + mov %r15, %rbp + lea 8(%rsi), %rsi + dec %rcx + jnz Llo3 + + + + mov %r12, %rcx + sar $2, %rcx + lea 40(%rsi,%r12,8), %rsi + lea (%rsi,%r12,8), %rdx + + mov -24(%rsi), %r8 + mov -16(%rsi), %r9 + mov -8(%rsi), %r10 + add -24(%rdx), %r8 + adc -16(%rdx), %r9 + adc -8(%rdx), %r10 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + lea 24(%rdi), %rdi + +Laddx:inc %rcx + jz Lad3 + +Laddy:mov (%rsi), %r8 + mov 8(%rsi), %r9 + inc %rcx + jmp Lmid + + +Lal3: adc (%rdx), %r8 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + adc 24(%rdx), %r11 + mov %r8, (%rdi) + lea 32(%rsi), %rsi + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + inc %rcx + mov %r11, 24(%rdi) + lea 32(%rdx), %rdx + mov (%rsi), %r8 + mov 8(%rsi), %r9 + lea 32(%rdi), %rdi +Lmid: mov 16(%rsi), %r10 + mov 24(%rsi), %r11 + jnz Lal3 + +Lae3: adc (%rdx), %r8 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + adc 24(%rdx), %r11 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + mov %r11, 24(%rdi) + +Lad3: mov %ecx, %eax + adc %eax, %eax + +Lret: pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbx + pop %rbp + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh1_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh1_n.s new file mode 100644 index 0000000..f314b95 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh1_n.s @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_rsblsh1_n + + .def __gmpn_rsblsh1_n + .scl 2 + .type 32 + .endef +__gmpn_rsblsh1_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %rbp + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rdx + neg %rcx + xor %ebp, %ebp + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: add %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + mov 16(%rdx,%rcx,8), %r10 + adc %r10, %r10 + sbb %eax, %eax + sub (%rsi,%rcx,8), %r8 + sbb 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) + sbb 16(%rsi,%rcx,8), %r10 + mov %r10, 16(%rdi,%rcx,8) + sbb %ebp, %ebp + add $3, %rcx + jmp Lent + +Lb10: add %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + sbb %eax, %eax + sub (%rsi,%rcx,8), %r8 + sbb 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) + sbb %ebp, %ebp + add $2, %rcx + jmp Lent + +Lb01: add %r8, %r8 + sbb %eax, %eax + sub (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + sbb %ebp, %ebp + inc %rcx +Lent: jns Lend + + .align 16, 0x90 +Ltop: add %eax, %eax + + mov (%rdx,%rcx,8), %r8 +Lb00: adc %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + mov 16(%rdx,%rcx,8), %r10 + adc %r10, %r10 + mov 24(%rdx,%rcx,8), %r11 + adc %r11, %r11 + + sbb %eax, %eax + add %ebp, %ebp + + sbb (%rsi,%rcx,8), %r8 + nop + sbb 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) + sbb 16(%rsi,%rcx,8), %r10 + sbb 24(%rsi,%rcx,8), %r11 + mov %r10, 16(%rdi,%rcx,8) + mov %r11, 24(%rdi,%rcx,8) + + sbb %ebp, %ebp + add $4, %rcx + js Ltop + +Lend: + + + sub %eax, %ebp + movslq %ebp, %rax + + pop %rbp + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh2_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh2_n.s new file mode 100644 index 0000000..7c79c3c --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh2_n.s @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_rsblsh2_n + + .def __gmpn_rsblsh2_n + .scl 2 + .type 32 + .endef +__gmpn_rsblsh2_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %r12 + push %r13 + push %r14 + push %r15 + + mov (%rdx), %r8 + lea (,%r8,4), %r12 + shr $62, %r8 + + mov %ecx, %eax + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rdx + neg %rcx + and $3, %al + je Lb00 + cmp $2, %al + jc Lb01 + je Lb10 + +Lb11: mov 8(%rdx,%rcx,8), %r10 + lea (%r8,%r10,4), %r14 + shr $62, %r10 + mov 16(%rdx,%rcx,8), %r11 + lea (%r10,%r11,4), %r15 + shr $62, %r11 + sub (%rsi,%rcx,8), %r12 + sbb 8(%rsi,%rcx,8), %r14 + sbb 16(%rsi,%rcx,8), %r15 + sbb %eax, %eax + mov %r12, (%rdi,%rcx,8) + mov %r14, 8(%rdi,%rcx,8) + mov %r15, 16(%rdi,%rcx,8) + add $3, %rcx + js Ltop + jmp Lend + +Lb01: mov %r8, %r11 + sub (%rsi,%rcx,8), %r12 + sbb %eax, %eax + mov %r12, (%rdi,%rcx,8) + add $1, %rcx + js Ltop + jmp Lend + +Lb10: mov 8(%rdx,%rcx,8), %r11 + lea (%r8,%r11,4), %r15 + shr $62, %r11 + sub (%rsi,%rcx,8), %r12 + sbb 8(%rsi,%rcx,8), %r15 + sbb %eax, %eax + mov %r12, (%rdi,%rcx,8) + mov %r15, 8(%rdi,%rcx,8) + add $2, %rcx + js Ltop + jmp Lend + +Lb00: mov 8(%rdx,%rcx,8), %r9 + mov 16(%rdx,%rcx,8), %r10 + jmp Le00 + + .align 16, 0x90 +Ltop: mov 16(%rdx,%rcx,8), %r10 + mov (%rdx,%rcx,8), %r8 + mov 8(%rdx,%rcx,8), %r9 + lea (%r11,%r8,4), %r12 + shr $62, %r8 +Le00: lea (%r8,%r9,4), %r13 + shr $62, %r9 + mov 24(%rdx,%rcx,8), %r11 + lea (%r9,%r10,4), %r14 + shr $62, %r10 + lea (%r10,%r11,4), %r15 + shr $62, %r11 + add %eax, %eax + sbb (%rsi,%rcx,8), %r12 + sbb 8(%rsi,%rcx,8), %r13 + sbb 16(%rsi,%rcx,8), %r14 + sbb 24(%rsi,%rcx,8), %r15 + mov %r12, (%rdi,%rcx,8) + mov %r13, 8(%rdi,%rcx,8) + mov %r14, 16(%rdi,%rcx,8) + sbb %eax, %eax + mov %r15, 24(%rdi,%rcx,8) + add $4, %rcx + js Ltop +Lend: + + + add %r11d, %eax + movslq %eax, %rax + + pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rsi + pop %rdi + ret + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh_n.s new file mode 100644 index 0000000..d8c7c06 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/rsblsh_n.s @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_rsblsh_n + + .def __gmpn_rsblsh_n + .scl 2 + .type 32 + .endef +__gmpn_rsblsh_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8d + push %r12 + push %rbp + push %rbx + + mov (%rdx), %rax + + mov $0, %ebp + sub %rcx, %rbp + + lea -16(%rsi,%rcx,8), %rsi + lea -16(%rdi,%rcx,8), %rdi + lea 16(%rdx,%rcx,8), %r12 + + mov %rcx, %r9 + + mov %r8, %rcx + mov $1, %r8d + shl %cl, %r8 + + mul %r8 + + and $3, %r9d + jz Lb0 + cmp $2, %r9d + jc Lb1 + jz Lb2 + +Lb3: mov %rax, %r11 + sub 16(%rsi,%rbp,8), %r11 + mov -8(%r12,%rbp,8), %rax + sbb %ecx, %ecx + mov %rdx, %rbx + mul %r8 + or %rax, %rbx + mov (%r12,%rbp,8), %rax + mov %rdx, %r9 + mul %r8 + or %rax, %r9 + add $3, %rbp + jnz Llo3 + jmp Lcj3 + +Lb2: mov %rax, %rbx + mov -8(%r12,%rbp,8), %rax + mov %rdx, %r9 + mul %r8 + or %rax, %r9 + add $2, %rbp + jz Lcj2 + mov %rdx, %r10 + mov -16(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r10 + xor %ecx, %ecx + jmp Llo2 + +Lb1: mov %rax, %r9 + mov %rdx, %r10 + add $1, %rbp + jnz Lgt1 + sub 8(%rsi,%rbp,8), %r9 + jmp Lcj1 +Lgt1: mov -16(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r10 + mov %rdx, %r11 + mov -8(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r11 + sub 8(%rsi,%rbp,8), %r9 + sbb 16(%rsi,%rbp,8), %r10 + sbb 24(%rsi,%rbp,8), %r11 + mov (%r12,%rbp,8), %rax + sbb %ecx, %ecx + jmp Llo1 + +Lb0: mov %rax, %r10 + mov %rdx, %r11 + mov -8(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r11 + sub 16(%rsi,%rbp,8), %r10 + sbb 24(%rsi,%rbp,8), %r11 + mov (%r12,%rbp,8), %rax + sbb %ecx, %ecx + mov %rdx, %rbx + mul %r8 + or %rax, %rbx + mov 8(%r12,%rbp,8), %rax + add $4, %rbp + jz Lend + + .align 8, 0x90 +Ltop: mov %rdx, %r9 + mul %r8 + or %rax, %r9 + mov %r10, -16(%rdi,%rbp,8) +Llo3: mov %rdx, %r10 + mov -16(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r10 + mov %r11, -8(%rdi,%rbp,8) +Llo2: mov %rdx, %r11 + mov -8(%r12,%rbp,8), %rax + mul %r8 + or %rax, %r11 + add %ecx, %ecx + sbb (%rsi,%rbp,8), %rbx + sbb 8(%rsi,%rbp,8), %r9 + sbb 16(%rsi,%rbp,8), %r10 + sbb 24(%rsi,%rbp,8), %r11 + mov (%r12,%rbp,8), %rax + sbb %ecx, %ecx + mov %rbx, (%rdi,%rbp,8) +Llo1: mov %rdx, %rbx + mul %r8 + or %rax, %rbx + mov %r9, 8(%rdi,%rbp,8) +Llo0: mov 8(%r12,%rbp,8), %rax + add $4, %rbp + jnz Ltop + +Lend: mov %rdx, %r9 + mul %r8 + or %rax, %r9 + mov %r10, -16(%rdi,%rbp,8) +Lcj3: mov %r11, -8(%rdi,%rbp,8) +Lcj2: add %ecx, %ecx + sbb (%rsi,%rbp,8), %rbx + sbb 8(%rsi,%rbp,8), %r9 + mov %rbx, (%rdi,%rbp,8) +Lcj1: mov %r9, 8(%rdi,%rbp,8) + mov %rdx, %rax + sbb $0, %rax + pop %rbx + pop %rbp + pop %r12 + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/rsh1add_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/rsh1add_n.s new file mode 100644 index 0000000..c4532fc --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/rsh1add_n.s @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_rsh1add_nc + + .def __gmpn_rsh1add_nc + .scl 2 + .type 32 + .endef +__gmpn_rsh1add_nc: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + push %rbx + + xor %eax, %eax + neg %r8 + mov (%rsi), %rbx + adc (%rdx), %rbx + jmp Lent + + + .align 16, 0x90 + .globl __gmpn_rsh1add_n + + .def __gmpn_rsh1add_n + .scl 2 + .type 32 + .endef +__gmpn_rsh1add_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %rbx + + xor %eax, %eax + mov (%rsi), %rbx + add (%rdx), %rbx +Lent: + rcr %rbx + adc %eax, %eax + + mov %ecx, %r11d + and $3, %r11d + + cmp $1, %r11d + je Ldo + +Ln1: cmp $2, %r11d + jne Ln2 + add %rbx, %rbx + mov 8(%rsi), %r10 + adc 8(%rdx), %r10 + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + rcr %r10 + rcr %rbx + mov %rbx, -8(%rdi) + jmp Lcj1 + +Ln2: cmp $3, %r11d + jne Ln3 + add %rbx, %rbx + mov 8(%rsi), %r9 + mov 16(%rsi), %r10 + adc 8(%rdx), %r9 + adc 16(%rdx), %r10 + lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea 16(%rdi), %rdi + rcr %r10 + rcr %r9 + rcr %rbx + mov %rbx, -16(%rdi) + jmp Lcj2 + +Ln3: dec %rcx + add %rbx, %rbx + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + adc 8(%rdx), %r8 + adc 16(%rdx), %r9 + mov 24(%rsi), %r10 + adc 24(%rdx), %r10 + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea 24(%rdi), %rdi + rcr %r10 + rcr %r9 + rcr %r8 + rcr %rbx + mov %rbx, -24(%rdi) + mov %r8, -16(%rdi) +Lcj2: mov %r9, -8(%rdi) +Lcj1: mov %r10, %rbx + +Ldo: + shr $2, %rcx + je Lend + .align 16, 0x90 +Ltop: add %rbx, %rbx + + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + adc 8(%rdx), %r8 + adc 16(%rdx), %r9 + mov 24(%rsi), %r10 + mov 32(%rsi), %r11 + adc 24(%rdx), %r10 + adc 32(%rdx), %r11 + + lea 32(%rsi), %rsi + lea 32(%rdx), %rdx + + rcr %r11 + rcr %r10 + rcr %r9 + rcr %r8 + + rcr %rbx + mov %rbx, (%rdi) + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) + mov %r10, 24(%rdi) + mov %r11, %rbx + + lea 32(%rdi), %rdi + dec %rcx + jne Ltop + +Lend: mov %rbx, (%rdi) + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/rsh1sub_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/rsh1sub_n.s new file mode 100644 index 0000000..da5512f --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/rsh1sub_n.s @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_rsh1sub_nc + + .def __gmpn_rsh1sub_nc + .scl 2 + .type 32 + .endef +__gmpn_rsh1sub_nc: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + push %rbx + + xor %eax, %eax + neg %r8 + mov (%rsi), %rbx + sbb (%rdx), %rbx + jmp Lent + + + .align 16, 0x90 + .globl __gmpn_rsh1sub_n + + .def __gmpn_rsh1sub_n + .scl 2 + .type 32 + .endef +__gmpn_rsh1sub_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %rbx + + xor %eax, %eax + mov (%rsi), %rbx + sub (%rdx), %rbx +Lent: + rcr %rbx + adc %eax, %eax + + mov %ecx, %r11d + and $3, %r11d + + cmp $1, %r11d + je Ldo + +Ln1: cmp $2, %r11d + jne Ln2 + add %rbx, %rbx + mov 8(%rsi), %r10 + sbb 8(%rdx), %r10 + lea 8(%rsi), %rsi + lea 8(%rdx), %rdx + lea 8(%rdi), %rdi + rcr %r10 + rcr %rbx + mov %rbx, -8(%rdi) + jmp Lcj1 + +Ln2: cmp $3, %r11d + jne Ln3 + add %rbx, %rbx + mov 8(%rsi), %r9 + mov 16(%rsi), %r10 + sbb 8(%rdx), %r9 + sbb 16(%rdx), %r10 + lea 16(%rsi), %rsi + lea 16(%rdx), %rdx + lea 16(%rdi), %rdi + rcr %r10 + rcr %r9 + rcr %rbx + mov %rbx, -16(%rdi) + jmp Lcj2 + +Ln3: dec %rcx + add %rbx, %rbx + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + sbb 8(%rdx), %r8 + sbb 16(%rdx), %r9 + mov 24(%rsi), %r10 + sbb 24(%rdx), %r10 + lea 24(%rsi), %rsi + lea 24(%rdx), %rdx + lea 24(%rdi), %rdi + rcr %r10 + rcr %r9 + rcr %r8 + rcr %rbx + mov %rbx, -24(%rdi) + mov %r8, -16(%rdi) +Lcj2: mov %r9, -8(%rdi) +Lcj1: mov %r10, %rbx + +Ldo: + shr $2, %rcx + je Lend + .align 16, 0x90 +Ltop: add %rbx, %rbx + + mov 8(%rsi), %r8 + mov 16(%rsi), %r9 + sbb 8(%rdx), %r8 + sbb 16(%rdx), %r9 + mov 24(%rsi), %r10 + mov 32(%rsi), %r11 + sbb 24(%rdx), %r10 + sbb 32(%rdx), %r11 + + lea 32(%rsi), %rsi + lea 32(%rdx), %rdx + + rcr %r11 + rcr %r10 + rcr %r9 + rcr %r8 + + rcr %rbx + mov %rbx, (%rdi) + mov %r8, 8(%rdi) + mov %r9, 16(%rdi) + mov %r10, 24(%rdi) + mov %r11, %rbx + + lea 32(%rdi), %rdi + dec %rcx + jne Ltop + +Lend: mov %rbx, (%rdi) + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/rshift.s b/vere/ext/gmp/gen/x86_64-windows/mpn/rshift.s new file mode 100644 index 0000000..fdd4486 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/rshift.s @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_rshift + + .def __gmpn_rshift + .scl 2 + .type 32 + .endef +__gmpn_rshift: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + neg %ecx + mov (%rsi), %rax + shl %cl, %rax + neg %ecx + + lea 1(%rdx), %r8d + + lea -8(%rsi,%rdx,8), %rsi + lea -8(%rdi,%rdx,8), %rdi + neg %rdx + + and $3, %r8d + je Lrlx + + dec %r8d + jne L1 + + mov 8(%rsi,%rdx,8), %r10 + shr %cl, %r10 + neg %ecx + mov 16(%rsi,%rdx,8), %r8 + shl %cl, %r8 + or %r8, %r10 + mov %r10, 8(%rdi,%rdx,8) + inc %rdx + jmp Lrll + +L1: dec %r8d + je L1x + + mov 8(%rsi,%rdx,8), %r10 + shr %cl, %r10 + neg %ecx + mov 16(%rsi,%rdx,8), %r8 + shl %cl, %r8 + or %r8, %r10 + mov %r10, 8(%rdi,%rdx,8) + inc %rdx + neg %ecx +L1x: + cmp $-1, %rdx + je Last + mov 8(%rsi,%rdx,8), %r10 + shr %cl, %r10 + mov 16(%rsi,%rdx,8), %r11 + shr %cl, %r11 + neg %ecx + mov 16(%rsi,%rdx,8), %r8 + mov 24(%rsi,%rdx,8), %r9 + shl %cl, %r8 + or %r8, %r10 + shl %cl, %r9 + or %r9, %r11 + mov %r10, 8(%rdi,%rdx,8) + mov %r11, 16(%rdi,%rdx,8) + add $2, %rdx + +Lrll: neg %ecx +Lrlx: mov 8(%rsi,%rdx,8), %r10 + shr %cl, %r10 + mov 16(%rsi,%rdx,8), %r11 + shr %cl, %r11 + + add $4, %rdx + jb Lend + .align 16, 0x90 +Ltop: + + neg %ecx + mov -16(%rsi,%rdx,8), %r8 + mov -8(%rsi,%rdx,8), %r9 + shl %cl, %r8 + or %r8, %r10 + shl %cl, %r9 + or %r9, %r11 + mov %r10, -24(%rdi,%rdx,8) + mov %r11, -16(%rdi,%rdx,8) + + mov (%rsi,%rdx,8), %r8 + mov 8(%rsi,%rdx,8), %r9 + shl %cl, %r8 + shl %cl, %r9 + + + neg %ecx + mov -8(%rsi,%rdx,8), %r10 + mov 0(%rsi,%rdx,8), %r11 + shr %cl, %r10 + or %r10, %r8 + shr %cl, %r11 + or %r11, %r9 + mov %r8, -8(%rdi,%rdx,8) + mov %r9, 0(%rdi,%rdx,8) + + mov 8(%rsi,%rdx,8), %r10 + mov 16(%rsi,%rdx,8), %r11 + shr %cl, %r10 + shr %cl, %r11 + + add $4, %rdx + jae Ltop +Lend: + neg %ecx + mov -8(%rsi), %r8 + shl %cl, %r8 + or %r8, %r10 + mov (%rsi), %r9 + shl %cl, %r9 + or %r9, %r11 + mov %r10, -16(%rdi) + mov %r11, -8(%rdi) + + neg %ecx +Last: mov (%rsi), %r10 + shr %cl, %r10 + mov %r10, (%rdi) + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/sec_tabselect.s b/vere/ext/gmp/gen/x86_64-windows/mpn/sec_tabselect.s new file mode 100644 index 0000000..6683ed2 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/sec_tabselect.s @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_sec_tabselect + + .def __gmpn_sec_tabselect + .scl 2 + .type 32 + .endef +__gmpn_sec_tabselect: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8d + + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + mov %rdx, %r9 + add $-4, %r9 + js Louter_end + +Louter_top: + mov %rcx, %rbp + push %rsi + xor %r12d, %r12d + xor %r13d, %r13d + xor %r14d, %r14d + xor %r15d, %r15d + mov %r8, %rbx + + .align 16, 0x90 +Ltop: sub $1, %rbx + sbb %rax, %rax + mov 0(%rsi), %r10 + mov 8(%rsi), %r11 + and %rax, %r10 + and %rax, %r11 + or %r10, %r12 + or %r11, %r13 + mov 16(%rsi), %r10 + mov 24(%rsi), %r11 + and %rax, %r10 + and %rax, %r11 + or %r10, %r14 + or %r11, %r15 + lea (%rsi,%rdx,8), %rsi + add $-1, %rbp + jne Ltop + + mov %r12, 0(%rdi) + mov %r13, 8(%rdi) + mov %r14, 16(%rdi) + mov %r15, 24(%rdi) + pop %rsi + lea 32(%rsi), %rsi + lea 32(%rdi), %rdi + add $-4, %r9 + jns Louter_top +Louter_end: + + test $2, %dl + jz Lb0x +Lb1x: mov %rcx, %rbp + push %rsi + xor %r12d, %r12d + xor %r13d, %r13d + mov %r8, %rbx + .align 16, 0x90 +Ltp2: sub $1, %rbx + sbb %rax, %rax + mov 0(%rsi), %r10 + mov 8(%rsi), %r11 + and %rax, %r10 + and %rax, %r11 + or %r10, %r12 + or %r11, %r13 + lea (%rsi,%rdx,8), %rsi + add $-1, %rbp + jne Ltp2 + mov %r12, 0(%rdi) + mov %r13, 8(%rdi) + pop %rsi + lea 16(%rsi), %rsi + lea 16(%rdi), %rdi + +Lb0x: test $1, %dl + jz Lb00 +Lb01: mov %rcx, %rbp + xor %r12d, %r12d + mov %r8, %rbx + .align 16, 0x90 +Ltp1: sub $1, %rbx + sbb %rax, %rax + mov 0(%rsi), %r10 + and %rax, %r10 + or %r10, %r12 + lea (%rsi,%rdx,8), %rsi + add $-1, %rbp + jne Ltp1 + mov %r12, 0(%rdi) + +Lb00: pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/sqr_basecase.s b/vere/ext/gmp/gen/x86_64-windows/mpn/sqr_basecase.s new file mode 100644 index 0000000..852ca8f --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/sqr_basecase.s @@ -0,0 +1,831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_sqr_basecase + + .def __gmpn_sqr_basecase + .scl 2 + .type 32 + .endef +__gmpn_sqr_basecase: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + + mov %edx, %ecx + mov %edx, %r11d + + add $-40, %rsp + + and $3, %ecx + cmp $4, %edx + lea 4(%rcx), %r8 + + mov %rbx, 32(%rsp) + mov %rbp, 24(%rsp) + mov %r12, 16(%rsp) + mov %r13, 8(%rsp) + mov %r14, (%rsp) + + cmovg %r8, %rcx + + lea Ltab(%rip), %rax + movslq (%rax,%rcx,4), %r10 + add %r10, %rax + jmp *%rax + + .section .rdata,"dr" + .align 8, 0x90 +Ltab: .long L4-Ltab + .long L1-Ltab + .long L2-Ltab + .long L3-Ltab + .long L0m4-Ltab + .long L1m4-Ltab + .long L2m4-Ltab + .long L3m4-Ltab + .text + +L1: mov (%rsi), %rax + mul %rax + add $40, %rsp + mov %rax, (%rdi) + mov %rdx, 8(%rdi) + pop %rsi + pop %rdi + ret + +L2: mov (%rsi), %rax + mov %rax, %r8 + mul %rax + mov 8(%rsi), %r11 + mov %rax, (%rdi) + mov %r11, %rax + mov %rdx, %r9 + mul %rax + add $40, %rsp + mov %rax, %r10 + mov %r11, %rax + mov %rdx, %r11 + mul %r8 + xor %r8, %r8 + add %rax, %r9 + adc %rdx, %r10 + adc %r8, %r11 + add %rax, %r9 + mov %r9, 8(%rdi) + adc %rdx, %r10 + mov %r10, 16(%rdi) + adc %r8, %r11 + mov %r11, 24(%rdi) + pop %rsi + pop %rdi + ret + +L3: mov (%rsi), %rax + mov %rax, %r10 + mul %rax + mov 8(%rsi), %r11 + mov %rax, (%rdi) + mov %r11, %rax + mov %rdx, 8(%rdi) + mul %rax + mov 16(%rsi), %rcx + mov %rax, 16(%rdi) + mov %rcx, %rax + mov %rdx, 24(%rdi) + mul %rax + mov %rax, 32(%rdi) + mov %rdx, 40(%rdi) + + mov %r11, %rax + mul %r10 + mov %rax, %r8 + mov %rcx, %rax + mov %rdx, %r9 + mul %r10 + xor %r10, %r10 + add %rax, %r9 + mov %r11, %rax + mov %r10, %r11 + adc %rdx, %r10 + + mul %rcx + add $40, %rsp + add %rax, %r10 + adc %r11, %rdx + add %r8, %r8 + adc %r9, %r9 + adc %r10, %r10 + adc %rdx, %rdx + adc %r11, %r11 + add %r8, 8(%rdi) + adc %r9, 16(%rdi) + adc %r10, 24(%rdi) + adc %rdx, 32(%rdi) + adc %r11, 40(%rdi) + pop %rsi + pop %rdi + ret + +L4: mov (%rsi), %rax + mov %rax, %r11 + mul %rax + mov 8(%rsi), %rbx + mov %rax, (%rdi) + mov %rbx, %rax + mov %rdx, 8(%rdi) + mul %rax + mov %rax, 16(%rdi) + mov %rdx, 24(%rdi) + mov 16(%rsi), %rax + mul %rax + mov %rax, 32(%rdi) + mov %rdx, 40(%rdi) + mov 24(%rsi), %rax + mul %rax + mov %rax, 48(%rdi) + mov %rbx, %rax + mov %rdx, 56(%rdi) + + mul %r11 + add $32, %rsp + mov %rax, %r8 + mov %rdx, %r9 + mov 16(%rsi), %rax + mul %r11 + xor %r10, %r10 + add %rax, %r9 + adc %rdx, %r10 + mov 24(%rsi), %rax + mul %r11 + xor %r11, %r11 + add %rax, %r10 + adc %rdx, %r11 + mov 16(%rsi), %rax + mul %rbx + xor %rcx, %rcx + add %rax, %r10 + adc %rdx, %r11 + adc $0, %rcx + mov 24(%rsi), %rax + mul %rbx + pop %rbx + add %rax, %r11 + adc %rdx, %rcx + mov 16(%rsi), %rdx + mov 24(%rsi), %rax + mul %rdx + add %rax, %rcx + adc $0, %rdx + + add %r8, %r8 + adc %r9, %r9 + adc %r10, %r10 + adc %r11, %r11 + adc %rcx, %rcx + mov $0, %eax + adc %rdx, %rdx + + adc %rax, %rax + add %r8, 8(%rdi) + adc %r9, 16(%rdi) + adc %r10, 24(%rdi) + adc %r11, 32(%rdi) + adc %rcx, 40(%rdi) + adc %rdx, 48(%rdi) + adc %rax, 56(%rdi) + pop %rsi + pop %rdi + ret + + +L0m4: + lea -16(%rdi,%r11,8), %r12 + mov (%rsi), %r13 + mov 8(%rsi), %rax + lea (%rsi,%r11,8), %rsi + + lea -4(%r11), %r8 + + xor %r9d, %r9d + sub %r11, %r9 + + mul %r13 + xor %ebp, %ebp + mov %rax, %rbx + mov 16(%rsi,%r9,8), %rax + mov %rdx, %r10 + jmp LL3 + + .align 16, 0x90 +Lmul_1_m3_top: + add %rax, %rbp + mov %r10, (%r12,%r9,8) + mov (%rsi,%r9,8), %rax + adc %rdx, %rcx + xor %ebx, %ebx + mul %r13 + xor %r10d, %r10d + mov %rbp, 8(%r12,%r9,8) + add %rax, %rcx + adc %rdx, %rbx + mov 8(%rsi,%r9,8), %rax + mov %rcx, 16(%r12,%r9,8) + xor %ebp, %ebp + mul %r13 + add %rax, %rbx + mov 16(%rsi,%r9,8), %rax + adc %rdx, %r10 +LL3: xor %ecx, %ecx + mul %r13 + add %rax, %r10 + mov 24(%rsi,%r9,8), %rax + adc %rdx, %rbp + mov %rbx, 24(%r12,%r9,8) + mul %r13 + add $4, %r9 + js Lmul_1_m3_top + + add %rax, %rbp + mov %r10, (%r12) + adc %rdx, %rcx + mov %rbp, 8(%r12) + mov %rcx, 16(%r12) + + lea 16(%r12), %r12 + lea -8(%rsi), %rsi + jmp Ldowhile + + +L1m4: + lea 8(%rdi,%r11,8), %r12 + mov (%rsi), %r13 + mov 8(%rsi), %rax + lea 8(%rsi,%r11,8), %rsi + + lea -3(%r11), %r8 + + lea -3(%r11), %r9 + neg %r9 + + mov %rax, %r14 + mul %r13 + mov %rdx, %rcx + xor %ebp, %ebp + mov %rax, 8(%rdi) + jmp Lm0 + + .align 16, 0x90 +Lmul_2_m0_top: + mul %r14 + add %rax, %rbx + adc %rdx, %rcx + mov -24(%rsi,%r9,8), %rax + mov $0, %ebp + mul %r13 + add %rax, %rbx + mov -24(%rsi,%r9,8), %rax + adc %rdx, %rcx + adc $0, %ebp + mul %r14 + add %rax, %rcx + mov %rbx, -24(%r12,%r9,8) + adc %rdx, %rbp +Lm0: mov -16(%rsi,%r9,8), %rax + mul %r13 + mov $0, %r10d + add %rax, %rcx + adc %rdx, %rbp + mov -16(%rsi,%r9,8), %rax + adc $0, %r10d + mov $0, %ebx + mov %rcx, -16(%r12,%r9,8) + mul %r14 + add %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + mov $0, %ecx + mul %r13 + add %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + adc $0, %ebx + mul %r14 + add %rax, %r10 + mov %rbp, -8(%r12,%r9,8) + adc %rdx, %rbx +Lm2x: mov (%rsi,%r9,8), %rax + mul %r13 + add %rax, %r10 + adc %rdx, %rbx + adc $0, %ecx + add $4, %r9 + mov -32(%rsi,%r9,8), %rax + mov %r10, -32(%r12,%r9,8) + js Lmul_2_m0_top + + mul %r14 + add %rax, %rbx + adc %rdx, %rcx + mov %rbx, -8(%r12) + mov %rcx, (%r12) + + lea -16(%rsi), %rsi + lea 0(%r12), %r12 + jmp Ldowhile_end + + +L2m4: + lea -16(%rdi,%r11,8), %r12 + mov (%rsi), %r13 + mov 8(%rsi), %rax + lea (%rsi,%r11,8), %rsi + + lea -4(%r11), %r8 + + lea -2(%r11), %r9 + neg %r9 + + mul %r13 + mov %rax, %rbp + mov (%rsi,%r9,8), %rax + mov %rdx, %rcx + jmp LL1 + + .align 16, 0x90 +Lmul_1_m1_top: + add %rax, %rbp + mov %r10, (%r12,%r9,8) + mov (%rsi,%r9,8), %rax + adc %rdx, %rcx +LL1: xor %ebx, %ebx + mul %r13 + xor %r10d, %r10d + mov %rbp, 8(%r12,%r9,8) + add %rax, %rcx + adc %rdx, %rbx + mov 8(%rsi,%r9,8), %rax + mov %rcx, 16(%r12,%r9,8) + xor %ebp, %ebp + mul %r13 + add %rax, %rbx + mov 16(%rsi,%r9,8), %rax + adc %rdx, %r10 + xor %ecx, %ecx + mul %r13 + add %rax, %r10 + mov 24(%rsi,%r9,8), %rax + adc %rdx, %rbp + mov %rbx, 24(%r12,%r9,8) + mul %r13 + add $4, %r9 + js Lmul_1_m1_top + + add %rax, %rbp + mov %r10, (%r12) + adc %rdx, %rcx + mov %rbp, 8(%r12) + mov %rcx, 16(%r12) + + lea 16(%r12), %r12 + lea -8(%rsi), %rsi + jmp Ldowhile_mid + + +L3m4: + lea 8(%rdi,%r11,8), %r12 + mov (%rsi), %r13 + mov 8(%rsi), %rax + lea 8(%rsi,%r11,8), %rsi + + lea -5(%r11), %r8 + + lea -1(%r11), %r9 + neg %r9 + + mov %rax, %r14 + mul %r13 + mov %rdx, %r10 + xor %ebx, %ebx + xor %ecx, %ecx + mov %rax, 8(%rdi) + jmp Lm2 + + .align 16, 0x90 +Lmul_2_m2_top: + mul %r14 + add %rax, %rbx + adc %rdx, %rcx + mov -24(%rsi,%r9,8), %rax + mov $0, %ebp + mul %r13 + add %rax, %rbx + mov -24(%rsi,%r9,8), %rax + adc %rdx, %rcx + adc $0, %ebp + mul %r14 + add %rax, %rcx + mov %rbx, -24(%r12,%r9,8) + adc %rdx, %rbp + mov -16(%rsi,%r9,8), %rax + mul %r13 + mov $0, %r10d + add %rax, %rcx + adc %rdx, %rbp + mov -16(%rsi,%r9,8), %rax + adc $0, %r10d + mov $0, %ebx + mov %rcx, -16(%r12,%r9,8) + mul %r14 + add %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + mov $0, %ecx + mul %r13 + add %rax, %rbp + mov -8(%rsi,%r9,8), %rax + adc %rdx, %r10 + adc $0, %ebx + mul %r14 + add %rax, %r10 + mov %rbp, -8(%r12,%r9,8) + adc %rdx, %rbx +Lm2: mov (%rsi,%r9,8), %rax + mul %r13 + add %rax, %r10 + adc %rdx, %rbx + adc $0, %ecx + add $4, %r9 + mov -32(%rsi,%r9,8), %rax + mov %r10, -32(%r12,%r9,8) + js Lmul_2_m2_top + + mul %r14 + add %rax, %rbx + adc %rdx, %rcx + mov %rbx, -8(%r12) + mov %rcx, (%r12) + + lea -16(%rsi), %rsi + jmp Ldowhile_mid + +Ldowhile: + + lea 4(%r8), %r9 + neg %r9 + + mov 16(%rsi,%r9,8), %r13 + mov 24(%rsi,%r9,8), %r14 + mov 24(%rsi,%r9,8), %rax + mul %r13 + xor %r10d, %r10d + add %rax, 24(%r12,%r9,8) + adc %rdx, %r10 + xor %ebx, %ebx + xor %ecx, %ecx + jmp Lam2 + + .align 16, 0x90 +Laddmul_2_m2_top: + add %r10, (%r12,%r9,8) + adc %rax, %rbx + mov 8(%rsi,%r9,8), %rax + adc %rdx, %rcx + mov $0, %ebp + mul %r13 + add %rax, %rbx + mov 8(%rsi,%r9,8), %rax + adc %rdx, %rcx + adc $0, %ebp + mul %r14 + add %rbx, 8(%r12,%r9,8) + adc %rax, %rcx + adc %rdx, %rbp + mov 16(%rsi,%r9,8), %rax + mov $0, %r10d + mul %r13 + add %rax, %rcx + mov 16(%rsi,%r9,8), %rax + adc %rdx, %rbp + adc $0, %r10d + mul %r14 + add %rcx, 16(%r12,%r9,8) + adc %rax, %rbp + mov 24(%rsi,%r9,8), %rax + adc %rdx, %r10 + mul %r13 + mov $0, %ebx + add %rax, %rbp + adc %rdx, %r10 + mov $0, %ecx + mov 24(%rsi,%r9,8), %rax + adc $0, %ebx + mul %r14 + add %rbp, 24(%r12,%r9,8) + adc %rax, %r10 + adc %rdx, %rbx +Lam2: mov 32(%rsi,%r9,8), %rax + mul %r13 + add %rax, %r10 + mov 32(%rsi,%r9,8), %rax + adc %rdx, %rbx + adc $0, %ecx + mul %r14 + add $4, %r9 + js Laddmul_2_m2_top + + add %r10, (%r12) + adc %rax, %rbx + adc %rdx, %rcx + mov %rbx, 8(%r12) + mov %rcx, 16(%r12) + + lea 16(%r12), %r12 + + add $-2, %r8d + +Ldowhile_mid: + + lea 2(%r8), %r9 + neg %r9 + + mov (%rsi,%r9,8), %r13 + mov 8(%rsi,%r9,8), %r14 + mov 8(%rsi,%r9,8), %rax + mul %r13 + xor %ecx, %ecx + add %rax, 8(%r12,%r9,8) + adc %rdx, %rcx + xor %ebp, %ebp + jmp L20 + + .align 16, 0x90 +Laddmul_2_m0_top: + add %r10, (%r12,%r9,8) + adc %rax, %rbx + mov 8(%rsi,%r9,8), %rax + adc %rdx, %rcx + mov $0, %ebp + mul %r13 + add %rax, %rbx + mov 8(%rsi,%r9,8), %rax + adc %rdx, %rcx + adc $0, %ebp + mul %r14 + add %rbx, 8(%r12,%r9,8) + adc %rax, %rcx + adc %rdx, %rbp +L20: mov 16(%rsi,%r9,8), %rax + mov $0, %r10d + mul %r13 + add %rax, %rcx + mov 16(%rsi,%r9,8), %rax + adc %rdx, %rbp + adc $0, %r10d + mul %r14 + add %rcx, 16(%r12,%r9,8) + adc %rax, %rbp + mov 24(%rsi,%r9,8), %rax + adc %rdx, %r10 + mul %r13 + mov $0, %ebx + add %rax, %rbp + adc %rdx, %r10 + mov $0, %ecx + mov 24(%rsi,%r9,8), %rax + adc $0, %ebx + mul %r14 + add %rbp, 24(%r12,%r9,8) + adc %rax, %r10 + adc %rdx, %rbx + mov 32(%rsi,%r9,8), %rax + mul %r13 + add %rax, %r10 + mov 32(%rsi,%r9,8), %rax + adc %rdx, %rbx + adc $0, %ecx + mul %r14 + add $4, %r9 + js Laddmul_2_m0_top + + add %r10, (%r12) + adc %rax, %rbx + adc %rdx, %rcx + mov %rbx, 8(%r12) + mov %rcx, 16(%r12) + + lea 16(%r12), %r12 +Ldowhile_end: + + add $-2, %r8d + jne Ldowhile + + + mov -16(%rsi), %r13 + mov -8(%rsi), %r14 + mov -8(%rsi), %rax + mul %r13 + xor %r10d, %r10d + add %rax, -8(%r12) + adc %rdx, %r10 + xor %ebx, %ebx + xor %ecx, %ecx + mov (%rsi), %rax + mul %r13 + add %rax, %r10 + mov (%rsi), %rax + adc %rdx, %rbx + mul %r14 + add %r10, (%r12) + adc %rax, %rbx + adc %rdx, %rcx + mov %rbx, 8(%r12) + mov %rcx, 16(%r12) + + + lea -4(%r11,%r11), %r9 + + mov 8(%rdi), %r11 + lea -8(%rsi), %rsi + lea (%rdi,%r9,8), %rdi + neg %r9 + mov (%rsi,%r9,4), %rax + mul %rax + test $2, %r9b + jnz Lodd + +Levn: add %r11, %r11 + sbb %ebx, %ebx + add %rdx, %r11 + mov %rax, (%rdi,%r9,8) + jmp Ld0 + +Lodd: add %r11, %r11 + sbb %ebp, %ebp + add %rdx, %r11 + mov %rax, (%rdi,%r9,8) + lea -2(%r9), %r9 + jmp Ld1 + + .align 16, 0x90 +Ltop: mov (%rsi,%r9,4), %rax + mul %rax + add %ebp, %ebp + adc %rax, %r10 + adc %rdx, %r11 + mov %r10, (%rdi,%r9,8) +Ld0: mov %r11, 8(%rdi,%r9,8) + mov 16(%rdi,%r9,8), %r10 + adc %r10, %r10 + mov 24(%rdi,%r9,8), %r11 + adc %r11, %r11 + nop + sbb %ebp, %ebp + mov 8(%rsi,%r9,4), %rax + mul %rax + add %ebx, %ebx + adc %rax, %r10 + adc %rdx, %r11 + mov %r10, 16(%rdi,%r9,8) +Ld1: mov %r11, 24(%rdi,%r9,8) + mov 32(%rdi,%r9,8), %r10 + adc %r10, %r10 + mov 40(%rdi,%r9,8), %r11 + adc %r11, %r11 + sbb %ebx, %ebx + add $4, %r9 + js Ltop + + mov (%rsi), %rax + mul %rax + add %ebp, %ebp + adc %rax, %r10 + adc %rdx, %r11 + mov %r10, (%rdi) + mov %r11, 8(%rdi) + mov 16(%rdi), %r10 + adc %r10, %r10 + sbb %ebp, %ebp + neg %ebp + mov 8(%rsi), %rax + mul %rax + add %ebx, %ebx + adc %rax, %r10 + adc %rbp, %rdx + mov %r10, 16(%rdi) + mov %rdx, 24(%rdi) + + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/sqr_diag_addlsh1.s b/vere/ext/gmp/gen/x86_64-windows/mpn/sqr_diag_addlsh1.s new file mode 100644 index 0000000..77831dd --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/sqr_diag_addlsh1.s @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_sqr_diag_addlsh1 + + .def __gmpn_sqr_diag_addlsh1 + .scl 2 + .type 32 + .endef +__gmpn_sqr_diag_addlsh1: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %rbx + + dec %rcx + shl %rcx + + mov (%rdx), %rax + + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,4), %r11 + neg %rcx + + mul %rax + mov %rax, (%rdi,%rcx,8) + + xor %ebx, %ebx + jmp Lmid + + .align 16, 0x90 +Ltop: add %r10, %r8 + adc %rax, %r9 + mov %r8, -8(%rdi,%rcx,8) + mov %r9, (%rdi,%rcx,8) +Lmid: mov 8(%r11,%rcx,4), %rax + mov (%rsi,%rcx,8), %r8 + mov 8(%rsi,%rcx,8), %r9 + adc %r8, %r8 + adc %r9, %r9 + lea (%rdx,%rbx), %r10 + setc %bl + mul %rax + add $2, %rcx + js Ltop + +Lend: add %r10, %r8 + adc %rax, %r9 + mov %r8, -8(%rdi) + mov %r9, (%rdi) + adc %rbx, %rdx + mov %rdx, 8(%rdi) + + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/sub_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/sub_n.s new file mode 100644 index 0000000..3a0fd2a --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/sub_n.s @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_sub_nc + + .def __gmpn_sub_nc + .scl 2 + .type 32 + .endef +__gmpn_sub_nc: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + mov %ecx, %eax + shr $2, %rcx + and $3, %eax + bt $0, %r8 + jrcxz Llt4 + + mov (%rsi), %r8 + mov 8(%rsi), %r9 + dec %rcx + jmp Lmid + + + .align 16, 0x90 + .globl __gmpn_sub_n + + .def __gmpn_sub_n + .scl 2 + .type 32 + .endef +__gmpn_sub_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov %ecx, %eax + shr $2, %rcx + and $3, %eax + jrcxz Llt4 + + mov (%rsi), %r8 + mov 8(%rsi), %r9 + dec %rcx + jmp Lmid + +Llt4: dec %eax + mov (%rsi), %r8 + jnz L2 + sbb (%rdx), %r8 + mov %r8, (%rdi) + adc %eax, %eax + pop %rsi + pop %rdi + ret + +L2: dec %eax + mov 8(%rsi), %r9 + jnz L3 + sbb (%rdx), %r8 + sbb 8(%rdx), %r9 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + adc %eax, %eax + pop %rsi + pop %rdi + ret + +L3: mov 16(%rsi), %r10 + sbb (%rdx), %r8 + sbb 8(%rdx), %r9 + sbb 16(%rdx), %r10 + mov %r8, (%rdi) + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + setc %al + pop %rsi + pop %rdi + ret + + .align 16, 0x90 +Ltop: sbb (%rdx), %r8 + sbb 8(%rdx), %r9 + sbb 16(%rdx), %r10 + sbb 24(%rdx), %r11 + mov %r8, (%rdi) + lea 32(%rsi), %rsi + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + dec %rcx + mov %r11, 24(%rdi) + lea 32(%rdx), %rdx + mov (%rsi), %r8 + mov 8(%rsi), %r9 + lea 32(%rdi), %rdi +Lmid: mov 16(%rsi), %r10 + mov 24(%rsi), %r11 + jnz Ltop + +Lend: lea 32(%rsi), %rsi + sbb (%rdx), %r8 + sbb 8(%rdx), %r9 + sbb 16(%rdx), %r10 + sbb 24(%rdx), %r11 + lea 32(%rdx), %rdx + mov %r8, (%rdi) + mov %r9, 8(%rdi) + mov %r10, 16(%rdi) + mov %r11, 24(%rdi) + lea 32(%rdi), %rdi + + inc %eax + dec %eax + jnz Llt4 + adc %eax, %eax + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/sublsh1_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/sublsh1_n.s new file mode 100644 index 0000000..6437ac5 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/sublsh1_n.s @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_sublsh1_n + + .def __gmpn_sublsh1_n + .scl 2 + .type 32 + .endef +__gmpn_sublsh1_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + push %rbx + push %rbp + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdi,%rcx,8), %rdi + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rdx + neg %rcx + xor %ebp, %ebp + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: add %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + mov 16(%rdx,%rcx,8), %r10 + adc %r10, %r10 + sbb %eax, %eax + mov (%rsi,%rcx,8), %rbp + mov 8(%rsi,%rcx,8), %rbx + sub %r8, %rbp + sbb %r9, %rbx + mov %rbp, (%rdi,%rcx,8) + mov %rbx, 8(%rdi,%rcx,8) + mov 16(%rsi,%rcx,8), %rbp + sbb %r10, %rbp + mov %rbp, 16(%rdi,%rcx,8) + sbb %ebp, %ebp + add $3, %rcx + jmp Lent + +Lb10: add %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + sbb %eax, %eax + mov (%rsi,%rcx,8), %rbp + mov 8(%rsi,%rcx,8), %rbx + sub %r8, %rbp + sbb %r9, %rbx + mov %rbp, (%rdi,%rcx,8) + mov %rbx, 8(%rdi,%rcx,8) + sbb %ebp, %ebp + add $2, %rcx + jmp Lent + +Lb01: add %r8, %r8 + sbb %eax, %eax + mov (%rsi,%rcx,8), %rbp + sub %r8, %rbp + mov %rbp, (%rdi,%rcx,8) + sbb %ebp, %ebp + inc %rcx +Lent: jns Lend + + .align 16, 0x90 +Ltop: add %eax, %eax + + mov (%rdx,%rcx,8), %r8 +Lb00: adc %r8, %r8 + mov 8(%rdx,%rcx,8), %r9 + adc %r9, %r9 + mov 16(%rdx,%rcx,8), %r10 + adc %r10, %r10 + mov 24(%rdx,%rcx,8), %r11 + adc %r11, %r11 + + sbb %eax, %eax + add %ebp, %ebp + + mov (%rsi,%rcx,8), %rbp + mov 8(%rsi,%rcx,8), %rbx + sbb %r8, %rbp + sbb %r9, %rbx + mov %rbp, (%rdi,%rcx,8) + mov %rbx, 8(%rdi,%rcx,8) + mov 16(%rsi,%rcx,8), %rbp + mov 24(%rsi,%rcx,8), %rbx + sbb %r10, %rbp + sbb %r11, %rbx + mov %rbp, 16(%rdi,%rcx,8) + mov %rbx, 24(%rdi,%rcx,8) + + sbb %ebp, %ebp + add $4, %rcx + js Ltop + +Lend: add %ebp, %eax + neg %eax + + pop %rbp + pop %rbx + pop %rsi + pop %rdi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/submul_1.s b/vere/ext/gmp/gen/x86_64-windows/mpn/submul_1.s new file mode 100644 index 0000000..a45d3ee --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/submul_1.s @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_submul_1 + + .def __gmpn_submul_1 + .scl 2 + .type 32 + .endef +__gmpn_submul_1: + + +push %rsi +push %rdi +mov %rdx, %rsi + + mov (%rsi), %rax + push %rbx + + mov %r8, %rbx + mul %r9 + + + and $3, %ebx + jz Lb0 + cmp $2, %ebx + jz Lb2 + jg Lb3 + +Lb1: dec %r8 + jne Lgt1 + sub %rax, (%rcx) + jmp Lret +Lgt1: lea 8(%rsi,%r8,8), %rsi + lea -8(%rcx,%r8,8), %rcx + neg %r8 + xor %r10, %r10 + xor %ebx, %ebx + mov %rax, %rdi + mov (%rsi,%r8,8), %rax + mov %rdx, %r11 + jmp LL1 + +Lb0: lea (%rsi,%r8,8), %rsi + lea -16(%rcx,%r8,8), %rcx + neg %r8 + xor %r10, %r10 + mov %rax, %r11 + mov %rdx, %rbx + jmp LL0 + +Lb3: lea -8(%rsi,%r8,8), %rsi + lea -24(%rcx,%r8,8), %rcx + neg %r8 + mov %rax, %rbx + mov %rdx, %r10 + jmp LL3 + +Lb2: lea -16(%rsi,%r8,8), %rsi + lea -32(%rcx,%r8,8), %rcx + neg %r8 + xor %r11, %r11 + xor %ebx, %ebx + mov %rax, %r10 + mov 24(%rsi,%r8,8), %rax + mov %rdx, %rdi + jmp LL2 + + .align 16, 0x90 +Ltop: sub %r10, (%rcx,%r8,8) + adc %rax, %rdi + mov (%rsi,%r8,8), %rax + adc %rdx, %r11 + mov $0, %r10d +LL1: mul %r9 + sub %rdi, 8(%rcx,%r8,8) + adc %rax, %r11 + adc %rdx, %rbx +LL0: mov 8(%rsi,%r8,8), %rax + mul %r9 + sub %r11, 16(%rcx,%r8,8) + adc %rax, %rbx + adc %rdx, %r10 +LL3: mov 16(%rsi,%r8,8), %rax + mul %r9 + sub %rbx, 24(%rcx,%r8,8) + mov $0, %r11d + mov %r11, %rbx + adc %rax, %r10 + mov 24(%rsi,%r8,8), %rax + mov %r11, %rdi + adc %rdx, %rdi +LL2: mul %r9 + add $4, %r8 + js Ltop + + sub %r10, (%rcx,%r8,8) + adc %rax, %rdi + adc %r11, %rdx + sub %rdi, 8(%rcx,%r8,8) +Lret: adc $0, %rdx + mov %rdx, %rax + + pop %rbx +pop %rdi +pop %rsi + ret + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/xnor_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/xnor_n.s new file mode 100644 index 0000000..a411008 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/xnor_n.s @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_xnor_n + + .def __gmpn_xnor_n + .scl 2 + .type 32 + .endef +__gmpn_xnor_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov (%rdx), %r8 + not %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: xor (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp Le11 +Lb10: add $-2, %rcx + jmp Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90 +Lb01: xor (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz Lret + +Ltop: mov (%rdx,%rcx,8), %r8 + not %r8 +Lb00: mov 8(%rdx,%rcx,8), %r9 + not %r9 + xor (%rsi,%rcx,8), %r8 + xor 8(%rsi,%rcx,8), %r9 + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +Le11: mov 16(%rdx,%rcx,8), %r8 + not %r8 +Le10: mov 24(%rdx,%rcx,8), %r9 + not %r9 + xor 16(%rsi,%rcx,8), %r8 + xor 24(%rsi,%rcx,8), %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc Ltop + +Lret: pop %rsi + pop %rdi + ret + + + + diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/xor_n.s b/vere/ext/gmp/gen/x86_64-windows/mpn/xor_n.s new file mode 100644 index 0000000..52a767b --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/xor_n.s @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_xor_n + + .def __gmpn_xor_n + .scl 2 + .type 32 + .endef +__gmpn_xor_n: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov (%rdx), %r8 + mov %ecx, %eax + lea (%rdx,%rcx,8), %rdx + lea (%rsi,%rcx,8), %rsi + lea (%rdi,%rcx,8), %rdi + neg %rcx + and $3, %eax + je Lb00 + cmp $2, %eax + jc Lb01 + je Lb10 + +Lb11: xor (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + dec %rcx + jmp Le11 +Lb10: add $-2, %rcx + jmp Le10 +Lb01: xor (%rsi,%rcx,8), %r8 + mov %r8, (%rdi,%rcx,8) + inc %rcx + jz Lret + +Ltop: mov (%rdx,%rcx,8), %r8 +Lb00: mov 8(%rdx,%rcx,8), %r9 + xor (%rsi,%rcx,8), %r8 + xor 8(%rsi,%rcx,8), %r9 + nop + mov %r8, (%rdi,%rcx,8) + mov %r9, 8(%rdi,%rcx,8) +Le11: mov 16(%rdx,%rcx,8), %r8 +Le10: mov 24(%rdx,%rcx,8), %r9 + xor 16(%rsi,%rcx,8), %r8 + xor 24(%rsi,%rcx,8), %r9 + mov %r8, 16(%rdi,%rcx,8) + mov %r9, 24(%rdi,%rcx,8) + add $4, %rcx + jnc Ltop + +Lret: pop %rsi + pop %rdi + ret + + + + + + diff --git a/vere/ext/gmp/gen/x86_64-windows/sieve_table.h b/vere/ext/gmp/gen/x86_64-windows/sieve_table.h new file mode 100644 index 0000000..ee9ac14 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/sieve_table.h @@ -0,0 +1,46 @@ +/* This file generated by gen-sieve.c - DO NOT EDIT. */ + +#if GMP_LIMB_BITS != 64 +Error, error, this data is for 64 bits +#endif + +#define PRIMESIEVE_INIT_TABLE \ + CNST_LIMB (0x3294C9E069128480), /* 5 - 196 (42 primes) */ \ + CNST_LIMB (0x95A35E1EC4AB21DC), /* 197 - 388 (32 primes) */ \ + CNST_LIMB (0x4AD7CE99B8693366), /* 389 - 580 (30 primes) */ \ + CNST_LIMB (0x6595B6DA728DC52B), /* 581 - 772 (30 primes) */ \ + CNST_LIMB (0xEA6D9F8787B0CEDE), /* 773 - 964 (26 primes) */ \ + CNST_LIMB (0x3F56A1F4CD3275A9), /* 965 - 1156 (29 primes) */ \ + CNST_LIMB (0xFD3848FB74A76ADB), /* 1157 - 1348 (26 primes) */ \ + CNST_LIMB (0xDBBA0DD1A1EDF6AF), /* 1349 - 1540 (25 primes) */ \ + CNST_LIMB (0xCEC7F17ED22799A5), /* 1541 - 1732 (27 primes) */ \ + CNST_LIMB (0xEAEC17BDBB717D56), /* 1733 - 1924 (24 primes) */ \ + CNST_LIMB (0x3B0EB7B3585AFCF3), /* 1925 - 2116 (26 primes) */ \ + CNST_LIMB (0xE563D8F69FDF6C4F), /* 2117 - 2308 (23 primes) */ \ + CNST_LIMB (0xFE5BA7ABA45E92FC), /* 2309 - 2500 (25 primes) */ \ + CNST_LIMB (0x158DEE6F3BF49B7D), /* 2501 - 2692 (24 primes) */ \ + CNST_LIMB (0xBE5A7BC4EDE6CD1A), /* 2693 - 2884 (26 primes) */ \ + CNST_LIMB (0xD7679B3FCA7BB6AD), /* 2885 - 3076 (22 primes) */ \ + CNST_LIMB (0xC3F66B971FEF37E9), /* 3077 - 3268 (22 primes) */ \ + CNST_LIMB (0x6F7EBCF339C953FD), /* 3269 - 3460 (22 primes) */ \ + CNST_LIMB (0xD5A5ECDCD235DBF0), /* 3461 - 3652 (27 primes) */ \ + CNST_LIMB (0xECFA7B2FD5B65E3B), /* 3653 - 3844 (22 primes) */ \ + CNST_LIMB (0xD28EFDF9C89F67B1), /* 3845 - 4036 (25 primes) */ \ + CNST_LIMB (0xCB7F7C7A3DD3AF4F), /* 4037 - 4228 (21 primes) */ \ + CNST_LIMB (0xEEBED6CDFF6B32CC), /* 4229 - 4420 (22 primes) */ \ + CNST_LIMB (0xD5BD73F85ECFA97C), /* 4421 - 4612 (23 primes) */ \ + CNST_LIMB (0x21FDBE4FBBAD48F7), /* 4613 - 4804 (24 primes) */ \ + CNST_LIMB (0x5E35A3B5EEB7FDE7), /* 4805 - 4996 (21 primes) */ \ + CNST_LIMB (0xD9EBFD53A7DBBCC9), /* 4997 - 5188 (22 primes) */ \ + CNST_LIMB (0xFF9EDEAF2EFE1F76), /* 5189 - 5380 (18 primes) */ +#define PRIMESIEVE_NUMBEROF_TABLE 28 +/* #define PRIMESIEVE_PRIMES_IN_TABLE 706 */ +#define PRIMESIEVE_HIGHEST_PRIME 5351 +/* #define PRIMESIEVE_FIRST_UNCHECKED 5381 */ + +#define SIEVE_MASK1 CNST_LIMB(0x3204C1A049120485) +#define SIEVE_MASKT CNST_LIMB(0xA1204892058) +#define SIEVE_2MSK1 CNST_LIMB(0x29048402110840A) +#define SIEVE_2MSK2 CNST_LIMB(0x9402180C40230184) +#define SIEVE_2MSKT CNST_LIMB(0x5021088402120) + diff --git a/vere/ext/gmp/gen/x86_64-windows/trialdivtab.h b/vere/ext/gmp/gen/x86_64-windows/trialdivtab.h new file mode 100644 index 0000000..eb81d7f --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/trialdivtab.h @@ -0,0 +1,1214 @@ +#if GMP_LIMB_BITS != 64 +#error This table is for GMP_LIMB_BITS = 64 +#endif + +#if GMP_NAIL_BITS != 0 +#error This table does not support nails +#endif + +#ifdef WANT_dtab + P(3,CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0x5555555555555555)), + P(5,CNST_LIMB(0xcccccccccccccccd),CNST_LIMB(0x3333333333333333)), + P(7,CNST_LIMB(0x6db6db6db6db6db7),CNST_LIMB(0x2492492492492492)), + P(11,CNST_LIMB(0x2e8ba2e8ba2e8ba3),CNST_LIMB(0x1745d1745d1745d1)), + P(13,CNST_LIMB(0x4ec4ec4ec4ec4ec5),CNST_LIMB(0x13b13b13b13b13b1)), + P(17,CNST_LIMB(0xf0f0f0f0f0f0f0f1),CNST_LIMB(0xf0f0f0f0f0f0f0f)), + P(19,CNST_LIMB(0x86bca1af286bca1b),CNST_LIMB(0xd79435e50d79435)), + P(23,CNST_LIMB(0xd37a6f4de9bd37a7),CNST_LIMB(0xb21642c8590b216)), + P(29,CNST_LIMB(0x34f72c234f72c235),CNST_LIMB(0x8d3dcb08d3dcb08)), + P(31,CNST_LIMB(0xef7bdef7bdef7bdf),CNST_LIMB(0x842108421084210)), + P(37,CNST_LIMB(0x14c1bacf914c1bad),CNST_LIMB(0x6eb3e45306eb3e4)), + P(41,CNST_LIMB(0x8f9c18f9c18f9c19),CNST_LIMB(0x63e7063e7063e70)), + P(43,CNST_LIMB(0x82fa0be82fa0be83),CNST_LIMB(0x5f417d05f417d05)), + P(47,CNST_LIMB(0x51b3bea3677d46cf),CNST_LIMB(0x572620ae4c415c9)), + P(53,CNST_LIMB(0x21cfb2b78c13521d),CNST_LIMB(0x4d4873ecade304d)), + P(59,CNST_LIMB(0xcbeea4e1a08ad8f3),CNST_LIMB(0x456c797dd49c341)), + P(61,CNST_LIMB(0x4fbcda3ac10c9715),CNST_LIMB(0x4325c53ef368eb0)), + P(67,CNST_LIMB(0xf0b7672a07a44c6b),CNST_LIMB(0x3d226357e16ece5)), + P(71,CNST_LIMB(0x193d4bb7e327a977),CNST_LIMB(0x39b0ad12073615a)), + P(73,CNST_LIMB(0x7e3f1f8fc7e3f1f9),CNST_LIMB(0x381c0e070381c0e)), + P(79,CNST_LIMB(0x9b8b577e613716af),CNST_LIMB(0x33d91d2a2067b23)), + P(83,CNST_LIMB(0xa3784a062b2e43db),CNST_LIMB(0x3159721ed7e7534)), + P(89,CNST_LIMB(0xf47e8fd1fa3f47e9),CNST_LIMB(0x2e05c0b81702e05)), + P(97,CNST_LIMB(0xa3a0fd5c5f02a3a1),CNST_LIMB(0x2a3a0fd5c5f02a3)), + P(101,CNST_LIMB(0x3a4c0a237c32b16d),CNST_LIMB(0x288df0cac5b3f5d)), + P(103,CNST_LIMB(0xdab7ec1dd3431b57),CNST_LIMB(0x27c45979c95204f)), + P(107,CNST_LIMB(0x77a04c8f8d28ac43),CNST_LIMB(0x2647c69456217ec)), + P(109,CNST_LIMB(0xa6c0964fda6c0965),CNST_LIMB(0x2593f69b02593f6)), + P(113,CNST_LIMB(0x90fdbc090fdbc091),CNST_LIMB(0x243f6f0243f6f02)), + P(127,CNST_LIMB(0x7efdfbf7efdfbf7f),CNST_LIMB(0x204081020408102)), + P(131,CNST_LIMB(0x3e88cb3c9484e2b),CNST_LIMB(0x1f44659e4a42715)), + P(137,CNST_LIMB(0xe21a291c077975b9),CNST_LIMB(0x1de5d6e3f8868a4)), + P(139,CNST_LIMB(0x3aef6ca970586723),CNST_LIMB(0x1d77b654b82c339)), + P(149,CNST_LIMB(0xdf5b0f768ce2cabd),CNST_LIMB(0x1b7d6c3dda338b2)), + P(151,CNST_LIMB(0x6fe4dfc9bf937f27),CNST_LIMB(0x1b2036406c80d90)), + P(157,CNST_LIMB(0x5b4fe5e92c0685b5),CNST_LIMB(0x1a16d3f97a4b01a)), + P(163,CNST_LIMB(0x1f693a1c451ab30b),CNST_LIMB(0x1920fb49d0e228d)), + P(167,CNST_LIMB(0x8d07aa27db35a717),CNST_LIMB(0x1886e5f0abb0499)), + P(173,CNST_LIMB(0x882383b30d516325),CNST_LIMB(0x17ad2208e0ecc35)), + P(179,CNST_LIMB(0xed6866f8d962ae7b),CNST_LIMB(0x16e1f76b4337c6c)), + P(181,CNST_LIMB(0x3454dca410f8ed9d),CNST_LIMB(0x16a13cd15372904)), + P(191,CNST_LIMB(0x1d7ca632ee936f3f),CNST_LIMB(0x1571ed3c506b39a)), + P(193,CNST_LIMB(0x70bf015390948f41),CNST_LIMB(0x15390948f40feac)), + P(197,CNST_LIMB(0xc96bdb9d3d137e0d),CNST_LIMB(0x14cab88725af6e7)), + P(199,CNST_LIMB(0x2697cc8aef46c0f7),CNST_LIMB(0x149539e3b2d066e)), + P(211,CNST_LIMB(0xc0e8f2a76e68575b),CNST_LIMB(0x13698df3de07479)), + P(223,CNST_LIMB(0x687763dfdb43bb1f),CNST_LIMB(0x125e22708092f11)), + P(227,CNST_LIMB(0x1b10ea929ba144cb),CNST_LIMB(0x120b470c67c0d88)), + P(229,CNST_LIMB(0x1d10c4c0478bbced),CNST_LIMB(0x11e2ef3b3fb8744)), + P(233,CNST_LIMB(0x63fb9aeb1fdcd759),CNST_LIMB(0x119453808ca29c0)), + P(239,CNST_LIMB(0x64afaa4f437b2e0f),CNST_LIMB(0x112358e75d30336)), + P(241,CNST_LIMB(0xf010fef010fef011),CNST_LIMB(0x10fef010fef010f)), + P(251,CNST_LIMB(0x28cbfbeb9a020a33),CNST_LIMB(0x105197f7d734041)), + P(257,CNST_LIMB(0xff00ff00ff00ff01),CNST_LIMB(0xff00ff00ff00ff)), + P(263,CNST_LIMB(0xd624fd1470e99cb7),CNST_LIMB(0xf92fb2211855a8)), + P(269,CNST_LIMB(0x8fb3ddbd6205b5c5),CNST_LIMB(0xf3a0d52cba8723)), + P(271,CNST_LIMB(0xd57da36ca27acdef),CNST_LIMB(0xf1d48bcee0d399)), + P(277,CNST_LIMB(0xee70c03b25e4463d),CNST_LIMB(0xec979118f3fc4d)), + P(281,CNST_LIMB(0xc5b1a6b80749cb29),CNST_LIMB(0xe939651fe2d8d3)), + P(283,CNST_LIMB(0x47768073c9b97113),CNST_LIMB(0xe79372e225fe30)), + P(293,CNST_LIMB(0x2591e94884ce32ad),CNST_LIMB(0xdfac1f74346c57)), + P(307,CNST_LIMB(0xf02806abc74be1fb),CNST_LIMB(0xd578e97c3f5fe5)), + P(311,CNST_LIMB(0x7ec3e8f3a7198487),CNST_LIMB(0xd2ba083b445250)), + P(313,CNST_LIMB(0x58550f8a39409d09),CNST_LIMB(0xd161543e28e502)), + P(317,CNST_LIMB(0xec9e48ae6f71de15),CNST_LIMB(0xcebcf8bb5b4169)), + P(331,CNST_LIMB(0x2ff3a018bfce8063),CNST_LIMB(0xc5fe740317f9d0)), + P(337,CNST_LIMB(0x7f9ec3fcf61fe7b1),CNST_LIMB(0xc2780613c0309e)), + P(347,CNST_LIMB(0x89f5abe570e046d3),CNST_LIMB(0xbcdd535db1cc5b)), + P(349,CNST_LIMB(0xda971b23f1545af5),CNST_LIMB(0xbbc8408cd63069)), + P(353,CNST_LIMB(0x79d5f00b9a7862a1),CNST_LIMB(0xb9a7862a0ff465)), + P(359,CNST_LIMB(0x4dba1df32a128a57),CNST_LIMB(0xb68d31340e4307)), + P(367,CNST_LIMB(0x87530217b7747d8f),CNST_LIMB(0xb2927c29da5519)), + P(373,CNST_LIMB(0x30baae53bb5e06dd),CNST_LIMB(0xafb321a1496fdf)), + P(379,CNST_LIMB(0xee70206c12e9b5b3),CNST_LIMB(0xaceb0f891e6551)), + P(383,CNST_LIMB(0xcdde9462ec9dbe7f),CNST_LIMB(0xab1cbdd3e2970f)), + P(389,CNST_LIMB(0xafb64b05ec41cf4d),CNST_LIMB(0xa87917088e262b)), + P(397,CNST_LIMB(0x2944ff5aec02945),CNST_LIMB(0xa513fd6bb00a51)), + P(401,CNST_LIMB(0x2cb033128382df71),CNST_LIMB(0xa36e71a2cb0331)), + P(409,CNST_LIMB(0x1ccacc0c84b1c2a9),CNST_LIMB(0xa03c1688732b30)), + P(419,CNST_LIMB(0x19a93db575eb3a0b),CNST_LIMB(0x9c69169b30446d)), + P(421,CNST_LIMB(0xcebeef94fa86fe2d),CNST_LIMB(0x9baade8e4a2f6e)), + P(431,CNST_LIMB(0x6faa77fb3f8df54f),CNST_LIMB(0x980e4156201301)), + P(433,CNST_LIMB(0x68a58af00975a751),CNST_LIMB(0x975a750ff68a58)), + P(439,CNST_LIMB(0xd56e36d0c3efac07),CNST_LIMB(0x9548e4979e0829)), + P(443,CNST_LIMB(0xd8b44c47a8299b73),CNST_LIMB(0x93efd1c50e726b)), + P(449,CNST_LIMB(0x2d9ccaf9ba70e41),CNST_LIMB(0x91f5bcb8bb02d9)), + P(457,CNST_LIMB(0x985e1c023d9e879),CNST_LIMB(0x8f67a1e3fdc261)), + P(461,CNST_LIMB(0x2a343316c494d305),CNST_LIMB(0x8e2917e0e702c6)), + P(463,CNST_LIMB(0x70cb7916ab67652f),CNST_LIMB(0x8d8be33f95d715)), + P(467,CNST_LIMB(0xd398f132fb10fe5b),CNST_LIMB(0x8c55841c815ed5)), + P(479,CNST_LIMB(0x6f2a38a6bf54fa1f),CNST_LIMB(0x88d180cd3a4133)), + P(487,CNST_LIMB(0x211df689b98f81d7),CNST_LIMB(0x869222b1acf1ce)), + P(491,CNST_LIMB(0xe994983e90f1ec3),CNST_LIMB(0x85797b917765ab)), + P(499,CNST_LIMB(0xad671e44bed87f3b),CNST_LIMB(0x8355ace3c897db)), + P(503,CNST_LIMB(0xf9623a0516e70fc7),CNST_LIMB(0x824a4e60b3262b)), + P(509,CNST_LIMB(0x4b7129be9dece355),CNST_LIMB(0x80c121b28bd1ba)), + P(521,CNST_LIMB(0x190f3b7473f62c39),CNST_LIMB(0x7dc9f3397d4c29)), + P(523,CNST_LIMB(0x63dacc9aad46f9a3),CNST_LIMB(0x7d4ece8fe88139)), + P(541,CNST_LIMB(0xc1108fda24e8d035),CNST_LIMB(0x79237d65bcce50)), + P(547,CNST_LIMB(0xb77578472319bd8b),CNST_LIMB(0x77cf53c5f7936c)), + P(557,CNST_LIMB(0x473d20a1c7ed9da5),CNST_LIMB(0x75a8accfbdd11e)), + P(563,CNST_LIMB(0xfbe85af0fea2c8fb),CNST_LIMB(0x7467ac557c228e)), + P(569,CNST_LIMB(0x58a1f7e6ce0f4c09),CNST_LIMB(0x732d70ed8db8e9)), + P(571,CNST_LIMB(0x1a00e58c544986f3),CNST_LIMB(0x72c62a24c3797f)), + P(577,CNST_LIMB(0x7194a17f55a10dc1),CNST_LIMB(0x7194a17f55a10d)), + P(587,CNST_LIMB(0x7084944785e33763),CNST_LIMB(0x6fa549b41da7e7)), + P(593,CNST_LIMB(0xba10679bd84886b1),CNST_LIMB(0x6e8419e6f61221)), + P(599,CNST_LIMB(0xebe9c6bb31260967),CNST_LIMB(0x6d68b5356c207b)), + P(601,CNST_LIMB(0x97a3fe4bd1ff25e9),CNST_LIMB(0x6d0b803685c01b)), + P(607,CNST_LIMB(0x6c6388395b84d99f),CNST_LIMB(0x6bf790a8b2d207)), + P(613,CNST_LIMB(0x8c51da6a1335df6d),CNST_LIMB(0x6ae907ef4b96c2)), + P(617,CNST_LIMB(0x46f3234475d5add9),CNST_LIMB(0x6a37991a23aead)), + P(619,CNST_LIMB(0x905605ca3c619a43),CNST_LIMB(0x69dfbdd4295b66)), + P(631,CNST_LIMB(0xcee8dff304767747),CNST_LIMB(0x67dc4c45c8033e)), + P(641,CNST_LIMB(0xff99c27f00663d81),CNST_LIMB(0x663d80ff99c27f)), + P(643,CNST_LIMB(0xacca407f671ddc2b),CNST_LIMB(0x65ec17e3559948)), + P(647,CNST_LIMB(0xe71298bac1e12337),CNST_LIMB(0x654ac835cfba5c)), + P(653,CNST_LIMB(0xfa1e94309cd09045),CNST_LIMB(0x645c854ae10772)), + P(659,CNST_LIMB(0xbebccb8e91496b9b),CNST_LIMB(0x6372990e5f901f)), + P(661,CNST_LIMB(0x312fa30cc7d7b8bd),CNST_LIMB(0x6325913c07beef)), + P(673,CNST_LIMB(0x6160ff9e9f006161),CNST_LIMB(0x6160ff9e9f0061)), + P(677,CNST_LIMB(0x6b03673b5e28152d),CNST_LIMB(0x60cdb520e5e88e)), + P(683,CNST_LIMB(0xfe802ffa00bfe803),CNST_LIMB(0x5ff4017fd005ff)), + P(691,CNST_LIMB(0xe66fe25c9e907c7b),CNST_LIMB(0x5ed79e31a4dccd)), + P(701,CNST_LIMB(0x3f8b236c76528895),CNST_LIMB(0x5d7d42d48ac5ef)), + P(709,CNST_LIMB(0xf6f923bf01ce2c0d),CNST_LIMB(0x5c6f35ccba5028)), + P(719,CNST_LIMB(0x6c3d3d98bed7c42f),CNST_LIMB(0x5b2618ec6ad0a5)), + P(727,CNST_LIMB(0x30981efcd4b010e7),CNST_LIMB(0x5a2553748e42e7)), + P(733,CNST_LIMB(0x6f691fc81ebbe575),CNST_LIMB(0x59686cf744cd5b)), + P(739,CNST_LIMB(0xb10480ddb47b52cb),CNST_LIMB(0x58ae97bab79976)), + P(743,CNST_LIMB(0x74cd59ed64f3f0d7),CNST_LIMB(0x58345f1876865f)), + P(751,CNST_LIMB(0x105cb81316d6c0f),CNST_LIMB(0x5743d5bb24795a)), + P(757,CNST_LIMB(0x9be64c6d91c1195d),CNST_LIMB(0x5692c4d1ab74ab)), + P(761,CNST_LIMB(0x71b3f945a27b1f49),CNST_LIMB(0x561e46a4d5f337)), + P(769,CNST_LIMB(0x77d80d50e508fd01),CNST_LIMB(0x5538ed06533997)), + P(773,CNST_LIMB(0xa5eb778e133551cd),CNST_LIMB(0x54c807f2c0bec2)), + P(787,CNST_LIMB(0x18657d3c2d8a3f1b),CNST_LIMB(0x5345efbc572d36)), + P(797,CNST_LIMB(0x2e40e220c34ad735),CNST_LIMB(0x523a758f941345)), + P(809,CNST_LIMB(0xa76593c70a714919),CNST_LIMB(0x5102370f816c89)), + P(811,CNST_LIMB(0x1eef452124eea383),CNST_LIMB(0x50cf129fb94acf)), + P(821,CNST_LIMB(0x38206dc242ba771d),CNST_LIMB(0x4fd31941cafdd1)), + P(823,CNST_LIMB(0x4cd4c35807772287),CNST_LIMB(0x4fa1704aa75945)), + P(827,CNST_LIMB(0x83de917d5e69ddf3),CNST_LIMB(0x4f3ed6d45a63ad)), + P(829,CNST_LIMB(0x882ef0403b4a6c15),CNST_LIMB(0x4f0de57154ebed)), + P(839,CNST_LIMB(0xf8fb6c51c606b677),CNST_LIMB(0x4e1cae8815f811)), + P(853,CNST_LIMB(0xb4abaac446d3e1fd),CNST_LIMB(0x4cd47ba5f6ff19)), + P(857,CNST_LIMB(0xa9f83bbe484a14e9),CNST_LIMB(0x4c78ae734df709)), + P(859,CNST_LIMB(0xbebbc0d1ce874d3),CNST_LIMB(0x4c4b19ed85cfb8)), + P(863,CNST_LIMB(0xbd418eaf0473189f),CNST_LIMB(0x4bf093221d1218)), + P(877,CNST_LIMB(0x44e3af6f372b7e65),CNST_LIMB(0x4aba3c21dc633f)), + P(881,CNST_LIMB(0xc87fdace4f9e5d91),CNST_LIMB(0x4a6360c344de00)), + P(883,CNST_LIMB(0xec93479c446bd9bb),CNST_LIMB(0x4a383e9f74d68a)), + P(887,CNST_LIMB(0xdac4d592e777c647),CNST_LIMB(0x49e28fbabb9940)), + P(907,CNST_LIMB(0xa63ea8c8f61f0c23),CNST_LIMB(0x48417b57c78cd7)), + P(911,CNST_LIMB(0xe476062ea5cbbb6f),CNST_LIMB(0x47f043713f3a2b)), + P(919,CNST_LIMB(0xdf68761c69daac27),CNST_LIMB(0x474ff2a10281cf)), + P(929,CNST_LIMB(0xb813d737637aa061),CNST_LIMB(0x468b6f9a978f91)), + P(937,CNST_LIMB(0xa3a77aac1fb15099),CNST_LIMB(0x45f13f1caff2e2)), + P(941,CNST_LIMB(0x17f0c3e0712c5825),CNST_LIMB(0x45a5228cec23e9)), + P(947,CNST_LIMB(0xfd912a70ff30637b),CNST_LIMB(0x45342c556c66b9)), + P(953,CNST_LIMB(0xfbb3b5dc01131289),CNST_LIMB(0x44c4a23feeced7)), + P(967,CNST_LIMB(0x856d560a0f5acdf7),CNST_LIMB(0x43c5c20d3c9fe6)), + P(971,CNST_LIMB(0x96472f314d3f89e3),CNST_LIMB(0x437e494b239798)), + P(977,CNST_LIMB(0xa76f5c7ed2253531),CNST_LIMB(0x43142d118e47cb)), + P(983,CNST_LIMB(0x816eae7c7bf69fe7),CNST_LIMB(0x42ab5c73a13458)), + P(991,CNST_LIMB(0xb6a2bea4cfb1781f),CNST_LIMB(0x4221950db0f3db)), + P(997,CNST_LIMB(0xa3900c53318e81ed),CNST_LIMB(0x41bbb2f80a4553)), + P(1009,CNST_LIMB(0x60aa7f5d9f148d11),CNST_LIMB(0x40f391612c6680)), + P(1013,CNST_LIMB(0x6be8c0102c7a505d),CNST_LIMB(0x40b1e94173fefd)), + P(1019,CNST_LIMB(0x8ff3f0ed28728f33),CNST_LIMB(0x4050647d9d0445)), + P(1021,CNST_LIMB(0x680e0a87e5ec7155),CNST_LIMB(0x4030241b144f3b)), + P(1031,CNST_LIMB(0xbbf70fa49fe829b7),CNST_LIMB(0x3f90c2ab542cb1)), + P(1033,CNST_LIMB(0xd69d1e7b6a50ca39),CNST_LIMB(0x3f71412d59f597)), + P(1039,CNST_LIMB(0x1a1e0f46b6d26aef),CNST_LIMB(0x3f137701b98841)), + P(1049,CNST_LIMB(0x7429f9a7a8251829),CNST_LIMB(0x3e79886b60e278)), + P(1051,CNST_LIMB(0xd9c2219d1b863613),CNST_LIMB(0x3e5b1916a7181d)), + P(1061,CNST_LIMB(0x91406c1820d077ad),CNST_LIMB(0x3dc4a50968f524)), + P(1063,CNST_LIMB(0x521f4ec02e3d2b97),CNST_LIMB(0x3da6e4c9550321)), + P(1069,CNST_LIMB(0xbb8283b63dc8eba5),CNST_LIMB(0x3d4e4f06f1def3)), + P(1087,CNST_LIMB(0x431eda153229ebbf),CNST_LIMB(0x3c4a6bdd24f9a4)), + P(1091,CNST_LIMB(0xaf0bf78d7e01686b),CNST_LIMB(0x3c11d54b525c73)), + P(1093,CNST_LIMB(0xa9ced0742c086e8d),CNST_LIMB(0x3bf5b1c5721065)), + P(1097,CNST_LIMB(0xc26458ad9f632df9),CNST_LIMB(0x3bbdb9862f23b4)), + P(1103,CNST_LIMB(0xbbff1255dff892af),CNST_LIMB(0x3b6a8801db5440)), + P(1109,CNST_LIMB(0xcbd49a333f04d8fd),CNST_LIMB(0x3b183cf0fed886)), + P(1117,CNST_LIMB(0xec84ed6f9cfdeff5),CNST_LIMB(0x3aabe394bdc3f4)), + P(1123,CNST_LIMB(0x97980cc40bda9d4b),CNST_LIMB(0x3a5ba3e76156da)), + P(1129,CNST_LIMB(0x777f34d524f5cbd9),CNST_LIMB(0x3a0c3e953378db)), + P(1151,CNST_LIMB(0x2797051d94cbbb7f),CNST_LIMB(0x38f03561320b1e)), + P(1153,CNST_LIMB(0xea769051b4f43b81),CNST_LIMB(0x38d6ecaef5908a)), + P(1163,CNST_LIMB(0xce7910f3034d4323),CNST_LIMB(0x3859cf221e6069)), + P(1171,CNST_LIMB(0x92791d1374f5b99b),CNST_LIMB(0x37f7415dc9588a)), + P(1181,CNST_LIMB(0x89a5645cc68ea1b5),CNST_LIMB(0x377df0d3902626)), + P(1187,CNST_LIMB(0x5f8aacf796c0cf0b),CNST_LIMB(0x373622136907fa)), + P(1193,CNST_LIMB(0xf2e90a15e33edf99),CNST_LIMB(0x36ef0c3b39b92f)), + P(1201,CNST_LIMB(0x8e99e5feb897c451),CNST_LIMB(0x36915f47d55e6d)), + P(1213,CNST_LIMB(0xaca2eda38fb91695),CNST_LIMB(0x36072cf3f866fd)), + P(1217,CNST_LIMB(0x5d9b737be5ea8b41),CNST_LIMB(0x35d9b737be5ea8)), + P(1223,CNST_LIMB(0x4aefe1db93fd7cf7),CNST_LIMB(0x35961559cc81c7)), + P(1229,CNST_LIMB(0xa0994ef20b3f8805),CNST_LIMB(0x35531c897a4592)), + P(1231,CNST_LIMB(0x103890bda912822f),CNST_LIMB(0x353ceebd3e98a4)), + P(1237,CNST_LIMB(0xb441659d13a9147d),CNST_LIMB(0x34fad381585e5e)), + P(1249,CNST_LIMB(0x1e2134440c4c3f21),CNST_LIMB(0x347884d1103130)), + P(1259,CNST_LIMB(0x263a27727a6883c3),CNST_LIMB(0x340dd3ac39bf56)), + P(1277,CNST_LIMB(0x78e221472ab33855),CNST_LIMB(0x3351fdfecc140c)), + P(1279,CNST_LIMB(0x95eac88e82e6faff),CNST_LIMB(0x333d72b089b524)), + P(1283,CNST_LIMB(0xf66c258317be8dab),CNST_LIMB(0x33148d44d6b261)), + P(1289,CNST_LIMB(0x9ee202c7cb91939),CNST_LIMB(0x32d7aef8412458)), + P(1291,CNST_LIMB(0x8d2fca1042a09ea3),CNST_LIMB(0x32c3850e79c0f1)), + P(1297,CNST_LIMB(0x82779c856d8b8bf1),CNST_LIMB(0x328766d59048a2)), + P(1301,CNST_LIMB(0x3879361cba8a223d),CNST_LIMB(0x325fa18cb11833)), + P(1303,CNST_LIMB(0xf23f43639c3182a7),CNST_LIMB(0x324bd659327e22)), + P(1307,CNST_LIMB(0xa03868fc474bcd13),CNST_LIMB(0x32246e784360f4)), + P(1319,CNST_LIMB(0x651e78b8c5311a97),CNST_LIMB(0x31afa5f1a33a08)), + P(1321,CNST_LIMB(0x8ffce639c00c6719),CNST_LIMB(0x319c63ff398e70)), + P(1327,CNST_LIMB(0xf7b460754b0b61cf),CNST_LIMB(0x3162f7519a86a7)), + P(1361,CNST_LIMB(0x7b03f3359b8e63b1),CNST_LIMB(0x30271fc9d3fc3c)), + P(1367,CNST_LIMB(0xa55c5326041eb667),CNST_LIMB(0x2ff104ae89750b)), + P(1373,CNST_LIMB(0x647f88ab896a76f5),CNST_LIMB(0x2fbb62a236d133)), + P(1381,CNST_LIMB(0x8fd971434a55a46d),CNST_LIMB(0x2f74997d2070b4)), + P(1399,CNST_LIMB(0x9fbf969958046447),CNST_LIMB(0x2ed84aa8b6fce3)), + P(1409,CNST_LIMB(0x9986feba69be3a81),CNST_LIMB(0x2e832df7a46dbd)), + P(1423,CNST_LIMB(0xa668b3e6d053796f),CNST_LIMB(0x2e0e0846857cab)), + P(1427,CNST_LIMB(0x97694e6589f4e09b),CNST_LIMB(0x2decfbdfb55ee6)), + P(1429,CNST_LIMB(0x37890c00b7721dbd),CNST_LIMB(0x2ddc876f3ff488)), + P(1433,CNST_LIMB(0x5ac094a235f37ea9),CNST_LIMB(0x2dbbc1d4c482c4)), + P(1439,CNST_LIMB(0x31cff775f2d5d65f),CNST_LIMB(0x2d8af0e0de0556)), + P(1447,CNST_LIMB(0xddad8e6b36505217),CNST_LIMB(0x2d4a7b7d14b30a)), + P(1451,CNST_LIMB(0x5a27df897062cd03),CNST_LIMB(0x2d2a85073bcf4e)), + P(1453,CNST_LIMB(0xe2396fe0fdb5a625),CNST_LIMB(0x2d1a9ab13e8be4)), + P(1459,CNST_LIMB(0xb352a4957e82317b),CNST_LIMB(0x2ceb1eb4b9fd8b)), + P(1471,CNST_LIMB(0xd8ab3f2c60c2ea3f),CNST_LIMB(0x2c8d503a79794c)), + P(1481,CNST_LIMB(0x6893f702f0452479),CNST_LIMB(0x2c404d708784ed)), + P(1483,CNST_LIMB(0x9686fdc182acf7e3),CNST_LIMB(0x2c31066315ec52)), + P(1487,CNST_LIMB(0x6854037173dce12f),CNST_LIMB(0x2c1297d80f2664)), + P(1489,CNST_LIMB(0x7f0ded1685c27331),CNST_LIMB(0x2c037044c55f6b)), + P(1493,CNST_LIMB(0xeeda72e1fe490b7d),CNST_LIMB(0x2be5404cd13086)), + P(1499,CNST_LIMB(0x9e7bfc959a8e6e53),CNST_LIMB(0x2bb845adaf0cce)), + P(1511,CNST_LIMB(0x49b314d6d4753dd7),CNST_LIMB(0x2b5f62c639f16d)), + P(1523,CNST_LIMB(0x2e8f8c5ac4aa1b3b),CNST_LIMB(0x2b07e6734f2b88)), + P(1531,CNST_LIMB(0xb8ef723481163d33),CNST_LIMB(0x2ace569d8342b7)), + P(1543,CNST_LIMB(0x6a2ec96a594287b7),CNST_LIMB(0x2a791d5dbd4dcf)), + P(1549,CNST_LIMB(0xdba41c6d13aab8c5),CNST_LIMB(0x2a4eff8113017c)), + P(1553,CNST_LIMB(0xc2adbe648dc3aaf1),CNST_LIMB(0x2a3319e156df32)), + P(1559,CNST_LIMB(0x87a2bade565f91a7),CNST_LIMB(0x2a0986286526ea)), + P(1567,CNST_LIMB(0x4d6fe8798c01f5df),CNST_LIMB(0x29d29551d91e39)), + P(1571,CNST_LIMB(0x3791310c8c23d98b),CNST_LIMB(0x29b7529e109f0a)), + P(1579,CNST_LIMB(0xf80e446b01228883),CNST_LIMB(0x298137491ea465)), + P(1583,CNST_LIMB(0x9aed1436fbf500cf),CNST_LIMB(0x29665e1eb9f9da)), + P(1597,CNST_LIMB(0x7839b54cc8b24115),CNST_LIMB(0x2909752e019a5e)), + P(1601,CNST_LIMB(0xc128c646ad0309c1),CNST_LIMB(0x28ef35e2e5efb0)), + P(1607,CNST_LIMB(0x14de631624a3c377),CNST_LIMB(0x28c815aa4b8278)), + P(1609,CNST_LIMB(0x3f7b9fe68b0ecbf9),CNST_LIMB(0x28bb1b867199da)), + P(1613,CNST_LIMB(0x284ffd75ec00a285),CNST_LIMB(0x28a13ff5d7b002)), + P(1619,CNST_LIMB(0x37803cb80dea2ddb),CNST_LIMB(0x287ab3f173e755)), + P(1621,CNST_LIMB(0x86b63f7c9ac4c6fd),CNST_LIMB(0x286dead67713bd)), + P(1627,CNST_LIMB(0x8b6851d1bd99b9d3),CNST_LIMB(0x2847bfcda6503e)), + P(1637,CNST_LIMB(0xb62fda77ca343b6d),CNST_LIMB(0x2808c1ea6b4777)), + P(1657,CNST_LIMB(0x1f0dc009e34383c9),CNST_LIMB(0x278d0e0f23ff61)), + P(1663,CNST_LIMB(0x496dc21ddd35b97f),CNST_LIMB(0x2768863c093c7f)), + P(1667,CNST_LIMB(0xb0e96ce17090f82b),CNST_LIMB(0x27505115a73ca8)), + P(1669,CNST_LIMB(0xaadf05acdd7d024d),CNST_LIMB(0x274441a61dc1b9)), + P(1693,CNST_LIMB(0xcb138196746eafb5),CNST_LIMB(0x26b5c166113cf0)), + P(1697,CNST_LIMB(0x347f523736755d61),CNST_LIMB(0x269e65ad07b18e)), + P(1699,CNST_LIMB(0xd14a48a051f7dd0b),CNST_LIMB(0x2692c25f877560)), + P(1709,CNST_LIMB(0x474d71b1ce914d25),CNST_LIMB(0x2658fa7523cd11)), + P(1721,CNST_LIMB(0x386063f5e28c1f89),CNST_LIMB(0x26148710cf0f9e)), + P(1723,CNST_LIMB(0x1db7325e32d04e73),CNST_LIMB(0x2609363b22524f)), + P(1733,CNST_LIMB(0xfef748d3893b880d),CNST_LIMB(0x25d1065a1c1122)), + P(1741,CNST_LIMB(0x2f3351506e935605),CNST_LIMB(0x25a48a382b863f)), + P(1747,CNST_LIMB(0x7a3637fa2376415b),CNST_LIMB(0x25837190eccdbc)), + P(1753,CNST_LIMB(0x4ac525d2baa21969),CNST_LIMB(0x256292e95d510c)), + P(1759,CNST_LIMB(0x3a11c16b42cd351f),CNST_LIMB(0x2541eda98d068c)), + P(1777,CNST_LIMB(0x6c7abde0049c2a11),CNST_LIMB(0x24e15087fed8f5)), + P(1783,CNST_LIMB(0x54dad0303e069ac7),CNST_LIMB(0x24c18b20979e5d)), + P(1787,CNST_LIMB(0xebf1ac9fdfe91433),CNST_LIMB(0x24ac7b336de0c5)), + P(1789,CNST_LIMB(0xfafdda8237cec655),CNST_LIMB(0x24a1fc478c60bb)), + P(1801,CNST_LIMB(0xdce3ff6e71ffb739),CNST_LIMB(0x2463801231c009)), + P(1811,CNST_LIMB(0xbed5737d6286db1b),CNST_LIMB(0x24300fd506ed33)), + P(1823,CNST_LIMB(0xe479e431fe08b4df),CNST_LIMB(0x23f314a494da81)), + P(1831,CNST_LIMB(0x9dd9b0dd7742f897),CNST_LIMB(0x23cadedd2fad3a)), + P(1847,CNST_LIMB(0x8f09d7402c5a5e87),CNST_LIMB(0x237b7ed2664a03)), + P(1861,CNST_LIMB(0x9216d5c4d958738d),CNST_LIMB(0x23372967dbaf1d)), + P(1867,CNST_LIMB(0xb3139ba11d34ca63),CNST_LIMB(0x231a308a371f20)), + P(1871,CNST_LIMB(0x47d54f7ed644afaf),CNST_LIMB(0x2306fa63e1e600)), + P(1873,CNST_LIMB(0x92a81d85cf11a1b1),CNST_LIMB(0x22fd6731575684)), + P(1877,CNST_LIMB(0x754b26533253bdfd),CNST_LIMB(0x22ea507805749c)), + P(1879,CNST_LIMB(0xbbe0efc980bfd467),CNST_LIMB(0x22e0cce8b3d720)), + P(1889,CNST_LIMB(0xc0d8d594f024dca1),CNST_LIMB(0x22b1887857d161)), + P(1901,CNST_LIMB(0x8238d43bcaac1a65),CNST_LIMB(0x227977fcc49cc0)), + P(1907,CNST_LIMB(0x27779c1fae6175bb),CNST_LIMB(0x225db37b5e5f4f)), + P(1913,CNST_LIMB(0xa746ca9af708b2c9),CNST_LIMB(0x22421b91322ed6)), + P(1931,CNST_LIMB(0x93f3cd9f389be823),CNST_LIMB(0x21f05b35f52102)), + P(1933,CNST_LIMB(0x5cb4a4c04c489345),CNST_LIMB(0x21e75de5c70d60)), + P(1949,CNST_LIMB(0xbf6047743e85b6b5),CNST_LIMB(0x21a01d6c19be96)), + P(1951,CNST_LIMB(0x61c147831563545f),CNST_LIMB(0x21974a6615c81a)), + P(1973,CNST_LIMB(0xedb47c0ae62dee9d),CNST_LIMB(0x213767697cf36a)), + P(1979,CNST_LIMB(0xa3824386673a573),CNST_LIMB(0x211d9f7fad35f1)), + P(1987,CNST_LIMB(0xa4a77d19e575a0eb),CNST_LIMB(0x20fb7d9dd36c18)), + P(1993,CNST_LIMB(0xa2bee045e066c279),CNST_LIMB(0x20e2123d661e0e)), + P(1997,CNST_LIMB(0xc23618de8ab43d05),CNST_LIMB(0x20d135b66ae990)), + P(1999,CNST_LIMB(0x266b515216cb9f2f),CNST_LIMB(0x20c8cded4d7a8e)), + P(2003,CNST_LIMB(0xe279edd9e9c2e85b),CNST_LIMB(0x20b80b3f43ddbf)), + P(2011,CNST_LIMB(0xd0c591c221dc9c53),CNST_LIMB(0x2096b9180f46a6)), + P(2017,CNST_LIMB(0x6da8ee9c9ee7c21),CNST_LIMB(0x207de7e28de5da)), + P(2027,CNST_LIMB(0x9dfebcaf4c27e8c3),CNST_LIMB(0x2054dec8cf1fb3)), + P(2029,CNST_LIMB(0x49aeff9f19dd6de5),CNST_LIMB(0x204cb630b3aab5)), + P(2039,CNST_LIMB(0x86976a57a296e9c7),CNST_LIMB(0x202428adc37beb)), + P(2053,CNST_LIMB(0xa3b9abf4872b84cd),CNST_LIMB(0x1fec0c7834def4)), + P(2063,CNST_LIMB(0x34fca6483895e6ef),CNST_LIMB(0x1fc46fae98a1d0)), + P(2069,CNST_LIMB(0x34b5a333988f873d),CNST_LIMB(0x1facda430ff619)), + P(2081,CNST_LIMB(0xd9dd4f19b5f17be1),CNST_LIMB(0x1f7e17dd8e15e5)), + P(2083,CNST_LIMB(0xb935b507fd0ce78b),CNST_LIMB(0x1f765a3556a4ee)), + P(2087,CNST_LIMB(0xb450f5540660e797),CNST_LIMB(0x1f66ea49d802f1)), + P(2089,CNST_LIMB(0x63ff82831ffc1419),CNST_LIMB(0x1f5f3800faf9c0)), + P(2099,CNST_LIMB(0x8992f718c22a32fb),CNST_LIMB(0x1f38f4e6c0f1f9)), + P(2111,CNST_LIMB(0x5f3253ad0d37e7bf),CNST_LIMB(0x1f0b8546752578)), + P(2113,CNST_LIMB(0x7c0ffe0fc007c1),CNST_LIMB(0x1f03ff83f001f0)), + P(2129,CNST_LIMB(0x4d8ebadc0c0640b1),CNST_LIMB(0x1ec853b0a3883c)), + P(2131,CNST_LIMB(0xe2729af831037bdb),CNST_LIMB(0x1ec0ee573723eb)), + P(2137,CNST_LIMB(0xb8f64bf30feebfe9),CNST_LIMB(0x1eaad38e6f6894)), + P(2141,CNST_LIMB(0xda93124b544c0bf5),CNST_LIMB(0x1e9c28a765fe53)), + P(2143,CNST_LIMB(0x9cf7ff0b593c539f),CNST_LIMB(0x1e94d8758c2003)), + P(2153,CNST_LIMB(0xd6bd8861fa0e07d9),CNST_LIMB(0x1e707ba8f65e68)), + P(2161,CNST_LIMB(0x5cfe75c0bd8ab891),CNST_LIMB(0x1e53a2a68f574e)), + P(2179,CNST_LIMB(0x43e808757c2e862b),CNST_LIMB(0x1e1380a56b438d)), + P(2203,CNST_LIMB(0x90caa96d595c9d93),CNST_LIMB(0x1dbf9f513a3802)), + P(2207,CNST_LIMB(0x8fd550625d07135f),CNST_LIMB(0x1db1d1d58bc600)), + P(2213,CNST_LIMB(0x76b010a86e209f2d),CNST_LIMB(0x1d9d358f53de38)), + P(2221,CNST_LIMB(0xecc0426447769b25),CNST_LIMB(0x1d81e6df6165c7)), + P(2237,CNST_LIMB(0xe381339caabe3295),CNST_LIMB(0x1d4bdf7fd40e30)), + P(2239,CNST_LIMB(0xd1b190a2d0c7673f),CNST_LIMB(0x1d452c7a1c958d)), + P(2243,CNST_LIMB(0xc3bce3cf26b0e7eb),CNST_LIMB(0x1d37cf9b902659)), + P(2251,CNST_LIMB(0x5f87e76f56c61ce3),CNST_LIMB(0x1d1d3a5791e97b)), + P(2267,CNST_LIMB(0xc06c6857a124b353),CNST_LIMB(0x1ce89fe6b47416)), + P(2269,CNST_LIMB(0x38c040fcba630f75),CNST_LIMB(0x1ce219f3235071)), + P(2273,CNST_LIMB(0xd078bc4fbd533b21),CNST_LIMB(0x1cd516dcf92139)), + P(2281,CNST_LIMB(0xde8e15c5dd354f59),CNST_LIMB(0x1cbb33bd1c2b8b)), + P(2287,CNST_LIMB(0xca61d53d7414260f),CNST_LIMB(0x1ca7e7d2546688)), + P(2293,CNST_LIMB(0xb56bf5ba8eae635d),CNST_LIMB(0x1c94b5c1b3dbd3)), + P(2297,CNST_LIMB(0x44a72cb0fb6e3949),CNST_LIMB(0x1c87f7f9c241c1)), + P(2309,CNST_LIMB(0x879839a714f45bcd),CNST_LIMB(0x1c6202706c35a9)), + P(2311,CNST_LIMB(0x2a8994fde5314b7),CNST_LIMB(0x1c5bb8a9437632)), + P(2333,CNST_LIMB(0xb971920cf2b90135),CNST_LIMB(0x1c174343b4111e)), + P(2339,CNST_LIMB(0x8a8fd0b7df9a6e8b),CNST_LIMB(0x1c04d0d3e46b42)), + P(2341,CNST_LIMB(0xb31f9a84c1c6eaad),CNST_LIMB(0x1bfeb00fbf4308)), + P(2347,CNST_LIMB(0x92293b02823c6d83),CNST_LIMB(0x1bec5dce0b202d)), + P(2351,CNST_LIMB(0xeee77ff20fe5ddcf),CNST_LIMB(0x1be03444620037)), + P(2357,CNST_LIMB(0xe1ea0f6c496c11d),CNST_LIMB(0x1bce09c66f6fc3)), + P(2371,CNST_LIMB(0xfdf2d3d6f88ccb6b),CNST_LIMB(0x1ba40228d02b30)), + P(2377,CNST_LIMB(0xfa9d74a3457738f9),CNST_LIMB(0x1b9225b1cf8919)), + P(2381,CNST_LIMB(0xefc3ca3db71a5785),CNST_LIMB(0x1b864a2ff3f53f)), + P(2383,CNST_LIMB(0x8e2071718d0d6daf),CNST_LIMB(0x1b80604150e49b)), + P(2389,CNST_LIMB(0xbc0fdbfeb6cfabfd),CNST_LIMB(0x1b6eb1aaeaacf3)), + P(2393,CNST_LIMB(0x1eeab613e5e5aee9),CNST_LIMB(0x1b62f48da3c8cc)), + P(2399,CNST_LIMB(0x2d2388e90e9e929f),CNST_LIMB(0x1b516babe96092)), + P(2411,CNST_LIMB(0x81dbafba588ddb43),CNST_LIMB(0x1b2e9cef1e0c87)), + P(2417,CNST_LIMB(0x52eebc51c4799791),CNST_LIMB(0x1b1d56bedc849b)), + P(2423,CNST_LIMB(0x1c6bc4693b45a047),CNST_LIMB(0x1b0c267546aec0)), + P(2437,CNST_LIMB(0x6eee0974498874d),CNST_LIMB(0x1ae45f62024fa0)), + P(2441,CNST_LIMB(0xd85b7377a9953cb9),CNST_LIMB(0x1ad917631b5f54)), + P(2447,CNST_LIMB(0x4b6df412d4caf56f),CNST_LIMB(0x1ac83d18cb608f)), + P(2459,CNST_LIMB(0x6b8afbbb4a053493),CNST_LIMB(0x1aa6c7ad8c063f)), + P(2467,CNST_LIMB(0xcc5299c96ac7720b),CNST_LIMB(0x1a90a7b1228e2a)), + P(2473,CNST_LIMB(0xadce84b5c710aa99),CNST_LIMB(0x1a8027c03ba059)), + P(2477,CNST_LIMB(0x9d673f5aa3804225),CNST_LIMB(0x1a7533289deb89)), + P(2503,CNST_LIMB(0xe6541268efbce7f7),CNST_LIMB(0x1a2ed7ce16b49f)), + P(2521,CNST_LIMB(0xfcf41e76cf5be669),CNST_LIMB(0x19fefc0a279a73)), + P(2531,CNST_LIMB(0x5c3eb5dc31c383cb),CNST_LIMB(0x19e4b0cd873b5f)), + P(2539,CNST_LIMB(0x301832d11d8ad6c3),CNST_LIMB(0x19cfcdfd60e514)), + P(2543,CNST_LIMB(0x2e9c0942f1ce450f),CNST_LIMB(0x19c56932d66c85)), + P(2549,CNST_LIMB(0x97f3f2be37a39a5d),CNST_LIMB(0x19b5e1ab6fc7c2)), + P(2551,CNST_LIMB(0xe8b7d8a9654187c7),CNST_LIMB(0x19b0b8a62f2a73)), + P(2557,CNST_LIMB(0xb5d024d7da5b1b55),CNST_LIMB(0x19a149fc98942c)), + P(2579,CNST_LIMB(0xb8ba9d6e7ae3501b),CNST_LIMB(0x1969517ec25b85)), + P(2591,CNST_LIMB(0xf50865f71b90f1df),CNST_LIMB(0x194b3083360ba8)), + P(2593,CNST_LIMB(0x739c1682847df9e1),CNST_LIMB(0x194631f4bebdc1)), + P(2609,CNST_LIMB(0xc470a4d842b90ed1),CNST_LIMB(0x191e84127268fd)), + P(2617,CNST_LIMB(0x1fb1be11698cc409),CNST_LIMB(0x190adbb543984f)), + P(2621,CNST_LIMB(0xd8d5512a7cd35d15),CNST_LIMB(0x1901130bd18200)), + P(2633,CNST_LIMB(0xa5496821723e07f9),CNST_LIMB(0x18e3e6b889ac94)), + P(2647,CNST_LIMB(0xbcc8c6d7abaa8167),CNST_LIMB(0x18c233420e1ec1)), + P(2657,CNST_LIMB(0x52c396c95eb619a1),CNST_LIMB(0x18aa5872d92bd6)), + P(2659,CNST_LIMB(0x6eb7e380878ec74b),CNST_LIMB(0x18a5989945ccf9)), + P(2663,CNST_LIMB(0x3d5513b504537157),CNST_LIMB(0x189c1e60b57f60)), + P(2671,CNST_LIMB(0x314391f8862e948f),CNST_LIMB(0x18893fbc8690b9)), + P(2677,CNST_LIMB(0xdc0b17cfcd81f5dd),CNST_LIMB(0x187b2bb3e1041c)), + P(2683,CNST_LIMB(0x2f6bea3ec89044b3),CNST_LIMB(0x186d27c9cdcfb8)), + P(2687,CNST_LIMB(0xce13a05869f1b57f),CNST_LIMB(0x1863d8bf4f2c1c)), + P(2689,CNST_LIMB(0x7593474e8ace3581),CNST_LIMB(0x185f33e2ad7593)), + P(2693,CNST_LIMB(0x7fc329295a05e4d),CNST_LIMB(0x1855ef75973e13)), + P(2699,CNST_LIMB(0xb05377cba4908d23),CNST_LIMB(0x1848160153f134)), + P(2707,CNST_LIMB(0xe7b2131a628aa39b),CNST_LIMB(0x1835b72e6f0656)), + P(2711,CNST_LIMB(0x9031dbed7de01527),CNST_LIMB(0x182c922d83eb39)), + P(2713,CNST_LIMB(0x76844b1c670aa9a9),CNST_LIMB(0x18280243c0365a)), + P(2719,CNST_LIMB(0x6a03f4533b08915f),CNST_LIMB(0x181a5cd5898e73)), + P(2729,CNST_LIMB(0x1dbca579db0a3999),CNST_LIMB(0x1803c0961773aa)), + P(2731,CNST_LIMB(0x2ffe800bffa003),CNST_LIMB(0x17ff4005ffd001)), + P(2741,CNST_LIMB(0x478ab1a3e936139d),CNST_LIMB(0x17e8d670433edb)), + P(2749,CNST_LIMB(0x66e722bc4c5cc095),CNST_LIMB(0x17d7066cf4bb5d)), + P(2753,CNST_LIMB(0x7a8f63c717278541),CNST_LIMB(0x17ce285b806b1f)), + P(2767,CNST_LIMB(0xdf6eee24d292bc2f),CNST_LIMB(0x17af52cdf27e02)), + P(2777,CNST_LIMB(0x9fc20d17237dd569),CNST_LIMB(0x17997d47d01039)), + P(2789,CNST_LIMB(0xcdf9932356bda2ed),CNST_LIMB(0x177f7ec2c6d0ba)), + P(2791,CNST_LIMB(0x97b5e332e80f68d7),CNST_LIMB(0x177b2f3cd00756)), + P(2797,CNST_LIMB(0x46eee26fd875e2e5),CNST_LIMB(0x176e4a22f692a0)), + P(2801,CNST_LIMB(0x3548a8e65157a611),CNST_LIMB(0x1765b94271e11b)), + P(2803,CNST_LIMB(0xc288d03be9b71e3b),CNST_LIMB(0x1761732b044ae4)), + P(2819,CNST_LIMB(0x8151186db38937ab),CNST_LIMB(0x173f7a5300a2bc)), + P(2833,CNST_LIMB(0x7800b910895a45f1),CNST_LIMB(0x1722112b48be1f)), + P(2837,CNST_LIMB(0xaee0b024182eec3d),CNST_LIMB(0x1719b7a16eb843)), + P(2843,CNST_LIMB(0x96323eda173b5713),CNST_LIMB(0x170d3c99cc5052)), + P(2851,CNST_LIMB(0xed0dbd03ae77c8b),CNST_LIMB(0x16fcad7aed3bb6)), + P(2857,CNST_LIMB(0xf73800b7828dc119),CNST_LIMB(0x16f051b8231ffd)), + P(2861,CNST_LIMB(0x1b61715ec22b7ca5),CNST_LIMB(0x16e81beae20643)), + P(2879,CNST_LIMB(0xa8533a991ead64bf),CNST_LIMB(0x16c3721584c1d8)), + P(2887,CNST_LIMB(0x7f6c7290e46c2e77),CNST_LIMB(0x16b34c2ba09663)), + P(2897,CNST_LIMB(0x6325e8d907b01db1),CNST_LIMB(0x169f3ce292ddcd)), + P(2903,CNST_LIMB(0x28909f70152a1067),CNST_LIMB(0x169344b2220a0d)), + P(2909,CNST_LIMB(0xea7077af0997a0f5),CNST_LIMB(0x1687592593c1b1)), + P(2917,CNST_LIMB(0x7e605cad10c32e6d),CNST_LIMB(0x167787f1418ec9)), + P(2927,CNST_LIMB(0x471b33570635b38f),CNST_LIMB(0x1663e190395ff2)), + P(2939,CNST_LIMB(0xab559fa997a61bb3),CNST_LIMB(0x164c7a4b6eb5b3)), + P(2953,CNST_LIMB(0xad4bdae562bddab9),CNST_LIMB(0x16316a061182fd)), + P(2957,CNST_LIMB(0x55e1b2f2ed62f45),CNST_LIMB(0x1629ba914584e4)), + P(2963,CNST_LIMB(0x3cd328b1a2dca9b),CNST_LIMB(0x161e3d57de21b2)), + P(2969,CNST_LIMB(0xd28f4e08733218a9),CNST_LIMB(0x1612cc01b977f0)), + P(2971,CNST_LIMB(0xb6800b077f186293),CNST_LIMB(0x160efe30c525ff)), + P(2999,CNST_LIMB(0x6fbd138c3fd9c207),CNST_LIMB(0x15da45249ec5de)), + P(3001,CNST_LIMB(0xb117ccd12ae88a89),CNST_LIMB(0x15d68ab4acff92)), + P(3011,CNST_LIMB(0x2f1a1a044046bceb),CNST_LIMB(0x15c3f989d1eb15)), + P(3019,CNST_LIMB(0x548aba0b060541e3),CNST_LIMB(0x15b535ad11b8f0)), + P(3023,CNST_LIMB(0xcf4e808cea111b2f),CNST_LIMB(0x15addb3f424ec1)), + P(3037,CNST_LIMB(0xdbec1b4fa855a475),CNST_LIMB(0x159445cb91be6b)), + P(3041,CNST_LIMB(0xe3f794eb600d7821),CNST_LIMB(0x158d0199771e63)), + P(3049,CNST_LIMB(0x34fae0d9a11f7c59),CNST_LIMB(0x157e87d9b69e04)), + P(3061,CNST_LIMB(0xf006b0ccbbac085d),CNST_LIMB(0x1568f58bc01ac3)), + P(3067,CNST_LIMB(0x3f45076dc3114733),CNST_LIMB(0x155e3c993fda9b)), + P(3079,CNST_LIMB(0xeef49bfa58a1a1b7),CNST_LIMB(0x1548eacc5e1e6e)), + P(3083,CNST_LIMB(0x12c4218bea691fa3),CNST_LIMB(0x1541d8f91ba6a7)), + P(3089,CNST_LIMB(0xbc7504e3bd5e64f1),CNST_LIMB(0x153747060cc340)), + P(3109,CNST_LIMB(0x4ee21c292bb92fad),CNST_LIMB(0x1514569f93f7c4)), + P(3119,CNST_LIMB(0x34338b7327a4bacf),CNST_LIMB(0x150309705d3d79)), + P(3121,CNST_LIMB(0x3fe5c0833d6fccd1),CNST_LIMB(0x14ff97020cf5bf)), + P(3137,CNST_LIMB(0xb1e70743535203c1),CNST_LIMB(0x14e42c114cf47e)), + P(3163,CNST_LIMB(0xefbb5dcdfb4e43d3),CNST_LIMB(0x14b835bdcb6447)), + P(3167,CNST_LIMB(0xca68467ca5394f9f),CNST_LIMB(0x14b182b53a9ab7)), + P(3169,CNST_LIMB(0x8c51c081408b97a1),CNST_LIMB(0x14ae2ad094a3d3)), + P(3181,CNST_LIMB(0x3275a899dfa5dd65),CNST_LIMB(0x149a320ea59f96)), + P(3187,CNST_LIMB(0x9e674cb62e1b78bb),CNST_LIMB(0x1490441de1a2fb)), + P(3191,CNST_LIMB(0xa37ff5bb2a998d47),CNST_LIMB(0x1489aacce57200)), + P(3203,CNST_LIMB(0x792a999db131a22b),CNST_LIMB(0x1475f82ad6ff99)), + P(3209,CNST_LIMB(0x1b48841bc30d29b9),CNST_LIMB(0x146c2cfe53204f)), + P(3217,CNST_LIMB(0xf06721d2011d3471),CNST_LIMB(0x145f2ca490d4a1)), + P(3221,CNST_LIMB(0x93fd2386dff85ebd),CNST_LIMB(0x1458b2aae0ec87)), + P(3229,CNST_LIMB(0x4ce72f54c07ed9b5),CNST_LIMB(0x144bcb0a3a3150)), + P(3251,CNST_LIMB(0xd6d0fd3e71dd827b),CNST_LIMB(0x1428a1e65441d4)), + P(3253,CNST_LIMB(0x856405fb1eed819d),CNST_LIMB(0x142575a6c210d7)), + P(3257,CNST_LIMB(0x8ea8aceb7c443989),CNST_LIMB(0x141f2025ba5c46)), + P(3259,CNST_LIMB(0x34a13026f62e5873),CNST_LIMB(0x141bf6e35420fd)), + P(3271,CNST_LIMB(0x1eea0208ec0af4f7),CNST_LIMB(0x1409141d1d313a)), + P(3299,CNST_LIMB(0x63679853cea598cb),CNST_LIMB(0x13dd8bc19c3513)), + P(3301,CNST_LIMB(0xc30b3ebd61f2d0ed),CNST_LIMB(0x13da76f714dc8f)), + P(3307,CNST_LIMB(0x7eb9037bc7f43bc3),CNST_LIMB(0x13d13e50f8f49e)), + P(3313,CNST_LIMB(0xa583e6f6ce016411),CNST_LIMB(0x13c80e37ca3819)), + P(3319,CNST_LIMB(0xf1938d895f1a74c7),CNST_LIMB(0x13bee69fa99ccf)), + P(3323,CNST_LIMB(0x80cf1491c1e81e33),CNST_LIMB(0x13b8d0ede55835)), + P(3329,CNST_LIMB(0x3c0f12886ba8f301),CNST_LIMB(0x13afb7680bb054)), + P(3331,CNST_LIMB(0xe4b786e0dfcc5ab),CNST_LIMB(0x13acb0c3841c96)), + P(3343,CNST_LIMB(0x672684c93f2d41ef),CNST_LIMB(0x139a9c5f434fde)), + P(3347,CNST_LIMB(0xe00757badb35c51b),CNST_LIMB(0x13949cf33a0d9d)), + P(3359,CNST_LIMB(0xd6d84afe66472edf),CNST_LIMB(0x1382b4a00c31b0)), + P(3361,CNST_LIMB(0xfbbc0eedcbbfb6e1),CNST_LIMB(0x137fbbc0eedcbb)), + P(3371,CNST_LIMB(0x250f43aa08a84983),CNST_LIMB(0x1370ecf047b069)), + P(3373,CNST_LIMB(0x4400e927b1acaa5),CNST_LIMB(0x136df9790e3155)), + P(3389,CNST_LIMB(0x56572be34b9d3215),CNST_LIMB(0x13567dd8defd5b)), + P(3391,CNST_LIMB(0x87964ef7781c62bf),CNST_LIMB(0x13539261fdbc34)), + P(3407,CNST_LIMB(0x29ed84051c06e9af),CNST_LIMB(0x133c564292d28a)), + P(3413,CNST_LIMB(0xb00acd11ed3f87fd),CNST_LIMB(0x1333ae178d6388)), + P(3433,CNST_LIMB(0x6307881744152d9),CNST_LIMB(0x13170ad00d1fd7)), + P(3449,CNST_LIMB(0x7a786459f5c1ccc9),CNST_LIMB(0x13005f01db0947)), + P(3457,CNST_LIMB(0x1308125d74563281),CNST_LIMB(0x12f51d40342210)), + P(3461,CNST_LIMB(0x395310a480b3e34d),CNST_LIMB(0x12ef815e4ed950)), + P(3463,CNST_LIMB(0x35985baa8b202837),CNST_LIMB(0x12ecb4abccd827)), + P(3467,CNST_LIMB(0x96304a6e052b3223),CNST_LIMB(0x12e71dc1d3d820)), + P(3469,CNST_LIMB(0xbd8265fc9af8fd45),CNST_LIMB(0x12e45389a16495)), + P(3491,CNST_LIMB(0x1b6d0b383ec58e0b),CNST_LIMB(0x12c5d9226476cc)), + P(3499,CNST_LIMB(0xc21a7c3b68b28503),CNST_LIMB(0x12badc391156fd)), + P(3511,CNST_LIMB(0x236fa180fbfd6007),CNST_LIMB(0x12aa78e412f522)), + P(3517,CNST_LIMB(0xc42accd440ed9595),CNST_LIMB(0x12a251f5f47fd1)), + P(3527,CNST_LIMB(0x7acf7128236ba3f7),CNST_LIMB(0x1294cb85c53534)), + P(3529,CNST_LIMB(0xf909367a987b9c79),CNST_LIMB(0x12921963beb65e)), + P(3533,CNST_LIMB(0xb64efb252bfba705),CNST_LIMB(0x128cb777c69ca8)), + P(3539,CNST_LIMB(0x980d4f5a7e4cd25b),CNST_LIMB(0x1284aa6cf07294)), + P(3541,CNST_LIMB(0xe1ecc4ef27b0c37d),CNST_LIMB(0x1281fcf6ac7f87)), + P(3547,CNST_LIMB(0x9111aebb81d72653),CNST_LIMB(0x1279f937367db9)), + P(3557,CNST_LIMB(0x8951f985cb2c67ed),CNST_LIMB(0x126cad0488be94)), + P(3559,CNST_LIMB(0xc439d4fc54e0b5d7),CNST_LIMB(0x126a06794646a2)), + P(3571,CNST_LIMB(0xe857bf31896d533b),CNST_LIMB(0x125a2f2bcd3e95)), + P(3581,CNST_LIMB(0xb614bb4cb5023755),CNST_LIMB(0x124d108389e6b1)), + P(3583,CNST_LIMB(0x938a89e5473bf1ff),CNST_LIMB(0x124a73083771ac)), + P(3593,CNST_LIMB(0xeac481aca34de039),CNST_LIMB(0x123d6acda0620a)), + P(3607,CNST_LIMB(0x14b961badf4809a7),CNST_LIMB(0x122b4b2917eafd)), + P(3613,CNST_LIMB(0x76784fecba352435),CNST_LIMB(0x122391bfce1e2f)), + P(3617,CNST_LIMB(0xefa689bb58aef5e1),CNST_LIMB(0x121e6f1ea579f2)), + P(3623,CNST_LIMB(0xb2b2c4db9c3a8197),CNST_LIMB(0x1216c09e471568)), + P(3631,CNST_LIMB(0x2503bc992279f8cf),CNST_LIMB(0x120c8cb9d93909)), + P(3637,CNST_LIMB(0xd2ab9aec5ca1541d),CNST_LIMB(0x1204ed58e64ef9)), + P(3643,CNST_LIMB(0x3e78ba1460f99af3),CNST_LIMB(0x11fd546578f00c)), + P(3659,CNST_LIMB(0xa01426572cfcb63),CNST_LIMB(0x11e9310b8b4c9c)), + P(3671,CNST_LIMB(0xbea857968f3cbd67),CNST_LIMB(0x11da3405db9911)), + P(3673,CNST_LIMB(0x78db213eefe659e9),CNST_LIMB(0x11d7b6f4eb055d)), + P(3677,CNST_LIMB(0x963e8541a74d35f5),CNST_LIMB(0x11d2bee748c145)), + P(3691,CNST_LIMB(0x9e22d152776f2e43),CNST_LIMB(0x11c1706ddce7a7)), + P(3697,CNST_LIMB(0x5d10d39d1e1f291),CNST_LIMB(0x11ba0fed2a4f14)), + P(3701,CNST_LIMB(0x374468dccaced1dd),CNST_LIMB(0x11b528538ed64a)), + P(3709,CNST_LIMB(0x8d145c7d110c5ad5),CNST_LIMB(0x11ab61404242ac)), + P(3719,CNST_LIMB(0x3251a39f5acb5737),CNST_LIMB(0x119f378ce81d2f)), + P(3727,CNST_LIMB(0xa66e50171443506f),CNST_LIMB(0x1195889ece79da)), + P(3733,CNST_LIMB(0x124f69ad91dd4cbd),CNST_LIMB(0x118e4c65387077)), + P(3739,CNST_LIMB(0xec24f8f2a61a2793),CNST_LIMB(0x1187161d70e725)), + P(3761,CNST_LIMB(0xb472148e656b7a51),CNST_LIMB(0x116cd6d1c85239)), + P(3767,CNST_LIMB(0xadf9570e1142f07),CNST_LIMB(0x1165bbe7ce86b1)), + P(3769,CNST_LIMB(0x89bf33b065119789),CNST_LIMB(0x11635ee344ce36)), + P(3779,CNST_LIMB(0x8f0149803cb291eb),CNST_LIMB(0x11579767b6d679)), + P(3793,CNST_LIMB(0x8334b63afd190a31),CNST_LIMB(0x114734711e2b54)), + P(3797,CNST_LIMB(0x920908d50d6aba7d),CNST_LIMB(0x11428b90147f05)), + P(3803,CNST_LIMB(0x57d8b018c5a33d53),CNST_LIMB(0x113b92f3021636)), + P(3821,CNST_LIMB(0xea1773092dc27ee5),CNST_LIMB(0x1126cabc886884)), + P(3823,CNST_LIMB(0xcae5f38b7bf2e00f),CNST_LIMB(0x11247eb1b85976)), + P(3833,CNST_LIMB(0x2bd02df34f695349),CNST_LIMB(0x11190bb01efd65)), + P(3847,CNST_LIMB(0xddfecd5be62e2eb7),CNST_LIMB(0x11091de0fd679c)), + P(3851,CNST_LIMB(0xdbf849ebec96c4a3),CNST_LIMB(0x1104963c7e4e0b)), + P(3853,CNST_LIMB(0xda31d4d0187357c5),CNST_LIMB(0x110253516420b0)), + P(3863,CNST_LIMB(0xe34e21cc2d5418a7),CNST_LIMB(0x10f70db7c41797)), + P(3877,CNST_LIMB(0x68ca5137a9e574ad),CNST_LIMB(0x10e75ee2bf9ecd)), + P(3881,CNST_LIMB(0x3eaa0d0f804bfd19),CNST_LIMB(0x10e2e91c6e0676)), + P(3889,CNST_LIMB(0x554fb753cc20e9d1),CNST_LIMB(0x10da049b9d428d)), + P(3907,CNST_LIMB(0x797afcca1300756b),CNST_LIMB(0x10c6248fe3b1a2)), + P(3911,CNST_LIMB(0x8b8d950b52eeea77),CNST_LIMB(0x10c1c03ed690eb)), + P(3917,CNST_LIMB(0xfb6cd166acabc185),CNST_LIMB(0x10bb2e1379e3a2)), + P(3919,CNST_LIMB(0x4eb6c5ed9437a7af),CNST_LIMB(0x10b8fe7f61228e)), + P(3923,CNST_LIMB(0xd1eddbd91b790cdb),CNST_LIMB(0x10b4a10d60a4f7)), + P(3929,CNST_LIMB(0x93d714ea4d8948e9),CNST_LIMB(0x10ae192681ec0f)), + P(3931,CNST_LIMB(0x3ca13ed8145188d3),CNST_LIMB(0x10abecfbe5b0ae)), + P(3943,CNST_LIMB(0x829086016da89c57),CNST_LIMB(0x109eefd568b96d)), + P(3947,CNST_LIMB(0xd7da1f432124a543),CNST_LIMB(0x109a9ff178b40c)), + P(3967,CNST_LIMB(0x7ead5581632fb07f),CNST_LIMB(0x108531e22f9ff9)), + P(3989,CNST_LIMB(0x35443837f63ec3bd),CNST_LIMB(0x106ddec1af4417)), + P(4001,CNST_LIMB(0x89e2b200e5519461),CNST_LIMB(0x10614174a4911d)), + P(4003,CNST_LIMB(0xe9ae44f0b7289c0b),CNST_LIMB(0x105f291f0448e7)), + P(4007,CNST_LIMB(0x94387a277b9fa817),CNST_LIMB(0x105afa0ef32891)), + P(4013,CNST_LIMB(0xc84f1a58abfc2c25),CNST_LIMB(0x1054b777bd2530)), + P(4019,CNST_LIMB(0x71101d8e3c83377b),CNST_LIMB(0x104e79a97fb69e)), + P(4021,CNST_LIMB(0xc024abe5c50ba69d),CNST_LIMB(0x104c661eafd845)), + P(4027,CNST_LIMB(0x15de4eb365a65d73),CNST_LIMB(0x10462ea939c933)), + P(4049,CNST_LIMB(0x9ed28a76bcca931),CNST_LIMB(0x102f8baa442836)), + P(4051,CNST_LIMB(0x816bffbf4a00205b),CNST_LIMB(0x102d7ff7e94004)), + P(4057,CNST_LIMB(0x1f5c71543d558069),CNST_LIMB(0x10275ff9f13c02)), + P(4073,CNST_LIMB(0xf25c64d0ec53b859),CNST_LIMB(0x1017213fcbb4d3)), + P(4079,CNST_LIMB(0x96c02c2ef1e0ff0f),CNST_LIMB(0x101112234579d1)), + P(4091,CNST_LIMB(0x19a804816870a333),CNST_LIMB(0x100501907d271c)), + P(4093,CNST_LIMB(0x6de49add0971c555),CNST_LIMB(0x100300901b0510)), + P(4099,CNST_LIMB(0x528087e684c71aab),CNST_LIMB(0xffd008fe5050f)), + P(4111,CNST_LIMB(0xa94152c269bcdeef),CNST_LIMB(0xff10e02dd5084)), + P(4127,CNST_LIMB(0x379450a3c2b6bdf),CNST_LIMB(0xfe13b9c80c67f)), + P(4129,CNST_LIMB(0xd2cd38bafe5373e1),CNST_LIMB(0xfdf4384be37ad)), + P(4133,CNST_LIMB(0xc29df2bea71d8bad),CNST_LIMB(0xfdb54cbe8766e)), + P(4139,CNST_LIMB(0xc15862775f302e83),CNST_LIMB(0xfd5725ca6ff32)), + P(4153,CNST_LIMB(0x1016af2fe55ede09),CNST_LIMB(0xfc7c84684c6fb)), + P(4157,CNST_LIMB(0x3d26dbd9d1910715),CNST_LIMB(0xfc3e5265dbaa8)), + P(4159,CNST_LIMB(0x621dab2dfaf3dfbf),CNST_LIMB(0xfc1f44e0cae12)), + P(4177,CNST_LIMB(0xb6f1d7ac287338b1),CNST_LIMB(0xfb0921c50a7af)), + P(4201,CNST_LIMB(0x8d9e9f0c3f9e7fd9),CNST_LIMB(0xf999fd70cbc6b)), + P(4211,CNST_LIMB(0x60a93f8762e914bb),CNST_LIMB(0xf9023fd5339d0)), + P(4217,CNST_LIMB(0xb14371f247c159c9),CNST_LIMB(0xf8a78ce671475)), + P(4219,CNST_LIMB(0x6dd3b484471d4eb3),CNST_LIMB(0xf8895fee86574)), + P(4229,CNST_LIMB(0xcd172f4701c1684d),CNST_LIMB(0xf7f2ecb084b10)), + P(4231,CNST_LIMB(0x372e686ed8bb537),CNST_LIMB(0xf7d4eb7d10c29)), + P(4241,CNST_LIMB(0xbc07f7ca65c5b071),CNST_LIMB(0xf73f52277a3c3)), + P(4243,CNST_LIMB(0xab2b6170c3f78d9b),CNST_LIMB(0xf7217c598961c)), + P(4253,CNST_LIMB(0xf3d74f461fe6f5b5),CNST_LIMB(0xf68cbb1448f42)), + P(4259,CNST_LIMB(0xdbc13f4b31f3230b),CNST_LIMB(0xf633d0276e4c5)), + P(4261,CNST_LIMB(0xd1420716e3f1572d),CNST_LIMB(0xf6163ac20ec79)), + P(4271,CNST_LIMB(0xd5be2fd4d805464f),CNST_LIMB(0xf582ba2bc16c6)), + P(4273,CNST_LIMB(0xc68b97c136943851),CNST_LIMB(0xf5654f43290a0)), + P(4283,CNST_LIMB(0x9e27918af7cfb473),CNST_LIMB(0xf4d2a23810bc6)), + P(4289,CNST_LIMB(0x5ec8ab6c36ac7f41),CNST_LIMB(0xf47af4d6a2f27)), + P(4297,CNST_LIMB(0x964076331dd90979),CNST_LIMB(0xf4066f2b6e652)), + P(4327,CNST_LIMB(0x30198eff77b002d7),CNST_LIMB(0xf2555048e3a92)), + P(4337,CNST_LIMB(0x3af7cb9583ece011),CNST_LIMB(0xf1c64588a5bf6)), + P(4339,CNST_LIMB(0x34ce06f643d9883b),CNST_LIMB(0xf1a9be09cb411)), + P(4349,CNST_LIMB(0x79f767e528708c55),CNST_LIMB(0xf11b7d5259d39)), + P(4357,CNST_LIMB(0x185332d2ef2313cd),CNST_LIMB(0xf0aa284e7f802)), + P(4363,CNST_LIMB(0x43b611b84c8332a3),CNST_LIMB(0xf0556e5e3b7f2)), + P(4373,CNST_LIMB(0xc2e215e4f43bb63d),CNST_LIMB(0xefc8bcbc808e5)), + P(4391,CNST_LIMB(0xf94b9dd22ce44e97),CNST_LIMB(0xeecd1a690efbb)), + P(4397,CNST_LIMB(0xd895834a1db166a5),CNST_LIMB(0xee79aed6d65f2)), + P(4409,CNST_LIMB(0x347d2f16d19b8d09),CNST_LIMB(0xedd386114d83a)), + P(4421,CNST_LIMB(0x1b54d4dc45b7d98d),CNST_LIMB(0xed2e44366e5e2)), + P(4423,CNST_LIMB(0x117ac30d9a044877),CNST_LIMB(0xed12cf8e17f64)), + P(4441,CNST_LIMB(0xe10b78a67a526e9),CNST_LIMB(0xec1cd284b2b2d)), + P(4447,CNST_LIMB(0x92da68a818688a9f),CNST_LIMB(0xebcb44cadda1e)), + P(4451,CNST_LIMB(0xcf2b6c87f741f84b),CNST_LIMB(0xeb9505943771d)), + P(4457,CNST_LIMB(0xd264f9bd41e18ed9),CNST_LIMB(0xeb43d57efeadc)), + P(4463,CNST_LIMB(0x733cbeaa97166d8f),CNST_LIMB(0xeaf2dd4c00b03)), + P(4481,CNST_LIMB(0xc9f475b021d22e81),CNST_LIMB(0xea0141c1ba6a6)), + P(4483,CNST_LIMB(0x731f76f2ec4c852b),CNST_LIMB(0xe9e68805f05a7)), + P(4493,CNST_LIMB(0xdaf6f0c978f69945),CNST_LIMB(0xe96142b87e431)), + P(4507,CNST_LIMB(0x749c8ad20c61ec93),CNST_LIMB(0xe8a7acd811b8c)), + P(4513,CNST_LIMB(0x9307ff8bd3c1261),CNST_LIMB(0xe8587db3e001d)), + P(4517,CNST_LIMB(0x334a69fb5a486e2d),CNST_LIMB(0xe823d186d44dc)), + P(4519,CNST_LIMB(0x1f36c7bf31578617),CNST_LIMB(0xe8098463ee194)), + P(4523,CNST_LIMB(0x31ebbcc279ea6103),CNST_LIMB(0xe7d4fbfb3ee1d)), + P(4547,CNST_LIMB(0x42e2aad119f466eb),CNST_LIMB(0xe69bba6981ffa)), + P(4549,CNST_LIMB(0x106ec05a0ab1450d),CNST_LIMB(0xe681c5cf7d707)), + P(4561,CNST_LIMB(0xb1b38db92a99e731),CNST_LIMB(0xe5e684930e334)), + P(4567,CNST_LIMB(0x784ae377e67071e7),CNST_LIMB(0xe5993247dc92d)), + P(4583,CNST_LIMB(0x3e9e1471ba6671d7),CNST_LIMB(0xe4cbfee201016)), + P(4591,CNST_LIMB(0x82c29b59d4d73d0f),CNST_LIMB(0xe465ee7daf979)), + P(4597,CNST_LIMB(0xc23dd07128b5525d),CNST_LIMB(0xe4199de07af5c)), + P(4603,CNST_LIMB(0x4d4e5ce0e9245133),CNST_LIMB(0xe3cd8031d4f40)), + P(4621,CNST_LIMB(0xc8fd1057c09f8cc5),CNST_LIMB(0xe2ea56c157eb2)), + P(4637,CNST_LIMB(0xea1516e94f394035),CNST_LIMB(0xe221e5d4d3c73)), + P(4639,CNST_LIMB(0xb5e3319c564ee9df),CNST_LIMB(0xe208f09a841c7)), + P(4643,CNST_LIMB(0x126a69f90d822d8b),CNST_LIMB(0xe1d716a945161)), + P(4649,CNST_LIMB(0x501ed6348857aa19),CNST_LIMB(0xe18c78ec8fd4d)), + P(4651,CNST_LIMB(0xde344a324eee1c83),CNST_LIMB(0xe173a4a162079)), + P(4657,CNST_LIMB(0x1dd9690cb2c406d1),CNST_LIMB(0xe1294881bb494)), + P(4663,CNST_LIMB(0x8d6c5178d5e4387),CNST_LIMB(0xe0df1d5f24661)), + P(4673,CNST_LIMB(0x4cea4050a3e8fdc1),CNST_LIMB(0xe063ec7f50b1e)), + P(4679,CNST_LIMB(0xc114a06acc83f777),CNST_LIMB(0xe01a4313dc53d)), + P(4691,CNST_LIMB(0x20b060ebc0ea01db),CNST_LIMB(0xdf8780f47c350)), + P(4703,CNST_LIMB(0xfe50045acb78c99f),CNST_LIMB(0xdef57e8eb9666)), + P(4721,CNST_LIMB(0x291a68705b196e91),CNST_LIMB(0xde1bdf3f63d46)), + P(4723,CNST_LIMB(0xc1042c724273e2bb),CNST_LIMB(0xde03cb5099809)), + P(4729,CNST_LIMB(0x2cee680bb165b7c9),CNST_LIMB(0xddbbaecc84bc9)), + P(4733,CNST_LIMB(0xfd2ff9f12e0776d5),CNST_LIMB(0xdd8bb5ca73db6)), + P(4751,CNST_LIMB(0x166a5da63af2cc6f),CNST_LIMB(0xdcb4d529a6e07)), + P(4759,CNST_LIMB(0xedd16a5930408d27),CNST_LIMB(0xdc55da73dea60)), + P(4783,CNST_LIMB(0x2adf30c26528844f),CNST_LIMB(0xdb3ad2585011f)), + P(4787,CNST_LIMB(0x9a48d6572b5eec7b),CNST_LIMB(0xdb0becf636a79)), + P(4789,CNST_LIMB(0x6e8bf2877503cb9d),CNST_LIMB(0xdaf481ca6fefb)), + P(4793,CNST_LIMB(0xea27a191a7045389),CNST_LIMB(0xdac5ba7565dae)), + P(4799,CNST_LIMB(0x6eb091f34dd45d3f),CNST_LIMB(0xda7fb4e419d19)), + P(4801,CNST_LIMB(0xdc8a6cabb2937d41),CNST_LIMB(0xda6867a88d327)), + P(4813,CNST_LIMB(0xbc2f04f254922a05),CNST_LIMB(0xd9dd005f50b02)), + P(4817,CNST_LIMB(0x41431f4d6eb38631),CNST_LIMB(0xd9aeb01f763f7)), + P(4831,CNST_LIMB(0x7bd717435a08291f),CNST_LIMB(0xd90d31dd5804a)), + P(4861,CNST_LIMB(0x4232df9c91fc1a55),CNST_LIMB(0xd7b6453358f31)), + P(4871,CNST_LIMB(0xa4651e1d5382eab7),CNST_LIMB(0xd744e69d900e4)), + P(4877,CNST_LIMB(0x7cfb5409de4cf3c5),CNST_LIMB(0xd7011a317260e)), + P(4889,CNST_LIMB(0xcdd636fb068b9929),CNST_LIMB(0xd67a0126e7c19)), + P(4903,CNST_LIMB(0xee8f95e740462c97),CNST_LIMB(0xd5dd39e775bd7)), + P(4909,CNST_LIMB(0x490f97b3a758b4a5),CNST_LIMB(0xd59a4f2990168)), + P(4919,CNST_LIMB(0x641431563c441287),CNST_LIMB(0xd52b24cb6269d)), + P(4931,CNST_LIMB(0xb743dad3ec45916b),CNST_LIMB(0xd4a6571da4f04)), + P(4933,CNST_LIMB(0x7b188be8f55c878d),CNST_LIMB(0xd49044eac6581)), + P(4937,CNST_LIMB(0xd805648b2ca54ef9),CNST_LIMB(0xd4642e40d1129)), + P(4943,CNST_LIMB(0x76dbe6eef60123af),CNST_LIMB(0xd4222e81fe723)), + P(4951,CNST_LIMB(0x3711525e6a9e8867),CNST_LIMB(0xd3ca6e8c89f41)), + P(4957,CNST_LIMB(0x85c2215cb383d8f5),CNST_LIMB(0xd388ce29d4edc)), + P(4967,CNST_LIMB(0xe58f554c89825857),CNST_LIMB(0xd31bc7b7d8013)), + P(4969,CNST_LIMB(0x8fbd3b17c01dacd9),CNST_LIMB(0xd306071c13fd5)), + P(4973,CNST_LIMB(0x4c8c39dc7aedee65),CNST_LIMB(0xd2da935479b1a)), + P(4987,CNST_LIMB(0x653ac6dda86cd3b3),CNST_LIMB(0xd2430aa043597)), + P(4993,CNST_LIMB(0xd61c6791a9c2c81),CNST_LIMB(0xd2025bc6c7db7)), + P(4999,CNST_LIMB(0xb627a30090354237),CNST_LIMB(0xd1c1d4ad1732b)), + P(5003,CNST_LIMB(0x83a89a539c527c23),CNST_LIMB(0xd196e5f46f8c8)), + P(5009,CNST_LIMB(0x28c8c09330e90d71),CNST_LIMB(0xd156a0c9293e8)), + P(5011,CNST_LIMB(0xee1178d27b1f029b),CNST_LIMB(0xd1413d26e0aee)), + P(5021,CNST_LIMB(0xcecc740b37860ab5),CNST_LIMB(0xd0d68c6a4128f)), + P(5023,CNST_LIMB(0x79736fde910c485f),CNST_LIMB(0xd0c142eaf3837)), + P(5039,CNST_LIMB(0x6873d51f2487234f),CNST_LIMB(0xd01792ab9d70d)), + P(5051,CNST_LIMB(0x2a112180614fb973),CNST_LIMB(0xcf990317775bc)), + P(5059,CNST_LIMB(0xcb04cea98508f4eb),CNST_LIMB(0xcf44f8c38790a)), + P(5077,CNST_LIMB(0xc2fcd2c527e28d7d),CNST_LIMB(0xce88d96d10e45)), + P(5081,CNST_LIMB(0x980203ee10393c69),CNST_LIMB(0xce5f39b07e906)), + P(5087,CNST_LIMB(0x3fa90a1d7d75681f),CNST_LIMB(0xce20e98148847)), + P(5099,CNST_LIMB(0xdbf3bfefef217cc3),CNST_LIMB(0xcda4b9c30ccd7)), + P(5101,CNST_LIMB(0x66a17fd3087b41e5),CNST_LIMB(0xcd9015ae32495)), + P(5107,CNST_LIMB(0x962195d496fbbd3b),CNST_LIMB(0xcd524244aca36)), + P(5113,CNST_LIMB(0xc705a86155443e49),CNST_LIMB(0xcd14940099cf6)), + P(5119,CNST_LIMB(0x3f298ee0be6febff),CNST_LIMB(0xccd70ac089a07)), + P(5147,CNST_LIMB(0xaa99b084e62fa613),CNST_LIMB(0xcbb9c535c4371)), + P(5153,CNST_LIMB(0x1f000cb7d0b46fe1),CNST_LIMB(0xcb7d0b46fe0ff)), + P(5167,CNST_LIMB(0x9ed7858637c9b2cf),CNST_LIMB(0xcaefe5d7135f4)), + P(5171,CNST_LIMB(0x4d871aaf27c106fb),CNST_LIMB(0xcac7b5f00f0cd)), + P(5179,CNST_LIMB(0x2e6a467cdc75a4f3),CNST_LIMB(0xca7785ceddbea)), + P(5189,CNST_LIMB(0xe9d938fb696dde8d),CNST_LIMB(0xca13a2a86e1db)), + P(5197,CNST_LIMB(0x40ec71b0b1554485),CNST_LIMB(0xc9c4009753007)), + P(5209,CNST_LIMB(0x3aae12f861e5f3e9),CNST_LIMB(0xc94d02e64bfab)), + P(5227,CNST_LIMB(0xa97565873959f843),CNST_LIMB(0xc89b8c9c875ef)), + P(5231,CNST_LIMB(0xb5a960c09fbca8f),CNST_LIMB(0xc87447737277e)), + P(5233,CNST_LIMB(0x463fe3d268012c91),CNST_LIMB(0xc860aaa2514e3)), + P(5237,CNST_LIMB(0xe59a6bd5f5ee1bdd),CNST_LIMB(0xc8397c813f1b9)), + P(5261,CNST_LIMB(0x6542e84d7775ce45),CNST_LIMB(0xc74fa805d6d56)), + P(5273,CNST_LIMB(0x8b6eef58fd9effa9),CNST_LIMB(0xc6db8a1f5cdfe)), + P(5279,CNST_LIMB(0x58993dbb9f98075f),CNST_LIMB(0xc6a1add9e2398)), + P(5281,CNST_LIMB(0x2997955a810acf61),CNST_LIMB(0xc68e6be826648)), + P(5297,CNST_LIMB(0x76e3d2f5077db451),CNST_LIMB(0xc5f4e25fc9df0)), + P(5303,CNST_LIMB(0xb37c1d2867e30907),CNST_LIMB(0xc5bb8bf2ad1cd)), + P(5309,CNST_LIMB(0x53ce6e09bd8d8695),CNST_LIMB(0xc58256b316ced)), + P(5323,CNST_LIMB(0x39db291ea2a6b0e3),CNST_LIMB(0xc4fd5ad917b5b)), + P(5333,CNST_LIMB(0xddd265ab9c58847d),CNST_LIMB(0xc49ecb3ea4d7a)), + P(5347,CNST_LIMB(0x5beca8562dddd0cb),CNST_LIMB(0xc41b00b7d950a)), + P(5351,CNST_LIMB(0xb69031c153ddbed7),CNST_LIMB(0xc3f57990b87a1)), + P(5381,CNST_LIMB(0xd03c2271b42a6fcd),CNST_LIMB(0xc2ddcb31250f8)), + P(5387,CNST_LIMB(0xcd6fd19e63e40ea3),CNST_LIMB(0xc2a63b3651432)), + P(5393,CNST_LIMB(0xf7687aa8e4fd7bf1),CNST_LIMB(0xc26ecae1db72e)), + P(5399,CNST_LIMB(0x649dfda112a272a7),CNST_LIMB(0xc2377a18c051e)), + P(5407,CNST_LIMB(0xecf7866a56d526df),CNST_LIMB(0xc1ede9efcec29)), + P(5413,CNST_LIMB(0x72bbf1cfdaebfead),CNST_LIMB(0xc1b6e258d13a0)), + P(5417,CNST_LIMB(0x55f6a48df7055719),CNST_LIMB(0xc19243f5399bb)), + P(5419,CNST_LIMB(0x80060bffcfa00183),CNST_LIMB(0xc17ff9f400305)), + P(5431,CNST_LIMB(0x8a104f309919b087),CNST_LIMB(0xc112865703b94)), + P(5437,CNST_LIMB(0x98fa7db7652f6a15),CNST_LIMB(0xc0dbfaea33225)), + P(5441,CNST_LIMB(0x5d7d1b3df70f7ac1),CNST_LIMB(0xc0b7af12ddfb9)), + P(5443,CNST_LIMB(0x16ab7b5e04cc1f6b),CNST_LIMB(0xc0a58e464462c)), + P(5449,CNST_LIMB(0x78a5bfd2e5ececf9),CNST_LIMB(0xc06f40512eef2)), + P(5471,CNST_LIMB(0x6506392e171d869f),CNST_LIMB(0xbfa9275a2b247)), + P(5477,CNST_LIMB(0xc3fc12e221ef146d),CNST_LIMB(0xbf7367402cdf0)), + P(5479,CNST_LIMB(0xf8aa132822c33657),CNST_LIMB(0xbf61833f4f921)), + P(5483,CNST_LIMB(0x894496574f536f43),CNST_LIMB(0xbf3dc543a74a1)), + P(5501,CNST_LIMB(0x8b2546b08fb4cbd5),CNST_LIMB(0xbe9d9302a7115)), + P(5503,CNST_LIMB(0x43bbb561bd1aa7f),CNST_LIMB(0xbe8bd6e051e01)), + P(5507,CNST_LIMB(0x2412c7cc4ea7a12b),CNST_LIMB(0xbe6868804d5a6)), + P(5519,CNST_LIMB(0x6f0bd406dd71696f),CNST_LIMB(0xbdfe6c4359f0e)), + P(5521,CNST_LIMB(0xad475c6988d54b71),CNST_LIMB(0xbdeccdb0b5c3a)), + P(5527,CNST_LIMB(0xd812e5d48dbbba27),CNST_LIMB(0xbdb8058ee429a)), + P(5531,CNST_LIMB(0x22aaca437ba04893),CNST_LIMB(0xbd94e5c1b371f)), + P(5557,CNST_LIMB(0xdba6ff1fecd5f09d),CNST_LIMB(0xbcb1d293b1af3)), + P(5563,CNST_LIMB(0x13016d3396286773),CNST_LIMB(0xbc7db8db0c1a5)), + P(5569,CNST_LIMB(0xc746494631bcfa41),CNST_LIMB(0xbc49bbdfd2662)), + P(5573,CNST_LIMB(0xd14888565bf6a10d),CNST_LIMB(0xbc2723240f402)), + P(5581,CNST_LIMB(0xc002ef885f0adf05),CNST_LIMB(0xbbe217c2b7c13)), + P(5591,CNST_LIMB(0xe5a04da7fee6ade7),CNST_LIMB(0xbb8c10aab27b2)), + P(5623,CNST_LIMB(0xc114ce5468593bc7),CNST_LIMB(0xba7ad528a7e79)), + P(5639,CNST_LIMB(0xbb6747dd7f577b7),CNST_LIMB(0xb9f3611b48c5e)), + P(5641,CNST_LIMB(0x395ce5a20f285839),CNST_LIMB(0xb9e2806e5e7c4)), + P(5647,CNST_LIMB(0x6eee8be66e8618ef),CNST_LIMB(0xb9aff0c4913fe)), + P(5651,CNST_LIMB(0x52acf64297f1241b),CNST_LIMB(0xb98e4aedd581c)), + P(5653,CNST_LIMB(0x361dcc48a364093d),CNST_LIMB(0xb97d7c94b7dc2)), + P(5657,CNST_LIMB(0x342d6f475d72e629),CNST_LIMB(0xb95be902d9d9e)), + P(5659,CNST_LIMB(0x5e978bd46410d413),CNST_LIMB(0xb94b23c872b90)), + P(5669,CNST_LIMB(0xcc3433d75ba015ad),CNST_LIMB(0xb8f77714d15a1)), + P(5683,CNST_LIMB(0x1c83b7628458d4fb),CNST_LIMB(0xb882d0beff6a1)), + P(5689,CNST_LIMB(0xf9ca45637e38f809),CNST_LIMB(0xb850ff9852703)), + P(5693,CNST_LIMB(0xcbed792ffaf6b115),CNST_LIMB(0xb82fd86db8806)), + P(5701,CNST_LIMB(0x9abd961d8c0e8c8d),CNST_LIMB(0xb7edadd32f76c)), + P(5711,CNST_LIMB(0xe69572fa659340af),CNST_LIMB(0xb79b3b4df3b7b)), + P(5717,CNST_LIMB(0x9187e7483a6436fd),CNST_LIMB(0xb769e6d59833f)), + P(5737,CNST_LIMB(0x1e9c726993bed9d9),CNST_LIMB(0xb6c636b5141ff)), + P(5741,CNST_LIMB(0x243554db91976365),CNST_LIMB(0xb6a59ceae8801)), + P(5743,CNST_LIMB(0x4d06ff994c0088f),CNST_LIMB(0xb6955461e38f7)), + P(5749,CNST_LIMB(0x25b76abcb74889dd),CNST_LIMB(0xb6648c2dc6bc2)), + P(5779,CNST_LIMB(0x3a409642893c779b),CNST_LIMB(0xb572282260209)), + P(5783,CNST_LIMB(0x8f8f620d8bc0c927),CNST_LIMB(0xb552072bde889)), + P(5791,CNST_LIMB(0x6f9f196b3369855f),CNST_LIMB(0xb511e7552f9c4)), + P(5801,CNST_LIMB(0x92a522bb0638ed99),CNST_LIMB(0xb4c1ff34a5c0e)), + P(5807,CNST_LIMB(0x96270f1efdd7004f),CNST_LIMB(0xb4922f58d4aa2)), + P(5813,CNST_LIMB(0xb4844b380fdaa79d),CNST_LIMB(0xb46278c16b967)), + P(5821,CNST_LIMB(0x108936aa5f9c1495),CNST_LIMB(0xb42301cd99b49)), + P(5827,CNST_LIMB(0xb60f606f104c9eb),CNST_LIMB(0xb3f385dd77e4e)), + P(5839,CNST_LIMB(0xc663dfe8263b302f),CNST_LIMB(0xb394d8ef8f0f6)), + P(5843,CNST_LIMB(0xc91a280b9110b15b),CNST_LIMB(0xb375601507c14)), + P(5849,CNST_LIMB(0x904287118d10969),CNST_LIMB(0xb3463f76be376)), + P(5851,CNST_LIMB(0x160d36a5d31bf553),CNST_LIMB(0xb3368f6c4a07c)), + P(5857,CNST_LIMB(0xe84f5fda3c67ad21),CNST_LIMB(0xb3078fc1c25f0)), + P(5861,CNST_LIMB(0xbd85701f72d4b6ed),CNST_LIMB(0xb2e84854e93e5)), + P(5867,CNST_LIMB(0x4c50cf5924dee1c3),CNST_LIMB(0xb2b971aa909a4)), + P(5869,CNST_LIMB(0x2455aaf1633bb6e5),CNST_LIMB(0xb2a9da39d6bc8)), + P(5879,CNST_LIMB(0xd775b39f549b8ac7),CNST_LIMB(0xb25c0dc29a0fc)), + P(5881,CNST_LIMB(0x87fcdda7a252cb49),CNST_LIMB(0xb24c8698449a7)), + P(5897,CNST_LIMB(0x53df2e3bd254a739),CNST_LIMB(0xb1d0ae579aefe)), + P(5903,CNST_LIMB(0x8915e69623a5f7ef),CNST_LIMB(0xb1a2698ea2f9e)), + P(5923,CNST_LIMB(0x1ef24c80742dd08b),CNST_LIMB(0xb108dc4186078)), + P(5927,CNST_LIMB(0xb4d87aaa6fb1e897),CNST_LIMB(0xb0ea463b00212)), + P(5939,CNST_LIMB(0x788573e8b92dbbfb),CNST_LIMB(0xb08ec37007962)), + P(5953,CNST_LIMB(0x2527b137b0878c1),CNST_LIMB(0xb024778cc023c)), + P(5981,CNST_LIMB(0x1870a7c8dee9f4f5),CNST_LIMB(0xaf515df36a88e)), + P(5987,CNST_LIMB(0x39b99e40910a224b),CNST_LIMB(0xaf24635f6561e)), + P(6007,CNST_LIMB(0x45821c0abd4df247),CNST_LIMB(0xae8f1b92baeaf)), + P(6011,CNST_LIMB(0x10fe2b2f50e02fb3),CNST_LIMB(0xae715eee11f8e)), + P(6029,CNST_LIMB(0x5762b90c043f0345),CNST_LIMB(0xadec0b0a3bb36)), + P(6037,CNST_LIMB(0x82a67b9193b27bbd),CNST_LIMB(0xadb10aa4c956f)), + P(6043,CNST_LIMB(0xa6e914e28ec37693),CNST_LIMB(0xad84e49752245)), + P(6047,CNST_LIMB(0x835d9a4facaf445f),CNST_LIMB(0xad6782597f0c2)), + P(6053,CNST_LIMB(0x48def8175884f82d),CNST_LIMB(0xad3b81a0d72fe)), + P(6067,CNST_LIMB(0xae900e2d7c9a6f7b),CNST_LIMB(0xacd52beced79e)), + P(6073,CNST_LIMB(0x1c08431bdd18be89),CNST_LIMB(0xaca9755063254)), + P(6079,CNST_LIMB(0xb370a66d684fd83f),CNST_LIMB(0xac7dd4cafb12a)), + P(6089,CNST_LIMB(0xb4be33e18f93b279),CNST_LIMB(0xac354f80dca44)), + P(6091,CNST_LIMB(0x310c50872a7dd5e3),CNST_LIMB(0xac26d5c2b8ad2)), + P(6101,CNST_LIMB(0x447ab1281276697d),CNST_LIMB(0xabde997dabd3d)), + P(6113,CNST_LIMB(0xc2f122216b2a6c21),CNST_LIMB(0xab883aa1100a0)), + P(6121,CNST_LIMB(0xab99c8b5ae1c3059),CNST_LIMB(0xab4ed637f5a0b)), + P(6131,CNST_LIMB(0xb78e17a2227d593b),CNST_LIMB(0xab074e9febf52)), + P(6133,CNST_LIMB(0xabf97d03f7269c5d),CNST_LIMB(0xaaf90778c2039)), + P(6143,CNST_LIMB(0x867aefc9fdbfe7ff),CNST_LIMB(0xaab1c7684f034)), + P(6151,CNST_LIMB(0xf7f7ad182e47d5b7),CNST_LIMB(0xaa78f20ebbb3e)), + P(6163,CNST_LIMB(0x50dff95a9847721b),CNST_LIMB(0xaa23f8dafd4cc)), + P(6173,CNST_LIMB(0xe4cb8a0e83cb6a35),CNST_LIMB(0xa9dd69cad5934)), + P(6197,CNST_LIMB(0x8da72ecdf9247a1d),CNST_LIMB(0xa935004a07302)), + P(6199,CNST_LIMB(0xc5b04bfc87f31d87),CNST_LIMB(0xa9270690f3d14)), + P(6203,CNST_LIMB(0xe2dcf622ea2b00f3),CNST_LIMB(0xa90b1a0aa5d30)), + P(6211,CNST_LIMB(0xb9ce9f2e4972f46b),CNST_LIMB(0xa8d35c9d731e9)), + P(6217,CNST_LIMB(0x1ed785c911bf59f9),CNST_LIMB(0xa8a9a6a51f16c)), + P(6221,CNST_LIMB(0x4ddb8a4eed70e085),CNST_LIMB(0xa88de370f596b)), + P(6229,CNST_LIMB(0x81e93b4df68c24fd),CNST_LIMB(0xa856786adae36)), + P(6247,CNST_LIMB(0xee0d0812afcd8357),CNST_LIMB(0xa7da4c77d3161)), + P(6257,CNST_LIMB(0xf62e3ba72268a891),CNST_LIMB(0xa7959f863d4a1)), + P(6263,CNST_LIMB(0x3194d367c8154147),CNST_LIMB(0xa76c85e80c195)), + P(6269,CNST_LIMB(0xd096ede8e30c20d5),CNST_LIMB(0xa743806dc44c4)), + P(6271,CNST_LIMB(0xd68624d27b87a77f),CNST_LIMB(0xa735d866dfa0a)), + P(6277,CNST_LIMB(0xb728fcdc11c8204d),CNST_LIMB(0xa70cedb02531e)), + P(6287,CNST_LIMB(0x9d6b6038077e066f),CNST_LIMB(0xa6c8e842c770f)), + P(6299,CNST_LIMB(0xaa732d7a4a360d93),CNST_LIMB(0xa67791215dd74)), + P(6301,CNST_LIMB(0x36af98a423972db5),CNST_LIMB(0xa66a0a51d363d)), + P(6311,CNST_LIMB(0xc31d00da12940f17),CNST_LIMB(0xa626893011861)), + P(6317,CNST_LIMB(0xed85352107410b25),CNST_LIMB(0xa5fe22c55c089)), + P(6323,CNST_LIMB(0x829c85ee6db8567b),CNST_LIMB(0xa5d5cffb77275)), + P(6329,CNST_LIMB(0xef60258952cc6d89),CNST_LIMB(0xa5ad90c4186e5)), + P(6337,CNST_LIMB(0xcf28c2e0da787741),CNST_LIMB(0xa578057e7c2eb)), + P(6343,CNST_LIMB(0x57567d8494af28f7),CNST_LIMB(0xa54ff3bb10e91)), + P(6353,CNST_LIMB(0x2c7c98518f174031),CNST_LIMB(0xa50d5683edc94)), + P(6359,CNST_LIMB(0xb28b363a36825ae7),CNST_LIMB(0xa4e57854b3df4)), + P(6361,CNST_LIMB(0xed1ffeb64f9ae769),CNST_LIMB(0xa4d8328c4b800)), + P(6367,CNST_LIMB(0xcbbb0115e9b9a31f),CNST_LIMB(0xa4b06e01d97b3)), + P(6373,CNST_LIMB(0x8d3c5fecb7f9e4ed),CNST_LIMB(0xa488bca2c4449)), + P(6379,CNST_LIMB(0x816271698195cfc3),CNST_LIMB(0xa4611e6132ed5)), + P(6389,CNST_LIMB(0x9ac939d1c2b1d35d),CNST_LIMB(0xa41f40f39e646)), + P(6397,CNST_LIMB(0xdd9fb7017b0ec455),CNST_LIMB(0xa3eab5c3e44e9)), + P(6421,CNST_LIMB(0xc94cab1e57276e3d),CNST_LIMB(0xa34ddd50561e0)), + P(6427,CNST_LIMB(0x8b8806b117c79913),CNST_LIMB(0xa326d60e94186)), + P(6449,CNST_LIMB(0xa9e63292a3269fd1),CNST_LIMB(0xa2985a81ce614)), + P(6451,CNST_LIMB(0x76da5710f1e989fb),CNST_LIMB(0xa28b72e26f82e)), + P(6469,CNST_LIMB(0xdded6688d83a918d),CNST_LIMB(0xa217aa3479693)), + P(6473,CNST_LIMB(0x4e446b6a305428f9),CNST_LIMB(0xa1fe05c62df4b)), + P(6481,CNST_LIMB(0x4ddaca7a3696cfb1),CNST_LIMB(0xa1cad538aebf9)), + P(6491,CNST_LIMB(0x7eadc4eb87f26ed3),CNST_LIMB(0xa18b05f490083)), + P(6521,CNST_LIMB(0x76c13a0ff04c00c9),CNST_LIMB(0xa0ccc4c28fc31)), + P(6529,CNST_LIMB(0xcbf800504d2a2681),CNST_LIMB(0xa09a544d01ffe)), + P(6547,CNST_LIMB(0x731dada6c4fec9b),CNST_LIMB(0xa0294aa53e9a2)), + P(6551,CNST_LIMB(0xbcb52a664e63f627),CNST_LIMB(0xa01041a6aaed5)), + P(6553,CNST_LIMB(0xf1f9abda071c2aa9),CNST_LIMB(0xa003c01680870)), + P(6563,CNST_LIMB(0xf262ffa620ffe20b),CNST_LIMB(0x9fc5558a971c8)), + P(6569,CNST_LIMB(0x93774a3d57199a99),CNST_LIMB(0x9f9ff9c3c03e5)), + P(6571,CNST_LIMB(0xfb3541cd467a1903),CNST_LIMB(0x9f9389b864ab9)), + P(6577,CNST_LIMB(0x6828cab6b4fe8f51),CNST_LIMB(0x9f6e4534bdca8)), + P(6581,CNST_LIMB(0x12ac03e3d624cc9d),CNST_LIMB(0x9f557687235c2)), + P(6599,CNST_LIMB(0x6363bd1e9bb7d7f7),CNST_LIMB(0x9ee633c0391ab)), + P(6607,CNST_LIMB(0x334cfd676a484d2f),CNST_LIMB(0x9eb4f28e0bb39)), + P(6619,CNST_LIMB(0xd511acd86f143a53),CNST_LIMB(0x9e6b49e92e4bb)), + P(6637,CNST_LIMB(0x73fc2490e0062be5),CNST_LIMB(0x9dfd4ccbd0045)), + P(6653,CNST_LIMB(0x10780dda36b78b55),CNST_LIMB(0x9d9c0828536c1)), + P(6659,CNST_LIMB(0xabf601274064e0ab),CNST_LIMB(0x9d77ad449f777)), + P(6661,CNST_LIMB(0x3ef3e4ca27e4a2cd),CNST_LIMB(0x9d6b92b28ee48)), + P(6673,CNST_LIMB(0x9216a26e690a16f1),CNST_LIMB(0x9d231a476ed51)), + P(6679,CNST_LIMB(0xbae4849e6034bda7),CNST_LIMB(0x9cfef711bf120)), + P(6689,CNST_LIMB(0xf943a0520e01e9e1),CNST_LIMB(0x9cc2e1448b765)), + P(6691,CNST_LIMB(0x7c89958f48f6658b),CNST_LIMB(0x9cb6e26cbc64d)), + P(6701,CNST_LIMB(0xe67128750e0545a5),CNST_LIMB(0x9c7b03b4a9c67)), + P(6703,CNST_LIMB(0xc6c9e1d414516ccf),CNST_LIMB(0x9c6f0fd980ab1)), + P(6709,CNST_LIMB(0x805307f996e9e81d),CNST_LIMB(0x9c4b3f3a30c3f)), + P(6719,CNST_LIMB(0x3eddd2cff46ad5bf),CNST_LIMB(0x9c0fb29436687)), + P(6733,CNST_LIMB(0x35582c1aeb5aae85),CNST_LIMB(0x9bbca025b7aec)), + P(6737,CNST_LIMB(0x4973c88573ef6eb1),CNST_LIMB(0x9ba4f4421e52c)), + P(6761,CNST_LIMB(0x3063f627c1e715d9),CNST_LIMB(0x9b1783809ff03)), + P(6763,CNST_LIMB(0x711ad679a8dcc243),CNST_LIMB(0x9b0bc5b4d2eac)), + P(6779,CNST_LIMB(0x51c224a17a3db4b3),CNST_LIMB(0x9aae172fd8b9c)), + P(6781,CNST_LIMB(0x612325ca50ddaed5),CNST_LIMB(0x9aa26954607ed)), + P(6791,CNST_LIMB(0x9929a7b6b7958b37),CNST_LIMB(0x9a681e758a022)), + P(6793,CNST_LIMB(0xa78d222e5a857bb9),CNST_LIMB(0x9a5c7b284942e)), + P(6803,CNST_LIMB(0x3ad0ffe3198d139b),CNST_LIMB(0x9a2264ecc5558)), + P(6823,CNST_LIMB(0x8b4659ac547ed17),CNST_LIMB(0x99aebb39be56f)), + P(6827,CNST_LIMB(0x1752e8904aff1003),CNST_LIMB(0x9997ae1a9faac)), + P(6829,CNST_LIMB(0x60745c37ee4e5925),CNST_LIMB(0x998c2a22b6900)), + P(6833,CNST_LIMB(0x29e2da1f6557ee51),CNST_LIMB(0x997527603f8a8)), + P(6841,CNST_LIMB(0x80d78c24ac49cb89),CNST_LIMB(0x99473685e4d50)), + P(6857,CNST_LIMB(0xc56c3b495c8d1f79),CNST_LIMB(0x98eba72512a13)), + P(6863,CNST_LIMB(0xcf5bdf9f5088ac2f),CNST_LIMB(0x98c96d8dee9e1)), + P(6869,CNST_LIMB(0x8a44800e4fae4e7d),CNST_LIMB(0x98a743453554e)), + P(6871,CNST_LIMB(0xdd76384277e578e7),CNST_LIMB(0x989be33c9e6bd)), + P(6883,CNST_LIMB(0x20b1562d2703facb),CNST_LIMB(0x9857c692e9a59)), + P(6899,CNST_LIMB(0xef56caf96e9d8e3b),CNST_LIMB(0x97fd540c05c9e)), + P(6907,CNST_LIMB(0xf54061416aede033),CNST_LIMB(0x97d04302ed944)), + P(6911,CNST_LIMB(0xe0bc78c21a26e4ff),CNST_LIMB(0x97b9c48289935)), + P(6917,CNST_LIMB(0x524f92731a179cd),CNST_LIMB(0x9798133ece717)), + P(6947,CNST_LIMB(0x5d3b4ad7deafec8b),CNST_LIMB(0x96f07c683689e)), + P(6949,CNST_LIMB(0x508828f744da88ad),CNST_LIMB(0x96e55d6393fc5)), + P(6959,CNST_LIMB(0x6e82014031710bcf),CNST_LIMB(0x96addad861696)), + P(6961,CNST_LIMB(0xadf3b77a22595dd1),CNST_LIMB(0x96a2c5a2cf0cf)), + P(6967,CNST_LIMB(0xd8f0c03f7ea8a87),CNST_LIMB(0x96818fc825eba)), + P(6971,CNST_LIMB(0x2c49e3483c3a05f3),CNST_LIMB(0x966b74027f48a)), + P(6977,CNST_LIMB(0xccecbc98c91274c1),CNST_LIMB(0x964a56850b8ed)), + P(6983,CNST_LIMB(0x273a08941bb71e77),CNST_LIMB(0x962947990eb36)), + P(6991,CNST_LIMB(0xdead5a1e3f341baf),CNST_LIMB(0x95fd4a4c885e0)), + P(6997,CNST_LIMB(0x83eee092593309fd),CNST_LIMB(0x95dc5d3954fde)), + P(7001,CNST_LIMB(0x4af5f1bd3ae87ce9),CNST_LIMB(0x95c671ddfe516)), + P(7013,CNST_LIMB(0x4ca85ad2301c9e6d),CNST_LIMB(0x9584d6340ddf1)), + P(7019,CNST_LIMB(0x1b19592cd31a3943),CNST_LIMB(0x95641de84afcc)), + P(7027,CNST_LIMB(0x3e7aa05e6dcd81bb),CNST_LIMB(0x953893c386521)), + P(7039,CNST_LIMB(0x86336cecb02ba47f),CNST_LIMB(0x94f7740d87794)), + P(7043,CNST_LIMB(0xa96b30d0c8a44b2b),CNST_LIMB(0x94e1cb70c9ce0)), + P(7057,CNST_LIMB(0xb7c63fa0cfca0571),CNST_LIMB(0x94962ecbcc7ce)), + P(7069,CNST_LIMB(0x8eaf59b405a642b5),CNST_LIMB(0x94559c69059cf)), + P(7079,CNST_LIMB(0xdf29e9cbb536dc17),CNST_LIMB(0x941ff7e640716)), + P(7103,CNST_LIMB(0xed14132c82c1d43f),CNST_LIMB(0x939fd7a24b099)), + P(7109,CNST_LIMB(0xaf68778e34caab0d),CNST_LIMB(0x937ff22c014bd)), + P(7121,CNST_LIMB(0xa4f04a3368941d31),CNST_LIMB(0x934050872c09e)), + P(7127,CNST_LIMB(0xe9960969357c07e7),CNST_LIMB(0x93209446d56f6)), + P(7129,CNST_LIMB(0xeb47b62b7360b469),CNST_LIMB(0x9316033b5bd22)), + P(7151,CNST_LIMB(0x64c653d779ae730f),CNST_LIMB(0x92a22b9a79374)), + P(7159,CNST_LIMB(0x479702d3319915c7),CNST_LIMB(0x927838edba206)), + P(7177,CNST_LIMB(0xef3c3eebc6803239),CNST_LIMB(0x921a2e7112833)), + P(7187,CNST_LIMB(0x93807b1a2e3c0e1b),CNST_LIMB(0x91e623d5660d0)), + P(7193,CNST_LIMB(0x8167e33e3f478029),CNST_LIMB(0x91c6fc0cab8b6)), + P(7207,CNST_LIMB(0x60cb76e38c339397),CNST_LIMB(0x917e7d88028eb)), + P(7211,CNST_LIMB(0xae34788ffe4bc283),CNST_LIMB(0x9169d455585cd)), + P(7213,CNST_LIMB(0x4b6246a0c6c093a5),CNST_LIMB(0x915f81ef2d529)), + P(7219,CNST_LIMB(0x872e594b12b03efb),CNST_LIMB(0x9140938595d3a)), + P(7229,CNST_LIMB(0xbc0ae83ce9045b15),CNST_LIMB(0x910d2360a450e)), + P(7237,CNST_LIMB(0xad30a3917e0968d),CNST_LIMB(0x90e417104eabd)), + P(7243,CNST_LIMB(0x124ef5a4e1c7cd63),CNST_LIMB(0x90c55d0fdea28)), + P(7247,CNST_LIMB(0x5b98fe0e9fe17aaf),CNST_LIMB(0x90b0e84c04f20)), + P(7253,CNST_LIMB(0x414306cfe45400fd),CNST_LIMB(0x909243fac6b70)), + P(7283,CNST_LIMB(0xa06d1b4fd391e8bb),CNST_LIMB(0x8ff9d0440d137)), + P(7297,CNST_LIMB(0x11939803a60c2381),CNST_LIMB(0x8fb3192789d73)), + P(7307,CNST_LIMB(0x668c11cc37ea6b23),CNST_LIMB(0x8f80c0d5031e3)), + P(7309,CNST_LIMB(0x83f9b2089dc10645),CNST_LIMB(0x8f76b3664f164)), + P(7321,CNST_LIMB(0x65dc8ae47af277a9),CNST_LIMB(0x8f3a80550abc3)), + P(7331,CNST_LIMB(0x6e2368b9c685770b),CNST_LIMB(0x8f087c50e00c4)), + P(7333,CNST_LIMB(0x3ea137aeba5a6b2d),CNST_LIMB(0x8efe7fb408cc2)), + P(7349,CNST_LIMB(0x735f57adca48f19d),CNST_LIMB(0x8eaecce5c4fd7)), + P(7351,CNST_LIMB(0x69a8de0ba1b18107),CNST_LIMB(0x8ea4dccaaec0b)), + P(7369,CNST_LIMB(0x8fb84bdf5822bd79),CNST_LIMB(0x8e4ba9fbc2ff0)), + P(7393,CNST_LIMB(0xb8fab3b748562721),CNST_LIMB(0x8dd5688a3b7d6)), + P(7411,CNST_LIMB(0xa6c658ea10a65c3b),CNST_LIMB(0x8d7d3821fd94f)), + P(7417,CNST_LIMB(0xe56381f33ab5e549),CNST_LIMB(0x8d5feb03c31d7)), + P(7433,CNST_LIMB(0xe3c224da14988139),CNST_LIMB(0x8d12033cc9d30)), + P(7451,CNST_LIMB(0x438c253e6d99f513),CNST_LIMB(0x8cbac4dec6a82)), + P(7457,CNST_LIMB(0xc1b99f8841a3a6e1),CNST_LIMB(0x8c9dc80ab604b)), + P(7459,CNST_LIMB(0x63fa18c79c54fa8b),CNST_LIMB(0x8c942115dcc96)), + P(7477,CNST_LIMB(0xe7f6f609619d0d1d),CNST_LIMB(0x8c3d7df67b539)), + P(7481,CNST_LIMB(0x7b39ef3b70afc109),CNST_LIMB(0x8c2a4bc35cb3b)), + P(7487,CNST_LIMB(0x73922c61ca7452bf),CNST_LIMB(0x8c0d8a4f1f264)), + P(7489,CNST_LIMB(0x28d96828332372c1),CNST_LIMB(0x8c03f71cbf906)), + P(7499,CNST_LIMB(0x6b6e92968c4e8463),CNST_LIMB(0x8bd42abd9a107)), + P(7507,CNST_LIMB(0x571861f084962edb),CNST_LIMB(0x8bae051d7f6ff)), + P(7517,CNST_LIMB(0xd935c64f140f1ef5),CNST_LIMB(0x8b7e735068135)), + P(7523,CNST_LIMB(0x96459f8fd72a4c4b),CNST_LIMB(0x8b61f82c5fb08)), + P(7529,CNST_LIMB(0x410ba9a2a18242d9),CNST_LIMB(0x8b4588a74a05a)), + P(7537,CNST_LIMB(0xcf90979f89870391),CNST_LIMB(0x8b1fb0a7ed403)), + P(7541,CNST_LIMB(0x10f94ff26bc00add),CNST_LIMB(0x8b0ccc5d8f5c8)), + P(7547,CNST_LIMB(0xa6619fbb9da139b3),CNST_LIMB(0x8af07f8ac5146)), + P(7549,CNST_LIMB(0x765a23334efb03d5),CNST_LIMB(0x8ae71328ffd49)), + P(7559,CNST_LIMB(0x6f2f613b5e631837),CNST_LIMB(0x8ab8086624822)), + P(7561,CNST_LIMB(0x666b99bfbcd368b9),CNST_LIMB(0x8aaea3ab5ae89)), + P(7573,CNST_LIMB(0x922b78eb01ed45bd),CNST_LIMB(0x8a7661f7020fe)), + P(7577,CNST_LIMB(0x7079a199c31de6a9),CNST_LIMB(0x8a63ab88aa8dd)), + P(7583,CNST_LIMB(0xa181abcda167be5f),CNST_LIMB(0x8a47a35d020f3)), + P(7589,CNST_LIMB(0x2f6dbbcab3a9822d),CNST_LIMB(0x8a2ba68a3cebf)), + P(7591,CNST_LIMB(0xc5a83ff0e43eba17),CNST_LIMB(0x8a2254c852497)), + P(7603,CNST_LIMB(0x28c68613dda7d97b),CNST_LIMB(0x89ea849898bb3)), + P(7607,CNST_LIMB(0x5cf33ed49efa5007),CNST_LIMB(0x89d7f3e285109)), + P(7621,CNST_LIMB(0x9125fdead661590d),CNST_LIMB(0x899720af36739)), + P(7639,CNST_LIMB(0xaee67f478c7325e7),CNST_LIMB(0x89442160d11dc)), + P(7643,CNST_LIMB(0x735b1274a0e89653),CNST_LIMB(0x8931bd5875a22)), + P(7649,CNST_LIMB(0x733b56eae1a4e621),CNST_LIMB(0x891630877aedf)), + P(7669,CNST_LIMB(0x1944ffb316ffe65d),CNST_LIMB(0x88baaad83e38f)), + P(7673,CNST_LIMB(0xf26bc3cfd2a01449),CNST_LIMB(0x88a86b9090aa4)), + P(7681,CNST_LIMB(0xb5827ba68b83e201),CNST_LIMB(0x8883fb99bf244)), + P(7687,CNST_LIMB(0xac139507e48eefb7),CNST_LIMB(0x8868b45e727ee)), + P(7691,CNST_LIMB(0xeb7676b25834fda3),CNST_LIMB(0x88568aef30d47)), + P(7699,CNST_LIMB(0xad898f4763da5c1b),CNST_LIMB(0x8832468f0bcdd)), + P(7703,CNST_LIMB(0xea906f224398f9a7),CNST_LIMB(0x88202b9a4df76)), + P(7717,CNST_LIMB(0xa8aff3caca28cdad),CNST_LIMB(0x87e0f31872e9b)), + P(7723,CNST_LIMB(0x46c53aa36b19b083),CNST_LIMB(0x87c5ecd731f42)), + P(7727,CNST_LIMB(0x9ada32b09603e8cf),CNST_LIMB(0x87b3eea3bb388)), + P(7741,CNST_LIMB(0xd31f842ef5d8e915),CNST_LIMB(0x87751a6c67d78)), + P(7753,CNST_LIMB(0x6124af44730a33f9),CNST_LIMB(0x873f6e2f9d34a)), + P(7757,CNST_LIMB(0x828ec4c2b6e64a85),CNST_LIMB(0x872d938dcfc01)), + P(7759,CNST_LIMB(0x3d6f49df999638af),CNST_LIMB(0x8724a80151dba)), + P(7789,CNST_LIMB(0x7641460a0ea89b65),CNST_LIMB(0x869f677f6cc1a)), + P(7793,CNST_LIMB(0x97703f98fb7fe291),CNST_LIMB(0x868db701df58d)), + P(7817,CNST_LIMB(0xd343c209e3e6b7b9),CNST_LIMB(0x8623f563a7d6d)), + P(7823,CNST_LIMB(0x4e5fc01f6a41406f),CNST_LIMB(0x86099ef0c8886)), + P(7829,CNST_LIMB(0xb78a05b08aa4bcbd),CNST_LIMB(0x85ef52d38fe87)), + P(7841,CNST_LIMB(0x3434a14919d34561),CNST_LIMB(0x85bad981c7847)), + P(7853,CNST_LIMB(0xccead7dee120f525),CNST_LIMB(0x8586893de7cfc)), + P(7867,CNST_LIMB(0xe1375a2bccd87673),CNST_LIMB(0x8549b491e9efe)), + P(7873,CNST_LIMB(0xf727d51420a57141),CNST_LIMB(0x852fb3859bea4)), + P(7877,CNST_LIMB(0x2c3b68cfbcebb00d),CNST_LIMB(0x851e631fc08f8)), + P(7879,CNST_LIMB(0xda91e2f3e17542f7),CNST_LIMB(0x8515bc9cde5f1)), + P(7883,CNST_LIMB(0xb55f6100ae95d6e3),CNST_LIMB(0x850472f6185b3)), + P(7901,CNST_LIMB(0x6a0c608e0bbaa975),CNST_LIMB(0x84b6defbc166b)), + P(7907,CNST_LIMB(0xac5f2fc151c016cb),CNST_LIMB(0x849d17159854b)), + P(7919,CNST_LIMB(0xb1e5af8146e4d00f),CNST_LIMB(0x8469a54a20645)), + P(7927,CNST_LIMB(0x6e283d3b112602c7),CNST_LIMB(0x84476f9401ade)), + P(7933,CNST_LIMB(0xf9a48bcb76c96e55),CNST_LIMB(0x842dd2e2dc25d)), + P(7937,CNST_LIMB(0xa776780ca4c0e101),CNST_LIMB(0x841cc543f58cb)), +#define SMALLEST_OMITTED_PRIME 7949 +#endif +#ifdef WANT_ptab + {CNST_LIMB(0x444437fed9a2349),{CNST_LIMB(0xe00056482545e92a),5,CNST_LIMB(0x2e044fdfbae4),CNST_LIMB(0x2c8f9615733fe6),CNST_LIMB(0x15319a745d44889),CNST_LIMB(0x30314bfee31fe08),CNST_LIMB(0x213845b5eb1d02b)},0,14}, + {CNST_LIMB(0x34091fa96ffdf47b),{CNST_LIMB(0x3adc72bf62f96a49),2,CNST_LIMB(0x2fdb815a40082e14),CNST_LIMB(0xa2fb4713ee182be),CNST_LIMB(0x6691fcc7a3042b5),CNST_LIMB(0xd7baca281bd7bfe),CNST_LIMB(0x31645ad7700b6fe1)},14,10}, + {CNST_LIMB(0x3c47d8d728a77ebb),{CNST_LIMB(0xfcb9aee19f3d0ca),2,CNST_LIMB(0xee09ca35d620514),CNST_LIMB(0x25e3c1639f7dc597),CNST_LIMB(0x176f977d1145f08f),CNST_LIMB(0x4a431b566c292ba),CNST_LIMB(0x100ae9d9482d6937)},24,9}, + {CNST_LIMB(0x77ab7da9d709ea9),{CNST_LIMB(0x11d1e7012ab3aa25),5,CNST_LIMB(0x1b394f7170aed8e),CNST_LIMB(0x546efaf8f3107d0),CNST_LIMB(0x42ed2efa9db39d8),CNST_LIMB(0xcf1c08fc6f825e),CNST_LIMB(0x252dd3fc3932c60)},33,8}, + {CNST_LIMB(0x310df3e7bd4bc897),{CNST_LIMB(0x4dfeef7ace095886),2,CNST_LIMB(0xaba3c794d85150d),CNST_LIMB(0x17a7ea757afc9b41),CNST_LIMB(0x27386bf8f31e3ba7),CNST_LIMB(0x14f913784ca1b09a),CNST_LIMB(0x19a5850266378808)},41,8}, + {CNST_LIMB(0xd997f089e8af1f),{CNST_LIMB(0x2d2f79839e6b7329),8,CNST_LIMB(0x285a2dd96a188d),CNST_LIMB(0x334ffbd384a516),CNST_LIMB(0xd9f5c4d959d8c),CNST_LIMB(0x1a7b0c8f9e2a8),CNST_LIMB(0x51d4df5ea86eca)},49,7}, + {CNST_LIMB(0x2514ab8fece6d79),{CNST_LIMB(0xb9d8ba8530d526d2),6,CNST_LIMB(0x111e482834cf602),CNST_LIMB(0x2099b9b4399ea77),CNST_LIMB(0xa7e65453d2c58b),CNST_LIMB(0x1543e97a71ba902),CNST_LIMB(0x13c9258fa65ea5c)},56,7}, + {CNST_LIMB(0x690efbefde431f9),{CNST_LIMB(0x37e6fe9321e30a89),5,CNST_LIMB(0x67c69a65020950a),CNST_LIMB(0x3d4da34fd3fb29d),CNST_LIMB(0x4481530580bf270),CNST_LIMB(0x53418b541a702fb),CNST_LIMB(0x5a63ba140615695)},63,7}, + {CNST_LIMB(0xf49e199a5f2f371),{CNST_LIMB(0xbe97cf50195e4cf),4,CNST_LIMB(0xb61e665a0d0c8f0),CNST_LIMB(0x12404319392532e),CNST_LIMB(0xc11fa27489010aa),CNST_LIMB(0x9486cdb3a063f1d),CNST_LIMB(0x90fb58fe1716f29)},70,7}, + {CNST_LIMB(0x20e4ce7eee0a5edf),{CNST_LIMB(0xf216910d87cce9ec),2,CNST_LIMB(0x19be5a877db767e7),CNST_LIMB(0x14174edbad8e4db0),CNST_LIMB(0x13aa47a54ebc0ab3),CNST_LIMB(0x34e03d849eed1a0),CNST_LIMB(0x1c348c675b2b87a9)},77,7}, + {CNST_LIMB(0x3c3b299a83e166e5),{CNST_LIMB(0x1004d8385b0845e0),2,CNST_LIMB(0xf135995f07a646c),CNST_LIMB(0x39f996f3e7c62cb6),CNST_LIMB(0x10e385c8b908ec46),CNST_LIMB(0x108780c61cd93a1),CNST_LIMB(0xece590a749ce9e6)},84,7}, + {CNST_LIMB(0x7385117dabf89767),{CNST_LIMB(0x1ba83180cf48fd02),1,CNST_LIMB(0x18f5dd04a80ed132),CNST_LIMB(0x134aacf48cf374fd),CNST_LIMB(0x5f5e8ab304a603e1),CNST_LIMB(0x8196d4d84952f0b),CNST_LIMB(0x27fbce261e06981)},91,7}, + {CNST_LIMB(0x6b1dd94152d113),{CNST_LIMB(0x31e8de86cb665558),9,CNST_LIMB(0x57c2791756ffa7),CNST_LIMB(0x155d1b6359e72e),CNST_LIMB(0x26e2dd434311d6),CNST_LIMB(0x2d6624583bf57f),CNST_LIMB(0x4b3c0311592466)},98,6}, + {CNST_LIMB(0x9bed1488742f9b),{CNST_LIMB(0xa44d3b1c6d785d44),8,CNST_LIMB(0x2f0a502161e5b4),CNST_LIMB(0x9197cc3e5a5b04),CNST_LIMB(0x58ecad625341f6),CNST_LIMB(0x2c8e81222f4972),CNST_LIMB(0x1f80904334e61e)},104,6}, + {CNST_LIMB(0xd851b0362c316b),{CNST_LIMB(0x2ef5b88db4540035),8,CNST_LIMB(0xcfa22017ddb3c6),CNST_LIMB(0x213062fd865691),CNST_LIMB(0x81822846481a0d),CNST_LIMB(0x4b3f5844dfd386),CNST_LIMB(0x746b08e79bff57)},110,6}, + {CNST_LIMB(0x129e6025385b5e9),{CNST_LIMB(0xb7fd23d5247f5d33),7,CNST_LIMB(0x1283c028c9d61ad),CNST_LIMB(0x8a2496a2184268),CNST_LIMB(0x702aa9d6cae97c),CNST_LIMB(0x8700d0e7b38adb),CNST_LIMB(0x562031b42d3873)},116,6}, + {CNST_LIMB(0x1b399405df9e1d9),{CNST_LIMB(0x2ce69e058ed22408),7,CNST_LIMB(0xc43448ef95aada),CNST_LIMB(0x2a35f6f5397332),CNST_LIMB(0x18bba0a2b06f9b5),CNST_LIMB(0x1bf0769bdd0a51),CNST_LIMB(0xdaf86a9dd4f157)},122,6}, + {CNST_LIMB(0x26a9c83b1da0183),{CNST_LIMB(0xa7c312b1de2834bc),6,CNST_LIMB(0x245cdfc0d956145),CNST_LIMB(0xcfb5812fdbb80b),CNST_LIMB(0x7f9bd0fd4d9771),CNST_LIMB(0x206d41f157b339d),CNST_LIMB(0x1597d040f39bed6)},128,6}, + {CNST_LIMB(0x36518f1ed35fae9),{CNST_LIMB(0x2da0bb538e68c61b),6,CNST_LIMB(0x161b11f812f7dbd),CNST_LIMB(0x1912054119f8337),CNST_LIMB(0x28b68baf0254a33),CNST_LIMB(0x1febc2a846ec627),CNST_LIMB(0x106e286e91657ac)},134,6}, + {CNST_LIMB(0x499cea9952ffcb7),{CNST_LIMB(0xbd2398239911cb86),5,CNST_LIMB(0x2f49990f2b0b4af),CNST_LIMB(0x3efc376b6d3879a),CNST_LIMB(0x16bf595684e7cae),CNST_LIMB(0x2096f989291e15a),CNST_LIMB(0x3f877653fe30a29)},140,6}, + {CNST_LIMB(0x603dc1f0578e36b),{CNST_LIMB(0x547a4d1f60bb6de6),5,CNST_LIMB(0x35de2e91a2ab072),CNST_LIMB(0x3ae19a039d933f9),CNST_LIMB(0x49f04fa32aed515),CNST_LIMB(0x49f39ce5e69737b),CNST_LIMB(0x48e7a8d6354cb3f)},146,6}, + {CNST_LIMB(0x822f4ff1bb75c7d),{CNST_LIMB(0xf7684c1a915fd94f),4,CNST_LIMB(0x3c4551ba4cbccdd),CNST_LIMB(0x3e072857c5d22e8),CNST_LIMB(0x757d8256f24de27),CNST_LIMB(0x256d9df09b5df5c),CNST_LIMB(0x19974713584ab80)},152,6}, + {CNST_LIMB(0xacfc9fbdf683023),{CNST_LIMB(0x7ad9852da99412df),4,CNST_LIMB(0x754da5eeda3acdb),CNST_LIMB(0x91f55d002dee623),CNST_LIMB(0x96936cc5e49d5ea),CNST_LIMB(0x766649a4996390),CNST_LIMB(0xaa8c52b8eea17dd)},158,6}, + {CNST_LIMB(0xe09d410f1fe4edb),{CNST_LIMB(0x23c5744aa32cf453),4,CNST_LIMB(0x34f16cefc1e749a),CNST_LIMB(0x2668179180c1b62),CNST_LIMB(0xdb241be2f133397),CNST_LIMB(0xa7c11527a49744e),CNST_LIMB(0x67d18e0669fea5b)},164,6}, + {CNST_LIMB(0x1149424a578f0ce7),{CNST_LIMB(0xd9e7a906d91cf1db),3,CNST_LIMB(0xdfe5fef362d4b5e),CNST_LIMB(0xcf056a84b77c77c),CNST_LIMB(0x985dfab0d2bd76b),CNST_LIMB(0xf57931f6922ec07),CNST_LIMB(0x44b19bfab74d6)},170,6}, + {CNST_LIMB(0x15b025d5fd579777),{CNST_LIMB(0x79b813c3ed8f4fd2),3,CNST_LIMB(0x116e5fce1d3c7de3),CNST_LIMB(0x1468c60d0220a399),CNST_LIMB(0xf10192b1089742d),CNST_LIMB(0xeae0b108eba5be6),CNST_LIMB(0xf0e98ff5e4d57d4)},176,6}, + {CNST_LIMB(0x1a5f81f6e38d3f1d),{CNST_LIMB(0x369eab91d724ae89),3,CNST_LIMB(0x12a46e520008c7fb),CNST_LIMB(0x638a97340d45e81),CNST_LIMB(0x12b4b0c893a62d44),CNST_LIMB(0x1072dcd55e5547d0),CNST_LIMB(0x18ce18c4a086d95f)},182,6}, + {CNST_LIMB(0x23293bf9b6fe2259),{CNST_LIMB(0xd1f849a43b917c65),2,CNST_LIMB(0x9df5c2bff0d0f91),CNST_LIMB(0xff1fdef6c15b8c),CNST_LIMB(0xec1383d93946006),CNST_LIMB(0x20ce6fd4fbbb8838),CNST_LIMB(0x55871453993a979)},188,6}, + {CNST_LIMB(0x2c1eaa6645e21b17),{CNST_LIMB(0x735a473662e09835),2,CNST_LIMB(0x2366ac00a295788d),CNST_LIMB(0xf8778468c26bac6),CNST_LIMB(0x10ecc751d2724c63),CNST_LIMB(0x4882fbd9d3d43e1),CNST_LIMB(0x2de76607a7f1541)},194,6}, + {CNST_LIMB(0x3646542a1110061b),{CNST_LIMB(0x2ddf24b018173a2c),2,CNST_LIMB(0x26e6af57bbbfe794),CNST_LIMB(0x1974e8d33a8f431f),CNST_LIMB(0x34da7258db6f7b4f),CNST_LIMB(0x2af310e921f874f8),CNST_LIMB(0x3cfeed9d4afc97)},200,6}, + {CNST_LIMB(0x4125602df5b7fa0b),{CNST_LIMB(0xf6fe47f7e339f3ce),1,CNST_LIMB(0x3c8fdf761ed811df),CNST_LIMB(0x145648c8769aba41),CNST_LIMB(0x3270209c06bd9a17),CNST_LIMB(0x2c03f98e45b9dca3),CNST_LIMB(0x3341dcfe340ee93e)},206,6}, + {CNST_LIMB(0x4e06bb83aa64f48d),{CNST_LIMB(0xa3f6020ab0b7e0d3),1,CNST_LIMB(0x15ebcd7500d12259),CNST_LIMB(0x786bf28f0081f92),CNST_LIMB(0x15d832d09f03b587),CNST_LIMB(0xaa3e94d54c2a575),CNST_LIMB(0x471850a042d21386)},212,6}, + {CNST_LIMB(0x6953db39a8298d8b),{CNST_LIMB(0x371b0bbe24632f20),1,CNST_LIMB(0x2d58498caface4ea),CNST_LIMB(0x557c399022219340),CNST_LIMB(0x2cb32a1a8fdd68c2),CNST_LIMB(0x122684249d42b9a9),CNST_LIMB(0x13c80507e77a929c)},218,6}, + {CNST_LIMB(0x15fafabe1c1777),{CNST_LIMB(0x74b22475baab0cce),11,CNST_LIMB(0xc763842e2c34d),CNST_LIMB(0x77d3f710b457b),CNST_LIMB(0x155a43f5525196),CNST_LIMB(0x148e30e0a5dee3),CNST_LIMB(0x13aa97836b8150)},224,5}, + {CNST_LIMB(0x18552ab4f8303b),{CNST_LIMB(0x50aaa1ed4d926e62),11,CNST_LIMB(0x815be492ca359),CNST_LIMB(0x1b55fe26d36ad),CNST_LIMB(0x113a54ceb7846),CNST_LIMB(0x1688511dfe47f),CNST_LIMB(0x66ccabff6c6c8)},229,5}, + {CNST_LIMB(0x1a99c2502dda5f),{CNST_LIMB(0x33f675a22ebecef5),11,CNST_LIMB(0x12ab7e96d807ff),CNST_LIMB(0x1d3db891dce3b),CNST_LIMB(0x19511de2e3095c),CNST_LIMB(0x2741e555a0bff),CNST_LIMB(0x51c7d31a19281)},234,5}, + {CNST_LIMB(0x1ebf9e78cd7ecb),{CNST_LIMB(0xa6b5da36fa2470c),11,CNST_LIMB(0xaebd869698c2f),CNST_LIMB(0x18e178fc70e26a),CNST_LIMB(0x64439ec9707b5),CNST_LIMB(0x116d1f70d29f20),CNST_LIMB(0xeea2317a9a585)},239,5}, + {CNST_LIMB(0x2214c7d5d9ce07),{CNST_LIMB(0xe0bc0f6215d26cf9),10,CNST_LIMB(0x1ffbac72c32f72),CNST_LIMB(0x1447f31b055129),CNST_LIMB(0x122d28bd754f9a),CNST_LIMB(0x106685d95b6d85),CNST_LIMB(0x18c9fdf391bdff)},244,5}, + {CNST_LIMB(0x25e2755d49ffa7),{CNST_LIMB(0xb078a0cae16506b6),10,CNST_LIMB(0x218554ef385919),CNST_LIMB(0xe00c975692d8e),CNST_LIMB(0x1afd2511d2f776),CNST_LIMB(0x108b0b031673f7),CNST_LIMB(0x8d919ed067cf0)},249,5}, + {CNST_LIMB(0x2925e3d5425d41),{CNST_LIMB(0x8e2c20d6f8f795ce),10,CNST_LIMB(0x1c5f29cb4c13c8),CNST_LIMB(0x15e11f6e5f634),CNST_LIMB(0xb32166d7982b3),CNST_LIMB(0xa636cf5c4f642),CNST_LIMB(0x28f997d81938bc)},254,5}, + {CNST_LIMB(0x2f39e99d11c26d),{CNST_LIMB(0x5aed08e710697213),10,CNST_LIMB(0x213b4a00c79b71),CNST_LIMB(0x1bd2737e294111),CNST_LIMB(0xd01c8aaaae314),CNST_LIMB(0xb00f1e27ed99e),CNST_LIMB(0x1d21748adab7e4)},259,5}, + {CNST_LIMB(0x3502a3ce62a769),{CNST_LIMB(0x35126ab40383fc5c),10,CNST_LIMB(0xf411f8bafb90c),CNST_LIMB(0x1fa38c975e6347),CNST_LIMB(0xf4058b043df4e),CNST_LIMB(0x2af2733656b159),CNST_LIMB(0x196e94f446c597)},264,5}, + {CNST_LIMB(0x3b357b23b014b1),{CNST_LIMB(0x14b711563eba7d77),10,CNST_LIMB(0x32f1ffd1469b4e),CNST_LIMB(0x197f48859c01a3),CNST_LIMB(0x29509dc5352d40),CNST_LIMB(0x335e5c9ef5d7fe),CNST_LIMB(0x284e1a5376a683)},269,5}, + {CNST_LIMB(0x420d06773114d3),{CNST_LIMB(0xf01a36d7bbf66dfc),9,CNST_LIMB(0xd86f221cf4e60),CNST_LIMB(0x728955d2f4a8d),CNST_LIMB(0x1a631ed35adca5),CNST_LIMB(0x2d592810a2cd39),CNST_LIMB(0x1215b15f856f68)},274,5}, + {CNST_LIMB(0x4c19f733c90d09),{CNST_LIMB(0xae954f9b28df48d8),9,CNST_LIMB(0xcab96d4cf28bb),CNST_LIMB(0x42b5fc3fd6e7ec),CNST_LIMB(0x2b7f897adc30de),CNST_LIMB(0x1a97bb06e110c0),CNST_LIMB(0x304db431256118)},279,5}, + {CNST_LIMB(0x52f224bf890ffd),{CNST_LIMB(0x8b0d84b8653cb09f),9,CNST_LIMB(0x8c298ef08a942),CNST_LIMB(0x2999ac4ebb9e26),CNST_LIMB(0x3dd9eb9ca2c026),CNST_LIMB(0x43401c4563f790),CNST_LIMB(0x38d5e8bf6d2c89)},284,5}, + {CNST_LIMB(0x5bf703dda941b1),{CNST_LIMB(0x644f51d4add132a4),9,CNST_LIMB(0x38fd3f81414bb8),CNST_LIMB(0x20049119d93b7c),CNST_LIMB(0x4e479d97844206),CNST_LIMB(0x294a3066f3b775),CNST_LIMB(0x1c21bda84cf2fc)},289,5}, + {CNST_LIMB(0x68cf321fe6202f),{CNST_LIMB(0x38a4d27caeef8e91),9,CNST_LIMB(0x1e26a01f2b6d41),CNST_LIMB(0x9e9e8993d282b),CNST_LIMB(0x417ad2819cd4fb),CNST_LIMB(0x627fb183ab0b1a),CNST_LIMB(0x278b9f029564e7)},294,5}, + {CNST_LIMB(0x71dad4e06cde9b),{CNST_LIMB(0x1fce1dcd4eb47a27),9,CNST_LIMB(0x457bdbeb7801db),CNST_LIMB(0x1f2b3df5db8f09),CNST_LIMB(0x2149ca25813ef0),CNST_LIMB(0x17d20c710e4487),CNST_LIMB(0x40ceb8ee4ca73d)},299,5}, + {CNST_LIMB(0x7b5e9ca091c63d),{CNST_LIMB(0x99bc23041414782),9,CNST_LIMB(0x1ac11ef1a1cf79),CNST_LIMB(0x313f0652fefffc),CNST_LIMB(0x12f34ea4e7a5db),CNST_LIMB(0x2aa2b3b3300bfd),CNST_LIMB(0x3245caffd0690c)},304,5}, + {CNST_LIMB(0x892f2017af4a77),{CNST_LIMB(0xddb91a666e887a07),8,CNST_LIMB(0x633133de624045),CNST_LIMB(0x7f207860875935),CNST_LIMB(0x702aff29ff7777),CNST_LIMB(0x1cc53fa2f53db9),CNST_LIMB(0x2c5ff88b6e27ee)},309,5}, + {CNST_LIMB(0x93efab3d98e265),{CNST_LIMB(0xbb00736076c6c8fc),8,CNST_LIMB(0x42ac68703b39),CNST_LIMB(0x4d4d015d5d1bd7),CNST_LIMB(0x85c801afb0f411),CNST_LIMB(0x4579d8022d0a69),CNST_LIMB(0x32ea2e520e3d23)},314,5}, + {CNST_LIMB(0x9fd1e9a289b8f9),{CNST_LIMB(0x9a0fb77008192e78),8,CNST_LIMB(0x9cfd1af6dc136),CNST_LIMB(0x23a28bc352c87c),CNST_LIMB(0x582383446e53c2),CNST_LIMB(0x3d52e0695b07e4),CNST_LIMB(0x83c6fc0e7cfd23)},319,5}, + {CNST_LIMB(0xb3ffc82a3b00bb),{CNST_LIMB(0x6c17325c7676de1f),8,CNST_LIMB(0x104f63f41af61c),CNST_LIMB(0x838ff92da5d267),CNST_LIMB(0xb37001a22f0194),CNST_LIMB(0x4487295b668b16),CNST_LIMB(0xa06ce4ed65729d)},324,5}, + {CNST_LIMB(0xc78aab3260ed67),{CNST_LIMB(0x486ec1d048657b5d),8,CNST_LIMB(0x5654a773cfd408),CNST_LIMB(0xb3f20a79edde43),CNST_LIMB(0xaebbd1a69724dd),CNST_LIMB(0x81191f0503a9),CNST_LIMB(0x3b54fc6e1ed034)},329,5}, + {CNST_LIMB(0xd8b06a4b9eddc9),{CNST_LIMB(0x2e7147c081441aeb),8,CNST_LIMB(0x5fe29aca965ce2),CNST_LIMB(0x9cb19caad665ca),CNST_LIMB(0x147b04c65844fd),CNST_LIMB(0x7a1c878be8db45),CNST_LIMB(0x8f4f4d51c80dfd)},334,5}, + {CNST_LIMB(0xe8f35bfe49ae4b),{CNST_LIMB(0x19547b44fa632b82),8,CNST_LIMB(0x4ce005e11fafad),CNST_LIMB(0x57f2d94de4ea00),CNST_LIMB(0xb885b9e976e473),CNST_LIMB(0x1eb25c197e9b39),CNST_LIMB(0xe2c45221f5cdb7)},339,5}, + {CNST_LIMB(0xfcff7f19788a27),{CNST_LIMB(0x3099f4bf7423272),8,CNST_LIMB(0x982693b0c3a8b),CNST_LIMB(0xa6eee9dce0fc63),CNST_LIMB(0xf1290f2b74223c),CNST_LIMB(0x36c85e11826e0b),CNST_LIMB(0xbe15668a4d3771)},344,5}, + {CNST_LIMB(0x10f681c21a80325),{CNST_LIMB(0xe2ef902951d2322d),7,CNST_LIMB(0x7efd8450d50a2b),CNST_LIMB(0x37c115b60abfde),CNST_LIMB(0x4a31517b3a2c0),CNST_LIMB(0x8ee426b2c25e26),CNST_LIMB(0xaf5e09c0582f8)},349,5}, + {CNST_LIMB(0x11ffa8ecf7814fb),{CNST_LIMB(0xc7250b86192832ab),7,CNST_LIMB(0xa4d35e0885656f),CNST_LIMB(0x6d14e9be5101ec),CNST_LIMB(0x93b36726a244a),CNST_LIMB(0xb56f38bde55186),CNST_LIMB(0x11443988cbd610f)},354,5}, + {CNST_LIMB(0x139b8ddf439b133),{CNST_LIMB(0xa1cbe52ffcdca969),7,CNST_LIMB(0x119cba991200690),CNST_LIMB(0xa8a1be12145159),CNST_LIMB(0x49831f7f1eb091),CNST_LIMB(0x5fe3a0bd210422),CNST_LIMB(0x11b90612ebf719f)},359,5}, + {CNST_LIMB(0x15b90aaef040351),{CNST_LIMB(0x791d6da971f79fb1),7,CNST_LIMB(0xc1c278790d9084),CNST_LIMB(0xa6bc771172ca70),CNST_LIMB(0x1219044d36b161b),CNST_LIMB(0x9363a00d9d3f5f),CNST_LIMB(0x14079ec2a37ea93)},364,5}, + {CNST_LIMB(0x17d664f86c88bd3),{CNST_LIMB(0x57a9176de3f40918),7,CNST_LIMB(0x13ca8e0f80a9a0f),CNST_LIMB(0xfc1ecc66c0c93b),CNST_LIMB(0x15be6192051cb1a),CNST_LIMB(0x136f263b7a50fcc),CNST_LIMB(0x3820db8623a7)},369,5}, + {CNST_LIMB(0x1a44cc5ef4c16b5),{CNST_LIMB(0x37da80020a7d1f74),7,CNST_LIMB(0x18584281cee4069),CNST_LIMB(0x178a63d22596ba9),CNST_LIMB(0x6739c7c5ac4f2d),CNST_LIMB(0x14c57a38e4d612a),CNST_LIMB(0x13d2e7fd35623ae)},374,5}, + {CNST_LIMB(0x1ca80b29773de79),{CNST_LIMB(0x1dde9f723a4f55dc),7,CNST_LIMB(0x1ac9ceffdba98e2),CNST_LIMB(0xf4618a5f0fdaa9),CNST_LIMB(0x17b96b4ded53ebb),CNST_LIMB(0x7faf749bdd9cb1),CNST_LIMB(0xfa9d50111fc549)},379,5}, + {CNST_LIMB(0x1e7b019a7fa8931),{CNST_LIMB(0xcc3160c520cdb96),7,CNST_LIMB(0xb9d29212dc305a),CNST_LIMB(0x91586fa7d2facc),CNST_LIMB(0x2638c4c9135f19),CNST_LIMB(0x1c315565816b84a),CNST_LIMB(0xa92e9c918ad70f)},384,5}, + {CNST_LIMB(0x1fd932c2a6c3463),{CNST_LIMB(0x137e41a0c0b8d4f),7,CNST_LIMB(0x13669eac9e5ce80),CNST_LIMB(0x94dc55b30276b5),CNST_LIMB(0x1c52a400cc7dae6),CNST_LIMB(0x1cd876c8023e81b),CNST_LIMB(0x8e06dbbb7e4c2d)},389,5}, + {CNST_LIMB(0x2175e8bd7050e79),{CNST_LIMB(0xe9a698d03a5e604b),6,CNST_LIMB(0xdcf15b87971a56),CNST_LIMB(0x2e9e439e7517fb),CNST_LIMB(0x85bbfca7ac6da9),CNST_LIMB(0x500c9508abde31),CNST_LIMB(0x1c9d7aa292a48b0)},394,5}, + {CNST_LIMB(0x24033b205fe4527),{CNST_LIMB(0xc6f39cee1695e79a),6,CNST_LIMB(0x1a92e6b5ac379c9),CNST_LIMB(0x1f1b86c0e7f8d15),CNST_LIMB(0x1e362d27d79fda9),CNST_LIMB(0x4dcd13ebf2a00a),CNST_LIMB(0x408b8bd354f1b4)},399,5}, + {CNST_LIMB(0x265d2eb09cdc073),{CNST_LIMB(0xab112e468a91ceb0),6,CNST_LIMB(0x1d6aaadf0ce5062),CNST_LIMB(0x8cb5be41003782),CNST_LIMB(0x52b9980c0c4bec),CNST_LIMB(0x2228f2e6cbe8667),CNST_LIMB(0xca6f7400df044e)},404,5}, + {CNST_LIMB(0x2953a0e65ca6a1d),{CNST_LIMB(0x8c7372d9ab5569c1),6,CNST_LIMB(0x4a8c6ea2b8f6c9),CNST_LIMB(0x3588f2393801ce),CNST_LIMB(0x1fce38ab648e336),CNST_LIMB(0x89544c1c4d5e80),CNST_LIMB(0x6e5d409692ed37)},409,5}, + {CNST_LIMB(0x2c67f25a6bc9c63),{CNST_LIMB(0x70f57416f0cce89e),6,CNST_LIMB(0xaa4e781437cc6c),CNST_LIMB(0x1c38f9d456ca8d),CNST_LIMB(0x2682eae3a0afadb),CNST_LIMB(0x2b54835e8a4f4ca),CNST_LIMB(0x1ff894f600fa94f)},414,5}, + {CNST_LIMB(0x2fdd1a7524ae76d),{CNST_LIMB(0x564e31abce2eba47),6,CNST_LIMB(0x1b96371ad2128cf),CNST_LIMB(0x35309a6895ab0d),CNST_LIMB(0x14de5531da96df1),CNST_LIMB(0x3a924ccc42ac90),CNST_LIMB(0x315a6b9b99a595)},419,5}, + {CNST_LIMB(0x33770e6e18aeb53),{CNST_LIMB(0x3e5a14fd0434a100),6,CNST_LIMB(0x1e428c066216163),CNST_LIMB(0x93d03854bffefa),CNST_LIMB(0x77e62b6df8d4a1),CNST_LIMB(0x8a8b138bb2ed69),CNST_LIMB(0x292d249664af8db)},424,5}, + {CNST_LIMB(0x379c7dff6334d3b),{CNST_LIMB(0x269dcc0c8d56e875),6,CNST_LIMB(0x2460122cb5efa2d),CNST_LIMB(0x28e51e3c7265f2e),CNST_LIMB(0x1efacb51926e686),CNST_LIMB(0xfc8248ae79bd5f),CNST_LIMB(0x2f3b91b1fe1f65)},429,5}, + {CNST_LIMB(0x3b82f15f7249c49),{CNST_LIMB(0x134ee332d51f0306),6,CNST_LIMB(0x3137e2a5a467c9c),CNST_LIMB(0x79d488798b4960),CNST_LIMB(0xb436578d1069bb),CNST_LIMB(0x10ad84e585582d0),CNST_LIMB(0x3215616c9b153bf)},434,5}, + {CNST_LIMB(0x3fff4dd17ad4ff9),{CNST_LIMB(0x2c8c1d50d30af),6,CNST_LIMB(0x2c8ba14ac01c0),CNST_LIMB(0x2bd06852b51e327),CNST_LIMB(0x30714e5452d2c1),CNST_LIMB(0x327ff42efc6d9c),CNST_LIMB(0x244bb5001864710)},439,5}, + {CNST_LIMB(0x465670cc294b181),{CNST_LIMB(0xd1ddf947b9d55be0),5,CNST_LIMB(0x106a71bea4fc8c6),CNST_LIMB(0xa255b26c45d27f),CNST_LIMB(0x460d26a6240e466),CNST_LIMB(0x1dda425d1868b60),CNST_LIMB(0x3d6eff8580e97e1)},444,5}, + {CNST_LIMB(0x4aaaab2fe3fee47),{CNST_LIMB(0xb6db6aa7d3a37a63),5,CNST_LIMB(0x3fffe3e5e83bd06),CNST_LIMB(0xa8a65f30809160),CNST_LIMB(0xbfd8fef4142370),CNST_LIMB(0x358c77f78c2a4d0),CNST_LIMB(0x3a89f0ee6796b95)},449,5}, + {CNST_LIMB(0x4f8bbff17c95ef7),{CNST_LIMB(0x9bf032ee57751395),5,CNST_LIMB(0x2728c2e42e214cb),CNST_LIMB(0x37fb2686e89761e),CNST_LIMB(0x4a264029edea029),CNST_LIMB(0x1d504d3aecaaa50),CNST_LIMB(0x45b5a7b35031756)},454,5}, + {CNST_LIMB(0x553ea1ce3216691),{CNST_LIMB(0x806643148e9063ef),5,CNST_LIMB(0x441a9569bcc4d0),CNST_LIMB(0x535ae4be3f071a1),CNST_LIMB(0x545a793067e09d8),CNST_LIMB(0xd5d15c09afe8cd),CNST_LIMB(0x4534c23a01c6a96)},459,5}, + {CNST_LIMB(0x59f7c9a4fefb517),{CNST_LIMB(0x6c37fd6421ef50ed),5,CNST_LIMB(0x2f718dff2dd2af5),CNST_LIMB(0x4aea82d40c5cc72),CNST_LIMB(0x4f7cec2a6861199),CNST_LIMB(0xe868a369a42529),CNST_LIMB(0x40e610cd320b2f7)},464,5}, + {CNST_LIMB(0x5e8d3fa86f95521),{CNST_LIMB(0x5a8fc0667cc240fe),5,CNST_LIMB(0x1e464eb541eb375),CNST_LIMB(0x3892fa43db27fd5),CNST_LIMB(0x4e5c7836ddc791a),CNST_LIMB(0x36e537bed96365e),CNST_LIMB(0x4375094ddcb8820)},469,5}, + {CNST_LIMB(0x64157c62c33e31d),{CNST_LIMB(0x4767bbee2675bc54),5,CNST_LIMB(0x5ca490917e48378),CNST_LIMB(0x11867a67aa79db0),CNST_LIMB(0x6198c4cbcaf84e6),CNST_LIMB(0x4338ebe5ab25fcf),CNST_LIMB(0x11e91c53e48fd1e)},474,5}, + {CNST_LIMB(0x6ceeed4c43f4183),{CNST_LIMB(0x2cced2b1dae4601a),5,CNST_LIMB(0x4177b3fa2db8811),CNST_LIMB(0x2b3db3648dc8a5),CNST_LIMB(0x50f060794aa127),CNST_LIMB(0x4f7cdc200df8c9a),CNST_LIMB(0x4525db055625df3)},479,5}, + {CNST_LIMB(0x7287ee7e5f96919),{CNST_LIMB(0x1e1b2205d593e3a6),5,CNST_LIMB(0x576a64b8ee6a195),CNST_LIMB(0x7bd2ea513c7027),CNST_LIMB(0x17c4152c6d55daa),CNST_LIMB(0x39f7aac6f902f57),CNST_LIMB(0x14765413bf9b5ca)},484,5}, + {CNST_LIMB(0x79886d10dfa5165),{CNST_LIMB(0xd9f57c223f379ca),5,CNST_LIMB(0x5569f0d32bb81fb),CNST_LIMB(0x6f08a7fc8e770a6),CNST_LIMB(0x2c14d325ec8479f),CNST_LIMB(0x4499d22e49d3c7),CNST_LIMB(0x53f1f1eecdc8c2)},489,5}, + {CNST_LIMB(0x7e13347ac1526bf),{CNST_LIMB(0x3e8a375cf0fb774),5,CNST_LIMB(0x3d9970a7d5b2820),CNST_LIMB(0x3664c9d670bba16),CNST_LIMB(0x6ba929ee3cbcd5c),CNST_LIMB(0xd5d262e6d92452),CNST_LIMB(0x2f545142add8d05)},494,5}, + {CNST_LIMB(0x8566f0377d15459),{CNST_LIMB(0xeb44411c1363bcf4),4,CNST_LIMB(0x5defd97f5781d92),CNST_LIMB(0x16eaae98cb00189),CNST_LIMB(0x986f4f6d77c243),CNST_LIMB(0x57c736925ddfd9),CNST_LIMB(0x10a756243dbe4ca)},499,5}, + {CNST_LIMB(0x8bfc83897e6cdaf),{CNST_LIMB(0xd428ea393317b9f2),4,CNST_LIMB(0x2465196cadab32d),CNST_LIMB(0x7594e9e684d904a),CNST_LIMB(0x19cd4a75383b2d1),CNST_LIMB(0x6a0e9c23f177e64),CNST_LIMB(0x56f0f2ae36c5465)},504,5}, + {CNST_LIMB(0x94ad790245385eb),{CNST_LIMB(0xb8cae8ae9a639526),4,CNST_LIMB(0x51b43cc2b30e037),CNST_LIMB(0x4cb133bb88b3adc),CNST_LIMB(0x3ede33df9c5e3e3),CNST_LIMB(0x665226a2d290ac4),CNST_LIMB(0x33db5ce835ec6e4)},509,5}, + {CNST_LIMB(0x9c30734d93b1379),{CNST_LIMB(0xa397f073b55bde0b),4,CNST_LIMB(0x23144a1f00005b6),CNST_LIMB(0x826ad253a3ed324),CNST_LIMB(0x940ad5d52b4806c),CNST_LIMB(0x1729e9d2d022730),CNST_LIMB(0x20a978fb381a6c2)},514,5}, + {CNST_LIMB(0xa57e1fd7a44fbb9),{CNST_LIMB(0x8c0164efd39df203),4,CNST_LIMB(0x7c2d03c898866a8),CNST_LIMB(0x4037558c6f1e4eb),CNST_LIMB(0x6694cdbbb8803c7),CNST_LIMB(0x99396c89bf97452),CNST_LIMB(0x436126c1b000fab)},519,5}, + {CNST_LIMB(0xaf9b9be9c8401d1),{CNST_LIMB(0x7531f66eca55c19b),4,CNST_LIMB(0x3904fdff023d639),CNST_LIMB(0x962f9b532413fb3),CNST_LIMB(0x27ec74df2758058),CNST_LIMB(0x5836483d1e34f66),CNST_LIMB(0x8384a37fad8866d)},524,5}, + {CNST_LIMB(0xb9ba711d6e4a84f),{CNST_LIMB(0x60dc0b5cc82154b3),4,CNST_LIMB(0x9fa47788598936),CNST_LIMB(0x82bd019c1fa5a56),CNST_LIMB(0x50db17c34711736),CNST_LIMB(0x739121f55c5b75d),CNST_LIMB(0x912fe4d49b6d56)},529,5}, + {CNST_LIMB(0xc41a8a6c63a70d1),{CNST_LIMB(0x4e30c99728e3c197),4,CNST_LIMB(0xaded2f8836f2fac),CNST_LIMB(0xab84ac5c6d525d9),CNST_LIMB(0x488aa0b1f301ccb),CNST_LIMB(0x5fdf2905d976ad6),CNST_LIMB(0x5cb75a7adbb8561)},534,5}, + {CNST_LIMB(0xcd79628a71801f7),{CNST_LIMB(0x3ef33887b9ad5b44),4,CNST_LIMB(0xbffdafb9937daab),CNST_LIMB(0x8c3722255b2b8c7),CNST_LIMB(0x63cd1bbc0e9c22a),CNST_LIMB(0xbd17bc2e12ad950),CNST_LIMB(0x15e9799e0d76f1e)},539,5}, + {CNST_LIMB(0xd6f67d4726eaaf5),{CNST_LIMB(0x30df0c865cc92a96),4,CNST_LIMB(0xbb4b3b81c94fd1),CNST_LIMB(0x2a20ca76128ce99),CNST_LIMB(0x4a4022bdd8f612e),CNST_LIMB(0x3bafa50d5be5f8b),CNST_LIMB(0xb86a67f06630908)},544,5}, + {CNST_LIMB(0xe5d3b047627f8e3),{CNST_LIMB(0x1d275ac8c78303ec),4,CNST_LIMB(0xbcf14b4275878ed),CNST_LIMB(0x5ee8b82b0662dd),CNST_LIMB(0x77e3de57e11f662),CNST_LIMB(0x5ed59e5dfb5cd16),CNST_LIMB(0xbe6a6366650aef1)},549,5}, + {CNST_LIMB(0xef42ae515bfb29d),{CNST_LIMB(0x11e922af2e24e769),4,CNST_LIMB(0x1c926c98e452393),CNST_LIMB(0xd26a458c9c34765),CNST_LIMB(0x5da54b52a8aa98a),CNST_LIMB(0xa2ed4f828338df7),CNST_LIMB(0xe69ac190926521a)},554,5}, + {CNST_LIMB(0xfd32459f0b3d4bb),{CNST_LIMB(0x2d5ace688e647e9),4,CNST_LIMB(0x2cdba60f4c2b450),CNST_LIMB(0x2577b742a8ed5db),CNST_LIMB(0x144ef4109272736),CNST_LIMB(0xbe9326c4f15e1a9),CNST_LIMB(0xb96de853277fb4f)},559,5}, + {CNST_LIMB(0x10a16ef6c96a16c7),{CNST_LIMB(0xec9602538c0df011),3,CNST_LIMB(0x68a7f8a32c8aa57),CNST_LIMB(0x1445e7d17b921f3),CNST_LIMB(0x81c8debc8176f0b),CNST_LIMB(0xe3a1c5b816e4a65),CNST_LIMB(0xa52ad5bb93c9f4b)},564,5}, + {CNST_LIMB(0x117c2fec47f5e013),{CNST_LIMB(0xd48355880989be17),3,CNST_LIMB(0xb356114108dbef6),CNST_LIMB(0xe7ddeca9ba6a20c),CNST_LIMB(0xf2d7618ea8a6953),CNST_LIMB(0x412256baaec5c27),CNST_LIMB(0x1f8e16ca6e5c0d7)},569,5}, + {CNST_LIMB(0x129a8c10ae1f364b),{CNST_LIMB(0xb857af53b5b43644),3,CNST_LIMB(0xe26e327286a3e31),CNST_LIMB(0xeef9d55a9d06dbf),CNST_LIMB(0xe61febd3beb02b6),CNST_LIMB(0x10d018a00b7fd6a5),CNST_LIMB(0x32009c46e7c1314)},574,5}, + {CNST_LIMB(0x134631392d507059),{CNST_LIMB(0xa9063d94bb92a978),3,CNST_LIMB(0x56f8018b2ea4b7b),CNST_LIMB(0x1270cb710b035935),CNST_LIMB(0x11033d859716c4f9),CNST_LIMB(0xd45bebac416a68c),CNST_LIMB(0xc08fe72fc6eef84)},579,5}, + {CNST_LIMB(0x13fde7755d5fd9ed),{CNST_LIMB(0x99c48a788248a856),3,CNST_LIMB(0x1019267f9f81c8e4),CNST_LIMB(0x394e4098ea8549),CNST_LIMB(0x33c85c2a1514436),CNST_LIMB(0xa1e569d4432f4bb),CNST_LIMB(0x128bfbc862fb3c58)},584,5}, + {CNST_LIMB(0x15698c0906cc26a5),{CNST_LIMB(0x7e957ed81f600c1e),3,CNST_LIMB(0x1476fb9cb53a56e9),CNST_LIMB(0xeff15504451beab),CNST_LIMB(0xdea55fc79c32599),CNST_LIMB(0x76a982d54d956a1),CNST_LIMB(0x4d131625675abd7)},589,5}, + {CNST_LIMB(0x168a1ee80f6d92f5),{CNST_LIMB(0x6b73459d204359d1),3,CNST_LIMB(0x810ac07564aaf79),CNST_LIMB(0x874d5996e15561a),CNST_LIMB(0xb75c73837694b49),CNST_LIMB(0xd4645617d29779b),CNST_LIMB(0x12af15ef931be940)},594,5}, + {CNST_LIMB(0x17daa6de32466fbf),{CNST_LIMB(0x576bc18853c72908),3,CNST_LIMB(0x11757b52093fa28a),CNST_LIMB(0xff4c0f212559944),CNST_LIMB(0x40af9872004a0a5),CNST_LIMB(0x2b2b7c424c54c2b),CNST_LIMB(0x1a2b7130739c4c7)},599,5}, + {CNST_LIMB(0x18ea5f2dbe212911),{CNST_LIMB(0x48ca86c98010be89),3,CNST_LIMB(0x6d8483692b46556),CNST_LIMB(0x305d89220ec48d2),CNST_LIMB(0x1772200dfc1938dc),CNST_LIMB(0xded80c44ca87607),CNST_LIMB(0xb498b0490dc55dd)},604,5}, + {CNST_LIMB(0x1a0fa1ef47787d1b),{CNST_LIMB(0x3a56b20c2d70e08a),3,CNST_LIMB(0x15734e967cc39a0d),CNST_LIMB(0x8fc968191dc0fd3),CNST_LIMB(0x1680d35f18721f8f),CNST_LIMB(0x197b4a3e18c9e8bc),CNST_LIMB(0xc0ad81d645f40c7)},609,5}, + {CNST_LIMB(0x1b673b66a023a93f),{CNST_LIMB(0x2af150ff9195ac0f),3,CNST_LIMB(0x95ee9645ebf0cc9),CNST_LIMB(0x1717202bbc3e0a78),CNST_LIMB(0x126d365df320adf6),CNST_LIMB(0x137d63165361ab0e),CNST_LIMB(0x19ca69d84cc1417c)},614,5}, + {CNST_LIMB(0x1ce34de10c258111),{CNST_LIMB(0x1b9430b6521be183),3,CNST_LIMB(0x18e590f79ed3f778),CNST_LIMB(0xbcbaeb9ec0a1624),CNST_LIMB(0x18f51ac04296ceb6),CNST_LIMB(0x161b15271d06a3e1),CNST_LIMB(0x5f0a62fb317dd86)},619,5}, + {CNST_LIMB(0x1e19674e354f4667),{CNST_LIMB(0x102a99b0acd64358),3,CNST_LIMB(0xf34c58e5585ccc8),CNST_LIMB(0x15fad9b7ef3a5cbd),CNST_LIMB(0x1874ea34e3e274f9),CNST_LIMB(0x841598977c90581),CNST_LIMB(0x1c04690158b888d)},624,5}, + {CNST_LIMB(0x1f3740adb603b24d),{CNST_LIMB(0x66e52892f80015e),3,CNST_LIMB(0x645fa924fe26d98),CNST_LIMB(0xc022a525d7f5a4f),CNST_LIMB(0x16d7e66846e5d65b),CNST_LIMB(0x10105a92c09c5aa9),CNST_LIMB(0xedddad56d23fc0e)},629,5}, + {CNST_LIMB(0x20e7b3c0e3b73671),{CNST_LIMB(0xf1eabc8c8352c9af),2,CNST_LIMB(0x19aa15b9c5fd82e9),CNST_LIMB(0x10fd7c871bd5d222),CNST_LIMB(0x4ee89a76e1259e0),CNST_LIMB(0x1280d75e6bf3c134),CNST_LIMB(0x85e103f1853c3d)},634,5}, + {CNST_LIMB(0x22b5b4fc40d4c35f),{CNST_LIMB(0xd807362226cc7e50),2,CNST_LIMB(0xd080d1a3a2ea867),CNST_LIMB(0x1f068368adc3fde1),CNST_LIMB(0x178240b1c3cf35a9),CNST_LIMB(0x1dc077b2ed00fd8c),CNST_LIMB(0x2e6e64a07f9c833)},639,5}, + {CNST_LIMB(0x23cff30e6fb8f7fd),{CNST_LIMB(0xc97f150b60a9e71b),2,CNST_LIMB(0x5505a9af1f13815),CNST_LIMB(0x22434bb477153d47),CNST_LIMB(0x87670d53a068a58),CNST_LIMB(0x21b754fa0ae7b745),CNST_LIMB(0x2182750984e9f50b)},644,5}, + {CNST_LIMB(0x266a30ee37cc7341),{CNST_LIMB(0xaa808f26b38df4ef),2,CNST_LIMB(0x1982da6ab1354c7a),CNST_LIMB(0xfda1381ca806f81),CNST_LIMB(0x1a31d30d06bd5b7b),CNST_LIMB(0xbc65e21d25000c6),CNST_LIMB(0x132d8167c6a0973b)},649,5}, + {CNST_LIMB(0x283e6bddfbebab6d),{CNST_LIMB(0x971e4733b2e0d2bf),2,CNST_LIMB(0xe8978cc1879fb72),CNST_LIMB(0x1c9e26afc4d767da),CNST_LIMB(0x1e376fcf488c8249),CNST_LIMB(0x977e63f145b0e1d),CNST_LIMB(0xe2db9891e737aa1)},654,5}, + {CNST_LIMB(0x298d29c47d06f16b),{CNST_LIMB(0x8a4e7f92da9842e7),2,CNST_LIMB(0x6b1056511d6577e),CNST_LIMB(0x592f6f3bbda49cc),CNST_LIMB(0x2692769f01fb0a5b),CNST_LIMB(0x5f3e5623e91d30d),CNST_LIMB(0x2104d5242a92b48d)},659,5}, + {CNST_LIMB(0x2afa8c16de374c13),{CNST_LIMB(0x7d364b6556c2b905),2,CNST_LIMB(0x291b438da8eb83a1),CNST_LIMB(0x14222ff3cbf7d671),CNST_LIMB(0x126ac7f90facd4d3),CNST_LIMB(0x46d452f540a8d2),CNST_LIMB(0xb0b0fc23426b0b7)},664,5}, + {CNST_LIMB(0x2c44b3413ab0dee7),{CNST_LIMB(0x721b37f337583151),2,CNST_LIMB(0x22a87fb9da8ba57d),CNST_LIMB(0x26943e2ad67b49d6),CNST_LIMB(0x1ef6cfa904bef1cd),CNST_LIMB(0x18e7d1baf5588938),CNST_LIMB(0x1ad24c5276c66d2f)},669,5}, + {CNST_LIMB(0x2e88fa7433ac7823),{CNST_LIMB(0x60141b17275393e2),2,CNST_LIMB(0x17531bbafda1a751),CNST_LIMB(0xf3ea18441a36068),CNST_LIMB(0x130110257a01259a),CNST_LIMB(0x14122cf2cde8eecc),CNST_LIMB(0x24d25acd522c56b7)},674,5}, + {CNST_LIMB(0x303fb77cc2bfe62b),{CNST_LIMB(0x539292e31ed6db25),2,CNST_LIMB(0xec16a9032408129),CNST_LIMB(0x22483ceeb16c18a3),CNST_LIMB(0x1dd1cf7128399e5a),CNST_LIMB(0x11b3d478af2cbe42),CNST_LIMB(0x2a86cb29ac9873d3)},679,5}, + {CNST_LIMB(0x32eeac8f8d221e55),{CNST_LIMB(0x41ae89b9e560d65a),2,CNST_LIMB(0x156a1323e556857),CNST_LIMB(0x865eccdcf192078),CNST_LIMB(0x29e9014382ce253e),CNST_LIMB(0x737a633527d55ef),CNST_LIMB(0xe3223c22b887658)},684,5}, + {CNST_LIMB(0x354d75b3270eaedd),{CNST_LIMB(0x336093f2bc204c55),2,CNST_LIMB(0x2aca293363c5448c),CNST_LIMB(0x17160152eb4aa39f),CNST_LIMB(0x16b50b70fa80acee),CNST_LIMB(0x2493bd25f34e1536),CNST_LIMB(0x18f710cf9496617c)},689,5}, + {CNST_LIMB(0x37b26a3f703f6027),{CNST_LIMB(0x2629d54caca5a93b),2,CNST_LIMB(0x213657023f027f64),CNST_LIMB(0x257ed9007720600c),CNST_LIMB(0xaf3dcc0f043ce98),CNST_LIMB(0x115787f3ada80173),CNST_LIMB(0x7071885da2772a7)},694,5}, + {CNST_LIMB(0x3a2d837d37f39e39),{CNST_LIMB(0x199e982941bda182),2,CNST_LIMB(0x1749f20b2031871c),CNST_LIMB(0x153d7d45eae3fbc6),CNST_LIMB(0x3035b3e81047b52f),CNST_LIMB(0x3096ed6d9a28fa5a),CNST_LIMB(0x221887c4142d7434)},699,5}, + {CNST_LIMB(0x3d6201596c85db3f),{CNST_LIMB(0xaea3e9ef4bf14aa),2,CNST_LIMB(0xa77fa9a4de89304),CNST_LIMB(0x140df851fb641569),CNST_LIMB(0x275b27f619d2cffb),CNST_LIMB(0x16df2d5134102662),CNST_LIMB(0x10ab318b9b8a8aef)},704,5}, + {CNST_LIMB(0x401080f68635f765),{CNST_LIMB(0xff7c1a4f020138fa),1,CNST_LIMB(0x3fce7d1c6d5e19d1),CNST_LIMB(0x1feb2b2abf929ebc),CNST_LIMB(0x279cb7a4291af740),CNST_LIMB(0x384bce4293f19637),CNST_LIMB(0x168a9776844c9b6f)},709,5}, + {CNST_LIMB(0x41c3dea2c7c4509b),{CNST_LIMB(0xf2421126ad7a2852),1,CNST_LIMB(0x3ab46417a8b30e2f),CNST_LIMB(0x35206295938b9c19),CNST_LIMB(0x317d8909a9980afe),CNST_LIMB(0x195b889376db752f),CNST_LIMB(0xeb8a8f47083a08e)},714,5}, + {CNST_LIMB(0x441255580dcabef7),{CNST_LIMB(0xe1601977719c2988),1,CNST_LIMB(0x33c8fff7d69fc31b),CNST_LIMB(0x3aa78ab59c61fb90),CNST_LIMB(0x3c41600b3a070fd7),CNST_LIMB(0x121266b65d774473),CNST_LIMB(0x5812c8f46959e7)},719,5}, + {CNST_LIMB(0x467e90ff075dfa77),{CNST_LIMB(0xd0d4ccbfd7fdb2ae),1,CNST_LIMB(0x2c844d02e9e6109b),CNST_LIMB(0x395a6f0c5abc0a3c),CNST_LIMB(0x30393c08245d18c3),CNST_LIMB(0xac042a1b1191d06),CNST_LIMB(0x1d0c88b0cc347eed)},724,5}, + {CNST_LIMB(0x35b7e6a52de6b),{CNST_LIMB(0x30ff8515bed6fc1f),14,CNST_LIMB(0x2f4533b937fab),CNST_LIMB(0xeb33cd2951b7),CNST_LIMB(0x28ce28b5e1739),CNST_LIMB(0x30d609f6bade3),CNST_LIMB(0x249a87bc9957)},729,4}, + {CNST_LIMB(0x4b9237b1fac55af1),{CNST_LIMB(0xb19ac3ed68fa0441),1,CNST_LIMB(0x1d4958ea0fafef2d),CNST_LIMB(0x4ba7c350e3c499e),CNST_LIMB(0xe26c59f6a4a42e5),CNST_LIMB(0x4acd391ac5c14c62),CNST_LIMB(0x38a0169051f4a371)},733,5}, + {CNST_LIMB(0x4fa265b31b73c6df),{CNST_LIMB(0x9b7b0be2fb2dbf62),1,CNST_LIMB(0x1118cee6ada4ab63),CNST_LIMB(0x2b4fe57f0434fb44),CNST_LIMB(0x2cffeb10b15bf6),CNST_LIMB(0xe12f06864906a7b),CNST_LIMB(0x2a0824475f11f823)},738,5}, + {CNST_LIMB(0x516d33f3efe608d5),{CNST_LIMB(0x926c85237f2dc355),1,CNST_LIMB(0xbb86424304de581),CNST_LIMB(0x3ec190a9cee7a48e),CNST_LIMB(0xd7d8bfe60d52602),CNST_LIMB(0xdff7561c9c07756),CNST_LIMB(0x3c1d2db82b327710)},743,5}, + {CNST_LIMB(0x545e342d68fbf683),{CNST_LIMB(0x8464ceb2fdd80297),1,CNST_LIMB(0x2e56377c50c1c77),CNST_LIMB(0x474ec2f4bd92576),CNST_LIMB(0x2a5da9663350db1),CNST_LIMB(0x220077cd63148dd2),CNST_LIMB(0x280dcbaf0c2ad61c)},748,5}, + {CNST_LIMB(0x57e94c457826bd6b),{CNST_LIMB(0x74bd3fdb5c8280eb),1,CNST_LIMB(0x502d67750fb2852a),CNST_LIMB(0x45149579eaa28023),CNST_LIMB(0x3bb53a4c0c4db579),CNST_LIMB(0x3a96a3180f221b2),CNST_LIMB(0x27f9af8526a8cf70)},753,5}, + {CNST_LIMB(0x5b9b45655ebf3b79),{CNST_LIMB(0x65b42a0f00510df2),1,CNST_LIMB(0x48c975354281890e),CNST_LIMB(0x2929df87cfd7453c),CNST_LIMB(0x1b6bb026965ae7ed),CNST_LIMB(0x52659a85b7df96c2),CNST_LIMB(0x21db715c0f72134)},758,5}, + {CNST_LIMB(0x5e6ad0d2eaa14c25),{CNST_LIMB(0x5b0e2387ccda26c3),1,CNST_LIMB(0x432a5e5a2abd67b6),CNST_LIMB(0x14b7571d1a05b77d),CNST_LIMB(0x498547c0b3350ce8),CNST_LIMB(0x9d4e28ce05c6c27),CNST_LIMB(0x4913b5ba5c5edc8)},763,5}, + {CNST_LIMB(0x60704759208cd21d),{CNST_LIMB(0x53c7ef8bdf16795b),1,CNST_LIMB(0x3f1f714dbee65bc6),CNST_LIMB(0x25fc61d1a473562),CNST_LIMB(0x158a2ce0171d5fd),CNST_LIMB(0x2f3bdc4b8520f24c),CNST_LIMB(0x4081386865e00703)},768,5}, + {CNST_LIMB(0x63bc6b32a19c883b),{CNST_LIMB(0x488c1dcdc113150a),1,CNST_LIMB(0x3887299abcc6ef8a),CNST_LIMB(0x2aab5731e10d2529),CNST_LIMB(0x5eeeb60320f0bef4),CNST_LIMB(0x18e4d9f1c279596e),CNST_LIMB(0xf478370d7e2465f)},773,5}, + {CNST_LIMB(0x47f6a9e8dab75),{CNST_LIMB(0xc7577d2a861d140e),13,CNST_LIMB(0x435dc14ffaf0e),CNST_LIMB(0x2557057e3745b),CNST_LIMB(0x450b5149277a6),CNST_LIMB(0xda1fae30c112),CNST_LIMB(0x3951ca3221a2d)},778,4}, + {CNST_LIMB(0x6e373b550764872f),{CNST_LIMB(0x294ecadbf29bc1cb),1,CNST_LIMB(0x23918955f136f1a2),CNST_LIMB(0x29cffcf11c6e3647),CNST_LIMB(0x4af7d1191966b3e0),CNST_LIMB(0x38ebd581ce6f80c6),CNST_LIMB(0x14ebbbc9200a6d59)},782,5}, + {CNST_LIMB(0x4ca8ed991d8b9),{CNST_LIMB(0xab7251b581f8c74d),13,CNST_LIMB(0x1639351769382),CNST_LIMB(0x3145f1b0a8e59),CNST_LIMB(0xff20704d1793),CNST_LIMB(0x1cd9e54d284e),CNST_LIMB(0x1602f3ac7db9c)},787,4}, + {CNST_LIMB(0x74b13dc12b016dc1),{CNST_LIMB(0x18ce87a5c4d39e85),1,CNST_LIMB(0x169d847da9fd247e),CNST_LIMB(0x286e093dede24bb5),CNST_LIMB(0x1854fa948ad9109d),CNST_LIMB(0x6b81a8b81781577c),CNST_LIMB(0xad44a3d15bc6be5)},791,5}, + {CNST_LIMB(0x78b0c5ae997e31ef),{CNST_LIMB(0xf811cf8a4bb1f80),1,CNST_LIMB(0xe9e74a2cd039c22),CNST_LIMB(0x30a04d242d0dfd11),CNST_LIMB(0x128fe81eea336414),CNST_LIMB(0x3639736d1defa144),CNST_LIMB(0x5eeb71b0497f58ff)},796,5}, + {CNST_LIMB(0x7dcf3e856f4612d7),{CNST_LIMB(0x47509bc7743383b),1,CNST_LIMB(0x46182f52173da52),CNST_LIMB(0x430e9fd64eeb40e6),CNST_LIMB(0x2774902fd5f53d5b),CNST_LIMB(0x4f5c0d7033943d05),CNST_LIMB(0x3be559075217f3a8)},801,5}, + {CNST_LIMB(0x550e24ca1a54b),{CNST_LIMB(0x81416693b884d74c),13,CNST_LIMB(0xee45b7c01c48),CNST_LIMB(0x3848946d8aec8),CNST_LIMB(0x541aec862a3ac),CNST_LIMB(0x4f2e818315dbc),CNST_LIMB(0xa8197f5fb2b)},806,4}, + {CNST_LIMB(0x573c8f376a18d),{CNST_LIMB(0x779f50fc3a19a6c9),13,CNST_LIMB(0x4fc81955d5129),CNST_LIMB(0xe80abe2896a1),CNST_LIMB(0x3a505801c159e),CNST_LIMB(0x162eeea75d4cd),CNST_LIMB(0x20dd0efbe8570)},810,4}, + {CNST_LIMB(0x589c3c614e917),{CNST_LIMB(0x71cc8c064f8788ee),13,CNST_LIMB(0x325d12375f7e1),CNST_LIMB(0x514f8f320e7d3),CNST_LIMB(0x55cf104cf51d3),CNST_LIMB(0x23278b29858c6),CNST_LIMB(0x3b956eecbdd30)},814,4}, + {CNST_LIMB(0x5a494bafe993d),{CNST_LIMB(0x6aef2ee9b04422dc),13,CNST_LIMB(0x5111950929bd7),CNST_LIMB(0x2c3779cd17b37),CNST_LIMB(0x2b7f886fc6966),CNST_LIMB(0x4f0b47ffa902d),CNST_LIMB(0x10bd268a51d6c)},818,4}, + {CNST_LIMB(0x5bdea84b0b73f),{CNST_LIMB(0x64adca063056bccb),13,CNST_LIMB(0x427b265a68455),CNST_LIMB(0x2ef4f15ac34a6),CNST_LIMB(0x493c4fd89b0ce),CNST_LIMB(0x7e61acb14b3a),CNST_LIMB(0x20d0328207c83)},822,4}, + {CNST_LIMB(0x5d4c55a25a945),{CNST_LIMB(0x5f37ce4e679bb0c3),13,CNST_LIMB(0x5b08caebb5502),CNST_LIMB(0x3d0eab29a51f1),CNST_LIMB(0x3c9ac2f5a187d),CNST_LIMB(0x29304bdf75a79),CNST_LIMB(0x14d681f7ea1f0)},826,4}, + {CNST_LIMB(0x5f286a042b527),{CNST_LIMB(0x585aa50035c6eb19),13,CNST_LIMB(0x1f74be8b4aa53),CNST_LIMB(0x47290f02b2679),CNST_LIMB(0x44c4bd1ee1378),CNST_LIMB(0x51286cbc40de1),CNST_LIMB(0xc379e189a860)},830,4}, + {CNST_LIMB(0x62521adc68615),{CNST_LIMB(0x4d46d1e25221a4ef),13,CNST_LIMB(0x53d112a3ea538),CNST_LIMB(0x26e6ad330e6d8),CNST_LIMB(0x56830d4191021),CNST_LIMB(0xed06536bee19),CNST_LIMB(0x5ba5998aa1cbd)},834,4}, + {CNST_LIMB(0x64f0108522a4b),{CNST_LIMB(0x44a2bea99b1fe52b),13,CNST_LIMB(0x22a1a59e3d4a4),CNST_LIMB(0x55422d57d71a4),CNST_LIMB(0x48b99527500ba),CNST_LIMB(0x5dffbfb3a890f),CNST_LIMB(0x618de61d17b82)},838,4}, + {CNST_LIMB(0x684eced8d04ad),{CNST_LIMB(0x3a25a4304e45cd70),13,CNST_LIMB(0x498e06ad4670c),CNST_LIMB(0x6397605c9b1d3),CNST_LIMB(0x1107048baaf16),CNST_LIMB(0x6292ac8aeb164),CNST_LIMB(0x4def8ba3a7552)},842,4}, + {CNST_LIMB(0x69e938da0b6b9),{CNST_LIMB(0x35644b98f3e9b802),13,CNST_LIMB(0x38dd6fce5c5b4),CNST_LIMB(0x6307e2db6000d),CNST_LIMB(0x56835d316819f),CNST_LIMB(0x2b1da7eb24a08),CNST_LIMB(0xf110b6d6a913)},846,4}, + {CNST_LIMB(0x6bf4be42947af),{CNST_LIMB(0x2f87eee6ccd631e7),13,CNST_LIMB(0x6b0e021f080f0),CNST_LIMB(0x4b469e0f2c53a),CNST_LIMB(0x50664c269b5e3),CNST_LIMB(0x4139b73b961d6),CNST_LIMB(0x13dc91bdbee0f)},850,4}, + {CNST_LIMB(0x6f54dbd6ccf57),{CNST_LIMB(0x26540878c92cd039),13,CNST_LIMB(0x382053afc295a),CNST_LIMB(0x2c8c19e89353d),CNST_LIMB(0x534384d9aa927),CNST_LIMB(0x249d03e328fc1),CNST_LIMB(0x2c57702938274)},854,4}, + {CNST_LIMB(0x71632fdcf6c15),{CNST_LIMB(0x20fdcdbf333d83af),13,CNST_LIMB(0x5242218aef575),CNST_LIMB(0x9ab7cecd8cd3),CNST_LIMB(0x4ea4e8bc18b4d),CNST_LIMB(0x16d9320fd98f4),CNST_LIMB(0x2d2b50a730c10)},858,4}, + {CNST_LIMB(0x7317fb257e1e1),{CNST_LIMB(0x1cb50c1361edfd6e),13,CNST_LIMB(0x489cb7c9fe32a),CNST_LIMB(0x258cf78a73422),CNST_LIMB(0x560fbee8c2cf2),CNST_LIMB(0x467156be8e294),CNST_LIMB(0xc593edc4d71f)},862,4}, + {CNST_LIMB(0x75e5d5c5e4577),{CNST_LIMB(0x15ef86e1cee16113),13,CNST_LIMB(0x6eece492ce925),CNST_LIMB(0x561b9134c02bf),CNST_LIMB(0x596b2a81ab56d),CNST_LIMB(0x296835004dd20),CNST_LIMB(0x3160915ef8c65)},866,4}, + {CNST_LIMB(0x788a813bc2fb1),{CNST_LIMB(0xfd74e4e944c107b),13,CNST_LIMB(0x6e15178139c26),CNST_LIMB(0x7828db84f90d2),CNST_LIMB(0x3e1e0cdc0bb1c),CNST_LIMB(0x4bbcd0685b013),CNST_LIMB(0x60b28bb37de31)},870,4}, + {CNST_LIMB(0x7b02c02e67beb),{CNST_LIMB(0xa621b97c2ae6cdb),13,CNST_LIMB(0x2068f6d99eb3c),CNST_LIMB(0x4ba3bacf8ed2f),CNST_LIMB(0x79baf6516f06a),CNST_LIMB(0x34fac2ffdfb3b),CNST_LIMB(0x601bda55ddca3)},874,4}, + {CNST_LIMB(0x7d0b0166731df),{CNST_LIMB(0x60dcab2ebe68654),13,CNST_LIMB(0x5a87235f786e1),CNST_LIMB(0x498c71a4f2c04),CNST_LIMB(0x6c4cf93aac90f),CNST_LIMB(0x2fc43a717ef2e),CNST_LIMB(0x61100c40f26dc)},878,4}, + {CNST_LIMB(0x7f65827009e4b),{CNST_LIMB(0x13671d16472022c),13,CNST_LIMB(0x66a0a221f20de),CNST_LIMB(0x1863cc32757a5),CNST_LIMB(0x72205d2b707de),CNST_LIMB(0x41eb3856479f4),CNST_LIMB(0x62a869dadecf2)},882,4}, + {CNST_LIMB(0x826267aca5d6b),{CNST_LIMB(0xf6a307f100c87643),12,CNST_LIMB(0x18b32a6e55cb2),CNST_LIMB(0x800c79d089746),CNST_LIMB(0x4df069eb6014f),CNST_LIMB(0xa67afd1d0f6b),CNST_LIMB(0x39654bc96e516)},886,4}, + {CNST_LIMB(0x854fadbb02f0d),{CNST_LIMB(0xeb99f80c181c04d8),12,CNST_LIMB(0x530f8982a799b),CNST_LIMB(0x488a5468d8f30),CNST_LIMB(0xcb498b28c81),CNST_LIMB(0x1d791c8466f6a),CNST_LIMB(0x583d384518de9)},890,4}, + {CNST_LIMB(0x86f75f67e5373),{CNST_LIMB(0xe592b4846fa38885),12,CNST_LIMB(0x16d1a804d8305),CNST_LIMB(0x3a9f7db1defba),CNST_LIMB(0x53fa43529d63d),CNST_LIMB(0x380980122856a),CNST_LIMB(0x59320408536cb)},894,4}, + {CNST_LIMB(0x89110415e014b),{CNST_LIMB(0xde220b6a3ca63611),12,CNST_LIMB(0x1183ea4dd5cca),CNST_LIMB(0x6cd0a51299316),CNST_LIMB(0x2c53d4f8b0ee6),CNST_LIMB(0x39ef54aed56eb),CNST_LIMB(0x7f71b2a9bf0fd)},898,4}, + {CNST_LIMB(0x8bbeefef93d97),{CNST_LIMB(0xd4f7338df110e1c1),12,CNST_LIMB(0x3ee5d151be367),CNST_LIMB(0x2e6b9dfc4bbcb),CNST_LIMB(0x225349b2e386e),CNST_LIMB(0x492ce15456b18),CNST_LIMB(0x856a0d6e68759)},902,4}, + {CNST_LIMB(0x8fa29248f38e9),{CNST_LIMB(0xc84479a2d3ad73b2),12,CNST_LIMB(0x282c97bed2bdc),CNST_LIMB(0x86b44220fa8e0),CNST_LIMB(0x497c548d39ada),CNST_LIMB(0x6928a8433805d),CNST_LIMB(0x1d2f77b091c29)},906,4}, + {CNST_LIMB(0x9311da8eb3ea1),{CNST_LIMB(0xbd9c9989aacc578d),12,CNST_LIMB(0x73d0b00fcee87),CNST_LIMB(0x44acd3ec00c9b),CNST_LIMB(0x3b8ead35b82f4),CNST_LIMB(0x7a1ca1fa55a8c),CNST_LIMB(0x98634149273d)},910,4}, + {CNST_LIMB(0x96fc1b51999b5),{CNST_LIMB(0xb20e950936df3d71),12,CNST_LIMB(0x899afa996b260),CNST_LIMB(0x2d7d06dae3233),CNST_LIMB(0x143e323027e28),CNST_LIMB(0x8483b9a26498e),CNST_LIMB(0x689b7b1e2fc91)},914,4}, + {CNST_LIMB(0x99d2dc5aa820b),{CNST_LIMB(0xaa0bd71d4333c056),12,CNST_LIMB(0x71d5124399b20),CNST_LIMB(0x62e94421a897f),CNST_LIMB(0x892c96c6ff4dc),CNST_LIMB(0x54dc6420d0ec4),CNST_LIMB(0x43a10331ebf4f)},918,4}, + {CNST_LIMB(0x9c18c1a21f755),{CNST_LIMB(0xa3d7a1305040e509),12,CNST_LIMB(0x4a6f652c96ebf),CNST_LIMB(0x92a1dbc9a1bc4),CNST_LIMB(0x7856fe0adb2e7),CNST_LIMB(0x65020d02f02aa),CNST_LIMB(0x7983e2f6dcbd)},922,4}, + {CNST_LIMB(0xa019a0d84ce05),{CNST_LIMB(0x99580856e1c2e36b),12,CNST_LIMB(0x5060429959a17),CNST_LIMB(0x8af3dd6c8fedb),CNST_LIMB(0x8521b97cefc72),CNST_LIMB(0x7289dc3848291),CNST_LIMB(0x51cb410c11cef)},926,4}, + {CNST_LIMB(0xa3837104af50b),{CNST_LIMB(0x90cc816ca127f31c),12,CNST_LIMB(0x7fcd3ea8e707c),CNST_LIMB(0x1ea9bdca73534),CNST_LIMB(0x3d0d37ad79bcf),CNST_LIMB(0x78befa2ea5ef8),CNST_LIMB(0x8c7846571c14b)},930,4}, + {CNST_LIMB(0xa74ba276e925b),{CNST_LIMB(0x87bcf3ca6aa1f420),12,CNST_LIMB(0x876dcb0272647),CNST_LIMB(0x63761f150b253),CNST_LIMB(0xa347a550c386b),CNST_LIMB(0xb7438cfe5ad4),CNST_LIMB(0x7bca2b8c0aabf)},934,4}, + {CNST_LIMB(0xad0c05b3ae661),{CNST_LIMB(0x7ab7cf1782b58dcf),12,CNST_LIMB(0x54750c4f56635),CNST_LIMB(0x2eac67167559c),CNST_LIMB(0x563c222f2aff7),CNST_LIMB(0x7b738313b7ac1),CNST_LIMB(0x65d997bccd9d9)},938,4}, + {CNST_LIMB(0xb0da5211cc3e7),{CNST_LIMB(0x72916ab867f7595c),12,CNST_LIMB(0xfa941ccadf01),CNST_LIMB(0x8d756d36295ea),CNST_LIMB(0x4f9f479e132fd),CNST_LIMB(0x18526df562fde),CNST_LIMB(0x434f07e1d9d33)},942,4}, + {CNST_LIMB(0xb36ca8c3991af),{CNST_LIMB(0x6d41bd767e129ba0),12,CNST_LIMB(0x13836edce5114),CNST_LIMB(0xa52c71bc138ab),CNST_LIMB(0x339d5f264e899),CNST_LIMB(0x65473fc2cfa57),CNST_LIMB(0x4714fd9da5ac0)},946,4}, + {CNST_LIMB(0xb6694790c60df),{CNST_LIMB(0x6746add17a9a2fee),12,CNST_LIMB(0x4c2521610f0f4),CNST_LIMB(0x1ef55755cab96),CNST_LIMB(0x3bb413c494cbb),CNST_LIMB(0x59bedca68abba),CNST_LIMB(0x618c95ba5598b)},950,4}, + {CNST_LIMB(0xb89a345c48d7d),{CNST_LIMB(0x6302ff6c309d06ee),12,CNST_LIMB(0x2296406fcba90),CNST_LIMB(0x4d697f4e83909),CNST_LIMB(0xa16067eedb775),CNST_LIMB(0xa50f824607f2b),CNST_LIMB(0x3d3946b54c9f9)},954,4}, + {CNST_LIMB(0xbb02a8b8a132b),{CNST_LIMB(0x5e70bfded3b337fc),12,CNST_LIMB(0x8c29c2d62d33),CNST_LIMB(0x3f082e296ef8f),CNST_LIMB(0x49afe57a19b90),CNST_LIMB(0xb7bd5be58da15),CNST_LIMB(0x8de61bd7e627f)},958,4}, + {CNST_LIMB(0xbd6468bb171ff),{CNST_LIMB(0x5a0880d51b052fd7),12,CNST_LIMB(0x64a7322bed5a0),CNST_LIMB(0x3f94ed2b89267),CNST_LIMB(0x980b9bde44b2d),CNST_LIMB(0x4a6676c0e7d13),CNST_LIMB(0xb24baad1f0c40)},962,4}, + {CNST_LIMB(0xc17671b548641),{CNST_LIMB(0x52c0b00a813a011e),12,CNST_LIMB(0x85095e7597d4),CNST_LIMB(0x55524352a702c),CNST_LIMB(0x868164742fab5),CNST_LIMB(0x3b3bcfdffb2cf),CNST_LIMB(0xab11b067d542f)},966,4}, + {CNST_LIMB(0xc57f07d496e1b),{CNST_LIMB(0x4bd58ed22f4b2aac),12,CNST_LIMB(0x449a9c42f9a11),CNST_LIMB(0x2b9c2279a88de),CNST_LIMB(0xa905cf41733e1),CNST_LIMB(0x206b2bfa8b896),CNST_LIMB(0xb378d16c66efd)},970,4}, + {CNST_LIMB(0xc814b88200ac3),{CNST_LIMB(0x478c251716699c98),12,CNST_LIMB(0x97df5b023b898),CNST_LIMB(0x5507d796eedc1),CNST_LIMB(0xb4a34312d58e3),CNST_LIMB(0x4324fc6d4f6f2),CNST_LIMB(0x29d3a7f3d88da)},974,4}, + {CNST_LIMB(0xcb958ba8e9259),{CNST_LIMB(0x41e93d5390ce4a3c),12,CNST_LIMB(0x75906ffdbe592),CNST_LIMB(0x35d1e8b619b02),CNST_LIMB(0x5535c122a3ba7),CNST_LIMB(0xb2c9d287f29c8),CNST_LIMB(0x7f9a7f1adf9d9)},978,4}, + {CNST_LIMB(0xcfaa956d67517),{CNST_LIMB(0x3b9549c76b39f2a8),12,CNST_LIMB(0x44a2e5454ad61),CNST_LIMB(0xa8d0541bab05b),CNST_LIMB(0x801e8693083d4),CNST_LIMB(0xc17c6af57bddf),CNST_LIMB(0xc7b4d9a0870d9)},982,4}, + {CNST_LIMB(0xd56380a0e8273),{CNST_LIMB(0x331ecd3feca3d608),12,CNST_LIMB(0xc5686ff8a7efd),CNST_LIMB(0x61e35c54a4f3f),CNST_LIMB(0x4bf5dc73ede0f),CNST_LIMB(0x2bf7f029f09a5),CNST_LIMB(0x718dc3463c882)},986,4}, + {CNST_LIMB(0xd9c8b65d94f5b),{CNST_LIMB(0x2cec062e71d179c4),12,CNST_LIMB(0xa3aaac38dbec6),CNST_LIMB(0x78cabf09fa56c),CNST_LIMB(0xcaf0fccc6b30b),CNST_LIMB(0xce30344eb1fac),CNST_LIMB(0x4ba46e5575b11)},990,4}, + {CNST_LIMB(0xdc90a482debcb),{CNST_LIMB(0x2920b89d6fc02e7f),12,CNST_LIMB(0x9f0f9b3b403a),CNST_LIMB(0x619327b332542),CNST_LIMB(0xa75eae1f8ff9f),CNST_LIMB(0x62350a1cba491),CNST_LIMB(0x22ac2e8eb19f9)},994,4}, + {CNST_LIMB(0xe0ac9922e6235),{CNST_LIMB(0x23b187206556b5c4),12,CNST_LIMB(0x157440c67a3c9),CNST_LIMB(0x696b5be3cc464),CNST_LIMB(0x2ebcde890e790),CNST_LIMB(0xae767f93832de),CNST_LIMB(0xcb1eade2d80a8)},998,4} +#endif diff --git a/vere/ext/h2o/build.zig b/vere/ext/h2o/build.zig new file mode 100644 index 0000000..bc3930e --- /dev/null +++ b/vere/ext/h2o/build.zig @@ -0,0 +1,457 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const patches = b.dependency("patches", .{ + .target = target, + .optimize = optimize, + }); + + const openssl = b.dependency("openssl", .{ + .target = target, + .optimize = optimize, + }); + + const curl = b.dependency("curl", .{ + .target = target, + .optimize = optimize, + }); + + const libuv = b.dependency("libuv", .{ + .target = target, + .optimize = optimize, + }); + + const zlib = b.dependency("zlib", .{ + .target = target, + .optimize = optimize, + }); + + const h2o_c = b.dependency("h2o", .{ + .target = target, + .optimize = optimize, + }); + + const sse2neon_c = b.dependency("sse2neon", .{ + .target = target, + .optimize = optimize, + }); + + const cloexec = b.addStaticLibrary(.{ + .name = "cloexec", + .target = target, + .optimize = optimize, + }); + + cloexec.linkLibC(); + + cloexec.addIncludePath(h2o_c.path("deps/cloexec")); + + cloexec.addCSourceFiles(.{ + .root = h2o_c.path("deps/cloexec"), + .files = &.{"cloexec.c"}, + .flags = &.{ + "-fno-sanitize=all", + if (t.isGnuLibC()) + "-D_GNU_SOURCE" + else + "", + }, + }); + + cloexec.installHeader(h2o_c.path("deps/cloexec/cloexec.h"), "cloexec.h"); + + const klib = b.addStaticLibrary(.{ + .name = "klib", + .target = target, + .optimize = optimize, + }); + + klib.linkLibrary(curl.artifact("curl")); + klib.linkLibrary(zlib.artifact("z")); + klib.linkLibC(); + + klib.addIncludePath(h2o_c.path("deps/klib")); + if (t.cpu.arch == .aarch64) { + klib.addIncludePath(sse2neon_c.path(".")); + } + + klib.addCSourceFiles(.{ + .root = h2o_c.path("deps/klib"), + .files = &.{ + "bgzf.c", + "khmm.c", + "kmath.c", + "knetfile.c", + "knhx.c", + // "kopen.c", + "ksa.c", + "kson.c", + "kstring.c", + // "ksw.c", + "kthread.c", + "kurl.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + klib.addCSourceFiles(.{ + .root = patches.path("h2o-2.2.6/deps/klib"), + .files = &.{ + "ksw.c", + "kopen.c", + }, + .flags = &.{ + "-fno-sanitize=all", + if (t.cpu.arch == .aarch64) + "-DURBIT_RUNTIME_CPU_AARCH64" + else + "", + }, + }); + + klib.installHeadersDirectory(h2o_c.path("deps/klib"), "", .{ + .include_extensions = &.{".h"}, + }); + + const libgkc = b.addStaticLibrary(.{ + .name = "libgkc", + .target = target, + .optimize = optimize, + }); + + libgkc.linkLibC(); + + libgkc.addIncludePath(h2o_c.path("deps/libgkc")); + + libgkc.addCSourceFiles(.{ + .root = h2o_c.path("deps/libgkc"), + .files = &.{"gkc.c"}, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + + libgkc.installHeader(h2o_c.path("deps/libgkc/gkc.h"), "gkc.h"); + + const libyrmcds = b.addStaticLibrary(.{ + .name = "libyrmcds", + .target = target, + .optimize = optimize, + }); + + libyrmcds.linkLibC(); + + libyrmcds.addIncludePath(h2o_c.path("deps/libyrmcds")); + + libyrmcds.addCSourceFiles(.{ + .root = h2o_c.path("deps/libyrmcds"), + .files = &.{ + "close.c", + "connect.c", + "counter.c", + "recv.c", + "send.c", + "send_text.c", + "set_compression.c", + "socket.c", + "strerror.c", + "text_mode.c", + // "yc-cnt.c", + // "yc.c", + }, + .flags = &.{ + "-fno-sanitize=all", + "-Wall", + "-Wconversion", + "-gdwarf-3", + "-O2", + }, + }); + + libyrmcds.installHeadersDirectory(h2o_c.path("deps/libyrmcds"), "", .{ + .include_extensions = &.{".h"}, + }); + + const picohttpparser = b.addStaticLibrary(.{ + .name = "picohttpparser", + .target = target, + .optimize = optimize, + }); + + picohttpparser.linkLibC(); + + picohttpparser.addIncludePath(h2o_c.path("deps/picohttpparser")); + if (t.cpu.arch == .aarch64) { + picohttpparser.addIncludePath(sse2neon_c.path(".")); + } + + picohttpparser.addCSourceFiles(.{ + .root = patches.path("h2o-2.2.6/deps/picohttpparser"), + .files = &.{"picohttpparser.c"}, + .flags = &.{ + if (t.cpu.arch == .aarch64) + "-DURBIT_RUNTIME_CPU_AARCH64" + else + "", + }, + }); + + picohttpparser.installHeadersDirectory(h2o_c.path("deps/picohttpparser"), "", .{ + .include_extensions = &.{".h"}, + }); + + const cifra = b.addStaticLibrary(.{ + .name = "cifra", + .target = target, + .optimize = optimize, + }); + + cifra.linkLibC(); + + cifra.addIncludePath(h2o_c.path("deps/picotls/deps/cifra/src")); + cifra.addIncludePath(h2o_c.path("deps/picotls/deps/cifra/src/ext")); + + cifra.addCSourceFiles(.{ + .root = h2o_c.path("deps/picotls/deps/cifra/src"), + .files = &.{ + "aes.c", + "sha256.c", + "sha512.c", + "chash.c", + "hmac.c", + "pbkdf2.c", + "modes.c", + "eax.c", + "gf128.c", + "blockwise.c", + "cmac.c", + "salsa20.c", + "chacha20.c", + "curve25519.c", + "gcm.c", + "cbcmac.c", + "ccm.c", + "sha3.c", + "sha1.c", + "poly1305.c", + "norx.c", + "chacha20poly1305.c", + "drbg.c", + "ocb.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + + cifra.installHeadersDirectory(h2o_c.path("deps/picotls/deps/cifra/src"), "", .{ + .include_extensions = &.{ ".h", "curve25519.tweetnacl.c" }, + }); + + const micro_ecc = b.addStaticLibrary(.{ + .name = "micro_ecc", + .target = target, + .optimize = optimize, + }); + + micro_ecc.linkLibC(); + + micro_ecc.addIncludePath(h2o_c.path("deps/picotls/deps/micro-ecc")); + + micro_ecc.addCSourceFiles(.{ + .root = h2o_c.path("deps/picotls/deps/micro-ecc"), + .files = &.{"uECC.c"}, + }); + + micro_ecc.installHeadersDirectory(h2o_c.path("deps/picotls/deps/micro-ecc"), "", .{ + .include_extensions = &.{ ".h", ".inc" }, + }); + + const picotls = b.addStaticLibrary(.{ + .name = "picotls", + .target = target, + .optimize = optimize, + }); + + picotls.linkLibrary(openssl.artifact("ssl")); + picotls.linkLibrary(cifra); + picotls.linkLibrary(micro_ecc); + picotls.linkLibC(); + + picotls.addIncludePath(h2o_c.path("deps/picotls/include")); + if (t.cpu.arch == .aarch64) { + picotls.addIncludePath(sse2neon_c.path(".")); + } + + picotls.addCSourceFiles(.{ + .root = h2o_c.path("deps/picotls/lib"), + .files = &.{ + "asn1.c", + "cifra.c", + "minicrypto-pem.c", + "openssl.c", + "pembase64.c", + "picotls.c", + "uecc.c", + }, + .flags = &.{ + "-fno-sanitize=all", + "-std=c99", + "-Wall", + "-O2", + "-DO_CLOEXEC=0", + }, + }); + + picotls.installHeadersDirectory(h2o_c.path("deps/picotls/include"), "", .{ + .include_extensions = &.{".h"}, + }); + + // const ssl_conservatory = b.addStaticLibrary(.{ + // .name = "ssl_conservatory", + // .target = target, + // .optimize = optimize, + // }); + + // ssl_conservatory.linkLibrary(openssl.artifact("ssl")); + // ssl_conservatory.linkLibC(); + + // ssl_conservatory.addIncludePath(h2o_c.path("deps/ssl-conservatory/openssl")); + + // ssl_conservatory.addCSourceFiles(.{ + // .root = h2o_c.path("deps/ssl-conservatory/openssl"), + // .files = &.{"openssl_hostname_validation.c"}, + // }); + + // ssl_conservatory.installHeader(h2o_c.path("deps/ssl-conservatory/openssl/openssl_hostname_validation.h"), "openssl_hostname_validation.h"); + + const h2o = b.addStaticLibrary(.{ + .name = "h2o", + .target = target, + .optimize = optimize, + }); + + h2o.linkLibrary(openssl.artifact("ssl")); + h2o.linkLibrary(openssl.artifact("crypto")); + h2o.linkLibrary(zlib.artifact("z")); + h2o.linkLibrary(libuv.artifact("libuv")); + // h2o.linkLibrary(cloexec); + // h2o.linkLibrary(klib); + h2o.linkLibrary(libgkc); + // h2o.linkLibrary(libyrmcds); + h2o.linkLibrary(picohttpparser); + h2o.linkLibrary(picotls); + // h2o.linkLibrary(ssl_conservatory); + h2o.linkLibC(); + + h2o.addIncludePath(h2o_c.path("deps/golombset")); + h2o.addIncludePath(h2o_c.path("deps/yoml")); + + h2o.addIncludePath(h2o_c.path("include")); + h2o.addIncludePath(h2o_c.path("include/h2o")); + h2o.addIncludePath(h2o_c.path("include/h2o/socket")); + h2o.addIncludePath(h2o_c.path("deps/klib")); + + h2o.root_module.addCMacro("H2O_NO_HTTP3", ""); + h2o.root_module.addCMacro("H2O_NO_REDIS", ""); + h2o.root_module.addCMacro("H2O_NO_MEMCACHED", ""); + + if (t.os.tag == .windows) { + h2o.root_module.addCMacro("_POSIX_C_SOURCE", "200112L"); + h2o.root_module.addCMacro("O_CLOEXEC", "0"); + h2o.root_module.addCMacro("H2O_NO_UNIX_SOCKETS", ""); + } + + h2o.addCSourceFiles(.{ + .root = h2o_c.path("lib"), + .files = &.{ + "common/cache.c", + "common/file.c", + "common/filecache.c", + "common/hostinfo.c", + "common/http1client.c", + // "common/memcached.c", + "common/memory.c", + "common/multithread.c", + // "common/serverutil.c", + "common/socket.c", + "common/socketpool.c", + "common/string.c", + "common/time.c", + "common/timeout.c", + "common/url.c", + "core/config.c", + "core/configurator.c", + "core/context.c", + "core/headers.c", + "core/logconf.c", + "core/proxy.c", + "core/request.c", + "core/token.c", + "core/util.c", + "handler/access_log.c", + "handler/chunked.c", + "handler/compress.c", + "handler/compress/gzip.c", + "handler/configurator/access_log.c", + "handler/configurator/compress.c", + "handler/configurator/errordoc.c", + "handler/configurator/expires.c", + // "handler/configurator/fastcgi.c", + "handler/configurator/file.c", + "handler/configurator/headers.c", + "handler/configurator/headers_util.c", + "handler/configurator/http2_debug_state.c", + "handler/configurator/proxy.c", + "handler/configurator/redirect.c", + "handler/configurator/reproxy.c", + "handler/configurator/status.c", + "handler/configurator/throttle_resp.c", + "handler/errordoc.c", + "handler/expires.c", + // "handler/fastcgi.c", + "handler/file.c", + "handler/headers.c", + "handler/headers_util.c", + "handler/http2_debug_state.c", + "handler/mimemap.c", + "handler/proxy.c", + "handler/redirect.c", + "handler/reproxy.c", + "handler/status.c", + "handler/status/durations.c", + "handler/status/events.c", + "handler/status/requests.c", + "handler/throttle_resp.c", + "http1.c", + "http2/cache_digests.c", + "http2/casper.c", + "http2/connection.c", + "http2/frame.c", + "http2/hpack.c", + "http2/http2_debug_state.c", + "http2/scheduler.c", + "http2/stream.c", + "tunnel.c", + }, + .flags = &.{ + "-fno-sanitize=all", + "-std=c99", + "-g3", + "-O2", + "-pthread", + "-DH2O_USE_LIBUV", + "-DH2O_USE_PICOTLS", + if (t.os.tag == .linux) "-D_GNU_SOURCE" else "", + }, + }); + + h2o.installHeadersDirectory(h2o_c.path("include"), "", .{}); + + b.installArtifact(h2o); +} diff --git a/vere/ext/h2o/build.zig.zon b/vere/ext/h2o/build.zig.zon new file mode 100644 index 0000000..8f74e74 --- /dev/null +++ b/vere/ext/h2o/build.zig.zon @@ -0,0 +1,34 @@ +.{ + .name = .h2o, + .fingerprint = 0x89f86b32b10f102e, + .version = "0.0.1", + .dependencies = .{ + .h2o = .{ + .url = "https://github.com/pkova/h2o/archive/3bbfe369a5c31d38cc1717e5281ca6af89ecf787.tar.gz", + .hash = "N-V-__8AAJ2XqALM9jST2Gu4TIdjPNY2QB8rnmKeepeqr076", + }, + .libuv = .{ + .path = "../libuv", + }, + .openssl = .{ + .path = "../openssl", + }, + .curl = .{ + .path = "../curl", + }, + .zlib = .{ + .url = "https://github.com/allyourcodebase/zlib/archive/61e7df7e996ec5a5f13a653db3c419adb340d6ef.tar.gz", + .hash = "zlib-1.3.1-ZZQ7lbYMAAB1hTSOKSXAKAgHsfDcyWNH_37ojw5WSpgR", + }, + .sse2neon = .{ + .url = "https://github.com/DLTcollab/sse2neon/archive/refs/tags/v1.5.1.tar.gz", + .hash = "N-V-__8AAPihCgDO1A74r0pFZaoafeZ41DR435smSDwGLbLb", + }, + .patches = .{ + .path = "./patches", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/h2o/patches/h2o-2.2.6/deps/klib/kopen.c b/vere/ext/h2o/patches/h2o-2.2.6/deps/klib/kopen.c new file mode 100644 index 0000000..095fb4e --- /dev/null +++ b/vere/ext/h2o/patches/h2o-2.2.6/deps/klib/kopen.c @@ -0,0 +1,344 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _WIN32 +#include +#include +#include +#endif + +#ifdef _WIN32 +#define _KO_NO_NET +#endif + +#ifndef _KO_NO_NET +static int socket_wait(int fd, int is_read) +{ + fd_set fds, *fdr = 0, *fdw = 0; + struct timeval tv; + int ret; + tv.tv_sec = 5; tv.tv_usec = 0; // 5 seconds time out + FD_ZERO(&fds); + FD_SET(fd, &fds); + if (is_read) fdr = &fds; + else fdw = &fds; + ret = select(fd+1, fdr, fdw, 0, &tv); + if (ret == -1) perror("select"); + return ret; +} + +static int socket_connect(const char *host, const char *port) +{ +#define __err_connect(func) do { perror(func); freeaddrinfo(res); return -1; } while (0) + + int on = 1, fd; + struct linger lng = { 0, 0 }; + struct addrinfo hints, *res = 0; + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + if (getaddrinfo(host, port, &hints, &res) != 0) __err_connect("getaddrinfo"); + if ((fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol)) == -1) __err_connect("socket"); + if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) __err_connect("setsockopt"); + if (setsockopt(fd, SOL_SOCKET, SO_LINGER, &lng, sizeof(lng)) == -1) __err_connect("setsockopt"); + if (connect(fd, res->ai_addr, res->ai_addrlen) != 0) __err_connect("connect"); + freeaddrinfo(res); + return fd; +#undef __err_connect +} + +static int http_open(const char *fn) +{ + char *p, *proxy, *q, *http_host, *host, *port, *path, *buf; + int fd, ret, l; + + /* parse URL; adapted from khttp_parse_url() in knetfile.c */ + if (strstr(fn, "http://") != fn) return 0; + // set ->http_host + for (p = (char*)fn + 7; *p && *p != '/'; ++p); + l = p - fn - 7; + http_host = calloc(l + 1, 1); + strncpy(http_host, fn + 7, l); + http_host[l] = 0; + for (q = http_host; *q && *q != ':'; ++q); + if (*q == ':') *q++ = 0; + // get http_proxy + proxy = getenv("http_proxy"); + // set host, port and path + if (proxy == 0) { + host = strdup(http_host); // when there is no proxy, server name is identical to http_host name. + port = strdup(*q? q : "80"); + path = strdup(*p? p : "/"); + } else { + host = (strstr(proxy, "http://") == proxy)? strdup(proxy + 7) : strdup(proxy); + for (q = host; *q && *q != ':'; ++q); + if (*q == ':') *q++ = 0; + port = strdup(*q? q : "80"); + path = strdup(fn); + } + + /* connect; adapted from khttp_connect() in knetfile.c */ + l = 0; + fd = socket_connect(host, port); + buf = calloc(0x10000, 1); // FIXME: I am lazy... But in principle, 64KB should be large enough. + l += sprintf(buf + l, "GET %s HTTP/1.0\r\nHost: %s\r\n", path, http_host); + l += sprintf(buf + l, "\r\n"); + write(fd, buf, l); + l = 0; + while (read(fd, buf + l, 1)) { // read HTTP header; FIXME: bad efficiency + if (buf[l] == '\n' && l >= 3) + if (strncmp(buf + l - 3, "\r\n\r\n", 4) == 0) break; + ++l; + } + buf[l] = 0; + if (l < 14) { // prematured header + close(fd); + fd = -1; + } + ret = strtol(buf + 8, &p, 0); // HTTP return code + if (ret != 200) { + close(fd); + fd = -1; + } + free(buf); free(http_host); free(host); free(port); free(path); + return fd; +} + +typedef struct { + int max_response, ctrl_fd; + char *response; +} ftpaux_t; + +static int kftp_get_response(ftpaux_t *aux) +{ + unsigned char c; + int n = 0; + char *p; + if (socket_wait(aux->ctrl_fd, 1) <= 0) return 0; + while (read(aux->ctrl_fd, &c, 1)) { // FIXME: this is *VERY BAD* for unbuffered I/O + if (n >= aux->max_response) { + aux->max_response = aux->max_response? aux->max_response<<1 : 256; + aux->response = realloc(aux->response, aux->max_response); + } + aux->response[n++] = c; + if (c == '\n') { + if (n >= 4 && isdigit(aux->response[0]) && isdigit(aux->response[1]) && isdigit(aux->response[2]) + && aux->response[3] != '-') break; + n = 0; + continue; + } + } + if (n < 2) return -1; + aux->response[n-2] = 0; + return strtol(aux->response, &p, 0); +} + +static int kftp_send_cmd(ftpaux_t *aux, const char *cmd, int is_get) +{ + if (socket_wait(aux->ctrl_fd, 0) <= 0) return -1; // socket is not ready for writing + write(aux->ctrl_fd, cmd, strlen(cmd)); + return is_get? kftp_get_response(aux) : 0; +} + +static int ftp_open(const char *fn) +{ + char *p, *host = 0, *port = 0, *retr = 0; + char host2[80], port2[10]; + int v[6], l, fd = -1, ret, pasv_port, pasv_ip[4]; + ftpaux_t aux; + + /* parse URL */ + if (strstr(fn, "ftp://") != fn) return 0; + for (p = (char*)fn + 6; *p && *p != '/'; ++p); + if (*p != '/') return 0; + l = p - fn - 6; + port = strdup("21"); + host = calloc(l + 1, 1); + strncpy(host, fn + 6, l); + retr = calloc(strlen(p) + 8, 1); + sprintf(retr, "RETR %s\r\n", p); + + /* connect to ctrl */ + memset(&aux, 0, sizeof(ftpaux_t)); + aux.ctrl_fd = socket_connect(host, port); + if (aux.ctrl_fd == -1) goto ftp_open_end; /* fail to connect ctrl */ + + /* connect to the data stream */ + kftp_get_response(&aux); + kftp_send_cmd(&aux, "USER anonymous\r\n", 1); + kftp_send_cmd(&aux, "PASS kopen@\r\n", 1); + kftp_send_cmd(&aux, "TYPE I\r\n", 1); + kftp_send_cmd(&aux, "PASV\r\n", 1); + for (p = aux.response; *p && *p != '('; ++p); + if (*p != '(') goto ftp_open_end; + ++p; + sscanf(p, "%d,%d,%d,%d,%d,%d", &v[0], &v[1], &v[2], &v[3], &v[4], &v[5]); + memcpy(pasv_ip, v, 4 * sizeof(int)); + pasv_port = (v[4]<<8&0xff00) + v[5]; + kftp_send_cmd(&aux, retr, 0); + sprintf(host2, "%d.%d.%d.%d", pasv_ip[0], pasv_ip[1], pasv_ip[2], pasv_ip[3]); + sprintf(port2, "%d", pasv_port); + fd = socket_connect(host2, port2); + if (fd == -1) goto ftp_open_end; + ret = kftp_get_response(&aux); + if (ret != 150) { + close(fd); + fd = -1; + } + close(aux.ctrl_fd); + +ftp_open_end: + free(host); free(port); free(retr); free(aux.response); + return fd; +} +#endif /* !defined(_KO_NO_NET) */ + +static char **cmd2argv(const char *cmd) +{ + int i, beg, end, argc; + char **argv, *p, *q, *str; + end = strlen(cmd); + for (i = end - 1; i >= 0; --i) + if (!isspace(cmd[i])) break; + end = i + 1; + for (beg = 0; beg < end; ++beg) + if (!isspace(cmd[beg])) break; + if (beg == end) return 0; + for (i = beg + 1, argc = 0; i < end; ++i) + if (isspace(cmd[i]) && !isspace(cmd[i-1])) + ++argc; + argv = (char**)calloc(argc + 2, sizeof(void*)); + argv[0] = str = (char*)calloc(end - beg + 1, 1); + strncpy(argv[0], cmd + beg, end - beg); + for (i = argc = 1, q = p = str; i < end - beg; ++i) + if (isspace(str[i])) str[i] = 0; + else if (str[i] && str[i-1] == 0) argv[argc++] = &str[i]; + return argv; +} + +#define KO_STDIN 1 +#define KO_FILE 2 +#define KO_PIPE 3 +#define KO_HTTP 4 +#define KO_FTP 5 + +typedef struct { + int type, fd; + pid_t pid; +} koaux_t; + +void *kopen(const char *fn, int *_fd) +{ + koaux_t *aux = 0; + *_fd = -1; + if (strstr(fn, "http://") == fn) { + aux = calloc(1, sizeof(koaux_t)); + aux->type = KO_HTTP; + aux->fd = http_open(fn); + } else if (strstr(fn, "ftp://") == fn) { + aux = calloc(1, sizeof(koaux_t)); + aux->type = KO_FTP; + aux->fd = ftp_open(fn); + } else if (strcmp(fn, "-") == 0) { + aux = calloc(1, sizeof(koaux_t)); + aux->type = KO_STDIN; + aux->fd = STDIN_FILENO; + } else { + const char *p, *q; + for (p = fn; *p; ++p) + if (!isspace(*p)) break; + if (*p == '<') { // pipe open + int need_shell, pfd[2]; + pid_t pid; + // a simple check to see if we need to invoke a shell; not always working + for (q = p + 1; *q; ++q) + if (ispunct(*q) && *q != '.' && *q != '_' && *q != '-' && *q != ':') + break; + need_shell = (*q != 0); + pipe(pfd); + pid = vfork(); + if (pid == -1) { /* vfork() error */ + close(pfd[0]); close(pfd[1]); + return 0; + } + if (pid == 0) { /* the child process */ + char **argv; /* FIXME: I do not know if this will lead to a memory leak */ + close(pfd[0]); + dup2(pfd[1], STDOUT_FILENO); + close(pfd[1]); + if (!need_shell) { + argv = cmd2argv(p + 1); + execvp(argv[0], argv); + free(argv[0]); free(argv); + } else execl("/bin/sh", "sh", "-c", p + 1, NULL); + exit(1); + } else { /* parent process */ + close(pfd[1]); + aux = calloc(1, sizeof(koaux_t)); + aux->type = KO_PIPE; + aux->fd = pfd[0]; + aux->pid = pid; + } + } else { +#ifdef _WIN32 + *_fd = open(fn, O_RDONLY | O_BINARY); +#else + *_fd = open(fn, O_RDONLY); +#endif + if (*_fd) { + aux = calloc(1, sizeof(koaux_t)); + aux->type = KO_FILE; + aux->fd = *_fd; + } + } + } + *_fd = aux->fd; + return aux; +} + +int kclose(void *a) +{ + koaux_t *aux = (koaux_t*)a; + if (aux->type == KO_PIPE) { + int status; + pid_t pid; + pid = waitpid(aux->pid, &status, WNOHANG); + if (pid != aux->pid) kill(aux->pid, 15); + } + return 0; +} + +#ifdef _KO_MAIN +#define BUF_SIZE 0x10000 +int main(int argc, char *argv[]) +{ + void *x; + int l, fd; + unsigned char buf[BUF_SIZE]; + FILE *fp; + if (argc == 1) { + fprintf(stderr, "Usage: kopen \n"); + return 1; + } + x = kopen(argv[1], &fd); + fp = fdopen(fd, "r"); + if (fp == 0) { + fprintf(stderr, "ERROR: fail to open the input\n"); + return 1; + } + do { + if ((l = fread(buf, 1, BUF_SIZE, fp)) != 0) + fwrite(buf, 1, l, stdout); + } while (l == BUF_SIZE); + fclose(fp); + kclose(x); + return 0; +} +#endif diff --git a/vere/ext/h2o/patches/h2o-2.2.6/deps/klib/ksw.c b/vere/ext/h2o/patches/h2o-2.2.6/deps/klib/ksw.c new file mode 100644 index 0000000..05af32f --- /dev/null +++ b/vere/ext/h2o/patches/h2o-2.2.6/deps/klib/ksw.c @@ -0,0 +1,637 @@ +/* The MIT License + + Copyright (c) 2011 by Attractive Chaos + + 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 +#if defined(URBIT_RUNTIME_CPU_AARCH64) +#include "sse2neon.h" +#else +#include +#endif +#include "ksw.h" + +#ifdef __GNUC__ +#define LIKELY(x) __builtin_expect((x),1) +#define UNLIKELY(x) __builtin_expect((x),0) +#else +#define LIKELY(x) (x) +#define UNLIKELY(x) (x) +#endif + +const kswr_t g_defr = { 0, -1, -1, -1, -1, -1, -1 }; + +struct _kswq_t { + int qlen, slen; + uint8_t shift, mdiff, max, size; + __m128i *qp, *H0, *H1, *E, *Hmax; +}; + +/** + * Initialize the query data structure + * + * @param size Number of bytes used to store a score; valid valures are 1 or 2 + * @param qlen Length of the query sequence + * @param query Query sequence + * @param m Size of the alphabet + * @param mat Scoring matrix in a one-dimension array + * + * @return Query data structure + */ +kswq_t *ksw_qinit(int size, int qlen, const uint8_t *query, int m, const int8_t *mat) +{ + kswq_t *q; + int slen, a, tmp, p; + + size = size > 1? 2 : 1; + p = 8 * (3 - size); // # values per __m128i + slen = (qlen + p - 1) / p; // segmented length + q = (kswq_t*)malloc(sizeof(kswq_t) + 256 + 16 * slen * (m + 4)); // a single block of memory + q->qp = (__m128i*)(((size_t)q + sizeof(kswq_t) + 15) >> 4 << 4); // align memory + q->H0 = q->qp + slen * m; + q->H1 = q->H0 + slen; + q->E = q->H1 + slen; + q->Hmax = q->E + slen; + q->slen = slen; q->qlen = qlen; q->size = size; + // compute shift + tmp = m * m; + for (a = 0, q->shift = 127, q->mdiff = 0; a < tmp; ++a) { // find the minimum and maximum score + if (mat[a] < (int8_t)q->shift) q->shift = mat[a]; + if (mat[a] > (int8_t)q->mdiff) q->mdiff = mat[a]; + } + q->max = q->mdiff; + q->shift = 256 - q->shift; // NB: q->shift is uint8_t + q->mdiff += q->shift; // this is the difference between the min and max scores + // An example: p=8, qlen=19, slen=3 and segmentation: + // {{0,3,6,9,12,15,18,-1},{1,4,7,10,13,16,-1,-1},{2,5,8,11,14,17,-1,-1}} + if (size == 1) { + int8_t *t = (int8_t*)q->qp; + for (a = 0; a < m; ++a) { + int i, k, nlen = slen * p; + const int8_t *ma = mat + a * m; + for (i = 0; i < slen; ++i) + for (k = i; k < nlen; k += slen) // p iterations + *t++ = (k >= qlen? 0 : ma[query[k]]) + q->shift; + } + } else { + int16_t *t = (int16_t*)q->qp; + for (a = 0; a < m; ++a) { + int i, k, nlen = slen * p; + const int8_t *ma = mat + a * m; + for (i = 0; i < slen; ++i) + for (k = i; k < nlen; k += slen) // p iterations + *t++ = (k >= qlen? 0 : ma[query[k]]); + } + } + return q; +} + +kswr_t ksw_u8(kswq_t *q, int tlen, const uint8_t *target, int _gapo, int _gape, int xtra) // the first gap costs -(_o+_e) +{ + int slen, i, m_b, n_b, te = -1, gmax = 0, minsc, endsc; + uint64_t *b; + __m128i zero, gapoe, gape, shift, *H0, *H1, *E, *Hmax; + kswr_t r; + +#define __max_16(ret, xx) do { \ + (xx) = _mm_max_epu8((xx), _mm_srli_si128((xx), 8)); \ + (xx) = _mm_max_epu8((xx), _mm_srli_si128((xx), 4)); \ + (xx) = _mm_max_epu8((xx), _mm_srli_si128((xx), 2)); \ + (xx) = _mm_max_epu8((xx), _mm_srli_si128((xx), 1)); \ + (ret) = _mm_extract_epi16((xx), 0) & 0x00ff; \ + } while (0) + + // initialization + r = g_defr; + minsc = (xtra&KSW_XSUBO)? xtra&0xffff : 0x10000; + endsc = (xtra&KSW_XSTOP)? xtra&0xffff : 0x10000; + m_b = n_b = 0; b = 0; + zero = _mm_set1_epi32(0); + gapoe = _mm_set1_epi8(_gapo + _gape); + gape = _mm_set1_epi8(_gape); + shift = _mm_set1_epi8(q->shift); + H0 = q->H0; H1 = q->H1; E = q->E; Hmax = q->Hmax; + slen = q->slen; + for (i = 0; i < slen; ++i) { + _mm_store_si128(E + i, zero); + _mm_store_si128(H0 + i, zero); + _mm_store_si128(Hmax + i, zero); + } + // the core loop + for (i = 0; i < tlen; ++i) { + int j, k, cmp, imax; + __m128i e, h, f = zero, max = zero, *S = q->qp + target[i] * slen; // s is the 1st score vector + h = _mm_load_si128(H0 + slen - 1); // h={2,5,8,11,14,17,-1,-1} in the above example + h = _mm_slli_si128(h, 1); // h=H(i-1,-1); << instead of >> because x64 is little-endian + for (j = 0; LIKELY(j < slen); ++j) { + /* SW cells are computed in the following order: + * H(i,j) = max{H(i-1,j-1)+S(i,j), E(i,j), F(i,j)} + * E(i+1,j) = max{H(i,j)-q, E(i,j)-r} + * F(i,j+1) = max{H(i,j)-q, F(i,j)-r} + */ + // compute H'(i,j); note that at the beginning, h=H'(i-1,j-1) + h = _mm_adds_epu8(h, _mm_load_si128(S + j)); + h = _mm_subs_epu8(h, shift); // h=H'(i-1,j-1)+S(i,j) + e = _mm_load_si128(E + j); // e=E'(i,j) + h = _mm_max_epu8(h, e); + h = _mm_max_epu8(h, f); // h=H'(i,j) + max = _mm_max_epu8(max, h); // set max + _mm_store_si128(H1 + j, h); // save to H'(i,j) + // now compute E'(i+1,j) + h = _mm_subs_epu8(h, gapoe); // h=H'(i,j)-gapo + e = _mm_subs_epu8(e, gape); // e=E'(i,j)-gape + e = _mm_max_epu8(e, h); // e=E'(i+1,j) + _mm_store_si128(E + j, e); // save to E'(i+1,j) + // now compute F'(i,j+1) + f = _mm_subs_epu8(f, gape); + f = _mm_max_epu8(f, h); + // get H'(i-1,j) and prepare for the next j + h = _mm_load_si128(H0 + j); // h=H'(i-1,j) + } + // NB: we do not need to set E(i,j) as we disallow adjecent insertion and then deletion + for (k = 0; LIKELY(k < 16); ++k) { // this block mimics SWPS3; NB: H(i,j) updated in the lazy-F loop cannot exceed max + f = _mm_slli_si128(f, 1); + for (j = 0; LIKELY(j < slen); ++j) { + h = _mm_load_si128(H1 + j); + h = _mm_max_epu8(h, f); // h=H'(i,j) + _mm_store_si128(H1 + j, h); + h = _mm_subs_epu8(h, gapoe); + f = _mm_subs_epu8(f, gape); + cmp = _mm_movemask_epi8(_mm_cmpeq_epi8(_mm_subs_epu8(f, h), zero)); + if (UNLIKELY(cmp == 0xffff)) goto end_loop16; + } + } +end_loop16: + //int k;for (k=0;k<16;++k)printf("%d ", ((uint8_t*)&max)[k]);printf("\n"); + __max_16(imax, max); // imax is the maximum number in max + if (imax >= minsc) { // write the b array; this condition adds branching unfornately + if (n_b == 0 || (int32_t)b[n_b-1] + 1 != i) { // then append + if (n_b == m_b) { + m_b = m_b? m_b<<1 : 8; + b = (uint64_t*)realloc(b, 8 * m_b); + } + b[n_b++] = (uint64_t)imax<<32 | i; + } else if ((int)(b[n_b-1]>>32) < imax) b[n_b-1] = (uint64_t)imax<<32 | i; // modify the last + } + if (imax > gmax) { + gmax = imax; te = i; // te is the end position on the target + for (j = 0; LIKELY(j < slen); ++j) // keep the H1 vector + _mm_store_si128(Hmax + j, _mm_load_si128(H1 + j)); + if (gmax + q->shift >= 255 || gmax >= endsc) break; + } + S = H1; H1 = H0; H0 = S; // swap H0 and H1 + } + r.score = gmax + q->shift < 255? gmax : 255; + r.te = te; + if (r.score != 255) { // get a->qe, the end of query match; find the 2nd best score + int max = -1, low, high, qlen = slen * 16; + uint8_t *t = (uint8_t*)Hmax; + for (i = 0; i < qlen; ++i, ++t) + if ((int)*t > max) max = *t, r.qe = i / 16 + i % 16 * slen; + //printf("%d,%d\n", max, gmax); + if (b) { + i = (r.score + q->max - 1) / q->max; + low = te - i; high = te + i; + for (i = 0; i < n_b; ++i) { + int e = (int32_t)b[i]; + if ((e < low || e > high) && (int)(b[i]>>32) > r.score2) + r.score2 = b[i]>>32, r.te2 = e; + } + } + } + free(b); + return r; +} + +kswr_t ksw_i16(kswq_t *q, int tlen, const uint8_t *target, int _gapo, int _gape, int xtra) // the first gap costs -(_o+_e) +{ + int slen, i, m_b, n_b, te = -1, gmax = 0, minsc, endsc; + uint64_t *b; + __m128i zero, gapoe, gape, *H0, *H1, *E, *Hmax; + kswr_t r; + +#define __max_8(ret, xx) do { \ + (xx) = _mm_max_epi16((xx), _mm_srli_si128((xx), 8)); \ + (xx) = _mm_max_epi16((xx), _mm_srli_si128((xx), 4)); \ + (xx) = _mm_max_epi16((xx), _mm_srli_si128((xx), 2)); \ + (ret) = _mm_extract_epi16((xx), 0); \ + } while (0) + + // initialization + r = g_defr; + minsc = (xtra&KSW_XSUBO)? xtra&0xffff : 0x10000; + endsc = (xtra&KSW_XSTOP)? xtra&0xffff : 0x10000; + m_b = n_b = 0; b = 0; + zero = _mm_set1_epi32(0); + gapoe = _mm_set1_epi16(_gapo + _gape); + gape = _mm_set1_epi16(_gape); + H0 = q->H0; H1 = q->H1; E = q->E; Hmax = q->Hmax; + slen = q->slen; + for (i = 0; i < slen; ++i) { + _mm_store_si128(E + i, zero); + _mm_store_si128(H0 + i, zero); + _mm_store_si128(Hmax + i, zero); + } + // the core loop + for (i = 0; i < tlen; ++i) { + int j, k, imax; + __m128i e, h, f = zero, max = zero, *S = q->qp + target[i] * slen; // s is the 1st score vector + h = _mm_load_si128(H0 + slen - 1); // h={2,5,8,11,14,17,-1,-1} in the above example + h = _mm_slli_si128(h, 2); + for (j = 0; LIKELY(j < slen); ++j) { + h = _mm_adds_epi16(h, *S++); + e = _mm_load_si128(E + j); + h = _mm_max_epi16(h, e); + h = _mm_max_epi16(h, f); + max = _mm_max_epi16(max, h); + _mm_store_si128(H1 + j, h); + h = _mm_subs_epu16(h, gapoe); + e = _mm_subs_epu16(e, gape); + e = _mm_max_epi16(e, h); + _mm_store_si128(E + j, e); + f = _mm_subs_epu16(f, gape); + f = _mm_max_epi16(f, h); + h = _mm_load_si128(H0 + j); + } + for (k = 0; LIKELY(k < 16); ++k) { + f = _mm_slli_si128(f, 2); + for (j = 0; LIKELY(j < slen); ++j) { + h = _mm_load_si128(H1 + j); + h = _mm_max_epi16(h, f); + _mm_store_si128(H1 + j, h); + h = _mm_subs_epu16(h, gapoe); + f = _mm_subs_epu16(f, gape); + if(UNLIKELY(!_mm_movemask_epi8(_mm_cmpgt_epi16(f, h)))) goto end_loop8; + } + } +end_loop8: + __max_8(imax, max); + if (imax >= minsc) { + if (n_b == 0 || (int32_t)b[n_b-1] + 1 != i) { + if (n_b == m_b) { + m_b = m_b? m_b<<1 : 8; + b = (uint64_t*)realloc(b, 8 * m_b); + } + b[n_b++] = (uint64_t)imax<<32 | i; + } else if ((int)(b[n_b-1]>>32) < imax) b[n_b-1] = (uint64_t)imax<<32 | i; // modify the last + } + if (imax > gmax) { + gmax = imax; te = i; + for (j = 0; LIKELY(j < slen); ++j) + _mm_store_si128(Hmax + j, _mm_load_si128(H1 + j)); + if (gmax >= endsc) break; + } + S = H1; H1 = H0; H0 = S; + } + r.score = gmax; r.te = te; + { + int max = -1, low, high, qlen = slen * 8; + uint16_t *t = (uint16_t*)Hmax; + for (i = 0, r.qe = -1; i < qlen; ++i, ++t) + if ((int)*t > max) max = *t, r.qe = i / 8 + i % 8 * slen; + if (b) { + i = (r.score + q->max - 1) / q->max; + low = te - i; high = te + i; + for (i = 0; i < n_b; ++i) { + int e = (int32_t)b[i]; + if ((e < low || e > high) && (int)(b[i]>>32) > r.score2) + r.score2 = b[i]>>32, r.te2 = e; + } + } + } + free(b); + return r; +} + +static void revseq(int l, uint8_t *s) +{ + int i, t; + for (i = 0; i < l>>1; ++i) + t = s[i], s[i] = s[l - 1 - i], s[l - 1 - i] = t; +} + +kswr_t ksw_align(int qlen, uint8_t *query, int tlen, uint8_t *target, int m, const int8_t *mat, int gapo, int gape, int xtra, kswq_t **qry) +{ + int size; + kswq_t *q; + kswr_t r, rr; + kswr_t (*func)(kswq_t*, int, const uint8_t*, int, int, int); + + q = (qry && *qry)? *qry : ksw_qinit((xtra&KSW_XBYTE)? 1 : 2, qlen, query, m, mat); + if (qry && *qry == 0) *qry = q; + func = q->size == 2? ksw_i16 : ksw_u8; + size = q->size; + r = func(q, tlen, target, gapo, gape, xtra); + if (qry == 0) free(q); + if ((xtra&KSW_XSTART) == 0 || ((xtra&KSW_XSUBO) && r.score < (xtra&0xffff))) return r; + revseq(r.qe + 1, query); revseq(r.te + 1, target); // +1 because qe/te points to the exact end, not the position after the end + q = ksw_qinit(size, r.qe + 1, query, m, mat); + rr = func(q, tlen, target, gapo, gape, KSW_XSTOP | r.score); + revseq(r.qe + 1, query); revseq(r.te + 1, target); + free(q); + if (r.score == rr.score) + r.tb = r.te - rr.te, r.qb = r.qe - rr.qe; + return r; +} + +/******************** + *** SW extension *** + ********************/ + +typedef struct { + int32_t h, e; +} eh_t; + +int ksw_extend(int qlen, const uint8_t *query, int tlen, const uint8_t *target, int m, const int8_t *mat, int gapo, int gape, int w, int h0, int *_qle, int *_tle) +{ + eh_t *eh; // score array + int8_t *qp; // query profile + int i, j, k, gapoe = gapo + gape, beg, end, max, max_i, max_j, max_gap; + if (h0 < 0) h0 = 0; + // allocate memory + qp = malloc(qlen * m); + eh = calloc(qlen + 1, 8); + // generate the query profile + for (k = i = 0; k < m; ++k) { + const int8_t *p = &mat[k * m]; + for (j = 0; j < qlen; ++j) qp[i++] = p[query[j]]; + } + // fill the first row + eh[0].h = h0; eh[1].h = h0 > gapoe? h0 - gapoe : 0; + for (j = 2; j <= qlen && eh[j-1].h > gape; ++j) + eh[j].h = eh[j-1].h - gape; + // adjust $w if it is too large + k = m * m; + for (i = 0, max = 0; i < k; ++i) // get the max score + max = max > mat[i]? max : mat[i]; + max_gap = (int)((double)(qlen * max - gapo) / gape + 1.); + max_gap = max_gap > 1? max_gap : 1; + w = w < max_gap? w : max_gap; + // DP loop + max = h0, max_i = max_j = -1; + beg = 0, end = qlen; + for (i = 0; LIKELY(i < tlen); ++i) { + int f = 0, h1, m = 0, mj = -1; + int8_t *q = &qp[target[i] * qlen]; + // compute the first column + h1 = h0 - (gapo + gape * (i + 1)); + if (h1 < 0) h1 = 0; + // apply the band and the constraint (if provided) + if (beg < i - w) beg = i - w; + if (end > i + w + 1) end = i + w + 1; + if (end > qlen) end = qlen; + for (j = beg; LIKELY(j < end); ++j) { + // At the beginning of the loop: eh[j] = { H(i-1,j-1), E(i,j) }, f = F(i,j) and h1 = H(i,j-1) + // Similar to SSE2-SW, cells are computed in the following order: + // H(i,j) = max{H(i-1,j-1)+S(i,j), E(i,j), F(i,j)} + // E(i+1,j) = max{H(i,j)-gapo, E(i,j)} - gape + // F(i,j+1) = max{H(i,j)-gapo, F(i,j)} - gape + eh_t *p = &eh[j]; + int h = p->h, e = p->e; // get H(i-1,j-1) and E(i-1,j) + p->h = h1; // set H(i,j-1) for the next row + h += q[j]; + h = h > e? h : e; + h = h > f? h : f; + h1 = h; // save H(i,j) to h1 for the next column + mj = m > h? mj : j; + m = m > h? m : h; // m is stored at eh[mj+1] + h -= gapoe; + h = h > 0? h : 0; + e -= gape; + e = e > h? e : h; // computed E(i+1,j) + p->e = e; // save E(i+1,j) for the next row + f -= gape; + f = f > h? f : h; // computed F(i,j+1) + } + eh[end].h = h1; eh[end].e = 0; + if (m == 0) break; + if (m > max) max = m, max_i = i, max_j = mj; + // update beg and end for the next round + for (j = mj; j >= beg && eh[j].h; --j); + beg = j + 1; + for (j = mj + 2; j <= end && eh[j].h; ++j); + end = j; + //beg = 0; end = qlen; // uncomment this line for debugging + } + free(eh); free(qp); + if (_qle) *_qle = max_j + 1; + if (_tle) *_tle = max_i + 1; + return max; +} + +/******************** + * Global alignment * + ********************/ + +#define MINUS_INF -0x40000000 + +static inline uint32_t *push_cigar(int *n_cigar, int *m_cigar, uint32_t *cigar, int op, int len) +{ + if (*n_cigar == 0 || op != (cigar[(*n_cigar) - 1]&0xf)) { + if (*n_cigar == *m_cigar) { + *m_cigar = *m_cigar? (*m_cigar)<<1 : 4; + cigar = realloc(cigar, (*m_cigar) << 2); + } + cigar[(*n_cigar)++] = len<<4 | op; + } else cigar[(*n_cigar)-1] += len<<4; + return cigar; +} + +int ksw_global(int qlen, const uint8_t *query, int tlen, const uint8_t *target, int m, const int8_t *mat, int gapo, int gape, int w, int *n_cigar_, uint32_t **cigar_) +{ + eh_t *eh; + int8_t *qp; // query profile + int i, j, k, gapoe = gapo + gape, score, n_col; + uint8_t *z; // backtrack matrix; in each cell: f<<4|e<<2|h; in principle, we can halve the memory, but backtrack will be a little more complex + if (n_cigar_) *n_cigar_ = 0; + // allocate memory + n_col = qlen < 2*w+1? qlen : 2*w+1; // maximum #columns of the backtrack matrix + z = malloc(n_col * tlen); + qp = malloc(qlen * m); + eh = calloc(qlen + 1, 8); + // generate the query profile + for (k = i = 0; k < m; ++k) { + const int8_t *p = &mat[k * m]; + for (j = 0; j < qlen; ++j) qp[i++] = p[query[j]]; + } + // fill the first row + eh[0].h = 0; eh[0].e = MINUS_INF; + for (j = 1; j <= qlen && j <= w; ++j) + eh[j].h = -(gapo + gape * j), eh[j].e = MINUS_INF; + for (; j <= qlen; ++j) eh[j].h = eh[j].e = MINUS_INF; // everything is -inf outside the band + // DP loop + for (i = 0; LIKELY(i < tlen); ++i) { // target sequence is in the outer loop + int32_t f = MINUS_INF, h1, beg, end; + int8_t *q = &qp[target[i] * qlen]; + uint8_t *zi = &z[i * n_col]; + beg = i > w? i - w : 0; + end = i + w + 1 < qlen? i + w + 1 : qlen; // only loop through [beg,end) of the query sequence + h1 = beg == 0? -(gapo + gape * (i + 1)) : MINUS_INF; + for (j = beg; LIKELY(j < end); ++j) { + // This loop is organized in a similar way to ksw_extend() and ksw_sse2(), except: + // 1) not checking h>0; 2) recording direction for backtracking + eh_t *p = &eh[j]; + int32_t h = p->h, e = p->e; + uint8_t d; // direction + p->h = h1; + h += q[j]; + d = h > e? 0 : 1; + h = h > e? h : e; + d = h > f? d : 2; + h = h > f? h : f; + h1 = h; + h -= gapoe; + e -= gape; + d |= e > h? 1<<2 : 0; + e = e > h? e : h; + p->e = e; + f -= gape; + d |= f > h? 2<<4 : 0; // if we want to halve the memory, use one bit only, instead of two + f = f > h? f : h; + zi[j - beg] = d; // z[i,j] keeps h for the current cell and e/f for the next cell + } + eh[end].h = h1; eh[end].e = MINUS_INF; + } + score = eh[qlen].h; + if (n_cigar_ && cigar_) { // backtrack + int n_cigar = 0, m_cigar = 0, which = 0; + uint32_t *cigar = 0, tmp; + i = tlen - 1; k = (i + w + 1 < qlen? i + w + 1 : qlen) - 1; // (i,k) points to the last cell + while (i >= 0 && k >= 0) { + which = z[i * n_col + (k - (i > w? i - w : 0))] >> (which<<1) & 3; + if (which == 0) cigar = push_cigar(&n_cigar, &m_cigar, cigar, 0, 1), --i, --k; + else if (which == 1) cigar = push_cigar(&n_cigar, &m_cigar, cigar, 2, 1), --i; + else cigar = push_cigar(&n_cigar, &m_cigar, cigar, 1, 1), --k; + } + if (i >= 0) cigar = push_cigar(&n_cigar, &m_cigar, cigar, 2, i + 1); + if (k >= 0) cigar = push_cigar(&n_cigar, &m_cigar, cigar, 1, k + 1); + for (i = 0; i < n_cigar>>1; ++i) // reverse CIGAR + tmp = cigar[i], cigar[i] = cigar[n_cigar-1-i], cigar[n_cigar-1-i] = tmp; + *n_cigar_ = n_cigar, *cigar_ = cigar; + } + free(eh); free(qp); free(z); + return score; +} + +/******************************************* + * Main function (not compiled by default) * + *******************************************/ + +#ifdef _KSW_MAIN + +#include +#include +#include +#include "kseq.h" +KSEQ_INIT(gzFile, gzread) + +unsigned char seq_nt4_table[256] = { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 0, 4, 1, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 0, 4, 1, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 +}; + +int main(int argc, char *argv[]) +{ + int c, sa = 1, sb = 3, i, j, k, forward_only = 0, max_rseq = 0; + int8_t mat[25]; + int gapo = 5, gape = 2, minsc = 0, xtra = KSW_XSTART; + uint8_t *rseq = 0; + gzFile fpt, fpq; + kseq_t *kst, *ksq; + + // parse command line + while ((c = getopt(argc, argv, "a:b:q:r:ft:1")) >= 0) { + switch (c) { + case 'a': sa = atoi(optarg); break; + case 'b': sb = atoi(optarg); break; + case 'q': gapo = atoi(optarg); break; + case 'r': gape = atoi(optarg); break; + case 't': minsc = atoi(optarg); break; + case 'f': forward_only = 1; break; + case '1': xtra |= KSW_XBYTE; break; + } + } + if (optind + 2 > argc) { + fprintf(stderr, "Usage: ksw [-1] [-f] [-a%d] [-b%d] [-q%d] [-r%d] [-t%d] \n", sa, sb, gapo, gape, minsc); + return 1; + } + if (minsc > 0xffff) minsc = 0xffff; + xtra |= KSW_XSUBO | minsc; + // initialize scoring matrix + for (i = k = 0; i < 4; ++i) { + for (j = 0; j < 4; ++j) + mat[k++] = i == j? sa : -sb; + mat[k++] = 0; // ambiguous base + } + for (j = 0; j < 5; ++j) mat[k++] = 0; + // open file + fpt = gzopen(argv[optind], "r"); kst = kseq_init(fpt); + fpq = gzopen(argv[optind+1], "r"); ksq = kseq_init(fpq); + // all-pair alignment + while (kseq_read(ksq) > 0) { + kswq_t *q[2] = {0, 0}; + kswr_t r; + for (i = 0; i < (int)ksq->seq.l; ++i) ksq->seq.s[i] = seq_nt4_table[(int)ksq->seq.s[i]]; + if (!forward_only) { // reverse + if ((int)ksq->seq.m > max_rseq) { + max_rseq = ksq->seq.m; + rseq = (uint8_t*)realloc(rseq, max_rseq); + } + for (i = 0, j = ksq->seq.l - 1; i < (int)ksq->seq.l; ++i, --j) + rseq[j] = ksq->seq.s[i] == 4? 4 : 3 - ksq->seq.s[i]; + } + gzrewind(fpt); kseq_rewind(kst); + while (kseq_read(kst) > 0) { + for (i = 0; i < (int)kst->seq.l; ++i) kst->seq.s[i] = seq_nt4_table[(int)kst->seq.s[i]]; + r = ksw_align(ksq->seq.l, (uint8_t*)ksq->seq.s, kst->seq.l, (uint8_t*)kst->seq.s, 5, mat, gapo, gape, xtra, &q[0]); + if (r.score >= minsc) + printf("%s\t%d\t%d\t%s\t%d\t%d\t%d\t%d\t%d\n", kst->name.s, r.tb, r.te+1, ksq->name.s, r.qb, r.qe+1, r.score, r.score2, r.te2); + if (rseq) { + r = ksw_align(ksq->seq.l, rseq, kst->seq.l, (uint8_t*)kst->seq.s, 5, mat, gapo, gape, xtra, &q[1]); + if (r.score >= minsc) + printf("%s\t%d\t%d\t%s\t%d\t%d\t%d\t%d\t%d\n", kst->name.s, r.tb, r.te+1, ksq->name.s, (int)ksq->seq.l - r.qb, (int)ksq->seq.l - 1 - r.qe, r.score, r.score2, r.te2); + } + } + free(q[0]); free(q[1]); + } + free(rseq); + kseq_destroy(kst); gzclose(fpt); + kseq_destroy(ksq); gzclose(fpq); + return 0; +} +#endif diff --git a/vere/ext/h2o/patches/h2o-2.2.6/deps/klib/test/kbit_test.c b/vere/ext/h2o/patches/h2o-2.2.6/deps/klib/test/kbit_test.c new file mode 100644 index 0000000..ece2a45 --- /dev/null +++ b/vere/ext/h2o/patches/h2o-2.2.6/deps/klib/test/kbit_test.c @@ -0,0 +1,141 @@ +#include +#include +#include +#if defined(URBIT_RUNTIME_CPU_AARCH64) +#include "sse2neon.h" +#else +#include +#endif +#include "kbit.h" + +// from bowtie-0.9.8.1 +inline static int bt1_pop64(uint64_t x) // the kbi_popcount64() equivalence; similar to popcount_2() in wiki +{ + x -= ((x >> 1) & 0x5555555555555555llu); + x = (x & 0x3333333333333333llu) + ((x >> 2) & 0x3333333333333333llu); + x = (x + (x >> 4)) & 0x0F0F0F0F0F0F0F0Fllu; + x = x + (x >> 8); + x = x + (x >> 16); + x = x + (x >> 32); + return x & 0x3F; +} + +inline static int bt1_countInU64(uint64_t dw, int c) // the kbi_DNAcount64() equivalence +{ + uint64_t dwA = dw & 0xAAAAAAAAAAAAAAAAllu; + uint64_t dwNA = dw & ~0xAAAAAAAAAAAAAAAAllu; + uint64_t tmp; + switch (c) { + case 0: tmp = (dwA >> 1) | dwNA; break; + case 1: tmp = ~(dwA >> 1) & dwNA; break; + case 2: tmp = (dwA >> 1) & ~dwNA; break; + default: tmp = (dwA >> 1) & dwNA; + } + tmp = bt1_pop64(tmp); + if (c == 0) tmp = 32 - tmp; + return (int)tmp; +} + +// from bigmagic +static uint32_t sse2_bit_count32(const __m128i* block, const __m128i* block_end) +{ + const unsigned mu1 = 0x55555555; + const unsigned mu2 = 0x33333333; + const unsigned mu3 = 0x0F0F0F0F; + const unsigned mu4 = 0x0000003F; + + uint32_t tcnt[4]; + + // Loading masks + __m128i m1 = _mm_set_epi32 (mu1, mu1, mu1, mu1); + __m128i m2 = _mm_set_epi32 (mu2, mu2, mu2, mu2); + __m128i m3 = _mm_set_epi32 (mu3, mu3, mu3, mu3); + __m128i m4 = _mm_set_epi32 (mu4, mu4, mu4, mu4); + __m128i mcnt; + mcnt = _mm_xor_si128(m1, m1); // cnt = 0 + + __m128i tmp1, tmp2; + do + { + __m128i b = _mm_load_si128(block); + ++block; + + // b = (b & 0x55555555) + (b >> 1 & 0x55555555); + tmp1 = _mm_srli_epi32(b, 1); // tmp1 = (b >> 1 & 0x55555555) + tmp1 = _mm_and_si128(tmp1, m1); + tmp2 = _mm_and_si128(b, m1); // tmp2 = (b & 0x55555555) + b = _mm_add_epi32(tmp1, tmp2); // b = tmp1 + tmp2 + + // b = (b & 0x33333333) + (b >> 2 & 0x33333333); + tmp1 = _mm_srli_epi32(b, 2); // (b >> 2 & 0x33333333) + tmp1 = _mm_and_si128(tmp1, m2); + tmp2 = _mm_and_si128(b, m2); // (b & 0x33333333) + b = _mm_add_epi32(tmp1, tmp2); // b = tmp1 + tmp2 + + // b = (b + (b >> 4)) & 0x0F0F0F0F; + tmp1 = _mm_srli_epi32(b, 4); // tmp1 = b >> 4 + b = _mm_add_epi32(b, tmp1); // b = b + (b >> 4) + b = _mm_and_si128(b, m3); // & 0x0F0F0F0F + + // b = b + (b >> 8); + tmp1 = _mm_srli_epi32 (b, 8); // tmp1 = b >> 8 + b = _mm_add_epi32(b, tmp1); // b = b + (b >> 8) + + // b = (b + (b >> 16)) & 0x0000003F; + tmp1 = _mm_srli_epi32 (b, 16); // b >> 16 + b = _mm_add_epi32(b, tmp1); // b + (b >> 16) + b = _mm_and_si128(b, m4); // (b >> 16) & 0x0000003F; + + mcnt = _mm_add_epi32(mcnt, b); // mcnt += b + + } while (block < block_end); + + _mm_store_si128((__m128i*)tcnt, mcnt); + + return tcnt[0] + tcnt[1] + tcnt[2] + tcnt[3]; +} + +int main(void) +{ + int i, N = 100000000; + uint64_t *x, cnt; + clock_t t; + int c = 1; + + x = (uint64_t*)calloc(N, 8); + srand48(11); + for (i = 0; i < N; ++i) + x[i] = (uint64_t)lrand48() << 32 ^ lrand48(); + + fprintf(stderr, "\n===> Calculate # of 1 in an integer (popcount) <===\n"); + + t = clock(); cnt = 0; + for (i = 0; i < N; ++i) cnt += kbi_popcount64(x[i]); + fprintf(stderr, "%20s\t%20ld\t%10.6f\n", "kbit", (long)cnt, (double)(clock() - t) / CLOCKS_PER_SEC); + + t = clock(); cnt = 0; + for (i = 0; i < N; ++i) cnt += bt1_pop64(x[i]); + fprintf(stderr, "%20s\t%20ld\t%10.6f\n", "wiki-popcount_2", (long)cnt, (double)(clock() - t) / CLOCKS_PER_SEC); + + t = clock(); cnt = 0; + for (i = 0; i < N; ++i) cnt += __builtin_popcountl(x[i]); + fprintf(stderr, "%20s\t%20ld\t%10.6f\n", "__builtin_popcountl", (long)cnt, (double)(clock() - t) / CLOCKS_PER_SEC); + + t = clock(); cnt = 0; + cnt += sse2_bit_count32((__m128i*)x, (__m128i*)(x+N)); + fprintf(stderr, "%20s\t%20ld\t%10.6f\n", "SSE2-32bit", (long)cnt, (double)(clock() - t) / CLOCKS_PER_SEC); + + fprintf(stderr, "\n===> Count '%c' in 2-bit encoded integers <===\n", "ACGT"[c]); + + t = clock(); cnt = 0; + for (i = 0; i < N; ++i) cnt += kbi_DNAcount64(x[i], c); + fprintf(stderr, "%20s\t%20ld\t%10.6f\n", "kbit", (long)cnt, (double)(clock() - t) / CLOCKS_PER_SEC); + + t = clock(); cnt = 0; + for (i = 0; i < N; ++i) cnt += bt1_countInU64(x[i], c); + fprintf(stderr, "%20s\t%20ld\t%10.6f\n", "bowtie1", (long)cnt, (double)(clock() - t) / CLOCKS_PER_SEC); + + fprintf(stderr, "\n"); + free(x); + return 0; +} diff --git a/vere/ext/h2o/patches/h2o-2.2.6/deps/picohttpparser/picohttpparser.c b/vere/ext/h2o/patches/h2o-2.2.6/deps/picohttpparser/picohttpparser.c new file mode 100644 index 0000000..c786f4b --- /dev/null +++ b/vere/ext/h2o/patches/h2o-2.2.6/deps/picohttpparser/picohttpparser.c @@ -0,0 +1,622 @@ +/* + * Copyright (c) 2009-2014 Kazuho Oku, Tokuhiro Matsuno, Daisuke Murase, + * Shigeo Mitsunari + * + * The software is licensed under either the MIT License (below) or the Perl + * license. + * + * 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 +#ifdef __SSE4_2__ +#if defined(URBIT_RUNTIME_CPU_AARCH64) +#include "sse2neon.h" +#elif defined(_MSC_VER) +#include +#else +#include +#endif +#endif +#include "picohttpparser.h" + +/* $Id: 376b401445aeea5fc39b0d3f020fc2fa0c69b69b $ */ + +#if __GNUC__ >= 3 +#define likely(x) __builtin_expect(!!(x), 1) +#define unlikely(x) __builtin_expect(!!(x), 0) +#else +#define likely(x) (x) +#define unlikely(x) (x) +#endif + +#ifdef _MSC_VER +#define ALIGNED(n) _declspec(align(n)) +#else +#define ALIGNED(n) __attribute__((aligned(n))) +#endif + +#define IS_PRINTABLE_ASCII(c) ((unsigned char)(c)-040u < 0137u) + +#define CHECK_EOF() \ + if (buf == buf_end) { \ + *ret = -2; \ + return NULL; \ + } + +#define EXPECT_CHAR_NO_CHECK(ch) \ + if (*buf++ != ch) { \ + *ret = -1; \ + return NULL; \ + } + +#define EXPECT_CHAR(ch) \ + CHECK_EOF(); \ + EXPECT_CHAR_NO_CHECK(ch); + +#define ADVANCE_TOKEN(tok, toklen) \ + do { \ + const char *tok_start = buf; \ + static const char ALIGNED(16) ranges2[] = "\000\040\177\177"; \ + int found2; \ + buf = findchar_fast(buf, buf_end, ranges2, sizeof(ranges2) - 1, &found2); \ + if (!found2) { \ + CHECK_EOF(); \ + } \ + while (1) { \ + if (*buf == ' ') { \ + break; \ + } else if (unlikely(!IS_PRINTABLE_ASCII(*buf))) { \ + if ((unsigned char)*buf < '\040' || *buf == '\177') { \ + *ret = -1; \ + return NULL; \ + } \ + } \ + ++buf; \ + CHECK_EOF(); \ + } \ + tok = tok_start; \ + toklen = buf - tok_start; \ + } while (0) + +static const char *token_char_map = "\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\1\0\1\1\1\1\1\0\0\1\1\0\1\1\0\1\1\1\1\1\1\1\1\1\1\0\0\0\0\0\0" + "\0\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\0\0\0\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\0\1\0\1\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; + +static const char *findchar_fast(const char *buf, const char *buf_end, const char *ranges, size_t ranges_size, int *found) +{ + *found = 0; +#if __SSE4_2__ + if (likely(buf_end - buf >= 16)) { + __m128i ranges16 = _mm_loadu_si128((const __m128i *)ranges); + + size_t left = (buf_end - buf) & ~15; + do { + __m128i b16 = _mm_loadu_si128((const __m128i *)buf); + int r = _mm_cmpestri(ranges16, ranges_size, b16, 16, _SIDD_LEAST_SIGNIFICANT | _SIDD_CMP_RANGES | _SIDD_UBYTE_OPS); + if (unlikely(r != 16)) { + buf += r; + *found = 1; + break; + } + buf += 16; + left -= 16; + } while (likely(left != 0)); + } +#else + /* suppress unused parameter warning */ + (void)buf_end; + (void)ranges; + (void)ranges_size; +#endif + return buf; +} + +static const char *get_token_to_eol(const char *buf, const char *buf_end, const char **token, size_t *token_len, int *ret) +{ + const char *token_start = buf; + +#ifdef __SSE4_2__ + static const char ranges1[] = "\0\010" + /* allow HT */ + "\012\037" + /* allow SP and up to but not including DEL */ + "\177\177" + /* allow chars w. MSB set */ + ; + int found; + buf = findchar_fast(buf, buf_end, ranges1, sizeof(ranges1) - 1, &found); + if (found) + goto FOUND_CTL; +#else + /* find non-printable char within the next 8 bytes, this is the hottest code; manually inlined */ + while (likely(buf_end - buf >= 8)) { +#define DOIT() \ + do { \ + if (unlikely(!IS_PRINTABLE_ASCII(*buf))) \ + goto NonPrintable; \ + ++buf; \ + } while (0) + DOIT(); + DOIT(); + DOIT(); + DOIT(); + DOIT(); + DOIT(); + DOIT(); + DOIT(); +#undef DOIT + continue; + NonPrintable: + if ((likely((unsigned char)*buf < '\040') && likely(*buf != '\011')) || unlikely(*buf == '\177')) { + goto FOUND_CTL; + } + ++buf; + } +#endif + for (;; ++buf) { + CHECK_EOF(); + if (unlikely(!IS_PRINTABLE_ASCII(*buf))) { + if ((likely((unsigned char)*buf < '\040') && likely(*buf != '\011')) || unlikely(*buf == '\177')) { + goto FOUND_CTL; + } + } + } +FOUND_CTL: + if (likely(*buf == '\015')) { + ++buf; + EXPECT_CHAR('\012'); + *token_len = buf - 2 - token_start; + } else if (*buf == '\012') { + *token_len = buf - token_start; + ++buf; + } else { + *ret = -1; + return NULL; + } + *token = token_start; + + return buf; +} + +static const char *is_complete(const char *buf, const char *buf_end, size_t last_len, int *ret) +{ + int ret_cnt = 0; + buf = last_len < 3 ? buf : buf + last_len - 3; + + while (1) { + CHECK_EOF(); + if (*buf == '\015') { + ++buf; + CHECK_EOF(); + EXPECT_CHAR('\012'); + ++ret_cnt; + } else if (*buf == '\012') { + ++buf; + ++ret_cnt; + } else { + ++buf; + ret_cnt = 0; + } + if (ret_cnt == 2) { + return buf; + } + } + + *ret = -2; + return NULL; +} + +#define PARSE_INT(valp_, mul_) \ + if (*buf < '0' || '9' < *buf) { \ + buf++; \ + *ret = -1; \ + return NULL; \ + } \ + *(valp_) = (mul_) * (*buf++ - '0'); + +#define PARSE_INT_3(valp_) \ + do { \ + int res_ = 0; \ + PARSE_INT(&res_, 100) \ + *valp_ = res_; \ + PARSE_INT(&res_, 10) \ + *valp_ += res_; \ + PARSE_INT(&res_, 1) \ + *valp_ += res_; \ + } while (0) + +/* returned pointer is always within [buf, buf_end), or null */ +static const char *parse_http_version(const char *buf, const char *buf_end, int *minor_version, int *ret) +{ + /* we want at least [HTTP/1.] to try to parse */ + if (buf_end - buf < 9) { + *ret = -2; + return NULL; + } + EXPECT_CHAR_NO_CHECK('H'); + EXPECT_CHAR_NO_CHECK('T'); + EXPECT_CHAR_NO_CHECK('T'); + EXPECT_CHAR_NO_CHECK('P'); + EXPECT_CHAR_NO_CHECK('/'); + EXPECT_CHAR_NO_CHECK('1'); + EXPECT_CHAR_NO_CHECK('.'); + PARSE_INT(minor_version, 1); + return buf; +} + +static const char *parse_headers(const char *buf, const char *buf_end, struct phr_header *headers, size_t *num_headers, + size_t max_headers, int *ret) +{ + for (;; ++*num_headers) { + CHECK_EOF(); + if (*buf == '\015') { + ++buf; + EXPECT_CHAR('\012'); + break; + } else if (*buf == '\012') { + ++buf; + break; + } + if (*num_headers == max_headers) { + *ret = -1; + return NULL; + } + if (!(*num_headers != 0 && (*buf == ' ' || *buf == '\t'))) { + /* parsing name, but do not discard SP before colon, see + * http://www.mozilla.org/security/announce/2006/mfsa2006-33.html */ + headers[*num_headers].name = buf; + static const char ALIGNED(16) ranges1[] = "\x00 " /* control chars and up to SP */ + "\"\"" /* 0x22 */ + "()" /* 0x28,0x29 */ + ",," /* 0x2c */ + "//" /* 0x2f */ + ":@" /* 0x3a-0x40 */ + "[]" /* 0x5b-0x5d */ + "{\377"; /* 0x7b-0xff */ + int found; + buf = findchar_fast(buf, buf_end, ranges1, sizeof(ranges1) - 1, &found); + if (!found) { + CHECK_EOF(); + } + while (1) { + if (*buf == ':') { + break; + } else if (!token_char_map[(unsigned char)*buf]) { + *ret = -1; + return NULL; + } + ++buf; + CHECK_EOF(); + } + if ((headers[*num_headers].name_len = buf - headers[*num_headers].name) == 0) { + *ret = -1; + return NULL; + } + ++buf; + for (;; ++buf) { + CHECK_EOF(); + if (!(*buf == ' ' || *buf == '\t')) { + break; + } + } + } else { + headers[*num_headers].name = NULL; + headers[*num_headers].name_len = 0; + } + if ((buf = get_token_to_eol(buf, buf_end, &headers[*num_headers].value, &headers[*num_headers].value_len, ret)) == NULL) { + return NULL; + } + } + return buf; +} + +static const char *parse_request(const char *buf, const char *buf_end, const char **method, size_t *method_len, const char **path, + size_t *path_len, int *minor_version, struct phr_header *headers, size_t *num_headers, + size_t max_headers, int *ret) +{ + /* skip first empty line (some clients add CRLF after POST content) */ + CHECK_EOF(); + if (*buf == '\015') { + ++buf; + EXPECT_CHAR('\012'); + } else if (*buf == '\012') { + ++buf; + } + + /* parse request line */ + ADVANCE_TOKEN(*method, *method_len); + ++buf; + ADVANCE_TOKEN(*path, *path_len); + ++buf; + if ((buf = parse_http_version(buf, buf_end, minor_version, ret)) == NULL) { + return NULL; + } + if (*buf == '\015') { + ++buf; + EXPECT_CHAR('\012'); + } else if (*buf == '\012') { + ++buf; + } else { + *ret = -1; + return NULL; + } + + return parse_headers(buf, buf_end, headers, num_headers, max_headers, ret); +} + +int phr_parse_request(const char *buf_start, size_t len, const char **method, size_t *method_len, const char **path, + size_t *path_len, int *minor_version, struct phr_header *headers, size_t *num_headers, size_t last_len) +{ + const char *buf = buf_start, *buf_end = buf_start + len; + size_t max_headers = *num_headers; + int r; + + *method = NULL; + *method_len = 0; + *path = NULL; + *path_len = 0; + *minor_version = -1; + *num_headers = 0; + + /* if last_len != 0, check if the request is complete (a fast countermeasure + againt slowloris */ + if (last_len != 0 && is_complete(buf, buf_end, last_len, &r) == NULL) { + return r; + } + + if ((buf = parse_request(buf, buf_end, method, method_len, path, path_len, minor_version, headers, num_headers, max_headers, + &r)) == NULL) { + return r; + } + + return (int)(buf - buf_start); +} + +static const char *parse_response(const char *buf, const char *buf_end, int *minor_version, int *status, const char **msg, + size_t *msg_len, struct phr_header *headers, size_t *num_headers, size_t max_headers, int *ret) +{ + /* parse "HTTP/1.x" */ + if ((buf = parse_http_version(buf, buf_end, minor_version, ret)) == NULL) { + return NULL; + } + /* skip space */ + if (*buf++ != ' ') { + *ret = -1; + return NULL; + } + /* parse status code, we want at least [:digit:][:digit:][:digit:] to try to parse */ + if (buf_end - buf < 4) { + *ret = -2; + return NULL; + } + PARSE_INT_3(status); + + /* skip space */ + if (*buf++ != ' ') { + *ret = -1; + return NULL; + } + /* get message */ + if ((buf = get_token_to_eol(buf, buf_end, msg, msg_len, ret)) == NULL) { + return NULL; + } + + return parse_headers(buf, buf_end, headers, num_headers, max_headers, ret); +} + +int phr_parse_response(const char *buf_start, size_t len, int *minor_version, int *status, const char **msg, size_t *msg_len, + struct phr_header *headers, size_t *num_headers, size_t last_len) +{ + const char *buf = buf_start, *buf_end = buf + len; + size_t max_headers = *num_headers; + int r; + + *minor_version = -1; + *status = 0; + *msg = NULL; + *msg_len = 0; + *num_headers = 0; + + /* if last_len != 0, check if the response is complete (a fast countermeasure + against slowloris */ + if (last_len != 0 && is_complete(buf, buf_end, last_len, &r) == NULL) { + return r; + } + + if ((buf = parse_response(buf, buf_end, minor_version, status, msg, msg_len, headers, num_headers, max_headers, &r)) == NULL) { + return r; + } + + return (int)(buf - buf_start); +} + +int phr_parse_headers(const char *buf_start, size_t len, struct phr_header *headers, size_t *num_headers, size_t last_len) +{ + const char *buf = buf_start, *buf_end = buf + len; + size_t max_headers = *num_headers; + int r; + + *num_headers = 0; + + /* if last_len != 0, check if the response is complete (a fast countermeasure + against slowloris */ + if (last_len != 0 && is_complete(buf, buf_end, last_len, &r) == NULL) { + return r; + } + + if ((buf = parse_headers(buf, buf_end, headers, num_headers, max_headers, &r)) == NULL) { + return r; + } + + return (int)(buf - buf_start); +} + +enum { + CHUNKED_IN_CHUNK_SIZE, + CHUNKED_IN_CHUNK_EXT, + CHUNKED_IN_CHUNK_DATA, + CHUNKED_IN_CHUNK_CRLF, + CHUNKED_IN_TRAILERS_LINE_HEAD, + CHUNKED_IN_TRAILERS_LINE_MIDDLE +}; + +static int decode_hex(int ch) +{ + if ('0' <= ch && ch <= '9') { + return ch - '0'; + } else if ('A' <= ch && ch <= 'F') { + return ch - 'A' + 0xa; + } else if ('a' <= ch && ch <= 'f') { + return ch - 'a' + 0xa; + } else { + return -1; + } +} + +ssize_t phr_decode_chunked(struct phr_chunked_decoder *decoder, char *buf, size_t *_bufsz) +{ + size_t dst = 0, src = 0, bufsz = *_bufsz; + ssize_t ret = -2; /* incomplete */ + + while (1) { + switch (decoder->_state) { + case CHUNKED_IN_CHUNK_SIZE: + for (;; ++src) { + int v; + if (src == bufsz) + goto Exit; + if ((v = decode_hex(buf[src])) == -1) { + if (decoder->_hex_count == 0) { + ret = -1; + goto Exit; + } + break; + } + if (decoder->_hex_count == sizeof(size_t) * 2) { + ret = -1; + goto Exit; + } + decoder->bytes_left_in_chunk = decoder->bytes_left_in_chunk * 16 + v; + ++decoder->_hex_count; + } + decoder->_hex_count = 0; + decoder->_state = CHUNKED_IN_CHUNK_EXT; + /* fallthru */ + case CHUNKED_IN_CHUNK_EXT: + /* RFC 7230 A.2 "Line folding in chunk extensions is disallowed" */ + for (;; ++src) { + if (src == bufsz) + goto Exit; + if (buf[src] == '\012') + break; + } + ++src; + if (decoder->bytes_left_in_chunk == 0) { + if (decoder->consume_trailer) { + decoder->_state = CHUNKED_IN_TRAILERS_LINE_HEAD; + break; + } else { + goto Complete; + } + } + decoder->_state = CHUNKED_IN_CHUNK_DATA; + /* fallthru */ + case CHUNKED_IN_CHUNK_DATA: { + size_t avail = bufsz - src; + if (avail < decoder->bytes_left_in_chunk) { + if (dst != src) + memmove(buf + dst, buf + src, avail); + src += avail; + dst += avail; + decoder->bytes_left_in_chunk -= avail; + goto Exit; + } + if (dst != src) + memmove(buf + dst, buf + src, decoder->bytes_left_in_chunk); + src += decoder->bytes_left_in_chunk; + dst += decoder->bytes_left_in_chunk; + decoder->bytes_left_in_chunk = 0; + decoder->_state = CHUNKED_IN_CHUNK_CRLF; + } + /* fallthru */ + case CHUNKED_IN_CHUNK_CRLF: + for (;; ++src) { + if (src == bufsz) + goto Exit; + if (buf[src] != '\015') + break; + } + if (buf[src] != '\012') { + ret = -1; + goto Exit; + } + ++src; + decoder->_state = CHUNKED_IN_CHUNK_SIZE; + break; + case CHUNKED_IN_TRAILERS_LINE_HEAD: + for (;; ++src) { + if (src == bufsz) + goto Exit; + if (buf[src] != '\015') + break; + } + if (buf[src++] == '\012') + goto Complete; + decoder->_state = CHUNKED_IN_TRAILERS_LINE_MIDDLE; + /* fallthru */ + case CHUNKED_IN_TRAILERS_LINE_MIDDLE: + for (;; ++src) { + if (src == bufsz) + goto Exit; + if (buf[src] == '\012') + break; + } + ++src; + decoder->_state = CHUNKED_IN_TRAILERS_LINE_HEAD; + break; + default: + assert(!"decoder is corrupt"); + } + } + +Complete: + ret = bufsz - src; +Exit: + if (dst != src) + memmove(buf + dst, buf + src, bufsz - src); + *_bufsz = dst; + return ret; +} + +int phr_decode_chunked_is_in_data(struct phr_chunked_decoder *decoder) +{ + return decoder->_state == CHUNKED_IN_CHUNK_DATA; +} + +#undef CHECK_EOF +#undef EXPECT_CHAR +#undef ADVANCE_TOKEN diff --git a/vere/ext/libuv/build.zig b/vere/ext/libuv/build.zig new file mode 100644 index 0000000..4f6a58e --- /dev/null +++ b/vere/ext/libuv/build.zig @@ -0,0 +1,170 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const uv_c = b.dependency("libuv", .{ + .target = target, + .optimize = optimize, + }); + + const uv = b.addStaticLibrary(.{ + .name = "libuv", + .target = target, + .optimize = optimize, + }); + + uv.linkLibC(); + + uv.addIncludePath(uv_c.path("src")); + uv.addIncludePath(uv_c.path("include")); + + var uv_flags = std.ArrayList([]const u8).init(b.allocator); + defer uv_flags.deinit(); + + try uv_flags.appendSlice(&.{ + "-fno-sanitize=all", + "-DHAVE_STDIO_H=1", + "-DHAVE_STDLIB_H=1", + "-DHAVE_STRING_H=1", + "-DHAVE_INTTYPES_H=1", + "-DHAVE_STDINT_H=1", + "-DHAVE_STRINGS_H=1", + "-DHAVE_SYS_STAT_H=1", + "-DHAVE_SYS_TYPES_H=1", + "-DHAVE_UNISTD_H=1", + "-DHAVE_DLFCN_H=1", + "-DHAVE_PTHREAD_PRIO_INHERIT=1", + "-DSTDC_HEADERS=1", + "-DSUPPORT_ATTRIBUTE_VISIBILITY_DEFAULT=1", + "-DSUPPORT_FLAG_VISIBILITY=1", + }); + + if (t.os.tag != .windows) { + try uv_flags.appendSlice(&.{ + "-D_FILE_OFFSET_BITS=64", + "-D_LARGEFILE_SOURCE", + }); + } + + _ = switch (t.os.tag) { + .macos => try uv_flags.appendSlice(&.{ + "-D_DARWIN_UNLIMITED_SELECT=1", + "-D_DARWIN_USE_64_BIT_INODE=1", + }), + .linux => try uv_flags.appendSlice(&.{ + "-D_GNU_SOURCE", + "-D_POSIX_C_SOURCE=200112", + }), + .windows => try uv_flags.appendSlice(&.{ + "-DWIN32_LEAN_AND_MEAN", + "-D_WIN32_WINNT=0x0602", + "-U_DEBUG", + }), + else => null, + }; + + uv.addCSourceFiles(.{ + .root = uv_c.path("src"), + .files = switch (t.os.tag) { + .macos => &uv_srcs_macos, + .linux => &uv_srcs_linux, + .windows => &uv_srcs_windows, + else => &.{}, + }, + .flags = uv_flags.items, + }); + + uv.installHeadersDirectory(uv_c.path("include"), "", .{}); + + if (t.os.tag == .windows) { + uv.linkSystemLibrary("ole32"); // CoTaskMemFree + uv.linkSystemLibrary("dbghelp"); // MiniDumpWriteDump, SymGetOptions, SymSetOptions + uv.linkSystemLibrary("userenv"); // GetUserProfileDirectoryW + uv.linkSystemLibrary("iphlpapi"); // GetAdaptersAddresses, ConvertInterface* + } + + b.installArtifact(uv); +} + +const uv_srcs = [_][]const u8{ + "fs-poll.c", + "idna.c", + "inet.c", + "random.c", + "strscpy.c", + "strtok.c", + "threadpool.c", + "timer.c", + "uv-common.c", + "uv-data-getter-setters.c", + "version.c", +}; + +const uv_srcs_unix = uv_srcs ++ [_][]const u8{ + "unix/async.c", + "unix/core.c", + "unix/dl.c", + "unix/fs.c", + "unix/getaddrinfo.c", + "unix/getnameinfo.c", + "unix/loop-watcher.c", + "unix/loop.c", + "unix/pipe.c", + "unix/poll.c", + "unix/process.c", + "unix/proctitle.c", + "unix/random-devurandom.c", + "unix/signal.c", + "unix/stream.c", + "unix/tcp.c", + "unix/thread.c", + "unix/tty.c", + "unix/udp.c", +}; + +const uv_srcs_linux = uv_srcs_unix ++ [_][]const u8{ + "unix/linux.c", + "unix/procfs-exepath.c", + "unix/random-getrandom.c", + "unix/random-sysctl-linux.c", +}; + +const uv_srcs_macos = uv_srcs_unix ++ [_][]const u8{ + "unix/bsd-ifaddrs.c", + "unix/kqueue.c", + "unix/random-getentropy.c", + "unix/darwin-proctitle.c", + "unix/darwin.c", + "unix/fsevents.c", +}; + +const uv_srcs_windows = uv_srcs ++ [_][]const u8{ + "win/async.c", + "win/core.c", + "win/detect-wakeup.c", + "win/dl.c", + "win/error.c", + "win/fs.c", + "win/fs-event.c", + "win/getaddrinfo.c", + "win/getnameinfo.c", + "win/handle.c", + "win/loop-watcher.c", + "win/pipe.c", + "win/thread.c", + "win/poll.c", + "win/process.c", + "win/process-stdio.c", + "win/signal.c", + "win/snprintf.c", + "win/stream.c", + "win/tcp.c", + "win/tty.c", + "win/udp.c", + "win/util.c", + "win/winapi.c", + "win/winsock.c", +}; diff --git a/vere/ext/libuv/build.zig.zon b/vere/ext/libuv/build.zig.zon new file mode 100644 index 0000000..35e72b3 --- /dev/null +++ b/vere/ext/libuv/build.zig.zon @@ -0,0 +1,14 @@ +.{ + .name = .libuv, + .version = "0.0.1", + .fingerprint = 0x7cb3932c3a70c13e, + .dependencies = .{ + .libuv = .{ + .url = "https://dist.libuv.org/dist/v1.50.0/libuv-v1.50.0.tar.gz", + .hash = "N-V-__8AAH34QwB6wi5eQK_lFbfDGSN3hRE8l-6Ep198ZsGg", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/lmdb/build.zig b/vere/ext/lmdb/build.zig new file mode 100644 index 0000000..74651cc --- /dev/null +++ b/vere/ext/lmdb/build.zig @@ -0,0 +1,56 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const lmdb_c = b.dependency("lmdb", .{ + .target = target, + .optimize = optimize, + }); + + const lmdb = b.addStaticLibrary(.{ + .name = "lmdb", + .target = target, + .optimize = optimize, + }); + + lmdb.linkLibC(); + + lmdb.addIncludePath(lmdb_c.path("libraries/liblmdb")); + + var flags = std.ArrayList([]const u8).init(b.allocator); + defer flags.deinit(); + + try flags.appendSlice(&.{ + "-fno-sanitize=all", + "-pthread", + "-O2", + "-g", + "-W", + "-Wall", + "-Wno-unused-parameter", + "-Wbad-function-cast", + "-Wuninitialized", + }); + + if (target.result.os.tag.isDarwin()) { + try flags.appendSlice(&.{"-DURBIT_RUNTIME_OS_DARWIN"}); + } + + lmdb.addCSourceFiles(.{ + .root = lmdb_c.path("libraries/liblmdb"), + .files = &.{"midl.c"}, + .flags = flags.items, + }); + + lmdb.addCSourceFiles(.{ + .root = b.path("patches/lmdb-0.9.29"), + .files = &.{"mdb.c"}, + .flags = flags.items, + }); + + lmdb.installHeader(lmdb_c.path("libraries/liblmdb/lmdb.h"), "lmdb/lmdb.h"); + + b.installArtifact(lmdb); +} diff --git a/vere/ext/lmdb/build.zig.zon b/vere/ext/lmdb/build.zig.zon new file mode 100644 index 0000000..70fd479 --- /dev/null +++ b/vere/ext/lmdb/build.zig.zon @@ -0,0 +1,14 @@ +.{ + .name = .lmdb, + .version = "0.0.1", + .fingerprint = 0xb2966103f9c1166a, + .dependencies = .{ + .lmdb = .{ + .url = "https://github.com/LMDB/lmdb/archive/refs/tags/LMDB_0.9.29.tar.gz", + .hash = "N-V-__8AAHEmCAAI5Cwrnkb4JRA4oi95aN3cF60uycJ42QMg", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/lmdb/patches/lmdb-0.9.29/mdb.c b/vere/ext/lmdb/patches/lmdb-0.9.29/mdb.c new file mode 100644 index 0000000..7c90004 --- /dev/null +++ b/vere/ext/lmdb/patches/lmdb-0.9.29/mdb.c @@ -0,0 +1,10324 @@ +/** @file mdb.c + * @brief Lightning memory-mapped database library + * + * A Btree-based database management library modeled loosely on the + * BerkeleyDB API, but much simplified. + */ +/* + * Copyright 2011-2021 Howard Chu, Symas Corp. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in the file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . + * + * This code is derived from btree.c written by Martin Hedenfalk. + * + * Copyright (c) 2009, 2010 Martin Hedenfalk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE 1 +#endif +#if defined(__WIN64__) +#define _FILE_OFFSET_BITS 64 +#endif +#ifdef _WIN32 +#include +#include +#include /* get wcscpy() */ + +/** getpid() returns int; MinGW defines pid_t but MinGW64 typedefs it + * as int64 which is wrong. MSVC doesn't define it at all, so just + * don't use it. + */ +#define MDB_PID_T int +#define MDB_THR_T DWORD +#include +#include +#ifdef __GNUC__ +# include +#else +# define LITTLE_ENDIAN 1234 +# define BIG_ENDIAN 4321 +# define BYTE_ORDER LITTLE_ENDIAN +# ifndef SSIZE_MAX +# define SSIZE_MAX INT_MAX +# endif +#endif +#else +#include +#include +#define MDB_PID_T pid_t +#define MDB_THR_T pthread_t +#include +#include +#include +#ifdef HAVE_SYS_FILE_H +#include +#endif +#include +#endif + +#if defined(__mips) && defined(__linux) +/* MIPS has cache coherency issues, requires explicit cache control */ +#include +extern int cacheflush(char *addr, int nbytes, int cache); +#define CACHEFLUSH(addr, bytes, cache) cacheflush(addr, bytes, cache) +#else +#define CACHEFLUSH(addr, bytes, cache) +#endif + +#if defined(__linux) && !defined(MDB_FDATASYNC_WORKS) +/** fdatasync is broken on ext3/ext4fs on older kernels, see + * description in #mdb_env_open2 comments. You can safely + * define MDB_FDATASYNC_WORKS if this code will only be run + * on kernels 3.6 and newer. + */ +#define BROKEN_FDATASYNC +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _MSC_VER +#include +typedef SSIZE_T ssize_t; +#else +#include +#endif + +#if defined(__sun) || defined(ANDROID) +/* Most platforms have posix_memalign, older may only have memalign */ +#define HAVE_MEMALIGN 1 +#include +/* On Solaris, we need the POSIX sigwait function */ +#if defined (__sun) +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +#endif + +#if !(defined(BYTE_ORDER) || defined(__BYTE_ORDER)) +#include +#include /* defines BYTE_ORDER on HPUX and Solaris */ +#endif + +#if defined(__FreeBSD__) && defined(__FreeBSD_version) && __FreeBSD_version >= 1100110 +# define MDB_USE_POSIX_MUTEX 1 +# define MDB_USE_ROBUST 1 +#elif defined(__APPLE__) || defined (BSD) || defined(__FreeBSD_kernel__) +# define MDB_USE_POSIX_SEM 1 +# define MDB_FDATASYNC fsync +#elif defined(ANDROID) +# define MDB_FDATASYNC fsync +#endif + +#ifndef _WIN32 +#include +#include +#ifdef MDB_USE_POSIX_SEM +# define MDB_USE_HASH 1 +#include +#else +#define MDB_USE_POSIX_MUTEX 1 +#endif +#endif + +#if defined(_WIN32) + defined(MDB_USE_POSIX_SEM) \ + + defined(MDB_USE_POSIX_MUTEX) != 1 +# error "Ambiguous shared-lock implementation" +#endif + +#ifdef USE_VALGRIND +#include +#define VGMEMP_CREATE(h,r,z) VALGRIND_CREATE_MEMPOOL(h,r,z) +#define VGMEMP_ALLOC(h,a,s) VALGRIND_MEMPOOL_ALLOC(h,a,s) +#define VGMEMP_FREE(h,a) VALGRIND_MEMPOOL_FREE(h,a) +#define VGMEMP_DESTROY(h) VALGRIND_DESTROY_MEMPOOL(h) +#define VGMEMP_DEFINED(a,s) VALGRIND_MAKE_MEM_DEFINED(a,s) +#else +#define VGMEMP_CREATE(h,r,z) +#define VGMEMP_ALLOC(h,a,s) +#define VGMEMP_FREE(h,a) +#define VGMEMP_DESTROY(h) +#define VGMEMP_DEFINED(a,s) +#endif + +#ifndef BYTE_ORDER +# if (defined(_LITTLE_ENDIAN) || defined(_BIG_ENDIAN)) && !(defined(_LITTLE_ENDIAN) && defined(_BIG_ENDIAN)) +/* Solaris just defines one or the other */ +# define LITTLE_ENDIAN 1234 +# define BIG_ENDIAN 4321 +# ifdef _LITTLE_ENDIAN +# define BYTE_ORDER LITTLE_ENDIAN +# else +# define BYTE_ORDER BIG_ENDIAN +# endif +# else +# define BYTE_ORDER __BYTE_ORDER +# endif +#endif + +#ifndef LITTLE_ENDIAN +#define LITTLE_ENDIAN __LITTLE_ENDIAN +#endif +#ifndef BIG_ENDIAN +#define BIG_ENDIAN __BIG_ENDIAN +#endif + +#if defined(__i386) || defined(__x86_64) || defined(_M_IX86) +#define MISALIGNED_OK 1 +#endif + +#include "lmdb.h" +#include "midl.h" + +#if (BYTE_ORDER == LITTLE_ENDIAN) == (BYTE_ORDER == BIG_ENDIAN) +# error "Unknown or unsupported endianness (BYTE_ORDER)" +#elif (-6 & 5) || CHAR_BIT != 8 || UINT_MAX < 0xffffffff || ULONG_MAX % 0xFFFF +# error "Two's complement, reasonably sized integer types, please" +#endif + +#ifdef __GNUC__ +/** Put infrequently used env functions in separate section */ +# ifdef __APPLE__ +# define ESECT __attribute__ ((section("__TEXT,text_env"))) +# else +# define ESECT __attribute__ ((section("text_env"))) +# endif +#else +#define ESECT +#endif + +#ifdef _WIN32 +#define CALL_CONV WINAPI +#else +#define CALL_CONV +#endif + +/** @defgroup internal LMDB Internals + * @{ + */ +/** @defgroup compat Compatibility Macros + * A bunch of macros to minimize the amount of platform-specific ifdefs + * needed throughout the rest of the code. When the features this library + * needs are similar enough to POSIX to be hidden in a one-or-two line + * replacement, this macro approach is used. + * @{ + */ + + /** Features under development */ +#ifndef MDB_DEVEL +#define MDB_DEVEL 0 +#endif + + /** Wrapper around __func__, which is a C99 feature */ +#if __STDC_VERSION__ >= 199901L +# define mdb_func_ __func__ +#elif __GNUC__ >= 2 || _MSC_VER >= 1300 +# define mdb_func_ __FUNCTION__ +#else +/* If a debug message says (), update the #if statements above */ +# define mdb_func_ "" +#endif + +/* Internal error codes, not exposed outside liblmdb */ +#define MDB_NO_ROOT (MDB_LAST_ERRCODE + 10) +#ifdef _WIN32 +#define MDB_OWNERDEAD ((int) WAIT_ABANDONED) +#elif defined(MDB_USE_POSIX_MUTEX) && defined(EOWNERDEAD) +#define MDB_OWNERDEAD EOWNERDEAD /**< #LOCK_MUTEX0() result if dead owner */ +#endif + +#ifdef __GLIBC__ +#define GLIBC_VER ((__GLIBC__ << 16 )| __GLIBC_MINOR__) +#endif +/** Some platforms define the EOWNERDEAD error code + * even though they don't support Robust Mutexes. + * Compile with -DMDB_USE_ROBUST=0, or use some other + * mechanism like -DMDB_USE_POSIX_SEM instead of + * -DMDB_USE_POSIX_MUTEX. + * (Posix semaphores are not robust.) + */ +#ifndef MDB_USE_ROBUST +/* Android currently lacks Robust Mutex support. So does glibc < 2.4. */ +# if defined(MDB_USE_POSIX_MUTEX) && (defined(ANDROID) || \ + (defined(__GLIBC__) && GLIBC_VER < 0x020004)) +# define MDB_USE_ROBUST 0 +# else +# define MDB_USE_ROBUST 1 +# endif +#endif /* !MDB_USE_ROBUST */ + +#if defined(MDB_USE_POSIX_MUTEX) && (MDB_USE_ROBUST) +/* glibc < 2.12 only provided _np API */ +# if (defined(__GLIBC__) && GLIBC_VER < 0x02000c) || \ + (defined(PTHREAD_MUTEX_ROBUST_NP) && !defined(PTHREAD_MUTEX_ROBUST)) +# define PTHREAD_MUTEX_ROBUST PTHREAD_MUTEX_ROBUST_NP +# define pthread_mutexattr_setrobust(attr, flag) pthread_mutexattr_setrobust_np(attr, flag) +# define pthread_mutex_consistent(mutex) pthread_mutex_consistent_np(mutex) +# endif +#endif /* MDB_USE_POSIX_MUTEX && MDB_USE_ROBUST */ + +#if defined(MDB_OWNERDEAD) && (MDB_USE_ROBUST) +#define MDB_ROBUST_SUPPORTED 1 +#endif + +#ifdef _WIN32 +#define MDB_USE_HASH 1 +#define MDB_PIDLOCK 0 +#define THREAD_RET DWORD +#define pthread_t HANDLE +#define pthread_mutex_t HANDLE +#define pthread_cond_t HANDLE +typedef HANDLE mdb_mutex_t, mdb_mutexref_t; +#define pthread_key_t DWORD +#define pthread_self() GetCurrentThreadId() +#define pthread_key_create(x,y) \ + ((*(x) = TlsAlloc()) == TLS_OUT_OF_INDEXES ? ErrCode() : 0) +#define pthread_key_delete(x) TlsFree(x) +#define pthread_getspecific(x) TlsGetValue(x) +#define pthread_setspecific(x,y) (TlsSetValue(x,y) ? 0 : ErrCode()) +#define pthread_mutex_unlock(x) ReleaseMutex(*x) +#define pthread_mutex_lock(x) WaitForSingleObject(*x, INFINITE) +#define pthread_cond_signal(x) SetEvent(*x) +#define pthread_cond_wait(cond,mutex) do{SignalObjectAndWait(*mutex, *cond, INFINITE, FALSE); WaitForSingleObject(*mutex, INFINITE);}while(0) +#define THREAD_CREATE(thr,start,arg) \ + (((thr) = CreateThread(NULL, 0, start, arg, 0, NULL)) ? 0 : ErrCode()) +#define THREAD_FINISH(thr) \ + (WaitForSingleObject(thr, INFINITE) ? ErrCode() : 0) +#define LOCK_MUTEX0(mutex) WaitForSingleObject(mutex, INFINITE) +#define UNLOCK_MUTEX(mutex) ReleaseMutex(mutex) +#define mdb_mutex_consistent(mutex) 0 +#define getpid() GetCurrentProcessId() +#define MDB_FDATASYNC(fd) (!FlushFileBuffers(fd)) +#define MDB_MSYNC(addr,len,flags) (!FlushViewOfFile(addr,len)) +#define ErrCode() GetLastError() +#define GET_PAGESIZE(x) {SYSTEM_INFO si; GetSystemInfo(&si); (x) = si.dwPageSize;} +#define close(fd) (CloseHandle(fd) ? 0 : -1) +#define munmap(ptr,len) UnmapViewOfFile(ptr) +#ifdef PROCESS_QUERY_LIMITED_INFORMATION +#define MDB_PROCESS_QUERY_LIMITED_INFORMATION PROCESS_QUERY_LIMITED_INFORMATION +#else +#define MDB_PROCESS_QUERY_LIMITED_INFORMATION 0x1000 +#endif +#define Z "I" +#else +#define THREAD_RET void * +#define THREAD_CREATE(thr,start,arg) pthread_create(&thr,NULL,start,arg) +#define THREAD_FINISH(thr) pthread_join(thr,NULL) +#define Z "z" /**< printf format modifier for size_t */ + + /** For MDB_LOCK_FORMAT: True if readers take a pid lock in the lockfile */ +#define MDB_PIDLOCK 1 + +#ifdef MDB_USE_POSIX_SEM + +typedef sem_t *mdb_mutex_t, *mdb_mutexref_t; +#define LOCK_MUTEX0(mutex) mdb_sem_wait(mutex) +#define UNLOCK_MUTEX(mutex) sem_post(mutex) + +static int +mdb_sem_wait(sem_t *sem) +{ + int rc; + while ((rc = sem_wait(sem)) && (rc = errno) == EINTR) ; + return rc; +} + +#else /* MDB_USE_POSIX_MUTEX: */ + /** Shared mutex/semaphore as the original is stored. + * + * Not for copies. Instead it can be assigned to an #mdb_mutexref_t. + * When mdb_mutexref_t is a pointer and mdb_mutex_t is not, then it + * is array[size 1] so it can be assigned to the pointer. + */ +typedef pthread_mutex_t mdb_mutex_t[1]; + /** Reference to an #mdb_mutex_t */ +typedef pthread_mutex_t *mdb_mutexref_t; + /** Lock the reader or writer mutex. + * Returns 0 or a code to give #mdb_mutex_failed(), as in #LOCK_MUTEX(). + */ +#define LOCK_MUTEX0(mutex) pthread_mutex_lock(mutex) + /** Unlock the reader or writer mutex. + */ +#define UNLOCK_MUTEX(mutex) pthread_mutex_unlock(mutex) + /** Mark mutex-protected data as repaired, after death of previous owner. + */ +#define mdb_mutex_consistent(mutex) pthread_mutex_consistent(mutex) +#endif /* MDB_USE_POSIX_SEM */ + + /** Get the error code for the last failed system function. + */ +#define ErrCode() errno + + /** An abstraction for a file handle. + * On POSIX systems file handles are small integers. On Windows + * they're opaque pointers. + */ +#define HANDLE int + + /** A value for an invalid file handle. + * Mainly used to initialize file variables and signify that they are + * unused. + */ +#define INVALID_HANDLE_VALUE (-1) + + /** Get the size of a memory page for the system. + * This is the basic size that the platform's memory manager uses, and is + * fundamental to the use of memory-mapped files. + */ +#define GET_PAGESIZE(x) ((x) = sysconf(_SC_PAGE_SIZE)) +#endif + +#if defined(_WIN32) || defined(MDB_USE_POSIX_SEM) +#define MNAME_LEN 32 +#else +#define MNAME_LEN (sizeof(pthread_mutex_t)) +#endif + +/** @} */ + +#ifdef MDB_ROBUST_SUPPORTED + /** Lock mutex, handle any error, set rc = result. + * Return 0 on success, nonzero (not rc) on error. + */ +#define LOCK_MUTEX(rc, env, mutex) \ + (((rc) = LOCK_MUTEX0(mutex)) && \ + ((rc) = mdb_mutex_failed(env, mutex, rc))) +static int mdb_mutex_failed(MDB_env *env, mdb_mutexref_t mutex, int rc); +#else +#define LOCK_MUTEX(rc, env, mutex) ((rc) = LOCK_MUTEX0(mutex)) +#define mdb_mutex_failed(env, mutex, rc) (rc) +#endif + +#ifndef _WIN32 +/** A flag for opening a file and requesting synchronous data writes. + * This is only used when writing a meta page. It's not strictly needed; + * we could just do a normal write and then immediately perform a flush. + * But if this flag is available it saves us an extra system call. + * + * @note If O_DSYNC is undefined but exists in /usr/include, + * preferably set some compiler flag to get the definition. + */ +#ifndef MDB_DSYNC +# ifdef O_DSYNC +# define MDB_DSYNC O_DSYNC +# else +# define MDB_DSYNC O_SYNC +# endif +#endif +#endif + +/** Function for flushing the data of a file. Define this to fsync + * if fdatasync() is not supported. + */ +#ifndef MDB_FDATASYNC +# define MDB_FDATASYNC fdatasync +#endif + +#ifndef MDB_MSYNC +# define MDB_MSYNC(addr,len,flags) msync(addr,len,flags) +#endif + +#ifndef MS_SYNC +#define MS_SYNC 1 +#endif + +#ifndef MS_ASYNC +#define MS_ASYNC 0 +#endif + + /** A page number in the database. + * Note that 64 bit page numbers are overkill, since pages themselves + * already represent 12-13 bits of addressable memory, and the OS will + * always limit applications to a maximum of 63 bits of address space. + * + * @note In the #MDB_node structure, we only store 48 bits of this value, + * which thus limits us to only 60 bits of addressable data. + */ +typedef MDB_ID pgno_t; + + /** A transaction ID. + * See struct MDB_txn.mt_txnid for details. + */ +typedef MDB_ID txnid_t; + +/** @defgroup debug Debug Macros + * @{ + */ +#ifndef MDB_DEBUG + /** Enable debug output. Needs variable argument macros (a C99 feature). + * Set this to 1 for copious tracing. Set to 2 to add dumps of all IDLs + * read from and written to the database (used for free space management). + */ +#define MDB_DEBUG 0 +#endif + +#if MDB_DEBUG +static int mdb_debug; +static txnid_t mdb_debug_start; + + /** Print a debug message with printf formatting. + * Requires double parenthesis around 2 or more args. + */ +# define DPRINTF(args) ((void) ((mdb_debug) && DPRINTF0 args)) +# define DPRINTF0(fmt, ...) \ + fprintf(stderr, "%s:%d " fmt "\n", mdb_func_, __LINE__, __VA_ARGS__) +#else +# define DPRINTF(args) ((void) 0) +#endif + /** Print a debug string. + * The string is printed literally, with no format processing. + */ +#define DPUTS(arg) DPRINTF(("%s", arg)) + /** Debugging output value of a cursor DBI: Negative in a sub-cursor. */ +#define DDBI(mc) \ + (((mc)->mc_flags & C_SUB) ? -(int)(mc)->mc_dbi : (int)(mc)->mc_dbi) +/** @} */ + + /** @brief The maximum size of a database page. + * + * It is 32k or 64k, since value-PAGEBASE must fit in + * #MDB_page.%mp_upper. + * + * LMDB will use database pages < OS pages if needed. + * That causes more I/O in write transactions: The OS must + * know (read) the whole page before writing a partial page. + * + * Note that we don't currently support Huge pages. On Linux, + * regular data files cannot use Huge pages, and in general + * Huge pages aren't actually pageable. We rely on the OS + * demand-pager to read our data and page it out when memory + * pressure from other processes is high. So until OSs have + * actual paging support for Huge pages, they're not viable. + */ +#define MAX_PAGESIZE (PAGEBASE ? 0x10000 : 0x8000) + + /** The minimum number of keys required in a database page. + * Setting this to a larger value will place a smaller bound on the + * maximum size of a data item. Data items larger than this size will + * be pushed into overflow pages instead of being stored directly in + * the B-tree node. This value used to default to 4. With a page size + * of 4096 bytes that meant that any item larger than 1024 bytes would + * go into an overflow page. That also meant that on average 2-3KB of + * each overflow page was wasted space. The value cannot be lower than + * 2 because then there would no longer be a tree structure. With this + * value, items larger than 2KB will go into overflow pages, and on + * average only 1KB will be wasted. + */ +#define MDB_MINKEYS 2 + + /** A stamp that identifies a file as an LMDB file. + * There's nothing special about this value other than that it is easily + * recognizable, and it will reflect any byte order mismatches. + */ +#define MDB_MAGIC 0xBEEFC0DE + + /** The version number for a database's datafile format. */ +#define MDB_DATA_VERSION ((MDB_DEVEL) ? 999 : 1) + /** The version number for a database's lockfile format. */ +#define MDB_LOCK_VERSION 1 + + /** @brief The max size of a key we can write, or 0 for computed max. + * + * This macro should normally be left alone or set to 0. + * Note that a database with big keys or dupsort data cannot be + * reliably modified by a liblmdb which uses a smaller max. + * The default is 511 for backwards compat, or 0 when #MDB_DEVEL. + * + * Other values are allowed, for backwards compat. However: + * A value bigger than the computed max can break if you do not + * know what you are doing, and liblmdb <= 0.9.10 can break when + * modifying a DB with keys/dupsort data bigger than its max. + * + * Data items in an #MDB_DUPSORT database are also limited to + * this size, since they're actually keys of a sub-DB. Keys and + * #MDB_DUPSORT data items must fit on a node in a regular page. + */ +#ifndef MDB_MAXKEYSIZE +#define MDB_MAXKEYSIZE ((MDB_DEVEL) ? 0 : 511) +#endif + + /** The maximum size of a key we can write to the environment. */ +#if MDB_MAXKEYSIZE +#define ENV_MAXKEY(env) (MDB_MAXKEYSIZE) +#else +#define ENV_MAXKEY(env) ((env)->me_maxkey) +#endif + + /** @brief The maximum size of a data item. + * + * We only store a 32 bit value for node sizes. + */ +#define MAXDATASIZE 0xffffffffUL + +#if MDB_DEBUG + /** Key size which fits in a #DKBUF. + * @ingroup debug + */ +#define DKBUF_MAXKEYSIZE ((MDB_MAXKEYSIZE) > 0 ? (MDB_MAXKEYSIZE) : 511) + /** A key buffer. + * @ingroup debug + * This is used for printing a hex dump of a key's contents. + */ +#define DKBUF char kbuf[DKBUF_MAXKEYSIZE*2+1] + /** Display a key in hex. + * @ingroup debug + * Invoke a function to display a key in hex. + */ +#define DKEY(x) mdb_dkey(x, kbuf) +#else +#define DKBUF +#define DKEY(x) 0 +#endif + + /** An invalid page number. + * Mainly used to denote an empty tree. + */ +#define P_INVALID (~(pgno_t)0) + + /** Test if the flags \b f are set in a flag word \b w. */ +#define F_ISSET(w, f) (((w) & (f)) == (f)) + + /** Round \b n up to an even number. */ +#define EVEN(n) (((n) + 1U) & -2) /* sign-extending -2 to match n+1U */ + + /** Used for offsets within a single page. + * Since memory pages are typically 4 or 8KB in size, 12-13 bits, + * this is plenty. + */ +typedef uint16_t indx_t; + + /** Default size of memory map. + * This is certainly too small for any actual applications. Apps should always set + * the size explicitly using #mdb_env_set_mapsize(). + */ +#define DEFAULT_MAPSIZE 1048576 + +/** @defgroup readers Reader Lock Table + * Readers don't acquire any locks for their data access. Instead, they + * simply record their transaction ID in the reader table. The reader + * mutex is needed just to find an empty slot in the reader table. The + * slot's address is saved in thread-specific data so that subsequent read + * transactions started by the same thread need no further locking to proceed. + * + * If #MDB_NOTLS is set, the slot address is not saved in thread-specific data. + * + * No reader table is used if the database is on a read-only filesystem, or + * if #MDB_NOLOCK is set. + * + * Since the database uses multi-version concurrency control, readers don't + * actually need any locking. This table is used to keep track of which + * readers are using data from which old transactions, so that we'll know + * when a particular old transaction is no longer in use. Old transactions + * that have discarded any data pages can then have those pages reclaimed + * for use by a later write transaction. + * + * The lock table is constructed such that reader slots are aligned with the + * processor's cache line size. Any slot is only ever used by one thread. + * This alignment guarantees that there will be no contention or cache + * thrashing as threads update their own slot info, and also eliminates + * any need for locking when accessing a slot. + * + * A writer thread will scan every slot in the table to determine the oldest + * outstanding reader transaction. Any freed pages older than this will be + * reclaimed by the writer. The writer doesn't use any locks when scanning + * this table. This means that there's no guarantee that the writer will + * see the most up-to-date reader info, but that's not required for correct + * operation - all we need is to know the upper bound on the oldest reader, + * we don't care at all about the newest reader. So the only consequence of + * reading stale information here is that old pages might hang around a + * while longer before being reclaimed. That's actually good anyway, because + * the longer we delay reclaiming old pages, the more likely it is that a + * string of contiguous pages can be found after coalescing old pages from + * many old transactions together. + * @{ + */ + /** Number of slots in the reader table. + * This value was chosen somewhat arbitrarily. 126 readers plus a + * couple mutexes fit exactly into 8KB on my development machine. + * Applications should set the table size using #mdb_env_set_maxreaders(). + */ +#define DEFAULT_READERS 126 + + /** The size of a CPU cache line in bytes. We want our lock structures + * aligned to this size to avoid false cache line sharing in the + * lock table. + * This value works for most CPUs. For Itanium this should be 128. + */ +#ifndef CACHELINE +#define CACHELINE 64 +#endif + + /** The information we store in a single slot of the reader table. + * In addition to a transaction ID, we also record the process and + * thread ID that owns a slot, so that we can detect stale information, + * e.g. threads or processes that went away without cleaning up. + * @note We currently don't check for stale records. We simply re-init + * the table when we know that we're the only process opening the + * lock file. + */ +typedef struct MDB_rxbody { + /** Current Transaction ID when this transaction began, or (txnid_t)-1. + * Multiple readers that start at the same time will probably have the + * same ID here. Again, it's not important to exclude them from + * anything; all we need to know is which version of the DB they + * started from so we can avoid overwriting any data used in that + * particular version. + */ + volatile txnid_t mrb_txnid; + /** The process ID of the process owning this reader txn. */ + volatile MDB_PID_T mrb_pid; + /** The thread ID of the thread owning this txn. */ + volatile MDB_THR_T mrb_tid; +} MDB_rxbody; + + /** The actual reader record, with cacheline padding. */ +typedef struct MDB_reader { + union { + MDB_rxbody mrx; + /** shorthand for mrb_txnid */ +#define mr_txnid mru.mrx.mrb_txnid +#define mr_pid mru.mrx.mrb_pid +#define mr_tid mru.mrx.mrb_tid + /** cache line alignment */ + char pad[(sizeof(MDB_rxbody)+CACHELINE-1) & ~(CACHELINE-1)]; + } mru; +} MDB_reader; + + /** The header for the reader table. + * The table resides in a memory-mapped file. (This is a different file + * than is used for the main database.) + * + * For POSIX the actual mutexes reside in the shared memory of this + * mapped file. On Windows, mutexes are named objects allocated by the + * kernel; we store the mutex names in this mapped file so that other + * processes can grab them. This same approach is also used on + * MacOSX/Darwin (using named semaphores) since MacOSX doesn't support + * process-shared POSIX mutexes. For these cases where a named object + * is used, the object name is derived from a 64 bit FNV hash of the + * environment pathname. As such, naming collisions are extremely + * unlikely. If a collision occurs, the results are unpredictable. + */ +typedef struct MDB_txbody { + /** Stamp identifying this as an LMDB file. It must be set + * to #MDB_MAGIC. */ + uint32_t mtb_magic; + /** Format of this lock file. Must be set to #MDB_LOCK_FORMAT. */ + uint32_t mtb_format; +#if defined(_WIN32) || defined(MDB_USE_POSIX_SEM) + char mtb_rmname[MNAME_LEN]; +#else + /** Mutex protecting access to this table. + * This is the reader table lock used with LOCK_MUTEX(). + */ + mdb_mutex_t mtb_rmutex; +#endif + /** The ID of the last transaction committed to the database. + * This is recorded here only for convenience; the value can always + * be determined by reading the main database meta pages. + */ + volatile txnid_t mtb_txnid; + /** The number of slots that have been used in the reader table. + * This always records the maximum count, it is not decremented + * when readers release their slots. + */ + volatile unsigned mtb_numreaders; +} MDB_txbody; + + /** The actual reader table definition. */ +typedef struct MDB_txninfo { + union { + MDB_txbody mtb; +#define mti_magic mt1.mtb.mtb_magic +#define mti_format mt1.mtb.mtb_format +#define mti_rmutex mt1.mtb.mtb_rmutex +#define mti_rmname mt1.mtb.mtb_rmname +#define mti_txnid mt1.mtb.mtb_txnid +#define mti_numreaders mt1.mtb.mtb_numreaders + char pad[(sizeof(MDB_txbody)+CACHELINE-1) & ~(CACHELINE-1)]; + } mt1; + union { +#if defined(_WIN32) || defined(MDB_USE_POSIX_SEM) + char mt2_wmname[MNAME_LEN]; +#define mti_wmname mt2.mt2_wmname +#else + mdb_mutex_t mt2_wmutex; +#define mti_wmutex mt2.mt2_wmutex +#endif + char pad[(MNAME_LEN+CACHELINE-1) & ~(CACHELINE-1)]; + } mt2; + MDB_reader mti_readers[1]; +} MDB_txninfo; + + /** Lockfile format signature: version, features and field layout */ +#define MDB_LOCK_FORMAT \ + ((uint32_t) \ + ((MDB_LOCK_VERSION) \ + /* Flags which describe functionality */ \ + + (((MDB_PIDLOCK) != 0) << 16))) +/** @} */ + +/** Common header for all page types. The page type depends on #mp_flags. + * + * #P_BRANCH and #P_LEAF pages have unsorted '#MDB_node's at the end, with + * sorted #mp_ptrs[] entries referring to them. Exception: #P_LEAF2 pages + * omit mp_ptrs and pack sorted #MDB_DUPFIXED values after the page header. + * + * #P_OVERFLOW records occupy one or more contiguous pages where only the + * first has a page header. They hold the real data of #F_BIGDATA nodes. + * + * #P_SUBP sub-pages are small leaf "pages" with duplicate data. + * A node with flag #F_DUPDATA but not #F_SUBDATA contains a sub-page. + * (Duplicate data can also go in sub-databases, which use normal pages.) + * + * #P_META pages contain #MDB_meta, the start point of an LMDB snapshot. + * + * Each non-metapage up to #MDB_meta.%mm_last_pg is reachable exactly once + * in the snapshot: Either used by a database or listed in a freeDB record. + */ +typedef struct MDB_page { +#define mp_pgno mp_p.p_pgno +#define mp_next mp_p.p_next + union { + pgno_t p_pgno; /**< page number */ + struct MDB_page *p_next; /**< for in-memory list of freed pages */ + } mp_p; + uint16_t mp_pad; /**< key size if this is a LEAF2 page */ +/** @defgroup mdb_page Page Flags + * @ingroup internal + * Flags for the page headers. + * @{ + */ +#define P_BRANCH 0x01 /**< branch page */ +#define P_LEAF 0x02 /**< leaf page */ +#define P_OVERFLOW 0x04 /**< overflow page */ +#define P_META 0x08 /**< meta page */ +#define P_DIRTY 0x10 /**< dirty page, also set for #P_SUBP pages */ +#define P_LEAF2 0x20 /**< for #MDB_DUPFIXED records */ +#define P_SUBP 0x40 /**< for #MDB_DUPSORT sub-pages */ +#define P_LOOSE 0x4000 /**< page was dirtied then freed, can be reused */ +#define P_KEEP 0x8000 /**< leave this page alone during spill */ +/** @} */ + uint16_t mp_flags; /**< @ref mdb_page */ +#define mp_lower mp_pb.pb.pb_lower +#define mp_upper mp_pb.pb.pb_upper +#define mp_pages mp_pb.pb_pages + union { + struct { + indx_t pb_lower; /**< lower bound of free space */ + indx_t pb_upper; /**< upper bound of free space */ + } pb; + uint32_t pb_pages; /**< number of overflow pages */ + } mp_pb; + indx_t mp_ptrs[1]; /**< dynamic size */ +} MDB_page; + + /** Size of the page header, excluding dynamic data at the end */ +#define PAGEHDRSZ ((unsigned) offsetof(MDB_page, mp_ptrs)) + + /** Address of first usable data byte in a page, after the header */ +#define METADATA(p) ((void *)((char *)(p) + PAGEHDRSZ)) + + /** ITS#7713, change PAGEBASE to handle 65536 byte pages */ +#define PAGEBASE ((MDB_DEVEL) ? PAGEHDRSZ : 0) + + /** Number of nodes on a page */ +#define NUMKEYS(p) (((p)->mp_lower - (PAGEHDRSZ-PAGEBASE)) >> 1) + + /** The amount of space remaining in the page */ +#define SIZELEFT(p) (indx_t)((p)->mp_upper - (p)->mp_lower) + + /** The percentage of space used in the page, in tenths of a percent. */ +#define PAGEFILL(env, p) (1000L * ((env)->me_psize - PAGEHDRSZ - SIZELEFT(p)) / \ + ((env)->me_psize - PAGEHDRSZ)) + /** The minimum page fill factor, in tenths of a percent. + * Pages emptier than this are candidates for merging. + */ +#define FILL_THRESHOLD 250 + + /** Test if a page is a leaf page */ +#define IS_LEAF(p) F_ISSET((p)->mp_flags, P_LEAF) + /** Test if a page is a LEAF2 page */ +#define IS_LEAF2(p) F_ISSET((p)->mp_flags, P_LEAF2) + /** Test if a page is a branch page */ +#define IS_BRANCH(p) F_ISSET((p)->mp_flags, P_BRANCH) + /** Test if a page is an overflow page */ +#define IS_OVERFLOW(p) F_ISSET((p)->mp_flags, P_OVERFLOW) + /** Test if a page is a sub page */ +#define IS_SUBP(p) F_ISSET((p)->mp_flags, P_SUBP) + + /** The number of overflow pages needed to store the given size. */ +#define OVPAGES(size, psize) ((PAGEHDRSZ-1 + (size)) / (psize) + 1) + + /** Link in #MDB_txn.%mt_loose_pgs list. + * Kept outside the page header, which is needed when reusing the page. + */ +#define NEXT_LOOSE_PAGE(p) (*(MDB_page **)((p) + 2)) + + /** Header for a single key/data pair within a page. + * Used in pages of type #P_BRANCH and #P_LEAF without #P_LEAF2. + * We guarantee 2-byte alignment for 'MDB_node's. + * + * #mn_lo and #mn_hi are used for data size on leaf nodes, and for child + * pgno on branch nodes. On 64 bit platforms, #mn_flags is also used + * for pgno. (Branch nodes have no flags). Lo and hi are in host byte + * order in case some accesses can be optimized to 32-bit word access. + * + * Leaf node flags describe node contents. #F_BIGDATA says the node's + * data part is the page number of an overflow page with actual data. + * #F_DUPDATA and #F_SUBDATA can be combined giving duplicate data in + * a sub-page/sub-database, and named databases (just #F_SUBDATA). + */ +typedef struct MDB_node { + /** part of data size or pgno + * @{ */ +#if BYTE_ORDER == LITTLE_ENDIAN + unsigned short mn_lo, mn_hi; +#else + unsigned short mn_hi, mn_lo; +#endif + /** @} */ +/** @defgroup mdb_node Node Flags + * @ingroup internal + * Flags for node headers. + * @{ + */ +#define F_BIGDATA 0x01 /**< data put on overflow page */ +#define F_SUBDATA 0x02 /**< data is a sub-database */ +#define F_DUPDATA 0x04 /**< data has duplicates */ + +/** valid flags for #mdb_node_add() */ +#define NODE_ADD_FLAGS (F_DUPDATA|F_SUBDATA|MDB_RESERVE|MDB_APPEND) + +/** @} */ + unsigned short mn_flags; /**< @ref mdb_node */ + unsigned short mn_ksize; /**< key size */ + char mn_data[1]; /**< key and data are appended here */ +} MDB_node; + + /** Size of the node header, excluding dynamic data at the end */ +#define NODESIZE offsetof(MDB_node, mn_data) + + /** Bit position of top word in page number, for shifting mn_flags */ +#define PGNO_TOPWORD ((pgno_t)-1 > 0xffffffffu ? 32 : 0) + + /** Size of a node in a branch page with a given key. + * This is just the node header plus the key, there is no data. + */ +#define INDXSIZE(k) (NODESIZE + ((k) == NULL ? 0 : (k)->mv_size)) + + /** Size of a node in a leaf page with a given key and data. + * This is node header plus key plus data size. + */ +#define LEAFSIZE(k, d) (NODESIZE + (k)->mv_size + (d)->mv_size) + + /** Address of node \b i in page \b p */ +#define NODEPTR(p, i) ((MDB_node *)((char *)(p) + (p)->mp_ptrs[i] + PAGEBASE)) + + /** Address of the key for the node */ +#define NODEKEY(node) (void *)((node)->mn_data) + + /** Address of the data for a node */ +#define NODEDATA(node) (void *)((char *)(node)->mn_data + (node)->mn_ksize) + + /** Get the page number pointed to by a branch node */ +#define NODEPGNO(node) \ + ((node)->mn_lo | ((pgno_t) (node)->mn_hi << 16) | \ + (PGNO_TOPWORD ? ((pgno_t) (node)->mn_flags << PGNO_TOPWORD) : 0)) + /** Set the page number in a branch node */ +#define SETPGNO(node,pgno) do { \ + (node)->mn_lo = (pgno) & 0xffff; (node)->mn_hi = (pgno) >> 16; \ + if (PGNO_TOPWORD) (node)->mn_flags = (pgno) >> PGNO_TOPWORD; } while(0) + + /** Get the size of the data in a leaf node */ +#define NODEDSZ(node) ((node)->mn_lo | ((unsigned)(node)->mn_hi << 16)) + /** Set the size of the data for a leaf node */ +#define SETDSZ(node,size) do { \ + (node)->mn_lo = (size) & 0xffff; (node)->mn_hi = (size) >> 16;} while(0) + /** The size of a key in a node */ +#define NODEKSZ(node) ((node)->mn_ksize) + + /** Copy a page number from src to dst */ +#ifdef MISALIGNED_OK +#define COPY_PGNO(dst,src) dst = src +#else +#if SIZE_MAX > 4294967295UL +#define COPY_PGNO(dst,src) do { \ + unsigned short *s, *d; \ + s = (unsigned short *)&(src); \ + d = (unsigned short *)&(dst); \ + *d++ = *s++; \ + *d++ = *s++; \ + *d++ = *s++; \ + *d = *s; \ +} while (0) +#else +#define COPY_PGNO(dst,src) do { \ + unsigned short *s, *d; \ + s = (unsigned short *)&(src); \ + d = (unsigned short *)&(dst); \ + *d++ = *s++; \ + *d = *s; \ +} while (0) +#endif +#endif + /** The address of a key in a LEAF2 page. + * LEAF2 pages are used for #MDB_DUPFIXED sorted-duplicate sub-DBs. + * There are no node headers, keys are stored contiguously. + */ +#define LEAF2KEY(p, i, ks) ((char *)(p) + PAGEHDRSZ + ((i)*(ks))) + + /** Set the \b node's key into \b keyptr, if requested. */ +#define MDB_GET_KEY(node, keyptr) { if ((keyptr) != NULL) { \ + (keyptr)->mv_size = NODEKSZ(node); (keyptr)->mv_data = NODEKEY(node); } } + + /** Set the \b node's key into \b key. */ +#define MDB_GET_KEY2(node, key) { key.mv_size = NODEKSZ(node); key.mv_data = NODEKEY(node); } + + /** Information about a single database in the environment. */ +typedef struct MDB_db { + uint32_t md_pad; /**< also ksize for LEAF2 pages */ + uint16_t md_flags; /**< @ref mdb_dbi_open */ + uint16_t md_depth; /**< depth of this tree */ + pgno_t md_branch_pages; /**< number of internal pages */ + pgno_t md_leaf_pages; /**< number of leaf pages */ + pgno_t md_overflow_pages; /**< number of overflow pages */ + size_t md_entries; /**< number of data items */ + pgno_t md_root; /**< the root page of this tree */ +} MDB_db; + +#define MDB_VALID 0x8000 /**< DB handle is valid, for me_dbflags */ +#define PERSISTENT_FLAGS (0xffff & ~(MDB_VALID)) + /** #mdb_dbi_open() flags */ +#define VALID_FLAGS (MDB_REVERSEKEY|MDB_DUPSORT|MDB_INTEGERKEY|MDB_DUPFIXED|\ + MDB_INTEGERDUP|MDB_REVERSEDUP|MDB_CREATE) + + /** Handle for the DB used to track free pages. */ +#define FREE_DBI 0 + /** Handle for the default DB. */ +#define MAIN_DBI 1 + /** Number of DBs in metapage (free and main) - also hardcoded elsewhere */ +#define CORE_DBS 2 + + /** Number of meta pages - also hardcoded elsewhere */ +#define NUM_METAS 2 + + /** Meta page content. + * A meta page is the start point for accessing a database snapshot. + * Pages 0-1 are meta pages. Transaction N writes meta page #(N % 2). + */ +typedef struct MDB_meta { + /** Stamp identifying this as an LMDB file. It must be set + * to #MDB_MAGIC. */ + uint32_t mm_magic; + /** Version number of this file. Must be set to #MDB_DATA_VERSION. */ + uint32_t mm_version; + void *mm_address; /**< address for fixed mapping */ + size_t mm_mapsize; /**< size of mmap region */ + MDB_db mm_dbs[CORE_DBS]; /**< first is free space, 2nd is main db */ + /** The size of pages used in this DB */ +#define mm_psize mm_dbs[FREE_DBI].md_pad + /** Any persistent environment flags. @ref mdb_env */ +#define mm_flags mm_dbs[FREE_DBI].md_flags + /** Last used page in the datafile. + * Actually the file may be shorter if the freeDB lists the final pages. + */ + pgno_t mm_last_pg; + volatile txnid_t mm_txnid; /**< txnid that committed this page */ +} MDB_meta; + + /** Buffer for a stack-allocated meta page. + * The members define size and alignment, and silence type + * aliasing warnings. They are not used directly; that could + * mean incorrectly using several union members in parallel. + */ +typedef union MDB_metabuf { + MDB_page mb_page; + struct { + char mm_pad[PAGEHDRSZ]; + MDB_meta mm_meta; + } mb_metabuf; +} MDB_metabuf; + + /** Auxiliary DB info. + * The information here is mostly static/read-only. There is + * only a single copy of this record in the environment. + */ +typedef struct MDB_dbx { + MDB_val md_name; /**< name of the database */ + MDB_cmp_func *md_cmp; /**< function for comparing keys */ + MDB_cmp_func *md_dcmp; /**< function for comparing data items */ + MDB_rel_func *md_rel; /**< user relocate function */ + void *md_relctx; /**< user-provided context for md_rel */ +} MDB_dbx; + + /** A database transaction. + * Every operation requires a transaction handle. + */ +struct MDB_txn { + MDB_txn *mt_parent; /**< parent of a nested txn */ + /** Nested txn under this txn, set together with flag #MDB_TXN_HAS_CHILD */ + MDB_txn *mt_child; + pgno_t mt_next_pgno; /**< next unallocated page */ + /** The ID of this transaction. IDs are integers incrementing from 1. + * Only committed write transactions increment the ID. If a transaction + * aborts, the ID may be re-used by the next writer. + */ + txnid_t mt_txnid; + MDB_env *mt_env; /**< the DB environment */ + /** The list of pages that became unused during this transaction. + */ + MDB_IDL mt_free_pgs; + /** The list of loose pages that became unused and may be reused + * in this transaction, linked through #NEXT_LOOSE_PAGE(page). + */ + MDB_page *mt_loose_pgs; + /** Number of loose pages (#mt_loose_pgs) */ + int mt_loose_count; + /** The sorted list of dirty pages we temporarily wrote to disk + * because the dirty list was full. page numbers in here are + * shifted left by 1, deleted slots have the LSB set. + */ + MDB_IDL mt_spill_pgs; + union { + /** For write txns: Modified pages. Sorted when not MDB_WRITEMAP. */ + MDB_ID2L dirty_list; + /** For read txns: This thread/txn's reader table slot, or NULL. */ + MDB_reader *reader; + } mt_u; + /** Array of records for each DB known in the environment. */ + MDB_dbx *mt_dbxs; + /** Array of MDB_db records for each known DB */ + MDB_db *mt_dbs; + /** Array of sequence numbers for each DB handle */ + unsigned int *mt_dbiseqs; +/** @defgroup mt_dbflag Transaction DB Flags + * @ingroup internal + * @{ + */ +#define DB_DIRTY 0x01 /**< DB was written in this txn */ +#define DB_STALE 0x02 /**< Named-DB record is older than txnID */ +#define DB_NEW 0x04 /**< Named-DB handle opened in this txn */ +#define DB_VALID 0x08 /**< DB handle is valid, see also #MDB_VALID */ +#define DB_USRVALID 0x10 /**< As #DB_VALID, but not set for #FREE_DBI */ +#define DB_DUPDATA 0x20 /**< DB is #MDB_DUPSORT data */ +/** @} */ + /** In write txns, array of cursors for each DB */ + MDB_cursor **mt_cursors; + /** Array of flags for each DB */ + unsigned char *mt_dbflags; + /** Number of DB records in use, or 0 when the txn is finished. + * This number only ever increments until the txn finishes; we + * don't decrement it when individual DB handles are closed. + */ + MDB_dbi mt_numdbs; + +/** @defgroup mdb_txn Transaction Flags + * @ingroup internal + * @{ + */ + /** #mdb_txn_begin() flags */ +#define MDB_TXN_BEGIN_FLAGS MDB_RDONLY +#define MDB_TXN_RDONLY MDB_RDONLY /**< read-only transaction */ + /* internal txn flags */ +#define MDB_TXN_WRITEMAP MDB_WRITEMAP /**< copy of #MDB_env flag in writers */ +#define MDB_TXN_FINISHED 0x01 /**< txn is finished or never began */ +#define MDB_TXN_ERROR 0x02 /**< txn is unusable after an error */ +#define MDB_TXN_DIRTY 0x04 /**< must write, even if dirty list is empty */ +#define MDB_TXN_SPILLS 0x08 /**< txn or a parent has spilled pages */ +#define MDB_TXN_HAS_CHILD 0x10 /**< txn has an #MDB_txn.%mt_child */ + /** most operations on the txn are currently illegal */ +#define MDB_TXN_BLOCKED (MDB_TXN_FINISHED|MDB_TXN_ERROR|MDB_TXN_HAS_CHILD) +/** @} */ + unsigned int mt_flags; /**< @ref mdb_txn */ + /** #dirty_list room: Array size - \#dirty pages visible to this txn. + * Includes ancestor txns' dirty pages not hidden by other txns' + * dirty/spilled pages. Thus commit(nested txn) has room to merge + * dirty_list into mt_parent after freeing hidden mt_parent pages. + */ + unsigned int mt_dirty_room; +}; + +/** Enough space for 2^32 nodes with minimum of 2 keys per node. I.e., plenty. + * At 4 keys per node, enough for 2^64 nodes, so there's probably no need to + * raise this on a 64 bit machine. + */ +#define CURSOR_STACK 32 + +struct MDB_xcursor; + + /** Cursors are used for all DB operations. + * A cursor holds a path of (page pointer, key index) from the DB + * root to a position in the DB, plus other state. #MDB_DUPSORT + * cursors include an xcursor to the current data item. Write txns + * track their cursors and keep them up to date when data moves. + * Exception: An xcursor's pointer to a #P_SUBP page can be stale. + * (A node with #F_DUPDATA but no #F_SUBDATA contains a subpage). + */ +struct MDB_cursor { + /** Next cursor on this DB in this txn */ + MDB_cursor *mc_next; + /** Backup of the original cursor if this cursor is a shadow */ + MDB_cursor *mc_backup; + /** Context used for databases with #MDB_DUPSORT, otherwise NULL */ + struct MDB_xcursor *mc_xcursor; + /** The transaction that owns this cursor */ + MDB_txn *mc_txn; + /** The database handle this cursor operates on */ + MDB_dbi mc_dbi; + /** The database record for this cursor */ + MDB_db *mc_db; + /** The database auxiliary record for this cursor */ + MDB_dbx *mc_dbx; + /** The @ref mt_dbflag for this database */ + unsigned char *mc_dbflag; + unsigned short mc_snum; /**< number of pushed pages */ + unsigned short mc_top; /**< index of top page, normally mc_snum-1 */ +/** @defgroup mdb_cursor Cursor Flags + * @ingroup internal + * Cursor state flags. + * @{ + */ +#define C_INITIALIZED 0x01 /**< cursor has been initialized and is valid */ +#define C_EOF 0x02 /**< No more data */ +#define C_SUB 0x04 /**< Cursor is a sub-cursor */ +#define C_DEL 0x08 /**< last op was a cursor_del */ +#define C_UNTRACK 0x40 /**< Un-track cursor when closing */ +/** @} */ + unsigned int mc_flags; /**< @ref mdb_cursor */ + MDB_page *mc_pg[CURSOR_STACK]; /**< stack of pushed pages */ + indx_t mc_ki[CURSOR_STACK]; /**< stack of page indices */ +}; + + /** Context for sorted-dup records. + * We could have gone to a fully recursive design, with arbitrarily + * deep nesting of sub-databases. But for now we only handle these + * levels - main DB, optional sub-DB, sorted-duplicate DB. + */ +typedef struct MDB_xcursor { + /** A sub-cursor for traversing the Dup DB */ + MDB_cursor mx_cursor; + /** The database record for this Dup DB */ + MDB_db mx_db; + /** The auxiliary DB record for this Dup DB */ + MDB_dbx mx_dbx; + /** The @ref mt_dbflag for this Dup DB */ + unsigned char mx_dbflag; +} MDB_xcursor; + + /** Check if there is an inited xcursor */ +#define XCURSOR_INITED(mc) \ + ((mc)->mc_xcursor && ((mc)->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED)) + + /** Update the xcursor's sub-page pointer, if any, in \b mc. Needed + * when the node which contains the sub-page may have moved. Called + * with leaf page \b mp = mc->mc_pg[\b top]. + */ +#define XCURSOR_REFRESH(mc, top, mp) do { \ + MDB_page *xr_pg = (mp); \ + MDB_node *xr_node; \ + if (!XCURSOR_INITED(mc) || (mc)->mc_ki[top] >= NUMKEYS(xr_pg)) break; \ + xr_node = NODEPTR(xr_pg, (mc)->mc_ki[top]); \ + if ((xr_node->mn_flags & (F_DUPDATA|F_SUBDATA)) == F_DUPDATA) \ + (mc)->mc_xcursor->mx_cursor.mc_pg[0] = NODEDATA(xr_node); \ +} while (0) + + /** State of FreeDB old pages, stored in the MDB_env */ +typedef struct MDB_pgstate { + pgno_t *mf_pghead; /**< Reclaimed freeDB pages, or NULL before use */ + txnid_t mf_pglast; /**< ID of last used record, or 0 if !mf_pghead */ +} MDB_pgstate; + + /** The database environment. */ +struct MDB_env { + HANDLE me_fd; /**< The main data file */ + HANDLE me_lfd; /**< The lock file */ + HANDLE me_mfd; /**< For writing and syncing the meta pages */ + /** Failed to update the meta page. Probably an I/O error. */ +#define MDB_FATAL_ERROR 0x80000000U + /** Some fields are initialized. */ +#define MDB_ENV_ACTIVE 0x20000000U + /** me_txkey is set */ +#define MDB_ENV_TXKEY 0x10000000U + /** fdatasync is unreliable */ +#define MDB_FSYNCONLY 0x08000000U + uint32_t me_flags; /**< @ref mdb_env */ + unsigned int me_psize; /**< DB page size, inited from me_os_psize */ + unsigned int me_os_psize; /**< OS page size, from #GET_PAGESIZE */ + unsigned int me_maxreaders; /**< size of the reader table */ + /** Max #MDB_txninfo.%mti_numreaders of interest to #mdb_env_close() */ + volatile int me_close_readers; + MDB_dbi me_numdbs; /**< number of DBs opened */ + MDB_dbi me_maxdbs; /**< size of the DB table */ + MDB_PID_T me_pid; /**< process ID of this env */ + char *me_path; /**< path to the DB files */ + char *me_map; /**< the memory map of the data file */ + MDB_txninfo *me_txns; /**< the memory map of the lock file or NULL */ + MDB_meta *me_metas[NUM_METAS]; /**< pointers to the two meta pages */ + void *me_pbuf; /**< scratch area for DUPSORT put() */ + MDB_txn *me_txn; /**< current write transaction */ + MDB_txn *me_txn0; /**< prealloc'd write transaction */ + size_t me_mapsize; /**< size of the data memory map */ + off_t me_size; /**< current file size */ + pgno_t me_maxpg; /**< me_mapsize / me_psize */ + MDB_dbx *me_dbxs; /**< array of static DB info */ + uint16_t *me_dbflags; /**< array of flags from MDB_db.md_flags */ + unsigned int *me_dbiseqs; /**< array of dbi sequence numbers */ + pthread_key_t me_txkey; /**< thread-key for readers */ + txnid_t me_pgoldest; /**< ID of oldest reader last time we looked */ + MDB_pgstate me_pgstate; /**< state of old pages from freeDB */ +# define me_pglast me_pgstate.mf_pglast +# define me_pghead me_pgstate.mf_pghead + MDB_page *me_dpages; /**< list of malloc'd blocks for re-use */ + /** IDL of pages that became unused in a write txn */ + MDB_IDL me_free_pgs; + /** ID2L of pages written during a write txn. Length MDB_IDL_UM_SIZE. */ + MDB_ID2L me_dirty_list; + /** Max number of freelist items that can fit in a single overflow page */ + int me_maxfree_1pg; + /** Max size of a node on a page */ + unsigned int me_nodemax; +#if !(MDB_MAXKEYSIZE) + unsigned int me_maxkey; /**< max size of a key */ +#endif + int me_live_reader; /**< have liveness lock in reader table */ +#ifdef _WIN32 + int me_pidquery; /**< Used in OpenProcess */ +#endif +#ifdef MDB_USE_POSIX_MUTEX /* Posix mutexes reside in shared mem */ +# define me_rmutex me_txns->mti_rmutex /**< Shared reader lock */ +# define me_wmutex me_txns->mti_wmutex /**< Shared writer lock */ +#else + mdb_mutex_t me_rmutex; + mdb_mutex_t me_wmutex; +#endif + void *me_userctx; /**< User-settable context */ + MDB_assert_func *me_assert_func; /**< Callback for assertion failures */ +}; + + /** Nested transaction */ +typedef struct MDB_ntxn { + MDB_txn mnt_txn; /**< the transaction */ + MDB_pgstate mnt_pgstate; /**< parent transaction's saved freestate */ +} MDB_ntxn; + + /** max number of pages to commit in one writev() call */ +#define MDB_COMMIT_PAGES 64 +#if defined(IOV_MAX) && IOV_MAX < MDB_COMMIT_PAGES +#undef MDB_COMMIT_PAGES +#define MDB_COMMIT_PAGES IOV_MAX +#endif + + /** max bytes to write in one call */ +#define MAX_WRITE (0x40000000U >> (sizeof(ssize_t) == 4)) + + /** Check \b txn and \b dbi arguments to a function */ +#define TXN_DBI_EXIST(txn, dbi, validity) \ + ((txn) && (dbi)<(txn)->mt_numdbs && ((txn)->mt_dbflags[dbi] & (validity))) + + /** Check for misused \b dbi handles */ +#define TXN_DBI_CHANGED(txn, dbi) \ + ((txn)->mt_dbiseqs[dbi] != (txn)->mt_env->me_dbiseqs[dbi]) + +static int mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp); +static int mdb_page_new(MDB_cursor *mc, uint32_t flags, int num, MDB_page **mp); +static int mdb_page_touch(MDB_cursor *mc); + +#define MDB_END_NAMES {"committed", "empty-commit", "abort", "reset", \ + "reset-tmp", "fail-begin", "fail-beginchild"} +enum { + /* mdb_txn_end operation number, for logging */ + MDB_END_COMMITTED, MDB_END_EMPTY_COMMIT, MDB_END_ABORT, MDB_END_RESET, + MDB_END_RESET_TMP, MDB_END_FAIL_BEGIN, MDB_END_FAIL_BEGINCHILD +}; +#define MDB_END_OPMASK 0x0F /**< mask for #mdb_txn_end() operation number */ +#define MDB_END_UPDATE 0x10 /**< update env state (DBIs) */ +#define MDB_END_FREE 0x20 /**< free txn unless it is #MDB_env.%me_txn0 */ +#define MDB_END_SLOT MDB_NOTLS /**< release any reader slot if #MDB_NOTLS */ +static void mdb_txn_end(MDB_txn *txn, unsigned mode); + +static int mdb_page_get(MDB_cursor *mc, pgno_t pgno, MDB_page **mp, int *lvl); +static int mdb_page_search_root(MDB_cursor *mc, + MDB_val *key, int modify); +#define MDB_PS_MODIFY 1 +#define MDB_PS_ROOTONLY 2 +#define MDB_PS_FIRST 4 +#define MDB_PS_LAST 8 +static int mdb_page_search(MDB_cursor *mc, + MDB_val *key, int flags); +static int mdb_page_merge(MDB_cursor *csrc, MDB_cursor *cdst); + +#define MDB_SPLIT_REPLACE MDB_APPENDDUP /**< newkey is not new */ +static int mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, + pgno_t newpgno, unsigned int nflags); + +static int mdb_env_read_header(MDB_env *env, MDB_meta *meta); +static MDB_meta *mdb_env_pick_meta(const MDB_env *env); +static int mdb_env_write_meta(MDB_txn *txn); +#if defined(MDB_USE_POSIX_MUTEX) && !defined(MDB_ROBUST_SUPPORTED) /* Drop unused excl arg */ +# define mdb_env_close0(env, excl) mdb_env_close1(env) +#endif +static void mdb_env_close0(MDB_env *env, int excl); + +static MDB_node *mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp); +static int mdb_node_add(MDB_cursor *mc, indx_t indx, + MDB_val *key, MDB_val *data, pgno_t pgno, unsigned int flags); +static void mdb_node_del(MDB_cursor *mc, int ksize); +static void mdb_node_shrink(MDB_page *mp, indx_t indx); +static int mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst, int fromleft); +static int mdb_node_read(MDB_cursor *mc, MDB_node *leaf, MDB_val *data); +static size_t mdb_leaf_size(MDB_env *env, MDB_val *key, MDB_val *data); +static size_t mdb_branch_size(MDB_env *env, MDB_val *key); + +static int mdb_rebalance(MDB_cursor *mc); +static int mdb_update_key(MDB_cursor *mc, MDB_val *key); + +static void mdb_cursor_pop(MDB_cursor *mc); +static int mdb_cursor_push(MDB_cursor *mc, MDB_page *mp); + +static int mdb_cursor_del0(MDB_cursor *mc); +static int mdb_del0(MDB_txn *txn, MDB_dbi dbi, MDB_val *key, MDB_val *data, unsigned flags); +static int mdb_cursor_sibling(MDB_cursor *mc, int move_right); +static int mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op); +static int mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op); +static int mdb_cursor_set(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op, + int *exactp); +static int mdb_cursor_first(MDB_cursor *mc, MDB_val *key, MDB_val *data); +static int mdb_cursor_last(MDB_cursor *mc, MDB_val *key, MDB_val *data); + +static void mdb_cursor_init(MDB_cursor *mc, MDB_txn *txn, MDB_dbi dbi, MDB_xcursor *mx); +static void mdb_xcursor_init0(MDB_cursor *mc); +static void mdb_xcursor_init1(MDB_cursor *mc, MDB_node *node); +static void mdb_xcursor_init2(MDB_cursor *mc, MDB_xcursor *src_mx, int force); + +static int mdb_drop0(MDB_cursor *mc, int subs); +static void mdb_default_cmp(MDB_txn *txn, MDB_dbi dbi); +static int mdb_reader_check0(MDB_env *env, int rlocked, int *dead); + +/** @cond */ +static MDB_cmp_func mdb_cmp_memn, mdb_cmp_memnr, mdb_cmp_int, mdb_cmp_cint, mdb_cmp_long; +/** @endcond */ + +/** Compare two items pointing at size_t's of unknown alignment. */ +#ifdef MISALIGNED_OK +# define mdb_cmp_clong mdb_cmp_long +#else +# define mdb_cmp_clong mdb_cmp_cint +#endif + +#ifdef _WIN32 +static SECURITY_DESCRIPTOR mdb_null_sd; +static SECURITY_ATTRIBUTES mdb_all_sa; +static int mdb_sec_inited; + +struct MDB_name; +static int utf8_to_utf16(const char *src, struct MDB_name *dst, int xtra); +#endif + +/** Return the library version info. */ +char * ESECT +mdb_version(int *major, int *minor, int *patch) +{ + if (major) *major = MDB_VERSION_MAJOR; + if (minor) *minor = MDB_VERSION_MINOR; + if (patch) *patch = MDB_VERSION_PATCH; + return MDB_VERSION_STRING; +} + +/** Table of descriptions for LMDB @ref errors */ +static char *const mdb_errstr[] = { + "MDB_KEYEXIST: Key/data pair already exists", + "MDB_NOTFOUND: No matching key/data pair found", + "MDB_PAGE_NOTFOUND: Requested page not found", + "MDB_CORRUPTED: Located page was wrong type", + "MDB_PANIC: Update of meta page failed or environment had fatal error", + "MDB_VERSION_MISMATCH: Database environment version mismatch", + "MDB_INVALID: File is not an LMDB file", + "MDB_MAP_FULL: Environment mapsize limit reached", + "MDB_DBS_FULL: Environment maxdbs limit reached", + "MDB_READERS_FULL: Environment maxreaders limit reached", + "MDB_TLS_FULL: Thread-local storage keys full - too many environments open", + "MDB_TXN_FULL: Transaction has too many dirty pages - transaction too big", + "MDB_CURSOR_FULL: Internal error - cursor stack limit reached", + "MDB_PAGE_FULL: Internal error - page has no more space", + "MDB_MAP_RESIZED: Database contents grew beyond environment mapsize", + "MDB_INCOMPATIBLE: Operation and DB incompatible, or DB flags changed", + "MDB_BAD_RSLOT: Invalid reuse of reader locktable slot", + "MDB_BAD_TXN: Transaction must abort, has a child, or is invalid", + "MDB_BAD_VALSIZE: Unsupported size of key/DB name/data, or wrong DUPFIXED size", + "MDB_BAD_DBI: The specified DBI handle was closed/changed unexpectedly", +}; + +char * +mdb_strerror(int err) +{ +#ifdef _WIN32 + /** HACK: pad 4KB on stack over the buf. Return system msgs in buf. + * This works as long as no function between the call to mdb_strerror + * and the actual use of the message uses more than 4K of stack. + */ +#define MSGSIZE 1024 +#define PADSIZE 4096 + char buf[MSGSIZE+PADSIZE], *ptr = buf; +#endif + int i; + if (!err) + return ("Successful return: 0"); + + if (err >= MDB_KEYEXIST && err <= MDB_LAST_ERRCODE) { + i = err - MDB_KEYEXIST; + return mdb_errstr[i]; + } + +#ifdef _WIN32 + /* These are the C-runtime error codes we use. The comment indicates + * their numeric value, and the Win32 error they would correspond to + * if the error actually came from a Win32 API. A major mess, we should + * have used LMDB-specific error codes for everything. + */ + switch(err) { + case ENOENT: /* 2, FILE_NOT_FOUND */ + case EIO: /* 5, ACCESS_DENIED */ + case ENOMEM: /* 12, INVALID_ACCESS */ + case EACCES: /* 13, INVALID_DATA */ + case EBUSY: /* 16, CURRENT_DIRECTORY */ + case EINVAL: /* 22, BAD_COMMAND */ + case ENOSPC: /* 28, OUT_OF_PAPER */ + return strerror(err); + default: + ; + } + buf[0] = 0; + FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, err, 0, ptr, MSGSIZE, (va_list *)buf+MSGSIZE); + return ptr; +#else + return strerror(err); +#endif +} + +/** assert(3) variant in cursor context */ +#define mdb_cassert(mc, expr) mdb_assert0((mc)->mc_txn->mt_env, expr, #expr) +/** assert(3) variant in transaction context */ +#define mdb_tassert(txn, expr) mdb_assert0((txn)->mt_env, expr, #expr) +/** assert(3) variant in environment context */ +#define mdb_eassert(env, expr) mdb_assert0(env, expr, #expr) + +#ifndef NDEBUG +# define mdb_assert0(env, expr, expr_txt) ((expr) ? (void)0 : \ + mdb_assert_fail(env, expr_txt, mdb_func_, __FILE__, __LINE__)) + +static void ESECT +mdb_assert_fail(MDB_env *env, const char *expr_txt, + const char *func, const char *file, int line) +{ + char buf[400]; + sprintf(buf, "%.100s:%d: Assertion '%.200s' failed in %.40s()", + file, line, expr_txt, func); + if (env->me_assert_func) + env->me_assert_func(env, buf); + fprintf(stderr, "%s\n", buf); + abort(); +} +#else +# define mdb_assert0(env, expr, expr_txt) ((void) 0) +#endif /* NDEBUG */ + +#if MDB_DEBUG +/** Return the page number of \b mp which may be sub-page, for debug output */ +static pgno_t +mdb_dbg_pgno(MDB_page *mp) +{ + pgno_t ret; + COPY_PGNO(ret, mp->mp_pgno); + return ret; +} + +/** Display a key in hexadecimal and return the address of the result. + * @param[in] key the key to display + * @param[in] buf the buffer to write into. Should always be #DKBUF. + * @return The key in hexadecimal form. + */ +char * +mdb_dkey(MDB_val *key, char *buf) +{ + char *ptr = buf; + unsigned char *c = key->mv_data; + unsigned int i; + + if (!key) + return ""; + + if (key->mv_size > DKBUF_MAXKEYSIZE) + return "MDB_MAXKEYSIZE"; + /* may want to make this a dynamic check: if the key is mostly + * printable characters, print it as-is instead of converting to hex. + */ +#if 1 + buf[0] = '\0'; + for (i=0; imv_size; i++) + ptr += sprintf(ptr, "%02x", *c++); +#else + sprintf(buf, "%.*s", key->mv_size, key->mv_data); +#endif + return buf; +} + +static const char * +mdb_leafnode_type(MDB_node *n) +{ + static char *const tp[2][2] = {{"", ": DB"}, {": sub-page", ": sub-DB"}}; + return F_ISSET(n->mn_flags, F_BIGDATA) ? ": overflow page" : + tp[F_ISSET(n->mn_flags, F_DUPDATA)][F_ISSET(n->mn_flags, F_SUBDATA)]; +} + +/** Display all the keys in the page. */ +void +mdb_page_list(MDB_page *mp) +{ + pgno_t pgno = mdb_dbg_pgno(mp); + const char *type, *state = (mp->mp_flags & P_DIRTY) ? ", dirty" : ""; + MDB_node *node; + unsigned int i, nkeys, nsize, total = 0; + MDB_val key; + DKBUF; + + switch (mp->mp_flags & (P_BRANCH|P_LEAF|P_LEAF2|P_META|P_OVERFLOW|P_SUBP)) { + case P_BRANCH: type = "Branch page"; break; + case P_LEAF: type = "Leaf page"; break; + case P_LEAF|P_SUBP: type = "Sub-page"; break; + case P_LEAF|P_LEAF2: type = "LEAF2 page"; break; + case P_LEAF|P_LEAF2|P_SUBP: type = "LEAF2 sub-page"; break; + case P_OVERFLOW: + fprintf(stderr, "Overflow page %"Z"u pages %u%s\n", + pgno, mp->mp_pages, state); + return; + case P_META: + fprintf(stderr, "Meta-page %"Z"u txnid %"Z"u\n", + pgno, ((MDB_meta *)METADATA(mp))->mm_txnid); + return; + default: + fprintf(stderr, "Bad page %"Z"u flags 0x%X\n", pgno, mp->mp_flags); + return; + } + + nkeys = NUMKEYS(mp); + fprintf(stderr, "%s %"Z"u numkeys %d%s\n", type, pgno, nkeys, state); + + for (i=0; imp_pad; + key.mv_data = LEAF2KEY(mp, i, nsize); + total += nsize; + fprintf(stderr, "key %d: nsize %d, %s\n", i, nsize, DKEY(&key)); + continue; + } + node = NODEPTR(mp, i); + key.mv_size = node->mn_ksize; + key.mv_data = node->mn_data; + nsize = NODESIZE + key.mv_size; + if (IS_BRANCH(mp)) { + fprintf(stderr, "key %d: page %"Z"u, %s\n", i, NODEPGNO(node), + DKEY(&key)); + total += nsize; + } else { + if (F_ISSET(node->mn_flags, F_BIGDATA)) + nsize += sizeof(pgno_t); + else + nsize += NODEDSZ(node); + total += nsize; + nsize += sizeof(indx_t); + fprintf(stderr, "key %d: nsize %d, %s%s\n", + i, nsize, DKEY(&key), mdb_leafnode_type(node)); + } + total = EVEN(total); + } + fprintf(stderr, "Total: header %d + contents %d + unused %d\n", + IS_LEAF2(mp) ? PAGEHDRSZ : PAGEBASE + mp->mp_lower, total, SIZELEFT(mp)); +} + +void +mdb_cursor_chk(MDB_cursor *mc) +{ + unsigned int i; + MDB_node *node; + MDB_page *mp; + + if (!mc->mc_snum || !(mc->mc_flags & C_INITIALIZED)) return; + for (i=0; imc_top; i++) { + mp = mc->mc_pg[i]; + node = NODEPTR(mp, mc->mc_ki[i]); + if (NODEPGNO(node) != mc->mc_pg[i+1]->mp_pgno) + printf("oops!\n"); + } + if (mc->mc_ki[i] >= NUMKEYS(mc->mc_pg[i])) + printf("ack!\n"); + if (XCURSOR_INITED(mc)) { + node = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); + if (((node->mn_flags & (F_DUPDATA|F_SUBDATA)) == F_DUPDATA) && + mc->mc_xcursor->mx_cursor.mc_pg[0] != NODEDATA(node)) { + printf("blah!\n"); + } + } +} +#endif + +#if (MDB_DEBUG) > 2 +/** Count all the pages in each DB and in the freelist + * and make sure it matches the actual number of pages + * being used. + * All named DBs must be open for a correct count. + */ +static void mdb_audit(MDB_txn *txn) +{ + MDB_cursor mc; + MDB_val key, data; + MDB_ID freecount, count; + MDB_dbi i; + int rc; + + freecount = 0; + mdb_cursor_init(&mc, txn, FREE_DBI, NULL); + while ((rc = mdb_cursor_get(&mc, &key, &data, MDB_NEXT)) == 0) + freecount += *(MDB_ID *)data.mv_data; + mdb_tassert(txn, rc == MDB_NOTFOUND); + + count = 0; + for (i = 0; imt_numdbs; i++) { + MDB_xcursor mx; + if (!(txn->mt_dbflags[i] & DB_VALID)) + continue; + mdb_cursor_init(&mc, txn, i, &mx); + if (txn->mt_dbs[i].md_root == P_INVALID) + continue; + count += txn->mt_dbs[i].md_branch_pages + + txn->mt_dbs[i].md_leaf_pages + + txn->mt_dbs[i].md_overflow_pages; + if (txn->mt_dbs[i].md_flags & MDB_DUPSORT) { + rc = mdb_page_search(&mc, NULL, MDB_PS_FIRST); + for (; rc == MDB_SUCCESS; rc = mdb_cursor_sibling(&mc, 1)) { + unsigned j; + MDB_page *mp; + mp = mc.mc_pg[mc.mc_top]; + for (j=0; jmn_flags & F_SUBDATA) { + MDB_db db; + memcpy(&db, NODEDATA(leaf), sizeof(db)); + count += db.md_branch_pages + db.md_leaf_pages + + db.md_overflow_pages; + } + } + } + mdb_tassert(txn, rc == MDB_NOTFOUND); + } + } + if (freecount + count + NUM_METAS != txn->mt_next_pgno) { + fprintf(stderr, "audit: %"Z"u freecount: %"Z"u count: %"Z"u total: %"Z"u next_pgno: %"Z"u\n", + txn->mt_txnid, freecount, count+NUM_METAS, + freecount+count+NUM_METAS, txn->mt_next_pgno); + } +} +#endif + +int +mdb_cmp(MDB_txn *txn, MDB_dbi dbi, const MDB_val *a, const MDB_val *b) +{ + return txn->mt_dbxs[dbi].md_cmp(a, b); +} + +int +mdb_dcmp(MDB_txn *txn, MDB_dbi dbi, const MDB_val *a, const MDB_val *b) +{ + MDB_cmp_func *dcmp = txn->mt_dbxs[dbi].md_dcmp; +#if UINT_MAX < SIZE_MAX + if (dcmp == mdb_cmp_int && a->mv_size == sizeof(size_t)) + dcmp = mdb_cmp_clong; +#endif + return dcmp(a, b); +} + +/** Allocate memory for a page. + * Re-use old malloc'd pages first for singletons, otherwise just malloc. + * Set #MDB_TXN_ERROR on failure. + */ +static MDB_page * +mdb_page_malloc(MDB_txn *txn, unsigned num) +{ + MDB_env *env = txn->mt_env; + MDB_page *ret = env->me_dpages; + size_t psize = env->me_psize, sz = psize, off; + /* For ! #MDB_NOMEMINIT, psize counts how much to init. + * For a single page alloc, we init everything after the page header. + * For multi-page, we init the final page; if the caller needed that + * many pages they will be filling in at least up to the last page. + */ + if (num == 1) { + if (ret) { + VGMEMP_ALLOC(env, ret, sz); + VGMEMP_DEFINED(ret, sizeof(ret->mp_next)); + env->me_dpages = ret->mp_next; + return ret; + } + psize -= off = PAGEHDRSZ; + } else { + sz *= num; + off = sz - psize; + } + if ((ret = malloc(sz)) != NULL) { + VGMEMP_ALLOC(env, ret, sz); + if (!(env->me_flags & MDB_NOMEMINIT)) { + memset((char *)ret + off, 0, psize); + ret->mp_pad = 0; + } + } else { + txn->mt_flags |= MDB_TXN_ERROR; + } + return ret; +} +/** Free a single page. + * Saves single pages to a list, for future reuse. + * (This is not used for multi-page overflow pages.) + */ +static void +mdb_page_free(MDB_env *env, MDB_page *mp) +{ + mp->mp_next = env->me_dpages; + VGMEMP_FREE(env, mp); + env->me_dpages = mp; +} + +/** Free a dirty page */ +static void +mdb_dpage_free(MDB_env *env, MDB_page *dp) +{ + if (!IS_OVERFLOW(dp) || dp->mp_pages == 1) { + mdb_page_free(env, dp); + } else { + /* large pages just get freed directly */ + VGMEMP_FREE(env, dp); + free(dp); + } +} + +/** Return all dirty pages to dpage list */ +static void +mdb_dlist_free(MDB_txn *txn) +{ + MDB_env *env = txn->mt_env; + MDB_ID2L dl = txn->mt_u.dirty_list; + unsigned i, n = dl[0].mid; + + for (i = 1; i <= n; i++) { + mdb_dpage_free(env, dl[i].mptr); + } + dl[0].mid = 0; +} + +/** Loosen or free a single page. + * Saves single pages to a list for future reuse + * in this same txn. It has been pulled from the freeDB + * and already resides on the dirty list, but has been + * deleted. Use these pages first before pulling again + * from the freeDB. + * + * If the page wasn't dirtied in this txn, just add it + * to this txn's free list. + */ +static int +mdb_page_loose(MDB_cursor *mc, MDB_page *mp) +{ + int loose = 0; + pgno_t pgno = mp->mp_pgno; + MDB_txn *txn = mc->mc_txn; + + if ((mp->mp_flags & P_DIRTY) && mc->mc_dbi != FREE_DBI) { + if (txn->mt_parent) { + MDB_ID2 *dl = txn->mt_u.dirty_list; + /* If txn has a parent, make sure the page is in our + * dirty list. + */ + if (dl[0].mid) { + unsigned x = mdb_mid2l_search(dl, pgno); + if (x <= dl[0].mid && dl[x].mid == pgno) { + if (mp != dl[x].mptr) { /* bad cursor? */ + mc->mc_flags &= ~(C_INITIALIZED|C_EOF); + txn->mt_flags |= MDB_TXN_ERROR; + return MDB_CORRUPTED; + } + /* ok, it's ours */ + loose = 1; + } + } + } else { + /* no parent txn, so it's just ours */ + loose = 1; + } + } + if (loose) { + DPRINTF(("loosen db %d page %"Z"u", DDBI(mc), + mp->mp_pgno)); + NEXT_LOOSE_PAGE(mp) = txn->mt_loose_pgs; + txn->mt_loose_pgs = mp; + txn->mt_loose_count++; + mp->mp_flags |= P_LOOSE; + } else { + int rc = mdb_midl_append(&txn->mt_free_pgs, pgno); + if (rc) + return rc; + } + + return MDB_SUCCESS; +} + +/** Set or clear P_KEEP in dirty, non-overflow, non-sub pages watched by txn. + * @param[in] mc A cursor handle for the current operation. + * @param[in] pflags Flags of the pages to update: + * P_DIRTY to set P_KEEP, P_DIRTY|P_KEEP to clear it. + * @param[in] all No shortcuts. Needed except after a full #mdb_page_flush(). + * @return 0 on success, non-zero on failure. + */ +static int +mdb_pages_xkeep(MDB_cursor *mc, unsigned pflags, int all) +{ + enum { Mask = P_SUBP|P_DIRTY|P_LOOSE|P_KEEP }; + MDB_txn *txn = mc->mc_txn; + MDB_cursor *m3, *m0 = mc; + MDB_xcursor *mx; + MDB_page *dp, *mp; + MDB_node *leaf; + unsigned i, j; + int rc = MDB_SUCCESS, level; + + /* Mark pages seen by cursors */ + if (mc->mc_flags & C_UNTRACK) + mc = NULL; /* will find mc in mt_cursors */ + for (i = txn->mt_numdbs;; mc = txn->mt_cursors[--i]) { + for (; mc; mc=mc->mc_next) { + if (!(mc->mc_flags & C_INITIALIZED)) + continue; + for (m3 = mc;; m3 = &mx->mx_cursor) { + mp = NULL; + for (j=0; jmc_snum; j++) { + mp = m3->mc_pg[j]; + if ((mp->mp_flags & Mask) == pflags) + mp->mp_flags ^= P_KEEP; + } + mx = m3->mc_xcursor; + /* Proceed to mx if it is at a sub-database */ + if (! (mx && (mx->mx_cursor.mc_flags & C_INITIALIZED))) + break; + if (! (mp && (mp->mp_flags & P_LEAF))) + break; + leaf = NODEPTR(mp, m3->mc_ki[j-1]); + if (!(leaf->mn_flags & F_SUBDATA)) + break; + } + } + if (i == 0) + break; + } + + if (all) { + /* Mark dirty root pages */ + for (i=0; imt_numdbs; i++) { + if (txn->mt_dbflags[i] & DB_DIRTY) { + pgno_t pgno = txn->mt_dbs[i].md_root; + if (pgno == P_INVALID) + continue; + if ((rc = mdb_page_get(m0, pgno, &dp, &level)) != MDB_SUCCESS) + break; + if ((dp->mp_flags & Mask) == pflags && level <= 1) + dp->mp_flags ^= P_KEEP; + } + } + } + + return rc; +} + +static int mdb_page_flush(MDB_txn *txn, int keep); + +/** Spill pages from the dirty list back to disk. + * This is intended to prevent running into #MDB_TXN_FULL situations, + * but note that they may still occur in a few cases: + * 1) our estimate of the txn size could be too small. Currently this + * seems unlikely, except with a large number of #MDB_MULTIPLE items. + * 2) child txns may run out of space if their parents dirtied a + * lot of pages and never spilled them. TODO: we probably should do + * a preemptive spill during #mdb_txn_begin() of a child txn, if + * the parent's dirty_room is below a given threshold. + * + * Otherwise, if not using nested txns, it is expected that apps will + * not run into #MDB_TXN_FULL any more. The pages are flushed to disk + * the same way as for a txn commit, e.g. their P_DIRTY flag is cleared. + * If the txn never references them again, they can be left alone. + * If the txn only reads them, they can be used without any fuss. + * If the txn writes them again, they can be dirtied immediately without + * going thru all of the work of #mdb_page_touch(). Such references are + * handled by #mdb_page_unspill(). + * + * Also note, we never spill DB root pages, nor pages of active cursors, + * because we'll need these back again soon anyway. And in nested txns, + * we can't spill a page in a child txn if it was already spilled in a + * parent txn. That would alter the parent txns' data even though + * the child hasn't committed yet, and we'd have no way to undo it if + * the child aborted. + * + * @param[in] m0 cursor A cursor handle identifying the transaction and + * database for which we are checking space. + * @param[in] key For a put operation, the key being stored. + * @param[in] data For a put operation, the data being stored. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_page_spill(MDB_cursor *m0, MDB_val *key, MDB_val *data) +{ + MDB_txn *txn = m0->mc_txn; + MDB_page *dp; + MDB_ID2L dl = txn->mt_u.dirty_list; + unsigned int i, j, need; + int rc; + + if (m0->mc_flags & C_SUB) + return MDB_SUCCESS; + + /* Estimate how much space this op will take */ + i = m0->mc_db->md_depth; + /* Named DBs also dirty the main DB */ + if (m0->mc_dbi >= CORE_DBS) + i += txn->mt_dbs[MAIN_DBI].md_depth; + /* For puts, roughly factor in the key+data size */ + if (key) + i += (LEAFSIZE(key, data) + txn->mt_env->me_psize) / txn->mt_env->me_psize; + i += i; /* double it for good measure */ + need = i; + + if (txn->mt_dirty_room > i) + return MDB_SUCCESS; + + if (!txn->mt_spill_pgs) { + txn->mt_spill_pgs = mdb_midl_alloc(MDB_IDL_UM_MAX); + if (!txn->mt_spill_pgs) + return ENOMEM; + } else { + /* purge deleted slots */ + MDB_IDL sl = txn->mt_spill_pgs; + unsigned int num = sl[0]; + j=0; + for (i=1; i<=num; i++) { + if (!(sl[i] & 1)) + sl[++j] = sl[i]; + } + sl[0] = j; + } + + /* Preserve pages which may soon be dirtied again */ + if ((rc = mdb_pages_xkeep(m0, P_DIRTY, 1)) != MDB_SUCCESS) + goto done; + + /* Less aggressive spill - we originally spilled the entire dirty list, + * with a few exceptions for cursor pages and DB root pages. But this + * turns out to be a lot of wasted effort because in a large txn many + * of those pages will need to be used again. So now we spill only 1/8th + * of the dirty pages. Testing revealed this to be a good tradeoff, + * better than 1/2, 1/4, or 1/10. + */ + if (need < MDB_IDL_UM_MAX / 8) + need = MDB_IDL_UM_MAX / 8; + + /* Save the page IDs of all the pages we're flushing */ + /* flush from the tail forward, this saves a lot of shifting later on. */ + for (i=dl[0].mid; i && need; i--) { + MDB_ID pn = dl[i].mid << 1; + dp = dl[i].mptr; + if (dp->mp_flags & (P_LOOSE|P_KEEP)) + continue; + /* Can't spill twice, make sure it's not already in a parent's + * spill list. + */ + if (txn->mt_parent) { + MDB_txn *tx2; + for (tx2 = txn->mt_parent; tx2; tx2 = tx2->mt_parent) { + if (tx2->mt_spill_pgs) { + j = mdb_midl_search(tx2->mt_spill_pgs, pn); + if (j <= tx2->mt_spill_pgs[0] && tx2->mt_spill_pgs[j] == pn) { + dp->mp_flags |= P_KEEP; + break; + } + } + } + if (tx2) + continue; + } + if ((rc = mdb_midl_append(&txn->mt_spill_pgs, pn))) + goto done; + need--; + } + mdb_midl_sort(txn->mt_spill_pgs); + + /* Flush the spilled part of dirty list */ + if ((rc = mdb_page_flush(txn, i)) != MDB_SUCCESS) + goto done; + + /* Reset any dirty pages we kept that page_flush didn't see */ + rc = mdb_pages_xkeep(m0, P_DIRTY|P_KEEP, i); + +done: + txn->mt_flags |= rc ? MDB_TXN_ERROR : MDB_TXN_SPILLS; + return rc; +} + +/** Find oldest txnid still referenced. Expects txn->mt_txnid > 0. */ +static txnid_t +mdb_find_oldest(MDB_txn *txn) +{ + int i; + txnid_t mr, oldest = txn->mt_txnid - 1; + if (txn->mt_env->me_txns) { + MDB_reader *r = txn->mt_env->me_txns->mti_readers; + for (i = txn->mt_env->me_txns->mti_numreaders; --i >= 0; ) { + if (r[i].mr_pid) { + mr = r[i].mr_txnid; + if (oldest > mr) + oldest = mr; + } + } + } + return oldest; +} + +/** Add a page to the txn's dirty list */ +static void +mdb_page_dirty(MDB_txn *txn, MDB_page *mp) +{ + MDB_ID2 mid; + int rc, (*insert)(MDB_ID2L, MDB_ID2 *); + + if (txn->mt_flags & MDB_TXN_WRITEMAP) { + insert = mdb_mid2l_append; + } else { + insert = mdb_mid2l_insert; + } + mid.mid = mp->mp_pgno; + mid.mptr = mp; + rc = insert(txn->mt_u.dirty_list, &mid); + mdb_tassert(txn, rc == 0); + txn->mt_dirty_room--; +} + +/** Allocate page numbers and memory for writing. Maintain me_pglast, + * me_pghead and mt_next_pgno. Set #MDB_TXN_ERROR on failure. + * + * If there are free pages available from older transactions, they + * are re-used first. Otherwise allocate a new page at mt_next_pgno. + * Do not modify the freedB, just merge freeDB records into me_pghead[] + * and move me_pglast to say which records were consumed. Only this + * function can create me_pghead and move me_pglast/mt_next_pgno. + * @param[in] mc cursor A cursor handle identifying the transaction and + * database for which we are allocating. + * @param[in] num the number of pages to allocate. + * @param[out] mp Address of the allocated page(s). Requests for multiple pages + * will always be satisfied by a single contiguous chunk of memory. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp) +{ +#ifdef MDB_PARANOID /* Seems like we can ignore this now */ + /* Get at most more freeDB records once me_pghead + * has enough pages. If not enough, use new pages from the map. + * If and mc is updating the freeDB, only get new + * records if me_pghead is empty. Then the freelist cannot play + * catch-up with itself by growing while trying to save it. + */ + enum { Paranoid = 1, Max_retries = 500 }; +#else + enum { Paranoid = 0, Max_retries = INT_MAX /*infinite*/ }; +#endif + int rc, retry = num * 60; + MDB_txn *txn = mc->mc_txn; + MDB_env *env = txn->mt_env; + pgno_t pgno, *mop = env->me_pghead; + unsigned i, j, mop_len = mop ? mop[0] : 0, n2 = num-1; + MDB_page *np; + txnid_t oldest = 0, last; + MDB_cursor_op op; + MDB_cursor m2; + int found_old = 0; + + /* If there are any loose pages, just use them */ + if (num == 1 && txn->mt_loose_pgs) { + np = txn->mt_loose_pgs; + txn->mt_loose_pgs = NEXT_LOOSE_PAGE(np); + txn->mt_loose_count--; + DPRINTF(("db %d use loose page %"Z"u", DDBI(mc), + np->mp_pgno)); + *mp = np; + return MDB_SUCCESS; + } + + *mp = NULL; + + /* If our dirty list is already full, we can't do anything */ + if (txn->mt_dirty_room == 0) { + rc = MDB_TXN_FULL; + goto fail; + } + + for (op = MDB_FIRST;; op = MDB_NEXT) { + MDB_val key, data; + MDB_node *leaf; + pgno_t *idl; + + /* Seek a big enough contiguous page range. Prefer + * pages at the tail, just truncating the list. + */ + if (mop_len > n2) { + i = mop_len; + do { + pgno = mop[i]; + if (mop[i-n2] == pgno+n2) + goto search_done; + } while (--i > n2); + if (--retry < 0) + break; + } + + if (op == MDB_FIRST) { /* 1st iteration */ + /* Prepare to fetch more and coalesce */ + last = env->me_pglast; + oldest = env->me_pgoldest; + mdb_cursor_init(&m2, txn, FREE_DBI, NULL); + if (last) { + op = MDB_SET_RANGE; + key.mv_data = &last; /* will look up last+1 */ + key.mv_size = sizeof(last); + } + if (Paranoid && mc->mc_dbi == FREE_DBI) + retry = -1; + } + if (Paranoid && retry < 0 && mop_len) + break; + + last++; + /* Do not fetch more if the record will be too recent */ + if (oldest <= last) { + if (!found_old) { + oldest = mdb_find_oldest(txn); + env->me_pgoldest = oldest; + found_old = 1; + } + if (oldest <= last) + break; + } + rc = mdb_cursor_get(&m2, &key, NULL, op); + if (rc) { + if (rc == MDB_NOTFOUND) + break; + goto fail; + } + last = *(txnid_t*)key.mv_data; + if (oldest <= last) { + if (!found_old) { + oldest = mdb_find_oldest(txn); + env->me_pgoldest = oldest; + found_old = 1; + } + if (oldest <= last) + break; + } + np = m2.mc_pg[m2.mc_top]; + leaf = NODEPTR(np, m2.mc_ki[m2.mc_top]); + if ((rc = mdb_node_read(&m2, leaf, &data)) != MDB_SUCCESS) + goto fail; + + idl = (MDB_ID *) data.mv_data; + i = idl[0]; + if (!mop) { + if (!(env->me_pghead = mop = mdb_midl_alloc(i))) { + rc = ENOMEM; + goto fail; + } + } else { + if ((rc = mdb_midl_need(&env->me_pghead, i)) != 0) + goto fail; + mop = env->me_pghead; + } + env->me_pglast = last; +#if (MDB_DEBUG) > 1 + DPRINTF(("IDL read txn %"Z"u root %"Z"u num %u", + last, txn->mt_dbs[FREE_DBI].md_root, i)); + for (j = i; j; j--) + DPRINTF(("IDL %"Z"u", idl[j])); +#endif + /* Merge in descending sorted order */ + mdb_midl_xmerge(mop, idl); + mop_len = mop[0]; + } + + /* Use new pages from the map when nothing suitable in the freeDB */ + i = 0; + pgno = txn->mt_next_pgno; + if (pgno + num >= env->me_maxpg) { + DPUTS("DB size maxed out"); + rc = MDB_MAP_FULL; + goto fail; + } + +search_done: + if (env->me_flags & MDB_WRITEMAP) { + np = (MDB_page *)(env->me_map + env->me_psize * pgno); + } else { + if (!(np = mdb_page_malloc(txn, num))) { + rc = ENOMEM; + goto fail; + } + } + if (i) { + mop[0] = mop_len -= num; + /* Move any stragglers down */ + for (j = i-num; j < mop_len; ) + mop[++j] = mop[++i]; + } else { + txn->mt_next_pgno = pgno + num; + } + np->mp_pgno = pgno; + mdb_page_dirty(txn, np); + *mp = np; + + return MDB_SUCCESS; + +fail: + txn->mt_flags |= MDB_TXN_ERROR; + return rc; +} + +/** Copy the used portions of a non-overflow page. + * @param[in] dst page to copy into + * @param[in] src page to copy from + * @param[in] psize size of a page + */ +static void +mdb_page_copy(MDB_page *dst, MDB_page *src, unsigned int psize) +{ + enum { Align = sizeof(pgno_t) }; + indx_t upper = src->mp_upper, lower = src->mp_lower, unused = upper-lower; + + /* If page isn't full, just copy the used portion. Adjust + * alignment so memcpy may copy words instead of bytes. + */ + if ((unused &= -Align) && !IS_LEAF2(src)) { + upper = (upper + PAGEBASE) & -Align; + memcpy(dst, src, (lower + PAGEBASE + (Align-1)) & -Align); + memcpy((pgno_t *)((char *)dst+upper), (pgno_t *)((char *)src+upper), + psize - upper); + } else { + memcpy(dst, src, psize - unused); + } +} + +/** Pull a page off the txn's spill list, if present. + * If a page being referenced was spilled to disk in this txn, bring + * it back and make it dirty/writable again. + * @param[in] txn the transaction handle. + * @param[in] mp the page being referenced. It must not be dirty. + * @param[out] ret the writable page, if any. ret is unchanged if + * mp wasn't spilled. + */ +static int +mdb_page_unspill(MDB_txn *txn, MDB_page *mp, MDB_page **ret) +{ + MDB_env *env = txn->mt_env; + const MDB_txn *tx2; + unsigned x; + pgno_t pgno = mp->mp_pgno, pn = pgno << 1; + + for (tx2 = txn; tx2; tx2=tx2->mt_parent) { + if (!tx2->mt_spill_pgs) + continue; + x = mdb_midl_search(tx2->mt_spill_pgs, pn); + if (x <= tx2->mt_spill_pgs[0] && tx2->mt_spill_pgs[x] == pn) { + MDB_page *np; + int num; + if (txn->mt_dirty_room == 0) + return MDB_TXN_FULL; + if (IS_OVERFLOW(mp)) + num = mp->mp_pages; + else + num = 1; + if (env->me_flags & MDB_WRITEMAP) { + np = mp; + } else { + np = mdb_page_malloc(txn, num); + if (!np) + return ENOMEM; + if (num > 1) + memcpy(np, mp, num * env->me_psize); + else + mdb_page_copy(np, mp, env->me_psize); + } + if (tx2 == txn) { + /* If in current txn, this page is no longer spilled. + * If it happens to be the last page, truncate the spill list. + * Otherwise mark it as deleted by setting the LSB. + */ + if (x == txn->mt_spill_pgs[0]) + txn->mt_spill_pgs[0]--; + else + txn->mt_spill_pgs[x] |= 1; + } /* otherwise, if belonging to a parent txn, the + * page remains spilled until child commits + */ + + mdb_page_dirty(txn, np); + np->mp_flags |= P_DIRTY; + *ret = np; + break; + } + } + return MDB_SUCCESS; +} + +/** Touch a page: make it dirty and re-insert into tree with updated pgno. + * Set #MDB_TXN_ERROR on failure. + * @param[in] mc cursor pointing to the page to be touched + * @return 0 on success, non-zero on failure. + */ +static int +mdb_page_touch(MDB_cursor *mc) +{ + MDB_page *mp = mc->mc_pg[mc->mc_top], *np; + MDB_txn *txn = mc->mc_txn; + MDB_cursor *m2, *m3; + pgno_t pgno; + int rc; + + if (!F_ISSET(mp->mp_flags, P_DIRTY)) { + if (txn->mt_flags & MDB_TXN_SPILLS) { + np = NULL; + rc = mdb_page_unspill(txn, mp, &np); + if (rc) + goto fail; + if (np) + goto done; + } + if ((rc = mdb_midl_need(&txn->mt_free_pgs, 1)) || + (rc = mdb_page_alloc(mc, 1, &np))) + goto fail; + pgno = np->mp_pgno; + DPRINTF(("touched db %d page %"Z"u -> %"Z"u", DDBI(mc), + mp->mp_pgno, pgno)); + mdb_cassert(mc, mp->mp_pgno != pgno); + mdb_midl_xappend(txn->mt_free_pgs, mp->mp_pgno); + /* Update the parent page, if any, to point to the new page */ + if (mc->mc_top) { + MDB_page *parent = mc->mc_pg[mc->mc_top-1]; + MDB_node *node = NODEPTR(parent, mc->mc_ki[mc->mc_top-1]); + SETPGNO(node, pgno); + } else { + mc->mc_db->md_root = pgno; + } + } else if (txn->mt_parent && !IS_SUBP(mp)) { + MDB_ID2 mid, *dl = txn->mt_u.dirty_list; + pgno = mp->mp_pgno; + /* If txn has a parent, make sure the page is in our + * dirty list. + */ + if (dl[0].mid) { + unsigned x = mdb_mid2l_search(dl, pgno); + if (x <= dl[0].mid && dl[x].mid == pgno) { + if (mp != dl[x].mptr) { /* bad cursor? */ + mc->mc_flags &= ~(C_INITIALIZED|C_EOF); + txn->mt_flags |= MDB_TXN_ERROR; + return MDB_CORRUPTED; + } + return 0; + } + } + mdb_cassert(mc, dl[0].mid < MDB_IDL_UM_MAX); + /* No - copy it */ + np = mdb_page_malloc(txn, 1); + if (!np) + return ENOMEM; + mid.mid = pgno; + mid.mptr = np; + rc = mdb_mid2l_insert(dl, &mid); + mdb_cassert(mc, rc == 0); + } else { + return 0; + } + + mdb_page_copy(np, mp, txn->mt_env->me_psize); + np->mp_pgno = pgno; + np->mp_flags |= P_DIRTY; + +done: + /* Adjust cursors pointing to mp */ + mc->mc_pg[mc->mc_top] = np; + m2 = txn->mt_cursors[mc->mc_dbi]; + if (mc->mc_flags & C_SUB) { + for (; m2; m2=m2->mc_next) { + m3 = &m2->mc_xcursor->mx_cursor; + if (m3->mc_snum < mc->mc_snum) continue; + if (m3->mc_pg[mc->mc_top] == mp) + m3->mc_pg[mc->mc_top] = np; + } + } else { + for (; m2; m2=m2->mc_next) { + if (m2->mc_snum < mc->mc_snum) continue; + if (m2 == mc) continue; + if (m2->mc_pg[mc->mc_top] == mp) { + m2->mc_pg[mc->mc_top] = np; + if (IS_LEAF(np)) + XCURSOR_REFRESH(m2, mc->mc_top, np); + } + } + } + return 0; + +fail: + txn->mt_flags |= MDB_TXN_ERROR; + return rc; +} + +int +mdb_env_sync(MDB_env *env, int force) +{ + int rc = 0; + if (env->me_flags & MDB_RDONLY) + return EACCES; + if (force || !F_ISSET(env->me_flags, MDB_NOSYNC)) { + if (env->me_flags & MDB_WRITEMAP) { + int flags = ((env->me_flags & MDB_MAPASYNC) && !force) + ? MS_ASYNC : MS_SYNC; + if (MDB_MSYNC(env->me_map, env->me_mapsize, flags)) + rc = ErrCode(); +#ifdef _WIN32 + else if (flags == MS_SYNC && MDB_FDATASYNC(env->me_fd)) + rc = ErrCode(); +#endif + } else { +#ifdef BROKEN_FDATASYNC + if (env->me_flags & MDB_FSYNCONLY) { + if (fsync(env->me_fd)) + rc = ErrCode(); + } else +#endif +#if defined(URBIT_RUNTIME_OS_DARWIN) + if (fcntl(env->me_fd, F_FULLFSYNC, 0)) +#else + if (MDB_FDATASYNC(env->me_fd)) +#endif + rc = ErrCode(); + } + } + return rc; +} + +/** Back up parent txn's cursors, then grab the originals for tracking */ +static int +mdb_cursor_shadow(MDB_txn *src, MDB_txn *dst) +{ + MDB_cursor *mc, *bk; + MDB_xcursor *mx; + size_t size; + int i; + + for (i = src->mt_numdbs; --i >= 0; ) { + if ((mc = src->mt_cursors[i]) != NULL) { + size = sizeof(MDB_cursor); + if (mc->mc_xcursor) + size += sizeof(MDB_xcursor); + for (; mc; mc = bk->mc_next) { + bk = malloc(size); + if (!bk) + return ENOMEM; + *bk = *mc; + mc->mc_backup = bk; + mc->mc_db = &dst->mt_dbs[i]; + /* Kill pointers into src to reduce abuse: The + * user may not use mc until dst ends. But we need a valid + * txn pointer here for cursor fixups to keep working. + */ + mc->mc_txn = dst; + mc->mc_dbflag = &dst->mt_dbflags[i]; + if ((mx = mc->mc_xcursor) != NULL) { + *(MDB_xcursor *)(bk+1) = *mx; + mx->mx_cursor.mc_txn = dst; + } + mc->mc_next = dst->mt_cursors[i]; + dst->mt_cursors[i] = mc; + } + } + } + return MDB_SUCCESS; +} + +/** Close this write txn's cursors, give parent txn's cursors back to parent. + * @param[in] txn the transaction handle. + * @param[in] merge true to keep changes to parent cursors, false to revert. + * @return 0 on success, non-zero on failure. + */ +static void +mdb_cursors_close(MDB_txn *txn, unsigned merge) +{ + MDB_cursor **cursors = txn->mt_cursors, *mc, *next, *bk; + MDB_xcursor *mx; + int i; + + for (i = txn->mt_numdbs; --i >= 0; ) { + for (mc = cursors[i]; mc; mc = next) { + next = mc->mc_next; + if ((bk = mc->mc_backup) != NULL) { + if (merge) { + /* Commit changes to parent txn */ + mc->mc_next = bk->mc_next; + mc->mc_backup = bk->mc_backup; + mc->mc_txn = bk->mc_txn; + mc->mc_db = bk->mc_db; + mc->mc_dbflag = bk->mc_dbflag; + if ((mx = mc->mc_xcursor) != NULL) + mx->mx_cursor.mc_txn = bk->mc_txn; + } else { + /* Abort nested txn */ + *mc = *bk; + if ((mx = mc->mc_xcursor) != NULL) + *mx = *(MDB_xcursor *)(bk+1); + } + mc = bk; + } + /* Only malloced cursors are permanently tracked. */ + free(mc); + } + cursors[i] = NULL; + } +} + +#if !(MDB_PIDLOCK) /* Currently the same as defined(_WIN32) */ +enum Pidlock_op { + Pidset, Pidcheck +}; +#else +enum Pidlock_op { + Pidset = F_SETLK, Pidcheck = F_GETLK +}; +#endif + +/** Set or check a pid lock. Set returns 0 on success. + * Check returns 0 if the process is certainly dead, nonzero if it may + * be alive (the lock exists or an error happened so we do not know). + * + * On Windows Pidset is a no-op, we merely check for the existence + * of the process with the given pid. On POSIX we use a single byte + * lock on the lockfile, set at an offset equal to the pid. + */ +static int +mdb_reader_pid(MDB_env *env, enum Pidlock_op op, MDB_PID_T pid) +{ +#if !(MDB_PIDLOCK) /* Currently the same as defined(_WIN32) */ + int ret = 0; + HANDLE h; + if (op == Pidcheck) { + h = OpenProcess(env->me_pidquery, FALSE, pid); + /* No documented "no such process" code, but other program use this: */ + if (!h) + return ErrCode() != ERROR_INVALID_PARAMETER; + /* A process exists until all handles to it close. Has it exited? */ + ret = WaitForSingleObject(h, 0) != 0; + CloseHandle(h); + } + return ret; +#else + for (;;) { + int rc; + struct flock lock_info; + memset(&lock_info, 0, sizeof(lock_info)); + lock_info.l_type = F_WRLCK; + lock_info.l_whence = SEEK_SET; + lock_info.l_start = pid; + lock_info.l_len = 1; + if ((rc = fcntl(env->me_lfd, op, &lock_info)) == 0) { + if (op == F_GETLK && lock_info.l_type != F_UNLCK) + rc = -1; + } else if ((rc = ErrCode()) == EINTR) { + continue; + } + return rc; + } +#endif +} + +/** Common code for #mdb_txn_begin() and #mdb_txn_renew(). + * @param[in] txn the transaction handle to initialize + * @return 0 on success, non-zero on failure. + */ +static int +mdb_txn_renew0(MDB_txn *txn) +{ + MDB_env *env = txn->mt_env; + MDB_txninfo *ti = env->me_txns; + MDB_meta *meta; + unsigned int i, nr, flags = txn->mt_flags; + uint16_t x; + int rc, new_notls = 0; + + if ((flags &= MDB_TXN_RDONLY) != 0) { + if (!ti) { + meta = mdb_env_pick_meta(env); + txn->mt_txnid = meta->mm_txnid; + txn->mt_u.reader = NULL; + } else { + MDB_reader *r = (env->me_flags & MDB_NOTLS) ? txn->mt_u.reader : + pthread_getspecific(env->me_txkey); + if (r) { + if (r->mr_pid != env->me_pid || r->mr_txnid != (txnid_t)-1) + return MDB_BAD_RSLOT; + } else { + MDB_PID_T pid = env->me_pid; + MDB_THR_T tid = pthread_self(); + mdb_mutexref_t rmutex = env->me_rmutex; + + if (!env->me_live_reader) { + rc = mdb_reader_pid(env, Pidset, pid); + if (rc) + return rc; + env->me_live_reader = 1; + } + + if (LOCK_MUTEX(rc, env, rmutex)) + return rc; + nr = ti->mti_numreaders; + for (i=0; imti_readers[i].mr_pid == 0) + break; + if (i == env->me_maxreaders) { + UNLOCK_MUTEX(rmutex); + return MDB_READERS_FULL; + } + r = &ti->mti_readers[i]; + /* Claim the reader slot, carefully since other code + * uses the reader table un-mutexed: First reset the + * slot, next publish it in mti_numreaders. After + * that, it is safe for mdb_env_close() to touch it. + * When it will be closed, we can finally claim it. + */ + r->mr_pid = 0; + r->mr_txnid = (txnid_t)-1; + r->mr_tid = tid; + if (i == nr) + ti->mti_numreaders = ++nr; + env->me_close_readers = nr; + r->mr_pid = pid; + UNLOCK_MUTEX(rmutex); + + new_notls = (env->me_flags & MDB_NOTLS); + if (!new_notls && (rc=pthread_setspecific(env->me_txkey, r))) { + r->mr_pid = 0; + return rc; + } + } + do /* LY: Retry on a race, ITS#7970. */ + r->mr_txnid = ti->mti_txnid; + while(r->mr_txnid != ti->mti_txnid); + txn->mt_txnid = r->mr_txnid; + txn->mt_u.reader = r; + meta = env->me_metas[txn->mt_txnid & 1]; + } + + } else { + /* Not yet touching txn == env->me_txn0, it may be active */ + if (ti) { + if (LOCK_MUTEX(rc, env, env->me_wmutex)) + return rc; + txn->mt_txnid = ti->mti_txnid; + meta = env->me_metas[txn->mt_txnid & 1]; + } else { + meta = mdb_env_pick_meta(env); + txn->mt_txnid = meta->mm_txnid; + } + txn->mt_txnid++; +#if MDB_DEBUG + if (txn->mt_txnid == mdb_debug_start) + mdb_debug = 1; +#endif + txn->mt_child = NULL; + txn->mt_loose_pgs = NULL; + txn->mt_loose_count = 0; + txn->mt_dirty_room = MDB_IDL_UM_MAX; + txn->mt_u.dirty_list = env->me_dirty_list; + txn->mt_u.dirty_list[0].mid = 0; + txn->mt_free_pgs = env->me_free_pgs; + txn->mt_free_pgs[0] = 0; + txn->mt_spill_pgs = NULL; + env->me_txn = txn; + memcpy(txn->mt_dbiseqs, env->me_dbiseqs, env->me_maxdbs * sizeof(unsigned int)); + } + + /* Copy the DB info and flags */ + memcpy(txn->mt_dbs, meta->mm_dbs, CORE_DBS * sizeof(MDB_db)); + + /* Moved to here to avoid a data race in read TXNs */ + txn->mt_next_pgno = meta->mm_last_pg+1; + + txn->mt_flags = flags; + + /* Setup db info */ + txn->mt_numdbs = env->me_numdbs; + for (i=CORE_DBS; imt_numdbs; i++) { + x = env->me_dbflags[i]; + txn->mt_dbs[i].md_flags = x & PERSISTENT_FLAGS; + txn->mt_dbflags[i] = (x & MDB_VALID) ? DB_VALID|DB_USRVALID|DB_STALE : 0; + } + txn->mt_dbflags[MAIN_DBI] = DB_VALID|DB_USRVALID; + txn->mt_dbflags[FREE_DBI] = DB_VALID; + + if (env->me_flags & MDB_FATAL_ERROR) { + DPUTS("environment had fatal error, must shutdown!"); + rc = MDB_PANIC; + } else if (env->me_maxpg < txn->mt_next_pgno) { + rc = MDB_MAP_RESIZED; + } else { + return MDB_SUCCESS; + } + mdb_txn_end(txn, new_notls /*0 or MDB_END_SLOT*/ | MDB_END_FAIL_BEGIN); + return rc; +} + +int +mdb_txn_renew(MDB_txn *txn) +{ + int rc; + + if (!txn || !F_ISSET(txn->mt_flags, MDB_TXN_RDONLY|MDB_TXN_FINISHED)) + return EINVAL; + + rc = mdb_txn_renew0(txn); + if (rc == MDB_SUCCESS) { + DPRINTF(("renew txn %"Z"u%c %p on mdbenv %p, root page %"Z"u", + txn->mt_txnid, (txn->mt_flags & MDB_TXN_RDONLY) ? 'r' : 'w', + (void *)txn, (void *)txn->mt_env, txn->mt_dbs[MAIN_DBI].md_root)); + } + return rc; +} + +int +mdb_txn_begin(MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **ret) +{ + MDB_txn *txn; + MDB_ntxn *ntxn; + int rc, size, tsize; + + flags &= MDB_TXN_BEGIN_FLAGS; + flags |= env->me_flags & MDB_WRITEMAP; + + if (env->me_flags & MDB_RDONLY & ~flags) /* write txn in RDONLY env */ + return EACCES; + + if (parent) { + /* Nested transactions: Max 1 child, write txns only, no writemap */ + flags |= parent->mt_flags; + if (flags & (MDB_RDONLY|MDB_WRITEMAP|MDB_TXN_BLOCKED)) { + return (parent->mt_flags & MDB_TXN_RDONLY) ? EINVAL : MDB_BAD_TXN; + } + /* Child txns save MDB_pgstate and use own copy of cursors */ + size = env->me_maxdbs * (sizeof(MDB_db)+sizeof(MDB_cursor *)+1); + size += tsize = sizeof(MDB_ntxn); + } else if (flags & MDB_RDONLY) { + size = env->me_maxdbs * (sizeof(MDB_db)+1); + size += tsize = sizeof(MDB_txn); + } else { + /* Reuse preallocated write txn. However, do not touch it until + * mdb_txn_renew0() succeeds, since it currently may be active. + */ + txn = env->me_txn0; + goto renew; + } + if ((txn = calloc(1, size)) == NULL) { + DPRINTF(("calloc: %s", strerror(errno))); + return ENOMEM; + } + txn->mt_dbxs = env->me_dbxs; /* static */ + txn->mt_dbs = (MDB_db *) ((char *)txn + tsize); + txn->mt_dbflags = (unsigned char *)txn + size - env->me_maxdbs; + txn->mt_flags = flags; + txn->mt_env = env; + + if (parent) { + unsigned int i; + txn->mt_cursors = (MDB_cursor **)(txn->mt_dbs + env->me_maxdbs); + txn->mt_dbiseqs = parent->mt_dbiseqs; + txn->mt_u.dirty_list = malloc(sizeof(MDB_ID2)*MDB_IDL_UM_SIZE); + if (!txn->mt_u.dirty_list || + !(txn->mt_free_pgs = mdb_midl_alloc(MDB_IDL_UM_MAX))) + { + free(txn->mt_u.dirty_list); + free(txn); + return ENOMEM; + } + txn->mt_txnid = parent->mt_txnid; + txn->mt_dirty_room = parent->mt_dirty_room; + txn->mt_u.dirty_list[0].mid = 0; + txn->mt_spill_pgs = NULL; + txn->mt_next_pgno = parent->mt_next_pgno; + parent->mt_flags |= MDB_TXN_HAS_CHILD; + parent->mt_child = txn; + txn->mt_parent = parent; + txn->mt_numdbs = parent->mt_numdbs; + memcpy(txn->mt_dbs, parent->mt_dbs, txn->mt_numdbs * sizeof(MDB_db)); + /* Copy parent's mt_dbflags, but clear DB_NEW */ + for (i=0; imt_numdbs; i++) + txn->mt_dbflags[i] = parent->mt_dbflags[i] & ~DB_NEW; + rc = 0; + ntxn = (MDB_ntxn *)txn; + ntxn->mnt_pgstate = env->me_pgstate; /* save parent me_pghead & co */ + if (env->me_pghead) { + size = MDB_IDL_SIZEOF(env->me_pghead); + env->me_pghead = mdb_midl_alloc(env->me_pghead[0]); + if (env->me_pghead) + memcpy(env->me_pghead, ntxn->mnt_pgstate.mf_pghead, size); + else + rc = ENOMEM; + } + if (!rc) + rc = mdb_cursor_shadow(parent, txn); + if (rc) + mdb_txn_end(txn, MDB_END_FAIL_BEGINCHILD); + } else { /* MDB_RDONLY */ + txn->mt_dbiseqs = env->me_dbiseqs; +renew: + rc = mdb_txn_renew0(txn); + } + if (rc) { + if (txn != env->me_txn0) + free(txn); + } else { + txn->mt_flags |= flags; /* could not change txn=me_txn0 earlier */ + *ret = txn; + DPRINTF(("begin txn %"Z"u%c %p on mdbenv %p, root page %"Z"u", + txn->mt_txnid, (flags & MDB_RDONLY) ? 'r' : 'w', + (void *) txn, (void *) env, txn->mt_dbs[MAIN_DBI].md_root)); + } + + return rc; +} + +MDB_env * +mdb_txn_env(MDB_txn *txn) +{ + if(!txn) return NULL; + return txn->mt_env; +} + +size_t +mdb_txn_id(MDB_txn *txn) +{ + if(!txn) return 0; + return txn->mt_txnid; +} + +/** Export or close DBI handles opened in this txn. */ +static void +mdb_dbis_update(MDB_txn *txn, int keep) +{ + int i; + MDB_dbi n = txn->mt_numdbs; + MDB_env *env = txn->mt_env; + unsigned char *tdbflags = txn->mt_dbflags; + + for (i = n; --i >= CORE_DBS;) { + if (tdbflags[i] & DB_NEW) { + if (keep) { + env->me_dbflags[i] = txn->mt_dbs[i].md_flags | MDB_VALID; + } else { + char *ptr = env->me_dbxs[i].md_name.mv_data; + if (ptr) { + env->me_dbxs[i].md_name.mv_data = NULL; + env->me_dbxs[i].md_name.mv_size = 0; + env->me_dbflags[i] = 0; + env->me_dbiseqs[i]++; + free(ptr); + } + } + } + } + if (keep && env->me_numdbs < n) + env->me_numdbs = n; +} + +/** End a transaction, except successful commit of a nested transaction. + * May be called twice for readonly txns: First reset it, then abort. + * @param[in] txn the transaction handle to end + * @param[in] mode why and how to end the transaction + */ +static void +mdb_txn_end(MDB_txn *txn, unsigned mode) +{ + MDB_env *env = txn->mt_env; +#if MDB_DEBUG + static const char *const names[] = MDB_END_NAMES; +#endif + + /* Export or close DBI handles opened in this txn */ + mdb_dbis_update(txn, mode & MDB_END_UPDATE); + + DPRINTF(("%s txn %"Z"u%c %p on mdbenv %p, root page %"Z"u", + names[mode & MDB_END_OPMASK], + txn->mt_txnid, (txn->mt_flags & MDB_TXN_RDONLY) ? 'r' : 'w', + (void *) txn, (void *)env, txn->mt_dbs[MAIN_DBI].md_root)); + + if (F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) { + if (txn->mt_u.reader) { + txn->mt_u.reader->mr_txnid = (txnid_t)-1; + if (!(env->me_flags & MDB_NOTLS)) { + txn->mt_u.reader = NULL; /* txn does not own reader */ + } else if (mode & MDB_END_SLOT) { + txn->mt_u.reader->mr_pid = 0; + txn->mt_u.reader = NULL; + } /* else txn owns the slot until it does MDB_END_SLOT */ + } + txn->mt_numdbs = 0; /* prevent further DBI activity */ + txn->mt_flags |= MDB_TXN_FINISHED; + + } else if (!F_ISSET(txn->mt_flags, MDB_TXN_FINISHED)) { + pgno_t *pghead = env->me_pghead; + + if (!(mode & MDB_END_UPDATE)) /* !(already closed cursors) */ + mdb_cursors_close(txn, 0); + if (!(env->me_flags & MDB_WRITEMAP)) { + mdb_dlist_free(txn); + } + + txn->mt_numdbs = 0; + txn->mt_flags = MDB_TXN_FINISHED; + + if (!txn->mt_parent) { + mdb_midl_shrink(&txn->mt_free_pgs); + env->me_free_pgs = txn->mt_free_pgs; + /* me_pgstate: */ + env->me_pghead = NULL; + env->me_pglast = 0; + + env->me_txn = NULL; + mode = 0; /* txn == env->me_txn0, do not free() it */ + + /* The writer mutex was locked in mdb_txn_begin. */ + if (env->me_txns) + UNLOCK_MUTEX(env->me_wmutex); + } else { + txn->mt_parent->mt_child = NULL; + txn->mt_parent->mt_flags &= ~MDB_TXN_HAS_CHILD; + env->me_pgstate = ((MDB_ntxn *)txn)->mnt_pgstate; + mdb_midl_free(txn->mt_free_pgs); + free(txn->mt_u.dirty_list); + } + mdb_midl_free(txn->mt_spill_pgs); + + mdb_midl_free(pghead); + } + + if (mode & MDB_END_FREE) + free(txn); +} + +void +mdb_txn_reset(MDB_txn *txn) +{ + if (txn == NULL) + return; + + /* This call is only valid for read-only txns */ + if (!(txn->mt_flags & MDB_TXN_RDONLY)) + return; + + mdb_txn_end(txn, MDB_END_RESET); +} + +void +mdb_txn_abort(MDB_txn *txn) +{ + if (txn == NULL) + return; + + if (txn->mt_child) + mdb_txn_abort(txn->mt_child); + + mdb_txn_end(txn, MDB_END_ABORT|MDB_END_SLOT|MDB_END_FREE); +} + +/** Save the freelist as of this transaction to the freeDB. + * This changes the freelist. Keep trying until it stabilizes. + */ +static int +mdb_freelist_save(MDB_txn *txn) +{ + /* env->me_pghead[] can grow and shrink during this call. + * env->me_pglast and txn->mt_free_pgs[] can only grow. + * Page numbers cannot disappear from txn->mt_free_pgs[]. + */ + MDB_cursor mc; + MDB_env *env = txn->mt_env; + int rc, maxfree_1pg = env->me_maxfree_1pg, more = 1; + txnid_t pglast = 0, head_id = 0; + pgno_t freecnt = 0, *free_pgs, *mop; + ssize_t head_room = 0, total_room = 0, mop_len, clean_limit; + + mdb_cursor_init(&mc, txn, FREE_DBI, NULL); + + if (env->me_pghead) { + /* Make sure first page of freeDB is touched and on freelist */ + rc = mdb_page_search(&mc, NULL, MDB_PS_FIRST|MDB_PS_MODIFY); + if (rc && rc != MDB_NOTFOUND) + return rc; + } + + if (!env->me_pghead && txn->mt_loose_pgs) { + /* Put loose page numbers in mt_free_pgs, since + * we may be unable to return them to me_pghead. + */ + MDB_page *mp = txn->mt_loose_pgs; + MDB_ID2 *dl = txn->mt_u.dirty_list; + unsigned x; + if ((rc = mdb_midl_need(&txn->mt_free_pgs, txn->mt_loose_count)) != 0) + return rc; + for (; mp; mp = NEXT_LOOSE_PAGE(mp)) { + mdb_midl_xappend(txn->mt_free_pgs, mp->mp_pgno); + /* must also remove from dirty list */ + if (txn->mt_flags & MDB_TXN_WRITEMAP) { + for (x=1; x<=dl[0].mid; x++) + if (dl[x].mid == mp->mp_pgno) + break; + mdb_tassert(txn, x <= dl[0].mid); + } else { + x = mdb_mid2l_search(dl, mp->mp_pgno); + mdb_tassert(txn, dl[x].mid == mp->mp_pgno); + mdb_dpage_free(env, mp); + } + dl[x].mptr = NULL; + } + { + /* squash freed slots out of the dirty list */ + unsigned y; + for (y=1; dl[y].mptr && y <= dl[0].mid; y++); + if (y <= dl[0].mid) { + for(x=y, y++;;) { + while (!dl[y].mptr && y <= dl[0].mid) y++; + if (y > dl[0].mid) break; + dl[x++] = dl[y++]; + } + dl[0].mid = x-1; + } else { + /* all slots freed */ + dl[0].mid = 0; + } + } + txn->mt_loose_pgs = NULL; + txn->mt_loose_count = 0; + } + + /* MDB_RESERVE cancels meminit in ovpage malloc (when no WRITEMAP) */ + clean_limit = (env->me_flags & (MDB_NOMEMINIT|MDB_WRITEMAP)) + ? SSIZE_MAX : maxfree_1pg; + + for (;;) { + /* Come back here after each Put() in case freelist changed */ + MDB_val key, data; + pgno_t *pgs; + ssize_t j; + + /* If using records from freeDB which we have not yet + * deleted, delete them and any we reserved for me_pghead. + */ + while (pglast < env->me_pglast) { + rc = mdb_cursor_first(&mc, &key, NULL); + if (rc) + return rc; + pglast = head_id = *(txnid_t *)key.mv_data; + total_room = head_room = 0; + mdb_tassert(txn, pglast <= env->me_pglast); + rc = mdb_cursor_del(&mc, 0); + if (rc) + return rc; + } + + /* Save the IDL of pages freed by this txn, to a single record */ + if (freecnt < txn->mt_free_pgs[0]) { + if (!freecnt) { + /* Make sure last page of freeDB is touched and on freelist */ + rc = mdb_page_search(&mc, NULL, MDB_PS_LAST|MDB_PS_MODIFY); + if (rc && rc != MDB_NOTFOUND) + return rc; + } + free_pgs = txn->mt_free_pgs; + /* Write to last page of freeDB */ + key.mv_size = sizeof(txn->mt_txnid); + key.mv_data = &txn->mt_txnid; + do { + freecnt = free_pgs[0]; + data.mv_size = MDB_IDL_SIZEOF(free_pgs); + rc = mdb_cursor_put(&mc, &key, &data, MDB_RESERVE); + if (rc) + return rc; + /* Retry if mt_free_pgs[] grew during the Put() */ + free_pgs = txn->mt_free_pgs; + } while (freecnt < free_pgs[0]); + mdb_midl_sort(free_pgs); + memcpy(data.mv_data, free_pgs, data.mv_size); +#if (MDB_DEBUG) > 1 + { + unsigned int i = free_pgs[0]; + DPRINTF(("IDL write txn %"Z"u root %"Z"u num %u", + txn->mt_txnid, txn->mt_dbs[FREE_DBI].md_root, i)); + for (; i; i--) + DPRINTF(("IDL %"Z"u", free_pgs[i])); + } +#endif + continue; + } + + mop = env->me_pghead; + mop_len = (mop ? mop[0] : 0) + txn->mt_loose_count; + + /* Reserve records for me_pghead[]. Split it if multi-page, + * to avoid searching freeDB for a page range. Use keys in + * range [1,me_pglast]: Smaller than txnid of oldest reader. + */ + if (total_room >= mop_len) { + if (total_room == mop_len || --more < 0) + break; + } else if (head_room >= maxfree_1pg && head_id > 1) { + /* Keep current record (overflow page), add a new one */ + head_id--; + head_room = 0; + } + /* (Re)write {key = head_id, IDL length = head_room} */ + total_room -= head_room; + head_room = mop_len - total_room; + if (head_room > maxfree_1pg && head_id > 1) { + /* Overflow multi-page for part of me_pghead */ + head_room /= head_id; /* amortize page sizes */ + head_room += maxfree_1pg - head_room % (maxfree_1pg + 1); + } else if (head_room < 0) { + /* Rare case, not bothering to delete this record */ + head_room = 0; + } + key.mv_size = sizeof(head_id); + key.mv_data = &head_id; + data.mv_size = (head_room + 1) * sizeof(pgno_t); + rc = mdb_cursor_put(&mc, &key, &data, MDB_RESERVE); + if (rc) + return rc; + /* IDL is initially empty, zero out at least the length */ + pgs = (pgno_t *)data.mv_data; + j = head_room > clean_limit ? head_room : 0; + do { + pgs[j] = 0; + } while (--j >= 0); + total_room += head_room; + } + + /* Return loose page numbers to me_pghead, though usually none are + * left at this point. The pages themselves remain in dirty_list. + */ + if (txn->mt_loose_pgs) { + MDB_page *mp = txn->mt_loose_pgs; + unsigned count = txn->mt_loose_count; + MDB_IDL loose; + /* Room for loose pages + temp IDL with same */ + if ((rc = mdb_midl_need(&env->me_pghead, 2*count+1)) != 0) + return rc; + mop = env->me_pghead; + loose = mop + MDB_IDL_ALLOCLEN(mop) - count; + for (count = 0; mp; mp = NEXT_LOOSE_PAGE(mp)) + loose[ ++count ] = mp->mp_pgno; + loose[0] = count; + mdb_midl_sort(loose); + mdb_midl_xmerge(mop, loose); + txn->mt_loose_pgs = NULL; + txn->mt_loose_count = 0; + mop_len = mop[0]; + } + + /* Fill in the reserved me_pghead records */ + rc = MDB_SUCCESS; + if (mop_len) { + MDB_val key, data; + + mop += mop_len; + rc = mdb_cursor_first(&mc, &key, &data); + for (; !rc; rc = mdb_cursor_next(&mc, &key, &data, MDB_NEXT)) { + txnid_t id = *(txnid_t *)key.mv_data; + ssize_t len = (ssize_t)(data.mv_size / sizeof(MDB_ID)) - 1; + MDB_ID save; + + mdb_tassert(txn, len >= 0 && id <= env->me_pglast); + key.mv_data = &id; + if (len > mop_len) { + len = mop_len; + data.mv_size = (len + 1) * sizeof(MDB_ID); + } + data.mv_data = mop -= len; + save = mop[0]; + mop[0] = len; + rc = mdb_cursor_put(&mc, &key, &data, MDB_CURRENT); + mop[0] = save; + if (rc || !(mop_len -= len)) + break; + } + } + return rc; +} + +/** Flush (some) dirty pages to the map, after clearing their dirty flag. + * @param[in] txn the transaction that's being committed + * @param[in] keep number of initial pages in dirty_list to keep dirty. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_page_flush(MDB_txn *txn, int keep) +{ + MDB_env *env = txn->mt_env; + MDB_ID2L dl = txn->mt_u.dirty_list; + unsigned psize = env->me_psize, j; + int i, pagecount = dl[0].mid, rc; + size_t size = 0, pos = 0; + pgno_t pgno = 0; + MDB_page *dp = NULL; +#ifdef _WIN32 + OVERLAPPED ov; +#else + struct iovec iov[MDB_COMMIT_PAGES]; + ssize_t wpos = 0, wsize = 0, wres; + size_t next_pos = 1; /* impossible pos, so pos != next_pos */ + int n = 0; +#endif + + j = i = keep; + + if (env->me_flags & MDB_WRITEMAP) { + /* Clear dirty flags */ + while (++i <= pagecount) { + dp = dl[i].mptr; + /* Don't flush this page yet */ + if (dp->mp_flags & (P_LOOSE|P_KEEP)) { + dp->mp_flags &= ~P_KEEP; + dl[++j] = dl[i]; + continue; + } + dp->mp_flags &= ~P_DIRTY; + } + goto done; + } + + /* Write the pages */ + for (;;) { + if (++i <= pagecount) { + dp = dl[i].mptr; + /* Don't flush this page yet */ + if (dp->mp_flags & (P_LOOSE|P_KEEP)) { + dp->mp_flags &= ~P_KEEP; + dl[i].mid = 0; + continue; + } + pgno = dl[i].mid; + /* clear dirty flag */ + dp->mp_flags &= ~P_DIRTY; + pos = pgno * psize; + size = psize; + if (IS_OVERFLOW(dp)) size *= dp->mp_pages; + } +#ifdef _WIN32 + else break; + + /* Windows actually supports scatter/gather I/O, but only on + * unbuffered file handles. Since we're relying on the OS page + * cache for all our data, that's self-defeating. So we just + * write pages one at a time. We use the ov structure to set + * the write offset, to at least save the overhead of a Seek + * system call. + */ + DPRINTF(("committing page %"Z"u", pgno)); + memset(&ov, 0, sizeof(ov)); + ov.Offset = pos & 0xffffffff; + ov.OffsetHigh = pos >> 16 >> 16; + if (!WriteFile(env->me_fd, dp, size, NULL, &ov)) { + rc = ErrCode(); + DPRINTF(("WriteFile: %d", rc)); + return rc; + } +#else + /* Write up to MDB_COMMIT_PAGES dirty pages at a time. */ + if (pos!=next_pos || n==MDB_COMMIT_PAGES || wsize+size>MAX_WRITE) { + if (n) { +retry_write: + /* Write previous page(s) */ +#ifdef MDB_USE_PWRITEV + wres = pwritev(env->me_fd, iov, n, wpos); +#else + if (n == 1) { + wres = pwrite(env->me_fd, iov[0].iov_base, wsize, wpos); + } else { +retry_seek: + if (lseek(env->me_fd, wpos, SEEK_SET) == -1) { + rc = ErrCode(); + if (rc == EINTR) + goto retry_seek; + DPRINTF(("lseek: %s", strerror(rc))); + return rc; + } + wres = writev(env->me_fd, iov, n); + } +#endif + if (wres != wsize) { + if (wres < 0) { + rc = ErrCode(); + if (rc == EINTR) + goto retry_write; + DPRINTF(("Write error: %s", strerror(rc))); + } else { + rc = EIO; /* TODO: Use which error code? */ + DPUTS("short write, filesystem full?"); + } + return rc; + } + n = 0; + } + if (i > pagecount) + break; + wpos = pos; + wsize = 0; + } + DPRINTF(("committing page %"Z"u", pgno)); + next_pos = pos + size; + iov[n].iov_len = size; + iov[n].iov_base = (char *)dp; + wsize += size; + n++; +#endif /* _WIN32 */ + } + + /* MIPS has cache coherency issues, this is a no-op everywhere else + * Note: for any size >= on-chip cache size, entire on-chip cache is + * flushed. + */ + CACHEFLUSH(env->me_map, txn->mt_next_pgno * env->me_psize, DCACHE); + + for (i = keep; ++i <= pagecount; ) { + dp = dl[i].mptr; + /* This is a page we skipped above */ + if (!dl[i].mid) { + dl[++j] = dl[i]; + dl[j].mid = dp->mp_pgno; + continue; + } + mdb_dpage_free(env, dp); + } + +done: + i--; + txn->mt_dirty_room += i - j; + dl[0].mid = j; + return MDB_SUCCESS; +} + +int +mdb_txn_commit(MDB_txn *txn) +{ + int rc; + unsigned int i, end_mode; + MDB_env *env; + + if (txn == NULL) + return EINVAL; + + /* mdb_txn_end() mode for a commit which writes nothing */ + end_mode = MDB_END_EMPTY_COMMIT|MDB_END_UPDATE|MDB_END_SLOT|MDB_END_FREE; + + if (txn->mt_child) { + rc = mdb_txn_commit(txn->mt_child); + if (rc) + goto fail; + } + + env = txn->mt_env; + + if (F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) { + goto done; + } + + if (txn->mt_flags & (MDB_TXN_FINISHED|MDB_TXN_ERROR)) { + DPUTS("txn has failed/finished, can't commit"); + if (txn->mt_parent) + txn->mt_parent->mt_flags |= MDB_TXN_ERROR; + rc = MDB_BAD_TXN; + goto fail; + } + + if (txn->mt_parent) { + MDB_txn *parent = txn->mt_parent; + MDB_page **lp; + MDB_ID2L dst, src; + MDB_IDL pspill; + unsigned x, y, len, ps_len; + + /* Append our free list to parent's */ + rc = mdb_midl_append_list(&parent->mt_free_pgs, txn->mt_free_pgs); + if (rc) + goto fail; + mdb_midl_free(txn->mt_free_pgs); + /* Failures after this must either undo the changes + * to the parent or set MDB_TXN_ERROR in the parent. + */ + + parent->mt_next_pgno = txn->mt_next_pgno; + parent->mt_flags = txn->mt_flags; + + /* Merge our cursors into parent's and close them */ + mdb_cursors_close(txn, 1); + + /* Update parent's DB table. */ + memcpy(parent->mt_dbs, txn->mt_dbs, txn->mt_numdbs * sizeof(MDB_db)); + parent->mt_numdbs = txn->mt_numdbs; + parent->mt_dbflags[FREE_DBI] = txn->mt_dbflags[FREE_DBI]; + parent->mt_dbflags[MAIN_DBI] = txn->mt_dbflags[MAIN_DBI]; + for (i=CORE_DBS; imt_numdbs; i++) { + /* preserve parent's DB_NEW status */ + x = parent->mt_dbflags[i] & DB_NEW; + parent->mt_dbflags[i] = txn->mt_dbflags[i] | x; + } + + dst = parent->mt_u.dirty_list; + src = txn->mt_u.dirty_list; + /* Remove anything in our dirty list from parent's spill list */ + if ((pspill = parent->mt_spill_pgs) && (ps_len = pspill[0])) { + x = y = ps_len; + pspill[0] = (pgno_t)-1; + /* Mark our dirty pages as deleted in parent spill list */ + for (i=0, len=src[0].mid; ++i <= len; ) { + MDB_ID pn = src[i].mid << 1; + while (pn > pspill[x]) + x--; + if (pn == pspill[x]) { + pspill[x] = 1; + y = --x; + } + } + /* Squash deleted pagenums if we deleted any */ + for (x=y; ++x <= ps_len; ) + if (!(pspill[x] & 1)) + pspill[++y] = pspill[x]; + pspill[0] = y; + } + + /* Remove anything in our spill list from parent's dirty list */ + if (txn->mt_spill_pgs && txn->mt_spill_pgs[0]) { + for (i=1; i<=txn->mt_spill_pgs[0]; i++) { + MDB_ID pn = txn->mt_spill_pgs[i]; + if (pn & 1) + continue; /* deleted spillpg */ + pn >>= 1; + y = mdb_mid2l_search(dst, pn); + if (y <= dst[0].mid && dst[y].mid == pn) { + free(dst[y].mptr); + while (y < dst[0].mid) { + dst[y] = dst[y+1]; + y++; + } + dst[0].mid--; + } + } + } + + /* Find len = length of merging our dirty list with parent's */ + x = dst[0].mid; + dst[0].mid = 0; /* simplify loops */ + if (parent->mt_parent) { + len = x + src[0].mid; + y = mdb_mid2l_search(src, dst[x].mid + 1) - 1; + for (i = x; y && i; y--) { + pgno_t yp = src[y].mid; + while (yp < dst[i].mid) + i--; + if (yp == dst[i].mid) { + i--; + len--; + } + } + } else { /* Simplify the above for single-ancestor case */ + len = MDB_IDL_UM_MAX - txn->mt_dirty_room; + } + /* Merge our dirty list with parent's */ + y = src[0].mid; + for (i = len; y; dst[i--] = src[y--]) { + pgno_t yp = src[y].mid; + while (yp < dst[x].mid) + dst[i--] = dst[x--]; + if (yp == dst[x].mid) + free(dst[x--].mptr); + } + mdb_tassert(txn, i == x); + dst[0].mid = len; + free(txn->mt_u.dirty_list); + parent->mt_dirty_room = txn->mt_dirty_room; + if (txn->mt_spill_pgs) { + if (parent->mt_spill_pgs) { + /* TODO: Prevent failure here, so parent does not fail */ + rc = mdb_midl_append_list(&parent->mt_spill_pgs, txn->mt_spill_pgs); + if (rc) + parent->mt_flags |= MDB_TXN_ERROR; + mdb_midl_free(txn->mt_spill_pgs); + mdb_midl_sort(parent->mt_spill_pgs); + } else { + parent->mt_spill_pgs = txn->mt_spill_pgs; + } + } + + /* Append our loose page list to parent's */ + for (lp = &parent->mt_loose_pgs; *lp; lp = &NEXT_LOOSE_PAGE(*lp)) + ; + *lp = txn->mt_loose_pgs; + parent->mt_loose_count += txn->mt_loose_count; + + parent->mt_child = NULL; + mdb_midl_free(((MDB_ntxn *)txn)->mnt_pgstate.mf_pghead); + free(txn); + return rc; + } + + if (txn != env->me_txn) { + DPUTS("attempt to commit unknown transaction"); + rc = EINVAL; + goto fail; + } + + mdb_cursors_close(txn, 0); + + if (!txn->mt_u.dirty_list[0].mid && + !(txn->mt_flags & (MDB_TXN_DIRTY|MDB_TXN_SPILLS))) + goto done; + + DPRINTF(("committing txn %"Z"u %p on mdbenv %p, root page %"Z"u", + txn->mt_txnid, (void*)txn, (void*)env, txn->mt_dbs[MAIN_DBI].md_root)); + + /* Update DB root pointers */ + if (txn->mt_numdbs > CORE_DBS) { + MDB_cursor mc; + MDB_dbi i; + MDB_val data; + data.mv_size = sizeof(MDB_db); + + mdb_cursor_init(&mc, txn, MAIN_DBI, NULL); + for (i = CORE_DBS; i < txn->mt_numdbs; i++) { + if (txn->mt_dbflags[i] & DB_DIRTY) { + if (TXN_DBI_CHANGED(txn, i)) { + rc = MDB_BAD_DBI; + goto fail; + } + data.mv_data = &txn->mt_dbs[i]; + rc = mdb_cursor_put(&mc, &txn->mt_dbxs[i].md_name, &data, + F_SUBDATA); + if (rc) + goto fail; + } + } + } + + rc = mdb_freelist_save(txn); + if (rc) + goto fail; + + mdb_midl_free(env->me_pghead); + env->me_pghead = NULL; + mdb_midl_shrink(&txn->mt_free_pgs); + +#if (MDB_DEBUG) > 2 + mdb_audit(txn); +#endif + + if ((rc = mdb_page_flush(txn, 0)) || + (rc = mdb_env_sync(env, 0)) || + (rc = mdb_env_write_meta(txn))) + goto fail; + end_mode = MDB_END_COMMITTED|MDB_END_UPDATE; + +done: + mdb_txn_end(txn, end_mode); + return MDB_SUCCESS; + +fail: + mdb_txn_abort(txn); + return rc; +} + +/** Read the environment parameters of a DB environment before + * mapping it into memory. + * @param[in] env the environment handle + * @param[out] meta address of where to store the meta information + * @return 0 on success, non-zero on failure. + */ +static int ESECT +mdb_env_read_header(MDB_env *env, MDB_meta *meta) +{ + MDB_metabuf pbuf; + MDB_page *p; + MDB_meta *m; + int i, rc, off; + enum { Size = sizeof(pbuf) }; + + /* We don't know the page size yet, so use a minimum value. + * Read both meta pages so we can use the latest one. + */ + + for (i=off=0; imm_psize) { +#ifdef _WIN32 + DWORD len; + OVERLAPPED ov; + memset(&ov, 0, sizeof(ov)); + ov.Offset = off; + rc = ReadFile(env->me_fd, &pbuf, Size, &len, &ov) ? (int)len : -1; + if (rc == -1 && ErrCode() == ERROR_HANDLE_EOF) + rc = 0; +#else + rc = pread(env->me_fd, &pbuf, Size, off); +#endif + if (rc != Size) { + if (rc == 0 && off == 0) + return ENOENT; + rc = rc < 0 ? (int) ErrCode() : MDB_INVALID; + DPRINTF(("read: %s", mdb_strerror(rc))); + return rc; + } + + p = (MDB_page *)&pbuf; + + if (!F_ISSET(p->mp_flags, P_META)) { + DPRINTF(("page %"Z"u not a meta page", p->mp_pgno)); + return MDB_INVALID; + } + + m = METADATA(p); + if (m->mm_magic != MDB_MAGIC) { + DPUTS("meta has invalid magic"); + return MDB_INVALID; + } + + if (m->mm_version != MDB_DATA_VERSION) { + DPRINTF(("database is version %u, expected version %u", + m->mm_version, MDB_DATA_VERSION)); + return MDB_VERSION_MISMATCH; + } + + if (off == 0 || m->mm_txnid > meta->mm_txnid) + *meta = *m; + } + return 0; +} + +/** Fill in most of the zeroed #MDB_meta for an empty database environment */ +static void ESECT +mdb_env_init_meta0(MDB_env *env, MDB_meta *meta) +{ + meta->mm_magic = MDB_MAGIC; + meta->mm_version = MDB_DATA_VERSION; + meta->mm_mapsize = env->me_mapsize; + meta->mm_psize = env->me_psize; + meta->mm_last_pg = NUM_METAS-1; + meta->mm_flags = env->me_flags & 0xffff; + meta->mm_flags |= MDB_INTEGERKEY; /* this is mm_dbs[FREE_DBI].md_flags */ + meta->mm_dbs[FREE_DBI].md_root = P_INVALID; + meta->mm_dbs[MAIN_DBI].md_root = P_INVALID; +} + +/** Write the environment parameters of a freshly created DB environment. + * @param[in] env the environment handle + * @param[in] meta the #MDB_meta to write + * @return 0 on success, non-zero on failure. + */ +static int ESECT +mdb_env_init_meta(MDB_env *env, MDB_meta *meta) +{ + MDB_page *p, *q; + int rc; + unsigned int psize; +#ifdef _WIN32 + DWORD len; + OVERLAPPED ov; + memset(&ov, 0, sizeof(ov)); +#define DO_PWRITE(rc, fd, ptr, size, len, pos) do { \ + ov.Offset = pos; \ + rc = WriteFile(fd, ptr, size, &len, &ov); } while(0) +#else + int len; +#define DO_PWRITE(rc, fd, ptr, size, len, pos) do { \ + len = pwrite(fd, ptr, size, pos); \ + if (len == -1 && ErrCode() == EINTR) continue; \ + rc = (len >= 0); break; } while(1) +#endif + + DPUTS("writing new meta page"); + + psize = env->me_psize; + + p = calloc(NUM_METAS, psize); + if (!p) + return ENOMEM; + + p->mp_pgno = 0; + p->mp_flags = P_META; + *(MDB_meta *)METADATA(p) = *meta; + + q = (MDB_page *)((char *)p + psize); + q->mp_pgno = 1; + q->mp_flags = P_META; + *(MDB_meta *)METADATA(q) = *meta; + + DO_PWRITE(rc, env->me_fd, p, psize * NUM_METAS, len, 0); + if (!rc) + rc = ErrCode(); + else if ((unsigned) len == psize * NUM_METAS) + rc = MDB_SUCCESS; + else + rc = ENOSPC; + free(p); + return rc; +} + +/** Update the environment info to commit a transaction. + * @param[in] txn the transaction that's being committed + * @return 0 on success, non-zero on failure. + */ +static int +mdb_env_write_meta(MDB_txn *txn) +{ + MDB_env *env; + MDB_meta meta, metab, *mp; + unsigned flags; + size_t mapsize; + off_t off; + int rc, len, toggle; + char *ptr; + HANDLE mfd; +#ifdef _WIN32 + OVERLAPPED ov; +#else + int r2; +#endif + + toggle = txn->mt_txnid & 1; + DPRINTF(("writing meta page %d for root page %"Z"u", + toggle, txn->mt_dbs[MAIN_DBI].md_root)); + + env = txn->mt_env; + flags = env->me_flags; + mp = env->me_metas[toggle]; + mapsize = env->me_metas[toggle ^ 1]->mm_mapsize; + /* Persist any increases of mapsize config */ + if (mapsize < env->me_mapsize) + mapsize = env->me_mapsize; + + if (flags & MDB_WRITEMAP) { + mp->mm_mapsize = mapsize; + mp->mm_dbs[FREE_DBI] = txn->mt_dbs[FREE_DBI]; + mp->mm_dbs[MAIN_DBI] = txn->mt_dbs[MAIN_DBI]; + mp->mm_last_pg = txn->mt_next_pgno - 1; +#if (__GNUC__ * 100 + __GNUC_MINOR__ >= 404) && /* TODO: portability */ \ + !(defined(__i386__) || defined(__x86_64__)) + /* LY: issue a memory barrier, if not x86. ITS#7969 */ + __sync_synchronize(); +#endif + mp->mm_txnid = txn->mt_txnid; + if (!(flags & (MDB_NOMETASYNC|MDB_NOSYNC))) { + unsigned meta_size = env->me_psize; + rc = (env->me_flags & MDB_MAPASYNC) ? MS_ASYNC : MS_SYNC; + ptr = (char *)mp - PAGEHDRSZ; +#ifndef _WIN32 /* POSIX msync() requires ptr = start of OS page */ + r2 = (ptr - env->me_map) & (env->me_os_psize - 1); + ptr -= r2; + meta_size += r2; +#endif + if (MDB_MSYNC(ptr, meta_size, rc)) { + rc = ErrCode(); + goto fail; + } + } + goto done; + } + metab.mm_txnid = mp->mm_txnid; + metab.mm_last_pg = mp->mm_last_pg; + + meta.mm_mapsize = mapsize; + meta.mm_dbs[FREE_DBI] = txn->mt_dbs[FREE_DBI]; + meta.mm_dbs[MAIN_DBI] = txn->mt_dbs[MAIN_DBI]; + meta.mm_last_pg = txn->mt_next_pgno - 1; + meta.mm_txnid = txn->mt_txnid; + + off = offsetof(MDB_meta, mm_mapsize); + ptr = (char *)&meta + off; + len = sizeof(MDB_meta) - off; + off += (char *)mp - env->me_map; + + /* Write to the SYNC fd unless MDB_NOSYNC/MDB_NOMETASYNC. + * (me_mfd goes to the same file as me_fd, but writing to it + * also syncs to disk. Avoids a separate fdatasync() call.) + */ + mfd = (flags & (MDB_NOSYNC|MDB_NOMETASYNC)) ? env->me_fd : env->me_mfd; +#ifdef _WIN32 + { + memset(&ov, 0, sizeof(ov)); + ov.Offset = off; + if (!WriteFile(mfd, ptr, len, (DWORD *)&rc, &ov)) + rc = -1; + } +#else +retry_write: + rc = pwrite(mfd, ptr, len, off); +#endif + if (rc != len) { + rc = rc < 0 ? ErrCode() : EIO; +#ifndef _WIN32 + if (rc == EINTR) + goto retry_write; +#endif + DPUTS("write failed, disk error?"); + /* On a failure, the pagecache still contains the new data. + * Write some old data back, to prevent it from being used. + * Use the non-SYNC fd; we know it will fail anyway. + */ + meta.mm_last_pg = metab.mm_last_pg; + meta.mm_txnid = metab.mm_txnid; +#ifdef _WIN32 + memset(&ov, 0, sizeof(ov)); + ov.Offset = off; + WriteFile(env->me_fd, ptr, len, NULL, &ov); +#else + r2 = pwrite(env->me_fd, ptr, len, off); + (void)r2; /* Silence warnings. We don't care about pwrite's return value */ +#endif +fail: + env->me_flags |= MDB_FATAL_ERROR; + return rc; + } + /* MIPS has cache coherency issues, this is a no-op everywhere else */ + CACHEFLUSH(env->me_map + off, len, DCACHE); +done: + /* Memory ordering issues are irrelevant; since the entire writer + * is wrapped by wmutex, all of these changes will become visible + * after the wmutex is unlocked. Since the DB is multi-version, + * readers will get consistent data regardless of how fresh or + * how stale their view of these values is. + */ + if (env->me_txns) + env->me_txns->mti_txnid = txn->mt_txnid; + + return MDB_SUCCESS; +} + +/** Check both meta pages to see which one is newer. + * @param[in] env the environment handle + * @return newest #MDB_meta. + */ +static MDB_meta * +mdb_env_pick_meta(const MDB_env *env) +{ + MDB_meta *const *metas = env->me_metas; + return metas[ metas[0]->mm_txnid < metas[1]->mm_txnid ]; +} + +int ESECT +mdb_env_create(MDB_env **env) +{ + MDB_env *e; + + e = calloc(1, sizeof(MDB_env)); + if (!e) + return ENOMEM; + + e->me_maxreaders = DEFAULT_READERS; + e->me_maxdbs = e->me_numdbs = CORE_DBS; + e->me_fd = INVALID_HANDLE_VALUE; + e->me_lfd = INVALID_HANDLE_VALUE; + e->me_mfd = INVALID_HANDLE_VALUE; +#ifdef MDB_USE_POSIX_SEM + e->me_rmutex = SEM_FAILED; + e->me_wmutex = SEM_FAILED; +#endif + e->me_pid = getpid(); + GET_PAGESIZE(e->me_os_psize); + VGMEMP_CREATE(e,0,0); + *env = e; + return MDB_SUCCESS; +} + +static int ESECT +mdb_env_map(MDB_env *env, void *addr) +{ + MDB_page *p; + unsigned int flags = env->me_flags; +#ifdef _WIN32 + int rc; + HANDLE mh; + LONG sizelo, sizehi; + size_t msize; + + if (flags & MDB_RDONLY) { + /* Don't set explicit map size, use whatever exists */ + msize = 0; + sizelo = 0; + sizehi = 0; + } else { + msize = env->me_mapsize; + sizelo = msize & 0xffffffff; + sizehi = msize >> 16 >> 16; /* only needed on Win64 */ + + /* Windows won't create mappings for zero length files. + * and won't map more than the file size. + * Just set the maxsize right now. + */ + if (!(flags & MDB_WRITEMAP) && (SetFilePointer(env->me_fd, sizelo, &sizehi, 0) != (DWORD)sizelo + || !SetEndOfFile(env->me_fd) + || SetFilePointer(env->me_fd, 0, NULL, 0) != 0)) + return ErrCode(); + } + + mh = CreateFileMapping(env->me_fd, NULL, flags & MDB_WRITEMAP ? + PAGE_READWRITE : PAGE_READONLY, + sizehi, sizelo, NULL); + if (!mh) + return ErrCode(); + env->me_map = MapViewOfFileEx(mh, flags & MDB_WRITEMAP ? + FILE_MAP_WRITE : FILE_MAP_READ, + 0, 0, msize, addr); + rc = env->me_map ? 0 : ErrCode(); + CloseHandle(mh); + if (rc) + return rc; +#else + int mmap_flags = MAP_SHARED; + int prot = PROT_READ; +#ifdef MAP_NOSYNC /* Used on FreeBSD */ + if (flags & MDB_NOSYNC) + mmap_flags |= MAP_NOSYNC; +#endif + if (flags & MDB_WRITEMAP) { + prot |= PROT_WRITE; + if (ftruncate(env->me_fd, env->me_mapsize) < 0) + return ErrCode(); + } + env->me_map = mmap(addr, env->me_mapsize, prot, mmap_flags, + env->me_fd, 0); + if (env->me_map == MAP_FAILED) { + env->me_map = NULL; + return ErrCode(); + } + + if (flags & MDB_NORDAHEAD) { + /* Turn off readahead. It's harmful when the DB is larger than RAM. */ +#ifdef MADV_RANDOM + madvise(env->me_map, env->me_mapsize, MADV_RANDOM); +#else +#ifdef POSIX_MADV_RANDOM + posix_madvise(env->me_map, env->me_mapsize, POSIX_MADV_RANDOM); +#endif /* POSIX_MADV_RANDOM */ +#endif /* MADV_RANDOM */ + } +#endif /* _WIN32 */ + + /* Can happen because the address argument to mmap() is just a + * hint. mmap() can pick another, e.g. if the range is in use. + * The MAP_FIXED flag would prevent that, but then mmap could + * instead unmap existing pages to make room for the new map. + */ + if (addr && env->me_map != addr) + return EBUSY; /* TODO: Make a new MDB_* error code? */ + + p = (MDB_page *)env->me_map; + env->me_metas[0] = METADATA(p); + env->me_metas[1] = (MDB_meta *)((char *)env->me_metas[0] + env->me_psize); + + return MDB_SUCCESS; +} + +int ESECT +mdb_env_set_mapsize(MDB_env *env, size_t size) +{ + /* If env is already open, caller is responsible for making + * sure there are no active txns. + */ + if (env->me_map) { + int rc; + MDB_meta *meta; + void *old; + if (env->me_txn) + return EINVAL; + meta = mdb_env_pick_meta(env); + if (!size) + size = meta->mm_mapsize; + { + /* Silently round up to minimum if the size is too small */ + size_t minsize = (meta->mm_last_pg + 1) * env->me_psize; + if (size < minsize) + size = minsize; + } + munmap(env->me_map, env->me_mapsize); + env->me_mapsize = size; + old = (env->me_flags & MDB_FIXEDMAP) ? env->me_map : NULL; + rc = mdb_env_map(env, old); + if (rc) + return rc; + } + env->me_mapsize = size; + if (env->me_psize) + env->me_maxpg = env->me_mapsize / env->me_psize; + return MDB_SUCCESS; +} + +int ESECT +mdb_env_set_maxdbs(MDB_env *env, MDB_dbi dbs) +{ + if (env->me_map) + return EINVAL; + env->me_maxdbs = dbs + CORE_DBS; + return MDB_SUCCESS; +} + +int ESECT +mdb_env_set_maxreaders(MDB_env *env, unsigned int readers) +{ + if (env->me_map || readers < 1) + return EINVAL; + env->me_maxreaders = readers; + return MDB_SUCCESS; +} + +int ESECT +mdb_env_get_maxreaders(MDB_env *env, unsigned int *readers) +{ + if (!env || !readers) + return EINVAL; + *readers = env->me_maxreaders; + return MDB_SUCCESS; +} + +static int ESECT +mdb_fsize(HANDLE fd, size_t *size) +{ +#ifdef _WIN32 + LARGE_INTEGER fsize; + + if (!GetFileSizeEx(fd, &fsize)) + return ErrCode(); + + *size = fsize.QuadPart; +#else + struct stat st; + + if (fstat(fd, &st)) + return ErrCode(); + + *size = st.st_size; +#endif + return MDB_SUCCESS; +} + + +#ifdef _WIN32 +typedef wchar_t mdb_nchar_t; +# define MDB_NAME(str) L##str +# define mdb_name_cpy wcscpy +#else +/** Character type for file names: char on Unix, wchar_t on Windows */ +typedef char mdb_nchar_t; +# define MDB_NAME(str) str /**< #mdb_nchar_t[] string literal */ +# define mdb_name_cpy strcpy /**< Copy name (#mdb_nchar_t string) */ +#endif + +/** Filename - string of #mdb_nchar_t[] */ +typedef struct MDB_name { + int mn_len; /**< Length */ + int mn_alloced; /**< True if #mn_val was malloced */ + mdb_nchar_t *mn_val; /**< Contents */ +} MDB_name; + +/** Filename suffixes [datafile,lockfile][without,with MDB_NOSUBDIR] */ +static const mdb_nchar_t *const mdb_suffixes[2][2] = { + { MDB_NAME("/data.mdb"), MDB_NAME("") }, + { MDB_NAME("/lock.mdb"), MDB_NAME("-lock") } +}; + +#define MDB_SUFFLEN 9 /**< Max string length in #mdb_suffixes[] */ + +/** Set up filename + scratch area for filename suffix, for opening files. + * It should be freed with #mdb_fname_destroy(). + * On Windows, paths are converted from char *UTF-8 to wchar_t *UTF-16. + * + * @param[in] path Pathname for #mdb_env_open(). + * @param[in] envflags Whether a subdir and/or lockfile will be used. + * @param[out] fname Resulting filename, with room for a suffix if necessary. + */ +static int ESECT +mdb_fname_init(const char *path, unsigned envflags, MDB_name *fname) +{ + int no_suffix = F_ISSET(envflags, MDB_NOSUBDIR|MDB_NOLOCK); + fname->mn_alloced = 0; +#ifdef _WIN32 + return utf8_to_utf16(path, fname, no_suffix ? 0 : MDB_SUFFLEN); +#else + fname->mn_len = strlen(path); + if (no_suffix) + fname->mn_val = (char *) path; + else if ((fname->mn_val = malloc(fname->mn_len + MDB_SUFFLEN+1)) != NULL) { + fname->mn_alloced = 1; + strcpy(fname->mn_val, path); + } + else + return ENOMEM; + return MDB_SUCCESS; +#endif +} + +/** Destroy \b fname from #mdb_fname_init() */ +#define mdb_fname_destroy(fname) \ + do { if ((fname).mn_alloced) free((fname).mn_val); } while (0) + +#ifdef O_CLOEXEC /* POSIX.1-2008: Set FD_CLOEXEC atomically at open() */ +# define MDB_CLOEXEC O_CLOEXEC +#else +# define MDB_CLOEXEC 0 +#endif + +/** File type, access mode etc. for #mdb_fopen() */ +enum mdb_fopen_type { +#ifdef _WIN32 + MDB_O_RDONLY, MDB_O_RDWR, MDB_O_META, MDB_O_COPY, MDB_O_LOCKS +#else + /* A comment in mdb_fopen() explains some O_* flag choices. */ + MDB_O_RDONLY= O_RDONLY, /**< for RDONLY me_fd */ + MDB_O_RDWR = O_RDWR |O_CREAT, /**< for me_fd */ + MDB_O_META = O_WRONLY|MDB_DSYNC |MDB_CLOEXEC, /**< for me_mfd */ + MDB_O_COPY = O_WRONLY|O_CREAT|O_EXCL|MDB_CLOEXEC, /**< for #mdb_env_copy() */ + /** Bitmask for open() flags in enum #mdb_fopen_type. The other bits + * distinguish otherwise-equal MDB_O_* constants from each other. + */ + MDB_O_MASK = MDB_O_RDWR|MDB_CLOEXEC | MDB_O_RDONLY|MDB_O_META|MDB_O_COPY, + MDB_O_LOCKS = MDB_O_RDWR|MDB_CLOEXEC | ((MDB_O_MASK+1) & ~MDB_O_MASK) /**< for me_lfd */ +#endif +}; + +/** Open an LMDB file. + * @param[in] env The LMDB environment. + * @param[in,out] fname Path from from #mdb_fname_init(). A suffix is + * appended if necessary to create the filename, without changing mn_len. + * @param[in] which Determines file type, access mode, etc. + * @param[in] mode The Unix permissions for the file, if we create it. + * @param[out] res Resulting file handle. + * @return 0 on success, non-zero on failure. + */ +static int ESECT +mdb_fopen(const MDB_env *env, MDB_name *fname, + enum mdb_fopen_type which, mdb_mode_t mode, + HANDLE *res) +{ + int rc = MDB_SUCCESS; + HANDLE fd; +#ifdef _WIN32 + DWORD acc, share, disp, attrs; +#else + int flags; +#endif + + if (fname->mn_alloced) /* modifiable copy */ + mdb_name_cpy(fname->mn_val + fname->mn_len, + mdb_suffixes[which==MDB_O_LOCKS][F_ISSET(env->me_flags, MDB_NOSUBDIR)]); + + /* The directory must already exist. Usually the file need not. + * MDB_O_META requires the file because we already created it using + * MDB_O_RDWR. MDB_O_COPY must not overwrite an existing file. + * + * With MDB_O_COPY we do not want the OS to cache the writes, since + * the source data is already in the OS cache. + * + * The lockfile needs FD_CLOEXEC (close file descriptor on exec*()) + * to avoid the flock() issues noted under Caveats in lmdb.h. + * Also set it for other filehandles which the user cannot get at + * and close himself, which he may need after fork(). I.e. all but + * me_fd, which programs do use via mdb_env_get_fd(). + */ + +#ifdef _WIN32 + acc = GENERIC_READ|GENERIC_WRITE; + share = FILE_SHARE_READ|FILE_SHARE_WRITE; + disp = OPEN_ALWAYS; + attrs = FILE_ATTRIBUTE_NORMAL; + switch (which) { + case MDB_O_RDONLY: /* read-only datafile */ + acc = GENERIC_READ; + disp = OPEN_EXISTING; + break; + case MDB_O_META: /* for writing metapages */ + acc = GENERIC_WRITE; + disp = OPEN_EXISTING; + attrs = FILE_ATTRIBUTE_NORMAL|FILE_FLAG_WRITE_THROUGH; + break; + case MDB_O_COPY: /* mdb_env_copy() & co */ + acc = GENERIC_WRITE; + share = 0; + disp = CREATE_NEW; + attrs = FILE_FLAG_NO_BUFFERING|FILE_FLAG_WRITE_THROUGH; + break; + default: break; /* silence gcc -Wswitch (not all enum values handled) */ + } + fd = CreateFileW(fname->mn_val, acc, share, NULL, disp, attrs, NULL); +#else + fd = open(fname->mn_val, which & MDB_O_MASK, mode); +#endif + + if (fd == INVALID_HANDLE_VALUE) + rc = ErrCode(); +#ifndef _WIN32 + else { + if (which != MDB_O_RDONLY && which != MDB_O_RDWR) { + /* Set CLOEXEC if we could not pass it to open() */ + if (!MDB_CLOEXEC && (flags = fcntl(fd, F_GETFD)) != -1) + (void) fcntl(fd, F_SETFD, flags | FD_CLOEXEC); + } + if (which == MDB_O_COPY && env->me_psize >= env->me_os_psize) { + /* This may require buffer alignment. There is no portable + * way to ask how much, so we require OS pagesize alignment. + */ +# ifdef F_NOCACHE /* __APPLE__ */ + (void) fcntl(fd, F_NOCACHE, 1); +# elif defined O_DIRECT + /* open(...O_DIRECT...) would break on filesystems without + * O_DIRECT support (ITS#7682). Try to set it here instead. + */ + if ((flags = fcntl(fd, F_GETFL)) != -1) + (void) fcntl(fd, F_SETFL, flags | O_DIRECT); +# endif + } + } +#endif /* !_WIN32 */ + + *res = fd; + return rc; +} + + +#ifdef BROKEN_FDATASYNC +#include +#include +#endif + +/** Further setup required for opening an LMDB environment + */ +static int ESECT +mdb_env_open2(MDB_env *env) +{ + unsigned int flags = env->me_flags; + int i, newenv = 0, rc; + MDB_meta meta; + +#ifdef _WIN32 + /* See if we should use QueryLimited */ + rc = GetVersion(); + if ((rc & 0xff) > 5) + env->me_pidquery = MDB_PROCESS_QUERY_LIMITED_INFORMATION; + else + env->me_pidquery = PROCESS_QUERY_INFORMATION; +#endif /* _WIN32 */ + +#ifdef BROKEN_FDATASYNC + /* ext3/ext4 fdatasync is broken on some older Linux kernels. + * https://lkml.org/lkml/2012/9/3/83 + * Kernels after 3.6-rc6 are known good. + * https://lkml.org/lkml/2012/9/10/556 + * See if the DB is on ext3/ext4, then check for new enough kernel + * Kernels 2.6.32.60, 2.6.34.15, 3.2.30, and 3.5.4 are also known + * to be patched. + */ + { + struct statfs st; + fstatfs(env->me_fd, &st); + while (st.f_type == 0xEF53) { + struct utsname uts; + int i; + uname(&uts); + if (uts.release[0] < '3') { + if (!strncmp(uts.release, "2.6.32.", 7)) { + i = atoi(uts.release+7); + if (i >= 60) + break; /* 2.6.32.60 and newer is OK */ + } else if (!strncmp(uts.release, "2.6.34.", 7)) { + i = atoi(uts.release+7); + if (i >= 15) + break; /* 2.6.34.15 and newer is OK */ + } + } else if (uts.release[0] == '3') { + i = atoi(uts.release+2); + if (i > 5) + break; /* 3.6 and newer is OK */ + if (i == 5) { + i = atoi(uts.release+4); + if (i >= 4) + break; /* 3.5.4 and newer is OK */ + } else if (i == 2) { + i = atoi(uts.release+4); + if (i >= 30) + break; /* 3.2.30 and newer is OK */ + } + } else { /* 4.x and newer is OK */ + break; + } + env->me_flags |= MDB_FSYNCONLY; + break; + } + } +#endif + + if ((i = mdb_env_read_header(env, &meta)) != 0) { + if (i != ENOENT) + return i; + DPUTS("new mdbenv"); + newenv = 1; + env->me_psize = env->me_os_psize; + if (env->me_psize > MAX_PAGESIZE) + env->me_psize = MAX_PAGESIZE; + memset(&meta, 0, sizeof(meta)); + mdb_env_init_meta0(env, &meta); + meta.mm_mapsize = DEFAULT_MAPSIZE; + } else { + env->me_psize = meta.mm_psize; + } + + /* Was a mapsize configured? */ + if (!env->me_mapsize) { + env->me_mapsize = meta.mm_mapsize; + } + { + /* Make sure mapsize >= committed data size. Even when using + * mm_mapsize, which could be broken in old files (ITS#7789). + */ + size_t minsize = (meta.mm_last_pg + 1) * meta.mm_psize; + if (env->me_mapsize < minsize) + env->me_mapsize = minsize; + } + meta.mm_mapsize = env->me_mapsize; + + if (newenv && !(flags & MDB_FIXEDMAP)) { + /* mdb_env_map() may grow the datafile. Write the metapages + * first, so the file will be valid if initialization fails. + * Except with FIXEDMAP, since we do not yet know mm_address. + * We could fill in mm_address later, but then a different + * program might end up doing that - one with a memory layout + * and map address which does not suit the main program. + */ + rc = mdb_env_init_meta(env, &meta); + if (rc) + return rc; + newenv = 0; + } + + rc = mdb_env_map(env, (flags & MDB_FIXEDMAP) ? meta.mm_address : NULL); + if (rc) + return rc; + + if (newenv) { + if (flags & MDB_FIXEDMAP) + meta.mm_address = env->me_map; + i = mdb_env_init_meta(env, &meta); + if (i != MDB_SUCCESS) { + return i; + } + } + + env->me_maxfree_1pg = (env->me_psize - PAGEHDRSZ) / sizeof(pgno_t) - 1; + env->me_nodemax = (((env->me_psize - PAGEHDRSZ) / MDB_MINKEYS) & -2) + - sizeof(indx_t); +#if !(MDB_MAXKEYSIZE) + env->me_maxkey = env->me_nodemax - (NODESIZE + sizeof(MDB_db)); +#endif + env->me_maxpg = env->me_mapsize / env->me_psize; + +#if MDB_DEBUG + { + MDB_meta *meta = mdb_env_pick_meta(env); + MDB_db *db = &meta->mm_dbs[MAIN_DBI]; + + DPRINTF(("opened database version %u, pagesize %u", + meta->mm_version, env->me_psize)); + DPRINTF(("using meta page %d", (int) (meta->mm_txnid & 1))); + DPRINTF(("depth: %u", db->md_depth)); + DPRINTF(("entries: %"Z"u", db->md_entries)); + DPRINTF(("branch pages: %"Z"u", db->md_branch_pages)); + DPRINTF(("leaf pages: %"Z"u", db->md_leaf_pages)); + DPRINTF(("overflow pages: %"Z"u", db->md_overflow_pages)); + DPRINTF(("root: %"Z"u", db->md_root)); + } +#endif + + return MDB_SUCCESS; +} + + +/** Release a reader thread's slot in the reader lock table. + * This function is called automatically when a thread exits. + * @param[in] ptr This points to the slot in the reader lock table. + */ +static void +mdb_env_reader_dest(void *ptr) +{ + MDB_reader *reader = ptr; + +#ifndef _WIN32 + if (reader->mr_pid == getpid()) /* catch pthread_exit() in child process */ +#endif + /* We omit the mutex, so do this atomically (i.e. skip mr_txnid) */ + reader->mr_pid = 0; +} + +#ifdef _WIN32 +/** Junk for arranging thread-specific callbacks on Windows. This is + * necessarily platform and compiler-specific. Windows supports up + * to 1088 keys. Let's assume nobody opens more than 64 environments + * in a single process, for now. They can override this if needed. + */ +#ifndef MAX_TLS_KEYS +#define MAX_TLS_KEYS 64 +#endif +static pthread_key_t mdb_tls_keys[MAX_TLS_KEYS]; +static int mdb_tls_nkeys; + +static void NTAPI mdb_tls_callback(PVOID module, DWORD reason, PVOID ptr) +{ + int i; + switch(reason) { + case DLL_PROCESS_ATTACH: break; + case DLL_THREAD_ATTACH: break; + case DLL_THREAD_DETACH: + for (i=0; ime_txns->mti_txnid = meta->mm_txnid; + +#ifdef _WIN32 + { + OVERLAPPED ov; + /* First acquire a shared lock. The Unlock will + * then release the existing exclusive lock. + */ + memset(&ov, 0, sizeof(ov)); + if (!LockFileEx(env->me_lfd, 0, 0, 1, 0, &ov)) { + rc = ErrCode(); + } else { + UnlockFile(env->me_lfd, 0, 0, 1, 0); + *excl = 0; + } + } +#else + { + struct flock lock_info; + /* The shared lock replaces the existing lock */ + memset((void *)&lock_info, 0, sizeof(lock_info)); + lock_info.l_type = F_RDLCK; + lock_info.l_whence = SEEK_SET; + lock_info.l_start = 0; + lock_info.l_len = 1; + while ((rc = fcntl(env->me_lfd, F_SETLK, &lock_info)) && + (rc = ErrCode()) == EINTR) ; + *excl = rc ? -1 : 0; /* error may mean we lost the lock */ + } +#endif + + return rc; +} + +/** Try to get exclusive lock, otherwise shared. + * Maintain *excl = -1: no/unknown lock, 0: shared, 1: exclusive. + */ +static int ESECT +mdb_env_excl_lock(MDB_env *env, int *excl) +{ + int rc = 0; +#ifdef _WIN32 + if (LockFile(env->me_lfd, 0, 0, 1, 0)) { + *excl = 1; + } else { + OVERLAPPED ov; + memset(&ov, 0, sizeof(ov)); + if (LockFileEx(env->me_lfd, 0, 0, 1, 0, &ov)) { + *excl = 0; + } else { + rc = ErrCode(); + } + } +#else + struct flock lock_info; + memset((void *)&lock_info, 0, sizeof(lock_info)); + lock_info.l_type = F_WRLCK; + lock_info.l_whence = SEEK_SET; + lock_info.l_start = 0; + lock_info.l_len = 1; + while ((rc = fcntl(env->me_lfd, F_SETLK, &lock_info)) && + (rc = ErrCode()) == EINTR) ; + if (!rc) { + *excl = 1; + } else +# ifndef MDB_USE_POSIX_MUTEX + if (*excl < 0) /* always true when MDB_USE_POSIX_MUTEX */ +# endif + { + lock_info.l_type = F_RDLCK; + while ((rc = fcntl(env->me_lfd, F_SETLKW, &lock_info)) && + (rc = ErrCode()) == EINTR) ; + if (rc == 0) + *excl = 0; + } +#endif + return rc; +} + +#ifdef MDB_USE_HASH +/* + * hash_64 - 64 bit Fowler/Noll/Vo-0 FNV-1a hash code + * + * @(#) $Revision: 5.1 $ + * @(#) $Id: hash_64a.c,v 5.1 2009/06/30 09:01:38 chongo Exp $ + * @(#) $Source: /usr/local/src/cmd/fnv/RCS/hash_64a.c,v $ + * + * http://www.isthe.com/chongo/tech/comp/fnv/index.html + * + *** + * + * Please do not copyright this code. This code is in the public domain. + * + * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO + * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF + * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + * By: + * chongo /\oo/\ + * http://www.isthe.com/chongo/ + * + * Share and Enjoy! :-) + */ + +typedef unsigned long long mdb_hash_t; +#define MDB_HASH_INIT ((mdb_hash_t)0xcbf29ce484222325ULL) + +/** perform a 64 bit Fowler/Noll/Vo FNV-1a hash on a buffer + * @param[in] val value to hash + * @param[in] hval initial value for hash + * @return 64 bit hash + * + * NOTE: To use the recommended 64 bit FNV-1a hash, use MDB_HASH_INIT as the + * hval arg on the first call. + */ +static mdb_hash_t +mdb_hash_val(MDB_val *val, mdb_hash_t hval) +{ + unsigned char *s = (unsigned char *)val->mv_data; /* unsigned string */ + unsigned char *end = s + val->mv_size; + /* + * FNV-1a hash each octet of the string + */ + while (s < end) { + /* xor the bottom with the current octet */ + hval ^= (mdb_hash_t)*s++; + + /* multiply by the 64 bit FNV magic prime mod 2^64 */ + hval += (hval << 1) + (hval << 4) + (hval << 5) + + (hval << 7) + (hval << 8) + (hval << 40); + } + /* return our new hash value */ + return hval; +} + +/** Hash the string and output the encoded hash. + * This uses modified RFC1924 Ascii85 encoding to accommodate systems with + * very short name limits. We don't care about the encoding being reversible, + * we just want to preserve as many bits of the input as possible in a + * small printable string. + * @param[in] str string to hash + * @param[out] encbuf an array of 11 chars to hold the hash + */ +static const char mdb_a85[]= "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~"; + +static void ESECT +mdb_pack85(unsigned long l, char *out) +{ + int i; + + for (i=0; i<5; i++) { + *out++ = mdb_a85[l % 85]; + l /= 85; + } +} + +static void ESECT +mdb_hash_enc(MDB_val *val, char *encbuf) +{ + mdb_hash_t h = mdb_hash_val(val, MDB_HASH_INIT); + + mdb_pack85(h, encbuf); + mdb_pack85(h>>32, encbuf+5); + encbuf[10] = '\0'; +} +#endif + +/** Open and/or initialize the lock region for the environment. + * @param[in] env The LMDB environment. + * @param[in] fname Filename + scratch area, from #mdb_fname_init(). + * @param[in] mode The Unix permissions for the file, if we create it. + * @param[in,out] excl In -1, out lock type: -1 none, 0 shared, 1 exclusive + * @return 0 on success, non-zero on failure. + */ +static int ESECT +mdb_env_setup_locks(MDB_env *env, MDB_name *fname, int mode, int *excl) +{ +#ifdef _WIN32 +# define MDB_ERRCODE_ROFS ERROR_WRITE_PROTECT +#else +# define MDB_ERRCODE_ROFS EROFS +#endif + int rc; + off_t size, rsize; + + rc = mdb_fopen(env, fname, MDB_O_LOCKS, mode, &env->me_lfd); + if (rc) { + /* Omit lockfile if read-only env on read-only filesystem */ + if (rc == MDB_ERRCODE_ROFS && (env->me_flags & MDB_RDONLY)) { + return MDB_SUCCESS; + } + goto fail; + } + + if (!(env->me_flags & MDB_NOTLS)) { + rc = pthread_key_create(&env->me_txkey, mdb_env_reader_dest); + if (rc) + goto fail; + env->me_flags |= MDB_ENV_TXKEY; +#ifdef _WIN32 + /* Windows TLS callbacks need help finding their TLS info. */ + if (mdb_tls_nkeys >= MAX_TLS_KEYS) { + rc = MDB_TLS_FULL; + goto fail; + } + mdb_tls_keys[mdb_tls_nkeys++] = env->me_txkey; +#endif + } + + /* Try to get exclusive lock. If we succeed, then + * nobody is using the lock region and we should initialize it. + */ + if ((rc = mdb_env_excl_lock(env, excl))) goto fail; + +#ifdef _WIN32 + size = GetFileSize(env->me_lfd, NULL); +#else + size = lseek(env->me_lfd, 0, SEEK_END); + if (size == -1) goto fail_errno; +#endif + rsize = (env->me_maxreaders-1) * sizeof(MDB_reader) + sizeof(MDB_txninfo); + if (size < rsize && *excl > 0) { +#ifdef _WIN32 + if (SetFilePointer(env->me_lfd, rsize, NULL, FILE_BEGIN) != (DWORD)rsize + || !SetEndOfFile(env->me_lfd)) + goto fail_errno; +#else + if (ftruncate(env->me_lfd, rsize) != 0) goto fail_errno; +#endif + } else { + rsize = size; + size = rsize - sizeof(MDB_txninfo); + env->me_maxreaders = size/sizeof(MDB_reader) + 1; + } + { +#ifdef _WIN32 + HANDLE mh; + mh = CreateFileMapping(env->me_lfd, NULL, PAGE_READWRITE, + 0, 0, NULL); + if (!mh) goto fail_errno; + env->me_txns = MapViewOfFileEx(mh, FILE_MAP_WRITE, 0, 0, rsize, NULL); + CloseHandle(mh); + if (!env->me_txns) goto fail_errno; +#else + void *m = mmap(NULL, rsize, PROT_READ|PROT_WRITE, MAP_SHARED, + env->me_lfd, 0); + if (m == MAP_FAILED) goto fail_errno; + env->me_txns = m; +#endif + } + if (*excl > 0) { +#ifdef _WIN32 + BY_HANDLE_FILE_INFORMATION stbuf; + struct { + DWORD volume; + DWORD nhigh; + DWORD nlow; + } idbuf; + MDB_val val; + char encbuf[11]; + + if (!mdb_sec_inited) { + InitializeSecurityDescriptor(&mdb_null_sd, + SECURITY_DESCRIPTOR_REVISION); + SetSecurityDescriptorDacl(&mdb_null_sd, TRUE, 0, FALSE); + mdb_all_sa.nLength = sizeof(SECURITY_ATTRIBUTES); + mdb_all_sa.bInheritHandle = FALSE; + mdb_all_sa.lpSecurityDescriptor = &mdb_null_sd; + mdb_sec_inited = 1; + } + if (!GetFileInformationByHandle(env->me_lfd, &stbuf)) goto fail_errno; + idbuf.volume = stbuf.dwVolumeSerialNumber; + idbuf.nhigh = stbuf.nFileIndexHigh; + idbuf.nlow = stbuf.nFileIndexLow; + val.mv_data = &idbuf; + val.mv_size = sizeof(idbuf); + mdb_hash_enc(&val, encbuf); + sprintf(env->me_txns->mti_rmname, "Global\\MDBr%s", encbuf); + sprintf(env->me_txns->mti_wmname, "Global\\MDBw%s", encbuf); + env->me_rmutex = CreateMutexA(&mdb_all_sa, FALSE, env->me_txns->mti_rmname); + if (!env->me_rmutex) goto fail_errno; + env->me_wmutex = CreateMutexA(&mdb_all_sa, FALSE, env->me_txns->mti_wmname); + if (!env->me_wmutex) goto fail_errno; +#elif defined(MDB_USE_POSIX_SEM) + struct stat stbuf; + struct { + dev_t dev; + ino_t ino; + } idbuf; + MDB_val val; + char encbuf[11]; + +#if defined(__NetBSD__) +#define MDB_SHORT_SEMNAMES 1 /* limited to 14 chars */ +#endif + if (fstat(env->me_lfd, &stbuf)) goto fail_errno; + idbuf.dev = stbuf.st_dev; + idbuf.ino = stbuf.st_ino; + val.mv_data = &idbuf; + val.mv_size = sizeof(idbuf); + mdb_hash_enc(&val, encbuf); +#ifdef MDB_SHORT_SEMNAMES + encbuf[9] = '\0'; /* drop name from 15 chars to 14 chars */ +#endif + sprintf(env->me_txns->mti_rmname, "/MDBr%s", encbuf); + sprintf(env->me_txns->mti_wmname, "/MDBw%s", encbuf); + /* Clean up after a previous run, if needed: Try to + * remove both semaphores before doing anything else. + */ + sem_unlink(env->me_txns->mti_rmname); + sem_unlink(env->me_txns->mti_wmname); + env->me_rmutex = sem_open(env->me_txns->mti_rmname, + O_CREAT|O_EXCL, mode, 1); + if (env->me_rmutex == SEM_FAILED) goto fail_errno; + env->me_wmutex = sem_open(env->me_txns->mti_wmname, + O_CREAT|O_EXCL, mode, 1); + if (env->me_wmutex == SEM_FAILED) goto fail_errno; +#else /* MDB_USE_POSIX_MUTEX: */ + pthread_mutexattr_t mattr; + + /* Solaris needs this before initing a robust mutex. Otherwise + * it may skip the init and return EBUSY "seems someone already + * inited" or EINVAL "it was inited differently". + */ + memset(env->me_txns->mti_rmutex, 0, sizeof(*env->me_txns->mti_rmutex)); + memset(env->me_txns->mti_wmutex, 0, sizeof(*env->me_txns->mti_wmutex)); + + if ((rc = pthread_mutexattr_init(&mattr))) + goto fail; + + rc = pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED); +#ifdef MDB_ROBUST_SUPPORTED + if (!rc) rc = pthread_mutexattr_setrobust(&mattr, PTHREAD_MUTEX_ROBUST); +#endif + if (!rc) rc = pthread_mutex_init(env->me_txns->mti_rmutex, &mattr); + if (!rc) rc = pthread_mutex_init(env->me_txns->mti_wmutex, &mattr); + pthread_mutexattr_destroy(&mattr); + if (rc) + goto fail; +#endif /* _WIN32 || MDB_USE_POSIX_SEM */ + + env->me_txns->mti_magic = MDB_MAGIC; + env->me_txns->mti_format = MDB_LOCK_FORMAT; + env->me_txns->mti_txnid = 0; + env->me_txns->mti_numreaders = 0; + + } else { + if (env->me_txns->mti_magic != MDB_MAGIC) { + DPUTS("lock region has invalid magic"); + rc = MDB_INVALID; + goto fail; + } + if (env->me_txns->mti_format != MDB_LOCK_FORMAT) { + DPRINTF(("lock region has format+version 0x%x, expected 0x%x", + env->me_txns->mti_format, MDB_LOCK_FORMAT)); + rc = MDB_VERSION_MISMATCH; + goto fail; + } + rc = ErrCode(); + if (rc && rc != EACCES && rc != EAGAIN) { + goto fail; + } +#ifdef _WIN32 + env->me_rmutex = OpenMutexA(SYNCHRONIZE, FALSE, env->me_txns->mti_rmname); + if (!env->me_rmutex) goto fail_errno; + env->me_wmutex = OpenMutexA(SYNCHRONIZE, FALSE, env->me_txns->mti_wmname); + if (!env->me_wmutex) goto fail_errno; +#elif defined(MDB_USE_POSIX_SEM) + env->me_rmutex = sem_open(env->me_txns->mti_rmname, 0); + if (env->me_rmutex == SEM_FAILED) goto fail_errno; + env->me_wmutex = sem_open(env->me_txns->mti_wmname, 0); + if (env->me_wmutex == SEM_FAILED) goto fail_errno; +#endif + } + return MDB_SUCCESS; + +fail_errno: + rc = ErrCode(); +fail: + return rc; +} + + /** Only a subset of the @ref mdb_env flags can be changed + * at runtime. Changing other flags requires closing the + * environment and re-opening it with the new flags. + */ +#define CHANGEABLE (MDB_NOSYNC|MDB_NOMETASYNC|MDB_MAPASYNC|MDB_NOMEMINIT) +#define CHANGELESS (MDB_FIXEDMAP|MDB_NOSUBDIR|MDB_RDONLY| \ + MDB_WRITEMAP|MDB_NOTLS|MDB_NOLOCK|MDB_NORDAHEAD) + +#if VALID_FLAGS & PERSISTENT_FLAGS & (CHANGEABLE|CHANGELESS) +# error "Persistent DB flags & env flags overlap, but both go in mm_flags" +#endif + +int ESECT +mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode) +{ + int rc, excl = -1; + MDB_name fname; + + if (env->me_fd!=INVALID_HANDLE_VALUE || (flags & ~(CHANGEABLE|CHANGELESS))) + return EINVAL; + + flags |= env->me_flags; + + rc = mdb_fname_init(path, flags, &fname); + if (rc) + return rc; + + if (flags & MDB_RDONLY) { + /* silently ignore WRITEMAP when we're only getting read access */ + flags &= ~MDB_WRITEMAP; + } else { + if (!((env->me_free_pgs = mdb_midl_alloc(MDB_IDL_UM_MAX)) && + (env->me_dirty_list = calloc(MDB_IDL_UM_SIZE, sizeof(MDB_ID2))))) + rc = ENOMEM; + } + env->me_flags = flags |= MDB_ENV_ACTIVE; + if (rc) + goto leave; + + env->me_path = strdup(path); + env->me_dbxs = calloc(env->me_maxdbs, sizeof(MDB_dbx)); + env->me_dbflags = calloc(env->me_maxdbs, sizeof(uint16_t)); + env->me_dbiseqs = calloc(env->me_maxdbs, sizeof(unsigned int)); + if (!(env->me_dbxs && env->me_path && env->me_dbflags && env->me_dbiseqs)) { + rc = ENOMEM; + goto leave; + } + env->me_dbxs[FREE_DBI].md_cmp = mdb_cmp_long; /* aligned MDB_INTEGERKEY */ + + /* For RDONLY, get lockfile after we know datafile exists */ + if (!(flags & (MDB_RDONLY|MDB_NOLOCK))) { + rc = mdb_env_setup_locks(env, &fname, mode, &excl); + if (rc) + goto leave; + } + + rc = mdb_fopen(env, &fname, + (flags & MDB_RDONLY) ? MDB_O_RDONLY : MDB_O_RDWR, + mode, &env->me_fd); + if (rc) + goto leave; + + if ((flags & (MDB_RDONLY|MDB_NOLOCK)) == MDB_RDONLY) { + rc = mdb_env_setup_locks(env, &fname, mode, &excl); + if (rc) + goto leave; + } + + if ((rc = mdb_env_open2(env)) == MDB_SUCCESS) { + if (!(flags & (MDB_RDONLY|MDB_WRITEMAP))) { + /* Synchronous fd for meta writes. Needed even with + * MDB_NOSYNC/MDB_NOMETASYNC, in case these get reset. + */ + rc = mdb_fopen(env, &fname, MDB_O_META, mode, &env->me_mfd); + if (rc) + goto leave; + } + DPRINTF(("opened dbenv %p", (void *) env)); + if (excl > 0) { + rc = mdb_env_share_locks(env, &excl); + if (rc) + goto leave; + } + if (!(flags & MDB_RDONLY)) { + MDB_txn *txn; + int tsize = sizeof(MDB_txn), size = tsize + env->me_maxdbs * + (sizeof(MDB_db)+sizeof(MDB_cursor *)+sizeof(unsigned int)+1); + if ((env->me_pbuf = calloc(1, env->me_psize)) && + (txn = calloc(1, size))) + { + txn->mt_dbs = (MDB_db *)((char *)txn + tsize); + txn->mt_cursors = (MDB_cursor **)(txn->mt_dbs + env->me_maxdbs); + txn->mt_dbiseqs = (unsigned int *)(txn->mt_cursors + env->me_maxdbs); + txn->mt_dbflags = (unsigned char *)(txn->mt_dbiseqs + env->me_maxdbs); + txn->mt_env = env; + txn->mt_dbxs = env->me_dbxs; + txn->mt_flags = MDB_TXN_FINISHED; + env->me_txn0 = txn; + } else { + rc = ENOMEM; + } + } + } + +leave: + if (rc) { + mdb_env_close0(env, excl); + } + mdb_fname_destroy(fname); + return rc; +} + +/** Destroy resources from mdb_env_open(), clear our readers & DBIs */ +static void ESECT +mdb_env_close0(MDB_env *env, int excl) +{ + int i; + + if (!(env->me_flags & MDB_ENV_ACTIVE)) + return; + + /* Doing this here since me_dbxs may not exist during mdb_env_close */ + if (env->me_dbxs) { + for (i = env->me_maxdbs; --i >= CORE_DBS; ) + free(env->me_dbxs[i].md_name.mv_data); + free(env->me_dbxs); + } + + free(env->me_pbuf); + free(env->me_dbiseqs); + free(env->me_dbflags); + free(env->me_path); + free(env->me_dirty_list); + free(env->me_txn0); + mdb_midl_free(env->me_free_pgs); + + if (env->me_flags & MDB_ENV_TXKEY) { + pthread_key_delete(env->me_txkey); +#ifdef _WIN32 + /* Delete our key from the global list */ + for (i=0; ime_txkey) { + mdb_tls_keys[i] = mdb_tls_keys[mdb_tls_nkeys-1]; + mdb_tls_nkeys--; + break; + } +#endif + } + + if (env->me_map) { + munmap(env->me_map, env->me_mapsize); + } + if (env->me_mfd != INVALID_HANDLE_VALUE) + (void) close(env->me_mfd); + if (env->me_fd != INVALID_HANDLE_VALUE) + (void) close(env->me_fd); + if (env->me_txns) { + MDB_PID_T pid = getpid(); + /* Clearing readers is done in this function because + * me_txkey with its destructor must be disabled first. + * + * We skip the the reader mutex, so we touch only + * data owned by this process (me_close_readers and + * our readers), and clear each reader atomically. + */ + for (i = env->me_close_readers; --i >= 0; ) + if (env->me_txns->mti_readers[i].mr_pid == pid) + env->me_txns->mti_readers[i].mr_pid = 0; +#ifdef _WIN32 + if (env->me_rmutex) { + CloseHandle(env->me_rmutex); + if (env->me_wmutex) CloseHandle(env->me_wmutex); + } + /* Windows automatically destroys the mutexes when + * the last handle closes. + */ +#elif defined(MDB_USE_POSIX_SEM) + if (env->me_rmutex != SEM_FAILED) { + sem_close(env->me_rmutex); + if (env->me_wmutex != SEM_FAILED) + sem_close(env->me_wmutex); + /* If we have the filelock: If we are the + * only remaining user, clean up semaphores. + */ + if (excl == 0) + mdb_env_excl_lock(env, &excl); + if (excl > 0) { + sem_unlink(env->me_txns->mti_rmname); + sem_unlink(env->me_txns->mti_wmname); + } + } +#elif defined(MDB_ROBUST_SUPPORTED) + /* If we have the filelock: If we are the + * only remaining user, clean up robust + * mutexes. + */ + if (excl == 0) + mdb_env_excl_lock(env, &excl); + if (excl > 0) { + pthread_mutex_destroy(env->me_txns->mti_rmutex); + pthread_mutex_destroy(env->me_txns->mti_wmutex); + } +#endif + munmap((void *)env->me_txns, (env->me_maxreaders-1)*sizeof(MDB_reader)+sizeof(MDB_txninfo)); + } + if (env->me_lfd != INVALID_HANDLE_VALUE) { +#ifdef _WIN32 + if (excl >= 0) { + /* Unlock the lockfile. Windows would have unlocked it + * after closing anyway, but not necessarily at once. + */ + UnlockFile(env->me_lfd, 0, 0, 1, 0); + } +#endif + (void) close(env->me_lfd); + } + + env->me_flags &= ~(MDB_ENV_ACTIVE|MDB_ENV_TXKEY); +} + +void ESECT +mdb_env_close(MDB_env *env) +{ + MDB_page *dp; + + if (env == NULL) + return; + + VGMEMP_DESTROY(env); + while ((dp = env->me_dpages) != NULL) { + VGMEMP_DEFINED(&dp->mp_next, sizeof(dp->mp_next)); + env->me_dpages = dp->mp_next; + free(dp); + } + + mdb_env_close0(env, 0); + free(env); +} + +/** Compare two items pointing at aligned size_t's */ +static int +mdb_cmp_long(const MDB_val *a, const MDB_val *b) +{ + return (*(size_t *)a->mv_data < *(size_t *)b->mv_data) ? -1 : + *(size_t *)a->mv_data > *(size_t *)b->mv_data; +} + +/** Compare two items pointing at aligned unsigned int's. + * + * This is also set as #MDB_INTEGERDUP|#MDB_DUPFIXED's #MDB_dbx.%md_dcmp, + * but #mdb_cmp_clong() is called instead if the data type is size_t. + */ +static int +mdb_cmp_int(const MDB_val *a, const MDB_val *b) +{ + return (*(unsigned int *)a->mv_data < *(unsigned int *)b->mv_data) ? -1 : + *(unsigned int *)a->mv_data > *(unsigned int *)b->mv_data; +} + +/** Compare two items pointing at unsigned ints of unknown alignment. + * Nodes and keys are guaranteed to be 2-byte aligned. + */ +static int +mdb_cmp_cint(const MDB_val *a, const MDB_val *b) +{ +#if BYTE_ORDER == LITTLE_ENDIAN + unsigned short *u, *c; + int x; + + u = (unsigned short *) ((char *) a->mv_data + a->mv_size); + c = (unsigned short *) ((char *) b->mv_data + a->mv_size); + do { + x = *--u - *--c; + } while(!x && u > (unsigned short *)a->mv_data); + return x; +#else + unsigned short *u, *c, *end; + int x; + + end = (unsigned short *) ((char *) a->mv_data + a->mv_size); + u = (unsigned short *)a->mv_data; + c = (unsigned short *)b->mv_data; + do { + x = *u++ - *c++; + } while(!x && u < end); + return x; +#endif +} + +/** Compare two items lexically */ +static int +mdb_cmp_memn(const MDB_val *a, const MDB_val *b) +{ + int diff; + ssize_t len_diff; + unsigned int len; + + len = a->mv_size; + len_diff = (ssize_t) a->mv_size - (ssize_t) b->mv_size; + if (len_diff > 0) { + len = b->mv_size; + len_diff = 1; + } + + diff = memcmp(a->mv_data, b->mv_data, len); + return diff ? diff : len_diff<0 ? -1 : len_diff; +} + +/** Compare two items in reverse byte order */ +static int +mdb_cmp_memnr(const MDB_val *a, const MDB_val *b) +{ + const unsigned char *p1, *p2, *p1_lim; + ssize_t len_diff; + int diff; + + p1_lim = (const unsigned char *)a->mv_data; + p1 = (const unsigned char *)a->mv_data + a->mv_size; + p2 = (const unsigned char *)b->mv_data + b->mv_size; + + len_diff = (ssize_t) a->mv_size - (ssize_t) b->mv_size; + if (len_diff > 0) { + p1_lim += len_diff; + len_diff = 1; + } + + while (p1 > p1_lim) { + diff = *--p1 - *--p2; + if (diff) + return diff; + } + return len_diff<0 ? -1 : len_diff; +} + +/** Search for key within a page, using binary search. + * Returns the smallest entry larger or equal to the key. + * If exactp is non-null, stores whether the found entry was an exact match + * in *exactp (1 or 0). + * Updates the cursor index with the index of the found entry. + * If no entry larger or equal to the key is found, returns NULL. + */ +static MDB_node * +mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp) +{ + unsigned int i = 0, nkeys; + int low, high; + int rc = 0; + MDB_page *mp = mc->mc_pg[mc->mc_top]; + MDB_node *node = NULL; + MDB_val nodekey; + MDB_cmp_func *cmp; + DKBUF; + + nkeys = NUMKEYS(mp); + + DPRINTF(("searching %u keys in %s %spage %"Z"u", + nkeys, IS_LEAF(mp) ? "leaf" : "branch", IS_SUBP(mp) ? "sub-" : "", + mdb_dbg_pgno(mp))); + + low = IS_LEAF(mp) ? 0 : 1; + high = nkeys - 1; + cmp = mc->mc_dbx->md_cmp; + + /* Branch pages have no data, so if using integer keys, + * alignment is guaranteed. Use faster mdb_cmp_int. + */ + if (cmp == mdb_cmp_cint && IS_BRANCH(mp)) { + if (NODEPTR(mp, 1)->mn_ksize == sizeof(size_t)) + cmp = mdb_cmp_long; + else + cmp = mdb_cmp_int; + } + + if (IS_LEAF2(mp)) { + nodekey.mv_size = mc->mc_db->md_pad; + node = NODEPTR(mp, 0); /* fake */ + while (low <= high) { + i = (low + high) >> 1; + nodekey.mv_data = LEAF2KEY(mp, i, nodekey.mv_size); + rc = cmp(key, &nodekey); + DPRINTF(("found leaf index %u [%s], rc = %i", + i, DKEY(&nodekey), rc)); + if (rc == 0) + break; + if (rc > 0) + low = i + 1; + else + high = i - 1; + } + } else { + while (low <= high) { + i = (low + high) >> 1; + + node = NODEPTR(mp, i); + nodekey.mv_size = NODEKSZ(node); + nodekey.mv_data = NODEKEY(node); + + rc = cmp(key, &nodekey); +#if MDB_DEBUG + if (IS_LEAF(mp)) + DPRINTF(("found leaf index %u [%s], rc = %i", + i, DKEY(&nodekey), rc)); + else + DPRINTF(("found branch index %u [%s -> %"Z"u], rc = %i", + i, DKEY(&nodekey), NODEPGNO(node), rc)); +#endif + if (rc == 0) + break; + if (rc > 0) + low = i + 1; + else + high = i - 1; + } + } + + if (rc > 0) { /* Found entry is less than the key. */ + i++; /* Skip to get the smallest entry larger than key. */ + if (!IS_LEAF2(mp)) + node = NODEPTR(mp, i); + } + if (exactp) + *exactp = (rc == 0 && nkeys > 0); + /* store the key index */ + mc->mc_ki[mc->mc_top] = i; + if (i >= nkeys) + /* There is no entry larger or equal to the key. */ + return NULL; + + /* nodeptr is fake for LEAF2 */ + return node; +} + +#if 0 +static void +mdb_cursor_adjust(MDB_cursor *mc, func) +{ + MDB_cursor *m2; + + for (m2 = mc->mc_txn->mt_cursors[mc->mc_dbi]; m2; m2=m2->mc_next) { + if (m2->mc_pg[m2->mc_top] == mc->mc_pg[mc->mc_top]) { + func(mc, m2); + } + } +} +#endif + +/** Pop a page off the top of the cursor's stack. */ +static void +mdb_cursor_pop(MDB_cursor *mc) +{ + if (mc->mc_snum) { + DPRINTF(("popping page %"Z"u off db %d cursor %p", + mc->mc_pg[mc->mc_top]->mp_pgno, DDBI(mc), (void *) mc)); + + mc->mc_snum--; + if (mc->mc_snum) { + mc->mc_top--; + } else { + mc->mc_flags &= ~C_INITIALIZED; + } + } +} + +/** Push a page onto the top of the cursor's stack. + * Set #MDB_TXN_ERROR on failure. + */ +static int +mdb_cursor_push(MDB_cursor *mc, MDB_page *mp) +{ + DPRINTF(("pushing page %"Z"u on db %d cursor %p", mp->mp_pgno, + DDBI(mc), (void *) mc)); + + if (mc->mc_snum >= CURSOR_STACK) { + mc->mc_txn->mt_flags |= MDB_TXN_ERROR; + return MDB_CURSOR_FULL; + } + + mc->mc_top = mc->mc_snum++; + mc->mc_pg[mc->mc_top] = mp; + mc->mc_ki[mc->mc_top] = 0; + + return MDB_SUCCESS; +} + +/** Find the address of the page corresponding to a given page number. + * Set #MDB_TXN_ERROR on failure. + * @param[in] mc the cursor accessing the page. + * @param[in] pgno the page number for the page to retrieve. + * @param[out] ret address of a pointer where the page's address will be stored. + * @param[out] lvl dirty_list inheritance level of found page. 1=current txn, 0=mapped page. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_page_get(MDB_cursor *mc, pgno_t pgno, MDB_page **ret, int *lvl) +{ + MDB_txn *txn = mc->mc_txn; + MDB_env *env = txn->mt_env; + MDB_page *p = NULL; + int level; + + if (! (txn->mt_flags & (MDB_TXN_RDONLY|MDB_TXN_WRITEMAP))) { + MDB_txn *tx2 = txn; + level = 1; + do { + MDB_ID2L dl = tx2->mt_u.dirty_list; + unsigned x; + /* Spilled pages were dirtied in this txn and flushed + * because the dirty list got full. Bring this page + * back in from the map (but don't unspill it here, + * leave that unless page_touch happens again). + */ + if (tx2->mt_spill_pgs) { + MDB_ID pn = pgno << 1; + x = mdb_midl_search(tx2->mt_spill_pgs, pn); + if (x <= tx2->mt_spill_pgs[0] && tx2->mt_spill_pgs[x] == pn) { + p = (MDB_page *)(env->me_map + env->me_psize * pgno); + goto done; + } + } + if (dl[0].mid) { + unsigned x = mdb_mid2l_search(dl, pgno); + if (x <= dl[0].mid && dl[x].mid == pgno) { + p = dl[x].mptr; + goto done; + } + } + level++; + } while ((tx2 = tx2->mt_parent) != NULL); + } + + if (pgno < txn->mt_next_pgno) { + level = 0; + p = (MDB_page *)(env->me_map + env->me_psize * pgno); + } else { + DPRINTF(("page %"Z"u not found", pgno)); + txn->mt_flags |= MDB_TXN_ERROR; + return MDB_PAGE_NOTFOUND; + } + +done: + *ret = p; + if (lvl) + *lvl = level; + return MDB_SUCCESS; +} + +/** Finish #mdb_page_search() / #mdb_page_search_lowest(). + * The cursor is at the root page, set up the rest of it. + */ +static int +mdb_page_search_root(MDB_cursor *mc, MDB_val *key, int flags) +{ + MDB_page *mp = mc->mc_pg[mc->mc_top]; + int rc; + DKBUF; + + while (IS_BRANCH(mp)) { + MDB_node *node; + indx_t i; + + DPRINTF(("branch page %"Z"u has %u keys", mp->mp_pgno, NUMKEYS(mp))); + /* Don't assert on branch pages in the FreeDB. We can get here + * while in the process of rebalancing a FreeDB branch page; we must + * let that proceed. ITS#8336 + */ + mdb_cassert(mc, !mc->mc_dbi || NUMKEYS(mp) > 1); + DPRINTF(("found index 0 to page %"Z"u", NODEPGNO(NODEPTR(mp, 0)))); + + if (flags & (MDB_PS_FIRST|MDB_PS_LAST)) { + i = 0; + if (flags & MDB_PS_LAST) { + i = NUMKEYS(mp) - 1; + /* if already init'd, see if we're already in right place */ + if (mc->mc_flags & C_INITIALIZED) { + if (mc->mc_ki[mc->mc_top] == i) { + mc->mc_top = mc->mc_snum++; + mp = mc->mc_pg[mc->mc_top]; + goto ready; + } + } + } + } else { + int exact; + node = mdb_node_search(mc, key, &exact); + if (node == NULL) + i = NUMKEYS(mp) - 1; + else { + i = mc->mc_ki[mc->mc_top]; + if (!exact) { + mdb_cassert(mc, i > 0); + i--; + } + } + DPRINTF(("following index %u for key [%s]", i, DKEY(key))); + } + + mdb_cassert(mc, i < NUMKEYS(mp)); + node = NODEPTR(mp, i); + + if ((rc = mdb_page_get(mc, NODEPGNO(node), &mp, NULL)) != 0) + return rc; + + mc->mc_ki[mc->mc_top] = i; + if ((rc = mdb_cursor_push(mc, mp))) + return rc; + +ready: + if (flags & MDB_PS_MODIFY) { + if ((rc = mdb_page_touch(mc)) != 0) + return rc; + mp = mc->mc_pg[mc->mc_top]; + } + } + + if (!IS_LEAF(mp)) { + DPRINTF(("internal error, index points to a %02X page!?", + mp->mp_flags)); + mc->mc_txn->mt_flags |= MDB_TXN_ERROR; + return MDB_CORRUPTED; + } + + DPRINTF(("found leaf page %"Z"u for key [%s]", mp->mp_pgno, + key ? DKEY(key) : "null")); + mc->mc_flags |= C_INITIALIZED; + mc->mc_flags &= ~C_EOF; + + return MDB_SUCCESS; +} + +/** Search for the lowest key under the current branch page. + * This just bypasses a NUMKEYS check in the current page + * before calling mdb_page_search_root(), because the callers + * are all in situations where the current page is known to + * be underfilled. + */ +static int +mdb_page_search_lowest(MDB_cursor *mc) +{ + MDB_page *mp = mc->mc_pg[mc->mc_top]; + MDB_node *node = NODEPTR(mp, 0); + int rc; + + if ((rc = mdb_page_get(mc, NODEPGNO(node), &mp, NULL)) != 0) + return rc; + + mc->mc_ki[mc->mc_top] = 0; + if ((rc = mdb_cursor_push(mc, mp))) + return rc; + return mdb_page_search_root(mc, NULL, MDB_PS_FIRST); +} + +/** Search for the page a given key should be in. + * Push it and its parent pages on the cursor stack. + * @param[in,out] mc the cursor for this operation. + * @param[in] key the key to search for, or NULL for first/last page. + * @param[in] flags If MDB_PS_MODIFY is set, visited pages in the DB + * are touched (updated with new page numbers). + * If MDB_PS_FIRST or MDB_PS_LAST is set, find first or last leaf. + * This is used by #mdb_cursor_first() and #mdb_cursor_last(). + * If MDB_PS_ROOTONLY set, just fetch root node, no further lookups. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_page_search(MDB_cursor *mc, MDB_val *key, int flags) +{ + int rc; + pgno_t root; + + /* Make sure the txn is still viable, then find the root from + * the txn's db table and set it as the root of the cursor's stack. + */ + if (mc->mc_txn->mt_flags & MDB_TXN_BLOCKED) { + DPUTS("transaction may not be used now"); + return MDB_BAD_TXN; + } else { + /* Make sure we're using an up-to-date root */ + if (*mc->mc_dbflag & DB_STALE) { + MDB_cursor mc2; + if (TXN_DBI_CHANGED(mc->mc_txn, mc->mc_dbi)) + return MDB_BAD_DBI; + mdb_cursor_init(&mc2, mc->mc_txn, MAIN_DBI, NULL); + rc = mdb_page_search(&mc2, &mc->mc_dbx->md_name, 0); + if (rc) + return rc; + { + MDB_val data; + int exact = 0; + uint16_t flags; + MDB_node *leaf = mdb_node_search(&mc2, + &mc->mc_dbx->md_name, &exact); + if (!exact) + return MDB_NOTFOUND; + if ((leaf->mn_flags & (F_DUPDATA|F_SUBDATA)) != F_SUBDATA) + return MDB_INCOMPATIBLE; /* not a named DB */ + rc = mdb_node_read(&mc2, leaf, &data); + if (rc) + return rc; + memcpy(&flags, ((char *) data.mv_data + offsetof(MDB_db, md_flags)), + sizeof(uint16_t)); + /* The txn may not know this DBI, or another process may + * have dropped and recreated the DB with other flags. + */ + if ((mc->mc_db->md_flags & PERSISTENT_FLAGS) != flags) + return MDB_INCOMPATIBLE; + memcpy(mc->mc_db, data.mv_data, sizeof(MDB_db)); + } + *mc->mc_dbflag &= ~DB_STALE; + } + root = mc->mc_db->md_root; + + if (root == P_INVALID) { /* Tree is empty. */ + DPUTS("tree is empty"); + return MDB_NOTFOUND; + } + } + + mdb_cassert(mc, root > 1); + if (!mc->mc_pg[0] || mc->mc_pg[0]->mp_pgno != root) + if ((rc = mdb_page_get(mc, root, &mc->mc_pg[0], NULL)) != 0) + return rc; + + mc->mc_snum = 1; + mc->mc_top = 0; + + DPRINTF(("db %d root page %"Z"u has flags 0x%X", + DDBI(mc), root, mc->mc_pg[0]->mp_flags)); + + if (flags & MDB_PS_MODIFY) { + if ((rc = mdb_page_touch(mc))) + return rc; + } + + if (flags & MDB_PS_ROOTONLY) + return MDB_SUCCESS; + + return mdb_page_search_root(mc, key, flags); +} + +static int +mdb_ovpage_free(MDB_cursor *mc, MDB_page *mp) +{ + MDB_txn *txn = mc->mc_txn; + pgno_t pg = mp->mp_pgno; + unsigned x = 0, ovpages = mp->mp_pages; + MDB_env *env = txn->mt_env; + MDB_IDL sl = txn->mt_spill_pgs; + MDB_ID pn = pg << 1; + int rc; + + DPRINTF(("free ov page %"Z"u (%d)", pg, ovpages)); + /* If the page is dirty or on the spill list we just acquired it, + * so we should give it back to our current free list, if any. + * Otherwise put it onto the list of pages we freed in this txn. + * + * Won't create me_pghead: me_pglast must be inited along with it. + * Unsupported in nested txns: They would need to hide the page + * range in ancestor txns' dirty and spilled lists. + */ + if (env->me_pghead && + !txn->mt_parent && + ((mp->mp_flags & P_DIRTY) || + (sl && (x = mdb_midl_search(sl, pn)) <= sl[0] && sl[x] == pn))) + { + unsigned i, j; + pgno_t *mop; + MDB_ID2 *dl, ix, iy; + rc = mdb_midl_need(&env->me_pghead, ovpages); + if (rc) + return rc; + if (!(mp->mp_flags & P_DIRTY)) { + /* This page is no longer spilled */ + if (x == sl[0]) + sl[0]--; + else + sl[x] |= 1; + goto release; + } + /* Remove from dirty list */ + dl = txn->mt_u.dirty_list; + x = dl[0].mid--; + for (ix = dl[x]; ix.mptr != mp; ix = iy) { + if (x > 1) { + x--; + iy = dl[x]; + dl[x] = ix; + } else { + mdb_cassert(mc, x > 1); + j = ++(dl[0].mid); + dl[j] = ix; /* Unsorted. OK when MDB_TXN_ERROR. */ + txn->mt_flags |= MDB_TXN_ERROR; + return MDB_CORRUPTED; + } + } + txn->mt_dirty_room++; + if (!(env->me_flags & MDB_WRITEMAP)) + mdb_dpage_free(env, mp); +release: + /* Insert in me_pghead */ + mop = env->me_pghead; + j = mop[0] + ovpages; + for (i = mop[0]; i && mop[i] < pg; i--) + mop[j--] = mop[i]; + while (j>i) + mop[j--] = pg++; + mop[0] += ovpages; + } else { + rc = mdb_midl_append_range(&txn->mt_free_pgs, pg, ovpages); + if (rc) + return rc; + } + mc->mc_db->md_overflow_pages -= ovpages; + return 0; +} + +/** Return the data associated with a given node. + * @param[in] mc The cursor for this operation. + * @param[in] leaf The node being read. + * @param[out] data Updated to point to the node's data. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_node_read(MDB_cursor *mc, MDB_node *leaf, MDB_val *data) +{ + MDB_page *omp; /* overflow page */ + pgno_t pgno; + int rc; + + if (!F_ISSET(leaf->mn_flags, F_BIGDATA)) { + data->mv_size = NODEDSZ(leaf); + data->mv_data = NODEDATA(leaf); + return MDB_SUCCESS; + } + + /* Read overflow data. + */ + data->mv_size = NODEDSZ(leaf); + memcpy(&pgno, NODEDATA(leaf), sizeof(pgno)); + if ((rc = mdb_page_get(mc, pgno, &omp, NULL)) != 0) { + DPRINTF(("read overflow page %"Z"u failed", pgno)); + return rc; + } + data->mv_data = METADATA(omp); + + return MDB_SUCCESS; +} + +int +mdb_get(MDB_txn *txn, MDB_dbi dbi, + MDB_val *key, MDB_val *data) +{ + MDB_cursor mc; + MDB_xcursor mx; + int exact = 0; + DKBUF; + + DPRINTF(("===> get db %u key [%s]", dbi, DKEY(key))); + + if (!key || !data || !TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) + return EINVAL; + + if (txn->mt_flags & MDB_TXN_BLOCKED) + return MDB_BAD_TXN; + + mdb_cursor_init(&mc, txn, dbi, &mx); + return mdb_cursor_set(&mc, key, data, MDB_SET, &exact); +} + +/** Find a sibling for a page. + * Replaces the page at the top of the cursor's stack with the + * specified sibling, if one exists. + * @param[in] mc The cursor for this operation. + * @param[in] move_right Non-zero if the right sibling is requested, + * otherwise the left sibling. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_cursor_sibling(MDB_cursor *mc, int move_right) +{ + int rc; + MDB_node *indx; + MDB_page *mp; + + if (mc->mc_snum < 2) { + return MDB_NOTFOUND; /* root has no siblings */ + } + + mdb_cursor_pop(mc); + DPRINTF(("parent page is page %"Z"u, index %u", + mc->mc_pg[mc->mc_top]->mp_pgno, mc->mc_ki[mc->mc_top])); + + if (move_right ? (mc->mc_ki[mc->mc_top] + 1u >= NUMKEYS(mc->mc_pg[mc->mc_top])) + : (mc->mc_ki[mc->mc_top] == 0)) { + DPRINTF(("no more keys left, moving to %s sibling", + move_right ? "right" : "left")); + if ((rc = mdb_cursor_sibling(mc, move_right)) != MDB_SUCCESS) { + /* undo cursor_pop before returning */ + mc->mc_top++; + mc->mc_snum++; + return rc; + } + } else { + if (move_right) + mc->mc_ki[mc->mc_top]++; + else + mc->mc_ki[mc->mc_top]--; + DPRINTF(("just moving to %s index key %u", + move_right ? "right" : "left", mc->mc_ki[mc->mc_top])); + } + mdb_cassert(mc, IS_BRANCH(mc->mc_pg[mc->mc_top])); + + indx = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); + if ((rc = mdb_page_get(mc, NODEPGNO(indx), &mp, NULL)) != 0) { + /* mc will be inconsistent if caller does mc_snum++ as above */ + mc->mc_flags &= ~(C_INITIALIZED|C_EOF); + return rc; + } + + mdb_cursor_push(mc, mp); + if (!move_right) + mc->mc_ki[mc->mc_top] = NUMKEYS(mp)-1; + + return MDB_SUCCESS; +} + +/** Move the cursor to the next data item. */ +static int +mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op) +{ + MDB_page *mp; + MDB_node *leaf; + int rc; + + if ((mc->mc_flags & C_DEL && op == MDB_NEXT_DUP)) + return MDB_NOTFOUND; + + if (!(mc->mc_flags & C_INITIALIZED)) + return mdb_cursor_first(mc, key, data); + + mp = mc->mc_pg[mc->mc_top]; + + if (mc->mc_flags & C_EOF) { + if (mc->mc_ki[mc->mc_top] >= NUMKEYS(mp)-1) + return MDB_NOTFOUND; + mc->mc_flags ^= C_EOF; + } + + if (mc->mc_db->md_flags & MDB_DUPSORT) { + leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); + if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { + if (op == MDB_NEXT || op == MDB_NEXT_DUP) { + rc = mdb_cursor_next(&mc->mc_xcursor->mx_cursor, data, NULL, MDB_NEXT); + if (op != MDB_NEXT || rc != MDB_NOTFOUND) { + if (rc == MDB_SUCCESS) + MDB_GET_KEY(leaf, key); + return rc; + } + } + } else { + mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); + if (op == MDB_NEXT_DUP) + return MDB_NOTFOUND; + } + } + + DPRINTF(("cursor_next: top page is %"Z"u in cursor %p", + mdb_dbg_pgno(mp), (void *) mc)); + if (mc->mc_flags & C_DEL) { + mc->mc_flags ^= C_DEL; + goto skip; + } + + if (mc->mc_ki[mc->mc_top] + 1u >= NUMKEYS(mp)) { + DPUTS("=====> move to next sibling page"); + if ((rc = mdb_cursor_sibling(mc, 1)) != MDB_SUCCESS) { + mc->mc_flags |= C_EOF; + return rc; + } + mp = mc->mc_pg[mc->mc_top]; + DPRINTF(("next page is %"Z"u, key index %u", mp->mp_pgno, mc->mc_ki[mc->mc_top])); + } else + mc->mc_ki[mc->mc_top]++; + +skip: + DPRINTF(("==> cursor points to page %"Z"u with %u keys, key index %u", + mdb_dbg_pgno(mp), NUMKEYS(mp), mc->mc_ki[mc->mc_top])); + + if (IS_LEAF2(mp)) { + key->mv_size = mc->mc_db->md_pad; + key->mv_data = LEAF2KEY(mp, mc->mc_ki[mc->mc_top], key->mv_size); + return MDB_SUCCESS; + } + + mdb_cassert(mc, IS_LEAF(mp)); + leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); + + if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { + mdb_xcursor_init1(mc, leaf); + rc = mdb_cursor_first(&mc->mc_xcursor->mx_cursor, data, NULL); + if (rc != MDB_SUCCESS) + return rc; + } else if (data) { + if ((rc = mdb_node_read(mc, leaf, data)) != MDB_SUCCESS) + return rc; + } + + MDB_GET_KEY(leaf, key); + return MDB_SUCCESS; +} + +/** Move the cursor to the previous data item. */ +static int +mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op) +{ + MDB_page *mp; + MDB_node *leaf; + int rc; + + if (!(mc->mc_flags & C_INITIALIZED)) { + rc = mdb_cursor_last(mc, key, data); + if (rc) + return rc; + mc->mc_ki[mc->mc_top]++; + } + + mp = mc->mc_pg[mc->mc_top]; + + if ((mc->mc_db->md_flags & MDB_DUPSORT) && + mc->mc_ki[mc->mc_top] < NUMKEYS(mp)) { + leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); + if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { + if (op == MDB_PREV || op == MDB_PREV_DUP) { + rc = mdb_cursor_prev(&mc->mc_xcursor->mx_cursor, data, NULL, MDB_PREV); + if (op != MDB_PREV || rc != MDB_NOTFOUND) { + if (rc == MDB_SUCCESS) { + MDB_GET_KEY(leaf, key); + mc->mc_flags &= ~C_EOF; + } + return rc; + } + } + } else { + mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); + if (op == MDB_PREV_DUP) + return MDB_NOTFOUND; + } + } + + DPRINTF(("cursor_prev: top page is %"Z"u in cursor %p", + mdb_dbg_pgno(mp), (void *) mc)); + + mc->mc_flags &= ~(C_EOF|C_DEL); + + if (mc->mc_ki[mc->mc_top] == 0) { + DPUTS("=====> move to prev sibling page"); + if ((rc = mdb_cursor_sibling(mc, 0)) != MDB_SUCCESS) { + return rc; + } + mp = mc->mc_pg[mc->mc_top]; + mc->mc_ki[mc->mc_top] = NUMKEYS(mp) - 1; + DPRINTF(("prev page is %"Z"u, key index %u", mp->mp_pgno, mc->mc_ki[mc->mc_top])); + } else + mc->mc_ki[mc->mc_top]--; + + DPRINTF(("==> cursor points to page %"Z"u with %u keys, key index %u", + mdb_dbg_pgno(mp), NUMKEYS(mp), mc->mc_ki[mc->mc_top])); + + if (!IS_LEAF(mp)) + return MDB_CORRUPTED; + + if (IS_LEAF2(mp)) { + key->mv_size = mc->mc_db->md_pad; + key->mv_data = LEAF2KEY(mp, mc->mc_ki[mc->mc_top], key->mv_size); + return MDB_SUCCESS; + } + + leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); + + if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { + mdb_xcursor_init1(mc, leaf); + rc = mdb_cursor_last(&mc->mc_xcursor->mx_cursor, data, NULL); + if (rc != MDB_SUCCESS) + return rc; + } else if (data) { + if ((rc = mdb_node_read(mc, leaf, data)) != MDB_SUCCESS) + return rc; + } + + MDB_GET_KEY(leaf, key); + return MDB_SUCCESS; +} + +/** Set the cursor on a specific data item. */ +static int +mdb_cursor_set(MDB_cursor *mc, MDB_val *key, MDB_val *data, + MDB_cursor_op op, int *exactp) +{ + int rc; + MDB_page *mp; + MDB_node *leaf = NULL; + DKBUF; + + if (key->mv_size == 0) + return MDB_BAD_VALSIZE; + + if (mc->mc_xcursor) + mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); + + /* See if we're already on the right page */ + if (mc->mc_flags & C_INITIALIZED) { + MDB_val nodekey; + + mp = mc->mc_pg[mc->mc_top]; + if (!NUMKEYS(mp)) { + mc->mc_ki[mc->mc_top] = 0; + return MDB_NOTFOUND; + } + if (mp->mp_flags & P_LEAF2) { + nodekey.mv_size = mc->mc_db->md_pad; + nodekey.mv_data = LEAF2KEY(mp, 0, nodekey.mv_size); + } else { + leaf = NODEPTR(mp, 0); + MDB_GET_KEY2(leaf, nodekey); + } + rc = mc->mc_dbx->md_cmp(key, &nodekey); + if (rc == 0) { + /* Probably happens rarely, but first node on the page + * was the one we wanted. + */ + mc->mc_ki[mc->mc_top] = 0; + if (exactp) + *exactp = 1; + goto set1; + } + if (rc > 0) { + unsigned int i; + unsigned int nkeys = NUMKEYS(mp); + if (nkeys > 1) { + if (mp->mp_flags & P_LEAF2) { + nodekey.mv_data = LEAF2KEY(mp, + nkeys-1, nodekey.mv_size); + } else { + leaf = NODEPTR(mp, nkeys-1); + MDB_GET_KEY2(leaf, nodekey); + } + rc = mc->mc_dbx->md_cmp(key, &nodekey); + if (rc == 0) { + /* last node was the one we wanted */ + mc->mc_ki[mc->mc_top] = nkeys-1; + if (exactp) + *exactp = 1; + goto set1; + } + if (rc < 0) { + if (mc->mc_ki[mc->mc_top] < NUMKEYS(mp)) { + /* This is definitely the right page, skip search_page */ + if (mp->mp_flags & P_LEAF2) { + nodekey.mv_data = LEAF2KEY(mp, + mc->mc_ki[mc->mc_top], nodekey.mv_size); + } else { + leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); + MDB_GET_KEY2(leaf, nodekey); + } + rc = mc->mc_dbx->md_cmp(key, &nodekey); + if (rc == 0) { + /* current node was the one we wanted */ + if (exactp) + *exactp = 1; + goto set1; + } + } + rc = 0; + mc->mc_flags &= ~C_EOF; + goto set2; + } + } + /* If any parents have right-sibs, search. + * Otherwise, there's nothing further. + */ + for (i=0; imc_top; i++) + if (mc->mc_ki[i] < + NUMKEYS(mc->mc_pg[i])-1) + break; + if (i == mc->mc_top) { + /* There are no other pages */ + mc->mc_ki[mc->mc_top] = nkeys; + return MDB_NOTFOUND; + } + } + if (!mc->mc_top) { + /* There are no other pages */ + mc->mc_ki[mc->mc_top] = 0; + if (op == MDB_SET_RANGE && !exactp) { + rc = 0; + goto set1; + } else + return MDB_NOTFOUND; + } + } else { + mc->mc_pg[0] = 0; + } + + rc = mdb_page_search(mc, key, 0); + if (rc != MDB_SUCCESS) + return rc; + + mp = mc->mc_pg[mc->mc_top]; + mdb_cassert(mc, IS_LEAF(mp)); + +set2: + leaf = mdb_node_search(mc, key, exactp); + if (exactp != NULL && !*exactp) { + /* MDB_SET specified and not an exact match. */ + return MDB_NOTFOUND; + } + + if (leaf == NULL) { + DPUTS("===> inexact leaf not found, goto sibling"); + if ((rc = mdb_cursor_sibling(mc, 1)) != MDB_SUCCESS) { + mc->mc_flags |= C_EOF; + return rc; /* no entries matched */ + } + mp = mc->mc_pg[mc->mc_top]; + mdb_cassert(mc, IS_LEAF(mp)); + leaf = NODEPTR(mp, 0); + } + +set1: + mc->mc_flags |= C_INITIALIZED; + mc->mc_flags &= ~C_EOF; + + if (IS_LEAF2(mp)) { + if (op == MDB_SET_RANGE || op == MDB_SET_KEY) { + key->mv_size = mc->mc_db->md_pad; + key->mv_data = LEAF2KEY(mp, mc->mc_ki[mc->mc_top], key->mv_size); + } + return MDB_SUCCESS; + } + + if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { + mdb_xcursor_init1(mc, leaf); + if (op == MDB_SET || op == MDB_SET_KEY || op == MDB_SET_RANGE) { + rc = mdb_cursor_first(&mc->mc_xcursor->mx_cursor, data, NULL); + } else { + int ex2, *ex2p; + if (op == MDB_GET_BOTH) { + ex2p = &ex2; + ex2 = 0; + } else { + ex2p = NULL; + } + rc = mdb_cursor_set(&mc->mc_xcursor->mx_cursor, data, NULL, MDB_SET_RANGE, ex2p); + if (rc != MDB_SUCCESS) + return rc; + } + } else if (data) { + if (op == MDB_GET_BOTH || op == MDB_GET_BOTH_RANGE) { + MDB_val olddata; + MDB_cmp_func *dcmp; + if ((rc = mdb_node_read(mc, leaf, &olddata)) != MDB_SUCCESS) + return rc; + dcmp = mc->mc_dbx->md_dcmp; +#if UINT_MAX < SIZE_MAX + if (dcmp == mdb_cmp_int && olddata.mv_size == sizeof(size_t)) + dcmp = mdb_cmp_clong; +#endif + rc = dcmp(data, &olddata); + if (rc) { + if (op == MDB_GET_BOTH || rc > 0) + return MDB_NOTFOUND; + rc = 0; + } + *data = olddata; + + } else { + if (mc->mc_xcursor) + mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); + if ((rc = mdb_node_read(mc, leaf, data)) != MDB_SUCCESS) + return rc; + } + } + + /* The key already matches in all other cases */ + if (op == MDB_SET_RANGE || op == MDB_SET_KEY) + MDB_GET_KEY(leaf, key); + DPRINTF(("==> cursor placed on key [%s]", DKEY(key))); + + return rc; +} + +/** Move the cursor to the first item in the database. */ +static int +mdb_cursor_first(MDB_cursor *mc, MDB_val *key, MDB_val *data) +{ + int rc; + MDB_node *leaf; + + if (mc->mc_xcursor) + mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); + + if (!(mc->mc_flags & C_INITIALIZED) || mc->mc_top) { + rc = mdb_page_search(mc, NULL, MDB_PS_FIRST); + if (rc != MDB_SUCCESS) + return rc; + } + mdb_cassert(mc, IS_LEAF(mc->mc_pg[mc->mc_top])); + + leaf = NODEPTR(mc->mc_pg[mc->mc_top], 0); + mc->mc_flags |= C_INITIALIZED; + mc->mc_flags &= ~C_EOF; + + mc->mc_ki[mc->mc_top] = 0; + + if (IS_LEAF2(mc->mc_pg[mc->mc_top])) { + if ( key ) { + key->mv_size = mc->mc_db->md_pad; + key->mv_data = LEAF2KEY(mc->mc_pg[mc->mc_top], 0, key->mv_size); + } + return MDB_SUCCESS; + } + + if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { + mdb_xcursor_init1(mc, leaf); + rc = mdb_cursor_first(&mc->mc_xcursor->mx_cursor, data, NULL); + if (rc) + return rc; + } else if (data) { + if ((rc = mdb_node_read(mc, leaf, data)) != MDB_SUCCESS) + return rc; + } + + MDB_GET_KEY(leaf, key); + return MDB_SUCCESS; +} + +/** Move the cursor to the last item in the database. */ +static int +mdb_cursor_last(MDB_cursor *mc, MDB_val *key, MDB_val *data) +{ + int rc; + MDB_node *leaf; + + if (mc->mc_xcursor) + mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); + + if (!(mc->mc_flags & C_INITIALIZED) || mc->mc_top) { + rc = mdb_page_search(mc, NULL, MDB_PS_LAST); + if (rc != MDB_SUCCESS) + return rc; + } + mdb_cassert(mc, IS_LEAF(mc->mc_pg[mc->mc_top])); + + mc->mc_ki[mc->mc_top] = NUMKEYS(mc->mc_pg[mc->mc_top]) - 1; + mc->mc_flags |= C_INITIALIZED|C_EOF; + leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); + + if (IS_LEAF2(mc->mc_pg[mc->mc_top])) { + if (key) { + key->mv_size = mc->mc_db->md_pad; + key->mv_data = LEAF2KEY(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top], key->mv_size); + } + return MDB_SUCCESS; + } + + if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { + mdb_xcursor_init1(mc, leaf); + rc = mdb_cursor_last(&mc->mc_xcursor->mx_cursor, data, NULL); + if (rc) + return rc; + } else if (data) { + if ((rc = mdb_node_read(mc, leaf, data)) != MDB_SUCCESS) + return rc; + } + + MDB_GET_KEY(leaf, key); + return MDB_SUCCESS; +} + +int +mdb_cursor_get(MDB_cursor *mc, MDB_val *key, MDB_val *data, + MDB_cursor_op op) +{ + int rc; + int exact = 0; + int (*mfunc)(MDB_cursor *mc, MDB_val *key, MDB_val *data); + + if (mc == NULL) + return EINVAL; + + if (mc->mc_txn->mt_flags & MDB_TXN_BLOCKED) + return MDB_BAD_TXN; + + switch (op) { + case MDB_GET_CURRENT: + if (!(mc->mc_flags & C_INITIALIZED)) { + rc = EINVAL; + } else { + MDB_page *mp = mc->mc_pg[mc->mc_top]; + int nkeys = NUMKEYS(mp); + if (!nkeys || mc->mc_ki[mc->mc_top] >= nkeys) { + mc->mc_ki[mc->mc_top] = nkeys; + rc = MDB_NOTFOUND; + break; + } + rc = MDB_SUCCESS; + if (IS_LEAF2(mp)) { + key->mv_size = mc->mc_db->md_pad; + key->mv_data = LEAF2KEY(mp, mc->mc_ki[mc->mc_top], key->mv_size); + } else { + MDB_node *leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); + MDB_GET_KEY(leaf, key); + if (data) { + if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { + rc = mdb_cursor_get(&mc->mc_xcursor->mx_cursor, data, NULL, MDB_GET_CURRENT); + } else { + rc = mdb_node_read(mc, leaf, data); + } + } + } + } + break; + case MDB_GET_BOTH: + case MDB_GET_BOTH_RANGE: + if (data == NULL) { + rc = EINVAL; + break; + } + if (mc->mc_xcursor == NULL) { + rc = MDB_INCOMPATIBLE; + break; + } + /* FALLTHRU */ + case MDB_SET: + case MDB_SET_KEY: + case MDB_SET_RANGE: + if (key == NULL) { + rc = EINVAL; + } else { + rc = mdb_cursor_set(mc, key, data, op, + op == MDB_SET_RANGE ? NULL : &exact); + } + break; + case MDB_GET_MULTIPLE: + if (data == NULL || !(mc->mc_flags & C_INITIALIZED)) { + rc = EINVAL; + break; + } + if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) { + rc = MDB_INCOMPATIBLE; + break; + } + rc = MDB_SUCCESS; + if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) || + (mc->mc_xcursor->mx_cursor.mc_flags & C_EOF)) + break; + goto fetchm; + case MDB_NEXT_MULTIPLE: + if (data == NULL) { + rc = EINVAL; + break; + } + if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) { + rc = MDB_INCOMPATIBLE; + break; + } + rc = mdb_cursor_next(mc, key, data, MDB_NEXT_DUP); + if (rc == MDB_SUCCESS) { + if (mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) { + MDB_cursor *mx; +fetchm: + mx = &mc->mc_xcursor->mx_cursor; + data->mv_size = NUMKEYS(mx->mc_pg[mx->mc_top]) * + mx->mc_db->md_pad; + data->mv_data = METADATA(mx->mc_pg[mx->mc_top]); + mx->mc_ki[mx->mc_top] = NUMKEYS(mx->mc_pg[mx->mc_top])-1; + } else { + rc = MDB_NOTFOUND; + } + } + break; + case MDB_PREV_MULTIPLE: + if (data == NULL) { + rc = EINVAL; + break; + } + if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) { + rc = MDB_INCOMPATIBLE; + break; + } + if (!(mc->mc_flags & C_INITIALIZED)) + rc = mdb_cursor_last(mc, key, data); + else + rc = MDB_SUCCESS; + if (rc == MDB_SUCCESS) { + MDB_cursor *mx = &mc->mc_xcursor->mx_cursor; + if (mx->mc_flags & C_INITIALIZED) { + rc = mdb_cursor_sibling(mx, 0); + if (rc == MDB_SUCCESS) + goto fetchm; + } else { + rc = MDB_NOTFOUND; + } + } + break; + case MDB_NEXT: + case MDB_NEXT_DUP: + case MDB_NEXT_NODUP: + rc = mdb_cursor_next(mc, key, data, op); + break; + case MDB_PREV: + case MDB_PREV_DUP: + case MDB_PREV_NODUP: + rc = mdb_cursor_prev(mc, key, data, op); + break; + case MDB_FIRST: + rc = mdb_cursor_first(mc, key, data); + break; + case MDB_FIRST_DUP: + mfunc = mdb_cursor_first; + mmove: + if (data == NULL || !(mc->mc_flags & C_INITIALIZED)) { + rc = EINVAL; + break; + } + if (mc->mc_xcursor == NULL) { + rc = MDB_INCOMPATIBLE; + break; + } + if (mc->mc_ki[mc->mc_top] >= NUMKEYS(mc->mc_pg[mc->mc_top])) { + mc->mc_ki[mc->mc_top] = NUMKEYS(mc->mc_pg[mc->mc_top]); + rc = MDB_NOTFOUND; + break; + } + { + MDB_node *leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); + if (!F_ISSET(leaf->mn_flags, F_DUPDATA)) { + MDB_GET_KEY(leaf, key); + rc = mdb_node_read(mc, leaf, data); + break; + } + } + if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED)) { + rc = EINVAL; + break; + } + rc = mfunc(&mc->mc_xcursor->mx_cursor, data, NULL); + break; + case MDB_LAST: + rc = mdb_cursor_last(mc, key, data); + break; + case MDB_LAST_DUP: + mfunc = mdb_cursor_last; + goto mmove; + default: + DPRINTF(("unhandled/unimplemented cursor operation %u", op)); + rc = EINVAL; + break; + } + + if (mc->mc_flags & C_DEL) + mc->mc_flags ^= C_DEL; + + return rc; +} + +/** Touch all the pages in the cursor stack. Set mc_top. + * Makes sure all the pages are writable, before attempting a write operation. + * @param[in] mc The cursor to operate on. + */ +static int +mdb_cursor_touch(MDB_cursor *mc) +{ + int rc = MDB_SUCCESS; + + if (mc->mc_dbi >= CORE_DBS && !(*mc->mc_dbflag & (DB_DIRTY|DB_DUPDATA))) { + /* Touch DB record of named DB */ + MDB_cursor mc2; + MDB_xcursor mcx; + if (TXN_DBI_CHANGED(mc->mc_txn, mc->mc_dbi)) + return MDB_BAD_DBI; + mdb_cursor_init(&mc2, mc->mc_txn, MAIN_DBI, &mcx); + rc = mdb_page_search(&mc2, &mc->mc_dbx->md_name, MDB_PS_MODIFY); + if (rc) + return rc; + *mc->mc_dbflag |= DB_DIRTY; + } + mc->mc_top = 0; + if (mc->mc_snum) { + do { + rc = mdb_page_touch(mc); + } while (!rc && ++(mc->mc_top) < mc->mc_snum); + mc->mc_top = mc->mc_snum-1; + } + return rc; +} + +/** Do not spill pages to disk if txn is getting full, may fail instead */ +#define MDB_NOSPILL 0x8000 + +int +mdb_cursor_put(MDB_cursor *mc, MDB_val *key, MDB_val *data, + unsigned int flags) +{ + MDB_env *env; + MDB_node *leaf = NULL; + MDB_page *fp, *mp, *sub_root = NULL; + uint16_t fp_flags; + MDB_val xdata, *rdata, dkey, olddata; + MDB_db dummy; + int do_sub = 0, insert_key, insert_data; + unsigned int mcount = 0, dcount = 0, nospill; + size_t nsize; + int rc, rc2; + unsigned int nflags; + DKBUF; + + if (mc == NULL || key == NULL) + return EINVAL; + + env = mc->mc_txn->mt_env; + + /* Check this first so counter will always be zero on any + * early failures. + */ + if (flags & MDB_MULTIPLE) { + dcount = data[1].mv_size; + data[1].mv_size = 0; + if (!F_ISSET(mc->mc_db->md_flags, MDB_DUPFIXED)) + return MDB_INCOMPATIBLE; + } + + nospill = flags & MDB_NOSPILL; + flags &= ~MDB_NOSPILL; + + if (mc->mc_txn->mt_flags & (MDB_TXN_RDONLY|MDB_TXN_BLOCKED)) + return (mc->mc_txn->mt_flags & MDB_TXN_RDONLY) ? EACCES : MDB_BAD_TXN; + + if (key->mv_size-1 >= ENV_MAXKEY(env)) + return MDB_BAD_VALSIZE; + +#if SIZE_MAX > MAXDATASIZE + if (data->mv_size > ((mc->mc_db->md_flags & MDB_DUPSORT) ? ENV_MAXKEY(env) : MAXDATASIZE)) + return MDB_BAD_VALSIZE; +#else + if ((mc->mc_db->md_flags & MDB_DUPSORT) && data->mv_size > ENV_MAXKEY(env)) + return MDB_BAD_VALSIZE; +#endif + + DPRINTF(("==> put db %d key [%s], size %"Z"u, data size %"Z"u", + DDBI(mc), DKEY(key), key ? key->mv_size : 0, data->mv_size)); + + dkey.mv_size = 0; + + if (flags & MDB_CURRENT) { + if (!(mc->mc_flags & C_INITIALIZED)) + return EINVAL; + rc = MDB_SUCCESS; + } else if (mc->mc_db->md_root == P_INVALID) { + /* new database, cursor has nothing to point to */ + mc->mc_snum = 0; + mc->mc_top = 0; + mc->mc_flags &= ~C_INITIALIZED; + rc = MDB_NO_ROOT; + } else { + int exact = 0; + MDB_val d2; + if (flags & MDB_APPEND) { + MDB_val k2; + rc = mdb_cursor_last(mc, &k2, &d2); + if (rc == 0) { + rc = mc->mc_dbx->md_cmp(key, &k2); + if (rc > 0) { + rc = MDB_NOTFOUND; + mc->mc_ki[mc->mc_top]++; + } else { + /* new key is <= last key */ + rc = MDB_KEYEXIST; + } + } + } else { + rc = mdb_cursor_set(mc, key, &d2, MDB_SET, &exact); + } + if ((flags & MDB_NOOVERWRITE) && rc == 0) { + DPRINTF(("duplicate key [%s]", DKEY(key))); + *data = d2; + return MDB_KEYEXIST; + } + if (rc && rc != MDB_NOTFOUND) + return rc; + } + + if (mc->mc_flags & C_DEL) + mc->mc_flags ^= C_DEL; + + /* Cursor is positioned, check for room in the dirty list */ + if (!nospill) { + if (flags & MDB_MULTIPLE) { + rdata = &xdata; + xdata.mv_size = data->mv_size * dcount; + } else { + rdata = data; + } + if ((rc2 = mdb_page_spill(mc, key, rdata))) + return rc2; + } + + if (rc == MDB_NO_ROOT) { + MDB_page *np; + /* new database, write a root leaf page */ + DPUTS("allocating new root leaf page"); + if ((rc2 = mdb_page_new(mc, P_LEAF, 1, &np))) { + return rc2; + } + mdb_cursor_push(mc, np); + mc->mc_db->md_root = np->mp_pgno; + mc->mc_db->md_depth++; + *mc->mc_dbflag |= DB_DIRTY; + if ((mc->mc_db->md_flags & (MDB_DUPSORT|MDB_DUPFIXED)) + == MDB_DUPFIXED) + np->mp_flags |= P_LEAF2; + mc->mc_flags |= C_INITIALIZED; + } else { + /* make sure all cursor pages are writable */ + rc2 = mdb_cursor_touch(mc); + if (rc2) + return rc2; + } + + insert_key = insert_data = rc; + if (insert_key) { + /* The key does not exist */ + DPRINTF(("inserting key at index %i", mc->mc_ki[mc->mc_top])); + if ((mc->mc_db->md_flags & MDB_DUPSORT) && + LEAFSIZE(key, data) > env->me_nodemax) + { + /* Too big for a node, insert in sub-DB. Set up an empty + * "old sub-page" for prep_subDB to expand to a full page. + */ + fp_flags = P_LEAF|P_DIRTY; + fp = env->me_pbuf; + fp->mp_pad = data->mv_size; /* used if MDB_DUPFIXED */ + fp->mp_lower = fp->mp_upper = (PAGEHDRSZ-PAGEBASE); + olddata.mv_size = PAGEHDRSZ; + goto prep_subDB; + } + } else { + /* there's only a key anyway, so this is a no-op */ + if (IS_LEAF2(mc->mc_pg[mc->mc_top])) { + char *ptr; + unsigned int ksize = mc->mc_db->md_pad; + if (key->mv_size != ksize) + return MDB_BAD_VALSIZE; + ptr = LEAF2KEY(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top], ksize); + memcpy(ptr, key->mv_data, ksize); +fix_parent: + /* if overwriting slot 0 of leaf, need to + * update branch key if there is a parent page + */ + if (mc->mc_top && !mc->mc_ki[mc->mc_top]) { + unsigned short dtop = 1; + mc->mc_top--; + /* slot 0 is always an empty key, find real slot */ + while (mc->mc_top && !mc->mc_ki[mc->mc_top]) { + mc->mc_top--; + dtop++; + } + if (mc->mc_ki[mc->mc_top]) + rc2 = mdb_update_key(mc, key); + else + rc2 = MDB_SUCCESS; + mc->mc_top += dtop; + if (rc2) + return rc2; + } + return MDB_SUCCESS; + } + +more: + leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); + olddata.mv_size = NODEDSZ(leaf); + olddata.mv_data = NODEDATA(leaf); + + /* DB has dups? */ + if (F_ISSET(mc->mc_db->md_flags, MDB_DUPSORT)) { + /* Prepare (sub-)page/sub-DB to accept the new item, + * if needed. fp: old sub-page or a header faking + * it. mp: new (sub-)page. offset: growth in page + * size. xdata: node data with new page or DB. + */ + unsigned i, offset = 0; + mp = fp = xdata.mv_data = env->me_pbuf; + mp->mp_pgno = mc->mc_pg[mc->mc_top]->mp_pgno; + + /* Was a single item before, must convert now */ + if (!F_ISSET(leaf->mn_flags, F_DUPDATA)) { + MDB_cmp_func *dcmp; + /* Just overwrite the current item */ + if (flags == MDB_CURRENT) + goto current; + dcmp = mc->mc_dbx->md_dcmp; +#if UINT_MAX < SIZE_MAX + if (dcmp == mdb_cmp_int && olddata.mv_size == sizeof(size_t)) + dcmp = mdb_cmp_clong; +#endif + /* does data match? */ + if (!dcmp(data, &olddata)) { + if (flags & (MDB_NODUPDATA|MDB_APPENDDUP)) + return MDB_KEYEXIST; + /* overwrite it */ + goto current; + } + + /* Back up original data item */ + dkey.mv_size = olddata.mv_size; + dkey.mv_data = memcpy(fp+1, olddata.mv_data, olddata.mv_size); + + /* Make sub-page header for the dup items, with dummy body */ + fp->mp_flags = P_LEAF|P_DIRTY|P_SUBP; + fp->mp_lower = (PAGEHDRSZ-PAGEBASE); + xdata.mv_size = PAGEHDRSZ + dkey.mv_size + data->mv_size; + if (mc->mc_db->md_flags & MDB_DUPFIXED) { + fp->mp_flags |= P_LEAF2; + fp->mp_pad = data->mv_size; + xdata.mv_size += 2 * data->mv_size; /* leave space for 2 more */ + } else { + xdata.mv_size += 2 * (sizeof(indx_t) + NODESIZE) + + (dkey.mv_size & 1) + (data->mv_size & 1); + } + fp->mp_upper = xdata.mv_size - PAGEBASE; + olddata.mv_size = xdata.mv_size; /* pretend olddata is fp */ + } else if (leaf->mn_flags & F_SUBDATA) { + /* Data is on sub-DB, just store it */ + flags |= F_DUPDATA|F_SUBDATA; + goto put_sub; + } else { + /* Data is on sub-page */ + fp = olddata.mv_data; + switch (flags) { + default: + if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) { + offset = EVEN(NODESIZE + sizeof(indx_t) + + data->mv_size); + break; + } + offset = fp->mp_pad; + if (SIZELEFT(fp) < offset) { + offset *= 4; /* space for 4 more */ + break; + } + /* FALLTHRU */ /* Big enough MDB_DUPFIXED sub-page */ + case MDB_CURRENT: + fp->mp_flags |= P_DIRTY; + COPY_PGNO(fp->mp_pgno, mp->mp_pgno); + mc->mc_xcursor->mx_cursor.mc_pg[0] = fp; + flags |= F_DUPDATA; + goto put_sub; + } + xdata.mv_size = olddata.mv_size + offset; + } + + fp_flags = fp->mp_flags; + if (NODESIZE + NODEKSZ(leaf) + xdata.mv_size > env->me_nodemax) { + /* Too big for a sub-page, convert to sub-DB */ + fp_flags &= ~P_SUBP; +prep_subDB: + if (mc->mc_db->md_flags & MDB_DUPFIXED) { + fp_flags |= P_LEAF2; + dummy.md_pad = fp->mp_pad; + dummy.md_flags = MDB_DUPFIXED; + if (mc->mc_db->md_flags & MDB_INTEGERDUP) + dummy.md_flags |= MDB_INTEGERKEY; + } else { + dummy.md_pad = 0; + dummy.md_flags = 0; + } + dummy.md_depth = 1; + dummy.md_branch_pages = 0; + dummy.md_leaf_pages = 1; + dummy.md_overflow_pages = 0; + dummy.md_entries = NUMKEYS(fp); + xdata.mv_size = sizeof(MDB_db); + xdata.mv_data = &dummy; + if ((rc = mdb_page_alloc(mc, 1, &mp))) + return rc; + offset = env->me_psize - olddata.mv_size; + flags |= F_DUPDATA|F_SUBDATA; + dummy.md_root = mp->mp_pgno; + sub_root = mp; + } + if (mp != fp) { + mp->mp_flags = fp_flags | P_DIRTY; + mp->mp_pad = fp->mp_pad; + mp->mp_lower = fp->mp_lower; + mp->mp_upper = fp->mp_upper + offset; + if (fp_flags & P_LEAF2) { + memcpy(METADATA(mp), METADATA(fp), NUMKEYS(fp) * fp->mp_pad); + } else { + memcpy((char *)mp + mp->mp_upper + PAGEBASE, (char *)fp + fp->mp_upper + PAGEBASE, + olddata.mv_size - fp->mp_upper - PAGEBASE); + memcpy((char *)(&mp->mp_ptrs), (char *)(&fp->mp_ptrs), NUMKEYS(fp) * sizeof(mp->mp_ptrs[0])); + for (i=0; imp_ptrs[i] += offset; + } + } + + rdata = &xdata; + flags |= F_DUPDATA; + do_sub = 1; + if (!insert_key) + mdb_node_del(mc, 0); + goto new_sub; + } +current: + /* LMDB passes F_SUBDATA in 'flags' to write a DB record */ + if ((leaf->mn_flags ^ flags) & F_SUBDATA) + return MDB_INCOMPATIBLE; + /* overflow page overwrites need special handling */ + if (F_ISSET(leaf->mn_flags, F_BIGDATA)) { + MDB_page *omp; + pgno_t pg; + int level, ovpages, dpages = OVPAGES(data->mv_size, env->me_psize); + + memcpy(&pg, olddata.mv_data, sizeof(pg)); + if ((rc2 = mdb_page_get(mc, pg, &omp, &level)) != 0) + return rc2; + ovpages = omp->mp_pages; + + /* Is the ov page large enough? */ + if (ovpages >= dpages) { + if (!(omp->mp_flags & P_DIRTY) && + (level || (env->me_flags & MDB_WRITEMAP))) + { + rc = mdb_page_unspill(mc->mc_txn, omp, &omp); + if (rc) + return rc; + level = 0; /* dirty in this txn or clean */ + } + /* Is it dirty? */ + if (omp->mp_flags & P_DIRTY) { + /* yes, overwrite it. Note in this case we don't + * bother to try shrinking the page if the new data + * is smaller than the overflow threshold. + */ + if (level > 1) { + /* It is writable only in a parent txn */ + size_t sz = (size_t) env->me_psize * ovpages, off; + MDB_page *np = mdb_page_malloc(mc->mc_txn, ovpages); + MDB_ID2 id2; + if (!np) + return ENOMEM; + id2.mid = pg; + id2.mptr = np; + /* Note - this page is already counted in parent's dirty_room */ + rc2 = mdb_mid2l_insert(mc->mc_txn->mt_u.dirty_list, &id2); + mdb_cassert(mc, rc2 == 0); + /* Currently we make the page look as with put() in the + * parent txn, in case the user peeks at MDB_RESERVEd + * or unused parts. Some users treat ovpages specially. + */ + if (!(flags & MDB_RESERVE)) { + /* Skip the part where LMDB will put *data. + * Copy end of page, adjusting alignment so + * compiler may copy words instead of bytes. + */ + off = (PAGEHDRSZ + data->mv_size) & -sizeof(size_t); + memcpy((size_t *)((char *)np + off), + (size_t *)((char *)omp + off), sz - off); + sz = PAGEHDRSZ; + } + memcpy(np, omp, sz); /* Copy beginning of page */ + omp = np; + } + SETDSZ(leaf, data->mv_size); + if (F_ISSET(flags, MDB_RESERVE)) + data->mv_data = METADATA(omp); + else + memcpy(METADATA(omp), data->mv_data, data->mv_size); + return MDB_SUCCESS; + } + } + if ((rc2 = mdb_ovpage_free(mc, omp)) != MDB_SUCCESS) + return rc2; + } else if (data->mv_size == olddata.mv_size) { + /* same size, just replace it. Note that we could + * also reuse this node if the new data is smaller, + * but instead we opt to shrink the node in that case. + */ + if (F_ISSET(flags, MDB_RESERVE)) + data->mv_data = olddata.mv_data; + else if (!(mc->mc_flags & C_SUB)) + memcpy(olddata.mv_data, data->mv_data, data->mv_size); + else { + memcpy(NODEKEY(leaf), key->mv_data, key->mv_size); + goto fix_parent; + } + return MDB_SUCCESS; + } + mdb_node_del(mc, 0); + } + + rdata = data; + +new_sub: + nflags = flags & NODE_ADD_FLAGS; + nsize = IS_LEAF2(mc->mc_pg[mc->mc_top]) ? key->mv_size : mdb_leaf_size(env, key, rdata); + if (SIZELEFT(mc->mc_pg[mc->mc_top]) < nsize) { + if (( flags & (F_DUPDATA|F_SUBDATA)) == F_DUPDATA ) + nflags &= ~MDB_APPEND; /* sub-page may need room to grow */ + if (!insert_key) + nflags |= MDB_SPLIT_REPLACE; + rc = mdb_page_split(mc, key, rdata, P_INVALID, nflags); + } else { + /* There is room already in this leaf page. */ + rc = mdb_node_add(mc, mc->mc_ki[mc->mc_top], key, rdata, 0, nflags); + if (rc == 0) { + /* Adjust other cursors pointing to mp */ + MDB_cursor *m2, *m3; + MDB_dbi dbi = mc->mc_dbi; + unsigned i = mc->mc_top; + MDB_page *mp = mc->mc_pg[i]; + + for (m2 = mc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { + if (mc->mc_flags & C_SUB) + m3 = &m2->mc_xcursor->mx_cursor; + else + m3 = m2; + if (m3 == mc || m3->mc_snum < mc->mc_snum || m3->mc_pg[i] != mp) continue; + if (m3->mc_ki[i] >= mc->mc_ki[i] && insert_key) { + m3->mc_ki[i]++; + } + XCURSOR_REFRESH(m3, i, mp); + } + } + } + + if (rc == MDB_SUCCESS) { + /* Now store the actual data in the child DB. Note that we're + * storing the user data in the keys field, so there are strict + * size limits on dupdata. The actual data fields of the child + * DB are all zero size. + */ + if (do_sub) { + int xflags, new_dupdata; + size_t ecount; +put_sub: + xdata.mv_size = 0; + xdata.mv_data = ""; + leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); + if ((flags & (MDB_CURRENT|MDB_APPENDDUP)) == MDB_CURRENT) { + xflags = MDB_CURRENT|MDB_NOSPILL; + } else { + mdb_xcursor_init1(mc, leaf); + xflags = (flags & MDB_NODUPDATA) ? + MDB_NOOVERWRITE|MDB_NOSPILL : MDB_NOSPILL; + } + if (sub_root) + mc->mc_xcursor->mx_cursor.mc_pg[0] = sub_root; + new_dupdata = (int)dkey.mv_size; + /* converted, write the original data first */ + if (dkey.mv_size) { + rc = mdb_cursor_put(&mc->mc_xcursor->mx_cursor, &dkey, &xdata, xflags); + if (rc) + goto bad_sub; + /* we've done our job */ + dkey.mv_size = 0; + } + if (!(leaf->mn_flags & F_SUBDATA) || sub_root) { + /* Adjust other cursors pointing to mp */ + MDB_cursor *m2; + MDB_xcursor *mx = mc->mc_xcursor; + unsigned i = mc->mc_top; + MDB_page *mp = mc->mc_pg[i]; + + for (m2 = mc->mc_txn->mt_cursors[mc->mc_dbi]; m2; m2=m2->mc_next) { + if (m2 == mc || m2->mc_snum < mc->mc_snum) continue; + if (!(m2->mc_flags & C_INITIALIZED)) continue; + if (m2->mc_pg[i] == mp) { + if (m2->mc_ki[i] == mc->mc_ki[i]) { + mdb_xcursor_init2(m2, mx, new_dupdata); + } else if (!insert_key) { + XCURSOR_REFRESH(m2, i, mp); + } + } + } + } + ecount = mc->mc_xcursor->mx_db.md_entries; + if (flags & MDB_APPENDDUP) + xflags |= MDB_APPEND; + rc = mdb_cursor_put(&mc->mc_xcursor->mx_cursor, data, &xdata, xflags); + if (flags & F_SUBDATA) { + void *db = NODEDATA(leaf); + memcpy(db, &mc->mc_xcursor->mx_db, sizeof(MDB_db)); + } + insert_data = mc->mc_xcursor->mx_db.md_entries - ecount; + } + /* Increment count unless we just replaced an existing item. */ + if (insert_data) + mc->mc_db->md_entries++; + if (insert_key) { + /* Invalidate txn if we created an empty sub-DB */ + if (rc) + goto bad_sub; + /* If we succeeded and the key didn't exist before, + * make sure the cursor is marked valid. + */ + mc->mc_flags |= C_INITIALIZED; + } + if (flags & MDB_MULTIPLE) { + if (!rc) { + mcount++; + /* let caller know how many succeeded, if any */ + data[1].mv_size = mcount; + if (mcount < dcount) { + data[0].mv_data = (char *)data[0].mv_data + data[0].mv_size; + insert_key = insert_data = 0; + goto more; + } + } + } + return rc; +bad_sub: + if (rc == MDB_KEYEXIST) /* should not happen, we deleted that item */ + rc = MDB_CORRUPTED; + } + mc->mc_txn->mt_flags |= MDB_TXN_ERROR; + return rc; +} + +int +mdb_cursor_del(MDB_cursor *mc, unsigned int flags) +{ + MDB_node *leaf; + MDB_page *mp; + int rc; + + if (mc->mc_txn->mt_flags & (MDB_TXN_RDONLY|MDB_TXN_BLOCKED)) + return (mc->mc_txn->mt_flags & MDB_TXN_RDONLY) ? EACCES : MDB_BAD_TXN; + + if (!(mc->mc_flags & C_INITIALIZED)) + return EINVAL; + + if (mc->mc_ki[mc->mc_top] >= NUMKEYS(mc->mc_pg[mc->mc_top])) + return MDB_NOTFOUND; + + if (!(flags & MDB_NOSPILL) && (rc = mdb_page_spill(mc, NULL, NULL))) + return rc; + + rc = mdb_cursor_touch(mc); + if (rc) + return rc; + + mp = mc->mc_pg[mc->mc_top]; + if (!IS_LEAF(mp)) + return MDB_CORRUPTED; + if (IS_LEAF2(mp)) + goto del_key; + leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); + + if (F_ISSET(leaf->mn_flags, F_DUPDATA)) { + if (flags & MDB_NODUPDATA) { + /* mdb_cursor_del0() will subtract the final entry */ + mc->mc_db->md_entries -= mc->mc_xcursor->mx_db.md_entries - 1; + mc->mc_xcursor->mx_cursor.mc_flags &= ~C_INITIALIZED; + } else { + if (!F_ISSET(leaf->mn_flags, F_SUBDATA)) { + mc->mc_xcursor->mx_cursor.mc_pg[0] = NODEDATA(leaf); + } + rc = mdb_cursor_del(&mc->mc_xcursor->mx_cursor, MDB_NOSPILL); + if (rc) + return rc; + /* If sub-DB still has entries, we're done */ + if (mc->mc_xcursor->mx_db.md_entries) { + if (leaf->mn_flags & F_SUBDATA) { + /* update subDB info */ + void *db = NODEDATA(leaf); + memcpy(db, &mc->mc_xcursor->mx_db, sizeof(MDB_db)); + } else { + MDB_cursor *m2; + /* shrink fake page */ + mdb_node_shrink(mp, mc->mc_ki[mc->mc_top]); + leaf = NODEPTR(mp, mc->mc_ki[mc->mc_top]); + mc->mc_xcursor->mx_cursor.mc_pg[0] = NODEDATA(leaf); + /* fix other sub-DB cursors pointed at fake pages on this page */ + for (m2 = mc->mc_txn->mt_cursors[mc->mc_dbi]; m2; m2=m2->mc_next) { + if (m2 == mc || m2->mc_snum < mc->mc_snum) continue; + if (!(m2->mc_flags & C_INITIALIZED)) continue; + if (m2->mc_pg[mc->mc_top] == mp) { + XCURSOR_REFRESH(m2, mc->mc_top, mp); + } + } + } + mc->mc_db->md_entries--; + return rc; + } else { + mc->mc_xcursor->mx_cursor.mc_flags &= ~C_INITIALIZED; + } + /* otherwise fall thru and delete the sub-DB */ + } + + if (leaf->mn_flags & F_SUBDATA) { + /* add all the child DB's pages to the free list */ + rc = mdb_drop0(&mc->mc_xcursor->mx_cursor, 0); + if (rc) + goto fail; + } + } + /* LMDB passes F_SUBDATA in 'flags' to delete a DB record */ + else if ((leaf->mn_flags ^ flags) & F_SUBDATA) { + rc = MDB_INCOMPATIBLE; + goto fail; + } + + /* add overflow pages to free list */ + if (F_ISSET(leaf->mn_flags, F_BIGDATA)) { + MDB_page *omp; + pgno_t pg; + + memcpy(&pg, NODEDATA(leaf), sizeof(pg)); + if ((rc = mdb_page_get(mc, pg, &omp, NULL)) || + (rc = mdb_ovpage_free(mc, omp))) + goto fail; + } + +del_key: + return mdb_cursor_del0(mc); + +fail: + mc->mc_txn->mt_flags |= MDB_TXN_ERROR; + return rc; +} + +/** Allocate and initialize new pages for a database. + * Set #MDB_TXN_ERROR on failure. + * @param[in] mc a cursor on the database being added to. + * @param[in] flags flags defining what type of page is being allocated. + * @param[in] num the number of pages to allocate. This is usually 1, + * unless allocating overflow pages for a large record. + * @param[out] mp Address of a page, or NULL on failure. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_page_new(MDB_cursor *mc, uint32_t flags, int num, MDB_page **mp) +{ + MDB_page *np; + int rc; + + if ((rc = mdb_page_alloc(mc, num, &np))) + return rc; + DPRINTF(("allocated new mpage %"Z"u, page size %u", + np->mp_pgno, mc->mc_txn->mt_env->me_psize)); + np->mp_flags = flags | P_DIRTY; + np->mp_lower = (PAGEHDRSZ-PAGEBASE); + np->mp_upper = mc->mc_txn->mt_env->me_psize - PAGEBASE; + + if (IS_BRANCH(np)) + mc->mc_db->md_branch_pages++; + else if (IS_LEAF(np)) + mc->mc_db->md_leaf_pages++; + else if (IS_OVERFLOW(np)) { + mc->mc_db->md_overflow_pages += num; + np->mp_pages = num; + } + *mp = np; + + return 0; +} + +/** Calculate the size of a leaf node. + * The size depends on the environment's page size; if a data item + * is too large it will be put onto an overflow page and the node + * size will only include the key and not the data. Sizes are always + * rounded up to an even number of bytes, to guarantee 2-byte alignment + * of the #MDB_node headers. + * @param[in] env The environment handle. + * @param[in] key The key for the node. + * @param[in] data The data for the node. + * @return The number of bytes needed to store the node. + */ +static size_t +mdb_leaf_size(MDB_env *env, MDB_val *key, MDB_val *data) +{ + size_t sz; + + sz = LEAFSIZE(key, data); + if (sz > env->me_nodemax) { + /* put on overflow page */ + sz -= data->mv_size - sizeof(pgno_t); + } + + return EVEN(sz + sizeof(indx_t)); +} + +/** Calculate the size of a branch node. + * The size should depend on the environment's page size but since + * we currently don't support spilling large keys onto overflow + * pages, it's simply the size of the #MDB_node header plus the + * size of the key. Sizes are always rounded up to an even number + * of bytes, to guarantee 2-byte alignment of the #MDB_node headers. + * @param[in] env The environment handle. + * @param[in] key The key for the node. + * @return The number of bytes needed to store the node. + */ +static size_t +mdb_branch_size(MDB_env *env, MDB_val *key) +{ + size_t sz; + + sz = INDXSIZE(key); + if (sz > env->me_nodemax) { + /* put on overflow page */ + /* not implemented */ + /* sz -= key->size - sizeof(pgno_t); */ + } + + return sz + sizeof(indx_t); +} + +/** Add a node to the page pointed to by the cursor. + * Set #MDB_TXN_ERROR on failure. + * @param[in] mc The cursor for this operation. + * @param[in] indx The index on the page where the new node should be added. + * @param[in] key The key for the new node. + * @param[in] data The data for the new node, if any. + * @param[in] pgno The page number, if adding a branch node. + * @param[in] flags Flags for the node. + * @return 0 on success, non-zero on failure. Possible errors are: + *
    + *
  • ENOMEM - failed to allocate overflow pages for the node. + *
  • MDB_PAGE_FULL - there is insufficient room in the page. This error + * should never happen since all callers already calculate the + * page's free space before calling this function. + *
+ */ +static int +mdb_node_add(MDB_cursor *mc, indx_t indx, + MDB_val *key, MDB_val *data, pgno_t pgno, unsigned int flags) +{ + unsigned int i; + size_t node_size = NODESIZE; + ssize_t room; + indx_t ofs; + MDB_node *node; + MDB_page *mp = mc->mc_pg[mc->mc_top]; + MDB_page *ofp = NULL; /* overflow page */ + void *ndata; + DKBUF; + + mdb_cassert(mc, mp->mp_upper >= mp->mp_lower); + + DPRINTF(("add to %s %spage %"Z"u index %i, data size %"Z"u key size %"Z"u [%s]", + IS_LEAF(mp) ? "leaf" : "branch", + IS_SUBP(mp) ? "sub-" : "", + mdb_dbg_pgno(mp), indx, data ? data->mv_size : 0, + key ? key->mv_size : 0, key ? DKEY(key) : "null")); + + if (IS_LEAF2(mp)) { + /* Move higher keys up one slot. */ + int ksize = mc->mc_db->md_pad, dif; + char *ptr = LEAF2KEY(mp, indx, ksize); + dif = NUMKEYS(mp) - indx; + if (dif > 0) + memmove(ptr+ksize, ptr, dif*ksize); + /* insert new key */ + memcpy(ptr, key->mv_data, ksize); + + /* Just using these for counting */ + mp->mp_lower += sizeof(indx_t); + mp->mp_upper -= ksize - sizeof(indx_t); + return MDB_SUCCESS; + } + + room = (ssize_t)SIZELEFT(mp) - (ssize_t)sizeof(indx_t); + if (key != NULL) + node_size += key->mv_size; + if (IS_LEAF(mp)) { + mdb_cassert(mc, key && data); + if (F_ISSET(flags, F_BIGDATA)) { + /* Data already on overflow page. */ + node_size += sizeof(pgno_t); + } else if (node_size + data->mv_size > mc->mc_txn->mt_env->me_nodemax) { + int ovpages = OVPAGES(data->mv_size, mc->mc_txn->mt_env->me_psize); + int rc; + /* Put data on overflow page. */ + DPRINTF(("data size is %"Z"u, node would be %"Z"u, put data on overflow page", + data->mv_size, node_size+data->mv_size)); + node_size = EVEN(node_size + sizeof(pgno_t)); + if ((ssize_t)node_size > room) + goto full; + if ((rc = mdb_page_new(mc, P_OVERFLOW, ovpages, &ofp))) + return rc; + DPRINTF(("allocated overflow page %"Z"u", ofp->mp_pgno)); + flags |= F_BIGDATA; + goto update; + } else { + node_size += data->mv_size; + } + } + node_size = EVEN(node_size); + if ((ssize_t)node_size > room) + goto full; + +update: + /* Move higher pointers up one slot. */ + for (i = NUMKEYS(mp); i > indx; i--) + mp->mp_ptrs[i] = mp->mp_ptrs[i - 1]; + + /* Adjust free space offsets. */ + ofs = mp->mp_upper - node_size; + mdb_cassert(mc, ofs >= mp->mp_lower + sizeof(indx_t)); + mp->mp_ptrs[indx] = ofs; + mp->mp_upper = ofs; + mp->mp_lower += sizeof(indx_t); + + /* Write the node data. */ + node = NODEPTR(mp, indx); + node->mn_ksize = (key == NULL) ? 0 : key->mv_size; + node->mn_flags = flags; + if (IS_LEAF(mp)) + SETDSZ(node,data->mv_size); + else + SETPGNO(node,pgno); + + if (key) + memcpy(NODEKEY(node), key->mv_data, key->mv_size); + + if (IS_LEAF(mp)) { + ndata = NODEDATA(node); + if (ofp == NULL) { + if (F_ISSET(flags, F_BIGDATA)) + memcpy(ndata, data->mv_data, sizeof(pgno_t)); + else if (F_ISSET(flags, MDB_RESERVE)) + data->mv_data = ndata; + else + memcpy(ndata, data->mv_data, data->mv_size); + } else { + memcpy(ndata, &ofp->mp_pgno, sizeof(pgno_t)); + ndata = METADATA(ofp); + if (F_ISSET(flags, MDB_RESERVE)) + data->mv_data = ndata; + else + memcpy(ndata, data->mv_data, data->mv_size); + } + } + + return MDB_SUCCESS; + +full: + DPRINTF(("not enough room in page %"Z"u, got %u ptrs", + mdb_dbg_pgno(mp), NUMKEYS(mp))); + DPRINTF(("upper-lower = %u - %u = %"Z"d", mp->mp_upper,mp->mp_lower,room)); + DPRINTF(("node size = %"Z"u", node_size)); + mc->mc_txn->mt_flags |= MDB_TXN_ERROR; + return MDB_PAGE_FULL; +} + +/** Delete the specified node from a page. + * @param[in] mc Cursor pointing to the node to delete. + * @param[in] ksize The size of a node. Only used if the page is + * part of a #MDB_DUPFIXED database. + */ +static void +mdb_node_del(MDB_cursor *mc, int ksize) +{ + MDB_page *mp = mc->mc_pg[mc->mc_top]; + indx_t indx = mc->mc_ki[mc->mc_top]; + unsigned int sz; + indx_t i, j, numkeys, ptr; + MDB_node *node; + char *base; + + DPRINTF(("delete node %u on %s page %"Z"u", indx, + IS_LEAF(mp) ? "leaf" : "branch", mdb_dbg_pgno(mp))); + numkeys = NUMKEYS(mp); + mdb_cassert(mc, indx < numkeys); + + if (IS_LEAF2(mp)) { + int x = numkeys - 1 - indx; + base = LEAF2KEY(mp, indx, ksize); + if (x) + memmove(base, base + ksize, x * ksize); + mp->mp_lower -= sizeof(indx_t); + mp->mp_upper += ksize - sizeof(indx_t); + return; + } + + node = NODEPTR(mp, indx); + sz = NODESIZE + node->mn_ksize; + if (IS_LEAF(mp)) { + if (F_ISSET(node->mn_flags, F_BIGDATA)) + sz += sizeof(pgno_t); + else + sz += NODEDSZ(node); + } + sz = EVEN(sz); + + ptr = mp->mp_ptrs[indx]; + for (i = j = 0; i < numkeys; i++) { + if (i != indx) { + mp->mp_ptrs[j] = mp->mp_ptrs[i]; + if (mp->mp_ptrs[i] < ptr) + mp->mp_ptrs[j] += sz; + j++; + } + } + + base = (char *)mp + mp->mp_upper + PAGEBASE; + memmove(base + sz, base, ptr - mp->mp_upper); + + mp->mp_lower -= sizeof(indx_t); + mp->mp_upper += sz; +} + +/** Compact the main page after deleting a node on a subpage. + * @param[in] mp The main page to operate on. + * @param[in] indx The index of the subpage on the main page. + */ +static void +mdb_node_shrink(MDB_page *mp, indx_t indx) +{ + MDB_node *node; + MDB_page *sp, *xp; + char *base; + indx_t delta, nsize, len, ptr; + int i; + + node = NODEPTR(mp, indx); + sp = (MDB_page *)NODEDATA(node); + delta = SIZELEFT(sp); + nsize = NODEDSZ(node) - delta; + + /* Prepare to shift upward, set len = length(subpage part to shift) */ + if (IS_LEAF2(sp)) { + len = nsize; + if (nsize & 1) + return; /* do not make the node uneven-sized */ + } else { + xp = (MDB_page *)((char *)sp + delta); /* destination subpage */ + for (i = NUMKEYS(sp); --i >= 0; ) + xp->mp_ptrs[i] = sp->mp_ptrs[i] - delta; + len = PAGEHDRSZ; + } + sp->mp_upper = sp->mp_lower; + COPY_PGNO(sp->mp_pgno, mp->mp_pgno); + SETDSZ(node, nsize); + + /* Shift upward */ + base = (char *)mp + mp->mp_upper + PAGEBASE; + memmove(base + delta, base, (char *)sp + len - base); + + ptr = mp->mp_ptrs[indx]; + for (i = NUMKEYS(mp); --i >= 0; ) { + if (mp->mp_ptrs[i] <= ptr) + mp->mp_ptrs[i] += delta; + } + mp->mp_upper += delta; +} + +/** Initial setup of a sorted-dups cursor. + * Sorted duplicates are implemented as a sub-database for the given key. + * The duplicate data items are actually keys of the sub-database. + * Operations on the duplicate data items are performed using a sub-cursor + * initialized when the sub-database is first accessed. This function does + * the preliminary setup of the sub-cursor, filling in the fields that + * depend only on the parent DB. + * @param[in] mc The main cursor whose sorted-dups cursor is to be initialized. + */ +static void +mdb_xcursor_init0(MDB_cursor *mc) +{ + MDB_xcursor *mx = mc->mc_xcursor; + + mx->mx_cursor.mc_xcursor = NULL; + mx->mx_cursor.mc_txn = mc->mc_txn; + mx->mx_cursor.mc_db = &mx->mx_db; + mx->mx_cursor.mc_dbx = &mx->mx_dbx; + mx->mx_cursor.mc_dbi = mc->mc_dbi; + mx->mx_cursor.mc_dbflag = &mx->mx_dbflag; + mx->mx_cursor.mc_snum = 0; + mx->mx_cursor.mc_top = 0; + mx->mx_cursor.mc_flags = C_SUB; + mx->mx_dbx.md_name.mv_size = 0; + mx->mx_dbx.md_name.mv_data = NULL; + mx->mx_dbx.md_cmp = mc->mc_dbx->md_dcmp; + mx->mx_dbx.md_dcmp = NULL; + mx->mx_dbx.md_rel = mc->mc_dbx->md_rel; +} + +/** Final setup of a sorted-dups cursor. + * Sets up the fields that depend on the data from the main cursor. + * @param[in] mc The main cursor whose sorted-dups cursor is to be initialized. + * @param[in] node The data containing the #MDB_db record for the + * sorted-dup database. + */ +static void +mdb_xcursor_init1(MDB_cursor *mc, MDB_node *node) +{ + MDB_xcursor *mx = mc->mc_xcursor; + + if (node->mn_flags & F_SUBDATA) { + memcpy(&mx->mx_db, NODEDATA(node), sizeof(MDB_db)); + mx->mx_cursor.mc_pg[0] = 0; + mx->mx_cursor.mc_snum = 0; + mx->mx_cursor.mc_top = 0; + mx->mx_cursor.mc_flags = C_SUB; + } else { + MDB_page *fp = NODEDATA(node); + mx->mx_db.md_pad = 0; + mx->mx_db.md_flags = 0; + mx->mx_db.md_depth = 1; + mx->mx_db.md_branch_pages = 0; + mx->mx_db.md_leaf_pages = 1; + mx->mx_db.md_overflow_pages = 0; + mx->mx_db.md_entries = NUMKEYS(fp); + COPY_PGNO(mx->mx_db.md_root, fp->mp_pgno); + mx->mx_cursor.mc_snum = 1; + mx->mx_cursor.mc_top = 0; + mx->mx_cursor.mc_flags = C_INITIALIZED|C_SUB; + mx->mx_cursor.mc_pg[0] = fp; + mx->mx_cursor.mc_ki[0] = 0; + if (mc->mc_db->md_flags & MDB_DUPFIXED) { + mx->mx_db.md_flags = MDB_DUPFIXED; + mx->mx_db.md_pad = fp->mp_pad; + if (mc->mc_db->md_flags & MDB_INTEGERDUP) + mx->mx_db.md_flags |= MDB_INTEGERKEY; + } + } + DPRINTF(("Sub-db -%u root page %"Z"u", mx->mx_cursor.mc_dbi, + mx->mx_db.md_root)); + mx->mx_dbflag = DB_VALID|DB_USRVALID|DB_DUPDATA; +#if UINT_MAX < SIZE_MAX + if (mx->mx_dbx.md_cmp == mdb_cmp_int && mx->mx_db.md_pad == sizeof(size_t)) + mx->mx_dbx.md_cmp = mdb_cmp_clong; +#endif +} + + +/** Fixup a sorted-dups cursor due to underlying update. + * Sets up some fields that depend on the data from the main cursor. + * Almost the same as init1, but skips initialization steps if the + * xcursor had already been used. + * @param[in] mc The main cursor whose sorted-dups cursor is to be fixed up. + * @param[in] src_mx The xcursor of an up-to-date cursor. + * @param[in] new_dupdata True if converting from a non-#F_DUPDATA item. + */ +static void +mdb_xcursor_init2(MDB_cursor *mc, MDB_xcursor *src_mx, int new_dupdata) +{ + MDB_xcursor *mx = mc->mc_xcursor; + + if (new_dupdata) { + mx->mx_cursor.mc_snum = 1; + mx->mx_cursor.mc_top = 0; + mx->mx_cursor.mc_flags |= C_INITIALIZED; + mx->mx_cursor.mc_ki[0] = 0; + mx->mx_dbflag = DB_VALID|DB_USRVALID|DB_DUPDATA; +#if UINT_MAX < SIZE_MAX + mx->mx_dbx.md_cmp = src_mx->mx_dbx.md_cmp; +#endif + } else if (!(mx->mx_cursor.mc_flags & C_INITIALIZED)) { + return; + } + mx->mx_db = src_mx->mx_db; + mx->mx_cursor.mc_pg[0] = src_mx->mx_cursor.mc_pg[0]; + DPRINTF(("Sub-db -%u root page %"Z"u", mx->mx_cursor.mc_dbi, + mx->mx_db.md_root)); +} + +/** Initialize a cursor for a given transaction and database. */ +static void +mdb_cursor_init(MDB_cursor *mc, MDB_txn *txn, MDB_dbi dbi, MDB_xcursor *mx) +{ + mc->mc_next = NULL; + mc->mc_backup = NULL; + mc->mc_dbi = dbi; + mc->mc_txn = txn; + mc->mc_db = &txn->mt_dbs[dbi]; + mc->mc_dbx = &txn->mt_dbxs[dbi]; + mc->mc_dbflag = &txn->mt_dbflags[dbi]; + mc->mc_snum = 0; + mc->mc_top = 0; + mc->mc_pg[0] = 0; + mc->mc_ki[0] = 0; + mc->mc_flags = 0; + if (txn->mt_dbs[dbi].md_flags & MDB_DUPSORT) { + mdb_tassert(txn, mx != NULL); + mc->mc_xcursor = mx; + mdb_xcursor_init0(mc); + } else { + mc->mc_xcursor = NULL; + } + if (*mc->mc_dbflag & DB_STALE) { + mdb_page_search(mc, NULL, MDB_PS_ROOTONLY); + } +} + +int +mdb_cursor_open(MDB_txn *txn, MDB_dbi dbi, MDB_cursor **ret) +{ + MDB_cursor *mc; + size_t size = sizeof(MDB_cursor); + + if (!ret || !TXN_DBI_EXIST(txn, dbi, DB_VALID)) + return EINVAL; + + if (txn->mt_flags & MDB_TXN_BLOCKED) + return MDB_BAD_TXN; + + if (dbi == FREE_DBI && !F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) + return EINVAL; + + if (txn->mt_dbs[dbi].md_flags & MDB_DUPSORT) + size += sizeof(MDB_xcursor); + + if ((mc = malloc(size)) != NULL) { + mdb_cursor_init(mc, txn, dbi, (MDB_xcursor *)(mc + 1)); + if (txn->mt_cursors) { + mc->mc_next = txn->mt_cursors[dbi]; + txn->mt_cursors[dbi] = mc; + mc->mc_flags |= C_UNTRACK; + } + } else { + return ENOMEM; + } + + *ret = mc; + + return MDB_SUCCESS; +} + +int +mdb_cursor_renew(MDB_txn *txn, MDB_cursor *mc) +{ + if (!mc || !TXN_DBI_EXIST(txn, mc->mc_dbi, DB_VALID)) + return EINVAL; + + if ((mc->mc_flags & C_UNTRACK) || txn->mt_cursors) + return EINVAL; + + if (txn->mt_flags & MDB_TXN_BLOCKED) + return MDB_BAD_TXN; + + mdb_cursor_init(mc, txn, mc->mc_dbi, mc->mc_xcursor); + return MDB_SUCCESS; +} + +/* Return the count of duplicate data items for the current key */ +int +mdb_cursor_count(MDB_cursor *mc, size_t *countp) +{ + MDB_node *leaf; + + if (mc == NULL || countp == NULL) + return EINVAL; + + if (mc->mc_xcursor == NULL) + return MDB_INCOMPATIBLE; + + if (mc->mc_txn->mt_flags & MDB_TXN_BLOCKED) + return MDB_BAD_TXN; + + if (!(mc->mc_flags & C_INITIALIZED)) + return EINVAL; + + if (!mc->mc_snum) + return MDB_NOTFOUND; + + if (mc->mc_flags & C_EOF) { + if (mc->mc_ki[mc->mc_top] >= NUMKEYS(mc->mc_pg[mc->mc_top])) + return MDB_NOTFOUND; + mc->mc_flags ^= C_EOF; + } + + leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); + if (!F_ISSET(leaf->mn_flags, F_DUPDATA)) { + *countp = 1; + } else { + if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED)) + return EINVAL; + + *countp = mc->mc_xcursor->mx_db.md_entries; + } + return MDB_SUCCESS; +} + +void +mdb_cursor_close(MDB_cursor *mc) +{ + if (mc && !mc->mc_backup) { + /* remove from txn, if tracked */ + if ((mc->mc_flags & C_UNTRACK) && mc->mc_txn->mt_cursors) { + MDB_cursor **prev = &mc->mc_txn->mt_cursors[mc->mc_dbi]; + while (*prev && *prev != mc) prev = &(*prev)->mc_next; + if (*prev == mc) + *prev = mc->mc_next; + } + free(mc); + } +} + +MDB_txn * +mdb_cursor_txn(MDB_cursor *mc) +{ + if (!mc) return NULL; + return mc->mc_txn; +} + +MDB_dbi +mdb_cursor_dbi(MDB_cursor *mc) +{ + return mc->mc_dbi; +} + +/** Replace the key for a branch node with a new key. + * Set #MDB_TXN_ERROR on failure. + * @param[in] mc Cursor pointing to the node to operate on. + * @param[in] key The new key to use. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_update_key(MDB_cursor *mc, MDB_val *key) +{ + MDB_page *mp; + MDB_node *node; + char *base; + size_t len; + int delta, ksize, oksize; + indx_t ptr, i, numkeys, indx; + DKBUF; + + indx = mc->mc_ki[mc->mc_top]; + mp = mc->mc_pg[mc->mc_top]; + node = NODEPTR(mp, indx); + ptr = mp->mp_ptrs[indx]; +#if MDB_DEBUG + { + MDB_val k2; + char kbuf2[DKBUF_MAXKEYSIZE*2+1]; + k2.mv_data = NODEKEY(node); + k2.mv_size = node->mn_ksize; + DPRINTF(("update key %u (ofs %u) [%s] to [%s] on page %"Z"u", + indx, ptr, + mdb_dkey(&k2, kbuf2), + DKEY(key), + mp->mp_pgno)); + } +#endif + + /* Sizes must be 2-byte aligned. */ + ksize = EVEN(key->mv_size); + oksize = EVEN(node->mn_ksize); + delta = ksize - oksize; + + /* Shift node contents if EVEN(key length) changed. */ + if (delta) { + if (delta > 0 && SIZELEFT(mp) < delta) { + pgno_t pgno; + /* not enough space left, do a delete and split */ + DPRINTF(("Not enough room, delta = %d, splitting...", delta)); + pgno = NODEPGNO(node); + mdb_node_del(mc, 0); + return mdb_page_split(mc, key, NULL, pgno, MDB_SPLIT_REPLACE); + } + + numkeys = NUMKEYS(mp); + for (i = 0; i < numkeys; i++) { + if (mp->mp_ptrs[i] <= ptr) + mp->mp_ptrs[i] -= delta; + } + + base = (char *)mp + mp->mp_upper + PAGEBASE; + len = ptr - mp->mp_upper + NODESIZE; + memmove(base - delta, base, len); + mp->mp_upper -= delta; + + node = NODEPTR(mp, indx); + } + + /* But even if no shift was needed, update ksize */ + if (node->mn_ksize != key->mv_size) + node->mn_ksize = key->mv_size; + + if (key->mv_size) + memcpy(NODEKEY(node), key->mv_data, key->mv_size); + + return MDB_SUCCESS; +} + +static void +mdb_cursor_copy(const MDB_cursor *csrc, MDB_cursor *cdst); + +/** Perform \b act while tracking temporary cursor \b mn */ +#define WITH_CURSOR_TRACKING(mn, act) do { \ + MDB_cursor dummy, *tracked, **tp = &(mn).mc_txn->mt_cursors[mn.mc_dbi]; \ + if ((mn).mc_flags & C_SUB) { \ + dummy.mc_flags = C_INITIALIZED; \ + dummy.mc_xcursor = (MDB_xcursor *)&(mn); \ + tracked = &dummy; \ + } else { \ + tracked = &(mn); \ + } \ + tracked->mc_next = *tp; \ + *tp = tracked; \ + { act; } \ + *tp = tracked->mc_next; \ +} while (0) + +/** Move a node from csrc to cdst. + */ +static int +mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst, int fromleft) +{ + MDB_node *srcnode; + MDB_val key, data; + pgno_t srcpg; + MDB_cursor mn; + int rc; + unsigned short flags; + + DKBUF; + + /* Mark src and dst as dirty. */ + if ((rc = mdb_page_touch(csrc)) || + (rc = mdb_page_touch(cdst))) + return rc; + + if (IS_LEAF2(csrc->mc_pg[csrc->mc_top])) { + key.mv_size = csrc->mc_db->md_pad; + key.mv_data = LEAF2KEY(csrc->mc_pg[csrc->mc_top], csrc->mc_ki[csrc->mc_top], key.mv_size); + data.mv_size = 0; + data.mv_data = NULL; + srcpg = 0; + flags = 0; + } else { + srcnode = NODEPTR(csrc->mc_pg[csrc->mc_top], csrc->mc_ki[csrc->mc_top]); + mdb_cassert(csrc, !((size_t)srcnode & 1)); + srcpg = NODEPGNO(srcnode); + flags = srcnode->mn_flags; + if (csrc->mc_ki[csrc->mc_top] == 0 && IS_BRANCH(csrc->mc_pg[csrc->mc_top])) { + unsigned int snum = csrc->mc_snum; + MDB_node *s2; + /* must find the lowest key below src */ + rc = mdb_page_search_lowest(csrc); + if (rc) + return rc; + if (IS_LEAF2(csrc->mc_pg[csrc->mc_top])) { + key.mv_size = csrc->mc_db->md_pad; + key.mv_data = LEAF2KEY(csrc->mc_pg[csrc->mc_top], 0, key.mv_size); + } else { + s2 = NODEPTR(csrc->mc_pg[csrc->mc_top], 0); + key.mv_size = NODEKSZ(s2); + key.mv_data = NODEKEY(s2); + } + csrc->mc_snum = snum--; + csrc->mc_top = snum; + } else { + key.mv_size = NODEKSZ(srcnode); + key.mv_data = NODEKEY(srcnode); + } + data.mv_size = NODEDSZ(srcnode); + data.mv_data = NODEDATA(srcnode); + } + mn.mc_xcursor = NULL; + if (IS_BRANCH(cdst->mc_pg[cdst->mc_top]) && cdst->mc_ki[cdst->mc_top] == 0) { + unsigned int snum = cdst->mc_snum; + MDB_node *s2; + MDB_val bkey; + /* must find the lowest key below dst */ + mdb_cursor_copy(cdst, &mn); + rc = mdb_page_search_lowest(&mn); + if (rc) + return rc; + if (IS_LEAF2(mn.mc_pg[mn.mc_top])) { + bkey.mv_size = mn.mc_db->md_pad; + bkey.mv_data = LEAF2KEY(mn.mc_pg[mn.mc_top], 0, bkey.mv_size); + } else { + s2 = NODEPTR(mn.mc_pg[mn.mc_top], 0); + bkey.mv_size = NODEKSZ(s2); + bkey.mv_data = NODEKEY(s2); + } + mn.mc_snum = snum--; + mn.mc_top = snum; + mn.mc_ki[snum] = 0; + rc = mdb_update_key(&mn, &bkey); + if (rc) + return rc; + } + + DPRINTF(("moving %s node %u [%s] on page %"Z"u to node %u on page %"Z"u", + IS_LEAF(csrc->mc_pg[csrc->mc_top]) ? "leaf" : "branch", + csrc->mc_ki[csrc->mc_top], + DKEY(&key), + csrc->mc_pg[csrc->mc_top]->mp_pgno, + cdst->mc_ki[cdst->mc_top], cdst->mc_pg[cdst->mc_top]->mp_pgno)); + + /* Add the node to the destination page. + */ + rc = mdb_node_add(cdst, cdst->mc_ki[cdst->mc_top], &key, &data, srcpg, flags); + if (rc != MDB_SUCCESS) + return rc; + + /* Delete the node from the source page. + */ + mdb_node_del(csrc, key.mv_size); + + { + /* Adjust other cursors pointing to mp */ + MDB_cursor *m2, *m3; + MDB_dbi dbi = csrc->mc_dbi; + MDB_page *mpd, *mps; + + mps = csrc->mc_pg[csrc->mc_top]; + /* If we're adding on the left, bump others up */ + if (fromleft) { + mpd = cdst->mc_pg[csrc->mc_top]; + for (m2 = csrc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { + if (csrc->mc_flags & C_SUB) + m3 = &m2->mc_xcursor->mx_cursor; + else + m3 = m2; + if (!(m3->mc_flags & C_INITIALIZED) || m3->mc_top < csrc->mc_top) + continue; + if (m3 != cdst && + m3->mc_pg[csrc->mc_top] == mpd && + m3->mc_ki[csrc->mc_top] >= cdst->mc_ki[csrc->mc_top]) { + m3->mc_ki[csrc->mc_top]++; + } + if (m3 !=csrc && + m3->mc_pg[csrc->mc_top] == mps && + m3->mc_ki[csrc->mc_top] == csrc->mc_ki[csrc->mc_top]) { + m3->mc_pg[csrc->mc_top] = cdst->mc_pg[cdst->mc_top]; + m3->mc_ki[csrc->mc_top] = cdst->mc_ki[cdst->mc_top]; + m3->mc_ki[csrc->mc_top-1]++; + } + if (IS_LEAF(mps)) + XCURSOR_REFRESH(m3, csrc->mc_top, m3->mc_pg[csrc->mc_top]); + } + } else + /* Adding on the right, bump others down */ + { + for (m2 = csrc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { + if (csrc->mc_flags & C_SUB) + m3 = &m2->mc_xcursor->mx_cursor; + else + m3 = m2; + if (m3 == csrc) continue; + if (!(m3->mc_flags & C_INITIALIZED) || m3->mc_top < csrc->mc_top) + continue; + if (m3->mc_pg[csrc->mc_top] == mps) { + if (!m3->mc_ki[csrc->mc_top]) { + m3->mc_pg[csrc->mc_top] = cdst->mc_pg[cdst->mc_top]; + m3->mc_ki[csrc->mc_top] = cdst->mc_ki[cdst->mc_top]; + m3->mc_ki[csrc->mc_top-1]--; + } else { + m3->mc_ki[csrc->mc_top]--; + } + if (IS_LEAF(mps)) + XCURSOR_REFRESH(m3, csrc->mc_top, m3->mc_pg[csrc->mc_top]); + } + } + } + } + + /* Update the parent separators. + */ + if (csrc->mc_ki[csrc->mc_top] == 0) { + if (csrc->mc_ki[csrc->mc_top-1] != 0) { + if (IS_LEAF2(csrc->mc_pg[csrc->mc_top])) { + key.mv_data = LEAF2KEY(csrc->mc_pg[csrc->mc_top], 0, key.mv_size); + } else { + srcnode = NODEPTR(csrc->mc_pg[csrc->mc_top], 0); + key.mv_size = NODEKSZ(srcnode); + key.mv_data = NODEKEY(srcnode); + } + DPRINTF(("update separator for source page %"Z"u to [%s]", + csrc->mc_pg[csrc->mc_top]->mp_pgno, DKEY(&key))); + mdb_cursor_copy(csrc, &mn); + mn.mc_snum--; + mn.mc_top--; + /* We want mdb_rebalance to find mn when doing fixups */ + WITH_CURSOR_TRACKING(mn, + rc = mdb_update_key(&mn, &key)); + if (rc) + return rc; + } + if (IS_BRANCH(csrc->mc_pg[csrc->mc_top])) { + MDB_val nullkey; + indx_t ix = csrc->mc_ki[csrc->mc_top]; + nullkey.mv_size = 0; + csrc->mc_ki[csrc->mc_top] = 0; + rc = mdb_update_key(csrc, &nullkey); + csrc->mc_ki[csrc->mc_top] = ix; + mdb_cassert(csrc, rc == MDB_SUCCESS); + } + } + + if (cdst->mc_ki[cdst->mc_top] == 0) { + if (cdst->mc_ki[cdst->mc_top-1] != 0) { + if (IS_LEAF2(csrc->mc_pg[csrc->mc_top])) { + key.mv_data = LEAF2KEY(cdst->mc_pg[cdst->mc_top], 0, key.mv_size); + } else { + srcnode = NODEPTR(cdst->mc_pg[cdst->mc_top], 0); + key.mv_size = NODEKSZ(srcnode); + key.mv_data = NODEKEY(srcnode); + } + DPRINTF(("update separator for destination page %"Z"u to [%s]", + cdst->mc_pg[cdst->mc_top]->mp_pgno, DKEY(&key))); + mdb_cursor_copy(cdst, &mn); + mn.mc_snum--; + mn.mc_top--; + /* We want mdb_rebalance to find mn when doing fixups */ + WITH_CURSOR_TRACKING(mn, + rc = mdb_update_key(&mn, &key)); + if (rc) + return rc; + } + if (IS_BRANCH(cdst->mc_pg[cdst->mc_top])) { + MDB_val nullkey; + indx_t ix = cdst->mc_ki[cdst->mc_top]; + nullkey.mv_size = 0; + cdst->mc_ki[cdst->mc_top] = 0; + rc = mdb_update_key(cdst, &nullkey); + cdst->mc_ki[cdst->mc_top] = ix; + mdb_cassert(cdst, rc == MDB_SUCCESS); + } + } + + return MDB_SUCCESS; +} + +/** Merge one page into another. + * The nodes from the page pointed to by \b csrc will + * be copied to the page pointed to by \b cdst and then + * the \b csrc page will be freed. + * @param[in] csrc Cursor pointing to the source page. + * @param[in] cdst Cursor pointing to the destination page. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_page_merge(MDB_cursor *csrc, MDB_cursor *cdst) +{ + MDB_page *psrc, *pdst; + MDB_node *srcnode; + MDB_val key, data; + unsigned nkeys; + int rc; + indx_t i, j; + + psrc = csrc->mc_pg[csrc->mc_top]; + pdst = cdst->mc_pg[cdst->mc_top]; + + DPRINTF(("merging page %"Z"u into %"Z"u", psrc->mp_pgno, pdst->mp_pgno)); + + mdb_cassert(csrc, csrc->mc_snum > 1); /* can't merge root page */ + mdb_cassert(csrc, cdst->mc_snum > 1); + + /* Mark dst as dirty. */ + if ((rc = mdb_page_touch(cdst))) + return rc; + + /* get dst page again now that we've touched it. */ + pdst = cdst->mc_pg[cdst->mc_top]; + + /* Move all nodes from src to dst. + */ + j = nkeys = NUMKEYS(pdst); + if (IS_LEAF2(psrc)) { + key.mv_size = csrc->mc_db->md_pad; + key.mv_data = METADATA(psrc); + for (i = 0; i < NUMKEYS(psrc); i++, j++) { + rc = mdb_node_add(cdst, j, &key, NULL, 0, 0); + if (rc != MDB_SUCCESS) + return rc; + key.mv_data = (char *)key.mv_data + key.mv_size; + } + } else { + for (i = 0; i < NUMKEYS(psrc); i++, j++) { + srcnode = NODEPTR(psrc, i); + if (i == 0 && IS_BRANCH(psrc)) { + MDB_cursor mn; + MDB_node *s2; + mdb_cursor_copy(csrc, &mn); + mn.mc_xcursor = NULL; + /* must find the lowest key below src */ + rc = mdb_page_search_lowest(&mn); + if (rc) + return rc; + if (IS_LEAF2(mn.mc_pg[mn.mc_top])) { + key.mv_size = mn.mc_db->md_pad; + key.mv_data = LEAF2KEY(mn.mc_pg[mn.mc_top], 0, key.mv_size); + } else { + s2 = NODEPTR(mn.mc_pg[mn.mc_top], 0); + key.mv_size = NODEKSZ(s2); + key.mv_data = NODEKEY(s2); + } + } else { + key.mv_size = srcnode->mn_ksize; + key.mv_data = NODEKEY(srcnode); + } + + data.mv_size = NODEDSZ(srcnode); + data.mv_data = NODEDATA(srcnode); + rc = mdb_node_add(cdst, j, &key, &data, NODEPGNO(srcnode), srcnode->mn_flags); + if (rc != MDB_SUCCESS) + return rc; + } + } + + DPRINTF(("dst page %"Z"u now has %u keys (%.1f%% filled)", + pdst->mp_pgno, NUMKEYS(pdst), + (float)PAGEFILL(cdst->mc_txn->mt_env, pdst) / 10)); + + /* Unlink the src page from parent and add to free list. + */ + csrc->mc_top--; + mdb_node_del(csrc, 0); + if (csrc->mc_ki[csrc->mc_top] == 0) { + key.mv_size = 0; + rc = mdb_update_key(csrc, &key); + if (rc) { + csrc->mc_top++; + return rc; + } + } + csrc->mc_top++; + + psrc = csrc->mc_pg[csrc->mc_top]; + /* If not operating on FreeDB, allow this page to be reused + * in this txn. Otherwise just add to free list. + */ + rc = mdb_page_loose(csrc, psrc); + if (rc) + return rc; + if (IS_LEAF(psrc)) + csrc->mc_db->md_leaf_pages--; + else + csrc->mc_db->md_branch_pages--; + { + /* Adjust other cursors pointing to mp */ + MDB_cursor *m2, *m3; + MDB_dbi dbi = csrc->mc_dbi; + unsigned int top = csrc->mc_top; + + for (m2 = csrc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { + if (csrc->mc_flags & C_SUB) + m3 = &m2->mc_xcursor->mx_cursor; + else + m3 = m2; + if (m3 == csrc) continue; + if (m3->mc_snum < csrc->mc_snum) continue; + if (m3->mc_pg[top] == psrc) { + m3->mc_pg[top] = pdst; + m3->mc_ki[top] += nkeys; + m3->mc_ki[top-1] = cdst->mc_ki[top-1]; + } else if (m3->mc_pg[top-1] == csrc->mc_pg[top-1] && + m3->mc_ki[top-1] > csrc->mc_ki[top-1]) { + m3->mc_ki[top-1]--; + } + if (IS_LEAF(psrc)) + XCURSOR_REFRESH(m3, top, m3->mc_pg[top]); + } + } + { + unsigned int snum = cdst->mc_snum; + uint16_t depth = cdst->mc_db->md_depth; + mdb_cursor_pop(cdst); + rc = mdb_rebalance(cdst); + /* Did the tree height change? */ + if (depth != cdst->mc_db->md_depth) + snum += cdst->mc_db->md_depth - depth; + cdst->mc_snum = snum; + cdst->mc_top = snum-1; + } + return rc; +} + +/** Copy the contents of a cursor. + * @param[in] csrc The cursor to copy from. + * @param[out] cdst The cursor to copy to. + */ +static void +mdb_cursor_copy(const MDB_cursor *csrc, MDB_cursor *cdst) +{ + unsigned int i; + + cdst->mc_txn = csrc->mc_txn; + cdst->mc_dbi = csrc->mc_dbi; + cdst->mc_db = csrc->mc_db; + cdst->mc_dbx = csrc->mc_dbx; + cdst->mc_snum = csrc->mc_snum; + cdst->mc_top = csrc->mc_top; + cdst->mc_flags = csrc->mc_flags; + + for (i=0; imc_snum; i++) { + cdst->mc_pg[i] = csrc->mc_pg[i]; + cdst->mc_ki[i] = csrc->mc_ki[i]; + } +} + +/** Rebalance the tree after a delete operation. + * @param[in] mc Cursor pointing to the page where rebalancing + * should begin. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_rebalance(MDB_cursor *mc) +{ + MDB_node *node; + int rc, fromleft; + unsigned int ptop, minkeys, thresh; + MDB_cursor mn; + indx_t oldki; + + if (IS_BRANCH(mc->mc_pg[mc->mc_top])) { + minkeys = 2; + thresh = 1; + } else { + minkeys = 1; + thresh = FILL_THRESHOLD; + } + DPRINTF(("rebalancing %s page %"Z"u (has %u keys, %.1f%% full)", + IS_LEAF(mc->mc_pg[mc->mc_top]) ? "leaf" : "branch", + mdb_dbg_pgno(mc->mc_pg[mc->mc_top]), NUMKEYS(mc->mc_pg[mc->mc_top]), + (float)PAGEFILL(mc->mc_txn->mt_env, mc->mc_pg[mc->mc_top]) / 10)); + + if (PAGEFILL(mc->mc_txn->mt_env, mc->mc_pg[mc->mc_top]) >= thresh && + NUMKEYS(mc->mc_pg[mc->mc_top]) >= minkeys) { + DPRINTF(("no need to rebalance page %"Z"u, above fill threshold", + mdb_dbg_pgno(mc->mc_pg[mc->mc_top]))); + return MDB_SUCCESS; + } + + if (mc->mc_snum < 2) { + MDB_page *mp = mc->mc_pg[0]; + if (IS_SUBP(mp)) { + DPUTS("Can't rebalance a subpage, ignoring"); + return MDB_SUCCESS; + } + if (NUMKEYS(mp) == 0) { + DPUTS("tree is completely empty"); + mc->mc_db->md_root = P_INVALID; + mc->mc_db->md_depth = 0; + mc->mc_db->md_leaf_pages = 0; + rc = mdb_midl_append(&mc->mc_txn->mt_free_pgs, mp->mp_pgno); + if (rc) + return rc; + /* Adjust cursors pointing to mp */ + mc->mc_snum = 0; + mc->mc_top = 0; + mc->mc_flags &= ~C_INITIALIZED; + { + MDB_cursor *m2, *m3; + MDB_dbi dbi = mc->mc_dbi; + + for (m2 = mc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { + if (mc->mc_flags & C_SUB) + m3 = &m2->mc_xcursor->mx_cursor; + else + m3 = m2; + if (!(m3->mc_flags & C_INITIALIZED) || (m3->mc_snum < mc->mc_snum)) + continue; + if (m3->mc_pg[0] == mp) { + m3->mc_snum = 0; + m3->mc_top = 0; + m3->mc_flags &= ~C_INITIALIZED; + } + } + } + } else if (IS_BRANCH(mp) && NUMKEYS(mp) == 1) { + int i; + DPUTS("collapsing root page!"); + rc = mdb_midl_append(&mc->mc_txn->mt_free_pgs, mp->mp_pgno); + if (rc) + return rc; + mc->mc_db->md_root = NODEPGNO(NODEPTR(mp, 0)); + rc = mdb_page_get(mc, mc->mc_db->md_root, &mc->mc_pg[0], NULL); + if (rc) + return rc; + mc->mc_db->md_depth--; + mc->mc_db->md_branch_pages--; + mc->mc_ki[0] = mc->mc_ki[1]; + for (i = 1; imc_db->md_depth; i++) { + mc->mc_pg[i] = mc->mc_pg[i+1]; + mc->mc_ki[i] = mc->mc_ki[i+1]; + } + { + /* Adjust other cursors pointing to mp */ + MDB_cursor *m2, *m3; + MDB_dbi dbi = mc->mc_dbi; + + for (m2 = mc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { + if (mc->mc_flags & C_SUB) + m3 = &m2->mc_xcursor->mx_cursor; + else + m3 = m2; + if (m3 == mc) continue; + if (!(m3->mc_flags & C_INITIALIZED)) + continue; + if (m3->mc_pg[0] == mp) { + for (i=0; imc_db->md_depth; i++) { + m3->mc_pg[i] = m3->mc_pg[i+1]; + m3->mc_ki[i] = m3->mc_ki[i+1]; + } + m3->mc_snum--; + m3->mc_top--; + } + } + } + } else + DPUTS("root page doesn't need rebalancing"); + return MDB_SUCCESS; + } + + /* The parent (branch page) must have at least 2 pointers, + * otherwise the tree is invalid. + */ + ptop = mc->mc_top-1; + mdb_cassert(mc, NUMKEYS(mc->mc_pg[ptop]) > 1); + + /* Leaf page fill factor is below the threshold. + * Try to move keys from left or right neighbor, or + * merge with a neighbor page. + */ + + /* Find neighbors. + */ + mdb_cursor_copy(mc, &mn); + mn.mc_xcursor = NULL; + + oldki = mc->mc_ki[mc->mc_top]; + if (mc->mc_ki[ptop] == 0) { + /* We're the leftmost leaf in our parent. + */ + DPUTS("reading right neighbor"); + mn.mc_ki[ptop]++; + node = NODEPTR(mc->mc_pg[ptop], mn.mc_ki[ptop]); + rc = mdb_page_get(mc, NODEPGNO(node), &mn.mc_pg[mn.mc_top], NULL); + if (rc) + return rc; + mn.mc_ki[mn.mc_top] = 0; + mc->mc_ki[mc->mc_top] = NUMKEYS(mc->mc_pg[mc->mc_top]); + fromleft = 0; + } else { + /* There is at least one neighbor to the left. + */ + DPUTS("reading left neighbor"); + mn.mc_ki[ptop]--; + node = NODEPTR(mc->mc_pg[ptop], mn.mc_ki[ptop]); + rc = mdb_page_get(mc, NODEPGNO(node), &mn.mc_pg[mn.mc_top], NULL); + if (rc) + return rc; + mn.mc_ki[mn.mc_top] = NUMKEYS(mn.mc_pg[mn.mc_top]) - 1; + mc->mc_ki[mc->mc_top] = 0; + fromleft = 1; + } + + DPRINTF(("found neighbor page %"Z"u (%u keys, %.1f%% full)", + mn.mc_pg[mn.mc_top]->mp_pgno, NUMKEYS(mn.mc_pg[mn.mc_top]), + (float)PAGEFILL(mc->mc_txn->mt_env, mn.mc_pg[mn.mc_top]) / 10)); + + /* If the neighbor page is above threshold and has enough keys, + * move one key from it. Otherwise we should try to merge them. + * (A branch page must never have less than 2 keys.) + */ + if (PAGEFILL(mc->mc_txn->mt_env, mn.mc_pg[mn.mc_top]) >= thresh && NUMKEYS(mn.mc_pg[mn.mc_top]) > minkeys) { + rc = mdb_node_move(&mn, mc, fromleft); + if (fromleft) { + /* if we inserted on left, bump position up */ + oldki++; + } + } else { + if (!fromleft) { + rc = mdb_page_merge(&mn, mc); + } else { + oldki += NUMKEYS(mn.mc_pg[mn.mc_top]); + mn.mc_ki[mn.mc_top] += mc->mc_ki[mn.mc_top] + 1; + /* We want mdb_rebalance to find mn when doing fixups */ + WITH_CURSOR_TRACKING(mn, + rc = mdb_page_merge(mc, &mn)); + mdb_cursor_copy(&mn, mc); + } + mc->mc_flags &= ~C_EOF; + } + mc->mc_ki[mc->mc_top] = oldki; + return rc; +} + +/** Complete a delete operation started by #mdb_cursor_del(). */ +static int +mdb_cursor_del0(MDB_cursor *mc) +{ + int rc; + MDB_page *mp; + indx_t ki; + unsigned int nkeys; + MDB_cursor *m2, *m3; + MDB_dbi dbi = mc->mc_dbi; + + ki = mc->mc_ki[mc->mc_top]; + mp = mc->mc_pg[mc->mc_top]; + mdb_node_del(mc, mc->mc_db->md_pad); + mc->mc_db->md_entries--; + { + /* Adjust other cursors pointing to mp */ + for (m2 = mc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { + m3 = (mc->mc_flags & C_SUB) ? &m2->mc_xcursor->mx_cursor : m2; + if (! (m2->mc_flags & m3->mc_flags & C_INITIALIZED)) + continue; + if (m3 == mc || m3->mc_snum < mc->mc_snum) + continue; + if (m3->mc_pg[mc->mc_top] == mp) { + if (m3->mc_ki[mc->mc_top] == ki) { + m3->mc_flags |= C_DEL; + if (mc->mc_db->md_flags & MDB_DUPSORT) { + /* Sub-cursor referred into dataset which is gone */ + m3->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF); + } + continue; + } else if (m3->mc_ki[mc->mc_top] > ki) { + m3->mc_ki[mc->mc_top]--; + } + XCURSOR_REFRESH(m3, mc->mc_top, mp); + } + } + } + rc = mdb_rebalance(mc); + if (rc) + goto fail; + + /* DB is totally empty now, just bail out. + * Other cursors adjustments were already done + * by mdb_rebalance and aren't needed here. + */ + if (!mc->mc_snum) { + mc->mc_flags |= C_EOF; + return rc; + } + + mp = mc->mc_pg[mc->mc_top]; + nkeys = NUMKEYS(mp); + + /* Adjust other cursors pointing to mp */ + for (m2 = mc->mc_txn->mt_cursors[dbi]; !rc && m2; m2=m2->mc_next) { + m3 = (mc->mc_flags & C_SUB) ? &m2->mc_xcursor->mx_cursor : m2; + if (!(m2->mc_flags & m3->mc_flags & C_INITIALIZED)) + continue; + if (m3->mc_snum < mc->mc_snum) + continue; + if (m3->mc_pg[mc->mc_top] == mp) { + if (m3->mc_ki[mc->mc_top] >= mc->mc_ki[mc->mc_top]) { + /* if m3 points past last node in page, find next sibling */ + if (m3->mc_ki[mc->mc_top] >= nkeys) { + rc = mdb_cursor_sibling(m3, 1); + if (rc == MDB_NOTFOUND) { + m3->mc_flags |= C_EOF; + rc = MDB_SUCCESS; + continue; + } + if (rc) + goto fail; + } + if (m3->mc_xcursor && !(m3->mc_flags & C_EOF)) { + MDB_node *node = NODEPTR(m3->mc_pg[m3->mc_top], m3->mc_ki[m3->mc_top]); + /* If this node has dupdata, it may need to be reinited + * because its data has moved. + * If the xcursor was not initd it must be reinited. + * Else if node points to a subDB, nothing is needed. + * Else (xcursor was initd, not a subDB) needs mc_pg[0] reset. + */ + if (node->mn_flags & F_DUPDATA) { + if (m3->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) { + if (!(node->mn_flags & F_SUBDATA)) + m3->mc_xcursor->mx_cursor.mc_pg[0] = NODEDATA(node); + } else { + mdb_xcursor_init1(m3, node); + rc = mdb_cursor_first(&m3->mc_xcursor->mx_cursor, NULL, NULL); + if (rc) + goto fail; + } + } + m3->mc_xcursor->mx_cursor.mc_flags |= C_DEL; + } + } + } + } + mc->mc_flags |= C_DEL; + +fail: + if (rc) + mc->mc_txn->mt_flags |= MDB_TXN_ERROR; + return rc; +} + +int +mdb_del(MDB_txn *txn, MDB_dbi dbi, + MDB_val *key, MDB_val *data) +{ + if (!key || !TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) + return EINVAL; + + if (txn->mt_flags & (MDB_TXN_RDONLY|MDB_TXN_BLOCKED)) + return (txn->mt_flags & MDB_TXN_RDONLY) ? EACCES : MDB_BAD_TXN; + + if (!F_ISSET(txn->mt_dbs[dbi].md_flags, MDB_DUPSORT)) { + /* must ignore any data */ + data = NULL; + } + + return mdb_del0(txn, dbi, key, data, 0); +} + +static int +mdb_del0(MDB_txn *txn, MDB_dbi dbi, + MDB_val *key, MDB_val *data, unsigned flags) +{ + MDB_cursor mc; + MDB_xcursor mx; + MDB_cursor_op op; + MDB_val rdata, *xdata; + int rc, exact = 0; + DKBUF; + + DPRINTF(("====> delete db %u key [%s]", dbi, DKEY(key))); + + mdb_cursor_init(&mc, txn, dbi, &mx); + + if (data) { + op = MDB_GET_BOTH; + rdata = *data; + xdata = &rdata; + } else { + op = MDB_SET; + xdata = NULL; + flags |= MDB_NODUPDATA; + } + rc = mdb_cursor_set(&mc, key, xdata, op, &exact); + if (rc == 0) { + /* let mdb_page_split know about this cursor if needed: + * delete will trigger a rebalance; if it needs to move + * a node from one page to another, it will have to + * update the parent's separator key(s). If the new sepkey + * is larger than the current one, the parent page may + * run out of space, triggering a split. We need this + * cursor to be consistent until the end of the rebalance. + */ + mc.mc_flags |= C_UNTRACK; + mc.mc_next = txn->mt_cursors[dbi]; + txn->mt_cursors[dbi] = &mc; + rc = mdb_cursor_del(&mc, flags); + txn->mt_cursors[dbi] = mc.mc_next; + } + return rc; +} + +/** Split a page and insert a new node. + * Set #MDB_TXN_ERROR on failure. + * @param[in,out] mc Cursor pointing to the page and desired insertion index. + * The cursor will be updated to point to the actual page and index where + * the node got inserted after the split. + * @param[in] newkey The key for the newly inserted node. + * @param[in] newdata The data for the newly inserted node. + * @param[in] newpgno The page number, if the new node is a branch node. + * @param[in] nflags The #NODE_ADD_FLAGS for the new node. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno, + unsigned int nflags) +{ + unsigned int flags; + int rc = MDB_SUCCESS, new_root = 0, did_split = 0; + indx_t newindx; + pgno_t pgno = 0; + int i, j, split_indx, nkeys, pmax; + MDB_env *env = mc->mc_txn->mt_env; + MDB_node *node; + MDB_val sepkey, rkey, xdata, *rdata = &xdata; + MDB_page *copy = NULL; + MDB_page *mp, *rp, *pp; + int ptop; + MDB_cursor mn; + DKBUF; + + mp = mc->mc_pg[mc->mc_top]; + newindx = mc->mc_ki[mc->mc_top]; + nkeys = NUMKEYS(mp); + + DPRINTF(("-----> splitting %s page %"Z"u and adding [%s] at index %i/%i", + IS_LEAF(mp) ? "leaf" : "branch", mp->mp_pgno, + DKEY(newkey), mc->mc_ki[mc->mc_top], nkeys)); + + /* Create a right sibling. */ + if ((rc = mdb_page_new(mc, mp->mp_flags, 1, &rp))) + return rc; + rp->mp_pad = mp->mp_pad; + DPRINTF(("new right sibling: page %"Z"u", rp->mp_pgno)); + + /* Usually when splitting the root page, the cursor + * height is 1. But when called from mdb_update_key, + * the cursor height may be greater because it walks + * up the stack while finding the branch slot to update. + */ + if (mc->mc_top < 1) { + if ((rc = mdb_page_new(mc, P_BRANCH, 1, &pp))) + goto done; + /* shift current top to make room for new parent */ + for (i=mc->mc_snum; i>0; i--) { + mc->mc_pg[i] = mc->mc_pg[i-1]; + mc->mc_ki[i] = mc->mc_ki[i-1]; + } + mc->mc_pg[0] = pp; + mc->mc_ki[0] = 0; + mc->mc_db->md_root = pp->mp_pgno; + DPRINTF(("root split! new root = %"Z"u", pp->mp_pgno)); + new_root = mc->mc_db->md_depth++; + + /* Add left (implicit) pointer. */ + if ((rc = mdb_node_add(mc, 0, NULL, NULL, mp->mp_pgno, 0)) != MDB_SUCCESS) { + /* undo the pre-push */ + mc->mc_pg[0] = mc->mc_pg[1]; + mc->mc_ki[0] = mc->mc_ki[1]; + mc->mc_db->md_root = mp->mp_pgno; + mc->mc_db->md_depth--; + goto done; + } + mc->mc_snum++; + mc->mc_top++; + ptop = 0; + } else { + ptop = mc->mc_top-1; + DPRINTF(("parent branch page is %"Z"u", mc->mc_pg[ptop]->mp_pgno)); + } + + mdb_cursor_copy(mc, &mn); + mn.mc_xcursor = NULL; + mn.mc_pg[mn.mc_top] = rp; + mn.mc_ki[ptop] = mc->mc_ki[ptop]+1; + + if (nflags & MDB_APPEND) { + mn.mc_ki[mn.mc_top] = 0; + sepkey = *newkey; + split_indx = newindx; + nkeys = 0; + } else { + + split_indx = (nkeys+1) / 2; + + if (IS_LEAF2(rp)) { + char *split, *ins; + int x; + unsigned int lsize, rsize, ksize; + /* Move half of the keys to the right sibling */ + x = mc->mc_ki[mc->mc_top] - split_indx; + ksize = mc->mc_db->md_pad; + split = LEAF2KEY(mp, split_indx, ksize); + rsize = (nkeys - split_indx) * ksize; + lsize = (nkeys - split_indx) * sizeof(indx_t); + mp->mp_lower -= lsize; + rp->mp_lower += lsize; + mp->mp_upper += rsize - lsize; + rp->mp_upper -= rsize - lsize; + sepkey.mv_size = ksize; + if (newindx == split_indx) { + sepkey.mv_data = newkey->mv_data; + } else { + sepkey.mv_data = split; + } + if (x<0) { + ins = LEAF2KEY(mp, mc->mc_ki[mc->mc_top], ksize); + memcpy(rp->mp_ptrs, split, rsize); + sepkey.mv_data = rp->mp_ptrs; + memmove(ins+ksize, ins, (split_indx - mc->mc_ki[mc->mc_top]) * ksize); + memcpy(ins, newkey->mv_data, ksize); + mp->mp_lower += sizeof(indx_t); + mp->mp_upper -= ksize - sizeof(indx_t); + } else { + if (x) + memcpy(rp->mp_ptrs, split, x * ksize); + ins = LEAF2KEY(rp, x, ksize); + memcpy(ins, newkey->mv_data, ksize); + memcpy(ins+ksize, split + x * ksize, rsize - x * ksize); + rp->mp_lower += sizeof(indx_t); + rp->mp_upper -= ksize - sizeof(indx_t); + mc->mc_ki[mc->mc_top] = x; + } + } else { + int psize, nsize, k; + /* Maximum free space in an empty page */ + pmax = env->me_psize - PAGEHDRSZ; + if (IS_LEAF(mp)) + nsize = mdb_leaf_size(env, newkey, newdata); + else + nsize = mdb_branch_size(env, newkey); + nsize = EVEN(nsize); + + /* grab a page to hold a temporary copy */ + copy = mdb_page_malloc(mc->mc_txn, 1); + if (copy == NULL) { + rc = ENOMEM; + goto done; + } + copy->mp_pgno = mp->mp_pgno; + copy->mp_flags = mp->mp_flags; + copy->mp_lower = (PAGEHDRSZ-PAGEBASE); + copy->mp_upper = env->me_psize - PAGEBASE; + + /* prepare to insert */ + for (i=0, j=0; imp_ptrs[j++] = 0; + } + copy->mp_ptrs[j++] = mp->mp_ptrs[i]; + } + + /* When items are relatively large the split point needs + * to be checked, because being off-by-one will make the + * difference between success or failure in mdb_node_add. + * + * It's also relevant if a page happens to be laid out + * such that one half of its nodes are all "small" and + * the other half of its nodes are "large." If the new + * item is also "large" and falls on the half with + * "large" nodes, it also may not fit. + * + * As a final tweak, if the new item goes on the last + * spot on the page (and thus, onto the new page), bias + * the split so the new page is emptier than the old page. + * This yields better packing during sequential inserts. + */ + if (nkeys < 32 || nsize > pmax/16 || newindx >= nkeys) { + /* Find split point */ + psize = 0; + if (newindx <= split_indx || newindx >= nkeys) { + i = 0; j = 1; + k = newindx >= nkeys ? nkeys : split_indx+1+IS_LEAF(mp); + } else { + i = nkeys; j = -1; + k = split_indx-1; + } + for (; i!=k; i+=j) { + if (i == newindx) { + psize += nsize; + node = NULL; + } else { + node = (MDB_node *)((char *)mp + copy->mp_ptrs[i] + PAGEBASE); + psize += NODESIZE + NODEKSZ(node) + sizeof(indx_t); + if (IS_LEAF(mp)) { + if (F_ISSET(node->mn_flags, F_BIGDATA)) + psize += sizeof(pgno_t); + else + psize += NODEDSZ(node); + } + psize = EVEN(psize); + } + if (psize > pmax || i == k-j) { + split_indx = i + (j<0); + break; + } + } + } + if (split_indx == newindx) { + sepkey.mv_size = newkey->mv_size; + sepkey.mv_data = newkey->mv_data; + } else { + node = (MDB_node *)((char *)mp + copy->mp_ptrs[split_indx] + PAGEBASE); + sepkey.mv_size = node->mn_ksize; + sepkey.mv_data = NODEKEY(node); + } + } + } + + DPRINTF(("separator is %d [%s]", split_indx, DKEY(&sepkey))); + + /* Copy separator key to the parent. + */ + if (SIZELEFT(mn.mc_pg[ptop]) < mdb_branch_size(env, &sepkey)) { + int snum = mc->mc_snum; + mn.mc_snum--; + mn.mc_top--; + did_split = 1; + /* We want other splits to find mn when doing fixups */ + WITH_CURSOR_TRACKING(mn, + rc = mdb_page_split(&mn, &sepkey, NULL, rp->mp_pgno, 0)); + if (rc) + goto done; + + /* root split? */ + if (mc->mc_snum > snum) { + ptop++; + } + /* Right page might now have changed parent. + * Check if left page also changed parent. + */ + if (mn.mc_pg[ptop] != mc->mc_pg[ptop] && + mc->mc_ki[ptop] >= NUMKEYS(mc->mc_pg[ptop])) { + for (i=0; imc_pg[i] = mn.mc_pg[i]; + mc->mc_ki[i] = mn.mc_ki[i]; + } + mc->mc_pg[ptop] = mn.mc_pg[ptop]; + if (mn.mc_ki[ptop]) { + mc->mc_ki[ptop] = mn.mc_ki[ptop] - 1; + } else { + /* find right page's left sibling */ + mc->mc_ki[ptop] = mn.mc_ki[ptop]; + mdb_cursor_sibling(mc, 0); + } + } + } else { + mn.mc_top--; + rc = mdb_node_add(&mn, mn.mc_ki[ptop], &sepkey, NULL, rp->mp_pgno, 0); + mn.mc_top++; + } + if (rc != MDB_SUCCESS) { + goto done; + } + if (nflags & MDB_APPEND) { + mc->mc_pg[mc->mc_top] = rp; + mc->mc_ki[mc->mc_top] = 0; + rc = mdb_node_add(mc, 0, newkey, newdata, newpgno, nflags); + if (rc) + goto done; + for (i=0; imc_top; i++) + mc->mc_ki[i] = mn.mc_ki[i]; + } else if (!IS_LEAF2(mp)) { + /* Move nodes */ + mc->mc_pg[mc->mc_top] = rp; + i = split_indx; + j = 0; + do { + if (i == newindx) { + rkey.mv_data = newkey->mv_data; + rkey.mv_size = newkey->mv_size; + if (IS_LEAF(mp)) { + rdata = newdata; + } else + pgno = newpgno; + flags = nflags; + /* Update index for the new key. */ + mc->mc_ki[mc->mc_top] = j; + } else { + node = (MDB_node *)((char *)mp + copy->mp_ptrs[i] + PAGEBASE); + rkey.mv_data = NODEKEY(node); + rkey.mv_size = node->mn_ksize; + if (IS_LEAF(mp)) { + xdata.mv_data = NODEDATA(node); + xdata.mv_size = NODEDSZ(node); + rdata = &xdata; + } else + pgno = NODEPGNO(node); + flags = node->mn_flags; + } + + if (!IS_LEAF(mp) && j == 0) { + /* First branch index doesn't need key data. */ + rkey.mv_size = 0; + } + + rc = mdb_node_add(mc, j, &rkey, rdata, pgno, flags); + if (rc) + goto done; + if (i == nkeys) { + i = 0; + j = 0; + mc->mc_pg[mc->mc_top] = copy; + } else { + i++; + j++; + } + } while (i != split_indx); + + nkeys = NUMKEYS(copy); + for (i=0; imp_ptrs[i] = copy->mp_ptrs[i]; + mp->mp_lower = copy->mp_lower; + mp->mp_upper = copy->mp_upper; + memcpy(NODEPTR(mp, nkeys-1), NODEPTR(copy, nkeys-1), + env->me_psize - copy->mp_upper - PAGEBASE); + + /* reset back to original page */ + if (newindx < split_indx) { + mc->mc_pg[mc->mc_top] = mp; + } else { + mc->mc_pg[mc->mc_top] = rp; + mc->mc_ki[ptop]++; + /* Make sure mc_ki is still valid. + */ + if (mn.mc_pg[ptop] != mc->mc_pg[ptop] && + mc->mc_ki[ptop] >= NUMKEYS(mc->mc_pg[ptop])) { + for (i=0; i<=ptop; i++) { + mc->mc_pg[i] = mn.mc_pg[i]; + mc->mc_ki[i] = mn.mc_ki[i]; + } + } + } + if (nflags & MDB_RESERVE) { + node = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); + if (!(node->mn_flags & F_BIGDATA)) + newdata->mv_data = NODEDATA(node); + } + } else { + if (newindx >= split_indx) { + mc->mc_pg[mc->mc_top] = rp; + mc->mc_ki[ptop]++; + /* Make sure mc_ki is still valid. + */ + if (mn.mc_pg[ptop] != mc->mc_pg[ptop] && + mc->mc_ki[ptop] >= NUMKEYS(mc->mc_pg[ptop])) { + for (i=0; i<=ptop; i++) { + mc->mc_pg[i] = mn.mc_pg[i]; + mc->mc_ki[i] = mn.mc_ki[i]; + } + } + } + } + + { + /* Adjust other cursors pointing to mp */ + MDB_cursor *m2, *m3; + MDB_dbi dbi = mc->mc_dbi; + nkeys = NUMKEYS(mp); + + for (m2 = mc->mc_txn->mt_cursors[dbi]; m2; m2=m2->mc_next) { + if (mc->mc_flags & C_SUB) + m3 = &m2->mc_xcursor->mx_cursor; + else + m3 = m2; + if (m3 == mc) + continue; + if (!(m2->mc_flags & m3->mc_flags & C_INITIALIZED)) + continue; + if (new_root) { + int k; + /* sub cursors may be on different DB */ + if (m3->mc_pg[0] != mp) + continue; + /* root split */ + for (k=new_root; k>=0; k--) { + m3->mc_ki[k+1] = m3->mc_ki[k]; + m3->mc_pg[k+1] = m3->mc_pg[k]; + } + if (m3->mc_ki[0] >= nkeys) { + m3->mc_ki[0] = 1; + } else { + m3->mc_ki[0] = 0; + } + m3->mc_pg[0] = mc->mc_pg[0]; + m3->mc_snum++; + m3->mc_top++; + } + if (m3->mc_top >= mc->mc_top && m3->mc_pg[mc->mc_top] == mp) { + if (m3->mc_ki[mc->mc_top] >= newindx && !(nflags & MDB_SPLIT_REPLACE)) + m3->mc_ki[mc->mc_top]++; + if (m3->mc_ki[mc->mc_top] >= nkeys) { + m3->mc_pg[mc->mc_top] = rp; + m3->mc_ki[mc->mc_top] -= nkeys; + for (i=0; imc_top; i++) { + m3->mc_ki[i] = mn.mc_ki[i]; + m3->mc_pg[i] = mn.mc_pg[i]; + } + } + } else if (!did_split && m3->mc_top >= ptop && m3->mc_pg[ptop] == mc->mc_pg[ptop] && + m3->mc_ki[ptop] >= mc->mc_ki[ptop]) { + m3->mc_ki[ptop]++; + } + if (IS_LEAF(mp)) + XCURSOR_REFRESH(m3, mc->mc_top, m3->mc_pg[mc->mc_top]); + } + } + DPRINTF(("mp left: %d, rp left: %d", SIZELEFT(mp), SIZELEFT(rp))); + +done: + if (copy) /* tmp page */ + mdb_page_free(env, copy); + if (rc) + mc->mc_txn->mt_flags |= MDB_TXN_ERROR; + return rc; +} + +int +mdb_put(MDB_txn *txn, MDB_dbi dbi, + MDB_val *key, MDB_val *data, unsigned int flags) +{ + MDB_cursor mc; + MDB_xcursor mx; + int rc; + + if (!key || !data || !TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) + return EINVAL; + + if (flags & ~(MDB_NOOVERWRITE|MDB_NODUPDATA|MDB_RESERVE|MDB_APPEND|MDB_APPENDDUP)) + return EINVAL; + + if (txn->mt_flags & (MDB_TXN_RDONLY|MDB_TXN_BLOCKED)) + return (txn->mt_flags & MDB_TXN_RDONLY) ? EACCES : MDB_BAD_TXN; + + mdb_cursor_init(&mc, txn, dbi, &mx); + mc.mc_next = txn->mt_cursors[dbi]; + txn->mt_cursors[dbi] = &mc; + rc = mdb_cursor_put(&mc, key, data, flags); + txn->mt_cursors[dbi] = mc.mc_next; + return rc; +} + +#ifndef MDB_WBUF +#define MDB_WBUF (1024*1024) +#endif +#define MDB_EOF 0x10 /**< #mdb_env_copyfd1() is done reading */ + + /** State needed for a double-buffering compacting copy. */ +typedef struct mdb_copy { + MDB_env *mc_env; + MDB_txn *mc_txn; + pthread_mutex_t mc_mutex; + pthread_cond_t mc_cond; /**< Condition variable for #mc_new */ + char *mc_wbuf[2]; + char *mc_over[2]; + int mc_wlen[2]; + int mc_olen[2]; + pgno_t mc_next_pgno; + HANDLE mc_fd; + int mc_toggle; /**< Buffer number in provider */ + int mc_new; /**< (0-2 buffers to write) | (#MDB_EOF at end) */ + /** Error code. Never cleared if set. Both threads can set nonzero + * to fail the copy. Not mutex-protected, LMDB expects atomic int. + */ + volatile int mc_error; +} mdb_copy; + + /** Dedicated writer thread for compacting copy. */ +static THREAD_RET ESECT CALL_CONV +mdb_env_copythr(void *arg) +{ + mdb_copy *my = arg; + char *ptr; + int toggle = 0, wsize, rc; +#ifdef _WIN32 + DWORD len; +#define DO_WRITE(rc, fd, ptr, w2, len) rc = WriteFile(fd, ptr, w2, &len, NULL) +#else + int len; +#define DO_WRITE(rc, fd, ptr, w2, len) len = write(fd, ptr, w2); rc = (len >= 0) +#ifdef SIGPIPE + sigset_t set; + sigemptyset(&set); + sigaddset(&set, SIGPIPE); + if ((rc = pthread_sigmask(SIG_BLOCK, &set, NULL)) != 0) + my->mc_error = rc; +#endif +#endif + + pthread_mutex_lock(&my->mc_mutex); + for(;;) { + while (!my->mc_new) + pthread_cond_wait(&my->mc_cond, &my->mc_mutex); + if (my->mc_new == 0 + MDB_EOF) /* 0 buffers, just EOF */ + break; + wsize = my->mc_wlen[toggle]; + ptr = my->mc_wbuf[toggle]; +again: + rc = MDB_SUCCESS; + while (wsize > 0 && !my->mc_error) { + DO_WRITE(rc, my->mc_fd, ptr, wsize, len); + if (!rc) { + rc = ErrCode(); +#if defined(SIGPIPE) && !defined(_WIN32) + if (rc == EPIPE) { + /* Collect the pending SIGPIPE, otherwise at least OS X + * gives it to the process on thread-exit (ITS#8504). + */ + int tmp; + sigwait(&set, &tmp); + } +#endif + break; + } else if (len > 0) { + rc = MDB_SUCCESS; + ptr += len; + wsize -= len; + continue; + } else { + rc = EIO; + break; + } + } + if (rc) { + my->mc_error = rc; + } + /* If there's an overflow page tail, write it too */ + if (my->mc_olen[toggle]) { + wsize = my->mc_olen[toggle]; + ptr = my->mc_over[toggle]; + my->mc_olen[toggle] = 0; + goto again; + } + my->mc_wlen[toggle] = 0; + toggle ^= 1; + /* Return the empty buffer to provider */ + my->mc_new--; + pthread_cond_signal(&my->mc_cond); + } + pthread_mutex_unlock(&my->mc_mutex); + return (THREAD_RET)0; +#undef DO_WRITE +} + + /** Give buffer and/or #MDB_EOF to writer thread, await unused buffer. + * + * @param[in] my control structure. + * @param[in] adjust (1 to hand off 1 buffer) | (MDB_EOF when ending). + */ +static int ESECT +mdb_env_cthr_toggle(mdb_copy *my, int adjust) +{ + pthread_mutex_lock(&my->mc_mutex); + my->mc_new += adjust; + pthread_cond_signal(&my->mc_cond); + while (my->mc_new & 2) /* both buffers in use */ + pthread_cond_wait(&my->mc_cond, &my->mc_mutex); + pthread_mutex_unlock(&my->mc_mutex); + + my->mc_toggle ^= (adjust & 1); + /* Both threads reset mc_wlen, to be safe from threading errors */ + my->mc_wlen[my->mc_toggle] = 0; + return my->mc_error; +} + + /** Depth-first tree traversal for compacting copy. + * @param[in] my control structure. + * @param[in,out] pg database root. + * @param[in] flags includes #F_DUPDATA if it is a sorted-duplicate sub-DB. + */ +static int ESECT +mdb_env_cwalk(mdb_copy *my, pgno_t *pg, int flags) +{ + MDB_cursor mc = {0}; + MDB_node *ni; + MDB_page *mo, *mp, *leaf; + char *buf, *ptr; + int rc, toggle; + unsigned int i; + + /* Empty DB, nothing to do */ + if (*pg == P_INVALID) + return MDB_SUCCESS; + + mc.mc_snum = 1; + mc.mc_txn = my->mc_txn; + + rc = mdb_page_get(&mc, *pg, &mc.mc_pg[0], NULL); + if (rc) + return rc; + rc = mdb_page_search_root(&mc, NULL, MDB_PS_FIRST); + if (rc) + return rc; + + /* Make cursor pages writable */ + buf = ptr = malloc(my->mc_env->me_psize * mc.mc_snum); + if (buf == NULL) + return ENOMEM; + + for (i=0; imc_env->me_psize); + mc.mc_pg[i] = (MDB_page *)ptr; + ptr += my->mc_env->me_psize; + } + + /* This is writable space for a leaf page. Usually not needed. */ + leaf = (MDB_page *)ptr; + + toggle = my->mc_toggle; + while (mc.mc_snum > 0) { + unsigned n; + mp = mc.mc_pg[mc.mc_top]; + n = NUMKEYS(mp); + + if (IS_LEAF(mp)) { + if (!IS_LEAF2(mp) && !(flags & F_DUPDATA)) { + for (i=0; imn_flags & F_BIGDATA) { + MDB_page *omp; + pgno_t pg; + + /* Need writable leaf */ + if (mp != leaf) { + mc.mc_pg[mc.mc_top] = leaf; + mdb_page_copy(leaf, mp, my->mc_env->me_psize); + mp = leaf; + ni = NODEPTR(mp, i); + } + + memcpy(&pg, NODEDATA(ni), sizeof(pg)); + memcpy(NODEDATA(ni), &my->mc_next_pgno, sizeof(pgno_t)); + rc = mdb_page_get(&mc, pg, &omp, NULL); + if (rc) + goto done; + if (my->mc_wlen[toggle] >= MDB_WBUF) { + rc = mdb_env_cthr_toggle(my, 1); + if (rc) + goto done; + toggle = my->mc_toggle; + } + mo = (MDB_page *)(my->mc_wbuf[toggle] + my->mc_wlen[toggle]); + memcpy(mo, omp, my->mc_env->me_psize); + mo->mp_pgno = my->mc_next_pgno; + my->mc_next_pgno += omp->mp_pages; + my->mc_wlen[toggle] += my->mc_env->me_psize; + if (omp->mp_pages > 1) { + my->mc_olen[toggle] = my->mc_env->me_psize * (omp->mp_pages - 1); + my->mc_over[toggle] = (char *)omp + my->mc_env->me_psize; + rc = mdb_env_cthr_toggle(my, 1); + if (rc) + goto done; + toggle = my->mc_toggle; + } + } else if (ni->mn_flags & F_SUBDATA) { + MDB_db db; + + /* Need writable leaf */ + if (mp != leaf) { + mc.mc_pg[mc.mc_top] = leaf; + mdb_page_copy(leaf, mp, my->mc_env->me_psize); + mp = leaf; + ni = NODEPTR(mp, i); + } + + memcpy(&db, NODEDATA(ni), sizeof(db)); + my->mc_toggle = toggle; + rc = mdb_env_cwalk(my, &db.md_root, ni->mn_flags & F_DUPDATA); + if (rc) + goto done; + toggle = my->mc_toggle; + memcpy(NODEDATA(ni), &db, sizeof(db)); + } + } + } + } else { + mc.mc_ki[mc.mc_top]++; + if (mc.mc_ki[mc.mc_top] < n) { + pgno_t pg; +again: + ni = NODEPTR(mp, mc.mc_ki[mc.mc_top]); + pg = NODEPGNO(ni); + rc = mdb_page_get(&mc, pg, &mp, NULL); + if (rc) + goto done; + mc.mc_top++; + mc.mc_snum++; + mc.mc_ki[mc.mc_top] = 0; + if (IS_BRANCH(mp)) { + /* Whenever we advance to a sibling branch page, + * we must proceed all the way down to its first leaf. + */ + mdb_page_copy(mc.mc_pg[mc.mc_top], mp, my->mc_env->me_psize); + goto again; + } else + mc.mc_pg[mc.mc_top] = mp; + continue; + } + } + if (my->mc_wlen[toggle] >= MDB_WBUF) { + rc = mdb_env_cthr_toggle(my, 1); + if (rc) + goto done; + toggle = my->mc_toggle; + } + mo = (MDB_page *)(my->mc_wbuf[toggle] + my->mc_wlen[toggle]); + mdb_page_copy(mo, mp, my->mc_env->me_psize); + mo->mp_pgno = my->mc_next_pgno++; + my->mc_wlen[toggle] += my->mc_env->me_psize; + if (mc.mc_top) { + /* Update parent if there is one */ + ni = NODEPTR(mc.mc_pg[mc.mc_top-1], mc.mc_ki[mc.mc_top-1]); + SETPGNO(ni, mo->mp_pgno); + mdb_cursor_pop(&mc); + } else { + /* Otherwise we're done */ + *pg = mo->mp_pgno; + break; + } + } +done: + free(buf); + return rc; +} + + /** Copy environment with compaction. */ +static int ESECT +mdb_env_copyfd1(MDB_env *env, HANDLE fd) +{ + MDB_meta *mm; + MDB_page *mp; + mdb_copy my = {0}; + MDB_txn *txn = NULL; + pthread_t thr; + pgno_t root, new_root; + int rc = MDB_SUCCESS; + +#ifdef _WIN32 + if (!(my.mc_mutex = CreateMutex(NULL, FALSE, NULL)) || + !(my.mc_cond = CreateEvent(NULL, FALSE, FALSE, NULL))) { + rc = ErrCode(); + goto done; + } + my.mc_wbuf[0] = _aligned_malloc(MDB_WBUF*2, env->me_os_psize); + if (my.mc_wbuf[0] == NULL) { + /* _aligned_malloc() sets errno, but we use Windows error codes */ + rc = ERROR_NOT_ENOUGH_MEMORY; + goto done; + } +#else + if ((rc = pthread_mutex_init(&my.mc_mutex, NULL)) != 0) + return rc; + if ((rc = pthread_cond_init(&my.mc_cond, NULL)) != 0) + goto done2; +#ifdef HAVE_MEMALIGN + my.mc_wbuf[0] = memalign(env->me_os_psize, MDB_WBUF*2); + if (my.mc_wbuf[0] == NULL) { + rc = errno; + goto done; + } +#else + { + void *p; + if ((rc = posix_memalign(&p, env->me_os_psize, MDB_WBUF*2)) != 0) + goto done; + my.mc_wbuf[0] = p; + } +#endif +#endif + memset(my.mc_wbuf[0], 0, MDB_WBUF*2); + my.mc_wbuf[1] = my.mc_wbuf[0] + MDB_WBUF; + my.mc_next_pgno = NUM_METAS; + my.mc_env = env; + my.mc_fd = fd; + rc = THREAD_CREATE(thr, mdb_env_copythr, &my); + if (rc) + goto done; + + rc = mdb_txn_begin(env, NULL, MDB_RDONLY, &txn); + if (rc) + goto finish; + + mp = (MDB_page *)my.mc_wbuf[0]; + memset(mp, 0, NUM_METAS * env->me_psize); + mp->mp_pgno = 0; + mp->mp_flags = P_META; + mm = (MDB_meta *)METADATA(mp); + mdb_env_init_meta0(env, mm); + mm->mm_address = env->me_metas[0]->mm_address; + + mp = (MDB_page *)(my.mc_wbuf[0] + env->me_psize); + mp->mp_pgno = 1; + mp->mp_flags = P_META; + *(MDB_meta *)METADATA(mp) = *mm; + mm = (MDB_meta *)METADATA(mp); + + /* Set metapage 1 with current main DB */ + root = new_root = txn->mt_dbs[MAIN_DBI].md_root; + if (root != P_INVALID) { + /* Count free pages + freeDB pages. Subtract from last_pg + * to find the new last_pg, which also becomes the new root. + */ + MDB_ID freecount = 0; + MDB_cursor mc; + MDB_val key, data; + mdb_cursor_init(&mc, txn, FREE_DBI, NULL); + while ((rc = mdb_cursor_get(&mc, &key, &data, MDB_NEXT)) == 0) + freecount += *(MDB_ID *)data.mv_data; + if (rc != MDB_NOTFOUND) + goto finish; + freecount += txn->mt_dbs[FREE_DBI].md_branch_pages + + txn->mt_dbs[FREE_DBI].md_leaf_pages + + txn->mt_dbs[FREE_DBI].md_overflow_pages; + + new_root = txn->mt_next_pgno - 1 - freecount; + mm->mm_last_pg = new_root; + mm->mm_dbs[MAIN_DBI] = txn->mt_dbs[MAIN_DBI]; + mm->mm_dbs[MAIN_DBI].md_root = new_root; + } else { + /* When the DB is empty, handle it specially to + * fix any breakage like page leaks from ITS#8174. + */ + mm->mm_dbs[MAIN_DBI].md_flags = txn->mt_dbs[MAIN_DBI].md_flags; + } + if (root != P_INVALID || mm->mm_dbs[MAIN_DBI].md_flags) { + mm->mm_txnid = 1; /* use metapage 1 */ + } + + my.mc_wlen[0] = env->me_psize * NUM_METAS; + my.mc_txn = txn; + rc = mdb_env_cwalk(&my, &root, 0); + if (rc == MDB_SUCCESS && root != new_root) { + rc = MDB_INCOMPATIBLE; /* page leak or corrupt DB */ + } + +finish: + if (rc) + my.mc_error = rc; + mdb_env_cthr_toggle(&my, 1 | MDB_EOF); + rc = THREAD_FINISH(thr); + mdb_txn_abort(txn); + +done: +#ifdef _WIN32 + if (my.mc_wbuf[0]) _aligned_free(my.mc_wbuf[0]); + if (my.mc_cond) CloseHandle(my.mc_cond); + if (my.mc_mutex) CloseHandle(my.mc_mutex); +#else + free(my.mc_wbuf[0]); + pthread_cond_destroy(&my.mc_cond); +done2: + pthread_mutex_destroy(&my.mc_mutex); +#endif + return rc ? rc : my.mc_error; +} + + /** Copy environment as-is. */ +static int ESECT +mdb_env_copyfd0(MDB_env *env, HANDLE fd) +{ + MDB_txn *txn = NULL; + mdb_mutexref_t wmutex = NULL; + int rc; + size_t wsize, w3; + char *ptr; +#ifdef _WIN32 + DWORD len, w2; +#define DO_WRITE(rc, fd, ptr, w2, len) rc = WriteFile(fd, ptr, w2, &len, NULL) +#else + ssize_t len; + size_t w2; +#define DO_WRITE(rc, fd, ptr, w2, len) len = write(fd, ptr, w2); rc = (len >= 0) +#endif + + /* Do the lock/unlock of the reader mutex before starting the + * write txn. Otherwise other read txns could block writers. + */ + rc = mdb_txn_begin(env, NULL, MDB_RDONLY, &txn); + if (rc) + return rc; + + if (env->me_txns) { + /* We must start the actual read txn after blocking writers */ + mdb_txn_end(txn, MDB_END_RESET_TMP); + + /* Temporarily block writers until we snapshot the meta pages */ + wmutex = env->me_wmutex; + if (LOCK_MUTEX(rc, env, wmutex)) + goto leave; + + rc = mdb_txn_renew0(txn); + if (rc) { + UNLOCK_MUTEX(wmutex); + goto leave; + } + } + + wsize = env->me_psize * NUM_METAS; + ptr = env->me_map; + w2 = wsize; + while (w2 > 0) { + DO_WRITE(rc, fd, ptr, w2, len); + if (!rc) { + rc = ErrCode(); + break; + } else if (len > 0) { + rc = MDB_SUCCESS; + ptr += len; + w2 -= len; + continue; + } else { + /* Non-blocking or async handles are not supported */ + rc = EIO; + break; + } + } + if (wmutex) + UNLOCK_MUTEX(wmutex); + + if (rc) + goto leave; + + w3 = txn->mt_next_pgno * env->me_psize; + { + size_t fsize = 0; + if ((rc = mdb_fsize(env->me_fd, &fsize))) + goto leave; + if (w3 > fsize) + w3 = fsize; + } + wsize = w3 - wsize; + while (wsize > 0) { + if (wsize > MAX_WRITE) + w2 = MAX_WRITE; + else + w2 = wsize; + DO_WRITE(rc, fd, ptr, w2, len); + if (!rc) { + rc = ErrCode(); + break; + } else if (len > 0) { + rc = MDB_SUCCESS; + ptr += len; + wsize -= len; + continue; + } else { + rc = EIO; + break; + } + } + +leave: + mdb_txn_abort(txn); + return rc; +} + +int ESECT +mdb_env_copyfd2(MDB_env *env, HANDLE fd, unsigned int flags) +{ + if (flags & MDB_CP_COMPACT) + return mdb_env_copyfd1(env, fd); + else + return mdb_env_copyfd0(env, fd); +} + +int ESECT +mdb_env_copyfd(MDB_env *env, HANDLE fd) +{ + return mdb_env_copyfd2(env, fd, 0); +} + +int ESECT +mdb_env_copy2(MDB_env *env, const char *path, unsigned int flags) +{ + int rc; + MDB_name fname; + HANDLE newfd = INVALID_HANDLE_VALUE; + + rc = mdb_fname_init(path, env->me_flags | MDB_NOLOCK, &fname); + if (rc == MDB_SUCCESS) { + rc = mdb_fopen(env, &fname, MDB_O_COPY, 0666, &newfd); + mdb_fname_destroy(fname); + } + if (rc == MDB_SUCCESS) { + rc = mdb_env_copyfd2(env, newfd, flags); + if (close(newfd) < 0 && rc == MDB_SUCCESS) + rc = ErrCode(); + } + return rc; +} + +int ESECT +mdb_env_copy(MDB_env *env, const char *path) +{ + return mdb_env_copy2(env, path, 0); +} + +int ESECT +mdb_env_set_flags(MDB_env *env, unsigned int flag, int onoff) +{ + if (flag & ~CHANGEABLE) + return EINVAL; + if (onoff) + env->me_flags |= flag; + else + env->me_flags &= ~flag; + return MDB_SUCCESS; +} + +int ESECT +mdb_env_get_flags(MDB_env *env, unsigned int *arg) +{ + if (!env || !arg) + return EINVAL; + + *arg = env->me_flags & (CHANGEABLE|CHANGELESS); + return MDB_SUCCESS; +} + +int ESECT +mdb_env_set_userctx(MDB_env *env, void *ctx) +{ + if (!env) + return EINVAL; + env->me_userctx = ctx; + return MDB_SUCCESS; +} + +void * ESECT +mdb_env_get_userctx(MDB_env *env) +{ + return env ? env->me_userctx : NULL; +} + +int ESECT +mdb_env_set_assert(MDB_env *env, MDB_assert_func *func) +{ + if (!env) + return EINVAL; +#ifndef NDEBUG + env->me_assert_func = func; +#endif + return MDB_SUCCESS; +} + +int ESECT +mdb_env_get_path(MDB_env *env, const char **arg) +{ + if (!env || !arg) + return EINVAL; + + *arg = env->me_path; + return MDB_SUCCESS; +} + +int ESECT +mdb_env_get_fd(MDB_env *env, mdb_filehandle_t *arg) +{ + if (!env || !arg) + return EINVAL; + + *arg = env->me_fd; + return MDB_SUCCESS; +} + +/** Common code for #mdb_stat() and #mdb_env_stat(). + * @param[in] env the environment to operate in. + * @param[in] db the #MDB_db record containing the stats to return. + * @param[out] arg the address of an #MDB_stat structure to receive the stats. + * @return 0, this function always succeeds. + */ +static int ESECT +mdb_stat0(MDB_env *env, MDB_db *db, MDB_stat *arg) +{ + arg->ms_psize = env->me_psize; + arg->ms_depth = db->md_depth; + arg->ms_branch_pages = db->md_branch_pages; + arg->ms_leaf_pages = db->md_leaf_pages; + arg->ms_overflow_pages = db->md_overflow_pages; + arg->ms_entries = db->md_entries; + + return MDB_SUCCESS; +} + +int ESECT +mdb_env_stat(MDB_env *env, MDB_stat *arg) +{ + MDB_meta *meta; + + if (env == NULL || arg == NULL) + return EINVAL; + + meta = mdb_env_pick_meta(env); + + return mdb_stat0(env, &meta->mm_dbs[MAIN_DBI], arg); +} + +int ESECT +mdb_env_info(MDB_env *env, MDB_envinfo *arg) +{ + MDB_meta *meta; + + if (env == NULL || arg == NULL) + return EINVAL; + + meta = mdb_env_pick_meta(env); + arg->me_mapaddr = meta->mm_address; + arg->me_last_pgno = meta->mm_last_pg; + arg->me_last_txnid = meta->mm_txnid; + + arg->me_mapsize = env->me_mapsize; + arg->me_maxreaders = env->me_maxreaders; + arg->me_numreaders = env->me_txns ? env->me_txns->mti_numreaders : 0; + return MDB_SUCCESS; +} + +/** Set the default comparison functions for a database. + * Called immediately after a database is opened to set the defaults. + * The user can then override them with #mdb_set_compare() or + * #mdb_set_dupsort(). + * @param[in] txn A transaction handle returned by #mdb_txn_begin() + * @param[in] dbi A database handle returned by #mdb_dbi_open() + */ +static void +mdb_default_cmp(MDB_txn *txn, MDB_dbi dbi) +{ + uint16_t f = txn->mt_dbs[dbi].md_flags; + + txn->mt_dbxs[dbi].md_cmp = + (f & MDB_REVERSEKEY) ? mdb_cmp_memnr : + (f & MDB_INTEGERKEY) ? mdb_cmp_cint : mdb_cmp_memn; + + txn->mt_dbxs[dbi].md_dcmp = + !(f & MDB_DUPSORT) ? 0 : + ((f & MDB_INTEGERDUP) + ? ((f & MDB_DUPFIXED) ? mdb_cmp_int : mdb_cmp_cint) + : ((f & MDB_REVERSEDUP) ? mdb_cmp_memnr : mdb_cmp_memn)); +} + +int mdb_dbi_open(MDB_txn *txn, const char *name, unsigned int flags, MDB_dbi *dbi) +{ + MDB_val key, data; + MDB_dbi i; + MDB_cursor mc; + MDB_db dummy; + int rc, dbflag, exact; + unsigned int unused = 0, seq; + char *namedup; + size_t len; + + if (flags & ~VALID_FLAGS) + return EINVAL; + if (txn->mt_flags & MDB_TXN_BLOCKED) + return MDB_BAD_TXN; + + /* main DB? */ + if (!name) { + *dbi = MAIN_DBI; + if (flags & PERSISTENT_FLAGS) { + uint16_t f2 = flags & PERSISTENT_FLAGS; + /* make sure flag changes get committed */ + if ((txn->mt_dbs[MAIN_DBI].md_flags | f2) != txn->mt_dbs[MAIN_DBI].md_flags) { + txn->mt_dbs[MAIN_DBI].md_flags |= f2; + txn->mt_flags |= MDB_TXN_DIRTY; + } + } + mdb_default_cmp(txn, MAIN_DBI); + return MDB_SUCCESS; + } + + if (txn->mt_dbxs[MAIN_DBI].md_cmp == NULL) { + mdb_default_cmp(txn, MAIN_DBI); + } + + /* Is the DB already open? */ + len = strlen(name); + for (i=CORE_DBS; imt_numdbs; i++) { + if (!txn->mt_dbxs[i].md_name.mv_size) { + /* Remember this free slot */ + if (!unused) unused = i; + continue; + } + if (len == txn->mt_dbxs[i].md_name.mv_size && + !strncmp(name, txn->mt_dbxs[i].md_name.mv_data, len)) { + *dbi = i; + return MDB_SUCCESS; + } + } + + /* If no free slot and max hit, fail */ + if (!unused && txn->mt_numdbs >= txn->mt_env->me_maxdbs) + return MDB_DBS_FULL; + + /* Cannot mix named databases with some mainDB flags */ + if (txn->mt_dbs[MAIN_DBI].md_flags & (MDB_DUPSORT|MDB_INTEGERKEY)) + return (flags & MDB_CREATE) ? MDB_INCOMPATIBLE : MDB_NOTFOUND; + + /* Find the DB info */ + dbflag = DB_NEW|DB_VALID|DB_USRVALID; + exact = 0; + key.mv_size = len; + key.mv_data = (void *)name; + mdb_cursor_init(&mc, txn, MAIN_DBI, NULL); + rc = mdb_cursor_set(&mc, &key, &data, MDB_SET, &exact); + if (rc == MDB_SUCCESS) { + /* make sure this is actually a DB */ + MDB_node *node = NODEPTR(mc.mc_pg[mc.mc_top], mc.mc_ki[mc.mc_top]); + if ((node->mn_flags & (F_DUPDATA|F_SUBDATA)) != F_SUBDATA) + return MDB_INCOMPATIBLE; + } else { + if (rc != MDB_NOTFOUND || !(flags & MDB_CREATE)) + return rc; + if (F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) + return EACCES; + } + + /* Done here so we cannot fail after creating a new DB */ + if ((namedup = strdup(name)) == NULL) + return ENOMEM; + + if (rc) { + /* MDB_NOTFOUND and MDB_CREATE: Create new DB */ + data.mv_size = sizeof(MDB_db); + data.mv_data = &dummy; + memset(&dummy, 0, sizeof(dummy)); + dummy.md_root = P_INVALID; + dummy.md_flags = flags & PERSISTENT_FLAGS; + WITH_CURSOR_TRACKING(mc, + rc = mdb_cursor_put(&mc, &key, &data, F_SUBDATA)); + dbflag |= DB_DIRTY; + } + + if (rc) { + free(namedup); + } else { + /* Got info, register DBI in this txn */ + unsigned int slot = unused ? unused : txn->mt_numdbs; + txn->mt_dbxs[slot].md_name.mv_data = namedup; + txn->mt_dbxs[slot].md_name.mv_size = len; + txn->mt_dbxs[slot].md_rel = NULL; + txn->mt_dbflags[slot] = dbflag; + /* txn-> and env-> are the same in read txns, use + * tmp variable to avoid undefined assignment + */ + seq = ++txn->mt_env->me_dbiseqs[slot]; + txn->mt_dbiseqs[slot] = seq; + + memcpy(&txn->mt_dbs[slot], data.mv_data, sizeof(MDB_db)); + *dbi = slot; + mdb_default_cmp(txn, slot); + if (!unused) { + txn->mt_numdbs++; + } + } + + return rc; +} + +int ESECT +mdb_stat(MDB_txn *txn, MDB_dbi dbi, MDB_stat *arg) +{ + if (!arg || !TXN_DBI_EXIST(txn, dbi, DB_VALID)) + return EINVAL; + + if (txn->mt_flags & MDB_TXN_BLOCKED) + return MDB_BAD_TXN; + + if (txn->mt_dbflags[dbi] & DB_STALE) { + MDB_cursor mc; + MDB_xcursor mx; + /* Stale, must read the DB's root. cursor_init does it for us. */ + mdb_cursor_init(&mc, txn, dbi, &mx); + } + return mdb_stat0(txn->mt_env, &txn->mt_dbs[dbi], arg); +} + +void mdb_dbi_close(MDB_env *env, MDB_dbi dbi) +{ + char *ptr; + if (dbi < CORE_DBS || dbi >= env->me_maxdbs) + return; + ptr = env->me_dbxs[dbi].md_name.mv_data; + /* If there was no name, this was already closed */ + if (ptr) { + env->me_dbxs[dbi].md_name.mv_data = NULL; + env->me_dbxs[dbi].md_name.mv_size = 0; + env->me_dbflags[dbi] = 0; + env->me_dbiseqs[dbi]++; + free(ptr); + } +} + +int mdb_dbi_flags(MDB_txn *txn, MDB_dbi dbi, unsigned int *flags) +{ + /* We could return the flags for the FREE_DBI too but what's the point? */ + if (!TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) + return EINVAL; + *flags = txn->mt_dbs[dbi].md_flags & PERSISTENT_FLAGS; + return MDB_SUCCESS; +} + +/** Add all the DB's pages to the free list. + * @param[in] mc Cursor on the DB to free. + * @param[in] subs non-Zero to check for sub-DBs in this DB. + * @return 0 on success, non-zero on failure. + */ +static int +mdb_drop0(MDB_cursor *mc, int subs) +{ + int rc; + + rc = mdb_page_search(mc, NULL, MDB_PS_FIRST); + if (rc == MDB_SUCCESS) { + MDB_txn *txn = mc->mc_txn; + MDB_node *ni; + MDB_cursor mx; + unsigned int i; + + /* DUPSORT sub-DBs have no ovpages/DBs. Omit scanning leaves. + * This also avoids any P_LEAF2 pages, which have no nodes. + * Also if the DB doesn't have sub-DBs and has no overflow + * pages, omit scanning leaves. + */ + if ((mc->mc_flags & C_SUB) || + (!subs && !mc->mc_db->md_overflow_pages)) + mdb_cursor_pop(mc); + + mdb_cursor_copy(mc, &mx); + while (mc->mc_snum > 0) { + MDB_page *mp = mc->mc_pg[mc->mc_top]; + unsigned n = NUMKEYS(mp); + if (IS_LEAF(mp)) { + for (i=0; imn_flags & F_BIGDATA) { + MDB_page *omp; + pgno_t pg; + memcpy(&pg, NODEDATA(ni), sizeof(pg)); + rc = mdb_page_get(mc, pg, &omp, NULL); + if (rc != 0) + goto done; + mdb_cassert(mc, IS_OVERFLOW(omp)); + rc = mdb_midl_append_range(&txn->mt_free_pgs, + pg, omp->mp_pages); + if (rc) + goto done; + mc->mc_db->md_overflow_pages -= omp->mp_pages; + if (!mc->mc_db->md_overflow_pages && !subs) + break; + } else if (subs && (ni->mn_flags & F_SUBDATA)) { + mdb_xcursor_init1(mc, ni); + rc = mdb_drop0(&mc->mc_xcursor->mx_cursor, 0); + if (rc) + goto done; + } + } + if (!subs && !mc->mc_db->md_overflow_pages) + goto pop; + } else { + if ((rc = mdb_midl_need(&txn->mt_free_pgs, n)) != 0) + goto done; + for (i=0; imt_free_pgs, pg); + } + } + if (!mc->mc_top) + break; + mc->mc_ki[mc->mc_top] = i; + rc = mdb_cursor_sibling(mc, 1); + if (rc) { + if (rc != MDB_NOTFOUND) + goto done; + /* no more siblings, go back to beginning + * of previous level. + */ +pop: + mdb_cursor_pop(mc); + mc->mc_ki[0] = 0; + for (i=1; imc_snum; i++) { + mc->mc_ki[i] = 0; + mc->mc_pg[i] = mx.mc_pg[i]; + } + } + } + /* free it */ + rc = mdb_midl_append(&txn->mt_free_pgs, mc->mc_db->md_root); +done: + if (rc) + txn->mt_flags |= MDB_TXN_ERROR; + } else if (rc == MDB_NOTFOUND) { + rc = MDB_SUCCESS; + } + mc->mc_flags &= ~C_INITIALIZED; + return rc; +} + +int mdb_drop(MDB_txn *txn, MDB_dbi dbi, int del) +{ + MDB_cursor *mc, *m2; + int rc; + + if ((unsigned)del > 1 || !TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) + return EINVAL; + + if (F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) + return EACCES; + + if (TXN_DBI_CHANGED(txn, dbi)) + return MDB_BAD_DBI; + + rc = mdb_cursor_open(txn, dbi, &mc); + if (rc) + return rc; + + rc = mdb_drop0(mc, mc->mc_db->md_flags & MDB_DUPSORT); + /* Invalidate the dropped DB's cursors */ + for (m2 = txn->mt_cursors[dbi]; m2; m2 = m2->mc_next) + m2->mc_flags &= ~(C_INITIALIZED|C_EOF); + if (rc) + goto leave; + + /* Can't delete the main DB */ + if (del && dbi >= CORE_DBS) { + rc = mdb_del0(txn, MAIN_DBI, &mc->mc_dbx->md_name, NULL, F_SUBDATA); + if (!rc) { + txn->mt_dbflags[dbi] = DB_STALE; + mdb_dbi_close(txn->mt_env, dbi); + } else { + txn->mt_flags |= MDB_TXN_ERROR; + } + } else { + /* reset the DB record, mark it dirty */ + txn->mt_dbflags[dbi] |= DB_DIRTY; + txn->mt_dbs[dbi].md_depth = 0; + txn->mt_dbs[dbi].md_branch_pages = 0; + txn->mt_dbs[dbi].md_leaf_pages = 0; + txn->mt_dbs[dbi].md_overflow_pages = 0; + txn->mt_dbs[dbi].md_entries = 0; + txn->mt_dbs[dbi].md_root = P_INVALID; + + txn->mt_flags |= MDB_TXN_DIRTY; + } +leave: + mdb_cursor_close(mc); + return rc; +} + +int mdb_set_compare(MDB_txn *txn, MDB_dbi dbi, MDB_cmp_func *cmp) +{ + if (!TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) + return EINVAL; + + txn->mt_dbxs[dbi].md_cmp = cmp; + return MDB_SUCCESS; +} + +int mdb_set_dupsort(MDB_txn *txn, MDB_dbi dbi, MDB_cmp_func *cmp) +{ + if (!TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) + return EINVAL; + + txn->mt_dbxs[dbi].md_dcmp = cmp; + return MDB_SUCCESS; +} + +int mdb_set_relfunc(MDB_txn *txn, MDB_dbi dbi, MDB_rel_func *rel) +{ + if (!TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) + return EINVAL; + + txn->mt_dbxs[dbi].md_rel = rel; + return MDB_SUCCESS; +} + +int mdb_set_relctx(MDB_txn *txn, MDB_dbi dbi, void *ctx) +{ + if (!TXN_DBI_EXIST(txn, dbi, DB_USRVALID)) + return EINVAL; + + txn->mt_dbxs[dbi].md_relctx = ctx; + return MDB_SUCCESS; +} + +int ESECT +mdb_env_get_maxkeysize(MDB_env *env) +{ + return ENV_MAXKEY(env); +} + +int ESECT +mdb_reader_list(MDB_env *env, MDB_msg_func *func, void *ctx) +{ + unsigned int i, rdrs; + MDB_reader *mr; + char buf[64]; + int rc = 0, first = 1; + + if (!env || !func) + return -1; + if (!env->me_txns) { + return func("(no reader locks)\n", ctx); + } + rdrs = env->me_txns->mti_numreaders; + mr = env->me_txns->mti_readers; + for (i=0; i> 1; + cursor = base + pivot + 1; + val = pid - ids[cursor]; + + if( val < 0 ) { + n = pivot; + + } else if ( val > 0 ) { + base = cursor; + n -= pivot + 1; + + } else { + /* found, so it's a duplicate */ + return -1; + } + } + + if( val > 0 ) { + ++cursor; + } + ids[0]++; + for (n = ids[0]; n > cursor; n--) + ids[n] = ids[n-1]; + ids[n] = pid; + return 0; +} + +int ESECT +mdb_reader_check(MDB_env *env, int *dead) +{ + if (!env) + return EINVAL; + if (dead) + *dead = 0; + return env->me_txns ? mdb_reader_check0(env, 0, dead) : MDB_SUCCESS; +} + +/** As #mdb_reader_check(). \b rlocked is set if caller locked #me_rmutex. */ +static int ESECT +mdb_reader_check0(MDB_env *env, int rlocked, int *dead) +{ + mdb_mutexref_t rmutex = rlocked ? NULL : env->me_rmutex; + unsigned int i, j, rdrs; + MDB_reader *mr; + MDB_PID_T *pids, pid; + int rc = MDB_SUCCESS, count = 0; + + rdrs = env->me_txns->mti_numreaders; + pids = malloc((rdrs+1) * sizeof(MDB_PID_T)); + if (!pids) + return ENOMEM; + pids[0] = 0; + mr = env->me_txns->mti_readers; + for (i=0; ime_pid) { + if (mdb_pid_insert(pids, pid) == 0) { + if (!mdb_reader_pid(env, Pidcheck, pid)) { + /* Stale reader found */ + j = i; + if (rmutex) { + if ((rc = LOCK_MUTEX0(rmutex)) != 0) { + if ((rc = mdb_mutex_failed(env, rmutex, rc))) + break; + rdrs = 0; /* the above checked all readers */ + } else { + /* Recheck, a new process may have reused pid */ + if (mdb_reader_pid(env, Pidcheck, pid)) + j = rdrs; + } + } + for (; jme_rmutex); + if (!rlocked) { + /* Keep mti_txnid updated, otherwise next writer can + * overwrite data which latest meta page refers to. + */ + meta = mdb_env_pick_meta(env); + env->me_txns->mti_txnid = meta->mm_txnid; + /* env is hosed if the dead thread was ours */ + if (env->me_txn) { + env->me_flags |= MDB_FATAL_ERROR; + env->me_txn = NULL; + rc = MDB_PANIC; + } + } + DPRINTF(("%cmutex owner died, %s", (rlocked ? 'r' : 'w'), + (rc ? "this process' env is hosed" : "recovering"))); + rc2 = mdb_reader_check0(env, rlocked, NULL); + if (rc2 == 0) + rc2 = mdb_mutex_consistent(mutex); + if (rc || (rc = rc2)) { + DPRINTF(("LOCK_MUTEX recovery failed, %s", mdb_strerror(rc))); + UNLOCK_MUTEX(mutex); + } + } else { +#ifdef _WIN32 + rc = ErrCode(); +#endif + DPRINTF(("LOCK_MUTEX failed, %s", mdb_strerror(rc))); + } + + return rc; +} +#endif /* MDB_ROBUST_SUPPORTED */ + +#if defined(_WIN32) +/** Convert \b src to new wchar_t[] string with room for \b xtra extra chars */ +static int ESECT +utf8_to_utf16(const char *src, MDB_name *dst, int xtra) +{ + int rc, need = 0; + wchar_t *result = NULL; + for (;;) { /* malloc result, then fill it in */ + need = MultiByteToWideChar(CP_UTF8, 0, src, -1, result, need); + if (!need) { + rc = ErrCode(); + free(result); + return rc; + } + if (!result) { + result = malloc(sizeof(wchar_t) * (need + xtra)); + if (!result) + return ENOMEM; + continue; + } + dst->mn_alloced = 1; + dst->mn_len = need - 1; + dst->mn_val = result; + return MDB_SUCCESS; + } +} +#endif /* defined(_WIN32) */ +/** @} */ diff --git a/vere/ext/murmur3/build.zig b/vere/ext/murmur3/build.zig new file mode 100644 index 0000000..dac91d3 --- /dev/null +++ b/vere/ext/murmur3/build.zig @@ -0,0 +1,38 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const murmur3 = b.addStaticLibrary(.{ + .name = "murmur3", + .target = target, + .optimize = optimize, + }); + + murmur3.linkLibC(); + + murmur3.addIncludePath(b.path(".")); + + const common_flags = [_][]const u8{ + "-fno-sanitize=all", + "-O3", + "-Wall", + }; + + const mac_flags = common_flags ++ [_][]const u8{ + "-fPIC", + "-c", + }; + + murmur3.addCSourceFiles(.{ + .root = b.path("vendor"), + .files = &.{"murmur3.c"}, + .flags = if (t.os.tag == .macos) &mac_flags else &common_flags, + }); + + murmur3.installHeader(b.path("vendor/murmur3.h"), "murmur3.h"); + + b.installArtifact(murmur3); +} diff --git a/vere/ext/murmur3/build.zig.zon b/vere/ext/murmur3/build.zig.zon new file mode 100644 index 0000000..957c297 --- /dev/null +++ b/vere/ext/murmur3/build.zig.zon @@ -0,0 +1,8 @@ +.{ + .name = .murmur3, + .fingerprint = 0x965f2281e82e15af, + .version = "0.0.1", + .paths = .{ + "", + }, +} diff --git a/vere/ext/murmur3/vendor/murmur3.c b/vere/ext/murmur3/vendor/murmur3.c new file mode 100644 index 0000000..a04ba9d --- /dev/null +++ b/vere/ext/murmur3/vendor/murmur3.c @@ -0,0 +1,314 @@ +//----------------------------------------------------------------------------- +// MurmurHash3 was written by Austin Appleby, and is placed in the public +// domain. The author hereby disclaims copyright to this source code. + +// Note - The x86 and x64 versions do _not_ produce the same results, as the +// algorithms are optimized for their respective platforms. You can still +// compile and run any of them on any platform, but your performance with the +// non-native version will be less than optimal. + +#include "murmur3.h" + +//----------------------------------------------------------------------------- +// Platform-specific functions and macros + +#ifdef __GNUC__ +#define FORCE_INLINE __attribute__((always_inline)) inline +#else +#define FORCE_INLINE inline +#endif + +static FORCE_INLINE uint32_t rotl32 ( uint32_t x, int8_t r ) +{ + return (x << r) | (x >> (32 - r)); +} + +static FORCE_INLINE uint64_t rotl64 ( uint64_t x, int8_t r ) +{ + return (x << r) | (x >> (64 - r)); +} + +#define ROTL32(x,y) rotl32(x,y) +#define ROTL64(x,y) rotl64(x,y) + +#define BIG_CONSTANT(x) (x##LLU) + +//----------------------------------------------------------------------------- +// Block read - if your platform needs to do endian-swapping or can only +// handle aligned reads, do the conversion here + +#define getblock(p, i) (p[i]) + +//----------------------------------------------------------------------------- +// Finalization mix - force all bits of a hash block to avalanche + +static FORCE_INLINE uint32_t fmix32 ( uint32_t h ) +{ + h ^= h >> 16; + h *= 0x85ebca6b; + h ^= h >> 13; + h *= 0xc2b2ae35; + h ^= h >> 16; + + return h; +} + +//---------- + +static FORCE_INLINE uint64_t fmix64 ( uint64_t k ) +{ + k ^= k >> 33; + k *= BIG_CONSTANT(0xff51afd7ed558ccd); + k ^= k >> 33; + k *= BIG_CONSTANT(0xc4ceb9fe1a85ec53); + k ^= k >> 33; + + return k; +} + +//----------------------------------------------------------------------------- + +void MurmurHash3_x86_32 ( const void * key, size_t len, + uint32_t seed, void * out ) +{ + const uint8_t * data = (const uint8_t*)key; + const size_t nblocks = len / 4; + size_t i; + + uint32_t h1 = seed; + + uint32_t c1 = 0xcc9e2d51; + uint32_t c2 = 0x1b873593; + + //---------- + // body + + const uint32_t * blocks = (const uint32_t *)(data + nblocks*4); + + for(i = -nblocks; i; i++) + { + uint32_t k1 = getblock(blocks,i); + + k1 *= c1; + k1 = ROTL32(k1,15); + k1 *= c2; + + h1 ^= k1; + h1 = ROTL32(h1,13); + h1 = h1*5+0xe6546b64; + } + + //---------- + // tail + + const uint8_t * tail = (const uint8_t*)(data + nblocks*4); + + uint32_t k1 = 0; + + switch(len & 3) + { + case 3: k1 ^= tail[2] << 16; + case 2: k1 ^= tail[1] << 8; + case 1: k1 ^= tail[0]; + k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1; + }; + + //---------- + // finalization + + h1 ^= (uint32_t)len; + + h1 = fmix32(h1); + + *(uint32_t*)out = h1; +} + +//----------------------------------------------------------------------------- + +void MurmurHash3_x86_128 ( const void * key, const int len, + uint32_t seed, void * out ) +{ + const uint8_t * data = (const uint8_t*)key; + const int nblocks = len / 16; + int i; + + uint32_t h1 = seed; + uint32_t h2 = seed; + uint32_t h3 = seed; + uint32_t h4 = seed; + + uint32_t c1 = 0x239b961b; + uint32_t c2 = 0xab0e9789; + uint32_t c3 = 0x38b34ae5; + uint32_t c4 = 0xa1e38b93; + + //---------- + // body + + const uint32_t * blocks = (const uint32_t *)(data + nblocks*16); + + for(i = -nblocks; i; i++) + { + uint32_t k1 = getblock(blocks,i*4+0); + uint32_t k2 = getblock(blocks,i*4+1); + uint32_t k3 = getblock(blocks,i*4+2); + uint32_t k4 = getblock(blocks,i*4+3); + + k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1; + + h1 = ROTL32(h1,19); h1 += h2; h1 = h1*5+0x561ccd1b; + + k2 *= c2; k2 = ROTL32(k2,16); k2 *= c3; h2 ^= k2; + + h2 = ROTL32(h2,17); h2 += h3; h2 = h2*5+0x0bcaa747; + + k3 *= c3; k3 = ROTL32(k3,17); k3 *= c4; h3 ^= k3; + + h3 = ROTL32(h3,15); h3 += h4; h3 = h3*5+0x96cd1c35; + + k4 *= c4; k4 = ROTL32(k4,18); k4 *= c1; h4 ^= k4; + + h4 = ROTL32(h4,13); h4 += h1; h4 = h4*5+0x32ac3b17; + } + + //---------- + // tail + + const uint8_t * tail = (const uint8_t*)(data + nblocks*16); + + uint32_t k1 = 0; + uint32_t k2 = 0; + uint32_t k3 = 0; + uint32_t k4 = 0; + + switch(len & 15) + { + case 15: k4 ^= tail[14] << 16; + case 14: k4 ^= tail[13] << 8; + case 13: k4 ^= tail[12] << 0; + k4 *= c4; k4 = ROTL32(k4,18); k4 *= c1; h4 ^= k4; + + case 12: k3 ^= tail[11] << 24; + case 11: k3 ^= tail[10] << 16; + case 10: k3 ^= tail[ 9] << 8; + case 9: k3 ^= tail[ 8] << 0; + k3 *= c3; k3 = ROTL32(k3,17); k3 *= c4; h3 ^= k3; + + case 8: k2 ^= tail[ 7] << 24; + case 7: k2 ^= tail[ 6] << 16; + case 6: k2 ^= tail[ 5] << 8; + case 5: k2 ^= tail[ 4] << 0; + k2 *= c2; k2 = ROTL32(k2,16); k2 *= c3; h2 ^= k2; + + case 4: k1 ^= tail[ 3] << 24; + case 3: k1 ^= tail[ 2] << 16; + case 2: k1 ^= tail[ 1] << 8; + case 1: k1 ^= tail[ 0] << 0; + k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1; + }; + + //---------- + // finalization + + h1 ^= len; h2 ^= len; h3 ^= len; h4 ^= len; + + h1 += h2; h1 += h3; h1 += h4; + h2 += h1; h3 += h1; h4 += h1; + + h1 = fmix32(h1); + h2 = fmix32(h2); + h3 = fmix32(h3); + h4 = fmix32(h4); + + h1 += h2; h1 += h3; h1 += h4; + h2 += h1; h3 += h1; h4 += h1; + + ((uint32_t*)out)[0] = h1; + ((uint32_t*)out)[1] = h2; + ((uint32_t*)out)[2] = h3; + ((uint32_t*)out)[3] = h4; +} + +//----------------------------------------------------------------------------- + +void MurmurHash3_x64_128 ( const void * key, const int len, + const uint32_t seed, void * out ) +{ + const uint8_t * data = (const uint8_t*)key; + const int nblocks = len / 16; + int i; + + uint64_t h1 = seed; + uint64_t h2 = seed; + + uint64_t c1 = BIG_CONSTANT(0x87c37b91114253d5); + uint64_t c2 = BIG_CONSTANT(0x4cf5ad432745937f); + + //---------- + // body + + const uint64_t * blocks = (const uint64_t *)(data); + + for(i = 0; i < nblocks; i++) + { + uint64_t k1 = getblock(blocks,i*2+0); + uint64_t k2 = getblock(blocks,i*2+1); + + k1 *= c1; k1 = ROTL64(k1,31); k1 *= c2; h1 ^= k1; + + h1 = ROTL64(h1,27); h1 += h2; h1 = h1*5+0x52dce729; + + k2 *= c2; k2 = ROTL64(k2,33); k2 *= c1; h2 ^= k2; + + h2 = ROTL64(h2,31); h2 += h1; h2 = h2*5+0x38495ab5; + } + + //---------- + // tail + + const uint8_t * tail = (const uint8_t*)(data + nblocks*16); + + uint64_t k1 = 0; + uint64_t k2 = 0; + + switch(len & 15) + { + case 15: k2 ^= (uint64_t)(tail[14]) << 48; + case 14: k2 ^= (uint64_t)(tail[13]) << 40; + case 13: k2 ^= (uint64_t)(tail[12]) << 32; + case 12: k2 ^= (uint64_t)(tail[11]) << 24; + case 11: k2 ^= (uint64_t)(tail[10]) << 16; + case 10: k2 ^= (uint64_t)(tail[ 9]) << 8; + case 9: k2 ^= (uint64_t)(tail[ 8]) << 0; + k2 *= c2; k2 = ROTL64(k2,33); k2 *= c1; h2 ^= k2; + + case 8: k1 ^= (uint64_t)(tail[ 7]) << 56; + case 7: k1 ^= (uint64_t)(tail[ 6]) << 48; + case 6: k1 ^= (uint64_t)(tail[ 5]) << 40; + case 5: k1 ^= (uint64_t)(tail[ 4]) << 32; + case 4: k1 ^= (uint64_t)(tail[ 3]) << 24; + case 3: k1 ^= (uint64_t)(tail[ 2]) << 16; + case 2: k1 ^= (uint64_t)(tail[ 1]) << 8; + case 1: k1 ^= (uint64_t)(tail[ 0]) << 0; + k1 *= c1; k1 = ROTL64(k1,31); k1 *= c2; h1 ^= k1; + }; + + //---------- + // finalization + + h1 ^= len; h2 ^= len; + + h1 += h2; + h2 += h1; + + h1 = fmix64(h1); + h2 = fmix64(h2); + + h1 += h2; + h2 += h1; + + ((uint64_t*)out)[0] = h1; + ((uint64_t*)out)[1] = h2; +} + +//----------------------------------------------------------------------------- diff --git a/vere/ext/murmur3/vendor/murmur3.h b/vere/ext/murmur3/vendor/murmur3.h new file mode 100644 index 0000000..67c82d9 --- /dev/null +++ b/vere/ext/murmur3/vendor/murmur3.h @@ -0,0 +1,30 @@ +//----------------------------------------------------------------------------- +// MurmurHash3 was written by Austin Appleby, and is placed in the +// public domain. The author hereby disclaims copyright to this source +// code. + +#ifndef _MURMURHASH3_H_ +#define _MURMURHASH3_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +//----------------------------------------------------------------------------- + +void MurmurHash3_x86_32 (const void *key, size_t len, uint32_t seed, void *out); + +void MurmurHash3_x86_128(const void *key, int len, uint32_t seed, void *out); + +void MurmurHash3_x64_128(const void *key, int len, uint32_t seed, void *out); + +//----------------------------------------------------------------------------- + +#ifdef __cplusplus +} +#endif + +#endif // _MURMURHASH3_H_ \ No newline at end of file diff --git a/vere/ext/nasm/.gitattributes b/vere/ext/nasm/.gitattributes new file mode 100644 index 0000000..d94c5fb --- /dev/null +++ b/vere/ext/nasm/.gitattributes @@ -0,0 +1 @@ +/version -merge diff --git a/vere/ext/nasm/.gitignore b/vere/ext/nasm/.gitignore new file mode 100644 index 0000000..db3cb54 --- /dev/null +++ b/vere/ext/nasm/.gitignore @@ -0,0 +1,2 @@ +/.zig-cache/ +/zig-out/ diff --git a/vere/ext/nasm/LICENSE b/vere/ext/nasm/LICENSE new file mode 100644 index 0000000..331e260 --- /dev/null +++ b/vere/ext/nasm/LICENSE @@ -0,0 +1,29 @@ +NASM is now licensed under the 2-clause BSD license, also known as the +simplified BSD license. + + Copyright 1996-2010 the NASM 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. + + 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/vere/ext/nasm/README.md b/vere/ext/nasm/README.md new file mode 100644 index 0000000..f17f214 --- /dev/null +++ b/vere/ext/nasm/README.md @@ -0,0 +1,24 @@ +This is a fork of [NASM](https://nasm.us/), packaged for Zig. Unnecessary files +have been deleted, and the build system has been replaced with `build.zig`. + +Original README follows: + +---------------------------------------------------------------------------- + +NASM, the Netwide Assembler +=========================== + +[![master](https://travis-ci.org/netwide-assembler/nasm.svg?branch=master)](https://travis-ci.org/netwide-assembler/nasm) + +Many many developers all over the net respect NASM for what it is: +a widespread (thus netwide), portable (thus netwide!), very flexible +and mature assembler tool with support for many output formats (thus netwide!!). + +Now we have good news for you: NASM is licensed under the "simplified" +[(2-clause) BSD license](https://opensource.org/licenses/BSD-2-Clause). +This means its development is open to even wider society of programmers +wishing to improve their lovely assembler. + +Visit our [nasm.us](https://www.nasm.us/) website for more details. + +With best regards, the NASM crew. diff --git a/vere/ext/nasm/asm/assemble.c b/vere/ext/nasm/asm/assemble.c new file mode 100644 index 0000000..7eab5ce --- /dev/null +++ b/vere/ext/nasm/asm/assemble.c @@ -0,0 +1,3411 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2022 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * assemble.c code generation for the Netwide Assembler + * + * Bytecode specification + * ---------------------- + * + * + * Codes Mnemonic Explanation + * + * \0 terminates the code. (Unless it's a literal of course.) + * \1..\4 that many literal bytes follow in the code stream + * \5 add 4 to the primary operand number (b, low octdigit) + * \6 add 4 to the secondary operand number (a, middle octdigit) + * \7 add 4 to both the primary and the secondary operand number + * \10..\13 a literal byte follows in the code stream, to be added + * to the register value of operand 0..3 + * \14..\17 the position of index register operand in MIB (BND insns) + * \20..\23 ib a byte immediate operand, from operand 0..3 + * \24..\27 ib,u a zero-extended byte immediate operand, from operand 0..3 + * \30..\33 iw a word immediate operand, from operand 0..3 + * \34..\37 iwd select between \3[0-3] and \4[0-3] depending on 16/32 bit + * assembly mode or the operand-size override on the operand + * \40..\43 id a long immediate operand, from operand 0..3 + * \44..\47 iwdq select between \3[0-3], \4[0-3] and \5[4-7] + * depending on the address size of the instruction. + * \50..\53 rel8 a byte relative operand, from operand 0..3 + * \54..\57 iq a qword immediate operand, from operand 0..3 + * \60..\63 rel16 a word relative operand, from operand 0..3 + * \64..\67 rel select between \6[0-3] and \7[0-3] depending on 16/32 bit + * assembly mode or the operand-size override on the operand + * \70..\73 rel32 a long relative operand, from operand 0..3 + * \74..\77 seg a word constant, from the _segment_ part of operand 0..3 + * \1ab /r a ModRM, calculated on EA in operand a, with the reg + * field the register value of operand b. + * \171\mab /mrb (e.g /3r0) a ModRM, with the reg field taken from operand a, and the m + * and b fields set to the specified values. + * \172\ab /is4 the register number from operand a in bits 7..4, with + * the 4-bit immediate from operand b in bits 3..0. + * \173\xab the register number from operand a in bits 7..4, with + * the value b in bits 3..0. + * \174..\177 the register number from operand 0..3 in bits 7..4, and + * an arbitrary value in bits 3..0 (assembled as zero.) + * \2ab /b a ModRM, calculated on EA in operand a, with the reg + * field equal to digit b. + * \240..\243 this instruction uses EVEX rather than REX or VEX/XOP, with the + * V field taken from operand 0..3. + * \250 this instruction uses EVEX rather than REX or VEX/XOP, with the + * V field set to 1111b. + * + * EVEX prefixes are followed by the sequence: + * \cm\wlp\tup where cm is: + * cc 00m mmm + * c = 2 for EVEX and mmmm is the M field (EVEX.P0[3:0]) + * and wlp is: + * 00 wwl lpp + * [l0] ll = 0 (.128, .lz) + * [l1] ll = 1 (.256) + * [l2] ll = 2 (.512) + * [lig] ll = 3 for EVEX.L'L don't care (always assembled as 0) + * + * [w0] ww = 0 for W = 0 + * [w1] ww = 1 for W = 1 + * [wig] ww = 2 for W don't care (always assembled as 0) + * [ww] ww = 3 for W used as REX.W + * + * [p0] pp = 0 for no prefix + * [60] pp = 1 for legacy prefix 60 + * [f3] pp = 2 + * [f2] pp = 3 + * + * tup is tuple type for Disp8*N from %tuple_codes in insns.pl + * (compressed displacement encoding) + * + * \254..\257 id,s a signed 32-bit operand to be extended to 64 bits. + * \260..\263 this instruction uses VEX/XOP rather than REX, with the + * V field taken from operand 0..3. + * \270 this instruction uses VEX/XOP rather than REX, with the + * V field set to 1111b. + * VEX/XOP prefixes are followed by the sequence: + * \tmm\wlp where mm is the M field; and wlp is: + * 00 wwl lpp + * [l0] ll = 0 for L = 0 (.128, .lz) + * [l1] ll = 1 for L = 1 (.256) + * [lig] ll = 2 for L don't care (always assembled as 0) + * + * [w0] ww = 0 for W = 0 + * [w1 ] ww = 1 for W = 1 + * [wig] ww = 2 for W don't care (always assembled as 0) + * [ww] ww = 3 for W used as REX.W + * + * t = 0 for VEX (C4/C5), t = 1 for XOP (8F). + * + * \271 hlexr instruction takes XRELEASE (F3) with or without lock + * \272 hlenl instruction takes XACQUIRE/XRELEASE with or without lock + * \273 hle instruction takes XACQUIRE/XRELEASE with lock only + * \274..\277 ib,s a byte immediate operand, from operand 0..3, sign-extended + * to the operand size (if o16/o32/o64 present) or the bit size + * \310 a16 indicates fixed 16-bit address size, i.e. optional 0x67. + * \311 a32 indicates fixed 32-bit address size, i.e. optional 0x67. + * \312 adf (disassembler only) invalid with non-default address size. + * \313 a64 indicates fixed 64-bit address size, 0x67 invalid. + * \314 norexb (disassembler only) invalid with REX.B + * \315 norexx (disassembler only) invalid with REX.X + * \316 norexr (disassembler only) invalid with REX.R + * \317 norexw (disassembler only) invalid with REX.W + * \320 o16 indicates fixed 16-bit operand size, i.e. optional 0x66. + * \321 o32 indicates fixed 32-bit operand size, i.e. optional 0x66. + * \322 odf indicates that this instruction is only valid when the + * operand size is the default (instruction to disassembler, + * generates no code in the assembler) + * \323 o64nw indicates fixed 64-bit operand size, REX on extensions only. + * \324 o64 indicates 64-bit operand size requiring REX prefix. + * \325 nohi instruction which always uses spl/bpl/sil/dil + * \326 nof3 instruction not valid with 0xF3 REP prefix. Hint for + disassembler only; for SSE instructions. + * \331 norep instruction not valid with REP prefix. Hint for + * disassembler only; for SSE instructions. + * \332 f2i REP prefix (0xF2 byte) used as opcode extension. + * \333 f3i REP prefix (0xF3 byte) used as opcode extension. + * \334 rex.l LOCK prefix used as REX.R (used in non-64-bit mode) + * \335 repe disassemble a rep (0xF3 byte) prefix as repe not rep. + * \336 mustrep force a REP(E) prefix (0xF3) even if not specified. + * \337 mustrepne force a REPNE prefix (0xF2) even if not specified. + * \336-\337 are still listed as prefixes in the disassembler. + * \340 resb reserve bytes of uninitialized storage. + * Operand 0 had better be a segmentless constant. + * \341 wait this instruction needs a WAIT "prefix" + * \360 np no SSE prefix (== \364\331) + * \361 66 SSE prefix (== \366\331) + * \364 !osp operand-size prefix (0x66) not permitted + * \365 !asp address-size prefix (0x67) not permitted + * \366 operand-size prefix (0x66) used as opcode extension + * \367 address-size prefix (0x67) used as opcode extension + * \370,\371 jcc8 match only if operand 0 meets byte jump criteria. + * jmp8 370 is used for Jcc, 371 is used for JMP. + * \373 jlen assemble 0x03 if bits==16, 0x05 if bits==32; + * used for conditional jump over longer jump + * \374 vsibx|vm32x|vm64x this instruction takes an XMM VSIB memory EA + * \375 vsiby|vm32y|vm64y this instruction takes an YMM VSIB memory EA + * \376 vsibz|vm32z|vm64z this instruction takes an ZMM VSIB memory EA + */ + +#include "compiler.h" + + +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "assemble.h" +#include "insns.h" +#include "tables.h" +#include "disp8.h" +#include "listing.h" +#include "dbginfo.h" + +enum match_result { + /* + * Matching errors. These should be sorted so that more specific + * errors come later in the sequence. + */ + MERR_INVALOP, + MERR_OPSIZEMISSING, + MERR_OPSIZEMISMATCH, + MERR_BRNOTHERE, + MERR_BRNUMMISMATCH, + MERR_MASKNOTHERE, + MERR_DECONOTHERE, + MERR_BADCPU, + MERR_BADMODE, + MERR_BADHLE, + MERR_ENCMISMATCH, + MERR_BADBND, + MERR_BADREPNE, + MERR_REGSETSIZE, + MERR_REGSET, + /* + * Matching success; the conditional ones first + */ + MOK_JUMP, /* Matching OK but needs jmp_match() */ + MOK_GOOD /* Matching unconditionally OK */ +}; + +typedef struct { + enum ea_type type; /* what kind of EA is this? */ + int sib_present; /* is a SIB byte necessary? */ + int bytes; /* # of bytes of offset needed */ + int size; /* lazy - this is sib+bytes+1 */ + uint8_t modrm, sib, rex, rip; /* the bytes themselves */ + int8_t disp8; /* compressed displacement for EVEX */ +} ea; + +#define GEN_SIB(scale, index, base) \ + (((scale) << 6) | ((index) << 3) | ((base))) + +#define GEN_MODRM(mod, reg, rm) \ + (((mod) << 6) | (((reg) & 7) << 3) | ((rm) & 7)) + +static int64_t calcsize(int32_t, int64_t, int, insn *, + const struct itemplate *); +static int emit_prefix(struct out_data *data, const int bits, insn *ins); +static void gencode(struct out_data *data, insn *ins); +static enum match_result find_match(const struct itemplate **tempp, + insn *instruction, + int32_t segment, int64_t offset, int bits); +static enum match_result matches(const struct itemplate *, insn *, int bits); +static opflags_t regflag(const operand *); +static int32_t regval(const operand *); +static int rexflags(int, opflags_t, int); +static int op_rexflags(const operand *, int); +static int op_evexflags(const operand *, int, uint8_t); +static void add_asp(insn *, int); + +static int process_ea(operand *, ea *, int, int, opflags_t, + insn *, enum ea_type, const char **); + +static inline bool absolute_op(const struct operand *o) +{ + return o->segment == NO_SEG && o->wrt == NO_SEG && + !(o->opflags & OPFLAG_RELATIVE); +} + +static int has_prefix(insn * ins, enum prefix_pos pos, int prefix) +{ + return ins->prefixes[pos] == prefix; +} + +static void assert_no_prefix(insn * ins, enum prefix_pos pos) +{ + if (ins->prefixes[pos]) + nasm_nonfatal("invalid %s prefix", prefix_name(ins->prefixes[pos])); +} + +static const char *size_name(int size) +{ + switch (size) { + case 1: + return "byte"; + case 2: + return "word"; + case 4: + return "dword"; + case 8: + return "qword"; + case 10: + return "tword"; + case 16: + return "oword"; + case 32: + return "yword"; + case 64: + return "zword"; + default: + return "???"; + } +} + +static void warn_overflow(int size) +{ + nasm_warn(ERR_PASS2 | WARN_NUMBER_OVERFLOW, "%s data exceeds bounds", + size_name(size)); +} + +static void warn_overflow_const(int64_t data, int size) +{ + if (overflow_general(data, size)) + warn_overflow(size); +} + +static void warn_overflow_out(int64_t data, int size, enum out_flags flags) +{ + bool err; + + if (flags & OUT_SIGNED) + err = overflow_signed(data, size); + else if (flags & OUT_UNSIGNED) + err = overflow_unsigned(data, size); + else + err = overflow_general(data, size); + + if (err) + warn_overflow(size); +} + +/* + * Collect macro-related debug information, if applicable. + */ +static void debug_macro_out(const struct out_data *data) +{ + struct debug_macro_addr *addr; + uint64_t start = data->offset; + uint64_t end = start + data->size; + + addr = debug_macro_get_addr(data->segment); + while (addr) { + if (!addr->len) + addr->start = start; + addr->len = end - addr->start; + addr = addr->up; + } +} + +/* + * This routine wrappers the real output format's output routine, + * in order to pass a copy of the data off to the listing file + * generator at the same time, flatten unnecessary relocations, + * and verify backend compatibility. + */ +/* + * This warning is currently issued by backends, but in the future + * this code should be centralized. + * + *!zeroing [on] RESx in initialized section becomes zero + *! a \c{RESx} directive was used in a section which contains + *! initialized data, and the output format does not support + *! this. Instead, this will be replaced with explicit zero + *! content, which may produce a large output file. + */ +static void out(struct out_data *data) +{ + static struct last_debug_info { + struct src_location where; + int32_t segment; + } dbg; + union { + uint8_t b[8]; + uint64_t q; + } xdata; + size_t asize, amax; + uint64_t zeropad = 0; + int64_t addrval; + int32_t fixseg; /* Segment for which to produce fixed data */ + + if (!data->size) + return; /* Nothing to do */ + + /* + * Convert addresses to RAWDATA if possible + * XXX: not all backends want this for global symbols!!!! + */ + switch (data->type) { + case OUT_ADDRESS: + addrval = data->toffset; + fixseg = NO_SEG; /* Absolute address is fixed data */ + goto address; + + case OUT_RELADDR: + addrval = data->toffset - data->relbase; + fixseg = data->segment; /* Our own segment is fixed data */ + goto address; + + address: + nasm_assert(data->size <= 8); + asize = data->size; + amax = ofmt->maxbits >> 3; /* Maximum address size in bytes */ + if (!(ofmt->flags & OFMT_KEEP_ADDR) && + data->tsegment == fixseg && + data->twrt == NO_SEG) { + if (asize >= (size_t)(data->bits >> 3)) { + /* Support address space wrapping for low-bit modes */ + data->flags &= ~OUT_SIGNMASK; + } + warn_overflow_out(addrval, asize, data->flags); + xdata.q = cpu_to_le64(addrval); + data->data = xdata.b; + data->type = OUT_RAWDATA; + asize = amax = 0; /* No longer an address */ + } + break; + + case OUT_SEGMENT: + nasm_assert(data->size <= 8); + asize = data->size; + amax = 2; + break; + + default: + asize = amax = 0; /* Not an address */ + break; + } + + /* + * If the source location or output segment has changed, + * let the debug backend know. Some backends really don't + * like being given a NULL filename as can happen if we + * use -Lb and expand a macro, so filter out that case. + */ + data->where = src_where(); + if (data->where.filename && + (!src_location_same(data->where, dbg.where) | + (data->segment != dbg.segment))) { + dbg.where = data->where; + dbg.segment = data->segment; + dfmt->linenum(dbg.where.filename, dbg.where.lineno, data->segment); + } + + if (asize > amax) { + if (data->type == OUT_RELADDR || (data->flags & OUT_SIGNED)) { + nasm_nonfatal("%u-bit signed relocation unsupported by output format %s", + (unsigned int)(asize << 3), ofmt->shortname); + } else { + /*! + *!zext-reloc [on] relocation zero-extended to match output format + *! warns that a relocation has been zero-extended due + *! to limitations in the output format. + */ + nasm_warn(WARN_ZEXT_RELOC, + "%u-bit %s relocation zero-extended from %u bits", + (unsigned int)(asize << 3), + data->type == OUT_SEGMENT ? "segment" : "unsigned", + (unsigned int)(amax << 3)); + } + zeropad = data->size - amax; + data->size = amax; + } + lfmt->output(data); + + if (likely(data->segment != NO_SEG)) { + /* + * Collect macro-related information for the debugger, if applicable + */ + if (debug_current_macro) + debug_macro_out(data); + + ofmt->output(data); + } else { + /* Outputting to ABSOLUTE section - only reserve is permitted */ + if (data->type != OUT_RESERVE) + nasm_nonfatal("attempt to assemble code in [ABSOLUTE] space"); + /* No need to push to the backend */ + } + + data->offset += data->size; + data->insoffs += data->size; + + if (zeropad) { + data->type = OUT_ZERODATA; + data->size = zeropad; + lfmt->output(data); + ofmt->output(data); + data->offset += zeropad; + data->insoffs += zeropad; + data->size += zeropad; /* Restore original size value */ + } +} + +static inline void out_rawdata(struct out_data *data, const void *rawdata, + size_t size) +{ + data->type = OUT_RAWDATA; + data->data = rawdata; + data->size = size; + out(data); +} + +static void out_rawbyte(struct out_data *data, uint8_t byte) +{ + data->type = OUT_RAWDATA; + data->data = &byte; + data->size = 1; + out(data); +} + +static inline void out_reserve(struct out_data *data, uint64_t size) +{ + data->type = OUT_RESERVE; + data->size = size; + out(data); +} + +static void out_segment(struct out_data *data, const struct operand *opx) +{ + if (opx->opflags & OPFLAG_RELATIVE) + nasm_nonfatal("segment references cannot be relative"); + + data->type = OUT_SEGMENT; + data->flags = OUT_UNSIGNED; + data->size = 2; + data->toffset = opx->offset; + data->tsegment = ofmt->segbase(opx->segment | 1); + data->twrt = opx->wrt; + out(data); +} + +static void out_imm(struct out_data *data, const struct operand *opx, + int size, enum out_flags sign) +{ + if (opx->segment != NO_SEG && (opx->segment & 1)) { + /* + * This is actually a segment reference, but eval() has + * already called ofmt->segbase() for us. Sigh. + */ + if (size < 2) + nasm_nonfatal("segment reference must be 16 bits"); + + data->type = OUT_SEGMENT; + } else { + data->type = (opx->opflags & OPFLAG_RELATIVE) + ? OUT_RELADDR : OUT_ADDRESS; + } + data->flags = sign; + data->toffset = opx->offset; + data->tsegment = opx->segment; + data->twrt = opx->wrt; + /* + * XXX: improve this if at some point in the future we can + * distinguish the subtrahend in expressions like [foo - bar] + * where bar is a symbol in the current segment. However, at the + * current point, if OPFLAG_RELATIVE is set that subtraction has + * already occurred. + */ + data->relbase = 0; + data->size = size; + out(data); +} + +static void out_reladdr(struct out_data *data, const struct operand *opx, + int size) +{ + if (opx->opflags & OPFLAG_RELATIVE) + nasm_nonfatal("invalid use of self-relative expression"); + + data->type = OUT_RELADDR; + data->flags = OUT_SIGNED; + data->size = size; + data->toffset = opx->offset; + data->tsegment = opx->segment; + data->twrt = opx->wrt; + data->relbase = data->offset + (data->inslen - data->insoffs); + out(data); +} + +static bool jmp_match(int32_t segment, int64_t offset, int bits, + insn * ins, const struct itemplate *temp) +{ + int64_t isize; + const uint8_t *code = temp->code; + uint8_t c = code[0]; + bool is_byte; + + if (((c & ~1) != 0370) || (ins->oprs[0].type & STRICT)) + return false; + if (!optimizing.level || (optimizing.flag & OPTIM_DISABLE_JMP_MATCH)) + return false; + if (optimizing.level < 0 && c == 0371) + return false; + + isize = calcsize(segment, offset, bits, ins, temp); + + if (ins->oprs[0].opflags & OPFLAG_UNKNOWN) + /* Be optimistic in pass 1 */ + return true; + + if (ins->oprs[0].segment != segment) + return false; + + isize = ins->oprs[0].offset - offset - isize; /* isize is delta */ + is_byte = (isize >= -128 && isize <= 127); /* is it byte size? */ + + if (is_byte && c == 0371 && ins->prefixes[PPS_REP] == P_BND) { + /* jmp short (opcode eb) cannot be used with bnd prefix. */ + ins->prefixes[PPS_REP] = P_none; + /*! + *!prefix-bnd [on] invalid BND prefix + *!=bnd + *! warns about ineffective use of the \c{BND} prefix when the + *! \c{JMP} instruction is converted to the \c{SHORT} form. + *! This should be extremely rare since the short \c{JMP} only + *! is applicable to jumps inside the same module, but if + *! it is legitimate, it may be necessary to use + *! \c{bnd jmp dword}. + */ + nasm_warn(WARN_PREFIX_BND|ERR_PASS2 , + "jmp short does not init bnd regs - bnd prefix dropped"); + } + + return is_byte; +} + +static inline int64_t merge_resb(insn *ins, int64_t isize) +{ + int nbytes = resb_bytes(ins->opcode); + + if (likely(!nbytes)) + return isize; + + if (isize != nbytes * ins->oprs[0].offset) + return isize; /* Has prefixes of some sort */ + + ins->oprs[0].offset *= ins->times; + isize *= ins->times; + ins->times = 1; + return isize; +} + +/* This must be handle non-power-of-2 alignment values */ +static inline size_t pad_bytes(size_t len, size_t align) +{ + size_t partial = len % align; + return partial ? align - partial : 0; +} + +static void out_eops(struct out_data *data, const extop *e) +{ + while (e) { + size_t dup = e->dup; + + switch (e->type) { + case EOT_NOTHING: + break; + + case EOT_EXTOP: + while (dup--) + out_eops(data, e->val.subexpr); + break; + + case EOT_DB_NUMBER: + if (e->elem > 8) { + nasm_nonfatal("integer supplied as %d-bit data", + e->elem << 3); + } else { + while (dup--) { + data->insoffs = 0; + data->inslen = data->size = e->elem; + data->tsegment = e->val.num.segment; + data->toffset = e->val.num.offset; + data->twrt = e->val.num.wrt; + data->relbase = 0; + if (e->val.num.segment != NO_SEG && + (e->val.num.segment & 1)) { + data->type = OUT_SEGMENT; + data->flags = OUT_UNSIGNED; + } else { + data->type = e->val.num.relative + ? OUT_RELADDR : OUT_ADDRESS; + data->flags = OUT_WRAP; + } + out(data); + } + } + break; + + case EOT_DB_FLOAT: + case EOT_DB_STRING: + case EOT_DB_STRING_FREE: + { + size_t pad, len; + + pad = pad_bytes(e->val.string.len, e->elem); + len = e->val.string.len + pad; + + while (dup--) { + data->insoffs = 0; + data->inslen = len; + out_rawdata(data, e->val.string.data, e->val.string.len); + if (pad) + out_rawdata(data, zero_buffer, pad); + } + break; + } + + case EOT_DB_RESERVE: + data->insoffs = 0; + data->inslen = dup * e->elem; + out_reserve(data, data->inslen); + break; + } + + e = e->next; + } +} + +/* This is totally just a wild guess what is reasonable... */ +#define INCBIN_MAX_BUF (ZERO_BUF_SIZE * 16) + +int64_t assemble(int32_t segment, int64_t start, int bits, insn *instruction) +{ + struct out_data data; + const struct itemplate *temp; + enum match_result m; + + if (instruction->opcode == I_none) + return 0; + + nasm_zero(data); + data.offset = start; + data.segment = segment; + data.itemp = NULL; + data.bits = bits; + + if (opcode_is_db(instruction->opcode)) { + out_eops(&data, instruction->eops); + } else if (instruction->opcode == I_INCBIN) { + const char *fname = instruction->eops->val.string.data; + FILE *fp; + size_t t = instruction->times; /* INCBIN handles TIMES by itself */ + off_t base = 0; + off_t len; + const void *map = NULL; + char *buf = NULL; + size_t blk = 0; /* Buffered I/O block size */ + size_t m = 0; /* Bytes last read */ + + if (!t) + goto done; + + fp = nasm_open_read(fname, NF_BINARY|NF_FORMAP); + if (!fp) { + nasm_nonfatal("`incbin': unable to open file `%s'", + fname); + goto done; + } + + len = nasm_file_size(fp); + + if (len == (off_t)-1) { + nasm_nonfatal("`incbin': unable to get length of file `%s'", + fname); + goto close_done; + } + + if (instruction->eops->next) { + base = instruction->eops->next->val.num.offset; + if (base >= len) { + len = 0; + } else { + len -= base; + if (instruction->eops->next->next && + len > (off_t)instruction->eops->next->next->val.num.offset) + len = (off_t)instruction->eops->next->next->val.num.offset; + } + } + + lfmt->set_offset(data.offset); + lfmt->uplevel(LIST_INCBIN, len); + + if (!len) + goto end_incbin; + + /* Try to map file data */ + map = nasm_map_file(fp, base, len); + if (!map) { + blk = len < (off_t)INCBIN_MAX_BUF ? (size_t)len : INCBIN_MAX_BUF; + buf = nasm_malloc(blk); + } + + while (t--) { + /* + * Consider these irrelevant for INCBIN, since it is fully + * possible that these might be (way) bigger than an int + * can hold; there is, however, no reason to widen these + * types just for INCBIN. data.inslen == 0 signals to the + * backend that these fields are meaningless, if at all + * needed. + */ + data.insoffs = 0; + data.inslen = 0; + + if (map) { + out_rawdata(&data, map, len); + } else if ((off_t)m == len) { + out_rawdata(&data, buf, len); + } else { + off_t l = len; + + if (fseeko(fp, base, SEEK_SET) < 0 || ferror(fp)) { + nasm_nonfatal("`incbin': unable to seek on file `%s'", + fname); + goto end_incbin; + } + while (l > 0) { + m = fread(buf, 1, l < (off_t)blk ? (size_t)l : blk, fp); + if (!m || feof(fp)) { + /* + * This shouldn't happen unless the file + * actually changes while we are reading + * it. + */ + nasm_nonfatal("`incbin': unexpected EOF while" + " reading file `%s'", fname); + goto end_incbin; + } + out_rawdata(&data, buf, m); + l -= m; + } + } + } + end_incbin: + lfmt->downlevel(LIST_INCBIN); + if (instruction->times > 1) { + lfmt->uplevel(LIST_TIMES, instruction->times); + lfmt->downlevel(LIST_TIMES); + } + if (ferror(fp)) { + nasm_nonfatal("`incbin': error while" + " reading file `%s'", fname); + } + close_done: + if (buf) + nasm_free(buf); + if (map) + nasm_unmap_file(map, len); + fclose(fp); + done: + instruction->times = 1; /* Tell the upper layer not to iterate */ + ; + } else { + /* "Real" instruction */ + + /* Check to see if we need an address-size prefix */ + add_asp(instruction, bits); + + m = find_match(&temp, instruction, data.segment, data.offset, bits); + + if (m == MOK_GOOD) { + /* Matches! */ + if (unlikely(itemp_has(temp, IF_OBSOLETE))) { + errflags warning; + const char *whathappened; + const char *validity; + bool never = itemp_has(temp, IF_NEVER); + + /* + * If IF_OBSOLETE is set, warn the user. Different + * warning classes for "obsolete but valid for this + * specific CPU" and "obsolete and gone." + * + *!obsolete-removed [on] instruction obsolete and removed on the target CPU + *! warns for an instruction which has been removed + *! from the architecture, and is no longer included + *! in the CPU definition given in the \c{[CPU]} + *! directive, for example \c{POP CS}, the opcode for + *! which, \c{0Fh}, instead is an opcode prefix on + *! CPUs newer than the first generation 8086. + * + *!obsolete-nop [on] instruction obsolete and is a noop on the target CPU + *! warns for an instruction which has been removed + *! from the architecture, but has been architecturally + *! defined to be a noop for future CPUs. + * + *!obsolete-valid [on] instruction obsolete but valid on the target CPU + *! warns for an instruction which has been removed + *! from the architecture, but is still valid on the + *! specific CPU given in the \c{CPU} directive. Code + *! using these instructions is most likely not + *! forward compatible. + */ + + whathappened = never ? "never implemented" : "obsolete"; + + if (!never && !iflag_cmp_cpu_level(&insns_flags[temp->iflag_idx], &cpu)) { + warning = WARN_OBSOLETE_VALID; + validity = "but valid on"; + } else if (itemp_has(temp, IF_NOP)) { + warning = WARN_OBSOLETE_NOP; + validity = "and is a noop on"; + } else { + warning = WARN_OBSOLETE_REMOVED; + validity = never ? "and invalid on" : "and removed from"; + } + + nasm_warn(warning, "instruction %s %s the target CPU", + whathappened, validity); + } + + data.itemp = temp; + data.bits = bits; + data.insoffs = 0; + + data.inslen = calcsize(data.segment, data.offset, + bits, instruction, temp); + nasm_assert(data.inslen >= 0); + data.inslen = merge_resb(instruction, data.inslen); + + gencode(&data, instruction); + nasm_assert(data.insoffs == data.inslen); + } else { + /* No match */ + switch (m) { + case MERR_OPSIZEMISSING: + nasm_nonfatal("operation size not specified"); + break; + case MERR_OPSIZEMISMATCH: + nasm_nonfatal("mismatch in operand sizes"); + break; + case MERR_BRNOTHERE: + nasm_nonfatal("broadcast not permitted on this operand"); + break; + case MERR_BRNUMMISMATCH: + nasm_nonfatal("mismatch in the number of broadcasting elements"); + break; + case MERR_MASKNOTHERE: + nasm_nonfatal("mask not permitted on this operand"); + break; + case MERR_DECONOTHERE: + nasm_nonfatal("unsupported mode decorator for instruction"); + break; + case MERR_BADCPU: + nasm_nonfatal("no instruction for this cpu level"); + break; + case MERR_BADMODE: + nasm_nonfatal("instruction not supported in %d-bit mode", bits); + break; + case MERR_ENCMISMATCH: + if (!instruction->prefixes[PPS_REX]) { + nasm_nonfatal("instruction not encodable without explicit prefix"); + } else { + nasm_nonfatal("instruction not encodable with %s prefix", + prefix_name(instruction->prefixes[PPS_REX])); + } + break; + case MERR_BADBND: + case MERR_BADREPNE: + nasm_nonfatal("%s prefix is not allowed", + prefix_name(instruction->prefixes[PPS_REP])); + break; + case MERR_REGSETSIZE: + nasm_nonfatal("invalid register set size"); + break; + case MERR_REGSET: + nasm_nonfatal("register set not valid for operand"); + break; + default: + nasm_nonfatal("invalid combination of opcode and operands"); + break; + } + + instruction->times = 1; /* Avoid repeated error messages */ + } + } + return data.offset - start; +} + +static int32_t eops_typeinfo(const extop *e) +{ + int32_t typeinfo = 0; + + while (e) { + switch (e->type) { + case EOT_NOTHING: + break; + + case EOT_EXTOP: + typeinfo |= eops_typeinfo(e->val.subexpr); + break; + + case EOT_DB_FLOAT: + switch (e->elem) { + case 1: typeinfo |= TY_BYTE; break; + case 2: typeinfo |= TY_WORD; break; + case 4: typeinfo |= TY_FLOAT; break; + case 8: typeinfo |= TY_QWORD; break; /* double? */ + case 10: typeinfo |= TY_TBYTE; break; /* long double? */ + case 16: typeinfo |= TY_YWORD; break; + case 32: typeinfo |= TY_ZWORD; break; + default: break; + } + break; + + default: + switch (e->elem) { + case 1: typeinfo |= TY_BYTE; break; + case 2: typeinfo |= TY_WORD; break; + case 4: typeinfo |= TY_DWORD; break; + case 8: typeinfo |= TY_QWORD; break; + case 10: typeinfo |= TY_TBYTE; break; + case 16: typeinfo |= TY_YWORD; break; + case 32: typeinfo |= TY_ZWORD; break; + default: break; + } + break; + } + e = e->next; + } + + return typeinfo; +} + +static inline void debug_set_db_type(insn *instruction) +{ + + int32_t typeinfo = TYS_ELEMENTS(instruction->operands); + + typeinfo |= eops_typeinfo(instruction->eops); + dfmt->debug_typevalue(typeinfo); +} + +static void debug_set_type(insn *instruction) +{ + int32_t typeinfo; + + if (opcode_is_resb(instruction->opcode)) { + typeinfo = TYS_ELEMENTS(instruction->oprs[0].offset); + + switch (instruction->opcode) { + case I_RESB: + typeinfo |= TY_BYTE; + break; + case I_RESW: + typeinfo |= TY_WORD; + break; + case I_RESD: + typeinfo |= TY_DWORD; + break; + case I_RESQ: + typeinfo |= TY_QWORD; + break; + case I_REST: + typeinfo |= TY_TBYTE; + break; + case I_RESO: + typeinfo |= TY_OWORD; + break; + case I_RESY: + typeinfo |= TY_YWORD; + break; + case I_RESZ: + typeinfo |= TY_ZWORD; + break; + default: + panic(); + } + } else { + typeinfo = TY_LABEL; + } + + dfmt->debug_typevalue(typeinfo); +} + + +/* Proecess an EQU directive */ +static void define_equ(insn * instruction) +{ + if (!instruction->label) { + nasm_nonfatal("EQU not preceded by label"); + } else if (instruction->operands == 1 && + (instruction->oprs[0].type & IMMEDIATE) && + instruction->oprs[0].wrt == NO_SEG) { + define_label(instruction->label, + instruction->oprs[0].segment, + instruction->oprs[0].offset, false); + } else if (instruction->operands == 2 + && (instruction->oprs[0].type & IMMEDIATE) + && (instruction->oprs[0].type & COLON) + && instruction->oprs[0].segment == NO_SEG + && instruction->oprs[0].wrt == NO_SEG + && (instruction->oprs[1].type & IMMEDIATE) + && instruction->oprs[1].segment == NO_SEG + && instruction->oprs[1].wrt == NO_SEG) { + define_label(instruction->label, + instruction->oprs[0].offset | SEG_ABS, + instruction->oprs[1].offset, false); + } else { + nasm_nonfatal("bad syntax for EQU"); + } +} + +static int64_t len_extops(const extop *e) +{ + int64_t isize = 0; + size_t pad; + + while (e) { + switch (e->type) { + case EOT_NOTHING: + break; + + case EOT_EXTOP: + isize += e->dup * len_extops(e->val.subexpr); + break; + + case EOT_DB_STRING: + case EOT_DB_STRING_FREE: + case EOT_DB_FLOAT: + pad = pad_bytes(e->val.string.len, e->elem); + isize += e->dup * (e->val.string.len + pad); + break; + + case EOT_DB_NUMBER: + warn_overflow_const(e->val.num.offset, e->elem); + isize += e->dup * e->elem; + break; + + case EOT_DB_RESERVE: + isize += e->dup * e->elem; + break; + } + + e = e->next; + } + + return isize; +} + +int64_t insn_size(int32_t segment, int64_t offset, int bits, insn *instruction) +{ + const struct itemplate *temp; + enum match_result m; + int64_t isize = 0; + + if (instruction->opcode == I_none) { + return 0; + } else if (instruction->opcode == I_EQU) { + define_equ(instruction); + return 0; + } else if (opcode_is_db(instruction->opcode)) { + isize = len_extops(instruction->eops); + debug_set_db_type(instruction); + return isize; + } else if (instruction->opcode == I_INCBIN) { + const extop *e = instruction->eops; + const char *fname = e->val.string.data; + off_t len; + + len = nasm_file_size_by_path(fname); + if (len == (off_t)-1) { + nasm_nonfatal("`incbin': unable to get length of file `%s'", + fname); + return 0; + } + + e = e->next; + if (e) { + if (len <= (off_t)e->val.num.offset) { + len = 0; + } else { + len -= e->val.num.offset; + e = e->next; + if (e && len > (off_t)e->val.num.offset) { + len = (off_t)e->val.num.offset; + } + } + } + + len *= instruction->times; + instruction->times = 1; /* Tell the upper layer to not iterate */ + + return len; + } else { + /* Normal instruction, or RESx */ + + /* Check to see if we need an address-size prefix */ + add_asp(instruction, bits); + + m = find_match(&temp, instruction, segment, offset, bits); + if (m != MOK_GOOD) + return -1; /* No match */ + + isize = calcsize(segment, offset, bits, instruction, temp); + debug_set_type(instruction); + isize = merge_resb(instruction, isize); + + return isize; + } +} + +static void bad_hle_warn(const insn * ins, uint8_t hleok) +{ + enum prefixes rep_pfx = ins->prefixes[PPS_REP]; + enum whatwarn { w_none, w_lock, w_inval } ww; + static const enum whatwarn warn[2][4] = + { + { w_inval, w_inval, w_none, w_lock }, /* XACQUIRE */ + { w_inval, w_none, w_none, w_lock }, /* XRELEASE */ + }; + unsigned int n; + + n = (unsigned int)rep_pfx - P_XACQUIRE; + if (n > 1) + return; /* Not XACQUIRE/XRELEASE */ + + ww = warn[n][hleok]; + if (!is_class(MEMORY, ins->oprs[0].type)) + ww = w_inval; /* HLE requires operand 0 to be memory */ + + /*! + *!prefix-hle [on] invalid HLE prefix + *!=hle + *! warns about invalid use of the HLE \c{XACQUIRE} or \c{XRELEASE} + *! prefixes. + */ + switch (ww) { + case w_none: + break; + + case w_lock: + if (ins->prefixes[PPS_LOCK] != P_LOCK) { + nasm_warn(WARN_PREFIX_HLE|ERR_PASS2, + "%s with this instruction requires lock", + prefix_name(rep_pfx)); + } + break; + + case w_inval: + nasm_warn(WARN_PREFIX_HLE|ERR_PASS2, + "%s invalid with this instruction", + prefix_name(rep_pfx)); + break; + } +} + +/* Common construct */ +#define case3(x) case (x): case (x)+1: case (x)+2 +#define case4(x) case3(x): case (x)+3 + +static int64_t calcsize(int32_t segment, int64_t offset, int bits, + insn * ins, const struct itemplate *temp) +{ + const uint8_t *codes = temp->code; + int64_t length = 0; + uint8_t c; + int rex_mask = ~0; + int op1, op2; + struct operand *opx; + uint8_t opex = 0; + enum ea_type eat; + uint8_t hleok = 0; + bool lockcheck = true; + enum reg_enum mib_index = R_none; /* For a separate index reg form */ + const char *errmsg; + + ins->rex = 0; /* Ensure REX is reset */ + eat = EA_SCALAR; /* Expect a scalar EA */ + memset(ins->evex_p, 0, 3); /* Ensure EVEX is reset */ + + if (ins->prefixes[PPS_OSIZE] == P_O64) + ins->rex |= REX_W; + + (void)segment; /* Don't warn that this parameter is unused */ + (void)offset; /* Don't warn that this parameter is unused */ + + while (*codes) { + c = *codes++; + op1 = (c & 3) + ((opex & 1) << 2); + op2 = ((c >> 3) & 3) + ((opex & 2) << 1); + opx = &ins->oprs[op1]; + opex = 0; /* For the next iteration */ + + switch (c) { + case4(01): + codes += c, length += c; + break; + + case3(05): + opex = c; + break; + + case4(010): + ins->rex |= + op_rexflags(opx, REX_B|REX_H|REX_P|REX_W); + codes++, length++; + break; + + case4(014): + /* this is an index reg of a split SIB operand */ + mib_index = opx->basereg; + break; + + case4(020): + case4(024): + length++; + break; + + case4(030): + length += 2; + break; + + case4(034): + if (opx->type & (BITS16 | BITS32 | BITS64)) + length += (opx->type & BITS16) ? 2 : 4; + else + length += (bits == 16) ? 2 : 4; + break; + + case4(040): + length += 4; + break; + + case4(044): + length += ins->addr_size >> 3; + break; + + case4(050): + length++; + break; + + case4(054): + length += 8; /* MOV reg64/imm */ + break; + + case4(060): + length += 2; + break; + + case4(064): + if (opx->type & (BITS16 | BITS32 | BITS64)) + length += (opx->type & BITS16) ? 2 : 4; + else + length += (bits == 16) ? 2 : 4; + break; + + case4(070): + length += 4; + break; + + case4(074): + length += 2; + break; + + case 0171: + c = *codes++; + op2 = (op2 & ~3) | ((c >> 3) & 3); + opx = &ins->oprs[op2]; + ins->rex |= op_rexflags(opx, REX_R|REX_H|REX_P|REX_W); + length++; + break; + + case 0172: + case 0173: + codes++; + length++; + break; + + case4(0174): + length++; + break; + + case4(0240): + ins->rex |= REX_EV; + ins->vexreg = regval(opx); + ins->evex_p[2] |= op_evexflags(opx, EVEX_P2VP, 2); /* High-16 NDS */ + ins->vex_cm = *codes++; + ins->vex_wlp = *codes++; + ins->evex_tuple = (*codes++ - 0300); + break; + + case 0250: + ins->rex |= REX_EV; + ins->vexreg = 0; + ins->vex_cm = *codes++; + ins->vex_wlp = *codes++; + ins->evex_tuple = (*codes++ - 0300); + break; + + case4(0254): + length += 4; + break; + + case4(0260): + ins->rex |= REX_V; + ins->vexreg = regval(opx); + ins->vex_cm = *codes++; + ins->vex_wlp = *codes++; + break; + + case 0270: + ins->rex |= REX_V; + ins->vexreg = 0; + ins->vex_cm = *codes++; + ins->vex_wlp = *codes++; + break; + + case3(0271): + hleok = c & 3; + break; + + case4(0274): + length++; + break; + + case4(0300): + break; + + case 0310: + if (bits == 64) + return -1; + length += (bits != 16) && !has_prefix(ins, PPS_ASIZE, P_A16); + break; + + case 0311: + length += (bits != 32) && !has_prefix(ins, PPS_ASIZE, P_A32); + break; + + case 0312: + break; + + case 0313: + if (bits != 64 || has_prefix(ins, PPS_ASIZE, P_A16) || + has_prefix(ins, PPS_ASIZE, P_A32)) + return -1; + break; + + case4(0314): + break; + + case 0320: + { + /*! prefix-opsize [on] invalid operand size prefix + *! warns that an operand prefix (\c{o16}, \c{o32}, \c{o64}, + *! \c{osp}) invalid for the specified instruction has been specified. + *! The operand prefix will be ignored by the assembler. + */ + enum prefixes pfx = ins->prefixes[PPS_OSIZE]; + if (pfx == P_O16) + break; + if (pfx != P_none) + nasm_warn(WARN_PREFIX_OPSIZE|ERR_PASS2, + "invalid operand size prefix, must be o16"); + else + ins->prefixes[PPS_OSIZE] = P_O16; + break; + } + + case 0321: + { + enum prefixes pfx = ins->prefixes[PPS_OSIZE]; + if (pfx == P_O32) + break; + if (pfx != P_none) + nasm_warn(WARN_PREFIX_OPSIZE|ERR_PASS2, + "invalid operand size prefix, must be o32"); + else + ins->prefixes[PPS_OSIZE] = P_O32; + break; + } + + case 0322: + break; + + case 0323: + rex_mask &= ~REX_W; + break; + + case 0324: + ins->rex |= REX_W; + break; + + case 0325: + ins->rex |= REX_NH; + break; + + case 0326: + break; + + case 0331: + break; + + case 0332: + case 0333: + length++; + break; + + case 0334: + ins->rex |= REX_L; + break; + + case 0335: + break; + + case 0336: + if (!ins->prefixes[PPS_REP]) + ins->prefixes[PPS_REP] = P_REP; + break; + + case 0337: + if (!ins->prefixes[PPS_REP]) + ins->prefixes[PPS_REP] = P_REPNE; + break; + + case 0340: + /*! + *!forward [on] forward reference may have unpredictable results + *! warns that a forward reference is used which may have + *! unpredictable results, notably in a \c{RESB}-type + *! pseudo-instruction. These would be \i\e{critical + *! expressions} (see \k{crit}) but are permitted in a + *! handful of cases for compatibility with older + *! versions of NASM. This warning should be treated as a + *! severe programming error as the code could break at + *! any time for any number of reasons. + */ + if (!absolute_op(&ins->oprs[0])) + nasm_nonfatal("attempt to reserve non-constant" + " quantity of BSS space"); + else if (ins->oprs[0].opflags & OPFLAG_FORWARD) + nasm_warn(WARN_FORWARD, "forward reference in RESx " + "can have unpredictable results"); + else + length += ins->oprs[0].offset * resb_bytes(ins->opcode); + break; + + case 0341: + if (!ins->prefixes[PPS_WAIT]) + ins->prefixes[PPS_WAIT] = P_WAIT; + break; + + case 0360: + break; + + case 0361: + length++; + break; + + case 0364: + case 0365: + break; + + case 0366: + case 0367: + length++; + break; + + case 0370: + case 0371: + break; + + case 0373: + length++; + break; + + case 0374: + eat = EA_XMMVSIB; + break; + + case 0375: + eat = EA_YMMVSIB; + break; + + case 0376: + eat = EA_ZMMVSIB; + break; + + case4(0100): + case4(0110): + case4(0120): + case4(0130): + case4(0200): + case4(0204): + case4(0210): + case4(0214): + case4(0220): + case4(0224): + case4(0230): + case4(0234): + { + ea ea_data; + int rfield; + opflags_t rflags; + struct operand *opy = &ins->oprs[op2]; + struct operand *op_er_sae; + + ea_data.rex = 0; /* Ensure ea.REX is initially 0 */ + + if (c <= 0177) { + /* pick rfield from operand b (opx) */ + rflags = regflag(opx); + rfield = nasm_regvals[opx->basereg]; + } else { + rflags = 0; + rfield = c & 7; + } + + /* EVEX.b1 : evex_brerop contains the operand position */ + op_er_sae = (ins->evex_brerop >= 0 ? + &ins->oprs[ins->evex_brerop] : NULL); + + if (op_er_sae && (op_er_sae->decoflags & (ER | SAE))) { + /* set EVEX.b */ + ins->evex_p[2] |= EVEX_P2B; + if (op_er_sae->decoflags & ER) { + /* set EVEX.RC (rounding control) */ + ins->evex_p[2] |= ((ins->evex_rm - BRC_RN) << 5) + & EVEX_P2RC; + } + } else { + /* set EVEX.L'L (vector length) */ + ins->evex_p[2] |= ((ins->vex_wlp << (5 - 2)) & EVEX_P2LL); + ins->evex_p[1] |= ((ins->vex_wlp << (7 - 4)) & EVEX_P1W); + if (opy->decoflags & BRDCAST_MASK) { + /* set EVEX.b */ + ins->evex_p[2] |= EVEX_P2B; + } + } + + if (itemp_has(temp, IF_MIB)) { + opy->eaflags |= EAF_MIB; + /* + * if a separate form of MIB (ICC style) is used, + * the index reg info is merged into mem operand + */ + if (mib_index != R_none) { + opy->indexreg = mib_index; + opy->scale = 1; + opy->hintbase = mib_index; + opy->hinttype = EAH_NOTBASE; + } + } + + /* SIB encoding required */ + if (itemp_has(temp, IF_SIB)) + opy->eaflags |= EAF_SIB; + + if (process_ea(opy, &ea_data, bits, + rfield, rflags, ins, eat, &errmsg)) { + nasm_nonfatal("%s", errmsg); + return -1; + } else { + ins->rex |= ea_data.rex; + length += ea_data.size; + } + } + break; + + default: + nasm_panic("internal instruction table corrupt" + ": instruction code \\%o (0x%02X) given", c, c); + break; + } + } + + ins->rex &= rex_mask; + + if (ins->rex & REX_NH) { + if (ins->rex & REX_H) { + nasm_nonfatal("instruction cannot use high registers"); + return -1; + } + ins->rex &= ~REX_P; /* Don't force REX prefix due to high reg */ + } + + switch (ins->prefixes[PPS_REX]) { + case P_EVEX: + if (!(ins->rex & REX_EV)) + return -1; + break; + case P_VEX: + case P_VEX3: + case P_VEX2: + if (!(ins->rex & REX_V)) + return -1; + break; + case P_REX: + if (ins->rex & (REX_V|REX_EV)) + return -1; + ins->rex |= REX_P; /* Force REX prefix */ + break; + default: + break; + } + + if (ins->rex & (REX_V | REX_EV)) { + int bad32 = REX_R|REX_W|REX_X|REX_B; + + if (ins->rex & REX_H) { + nasm_nonfatal("cannot use high register in AVX instruction"); + return -1; + } + switch (ins->vex_wlp & 060) { + case 000: + case 040: + ins->rex &= ~REX_W; + break; + case 020: + ins->rex |= REX_W; + bad32 &= ~REX_W; + break; + case 060: + /* Follow REX_W */ + break; + } + + if (bits != 64 && ((ins->rex & bad32) || ins->vexreg > 7)) { + nasm_nonfatal("invalid operands in non-64-bit mode"); + return -1; + } else if (!(ins->rex & REX_EV) && + ((ins->vexreg > 15) || (ins->evex_p[0] & 0xf0))) { + nasm_nonfatal("invalid high-16 register in non-AVX-512"); + return -1; + } + if (ins->rex & REX_EV) { + length += 4; + } else if (ins->vex_cm != 1 || (ins->rex & (REX_W|REX_X|REX_B)) || + ins->prefixes[PPS_REX] == P_VEX3) { + if (ins->prefixes[PPS_REX] == P_VEX2) + nasm_nonfatal("instruction not encodable with {vex2} prefix"); + length += 3; + } else { + length += 2; + } + } else if (ins->rex & REX_MASK) { + if (ins->rex & REX_H) { + nasm_nonfatal("cannot use high byte register in rex instruction"); + return -1; + } else if (bits == 64) { + length++; + } else if ((ins->rex & REX_L) && + !(ins->rex & (REX_P|REX_W|REX_X|REX_B)) && + iflag_cpu_level_ok(&cpu, IF_X86_64)) { + /* LOCK-as-REX.R */ + assert_no_prefix(ins, PPS_LOCK); + lockcheck = false; /* Already errored, no need for warning */ + length++; + } else { + nasm_nonfatal("invalid operands in non-64-bit mode"); + return -1; + } + } + + if (has_prefix(ins, PPS_LOCK, P_LOCK) && lockcheck && + (!itemp_has(temp,IF_LOCK) || !is_class(MEMORY, ins->oprs[0].type))) { + /*! + *!prefix-lock [on] LOCK prefix on unlockable instructions + *!=lock + *! warns about \c{LOCK} prefixes on unlockable instructions. + */ + nasm_warn(WARN_PREFIX_LOCK|ERR_PASS2 , "instruction is not lockable"); + } + + bad_hle_warn(ins, hleok); + + /* + * when BND prefix is set by DEFAULT directive, + * BND prefix is added to every appropriate instruction line + * unless it is overridden by NOBND prefix. + */ + if (globalbnd && + (itemp_has(temp, IF_BND) && !has_prefix(ins, PPS_REP, P_NOBND))) + ins->prefixes[PPS_REP] = P_BND; + + /* + * Add length of legacy prefixes + */ + length += emit_prefix(NULL, bits, ins); + + return length; +} + +static inline void emit_rex(struct out_data *data, insn *ins) +{ + if (data->bits == 64) { + if ((ins->rex & REX_MASK) && + !(ins->rex & (REX_V | REX_EV)) && + !ins->rex_done) { + uint8_t rex = (ins->rex & REX_MASK) | REX_P; + out_rawbyte(data, rex); + ins->rex_done = true; + } + } +} + +static int emit_prefix(struct out_data *data, const int bits, insn *ins) +{ + int bytes = 0; + int j; + + for (j = 0; j < MAXPREFIX; j++) { + uint8_t c = 0; + switch (ins->prefixes[j]) { + case P_WAIT: + c = 0x9B; + break; + case P_LOCK: + c = 0xF0; + break; + case P_REPNE: + case P_REPNZ: + case P_XACQUIRE: + case P_BND: + c = 0xF2; + break; + case P_REPE: + case P_REPZ: + case P_REP: + case P_XRELEASE: + c = 0xF3; + break; + case R_CS: + /*! + *!prefix-seg [on] segment prefix ignored in 64-bit mode + *! warns that an \c{es}, \c{cs}, \c{ss} or \c{ds} segment override + *! prefix has no effect in 64-bit mode. The prefix will still be + *! generated as requested. + */ + if (bits == 64) + nasm_warn(WARN_PREFIX_SEG|ERR_PASS2, "cs segment base generated, " + "but will be ignored in 64-bit mode"); + c = 0x2E; + break; + case R_DS: + if (bits == 64) + nasm_warn(WARN_PREFIX_SEG|ERR_PASS2, "ds segment base generated, " + "but will be ignored in 64-bit mode"); + c = 0x3E; + break; + case R_ES: + if (bits == 64) + nasm_warn(WARN_PREFIX_SEG|ERR_PASS2, "es segment base generated, " + "but will be ignored in 64-bit mode"); + c = 0x26; + break; + case R_FS: + c = 0x64; + break; + case R_GS: + c = 0x65; + break; + case R_SS: + if (bits == 64) { + nasm_warn(WARN_PREFIX_SEG|ERR_PASS2, "ss segment base generated, " + "but will be ignored in 64-bit mode"); + } + c = 0x36; + break; + case R_SEGR6: + case R_SEGR7: + nasm_nonfatal("segr6 and segr7 cannot be used as prefixes"); + break; + case P_A16: + if (bits == 64) { + nasm_nonfatal("16-bit addressing is not supported " + "in 64-bit mode"); + } else if (bits != 16) + c = 0x67; + break; + case P_A32: + if (bits != 32) + c = 0x67; + break; + case P_A64: + if (bits != 64) { + nasm_nonfatal("64-bit addressing is only supported " + "in 64-bit mode"); + } + break; + case P_ASP: + c = 0x67; + break; + case P_O16: + if (bits != 16) + c = 0x66; + break; + case P_O32: + if (bits == 16) + c = 0x66; + break; + case P_O64: + /* REX.W */ + break; + case P_OSP: + c = 0x66; + break; + case P_REX: + case P_VEX: + case P_EVEX: + case P_VEX3: + case P_VEX2: + case P_NOBND: + case P_none: + break; + default: + nasm_panic("invalid instruction prefix"); + } + if (c) { + if (data) + out_rawbyte(data, c); + bytes++; + } + } + return bytes; +} + +static void gencode(struct out_data *data, insn *ins) +{ + uint8_t c; + uint8_t bytes[4]; + int64_t size; + int op1, op2; + struct operand *opx; + const uint8_t *codes = data->itemp->code; + uint8_t opex = 0; + enum ea_type eat = EA_SCALAR; + int r; + const int bits = data->bits; + const char *errmsg; + + ins->rex_done = false; + + emit_prefix(data, bits, ins); + + while (*codes) { + c = *codes++; + op1 = (c & 3) + ((opex & 1) << 2); + op2 = ((c >> 3) & 3) + ((opex & 2) << 1); + opx = &ins->oprs[op1]; + opex = 0; /* For the next iteration */ + + + switch (c) { + case 01: + case 02: + case 03: + case 04: + emit_rex(data, ins); + out_rawdata(data, codes, c); + codes += c; + break; + + case 05: + case 06: + case 07: + opex = c; + break; + + case4(010): + emit_rex(data, ins); + out_rawbyte(data, *codes++ + (regval(opx) & 7)); + break; + + case4(014): + break; + + case4(020): + out_imm(data, opx, 1, OUT_WRAP); + break; + + case4(024): + out_imm(data, opx, 1, OUT_UNSIGNED); + break; + + case4(030): + out_imm(data, opx, 2, OUT_WRAP); + break; + + case4(034): + if (opx->type & (BITS16 | BITS32)) + size = (opx->type & BITS16) ? 2 : 4; + else + size = (bits == 16) ? 2 : 4; + out_imm(data, opx, size, OUT_WRAP); + break; + + case4(040): + out_imm(data, opx, 4, OUT_WRAP); + break; + + case4(044): + size = ins->addr_size >> 3; + out_imm(data, opx, size, OUT_WRAP); + break; + + case4(050): + if (opx->segment == data->segment) { + int64_t delta = opx->offset - data->offset + - (data->inslen - data->insoffs); + if (delta > 127 || delta < -128) + nasm_nonfatal("short jump is out of range"); + } + out_reladdr(data, opx, 1); + break; + + case4(054): + out_imm(data, opx, 8, OUT_WRAP); + break; + + case4(060): + out_reladdr(data, opx, 2); + break; + + case4(064): + if (opx->type & (BITS16 | BITS32 | BITS64)) + size = (opx->type & BITS16) ? 2 : 4; + else + size = (bits == 16) ? 2 : 4; + + out_reladdr(data, opx, size); + break; + + case4(070): + out_reladdr(data, opx, 4); + break; + + case4(074): + if (opx->segment == NO_SEG) + nasm_nonfatal("value referenced by FAR is not relocatable"); + out_segment(data, opx); + break; + + case 0171: + c = *codes++; + op2 = (op2 & ~3) | ((c >> 3) & 3); + opx = &ins->oprs[op2]; + r = nasm_regvals[opx->basereg]; + c = (c & ~070) | ((r & 7) << 3); + out_rawbyte(data, c); + break; + + case 0172: + { + int mask = ins->prefixes[PPS_REX] == P_EVEX ? 7 : 15; + const struct operand *opy; + + c = *codes++; + opx = &ins->oprs[c >> 3]; + opy = &ins->oprs[c & 7]; + if (!absolute_op(opy)) + nasm_nonfatal("non-absolute expression not permitted " + "as argument %d", c & 7); + else if (opy->offset & ~mask) + nasm_warn(ERR_PASS2|WARN_NUMBER_OVERFLOW, + "is4 argument exceeds bounds"); + c = opy->offset & mask; + goto emit_is4; + } + + case 0173: + c = *codes++; + opx = &ins->oprs[c >> 4]; + c &= 15; + goto emit_is4; + + case4(0174): + c = 0; + emit_is4: + r = nasm_regvals[opx->basereg]; + out_rawbyte(data, (r << 4) | ((r & 0x10) >> 1) | c); + break; + + case4(0254): + if (absolute_op(opx) && + (int32_t)opx->offset != (int64_t)opx->offset) { + nasm_warn(ERR_PASS2|WARN_NUMBER_OVERFLOW, + "signed dword immediate exceeds bounds"); + } + out_imm(data, opx, 4, OUT_SIGNED); + break; + + case4(0240): + case 0250: + codes += 3; + ins->evex_p[2] |= op_evexflags(&ins->oprs[0], + EVEX_P2Z | EVEX_P2AAA, 2); + ins->evex_p[2] ^= EVEX_P2VP; /* 1's complement */ + bytes[0] = 0x62; + /* EVEX.X can be set by either REX or EVEX for different reasons */ + bytes[1] = ((((ins->rex & 7) << 5) | + (ins->evex_p[0] & (EVEX_P0X | EVEX_P0RP))) ^ 0xf0) | + (ins->vex_cm & EVEX_P0MM); + bytes[2] = ((ins->rex & REX_W) << (7 - 3)) | + ((~ins->vexreg & 15) << 3) | + (1 << 2) | (ins->vex_wlp & 3); + bytes[3] = ins->evex_p[2]; + out_rawdata(data, bytes, 4); + break; + + case4(0260): + case 0270: + codes += 2; + if (ins->vex_cm != 1 || (ins->rex & (REX_W|REX_X|REX_B)) || + ins->prefixes[PPS_REX] == P_VEX3) { + bytes[0] = (ins->vex_cm >> 6) ? 0x8f : 0xc4; + bytes[1] = (ins->vex_cm & 31) | ((~ins->rex & 7) << 5); + bytes[2] = ((ins->rex & REX_W) << (7-3)) | + ((~ins->vexreg & 15)<< 3) | (ins->vex_wlp & 07); + out_rawdata(data, bytes, 3); + } else { + bytes[0] = 0xc5; + bytes[1] = ((~ins->rex & REX_R) << (7-2)) | + ((~ins->vexreg & 15) << 3) | (ins->vex_wlp & 07); + out_rawdata(data, bytes, 2); + } + break; + + case 0271: + case 0272: + case 0273: + break; + + case4(0274): + { + uint64_t uv, um; + int s; + + if (absolute_op(opx)) { + if (ins->rex & REX_W) + s = 64; + else if (ins->prefixes[PPS_OSIZE] == P_O16) + s = 16; + else if (ins->prefixes[PPS_OSIZE] == P_O32) + s = 32; + else + s = bits; + + um = (uint64_t)2 << (s-1); + uv = opx->offset; + + if (uv > 127 && uv < (uint64_t)-128 && + (uv < um-128 || uv > um-1)) { + /* If this wasn't explicitly byte-sized, warn as though we + * had fallen through to the imm16/32/64 case. + */ + nasm_warn(ERR_PASS2|WARN_NUMBER_OVERFLOW, + "%s value exceeds bounds", + (opx->type & BITS8) ? "signed byte" : + s == 16 ? "word" : + s == 32 ? "dword" : + "signed dword"); + } + + /* Output as a raw byte to avoid byte overflow check */ + out_rawbyte(data, (uint8_t)uv); + } else { + out_imm(data, opx, 1, OUT_WRAP); /* XXX: OUT_SIGNED? */ + } + break; + } + + case4(0300): + break; + + case 0310: + if (bits == 32 && !has_prefix(ins, PPS_ASIZE, P_A16)) + out_rawbyte(data, 0x67); + break; + + case 0311: + if (bits != 32 && !has_prefix(ins, PPS_ASIZE, P_A32)) + out_rawbyte(data, 0x67); + break; + + case 0312: + break; + + case 0313: + break; + + case4(0314): + break; + + case 0320: + case 0321: + break; + + case 0322: + case 0323: + break; + + case 0324: + ins->rex |= REX_W; + break; + + case 0325: + break; + + case 0326: + break; + + case 0331: + break; + + case 0332: + case 0333: + out_rawbyte(data, c - 0332 + 0xF2); + break; + + case 0334: + if (ins->rex & REX_R) + out_rawbyte(data, 0xF0); + ins->rex &= ~(REX_L|REX_R); + break; + + case 0335: + break; + + case 0336: + case 0337: + break; + + case 0340: + if (ins->oprs[0].segment != NO_SEG) + nasm_panic("non-constant BSS size in pass two"); + + out_reserve(data, ins->oprs[0].offset * resb_bytes(ins->opcode)); + break; + + case 0341: + break; + + case 0360: + break; + + case 0361: + out_rawbyte(data, 0x66); + break; + + case 0364: + case 0365: + break; + + case 0366: + case 0367: + out_rawbyte(data, c - 0366 + 0x66); + break; + + case3(0370): + break; + + case 0373: + out_rawbyte(data, bits == 16 ? 3 : 5); + break; + + case 0374: + eat = EA_XMMVSIB; + break; + + case 0375: + eat = EA_YMMVSIB; + break; + + case 0376: + eat = EA_ZMMVSIB; + break; + + case4(0100): + case4(0110): + case4(0120): + case4(0130): + case4(0200): + case4(0204): + case4(0210): + case4(0214): + case4(0220): + case4(0224): + case4(0230): + case4(0234): + { + ea ea_data; + int rfield; + opflags_t rflags; + uint8_t *p; + struct operand *opy = &ins->oprs[op2]; + + if (c <= 0177) { + /* pick rfield from operand b (opx) */ + rflags = regflag(opx); + rfield = nasm_regvals[opx->basereg]; + } else { + /* rfield is constant */ + rflags = 0; + rfield = c & 7; + } + + if (process_ea(opy, &ea_data, bits, + rfield, rflags, ins, eat, &errmsg)) + nasm_nonfatal("%s", errmsg); + + p = bytes; + *p++ = ea_data.modrm; + if (ea_data.sib_present) + *p++ = ea_data.sib; + out_rawdata(data, bytes, p - bytes); + + /* + * Make sure the address gets the right offset in case + * the line breaks in the .lst file (BR 1197827) + */ + + if (ea_data.bytes) { + /* use compressed displacement, if available */ + if (ea_data.disp8) { + out_rawbyte(data, ea_data.disp8); + } else if (ea_data.rip) { + out_reladdr(data, opy, ea_data.bytes); + } else { + int asize = ins->addr_size >> 3; + + if (overflow_general(opy->offset, asize) || + signed_bits(opy->offset, ins->addr_size) != + signed_bits(opy->offset, ea_data.bytes << 3)) + warn_overflow(ea_data.bytes); + + out_imm(data, opy, ea_data.bytes, + (asize > ea_data.bytes) + ? OUT_SIGNED : OUT_WRAP); + } + } + } + break; + + default: + nasm_panic("internal instruction table corrupt" + ": instruction code \\%o (0x%02X) given", c, c); + break; + } + } +} + +static opflags_t regflag(const operand * o) +{ + if (!is_register(o->basereg)) + nasm_panic("invalid operand passed to regflag()"); + return nasm_reg_flags[o->basereg]; +} + +static int32_t regval(const operand * o) +{ + if (!is_register(o->basereg)) + nasm_panic("invalid operand passed to regval()"); + return nasm_regvals[o->basereg]; +} + +static int op_rexflags(const operand * o, int mask) +{ + opflags_t flags; + int val; + + if (!is_register(o->basereg)) + nasm_panic("invalid operand passed to op_rexflags()"); + + flags = nasm_reg_flags[o->basereg]; + val = nasm_regvals[o->basereg]; + + return rexflags(val, flags, mask); +} + +static int rexflags(int val, opflags_t flags, int mask) +{ + int rex = 0; + + if (val >= 0 && (val & 8)) + rex |= REX_B|REX_X|REX_R; + if (flags & BITS64) + rex |= REX_W; + if (!(REG_HIGH & ~flags)) /* AH, CH, DH, BH */ + rex |= REX_H; + else if (!(REG8 & ~flags) && val >= 4) /* SPL, BPL, SIL, DIL */ + rex |= REX_P; + + return rex & mask; +} + +static int evexflags(int val, decoflags_t deco, + int mask, uint8_t byte) +{ + int evex = 0; + + switch (byte) { + case 0: + if (val >= 0 && (val & 16)) + evex |= (EVEX_P0RP | EVEX_P0X); + break; + case 2: + if (val >= 0 && (val & 16)) + evex |= EVEX_P2VP; + if (deco & Z) + evex |= EVEX_P2Z; + if (deco & OPMASK_MASK) + evex |= deco & EVEX_P2AAA; + break; + } + return evex & mask; +} + +static int op_evexflags(const operand * o, int mask, uint8_t byte) +{ + int val; + + val = nasm_regvals[o->basereg]; + + return evexflags(val, o->decoflags, mask, byte); +} + +static enum match_result find_match(const struct itemplate **tempp, + insn *instruction, + int32_t segment, int64_t offset, int bits) +{ + const struct itemplate *temp; + enum match_result m, merr; + opflags_t xsizeflags[MAX_OPERANDS]; + bool opsizemissing = false; + int8_t broadcast = instruction->evex_brerop; + int i; + + /* broadcasting uses a different data element size */ + for (i = 0; i < instruction->operands; i++) { + if (i == broadcast) + xsizeflags[i] = instruction->oprs[i].decoflags & BRSIZE_MASK; + else + xsizeflags[i] = instruction->oprs[i].type & SIZE_MASK; + } + + merr = MERR_INVALOP; + + for (temp = nasm_instructions[instruction->opcode]; + temp->opcode != I_none; temp++) { + m = matches(temp, instruction, bits); + if (m == MOK_JUMP) { + if (jmp_match(segment, offset, bits, instruction, temp)) + m = MOK_GOOD; + else + m = MERR_INVALOP; + } else if (m == MERR_OPSIZEMISSING && !itemp_has(temp, IF_SX)) { + /* + * Missing operand size and a candidate for fuzzy matching... + */ + for (i = 0; i < temp->operands; i++) + if (i == broadcast) + xsizeflags[i] |= temp->deco[i] & BRSIZE_MASK; + else + xsizeflags[i] |= temp->opd[i] & SIZE_MASK; + opsizemissing = true; + } + if (m > merr) + merr = m; + if (merr == MOK_GOOD) + goto done; + } + + /* No match, but see if we can get a fuzzy operand size match... */ + if (!opsizemissing) + goto done; + + for (i = 0; i < instruction->operands; i++) { + /* + * We ignore extrinsic operand sizes on registers, so we should + * never try to fuzzy-match on them. This also resolves the case + * when we have e.g. "xmmrm128" in two different positions. + */ + if (is_class(REGISTER, instruction->oprs[i].type)) + continue; + + /* This tests if xsizeflags[i] has more than one bit set */ + if ((xsizeflags[i] & (xsizeflags[i]-1))) + goto done; /* No luck */ + + if (i == broadcast) { + instruction->oprs[i].decoflags |= xsizeflags[i]; + instruction->oprs[i].type |= brsize_to_size(xsizeflags[i]); + } else { + instruction->oprs[i].type |= xsizeflags[i]; /* Set the size */ + } + } + + /* Try matching again... */ + for (temp = nasm_instructions[instruction->opcode]; + temp->opcode != I_none; temp++) { + m = matches(temp, instruction, bits); + if (m == MOK_JUMP) { + if (jmp_match(segment, offset, bits, instruction, temp)) + m = MOK_GOOD; + else + m = MERR_INVALOP; + } + if (m > merr) + merr = m; + if (merr == MOK_GOOD) + goto done; + } + +done: + *tempp = temp; + return merr; +} + +static uint8_t get_broadcast_num(opflags_t opflags, opflags_t brsize) +{ + unsigned int opsize = (opflags & SIZE_MASK) >> SIZE_SHIFT; + uint8_t brcast_num; + + if (brsize > BITS64) + nasm_fatal("size of broadcasting element is greater than 64 bits"); + + /* + * The shift term is to take care of the extra BITS80 inserted + * between BITS64 and BITS128. + */ + brcast_num = ((opsize / (BITS64 >> SIZE_SHIFT)) * (BITS64 / brsize)) + >> (opsize > (BITS64 >> SIZE_SHIFT)); + + return brcast_num; +} + +static enum match_result matches(const struct itemplate *itemp, + insn *instruction, int bits) +{ + opflags_t size[MAX_OPERANDS], asize; + bool opsizemissing = false; + int i, oprs; + + /* + * Check the opcode + */ + if (itemp->opcode != instruction->opcode) + return MERR_INVALOP; + + /* + * Count the operands + */ + if (itemp->operands != instruction->operands) + return MERR_INVALOP; + + /* + * Is it legal? + */ + if (!(optimizing.level > 0) && itemp_has(itemp, IF_OPT)) + return MERR_INVALOP; + + /* + * {rex/vexn/evex} available? + */ + switch (instruction->prefixes[PPS_REX]) { + case P_EVEX: + if (!itemp_has(itemp, IF_EVEX)) + return MERR_ENCMISMATCH; + break; + case P_VEX: + case P_VEX3: + case P_VEX2: + if (!itemp_has(itemp, IF_VEX)) + return MERR_ENCMISMATCH; + break; + case P_REX: + if (itemp_has(itemp, IF_VEX) || itemp_has(itemp, IF_EVEX) || + bits != 64) + return MERR_ENCMISMATCH; + break; + default: + if (itemp_has(itemp, IF_EVEX)) { + if (!iflag_test(&cpu, IF_EVEX)) + return MERR_ENCMISMATCH; + } else if (itemp_has(itemp, IF_VEX)) { + if (!iflag_test(&cpu, IF_VEX)) { + return MERR_ENCMISMATCH; + } else if (itemp_has(itemp, IF_LATEVEX)) { + if (!iflag_test(&cpu, IF_LATEVEX) && iflag_test(&cpu, IF_EVEX)) + return MERR_ENCMISMATCH; + } + } + break; + } + + /* + * Check that no spurious colons or TOs are present + */ + for (i = 0; i < itemp->operands; i++) + if (instruction->oprs[i].type & ~itemp->opd[i] & (COLON | TO)) + return MERR_INVALOP; + + /* + * Process size flags + */ + switch (itemp_smask(itemp)) { + case IF_GENBIT(IF_SB): + asize = BITS8; + break; + case IF_GENBIT(IF_SW): + asize = BITS16; + break; + case IF_GENBIT(IF_SD): + asize = BITS32; + break; + case IF_GENBIT(IF_SQ): + asize = BITS64; + break; + case IF_GENBIT(IF_SO): + asize = BITS128; + break; + case IF_GENBIT(IF_SY): + asize = BITS256; + break; + case IF_GENBIT(IF_SZ): + asize = BITS512; + break; + case IF_GENBIT(IF_ANYSIZE): + asize = SIZE_MASK; + break; + case IF_GENBIT(IF_SIZE): + switch (bits) { + case 16: + asize = BITS16; + break; + case 32: + asize = BITS32; + break; + case 64: + asize = BITS64; + break; + default: + asize = 0; + break; + } + break; + default: + asize = 0; + break; + } + + if (itemp_armask(itemp)) { + /* S- flags only apply to a specific operand */ + i = itemp_arg(itemp); + memset(size, 0, sizeof size); + size[i] = asize; + } else { + /* S- flags apply to all operands */ + for (i = 0; i < MAX_OPERANDS; i++) + size[i] = asize; + } + + /* + * Check that the operand flags all match up, + * it's a bit tricky so lets be verbose: + * + * 1) Find out the size of operand. If instruction + * doesn't have one specified -- we're trying to + * guess it either from template (IF_S* flag) or + * from code bits. + * + * 2) If template operand do not match the instruction OR + * template has an operand size specified AND this size differ + * from which instruction has (perhaps we got it from code bits) + * we are: + * a) Check that only size of instruction and operand is differ + * other characteristics do match + * b) Perhaps it's a register specified in instruction so + * for such a case we just mark that operand as "size + * missing" and this will turn on fuzzy operand size + * logic facility (handled by a caller) + */ + for (i = 0; i < itemp->operands; i++) { + opflags_t type = instruction->oprs[i].type; + decoflags_t deco = instruction->oprs[i].decoflags; + decoflags_t ideco = itemp->deco[i]; + bool is_broadcast = deco & BRDCAST_MASK; + uint8_t brcast_num = 0; + opflags_t template_opsize, insn_opsize; + + if (!(type & SIZE_MASK)) + type |= size[i]; + + insn_opsize = type & SIZE_MASK; + if (!is_broadcast) { + template_opsize = itemp->opd[i] & SIZE_MASK; + } else { + decoflags_t deco_brsize = ideco & BRSIZE_MASK; + + if (~ideco & BRDCAST_MASK) + return MERR_BRNOTHERE; + + /* + * when broadcasting, the element size depends on + * the instruction type. decorator flag should match. + */ + if (deco_brsize) { + template_opsize = brsize_to_size(deco_brsize); + /* calculate the proper number : {1to} */ + brcast_num = get_broadcast_num(itemp->opd[i], template_opsize); + } else { + template_opsize = 0; + } + } + + if (~ideco & deco & OPMASK_MASK) + return MERR_MASKNOTHERE; + + if (~ideco & deco & (Z_MASK|STATICRND_MASK|SAE_MASK)) + return MERR_DECONOTHERE; + + if (itemp->opd[i] & ~type & ~(SIZE_MASK|REGSET_MASK)) + return MERR_INVALOP; + + if (~itemp->opd[i] & type & REGSET_MASK) + return (itemp->opd[i] & REGSET_MASK) + ? MERR_REGSETSIZE : MERR_REGSET; + + if (template_opsize) { + if (template_opsize != insn_opsize) { + if (insn_opsize) { + return MERR_INVALOP; + } else if (!is_class(REGISTER, type)) { + /* + * Note: we don't honor extrinsic operand sizes for registers, + * so "missing operand size" for a register should be + * considered a wildcard match rather than an error. + */ + opsizemissing = true; + } else if (is_class(REG_HIGH, type) && + instruction->prefixes[PPS_REX]) { + return MERR_ENCMISMATCH; + } + } else if (is_broadcast && + (brcast_num != + (2U << ((deco & BRNUM_MASK) >> BRNUM_SHIFT)))) { + /* + * broadcasting opsize matches but the number of repeated memory + * element does not match. + * if 64b double precision float is broadcasted to ymm (256b), + * broadcasting decorator must be {1to4}. + */ + return MERR_BRNUMMISMATCH; + } + } + } + + if (opsizemissing) + return MERR_OPSIZEMISSING; + + /* + * Check operand sizes + */ + if (itemp_has(itemp, IF_SM) || itemp_has(itemp, IF_SM2)) { + oprs = (itemp_has(itemp, IF_SM2) ? 2 : itemp->operands); + for (i = 0; i < oprs; i++) { + asize = itemp->opd[i] & SIZE_MASK; + if (asize) { + for (i = 0; i < oprs; i++) + size[i] = asize; + break; + } + } + } else { + oprs = itemp->operands; + } + + for (i = 0; i < itemp->operands; i++) { + if (!(itemp->opd[i] & SIZE_MASK) && + (instruction->oprs[i].type & SIZE_MASK & ~size[i])) + return MERR_OPSIZEMISMATCH; + } + + /* + * Check template is okay at the set cpu level + */ + if (iflag_cmp_cpu_level(&insns_flags[itemp->iflag_idx], &cpu) > 0) + return MERR_BADCPU; + + /* + * Verify the appropriate long mode flag. + */ + if (itemp_has(itemp, (bits == 64 ? IF_NOLONG : IF_LONG))) + return MERR_BADMODE; + + /* + * If we have a HLE prefix, look for the NOHLE flag + */ + if (itemp_has(itemp, IF_NOHLE) && + (has_prefix(instruction, PPS_REP, P_XACQUIRE) || + has_prefix(instruction, PPS_REP, P_XRELEASE))) + return MERR_BADHLE; + + /* + * Check if special handling needed for Jumps + */ + if ((itemp->code[0] & ~1) == 0370) + return MOK_JUMP; + + /* + * Check if BND prefix is allowed. + * Other 0xF2 (REPNE/REPNZ) prefix is prohibited. + */ + if (!itemp_has(itemp, IF_BND) && + (has_prefix(instruction, PPS_REP, P_BND) || + has_prefix(instruction, PPS_REP, P_NOBND))) + return MERR_BADBND; + else if (itemp_has(itemp, IF_BND) && + (has_prefix(instruction, PPS_REP, P_REPNE) || + has_prefix(instruction, PPS_REP, P_REPNZ))) + return MERR_BADREPNE; + + return MOK_GOOD; +} + +/* + * Check if ModR/M.mod should/can be 01. + * - EAF_BYTEOFFS is set + * - offset can fit in a byte when EVEX is not used + * - offset can be compressed when EVEX is used + */ +#define IS_MOD_01() (!(input->eaflags & EAF_WORDOFFS) && \ + (ins->rex & REX_EV ? seg == NO_SEG && !forw_ref && \ + is_disp8n(input, ins, &output->disp8) : \ + input->eaflags & EAF_BYTEOFFS || (o >= -128 && \ + o <= 127 && seg == NO_SEG && !forw_ref))) + +static int process_ea(operand *input, ea *output, int bits, + int rfield, opflags_t rflags, insn *ins, + enum ea_type expected, const char **errmsgp) +{ + bool forw_ref = !!(input->opflags & OPFLAG_UNKNOWN); + const int addrbits = ins->addr_size; + const int eaflags = input->eaflags; + const char *errmsg = NULL; + + errmsg = NULL; + + output->type = EA_SCALAR; + output->rip = false; + output->disp8 = 0; + + /* REX flags for the rfield operand */ + output->rex |= rexflags(rfield, rflags, REX_R | REX_P | REX_W | REX_H); + /* EVEX.R' flag for the REG operand */ + ins->evex_p[0] |= evexflags(rfield, 0, EVEX_P0RP, 0); + + if (is_class(REGISTER, input->type)) { + /* + * It's a direct register. + */ + if (!is_register(input->basereg)) + goto err; + + if (!is_reg_class(REG_EA, input->basereg)) + goto err; + + /* broadcasting is not available with a direct register operand. */ + if (input->decoflags & BRDCAST_MASK) { + errmsg = "broadcast not allowed with register operand"; + goto err; + } + + output->rex |= op_rexflags(input, REX_B | REX_P | REX_W | REX_H); + ins->evex_p[0] |= op_evexflags(input, EVEX_P0X, 0); + output->sib_present = false; /* no SIB necessary */ + output->bytes = 0; /* no offset necessary either */ + output->modrm = GEN_MODRM(3, rfield, nasm_regvals[input->basereg]); + } else { + /* + * It's a memory reference. + */ + + /* Embedded rounding or SAE is not available with a mem ref operand. */ + if (input->decoflags & (ER | SAE)) { + errmsg = "embedded rounding is available only with " + "register-register operations"; + goto err; + } + + if (input->basereg == -1 && + (input->indexreg == -1 || input->scale == 0)) { + /* + * It's a pure offset. If it is an IMMEDIATE, it is a pattern + * in insns.dat which allows an immediate to be used as a memory + * address, in which case apply the default REL/ABS. + */ + if (bits == 64) { + if (is_class(IMMEDIATE, input->type)) { + if (!(input->eaflags & EAF_ABS) && + ((input->eaflags & EAF_REL) || globalrel)) + input->type |= IP_REL; + } + if ((input->type & IP_REL) == IP_REL) { + /*! + *!ea-absolute [on] absolute address cannot be RIP-relative + *! warns that an address that is inherently absolute cannot + *! be generated with RIP-relative encoding using \c{REL}, + *! see \k{REL & ABS}. + */ + if (input->segment == NO_SEG || + (input->opflags & OPFLAG_RELATIVE)) { + nasm_warn(WARN_EA_ABSOLUTE|ERR_PASS2, + "absolute address can not be RIP-relative"); + input->type &= ~IP_REL; + input->type |= MEMORY; + } + } + } + + if (bits == 64 && !(IP_REL & ~input->type) && (eaflags & EAF_SIB)) { + errmsg = "instruction requires SIB encoding, cannot be RIP-relative"; + goto err; + } + + if (eaflags & EAF_BYTEOFFS || + (eaflags & EAF_WORDOFFS && + input->disp_size != (addrbits != 16 ? 32 : 16))) { + /*! + *!ea-dispsize [on] displacement size ignored on absolute address + *! warns that NASM does not support generating displacements for + *! inherently absolute addresses that do not match the address size + *! of the instruction. + */ + nasm_warn(WARN_EA_DISPSIZE, "displacement size ignored on absolute address"); + } + + if ((eaflags & EAF_SIB) || (bits == 64 && (~input->type & IP_REL))) { + output->sib_present = true; + output->sib = GEN_SIB(0, 4, 5); + output->bytes = 4; + output->modrm = GEN_MODRM(0, rfield, 4); + output->rip = false; + } else { + output->sib_present = false; + output->bytes = (addrbits != 16 ? 4 : 2); + output->modrm = GEN_MODRM(0, rfield, + (addrbits != 16 ? 5 : 6)); + output->rip = bits == 64; + } + } else { + /* + * It's an indirection. + */ + int i = input->indexreg, b = input->basereg, s = input->scale; + int32_t seg = input->segment; + int hb = input->hintbase, ht = input->hinttype; + int t, it, bt; /* register numbers */ + opflags_t x, ix, bx; /* register flags */ + + if (s == 0) + i = -1; /* make this easy, at least */ + + if (is_register(i)) { + it = nasm_regvals[i]; + ix = nasm_reg_flags[i]; + } else { + it = -1; + ix = 0; + } + + if (is_register(b)) { + bt = nasm_regvals[b]; + bx = nasm_reg_flags[b]; + } else { + bt = -1; + bx = 0; + } + + /* if either one are a vector register... */ + if ((ix|bx) & (XMMREG|YMMREG|ZMMREG) & ~REG_EA) { + opflags_t sok = BITS32 | BITS64; + int32_t o = input->offset; + int mod, scale, index, base; + + /* + * For a vector SIB, one has to be a vector and the other, + * if present, a GPR. The vector must be the index operand. + */ + if (it == -1 || (bx & (XMMREG|YMMREG|ZMMREG) & ~REG_EA)) { + if (s == 0) + s = 1; + else if (s != 1) + goto err; + + t = bt, bt = it, it = t; + x = bx, bx = ix, ix = x; + } + + if (bt != -1) { + if (REG_GPR & ~bx) + goto err; + if (!(REG64 & ~bx) || !(REG32 & ~bx)) + sok &= bx; + else + goto err; + } + + /* + * While we're here, ensure the user didn't specify + * WORD or QWORD + */ + if (input->disp_size == 16 || input->disp_size == 64) + goto err; + + if (addrbits == 16 || + (addrbits == 32 && !(sok & BITS32)) || + (addrbits == 64 && !(sok & BITS64))) + goto err; + + output->type = ((ix & ZMMREG & ~REG_EA) ? EA_ZMMVSIB + : ((ix & YMMREG & ~REG_EA) + ? EA_YMMVSIB : EA_XMMVSIB)); + + output->rex |= rexflags(it, ix, REX_X); + output->rex |= rexflags(bt, bx, REX_B); + ins->evex_p[2] |= evexflags(it, 0, EVEX_P2VP, 2); + + index = it & 7; /* it is known to be != -1 */ + + switch (s) { + case 1: + scale = 0; + break; + case 2: + scale = 1; + break; + case 4: + scale = 2; + break; + case 8: + scale = 3; + break; + default: /* then what the smeg is it? */ + goto err; /* panic */ + } + + if (bt == -1) { + base = 5; + mod = 0; + } else { + base = (bt & 7); + if (base != REG_NUM_EBP && o == 0 && + seg == NO_SEG && !forw_ref && + !(eaflags & (EAF_BYTEOFFS | EAF_WORDOFFS))) + mod = 0; + else if (IS_MOD_01()) + mod = 1; + else + mod = 2; + } + + output->sib_present = true; + output->bytes = (bt == -1 || mod == 2 ? 4 : mod); + output->modrm = GEN_MODRM(mod, rfield, 4); + output->sib = GEN_SIB(scale, index, base); + } else if ((ix|bx) & (BITS32|BITS64)) { + /* + * it must be a 32/64-bit memory reference. Firstly we have + * to check that all registers involved are type E/Rxx. + */ + opflags_t sok = BITS32 | BITS64; + int32_t o = input->offset; + + if (it != -1) { + if (!(REG64 & ~ix) || !(REG32 & ~ix)) + sok &= ix; + else + goto err; + } + + if (bt != -1) { + if (REG_GPR & ~bx) + goto err; /* Invalid register */ + if (~sok & bx & SIZE_MASK) + goto err; /* Invalid size */ + sok &= bx; + } + + /* + * While we're here, ensure the user didn't specify + * WORD or QWORD + */ + if (input->disp_size == 16 || input->disp_size == 64) + goto err; + + if (addrbits == 16 || + (addrbits == 32 && !(sok & BITS32)) || + (addrbits == 64 && !(sok & BITS64))) + goto err; + + /* now reorganize base/index */ + if (s == 1 && bt != it && bt != -1 && it != -1 && + ((hb == b && ht == EAH_NOTBASE) || + (hb == i && ht == EAH_MAKEBASE))) { + /* swap if hints say so */ + t = bt, bt = it, it = t; + x = bx, bx = ix, ix = x; + } + + if (bt == -1 && s == 1 && !(hb == i && ht == EAH_NOTBASE)) { + /* make single reg base, unless hint */ + bt = it, bx = ix, it = -1, ix = 0; + } + if (eaflags & EAF_MIB) { + /* MIB/split-SIB encoding */ + if (it == -1 && (hb == b && ht == EAH_NOTBASE)) { + /* + * make a single reg index [reg*1]. + * gas uses this form for an explicit index register. + */ + it = bt, ix = bx, bt = -1, bx = 0, s = 1; + } + if ((ht == EAH_SUMMED) && bt == -1) { + /* separate once summed index into [base, index] */ + bt = it, bx = ix, s--; + } + } else { + if (((s == 2 && it != REG_NUM_ESP && + (!(eaflags & EAF_TIMESTWO) || (ht == EAH_SUMMED))) || + s == 3 || s == 5 || s == 9) && bt == -1) { + /* convert 3*EAX to EAX+2*EAX */ + bt = it, bx = ix, s--; + } + if (it == -1 && (bt & 7) != REG_NUM_ESP && + (eaflags & EAF_TIMESTWO) && + (hb == b && ht == EAH_NOTBASE)) { + /* + * convert [NOSPLIT EAX*1] + * to sib format with 0x0 displacement - [EAX*1+0]. + */ + it = bt, ix = bx, bt = -1, bx = 0, s = 1; + } + } + if (s == 1 && it == REG_NUM_ESP) { + /* swap ESP into base if scale is 1 */ + t = it, it = bt, bt = t; + x = ix, ix = bx, bx = x; + } + if (it == REG_NUM_ESP || + (s != 1 && s != 2 && s != 4 && s != 8 && it != -1)) + goto err; /* wrong, for various reasons */ + + output->rex |= rexflags(it, ix, REX_X); + output->rex |= rexflags(bt, bx, REX_B); + + if (it == -1 && (bt & 7) != REG_NUM_ESP && !(eaflags & EAF_SIB)) { + /* no SIB needed */ + int mod, rm; + + if (bt == -1) { + rm = 5; + mod = 0; + } else { + rm = (bt & 7); + if (rm != REG_NUM_EBP && o == 0 && + seg == NO_SEG && !forw_ref && + !(eaflags & (EAF_BYTEOFFS | EAF_WORDOFFS))) + mod = 0; + else if (IS_MOD_01()) + mod = 1; + else + mod = 2; + } + + output->sib_present = false; + output->bytes = (bt == -1 || mod == 2 ? 4 : mod); + output->modrm = GEN_MODRM(mod, rfield, rm); + } else { + /* we need a SIB */ + int mod, scale, index, base; + + if (it == -1) + index = 4, s = 1; + else + index = (it & 7); + + switch (s) { + case 1: + scale = 0; + break; + case 2: + scale = 1; + break; + case 4: + scale = 2; + break; + case 8: + scale = 3; + break; + default: /* then what the smeg is it? */ + goto err; /* panic */ + } + + if (bt == -1) { + base = 5; + mod = 0; + } else { + base = (bt & 7); + if (base != REG_NUM_EBP && o == 0 && + seg == NO_SEG && !forw_ref && + !(eaflags & (EAF_BYTEOFFS | EAF_WORDOFFS))) + mod = 0; + else if (IS_MOD_01()) + mod = 1; + else + mod = 2; + } + + output->sib_present = true; + output->bytes = (bt == -1 || mod == 2 ? 4 : mod); + output->modrm = GEN_MODRM(mod, rfield, 4); + output->sib = GEN_SIB(scale, index, base); + } + } else { /* it's 16-bit */ + int mod, rm; + int16_t o = input->offset; + + /* check for 64-bit long mode */ + if (addrbits == 64) + goto err; + + /* check all registers are BX, BP, SI or DI */ + if ((b != -1 && b != R_BP && b != R_BX && b != R_SI && b != R_DI) || + (i != -1 && i != R_BP && i != R_BX && i != R_SI && i != R_DI)) + goto err; + + /* ensure the user didn't specify DWORD/QWORD */ + if (input->disp_size == 32 || input->disp_size == 64) + goto err; + + if (s != 1 && i != -1) + goto err; /* no can do, in 16-bit EA */ + if (b == -1 && i != -1) { + int tmp = b; + b = i; + i = tmp; + } /* swap */ + if ((b == R_SI || b == R_DI) && i != -1) { + int tmp = b; + b = i; + i = tmp; + } + /* have BX/BP as base, SI/DI index */ + if (b == i) + goto err; /* shouldn't ever happen, in theory */ + if (i != -1 && b != -1 && + (i == R_BP || i == R_BX || b == R_SI || b == R_DI)) + goto err; /* invalid combinations */ + if (b == -1) /* pure offset: handled above */ + goto err; /* so if it gets to here, panic! */ + + rm = -1; + if (i != -1) + switch (i * 256 + b) { + case R_SI * 256 + R_BX: + rm = 0; + break; + case R_DI * 256 + R_BX: + rm = 1; + break; + case R_SI * 256 + R_BP: + rm = 2; + break; + case R_DI * 256 + R_BP: + rm = 3; + break; + } else + switch (b) { + case R_SI: + rm = 4; + break; + case R_DI: + rm = 5; + break; + case R_BP: + rm = 6; + break; + case R_BX: + rm = 7; + break; + } + if (rm == -1) /* can't happen, in theory */ + goto err; /* so panic if it does */ + + if (o == 0 && seg == NO_SEG && !forw_ref && rm != 6 && + !(eaflags & (EAF_BYTEOFFS | EAF_WORDOFFS))) + mod = 0; + else if (IS_MOD_01()) + mod = 1; + else + mod = 2; + + output->sib_present = false; /* no SIB - it's 16-bit */ + output->bytes = mod; /* bytes of offset needed */ + output->modrm = GEN_MODRM(mod, rfield, rm); + } + + if (eaflags & EAF_REL) { + /* Explicit REL reference with indirect memory */ + nasm_warn(WARN_OTHER, + "indirect address displacements cannot be RIP-relative"); + } + } + } + + output->size = 1 + output->sib_present + output->bytes; + /* + * The type parsed might not match one supplied by + * a caller. In this case exit with error and let + * the caller to decide how critical it is. + */ + if (output->type != expected) + goto err_set_msg; + + return 0; + +err_set_msg: + if (!errmsg) { + /* Default error message */ + static char invalid_address_msg[40]; + snprintf(invalid_address_msg, sizeof invalid_address_msg, + "invalid %d-bit effective address", bits); + errmsg = invalid_address_msg; + } + *errmsgp = errmsg; + return -1; + +err: + output->type = EA_INVALID; + goto err_set_msg; +} + +static void add_asp(insn *ins, int addrbits) +{ + int j, valid; + int defdisp; + + valid = (addrbits == 64) ? 64|32 : 32|16; + + switch (ins->prefixes[PPS_ASIZE]) { + case P_A16: + valid &= 16; + break; + case P_A32: + valid &= 32; + break; + case P_A64: + valid &= 64; + break; + case P_ASP: + valid &= (addrbits == 32) ? 16 : 32; + break; + default: + break; + } + + for (j = 0; j < ins->operands; j++) { + if (is_class(MEMORY, ins->oprs[j].type)) { + opflags_t i, b; + + /* Verify as Register */ + if (!is_register(ins->oprs[j].indexreg)) + i = 0; + else + i = nasm_reg_flags[ins->oprs[j].indexreg]; + + /* Verify as Register */ + if (!is_register(ins->oprs[j].basereg)) + b = 0; + else + b = nasm_reg_flags[ins->oprs[j].basereg]; + + if (ins->oprs[j].scale == 0) + i = 0; + + if (!i && !b) { + int ds = ins->oprs[j].disp_size; + if ((addrbits != 64 && ds > 8) || + (addrbits == 64 && ds == 16)) + valid &= ds; + } else { + if (!(REG16 & ~b)) + valid &= 16; + if (!(REG32 & ~b)) + valid &= 32; + if (!(REG64 & ~b)) + valid &= 64; + + if (!(REG16 & ~i)) + valid &= 16; + if (!(REG32 & ~i)) + valid &= 32; + if (!(REG64 & ~i)) + valid &= 64; + } + } + } + + if (valid & addrbits) { + ins->addr_size = addrbits; + } else if (valid & ((addrbits == 32) ? 16 : 32)) { + /* Add an address size prefix */ + ins->prefixes[PPS_ASIZE] = (addrbits == 32) ? P_A16 : P_A32;; + ins->addr_size = (addrbits == 32) ? 16 : 32; + } else { + /* Impossible... */ + nasm_nonfatal("impossible combination of address sizes"); + ins->addr_size = addrbits; /* Error recovery */ + } + + defdisp = ins->addr_size == 16 ? 16 : 32; + + for (j = 0; j < ins->operands; j++) { + if (!(MEM_OFFS & ~ins->oprs[j].type) && + (ins->oprs[j].disp_size ? ins->oprs[j].disp_size : defdisp) != ins->addr_size) { + /* + * mem_offs sizes must match the address size; if not, + * strip the MEM_OFFS bit and match only EA instructions + */ + ins->oprs[j].type &= ~(MEM_OFFS & ~MEMORY); + } + } +} diff --git a/vere/ext/nasm/asm/assemble.h b/vere/ext/nasm/asm/assemble.h new file mode 100644 index 0000000..5070662 --- /dev/null +++ b/vere/ext/nasm/asm/assemble.h @@ -0,0 +1,56 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * assemble.h - header file for stuff private to the assembler + */ + +#ifndef NASM_ASSEMBLE_H +#define NASM_ASSEMBLE_H + +#include "nasm.h" +#include "iflag.h" + +extern iflag_t cpu, cmd_cpu; +void set_cpu(const char *cpuspec); + +extern bool in_absolute; /* Are we in an absolute segment? */ +extern struct location absolute; + +int64_t insn_size(int32_t segment, int64_t offset, int bits, insn *instruction); +int64_t assemble(int32_t segment, int64_t offset, int bits, insn *instruction); + +bool process_directives(char *); +void process_pragma(char *); + +#endif diff --git a/vere/ext/nasm/asm/directbl.c b/vere/ext/nasm/asm/directbl.c new file mode 100644 index 0000000..2a1d058 --- /dev/null +++ b/vere/ext/nasm/asm/directbl.c @@ -0,0 +1,192 @@ +/* + * This file is generated from ./asm/directiv.dat + * by perfhash.pl; do not edit. + */ + +#include "directiv.h" + +const char * const directive_tbl[40] = { + "absolute", + "bits", + "common", + "cpu", + "debug", + "default", + "extern", + "float", + "global", + "static", + "list", + "section", + "segment", + "warning", + "sectalign", + "pragma", + "required", + "export", + "group", + "import", + "library", + "map", + "module", + "org", + "osabi", + "safeseh", + "uppercase", + "prefix", + "suffix", + "gprefix", + "gsuffix", + "lprefix", + "lsuffix", + "limit", + "options", + "subsections_via_symbols", + "no_dead_strip", + "maxdump", + "nodepend", + "noseclabels" +}; + +#define INVALID_HASH_ENTRY (65536/3) + +static const int16_t directive_hashvals[128] = { + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 6, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 3, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + 32, + 0, + 4, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 12, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1, + INVALID_HASH_ENTRY, + 0, + 33, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 25, + 38, + 1, + 9, + INVALID_HASH_ENTRY, + 31, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -12, + 0, + INVALID_HASH_ENTRY, + 34, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 29, + INVALID_HASH_ENTRY, + 13, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 27, + INVALID_HASH_ENTRY, + 7, + 22, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 19, + INVALID_HASH_ENTRY, + 37, + 5, + -11, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 16, + 15, + 11, + INVALID_HASH_ENTRY, + 23, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 36, + 12, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 27, + INVALID_HASH_ENTRY, + 21, + 26, + 10, + 5, + 29, + 35, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 30, + INVALID_HASH_ENTRY, + 28, + 4, + INVALID_HASH_ENTRY +}; + +const struct perfect_hash directive_hash = { + UINT64_C(0x076259c3e291c26c), + UINT32_C(0x7e), + UINT32_C(40), + 3, + (D_unknown), + directive_hashvals, + directive_tbl +}; diff --git a/vere/ext/nasm/asm/directiv.c b/vere/ext/nasm/asm/directiv.c new file mode 100644 index 0000000..a4f54b4 --- /dev/null +++ b/vere/ext/nasm/asm/directiv.c @@ -0,0 +1,567 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2022 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * Parse and handle assembler directives + */ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "ilog2.h" +#include "error.h" +#include "floats.h" +#include "stdscan.h" +#include "preproc.h" +#include "eval.h" +#include "assemble.h" +#include "outform.h" +#include "listing.h" +#include "labels.h" +#include "iflag.h" + +struct cpunames { + const char *name; + unsigned int level; + /* Eventually a table of features */ +}; + +static void iflag_set_cpu(iflag_t *a, unsigned int lvl) +{ + a->field[0] = 0; /* Not applicable to the CPU type */ + iflag_set_all_features(a); /* All feature masking bits set for now */ + if (lvl >= IF_ANY) { + /* This is a hack for now */ + iflag_set(a, IF_LATEVEX); + } + a->field[IF_CPU_FIELD] &= ~IF_CPU_LEVEL_MASK; + iflag_set(a, lvl); +} + +void set_cpu(const char *value) +{ + const char *p; + char modifier; + const struct cpunames *cpuflag; + static const struct cpunames cpunames[] = { + { "default", IF_DEFAULT }, /* Must be first */ + { "8086", IF_8086 }, + { "186", IF_186 }, + { "286", IF_286 }, + { "386", IF_386 }, + { "486", IF_486 }, + { "586", IF_PENT }, + { "pentium", IF_PENT }, + { "pentiummmx", IF_PENT }, + { "686", IF_P6 }, + { "p6", IF_P6 }, + { "ppro", IF_P6 }, + { "pentiumpro", IF_P6 }, + { "p2", IF_P6 }, /* +MMX */ + { "pentiumii", IF_P6 }, + { "p3", IF_KATMAI }, + { "katmai", IF_KATMAI }, + { "p4", IF_WILLAMETTE }, + { "willamette", IF_WILLAMETTE }, + { "prescott", IF_PRESCOTT }, + { "x64", IF_X86_64 }, + { "x86-64", IF_X86_64 }, + { "ia64", IF_IA64 }, + { "ia-64", IF_IA64 }, + { "itanium", IF_IA64 }, + { "itanic", IF_IA64 }, + { "merced", IF_IA64 }, + { "nehalem", IF_NEHALEM }, + { "westmere", IF_WESTMERE }, + { "sandybridge", IF_SANDYBRIDGE }, + { "ivybridge", IF_FUTURE }, + { "any", IF_ANY }, + { "all", IF_ANY }, + { "latevex", IF_LATEVEX }, + { "evex", IF_EVEX }, + { "vex", IF_VEX }, + { NULL, 0 } + }; + + if (!value) { + iflag_set_cpu(&cpu, cpunames[0].level); + return; + } + + p = value; + modifier = '+'; + while (*p) { + int len = strcspn(p, " ,"); + + while (len && (*p == '+' || *p == '-' || *p == '*')) { + modifier = *p++; + len--; + if (!len && modifier == '*') + cpu = cmd_cpu; + } + + if (len) { + bool invert_flag = false; + + if (len >= 3 && !nasm_memicmp(p, "no", 2)) { + invert_flag = true; + p += 2; + len -= 2; + } + + for (cpuflag = cpunames; cpuflag->name; cpuflag++) + if (!nasm_strnicmp(p, cpuflag->name, len)) + break; + + if (!cpuflag->name) { + nasm_nonfatal("unknown CPU type or flag '%.*s'", len, p); + return; + } + + if (cpuflag->level >= IF_CPU_FIRST && cpuflag->level <= IF_ANY) { + iflag_set_cpu(&cpu, cpuflag->level); + } else { + switch (modifier) { + case '-': + invert_flag = !invert_flag; + break; + case '*': + invert_flag ^= iflag_test(&cmd_cpu, cpuflag->level); + break; + default: + break; + } + + iflag_set(&cpu, cpuflag->level); + if (invert_flag) + iflag_clear(&cpu, cpuflag->level); + } + } + p += len; + if (!*p) + break; + p++; /* Skip separator */ + } +} + +static int get_bits(const char *value) +{ + int i = atoi(value); + + switch (i) { + case 16: + break; /* Always safe */ + case 32: + if (!iflag_cpu_level_ok(&cpu, IF_386)) { + nasm_nonfatal("cannot specify 32-bit segment on processor below a 386"); + i = 16; + } + break; + case 64: + if (!iflag_cpu_level_ok(&cpu, IF_X86_64)) { + nasm_nonfatal("cannot specify 64-bit segment on processor below an x86-64"); + i = 16; + } + break; + default: + nasm_nonfatal("`%s' is not a valid segment size; must be 16, 32 or 64", + value); + i = 16; + break; + } + return i; +} + +static enum directive parse_directive_line(char **directive, char **value) +{ + char *p, *q, *buf; + + buf = nasm_skip_spaces(*directive); + + /* + * It should be enclosed in [ ]. + * XXX: we don't check there is nothing else on the remainder of the + * line, except a possible comment. + */ + if (*buf != '[') + return D_none; + q = strchr(buf, ']'); + if (!q) + return D_corrupt; + + /* + * Strip off the comments. XXX: this doesn't account for quoted + * strings inside a directive. We should really strip the + * comments in generic code, not here. While we're at it, it + * would be better to pass the backend a series of tokens instead + * of a raw string, and actually process quoted strings for it, + * like of like argv is handled in C. + */ + p = strchr(buf, ';'); + if (p) { + if (p < q) /* ouch! somewhere inside */ + return D_corrupt; + *p = '\0'; + } + + /* no brace, no trailing spaces */ + *q = '\0'; + nasm_zap_spaces_rev(--q); + + /* directive */ + p = nasm_skip_spaces(++buf); + q = nasm_skip_word(p); + if (!q) + return D_corrupt; /* sigh... no value there */ + *q = '\0'; + *directive = p; + + /* and value finally */ + p = nasm_skip_spaces(++q); + *value = p; + + return directive_find(*directive); +} + +/* + * Process a line from the assembler and try to handle it if it + * is a directive. Return true if the line was handled (including + * if it was an error), false otherwise. + */ +bool process_directives(char *directive) +{ + enum directive d; + char *value, *p, *q, *special; + struct tokenval tokval; + bool bad_param = false; + enum label_type type; + + d = parse_directive_line(&directive, &value); + + switch (d) { + case D_none: + return D_none; /* Not a directive */ + + case D_corrupt: + nasm_nonfatal("invalid directive line"); + break; + + default: /* It's a backend-specific directive */ + switch (ofmt->directive(d, value)) { + case DIRR_UNKNOWN: + goto unknown; + case DIRR_OK: + case DIRR_ERROR: + break; + case DIRR_BADPARAM: + bad_param = true; + break; + default: + panic(); + } + break; + + case D_unknown: + unknown: + nasm_nonfatal("unrecognized directive [%s]", directive); + break; + + case D_SEGMENT: /* [SEGMENT n] */ + case D_SECTION: + { + int sb = globalbits; + int32_t seg = ofmt->section(value, &sb); + + if (seg == NO_SEG) { + nasm_nonfatal("segment name `%s' not recognized", value); + } else { + globalbits = sb; + switch_segment(seg); + } + break; + } + + case D_SECTALIGN: /* [SECTALIGN n] */ + { + expr *e; + + if (*value) { + stdscan_reset(); + stdscan_set(value); + tokval.t_type = TOKEN_INVALID; + e = evaluate(stdscan, NULL, &tokval, NULL, true, NULL); + if (e) { + uint64_t align = e->value; + + if (!is_power2(e->value)) { + nasm_nonfatal("segment alignment `%s' is not power of two", + value); + } else if (align > UINT64_C(0x7fffffff)) { + /* + * FIXME: Please make some sane message here + * ofmt should have some 'check' method which + * would report segment alignment bounds. + */ + nasm_nonfatal("absurdly large segment alignment `%s' (2^%d)", + value, ilog2_64(align)); + } + + /* callee should be able to handle all details */ + if (location.segment != NO_SEG) + ofmt->sectalign(location.segment, align); + } + } + break; + } + + case D_BITS: /* [BITS bits] */ + globalbits = get_bits(value); + break; + + case D_GLOBAL: /* [GLOBAL|STATIC|EXTERN|COMMON symbol:special] */ + type = LBL_GLOBAL; + goto symdef; + case D_STATIC: + type = LBL_STATIC; + goto symdef; + case D_EXTERN: + type = LBL_EXTERN; + goto symdef; + case D_REQUIRED: + type = LBL_REQUIRED; + goto symdef; + case D_COMMON: + type = LBL_COMMON; + goto symdef; + + symdef: + { + bool validid = true; + int64_t size = 0; + char *sizestr; + bool rn_error; + + if (*value == '$') + value++; /* skip initial $ if present */ + + q = value; + if (!nasm_isidstart(*q)) { + validid = false; + } else { + q++; + while (*q && *q != ':' && !nasm_isspace(*q)) { + if (!nasm_isidchar(*q)) + validid = false; + q++; + } + } + if (!validid) { + nasm_nonfatal("identifier expected after %s, got `%s'", + directive, value); + break; + } + + if (nasm_isspace(*q)) { + *q++ = '\0'; + sizestr = q = nasm_skip_spaces(q); + q = strchr(q, ':'); + } else { + sizestr = NULL; + } + + if (q && *q == ':') { + *q++ = '\0'; + special = q; + } else { + special = NULL; + } + + if (type == LBL_COMMON) { + if (sizestr) + size = readnum(sizestr, &rn_error); + if (!sizestr || rn_error) + nasm_nonfatal("%s size specified in common declaration", + sizestr ? "invalid" : "no"); + } else if (sizestr) { + nasm_nonfatal("invalid syntax in %s declaration", directive); + } + + if (!declare_label(value, type, special)) + break; + + if (type == LBL_COMMON || type == LBL_EXTERN || type == LBL_REQUIRED) + define_label(value, 0, size, false); + + break; + } + + case D_ABSOLUTE: /* [ABSOLUTE address] */ + { + expr *e; + + stdscan_reset(); + stdscan_set(value); + tokval.t_type = TOKEN_INVALID; + e = evaluate(stdscan, NULL, &tokval, NULL, true, NULL); + if (e) { + if (!is_reloc(e)) { + nasm_nonfatal("cannot use non-relocatable expression as " + "ABSOLUTE address"); + } else { + absolute.segment = reloc_seg(e); + absolute.offset = reloc_value(e); + } + } else if (pass_first()) { + absolute.offset = 0x100; /* don't go near zero in case of / */ + } else { + nasm_nonfatal("invalid ABSOLUTE address"); + } + in_absolute = true; + location.segment = NO_SEG; + location.offset = absolute.offset; + break; + } + + case D_DEBUG: /* [DEBUG] */ + { + bool badid, overlong; + char debugid[128]; + + p = value; + q = debugid; + badid = overlong = false; + if (!nasm_isidstart(*p)) { + badid = true; + } else { + while (*p && !nasm_isspace(*p)) { + if (q >= debugid + sizeof debugid - 1) { + overlong = true; + break; + } + if (!nasm_isidchar(*p)) + badid = true; + *q++ = *p++; + } + *q = 0; + } + if (badid) { + nasm_nonfatal("identifier expected after DEBUG"); + break; + } + if (overlong) { + nasm_nonfatal("DEBUG identifier too long"); + break; + } + p = nasm_skip_spaces(p); + if (pass_final()) + dfmt->debug_directive(debugid, p); + break; + } + + case D_WARNING: /* [WARNING {push|pop|{+|-|*}warn-name}] */ + value = nasm_skip_spaces(value); + if ((*value | 0x20) == 'p') { + if (!nasm_stricmp(value, "push")) + push_warnings(); + else if (!nasm_stricmp(value, "pop")) + pop_warnings(); + } + set_warning_status(value); + break; + + case D_CPU: /* [CPU] */ + set_cpu(value); + break; + + case D_LIST: /* [LIST {+|-}] */ + value = nasm_skip_spaces(value); + if (*value == '+') { + user_nolist = false; + } else { + if (*value == '-') { + user_nolist = true; + } else { + bad_param = true; + } + } + break; + + case D_DEFAULT: /* [DEFAULT] */ + stdscan_reset(); + stdscan_set(value); + tokval.t_type = TOKEN_INVALID; + if (stdscan(NULL, &tokval) != TOKEN_INVALID) { + switch (tokval.t_integer) { + case S_REL: + globalrel = 1; + break; + case S_ABS: + globalrel = 0; + break; + case P_BND: + globalbnd = 1; + break; + case P_NOBND: + globalbnd = 0; + break; + default: + bad_param = true; + break; + } + } else { + bad_param = true; + } + break; + + case D_FLOAT: + if (float_option(value)) { + nasm_nonfatal("unknown 'float' directive: %s", value); + } + break; + + case D_PRAGMA: + process_pragma(value); + break; + } + + + /* A common error message */ + if (bad_param) { + nasm_nonfatal("invalid parameter to [%s] directive", directive); + } + + return d != D_none; +} diff --git a/vere/ext/nasm/asm/directiv.dat b/vere/ext/nasm/asm/directiv.dat new file mode 100644 index 0000000..5659ee1 --- /dev/null +++ b/vere/ext/nasm/asm/directiv.dat @@ -0,0 +1,110 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2017 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- +;; +;; List of global NASM directives and pragma operations codes +;; +;; ALL directives, including backend-specific, need to be added here. +;; +;; %pragma operation keywords (the second word, after facility) MAY +;; be added here too to assist in parsing, but it is not required. +;; See the definition of struct pragma in include/nasm.h. +;; +;; The same keyword can be used as a directive and as a pragma +;; operation, or as pragma operations in different namespaces. The +;; same D_ constant will be used for both, and this is perfectly +;; acceptable. +;; +;; In the future, this will be turned into a general list of keywords +;; to be parsed in special contexts. +;; + +; --- General configuration +#name directive +#prefix D_ +#errval D_unknown +#header directiv.h + +; --- Special enum values +#special none = 0 ; Must be zero +#special unknown +#special corrupt + +; --- Global directives +absolute +bits +common +cpu +debug +default +extern +float +global +static +list +section +segment +warning +sectalign +pragma +required + +; --- Format-specific directives +export ; outcoff, outobj +group ; outobj +import ; outobj +library ; outrdf2 +map ; outbin +module ; outrdf2 +org ; outbin +osabi ; outelf +safeseh ; outcoff +uppercase ; outieee, outobj + +; --- Assembler pragmas +prefix +suffix +gprefix +gsuffix +lprefix +lsuffix +limit + +; --- Listing pragmas +options + +; --- Backend pragmas +subsections_via_symbols ; macho +no_dead_strip ; macho +maxdump ; dbg +nodepend ; obj +noseclabels ; dbg diff --git a/vere/ext/nasm/asm/directiv.h b/vere/ext/nasm/asm/directiv.h new file mode 100644 index 0000000..1911264 --- /dev/null +++ b/vere/ext/nasm/asm/directiv.h @@ -0,0 +1,79 @@ +/* + * This file is generated from ./asm/directiv.dat + * by perfhash.pl; do not edit. + */ + +#ifndef DIRECTIV_H +#define DIRECTIV_H 1 + +#include "perfhash.h" + +enum directive { + D_none, + D_unknown, + D_corrupt, + D_ABSOLUTE, + D_BITS, + D_COMMON, + D_CPU, + D_DEBUG, + D_DEFAULT, + D_EXTERN, + D_FLOAT, + D_GLOBAL, + D_STATIC, + D_LIST, + D_SECTION, + D_SEGMENT, + D_WARNING, + D_SECTALIGN, + D_PRAGMA, + D_REQUIRED, + D_EXPORT, + D_GROUP, + D_IMPORT, + D_LIBRARY, + D_MAP, + D_MODULE, + D_ORG, + D_OSABI, + D_SAFESEH, + D_UPPERCASE, + D_PREFIX, + D_SUFFIX, + D_GPREFIX, + D_GSUFFIX, + D_LPREFIX, + D_LSUFFIX, + D_LIMIT, + D_OPTIONS, + D_SUBSECTIONS_VIA_SYMBOLS, + D_NO_DEAD_STRIP, + D_MAXDUMP, + D_NODEPEND, + D_NOSECLABELS +}; + +extern const struct perfect_hash directive_hash; +extern const char * const directive_tbl[40]; + +static inline enum directive directive_find(const char *str) +{ + return perfhash_find(&directive_hash, str); +} + +static inline const char * directive_name(enum directive x) +{ + size_t ix = (size_t)x - (3); + if (ix >= 40) + return NULL; + return directive_tbl[ix]; +} + +static inline const char * directive_dname(enum directive x) +{ + const char *y = directive_name(x); + return y ? y : invalid_enum_str(x); +} + +#endif /* DIRECTIV_H */ diff --git a/vere/ext/nasm/asm/error.c b/vere/ext/nasm/asm/error.c new file mode 100644 index 0000000..192555d --- /dev/null +++ b/vere/ext/nasm/asm/error.c @@ -0,0 +1,288 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2019 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * error.c - error message handling routines for the assembler + */ + +#include "compiler.h" + + +#include "nasmlib.h" +#include "error.h" + +/* Common function body */ +#define nasm_do_error(_sev,_flags) \ + va_list ap; \ + va_start(ap, fmt); \ + if ((_sev) >= ERR_CRITICAL) \ + nasm_verror_critical((_sev)|(_flags), fmt, ap); \ + else \ + nasm_verror((_sev)|(_flags), fmt, ap); \ + va_end(ap); \ + if ((_sev) >= ERR_FATAL) \ + abort(); + + +void nasm_error(errflags severity, const char *fmt, ...) +{ + nasm_do_error(severity & ERR_MASK, severity & ~ERR_MASK); +} + +#define nasm_err_helpers(_type, _name, _sev) \ +_type nasm_ ## _name ## f (errflags flags, const char *fmt, ...) \ +{ \ + nasm_do_error(_sev, flags); \ +} \ +_type nasm_ ## _name (const char *fmt, ...) \ +{ \ + nasm_do_error(_sev, 0); \ +} + +nasm_err_helpers(void, listmsg, ERR_LISTMSG) +nasm_err_helpers(void, debug, ERR_DEBUG) +nasm_err_helpers(void, info, ERR_INFO) +nasm_err_helpers(void, nonfatal, ERR_NONFATAL) +nasm_err_helpers(fatal_func, fatal, ERR_FATAL) +nasm_err_helpers(fatal_func, critical, ERR_CRITICAL) +nasm_err_helpers(fatal_func, panic, ERR_PANIC) + +/* + * Strongly discourage warnings without level by require flags on warnings. + * This means nasm_warn() is the equivalent of the -f variants of the + * other ones. + */ +void nasm_warn(errflags flags, const char *fmt, ...) +{ + nasm_do_error(ERR_WARNING, flags); +} + +fatal_func nasm_panic_from_macro(const char *file, int line) +{ + nasm_panic("internal error at %s:%d\n", file, line); +} + +fatal_func nasm_assert_failed(const char *file, int line, const char *msg) +{ + nasm_panic("assertion %s failed at %s:%d", msg, file, line); +} + + +/* + * Warning stack management. Note that there is an implicit "push" + * after the command line has been parsed, but this particular push + * cannot be popped. + */ +struct warning_stack { + struct warning_stack *next; + uint8_t state[sizeof warning_state]; +}; +static struct warning_stack *warning_stack, *warning_state_init; + +/* Push the warning status onto the warning stack */ +void push_warnings(void) +{ + struct warning_stack *ws; + + ws = nasm_malloc(sizeof *ws); + memcpy(ws->state, warning_state, sizeof warning_state); + ws->next = warning_stack; + warning_stack = ws; +} + +/* Pop the warning status off the warning stack */ +void pop_warnings(void) +{ + struct warning_stack *ws = warning_stack; + + memcpy(warning_state, ws->state, sizeof warning_state); + if (!ws->next) { + /*! + *!warn-stack-empty [on] warning stack empty + *! a [WARNING POP] directive was executed when + *! the warning stack is empty. This is treated + *! as a [WARNING *all] directive. + */ + nasm_warn(WARN_WARN_STACK_EMPTY, "warning stack empty"); + } else { + warning_stack = ws->next; + nasm_free(ws); + } +} + +/* Call after the command line is parsed, but before the first pass */ +void init_warnings(void) +{ + push_warnings(); + warning_state_init = warning_stack; +} + + +/* Call after each pass */ +void reset_warnings(void) +{ + struct warning_stack *ws = warning_stack; + + /* Unwind the warning stack. We do NOT delete the last entry! */ + while (ws->next) { + struct warning_stack *wst = ws; + ws = ws->next; + nasm_free(wst); + } + warning_stack = ws; + memcpy(warning_state, ws->state, sizeof warning_state); +} + +/* + * This is called when processing a -w or -W option, or a warning directive. + * Returns ok if the action was successful. + * + * Special pseudo-warnings: + * + *!other [on] any warning not specifically mentioned above + *! specifies any warning not included in any specific warning class. + * + *!all [all] all possible warnings + *! is an group alias for \e{all} warning classes. Thus, \c{-w+all} + *! enables all available warnings, and \c{-w-all} disables warnings + *! entirely (since NASM 2.13). + */ +bool set_warning_status(const char *value) +{ + enum warn_action { WID_OFF, WID_ON, WID_RESET }; + enum warn_action action; + const struct warning_alias *wa; + size_t vlen; + bool ok = false; + uint8_t mask; + + value = nasm_skip_spaces(value); + + switch (*value) { + case '-': + action = WID_OFF; + value++; + break; + case '+': + action = WID_ON; + value++; + break; + case '*': + action = WID_RESET; + value++; + break; + case 'N': + case 'n': + if (!nasm_strnicmp(value, "no-", 3)) { + action = WID_OFF; + value += 3; + break; + } else if (!nasm_stricmp(value, "none")) { + action = WID_OFF; + value = NULL; + break; + } + /* else fall through */ + default: + action = WID_ON; + break; + } + + mask = WARN_ST_ENABLED; + + if (value && !nasm_strnicmp(value, "error", 5)) { + switch (value[5]) { + case '=': + mask = WARN_ST_ERROR; + value += 6; + break; + case '\0': + mask = WARN_ST_ERROR; + value = NULL; + break; + default: + /* Just an accidental prefix? */ + break; + } + } + + if (value && !nasm_stricmp(value, "all")) + value = NULL; + + vlen = value ? strlen(value) : 0; + + /* + * This is inefficient, but it shouldn't matter. + * Note: warning_alias[0] is "all". + */ + for (wa = warning_alias+1; + wa < &warning_alias[NUM_WARNING_ALIAS]; wa++) { + enum warn_index i = wa->warning; + + if (value) { + char sep; + + if (nasm_strnicmp(value, wa->name, vlen)) + continue; /* Not a prefix */ + + sep = wa->name[vlen]; + if (sep != '\0' && sep != '-') + continue; /* Not a valid prefix */ + } + + ok = true; /* At least one action taken */ + switch (action) { + case WID_OFF: + warning_state[i] &= ~mask; + break; + case WID_ON: + warning_state[i] |= mask; + break; + case WID_RESET: + warning_state[i] &= ~mask; + warning_state[i] |= warning_state_init->state[i] & mask; + break; + } + } + + if (!ok && value) { + /*! + *!unknown-warning [off] unknown warning in -W/-w or warning directive + *! warns about a \c{-w} or \c{-W} option or a \c{[WARNING]} directive + *! that contains an unknown warning name or is otherwise not possible to process. + */ + nasm_warn(WARN_UNKNOWN_WARNING, "unknown warning name: %s", value); + } + + return ok; +} diff --git a/vere/ext/nasm/asm/eval.c b/vere/ext/nasm/asm/eval.c new file mode 100644 index 0000000..80fb4a2 --- /dev/null +++ b/vere/ext/nasm/asm/eval.c @@ -0,0 +1,1067 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * eval.c expression evaluator for the Netwide Assembler + */ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "ilog2.h" +#include "error.h" +#include "eval.h" +#include "labels.h" +#include "floats.h" +#include "assemble.h" + +#define TEMPEXPRS_DELTA 128 +#define TEMPEXPR_DELTA 8 + +static scanner scanfunc; /* Address of scanner routine */ +static void *scpriv; /* Scanner private pointer */ + +static expr **tempexprs = NULL; +static int ntempexprs; +static int tempexprs_size = 0; + +static expr *tempexpr; +static int ntempexpr; +static int tempexpr_size; + +static struct tokenval *tokval; /* The current token */ +static int tt; /* The t_type of tokval */ + +static bool critical; +static int *opflags; + +static struct eval_hints *hint; +static int64_t deadman; + + +/* + * Unimportant cleanup is done to avoid confusing people who are trying + * to debug real memory leaks + */ +void eval_cleanup(void) +{ + while (ntempexprs) + nasm_free(tempexprs[--ntempexprs]); + nasm_free(tempexprs); +} + +/* + * Construct a temporary expression. + */ +static void begintemp(void) +{ + tempexpr = NULL; + tempexpr_size = ntempexpr = 0; +} + +static void addtotemp(int32_t type, int64_t value) +{ + while (ntempexpr >= tempexpr_size) { + tempexpr_size += TEMPEXPR_DELTA; + tempexpr = nasm_realloc(tempexpr, + tempexpr_size * sizeof(*tempexpr)); + } + tempexpr[ntempexpr].type = type; + tempexpr[ntempexpr++].value = value; +} + +static expr *finishtemp(void) +{ + addtotemp(0L, 0L); /* terminate */ + while (ntempexprs >= tempexprs_size) { + tempexprs_size += TEMPEXPRS_DELTA; + tempexprs = nasm_realloc(tempexprs, + tempexprs_size * sizeof(*tempexprs)); + } + return tempexprs[ntempexprs++] = tempexpr; +} + +/* + * Add two vector datatypes. We have some bizarre behaviour on far- + * absolute segment types: we preserve them during addition _only_ + * if one of the segments is a truly pure scalar. + */ +static expr *add_vectors(expr * p, expr * q) +{ + int preserve; + + preserve = is_really_simple(p) || is_really_simple(q); + + begintemp(); + + while (p->type && q->type && + p->type < EXPR_SEGBASE + SEG_ABS && + q->type < EXPR_SEGBASE + SEG_ABS) { + int lasttype; + + if (p->type > q->type) { + addtotemp(q->type, q->value); + lasttype = q++->type; + } else if (p->type < q->type) { + addtotemp(p->type, p->value); + lasttype = p++->type; + } else { /* *p and *q have same type */ + int64_t sum = p->value + q->value; + if (sum) { + addtotemp(p->type, sum); + if (hint) + hint->type = EAH_SUMMED; + } + lasttype = p->type; + p++, q++; + } + if (lasttype == EXPR_UNKNOWN) { + return finishtemp(); + } + } + while (p->type && (preserve || p->type < EXPR_SEGBASE + SEG_ABS)) { + addtotemp(p->type, p->value); + p++; + } + while (q->type && (preserve || q->type < EXPR_SEGBASE + SEG_ABS)) { + addtotemp(q->type, q->value); + q++; + } + + return finishtemp(); +} + +/* + * Multiply a vector by a scalar. Strip far-absolute segment part + * if present. + * + * Explicit treatment of UNKNOWN is not required in this routine, + * since it will silently do the Right Thing anyway. + * + * If `affect_hints' is set, we also change the hint type to + * NOTBASE if a MAKEBASE hint points at a register being + * multiplied. This allows [eax*1+ebx] to hint EBX rather than EAX + * as the base register. + */ +static expr *scalar_mult(expr * vect, int64_t scalar, int affect_hints) +{ + expr *p = vect; + + while (p->type && p->type < EXPR_SEGBASE + SEG_ABS) { + p->value = scalar * (p->value); + if (hint && hint->type == EAH_MAKEBASE && + p->type == hint->base && affect_hints) + hint->type = EAH_NOTBASE; + p++; + } + p->type = 0; + + return vect; +} + +static expr *scalarvect(int64_t scalar) +{ + begintemp(); + addtotemp(EXPR_SIMPLE, scalar); + return finishtemp(); +} + +static expr *unknown_expr(void) +{ + begintemp(); + addtotemp(EXPR_UNKNOWN, 1L); + return finishtemp(); +} + +/* + * The SEG operator: calculate the segment part of a relocatable + * value. Return NULL, as usual, if an error occurs. Report the + * error too. + */ +static expr *segment_part(expr * e) +{ + int32_t seg; + + if (is_unknown(e)) + return unknown_expr(); + + if (!is_reloc(e)) { + nasm_nonfatal("cannot apply SEG to a non-relocatable value"); + return NULL; + } + + seg = reloc_seg(e); + if (seg == NO_SEG) { + nasm_nonfatal("cannot apply SEG to a non-relocatable value"); + return NULL; + } else if (seg & SEG_ABS) { + return scalarvect(seg & ~SEG_ABS); + } else if (seg & 1) { + nasm_nonfatal("SEG applied to something which" + " is already a segment base"); + return NULL; + } else { + int32_t base = ofmt->segbase(seg + 1); + + begintemp(); + addtotemp((base == NO_SEG ? EXPR_UNKNOWN : EXPR_SEGBASE + base), + 1L); + return finishtemp(); + } +} + +/* + * Recursive-descent parser. Called with a single boolean operand, + * which is true if the evaluation is critical (i.e. unresolved + * symbols are an error condition). Must update the global `tt' to + * reflect the token after the parsed string. May return NULL. + * + * evaluate() should report its own errors: on return it is assumed + * that if NULL has been returned, the error has already been + * reported. + * + */ + +/* + * Wrapper function around the scanner + */ +static int scan(void) +{ + return tt = scanfunc(scpriv, tokval); +} + +/* + * Grammar parsed is: + * + * expr : bexpr [ WRT expr6 ] + * bexpr : cexpr + * cexpr : rexp0 [ {?} bexpr {:} cexpr ] + * rexp0 : rexp1 [ {||} rexp1...] + * rexp1 : rexp2 [ {^^} rexp2...] + * rexp2 : rexp3 [ {&&} rexp3...] + * rexp3 : expr0 [ {=,==,<>,!=,<,>,<=,>=,<=>} expr0... ] + * expr0 : expr1 [ {|} expr1...] + * expr1 : expr2 [ {^} expr2...] + * expr2 : expr3 [ {&} expr3...] + * expr3 : expr4 [ {<<,>>,<<<,>>>} expr4...] + * expr4 : expr5 [ {+,-} expr5...] + * expr5 : expr6 [ {*,/,%,//,%%} expr6...] + * expr6 : { ~,+,-,IFUNC,SEG } expr6 + * | (bexpr) + * | symbol + * | $ + * | number + */ + +static expr *cexpr(void); +static expr *rexp0(void), *rexp1(void), *rexp2(void), *rexp3(void); + +static expr *expr0(void), *expr1(void), *expr2(void), *expr3(void); +static expr *expr4(void), *expr5(void), *expr6(void); + +/* This inline is a placeholder for the root of the basic expression */ +static inline expr *bexpr(void) +{ + return cexpr(); +} + +static expr *cexpr(void) +{ + expr *e, *f, *g; + + e = rexp0(); + if (!e) + return NULL; + + if (tt == TOKEN_QMARK) { + scan(); + f = bexpr(); + if (!f) + return NULL; + + if (tt != ':') { + nasm_nonfatal("`?' without matching `:'"); + return NULL; + } + + scan(); + g = cexpr(); + if (!g) + return NULL; + + if (is_simple(e)) { + e = reloc_value(e) ? f : g; + } else if (is_just_unknown(e)) { + e = unknown_expr(); + } else { + nasm_nonfatal("the left-hand side of `?' must be " + "a scalar value"); + } + } + + return e; +} + +static expr *rexp0(void) +{ + expr *e, *f; + + e = rexp1(); + if (!e) + return NULL; + + while (tt == TOKEN_DBL_OR) { + scan(); + f = rexp1(); + if (!f) + return NULL; + if (!(is_simple(e) || is_just_unknown(e)) || + !(is_simple(f) || is_just_unknown(f))) { + nasm_nonfatal("`|' operator may only be applied to" + " scalar values"); + } + + if (is_just_unknown(e) || is_just_unknown(f)) + e = unknown_expr(); + else + e = scalarvect((int64_t)(reloc_value(e) || reloc_value(f))); + } + return e; +} + +static expr *rexp1(void) +{ + expr *e, *f; + + e = rexp2(); + if (!e) + return NULL; + + while (tt == TOKEN_DBL_XOR) { + scan(); + f = rexp2(); + if (!f) + return NULL; + if (!(is_simple(e) || is_just_unknown(e)) || + !(is_simple(f) || is_just_unknown(f))) { + nasm_nonfatal("`^' operator may only be applied to" + " scalar values"); + } + + if (is_just_unknown(e) || is_just_unknown(f)) + e = unknown_expr(); + else + e = scalarvect((int64_t)(!reloc_value(e) ^ !reloc_value(f))); + } + return e; +} + +static expr *rexp2(void) +{ + expr *e, *f; + + e = rexp3(); + if (!e) + return NULL; + while (tt == TOKEN_DBL_AND) { + scan(); + f = rexp3(); + if (!f) + return NULL; + if (!(is_simple(e) || is_just_unknown(e)) || + !(is_simple(f) || is_just_unknown(f))) { + nasm_nonfatal("`&' operator may only be applied to" + " scalar values"); + } + if (is_just_unknown(e) || is_just_unknown(f)) + e = unknown_expr(); + else + e = scalarvect((int64_t)(reloc_value(e) && reloc_value(f))); + } + return e; +} + +static expr *rexp3(void) +{ + expr *e, *f; + int64_t v; + + e = expr0(); + if (!e) + return NULL; + + while (tt == TOKEN_EQ || tt == TOKEN_LT || tt == TOKEN_GT || + tt == TOKEN_NE || tt == TOKEN_LE || tt == TOKEN_GE || + tt == TOKEN_LEG) { + int tto = tt; + scan(); + f = expr0(); + if (!f) + return NULL; + + e = add_vectors(e, scalar_mult(f, -1L, false)); + + switch (tto) { + case TOKEN_EQ: + case TOKEN_NE: + if (is_unknown(e)) + v = -1; /* means unknown */ + else if (!is_really_simple(e) || reloc_value(e) != 0) + v = (tto == TOKEN_NE); /* unequal, so return true if NE */ + else + v = (tto == TOKEN_EQ); /* equal, so return true if EQ */ + break; + default: + if (is_unknown(e)) + v = -1; /* means unknown */ + else if (!is_really_simple(e)) { + nasm_nonfatal("`%s': operands differ by a non-scalar", + (tto == TOKEN_LE ? "<=" : + tto == TOKEN_LT ? "<" : + tto == TOKEN_GE ? ">=" : + tto == TOKEN_GT ? ">" : + tto == TOKEN_LEG ? "<=>" : + "")); + v = 0; /* must set it to _something_ */ + } else { + int64_t vv = reloc_value(e); + if (tto == TOKEN_LEG) + v = (vv < 0) ? -1 : (vv > 0) ? 1 : 0; + else if (vv == 0) + v = (tto == TOKEN_LE || tto == TOKEN_GE); + else if (vv > 0) + v = (tto == TOKEN_GE || tto == TOKEN_GT); + else /* vv < 0 */ + v = (tto == TOKEN_LE || tto == TOKEN_LT); + } + break; + } + + if (v == -1) + e = unknown_expr(); + else + e = scalarvect(v); + } + return e; +} + +static expr *expr0(void) +{ + expr *e, *f; + + e = expr1(); + if (!e) + return NULL; + + while (tt == '|') { + scan(); + f = expr1(); + if (!f) + return NULL; + if (!(is_simple(e) || is_just_unknown(e)) || + !(is_simple(f) || is_just_unknown(f))) { + nasm_nonfatal("`|' operator may only be applied to" + " scalar values"); + } + if (is_just_unknown(e) || is_just_unknown(f)) + e = unknown_expr(); + else + e = scalarvect(reloc_value(e) | reloc_value(f)); + } + return e; +} + +static expr *expr1(void) +{ + expr *e, *f; + + e = expr2(); + if (!e) + return NULL; + + while (tt == '^') { + scan(); + f = expr2(); + if (!f) + return NULL; + if (!(is_simple(e) || is_just_unknown(e)) || + !(is_simple(f) || is_just_unknown(f))) { + nasm_nonfatal("`^' operator may only be applied to" + " scalar values"); + } + if (is_just_unknown(e) || is_just_unknown(f)) + e = unknown_expr(); + else + e = scalarvect(reloc_value(e) ^ reloc_value(f)); + } + return e; +} + +static expr *expr2(void) +{ + expr *e, *f; + + e = expr3(); + if (!e) + return NULL; + + while (tt == '&') { + scan(); + f = expr3(); + if (!f) + return NULL; + if (!(is_simple(e) || is_just_unknown(e)) || + !(is_simple(f) || is_just_unknown(f))) { + nasm_nonfatal("`&' operator may only be applied to" + " scalar values"); + } + if (is_just_unknown(e) || is_just_unknown(f)) + e = unknown_expr(); + else + e = scalarvect(reloc_value(e) & reloc_value(f)); + } + return e; +} + +static expr *expr3(void) +{ + expr *e, *f; + + e = expr4(); + if (!e) + return NULL; + + while (tt == TOKEN_SHL || tt == TOKEN_SHR || tt == TOKEN_SAR) { + int tto = tt; + scan(); + f = expr4(); + if (!f) + return NULL; + if (!(is_simple(e) || is_just_unknown(e)) || + !(is_simple(f) || is_just_unknown(f))) { + nasm_nonfatal("shift operator may only be applied to" + " scalar values"); + } else if (is_just_unknown(e) || is_just_unknown(f)) { + e = unknown_expr(); + } else { + switch (tto) { + case TOKEN_SHL: + e = scalarvect(reloc_value(e) << reloc_value(f)); + break; + case TOKEN_SHR: + e = scalarvect(((uint64_t)reloc_value(e)) >> + reloc_value(f)); + break; + case TOKEN_SAR: + e = scalarvect(((int64_t)reloc_value(e)) >> + reloc_value(f)); + break; + } + } + } + return e; +} + +static expr *expr4(void) +{ + expr *e, *f; + + e = expr5(); + if (!e) + return NULL; + while (tt == '+' || tt == '-') { + int tto = tt; + scan(); + f = expr5(); + if (!f) + return NULL; + switch (tto) { + case '+': + e = add_vectors(e, f); + break; + case '-': + e = add_vectors(e, scalar_mult(f, -1L, false)); + break; + } + } + return e; +} + +static expr *expr5(void) +{ + expr *e, *f; + + e = expr6(); + if (!e) + return NULL; + while (tt == '*' || tt == '/' || tt == '%' || + tt == TOKEN_SDIV || tt == TOKEN_SMOD) { + int tto = tt; + scan(); + f = expr6(); + if (!f) + return NULL; + if (tto != '*' && (!(is_simple(e) || is_just_unknown(e)) || + !(is_simple(f) || is_just_unknown(f)))) { + nasm_nonfatal("division operator may only be applied to" + " scalar values"); + return NULL; + } + if (tto != '*' && !is_just_unknown(f) && reloc_value(f) == 0) { + nasm_nonfatal("division by zero"); + return NULL; + } + switch (tto) { + case '*': + if (is_simple(e)) + e = scalar_mult(f, reloc_value(e), true); + else if (is_simple(f)) + e = scalar_mult(e, reloc_value(f), true); + else if (is_just_unknown(e) && is_just_unknown(f)) + e = unknown_expr(); + else { + nasm_nonfatal("unable to multiply two " + "non-scalar objects"); + return NULL; + } + break; + case '/': + if (is_just_unknown(e) || is_just_unknown(f)) + e = unknown_expr(); + else + e = scalarvect(((uint64_t)reloc_value(e)) / + ((uint64_t)reloc_value(f))); + break; + case '%': + if (is_just_unknown(e) || is_just_unknown(f)) + e = unknown_expr(); + else + e = scalarvect(((uint64_t)reloc_value(e)) % + ((uint64_t)reloc_value(f))); + break; + case TOKEN_SDIV: + if (is_just_unknown(e) || is_just_unknown(f)) + e = unknown_expr(); + else + e = scalarvect(((int64_t)reloc_value(e)) / + ((int64_t)reloc_value(f))); + break; + case TOKEN_SMOD: + if (is_just_unknown(e) || is_just_unknown(f)) + e = unknown_expr(); + else + e = scalarvect(((int64_t)reloc_value(e)) % + ((int64_t)reloc_value(f))); + break; + } + } + return e; +} + +static expr *eval_floatize(enum floatize type) +{ + uint8_t result[16], *p; /* Up to 128 bits */ + int sign = 1; + int64_t val; + size_t len; + int i; + const struct ieee_format *fmt; + + fmt = &fp_formats[type]; + + scan(); + if (tt != '(') { + nasm_nonfatal("expecting `('"); + return NULL; + } + scan(); + if (tt == '-' || tt == '+') { + sign = (tt == '-') ? -1 : 1; + scan(); + } + if (tt != TOKEN_FLOAT) { + nasm_nonfatal("expecting floating-point number"); + return NULL; + } + if (!float_const(tokval->t_charptr, sign, result, type)) + return NULL; + scan(); + if (tt != ')') { + nasm_nonfatal("expecting `)'"); + return NULL; + } + + len = fmt->bytes - fmt->offset; + if (len > 8) + len = 8; /* Max 64 bits */ + p = result + len + fmt->offset; + val = 0; + for (i = len; i; i--) { + p--; + val = (val << 8) + *p; + } + + begintemp(); + addtotemp(EXPR_SIMPLE, val); + + scan(); + return finishtemp(); +} + +static expr *eval_strfunc(enum strfunc type, const char *name) +{ + char *string; + size_t string_len; + int64_t val; + bool parens, rn_warn; + + parens = false; + scan(); + if (tt == '(') { + parens = true; + scan(); + } + if (tt != TOKEN_STR) { + nasm_nonfatal("expecting string as argument to %s", name); + return NULL; + } + string_len = string_transform(tokval->t_charptr, tokval->t_inttwo, + &string, type); + if (string_len == (size_t)-1) { + nasm_nonfatal("invalid input string to %s", name); + return NULL; + } + + val = readstrnum(string, string_len, &rn_warn); + if (parens) { + scan(); + if (tt != ')') { + nasm_nonfatal("expecting `)'"); + return NULL; + } + } + + if (rn_warn) + nasm_warn(WARN_OTHER, "character constant too long"); + + begintemp(); + addtotemp(EXPR_SIMPLE, val); + + scan(); + return finishtemp(); +} + +static int64_t eval_ifunc(int64_t val, enum ifunc func) +{ + uint64_t uval = (uint64_t)val; + int64_t rv; + + switch (func) { + case IFUNC_ILOG2E: + case IFUNC_ILOG2W: + if (!is_power2(uval)) + nasm_error((func == IFUNC_ILOG2E) ? ERR_NONFATAL : ERR_WARNING|WARN_OTHER, + "ilog2 argument is not a power of two"); + /* fall through */ + case IFUNC_ILOG2F: + rv = ilog2_64(uval); + break; + + case IFUNC_ILOG2C: + rv = (uval < 2) ? 0 : ilog2_64(uval-1) + 1; + break; + + default: + nasm_panic("invalid IFUNC token %d", func); + rv = 0; + break; + } + + return rv; +} + +static expr *expr6(void) +{ + int32_t type; + expr *e; + int32_t label_seg; + int64_t label_ofs; + int64_t tmpval; + bool rn_warn; + const char *scope; + + if (++deadman > nasm_limit[LIMIT_EVAL]) { + nasm_nonfatal("expression too long"); + return NULL; + } + + switch (tt) { + case '-': + scan(); + e = expr6(); + if (!e) + return NULL; + return scalar_mult(e, -1L, false); + + case '+': + scan(); + return expr6(); + + case '~': + scan(); + e = expr6(); + if (!e) + return NULL; + if (is_just_unknown(e)) + return unknown_expr(); + else if (!is_simple(e)) { + nasm_nonfatal("`~' operator may only be applied to" + " scalar values"); + return NULL; + } + return scalarvect(~reloc_value(e)); + + case '!': + scan(); + e = expr6(); + if (!e) + return NULL; + if (is_just_unknown(e)) + return unknown_expr(); + else if (!is_simple(e)) { + nasm_nonfatal("`!' operator may only be applied to" + " scalar values"); + return NULL; + } + return scalarvect(!reloc_value(e)); + + case TOKEN_IFUNC: + { + enum ifunc func = tokval->t_integer; + scan(); + e = expr6(); + if (!e) + return NULL; + if (is_just_unknown(e)) + return unknown_expr(); + else if (!is_simple(e)) { + nasm_nonfatal("function may only be applied to" + " scalar values"); + return NULL; + } + return scalarvect(eval_ifunc(reloc_value(e), func)); + } + + case TOKEN_SEG: + scan(); + e = expr6(); + if (!e) + return NULL; + e = segment_part(e); + if (!e) + return NULL; + if (is_unknown(e) && critical) { + nasm_nonfatal("unable to determine segment base"); + return NULL; + } + return e; + + case TOKEN_FLOATIZE: + return eval_floatize(tokval->t_integer); + + case TOKEN_STRFUNC: + return eval_strfunc(tokval->t_integer, tokval->t_charptr); + + case '(': + scan(); + e = bexpr(); + if (!e) + return NULL; + if (tt != ')') { + nasm_nonfatal("expecting `)'"); + return NULL; + } + scan(); + return e; + + case TOKEN_NUM: + case TOKEN_STR: + case TOKEN_REG: + case TOKEN_ID: + case TOKEN_INSN: /* Opcodes that occur here are really labels */ + case TOKEN_HERE: + case TOKEN_BASE: + case TOKEN_DECORATOR: + begintemp(); + switch (tt) { + case TOKEN_NUM: + addtotemp(EXPR_SIMPLE, tokval->t_integer); + break; + case TOKEN_STR: + tmpval = readstrnum(tokval->t_charptr, tokval->t_inttwo, &rn_warn); + if (rn_warn) + nasm_warn(WARN_OTHER, "character constant too long"); + addtotemp(EXPR_SIMPLE, tmpval); + break; + case TOKEN_REG: + addtotemp(tokval->t_integer, 1L); + if (hint && hint->type == EAH_NOHINT) + hint->base = tokval->t_integer, hint->type = EAH_MAKEBASE; + break; + case TOKEN_ID: + case TOKEN_INSN: + case TOKEN_HERE: + case TOKEN_BASE: + /* + * If !location.known, this indicates that no + * symbol, Here or Base references are valid because we + * are in preprocess-only mode. + */ + if (!location.known) { + nasm_nonfatal("%s not supported in preprocess-only mode", + (tt == TOKEN_HERE ? "`$'" : + tt == TOKEN_BASE ? "`$$'" : + "symbol references")); + addtotemp(EXPR_UNKNOWN, 1L); + break; + } + + type = EXPR_SIMPLE; /* might get overridden by UNKNOWN */ + if (tt == TOKEN_BASE) { + label_seg = in_absolute ? absolute.segment : location.segment; + label_ofs = 0; + } else if (tt == TOKEN_HERE) { + label_seg = in_absolute ? absolute.segment : location.segment; + label_ofs = in_absolute ? absolute.offset : location.offset; + } else { + enum label_type ltype; + ltype = lookup_label(tokval->t_charptr, &label_seg, &label_ofs); + if (ltype == LBL_none) { + scope = local_scope(tokval->t_charptr); + if (critical) { + nasm_nonfatal("symbol `%s%s' not defined%s", + scope,tokval->t_charptr, + pass_first() ? " before use" : ""); + return NULL; + } + if (opflags) + *opflags |= OPFLAG_FORWARD; + type = EXPR_UNKNOWN; + label_seg = NO_SEG; + label_ofs = 1; + } else if (is_extern(ltype)) { + if (opflags) + *opflags |= OPFLAG_EXTERN; + } + } + addtotemp(type, label_ofs); + if (label_seg != NO_SEG) + addtotemp(EXPR_SEGBASE + label_seg, 1L); + break; + case TOKEN_DECORATOR: + addtotemp(EXPR_RDSAE, tokval->t_integer); + break; + } + scan(); + return finishtemp(); + + default: + nasm_nonfatal("expression syntax error"); + return NULL; + } +} + +expr *evaluate(scanner sc, void *scprivate, struct tokenval *tv, + int *fwref, bool crit, struct eval_hints *hints) +{ + expr *e; + expr *f = NULL; + + deadman = 0; + + hint = hints; + if (hint) + hint->type = EAH_NOHINT; + + critical = crit; + scanfunc = sc; + scpriv = scprivate; + tokval = tv; + opflags = fwref; + + while (ntempexprs) /* initialize temporary storage */ + nasm_free(tempexprs[--ntempexprs]); + + tt = tokval->t_type; + if (tt == TOKEN_INVALID) + scan(); + + e = bexpr(); + if (!e) + return NULL; + + if (tt == TOKEN_WRT) { + scan(); /* eat the WRT */ + f = expr6(); + if (!f) + return NULL; + } + e = scalar_mult(e, 1L, false); /* strip far-absolute segment part */ + if (f) { + expr *g; + if (is_just_unknown(f)) + g = unknown_expr(); + else { + int64_t value; + begintemp(); + if (!is_reloc(f)) { + nasm_nonfatal("invalid right-hand operand to WRT"); + return NULL; + } + value = reloc_seg(f); + if (value == NO_SEG) + value = reloc_value(f) | SEG_ABS; + else if (!(value & SEG_ABS) && !(value % 2) && critical) { + nasm_nonfatal("invalid right-hand operand to WRT"); + return NULL; + } + addtotemp(EXPR_WRT, value); + g = finishtemp(); + } + e = add_vectors(e, g); + } + return e; +} diff --git a/vere/ext/nasm/asm/eval.h b/vere/ext/nasm/asm/eval.h new file mode 100644 index 0000000..ba471a2 --- /dev/null +++ b/vere/ext/nasm/asm/eval.h @@ -0,0 +1,49 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2009 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * eval.h header file for eval.c + */ + +#ifndef NASM_EVAL_H +#define NASM_EVAL_H + +/* + * The evaluator itself. + */ +expr *evaluate(scanner sc, void *scprivate, struct tokenval *tv, + int *fwref, bool critical, struct eval_hints *hints); + +void eval_cleanup(void); + +#endif diff --git a/vere/ext/nasm/asm/exprdump.c b/vere/ext/nasm/asm/exprdump.c new file mode 100644 index 0000000..68a9b67 --- /dev/null +++ b/vere/ext/nasm/asm/exprdump.c @@ -0,0 +1,79 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * exprdump.c + * + * Debugging code to dump the contents of an expression vector to stdout + */ + +#include "nasm.h" + +static const char *expr_type(int32_t type) +{ + static char seg_str[64]; + + switch (type) { + case 0: + return "null"; + case EXPR_UNKNOWN: + return "unknown"; + case EXPR_SIMPLE: + return "simple"; + case EXPR_WRT: + return "wrt"; + case EXPR_RDSAE: + return "sae"; + default: + break; + } + + if (type >= EXPR_REG_START && type <= EXPR_REG_END) { + return nasm_reg_names[type - EXPR_REG_START]; + } else if (type >= EXPR_SEGBASE) { + snprintf(seg_str, sizeof seg_str, "%sseg %d", + (type - EXPR_SEGBASE) == location.segment ? "this " : "", + type - EXPR_SEGBASE); + return seg_str; + } else { + return "ERR"; + } +} + +void dump_expr(const expr *e) +{ + printf("["); + for (; e->type; e++) + printf("<%s(%d),%"PRId64">", expr_type(e->type), e->type, e->value); + printf("]\n"); +} diff --git a/vere/ext/nasm/asm/exprlib.c b/vere/ext/nasm/asm/exprlib.c new file mode 100644 index 0000000..f7cfbce --- /dev/null +++ b/vere/ext/nasm/asm/exprlib.c @@ -0,0 +1,200 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * exprlib.c + * + * Library routines to manipulate expression data types. + */ + +#include "nasm.h" + +/* + * Return true if the argument is a simple scalar. (Or a far- + * absolute, which counts.) + */ +bool is_simple(const expr *vect) +{ + while (vect->type && !vect->value) + vect++; + if (!vect->type) + return true; + if (vect->type != EXPR_SIMPLE) + return false; + do { + vect++; + } while (vect->type && !vect->value); + if (vect->type && vect->type < EXPR_SEGBASE + SEG_ABS) + return false; + return true; +} + +/* + * Return true if the argument is a simple scalar, _NOT_ a far- + * absolute. + */ +bool is_really_simple(const expr *vect) +{ + while (vect->type && !vect->value) + vect++; + if (!vect->type) + return true; + if (vect->type != EXPR_SIMPLE) + return false; + do { + vect++; + } while (vect->type && !vect->value); + if (vect->type) + return false; + return true; +} + +/* + * Return true if the argument is relocatable (i.e. a simple + * scalar, plus at most one segment-base, possibly a subtraction + * of the current segment base, plus possibly a WRT). + */ +bool is_reloc(const expr *vect) +{ + bool has_rel = false; /* Has a self-segment-subtract */ + bool has_seg = false; /* Has a segment base */ + + for (; vect->type; vect++) { + if (!vect->value) { + /* skip value-0 terms */ + continue; + } else if (vect->type < EXPR_SIMPLE) { + /* false if a register is present */ + return false; + } else if (vect->type == EXPR_SIMPLE) { + /* skip over a pure number term... */ + continue; + } else if (vect->type == EXPR_WRT) { + /* skip over a WRT term... */ + continue; + } else if (vect->type < EXPR_SEGBASE) { + /* other special type -> problem */ + return false; + } else if (vect->value == 1) { + if (has_seg) + return false; /* only one segbase allowed */ + has_seg = true; + } else if (vect->value == -1) { + if (vect->type != location.segment + EXPR_SEGBASE) + return false; /* can only subtract current segment */ + if (has_rel) + return false; /* already is relative */ + has_rel = true; + } + } + + return true; +} + +/* + * Return true if the argument contains an `unknown' part. + */ +bool is_unknown(const expr *vect) +{ + while (vect->type && vect->type < EXPR_UNKNOWN) + vect++; + return (vect->type == EXPR_UNKNOWN); +} + +/* + * Return true if the argument contains nothing but an `unknown' + * part. + */ +bool is_just_unknown(const expr *vect) +{ + while (vect->type && !vect->value) + vect++; + return (vect->type == EXPR_UNKNOWN); +} + +/* + * Return the scalar part of a relocatable vector. (Including + * simple scalar vectors - those qualify as relocatable.) + */ +int64_t reloc_value(const expr *vect) +{ + while (vect->type && !vect->value) + vect++; + if (!vect->type) + return 0; + if (vect->type == EXPR_SIMPLE) + return vect->value; + else + return 0; +} + +/* + * Return the segment number of a relocatable vector, or NO_SEG for + * simple scalars. + */ +int32_t reloc_seg(const expr *vect) +{ + for (; vect->type; vect++) { + if (vect->type >= EXPR_SEGBASE && vect->value == 1) + return vect->type - EXPR_SEGBASE; + } + + return NO_SEG; +} + +/* + * Return the WRT segment number of a relocatable vector, or NO_SEG + * if no WRT part is present. + */ +int32_t reloc_wrt(const expr *vect) +{ + while (vect->type && vect->type < EXPR_WRT) + vect++; + if (vect->type == EXPR_WRT) { + return vect->value; + } else + return NO_SEG; +} + +/* + * Return true if this expression contains a subtraction of the location + */ +bool is_self_relative(const expr *vect) +{ + for (; vect->type; vect++) { + if (vect->type == location.segment + EXPR_SEGBASE && vect->value == -1) + return true; + } + + return false; +} diff --git a/vere/ext/nasm/asm/floats.c b/vere/ext/nasm/asm/floats.c new file mode 100644 index 0000000..27180bd --- /dev/null +++ b/vere/ext/nasm/asm/floats.c @@ -0,0 +1,960 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * float.c floating-point constant support for the Netwide Assembler + */ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasm.h" +#include "floats.h" +#include "error.h" + +/* + * ----------------- + * local variables + * ----------------- + */ +static bool daz = false; /* denormals as zero */ +static enum float_round rc = FLOAT_RC_NEAR; /* rounding control */ + +/* + * ----------- + * constants + * ----------- + */ + +/* "A limb is like a digit but bigger */ +typedef uint32_t fp_limb; +typedef uint64_t fp_2limb; + +#define LIMB_BITS 32 +#define LIMB_BYTES (LIMB_BITS/8) +#define LIMB_TOP_BIT ((fp_limb)1 << (LIMB_BITS-1)) +#define LIMB_MASK ((fp_limb)(~0)) +#define LIMB_ALL_BYTES ((fp_limb)0x01010101) +#define LIMB_BYTE(x) ((x)*LIMB_ALL_BYTES) + +/* 112 bits + 64 bits for accuracy + 16 bits for rounding */ +#define MANT_LIMBS 6 + +/* 52 digits fit in 176 bits because 10^53 > 2^176 > 10^52 */ +#define MANT_DIGITS 52 + +/* the format and the argument list depend on MANT_LIMBS */ +#define MANT_FMT "%08x_%08x_%08x_%08x_%08x_%08x" +#define MANT_ARG SOME_ARG(mant, 0) + +#define SOME_ARG(a,i) (a)[(i)+0], (a)[(i)+1], (a)[(i)+2], \ + (a)[(i)+3], (a)[(i)+4], (a)[(i)+5] + +/* + * --------------------------------------------------------------------------- + * emit a printf()-like debug message... but only if DEBUG_FLOAT was defined + * --------------------------------------------------------------------------- + */ + +#ifdef DEBUG_FLOAT +#define dprintf(x) printf x +#else +#define dprintf(x) do { } while (0) +#endif + +/* + * --------------------------------------------------------------------------- + * multiply + * --------------------------------------------------------------------------- + */ +static int float_multiply(fp_limb *to, fp_limb *from) +{ + fp_2limb temp[MANT_LIMBS * 2]; + int i, j; + + /* + * guaranteed that top bit of 'from' is set -- so we only have + * to worry about _one_ bit shift to the left + */ + dprintf(("%s=" MANT_FMT "\n", "mul1", SOME_ARG(to, 0))); + dprintf(("%s=" MANT_FMT "\n", "mul2", SOME_ARG(from, 0))); + + memset(temp, 0, sizeof temp); + + for (i = 0; i < MANT_LIMBS; i++) { + for (j = 0; j < MANT_LIMBS; j++) { + fp_2limb n; + n = (fp_2limb) to[i] * (fp_2limb) from[j]; + temp[i + j] += n >> LIMB_BITS; + temp[i + j + 1] += (fp_limb)n; + } + } + + for (i = MANT_LIMBS * 2; --i;) { + temp[i - 1] += temp[i] >> LIMB_BITS; + temp[i] &= LIMB_MASK; + } + + dprintf(("%s=" MANT_FMT "_" MANT_FMT "\n", "temp", SOME_ARG(temp, 0), + SOME_ARG(temp, MANT_LIMBS))); + + if (temp[0] & LIMB_TOP_BIT) { + for (i = 0; i < MANT_LIMBS; i++) { + to[i] = temp[i] & LIMB_MASK; + } + dprintf(("%s=" MANT_FMT " (%i)\n", "prod", SOME_ARG(to, 0), 0)); + return 0; + } else { + for (i = 0; i < MANT_LIMBS; i++) { + to[i] = (temp[i] << 1) + !!(temp[i + 1] & LIMB_TOP_BIT); + } + dprintf(("%s=" MANT_FMT " (%i)\n", "prod", SOME_ARG(to, 0), -1)); + return -1; + } +} + +/* + * --------------------------------------------------------------------------- + * read an exponent; returns INT32_MAX on error + * --------------------------------------------------------------------------- + */ +static int32_t read_exponent(const char *string, int32_t max) +{ + int32_t i = 0; + bool neg = false; + + if (*string == '+') { + string++; + } else if (*string == '-') { + neg = true; + string++; + } + while (*string) { + if (*string >= '0' && *string <= '9') { + i = (i * 10) + (*string - '0'); + + /* + * To ensure that underflows and overflows are + * handled properly we must avoid wraparounds of + * the signed integer value that is used to hold + * the exponent. Therefore we cap the exponent at + * +/-5000, which is slightly more/less than + * what's required for normal and denormal numbers + * in single, double, and extended precision, but + * sufficient to avoid signed integer wraparound. + */ + if (i > max) + i = max; + } else if (*string == '_') { + /* do nothing */ + } else { + nasm_nonfatal("invalid character in floating-point constant %s: '%c'", + "exponent", *string); + return INT32_MAX; + } + string++; + } + + return neg ? -i : i; +} + +/* + * --------------------------------------------------------------------------- + * convert + * --------------------------------------------------------------------------- + */ +static bool ieee_flconvert(const char *string, fp_limb *mant, + int32_t * exponent) +{ + char digits[MANT_DIGITS]; + char *p, *q, *r; + fp_limb mult[MANT_LIMBS], bit; + fp_limb *m; + int32_t tenpwr, twopwr; + int32_t extratwos; + bool started, seendot, warned; + + warned = false; + p = digits; + tenpwr = 0; + started = seendot = false; + + while (*string && *string != 'E' && *string != 'e') { + if (*string == '.') { + if (!seendot) { + seendot = true; + } else { + nasm_nonfatal("too many periods in floating-point constant"); + return false; + } + } else if (*string >= '0' && *string <= '9') { + if (*string == '0' && !started) { + if (seendot) { + tenpwr--; + } + } else { + started = true; + if (p < digits + sizeof(digits)) { + *p++ = *string - '0'; + } else { + if (!warned) { + /*! + *!float-toolong [on] too many digits in floating-point number + *! warns about too many digits in floating-point numbers. + */ + nasm_warn(WARN_FLOAT_TOOLONG|ERR_PASS2, + "floating-point constant significand contains " + "more than %i digits", MANT_DIGITS); + warned = true; + } + } + if (!seendot) { + tenpwr++; + } + } + } else if (*string == '_') { + /* do nothing */ + } else { + nasm_nonfatalf(ERR_PASS2, + "invalid character in floating-point constant %s: '%c'", + "significand", *string); + return false; + } + string++; + } + + if (*string) { + int32_t e; + + string++; /* eat the E */ + e = read_exponent(string, 5000); + if (e == INT32_MAX) + return false; + tenpwr += e; + } + + /* + * At this point, the memory interval [digits,p) contains a + * series of decimal digits zzzzzzz, such that our number X + * satisfies X = 0.zzzzzzz * 10^tenpwr. + */ + q = digits; + dprintf(("X = 0.")); + while (q < p) { + dprintf(("%c", *q + '0')); + q++; + } + dprintf((" * 10^%i\n", tenpwr)); + + /* + * Now convert [digits,p) to our internal representation. + */ + bit = LIMB_TOP_BIT; + for (m = mant; m < mant + MANT_LIMBS; m++) { + *m = 0; + } + m = mant; + q = digits; + started = false; + twopwr = 0; + while (m < mant + MANT_LIMBS) { + fp_limb carry = 0; + while (p > q && !p[-1]) { + p--; + } + if (p <= q) { + break; + } + for (r = p; r-- > q;) { + int32_t i; + i = 2 * *r + carry; + if (i >= 10) { + carry = 1; + i -= 10; + } else { + carry = 0; + } + *r = i; + } + if (carry) { + *m |= bit; + started = true; + } + if (started) { + if (bit == 1) { + bit = LIMB_TOP_BIT; + m++; + } else { + bit >>= 1; + } + } else { + twopwr--; + } + } + twopwr += tenpwr; + + /* + * At this point, the 'mant' array contains the first frac- + * tional places of a base-2^16 real number which when mul- + * tiplied by 2^twopwr and 5^tenpwr gives X. + */ + dprintf(("X = " MANT_FMT " * 2^%i * 5^%i\n", MANT_ARG, twopwr, + tenpwr)); + + /* + * Now multiply 'mant' by 5^tenpwr. + */ + if (tenpwr < 0) { /* mult = 5^-1 = 0.2 */ + for (m = mult; m < mult + MANT_LIMBS - 1; m++) { + *m = LIMB_BYTE(0xcc); + } + mult[MANT_LIMBS - 1] = LIMB_BYTE(0xcc)+1; + extratwos = -2; + tenpwr = -tenpwr; + + /* + * If tenpwr was 1000...000b, then it becomes 1000...000b. See + * the "ANSI C" comment below for more details on that case. + * + * Because we already truncated tenpwr to +5000...-5000 inside + * the exponent parsing code, this shouldn't happen though. + */ + } else if (tenpwr > 0) { /* mult = 5^+1 = 5.0 */ + mult[0] = (fp_limb)5 << (LIMB_BITS-3); /* 0xA000... */ + for (m = mult + 1; m < mult + MANT_LIMBS; m++) { + *m = 0; + } + extratwos = 3; + } else { + extratwos = 0; + } + while (tenpwr) { + dprintf(("loop=" MANT_FMT " * 2^%i * 5^%i (%i)\n", MANT_ARG, + twopwr, tenpwr, extratwos)); + if (tenpwr & 1) { + dprintf(("mant*mult\n")); + twopwr += extratwos + float_multiply(mant, mult); + } + dprintf(("mult*mult\n")); + extratwos = extratwos * 2 + float_multiply(mult, mult); + tenpwr >>= 1; + + /* + * In ANSI C, the result of right-shifting a signed integer is + * considered implementation-specific. To ensure that the loop + * terminates even if tenpwr was 1000...000b to begin with, we + * manually clear the MSB, in case a 1 was shifted in. + * + * Because we already truncated tenpwr to +5000...-5000 inside + * the exponent parsing code, this shouldn't matter; neverthe- + * less it is the right thing to do here. + */ + tenpwr &= (uint32_t) - 1 >> 1; + } + + /* + * At this point, the 'mant' array contains the first frac- + * tional places of a base-2^16 real number in [0.5,1) that + * when multiplied by 2^twopwr gives X. Or it contains zero + * of course. We are done. + */ + *exponent = twopwr; + return true; +} + +/* + * --------------------------------------------------------------------------- + * operations of specific bits + * --------------------------------------------------------------------------- + */ + +/* Set a bit, using *bigendian* bit numbering (0 = MSB) */ +static void set_bit(fp_limb *mant, int bit) +{ + mant[bit/LIMB_BITS] |= LIMB_TOP_BIT >> (bit & (LIMB_BITS-1)); +} + +/* Test a single bit */ +static int test_bit(const fp_limb *mant, int bit) +{ + return (mant[bit/LIMB_BITS] >> (~bit & (LIMB_BITS-1))) & 1; +} + +/* Report if the mantissa value is all zero */ +static bool is_zero(const fp_limb *mant) +{ + int i; + + for (i = 0; i < MANT_LIMBS; i++) + if (mant[i]) + return false; + + return true; +} + +/* + * --------------------------------------------------------------------------- + * round a mantissa off after i words + * --------------------------------------------------------------------------- + */ + +#define ROUND_COLLECT_BITS \ + do { \ + m = mant[i] & (2*bit-1); \ + for (j = i+1; j < MANT_LIMBS; j++) \ + m = m | mant[j]; \ + } while (0) + +#define ROUND_ABS_DOWN \ + do { \ + mant[i] &= ~(bit-1); \ + for (j = i+1; j < MANT_LIMBS; j++) \ + mant[j] = 0; \ + return false; \ + } while (0) + +#define ROUND_ABS_UP \ + do { \ + mant[i] = (mant[i] & ~(bit-1)) + bit; \ + for (j = i+1; j < MANT_LIMBS; j++) \ + mant[j] = 0; \ + while (i > 0 && !mant[i]) \ + ++mant[--i]; \ + return !mant[0]; \ + } while (0) + +static bool ieee_round(bool minus, fp_limb *mant, int bits) +{ + fp_limb m = 0; + int32_t j; + int i = bits / LIMB_BITS; + int p = bits % LIMB_BITS; + fp_limb bit = LIMB_TOP_BIT >> p; + + if (rc == FLOAT_RC_NEAR) { + if (mant[i] & bit) { + mant[i] &= ~bit; + ROUND_COLLECT_BITS; + mant[i] |= bit; + if (m) { + ROUND_ABS_UP; + } else { + if (test_bit(mant, bits-1)) { + ROUND_ABS_UP; + } else { + ROUND_ABS_DOWN; + } + } + } else { + ROUND_ABS_DOWN; + } + } else if (rc == FLOAT_RC_ZERO || + rc == (minus ? FLOAT_RC_UP : FLOAT_RC_DOWN)) { + ROUND_ABS_DOWN; + } else { + /* rc == (minus ? FLOAT_RC_DOWN : FLOAT_RC_UP) */ + /* Round toward +/- infinity */ + ROUND_COLLECT_BITS; + if (m) { + ROUND_ABS_UP; + } else { + ROUND_ABS_DOWN; + } + } + return false; +} + +/* Returns a value >= 16 if not a valid hex digit */ +static unsigned int hexval(char c) +{ + unsigned int v = (unsigned char) c; + + if (v >= '0' && v <= '9') + return v - '0'; + else + return (v|0x20) - 'a' + 10; +} + +/* Handle floating-point numbers with radix 2^bits and binary exponent */ +static bool ieee_flconvert_bin(const char *string, int bits, + fp_limb *mant, int32_t *exponent) +{ + static const int log2tbl[16] = + { -1, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3 }; + fp_limb mult[MANT_LIMBS + 1], *mp; + int ms; + int32_t twopwr; + bool seendot, seendigit; + unsigned char c; + const int radix = 1 << bits; + fp_limb v; + + twopwr = 0; + seendot = seendigit = false; + ms = 0; + mp = NULL; + + memset(mult, 0, sizeof mult); + + while ((c = *string++) != '\0') { + if (c == '.') { + if (!seendot) + seendot = true; + else { + nasm_nonfatal("too many periods in floating-point constant"); + return false; + } + } else if ((v = hexval(c)) < (unsigned int)radix) { + if (!seendigit && v) { + int l = log2tbl[v]; + + seendigit = true; + mp = mult; + ms = (LIMB_BITS-1)-l; + + twopwr += l+1-bits; + } + + if (seendigit) { + if (ms < 0) { + /* Cast to fp_2limb as ms == -LIMB_BITS is possible. */ + *mp |= (fp_2limb)v >> -ms; + mp++; + if (mp > &mult[MANT_LIMBS]) + mp = &mult[MANT_LIMBS]; /* Guard slot */ + ms += LIMB_BITS; + } + *mp |= v << ms; + ms -= bits; + + if (!seendot) + twopwr += bits; + } else { + if (seendot) + twopwr -= bits; + } + } else if (c == 'p' || c == 'P') { + int32_t e; + e = read_exponent(string, 20000); + if (e == INT32_MAX) + return false; + twopwr += e; + break; + } else if (c == '_') { + /* ignore */ + } else { + nasm_nonfatal("floating-point constant: `%c' is invalid character", c); + return false; + } + } + + if (!seendigit) { + memset(mant, 0, MANT_LIMBS*sizeof(fp_limb)); /* Zero */ + *exponent = 0; + } else { + memcpy(mant, mult, MANT_LIMBS*sizeof(fp_limb)); + *exponent = twopwr; + } + + return true; +} + +/* + * Shift a mantissa to the right by i bits. + */ +static void ieee_shr(fp_limb *mant, int i) +{ + fp_limb n, m; + int j = 0; + int sr, sl, offs; + + sr = i % LIMB_BITS; sl = LIMB_BITS-sr; + offs = i/LIMB_BITS; + + if (sr == 0) { + if (offs) + for (j = MANT_LIMBS-1; j >= offs; j--) + mant[j] = mant[j-offs]; + } else if (MANT_LIMBS-1-offs < 0) { + j = MANT_LIMBS-1; + } else { + n = mant[MANT_LIMBS-1-offs] >> sr; + for (j = MANT_LIMBS-1; j > offs; j--) { + m = mant[j-offs-1]; + mant[j] = (m << sl) | n; + n = m >> sr; + } + mant[j--] = n; + } + while (j >= 0) + mant[j--] = 0; +} + +/* Produce standard IEEE formats, with implicit or explicit integer + bit; this makes the following assumptions: + + - the sign bit is the MSB, followed by the exponent, + followed by the integer bit if present. + - the sign bit plus exponent fit in 16 bits. + - the exponent bias is 2^(n-1)-1 for an n-bit exponent */ + +/* + * The 16- and 128-bit formats are expected to be in IEEE 754r. + * AMD SSE5 uses the 16-bit format. + * + * The 32- and 64-bit formats are the original IEEE 754 formats. + * + * The 80-bit format is x87-specific, but widely used. + * + * The 8-bit format appears to be the consensus 8-bit floating-point + * format. It is apparently used in graphics applications. + * + * The b16 format is a 16-bit format with smaller mantissa and larger + * exponent field. It is effectively a truncated version of the standard + * IEEE 32-bit (single) format, but is explicitly supported here in + * order to support proper rounding. + * + * This array must correspond to enum floatize in include/nasm.h. + * Note that there are some formats which have more than one enum; + * both need to be listed here with the appropriate offset into the + * floating-point byte array (use for the floatize operators.) + * + * FLOAT_ERR is a value that both represents "invalid format" and the + * size of this array. + */ +const struct ieee_format fp_formats[FLOAT_ERR] = { + { 1, 3, 0, 4, 0 }, /* FLOAT_8 */ + { 2, 10, 0, 5, 0 }, /* FLOAT_16 */ + { 2, 7, 0, 8, 0 }, /* FLOAT_B16 */ + { 4, 23, 0, 8, 0 }, /* FLOAT_32 */ + { 8, 52, 0, 11, 0 }, /* FLOAT_64 */ + { 10, 63, 1, 15, 0 }, /* FLOAT_80M */ + { 10, 63, 1, 15, 8 }, /* FLOAT_80E */ + { 16, 112, 0, 15, 0 }, /* FLOAT_128L */ + { 16, 112, 0, 15, 8 } /* FLOAT_128H */ +}; + +/* Types of values we can generate */ +enum floats { + FL_ZERO, + FL_DENORMAL, + FL_NORMAL, + FL_INFINITY, + FL_QNAN, + FL_SNAN +}; + +static int to_packed_bcd(const char *str, const char *p, + int s, uint8_t *result, + const struct ieee_format *fmt) +{ + int n = 0; + char c; + int tv = -1; + + if (fmt->bytes != 10) { + nasm_nonfatal("packed BCD requires an 80-bit format"); + return 0; + } + + while (p >= str) { + c = *p--; + if (c >= '0' && c <= '9') { + if (tv < 0) { + if (n == 9) + nasm_warn(WARN_OTHER|ERR_PASS2, "packed BCD truncated to 18 digits"); + tv = c-'0'; + } else { + if (n < 9) + *result++ = tv + ((c-'0') << 4); + n++; + tv = -1; + } + } else if (c == '_') { + /* do nothing */ + } else { + nasm_nonfatal("invalid character `%c' in packed BCD constant", c); + return 0; + } + } + if (tv >= 0) { + if (n < 9) + *result++ = tv; + n++; + } + while (n < 9) { + *result++ = 0; + n++; + } + *result = (s < 0) ? 0x80 : 0; + + return 1; /* success */ +} + +int float_const(const char *str, int s, uint8_t *result, enum floatize ffmt) +{ + const struct ieee_format *fmt = &fp_formats[ffmt]; + fp_limb mant[MANT_LIMBS]; + int32_t exponent = 0; + const int32_t expmax = 1 << (fmt->exponent - 1); + fp_limb one_mask = LIMB_TOP_BIT >> + ((fmt->exponent+fmt->explicit) % LIMB_BITS); + const int one_pos = (fmt->exponent+fmt->explicit)/LIMB_BITS; + int i; + int shift; + enum floats type; + bool ok; + const bool minus = s < 0; + const int bits = fmt->bytes * 8; + const char *strend; + + nasm_assert(str[0]); + + strend = strchr(str, '\0'); + if (strend[-1] == 'P' || strend[-1] == 'p') + return to_packed_bcd(str, strend-2, s, result, fmt); + + if (str[0] == '_') { + /* Special tokens */ + + switch (str[3]) { + case 'n': /* __?nan?__ */ + case 'N': + case 'q': /* __?qnan?__ */ + case 'Q': + type = FL_QNAN; + break; + case 's': /* __?snan?__ */ + case 'S': + type = FL_SNAN; + break; + case 'i': /* __?infinity?__ */ + case 'I': + type = FL_INFINITY; + break; + default: + nasm_nonfatal("internal error: unknown FP constant token `%s'", str); + type = FL_QNAN; + break; + } + } else { + if (str[0] == '0') { + switch (str[1]) { + case 'x': case 'X': + case 'h': case 'H': + ok = ieee_flconvert_bin(str+2, 4, mant, &exponent); + break; + case 'o': case 'O': + case 'q': case 'Q': + ok = ieee_flconvert_bin(str+2, 3, mant, &exponent); + break; + case 'b': case 'B': + case 'y': case 'Y': + ok = ieee_flconvert_bin(str+2, 1, mant, &exponent); + break; + case 'd': case 'D': + case 't': case 'T': + ok = ieee_flconvert(str+2, mant, &exponent); + break; + case 'p': case 'P': + return to_packed_bcd(str+2, strend-1, s, result, fmt); + default: + /* Leading zero was just a zero? */ + ok = ieee_flconvert(str, mant, &exponent); + break; + } + } else if (str[0] == '$') { + ok = ieee_flconvert_bin(str+1, 4, mant, &exponent); + } else { + ok = ieee_flconvert(str, mant, &exponent); + } + + if (!ok) { + type = FL_QNAN; + } else if (mant[0] & LIMB_TOP_BIT) { + /* + * Non-zero. + */ + exponent--; + if (exponent >= 2 - expmax && exponent <= expmax) { + type = FL_NORMAL; + } else if (exponent > 0) { + nasm_warn(WARN_FLOAT_OVERFLOW|ERR_PASS2, + "overflow in floating-point constant"); + type = FL_INFINITY; + } else { + /* underflow or denormal; the denormal code handles + actual underflow. */ + type = FL_DENORMAL; + } + } else { + /* Zero */ + type = FL_ZERO; + } + } + + switch (type) { + case FL_ZERO: + zero: + memset(mant, 0, sizeof mant); + break; + + case FL_DENORMAL: + { + shift = -(exponent + expmax - 2 - fmt->exponent) + + fmt->explicit; + ieee_shr(mant, shift); + ieee_round(minus, mant, bits); + if (mant[one_pos] & one_mask) { + /* One's position is set, we rounded up into normal range */ + exponent = 1; + if (!fmt->explicit) + mant[one_pos] &= ~one_mask; /* remove explicit one */ + mant[0] |= exponent << (LIMB_BITS-1 - fmt->exponent); + } else { + if (daz || is_zero(mant)) { + /*! + *!float-underflow [off] floating point underflow + *! warns about floating point underflow (a nonzero + *! constant rounded to zero.) + */ + nasm_warn(WARN_FLOAT_UNDERFLOW|ERR_PASS2, + "underflow in floating-point constant"); + goto zero; + } else { + /*! + *!float-denorm [off] floating point denormal + *! warns about denormal floating point constants. + */ + nasm_warn(WARN_FLOAT_DENORM|ERR_PASS2, + "denormal floating-point constant"); + } + } + break; + } + + case FL_NORMAL: + exponent += expmax - 1; + ieee_shr(mant, fmt->exponent+fmt->explicit); + ieee_round(minus, mant, bits); + /* did we scale up by one? */ + if (test_bit(mant, fmt->exponent+fmt->explicit-1)) { + ieee_shr(mant, 1); + exponent++; + if (exponent >= (expmax << 1)-1) { + /*! + *!float-overflow [on] floating point overflow + *! warns about floating point underflow. + */ + nasm_warn(WARN_FLOAT_OVERFLOW|ERR_PASS2, + "overflow in floating-point constant"); + type = FL_INFINITY; + goto overflow; + } + } + + if (!fmt->explicit) + mant[one_pos] &= ~one_mask; /* remove explicit one */ + mant[0] |= exponent << (LIMB_BITS-1 - fmt->exponent); + break; + + case FL_INFINITY: + case FL_QNAN: + case FL_SNAN: + overflow: + memset(mant, 0, sizeof mant); + mant[0] = (((fp_limb)1 << fmt->exponent)-1) + << (LIMB_BITS-1 - fmt->exponent); + if (fmt->explicit) + mant[one_pos] |= one_mask; + if (type == FL_QNAN) + set_bit(mant, fmt->exponent+fmt->explicit+1); + else if (type == FL_SNAN) + set_bit(mant, fmt->exponent+fmt->explicit+fmt->mantissa); + break; + } + + mant[0] |= minus ? LIMB_TOP_BIT : 0; + + for (i = fmt->bytes - 1; i >= 0; i--) + *result++ = mant[i/LIMB_BYTES] >> (((LIMB_BYTES-1)-(i%LIMB_BYTES))*8); + + return 1; /* success */ +} + +/* + * Get the default floating point format for this specific field size. + * Used for the Dx pseudoops. + */ +enum floatize float_deffmt(int bytes) +{ + enum floatize type; + + for (type = 0; type < FLOAT_ERR; type++) { + if (fp_formats[type].bytes == bytes) + break; + } + + return type; /* FLOAT_ERR if invalid */ +} + +/* Set floating-point options */ +int float_option(const char *option) +{ + if (!nasm_stricmp(option, "daz")) { + daz = true; + return 0; + } else if (!nasm_stricmp(option, "nodaz")) { + daz = false; + return 0; + } else if (!nasm_stricmp(option, "near")) { + rc = FLOAT_RC_NEAR; + return 0; + } else if (!nasm_stricmp(option, "down")) { + rc = FLOAT_RC_DOWN; + return 0; + } else if (!nasm_stricmp(option, "up")) { + rc = FLOAT_RC_UP; + return 0; + } else if (!nasm_stricmp(option, "zero")) { + rc = FLOAT_RC_ZERO; + return 0; + } else if (!nasm_stricmp(option, "default")) { + rc = FLOAT_RC_NEAR; + daz = false; + return 0; + } else { + return -1; /* Unknown option */ + } +} diff --git a/vere/ext/nasm/asm/floats.h b/vere/ext/nasm/asm/floats.h new file mode 100644 index 0000000..c463513 --- /dev/null +++ b/vere/ext/nasm/asm/floats.h @@ -0,0 +1,67 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * floats.h header file for the floating-point constant module of + * the Netwide Assembler + */ + +#ifndef NASM_FLOATS_H +#define NASM_FLOATS_H + +#include "nasm.h" + +enum float_round { + FLOAT_RC_NEAR, + FLOAT_RC_ZERO, + FLOAT_RC_DOWN, + FLOAT_RC_UP +}; + +/* Note: enum floatize and FLOAT_ERR are defined in nasm.h */ + +/* Floating-point format description */ +struct ieee_format { + int bytes; /* Total bytes */ + int mantissa; /* Fractional bits in the mantissa */ + int explicit; /* Explicit integer */ + int exponent; /* Bits in the exponent */ + int offset; /* Offset into byte array for floatize op */ +}; +extern const struct ieee_format fp_formats[FLOAT_ERR]; + +int float_const(const char *str, int s, uint8_t *result, enum floatize ffmt); +enum floatize float_deffmt(int bytes); +int float_option(const char *option); + +#endif /* NASM_FLOATS_H */ diff --git a/vere/ext/nasm/asm/labels.c b/vere/ext/nasm/asm/labels.c new file mode 100644 index 0000000..f6b940f --- /dev/null +++ b/vere/ext/nasm/asm/labels.c @@ -0,0 +1,720 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * labels.c label handling for the Netwide Assembler + */ + +#include "compiler.h" + + +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "hashtbl.h" +#include "labels.h" + +/* + * A dot-local label is one that begins with exactly one period. Things + * that begin with _two_ periods are NASM-specific things. + * + * If TASM compatibility is enabled, a local label can also begin with + * @@. + */ +static bool islocal(const char *l) +{ + if (tasm_compatible_mode) { + if (l[0] == '@' && l[1] == '@') + return true; + } + + return (l[0] == '.' && l[1] != '.'); +} + +/* + * Return true if this falls into NASM's '..' namespace + */ +static bool ismagic(const char *l) +{ + return l[0] == '.' && l[1] == '.' && l[2] != '@'; +} + +/* + * Return true if we should update the local label base + * as a result of this symbol. We must exclude local labels + * as well as any kind of special labels, including ..@ ones. + */ +static bool set_prevlabel(const char *l) +{ + if (tasm_compatible_mode) { + if (l[0] == '@' && l[1] == '@') + return false; + } + + return l[0] != '.'; +} + +#define LABEL_BLOCK 128 /* no. of labels/block */ +#define LBLK_SIZE (LABEL_BLOCK * sizeof(union label)) + +#define END_LIST -3 /* don't clash with NO_SEG! */ +#define END_BLOCK -2 + +#define PERMTS_SIZE 16384 /* size of text blocks */ +#if (PERMTS_SIZE < IDLEN_MAX) + #error "IPERMTS_SIZE must be greater than or equal to IDLEN_MAX" +#endif + +/* string values for enum label_type */ +static const char * const types[] = { + "local", "static", "global", "extern", "required", "common", + "special", "output format special" +}; + +union label { /* actual label structures */ + struct { + int32_t segment; + int32_t subsection; /* Available for ofmt->herelabel() */ + int64_t offset; + int64_t size; + int64_t defined; /* 0 if undefined, passn+1 for when defn seen */ + int64_t lastref; /* Last pass where we saw a reference */ + char *label, *mangled, *special; + const char *def_file; /* Where defined */ + int32_t def_line; + enum label_type type, mangled_type; + } defn; + struct { + int32_t movingon; + int64_t dummy; + union label *next; + } admin; +}; + +struct permts { /* permanent text storage */ + struct permts *next; /* for the linked list */ + unsigned int size, usage; /* size and used space in ... */ + char data[PERMTS_SIZE]; /* ... the data block itself */ +}; +#define PERMTS_HEADER offsetof(struct permts, data) + +uint64_t global_offset_changed; /* counter for global offset changes */ + +static struct hash_table ltab; /* labels hash table */ +static union label *ldata; /* all label data blocks */ +static union label *lfree; /* labels free block */ +static struct permts *perm_head; /* start of perm. text storage */ +static struct permts *perm_tail; /* end of perm. text storage */ + +static void init_block(union label *blk); +static char *perm_alloc(size_t len); +static char *perm_copy(const char *string); +static char *perm_copy3(const char *s1, const char *s2, const char *s3); +static const char *mangle_label_name(union label *lptr); + +static const char *prevlabel; + +static bool initialized = false; + +/* + * Emit a symdef to the output and the debug format backends. + */ +static void out_symdef(union label *lptr) +{ + int backend_type; + int64_t backend_offset; + + /* Backend-defined special segments are passed to symdef immediately */ + if (pass_final()) { + /* Emit special fixups for globals and commons */ + switch (lptr->defn.type) { + case LBL_GLOBAL: + case LBL_REQUIRED: + case LBL_COMMON: + if (lptr->defn.special) + ofmt->symdef(lptr->defn.mangled, 0, 0, 3, lptr->defn.special); + break; + default: + break; + } + return; + } + + if (pass_type() != PASS_STAB && lptr->defn.type != LBL_BACKEND) + return; + + /* Clean up this hack... */ + switch(lptr->defn.type) { + case LBL_EXTERN: + /* If not seen in the previous or this pass, drop it */ + if (lptr->defn.lastref < pass_count()) + return; + + /* Otherwise, promote to LBL_REQUIRED at this time */ + lptr->defn.type = LBL_REQUIRED; + + /* fall through */ + case LBL_GLOBAL: + case LBL_REQUIRED: + backend_type = 1; + backend_offset = lptr->defn.offset; + break; + case LBL_COMMON: + backend_type = 2; + backend_offset = lptr->defn.size; + break; + default: + backend_type = 0; + backend_offset = lptr->defn.offset; + break; + } + + /* Might be necessary for a backend symbol */ + mangle_label_name(lptr); + + ofmt->symdef(lptr->defn.mangled, lptr->defn.segment, + backend_offset, backend_type, + lptr->defn.special); + + /* + * NASM special symbols are not passed to the debug format; none + * of the current backends want to see them. + */ + if (lptr->defn.type == LBL_SPECIAL || lptr->defn.type == LBL_BACKEND) + return; + + dfmt->debug_deflabel(lptr->defn.mangled, lptr->defn.segment, + lptr->defn.offset, backend_type, + lptr->defn.special); +} + +/* + * Internal routine: finds the `union label' corresponding to the + * given label name. Creates a new one, if it isn't found, and if + * `create' is true. + */ +static union label *find_label(const char *label, bool create, bool *created) +{ + union label *lptr, **lpp; + char *label_str = NULL; + struct hash_insert ip; + + nasm_assert(label != NULL); + + if (islocal(label)) + label = label_str = nasm_strcat(prevlabel, label); + + lpp = (union label **) hash_find(<ab, label, &ip); + lptr = lpp ? *lpp : NULL; + + if (lptr || !create) { + if (created) + *created = false; + return lptr; + } + + /* Create a new label... */ + if (lfree->admin.movingon == END_BLOCK) { + /* + * must allocate a new block + */ + lfree->admin.next = nasm_malloc(LBLK_SIZE); + lfree = lfree->admin.next; + init_block(lfree); + } + + if (created) + *created = true; + + nasm_zero(*lfree); + lfree->defn.label = perm_copy(label); + lfree->defn.subsection = NO_SEG; + if (label_str) + nasm_free(label_str); + + hash_add(&ip, lfree->defn.label, lfree); + return lfree++; +} + +enum label_type lookup_label(const char *label, + int32_t *segment, int64_t *offset) +{ + union label *lptr; + + if (!initialized) + return LBL_none; + + lptr = find_label(label, false, NULL); + if (lptr && lptr->defn.defined) { + int64_t lpass = pass_count() + 1; + + lptr->defn.lastref = lpass; + *segment = lptr->defn.segment; + *offset = lptr->defn.offset; + return lptr->defn.type; + } + + return LBL_none; +} + +static inline bool is_global(enum label_type type) +{ + return type == LBL_GLOBAL || type == LBL_COMMON; +} + +static const char *mangle_strings[] = {"", "", "", ""}; +static bool mangle_string_set[ARRAY_SIZE(mangle_strings)]; + +/* + * Set a prefix or suffix + */ +void set_label_mangle(enum mangle_index which, const char *what) +{ + if (mangle_string_set[which]) + return; /* Once set, do not change */ + + mangle_strings[which] = perm_copy(what); + mangle_string_set[which] = true; +} + +/* + * Format a label name with appropriate prefixes and suffixes + */ +static const char *mangle_label_name(union label *lptr) +{ + const char *prefix; + const char *suffix; + + if (likely(lptr->defn.mangled && + lptr->defn.mangled_type == lptr->defn.type)) + return lptr->defn.mangled; /* Already mangled */ + + switch (lptr->defn.type) { + case LBL_GLOBAL: + case LBL_STATIC: + case LBL_EXTERN: + case LBL_REQUIRED: + prefix = mangle_strings[LM_GPREFIX]; + suffix = mangle_strings[LM_GSUFFIX]; + break; + case LBL_BACKEND: + case LBL_SPECIAL: + prefix = suffix = ""; + break; + default: + prefix = mangle_strings[LM_LPREFIX]; + suffix = mangle_strings[LM_LSUFFIX]; + break; + } + + lptr->defn.mangled_type = lptr->defn.type; + + if (!(*prefix) && !(*suffix)) + lptr->defn.mangled = lptr->defn.label; + else + lptr->defn.mangled = perm_copy3(prefix, lptr->defn.label, suffix); + + return lptr->defn.mangled; +} + +static void +handle_herelabel(union label *lptr, int32_t *segment, int64_t *offset) +{ + int32_t oldseg; + + if (likely(!ofmt->herelabel)) + return; + + if (unlikely(location.segment == NO_SEG)) + return; + + oldseg = *segment; + + if (oldseg == location.segment && *offset == location.offset) { + /* This label is defined at this location */ + int32_t newseg; + bool copyoffset = false; + + nasm_assert(lptr->defn.mangled); + newseg = ofmt->herelabel(lptr->defn.mangled, lptr->defn.type, + oldseg, &lptr->defn.subsection, ©offset); + if (likely(newseg == oldseg)) + return; + + *segment = newseg; + if (copyoffset) { + /* Maintain the offset from the old to the new segment */ + switch_segment(newseg); + location.offset = *offset; + } else { + /* Keep a separate offset for the new segment */ + *offset = switch_segment(newseg); + } + } +} + +static bool declare_label_lptr(union label *lptr, + enum label_type type, const char *special) +{ + enum label_type oldtype = lptr->defn.type; + + if (special && !special[0]) + special = NULL; + + if (oldtype == type || (!pass_stable() && oldtype == LBL_LOCAL) || + (oldtype == LBL_EXTERN && type == LBL_REQUIRED)) { + lptr->defn.type = type; + + if (special) { + if (!lptr->defn.special) + lptr->defn.special = perm_copy(special); + else if (nasm_stricmp(lptr->defn.special, special)) + nasm_nonfatal("symbol `%s' has inconsistent attributes `%s' and `%s'", + lptr->defn.label, lptr->defn.special, special); + } + return true; + } else if (is_extern(oldtype) && is_global(type)) { + /* EXTERN or REQUIRED can be replaced with GLOBAL or COMMON */ + lptr->defn.type = type; + + /* Override special unconditionally */ + if (special) + lptr->defn.special = perm_copy(special); + return true; + } else if (is_extern(type) && (is_global(oldtype) || is_extern(oldtype))) { + /* + * GLOBAL or COMMON ignore subsequent EXTERN or REQUIRED; + * REQUIRED ignores subsequent EXTERN. + */ + + /* Ignore special unless we don't already have one */ + if (!lptr->defn.special) + lptr->defn.special = perm_copy(special); + + return false; /* Don't call define_label() after this! */ + } + + nasm_nonfatal("symbol `%s' declared both as %s and %s", + lptr->defn.label, types[lptr->defn.type], types[type]); + return false; +} + +bool declare_label(const char *label, enum label_type type, const char *special) +{ + union label *lptr = find_label(label, true, NULL); + return declare_label_lptr(lptr, type, special); +} + +/* + * The "normal" argument decides if we should update the local segment + * base name or not. + */ +void define_label(const char *label, int32_t segment, + int64_t offset, bool normal) +{ + union label *lptr; + bool created, changed; + int64_t size; + int64_t lpass, lastdef; + + /* + * The backend may invoke this during initialization, at which + * pass_count() is zero, so add one so we never have a zero value + * for a defined variable. + */ + lpass = pass_count() + 1; + + /* + * Phase errors here can be one of two types: a new label appears, + * or the offset changes. Increment global_offset_changed when that + * happens, to tell the assembler core to make another pass. + */ + lptr = find_label(label, true, &created); + + lastdef = lptr->defn.defined; + + if (segment) { + /* We are actually defining this label */ + if (is_extern(lptr->defn.type)) { + /* auto-promote EXTERN/REQUIRED to GLOBAL */ + lptr->defn.type = LBL_GLOBAL; + lastdef = 0; /* We are "re-creating" this label */ + } + } else { + /* It's a pseudo-segment (extern, required, common) */ + segment = lptr->defn.segment ? lptr->defn.segment : seg_alloc(); + } + + if (lastdef || lptr->defn.type == LBL_BACKEND) { + /* + * We have seen this on at least one previous pass, or + * potentially earlier in this same pass (in which case we + * will probably error out further down.) + */ + mangle_label_name(lptr); + handle_herelabel(lptr, &segment, &offset); + } + + if (ismagic(label) && lptr->defn.type == LBL_LOCAL) + lptr->defn.type = LBL_SPECIAL; + + if (set_prevlabel(label) && normal) + prevlabel = lptr->defn.label; + + if (lptr->defn.type == LBL_COMMON) { + size = offset; + offset = 0; + } else { + size = 0; /* This is a hack... */ + } + + changed = created || !lastdef || + lptr->defn.segment != segment || + lptr->defn.offset != offset || + lptr->defn.size != size; + global_offset_changed += changed; + + if (lastdef == lpass) { + int32_t saved_line = 0; + const char *saved_fname = NULL; + int noteflags; + + /* + * Defined elsewhere in the program, seen in this pass. + */ + if (changed) { + nasm_nonfatal("label `%s' inconsistently redefined", lptr->defn.label); + noteflags = ERR_NONFATAL|ERR_HERE|ERR_NO_SEVERITY; + } else { + /*! + *!label-redef [off] label redefined to an identical value + *! warns if a label is defined more than once, but the + *! value is identical. It is an unconditional error to + *! define the same label more than once to \e{different} values. + */ + nasm_warn(WARN_LABEL_REDEF, + "info: label `%s' redefined to an identical value", lptr->defn.label); + noteflags = ERR_WARNING|ERR_HERE|ERR_NO_SEVERITY|WARN_LABEL_REDEF; + } + + src_get(&saved_line, &saved_fname); + src_set(lptr->defn.def_line, lptr->defn.def_file); + nasm_error(noteflags, "info: label `%s' originally defined", lptr->defn.label); + src_set(saved_line, saved_fname); + } else if (changed && pass_final() && lptr->defn.type != LBL_SPECIAL) { + /*! + *!label-redef-late [err] label (re)defined during code generation + *! the value of a label changed during the final, code-generation + *! pass. This may be the result of strange use of the + *! preprocessor. This is very likely to produce incorrect code and + *! may end up being an unconditional error in a future + *! version of NASM. + * + * WARN_LABEL_LATE defaults to an error, as this should never + * actually happen. Just in case this is a backwards + * compatibility problem, still make it a warning so that the + * user can suppress or demote it. + * + * Note: As a special case, LBL_SPECIAL symbols are allowed + * to be changed even during the last pass. + */ + nasm_warn(WARN_LABEL_REDEF_LATE|ERR_UNDEAD, + "label `%s' %s during code generation", + lptr->defn.label, created ? "defined" : "changed"); + } + lptr->defn.segment = segment; + lptr->defn.offset = offset; + lptr->defn.size = size; + lptr->defn.defined = lpass; + + if (changed || lastdef != lpass) + src_get(&lptr->defn.def_line, &lptr->defn.def_file); + + if (lastdef != lpass) + out_symdef(lptr); +} + +/* + * Define a special backend label + */ +void backend_label(const char *label, int32_t segment, int64_t offset) +{ + if (!declare_label(label, LBL_BACKEND, NULL)) + return; + + define_label(label, segment, offset, false); +} + +int init_labels(void) +{ + ldata = lfree = nasm_malloc(LBLK_SIZE); + init_block(lfree); + + perm_head = perm_tail = + nasm_malloc(sizeof(struct permts)); + + perm_head->next = NULL; + perm_head->size = PERMTS_SIZE; + perm_head->usage = 0; + + prevlabel = ""; + + initialized = true; + + return 0; +} + +void cleanup_labels(void) +{ + union label *lptr, *lhold; + + initialized = false; + + hash_free(<ab); + + lptr = lhold = ldata; + while (lptr) { + lptr = &lptr[LABEL_BLOCK-1]; + lptr = lptr->admin.next; + nasm_free(lhold); + lhold = lptr; + } + + while (perm_head) { + perm_tail = perm_head; + perm_head = perm_head->next; + nasm_free(perm_tail); + } +} + +static void init_block(union label *blk) +{ + int j; + + for (j = 0; j < LABEL_BLOCK - 1; j++) + blk[j].admin.movingon = END_LIST; + blk[LABEL_BLOCK - 1].admin.movingon = END_BLOCK; + blk[LABEL_BLOCK - 1].admin.next = NULL; +} + +static char * safe_alloc perm_alloc(size_t len) +{ + char *p; + + if (perm_tail->size - perm_tail->usage < len) { + size_t alloc_len = (len > PERMTS_SIZE) ? len : PERMTS_SIZE; + perm_tail->next = nasm_malloc(PERMTS_HEADER + alloc_len); + perm_tail = perm_tail->next; + perm_tail->next = NULL; + perm_tail->size = alloc_len; + perm_tail->usage = 0; + } + p = perm_tail->data + perm_tail->usage; + perm_tail->usage += len; + return p; +} + +static char *perm_copy(const char *string) +{ + char *p; + size_t len; + + if (!string) + return NULL; + + len = strlen(string)+1; /* Include final NUL */ + + p = perm_alloc(len); + memcpy(p, string, len); + + return p; +} + +static char * +perm_copy3(const char *s1, const char *s2, const char *s3) +{ + char *p; + size_t l1 = strlen(s1); + size_t l2 = strlen(s2); + size_t l3 = strlen(s3)+1; /* Include final NUL */ + + p = perm_alloc(l1+l2+l3); + memcpy(p, s1, l1); + memcpy(p+l1, s2, l2); + memcpy(p+l1+l2, s3, l3); + + return p; +} + +const char *local_scope(const char *label) +{ + return islocal(label) ? prevlabel : ""; +} + +/* + * Notes regarding bug involving redefinition of external segments. + * + * Up to and including v0.97, the following code didn't work. From 0.97 + * developers release 2 onwards, it will generate an error. + * + * EXTERN extlabel + * newlabel EQU extlabel + 1 + * + * The results of allowing this code through are that two import records + * are generated, one for 'extlabel' and one for 'newlabel'. + * + * The reason for this is an inadequacy in the defined interface between + * the label manager and the output formats. The problem lies in how the + * output format driver tells that a label is an external label for which + * a label import record must be produced. Most (all except bin?) produce + * the record if the segment number of the label is not one of the internal + * segments that the output driver is producing. + * + * A simple fix to this would be to make the output formats keep track of + * which symbols they've produced import records for, and make them not + * produce import records for segments that are already defined. + * + * The best way, which is slightly harder but reduces duplication of code + * and should therefore make the entire system smaller and more stable is + * to change the interface between assembler, define_label(), and + * the output module. The changes that are needed are: + * + * The semantics of the 'isextern' flag passed to define_label() need + * examining. This information may or may not tell us what we need to + * know (ie should we be generating an import record at this point for this + * label). If these aren't the semantics, the semantics should be changed + * to this. + * + * The output module interface needs changing, so that the `isextern' flag + * is passed to the module, so that it can be easily tested for. + */ diff --git a/vere/ext/nasm/asm/listing.c b/vere/ext/nasm/asm/listing.c new file mode 100644 index 0000000..186b8b4 --- /dev/null +++ b/vere/ext/nasm/asm/listing.c @@ -0,0 +1,415 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * listing.c listing file generator for the Netwide Assembler + */ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "strlist.h" +#include "listing.h" + +#define LIST_MAX_LEN 1024 /* something sensible */ +#define LIST_INDENT 40 +#define LIST_HEXBIT 18 + +static const char xdigit[] = "0123456789ABCDEF"; + +#define HEX(a,b) (*(a)=xdigit[((b)>>4)&15],(a)[1]=xdigit[(b)&15]); + +uint64_t list_options, active_list_options; + +static char listline[LIST_MAX_LEN]; +static bool listlinep; + +static struct strlist *list_errors; + +static char listdata[2 * LIST_INDENT]; /* we need less than that actually */ +static int32_t listoffset; + +static int32_t listlineno; + +static int suppress; /* for INCBIN & TIMES special cases */ + +static int listlevel, listlevel_e; + +static FILE *listfp; + +static void list_emit(void) +{ + int i; + const struct strlist_entry *e; + + if (listlinep || *listdata) { + fprintf(listfp, "%6"PRId32" ", listlineno); + + if (listdata[0]) + fprintf(listfp, "%08"PRIX32" %-*s", listoffset, LIST_HEXBIT + 1, + listdata); + else + fprintf(listfp, "%*s", LIST_HEXBIT + 10, ""); + + if (listlevel_e) + fprintf(listfp, "%s<%d>", (listlevel < 10 ? " " : ""), + listlevel_e); + else if (listlinep) + fprintf(listfp, " "); + + if (listlinep) + fprintf(listfp, " %s", listline); + + putc('\n', listfp); + listlinep = false; + listdata[0] = '\0'; + } + + if (list_errors) { + static const char fillchars[] = " --***XX"; + char fillchar; + + strlist_for_each(e, list_errors) { + fprintf(listfp, "%6"PRId32" ", listlineno); + fillchar = fillchars[e->pvt.u & ERR_MASK]; + for (i = 0; i < LIST_HEXBIT; i++) + putc(fillchar, listfp); + + if (listlevel_e) + fprintf(listfp, " %s<%d>", (listlevel < 10 ? " " : ""), + listlevel_e); + else + fprintf(listfp, " "); + + fprintf(listfp, " %s\n", e->str); + } + + strlist_free(&list_errors); + } +} + +static void list_cleanup(void) +{ + if (!listfp) + return; + + list_emit(); + fclose(listfp); + listfp = NULL; + active_list_options = 0; +} + +static void list_init(const char *fname) +{ + enum file_flags flags = NF_TEXT; + + if (listfp) + list_cleanup(); + + if (!fname || fname[0] == '\0') { + listfp = NULL; + return; + } + + if (list_option('w')) + flags |= NF_IOLBF; + + listfp = nasm_open_write(fname, flags); + if (!listfp) { + nasm_nonfatal("unable to open listing file `%s'", fname); + return; + } + + active_list_options = list_options | 1; + + *listline = '\0'; + listlineno = 0; + list_errors = NULL; + listlevel = 0; + suppress = 0; +} + +static void list_out(int64_t offset, char *str) +{ + if (strlen(listdata) + strlen(str) > LIST_HEXBIT) { + strcat(listdata, "-"); + list_emit(); + } + if (!listdata[0]) + listoffset = offset; + strcat(listdata, str); +} + +static void list_address(int64_t offset, const char *brackets, + int64_t addr, int size) +{ + char q[20]; + char *r = q; + + nasm_assert(size <= 8); + + *r++ = brackets[0]; + while (size--) { + HEX(r, addr); + addr >>= 8; + r += 2; + } + *r++ = brackets[1]; + *r = '\0'; + list_out(offset, q); +} + +static void list_size(int64_t offset, const char *tag, uint64_t size) +{ + char buf[64]; + const char *fmt; + + if (list_option('d')) + fmt = "<%s %"PRIu64">"; + else + fmt = "<%s %"PRIX64"h>"; + + snprintf(buf, sizeof buf, fmt, tag, size); + list_out(offset, buf); +} + +static void list_output(const struct out_data *data) +{ + char q[24]; + uint64_t size = data->size; + uint64_t offset = data->offset; + const uint8_t *p = data->data; + + + if (!listfp || suppress || user_nolist) + return; + + switch (data->type) { + case OUT_ZERODATA: + if (size > 16) { + list_size(offset, "zero", size); + break; + } else { + p = zero_buffer; + } + /* fall through */ + case OUT_RAWDATA: + { + if (size == 0) { + if (!listdata[0]) + listoffset = data->offset; + } else if (p) { + while (size--) { + HEX(q, *p); + q[2] = '\0'; + list_out(offset++, q); + p++; + } + } else { + /* Used for listing on non-code generation passes with -Lp */ + list_size(offset, "len", size); + } + break; + } + case OUT_ADDRESS: + list_address(offset, "[]", data->toffset, size); + break; + case OUT_SEGMENT: + q[0] = '['; + memset(q+1, 's', size << 1); + q[(size << 1)+1] = ']'; + q[(size << 1)+2] = '\0'; + list_out(offset, q); + offset += size; + break; + case OUT_RELADDR: + list_address(offset, "()", data->toffset, size); + break; + case OUT_RESERVE: + { + if (size > 8) { + list_size(offset, "res", size); + } else { + memset(q, '?', size << 1); + q[size << 1] = '\0'; + list_out(offset, q); + } + break; + } + default: + panic(); + } +} + +static void list_line(int type, int32_t lineno, const char *line) +{ + (void)type; + + if (!listfp) + return; + + if (user_nolist) + return; + + list_emit(); + if (lineno >= 0) + listlineno = lineno; + listlinep = true; + strlcpy(listline, line, LIST_MAX_LEN-3); + memcpy(listline + LIST_MAX_LEN-4, "...", 4); + listlevel_e = listlevel; +} + +static void list_uplevel(int type, int64_t size) +{ + if (!listfp) + return; + + switch (type) { + case LIST_INCBIN: + suppress |= 1; + list_size(listoffset, "bin", size); + break; + + case LIST_TIMES: + suppress |= 2; + list_size(listoffset, "rep", size); + break; + + case LIST_INCLUDE: + listlevel++; + break; + + default: + listlevel++; + break; + } +} + +static void list_downlevel(int type) +{ + if (!listfp) + return; + + switch (type) { + case LIST_INCBIN: + suppress &= ~1; + break; + + case LIST_TIMES: + suppress &= ~2; + break; + + default: + listlevel--; + break; + } +} + +static void printf_func(2, 3) list_error(errflags severity, const char *fmt, ...) +{ + va_list ap; + + if (!listfp) + return; + + if (!list_errors) + list_errors = strlist_alloc(false); + + va_start(ap, fmt); + strlist_vprintf(list_errors, fmt, ap); + va_end(ap); + strlist_tail(list_errors)->pvt.u = severity; + + if ((severity & ERR_MASK) >= ERR_FATAL) + list_emit(); +} + +static void list_set_offset(uint64_t offset) +{ + listoffset = offset; +} + +static void list_update_options(const char *str) +{ + bool state = true; + unsigned char c; + uint64_t mask; + + while ((c = *str++)) { + switch (c) { + case '+': + state = true; + break; + case '-': + state = false; + break; + default: + mask = list_option_mask(c); + if (state) + list_options |= mask; + else + list_options &= ~mask; + break; + } + } +} + +enum directive_result list_pragma(const struct pragma *pragma) +{ + switch (pragma->opcode) { + case D_OPTIONS: + list_update_options(pragma->tail); + return DIRR_OK; + + default: + return DIRR_UNKNOWN; + } +} + +static const struct lfmt nasm_list = { + list_init, + list_cleanup, + list_output, + list_line, + list_uplevel, + list_downlevel, + list_error, + list_set_offset +}; + +const struct lfmt *lfmt = &nasm_list; diff --git a/vere/ext/nasm/asm/listing.h b/vere/ext/nasm/asm/listing.h new file mode 100644 index 0000000..639a56e --- /dev/null +++ b/vere/ext/nasm/asm/listing.h @@ -0,0 +1,196 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * listing.h header file for listing.c + */ + +#ifndef NASM_LISTING_H +#define NASM_LISTING_H + +#include "nasm.h" + +/* + * List-file generators should look like this: + */ +struct lfmt { + /* + * Called to initialize the listing file generator. Before this + * is called, the other routines will silently do nothing when + * called. The `char *' parameter is the file name to write the + * listing to. + */ + void (*init)(const char *fname); + + /* + * Called to clear stuff up and close the listing file. + */ + void (*cleanup)(void); + + /* + * Called to output binary data. Parameters are: the offset; + * the data; the data type. Data types are similar to the + * output-format interface, only OUT_ADDRESS will _always_ be + * displayed as if it's relocatable, so ensure that any non- + * relocatable address has been converted to OUT_RAWDATA by + * then. + */ + void (*output)(const struct out_data *data); + + /* + * Called to send a text line to the listing generator. The + * `int' parameter is LIST_READ or LIST_MACRO depending on + * whether the line came directly from an input file or is the + * result of a multi-line macro expansion. + * + * If a line number is provided, print it; if the line number is + * -1 then use the same line number as the previous call. + */ + void (*line)(int type, int32_t lineno, const char *line); + + /* + * Called to change one of the various levelled mechanisms in the + * listing generator. LIST_INCLUDE and LIST_MACRO can be used to + * increase the nesting level of include files and macro + * expansions; LIST_TIMES and LIST_INCBIN switch on the two + * binary-output-suppression mechanisms for large-scale + * pseudo-instructions; the size argument prints the size or + * repetiiton count. + * + * LIST_MACRO_NOLIST is synonymous with LIST_MACRO except that + * it indicates the beginning of the expansion of a `nolist' + * macro, so anything under that level won't be expanded unless + * it includes another file. + */ + void (*uplevel)(int type, int64_t size); + + /* + * Reverse the effects of uplevel. + */ + void (*downlevel)(int type); + + /* + * Called on a warning or error, with the error message. + */ + void printf_func_ptr(2, 3) (*error)(errflags severity, const char *fmt, ...); + + /* + * Update the current offset. Used to give the listing generator + * an offset to work with when doing things like + * uplevel(LIST_TIMES) or uplevel(LIST_INCBIN); see + * list_set_offset(); + */ + void (*set_offset)(uint64_t offset); +}; + +extern const struct lfmt *lfmt; +extern bool user_nolist; + +/* + * list_options are the requested options; active_list_options gets + * set when a pass starts. + * + * These are simple bitmasks of ASCII-64 mapping directly to option + * letters. + */ +extern uint64_t list_options, active_list_options; + +/* + * This maps the characters a-z, A-Z and 0-9 onto a 64-bit bitmask. + * Bit 0 is used to indicate that the listing engine is active, and + * bit 1 is reserved, so this will only return mask bits 2 and higher; + * as there are 62 possible characters this fits nicely. + * + * The mask returned is 0 for invalid characters, accessing no bits at + * all. + * + * This isn't particularly efficient code, but just about every + * instance of it should be fed a constant, so the entire function can + * be precomputed at compile time. The only cases where the full + * computation is needed is when parsing the -L option or %pragma list + * options, neither of which is in any way performance critical. + * + * The character + represents ALL listing options except -Lw (flush + * after every line.) + */ +static inline const_func uint64_t list_option_mask_val(unsigned char x) +{ + if (x >= 'a') { + if (x > 'z') + return 0; + x = x - 'a' + 2; + } else if (x >= 'A') { + if (x > 'Z') + return 0; + x = x - 'A' + 2 + 26; + } else if (x >= '0') { + if (x > '9') + return 0; + x = x - '0' + 2 + 26*2; + } else { + return 0; + } + + return UINT64_C(1) << x; +} + +static inline const_func uint64_t list_option_mask(unsigned char x) +{ + if (x == '+') + return ~(list_option_mask_val('w') | 3); + else + return list_option_mask_val(x); +} + +/* Return true if the listing engine is active and a certain option is set. */ +static inline pure_func bool list_option(unsigned char x) +{ + return unlikely(active_list_options & list_option_mask(x)); +} + +/* We can't test this using active_list_options for obvious reasons... */ +static inline pure_func bool list_on_every_pass(void) +{ + return unlikely(list_options & list_option_mask('p')); +} + +/* Is the listing engine active? */ +static inline pure_func bool list_active(void) +{ + return (active_list_options & 1); +} + +/* Pragma handler */ +enum directive_result list_pragma(const struct pragma *); + +#endif diff --git a/vere/ext/nasm/asm/nasm.c b/vere/ext/nasm/asm/nasm.c new file mode 100644 index 0000000..76c70f6 --- /dev/null +++ b/vere/ext/nasm/asm/nasm.c @@ -0,0 +1,2352 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2022 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * The Netwide Assembler main program module + */ + +#include "compiler.h" + + +#include "nasm.h" +#include "nasmlib.h" +#include "nctype.h" +#include "error.h" +#include "saa.h" +#include "raa.h" +#include "floats.h" +#include "stdscan.h" +#include "insns.h" +#include "preproc.h" +#include "parser.h" +#include "eval.h" +#include "assemble.h" +#include "labels.h" +#include "outform.h" +#include "listing.h" +#include "iflag.h" +#include "quote.h" +#include "ver.h" + +/* + * This is the maximum number of optimization passes to do. If we ever + * find a case where the optimizer doesn't naturally converge, we might + * have to drop this value so the assembler doesn't appear to just hang. + */ +#define MAX_OPTIMIZE (INT_MAX >> 1) + +struct forwrefinfo { /* info held on forward refs. */ + int lineno; + int operand; +}; + +const char *_progname; + +static void parse_cmdline(int, char **, int); +static void assemble_file(const char *, struct strlist *); +static bool skip_this_pass(errflags severity); +static void usage(void); +static void help(FILE *); + +struct error_format { + const char *beforeline; /* Before line number, if present */ + const char *afterline; /* After line number, if present */ + const char *beforemsg; /* Before actual message */ +}; + +static const struct error_format errfmt_gnu = { ":", "", ": " }; +static const struct error_format errfmt_msvc = { "(", ")", " : " }; +static const struct error_format *errfmt = &errfmt_gnu; +static struct strlist *warn_list; +static struct nasm_errhold *errhold_stack; + +unsigned int debug_nasm; /* Debugging messages? */ + +static bool using_debug_info, opt_verbose_info; +static const char *debug_format; + +#ifndef ABORT_ON_PANIC +# define ABORT_ON_PANIC 0 +#endif +static bool abort_on_panic = ABORT_ON_PANIC; +static bool keep_all; + +bool tasm_compatible_mode = false; +enum pass_type _pass_type; +const char * const _pass_types[] = +{ + "init", "preproc-only", "first", "optimize", "stabilize", "final" +}; +int64_t _passn; +int globalrel = 0; +int globalbnd = 0; + +struct compile_time official_compile_time; + +const char *inname; +const char *outname; +static const char *listname; +static const char *errname; + +static int64_t globallineno; /* for forward-reference tracking */ + +const struct ofmt *ofmt = &OF_DEFAULT; +const struct ofmt_alias *ofmt_alias = NULL; +const struct dfmt *dfmt; + +FILE *error_file; /* Where to write error messages */ + +FILE *ofile = NULL; +struct optimization optimizing = + { MAX_OPTIMIZE, OPTIM_ALL_ENABLED }; /* number of optimization passes to take */ +static int cmd_sb = 16; /* by default */ + +iflag_t cpu, cmd_cpu; + +struct location location; +bool in_absolute; /* Flag we are in ABSOLUTE seg */ +struct location absolute; /* Segment/offset inside ABSOLUTE */ + +static struct RAA *offsets; + +static struct SAA *forwrefs; /* keep track of forward references */ +static const struct forwrefinfo *forwref; + +static struct strlist *include_path; +static enum preproc_opt ppopt; + +#define OP_NORMAL (1U << 0) +#define OP_PREPROCESS (1U << 1) +#define OP_DEPEND (1U << 2) + +static unsigned int operating_mode; + +/* Dependency flags */ +static bool depend_emit_phony = false; +static bool depend_missing_ok = false; +static const char *depend_target = NULL; +static const char *depend_file = NULL; +struct strlist *depend_list; + +static bool want_usage; +static bool terminate_after_phase; +bool user_nolist = false; + +static char *quote_for_pmake(const char *str); +static char *quote_for_wmake(const char *str); +static char *(*quote_for_make)(const char *) = quote_for_pmake; + +/* + * Execution limits that can be set via a command-line option or %pragma + */ + +/* + * This is really unlimited; it would take far longer than the + * current age of the universe for this limit to be reached even on + * much faster CPUs than currently exist. +*/ +#define LIMIT_MAX_VAL (INT64_MAX >> 1) + +int64_t nasm_limit[LIMIT_MAX+1]; + +struct limit_info { + const char *name; + const char *help; + int64_t default_val; +}; +/* The order here must match enum nasm_limit in nasm.h */ +static const struct limit_info limit_info[LIMIT_MAX+1] = { + { "passes", "total number of passes", LIMIT_MAX_VAL }, + { "stalled-passes", "number of passes without forward progress", 1000 }, + { "macro-levels", "levels of macro expansion", 10000 }, + { "macro-tokens", "tokens processed during single-lime macro expansion", 10000000 }, + { "mmacros", "multi-line macros before final return", 100000 }, + { "rep", "%rep count", 1000000 }, + { "eval", "expression evaluation descent", 8192 }, + { "lines", "total source lines processed", 2000000000 } +}; + +static void set_default_limits(void) +{ + int i; + size_t rl; + int64_t new_limit; + + for (i = 0; i <= LIMIT_MAX; i++) + nasm_limit[i] = limit_info[i].default_val; + + /* + * Try to set a sensible default value for the eval depth based + * on the limit of the stack size, if knowable... + */ + rl = nasm_get_stack_size_limit(); + new_limit = rl / (128 * sizeof(void *)); /* Sensible heuristic */ + if (new_limit < nasm_limit[LIMIT_EVAL]) + nasm_limit[LIMIT_EVAL] = new_limit; +} + +enum directive_result +nasm_set_limit(const char *limit, const char *valstr) +{ + int i; + int64_t val; + bool rn_error; + int errlevel; + + if (!limit) + limit = ""; + if (!valstr) + valstr = ""; + + for (i = 0; i <= LIMIT_MAX; i++) { + if (!nasm_stricmp(limit, limit_info[i].name)) + break; + } + if (i > LIMIT_MAX) { + if (not_started()) + errlevel = ERR_WARNING|WARN_OTHER|ERR_USAGE; + else + errlevel = ERR_WARNING|WARN_PRAGMA_UNKNOWN; + nasm_error(errlevel, "unknown limit: `%s'", limit); + return DIRR_ERROR; + } + + if (!nasm_stricmp(valstr, "unlimited")) { + val = LIMIT_MAX_VAL; + } else { + val = readnum(valstr, &rn_error); + if (rn_error || val < 0) { + if (not_started()) + errlevel = ERR_WARNING|WARN_OTHER|ERR_USAGE; + else + errlevel = ERR_WARNING|WARN_PRAGMA_BAD; + nasm_error(errlevel, "invalid limit value: `%s'", valstr); + return DIRR_ERROR; + } + if (val > LIMIT_MAX_VAL) + val = LIMIT_MAX_VAL; + } + + nasm_limit[i] = val; + return DIRR_OK; +} + +int64_t switch_segment(int32_t segment) +{ + location.segment = segment; + if (segment == NO_SEG) { + location.offset = absolute.offset; + in_absolute = true; + } else { + location.offset = raa_read(offsets, segment); + in_absolute = false; + } + return location.offset; +} + +static void set_curr_offs(int64_t l_off) +{ + if (in_absolute) + absolute.offset = l_off; + else + offsets = raa_write(offsets, location.segment, l_off); +} + +static void increment_offset(int64_t delta) +{ + if (unlikely(delta == 0)) + return; + + location.offset += delta; + set_curr_offs(location.offset); +} + +/* + * Define system-defined macros that are not part of + * macros/standard.mac. + */ +static void define_macros(void) +{ + const struct compile_time * const oct = &official_compile_time; + char temp[128]; + + if (oct->have_local) { + strftime(temp, sizeof temp, "__?DATE?__=\"%Y-%m-%d\"", &oct->local); + pp_pre_define(temp); + strftime(temp, sizeof temp, "__?DATE_NUM?__=%Y%m%d", &oct->local); + pp_pre_define(temp); + strftime(temp, sizeof temp, "__?TIME?__=\"%H:%M:%S\"", &oct->local); + pp_pre_define(temp); + strftime(temp, sizeof temp, "__?TIME_NUM?__=%H%M%S", &oct->local); + pp_pre_define(temp); + } + + if (oct->have_gm) { + strftime(temp, sizeof temp, "__?UTC_DATE?__=\"%Y-%m-%d\"", &oct->gm); + pp_pre_define(temp); + strftime(temp, sizeof temp, "__?UTC_DATE_NUM?__=%Y%m%d", &oct->gm); + pp_pre_define(temp); + strftime(temp, sizeof temp, "__?UTC_TIME?__=\"%H:%M:%S\"", &oct->gm); + pp_pre_define(temp); + strftime(temp, sizeof temp, "__?UTC_TIME_NUM?__=%H%M%S", &oct->gm); + pp_pre_define(temp); + } + + if (oct->have_posix) { + snprintf(temp, sizeof temp, "__?POSIX_TIME?__=%"PRId64, oct->posix); + pp_pre_define(temp); + } + + /* + * In case if output format is defined by alias + * we have to put shortname of the alias itself here + * otherwise ABI backward compatibility gets broken. + */ + snprintf(temp, sizeof(temp), "__?OUTPUT_FORMAT?__=%s", + ofmt_alias ? ofmt_alias->shortname : ofmt->shortname); + pp_pre_define(temp); + + /* + * Output-format specific macros. + */ + if (ofmt->stdmac) + pp_extra_stdmac(ofmt->stdmac); + + /* + * Debug format, if any + */ + if (dfmt != &null_debug_form) { + snprintf(temp, sizeof(temp), "__?DEBUG_FORMAT?__=%s", dfmt->shortname); + pp_pre_define(temp); + } +} + +/* + * Initialize the preprocessor, set up the include path, and define + * the system-included macros. This is called between passes 1 and 2 + * of parsing the command options; ofmt and dfmt are defined at this + * point. + * + * Command-line specified preprocessor directives (-p, -d, -u, + * --pragma, --before) are processed after this function. + */ +static void preproc_init(struct strlist *ipath) +{ + pp_init(ppopt); + define_macros(); + pp_include_path(ipath); +} + +static void emit_dependencies(struct strlist *list) +{ + FILE *deps; + int linepos, len; + bool wmake = (quote_for_make == quote_for_wmake); + const char *wrapstr, *nulltarget; + const struct strlist_entry *l; + + if (!list) + return; + + wrapstr = wmake ? " &\n " : " \\\n "; + nulltarget = wmake ? "\t%null\n" : ""; + + if (depend_file && strcmp(depend_file, "-")) { + deps = nasm_open_write(depend_file, NF_TEXT); + if (!deps) { + nasm_nonfatal("unable to write dependency file `%s'", depend_file); + return; + } + } else { + deps = stdout; + } + + linepos = fprintf(deps, "%s :", depend_target); + strlist_for_each(l, list) { + char *file = quote_for_make(l->str); + len = strlen(file); + if (linepos + len > 62 && linepos > 1) { + fputs(wrapstr, deps); + linepos = 1; + } + fprintf(deps, " %s", file); + linepos += len+1; + nasm_free(file); + } + fputs("\n\n", deps); + + strlist_for_each(l, list) { + if (depend_emit_phony) { + char *file = quote_for_make(l->str); + fprintf(deps, "%s :\n%s\n", file, nulltarget); + nasm_free(file); + } + } + + strlist_free(&list); + + if (deps != stdout) + fclose(deps); +} + +/* Convert a struct tm to a POSIX-style time constant */ +static int64_t make_posix_time(const struct tm *tm) +{ + int64_t t; + int64_t y = tm->tm_year; + + /* See IEEE 1003.1:2004, section 4.14 */ + + t = (y-70)*365 + (y-69)/4 - (y-1)/100 + (y+299)/400; + t += tm->tm_yday; + t *= 24; + t += tm->tm_hour; + t *= 60; + t += tm->tm_min; + t *= 60; + t += tm->tm_sec; + + return t; +} + +/* + * Quote a filename string if and only if it is necessary. + * It is considered necessary if any one of these is true: + * 1. The filename contains control characters; + * 2. The filename starts or ends with a space or quote mark; + * 3. The filename contains more than one space in a row; + * 4. The filename is empty. + * + * The filename is returned in a newly allocated buffer. + */ +static char *nasm_quote_filename(const char *fn) +{ + const unsigned char *p = + (const unsigned char *)fn; + size_t len; + + if (!p || !*p) + return nasm_strdup("\"\""); + + if (*p <= ' ' || nasm_isquote(*p)) { + goto quote; + } else { + unsigned char cutoff = ' '; + + while (*p) { + if (*p < cutoff) + goto quote; + cutoff = ' ' + (*p == ' '); + p++; + } + if (p[-1] <= ' ' || nasm_isquote(p[-1])) + goto quote; + } + + /* Quoting not necessary */ + return nasm_strdup(fn); + +quote: + len = strlen(fn); + return nasm_quote(fn, &len); +} + +static void timestamp(void) +{ + struct compile_time * const oct = &official_compile_time; + const struct tm *tp, *best_gm; + + time(&oct->t); + + best_gm = NULL; + + tp = localtime(&oct->t); + if (tp) { + oct->local = *tp; + best_gm = &oct->local; + oct->have_local = true; + } + + tp = gmtime(&oct->t); + if (tp) { + oct->gm = *tp; + best_gm = &oct->gm; + oct->have_gm = true; + if (!oct->have_local) + oct->local = oct->gm; + } else { + oct->gm = oct->local; + } + + if (best_gm) { + oct->posix = make_posix_time(best_gm); + oct->have_posix = true; + } +} + +int main(int argc, char **argv) +{ + /* Do these as early as possible */ + error_file = stderr; + _progname = argv[0]; + if (!_progname || !_progname[0]) + _progname = "nasm"; + + timestamp(); + + set_cpu(NULL); + cmd_cpu = cpu; + + set_default_limits(); + + include_path = strlist_alloc(true); + + _pass_type = PASS_INIT; + _passn = 0; + + want_usage = terminate_after_phase = false; + + nasm_ctype_init(); + src_init(); + + /* + * We must call init_labels() before the command line parsing, + * because we may be setting prefixes/suffixes from the command + * line. + */ + init_labels(); + + offsets = raa_init(); + forwrefs = saa_init((int32_t)sizeof(struct forwrefinfo)); + + operating_mode = OP_NORMAL; + + parse_cmdline(argc, argv, 1); + if (terminate_after_phase) { + if (want_usage) + usage(); + return 1; + } + + /* At this point we have ofmt and the name of the desired debug format */ + if (!using_debug_info) { + /* No debug info, redirect to the null backend (empty stubs) */ + dfmt = &null_debug_form; + } else if (!debug_format) { + /* Default debug format for this backend */ + dfmt = ofmt->default_dfmt; + } else { + dfmt = dfmt_find(ofmt, debug_format); + if (!dfmt) { + nasm_fatalf(ERR_USAGE, "unrecognized debug format `%s' for output format `%s'", + debug_format, ofmt->shortname); + } + } + + /* Have we enabled TASM mode? */ + if (tasm_compatible_mode) { + ppopt |= PP_TASM; + nasm_ctype_tasm_mode(); + } + preproc_init(include_path); + + parse_cmdline(argc, argv, 2); + if (terminate_after_phase) { + if (want_usage) + usage(); + return 1; + } + + /* Save away the default state of warnings */ + init_warnings(); + + /* Dependency filename if we are also doing other things */ + if (!depend_file && (operating_mode & ~OP_DEPEND)) { + if (outname) + depend_file = nasm_strcat(outname, ".d"); + else + depend_file = filename_set_extension(inname, ".d"); + } + + /* + * If no output file name provided and this + * is preprocess mode, we're perfectly + * fine to output into stdout. + */ + if (!outname && !(operating_mode & OP_PREPROCESS)) { + outname = filename_set_extension(inname, ofmt->extension); + if (!strcmp(outname, inname)) { + outname = "nasm.out"; + nasm_warn(WARN_OTHER, "default output file same as input, using `%s' for output\n", outname); + } + } + + depend_list = (operating_mode & OP_DEPEND) ? strlist_alloc(true) : NULL; + + if (!depend_target) + depend_target = quote_for_make(outname); + + if (!(operating_mode & (OP_PREPROCESS|OP_NORMAL))) { + char *line; + + if (depend_missing_ok) + pp_include_path(NULL); /* "assume generated" */ + + pp_reset(inname, PP_DEPS, depend_list); + ofile = NULL; + while ((line = pp_getline())) + nasm_free(line); + pp_cleanup_pass(); + reset_warnings(); + } else if (operating_mode & OP_PREPROCESS) { + char *line; + const char *file_name = NULL; + char *quoted_file_name = nasm_quote_filename(file_name); + int32_t linnum = 0; + int32_t lineinc = 0; + FILE *out; + + if (outname) { + ofile = nasm_open_write(outname, NF_TEXT); + if (!ofile) + nasm_fatal("unable to open output file `%s'", outname); + out = ofile; + } else { + ofile = NULL; + out = stdout; + } + + location.known = false; + + _pass_type = PASS_PREPROC; + pp_reset(inname, PP_PREPROC, depend_list); + + while ((line = pp_getline())) { + /* + * We generate %line directives if needed for later programs + */ + struct src_location where = src_where(); + if (file_name != where.filename) { + file_name = where.filename; + linnum = -1; /* Force a new %line statement */ + lineinc = file_name ? 1 : 0; + nasm_free(quoted_file_name); + quoted_file_name = nasm_quote_filename(file_name); + } else if (lineinc) { + if (linnum + lineinc == where.lineno) { + /* Add one blank line to account for increment */ + fputc('\n', out); + linnum += lineinc; + } else if (linnum - lineinc == where.lineno) { + /* + * Standing still, probably a macro. Set increment + * to zero. + */ + lineinc = 0; + } + } else { + /* lineinc == 0 */ + if (linnum + 1 == where.lineno) + lineinc = 1; + } + + /* Skip blank lines if we will need a %line anyway */ + if (linnum == -1 && !line[0]) + continue; + + if (linnum != where.lineno) { + fprintf(out, "%%line %"PRId32"%+"PRId32" %s\n", + where.lineno, lineinc, quoted_file_name); + } + linnum = where.lineno + lineinc; + + fputs(line, out); + fputc('\n', out); + } + + nasm_free(quoted_file_name); + + pp_cleanup_pass(); + reset_warnings(); + if (ofile) + fclose(ofile); + if (ofile && terminate_after_phase && !keep_all) + remove(outname); + ofile = NULL; + } + + if (operating_mode & OP_NORMAL) { + ofile = nasm_open_write(outname, (ofmt->flags & OFMT_TEXT) ? NF_TEXT : NF_BINARY); + if (!ofile) + nasm_fatal("unable to open output file `%s'", outname); + + ofmt->init(); + dfmt->init(); + + assemble_file(inname, depend_list); + + if (!terminate_after_phase) { + ofmt->cleanup(); + cleanup_labels(); + fflush(ofile); + if (ferror(ofile)) + nasm_nonfatal("write error on output file `%s'", outname); + } + + if (ofile) { + fclose(ofile); + if (terminate_after_phase && !keep_all) + remove(outname); + ofile = NULL; + } + } + + pp_cleanup_session(); + + if (depend_list && !terminate_after_phase) + emit_dependencies(depend_list); + + if (want_usage) + usage(); + + raa_free(offsets); + saa_free(forwrefs); + eval_cleanup(); + stdscan_cleanup(); + src_free(); + strlist_free(&include_path); + + return terminate_after_phase; +} + +/* + * Get a parameter for a command line option. + * First arg must be in the form of e.g. -f... + */ +static char *get_param(char *p, char *q, bool *advance) +{ + *advance = false; + if (p[2]) /* the parameter's in the option */ + return nasm_skip_spaces(p + 2); + if (q && q[0]) { + *advance = true; + return q; + } + nasm_nonfatalf(ERR_USAGE, "option `-%c' requires an argument", p[1]); + return NULL; +} + +/* + * Copy a filename + */ +static void copy_filename(const char **dst, const char *src, const char *what) +{ + if (*dst) + nasm_fatal("more than one %s file specified: %s\n", what, src); + + *dst = nasm_strdup(src); +} + +/* + * Convert a string to a POSIX make-safe form + */ +static char *quote_for_pmake(const char *str) +{ + const char *p; + char *os, *q; + + size_t n = 1; /* Terminating zero */ + size_t nbs = 0; + + if (!str) + return NULL; + + for (p = str; *p; p++) { + switch (*p) { + case ' ': + case '\t': + /* Convert N backslashes + ws -> 2N+1 backslashes + ws */ + n += nbs + 2; + nbs = 0; + break; + case '$': + case '#': + nbs = 0; + n += 2; + break; + case '\\': + nbs++; + n++; + break; + default: + nbs = 0; + n++; + break; + } + } + + /* Convert N backslashes at the end of filename to 2N backslashes */ + n += nbs; + + os = q = nasm_malloc(n); + + nbs = 0; + for (p = str; *p; p++) { + switch (*p) { + case ' ': + case '\t': + q = mempset(q, '\\', nbs); + *q++ = '\\'; + *q++ = *p; + nbs = 0; + break; + case '$': + *q++ = *p; + *q++ = *p; + nbs = 0; + break; + case '#': + *q++ = '\\'; + *q++ = *p; + nbs = 0; + break; + case '\\': + *q++ = *p; + nbs++; + break; + default: + *q++ = *p; + nbs = 0; + break; + } + } + + q = mempset(q, '\\', nbs); + *q = '\0'; + + return os; +} + +/* + * Convert a string to a Watcom make-safe form + */ +static char *quote_for_wmake(const char *str) +{ + const char *p; + char *os, *q; + bool quote = false; + + size_t n = 1; /* Terminating zero */ + + if (!str) + return NULL; + + for (p = str; *p; p++) { + switch (*p) { + case ' ': + case '\t': + case '&': + quote = true; + n++; + break; + case '\"': + quote = true; + n += 2; + break; + case '$': + case '#': + n += 2; + break; + default: + n++; + break; + } + } + + if (quote) + n += 2; + + os = q = nasm_malloc(n); + + if (quote) + *q++ = '\"'; + + for (p = str; *p; p++) { + switch (*p) { + case '$': + case '#': + *q++ = '$'; + *q++ = *p; + break; + case '\"': + *q++ = *p; + *q++ = *p; + break; + default: + *q++ = *p; + break; + } + } + + if (quote) + *q++ = '\"'; + + *q = '\0'; + + return os; +} + +enum text_options { + OPT_BOGUS, + OPT_VERSION, + OPT_HELP, + OPT_ABORT_ON_PANIC, + OPT_MANGLE, + OPT_INCLUDE, + OPT_PRAGMA, + OPT_BEFORE, + OPT_LIMIT, + OPT_KEEP_ALL, + OPT_NO_LINE, + OPT_DEBUG, + OPT_REPRODUCIBLE +}; +enum need_arg { + ARG_NO, + ARG_YES, + ARG_MAYBE +}; + +struct textargs { + const char *label; + enum text_options opt; + enum need_arg need_arg; + int pvt; +}; +static const struct textargs textopts[] = { + {"v", OPT_VERSION, ARG_NO, 0}, + {"version", OPT_VERSION, ARG_NO, 0}, + {"help", OPT_HELP, ARG_NO, 0}, + {"abort-on-panic", OPT_ABORT_ON_PANIC, ARG_NO, 0}, + {"prefix", OPT_MANGLE, ARG_YES, LM_GPREFIX}, + {"postfix", OPT_MANGLE, ARG_YES, LM_GSUFFIX}, + {"gprefix", OPT_MANGLE, ARG_YES, LM_GPREFIX}, + {"gpostfix", OPT_MANGLE, ARG_YES, LM_GSUFFIX}, + {"lprefix", OPT_MANGLE, ARG_YES, LM_LPREFIX}, + {"lpostfix", OPT_MANGLE, ARG_YES, LM_LSUFFIX}, + {"include", OPT_INCLUDE, ARG_YES, 0}, + {"pragma", OPT_PRAGMA, ARG_YES, 0}, + {"before", OPT_BEFORE, ARG_YES, 0}, + {"limit-", OPT_LIMIT, ARG_YES, 0}, + {"keep-all", OPT_KEEP_ALL, ARG_NO, 0}, + {"no-line", OPT_NO_LINE, ARG_NO, 0}, + {"debug", OPT_DEBUG, ARG_MAYBE, 0}, + {"reproducible", OPT_REPRODUCIBLE, ARG_NO, 0}, + {NULL, OPT_BOGUS, ARG_NO, 0} +}; + +static void show_version(void) +{ + printf("NASM version %s compiled on %s%s\n", + nasm_version, nasm_date, nasm_compile_options); + exit(0); +} + +static bool stopoptions = false; +static bool process_arg(char *p, char *q, int pass) +{ + char *param; + bool advance = false; + + if (!p || !p[0]) + return false; + + if (p[0] == '-' && !stopoptions) { + if (strchr("oOfpPdDiIlLFXuUZwW", p[1])) { + /* These parameters take values */ + if (!(param = get_param(p, q, &advance))) + return advance; + } + + switch (p[1]) { + case 's': + if (pass == 1) + error_file = stdout; + break; + + case 'o': /* output file */ + if (pass == 2) + copy_filename(&outname, param, "output"); + break; + + case 'f': /* output format */ + if (pass == 1) { + ofmt = ofmt_find(param, &ofmt_alias); + if (!ofmt) { + nasm_fatalf(ERR_USAGE, "unrecognised output format `%s' - use -hf for a list", param); + } + } + break; + + case 'O': /* Optimization level */ + if (pass == 1) { + int opt; + + if (!*param) { + /* Naked -O == -Ox */ + optimizing.level = MAX_OPTIMIZE; + } else { + while (*param) { + switch (*param) { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + opt = strtoul(param, ¶m, 10); + + /* -O0 -> optimizing.level == -1, 0.98 behaviour */ + /* -O1 -> optimizing.level == 0, 0.98.09 behaviour */ + if (opt < 2) + optimizing.level = opt - 1; + else + optimizing.level = opt; + break; + + case 'v': + case '+': + param++; + opt_verbose_info = true; + break; + + case 'x': + param++; + optimizing.level = MAX_OPTIMIZE; + break; + + default: + nasm_fatal("unknown optimization option -O%c\n", + *param); + break; + } + } + if (optimizing.level > MAX_OPTIMIZE) + optimizing.level = MAX_OPTIMIZE; + } + } + break; + + case 'p': /* pre-include */ + case 'P': + if (pass == 2) + pp_pre_include(param); + break; + + case 'd': /* pre-define */ + case 'D': + if (pass == 2) + pp_pre_define(param); + break; + + case 'u': /* un-define */ + case 'U': + if (pass == 2) + pp_pre_undefine(param); + break; + + case 'i': /* include search path */ + case 'I': + if (pass == 1) + strlist_add(include_path, param); + break; + + case 'l': /* listing file */ + if (pass == 2) + copy_filename(&listname, param, "listing"); + break; + + case 'L': /* listing options */ + if (pass == 2) { + while (*param) + list_options |= list_option_mask(*param++); + } + break; + + case 'Z': /* error messages file */ + if (pass == 1) + copy_filename(&errname, param, "error"); + break; + + case 'F': /* specify debug format */ + if (pass == 1) { + using_debug_info = true; + debug_format = param; + } + break; + + case 'X': /* specify error reporting format */ + if (pass == 1) { + if (!nasm_stricmp("vc", param) || !nasm_stricmp("msvc", param) || !nasm_stricmp("ms", param)) + errfmt = &errfmt_msvc; + else if (!nasm_stricmp("gnu", param) || !nasm_stricmp("gcc", param)) + errfmt = &errfmt_gnu; + else + nasm_fatalf(ERR_USAGE, "unrecognized error reporting format `%s'", param); + } + break; + + case 'g': + if (pass == 1) { + using_debug_info = true; + if (p[2]) + debug_format = nasm_skip_spaces(p + 2); + } + break; + + case 'h': + help(stdout); + exit(0); /* never need usage message here */ + break; + + case 'y': + /* legacy option */ + dfmt_list(stdout); + exit(0); + break; + + case 't': + if (pass == 1) + tasm_compatible_mode = true; + break; + + case 'v': + show_version(); + break; + + case 'e': /* preprocess only */ + case 'E': + if (pass == 1) + operating_mode = OP_PREPROCESS; + break; + + case 'a': /* assemble only - don't preprocess */ + if (pass == 1) + ppopt |= PP_TRIVIAL; + break; + + case 'w': + case 'W': + if (pass == 2) + set_warning_status(param); + break; + + case 'M': + if (pass == 1) { + switch (p[2]) { + case 'W': + quote_for_make = quote_for_wmake; + break; + case 'D': + case 'F': + case 'T': + case 'Q': + advance = true; + break; + default: + break; + } + } else { + switch (p[2]) { + case 0: + operating_mode = OP_DEPEND; + break; + case 'G': + operating_mode = OP_DEPEND; + depend_missing_ok = true; + break; + case 'P': + depend_emit_phony = true; + break; + case 'D': + operating_mode |= OP_DEPEND; + if (q && (q[0] != '-' || q[1] == '\0')) { + depend_file = q; + advance = true; + } + break; + case 'F': + depend_file = q; + advance = true; + break; + case 'T': + depend_target = q; + advance = true; + break; + case 'Q': + depend_target = quote_for_make(q); + advance = true; + break; + case 'W': + /* handled in pass 1 */ + break; + default: + nasm_nonfatalf(ERR_USAGE, "unknown dependency option `-M%c'", p[2]); + break; + } + } + if (advance && (!q || !q[0])) { + nasm_nonfatalf(ERR_USAGE, "option `-M%c' requires a parameter", p[2]); + break; + } + break; + + case '-': + { + const struct textargs *tx; + size_t olen, plen; + char *eqsave; + enum text_options opt; + + p += 2; + + if (!*p) { /* -- => stop processing options */ + stopoptions = true; + break; + } + + olen = 0; /* Placate gcc at lower optimization levels */ + plen = strlen(p); + for (tx = textopts; tx->label; tx++) { + olen = strlen(tx->label); + + if (olen > plen) + continue; + + if (nasm_memicmp(p, tx->label, olen)) + continue; + + if (tx->label[olen-1] == '-') + break; /* Incomplete option */ + + if (!p[olen] || p[olen] == '=') + break; /* Complete option */ + } + + if (!tx->label) { + nasm_nonfatalf(ERR_USAGE, "unrecognized option `--%s'", p); + } + + opt = tx->opt; + + eqsave = param = strchr(p+olen, '='); + if (param) + *param++ = '\0'; + + switch (tx->need_arg) { + case ARG_YES: /* Argument required, and may be standalone */ + if (!param) { + param = q; + advance = true; + } + + /* Note: a null string is a valid parameter */ + if (!param) { + nasm_nonfatalf(ERR_USAGE, "option `--%s' requires an argument", p); + opt = OPT_BOGUS; + } + break; + + case ARG_NO: /* Argument prohibited */ + if (param) { + nasm_nonfatalf(ERR_USAGE, "option `--%s' does not take an argument", p); + opt = OPT_BOGUS; + } + break; + + case ARG_MAYBE: /* Argument permitted, but must be attached with = */ + break; + } + + switch (opt) { + case OPT_BOGUS: + break; /* We have already errored out */ + case OPT_VERSION: + show_version(); + break; + case OPT_ABORT_ON_PANIC: + abort_on_panic = true; + break; + case OPT_MANGLE: + if (pass == 2) + set_label_mangle(tx->pvt, param); + break; + case OPT_INCLUDE: + if (pass == 2) + pp_pre_include(q); + break; + case OPT_PRAGMA: + if (pass == 2) + pp_pre_command("%pragma", param); + break; + case OPT_BEFORE: + if (pass == 2) + pp_pre_command(NULL, param); + break; + case OPT_LIMIT: + if (pass == 1) + nasm_set_limit(p+olen, param); + break; + case OPT_KEEP_ALL: + keep_all = true; + break; + case OPT_NO_LINE: + ppopt |= PP_NOLINE; + break; + case OPT_DEBUG: + debug_nasm = param ? strtoul(param, NULL, 10) : debug_nasm+1; + break; + case OPT_REPRODUCIBLE: + reproducible = true; + break; + case OPT_HELP: + help(stdout); + exit(0); + default: + panic(); + } + + if (eqsave) + *eqsave = '='; /* Restore = argument separator */ + + break; + } + + default: + nasm_nonfatalf(ERR_USAGE, "unrecognised option `-%c'", p[1]); + break; + } + } else if (pass == 2) { + /* In theory we could allow multiple input files... */ + copy_filename(&inname, p, "input"); + } + + return advance; +} + +#define ARG_BUF_DELTA 128 + +static void process_respfile(FILE * rfile, int pass) +{ + char *buffer, *p, *q, *prevarg; + int bufsize, prevargsize; + + bufsize = prevargsize = ARG_BUF_DELTA; + buffer = nasm_malloc(ARG_BUF_DELTA); + prevarg = nasm_malloc(ARG_BUF_DELTA); + prevarg[0] = '\0'; + + while (1) { /* Loop to handle all lines in file */ + p = buffer; + while (1) { /* Loop to handle long lines */ + q = fgets(p, bufsize - (p - buffer), rfile); + if (!q) + break; + p += strlen(p); + if (p > buffer && p[-1] == '\n') + break; + if (p - buffer > bufsize - 10) { + int offset; + offset = p - buffer; + bufsize += ARG_BUF_DELTA; + buffer = nasm_realloc(buffer, bufsize); + p = buffer + offset; + } + } + + if (!q && p == buffer) { + if (prevarg[0]) + process_arg(prevarg, NULL, pass); + nasm_free(buffer); + nasm_free(prevarg); + return; + } + + /* + * Play safe: remove CRs, LFs and any spurious ^Zs, if any of + * them are present at the end of the line. + */ + *(p = &buffer[strcspn(buffer, "\r\n\032")]) = '\0'; + + while (p > buffer && nasm_isspace(p[-1])) + *--p = '\0'; + + p = nasm_skip_spaces(buffer); + + if (process_arg(prevarg, p, pass)) + *p = '\0'; + + if ((int) strlen(p) > prevargsize - 10) { + prevargsize += ARG_BUF_DELTA; + prevarg = nasm_realloc(prevarg, prevargsize); + } + strncpy(prevarg, p, prevargsize); + } +} + +/* Function to process args from a string of args, rather than the + * argv array. Used by the environment variable and response file + * processing. + */ +static void process_args(char *args, int pass) +{ + char *p, *q, *arg, *prevarg; + char separator = ' '; + + p = args; + if (*p && *p != '-') + separator = *p++; + arg = NULL; + while (*p) { + q = p; + while (*p && *p != separator) + p++; + while (*p == separator) + *p++ = '\0'; + prevarg = arg; + arg = q; + if (process_arg(prevarg, arg, pass)) + arg = NULL; + } + if (arg) + process_arg(arg, NULL, pass); +} + +static void process_response_file(const char *file, int pass) +{ + char str[2048]; + FILE *f = nasm_open_read(file, NF_TEXT); + if (!f) { + perror(file); + exit(-1); + } + while (fgets(str, sizeof str, f)) { + process_args(str, pass); + } + fclose(f); +} + +static void parse_cmdline(int argc, char **argv, int pass) +{ + FILE *rfile; + char *envreal, *envcopy = NULL, *p; + + /* + * Initialize all the warnings to their default state, including + * warning index 0 used for "always on". + */ + memcpy(warning_state, warning_default, sizeof warning_state); + + /* + * First, process the NASMENV environment variable. + */ + envreal = getenv("NASMENV"); + if (envreal) { + envcopy = nasm_strdup(envreal); + process_args(envcopy, pass); + nasm_free(envcopy); + } + + /* + * Now process the actual command line. + */ + while (--argc) { + bool advance; + argv++; + if (argv[0][0] == '@') { + /* + * We have a response file, so process this as a set of + * arguments like the environment variable. This allows us + * to have multiple arguments on a single line, which is + * different to the -@resp file processing below for regular + * NASM. + */ + process_response_file(argv[0]+1, pass); + argc--; + argv++; + } + if (!stopoptions && argv[0][0] == '-' && argv[0][1] == '@') { + p = get_param(argv[0], argc > 1 ? argv[1] : NULL, &advance); + if (p) { + rfile = nasm_open_read(p, NF_TEXT); + if (rfile) { + process_respfile(rfile, pass); + fclose(rfile); + } else { + nasm_nonfatalf(ERR_USAGE, "unable to open response file `%s'", p); + } + } + } else + advance = process_arg(argv[0], argc > 1 ? argv[1] : NULL, pass); + argv += advance, argc -= advance; + } + + /* + * Look for basic command line typos. This definitely doesn't + * catch all errors, but it might help cases of fumbled fingers. + */ + if (pass != 2) + return; + + if (!inname) + nasm_fatalf(ERR_USAGE, "no input file specified"); + else if ((errname && !strcmp(inname, errname)) || + (outname && !strcmp(inname, outname)) || + (listname && !strcmp(inname, listname)) || + (depend_file && !strcmp(inname, depend_file))) + nasm_fatalf(ERR_USAGE, "will not overwrite input file"); + + if (errname) { + error_file = nasm_open_write(errname, NF_TEXT); + if (!error_file) { + error_file = stderr; /* Revert to default! */ + nasm_fatalf(ERR_USAGE, "cannot open file `%s' for error messages", errname); + } + } +} + +static void forward_refs(insn *instruction) +{ + int i; + struct forwrefinfo *fwinf; + + instruction->forw_ref = false; + + if (!optimizing.level) + return; /* For -O0 don't bother */ + + if (!forwref) + return; + + if (forwref->lineno != globallineno) + return; + + instruction->forw_ref = true; + do { + instruction->oprs[forwref->operand].opflags |= OPFLAG_FORWARD; + forwref = saa_rstruct(forwrefs); + } while (forwref && forwref->lineno == globallineno); + + if (!pass_first()) + return; + + for (i = 0; i < instruction->operands; i++) { + if (instruction->oprs[i].opflags & OPFLAG_FORWARD) { + fwinf = saa_wstruct(forwrefs); + fwinf->lineno = globallineno; + fwinf->operand = i; + } + } +} + +static void process_insn(insn *instruction) +{ + int32_t n; + int64_t l; + + if (!instruction->times) + return; /* Nothing to do... */ + + nasm_assert(instruction->times > 0); + + /* + * NOTE: insn_size() can change instruction->times + * (usually to 1) when called. + */ + if (!pass_final()) { + int64_t start = location.offset; + for (n = 1; n <= instruction->times; n++) { + l = insn_size(location.segment, location.offset, + globalbits, instruction); + /* l == -1 -> invalid instruction */ + if (l != -1) + increment_offset(l); + } + if (list_option('p')) { + struct out_data dummy; + memset(&dummy, 0, sizeof dummy); + dummy.type = OUT_RAWDATA; /* Handled specially with .data NULL */ + dummy.offset = start; + dummy.size = location.offset - start; + lfmt->output(&dummy); + } + } else { + l = assemble(location.segment, location.offset, + globalbits, instruction); + /* We can't get an invalid instruction here */ + increment_offset(l); + + if (instruction->times > 1) { + lfmt->uplevel(LIST_TIMES, instruction->times); + for (n = 2; n <= instruction->times; n++) { + l = assemble(location.segment, location.offset, + globalbits, instruction); + increment_offset(l); + } + lfmt->downlevel(LIST_TIMES); + } + } +} + +static void assemble_file(const char *fname, struct strlist *depend_list) +{ + char *line; + insn output_ins; + uint64_t prev_offset_changed; + int64_t stall_count = 0; /* Make sure we make forward progress... */ + + switch (cmd_sb) { + case 16: + break; + case 32: + if (!iflag_cpu_level_ok(&cmd_cpu, IF_386)) + nasm_fatal("command line: 32-bit segment size requires a higher cpu"); + break; + case 64: + if (!iflag_cpu_level_ok(&cmd_cpu, IF_X86_64)) + nasm_fatal("command line: 64-bit segment size requires a higher cpu"); + break; + default: + panic(); + break; + } + + prev_offset_changed = INT64_MAX; + + if (listname && !keep_all) { + /* Remove the list file in case we die before the output pass */ + remove(listname); + } + + while (!terminate_after_phase && !pass_final()) { + _passn++; + switch (pass_type()) { + case PASS_INIT: + _pass_type = PASS_FIRST; + break; + case PASS_OPT: + if (global_offset_changed) + break; /* One more optimization pass */ + /* fall through */ + default: + _pass_type++; + break; + } + + global_offset_changed = 0; + + /* + * Create a warning buffer list unless we are in + * pass 2 (everything will be emitted immediately in pass 2.) + */ + if (warn_list) { + if (warn_list->nstr || pass_final()) + strlist_free(&warn_list); + } + + if (!pass_final() && !warn_list) + warn_list = strlist_alloc(false); + + globalbits = cmd_sb; /* set 'bits' to command line default */ + cpu = cmd_cpu; + if (listname) { + if (pass_final() || list_on_every_pass()) { + lfmt->init(listname); + } else if (list_active()) { + /* + * Looks like we used the list engine on a previous pass, + * but now it is turned off, presumably via %pragma -p + */ + lfmt->cleanup(); + if (!keep_all) + remove(listname); + } + } + + in_absolute = false; + if (!pass_first()) { + saa_rewind(forwrefs); + forwref = saa_rstruct(forwrefs); + raa_free(offsets); + offsets = raa_init(); + } + location.segment = NO_SEG; + location.offset = 0; + if (pass_first()) + location.known = true; + ofmt->reset(); + switch_segment(ofmt->section(NULL, &globalbits)); + pp_reset(fname, PP_NORMAL, pass_final() ? depend_list : NULL); + + globallineno = 0; + + while ((line = pp_getline())) { + if (++globallineno > nasm_limit[LIMIT_LINES]) + nasm_fatal("overall line count exceeds the maximum %"PRId64"\n", + nasm_limit[LIMIT_LINES]); + + /* + * Here we parse our directives; this is not handled by the + * main parser. + */ + if (process_directives(line)) + goto end_of_line; /* Just do final cleanup */ + + /* Not a directive, or even something that starts with [ */ + parse_line(line, &output_ins); + forward_refs(&output_ins); + process_insn(&output_ins); + cleanup_insn(&output_ins); + + end_of_line: + nasm_free(line); + } /* end while (line = pp_getline... */ + + pp_cleanup_pass(); + + /* We better not be having an error hold still... */ + nasm_assert(!errhold_stack); + + if (global_offset_changed) { + switch (pass_type()) { + case PASS_OPT: + /* + * This is the only pass type that can be executed more + * than once, and therefore has the ability to stall. + */ + if (global_offset_changed < prev_offset_changed) { + prev_offset_changed = global_offset_changed; + stall_count = 0; + } else { + stall_count++; + } + + if (stall_count > nasm_limit[LIMIT_STALLED] || + pass_count() >= nasm_limit[LIMIT_PASSES]) { + /* No convergence, almost certainly dead */ + nasm_nonfatalf(ERR_UNDEAD, + "unable to find valid values for all labels " + "after %"PRId64" passes; " + "stalled for %"PRId64", giving up.", + pass_count(), stall_count); + nasm_nonfatalf(ERR_UNDEAD, + "Possible causes: recursive EQUs, macro abuse."); + } + break; + + case PASS_STAB: + /*! + *!phase [off] phase error during stabilization + *! warns about symbols having changed values during + *! the second-to-last assembly pass. This is not + *! inherently fatal, but may be a source of bugs. + */ + nasm_warn(WARN_PHASE|ERR_UNDEAD, + "phase error during stabilization " + "pass, hoping for the best"); + break; + + case PASS_FINAL: + nasm_nonfatalf(ERR_UNDEAD, + "phase error during code generation pass"); + break; + + default: + /* This is normal, we'll keep going... */ + break; + } + } + + reset_warnings(); + } + + if (opt_verbose_info && pass_final()) { + /* -On and -Ov switches */ + nasm_info("assembly required 1+%"PRId64"+2 passes\n", pass_count()-3); + } + + lfmt->cleanup(); + strlist_free(&warn_list); +} + +/** + * get warning index; 0 if this is non-suppressible. + */ +static size_t warn_index(errflags severity) +{ + size_t index; + + if ((severity & ERR_MASK) >= ERR_FATAL) + return 0; /* Fatal errors are never suppressible */ + + /* Warnings MUST HAVE a warning category specifier! */ + nasm_assert((severity & (ERR_MASK|WARN_MASK)) != ERR_WARNING); + + index = WARN_IDX(severity); + nasm_assert(index < WARN_IDX_ALL); + + return index; +} + +static bool skip_this_pass(errflags severity) +{ + errflags type = severity & ERR_MASK; + + /* + * See if it's a pass-specific error or warning which should be skipped. + * We can never skip fatal errors as by definition they cannot be + * resumed from. + */ + if (type >= ERR_FATAL) + return false; + + /* + * ERR_LISTMSG messages are always skipped; the list file + * receives them anyway as this function is not consulted + * for sending to the list file. + */ + if (type == ERR_LISTMSG) + return true; + + /* + * This message not applicable unless it is the last pass we are going + * to execute; this can be either the final code-generation pass or + * the single pass executed in preproc-only mode. + */ + return (severity & ERR_PASS2) && !pass_final_or_preproc(); +} + +/** + * check for suppressed message (usually warnings or notes) + * + * @param severity the severity of the warning or error + * @return true if we should abort error/warning printing + */ +static bool is_suppressed(errflags severity) +{ + /* Fatal errors must never be suppressed */ + if ((severity & ERR_MASK) >= ERR_FATAL) + return false; + + /* This error/warning is pointless if we are dead anyway */ + if ((severity & ERR_UNDEAD) && terminate_after_phase) + return true; + + if (!(warning_state[warn_index(severity)] & WARN_ST_ENABLED)) + return true; + + if (!(severity & ERR_PP_LISTMACRO)) + return pp_suppress_error(severity); + + return false; +} + +/** + * Return the true error type (the ERR_MASK part) of the given + * severity, accounting for warnings that may need to be promoted to + * error. + * + * @param severity the severity of the warning or error + * @return true if we should error out + */ +static errflags true_error_type(errflags severity) +{ + const uint8_t warn_is_err = WARN_ST_ENABLED|WARN_ST_ERROR; + int type; + + type = severity & ERR_MASK; + + /* Promote warning to error? */ + if (type == ERR_WARNING) { + uint8_t state = warning_state[warn_index(severity)]; + if ((state & warn_is_err) == warn_is_err) + type = ERR_NONFATAL; + } + + return type; +} + +/* + * The various error type prefixes + */ +static const char * const error_pfx_table[ERR_MASK+1] = { + ";;; ", "debug: ", "info: ", "warning: ", + "error: ", "fatal: ", "critical: ", "panic: " +}; +static const char no_file_name[] = "nasm"; /* What to print if no file name */ + +/* + * For fatal/critical/panic errors, kill this process. + */ +static fatal_func die_hard(errflags true_type, errflags severity) +{ + fflush(NULL); + + if (true_type == ERR_PANIC && abort_on_panic) + abort(); + + if (ofile) { + fclose(ofile); + if (!keep_all) + remove(outname); + ofile = NULL; + } + + if (severity & ERR_USAGE) + usage(); + + /* Terminate immediately */ + exit(true_type - ERR_FATAL + 1); +} + +/* + * Returns the struct src_location appropriate for use, after some + * potential filename mangling. + */ +static struct src_location error_where(errflags severity) +{ + struct src_location where; + + if (severity & ERR_NOFILE) { + where.filename = NULL; + where.lineno = 0; + } else { + where = src_where_error(); + + if (!where.filename) { + where.filename = + inname && inname[0] ? inname : + outname && outname[0] ? outname : + NULL; + where.lineno = 0; + } + } + + return where; +} + +/* + * error reporting for critical and panic errors: minimize + * the amount of system dependencies for getting a message out, + * and in particular try to avoid memory allocations. + */ +fatal_func nasm_verror_critical(errflags severity, const char *fmt, va_list args) +{ + struct src_location where; + errflags true_type = severity & ERR_MASK; + static bool been_here = false; + + if (unlikely(been_here)) + abort(); /* Recursive error... just die */ + + been_here = true; + + where = error_where(severity); + if (!where.filename) + where.filename = no_file_name; + + fputs(error_pfx_table[severity], error_file); + fputs(where.filename, error_file); + if (where.lineno) { + fprintf(error_file, "%s%"PRId32"%s", + errfmt->beforeline, where.lineno, errfmt->afterline); + } + fputs(errfmt->beforemsg, error_file); + vfprintf(error_file, fmt, args); + fputc('\n', error_file); + + die_hard(true_type, severity); +} + +/** + * Stack of tentative error hold lists. + */ +struct nasm_errtext { + struct nasm_errtext *next; + char *msg; /* Owned by this structure */ + struct src_location where; /* Owned by the srcfile system */ + errflags severity; + errflags true_type; +}; +struct nasm_errhold { + struct nasm_errhold *up; + struct nasm_errtext *head, **tail; +}; + +static void nasm_free_error(struct nasm_errtext *et) +{ + nasm_free(et->msg); + nasm_free(et); +} + +static void nasm_issue_error(struct nasm_errtext *et); + +struct nasm_errhold *nasm_error_hold_push(void) +{ + struct nasm_errhold *eh; + + nasm_new(eh); + eh->up = errhold_stack; + eh->tail = &eh->head; + errhold_stack = eh; + + return eh; +} + +void nasm_error_hold_pop(struct nasm_errhold *eh, bool issue) +{ + struct nasm_errtext *et, *etmp; + + /* Allow calling with a null argument saying no hold in the first place */ + if (!eh) + return; + + /* This *must* be the current top of the errhold stack */ + nasm_assert(eh == errhold_stack); + + if (eh->head) { + if (issue) { + if (eh->up) { + /* Commit the current hold list to the previous level */ + *eh->up->tail = eh->head; + eh->up->tail = eh->tail; + } else { + /* Issue errors */ + list_for_each_safe(et, etmp, eh->head) + nasm_issue_error(et); + } + } else { + /* Free the list, drop errors */ + list_for_each_safe(et, etmp, eh->head) + nasm_free_error(et); + } + } + + errhold_stack = eh->up; + nasm_free(eh); +} + +/** + * common error reporting + * This is the common back end of the error reporting schemes currently + * implemented. It prints the nature of the warning and then the + * specific error message to error_file and may or may not return. It + * doesn't return if the error severity is a "panic" or "debug" type. + * + * @param severity the severity of the warning or error + * @param fmt the printf style format string + */ +void nasm_verror(errflags severity, const char *fmt, va_list args) +{ + struct nasm_errtext *et; + errflags true_type = true_error_type(severity); + + if (true_type >= ERR_CRITICAL) + nasm_verror_critical(severity, fmt, args); + + if (is_suppressed(severity)) + return; + + nasm_new(et); + et->severity = severity; + et->true_type = true_type; + et->msg = nasm_vasprintf(fmt, args); + et->where = error_where(severity); + + if (errhold_stack && true_type <= ERR_NONFATAL) { + /* It is a tentative error */ + *errhold_stack->tail = et; + errhold_stack->tail = &et->next; + } else { + nasm_issue_error(et); + } + + /* + * Don't do this before then, if we do, we lose messages in the list + * file, as the list file is only generated in the last pass. + */ + if (skip_this_pass(severity)) + return; + + if (!(severity & (ERR_HERE|ERR_PP_LISTMACRO))) + pp_error_list_macros(severity); +} + +/* + * Actually print, list and take action on an error + */ +static void nasm_issue_error(struct nasm_errtext *et) +{ + const char *pfx; + char warnsuf[64]; /* Warning suffix */ + char linestr[64]; /* Formatted line number if applicable */ + const errflags severity = et->severity; + const errflags true_type = et->true_type; + const struct src_location where = et->where; + + if (severity & ERR_NO_SEVERITY) + pfx = ""; + else + pfx = error_pfx_table[true_type]; + + *warnsuf = 0; + if ((severity & (ERR_MASK|ERR_HERE|ERR_PP_LISTMACRO)) == ERR_WARNING) { + /* + * It's a warning without ERR_HERE defined, and we are not already + * unwinding the macros that led us here. + */ + snprintf(warnsuf, sizeof warnsuf, " [-w+%s%s]", + (true_type >= ERR_NONFATAL) ? "error=" : "", + warning_name[warn_index(severity)]); + } + + *linestr = 0; + if (where.lineno) { + snprintf(linestr, sizeof linestr, "%s%"PRId32"%s", + errfmt->beforeline, where.lineno, errfmt->afterline); + } + + if (!skip_this_pass(severity)) { + const char *file = where.filename ? where.filename : no_file_name; + const char *here = ""; + + if (severity & ERR_HERE) { + here = where.filename ? " here" : " in an unknown location"; + } + + if (warn_list && true_type < ERR_NONFATAL) { + /* + * Buffer up warnings until we either get an error + * or we are on the code-generation pass. + */ + strlist_printf(warn_list, "%s%s%s%s%s%s%s", + file, linestr, errfmt->beforemsg, + pfx, et->msg, here, warnsuf); + } else { + /* + * Actually output an error. If we have buffered + * warnings, and this is a non-warning, output them now. + */ + if (true_type >= ERR_NONFATAL && warn_list) { + strlist_write(warn_list, "\n", error_file); + strlist_free(&warn_list); + } + + fprintf(error_file, "%s%s%s%s%s%s%s\n", + file, linestr, errfmt->beforemsg, + pfx, et->msg, here, warnsuf); + } + } + + /* Are we recursing from error_list_macros? */ + if (severity & ERR_PP_LISTMACRO) + goto done; + + /* + * Don't suppress this with skip_this_pass(), or we don't get + * pass1 or preprocessor warnings in the list file + */ + if (severity & ERR_HERE) { + if (where.lineno) + lfmt->error(severity, "%s%s at %s:%"PRId32"%s", + pfx, et->msg, where.filename, where.lineno, warnsuf); + else if (where.filename) + lfmt->error(severity, "%s%s in file %s%s", + pfx, et->msg, where.filename, warnsuf); + else + lfmt->error(severity, "%s%s in an unknown location%s", + pfx, et->msg, warnsuf); + } else { + lfmt->error(severity, "%s%s%s", pfx, et->msg, warnsuf); + } + + if (skip_this_pass(severity)) + goto done; + + if (true_type >= ERR_FATAL) + die_hard(true_type, severity); + else if (true_type >= ERR_NONFATAL) + terminate_after_phase = true; + +done: + nasm_free_error(et); +} + +static void usage(void) +{ + fprintf(error_file, "Type %s -h for help.\n", _progname); +} + +static void help(FILE *out) +{ + int i; + + fprintf(out, + "Usage: %s [-@ response_file] [options...] [--] filename\n" + " %s -v (or --v)\n", + _progname, _progname); + fputs( + "\n" + "Options (values in brackets indicate defaults):\n" + "\n" + " -h show this text and exit (also --help)\n" + " -v (or --v) print the NASM version number and exit\n" + " -@ file response file; one command line option per line\n" + "\n" + " -o outfile write output to outfile\n" + " --keep-all output files will not be removed even if an error happens\n" + "\n" + " -Xformat specify error reporting format (gnu or vc)\n" + " -s redirect error messages to stdout\n" + " -Zfile redirect error messages to file\n" + "\n" + " -M generate Makefile dependencies on stdout\n" + " -MG d:o, missing files assumed generated\n" + " -MF file set Makefile dependency file\n" + " -MD file assemble and generate dependencies\n" + " -MT file dependency target name\n" + " -MQ file dependency target name (quoted)\n" + " -MP emit phony targets\n" + "\n" + " -f format select output file format\n" + , out); + ofmt_list(ofmt, out); + fputs( + "\n" + " -g generate debugging information\n" + " -F format select a debugging format (output format dependent)\n" + " -gformat same as -g -F format\n" + , out); + dfmt_list(out); + fputs( + "\n" + " -l listfile write listing to a list file\n" + " -Lflags... add optional information to the list file\n" + " -Lb show builtin macro packages (standard and %use)\n" + " -Ld show byte and repeat counts in decimal, not hex\n" + " -Le show the preprocessed output\n" + " -Lf ignore .nolist (force output)\n" + " -Lm show multi-line macro calls with expanded parameters\n" + " -Lp output a list file every pass, in case of errors\n" + " -Ls show all single-line macro definitions\n" + " -Lw flush the output after every line (very slow!)\n" + " -L+ enable all listing options except -Lw (very verbose!)\n" + "\n" + " -Oflags... optimize opcodes, immediates and branch offsets\n" + " -O0 no optimization\n" + " -O1 minimal optimization\n" + " -Ox multipass optimization (default)\n" + " -Ov display the number of passes executed at the end\n" + " -t assemble in limited SciTech TASM compatible mode\n" + "\n" + " -E (or -e) preprocess only (writes output to stdout by default)\n" + " -a don't preprocess (assemble only)\n" + " -Ipath add a pathname to the include file path\n" + " -Pfile pre-include a file (also --include)\n" + " -Dmacro[=str] pre-define a macro\n" + " -Umacro undefine a macro\n" + " --pragma str pre-executes a specific %%pragma\n" + " --before str add line (usually a preprocessor statement) before the input\n" + " --no-line ignore %line directives in input\n" + "\n" + " --prefix str prepend the given string to the names of all extern,\n" + " common and global symbols (also --gprefix)\n" + " --suffix str append the given string to the names of all extern,\n" + " common and global symbols (also --gprefix)\n" + " --lprefix str prepend the given string to local symbols\n" + " --lpostfix str append the given string to local symbols\n" + "\n" + " --reproducible attempt to produce run-to-run identical output\n" + "\n" + " -w+x enable warning x (also -Wx)\n" + " -w-x disable warning x (also -Wno-x)\n" + " -w[+-]error promote all warnings to errors (also -Werror)\n" + " -w[+-]error=x promote warning x to errors (also -Werror=x)\n" + , out); + + fprintf(out, " %-20s %s\n", + warning_name[WARN_IDX_ALL], warning_help[WARN_IDX_ALL]); + + for (i = 1; i < WARN_IDX_ALL; i++) { + const char *me = warning_name[i]; + const char *prev = warning_name[i-1]; + const char *next = warning_name[i+1]; + + if (prev) { + int prev_len = strlen(prev); + const char *dash = me; + + while ((dash = strchr(dash+1, '-'))) { + int prefix_len = dash - me; /* Not including final dash */ + if (strncmp(next, me, prefix_len+1)) { + /* Only one or last option with this prefix */ + break; + } + if (prefix_len >= prev_len || + strncmp(prev, me, prefix_len) || + (prev[prefix_len] != '-' && prev[prefix_len] != '\0')) { + /* This prefix is different from the previous option */ + fprintf(out, " %-20.*s all warnings prefixed with \"%.*s\"\n", + prefix_len, me, prefix_len+1, me); + } + } + } + + fprintf(out, " %-20s %s%s\n", + warning_name[i], warning_help[i], + (warning_default[i] & WARN_ST_ERROR) ? " [error]" : + (warning_default[i] & WARN_ST_ENABLED) ? " [on]" : " [off]"); + } + + fputs( + "\n" + " --limit-X val set execution limit X\n" + , out); + + + for (i = 0; i <= LIMIT_MAX; i++) { + fprintf(out, " %-20s %s [", + limit_info[i].name, limit_info[i].help); + if (nasm_limit[i] < LIMIT_MAX_VAL) { + fprintf(out, "%"PRId64"]\n", nasm_limit[i]); + } else { + fputs("unlimited]\n", out); + } + } +} diff --git a/vere/ext/nasm/asm/parser.c b/vere/ext/nasm/asm/parser.c new file mode 100644 index 0000000..6b19ffa --- /dev/null +++ b/vere/ext/nasm/asm/parser.c @@ -0,0 +1,1322 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * parser.c source line parser for the Netwide Assembler + */ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasm.h" +#include "insns.h" +#include "nasmlib.h" +#include "error.h" +#include "stdscan.h" +#include "eval.h" +#include "parser.h" +#include "floats.h" +#include "assemble.h" +#include "tables.h" + + +static int end_expression_next(void); + +static struct tokenval tokval; + +static void process_size_override(insn *result, operand *op) +{ + if (tasm_compatible_mode) { + switch (tokval.t_integer) { + /* For TASM compatibility a size override inside the + * brackets changes the size of the operand, not the + * address type of the operand as it does in standard + * NASM syntax. Hence: + * + * mov eax,[DWORD val] + * + * is valid syntax in TASM compatibility mode. Note that + * you lose the ability to override the default address + * type for the instruction, but we never use anything + * but 32-bit flat model addressing in our code. + */ + case S_BYTE: + op->type |= BITS8; + break; + case S_WORD: + op->type |= BITS16; + break; + case S_DWORD: + case S_LONG: + op->type |= BITS32; + break; + case S_QWORD: + op->type |= BITS64; + break; + case S_TWORD: + op->type |= BITS80; + break; + case S_OWORD: + op->type |= BITS128; + break; + default: + nasm_nonfatal("invalid operand size specification"); + break; + } + } else { + /* Standard NASM compatible syntax */ + switch (tokval.t_integer) { + case S_NOSPLIT: + op->eaflags |= EAF_TIMESTWO; + break; + case S_REL: + op->eaflags |= EAF_REL; + break; + case S_ABS: + op->eaflags |= EAF_ABS; + break; + case S_BYTE: + op->disp_size = 8; + op->eaflags |= EAF_BYTEOFFS; + break; + case P_A16: + case P_A32: + case P_A64: + if (result->prefixes[PPS_ASIZE] && + result->prefixes[PPS_ASIZE] != tokval.t_integer) + nasm_nonfatal("conflicting address size specifications"); + else + result->prefixes[PPS_ASIZE] = tokval.t_integer; + break; + case S_WORD: + op->disp_size = 16; + op->eaflags |= EAF_WORDOFFS; + break; + case S_DWORD: + case S_LONG: + op->disp_size = 32; + op->eaflags |= EAF_WORDOFFS; + break; + case S_QWORD: + op->disp_size = 64; + op->eaflags |= EAF_WORDOFFS; + break; + default: + nasm_nonfatal("invalid size specification in" + " effective address"); + break; + } + } +} + +/* + * Braced keywords are parsed here. opmask and zeroing + * decorators can be placed in any order. e.g. zmm1 {k2}{z} or zmm2 + * {z}{k3} decorator(s) are placed at the end of an operand. + */ +static bool parse_braces(decoflags_t *decoflags) +{ + int i, j; + + i = tokval.t_type; + + while (true) { + switch (i) { + case TOKEN_OPMASK: + if (*decoflags & OPMASK_MASK) { + nasm_nonfatal("opmask k%"PRIu64" is already set", + *decoflags & OPMASK_MASK); + *decoflags &= ~OPMASK_MASK; + } + *decoflags |= VAL_OPMASK(nasm_regvals[tokval.t_integer]); + break; + case TOKEN_DECORATOR: + j = tokval.t_integer; + switch (j) { + case BRC_Z: + *decoflags |= Z_MASK; + break; + case BRC_1TO2: + case BRC_1TO4: + case BRC_1TO8: + case BRC_1TO16: + case BRC_1TO32: + *decoflags |= BRDCAST_MASK | VAL_BRNUM(j - BRC_1TO2); + break; + default: + nasm_nonfatal("{%s} is not an expected decorator", + tokval.t_charptr); + break; + } + break; + case ',': + case TOKEN_EOS: + return false; + default: + nasm_nonfatal("only a series of valid decorators expected"); + return true; + } + i = stdscan(NULL, &tokval); + } +} + +static inline unused_func +const expr *next_expr(const expr *e, const expr **next_list) +{ + e++; + if (!e->type) { + if (next_list) { + e = *next_list; + *next_list = NULL; + } else { + e = NULL; + } + } + return e; +} + +static inline void init_operand(operand *op) +{ + memset(op, 0, sizeof *op); + + op->basereg = -1; + op->indexreg = -1; + op->segment = NO_SEG; + op->wrt = NO_SEG; +} + +static int parse_mref(operand *op, const expr *e) +{ + int b, i, s; /* basereg, indexreg, scale */ + int64_t o; /* offset */ + + b = op->basereg; + i = op->indexreg; + s = op->scale; + o = op->offset; + + for (; e->type; e++) { + if (e->type <= EXPR_REG_END) { + bool is_gpr = is_class(REG_GPR,nasm_reg_flags[e->type]); + + if (is_gpr && e->value == 1 && b == -1) { + /* It can be basereg */ + b = e->type; + } else if (i == -1) { + /* Must be index register */ + i = e->type; + s = e->value; + } else { + if (b == -1) + nasm_nonfatal("invalid effective address: two index registers"); + else if (!is_gpr) + nasm_nonfatal("invalid effective address: impossible register"); + else + nasm_nonfatal("invalid effective address: too many registers"); + return -1; + } + } else if (e->type == EXPR_UNKNOWN) { + op->opflags |= OPFLAG_UNKNOWN; + } else if (e->type == EXPR_SIMPLE) { + o += e->value; + } else if (e->type == EXPR_WRT) { + op->wrt = e->value; + } else if (e->type >= EXPR_SEGBASE) { + if (e->value == 1) { + if (op->segment != NO_SEG) { + nasm_nonfatal("invalid effective address: multiple base segments"); + return -1; + } + op->segment = e->type - EXPR_SEGBASE; + } else if (e->value == -1 && + e->type == location.segment + EXPR_SEGBASE && + !(op->opflags & OPFLAG_RELATIVE)) { + op->opflags |= OPFLAG_RELATIVE; + } else { + nasm_nonfatal("invalid effective address: impossible segment base multiplier"); + return -1; + } + } else { + nasm_nonfatal("invalid effective address: bad subexpression type"); + return -1; + } + } + + op->basereg = b; + op->indexreg = i; + op->scale = s; + op->offset = o; + return 0; +} + +static void mref_set_optype(operand *op) +{ + int b = op->basereg; + int i = op->indexreg; + int s = op->scale; + + /* It is memory, but it can match any r/m operand */ + op->type |= MEMORY_ANY; + + if (b == -1 && (i == -1 || s == 0)) { + int is_rel = globalbits == 64 && + !(op->eaflags & EAF_ABS) && + ((globalrel && + !(op->eaflags & EAF_FSGS)) || + (op->eaflags & EAF_REL)); + + op->type |= is_rel ? IP_REL : MEM_OFFS; + } + + if (i != -1) { + opflags_t iclass = nasm_reg_flags[i]; + + if (is_class(XMMREG,iclass)) + op->type |= XMEM; + else if (is_class(YMMREG,iclass)) + op->type |= YMEM; + else if (is_class(ZMMREG,iclass)) + op->type |= ZMEM; + } +} + +/* + * Convert an expression vector returned from evaluate() into an + * extop structure. Return zero on success. Note that the eop + * already has dup and elem set, so we can't clear it here. + */ +static int value_to_extop(expr *vect, extop *eop, int32_t myseg) +{ + eop->type = EOT_DB_NUMBER; + eop->val.num.offset = 0; + eop->val.num.segment = eop->val.num.wrt = NO_SEG; + eop->val.num.relative = false; + + for (; vect->type; vect++) { + if (!vect->value) /* zero term, safe to ignore */ + continue; + + if (vect->type <= EXPR_REG_END) /* false if a register is present */ + return -1; + + if (vect->type == EXPR_UNKNOWN) /* something we can't resolve yet */ + return 0; + + if (vect->type == EXPR_SIMPLE) { + /* Simple number expression */ + eop->val.num.offset += vect->value; + continue; + } + if (eop->val.num.wrt == NO_SEG && !eop->val.num.relative && + vect->type == EXPR_WRT) { + /* WRT term */ + eop->val.num.wrt = vect->value; + continue; + } + + if (!eop->val.num.relative && + vect->type == EXPR_SEGBASE + myseg && vect->value == -1) { + /* Expression of the form: foo - $ */ + eop->val.num.relative = true; + continue; + } + + if (eop->val.num.segment == NO_SEG && + vect->type >= EXPR_SEGBASE && vect->value == 1) { + eop->val.num.segment = vect->type - EXPR_SEGBASE; + continue; + } + + /* Otherwise, badness */ + return -1; + } + + /* We got to the end and it was all okay */ + return 0; +} + +/* + * Parse an extended expression, used by db et al. "elem" is the element + * size; initially comes from the specific opcode (e.g. db == 1) but + * can be overridden. + */ +static int parse_eops(extop **result, bool critical, int elem) +{ + extop *eop = NULL, *prev = NULL; + extop **tail = result; + int sign; + int i = tokval.t_type; + int oper_num = 0; + bool do_subexpr = false; + + *tail = NULL; + + /* End of string is obvious; ) ends a sub-expression list e.g. DUP */ + for (i = tokval.t_type; i != TOKEN_EOS; i = stdscan(NULL, &tokval)) { + char endparen = ')'; /* Is a right paren the end of list? */ + + if (i == ')') + break; + + if (!eop) { + nasm_new(eop); + eop->dup = 1; + eop->elem = elem; + do_subexpr = false; + } + sign = +1; + + /* + * end_expression_next() here is to distinguish this from + * a string used as part of an expression... + */ + if (i == TOKEN_QMARK) { + eop->type = EOT_DB_RESERVE; + } else if (do_subexpr && i == '(') { + extop *subexpr; + + stdscan(NULL, &tokval); /* Skip paren */ + if (parse_eops(&eop->val.subexpr, critical, eop->elem) < 0) + goto fail; + + subexpr = eop->val.subexpr; + if (!subexpr) { + /* Subexpression is empty */ + eop->type = EOT_NOTHING; + } else if (!subexpr->next) { + /* + * Subexpression is a single element, flatten. + * Note that if subexpr has an allocated buffer associated + * with it, freeing it would free the buffer, too, so + * we need to move subexpr up, not eop down. + */ + if (!subexpr->elem) + subexpr->elem = eop->elem; + subexpr->dup *= eop->dup; + nasm_free(eop); + eop = subexpr; + } else { + eop->type = EOT_EXTOP; + } + + /* We should have ended on a closing paren */ + if (tokval.t_type != ')') { + nasm_nonfatal("expected `)' after subexpression, got `%s'", + i == TOKEN_EOS ? + "end of line" : tokval.t_charptr); + goto fail; + } + endparen = 0; /* This time the paren is not the end */ + } else if (i == '%') { + /* %(expression_list) */ + do_subexpr = true; + continue; + } else if (i == TOKEN_SIZE) { + /* Element size override */ + eop->elem = tokval.t_inttwo; + do_subexpr = true; + continue; + } else if (i == TOKEN_STR && end_expression_next()) { + eop->type = EOT_DB_STRING; + eop->val.string.data = tokval.t_charptr; + eop->val.string.len = tokval.t_inttwo; + } else if (i == TOKEN_STRFUNC) { + bool parens = false; + const char *funcname = tokval.t_charptr; + enum strfunc func = tokval.t_integer; + + i = stdscan(NULL, &tokval); + if (i == '(') { + parens = true; + endparen = 0; + i = stdscan(NULL, &tokval); + } + if (i != TOKEN_STR) { + nasm_nonfatal("%s must be followed by a string constant", + funcname); + eop->type = EOT_NOTHING; + } else { + eop->type = EOT_DB_STRING_FREE; + eop->val.string.len = + string_transform(tokval.t_charptr, tokval.t_inttwo, + &eop->val.string.data, func); + if (eop->val.string.len == (size_t)-1) { + nasm_nonfatal("invalid input string to %s", funcname); + eop->type = EOT_NOTHING; + } + } + if (parens && i && i != ')') { + i = stdscan(NULL, &tokval); + if (i != ')') + nasm_nonfatal("unterminated %s function", funcname); + } + } else if (i == '-' || i == '+') { + char *save = stdscan_get(); + struct tokenval tmptok; + + sign = (i == '-') ? -1 : 1; + if (stdscan(NULL, &tmptok) != TOKEN_FLOAT) { + stdscan_set(save); + goto is_expression; + } else { + tokval = tmptok; + goto is_float; + } + } else if (i == TOKEN_FLOAT) { + enum floatize fmt; + is_float: + eop->type = EOT_DB_FLOAT; + + fmt = float_deffmt(eop->elem); + if (fmt == FLOAT_ERR) { + nasm_nonfatal("no %d-bit floating-point format supported", + eop->elem << 3); + eop->val.string.len = 0; + } else if (eop->elem < 1) { + nasm_nonfatal("floating-point constant" + " encountered in unknown instruction"); + /* + * fix suggested by Pedro Gimeno... original line was: + * eop->type = EOT_NOTHING; + */ + eop->val.string.len = 0; + } else { + eop->val.string.len = eop->elem; + + eop = nasm_realloc(eop, sizeof(extop) + eop->val.string.len); + eop->val.string.data = (char *)eop + sizeof(extop); + if (!float_const(tokval.t_charptr, sign, + (uint8_t *)eop->val.string.data, fmt)) + eop->val.string.len = 0; + } + if (!eop->val.string.len) + eop->type = EOT_NOTHING; + } else { + /* anything else, assume it is an expression */ + expr *value; + + is_expression: + value = evaluate(stdscan, NULL, &tokval, NULL, + critical, NULL); + i = tokval.t_type; + if (!value) /* Error in evaluator */ + goto fail; + if (tokval.t_flag & TFLAG_DUP) { + /* Expression followed by DUP */ + if (!is_simple(value)) { + nasm_nonfatal("non-constant argument supplied to DUP"); + goto fail; + } else if (value->value < 0) { + nasm_nonfatal("negative argument supplied to DUP"); + goto fail; + } + eop->dup *= (size_t)value->value; + do_subexpr = true; + continue; + } + if (value_to_extop(value, eop, location.segment)) { + nasm_nonfatal("expression is not simple or relocatable"); + } + } + + if (eop->dup == 0 || eop->type == EOT_NOTHING) { + nasm_free(eop); + } else if (eop->type == EOT_DB_RESERVE && + prev && prev->type == EOT_DB_RESERVE && + prev->elem == eop->elem) { + /* Coalesce multiple EOT_DB_RESERVE */ + prev->dup += eop->dup; + nasm_free(eop); + } else { + /* Add this eop to the end of the chain */ + prev = eop; + *tail = eop; + tail = &eop->next; + } + + oper_num++; + eop = NULL; /* Done with this operand */ + + /* + * We're about to call stdscan(), which will eat the + * comma that we're currently sitting on between + * arguments. However, we'd better check first that it + * _is_ a comma. + */ + if (i == TOKEN_EOS || i == endparen) /* Already at end? */ + break; + if (i != ',') { + i = stdscan(NULL, &tokval); /* eat the comma or final paren */ + if (i == TOKEN_EOS || i == ')') /* got end of expression */ + break; + if (i != ',') { + nasm_nonfatal("comma expected after operand"); + goto fail; + } + } + } + + return oper_num; + +fail: + if (eop) + nasm_free(eop); + return -1; +} + +insn *parse_line(char *buffer, insn *result) +{ + bool insn_is_label = false; + struct eval_hints hints; + int opnum; + bool critical; + bool first; + bool recover; + bool far_jmp_ok; + int i; + + nasm_static_assert(P_none == 0); + +restart_parse: + first = true; + result->forw_ref = false; + + stdscan_reset(); + stdscan_set(buffer); + i = stdscan(NULL, &tokval); + + memset(result->prefixes, P_none, sizeof(result->prefixes)); + result->times = 1; /* No TIMES either yet */ + result->label = NULL; /* Assume no label */ + result->eops = NULL; /* must do this, whatever happens */ + result->operands = 0; /* must initialize this */ + result->evex_rm = 0; /* Ensure EVEX rounding mode is reset */ + result->evex_brerop = -1; /* Reset EVEX broadcasting/ER op position */ + + /* Ignore blank lines */ + if (i == TOKEN_EOS) + goto fail; + + if (i != TOKEN_ID && + i != TOKEN_INSN && + i != TOKEN_PREFIX && + (i != TOKEN_REG || !IS_SREG(tokval.t_integer))) { + nasm_nonfatal("label or instruction expected at start of line"); + goto fail; + } + + if (i == TOKEN_ID || (insn_is_label && i == TOKEN_INSN)) { + /* there's a label here */ + first = false; + result->label = tokval.t_charptr; + i = stdscan(NULL, &tokval); + if (i == ':') { /* skip over the optional colon */ + i = stdscan(NULL, &tokval); + } else if (i == 0) { + /*! + *!label-orphan [on] labels alone on lines without trailing `:' + *!=orphan-labels + *! warns about source lines which contain no instruction but define + *! a label without a trailing colon. This is most likely indicative + *! of a typo, but is technically correct NASM syntax (see \k{syntax}.) + */ + nasm_warn(WARN_LABEL_ORPHAN , + "label alone on a line without a colon might be in error"); + } + if (i != TOKEN_INSN || tokval.t_integer != I_EQU) { + /* + * FIXME: location.segment could be NO_SEG, in which case + * it is possible we should be passing 'absolute.segment'. Look into this. + * Work out whether that is *really* what we should be doing. + * Generally fix things. I think this is right as it is, but + * am still not certain. + */ + define_label(result->label, + in_absolute ? absolute.segment : location.segment, + location.offset, true); + } + } + + /* Just a label here */ + if (i == TOKEN_EOS) + goto fail; + + while (i) { + int slot = PPS_SEG; + + if (i == TOKEN_PREFIX) { + slot = tokval.t_inttwo; + + if (slot == PPS_TIMES) { + /* TIMES is a very special prefix */ + expr *value; + + i = stdscan(NULL, &tokval); + value = evaluate(stdscan, NULL, &tokval, NULL, + pass_stable(), NULL); + i = tokval.t_type; + if (!value) /* Error in evaluator */ + goto fail; + if (!is_simple(value)) { + nasm_nonfatal("non-constant argument supplied to TIMES"); + result->times = 1; + } else { + result->times = value->value; + if (value->value < 0) { + nasm_nonfatalf(ERR_PASS2, "TIMES value %"PRId64" is negative", value->value); + result->times = 0; + } + } + first = false; + continue; + } + } else if (i == TOKEN_REG && IS_SREG(tokval.t_integer)) { + slot = PPS_SEG; + first = false; + } else { + break; /* Not a prefix */ + } + + if (result->prefixes[slot]) { + if (result->prefixes[slot] == tokval.t_integer) + nasm_warn(WARN_OTHER, "instruction has redundant prefixes"); + else + nasm_nonfatal("instruction has conflicting prefixes"); + } + result->prefixes[slot] = tokval.t_integer; + i = stdscan(NULL, &tokval); + first = false; + } + + if (i != TOKEN_INSN) { + int j; + enum prefixes pfx; + + for (j = 0; j < MAXPREFIX; j++) { + if ((pfx = result->prefixes[j]) != P_none) + break; + } + + if (i == 0 && pfx != P_none) { + /* + * Instruction prefixes are present, but no actual + * instruction. This is allowed: at this point we + * invent a notional instruction of RESB 0. + */ + result->opcode = I_RESB; + result->operands = 1; + nasm_zero(result->oprs); + result->oprs[0].type = IMMEDIATE; + result->oprs[0].offset = 0L; + result->oprs[0].segment = result->oprs[0].wrt = NO_SEG; + return result; + } else { + nasm_nonfatal("parser: instruction expected"); + goto fail; + } + } + + result->opcode = tokval.t_integer; + + /* + * INCBIN cannot be satisfied with incorrectly + * evaluated operands, since the correct values _must_ be known + * on the first pass. Hence, even in pass one, we set the + * `critical' flag on calling evaluate(), so that it will bomb + * out on undefined symbols. + */ + critical = pass_final() || (result->opcode == I_INCBIN); + + if (opcode_is_db(result->opcode) || result->opcode == I_INCBIN) { + int oper_num; + + i = stdscan(NULL, &tokval); + + if (first && i == ':') { + /* Really a label */ + insn_is_label = true; + goto restart_parse; + } + first = false; + oper_num = parse_eops(&result->eops, critical, db_bytes(result->opcode)); + if (oper_num < 0) + goto fail; + + if (result->opcode == I_INCBIN) { + /* + * Correct syntax for INCBIN is that there should be + * one string operand, followed by one or two numeric + * operands. + */ + if (!result->eops || result->eops->type != EOT_DB_STRING) + nasm_nonfatal("`incbin' expects a file name"); + else if (result->eops->next && + result->eops->next->type != EOT_DB_NUMBER) + nasm_nonfatal("`incbin': second parameter is" + " non-numeric"); + else if (result->eops->next && result->eops->next->next && + result->eops->next->next->type != EOT_DB_NUMBER) + nasm_nonfatal("`incbin': third parameter is" + " non-numeric"); + else if (result->eops->next && result->eops->next->next && + result->eops->next->next->next) + nasm_nonfatal("`incbin': more than three parameters"); + else + return result; + /* + * If we reach here, one of the above errors happened. + * Throw the instruction away. + */ + goto fail; + } else { + /* DB et al */ + result->operands = oper_num; + if (oper_num == 0) + /*! + *!db-empty [on] no operand for data declaration + *! warns about a \c{DB}, \c{DW}, etc declaration + *! with no operands, producing no output. + *! This is permitted, but often indicative of an error. + *! See \k{db}. + */ + nasm_warn(WARN_DB_EMPTY, "no operand for data declaration"); + } + return result; + } + + /* + * Now we begin to parse the operands. There may be up to four + * of these, separated by commas, and terminated by a zero token. + */ + far_jmp_ok = result->opcode == I_JMP || result->opcode == I_CALL; + + for (opnum = 0; opnum < MAX_OPERANDS; opnum++) { + operand *op = &result->oprs[opnum]; + expr *value; /* used most of the time */ + bool mref = false; /* is this going to be a memory ref? */ + int bracket = 0; /* is it a [] mref, or a "naked" mref? */ + bool mib; /* compound (mib) mref? */ + int setsize = 0; + decoflags_t brace_flags = 0; /* flags for decorators in braces */ + + init_operand(op); + + i = stdscan(NULL, &tokval); + if (i == TOKEN_EOS) + break; /* end of operands: get out of here */ + else if (first && i == ':') { + insn_is_label = true; + goto restart_parse; + } + first = false; + op->type = 0; /* so far, no override */ + /* size specifiers */ + while (i == TOKEN_SPECIAL || i == TOKEN_SIZE) { + switch (tokval.t_integer) { + case S_BYTE: + if (!setsize) /* we want to use only the first */ + op->type |= BITS8; + setsize = 1; + break; + case S_WORD: + if (!setsize) + op->type |= BITS16; + setsize = 1; + break; + case S_DWORD: + case S_LONG: + if (!setsize) + op->type |= BITS32; + setsize = 1; + break; + case S_QWORD: + if (!setsize) + op->type |= BITS64; + setsize = 1; + break; + case S_TWORD: + if (!setsize) + op->type |= BITS80; + setsize = 1; + break; + case S_OWORD: + if (!setsize) + op->type |= BITS128; + setsize = 1; + break; + case S_YWORD: + if (!setsize) + op->type |= BITS256; + setsize = 1; + break; + case S_ZWORD: + if (!setsize) + op->type |= BITS512; + setsize = 1; + break; + case S_TO: + op->type |= TO; + break; + case S_STRICT: + op->type |= STRICT; + break; + case S_FAR: + op->type |= FAR; + break; + case S_NEAR: + op->type |= NEAR; + break; + case S_SHORT: + op->type |= SHORT; + break; + default: + nasm_nonfatal("invalid operand size specification"); + } + i = stdscan(NULL, &tokval); + } + + if (i == '[' || i == TOKEN_MASM_PTR || i == '&') { + /* memory reference */ + mref = true; + bracket += (i == '['); + i = stdscan(NULL, &tokval); + } + + mref_more: + if (mref) { + bool done = false; + bool nofw = false; + + while (!done) { + switch (i) { + case TOKEN_SPECIAL: + case TOKEN_SIZE: + case TOKEN_PREFIX: + process_size_override(result, op); + break; + + case '[': + bracket++; + break; + + case ',': + tokval.t_type = TOKEN_NUM; + tokval.t_integer = 0; + stdscan_set(stdscan_get() - 1); /* rewind the comma */ + done = nofw = true; + break; + + case TOKEN_MASM_FLAT: + i = stdscan(NULL, &tokval); + if (i != ':') { + nasm_nonfatal("unknown use of FLAT in MASM emulation"); + nofw = true; + } + done = true; + break; + + default: + done = nofw = true; + break; + } + + if (!nofw) + i = stdscan(NULL, &tokval); + } + } + + value = evaluate(stdscan, NULL, &tokval, + &op->opflags, critical, &hints); + i = tokval.t_type; + if (op->opflags & OPFLAG_FORWARD) { + result->forw_ref = true; + } + if (!value) /* Error in evaluator */ + goto fail; + + if (i == '[' && !bracket) { + /* displacement[regs] syntax */ + mref = true; + parse_mref(op, value); /* Process what we have so far */ + goto mref_more; + } + + if (i == ':' && (mref || !far_jmp_ok)) { + /* segment override? */ + mref = true; + + /* + * Process the segment override. + */ + if (!IS_SREG(value->type) || value->value != 1 || + value[1].type != 0) { + nasm_nonfatal("invalid segment override"); + } else if (result->prefixes[PPS_SEG]) { + nasm_nonfatal("instruction has conflicting segment overrides"); + } else { + result->prefixes[PPS_SEG] = value->type; + if (IS_FSGS(value->type)) + op->eaflags |= EAF_FSGS; + } + + i = stdscan(NULL, &tokval); /* then skip the colon */ + goto mref_more; + } + + mib = false; + if (mref && bracket && i == ',') { + /* [seg:base+offset,index*scale] syntax (mib) */ + operand o2; /* Index operand */ + + if (parse_mref(op, value)) + goto fail; + + i = stdscan(NULL, &tokval); /* Eat comma */ + value = evaluate(stdscan, NULL, &tokval, &op->opflags, + critical, &hints); + i = tokval.t_type; + if (!value) + goto fail; + + init_operand(&o2); + if (parse_mref(&o2, value)) + goto fail; + + if (o2.basereg != -1 && o2.indexreg == -1) { + o2.indexreg = o2.basereg; + o2.scale = 1; + o2.basereg = -1; + } + + if (op->indexreg != -1 || o2.basereg != -1 || o2.offset != 0 || + o2.segment != NO_SEG || o2.wrt != NO_SEG) { + nasm_nonfatal("invalid mib expression"); + goto fail; + } + + op->indexreg = o2.indexreg; + op->scale = o2.scale; + + if (op->basereg != -1) { + op->hintbase = op->basereg; + op->hinttype = EAH_MAKEBASE; + } else if (op->indexreg != -1) { + op->hintbase = op->indexreg; + op->hinttype = EAH_NOTBASE; + } else { + op->hintbase = -1; + op->hinttype = EAH_NOHINT; + } + + mib = true; + } + + recover = false; + if (mref) { + if (bracket == 1) { + if (i == ']') { + bracket--; + i = stdscan(NULL, &tokval); + } else { + nasm_nonfatal("expecting ] at end of memory operand"); + recover = true; + } + } else if (bracket == 0) { + /* Do nothing */ + } else if (bracket > 0) { + nasm_nonfatal("excess brackets in memory operand"); + recover = true; + } else if (bracket < 0) { + nasm_nonfatal("unmatched ] in memory operand"); + recover = true; + } + + if (i == TOKEN_DECORATOR || i == TOKEN_OPMASK) { + /* parse opmask (and zeroing) after an operand */ + recover = parse_braces(&brace_flags); + i = tokval.t_type; + } + if (!recover && i != 0 && i != ',') { + nasm_nonfatal("comma, decorator or end of line expected, got %d", i); + recover = true; + } + } else { /* immediate operand */ + if (i != 0 && i != ',' && i != ':' && + i != TOKEN_DECORATOR && i != TOKEN_OPMASK) { + nasm_nonfatal("comma, colon, decorator or end of " + "line expected after operand"); + recover = true; + } else if (i == ':') { + op->type |= COLON; + } else if (i == TOKEN_DECORATOR || i == TOKEN_OPMASK) { + /* parse opmask (and zeroing) after an operand */ + recover = parse_braces(&brace_flags); + } + } + if (recover) { + do { /* error recovery */ + i = stdscan(NULL, &tokval); + } while (i != 0 && i != ','); + } + + /* + * now convert the exprs returned from evaluate() + * into operand descriptions... + */ + op->decoflags |= brace_flags; + + if (mref) { /* it's a memory reference */ + /* A mib reference was fully parsed already */ + if (!mib) { + if (parse_mref(op, value)) + goto fail; + op->hintbase = hints.base; + op->hinttype = hints.type; + } + mref_set_optype(op); + } else if ((op->type & FAR) && !far_jmp_ok) { + nasm_nonfatal("invalid use of FAR operand specifier"); + recover = true; + } else { /* it's not a memory reference */ + if (is_just_unknown(value)) { /* it's immediate but unknown */ + op->type |= IMMEDIATE; + op->opflags |= OPFLAG_UNKNOWN; + op->offset = 0; /* don't care */ + op->segment = NO_SEG; /* don't care again */ + op->wrt = NO_SEG; /* still don't care */ + + if(optimizing.level >= 0 && !(op->type & STRICT)) { + /* Be optimistic */ + op->type |= + UNITY | SBYTEWORD | SBYTEDWORD | UDWORD | SDWORD; + } + } else if (is_reloc(value)) { /* it's immediate */ + uint64_t n = reloc_value(value); + + op->type |= IMMEDIATE; + op->offset = n; + op->segment = reloc_seg(value); + op->wrt = reloc_wrt(value); + op->opflags |= is_self_relative(value) ? OPFLAG_RELATIVE : 0; + + if (is_simple(value)) { + if (n == 1) + op->type |= UNITY; + if (optimizing.level >= 0 && !(op->type & STRICT)) { + if ((uint32_t) (n + 128) <= 255) + op->type |= SBYTEDWORD; + if ((uint16_t) (n + 128) <= 255) + op->type |= SBYTEWORD; + if (n <= UINT64_C(0xFFFFFFFF)) + op->type |= UDWORD; + if (n + UINT64_C(0x80000000) <= UINT64_C(0xFFFFFFFF)) + op->type |= SDWORD; + } + } + } else if (value->type == EXPR_RDSAE) { + /* + * it's not an operand but a rounding or SAE decorator. + * put the decorator information in the (opflag_t) type field + * of previous operand. + */ + opnum--; op--; + switch (value->value) { + case BRC_RN: + case BRC_RU: + case BRC_RD: + case BRC_RZ: + case BRC_SAE: + op->decoflags |= (value->value == BRC_SAE ? SAE : ER); + result->evex_rm = value->value; + break; + default: + nasm_nonfatal("invalid decorator"); + break; + } + } else { /* it's a register */ + opflags_t rs; + uint64_t regset_size = 0; + + if (value->type >= EXPR_SIMPLE || value->value != 1) { + nasm_nonfatal("invalid operand type"); + goto fail; + } + + /* + * We do not allow any kind of expression, except for + * reg+value in which case it is a register set. + */ + for (i = 1; value[i].type; i++) { + if (!value[i].value) + continue; + + switch (value[i].type) { + case EXPR_SIMPLE: + if (!regset_size) { + regset_size = value[i].value + 1; + break; + } + /* fallthrough */ + default: + nasm_nonfatal("invalid operand type"); + goto fail; + } + } + + if ((regset_size & (regset_size - 1)) || + regset_size >= (UINT64_C(1) << REGSET_BITS)) { + nasm_nonfatalf(ERR_PASS2, "invalid register set size"); + regset_size = 0; + } + + /* clear overrides, except TO which applies to FPU regs */ + if (op->type & ~TO) { + /* + * we want to produce a warning iff the specified size + * is different from the register size + */ + rs = op->type & SIZE_MASK; + } else { + rs = 0; + } + + /* + * Make sure we're not out of nasm_reg_flags, still + * probably this should be fixed when we're defining + * the label. + * + * An easy trigger is + * + * e equ 0x80000000:0 + * pshufw word e-0 + * + */ + if (value->type < EXPR_REG_START || + value->type > EXPR_REG_END) { + nasm_nonfatal("invalid operand type"); + goto fail; + } + + op->type &= TO; + op->type |= REGISTER; + op->type |= nasm_reg_flags[value->type]; + op->type |= (regset_size >> 1) << REGSET_SHIFT; + op->decoflags |= brace_flags; + op->basereg = value->type; + + if (rs) { + opflags_t opsize = nasm_reg_flags[value->type] & SIZE_MASK; + if (!opsize) { + op->type |= rs; /* For non-size-specific registers, permit size override */ + } else if (opsize != rs) { + /*! + *!regsize [on] register size specification ignored + *! + *! warns about a register with implicit size (such as \c{EAX}, which is always 32 bits) + *! been given an explicit size specification which is inconsistent with the size + *! of the named register, e.g. \c{WORD EAX}. \c{DWORD EAX} or \c{WORD AX} are + *! permitted, and do not trigger this warning. Some registers which \e{do not} imply + *! a specific size, such as \c{K0}, may need this specification unless the instruction + *! itself implies the instruction size: + *!- + *! \c KMOVW K0,[foo] ; Permitted, KMOVW implies 16 bits + *! \c KMOV WORD K0,[foo] ; Permitted, WORD K0 specifies instruction size + *! \c KMOV K0,WORD [foo] ; Permitted, WORD [foo] specifies instruction size + *! \c KMOV K0,[foo] ; Not permitted, instruction size ambiguous + */ + nasm_warn(WARN_REGSIZE, "invalid register size specification ignored"); + } + } + } + } + + /* remember the position of operand having broadcasting/ER mode */ + if (op->decoflags & (BRDCAST_MASK | ER | SAE)) + result->evex_brerop = opnum; + } + + result->operands = opnum; /* set operand count */ + + /* clear remaining operands */ + while (opnum < MAX_OPERANDS) + result->oprs[opnum++].type = 0; + + return result; + +fail: + result->opcode = I_none; + return result; +} + +static int end_expression_next(void) +{ + struct tokenval tv; + char *p; + int i; + + p = stdscan_get(); + i = stdscan(NULL, &tv); + stdscan_set(p); + + return (i == ',' || i == ';' || i == ')' || !i); +} + +static void free_eops(extop *e) +{ + extop *next; + + while (e) { + next = e->next; + switch (e->type) { + case EOT_EXTOP: + free_eops(e->val.subexpr); + break; + + case EOT_DB_STRING_FREE: + nasm_free(e->val.string.data); + break; + + default: + break; + } + + nasm_free(e); + e = next; + } +} + +void cleanup_insn(insn * i) +{ + free_eops(i->eops); +} diff --git a/vere/ext/nasm/asm/parser.h b/vere/ext/nasm/asm/parser.h new file mode 100644 index 0000000..15298cb --- /dev/null +++ b/vere/ext/nasm/asm/parser.h @@ -0,0 +1,45 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2009 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * parser.h header file for the parser module of the Netwide + * Assembler + */ + +#ifndef NASM_PARSER_H +#define NASM_PARSER_H + +insn *parse_line(char *buffer, insn *result); +void cleanup_insn(insn *instruction); + +#endif diff --git a/vere/ext/nasm/asm/pptok.c b/vere/ext/nasm/asm/pptok.c new file mode 100644 index 0000000..c88d130 --- /dev/null +++ b/vere/ext/nasm/asm/pptok.c @@ -0,0 +1,848 @@ +/* Automatically generated from ./asm/pptok.dat by ./asm/pptok.pl */ +/* Do not edit */ + +#include "compiler.h" +#include "nctype.h" +#include "nasmlib.h" +#include "hashtbl.h" +#include "preproc.h" + +const char * const pp_directives[120] = { + "%if", + "%ifctx", + "%ifdef", + "%ifdefalias", + "%ifdifi", + "%ifempty", + "%ifenv", + "%ifid", + "%ifidn", + "%ifidni", + "%ifmacro", + "%ifnum", + "%ifstr", + "%iftoken", + "%ifusable", + "%ifusing", + "%ifn", + "%ifnctx", + "%ifndef", + "%ifndefalias", + "%ifndifi", + "%ifnempty", + "%ifnenv", + "%ifnid", + "%ifnidn", + "%ifnidni", + "%ifnmacro", + "%ifnnum", + "%ifnstr", + "%ifntoken", + "%ifnusable", + "%ifnusing", + "%elif", + "%elifctx", + "%elifdef", + "%elifdefalias", + "%elifdifi", + "%elifempty", + "%elifenv", + "%elifid", + "%elifidn", + "%elifidni", + "%elifmacro", + "%elifnum", + "%elifstr", + "%eliftoken", + "%elifusable", + "%elifusing", + "%elifn", + "%elifnctx", + "%elifndef", + "%elifndefalias", + "%elifndifi", + "%elifnempty", + "%elifnenv", + "%elifnid", + "%elifnidn", + "%elifnidni", + "%elifnmacro", + "%elifnnum", + "%elifnstr", + "%elifntoken", + "%elifnusable", + "%elifnusing", + "%aliases", + "%arg", + "%clear", + "%depend", + "%else", + "%endif", + "%endm", + "%endmacro", + "%endrep", + "%error", + "%exitmacro", + "%exitrep", + "%fatal", + "%include", + "%line", + "%local", + "%null", + "%pop", + "%pragma", + "%push", + "%rep", + "%repl", + "%require", + "%rotate", + "%stacksize", + "%undef", + "%undefalias", + "%use", + "%warning", + NULL, + "%assign", + "%iassign", + "%defalias", + "%idefalias", + "%define", + "%idefine", + "%defstr", + "%idefstr", + "%deftok", + "%ideftok", + "%macro", + "%imacro", + "%pathsearch", + "%ipathsearch", + "%rmacro", + "%irmacro", + "%strcat", + "%istrcat", + "%strlen", + "%istrlen", + "%substr", + "%isubstr", + "%xdefine", + "%ixdefine", + "%unmacro", + "%unimacro", +}; +const uint8_t pp_directives_len[120] = { + 3, + 6, + 6, + 11, + 7, + 8, + 6, + 5, + 6, + 7, + 8, + 6, + 6, + 8, + 9, + 8, + 4, + 7, + 7, + 12, + 8, + 9, + 7, + 6, + 7, + 8, + 9, + 7, + 7, + 9, + 10, + 9, + 5, + 8, + 8, + 13, + 9, + 10, + 8, + 7, + 8, + 9, + 10, + 8, + 8, + 10, + 11, + 10, + 6, + 9, + 9, + 14, + 10, + 11, + 9, + 8, + 9, + 10, + 11, + 9, + 9, + 11, + 12, + 11, + 8, + 4, + 6, + 7, + 5, + 6, + 5, + 9, + 7, + 6, + 10, + 8, + 6, + 8, + 5, + 6, + 5, + 4, + 7, + 5, + 4, + 5, + 8, + 7, + 10, + 6, + 11, + 4, + 8, + 9, + 7, + 8, + 9, + 10, + 7, + 8, + 7, + 8, + 7, + 8, + 6, + 7, + 11, + 12, + 7, + 8, + 7, + 8, + 7, + 8, + 7, + 8, + 8, + 9, + 8, + 9, +}; + +#define INVALID_HASH_ENTRY (65535/3) + + +/* Primary preprocessor token hash */ + +enum preproc_token pp_token_hash(const char *token) +{ + static const int16_t hashdata[512] = { + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 107, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 74, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 67, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 65, + -66, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 94, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 31, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 38, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 78, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 54, + 70, + INVALID_HASH_ENTRY, + 12, + 21, + 0, + 0, + 3, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 80, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 49, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -77, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 56, + INVALID_HASH_ENTRY, + 47, + INVALID_HASH_ENTRY, + 37, + 0, + INVALID_HASH_ENTRY, + 37, + 0, + INVALID_HASH_ENTRY, + -20, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 7, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 116, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -32, + 39, + INVALID_HASH_ENTRY, + 72, + INVALID_HASH_ENTRY, + 0, + 0, + 179, + -72, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 26, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -40, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 25, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 98, + 0, + 71, + INVALID_HASH_ENTRY, + 53, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 76, + INVALID_HASH_ENTRY, + 63, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 20, + INVALID_HASH_ENTRY, + 99, + INVALID_HASH_ENTRY, + 14, + 0, + -6, + 91, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 164, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 37, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 59, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 117, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 19, + INVALID_HASH_ENTRY, + 16, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 105, + INVALID_HASH_ENTRY, + 18, + -47, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 104, + 8, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 109, + INVALID_HASH_ENTRY, + 4, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 100, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -53, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 85, + INVALID_HASH_ENTRY, + 87, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 32, + 0, + 60, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 29, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -12, + 104, + 63, + INVALID_HASH_ENTRY, + 113, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 28, + 112, + 59, + INVALID_HASH_ENTRY, + -5, + 62, + INVALID_HASH_ENTRY, + 50, + 24, + 44, + INVALID_HASH_ENTRY, + 46, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 90, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 51, + -14, + 83, + 58, + INVALID_HASH_ENTRY, + 40, + INVALID_HASH_ENTRY, + 97, + 0, + INVALID_HASH_ENTRY, + 103, + 22, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 69, + INVALID_HASH_ENTRY, + -61, + INVALID_HASH_ENTRY, + 79, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 33, + INVALID_HASH_ENTRY, + 52, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 45, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 87, + 17, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 111, + -97, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 108, + 43, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 86, + 118, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -23, + 66, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 89, + INVALID_HASH_ENTRY, + 69, + INVALID_HASH_ENTRY, + 41, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 75, + 15, + -90, + 5, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 9, + INVALID_HASH_ENTRY, + 75, + INVALID_HASH_ENTRY, + 48, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 68, + -9, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 11, + -31, + INVALID_HASH_ENTRY, + 73, + INVALID_HASH_ENTRY, + 119, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 110, + INVALID_HASH_ENTRY, + 92, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + }; + uint32_t k1, k2; + uint64_t crc; + uint16_t ix; + + crc = crc64i(UINT64_C(0x076259c3e291c26c), token); + k1 = ((uint32_t)crc & 0x1fe) + 0; + k2 = ((uint32_t)(crc >> 32) & 0x1fe) + 1; + + ix = hashdata[k1] + hashdata[k2]; + if (ix >= 120) + return PP_invalid; + + if (!pp_directives[ix] || nasm_stricmp(pp_directives[ix], token)) + return PP_invalid; + + return ix; +} + + +/* TASM compatibility preprocessor token hash */ +enum preproc_token pp_tasm_token_hash(const char *token) +{ + static const int16_t hashdata[32] = { + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 69, + 0, + 83, + 32, + 2, + 0, + 0, + 77, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 79, + 68, + INVALID_HASH_ENTRY, + 63, + INVALID_HASH_ENTRY, + -65, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + }; + uint32_t k1, k2; + uint64_t crc; + uint16_t ix; + + crc = crc64i(UINT64_C(0x076259c3e291c26c), token); + k1 = ((uint32_t)crc & 0x1e) + 0; + k2 = ((uint32_t)(crc >> 32) & 0x1e) + 1; + + ix = hashdata[k1] + hashdata[k2]; + if (ix >= 120) + return PP_invalid; + + if (!pp_directives[ix] || nasm_stricmp(pp_directives[ix]+1, token)) + return PP_invalid; + + return ix; +} diff --git a/vere/ext/nasm/asm/pptok.dat b/vere/ext/nasm/asm/pptok.dat new file mode 100644 index 0000000..2114497 --- /dev/null +++ b/vere/ext/nasm/asm/pptok.dat @@ -0,0 +1,117 @@ +## -------------------------------------------------------------------------- +## +## Copyright 1996-2019 The NASM Authors - All Rights Reserved +## See the file AUTHORS included with the NASM distribution for +## the specific copyright holders. +## +## 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. +## +## -------------------------------------------------------------------------- + +# +# A * at the end indicates a condition; the list of conditions are +# on lines starting with *; the negatives are auto-generated +# + +# Condition stems. %if MUST BE FIRST in this list. +%if* +%elif* + +# Condition tests. +* +*ctx +*def +*defalias +*difi +*empty +*env +*id +*idn +*idni +*macro +*num +*str +*token +*usable +*using + +# Directives with -i- versions for case insensitive +%!assign +%!defalias +%!define +%!defstr +%!deftok +%!macro +%!pathsearch +%!rmacro +%!strcat +%!strlen +%!substr +%!xdefine +%un!macro + +# Other directives +%aliases +%arg +%clear +%depend +%else +%endif +%endm +%endmacro +%endrep +%error +%exitmacro +%exitrep +%fatal +%include +%line +%local +%null +%pop +%pragma +%push +%rep +%repl +%require +%rotate +%stacksize +%undef +%undefalias +%use +%warning + +# These directives do not require % in TASM-compatible mode +@arg +@elif +@else +@endif +@if +@ifdef +@ifdifi +@ifndef +@include +@local diff --git a/vere/ext/nasm/asm/pptok.h b/vere/ext/nasm/asm/pptok.h new file mode 100644 index 0000000..aead8b5 --- /dev/null +++ b/vere/ext/nasm/asm/pptok.h @@ -0,0 +1,202 @@ +/* Automatically generated from ./asm/pptok.dat by ./asm/pptok.pl */ +/* Do not edit */ + +enum preproc_token { + PP_IF = 0, + PP_IFCTX = 1, + PP_IFDEF = 2, + PP_IFDEFALIAS = 3, + PP_IFDIFI = 4, + PP_IFEMPTY = 5, + PP_IFENV = 6, + PP_IFID = 7, + PP_IFIDN = 8, + PP_IFIDNI = 9, + PP_IFMACRO = 10, + PP_IFNUM = 11, + PP_IFSTR = 12, + PP_IFTOKEN = 13, + PP_IFUSABLE = 14, + PP_IFUSING = 15, + PP_IFN = 16, + PP_IFNCTX = 17, + PP_IFNDEF = 18, + PP_IFNDEFALIAS = 19, + PP_IFNDIFI = 20, + PP_IFNEMPTY = 21, + PP_IFNENV = 22, + PP_IFNID = 23, + PP_IFNIDN = 24, + PP_IFNIDNI = 25, + PP_IFNMACRO = 26, + PP_IFNNUM = 27, + PP_IFNSTR = 28, + PP_IFNTOKEN = 29, + PP_IFNUSABLE = 30, + PP_IFNUSING = 31, + PP_ELIF = 32, + PP_ELIFCTX = 33, + PP_ELIFDEF = 34, + PP_ELIFDEFALIAS = 35, + PP_ELIFDIFI = 36, + PP_ELIFEMPTY = 37, + PP_ELIFENV = 38, + PP_ELIFID = 39, + PP_ELIFIDN = 40, + PP_ELIFIDNI = 41, + PP_ELIFMACRO = 42, + PP_ELIFNUM = 43, + PP_ELIFSTR = 44, + PP_ELIFTOKEN = 45, + PP_ELIFUSABLE = 46, + PP_ELIFUSING = 47, + PP_ELIFN = 48, + PP_ELIFNCTX = 49, + PP_ELIFNDEF = 50, + PP_ELIFNDEFALIAS = 51, + PP_ELIFNDIFI = 52, + PP_ELIFNEMPTY = 53, + PP_ELIFNENV = 54, + PP_ELIFNID = 55, + PP_ELIFNIDN = 56, + PP_ELIFNIDNI = 57, + PP_ELIFNMACRO = 58, + PP_ELIFNNUM = 59, + PP_ELIFNSTR = 60, + PP_ELIFNTOKEN = 61, + PP_ELIFNUSABLE = 62, + PP_ELIFNUSING = 63, + PP_ALIASES = 64, + PP_ARG = 65, + PP_CLEAR = 66, + PP_DEPEND = 67, + PP_ELSE = 68, + PP_ENDIF = 69, + PP_ENDM = 70, + PP_ENDMACRO = 71, + PP_ENDREP = 72, + PP_ERROR = 73, + PP_EXITMACRO = 74, + PP_EXITREP = 75, + PP_FATAL = 76, + PP_INCLUDE = 77, + PP_LINE = 78, + PP_LOCAL = 79, + PP_NULL = 80, + PP_POP = 81, + PP_PRAGMA = 82, + PP_PUSH = 83, + PP_REP = 84, + PP_REPL = 85, + PP_REQUIRE = 86, + PP_ROTATE = 87, + PP_STACKSIZE = 88, + PP_UNDEF = 89, + PP_UNDEFALIAS = 90, + PP_USE = 91, + PP_WARNING = 92, + PP_CASE_PAD = 93, + PP_ASSIGN = 94, + PP_IASSIGN = 95, + PP_DEFALIAS = 96, + PP_IDEFALIAS = 97, + PP_DEFINE = 98, + PP_IDEFINE = 99, + PP_DEFSTR = 100, + PP_IDEFSTR = 101, + PP_DEFTOK = 102, + PP_IDEFTOK = 103, + PP_MACRO = 104, + PP_IMACRO = 105, + PP_PATHSEARCH = 106, + PP_IPATHSEARCH = 107, + PP_RMACRO = 108, + PP_IRMACRO = 109, + PP_STRCAT = 110, + PP_ISTRCAT = 111, + PP_STRLEN = 112, + PP_ISTRLEN = 113, + PP_SUBSTR = 114, + PP_ISUBSTR = 115, + PP_XDEFINE = 116, + PP_IXDEFINE = 117, + PP_UNMACRO = 118, + PP_UNIMACRO = 119, + PP_count = 120, + PP_invalid = -1 +}; + +#define PP_COND(x) ((x) & 0xf) +#define PP_IS_COND(x) ((unsigned int)(x) < PP_ALIASES) +#define PP_COND_NEGATIVE(x) (!!((x) & 0x10)) + +#define PP_HAS_CASE(x) ((x) >= PP_ASSIGN) +#define PP_INSENSITIVE(x) ((x) & 1) +#define PP_TOKLEN_MAX 14 + +#define CASE_PP_IF \ + case PP_IF:\ + case PP_IFCTX:\ + case PP_IFDEF:\ + case PP_IFDEFALIAS:\ + case PP_IFDIFI:\ + case PP_IFEMPTY:\ + case PP_IFENV:\ + case PP_IFID:\ + case PP_IFIDN:\ + case PP_IFIDNI:\ + case PP_IFMACRO:\ + case PP_IFNUM:\ + case PP_IFSTR:\ + case PP_IFTOKEN:\ + case PP_IFUSABLE:\ + case PP_IFUSING:\ + case PP_IFN:\ + case PP_IFNCTX:\ + case PP_IFNDEF:\ + case PP_IFNDEFALIAS:\ + case PP_IFNDIFI:\ + case PP_IFNEMPTY:\ + case PP_IFNENV:\ + case PP_IFNID:\ + case PP_IFNIDN:\ + case PP_IFNIDNI:\ + case PP_IFNMACRO:\ + case PP_IFNNUM:\ + case PP_IFNSTR:\ + case PP_IFNTOKEN:\ + case PP_IFNUSABLE:\ + case PP_IFNUSING +#define CASE_PP_ELIF \ + case PP_ELIF:\ + case PP_ELIFCTX:\ + case PP_ELIFDEF:\ + case PP_ELIFDEFALIAS:\ + case PP_ELIFDIFI:\ + case PP_ELIFEMPTY:\ + case PP_ELIFENV:\ + case PP_ELIFID:\ + case PP_ELIFIDN:\ + case PP_ELIFIDNI:\ + case PP_ELIFMACRO:\ + case PP_ELIFNUM:\ + case PP_ELIFSTR:\ + case PP_ELIFTOKEN:\ + case PP_ELIFUSABLE:\ + case PP_ELIFUSING:\ + case PP_ELIFN:\ + case PP_ELIFNCTX:\ + case PP_ELIFNDEF:\ + case PP_ELIFNDEFALIAS:\ + case PP_ELIFNDIFI:\ + case PP_ELIFNEMPTY:\ + case PP_ELIFNENV:\ + case PP_ELIFNID:\ + case PP_ELIFNIDN:\ + case PP_ELIFNIDNI:\ + case PP_ELIFNMACRO:\ + case PP_ELIFNNUM:\ + case PP_ELIFNSTR:\ + case PP_ELIFNTOKEN:\ + case PP_ELIFNUSABLE:\ + case PP_ELIFNUSING diff --git a/vere/ext/nasm/asm/pptok.pl b/vere/ext/nasm/asm/pptok.pl new file mode 100755 index 0000000..0b8ef25 --- /dev/null +++ b/vere/ext/nasm/asm/pptok.pl @@ -0,0 +1,353 @@ +#!/usr/bin/perl +## -------------------------------------------------------------------------- +## +## Copyright 1996-2022 The NASM Authors - All Rights Reserved +## See the file AUTHORS included with the NASM distribution for +## the specific copyright holders. +## +## 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. +## +## -------------------------------------------------------------------------- + +# +# Produce pptok.c, pptok.h and pptok.ph from pptok.dat +# + +require 'phash.ph'; + +my($what, $in, $out) = @ARGV; + +# +# Read pptok.dat +# +open(IN, '<', $in) or die "$0: cannot open: $in\n"; +while (defined($line = )) { + $line =~ s/\r?\n$//; # Remove trailing \r\n or \n + $line =~ s/^\s+//; # Remove leading whitespace + $line =~ s/\s*\#.*$//; # Remove comments and trailing whitespace + next if ($line eq ''); + + if ($line =~ /^\%(.*)\*$/) { + # Condition stem + push(@cctok, $1); + } elsif ($line =~ /^\%(.*\!.*)$/) { + # Directive with case insensitity "i" option + # Mnemonic: ! is "upside down i" + push(@ppitok, $1); + } elsif ($line =~ /^\%(.*)$/) { + # Other directive + push(@pptok, $1); + } elsif ($line =~ /^\*(.*)$/) { + # Condition tail + push(@cond, $1); + } elsif ($line =~ /^\@(.*)$/) { + # TASM compatibility directive + push(@tasm, $1); + } +} +close(IN); + +# Always sort %if first +@cctok = sort { $a eq 'if' ? -1 : $b eq 'if' ? 1 : $a cmp $b } @cctok; +@cond = sort @cond; +@pptok = sort @pptok; +@ppitok = sort @ppitok; +@tasm = sort @tasm; + +# Generate the expanded list including conditionals. The conditionals +# are at the beginning, padded to a power of 2, with the inverses +# following each group; this allows a simple mask to pick out the condition, +# polarity, and directive type. + +while ((scalar @cond) & (scalar @cond)-1) { + push(@cond, sprintf("_COND_%d", scalar @cond)); +} + +@cptok = (); +foreach $ct (@cctok) { + foreach $cc (@cond) { + push(@cptok, $ct.$cc); + } + foreach $cc (@cond) { + push(@cptok, $ct.'n'.$cc); + } +} +$first_uncond = scalar @cptok; +@pptok = (@cptok, @pptok); + +# Generate the list of case-specific tokens; these are in pairs +# with the -i- variant following the plain variant +if (scalar(@pptok) & 1) { + push(@pptok, 'CASE_PAD'); +} + +$first_itoken = scalar @pptok; +foreach $it (@ppitok) { + (my $at = $it) =~ s/\!//; + (my $bt = $it) =~ s/\!/i/; + + push(@pptok, $at, $bt); +} + +open(OUT, '>', $out) or die "$0: cannot open: $out\n"; + +# +# Output pptok.h +# +if ($what eq 'h') { + print OUT "/* Automatically generated from $in by $0 */\n"; + print OUT "/* Do not edit */\n"; + print OUT "\n"; + + print OUT "enum preproc_token {\n"; + $n = 0; + my $maxlen = 0; + foreach $pt (@pptok) { + if (defined($pt)) { + printf OUT " %-24s = %3d,\n", "PP_\U$pt\E", $n; + $maxlen = length($pt) if (length($pt) > $maxlen); + } + $n++; + } + printf OUT " %-24s = %3d,\n", 'PP_count', $n; + printf OUT " %-24s = %3d\n", 'PP_invalid', -1; + print OUT "};\n"; + print OUT "\n"; + + printf OUT "#define PP_COND(x) ((x) & 0x%x)\n", + (scalar(@cond)-1); + printf OUT "#define PP_IS_COND(x) ((unsigned int)(x) < PP_%s)\n", + uc($pptok[$first_uncond]); + printf OUT "#define PP_COND_NEGATIVE(x) (!!((x) & 0x%x))\n", scalar(@cond); + print OUT "\n"; + printf OUT "#define PP_HAS_CASE(x) ((x) >= PP_%s)\n", + uc($pptok[$first_itoken]); + print OUT "#define PP_INSENSITIVE(x) ((x) & 1)\n"; + # The +1 here is for the initial % sign + printf OUT "#define PP_TOKLEN_MAX %d\n", $maxlen+1; + print OUT "\n"; + + foreach $ct (@cctok) { + print OUT "#define CASE_PP_\U$ct\E"; + $pref = " \\\n"; + foreach $cc (@cond) { + print OUT "$pref\tcase PP_\U${ct}${cc}\E"; + $pref = ":\\\n"; + } + foreach $cc (@cond) { + print OUT "$pref\tcase PP_\U${ct}N${cc}\E"; + $pref = ":\\\n"; + } + print OUT "\n"; # No colon or newline on the last one + } +} + +# +# Output pptok.c +# +if ($what eq 'c') { + print OUT "/* Automatically generated from $in by $0 */\n"; + print OUT "/* Do not edit */\n"; + print OUT "\n"; + + print OUT "#include \"compiler.h\"\n"; + print OUT "#include \"nctype.h\"\n"; + print OUT "#include \"nasmlib.h\"\n"; + print OUT "#include \"hashtbl.h\"\n"; + print OUT "#include \"preproc.h\"\n"; + print OUT "\n"; + + # Note that this is global. + printf OUT "const char * const pp_directives[%d] = {\n", scalar(@pptok); + foreach $d (@pptok) { + if (defined($d) && $d !~ /[A-Z]/) { + print OUT " \"%$d\",\n"; + } else { + print OUT " NULL,\n"; + } + } + print OUT "};\n"; + + printf OUT "const uint8_t pp_directives_len[%d] = {\n", scalar(@pptok); + foreach $d (@pptok) { + printf OUT " %d,\n", defined($d) ? length($d)+1 : 0; + } + print OUT "};\n"; + + # Put a large value in unused hash slots. This makes it extremely + # unlikely that any combination that involves unused slot will + # pass the range test. This speeds up rejection of unrecognized + # tokens, i.e. identifiers. + print OUT "\n#define INVALID_HASH_ENTRY (65535/3)\n"; + + my %tokens = (); + my @tokendata = (); + + my $n = 0; + foreach $pt (@pptok) { + # Upper case characters signify internal use tokens only + if (defined($pt) && $pt !~ /[A-Z]/) { + $tokens{'%'.$pt} = $n; + if ($pt =~ /[\@\[\]\\_]/) { + # Fail on characters which look like upper-case letters + # to the quick-and-dirty downcasing in the prehash + # (see below) + die "$in: invalid character in token: $pt"; + } + } + $n++; + } + + my @hashinfo = gen_perfect_hash(\%tokens); + if (!@hashinfo) { + die "$0: no hash found\n"; + } + + # Paranoia... + verify_hash_table(\%tokens, \@hashinfo); + + ($n, $sv, $g) = @hashinfo; + die if ($n & ($n-1)); + $n <<= 1; + + + print OUT "\n\n/* Primary preprocessor token hash */\n\n"; + + print OUT "enum preproc_token pp_token_hash(const char *token)\n"; + print OUT "{\n"; + print OUT " static const int16_t hashdata[$n] = {\n"; + for ($i = 0; $i < $n; $i++) { + my $h = ${$g}[$i]; + print OUT " ", defined($h) ? $h : 'INVALID_HASH_ENTRY', ",\n"; + } + print OUT " };\n"; + print OUT " uint32_t k1, k2;\n"; + print OUT " uint64_t crc;\n"; + # For correct overflow behavior, "ix" should be unsigned of the same + # width as the hash arrays. + print OUT " uint16_t ix;\n"; + print OUT "\n"; + + printf OUT " crc = crc64i(UINT64_C(0x%08x%08x), token);\n", + $$sv[0], $$sv[1]; + printf OUT " k1 = ((uint32_t)crc & 0x%x) + 0;\n", $n-2; + printf OUT " k2 = ((uint32_t)(crc >> 32) & 0x%x) + 1;\n", $n-2; + print OUT "\n"; + print OUT " ix = hashdata[k1] + hashdata[k2];\n"; + printf OUT " if (ix >= %d)\n", scalar(@pptok); + print OUT " return PP_invalid;\n"; + print OUT "\n"; + + print OUT " if (!pp_directives[ix] || nasm_stricmp(pp_directives[ix], token))\n"; + print OUT " return PP_invalid;\n"; + print OUT "\n"; + print OUT " return ix;\n"; + print OUT "}\n"; + + my %tasmtokens = (); + foreach $pt (@tasm) { + # TASM compatibility token + $nasmt = '%'.$pt; + if (!defined($tokens{$nasmt})) { + die "$in: TASM compat token $pt does not have a ". + "corresponding $nasmt\n"; + } + $tasmtokens{$pt} = $tokens{$nasmt}; + } + + @hashinfo = gen_perfect_hash(\%tasmtokens); + if (!@hashinfo) { + die "$0: no hash found\n"; + } + + # Paranoia... + verify_hash_table(\%tasmtokens, \@hashinfo); + + ($n, $sv, $g) = @hashinfo; + die if ($n & ($n-1)); + $n <<= 1; + + print OUT "\n\n/* TASM compatibility preprocessor token hash */\n"; + + print OUT "enum preproc_token pp_tasm_token_hash(const char *token)\n"; + print OUT "{\n"; + print OUT " static const int16_t hashdata[$n] = {\n"; + for ($i = 0; $i < $n; $i++) { + my $h = ${$g}[$i]; + print OUT " ", defined($h) ? $h : 'INVALID_HASH_ENTRY', ",\n"; + } + print OUT " };\n"; + print OUT " uint32_t k1, k2;\n"; + print OUT " uint64_t crc;\n"; + # For correct overflow behavior, "ix" should be unsigned of the same + # width as the hash arrays. + print OUT " uint16_t ix;\n"; + print OUT "\n"; + + printf OUT " crc = crc64i(UINT64_C(0x%08x%08x), token);\n", + $$sv[0], $$sv[1]; + printf OUT " k1 = ((uint32_t)crc & 0x%x) + 0;\n", $n-2; + printf OUT " k2 = ((uint32_t)(crc >> 32) & 0x%x) + 1;\n", $n-2; + print OUT "\n"; + printf OUT " ix = hashdata[k1] + hashdata[k2];\n", $n-1, $n-1; + # Comparing to pptok here is correct, because this hash produces + # an enum preproc_token value directly. + printf OUT " if (ix >= %d)\n", scalar(@pptok); + print OUT " return PP_invalid;\n"; + print OUT "\n"; + + print OUT " if (!pp_directives[ix] || nasm_stricmp(pp_directives[ix]+1, token))\n"; + print OUT " return PP_invalid;\n"; + print OUT "\n"; + print OUT " return ix;\n"; + print OUT "}\n"; +} + +# +# Output pptok.ph +# +if ($what eq 'ph') { + print OUT "# Automatically generated from $in by $0\n"; + print OUT "# Do not edit\n"; + + print OUT "\n\%pptok_hash = (\n"; + $n = 0; + foreach $tok (@pptok) { + if (defined($tok)) { + printf OUT " '%%%s' => %d,\n", $tok, $n; + } + $n++; + } + print OUT ");\n"; + + print OUT "\n\@pptok_list = (\n"; + foreach $tok (@pptok) { + print OUT " ", (defined($tok) ? "'\%$tok'" : 'undef'), ",\n"; + } + print OUT ");\n"; + + print OUT "\n1;\n"; +} diff --git a/vere/ext/nasm/asm/pragma.c b/vere/ext/nasm/asm/pragma.c new file mode 100644 index 0000000..0049c06 --- /dev/null +++ b/vere/ext/nasm/asm/pragma.c @@ -0,0 +1,369 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2019 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * Parse and handle [pragma] directives. The preprocessor handles + * %pragma preproc directives separately, all other namespaces are + * simply converted to [pragma]. + */ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "assemble.h" +#include "error.h" +#include "listing.h" + +static enum directive_result ignore_pragma(const struct pragma *pragma); +static enum directive_result output_pragma(const struct pragma *pragma); +static enum directive_result debug_pragma(const struct pragma *pragma); +static enum directive_result limit_pragma(const struct pragma *pragma); + +/* + * Handle [pragma] directives. [pragma] is generally produced by + * the %pragma preprocessor directive, which simply passes on any + * string that it finds *except* %pragma preproc. The idea is + * that pragmas are of the form: + * + * %pragma [...] + * + * ... where "facility" can be either a generic facility or a backend + * name. + * + * The following names are currently reserved for global facilities; + * so far none of these have any defined pragmas at all: + * + * preproc - preprocessor + * limit - limit setting + * asm - assembler + * list - listing generator + * file - generic file handling + * input - input file handling + * output - backend-independent output handling + * debug - backend-independent debug handling + * ignore - dummy pragma (can be used to "comment out") + * + * This function should generally not error out if it doesn't understand + * what a pragma is for, for unknown arguments, etc; the whole point of + * a pragma is that future releases might add new ones that should be + * ignored rather than be an error. Erroring out is acceptable for + * known pragmas suffering from parsing errors and so on. + * + * Adding default-suppressed warnings would, however, be a good idea + * at some point. + */ +static struct pragma_facility global_pragmas[] = +{ + { "asm", NULL }, + { "limit", limit_pragma }, + { "list", list_pragma }, + { "file", NULL }, + { "input", NULL }, + { "output", output_pragma }, + { "debug", debug_pragma }, + { "ignore", ignore_pragma }, + + /* This will never actually get this far... */ + { "preproc", NULL }, /* Handled in the preprocessor by necessity */ + { NULL, NULL } +}; + +/* + * Invoke a pragma handler + */ +static enum directive_result +call_pragma(const struct pragma_facility *pf, struct pragma *pragma) +{ + if (!pf || !pf->handler) + return DIRR_UNKNOWN; + + pragma->facility = pf; + return pf->handler(pragma); +} + +/* + * Search a pragma list for a known pragma facility and if so, invoke + * the handler. Return true if processing is complete. The "default + * name", *or def->name*, if set, matches the final NULL entry (used + * for backends, so multiple backends can share the same list under + * some circumstances, and the backends can implement common operations.) + */ +static enum directive_result +search_pragma_list(const struct pragma_facility *list, + const char *defaultname, + const struct pragma_facility *def, + const struct pragma *cpragma) +{ + const struct pragma_facility *pf = NULL; + enum directive_result rv; + bool facility_match, is_default; + struct pragma pragma = *cpragma; + const char *facname = pragma.facility_name; + + /* Is there a default facility and we match its name? */ + is_default = def && def->name && !nasm_stricmp(facname, def->name); + facility_match = is_default; + + /* + * Promote def->name to defaultname if both are set. This handles + * e.g. output -> elf32 so that we can handle elf32-specific + * directives in that handler. + */ + if (defaultname) { + if (is_default) + facname = defaultname; + else + facility_match = !nasm_stricmp(facname, defaultname); + } + + if (facname && list) { + for (pf = list; pf->name; pf++) { + if (!nasm_stricmp(facname, pf->name)) { + facility_match = true; + rv = call_pragma(pf, &pragma); + if (rv != DIRR_UNKNOWN) + goto found_it; + } + } + + if (facility_match) { + /* + * Facility name match but no matching directive; handler in NULL + * entry at end of list? + */ + rv = call_pragma(pf, &pragma); + if (rv != DIRR_UNKNOWN) + goto found_it; + } + } + + if (facility_match) { + /* + * Facility match but still nothing: def->handler if it exists + */ + rv = call_pragma(def, &pragma); + } else { + /* + * No facility matched + */ + return DIRR_UNKNOWN; + } + + /* + * Otherwise we found the facility but not any supported directive, + * fall through... + */ + +found_it: + switch (rv) { + case DIRR_UNKNOWN: + switch (pragma.opcode) { + case D_none: + /*! + *!pragma-bad [off] malformed %pragma + *!=bad-pragma + *! warns about a malformed or otherwise unparsable + *! \c{%pragma} directive. + */ + nasm_warn(ERR_PASS2|WARN_PRAGMA_BAD, + "empty %%pragma %s", pragma.facility_name); + break; + default: + /*! + *!pragma-unknown [off] unknown %pragma facility or directive + *!=unknown-pragma + *! warns about an unknown \c{%pragma} directive. + *! This is not yet implemented for most cases. + */ + nasm_warn(ERR_PASS2|WARN_PRAGMA_UNKNOWN, + "unknown %%pragma %s %s", + pragma.facility_name, pragma.opname); + break; + } + rv = DIRR_ERROR; /* Already printed an error message */ + break; + + case DIRR_OK: + case DIRR_ERROR: + break; /* Nothing to do */ + + case DIRR_BADPARAM: + /* + * This one is an error. Don't use it if forward compatibility + * would be compromised, as opposed to an inherent error. + */ + nasm_error(ERR_NONFATAL, "bad argument to %%pragma %s %s", + pragma.facility_name, pragma.opname); + break; + + default: + panic(); + } + return rv; +} + +/* This warning message is intended for future use */ +/*! + *!pragma-na [off] %pragma not applicable to this compilation + *!=not-my-pragma + *! warns about a \c{%pragma} directive which is not applicable to + *! this particular assembly session. This is not yet implemented. + */ + +/* Naked %pragma */ +/*! + *!pragma-empty [off] empty %pragma directive + *! warns about a \c{%pragma} directive containing nothing. + *! This is treated identically to \c{%pragma ignore} except + *! for this optional warning. + */ +void process_pragma(char *str) +{ + const struct pragma_facility *pf; + struct pragma pragma; + char *p; + + nasm_zero(pragma); + + pragma.facility_name = nasm_get_word(str, &p); + if (!pragma.facility_name) { + /* Empty %pragma */ + nasm_warn(ERR_PASS2|WARN_PRAGMA_EMPTY, + "empty %%pragma directive, ignored"); + return; + } + + pragma.opname = nasm_get_word(p, &p); + if (!pragma.opname) + pragma.opcode = D_none; + else + pragma.opcode = directive_find(pragma.opname); + + pragma.tail = nasm_trim_spaces(p); + + /* + * Search the global pragma namespaces. This is done + * as a loop rather than letting search_pragma_list() + * just run, because we don't want to keep searching if + * we have a facility match, thus we want to call + * search_pragma_list() individually for each namespace. + */ + for (pf = global_pragmas; pf->name; pf++) { + if (search_pragma_list(NULL, NULL, pf, &pragma) != DIRR_UNKNOWN) + return; + } + + /* Is it an output pragma? */ + if (output_pragma(&pragma) != DIRR_UNKNOWN) + return; + + /* Is it a debug pragma */ + if (debug_pragma(&pragma) != DIRR_UNKNOWN) + return; + + /* + * Note: it would be nice to warn for an unknown namespace, + * but in order to do so we need to walk *ALL* the backends + * in order to make sure we aren't dealing with a pragma that + * is for another backend. On the other hand, that could + * also be a warning with a separate warning flag. + * + * Leave this for the future, however, the warning classes are + * already defined for future compatibility. + */ +} + +/* %pragma ignore */ +static enum directive_result ignore_pragma(const struct pragma *pragma) +{ + (void)pragma; + return DIRR_OK; /* Even for D_none! */ +} + +/* + * Process output and debug pragmas, by either list name or generic + * name. Note that the output/debug format list can hook the default + * names if they so choose. + */ +static enum directive_result output_pragma_common(const struct pragma *); +static enum directive_result output_pragma(const struct pragma *pragma) +{ + static const struct pragma_facility + output_pragma_def = { "output", output_pragma_common }; + + return search_pragma_list(ofmt->pragmas, ofmt->shortname, + &output_pragma_def, pragma); +} + +/* Generic pragmas that apply to all output backends */ +static enum directive_result output_pragma_common(const struct pragma *pragma) +{ + switch (pragma->opcode) { + case D_PREFIX: + case D_GPREFIX: + set_label_mangle(LM_GPREFIX, pragma->tail); + return DIRR_OK; + case D_SUFFIX: + case D_GSUFFIX: + set_label_mangle(LM_GSUFFIX, pragma->tail); + return DIRR_OK; + case D_LPREFIX: + set_label_mangle(LM_LPREFIX, pragma->tail); + return DIRR_OK; + case D_LSUFFIX: + set_label_mangle(LM_LSUFFIX, pragma->tail); + return DIRR_OK; + default: + return DIRR_UNKNOWN; + } +} + +static enum directive_result debug_pragma(const struct pragma *pragma) +{ + static const struct pragma_facility + debug_pragma_def = { "debug", NULL }; + + return search_pragma_list(dfmt->pragmas, dfmt->shortname, + &debug_pragma_def, pragma); +} + +/* + * %pragma limit to set resource limits + */ +static enum directive_result limit_pragma(const struct pragma *pragma) +{ + return nasm_set_limit(pragma->opname, pragma->tail); +} diff --git a/vere/ext/nasm/asm/preproc.c b/vere/ext/nasm/asm/preproc.c new file mode 100644 index 0000000..ac42131 --- /dev/null +++ b/vere/ext/nasm/asm/preproc.c @@ -0,0 +1,8070 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2022 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * preproc.c macro preprocessor for the Netwide Assembler + */ + +/* Typical flow of text through preproc + * + * pp_getline gets tokenized lines, either + * + * from a macro expansion + * + * or + * { + * read_line gets raw text from stdmacpos, or predef, or current input file + * tokenize converts to tokens + * } + * + * expand_mmac_params is used to expand %1 etc., unless a macro is being + * defined or a false conditional is being processed + * (%0, %1, %+1, %-1, %%foo + * + * do_directive checks for directives + * + * expand_smacro is used to expand single line macros + * + * expand_mmacro is used to expand multi-line macros + * + * detoken is used to convert the line back to text + */ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "preproc.h" +#include "hashtbl.h" +#include "quote.h" +#include "stdscan.h" +#include "eval.h" +#include "tokens.h" +#include "tables.h" +#include "listing.h" +#include "dbginfo.h" + +/* + * Preprocessor execution options that can be controlled by %pragma or + * other directives. This structure is initialized to zero on each + * pass; this *must* reflect the default initial state. + */ +static struct pp_config { + bool noaliases; + bool sane_empty_expansion; +} ppconf; + +/* + * Preprocessor debug-related flags + */ +static enum pp_debug_flags { + PDBG_MMACROS = 1, /* Collect mmacro information */ + PDBG_SMACROS = 2, /* Collect smacro information */ + PDBG_LIST_SMACROS = 4, /* Smacros to list file (list option 's') */ + PDBG_INCLUDE = 8 /* Collect %include information */ +} ppdbg; + +/* + * Preprocessor options configured on the command line + */ +static enum preproc_opt ppopt; + +typedef struct SMacro SMacro; +typedef struct MMacro MMacro; +typedef struct Context Context; +typedef struct Token Token; +typedef struct Line Line; +typedef struct Include Include; +typedef struct Cond Cond; + +/* + * Map of preprocessor directives that are also preprocessor functions; + * if they are at the beginning of a line they are a function if and + * only if they are followed by a ( + */ +static bool pp_op_may_be_function[PP_count]; + +/* + * This is the internal form which we break input lines up into. + * Typically stored in linked lists. + * + * Note that `type' serves a double meaning: TOKEN_SMAC_START_PARAMS is + * not necessarily used as-is, but is also used to encode the number + * and expansion type of substituted parameter. So in the definition + * + * %define a(x,=y) ( (x) & ~(y) ) + * + * the token representing `x' will have its type changed to + * tok_smac_param(0) but the one representing `y' will be + * tok_smac_param(1); see the accessor functions below. + * + * TOKEN_INTERNAL_STR is a string which has been unquoted, but should + * be treated as if it was a quoted string. The code is free to change + * one into the other at will. TOKEN_NAKED_STR is a text token which + * should be treated as a string, but which MUST NOT be turned into a + * quoted string. TOKEN_INTERNAL_STRs can contain any character, + * including NUL, but TOKEN_NAKED_STR must be a valid C string. + */ + +static inline enum token_type tok_smac_param(int param) +{ + return TOKEN_SMAC_START_PARAMS + param; +} +static int smac_nparam(enum token_type toktype) +{ + return toktype - TOKEN_SMAC_START_PARAMS; +} +static bool is_smac_param(enum token_type toktype) +{ + return toktype >= TOKEN_SMAC_START_PARAMS; +} + +/* + * This is tuned so struct Token should be 64 bytes on 64-bit + * systems and 32 bytes on 32-bit systems. It enables them + * to be nicely cache aligned, and the text to still be kept + * inline for nearly all tokens. + * + * We prohibit tokens of length > MAX_TEXT even though + * length here is an unsigned int; this avoids problems + * if the length is passed through an interface with type "int", + * and is absurdly large anyway. + * + * Earlier versions of the source code incorrectly stated that + * examining the text string alone can be unconditionally valid. This + * is incorrect, as some token types strip parts of the string, + * e.g. indirect tokens. + */ +#define INLINE_TEXT (7*sizeof(char *)-sizeof(enum token_type)-sizeof(unsigned int)-1) +#define MAX_TEXT (INT_MAX-2) + +struct Token { + Token *next; + enum token_type type; + unsigned int len; + union { + char a[INLINE_TEXT+1]; + struct { + char pad[INLINE_TEXT+1 - sizeof(char *)]; + char *ptr; + } p; + } text; +}; + +/* + * Note on the storage of both SMacro and MMacros: the hash table + * indexes them case-insensitively, and we then have to go through a + * linked list of potential case aliases (and, for MMacros, parameter + * ranges); this is to preserve the matching semantics of the earlier + * code. If the number of case aliases for a specific macro is a + * performance issue, you may want to reconsider your coding style. + */ + +/* + * Function call tp obtain the expansion of an smacro + */ +typedef Token *(*ExpandSMacro)(const SMacro *s, Token **params, int nparams); + +/* + * Store the definition of a single-line macro. + * + * Note: for user-defined macros, SPARM_VARADIC and SPARM_DEFAULT are + * currently never set, and SPARM_OPTIONAL is set if and only + * if SPARM_GREEDY is set. + */ +enum sparmflags { + SPARM_PLAIN = 0, + SPARM_EVAL = 1, /* Evaluate as a numeric expression (=) */ + SPARM_STR = 2, /* Convert to quoted string ($) */ + SPARM_NOSTRIP = 4, /* Don't strip braces (!) */ + SPARM_GREEDY = 8, /* Greedy final parameter (+) */ + SPARM_VARADIC = 16, /* Any number of separate arguments */ + SPARM_OPTIONAL = 32, /* Optional argument */ + SPARM_CONDQUOTE = 64 /* With SPARM_STR, don't re-quote a string */ +}; + +struct smac_param { + Token name; + enum sparmflags flags; + const Token *def; /* Default, if any */ +}; + +struct SMacro { + SMacro *next; /* MUST BE FIRST - see free_smacro() */ + char *name; + Token *expansion; + ExpandSMacro expand; + intorptr expandpvt; + struct smac_param *params; + int nparam; /* length of the params structure */ + int nparam_min; /* allows < nparam arguments */ + int in_progress; + bool recursive; + bool varadic; /* greedy or supports > nparam arguments */ + bool casesense; + bool alias; /* This is an alias macro */ +}; + +/* + * "No listing" flags. Inside a loop (%rep..%endrep) we may have + * macro listing suppressed with .nolist, but we still need to + * update line numbers for error messages and debug information... + * unless we are nested inside an actual .nolist macro. + */ +enum nolist_flags { + NL_LIST = 1, /* Suppress list output */ + NL_LINE = 2 /* Don't update line information */ +}; + +/* + * Store the definition of a multi-line macro. This is also used to + * store the interiors of `%rep...%endrep' blocks, which are + * effectively self-re-invoking multi-line macros which simply + * don't have a name or bother to appear in the hash tables. %rep + * blocks are signified by having a NULL `name' field. + * + * In a MMacro describing a `%rep' block, the `in_progress' field + * isn't merely boolean, but gives the number of repeats left to + * run. + * + * The `next' field is used for storing MMacros in hash tables; the + * `next_active' field is for stacking them on istk entries. + * + * When a MMacro is being expanded, `params', `iline', `nparam', + * `paramlen', `rotate' and `unique' are local to the invocation. + */ + +/* + * Expansion stack. Note that .mmac can point back to the macro itself, + * whereas .mstk cannot. + */ +struct mstk { + MMacro *mstk; /* Any expansion, real macro or not */ + MMacro *mmac; /* Highest level actual mmacro */ +}; + +struct MMacro { + MMacro *next; +#if 0 + MMacroInvocation *prev; /* previous invocation */ +#endif + char *name; + int nparam_min, nparam_max; + enum nolist_flags nolist; /* is this macro listing-inhibited? */ + bool casesense; + bool plus; /* is the last parameter greedy? */ + bool capture_label; /* macro definition has %00; capture label */ + int32_t in_progress; /* is this macro currently being expanded? */ + int32_t max_depth; /* maximum number of recursive expansions allowed */ + Token *dlist; /* All defaults as one list */ + Token **defaults; /* Parameter default pointers */ + int ndefs; /* number of default parameters */ + Line *expansion; + + struct mstk mstk; /* Macro expansion stack */ + struct mstk dstk; /* Macro definitions stack */ + Token **params; /* actual parameters */ + Token *iline; /* invocation line */ + struct src_location where; /* location of definition */ + unsigned int nparam, rotate; + char *iname; /* name invoked as */ + int *paramlen; + uint64_t unique; + uint64_t condcnt; /* number of if blocks... */ + struct { /* Debug information */ + struct debug_macro_def *def; /* Definition */ + struct debug_macro_inv *inv; /* Current invocation (if any) */ + } dbg; +}; + + +/* Store the definition of a multi-line macro, as defined in a + * previous recursive macro expansion. + */ +#if 0 + +struct MMacroInvocation { + MMacroInvocation *prev; /* previous invocation */ + Token **params; /* actual parameters */ + Token *iline; /* invocation line */ + unsigned int nparam, rotate; + int *paramlen; + uint64_t unique; + uint64_t condcnt; +}; + +#endif + +/* + * The context stack is composed of a linked list of these. + */ +struct Context { + Context *next; + const char *name; + struct hash_table localmac; + uint64_t number; + unsigned int depth; +}; + + +static inline const char *tok_text(const struct Token *t) +{ + return (t->len <= INLINE_TEXT) ? t->text.a : t->text.p.ptr; +} + +/* + * Returns a mutable pointer to the text buffer. The text can be changed, + * but the length MUST NOT CHANGE, in either direction; nor is it permitted + * to pad with null characters to create an artificially shorter string. + */ +static inline char *tok_text_buf(struct Token *t) +{ + return (t->len <= INLINE_TEXT) ? t->text.a : t->text.p.ptr; +} + +static inline unsigned int tok_check_len(size_t len) +{ + if (unlikely(len > MAX_TEXT)) + nasm_fatal("impossibly large token"); + + return len; +} + +static inline bool tok_text_match(const struct Token *a, const struct Token *b) +{ + return a->len == b->len && !memcmp(tok_text(a), tok_text(b), a->len); +} + +static inline unused_func bool +tok_match(const struct Token *a, const struct Token *b) +{ + return a->type == b->type && tok_text_match(a, b); +} + +/* strlen() variant useful for set_text() and its variants */ +static size_t tok_strlen(const char *str) +{ + return strnlen(str, MAX_TEXT+1); +} + +/* + * Set the text field to a copy of the given string; the length if + * not given should be obtained with tok_strlen(). + */ +static Token *set_text(struct Token *t, const char *text, size_t len) +{ + char *textp; + + if (t->len > INLINE_TEXT) + nasm_free(t->text.p.ptr); + + nasm_zero(t->text); + + t->len = len = tok_check_len(len); + textp = (len > INLINE_TEXT) + ? (t->text.p.ptr = nasm_malloc(len+1)) : t->text.a; + memcpy(textp, text, len); + textp[len] = '\0'; + return t; +} + +/* + * Set the text field to the existing pre-allocated string, either + * taking over or freeing the allocation in the process. + */ +static Token *set_text_free(struct Token *t, char *text, unsigned int len) +{ + char *textp; + + if (t->len > INLINE_TEXT) + nasm_free(t->text.p.ptr); + + nasm_zero(t->text); + + t->len = len = tok_check_len(len); + if (len > INLINE_TEXT) { + textp = t->text.p.ptr = text; + } else { + textp = memcpy(t->text.a, text, len); + nasm_free(text); + } + textp[len] = '\0'; + + return t; +} + +/* + * Allocate a new buffer containing a copy of the text field + * of the token. + */ +static char *dup_text(const struct Token *t) +{ + size_t size = t->len + 1; + char *p = nasm_malloc(size); + + return memcpy(p, tok_text(t), size); +} + +/* + * Multi-line macro definitions are stored as a linked list of + * these, which is essentially a container to allow several linked + * lists of Tokens. + * + * Note that in this module, linked lists are treated as stacks + * wherever possible. For this reason, Lines are _pushed_ on to the + * `expansion' field in MMacro structures, so that the linked list, + * if walked, would give the macro lines in reverse order; this + * means that we can walk the list when expanding a macro, and thus + * push the lines on to the `expansion' field in _istk_ in reverse + * order (so that when popped back off they are in the right + * order). It may seem cockeyed, and it relies on my design having + * an even number of steps in, but it works... + * + * Some of these structures, rather than being actual lines, are + * markers delimiting the end of the expansion of a given macro. + * This is for use in the cycle-tracking and %rep-handling code. + * Such structures have `finishes' non-NULL, and `first' NULL. All + * others have `finishes' NULL, but `first' may still be NULL if + * the line is blank. + */ +struct Line { + Line *next; + MMacro *finishes; + Token *first; + struct src_location where; /* Where defined */ +}; + +/* + * To handle an arbitrary level of file inclusion, we maintain a + * stack (ie linked list) of these things. + * + * Note: when we issue a message for a continuation line, we want to + * issue it for the actual *start* of the continuation line. This means + * we need to remember how many lines to skip over for the next one. + */ +struct Include { + Include *next; + FILE *fp; + Cond *conds; + Line *expansion; + uint64_t nolist; /* Listing inhibit counter */ + uint64_t noline; /* Line number update inhibit counter */ + struct mstk mstk; + struct src_location where; /* Filename and current line number */ + int32_t lineinc; /* Increment given by %line */ + int32_t lineskip; /* Accounting for passed continuation lines */ +}; + +/* + * File real name hash, so we don't have to re-search the include + * path for every pass (and potentially more than that if a file + * is used more than once.) + */ +struct hash_table FileHash; + +/* + * Counters to trap on insane macro recursion or processing. + * Note: for smacros these count *down*, for mmacros they count *up*. + */ +struct deadman { + int64_t total; /* Total number of macros/tokens */ + int64_t levels; /* Descent depth across all macros */ + bool triggered; /* Already triggered, no need for error msg */ +}; + +static struct deadman smacro_deadman, mmacro_deadman; + +/* + * Conditional assembly: we maintain a separate stack of these for + * each level of file inclusion. (The only reason we keep the + * stacks separate is to ensure that a stray `%endif' in a file + * included from within the true branch of a `%if' won't terminate + * it and cause confusion: instead, rightly, it'll cause an error.) + */ +enum cond_state { + /* + * These states are for use just after %if or %elif: IF_TRUE + * means the condition has evaluated to truth so we are + * currently emitting, whereas IF_FALSE means we are not + * currently emitting but will start doing so if a %else comes + * up. In these states, all directives are admissible: %elif, + * %else and %endif. (And of course %if.) + */ + COND_IF_TRUE, COND_IF_FALSE, + /* + * These states come up after a %else: ELSE_TRUE means we're + * emitting, and ELSE_FALSE means we're not. In ELSE_* states, + * any %elif or %else will cause an error. + */ + COND_ELSE_TRUE, COND_ELSE_FALSE, + /* + * These states mean that we're not emitting now, and also that + * nothing until %endif will be emitted at all. COND_DONE is + * used when we've had our moment of emission + * and have now started seeing %elifs. COND_NEVER is used when + * the condition construct in question is contained within a + * non-emitting branch of a larger condition construct, + * or if there is an error. + */ + COND_DONE, COND_NEVER +}; +struct Cond { + Cond *next; + enum cond_state state; +}; +#define emitting(x) ( (x) == COND_IF_TRUE || (x) == COND_ELSE_TRUE ) + +/* + * These defines are used as the possible return values for do_directive + */ +#define NO_DIRECTIVE_FOUND 0 +#define DIRECTIVE_FOUND 1 + +/* + * Condition codes. Note that we use c_ prefix not C_ because C_ is + * used in nasm.h for the "real" condition codes. At _this_ level, + * we treat CXZ and ECXZ as condition codes, albeit non-invertible + * ones, so we need a different enum... + */ +static const char * const conditions[] = { + "a", "ae", "b", "be", "c", "cxz", "e", "ecxz", "g", "ge", "l", "le", + "na", "nae", "nb", "nbe", "nc", "ne", "ng", "nge", "nl", "nle", "no", + "np", "ns", "nz", "o", "p", "pe", "po", "rcxz", "s", "z" +}; +enum pp_conds { + c_A, c_AE, c_B, c_BE, c_C, c_CXZ, c_E, c_ECXZ, c_G, c_GE, c_L, c_LE, + c_NA, c_NAE, c_NB, c_NBE, c_NC, c_NE, c_NG, c_NGE, c_NL, c_NLE, c_NO, + c_NP, c_NS, c_NZ, c_O, c_P, c_PE, c_PO, c_RCXZ, c_S, c_Z, + c_none = -1 +}; +static const enum pp_conds inverse_ccs[] = { + c_NA, c_NAE, c_NB, c_NBE, c_NC, -1, c_NE, -1, c_NG, c_NGE, c_NL, c_NLE, + c_A, c_AE, c_B, c_BE, c_C, c_E, c_G, c_GE, c_L, c_LE, c_O, c_P, c_S, + c_Z, c_NO, c_NP, c_PO, c_PE, -1, c_NS, c_NZ +}; + +/* + * Directive names. + */ +/* If this is a an IF, ELIF, ELSE or ENDIF keyword */ +static int is_condition(enum preproc_token arg) +{ + return PP_IS_COND(arg) || (arg == PP_ELSE) || (arg == PP_ENDIF); +} + +static int StackSize = 4; +static const char *StackPointer = "ebp"; +static int ArgOffset = 8; +static int LocalOffset = 0; + +static Context *cstk; +static Include *istk; +static const struct strlist *ipath_list; + +static struct strlist *deplist; + +static uint64_t unique; /* unique identifier numbers */ + +static Line *predef = NULL; +static bool do_predef; +static enum preproc_mode pp_mode; + +/* + * The current set of multi-line macros we have defined. + */ +static struct hash_table mmacros; + +/* + * The current set of single-line macros we have defined. + */ +static struct hash_table smacros; + +/* + * The multi-line macro we are currently defining, or the %rep + * block we are currently reading, if any. + */ +static MMacro *defining; + +static uint64_t nested_mac_count; +static uint64_t nested_rep_count; + +/* + * The number of macro parameters to allocate space for at a time. + */ +#define PARAM_DELTA 16 + +/* + * The standard macro set: defined in macros.c in a set of arrays. + * This gives our position in any macro set, while we are processing it. + * The stdmacset is an array of such macro sets. + */ +static macros_t *stdmacpos; +static macros_t **stdmacnext; +static macros_t *stdmacros[8]; +static macros_t *extrastdmac; + +/* + * Map of which %use packages have been loaded + */ +static bool *use_loaded; + +/* + * Forward declarations. + */ +static void pp_add_stdmac(macros_t *macros); +static Token *expand_mmac_params(Token * tline); +static Token *expand_smacro(Token * tline); +static Token *expand_id(Token * tline); +static Context *get_ctx(const char *name, const char **namep); +static Token *make_tok_num(Token *next, int64_t val); +static int64_t get_tok_num(const Token *t, bool *err); +static Token *make_tok_qstr(Token *next, const char *str); +static Token *make_tok_qstr_len(Token *next, const char *str, size_t len); +static Token *make_tok_char(Token *next, char op); +static Token *new_Token(Token * next, enum token_type type, + const char *text, size_t txtlen); +static Token *new_Token_free(Token * next, enum token_type type, + char *text, size_t txtlen); +static Token *dup_Token(Token *next, const Token *src); +static Token *new_White(Token *next); +static Token *delete_Token(Token *t); +static Token *steal_Token(Token *dst, Token *src); +static const struct use_package * +get_use_pkg(Token *t, const char *dname, const char **name); +static void mark_smac_params(Token *tline, const SMacro *tmpl, + enum token_type type); + +/* Safe extraction of token type */ +static inline enum token_type tok_type(const Token *x) +{ + return x ? x->type : TOKEN_EOS; +} + +/* Safe test for token type, false on x == NULL */ +static inline bool tok_is(const Token *x, enum token_type t) +{ + return tok_type(x) == t; +} +/* True if token is any other kind other that "c", but not NULL */ +static inline bool tok_isnt(const Token *x, enum token_type t) +{ + return x && x->type != t; +} + +/* Whitespace token? */ +static inline bool tok_white(const Token *x) +{ + return tok_is(x, TOKEN_WHITESPACE); +} + +/* Skip past any whitespace */ +static inline Token *skip_white(Token *x) +{ + while (tok_white(x)) + x = x->next; + + return x; +} + +/* Delete any whitespace */ +static Token *zap_white(Token *x) +{ + while (tok_white(x)) + x = delete_Token(x); + + return x; +} + +/* + * Unquote a token if it is a string, and set its type to + * TOKEN_INTERNAL_STR. + */ + +/* + * Common version for any kind of quoted string; see asm/quote.c for + * information about the arguments. + */ +static const char *unquote_token_anystr(Token *t, uint32_t badctl, char qstart) +{ + size_t nlen, olen; + char *p; + + if (t->type != TOKEN_STR) + return tok_text(t); + + olen = t->len; + p = (olen > INLINE_TEXT) ? t->text.p.ptr : t->text.a; + t->len = nlen = nasm_unquote_anystr(p, NULL, badctl, qstart); + t->type = TOKEN_INTERNAL_STR; + + if (olen <= INLINE_TEXT || nlen > INLINE_TEXT) + return p; + + nasm_zero(t->text.a); + memcpy(t->text.a, p, nlen); + nasm_free(p); + return t->text.a; +} + +/* Unquote any string, can produce any arbitrary binary output */ +static const char *unquote_token(Token *t) +{ + return unquote_token_anystr(t, 0, STR_NASM); +} + +/* + * Same as unquote_token(), but error out if the resulting string + * contains unacceptable control characters. + */ +static const char *unquote_token_cstr(Token *t) +{ + return unquote_token_anystr(t, BADCTL, STR_NASM); +} + +/* + * Convert a TOKEN_INTERNAL_STR token to a quoted + * TOKEN_STR tokens. + */ +static Token *quote_any_token(Token *t); +static inline unused_func +Token *quote_token(Token *t) +{ + if (likely(!tok_is(t, TOKEN_INTERNAL_STR))) + return t; + + return quote_any_token(t); +} + +/* + * Convert *any* kind of token to a quoted + * TOKEN_STR token. + */ +static Token *quote_any_token(Token *t) +{ + size_t len = t->len; + char *p; + + p = nasm_quote(tok_text(t), &len); + t->type = TOKEN_STR; + return set_text_free(t, p, len); +} + +/* + * In-place reverse a list of tokens. + */ +static Token *reverse_tokens(Token *t) +{ + Token *prev = NULL; + Token *next; + + while (t) { + next = t->next; + t->next = prev; + prev = t; + t = next; + } + + return prev; +} + +/* + * getenv() variant operating on an input token + */ +static const char *pp_getenv(const Token *t, bool warn) +{ + const char *txt = tok_text(t); + const char *v; + char *buf = NULL; + bool is_string = false; + + if (!t) + return NULL; + + switch (t->type) { + case TOKEN_ENVIRON: + txt += 2; /* Skip leading %! */ + is_string = nasm_isquote(*txt); + break; + + case TOKEN_STR: + is_string = true; + break; + + case TOKEN_INTERNAL_STR: + case TOKEN_NAKED_STR: + case TOKEN_ID: + is_string = false; + break; + + default: + return NULL; + } + + if (is_string) { + buf = nasm_strdup(txt); + nasm_unquote_cstr(buf, NULL); + txt = buf; + } + + v = getenv(txt); + if (warn && !v) { + /*! + *!pp-environment [on] nonexistent environment variable + *!=environment + *! warns if a nonexistent environment variable + *! is accessed using the \c{%!} preprocessor + *! construct (see \k{getenv}.) Such environment + *! variables are treated as empty (with this + *! warning issued) starting in NASM 2.15; + *! earlier versions of NASM would treat this as + *! an error. + */ + nasm_warn(WARN_PP_ENVIRONMENT, + "nonexistent environment variable `%s'", txt); + v = ""; + } + + if (buf) + nasm_free(buf); + + return v; +} + +/* + * Free a linked list of tokens. + */ +static void free_tlist(Token * list) +{ + while (list) + list = delete_Token(list); +} + +/* + * Free a linked list of lines. + */ +static void free_llist(Line * list) +{ + Line *l, *tmp; + list_for_each_safe(l, tmp, list) { + free_tlist(l->first); + nasm_free(l); + } +} + +/* + * Free an array of linked lists of tokens + */ +static void free_tlist_array(Token **array, size_t nlists) +{ + Token **listp = array; + + if (!array) + return; + + while (nlists--) + free_tlist(*listp++); + + nasm_free(array); +} + +/* + * Duplicate a linked list of tokens. + */ +static Token *dup_tlist(const Token *list, Token ***tailp) +{ + Token *newlist = NULL; + Token **tailpp = &newlist; + const Token *t; + + list_for_each(t, list) { + Token *nt; + *tailpp = nt = dup_Token(NULL, t); + tailpp = &nt->next; + } + + if (tailp) { + **tailp = newlist; + *tailp = tailpp; + } + + return newlist; +} + +/* + * Duplicate a linked list of tokens with a maximum count + */ +static Token *dup_tlistn(const Token *list, size_t cnt, Token ***tailp) +{ + Token *newlist = NULL; + Token **tailpp = &newlist; + const Token *t; + + list_for_each(t, list) { + Token *nt; + if (!cnt--) + break; + *tailpp = nt = dup_Token(NULL, t); + tailpp = &nt->next; + } + + if (tailp) { + **tailp = newlist; + if (newlist) + *tailp = tailpp; + } + + return newlist; +} + +/* + * Duplicate a linked list of tokens in reverse order + */ +static Token *dup_tlist_reverse(const Token *list, Token *tail) +{ + const Token *t; + + list_for_each(t, list) + tail = dup_Token(tail, t); + + return tail; +} + +/* + * Append an existing tlist to a tail pointer and returns the + * updated tail pointer. + */ +static Token **steal_tlist(Token *tlist, Token **tailp) +{ + *tailp = tlist; + + if (!tlist) + return tailp; + + list_last(tlist, tlist); + return &tlist->next; +} + +/* + * Free an MMacro + */ +static void free_mmacro(MMacro * m) +{ + nasm_free(m->name); + free_tlist(m->dlist); + nasm_free(m->defaults); + free_llist(m->expansion); + nasm_free(m); +} + +/* + * Clear or free an SMacro + */ +static void free_smacro_members(SMacro *s) +{ + if (s->params) { + int i; + for (i = 0; i < s->nparam; i++) { + if (s->params[i].name.len > INLINE_TEXT) + nasm_free(s->params[i].name.text.p.ptr); + if (s->params[i].def) + free_tlist((Token *)s->params[i].def); + } + nasm_free(s->params); + } + nasm_free(s->name); + free_tlist(s->expansion); +} + +static void clear_smacro(SMacro *s) +{ + free_smacro_members(s); + /* Wipe everything except the next pointer */ + memset(&s->name, 0, sizeof(*s) - offsetof(SMacro, name)); +} + +/* + * Free an SMacro + */ +static void free_smacro(SMacro *s) +{ + free_smacro_members(s); + nasm_free(s); +} + +/* + * Free all currently defined macros, and free the hash tables if empty + */ +enum clear_what { + CLEAR_NONE = 0, + CLEAR_DEFINE = 1, /* Clear smacros */ + CLEAR_DEFALIAS = 2, /* Clear smacro aliases */ + CLEAR_ALLDEFINE = CLEAR_DEFINE|CLEAR_DEFALIAS, + CLEAR_MMACRO = 4, + CLEAR_ALL = CLEAR_ALLDEFINE|CLEAR_MMACRO +}; + +static void clear_smacro_table(struct hash_table *smt, enum clear_what what) +{ + struct hash_iterator it; + const struct hash_node *np; + bool empty = true; + + /* + * Walk the hash table and clear out anything we don't want + */ + hash_for_each(smt, it, np) { + SMacro *tmp; + SMacro *s = np->data; + SMacro **head = (SMacro **)&np->data; + + list_for_each_safe(s, tmp, s) { + if (what & ((enum clear_what)s->alias + 1)) { + *head = s->next; + free_smacro(s); + } else { + empty = false; + } + } + } + + /* + * Free the hash table and keys if and only if it is now empty. + * Note: we cannot free keys even for an empty list above, as that + * mucks up the hash algorithm. + */ + if (empty) + hash_free_all(smt, true); +} + +static void free_smacro_table(struct hash_table *smt) +{ + clear_smacro_table(smt, CLEAR_ALLDEFINE); +} + +static void free_mmacro_table(struct hash_table *mmt) +{ + struct hash_iterator it; + const struct hash_node *np; + + hash_for_each(mmt, it, np) { + MMacro *tmp; + MMacro *m = np->data; + nasm_free((void *)np->key); + list_for_each_safe(m, tmp, m) + free_mmacro(m); + } + hash_free(mmt); +} + +static void free_macros(void) +{ + free_smacro_table(&smacros); + free_mmacro_table(&mmacros); +} + +/* + * Initialize the hash tables + */ +static void init_macros(void) +{ +} + +/* + * Pop the context stack. + */ +static void ctx_pop(void) +{ + Context *c = cstk; + + cstk = cstk->next; + free_smacro_table(&c->localmac); + nasm_free((char *)c->name); + nasm_free(c); +} + +/* + * Search for a key in the hash index; adding it if necessary + * (in which case we initialize the data pointer to NULL.) + */ +static void ** +hash_findi_add(struct hash_table *hash, const char *str) +{ + struct hash_insert hi; + void **r; + char *strx; + size_t l = strlen(str) + 1; + + r = hash_findib(hash, str, l, &hi); + if (r) + return r; + + strx = nasm_malloc(l); /* Use a more efficient allocator here? */ + memcpy(strx, str, l); + return hash_add(&hi, strx, NULL); +} + +/* + * Like hash_findi, but returns the data element rather than a pointer + * to it. Used only when not adding a new element, hence no third + * argument. + */ +static void * +hash_findix(struct hash_table *hash, const char *str) +{ + void **p; + + p = hash_findi(hash, str, NULL); + return p ? *p : NULL; +} + +/* + * read line from standard macros set, + * if there no more left -- return NULL + */ +static char *line_from_stdmac(void) +{ + unsigned char c; + const unsigned char *p = stdmacpos; + char *line, *q; + size_t len = 0; + + if (!stdmacpos) + return NULL; + + /* + * 32-126 is ASCII, 127 is end of line, 128-31 are directives + * (allowed to wrap around) corresponding to PP_* tokens 0-159. + */ + while ((c = *p++) != 127) { + uint8_t ndir = c - 128; + if (ndir < 256-96) + len += pp_directives_len[ndir] + 1; + else + len++; + } + + line = nasm_malloc(len + 1); + q = line; + + while ((c = *stdmacpos++) != 127) { + uint8_t ndir = c - 128; + if (ndir < 256-96) { + memcpy(q, pp_directives[ndir], pp_directives_len[ndir]); + q += pp_directives_len[ndir]; + *q++ = ' '; + } else { + *q++ = c; + } + } + stdmacpos = p; + *q = '\0'; + + if (*stdmacpos == 127) { + /* This was the last of this particular macro set */ + stdmacpos = NULL; + if (*stdmacnext) { + stdmacpos = *stdmacnext++; + } else if (do_predef) { + Line *pd, *l; + + /* + * Nasty hack: here we push the contents of + * `predef' on to the top-level expansion stack, + * since this is the most convenient way to + * implement the pre-include and pre-define + * features. + */ + list_for_each(pd, predef) { + nasm_new(l); + l->next = istk->expansion; + l->first = dup_tlist(pd->first, NULL); + l->finishes = NULL; + + istk->expansion = l; + } + do_predef = false; + } + } + + return line; +} + +/* + * Read a line from a file. Return NULL on end of file. + */ +static char *line_from_file(FILE *f) +{ + int c; + unsigned int size, next; + const unsigned int delta = 512; + const unsigned int pad = 8; + bool cont = false; + char *buffer, *p; + + istk->where.lineno += istk->lineskip + istk->lineinc; + src_set_linnum(istk->where.lineno); + istk->lineskip = 0; + + size = delta; + p = buffer = nasm_malloc(size); + + do { + c = fgetc(f); + + switch (c) { + case EOF: + if (p == buffer) { + nasm_free(buffer); + return NULL; + } + c = 0; + break; + + case '\r': + next = fgetc(f); + if (next != '\n') + ungetc(next, f); + if (cont) { + cont = false; + continue; + } + c = 0; + break; + + case '\n': + if (cont) { + cont = false; + continue; + } + c = 0; + break; + + case 032: /* ^Z = legacy MS-DOS end of file mark */ + c = 0; + break; + + case '\\': + next = fgetc(f); + ungetc(next, f); + if (next == '\r' || next == '\n') { + cont = true; + istk->lineskip += istk->lineinc; + continue; + } + break; + } + + if (p >= (buffer + size - pad)) { + buffer = nasm_realloc(buffer, size + delta); + p = buffer + size - pad; + size += delta; + } + + *p++ = c; + } while (c); + + return buffer; +} + +/* + * Common read routine regardless of source + */ +static char *read_line(void) +{ + char *line; + FILE *f = istk->fp; + + if (f) + line = line_from_file(f); + else + line = line_from_stdmac(); + + if (!line) + return NULL; + + if (!istk->nolist) + lfmt->line(LIST_READ, istk->where.lineno, line); + + return line; +} + +/* + * Tokenize a line of text. This is a very simple process since we + * don't need to parse the value out of e.g. numeric tokens: we + * simply split one string into many. + */ +static Token *tokenize(const char *line) +{ + enum token_type type; + Token *list = NULL; + Token *t, **tail = &list; + + while (*line) { + const char *p = line; + const char *ep = NULL; /* End of token, for trimming the end */ + size_t toklen; + char firstchar = *p; /* Can be used to override the first char */ + + if (*p == '%') { + /* + * Preprocessor construct; find the end of the token. + * Classification is handled later, because %{...} can be + * used to create any preprocessor token. + */ + p++; + if (*p == '+' && !nasm_isdigit(p[1])) { + /* Paste token */ + p++; + } else if (nasm_isdigit(*p) || + ((*p == '-' || *p == '+') && nasm_isdigit(p[1]))) { + do { + p++; + } + while (nasm_isdigit(*p)); + } else if (*p == '{' || *p == '[') { + /* %{...} or %[...] */ + char firstchar = *p; + char endchar = *p + 2; /* } or ] */ + int lvl = 1; + line += (*p++ == '{'); /* Skip { but not [ (yet) */ + while (lvl) { + if (*p == firstchar) { + lvl++; + } else if (*p == endchar) { + lvl--; + } else if (nasm_isquote(*p)) { + p = nasm_skip_string(p); + } + + /* + * *p can have been advanced to a null character by + * nasm_skip_string() + */ + if (!*p) { + /*! + *!pp-open-brackets [on] unterminated %[...] + *! warns that a preprocessor \c{%[...]} construct + *! lacks the terminating \c{]} character. + */ + /*! + *!pp-open-braces [on] unterminated %{...} + *! warns that a preprocessor parameter + *! enclosed in braces \c{%\{...\}} lacks the + *! terminating \c{\}} character. + */ + nasm_warn(firstchar == '}' ? + WARN_PP_OPEN_BRACES : WARN_PP_OPEN_BRACKETS, + "unterminated %%%c...%c construct (missing `%c')", + firstchar, endchar, endchar); + break; + } + p++; + } + ep = lvl ? p : p-1; /* Terminal character not part of token */ + } else if (*p == '?') { + /* %? or %?? */ + p++; + if (*p == '?') + p++; + } else if (*p == '*' && p[1] == '?') { + /* %*? and %*?? */ + p += 2; + if (*p == '?') + p++; + } else if (*p == '!') { + /* Environment variable reference */ + p++; + if (nasm_isidchar(*p)) { + do { + p++; + } + while (nasm_isidchar(*p)); + } else if (nasm_isquote(*p)) { + p = nasm_skip_string(p); + if (*p) + p++; + else + nasm_nonfatal("unterminated %%! string"); + } else { + /* %! without anything else... */ + } + } else if (*p == ',') { + /* Conditional comma */ + p++; + } else if (nasm_isidchar(*p) || + ((*p == '%' || *p == '$') && nasm_isidchar(p[1]))) { + /* Identifier or some sort */ + do { + p++; + } + while (nasm_isidchar(*p)); + } else if (*p == '%') { + /* %% operator */ + p++; + } + + if (!ep) + ep = p; + toklen = ep - line; + + /* Classify here, to handle %{...} correctly */ + if (toklen < 2) { + type = '%'; /* % operator */ + if (unlikely(*line == '{')) { + /*! + *!pp-empty-braces [on] empty %{} construct + *! warns that an empty \c{%\{\}} was encountered. + *! This expands to a single \c{%} character, which + *! is normally the \c{%} arithmetic operator. + */ + nasm_warn(WARN_PP_EMPTY_BRACES, + "empty %%{} construct expands to the %% operator"); + } + } else { + char c0 = line[1]; + + switch (c0) { + case '+': + type = (toklen == 2) ? TOKEN_PASTE : TOKEN_MMACRO_PARAM; + break; + + case '-': + type = TOKEN_MMACRO_PARAM; + break; + + case '?': + if (toklen == 2) + type = TOKEN_PREPROC_Q; + else if (toklen == 3 && line[2] == '?') + type = TOKEN_PREPROC_QQ; + else + type = TOKEN_PREPROC_ID; + break; + + case '*': + type = TOKEN_OTHER; + if (line[2] == '?') { + if (toklen == 3) + type = TOKEN_PREPROC_SQ; + else if (toklen == 4 && line[3] == '?') + type = TOKEN_PREPROC_SQQ; + } + break; + + case '!': + type = (toklen == 2) ? TOKEN_OTHER : TOKEN_ENVIRON; + break; + + case '%': + type = (toklen == 2) ? TOKEN_SMOD : TOKEN_LOCAL_SYMBOL; + break; + + case '$': + type = (toklen == 2) ? TOKEN_OTHER : TOKEN_LOCAL_MACRO; + break; + + case '[': + line += 2; /* Skip %[ */ + firstchar = *line; /* Don't clobber */ + toklen -= 2; + type = TOKEN_INDIRECT; + break; + + case ',': + type = (toklen == 2) ? TOKEN_COND_COMMA : TOKEN_PREPROC_ID; + break; + + case '\'': + case '\"': + case '`': + /* %{'string'} */ + type = TOKEN_PREPROC_ID; + break; + + case ':': + type = TOKEN_MMACRO_PARAM; /* %{:..} */ + break; + + default: + if (nasm_isdigit(c0)) + type = TOKEN_MMACRO_PARAM; + else if (nasm_isidchar(c0) || toklen > 2) + type = TOKEN_PREPROC_ID; + else + type = TOKEN_OTHER; + break; + } + } + } else if (*p == '?' && !nasm_isidchar(p[1])) { + /* ? operator */ + type = TOKEN_QMARK; + p++; + } else if (nasm_isidstart(*p) || (*p == '$' && nasm_isidstart(p[1]))) { + /* + * A regular identifier. This includes keywords which are not + * special to the preprocessor. + */ + type = TOKEN_ID; + while (nasm_isidchar(*++p)) + ; + } else if (nasm_isquote(*p)) { + /* + * A string token. + */ + char quote = *p; + + type = TOKEN_STR; + p = nasm_skip_string(p); + + if (*p) { + p++; + } else { + /*! + *!pp-open-string [on] unterminated string + *! warns that a quoted string without a closing quotation + *! mark was encountered during preprocessing. + */ + nasm_warn(WARN_PP_OPEN_STRING, + "unterminated string (missing `%c')", quote); + type = TOKEN_ERRSTR; + } + } else if (p[0] == '$' && p[1] == '$') { + type = TOKEN_BASE; + p += 2; + } else if (nasm_isnumstart(*p)) { + bool is_hex = false; + bool is_float = false; + bool has_e = false; + char c; + + /* + * A numeric token. + */ + + if (*p == '$') { + p++; + is_hex = true; + } + + for (;;) { + c = *p++; + + if (!is_hex && (c == 'e' || c == 'E')) { + has_e = true; + if (*p == '+' || *p == '-') { + /* + * e can only be followed by +/- if it is either a + * prefixed hex number or a floating-point number + */ + p++; + is_float = true; + } + } else if (c == 'H' || c == 'h' || c == 'X' || c == 'x') { + is_hex = true; + } else if (c == 'P' || c == 'p') { + is_float = true; + if (*p == '+' || *p == '-') + p++; + } else if (nasm_isnumchar(c)) + ; /* just advance */ + else if (c == '.') { + /* + * we need to deal with consequences of the legacy + * parser, like "1.nolist" being two tokens + * (TOKEN_NUM, TOKEN_ID) here; at least give it + * a shot for now. In the future, we probably need + * a flex-based scanner with proper pattern matching + * to do it as well as it can be done. Nothing in + * the world is going to help the person who wants + * 0x123.p16 interpreted as two tokens, though. + */ + const char *r = p; + while (*r == '_') + r++; + + if (nasm_isdigit(*r) || (is_hex && nasm_isxdigit(*r)) || + (!is_hex && (*r == 'e' || *r == 'E')) || + (*r == 'p' || *r == 'P')) { + p = r; + is_float = true; + } else + break; /* Terminate the token */ + } else + break; + } + p--; /* Point to first character beyond number */ + + if (p == line+1 && *line == '$') { + type = TOKEN_HERE; + } else { + if (has_e && !is_hex) { + /* 1e13 is floating-point, but 1e13h is not */ + is_float = true; + } + + type = is_float ? TOKEN_FLOAT : TOKEN_NUM; + } + } else if (nasm_isspace(*p)) { + firstchar = ' '; /* Always a single space */ + type = TOKEN_WHITESPACE; + p = nasm_skip_spaces(p); + /* + * Whitespace just before end-of-line is discarded by + * pretending it's a comment; whitespace just before a + * comment gets lumped into the comment. + */ + if (!*p || *p == ';') + type = TOKEN_EOS; + } else if (*p == ';') { + type = TOKEN_EOS; + } else { + /* + * Anything else is an operator of some kind. We check + * for all the double-character operators (>>, <<, //, + * %%, <=, >=, ==, !=, <>, &&, ||, ^^) and the triple- + * character operators (<<<, >>>, <=>) but anything + * else is a single-character operator. + */ + type = (unsigned char)*p; + switch (*p++) { + case '>': + if (*p == '>') { + p++; + type = TOKEN_SHR; + if (*p == '>') { + type = TOKEN_SAR; + p++; + } + } else if (*p == '=') { + type = TOKEN_GE; + p++; + } + break; + + case '<': + if (*p == '<') { + p++; + type = TOKEN_SHL; + if (*p == '<') + p++; + } else if (*p == '=') { + p++; + type = TOKEN_LE; + if (*p == '>') { + p++; + type = TOKEN_LEG; + } + } else if (*p == '>') { + p++; + type = TOKEN_NE; + } + break; + + case '!': + if (*p == '=') { + p++; + type = TOKEN_NE; + } + break; + + case '/': + if (*p == '/') { + p++; + type = TOKEN_SDIV; + } + break; + case '=': + if (*p == '=') + p++; /* Still TOKEN_EQ == '=' though */ + break; + case '&': + if (*p == '&') { + p++; + type = TOKEN_DBL_AND; + } + break; + + case '|': + if (*p == '|') { + p++; + type = TOKEN_DBL_OR; + } + break; + + case '^': + if (*p == '^') { + p++; + type = TOKEN_DBL_XOR; + } + break; + + default: + break; + } + } + + if (type == TOKEN_EOS) + break; /* done with the string... */ + + if (!ep) + ep = p; + toklen = ep - line; + + if (toklen) { + *tail = t = new_Token(NULL, type, line, toklen); + *tok_text_buf(t) = firstchar; /* E.g. %{foo} -> {foo -> %foo */ + tail = &t->next; + } + + line = p; + } + return list; +} + +/* + * Tokens are allocated in blocks to improve speed. Set the blocksize + * to 0 to use regular nasm_malloc(); this is useful for debugging. + * + * alloc_Token() returns a zero-initialized token structure. + */ +#define TOKEN_BLOCKSIZE 4096 + +#if TOKEN_BLOCKSIZE + +static Token *freeTokens = NULL; +static Token *tokenblocks = NULL; + +static Token *alloc_Token(void) +{ + Token *t = freeTokens; + + if (unlikely(!t)) { + Token *block; + size_t i; + + nasm_newn(block, TOKEN_BLOCKSIZE); + + /* + * The first entry in each array are a linked list of + * block allocations and is not used for data. + */ + block[0].next = tokenblocks; + block[0].type = TOKEN_BLOCK; + tokenblocks = block; + + /* + * Add the rest to the free list + */ + for (i = 2; i < TOKEN_BLOCKSIZE - 1; i++) + block[i].next = &block[i+1]; + + freeTokens = &block[2]; + + /* + * Return the topmost usable token + */ + return &block[1]; + } + + freeTokens = t->next; + t->next = NULL; + return t; +} + +static Token *delete_Token(Token *t) +{ + Token *next; + + nasm_assert(t && t->type != TOKEN_FREE); + + next = t->next; + nasm_zero(*t); + t->type = TOKEN_FREE; + t->next = freeTokens; + freeTokens = t; + + return next; +} + +static void delete_Blocks(void) +{ + Token *block, *blocktmp; + + list_for_each_safe(block, blocktmp, tokenblocks) + nasm_free(block); + + freeTokens = tokenblocks = NULL; +} + +#else + +static inline Token *alloc_Token(void) +{ + Token *t; + nasm_new(t); + return t; +} + +static Token *delete_Token(Token *t) +{ + Token *next = t->next; + nasm_free(t); + return next; +} + +static inline void delete_Blocks(void) +{ + /* Nothing to do */ +} + +#endif + +/* + * this function creates a new Token and passes a pointer to it + * back to the caller. It sets the type, text, and next pointer elements. + */ +static Token *new_Token(Token * next, enum token_type type, + const char *text, size_t txtlen) +{ + Token *t = alloc_Token(); + char *textp; + + t->next = next; + t->type = type; + if (type == TOKEN_WHITESPACE) { + t->len = 1; + t->text.a[0] = ' '; + } else { + if (text && text[0] && !txtlen) + txtlen = tok_strlen(text); + + t->len = tok_check_len(txtlen); + + if (text) { + textp = (txtlen > INLINE_TEXT) + ? (t->text.p.ptr = nasm_malloc(txtlen+1)) : t->text.a; + memcpy(textp, text, txtlen); + textp[txtlen] = '\0'; /* In case we needed malloc() */ + } else { + /* + * Allocate a buffer but do not fill it. The caller + * can fill in text, but must not change the length. + * The filled in text must be exactly txtlen once + * the buffer is filled and before the token is added + * to any line lists. + */ + if (txtlen > INLINE_TEXT) + t->text.p.ptr = nasm_zalloc(txtlen+1); + } + } + return t; +} + +/* + * Same as new_Token(), but text belongs to the new token and is + * either taken over or freed. This function MUST be called + * with valid txt and txtlen, unlike new_Token(). + */ +static Token *new_Token_free(Token * next, enum token_type type, + char *text, size_t txtlen) +{ + Token *t = alloc_Token(); + + t->next = next; + t->type = type; + t->len = tok_check_len(txtlen); + + if (txtlen <= INLINE_TEXT) { + memcpy(t->text.a, text, txtlen); + nasm_free(text); + } else { + t->text.p.ptr = text; + } + + return t; +} + +static Token *dup_Token(Token *next, const Token *src) +{ + Token *t = alloc_Token(); + + memcpy(t, src, sizeof *src); + t->next = next; + + if (t->len > INLINE_TEXT) { + t->text.p.ptr = nasm_malloc(t->len + 1); + memcpy(t->text.p.ptr, src->text.p.ptr, t->len+1); + } + + return t; +} + +static Token *new_White(Token *next) +{ + Token *t = alloc_Token(); + + t->next = next; + t->type = TOKEN_WHITESPACE; + t->len = 1; + t->text.a[0] = ' '; + + return t; +} + +/* + * This *transfers* the content from one token to another, leaving the + * next pointer of the latter intact. Unlike dup_Token(), the old + * token is destroyed, except for its next pointer, and the text + * pointer allocation, if any, is simply transferred. + */ +static Token *steal_Token(Token *dst, Token *src) +{ + /* Overwrite everything except the next pointers */ + memcpy((char *)dst + sizeof(Token *), (char *)src + sizeof(Token *), + sizeof(Token) - sizeof(Token *)); + + /* Clear the donor token */ + memset((char *)src + sizeof(Token *), 0, sizeof(Token) - sizeof(Token *)); + + return dst; +} + +/* + * Convert a line of tokens back into text. This modifies the list + * by expanding environment variables. + * + * If expand_locals is not zero, identifiers of the form "%$*xxx" + * are also transformed into ..@ctxnum.xxx + */ +static char *detoken(Token * tlist, bool expand_locals) +{ + Token *t; + char *line, *p; + int len = 0; + + list_for_each(t, tlist) { + switch (t->type) { + case TOKEN_ENVIRON: + { + const char *v = pp_getenv(t, true); + set_text(t, v, tok_strlen(v)); + t->type = TOKEN_NAKED_STR; + break; + } + + case TOKEN_LOCAL_MACRO: + case TOKEN_LOCAL_SYMBOL: + if (expand_locals) { + const char *q; + char *p; + Context *ctx = get_ctx(tok_text(t), &q); + if (ctx) { + p = nasm_asprintf("..@%"PRIu64".%s", ctx->number, q); + set_text_free(t, p, nasm_last_string_len()); + t->type = TOKEN_ID; + } + } + break; + + case TOKEN_INDIRECT: + /* + * This won't happen in when emitting to the assembler, + * but can happen when emitting output for some of the + * list options. The token string doesn't actually include + * the brackets in this case. + */ + len += 3; /* %[] */ + break; + + default: + break; /* No modifications */ + } + + if (debug_level(2)) { + unsigned int t_len = t->len; + unsigned int s_len = tok_strlen(tok_text(t)); + if (t_len != s_len) { + nasm_panic("assertion failed: token \"%s\" type %u len %u has t->len %u\n", + tok_text(t), t->type, s_len, t_len); + t->len = s_len; + } + } + + len += t->len; + } + + p = line = nasm_malloc(len + 1); + + list_for_each(t, tlist) { + switch (t->type) { + case TOKEN_INDIRECT: + *p++ = '%'; + *p++ = '['; + p = mempcpy(p, tok_text(t), t->len); + *p++ = ']'; + break; + + default: + p = mempcpy(p, tok_text(t), t->len); + } + } + *p = '\0'; + + return line; +} + +/* + * A scanner, suitable for use by the expression evaluator, which + * operates on a line of Tokens. Expects a pointer to a pointer to + * the first token in the line to be passed in as its private_data + * field. + * + * FIX: This really needs to be unified with stdscan. + */ +struct ppscan { + Token *tptr; + int ntokens; +}; + +static int ppscan(void *private_data, struct tokenval *tokval) +{ + struct ppscan *pps = private_data; + Token *tline; + const char *txt; + + do { + if (pps->ntokens && (tline = pps->tptr)) { + pps->ntokens--; + pps->tptr = tline->next; + } else { + pps->tptr = NULL; + pps->ntokens = 0; + return tokval->t_type = TOKEN_EOS; + } + } while (tline->type == TOKEN_WHITESPACE); + + txt = tok_text(tline); + tokval->t_charptr = (char *)txt; /* Fix this */ + + switch (tline->type) { + default: + return tokval->t_type = tline->type; + + case TOKEN_ID: + /* This could be an assembler keyword */ + return nasm_token_hash(txt, tokval); + + case TOKEN_NUM: + { + bool rn_error; + tokval->t_integer = readnum(txt, &rn_error); + if (rn_error) + return tokval->t_type = TOKEN_ERRNUM; + else + return tokval->t_type = TOKEN_NUM; + } + + case TOKEN_STR: + tokval->t_charptr = (char *)unquote_token(tline); + /* fall through */ + case TOKEN_INTERNAL_STR: + case TOKEN_NAKED_STR: + tokval->t_inttwo = tline->len; + return tokval->t_type = TOKEN_STR; + } +} + +/* + * 1. An expression (true if nonzero 0) + * 2. The keywords true, on, yes for true + * 3. The keywords false, off, no for false + * 4. An empty line, for true + * + * On error, return defval (usually the previous value) + */ +static bool pp_get_boolean_option(Token *tline, bool defval) +{ + static const char * const noyes[] = { + "no", "yes", + "false", "true", + "off", "on" + }; + struct ppscan pps; + struct tokenval tokval; + expr *evalresult; + + tline = skip_white(tline); + if (!tline) + return true; + + if (tline->type == TOKEN_ID) { + size_t i; + const char *txt = tok_text(tline); + + for (i = 0; i < ARRAY_SIZE(noyes); i++) + if (!nasm_stricmp(txt, noyes[i])) + return i & 1; + } + + pps.tptr = NULL; + pps.tptr = tline; + pps.ntokens = -1; + tokval.t_type = TOKEN_INVALID; + evalresult = evaluate(ppscan, &pps, &tokval, NULL, true, NULL); + + if (!evalresult) + return true; + + if (tokval.t_type) { + /*! + *!pp-trailing [on] trailing garbage ignored + *! warns that the preprocessor encountered additional text + *! where no such text was expected. This can + *! sometimes be the result of an incorrectly written expression, + *! or arguments that are inadvertently separated. + */ + nasm_warn(WARN_PP_TRAILING, + "trailing garbage after expression ignored"); + } + if (!is_really_simple(evalresult)) { + nasm_nonfatal("boolean flag expression must be a constant"); + return defval; + } + + return reloc_value(evalresult) != 0; +} + +/* + * Compare a string to the name of an existing macro; this is a + * simple wrapper which calls either strcmp or nasm_stricmp + * depending on the value of the `casesense' parameter. + */ +static int mstrcmp(const char *p, const char *q, bool casesense) +{ + return casesense ? strcmp(p, q) : nasm_stricmp(p, q); +} + +/* + * Compare a string to the name of an existing macro; this is a + * simple wrapper which calls either strcmp or nasm_stricmp + * depending on the value of the `casesense' parameter. + */ +static int mmemcmp(const char *p, const char *q, size_t l, bool casesense) +{ + return casesense ? memcmp(p, q, l) : nasm_memicmp(p, q, l); +} + +/* + * Return the Context structure associated with a %$ token. Return + * NULL, having _already_ reported an error condition, if the + * context stack isn't deep enough for the supplied number of $ + * signs. + * + * If "namep" is non-NULL, set it to the pointer to the macro name + * tail, i.e. the part beyond %$... + */ +static Context *get_ctx(const char *name, const char **namep) +{ + Context *ctx; + int i; + + if (namep) + *namep = name; + + if (!name || name[0] != '%' || name[1] != '$') + return NULL; + + if (!cstk) { + nasm_nonfatal("`%s': context stack is empty", name); + return NULL; + } + + name += 2; + ctx = cstk; + i = 0; + while (ctx && *name == '$') { + name++; + i++; + ctx = ctx->next; + } + if (!ctx) { + nasm_nonfatal("`%s': context stack is only" + " %d level%s deep", name, i, (i == 1 ? "" : "s")); + return NULL; + } + + if (namep) + *namep = name; + + return ctx; +} + +/* + * Open an include file. This routine must always return a valid + * file pointer if it returns - it's responsible for throwing an + * ERR_FATAL and bombing out completely if not. It should also try + * the include path one by one until it finds the file or reaches + * the end of the path. + * + * Note: for INC_PROBE the function returns NULL at all times; + * instead look for a filename in *slpath. + */ +enum incopen_mode { + INC_NEEDED, /* File must exist */ + INC_REQUIRED, /* File must exist, but only open once/pass */ + INC_OPTIONAL, /* Missing is OK */ + INC_PROBE /* Only an existence probe */ +}; + +/* This is conducts a full pathname search */ +static FILE *inc_fopen_search(const char *file, char **slpath, + enum incopen_mode omode, enum file_flags fmode) +{ + const struct strlist_entry *ip = strlist_head(ipath_list); + FILE *fp; + const char *prefix = ""; + char *sp; + bool found; + + while (1) { + sp = nasm_catfile(prefix, file); + if (omode == INC_PROBE) { + fp = NULL; + found = nasm_file_exists(sp); + } else { + fp = nasm_open_read(sp, fmode); + found = (fp != NULL); + } + if (found) { + *slpath = sp; + return fp; + } + + nasm_free(sp); + + if (!ip) { + *slpath = NULL; + return NULL; + } + + prefix = ip->str; + ip = ip->next; + } +} + +/* + * Open a file, or test for the presence of one (depending on omode), + * considering the include path. + */ +struct file_hash_entry { + const char *path; + struct file_hash_entry *full; /* Hash entry for the full path */ + int64_t include_pass; /* Pass in which last included (for %require) */ +}; + +static FILE *inc_fopen(const char *file, + struct strlist *dhead, + const char **found_path, + enum incopen_mode omode, + enum file_flags fmode) +{ + struct file_hash_entry **fhep; + struct file_hash_entry *fhe = NULL; + struct hash_insert hi; + const char *path = NULL; + FILE *fp = NULL; + const int64_t pass = pass_count(); + bool skip_open = (omode == INC_PROBE); + + fhep = (struct file_hash_entry **)hash_find(&FileHash, file, &hi); + if (fhep) { + fhe = *fhep; + if (fhe) { + path = fhe->path; + skip_open |= (omode == INC_REQUIRED) && + (fhe->full->include_pass >= pass); + } + } else { + /* Need to do the actual path search */ + char *pptr; + fp = inc_fopen_search(file, &pptr, omode, fmode); + path = pptr; + + /* Positive or negative result */ + if (path) { + nasm_new(fhe); + fhe->path = path; + fhe->full = fhe; /* It is *possible*... */ + } + hash_add(&hi, nasm_strdup(file), fhe); + + /* + * Add a hash entry for the canonical path if there isn't one + * already. Try to get the unique name from the OS best we can. + * Note that ->path and ->full->path can be different, and that + * is okay (we don't want to print out a full canonical path + * in messages, for example.) + */ + if (path) { + char *fullpath = nasm_realpath(path); + + if (!strcmp(file, fullpath)) { + nasm_free(fullpath); + } else { + struct file_hash_entry **fullp, *full; + fullp = (struct file_hash_entry **) + hash_find(&FileHash, fullpath, &hi); + + if (fullp) { + full = *fullp; + nasm_free(fullpath); + } else { + nasm_new(full); + full->path = fullpath; + full->full = full; + hash_add(&hi, path, full); + } + fhe->full = full; + } + } + + /* + * Add file to dependency path. + */ + strlist_add(dhead, path ? path : file); + } + + if (path && !fp && omode != INC_PROBE) + fp = nasm_open_read(path, fmode); + + if (omode < INC_OPTIONAL && !fp) { + if (!path) + errno = ENOENT; + + nasm_nonfatal("unable to open include file `%s': %s", + file, strerror(errno)); + } + + if (fp) + fhe->full->include_pass = pass; + + if (found_path) + *found_path = path; + + return fp; +} + +/* + * Opens an include or input file. Public version, for use by modules + * that get a file:lineno pair and need to look at the file again + * (e.g. the CodeView debug backend). Returns NULL on failure. + */ +FILE *pp_input_fopen(const char *filename, enum file_flags mode) +{ + return inc_fopen(filename, NULL, NULL, INC_OPTIONAL, mode); +} + +/* + * Determine if we should warn on defining a single-line macro of + * name `name', with `nparam' parameters. If nparam is 0 or -1, will + * return true if _any_ single-line macro of that name is defined. + * Otherwise, will return true if a single-line macro with either + * `nparam' or no parameters is defined. + * + * If a macro with precisely the right number of parameters is + * defined, or nparam is -1, the address of the definition structure + * will be returned in `defn'; otherwise NULL will be returned. If `defn' + * is NULL, no action will be taken regarding its contents, and no + * error will occur. + * + * Note that this is also called with nparam zero to resolve + * `ifdef'. + */ +static bool +smacro_defined(Context *ctx, const char *name, int nparam, SMacro **defn, + bool nocase, bool find_alias) +{ + struct hash_table *smtbl; + SMacro *m; + + smtbl = ctx ? &ctx->localmac : &smacros; + +restart: + m = (SMacro *) hash_findix(smtbl, name); + + while (m) { + if (!mstrcmp(m->name, name, m->casesense && nocase) && + (nparam <= 0 || m->nparam == 0 || + (nparam >= m->nparam_min && + (m->varadic || nparam <= m->nparam)))) { + if (m->alias && !find_alias) { + if (!ppconf.noaliases) { + name = tok_text(m->expansion); + goto restart; + } else { + continue; + } + } + if (defn) + *defn = m; + return true; + } + m = m->next; + } + + return false; +} + +/* param should be a natural number [0; INT_MAX] */ +static int read_param_count(const char *str) +{ + int result; + bool err; + + result = readnum(str, &err); + if (result < 0 || result > INT_MAX) { + result = 0; + nasm_nonfatal("parameter count `%s' is out of bounds [%d; %d]", + str, 0, INT_MAX); + } else if (err) + nasm_nonfatal("unable to parse parameter count `%s'", str); + return result; +} + +/* + * Count and mark off the parameters in a multi-line macro call. + * This is called both from within the multi-line macro expansion + * code, and also to mark off the default parameters when provided + * in a %macro definition line. + * + * Note that we need space in the params array for parameter 0 being + * a possible captured label as well as the final NULL. + * + * Returns a pointer to the pointer to a terminal comma if present; + * used to drop an empty terminal argument for legacy reasons. + */ +static Token **count_mmac_params(Token *tline, int *nparamp, Token ***paramsp) +{ + int paramsize; + int nparam = 0; + Token *t; + Token **comma = NULL, **maybe_comma = NULL; + Token **params; + + paramsize = PARAM_DELTA; + nasm_newn(params, paramsize); + + t = skip_white(tline); + if (t) { + while (true) { + /* Need two slots for captured label and NULL */ + if (unlikely(nparam+2 >= paramsize)) { + paramsize += PARAM_DELTA; + params = nasm_realloc(params, sizeof(*params) * paramsize); + } + params[++nparam] = t; + if (tok_is(t, '{')) { + int brace = 1; + + comma = NULL; /* Non-empty parameter */ + + while (brace && (t = t->next)) { + brace += tok_is(t, '{'); + brace -= tok_is(t, '}'); + } + + if (t) { + /* + * Now we've found the closing brace, look further + * for the comma. + */ + t = skip_white(t->next); + if (tok_isnt(t, ',')) + nasm_nonfatal("braces do not enclose all of macro parameter"); + } else { + nasm_nonfatal("expecting closing brace in macro parameter"); + } + } + + /* Advance to the next comma */ + maybe_comma = &t->next; + while (tok_isnt(t, ',')) { + if (!tok_white(t)) + comma = NULL; /* Non-empty parameter */ + maybe_comma = &t->next; + t = t->next; + } + + if (!t) + break; /* End of string, no comma */ + + comma = maybe_comma; /* Point to comma pointer */ + t = skip_white(t->next); /* Eat the comma and whitespace */ + } + } + + params[nparam+1] = NULL; + *paramsp = params; + *nparamp = nparam; + + return comma; +} + +/* + * Determine whether one of the various `if' conditions is true or + * not. + * + * We must free the tline we get passed. + */ +static enum cond_state if_condition(Token * tline, enum preproc_token ct) +{ + bool j; + Token *t, *tt, *origline; + struct ppscan pps; + struct tokenval tokval; + expr *evalresult; + enum token_type needtype; + const char *dname = pp_directives[ct]; + bool casesense = true; + enum preproc_token cond = PP_COND(ct); + + origline = tline; + + switch (cond) { + case PP_IFCTX: + j = false; /* have we matched yet? */ + while (true) { + tline = skip_white(tline); + if (!tline) + break; + if (tline->type != TOKEN_ID) { + nasm_nonfatal("`%s' expects context identifiers", + dname); + goto fail; + } + if (cstk && cstk->name && !nasm_stricmp(tok_text(tline), cstk->name)) + j = true; + tline = tline->next; + } + break; + + case PP_IFDEF: + case PP_IFDEFALIAS: + { + bool alias = cond == PP_IFDEFALIAS; + SMacro *smac; + Context *ctx; + const char *mname; + + j = false; /* have we matched yet? */ + while (tline) { + tline = skip_white(tline); + if (!tline || (tline->type != TOKEN_ID && + tline->type != TOKEN_LOCAL_MACRO)) { + nasm_nonfatal("`%s' expects macro identifiers", + dname); + goto fail; + } + + mname = tok_text(tline); + ctx = get_ctx(mname, &mname); + if (smacro_defined(ctx, mname, -1, &smac, true, alias) && smac + && smac->alias == alias) { + j = true; + break; + } + tline = tline->next; + } + break; + } + + case PP_IFDIFI: + /* + * %ifdifi doesn't actually exist; it ignores its argument and is + * always false. This exists solely to stub out the corresponding + * TASM directive. + */ + j = false; + goto fail; + + case PP_IFENV: + tline = expand_smacro(tline); + j = false; /* have we matched yet? */ + while (tline) { + tline = skip_white(tline); + if (!tline || (tline->type != TOKEN_ID && + tline->type != TOKEN_STR && + tline->type != TOKEN_INTERNAL_STR && + tline->type != TOKEN_ENVIRON)) { + nasm_nonfatal("`%s' expects environment variable names", + dname); + goto fail; + } + + j |= !!pp_getenv(tline, false); + tline = tline->next; + } + break; + + case PP_IFIDNI: + casesense = false; + /* fall through */ + case PP_IFIDN: + tline = expand_smacro(tline); + t = tt = tline; + while (tok_isnt(tt, ',')) + tt = tt->next; + if (!tt) { + nasm_nonfatal("`%s' expects two comma-separated arguments", + dname); + goto fail; + } + tt = tt->next; + j = true; /* assume equality unless proved not */ + while (tok_isnt(t, ',') && tt) { + unsigned int l1, l2; + const char *t1, *t2; + + if (tok_is(tt, ',')) { + nasm_nonfatal("`%s': more than one comma on line", + dname); + goto fail; + } + if (t->type == TOKEN_WHITESPACE) { + t = t->next; + continue; + } + if (tt->type == TOKEN_WHITESPACE) { + tt = tt->next; + continue; + } + if (tt->type != t->type) { + j = false; /* found mismatching tokens */ + break; + } + + t1 = unquote_token(t); + t2 = unquote_token(tt); + l1 = t->len; + l2 = tt->len; + + if (l1 != l2 || mmemcmp(t1, t2, l1, casesense)) { + j = false; + break; + } + + t = t->next; + tt = tt->next; + } + if (!tok_is(t, ',') || tt) + j = false; /* trailing gunk on one end or other */ + break; + + case PP_IFMACRO: + { + bool found = false; + MMacro searching, *mmac; + + tline = skip_white(tline); + tline = expand_id(tline); + if (!tok_is(tline, TOKEN_ID)) { + nasm_nonfatal("`%s' expects a macro name", dname); + goto fail; + } + nasm_zero(searching); + searching.name = dup_text(tline); + searching.casesense = true; + searching.nparam_min = 0; + searching.nparam_max = INT_MAX; + tline = expand_smacro(tline->next); + tline = skip_white(tline); + if (!tline) { + } else if (!tok_is(tline, TOKEN_NUM)) { + nasm_nonfatal("`%s' expects a parameter count or nothing", + dname); + } else { + searching.nparam_min = searching.nparam_max = + read_param_count(tok_text(tline)); + } + if (tline && tok_is(tline->next, '-')) { + tline = tline->next->next; + if (tok_is(tline, '*')) + searching.nparam_max = INT_MAX; + else if (!tok_is(tline, TOKEN_NUM)) + nasm_nonfatal("`%s' expects a parameter count after `-'", + dname); + else { + searching.nparam_max = read_param_count(tok_text(tline)); + if (searching.nparam_min > searching.nparam_max) { + nasm_nonfatal("minimum parameter count exceeds maximum"); + searching.nparam_max = searching.nparam_min; + } + } + } + if (tline && tok_is(tline->next, '+')) { + tline = tline->next; + searching.plus = true; + } + mmac = (MMacro *) hash_findix(&mmacros, searching.name); + while (mmac) { + if (!strcmp(mmac->name, searching.name) && + (mmac->nparam_min <= searching.nparam_max + || searching.plus) + && (searching.nparam_min <= mmac->nparam_max + || mmac->plus)) { + found = true; + break; + } + mmac = mmac->next; + } + if (tline && tline->next) { + nasm_warn(WARN_PP_TRAILING, + "trailing garbage after `%s' ignored", dname); + } + nasm_free(searching.name); + j = found; + break; + } + + case PP_IFID: + needtype = TOKEN_ID; + goto iftype; + case PP_IFNUM: + needtype = TOKEN_NUM; + goto iftype; + case PP_IFSTR: + needtype = TOKEN_STR; + goto iftype; + +iftype: + t = tline = expand_smacro(tline); + + while (tok_white(t) || + (needtype == TOKEN_NUM && (tok_is(t, '-') | tok_is(t, '+')))) + t = t->next; + + j = tok_is(t, needtype); + break; + + case PP_IFTOKEN: + tline = expand_smacro(tline); + t = skip_white(tline); + + j = false; + if (t) { + t = skip_white(t->next); /* Skip the actual token + whitespace */ + j = !t; + } + break; + + case PP_IFEMPTY: + tline = expand_smacro(tline); + t = skip_white(tline); + j = !t; /* Should be empty */ + break; + + case PP_IF: + pps.tptr = tline = expand_smacro(tline); + pps.ntokens = -1; + tokval.t_type = TOKEN_INVALID; + evalresult = evaluate(ppscan, &pps, &tokval, NULL, true, NULL); + if (!evalresult) + return -1; + if (tokval.t_type) { + nasm_warn(WARN_PP_TRAILING, "trailing garbage after expression ignored"); + } + if (!is_simple(evalresult)) { + nasm_nonfatal("non-constant value given to `%s'", + dname); + goto fail; + } + j = reloc_value(evalresult) != 0; + break; + + case PP_IFUSING: + case PP_IFUSABLE: + { + const struct use_package *pkg; + const char *name; + + pkg = get_use_pkg(tline, dname, &name); + if (!name) + goto fail; + + j = pkg && ((cond == PP_IFUSABLE) | use_loaded[pkg->index]); + break; + } + + default: + nasm_nonfatal("unknown preprocessor directive `%s'", dname); + goto fail; + } + + free_tlist(origline); + return (j ^ PP_COND_NEGATIVE(ct)) ? COND_IF_TRUE : COND_IF_FALSE; + +fail: + free_tlist(origline); + return COND_NEVER; +} + +/* + * Default smacro expansion routine: just returns a copy of the + * expansion list. + */ +static Token * +smacro_expand_default(const SMacro *s, Token **params, int nparams) +{ + (void)params; + (void)nparams; + + return dup_tlist(s->expansion, NULL); +} + +/* + * Emit a macro definition or undef to the listing file or debug format + * if desired. This is similar to detoken(), but it handles the + * reverse expansion list, does not expand %! or local variable + * tokens, and does some special handling for macro parameters. + */ +static void +list_smacro_def(enum preproc_token op, const Context *ctx, const SMacro *m) +{ + Token *t; + size_t namelen, size; + char *def, *p, *end_spec; + char *context_prefix = NULL; + size_t context_len; + + namelen = strlen(m->name); + size = namelen + 2; /* Include room for space after name + NUL */ + + if (ctx) { + int context_depth = cstk->depth - ctx->depth + 1; + context_prefix = + nasm_asprintf("[%s::%"PRIu64"] %%%-*s", + ctx->name ? ctx->name : "", + ctx->number, context_depth, ""); + + context_len = nasm_last_string_len(); + memset(context_prefix + context_len - context_depth, + '$', context_depth); + size += context_len; + } + + list_for_each(t, m->expansion) + size += t->len; + + if (m->nparam) { + /* + * Space for ( and either , or ) around each + * parameter, plus up to 5 flags. + */ + int i; + + size += 1 + 5 * m->nparam; + for (i = 0; i < m->nparam; i++) + size += m->params[i].name.len; + } + + def = nasm_malloc(size); + p = def+size; + *--p = '\0'; + + list_for_each(t, m->expansion) { + p -= t->len; + memcpy(p, tok_text(t), t->len); + } + + *--p = ' '; + end_spec = p; /* Truncate here for macro def only */ + + if (m->nparam) { + int i; + + *--p = ')'; + + for (i = m->nparam-1; i >= 0; i--) { + enum sparmflags flags = m->params[i].flags; + if (flags & (SPARM_GREEDY|SPARM_VARADIC)) + *--p = '+'; + p -= m->params[i].name.len; + memcpy(p, tok_text(&m->params[i].name), m->params[i].name.len); + + if (flags & SPARM_NOSTRIP) + *--p = '!'; + if (flags & SPARM_STR) { + *--p = '&'; + if (flags & SPARM_CONDQUOTE) + *--p = '&'; + } + if (flags & SPARM_EVAL) + *--p = '='; + *--p = ','; + } + *p = '('; /* First parameter starts with ( not , */ + } + + p -= namelen; + memcpy(p, m->name, namelen); + + if (context_prefix) { + p -= context_len; + memcpy(p, context_prefix, context_len); + nasm_free(context_prefix); + } + + if (ppdbg & PDBG_LIST_SMACROS) + nasm_listmsg("%s %s", pp_directives[op], p); + if (ppdbg & PDBG_SMACROS) { + bool define = !(op == PP_UNDEF || op == PP_UNDEFALIAS); + if (!define) + *end_spec = '\0'; /* Remove the expansion (for list file only) */ + dfmt->debug_smacros(define, p); + } + nasm_free(def); +} + +/* + * Parse smacro arguments, return argument count. If the tmpl argument + * is set, set the nparam, varadic and params field in the template. + * The varadic field is not used by define_smacro(), but is provided + * in case the caller wants it for other purposes. + * + * *tpp is updated to point to the pointer to the first token after the + * prototype. + * + * The text values from any argument tokens are "stolen" and the + * corresponding text fields set to NULL. + * + * Note that the user can't define a true varadic macro; doing so + * would be meaningless. The true varadic macros are only used for + * internal "magic macro" functions. + */ +static int parse_smacro_template(Token ***tpp, SMacro *tmpl) +{ + int nparam = 0; + enum sparmflags flags; + struct smac_param *params = NULL; + bool err, done; + bool greedy = false; + Token **tn = *tpp; + Token *t = *tn; + Token *name; + + /* + * DO NOT skip whitespace here, or we won't be able to distinguish: + * + * %define foo (a,b) ; no arguments, (a,b) is the expansion + * %define bar(a,b) ; two arguments, empty expansion + * + * This ambiguity was inherited from C. + */ + + if (!tok_is(t, '(')) + goto finish; + + if (tmpl) { + Token *tx = t; + Token **txpp = &tx; + int sparam; + + /* Count parameters first */ + sparam = parse_smacro_template(&txpp, NULL); + if (!sparam) + goto finish; /* No parameters, we're done */ + nasm_newn(params, sparam); + } + + /* Skip leading paren */ + tn = &t->next; + t = *tn; + + name = NULL; + flags = 0; + err = done = false; + + while (!done) { + if (!t) { + if (name || flags) + nasm_nonfatal("`)' expected to terminate macro template"); + else + nasm_nonfatal("parameter identifier expected"); + break; + } + + switch (t->type) { + case TOKEN_ID: + if (name) + goto bad; + name = t; + break; + case '=': + flags |= SPARM_EVAL; + break; + case '&': + flags |= SPARM_STR; + break; + case TOKEN_DBL_AND: + flags |= SPARM_STR|SPARM_CONDQUOTE; + break; + case '!': + flags |= SPARM_NOSTRIP; + break; + case '+': + flags |= SPARM_GREEDY|SPARM_OPTIONAL; + greedy = true; + break; + case ',': + if (greedy) + nasm_nonfatal("greedy parameter must be last"); + goto end_param; + case ')': + done = true; + goto end_param; + end_param: + if (params) { + if (name) + steal_Token(¶ms[nparam].name, name); + params[nparam].flags = flags; + } + nparam++; + name = NULL; + flags = 0; + break; + case TOKEN_WHITESPACE: + break; + default: + bad: + if (!err) { + nasm_nonfatal("garbage `%s' in macro parameter list", + tok_text(t)); + err = true; + } + break; + } + + tn = &t->next; + t = *tn; + } + +finish: + while (t && t->type == TOKEN_WHITESPACE) { + tn = &t->next; + t = t->next; + } + *tpp = tn; + if (tmpl) { + tmpl->nparam = nparam; + tmpl->varadic = greedy; + tmpl->params = params; + } + return nparam; +} + +/* + * Common code for defining an smacro. The tmpl argument, if not NULL, + * contains any macro parameters that aren't explicit arguments; + * those are the more uncommon macro variants. + */ +static SMacro *define_smacro(const char *mname, bool casesense, + Token *expansion, SMacro *tmpl) +{ + SMacro *smac, **smhead; + struct hash_table *smtbl; + Context *ctx; + bool defining_alias = false; + int nparam = 0; + bool defined; + + if (tmpl) { + defining_alias = tmpl->alias; + nparam = tmpl->nparam; + if (nparam && !defining_alias) + mark_smac_params(expansion, tmpl, 0); + } + + ctx = get_ctx(mname, &mname); + + defined = smacro_defined(ctx, mname, nparam, &smac, casesense, true); + + if (defined) { + if (smac->alias) { + if (smac->in_progress) { + nasm_nonfatal("macro alias loop"); + goto fail; + } + + if (!defining_alias && !ppconf.noaliases) { + /* It is an alias macro; follow the alias link */ + SMacro *s; + + smac->in_progress++; + s = define_smacro(tok_text(smac->expansion), casesense, + expansion, tmpl); + smac->in_progress--; + return s; + } + } + + if (casesense ^ smac->casesense) { + /* + *!pp-macro-def-case-single [on] single-line macro defined both case sensitive and insensitive + *!=macro-def-case-single + *! warns when a single-line macro is defined both case + *! sensitive and case insensitive. + *! The new macro + *! definition will override (shadow) the original one, + *! although the original macro is not deleted, and will + *! be re-exposed if the new macro is deleted with + *! \c{%undef}, or, if the original macro is the case + *! insensitive one, the macro call is done with a + *! different case. + */ + nasm_warn(WARN_PP_MACRO_DEF_CASE_SINGLE, "case %ssensitive definition of macro `%s' will shadow %ssensitive macro `%s'", + casesense ? "" : "in", + mname, + smac->casesense ? "" : "in", + smac->name); + defined = false; + } else if ((!!nparam) ^ (!!smac->nparam)) { + /* + * Most recent versions of NASM considered this an error, + * so promote this warning to error by default. + * + *!pp-macro-def-param-single [err] single-line macro defined with and without parameters + *!=macro-def-param-single + *! warns if the same single-line macro is defined with and + *! without parameters. + *! The new macro + *! definition will override (shadow) the original one, + *! although the original macro is not deleted, and will + *! be re-exposed if the new macro is deleted with + *! \c{%undef}. + */ + nasm_warn(WARN_PP_MACRO_DEF_PARAM_SINGLE, + "macro `%s' defined both with and without parameters", + mname); + defined = false; + } else if (smac->nparam < nparam) { + /* + *!pp-macro-def-greedy-single [on] single-line macro + *!=macro-def-greedy-single + *! definition shadows greedy macro warns when a + *! single-line macro is defined which would match a + *! previously existing greedy definition. The new macro + *! definition will override (shadow) the original one, + *! although the original macro is not deleted, and will + *! be re-exposed if the new macro is deleted with + *! \c{%undef}, and will be invoked if called with a + *! parameter count that does not match the new definition. + */ + nasm_warn(WARN_PP_MACRO_DEF_GREEDY_SINGLE, + "defining macro `%s' shadows previous greedy definition", + mname); + defined = false; + } + } + + if (defined) { + /* + * We're redefinining, so we have to take over an + * existing SMacro structure. This means freeing + * what was already in it, but not the structure itself. + */ + clear_smacro(smac); + } else { + /* Create a new macro */ + smtbl = ctx ? &ctx->localmac : &smacros; + smhead = (SMacro **) hash_findi_add(smtbl, mname); + nasm_new(smac); + smac->next = *smhead; + *smhead = smac; + } + + smac->name = nasm_strdup(mname); + smac->casesense = casesense; + smac->expansion = reverse_tokens(expansion); + smac->expand = smacro_expand_default; + smac->nparam = nparam; + smac->nparam_min = nparam; + if (tmpl) { + smac->params = tmpl->params; + smac->alias = tmpl->alias; + smac->recursive = tmpl->recursive; + if (tmpl->expand) { + smac->expand = tmpl->expand; + smac->expandpvt = tmpl->expandpvt; + } + if (nparam) { + int nparam_min = nparam; + + smac->varadic = + !!(tmpl->params[nparam-1].flags & + (SPARM_GREEDY|SPARM_VARADIC)); + + while (nparam_min > 1) { + if (!(tmpl->params[nparam_min-1].flags & SPARM_OPTIONAL)) + break; + nparam_min--; + } + + smac->nparam_min = nparam_min; + } + } + if (ppdbg & (PDBG_SMACROS|PDBG_LIST_SMACROS)) { + list_smacro_def((smac->alias ? PP_DEFALIAS : PP_DEFINE) + + !casesense, ctx, smac); + } + return smac; + +fail: + free_tlist(expansion); + if (tmpl) + free_smacro_members(tmpl); + return NULL; +} + +/* + * Undefine an smacro + */ +static void undef_smacro(const char *mname, bool undefalias) +{ + SMacro **smhead, *s, **sp; + struct hash_table *smtbl; + Context *ctx; + + ctx = get_ctx(mname, &mname); + smtbl = ctx ? &ctx->localmac : &smacros; + smhead = (SMacro **)hash_findi(smtbl, mname, NULL); + + if (smhead) { + /* + * We now have a macro name... go hunt for it. + */ + sp = smhead; + while ((s = *sp) != NULL) { + if (!mstrcmp(s->name, mname, s->casesense)) { + if (s->alias && !undefalias) { + if (!ppconf.noaliases) { + if (s->in_progress) { + nasm_nonfatal("macro alias loop"); + } else { + s->in_progress = true; + undef_smacro(tok_text(s->expansion), false); + s->in_progress = false; + } + } + } else { + if (list_option('d')) + list_smacro_def(s->alias ? PP_UNDEFALIAS : PP_UNDEF, + ctx, s); + *sp = s->next; + free_smacro(s); + continue; + } + } + sp = &s->next; + } + } +} + +/* + * Parse a mmacro specification. + */ +static bool parse_mmacro_spec(Token *tline, MMacro *def, const char *directive) +{ + tline = tline->next; + tline = skip_white(tline); + tline = expand_id(tline); + if (!tok_is(tline, TOKEN_ID)) { + nasm_nonfatal("`%s' expects a macro name", directive); + return false; + } + +#if 0 + def->prev = NULL; +#endif + def->name = dup_text(tline); + def->plus = false; + def->nolist = 0; + def->nparam_min = 0; + def->nparam_max = 0; + + tline = expand_smacro(tline->next); + tline = skip_white(tline); + if (!tok_is(tline, TOKEN_NUM)) + nasm_nonfatal("`%s' expects a parameter count", directive); + else + def->nparam_min = def->nparam_max = read_param_count(tok_text(tline)); + if (tline && tok_is(tline->next, '-')) { + tline = tline->next->next; + if (tok_is(tline, '*')) { + def->nparam_max = INT_MAX; + } else if (!tok_is(tline, TOKEN_NUM)) { + nasm_nonfatal("`%s' expects a parameter count after `-'", directive); + } else { + def->nparam_max = read_param_count(tok_text(tline)); + if (def->nparam_min > def->nparam_max) { + nasm_nonfatal("minimum parameter count exceeds maximum"); + def->nparam_max = def->nparam_min; + } + } + } + if (tline && tok_is(tline->next, '+')) { + tline = tline->next; + def->plus = true; + } + if (tline && tok_is(tline->next, TOKEN_ID) && + tline->next->len == 7 && + !nasm_stricmp(tline->next->text.a, ".nolist")) { + tline = tline->next; + if (!list_option('f')) + def->nolist |= NL_LIST|NL_LINE; + } + + /* + * Handle default parameters. + */ + def->ndefs = 0; + if (tline && tline->next) { + Token **comma; + def->dlist = tline->next; + tline->next = NULL; + comma = count_mmac_params(def->dlist, &def->ndefs, &def->defaults); + if (!ppconf.sane_empty_expansion && comma) { + *comma = NULL; + def->ndefs--; + nasm_warn(WARN_PP_MACRO_PARAMS_LEGACY, + "dropping trailing empty default parameter in definition of multi-line macro `%s'", + def->name); + } + } else { + def->dlist = NULL; + def->defaults = NULL; + } + def->expansion = NULL; + + if (def->defaults && def->ndefs > def->nparam_max - def->nparam_min && + !def->plus) { + /* + *!pp-macro-defaults [on] macros with more default than optional parameters + *!=macro-defaults + *! warns when a macro has more default parameters than optional parameters. + *! See \k{mlmacdef} for why might want to disable this warning. + */ + nasm_warn(WARN_PP_MACRO_DEFAULTS, + "too many default macro parameters in macro `%s'", def->name); + } + + return true; +} + + +/* + * Decode a size directive + */ +static int parse_size(const char *str) { + static const char *size_names[] = + { "byte", "dword", "oword", "qword", "tword", "word", "yword" }; + static const int sizes[] = + { 0, 1, 4, 16, 8, 10, 2, 32 }; + return str ? sizes[bsii(str, size_names, ARRAY_SIZE(size_names))+1] : 0; +} + +/* + * Process a preprocessor %pragma directive. Currently there are none. + * Gets passed the token list starting with the "preproc" token from + * "%pragma preproc". + */ +static void do_pragma_preproc(Token *tline) +{ + const char *txt; + + /* Skip to the real stuff */ + tline = tline->next; + tline = skip_white(tline); + + if (!tok_is(tline, TOKEN_ID)) + return; + + txt = tok_text(tline); + if (!nasm_stricmp(txt, "sane_empty_expansion")) { + tline = skip_white(tline->next); + ppconf.sane_empty_expansion = + pp_get_boolean_option(tline, ppconf.sane_empty_expansion); + } else { + /* Unknown pragma, ignore for now */ + } +} + +static bool is_macro_id(const Token *t) +{ + return tok_is(t, TOKEN_ID) || tok_is(t, TOKEN_LOCAL_MACRO); +} + +static const char *get_id(Token **tp, const char *dname) +{ + const char *id; + Token *t = *tp; + + t = t->next; /* Skip directive */ + t = skip_white(t); + t = expand_id(t); + + if (!is_macro_id(t)) { + nasm_nonfatal("`%s' expects a macro identifier", dname); + return NULL; + } + + id = tok_text(t); + t = skip_white(t); + *tp = t; + return id; +} + +/* Parse a %use package name and find the package. Set *err on syntax error. */ +static const struct use_package * +get_use_pkg(Token *t, const char *dname, const char **name) +{ + const char *id; + + t = skip_white(t); + t = expand_smacro(t); + + *name = NULL; + + if (!t) { + nasm_nonfatal("`%s' expects a package name, got end of line", dname); + return NULL; + } else if (t->type != TOKEN_ID && t->type != TOKEN_STR) { + nasm_nonfatal("`%s' expects a package name, got `%s'", + dname, tok_text(t)); + return NULL; + } + + *name = id = unquote_token(t); + + t = t->next; + t = skip_white(t); + if (t) { + nasm_warn(WARN_PP_TRAILING, + "trailing garbage after `%s' ignored", dname); + } + + return nasm_find_use_package(id); +} + +/* + * Mark parameter tokens in an smacro definition. If the type argument + * is 0, create smac param tokens, otherwise use the type specified; + * normally this is used for TOKEN_XDEF_PARAM, which is used to protect + * parameter tokens during expansion during %xdefine. + * + * tmpl may not be NULL here. + */ +static void mark_smac_params(Token *tline, const SMacro *tmpl, + enum token_type type) +{ + const struct smac_param *params = tmpl->params; + int nparam = tmpl->nparam; + Token *t; + int i; + + list_for_each(t, tline) { + if (t->type != TOKEN_ID && t->type != TOKEN_XDEF_PARAM) + continue; + + for (i = 0; i < nparam; i++) { + if (tok_text_match(t, ¶ms[i].name)) + t->type = type ? type : tok_smac_param(i); + } + } +} + +/** + * %clear selected macro sets either globally or in contexts + */ +static void do_clear(enum clear_what what, bool context) +{ + if (context) { + if (what & CLEAR_ALLDEFINE) { + Context *ctx; + list_for_each(ctx, cstk) + clear_smacro_table(&ctx->localmac, what); + } + /* Nothing else can be context-local */ + } else { + if (what & CLEAR_ALLDEFINE) + clear_smacro_table(&smacros, what); + if (what & CLEAR_MMACRO) + free_mmacro_table(&mmacros); + } +} + +/* + * Process a %line directive, including the gcc/cpp compatibility + * form with a # at the front. + */ +static int line_directive(Token *origline, Token *tline) +{ + int k, m; + bool err; + const char *dname; + + /* + * Valid syntaxes: + * %line nnn[+mmm] [filename] + * %line nnn[+mmm] "filename" flags... + * + * "flags" are for gcc compatibility and are currently ignored. + * + * '#' at the beginning of the line is also treated as a %line + * directive, again for compatibility with gcc. + */ + if ((ppopt & PP_NOLINE) || istk->mstk.mstk) + goto done; + + dname = tok_text(tline); + tline = tline->next; + tline = skip_white(tline); + if (!tok_is(tline, TOKEN_NUM)) { + nasm_nonfatal("`%s' expects a line number", dname); + goto done; + } + k = readnum(tok_text(tline), &err); + m = 1; + tline = tline->next; + if (tok_is(tline, '+') || tok_is(tline, '-')) { + bool minus = tok_is(tline, '-'); + tline = tline->next; + if (!tok_is(tline, TOKEN_NUM)) { + nasm_nonfatal("`%s' expects a line increment", dname); + goto done; + } + m = readnum(tok_text(tline), &err); + if (minus) + m = -m; + tline = tline->next; + } + tline = skip_white(tline); + if (tline) { + if (tline->type == TOKEN_STR) { + const char *fname; + /* + * If this is a quoted string, ignore anything after + * it; this allows for compatibility with gcc's + * additional flags options. + */ + + fname = unquote_token_anystr(tline, BADCTL, + dname[0] == '#' ? STR_C : STR_NASM); + src_set_fname(fname); + } else { + char *fname; + fname = detoken(tline, false); + src_set_fname(fname); + nasm_free(fname); + } + } + src_set_linnum(k); + + istk->where = src_where(); + istk->lineinc = m; + goto done; + +done: + free_tlist(origline); + return DIRECTIVE_FOUND; +} + +/* + * Used for the %arg and %local directives + */ +static void define_stack_smacro(const char *name, int offset) +{ + Token *tt; + + tt = make_tok_char(NULL, ')'); + tt = make_tok_num(tt, offset); + if (!tok_is(tt, '-')) + tt = make_tok_char(tt, '+'); + tt = new_Token(tt, TOKEN_ID, StackPointer, 0); + tt = make_tok_char(tt, '('); + + define_smacro(name, true, tt, NULL); +} + + +/* + * This implements the %assign directive: expand an smacro expression, + * then evaluate it, and assign the corresponding number to an smacro. + */ +static void assign_smacro(const char *mname, bool casesense, + Token *tline, const char *dname) +{ + struct ppscan pps; + expr *evalresult; + struct tokenval tokval; + + tline = expand_smacro(tline); + + pps.tptr = tline; + pps.ntokens = -1; + tokval.t_type = TOKEN_INVALID; + evalresult = evaluate(ppscan, &pps, &tokval, NULL, true, NULL); + free_tlist(tline); + if (!evalresult) + return; + + if (tokval.t_type) { + nasm_warn(WARN_PP_TRAILING, + "trailing garbage after expression ignored"); + } + if (!is_simple(evalresult)) { + nasm_nonfatal("non-constant value given to `%s'", dname); + } else { + tline = make_tok_num(NULL, reloc_value(evalresult)); + + /* + * We now have a macro name, an implicit parameter count of + * zero, and a numeric token to use as an expansion. Create + * and store an SMacro. + */ + define_smacro(mname, casesense, tline, NULL); + } +} + +/* + * Implement string concatenation as used by the %strcat directive + * and function. + */ +static Token *pp_strcat(Token *tline, const char *dname) +{ + + size_t len; + Token *t; + Token *res = NULL; + char *q, *qbuf; + + len = 0; + list_for_each(t, tline) { + switch (t->type) { + case TOKEN_WHITESPACE: + case TOKEN_COMMA: + break; + case TOKEN_STR: + unquote_token(t); + /* fall through */ + case TOKEN_INTERNAL_STR: + len += t->len; + break; + default: + nasm_nonfatal("non-string passed to `%s': %s", dname, + tok_text(t)); + goto err; + } + } + + q = qbuf = nasm_malloc(len+1); + list_for_each(t, tline) { + if (t->type == TOKEN_INTERNAL_STR) + q = mempcpy(q, tok_text(t), t->len); + } + *q = '\0'; + + res = make_tok_qstr_len(NULL, qbuf, len); + nasm_free(qbuf); +err: + free_tlist(tline); + return res; +} + + +/* + * Implement substring extraction as used by the %substr directive + * and function. + */ +static Token *pp_substr_common(Token *t, int64_t start, int64_t count); + +static Token *pp_substr(Token *tline, const char *dname) +{ + int64_t start, count; + struct ppscan pps; + Token *t; + Token *res = NULL; + expr *evalresult; + struct tokenval tokval; + + t = skip_white(tline); + + if (!tok_is(t, TOKEN_STR)) { + nasm_nonfatal("`%s' requires a string as parameter", dname); + goto err; + } + + pps.tptr = skip_white(t->next); + if (tok_is(pps.tptr, TOKEN_COMMA)) + pps.tptr = skip_white(pps.tptr->next); + if (!pps.tptr) { + nasm_nonfatal("`%s' requires a starting index", dname); + goto err; + } + + pps.ntokens = -1; + tokval.t_type = TOKEN_INVALID; + evalresult = evaluate(ppscan, &pps, &tokval, NULL, true, NULL); + if (!evalresult) { + goto err; + } else if (!is_simple(evalresult)) { + nasm_nonfatal("non-constant value given to `%s'", dname); + goto err; + } + start = evalresult->value; + + pps.tptr = skip_white(pps.tptr); + if (!pps.tptr) { + count = 1; /* Backwards compatibility: one character */ + } else { + tokval.t_type = TOKEN_INVALID; + evalresult = evaluate(ppscan, &pps, &tokval, NULL, true, NULL); + if (!evalresult) { + goto err; + } else if (!is_simple(evalresult)) { + nasm_nonfatal("non-constant value given to `%s'", dname); + goto err; + } + count = evalresult->value; + } + + res = pp_substr_common(t, start, count); + +err: + free_tlist(tline); + return res; +} + +static Token *pp_substr_common(Token *t, int64_t start, int64_t count) +{ + size_t len; + const char *txt; + + unquote_token(t); + len = t->len; + + /* make start and count being in range */ + start -= 1; /* First character is 1 */ + + if (start < 0) + start = 0; + if (count < 0) + count = len + count + 1 - start; + if (start + count > (int64_t)len) + count = len - start; + if (!len || count < 0 || start >=(int64_t)len) + start = -1, count = 0; /* empty string */ + + txt = (start < 0) ? "" : tok_text(t) + start; + return make_tok_qstr_len(NULL, txt, count); +} + +/** + * find and process preprocessor directive in passed line + * Find out if a line contains a preprocessor directive, and deal + * with it if so. + * + * If a directive _is_ found, it is the responsibility of this routine + * (and not the caller) to free_tlist() the line. + * + * @param tline a pointer to the current tokeninzed line linked list + * @param output if this directive generated output + * @return DIRECTIVE_FOUND or NO_DIRECTIVE_FOUND + * + */ +static int do_directive(Token *tline, Token **output) +{ + enum preproc_token op; + int j; + enum nolist_flags nolist; + bool casesense; + int offset; + const char *p; + char *q; + const char *found_path; + const char *mname; + struct ppscan pps; + Include *inc; + Context *ctx; + Cond *cond; + MMacro *mmac, **mmhead; + Token *t = NULL, *tt, *macro_start, *last, *origline; + Line *l; + struct tokenval tokval; + expr *evalresult; + int64_t count; + errflags severity; + const char *dname; /* Name of directive, for messages */ + + *output = NULL; /* No output generated */ + origline = tline; + + /* cpp-like line directive, must not be preceded by whitespace */ + if (tok_is(tline, '#')) + return line_directive(origline, tline); + + tline = skip_white(tline); + if (!tline) + return NO_DIRECTIVE_FOUND; + + switch (tline->type) { + case TOKEN_PREPROC_ID: + dname = tok_text(tline); + /* + * For it to be a directive, the second character has to be an + * ASCII letter; this is a very quick and dirty test for that; + * all other cases will get rejected by the token hash. + */ + if ((uint8_t)(dname[1] - 'A') > (uint8_t)('z' - 'A')) + return NO_DIRECTIVE_FOUND; + + op = pp_token_hash(dname); + break; + + case TOKEN_ID: + if (likely(!(ppopt & PP_TASM))) + return NO_DIRECTIVE_FOUND; + + dname = tok_text(tline); + op = pp_tasm_token_hash(dname); + break; + + default: + return NO_DIRECTIVE_FOUND; + } + + switch (op) { + case PP_invalid: + return NO_DIRECTIVE_FOUND; + + case PP_LINE: + /* + * %line directives are always processed immediately and + * unconditionally, as they are intended to reflect position + * in externally preprocessed sources. + */ + return line_directive(origline, tline); + + default: + break; + } + + if (unlikely(ppopt & PP_TRIVIAL)) + goto done; + + casesense = true; + if (PP_HAS_CASE(op) & PP_INSENSITIVE(op)) { + casesense = false; + op--; + } + + /* + * If we're in a non-emitting branch of a condition construct, + * or walking to the end of an already terminated %rep block, + * we should ignore all directives except for condition + * directives. + */ + if (((istk->conds && !emitting(istk->conds->state)) || + (istk->mstk.mstk && !istk->mstk.mstk->in_progress)) && + !is_condition(op)) { + return NO_DIRECTIVE_FOUND; + } + + /* + * If we're defining a macro or reading a %rep block, we should + * ignore all directives except for %macro/%imacro (which nest), + * %endm/%endmacro, %line and (only if we're in a %rep block) %endrep. + * If we're in a %rep block, another %rep nests, so should be let through. + */ + if (defining && op != PP_MACRO && op != PP_RMACRO && + op != PP_ENDMACRO && op != PP_ENDM && + (defining->name || (op != PP_ENDREP && op != PP_REP))) { + return NO_DIRECTIVE_FOUND; + } + + if (defining) { + if (op == PP_MACRO || op == PP_RMACRO) { + nested_mac_count++; + return NO_DIRECTIVE_FOUND; + } else if (nested_mac_count > 0) { + if (op == PP_ENDMACRO) { + nested_mac_count--; + return NO_DIRECTIVE_FOUND; + } + } + if (!defining->name) { + if (op == PP_REP) { + nested_rep_count++; + return NO_DIRECTIVE_FOUND; + } else if (nested_rep_count > 0) { + if (op == PP_ENDREP) { + nested_rep_count--; + return NO_DIRECTIVE_FOUND; + } + } + } + } + + if (pp_op_may_be_function[op]) { + if (tok_is(skip_white(tline->next), '(')) + return NO_DIRECTIVE_FOUND; /* Expand as a preprocessor function */ + } + + switch (op) { + default: + nasm_nonfatal("unknown preprocessor directive `%s'", dname); + return NO_DIRECTIVE_FOUND; /* didn't get it */ + + case PP_PRAGMA: + /* + * %pragma namespace options... + * + * The namespace "preproc" is reserved for the preprocessor; + * all other namespaces generate a [pragma] assembly directive. + * + * Invalid %pragmas are ignored and may have different + * meaning in future versions of NASM. + */ + t = tline; + tline = tline->next; + t->next = NULL; + tline = zap_white(expand_smacro(tline)); + if (tok_is(tline, TOKEN_ID)) { + if (!nasm_stricmp(tok_text(tline), "preproc")) { + /* Preprocessor pragma */ + do_pragma_preproc(tline); + free_tlist(tline); + } else { + /* Build the assembler directive */ + + /* Append bracket to the end of the output */ + for (t = tline; t->next; t = t->next) + ; + t->next = make_tok_char(NULL, ']'); + + /* Prepend "[pragma " */ + t = new_White(tline); + t = new_Token(t, TOKEN_ID, "pragma", 6); + t = make_tok_char(t, '['); + tline = t; + *output = tline; + } + } + break; + + case PP_STACKSIZE: + { + const char *arg; + + /* Directive to tell NASM what the default stack size is. The + * default is for a 16-bit stack, and this can be overridden with + * %stacksize large. + */ + tline = skip_white(tline->next); + if (!tline || tline->type != TOKEN_ID) { + nasm_nonfatal("`%s' missing size parameter", dname); + break; + } + + arg = tok_text(tline); + + if (nasm_stricmp(arg, "flat") == 0) { + /* All subsequent ARG directives are for a 32-bit stack */ + StackSize = 4; + StackPointer = "ebp"; + ArgOffset = 8; + LocalOffset = 0; + } else if (nasm_stricmp(arg, "flat64") == 0) { + /* All subsequent ARG directives are for a 64-bit stack */ + StackSize = 8; + StackPointer = "rbp"; + ArgOffset = 16; + LocalOffset = 0; + } else if (nasm_stricmp(arg, "large") == 0) { + /* All subsequent ARG directives are for a 16-bit stack, + * far function call. + */ + StackSize = 2; + StackPointer = "bp"; + ArgOffset = 4; + LocalOffset = 0; + } else if (nasm_stricmp(arg, "small") == 0) { + /* All subsequent ARG directives are for a 16-bit stack, + * far function call. We don't support near functions. + */ + StackSize = 2; + StackPointer = "bp"; + ArgOffset = 6; + LocalOffset = 0; + } else { + nasm_nonfatal("`%s' invalid size type", dname); + } + break; + } + + case PP_ARG: + /* TASM like ARG directive to define arguments to functions, in + * the following form: + * + * ARG arg1:WORD, arg2:DWORD, arg4:QWORD + */ + offset = ArgOffset; + do { + const char *arg; + int size = StackSize; + + /* Find the argument name */ + tline = skip_white(tline->next); + if (!tline || tline->type != TOKEN_ID) { + nasm_nonfatal("`%s' missing argument parameter", dname); + goto done; + } + arg = tok_text(tline); + + /* Find the argument size type */ + tline = tline->next; + if (!tok_is(tline, ':')) { + nasm_nonfatal("syntax error processing `%s' directive", dname); + goto done; + } + tline = tline->next; + if (!tok_is(tline, TOKEN_ID)) { + nasm_nonfatal("`%s' missing size type parameter", dname); + goto done; + } + + /* Allow macro expansion of type parameter */ + tt = tokenize(tok_text(tline)); + tt = expand_smacro(tt); + size = parse_size(tok_text(tt)); + if (!size) { + nasm_nonfatal("invalid size type for `%s' missing directive", dname); + free_tlist(tt); + goto done; + } + free_tlist(tt); + + /* Round up to even stack slots */ + size = ALIGN(size, StackSize); + + /* Now define the macro for the argument */ + define_stack_smacro(arg, offset); + offset += size; + + /* Move to the next argument in the list */ + tline = skip_white(tline->next); + } while (tok_is(tline, ',')); + ArgOffset = offset; + break; + + case PP_LOCAL: + { + int total_size = 0; + + /* TASM like LOCAL directive to define local variables for a + * function, in the following form: + * + * LOCAL local1:WORD, local2:DWORD, local4:QWORD = LocalSize + * + * The '= LocalSize' at the end is ignored by NASM, but is + * required by TASM to define the local parameter size (and used + * by the TASM macro package). + */ + offset = LocalOffset; + do { + const char *local; + int size = StackSize; + + /* Find the argument name */ + tline = skip_white(tline->next); + if (!tline || tline->type != TOKEN_ID) { + nasm_nonfatal("`%s' missing argument parameter", dname); + goto done; + } + local = tok_text(tline); + + /* Find the argument size type */ + tline = tline->next; + if (!tok_is(tline, ':')) { + nasm_nonfatal("syntax error processing `%s' directive", dname); + goto done; + } + tline = tline->next; + if (!tok_is(tline, TOKEN_ID)) { + nasm_nonfatal("`%s' missing size type parameter", dname); + goto done; + } + + /* Allow macro expansion of type parameter */ + tt = tokenize(tok_text(tline)); + tt = expand_smacro(tt); + size = parse_size(tok_text(tt)); + if (!size) { + nasm_nonfatal("invalid size type for `%s' missing directive", dname); + free_tlist(tt); + goto done; + } + free_tlist(tt); + + /* Round up to even stack slots */ + size = ALIGN(size, StackSize); + + offset += size; /* Negative offset, increment before */ + + /* Now define the macro for the argument */ + define_stack_smacro(local, -offset); + + /* How is this different from offset? */ + total_size += size; + + /* Move to the next argument in the list */ + tline = skip_white(tline->next); + } while (tok_is(tline, ',')); + + /* Now define the assign to setup the enter_c macro correctly */ + tt = make_tok_num(NULL, total_size); + tt = make_tok_char(tt, '+'); + tt = new_Token(tt, TOKEN_LOCAL_MACRO, "%$localsize", 11); + assign_smacro("%$localsize", true, tt, dname); + + LocalOffset = offset; + break; + } + case PP_CLEAR: + { + bool context = false; + + t = tline->next = expand_smacro(tline->next); + t = skip_white(t); + if (!t) { + /* Emulate legacy behavior */ + do_clear(CLEAR_DEFINE|CLEAR_MMACRO, false); + } else { + while ((t = skip_white(t)) && t->type == TOKEN_ID) { + const char *txt = tok_text(t); + if (!nasm_stricmp(txt, "all")) { + do_clear(CLEAR_ALL, context); + } else if (!nasm_stricmp(txt, "define") || + !nasm_stricmp(txt, "def") || + !nasm_stricmp(txt, "smacro")) { + do_clear(CLEAR_DEFINE, context); + } else if (!nasm_stricmp(txt, "defalias") || + !nasm_stricmp(txt, "alias") || + !nasm_stricmp(txt, "salias")) { + do_clear(CLEAR_DEFALIAS, context); + } else if (!nasm_stricmp(txt, "alldef") || + !nasm_stricmp(txt, "alldefine")) { + do_clear(CLEAR_ALLDEFINE, context); + } else if (!nasm_stricmp(txt, "macro") || + !nasm_stricmp(txt, "mmacro")) { + do_clear(CLEAR_MMACRO, context); + } else if (!nasm_stricmp(txt, "context") || + !nasm_stricmp(txt, "ctx")) { + context = true; + } else if (!nasm_stricmp(txt, "global")) { + context = false; + } else if (!nasm_stricmp(txt, "nothing") || + !nasm_stricmp(txt, "none") || + !nasm_stricmp(txt, "ignore") || + !nasm_stricmp(txt, "-") || + !nasm_stricmp(txt, "--")) { + /* Do nothing */ + } else { + nasm_nonfatal("invalid option to %s: %s", dname, txt); + t = NULL; + } + } + } + + t = skip_white(t); + if (t) { + nasm_warn(WARN_PP_TRAILING, + "trailing garbage after `%s' ignored", dname); + } + break; + } + + case PP_DEPEND: + t = tline->next = expand_smacro(tline->next); + t = skip_white(t); + if (!t || (t->type != TOKEN_STR && + t->type != TOKEN_INTERNAL_STR)) { + nasm_nonfatal("`%s' expects a file name", dname); + goto done; + } + if (skip_white(t->next)) { + nasm_warn(WARN_PP_TRAILING, + "trailing garbage after `%s' ignored", dname); + } + + strlist_add(deplist, unquote_token_cstr(t)); + goto done; + + case PP_INCLUDE: + case PP_REQUIRE: + t = tline->next = expand_smacro(tline->next); + t = skip_white(t); + + if (!t || (t->type != TOKEN_STR && + t->type != TOKEN_INTERNAL_STR)) { + nasm_nonfatal("`%s' expects a file name", dname); + goto done; + } + if (skip_white(t->next)) { + nasm_warn(WARN_PP_TRAILING, + "trailing garbage after `%s' ignored", dname); + } + p = unquote_token_cstr(t); + nasm_new(inc); + inc->next = istk; + found_path = NULL; + inc->fp = inc_fopen(p, deplist, &found_path, + (pp_mode == PP_DEPS) ? INC_OPTIONAL : + (op == PP_REQUIRE) ? INC_REQUIRED : + INC_NEEDED, NF_TEXT); + if (!inc->fp) { + /* -MG given but file not found, or repeated %require */ + nasm_free(inc); + } else { + inc->nolist = istk->nolist; + inc->noline = istk->noline; + inc->where = istk->where; + inc->lineinc = 0; + istk = inc; + if (!istk->noline) { + src_set(0, found_path ? found_path : p); + istk->where = src_where(); + istk->lineinc = 1; + if (ppdbg & PDBG_INCLUDE) + dfmt->debug_include(true, istk->next->where, istk->where); + } + if (!istk->nolist) + lfmt->uplevel(LIST_INCLUDE, 0); + } + break; + + case PP_USE: + { + const struct use_package *pkg; + const char *name; + + pkg = get_use_pkg(tline->next, dname, &name); + if (!name) + goto done; + if (!pkg) { + nasm_nonfatal("unknown `%s' package: `%s'", dname, name); + } else if (!use_loaded[pkg->index]) { + /* + * Not already included, go ahead and include it. + * Treat it as an include file for the purpose of + * producing a listing. + */ + use_loaded[pkg->index] = true; + stdmacpos = pkg->macros; + nasm_new(inc); + inc->next = istk; + if (!list_option('b')) { + inc->nolist++; + inc->noline++; + } + istk = inc; + if (!istk->nolist) + lfmt->uplevel(LIST_INCLUDE, 0); + if (!inc->noline) + src_set(0, NULL); + } + break; + } + case PP_PUSH: + case PP_REPL: + case PP_POP: + tline = tline->next; + tline = skip_white(tline); + tline = expand_id(tline); + if (tline) { + if (!tok_is(tline, TOKEN_ID)) { + nasm_nonfatal("`%s' expects a context identifier", dname); + goto done; + } + if (skip_white(tline->next)) { + nasm_warn(WARN_PP_TRAILING, "trailing garbage after `%s' ignored", + dname); + } + p = tok_text(tline); + } else { + p = NULL; /* Anonymous */ + } + + if (op == PP_PUSH) { + nasm_new(ctx); + ctx->depth = cstk ? cstk->depth + 1 : 1; + ctx->next = cstk; + ctx->name = p ? nasm_strdup(p) : NULL; + ctx->number = unique++; + cstk = ctx; + } else { + /* %pop or %repl */ + if (!cstk) { + nasm_nonfatal("`%s': context stack is empty", dname); + } else if (op == PP_POP) { + if (p && (!cstk->name || nasm_stricmp(p, cstk->name))) + nasm_nonfatal("`%s' in wrong context: %s, " + "expected %s", + dname, cstk->name ? cstk->name : "anonymous", p); + else + ctx_pop(); + } else { + /* op == PP_REPL */ + nasm_free((char *)cstk->name); + cstk->name = p ? nasm_strdup(p) : NULL; + p = NULL; + } + } + break; + case PP_FATAL: + severity = ERR_FATAL; + goto issue_error; + case PP_ERROR: + severity = ERR_NONFATAL|ERR_PASS2; + goto issue_error; + case PP_WARNING: + /*! + *!user [on] %warning directives + *! controls output of \c{%warning} directives (see \k{pperror}). + */ + severity = ERR_WARNING|WARN_USER|ERR_PASS2; + goto issue_error; + +issue_error: + { + /* Only error out if this is the final pass */ + tline->next = expand_smacro(tline->next); + tline = tline->next; + tline = skip_white(tline); + t = tline ? tline->next : NULL; + t = skip_white(t); + if (tok_is(tline, TOKEN_STR) && !t) { + /* The line contains only a quoted string */ + p = unquote_token(tline); /* Ignore NUL character truncation */ + nasm_error(severity, "%s", p); + } else { + /* Not a quoted string, or more than a quoted string */ + q = detoken(tline, false); + nasm_error(severity, "%s", q); + nasm_free(q); + } + break; + } + + CASE_PP_IF: + if (istk->conds && !emitting(istk->conds->state)) + j = COND_NEVER; + else { + j = if_condition(tline->next, op); + tline->next = NULL; /* it got freed */ + } + cond = nasm_malloc(sizeof(Cond)); + cond->next = istk->conds; + cond->state = j; + istk->conds = cond; + if(istk->mstk.mstk) + istk->mstk.mstk->condcnt++; + break; + + CASE_PP_ELIF: + if (!istk->conds) { + nasm_nonfatal("`%s': no matching `%%if'", dname); + break; + } + switch(istk->conds->state) { + case COND_IF_TRUE: + istk->conds->state = COND_DONE; + break; + + case COND_DONE: + case COND_NEVER: + break; + + case COND_ELSE_TRUE: + case COND_ELSE_FALSE: + /*! + *!pp-else-elif [on] %elif after %else + *! warns that an \c{%%elif}-type directive was encountered + *! after \c[%%else} has already been encounted. As a result, the + *! content of the \c{%%elif} will never be expanded. + */ + nasm_warn(WARN_PP_ELSE_ELIF|ERR_PP_PRECOND, + "`%s' after `%%else', ignoring content", dname); + istk->conds->state = COND_NEVER; + break; + + case COND_IF_FALSE: + /* + * IMPORTANT: In the case of %if, we will already have + * called expand_mmac_params(); however, if we're + * processing an %elif we must have been in a + * non-emitting mode, which would have inhibited + * the normal invocation of expand_mmac_params(). + * Therefore, we have to do it explicitly here. + */ + j = if_condition(expand_mmac_params(tline->next), op); + tline->next = NULL; /* it got freed */ + istk->conds->state = j; + break; + } + break; + + case PP_ELSE: + if (tline->next) + nasm_warn(WARN_PP_TRAILING|ERR_PP_PRECOND, + "trailing garbage after `%s' ignored", dname); + if (!istk->conds) { + nasm_nonfatal("`%s': no matching `%%if'", dname); + break; + } + switch(istk->conds->state) { + case COND_IF_TRUE: + case COND_DONE: + istk->conds->state = COND_ELSE_FALSE; + break; + + case COND_NEVER: + break; + + case COND_IF_FALSE: + istk->conds->state = COND_ELSE_TRUE; + break; + + case COND_ELSE_TRUE: + case COND_ELSE_FALSE: + /*! + *!pp-else-else [on] %else after %else + *! warns that a second \c{%else} clause was found for + *! the same \c{%if} statement. The content of this \c{%else} + *! clause will never be expanded. + */ + nasm_warn(WARN_PP_ELSE_ELSE|ERR_PP_PRECOND, + "`%s' after `%%else', ignoring content", dname); + istk->conds->state = COND_NEVER; + break; + } + break; + + case PP_ENDIF: + if (tline->next) { + nasm_warn(WARN_PP_TRAILING|ERR_PP_PRECOND, + "trailing garbage after `%s' ignored", dname); + } + if (!istk->conds) { + nasm_nonfatal("`%s': no matching `%%if'", dname); + break; + } + cond = istk->conds; + istk->conds = cond->next; + nasm_free(cond); + if(istk->mstk.mstk) + istk->mstk.mstk->condcnt--; + break; + + case PP_RMACRO: + case PP_MACRO: + { + MMacro *def; + + nasm_assert(!defining); + nasm_new(def); + def->casesense = casesense; + /* + * dstk.mstk points to the previous definition bracket, + * whereas dstk.mmac points to the topmost mmacro, which + * in this case is the one we are just starting to create. + */ + def->dstk.mstk = defining; + def->dstk.mmac = def; + if (op == PP_RMACRO) + def->max_depth = nasm_limit[LIMIT_MACRO_LEVELS]; + if (!parse_mmacro_spec(tline, def, dname)) { + nasm_free(def); + goto done; + } + + defining = def; + defining->where = istk->where; + + mmac = (MMacro *) hash_findix(&mmacros, defining->name); + while (mmac) { + if (!strcmp(mmac->name, defining->name) && + (mmac->nparam_min <= defining->nparam_max + || defining->plus) + && (defining->nparam_min <= mmac->nparam_max + || mmac->plus)) { + /*! + *!pp-macro-redef-multi [on] redefining multi-line macro + *! warns that a multi-line macro is being redefined, + *! without first removing the old definition with + *! \c{%unmacro}. + */ + nasm_warn(WARN_PP_MACRO_REDEF_MULTI, + "redefining multi-line macro `%s'", + defining->name); + break; + } + mmac = mmac->next; + } + break; + } + + case PP_ENDM: + case PP_ENDMACRO: + if (!(defining && defining->name)) { + nasm_nonfatal("`%s': not defining a macro", tok_text(tline)); + goto done; + } + mmhead = (MMacro **) hash_findi_add(&mmacros, defining->name); + defining->next = *mmhead; + *mmhead = defining; + defining = NULL; + break; + + case PP_EXITMACRO: + /* + * We must search along istk->expansion until we hit a + * macro-end marker for a macro with a name. Then we + * bypass all lines between exitmacro and endmacro. + */ + list_for_each(l, istk->expansion) + if (l->finishes && l->finishes->name) + break; + + if (l) { + /* + * Remove all conditional entries relative to this + * macro invocation. (safe to do in this context) + */ + for ( ; l->finishes->condcnt > 0; l->finishes->condcnt --) { + cond = istk->conds; + if (!cond) { + l->finishes->condcnt = 0; + break; /* Possible in case of invalid nesting */ + } + istk->conds = cond->next; + nasm_free(cond); + } + istk->expansion = l; + } else { + nasm_nonfatal("`%%exitmacro' not within `%%macro' block"); + } + break; + + case PP_UNIMACRO: + casesense = false; + /* fall through */ + case PP_UNMACRO: + { + MMacro **mmac_p; + MMacro spec; + + nasm_zero(spec); + spec.casesense = casesense; + if (!parse_mmacro_spec(tline, &spec, dname)) { + goto done; + } + mmac_p = (MMacro **) hash_findi(&mmacros, spec.name, NULL); + if (!mmac_p) { + /* No such macro */ + free_tlist(spec.dlist); + break; + } + + /* Check the macro to be undefined is not being expanded */ + list_for_each(l, istk->expansion) { + if (l->finishes == *mmac_p) { + nasm_nonfatal("`%%unmacro' can't undefine the macro being expanded"); + /* + * Do not release the macro instance to avoid using the freed + * memory while proceeding the expansion. + */ + goto done; + } + } + + while (mmac_p && *mmac_p) { + mmac = *mmac_p; + if (mmac->casesense == spec.casesense && + !mstrcmp(mmac->name, spec.name, spec.casesense) && + mmac->nparam_min == spec.nparam_min && + mmac->nparam_max == spec.nparam_max && + mmac->plus == spec.plus) { + *mmac_p = mmac->next; + free_mmacro(mmac); + } else { + mmac_p = &mmac->next; + } + } + free_tlist(spec.dlist); + break; + } + + case PP_ROTATE: + while (tok_white(tline->next)) + tline = tline->next; + if (!tline->next) { + free_tlist(origline); + nasm_nonfatal("`%s' missing rotate count", dname); + return DIRECTIVE_FOUND; + } + t = expand_smacro(tline->next); + tline->next = NULL; + pps.tptr = tline = t; + pps.ntokens = -1; + tokval.t_type = TOKEN_INVALID; + evalresult = + evaluate(ppscan, &pps, &tokval, NULL, true, NULL); + free_tlist(tline); + if (!evalresult) + return DIRECTIVE_FOUND; + if (tokval.t_type) { + nasm_warn(WARN_PP_TRAILING, + "trailing garbage after expression ignored"); + } + if (!is_simple(evalresult)) { + nasm_nonfatal("non-constant value given to `%s'", dname); + return DIRECTIVE_FOUND; + } + mmac = istk->mstk.mmac; + if (!mmac) { + nasm_nonfatal("`%s' invoked outside a macro call", dname);; + } else if (mmac->nparam == 0) { + nasm_nonfatal("`%s' invoked within macro without parameters", dname); + } else { + int rotate = mmac->rotate + reloc_value(evalresult); + + rotate %= (int)mmac->nparam; + if (rotate < 0) + rotate += mmac->nparam; + + mmac->rotate = rotate; + } + break; + + case PP_REP: + { + MMacro *tmp_defining; + + nolist = 0; + tline = skip_white(tline->next); + if (tok_is(tline, TOKEN_ID) && tline->len == 7 && + !nasm_memicmp(tline->text.a, ".nolist", 7)) { + if (!list_option('f')) + nolist |= NL_LIST; /* ... but update line numbers */ + tline = skip_white(tline->next); + } + + if (tline) { + pps.tptr = expand_smacro(tline); + pps.ntokens = -1; + tokval.t_type = TOKEN_INVALID; + /* XXX: really critical?! */ + evalresult = + evaluate(ppscan, &pps, &tokval, NULL, true, NULL); + if (!evalresult) + goto done; + if (tokval.t_type) + nasm_warn(WARN_PP_TRAILING, "trailing garbage after expression ignored"); + if (!is_simple(evalresult)) { + nasm_nonfatal("non-constant value given to `%s'", dname); + goto done; + } + count = reloc_value(evalresult); + if (count > nasm_limit[LIMIT_REP]) { + nasm_nonfatal("`%s' count %"PRId64" exceeds limit (currently %"PRId64")", + dname, count, nasm_limit[LIMIT_REP]); + count = 0; + } else if (count < 0) { + /*! + *!pp-rep-negative [on] regative %rep count + *!=negative-rep + *! warns about a negative count given to the \c{%rep} + *! preprocessor directive. + */ + nasm_warn(ERR_PASS2|WARN_PP_REP_NEGATIVE, + "negative `%s' count: %"PRId64, dname, count); + count = 0; + } else { + count++; + } + } else { + nasm_nonfatal("`%s' expects a repeat count", dname); + count = 0; + } + tmp_defining = defining; + nasm_new(defining); + defining->nolist = nolist; + defining->in_progress = count; + defining->mstk = istk->mstk; + defining->dstk.mstk = tmp_defining; + defining->dstk.mmac = tmp_defining ? tmp_defining->dstk.mmac : NULL; + defining->where = istk->where; + break; + } + + case PP_ENDREP: + if (!defining || defining->name) { + nasm_nonfatal("`%%endrep': no matching `%%rep'"); + goto done; + } + + /* + * Now we have a "macro" defined - although it has no name + * and we won't be entering it in the hash tables - we must + * push a macro-end marker for it on to istk->expansion. + * After that, it will take care of propagating itself (a + * macro-end marker line for a macro which is really a %rep + * block will cause the macro to be re-expanded, complete + * with another macro-end marker to ensure the process + * continues) until the whole expansion is forcibly removed + * from istk->expansion by a %exitrep. + */ + nasm_new(l); + l->next = istk->expansion; + l->finishes = defining; + l->first = NULL; + l->where = src_where(); + istk->expansion = l; + + istk->mstk.mstk = defining; + + /* A loop does not change istk->noline */ + istk->nolist += !!(defining->nolist & NL_LIST); + if (!istk->nolist) + lfmt->uplevel(LIST_MACRO, 0); + + defining = defining->dstk.mstk; + break; + + case PP_EXITREP: + /* + * We must search along istk->expansion until we hit a + * macro-end marker for a macro with no name. Then we set + * its `in_progress' flag to 0. + */ + list_for_each(l, istk->expansion) + if (l->finishes && !l->finishes->name) + break; + + if (l) + l->finishes->in_progress = 0; + else + nasm_nonfatal("`%%exitrep' not within `%%rep' block"); + break; + + case PP_DEFINE: + case PP_XDEFINE: + case PP_DEFALIAS: + { + SMacro tmpl; + Token **lastp; + int nparam; + + if (!(mname = get_id(&tline, dname))) + goto done; + + nasm_zero(tmpl); + lastp = &tline->next; + nparam = parse_smacro_template(&lastp, &tmpl); + tline = *lastp; + *lastp = NULL; + + if (unlikely(op == PP_DEFALIAS)) { + macro_start = tline; + if (!is_macro_id(macro_start)) { + nasm_nonfatal("`%s' expects a macro identifier to alias", + dname); + goto done; + } + tt = macro_start->next; + macro_start->next = NULL; + tline = tline->next; + tline = skip_white(tline); + if (tline && tline->type) { + nasm_warn(WARN_PP_TRAILING, + "trailing garbage after aliasing identifier ignored"); + } + free_tlist(tt); + tmpl.alias = true; + } else { + if (op == PP_XDEFINE) { + /* Protect macro parameter tokens */ + if (nparam) + mark_smac_params(tline, &tmpl, TOKEN_XDEF_PARAM); + tline = expand_smacro(tline); + } + macro_start = tline; + } + + /* + * Good. We now have a macro name, a parameter count, and a + * token list (in reverse order) for an expansion. We ought + * to be OK just to create an SMacro, store it, and let + * free_tlist have the rest of the line (which we have + * carefully re-terminated after chopping off the expansion + * from the end). + */ + define_smacro(mname, casesense, macro_start, &tmpl); + break; + } + + case PP_UNDEF: + case PP_UNDEFALIAS: + if (!(mname = get_id(&tline, dname))) + goto done; + if (tline->next) + nasm_warn(WARN_PP_TRAILING, + "trailing garbage after macro name ignored"); + + undef_smacro(mname, op == PP_UNDEFALIAS); + break; + + case PP_DEFSTR: + if (!(mname = get_id(&tline, dname))) + goto done; + + last = tline; + tline = expand_smacro(tline->next); + last->next = NULL; + + tline = zap_white(tline); + q = detoken(tline, false); + macro_start = make_tok_qstr(NULL, q); + nasm_free(q); + + /* + * We now have a macro name, an implicit parameter count of + * zero, and a string token to use as an expansion. Create + * and store an SMacro. + */ + define_smacro(mname, casesense, macro_start, NULL); + break; + + case PP_DEFTOK: + if (!(mname = get_id(&tline, dname))) + goto done; + + last = tline; + tline = expand_smacro(tline->next); + last->next = NULL; + + t = skip_white(tline); + /* t should now point to the string */ + if (!tok_is(t, TOKEN_STR)) { + nasm_nonfatal("`%s' requires string as second parameter", dname); + free_tlist(tline); + goto done; + } + + /* + * Convert the string to a token stream. + */ + macro_start = tokenize(unquote_token_cstr(t)); + + /* + * We now have a macro name, an implicit parameter count of + * zero, and a numeric token to use as an expansion. Create + * and store an SMacro. + */ + define_smacro(mname, casesense, macro_start, NULL); + free_tlist(tline); + break; + + case PP_PATHSEARCH: + { + const char *found_path; + + if (!(mname = get_id(&tline, dname))) + goto done; + + last = tline; + tline = expand_smacro(tline->next); + last->next = NULL; + + t = skip_white(tline); + if (!t || (t->type != TOKEN_STR && + t->type != TOKEN_INTERNAL_STR)) { + nasm_nonfatal("`%s' expects a file name", dname); + free_tlist(tline); + goto done; + } + if (t->next) + nasm_warn(WARN_PP_TRAILING, + "trailing garbage after `%s' ignored", dname); + + p = unquote_token_cstr(t); + + inc_fopen(p, NULL, &found_path, INC_PROBE, NF_BINARY); + if (!found_path) + found_path = p; + macro_start = make_tok_qstr(NULL, found_path); + + /* + * We now have a macro name, an implicit parameter count of + * zero, and a string token to use as an expansion. Create + * and store an SMacro. + */ + define_smacro(mname, casesense, macro_start, NULL); + free_tlist(tline); + break; + } + + case PP_STRLEN: + if (!(mname = get_id(&tline, dname))) + goto done; + + last = tline; + tline = expand_smacro(tline->next); + last->next = NULL; + + t = skip_white(tline); + /* t should now point to the string */ + if (!tok_is(t, TOKEN_STR)) { + nasm_nonfatal("`%s' requires string as second parameter", dname); + free_tlist(tline); + free_tlist(origline); + return DIRECTIVE_FOUND; + } + + unquote_token(t); + macro_start = make_tok_num(NULL, t->len); + + /* + * We now have a macro name, an implicit parameter count of + * zero, and a numeric token to use as an expansion. Create + * and store an SMacro. + */ + define_smacro(mname, casesense, macro_start, NULL); + free_tlist(tline); + free_tlist(origline); + return DIRECTIVE_FOUND; + + case PP_STRCAT: + if (!(mname = get_id(&tline, dname))) + goto done; + + last = tline; + tline = expand_smacro(tline->next); + last->next = NULL; + + macro_start = pp_strcat(tline, dname); + /* + * We now have a macro name, an implicit parameter count of + * zero, and a string token to use as an expansion. Create + * and store an SMacro. + */ + if (macro_start) + define_smacro(mname, casesense, macro_start, NULL); + break; + + case PP_SUBSTR: + if (!(mname = get_id(&tline, dname))) + goto done; + + last = tline; + tline = expand_smacro(tline->next); + last->next = NULL; + + macro_start = pp_substr(tline, dname); + /* + * We now have a macro name, an implicit parameter count of + * zero, and a string token to use as an expansion. Create + * and store an SMacro. + */ + if (macro_start) + define_smacro(mname, casesense, macro_start, NULL); + break; + + case PP_ASSIGN: + if (!(mname = get_id(&tline, dname))) + goto done; + + last = tline; + tline = tline->next; + last->next = NULL; + assign_smacro(mname, casesense, tline, dname); + goto done; + + case PP_ALIASES: + tline = tline->next; + tline = expand_smacro(tline); + ppconf.noaliases = !pp_get_boolean_option(tline, !ppconf.noaliases); + break; + + case PP_LINE: + nasm_panic("`%s' directive not preprocessed early", dname); + break; + + case PP_NULL: + /* Goes nowhere, does nothing... */ + break; + + } + +done: + free_tlist(origline); + return DIRECTIVE_FOUND; +} + +/* + * Ensure that a macro parameter contains a condition code and + * nothing else. Return the condition code index if so, or -1 + * otherwise. + */ +static int find_cc(Token * t) +{ + Token *tt; + + if (!t) + return -1; /* Probably a %+ without a space */ + + t = skip_white(t); + if (!tok_is(t, TOKEN_ID)) + return -1; + tt = t->next; + tt = skip_white(tt); + if (tok_isnt(tt, ',')) + return -1; + + return bsii(tok_text(t), (const char **)conditions, + ARRAY_SIZE(conditions)); +} + +enum concat_flags { + CONCAT_ID = 0x01, + CONCAT_LOCAL_MACRO = 0x02, + CONCAT_ENVIRON = 0x04, + CONCAT_PREPROC_ID = 0x08, + CONCAT_NUM = 0x10, + CONCAT_FLOAT = 0x20, + CONCAT_OP = 0x40 /* Operators */ +}; + +struct concat_mask { + enum concat_flags mask_head; + enum concat_flags mask_tail; +}; + + +static inline bool pp_concat_match(const Token *t, enum concat_flags mask) +{ + enum concat_flags ctype = 0; + + if (!t) + return false; + + switch (t->type) { + case TOKEN_ID: + case TOKEN_QMARK: /* Keyword, treated as ID for pasting */ + ctype = CONCAT_ID; + break; + case TOKEN_LOCAL_MACRO: + ctype = CONCAT_LOCAL_MACRO; + break; + case TOKEN_ENVIRON: + ctype = CONCAT_ENVIRON; + break; + case TOKEN_PREPROC_ID: + ctype = CONCAT_PREPROC_ID; + break; + case TOKEN_NUM: + case TOKEN_FLOAT: + ctype = CONCAT_NUM; + break; + case TOKEN_HERE: + case TOKEN_BASE: + /* NASM 2.15 treats these as operators, but is that sane? */ + ctype = CONCAT_OP; + break; + case TOKEN_OTHER: + ctype = CONCAT_OP; /* For historical reasons */ + break; + default: + if (t->type > TOKEN_WHITESPACE && t->type < TOKEN_MAX_OPERATOR) + ctype = CONCAT_OP; + else + ctype = 0; + } + + return !!(ctype & mask); +} + +/* + * This routines walks over tokens stream and handles tokens + * pasting, if @handle_explicit passed then explicit pasting + * term is handled, otherwise -- implicit pastings only. + * The @m array can contain a series of token types which are + * executed as separate passes. + */ +static bool paste_tokens(Token **head, const struct concat_mask *m, + size_t mnum, bool handle_explicit) +{ + Token *tok, *t, *next, **prev_next, **prev_nonspace, **nextp; + bool pasted = false; + char *buf, *p; + size_t len, i; + + /* + * The last token before pasting. We need it + * to be able to connect new handled tokens. + * In other words if there were a tokens stream + * + * A -> B -> C -> D + * + * and we've joined tokens B and C, the resulting + * stream should be + * + * A -> BC -> D + */ + tok = *head; + prev_next = prev_nonspace = head; + + if (tok_white(tok) || tok_is(tok, TOKEN_PASTE)) + prev_nonspace = NULL; + + while (tok && (next = tok->next)) { + bool did_paste = false; + + switch (tok->type) { + case TOKEN_WHITESPACE: + /* Zap redundant whitespaces */ + tok->next = next = zap_white(next); + break; + + case TOKEN_PASTE: + /* Explicit pasting */ + if (!handle_explicit) + break; + + did_paste = true; + + /* Left pasting token is start of line, just drop %+ */ + if (!prev_nonspace) { + prev_next = nextp = head; + t = NULL; + } else { + prev_next = prev_nonspace; + t = *prev_next; + nextp = &t->next; + } + + /* + * Delete the %+ token itself plus any whitespace. + * In a sequence of %+ ... %+ ... %+ pasting sequences where + * some expansions in the middle have ended up empty, + * we can end up having multiple %+ tokens in a row; + * just drop whem in that case. + */ + next = *nextp; + while (next) { + if (next->type == TOKEN_PASTE || next->type == TOKEN_WHITESPACE) + next = delete_Token(next); + else + break; + } + *nextp = next; + + /* + * Nothing after? Just leave the existing token. + */ + if (!next) + break; + + if (!t) { + /* Nothing to actually paste, just zapping the paste */ + *prev_next = tok = next; + break; + } + + /* An actual paste */ + p = buf = nasm_malloc(t->len + next->len + 1); + p = mempcpy(p, tok_text(t), t->len); + p = mempcpy(p, tok_text(next), next->len); + *p = '\0'; + delete_Token(t); + t = tokenize(buf); + nasm_free(buf); + + if (unlikely(!t)) { + /* + * No output at all? Replace with a single whitespace. + * This should never happen. + */ + tok = t = new_White(NULL); + } else { + *prev_nonspace = tok = t; + } + while (t->next) + t = t->next; /* Find the last token produced */ + + /* Delete the second token and attach to the end of the list */ + t->next = delete_Token(next); + + /* We want to restart from the head of the pasted token */ + *prev_next = next = tok; + break; + + default: + /* implicit pasting */ + for (i = 0; i < mnum; i++) { + if (pp_concat_match(tok, m[i].mask_head)) + break; + } + + if (i >= mnum) + break; + + len = tok->len; + while (pp_concat_match(next, m[i].mask_tail)) { + len += next->len; + next = next->next; + } + + /* No match or no text to process */ + if (len == tok->len) + break; + + p = buf = nasm_malloc(len + 1); + while (tok != next) { + p = mempcpy(p, tok_text(tok), tok->len); + tok = delete_Token(tok); + } + *p = '\0'; + *prev_next = tok = t = tokenize(buf); + nasm_free(buf); + + /* + * Connect pasted into original stream, + * ie A -> new-tokens -> B + */ + while ((tok = t->next)) { + if (tok->type != TOKEN_WHITESPACE && tok->type != TOKEN_PASTE) + prev_nonspace = &t->next; + t = tok; + } + + t->next = next; + prev_next = &t->next; + did_paste = true; + break; + } + + if (did_paste) { + pasted = true; + } else { + prev_next = &tok->next; + if (next && next->type != TOKEN_WHITESPACE && + next->type != TOKEN_PASTE) + prev_nonspace = prev_next; + } + tok = next; + } + + return pasted; +} + +/* + * Computes the proper rotation of mmacro parameters + */ +static int mmac_rotate(const MMacro *mac, unsigned int n) +{ + if (--n < mac->nparam) + n = (n + mac->rotate) % mac->nparam; + + return n+1; +} + +/* + * expands to a list of tokens from %{x:y} + */ +static void expand_mmac_params_range(MMacro *mac, Token *tline, Token ***tail) +{ + Token *t; + const char *arg = tok_text(tline) + 1; + int fst, lst, incr, n; + int parsed; + + parsed = sscanf(arg, "%d:%d", &fst, &lst); + nasm_assert(parsed == 2); + + /* + * only macros params are accounted so + * if someone passes %0 -- we reject such + * value(s) + */ + if (lst == 0 || fst == 0) + goto err; + + /* the values should be sane */ + if ((fst > (int)mac->nparam || fst < (-(int)mac->nparam)) || + (lst > (int)mac->nparam || lst < (-(int)mac->nparam))) + goto err; + + fst = fst < 0 ? fst + (int)mac->nparam + 1: fst; + lst = lst < 0 ? lst + (int)mac->nparam + 1: lst; + + /* + * It will be at least one parameter, as we can loop + * in either direction. + */ + incr = (fst < lst) ? 1 : -1; + + while (true) { + n = mmac_rotate(mac, fst); + dup_tlistn(mac->params[n], mac->paramlen[n], tail); + if (fst == lst) + break; + t = make_tok_char(NULL, ','); + **tail = t; + *tail = &t->next; + fst += incr; + } + + return; + +err: + nasm_nonfatal("`%%{%s}': macro parameters out of range", arg); + return; +} + +/* + * Expand MMacro-local things: parameter references (%0, %n, %+n, + * %-n) and MMacro-local identifiers (%%foo) as well as + * macro indirection (%[...]) and range (%{..:..}). + */ +static Token *expand_mmac_params(Token * tline) +{ + Token **tail, *thead; + bool changed = false; + MMacro *mac = istk->mstk.mmac; + + tail = &thead; + thead = NULL; + + while (tline) { + bool change; + bool err_not_mac = false; + Token *t = tline; + const char *text = tok_text(t); + int type = t->type; + + tline = tline->next; + t->next = NULL; + + switch (type) { + case TOKEN_LOCAL_SYMBOL: + change = true; + + if (!mac) { + err_not_mac = true; + break; + } + + type = TOKEN_ID; + text = nasm_asprintf("..@%"PRIu64".%s", mac->unique, text+2); + break; + case TOKEN_MMACRO_PARAM: + { + Token *tt = NULL; + + change = true; + + if (!mac) { + err_not_mac = true; + break; + } + + if (strchr(text, ':')) { + /* It is a range */ + expand_mmac_params_range(mac, t, &tail); + text = NULL; + break; + } + + switch (text[1]) { + /* + * We have to make a substitution of one of the + * forms %1, %-1, %+1, %%foo, %0, %00. + */ + case '0': + if (!text[2]) { + type = TOKEN_NUM; + text = nasm_asprintf("%d", mac->nparam); + break; + } + if (text[2] != '0' || text[3]) + goto invalid; + /* a possible captured label == mac->params[0] */ + /* fall through */ + default: + { + unsigned long n; + char *ep; + + n = strtoul(text + 1, &ep, 10); + if (unlikely(*ep)) + goto invalid; + + if (n <= mac->nparam) { + n = mmac_rotate(mac, n); + dup_tlistn(mac->params[n], mac->paramlen[n], &tail); + } + text = NULL; + break; + } + case '-': + case '+': + { + int cc; + unsigned long n; + char *ep; + + n = strtoul(tok_text(t) + 2, &ep, 10); + if (unlikely(*ep)) + goto invalid; + + if (n && n <= mac->nparam) { + n = mmac_rotate(mac, n); + tt = mac->params[n]; + } + cc = find_cc(tt); + if (cc == -1) { + nasm_nonfatal("macro parameter `%s' is not a condition code", + tok_text(t)); + text = NULL; + break; + } + + type = TOKEN_ID; + if (text[1] == '-') { + int ncc = inverse_ccs[cc]; + if (unlikely(ncc == -1)) { + nasm_nonfatal("condition code `%s' is not invertible", + conditions[cc]); + break; + } + cc = ncc; + } + text = nasm_strdup(conditions[cc]); + break; + } + + invalid: + nasm_nonfatal("invalid macro parameter: `%s'", text); + text = NULL; + break; + } + break; + } + + case TOKEN_PREPROC_Q: + if (mac) { + type = TOKEN_ID; + text = nasm_strdup(mac->iname); + change = true; + } else { + change = false; + } + break; + + case TOKEN_PREPROC_QQ: + if (mac) { + type = TOKEN_ID; + text = nasm_strdup(mac->name); + change = true; + } else { + change = false; + } + break; + + case TOKEN_INDIRECT: + { + Token *tt; + + tt = tokenize(tok_text(t)); + tt = expand_mmac_params(tt); + tt = expand_smacro(tt); + tail = steal_tlist(tt, tail); + text = NULL; + change = true; + break; + } + + default: + change = false; + break; + } + + if (err_not_mac) { + nasm_nonfatal("`%s': not in a macro call", text); + text = NULL; + change = true; + } + + if (change) { + if (!text) { + delete_Token(t); + } else { + *tail = t; + tail = &t->next; + set_text(t, text, tok_strlen(text)); + t->type = type; + } + changed = true; + } else { + *tail = t; + tail = &t->next; + } + } + + *tail = NULL; + + if (changed) { + const struct concat_mask t[] = { + { + CONCAT_ID | CONCAT_FLOAT, /* head */ + CONCAT_ID | CONCAT_NUM | CONCAT_FLOAT | CONCAT_OP /* tail */ + }, + { + CONCAT_NUM, /* head */ + CONCAT_NUM /* tail */ + } + }; + paste_tokens(&thead, t, ARRAY_SIZE(t), false); + } + + return thead; +} + +static Token *expand_smacro_noreset(Token * tline); + +/* + * Expand *one* single-line macro instance. If the first token is not + * a macro at all, it is simply copied to the output and the pointer + * advanced. tpp should be a pointer to a pointer (usually the next + * pointer of the previous token) to the first token. **tpp is updated + * to point to the first token of the expansion, and *tpp updated to + * point to the next pointer of the last token of the expansion. + * + * If the expansion is empty, *tpp will be unchanged but **tpp will + * be advanced past the macro call. + * + * Return the macro expanded, or NULL if no expansion took place. + */ +static SMacro *expand_one_smacro(Token ***tpp) +{ + Token **params = NULL; + const char *mname, *mtype; + Token *mstart = **tpp; + Token *tline = mstart; + SMacro *head, *m; + int i; + Token *t, *tup, *tafter; + int nparam = 0; + bool cond_comma; + + if (!tline) + return false; /* Empty line, nothing to do */ + + mname = tok_text(mstart); + + smacro_deadman.total--; + smacro_deadman.levels--; + + if (unlikely(smacro_deadman.total < 0 || smacro_deadman.levels < 0)) { + if (unlikely(!smacro_deadman.triggered)) { + nasm_nonfatal("interminable macro recursion"); + smacro_deadman.triggered = true; + } + goto not_a_macro; + } else if (tline->type == TOKEN_ID || tline->type == TOKEN_PREPROC_ID) { + head = (SMacro *)hash_findix(&smacros, mname); + } else if (tline->type == TOKEN_LOCAL_MACRO) { + Context *ctx = get_ctx(mname, &mname); + head = ctx ? (SMacro *)hash_findix(&ctx->localmac, mname) : NULL; + } else { + goto not_a_macro; + } + + /* + * We've hit an identifier of some sort. First check whether the + * identifier is a single-line macro at all, then think about + * checking for parameters if necessary. + */ + list_for_each(m, head) { + if (unlikely(m->alias && ppconf.noaliases)) + continue; + if (!mstrcmp(m->name, mname, m->casesense)) + break; + } + + if (!m) { + goto not_a_macro; + } + + /* Parse parameters, if applicable */ + + params = NULL; + nparam = 0; + + if (m->nparam == 0) { + /* + * Simple case: the macro is parameterless. + * Nothing to parse; the expansion code will + * drop the macro name token. + */ + } else { + /* + * Complicated case: at least one macro with this name + * exists and takes parameters. We must find the + * parameters in the call, count them, find the SMacro + * that corresponds to that form of the macro call, and + * substitute for the parameters when we expand. What a + * pain. + */ + Token *t; + int paren, brackets; + + tline = tline->next; + tline = skip_white(tline); + if (!tok_is(tline, '(')) { + /* + * This macro wasn't called with parameters: ignore + * the call. (Behaviour borrowed from gnu cpp.) + */ + goto not_a_macro; + } + + paren = 1; + nparam = 1; + brackets = 0; + t = tline; /* tline points to leading ( */ + + while (paren) { + t = t->next; + + if (!t) { + nasm_nonfatal("macro call expects terminating `)'"); + goto not_a_macro; + } + + switch (t->type) { + case ',': + if (!brackets && paren == 1) + nparam++; + break; + + case '{': + brackets++; + break; + + case '}': + if (brackets > 0) + brackets--; + break; + + case '(': + if (!brackets) + paren++; + break; + + case ')': + if (!brackets) + paren--; + break; + + default: + break; /* Normal token */ + } + } + + /* + * Look for a macro matching in both name and parameter count. + * We already know any matches cannot be anywhere before the + * current position of "m", so there is no reason to + * backtrack. + */ + while (1) { + if (!m) { + /*! + *!pp-macro-params-single [on] single-line macro calls with wrong parameter count + *!=macro-params-single + *! warns about \i{single-line macros} being invoked + *! with the wrong number of parameters. + */ + nasm_warn(WARN_PP_MACRO_PARAMS_SINGLE|ERR_HOLD, + "single-line macro `%s' exists, " + "but not taking %d parameter%s", + mname, nparam, (nparam == 1) ? "" : "s"); + goto not_a_macro; + } + + if (!mstrcmp(m->name, mname, m->casesense)) { + if (nparam >= m->nparam_min && + (m->varadic || nparam <= m->nparam)) + break; /* It's good */ + } + m = m->next; + } + } + + if (m->in_progress && !m->recursive) + goto not_a_macro; + + /* Expand the macro */ + m->in_progress++; + + /* Is it a macro or a preprocessor function? Used for diagnostics. */ + mtype = m->name[0] == '%' ? "function" : "macro"; + + if (nparam) { + /* Extract parameters */ + Token **phead, **pep; + int white = 0; + int brackets = 0; + int paren; + bool bracketed = false; + bool bad_bracket = false; + enum sparmflags flags; + const struct smac_param *mparm; + + if (nparam > m->nparam) { + if (m->params[m->nparam-1].flags & SPARM_GREEDY) + nparam = m->nparam; + } else if (nparam < m->nparam) { + nparam = m->nparam; /* Missing optional arguments = empty */ + } + paren = 1; + nasm_newn(params, nparam); + i = 0; + mparm = m->params; + flags = mparm->flags; + phead = pep = ¶ms[i]; + *pep = NULL; + + while (paren) { + bool skip; + + tline = tline->next; + + if (!tline) + nasm_nonfatal("%s `%s' call expects terminating `)'", + mtype, m->name); + + skip = false; + + switch (tline->type) { + case TOKEN_WHITESPACE: + if (!(flags & SPARM_NOSTRIP)) { + if (brackets || *phead) + white++; /* Keep interior whitespace */ + skip = true; + } + break; + + case ',': + if (!brackets && paren == 1 && !(flags & SPARM_GREEDY)) { + i++; + nasm_assert(i < nparam); + phead = pep = ¶ms[i]; + *pep = NULL; + bracketed = false; + skip = true; + if (!(flags & SPARM_VARADIC)) { + mparm++; + flags = mparm->flags; + } + } + break; + + case '{': + if (!bracketed) { + bracketed = !*phead && !(flags & SPARM_NOSTRIP); + skip = bracketed; + } + brackets++; + break; + + case '}': + if (brackets > 0) { + if (!--brackets) + skip = bracketed; + } + break; + + case '(': + if (!brackets) + paren++; + break; + + case ')': + if (!brackets) { + paren--; + if (!paren) { + skip = true; + i++; /* Found last argument */ + } + } + break; + + default: + break; /* Normal token */ + } + + if (!skip) { + Token *t; + + bad_bracket |= bracketed && !brackets; + + if (white) { + *pep = t = new_White(NULL); + pep = &t->next; + white = 0; + } + *pep = t = dup_Token(NULL, tline); + pep = &t->next; + } + } + + /* + * Possible further processing of parameters. Note that the + * ordering matters here. + * + * mparm points to the current parameter specification + * structure (struct smac_param); this may not match the index + * i in the case of varadic parameters. + */ + for (i = 0, mparm = m->params; + i < nparam; + i++, mparm += !(flags & SPARM_VARADIC)) { + const enum sparmflags flags = mparm->flags; + + if (flags & SPARM_EVAL) { + /* Evaluate this parameter as a number */ + struct ppscan pps; + struct tokenval tokval; + expr *evalresult; + Token *eval_param; + + eval_param = zap_white(expand_smacro_noreset(params[i])); + params[i] = NULL; + + if (!eval_param) { + /* empty argument */ + if (mparm->def) { + params[i] = dup_tlist(mparm->def, NULL); + continue; + } else if (flags & SPARM_OPTIONAL) { + continue; + } + /* otherwise, allow evaluate() to generate an error */ + } + + pps.tptr = eval_param; + pps.ntokens = -1; + tokval.t_type = TOKEN_INVALID; + evalresult = evaluate(ppscan, &pps, &tokval, NULL, true, NULL); + + free_tlist(eval_param); + + if (!evalresult) { + /* Nothing meaningful to do */ + } else if (tokval.t_type) { + nasm_nonfatal("invalid expression in parameter %d of %s `%s'", + i, mtype, m->name); + } else if (!is_simple(evalresult)) { + nasm_nonfatal("non-constant expression in parameter %d of %s `%s'", + i, mtype, m->name); + } else { + params[i] = make_tok_num(NULL, reloc_value(evalresult)); + } + } + + if (flags & SPARM_STR) { + /* Convert expansion to a quoted string */ + Token *qs; + + qs = expand_smacro_noreset(params[i]); + if ((flags & SPARM_CONDQUOTE) && + tok_is(qs, TOKEN_STR) && !qs->next) { + /* A single quoted string token */ + params[i] = qs; + } else { + char *arg = detoken(qs, false); + free_tlist(qs); + params[i] = make_tok_qstr(NULL, arg); + nasm_free(arg); + } + } + } + } + + /* Note: we own the expansion this returns. */ + t = m->expand(m, params, nparam); + + tafter = tline->next; /* Skip past the macro call */ + tline->next = NULL; /* Truncate list at the macro call end */ + tline = tafter; + + tup = NULL; + cond_comma = false; + + while (t) { + enum token_type type = t->type; + Token *tnext = t->next; + + switch (type) { + case TOKEN_PREPROC_Q: + case TOKEN_PREPROC_SQ: + delete_Token(t); + t = dup_Token(tline, mstart); + break; + + case TOKEN_PREPROC_QQ: + case TOKEN_PREPROC_SQQ: + { + size_t mlen = strlen(m->name); + size_t len; + char *p, *from; + + t->type = mstart->type; + if (t->type == TOKEN_LOCAL_MACRO) { + const char *psp; /* prefix start pointer */ + const char *pep; /* prefix end pointer */ + size_t plen; + + psp = tok_text(mstart); + get_ctx(psp, &pep); + plen = pep - psp; + + len = mlen + plen; + from = p = nasm_malloc(len + 1); + p = mempcpy(p, psp, plen); + } else { + len = mlen; + from = p = nasm_malloc(len + 1); + } + p = mempcpy(p, m->name, mlen); + *p = '\0'; + set_text_free(t, from, len); + + t->next = tline; + break; + } + + case TOKEN_COND_COMMA: + delete_Token(t); + t = cond_comma ? make_tok_char(tline, ',') : NULL; + break; + + case TOKEN_ID: + case TOKEN_PREPROC_ID: + case TOKEN_LOCAL_MACRO: + { + /* + * Chain this into the target line *before* expanding, + * that way we pick up any arguments to the new macro call, + * if applicable. + */ + Token **tp = &t; + t->next = tline; + expand_one_smacro(&tp); + tline = *tp; /* First token left after any macro call */ + break; + } + default: + if (is_smac_param(t->type)) { + int param = smac_nparam(t->type); + nasm_assert(!tup && param < nparam); + delete_Token(t); + t = NULL; + tup = tnext; + tnext = dup_tlist_reverse(params[param], NULL); + cond_comma = false; + } else { + t->next = tline; + } + } + + if (t) { + Token *endt = tline; + + tline = t; + while (!cond_comma && t && t != endt) { + cond_comma = t->type != TOKEN_WHITESPACE; + t = t->next; + } + } + + if (tnext) { + t = tnext; + } else { + t = tup; + tup = NULL; + } + } + + **tpp = tline; + for (t = tline; t && t != tafter; t = t->next) + *tpp = &t->next; + + /* Expansion complete */ + m->in_progress--; + + /* Don't do this until after expansion or we will clobber mname */ + free_tlist(mstart); + goto done; + + /* + * No macro expansion needed; roll back to mstart (if necessary) + * and then advance to the next input token. Note that this is + * by far the common case! + */ +not_a_macro: + *tpp = &mstart->next; + m = NULL; +done: + smacro_deadman.levels++; + free_tlist_array(params, nparam); + return m; +} + +/* + * Expand all single-line macro calls made in the given line. + * Return the expanded version of the line. The original is deemed + * to be destroyed in the process. (In reality we'll just move + * Tokens from input to output a lot of the time, rather than + * actually bothering to destroy and replicate.) + */ +static Token *expand_smacro(Token *tline) +{ + smacro_deadman.total = nasm_limit[LIMIT_MACRO_TOKENS]; + smacro_deadman.levels = nasm_limit[LIMIT_MACRO_LEVELS]; + smacro_deadman.triggered = false; + return expand_smacro_noreset(tline); +} + +static Token *expand_smacro_noreset(Token *org_tline) +{ + Token *tline; + bool expanded; + errhold errhold; /* Hold warning/errors during expansion */ + + if (!org_tline) + return NULL; /* Empty input */ + + /* + * Trick: we should avoid changing the start token pointer since it can + * be contained in "next" field of other token. Because of this + * we allocate a copy of first token and work with it; at the end of + * routine we copy it back + */ + tline = dup_Token(org_tline->next, org_tline); + + /* + * Pretend that we always end up doing expansion on the first pass; + * that way %+ get processed. However, if we process %+ before the + * first pass, we end up with things like MACRO %+ TAIL trying to + * look up the macro "MACROTAIL", which we don't want. + */ + expanded = true; + + while (true) { + static const struct concat_mask tmatch[] = { + { + CONCAT_ID | CONCAT_LOCAL_MACRO | + CONCAT_ENVIRON | CONCAT_PREPROC_ID, /* head */ + CONCAT_ID | CONCAT_LOCAL_MACRO | + CONCAT_ENVIRON | CONCAT_PREPROC_ID | + CONCAT_NUM /* tail */ + } + }; + Token **tail = &tline; + + /* + * We hold warnings/errors until we are done in this loop. It is + * possible for nuisance warnings to appear that disappear on later + * passes. + */ + errhold = nasm_error_hold_push(); + + while (*tail) /* main token loop */ + expanded |= !!expand_one_smacro(&tail); + + if (!expanded) + break; /* Done! */ + + /* + * Now scan the entire line and look for successive TOKEN_IDs + * that resulted after expansion (they can't be produced by + * tokenize()). The successive TOKEN_IDs should be concatenated. + * Also we look for %+ tokens and concatenate the tokens + * before and after them (without white spaces in between). + */ + if (!paste_tokens(&tline, tmatch, ARRAY_SIZE(tmatch), true)) + break; /* Done again! */ + + nasm_error_hold_pop(errhold, false); + expanded = false; + } + nasm_error_hold_pop(errhold, true); + + if (!tline) { + /* + * The expression expanded to empty line; + * we can't return NULL because of the "trick" above. + * Just set the line to a single WHITESPACE token. + */ + + tline = new_White(NULL); + } + + steal_Token(org_tline, tline); + org_tline->next = tline->next; + delete_Token(tline); + + return org_tline; +} + +/* + * Similar to expand_smacro but used exclusively with macro identifiers + * right before they are fetched in. The reason is that there can be + * identifiers consisting of several subparts. We consider that if there + * are more than one element forming the name, user wants a expansion, + * otherwise it will be left as-is. Example: + * + * %define %$abc cde + * + * the identifier %$abc will be left as-is so that the handler for %define + * will suck it and define the corresponding value. Other case: + * + * %define _%$abc cde + * + * In this case user wants name to be expanded *before* %define starts + * working, so we'll expand %$abc into something (if it has a value; + * otherwise it will be left as-is) then concatenate all successive + * PP_IDs into one. + */ +static Token *expand_id(Token * tline) +{ + Token *cur, *oldnext = NULL; + + if (!tline || !tline->next) + return tline; + + cur = tline; + while (cur->next && + (cur->next->type == TOKEN_ID || + cur->next->type == TOKEN_PREPROC_ID || + cur->next->type == TOKEN_LOCAL_MACRO || + cur->next->type == TOKEN_NUM)) + cur = cur->next; + + /* If identifier consists of just one token, don't expand */ + if (cur == tline) + return tline; + + if (cur) { + oldnext = cur->next; /* Detach the tail past identifier */ + cur->next = NULL; /* so that expand_smacro stops here */ + } + + tline = expand_smacro(tline); + + if (cur) { + /* expand_smacro possibly changhed tline; re-scan for EOL */ + cur = tline; + while (cur && cur->next) + cur = cur->next; + if (cur) + cur->next = oldnext; + } + + return tline; +} + +/* + * This is called from find_mmacro_in_list() after finding a suitable macro. + */ +static MMacro *use_mmacro(MMacro *m, int *nparamp, Token ***paramsp) +{ + int nparam = *nparamp; + Token **params = *paramsp; + + /* + * This one is right. Just check if cycle removal + * prohibits us using it before we actually celebrate... + */ + if (m->in_progress > m->max_depth) { + if (m->max_depth > 0) { + /* Document this properly when recursive mmacros re-implemented */ + nasm_warn(WARN_OTHER, "reached maximum recursion depth of %i", + m->max_depth); + } + nasm_free(params); + *nparamp = 0; + *paramsp = NULL; + return NULL; + } + + /* + * It's right, and we can use it. Add its default + * parameters to the end of our list if necessary. + */ + if (m->defaults && nparam < m->nparam_min + m->ndefs) { + int newnparam = m->nparam_min + m->ndefs; + params = nasm_realloc(params, sizeof(*params) * (newnparam+2)); + memcpy(¶ms[nparam+1], &m->defaults[nparam+1-m->nparam_min], + (newnparam - nparam) * sizeof(*params)); + nparam = newnparam; + } + /* + * If we've gone over the maximum parameter count (and + * we're in Plus mode), ignore parameters beyond + * nparam_max. + */ + if (m->plus && nparam > m->nparam_max) + nparam = m->nparam_max; + + /* + * If nparam was adjusted above, make sure the list is still + * NULL-terminated. + */ + params[nparam+1] = NULL; + + /* Done! */ + *paramsp = params; + *nparamp = nparam; + return m; +} + +/* + * Search a macro list and try to find a match. If matching, call + * use_mmacro() to set up the macro call. m points to the list of + * search, which is_mmacro() sets to the first *possible* match. + */ +static MMacro * +find_mmacro_in_list(MMacro *m, const char *finding, + int *nparamp, Token ***paramsp) +{ + int nparam = *nparamp; + + while (m) { + if (m->nparam_min <= nparam + && (m->plus || nparam <= m->nparam_max)) { + /* + * This one matches, use it. + */ + return use_mmacro(m, nparamp, paramsp); + } + + /* + * Otherwise search for the next one with a name match. + */ + list_for_each(m, m->next) { + if (!mstrcmp(m->name, finding, m->casesense)) + break; + } + } + + return NULL; +} + +/* + * Determine whether the given line constitutes a multi-line macro + * call, and return the MMacro structure called if so. Doesn't have + * to check for an initial label - that's taken care of in + * expand_mmacro - but must check numbers of parameters. Guaranteed + * to be called with tline->type == TOKEN_ID, so the putative macro + * name is easy to find. + */ +static MMacro *is_mmacro(Token * tline, int *nparamp, Token ***paramsp) +{ + MMacro *head, *m, *found; + Token **params, **comma; + int raw_nparam, nparam; + const char *finding = tok_text(tline); + bool empty_args = !tline->next; + + *nparamp = 0; + *paramsp = NULL; + + head = (MMacro *) hash_findix(&mmacros, finding); + + /* + * Efficiency: first we see if any macro exists with the given + * name which isn't already excluded by macro cycle removal. + * (The cycle removal test here helps optimize the case of wrapping + * instructions, and is cheap to do here.) + * + * If not, we can return NULL immediately. _Then_ we + * count the parameters, and then we look further along the + * list if necessary to find the proper MMacro. + */ + list_for_each(m, head) { + if (!mstrcmp(m->name, finding, m->casesense) && + (m->in_progress != 1 || m->max_depth > 0)) + break; /* Found something that needs consideration */ + } + if (!m) + return NULL; + + /* + * OK, we have a potential macro. Count and demarcate the + * parameters. + */ + comma = count_mmac_params(tline->next, nparamp, paramsp); + raw_nparam = *nparamp; + + /* + * Search for an exact match. This cannot come *before* the m + * found in the list search before, so we can start there. + * + * If found is NULL and *paramsp has been cleared, then we + * encountered an error for which we have already issued a + * diagnostic, so we should not proceed. + */ + found = find_mmacro_in_list(m, finding, nparamp, paramsp); + if (!*paramsp) + return NULL; + + nparam = *nparamp; + params = *paramsp; + + /* + * Special weirdness: in NASM < 2.15, an expansion of + * *only* whitespace, as can happen during macro expansion under + * certain circumstances, is counted as zero arguments for the + * purpose of %0, but one argument for the purpose of macro + * matching! In particular, this affects: + * + * foobar %1 + * + * ... with %1 being empty; this would call the one-argument + * version of "foobar" with an empty argument, equivalent to + * + * foobar {%1} + * + * ... except that %0 would be set to 0 inside foobar, even if + * foobar is declared with "%macro foobar 1" or equivalent! + * + * The proper way to do that is to define "%macro foobar 0-1". + * + * To be compatible without doing something too stupid, try to + * match a zero-argument macro first, but if that fails, try + * for a one-argument macro with the above behavior. + * + * Furthermore, NASM < 2.15 will match stripping a tailing empty + * argument, but in that case %0 *does* reflect that this argument + * have been stripped; this is handled in count_mmac_params(). + * + * To disable these insane legacy behaviors, use: + * + * %pragma preproc sane_empty_expansion yes + * + *!pp-macro-params-legacy [on] improperly calling multi-line macro for legacy support + *!=macro-params-legacy + *! warns about \i{multi-line macros} being invoked + *! with the wrong number of parameters, but for bug-compatibility + *! with NASM versions older than 2.15, NASM tried to fix up the + *! parameters to match the legacy behavior and call the macro anyway. + *! This can happen in certain cases where there are empty arguments + *! without braces, sometimes as a result of macro expansion. + *!- + *! The legacy behavior is quite strange and highly context-dependent, + *! and can be disabled with: + *!- + *! \c %pragma preproc sane_empty_expansion true + *!- + *! It is highly recommended to use this option in new code. + */ + if (!ppconf.sane_empty_expansion) { + if (!found) { + if (raw_nparam == 0 && !empty_args) { + /* + * A single all-whitespace parameter as the only thing? + * Look for a one-argument macro, but don't adjust + * *nparamp. + */ + int bogus_nparam = 1; + params[2] = NULL; + found = find_mmacro_in_list(m, finding, &bogus_nparam, paramsp); + } else if (raw_nparam > 1 && comma) { + Token *comma_tail = *comma; + + /* + * Drop the terminal argument and try again. + * If we fail, we need to restore the comma to + * preserve tlist. + */ + *comma = NULL; + *nparamp = raw_nparam - 1; + found = find_mmacro_in_list(m, finding, nparamp, paramsp); + if (found) + free_tlist(comma_tail); + else + *comma = comma_tail; + } + + if (!*paramsp) + return NULL; + } else if (comma) { + free_tlist(*comma); + *comma = NULL; + if (raw_nparam > found->nparam_min && + raw_nparam <= found->nparam_min + found->ndefs) { + /* Replace empty argument with default parameter */ + params[raw_nparam] = + found->defaults[raw_nparam - found->nparam_min]; + } else if (raw_nparam > found->nparam_max && found->plus) { + /* Just drop the comma, don't adjust argument count */ + } else { + /* Drop argument. This may cause nparam < nparam_min. */ + params[raw_nparam] = NULL; + *nparamp = nparam = raw_nparam - 1; + } + } + + if (found) { + if (raw_nparam < found->nparam_min || + (raw_nparam > found->nparam_max && !found->plus)) { + nasm_warn(WARN_PP_MACRO_PARAMS_LEGACY, + "improperly calling multi-line macro `%s' with %d parameters", + found->name, raw_nparam); + } else if (comma) { + nasm_warn(WARN_PP_MACRO_PARAMS_LEGACY, + "dropping trailing empty parameter in call to multi-line macro `%s'", found->name); + } + } + } + + /* + * After all that, we didn't find one with the right number of + * parameters. Issue a warning, and fail to expand the macro. + *! + *!pp-macro-params-multi [on] multi-line macro calls with wrong parameter count + *!=macro-params-multi + *! warns about \i{multi-line macros} being invoked + *! with the wrong number of parameters. See \k{mlmacover} for an + *! example of why you might want to disable this warning. + */ + if (found) + return found; + + nasm_warn(WARN_PP_MACRO_PARAMS_MULTI, + "multi-line macro `%s' exists, but not taking %d parameter%s", + finding, nparam, (nparam == 1) ? "" : "s"); + nasm_free(*paramsp); + return NULL; +} + + +#if 0 + +/* + * Save MMacro invocation specific fields in + * preparation for a recursive macro expansion + */ +static void push_mmacro(MMacro *m) +{ + MMacroInvocation *i; + + i = nasm_malloc(sizeof(MMacroInvocation)); + i->prev = m->prev; + i->params = m->params; + i->iline = m->iline; + i->nparam = m->nparam; + i->rotate = m->rotate; + i->paramlen = m->paramlen; + i->unique = m->unique; + i->condcnt = m->condcnt; + m->prev = i; +} + + +/* + * Restore MMacro invocation specific fields that were + * saved during a previous recursive macro expansion + */ +static void pop_mmacro(MMacro *m) +{ + MMacroInvocation *i; + + if (m->prev) { + i = m->prev; + m->prev = i->prev; + m->params = i->params; + m->iline = i->iline; + m->nparam = i->nparam; + m->rotate = i->rotate; + m->paramlen = i->paramlen; + m->unique = i->unique; + m->condcnt = i->condcnt; + nasm_free(i); + } +} + +#endif + +/* + * List an mmacro call with arguments (-Lm option) + */ +static void list_mmacro_call(const MMacro *m) +{ + const char prefix[] = " ;;; [macro] "; + size_t namelen, size; + char *buf, *p; + unsigned int i; + const Token *t; + + namelen = strlen(m->iname); + size = namelen + sizeof(prefix); /* Includes final null (from prefix) */ + + for (i = 1; i <= m->nparam; i++) { + int j = 0; + size += 3; /* Braces and space/comma */ + list_for_each(t, m->params[i]) { + if (j++ >= m->paramlen[i]) + break; + size += (t->type == TOKEN_WHITESPACE) ? 1 : t->len; + } + } + + buf = p = nasm_malloc(size); + p = mempcpy(p, prefix, sizeof(prefix) - 1); + p = mempcpy(p, m->iname, namelen); + *p++ = ' '; + + for (i = 1; i <= m->nparam; i++) { + int j = 0; + *p++ = '{'; + list_for_each(t, m->params[i]) { + if (j++ >= m->paramlen[i]) + break; + p = mempcpy(p, tok_text(t), t->len); + } + *p++ = '}'; + *p++ = ','; + } + + *--p = '\0'; /* Replace last delimiter with null */ + lfmt->line(LIST_MACRO, -1, buf); + nasm_free(buf); +} + +/* + * Collect information about macro invocations for the benefit of + * the debugger. During execution we create a reverse list; before + * calling the backend reverse it to definition/invocation order just + * to be nicer. [XXX: not implemented yet] + */ +struct debug_macro_inv *debug_current_macro; + +/* Get/create a addr structure for a seg:inv combo */ +static struct debug_macro_addr * +debug_macro_get_addr_inv(int32_t seg, struct debug_macro_inv *inv) +{ + struct debug_macro_addr *addr; + nasm_static_assert(offsetof(struct debug_macro_addr, tree) == 0); + + if (likely(seg == inv->lastseg)) + return inv->addr.last; + + inv->lastseg = seg; + addr = (struct debug_macro_addr *) + rb_search_exact(inv->addr.tree, seg); + if (unlikely(!addr)) { + nasm_new(addr); + addr->tree.key = seg; + inv->addr.tree = rb_insert(inv->addr.tree, &addr->tree); + inv->naddr++; + if (inv->up) + addr->up = debug_macro_get_addr_inv(seg, inv->up); + } + + return inv->addr.last = addr; +} + +/* Get/create an addr structure for a seg in debug_current_macro */ +struct debug_macro_addr *debug_macro_get_addr(int32_t seg) +{ + return debug_macro_get_addr_inv(seg, debug_current_macro); +} + +static struct debug_macro_info dmi; +static struct debug_macro_inv_list *current_inv_list = &dmi.inv; + +static void debug_macro_start(MMacro *m, struct src_location where) +{ + struct debug_macro_def *def = m->dbg.def; + struct debug_macro_inv *inv; + + nasm_assert(!m->dbg.inv); + + /* First invocation? Need to create a def structure */ + if (unlikely(!def)) { + nasm_new(def); + def->name = nasm_strdup(m->name); + def->where = m->where; + + def->next = dmi.def.l; + dmi.def.l = def; + dmi.def.n++; + + m->dbg.def = def; + } + + nasm_new(inv); + inv->lastseg = NO_SEG; + inv->where = where; + inv->up = debug_current_macro; + inv->next = current_inv_list->l; + inv->def = def; + current_inv_list->l = inv; + current_inv_list->n++; + current_inv_list = &inv->down; + + def->ninv++; + m->dbg.inv = inv; + debug_current_macro = inv; +} + +static void debug_macro_end(MMacro *m) +{ + struct debug_macro_inv *inv = m->dbg.inv; + + nasm_assert(inv == debug_current_macro); + + list_reverse(inv->down.l); + + m->dbg.inv = NULL; + inv = inv->up; + + m = istk->mstk.mmac; + if (m) { + nasm_assert(inv == m->dbg.inv); + debug_current_macro = inv; + current_inv_list = &inv->down; + } else { + nasm_assert(!inv); + debug_current_macro = NULL; + current_inv_list = &dmi.inv; + } +} + +static void free_debug_macro_addr_tree(struct rbtree *tree) +{ + struct rbtree *left, *right; + nasm_static_assert(offsetof(struct debug_macro_addr,tree) == 0); + + if (!tree) + return; + + left = rb_left(tree); + right = rb_right(tree); + + nasm_free(tree); + + free_debug_macro_addr_tree(left); + free_debug_macro_addr_tree(right); +} + +static void free_debug_macro_inv_list(struct debug_macro_inv *inv) +{ + struct debug_macro_inv *itmp; + + if (!inv) + return; + + list_for_each_safe(inv, itmp, inv) { + free_debug_macro_inv_list(inv->down.l); + free_debug_macro_addr_tree(inv->addr.tree); + nasm_free(inv); + } +} + +static void free_debug_macro_info(void) +{ + struct debug_macro_def *def, *dtmp; + + list_for_each_safe(def, dtmp, dmi.def.l) + nasm_free(def); + + free_debug_macro_inv_list(dmi.inv.l); + + nasm_zero(dmi); +} + +static void debug_macro_output(void) +{ + list_reverse(dmi.inv.l); + dfmt->debug_mmacros(&dmi); + free_debug_macro_info(); +} + +/* + * Expand the multi-line macro call made by the given line, if + * there is one to be expanded. If there is, push the expansion on + * istk->expansion and return 1. Otherwise return 0. + */ +static int expand_mmacro(Token * tline) +{ + Token *startline = tline; + Token *label = NULL; + bool dont_prepend = false; + Token **params, *t, *tt; + MMacro *m; + Line *l, *ll; + int i, *paramlen; + const char *mname; + int nparam = 0; + + t = tline; + t = skip_white(t); + if (!tok_is(t, TOKEN_ID) && !tok_is(t, TOKEN_LOCAL_MACRO)) + return 0; + m = is_mmacro(t, &nparam, ¶ms); + if (m) { + mname = tok_text(t); + } else { + Token *last; + /* + * We have an id which isn't a macro call. We'll assume + * it might be a label; we'll also check to see if a + * colon follows it. Then, if there's another id after + * that lot, we'll check it again for macro-hood. + */ + label = last = t; + t = t->next; + if (tok_white(t)) + last = t, t = t->next; + if (tok_is(t, ':')) { + dont_prepend = true; + last = t, t = t->next; + if (tok_white(t)) + last = t, t = t->next; + } + if (!tok_is(t, TOKEN_ID) || !(m = is_mmacro(t, &nparam, ¶ms))) + return 0; + last->next = NULL; + mname = tok_text(t); + tline = t; + } + + if (unlikely(mmacro_deadman.total >= nasm_limit[LIMIT_MMACROS] || + mmacro_deadman.levels >= nasm_limit[LIMIT_MACRO_LEVELS])) { + if (!mmacro_deadman.triggered) { + nasm_nonfatal("interminable multiline macro recursion"); + mmacro_deadman.triggered = true; + } + return 0; + } + + mmacro_deadman.total++; + mmacro_deadman.levels++; + + /* + * Fix up the parameters: this involves stripping leading and + * trailing whitespace and stripping braces if they are present. + */ + nasm_newn(paramlen, nparam+1); + + for (i = 1; (t = params[i]); i++) { + bool braced = false; + int brace = 0; + int white = 0; + bool comma = !m->plus || i < nparam; + + t = skip_white(t); + if (tok_is(t, '{')) { + t = t->next; + brace = 1; + braced = true; + comma = false; + } + + params[i] = t; + for (; t; t = t->next) { + if (tok_white(t)) { + white++; + continue; + } + + switch(t->type) { + case ',': + if (comma && !brace) + goto endparam; + break; + + case '{': + brace++; + break; + + case '}': + brace--; + if (braced && !brace) { + paramlen[i] += white; + goto endparam; + } + break; + + default: + break; + } + + paramlen[i] += white + 1; + white = 0; + } + endparam: + ; + } + + /* + * OK, we have a MMacro structure together with a set of + * parameters. We must now go through the expansion and push + * copies of each Line on to istk->expansion. Substitution of + * parameter tokens and macro-local tokens doesn't get done + * until the single-line macro substitution process; this is + * because delaying them allows us to change the semantics + * later through %rotate and give the right semantics for + * nested mmacros. + * + * First, push an end marker on to istk->expansion, mark this + * macro as in progress, and set up its invocation-specific + * variables. + */ + nasm_new(ll); + ll->next = istk->expansion; + ll->finishes = m; + ll->where = istk->where; + istk->expansion = ll; + + /* + * Save the previous MMacro expansion in the case of + * macro recursion + */ +#if 0 + if (m->max_depth && m->in_progress) + push_mmacro(m); +#endif + + m->in_progress ++; + m->params = params; + m->iline = tline; + m->iname = nasm_strdup(mname); + m->nparam = nparam; + m->rotate = 0; + m->paramlen = paramlen; + m->unique = unique++; + m->condcnt = 0; + + m->mstk = istk->mstk; + istk->mstk.mstk = istk->mstk.mmac = m; + + list_for_each(l, m->expansion) { + nasm_new(ll); + ll->next = istk->expansion; + istk->expansion = ll; + ll->first = dup_tlist(l->first, NULL); + ll->where = l->where; + } + + /* + * If we had a label, and this macro definition does not include + * a %00, push it on as the first line of, ot + * the macro expansion. + */ + if (label) { + /* + * We had a label. If this macro contains an %00 parameter, + * save the value as a special parameter (which is what it + * is), otherwise push it as the first line of the macro + * expansion. + */ + if (m->capture_label) { + params[0] = dup_Token(NULL, label); + paramlen[0] = 1; + free_tlist(startline); + } else { + nasm_new(ll); + ll->finishes = NULL; + ll->next = istk->expansion; + istk->expansion = ll; + ll->first = startline; + ll->where = istk->where; + if (!dont_prepend) { + while (label->next) + label = label->next; + label->next = tt = make_tok_char(NULL, ':'); + } + } + } + + istk->nolist += !!(m->nolist & NL_LIST); + istk->noline += !!(m->nolist & NL_LINE); + + if (!istk->nolist) { + if (list_option('m')) + list_mmacro_call(m); + + lfmt->uplevel(LIST_MACRO, 0); + + if (ppdbg & PDBG_MMACROS) + debug_macro_start(m, src_where()); + } + + if (!istk->noline) + src_macro_push(m, istk->where); + + return 1; +} + +/* + * This function decides if an error message should be suppressed. + * It will never be called with a severity level of ERR_FATAL or + * higher. + */ +bool pp_suppress_error(errflags severity) +{ + /* + * If we're in a dead branch of IF or something like it, ignore the error. + * However, because %else etc are evaluated in the state context + * of the previous branch, errors might get lost: + * %if 0 ... %else trailing garbage ... %endif + * So %else etc should set the ERR_PP_PRECOND flag. + */ + if (istk && istk->conds && + ((severity & ERR_PP_PRECOND) ? + istk->conds->state == COND_NEVER : + !emitting(istk->conds->state))) + return true; + + return false; +} + +static Token * +stdmac_file(const SMacro *s, Token **params, int nparams) +{ + const char *fname = src_get_fname(); + + (void)s; + (void)params; + (void)nparams; + + return fname ? make_tok_qstr(NULL, fname) : NULL; +} + +static Token * +stdmac_line(const SMacro *s, Token **params, int nparams) +{ + (void)s; + (void)params; + (void)nparams; + + return make_tok_num(NULL, src_get_linnum()); +} + +static Token * +stdmac_bits(const SMacro *s, Token **params, int nparams) +{ + (void)s; + (void)params; + (void)nparams; + + return make_tok_num(NULL, globalbits); +} + +static Token * +stdmac_ptr(const SMacro *s, Token **params, int nparams) +{ + (void)s; + (void)params; + (void)nparams; + + switch (globalbits) { + case 16: + return new_Token(NULL, TOKEN_ID, "word", 4); + case 32: + return new_Token(NULL, TOKEN_ID, "dword", 5); + case 64: + return new_Token(NULL, TOKEN_ID, "qword", 5); + default: + panic(); + } +} + +/* %is...() function macros */ +static Token * +stdmac_is(const SMacro *s, Token **params, int nparams) +{ + int retval; + struct Token *pline = params[0]; + + (void)nparams; + + params[0] = NULL; /* Don't free this later */ + + retval = if_condition(pline, s->expandpvt.u) == COND_IF_TRUE; + return make_tok_num(NULL, retval); +} + +/* + * Join all expanded macro arguments with commas, e.g. %eval(). + * Remember that this needs to output the tokens in reverse order. + * + * This can also be used when only single argument is already ready + * to be emitted, e.g. %str(). + */ +static Token * +stdmac_join(const SMacro *s, Token **params, int nparams) +{ + struct Token *tline = NULL; + int i; + + (void)s; + + for (i = 0; i < nparams; i++) { + Token *t, *ttmp; + + if (i) + tline = make_tok_char(tline, ','); + + list_for_each_safe(t, ttmp, params[i]) { + t->next = tline; + tline = t; + } + + /* Avoid freeing the tokens we "stole" */ + params[i] = NULL; + } + + return tline; +} + +/* %strcat() function */ +static Token * +stdmac_strcat(const SMacro *s, Token **params, int nparams) +{ + int i; + size_t len = 0; + char *str, *p; + + (void)s; + + for (i = 0; i < nparams; i++) { + unquote_token(params[i]); + len += params[i]->len; + } + + nasm_newn(str, len+1); + p = str; + + for (i = 0; i < nparams; i++) { + p = mempcpy(p, tok_text(params[i]), params[i]->len); + } + + return make_tok_qstr_len(NULL, str, len); +} + +/* %substr() function */ +static Token * +stdmac_substr(const SMacro *s, Token **params, int nparams) +{ + int64_t start, count; + + (void)nparams; + (void)s; + + start = get_tok_num(params[1], NULL); + count = get_tok_num(params[2], NULL); + + return pp_substr_common(params[0], start, count); +} + +/* %strlen() function */ +static Token * +stdmac_strlen(const SMacro *s, Token **params, int nparams) +{ + (void)nparams; + (void)s; + + unquote_token(params[0]); + return make_tok_num(NULL, params[0]->len); +} + +/* %tok() function */ +static Token * +stdmac_tok(const SMacro *s, Token **params, int nparams) +{ + (void)nparams; + (void)s; + + return reverse_tokens(tokenize(unquote_token_cstr(params[0]))); +} + +/* %cond() or %sel() */ +static Token * +stdmac_cond_sel(const SMacro *s, Token **params, int nparams) +{ + int64_t which; + + /* + * params[0] will have been generated by make_tok_num. + */ + which = get_tok_num(params[0], NULL); + + if (s->expandpvt.u) { + /* Booleanize (for %cond): true -> 1, false -> 2 (else) */ + which = which ? 1 : 2; + if (which >= nparams) { + /* false, and no else clause */ + return NULL; + } + } else { + /*! + *!pp-sel-range [on] %sel() argument out of range + *! warns that the %sel() preprocessor function was passed + *! a value less than 1 or larger than the number of available + *! arguments. + */ + if (unlikely(which < 1)) { + nasm_warn(WARN_PP_SEL_RANGE, + "%s(%"PRId64") is not a valid selector", s->name, which); + return NULL; + } else if (unlikely(which >= nparams)) { + nasm_warn(WARN_PP_SEL_RANGE, + "%s(%"PRId64") exceeds the number of arguments", + s->name, which); + return NULL; + } + } + + return new_Token(NULL, tok_smac_param(which), "", 0); +} + +/* %count() function */ +static Token * +stdmac_count(const SMacro *s, Token **params, int nparams) +{ + (void)s; + (void)params; + + return make_tok_num(NULL, nparams); +} + +/* %num() function */ +static Token * +stdmac_num(const SMacro *s, Token **params, int nparam) +{ + static const char num_digits[] = + "0123456789" + "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "@_"; /* Compatible with bash */ + int64_t parm[3]; + uint64_t n; + int64_t dparm, bparm; + unsigned int i; + int nd; + unsigned int base; + char numstr[256]; + char * const endstr = numstr + sizeof numstr - 1; + const int maxlen = sizeof numstr - 3; + const int maxbase = sizeof num_digits - 1; + char *p; + bool moredigits; + + (void)nparam; + + for (i = 0; i < (int)ARRAY_SIZE(parm); i++) + parm[i] = get_tok_num(params[i], NULL); + + n = parm[0]; + dparm = parm[1]; + bparm = parm[2]; + + if (bparm < 2 || bparm > maxbase) { + nasm_nonfatal("invalid base %"PRId64" given to %s()", + bparm, s->name); + return NULL; + } + + base = bparm; + + if (dparm < -maxlen || dparm > maxlen) { + nasm_nonfatal("digit count %"PRId64" specified to %s() too large", + dparm, s->name); + moredigits = true; + nd = 1; + } else if (dparm <= 0) { + moredigits = true; + nd = -dparm; + } else { + moredigits = false; + nd = dparm; + } + + p = endstr; + *p = '\0'; + *--p = '\''; + + while (nd-- > 0 || (moredigits && n)) { + *--p = num_digits[n % base]; + n /= base; + } + *--p = '\''; + + return new_Token(NULL, TOKEN_STR, p, endstr - p); +} + +/* %abs() function */ +static Token * +stdmac_abs(const SMacro *s, Token **params, int nparam) +{ + char numbuf[24]; + int len; + int64_t v; + uint64_t u; + + (void)s; + (void)nparam; + + v = get_tok_num(params[0], NULL); + u = v < 0 ? -v : v; + + /* + * Don't use make_tok_num() here, to make sure we don't emit + * a minus sign for the case of v = -2^63 + */ + len = snprintf(numbuf, sizeof numbuf, "%"PRIu64, u); + return new_Token(NULL, TOKEN_NUM, numbuf, len); +} + +/* Add magic standard macros */ +struct magic_macros { + const char *name; + bool casesense; + int nparam; + enum sparmflags flags; + ExpandSMacro func; +}; + +static void pp_add_magic_stdmac(void) +{ + static const struct magic_macros magic_macros[] = { + { "__?FILE?__", true, 0, 0, stdmac_file }, + { "__?LINE?__", true, 0, 0, stdmac_line }, + { "__?BITS?__", true, 0, 0, stdmac_bits }, + { "__?PTR?__", true, 0, 0, stdmac_ptr }, + { "%abs", false, 1, SPARM_EVAL, stdmac_abs }, + { "%count", false, 1, SPARM_VARADIC, stdmac_count }, + { "%eval", false, 1, SPARM_EVAL|SPARM_VARADIC, stdmac_join }, + { "%str", false, 1, SPARM_GREEDY|SPARM_STR, stdmac_join }, + { "%strcat", false, 1, SPARM_STR|SPARM_CONDQUOTE|SPARM_VARADIC, stdmac_strcat }, + { "%strlen", false, 1, SPARM_STR|SPARM_CONDQUOTE, stdmac_strlen }, + { "%tok", false, 1, SPARM_STR|SPARM_CONDQUOTE, stdmac_tok }, + { NULL, false, 0, 0, NULL } + }; + const struct magic_macros *m; + SMacro tmpl; + enum preproc_token pt; + char name_buf[PP_TOKLEN_MAX+1]; + + /* + * Simple standard magic macros and functions. + * Note that preprocessor functions are allowed to recurse. + */ + nasm_zero(tmpl); + for (m = magic_macros; m->name; m++) { + tmpl.nparam = m->nparam; + tmpl.expand = m->func; + tmpl.recursive = m->nparam && m->name[0] == '%'; + + if (m->nparam) { + int i; + enum sparmflags flags = m->flags; + + nasm_newn(tmpl.params, m->nparam); + for (i = m->nparam-1; i >= 0; i--) { + tmpl.params[i].flags = flags; + /* These flags for the last arg only */ + flags &= ~(SPARM_GREEDY|SPARM_VARADIC|SPARM_OPTIONAL); + } + } + define_smacro(m->name, m->casesense, NULL, &tmpl); + if (m->name[0] == '%') { + enum preproc_token op = pp_token_hash(m->name); + if (op != PP_invalid) + pp_op_may_be_function[op] = true; + } + } + + /* %sel() function */ + nasm_zero(tmpl); + tmpl.nparam = 2; + tmpl.recursive = true; + tmpl.expand = stdmac_cond_sel; + nasm_newn(tmpl.params, tmpl.nparam); + tmpl.params[0].flags = SPARM_EVAL; + tmpl.params[1].flags = SPARM_VARADIC; + define_smacro("%sel", false, NULL, &tmpl); + + /* %cond() function, a variation on %sel */ + tmpl.nparam = 3; + tmpl.expandpvt.u = 1; /* Booleanize */ + nasm_newn(tmpl.params, tmpl.nparam); + tmpl.params[0].flags = SPARM_EVAL; + tmpl.params[1].flags = 0; + tmpl.params[2].flags = SPARM_OPTIONAL; + define_smacro("%cond", false, NULL, &tmpl); + + /* %num() function */ + nasm_zero(tmpl); + tmpl.nparam = 3; + tmpl.expand = stdmac_num; + tmpl.recursive = true; + nasm_newn(tmpl.params, tmpl.nparam); + tmpl.params[0].flags = SPARM_EVAL; + tmpl.params[1].flags = SPARM_EVAL|SPARM_OPTIONAL; + tmpl.params[1].def = make_tok_num(NULL, -1); + tmpl.params[2].flags = SPARM_EVAL|SPARM_OPTIONAL; + tmpl.params[2].def = make_tok_num(NULL, 10); + define_smacro("%num", false, NULL, &tmpl); + + /* %substr() function */ + nasm_zero(tmpl); + tmpl.nparam = 3; + tmpl.expand = stdmac_substr; + tmpl.recursive = true; + nasm_newn(tmpl.params, tmpl.nparam); + tmpl.params[0].flags = SPARM_STR|SPARM_CONDQUOTE; + tmpl.params[1].flags = SPARM_EVAL; + tmpl.params[2].flags = SPARM_EVAL|SPARM_OPTIONAL; + tmpl.params[2].def = make_tok_num(NULL, -1); + define_smacro("%substr", false, NULL, &tmpl); + + /* %is...() macro functions */ + nasm_zero(tmpl); + tmpl.nparam = 1; + tmpl.expand = stdmac_is; + tmpl.recursive = true; + name_buf[0] = '%'; + name_buf[1] = 'i'; + name_buf[2] = 's'; + for (pt = PP_IF; pt < (PP_IFN+(PP_IFN-PP_IF)); pt++) { + if (!pp_directives[pt]) + continue; + + nasm_new(tmpl.params); + tmpl.params[0].flags = SPARM_GREEDY; + + strcpy(name_buf+3, pp_directives[pt]+3); + tmpl.expandpvt.u = pt; + define_smacro(name_buf, false, NULL, &tmpl); + } +} + +static void pp_reset_stdmac(enum preproc_mode mode) +{ + int apass; + struct Include *inc; + + /* + * Set up the stdmac packages as a virtual include file, + * indicated by a null file pointer. + */ + nasm_new(inc); + inc->next = istk; + inc->nolist = inc->noline = !list_option('b'); + inc->where = istk->where; + istk = inc; + if (!istk->nolist) { + lfmt->uplevel(LIST_INCLUDE, 0); + } + if (!istk->noline) { + src_set(0, NULL); + istk->where = src_where(); + if (ppdbg & PDBG_INCLUDE) + dfmt->debug_include(true, istk->next->where, istk->where); + } + + pp_add_magic_stdmac(); + + if (tasm_compatible_mode) + pp_add_stdmac(nasm_stdmac_tasm); + + pp_add_stdmac(nasm_stdmac_nasm); + pp_add_stdmac(nasm_stdmac_version); + + if (extrastdmac) + pp_add_stdmac(extrastdmac); + + stdmacpos = stdmacros[0]; + stdmacnext = &stdmacros[1]; + + do_predef = true; + + /* + * Define the __?PASS?__ macro. This is defined here unlike all the + * other builtins, because it is special -- it varies between + * passes -- but there is really no particular reason to make it + * magic. + * + * 0 = dependencies only + * 1 = preparatory passes + * 2 = final pass + * 3 = preprocess only + */ + switch (mode) { + case PP_NORMAL: + apass = pass_final() ? 2 : 1; + break; + case PP_DEPS: + apass = 0; + break; + case PP_PREPROC: + apass = 3; + break; + default: + panic(); + } + + define_smacro("__?PASS?__", true, make_tok_num(NULL, apass), NULL); +} + +void pp_reset(const char *file, enum preproc_mode mode, + struct strlist *dep_list) +{ + cstk = NULL; + defining = NULL; + nested_mac_count = 0; + nested_rep_count = 0; + init_macros(); + unique = 0; + deplist = dep_list; + pp_mode = mode; + + /* Reset options to default */ + nasm_zero(ppconf); + + /* Disable all debugging info, except in the last pass */ + ppdbg = 0; + if (!(ppopt & PP_TRIVIAL)) { + if (pass_final()) { + if (dfmt->debug_mmacros) + ppdbg |= PDBG_MMACROS; + if (dfmt->debug_smacros) + ppdbg |= PDBG_SMACROS; + if (dfmt->debug_include) + ppdbg |= PDBG_INCLUDE; + } + + if (list_option('s')) + ppdbg |= PDBG_LIST_SMACROS; + } + + memset(use_loaded, 0, use_package_count * sizeof(bool)); + + /* First set up the top level input file */ + nasm_new(istk); + istk->fp = nasm_open_read(file, NF_TEXT); + if (!istk->fp) { + nasm_fatalf(ERR_NOFILE, "unable to open input file `%s'%s%s", + file, errno ? " " : "", errno ? strerror(errno) : ""); + } + src_set(0, file); + istk->where = src_where(); + istk->lineinc = 1; + + if (ppdbg & PDBG_INCLUDE) { + /* Let the debug format know the main file */ + dfmt->debug_include(true, src_nowhere(), istk->where); + } + + strlist_add(deplist, file); + + do_predef = false; + + if (!(ppopt & PP_TRIVIAL)) + pp_reset_stdmac(mode); +} + +void pp_init(enum preproc_opt opt) +{ + ppopt = opt; + nasm_newn(use_loaded, use_package_count); +} + +/* + * Get a line of tokens. If we popped the macro expansion/include stack, + * we return a pointer to the dummy token tok_pop; at that point if + * istk is NULL then we have reached end of input; + */ +static Token tok_pop; /* Dummy token placeholder */ + +static Token *pp_tokline(void) +{ + while (true) { + Line *l = istk->expansion; + Token *tline = NULL; + Token *dtline; + + /* + * Fetch a tokenized line, either from the macro-expansion + * buffer or from the input file. + */ + tline = NULL; + while (l && l->finishes) { + MMacro *fm = l->finishes; + + nasm_assert(fm == istk->mstk.mstk); + + if (!fm->name && fm->in_progress > 1) { + /* + * This is a macro-end marker for a macro with no + * name, which means it's not really a macro at all + * but a %rep block, and the `in_progress' field is + * more than 1, meaning that we still need to + * repeat. (1 means the natural last repetition; 0 + * means termination by %exitrep.) We have + * therefore expanded up to the %endrep, and must + * push the whole block on to the expansion buffer + * again. We don't bother to remove the macro-end + * marker: we'd only have to generate another one + * if we did. + */ + fm->in_progress--; + list_for_each(l, fm->expansion) { + Line *ll; + + nasm_new(ll); + ll->next = istk->expansion; + ll->first = dup_tlist(l->first, NULL); + ll->where = l->where; + istk->expansion = ll; + } + break; + } else { + MMacro *m = istk->mstk.mstk; + + /* + * Check whether a `%rep' was started and not ended + * within this macro expansion. This can happen and + * should be detected. It's a fatal error because + * I'm too confused to work out how to recover + * sensibly from it. + */ + if (defining) { + if (defining->name) + nasm_panic("defining with name in expansion"); + else if (m->name) + nasm_fatal("`%%rep' without `%%endrep' within" + " expansion of macro `%s'", m->name); + } + + /* + * FIXME: investigate the relationship at this point between + * istk->mstk.mstk and fm + */ + istk->mstk = m->mstk; + if (m->name) { + /* + * This was a real macro call, not a %rep, and + * therefore the parameter information needs to + * be freed and the iteration count/nesting + * depth adjusted. + */ + + if (!--mmacro_deadman.levels) { + /* + * If all mmacro processing done, + * clear all counters and the deadman + * message trigger. + */ + nasm_zero(mmacro_deadman); /* Clear all counters */ + } + +#if 0 + if (m->prev) { + pop_mmacro(m); + fm->in_progress --; + } else +#endif + { + nasm_free(m->params); + free_tlist(m->iline); + nasm_free(m->paramlen); + fm->in_progress = 0; + m->params = NULL; + m->iline = NULL; + m->paramlen = NULL; + } + } + + if (fm->nolist & NL_LINE) { + istk->noline--; + } else if (!istk->noline) { + if (fm == src_macro_current()) + src_macro_pop(); + src_update(l->where); + } + + if (fm->nolist & NL_LIST) { + istk->nolist--; + } else if (!istk->nolist) { + lfmt->downlevel(LIST_MACRO); + if ((ppdbg & PDBG_MMACROS) && fm->name) + debug_macro_end(fm); + } + + istk->where = l->where; + + /* + * FIXME It is incorrect to always free_mmacro here. + * It leads to usage-after-free. + * + * https://bugzilla.nasm.us/show_bug.cgi?id=3392414 + */ +#if 0 + else + free_mmacro(m); +#endif + } + istk->expansion = l->next; + nasm_free(l); + + return &tok_pop; + } + + do { /* until we get a line we can use */ + char *line; + + if (istk->expansion) { /* from a macro expansion */ + Line *l = istk->expansion; + + istk->expansion = l->next; + istk->where = l->where; + tline = l->first; + nasm_free(l); + + if (!istk->noline) + src_update(istk->where); + + if (!istk->nolist) { + line = detoken(tline, false); + lfmt->line(LIST_MACRO, istk->where.lineno, line); + nasm_free(line); + } + } else if ((line = read_line())) { + tline = tokenize(line); + nasm_free(line); + } else { + /* + * The current file has ended; work down the istk + */ + Include *i = istk; + + if (i->fp) + fclose(i->fp); + if (i->conds) { + /* nasm_fatal can't be conditionally suppressed */ + nasm_fatal("expected `%%endif' before end of file"); + } + + istk = i->next; + + if (!i->nolist) + lfmt->downlevel(LIST_INCLUDE); + if (!i->noline) { + struct src_location whereto + = istk ? istk->where : src_nowhere(); + if (ppdbg & PDBG_INCLUDE) + dfmt->debug_include(false, whereto, i->where); + if (istk) + src_update(istk->where); + } + + nasm_free(i); + return &tok_pop; + } + } while (0); + + /* + * We must expand MMacro parameters and MMacro-local labels + * _before_ we plunge into directive processing, to cope + * with things like `%define something %1' such as STRUC + * uses. Unless we're _defining_ a MMacro, in which case + * those tokens should be left alone to go into the + * definition; and unless we're in a non-emitting + * condition, in which case we don't want to meddle with + * anything. + */ + if (!defining && + !(istk->conds && !emitting(istk->conds->state)) && + !(istk->mstk.mmac && !istk->mstk.mmac->in_progress)) { + tline = expand_mmac_params(tline); + } + + /* + * Check the line to see if it's a preprocessor directive. + */ + if (do_directive(tline, &dtline) == DIRECTIVE_FOUND) { + if (dtline) + return dtline; + } else if (defining) { + /* + * We're defining a multi-line macro. We emit nothing + * at all, and just + * shove the tokenized line on to the macro definition. + */ + MMacro *mmac = defining->dstk.mmac; + Line *l; + + nasm_new(l); + l->next = defining->expansion; + l->first = tline; + l->finishes = NULL; + l->where = istk->where; + defining->expansion = l; + + /* + * Remember if this mmacro expansion contains %00: + * if it does, we will have to handle leading labels + * specially. + */ + if (mmac) { + const Token *t; + list_for_each(t, tline) { + if (t->type == TOKEN_MMACRO_PARAM && + !memcmp(t->text.a, "%00", 4)) + mmac->capture_label = true; + } + } + } else if (istk->conds && !emitting(istk->conds->state)) { + /* + * We're in a non-emitting branch of a condition block. + * Emit nothing at all, not even a blank line: when we + * emerge from the condition we'll give a line-number + * directive so we keep our place correctly. + */ + free_tlist(tline); + } else if (istk->mstk.mstk && !istk->mstk.mstk->in_progress) { + /* + * We're in a %rep block which has been terminated, so + * we're walking through to the %endrep without + * emitting anything. Emit nothing at all, not even a + * blank line: when we emerge from the %rep block we'll + * give a line-number directive so we keep our place + * correctly. + */ + free_tlist(tline); + } else { + tline = expand_smacro(tline); + if (!expand_mmacro(tline)) + return tline; + } + } +} + +char *pp_getline(void) +{ + char *line = NULL; + Token *tline; + + while (true) { + tline = pp_tokline(); + if (tline == &tok_pop) { + /* + * We popped the macro/include stack. If istk is empty, + * we are at end of input, otherwise just loop back. + */ + if (!istk) + break; + } else { + /* + * De-tokenize the line and emit it. + */ + line = detoken(tline, true); + free_tlist(tline); + break; + } + } + + if (list_option('e') && istk && !istk->nolist && line && line[0]) { + char *buf = nasm_strcat(" ;;; ", line); + lfmt->line(LIST_MACRO, -1, buf); + nasm_free(buf); + } + + return line; +} + +void pp_cleanup_pass(void) +{ + if (defining) { + if (defining->name) { + nasm_nonfatal("end of file while still defining macro `%s'", + defining->name); + } else { + nasm_nonfatal("end of file while still in %%rep"); + } + + free_mmacro(defining); + defining = NULL; + } + + while (cstk) + ctx_pop(); + free_macros(); + while (istk) { + Include *i = istk; + istk = istk->next; + fclose(i->fp); + if (!istk && (ppdbg & PDBG_INCLUDE)) { + /* Signal closing the top-level input file */ + dfmt->debug_include(false, src_nowhere(), i->where); + } + nasm_free(i); + } + while (cstk) + ctx_pop(); + src_set_fname(NULL); + + if (ppdbg & PDBG_MMACROS) + debug_macro_output(); +} + +void pp_cleanup_session(void) +{ + nasm_free(use_loaded); + free_llist(predef); + predef = NULL; + delete_Blocks(); + ipath_list = NULL; +} + +void pp_include_path(struct strlist *list) +{ + ipath_list = list; +} + +void pp_pre_include(char *fname) +{ + Token *inc, *space, *name; + Line *l; + + name = new_Token(NULL, TOKEN_INTERNAL_STR, fname, 0); + space = new_White(name); + inc = new_Token(space, TOKEN_PREPROC_ID, "%include", 0); + + l = nasm_malloc(sizeof(Line)); + l->next = predef; + l->first = inc; + l->finishes = NULL; + predef = l; +} + +void pp_pre_define(char *definition) +{ + Token *def, *space; + Line *l; + char *equals; + + equals = strchr(definition, '='); + space = new_White(NULL); + def = new_Token(space, TOKEN_PREPROC_ID, "%define", 0); + if (equals) + *equals = ' '; + space->next = tokenize(definition); + if (equals) + *equals = '='; + + nasm_new(l); + l->next = predef; + l->first = def; + l->finishes = NULL; + predef = l; +} + +void pp_pre_undefine(char *definition) +{ + Token *def, *space; + Line *l; + + space = new_White(NULL); + def = new_Token(space, TOKEN_PREPROC_ID, "%undef", 0); + space->next = tokenize(definition); + + nasm_new(l); + l->next = predef; + l->first = def; + l->finishes = NULL; + predef = l; +} + +/* Insert an early preprocessor command that doesn't need special handling */ +void pp_pre_command(const char *what, char *string) +{ + Token *def, *space; + Line *l; + + def = tokenize(string); + if (what) { + space = new_White(def); + def = new_Token(space, TOKEN_PREPROC_ID, what, 0); + } + + nasm_new(l); + l->next = predef; + l->first = def; + l->finishes = NULL; + predef = l; +} + +static void pp_add_stdmac(macros_t *macros) +{ + macros_t **mp; + + /* Find the end of the list and avoid duplicates */ + for (mp = stdmacros; *mp; mp++) { + if (*mp == macros) + return; /* Nothing to do */ + } + + nasm_assert(mp < &stdmacros[ARRAY_SIZE(stdmacros)-1]); + + *mp = macros; +} + +void pp_extra_stdmac(macros_t *macros) +{ + extrastdmac = macros; +} + +/* Create a numeric token, with possible - token in front */ +static Token *make_tok_num(Token *next, int64_t val) +{ + char numbuf[32]; + int len; + uint64_t uval; + bool minus = val < 0; + + uval = minus ? -val : val; + + len = snprintf(numbuf, sizeof numbuf, "%"PRIu64, uval); + next = new_Token(next, TOKEN_NUM, numbuf, len); + + if (minus) + next = make_tok_char(next, '-'); + + return next; +} + +/* + * Do the inverse of make_tok_num(). This only needs to be able + * to parse the output of make_tok_num(). + */ +static int64_t get_tok_num(const Token *t, bool *err) +{ + bool minus = false; + int64_t v; + + if (tok_is(t, '-')) { + minus = true; + t = t->next; + } + if (!tok_is(t, TOKEN_NUM)) { + if (err) + *err = true; + return 0; + } + + v = readnum(tok_text(t), err); + return minus ? -v : v; +} + +/* Create a quoted string token */ +static Token *make_tok_qstr_len(Token *next, const char *str, size_t len) +{ + char *p = nasm_quote(str, &len); + return new_Token_free(next, TOKEN_STR, p, len); +} +static Token *make_tok_qstr(Token *next, const char *str) +{ + return make_tok_qstr_len(next, str, strlen(str)); +} + +/* Create a single-character operator token */ +static Token *make_tok_char(Token *next, char op) +{ + Token *t = new_Token(next, op, NULL, 1); + t->text.a[0] = op; + return t; +} + +/* + * Descent the macro hierarchy and display the expansion after + * encountering an error message. + */ +void pp_error_list_macros(errflags severity) +{ + const MMacro *m; + + severity |= ERR_PP_LISTMACRO | ERR_NO_SEVERITY | ERR_HERE; + + while ((m = src_error_down())) { + if ((m->nolist & NL_LIST) || !m->where.filename) + break; + nasm_error(severity, "... from macro `%s' defined", m->name); + } + + src_error_reset(); +} diff --git a/vere/ext/nasm/asm/preproc.h b/vere/ext/nasm/asm/preproc.h new file mode 100644 index 0000000..7113046 --- /dev/null +++ b/vere/ext/nasm/asm/preproc.h @@ -0,0 +1,56 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * preproc.h header file for preproc.c + */ + +#ifndef NASM_PREPROC_H +#define NASM_PREPROC_H + +#include "nasmlib.h" +#include "pptok.h" + +extern const char * const pp_directives[]; +extern const uint8_t pp_directives_len[]; + +/* Pointer to a macro chain */ +typedef const unsigned char macros_t; + +enum preproc_token pp_token_hash(const char *token); +enum preproc_token pp_tasm_token_hash(const char *token); + +/* Opens an include file or input file. This uses the include path. */ +FILE *pp_input_fopen(const char *filename, enum file_flags mode); + +#endif diff --git a/vere/ext/nasm/asm/quote.c b/vere/ext/nasm/asm/quote.c new file mode 100644 index 0000000..074f17d --- /dev/null +++ b/vere/ext/nasm/asm/quote.c @@ -0,0 +1,563 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * quote.c + */ + +#include "compiler.h" +#include "nasmlib.h" +#include "quote.h" +#include "nctype.h" +#include "error.h" + +/* + * Create a NASM quoted string in newly allocated memory. Update the + * *lenp parameter with the output length (sans final NUL). + */ + +char *nasm_quote(const char *str, size_t *lenp) +{ + const char *p, *ep; + char c, c1, *q, *nstr; + unsigned char uc; + bool sq_ok, dq_ok; + size_t qlen; + size_t len = *lenp; + + sq_ok = dq_ok = true; + ep = str+len; + qlen = 0; /* Length if we need `...` quotes */ + for (p = str; p < ep; p++) { + c = *p; + switch (c) { + case '\'': + sq_ok = false; + qlen++; + break; + case '\"': + dq_ok = false; + qlen++; + break; + case '`': + case '\\': + qlen += 2; + break; + default: + if (c < ' ' || c > '~') { + sq_ok = dq_ok = false; + switch (c) { + case '\a': + case '\b': + case '\t': + case '\n': + case '\v': + case '\f': + case '\r': + case 27: + qlen += 2; + break; + default: + c1 = (p+1 < ep) ? p[1] : 0; + if (c1 >= '0' && c1 <= '7') + uc = 0377; /* Must use the full form */ + else + uc = c; + if (uc > 077) + qlen++; + if (uc > 07) + qlen++; + qlen += 2; + break; + } + } else { + qlen++; + } + break; + } + } + + if (sq_ok || dq_ok) { + /* Use '...' or "..." */ + nstr = nasm_malloc(len+3); + nstr[0] = nstr[len+1] = sq_ok ? '\'' : '\"'; + q = &nstr[len+2]; + if (len > 0) + memcpy(nstr+1, str, len); + } else { + /* Need to use `...` quoted syntax */ + nstr = nasm_malloc(qlen+3); + q = nstr; + *q++ = '`'; + for (p = str; p < ep; p++) { + c = *p; + switch (c) { + case '`': + case '\\': + *q++ = '\\'; + *q++ = c; + break; + case 7: + *q++ = '\\'; + *q++ = 'a'; + break; + case 8: + *q++ = '\\'; + *q++ = 'b'; + break; + case 9: + *q++ = '\\'; + *q++ = 't'; + break; + case 10: + *q++ = '\\'; + *q++ = 'n'; + break; + case 11: + *q++ = '\\'; + *q++ = 'v'; + break; + case 12: + *q++ = '\\'; + *q++ = 'f'; + break; + case 13: + *q++ = '\\'; + *q++ = 'r'; + break; + case 27: + *q++ = '\\'; + *q++ = 'e'; + break; + default: + if (c < ' ' || c > '~') { + c1 = (p+1 < ep) ? p[1] : 0; + if (c1 >= '0' && c1 <= '7') + uc = 0377; /* Must use the full form */ + else + uc = c; + *q++ = '\\'; + if (uc > 077) + *q++ = ((unsigned char)c >> 6) + '0'; + if (uc > 07) + *q++ = (((unsigned char)c >> 3) & 7) + '0'; + *q++ = ((unsigned char)c & 7) + '0'; + break; + } else { + *q++ = c; + } + break; + } + } + *q++ = '`'; + nasm_assert((size_t)(q-nstr) == qlen+2); + } + *q = '\0'; + *lenp = q - nstr; + return nstr; +} + +static unsigned char *emit_utf8(unsigned char *q, uint32_t v) +{ + uint32_t vb1, vb2, vb3, vb4, vb5; + + if (v <= 0x7f) { + *q++ = v; + goto out0; + } + + vb1 = v >> 6; + if (vb1 <= 0x1f) { + *q++ = 0xc0 + vb1; + goto out1; + } + + vb2 = vb1 >> 6; + if (vb2 <= 0x0f) { + *q++ = 0xe0 + vb2; + goto out2; + } + + vb3 = vb2 >> 6; + if (vb3 <= 0x07) { + *q++ = 0xf0 + vb3; + goto out3; + } + + vb4 = vb3 >> 6; + if (vb4 <= 0x03) { + *q++ = 0xf8 + vb4; + goto out4; + } + + /* + * Note: this is invalid even for "classic" (pre-UTF16) 31-bit + * UTF-8 if the value is >= 0x8000000. This at least tries to do + * something vaguely sensible with it. Caveat programmer. + * The __utf*__ string transform functions do reject these + * as invalid input. + * + * vb5 cannot be more than 3, as a 32-bit value has been shifted + * right by 5*6 = 30 bits already. + */ + vb5 = vb4 >> 6; + *q++ = 0xfc + vb5; + goto out5; + + /* Emit extension bytes as appropriate */ +out5: *q++ = 0x80 + (vb4 & 63); +out4: *q++ = 0x80 + (vb3 & 63); +out3: *q++ = 0x80 + (vb2 & 63); +out2: *q++ = 0x80 + (vb1 & 63); +out1: *q++ = 0x80 + (v & 63); +out0: return q; +} + +static inline uint32_t ctlbit(uint32_t v) +{ + return unlikely(v < 32) ? UINT32_C(1) << v : 0; +} + +#define CTL_ERR(c) \ + (badctl & (ctlmask |= ctlbit(c))) + +#define EMIT_UTF8(c) \ + do { \ + uint32_t ec = (c); \ + if (!CTL_ERR(ec)) \ + q = emit_utf8(q, ec); \ + } while (0) + +#define EMIT(c) \ + do { \ + unsigned char ec = (c); \ + if (!CTL_ERR(ec)) \ + *q++ = ec; \ + } while (0) + +/* + * Same as nasm_quote, but take the length of a C string; + * the lenp argument is optional. + */ +char *nasm_quote_cstr(const char *str, size_t *lenp) +{ + size_t len = strlen(str); + char *qstr = nasm_quote(str, &len); + if (lenp) + *lenp = len; + return qstr; +} + +/* + * Do an *in-place* dequoting of the specified string, returning the + * resulting length (which may be containing embedded nulls.) + * + * In-place replacement is possible since the unquoted length is always + * shorter than or equal to the quoted length. + * + * *ep points to the final quote, or to the null if improperly quoted. + * + * Issue an error if the string contains control characters + * corresponding to bits set in badctl; in that case, the output + * string, but not *ep, is truncated before the first invalid + * character. + * + * badctl is a bitmask of control characters (0-31) which are forbidden + * from appearing in the final output. + * + * The qstart character can be either '`' (NASM style) or '\"' (C style), + * to indicate the lead marker of a quoted string. If it is '\"', then + * '`' is not a special character at all. + */ + +size_t nasm_unquote_anystr(char *str, char **ep, const uint32_t badctl, + const char qstart) +{ + unsigned char bq; + const unsigned char *p; + const unsigned char *escp = NULL; + unsigned char *q; + unsigned char c; + uint32_t ctlmask = 0; /* Mask of control characters seen */ + enum unq_state { + st_start, + st_backslash, + st_hex, + st_oct, + st_ucs, + st_done + } state; + int ndig = 0; + uint32_t nval = 0; + + p = q = (unsigned char *)str; + + bq = *p++; + if (!bq) + return 0; + + if (bq == (unsigned char)qstart) { + /* `...` string */ + state = st_start; + + while (state != st_done) { + c = *p++; + switch (state) { + case st_start: + if (c == '\\') { + state = st_backslash; + } else if ((c == '\0') | (c == bq)) { + state = st_done; + } else { + EMIT(c); + } + break; + + case st_backslash: + state = st_start; + escp = p; /* Beginning of argument sequence */ + nval = 0; + switch (c) { + case 'a': + nval = 7; + break; + case 'b': + nval = 8; + break; + case 'e': + nval = 27; + break; + case 'f': + nval = 12; + break; + case 'n': + nval = 10; + break; + case 'r': + nval = 13; + break; + case 't': + nval = 9; + break; + case 'u': + state = st_ucs; + ndig = 4; + break; + case 'U': + state = st_ucs; + ndig = 8; + break; + case 'v': + nval = 11; + break; + case 'x': + case 'X': + state = st_hex; + ndig = 2; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + state = st_oct; + ndig = 2; /* Up to two more digits */ + nval = c - '0'; + break; + case '\0': + nval = '\\'; + p--; /* Reprocess; terminates string */ + break; + default: + nval = c; + break; + } + if (state == st_start) + EMIT(nval); + break; + + case st_oct: + if (c >= '0' && c <= '7') { + nval = (nval << 3) + (c - '0'); + if (--ndig) + break; /* Might have more digits */ + } else { + p--; /* Process this character again */ + } + EMIT(nval); + state = st_start; + break; + + case st_hex: + case st_ucs: + if (nasm_isxdigit(c)) { + nval = (nval << 4) + numvalue(c); + if (--ndig) + break; /* Might have more digits */ + } else { + p--; /* Process this character again */ + } + + if (unlikely(p <= escp)) + EMIT(escp[-1]); + else if (state == st_ucs) + EMIT_UTF8(nval); + else + EMIT(nval); + + state = st_start; + break; + + default: + panic(); + } + } + } else if (bq == '\'' || bq == '\"') { + /* + * '...' or "..." string, NASM legacy style (no escapes of + * * any kind, including collapsing double quote marks.) + * We obviously can't get here if qstart == '\"'. + */ + while ((c = *p++) && (c != bq)) + EMIT(c); + } else { + /* Not a quoted string, just return the input... */ + while ((c = *p++)) + EMIT(c); + } + + /* Zero-terminate the output */ + *q = '\0'; + + if (ctlmask & badctl) + nasm_nonfatal("control character in string not allowed here"); + + if (ep) + *ep = (char *)p - 1; + return (char *)q - str; +} +#undef EMIT + +/* + * Unquote any arbitrary string; may produce any bytes, including embedded + * control- and NUL characters. + */ +size_t nasm_unquote(char *str, char **ep) +{ + return nasm_unquote_anystr(str, ep, 0, STR_NASM); +} + +/* + * Unquote a string intended to be used as a C string; most control + * characters are rejected, including whitespace characters that + * would imply line endings and so on. + */ +size_t nasm_unquote_cstr(char *str, char **ep) +{ + return nasm_unquote_anystr(str, ep, BADCTL, STR_NASM); +} + +/* + * Find the end of a quoted string; returns the pointer to the terminating + * character (either the ending quote or the null character, if unterminated.) + * If the input is not a quoted string, return NULL. + * This applies to NASM style strings only. + */ +char *nasm_skip_string(const char *str) +{ + char bq; + const char *p; + char c; + enum unq_state { + st_start, + st_backslash, + st_done + } state; + + bq = str[0]; + p = str+1; + switch (bq) { + case '\'': + case '\"': + /* '...' or "..." string */ + while ((c = *p++) && (c != bq)) + ; + break; + + case '`': + /* `...` string */ + state = st_start; + while (state != st_done) { + c = *p++; + switch (state) { + case st_start: + switch (c) { + case '\\': + state = st_backslash; + break; + case '`': + case '\0': + state = st_done; + break; + default: + break; + } + break; + + case st_backslash: + /* + * Note: for the purpose of finding the end of the string, + * all successor states to st_backslash are functionally + * equivalent to st_start, since either a backslash or + * a backquote will force a return to the st_start state, + * and any possible multi-character state will terminate + * for any non-alphanumeric character. + */ + state = c ? st_start : st_done; + break; + + default: + panic(); + } + } + break; + + default: + /* Not a string at all... */ + return NULL; + } + return (char *)p - 1; +} diff --git a/vere/ext/nasm/asm/quote.h b/vere/ext/nasm/asm/quote.h new file mode 100644 index 0000000..d8226cd --- /dev/null +++ b/vere/ext/nasm/asm/quote.h @@ -0,0 +1,61 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2009 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef NASM_QUOTE_H +#define NASM_QUOTE_H + +#include "compiler.h" + +char *nasm_quote(const char *str, size_t *len); +char *nasm_quote_cstr(const char *str, size_t *len); +size_t nasm_unquote_anystr(char *str, char **endptr, + uint32_t badctl, char qstart); +size_t nasm_unquote(char *str, char **endptr); +size_t nasm_unquote_cstr(char *str, char **endptr); +char *nasm_skip_string(const char *str); + +/* Arguments used with nasm_quote_anystr() */ + +/* + * These are the only control characters when we produce a C string: + * BEL BS TAB ESC + */ +#define OKCTL ((1U << '\a') | (1U << '\b') | (1U << '\t') | (1U << 27)) +#define BADCTL (~(uint32_t)OKCTL) + +/* Initial quotation mark */ +#define STR_C '\"' +#define STR_NASM '`' + +#endif /* NASM_QUOTE_H */ + diff --git a/vere/ext/nasm/asm/rdstrnum.c b/vere/ext/nasm/asm/rdstrnum.c new file mode 100644 index 0000000..319f140 --- /dev/null +++ b/vere/ext/nasm/asm/rdstrnum.c @@ -0,0 +1,70 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2016 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * rdstrnum.c + * + * This converts a NASM string to an integer, used when a string + * is used in an integer constant context. This is a binary conversion, + * not a conversion from a numeric constant in text form. + */ + +#include "compiler.h" +#include "nasmlib.h" +#include "nasm.h" + +int64_t readstrnum(char *str, int length, bool *warn) +{ + int64_t charconst = 0; + int i; + + *warn = false; + + str += length; + if (globalbits == 64) { + for (i = 0; i < length; i++) { + if (charconst & UINT64_C(0xFF00000000000000)) + *warn = true; + charconst &= ~UINT64_C(0xFF00000000000000); + charconst = (charconst << 8) + (uint8_t)*--str; + } + } else { + for (i = 0; i < length; i++) { + if (charconst & UINT32_C(0xFF000000)) + *warn = true; + charconst &= ~UINT32_C(0xFF000000); + charconst = (charconst << 8) + (uint8_t)*--str; + } + } + return charconst; +} diff --git a/vere/ext/nasm/asm/segalloc.c b/vere/ext/nasm/asm/segalloc.c new file mode 100644 index 0000000..6d7a420 --- /dev/null +++ b/vere/ext/nasm/asm/segalloc.c @@ -0,0 +1,51 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * nasmlib.c library routines for the Netwide Assembler + */ + +#include "compiler.h" +#include "nasm.h" +#include "nasmlib.h" +#include "insns.h" + +static int32_t next_seg = 2; + +int32_t seg_alloc(void) +{ + int32_t this_seg = next_seg; + + next_seg += 2; + return this_seg; +} diff --git a/vere/ext/nasm/asm/srcfile.c b/vere/ext/nasm/asm/srcfile.c new file mode 100644 index 0000000..b44c021 --- /dev/null +++ b/vere/ext/nasm/asm/srcfile.c @@ -0,0 +1,118 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * srcfile.c - keep track of the current position in the input stream. + * + * This is used for error messages, listing, and debug information. In + * both cases we also want to understand where inside a non-nolist + * macro we may be. + * + * This hierarchy is a stack that is kept as a doubly-linked list, as + * we want to traverse it in either top-down order or bottom-up. + */ + +#include "compiler.h" + + +#include "nasmlib.h" +#include "hashtbl.h" +#include "srcfile.h" + +struct src_location_stack _src_top; +struct src_location_stack *_src_bottom = &_src_top; +struct src_location_stack *_src_error = &_src_top; + +static struct hash_table filename_hash; + +void src_init(void) +{ +} + +void src_free(void) +{ + hash_free_all(&filename_hash, false); +} + +/* + * Set the current filename, returning the old one. The input + * filename is duplicated if needed. + */ +const char *src_set_fname(const char *newname) +{ + struct hash_insert hi; + const char *oldname; + void **dp; + + if (newname) { + dp = hash_find(&filename_hash, newname, &hi); + if (dp) { + newname = (const char *)(*dp); + } else { + newname = nasm_strdup(newname); + hash_add(&hi, newname, (void *)newname); + } + } + + oldname = _src_bottom->l.filename; + _src_bottom->l.filename = newname; + return oldname; +} + +void src_set(int32_t line, const char *fname) +{ + src_set_fname(fname); + src_set_linnum(line); +} + +void src_macro_push(const void *macro, struct src_location where) +{ + struct src_location_stack *sl; + + nasm_new(sl); + sl->l = where; + sl->macro = macro; + sl->up = _src_bottom; + _src_bottom->down = sl; + _src_bottom = sl; +} + +void src_macro_pop(void) +{ + struct src_location_stack *sl = _src_bottom; + + _src_bottom = sl->up; + _src_bottom->down = NULL; + + nasm_free(sl); +} diff --git a/vere/ext/nasm/asm/srcfile.h b/vere/ext/nasm/asm/srcfile.h new file mode 100644 index 0000000..a185354 --- /dev/null +++ b/vere/ext/nasm/asm/srcfile.h @@ -0,0 +1,183 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * These functions are used to keep track of the source code file and name. + */ +#ifndef ASM_SRCFILE_H +#define ASM_SRCFILE_H + +#include "compiler.h" + +struct src_location { + const char *filename; + int32_t lineno; +}; + +static inline const_func struct src_location src_nowhere(void) +{ + struct src_location no_where = { NULL, 0 }; + return no_where; +} + +/* + * Comparing the *pointer value* of filenames is valid, because the + * filename hash system guarantees that each unique filename string is + * permanently allocated in exactly one location. + */ +static inline bool +src_location_same(struct src_location here, struct src_location there) +{ + return here.filename == there.filename && here.lineno == there.lineno; +} + +struct src_location_stack { + struct src_location l; + struct src_location_stack *up, *down; + const void *macro; +}; +extern struct src_location_stack _src_top; +extern struct src_location_stack *_src_bottom; +extern struct src_location_stack *_src_error; + +void src_init(void); +void src_free(void); +const char *src_set_fname(const char *newname); +static inline const char *src_get_fname(void) +{ + return _src_bottom->l.filename; +} +static inline int32_t src_set_linnum(int32_t newline) +{ + int32_t oldline = _src_bottom->l.lineno; + _src_bottom->l.lineno = newline; + return oldline; +} +static inline int32_t src_get_linnum(void) +{ + return _src_bottom->l.lineno; +} + +/* Can be used when there is no need for the old information */ +void src_set(int32_t line, const char *filename); + +/* + * src_get gets both the source file name and line. + * It is also used if you maintain private status about the source location + * It return 0 if the information was the same as the last time you + * checked, -2 if the name changed and (new-old) if just the line changed. + * + * xname must point to a filename string previously returned from any + * function of this subsystem or be NULL; another string value will + * not work. + */ +static inline int32_t src_get(int32_t *xline, const char **xname) +{ + const char *xn = *xname; + int32_t xl = *xline; + int32_t line = _src_bottom->l.lineno; + + *xline = line; + *xname = _src_bottom->l.filename; + + /* The return value is expected to be optimized out almost everywhere */ + if (!xn || xn != _src_bottom->l.filename) + return -2; + else + return line - xl; +} + +/* + * Returns the current information as a structure. + */ +static inline struct src_location src_where(void) +{ + return _src_bottom->l; +} + +/* + * Returns the top-level information as a structure. Use this for panic + * errors, since descent is not possible there. + */ +static inline struct src_location src_where_top(void) +{ + return _src_top.l; +} + +/* + * Returns the appropriate level of the location stack to use for error + * messages. This is the same as the top level except during the descent + * through the macro hierarchy for elucidation; + */ +static inline struct src_location src_where_error(void) +{ + return _src_error->l; +} +static inline const void *src_error_down(void) +{ + if (_src_error->down) { + _src_error = _src_error->down; + return _src_error->macro; + } else { + return NULL; + } +} +static inline void src_error_reset(void) +{ + _src_error = &_src_top; +} + +/* + * Sets the current information. The filename member of the structure + * *must* have been previously returned by src_get(), src_where(), or + * src_get_fname() and therefore be present in the hash. + */ +static inline struct src_location src_update(struct src_location whence) +{ + struct src_location old = _src_bottom->l; + _src_bottom->l = whence; + return old; +} + +/* + * Push/pop macro expansion level. "macroname" must remain constant at + * least until the same macro expansion level is popped. + */ +void src_macro_push(const void *macroname, struct src_location where); +static inline const void *src_macro_current(void) +{ + return _src_bottom->macro; +} +void src_macro_pop(void); + +#endif /* ASM_SRCFILE_H */ diff --git a/vere/ext/nasm/asm/stdscan.c b/vere/ext/nasm/asm/stdscan.c new file mode 100644 index 0000000..cbc0fc7 --- /dev/null +++ b/vere/ext/nasm/asm/stdscan.c @@ -0,0 +1,346 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "quote.h" +#include "stdscan.h" +#include "insns.h" + +/* + * Standard scanner routine used by parser.c and some output + * formats. It keeps a succession of temporary-storage strings in + * stdscan_tempstorage, which can be cleared using stdscan_reset. + */ +static char *stdscan_bufptr = NULL; +static char **stdscan_tempstorage = NULL; +static int stdscan_tempsize = 0, stdscan_templen = 0; +#define STDSCAN_TEMP_DELTA 256 + +void stdscan_set(char *str) +{ + stdscan_bufptr = str; +} + +char *stdscan_get(void) +{ + return stdscan_bufptr; +} + +static void stdscan_pop(void) +{ + nasm_free(stdscan_tempstorage[--stdscan_templen]); +} + +void stdscan_reset(void) +{ + while (stdscan_templen > 0) + stdscan_pop(); +} + +/* + * Unimportant cleanup is done to avoid confusing people who are trying + * to debug real memory leaks + */ +void stdscan_cleanup(void) +{ + stdscan_reset(); + nasm_free(stdscan_tempstorage); +} + +static char *stdscan_copy(const char *p, int len) +{ + char *text; + + text = nasm_malloc(len + 1); + memcpy(text, p, len); + text[len] = '\0'; + + if (stdscan_templen >= stdscan_tempsize) { + stdscan_tempsize += STDSCAN_TEMP_DELTA; + stdscan_tempstorage = nasm_realloc(stdscan_tempstorage, + stdscan_tempsize * + sizeof(char *)); + } + stdscan_tempstorage[stdscan_templen++] = text; + + return text; +} + +/* + * a token is enclosed with braces. proper token type will be assigned + * accordingly with the token flag. + */ +static int stdscan_handle_brace(struct tokenval *tv) +{ + if (!(tv->t_flag & TFLAG_BRC_ANY)) { + /* invalid token is put inside braces */ + nasm_nonfatal("`%s' is not a valid decorator with braces", tv->t_charptr); + tv->t_type = TOKEN_INVALID; + } else if (tv->t_flag & TFLAG_BRC_OPT) { + if (is_reg_class(OPMASKREG, tv->t_integer)) { + /* within braces, opmask register is now used as a mask */ + tv->t_type = TOKEN_OPMASK; + } + } + + return tv->t_type; +} + +int stdscan(void *private_data, struct tokenval *tv) +{ + const char *r; + + (void)private_data; /* Don't warn that this parameter is unused */ + + nasm_zero(*tv); + + stdscan_bufptr = nasm_skip_spaces(stdscan_bufptr); + if (!*stdscan_bufptr) + return tv->t_type = TOKEN_EOS; + + /* we have a token; either an id, a number or a char */ + if (nasm_isidstart(*stdscan_bufptr) || + (*stdscan_bufptr == '$' && nasm_isidstart(stdscan_bufptr[1]))) { + /* now we've got an identifier */ + bool is_sym = false; + int token_type; + + if (*stdscan_bufptr == '$') { + is_sym = true; + stdscan_bufptr++; + } + + r = stdscan_bufptr++; + /* read the entire buffer to advance the buffer pointer but... */ + while (nasm_isidchar(*stdscan_bufptr)) + stdscan_bufptr++; + + /* ... copy only up to IDLEN_MAX-1 characters */ + tv->t_charptr = stdscan_copy(r, stdscan_bufptr - r < IDLEN_MAX ? + stdscan_bufptr - r : IDLEN_MAX - 1); + + if (is_sym || stdscan_bufptr - r > MAX_KEYWORD) + return tv->t_type = TOKEN_ID; /* bypass all other checks */ + + token_type = nasm_token_hash(tv->t_charptr, tv); + if (unlikely(tv->t_flag & TFLAG_WARN)) { + /*! + *!ptr [on] non-NASM keyword used in other assemblers + *! warns about keywords used in other assemblers that might + *! indicate a mistake in the source code. Currently only the MASM + *! \c{PTR} keyword is recognized. See also \k{pkg_masm}. + */ + nasm_warn(WARN_PTR, "`%s' is not a NASM keyword", + tv->t_charptr); + } + + if (likely(!(tv->t_flag & TFLAG_BRC))) { + /* most of the tokens fall into this case */ + return token_type; + } else { + return tv->t_type = TOKEN_ID; + } + } else if (*stdscan_bufptr == '$' && !nasm_isnumchar(stdscan_bufptr[1])) { + /* + * It's a $ sign with no following hex number; this must + * mean it's a Here token ($), evaluating to the current + * assembly location, or a Base token ($$), evaluating to + * the base of the current segment. + */ + stdscan_bufptr++; + if (*stdscan_bufptr == '$') { + stdscan_bufptr++; + return tv->t_type = TOKEN_BASE; + } + return tv->t_type = TOKEN_HERE; + } else if (nasm_isnumstart(*stdscan_bufptr)) { /* now we've got a number */ + bool rn_error; + bool is_hex = false; + bool is_float = false; + bool has_e = false; + char c; + + r = stdscan_bufptr; + + if (*stdscan_bufptr == '$') { + stdscan_bufptr++; + is_hex = true; + } + + for (;;) { + c = *stdscan_bufptr++; + + if (!is_hex && (c == 'e' || c == 'E')) { + has_e = true; + if (*stdscan_bufptr == '+' || *stdscan_bufptr == '-') { + /* + * e can only be followed by +/- if it is either a + * prefixed hex number or a floating-point number + */ + is_float = true; + stdscan_bufptr++; + } + } else if (c == 'H' || c == 'h' || c == 'X' || c == 'x') { + is_hex = true; + } else if (c == 'P' || c == 'p') { + is_float = true; + if (*stdscan_bufptr == '+' || *stdscan_bufptr == '-') + stdscan_bufptr++; + } else if (nasm_isnumchar(c)) + ; /* just advance */ + else if (c == '.') + is_float = true; + else + break; + } + stdscan_bufptr--; /* Point to first character beyond number */ + + if (has_e && !is_hex) { + /* 1e13 is floating-point, but 1e13h is not */ + is_float = true; + } + + if (is_float) { + tv->t_charptr = stdscan_copy(r, stdscan_bufptr - r); + return tv->t_type = TOKEN_FLOAT; + } else { + r = stdscan_copy(r, stdscan_bufptr - r); + tv->t_integer = readnum(r, &rn_error); + stdscan_pop(); + if (rn_error) { + /* some malformation occurred */ + return tv->t_type = TOKEN_ERRNUM; + } + tv->t_charptr = NULL; + return tv->t_type = TOKEN_NUM; + } + } else if (*stdscan_bufptr == '\'' || *stdscan_bufptr == '"' || + *stdscan_bufptr == '`') { + /* a quoted string */ + char start_quote = *stdscan_bufptr; + tv->t_charptr = stdscan_bufptr; + tv->t_inttwo = nasm_unquote(tv->t_charptr, &stdscan_bufptr); + if (*stdscan_bufptr != start_quote) + return tv->t_type = TOKEN_ERRSTR; + stdscan_bufptr++; /* Skip final quote */ + return tv->t_type = TOKEN_STR; + } else if (*stdscan_bufptr == '{') { + /* now we've got a decorator */ + int token_len; + + stdscan_bufptr = nasm_skip_spaces(stdscan_bufptr); + + r = ++stdscan_bufptr; + /* + * read the entire buffer to advance the buffer pointer + * {rn-sae}, {rd-sae}, {ru-sae}, {rz-sae} contain '-' in tokens. + */ + while (nasm_isbrcchar(*stdscan_bufptr)) + stdscan_bufptr++; + + token_len = stdscan_bufptr - r; + + /* ... copy only up to DECOLEN_MAX-1 characters */ + tv->t_charptr = stdscan_copy(r, token_len < DECOLEN_MAX ? + token_len : DECOLEN_MAX - 1); + + stdscan_bufptr = nasm_skip_spaces(stdscan_bufptr); + /* if brace is not closed properly or token is too long */ + if ((*stdscan_bufptr != '}') || (token_len > MAX_KEYWORD)) { + nasm_nonfatal("invalid decorator token inside braces"); + return tv->t_type = TOKEN_INVALID; + } + + stdscan_bufptr++; /* skip closing brace */ + + /* handle tokens inside braces */ + nasm_token_hash(tv->t_charptr, tv); + return stdscan_handle_brace(tv); + } else if (*stdscan_bufptr == ';') { + /* a comment has happened - stay */ + return tv->t_type = TOKEN_EOS; + } else if (stdscan_bufptr[0] == '>' && stdscan_bufptr[1] == '>') { + if (stdscan_bufptr[2] == '>') { + stdscan_bufptr += 3; + return tv->t_type = TOKEN_SAR; + } else { + stdscan_bufptr += 2; + return tv->t_type = TOKEN_SHR; + } + } else if (stdscan_bufptr[0] == '<' && stdscan_bufptr[1] == '<') { + stdscan_bufptr += stdscan_bufptr[2] == '<' ? 3 : 2; + return tv->t_type = TOKEN_SHL; + } else if (stdscan_bufptr[0] == '/' && stdscan_bufptr[1] == '/') { + stdscan_bufptr += 2; + return tv->t_type = TOKEN_SDIV; + } else if (stdscan_bufptr[0] == '%' && stdscan_bufptr[1] == '%') { + stdscan_bufptr += 2; + return tv->t_type = TOKEN_SMOD; + } else if (stdscan_bufptr[0] == '=' && stdscan_bufptr[1] == '=') { + stdscan_bufptr += 2; + return tv->t_type = TOKEN_EQ; + } else if (stdscan_bufptr[0] == '<' && stdscan_bufptr[1] == '>') { + stdscan_bufptr += 2; + return tv->t_type = TOKEN_NE; + } else if (stdscan_bufptr[0] == '!' && stdscan_bufptr[1] == '=') { + stdscan_bufptr += 2; + return tv->t_type = TOKEN_NE; + } else if (stdscan_bufptr[0] == '<' && stdscan_bufptr[1] == '=') { + if (stdscan_bufptr[2] == '>') { + stdscan_bufptr += 3; + return tv->t_type = TOKEN_LEG; + } else { + stdscan_bufptr += 2; + return tv->t_type = TOKEN_LE; + } + } else if (stdscan_bufptr[0] == '>' && stdscan_bufptr[1] == '=') { + stdscan_bufptr += 2; + return tv->t_type = TOKEN_GE; + } else if (stdscan_bufptr[0] == '&' && stdscan_bufptr[1] == '&') { + stdscan_bufptr += 2; + return tv->t_type = TOKEN_DBL_AND; + } else if (stdscan_bufptr[0] == '^' && stdscan_bufptr[1] == '^') { + stdscan_bufptr += 2; + return tv->t_type = TOKEN_DBL_XOR; + } else if (stdscan_bufptr[0] == '|' && stdscan_bufptr[1] == '|') { + stdscan_bufptr += 2; + return tv->t_type = TOKEN_DBL_OR; + } else /* just an ordinary char */ + return tv->t_type = (uint8_t)(*stdscan_bufptr++); +} diff --git a/vere/ext/nasm/asm/stdscan.h b/vere/ext/nasm/asm/stdscan.h new file mode 100644 index 0000000..8dbc2d0 --- /dev/null +++ b/vere/ext/nasm/asm/stdscan.h @@ -0,0 +1,49 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2009 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * stdscan.h header file for stdscan.c + */ + +#ifndef NASM_STDSCAN_H +#define NASM_STDSCAN_H + +/* Standard scanner */ +void stdscan_set(char *str); +char *stdscan_get(void); +void stdscan_reset(void); +int stdscan(void *private_data, struct tokenval *tv); +int nasm_token_hash(const char *token, struct tokenval *tv); +void stdscan_cleanup(void); + +#endif diff --git a/vere/ext/nasm/asm/strfunc.c b/vere/ext/nasm/asm/strfunc.c new file mode 100644 index 0000000..236b9d2 --- /dev/null +++ b/vere/ext/nasm/asm/strfunc.c @@ -0,0 +1,359 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2009 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * strfunc.c + * + * String transformation functions + */ + +#include "nasmlib.h" +#include "nasm.h" + +/* + * Convert a string in UTF-8 format to UTF-16LE + */ +static size_t utf8_to_16le(uint8_t *str, size_t len, char *op) +{ +#define EMIT(x) do { if (op) { WRITESHORT(op,x); } outlen++; } while(0) + + size_t outlen = 0; + int expect = 0; + uint8_t c; + uint32_t v = 0, vmin = 0; + + while (len--) { + c = *str++; + + if (expect) { + if ((c & 0xc0) != 0x80) { + expect = 0; + return -1; + } else { + v = (v << 6) | (c & 0x3f); + if (!--expect) { + if (v < vmin || v > 0x10ffff || + (v >= 0xd800 && v <= 0xdfff)) { + return -1; + } else if (v > 0xffff) { + v -= 0x10000; + EMIT(0xd800 | (v >> 10)); + EMIT(0xdc00 | (v & 0x3ff)); + } else { + EMIT(v); + } + } + continue; + } + } + + if (c < 0x80) { + EMIT(c); + } else if (c < 0xc0 || c >= 0xfe) { + /* Invalid UTF-8 */ + return -1; + } else if (c < 0xe0) { + v = c & 0x1f; + expect = 1; + vmin = 0x80; + } else if (c < 0xf0) { + v = c & 0x0f; + expect = 2; + vmin = 0x800; + } else if (c < 0xf8) { + v = c & 0x07; + expect = 3; + vmin = 0x10000; + } else if (c < 0xfc) { + v = c & 0x03; + expect = 4; + vmin = 0x200000; + } else { + v = c & 0x01; + expect = 5; + vmin = 0x4000000; + } + } + + return expect ? (size_t)-1 : outlen << 1; + +#undef EMIT +} + +/* + * Convert a string in UTF-8 format to UTF-16BE + */ +static size_t utf8_to_16be(uint8_t *str, size_t len, char *op) +{ +#define EMIT(x) \ + do { \ + uint16_t _y = (x); \ + if (op) { \ + WRITECHAR(op, _y >> 8); \ + WRITECHAR(op, _y); \ + } \ + outlen++; \ + } while (0) \ + + size_t outlen = 0; + int expect = 0; + uint8_t c; + uint32_t v = 0, vmin = 0; + + while (len--) { + c = *str++; + + if (expect) { + if ((c & 0xc0) != 0x80) { + expect = 0; + return -1; + } else { + v = (v << 6) | (c & 0x3f); + if (!--expect) { + if (v < vmin || v > 0x10ffff || + (v >= 0xd800 && v <= 0xdfff)) { + return -1; + } else if (v > 0xffff) { + v -= 0x10000; + EMIT(0xdc00 | (v & 0x3ff)); + EMIT(0xd800 | (v >> 10)); + } else { + EMIT(v); + } + } + continue; + } + } + + if (c < 0x80) { + EMIT(c); + } else if (c < 0xc0 || c >= 0xfe) { + /* Invalid UTF-8 */ + return -1; + } else if (c < 0xe0) { + v = c & 0x1f; + expect = 1; + vmin = 0x80; + } else if (c < 0xf0) { + v = c & 0x0f; + expect = 2; + vmin = 0x800; + } else if (c < 0xf8) { + v = c & 0x07; + expect = 3; + vmin = 0x10000; + } else if (c < 0xfc) { + v = c & 0x03; + expect = 4; + vmin = 0x200000; + } else { + v = c & 0x01; + expect = 5; + vmin = 0x4000000; + } + } + + return expect ? (size_t)-1 : outlen << 1; + +#undef EMIT +} + +/* + * Convert a string in UTF-8 format to UTF-32LE + */ +static size_t utf8_to_32le(uint8_t *str, size_t len, char *op) +{ +#define EMIT(x) do { if (op) { WRITELONG(op,x); } outlen++; } while(0) + + size_t outlen = 0; + int expect = 0; + uint8_t c; + uint32_t v = 0, vmin = 0; + + while (len--) { + c = *str++; + + if (expect) { + if ((c & 0xc0) != 0x80) { + return -1; + } else { + v = (v << 6) | (c & 0x3f); + if (!--expect) { + if (v < vmin || (v >= 0xd800 && v <= 0xdfff)) { + return -1; + } else { + EMIT(v); + } + } + continue; + } + } + + if (c < 0x80) { + EMIT(c); + } else if (c < 0xc0 || c >= 0xfe) { + /* Invalid UTF-8 */ + return -1; + } else if (c < 0xe0) { + v = c & 0x1f; + expect = 1; + vmin = 0x80; + } else if (c < 0xf0) { + v = c & 0x0f; + expect = 2; + vmin = 0x800; + } else if (c < 0xf8) { + v = c & 0x07; + expect = 3; + vmin = 0x10000; + } else if (c < 0xfc) { + v = c & 0x03; + expect = 4; + vmin = 0x200000; + } else { + v = c & 0x01; + expect = 5; + vmin = 0x4000000; + } + } + + return expect ? (size_t)-1 : outlen << 2; + +#undef EMIT +} + +/* + * Convert a string in UTF-8 format to UTF-32BE + */ +static size_t utf8_to_32be(uint8_t *str, size_t len, char *op) +{ +#define EMIT(x) \ + do { \ + uint32_t _y = (x); \ + if (op) { \ + WRITECHAR(op,_y >> 24); \ + WRITECHAR(op,_y >> 16); \ + WRITECHAR(op,_y >> 8); \ + WRITECHAR(op,_y); \ + } \ + outlen++; \ + } while (0) + + size_t outlen = 0; + int expect = 0; + uint8_t c; + uint32_t v = 0, vmin = 0; + + while (len--) { + c = *str++; + + if (expect) { + if ((c & 0xc0) != 0x80) { + return -1; + } else { + v = (v << 6) | (c & 0x3f); + if (!--expect) { + if (v < vmin || (v >= 0xd800 && v <= 0xdfff)) { + return -1; + } else { + EMIT(v); + } + } + continue; + } + } + + if (c < 0x80) { + EMIT(c); + } else if (c < 0xc0 || c >= 0xfe) { + /* Invalid UTF-8 */ + return -1; + } else if (c < 0xe0) { + v = c & 0x1f; + expect = 1; + vmin = 0x80; + } else if (c < 0xf0) { + v = c & 0x0f; + expect = 2; + vmin = 0x800; + } else if (c < 0xf8) { + v = c & 0x07; + expect = 3; + vmin = 0x10000; + } else if (c < 0xfc) { + v = c & 0x03; + expect = 4; + vmin = 0x200000; + } else { + v = c & 0x01; + expect = 5; + vmin = 0x4000000; + } + } + + return expect ? (size_t)-1 : outlen << 2; + +#undef EMIT +} + +typedef size_t (*transform_func)(uint8_t *, size_t, char *); + +/* + * Apply a specific string transform and return it in a nasm_malloc'd + * buffer, returning the length. On error, returns (size_t)-1 and no + * buffer is allocated. + */ +size_t string_transform(char *str, size_t len, char **out, enum strfunc func) +{ + /* This should match enum strfunc in nasm.h */ + static const transform_func str_transforms[] = { + utf8_to_16le, + utf8_to_16le, + utf8_to_16be, + utf8_to_32le, + utf8_to_32le, + utf8_to_32be, + }; + transform_func transform = str_transforms[func]; + size_t outlen; + uint8_t *s = (uint8_t *)str; + char *buf; + + outlen = transform(s, len, NULL); + if (outlen == (size_t)-1) + return -1; + + *out = buf = nasm_malloc(outlen+1); + buf[outlen] = '\0'; /* Forcibly null-terminate the buffer */ + return transform(s, len, buf); +} diff --git a/vere/ext/nasm/asm/tokens.dat b/vere/ext/nasm/asm/tokens.dat new file mode 100644 index 0000000..fc155b0 --- /dev/null +++ b/vere/ext/nasm/asm/tokens.dat @@ -0,0 +1,215 @@ +## -------------------------------------------------------------------------- +## +## Copyright 1996-2021 The NASM Authors - All Rights Reserved +## See the file AUTHORS included with the NASM distribution for +## the specific copyright holders. +## +## 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. +## +## -------------------------------------------------------------------------- + +# The token parameters are in the other: +# TOKEN_TYPE, t_inttwo, t_flags, t_integer +# +# * is replaced with the token name converted to upper case. +# {xxx*yyy} is replaced with the token name stripped from the prefix +# xxx and suffix yyy before converting to upper case. + +# +# Tokens other than instructions and registers +# + +# The ? operator is a keyword, because ? is a legitimate symbol character +% TOKEN_QMARK, 0, 0, 0 +? + +% TOKEN_PREFIX, PPS_ASIZE, 0, P_* +a16 +a32 +a64 +asp + +% TOKEN_PREFIX, PPS_LOCK, 0, P_* +lock + +% TOKEN_PREFIX, PPS_OSIZE, 0, P_* +o16 +o32 +o64 +osp + +% TOKEN_PREFIX, PPS_REP, 0, P_* +rep +repe +repne +repnz +repz +xacquire +xrelease +bnd +nobnd + +% TOKEN_PREFIX, PPS_TIMES, 0, P_* +times + +% TOKEN_PREFIX, PPS_WAIT, 0, P_* +wait + +% TOKEN_PREFIX, PPS_REX, TFLAG_BRC, P_* +rex +evex +vex +vex3 +vex2 + +% TOKEN_SIZE, SIZE_*, 0, S_* +byte +word +dword +qword +tword +oword +yword +zword + +% TOKEN_SPECIAL, 0, 0, S_* +abs +far +long +near +nosplit +rel +short +strict +to + +# PTR is a legitimate symbol, but has an optional warning +% TOKEN_ID, 0, TFLAG_WARN, 0 +ptr + +# DUP is a legitimate symbol, but also has context-specific use in extops +% TOKEN_ID, 0, TFLAG_DUP, 0 +dup + +% TOKEN_FLOAT, 0, 0, 0 +__?infinity?__ +__?nan?__ +__?qnan?__ +__?snan?__ + +% TOKEN_FLOATIZE, 0, 0, FLOAT_{__?float*?__} +__?float8?__ +__?float16?__ +__?float32?__ +__?float64?__ +__?float80m?__ +__?float80e?__ +__?float128l?__ +__?float128h?__ + +% TOKEN_FLOATIZE, 0, 0, FLOAT_B{__?bfloat*?__} +__?bfloat16?__ + +% TOKEN_STRFUNC, 0, 0, STRFUNC_{__?*?__} +__?utf16?__ +__?utf16le?__ +__?utf16be?__ +__?utf32?__ +__?utf32le?__ +__?utf32be?__ + +% TOKEN_IFUNC, 0, 0, IFUNC_{__?*?__} +__?ilog2e?__ +__?ilog2w?__ +__?ilog2f?__ +__?ilog2c?__ + +% TOKEN_*, 0, 0, 0 +seg +wrt + +% TOKEN_{__?*?__}, 0, 0, 0 +__?masm_ptr?__ +__?masm_flat?__ + +% TOKEN_DECORATOR, 0, TFLAG_BRC | TFLAG_BRDCAST , BRC_1TO{1to*} +1to2 +1to4 +1to8 +1to16 +1to32 + +% TOKEN_DECORATOR, 0, TFLAG_BRC, BRC_{*-sae} +rn-sae +rd-sae +ru-sae +rz-sae + +% TOKEN_DECORATOR, 0, TFLAG_BRC, BRC_* +sae +z + +# Multi-character operators. Used in ppscan(). +% TOKEN_SHR, 0, 0, 0 +>> + +% TOKEN_SAR, 0, 0, 0 +>>> + +% TOKEN_SHL, 0, 0, 0 +<< +<<< + +% TOKEN_SDIV, 0, 0, 0 +// + +% TOKEN_SMOD, 0, 0, 0 +%% + +% TOKEN_EQ, 0, 0, 0 +== + +% TOKEN_NE, 0, 0, 0 +!= +<> + +% TOKEN_LE, 0, 0, 0 +<= + +% TOKEN_GE, 0, 0, 0 +>= + +% TOKEN_LEG, 0, 0, 0 +<=> + +% TOKEN_DBL_AND, 0, 0, 0 +&& + +% TOKEN_DBL_OR, 0, 0, 0 +|| + +% TOKEN_DBL_XOR, 0, 0, 0 +^^ diff --git a/vere/ext/nasm/asm/tokens.h b/vere/ext/nasm/asm/tokens.h new file mode 100644 index 0000000..b0e9887 --- /dev/null +++ b/vere/ext/nasm/asm/tokens.h @@ -0,0 +1,11 @@ +/* + * This file is generated from insns.dat, regs.dat and token.dat + * by tokhash.pl; do not edit. + */ + +#ifndef NASM_TOKENS_H +#define NASM_TOKENS_H + +#define MAX_KEYWORD 17 /* length of longest keyword */ + +#endif /* NASM_TOKENS_H */ diff --git a/vere/ext/nasm/asm/tokhash.c b/vere/ext/nasm/asm/tokhash.c new file mode 100644 index 0000000..f3fd779 --- /dev/null +++ b/vere/ext/nasm/asm/tokhash.c @@ -0,0 +1,19045 @@ +/* + * This file is generated from insns.dat, regs.dat and token.dat + * by tokhash.pl; do not edit. + */ + +#include "compiler.h" +#include "nasm.h" +#include "hashtbl.h" +#include "insns.h" +#include "stdscan.h" + +struct tokendata { + const char *string; + uint16_t len; + int16_t tokentype; + int16_t aux; + uint16_t tokflag; + int32_t num; +}; + +int nasm_token_hash(const char *token, struct tokenval *tv) +{ +#define INVALID_HASH_ENTRY (65535/3) + static const int16_t hashdata[16384] = { + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + -1301, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 57, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 1955, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1222, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 401, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 659, + 0, + 0, + 1294, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 456, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1902, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1764, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + 2154, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1218, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2105, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 2345, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 226, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 247, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 824, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 643, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + 1751, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1222, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 725, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 670, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 237, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 2391, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1423, + 2570, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 302, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1334, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1836, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 493, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 898, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 716, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 758, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2233, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1678, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 230, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 170, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1479, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1932, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2351, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2137, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 1613, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 1261, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 1008, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + -184, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1076, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1434, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2040, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -521, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 291, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 318, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1625, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 729, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 1162, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 476, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1793, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 395, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1995, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1518, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1304, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 750, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1547, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2563, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1051, + 1602, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1435, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1882, + 0, + 1971, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1135, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1408, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1297, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 535, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 712, + 0, + 0, + 536, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2328, + INVALID_HASH_ENTRY, + 2490, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1465, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + 1742, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 487, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 915, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1293, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + -55, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + 1901, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1986, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2240, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1541, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 1596, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2262, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1422, + INVALID_HASH_ENTRY, + 0, + 2190, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 1161, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1640, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 951, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2323, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1604, + INVALID_HASH_ENTRY, + -605, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 672, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2323, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 508, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2216, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 390, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2151, + INVALID_HASH_ENTRY, + 1253, + 0, + 749, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2425, + 0, + 1195, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 467, + INVALID_HASH_ENTRY, + 2558, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 822, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 945, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1029, + INVALID_HASH_ENTRY, + 1171, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 869, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + 2349, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 788, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 519, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2104, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1413, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 757, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 1298, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1844, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1813, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -78, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 46, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2537, + INVALID_HASH_ENTRY, + 0, + -733, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1951, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 663, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2100, + 1291, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2506, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1805, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -30, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1972, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 192, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 580, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1217, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 873, + 2569, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1023, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1239, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + 1463, + 1687, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2229, + INVALID_HASH_ENTRY, + 0, + 991, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1865, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2044, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 215, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 2025, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2205, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + -1183, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 928, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 1126, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 365, + 134, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 486, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2271, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -1881, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1736, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2184, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2562, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1175, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -152, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1669, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -45, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1146, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 187, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 1137, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1389, + 0, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 6, + 919, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 68, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 1477, + INVALID_HASH_ENTRY, + 1238, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1497, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 367, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 817, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1829, + 1312, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 433, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 977, + 1311, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 398, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1891, + 0, + 0, + 1292, + 0, + INVALID_HASH_ENTRY, + 852, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 2002, + 0, + INVALID_HASH_ENTRY, + 0, + 1156, + 1450, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 419, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1191, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2465, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1079, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2098, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 3089, + 1409, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1637, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2310, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1102, + INVALID_HASH_ENTRY, + 2160, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1871, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 488, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1576, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1617, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 267, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 613, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 427, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 685, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 121, + 62, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2332, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 882, + 539, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 36, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 728, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1105, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1228, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1769, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 888, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -837, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1716, + 0, + INVALID_HASH_ENTRY, + 1491, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 605, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2337, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 865, + 1682, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1549, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 397, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 234, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 383, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 614, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1929, + 0, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 818, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -637, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1300, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2498, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2419, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1432, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -1299, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1213, + 504, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1641, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1587, + INVALID_HASH_ENTRY, + 2567, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 223, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2056, + 2129, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 935, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1271, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2371, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -522, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2404, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2305, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 653, + INVALID_HASH_ENTRY, + 554, + INVALID_HASH_ENTRY, + 902, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 606, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2298, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 239, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 315, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -184, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -2225, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1492, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1040, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 1758, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1936, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1404, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1062, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1930, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1554, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 1440, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2166, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2357, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2475, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2118, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1897, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1595, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 842, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2113, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 54, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 94, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 360, + INVALID_HASH_ENTRY, + 2076, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1457, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + -330, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2299, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 305, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 300, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 2092, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1385, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 627, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1263, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1541, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 483, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2334, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 414, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2123, + 867, + 1787, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1748, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 729, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 271, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 1032, + -279, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2407, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1513, + 0, + INVALID_HASH_ENTRY, + 1726, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1470, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -865, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 225, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 755, + 0, + 0, + INVALID_HASH_ENTRY, + 1126, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1123, + 0, + 55, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 976, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1274, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1316, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1006, + 1941, + 1287, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 442, + 2239, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 174, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1992, + 583, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1322, + 1216, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 744, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 163, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2112, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 17, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1496, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + -492, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 880, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1686, + 1843, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 318, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1041, + 1632, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 723, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2526, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -400, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2492, + INVALID_HASH_ENTRY, + 2441, + 1094, + INVALID_HASH_ENTRY, + -1676, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2134, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 867, + INVALID_HASH_ENTRY, + 1260, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 654, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1768, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 766, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1780, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 814, + INVALID_HASH_ENTRY, + 0, + 114, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 680, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 791, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1730, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 758, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1241, + INVALID_HASH_ENTRY, + 2462, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1880, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 3445, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1856, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1365, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 731, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2375, + 0, + 801, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 827, + INVALID_HASH_ENTRY, + 1896, + INVALID_HASH_ENTRY, + 993, + 2358, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -80, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 386, + INVALID_HASH_ENTRY, + -492, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 1144, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2438, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1013, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1566, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 12, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2128, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 555, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 387, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 60, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1534, + INVALID_HASH_ENTRY, + 164, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1254, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 953, + 1057, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -343, + INVALID_HASH_ENTRY, + 1236, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 178, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 1985, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2061, + INVALID_HASH_ENTRY, + 2416, + INVALID_HASH_ENTRY, + 1455, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 80, + 918, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1605, + 577, + 346, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1199, + INVALID_HASH_ENTRY, + 1315, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 2496, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1474, + 1030, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1288, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2033, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2247, + 155, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1390, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 602, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1401, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1188, + INVALID_HASH_ENTRY, + 1321, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2206, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1827, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2140, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1533, + 2480, + 1312, + 2321, + 71, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 816, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -53, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1944, + INVALID_HASH_ENTRY, + 1128, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 678, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 13, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 781, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 739, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 100, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 967, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 444, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1621, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1209, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2013, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 160, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1401, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 685, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2198, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 624, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -968, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2908, + 1755, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1066, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1860, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -525, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1685, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1362, + -1272, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2026, + INVALID_HASH_ENTRY, + 1077, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 979, + 2144, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1075, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -235, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -895, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 567, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 52, + INVALID_HASH_ENTRY, + 925, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 821, + 410, + 0, + INVALID_HASH_ENTRY, + 2483, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2159, + INVALID_HASH_ENTRY, + 452, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2556, + INVALID_HASH_ENTRY, + 2136, + -770, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1741, + INVALID_HASH_ENTRY, + 2346, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 79, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 2182, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2424, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -981, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 913, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1086, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2408, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 498, + INVALID_HASH_ENTRY, + 969, + 919, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2446, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 904, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1486, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1976, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -702, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 367, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 3630, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1969, + 0, + INVALID_HASH_ENTRY, + 1527, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 380, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1022, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1273, + 2372, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 340, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1095, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2544, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 359, + INVALID_HASH_ENTRY, + 1330, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1221, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1402, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1995, + 204, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 328, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1063, + 0, + INVALID_HASH_ENTRY, + 1867, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -72, + 454, + 2313, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1223, + 571, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 984, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -40, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1336, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 459, + 765, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2542, + INVALID_HASH_ENTRY, + 1578, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 641, + INVALID_HASH_ENTRY, + 2503, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 372, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 976, + INVALID_HASH_ENTRY, + 1115, + INVALID_HASH_ENTRY, + 1055, + 0, + INVALID_HASH_ENTRY, + 1442, + 2514, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 525, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 334, + 1975, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 548, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 334, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1555, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 858, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1433, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1481, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2093, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1960, + 2578, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 87, + 1697, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 563, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 91, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2181, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 288, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -42, + INVALID_HASH_ENTRY, + 1205, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 879, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1588, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 455, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 211, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1993, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 981, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1200, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1078, + INVALID_HASH_ENTRY, + 2320, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 785, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 719, + 779, + INVALID_HASH_ENTRY, + 0, + 754, + 469, + 529, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 856, + 0, + INVALID_HASH_ENTRY, + 1152, + INVALID_HASH_ENTRY, + 0, + 1270, + 669, + 943, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -2213, + 709, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 608, + INVALID_HASH_ENTRY, + 517, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2024, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2484, + 293, + 1333, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1692, + INVALID_HASH_ENTRY, + 2461, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 462, + INVALID_HASH_ENTRY, + 2557, + 893, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 637, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 166, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 319, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1092, + INVALID_HASH_ENTRY, + 454, + INVALID_HASH_ENTRY, + 0, + 1681, + INVALID_HASH_ENTRY, + 181, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 2215, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2586, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1810, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1406, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 126, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 4, + INVALID_HASH_ENTRY, + 1334, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1374, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1886, + INVALID_HASH_ENTRY, + 0, + 694, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2201, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + 2530, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1912, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 769, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2518, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 940, + 619, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 492, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 34, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1185, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1522, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1568, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2437, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 399, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1317, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + -9, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1130, + 0, + INVALID_HASH_ENTRY, + 2507, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 829, + INVALID_HASH_ENTRY, + 628, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 24, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1248, + INVALID_HASH_ENTRY, + 2197, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 649, + 0, + INVALID_HASH_ENTRY, + 1520, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1614, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 372, + INVALID_HASH_ENTRY, + 2187, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2331, + INVALID_HASH_ENTRY, + 1180, + INVALID_HASH_ENTRY, + 1246, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -315, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1067, + 1168, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 557, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -496, + INVALID_HASH_ENTRY, + 9, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 933, + 2248, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -582, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1210, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -358, + INVALID_HASH_ENTRY, + -1539, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2458, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1177, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -312, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2352, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 21, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2445, + INVALID_HASH_ENTRY, + 2251, + INVALID_HASH_ENTRY, + 2539, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -123, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 999, + INVALID_HASH_ENTRY, + 1078, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1575, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1237, + 2581, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 647, + INVALID_HASH_ENTRY, + 0, + 1819, + 140, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2552, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 449, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 872, + INVALID_HASH_ENTRY, + 64, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + -2092, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1002, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 692, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1390, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1998, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1866, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 238, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 158, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2243, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 37, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1584, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1080, + INVALID_HASH_ENTRY, + 2085, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1872, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 42, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2155, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1686, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 777, + 219, + 893, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 1733, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 1245, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 103, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 229, + 2466, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2202, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 129, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1732, + 0, + INVALID_HASH_ENTRY, + 384, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 828, + INVALID_HASH_ENTRY, + -730, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1885, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1546, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1838, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1648, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 323, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 986, + INVALID_HASH_ENTRY, + 2392, + 959, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 576, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 847, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 779, + INVALID_HASH_ENTRY, + -985, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1231, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 88, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 870, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1318, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 125, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 308, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -906, + INVALID_HASH_ENTRY, + 0, + 1220, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2179, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 394, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 502, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1783, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 809, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 956, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 7, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2174, + INVALID_HASH_ENTRY, + 77, + 1553, + INVALID_HASH_ENTRY, + 0, + 1942, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 938, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1609, + 2380, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1537, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2244, + 245, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -5, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 417, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2257, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1796, + 926, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1612, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 362, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 958, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 631, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 106, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2420, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + -897, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2001, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 764, + 1298, + 2008, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 293, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + -981, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2175, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 606, + INVALID_HASH_ENTRY, + 353, + 430, + 0, + 2371, + 1994, + INVALID_HASH_ENTRY, + 336, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 530, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + -1600, + INVALID_HASH_ENTRY, + 48, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 274, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1724, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2152, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 562, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 792, + -1007, + 1503, + INVALID_HASH_ENTRY, + 203, + 1728, + INVALID_HASH_ENTRY, + 1087, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 320, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 43, + INVALID_HASH_ENTRY, + 294, + 564, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 331, + -734, + INVALID_HASH_ENTRY, + 1429, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 368, + INVALID_HASH_ENTRY, + 1336, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 762, + 1842, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 422, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 421, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 995, + INVALID_HASH_ENTRY, + 335, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 27, + 1214, + INVALID_HASH_ENTRY, + 1946, + 934, + INVALID_HASH_ENTRY, + 766, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2114, + INVALID_HASH_ENTRY, + 783, + 0, + 126, + 674, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -465, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1749, + INVALID_HASH_ENTRY, + 1928, + INVALID_HASH_ENTRY, + 1569, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1114, + 2521, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1438, + 2336, + INVALID_HASH_ENTRY, + 1511, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2385, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 280, + 2050, + 1607, + 639, + INVALID_HASH_ENTRY, + 697, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1752, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 840, + 329, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1283, + 874, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 666, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 1145, + INVALID_HASH_ENTRY, + 748, + 1622, + INVALID_HASH_ENTRY, + -880, + 2053, + 1025, + INVALID_HASH_ENTRY, + 1160, + INVALID_HASH_ENTRY, + 1073, + 1344, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 852, + 972, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 152, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1494, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 889, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 325, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2022, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 772, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1004, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2044, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1806, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 588, + -1630, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 399, + 1855, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1377, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 793, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 47, + INVALID_HASH_ENTRY, + 2405, + 2397, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1542, + INVALID_HASH_ENTRY, + 0, + 1802, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1716, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2523, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1543, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1131, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 706, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 1701, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 789, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 3614, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 222, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 356, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 441, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1068, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1201, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1927, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 484, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 97, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -847, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 924, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1767, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2508, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 281, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 574, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1098, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1284, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1005, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2574, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1151, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2146, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 675, + 4413, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 186, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2294, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2356, + INVALID_HASH_ENTRY, + 1652, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 216, + 371, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1380, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 144, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 895, + INVALID_HASH_ENTRY, + 668, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2543, + INVALID_HASH_ENTRY, + 836, + INVALID_HASH_ENTRY, + 943, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2088, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1467, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 980, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 1387, + INVALID_HASH_ENTRY, + 1540, + INVALID_HASH_ENTRY, + 1412, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 369, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 306, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -211, + 2302, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 439, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1737, + INVALID_HASH_ENTRY, + 116, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2573, + 1150, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -463, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 495, + INVALID_HASH_ENTRY, + 431, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 937, + INVALID_HASH_ENTRY, + 1832, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1661, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1702, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 481, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2130, + INVALID_HASH_ENTRY, + 2326, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 203, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 929, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2347, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 594, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 410, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1794, + 1136, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1276, + 814, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 4911, + INVALID_HASH_ENTRY, + 843, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2353, + 0, + 475, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2037, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2432, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1583, + INVALID_HASH_ENTRY, + 0, + 1057, + INVALID_HASH_ENTRY, + 539, + INVALID_HASH_ENTRY, + 545, + INVALID_HASH_ENTRY, + 1164, + INVALID_HASH_ENTRY, + 1137, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2393, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -733, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1033, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1378, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 843, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 412, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 429, + 172, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1172, + 2139, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1552, + INVALID_HASH_ENTRY, + 1892, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 482, + INVALID_HASH_ENTRY, + 1771, + INVALID_HASH_ENTRY, + 2196, + INVALID_HASH_ENTRY, + -1353, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1143, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 514, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2319, + 1890, + INVALID_HASH_ENTRY, + 922, + INVALID_HASH_ENTRY, + 0, + 2190, + 1140, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1419, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2176, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1369, + INVALID_HASH_ENTRY, + 877, + 757, + INVALID_HASH_ENTRY, + 1155, + 1154, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1336, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 960, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 987, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2982, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -247, + INVALID_HASH_ENTRY, + 188, + INVALID_HASH_ENTRY, + 0, + 1536, + INVALID_HASH_ENTRY, + 1574, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2291, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2456, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 66, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 633, + 580, + 2263, + 167, + 561, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1062, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1613, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1854, + 329, + 2238, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1909, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1660, + INVALID_HASH_ENTRY, + 850, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1723, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1386, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 701, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -2350, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -979, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2157, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -116, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2222, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 93, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 635, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 491, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1212, + INVALID_HASH_ENTRY, + -1452, + 2585, + 1759, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1133, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -635, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2439, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1801, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1948, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1940, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2529, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 377, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2403, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 277, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2374, + 409, + INVALID_HASH_ENTRY, + -1934, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 235, + 2511, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 388, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1416, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -115, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2308, + 162, + 149, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 875, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2207, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 250, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1548, + 2036, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2463, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 816, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1236, + INVALID_HASH_ENTRY, + 238, + INVALID_HASH_ENTRY, + 1, + 1182, + INVALID_HASH_ENTRY, + 2133, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1258, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1605, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1116, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1756, + 1869, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1933, + 578, + INVALID_HASH_ENTRY, + 343, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2362, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 838, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 998, + INVALID_HASH_ENTRY, + 0, + 2246, + 2431, + INVALID_HASH_ENTRY, + 2183, + 699, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 151, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1772, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 751, + -947, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1617, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2369, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 607, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 687, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 966, + 0, + -475, + INVALID_HASH_ENTRY, + 2417, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1257, + 1729, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2152, + 2142, + INVALID_HASH_ENTRY, + 32, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1642, + INVALID_HASH_ENTRY, + 2, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 286, + 0, + INVALID_HASH_ENTRY, + 1508, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2292, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1766, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1370, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 741, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 923, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1560, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 49, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 198, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2545, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1356, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 321, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2307, + 0, + 303, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2611, + INVALID_HASH_ENTRY, + 537, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2367, + 1517, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 169, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1346, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1739, + INVALID_HASH_ENTRY, + 1350, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 902, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 352, + INVALID_HASH_ENTRY, + 1509, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1176, + 2451, + INVALID_HASH_ENTRY, + 65, + INVALID_HASH_ENTRY, + 155, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1272, + INVALID_HASH_ENTRY, + 572, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 921, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1763, + 106, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1946, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1785, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 702, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 290, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1279, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -158, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 497, + 1689, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -2362, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 506, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 797, + INVALID_HASH_ENTRY, + 376, + 2415, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2343, + INVALID_HASH_ENTRY, + -1326, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 411, + 1936, + -1845, + 253, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 261, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2013, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1471, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 115, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + -352, + 367, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1939, + INVALID_HASH_ENTRY, + 2109, + 855, + INVALID_HASH_ENTRY, + 963, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1348, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2097, + 1529, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1277, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 499, + 0, + INVALID_HASH_ENTRY, + -1110, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1443, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2572, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1254, + 1644, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 783, + INVALID_HASH_ENTRY, + -308, + INVALID_HASH_ENTRY, + -285, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2389, + INVALID_HASH_ENTRY, + 1800, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1347, + 2527, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 496, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2145, + 971, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2536, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2260, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 626, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -438, + INVALID_HASH_ENTRY, + 1476, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1217, + 0, + 740, + 249, + 883, + -816, + INVALID_HASH_ENTRY, + 0, + 0, + 205, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1207, + 1275, + 1699, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 562, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 462, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1313, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2494, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2269, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 711, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1612, + 2411, + 470, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2409, + INVALID_HASH_ENTRY, + 283, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2330, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 581, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1485, + INVALID_HASH_ENTRY, + 1840, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1895, + 1465, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1874, + 0, + 1958, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 982, + 446, + -382, + -1246, + 2482, + 690, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 950, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2310, + 0, + 1514, + INVALID_HASH_ENTRY, + 515, + INVALID_HASH_ENTRY, + 15, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 464, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 622, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 711, + INVALID_HASH_ENTRY, + 620, + 2477, + INVALID_HASH_ENTRY, + 846, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 20, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 878, + -242, + 2119, + 1914, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 339, + INVALID_HASH_ENTRY, + 0, + -954, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 693, + 2027, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2211, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2256, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -813, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2064, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2082, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 105, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 667, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 241, + 191, + INVALID_HASH_ENTRY, + 0, + 2227, + INVALID_HASH_ENTRY, + -2183, + INVALID_HASH_ENTRY, + 1776, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -208, + 1373, + INVALID_HASH_ENTRY, + 1468, + 1505, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1449, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2471, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 123, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1783, + INVALID_HASH_ENTRY, + 154, + INVALID_HASH_ENTRY, + 2000, + 1653, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -809, + INVALID_HASH_ENTRY, + 2312, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 656, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1711, + INVALID_HASH_ENTRY, + 310, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 542, + INVALID_HASH_ENTRY, + 522, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -835, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + 1379, + INVALID_HASH_ENTRY, + 1826, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2490, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -141, + INVALID_HASH_ENTRY, + 1779, + INVALID_HASH_ENTRY, + 29, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 391, + INVALID_HASH_ENTRY, + 1467, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1601, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1186, + 1700, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 806, + 1343, + 0, + INVALID_HASH_ENTRY, + 1478, + INVALID_HASH_ENTRY, + 1314, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1532, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1591, + 0, + INVALID_HASH_ENTRY, + 958, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1495, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 309, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1441, + INVALID_HASH_ENTRY, + 1396, + INVALID_HASH_ENTRY, + 1189, + 1174, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 67, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -987, + -249, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2541, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1184, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -791, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1459, + 566, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 996, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -140, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2048, + INVALID_HASH_ENTRY, + 230, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2363, + INVALID_HASH_ENTRY, + 0, + 2285, + INVALID_HASH_ENTRY, + 617, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1169, + -1244, + 1570, + 2590, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 177, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2176, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1265, + INVALID_HASH_ENTRY, + 584, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2433, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1017, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1523, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1458, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2135, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1165, + 1830, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1521, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 798, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 10, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1991, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 255, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1680, + -378, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2095, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 591, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1577, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 730, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 489, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1796, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2546, + 854, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 650, + 83, + 1784, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -685, + 1673, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2410, + INVALID_HASH_ENTRY, + 906, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 541, + INVALID_HASH_ENTRY, + 1335, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2016, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2141, + INVALID_HASH_ENTRY, + 2214, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -241, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1493, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 596, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 150, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 99, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2041, + 590, + INVALID_HASH_ENTRY, + 949, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 639, + INVALID_HASH_ENTRY, + -820, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 509, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1107, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2177, + 18, + INVALID_HASH_ENTRY, + 892, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2518, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 281, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -825, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 72, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2381, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1166, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 165, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1847, + 413, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 177, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1490, + -138, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 920, + 1398, + 2485, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1161, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2587, + 1997, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 886, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2476, + 1500, + INVALID_HASH_ENTRY, + 1259, + 665, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1366, + 2497, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 358, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 660, + 423, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 131, + 2020, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1659, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2459, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1459, + -1439, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 110, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1271, + 217, + INVALID_HASH_ENTRY, + 1808, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1964, + 2186, + 894, + INVALID_HASH_ENTRY, + -1043, + 1507, + 791, + INVALID_HASH_ENTRY, + 192, + INVALID_HASH_ENTRY, + 1230, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1391, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 589, + 599, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 866, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -183, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1910, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 341, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1544, + INVALID_HASH_ENTRY, + 2793, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 587, + INVALID_HASH_ENTRY, + 1488, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 796, + 2339, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1338, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1516, + 1563, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 874, + INVALID_HASH_ENTRY, + 826, + INVALID_HASH_ENTRY, + 985, + -1247, + INVALID_HASH_ENTRY, + 2121, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 394, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1888, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1935, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 33, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 901, + INVALID_HASH_ENTRY, + 1009, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 710, + INVALID_HASH_ENTRY, + 2060, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1243, + INVALID_HASH_ENTRY, + -97, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1441, + INVALID_HASH_ENTRY, + 522, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2528, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2548, + 2249, + INVALID_HASH_ENTRY, + 26, + INVALID_HASH_ENTRY, + 236, + INVALID_HASH_ENTRY, + 392, + INVALID_HASH_ENTRY, + 2242, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 653, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -700, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 185, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 147, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1228, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -996, + 21, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 90, + INVALID_HASH_ENTRY, + 794, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1934, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -156, + 2500, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 208, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 983, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2057, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2054, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1987, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 700, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1720, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2234, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1137, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2090, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 978, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1121, + 1633, + 2531, + 1201, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1012, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1495, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 864, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2268, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 567, + INVALID_HASH_ENTRY, + 2457, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 592, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 472, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2218, + 330, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 349, + 2444, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1503, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2555, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 87, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1774, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 128, + 0, + INVALID_HASH_ENTRY, + 2253, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1212, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -465, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1440, + 932, + INVALID_HASH_ENTRY, + 618, + INVALID_HASH_ENTRY, + 1473, + 8, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -163, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 533, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2450, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1337, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1851, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 194, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -701, + 2264, + 111, + 1641, + 0, + 761, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2513, + -371, + INVALID_HASH_ENTRY, + 1559, + INVALID_HASH_ENTRY, + 1897, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 733, + 1111, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2366, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1472, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2004, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 480, + INVALID_HASH_ENTRY, + 2301, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1597, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1244, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1839, + 332, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2203, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 477, + INVALID_HASH_ENTRY, + 2467, + 2427, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 278, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 375, + INVALID_HASH_ENTRY, + 40, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1365, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1984, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 661, + 132, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 890, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 837, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2414, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 255, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 260, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1347, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1550, + 1861, + 448, + 848, + INVALID_HASH_ENTRY, + 364, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2279, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2035, + 2065, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 30, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1977, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 98, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 742, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 109, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2034, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1141, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 735, + 876, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1740, + 168, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 638, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1615, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1492, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1340, + 910, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 691, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1139, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 811, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1682, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1690, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 214, + INVALID_HASH_ENTRY, + 956, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2421, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1163, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 756, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 970, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1054, + INVALID_HASH_ENTRY, + 646, + 1818, + 1016, + 160, + -859, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 354, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 941, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 432, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 644, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 99, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 342, + INVALID_HASH_ENTRY, + -317, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 625, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1845, + INVALID_HASH_ENTRY, + 45, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1198, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1592, + INVALID_HASH_ENTRY, + 689, + 1058, + 0, + 2568, + 896, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 346, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1853, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1385, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2056, + 119, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 273, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1203, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1591, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1453, + 1792, + 1005, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 458, + INVALID_HASH_ENTRY, + 676, + INVALID_HASH_ENTRY, + -883, + INVALID_HASH_ENTRY, + 2509, + 1831, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1909, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1858, + INVALID_HASH_ENTRY, + 1068, + INVALID_HASH_ENTRY, + 0, + 1937, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1232, + INVALID_HASH_ENTRY, + 703, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -288, + INVALID_HASH_ENTRY, + 2277, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2015, + INVALID_HASH_ENTRY, + 707, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1196, + 1502, + 1000, + INVALID_HASH_ENTRY, + 2210, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1990, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 173, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2333, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2161, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 292, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 297, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1101, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 942, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 777, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1803, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1694, + 585, + 118, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1162, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1290, + 55, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 870, + INVALID_HASH_ENTRY, + 1049, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 752, + 1224, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2315, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1684, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1564, + 1709, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 86, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 28, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 597, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2117, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -2400, + INVALID_HASH_ENTRY, + 2280, + -471, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2283, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2051, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2360, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 107, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -7, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1469, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1811, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1722, + INVALID_HASH_ENTRY, + 1353, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 82, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2348, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1938, + 1286, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1664, + INVALID_HASH_ENTRY, + -294, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1645, + INVALID_HASH_ENTRY, + 2235, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2258, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1044, + 1159, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2178, + 0, + 2281, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 299, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2000, + 279, + INVALID_HASH_ENTRY, + 2158, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1678, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2300, + 0, + -1065, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1417, + 2266, + INVALID_HASH_ENTRY, + 1398, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1256, + INVALID_HASH_ENTRY, + 2324, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1367, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 737, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 863, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 50, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1325, + 720, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1132, + INVALID_HASH_ENTRY, + 1900, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 861, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2335, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1142, + INVALID_HASH_ENTRY, + 453, + INVALID_HASH_ENTRY, + 957, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 60, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 416, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2398, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1841, + INVALID_HASH_ENTRY, + 1567, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2468, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1289, + 193, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2344, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1979, + 0, + 2048, + 705, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 916, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -464, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1662, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2579, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 282, + INVALID_HASH_ENTRY, + 1918, + INVALID_HASH_ENTRY, + 242, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1683, + INVALID_HASH_ENTRY, + 1506, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1970, + INVALID_HASH_ENTRY, + 2036, + INVALID_HASH_ENTRY, + 1920, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1127, + INVALID_HASH_ENTRY, + 0, + -1669, + INVALID_HASH_ENTRY, + 1040, + 558, + INVALID_HASH_ENTRY, + 1355, + INVALID_HASH_ENTRY, + 2426, + 2489, + 2012, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 312, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2120, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 959, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2478, + 2390, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 152, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1143, + 296, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1082, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 156, + 0, + INVALID_HASH_ENTRY, + -1976, + INVALID_HASH_ENTRY, + 2208, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1028, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2066, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2232, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2224, + 476, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 0, + 726, + 988, + INVALID_HASH_ENTRY, + -806, + INVALID_HASH_ENTRY, + 1197, + 0, + INVALID_HASH_ENTRY, + 2350, + 2576, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1524, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 542, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 714, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 206, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1278, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1835, + -393, + -261, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 717, + INVALID_HASH_ENTRY, + 2180, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 748, + 1323, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2318, + 1823, + INVALID_HASH_ENTRY, + 1445, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1833, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 207, + INVALID_HASH_ENTRY, + 907, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1899, + 63, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 461, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1105, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1738, + -323, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 445, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1048, + INVALID_HASH_ENTRY, + 486, + INVALID_HASH_ENTRY, + -318, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2149, + INVALID_HASH_ENTRY, + 1281, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 166, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2395, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2473, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 587, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 311, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 338, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 157, + 1817, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2553, + 1837, + 435, + 1354, + 1071, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1586, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1138, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 389, + 75, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1937, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1026, + INVALID_HASH_ENTRY, + 1671, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 396, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1754, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 831, + 1857, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 973, + INVALID_HASH_ENTRY, + 2359, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1967, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1795, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1638, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1968, + -985, + 2571, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1096, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1922, + 1014, + INVALID_HASH_ENTRY, + 159, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2106, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1153, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1916, + 1489, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 127, + 2452, + INVALID_HASH_ENTRY, + 1090, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 677, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1674, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2436, + 58, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1345, + 1295, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2138, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2039, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1814, + 1361, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1770, + INVALID_HASH_ENTRY, + -1169, + 778, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1670, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 575, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1889, + 1718, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 359, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1158, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 183, + 2501, + 1965, + INVALID_HASH_ENTRY, + 1059, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2204, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 299, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 767, + 2259, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 884, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1932, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1267, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1816, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 121, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1735, + 0, + INVALID_HASH_ENTRY, + 1573, + INVALID_HASH_ENTRY, + 366, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1590, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1797, + INVALID_HASH_ENTRY, + 113, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1304, + 2110, + 2373, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2524, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -53, + -1231, + INVALID_HASH_ENTRY, + 651, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 572, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2156, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 134, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2428, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 944, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 688, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2101, + 1211, + INVALID_HASH_ENTRY, + 1062, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 937, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1407, + 2413, + 1925, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2029, + INVALID_HASH_ENTRY, + 2515, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1424, + INVALID_HASH_ENTRY, + 487, + 1192, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 153, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1371, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1047, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1415, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 773, + INVALID_HASH_ENTRY, + 1656, + INVALID_HASH_ENTRY, + 0, + 287, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 337, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -705, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 808, + 1505, + INVALID_HASH_ENTRY, + 2241, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 233, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 5, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2049, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 0, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -56, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 745, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2050, + 676, + INVALID_HASH_ENTRY, + 2289, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1104, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1436, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 243, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 812, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2365, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 124, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1676, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1309, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1427, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 96, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 871, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1703, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1753, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1439, + 2172, + 2237, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 802, + INVALID_HASH_ENTRY, + 1430, + INVALID_HASH_ENTRY, + 382, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2200, + 1110, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 673, + INVALID_HASH_ENTRY, + 2261, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1089, + INVALID_HASH_ENTRY, + 994, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1099, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1868, + 1634, + 930, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1084, + INVALID_HASH_ENTRY, + 413, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1561, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1606, + 1907, + INVALID_HASH_ENTRY, + 0, + 474, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2221, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 600, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 2071, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2317, + INVALID_HASH_ENTRY, + 1421, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1565, + 1119, + INVALID_HASH_ENTRY, + 1234, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 3355, + 1097, + 1711, + INVALID_HASH_ENTRY, + 131, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 655, + INVALID_HASH_ENTRY, + 74, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 968, + 2424, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 275, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2322, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1643, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1359, + INVALID_HASH_ENTRY, + 295, + 1400, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2284, + INVALID_HASH_ENTRY, + 1091, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2188, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 629, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1346, + 1815, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2517, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1983, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 3, + INVALID_HASH_ENTRY, + 1053, + 2342, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 624, + 1981, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 611, + -213, + INVALID_HASH_ENTRY, + 1036, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1630, + 619, + 1594, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 642, + INVALID_HASH_ENTRY, + 698, + 0, + -156, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 379, + 2270, + INVALID_HASH_ENTRY, + 810, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1202, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1788, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1904, + 569, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 381, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1762, + INVALID_HASH_ENTRY, + -1478, + INVALID_HASH_ENTRY, + 815, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2533, + 715, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2031, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2193, + 1188, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1820, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2087, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1996, + 1042, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1219, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1039, + 4, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1487, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 485, + -1382, + INVALID_HASH_ENTRY, + 1952, + 201, + 298, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2532, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1037, + 1665, + INVALID_HASH_ENTRY, + 2561, + 406, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1873, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 917, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 463, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1381, + 713, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1225, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 304, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 96, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2028, + INVALID_HASH_ENTRY, + 122, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 161, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2047, + 1705, + INVALID_HASH_ENTRY, + 1373, + 1672, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 990, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 800, + 2120, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 865, + 2018, + INVALID_HASH_ENTRY, + 2170, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2388, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1572, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2401, + 2274, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1260, + INVALID_HASH_ENTRY, + 634, + 92, + 1824, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1425, + -391, + -287, + 1034, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 955, + 1414, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2418, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1056, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1319, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 664, + INVALID_HASH_ENTRY, + 610, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1713, + INVALID_HASH_ENTRY, + 256, + 814, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -372, + 465, + 1324, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 617, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 662, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2435, + INVALID_HASH_ENTRY, + 1877, + 1227, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 526, + 887, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1319, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1898, + 200, + 1384, + 1999, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2164, + 1179, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 975, + INVALID_HASH_ENTRY, + 2085, + 2449, + INVALID_HASH_ENTRY, + 1073, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 410, + -400, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1210, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1282, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 193, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 505, + INVALID_HASH_ENTRY, + 117, + 1879, + 457, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 820, + INVALID_HASH_ENTRY, + 0, + 727, + 0, + INVALID_HASH_ENTRY, + 2797, + -14, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2499, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 859, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1848, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1060, + INVALID_HASH_ENTRY, + 0, + 1129, + INVALID_HASH_ENTRY, + 1070, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2074, + 1875, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1876, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1247, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 11, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -497, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1765, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 403, + INVALID_HASH_ENTRY, + 1027, + 171, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1170, + 2273, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1308, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1688, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2566, + INVALID_HASH_ENTRY, + 1178, + INVALID_HASH_ENTRY, + 330, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2683, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2540, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1639, + 38, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 199, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 408, + 832, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 145, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 376, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1747, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1974, + 1064, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2115, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 494, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -471, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + 1668, + 1993, + 1631, + INVALID_HASH_ENTRY, + 1663, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1655, + 1619, + INVALID_HASH_ENTRY, + 104, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 759, + 232, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 738, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2072, + 2275, + 1358, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2077, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1157, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1917, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2169, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 156, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1124, + INVALID_HASH_ENTRY, + 543, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 686, + INVALID_HASH_ENTRY, + 1356, + 658, + -671, + 2266, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2454, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 807, + 369, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2589, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2329, + 1778, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 154, + 682, + 385, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2481, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2293, + 220, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 400, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2126, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2525, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 263, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 478, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1989, + 167, + 1721, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1924, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 853, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 961, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -369, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 81, + 327, + 490, + 2191, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 804, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2070, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2493, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -754, + INVALID_HASH_ENTRY, + 1093, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 511, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1166, + INVALID_HASH_ENTRY, + -1464, + 213, + 908, + 2217, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1046, + 2042, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1732, + INVALID_HASH_ENTRY, + 1649, + 1949, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 228, + INVALID_HASH_ENTRY, + 254, + INVALID_HASH_ENTRY, + 1519, + INVALID_HASH_ENTRY, + 306, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -371, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1173, + 0, + 1307, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2212, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1243, + INVALID_HASH_ENTRY, + 1285, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2580, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1475, + 1568, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1375, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1045, + 393, + 148, + INVALID_HASH_ENTRY, + 3871, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 556, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1714, + INVALID_HASH_ENTRY, + 1825, + 152, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 601, + INVALID_HASH_ENTRY, + 576, + -12, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1859, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 851, + INVALID_HASH_ENTRY, + -371, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 909, + INVALID_HASH_ENTRY, + 734, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 435, + INVALID_HASH_ENTRY, + 1378, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2588, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1368, + INVALID_HASH_ENTRY, + 690, + 1122, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 841, + 1564, + 268, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 41, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 332, + INVALID_HASH_ENTRY, + -866, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1326, + INVALID_HASH_ENTRY, + 276, + INVALID_HASH_ENTRY, + 1410, + 1021, + INVALID_HASH_ENTRY, + 2472, + INVALID_HASH_ENTRY, + 1980, + 2382, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1928, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 770, + 496, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 1003, + 2394, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + 2098, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1910, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2577, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1894, + 0, + -40, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1445, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2228, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1202, + INVALID_HASH_ENTRY, + 1242, + -689, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 550, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -448, + 2470, + 1088, + 819, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 671, + INVALID_HASH_ENTRY, + -1440, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1154, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2386, + 2469, + 40, + INVALID_HASH_ENTRY, + 1988, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2316, + 1953, + INVALID_HASH_ENTRY, + 208, + 2150, + 954, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 899, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2290, + 1010, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1007, + -252, + 509, + 1102, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2399, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1782, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2584, + INVALID_HASH_ENTRY, + 1693, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2185, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1065, + 1725, + 424, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1093, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2002, + 2430, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 59, + 423, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2023, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1654, + INVALID_HASH_ENTRY, + 133, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1710, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 196, + 1357, + 507, + INVALID_HASH_ENTRY, + 2510, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2080, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2547, + 712, + 2094, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1300, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + -1047, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2348, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 153, + 270, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 534, + 440, + INVALID_HASH_ENTRY, + 2052, + 76, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 102, + 2102, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2069, + INVALID_HASH_ENTRY, + 1903, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1327, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1807, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 790, + 1043, + INVALID_HASH_ENTRY, + 603, + 2021, + INVALID_HASH_ENTRY, + 2516, + 1687, + 2412, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -187, + INVALID_HASH_ENTRY, + 1342, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1647, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2340, + 1552, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1651, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 225, + INVALID_HASH_ENTRY, + 425, + INVALID_HASH_ENTRY, + 248, + 1760, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2429, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2148, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 760, + INVALID_HASH_ENTRY, + 355, + 1393, + 1905, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 224, + -191, + INVALID_HASH_ENTRY, + 2303, + 2019, + 492, + 221, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 512, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2011, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1706, + 2378, + 1374, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 671, + INVALID_HASH_ENTRY, + -1651, + INVALID_HASH_ENTRY, + 1418, + INVALID_HASH_ENTRY, + 1011, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 911, + 1887, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1041, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1240, + 1962, + 885, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2502, + INVALID_HASH_ENTRY, + 2447, + 1978, + 1305, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 139, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1480, + 947, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1035, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 47, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2448, + INVALID_HASH_ENTRY, + 2442, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 977, + -678, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1302, + INVALID_HASH_ENTRY, + 1678, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1320, + 578, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 683, + 1943, + 1864, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 437, + INVALID_HASH_ENTRY, + 1001, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 456, + INVALID_HASH_ENTRY, + -1935, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 974, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 891, + INVALID_HASH_ENTRY, + 2185, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1624, + INVALID_HASH_ENTRY, + 1956, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 540, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -617, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2560, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1399, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 450, + 44, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1083, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 106, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1074, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -387, + INVALID_HASH_ENTRY, + 1264, + 2119, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -378, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2106, + 2295, + INVALID_HASH_ENTRY, + 1963, + INVALID_HASH_ENTRY, + 2479, + INVALID_HASH_ENTRY, + -42, + 1351, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2453, + 1090, + INVALID_HASH_ENTRY, + 1420, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 344, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 672, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2554, + 1744, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 736, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -223, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1148, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 210, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 615, + 1973, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 15, + 609, + 61, + 120, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1160, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1117, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1360, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 143, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 593, + 1717, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2081, + 1113, + 195, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1557, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 447, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1620, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1208, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 136, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -91, + 1579, + 1746, + 1251, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1950, + 2143, + 0, + 264, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2068, + 1125, + INVALID_HASH_ENTRY, + -263, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 500, + -95, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2550, + INVALID_HASH_ENTRY, + 2440, + 1451, + 2384, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1393, + 1883, + INVALID_HASH_ENTRY, + 345, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1167, + INVALID_HASH_ENTRY, + 527, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2086, + 1419, + 2058, + 965, + 695, + INVALID_HASH_ENTRY, + 1558, + 834, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 326, + 2059, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 407, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1262, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 931, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 345, + INVALID_HASH_ENTRY, + 1241, + 560, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 347, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 95, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 547, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1399, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 993, + INVALID_HASH_ENTRY, + 1482, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 983, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1926, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2488, + -959, + 348, + INVALID_HASH_ENTRY, + 1731, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 716, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 328, + 1301, + 16, + 1679, + INVALID_HASH_ENTRY, + 551, + 2017, + INVALID_HASH_ENTRY, + 1372, + -716, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1046, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 604, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2443, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 998, + 351, + 2265, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 552, + INVALID_HASH_ENTRY, + 1460, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1304, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 636, + INVALID_HASH_ENTRY, + 1667, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1194, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 468, + 285, + INVALID_HASH_ENTRY, + 616, + INVALID_HASH_ENTRY, + 2099, + INVALID_HASH_ENTRY, + 1200, + INVALID_HASH_ENTRY, + 0, + 140, + 1215, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 503, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + -1567, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 148, + INVALID_HASH_ENTRY, + 721, + 784, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1983, + 1103, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1650, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 598, + INVALID_HASH_ENTRY, + 269, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1906, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2219, + INVALID_HASH_ENTRY, + 212, + 210, + 1310, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1426, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1187, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2073, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 267, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2592, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1915, + 70, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1921, + INVALID_HASH_ENTRY, + 434, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 544, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1675, + 2559, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2220, + -555, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2455, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1691, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2116, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1618, + 1362, + 903, + INVALID_HASH_ENTRY, + 2003, + INVALID_HASH_ENTRY, + 271, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1252, + 117, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1635, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1916, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 258, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 108, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1551, + 1020, + 1896, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1628, + INVALID_HASH_ENTRY, + 1204, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1945, + INVALID_HASH_ENTRY, + 2195, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 591, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1852, + 190, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 479, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 78, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 48, + 378, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 85, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1453, + 970, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 39, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2226, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2189, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1881, + INVALID_HASH_ENTRY, + 1397, + INVALID_HASH_ENTRY, + 182, + -171, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2464, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 169, + INVALID_HASH_ENTRY, + 1303, + 1585, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1181, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2125, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2147, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 31, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 1893, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + }; + static const struct tokendata tokendata[2594] = { + { "db", 2, TOKEN_INSN, 0, 0, I_DB }, + { "dw", 2, TOKEN_INSN, 0, 0, I_DW }, + { "dd", 2, TOKEN_INSN, 0, 0, I_DD }, + { "dq", 2, TOKEN_INSN, 0, 0, I_DQ }, + { "dt", 2, TOKEN_INSN, 0, 0, I_DT }, + { "do", 2, TOKEN_INSN, 0, 0, I_DO }, + { "dy", 2, TOKEN_INSN, 0, 0, I_DY }, + { "dz", 2, TOKEN_INSN, 0, 0, I_DZ }, + { "resb", 4, TOKEN_INSN, 0, 0, I_RESB }, + { "resw", 4, TOKEN_INSN, 0, 0, I_RESW }, + { "resd", 4, TOKEN_INSN, 0, 0, I_RESD }, + { "resq", 4, TOKEN_INSN, 0, 0, I_RESQ }, + { "rest", 4, TOKEN_INSN, 0, 0, I_REST }, + { "reso", 4, TOKEN_INSN, 0, 0, I_RESO }, + { "resy", 4, TOKEN_INSN, 0, 0, I_RESY }, + { "resz", 4, TOKEN_INSN, 0, 0, I_RESZ }, + { "incbin", 6, TOKEN_INSN, 0, 0, I_INCBIN }, + { "aaa", 3, TOKEN_INSN, 0, 0, I_AAA }, + { "aad", 3, TOKEN_INSN, 0, 0, I_AAD }, + { "aam", 3, TOKEN_INSN, 0, 0, I_AAM }, + { "aas", 3, TOKEN_INSN, 0, 0, I_AAS }, + { "adc", 3, TOKEN_INSN, 0, 0, I_ADC }, + { "add", 3, TOKEN_INSN, 0, 0, I_ADD }, + { "and", 3, TOKEN_INSN, 0, 0, I_AND }, + { "arpl", 4, TOKEN_INSN, 0, 0, I_ARPL }, + { "bb0_reset", 9, TOKEN_INSN, 0, 0, I_BB0_RESET }, + { "bb1_reset", 9, TOKEN_INSN, 0, 0, I_BB1_RESET }, + { "bound", 5, TOKEN_INSN, 0, 0, I_BOUND }, + { "bsf", 3, TOKEN_INSN, 0, 0, I_BSF }, + { "bsr", 3, TOKEN_INSN, 0, 0, I_BSR }, + { "bswap", 5, TOKEN_INSN, 0, 0, I_BSWAP }, + { "bt", 2, TOKEN_INSN, 0, 0, I_BT }, + { "btc", 3, TOKEN_INSN, 0, 0, I_BTC }, + { "btr", 3, TOKEN_INSN, 0, 0, I_BTR }, + { "bts", 3, TOKEN_INSN, 0, 0, I_BTS }, + { "call", 4, TOKEN_INSN, 0, 0, I_CALL }, + { "cbw", 3, TOKEN_INSN, 0, 0, I_CBW }, + { "cdq", 3, TOKEN_INSN, 0, 0, I_CDQ }, + { "cdqe", 4, TOKEN_INSN, 0, 0, I_CDQE }, + { "clc", 3, TOKEN_INSN, 0, 0, I_CLC }, + { "cld", 3, TOKEN_INSN, 0, 0, I_CLD }, + { "cli", 3, TOKEN_INSN, 0, 0, I_CLI }, + { "clts", 4, TOKEN_INSN, 0, 0, I_CLTS }, + { "cmc", 3, TOKEN_INSN, 0, 0, I_CMC }, + { "cmp", 3, TOKEN_INSN, 0, 0, I_CMP }, + { "cmpsb", 5, TOKEN_INSN, 0, 0, I_CMPSB }, + { "cmpsd", 5, TOKEN_INSN, 0, 0, I_CMPSD }, + { "cmpsq", 5, TOKEN_INSN, 0, 0, I_CMPSQ }, + { "cmpsw", 5, TOKEN_INSN, 0, 0, I_CMPSW }, + { "cmpxchg", 7, TOKEN_INSN, 0, 0, I_CMPXCHG }, + { "cmpxchg486", 10, TOKEN_INSN, 0, 0, I_CMPXCHG486 }, + { "cmpxchg8b", 9, TOKEN_INSN, 0, 0, I_CMPXCHG8B }, + { "cmpxchg16b", 10, TOKEN_INSN, 0, 0, I_CMPXCHG16B }, + { "cpuid", 5, TOKEN_INSN, 0, 0, I_CPUID }, + { "cpu_read", 8, TOKEN_INSN, 0, 0, I_CPU_READ }, + { "cpu_write", 9, TOKEN_INSN, 0, 0, I_CPU_WRITE }, + { "cqo", 3, TOKEN_INSN, 0, 0, I_CQO }, + { "cwd", 3, TOKEN_INSN, 0, 0, I_CWD }, + { "cwde", 4, TOKEN_INSN, 0, 0, I_CWDE }, + { "daa", 3, TOKEN_INSN, 0, 0, I_DAA }, + { "das", 3, TOKEN_INSN, 0, 0, I_DAS }, + { "dec", 3, TOKEN_INSN, 0, 0, I_DEC }, + { "div", 3, TOKEN_INSN, 0, 0, I_DIV }, + { "dmint", 5, TOKEN_INSN, 0, 0, I_DMINT }, + { "emms", 4, TOKEN_INSN, 0, 0, I_EMMS }, + { "enter", 5, TOKEN_INSN, 0, 0, I_ENTER }, + { "equ", 3, TOKEN_INSN, 0, 0, I_EQU }, + { "f2xm1", 5, TOKEN_INSN, 0, 0, I_F2XM1 }, + { "fabs", 4, TOKEN_INSN, 0, 0, I_FABS }, + { "fadd", 4, TOKEN_INSN, 0, 0, I_FADD }, + { "faddp", 5, TOKEN_INSN, 0, 0, I_FADDP }, + { "fbld", 4, TOKEN_INSN, 0, 0, I_FBLD }, + { "fbstp", 5, TOKEN_INSN, 0, 0, I_FBSTP }, + { "fchs", 4, TOKEN_INSN, 0, 0, I_FCHS }, + { "fclex", 5, TOKEN_INSN, 0, 0, I_FCLEX }, + { "fcmovb", 6, TOKEN_INSN, 0, 0, I_FCMOVB }, + { "fcmovbe", 7, TOKEN_INSN, 0, 0, I_FCMOVBE }, + { "fcmove", 6, TOKEN_INSN, 0, 0, I_FCMOVE }, + { "fcmovnb", 7, TOKEN_INSN, 0, 0, I_FCMOVNB }, + { "fcmovnbe", 8, TOKEN_INSN, 0, 0, I_FCMOVNBE }, + { "fcmovne", 7, TOKEN_INSN, 0, 0, I_FCMOVNE }, + { "fcmovnu", 7, TOKEN_INSN, 0, 0, I_FCMOVNU }, + { "fcmovu", 6, TOKEN_INSN, 0, 0, I_FCMOVU }, + { "fcom", 4, TOKEN_INSN, 0, 0, I_FCOM }, + { "fcomi", 5, TOKEN_INSN, 0, 0, I_FCOMI }, + { "fcomip", 6, TOKEN_INSN, 0, 0, I_FCOMIP }, + { "fcomp", 5, TOKEN_INSN, 0, 0, I_FCOMP }, + { "fcompp", 6, TOKEN_INSN, 0, 0, I_FCOMPP }, + { "fcos", 4, TOKEN_INSN, 0, 0, I_FCOS }, + { "fdecstp", 7, TOKEN_INSN, 0, 0, I_FDECSTP }, + { "fdisi", 5, TOKEN_INSN, 0, 0, I_FDISI }, + { "fdiv", 4, TOKEN_INSN, 0, 0, I_FDIV }, + { "fdivp", 5, TOKEN_INSN, 0, 0, I_FDIVP }, + { "fdivr", 5, TOKEN_INSN, 0, 0, I_FDIVR }, + { "fdivrp", 6, TOKEN_INSN, 0, 0, I_FDIVRP }, + { "femms", 5, TOKEN_INSN, 0, 0, I_FEMMS }, + { "feni", 4, TOKEN_INSN, 0, 0, I_FENI }, + { "ffree", 5, TOKEN_INSN, 0, 0, I_FFREE }, + { "ffreep", 6, TOKEN_INSN, 0, 0, I_FFREEP }, + { "fiadd", 5, TOKEN_INSN, 0, 0, I_FIADD }, + { "ficom", 5, TOKEN_INSN, 0, 0, I_FICOM }, + { "ficomp", 6, TOKEN_INSN, 0, 0, I_FICOMP }, + { "fidiv", 5, TOKEN_INSN, 0, 0, I_FIDIV }, + { "fidivr", 6, TOKEN_INSN, 0, 0, I_FIDIVR }, + { "fild", 4, TOKEN_INSN, 0, 0, I_FILD }, + { "fimul", 5, TOKEN_INSN, 0, 0, I_FIMUL }, + { "fincstp", 7, TOKEN_INSN, 0, 0, I_FINCSTP }, + { "finit", 5, TOKEN_INSN, 0, 0, I_FINIT }, + { "fist", 4, TOKEN_INSN, 0, 0, I_FIST }, + { "fistp", 5, TOKEN_INSN, 0, 0, I_FISTP }, + { "fisttp", 6, TOKEN_INSN, 0, 0, I_FISTTP }, + { "fisub", 5, TOKEN_INSN, 0, 0, I_FISUB }, + { "fisubr", 6, TOKEN_INSN, 0, 0, I_FISUBR }, + { "fld", 3, TOKEN_INSN, 0, 0, I_FLD }, + { "fld1", 4, TOKEN_INSN, 0, 0, I_FLD1 }, + { "fldcw", 5, TOKEN_INSN, 0, 0, I_FLDCW }, + { "fldenv", 6, TOKEN_INSN, 0, 0, I_FLDENV }, + { "fldl2e", 6, TOKEN_INSN, 0, 0, I_FLDL2E }, + { "fldl2t", 6, TOKEN_INSN, 0, 0, I_FLDL2T }, + { "fldlg2", 6, TOKEN_INSN, 0, 0, I_FLDLG2 }, + { "fldln2", 6, TOKEN_INSN, 0, 0, I_FLDLN2 }, + { "fldpi", 5, TOKEN_INSN, 0, 0, I_FLDPI }, + { "fldz", 4, TOKEN_INSN, 0, 0, I_FLDZ }, + { "fmul", 4, TOKEN_INSN, 0, 0, I_FMUL }, + { "fmulp", 5, TOKEN_INSN, 0, 0, I_FMULP }, + { "fnclex", 6, TOKEN_INSN, 0, 0, I_FNCLEX }, + { "fndisi", 6, TOKEN_INSN, 0, 0, I_FNDISI }, + { "fneni", 5, TOKEN_INSN, 0, 0, I_FNENI }, + { "fninit", 6, TOKEN_INSN, 0, 0, I_FNINIT }, + { "fnop", 4, TOKEN_INSN, 0, 0, I_FNOP }, + { "fnsave", 6, TOKEN_INSN, 0, 0, I_FNSAVE }, + { "fnstcw", 6, TOKEN_INSN, 0, 0, I_FNSTCW }, + { "fnstenv", 7, TOKEN_INSN, 0, 0, I_FNSTENV }, + { "fnstsw", 6, TOKEN_INSN, 0, 0, I_FNSTSW }, + { "fpatan", 6, TOKEN_INSN, 0, 0, I_FPATAN }, + { "fprem", 5, TOKEN_INSN, 0, 0, I_FPREM }, + { "fprem1", 6, TOKEN_INSN, 0, 0, I_FPREM1 }, + { "fptan", 5, TOKEN_INSN, 0, 0, I_FPTAN }, + { "frndint", 7, TOKEN_INSN, 0, 0, I_FRNDINT }, + { "frstor", 6, TOKEN_INSN, 0, 0, I_FRSTOR }, + { "fsave", 5, TOKEN_INSN, 0, 0, I_FSAVE }, + { "fscale", 6, TOKEN_INSN, 0, 0, I_FSCALE }, + { "fsetpm", 6, TOKEN_INSN, 0, 0, I_FSETPM }, + { "fsin", 4, TOKEN_INSN, 0, 0, I_FSIN }, + { "fsincos", 7, TOKEN_INSN, 0, 0, I_FSINCOS }, + { "fsqrt", 5, TOKEN_INSN, 0, 0, I_FSQRT }, + { "fst", 3, TOKEN_INSN, 0, 0, I_FST }, + { "fstcw", 5, TOKEN_INSN, 0, 0, I_FSTCW }, + { "fstenv", 6, TOKEN_INSN, 0, 0, I_FSTENV }, + { "fstp", 4, TOKEN_INSN, 0, 0, I_FSTP }, + { "fstsw", 5, TOKEN_INSN, 0, 0, I_FSTSW }, + { "fsub", 4, TOKEN_INSN, 0, 0, I_FSUB }, + { "fsubp", 5, TOKEN_INSN, 0, 0, I_FSUBP }, + { "fsubr", 5, TOKEN_INSN, 0, 0, I_FSUBR }, + { "fsubrp", 6, TOKEN_INSN, 0, 0, I_FSUBRP }, + { "ftst", 4, TOKEN_INSN, 0, 0, I_FTST }, + { "fucom", 5, TOKEN_INSN, 0, 0, I_FUCOM }, + { "fucomi", 6, TOKEN_INSN, 0, 0, I_FUCOMI }, + { "fucomip", 7, TOKEN_INSN, 0, 0, I_FUCOMIP }, + { "fucomp", 6, TOKEN_INSN, 0, 0, I_FUCOMP }, + { "fucompp", 7, TOKEN_INSN, 0, 0, I_FUCOMPP }, + { "fxam", 4, TOKEN_INSN, 0, 0, I_FXAM }, + { "fxch", 4, TOKEN_INSN, 0, 0, I_FXCH }, + { "fxtract", 7, TOKEN_INSN, 0, 0, I_FXTRACT }, + { "fyl2x", 5, TOKEN_INSN, 0, 0, I_FYL2X }, + { "fyl2xp1", 7, TOKEN_INSN, 0, 0, I_FYL2XP1 }, + { "hlt", 3, TOKEN_INSN, 0, 0, I_HLT }, + { "ibts", 4, TOKEN_INSN, 0, 0, I_IBTS }, + { "icebp", 5, TOKEN_INSN, 0, 0, I_ICEBP }, + { "idiv", 4, TOKEN_INSN, 0, 0, I_IDIV }, + { "imul", 4, TOKEN_INSN, 0, 0, I_IMUL }, + { "in", 2, TOKEN_INSN, 0, 0, I_IN }, + { "inc", 3, TOKEN_INSN, 0, 0, I_INC }, + { "insb", 4, TOKEN_INSN, 0, 0, I_INSB }, + { "insd", 4, TOKEN_INSN, 0, 0, I_INSD }, + { "insw", 4, TOKEN_INSN, 0, 0, I_INSW }, + { "int", 3, TOKEN_INSN, 0, 0, I_INT }, + { "int01", 5, TOKEN_INSN, 0, 0, I_INT01 }, + { "int1", 4, TOKEN_INSN, 0, 0, I_INT1 }, + { "int03", 5, TOKEN_INSN, 0, 0, I_INT03 }, + { "int3", 4, TOKEN_INSN, 0, 0, I_INT3 }, + { "into", 4, TOKEN_INSN, 0, 0, I_INTO }, + { "invd", 4, TOKEN_INSN, 0, 0, I_INVD }, + { "invpcid", 7, TOKEN_INSN, 0, 0, I_INVPCID }, + { "invlpg", 6, TOKEN_INSN, 0, 0, I_INVLPG }, + { "invlpga", 7, TOKEN_INSN, 0, 0, I_INVLPGA }, + { "iret", 4, TOKEN_INSN, 0, 0, I_IRET }, + { "iretd", 5, TOKEN_INSN, 0, 0, I_IRETD }, + { "iretq", 5, TOKEN_INSN, 0, 0, I_IRETQ }, + { "iretw", 5, TOKEN_INSN, 0, 0, I_IRETW }, + { "jcxz", 4, TOKEN_INSN, 0, 0, I_JCXZ }, + { "jecxz", 5, TOKEN_INSN, 0, 0, I_JECXZ }, + { "jrcxz", 5, TOKEN_INSN, 0, 0, I_JRCXZ }, + { "jmp", 3, TOKEN_INSN, 0, 0, I_JMP }, + { "jmpe", 4, TOKEN_INSN, 0, 0, I_JMPE }, + { "lahf", 4, TOKEN_INSN, 0, 0, I_LAHF }, + { "lar", 3, TOKEN_INSN, 0, 0, I_LAR }, + { "lds", 3, TOKEN_INSN, 0, 0, I_LDS }, + { "lea", 3, TOKEN_INSN, 0, 0, I_LEA }, + { "leave", 5, TOKEN_INSN, 0, 0, I_LEAVE }, + { "les", 3, TOKEN_INSN, 0, 0, I_LES }, + { "lfence", 6, TOKEN_INSN, 0, 0, I_LFENCE }, + { "lfs", 3, TOKEN_INSN, 0, 0, I_LFS }, + { "lgdt", 4, TOKEN_INSN, 0, 0, I_LGDT }, + { "lgs", 3, TOKEN_INSN, 0, 0, I_LGS }, + { "lidt", 4, TOKEN_INSN, 0, 0, I_LIDT }, + { "lldt", 4, TOKEN_INSN, 0, 0, I_LLDT }, + { "lmsw", 4, TOKEN_INSN, 0, 0, I_LMSW }, + { "loadall", 7, TOKEN_INSN, 0, 0, I_LOADALL }, + { "loadall286", 10, TOKEN_INSN, 0, 0, I_LOADALL286 }, + { "lodsb", 5, TOKEN_INSN, 0, 0, I_LODSB }, + { "lodsd", 5, TOKEN_INSN, 0, 0, I_LODSD }, + { "lodsq", 5, TOKEN_INSN, 0, 0, I_LODSQ }, + { "lodsw", 5, TOKEN_INSN, 0, 0, I_LODSW }, + { "loop", 4, TOKEN_INSN, 0, 0, I_LOOP }, + { "loope", 5, TOKEN_INSN, 0, 0, I_LOOPE }, + { "loopne", 6, TOKEN_INSN, 0, 0, I_LOOPNE }, + { "loopnz", 6, TOKEN_INSN, 0, 0, I_LOOPNZ }, + { "loopz", 5, TOKEN_INSN, 0, 0, I_LOOPZ }, + { "lsl", 3, TOKEN_INSN, 0, 0, I_LSL }, + { "lss", 3, TOKEN_INSN, 0, 0, I_LSS }, + { "ltr", 3, TOKEN_INSN, 0, 0, I_LTR }, + { "mfence", 6, TOKEN_INSN, 0, 0, I_MFENCE }, + { "monitor", 7, TOKEN_INSN, 0, 0, I_MONITOR }, + { "monitorx", 8, TOKEN_INSN, 0, 0, I_MONITORX }, + { "mov", 3, TOKEN_INSN, 0, 0, I_MOV }, + { "movd", 4, TOKEN_INSN, 0, 0, I_MOVD }, + { "movq", 4, TOKEN_INSN, 0, 0, I_MOVQ }, + { "movsb", 5, TOKEN_INSN, 0, 0, I_MOVSB }, + { "movsd", 5, TOKEN_INSN, 0, 0, I_MOVSD }, + { "movsq", 5, TOKEN_INSN, 0, 0, I_MOVSQ }, + { "movsw", 5, TOKEN_INSN, 0, 0, I_MOVSW }, + { "movsx", 5, TOKEN_INSN, 0, 0, I_MOVSX }, + { "movsxd", 6, TOKEN_INSN, 0, 0, I_MOVSXD }, + { "movzx", 5, TOKEN_INSN, 0, 0, I_MOVZX }, + { "mul", 3, TOKEN_INSN, 0, 0, I_MUL }, + { "mwait", 5, TOKEN_INSN, 0, 0, I_MWAIT }, + { "mwaitx", 6, TOKEN_INSN, 0, 0, I_MWAITX }, + { "neg", 3, TOKEN_INSN, 0, 0, I_NEG }, + { "nop", 3, TOKEN_INSN, 0, 0, I_NOP }, + { "not", 3, TOKEN_INSN, 0, 0, I_NOT }, + { "or", 2, TOKEN_INSN, 0, 0, I_OR }, + { "out", 3, TOKEN_INSN, 0, 0, I_OUT }, + { "outsb", 5, TOKEN_INSN, 0, 0, I_OUTSB }, + { "outsd", 5, TOKEN_INSN, 0, 0, I_OUTSD }, + { "outsw", 5, TOKEN_INSN, 0, 0, I_OUTSW }, + { "packssdw", 8, TOKEN_INSN, 0, 0, I_PACKSSDW }, + { "packsswb", 8, TOKEN_INSN, 0, 0, I_PACKSSWB }, + { "packuswb", 8, TOKEN_INSN, 0, 0, I_PACKUSWB }, + { "paddb", 5, TOKEN_INSN, 0, 0, I_PADDB }, + { "paddd", 5, TOKEN_INSN, 0, 0, I_PADDD }, + { "paddsb", 6, TOKEN_INSN, 0, 0, I_PADDSB }, + { "paddsiw", 7, TOKEN_INSN, 0, 0, I_PADDSIW }, + { "paddsw", 6, TOKEN_INSN, 0, 0, I_PADDSW }, + { "paddusb", 7, TOKEN_INSN, 0, 0, I_PADDUSB }, + { "paddusw", 7, TOKEN_INSN, 0, 0, I_PADDUSW }, + { "paddw", 5, TOKEN_INSN, 0, 0, I_PADDW }, + { "pand", 4, TOKEN_INSN, 0, 0, I_PAND }, + { "pandn", 5, TOKEN_INSN, 0, 0, I_PANDN }, + { "pause", 5, TOKEN_INSN, 0, 0, I_PAUSE }, + { "paveb", 5, TOKEN_INSN, 0, 0, I_PAVEB }, + { "pavgusb", 7, TOKEN_INSN, 0, 0, I_PAVGUSB }, + { "pcmpeqb", 7, TOKEN_INSN, 0, 0, I_PCMPEQB }, + { "pcmpeqd", 7, TOKEN_INSN, 0, 0, I_PCMPEQD }, + { "pcmpeqw", 7, TOKEN_INSN, 0, 0, I_PCMPEQW }, + { "pcmpgtb", 7, TOKEN_INSN, 0, 0, I_PCMPGTB }, + { "pcmpgtd", 7, TOKEN_INSN, 0, 0, I_PCMPGTD }, + { "pcmpgtw", 7, TOKEN_INSN, 0, 0, I_PCMPGTW }, + { "pdistib", 7, TOKEN_INSN, 0, 0, I_PDISTIB }, + { "pf2id", 5, TOKEN_INSN, 0, 0, I_PF2ID }, + { "pfacc", 5, TOKEN_INSN, 0, 0, I_PFACC }, + { "pfadd", 5, TOKEN_INSN, 0, 0, I_PFADD }, + { "pfcmpeq", 7, TOKEN_INSN, 0, 0, I_PFCMPEQ }, + { "pfcmpge", 7, TOKEN_INSN, 0, 0, I_PFCMPGE }, + { "pfcmpgt", 7, TOKEN_INSN, 0, 0, I_PFCMPGT }, + { "pfmax", 5, TOKEN_INSN, 0, 0, I_PFMAX }, + { "pfmin", 5, TOKEN_INSN, 0, 0, I_PFMIN }, + { "pfmul", 5, TOKEN_INSN, 0, 0, I_PFMUL }, + { "pfrcp", 5, TOKEN_INSN, 0, 0, I_PFRCP }, + { "pfrcpit1", 8, TOKEN_INSN, 0, 0, I_PFRCPIT1 }, + { "pfrcpit2", 8, TOKEN_INSN, 0, 0, I_PFRCPIT2 }, + { "pfrsqit1", 8, TOKEN_INSN, 0, 0, I_PFRSQIT1 }, + { "pfrsqrt", 7, TOKEN_INSN, 0, 0, I_PFRSQRT }, + { "pfsub", 5, TOKEN_INSN, 0, 0, I_PFSUB }, + { "pfsubr", 6, TOKEN_INSN, 0, 0, I_PFSUBR }, + { "pi2fd", 5, TOKEN_INSN, 0, 0, I_PI2FD }, + { "pmachriw", 8, TOKEN_INSN, 0, 0, I_PMACHRIW }, + { "pmaddwd", 7, TOKEN_INSN, 0, 0, I_PMADDWD }, + { "pmagw", 5, TOKEN_INSN, 0, 0, I_PMAGW }, + { "pmulhriw", 8, TOKEN_INSN, 0, 0, I_PMULHRIW }, + { "pmulhrwa", 8, TOKEN_INSN, 0, 0, I_PMULHRWA }, + { "pmulhrwc", 8, TOKEN_INSN, 0, 0, I_PMULHRWC }, + { "pmulhw", 6, TOKEN_INSN, 0, 0, I_PMULHW }, + { "pmullw", 6, TOKEN_INSN, 0, 0, I_PMULLW }, + { "pmvgezb", 7, TOKEN_INSN, 0, 0, I_PMVGEZB }, + { "pmvlzb", 6, TOKEN_INSN, 0, 0, I_PMVLZB }, + { "pmvnzb", 6, TOKEN_INSN, 0, 0, I_PMVNZB }, + { "pmvzb", 5, TOKEN_INSN, 0, 0, I_PMVZB }, + { "pop", 3, TOKEN_INSN, 0, 0, I_POP }, + { "popa", 4, TOKEN_INSN, 0, 0, I_POPA }, + { "popad", 5, TOKEN_INSN, 0, 0, I_POPAD }, + { "popaw", 5, TOKEN_INSN, 0, 0, I_POPAW }, + { "popf", 4, TOKEN_INSN, 0, 0, I_POPF }, + { "popfd", 5, TOKEN_INSN, 0, 0, I_POPFD }, + { "popfq", 5, TOKEN_INSN, 0, 0, I_POPFQ }, + { "popfw", 5, TOKEN_INSN, 0, 0, I_POPFW }, + { "por", 3, TOKEN_INSN, 0, 0, I_POR }, + { "prefetch", 8, TOKEN_INSN, 0, 0, I_PREFETCH }, + { "prefetchw", 9, TOKEN_INSN, 0, 0, I_PREFETCHW }, + { "pslld", 5, TOKEN_INSN, 0, 0, I_PSLLD }, + { "psllq", 5, TOKEN_INSN, 0, 0, I_PSLLQ }, + { "psllw", 5, TOKEN_INSN, 0, 0, I_PSLLW }, + { "psrad", 5, TOKEN_INSN, 0, 0, I_PSRAD }, + { "psraw", 5, TOKEN_INSN, 0, 0, I_PSRAW }, + { "psrld", 5, TOKEN_INSN, 0, 0, I_PSRLD }, + { "psrlq", 5, TOKEN_INSN, 0, 0, I_PSRLQ }, + { "psrlw", 5, TOKEN_INSN, 0, 0, I_PSRLW }, + { "psubb", 5, TOKEN_INSN, 0, 0, I_PSUBB }, + { "psubd", 5, TOKEN_INSN, 0, 0, I_PSUBD }, + { "psubsb", 6, TOKEN_INSN, 0, 0, I_PSUBSB }, + { "psubsiw", 7, TOKEN_INSN, 0, 0, I_PSUBSIW }, + { "psubsw", 6, TOKEN_INSN, 0, 0, I_PSUBSW }, + { "psubusb", 7, TOKEN_INSN, 0, 0, I_PSUBUSB }, + { "psubusw", 7, TOKEN_INSN, 0, 0, I_PSUBUSW }, + { "psubw", 5, TOKEN_INSN, 0, 0, I_PSUBW }, + { "punpckhbw", 9, TOKEN_INSN, 0, 0, I_PUNPCKHBW }, + { "punpckhdq", 9, TOKEN_INSN, 0, 0, I_PUNPCKHDQ }, + { "punpckhwd", 9, TOKEN_INSN, 0, 0, I_PUNPCKHWD }, + { "punpcklbw", 9, TOKEN_INSN, 0, 0, I_PUNPCKLBW }, + { "punpckldq", 9, TOKEN_INSN, 0, 0, I_PUNPCKLDQ }, + { "punpcklwd", 9, TOKEN_INSN, 0, 0, I_PUNPCKLWD }, + { "push", 4, TOKEN_INSN, 0, 0, I_PUSH }, + { "pusha", 5, TOKEN_INSN, 0, 0, I_PUSHA }, + { "pushad", 6, TOKEN_INSN, 0, 0, I_PUSHAD }, + { "pushaw", 6, TOKEN_INSN, 0, 0, I_PUSHAW }, + { "pushf", 5, TOKEN_INSN, 0, 0, I_PUSHF }, + { "pushfd", 6, TOKEN_INSN, 0, 0, I_PUSHFD }, + { "pushfq", 6, TOKEN_INSN, 0, 0, I_PUSHFQ }, + { "pushfw", 6, TOKEN_INSN, 0, 0, I_PUSHFW }, + { "pxor", 4, TOKEN_INSN, 0, 0, I_PXOR }, + { "rcl", 3, TOKEN_INSN, 0, 0, I_RCL }, + { "rcr", 3, TOKEN_INSN, 0, 0, I_RCR }, + { "rdshr", 5, TOKEN_INSN, 0, 0, I_RDSHR }, + { "rdmsr", 5, TOKEN_INSN, 0, 0, I_RDMSR }, + { "rdpmc", 5, TOKEN_INSN, 0, 0, I_RDPMC }, + { "rdtsc", 5, TOKEN_INSN, 0, 0, I_RDTSC }, + { "rdtscp", 6, TOKEN_INSN, 0, 0, I_RDTSCP }, + { "ret", 3, TOKEN_INSN, 0, 0, I_RET }, + { "retf", 4, TOKEN_INSN, 0, 0, I_RETF }, + { "retn", 4, TOKEN_INSN, 0, 0, I_RETN }, + { "retw", 4, TOKEN_INSN, 0, 0, I_RETW }, + { "retfw", 5, TOKEN_INSN, 0, 0, I_RETFW }, + { "retnw", 5, TOKEN_INSN, 0, 0, I_RETNW }, + { "retd", 4, TOKEN_INSN, 0, 0, I_RETD }, + { "retfd", 5, TOKEN_INSN, 0, 0, I_RETFD }, + { "retnd", 5, TOKEN_INSN, 0, 0, I_RETND }, + { "retq", 4, TOKEN_INSN, 0, 0, I_RETQ }, + { "retfq", 5, TOKEN_INSN, 0, 0, I_RETFQ }, + { "retnq", 5, TOKEN_INSN, 0, 0, I_RETNQ }, + { "rol", 3, TOKEN_INSN, 0, 0, I_ROL }, + { "ror", 3, TOKEN_INSN, 0, 0, I_ROR }, + { "rdm", 3, TOKEN_INSN, 0, 0, I_RDM }, + { "rsdc", 4, TOKEN_INSN, 0, 0, I_RSDC }, + { "rsldt", 5, TOKEN_INSN, 0, 0, I_RSLDT }, + { "rsm", 3, TOKEN_INSN, 0, 0, I_RSM }, + { "rsts", 4, TOKEN_INSN, 0, 0, I_RSTS }, + { "sahf", 4, TOKEN_INSN, 0, 0, I_SAHF }, + { "sal", 3, TOKEN_INSN, 0, 0, I_SAL }, + { "salc", 4, TOKEN_INSN, 0, 0, I_SALC }, + { "sar", 3, TOKEN_INSN, 0, 0, I_SAR }, + { "sbb", 3, TOKEN_INSN, 0, 0, I_SBB }, + { "scasb", 5, TOKEN_INSN, 0, 0, I_SCASB }, + { "scasd", 5, TOKEN_INSN, 0, 0, I_SCASD }, + { "scasq", 5, TOKEN_INSN, 0, 0, I_SCASQ }, + { "scasw", 5, TOKEN_INSN, 0, 0, I_SCASW }, + { "sfence", 6, TOKEN_INSN, 0, 0, I_SFENCE }, + { "sgdt", 4, TOKEN_INSN, 0, 0, I_SGDT }, + { "shl", 3, TOKEN_INSN, 0, 0, I_SHL }, + { "shld", 4, TOKEN_INSN, 0, 0, I_SHLD }, + { "shr", 3, TOKEN_INSN, 0, 0, I_SHR }, + { "shrd", 4, TOKEN_INSN, 0, 0, I_SHRD }, + { "sidt", 4, TOKEN_INSN, 0, 0, I_SIDT }, + { "sldt", 4, TOKEN_INSN, 0, 0, I_SLDT }, + { "skinit", 6, TOKEN_INSN, 0, 0, I_SKINIT }, + { "smi", 3, TOKEN_INSN, 0, 0, I_SMI }, + { "smint", 5, TOKEN_INSN, 0, 0, I_SMINT }, + { "smintold", 8, TOKEN_INSN, 0, 0, I_SMINTOLD }, + { "smsw", 4, TOKEN_INSN, 0, 0, I_SMSW }, + { "stc", 3, TOKEN_INSN, 0, 0, I_STC }, + { "std", 3, TOKEN_INSN, 0, 0, I_STD }, + { "sti", 3, TOKEN_INSN, 0, 0, I_STI }, + { "stosb", 5, TOKEN_INSN, 0, 0, I_STOSB }, + { "stosd", 5, TOKEN_INSN, 0, 0, I_STOSD }, + { "stosq", 5, TOKEN_INSN, 0, 0, I_STOSQ }, + { "stosw", 5, TOKEN_INSN, 0, 0, I_STOSW }, + { "str", 3, TOKEN_INSN, 0, 0, I_STR }, + { "sub", 3, TOKEN_INSN, 0, 0, I_SUB }, + { "svdc", 4, TOKEN_INSN, 0, 0, I_SVDC }, + { "svldt", 5, TOKEN_INSN, 0, 0, I_SVLDT }, + { "svts", 4, TOKEN_INSN, 0, 0, I_SVTS }, + { "swapgs", 6, TOKEN_INSN, 0, 0, I_SWAPGS }, + { "syscall", 7, TOKEN_INSN, 0, 0, I_SYSCALL }, + { "sysenter", 8, TOKEN_INSN, 0, 0, I_SYSENTER }, + { "sysexit", 7, TOKEN_INSN, 0, 0, I_SYSEXIT }, + { "sysret", 6, TOKEN_INSN, 0, 0, I_SYSRET }, + { "test", 4, TOKEN_INSN, 0, 0, I_TEST }, + { "ud0", 3, TOKEN_INSN, 0, 0, I_UD0 }, + { "ud1", 3, TOKEN_INSN, 0, 0, I_UD1 }, + { "ud2b", 4, TOKEN_INSN, 0, 0, I_UD2B }, + { "ud2", 3, TOKEN_INSN, 0, 0, I_UD2 }, + { "ud2a", 4, TOKEN_INSN, 0, 0, I_UD2A }, + { "umov", 4, TOKEN_INSN, 0, 0, I_UMOV }, + { "verr", 4, TOKEN_INSN, 0, 0, I_VERR }, + { "verw", 4, TOKEN_INSN, 0, 0, I_VERW }, + { "fwait", 5, TOKEN_INSN, 0, 0, I_FWAIT }, + { "wbinvd", 6, TOKEN_INSN, 0, 0, I_WBINVD }, + { "wrshr", 5, TOKEN_INSN, 0, 0, I_WRSHR }, + { "wrmsr", 5, TOKEN_INSN, 0, 0, I_WRMSR }, + { "xadd", 4, TOKEN_INSN, 0, 0, I_XADD }, + { "xbts", 4, TOKEN_INSN, 0, 0, I_XBTS }, + { "xchg", 4, TOKEN_INSN, 0, 0, I_XCHG }, + { "xlatb", 5, TOKEN_INSN, 0, 0, I_XLATB }, + { "xlat", 4, TOKEN_INSN, 0, 0, I_XLAT }, + { "xor", 3, TOKEN_INSN, 0, 0, I_XOR }, + { "cmova", 5, TOKEN_INSN, 0, 0, I_CMOVA }, + { "cmovae", 6, TOKEN_INSN, 0, 0, I_CMOVAE }, + { "cmovb", 5, TOKEN_INSN, 0, 0, I_CMOVB }, + { "cmovbe", 6, TOKEN_INSN, 0, 0, I_CMOVBE }, + { "cmovc", 5, TOKEN_INSN, 0, 0, I_CMOVC }, + { "cmove", 5, TOKEN_INSN, 0, 0, I_CMOVE }, + { "cmovg", 5, TOKEN_INSN, 0, 0, I_CMOVG }, + { "cmovge", 6, TOKEN_INSN, 0, 0, I_CMOVGE }, + { "cmovl", 5, TOKEN_INSN, 0, 0, I_CMOVL }, + { "cmovle", 6, TOKEN_INSN, 0, 0, I_CMOVLE }, + { "cmovna", 6, TOKEN_INSN, 0, 0, I_CMOVNA }, + { "cmovnae", 7, TOKEN_INSN, 0, 0, I_CMOVNAE }, + { "cmovnb", 6, TOKEN_INSN, 0, 0, I_CMOVNB }, + { "cmovnbe", 7, TOKEN_INSN, 0, 0, I_CMOVNBE }, + { "cmovnc", 6, TOKEN_INSN, 0, 0, I_CMOVNC }, + { "cmovne", 6, TOKEN_INSN, 0, 0, I_CMOVNE }, + { "cmovng", 6, TOKEN_INSN, 0, 0, I_CMOVNG }, + { "cmovnge", 7, TOKEN_INSN, 0, 0, I_CMOVNGE }, + { "cmovnl", 6, TOKEN_INSN, 0, 0, I_CMOVNL }, + { "cmovnle", 7, TOKEN_INSN, 0, 0, I_CMOVNLE }, + { "cmovno", 6, TOKEN_INSN, 0, 0, I_CMOVNO }, + { "cmovnp", 6, TOKEN_INSN, 0, 0, I_CMOVNP }, + { "cmovns", 6, TOKEN_INSN, 0, 0, I_CMOVNS }, + { "cmovnz", 6, TOKEN_INSN, 0, 0, I_CMOVNZ }, + { "cmovo", 5, TOKEN_INSN, 0, 0, I_CMOVO }, + { "cmovp", 5, TOKEN_INSN, 0, 0, I_CMOVP }, + { "cmovpe", 6, TOKEN_INSN, 0, 0, I_CMOVPE }, + { "cmovpo", 6, TOKEN_INSN, 0, 0, I_CMOVPO }, + { "cmovs", 5, TOKEN_INSN, 0, 0, I_CMOVS }, + { "cmovz", 5, TOKEN_INSN, 0, 0, I_CMOVZ }, + { "ja", 2, TOKEN_INSN, 0, 0, I_JA }, + { "jae", 3, TOKEN_INSN, 0, 0, I_JAE }, + { "jb", 2, TOKEN_INSN, 0, 0, I_JB }, + { "jbe", 3, TOKEN_INSN, 0, 0, I_JBE }, + { "jc", 2, TOKEN_INSN, 0, 0, I_JC }, + { "je", 2, TOKEN_INSN, 0, 0, I_JE }, + { "jg", 2, TOKEN_INSN, 0, 0, I_JG }, + { "jge", 3, TOKEN_INSN, 0, 0, I_JGE }, + { "jl", 2, TOKEN_INSN, 0, 0, I_JL }, + { "jle", 3, TOKEN_INSN, 0, 0, I_JLE }, + { "jna", 3, TOKEN_INSN, 0, 0, I_JNA }, + { "jnae", 4, TOKEN_INSN, 0, 0, I_JNAE }, + { "jnb", 3, TOKEN_INSN, 0, 0, I_JNB }, + { "jnbe", 4, TOKEN_INSN, 0, 0, I_JNBE }, + { "jnc", 3, TOKEN_INSN, 0, 0, I_JNC }, + { "jne", 3, TOKEN_INSN, 0, 0, I_JNE }, + { "jng", 3, TOKEN_INSN, 0, 0, I_JNG }, + { "jnge", 4, TOKEN_INSN, 0, 0, I_JNGE }, + { "jnl", 3, TOKEN_INSN, 0, 0, I_JNL }, + { "jnle", 4, TOKEN_INSN, 0, 0, I_JNLE }, + { "jno", 3, TOKEN_INSN, 0, 0, I_JNO }, + { "jnp", 3, TOKEN_INSN, 0, 0, I_JNP }, + { "jns", 3, TOKEN_INSN, 0, 0, I_JNS }, + { "jnz", 3, TOKEN_INSN, 0, 0, I_JNZ }, + { "jo", 2, TOKEN_INSN, 0, 0, I_JO }, + { "jp", 2, TOKEN_INSN, 0, 0, I_JP }, + { "jpe", 3, TOKEN_INSN, 0, 0, I_JPE }, + { "jpo", 3, TOKEN_INSN, 0, 0, I_JPO }, + { "js", 2, TOKEN_INSN, 0, 0, I_JS }, + { "jz", 2, TOKEN_INSN, 0, 0, I_JZ }, + { "seta", 4, TOKEN_INSN, 0, 0, I_SETA }, + { "setae", 5, TOKEN_INSN, 0, 0, I_SETAE }, + { "setb", 4, TOKEN_INSN, 0, 0, I_SETB }, + { "setbe", 5, TOKEN_INSN, 0, 0, I_SETBE }, + { "setc", 4, TOKEN_INSN, 0, 0, I_SETC }, + { "sete", 4, TOKEN_INSN, 0, 0, I_SETE }, + { "setg", 4, TOKEN_INSN, 0, 0, I_SETG }, + { "setge", 5, TOKEN_INSN, 0, 0, I_SETGE }, + { "setl", 4, TOKEN_INSN, 0, 0, I_SETL }, + { "setle", 5, TOKEN_INSN, 0, 0, I_SETLE }, + { "setna", 5, TOKEN_INSN, 0, 0, I_SETNA }, + { "setnae", 6, TOKEN_INSN, 0, 0, I_SETNAE }, + { "setnb", 5, TOKEN_INSN, 0, 0, I_SETNB }, + { "setnbe", 6, TOKEN_INSN, 0, 0, I_SETNBE }, + { "setnc", 5, TOKEN_INSN, 0, 0, I_SETNC }, + { "setne", 5, TOKEN_INSN, 0, 0, I_SETNE }, + { "setng", 5, TOKEN_INSN, 0, 0, I_SETNG }, + { "setnge", 6, TOKEN_INSN, 0, 0, I_SETNGE }, + { "setnl", 5, TOKEN_INSN, 0, 0, I_SETNL }, + { "setnle", 6, TOKEN_INSN, 0, 0, I_SETNLE }, + { "setno", 5, TOKEN_INSN, 0, 0, I_SETNO }, + { "setnp", 5, TOKEN_INSN, 0, 0, I_SETNP }, + { "setns", 5, TOKEN_INSN, 0, 0, I_SETNS }, + { "setnz", 5, TOKEN_INSN, 0, 0, I_SETNZ }, + { "seto", 4, TOKEN_INSN, 0, 0, I_SETO }, + { "setp", 4, TOKEN_INSN, 0, 0, I_SETP }, + { "setpe", 5, TOKEN_INSN, 0, 0, I_SETPE }, + { "setpo", 5, TOKEN_INSN, 0, 0, I_SETPO }, + { "sets", 4, TOKEN_INSN, 0, 0, I_SETS }, + { "setz", 4, TOKEN_INSN, 0, 0, I_SETZ }, + { "addps", 5, TOKEN_INSN, 0, 0, I_ADDPS }, + { "addss", 5, TOKEN_INSN, 0, 0, I_ADDSS }, + { "andnps", 6, TOKEN_INSN, 0, 0, I_ANDNPS }, + { "andps", 5, TOKEN_INSN, 0, 0, I_ANDPS }, + { "cmpeqps", 7, TOKEN_INSN, 0, 0, I_CMPEQPS }, + { "cmpeqss", 7, TOKEN_INSN, 0, 0, I_CMPEQSS }, + { "cmpleps", 7, TOKEN_INSN, 0, 0, I_CMPLEPS }, + { "cmpless", 7, TOKEN_INSN, 0, 0, I_CMPLESS }, + { "cmpltps", 7, TOKEN_INSN, 0, 0, I_CMPLTPS }, + { "cmpltss", 7, TOKEN_INSN, 0, 0, I_CMPLTSS }, + { "cmpneqps", 8, TOKEN_INSN, 0, 0, I_CMPNEQPS }, + { "cmpneqss", 8, TOKEN_INSN, 0, 0, I_CMPNEQSS }, + { "cmpnleps", 8, TOKEN_INSN, 0, 0, I_CMPNLEPS }, + { "cmpnless", 8, TOKEN_INSN, 0, 0, I_CMPNLESS }, + { "cmpnltps", 8, TOKEN_INSN, 0, 0, I_CMPNLTPS }, + { "cmpnltss", 8, TOKEN_INSN, 0, 0, I_CMPNLTSS }, + { "cmpordps", 8, TOKEN_INSN, 0, 0, I_CMPORDPS }, + { "cmpordss", 8, TOKEN_INSN, 0, 0, I_CMPORDSS }, + { "cmpunordps", 10, TOKEN_INSN, 0, 0, I_CMPUNORDPS }, + { "cmpunordss", 10, TOKEN_INSN, 0, 0, I_CMPUNORDSS }, + { "cmpps", 5, TOKEN_INSN, 0, 0, I_CMPPS }, + { "cmpss", 5, TOKEN_INSN, 0, 0, I_CMPSS }, + { "comiss", 6, TOKEN_INSN, 0, 0, I_COMISS }, + { "cvtpi2ps", 8, TOKEN_INSN, 0, 0, I_CVTPI2PS }, + { "cvtps2pi", 8, TOKEN_INSN, 0, 0, I_CVTPS2PI }, + { "cvtsi2ss", 8, TOKEN_INSN, 0, 0, I_CVTSI2SS }, + { "cvtss2si", 8, TOKEN_INSN, 0, 0, I_CVTSS2SI }, + { "cvttps2pi", 9, TOKEN_INSN, 0, 0, I_CVTTPS2PI }, + { "cvttss2si", 9, TOKEN_INSN, 0, 0, I_CVTTSS2SI }, + { "divps", 5, TOKEN_INSN, 0, 0, I_DIVPS }, + { "divss", 5, TOKEN_INSN, 0, 0, I_DIVSS }, + { "ldmxcsr", 7, TOKEN_INSN, 0, 0, I_LDMXCSR }, + { "maxps", 5, TOKEN_INSN, 0, 0, I_MAXPS }, + { "maxss", 5, TOKEN_INSN, 0, 0, I_MAXSS }, + { "minps", 5, TOKEN_INSN, 0, 0, I_MINPS }, + { "minss", 5, TOKEN_INSN, 0, 0, I_MINSS }, + { "movaps", 6, TOKEN_INSN, 0, 0, I_MOVAPS }, + { "movhps", 6, TOKEN_INSN, 0, 0, I_MOVHPS }, + { "movlhps", 7, TOKEN_INSN, 0, 0, I_MOVLHPS }, + { "movlps", 6, TOKEN_INSN, 0, 0, I_MOVLPS }, + { "movhlps", 7, TOKEN_INSN, 0, 0, I_MOVHLPS }, + { "movmskps", 8, TOKEN_INSN, 0, 0, I_MOVMSKPS }, + { "movntps", 7, TOKEN_INSN, 0, 0, I_MOVNTPS }, + { "movss", 5, TOKEN_INSN, 0, 0, I_MOVSS }, + { "movups", 6, TOKEN_INSN, 0, 0, I_MOVUPS }, + { "mulps", 5, TOKEN_INSN, 0, 0, I_MULPS }, + { "mulss", 5, TOKEN_INSN, 0, 0, I_MULSS }, + { "orps", 4, TOKEN_INSN, 0, 0, I_ORPS }, + { "rcpps", 5, TOKEN_INSN, 0, 0, I_RCPPS }, + { "rcpss", 5, TOKEN_INSN, 0, 0, I_RCPSS }, + { "rsqrtps", 7, TOKEN_INSN, 0, 0, I_RSQRTPS }, + { "rsqrtss", 7, TOKEN_INSN, 0, 0, I_RSQRTSS }, + { "shufps", 6, TOKEN_INSN, 0, 0, I_SHUFPS }, + { "sqrtps", 6, TOKEN_INSN, 0, 0, I_SQRTPS }, + { "sqrtss", 6, TOKEN_INSN, 0, 0, I_SQRTSS }, + { "stmxcsr", 7, TOKEN_INSN, 0, 0, I_STMXCSR }, + { "subps", 5, TOKEN_INSN, 0, 0, I_SUBPS }, + { "subss", 5, TOKEN_INSN, 0, 0, I_SUBSS }, + { "ucomiss", 7, TOKEN_INSN, 0, 0, I_UCOMISS }, + { "unpckhps", 8, TOKEN_INSN, 0, 0, I_UNPCKHPS }, + { "unpcklps", 8, TOKEN_INSN, 0, 0, I_UNPCKLPS }, + { "xorps", 5, TOKEN_INSN, 0, 0, I_XORPS }, + { "fxrstor", 7, TOKEN_INSN, 0, 0, I_FXRSTOR }, + { "fxrstor64", 9, TOKEN_INSN, 0, 0, I_FXRSTOR64 }, + { "fxsave", 6, TOKEN_INSN, 0, 0, I_FXSAVE }, + { "fxsave64", 8, TOKEN_INSN, 0, 0, I_FXSAVE64 }, + { "xgetbv", 6, TOKEN_INSN, 0, 0, I_XGETBV }, + { "xsetbv", 6, TOKEN_INSN, 0, 0, I_XSETBV }, + { "xsave", 5, TOKEN_INSN, 0, 0, I_XSAVE }, + { "xsave64", 7, TOKEN_INSN, 0, 0, I_XSAVE64 }, + { "xsavec", 6, TOKEN_INSN, 0, 0, I_XSAVEC }, + { "xsavec64", 8, TOKEN_INSN, 0, 0, I_XSAVEC64 }, + { "xsaveopt", 8, TOKEN_INSN, 0, 0, I_XSAVEOPT }, + { "xsaveopt64", 10, TOKEN_INSN, 0, 0, I_XSAVEOPT64 }, + { "xsaves", 6, TOKEN_INSN, 0, 0, I_XSAVES }, + { "xsaves64", 8, TOKEN_INSN, 0, 0, I_XSAVES64 }, + { "xrstor", 6, TOKEN_INSN, 0, 0, I_XRSTOR }, + { "xrstor64", 8, TOKEN_INSN, 0, 0, I_XRSTOR64 }, + { "xrstors", 7, TOKEN_INSN, 0, 0, I_XRSTORS }, + { "xrstors64", 9, TOKEN_INSN, 0, 0, I_XRSTORS64 }, + { "prefetchnta", 11, TOKEN_INSN, 0, 0, I_PREFETCHNTA }, + { "prefetcht0", 10, TOKEN_INSN, 0, 0, I_PREFETCHT0 }, + { "prefetcht1", 10, TOKEN_INSN, 0, 0, I_PREFETCHT1 }, + { "prefetcht2", 10, TOKEN_INSN, 0, 0, I_PREFETCHT2 }, + { "prefetchit0", 11, TOKEN_INSN, 0, 0, I_PREFETCHIT0 }, + { "prefetchit1", 11, TOKEN_INSN, 0, 0, I_PREFETCHIT1 }, + { "maskmovq", 8, TOKEN_INSN, 0, 0, I_MASKMOVQ }, + { "movntq", 6, TOKEN_INSN, 0, 0, I_MOVNTQ }, + { "pavgb", 5, TOKEN_INSN, 0, 0, I_PAVGB }, + { "pavgw", 5, TOKEN_INSN, 0, 0, I_PAVGW }, + { "pextrw", 6, TOKEN_INSN, 0, 0, I_PEXTRW }, + { "pinsrw", 6, TOKEN_INSN, 0, 0, I_PINSRW }, + { "pmaxsw", 6, TOKEN_INSN, 0, 0, I_PMAXSW }, + { "pmaxub", 6, TOKEN_INSN, 0, 0, I_PMAXUB }, + { "pminsw", 6, TOKEN_INSN, 0, 0, I_PMINSW }, + { "pminub", 6, TOKEN_INSN, 0, 0, I_PMINUB }, + { "pmovmskb", 8, TOKEN_INSN, 0, 0, I_PMOVMSKB }, + { "pmulhuw", 7, TOKEN_INSN, 0, 0, I_PMULHUW }, + { "psadbw", 6, TOKEN_INSN, 0, 0, I_PSADBW }, + { "pshufw", 6, TOKEN_INSN, 0, 0, I_PSHUFW }, + { "pf2iw", 5, TOKEN_INSN, 0, 0, I_PF2IW }, + { "pfnacc", 6, TOKEN_INSN, 0, 0, I_PFNACC }, + { "pfpnacc", 7, TOKEN_INSN, 0, 0, I_PFPNACC }, + { "pi2fw", 5, TOKEN_INSN, 0, 0, I_PI2FW }, + { "pswapd", 6, TOKEN_INSN, 0, 0, I_PSWAPD }, + { "maskmovdqu", 10, TOKEN_INSN, 0, 0, I_MASKMOVDQU }, + { "clflush", 7, TOKEN_INSN, 0, 0, I_CLFLUSH }, + { "movntdq", 7, TOKEN_INSN, 0, 0, I_MOVNTDQ }, + { "movnti", 6, TOKEN_INSN, 0, 0, I_MOVNTI }, + { "movntpd", 7, TOKEN_INSN, 0, 0, I_MOVNTPD }, + { "movdqa", 6, TOKEN_INSN, 0, 0, I_MOVDQA }, + { "movdqu", 6, TOKEN_INSN, 0, 0, I_MOVDQU }, + { "movdq2q", 7, TOKEN_INSN, 0, 0, I_MOVDQ2Q }, + { "movq2dq", 7, TOKEN_INSN, 0, 0, I_MOVQ2DQ }, + { "paddq", 5, TOKEN_INSN, 0, 0, I_PADDQ }, + { "pmuludq", 7, TOKEN_INSN, 0, 0, I_PMULUDQ }, + { "pshufd", 6, TOKEN_INSN, 0, 0, I_PSHUFD }, + { "pshufhw", 7, TOKEN_INSN, 0, 0, I_PSHUFHW }, + { "pshuflw", 7, TOKEN_INSN, 0, 0, I_PSHUFLW }, + { "pslldq", 6, TOKEN_INSN, 0, 0, I_PSLLDQ }, + { "psrldq", 6, TOKEN_INSN, 0, 0, I_PSRLDQ }, + { "psubq", 5, TOKEN_INSN, 0, 0, I_PSUBQ }, + { "punpckhqdq", 10, TOKEN_INSN, 0, 0, I_PUNPCKHQDQ }, + { "punpcklqdq", 10, TOKEN_INSN, 0, 0, I_PUNPCKLQDQ }, + { "addpd", 5, TOKEN_INSN, 0, 0, I_ADDPD }, + { "addsd", 5, TOKEN_INSN, 0, 0, I_ADDSD }, + { "andnpd", 6, TOKEN_INSN, 0, 0, I_ANDNPD }, + { "andpd", 5, TOKEN_INSN, 0, 0, I_ANDPD }, + { "cmpeqpd", 7, TOKEN_INSN, 0, 0, I_CMPEQPD }, + { "cmpeqsd", 7, TOKEN_INSN, 0, 0, I_CMPEQSD }, + { "cmplepd", 7, TOKEN_INSN, 0, 0, I_CMPLEPD }, + { "cmplesd", 7, TOKEN_INSN, 0, 0, I_CMPLESD }, + { "cmpltpd", 7, TOKEN_INSN, 0, 0, I_CMPLTPD }, + { "cmpltsd", 7, TOKEN_INSN, 0, 0, I_CMPLTSD }, + { "cmpneqpd", 8, TOKEN_INSN, 0, 0, I_CMPNEQPD }, + { "cmpneqsd", 8, TOKEN_INSN, 0, 0, I_CMPNEQSD }, + { "cmpnlepd", 8, TOKEN_INSN, 0, 0, I_CMPNLEPD }, + { "cmpnlesd", 8, TOKEN_INSN, 0, 0, I_CMPNLESD }, + { "cmpnltpd", 8, TOKEN_INSN, 0, 0, I_CMPNLTPD }, + { "cmpnltsd", 8, TOKEN_INSN, 0, 0, I_CMPNLTSD }, + { "cmpordpd", 8, TOKEN_INSN, 0, 0, I_CMPORDPD }, + { "cmpordsd", 8, TOKEN_INSN, 0, 0, I_CMPORDSD }, + { "cmpunordpd", 10, TOKEN_INSN, 0, 0, I_CMPUNORDPD }, + { "cmpunordsd", 10, TOKEN_INSN, 0, 0, I_CMPUNORDSD }, + { "cmppd", 5, TOKEN_INSN, 0, 0, I_CMPPD }, + { "comisd", 6, TOKEN_INSN, 0, 0, I_COMISD }, + { "cvtdq2pd", 8, TOKEN_INSN, 0, 0, I_CVTDQ2PD }, + { "cvtdq2ps", 8, TOKEN_INSN, 0, 0, I_CVTDQ2PS }, + { "cvtpd2dq", 8, TOKEN_INSN, 0, 0, I_CVTPD2DQ }, + { "cvtpd2pi", 8, TOKEN_INSN, 0, 0, I_CVTPD2PI }, + { "cvtpd2ps", 8, TOKEN_INSN, 0, 0, I_CVTPD2PS }, + { "cvtpi2pd", 8, TOKEN_INSN, 0, 0, I_CVTPI2PD }, + { "cvtps2dq", 8, TOKEN_INSN, 0, 0, I_CVTPS2DQ }, + { "cvtps2pd", 8, TOKEN_INSN, 0, 0, I_CVTPS2PD }, + { "cvtsd2si", 8, TOKEN_INSN, 0, 0, I_CVTSD2SI }, + { "cvtsd2ss", 8, TOKEN_INSN, 0, 0, I_CVTSD2SS }, + { "cvtsi2sd", 8, TOKEN_INSN, 0, 0, I_CVTSI2SD }, + { "cvtss2sd", 8, TOKEN_INSN, 0, 0, I_CVTSS2SD }, + { "cvttpd2pi", 9, TOKEN_INSN, 0, 0, I_CVTTPD2PI }, + { "cvttpd2dq", 9, TOKEN_INSN, 0, 0, I_CVTTPD2DQ }, + { "cvttps2dq", 9, TOKEN_INSN, 0, 0, I_CVTTPS2DQ }, + { "cvttsd2si", 9, TOKEN_INSN, 0, 0, I_CVTTSD2SI }, + { "divpd", 5, TOKEN_INSN, 0, 0, I_DIVPD }, + { "divsd", 5, TOKEN_INSN, 0, 0, I_DIVSD }, + { "maxpd", 5, TOKEN_INSN, 0, 0, I_MAXPD }, + { "maxsd", 5, TOKEN_INSN, 0, 0, I_MAXSD }, + { "minpd", 5, TOKEN_INSN, 0, 0, I_MINPD }, + { "minsd", 5, TOKEN_INSN, 0, 0, I_MINSD }, + { "movapd", 6, TOKEN_INSN, 0, 0, I_MOVAPD }, + { "movhpd", 6, TOKEN_INSN, 0, 0, I_MOVHPD }, + { "movlpd", 6, TOKEN_INSN, 0, 0, I_MOVLPD }, + { "movmskpd", 8, TOKEN_INSN, 0, 0, I_MOVMSKPD }, + { "movupd", 6, TOKEN_INSN, 0, 0, I_MOVUPD }, + { "mulpd", 5, TOKEN_INSN, 0, 0, I_MULPD }, + { "mulsd", 5, TOKEN_INSN, 0, 0, I_MULSD }, + { "orpd", 4, TOKEN_INSN, 0, 0, I_ORPD }, + { "shufpd", 6, TOKEN_INSN, 0, 0, I_SHUFPD }, + { "sqrtpd", 6, TOKEN_INSN, 0, 0, I_SQRTPD }, + { "sqrtsd", 6, TOKEN_INSN, 0, 0, I_SQRTSD }, + { "subpd", 5, TOKEN_INSN, 0, 0, I_SUBPD }, + { "subsd", 5, TOKEN_INSN, 0, 0, I_SUBSD }, + { "ucomisd", 7, TOKEN_INSN, 0, 0, I_UCOMISD }, + { "unpckhpd", 8, TOKEN_INSN, 0, 0, I_UNPCKHPD }, + { "unpcklpd", 8, TOKEN_INSN, 0, 0, I_UNPCKLPD }, + { "xorpd", 5, TOKEN_INSN, 0, 0, I_XORPD }, + { "addsubpd", 8, TOKEN_INSN, 0, 0, I_ADDSUBPD }, + { "addsubps", 8, TOKEN_INSN, 0, 0, I_ADDSUBPS }, + { "haddpd", 6, TOKEN_INSN, 0, 0, I_HADDPD }, + { "haddps", 6, TOKEN_INSN, 0, 0, I_HADDPS }, + { "hsubpd", 6, TOKEN_INSN, 0, 0, I_HSUBPD }, + { "hsubps", 6, TOKEN_INSN, 0, 0, I_HSUBPS }, + { "lddqu", 5, TOKEN_INSN, 0, 0, I_LDDQU }, + { "movddup", 7, TOKEN_INSN, 0, 0, I_MOVDDUP }, + { "movshdup", 8, TOKEN_INSN, 0, 0, I_MOVSHDUP }, + { "movsldup", 8, TOKEN_INSN, 0, 0, I_MOVSLDUP }, + { "clgi", 4, TOKEN_INSN, 0, 0, I_CLGI }, + { "stgi", 4, TOKEN_INSN, 0, 0, I_STGI }, + { "vmcall", 6, TOKEN_INSN, 0, 0, I_VMCALL }, + { "vmclear", 7, TOKEN_INSN, 0, 0, I_VMCLEAR }, + { "vmfunc", 6, TOKEN_INSN, 0, 0, I_VMFUNC }, + { "vmlaunch", 8, TOKEN_INSN, 0, 0, I_VMLAUNCH }, + { "vmload", 6, TOKEN_INSN, 0, 0, I_VMLOAD }, + { "vmmcall", 7, TOKEN_INSN, 0, 0, I_VMMCALL }, + { "vmptrld", 7, TOKEN_INSN, 0, 0, I_VMPTRLD }, + { "vmptrst", 7, TOKEN_INSN, 0, 0, I_VMPTRST }, + { "vmread", 6, TOKEN_INSN, 0, 0, I_VMREAD }, + { "vmresume", 8, TOKEN_INSN, 0, 0, I_VMRESUME }, + { "vmrun", 5, TOKEN_INSN, 0, 0, I_VMRUN }, + { "vmsave", 6, TOKEN_INSN, 0, 0, I_VMSAVE }, + { "vmwrite", 7, TOKEN_INSN, 0, 0, I_VMWRITE }, + { "vmxoff", 6, TOKEN_INSN, 0, 0, I_VMXOFF }, + { "vmxon", 5, TOKEN_INSN, 0, 0, I_VMXON }, + { "invept", 6, TOKEN_INSN, 0, 0, I_INVEPT }, + { "invvpid", 7, TOKEN_INSN, 0, 0, I_INVVPID }, + { "pvalidate", 9, TOKEN_INSN, 0, 0, I_PVALIDATE }, + { "rmpadjust", 9, TOKEN_INSN, 0, 0, I_RMPADJUST }, + { "vmgexit", 7, TOKEN_INSN, 0, 0, I_VMGEXIT }, + { "pabsb", 5, TOKEN_INSN, 0, 0, I_PABSB }, + { "pabsw", 5, TOKEN_INSN, 0, 0, I_PABSW }, + { "pabsd", 5, TOKEN_INSN, 0, 0, I_PABSD }, + { "palignr", 7, TOKEN_INSN, 0, 0, I_PALIGNR }, + { "phaddw", 6, TOKEN_INSN, 0, 0, I_PHADDW }, + { "phaddd", 6, TOKEN_INSN, 0, 0, I_PHADDD }, + { "phaddsw", 7, TOKEN_INSN, 0, 0, I_PHADDSW }, + { "phsubw", 6, TOKEN_INSN, 0, 0, I_PHSUBW }, + { "phsubd", 6, TOKEN_INSN, 0, 0, I_PHSUBD }, + { "phsubsw", 7, TOKEN_INSN, 0, 0, I_PHSUBSW }, + { "pmaddubsw", 9, TOKEN_INSN, 0, 0, I_PMADDUBSW }, + { "pmulhrsw", 8, TOKEN_INSN, 0, 0, I_PMULHRSW }, + { "pshufb", 6, TOKEN_INSN, 0, 0, I_PSHUFB }, + { "psignb", 6, TOKEN_INSN, 0, 0, I_PSIGNB }, + { "psignw", 6, TOKEN_INSN, 0, 0, I_PSIGNW }, + { "psignd", 6, TOKEN_INSN, 0, 0, I_PSIGND }, + { "extrq", 5, TOKEN_INSN, 0, 0, I_EXTRQ }, + { "insertq", 7, TOKEN_INSN, 0, 0, I_INSERTQ }, + { "movntsd", 7, TOKEN_INSN, 0, 0, I_MOVNTSD }, + { "movntss", 7, TOKEN_INSN, 0, 0, I_MOVNTSS }, + { "lzcnt", 5, TOKEN_INSN, 0, 0, I_LZCNT }, + { "blendpd", 7, TOKEN_INSN, 0, 0, I_BLENDPD }, + { "blendps", 7, TOKEN_INSN, 0, 0, I_BLENDPS }, + { "blendvpd", 8, TOKEN_INSN, 0, 0, I_BLENDVPD }, + { "blendvps", 8, TOKEN_INSN, 0, 0, I_BLENDVPS }, + { "dppd", 4, TOKEN_INSN, 0, 0, I_DPPD }, + { "dpps", 4, TOKEN_INSN, 0, 0, I_DPPS }, + { "extractps", 9, TOKEN_INSN, 0, 0, I_EXTRACTPS }, + { "insertps", 8, TOKEN_INSN, 0, 0, I_INSERTPS }, + { "movntdqa", 8, TOKEN_INSN, 0, 0, I_MOVNTDQA }, + { "mpsadbw", 7, TOKEN_INSN, 0, 0, I_MPSADBW }, + { "packusdw", 8, TOKEN_INSN, 0, 0, I_PACKUSDW }, + { "pblendvb", 8, TOKEN_INSN, 0, 0, I_PBLENDVB }, + { "pblendw", 7, TOKEN_INSN, 0, 0, I_PBLENDW }, + { "pcmpeqq", 7, TOKEN_INSN, 0, 0, I_PCMPEQQ }, + { "pextrb", 6, TOKEN_INSN, 0, 0, I_PEXTRB }, + { "pextrd", 6, TOKEN_INSN, 0, 0, I_PEXTRD }, + { "pextrq", 6, TOKEN_INSN, 0, 0, I_PEXTRQ }, + { "phminposuw", 10, TOKEN_INSN, 0, 0, I_PHMINPOSUW }, + { "pinsrb", 6, TOKEN_INSN, 0, 0, I_PINSRB }, + { "pinsrd", 6, TOKEN_INSN, 0, 0, I_PINSRD }, + { "pinsrq", 6, TOKEN_INSN, 0, 0, I_PINSRQ }, + { "pmaxsb", 6, TOKEN_INSN, 0, 0, I_PMAXSB }, + { "pmaxsd", 6, TOKEN_INSN, 0, 0, I_PMAXSD }, + { "pmaxud", 6, TOKEN_INSN, 0, 0, I_PMAXUD }, + { "pmaxuw", 6, TOKEN_INSN, 0, 0, I_PMAXUW }, + { "pminsb", 6, TOKEN_INSN, 0, 0, I_PMINSB }, + { "pminsd", 6, TOKEN_INSN, 0, 0, I_PMINSD }, + { "pminud", 6, TOKEN_INSN, 0, 0, I_PMINUD }, + { "pminuw", 6, TOKEN_INSN, 0, 0, I_PMINUW }, + { "pmovsxbw", 8, TOKEN_INSN, 0, 0, I_PMOVSXBW }, + { "pmovsxbd", 8, TOKEN_INSN, 0, 0, I_PMOVSXBD }, + { "pmovsxbq", 8, TOKEN_INSN, 0, 0, I_PMOVSXBQ }, + { "pmovsxwd", 8, TOKEN_INSN, 0, 0, I_PMOVSXWD }, + { "pmovsxwq", 8, TOKEN_INSN, 0, 0, I_PMOVSXWQ }, + { "pmovsxdq", 8, TOKEN_INSN, 0, 0, I_PMOVSXDQ }, + { "pmovzxbw", 8, TOKEN_INSN, 0, 0, I_PMOVZXBW }, + { "pmovzxbd", 8, TOKEN_INSN, 0, 0, I_PMOVZXBD }, + { "pmovzxbq", 8, TOKEN_INSN, 0, 0, I_PMOVZXBQ }, + { "pmovzxwd", 8, TOKEN_INSN, 0, 0, I_PMOVZXWD }, + { "pmovzxwq", 8, TOKEN_INSN, 0, 0, I_PMOVZXWQ }, + { "pmovzxdq", 8, TOKEN_INSN, 0, 0, I_PMOVZXDQ }, + { "pmuldq", 6, TOKEN_INSN, 0, 0, I_PMULDQ }, + { "pmulld", 6, TOKEN_INSN, 0, 0, I_PMULLD }, + { "ptest", 5, TOKEN_INSN, 0, 0, I_PTEST }, + { "roundpd", 7, TOKEN_INSN, 0, 0, I_ROUNDPD }, + { "roundps", 7, TOKEN_INSN, 0, 0, I_ROUNDPS }, + { "roundsd", 7, TOKEN_INSN, 0, 0, I_ROUNDSD }, + { "roundss", 7, TOKEN_INSN, 0, 0, I_ROUNDSS }, + { "crc32", 5, TOKEN_INSN, 0, 0, I_CRC32 }, + { "pcmpestri", 9, TOKEN_INSN, 0, 0, I_PCMPESTRI }, + { "pcmpestrm", 9, TOKEN_INSN, 0, 0, I_PCMPESTRM }, + { "pcmpistri", 9, TOKEN_INSN, 0, 0, I_PCMPISTRI }, + { "pcmpistrm", 9, TOKEN_INSN, 0, 0, I_PCMPISTRM }, + { "pcmpgtq", 7, TOKEN_INSN, 0, 0, I_PCMPGTQ }, + { "popcnt", 6, TOKEN_INSN, 0, 0, I_POPCNT }, + { "getsec", 6, TOKEN_INSN, 0, 0, I_GETSEC }, + { "pfrcpv", 6, TOKEN_INSN, 0, 0, I_PFRCPV }, + { "pfrsqrtv", 8, TOKEN_INSN, 0, 0, I_PFRSQRTV }, + { "movbe", 5, TOKEN_INSN, 0, 0, I_MOVBE }, + { "aesenc", 6, TOKEN_INSN, 0, 0, I_AESENC }, + { "aesenclast", 10, TOKEN_INSN, 0, 0, I_AESENCLAST }, + { "aesdec", 6, TOKEN_INSN, 0, 0, I_AESDEC }, + { "aesdeclast", 10, TOKEN_INSN, 0, 0, I_AESDECLAST }, + { "aesimc", 6, TOKEN_INSN, 0, 0, I_AESIMC }, + { "aeskeygenassist", 15, TOKEN_INSN, 0, 0, I_AESKEYGENASSIST }, + { "vaesenc", 7, TOKEN_INSN, 0, 0, I_VAESENC }, + { "vaesenclast", 11, TOKEN_INSN, 0, 0, I_VAESENCLAST }, + { "vaesdec", 7, TOKEN_INSN, 0, 0, I_VAESDEC }, + { "vaesdeclast", 11, TOKEN_INSN, 0, 0, I_VAESDECLAST }, + { "vaesimc", 7, TOKEN_INSN, 0, 0, I_VAESIMC }, + { "vaeskeygenassist", 16, TOKEN_INSN, 0, 0, I_VAESKEYGENASSIST }, + { "vaddpd", 6, TOKEN_INSN, 0, 0, I_VADDPD }, + { "vaddps", 6, TOKEN_INSN, 0, 0, I_VADDPS }, + { "vaddsd", 6, TOKEN_INSN, 0, 0, I_VADDSD }, + { "vaddss", 6, TOKEN_INSN, 0, 0, I_VADDSS }, + { "vaddsubpd", 9, TOKEN_INSN, 0, 0, I_VADDSUBPD }, + { "vaddsubps", 9, TOKEN_INSN, 0, 0, I_VADDSUBPS }, + { "vandpd", 6, TOKEN_INSN, 0, 0, I_VANDPD }, + { "vandps", 6, TOKEN_INSN, 0, 0, I_VANDPS }, + { "vandnpd", 7, TOKEN_INSN, 0, 0, I_VANDNPD }, + { "vandnps", 7, TOKEN_INSN, 0, 0, I_VANDNPS }, + { "vblendpd", 8, TOKEN_INSN, 0, 0, I_VBLENDPD }, + { "vblendps", 8, TOKEN_INSN, 0, 0, I_VBLENDPS }, + { "vblendvpd", 9, TOKEN_INSN, 0, 0, I_VBLENDVPD }, + { "vblendvps", 9, TOKEN_INSN, 0, 0, I_VBLENDVPS }, + { "vbroadcastss", 12, TOKEN_INSN, 0, 0, I_VBROADCASTSS }, + { "vbroadcastsd", 12, TOKEN_INSN, 0, 0, I_VBROADCASTSD }, + { "vbroadcastf128", 14, TOKEN_INSN, 0, 0, I_VBROADCASTF128 }, + { "vcmpeq_ospd", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_OSPD }, + { "vcmpeqpd", 8, TOKEN_INSN, 0, 0, I_VCMPEQPD }, + { "vcmplt_ospd", 11, TOKEN_INSN, 0, 0, I_VCMPLT_OSPD }, + { "vcmpltpd", 8, TOKEN_INSN, 0, 0, I_VCMPLTPD }, + { "vcmple_ospd", 11, TOKEN_INSN, 0, 0, I_VCMPLE_OSPD }, + { "vcmplepd", 8, TOKEN_INSN, 0, 0, I_VCMPLEPD }, + { "vcmpunord_qpd", 13, TOKEN_INSN, 0, 0, I_VCMPUNORD_QPD }, + { "vcmpunordpd", 11, TOKEN_INSN, 0, 0, I_VCMPUNORDPD }, + { "vcmpneq_uqpd", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_UQPD }, + { "vcmpneqpd", 9, TOKEN_INSN, 0, 0, I_VCMPNEQPD }, + { "vcmpnlt_uspd", 12, TOKEN_INSN, 0, 0, I_VCMPNLT_USPD }, + { "vcmpnltpd", 9, TOKEN_INSN, 0, 0, I_VCMPNLTPD }, + { "vcmpnle_uspd", 12, TOKEN_INSN, 0, 0, I_VCMPNLE_USPD }, + { "vcmpnlepd", 9, TOKEN_INSN, 0, 0, I_VCMPNLEPD }, + { "vcmpord_qpd", 11, TOKEN_INSN, 0, 0, I_VCMPORD_QPD }, + { "vcmpordpd", 9, TOKEN_INSN, 0, 0, I_VCMPORDPD }, + { "vcmpeq_uqpd", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_UQPD }, + { "vcmpnge_uspd", 12, TOKEN_INSN, 0, 0, I_VCMPNGE_USPD }, + { "vcmpngepd", 9, TOKEN_INSN, 0, 0, I_VCMPNGEPD }, + { "vcmpngt_uspd", 12, TOKEN_INSN, 0, 0, I_VCMPNGT_USPD }, + { "vcmpngtpd", 9, TOKEN_INSN, 0, 0, I_VCMPNGTPD }, + { "vcmpfalse_oqpd", 14, TOKEN_INSN, 0, 0, I_VCMPFALSE_OQPD }, + { "vcmpfalsepd", 11, TOKEN_INSN, 0, 0, I_VCMPFALSEPD }, + { "vcmpneq_oqpd", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_OQPD }, + { "vcmpge_ospd", 11, TOKEN_INSN, 0, 0, I_VCMPGE_OSPD }, + { "vcmpgepd", 8, TOKEN_INSN, 0, 0, I_VCMPGEPD }, + { "vcmpgt_ospd", 11, TOKEN_INSN, 0, 0, I_VCMPGT_OSPD }, + { "vcmpgtpd", 8, TOKEN_INSN, 0, 0, I_VCMPGTPD }, + { "vcmptrue_uqpd", 13, TOKEN_INSN, 0, 0, I_VCMPTRUE_UQPD }, + { "vcmptruepd", 10, TOKEN_INSN, 0, 0, I_VCMPTRUEPD }, + { "vcmplt_oqpd", 11, TOKEN_INSN, 0, 0, I_VCMPLT_OQPD }, + { "vcmple_oqpd", 11, TOKEN_INSN, 0, 0, I_VCMPLE_OQPD }, + { "vcmpunord_spd", 13, TOKEN_INSN, 0, 0, I_VCMPUNORD_SPD }, + { "vcmpneq_uspd", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_USPD }, + { "vcmpnlt_uqpd", 12, TOKEN_INSN, 0, 0, I_VCMPNLT_UQPD }, + { "vcmpnle_uqpd", 12, TOKEN_INSN, 0, 0, I_VCMPNLE_UQPD }, + { "vcmpord_spd", 11, TOKEN_INSN, 0, 0, I_VCMPORD_SPD }, + { "vcmpeq_uspd", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_USPD }, + { "vcmpnge_uqpd", 12, TOKEN_INSN, 0, 0, I_VCMPNGE_UQPD }, + { "vcmpngt_uqpd", 12, TOKEN_INSN, 0, 0, I_VCMPNGT_UQPD }, + { "vcmpfalse_ospd", 14, TOKEN_INSN, 0, 0, I_VCMPFALSE_OSPD }, + { "vcmpneq_ospd", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_OSPD }, + { "vcmpge_oqpd", 11, TOKEN_INSN, 0, 0, I_VCMPGE_OQPD }, + { "vcmpgt_oqpd", 11, TOKEN_INSN, 0, 0, I_VCMPGT_OQPD }, + { "vcmptrue_uspd", 13, TOKEN_INSN, 0, 0, I_VCMPTRUE_USPD }, + { "vcmppd", 6, TOKEN_INSN, 0, 0, I_VCMPPD }, + { "vcmpeq_osps", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_OSPS }, + { "vcmpeqps", 8, TOKEN_INSN, 0, 0, I_VCMPEQPS }, + { "vcmplt_osps", 11, TOKEN_INSN, 0, 0, I_VCMPLT_OSPS }, + { "vcmpltps", 8, TOKEN_INSN, 0, 0, I_VCMPLTPS }, + { "vcmple_osps", 11, TOKEN_INSN, 0, 0, I_VCMPLE_OSPS }, + { "vcmpleps", 8, TOKEN_INSN, 0, 0, I_VCMPLEPS }, + { "vcmpunord_qps", 13, TOKEN_INSN, 0, 0, I_VCMPUNORD_QPS }, + { "vcmpunordps", 11, TOKEN_INSN, 0, 0, I_VCMPUNORDPS }, + { "vcmpneq_uqps", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_UQPS }, + { "vcmpneqps", 9, TOKEN_INSN, 0, 0, I_VCMPNEQPS }, + { "vcmpnlt_usps", 12, TOKEN_INSN, 0, 0, I_VCMPNLT_USPS }, + { "vcmpnltps", 9, TOKEN_INSN, 0, 0, I_VCMPNLTPS }, + { "vcmpnle_usps", 12, TOKEN_INSN, 0, 0, I_VCMPNLE_USPS }, + { "vcmpnleps", 9, TOKEN_INSN, 0, 0, I_VCMPNLEPS }, + { "vcmpord_qps", 11, TOKEN_INSN, 0, 0, I_VCMPORD_QPS }, + { "vcmpordps", 9, TOKEN_INSN, 0, 0, I_VCMPORDPS }, + { "vcmpeq_uqps", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_UQPS }, + { "vcmpnge_usps", 12, TOKEN_INSN, 0, 0, I_VCMPNGE_USPS }, + { "vcmpngeps", 9, TOKEN_INSN, 0, 0, I_VCMPNGEPS }, + { "vcmpngt_usps", 12, TOKEN_INSN, 0, 0, I_VCMPNGT_USPS }, + { "vcmpngtps", 9, TOKEN_INSN, 0, 0, I_VCMPNGTPS }, + { "vcmpfalse_oqps", 14, TOKEN_INSN, 0, 0, I_VCMPFALSE_OQPS }, + { "vcmpfalseps", 11, TOKEN_INSN, 0, 0, I_VCMPFALSEPS }, + { "vcmpneq_oqps", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_OQPS }, + { "vcmpge_osps", 11, TOKEN_INSN, 0, 0, I_VCMPGE_OSPS }, + { "vcmpgeps", 8, TOKEN_INSN, 0, 0, I_VCMPGEPS }, + { "vcmpgt_osps", 11, TOKEN_INSN, 0, 0, I_VCMPGT_OSPS }, + { "vcmpgtps", 8, TOKEN_INSN, 0, 0, I_VCMPGTPS }, + { "vcmptrue_uqps", 13, TOKEN_INSN, 0, 0, I_VCMPTRUE_UQPS }, + { "vcmptrueps", 10, TOKEN_INSN, 0, 0, I_VCMPTRUEPS }, + { "vcmplt_oqps", 11, TOKEN_INSN, 0, 0, I_VCMPLT_OQPS }, + { "vcmple_oqps", 11, TOKEN_INSN, 0, 0, I_VCMPLE_OQPS }, + { "vcmpunord_sps", 13, TOKEN_INSN, 0, 0, I_VCMPUNORD_SPS }, + { "vcmpneq_usps", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_USPS }, + { "vcmpnlt_uqps", 12, TOKEN_INSN, 0, 0, I_VCMPNLT_UQPS }, + { "vcmpnle_uqps", 12, TOKEN_INSN, 0, 0, I_VCMPNLE_UQPS }, + { "vcmpord_sps", 11, TOKEN_INSN, 0, 0, I_VCMPORD_SPS }, + { "vcmpeq_usps", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_USPS }, + { "vcmpnge_uqps", 12, TOKEN_INSN, 0, 0, I_VCMPNGE_UQPS }, + { "vcmpngt_uqps", 12, TOKEN_INSN, 0, 0, I_VCMPNGT_UQPS }, + { "vcmpfalse_osps", 14, TOKEN_INSN, 0, 0, I_VCMPFALSE_OSPS }, + { "vcmpneq_osps", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_OSPS }, + { "vcmpge_oqps", 11, TOKEN_INSN, 0, 0, I_VCMPGE_OQPS }, + { "vcmpgt_oqps", 11, TOKEN_INSN, 0, 0, I_VCMPGT_OQPS }, + { "vcmptrue_usps", 13, TOKEN_INSN, 0, 0, I_VCMPTRUE_USPS }, + { "vcmpps", 6, TOKEN_INSN, 0, 0, I_VCMPPS }, + { "vcmpeq_ossd", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_OSSD }, + { "vcmpeqsd", 8, TOKEN_INSN, 0, 0, I_VCMPEQSD }, + { "vcmplt_ossd", 11, TOKEN_INSN, 0, 0, I_VCMPLT_OSSD }, + { "vcmpltsd", 8, TOKEN_INSN, 0, 0, I_VCMPLTSD }, + { "vcmple_ossd", 11, TOKEN_INSN, 0, 0, I_VCMPLE_OSSD }, + { "vcmplesd", 8, TOKEN_INSN, 0, 0, I_VCMPLESD }, + { "vcmpunord_qsd", 13, TOKEN_INSN, 0, 0, I_VCMPUNORD_QSD }, + { "vcmpunordsd", 11, TOKEN_INSN, 0, 0, I_VCMPUNORDSD }, + { "vcmpneq_uqsd", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_UQSD }, + { "vcmpneqsd", 9, TOKEN_INSN, 0, 0, I_VCMPNEQSD }, + { "vcmpnlt_ussd", 12, TOKEN_INSN, 0, 0, I_VCMPNLT_USSD }, + { "vcmpnltsd", 9, TOKEN_INSN, 0, 0, I_VCMPNLTSD }, + { "vcmpnle_ussd", 12, TOKEN_INSN, 0, 0, I_VCMPNLE_USSD }, + { "vcmpnlesd", 9, TOKEN_INSN, 0, 0, I_VCMPNLESD }, + { "vcmpord_qsd", 11, TOKEN_INSN, 0, 0, I_VCMPORD_QSD }, + { "vcmpordsd", 9, TOKEN_INSN, 0, 0, I_VCMPORDSD }, + { "vcmpeq_uqsd", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_UQSD }, + { "vcmpnge_ussd", 12, TOKEN_INSN, 0, 0, I_VCMPNGE_USSD }, + { "vcmpngesd", 9, TOKEN_INSN, 0, 0, I_VCMPNGESD }, + { "vcmpngt_ussd", 12, TOKEN_INSN, 0, 0, I_VCMPNGT_USSD }, + { "vcmpngtsd", 9, TOKEN_INSN, 0, 0, I_VCMPNGTSD }, + { "vcmpfalse_oqsd", 14, TOKEN_INSN, 0, 0, I_VCMPFALSE_OQSD }, + { "vcmpfalsesd", 11, TOKEN_INSN, 0, 0, I_VCMPFALSESD }, + { "vcmpneq_oqsd", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_OQSD }, + { "vcmpge_ossd", 11, TOKEN_INSN, 0, 0, I_VCMPGE_OSSD }, + { "vcmpgesd", 8, TOKEN_INSN, 0, 0, I_VCMPGESD }, + { "vcmpgt_ossd", 11, TOKEN_INSN, 0, 0, I_VCMPGT_OSSD }, + { "vcmpgtsd", 8, TOKEN_INSN, 0, 0, I_VCMPGTSD }, + { "vcmptrue_uqsd", 13, TOKEN_INSN, 0, 0, I_VCMPTRUE_UQSD }, + { "vcmptruesd", 10, TOKEN_INSN, 0, 0, I_VCMPTRUESD }, + { "vcmplt_oqsd", 11, TOKEN_INSN, 0, 0, I_VCMPLT_OQSD }, + { "vcmple_oqsd", 11, TOKEN_INSN, 0, 0, I_VCMPLE_OQSD }, + { "vcmpunord_ssd", 13, TOKEN_INSN, 0, 0, I_VCMPUNORD_SSD }, + { "vcmpneq_ussd", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_USSD }, + { "vcmpnlt_uqsd", 12, TOKEN_INSN, 0, 0, I_VCMPNLT_UQSD }, + { "vcmpnle_uqsd", 12, TOKEN_INSN, 0, 0, I_VCMPNLE_UQSD }, + { "vcmpord_ssd", 11, TOKEN_INSN, 0, 0, I_VCMPORD_SSD }, + { "vcmpeq_ussd", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_USSD }, + { "vcmpnge_uqsd", 12, TOKEN_INSN, 0, 0, I_VCMPNGE_UQSD }, + { "vcmpngt_uqsd", 12, TOKEN_INSN, 0, 0, I_VCMPNGT_UQSD }, + { "vcmpfalse_ossd", 14, TOKEN_INSN, 0, 0, I_VCMPFALSE_OSSD }, + { "vcmpneq_ossd", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_OSSD }, + { "vcmpge_oqsd", 11, TOKEN_INSN, 0, 0, I_VCMPGE_OQSD }, + { "vcmpgt_oqsd", 11, TOKEN_INSN, 0, 0, I_VCMPGT_OQSD }, + { "vcmptrue_ussd", 13, TOKEN_INSN, 0, 0, I_VCMPTRUE_USSD }, + { "vcmpsd", 6, TOKEN_INSN, 0, 0, I_VCMPSD }, + { "vcmpeq_osss", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_OSSS }, + { "vcmpeqss", 8, TOKEN_INSN, 0, 0, I_VCMPEQSS }, + { "vcmplt_osss", 11, TOKEN_INSN, 0, 0, I_VCMPLT_OSSS }, + { "vcmpltss", 8, TOKEN_INSN, 0, 0, I_VCMPLTSS }, + { "vcmple_osss", 11, TOKEN_INSN, 0, 0, I_VCMPLE_OSSS }, + { "vcmpless", 8, TOKEN_INSN, 0, 0, I_VCMPLESS }, + { "vcmpunord_qss", 13, TOKEN_INSN, 0, 0, I_VCMPUNORD_QSS }, + { "vcmpunordss", 11, TOKEN_INSN, 0, 0, I_VCMPUNORDSS }, + { "vcmpneq_uqss", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_UQSS }, + { "vcmpneqss", 9, TOKEN_INSN, 0, 0, I_VCMPNEQSS }, + { "vcmpnlt_usss", 12, TOKEN_INSN, 0, 0, I_VCMPNLT_USSS }, + { "vcmpnltss", 9, TOKEN_INSN, 0, 0, I_VCMPNLTSS }, + { "vcmpnle_usss", 12, TOKEN_INSN, 0, 0, I_VCMPNLE_USSS }, + { "vcmpnless", 9, TOKEN_INSN, 0, 0, I_VCMPNLESS }, + { "vcmpord_qss", 11, TOKEN_INSN, 0, 0, I_VCMPORD_QSS }, + { "vcmpordss", 9, TOKEN_INSN, 0, 0, I_VCMPORDSS }, + { "vcmpeq_uqss", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_UQSS }, + { "vcmpnge_usss", 12, TOKEN_INSN, 0, 0, I_VCMPNGE_USSS }, + { "vcmpngess", 9, TOKEN_INSN, 0, 0, I_VCMPNGESS }, + { "vcmpngt_usss", 12, TOKEN_INSN, 0, 0, I_VCMPNGT_USSS }, + { "vcmpngtss", 9, TOKEN_INSN, 0, 0, I_VCMPNGTSS }, + { "vcmpfalse_oqss", 14, TOKEN_INSN, 0, 0, I_VCMPFALSE_OQSS }, + { "vcmpfalsess", 11, TOKEN_INSN, 0, 0, I_VCMPFALSESS }, + { "vcmpneq_oqss", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_OQSS }, + { "vcmpge_osss", 11, TOKEN_INSN, 0, 0, I_VCMPGE_OSSS }, + { "vcmpgess", 8, TOKEN_INSN, 0, 0, I_VCMPGESS }, + { "vcmpgt_osss", 11, TOKEN_INSN, 0, 0, I_VCMPGT_OSSS }, + { "vcmpgtss", 8, TOKEN_INSN, 0, 0, I_VCMPGTSS }, + { "vcmptrue_uqss", 13, TOKEN_INSN, 0, 0, I_VCMPTRUE_UQSS }, + { "vcmptruess", 10, TOKEN_INSN, 0, 0, I_VCMPTRUESS }, + { "vcmplt_oqss", 11, TOKEN_INSN, 0, 0, I_VCMPLT_OQSS }, + { "vcmple_oqss", 11, TOKEN_INSN, 0, 0, I_VCMPLE_OQSS }, + { "vcmpunord_sss", 13, TOKEN_INSN, 0, 0, I_VCMPUNORD_SSS }, + { "vcmpneq_usss", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_USSS }, + { "vcmpnlt_uqss", 12, TOKEN_INSN, 0, 0, I_VCMPNLT_UQSS }, + { "vcmpnle_uqss", 12, TOKEN_INSN, 0, 0, I_VCMPNLE_UQSS }, + { "vcmpord_sss", 11, TOKEN_INSN, 0, 0, I_VCMPORD_SSS }, + { "vcmpeq_usss", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_USSS }, + { "vcmpnge_uqss", 12, TOKEN_INSN, 0, 0, I_VCMPNGE_UQSS }, + { "vcmpngt_uqss", 12, TOKEN_INSN, 0, 0, I_VCMPNGT_UQSS }, + { "vcmpfalse_osss", 14, TOKEN_INSN, 0, 0, I_VCMPFALSE_OSSS }, + { "vcmpneq_osss", 12, TOKEN_INSN, 0, 0, I_VCMPNEQ_OSSS }, + { "vcmpge_oqss", 11, TOKEN_INSN, 0, 0, I_VCMPGE_OQSS }, + { "vcmpgt_oqss", 11, TOKEN_INSN, 0, 0, I_VCMPGT_OQSS }, + { "vcmptrue_usss", 13, TOKEN_INSN, 0, 0, I_VCMPTRUE_USSS }, + { "vcmpss", 6, TOKEN_INSN, 0, 0, I_VCMPSS }, + { "vcomisd", 7, TOKEN_INSN, 0, 0, I_VCOMISD }, + { "vcomiss", 7, TOKEN_INSN, 0, 0, I_VCOMISS }, + { "vcvtdq2pd", 9, TOKEN_INSN, 0, 0, I_VCVTDQ2PD }, + { "vcvtdq2ps", 9, TOKEN_INSN, 0, 0, I_VCVTDQ2PS }, + { "vcvtpd2dq", 9, TOKEN_INSN, 0, 0, I_VCVTPD2DQ }, + { "vcvtpd2ps", 9, TOKEN_INSN, 0, 0, I_VCVTPD2PS }, + { "vcvtps2dq", 9, TOKEN_INSN, 0, 0, I_VCVTPS2DQ }, + { "vcvtps2pd", 9, TOKEN_INSN, 0, 0, I_VCVTPS2PD }, + { "vcvtsd2si", 9, TOKEN_INSN, 0, 0, I_VCVTSD2SI }, + { "vcvtsd2ss", 9, TOKEN_INSN, 0, 0, I_VCVTSD2SS }, + { "vcvtsi2sd", 9, TOKEN_INSN, 0, 0, I_VCVTSI2SD }, + { "vcvtsi2ss", 9, TOKEN_INSN, 0, 0, I_VCVTSI2SS }, + { "vcvtss2sd", 9, TOKEN_INSN, 0, 0, I_VCVTSS2SD }, + { "vcvtss2si", 9, TOKEN_INSN, 0, 0, I_VCVTSS2SI }, + { "vcvttpd2dq", 10, TOKEN_INSN, 0, 0, I_VCVTTPD2DQ }, + { "vcvttps2dq", 10, TOKEN_INSN, 0, 0, I_VCVTTPS2DQ }, + { "vcvttsd2si", 10, TOKEN_INSN, 0, 0, I_VCVTTSD2SI }, + { "vcvttss2si", 10, TOKEN_INSN, 0, 0, I_VCVTTSS2SI }, + { "vdivpd", 6, TOKEN_INSN, 0, 0, I_VDIVPD }, + { "vdivps", 6, TOKEN_INSN, 0, 0, I_VDIVPS }, + { "vdivsd", 6, TOKEN_INSN, 0, 0, I_VDIVSD }, + { "vdivss", 6, TOKEN_INSN, 0, 0, I_VDIVSS }, + { "vdppd", 5, TOKEN_INSN, 0, 0, I_VDPPD }, + { "vdpps", 5, TOKEN_INSN, 0, 0, I_VDPPS }, + { "vextractf128", 12, TOKEN_INSN, 0, 0, I_VEXTRACTF128 }, + { "vextractps", 10, TOKEN_INSN, 0, 0, I_VEXTRACTPS }, + { "vhaddpd", 7, TOKEN_INSN, 0, 0, I_VHADDPD }, + { "vhaddps", 7, TOKEN_INSN, 0, 0, I_VHADDPS }, + { "vhsubpd", 7, TOKEN_INSN, 0, 0, I_VHSUBPD }, + { "vhsubps", 7, TOKEN_INSN, 0, 0, I_VHSUBPS }, + { "vinsertf128", 11, TOKEN_INSN, 0, 0, I_VINSERTF128 }, + { "vinsertps", 9, TOKEN_INSN, 0, 0, I_VINSERTPS }, + { "vlddqu", 6, TOKEN_INSN, 0, 0, I_VLDDQU }, + { "vldqqu", 6, TOKEN_INSN, 0, 0, I_VLDQQU }, + { "vldmxcsr", 8, TOKEN_INSN, 0, 0, I_VLDMXCSR }, + { "vmaskmovdqu", 11, TOKEN_INSN, 0, 0, I_VMASKMOVDQU }, + { "vmaskmovps", 10, TOKEN_INSN, 0, 0, I_VMASKMOVPS }, + { "vmaskmovpd", 10, TOKEN_INSN, 0, 0, I_VMASKMOVPD }, + { "vmaxpd", 6, TOKEN_INSN, 0, 0, I_VMAXPD }, + { "vmaxps", 6, TOKEN_INSN, 0, 0, I_VMAXPS }, + { "vmaxsd", 6, TOKEN_INSN, 0, 0, I_VMAXSD }, + { "vmaxss", 6, TOKEN_INSN, 0, 0, I_VMAXSS }, + { "vminpd", 6, TOKEN_INSN, 0, 0, I_VMINPD }, + { "vminps", 6, TOKEN_INSN, 0, 0, I_VMINPS }, + { "vminsd", 6, TOKEN_INSN, 0, 0, I_VMINSD }, + { "vminss", 6, TOKEN_INSN, 0, 0, I_VMINSS }, + { "vmovapd", 7, TOKEN_INSN, 0, 0, I_VMOVAPD }, + { "vmovaps", 7, TOKEN_INSN, 0, 0, I_VMOVAPS }, + { "vmovd", 5, TOKEN_INSN, 0, 0, I_VMOVD }, + { "vmovq", 5, TOKEN_INSN, 0, 0, I_VMOVQ }, + { "vmovddup", 8, TOKEN_INSN, 0, 0, I_VMOVDDUP }, + { "vmovdqa", 7, TOKEN_INSN, 0, 0, I_VMOVDQA }, + { "vmovqqa", 7, TOKEN_INSN, 0, 0, I_VMOVQQA }, + { "vmovdqu", 7, TOKEN_INSN, 0, 0, I_VMOVDQU }, + { "vmovqqu", 7, TOKEN_INSN, 0, 0, I_VMOVQQU }, + { "vmovhlps", 8, TOKEN_INSN, 0, 0, I_VMOVHLPS }, + { "vmovhpd", 7, TOKEN_INSN, 0, 0, I_VMOVHPD }, + { "vmovhps", 7, TOKEN_INSN, 0, 0, I_VMOVHPS }, + { "vmovlhps", 8, TOKEN_INSN, 0, 0, I_VMOVLHPS }, + { "vmovlpd", 7, TOKEN_INSN, 0, 0, I_VMOVLPD }, + { "vmovlps", 7, TOKEN_INSN, 0, 0, I_VMOVLPS }, + { "vmovmskpd", 9, TOKEN_INSN, 0, 0, I_VMOVMSKPD }, + { "vmovmskps", 9, TOKEN_INSN, 0, 0, I_VMOVMSKPS }, + { "vmovntdq", 8, TOKEN_INSN, 0, 0, I_VMOVNTDQ }, + { "vmovntqq", 8, TOKEN_INSN, 0, 0, I_VMOVNTQQ }, + { "vmovntdqa", 9, TOKEN_INSN, 0, 0, I_VMOVNTDQA }, + { "vmovntpd", 8, TOKEN_INSN, 0, 0, I_VMOVNTPD }, + { "vmovntps", 8, TOKEN_INSN, 0, 0, I_VMOVNTPS }, + { "vmovsd", 6, TOKEN_INSN, 0, 0, I_VMOVSD }, + { "vmovshdup", 9, TOKEN_INSN, 0, 0, I_VMOVSHDUP }, + { "vmovsldup", 9, TOKEN_INSN, 0, 0, I_VMOVSLDUP }, + { "vmovss", 6, TOKEN_INSN, 0, 0, I_VMOVSS }, + { "vmovupd", 7, TOKEN_INSN, 0, 0, I_VMOVUPD }, + { "vmovups", 7, TOKEN_INSN, 0, 0, I_VMOVUPS }, + { "vmpsadbw", 8, TOKEN_INSN, 0, 0, I_VMPSADBW }, + { "vmulpd", 6, TOKEN_INSN, 0, 0, I_VMULPD }, + { "vmulps", 6, TOKEN_INSN, 0, 0, I_VMULPS }, + { "vmulsd", 6, TOKEN_INSN, 0, 0, I_VMULSD }, + { "vmulss", 6, TOKEN_INSN, 0, 0, I_VMULSS }, + { "vorpd", 5, TOKEN_INSN, 0, 0, I_VORPD }, + { "vorps", 5, TOKEN_INSN, 0, 0, I_VORPS }, + { "vpabsb", 6, TOKEN_INSN, 0, 0, I_VPABSB }, + { "vpabsw", 6, TOKEN_INSN, 0, 0, I_VPABSW }, + { "vpabsd", 6, TOKEN_INSN, 0, 0, I_VPABSD }, + { "vpacksswb", 9, TOKEN_INSN, 0, 0, I_VPACKSSWB }, + { "vpackssdw", 9, TOKEN_INSN, 0, 0, I_VPACKSSDW }, + { "vpackuswb", 9, TOKEN_INSN, 0, 0, I_VPACKUSWB }, + { "vpackusdw", 9, TOKEN_INSN, 0, 0, I_VPACKUSDW }, + { "vpaddb", 6, TOKEN_INSN, 0, 0, I_VPADDB }, + { "vpaddw", 6, TOKEN_INSN, 0, 0, I_VPADDW }, + { "vpaddd", 6, TOKEN_INSN, 0, 0, I_VPADDD }, + { "vpaddq", 6, TOKEN_INSN, 0, 0, I_VPADDQ }, + { "vpaddsb", 7, TOKEN_INSN, 0, 0, I_VPADDSB }, + { "vpaddsw", 7, TOKEN_INSN, 0, 0, I_VPADDSW }, + { "vpaddusb", 8, TOKEN_INSN, 0, 0, I_VPADDUSB }, + { "vpaddusw", 8, TOKEN_INSN, 0, 0, I_VPADDUSW }, + { "vpalignr", 8, TOKEN_INSN, 0, 0, I_VPALIGNR }, + { "vpand", 5, TOKEN_INSN, 0, 0, I_VPAND }, + { "vpandn", 6, TOKEN_INSN, 0, 0, I_VPANDN }, + { "vpavgb", 6, TOKEN_INSN, 0, 0, I_VPAVGB }, + { "vpavgw", 6, TOKEN_INSN, 0, 0, I_VPAVGW }, + { "vpblendvb", 9, TOKEN_INSN, 0, 0, I_VPBLENDVB }, + { "vpblendw", 8, TOKEN_INSN, 0, 0, I_VPBLENDW }, + { "vpcmpestri", 10, TOKEN_INSN, 0, 0, I_VPCMPESTRI }, + { "vpcmpestrm", 10, TOKEN_INSN, 0, 0, I_VPCMPESTRM }, + { "vpcmpistri", 10, TOKEN_INSN, 0, 0, I_VPCMPISTRI }, + { "vpcmpistrm", 10, TOKEN_INSN, 0, 0, I_VPCMPISTRM }, + { "vpcmpeqb", 8, TOKEN_INSN, 0, 0, I_VPCMPEQB }, + { "vpcmpeqw", 8, TOKEN_INSN, 0, 0, I_VPCMPEQW }, + { "vpcmpeqd", 8, TOKEN_INSN, 0, 0, I_VPCMPEQD }, + { "vpcmpeqq", 8, TOKEN_INSN, 0, 0, I_VPCMPEQQ }, + { "vpcmpgtb", 8, TOKEN_INSN, 0, 0, I_VPCMPGTB }, + { "vpcmpgtw", 8, TOKEN_INSN, 0, 0, I_VPCMPGTW }, + { "vpcmpgtd", 8, TOKEN_INSN, 0, 0, I_VPCMPGTD }, + { "vpcmpgtq", 8, TOKEN_INSN, 0, 0, I_VPCMPGTQ }, + { "vpermilpd", 9, TOKEN_INSN, 0, 0, I_VPERMILPD }, + { "vpermilps", 9, TOKEN_INSN, 0, 0, I_VPERMILPS }, + { "vperm2f128", 10, TOKEN_INSN, 0, 0, I_VPERM2F128 }, + { "vpextrb", 7, TOKEN_INSN, 0, 0, I_VPEXTRB }, + { "vpextrw", 7, TOKEN_INSN, 0, 0, I_VPEXTRW }, + { "vpextrd", 7, TOKEN_INSN, 0, 0, I_VPEXTRD }, + { "vpextrq", 7, TOKEN_INSN, 0, 0, I_VPEXTRQ }, + { "vphaddw", 7, TOKEN_INSN, 0, 0, I_VPHADDW }, + { "vphaddd", 7, TOKEN_INSN, 0, 0, I_VPHADDD }, + { "vphaddsw", 8, TOKEN_INSN, 0, 0, I_VPHADDSW }, + { "vphminposuw", 11, TOKEN_INSN, 0, 0, I_VPHMINPOSUW }, + { "vphsubw", 7, TOKEN_INSN, 0, 0, I_VPHSUBW }, + { "vphsubd", 7, TOKEN_INSN, 0, 0, I_VPHSUBD }, + { "vphsubsw", 8, TOKEN_INSN, 0, 0, I_VPHSUBSW }, + { "vpinsrb", 7, TOKEN_INSN, 0, 0, I_VPINSRB }, + { "vpinsrw", 7, TOKEN_INSN, 0, 0, I_VPINSRW }, + { "vpinsrd", 7, TOKEN_INSN, 0, 0, I_VPINSRD }, + { "vpinsrq", 7, TOKEN_INSN, 0, 0, I_VPINSRQ }, + { "vpmaddwd", 8, TOKEN_INSN, 0, 0, I_VPMADDWD }, + { "vpmaddubsw", 10, TOKEN_INSN, 0, 0, I_VPMADDUBSW }, + { "vpmaxsb", 7, TOKEN_INSN, 0, 0, I_VPMAXSB }, + { "vpmaxsw", 7, TOKEN_INSN, 0, 0, I_VPMAXSW }, + { "vpmaxsd", 7, TOKEN_INSN, 0, 0, I_VPMAXSD }, + { "vpmaxub", 7, TOKEN_INSN, 0, 0, I_VPMAXUB }, + { "vpmaxuw", 7, TOKEN_INSN, 0, 0, I_VPMAXUW }, + { "vpmaxud", 7, TOKEN_INSN, 0, 0, I_VPMAXUD }, + { "vpminsb", 7, TOKEN_INSN, 0, 0, I_VPMINSB }, + { "vpminsw", 7, TOKEN_INSN, 0, 0, I_VPMINSW }, + { "vpminsd", 7, TOKEN_INSN, 0, 0, I_VPMINSD }, + { "vpminub", 7, TOKEN_INSN, 0, 0, I_VPMINUB }, + { "vpminuw", 7, TOKEN_INSN, 0, 0, I_VPMINUW }, + { "vpminud", 7, TOKEN_INSN, 0, 0, I_VPMINUD }, + { "vpmovmskb", 9, TOKEN_INSN, 0, 0, I_VPMOVMSKB }, + { "vpmovsxbw", 9, TOKEN_INSN, 0, 0, I_VPMOVSXBW }, + { "vpmovsxbd", 9, TOKEN_INSN, 0, 0, I_VPMOVSXBD }, + { "vpmovsxbq", 9, TOKEN_INSN, 0, 0, I_VPMOVSXBQ }, + { "vpmovsxwd", 9, TOKEN_INSN, 0, 0, I_VPMOVSXWD }, + { "vpmovsxwq", 9, TOKEN_INSN, 0, 0, I_VPMOVSXWQ }, + { "vpmovsxdq", 9, TOKEN_INSN, 0, 0, I_VPMOVSXDQ }, + { "vpmovzxbw", 9, TOKEN_INSN, 0, 0, I_VPMOVZXBW }, + { "vpmovzxbd", 9, TOKEN_INSN, 0, 0, I_VPMOVZXBD }, + { "vpmovzxbq", 9, TOKEN_INSN, 0, 0, I_VPMOVZXBQ }, + { "vpmovzxwd", 9, TOKEN_INSN, 0, 0, I_VPMOVZXWD }, + { "vpmovzxwq", 9, TOKEN_INSN, 0, 0, I_VPMOVZXWQ }, + { "vpmovzxdq", 9, TOKEN_INSN, 0, 0, I_VPMOVZXDQ }, + { "vpmulhuw", 8, TOKEN_INSN, 0, 0, I_VPMULHUW }, + { "vpmulhrsw", 9, TOKEN_INSN, 0, 0, I_VPMULHRSW }, + { "vpmulhw", 7, TOKEN_INSN, 0, 0, I_VPMULHW }, + { "vpmullw", 7, TOKEN_INSN, 0, 0, I_VPMULLW }, + { "vpmulld", 7, TOKEN_INSN, 0, 0, I_VPMULLD }, + { "vpmuludq", 8, TOKEN_INSN, 0, 0, I_VPMULUDQ }, + { "vpmuldq", 7, TOKEN_INSN, 0, 0, I_VPMULDQ }, + { "vpor", 4, TOKEN_INSN, 0, 0, I_VPOR }, + { "vpsadbw", 7, TOKEN_INSN, 0, 0, I_VPSADBW }, + { "vpshufb", 7, TOKEN_INSN, 0, 0, I_VPSHUFB }, + { "vpshufd", 7, TOKEN_INSN, 0, 0, I_VPSHUFD }, + { "vpshufhw", 8, TOKEN_INSN, 0, 0, I_VPSHUFHW }, + { "vpshuflw", 8, TOKEN_INSN, 0, 0, I_VPSHUFLW }, + { "vpsignb", 7, TOKEN_INSN, 0, 0, I_VPSIGNB }, + { "vpsignw", 7, TOKEN_INSN, 0, 0, I_VPSIGNW }, + { "vpsignd", 7, TOKEN_INSN, 0, 0, I_VPSIGND }, + { "vpslldq", 7, TOKEN_INSN, 0, 0, I_VPSLLDQ }, + { "vpsrldq", 7, TOKEN_INSN, 0, 0, I_VPSRLDQ }, + { "vpsllw", 6, TOKEN_INSN, 0, 0, I_VPSLLW }, + { "vpslld", 6, TOKEN_INSN, 0, 0, I_VPSLLD }, + { "vpsllq", 6, TOKEN_INSN, 0, 0, I_VPSLLQ }, + { "vpsraw", 6, TOKEN_INSN, 0, 0, I_VPSRAW }, + { "vpsrad", 6, TOKEN_INSN, 0, 0, I_VPSRAD }, + { "vpsrlw", 6, TOKEN_INSN, 0, 0, I_VPSRLW }, + { "vpsrld", 6, TOKEN_INSN, 0, 0, I_VPSRLD }, + { "vpsrlq", 6, TOKEN_INSN, 0, 0, I_VPSRLQ }, + { "vptest", 6, TOKEN_INSN, 0, 0, I_VPTEST }, + { "vpsubb", 6, TOKEN_INSN, 0, 0, I_VPSUBB }, + { "vpsubw", 6, TOKEN_INSN, 0, 0, I_VPSUBW }, + { "vpsubd", 6, TOKEN_INSN, 0, 0, I_VPSUBD }, + { "vpsubq", 6, TOKEN_INSN, 0, 0, I_VPSUBQ }, + { "vpsubsb", 7, TOKEN_INSN, 0, 0, I_VPSUBSB }, + { "vpsubsw", 7, TOKEN_INSN, 0, 0, I_VPSUBSW }, + { "vpsubusb", 8, TOKEN_INSN, 0, 0, I_VPSUBUSB }, + { "vpsubusw", 8, TOKEN_INSN, 0, 0, I_VPSUBUSW }, + { "vpunpckhbw", 10, TOKEN_INSN, 0, 0, I_VPUNPCKHBW }, + { "vpunpckhwd", 10, TOKEN_INSN, 0, 0, I_VPUNPCKHWD }, + { "vpunpckhdq", 10, TOKEN_INSN, 0, 0, I_VPUNPCKHDQ }, + { "vpunpckhqdq", 11, TOKEN_INSN, 0, 0, I_VPUNPCKHQDQ }, + { "vpunpcklbw", 10, TOKEN_INSN, 0, 0, I_VPUNPCKLBW }, + { "vpunpcklwd", 10, TOKEN_INSN, 0, 0, I_VPUNPCKLWD }, + { "vpunpckldq", 10, TOKEN_INSN, 0, 0, I_VPUNPCKLDQ }, + { "vpunpcklqdq", 11, TOKEN_INSN, 0, 0, I_VPUNPCKLQDQ }, + { "vpxor", 5, TOKEN_INSN, 0, 0, I_VPXOR }, + { "vrcpps", 6, TOKEN_INSN, 0, 0, I_VRCPPS }, + { "vrcpss", 6, TOKEN_INSN, 0, 0, I_VRCPSS }, + { "vrsqrtps", 8, TOKEN_INSN, 0, 0, I_VRSQRTPS }, + { "vrsqrtss", 8, TOKEN_INSN, 0, 0, I_VRSQRTSS }, + { "vroundpd", 8, TOKEN_INSN, 0, 0, I_VROUNDPD }, + { "vroundps", 8, TOKEN_INSN, 0, 0, I_VROUNDPS }, + { "vroundsd", 8, TOKEN_INSN, 0, 0, I_VROUNDSD }, + { "vroundss", 8, TOKEN_INSN, 0, 0, I_VROUNDSS }, + { "vshufpd", 7, TOKEN_INSN, 0, 0, I_VSHUFPD }, + { "vshufps", 7, TOKEN_INSN, 0, 0, I_VSHUFPS }, + { "vsqrtpd", 7, TOKEN_INSN, 0, 0, I_VSQRTPD }, + { "vsqrtps", 7, TOKEN_INSN, 0, 0, I_VSQRTPS }, + { "vsqrtsd", 7, TOKEN_INSN, 0, 0, I_VSQRTSD }, + { "vsqrtss", 7, TOKEN_INSN, 0, 0, I_VSQRTSS }, + { "vstmxcsr", 8, TOKEN_INSN, 0, 0, I_VSTMXCSR }, + { "vsubpd", 6, TOKEN_INSN, 0, 0, I_VSUBPD }, + { "vsubps", 6, TOKEN_INSN, 0, 0, I_VSUBPS }, + { "vsubsd", 6, TOKEN_INSN, 0, 0, I_VSUBSD }, + { "vsubss", 6, TOKEN_INSN, 0, 0, I_VSUBSS }, + { "vtestps", 7, TOKEN_INSN, 0, 0, I_VTESTPS }, + { "vtestpd", 7, TOKEN_INSN, 0, 0, I_VTESTPD }, + { "vucomisd", 8, TOKEN_INSN, 0, 0, I_VUCOMISD }, + { "vucomiss", 8, TOKEN_INSN, 0, 0, I_VUCOMISS }, + { "vunpckhpd", 9, TOKEN_INSN, 0, 0, I_VUNPCKHPD }, + { "vunpckhps", 9, TOKEN_INSN, 0, 0, I_VUNPCKHPS }, + { "vunpcklpd", 9, TOKEN_INSN, 0, 0, I_VUNPCKLPD }, + { "vunpcklps", 9, TOKEN_INSN, 0, 0, I_VUNPCKLPS }, + { "vxorpd", 6, TOKEN_INSN, 0, 0, I_VXORPD }, + { "vxorps", 6, TOKEN_INSN, 0, 0, I_VXORPS }, + { "vzeroall", 8, TOKEN_INSN, 0, 0, I_VZEROALL }, + { "vzeroupper", 10, TOKEN_INSN, 0, 0, I_VZEROUPPER }, + { "pclmullqlqdq", 12, TOKEN_INSN, 0, 0, I_PCLMULLQLQDQ }, + { "pclmulhqlqdq", 12, TOKEN_INSN, 0, 0, I_PCLMULHQLQDQ }, + { "pclmullqhqdq", 12, TOKEN_INSN, 0, 0, I_PCLMULLQHQDQ }, + { "pclmulhqhqdq", 12, TOKEN_INSN, 0, 0, I_PCLMULHQHQDQ }, + { "pclmulqdq", 9, TOKEN_INSN, 0, 0, I_PCLMULQDQ }, + { "vpclmullqlqdq", 13, TOKEN_INSN, 0, 0, I_VPCLMULLQLQDQ }, + { "vpclmulhqlqdq", 13, TOKEN_INSN, 0, 0, I_VPCLMULHQLQDQ }, + { "vpclmullqhqdq", 13, TOKEN_INSN, 0, 0, I_VPCLMULLQHQDQ }, + { "vpclmulhqhqdq", 13, TOKEN_INSN, 0, 0, I_VPCLMULHQHQDQ }, + { "vpclmulqdq", 10, TOKEN_INSN, 0, 0, I_VPCLMULQDQ }, + { "vfmadd132ps", 11, TOKEN_INSN, 0, 0, I_VFMADD132PS }, + { "vfmadd132pd", 11, TOKEN_INSN, 0, 0, I_VFMADD132PD }, + { "vfmadd312ps", 11, TOKEN_INSN, 0, 0, I_VFMADD312PS }, + { "vfmadd312pd", 11, TOKEN_INSN, 0, 0, I_VFMADD312PD }, + { "vfmadd213ps", 11, TOKEN_INSN, 0, 0, I_VFMADD213PS }, + { "vfmadd213pd", 11, TOKEN_INSN, 0, 0, I_VFMADD213PD }, + { "vfmadd123ps", 11, TOKEN_INSN, 0, 0, I_VFMADD123PS }, + { "vfmadd123pd", 11, TOKEN_INSN, 0, 0, I_VFMADD123PD }, + { "vfmadd231ps", 11, TOKEN_INSN, 0, 0, I_VFMADD231PS }, + { "vfmadd231pd", 11, TOKEN_INSN, 0, 0, I_VFMADD231PD }, + { "vfmadd321ps", 11, TOKEN_INSN, 0, 0, I_VFMADD321PS }, + { "vfmadd321pd", 11, TOKEN_INSN, 0, 0, I_VFMADD321PD }, + { "vfmaddsub132ps", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB132PS }, + { "vfmaddsub132pd", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB132PD }, + { "vfmaddsub312ps", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB312PS }, + { "vfmaddsub312pd", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB312PD }, + { "vfmaddsub213ps", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB213PS }, + { "vfmaddsub213pd", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB213PD }, + { "vfmaddsub123ps", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB123PS }, + { "vfmaddsub123pd", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB123PD }, + { "vfmaddsub231ps", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB231PS }, + { "vfmaddsub231pd", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB231PD }, + { "vfmaddsub321ps", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB321PS }, + { "vfmaddsub321pd", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB321PD }, + { "vfmsub132ps", 11, TOKEN_INSN, 0, 0, I_VFMSUB132PS }, + { "vfmsub132pd", 11, TOKEN_INSN, 0, 0, I_VFMSUB132PD }, + { "vfmsub312ps", 11, TOKEN_INSN, 0, 0, I_VFMSUB312PS }, + { "vfmsub312pd", 11, TOKEN_INSN, 0, 0, I_VFMSUB312PD }, + { "vfmsub213ps", 11, TOKEN_INSN, 0, 0, I_VFMSUB213PS }, + { "vfmsub213pd", 11, TOKEN_INSN, 0, 0, I_VFMSUB213PD }, + { "vfmsub123ps", 11, TOKEN_INSN, 0, 0, I_VFMSUB123PS }, + { "vfmsub123pd", 11, TOKEN_INSN, 0, 0, I_VFMSUB123PD }, + { "vfmsub231ps", 11, TOKEN_INSN, 0, 0, I_VFMSUB231PS }, + { "vfmsub231pd", 11, TOKEN_INSN, 0, 0, I_VFMSUB231PD }, + { "vfmsub321ps", 11, TOKEN_INSN, 0, 0, I_VFMSUB321PS }, + { "vfmsub321pd", 11, TOKEN_INSN, 0, 0, I_VFMSUB321PD }, + { "vfmsubadd132ps", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD132PS }, + { "vfmsubadd132pd", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD132PD }, + { "vfmsubadd312ps", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD312PS }, + { "vfmsubadd312pd", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD312PD }, + { "vfmsubadd213ps", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD213PS }, + { "vfmsubadd213pd", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD213PD }, + { "vfmsubadd123ps", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD123PS }, + { "vfmsubadd123pd", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD123PD }, + { "vfmsubadd231ps", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD231PS }, + { "vfmsubadd231pd", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD231PD }, + { "vfmsubadd321ps", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD321PS }, + { "vfmsubadd321pd", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD321PD }, + { "vfnmadd132ps", 12, TOKEN_INSN, 0, 0, I_VFNMADD132PS }, + { "vfnmadd132pd", 12, TOKEN_INSN, 0, 0, I_VFNMADD132PD }, + { "vfnmadd312ps", 12, TOKEN_INSN, 0, 0, I_VFNMADD312PS }, + { "vfnmadd312pd", 12, TOKEN_INSN, 0, 0, I_VFNMADD312PD }, + { "vfnmadd213ps", 12, TOKEN_INSN, 0, 0, I_VFNMADD213PS }, + { "vfnmadd213pd", 12, TOKEN_INSN, 0, 0, I_VFNMADD213PD }, + { "vfnmadd123ps", 12, TOKEN_INSN, 0, 0, I_VFNMADD123PS }, + { "vfnmadd123pd", 12, TOKEN_INSN, 0, 0, I_VFNMADD123PD }, + { "vfnmadd231ps", 12, TOKEN_INSN, 0, 0, I_VFNMADD231PS }, + { "vfnmadd231pd", 12, TOKEN_INSN, 0, 0, I_VFNMADD231PD }, + { "vfnmadd321ps", 12, TOKEN_INSN, 0, 0, I_VFNMADD321PS }, + { "vfnmadd321pd", 12, TOKEN_INSN, 0, 0, I_VFNMADD321PD }, + { "vfnmsub132ps", 12, TOKEN_INSN, 0, 0, I_VFNMSUB132PS }, + { "vfnmsub132pd", 12, TOKEN_INSN, 0, 0, I_VFNMSUB132PD }, + { "vfnmsub312ps", 12, TOKEN_INSN, 0, 0, I_VFNMSUB312PS }, + { "vfnmsub312pd", 12, TOKEN_INSN, 0, 0, I_VFNMSUB312PD }, + { "vfnmsub213ps", 12, TOKEN_INSN, 0, 0, I_VFNMSUB213PS }, + { "vfnmsub213pd", 12, TOKEN_INSN, 0, 0, I_VFNMSUB213PD }, + { "vfnmsub123ps", 12, TOKEN_INSN, 0, 0, I_VFNMSUB123PS }, + { "vfnmsub123pd", 12, TOKEN_INSN, 0, 0, I_VFNMSUB123PD }, + { "vfnmsub231ps", 12, TOKEN_INSN, 0, 0, I_VFNMSUB231PS }, + { "vfnmsub231pd", 12, TOKEN_INSN, 0, 0, I_VFNMSUB231PD }, + { "vfnmsub321ps", 12, TOKEN_INSN, 0, 0, I_VFNMSUB321PS }, + { "vfnmsub321pd", 12, TOKEN_INSN, 0, 0, I_VFNMSUB321PD }, + { "vfmadd132ss", 11, TOKEN_INSN, 0, 0, I_VFMADD132SS }, + { "vfmadd132sd", 11, TOKEN_INSN, 0, 0, I_VFMADD132SD }, + { "vfmadd312ss", 11, TOKEN_INSN, 0, 0, I_VFMADD312SS }, + { "vfmadd312sd", 11, TOKEN_INSN, 0, 0, I_VFMADD312SD }, + { "vfmadd213ss", 11, TOKEN_INSN, 0, 0, I_VFMADD213SS }, + { "vfmadd213sd", 11, TOKEN_INSN, 0, 0, I_VFMADD213SD }, + { "vfmadd123ss", 11, TOKEN_INSN, 0, 0, I_VFMADD123SS }, + { "vfmadd123sd", 11, TOKEN_INSN, 0, 0, I_VFMADD123SD }, + { "vfmadd231ss", 11, TOKEN_INSN, 0, 0, I_VFMADD231SS }, + { "vfmadd231sd", 11, TOKEN_INSN, 0, 0, I_VFMADD231SD }, + { "vfmadd321ss", 11, TOKEN_INSN, 0, 0, I_VFMADD321SS }, + { "vfmadd321sd", 11, TOKEN_INSN, 0, 0, I_VFMADD321SD }, + { "vfmsub132ss", 11, TOKEN_INSN, 0, 0, I_VFMSUB132SS }, + { "vfmsub132sd", 11, TOKEN_INSN, 0, 0, I_VFMSUB132SD }, + { "vfmsub312ss", 11, TOKEN_INSN, 0, 0, I_VFMSUB312SS }, + { "vfmsub312sd", 11, TOKEN_INSN, 0, 0, I_VFMSUB312SD }, + { "vfmsub213ss", 11, TOKEN_INSN, 0, 0, I_VFMSUB213SS }, + { "vfmsub213sd", 11, TOKEN_INSN, 0, 0, I_VFMSUB213SD }, + { "vfmsub123ss", 11, TOKEN_INSN, 0, 0, I_VFMSUB123SS }, + { "vfmsub123sd", 11, TOKEN_INSN, 0, 0, I_VFMSUB123SD }, + { "vfmsub231ss", 11, TOKEN_INSN, 0, 0, I_VFMSUB231SS }, + { "vfmsub231sd", 11, TOKEN_INSN, 0, 0, I_VFMSUB231SD }, + { "vfmsub321ss", 11, TOKEN_INSN, 0, 0, I_VFMSUB321SS }, + { "vfmsub321sd", 11, TOKEN_INSN, 0, 0, I_VFMSUB321SD }, + { "vfnmadd132ss", 12, TOKEN_INSN, 0, 0, I_VFNMADD132SS }, + { "vfnmadd132sd", 12, TOKEN_INSN, 0, 0, I_VFNMADD132SD }, + { "vfnmadd312ss", 12, TOKEN_INSN, 0, 0, I_VFNMADD312SS }, + { "vfnmadd312sd", 12, TOKEN_INSN, 0, 0, I_VFNMADD312SD }, + { "vfnmadd213ss", 12, TOKEN_INSN, 0, 0, I_VFNMADD213SS }, + { "vfnmadd213sd", 12, TOKEN_INSN, 0, 0, I_VFNMADD213SD }, + { "vfnmadd123ss", 12, TOKEN_INSN, 0, 0, I_VFNMADD123SS }, + { "vfnmadd123sd", 12, TOKEN_INSN, 0, 0, I_VFNMADD123SD }, + { "vfnmadd231ss", 12, TOKEN_INSN, 0, 0, I_VFNMADD231SS }, + { "vfnmadd231sd", 12, TOKEN_INSN, 0, 0, I_VFNMADD231SD }, + { "vfnmadd321ss", 12, TOKEN_INSN, 0, 0, I_VFNMADD321SS }, + { "vfnmadd321sd", 12, TOKEN_INSN, 0, 0, I_VFNMADD321SD }, + { "vfnmsub132ss", 12, TOKEN_INSN, 0, 0, I_VFNMSUB132SS }, + { "vfnmsub132sd", 12, TOKEN_INSN, 0, 0, I_VFNMSUB132SD }, + { "vfnmsub312ss", 12, TOKEN_INSN, 0, 0, I_VFNMSUB312SS }, + { "vfnmsub312sd", 12, TOKEN_INSN, 0, 0, I_VFNMSUB312SD }, + { "vfnmsub213ss", 12, TOKEN_INSN, 0, 0, I_VFNMSUB213SS }, + { "vfnmsub213sd", 12, TOKEN_INSN, 0, 0, I_VFNMSUB213SD }, + { "vfnmsub123ss", 12, TOKEN_INSN, 0, 0, I_VFNMSUB123SS }, + { "vfnmsub123sd", 12, TOKEN_INSN, 0, 0, I_VFNMSUB123SD }, + { "vfnmsub231ss", 12, TOKEN_INSN, 0, 0, I_VFNMSUB231SS }, + { "vfnmsub231sd", 12, TOKEN_INSN, 0, 0, I_VFNMSUB231SD }, + { "vfnmsub321ss", 12, TOKEN_INSN, 0, 0, I_VFNMSUB321SS }, + { "vfnmsub321sd", 12, TOKEN_INSN, 0, 0, I_VFNMSUB321SD }, + { "rdfsbase", 8, TOKEN_INSN, 0, 0, I_RDFSBASE }, + { "rdgsbase", 8, TOKEN_INSN, 0, 0, I_RDGSBASE }, + { "rdrand", 6, TOKEN_INSN, 0, 0, I_RDRAND }, + { "wrfsbase", 8, TOKEN_INSN, 0, 0, I_WRFSBASE }, + { "wrgsbase", 8, TOKEN_INSN, 0, 0, I_WRGSBASE }, + { "vcvtph2ps", 9, TOKEN_INSN, 0, 0, I_VCVTPH2PS }, + { "vcvtps2ph", 9, TOKEN_INSN, 0, 0, I_VCVTPS2PH }, + { "adcx", 4, TOKEN_INSN, 0, 0, I_ADCX }, + { "adox", 4, TOKEN_INSN, 0, 0, I_ADOX }, + { "rdseed", 6, TOKEN_INSN, 0, 0, I_RDSEED }, + { "clac", 4, TOKEN_INSN, 0, 0, I_CLAC }, + { "stac", 4, TOKEN_INSN, 0, 0, I_STAC }, + { "xstore", 6, TOKEN_INSN, 0, 0, I_XSTORE }, + { "xcryptecb", 9, TOKEN_INSN, 0, 0, I_XCRYPTECB }, + { "xcryptcbc", 9, TOKEN_INSN, 0, 0, I_XCRYPTCBC }, + { "xcryptctr", 9, TOKEN_INSN, 0, 0, I_XCRYPTCTR }, + { "xcryptcfb", 9, TOKEN_INSN, 0, 0, I_XCRYPTCFB }, + { "xcryptofb", 9, TOKEN_INSN, 0, 0, I_XCRYPTOFB }, + { "montmul", 7, TOKEN_INSN, 0, 0, I_MONTMUL }, + { "xsha1", 5, TOKEN_INSN, 0, 0, I_XSHA1 }, + { "xsha256", 7, TOKEN_INSN, 0, 0, I_XSHA256 }, + { "llwpcb", 6, TOKEN_INSN, 0, 0, I_LLWPCB }, + { "slwpcb", 6, TOKEN_INSN, 0, 0, I_SLWPCB }, + { "lwpval", 6, TOKEN_INSN, 0, 0, I_LWPVAL }, + { "lwpins", 6, TOKEN_INSN, 0, 0, I_LWPINS }, + { "vfmaddpd", 8, TOKEN_INSN, 0, 0, I_VFMADDPD }, + { "vfmaddps", 8, TOKEN_INSN, 0, 0, I_VFMADDPS }, + { "vfmaddsd", 8, TOKEN_INSN, 0, 0, I_VFMADDSD }, + { "vfmaddss", 8, TOKEN_INSN, 0, 0, I_VFMADDSS }, + { "vfmaddsubpd", 11, TOKEN_INSN, 0, 0, I_VFMADDSUBPD }, + { "vfmaddsubps", 11, TOKEN_INSN, 0, 0, I_VFMADDSUBPS }, + { "vfmsubaddpd", 11, TOKEN_INSN, 0, 0, I_VFMSUBADDPD }, + { "vfmsubaddps", 11, TOKEN_INSN, 0, 0, I_VFMSUBADDPS }, + { "vfmsubpd", 8, TOKEN_INSN, 0, 0, I_VFMSUBPD }, + { "vfmsubps", 8, TOKEN_INSN, 0, 0, I_VFMSUBPS }, + { "vfmsubsd", 8, TOKEN_INSN, 0, 0, I_VFMSUBSD }, + { "vfmsubss", 8, TOKEN_INSN, 0, 0, I_VFMSUBSS }, + { "vfnmaddpd", 9, TOKEN_INSN, 0, 0, I_VFNMADDPD }, + { "vfnmaddps", 9, TOKEN_INSN, 0, 0, I_VFNMADDPS }, + { "vfnmaddsd", 9, TOKEN_INSN, 0, 0, I_VFNMADDSD }, + { "vfnmaddss", 9, TOKEN_INSN, 0, 0, I_VFNMADDSS }, + { "vfnmsubpd", 9, TOKEN_INSN, 0, 0, I_VFNMSUBPD }, + { "vfnmsubps", 9, TOKEN_INSN, 0, 0, I_VFNMSUBPS }, + { "vfnmsubsd", 9, TOKEN_INSN, 0, 0, I_VFNMSUBSD }, + { "vfnmsubss", 9, TOKEN_INSN, 0, 0, I_VFNMSUBSS }, + { "vfrczpd", 7, TOKEN_INSN, 0, 0, I_VFRCZPD }, + { "vfrczps", 7, TOKEN_INSN, 0, 0, I_VFRCZPS }, + { "vfrczsd", 7, TOKEN_INSN, 0, 0, I_VFRCZSD }, + { "vfrczss", 7, TOKEN_INSN, 0, 0, I_VFRCZSS }, + { "vpcmov", 6, TOKEN_INSN, 0, 0, I_VPCMOV }, + { "vpcomb", 6, TOKEN_INSN, 0, 0, I_VPCOMB }, + { "vpcomd", 6, TOKEN_INSN, 0, 0, I_VPCOMD }, + { "vpcomq", 6, TOKEN_INSN, 0, 0, I_VPCOMQ }, + { "vpcomub", 7, TOKEN_INSN, 0, 0, I_VPCOMUB }, + { "vpcomud", 7, TOKEN_INSN, 0, 0, I_VPCOMUD }, + { "vpcomuq", 7, TOKEN_INSN, 0, 0, I_VPCOMUQ }, + { "vpcomuw", 7, TOKEN_INSN, 0, 0, I_VPCOMUW }, + { "vpcomw", 6, TOKEN_INSN, 0, 0, I_VPCOMW }, + { "vphaddbd", 8, TOKEN_INSN, 0, 0, I_VPHADDBD }, + { "vphaddbq", 8, TOKEN_INSN, 0, 0, I_VPHADDBQ }, + { "vphaddbw", 8, TOKEN_INSN, 0, 0, I_VPHADDBW }, + { "vphadddq", 8, TOKEN_INSN, 0, 0, I_VPHADDDQ }, + { "vphaddubd", 9, TOKEN_INSN, 0, 0, I_VPHADDUBD }, + { "vphaddubq", 9, TOKEN_INSN, 0, 0, I_VPHADDUBQ }, + { "vphaddubw", 9, TOKEN_INSN, 0, 0, I_VPHADDUBW }, + { "vphaddudq", 9, TOKEN_INSN, 0, 0, I_VPHADDUDQ }, + { "vphadduwd", 9, TOKEN_INSN, 0, 0, I_VPHADDUWD }, + { "vphadduwq", 9, TOKEN_INSN, 0, 0, I_VPHADDUWQ }, + { "vphaddwd", 8, TOKEN_INSN, 0, 0, I_VPHADDWD }, + { "vphaddwq", 8, TOKEN_INSN, 0, 0, I_VPHADDWQ }, + { "vphsubbw", 8, TOKEN_INSN, 0, 0, I_VPHSUBBW }, + { "vphsubdq", 8, TOKEN_INSN, 0, 0, I_VPHSUBDQ }, + { "vphsubwd", 8, TOKEN_INSN, 0, 0, I_VPHSUBWD }, + { "vpmacsdd", 8, TOKEN_INSN, 0, 0, I_VPMACSDD }, + { "vpmacsdqh", 9, TOKEN_INSN, 0, 0, I_VPMACSDQH }, + { "vpmacsdql", 9, TOKEN_INSN, 0, 0, I_VPMACSDQL }, + { "vpmacssdd", 9, TOKEN_INSN, 0, 0, I_VPMACSSDD }, + { "vpmacssdqh", 10, TOKEN_INSN, 0, 0, I_VPMACSSDQH }, + { "vpmacssdql", 10, TOKEN_INSN, 0, 0, I_VPMACSSDQL }, + { "vpmacsswd", 9, TOKEN_INSN, 0, 0, I_VPMACSSWD }, + { "vpmacssww", 9, TOKEN_INSN, 0, 0, I_VPMACSSWW }, + { "vpmacswd", 8, TOKEN_INSN, 0, 0, I_VPMACSWD }, + { "vpmacsww", 8, TOKEN_INSN, 0, 0, I_VPMACSWW }, + { "vpmadcsswd", 10, TOKEN_INSN, 0, 0, I_VPMADCSSWD }, + { "vpmadcswd", 9, TOKEN_INSN, 0, 0, I_VPMADCSWD }, + { "vpperm", 6, TOKEN_INSN, 0, 0, I_VPPERM }, + { "vprotb", 6, TOKEN_INSN, 0, 0, I_VPROTB }, + { "vprotd", 6, TOKEN_INSN, 0, 0, I_VPROTD }, + { "vprotq", 6, TOKEN_INSN, 0, 0, I_VPROTQ }, + { "vprotw", 6, TOKEN_INSN, 0, 0, I_VPROTW }, + { "vpshab", 6, TOKEN_INSN, 0, 0, I_VPSHAB }, + { "vpshad", 6, TOKEN_INSN, 0, 0, I_VPSHAD }, + { "vpshaq", 6, TOKEN_INSN, 0, 0, I_VPSHAQ }, + { "vpshaw", 6, TOKEN_INSN, 0, 0, I_VPSHAW }, + { "vpshlb", 6, TOKEN_INSN, 0, 0, I_VPSHLB }, + { "vpshld", 6, TOKEN_INSN, 0, 0, I_VPSHLD }, + { "vpshlq", 6, TOKEN_INSN, 0, 0, I_VPSHLQ }, + { "vpshlw", 6, TOKEN_INSN, 0, 0, I_VPSHLW }, + { "vbroadcasti128", 14, TOKEN_INSN, 0, 0, I_VBROADCASTI128 }, + { "vpblendd", 8, TOKEN_INSN, 0, 0, I_VPBLENDD }, + { "vpbroadcastb", 12, TOKEN_INSN, 0, 0, I_VPBROADCASTB }, + { "vpbroadcastw", 12, TOKEN_INSN, 0, 0, I_VPBROADCASTW }, + { "vpbroadcastd", 12, TOKEN_INSN, 0, 0, I_VPBROADCASTD }, + { "vpbroadcastq", 12, TOKEN_INSN, 0, 0, I_VPBROADCASTQ }, + { "vpermd", 6, TOKEN_INSN, 0, 0, I_VPERMD }, + { "vpermpd", 7, TOKEN_INSN, 0, 0, I_VPERMPD }, + { "vpermps", 7, TOKEN_INSN, 0, 0, I_VPERMPS }, + { "vpermq", 6, TOKEN_INSN, 0, 0, I_VPERMQ }, + { "vperm2i128", 10, TOKEN_INSN, 0, 0, I_VPERM2I128 }, + { "vextracti128", 12, TOKEN_INSN, 0, 0, I_VEXTRACTI128 }, + { "vinserti128", 11, TOKEN_INSN, 0, 0, I_VINSERTI128 }, + { "vpmaskmovd", 10, TOKEN_INSN, 0, 0, I_VPMASKMOVD }, + { "vpmaskmovq", 10, TOKEN_INSN, 0, 0, I_VPMASKMOVQ }, + { "vpsllvd", 7, TOKEN_INSN, 0, 0, I_VPSLLVD }, + { "vpsllvq", 7, TOKEN_INSN, 0, 0, I_VPSLLVQ }, + { "vpsravd", 7, TOKEN_INSN, 0, 0, I_VPSRAVD }, + { "vpsrlvd", 7, TOKEN_INSN, 0, 0, I_VPSRLVD }, + { "vpsrlvq", 7, TOKEN_INSN, 0, 0, I_VPSRLVQ }, + { "vgatherdpd", 10, TOKEN_INSN, 0, 0, I_VGATHERDPD }, + { "vgatherqpd", 10, TOKEN_INSN, 0, 0, I_VGATHERQPD }, + { "vgatherdps", 10, TOKEN_INSN, 0, 0, I_VGATHERDPS }, + { "vgatherqps", 10, TOKEN_INSN, 0, 0, I_VGATHERQPS }, + { "vpgatherdd", 10, TOKEN_INSN, 0, 0, I_VPGATHERDD }, + { "vpgatherqd", 10, TOKEN_INSN, 0, 0, I_VPGATHERQD }, + { "vpgatherdq", 10, TOKEN_INSN, 0, 0, I_VPGATHERDQ }, + { "vpgatherqq", 10, TOKEN_INSN, 0, 0, I_VPGATHERQQ }, + { "xabort", 6, TOKEN_INSN, 0, 0, I_XABORT }, + { "xbegin", 6, TOKEN_INSN, 0, 0, I_XBEGIN }, + { "xend", 4, TOKEN_INSN, 0, 0, I_XEND }, + { "xtest", 5, TOKEN_INSN, 0, 0, I_XTEST }, + { "andn", 4, TOKEN_INSN, 0, 0, I_ANDN }, + { "bextr", 5, TOKEN_INSN, 0, 0, I_BEXTR }, + { "blci", 4, TOKEN_INSN, 0, 0, I_BLCI }, + { "blcic", 5, TOKEN_INSN, 0, 0, I_BLCIC }, + { "blsi", 4, TOKEN_INSN, 0, 0, I_BLSI }, + { "blsic", 5, TOKEN_INSN, 0, 0, I_BLSIC }, + { "blcfill", 7, TOKEN_INSN, 0, 0, I_BLCFILL }, + { "blsfill", 7, TOKEN_INSN, 0, 0, I_BLSFILL }, + { "blcmsk", 6, TOKEN_INSN, 0, 0, I_BLCMSK }, + { "blsmsk", 6, TOKEN_INSN, 0, 0, I_BLSMSK }, + { "blsr", 4, TOKEN_INSN, 0, 0, I_BLSR }, + { "blcs", 4, TOKEN_INSN, 0, 0, I_BLCS }, + { "bzhi", 4, TOKEN_INSN, 0, 0, I_BZHI }, + { "mulx", 4, TOKEN_INSN, 0, 0, I_MULX }, + { "pdep", 4, TOKEN_INSN, 0, 0, I_PDEP }, + { "pext", 4, TOKEN_INSN, 0, 0, I_PEXT }, + { "rorx", 4, TOKEN_INSN, 0, 0, I_RORX }, + { "sarx", 4, TOKEN_INSN, 0, 0, I_SARX }, + { "shlx", 4, TOKEN_INSN, 0, 0, I_SHLX }, + { "shrx", 4, TOKEN_INSN, 0, 0, I_SHRX }, + { "tzcnt", 5, TOKEN_INSN, 0, 0, I_TZCNT }, + { "tzmsk", 5, TOKEN_INSN, 0, 0, I_TZMSK }, + { "t1mskc", 6, TOKEN_INSN, 0, 0, I_T1MSKC }, + { "prefetchwt1", 11, TOKEN_INSN, 0, 0, I_PREFETCHWT1 }, + { "bndmk", 5, TOKEN_INSN, 0, 0, I_BNDMK }, + { "bndcl", 5, TOKEN_INSN, 0, 0, I_BNDCL }, + { "bndcu", 5, TOKEN_INSN, 0, 0, I_BNDCU }, + { "bndcn", 5, TOKEN_INSN, 0, 0, I_BNDCN }, + { "bndmov", 6, TOKEN_INSN, 0, 0, I_BNDMOV }, + { "bndldx", 6, TOKEN_INSN, 0, 0, I_BNDLDX }, + { "bndstx", 6, TOKEN_INSN, 0, 0, I_BNDSTX }, + { "sha1msg1", 8, TOKEN_INSN, 0, 0, I_SHA1MSG1 }, + { "sha1msg2", 8, TOKEN_INSN, 0, 0, I_SHA1MSG2 }, + { "sha1nexte", 9, TOKEN_INSN, 0, 0, I_SHA1NEXTE }, + { "sha1rnds4", 9, TOKEN_INSN, 0, 0, I_SHA1RNDS4 }, + { "sha256msg1", 10, TOKEN_INSN, 0, 0, I_SHA256MSG1 }, + { "sha256msg2", 10, TOKEN_INSN, 0, 0, I_SHA256MSG2 }, + { "sha256rnds2", 11, TOKEN_INSN, 0, 0, I_SHA256RNDS2 }, + { "vbcstnebf16ps", 13, TOKEN_INSN, 0, 0, I_VBCSTNEBF16PS }, + { "vbcstnesh2ps", 12, TOKEN_INSN, 0, 0, I_VBCSTNESH2PS }, + { "vcvtneebf162ps", 14, TOKEN_INSN, 0, 0, I_VCVTNEEBF162PS }, + { "vcvtneeph2ps", 12, TOKEN_INSN, 0, 0, I_VCVTNEEPH2PS }, + { "vcvtneobf162ps", 14, TOKEN_INSN, 0, 0, I_VCVTNEOBF162PS }, + { "vcvtneoph2ps", 12, TOKEN_INSN, 0, 0, I_VCVTNEOPH2PS }, + { "vcvtneps2bf16", 13, TOKEN_INSN, 0, 0, I_VCVTNEPS2BF16 }, + { "vpdpbssd", 8, TOKEN_INSN, 0, 0, I_VPDPBSSD }, + { "vpdpbssds", 9, TOKEN_INSN, 0, 0, I_VPDPBSSDS }, + { "vpdpbsud", 8, TOKEN_INSN, 0, 0, I_VPDPBSUD }, + { "vpdpbsuds", 9, TOKEN_INSN, 0, 0, I_VPDPBSUDS }, + { "vpdpbuud", 8, TOKEN_INSN, 0, 0, I_VPDPBUUD }, + { "vpdpbuuds", 9, TOKEN_INSN, 0, 0, I_VPDPBUUDS }, + { "vpmadd52huq", 11, TOKEN_INSN, 0, 0, I_VPMADD52HUQ }, + { "vpmadd52luq", 11, TOKEN_INSN, 0, 0, I_VPMADD52LUQ }, + { "kaddb", 5, TOKEN_INSN, 0, 0, I_KADDB }, + { "kaddd", 5, TOKEN_INSN, 0, 0, I_KADDD }, + { "kaddq", 5, TOKEN_INSN, 0, 0, I_KADDQ }, + { "kaddw", 5, TOKEN_INSN, 0, 0, I_KADDW }, + { "kandb", 5, TOKEN_INSN, 0, 0, I_KANDB }, + { "kandd", 5, TOKEN_INSN, 0, 0, I_KANDD }, + { "kandnb", 6, TOKEN_INSN, 0, 0, I_KANDNB }, + { "kandnd", 6, TOKEN_INSN, 0, 0, I_KANDND }, + { "kandnq", 6, TOKEN_INSN, 0, 0, I_KANDNQ }, + { "kandnw", 6, TOKEN_INSN, 0, 0, I_KANDNW }, + { "kandq", 5, TOKEN_INSN, 0, 0, I_KANDQ }, + { "kandw", 5, TOKEN_INSN, 0, 0, I_KANDW }, + { "kmovb", 5, TOKEN_INSN, 0, 0, I_KMOVB }, + { "kmovd", 5, TOKEN_INSN, 0, 0, I_KMOVD }, + { "kmovq", 5, TOKEN_INSN, 0, 0, I_KMOVQ }, + { "kmovw", 5, TOKEN_INSN, 0, 0, I_KMOVW }, + { "knotb", 5, TOKEN_INSN, 0, 0, I_KNOTB }, + { "knotd", 5, TOKEN_INSN, 0, 0, I_KNOTD }, + { "knotq", 5, TOKEN_INSN, 0, 0, I_KNOTQ }, + { "knotw", 5, TOKEN_INSN, 0, 0, I_KNOTW }, + { "korb", 4, TOKEN_INSN, 0, 0, I_KORB }, + { "kord", 4, TOKEN_INSN, 0, 0, I_KORD }, + { "korq", 4, TOKEN_INSN, 0, 0, I_KORQ }, + { "korw", 4, TOKEN_INSN, 0, 0, I_KORW }, + { "kortestb", 8, TOKEN_INSN, 0, 0, I_KORTESTB }, + { "kortestd", 8, TOKEN_INSN, 0, 0, I_KORTESTD }, + { "kortestq", 8, TOKEN_INSN, 0, 0, I_KORTESTQ }, + { "kortestw", 8, TOKEN_INSN, 0, 0, I_KORTESTW }, + { "kshiftlb", 8, TOKEN_INSN, 0, 0, I_KSHIFTLB }, + { "kshiftld", 8, TOKEN_INSN, 0, 0, I_KSHIFTLD }, + { "kshiftlq", 8, TOKEN_INSN, 0, 0, I_KSHIFTLQ }, + { "kshiftlw", 8, TOKEN_INSN, 0, 0, I_KSHIFTLW }, + { "kshiftrb", 8, TOKEN_INSN, 0, 0, I_KSHIFTRB }, + { "kshiftrd", 8, TOKEN_INSN, 0, 0, I_KSHIFTRD }, + { "kshiftrq", 8, TOKEN_INSN, 0, 0, I_KSHIFTRQ }, + { "kshiftrw", 8, TOKEN_INSN, 0, 0, I_KSHIFTRW }, + { "ktestb", 6, TOKEN_INSN, 0, 0, I_KTESTB }, + { "ktestd", 6, TOKEN_INSN, 0, 0, I_KTESTD }, + { "ktestq", 6, TOKEN_INSN, 0, 0, I_KTESTQ }, + { "ktestw", 6, TOKEN_INSN, 0, 0, I_KTESTW }, + { "kunpckbw", 8, TOKEN_INSN, 0, 0, I_KUNPCKBW }, + { "kunpckdq", 8, TOKEN_INSN, 0, 0, I_KUNPCKDQ }, + { "kunpckwd", 8, TOKEN_INSN, 0, 0, I_KUNPCKWD }, + { "kxnorb", 6, TOKEN_INSN, 0, 0, I_KXNORB }, + { "kxnord", 6, TOKEN_INSN, 0, 0, I_KXNORD }, + { "kxnorq", 6, TOKEN_INSN, 0, 0, I_KXNORQ }, + { "kxnorw", 6, TOKEN_INSN, 0, 0, I_KXNORW }, + { "kxorb", 5, TOKEN_INSN, 0, 0, I_KXORB }, + { "kxord", 5, TOKEN_INSN, 0, 0, I_KXORD }, + { "kxorq", 5, TOKEN_INSN, 0, 0, I_KXORQ }, + { "kxorw", 5, TOKEN_INSN, 0, 0, I_KXORW }, + { "kadd", 4, TOKEN_INSN, 0, 0, I_KADD }, + { "kand", 4, TOKEN_INSN, 0, 0, I_KAND }, + { "kandn", 5, TOKEN_INSN, 0, 0, I_KANDN }, + { "kmov", 4, TOKEN_INSN, 0, 0, I_KMOV }, + { "knot", 4, TOKEN_INSN, 0, 0, I_KNOT }, + { "kor", 3, TOKEN_INSN, 0, 0, I_KOR }, + { "kortest", 7, TOKEN_INSN, 0, 0, I_KORTEST }, + { "kshiftl", 7, TOKEN_INSN, 0, 0, I_KSHIFTL }, + { "kshiftr", 7, TOKEN_INSN, 0, 0, I_KSHIFTR }, + { "ktest", 5, TOKEN_INSN, 0, 0, I_KTEST }, + { "kunpck", 6, TOKEN_INSN, 0, 0, I_KUNPCK }, + { "kxnor", 5, TOKEN_INSN, 0, 0, I_KXNOR }, + { "kxor", 4, TOKEN_INSN, 0, 0, I_KXOR }, + { "valignd", 7, TOKEN_INSN, 0, 0, I_VALIGND }, + { "valignq", 7, TOKEN_INSN, 0, 0, I_VALIGNQ }, + { "vblendmpd", 9, TOKEN_INSN, 0, 0, I_VBLENDMPD }, + { "vblendmps", 9, TOKEN_INSN, 0, 0, I_VBLENDMPS }, + { "vbroadcastf32x2", 15, TOKEN_INSN, 0, 0, I_VBROADCASTF32X2 }, + { "vbroadcastf32x4", 15, TOKEN_INSN, 0, 0, I_VBROADCASTF32X4 }, + { "vbroadcastf32x8", 15, TOKEN_INSN, 0, 0, I_VBROADCASTF32X8 }, + { "vbroadcastf64x2", 15, TOKEN_INSN, 0, 0, I_VBROADCASTF64X2 }, + { "vbroadcastf64x4", 15, TOKEN_INSN, 0, 0, I_VBROADCASTF64X4 }, + { "vbroadcasti32x2", 15, TOKEN_INSN, 0, 0, I_VBROADCASTI32X2 }, + { "vbroadcasti32x4", 15, TOKEN_INSN, 0, 0, I_VBROADCASTI32X4 }, + { "vbroadcasti32x8", 15, TOKEN_INSN, 0, 0, I_VBROADCASTI32X8 }, + { "vbroadcasti64x2", 15, TOKEN_INSN, 0, 0, I_VBROADCASTI64X2 }, + { "vbroadcasti64x4", 15, TOKEN_INSN, 0, 0, I_VBROADCASTI64X4 }, + { "vcmpeq_oqpd", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_OQPD }, + { "vcmpeq_oqps", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_OQPS }, + { "vcmpeq_oqsd", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_OQSD }, + { "vcmpeq_oqss", 11, TOKEN_INSN, 0, 0, I_VCMPEQ_OQSS }, + { "vcompresspd", 11, TOKEN_INSN, 0, 0, I_VCOMPRESSPD }, + { "vcompressps", 11, TOKEN_INSN, 0, 0, I_VCOMPRESSPS }, + { "vcvtpd2qq", 9, TOKEN_INSN, 0, 0, I_VCVTPD2QQ }, + { "vcvtpd2udq", 10, TOKEN_INSN, 0, 0, I_VCVTPD2UDQ }, + { "vcvtpd2uqq", 10, TOKEN_INSN, 0, 0, I_VCVTPD2UQQ }, + { "vcvtps2qq", 9, TOKEN_INSN, 0, 0, I_VCVTPS2QQ }, + { "vcvtps2udq", 10, TOKEN_INSN, 0, 0, I_VCVTPS2UDQ }, + { "vcvtps2uqq", 10, TOKEN_INSN, 0, 0, I_VCVTPS2UQQ }, + { "vcvtqq2pd", 9, TOKEN_INSN, 0, 0, I_VCVTQQ2PD }, + { "vcvtqq2ps", 9, TOKEN_INSN, 0, 0, I_VCVTQQ2PS }, + { "vcvtsd2usi", 10, TOKEN_INSN, 0, 0, I_VCVTSD2USI }, + { "vcvtss2usi", 10, TOKEN_INSN, 0, 0, I_VCVTSS2USI }, + { "vcvttpd2qq", 10, TOKEN_INSN, 0, 0, I_VCVTTPD2QQ }, + { "vcvttpd2udq", 11, TOKEN_INSN, 0, 0, I_VCVTTPD2UDQ }, + { "vcvttpd2uqq", 11, TOKEN_INSN, 0, 0, I_VCVTTPD2UQQ }, + { "vcvttps2qq", 10, TOKEN_INSN, 0, 0, I_VCVTTPS2QQ }, + { "vcvttps2udq", 11, TOKEN_INSN, 0, 0, I_VCVTTPS2UDQ }, + { "vcvttps2uqq", 11, TOKEN_INSN, 0, 0, I_VCVTTPS2UQQ }, + { "vcvttsd2usi", 11, TOKEN_INSN, 0, 0, I_VCVTTSD2USI }, + { "vcvttss2usi", 11, TOKEN_INSN, 0, 0, I_VCVTTSS2USI }, + { "vcvtudq2pd", 10, TOKEN_INSN, 0, 0, I_VCVTUDQ2PD }, + { "vcvtudq2ps", 10, TOKEN_INSN, 0, 0, I_VCVTUDQ2PS }, + { "vcvtuqq2pd", 10, TOKEN_INSN, 0, 0, I_VCVTUQQ2PD }, + { "vcvtuqq2ps", 10, TOKEN_INSN, 0, 0, I_VCVTUQQ2PS }, + { "vcvtusi2sd", 10, TOKEN_INSN, 0, 0, I_VCVTUSI2SD }, + { "vcvtusi2ss", 10, TOKEN_INSN, 0, 0, I_VCVTUSI2SS }, + { "vdbpsadbw", 9, TOKEN_INSN, 0, 0, I_VDBPSADBW }, + { "vexp2pd", 7, TOKEN_INSN, 0, 0, I_VEXP2PD }, + { "vexp2ps", 7, TOKEN_INSN, 0, 0, I_VEXP2PS }, + { "vexpandpd", 9, TOKEN_INSN, 0, 0, I_VEXPANDPD }, + { "vexpandps", 9, TOKEN_INSN, 0, 0, I_VEXPANDPS }, + { "vextractf32x4", 13, TOKEN_INSN, 0, 0, I_VEXTRACTF32X4 }, + { "vextractf32x8", 13, TOKEN_INSN, 0, 0, I_VEXTRACTF32X8 }, + { "vextractf64x2", 13, TOKEN_INSN, 0, 0, I_VEXTRACTF64X2 }, + { "vextractf64x4", 13, TOKEN_INSN, 0, 0, I_VEXTRACTF64X4 }, + { "vextracti32x4", 13, TOKEN_INSN, 0, 0, I_VEXTRACTI32X4 }, + { "vextracti32x8", 13, TOKEN_INSN, 0, 0, I_VEXTRACTI32X8 }, + { "vextracti64x2", 13, TOKEN_INSN, 0, 0, I_VEXTRACTI64X2 }, + { "vextracti64x4", 13, TOKEN_INSN, 0, 0, I_VEXTRACTI64X4 }, + { "vfixupimmpd", 11, TOKEN_INSN, 0, 0, I_VFIXUPIMMPD }, + { "vfixupimmps", 11, TOKEN_INSN, 0, 0, I_VFIXUPIMMPS }, + { "vfixupimmsd", 11, TOKEN_INSN, 0, 0, I_VFIXUPIMMSD }, + { "vfixupimmss", 11, TOKEN_INSN, 0, 0, I_VFIXUPIMMSS }, + { "vfpclasspd", 10, TOKEN_INSN, 0, 0, I_VFPCLASSPD }, + { "vfpclassps", 10, TOKEN_INSN, 0, 0, I_VFPCLASSPS }, + { "vfpclasssd", 10, TOKEN_INSN, 0, 0, I_VFPCLASSSD }, + { "vfpclassss", 10, TOKEN_INSN, 0, 0, I_VFPCLASSSS }, + { "vgatherpf0dpd", 13, TOKEN_INSN, 0, 0, I_VGATHERPF0DPD }, + { "vgatherpf0dps", 13, TOKEN_INSN, 0, 0, I_VGATHERPF0DPS }, + { "vgatherpf0qpd", 13, TOKEN_INSN, 0, 0, I_VGATHERPF0QPD }, + { "vgatherpf0qps", 13, TOKEN_INSN, 0, 0, I_VGATHERPF0QPS }, + { "vgatherpf1dpd", 13, TOKEN_INSN, 0, 0, I_VGATHERPF1DPD }, + { "vgatherpf1dps", 13, TOKEN_INSN, 0, 0, I_VGATHERPF1DPS }, + { "vgatherpf1qpd", 13, TOKEN_INSN, 0, 0, I_VGATHERPF1QPD }, + { "vgatherpf1qps", 13, TOKEN_INSN, 0, 0, I_VGATHERPF1QPS }, + { "vgetexppd", 9, TOKEN_INSN, 0, 0, I_VGETEXPPD }, + { "vgetexpps", 9, TOKEN_INSN, 0, 0, I_VGETEXPPS }, + { "vgetexpsd", 9, TOKEN_INSN, 0, 0, I_VGETEXPSD }, + { "vgetexpss", 9, TOKEN_INSN, 0, 0, I_VGETEXPSS }, + { "vgetmantpd", 10, TOKEN_INSN, 0, 0, I_VGETMANTPD }, + { "vgetmantps", 10, TOKEN_INSN, 0, 0, I_VGETMANTPS }, + { "vgetmantsd", 10, TOKEN_INSN, 0, 0, I_VGETMANTSD }, + { "vgetmantss", 10, TOKEN_INSN, 0, 0, I_VGETMANTSS }, + { "vinsertf32x4", 12, TOKEN_INSN, 0, 0, I_VINSERTF32X4 }, + { "vinsertf32x8", 12, TOKEN_INSN, 0, 0, I_VINSERTF32X8 }, + { "vinsertf64x2", 12, TOKEN_INSN, 0, 0, I_VINSERTF64X2 }, + { "vinsertf64x4", 12, TOKEN_INSN, 0, 0, I_VINSERTF64X4 }, + { "vinserti32x4", 12, TOKEN_INSN, 0, 0, I_VINSERTI32X4 }, + { "vinserti32x8", 12, TOKEN_INSN, 0, 0, I_VINSERTI32X8 }, + { "vinserti64x2", 12, TOKEN_INSN, 0, 0, I_VINSERTI64X2 }, + { "vinserti64x4", 12, TOKEN_INSN, 0, 0, I_VINSERTI64X4 }, + { "vmovdqa32", 9, TOKEN_INSN, 0, 0, I_VMOVDQA32 }, + { "vmovdqa64", 9, TOKEN_INSN, 0, 0, I_VMOVDQA64 }, + { "vmovdqu16", 9, TOKEN_INSN, 0, 0, I_VMOVDQU16 }, + { "vmovdqu32", 9, TOKEN_INSN, 0, 0, I_VMOVDQU32 }, + { "vmovdqu64", 9, TOKEN_INSN, 0, 0, I_VMOVDQU64 }, + { "vmovdqu8", 8, TOKEN_INSN, 0, 0, I_VMOVDQU8 }, + { "vpabsq", 6, TOKEN_INSN, 0, 0, I_VPABSQ }, + { "vpandd", 6, TOKEN_INSN, 0, 0, I_VPANDD }, + { "vpandnd", 7, TOKEN_INSN, 0, 0, I_VPANDND }, + { "vpandnq", 7, TOKEN_INSN, 0, 0, I_VPANDNQ }, + { "vpandq", 6, TOKEN_INSN, 0, 0, I_VPANDQ }, + { "vpblendmb", 9, TOKEN_INSN, 0, 0, I_VPBLENDMB }, + { "vpblendmd", 9, TOKEN_INSN, 0, 0, I_VPBLENDMD }, + { "vpblendmq", 9, TOKEN_INSN, 0, 0, I_VPBLENDMQ }, + { "vpblendmw", 9, TOKEN_INSN, 0, 0, I_VPBLENDMW }, + { "vpbroadcastmb2q", 15, TOKEN_INSN, 0, 0, I_VPBROADCASTMB2Q }, + { "vpbroadcastmw2d", 15, TOKEN_INSN, 0, 0, I_VPBROADCASTMW2D }, + { "vpcmpequb", 9, TOKEN_INSN, 0, 0, I_VPCMPEQUB }, + { "vpcmpequd", 9, TOKEN_INSN, 0, 0, I_VPCMPEQUD }, + { "vpcmpequq", 9, TOKEN_INSN, 0, 0, I_VPCMPEQUQ }, + { "vpcmpequw", 9, TOKEN_INSN, 0, 0, I_VPCMPEQUW }, + { "vpcmpgeb", 8, TOKEN_INSN, 0, 0, I_VPCMPGEB }, + { "vpcmpged", 8, TOKEN_INSN, 0, 0, I_VPCMPGED }, + { "vpcmpgeq", 8, TOKEN_INSN, 0, 0, I_VPCMPGEQ }, + { "vpcmpgeub", 9, TOKEN_INSN, 0, 0, I_VPCMPGEUB }, + { "vpcmpgeud", 9, TOKEN_INSN, 0, 0, I_VPCMPGEUD }, + { "vpcmpgeuq", 9, TOKEN_INSN, 0, 0, I_VPCMPGEUQ }, + { "vpcmpgeuw", 9, TOKEN_INSN, 0, 0, I_VPCMPGEUW }, + { "vpcmpgew", 8, TOKEN_INSN, 0, 0, I_VPCMPGEW }, + { "vpcmpgtub", 9, TOKEN_INSN, 0, 0, I_VPCMPGTUB }, + { "vpcmpgtud", 9, TOKEN_INSN, 0, 0, I_VPCMPGTUD }, + { "vpcmpgtuq", 9, TOKEN_INSN, 0, 0, I_VPCMPGTUQ }, + { "vpcmpgtuw", 9, TOKEN_INSN, 0, 0, I_VPCMPGTUW }, + { "vpcmpleb", 8, TOKEN_INSN, 0, 0, I_VPCMPLEB }, + { "vpcmpled", 8, TOKEN_INSN, 0, 0, I_VPCMPLED }, + { "vpcmpleq", 8, TOKEN_INSN, 0, 0, I_VPCMPLEQ }, + { "vpcmpleub", 9, TOKEN_INSN, 0, 0, I_VPCMPLEUB }, + { "vpcmpleud", 9, TOKEN_INSN, 0, 0, I_VPCMPLEUD }, + { "vpcmpleuq", 9, TOKEN_INSN, 0, 0, I_VPCMPLEUQ }, + { "vpcmpleuw", 9, TOKEN_INSN, 0, 0, I_VPCMPLEUW }, + { "vpcmplew", 8, TOKEN_INSN, 0, 0, I_VPCMPLEW }, + { "vpcmpltb", 8, TOKEN_INSN, 0, 0, I_VPCMPLTB }, + { "vpcmpltd", 8, TOKEN_INSN, 0, 0, I_VPCMPLTD }, + { "vpcmpltq", 8, TOKEN_INSN, 0, 0, I_VPCMPLTQ }, + { "vpcmpltub", 9, TOKEN_INSN, 0, 0, I_VPCMPLTUB }, + { "vpcmpltud", 9, TOKEN_INSN, 0, 0, I_VPCMPLTUD }, + { "vpcmpltuq", 9, TOKEN_INSN, 0, 0, I_VPCMPLTUQ }, + { "vpcmpltuw", 9, TOKEN_INSN, 0, 0, I_VPCMPLTUW }, + { "vpcmpltw", 8, TOKEN_INSN, 0, 0, I_VPCMPLTW }, + { "vpcmpneqb", 9, TOKEN_INSN, 0, 0, I_VPCMPNEQB }, + { "vpcmpneqd", 9, TOKEN_INSN, 0, 0, I_VPCMPNEQD }, + { "vpcmpneqq", 9, TOKEN_INSN, 0, 0, I_VPCMPNEQQ }, + { "vpcmpnequb", 10, TOKEN_INSN, 0, 0, I_VPCMPNEQUB }, + { "vpcmpnequd", 10, TOKEN_INSN, 0, 0, I_VPCMPNEQUD }, + { "vpcmpnequq", 10, TOKEN_INSN, 0, 0, I_VPCMPNEQUQ }, + { "vpcmpnequw", 10, TOKEN_INSN, 0, 0, I_VPCMPNEQUW }, + { "vpcmpneqw", 9, TOKEN_INSN, 0, 0, I_VPCMPNEQW }, + { "vpcmpngtb", 9, TOKEN_INSN, 0, 0, I_VPCMPNGTB }, + { "vpcmpngtd", 9, TOKEN_INSN, 0, 0, I_VPCMPNGTD }, + { "vpcmpngtq", 9, TOKEN_INSN, 0, 0, I_VPCMPNGTQ }, + { "vpcmpngtub", 10, TOKEN_INSN, 0, 0, I_VPCMPNGTUB }, + { "vpcmpngtud", 10, TOKEN_INSN, 0, 0, I_VPCMPNGTUD }, + { "vpcmpngtuq", 10, TOKEN_INSN, 0, 0, I_VPCMPNGTUQ }, + { "vpcmpngtuw", 10, TOKEN_INSN, 0, 0, I_VPCMPNGTUW }, + { "vpcmpngtw", 9, TOKEN_INSN, 0, 0, I_VPCMPNGTW }, + { "vpcmpnleb", 9, TOKEN_INSN, 0, 0, I_VPCMPNLEB }, + { "vpcmpnled", 9, TOKEN_INSN, 0, 0, I_VPCMPNLED }, + { "vpcmpnleq", 9, TOKEN_INSN, 0, 0, I_VPCMPNLEQ }, + { "vpcmpnleub", 10, TOKEN_INSN, 0, 0, I_VPCMPNLEUB }, + { "vpcmpnleud", 10, TOKEN_INSN, 0, 0, I_VPCMPNLEUD }, + { "vpcmpnleuq", 10, TOKEN_INSN, 0, 0, I_VPCMPNLEUQ }, + { "vpcmpnleuw", 10, TOKEN_INSN, 0, 0, I_VPCMPNLEUW }, + { "vpcmpnlew", 9, TOKEN_INSN, 0, 0, I_VPCMPNLEW }, + { "vpcmpnltb", 9, TOKEN_INSN, 0, 0, I_VPCMPNLTB }, + { "vpcmpnltd", 9, TOKEN_INSN, 0, 0, I_VPCMPNLTD }, + { "vpcmpnltq", 9, TOKEN_INSN, 0, 0, I_VPCMPNLTQ }, + { "vpcmpnltub", 10, TOKEN_INSN, 0, 0, I_VPCMPNLTUB }, + { "vpcmpnltud", 10, TOKEN_INSN, 0, 0, I_VPCMPNLTUD }, + { "vpcmpnltuq", 10, TOKEN_INSN, 0, 0, I_VPCMPNLTUQ }, + { "vpcmpnltuw", 10, TOKEN_INSN, 0, 0, I_VPCMPNLTUW }, + { "vpcmpnltw", 9, TOKEN_INSN, 0, 0, I_VPCMPNLTW }, + { "vpcmpb", 6, TOKEN_INSN, 0, 0, I_VPCMPB }, + { "vpcmpd", 6, TOKEN_INSN, 0, 0, I_VPCMPD }, + { "vpcmpq", 6, TOKEN_INSN, 0, 0, I_VPCMPQ }, + { "vpcmpub", 7, TOKEN_INSN, 0, 0, I_VPCMPUB }, + { "vpcmpud", 7, TOKEN_INSN, 0, 0, I_VPCMPUD }, + { "vpcmpuq", 7, TOKEN_INSN, 0, 0, I_VPCMPUQ }, + { "vpcmpuw", 7, TOKEN_INSN, 0, 0, I_VPCMPUW }, + { "vpcmpw", 6, TOKEN_INSN, 0, 0, I_VPCMPW }, + { "vpcompressd", 11, TOKEN_INSN, 0, 0, I_VPCOMPRESSD }, + { "vpcompressq", 11, TOKEN_INSN, 0, 0, I_VPCOMPRESSQ }, + { "vpconflictd", 11, TOKEN_INSN, 0, 0, I_VPCONFLICTD }, + { "vpconflictq", 11, TOKEN_INSN, 0, 0, I_VPCONFLICTQ }, + { "vpermb", 6, TOKEN_INSN, 0, 0, I_VPERMB }, + { "vpermi2b", 8, TOKEN_INSN, 0, 0, I_VPERMI2B }, + { "vpermi2d", 8, TOKEN_INSN, 0, 0, I_VPERMI2D }, + { "vpermi2pd", 9, TOKEN_INSN, 0, 0, I_VPERMI2PD }, + { "vpermi2ps", 9, TOKEN_INSN, 0, 0, I_VPERMI2PS }, + { "vpermi2q", 8, TOKEN_INSN, 0, 0, I_VPERMI2Q }, + { "vpermi2w", 8, TOKEN_INSN, 0, 0, I_VPERMI2W }, + { "vpermt2b", 8, TOKEN_INSN, 0, 0, I_VPERMT2B }, + { "vpermt2d", 8, TOKEN_INSN, 0, 0, I_VPERMT2D }, + { "vpermt2pd", 9, TOKEN_INSN, 0, 0, I_VPERMT2PD }, + { "vpermt2ps", 9, TOKEN_INSN, 0, 0, I_VPERMT2PS }, + { "vpermt2q", 8, TOKEN_INSN, 0, 0, I_VPERMT2Q }, + { "vpermt2w", 8, TOKEN_INSN, 0, 0, I_VPERMT2W }, + { "vpermw", 6, TOKEN_INSN, 0, 0, I_VPERMW }, + { "vpexpandd", 9, TOKEN_INSN, 0, 0, I_VPEXPANDD }, + { "vpexpandq", 9, TOKEN_INSN, 0, 0, I_VPEXPANDQ }, + { "vplzcntd", 8, TOKEN_INSN, 0, 0, I_VPLZCNTD }, + { "vplzcntq", 8, TOKEN_INSN, 0, 0, I_VPLZCNTQ }, + { "vpmaxsq", 7, TOKEN_INSN, 0, 0, I_VPMAXSQ }, + { "vpmaxuq", 7, TOKEN_INSN, 0, 0, I_VPMAXUQ }, + { "vpminsq", 7, TOKEN_INSN, 0, 0, I_VPMINSQ }, + { "vpminuq", 7, TOKEN_INSN, 0, 0, I_VPMINUQ }, + { "vpmovb2m", 8, TOKEN_INSN, 0, 0, I_VPMOVB2M }, + { "vpmovd2m", 8, TOKEN_INSN, 0, 0, I_VPMOVD2M }, + { "vpmovdb", 7, TOKEN_INSN, 0, 0, I_VPMOVDB }, + { "vpmovdw", 7, TOKEN_INSN, 0, 0, I_VPMOVDW }, + { "vpmovm2b", 8, TOKEN_INSN, 0, 0, I_VPMOVM2B }, + { "vpmovm2d", 8, TOKEN_INSN, 0, 0, I_VPMOVM2D }, + { "vpmovm2q", 8, TOKEN_INSN, 0, 0, I_VPMOVM2Q }, + { "vpmovm2w", 8, TOKEN_INSN, 0, 0, I_VPMOVM2W }, + { "vpmovq2m", 8, TOKEN_INSN, 0, 0, I_VPMOVQ2M }, + { "vpmovqb", 7, TOKEN_INSN, 0, 0, I_VPMOVQB }, + { "vpmovqd", 7, TOKEN_INSN, 0, 0, I_VPMOVQD }, + { "vpmovqw", 7, TOKEN_INSN, 0, 0, I_VPMOVQW }, + { "vpmovsdb", 8, TOKEN_INSN, 0, 0, I_VPMOVSDB }, + { "vpmovsdw", 8, TOKEN_INSN, 0, 0, I_VPMOVSDW }, + { "vpmovsqb", 8, TOKEN_INSN, 0, 0, I_VPMOVSQB }, + { "vpmovsqd", 8, TOKEN_INSN, 0, 0, I_VPMOVSQD }, + { "vpmovsqw", 8, TOKEN_INSN, 0, 0, I_VPMOVSQW }, + { "vpmovswb", 8, TOKEN_INSN, 0, 0, I_VPMOVSWB }, + { "vpmovusdb", 9, TOKEN_INSN, 0, 0, I_VPMOVUSDB }, + { "vpmovusdw", 9, TOKEN_INSN, 0, 0, I_VPMOVUSDW }, + { "vpmovusqb", 9, TOKEN_INSN, 0, 0, I_VPMOVUSQB }, + { "vpmovusqd", 9, TOKEN_INSN, 0, 0, I_VPMOVUSQD }, + { "vpmovusqw", 9, TOKEN_INSN, 0, 0, I_VPMOVUSQW }, + { "vpmovuswb", 9, TOKEN_INSN, 0, 0, I_VPMOVUSWB }, + { "vpmovw2m", 8, TOKEN_INSN, 0, 0, I_VPMOVW2M }, + { "vpmovwb", 7, TOKEN_INSN, 0, 0, I_VPMOVWB }, + { "vpmullq", 7, TOKEN_INSN, 0, 0, I_VPMULLQ }, + { "vpmultishiftqb", 14, TOKEN_INSN, 0, 0, I_VPMULTISHIFTQB }, + { "vpord", 5, TOKEN_INSN, 0, 0, I_VPORD }, + { "vporq", 5, TOKEN_INSN, 0, 0, I_VPORQ }, + { "vprold", 6, TOKEN_INSN, 0, 0, I_VPROLD }, + { "vprolq", 6, TOKEN_INSN, 0, 0, I_VPROLQ }, + { "vprolvd", 7, TOKEN_INSN, 0, 0, I_VPROLVD }, + { "vprolvq", 7, TOKEN_INSN, 0, 0, I_VPROLVQ }, + { "vprord", 6, TOKEN_INSN, 0, 0, I_VPRORD }, + { "vprorq", 6, TOKEN_INSN, 0, 0, I_VPRORQ }, + { "vprorvd", 7, TOKEN_INSN, 0, 0, I_VPRORVD }, + { "vprorvq", 7, TOKEN_INSN, 0, 0, I_VPRORVQ }, + { "vpscatterdd", 11, TOKEN_INSN, 0, 0, I_VPSCATTERDD }, + { "vpscatterdq", 11, TOKEN_INSN, 0, 0, I_VPSCATTERDQ }, + { "vpscatterqd", 11, TOKEN_INSN, 0, 0, I_VPSCATTERQD }, + { "vpscatterqq", 11, TOKEN_INSN, 0, 0, I_VPSCATTERQQ }, + { "vpsllvw", 7, TOKEN_INSN, 0, 0, I_VPSLLVW }, + { "vpsraq", 6, TOKEN_INSN, 0, 0, I_VPSRAQ }, + { "vpsravq", 7, TOKEN_INSN, 0, 0, I_VPSRAVQ }, + { "vpsravw", 7, TOKEN_INSN, 0, 0, I_VPSRAVW }, + { "vpsrlvw", 7, TOKEN_INSN, 0, 0, I_VPSRLVW }, + { "vpternlogd", 10, TOKEN_INSN, 0, 0, I_VPTERNLOGD }, + { "vpternlogq", 10, TOKEN_INSN, 0, 0, I_VPTERNLOGQ }, + { "vptestmb", 8, TOKEN_INSN, 0, 0, I_VPTESTMB }, + { "vptestmd", 8, TOKEN_INSN, 0, 0, I_VPTESTMD }, + { "vptestmq", 8, TOKEN_INSN, 0, 0, I_VPTESTMQ }, + { "vptestmw", 8, TOKEN_INSN, 0, 0, I_VPTESTMW }, + { "vptestnmb", 9, TOKEN_INSN, 0, 0, I_VPTESTNMB }, + { "vptestnmd", 9, TOKEN_INSN, 0, 0, I_VPTESTNMD }, + { "vptestnmq", 9, TOKEN_INSN, 0, 0, I_VPTESTNMQ }, + { "vptestnmw", 9, TOKEN_INSN, 0, 0, I_VPTESTNMW }, + { "vpxord", 6, TOKEN_INSN, 0, 0, I_VPXORD }, + { "vpxorq", 6, TOKEN_INSN, 0, 0, I_VPXORQ }, + { "vrangepd", 8, TOKEN_INSN, 0, 0, I_VRANGEPD }, + { "vrangeps", 8, TOKEN_INSN, 0, 0, I_VRANGEPS }, + { "vrangesd", 8, TOKEN_INSN, 0, 0, I_VRANGESD }, + { "vrangess", 8, TOKEN_INSN, 0, 0, I_VRANGESS }, + { "vrcp14pd", 8, TOKEN_INSN, 0, 0, I_VRCP14PD }, + { "vrcp14ps", 8, TOKEN_INSN, 0, 0, I_VRCP14PS }, + { "vrcp14sd", 8, TOKEN_INSN, 0, 0, I_VRCP14SD }, + { "vrcp14ss", 8, TOKEN_INSN, 0, 0, I_VRCP14SS }, + { "vrcp28pd", 8, TOKEN_INSN, 0, 0, I_VRCP28PD }, + { "vrcp28ps", 8, TOKEN_INSN, 0, 0, I_VRCP28PS }, + { "vrcp28sd", 8, TOKEN_INSN, 0, 0, I_VRCP28SD }, + { "vrcp28ss", 8, TOKEN_INSN, 0, 0, I_VRCP28SS }, + { "vreducepd", 9, TOKEN_INSN, 0, 0, I_VREDUCEPD }, + { "vreduceps", 9, TOKEN_INSN, 0, 0, I_VREDUCEPS }, + { "vreducesd", 9, TOKEN_INSN, 0, 0, I_VREDUCESD }, + { "vreducess", 9, TOKEN_INSN, 0, 0, I_VREDUCESS }, + { "vrndscalepd", 11, TOKEN_INSN, 0, 0, I_VRNDSCALEPD }, + { "vrndscaleps", 11, TOKEN_INSN, 0, 0, I_VRNDSCALEPS }, + { "vrndscalesd", 11, TOKEN_INSN, 0, 0, I_VRNDSCALESD }, + { "vrndscaless", 11, TOKEN_INSN, 0, 0, I_VRNDSCALESS }, + { "vrsqrt14pd", 10, TOKEN_INSN, 0, 0, I_VRSQRT14PD }, + { "vrsqrt14ps", 10, TOKEN_INSN, 0, 0, I_VRSQRT14PS }, + { "vrsqrt14sd", 10, TOKEN_INSN, 0, 0, I_VRSQRT14SD }, + { "vrsqrt14ss", 10, TOKEN_INSN, 0, 0, I_VRSQRT14SS }, + { "vrsqrt28pd", 10, TOKEN_INSN, 0, 0, I_VRSQRT28PD }, + { "vrsqrt28ps", 10, TOKEN_INSN, 0, 0, I_VRSQRT28PS }, + { "vrsqrt28sd", 10, TOKEN_INSN, 0, 0, I_VRSQRT28SD }, + { "vrsqrt28ss", 10, TOKEN_INSN, 0, 0, I_VRSQRT28SS }, + { "vscalefpd", 9, TOKEN_INSN, 0, 0, I_VSCALEFPD }, + { "vscalefps", 9, TOKEN_INSN, 0, 0, I_VSCALEFPS }, + { "vscalefsd", 9, TOKEN_INSN, 0, 0, I_VSCALEFSD }, + { "vscalefss", 9, TOKEN_INSN, 0, 0, I_VSCALEFSS }, + { "vscatterdpd", 11, TOKEN_INSN, 0, 0, I_VSCATTERDPD }, + { "vscatterdps", 11, TOKEN_INSN, 0, 0, I_VSCATTERDPS }, + { "vscatterpf0dpd", 14, TOKEN_INSN, 0, 0, I_VSCATTERPF0DPD }, + { "vscatterpf0dps", 14, TOKEN_INSN, 0, 0, I_VSCATTERPF0DPS }, + { "vscatterpf0qpd", 14, TOKEN_INSN, 0, 0, I_VSCATTERPF0QPD }, + { "vscatterpf0qps", 14, TOKEN_INSN, 0, 0, I_VSCATTERPF0QPS }, + { "vscatterpf1dpd", 14, TOKEN_INSN, 0, 0, I_VSCATTERPF1DPD }, + { "vscatterpf1dps", 14, TOKEN_INSN, 0, 0, I_VSCATTERPF1DPS }, + { "vscatterpf1qpd", 14, TOKEN_INSN, 0, 0, I_VSCATTERPF1QPD }, + { "vscatterpf1qps", 14, TOKEN_INSN, 0, 0, I_VSCATTERPF1QPS }, + { "vscatterqpd", 11, TOKEN_INSN, 0, 0, I_VSCATTERQPD }, + { "vscatterqps", 11, TOKEN_INSN, 0, 0, I_VSCATTERQPS }, + { "vshuff32x4", 10, TOKEN_INSN, 0, 0, I_VSHUFF32X4 }, + { "vshuff64x2", 10, TOKEN_INSN, 0, 0, I_VSHUFF64X2 }, + { "vshufi32x4", 10, TOKEN_INSN, 0, 0, I_VSHUFI32X4 }, + { "vshufi64x2", 10, TOKEN_INSN, 0, 0, I_VSHUFI64X2 }, + { "rdpkru", 6, TOKEN_INSN, 0, 0, I_RDPKRU }, + { "wrpkru", 6, TOKEN_INSN, 0, 0, I_WRPKRU }, + { "rdpid", 5, TOKEN_INSN, 0, 0, I_RDPID }, + { "clflushopt", 10, TOKEN_INSN, 0, 0, I_CLFLUSHOPT }, + { "clwb", 4, TOKEN_INSN, 0, 0, I_CLWB }, + { "pcommit", 7, TOKEN_INSN, 0, 0, I_PCOMMIT }, + { "clzero", 6, TOKEN_INSN, 0, 0, I_CLZERO }, + { "ptwrite", 7, TOKEN_INSN, 0, 0, I_PTWRITE }, + { "cldemote", 8, TOKEN_INSN, 0, 0, I_CLDEMOTE }, + { "movdiri", 7, TOKEN_INSN, 0, 0, I_MOVDIRI }, + { "movdir64b", 9, TOKEN_INSN, 0, 0, I_MOVDIR64B }, + { "pconfig", 7, TOKEN_INSN, 0, 0, I_PCONFIG }, + { "tpause", 6, TOKEN_INSN, 0, 0, I_TPAUSE }, + { "umonitor", 8, TOKEN_INSN, 0, 0, I_UMONITOR }, + { "umwait", 6, TOKEN_INSN, 0, 0, I_UMWAIT }, + { "wbnoinvd", 8, TOKEN_INSN, 0, 0, I_WBNOINVD }, + { "gf2p8affineinvqb", 16, TOKEN_INSN, 0, 0, I_GF2P8AFFINEINVQB }, + { "vgf2p8affineinvqb", 17, TOKEN_INSN, 0, 0, I_VGF2P8AFFINEINVQB }, + { "gf2p8affineqb", 13, TOKEN_INSN, 0, 0, I_GF2P8AFFINEQB }, + { "vgf2p8affineqb", 14, TOKEN_INSN, 0, 0, I_VGF2P8AFFINEQB }, + { "gf2p8mulb", 9, TOKEN_INSN, 0, 0, I_GF2P8MULB }, + { "vgf2p8mulb", 10, TOKEN_INSN, 0, 0, I_VGF2P8MULB }, + { "vpcompressb", 11, TOKEN_INSN, 0, 0, I_VPCOMPRESSB }, + { "vpcompressw", 11, TOKEN_INSN, 0, 0, I_VPCOMPRESSW }, + { "vpexpandb", 9, TOKEN_INSN, 0, 0, I_VPEXPANDB }, + { "vpexpandw", 9, TOKEN_INSN, 0, 0, I_VPEXPANDW }, + { "vpshldw", 7, TOKEN_INSN, 0, 0, I_VPSHLDW }, + { "vpshldd", 7, TOKEN_INSN, 0, 0, I_VPSHLDD }, + { "vpshldq", 7, TOKEN_INSN, 0, 0, I_VPSHLDQ }, + { "vpshldvw", 8, TOKEN_INSN, 0, 0, I_VPSHLDVW }, + { "vpshldvd", 8, TOKEN_INSN, 0, 0, I_VPSHLDVD }, + { "vpshldvq", 8, TOKEN_INSN, 0, 0, I_VPSHLDVQ }, + { "vpshrdw", 7, TOKEN_INSN, 0, 0, I_VPSHRDW }, + { "vpshrdd", 7, TOKEN_INSN, 0, 0, I_VPSHRDD }, + { "vpshrdq", 7, TOKEN_INSN, 0, 0, I_VPSHRDQ }, + { "vpshrdvw", 8, TOKEN_INSN, 0, 0, I_VPSHRDVW }, + { "vpshrdvd", 8, TOKEN_INSN, 0, 0, I_VPSHRDVD }, + { "vpshrdvq", 8, TOKEN_INSN, 0, 0, I_VPSHRDVQ }, + { "vpdpbusd", 8, TOKEN_INSN, 0, 0, I_VPDPBUSD }, + { "vpdpbusds", 9, TOKEN_INSN, 0, 0, I_VPDPBUSDS }, + { "vpdpwssd", 8, TOKEN_INSN, 0, 0, I_VPDPWSSD }, + { "vpdpwssds", 9, TOKEN_INSN, 0, 0, I_VPDPWSSDS }, + { "vpopcntb", 8, TOKEN_INSN, 0, 0, I_VPOPCNTB }, + { "vpopcntw", 8, TOKEN_INSN, 0, 0, I_VPOPCNTW }, + { "vpopcntd", 8, TOKEN_INSN, 0, 0, I_VPOPCNTD }, + { "vpopcntq", 8, TOKEN_INSN, 0, 0, I_VPOPCNTQ }, + { "vpshufbitqmb", 12, TOKEN_INSN, 0, 0, I_VPSHUFBITQMB }, + { "v4fmaddps", 9, TOKEN_INSN, 0, 0, I_V4FMADDPS }, + { "v4fnmaddps", 10, TOKEN_INSN, 0, 0, I_V4FNMADDPS }, + { "v4fmaddss", 9, TOKEN_INSN, 0, 0, I_V4FMADDSS }, + { "v4fnmaddss", 10, TOKEN_INSN, 0, 0, I_V4FNMADDSS }, + { "v4dpwssds", 9, TOKEN_INSN, 0, 0, I_V4DPWSSDS }, + { "v4dpwssd", 8, TOKEN_INSN, 0, 0, I_V4DPWSSD }, + { "encls", 5, TOKEN_INSN, 0, 0, I_ENCLS }, + { "enclu", 5, TOKEN_INSN, 0, 0, I_ENCLU }, + { "enclv", 5, TOKEN_INSN, 0, 0, I_ENCLV }, + { "clrssbsy", 8, TOKEN_INSN, 0, 0, I_CLRSSBSY }, + { "endbr32", 7, TOKEN_INSN, 0, 0, I_ENDBR32 }, + { "endbr64", 7, TOKEN_INSN, 0, 0, I_ENDBR64 }, + { "incsspd", 7, TOKEN_INSN, 0, 0, I_INCSSPD }, + { "incsspq", 7, TOKEN_INSN, 0, 0, I_INCSSPQ }, + { "rdsspd", 6, TOKEN_INSN, 0, 0, I_RDSSPD }, + { "rdsspq", 6, TOKEN_INSN, 0, 0, I_RDSSPQ }, + { "rstorssp", 8, TOKEN_INSN, 0, 0, I_RSTORSSP }, + { "saveprevssp", 11, TOKEN_INSN, 0, 0, I_SAVEPREVSSP }, + { "setssbsy", 8, TOKEN_INSN, 0, 0, I_SETSSBSY }, + { "wrussd", 6, TOKEN_INSN, 0, 0, I_WRUSSD }, + { "wrussq", 6, TOKEN_INSN, 0, 0, I_WRUSSQ }, + { "wrssd", 5, TOKEN_INSN, 0, 0, I_WRSSD }, + { "wrssq", 5, TOKEN_INSN, 0, 0, I_WRSSQ }, + { "enqcmd", 6, TOKEN_INSN, 0, 0, I_ENQCMD }, + { "enqcmds", 7, TOKEN_INSN, 0, 0, I_ENQCMDS }, + { "serialize", 9, TOKEN_INSN, 0, 0, I_SERIALIZE }, + { "xresldtrk", 9, TOKEN_INSN, 0, 0, I_XRESLDTRK }, + { "xsusldtrk", 9, TOKEN_INSN, 0, 0, I_XSUSLDTRK }, + { "vcvtne2ps2bf16", 14, TOKEN_INSN, 0, 0, I_VCVTNE2PS2BF16 }, + { "vdpbf16ps", 9, TOKEN_INSN, 0, 0, I_VDPBF16PS }, + { "vp2intersectd", 13, TOKEN_INSN, 0, 0, I_VP2INTERSECTD }, + { "ldtilecfg", 9, TOKEN_INSN, 0, 0, I_LDTILECFG }, + { "sttilecfg", 9, TOKEN_INSN, 0, 0, I_STTILECFG }, + { "tdpbf16ps", 9, TOKEN_INSN, 0, 0, I_TDPBF16PS }, + { "tdpbssd", 7, TOKEN_INSN, 0, 0, I_TDPBSSD }, + { "tdpbsud", 7, TOKEN_INSN, 0, 0, I_TDPBSUD }, + { "tdpbusd", 7, TOKEN_INSN, 0, 0, I_TDPBUSD }, + { "tdpbuud", 7, TOKEN_INSN, 0, 0, I_TDPBUUD }, + { "tileloadd", 9, TOKEN_INSN, 0, 0, I_TILELOADD }, + { "tileloaddt1", 11, TOKEN_INSN, 0, 0, I_TILELOADDT1 }, + { "tilerelease", 11, TOKEN_INSN, 0, 0, I_TILERELEASE }, + { "tilestored", 10, TOKEN_INSN, 0, 0, I_TILESTORED }, + { "tilezero", 8, TOKEN_INSN, 0, 0, I_TILEZERO }, + { "vaddph", 6, TOKEN_INSN, 0, 0, I_VADDPH }, + { "vaddsh", 6, TOKEN_INSN, 0, 0, I_VADDSH }, + { "vcmpph", 6, TOKEN_INSN, 0, 0, I_VCMPPH }, + { "vcmpsh", 6, TOKEN_INSN, 0, 0, I_VCMPSH }, + { "vcomish", 7, TOKEN_INSN, 0, 0, I_VCOMISH }, + { "vcvtdq2ph", 9, TOKEN_INSN, 0, 0, I_VCVTDQ2PH }, + { "vcvtpd2ph", 9, TOKEN_INSN, 0, 0, I_VCVTPD2PH }, + { "vcvtph2dq", 9, TOKEN_INSN, 0, 0, I_VCVTPH2DQ }, + { "vcvtph2pd", 9, TOKEN_INSN, 0, 0, I_VCVTPH2PD }, + { "vcvtph2psx", 10, TOKEN_INSN, 0, 0, I_VCVTPH2PSX }, + { "vcvtph2qq", 9, TOKEN_INSN, 0, 0, I_VCVTPH2QQ }, + { "vcvtph2udq", 10, TOKEN_INSN, 0, 0, I_VCVTPH2UDQ }, + { "vcvtph2uqq", 10, TOKEN_INSN, 0, 0, I_VCVTPH2UQQ }, + { "vcvtph2uw", 9, TOKEN_INSN, 0, 0, I_VCVTPH2UW }, + { "vcvtph2w", 8, TOKEN_INSN, 0, 0, I_VCVTPH2W }, + { "vcvtqq2ph", 9, TOKEN_INSN, 0, 0, I_VCVTQQ2PH }, + { "vcvtsd2sh", 9, TOKEN_INSN, 0, 0, I_VCVTSD2SH }, + { "vcvtsh2sd", 9, TOKEN_INSN, 0, 0, I_VCVTSH2SD }, + { "vcvtsh2si", 9, TOKEN_INSN, 0, 0, I_VCVTSH2SI }, + { "vcvtsh2ss", 9, TOKEN_INSN, 0, 0, I_VCVTSH2SS }, + { "vcvtsh2usi", 10, TOKEN_INSN, 0, 0, I_VCVTSH2USI }, + { "vcvtsi2sh", 9, TOKEN_INSN, 0, 0, I_VCVTSI2SH }, + { "vcvtss2sh", 9, TOKEN_INSN, 0, 0, I_VCVTSS2SH }, + { "vcvttph2dq", 10, TOKEN_INSN, 0, 0, I_VCVTTPH2DQ }, + { "vcvttph2qq", 10, TOKEN_INSN, 0, 0, I_VCVTTPH2QQ }, + { "vcvttph2udq", 11, TOKEN_INSN, 0, 0, I_VCVTTPH2UDQ }, + { "vcvttph2uqq", 11, TOKEN_INSN, 0, 0, I_VCVTTPH2UQQ }, + { "vcvttph2uw", 10, TOKEN_INSN, 0, 0, I_VCVTTPH2UW }, + { "vcvttph2w", 9, TOKEN_INSN, 0, 0, I_VCVTTPH2W }, + { "vcvttsh2si", 10, TOKEN_INSN, 0, 0, I_VCVTTSH2SI }, + { "vcvttsh2usi", 11, TOKEN_INSN, 0, 0, I_VCVTTSH2USI }, + { "vcvtudq2ph", 10, TOKEN_INSN, 0, 0, I_VCVTUDQ2PH }, + { "vcvtuqq2ph", 10, TOKEN_INSN, 0, 0, I_VCVTUQQ2PH }, + { "vcvtusi2sh", 10, TOKEN_INSN, 0, 0, I_VCVTUSI2SH }, + { "vcvtuw2ph", 9, TOKEN_INSN, 0, 0, I_VCVTUW2PH }, + { "vcvtw2ph", 8, TOKEN_INSN, 0, 0, I_VCVTW2PH }, + { "vdivph", 6, TOKEN_INSN, 0, 0, I_VDIVPH }, + { "vdivsh", 6, TOKEN_INSN, 0, 0, I_VDIVSH }, + { "vfcmaddcph", 10, TOKEN_INSN, 0, 0, I_VFCMADDCPH }, + { "vfmaddcph", 9, TOKEN_INSN, 0, 0, I_VFMADDCPH }, + { "vfcmaddcsh", 10, TOKEN_INSN, 0, 0, I_VFCMADDCSH }, + { "vfmaddcsh", 9, TOKEN_INSN, 0, 0, I_VFMADDCSH }, + { "vfcmulcpch", 10, TOKEN_INSN, 0, 0, I_VFCMULCPCH }, + { "vfmulcpch", 9, TOKEN_INSN, 0, 0, I_VFMULCPCH }, + { "vfcmulcsh", 9, TOKEN_INSN, 0, 0, I_VFCMULCSH }, + { "vfmulcsh", 8, TOKEN_INSN, 0, 0, I_VFMULCSH }, + { "vfmaddsub132ph", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB132PH }, + { "vfmaddsub213ph", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB213PH }, + { "vfmaddsub231ph", 14, TOKEN_INSN, 0, 0, I_VFMADDSUB231PH }, + { "vfmsubadd132ph", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD132PH }, + { "vfmsubadd213ph", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD213PH }, + { "vfmsubadd231ph", 14, TOKEN_INSN, 0, 0, I_VFMSUBADD231PH }, + { "vpmadd132ph", 11, TOKEN_INSN, 0, 0, I_VPMADD132PH }, + { "vpmadd213ph", 11, TOKEN_INSN, 0, 0, I_VPMADD213PH }, + { "vpmadd231ph", 11, TOKEN_INSN, 0, 0, I_VPMADD231PH }, + { "vfmadd132ph", 11, TOKEN_INSN, 0, 0, I_VFMADD132PH }, + { "vfmadd213ph", 11, TOKEN_INSN, 0, 0, I_VFMADD213PH }, + { "vfmadd231ph", 11, TOKEN_INSN, 0, 0, I_VFMADD231PH }, + { "vpmadd132sh", 11, TOKEN_INSN, 0, 0, I_VPMADD132SH }, + { "vpmadd213sh", 11, TOKEN_INSN, 0, 0, I_VPMADD213SH }, + { "vpmadd231sh", 11, TOKEN_INSN, 0, 0, I_VPMADD231SH }, + { "vpnmadd132sh", 12, TOKEN_INSN, 0, 0, I_VPNMADD132SH }, + { "vpnmadd213sh", 12, TOKEN_INSN, 0, 0, I_VPNMADD213SH }, + { "vpnmadd231sh", 12, TOKEN_INSN, 0, 0, I_VPNMADD231SH }, + { "vpmsub132ph", 11, TOKEN_INSN, 0, 0, I_VPMSUB132PH }, + { "vpmsub213ph", 11, TOKEN_INSN, 0, 0, I_VPMSUB213PH }, + { "vpmsub231ph", 11, TOKEN_INSN, 0, 0, I_VPMSUB231PH }, + { "vfmsub132ph", 11, TOKEN_INSN, 0, 0, I_VFMSUB132PH }, + { "vfmsub213ph", 11, TOKEN_INSN, 0, 0, I_VFMSUB213PH }, + { "vfmsub231ph", 11, TOKEN_INSN, 0, 0, I_VFMSUB231PH }, + { "vpmsub132sh", 11, TOKEN_INSN, 0, 0, I_VPMSUB132SH }, + { "vpmsub213sh", 11, TOKEN_INSN, 0, 0, I_VPMSUB213SH }, + { "vpmsub231sh", 11, TOKEN_INSN, 0, 0, I_VPMSUB231SH }, + { "vpnmsub132sh", 12, TOKEN_INSN, 0, 0, I_VPNMSUB132SH }, + { "vpnmsub213sh", 12, TOKEN_INSN, 0, 0, I_VPNMSUB213SH }, + { "vpnmsub231sh", 12, TOKEN_INSN, 0, 0, I_VPNMSUB231SH }, + { "vfpclassph", 10, TOKEN_INSN, 0, 0, I_VFPCLASSPH }, + { "vfpclasssh", 10, TOKEN_INSN, 0, 0, I_VFPCLASSSH }, + { "vgetexpph", 9, TOKEN_INSN, 0, 0, I_VGETEXPPH }, + { "vgetexpsh", 9, TOKEN_INSN, 0, 0, I_VGETEXPSH }, + { "vgetmantph", 10, TOKEN_INSN, 0, 0, I_VGETMANTPH }, + { "vgetmantsh", 10, TOKEN_INSN, 0, 0, I_VGETMANTSH }, + { "vgetmaxph", 9, TOKEN_INSN, 0, 0, I_VGETMAXPH }, + { "vgetmaxsh", 9, TOKEN_INSN, 0, 0, I_VGETMAXSH }, + { "vgetminph", 9, TOKEN_INSN, 0, 0, I_VGETMINPH }, + { "vgetminsh", 9, TOKEN_INSN, 0, 0, I_VGETMINSH }, + { "vmovsh", 6, TOKEN_INSN, 0, 0, I_VMOVSH }, + { "vmovw", 5, TOKEN_INSN, 0, 0, I_VMOVW }, + { "vmulph", 6, TOKEN_INSN, 0, 0, I_VMULPH }, + { "vmulsh", 6, TOKEN_INSN, 0, 0, I_VMULSH }, + { "vrcpph", 6, TOKEN_INSN, 0, 0, I_VRCPPH }, + { "vrcpsh", 6, TOKEN_INSN, 0, 0, I_VRCPSH }, + { "vreduceph", 9, TOKEN_INSN, 0, 0, I_VREDUCEPH }, + { "vreducesh", 9, TOKEN_INSN, 0, 0, I_VREDUCESH }, + { "vendscaleph", 11, TOKEN_INSN, 0, 0, I_VENDSCALEPH }, + { "vendscalesh", 11, TOKEN_INSN, 0, 0, I_VENDSCALESH }, + { "vrsqrtph", 8, TOKEN_INSN, 0, 0, I_VRSQRTPH }, + { "vrsqrtsh", 8, TOKEN_INSN, 0, 0, I_VRSQRTSH }, + { "vscalefph", 9, TOKEN_INSN, 0, 0, I_VSCALEFPH }, + { "vscalefsh", 9, TOKEN_INSN, 0, 0, I_VSCALEFSH }, + { "vsqrtph", 7, TOKEN_INSN, 0, 0, I_VSQRTPH }, + { "vsqrtsh", 7, TOKEN_INSN, 0, 0, I_VSQRTSH }, + { "vsubph", 6, TOKEN_INSN, 0, 0, I_VSUBPH }, + { "vsubsh", 6, TOKEN_INSN, 0, 0, I_VSUBSH }, + { "vucomish", 8, TOKEN_INSN, 0, 0, I_VUCOMISH }, + { "aadd", 4, TOKEN_INSN, 0, 0, I_AADD }, + { "aand", 4, TOKEN_INSN, 0, 0, I_AAND }, + { "axor", 4, TOKEN_INSN, 0, 0, I_AXOR }, + { "clui", 4, TOKEN_INSN, 0, 0, I_CLUI }, + { "senduipi", 8, TOKEN_INSN, 0, 0, I_SENDUIPI }, + { "stui", 4, TOKEN_INSN, 0, 0, I_STUI }, + { "testui", 6, TOKEN_INSN, 0, 0, I_TESTUI }, + { "uiret", 5, TOKEN_INSN, 0, 0, I_UIRET }, + { "cmpaxadd", 8, TOKEN_INSN, 0, 0, I_CMPAXADD }, + { "cmpaexadd", 9, TOKEN_INSN, 0, 0, I_CMPAEXADD }, + { "cmpbxadd", 8, TOKEN_INSN, 0, 0, I_CMPBXADD }, + { "cmpbexadd", 9, TOKEN_INSN, 0, 0, I_CMPBEXADD }, + { "cmpcxadd", 8, TOKEN_INSN, 0, 0, I_CMPCXADD }, + { "cmpexadd", 8, TOKEN_INSN, 0, 0, I_CMPEXADD }, + { "cmpgxadd", 8, TOKEN_INSN, 0, 0, I_CMPGXADD }, + { "cmpgexadd", 9, TOKEN_INSN, 0, 0, I_CMPGEXADD }, + { "cmplxadd", 8, TOKEN_INSN, 0, 0, I_CMPLXADD }, + { "cmplexadd", 9, TOKEN_INSN, 0, 0, I_CMPLEXADD }, + { "cmpnaxadd", 9, TOKEN_INSN, 0, 0, I_CMPNAXADD }, + { "cmpnaexadd", 10, TOKEN_INSN, 0, 0, I_CMPNAEXADD }, + { "cmpnbxadd", 9, TOKEN_INSN, 0, 0, I_CMPNBXADD }, + { "cmpnbexadd", 10, TOKEN_INSN, 0, 0, I_CMPNBEXADD }, + { "cmpncxadd", 9, TOKEN_INSN, 0, 0, I_CMPNCXADD }, + { "cmpnexadd", 9, TOKEN_INSN, 0, 0, I_CMPNEXADD }, + { "cmpngxadd", 9, TOKEN_INSN, 0, 0, I_CMPNGXADD }, + { "cmpngexadd", 10, TOKEN_INSN, 0, 0, I_CMPNGEXADD }, + { "cmpnlxadd", 9, TOKEN_INSN, 0, 0, I_CMPNLXADD }, + { "cmpnlexadd", 10, TOKEN_INSN, 0, 0, I_CMPNLEXADD }, + { "cmpnoxadd", 9, TOKEN_INSN, 0, 0, I_CMPNOXADD }, + { "cmpnpxadd", 9, TOKEN_INSN, 0, 0, I_CMPNPXADD }, + { "cmpnsxadd", 9, TOKEN_INSN, 0, 0, I_CMPNSXADD }, + { "cmpnzxadd", 9, TOKEN_INSN, 0, 0, I_CMPNZXADD }, + { "cmpoxadd", 8, TOKEN_INSN, 0, 0, I_CMPOXADD }, + { "cmppxadd", 8, TOKEN_INSN, 0, 0, I_CMPPXADD }, + { "cmppexadd", 9, TOKEN_INSN, 0, 0, I_CMPPEXADD }, + { "cmppoxadd", 9, TOKEN_INSN, 0, 0, I_CMPPOXADD }, + { "cmpsxadd", 8, TOKEN_INSN, 0, 0, I_CMPSXADD }, + { "cmpzxadd", 8, TOKEN_INSN, 0, 0, I_CMPZXADD }, + { "wrmsrns", 7, TOKEN_INSN, 0, 0, I_WRMSRNS }, + { "rdmsrlist", 9, TOKEN_INSN, 0, 0, I_RDMSRLIST }, + { "wrmsrlist", 9, TOKEN_INSN, 0, 0, I_WRMSRLIST }, + { "hreset", 6, TOKEN_INSN, 0, 0, I_HRESET }, + { "hint_nop0", 9, TOKEN_INSN, 0, 0, I_HINT_NOP0 }, + { "hint_nop1", 9, TOKEN_INSN, 0, 0, I_HINT_NOP1 }, + { "hint_nop2", 9, TOKEN_INSN, 0, 0, I_HINT_NOP2 }, + { "hint_nop3", 9, TOKEN_INSN, 0, 0, I_HINT_NOP3 }, + { "hint_nop4", 9, TOKEN_INSN, 0, 0, I_HINT_NOP4 }, + { "hint_nop5", 9, TOKEN_INSN, 0, 0, I_HINT_NOP5 }, + { "hint_nop6", 9, TOKEN_INSN, 0, 0, I_HINT_NOP6 }, + { "hint_nop7", 9, TOKEN_INSN, 0, 0, I_HINT_NOP7 }, + { "hint_nop8", 9, TOKEN_INSN, 0, 0, I_HINT_NOP8 }, + { "hint_nop9", 9, TOKEN_INSN, 0, 0, I_HINT_NOP9 }, + { "hint_nop10", 10, TOKEN_INSN, 0, 0, I_HINT_NOP10 }, + { "hint_nop11", 10, TOKEN_INSN, 0, 0, I_HINT_NOP11 }, + { "hint_nop12", 10, TOKEN_INSN, 0, 0, I_HINT_NOP12 }, + { "hint_nop13", 10, TOKEN_INSN, 0, 0, I_HINT_NOP13 }, + { "hint_nop14", 10, TOKEN_INSN, 0, 0, I_HINT_NOP14 }, + { "hint_nop15", 10, TOKEN_INSN, 0, 0, I_HINT_NOP15 }, + { "hint_nop16", 10, TOKEN_INSN, 0, 0, I_HINT_NOP16 }, + { "hint_nop17", 10, TOKEN_INSN, 0, 0, I_HINT_NOP17 }, + { "hint_nop18", 10, TOKEN_INSN, 0, 0, I_HINT_NOP18 }, + { "hint_nop19", 10, TOKEN_INSN, 0, 0, I_HINT_NOP19 }, + { "hint_nop20", 10, TOKEN_INSN, 0, 0, I_HINT_NOP20 }, + { "hint_nop21", 10, TOKEN_INSN, 0, 0, I_HINT_NOP21 }, + { "hint_nop22", 10, TOKEN_INSN, 0, 0, I_HINT_NOP22 }, + { "hint_nop23", 10, TOKEN_INSN, 0, 0, I_HINT_NOP23 }, + { "hint_nop24", 10, TOKEN_INSN, 0, 0, I_HINT_NOP24 }, + { "hint_nop25", 10, TOKEN_INSN, 0, 0, I_HINT_NOP25 }, + { "hint_nop26", 10, TOKEN_INSN, 0, 0, I_HINT_NOP26 }, + { "hint_nop27", 10, TOKEN_INSN, 0, 0, I_HINT_NOP27 }, + { "hint_nop28", 10, TOKEN_INSN, 0, 0, I_HINT_NOP28 }, + { "hint_nop29", 10, TOKEN_INSN, 0, 0, I_HINT_NOP29 }, + { "hint_nop30", 10, TOKEN_INSN, 0, 0, I_HINT_NOP30 }, + { "hint_nop31", 10, TOKEN_INSN, 0, 0, I_HINT_NOP31 }, + { "hint_nop32", 10, TOKEN_INSN, 0, 0, I_HINT_NOP32 }, + { "hint_nop33", 10, TOKEN_INSN, 0, 0, I_HINT_NOP33 }, + { "hint_nop34", 10, TOKEN_INSN, 0, 0, I_HINT_NOP34 }, + { "hint_nop35", 10, TOKEN_INSN, 0, 0, I_HINT_NOP35 }, + { "hint_nop36", 10, TOKEN_INSN, 0, 0, I_HINT_NOP36 }, + { "hint_nop37", 10, TOKEN_INSN, 0, 0, I_HINT_NOP37 }, + { "hint_nop38", 10, TOKEN_INSN, 0, 0, I_HINT_NOP38 }, + { "hint_nop39", 10, TOKEN_INSN, 0, 0, I_HINT_NOP39 }, + { "hint_nop40", 10, TOKEN_INSN, 0, 0, I_HINT_NOP40 }, + { "hint_nop41", 10, TOKEN_INSN, 0, 0, I_HINT_NOP41 }, + { "hint_nop42", 10, TOKEN_INSN, 0, 0, I_HINT_NOP42 }, + { "hint_nop43", 10, TOKEN_INSN, 0, 0, I_HINT_NOP43 }, + { "hint_nop44", 10, TOKEN_INSN, 0, 0, I_HINT_NOP44 }, + { "hint_nop45", 10, TOKEN_INSN, 0, 0, I_HINT_NOP45 }, + { "hint_nop46", 10, TOKEN_INSN, 0, 0, I_HINT_NOP46 }, + { "hint_nop47", 10, TOKEN_INSN, 0, 0, I_HINT_NOP47 }, + { "hint_nop48", 10, TOKEN_INSN, 0, 0, I_HINT_NOP48 }, + { "hint_nop49", 10, TOKEN_INSN, 0, 0, I_HINT_NOP49 }, + { "hint_nop50", 10, TOKEN_INSN, 0, 0, I_HINT_NOP50 }, + { "hint_nop51", 10, TOKEN_INSN, 0, 0, I_HINT_NOP51 }, + { "hint_nop52", 10, TOKEN_INSN, 0, 0, I_HINT_NOP52 }, + { "hint_nop53", 10, TOKEN_INSN, 0, 0, I_HINT_NOP53 }, + { "hint_nop54", 10, TOKEN_INSN, 0, 0, I_HINT_NOP54 }, + { "hint_nop55", 10, TOKEN_INSN, 0, 0, I_HINT_NOP55 }, + { "hint_nop56", 10, TOKEN_INSN, 0, 0, I_HINT_NOP56 }, + { "hint_nop57", 10, TOKEN_INSN, 0, 0, I_HINT_NOP57 }, + { "hint_nop58", 10, TOKEN_INSN, 0, 0, I_HINT_NOP58 }, + { "hint_nop59", 10, TOKEN_INSN, 0, 0, I_HINT_NOP59 }, + { "hint_nop60", 10, TOKEN_INSN, 0, 0, I_HINT_NOP60 }, + { "hint_nop61", 10, TOKEN_INSN, 0, 0, I_HINT_NOP61 }, + { "hint_nop62", 10, TOKEN_INSN, 0, 0, I_HINT_NOP62 }, + { "hint_nop63", 10, TOKEN_INSN, 0, 0, I_HINT_NOP63 }, + { "al", 2, TOKEN_REG, 0, 0, R_AL }, + { "ah", 2, TOKEN_REG, 0, 0, R_AH }, + { "ax", 2, TOKEN_REG, 0, 0, R_AX }, + { "eax", 3, TOKEN_REG, 0, 0, R_EAX }, + { "rax", 3, TOKEN_REG, 0, 0, R_RAX }, + { "bl", 2, TOKEN_REG, 0, 0, R_BL }, + { "bh", 2, TOKEN_REG, 0, 0, R_BH }, + { "bx", 2, TOKEN_REG, 0, 0, R_BX }, + { "ebx", 3, TOKEN_REG, 0, 0, R_EBX }, + { "rbx", 3, TOKEN_REG, 0, 0, R_RBX }, + { "cl", 2, TOKEN_REG, 0, 0, R_CL }, + { "ch", 2, TOKEN_REG, 0, 0, R_CH }, + { "cx", 2, TOKEN_REG, 0, 0, R_CX }, + { "ecx", 3, TOKEN_REG, 0, 0, R_ECX }, + { "rcx", 3, TOKEN_REG, 0, 0, R_RCX }, + { "dl", 2, TOKEN_REG, 0, 0, R_DL }, + { "dh", 2, TOKEN_REG, 0, 0, R_DH }, + { "dx", 2, TOKEN_REG, 0, 0, R_DX }, + { "edx", 3, TOKEN_REG, 0, 0, R_EDX }, + { "rdx", 3, TOKEN_REG, 0, 0, R_RDX }, + { "spl", 3, TOKEN_REG, 0, 0, R_SPL }, + { "sp", 2, TOKEN_REG, 0, 0, R_SP }, + { "esp", 3, TOKEN_REG, 0, 0, R_ESP }, + { "rsp", 3, TOKEN_REG, 0, 0, R_RSP }, + { "bpl", 3, TOKEN_REG, 0, 0, R_BPL }, + { "bp", 2, TOKEN_REG, 0, 0, R_BP }, + { "ebp", 3, TOKEN_REG, 0, 0, R_EBP }, + { "rbp", 3, TOKEN_REG, 0, 0, R_RBP }, + { "sil", 3, TOKEN_REG, 0, 0, R_SIL }, + { "si", 2, TOKEN_REG, 0, 0, R_SI }, + { "esi", 3, TOKEN_REG, 0, 0, R_ESI }, + { "rsi", 3, TOKEN_REG, 0, 0, R_RSI }, + { "dil", 3, TOKEN_REG, 0, 0, R_DIL }, + { "di", 2, TOKEN_REG, 0, 0, R_DI }, + { "edi", 3, TOKEN_REG, 0, 0, R_EDI }, + { "rdi", 3, TOKEN_REG, 0, 0, R_RDI }, + { "r8b", 3, TOKEN_REG, 0, 0, R_R8B }, + { "r9b", 3, TOKEN_REG, 0, 0, R_R9B }, + { "r10b", 4, TOKEN_REG, 0, 0, R_R10B }, + { "r11b", 4, TOKEN_REG, 0, 0, R_R11B }, + { "r12b", 4, TOKEN_REG, 0, 0, R_R12B }, + { "r13b", 4, TOKEN_REG, 0, 0, R_R13B }, + { "r14b", 4, TOKEN_REG, 0, 0, R_R14B }, + { "r15b", 4, TOKEN_REG, 0, 0, R_R15B }, + { "r8w", 3, TOKEN_REG, 0, 0, R_R8W }, + { "r9w", 3, TOKEN_REG, 0, 0, R_R9W }, + { "r10w", 4, TOKEN_REG, 0, 0, R_R10W }, + { "r11w", 4, TOKEN_REG, 0, 0, R_R11W }, + { "r12w", 4, TOKEN_REG, 0, 0, R_R12W }, + { "r13w", 4, TOKEN_REG, 0, 0, R_R13W }, + { "r14w", 4, TOKEN_REG, 0, 0, R_R14W }, + { "r15w", 4, TOKEN_REG, 0, 0, R_R15W }, + { "r8d", 3, TOKEN_REG, 0, 0, R_R8D }, + { "r9d", 3, TOKEN_REG, 0, 0, R_R9D }, + { "r10d", 4, TOKEN_REG, 0, 0, R_R10D }, + { "r11d", 4, TOKEN_REG, 0, 0, R_R11D }, + { "r12d", 4, TOKEN_REG, 0, 0, R_R12D }, + { "r13d", 4, TOKEN_REG, 0, 0, R_R13D }, + { "r14d", 4, TOKEN_REG, 0, 0, R_R14D }, + { "r15d", 4, TOKEN_REG, 0, 0, R_R15D }, + { "r8", 2, TOKEN_REG, 0, 0, R_R8 }, + { "r9", 2, TOKEN_REG, 0, 0, R_R9 }, + { "r10", 3, TOKEN_REG, 0, 0, R_R10 }, + { "r11", 3, TOKEN_REG, 0, 0, R_R11 }, + { "r12", 3, TOKEN_REG, 0, 0, R_R12 }, + { "r13", 3, TOKEN_REG, 0, 0, R_R13 }, + { "r14", 3, TOKEN_REG, 0, 0, R_R14 }, + { "r15", 3, TOKEN_REG, 0, 0, R_R15 }, + { "es", 2, TOKEN_REG, 0, 0, R_ES }, + { "cs", 2, TOKEN_REG, 0, 0, R_CS }, + { "ss", 2, TOKEN_REG, 0, 0, R_SS }, + { "ds", 2, TOKEN_REG, 0, 0, R_DS }, + { "fs", 2, TOKEN_REG, 0, 0, R_FS }, + { "gs", 2, TOKEN_REG, 0, 0, R_GS }, + { "segr6", 5, TOKEN_REG, 0, 0, R_SEGR6 }, + { "segr7", 5, TOKEN_REG, 0, 0, R_SEGR7 }, + { "cr0", 3, TOKEN_REG, 0, 0, R_CR0 }, + { "cr1", 3, TOKEN_REG, 0, 0, R_CR1 }, + { "cr2", 3, TOKEN_REG, 0, 0, R_CR2 }, + { "cr3", 3, TOKEN_REG, 0, 0, R_CR3 }, + { "cr4", 3, TOKEN_REG, 0, 0, R_CR4 }, + { "cr5", 3, TOKEN_REG, 0, 0, R_CR5 }, + { "cr6", 3, TOKEN_REG, 0, 0, R_CR6 }, + { "cr7", 3, TOKEN_REG, 0, 0, R_CR7 }, + { "cr8", 3, TOKEN_REG, 0, 0, R_CR8 }, + { "cr9", 3, TOKEN_REG, 0, 0, R_CR9 }, + { "cr10", 4, TOKEN_REG, 0, 0, R_CR10 }, + { "cr11", 4, TOKEN_REG, 0, 0, R_CR11 }, + { "cr12", 4, TOKEN_REG, 0, 0, R_CR12 }, + { "cr13", 4, TOKEN_REG, 0, 0, R_CR13 }, + { "cr14", 4, TOKEN_REG, 0, 0, R_CR14 }, + { "cr15", 4, TOKEN_REG, 0, 0, R_CR15 }, + { "dr0", 3, TOKEN_REG, 0, 0, R_DR0 }, + { "dr1", 3, TOKEN_REG, 0, 0, R_DR1 }, + { "dr2", 3, TOKEN_REG, 0, 0, R_DR2 }, + { "dr3", 3, TOKEN_REG, 0, 0, R_DR3 }, + { "dr4", 3, TOKEN_REG, 0, 0, R_DR4 }, + { "dr5", 3, TOKEN_REG, 0, 0, R_DR5 }, + { "dr6", 3, TOKEN_REG, 0, 0, R_DR6 }, + { "dr7", 3, TOKEN_REG, 0, 0, R_DR7 }, + { "dr8", 3, TOKEN_REG, 0, 0, R_DR8 }, + { "dr9", 3, TOKEN_REG, 0, 0, R_DR9 }, + { "dr10", 4, TOKEN_REG, 0, 0, R_DR10 }, + { "dr11", 4, TOKEN_REG, 0, 0, R_DR11 }, + { "dr12", 4, TOKEN_REG, 0, 0, R_DR12 }, + { "dr13", 4, TOKEN_REG, 0, 0, R_DR13 }, + { "dr14", 4, TOKEN_REG, 0, 0, R_DR14 }, + { "dr15", 4, TOKEN_REG, 0, 0, R_DR15 }, + { "tr0", 3, TOKEN_REG, 0, 0, R_TR0 }, + { "tr1", 3, TOKEN_REG, 0, 0, R_TR1 }, + { "tr2", 3, TOKEN_REG, 0, 0, R_TR2 }, + { "tr3", 3, TOKEN_REG, 0, 0, R_TR3 }, + { "tr4", 3, TOKEN_REG, 0, 0, R_TR4 }, + { "tr5", 3, TOKEN_REG, 0, 0, R_TR5 }, + { "tr6", 3, TOKEN_REG, 0, 0, R_TR6 }, + { "tr7", 3, TOKEN_REG, 0, 0, R_TR7 }, + { "st0", 3, TOKEN_REG, 0, 0, R_ST0 }, + { "st1", 3, TOKEN_REG, 0, 0, R_ST1 }, + { "st2", 3, TOKEN_REG, 0, 0, R_ST2 }, + { "st3", 3, TOKEN_REG, 0, 0, R_ST3 }, + { "st4", 3, TOKEN_REG, 0, 0, R_ST4 }, + { "st5", 3, TOKEN_REG, 0, 0, R_ST5 }, + { "st6", 3, TOKEN_REG, 0, 0, R_ST6 }, + { "st7", 3, TOKEN_REG, 0, 0, R_ST7 }, + { "mm0", 3, TOKEN_REG, 0, 0, R_MM0 }, + { "mm1", 3, TOKEN_REG, 0, 0, R_MM1 }, + { "mm2", 3, TOKEN_REG, 0, 0, R_MM2 }, + { "mm3", 3, TOKEN_REG, 0, 0, R_MM3 }, + { "mm4", 3, TOKEN_REG, 0, 0, R_MM4 }, + { "mm5", 3, TOKEN_REG, 0, 0, R_MM5 }, + { "mm6", 3, TOKEN_REG, 0, 0, R_MM6 }, + { "mm7", 3, TOKEN_REG, 0, 0, R_MM7 }, + { "xmm0", 4, TOKEN_REG, 0, 0, R_XMM0 }, + { "xmm1", 4, TOKEN_REG, 0, 0, R_XMM1 }, + { "xmm2", 4, TOKEN_REG, 0, 0, R_XMM2 }, + { "xmm3", 4, TOKEN_REG, 0, 0, R_XMM3 }, + { "xmm4", 4, TOKEN_REG, 0, 0, R_XMM4 }, + { "xmm5", 4, TOKEN_REG, 0, 0, R_XMM5 }, + { "xmm6", 4, TOKEN_REG, 0, 0, R_XMM6 }, + { "xmm7", 4, TOKEN_REG, 0, 0, R_XMM7 }, + { "xmm8", 4, TOKEN_REG, 0, 0, R_XMM8 }, + { "xmm9", 4, TOKEN_REG, 0, 0, R_XMM9 }, + { "xmm10", 5, TOKEN_REG, 0, 0, R_XMM10 }, + { "xmm11", 5, TOKEN_REG, 0, 0, R_XMM11 }, + { "xmm12", 5, TOKEN_REG, 0, 0, R_XMM12 }, + { "xmm13", 5, TOKEN_REG, 0, 0, R_XMM13 }, + { "xmm14", 5, TOKEN_REG, 0, 0, R_XMM14 }, + { "xmm15", 5, TOKEN_REG, 0, 0, R_XMM15 }, + { "xmm16", 5, TOKEN_REG, 0, 0, R_XMM16 }, + { "xmm17", 5, TOKEN_REG, 0, 0, R_XMM17 }, + { "xmm18", 5, TOKEN_REG, 0, 0, R_XMM18 }, + { "xmm19", 5, TOKEN_REG, 0, 0, R_XMM19 }, + { "xmm20", 5, TOKEN_REG, 0, 0, R_XMM20 }, + { "xmm21", 5, TOKEN_REG, 0, 0, R_XMM21 }, + { "xmm22", 5, TOKEN_REG, 0, 0, R_XMM22 }, + { "xmm23", 5, TOKEN_REG, 0, 0, R_XMM23 }, + { "xmm24", 5, TOKEN_REG, 0, 0, R_XMM24 }, + { "xmm25", 5, TOKEN_REG, 0, 0, R_XMM25 }, + { "xmm26", 5, TOKEN_REG, 0, 0, R_XMM26 }, + { "xmm27", 5, TOKEN_REG, 0, 0, R_XMM27 }, + { "xmm28", 5, TOKEN_REG, 0, 0, R_XMM28 }, + { "xmm29", 5, TOKEN_REG, 0, 0, R_XMM29 }, + { "xmm30", 5, TOKEN_REG, 0, 0, R_XMM30 }, + { "xmm31", 5, TOKEN_REG, 0, 0, R_XMM31 }, + { "ymm0", 4, TOKEN_REG, 0, 0, R_YMM0 }, + { "ymm1", 4, TOKEN_REG, 0, 0, R_YMM1 }, + { "ymm2", 4, TOKEN_REG, 0, 0, R_YMM2 }, + { "ymm3", 4, TOKEN_REG, 0, 0, R_YMM3 }, + { "ymm4", 4, TOKEN_REG, 0, 0, R_YMM4 }, + { "ymm5", 4, TOKEN_REG, 0, 0, R_YMM5 }, + { "ymm6", 4, TOKEN_REG, 0, 0, R_YMM6 }, + { "ymm7", 4, TOKEN_REG, 0, 0, R_YMM7 }, + { "ymm8", 4, TOKEN_REG, 0, 0, R_YMM8 }, + { "ymm9", 4, TOKEN_REG, 0, 0, R_YMM9 }, + { "ymm10", 5, TOKEN_REG, 0, 0, R_YMM10 }, + { "ymm11", 5, TOKEN_REG, 0, 0, R_YMM11 }, + { "ymm12", 5, TOKEN_REG, 0, 0, R_YMM12 }, + { "ymm13", 5, TOKEN_REG, 0, 0, R_YMM13 }, + { "ymm14", 5, TOKEN_REG, 0, 0, R_YMM14 }, + { "ymm15", 5, TOKEN_REG, 0, 0, R_YMM15 }, + { "ymm16", 5, TOKEN_REG, 0, 0, R_YMM16 }, + { "ymm17", 5, TOKEN_REG, 0, 0, R_YMM17 }, + { "ymm18", 5, TOKEN_REG, 0, 0, R_YMM18 }, + { "ymm19", 5, TOKEN_REG, 0, 0, R_YMM19 }, + { "ymm20", 5, TOKEN_REG, 0, 0, R_YMM20 }, + { "ymm21", 5, TOKEN_REG, 0, 0, R_YMM21 }, + { "ymm22", 5, TOKEN_REG, 0, 0, R_YMM22 }, + { "ymm23", 5, TOKEN_REG, 0, 0, R_YMM23 }, + { "ymm24", 5, TOKEN_REG, 0, 0, R_YMM24 }, + { "ymm25", 5, TOKEN_REG, 0, 0, R_YMM25 }, + { "ymm26", 5, TOKEN_REG, 0, 0, R_YMM26 }, + { "ymm27", 5, TOKEN_REG, 0, 0, R_YMM27 }, + { "ymm28", 5, TOKEN_REG, 0, 0, R_YMM28 }, + { "ymm29", 5, TOKEN_REG, 0, 0, R_YMM29 }, + { "ymm30", 5, TOKEN_REG, 0, 0, R_YMM30 }, + { "ymm31", 5, TOKEN_REG, 0, 0, R_YMM31 }, + { "zmm0", 4, TOKEN_REG, 0, 0, R_ZMM0 }, + { "zmm1", 4, TOKEN_REG, 0, 0, R_ZMM1 }, + { "zmm2", 4, TOKEN_REG, 0, 0, R_ZMM2 }, + { "zmm3", 4, TOKEN_REG, 0, 0, R_ZMM3 }, + { "zmm4", 4, TOKEN_REG, 0, 0, R_ZMM4 }, + { "zmm5", 4, TOKEN_REG, 0, 0, R_ZMM5 }, + { "zmm6", 4, TOKEN_REG, 0, 0, R_ZMM6 }, + { "zmm7", 4, TOKEN_REG, 0, 0, R_ZMM7 }, + { "zmm8", 4, TOKEN_REG, 0, 0, R_ZMM8 }, + { "zmm9", 4, TOKEN_REG, 0, 0, R_ZMM9 }, + { "zmm10", 5, TOKEN_REG, 0, 0, R_ZMM10 }, + { "zmm11", 5, TOKEN_REG, 0, 0, R_ZMM11 }, + { "zmm12", 5, TOKEN_REG, 0, 0, R_ZMM12 }, + { "zmm13", 5, TOKEN_REG, 0, 0, R_ZMM13 }, + { "zmm14", 5, TOKEN_REG, 0, 0, R_ZMM14 }, + { "zmm15", 5, TOKEN_REG, 0, 0, R_ZMM15 }, + { "zmm16", 5, TOKEN_REG, 0, 0, R_ZMM16 }, + { "zmm17", 5, TOKEN_REG, 0, 0, R_ZMM17 }, + { "zmm18", 5, TOKEN_REG, 0, 0, R_ZMM18 }, + { "zmm19", 5, TOKEN_REG, 0, 0, R_ZMM19 }, + { "zmm20", 5, TOKEN_REG, 0, 0, R_ZMM20 }, + { "zmm21", 5, TOKEN_REG, 0, 0, R_ZMM21 }, + { "zmm22", 5, TOKEN_REG, 0, 0, R_ZMM22 }, + { "zmm23", 5, TOKEN_REG, 0, 0, R_ZMM23 }, + { "zmm24", 5, TOKEN_REG, 0, 0, R_ZMM24 }, + { "zmm25", 5, TOKEN_REG, 0, 0, R_ZMM25 }, + { "zmm26", 5, TOKEN_REG, 0, 0, R_ZMM26 }, + { "zmm27", 5, TOKEN_REG, 0, 0, R_ZMM27 }, + { "zmm28", 5, TOKEN_REG, 0, 0, R_ZMM28 }, + { "zmm29", 5, TOKEN_REG, 0, 0, R_ZMM29 }, + { "zmm30", 5, TOKEN_REG, 0, 0, R_ZMM30 }, + { "zmm31", 5, TOKEN_REG, 0, 0, R_ZMM31 }, + { "tmm0", 4, TOKEN_REG, 0, 0, R_TMM0 }, + { "tmm1", 4, TOKEN_REG, 0, 0, R_TMM1 }, + { "tmm2", 4, TOKEN_REG, 0, 0, R_TMM2 }, + { "tmm3", 4, TOKEN_REG, 0, 0, R_TMM3 }, + { "tmm4", 4, TOKEN_REG, 0, 0, R_TMM4 }, + { "tmm5", 4, TOKEN_REG, 0, 0, R_TMM5 }, + { "tmm6", 4, TOKEN_REG, 0, 0, R_TMM6 }, + { "tmm7", 4, TOKEN_REG, 0, 0, R_TMM7 }, + { "k0", 2, TOKEN_REG, 0, 0, R_K0 }, + { "k1", 2, TOKEN_REG, 0, TFLAG_BRC_OPT, R_K1 }, + { "k2", 2, TOKEN_REG, 0, TFLAG_BRC_OPT, R_K2 }, + { "k3", 2, TOKEN_REG, 0, TFLAG_BRC_OPT, R_K3 }, + { "k4", 2, TOKEN_REG, 0, TFLAG_BRC_OPT, R_K4 }, + { "k5", 2, TOKEN_REG, 0, TFLAG_BRC_OPT, R_K5 }, + { "k6", 2, TOKEN_REG, 0, TFLAG_BRC_OPT, R_K6 }, + { "k7", 2, TOKEN_REG, 0, TFLAG_BRC_OPT, R_K7 }, + { "bnd0", 4, TOKEN_REG, 0, 0, R_BND0 }, + { "bnd1", 4, TOKEN_REG, 0, 0, R_BND1 }, + { "bnd2", 4, TOKEN_REG, 0, 0, R_BND2 }, + { "bnd3", 4, TOKEN_REG, 0, 0, R_BND3 }, + { "?", 1, TOKEN_QMARK, 0, 0, 0 }, + { "a16", 3, TOKEN_PREFIX, PPS_ASIZE, 0, P_A16 }, + { "a32", 3, TOKEN_PREFIX, PPS_ASIZE, 0, P_A32 }, + { "a64", 3, TOKEN_PREFIX, PPS_ASIZE, 0, P_A64 }, + { "asp", 3, TOKEN_PREFIX, PPS_ASIZE, 0, P_ASP }, + { "lock", 4, TOKEN_PREFIX, PPS_LOCK, 0, P_LOCK }, + { "o16", 3, TOKEN_PREFIX, PPS_OSIZE, 0, P_O16 }, + { "o32", 3, TOKEN_PREFIX, PPS_OSIZE, 0, P_O32 }, + { "o64", 3, TOKEN_PREFIX, PPS_OSIZE, 0, P_O64 }, + { "osp", 3, TOKEN_PREFIX, PPS_OSIZE, 0, P_OSP }, + { "rep", 3, TOKEN_PREFIX, PPS_REP, 0, P_REP }, + { "repe", 4, TOKEN_PREFIX, PPS_REP, 0, P_REPE }, + { "repne", 5, TOKEN_PREFIX, PPS_REP, 0, P_REPNE }, + { "repnz", 5, TOKEN_PREFIX, PPS_REP, 0, P_REPNZ }, + { "repz", 4, TOKEN_PREFIX, PPS_REP, 0, P_REPZ }, + { "xacquire", 8, TOKEN_PREFIX, PPS_REP, 0, P_XACQUIRE }, + { "xrelease", 8, TOKEN_PREFIX, PPS_REP, 0, P_XRELEASE }, + { "bnd", 3, TOKEN_PREFIX, PPS_REP, 0, P_BND }, + { "nobnd", 5, TOKEN_PREFIX, PPS_REP, 0, P_NOBND }, + { "times", 5, TOKEN_PREFIX, PPS_TIMES, 0, P_TIMES }, + { "wait", 4, TOKEN_PREFIX, PPS_WAIT, 0, P_WAIT }, + { "rex", 3, TOKEN_PREFIX, PPS_REX, TFLAG_BRC, P_REX }, + { "evex", 4, TOKEN_PREFIX, PPS_REX, TFLAG_BRC, P_EVEX }, + { "vex", 3, TOKEN_PREFIX, PPS_REX, TFLAG_BRC, P_VEX }, + { "vex3", 4, TOKEN_PREFIX, PPS_REX, TFLAG_BRC, P_VEX3 }, + { "vex2", 4, TOKEN_PREFIX, PPS_REX, TFLAG_BRC, P_VEX2 }, + { "byte", 4, TOKEN_SIZE, SIZE_BYTE, 0, S_BYTE }, + { "word", 4, TOKEN_SIZE, SIZE_WORD, 0, S_WORD }, + { "dword", 5, TOKEN_SIZE, SIZE_DWORD, 0, S_DWORD }, + { "qword", 5, TOKEN_SIZE, SIZE_QWORD, 0, S_QWORD }, + { "tword", 5, TOKEN_SIZE, SIZE_TWORD, 0, S_TWORD }, + { "oword", 5, TOKEN_SIZE, SIZE_OWORD, 0, S_OWORD }, + { "yword", 5, TOKEN_SIZE, SIZE_YWORD, 0, S_YWORD }, + { "zword", 5, TOKEN_SIZE, SIZE_ZWORD, 0, S_ZWORD }, + { "abs", 3, TOKEN_SPECIAL, 0, 0, S_ABS }, + { "far", 3, TOKEN_SPECIAL, 0, 0, S_FAR }, + { "long", 4, TOKEN_SPECIAL, 0, 0, S_LONG }, + { "near", 4, TOKEN_SPECIAL, 0, 0, S_NEAR }, + { "nosplit", 7, TOKEN_SPECIAL, 0, 0, S_NOSPLIT }, + { "rel", 3, TOKEN_SPECIAL, 0, 0, S_REL }, + { "short", 5, TOKEN_SPECIAL, 0, 0, S_SHORT }, + { "strict", 6, TOKEN_SPECIAL, 0, 0, S_STRICT }, + { "to", 2, TOKEN_SPECIAL, 0, 0, S_TO }, + { "ptr", 3, TOKEN_ID, 0, TFLAG_WARN, 0 }, + { "dup", 3, TOKEN_ID, 0, TFLAG_DUP, 0 }, + { "__?infinity?__", 14, TOKEN_FLOAT, 0, 0, 0 }, + { "__?nan?__", 9, TOKEN_FLOAT, 0, 0, 0 }, + { "__?qnan?__", 10, TOKEN_FLOAT, 0, 0, 0 }, + { "__?snan?__", 10, TOKEN_FLOAT, 0, 0, 0 }, + { "__?float8?__", 12, TOKEN_FLOATIZE, 0, 0, FLOAT_8 }, + { "__?float16?__", 13, TOKEN_FLOATIZE, 0, 0, FLOAT_16 }, + { "__?float32?__", 13, TOKEN_FLOATIZE, 0, 0, FLOAT_32 }, + { "__?float64?__", 13, TOKEN_FLOATIZE, 0, 0, FLOAT_64 }, + { "__?float80m?__", 14, TOKEN_FLOATIZE, 0, 0, FLOAT_80M }, + { "__?float80e?__", 14, TOKEN_FLOATIZE, 0, 0, FLOAT_80E }, + { "__?float128l?__", 15, TOKEN_FLOATIZE, 0, 0, FLOAT_128L }, + { "__?float128h?__", 15, TOKEN_FLOATIZE, 0, 0, FLOAT_128H }, + { "__?bfloat16?__", 14, TOKEN_FLOATIZE, 0, 0, FLOAT_B16 }, + { "__?utf16?__", 11, TOKEN_STRFUNC, 0, 0, STRFUNC_UTF16 }, + { "__?utf16le?__", 13, TOKEN_STRFUNC, 0, 0, STRFUNC_UTF16LE }, + { "__?utf16be?__", 13, TOKEN_STRFUNC, 0, 0, STRFUNC_UTF16BE }, + { "__?utf32?__", 11, TOKEN_STRFUNC, 0, 0, STRFUNC_UTF32 }, + { "__?utf32le?__", 13, TOKEN_STRFUNC, 0, 0, STRFUNC_UTF32LE }, + { "__?utf32be?__", 13, TOKEN_STRFUNC, 0, 0, STRFUNC_UTF32BE }, + { "__?ilog2e?__", 12, TOKEN_IFUNC, 0, 0, IFUNC_ILOG2E }, + { "__?ilog2w?__", 12, TOKEN_IFUNC, 0, 0, IFUNC_ILOG2W }, + { "__?ilog2f?__", 12, TOKEN_IFUNC, 0, 0, IFUNC_ILOG2F }, + { "__?ilog2c?__", 12, TOKEN_IFUNC, 0, 0, IFUNC_ILOG2C }, + { "seg", 3, TOKEN_SEG, 0, 0, 0 }, + { "wrt", 3, TOKEN_WRT, 0, 0, 0 }, + { "__?masm_ptr?__", 14, TOKEN_MASM_PTR, 0, 0, 0 }, + { "__?masm_flat?__", 15, TOKEN_MASM_FLAT, 0, 0, 0 }, + { "1to2", 4, TOKEN_DECORATOR, 0, TFLAG_BRC | TFLAG_BRDCAST , BRC_1TO2 }, + { "1to4", 4, TOKEN_DECORATOR, 0, TFLAG_BRC | TFLAG_BRDCAST , BRC_1TO4 }, + { "1to8", 4, TOKEN_DECORATOR, 0, TFLAG_BRC | TFLAG_BRDCAST , BRC_1TO8 }, + { "1to16", 5, TOKEN_DECORATOR, 0, TFLAG_BRC | TFLAG_BRDCAST , BRC_1TO16 }, + { "1to32", 5, TOKEN_DECORATOR, 0, TFLAG_BRC | TFLAG_BRDCAST , BRC_1TO32 }, + { "rn-sae", 6, TOKEN_DECORATOR, 0, TFLAG_BRC, BRC_RN }, + { "rd-sae", 6, TOKEN_DECORATOR, 0, TFLAG_BRC, BRC_RD }, + { "ru-sae", 6, TOKEN_DECORATOR, 0, TFLAG_BRC, BRC_RU }, + { "rz-sae", 6, TOKEN_DECORATOR, 0, TFLAG_BRC, BRC_RZ }, + { "sae", 3, TOKEN_DECORATOR, 0, TFLAG_BRC, BRC_SAE }, + { "z", 1, TOKEN_DECORATOR, 0, TFLAG_BRC, BRC_Z }, + { ">>", 2, TOKEN_SHR, 0, 0, 0 }, + { ">>>", 3, TOKEN_SAR, 0, 0, 0 }, + { "<<", 2, TOKEN_SHL, 0, 0, 0 }, + { "<<<", 3, TOKEN_SHL, 0, 0, 0 }, + { "//", 2, TOKEN_SDIV, 0, 0, 0 }, + { "%%", 2, TOKEN_SMOD, 0, 0, 0 }, + { "==", 2, TOKEN_EQ, 0, 0, 0 }, + { "!=", 2, TOKEN_NE, 0, 0, 0 }, + { "<>", 2, TOKEN_NE, 0, 0, 0 }, + { "<=", 2, TOKEN_LE, 0, 0, 0 }, + { ">=", 2, TOKEN_GE, 0, 0, 0 }, + { "<=>", 3, TOKEN_LEG, 0, 0, 0 }, + { "&&", 2, TOKEN_DBL_AND, 0, 0, 0 }, + { "||", 2, TOKEN_DBL_OR, 0, 0, 0 }, + { "^^", 2, TOKEN_DBL_XOR, 0, 0, 0 }, + }; + uint32_t k1, k2; + uint16_t ix; + const struct tokendata *data; + char lcbuf[18]; + const char *p = token; + char c, *q = lcbuf; + size_t len = 0; + uint64_t crc = UINT64_C(0x076259c3e291c26c); + + while ((c = *p++)) { + if (++len > 17) + goto notfound; + *q++ = c = nasm_tolower(c); + crc = crc64_byte(crc, c); + }; + + k1 = ((uint32_t)crc & 0x3ffe) + 0; + k2 = ((uint32_t)(crc >> 32) & 0x3ffe) + 1; + + ix = hashdata[k1] + hashdata[k2]; + if (ix >= 2594) + goto notfound; + + data = &tokendata[ix]; + if (data->len != len) + goto notfound; + if (memcmp(data->string, lcbuf, len)) + goto notfound; + + tv->t_integer = data->num; + tv->t_inttwo = data->aux; + tv->t_flag = data->tokflag; + return tv->t_type = data->tokentype; + +notfound: + tv->t_integer = 0; + tv->t_inttwo = 0; + tv->t_flag = 0; + return tv->t_type = TOKEN_ID; +} diff --git a/vere/ext/nasm/asm/tokhash.pl b/vere/ext/nasm/asm/tokhash.pl new file mode 100755 index 0000000..1f19647 --- /dev/null +++ b/vere/ext/nasm/asm/tokhash.pl @@ -0,0 +1,282 @@ +#!/usr/bin/perl +## -------------------------------------------------------------------------- +## +## Copyright 1996-2020 The NASM Authors - All Rights Reserved +## See the file AUTHORS included with the NASM distribution for +## the specific copyright holders. +## +## 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. +## +## -------------------------------------------------------------------------- + +# +# Generate a perfect hash for token parsing +# +# Usage: tokenhash.pl insns.dat regs.dat tokens.dat +# + +require 'phash.ph'; + +my($output, $insnsn_c, $regs_dat, $tokens_dat) = @ARGV; + +%tokens = (); +@tokendata = (); + +# +# List of condition codes +# +@conditions = ('a', 'ae', 'b', 'be', 'c', 'e', 'g', 'ge', 'l', 'le', + 'na', 'nae', 'nb', 'nbe', 'nc', 'ne', 'ng', 'nge', 'nl', + 'nle', 'no', 'np', 'ns', 'nz', 'o', 'p', 'pe', 'po', 's', 'z'); + +# +# Read insnsn.c +# +open(ID, '<', $insnsn_c) or die "$0: cannot open $insnsn_c: $!\n"; +while (defined($line = )) { + next unless ($line =~ /^\s*\"([\?\@a-z0-9_]+)\"/); + + my $token = $1; + next if (defined($tokens{$token})); # This should never happen + + $tokens{$token} = scalar @tokendata; + push(@tokendata, "\"${token}\", ".length($token). + ", TOKEN_INSN, 0, 0, I_\U${token}"); +} +close(ID); + +# +# Read regs.dat +# +open(RD, '<', $regs_dat) or die "$0: cannot open $regs_dat: $!\n"; +while (defined($line = )) { + if ($line =~ /^([\?\@a-z0-9_-]+)\s*\S+\s*\S+\s*[0-9]+\s*(\S*)/) { + $reg = $1; + $reg_flag = $2; + + if ($reg =~ /^(.*[^0-9])([0-9]+)\-([0-9]+)(|[^0-9].*)$/) { + $nregs = $3-$2+1; + $reg = $1.$2.$4; + $reg_nr = $2; + $reg_prefix = $1; + $reg_suffix = $4; + } else { + $nregs = 1; + undef $reg_prefix; + undef $reg_suffix; + } + + while ($nregs--) { + if (defined($tokens{$reg})) { + die "Duplicate definition: $reg\n"; + } + $tokens{$reg} = scalar @tokendata; + $reg_flag = '0' if ($reg_flag eq ''); + push(@tokendata, "\"${reg}\", ".length($reg).", TOKEN_REG, 0, ${reg_flag}, R_\U${reg}\E"); + + if (defined($reg_prefix)) { + $reg_nr++; + $reg = sprintf("%s%u%s", $reg_prefix, $reg_nr, $reg_suffix); + } else { + # Not a dashed sequence + die if ($nregs); + } + } + } +} +close(RD); + +# +# Read tokens.dat +# +open(TD, '<', $tokens_dat) or die "$0: cannot open $tokens_dat: $!\n"; +while (defined($line = )) { + $line =~ s/\s*(|\#.*)$//; + if ($line =~ /^\%\s+(.*)$/) { + $pattern = $1; + } elsif ($line =~ /^(\S+)/) { + $token = $1; + + if (defined($tokens{$token})) { + die "Duplicate definition: $token\n"; + } + $tokens{$token} = scalar @tokendata; + + $data = $pattern; + if ($data =~ /^(.*)\{(.*)\}(.*)$/) { + my $head = $1, $tail = $3; + my $px = $2; + + $px =~ s/\?/\\?/g; + $px =~ s/\*/(.*)/g; + if ($token =~ /$px/i) { + $data = $head."\U$1".$tail; + } else { + die "$0: token $token doesn't match $px\n"; + } + } + + $data =~ s/\*/\U$token/g; + $data =~ s/\?//g; + + push(@tokendata, "\"$token\", ".length($token).", $data"); + } +} +close(TD); + +$max_len = 0; +foreach $token (keys(%tokens)) { + if (length($token) > $max_len) { + $max_len = length($token); + } +} + +if ($output eq 'h') { + # + # tokens.h + # + + print "/*\n"; + print " * This file is generated from insns.dat, regs.dat and token.dat\n"; + print " * by tokhash.pl; do not edit.\n"; + print " */\n"; + print "\n"; + + print "#ifndef NASM_TOKENS_H\n"; + print "#define NASM_TOKENS_H\n"; + print "\n"; + print "#define MAX_KEYWORD $max_len /* length of longest keyword */\n"; + print "\n"; + print "#endif /* NASM_TOKENS_H */\n"; +} elsif ($output eq 'c') { + # + # tokhash.c + # + + @hashinfo = gen_perfect_hash(\%tokens); + if (!@hashinfo) { + die "$0: no hash found\n"; + } + + # Paranoia... + verify_hash_table(\%tokens, \@hashinfo); + + ($n, $sv, $g) = @hashinfo; + die if ($n & ($n-1)); + $n <<= 1; + + print "/*\n"; + print " * This file is generated from insns.dat, regs.dat and token.dat\n"; + print " * by tokhash.pl; do not edit.\n"; + print " */\n"; + print "\n"; + + print "#include \"compiler.h\"\n"; + print "#include \"nasm.h\"\n"; + print "#include \"hashtbl.h\"\n"; + print "#include \"insns.h\"\n"; + print "#include \"stdscan.h\"\n"; + print "\n"; + + # These somewhat odd sizes and ordering thereof are due to the + # relative ranges of the types; this makes it fit in 16 bytes on + # 64-bit machines and 12 bytes on 32-bit machines. + print "struct tokendata {\n"; + print " const char *string;\n"; + print " uint16_t len;\n"; + print " int16_t tokentype;\n"; + print " int16_t aux;\n"; + print " uint16_t tokflag;\n"; + print " int32_t num;\n"; + print "};\n"; + print "\n"; + + print "int nasm_token_hash(const char *token, struct tokenval *tv)\n"; + print "{\n"; + + # Put a large value in unused slots. This makes it extremely unlikely + # that any combination that involves unused slot will pass the range test. + # This speeds up rejection of unrecognized tokens, i.e. identifiers. + print "#define INVALID_HASH_ENTRY (65535/3)\n"; + + printf " static const int16_t hashdata[%d] = {\n", $n; + for ($i = 0; $i < $n; $i++) { + my $h = ${$g}[$i]; + print " ", defined($h) ? $h : 'INVALID_HASH_ENTRY', ",\n"; + } + print " };\n"; + + printf " static const struct tokendata tokendata[%d] = {\n", + scalar(@tokendata); + foreach $d (@tokendata) { + print " { ", $d, " },\n"; + } + print " };\n"; + + print " uint32_t k1, k2;\n"; + # For correct overflow behavior, "ix" should be unsigned of the same + # width as the hash arrays. + print " uint16_t ix;\n"; + print " const struct tokendata *data;\n"; + printf " char lcbuf[%d];\n", $max_len+1; + print " const char *p = token;\n"; + print " char c, *q = lcbuf;\n"; + print " size_t len = 0;\n"; + printf " uint64_t crc = UINT64_C(0x%08x%08x);\n", $$sv[0], $$sv[1]; + print "\n"; + print " while ((c = *p++)) {\n"; + printf " if (++len > %d)\n", $max_len; + print " goto notfound;\n"; + print " *q++ = c = nasm_tolower(c);\n"; + print " crc = crc64_byte(crc, c);\n"; + print " };\n"; + print "\n"; + printf " k1 = ((uint32_t)crc & 0x%x) + 0;\n", $n-2; + printf " k2 = ((uint32_t)(crc >> 32) & 0x%x) + 1;\n", $n-2; + print "\n"; + printf " ix = hashdata[k1] + hashdata[k2];\n", + $n-2, $n-2; + printf " if (ix >= %d)\n", scalar(@tokendata); + print " goto notfound;\n"; + print "\n"; + print " data = &tokendata[ix];\n"; + print " if (data->len != len)\n"; + print " goto notfound;\n"; + print " if (memcmp(data->string, lcbuf, len))\n"; + print " goto notfound;\n"; + print "\n"; + print " tv->t_integer = data->num;\n"; + print " tv->t_inttwo = data->aux;\n"; + print " tv->t_flag = data->tokflag;\n"; + print " return tv->t_type = data->tokentype;\n"; + print "\n"; + print "notfound:\n"; + print " tv->t_integer = 0;\n"; + print " tv->t_inttwo = 0;\n"; + print " tv->t_flag = 0;\n"; + print " return tv->t_type = TOKEN_ID;\n"; + print "}\n"; +} diff --git a/vere/ext/nasm/asm/warnings.c b/vere/ext/nasm/asm/warnings.c new file mode 100644 index 0000000..f825e0c --- /dev/null +++ b/vere/ext/nasm/asm/warnings.c @@ -0,0 +1,241 @@ +#include "error.h" + +const char * const warning_name[53] = { + NULL, + "db-empty", + "ea-absolute", + "ea-dispsize", + "float-denorm", + "float-overflow", + "float-toolong", + "float-underflow", + "forward", + "label-orphan", + "label-redef", + "label-redef-late", + "number-overflow", + "obsolete-nop", + "obsolete-removed", + "obsolete-valid", + "phase", + "pp-else-elif", + "pp-else-else", + "pp-empty-braces", + "pp-environment", + "pp-macro-def-case-single", + "pp-macro-def-greedy-single", + "pp-macro-def-param-single", + "pp-macro-defaults", + "pp-macro-params-legacy", + "pp-macro-params-multi", + "pp-macro-params-single", + "pp-macro-redef-multi", + "pp-open-braces", + "pp-open-brackets", + "pp-open-string", + "pp-rep-negative", + "pp-sel-range", + "pp-trailing", + "pragma-bad", + "pragma-empty", + "pragma-na", + "pragma-unknown", + "prefix-bnd", + "prefix-hle", + "prefix-lock", + "prefix-opsize", + "prefix-seg", + "ptr", + "regsize", + "unknown-warning", + "user", + "warn-stack-empty", + "zeroing", + "zext-reloc", + "other", + "all" +}; + +const struct warning_alias warning_alias[68] = { + { "all", WARN_IDX_ALL }, + { "bad-pragma", WARN_IDX_PRAGMA_BAD }, + { "bnd", WARN_IDX_PREFIX_BND }, + { "db-empty", WARN_IDX_DB_EMPTY }, + { "ea-absolute", WARN_IDX_EA_ABSOLUTE }, + { "ea-dispsize", WARN_IDX_EA_DISPSIZE }, + { "environment", WARN_IDX_PP_ENVIRONMENT }, + { "float-denorm", WARN_IDX_FLOAT_DENORM }, + { "float-overflow", WARN_IDX_FLOAT_OVERFLOW }, + { "float-toolong", WARN_IDX_FLOAT_TOOLONG }, + { "float-underflow", WARN_IDX_FLOAT_UNDERFLOW }, + { "forward", WARN_IDX_FORWARD }, + { "hle", WARN_IDX_PREFIX_HLE }, + { "label-orphan", WARN_IDX_LABEL_ORPHAN }, + { "label-redef", WARN_IDX_LABEL_REDEF }, + { "label-redef-late", WARN_IDX_LABEL_REDEF_LATE }, + { "lock", WARN_IDX_PREFIX_LOCK }, + { "macro-def-case-single", WARN_IDX_PP_MACRO_DEF_CASE_SINGLE }, + { "macro-def-greedy-single", WARN_IDX_PP_MACRO_DEF_GREEDY_SINGLE }, + { "macro-def-param-single", WARN_IDX_PP_MACRO_DEF_PARAM_SINGLE }, + { "macro-defaults", WARN_IDX_PP_MACRO_DEFAULTS }, + { "macro-params-legacy", WARN_IDX_PP_MACRO_PARAMS_LEGACY }, + { "macro-params-multi", WARN_IDX_PP_MACRO_PARAMS_MULTI }, + { "macro-params-single", WARN_IDX_PP_MACRO_PARAMS_SINGLE }, + { "negative-rep", WARN_IDX_PP_REP_NEGATIVE }, + { "not-my-pragma", WARN_IDX_PRAGMA_NA }, + { "number-overflow", WARN_IDX_NUMBER_OVERFLOW }, + { "obsolete-nop", WARN_IDX_OBSOLETE_NOP }, + { "obsolete-removed", WARN_IDX_OBSOLETE_REMOVED }, + { "obsolete-valid", WARN_IDX_OBSOLETE_VALID }, + { "orphan-labels", WARN_IDX_LABEL_ORPHAN }, + { "other", WARN_IDX_OTHER }, + { "phase", WARN_IDX_PHASE }, + { "pp-else-elif", WARN_IDX_PP_ELSE_ELIF }, + { "pp-else-else", WARN_IDX_PP_ELSE_ELSE }, + { "pp-empty-braces", WARN_IDX_PP_EMPTY_BRACES }, + { "pp-environment", WARN_IDX_PP_ENVIRONMENT }, + { "pp-macro-def-case-single", WARN_IDX_PP_MACRO_DEF_CASE_SINGLE }, + { "pp-macro-def-greedy-single", WARN_IDX_PP_MACRO_DEF_GREEDY_SINGLE }, + { "pp-macro-def-param-single", WARN_IDX_PP_MACRO_DEF_PARAM_SINGLE }, + { "pp-macro-defaults", WARN_IDX_PP_MACRO_DEFAULTS }, + { "pp-macro-params-legacy", WARN_IDX_PP_MACRO_PARAMS_LEGACY }, + { "pp-macro-params-multi", WARN_IDX_PP_MACRO_PARAMS_MULTI }, + { "pp-macro-params-single", WARN_IDX_PP_MACRO_PARAMS_SINGLE }, + { "pp-macro-redef-multi", WARN_IDX_PP_MACRO_REDEF_MULTI }, + { "pp-open-braces", WARN_IDX_PP_OPEN_BRACES }, + { "pp-open-brackets", WARN_IDX_PP_OPEN_BRACKETS }, + { "pp-open-string", WARN_IDX_PP_OPEN_STRING }, + { "pp-rep-negative", WARN_IDX_PP_REP_NEGATIVE }, + { "pp-sel-range", WARN_IDX_PP_SEL_RANGE }, + { "pp-trailing", WARN_IDX_PP_TRAILING }, + { "pragma-bad", WARN_IDX_PRAGMA_BAD }, + { "pragma-empty", WARN_IDX_PRAGMA_EMPTY }, + { "pragma-na", WARN_IDX_PRAGMA_NA }, + { "pragma-unknown", WARN_IDX_PRAGMA_UNKNOWN }, + { "prefix-bnd", WARN_IDX_PREFIX_BND }, + { "prefix-hle", WARN_IDX_PREFIX_HLE }, + { "prefix-lock", WARN_IDX_PREFIX_LOCK }, + { "prefix-opsize", WARN_IDX_PREFIX_OPSIZE }, + { "prefix-seg", WARN_IDX_PREFIX_SEG }, + { "ptr", WARN_IDX_PTR }, + { "regsize", WARN_IDX_REGSIZE }, + { "unknown-pragma", WARN_IDX_PRAGMA_UNKNOWN }, + { "unknown-warning", WARN_IDX_UNKNOWN_WARNING }, + { "user", WARN_IDX_USER }, + { "warn-stack-empty", WARN_IDX_WARN_STACK_EMPTY }, + { "zeroing", WARN_IDX_ZEROING }, + { "zext-reloc", WARN_IDX_ZEXT_RELOC } +}; + +const char * const warning_help[53] = { + NULL, + "no operand for data declaration", + "absolute address cannot be RIP-relative", + "displacement size ignored on absolute address", + "floating point denormal", + "floating point overflow", + "too many digits in floating-point number", + "floating point underflow", + "forward reference may have unpredictable results", + "labels alone on lines without trailing `:\'", + "label redefined to an identical value", + "label (re)defined during code generation", + "numeric constant does not fit", + "instruction obsolete and is a noop on the target CPU", + "instruction obsolete and removed on the target CPU", + "instruction obsolete but valid on the target CPU", + "phase error during stabilization", + "%elif after %else", + "%else after %else", + "empty %{} construct", + "nonexistent environment variable", + "single-line macro defined both case sensitive and insensitive", + "single-line macro", + "single-line macro defined with and without parameters", + "macros with more default than optional parameters", + "improperly calling multi-line macro for legacy support", + "multi-line macro calls with wrong parameter count", + "single-line macro calls with wrong parameter count", + "redefining multi-line macro", + "unterminated %{...}", + "unterminated %[...]", + "unterminated string", + "regative %rep count", + "%sel() argument out of range", + "trailing garbage ignored", + "malformed %pragma", + "empty %pragma directive", + "%pragma not applicable to this compilation", + "unknown %pragma facility or directive", + "invalid BND prefix", + "invalid HLE prefix", + "LOCK prefix on unlockable instructions", + "invalid operand size prefix", + "segment prefix ignored in 64-bit mode", + "non-NASM keyword used in other assemblers", + "register size specification ignored", + "unknown warning in -W/-w or warning directive", + "%warning directives", + "warning stack empty", + "RESx in initialized section becomes zero", + "relocation zero-extended to match output format", + "any warning not specifically mentioned above", + "all possible warnings" +}; + +const uint8_t warning_default[52] = { + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_OFF, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_OFF, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_OFF, + WARN_INIT_ERR, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_OFF, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ERR, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_OFF, + WARN_INIT_OFF, + WARN_INIT_OFF, + WARN_INIT_OFF, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_OFF, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON, + WARN_INIT_ON +}; + +uint8_t warning_state[52]; /* Current state */ diff --git a/vere/ext/nasm/asm/warnings.pl b/vere/ext/nasm/asm/warnings.pl new file mode 100755 index 0000000..599a42d --- /dev/null +++ b/vere/ext/nasm/asm/warnings.pl @@ -0,0 +1,303 @@ +#!/usr/bin/perl + +use strict; +use Fcntl qw(:seek); +use File::Find; +use File::Basename; + +my @warnings = (); +my %aliases = (); +my %prefixes = (); +my $err = 0; +my $nwarn = 0; + +sub quote_for_c($) { + my $s = join('', @_); + + $s =~ s/([\"\'\\])/\\$1/g; + return $s; +} + +sub add_alias($$) { + my($a, $this) = @_; + my @comp = split(/-/, $a); + + $aliases{$a} = $this; + + # All names are prefixes in their own right, although we only + # list the ones that are either prefixes of "proper names" or + # the complete alias name. + for (my $i = ($a eq $this->{name}) ? 0 : $#comp; $i <= $#comp; $i++) { + my $prefix = join('-', @comp[0..$i]); + $prefixes{$prefix} = [] unless defined($prefixes{$prefix}); + push(@{$prefixes{$prefix}}, $a); + } +} + +sub find_warnings { + my $infile = $_; + + return unless (basename($infile) =~ /^\w.*\.[ch]$/i); + open(my $in, '<', $infile) + or die "$0: cannot open input file $infile: $!\n"; + + my $in_comment = 0; + my $nline = 0; + my $this; + my @doc; + + while (defined(my $l = <$in>)) { + $nline++; + chomp $l; + + if (!$in_comment) { + $l =~ s/^.*?\/\*.*?\*\///g; # Remove single-line comments + + if ($l =~ /^.*?(\/\*.*)$/) { + # Begin block comment + $l = $1; + $in_comment = 1; + } + } + + if ($in_comment) { + if ($l =~ /\*\//) { + # End block comment + $in_comment = 0; + undef $this; + } elsif ($l =~ /^\s*\/?\*\!(\-|\=|\s*)(.*?)\s*$/) { + my $opr = $1; + my $str = $2; + + if ($opr eq '' && $str eq '') { + next; + } elsif ((!defined($this) || ($opr eq '')) && + ($str =~ /^([\w\-]+)\s+\[(\w+)\]\s(.*\S)\s*$/)) { + my $name = $1; + my $def = $2; + my $help = $3; + + my $cname = uc($name); + $cname =~ s/[^A-Z0-9_]+/_/g; + + $this = {name => $name, cname => $cname, + def => $def, help => $help, + doc => [], file => $infile, line => $nline}; + + if (defined(my $that = $aliases{$name})) { + # Duplicate definition?! + printf STDERR "%s:%s: warning %s previously defined at %s:%s\n", + $infile, $nline, $name, $that->{file}, $that->{line}; + } else { + push(@warnings, $this); + # Every warning name is also a valid warning alias + add_alias($name, $this); + $nwarn++; + } + } elsif ($opr eq '=') { + # Alias names for warnings + for my $a (split(/,+/, $str)) { + add_alias($a, $this); + } + } elsif ($opr =~ /^[\-\s]/) { + push(@{$this->{doc}}, "$str\n"); + } else { + print STDERR "$infile:$nline: malformed warning definition\n"; + print STDERR " $l\n"; + $err++; + } + } else { + undef $this; + } + } + } + close($in); +} + +my($what, $outfile, @indirs) = @ARGV; + +if (!defined($outfile)) { + die "$0: usage: [c|h|doc] outfile indir...\n"; +} + +find({ wanted => \&find_warnings, no_chdir => 1, follow => 1 }, @indirs); + +exit(1) if ($err); + +my %sort_special = ( 'other' => 1, 'all' => 2 ); +sub sort_warnings { + my $an = $a->{name}; + my $bn = $b->{name}; + return ($sort_special{$an} <=> $sort_special{$bn}) || ($an cmp $bn); +} + +@warnings = sort sort_warnings @warnings; +my @warn_noall = @warnings; +pop @warn_noall if ($warn_noall[$#warn_noall]->{name} eq 'all'); + +my $outdata; +open(my $out, '>', \$outdata) + or die "$0: cannot create memory file: $!\n"; + +if ($what eq 'c') { + print $out "#include \"error.h\"\n\n"; + printf $out "const char * const warning_name[%d] = {\n", + $#warnings + 2; + print $out "\tNULL"; + foreach my $warn (@warnings) { + print $out ",\n\t\"", $warn->{name}, "\""; + } + print $out "\n};\n\n"; + printf $out "const struct warning_alias warning_alias[%d] = {", + scalar(keys %aliases); + my $sep = ''; + foreach my $alias (sort { $a cmp $b } keys(%aliases)) { + printf $out "%s\n\t{ %-27s WARN_IDX_%s }", + $sep, "\"$alias\",", $aliases{$alias}->{cname}; + $sep = ','; + } + print $out "\n};\n\n"; + + printf $out "const char * const warning_help[%d] = {\n", + $#warnings + 2; + print $out "\tNULL"; + foreach my $warn (@warnings) { + my $help = quote_for_c($warn->{help}); + print $out ",\n\t\"", $help, "\""; + } + print $out "\n};\n\n"; + printf $out "const uint8_t warning_default[%d] = {\n", + $#warn_noall + 2; + print $out "\tWARN_INIT_ON"; # for entry 0 + foreach my $warn (@warn_noall) { + print $out ",\n\tWARN_INIT_", uc($warn->{def}); + } + print $out "\n};\n\n"; + printf $out "uint8_t warning_state[%d];\t/* Current state */\n", + $#warn_noall + 2; +} elsif ($what eq 'h') { + my $filename = basename($outfile); + my $guard = $filename; + $guard =~ s/[^A-Za-z0-9_]+/_/g; + $guard = "NASM_\U$guard"; + + print $out "#ifndef $guard\n"; + print $out "#define $guard\n"; + print $out "\n"; + print $out "#ifndef WARN_SHR\n"; + print $out "# error \"$filename should only be included from within error.h\"\n"; + print $out "#endif\n\n"; + print $out "enum warn_index {\n"; + printf $out "\tWARN_IDX_%-23s = %3d, /* not suppressible */\n", 'NONE', 0; + my $n = 1; + foreach my $warn (@warnings) { + printf $out "\tWARN_IDX_%-23s = %3d%s /* %s */\n", + $warn->{cname}, $n, + ($n == $#warnings + 1) ? " " : ",", + $warn->{help}; + $n++; + } + print $out "};\n\n"; + + print $out "enum warn_const {\n"; + printf $out "\tWARN_%-27s = %3d << WARN_SHR", 'NONE', 0; + $n = 1; + foreach my $warn (@warn_noall) { + printf $out ",\n\tWARN_%-27s = %3d << WARN_SHR", $warn->{cname}, $n++; + } + print $out "\n};\n\n"; + + print $out "struct warning_alias {\n"; + print $out "\tconst char *name;\n"; + print $out "\tenum warn_index warning;\n"; + print $out "};\n\n"; + printf $out "#define NUM_WARNING_ALIAS %d\n", scalar(keys %aliases); + + printf $out "extern const char * const warning_name[%d];\n", + $#warnings + 2; + printf $out "extern const char * const warning_help[%d];\n", + $#warnings + 2; + print $out "extern const struct warning_alias warning_alias[NUM_WARNING_ALIAS];\n"; + printf $out "extern const uint8_t warning_default[%d];\n", + $#warn_noall + 2; + printf $out "extern uint8_t warning_state[%d];\n", + $#warn_noall + 2; + print $out "\n#endif /* $guard */\n"; +} elsif ($what eq 'doc') { + my %whatdef = ( 'on' => 'Enabled', + 'off' => 'Disabled', + 'err' => 'Enabled and promoted to error' ); + + my @indexinfo = (); + my @outtxt = (); + + foreach my $pfx (sort { $a cmp $b } keys(%prefixes)) { + my $warn = $aliases{$pfx}; + my @doc; + + if (!defined($warn)) { + my @plist = sort { $a cmp $b } @{$prefixes{$pfx}}; + next if ( $#plist < 1 ); + + @doc = ("all \\c{$pfx-} warnings\n\n", + "\\> \\c{$pfx} is a group alias for all warning classes\n", + "prefixed by \\c{$pfx-}; currently\n"); + # Just commas is bad grammar to be sure, but it is more + # legible than the alternative. + push(@doc, join(scalar(@plist) < 3 ? ' and ' : ', ', + map { "\\c{$_}" } @plist).".\n"); + } elsif ($pfx ne $warn->{name}) { + my $awarn = $aliases{$warn->{name}}; + @doc = ($awarn->{help}."\n\n", + "\\> \\c{$pfx} is a backwards compatibility alias for \\c{". + $warn->{name}."}.\n"); + } else { + my $docdef = $whatdef{$warn->{def}}; + + @doc = ($warn->{help}."\n\n", + "\\> \\c{".$warn->{name}."} "); + + my $newpara = 0; + foreach my $l (@{$warn->{doc}}) { + if ($l =~ /^\s*$/) { + $newpara = 1; + } else { + if ($newpara && $l !~ /^\\c\s+/) { + $l = '\> ' . $l; + } + $newpara = 0; + } + push(@doc, $l); + } + if (defined($docdef)) { + push(@doc, "\n", "\\> $docdef by default.\n"); + } + } + + push(@indexinfo, "\\IR{w-$pfx} warning class, \\c{$pfx}\n"); + push(@outtxt, "\\b \\I{w-$pfx} \\c{$pfx}: ", @doc, "\n"); + } + + print $out "\n", @indexinfo, "\n", @outtxt; +} + +close($out); + +# Write data to file if and only if it has changed +# For some systems, even if we don't write, opening for append +# apparently touches the timestamp, so we need to read and write +# as separate operations. +if (open(my $out, '<', $outfile)) { + my $datalen = length($outdata); + my $oldlen = read($out, my $oldoutdata, $datalen+1); + close($out); + exit 0 if (defined($oldlen) && $oldlen == $datalen && + ($oldoutdata eq $outdata)); +} + +# Data changed, must rewrite +open(my $out, '>', $outfile) + or die "$0: cannot open output file $outfile: $!\n"; + +print $out $outdata; +close($out); diff --git a/vere/ext/nasm/build.zig b/vere/ext/nasm/build.zig new file mode 100644 index 0000000..557a8e5 --- /dev/null +++ b/vere/ext/nasm/build.zig @@ -0,0 +1,830 @@ +const std = @import("std"); +const builtin = @import("builtin"); + +pub fn build(b: *std.Build) void { + const target = b.graph.host; + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const exe = b.addExecutable(.{ + .name = "nasm", + .target = target, + .optimize = optimize, + }); + + exe.addIncludePath(b.path("include")); + exe.addIncludePath(b.path("asm")); + exe.addIncludePath(b.path("x86")); + exe.addIncludePath(b.path("output")); + + exe.addConfigHeader(b.addConfigHeader(.{ + .style = .blank, + .include_path = "version.h", + }, .{ + .NASM_MAJOR_VER = 2, + .NASM_MINOR_VER = 16, + .NASM_SUBMINOR_VER = 1, + .NASM_PATCHLEVEL_VER = 0, + .NASM_VERSION_ID = 0x02100100, + .NASM_VER = "2.16.01", + })); + + if (b.graph.host.result.os.tag == .windows) { + exe.addConfigHeader(b.addConfigHeader(.{ + .style = .{ .autoconf = b.path("config/config.h.in") }, + .include_path = "config/config.h", + }, .{ + .ABORT_ON_PANIC = have(optimize == .Debug), + .AC_APPLE_UNIVERSAL_BUILD = null, + .CFLAGS_FDATA_SECTIONS = null, + .CFLAGS_FFUNCTION_SECTIONS = null, + .CFLAGS_FGNU89_INLINE = null, + .CFLAGS_FLTO = null, + .CFLAGS_FNO_COMMON = null, + .CFLAGS_FNO_OMIT_FRAME_POINTER = null, + .CFLAGS_FSANITIZE_ADDRESS = null, + .CFLAGS_FSANITIZE_UNDEFINED = null, + .CFLAGS_FTRIVIAL_AUTO_VAR_INIT_ZERO = null, + .CFLAGS_FVISIBILITY_HIDDEN = null, + .CFLAGS_FWRAPV = null, + .CFLAGS_GGDB3 = null, + .CFLAGS_O0 = have(optimize == .Debug), + .CFLAGS_PEDANTIC = null, + .CFLAGS_PG = null, + .CFLAGS_STD_C11 = null, + .CFLAGS_STD_C17 = 1, + .CFLAGS_STD_C99 = null, + .CFLAGS_U_STRICT_ANSI = null, + .CFLAGS_W = null, + .CFLAGS_WALL = null, + .CFLAGS_WC90_C99_COMPAT = null, + .CFLAGS_WC99_COMPAT = null, + .CFLAGS_WC99_EXTENSIONS = null, + .CFLAGS_WERROR = null, + .CFLAGS_WERROR_ATTRIBUTES = null, + .CFLAGS_WERROR_COMMENT = null, + .CFLAGS_WERROR_IMPLICIT = null, + .CFLAGS_WERROR_MISSING_BRACES = null, + .CFLAGS_WERROR_MISSING_DECLARATIONS = null, + .CFLAGS_WERROR_MISSING_PROTOTYPES = null, + .CFLAGS_WERROR_POINTER_ARITH = null, + .CFLAGS_WERROR_RETURN_TYPE = null, + .CFLAGS_WERROR_STRICT_PROTOTYPES = null, + .CFLAGS_WERROR_TRIGRAPHS = null, + .CFLAGS_WERROR_UNKNOWN_WARNING_OPTION = null, + .CFLAGS_WERROR_VLA = null, + .CFLAGS_WLONG_LONG = null, + .CFLAGS_WPEDANTIC_MS_FORMAT = null, + .CFLAGS_WSHIFT_NEGATIVE_VALUE = null, + .CFLAGS_WSTRINGOP_TRUNCATION = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_COLD = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_CONST = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_FORMAT = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_MALLOC = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_NORETURN = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_PURE = null, + .HAVE_ACCESS = 1, + .HAVE_CANONICALIZE_FILE_NAME = null, + .HAVE_CPU_TO_LE16 = null, + .HAVE_CPU_TO_LE32 = null, + .HAVE_CPU_TO_LE64 = null, + .HAVE_DECL_STRCASECMP = 1, + .HAVE_DECL_STRICMP = 0, + .HAVE_DECL_STRLCPY = null, + .HAVE_DECL_STRNCASECMP = 1, + .HAVE_DECL_STRNICMP = 0, + .HAVE_DECL_STRNLEN = 0, + .HAVE_DECL_STRRCHRNUL = 0, + .HAVE_DECL_STRSEP = 0, + .HAVE_ENDIAN_H = null, + .HAVE_FACCESSAT = 1, + .HAVE_FCNTL_H = 1, + .HAVE_FILENO = 1, + .HAVE_FSEEKO = 1, + .HAVE_FSTAT = 1, + .HAVE_FTRUNCATE = 1, + .HAVE_FUNC_ATTRIBUTE1_ALLOC_SIZE = 1, + .HAVE_FUNC_ATTRIBUTE2_ALLOC_SIZE = null, + .HAVE_FUNC_ATTRIBUTE3_FORMAT = 1, + .HAVE_FUNC_ATTRIBUTE_COLD = 1, + .HAVE_FUNC_ATTRIBUTE_CONST = 1, + .HAVE_FUNC_ATTRIBUTE_ERROR = 1, + .HAVE_FUNC_ATTRIBUTE_MALLOC = 1, + .HAVE_FUNC_ATTRIBUTE_NORETURN = 1, + .HAVE_FUNC_ATTRIBUTE_PURE = 1, + .HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL = 1, + .HAVE_FUNC_ATTRIBUTE_SENTINEL = 1, + .HAVE_FUNC_ATTRIBUTE_UNUSED = 1, + .HAVE_FUNC_PTR_ATTRIBUTE1_ALLOC_SIZE = 1, + .HAVE_FUNC_PTR_ATTRIBUTE2_ALLOC_SIZE = null, + .HAVE_FUNC_PTR_ATTRIBUTE3_FORMAT = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_COLD = null, + .HAVE_FUNC_PTR_ATTRIBUTE_CONST = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_MALLOC = null, + .HAVE_FUNC_PTR_ATTRIBUTE_NORETURN = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_PURE = null, + .HAVE_FUNC_PTR_ATTRIBUTE_RETURNS_NONNULL = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_SENTINEL = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_UNUSED = 1, + .HAVE_GETGID = null, + .HAVE_GETPAGESIZE = null, + .HAVE_GETRLIMIT = null, + .HAVE_GETUID = null, + .HAVE_HTOLE16 = null, + .HAVE_HTOLE32 = null, + .HAVE_HTOLE64 = null, + .HAVE_INTRIN_H = 1, + .HAVE_INTTYPES_H = 1, + .HAVE_IO_H = null, + .HAVE_ISASCII = 1, + .HAVE_ISCNTRL = 1, + .HAVE_MACHINE_ENDIAN_H = null, + .HAVE_MEMPCPY = 1, + .HAVE_MEMPSET = null, + .HAVE_MINIX_CONFIG_H = null, + .HAVE_MMAP = null, + .HAVE_PATHCONF = null, + .HAVE_REALPATH = null, + .HAVE_SNPRINTF = 1, + .HAVE_STAT = 1, + .HAVE_STDARG_H = 1, + .HAVE_STDBOOL_H = 1, + .HAVE_STDC_INLINE = 1, + .HAVE_STDINT_H = 1, + .HAVE_STDIO_H = 1, + .HAVE_STDLIB_H = 1, + .HAVE_STDNORETURN_H = 1, + .HAVE_STRCASECMP = 1, + .HAVE_STRICMP = 1, + .HAVE_STRINGS_H = 1, + .HAVE_STRING_H = 1, + .HAVE_STRLCPY = null, + .HAVE_STRNCASECMP = 1, + .HAVE_STRNICMP = 1, + .HAVE_STRNLEN = 1, + .HAVE_STRRCHRNUL = null, + .HAVE_STRSEP = null, + .HAVE_STRUCT_STAT = null, + .HAVE_STRUCT__STATI64 = null, + .HAVE_SYSCONF = null, + .HAVE_SYS_ENDIAN_H = null, + .HAVE_SYS_MMAN_H = null, + .HAVE_SYS_PARAM_H = null, + .HAVE_SYS_RESOURCE_H = null, + .HAVE_SYS_STAT_H = 1, + .HAVE_SYS_TYPES_H = 1, + .HAVE_S_ISREG = null, + .HAVE_TYPEOF = null, + .HAVE_UINTPTR_T = 1, + .HAVE_UNISTD_H = null, + .HAVE_VSNPRINTF = 1, + .HAVE_WCHAR_H = null, + .HAVE__ACCESS = null, + .HAVE__BITSCANREVERSE = null, + .HAVE__BITSCANREVERSE64 = null, + .HAVE__BOOL = 1, + .HAVE__BYTESWAP_UINT64 = null, + .HAVE__BYTESWAP_ULONG = null, + .HAVE__BYTESWAP_USHORT = null, + .HAVE__CHSIZE = null, + .HAVE__CHSIZE_S = null, + .HAVE__FILENO = null, + .HAVE__FSEEKI64 = null, + .HAVE__FSTATI64 = null, + .HAVE__FULLPATH = null, + .HAVE__STATI64 = null, + .HAVE___BSWAP_16 = 1, + .HAVE___BSWAP_32 = 1, + .HAVE___BSWAP_64 = 1, + .HAVE___BUILTIN_BSWAP16 = 1, + .HAVE___BUILTIN_BSWAP32 = 1, + .HAVE___BUILTIN_BSWAP64 = 1, + .HAVE___BUILTIN_CHOOSE_EXPR = 1, + .HAVE___BUILTIN_CLZ = 1, + .HAVE___BUILTIN_CLZL = 1, + .HAVE___BUILTIN_CLZLL = 1, + .HAVE___BUILTIN_CONSTANT_P = 1, + .HAVE___BUILTIN_EXPECT = 1, + .HAVE___CPU_TO_LE16 = null, + .HAVE___CPU_TO_LE32 = null, + .HAVE___CPU_TO_LE64 = null, + .LDFLAGS_WL_GC_SECTIONS = null, + .PACKAGE_BUGREPORT = "", + .PACKAGE_NAME = "", + .PACKAGE_STRING = "", + .PACKAGE_TARNAME = "", + .PACKAGE_URL = "", + .PACKAGE_VERSION = "", + .STDC_HEADERS = 1, + ._ALL_SOURCE = 1, + ._DARWIN_C_SOURCE = 1, + .__EXTENSIONS__ = 1, + ._GNU_SOURCE = 1, + ._HPUX_ALT_XOPEN_SOCKET_API = 1, + ._MINIX = null, + ._NETBSD_SOURCE = 1, + ._OPENBSD_SOURCE = 1, + ._POSIX_SOURCE = null, + ._POSIX_1_SOURCE = null, + ._POSIX_PTHREAD_SEMANTICS = 1, + .__STDC_WANT_IEC_60559_ATTRIBS_EXT__ = 1, + .__STDC_WANT_IEC_60559_BFP_EXT__ = 1, + .__STDC_WANT_IEC_60559_DFP_EXT__ = 1, + .__STDC_WANT_IEC_60559_FUNCS_EXT__ = 1, + .__STDC_WANT_IEC_60559_TYPES_EXT__ = 1, + .__STDC_WANT_LIB_EXT2__ = 1, + .__STDC_WANT_MATH_SPEC_FUNCS__ = 1, + ._TANDEM_SOURCE = 1, + ._XOPEN_SOURCE = null, + .WORDS_BIGENDIAN = have(t.cpu.arch.endian() == .big), + .WORDS_LITTLEENDIAN = have(t.cpu.arch.endian() != .big), + ._FILE_OFFSET_BITS = null, + ._LARGEFILE_SOURCE = null, + ._LARGE_FILES = null, + .@"const" = .@"const", + .@"inline" = .@"inline", + .restrict = .restrict, + .size_t = null, + .snprintf = null, + .typeof = .__typeof, + .uintptr_t = null, + .vsnprintf = null, + })); + } else if (b.graph.host.result.os.tag.isDarwin()) { + exe.addConfigHeader(b.addConfigHeader(.{ + .style = .{ .autoconf = b.path("config/config.h.in") }, + .include_path = "config/config.h", + }, .{ + // Define to 1 to call abort() on panics (internal errors), for debugging. + .ABORT_ON_PANIC = null, + // Define if building universal (internal helper macro) + .AC_APPLE_UNIVERSAL_BUILD = null, + // Compiler flags + .CFLAGS_STD_C11 = null, + .CFLAGS_STD_C17 = 1, + .CFLAGS_STD_C99 = null, + .CFLAGS_WC90_C99_COMPAT = null, + .CFLAGS_WC99_COMPAT = null, + .CFLAGS_WC99_EXTENSIONS = null, + .CFLAGS_WERROR_ATTRIBUTES = null, + .CFLAGS_FDATA_SECTIONS = 1, + .CFLAGS_FFUNCTION_SECTIONS = 1, + .CFLAGS_FGNU89_INLINE = null, + .CFLAGS_FLTO = null, + .CFLAGS_FNO_COMMON = 1, + .CFLAGS_FNO_OMIT_FRAME_POINTER = null, + .CFLAGS_FSANITIZE_ADDRESS = null, + .CFLAGS_FSANITIZE_UNDEFINED = null, + .CFLAGS_FTRIVIAL_AUTO_VAR_INIT_ZERO = 1, + .CFLAGS_FVISIBILITY_HIDDEN = 1, + .CFLAGS_FWRAPV = 1, + .CFLAGS_GGDB3 = 1, + .CFLAGS_O0 = have(optimize == .Debug), + .CFLAGS_PEDANTIC = 1, + .CFLAGS_PG = null, + .CFLAGS_U_STRICT_ANSI = 1, + .CFLAGS_W = 1, + .CFLAGS_WALL = 1, + .CFLAGS_WERROR = null, + .CFLAGS_WERROR_COMMENT = 1, + .CFLAGS_WERROR_IMPLICIT = 1, + .CFLAGS_WERROR_MISSING_BRACES = 1, + .CFLAGS_WERROR_MISSING_DECLARATIONS = 1, + .CFLAGS_WERROR_MISSING_PROTOTYPES = 1, + .CFLAGS_WERROR_POINTER_ARITH = 1, + .CFLAGS_WERROR_RETURN_TYPE = 1, + .CFLAGS_WERROR_STRICT_PROTOTYPES = 1, + .CFLAGS_WERROR_TRIGRAPHS = 1, + .CFLAGS_WERROR_UNKNOWN_WARNING_OPTION = 1, + .CFLAGS_WERROR_VLA = 1, + .CFLAGS_WLONG_LONG = null, + .CFLAGS_WPEDANTIC_MS_FORMAT = null, + .CFLAGS_WSHIFT_NEGATIVE_VALUE = null, + .CFLAGS_WSTRINGOP_TRUNCATION = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_COLD = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_CONST = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_FORMAT = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_MALLOC = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_NORETURN = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_PURE = null, + + // Function availability + .HAVE_ACCESS = 1, + .HAVE_CANONICALIZE_FILE_NAME = null, + .HAVE_CPU_TO_LE16 = null, + .HAVE_CPU_TO_LE32 = null, + .HAVE_CPU_TO_LE64 = null, + .HAVE_FACCESSAT = 1, + .HAVE_FILENO = 1, + .HAVE_FSEEKO = 1, + .HAVE_FSTAT = 1, + .HAVE_FTRUNCATE = 1, + .HAVE_GETGID = 1, + .HAVE_GETPAGESIZE = 1, + .HAVE_GETRLIMIT = 1, + .HAVE_GETUID = 1, + .HAVE_HTOLE16 = null, + .HAVE_HTOLE32 = null, + .HAVE_HTOLE64 = null, + .HAVE_ISASCII = 1, + .HAVE_ISCNTRL = 1, + .HAVE_MEMPCPY = null, + .HAVE_MEMPSET = null, + .HAVE_MMAP = 1, + .HAVE_PATHCONF = 1, + .HAVE_REALPATH = 1, + .HAVE_SNPRINTF = 1, + .HAVE_STAT = 1, + .HAVE_STRCASECMP = 1, + .HAVE_STRICMP = null, + .HAVE_STRLCPY = 1, + .HAVE_STRNCASECMP = 1, + .HAVE_STRNICMP = null, + .HAVE_STRNLEN = 1, + .HAVE_STRRCHRNUL = null, + .HAVE_STRSEP = 1, + .HAVE_SYSCONF = 1, + .HAVE_S_ISREG = null, + .HAVE_VSNPRINTF = 1, + .HAVE__ACCESS = null, + .HAVE__BITSCANREVERSE = null, + .HAVE__BITSCANREVERSE64 = null, + .HAVE__BYTESWAP_UINT64 = null, + .HAVE__BYTESWAP_ULONG = null, + .HAVE__BYTESWAP_USHORT = null, + .HAVE__CHSIZE = null, + .HAVE__CHSIZE_S = null, + .HAVE__FILENO = null, + .HAVE__FSEEKI64 = null, + .HAVE__FSTATI64 = null, + .HAVE__FULLPATH = null, + .HAVE__STATI64 = null, + + // Function declarations + .HAVE_DECL_STRCASECMP = 1, + .HAVE_DECL_STRICMP = 0, + .HAVE_DECL_STRLCPY = 1, + .HAVE_DECL_STRNCASECMP = 1, + .HAVE_DECL_STRNICMP = 0, + .HAVE_DECL_STRNLEN = 1, + .HAVE_DECL_STRRCHRNUL = 0, + .HAVE_DECL_STRSEP = 1, + + // Header files + .HAVE_ENDIAN_H = null, + .HAVE_FCNTL_H = 1, + .HAVE_INTRIN_H = null, + .HAVE_INTTYPES_H = 1, + .HAVE_IO_H = null, + .HAVE_MACHINE_ENDIAN_H = 1, + .HAVE_MINIX_CONFIG_H = null, + .HAVE_STDARG_H = 1, + .HAVE_STDBOOL_H = 1, + .HAVE_STDINT_H = 1, + .HAVE_STDIO_H = 1, + .HAVE_STDLIB_H = 1, + .HAVE_STDNORETURN_H = 1, + .HAVE_STRINGS_H = 1, + .HAVE_STRING_H = 1, + .HAVE_SYS_ENDIAN_H = null, + .HAVE_SYS_MMAN_H = 1, + .HAVE_SYS_PARAM_H = 1, + .HAVE_SYS_RESOURCE_H = 1, + .HAVE_SYS_STAT_H = 1, + .HAVE_SYS_TYPES_H = 1, + .HAVE_UNISTD_H = 1, + .HAVE_WCHAR_H = 1, + + // Built-in functions + .HAVE___BSWAP_16 = null, + .HAVE___BSWAP_32 = null, + .HAVE___BSWAP_64 = null, + .HAVE___BUILTIN_BSWAP16 = 1, + .HAVE___BUILTIN_BSWAP32 = 1, + .HAVE___BUILTIN_BSWAP64 = 1, + .HAVE___BUILTIN_CHOOSE_EXPR = 1, + .HAVE___BUILTIN_CLZ = 1, + .HAVE___BUILTIN_CLZL = 1, + .HAVE___BUILTIN_CLZLL = 1, + .HAVE___BUILTIN_CONSTANT_P = 1, + .HAVE___BUILTIN_EXPECT = 1, + .HAVE___CPU_TO_LE16 = null, + .HAVE___CPU_TO_LE32 = null, + .HAVE___CPU_TO_LE64 = null, + + // Function attributes + .HAVE_FUNC_ATTRIBUTE1_ALLOC_SIZE = 1, + .HAVE_FUNC_ATTRIBUTE2_ALLOC_SIZE = 1, + .HAVE_FUNC_ATTRIBUTE3_FORMAT = 1, + .HAVE_FUNC_ATTRIBUTE_COLD = 1, + .HAVE_FUNC_ATTRIBUTE_CONST = 1, + .HAVE_FUNC_ATTRIBUTE_ERROR = 1, + .HAVE_FUNC_ATTRIBUTE_MALLOC = null, + .HAVE_FUNC_ATTRIBUTE_NORETURN = 1, + .HAVE_FUNC_ATTRIBUTE_PURE = 1, + .HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL = 1, + .HAVE_FUNC_ATTRIBUTE_SENTINEL = 1, + .HAVE_FUNC_ATTRIBUTE_UNUSED = 1, + + // Function pointer attributes + .HAVE_FUNC_PTR_ATTRIBUTE1_ALLOC_SIZE = 1, + .HAVE_FUNC_PTR_ATTRIBUTE2_ALLOC_SIZE = 1, + .HAVE_FUNC_PTR_ATTRIBUTE3_FORMAT = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_COLD = null, + .HAVE_FUNC_PTR_ATTRIBUTE_CONST = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_MALLOC = null, + .HAVE_FUNC_PTR_ATTRIBUTE_NORETURN = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_PURE = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_RETURNS_NONNULL = null, + .HAVE_FUNC_PTR_ATTRIBUTE_SENTINEL = null, + .HAVE_FUNC_PTR_ATTRIBUTE_UNUSED = 1, + + // Types and features + .HAVE_STDC_INLINE = 1, + .HAVE_STRUCT_STAT = 1, + .HAVE_STRUCT__STATI64 = null, + .HAVE_TYPEOF = 1, + .HAVE_UINTPTR_T = 1, + .HAVE__BOOL = 1, + + // Linker flags + .LDFLAGS_WL_GC_SECTIONS = null, + + // Package information + .PACKAGE_BUGREPORT = "", + .PACKAGE_NAME = "", + .PACKAGE_STRING = "", + .PACKAGE_TARNAME = "", + .PACKAGE_URL = "", + .PACKAGE_VERSION = "", + + // Standard headers + .STDC_HEADERS = 1, + + // Feature test macros + ._ALL_SOURCE = 1, + ._DARWIN_C_SOURCE = 1, + .__EXTENSIONS__ = 1, + ._GNU_SOURCE = 1, + ._HPUX_ALT_XOPEN_SOCKET_API = 1, + ._MINIX = null, + ._NETBSD_SOURCE = 1, + ._OPENBSD_SOURCE = 1, + ._POSIX_SOURCE = null, + ._POSIX_1_SOURCE = null, + ._POSIX_PTHREAD_SEMANTICS = 1, + .__STDC_WANT_IEC_60559_BFP_EXT__ = 1, + .__STDC_WANT_IEC_60559_DFP_EXT__ = 1, + .__STDC_WANT_IEC_60559_FUNCS_EXT__ = 1, + .__STDC_WANT_IEC_60559_ATTRIBS_EXT__ = 1, + .__STDC_WANT_IEC_60559_TYPES_EXT__ = 1, + .__STDC_WANT_LIB_EXT2__ = 1, + .__STDC_WANT_MATH_SPEC_FUNCS__ = 1, + ._TANDEM_SOURCE = 1, + ._XOPEN_SOURCE = null, + + // Endianness + .WORDS_BIGENDIAN = null, + .WORDS_LITTLEENDIAN = 1, + + // File offset bits + ._FILE_OFFSET_BITS = null, + ._LARGEFILE_SOURCE = null, + ._LARGE_FILES = null, + + // Type definitions and replacements + .@"const" = null, + .@"inline" = null, + .restrict = .__restrict__, + .size_t = null, + .snprintf = null, + .typeof = .__typeof, + .uintptr_t = null, + .vsnprintf = null, + })); + } else if (b.graph.host.result.os.tag == .linux) { + exe.addConfigHeader(b.addConfigHeader(.{ + .style = .{ .autoconf = b.path("config/config.h.in") }, + .include_path = "config/config.h", + }, .{ + .ABORT_ON_PANIC = have(optimize == .Debug), + .AC_APPLE_UNIVERSAL_BUILD = null, + .CFLAGS_FDATA_SECTIONS = null, + .CFLAGS_FFUNCTION_SECTIONS = null, + .CFLAGS_FGNU89_INLINE = null, + .CFLAGS_FLTO = null, + .CFLAGS_FNO_COMMON = null, + .CFLAGS_FNO_OMIT_FRAME_POINTER = null, + .CFLAGS_FSANITIZE_ADDRESS = null, + .CFLAGS_FSANITIZE_UNDEFINED = null, + .CFLAGS_FTRIVIAL_AUTO_VAR_INIT_ZERO = null, + .CFLAGS_FVISIBILITY_HIDDEN = null, + .CFLAGS_FWRAPV = null, + .CFLAGS_GGDB3 = null, + .CFLAGS_O0 = have(optimize == .Debug), + .CFLAGS_PEDANTIC = null, + .CFLAGS_PG = null, + .CFLAGS_STD_C11 = null, + .CFLAGS_STD_C17 = 1, + .CFLAGS_STD_C99 = null, + .CFLAGS_U_STRICT_ANSI = null, + .CFLAGS_W = null, + .CFLAGS_WALL = null, + .CFLAGS_WC90_C99_COMPAT = null, + .CFLAGS_WC99_COMPAT = null, + .CFLAGS_WC99_EXTENSIONS = null, + .CFLAGS_WERROR = null, + .CFLAGS_WERROR_ATTRIBUTES = null, + .CFLAGS_WERROR_COMMENT = null, + .CFLAGS_WERROR_IMPLICIT = null, + .CFLAGS_WERROR_MISSING_BRACES = null, + .CFLAGS_WERROR_MISSING_DECLARATIONS = null, + .CFLAGS_WERROR_MISSING_PROTOTYPES = null, + .CFLAGS_WERROR_POINTER_ARITH = null, + .CFLAGS_WERROR_RETURN_TYPE = null, + .CFLAGS_WERROR_STRICT_PROTOTYPES = null, + .CFLAGS_WERROR_TRIGRAPHS = null, + .CFLAGS_WERROR_UNKNOWN_WARNING_OPTION = null, + .CFLAGS_WERROR_VLA = null, + .CFLAGS_WLONG_LONG = null, + .CFLAGS_WPEDANTIC_MS_FORMAT = null, + .CFLAGS_WSHIFT_NEGATIVE_VALUE = null, + .CFLAGS_WSTRINGOP_TRUNCATION = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_COLD = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_CONST = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_FORMAT = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_MALLOC = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_NORETURN = null, + .CFLAGS_WSUGGEST_ATTRIBUTE_PURE = null, + .HAVE_ACCESS = 1, + .HAVE_CANONICALIZE_FILE_NAME = null, + .HAVE_CPU_TO_LE16 = null, + .HAVE_CPU_TO_LE32 = null, + .HAVE_CPU_TO_LE64 = null, + .HAVE_DECL_STRCASECMP = 0, + .HAVE_DECL_STRICMP = 0, + .HAVE_DECL_STRLCPY = 0, + .HAVE_DECL_STRNCASECMP = 0, + .HAVE_DECL_STRNICMP = 0, + .HAVE_DECL_STRNLEN = 0, + .HAVE_DECL_STRRCHRNUL = 0, + .HAVE_DECL_STRSEP = 0, + .HAVE_ENDIAN_H = 1, + .HAVE_FACCESSAT = 1, + .HAVE_FCNTL_H = 1, + .HAVE_FILENO = 1, + .HAVE_FSEEKO = 1, + .HAVE_FSTAT = 1, + .HAVE_FTRUNCATE = 1, + .HAVE_FUNC_ATTRIBUTE1_ALLOC_SIZE = 1, + .HAVE_FUNC_ATTRIBUTE2_ALLOC_SIZE = null, + .HAVE_FUNC_ATTRIBUTE3_FORMAT = 1, + .HAVE_FUNC_ATTRIBUTE_COLD = 1, + .HAVE_FUNC_ATTRIBUTE_CONST = 1, + .HAVE_FUNC_ATTRIBUTE_ERROR = 1, + .HAVE_FUNC_ATTRIBUTE_MALLOC = 1, + .HAVE_FUNC_ATTRIBUTE_NORETURN = 1, + .HAVE_FUNC_ATTRIBUTE_PURE = 1, + .HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL = 1, + .HAVE_FUNC_ATTRIBUTE_SENTINEL = 1, + .HAVE_FUNC_ATTRIBUTE_UNUSED = 1, + .HAVE_FUNC_PTR_ATTRIBUTE1_ALLOC_SIZE = 1, + .HAVE_FUNC_PTR_ATTRIBUTE2_ALLOC_SIZE = null, + .HAVE_FUNC_PTR_ATTRIBUTE3_FORMAT = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_COLD = null, + .HAVE_FUNC_PTR_ATTRIBUTE_CONST = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_MALLOC = null, + .HAVE_FUNC_PTR_ATTRIBUTE_NORETURN = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_PURE = null, + .HAVE_FUNC_PTR_ATTRIBUTE_RETURNS_NONNULL = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_SENTINEL = 1, + .HAVE_FUNC_PTR_ATTRIBUTE_UNUSED = 1, + .HAVE_GETGID = null, + .HAVE_GETPAGESIZE = null, + .HAVE_GETRLIMIT = null, + .HAVE_GETUID = null, + .HAVE_HTOLE16 = null, + .HAVE_HTOLE32 = null, + .HAVE_HTOLE64 = null, + .HAVE_INTRIN_H = 1, + .HAVE_INTTYPES_H = 1, + .HAVE_IO_H = null, + .HAVE_ISASCII = 1, + .HAVE_ISCNTRL = 1, + .HAVE_MACHINE_ENDIAN_H = 1, + .HAVE_MEMPCPY = 1, + .HAVE_MEMPSET = null, + .HAVE_MINIX_CONFIG_H = null, + .HAVE_MMAP = 1, + .HAVE_PATHCONF = null, + .HAVE_REALPATH = 1, + .HAVE_SNPRINTF = 1, + .HAVE_STAT = 1, + .HAVE_STDARG_H = 1, + .HAVE_STDBOOL_H = 1, + .HAVE_STDC_INLINE = 1, + .HAVE_STDINT_H = 1, + .HAVE_STDIO_H = 1, + .HAVE_STDLIB_H = 1, + .HAVE_STDNORETURN_H = 1, + .HAVE_STRCASECMP = 1, + .HAVE_STRICMP = 1, + .HAVE_STRINGS_H = 1, + .HAVE_STRING_H = 1, + .HAVE_STRLCPY = null, + .HAVE_STRNCASECMP = 1, + .HAVE_STRNICMP = 1, + .HAVE_STRNLEN = 1, + .HAVE_STRRCHRNUL = null, + .HAVE_STRSEP = null, + .HAVE_STRUCT_STAT = null, + .HAVE_STRUCT__STATI64 = null, + .HAVE_SYSCONF = null, + .HAVE_SYS_ENDIAN_H = 1, + .HAVE_SYS_MMAN_H = 1, + .HAVE_SYS_PARAM_H = null, + .HAVE_SYS_RESOURCE_H = null, + .HAVE_SYS_STAT_H = 1, + .HAVE_SYS_TYPES_H = 1, + .HAVE_S_ISREG = null, + .HAVE_TYPEOF = null, + .HAVE_UINTPTR_T = 1, + .HAVE_UNISTD_H = null, + .HAVE_VSNPRINTF = null, + .HAVE_WCHAR_H = null, + .HAVE__ACCESS = null, + .HAVE__BITSCANREVERSE = null, + .HAVE__BITSCANREVERSE64 = null, + .HAVE__BOOL = 1, + .HAVE__BYTESWAP_UINT64 = null, + .HAVE__BYTESWAP_ULONG = null, + .HAVE__BYTESWAP_USHORT = null, + .HAVE__CHSIZE = null, + .HAVE__CHSIZE_S = null, + .HAVE__FILENO = null, + .HAVE__FSEEKI64 = null, + .HAVE__FSTATI64 = null, + .HAVE__FULLPATH = null, + .HAVE__STATI64 = null, + .HAVE___BSWAP_16 = 1, + .HAVE___BSWAP_32 = 1, + .HAVE___BSWAP_64 = 1, + .HAVE___BUILTIN_BSWAP16 = 1, + .HAVE___BUILTIN_BSWAP32 = 1, + .HAVE___BUILTIN_BSWAP64 = 1, + .HAVE___BUILTIN_CHOOSE_EXPR = 1, + .HAVE___BUILTIN_CLZ = 1, + .HAVE___BUILTIN_CLZL = 1, + .HAVE___BUILTIN_CLZLL = 1, + .HAVE___BUILTIN_CONSTANT_P = 1, + .HAVE___BUILTIN_EXPECT = 1, + .HAVE___CPU_TO_LE16 = null, + .HAVE___CPU_TO_LE32 = null, + .HAVE___CPU_TO_LE64 = null, + .LDFLAGS_WL_GC_SECTIONS = null, + .PACKAGE_BUGREPORT = "", + .PACKAGE_NAME = "", + .PACKAGE_STRING = "", + .PACKAGE_TARNAME = "", + .PACKAGE_URL = "", + .PACKAGE_VERSION = "", + .STDC_HEADERS = 1, + ._ALL_SOURCE = 1, + ._DARWIN_C_SOURCE = 1, + .__EXTENSIONS__ = 1, + ._GNU_SOURCE = 1, + ._HPUX_ALT_XOPEN_SOCKET_API = 1, + ._MINIX = null, + ._NETBSD_SOURCE = 1, + ._OPENBSD_SOURCE = 1, + ._POSIX_SOURCE = null, + ._POSIX_1_SOURCE = null, + ._POSIX_PTHREAD_SEMANTICS = 1, + .__STDC_WANT_IEC_60559_ATTRIBS_EXT__ = 1, + .__STDC_WANT_IEC_60559_BFP_EXT__ = 1, + .__STDC_WANT_IEC_60559_DFP_EXT__ = 1, + .__STDC_WANT_IEC_60559_FUNCS_EXT__ = 1, + .__STDC_WANT_IEC_60559_TYPES_EXT__ = 1, + .__STDC_WANT_LIB_EXT2__ = 1, + .__STDC_WANT_MATH_SPEC_FUNCS__ = 1, + ._TANDEM_SOURCE = 1, + ._XOPEN_SOURCE = null, + .WORDS_BIGENDIAN = have(t.cpu.arch.endian() == .big), + .WORDS_LITTLEENDIAN = have(t.cpu.arch.endian() != .big), + ._FILE_OFFSET_BITS = null, + ._LARGEFILE_SOURCE = null, + ._LARGE_FILES = null, + .@"const" = .@"const", + .@"inline" = .@"inline", + .restrict = .restrict, + .size_t = null, + .snprintf = null, + .typeof = .__typeof, + .uintptr_t = null, + .vsnprintf = null, + })); + } + + const files = [_][]const u8{ + "nasmlib/alloc.c", + "nasmlib/asprintf.c", + "nasmlib/badenum.c", + "nasmlib/bsi.c", + "nasmlib/crc32.c", + "nasmlib/crc64.c", + "nasmlib/file.c", + "nasmlib/filename.c", + "nasmlib/hashtbl.c", + "nasmlib/ilog2.c", + "nasmlib/md5c.c", + "nasmlib/mmap.c", + "nasmlib/nctype.c", + "nasmlib/path.c", + "nasmlib/perfhash.c", + "nasmlib/raa.c", + "nasmlib/rbtree.c", + "nasmlib/readnum.c", + "nasmlib/realpath.c", + "nasmlib/rlimit.c", + "nasmlib/saa.c", + "nasmlib/string.c", + "nasmlib/strlist.c", + "nasmlib/ver.c", + "nasmlib/zerobuf.c", + + "asm/assemble.c", + "asm/directbl.c", + "asm/directiv.c", + "asm/error.c", + "asm/eval.c", + "asm/exprdump.c", + "asm/exprlib.c", + "asm/floats.c", + "asm/labels.c", + "asm/listing.c", + "asm/nasm.c", + "asm/parser.c", + "asm/pptok.c", + "asm/pragma.c", + "asm/preproc.c", + "asm/quote.c", + "asm/rdstrnum.c", + "asm/segalloc.c", + "asm/srcfile.c", + "asm/stdscan.c", + "asm/strfunc.c", + "asm/tokhash.c", + "asm/warnings.c", + + "stdlib/snprintf.c", + "stdlib/strlcpy.c", + "stdlib/strnlen.c", + "stdlib/strrchrnul.c", + "stdlib/vsnprintf.c", + + "x86/disp8.c", + "x86/iflag.c", + "x86/insnsa.c", + "x86/insnsb.c", + "x86/insnsd.c", + "x86/insnsn.c", + "x86/regflags.c", + "x86/regs.c", + "x86/regvals.c", + + "common/common.c", + + "macros/macros.c", + + "output/codeview.c", + "output/legacy.c", + "output/nulldbg.c", + "output/nullout.c", + "output/outaout.c", + "output/outas86.c", + "output/outbin.c", + "output/outcoff.c", + "output/outdbg.c", + "output/outelf.c", + "output/outform.c", + "output/outieee.c", + "output/outlib.c", + "output/outmacho.c", + "output/outobj.c", + }; + const flags = [_][]const u8{ + "-DHAVE_CONFIG_H", + "-std=c17", + "-Wno-implicit-function-declaration", + }; + exe.addCSourceFiles(.{ + .files = &files, + .flags = &flags, + }); + exe.linkLibC(); + b.installArtifact(exe); +} + +fn have(c: bool) ?c_int { + return if (c) 1 else null; +} diff --git a/vere/ext/nasm/build.zig.zon b/vere/ext/nasm/build.zig.zon new file mode 100644 index 0000000..b45ff77 --- /dev/null +++ b/vere/ext/nasm/build.zig.zon @@ -0,0 +1,25 @@ +.{ + .name = .nasm, + .version = "2.16.1-4", + .fingerprint = 0x84b9c9eb77047d27, + .minimum_zig_version = "0.14.0", + .paths = .{ + "LICENSE", + "README.md", + "asm", + "build.zig", + "build.zig.zon", + "common", + "config", + "disasm", + "headers", + "include", + "macros", + "misc", + "nasmlib", + "output", + "perllib", + "stdlib", + "x86", + }, +} diff --git a/vere/ext/nasm/common/common.c b/vere/ext/nasm/common/common.c new file mode 100644 index 0000000..aa77805 --- /dev/null +++ b/vere/ext/nasm/common/common.c @@ -0,0 +1,65 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2021 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * common.c - code common to nasm and ndisasm + */ + +#include "compiler.h" +#include "nasm.h" +#include "nasmlib.h" +#include "insns.h" + +/* + * The current bit size of the CPU + */ +int globalbits = 0; +/* + * Common list of prefix names; ideally should be auto-generated + * from tokens.dat. This MUST match the enum in include/nasm.h. + */ +const char *prefix_name(int token) +{ + static const char *prefix_names[] = { + "a16", "a32", "a64", "asp", "lock", "o16", "o32", "o64", "osp", + "rep", "repe", "repne", "repnz", "repz", "times", "wait", + "xacquire", "xrelease", "bnd", "nobnd", "{rex}", "{evex}", "{vex}", + "{vex3}", "{vex2}" + }; + unsigned int prefix = token-PREFIX_ENUM_START; + + if (prefix >= ARRAY_SIZE(prefix_names)) + return NULL; + + return prefix_names[prefix]; +} diff --git a/vere/ext/nasm/config/config.h.in b/vere/ext/nasm/config/config.h.in new file mode 100644 index 0000000..eb99190 --- /dev/null +++ b/vere/ext/nasm/config/config.h.in @@ -0,0 +1,913 @@ +/* config/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 to call abort() on panics (internal errors), for debugging. */ +#undef ABORT_ON_PANIC + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define to 1 if compiled with the `-fdata-sections' compiler flag */ +#undef CFLAGS_FDATA_SECTIONS + +/* Define to 1 if compiled with the `-ffunction-sections' compiler flag */ +#undef CFLAGS_FFUNCTION_SECTIONS + +/* Define to 1 if compiled with the `-fgnu89-inline' compiler flag */ +#undef CFLAGS_FGNU89_INLINE + +/* Define to 1 if compiled with the `-flto' compiler flag */ +#undef CFLAGS_FLTO + +/* Define to 1 if compiled with the `-fno-common' compiler flag */ +#undef CFLAGS_FNO_COMMON + +/* Define to 1 if compiled with the `-fno-omit-frame-pointer' compiler flag */ +#undef CFLAGS_FNO_OMIT_FRAME_POINTER + +/* Define to 1 if compiled with the `-fsanitize=address' compiler flag */ +#undef CFLAGS_FSANITIZE_ADDRESS + +/* Define to 1 if compiled with the `-fsanitize=undefined' compiler flag */ +#undef CFLAGS_FSANITIZE_UNDEFINED + +/* Define to 1 if compiled with the `-ftrivial-auto-var-init=zero' compiler + flag */ +#undef CFLAGS_FTRIVIAL_AUTO_VAR_INIT_ZERO + +/* Define to 1 if compiled with the `-fvisibility=hidden' compiler flag */ +#undef CFLAGS_FVISIBILITY_HIDDEN + +/* Define to 1 if compiled with the `-fwrapv' compiler flag */ +#undef CFLAGS_FWRAPV + +/* Define to 1 if compiled with the `-ggdb3' compiler flag */ +#undef CFLAGS_GGDB3 + +/* Define to 1 if compiled with the `-O0' compiler flag */ +#undef CFLAGS_O0 + +/* Define to 1 if compiled with the `-pedantic' compiler flag */ +#undef CFLAGS_PEDANTIC + +/* Define to 1 if compiled with the `-pg' compiler flag */ +#undef CFLAGS_PG + +/* Define to 1 if compiled with the `-std=c11' compiler flag */ +#undef CFLAGS_STD_C11 + +/* Define to 1 if compiled with the `-std=c17' compiler flag */ +#undef CFLAGS_STD_C17 + +/* Define to 1 if compiled with the `-std=c99' compiler flag */ +#undef CFLAGS_STD_C99 + +/* Define to 1 if compiled with the `-U__STRICT_ANSI__' compiler flag */ +#undef CFLAGS_U_STRICT_ANSI + +/* Define to 1 if compiled with the `-W' compiler flag */ +#undef CFLAGS_W + +/* Define to 1 if compiled with the `-Wall' compiler flag */ +#undef CFLAGS_WALL + +/* Define to 1 if compiled with the `-Wc90-c99-compat' compiler flag */ +#undef CFLAGS_WC90_C99_COMPAT + +/* Define to 1 if compiled with the `-Wc99-compat' compiler flag */ +#undef CFLAGS_WC99_COMPAT + +/* Define to 1 if compiled with the `-Wc99-extensions' compiler flag */ +#undef CFLAGS_WC99_EXTENSIONS + +/* Define to 1 if compiled with the `-Werror' compiler flag */ +#undef CFLAGS_WERROR + +/* Define to 1 if compiled with the `-Werror=attributes' compiler flag */ +#undef CFLAGS_WERROR_ATTRIBUTES + +/* Define to 1 if compiled with the `-Werror=comment' compiler flag */ +#undef CFLAGS_WERROR_COMMENT + +/* Define to 1 if compiled with the `-Werror=implicit' compiler flag */ +#undef CFLAGS_WERROR_IMPLICIT + +/* Define to 1 if compiled with the `-Werror=missing-braces' compiler flag */ +#undef CFLAGS_WERROR_MISSING_BRACES + +/* Define to 1 if compiled with the `-Werror=missing-declarations' compiler + flag */ +#undef CFLAGS_WERROR_MISSING_DECLARATIONS + +/* Define to 1 if compiled with the `-Werror=missing-prototypes' compiler flag + */ +#undef CFLAGS_WERROR_MISSING_PROTOTYPES + +/* Define to 1 if compiled with the `-Werror=pointer-arith' compiler flag */ +#undef CFLAGS_WERROR_POINTER_ARITH + +/* Define to 1 if compiled with the `-Werror=return-type' compiler flag */ +#undef CFLAGS_WERROR_RETURN_TYPE + +/* Define to 1 if compiled with the `-Werror=strict-prototypes' compiler flag + */ +#undef CFLAGS_WERROR_STRICT_PROTOTYPES + +/* Define to 1 if compiled with the `-Werror=trigraphs' compiler flag */ +#undef CFLAGS_WERROR_TRIGRAPHS + +/* Define to 1 if compiled with the `-Werror=unknown-warning-option' compiler + flag */ +#undef CFLAGS_WERROR_UNKNOWN_WARNING_OPTION + +/* Define to 1 if compiled with the `-Werror=vla' compiler flag */ +#undef CFLAGS_WERROR_VLA + +/* Define to 1 if compiled with the `-Wlong-long' compiler flag */ +#undef CFLAGS_WLONG_LONG + +/* Define to 1 if compiled with the `-Wpedantic-ms-format' compiler flag */ +#undef CFLAGS_WPEDANTIC_MS_FORMAT + +/* Define to 1 if compiled with the `-Wshift-negative-value' compiler flag */ +#undef CFLAGS_WSHIFT_NEGATIVE_VALUE + +/* Define to 1 if compiled with the `-Wstringop-truncation' compiler flag */ +#undef CFLAGS_WSTRINGOP_TRUNCATION + +/* Define to 1 if compiled with the `-Wsuggest-attribute=cold' compiler flag + */ +#undef CFLAGS_WSUGGEST_ATTRIBUTE_COLD + +/* Define to 1 if compiled with the `-Wsuggest-attribute=const' compiler flag + */ +#undef CFLAGS_WSUGGEST_ATTRIBUTE_CONST + +/* Define to 1 if compiled with the `-Wsuggest-attribute=format' compiler flag + */ +#undef CFLAGS_WSUGGEST_ATTRIBUTE_FORMAT + +/* Define to 1 if compiled with the `-Wsuggest-attribute=malloc' compiler flag + */ +#undef CFLAGS_WSUGGEST_ATTRIBUTE_MALLOC + +/* Define to 1 if compiled with the `-Wsuggest-attribute=noreturn' compiler + flag */ +#undef CFLAGS_WSUGGEST_ATTRIBUTE_NORETURN + +/* Define to 1 if compiled with the `-Wsuggest-attribute=pure' compiler flag + */ +#undef CFLAGS_WSUGGEST_ATTRIBUTE_PURE + +/* Define to 1 if you have the `access' function. */ +#undef HAVE_ACCESS + +/* Define to 1 if you have the `canonicalize_file_name' function. */ +#undef HAVE_CANONICALIZE_FILE_NAME + +/* Define to 1 if you have the `cpu_to_le16' intrinsic function. */ +#undef HAVE_CPU_TO_LE16 + +/* Define to 1 if you have the `cpu_to_le32' intrinsic function. */ +#undef HAVE_CPU_TO_LE32 + +/* Define to 1 if you have the `cpu_to_le64' intrinsic function. */ +#undef HAVE_CPU_TO_LE64 + +/* Define to 1 if you have the declaration of `strcasecmp', and to 0 if you + don't. */ +#undef HAVE_DECL_STRCASECMP + +/* Define to 1 if you have the declaration of `stricmp', and to 0 if you + don't. */ +#undef HAVE_DECL_STRICMP + +/* Define to 1 if you have the declaration of `strlcpy', and to 0 if you + don't. */ +#undef HAVE_DECL_STRLCPY + +/* Define to 1 if you have the declaration of `strncasecmp', and to 0 if you + don't. */ +#undef HAVE_DECL_STRNCASECMP + +/* Define to 1 if you have the declaration of `strnicmp', and to 0 if you + don't. */ +#undef HAVE_DECL_STRNICMP + +/* Define to 1 if you have the declaration of `strnlen', and to 0 if you + don't. */ +#undef HAVE_DECL_STRNLEN + +/* Define to 1 if you have the declaration of `strrchrnul', and to 0 if you + don't. */ +#undef HAVE_DECL_STRRCHRNUL + +/* Define to 1 if you have the declaration of `strsep', and to 0 if you don't. + */ +#undef HAVE_DECL_STRSEP + +/* Define to 1 if you have the header file. */ +#undef HAVE_ENDIAN_H + +/* Define to 1 if you have the `faccessat' function. */ +#undef HAVE_FACCESSAT + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `fileno' function. */ +#undef HAVE_FILENO + +/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ +#undef HAVE_FSEEKO + +/* Define to 1 if you have the `fstat' function. */ +#undef HAVE_FSTAT + +/* Define to 1 if you have the `ftruncate' function. */ +#undef HAVE_FTRUNCATE + +/* Define to 1 if your compiler supports __attribute__((alloc_size)) on + functions */ +#undef HAVE_FUNC_ATTRIBUTE1_ALLOC_SIZE + +/* Define to 1 if your compiler supports __attribute__((alloc_size)) on + functions */ +#undef HAVE_FUNC_ATTRIBUTE2_ALLOC_SIZE + +/* Define to 1 if your compiler supports __attribute__((format)) on functions + */ +#undef HAVE_FUNC_ATTRIBUTE3_FORMAT + +/* Define to 1 if your compiler supports __attribute__((cold)) on functions */ +#undef HAVE_FUNC_ATTRIBUTE_COLD + +/* Define to 1 if your compiler supports __attribute__((const)) on functions + */ +#undef HAVE_FUNC_ATTRIBUTE_CONST + +/* Define to 1 if your compiler supports __attribute__((error)) on functions + */ +#undef HAVE_FUNC_ATTRIBUTE_ERROR + +/* Define to 1 if your compiler supports __attribute__((malloc)) on functions + */ +#undef HAVE_FUNC_ATTRIBUTE_MALLOC + +/* Define to 1 if your compiler supports __attribute__((noreturn)) on + functions */ +#undef HAVE_FUNC_ATTRIBUTE_NORETURN + +/* Define to 1 if your compiler supports __attribute__((pure)) on functions */ +#undef HAVE_FUNC_ATTRIBUTE_PURE + +/* Define to 1 if your compiler supports __attribute__((returns_nonnull)) on + functions */ +#undef HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL + +/* Define to 1 if your compiler supports __attribute__((sentinel)) on + functions */ +#undef HAVE_FUNC_ATTRIBUTE_SENTINEL + +/* Define to 1 if your compiler supports __attribute__((unused)) on functions + */ +#undef HAVE_FUNC_ATTRIBUTE_UNUSED + +/* Define to 1 if your compiler supports __attribute__((alloc_size)) on + function pointers */ +#undef HAVE_FUNC_PTR_ATTRIBUTE1_ALLOC_SIZE + +/* Define to 1 if your compiler supports __attribute__((alloc_size)) on + function pointers */ +#undef HAVE_FUNC_PTR_ATTRIBUTE2_ALLOC_SIZE + +/* Define to 1 if your compiler supports __attribute__((format)) on function + pointers */ +#undef HAVE_FUNC_PTR_ATTRIBUTE3_FORMAT + +/* Define to 1 if your compiler supports __attribute__((cold)) on function + pointers */ +#undef HAVE_FUNC_PTR_ATTRIBUTE_COLD + +/* Define to 1 if your compiler supports __attribute__((const)) on function + pointers */ +#undef HAVE_FUNC_PTR_ATTRIBUTE_CONST + +/* Define to 1 if your compiler supports __attribute__((malloc)) on function + pointers */ +#undef HAVE_FUNC_PTR_ATTRIBUTE_MALLOC + +/* Define to 1 if your compiler supports __attribute__((noreturn)) on function + pointers */ +#undef HAVE_FUNC_PTR_ATTRIBUTE_NORETURN + +/* Define to 1 if your compiler supports __attribute__((pure)) on function + pointers */ +#undef HAVE_FUNC_PTR_ATTRIBUTE_PURE + +/* Define to 1 if your compiler supports __attribute__((returns_nonnull)) on + function pointers */ +#undef HAVE_FUNC_PTR_ATTRIBUTE_RETURNS_NONNULL + +/* Define to 1 if your compiler supports __attribute__((sentinel)) on function + pointers */ +#undef HAVE_FUNC_PTR_ATTRIBUTE_SENTINEL + +/* Define to 1 if your compiler supports __attribute__((unused)) on function + pointers */ +#undef HAVE_FUNC_PTR_ATTRIBUTE_UNUSED + +/* Define to 1 if you have the `getgid' function. */ +#undef HAVE_GETGID + +/* Define to 1 if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define to 1 if you have the `getrlimit' function. */ +#undef HAVE_GETRLIMIT + +/* Define to 1 if you have the `getuid' function. */ +#undef HAVE_GETUID + +/* Define to 1 if you have the `htole16' intrinsic function. */ +#undef HAVE_HTOLE16 + +/* Define to 1 if you have the `htole32' intrinsic function. */ +#undef HAVE_HTOLE32 + +/* Define to 1 if you have the `htole64' intrinsic function. */ +#undef HAVE_HTOLE64 + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTRIN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_IO_H + +/* Define to 1 if you have the `isascii' function. */ +#undef HAVE_ISASCII + +/* Define to 1 if you have the `iscntrl' function. */ +#undef HAVE_ISCNTRL + +/* Define to 1 if you have the header file. */ +#undef HAVE_MACHINE_ENDIAN_H + +/* Define to 1 if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define to 1 if you have the `mempset' function. */ +#undef HAVE_MEMPSET + +/* Define to 1 if you have the header file. */ +#undef HAVE_MINIX_CONFIG_H + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the `pathconf' function. */ +#undef HAVE_PATHCONF + +/* Define to 1 if you have the `realpath' function. */ +#undef HAVE_REALPATH + +/* Define to 1 if you have some version of the snprintf function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the `stat' function. */ +#undef HAVE_STAT + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDARG_H + +/* Define to 1 if stdbool.h conforms to C99. */ +#undef HAVE_STDBOOL_H + +/* Define to 1 if your compiler supports C99 extern inline */ +#undef HAVE_STDC_INLINE + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDNORETURN_H + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `stricmp' function. */ +#undef HAVE_STRICMP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strlcpy' function. */ +#undef HAVE_STRLCPY + +/* Define to 1 if you have the `strncasecmp' function. */ +#undef HAVE_STRNCASECMP + +/* Define to 1 if you have the `strnicmp' function. */ +#undef HAVE_STRNICMP + +/* Define to 1 if you have the `strnlen' function. */ +#undef HAVE_STRNLEN + +/* Define to 1 if you have the `strrchrnul' function. */ +#undef HAVE_STRRCHRNUL + +/* Define to 1 if you have the `strsep' function. */ +#undef HAVE_STRSEP + +/* Define to 1 if the system has the type `struct stat'. */ +#undef HAVE_STRUCT_STAT + +/* Define to 1 if the system has the type `struct _stati64'. */ +#undef HAVE_STRUCT__STATI64 + +/* Define to 1 if you have the `sysconf' function. */ +#undef HAVE_SYSCONF + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_ENDIAN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_MMAN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the `S_ISREG' function. */ +#undef HAVE_S_ISREG + +/* Define to 1 if you have some version of the typeof operator. */ +#undef HAVE_TYPEOF + +/* Define to 1 if the system has the type `uintptr_t'. */ +#undef HAVE_UINTPTR_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have some version of the vsnprintf function. */ +#undef HAVE_VSNPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_WCHAR_H + +/* Define to 1 if you have the `_access' function. */ +#undef HAVE__ACCESS + +/* Define to 1 if you have the `_BitScanReverse' intrinsic function. */ +#undef HAVE__BITSCANREVERSE + +/* Define to 1 if you have the `_BitScanReverse64' intrinsic function. */ +#undef HAVE__BITSCANREVERSE64 + +/* Define to 1 if the system has the type `_Bool'. */ +#undef HAVE__BOOL + +/* Define to 1 if you have the `_byteswap_uint64' intrinsic function. */ +#undef HAVE__BYTESWAP_UINT64 + +/* Define to 1 if you have the `_byteswap_ulong' intrinsic function. */ +#undef HAVE__BYTESWAP_ULONG + +/* Define to 1 if you have the `_byteswap_ushort' intrinsic function. */ +#undef HAVE__BYTESWAP_USHORT + +/* Define to 1 if you have the `_chsize' function. */ +#undef HAVE__CHSIZE + +/* Define to 1 if you have the `_chsize_s' function. */ +#undef HAVE__CHSIZE_S + +/* Define to 1 if you have the `_fileno' function. */ +#undef HAVE__FILENO + +/* Define to 1 if you have the `_fseeki64' function. */ +#undef HAVE__FSEEKI64 + +/* Define to 1 if you have the `_fstati64' function. */ +#undef HAVE__FSTATI64 + +/* Define to 1 if you have the `_fullpath' function. */ +#undef HAVE__FULLPATH + +/* Define to 1 if you have the `_stati64' function. */ +#undef HAVE__STATI64 + +/* Define to 1 if you have the `__bswap_16' intrinsic function. */ +#undef HAVE___BSWAP_16 + +/* Define to 1 if you have the `__bswap_32' intrinsic function. */ +#undef HAVE___BSWAP_32 + +/* Define to 1 if you have the `__bswap_64' intrinsic function. */ +#undef HAVE___BSWAP_64 + +/* Define to 1 if you have the `__builtin_bswap16' intrinsic function. */ +#undef HAVE___BUILTIN_BSWAP16 + +/* Define to 1 if you have the `__builtin_bswap32' intrinsic function. */ +#undef HAVE___BUILTIN_BSWAP32 + +/* Define to 1 if you have the `__builtin_bswap64' intrinsic function. */ +#undef HAVE___BUILTIN_BSWAP64 + +/* Define to 1 if you have the `__builtin_choose_expr' intrinsic function. */ +#undef HAVE___BUILTIN_CHOOSE_EXPR + +/* Define to 1 if you have the `__builtin_clz' intrinsic function. */ +#undef HAVE___BUILTIN_CLZ + +/* Define to 1 if you have the `__builtin_clzl' intrinsic function. */ +#undef HAVE___BUILTIN_CLZL + +/* Define to 1 if you have the `__builtin_clzll' intrinsic function. */ +#undef HAVE___BUILTIN_CLZLL + +/* Define to 1 if you have the `__builtin_constant_p' intrinsic function. */ +#undef HAVE___BUILTIN_CONSTANT_P + +/* Define to 1 if you have the `__builtin_expect' intrinsic function. */ +#undef HAVE___BUILTIN_EXPECT + +/* Define to 1 if you have the `__cpu_to_le16' intrinsic function. */ +#undef HAVE___CPU_TO_LE16 + +/* Define to 1 if you have the `__cpu_to_le32' intrinsic function. */ +#undef HAVE___CPU_TO_LE32 + +/* Define to 1 if you have the `__cpu_to_le64' intrinsic function. */ +#undef HAVE___CPU_TO_LE64 + +/* Define to 1 if compiled with the `-Wl,--gc-sections' compiler flag */ +#undef LDFLAGS_WL_GC_SECTIONS + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ +#undef STDC_HEADERS + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#endif + + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN + +/* Define to 1 if your processor stores words with the least significant byte + first (like Intel and VAX, unlike Motorola and SPARC). */ +#undef WORDS_LITTLEENDIAN + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ +#undef _LARGEFILE_SOURCE + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported only directly. */ +#undef restrict +/* Work around a bug in older versions of Sun C++, which did not + #define __restrict__ or support _Restrict or __restrict__ + even though the corresponding Sun C compiler ended up with + "#define restrict _Restrict" or "#define restrict __restrict__" + in the previous line. This workaround can be removed once + we assume Oracle Developer Studio 12.5 (2016) or later. */ +#if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__ +# define _Restrict +# define __restrict__ +#endif + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define if your snprintf function is not named snprintf. */ +#undef snprintf + +/* Define if your typeof operator is not named `typeof'. */ +#undef typeof + +/* Define to the type of an unsigned integer type wide enough to hold a + pointer, if such a type exists, and if the system does not define it. */ +#undef uintptr_t + +/* Define if your vsnprintf function is not named vsnprintf. */ +#undef vsnprintf + + +/* Begin unconfig.h */ + +#ifndef alloc_size_func2 +# ifdef HAVE_FUNC_ATTRIBUTE2_ALLOC_SIZE +# define alloc_size_func2(x1,x2) __attribute__((alloc_size(x1,x2))) +# else +# define alloc_size_func2(x1,x2) +# endif +#endif + +#ifndef alloc_size_func2_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE2_ALLOC_SIZE +# define alloc_size_func2_ptr(x1,x2) __attribute__((alloc_size(x1,x2))) +# else +# define alloc_size_func2_ptr(x1,x2) +# endif +#endif + +#ifndef end_with_null +# ifdef HAVE_FUNC_ATTRIBUTE_SENTINEL +# define end_with_null __attribute__((sentinel)) +# else +# define end_with_null +# endif +#endif + +#ifndef end_with_null_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_SENTINEL +# define end_with_null_ptr __attribute__((sentinel)) +# else +# define end_with_null_ptr +# endif +#endif + +#ifndef format_func3 +# ifdef HAVE_FUNC_ATTRIBUTE3_FORMAT +# define format_func3(x1,x2,x3) __attribute__((format(x1,x2,x3))) +# else +# define format_func3(x1,x2,x3) +# endif +#endif + +#ifndef format_func3_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE3_FORMAT +# define format_func3_ptr(x1,x2,x3) __attribute__((format(x1,x2,x3))) +# else +# define format_func3_ptr(x1,x2,x3) +# endif +#endif + +#ifndef const_func +# ifdef HAVE_FUNC_ATTRIBUTE_CONST +# define const_func __attribute__((const)) +# else +# define const_func +# endif +#endif + +#ifndef const_func_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_CONST +# define const_func_ptr __attribute__((const)) +# else +# define const_func_ptr +# endif +#endif + +#ifndef pure_func +# ifdef HAVE_FUNC_ATTRIBUTE_PURE +# define pure_func __attribute__((pure)) +# else +# define pure_func +# endif +#endif + +#ifndef pure_func_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_PURE +# define pure_func_ptr __attribute__((pure)) +# else +# define pure_func_ptr +# endif +#endif + +#ifndef noreturn_func +# ifdef HAVE_FUNC_ATTRIBUTE_NORETURN +# define noreturn_func __attribute__((noreturn)) +# else +# define noreturn_func +# endif +#endif + +#ifndef unlikely_func +# ifdef HAVE_FUNC_ATTRIBUTE_COLD +# define unlikely_func __attribute__((cold)) +# else +# define unlikely_func +# endif +#endif + +#ifndef unlikely_func_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_COLD +# define unlikely_func_ptr __attribute__((cold)) +# else +# define unlikely_func_ptr +# endif +#endif + +#ifndef unused_func +# ifdef HAVE_FUNC_ATTRIBUTE_UNUSED +# define unused_func __attribute__((unused)) +# else +# define unused_func +# endif +#endif + +#ifndef unused_func_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_UNUSED +# define unused_func_ptr __attribute__((unused)) +# else +# define unused_func_ptr +# endif +#endif + +#ifndef noreturn_func_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_NORETURN +# define noreturn_func_ptr __attribute__((noreturn)) +# else +# define noreturn_func_ptr +# endif +#endif + +#ifndef never_null +# ifdef HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL +# define never_null __attribute__((returns_nonnull)) +# else +# define never_null +# endif +#endif + +#ifndef never_null_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_RETURNS_NONNULL +# define never_null_ptr __attribute__((returns_nonnull)) +# else +# define never_null_ptr +# endif +#endif + +#ifndef malloc_func +# ifdef HAVE_FUNC_ATTRIBUTE_MALLOC +# define malloc_func __attribute__((malloc)) +# else +# define malloc_func +# endif +#endif + +#ifndef malloc_func_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_MALLOC +# define malloc_func_ptr __attribute__((malloc)) +# else +# define malloc_func_ptr +# endif +#endif + +#ifndef alloc_size_func1 +# ifdef HAVE_FUNC_ATTRIBUTE1_ALLOC_SIZE +# define alloc_size_func1(x1) __attribute__((alloc_size(x1))) +# else +# define alloc_size_func1(x1) +# endif +#endif + +#ifndef alloc_size_func1_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE1_ALLOC_SIZE +# define alloc_size_func1_ptr(x1) __attribute__((alloc_size(x1))) +# else +# define alloc_size_func1_ptr(x1) +# endif +#endif diff --git a/vere/ext/nasm/config/msvc.h b/vere/ext/nasm/config/msvc.h new file mode 100644 index 0000000..7f83ace --- /dev/null +++ b/vere/ext/nasm/config/msvc.h @@ -0,0 +1,196 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2016 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * config/msvc.h + * + * Compiler definitions for Microsoft Visual C++; + * instead of unconfig.h. See config.h.in for the + * variables which can be defined here. + * + * MSDN seems to have information back to Visual Studio 2003, so aim + * for compatibility that far back. + * + * Relevant _MSC_VER values: + * 1310 - Visual Studio 2003 + * 1400 - Visual Studio 2005 + * 1500 - Visual Studio 2008 + * 1600 - Visual Studio 2010 + * 1700 - Visual Studio 2012 + * 1800 - Visual Studio 2013 + * 1900 - Visual Studio 2015 + * 1910 - Visual Studio 2017 + */ + +#ifndef NASM_CONFIG_MSVC_H +#define NASM_CONFIG_MSVC_H + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +#if _MSC_VER >= 1800 +# define HAVE_INTTYPES_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#define HAVE_IO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `access' function. */ +#define HAVE_ACCESS 1 +#if _MSC_VER < 1400 +# define access _access +#endif + +/* Define to 1 if you have the `fileno' function. */ +#define HAVE_FILENO 1 +#if _MSC_VER < 1400 +# define fileno _fileno +#endif + +/* Define to 1 if you have the `snprintf' function. */ +#define HAVE_SNPRINTF 1 +#if _MSC_VER < 1900 +# define snprintf _snprintf +#endif + +/* Define to 1 if you have the `_chsize' function. */ +#define HAVE__CHSIZE 1 + +/* Define to 1 if you have the `_chsize_s' function. */ +#if _MSC_VER >= 1400 +# define HAVE__CHSIZE_S 1 +#endif + +/* Define to 1 if you have the `_filelengthi64' function. */ +#define HAVE__FILELENGTHI64 1 + +/* Define to 1 if you have the `_fseeki64' function. */ +#define HAVE__FSEEKI64 1 + +/* Define to 1 if you have the `_fullpath' function. */ +#define HAVE__FULLPATH 1 + +/* Define to 1 if the system has the type `struct _stati64'. */ +#define HAVE_STRUCT__STATI64 + +/* Define to 1 if you have the `_stati64' function. */ +#define HAVE__STATI64 1 + +/* Define to 1 if you have the `_fstati64' function. */ +#define HAVE__FSTATI64 1 + +/* Define to 1 if stdbool.h conforms to C99. */ +#if _MSC_VER >= 1800 +# define HAVE_STDBOOL_H 1 +#endif + +/* Define to 1 if you have the `stricmp' function. */ +#define HAVE_STRICMP 1 +/* Define to 1 if you have the declaration of `stricmp', and to 0 if you + don't. */ +#define HAVE_DECL_STRICMP 1 +#if _MSC_VER < 1400 +# define stricmp _stricmp +#endif + +/* Define to 1 if you have the `strnicmp' function. */ +#define HAVE_STRNICMP 1 +/* Define to 1 if you have the declaration of `strnicmp', and to 0 if you + don't. */ +#define HAVE_DECL_STRNICMP 1 +#if _MSC_VER < 1400 +# define strnicmp _strnicmp +#endif + +#if _MSC_VER >= 1400 +/* Define to 1 if you have the `strnlen' function. */ +# define HAVE_STRNLEN 1 +/* Define to 1 if you have the declaration of `strnlen', and to 0 if you + don't. */ +# define HAVE_DECL_STRNLEN 1 +#endif + +/* Define to 1 if the system has the type `uintptr_t'. */ +#if _MSC_VER >= 1900 +# define HAVE_UINTPTR_T 1 +#else +/* Define to the type of an unsigned integer type wide enough to hold a + pointer, if such a type exists, and if the system does not define it. */ +# define uintptr_t size_t +#endif + +/* Define to 1 if you have the `vsnprintf' function. */ +#define HAVE_VSNPRINTF 1 +#if _MSC_VER < 1400 +# define vsnprint _vsnprintf +#endif + +/* Define to 1 if the system has the type `_Bool'. */ +#if _MSC_VER >= 1900 +# define HAVE__BOOL 1 +#endif + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if your processor stores words with the least significant byte + first (like Intel and VAX, unlike Motorola and SPARC). */ +#define WORDS_LITTLEENDIAN 1 + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#define inline __inline + +/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported directly. */ +#if _MSC_VER >= 1700 +#define restrict __restrict +#else +#define restrict +#endif + +#endif /* NASM_CONFIG_MSVC_H */ diff --git a/vere/ext/nasm/config/unconfig.h b/vere/ext/nasm/config/unconfig.h new file mode 100644 index 0000000..79cb70a --- /dev/null +++ b/vere/ext/nasm/config/unconfig.h @@ -0,0 +1,182 @@ +/* config/unconfig.h: autogenerated by tools/unconfig.pl */ + +#ifndef CONFIG_UNCONFIG_H +#define CONFIG_UNCONFIG_H + +#ifndef alloc_size_func2 +# ifdef HAVE_FUNC_ATTRIBUTE2_ALLOC_SIZE +# define alloc_size_func2(x1,x2) __attribute__((alloc_size(x1,x2))) +# else +# define alloc_size_func2(x1,x2) +# endif +#endif + +#ifndef alloc_size_func2_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE2_ALLOC_SIZE +# define alloc_size_func2_ptr(x1,x2) __attribute__((alloc_size(x1,x2))) +# else +# define alloc_size_func2_ptr(x1,x2) +# endif +#endif + +#ifndef end_with_null +# ifdef HAVE_FUNC_ATTRIBUTE_SENTINEL +# define end_with_null __attribute__((sentinel)) +# else +# define end_with_null +# endif +#endif + +#ifndef end_with_null_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_SENTINEL +# define end_with_null_ptr __attribute__((sentinel)) +# else +# define end_with_null_ptr +# endif +#endif + +#ifndef format_func3 +# ifdef HAVE_FUNC_ATTRIBUTE3_FORMAT +# define format_func3(x1,x2,x3) __attribute__((format(x1,x2,x3))) +# else +# define format_func3(x1,x2,x3) +# endif +#endif + +#ifndef format_func3_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE3_FORMAT +# define format_func3_ptr(x1,x2,x3) __attribute__((format(x1,x2,x3))) +# else +# define format_func3_ptr(x1,x2,x3) +# endif +#endif + +#ifndef const_func +# ifdef HAVE_FUNC_ATTRIBUTE_CONST +# define const_func __attribute__((const)) +# else +# define const_func +# endif +#endif + +#ifndef const_func_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_CONST +# define const_func_ptr __attribute__((const)) +# else +# define const_func_ptr +# endif +#endif + +#ifndef pure_func +# ifdef HAVE_FUNC_ATTRIBUTE_PURE +# define pure_func __attribute__((pure)) +# else +# define pure_func +# endif +#endif + +#ifndef pure_func_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_PURE +# define pure_func_ptr __attribute__((pure)) +# else +# define pure_func_ptr +# endif +#endif + +#ifndef noreturn_func +# ifdef HAVE_FUNC_ATTRIBUTE_NORETURN +# define noreturn_func __attribute__((noreturn)) +# else +# define noreturn_func +# endif +#endif + +#ifndef unlikely_func +# ifdef HAVE_FUNC_ATTRIBUTE_COLD +# define unlikely_func __attribute__((cold)) +# else +# define unlikely_func +# endif +#endif + +#ifndef unlikely_func_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_COLD +# define unlikely_func_ptr __attribute__((cold)) +# else +# define unlikely_func_ptr +# endif +#endif + +#ifndef unused_func +# ifdef HAVE_FUNC_ATTRIBUTE_UNUSED +# define unused_func __attribute__((unused)) +# else +# define unused_func +# endif +#endif + +#ifndef unused_func_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_UNUSED +# define unused_func_ptr __attribute__((unused)) +# else +# define unused_func_ptr +# endif +#endif + +#ifndef noreturn_func_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_NORETURN +# define noreturn_func_ptr __attribute__((noreturn)) +# else +# define noreturn_func_ptr +# endif +#endif + +#ifndef never_null +# ifdef HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL +# define never_null __attribute__((returns_nonnull)) +# else +# define never_null +# endif +#endif + +#ifndef never_null_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_RETURNS_NONNULL +# define never_null_ptr __attribute__((returns_nonnull)) +# else +# define never_null_ptr +# endif +#endif + +#ifndef malloc_func +# ifdef HAVE_FUNC_ATTRIBUTE_MALLOC +# define malloc_func __attribute__((malloc)) +# else +# define malloc_func +# endif +#endif + +#ifndef malloc_func_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE_MALLOC +# define malloc_func_ptr __attribute__((malloc)) +# else +# define malloc_func_ptr +# endif +#endif + +#ifndef alloc_size_func1 +# ifdef HAVE_FUNC_ATTRIBUTE1_ALLOC_SIZE +# define alloc_size_func1(x1) __attribute__((alloc_size(x1))) +# else +# define alloc_size_func1(x1) +# endif +#endif + +#ifndef alloc_size_func1_ptr +# ifdef HAVE_FUNC_PTR_ATTRIBUTE1_ALLOC_SIZE +# define alloc_size_func1_ptr(x1) __attribute__((alloc_size(x1))) +# else +# define alloc_size_func1_ptr(x1) +# endif +#endif + +#endif /* CONFIG_UNCONFIG_H */ diff --git a/vere/ext/nasm/config/unknown.h b/vere/ext/nasm/config/unknown.h new file mode 100644 index 0000000..d3cbe49 --- /dev/null +++ b/vere/ext/nasm/config/unknown.h @@ -0,0 +1,51 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2016 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * config/unknown.h + * + * Compiler definitions for an unknown compiler. Assume the worst. + */ + +#ifndef NASM_CONFIG_UNKNOWN_H +#define NASM_CONFIG_UNKNOWN_H + +/* Assume these don't exist */ +#ifndef inline +# define inline +#endif +#ifndef restrict +# define restrict +#endif + +#endif /* NASM_CONFIG_UNKNOWN_H */ diff --git a/vere/ext/nasm/config/watcom.h b/vere/ext/nasm/config/watcom.h new file mode 100644 index 0000000..8d49026 --- /dev/null +++ b/vere/ext/nasm/config/watcom.h @@ -0,0 +1,105 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2016 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * config/watcom.h + * + * Compiler definitions for OpenWatcom instead of config.h.in. + * See config.h.in for the variables which can be defined here. + * + * This was taken from openwcom.mak and needs to be actually validated. + */ + +#ifndef NASM_CONFIG_WATCOM_H +#define NASM_CONFIG_WATCOM_H + +#define HAVE_DECL_STRCASECMP 1 +#define HAVE_DECL_STRICMP 1 +#define HAVE_DECL_STRLCPY 1 +#define HAVE_DECL_STRNCASECMP 1 +#define HAVE_DECL_STRNICMP 1 +#ifndef __LINUX__ +#define HAVE_IO_H 1 +#endif +#define HAVE_LIMITS_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_SNPRINTF 1 +#if (__WATCOMC__ >= 1230) +#undef HAVE__BOOL /* need stdbool.h */ +#define HAVE_STDBOOL_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UINTPTR_T 1 +#endif +#define HAVE_STDLIB_H 1 +#define HAVE_STRCSPN 1 +#define HAVE_STRICMP 1 +#define HAVE_STRNICMP 1 +#define HAVE_STRSPN 1 +#define HAVE_STRING_H 1 +#if (__WATCOMC__ >= 1240) +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRINGS_H 1 +#endif +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_FCNTL_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_VSNPRINTF 1 +#define STDC_HEADERS 1 + +#define HAVE__FULLPATH 1 +#define HAVE_ACCESS +#define HAVE_STRUCT_STAT +#define HAVE_STAT +#define HAVE_FSTAT +#define HAVE_FILENO +#ifdef __LINUX__ +#define HAVE_FTRUNCATE +#else +#define HAVE_CHSIZE +#define HAVE__CHSIZE +#endif +#define HAVE_ISASCII +#define HAVE_ISCNTRL + +#if (__WATCOMC__ >= 1250) +#define restrict __restrict +#else +#define restrict +#endif +#define inline __inline + +#endif /* NASM_CONFIG_WATCOM_H */ diff --git a/vere/ext/nasm/disasm/disasm.c b/vere/ext/nasm/disasm/disasm.c new file mode 100644 index 0000000..ac2dc97 --- /dev/null +++ b/vere/ext/nasm/disasm/disasm.c @@ -0,0 +1,1762 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2022 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * disasm.c where all the _work_ gets done in the Netwide Disassembler + */ + +#include "compiler.h" + + +#include "nasm.h" +#include "disasm.h" +#include "sync.h" +#include "insns.h" +#include "tables.h" +#include "regdis.h" +#include "disp8.h" + +#define fetch_safe(_start, _ptr, _size, _need, _op) \ + do { \ + if (((_ptr) - (_start)) >= ((_size) - (_need))) \ + _op; \ + } while (0) + +#define fetch_or_return(_start, _ptr, _size, _need) \ + fetch_safe(_start, _ptr, _size, _need, return 0) + +/* + * Flags that go into the `segment' field of `insn' structures + * during disassembly. + */ +#define SEG_RELATIVE 1 +#define SEG_32BIT 2 +#define SEG_RMREG 4 +#define SEG_DISP8 8 +#define SEG_DISP16 16 +#define SEG_DISP32 32 +#define SEG_NODISP 64 +#define SEG_SIGNED 128 +#define SEG_64BIT 256 + +/* + * Prefix information + */ +struct prefix_info { + uint8_t osize; /* Operand size */ + uint8_t asize; /* Address size */ + uint8_t osp; /* Operand size prefix present */ + uint8_t asp; /* Address size prefix present */ + uint8_t rep; /* Rep prefix present */ + uint8_t seg; /* Segment override prefix present */ + uint8_t wait; /* WAIT "prefix" present */ + uint8_t lock; /* Lock prefix present */ + uint8_t vex[3]; /* VEX prefix present */ + uint8_t vex_c; /* VEX "class" (VEX, XOP, ...) */ + uint8_t vex_m; /* VEX.M field */ + uint8_t vex_v; + uint8_t vex_lp; /* VEX.LP fields */ + uint32_t rex; /* REX prefix present */ + uint8_t evex[3]; /* EVEX prefix present */ +}; + +#define getu8(x) (*(uint8_t *)(x)) +#if X86_MEMORY +/* Littleendian CPU which can handle unaligned references */ +#define getu16(x) (*(uint16_t *)(x)) +#define getu32(x) (*(uint32_t *)(x)) +#define getu64(x) (*(uint64_t *)(x)) +#else +static uint16_t getu16(uint8_t *data) +{ + return (uint16_t)data[0] + ((uint16_t)data[1] << 8); +} +static uint32_t getu32(uint8_t *data) +{ + return (uint32_t)getu16(data) + ((uint32_t)getu16(data+2) << 16); +} +static uint64_t getu64(uint8_t *data) +{ + return (uint64_t)getu32(data) + ((uint64_t)getu32(data+4) << 32); +} +#endif + +#define gets8(x) ((int8_t)getu8(x)) +#define gets16(x) ((int16_t)getu16(x)) +#define gets32(x) ((int32_t)getu32(x)) +#define gets64(x) ((int64_t)getu64(x)) + +/* Important: regval must already have been adjusted for rex extensions */ +static enum reg_enum whichreg(opflags_t regflags, int regval, int rex) +{ + size_t i; + + static const struct { + opflags_t flags; + enum reg_enum reg; + } specific_registers[] = { + {REG_AL, R_AL}, + {REG_AX, R_AX}, + {REG_EAX, R_EAX}, + {REG_RAX, R_RAX}, + {REG_DL, R_DL}, + {REG_DX, R_DX}, + {REG_EDX, R_EDX}, + {REG_RDX, R_RDX}, + {REG_CL, R_CL}, + {REG_CX, R_CX}, + {REG_ECX, R_ECX}, + {REG_RCX, R_RCX}, + {FPU0, R_ST0}, + {XMM0, R_XMM0}, + {YMM0, R_YMM0}, + {ZMM0, R_ZMM0}, + {REG_ES, R_ES}, + {REG_CS, R_CS}, + {REG_SS, R_SS}, + {REG_DS, R_DS}, + {REG_FS, R_FS}, + {REG_GS, R_GS}, + {OPMASK0, R_K0}, + }; + + if (!(regflags & (REGISTER|REGMEM))) + return 0; /* Registers not permissible?! */ + + regflags |= REGISTER; + + for (i = 0; i < ARRAY_SIZE(specific_registers); i++) + if (!(specific_registers[i].flags & ~regflags)) + return specific_registers[i].reg; + + /* All the entries below look up regval in an 16-entry array */ + if (regval < 0 || regval > (rex & REX_EV ? 31 : 15)) + return 0; + +#define GET_REGISTER(__array, __index) \ + ((size_t)(__index) < (size_t)ARRAY_SIZE(__array) ? __array[(__index)] : 0) + + if (!(REG8 & ~regflags)) { + if (rex & (REX_P|REX_NH)) + return GET_REGISTER(nasm_rd_reg8_rex, regval); + else + return GET_REGISTER(nasm_rd_reg8, regval); + } + if (!(REG16 & ~regflags)) + return GET_REGISTER(nasm_rd_reg16, regval); + if (!(REG32 & ~regflags)) + return GET_REGISTER(nasm_rd_reg32, regval); + if (!(REG64 & ~regflags)) + return GET_REGISTER(nasm_rd_reg64, regval); + if (!(REG_SREG & ~regflags)) + return GET_REGISTER(nasm_rd_sreg, regval & 7); /* Ignore REX */ + if (!(REG_CREG & ~regflags)) + return GET_REGISTER(nasm_rd_creg, regval); + if (!(REG_DREG & ~regflags)) + return GET_REGISTER(nasm_rd_dreg, regval); + if (!(REG_TREG & ~regflags)) { + if (regval > 7) + return 0; /* TR registers are ill-defined with rex */ + return GET_REGISTER(nasm_rd_treg, regval); + } + if (!(FPUREG & ~regflags)) + return GET_REGISTER(nasm_rd_fpureg, regval & 7); /* Ignore REX */ + if (!(MMXREG & ~regflags)) + return GET_REGISTER(nasm_rd_mmxreg, regval & 7); /* Ignore REX */ + if (!(XMMREG & ~regflags)) + return GET_REGISTER(nasm_rd_xmmreg, regval); + if (!(YMMREG & ~regflags)) + return GET_REGISTER(nasm_rd_ymmreg, regval); + if (!(ZMMREG & ~regflags)) + return GET_REGISTER(nasm_rd_zmmreg, regval); + if (!(OPMASKREG & ~regflags)) + return GET_REGISTER(nasm_rd_opmaskreg, regval); + if (!(BNDREG & ~regflags)) + return GET_REGISTER(nasm_rd_bndreg, regval); + if (!(TMMREG & ~regflags)) + return GET_REGISTER(nasm_rd_tmmreg, regval); + +#undef GET_REGISTER + return 0; +} + +static uint32_t append_evex_reg_deco(char *buf, uint32_t num, + decoflags_t deco, uint8_t *evex) +{ + const char * const er_names[] = {"rn-sae", "rd-sae", "ru-sae", "rz-sae"}; + uint32_t num_chars = 0; + + if ((deco & MASK) && (evex[2] & EVEX_P2AAA)) { + enum reg_enum opmasknum = nasm_rd_opmaskreg[evex[2] & EVEX_P2AAA]; + const char * regname = nasm_reg_names[opmasknum - EXPR_REG_START]; + + num_chars += snprintf(buf + num_chars, num - num_chars, + "{%s}", regname); + + if ((deco & Z) && (evex[2] & EVEX_P2Z)) { + num_chars += snprintf(buf + num_chars, num - num_chars, + "{z}"); + } + } + + if (evex[2] & EVEX_P2B) { + if (deco & ER) { + uint8_t er_type = (evex[2] & EVEX_P2LL) >> 5; + num_chars += snprintf(buf + num_chars, num - num_chars, + ",{%s}", er_names[er_type]); + } else if (deco & SAE) { + num_chars += snprintf(buf + num_chars, num - num_chars, + ",{sae}"); + } + } + + return num_chars; +} + +static uint32_t append_evex_mem_deco(char *buf, uint32_t num, opflags_t type, + decoflags_t deco, uint8_t *evex) +{ + uint32_t num_chars = 0; + + if ((evex[2] & EVEX_P2B) && (deco & BRDCAST_MASK)) { + decoflags_t deco_brsize = deco & BRSIZE_MASK; + opflags_t template_opsize = brsize_to_size(deco_brsize); + unsigned int br_num = (type & SIZE_MASK) / BITS128 * + BITS64 / template_opsize * 2; + + num_chars += snprintf(buf + num_chars, num - num_chars, + "{1to%d}", br_num); + } + + if ((deco & MASK) && (evex[2] & EVEX_P2AAA)) { + enum reg_enum opmasknum = nasm_rd_opmaskreg[evex[2] & EVEX_P2AAA]; + const char * regname = nasm_reg_names[opmasknum - EXPR_REG_START]; + + num_chars += snprintf(buf + num_chars, num - num_chars, + "{%s}", regname); + + if ((deco & Z) && (evex[2] & EVEX_P2Z)) { + num_chars += snprintf(buf + num_chars, num - num_chars, + "{z}"); + } + } + + + return num_chars; +} + +/* + * Process an effective address (ModRM) specification. + */ +static uint8_t *do_ea(uint8_t *data, int modrm, int asize, + int segsize, enum ea_type type, + operand *op, insn *ins) +{ + int mod, rm, scale, index, base; + int rex; + uint8_t *evex; + uint8_t sib = 0; + bool is_evex = !!(ins->rex & REX_EV); + + mod = (modrm >> 6) & 03; + rm = modrm & 07; + + if (mod != 3 && asize != 16 && rm == 4) + sib = *data++; + + rex = ins->rex; + evex = ins->evex_p; + + if (mod == 3) { /* pure register version */ + op->basereg = rm+(rex & REX_B ? 8 : 0); + op->segment |= SEG_RMREG; + if (is_evex && segsize == 64) { + op->basereg += (evex[0] & EVEX_P0X ? 0 : 16); + } + return data; + } + + op->disp_size = 0; + op->eaflags = 0; + + if (asize == 16) { + /* + * specifies the displacement size (none, byte or + * word), and specifies the register combination. + * Exception: mod=0,rm=6 does not specify [BP] as one might + * expect, but instead specifies [disp16]. + */ + + if (type != EA_SCALAR) + return NULL; + + op->indexreg = op->basereg = -1; + op->scale = 1; /* always, in 16 bits */ + switch (rm) { + case 0: + op->basereg = R_BX; + op->indexreg = R_SI; + break; + case 1: + op->basereg = R_BX; + op->indexreg = R_DI; + break; + case 2: + op->basereg = R_BP; + op->indexreg = R_SI; + break; + case 3: + op->basereg = R_BP; + op->indexreg = R_DI; + break; + case 4: + op->basereg = R_SI; + break; + case 5: + op->basereg = R_DI; + break; + case 6: + op->basereg = R_BP; + break; + case 7: + op->basereg = R_BX; + break; + } + if (rm == 6 && mod == 0) { /* special case */ + op->basereg = -1; + if (segsize != 16) + op->disp_size = 16; + mod = 2; /* fake disp16 */ + } + switch (mod) { + case 0: + op->segment |= SEG_NODISP; + break; + case 1: + op->segment |= SEG_DISP8; + if (ins->evex_tuple != 0) { + op->offset = gets8(data) * get_disp8N(ins); + } else { + op->offset = gets8(data); + } + data++; + break; + case 2: + op->segment |= SEG_DISP16; + op->offset = *data++; + op->offset |= ((unsigned)*data++) << 8; + break; + } + return data; + } else { + /* + * Once again, specifies displacement size (this time + * none, byte or *dword*), while specifies the base + * register. Again, [EBP] is missing, replaced by a pure + * disp32 (this time that's mod=0,rm=*5*) in 32-bit mode, + * and RIP-relative addressing in 64-bit mode. + * + * However, rm=4 + * indicates not a single base register, but instead the + * presence of a SIB byte... + */ + int a64 = asize == 64; + + op->indexreg = -1; + + if (a64) + op->basereg = nasm_rd_reg64[rm | ((rex & REX_B) ? 8 : 0)]; + else + op->basereg = nasm_rd_reg32[rm | ((rex & REX_B) ? 8 : 0)]; + + if (rm == 5 && mod == 0) { + if (segsize == 64) { + op->eaflags |= EAF_REL; + op->segment |= SEG_RELATIVE; + } + + if (asize != 64) + op->disp_size = asize; + + op->basereg = -1; + mod = 2; /* fake disp32 */ + } + + + if (rm == 4) { /* process SIB */ + uint8_t vsib_hi = 0; + scale = (sib >> 6) & 03; + index = (sib >> 3) & 07; + base = sib & 07; + + op->scale = 1 << scale; + + if (segsize == 64) { + vsib_hi = (rex & REX_X ? 8 : 0) | + (evex[2] & EVEX_P2VP ? 0 : 16); + } + + if (type == EA_XMMVSIB) + op->indexreg = nasm_rd_xmmreg[index | vsib_hi]; + else if (type == EA_YMMVSIB) + op->indexreg = nasm_rd_ymmreg[index | vsib_hi]; + else if (type == EA_ZMMVSIB) + op->indexreg = nasm_rd_zmmreg[index | vsib_hi]; + else if (index == 4 && !(rex & REX_X)) + op->indexreg = -1; /* ESP/RSP cannot be an index */ + else if (a64) + op->indexreg = nasm_rd_reg64[index | ((rex & REX_X) ? 8 : 0)]; + else + op->indexreg = nasm_rd_reg32[index | ((rex & REX_X) ? 8 : 0)]; + + if (base == 5 && mod == 0) { + op->basereg = -1; + mod = 2; /* Fake disp32 */ + } else if (a64) + op->basereg = nasm_rd_reg64[base | ((rex & REX_B) ? 8 : 0)]; + else + op->basereg = nasm_rd_reg32[base | ((rex & REX_B) ? 8 : 0)]; + + if (segsize == 16) + op->disp_size = 32; + } else if (type != EA_SCALAR) { + /* Can't have VSIB without SIB */ + return NULL; + } + + switch (mod) { + case 0: + op->segment |= SEG_NODISP; + break; + case 1: + op->segment |= SEG_DISP8; + if (ins->evex_tuple != 0) { + op->offset = gets8(data) * get_disp8N(ins); + } else { + op->offset = gets8(data); + } + data++; + break; + case 2: + op->segment |= SEG_DISP32; + op->offset = gets32(data); + data += 4; + break; + } + return data; + } +} + +/* + * Determine whether the instruction template in t corresponds to the data + * stream in data. Return the number of bytes matched if so. + */ +#define case4(x) case (x): case (x)+1: case (x)+2: case (x)+3 + +static int matches(const struct itemplate *t, uint8_t *data, + const struct prefix_info *prefix, int segsize, insn *ins) +{ + uint8_t *r = (uint8_t *)(t->code); + uint8_t *origdata = data; + bool a_used = false, o_used = false; + enum prefixes drep = 0; + enum prefixes dwait = 0; + uint8_t lock = prefix->lock; + int osize = prefix->osize; + int asize = prefix->asize; + int i, c; + int op1, op2; + struct operand *opx, *opy; + uint8_t opex = 0; + bool vex_ok = false; + int regmask = (segsize == 64) ? 15 : 7; + enum ea_type eat = EA_SCALAR; + + for (i = 0; i < MAX_OPERANDS; i++) { + ins->oprs[i].segment = ins->oprs[i].disp_size = + (segsize == 64 ? SEG_64BIT : segsize == 32 ? SEG_32BIT : 0); + } + ins->evex_tuple = 0; + ins->rex = prefix->rex; + memset(ins->prefixes, 0, sizeof ins->prefixes); + + if (itemp_has(t, (segsize == 64 ? IF_NOLONG : IF_LONG))) + return 0; + + if (prefix->rep == 0xF2) + drep = (itemp_has(t, IF_BND) ? P_BND : P_REPNE); + else if (prefix->rep == 0xF3) + drep = P_REP; + + dwait = prefix->wait ? P_WAIT : 0; + + while ((c = *r++) != 0) { + op1 = (c & 3) + ((opex & 1) << 2); + op2 = ((c >> 3) & 3) + ((opex & 2) << 1); + opx = &ins->oprs[op1]; + opy = &ins->oprs[op2]; + opex = 0; + + switch (c) { + case 01: + case 02: + case 03: + case 04: + while (c--) + if (*r++ != *data++) + return 0; + break; + + case 05: + case 06: + case 07: + opex = c; + break; + + case4(010): + { + int t = *r++, d = *data++; + if (d < t || d > t + 7) + return 0; + else { + opx->basereg = (d-t)+ + (ins->rex & REX_B ? 8 : 0); + opx->segment |= SEG_RMREG; + } + break; + } + + case4(014): + /* this is an separate index reg position of MIB operand (ICC) */ + /* Disassembler uses NASM's split EA form only */ + break; + + case4(0274): + opx->offset = (int8_t)*data++; + opx->segment |= SEG_SIGNED; + break; + + case4(020): + opx->offset = *data++; + break; + + case4(024): + opx->offset = *data++; + break; + + case4(030): + opx->offset = getu16(data); + data += 2; + break; + + case4(034): + if (osize == 32) { + opx->offset = getu32(data); + data += 4; + } else { + opx->offset = getu16(data); + data += 2; + } + if (segsize != asize) + opx->disp_size = asize; + break; + + case4(040): + opx->offset = getu32(data); + data += 4; + break; + + case4(0254): + opx->offset = gets32(data); + data += 4; + break; + + case4(044): + switch (asize) { + case 16: + opx->offset = getu16(data); + data += 2; + if (segsize != 16) + opx->disp_size = 16; + break; + case 32: + opx->offset = getu32(data); + data += 4; + if (segsize == 16) + opx->disp_size = 32; + break; + case 64: + opx->offset = getu64(data); + opx->disp_size = 64; + data += 8; + break; + } + break; + + case4(050): + opx->offset = gets8(data++); + opx->segment |= SEG_RELATIVE; + break; + + case4(054): + opx->offset = getu64(data); + data += 8; + break; + + case4(060): + opx->offset = gets16(data); + data += 2; + opx->segment |= SEG_RELATIVE; + opx->segment &= ~SEG_32BIT; + break; + + case4(064): /* rel */ + opx->segment |= SEG_RELATIVE; + /* In long mode rel is always 32 bits, sign extended. */ + if (segsize == 64 || osize == 32) { + opx->offset = gets32(data); + data += 4; + if (segsize != 64) + opx->segment |= SEG_32BIT; + opx->type = (opx->type & ~SIZE_MASK) + | (segsize == 64 ? BITS64 : BITS32); + } else { + opx->offset = gets16(data); + data += 2; + opx->segment &= ~SEG_32BIT; + opx->type = (opx->type & ~SIZE_MASK) | BITS16; + } + break; + + case4(070): + opx->offset = gets32(data); + data += 4; + opx->segment |= SEG_32BIT | SEG_RELATIVE; + break; + + case4(0100): + case4(0110): + case4(0120): + case4(0130): + { + int modrm = *data++; + opx->segment |= SEG_RMREG; + data = do_ea(data, modrm, asize, segsize, eat, opy, ins); + if (!data) + return 0; + opx->basereg = ((modrm >> 3) & 7) + (ins->rex & REX_R ? 8 : 0); + if ((ins->rex & REX_EV) && (segsize == 64)) + opx->basereg += (ins->evex_p[0] & EVEX_P0RP ? 0 : 16); + break; + } + + case 0171: + { + uint8_t t = *r++; + uint8_t d = *data++; + if ((d ^ t) & ~070) { + return 0; + } else { + op2 = (op2 & ~3) | ((t >> 3) & 3); + opy = &ins->oprs[op2]; + opy->basereg = ((d >> 3) & 7) + + (ins->rex & REX_R ? 8 : 0); + opy->segment |= SEG_RMREG; + } + break; + } + + case 0172: + { + uint8_t ximm = *data++; + c = *r++; + ins->oprs[c >> 3].basereg = (ximm >> 4) & regmask; + ins->oprs[c >> 3].segment |= SEG_RMREG; + ins->oprs[c & 7].offset = ximm & 15; + } + break; + + case 0173: + { + uint8_t ximm = *data++; + c = *r++; + + if ((c ^ ximm) & 15) + return 0; + + ins->oprs[c >> 4].basereg = (ximm >> 4) & regmask; + ins->oprs[c >> 4].segment |= SEG_RMREG; + } + break; + + case4(0174): + { + uint8_t ximm = *data++; + + opx->basereg = (ximm >> 4) & regmask; + opx->segment |= SEG_RMREG; + } + break; + + case4(0200): + case4(0204): + case4(0210): + case4(0214): + case4(0220): + case4(0224): + case4(0230): + case4(0234): + { + int modrm = *data++; + if (((modrm >> 3) & 07) != (c & 07)) + return 0; /* spare field doesn't match up */ + data = do_ea(data, modrm, asize, segsize, eat, opy, ins); + if (!data) + return 0; + break; + } + + case4(0240): + case 0250: + { + uint8_t evexm = *r++; + uint8_t evexwlp = *r++; + uint8_t modrm, valid_mask; + ins->evex_tuple = *r++ - 0300; + modrm = *(origdata + 1); + + ins->rex |= REX_EV; + if ((prefix->rex & (REX_EV|REX_V|REX_P)) != REX_EV) + return 0; + + if ((evexm & 0x1f) != prefix->vex_m) + return 0; + + switch (evexwlp & 060) { + case 000: + if (prefix->rex & REX_W) + return 0; + break; + case 020: + if (!(prefix->rex & REX_W)) + return 0; + ins->rex |= REX_W; + break; + case 040: /* VEX.W is a don't care */ + ins->rex &= ~REX_W; + break; + case 060: + break; + } + + /* If EVEX.b is set with reg-reg op, + * EVEX.L'L contains embedded rounding control info + */ + if ((prefix->evex[2] & EVEX_P2B) && ((modrm >> 6) == 3)) { + valid_mask = 0x3; /* prefix only */ + } else { + valid_mask = 0xf; /* vector length and prefix */ + } + if ((evexwlp ^ prefix->vex_lp) & valid_mask) + return 0; + + if (c == 0250) { + if ((prefix->vex_v != 0) || + (!(prefix->evex[2] & EVEX_P2VP) && + ((eat < EA_XMMVSIB) || (eat > EA_ZMMVSIB)))) + return 0; + } else { + opx->segment |= SEG_RMREG; + opx->basereg = ((~prefix->evex[2] & EVEX_P2VP) << (4 - 3) ) | + prefix->vex_v; + } + vex_ok = true; + memcpy(ins->evex_p, prefix->evex, 3); + break; + } + + case4(0260): + case 0270: + { + int vexm = *r++; + int vexwlp = *r++; + + ins->rex |= REX_V; + if ((prefix->rex & (REX_V|REX_P)) != REX_V) + return 0; + + if ((vexm & 0x1f) != prefix->vex_m) + return 0; + + switch (vexwlp & 060) { + case 000: + if (prefix->rex & REX_W) + return 0; + break; + case 020: + if (!(prefix->rex & REX_W)) + return 0; + ins->rex &= ~REX_W; + break; + case 040: /* VEX.W is a don't care */ + ins->rex &= ~REX_W; + break; + case 060: + break; + } + + /* The 010 bit of vexwlp is set if VEX.L is ignored */ + if ((vexwlp ^ prefix->vex_lp) & ((vexwlp & 010) ? 03 : 07)) + return 0; + + if (c == 0270) { + if (prefix->vex_v != 0) + return 0; + } else { + opx->segment |= SEG_RMREG; + opx->basereg = prefix->vex_v; + } + vex_ok = true; + break; + } + + case 0271: + if (prefix->rep == 0xF3) + drep = P_XRELEASE; + break; + + case 0272: + if (prefix->rep == 0xF2) + drep = P_XACQUIRE; + else if (prefix->rep == 0xF3) + drep = P_XRELEASE; + break; + + case 0273: + if (prefix->lock == 0xF0) { + if (prefix->rep == 0xF2) + drep = P_XACQUIRE; + else if (prefix->rep == 0xF3) + drep = P_XRELEASE; + } + break; + + case 0310: + if (asize != 16) + return 0; + else + a_used = true; + break; + + case 0311: + if (asize != 32) + return 0; + else + a_used = true; + break; + + case 0312: + if (asize != segsize) + return 0; + else + a_used = true; + break; + + case 0313: + if (asize != 64) + return 0; + else + a_used = true; + break; + + case 0314: + if (prefix->rex & REX_B) + return 0; + break; + + case 0315: + if (prefix->rex & REX_X) + return 0; + break; + + case 0316: + if (prefix->rex & REX_R) + return 0; + break; + + case 0317: + if (prefix->rex & REX_W) + return 0; + break; + + case 0320: + if (osize != 16) + return 0; + else + o_used = true; + break; + + case 0321: + if (osize != 32) + return 0; + else + o_used = true; + break; + + case 0322: + if (osize != (segsize == 16 ? 16 : 32)) + return 0; + else + o_used = true; + break; + + case 0323: + ins->rex |= REX_W; /* 64-bit only instruction */ + osize = 64; + o_used = true; + break; + + case 0324: + if (osize != 64) + return 0; + o_used = true; + break; + + case 0325: + ins->rex |= REX_NH; + break; + + case 0326: + if (prefix->rep == 0xF3) + return 0; + break; + + case 0331: + if (prefix->rep) + return 0; + break; + + case 0332: + if (prefix->rep != 0xF2) + return 0; + drep = 0; + break; + + case 0333: + if (prefix->rep != 0xF3) + return 0; + drep = 0; + break; + + case 0334: + if (lock) { + ins->rex |= REX_R; + lock = 0; + } + break; + + case 0335: + if (drep == P_REP) + drep = P_REPE; + break; + + case 0336: + case 0337: + break; + + case 0340: + return 0; + + case 0341: + if (prefix->wait != 0x9B) + return 0; + dwait = 0; + break; + + case 0360: + if (prefix->osp || prefix->rep) + return 0; + break; + + case 0361: + if (!prefix->osp || prefix->rep) + return 0; + o_used = true; + break; + + case 0364: + if (prefix->osp) + return 0; + break; + + case 0365: + if (prefix->asp) + return 0; + break; + + case 0366: + if (!prefix->osp) + return 0; + o_used = true; + break; + + case 0367: + if (!prefix->asp) + return 0; + a_used = true; + break; + + case 0370: + case 0371: + break; + + case 0374: + eat = EA_XMMVSIB; + break; + + case 0375: + eat = EA_YMMVSIB; + break; + + case 0376: + eat = EA_ZMMVSIB; + break; + + default: + return 0; /* Unknown code */ + } + } + + if (!vex_ok && (ins->rex & (REX_V | REX_EV))) + return 0; + + /* REX cannot be combined with VEX */ + if ((ins->rex & REX_V) && (prefix->rex & REX_P)) + return 0; + + /* + * Check for unused rep or a/o prefixes. + */ + for (i = 0; i < t->operands; i++) { + if (ins->oprs[i].segment != SEG_RMREG) + a_used = true; + } + + if (lock) { + if (ins->prefixes[PPS_LOCK]) + return 0; + ins->prefixes[PPS_LOCK] = P_LOCK; + } + if (drep) { + if (ins->prefixes[PPS_REP]) + return 0; + ins->prefixes[PPS_REP] = drep; + } + ins->prefixes[PPS_WAIT] = dwait; + if (!o_used) { + if (osize != ((segsize == 16) ? 16 : 32)) { + enum prefixes pfx = 0; + + switch (osize) { + case 16: + pfx = P_O16; + break; + case 32: + pfx = P_O32; + break; + case 64: + pfx = P_O64; + break; + } + + if (ins->prefixes[PPS_OSIZE]) + return 0; + ins->prefixes[PPS_OSIZE] = pfx; + } + } + if (!a_used && asize != segsize) { + if (ins->prefixes[PPS_ASIZE]) + return 0; + ins->prefixes[PPS_ASIZE] = asize == 16 ? P_A16 : P_A32; + } + + /* Fix: check for redundant REX prefixes */ + + return data - origdata; +} + +int32_t disasm(uint8_t *data, int32_t data_size, char *output, int outbufsize, int segsize, + int64_t offset, int autosync, iflag_t *prefer) +{ + const struct itemplate * const *p, * const *best_p; + const struct disasm_index *ix; + uint8_t *dp; + int length, best_length = 0; + char *segover; + int i, slen, colon, n; + uint8_t *origdata; + int works; + insn tmp_ins, ins; + iflag_t goodness, best; + int best_pref; + struct prefix_info prefix; + bool end_prefix; + bool is_evex; + + memset(&ins, 0, sizeof ins); + + /* + * Scan for prefixes. + */ + memset(&prefix, 0, sizeof prefix); + prefix.asize = segsize; + prefix.osize = (segsize == 64) ? 32 : segsize; + segover = NULL; + origdata = data; + + ix = itable; + + end_prefix = false; + while (!end_prefix) { + switch (*data) { + case 0xF2: + case 0xF3: + fetch_or_return(origdata, data, data_size, 1); + prefix.rep = *data++; + break; + + case 0x9B: + fetch_or_return(origdata, data, data_size, 1); + prefix.wait = *data++; + break; + + case 0xF0: + fetch_or_return(origdata, data, data_size, 1); + prefix.lock = *data++; + break; + + case 0x2E: + fetch_or_return(origdata, data, data_size, 1); + segover = "cs", prefix.seg = *data++; + break; + case 0x36: + fetch_or_return(origdata, data, data_size, 1); + segover = "ss", prefix.seg = *data++; + break; + case 0x3E: + fetch_or_return(origdata, data, data_size, 1); + segover = "ds", prefix.seg = *data++; + break; + case 0x26: + fetch_or_return(origdata, data, data_size, 1); + segover = "es", prefix.seg = *data++; + break; + case 0x64: + fetch_or_return(origdata, data, data_size, 1); + segover = "fs", prefix.seg = *data++; + break; + case 0x65: + fetch_or_return(origdata, data, data_size, 1); + segover = "gs", prefix.seg = *data++; + break; + + case 0x66: + fetch_or_return(origdata, data, data_size, 1); + prefix.osize = (segsize == 16) ? 32 : 16; + prefix.osp = *data++; + break; + case 0x67: + fetch_or_return(origdata, data, data_size, 1); + prefix.asize = (segsize == 32) ? 16 : 32; + prefix.asp = *data++; + break; + + case 0xC4: + case 0xC5: + if (segsize == 64 || (data[1] & 0xc0) == 0xc0) { + fetch_or_return(origdata, data, data_size, 2); + prefix.vex[0] = *data++; + prefix.vex[1] = *data++; + + prefix.rex = REX_V; + prefix.vex_c = RV_VEX; + + if (prefix.vex[0] == 0xc4) { + fetch_or_return(origdata, data, data_size, 1); + prefix.vex[2] = *data++; + prefix.rex |= (~prefix.vex[1] >> 5) & 7; /* REX_RXB */ + prefix.rex |= (prefix.vex[2] >> (7-3)) & REX_W; + prefix.vex_m = prefix.vex[1] & 0x1f; + prefix.vex_v = (~prefix.vex[2] >> 3) & 15; + prefix.vex_lp = prefix.vex[2] & 7; + } else { + prefix.rex |= (~prefix.vex[1] >> (7-2)) & REX_R; + prefix.vex_m = 1; + prefix.vex_v = (~prefix.vex[1] >> 3) & 15; + prefix.vex_lp = prefix.vex[1] & 7; + } + + ix = itable_vex[RV_VEX][prefix.vex_m][prefix.vex_lp & 3]; + } + end_prefix = true; + break; + + case 0x62: + { + if (segsize == 64 || ((data[1] & 0xc0) == 0xc0)) { + fetch_or_return(origdata, data, data_size, 4); + data++; /* 62h EVEX prefix */ + prefix.evex[0] = *data++; + prefix.evex[1] = *data++; + prefix.evex[2] = *data++; + + prefix.rex = REX_EV; + prefix.vex_c = RV_EVEX; + prefix.rex |= (~prefix.evex[0] >> 5) & 7; /* REX_RXB */ + prefix.rex |= (prefix.evex[1] >> (7-3)) & REX_W; + prefix.vex_m = prefix.evex[0] & EVEX_P0MM; + prefix.vex_v = (~prefix.evex[1] & EVEX_P1VVVV) >> 3; + prefix.vex_lp = ((prefix.evex[2] & EVEX_P2LL) >> (5-2)) | + (prefix.evex[1] & EVEX_P1PP); + + ix = itable_vex[prefix.vex_c][prefix.vex_m][prefix.vex_lp & 3]; + } + end_prefix = true; + break; + } + + case 0x8F: + if ((data[1] & 030) != 0 && + (segsize == 64 || (data[1] & 0xc0) == 0xc0)) { + fetch_or_return(origdata, data, data_size, 3); + prefix.vex[0] = *data++; + prefix.vex[1] = *data++; + prefix.vex[2] = *data++; + + prefix.rex = REX_V; + prefix.vex_c = RV_XOP; + + prefix.rex |= (~prefix.vex[1] >> 5) & 7; /* REX_RXB */ + prefix.rex |= (prefix.vex[2] >> (7-3)) & REX_W; + prefix.vex_m = prefix.vex[1] & 0x1f; + prefix.vex_v = (~prefix.vex[2] >> 3) & 15; + prefix.vex_lp = prefix.vex[2] & 7; + + ix = itable_vex[RV_XOP][prefix.vex_m][prefix.vex_lp & 3]; + } + end_prefix = true; + break; + + case REX_P + 0x0: + case REX_P + 0x1: + case REX_P + 0x2: + case REX_P + 0x3: + case REX_P + 0x4: + case REX_P + 0x5: + case REX_P + 0x6: + case REX_P + 0x7: + case REX_P + 0x8: + case REX_P + 0x9: + case REX_P + 0xA: + case REX_P + 0xB: + case REX_P + 0xC: + case REX_P + 0xD: + case REX_P + 0xE: + case REX_P + 0xF: + if (segsize == 64) { + fetch_or_return(origdata, data, data_size, 1); + prefix.rex = *data++; + if (prefix.rex & REX_W) + prefix.osize = 64; + } + end_prefix = true; + break; + + default: + end_prefix = true; + break; + } + } + + iflag_set_all(&best); /* Worst possible */ + best_p = NULL; + best_pref = INT_MAX; + + if (!ix) + return 0; /* No instruction table at all... */ + + dp = data; + fetch_or_return(origdata, dp, data_size, 1); + ix += *dp++; + while (ix->n == -1) { + fetch_or_return(origdata, dp, data_size, 1); + ix = (const struct disasm_index *)ix->p + *dp++; + } + + p = (const struct itemplate * const *)ix->p; + for (n = ix->n; n; n--, p++) { + if ((length = matches(*p, data, &prefix, segsize, &tmp_ins))) { + works = true; + /* + * Final check to make sure the types of r/m match up. + * XXX: Need to make sure this is actually correct. + */ + for (i = 0; i < (*p)->operands; i++) { + if ( + /* If it's a mem-only EA but we have a + register, die. */ + ((tmp_ins.oprs[i].segment & SEG_RMREG) && + is_class(MEMORY, (*p)->opd[i])) || + /* If it's a reg-only EA but we have a memory + ref, die. */ + (!(tmp_ins.oprs[i].segment & SEG_RMREG) && + !(REG_EA & ~(*p)->opd[i]) && + !((*p)->opd[i] & REG_SMASK)) || + /* Register type mismatch (eg FS vs REG_DESS): + die. */ + ((((*p)->opd[i] & (REGISTER | FPUREG)) || + (tmp_ins.oprs[i].segment & SEG_RMREG)) && + !whichreg((*p)->opd[i], + tmp_ins.oprs[i].basereg, tmp_ins.rex)) + ) { + works = false; + break; + } + } + + /* + * Note: we always prefer instructions which incorporate + * prefixes in the instructions themselves. This is to allow + * e.g. PAUSE to be preferred to REP NOP, and deal with + * MMX/SSE instructions where prefixes are used to select + * between MMX and SSE register sets or outright opcode + * selection. + */ + if (works) { + int i, nprefix; + goodness = iflag_pfmask(*p); + goodness = iflag_xor(&goodness, prefer); + nprefix = 0; + for (i = 0; i < MAXPREFIX; i++) + if (tmp_ins.prefixes[i]) + nprefix++; + if (nprefix < best_pref || + (nprefix == best_pref && + iflag_cmp(&goodness, &best) < 0)) { + /* This is the best one found so far */ + best = goodness; + best_p = p; + best_pref = nprefix; + best_length = length; + ins = tmp_ins; + } + } + } + } + + if (!best_p) + return 0; /* no instruction was matched */ + + /* Pick the best match */ + p = best_p; + length = best_length; + + slen = 0; + + /* TODO: snprintf returns the value that the string would have if + * the buffer were long enough, and not the actual length of + * the returned string, so each instance of using the return + * value of snprintf should actually be checked to assure that + * the return value is "sane." Maybe a macro wrapper could + * be used for that purpose. + */ + for (i = 0; i < MAXPREFIX; i++) { + const char *prefix = prefix_name(ins.prefixes[i]); + if (prefix) + slen += snprintf(output+slen, outbufsize-slen, "%s ", prefix); + } + + i = (*p)->opcode; + slen += snprintf(output + slen, outbufsize - slen, "%s", + nasm_insn_names[i]); + + colon = false; + is_evex = !!(ins.rex & REX_EV); + length += data - origdata; /* fix up for prefixes */ + for (i = 0; i < (*p)->operands; i++) { + opflags_t t = (*p)->opd[i]; + decoflags_t deco = (*p)->deco[i]; + const operand *o = &ins.oprs[i]; + int64_t offs; + + output[slen++] = (colon ? ':' : i == 0 ? ' ' : ','); + + offs = o->offset; + if (o->segment & SEG_RELATIVE) { + offs += offset + length; + /* + * sort out wraparound + */ + if (!(o->segment & (SEG_32BIT|SEG_64BIT))) + offs &= 0xffff; + else if (segsize != 64) + offs &= 0xffffffff; + + /* + * add sync marker, if autosync is on + */ + if (autosync) + add_sync(offs, 0L); + } + + if (t & COLON) + colon = true; + else + colon = false; + + if ((t & (REGISTER | FPUREG)) || + (o->segment & SEG_RMREG)) { + enum reg_enum reg; + reg = whichreg(t, o->basereg, ins.rex); + if (t & TO) + slen += snprintf(output + slen, outbufsize - slen, "to "); + slen += snprintf(output + slen, outbufsize - slen, "%s", + nasm_reg_names[reg-EXPR_REG_START]); + if (t & REGSET_MASK) + slen += snprintf(output + slen, outbufsize - slen, "+%d", + (int)((t & REGSET_MASK) >> (REGSET_SHIFT-1))-1); + if (is_evex && deco) + slen += append_evex_reg_deco(output + slen, outbufsize - slen, + deco, ins.evex_p); + } else if (!(UNITY & ~t)) { + output[slen++] = '1'; + } else if (t & IMMEDIATE) { + if (t & BITS8) { + slen += + snprintf(output + slen, outbufsize - slen, "byte "); + if (o->segment & SEG_SIGNED) { + if (offs < 0) { + offs *= -1; + output[slen++] = '-'; + } else + output[slen++] = '+'; + } + } else if (t & BITS16) { + slen += + snprintf(output + slen, outbufsize - slen, "word "); + } else if (t & BITS32) { + slen += + snprintf(output + slen, outbufsize - slen, "dword "); + } else if (t & BITS64) { + slen += + snprintf(output + slen, outbufsize - slen, "qword "); + } else if (t & NEAR) { + slen += + snprintf(output + slen, outbufsize - slen, "near "); + } else if (t & SHORT) { + slen += + snprintf(output + slen, outbufsize - slen, "short "); + } + slen += + snprintf(output + slen, outbufsize - slen, "0x%"PRIx64"", + offs); + } else if (!(MEM_OFFS & ~t)) { + slen += + snprintf(output + slen, outbufsize - slen, + "[%s%s%s0x%"PRIx64"]", + (segover ? segover : ""), + (segover ? ":" : ""), + (o->disp_size == 64 ? "qword " : + o->disp_size == 32 ? "dword " : + o->disp_size == 16 ? "word " : ""), offs); + segover = NULL; + } else if (is_class(REGMEM, t)) { + int started = false; + if (t & BITS8) + slen += + snprintf(output + slen, outbufsize - slen, "byte "); + if (t & BITS16) + slen += + snprintf(output + slen, outbufsize - slen, "word "); + if (t & BITS32) + slen += + snprintf(output + slen, outbufsize - slen, "dword "); + if (t & BITS64) + slen += + snprintf(output + slen, outbufsize - slen, "qword "); + if (t & BITS80) + slen += + snprintf(output + slen, outbufsize - slen, "tword "); + if ((ins.evex_p[2] & EVEX_P2B) && (deco & BRDCAST_MASK)) { + /* when broadcasting, each element size should be used */ + if (deco & BR_BITS16) + slen += + snprintf(output + slen, outbufsize - slen, "word "); + else if (deco & BR_BITS32) + slen += + snprintf(output + slen, outbufsize - slen, "dword "); + else if (deco & BR_BITS64) + slen += + snprintf(output + slen, outbufsize - slen, "qword "); + } else { + if (t & BITS128) + slen += + snprintf(output + slen, outbufsize - slen, "oword "); + if (t & BITS256) + slen += + snprintf(output + slen, outbufsize - slen, "yword "); + if (t & BITS512) + slen += + snprintf(output + slen, outbufsize - slen, "zword "); + } + if (t & FAR) + slen += snprintf(output + slen, outbufsize - slen, "far "); + if (t & NEAR) + slen += + snprintf(output + slen, outbufsize - slen, "near "); + output[slen++] = '['; + if (o->disp_size) + slen += snprintf(output + slen, outbufsize - slen, "%s", + (o->disp_size == 64 ? "qword " : + o->disp_size == 32 ? "dword " : + o->disp_size == 16 ? "word " : + "")); + if (o->eaflags & EAF_REL) + slen += snprintf(output + slen, outbufsize - slen, "rel "); + if (segover) { + slen += + snprintf(output + slen, outbufsize - slen, "%s:", + segover); + segover = NULL; + } + if (o->basereg != -1) { + slen += snprintf(output + slen, outbufsize - slen, "%s", + nasm_reg_names[(o->basereg-EXPR_REG_START)]); + started = true; + } + if (o->indexreg != -1 && !itemp_has(*best_p, IF_MIB)) { + if (started) + output[slen++] = '+'; + slen += snprintf(output + slen, outbufsize - slen, "%s", + nasm_reg_names[(o->indexreg-EXPR_REG_START)]); + if (o->scale > 1) + slen += + snprintf(output + slen, outbufsize - slen, "*%d", + o->scale); + started = true; + } + + + if (o->segment & SEG_DISP8) { + if (is_evex) { + const char *prefix; + uint32_t offset = offs; + if ((int32_t)offset < 0) { + prefix = "-"; + offset = -offset; + } else { + prefix = "+"; + } + slen += + snprintf(output + slen, outbufsize - slen, "%s0x%"PRIx32"", + prefix, offset); + } else { + const char *prefix; + uint8_t offset = offs; + if ((int8_t)offset < 0) { + prefix = "-"; + offset = -offset; + } else { + prefix = "+"; + } + slen += + snprintf(output + slen, outbufsize - slen, "%s0x%"PRIx8"", + prefix, offset); + } + } else if (o->segment & SEG_DISP16) { + const char *prefix; + uint16_t offset = offs; + if ((int16_t)offset < 0 && started) { + offset = -offset; + prefix = "-"; + } else { + prefix = started ? "+" : ""; + } + slen += + snprintf(output + slen, outbufsize - slen, + "%s0x%"PRIx16"", prefix, offset); + } else if (o->segment & SEG_DISP32) { + if (prefix.asize == 64) { + const char *prefix; + uint64_t offset = offs; + if ((int32_t)offs < 0 && started) { + offset = -offset; + prefix = "-"; + } else { + prefix = started ? "+" : ""; + } + slen += + snprintf(output + slen, outbufsize - slen, + "%s0x%"PRIx64"", prefix, offset); + } else { + const char *prefix; + uint32_t offset = offs; + if ((int32_t) offset < 0 && started) { + offset = -offset; + prefix = "-"; + } else { + prefix = started ? "+" : ""; + } + slen += + snprintf(output + slen, outbufsize - slen, + "%s0x%"PRIx32"", prefix, offset); + } + } + + if (o->indexreg != -1 && itemp_has(*best_p, IF_MIB)) { + output[slen++] = ','; + slen += snprintf(output + slen, outbufsize - slen, "%s", + nasm_reg_names[(o->indexreg-EXPR_REG_START)]); + if (o->scale > 1) + slen += + snprintf(output + slen, outbufsize - slen, "*%d", + o->scale); + started = true; + } + + output[slen++] = ']'; + + if (is_evex && deco) + slen += append_evex_mem_deco(output + slen, outbufsize - slen, + t, deco, ins.evex_p); + } else { + slen += + snprintf(output + slen, outbufsize - slen, "", + i); + } + } + output[slen] = '\0'; + if (segover) { /* unused segment override */ + char *p = output; + int count = slen + 1; + while (count--) + p[count + 3] = p[count]; + strncpy(output, segover, 2); + output[2] = ' '; + } + return length; +} + +/* + * This is called when we don't have a complete instruction. If it + * is a standalone *single-byte* prefix show it as such, otherwise + * print it as a literal. + */ +int32_t eatbyte(uint8_t *data, char *output, int outbufsize, int segsize) +{ + uint8_t byte = *data; + const char *str = NULL; + + switch (byte) { + case 0xF2: + str = "repne"; + break; + case 0xF3: + str = "rep"; + break; + case 0x9B: + str = "wait"; + break; + case 0xF0: + str = "lock"; + break; + case 0x2E: + str = "cs"; + break; + case 0x36: + str = "ss"; + break; + case 0x3E: + str = "ds"; + break; + case 0x26: + str = "es"; + break; + case 0x64: + str = "fs"; + break; + case 0x65: + str = "gs"; + break; + case 0x66: + str = (segsize == 16) ? "o32" : "o16"; + break; + case 0x67: + str = (segsize == 32) ? "a16" : "a32"; + break; + case REX_P + 0x0: + case REX_P + 0x1: + case REX_P + 0x2: + case REX_P + 0x3: + case REX_P + 0x4: + case REX_P + 0x5: + case REX_P + 0x6: + case REX_P + 0x7: + case REX_P + 0x8: + case REX_P + 0x9: + case REX_P + 0xA: + case REX_P + 0xB: + case REX_P + 0xC: + case REX_P + 0xD: + case REX_P + 0xE: + case REX_P + 0xF: + if (segsize == 64) { + snprintf(output, outbufsize, "rex%s%s%s%s%s", + (byte == REX_P) ? "" : ".", + (byte & REX_W) ? "w" : "", + (byte & REX_R) ? "r" : "", + (byte & REX_X) ? "x" : "", + (byte & REX_B) ? "b" : ""); + break; + } + /* else fall through */ + default: + snprintf(output, outbufsize, "db 0x%02x", byte); + break; + } + + if (str) + snprintf(output, outbufsize, "%s", str); + + return 1; +} diff --git a/vere/ext/nasm/disasm/disasm.h b/vere/ext/nasm/disasm/disasm.h new file mode 100644 index 0000000..053474d --- /dev/null +++ b/vere/ext/nasm/disasm/disasm.h @@ -0,0 +1,49 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2009 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * disasm.h header file for disasm.c + */ + +#ifndef NASM_DISASM_H +#define NASM_DISASM_H + +#include "iflag.h" + +#define INSN_MAX 32 /* one instruction can't be longer than this */ + +int32_t disasm(uint8_t *data, int32_t data_size, char *output, int outbufsize, int segsize, + int64_t offset, int autosync, iflag_t *prefer); +int32_t eatbyte(uint8_t *data, char *output, int outbufsize, int segsize); + +#endif diff --git a/vere/ext/nasm/disasm/ndisasm.c b/vere/ext/nasm/disasm/ndisasm.c new file mode 100644 index 0000000..4d34b21 --- /dev/null +++ b/vere/ext/nasm/disasm/ndisasm.c @@ -0,0 +1,400 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2009 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * ndisasm.c the Netwide Disassembler main module + */ + +#include "compiler.h" + +#include "nctype.h" +#include + +#include "insns.h" +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "ver.h" +#include "sync.h" +#include "disasm.h" + +#define BPL 8 /* bytes per line of hex dump */ + +static const char *help = + "usage: ndisasm [-a] [-i] [-h] [-r] [-u] [-b bits] [-o origin] [-s sync...]\n" + " [-e bytes] [-k start,bytes] [-p vendor] file\n" + " -a or -i activates auto (intelligent) sync\n" + " -u same as -b 32\n" + " -b 16, -b 32 or -b 64 sets the processor mode\n" + " -h displays this text\n" + " -r or -v displays the version number\n" + " -e skips bytes of header\n" + " -k avoids disassembling bytes from position \n" + " -p selects the preferred vendor instruction set (intel, amd, cyrix, idt)\n"; + +static void output_ins(uint64_t, uint8_t *, int, char *); +static void skip(uint32_t dist, FILE * fp); + +void nasm_verror(errflags severity, const char *fmt, va_list val) +{ + severity &= ERR_MASK; + + vfprintf(stderr, fmt, val); + if (severity >= ERR_FATAL) + exit(severity - ERR_FATAL + 1); +} + +fatal_func nasm_verror_critical(errflags severity, const char *fmt, va_list val) +{ + nasm_verror(severity, fmt, val); + abort(); +} + +int main(int argc, char **argv) +{ + char buffer[INSN_MAX * 2], *p, *ep, *q; + char outbuf[256]; + char *pname = *argv; + char *filename = NULL; + uint32_t nextsync, synclen, initskip = 0L; + int lenread; + int32_t lendis; + bool autosync = false; + int bits = 16, b; + bool eof = false; + iflag_t prefer; + bool rn_error; + int64_t offset; + FILE *fp; + + nasm_ctype_init(); + iflag_clear_all(&prefer); + + offset = 0; + init_sync(); + + while (--argc) { + char *v, *vv, *p = *++argv; + if (*p == '-' && p[1]) { + p++; + while (*p) + switch (nasm_tolower(*p)) { + case 'a': /* auto or intelligent sync */ + case 'i': + autosync = true; + p++; + break; + case 'h': + fputs(help, stderr); + return 0; + case 'r': + case 'v': + fprintf(stderr, + "NDISASM version %s compiled on %s\n", + nasm_version, nasm_date); + return 0; + case 'u': /* -u for -b 32, -uu for -b 64 */ + if (bits < 64) + bits <<= 1; + p++; + break; + case 'b': /* bits */ + v = p[1] ? p + 1 : --argc ? *++argv : NULL; + if (!v) { + fprintf(stderr, "%s: `-b' requires an argument\n", + pname); + return 1; + } + b = strtoul(v, &ep, 10); + if (*ep || !(bits == 16 || bits == 32 || bits == 64)) { + fprintf(stderr, "%s: argument to `-b' should" + " be 16, 32 or 64\n", pname); + } else { + bits = b; + } + p = ""; /* force to next argument */ + break; + case 'o': /* origin */ + v = p[1] ? p + 1 : --argc ? *++argv : NULL; + if (!v) { + fprintf(stderr, "%s: `-o' requires an argument\n", + pname); + return 1; + } + offset = readnum(v, &rn_error); + if (rn_error) { + fprintf(stderr, + "%s: `-o' requires a numeric argument\n", + pname); + return 1; + } + p = ""; /* force to next argument */ + break; + case 's': /* sync point */ + v = p[1] ? p + 1 : --argc ? *++argv : NULL; + if (!v) { + fprintf(stderr, "%s: `-s' requires an argument\n", + pname); + return 1; + } + add_sync(readnum(v, &rn_error), 0L); + if (rn_error) { + fprintf(stderr, + "%s: `-s' requires a numeric argument\n", + pname); + return 1; + } + p = ""; /* force to next argument */ + break; + case 'e': /* skip a header */ + v = p[1] ? p + 1 : --argc ? *++argv : NULL; + if (!v) { + fprintf(stderr, "%s: `-e' requires an argument\n", + pname); + return 1; + } + initskip = readnum(v, &rn_error); + if (rn_error) { + fprintf(stderr, + "%s: `-e' requires a numeric argument\n", + pname); + return 1; + } + p = ""; /* force to next argument */ + break; + case 'k': /* skip a region */ + v = p[1] ? p + 1 : --argc ? *++argv : NULL; + if (!v) { + fprintf(stderr, "%s: `-k' requires an argument\n", + pname); + return 1; + } + vv = strchr(v, ','); + if (!vv) { + fprintf(stderr, + "%s: `-k' requires two numbers separated" + " by a comma\n", pname); + return 1; + } + *vv++ = '\0'; + nextsync = readnum(v, &rn_error); + if (rn_error) { + fprintf(stderr, + "%s: `-k' requires numeric arguments\n", + pname); + return 1; + } + synclen = readnum(vv, &rn_error); + if (rn_error) { + fprintf(stderr, + "%s: `-k' requires numeric arguments\n", + pname); + return 1; + } + add_sync(nextsync, synclen); + p = ""; /* force to next argument */ + break; + case 'p': /* preferred vendor */ + v = p[1] ? p + 1 : --argc ? *++argv : NULL; + if (!v) { + fprintf(stderr, "%s: `-p' requires an argument\n", + pname); + return 1; + } + if (!strcmp(v, "intel")) { + iflag_clear_all(&prefer); /* default */ + } else if (!strcmp(v, "amd")) { + iflag_clear_all(&prefer); + iflag_set(&prefer, IF_AMD); + iflag_set(&prefer, IF_3DNOW); + } else if (!strcmp(v, "cyrix")) { + iflag_clear_all(&prefer); + iflag_set(&prefer, IF_CYRIX); + iflag_set(&prefer, IF_3DNOW); + } else if (!strcmp(v, "idt") || + !strcmp(v, "centaur") || + !strcmp(v, "winchip")) { + iflag_clear_all(&prefer); + iflag_set(&prefer, IF_3DNOW); + } else { + fprintf(stderr, + "%s: unknown vendor `%s' specified with `-p'\n", + pname, v); + return 1; + } + p = ""; /* force to next argument */ + break; + default: /*bf */ + fprintf(stderr, "%s: unrecognised option `-%c'\n", + pname, *p); + return 1; + } + } else if (!filename) { + filename = p; + } else { + fprintf(stderr, "%s: more than one filename specified\n", + pname); + return 1; + } + } + + if (!filename) { + fprintf(stderr, help, pname); + return 0; + } + + if (strcmp(filename, "-")) { + fp = fopen(filename, "rb"); + if (!fp) { + fprintf(stderr, "%s: unable to open `%s': %s\n", + pname, filename, strerror(errno)); + return 1; + } + } else { + nasm_set_binary_mode(stdin); + fp = stdin; + } + + if (initskip > 0) + skip(initskip, fp); + + /* + * This main loop is really horrible, and wants rewriting with + * an axe. It'll stay the way it is for a while though, until I + * find the energy... + */ + + p = q = buffer; + nextsync = next_sync(offset, &synclen); + do { + int32_t to_read = buffer + sizeof(buffer) - p; + if ((nextsync || synclen) && + to_read > nextsync - offset - (p - q)) + to_read = nextsync - offset - (p - q); + if (to_read) { + lenread = fread(p, 1, to_read, fp); + if (lenread == 0) + eof = true; /* help along systems with bad feof */ + } else + lenread = 0; + p += lenread; + if ((nextsync || synclen) && + (uint32_t)offset == nextsync) { + if (synclen) { + fprintf(stdout, "%08"PRIX64" skipping 0x%"PRIX32" bytes\n", + offset, synclen); + offset += synclen; + skip(synclen, fp); + } + p = q = buffer; + nextsync = next_sync(offset, &synclen); + } + while (p > q && (p - q >= INSN_MAX || lenread == 0)) { + lendis = disasm((uint8_t *)q, INSN_MAX, outbuf, sizeof(outbuf), + bits, offset, autosync, &prefer); + if (!lendis || lendis > (p - q) + || ((nextsync || synclen) && + (uint32_t)lendis > nextsync - offset)) + lendis = eatbyte((uint8_t *) q, outbuf, sizeof(outbuf), bits); + output_ins(offset, (uint8_t *) q, lendis, outbuf); + q += lendis; + offset += lendis; + } + if (q >= buffer + INSN_MAX) { + uint8_t *r = (uint8_t *) buffer, *s = (uint8_t *) q; + int count = p - q; + while (count--) + *r++ = *s++; + p -= (q - buffer); + q = buffer; + } + } while (lenread > 0 || !(eof || feof(fp))); + + if (fp != stdin) + fclose(fp); + + return 0; +} + +static void output_ins(uint64_t offset, uint8_t *data, + int datalen, char *insn) +{ + int bytes; + fprintf(stdout, "%08"PRIX64" ", offset); + + bytes = 0; + while (datalen > 0 && bytes < BPL) { + fprintf(stdout, "%02X", *data++); + bytes++; + datalen--; + } + + fprintf(stdout, "%*s%s\n", (BPL + 1 - bytes) * 2, "", insn); + + while (datalen > 0) { + fprintf(stdout, " -"); + bytes = 0; + while (datalen > 0 && bytes < BPL) { + fprintf(stdout, "%02X", *data++); + bytes++; + datalen--; + } + fprintf(stdout, "\n"); + } +} + +/* + * Skip a certain amount of data in a file, either by seeking if + * possible, or if that fails then by reading and discarding. + */ +static void skip(uint32_t dist, FILE * fp) +{ + char buffer[256]; /* should fit on most stacks :-) */ + + /* + * Got to be careful with fseek: at least one fseek I've tried + * doesn't approve of SEEK_CUR. So I'll use SEEK_SET and + * ftell... horrible but apparently necessary. + */ + if (fseek(fp, dist + ftell(fp), SEEK_SET)) { + while (dist > 0) { + uint32_t len = (dist < sizeof(buffer) ? + dist : sizeof(buffer)); + if (fread(buffer, 1, len, fp) < len) { + perror("fread"); + exit(1); + } + dist -= len; + } + } +} diff --git a/vere/ext/nasm/disasm/sync.c b/vere/ext/nasm/disasm/sync.c new file mode 100644 index 0000000..b9b866e --- /dev/null +++ b/vere/ext/nasm/disasm/sync.c @@ -0,0 +1,129 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2009 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * sync.c the Netwide Disassembler synchronisation processing module + */ + +#include "compiler.h" + + +#include "nasmlib.h" +#include "sync.h" + +#define SYNC_MAX_SHIFT 31 +#define SYNC_MAX_SIZE (1U << SYNC_MAX_SHIFT) + +/* initial # of sync points (*must* be power of two)*/ +#define SYNC_INITIAL_CHUNK (1U << 12) + +/* + * This lot manages the current set of sync points by means of a + * heap (priority queue) structure. + */ + +static struct Sync { + uint64_t pos; + uint32_t length; +} *synx; + +static uint32_t max_synx, nsynx; + +static inline void swap_sync(uint32_t dst, uint32_t src) +{ + struct Sync t = synx[dst]; + synx[dst] = synx[src]; + synx[src] = t; +} + +void init_sync(void) +{ + max_synx = SYNC_INITIAL_CHUNK; + synx = nasm_malloc((max_synx + 1) * sizeof(*synx)); + nsynx = 0; +} + +void add_sync(uint64_t pos, uint32_t length) +{ + uint32_t i; + + if (nsynx >= max_synx) { + if (max_synx >= SYNC_MAX_SIZE) /* too many sync points! */ + return; + max_synx = (max_synx << 1); + synx = nasm_realloc(synx, (max_synx + 1) * sizeof(*synx)); + } + + nsynx++; + synx[nsynx].pos = pos; + synx[nsynx].length = length; + + for (i = nsynx; i > 1; i /= 2) { + if (synx[i / 2].pos > synx[i].pos) + swap_sync(i / 2, i); + } +} + +uint64_t next_sync(uint64_t position, uint32_t *length) +{ + while (nsynx > 0 && synx[1].pos + synx[1].length <= position) { + uint32_t i, j; + + swap_sync(nsynx, 1); + nsynx--; + + i = 1; + while (i * 2 <= nsynx) { + j = i * 2; + if (synx[j].pos < synx[i].pos && + (j + 1 > nsynx || synx[j + 1].pos > synx[j].pos)) { + swap_sync(j, i); + i = j; + } else if (j + 1 <= nsynx && synx[j + 1].pos < synx[i].pos) { + swap_sync(j + 1, i); + i = j + 1; + } else + break; + } + } + + if (nsynx > 0) { + if (length) + *length = synx[1].length; + return synx[1].pos; + } else { + if (length) + *length = 0L; + return 0; + } +} diff --git a/vere/ext/nasm/disasm/sync.h b/vere/ext/nasm/disasm/sync.h new file mode 100644 index 0000000..15c5afd --- /dev/null +++ b/vere/ext/nasm/disasm/sync.h @@ -0,0 +1,45 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2009 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * sync.h header file for sync.c + */ + +#ifndef NASM_SYNC_H +#define NASM_SYNC_H + +void init_sync(void); +void add_sync(uint64_t position, uint32_t length); +uint64_t next_sync(uint64_t position, uint32_t *length); + +#endif diff --git a/vere/ext/nasm/headers/c b/vere/ext/nasm/headers/c new file mode 100644 index 0000000..311e15b --- /dev/null +++ b/vere/ext/nasm/headers/c @@ -0,0 +1,33 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2010 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + diff --git a/vere/ext/nasm/headers/doc b/vere/ext/nasm/headers/doc new file mode 100644 index 0000000..0a6c381 --- /dev/null +++ b/vere/ext/nasm/headers/doc @@ -0,0 +1,33 @@ +\# -------------------------------------------------------------------------- +\# +\# Copyright 1996-2010 The NASM Authors - All Rights Reserved +\# See the file AUTHORS included with the NASM distribution for +\# the specific copyright holders. +\# +\# 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. +\# +\# -------------------------------------------------------------------------- + diff --git a/vere/ext/nasm/headers/mac b/vere/ext/nasm/headers/mac new file mode 100644 index 0000000..514315b --- /dev/null +++ b/vere/ext/nasm/headers/mac @@ -0,0 +1,33 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2010 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + diff --git a/vere/ext/nasm/headers/perl b/vere/ext/nasm/headers/perl new file mode 100644 index 0000000..3ce5ad7 --- /dev/null +++ b/vere/ext/nasm/headers/perl @@ -0,0 +1,33 @@ +## -------------------------------------------------------------------------- +## +## Copyright 1996-2010 The NASM Authors - All Rights Reserved +## See the file AUTHORS included with the NASM distribution for +## the specific copyright holders. +## +## 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. +## +## -------------------------------------------------------------------------- + diff --git a/vere/ext/nasm/include/bytesex.h b/vere/ext/nasm/include/bytesex.h new file mode 100644 index 0000000..186d561 --- /dev/null +++ b/vere/ext/nasm/include/bytesex.h @@ -0,0 +1,261 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * bytesex.h - byte order helper functions + * + * In this function, be careful about getting X86_MEMORY versus + * LITTLE_ENDIAN correct: X86_MEMORY also means we are allowed to + * do unaligned memory references, and is probabilistic. + */ + +#ifndef NASM_BYTEORD_H +#define NASM_BYTEORD_H + +#include "compiler.h" + +/* + * Some handy macros that will probably be of use in more than one + * output format: convert integers into little-endian byte packed + * format in memory. + */ + +#define WRITECHAR(p,v) \ + do { \ + uint8_t *_wc_p = (uint8_t *)(p); \ + *_wc_p++ = (v); \ + (p) = (void *)_wc_p; \ + } while (0) + +#if X86_MEMORY + +#define WRITESHORT(p,v) \ + do { \ + uint16_t *_ws_p = (uint16_t *)(p); \ + *_ws_p++ = (v); \ + (p) = (void *)_ws_p; \ + } while (0) + +#define WRITELONG(p,v) \ + do { \ + uint32_t *_wl_p = (uint32_t *)(p); \ + *_wl_p++ = (v); \ + (p) = (void *)_wl_p; \ + } while (0) + +#define WRITEDLONG(p,v) \ + do { \ + uint64_t *_wq_p = (uint64_t *)(p); \ + *_wq_p++ = (v); \ + (p) = (void *)_wq_p; \ + } while (0) + +#else /* !X86_MEMORY */ + +#define WRITESHORT(p,v) \ + do { \ + uint8_t *_ws_p = (uint8_t *)(p); \ + const uint16_t _ws_v = (v); \ + WRITECHAR(_ws_p, _ws_v); \ + WRITECHAR(_ws_p, _ws_v >> 8); \ + (p) = (void *)_ws_p; \ + } while (0) + +#define WRITELONG(p,v) \ + do { \ + uint8_t *_wl_p = (uint8_t *)(p); \ + const uint32_t _wl_v = (v); \ + WRITESHORT(_wl_p, _wl_v); \ + WRITESHORT(_wl_p, _wl_v >> 16); \ + (p) = (void *)_wl_p; \ + } while (0) + +#define WRITEDLONG(p,v) \ + do { \ + uint8_t *_wq_p = (uint8_t *)(p); \ + const uint64_t _wq_v = (v); \ + WRITELONG(_wq_p, _wq_v); \ + WRITELONG(_wq_p, _wq_v >> 32); \ + (p) = (void *)_wq_p; \ + } while (0) + +#endif /* X86_MEMORY */ + +/* + * Endian control functions which work on a single integer + */ +#ifdef WORDS_LITTLEENDIAN + +#ifndef HAVE_CPU_TO_LE16 +# define cpu_to_le16(v) ((uint16_t)(v)) +#endif +#ifndef HAVE_CPU_TO_LE32 +# define cpu_to_le32(v) ((uint32_t)(v)) +#endif +#ifndef HAVE_CPU_TO_LE64 +# define cpu_to_le64(v) ((uint64_t)(v)) +#endif + +#elif defined(WORDS_BIGENDIAN) + +#ifndef HAVE_CPU_TO_LE16 +static inline uint16_t cpu_to_le16(uint16_t v) +{ +# ifdef HAVE___CPU_TO_LE16 + return __cpu_to_le16(v); +# elif defined(HAVE_HTOLE16) + return htole16(v); +# elif defined(HAVE___BSWAP_16) + return __bswap_16(v); +# elif defined(HAVE___BUILTIN_BSWAP16) + return __builtin_bswap16(v); +# elif defined(HAVE__BYTESWAP_USHORT) && (USHRT_MAX == 0xffffU) + return _byteswap_ushort(v); +# else + return (v << 8) | (v >> 8); +# endif +} +#endif + +#ifndef HAVE_CPU_TO_LE32 +static inline uint32_t cpu_to_le32(uint32_t v) +{ +# ifdef HAVE___CPU_TO_LE32 + return __cpu_to_le32(v); +# elif defined(HAVE_HTOLE32) + return htole32(v); +# elif defined(HAVE___BSWAP_32) + return __bswap_32(v); +# elif defined(HAVE___BUILTIN_BSWAP32) + return __builtin_bswap32(v); +# elif defined(HAVE__BYTESWAP_ULONG) && (ULONG_MAX == 0xffffffffUL) + return _byteswap_ulong(v); +# else + v = ((v << 8) & 0xff00ff00 ) | + ((v >> 8) & 0x00ff00ff); + return (v << 16) | (v >> 16); +# endif +} +#endif + +#ifndef HAVE_CPU_TO_LE64 +static inline uint64_t cpu_to_le64(uint64_t v) +{ +# ifdef HAVE___CPU_TO_LE64 + return __cpu_to_le64(v); +# elif defined(HAVE_HTOLE64) + return htole64(v); +# elif defined(HAVE___BSWAP_64) + return __bswap_64(v); +# elif defined(HAVE___BUILTIN_BSWAP64) + return __builtin_bswap64(v); +# elif defined(HAVE__BYTESWAP_UINT64) + return _byteswap_uint64(v); +# else + v = ((v << 8) & 0xff00ff00ff00ff00ull) | + ((v >> 8) & 0x00ff00ff00ff00ffull); + v = ((v << 16) & 0xffff0000ffff0000ull) | + ((v >> 16) & 0x0000ffff0000ffffull); + return (v << 32) | (v >> 32); +# endif +} +#endif + +#else /* not WORDS_LITTLEENDIAN or WORDS_BIGENDIAN */ + +static inline uint16_t cpu_to_le16(uint16_t v) +{ + union u16 { + uint16_t v; + uint8_t c[2]; + } x; + uint8_t *cp = &x.c; + + WRITESHORT(cp, v); + return x.v; +} + +static inline uint32_t cpu_to_le32(uint32_t v) +{ + union u32 { + uint32_t v; + uint8_t c[4]; + } x; + uint8_t *cp = &x.c; + + WRITELONG(cp, v); + return x.v; +} + +static inline uint64_t cpu_to_le64(uint64_t v) +{ + union u64 { + uint64_t v; + uint8_t c[8]; + } x; + uint8_t *cp = &x.c; + + WRITEDLONG(cp, v); + return x.v; +} + +#endif + +#define WRITEADDR(p,v,s) \ + do { \ + switch (is_constant(s) ? (s) : 0) { \ + case 1: \ + WRITECHAR(p,v); \ + break; \ + case 2: \ + WRITESHORT(p,v); \ + break; \ + case 4: \ + WRITELONG(p,v); \ + break; \ + case 8: \ + WRITEDLONG(p,v); \ + break; \ + default: \ + { \ + const uint64_t _wa_v = cpu_to_le64(v); \ + const size_t _wa_s = (s); \ + uint8_t * const _wa_p = (uint8_t *)(p); \ + memcpy(_wa_p, &_wa_v, _wa_s); \ + (p) = (void *)(_wa_p + _wa_s); \ + } \ + break; \ + } \ + } while (0) + +#endif /* NASM_BYTESEX_H */ diff --git a/vere/ext/nasm/include/compiler.h b/vere/ext/nasm/include/compiler.h new file mode 100644 index 0000000..407c160 --- /dev/null +++ b/vere/ext/nasm/include/compiler.h @@ -0,0 +1,415 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2007-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * compiler.h + * + * Compiler-specific macros for NASM. Feel free to add support for + * other compilers in here. + * + * This header file should be included before any other header. + */ + +#ifndef NASM_COMPILER_H +#define NASM_COMPILER_H 1 + +/* + * At least DJGPP and Cygwin have broken header files if __STRICT_ANSI__ + * is defined. + */ +#ifdef __GNUC__ +# undef __STRICT_ANSI__ +#endif + +/* On Microsoft platforms we support multibyte character sets in filenames */ +#define _MBCS 1 + +#ifdef HAVE_CONFIG_H +# include "config/config.h" +#else +# if defined(_MSC_VER) && (_MSC_VER >= 1310) +# include "config/msvc.h" +# elif defined(__WATCOMC__) +# include "config/watcom.h" +# else +# include "config/unknown.h" +# endif +/* This unconditionally defines some macros we really want */ +# include "config/unconfig.h" +#endif /* Configuration file */ + +/* This is required to get the standard macros when compiling + with a C++ compiler. This must be defined *before* is + included, directly or indirectly. */ +#define __STDC_CONSTANT_MACROS 1 +#define __STDC_LIMIT_MACROS 1 +#define __STDC_FORMAT_MACROS 1 + +#ifdef HAVE_INTTYPES_H +# include +#else +# include "nasmint.h" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif + +#ifdef HAVE_ENDIAN_H +# include +#elif defined(HAVE_SYS_ENDIAN_H) +# include +#elif defined(HAVE_MACHINE_ENDIAN_H) +# include +#endif + +/* + * If we have BYTE_ORDER defined, or the compiler provides + * __BIG_ENDIAN__ or __LITTLE_ENDIAN__, trust it over what autoconf + * came up with, especially since autoconf obviously can't figure + * things out for a universal compiler. + */ +#if defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__) +# undef WORDS_LITTLEENDIAN +# undef WORDS_BIGENDIAN +# define WORDS_BIGENDIAN 1 +#elif defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__) +# undef WORDS_LITTLEENDIAN +# undef WORDS_BIGENDIAN +# define WORDS_LITTLEENDIAN 1 +#elif defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN) +# undef WORDS_LITTLEENDIAN +# undef WORDS_BIGENDIAN +# if BYTE_ORDER == LITTLE_ENDIAN +# define WORDS_LITTLEENDIAN 1 +# elif BYTE_ORDER == BIG_ENDIAN +# define WORDS_BIGENDIAN 1 +# endif +#endif + +/* + * Define this to 1 for faster performance if this is a littleendian + * platform *and* it can do arbitrary unaligned memory references. It + * is safe to leave it defined to 0 even if that is true. + */ +#if defined(__386__) || defined(__i386__) || defined(__x86_64__) \ + || defined(_M_IX86) || defined(_M_X64) +# define X86_MEMORY 1 +# undef WORDS_BIGENDIAN +# undef WORDS_LITTLEENDIAN +# define WORDS_LITTLEENDIAN 1 +#else +# define X86_MEMORY 0 +#endif + +/* Some versions of MSVC have these only with underscores in front */ +#ifndef HAVE_SNPRINTF +# ifdef HAVE__SNPRINTF +# define snprintf _snprintf +# else +int snprintf(char *, size_t, const char *, ...); +# endif +#endif + +#ifndef HAVE_VSNPRINTF +# ifdef HAVE__VSNPRINTF +# define vsnprintf _vsnprintf +# else +int vsnprintf(char *, size_t, const char *, va_list); +# endif +#endif + +#if !defined(HAVE_STRLCPY) || !HAVE_DECL_STRLCPY +size_t strlcpy(char *, const char *, size_t); +#endif + +#if !defined(HAVE_STRCHRNUL) || !HAVE_DECL_STRCHRNUL +char *strrchrnul(const char *, int); +#endif + +#ifndef __cplusplus /* C++ has false, true, bool as keywords */ +# ifdef HAVE_STDBOOL_H +# include +# elif defined(HAVE__BOOL) + typedef _Bool bool; +# define false 0 +# define true 1 +# else +/* This is sort of dangerous, since casts will behave different than + casting to the standard boolean type. Always use !!, not (bool). */ +typedef enum bool { false, true } bool; +# endif +#endif + +/* Create a NULL pointer of the same type as the address of + the argument, without actually evaluating said argument. */ +#define nullas(p) (0 ? &(p) : NULL) + +/* Convert an offsetted NULL pointer dereference to a size_t offset. + Technically non-portable as taking the offset from a NULL pointer + is undefined behavior, but... */ +#define null_offset(p) ((size_t)((const char *)&(p) - (const char *)NULL)) + +/* Provide a substitute for offsetof() if we don't have one. This + variant works on most (but not *all*) systems... */ +#ifndef offsetof +# define offsetof(t,m) null_offset(((t *)NULL)->m) +#endif + +/* If typeof is defined as a macro, assume we have typeof even if + HAVE_TYPEOF is not declared (e.g. due to not using autoconf.) */ +#ifdef typeof +# define HAVE_TYPEOF 1 +#endif + +/* This is like offsetof(), but takes an object rather than a type. */ +#ifndef offsetin +# ifdef HAVE_TYPEOF +# define offsetin(p,m) offsetof(typeof(p),m) +# else +# define offsetin(p,m) null_offset(nullas(p)->m) +# endif +#endif + +/* The container_of construct: if p is a pointer to member m of + container class c, then return a pointer to the container of which + *p is a member. */ +#ifndef container_of +# define container_of(p, c, m) ((c *)((char *)(p) - offsetof(c,m))) +#endif + +/* Some misguided platforms hide the defs for these */ +#if defined(HAVE_STRCASECMP) && !HAVE_DECL_STRCASECMP +int strcasecmp(const char *, const char *); +#endif + +#if defined(HAVE_STRICMP) && !HAVE_DECL_STRICMP +int stricmp(const char *, const char *); +#endif + +#if defined(HAVE_STRNCASECMP) && !HAVE_DECL_STRNCASECMP +int strncasecmp(const char *, const char *, size_t); +#endif + +#if defined(HAVE_STRNICMP) && !HAVE_DECL_STRNICMP +int strnicmp(const char *, const char *, size_t); +#endif + +#if defined(HAVE_STRSEP) && !HAVE_DECL_STRSEP +char *strsep(char **, const char *); +#endif + +#if !HAVE_DECL_STRNLEN +size_t strnlen(const char *s, size_t maxlen); +#endif + +#ifndef HAVE_MEMPCPY +static inline void *mempcpy(void *dst, const void *src, size_t n) +{ + return (char *)memcpy(dst, src, n) + n; +} +#endif + +#ifndef HAVE_MEMPSET +static inline void *mempset(void *dst, int c, size_t n) +{ + return (char *)memset(dst, c, n) + n; +} +#endif + +/* + * Hack to support external-linkage inline functions + */ +#ifndef HAVE_STDC_INLINE +# ifdef __GNUC__ +# ifdef __GNUC_STDC_INLINE__ +# define HAVE_STDC_INLINE +# else +# define HAVE_GNU_INLINE +# endif +# elif defined(__GNUC_GNU_INLINE__) +/* Some other compiler implementing only GNU inline semantics? */ +# define HAVE_GNU_INLINE +# elif defined(__STDC_VERSION__) +# if __STDC_VERSION__ >= 199901L +# define HAVE_STDC_INLINE +# endif +# endif +#endif + +#ifdef HAVE_STDC_INLINE +# define extern_inline inline +#elif defined(HAVE_GNU_INLINE) +# define extern_inline extern inline +# define inline_prototypes +#else +# define inline_prototypes +#endif + +/* + * Hints to the compiler that a particular branch of code is more or + * less likely to be taken. + */ +#if HAVE___BUILTIN_EXPECT +# define likely(x) __builtin_expect(!!(x), 1) +# define unlikely(x) __builtin_expect(!!(x), 0) +#else +# define likely(x) (!!(x)) +# define unlikely(x) (!!(x)) +#endif + +#define safe_alloc never_null malloc_func +#define safe_alloc_ptr never_null_ptr malloc_func_ptr + +#define safe_malloc(s) safe_alloc alloc_size_func1(s) +#define safe_malloc2(s1,s2) safe_alloc alloc_size_func2(s1,s2) +#define safe_realloc(s) never_null alloc_size_func1(s) +#define safe_malloc_ptr(s) safe_alloc_ptr alloc_size_func1_ptr(s) +#define safe_malloc2_ptr(s1,s2) safe_alloc_ptr alloc_size_func2_ptr(s1,s2) +#define safe_realloc_ptr(s) never_null_ptr alloc_size_func1_ptr(s) + +/* + * How to tell the compiler that a function doesn't return + */ +#ifdef HAVE_STDNORETURN_H +# include +# define no_return noreturn void +#elif defined(_MSC_VER) +# define no_return __declspec(noreturn) void +#else +# define no_return void noreturn_func +#endif + +/* + * A fatal function is both unlikely and no_return + */ +#define fatal_func no_return unlikely_func +#define fatal_func_ptr no_return unlikely_func_ptr + +/* + * How to tell the compiler that a function takes a printf-like string + */ +#define printf_func(fmt, list) format_func3(printf,fmt,list) +#define printf_func_ptr(fmt, list) format_func3_ptr(printf,fmt,list) +#define vprintf_func(fmt) format_func3(printf,fmt,0) +#define vprintf_func_ptr(fmt) format_func3_ptr(printf,fmt,0) + +/* Determine probabilistically if something is a compile-time constant */ +#ifdef HAVE___BUILTIN_CONSTANT_P +# if defined(__GNUC__) && (__GNUC__ >= 5) +# define is_constant(x) __builtin_constant_p((x)) +# else +# define is_constant(x) false +# endif +#else +# define is_constant(x) false +#endif + +/* + * If we can guarantee that a particular expression is constant, use it, + * otherwise use a different version. + */ +#if defined(__GNUC__) && (__GNUC__ >= 3) +# define not_pedantic_start \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wpedantic\"") +# define not_pedantic_end \ + _Pragma("GCC diagnostic pop") +#else +# define not_pedantic_start +# define not_pedantic_end +#endif + +#ifdef HAVE___BUILTIN_CHOOSE_EXPR +# define if_constant(x,y) __builtin_choose_expr(is_constant(x),(x),(y)) +#else +# define if_constant(x,y) (y) +#endif + +/* + * The autoconf documentation states: + * + * `va_copy' + * The C99 standard provides `va_copy' for copying `va_list' + * variables. It may be available in older environments too, though + * possibly as `__va_copy' (e.g., `gcc' in strict pre-C99 mode). + * These can be tested with `#ifdef'. A fallback to `memcpy (&dst, + * &src, sizeof (va_list))' gives maximum portability. + */ +#ifndef va_copy +# ifdef __va_copy +# define va_copy(dst,src) __va_copy(dst,src) +# else +# define va_copy(dst,src) memcpy(&(dst),&(src),sizeof(va_list)) +# endif +#endif + +/* + * If SIZE_MAX is not defined, rely on size_t being unsigned + */ +#ifndef SIZE_MAX +# define SIZE_MAX (((size_t)0) - 1) +#endif + +/* Watcom doesn't handle switch statements with 64-bit types, hack around it */ +#ifdef __WATCOMC__ +# define BOGUS_CASE 0x76543210 + +static inline unsigned int watcom_switch_hack(uint64_t x) +{ + if (x > (uint64_t)UINT_MAX) + return BOGUS_CASE; + else + return (unsigned int)x; +} + +# define switch(x) switch(sizeof(x) > sizeof(unsigned int) \ + ? watcom_switch_hack(x) : (unsigned int)(x)) + +/* This is to make sure BOGUS_CASE doesn't conflict with anything real... */ +# define default case BOGUS_CASE: default +#endif + +#endif /* NASM_COMPILER_H */ diff --git a/vere/ext/nasm/include/dbginfo.h b/vere/ext/nasm/include/dbginfo.h new file mode 100644 index 0000000..8584eda --- /dev/null +++ b/vere/ext/nasm/include/dbginfo.h @@ -0,0 +1,115 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * dbginfo.h - debugging info structures + */ + +#ifndef NASM_DBGINFO_H +#define NASM_DBGINFO_H + +#include "compiler.h" +#include "srcfile.h" +#include "rbtree.h" + +struct debug_macro_def; /* Definition */ +struct debug_macro_inv; /* Invocation */ +struct debug_macro_addr; /* Address range */ + +/* + * Definitions structure, one for each non-.nolist macro invoked + * anywhere in the program; unique for each macro, even if a macro is + * redefined and/or overloaded. + */ +struct debug_macro_def { + struct debug_macro_def *next; /* List of definitions */ + const char *name; /* Macro name */ + struct src_location where; /* Start of definition */ + size_t ninv; /* Call count */ +}; + +/* + * Invocation structure. One for each invocation of a non-.nolist macro. + */ +struct debug_macro_inv_list { + struct debug_macro_inv *l; + size_t n; +}; + +struct debug_macro_inv { + struct debug_macro_inv *next; /* List of same-level invocations */ + struct debug_macro_inv_list down; + struct debug_macro_inv *up; /* Parent invocation */ + struct debug_macro_def *def; /* Macro definition */ + struct src_location where; /* Start of invocation */ + struct { /* Address range pointers */ + struct rbtree *tree; /* rbtree of address ranges */ + struct debug_macro_addr *last; /* Quick lookup for latest section */ + } addr; + uint32_t naddr; /* Number of address ranges */ + int32_t lastseg; /* lastaddr segment number */ +}; + +/* + * Address range structure. An rbtree containing one address range for each + * section which this particular macro has generated code/data/space into. + */ +struct debug_macro_addr { + struct rbtree tree; /* rbtree; key = index, must be first */ + struct debug_macro_addr *up; /* same section in parent invocation */ + uint64_t start; /* starting offset */ + uint64_t len; /* length of range */ +}; + +/* + * Complete information structure */ +struct debug_macro_info { + struct debug_macro_inv_list inv; + struct debug_macro_def_list { + struct debug_macro_def *l; + size_t n; + } def; +}; + +static inline int32_t debug_macro_seg(const struct debug_macro_addr *dma) +{ + return dma->tree.key; +} + +/* Get/create a addr structure for the macro we are emitting for */ +struct debug_macro_addr *debug_macro_get_addr(int32_t seg); + +/* The macro we are currently emitting for, if any */ +extern struct debug_macro_inv *debug_current_macro; + +#endif /* NASM_DBGINFO_H */ diff --git a/vere/ext/nasm/include/disp8.h b/vere/ext/nasm/include/disp8.h new file mode 100644 index 0000000..fc18e4f --- /dev/null +++ b/vere/ext/nasm/include/disp8.h @@ -0,0 +1,45 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2013 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * disp8.h header file for disp8.c + */ + +#ifndef NASM_DISP8_H +#define NASM_DISP8_H + +#include "nasm.h" + +uint8_t get_disp8N(insn *ins); +bool is_disp8n(operand *input, insn *ins, int8_t *compdisp); +#endif /* NASM_DISP8_H */ diff --git a/vere/ext/nasm/include/error.h b/vere/ext/nasm/include/error.h new file mode 100644 index 0000000..e6338c9 --- /dev/null +++ b/vere/ext/nasm/include/error.h @@ -0,0 +1,162 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * Error reporting functions for the assembler + */ + +#ifndef NASM_ERROR_H +#define NASM_ERROR_H 1 + +#include "compiler.h" + +/* + * File pointer for error messages + */ +extern FILE *error_file; /* Error file descriptor */ + +/* + * Typedef for the severity field + */ +typedef uint32_t errflags; + +/* + * An error reporting function should look like this. + */ +void printf_func(2, 3) nasm_error(errflags severity, const char *fmt, ...); +void printf_func(1, 2) nasm_listmsg(const char *fmt, ...); +void printf_func(2, 3) nasm_listmsgf(errflags flags, const char *fmt, ...); +void printf_func(1, 2) nasm_debug(const char *fmt, ...); +void printf_func(2, 3) nasm_debugf(errflags flags, const char *fmt, ...); +void printf_func(1, 2) nasm_info(const char *fmt, ...); +void printf_func(2, 3) nasm_infof(errflags flags, const char *fmt, ...); +void printf_func(2, 3) nasm_warn(errflags flags, const char *fmt, ...); +void printf_func(1, 2) nasm_nonfatal(const char *fmt, ...); +void printf_func(2, 3) nasm_nonfatalf(errflags flags, const char *fmt, ...); +fatal_func printf_func(1, 2) nasm_fatal(const char *fmt, ...); +fatal_func printf_func(2, 3) nasm_fatalf(errflags flags, const char *fmt, ...); +fatal_func printf_func(1, 2) nasm_critical(const char *fmt, ...); +fatal_func printf_func(2, 3) nasm_criticalf(errflags flags, const char *fmt, ...); +fatal_func printf_func(1, 2) nasm_panic(const char *fmt, ...); +fatal_func printf_func(2, 3) nasm_panicf(errflags flags, const char *fmt, ...); +fatal_func nasm_panic_from_macro(const char *file, int line); +#define panic() nasm_panic_from_macro(__FILE__, __LINE__); + +void vprintf_func(2) nasm_verror(errflags severity, const char *fmt, va_list ap); +fatal_func vprintf_func(2) nasm_verror_critical(errflags severity, const char *fmt, va_list ap); + +/* + * These are the error severity codes which get passed as the first + * argument to an efunc. + */ +#define ERR_LISTMSG 0x00000000 /* for the listing file only */ +#define ERR_DEBUG 0x00000001 /* debugging message */ +#define ERR_INFO 0x00000002 /* information for the list file */ +#define ERR_WARNING 0x00000003 /* warn only: no further action */ +#define ERR_NONFATAL 0x00000004 /* terminate assembly after phase */ +#define ERR_FATAL 0x00000005 /* instantly fatal: exit with error */ +#define ERR_CRITICAL 0x00000006 /* fatal, but minimize code before exit */ +#define ERR_PANIC 0x00000007 /* internal error: panic instantly + * and dump core for reference */ +#define ERR_MASK 0x00000007 /* mask off the above codes */ +#define ERR_UNDEAD 0x00000008 /* skip if we already have errors */ +#define ERR_NOFILE 0x00000010 /* don't give source file name/line */ +#define ERR_HERE 0x00000020 /* point to a specific source location */ +#define ERR_USAGE 0x00000040 /* print a usage message */ +#define ERR_PASS2 0x00000100 /* ignore unless on pass_final */ + +#define ERR_NO_SEVERITY 0x00000200 /* suppress printing severity */ +#define ERR_PP_PRECOND 0x00000400 /* for preprocessor use */ +#define ERR_PP_LISTMACRO 0x00000800 /* from pp_error_list_macros() */ +#define ERR_HOLD 0x00001000 /* this error/warning can be held */ + +/* + * These codes define specific types of suppressible warning. + * They are assumed to occupy the most significant bits of the + * severity code. + */ +#define WARN_SHR 16 /* how far to shift right */ +#define WARN_IDX(x) (((errflags)(x)) >> WARN_SHR) +#define WARN_MASK ((~(errflags)0) << WARN_SHR) + +/* This is a bitmask */ +#define WARN_ST_ENABLED 1 /* Warning is currently enabled */ +#define WARN_ST_ERROR 2 /* Treat this warning as an error */ + +/* Possible initial state for warnings */ +#define WARN_INIT_OFF 0 +#define WARN_INIT_ON WARN_ST_ENABLED +#define WARN_INIT_ERR (WARN_ST_ENABLED|WARN_ST_ERROR) + +/* Process a warning option or directive */ +bool set_warning_status(const char *value); + +/* Warning stack management */ +void push_warnings(void); +void pop_warnings(void); +void init_warnings(void); +void reset_warnings(void); + +/* + * Tentative error hold for warnings/errors indicated with ERR_HOLD. + * + * This is a stack; the "hold" argument *must* + * match the value returned from nasm_error_hold_push(). + * If "issue" is true the errors are committed (or promoted to the next + * higher stack level), if false then they are discarded. + * + * Errors stronger than ERR_NONFATAL cannot be held. + */ +struct nasm_errhold; +typedef struct nasm_errhold *errhold; +errhold nasm_error_hold_push(void); +void nasm_error_hold_pop(errhold hold, bool issue); + +/* Should be included from within error.h only */ +#include "warnings.h" + +/* By defining MAX_DEBUG, we can compile out messages entirely */ +#ifndef MAX_DEBUG +# define MAX_DEBUG (~0U) +#endif + +/* Debug level checks */ +static inline bool debug_level(unsigned int level) +{ + extern unsigned int debug_nasm; + if (is_constant(level) && level > MAX_DEBUG) + return false; + return unlikely(level <= debug_nasm); +} + +#endif /* NASM_ERROR_H */ diff --git a/vere/ext/nasm/include/hashtbl.h b/vere/ext/nasm/include/hashtbl.h new file mode 100644 index 0000000..9ea94dc --- /dev/null +++ b/vere/ext/nasm/include/hashtbl.h @@ -0,0 +1,108 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * hashtbl.h + * + * Efficient dictionary hash table class. + */ + +#ifndef NASM_HASHTBL_H +#define NASM_HASHTBL_H + +#include "nasmlib.h" + +struct hash_node { + uint64_t hash; + const void *key; + size_t keylen; + void *data; +}; + +struct hash_table { + struct hash_node *table; + size_t load; + size_t size; + size_t max_load; +}; + +struct hash_insert { + struct hash_table *head; + struct hash_node *where; + struct hash_node node; +}; + +struct hash_iterator { + const struct hash_table *head; + const struct hash_node *next; +}; + +uint64_t crc64(uint64_t crc, const char *string); +uint64_t crc64i(uint64_t crc, const char *string); +uint64_t crc64b(uint64_t crc, const void *data, size_t len); +uint64_t crc64ib(uint64_t crc, const void *data, size_t len); +#define CRC64_INIT UINT64_C(0xffffffffffffffff) + +static inline uint64_t crc64_byte(uint64_t crc, uint8_t v) +{ + extern const uint64_t crc64_tab[256]; + return crc64_tab[(uint8_t)(v ^ crc)] ^ (crc >> 8); +} + +uint32_t crc32b(uint32_t crc, const void *data, size_t len); + +void **hash_find(struct hash_table *head, const char *string, + struct hash_insert *insert); +void **hash_findb(struct hash_table *head, const void *key, size_t keylen, + struct hash_insert *insert); +void **hash_findi(struct hash_table *head, const char *string, + struct hash_insert *insert); +void **hash_findib(struct hash_table *head, const void *key, size_t keylen, + struct hash_insert *insert); +void **hash_add(struct hash_insert *insert, const void *key, void *data); +static inline void hash_iterator_init(const struct hash_table *head, + struct hash_iterator *iterator) +{ + iterator->head = head; + iterator->next = head->table; +} +const struct hash_node *hash_iterate(struct hash_iterator *iterator); + +#define hash_for_each(_head,_it,_np) \ + for (hash_iterator_init((_head), &(_it)), (_np) = hash_iterate(&(_it)) ; \ + (_np) ; (_np) = hash_iterate(&(_it))) + +void hash_free(struct hash_table *head); +void hash_free_all(struct hash_table *head, bool free_keys); + +#endif /* NASM_HASHTBL_H */ diff --git a/vere/ext/nasm/include/iflag.h b/vere/ext/nasm/include/iflag.h new file mode 100644 index 0000000..31a0a98 --- /dev/null +++ b/vere/ext/nasm/include/iflag.h @@ -0,0 +1,134 @@ +#ifndef NASM_IFLAG_H +#define NASM_IFLAG_H + +#include "compiler.h" +#include "ilog2.h" + + +#include "iflaggen.h" + +#define IF_GENBIT(bit) (UINT32_C(1) << ((bit) & 31)) + +static inline int ifcomp(uint32_t a, uint32_t b) +{ + return (a > b) - (a < b); +} + +static inline bool iflag_test(const iflag_t *f, unsigned int bit) +{ + return !!(f->field[bit >> 5] & IF_GENBIT(bit)); +} + +static inline void iflag_set(iflag_t *f, unsigned int bit) +{ + f->field[bit >> 5] |= IF_GENBIT(bit); +} + +static inline void iflag_clear(iflag_t *f, unsigned int bit) +{ + f->field[bit >> 5] &= ~IF_GENBIT(bit); +} + +static inline void iflag_clear_all(iflag_t *f) +{ + memset(f, 0, sizeof(*f)); +} + +static inline void iflag_set_all(iflag_t *f) +{ + memset(f, ~0, sizeof(*f)); +} + +#define iflag_for_each_field(v) for ((v) = 0; (v) < IF_FIELD_COUNT; (v)++) + +static inline int iflag_cmp(const iflag_t *a, const iflag_t *b) +{ + int i; + + /* This is intentionally a reverse loop! */ + for (i = IF_FIELD_COUNT-1; i >= 0; i--) { + if (a->field[i] == b->field[i]) + continue; + + return ifcomp(a->field[i], b->field[i]); + } + + return 0; +} + +#define IF_GEN_HELPER(name, op) \ + static inline iflag_t iflag_##name(const iflag_t *a, const iflag_t *b) \ + { \ + unsigned int i; \ + iflag_t res; \ + \ + iflag_for_each_field(i) \ + res.field[i] = a->field[i] op b->field[i]; \ + \ + return res; \ + } + +IF_GEN_HELPER(xor, ^) + +/* Some helpers which are to work with predefined masks */ +#define IF_SMASK (IFM_SB|IFM_SW|IFM_SD|IFM_SQ|IFM_SO|IFM_SY|IFM_SZ|IFM_SIZE|IFM_ANYSIZE) +#define IF_ARMASK (IFM_AR0|IFM_AR1|IFM_AR2|IFM_AR3|IFM_AR4) + +#define _itemp_smask(idx) (insns_flags[(idx)].field[0] & IF_SMASK) +#define _itemp_armask(idx) (insns_flags[(idx)].field[0] & IF_ARMASK) +#define _itemp_arg(idx) ((_itemp_armask(idx) >> IF_AR0) - 1) + +#define itemp_smask(itemp) _itemp_smask((itemp)->iflag_idx) +#define itemp_arg(itemp) _itemp_arg((itemp)->iflag_idx) +#define itemp_armask(itemp) _itemp_armask((itemp)->iflag_idx) + +/* + * IF_ANY is the highest CPU level by definition + */ +#define IF_CPU_LEVEL_MASK ((IFM_ANY << 1) - 1) + +static inline int iflag_cmp_cpu(const iflag_t *a, const iflag_t *b) +{ + return ifcomp(a->field[IF_CPU_FIELD], b->field[IF_CPU_FIELD]); +} + +static inline uint32_t _iflag_cpu_level(const iflag_t *a) +{ + return a->field[IF_CPU_FIELD] & IF_CPU_LEVEL_MASK; +} + +static inline int iflag_cmp_cpu_level(const iflag_t *a, const iflag_t *b) +{ + return ifcomp(_iflag_cpu_level(a), _iflag_cpu_level(b)); +} + +/* Returns true if the CPU level is at least a certain value */ +static inline bool iflag_cpu_level_ok(const iflag_t *a, unsigned int bit) +{ + return _iflag_cpu_level(a) >= IF_GENBIT(bit); +} + +static inline void iflag_set_all_features(iflag_t *a) +{ + uint32_t *p = &a->field[IF_FEATURE_FIELD]; + + memset(p, -1, IF_FEATURE_NFIELDS * sizeof(uint32_t)); +} + +static inline iflag_t _iflag_pfmask(const iflag_t *a) +{ + iflag_t r; + + iflag_clear_all(&r); + + if (iflag_test(a, IF_CYRIX)) + iflag_set(&r, IF_CYRIX); + if (iflag_test(a, IF_AMD)) + iflag_set(&r, IF_AMD); + + return r; +} + +#define iflag_pfmask(itemp) _iflag_pfmask(&insns_flags[(itemp)->iflag_idx]) + +#endif /* NASM_IFLAG_H */ diff --git a/vere/ext/nasm/include/ilog2.h b/vere/ext/nasm/include/ilog2.h new file mode 100644 index 0000000..bba4595 --- /dev/null +++ b/vere/ext/nasm/include/ilog2.h @@ -0,0 +1,201 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef ILOG2_H +#define ILOG2_H + +#include "compiler.h" + +#ifdef ILOG2_C /* For generating the out-of-line functions */ +# undef extern_inline +# define extern_inline +# define inline_prototypes +#endif + +#ifdef inline_prototypes +extern unsigned int const_func ilog2_32(uint32_t v); +extern unsigned int const_func ilog2_64(uint64_t v); +extern unsigned int const_func ilog2_64(uint64_t vv); +extern int const_func alignlog2_32(uint32_t v); +extern int const_func alignlog2_64(uint64_t v); +#endif + +#ifdef extern_inline + +#define ROUND(v, a, w) \ + do { \ + if (v & (((UINT32_C(1) << w) - 1) << w)) { \ + a += w; \ + v >>= w; \ + } \ + } while (0) + + +#if defined(HAVE___BUILTIN_CLZ) && INT_MAX == 2147483647 + +extern_inline unsigned int const_func ilog2_32(uint32_t v) +{ + if (!v) + return 0; + + return __builtin_clz(v) ^ 31; +} + +#elif defined(__GNUC__) && defined(__x86_64__) + +extern_inline unsigned int const_func ilog2_32(uint32_t v) +{ + unsigned int n; + + __asm__("bsrl %1,%0" + : "=r" (n) + : "rm" (v), "0" (0)); + return n; +} + +#elif defined(__GNUC__) && defined(__i386__) + +extern_inline unsigned int const_func ilog2_32(uint32_t v) +{ + unsigned int n; + +#ifdef __i686__ + __asm__("bsrl %1,%0 ; cmovz %2,%0\n" + : "=&r" (n) + : "rm" (v), "r" (0)); +#else + __asm__("bsrl %1,%0 ; jnz 1f ; xorl %0,%0\n" + "1:" + : "=&r" (n) + : "rm" (v)); +#endif + return n; +} + +#elif defined(HAVE__BITSCANREVERSE) + +extern_inline unsigned int const_func ilog2_32(uint32_t v) +{ + unsigned long ix; + return _BitScanReverse(&ix, v) ? v : 0; +} + +#else + +extern_inline unsigned int const_func ilog2_32(uint32_t v) +{ + unsigned int p = 0; + + ROUND(v, p, 16); + ROUND(v, p, 8); + ROUND(v, p, 4); + ROUND(v, p, 2); + ROUND(v, p, 1); + + return p; +} + +#endif + +#if defined(HAVE__BUILTIN_CLZLL) && LLONG_MAX == 9223372036854775807LL + +extern_inline unsigned int const_func ilog2_64(uint64_t v) +{ + if (!v) + return 0; + + return __builtin_clzll(v) ^ 63; +} + +#elif defined(__GNUC__) && defined(__x86_64__) + +extern_inline unsigned int const_func ilog2_64(uint64_t v) +{ + uint64_t n; + + __asm__("bsrq %1,%0" + : "=r" (n) + : "rm" (v), "0" (UINT64_C(0))); + return n; +} + +#elif defined(HAVE__BITSCANREVERSE64) + +extern_inline unsigned int const_func ilog2_64(uint64_t v) +{ + unsigned long ix; + return _BitScanReverse64(&ix, v) ? ix : 0; +} + +#else + +extern_inline unsigned int const_func ilog2_64(uint64_t vv) +{ + unsigned int p = 0; + uint32_t v; + + v = vv >> 32; + if (v) + p += 32; + else + v = vv; + + return p + ilog2_32(v); +} + +#endif + +/* + * v == 0 ? 0 : is_power2(x) ? ilog2_X(v) : -1 + */ +extern_inline int const_func alignlog2_32(uint32_t v) +{ + if (unlikely(v & (v-1))) + return -1; /* invalid alignment */ + + return ilog2_32(v); +} + +extern_inline int const_func alignlog2_64(uint64_t v) +{ + if (unlikely(v & (v-1))) + return -1; /* invalid alignment */ + + return ilog2_64(v); +} + +#undef ROUND + +#endif /* extern_inline */ + +#endif /* ILOG2_H */ diff --git a/vere/ext/nasm/include/insns.h b/vere/ext/nasm/include/insns.h new file mode 100644 index 0000000..00de288 --- /dev/null +++ b/vere/ext/nasm/include/insns.h @@ -0,0 +1,132 @@ +/* insns.h header file for insns.c + * + * The Netwide Assembler is copyright (C) 1996 Simon Tatham and + * Julian Hall. All rights reserved. The software is + * redistributable under the license given in the file "LICENSE" + * distributed in the NASM archive. + */ + +#ifndef NASM_INSNS_H +#define NASM_INSNS_H + +#include "nasm.h" +#include "tokens.h" +#include "iflag.h" + +/* if changed, ITEMPLATE_END should be also changed accordingly */ +struct itemplate { + enum opcode opcode; /* the token, passed from "parser.c" */ + int operands; /* number of operands */ + opflags_t opd[MAX_OPERANDS]; /* bit flags for operand types */ + decoflags_t deco[MAX_OPERANDS]; /* bit flags for operand decorators */ + const uint8_t *code; /* the code it assembles to */ + uint32_t iflag_idx; /* some flags referenced by index */ +}; + +/* Use this helper to test instruction template flags */ +static inline bool itemp_has(const struct itemplate *itemp, unsigned int bit) +{ + return iflag_test(&insns_flags[itemp->iflag_idx], bit); +} + +/* Disassembler table structure */ + +/* + * If n == -1, then p points to another table of 256 + * struct disasm_index, otherwise p points to a list of n + * struct itemplates to consider. + */ +struct disasm_index { + const void *p; + int n; +}; + +/* Tables for the assembler and disassembler, respectively */ +extern const struct itemplate * const nasm_instructions[]; +extern const struct disasm_index itable[256]; +extern const struct disasm_index * const itable_vex[NASM_VEX_CLASSES][32][4]; + +/* Common table for the byte codes */ +extern const uint8_t nasm_bytecodes[]; + +/* + * this define is used to signify the end of an itemplate + */ +#define ITEMPLATE_END {I_none,0,{0,},{0,},NULL,0} + +/* + * Pseudo-op tests + */ +/* DB-type instruction (DB, DW, ...) */ +static inline bool const_func opcode_is_db(enum opcode opcode) +{ + return opcode >= I_DB && opcode < I_RESB; +} + +/* RESB-type instruction (RESB, RESW, ...) */ +static inline bool const_func opcode_is_resb(enum opcode opcode) +{ + return opcode >= I_RESB && opcode < I_INCBIN; +} + +/* Width of Dx and RESx instructions */ + +/* + * initialized data bytes length from opcode + */ +static inline int const_func db_bytes(enum opcode opcode) +{ + switch (opcode) { + case I_DB: + return 1; + case I_DW: + return 2; + case I_DD: + return 4; + case I_DQ: + return 8; + case I_DT: + return 10; + case I_DO: + return 16; + case I_DY: + return 32; + case I_DZ: + return 64; + case I_none: + return -1; + default: + return 0; + } +} + +/* + * Uninitialized data bytes length from opcode + */ +static inline int const_func resb_bytes(enum opcode opcode) +{ + switch (opcode) { + case I_RESB: + return 1; + case I_RESW: + return 2; + case I_RESD: + return 4; + case I_RESQ: + return 8; + case I_REST: + return 10; + case I_RESO: + return 16; + case I_RESY: + return 32; + case I_RESZ: + return 64; + case I_none: + return -1; + default: + return 0; + } +} + +#endif /* NASM_INSNS_H */ diff --git a/vere/ext/nasm/include/labels.h b/vere/ext/nasm/include/labels.h new file mode 100644 index 0000000..a825d1f --- /dev/null +++ b/vere/ext/nasm/include/labels.h @@ -0,0 +1,79 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * labels.h header file for labels.c + */ + +#ifndef LABELS_H +#define LABELS_H + +#include "compiler.h" + +enum mangle_index { + LM_LPREFIX, /* Local variable prefix */ + LM_LSUFFIX, /* Local variable suffix */ + LM_GPREFIX, /* Global variable prefix */ + LM_GSUFFIX /* GLobal variable suffix */ +}; + +enum label_type { + LBL_none = -1, /* No label */ + LBL_LOCAL = 0, /* Must be zero */ + LBL_STATIC, + LBL_GLOBAL, + LBL_EXTERN, + LBL_REQUIRED, /* Like extern but emit even if unused */ + LBL_COMMON, + LBL_SPECIAL, /* Magic symbols like ..start */ + LBL_BACKEND /* Backend-defined symbols like ..got */ +}; + +enum label_type lookup_label(const char *label, int32_t *segment, int64_t *offset); +static inline bool is_extern(enum label_type type) +{ + return type == LBL_EXTERN || type == LBL_REQUIRED; +} +void define_label(const char *label, int32_t segment, int64_t offset, + bool normal); +void backend_label(const char *label, int32_t segment, int64_t offset); +bool declare_label(const char *label, enum label_type type, + const char *special); +void set_label_mangle(enum mangle_index which, const char *what); +int init_labels(void); +void cleanup_labels(void); +const char *local_scope(const char *label); + +extern uint64_t global_offset_changed; + +#endif /* LABELS_H */ diff --git a/vere/ext/nasm/include/md5.h b/vere/ext/nasm/include/md5.h new file mode 100644 index 0000000..cb77910 --- /dev/null +++ b/vere/ext/nasm/include/md5.h @@ -0,0 +1,21 @@ +#ifndef MD5_H +#define MD5_H + +#include "compiler.h" + +#define MD5_HASHBYTES 16 + +typedef struct MD5Context { + uint32_t buf[4]; + uint32_t bits[2]; + unsigned char in[64]; +} MD5_CTX; + +extern void MD5Init(MD5_CTX *context); +extern void MD5Update(MD5_CTX *context, unsigned char const *buf, + unsigned len); +extern void MD5Final(unsigned char digest[MD5_HASHBYTES], MD5_CTX *context); +extern void MD5Transform(uint32_t buf[4], uint32_t const in[16]); +extern char * MD5End(MD5_CTX *, char *); + +#endif /* !MD5_H */ diff --git a/vere/ext/nasm/include/nasm.h b/vere/ext/nasm/include/nasm.h new file mode 100644 index 0000000..8b017f3 --- /dev/null +++ b/vere/ext/nasm/include/nasm.h @@ -0,0 +1,1461 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2022 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * nasm.h main header file for the Netwide Assembler: inter-module interface + */ + +#ifndef NASM_NASM_H +#define NASM_NASM_H + +#include "compiler.h" + +#include + +#include "nasmlib.h" +#include "nctype.h" +#include "strlist.h" +#include "preproc.h" +#include "insnsi.h" /* For enum opcode */ +#include "directiv.h" /* For enum directive */ +#include "labels.h" /* For enum mangle_index, enum label_type */ +#include "opflags.h" +#include "regs.h" +#include "srcfile.h" +#include "error.h" + +/* Program name for error messages etc. */ +extern const char *_progname; + +/* Time stamp for the official start of compilation */ +struct compile_time { + time_t t; + bool have_local, have_gm, have_posix; + int64_t posix; + struct tm local; + struct tm gm; +}; +extern struct compile_time official_compile_time; + +/* POSIX timestamp if and only if we are not a reproducible build */ +extern bool reproducible; +static inline int64_t posix_timestamp(void) +{ + return reproducible ? 0 : official_compile_time.posix; +} + +#define NO_SEG INT32_C(-1) /* null segment value */ +#define SEG_ABS 0x40000000L /* mask for far-absolute segments */ + +#define IDLEN_MAX 4096 +#define DECOLEN_MAX 32 + +/* + * Name pollution problems: on Digital UNIX pulls in some + * strange hardware header file which sees fit to define R_SP. We + * undefine it here so as not to break the enum below. + */ +#ifdef R_SP +#undef R_SP +#endif + +/* + * We must declare the existence of this structure type up here, + * since we have to reference it before we define it... + */ +struct ofmt; + +/* + * Values for the `type' parameter to an output function. + */ +enum out_type { + OUT_RAWDATA, /* Plain bytes */ + OUT_RESERVE, /* Reserved bytes (RESB et al) */ + OUT_ZERODATA, /* Initialized data, but all zero */ + OUT_ADDRESS, /* An address (symbol value) */ + OUT_RELADDR, /* A relative address */ + OUT_SEGMENT, /* A segment number */ + + /* + * These values are used by the legacy backend interface only; + * see output/legacy.c for more information. These should never + * be used otherwise. Once all backends have been migrated to the + * new interface they should be removed. + */ + OUT_REL1ADR, + OUT_REL2ADR, + OUT_REL4ADR, + OUT_REL8ADR +}; + +enum out_flags { + OUT_WRAP = 0, /* Undefined signedness (wraps) */ + OUT_SIGNED = 1, /* Value is signed */ + OUT_UNSIGNED = 2, /* Value is unsigned */ + OUT_SIGNMASK = 3 /* Mask for signedness bits */ +}; + +/* + * The data we send down to the backend. + * XXX: We still want to push down the base address symbol if + * available, and replace the segment numbers with a structure. + */ +struct out_data { + int64_t offset; /* Offset within segment */ + int32_t segment; /* Segment written to */ + enum out_type type; /* See above */ + enum out_flags flags; /* See above */ + int inslen; /* Length of instruction */ + int insoffs; /* Offset inside instruction */ + int bits; /* Bits mode of compilation */ + uint64_t size; /* Size of output */ + const struct itemplate *itemp; /* Instruction template */ + const void *data; /* Data for OUT_RAWDATA */ + uint64_t toffset; /* Target address offset for relocation */ + int32_t tsegment; /* Target segment for relocation */ + int32_t twrt; /* Relocation with respect to */ + int64_t relbase; /* Relative base for OUT_RELADDR */ + struct src_location where; /* Source file and line */ +}; + +/* + * And a label-definition function. The boolean parameter + * `is_norm' states whether the label is a `normal' label (which + * should affect the local-label system), or something odder like + * an EQU or a segment-base symbol, which shouldn't. + */ +typedef void (*ldfunc)(char *label, int32_t segment, int64_t offset, + char *special, bool is_norm); + +/* + * Token types returned by the scanner, in addition to ordinary + * ASCII character values, and zero for end-of-string. + */ +enum token_type { /* token types, other than chars */ + + /* Token values shared between assembler and preprocessor */ + + /* Special codes */ + TOKEN_INVALID = -1, /* a placeholder value */ + TOKEN_BLOCK = -2, /* used for storage management */ + TOKEN_FREE = -3, /* free token marker, use to catch leaks */ + TOKEN_EOS = 0, /* end of string */ + + /* + * Single-character operators. Enumerated here to keep strict + * compilers happy, and for documentation. + */ + TOKEN_WHITESPACE = ' ', /* Preprocessor use */ + TOKEN_BOOL_NOT = '!', + TOKEN_AND = '&', + TOKEN_OR = '|', + TOKEN_XOR = '^', + TOKEN_NOT = '~', + TOKEN_MULT = '*', + TOKEN_DIV = '/', + TOKEN_MOD = '%', + TOKEN_LPAR = '(', + TOKEN_RPAR = ')', + TOKEN_PLUS = '+', + TOKEN_MINUS = '-', + TOKEN_COMMA = ',', + TOKEN_LBRACE = '{', + TOKEN_RBRACE = '}', + TOKEN_LBRACKET = '[', + TOKEN_RBRACKET = ']', + TOKEN_QMARK = '?', + TOKEN_EQ = '=', /* = or == */ + TOKEN_GT = '>', + TOKEN_LT = '<', + + /* Multi-character operators */ + TOKEN_SHL = 256, /* << or <<< */ + TOKEN_SHR, /* >> */ + TOKEN_SAR, /* >>> */ + TOKEN_SDIV, /* // */ + TOKEN_SMOD, /* %% */ + TOKEN_GE, /* >= */ + TOKEN_LE, /* <= */ + TOKEN_NE, /* <> (!= is same as <>) */ + TOKEN_LEG, /* <=> */ + TOKEN_DBL_AND, /* && */ + TOKEN_DBL_OR, /* || */ + TOKEN_DBL_XOR, /* ^^ */ + + TOKEN_MAX_OPERATOR, + + TOKEN_NUM, /* numeric constant */ + TOKEN_ERRNUM, /* malformed numeric constant */ + TOKEN_STR, /* string constant */ + TOKEN_ERRSTR, /* unterminated string constant */ + TOKEN_ID, /* identifier */ + TOKEN_FLOAT, /* floating-point constant */ + TOKEN_HERE, /* $, not '$' because it is not an operator */ + TOKEN_BASE, /* $$ */ + + /* Token values only used by the assembler */ + TOKEN_START_ASM, + + TOKEN_SEG, /* SEG */ + TOKEN_WRT, /* WRT */ + TOKEN_FLOATIZE, /* __?floatX?__ */ + TOKEN_STRFUNC, /* __utf16*__, __utf32*__ */ + TOKEN_IFUNC, /* __ilog2*__ */ + TOKEN_DECORATOR, /* decorators such as {...} */ + TOKEN_MASM_PTR, /* __?masm_ptr?__ for the masm package */ + TOKEN_MASM_FLAT, /* __?masm_flat?__ for the masm package */ + TOKEN_OPMASK, /* translated token for opmask registers */ + TOKEN_SIZE, /* BYTE, WORD, DWORD, QWORD, etc */ + TOKEN_SPECIAL, /* REL, FAR, NEAR, STRICT, NOSPLIT, etc */ + TOKEN_PREFIX, /* A32, O16, LOCK, REPNZ, TIMES, etc */ + TOKEN_REG, /* register name */ + TOKEN_INSN, /* instruction name */ + + TOKEN_END_ASM, + + /* Token values only used by the preprocessor */ + + TOKEN_START_PP = TOKEN_END_ASM, + + TOKEN_OTHER, /* % sequence without (current) meaning */ + TOKEN_PREPROC_ID, /* Preprocessor ID, e.g. %symbol */ + TOKEN_MMACRO_PARAM, /* MMacro parameter, e.g. %1 */ + TOKEN_LOCAL_SYMBOL, /* Local symbol, e.g. %%symbol */ + TOKEN_LOCAL_MACRO, /* Context-local macro, e.g. %$symbol */ + TOKEN_ENVIRON, /* %! */ + TOKEN_INTERNAL_STR, /* Unquoted string that should remain so */ + TOKEN_NAKED_STR, /* Unquoted string that can be re-quoted */ + TOKEN_PREPROC_Q, /* %? */ + TOKEN_PREPROC_QQ, /* %?? */ + TOKEN_PREPROC_SQ, /* %*? */ + TOKEN_PREPROC_SQQ, /* %*?? */ + TOKEN_PASTE, /* %+ */ + TOKEN_COND_COMMA, /* %, */ + TOKEN_INDIRECT, /* %[...] */ + TOKEN_XDEF_PARAM, /* Used during %xdefine processing */ + /* smacro parameters starting here; an arbitrary number. */ + TOKEN_SMAC_START_PARAMS, /* MUST BE LAST IN THE LIST!!! */ + TOKEN_MAX = INT_MAX /* Keep compiler from reducing the range */ +}; + +/* Must match the fp_formats[] array in asm/floats.c */ +enum floatize { + FLOAT_8, + FLOAT_16, + FLOAT_B16, + FLOAT_32, + FLOAT_64, + FLOAT_80M, + FLOAT_80E, + FLOAT_128L, + FLOAT_128H, + FLOAT_ERR /* Invalid format, MUST BE LAST */ +}; + +/* Must match the list in string_transform(), in strfunc.c */ +enum strfunc { + STRFUNC_UTF16, + STRFUNC_UTF16LE, + STRFUNC_UTF16BE, + STRFUNC_UTF32, + STRFUNC_UTF32LE, + STRFUNC_UTF32BE +}; + +enum ifunc { + IFUNC_ILOG2E, + IFUNC_ILOG2W, + IFUNC_ILOG2F, + IFUNC_ILOG2C +}; + +size_t string_transform(char *, size_t, char **, enum strfunc); + +/* + * The expression evaluator must be passed a scanner function; a + * standard scanner is provided as part of nasmlib.c. The + * preprocessor will use a different one. Scanners, and the + * token-value structures they return, look like this. + * + * The return value from the scanner is always a copy of the + * `t_type' field in the structure. + */ +struct tokenval { + char *t_charptr; + int64_t t_integer; + int64_t t_inttwo; + enum token_type t_type; + int8_t t_flag; +}; +typedef int (*scanner)(void *private_data, struct tokenval *tv); + +struct location { + int64_t offset; + int32_t segment; + int known; +}; +extern struct location location; + +/* + * Expression-evaluator datatype. Expressions, within the + * evaluator, are stored as an array of these beasts, terminated by + * a record with type==0. Mostly, it's a vector type: each type + * denotes some kind of a component, and the value denotes the + * multiple of that component present in the expression. The + * exception is the WRT type, whose `value' field denotes the + * segment to which the expression is relative. These segments will + * be segment-base types, i.e. either odd segment values or SEG_ABS + * types. So it is still valid to assume that anything with a + * `value' field of zero is insignificant. + */ +typedef struct { + int32_t type; /* a register, or EXPR_xxx */ + int64_t value; /* must be >= 32 bits */ +} expr; + +/* + * Library routines to manipulate expression data types. + */ +bool is_reloc(const expr *vect); +bool is_simple(const expr *vect); +bool is_really_simple(const expr *vect); +bool is_unknown(const expr *vect); +bool is_just_unknown(const expr *vect); +int64_t reloc_value(const expr *vect); +int32_t reloc_seg(const expr *vect); +int32_t reloc_wrt(const expr *vect); +bool is_self_relative(const expr *vect); +void dump_expr(const expr *vect); + +/* + * The evaluator can also return hints about which of two registers + * used in an expression should be the base register. See also the + * `operand' structure. + */ +struct eval_hints { + int64_t base; + int type; +}; + +/* + * The actual expression evaluator function looks like this. When + * called, it expects the first token of its expression to already + * be in `*tv'; if it is not, set tv->t_type to TOKEN_INVALID and + * it will start by calling the scanner. + * + * If a forward reference happens during evaluation, the evaluator + * must set `*fwref' to true if `fwref' is non-NULL. + * + * `critical' is non-zero if the expression may not contain forward + * references. The evaluator will report its own error if this + * occurs; if `critical' is 1, the error will be "symbol not + * defined before use", whereas if `critical' is 2, the error will + * be "symbol undefined". + * + * If `critical' has bit 8 set (in addition to its main value: 0x101 + * and 0x102 correspond to 1 and 2) then an extended expression + * syntax is recognised, in which relational operators such as =, < + * and >= are accepted, as well as low-precedence logical operators + * &&, ^^ and ||. + * + * If `hints' is non-NULL, it gets filled in with some hints as to + * the base register in complex effective addresses. + */ +#define CRITICAL 0x100 +typedef expr *(*evalfunc)(scanner sc, void *scprivate, + struct tokenval *tv, int *fwref, int critical, + struct eval_hints *hints); + +/* + * Special values for expr->type. + * These come after EXPR_REG_END as defined in regs.h. + * Expr types : 0 ~ EXPR_REG_END, EXPR_UNKNOWN, EXPR_...., EXPR_RDSAE, + * EXPR_SEGBASE ~ EXPR_SEGBASE + SEG_ABS, ... + */ +#define EXPR_UNKNOWN (EXPR_REG_END+1) /* forward references */ +#define EXPR_SIMPLE (EXPR_REG_END+2) +#define EXPR_WRT (EXPR_REG_END+3) +#define EXPR_RDSAE (EXPR_REG_END+4) +#define EXPR_SEGBASE (EXPR_REG_END+5) + +/* + * preprocessors ought to look like this: + */ + +enum preproc_mode { + PP_NORMAL, /* Assembly */ + PP_DEPS, /* Dependencies only */ + PP_PREPROC /* Preprocessing only */ +}; + +enum preproc_opt { + PP_TRIVIAL = 1, /* Only %line or # directives */ + PP_NOLINE = 2, /* Ignore %line and # directives */ + PP_TASM = 4 /* TASM compatibility hacks */ +}; + +/* + * Called once at the very start of assembly. + */ +void pp_init(enum preproc_opt opt); + +/* + * Called at the start of a pass; given a file name, the number + * of the pass, an error reporting function, an evaluator + * function, and a listing generator to talk to. + */ +void pp_reset(const char *file, enum preproc_mode mode, + struct strlist *deplist); + +/* + * Called to fetch a line of preprocessed source. The line + * returned has been malloc'ed, and so should be freed after + * use. + */ +char *pp_getline(void); + +/* Called at the end of each pass. */ +void pp_cleanup_pass(void); + +/* + * Called at the end of the assembly session, + * after cleanup_pass() has been called for the + * last pass. + */ +void pp_cleanup_session(void); + +/* Additional macros specific to output format */ +void pp_extra_stdmac(macros_t *macros); + +/* Early definitions and undefinitions for macros */ +void pp_pre_define(char *definition); +void pp_pre_undefine(char *definition); + +/* Include file from command line */ +void pp_pre_include(char *fname); + +/* Add a command from the command line */ +void pp_pre_command(const char *what, char *str); + +/* Include path from command line */ +void pp_include_path(struct strlist *ipath); + +/* Unwind the macro stack when printing an error message */ +void pp_error_list_macros(errflags severity); + +/* Return true if an error message should be suppressed */ +bool pp_suppress_error(errflags severity); + +/* List of dependency files */ +extern struct strlist *depend_list; + +/* TASM mode changes some properties */ +extern bool tasm_compatible_mode; + +/* + * inline function to skip past an identifier; returns the first character past + * the identifier if valid, otherwise NULL. + */ +static inline char *nasm_skip_identifier(const char *str) +{ + const char *p = str; + + if (!nasm_isidstart(*p++)) { + p = NULL; + } else { + while (nasm_isidchar(*p++)) + ; + } + return (char *)p; +} + +/* + * Data-type flags that get passed to listing-file routines. + */ +enum { + LIST_READ, + LIST_MACRO, + LIST_INCLUDE, + LIST_INCBIN, + LIST_TIMES +}; + +/* + * ----------------------------------------------------------- + * Format of the `insn' structure returned from `parser.c' and + * passed into `assemble.c' + * ----------------------------------------------------------- + */ + +/* Verify value to be a valid register */ +static inline bool is_register(int reg) +{ + return reg >= EXPR_REG_START && reg < REG_ENUM_LIMIT; +} + +/* + * token flags + */ +#define TFLAG_BRC (1 << 0) /* valid only with braces. {1to8}, {rd-sae}, ...*/ +#define TFLAG_BRC_OPT (1 << 1) /* may or may not have braces. opmasks {k1} */ +#define TFLAG_BRC_ANY (TFLAG_BRC | TFLAG_BRC_OPT) +#define TFLAG_BRDCAST (1 << 2) /* broadcasting decorator */ +#define TFLAG_WARN (1 << 3) /* warning only, treat as ID */ +#define TFLAG_DUP (1 << 4) /* valid ID but also has context-specific use */ + +/* + * REX flags + */ +#define REX_MASK 0x4f /* Actual REX prefix bits */ +#define REX_B 0x01 /* ModRM r/m extension */ +#define REX_X 0x02 /* SIB index extension */ +#define REX_R 0x04 /* ModRM reg extension */ +#define REX_W 0x08 /* 64-bit operand size */ +#define REX_L 0x20 /* Use LOCK prefix instead of REX.R */ +#define REX_P 0x40 /* REX prefix present/required */ +#define REX_H 0x80 /* High register present, REX forbidden */ +#define REX_V 0x0100 /* Instruction uses VEX/XOP instead of REX */ +#define REX_NH 0x0200 /* Instruction which doesn't use high regs */ +#define REX_EV 0x0400 /* Instruction uses EVEX instead of REX */ + +/* + * EVEX bit field + */ +#define EVEX_P0MM 0x0f /* EVEX P[3:0] : Opcode map */ +#define EVEX_P0RP 0x10 /* EVEX P[4] : High-16 reg */ +#define EVEX_P0X 0x40 /* EVEX P[6] : High-16 rm */ +#define EVEX_P1PP 0x03 /* EVEX P[9:8] : Legacy prefix */ +#define EVEX_P1VVVV 0x78 /* EVEX P[14:11] : NDS register */ +#define EVEX_P1W 0x80 /* EVEX P[15] : Osize extension */ +#define EVEX_P2AAA 0x07 /* EVEX P[18:16] : Embedded opmask */ +#define EVEX_P2VP 0x08 /* EVEX P[19] : High-16 NDS reg */ +#define EVEX_P2B 0x10 /* EVEX P[20] : Broadcast / RC / SAE */ +#define EVEX_P2LL 0x60 /* EVEX P[22:21] : Vector length */ +#define EVEX_P2RC EVEX_P2LL /* EVEX P[22:21] : Rounding control */ +#define EVEX_P2Z 0x80 /* EVEX P[23] : Zeroing/Merging */ + +/* + * REX_V "classes" (prefixes which behave like VEX) + */ +enum vex_class { + RV_VEX = 0, /* C4/C5 */ + RV_XOP = 1, /* 8F */ + RV_EVEX = 2 /* 62 */ +}; + +/* + * Note that because segment registers may be used as instruction + * prefixes, we must ensure the enumerations for prefixes and + * register names do not overlap. + */ +enum prefixes { /* instruction prefixes */ + P_none = 0, + PREFIX_ENUM_START = REG_ENUM_LIMIT, + P_A16 = PREFIX_ENUM_START, + P_A32, + P_A64, + P_ASP, + P_LOCK, + P_O16, + P_O32, + P_O64, + P_OSP, + P_REP, + P_REPE, + P_REPNE, + P_REPNZ, + P_REPZ, + P_TIMES, + P_WAIT, + P_XACQUIRE, + P_XRELEASE, + P_BND, + P_NOBND, + P_REX, + P_EVEX, + P_VEX, + P_VEX3, + P_VEX2, + PREFIX_ENUM_LIMIT +}; + +enum ea_flags { /* special EA flags */ + EAF_BYTEOFFS = 1, /* force offset part to byte size */ + EAF_WORDOFFS = 2, /* force offset part to [d]word size */ + EAF_TIMESTWO = 4, /* really do EAX*2 not EAX+EAX */ + EAF_REL = 8, /* IP-relative addressing */ + EAF_ABS = 16, /* non-IP-relative addressing */ + EAF_FSGS = 32, /* fs/gs segment override present */ + EAF_MIB = 64, /* mib operand */ + EAF_SIB = 128 /* SIB encoding obligatory */ +}; + +enum eval_hint { /* values for `hinttype' */ + EAH_NOHINT = 0, /* no hint at all - our discretion */ + EAH_MAKEBASE = 1, /* try to make given reg the base */ + EAH_NOTBASE = 2, /* try _not_ to make reg the base */ + EAH_SUMMED = 3 /* base and index are summed into index */ +}; + +typedef struct operand { /* operand to an instruction */ + opflags_t type; /* type of operand */ + int disp_size; /* 0 means default; 16; 32; 64 */ + enum reg_enum basereg; + enum reg_enum indexreg; /* address registers */ + int scale; /* index scale */ + int hintbase; + enum eval_hint hinttype; /* hint as to real base register */ + int32_t segment; /* immediate segment, if needed */ + int64_t offset; /* any immediate number */ + int32_t wrt; /* segment base it's relative to */ + int eaflags; /* special EA flags */ + int opflags; /* see OPFLAG_* defines below */ + decoflags_t decoflags; /* decorator flags such as {...} */ +} operand; + +#define OPFLAG_FORWARD 1 /* operand is a forward reference */ +#define OPFLAG_EXTERN 2 /* operand is an external reference */ +#define OPFLAG_UNKNOWN 4 /* operand is an unknown reference + (always a forward reference also) */ +#define OPFLAG_RELATIVE 8 /* operand is self-relative, e.g. [foo - $] + where foo is not in the current segment */ + +enum extop_type { /* extended operand types */ + EOT_NOTHING = 0, + EOT_EXTOP, /* Subexpression */ + EOT_DB_STRING, /* Byte string */ + EOT_DB_FLOAT, /* Floating-pointer number (special byte string) */ + EOT_DB_STRING_FREE, /* Byte string which should be nasm_free'd*/ + EOT_DB_NUMBER, /* Integer */ + EOT_DB_RESERVE /* ? */ +}; + +typedef struct extop { /* extended operand */ + struct extop *next; /* linked list */ + union { + struct { /* text or byte string */ + char *data; + size_t len; + } string; + struct { /* numeric expression */ + int64_t offset; /* numeric value or address offset */ + int32_t segment; /* address segment */ + int32_t wrt; /* address wrt */ + bool relative; /* self-relative expression */ + } num; + struct extop *subexpr; /* actual expressions */ + } val; + size_t dup; /* duplicated? */ + enum extop_type type; /* defined above */ + int elem; /* element size override, if any (bytes) */ +} extop; + +enum ea_type { + EA_INVALID, /* Not a valid EA at all */ + EA_SCALAR, /* Scalar EA */ + EA_XMMVSIB, /* XMM vector EA */ + EA_YMMVSIB, /* YMM vector EA */ + EA_ZMMVSIB /* ZMM vector EA */ +}; + +/* + * Prefix positions: each type of prefix goes in a specific slot. + * This affects the final ordering of the assembled output, which + * shouldn't matter to the processor, but if you have stylistic + * preferences, you can change this. REX prefixes are handled + * differently for the time being. + * + * LOCK and REP used to be one slot; this is no longer the case since + * the introduction of HLE. + */ +enum prefix_pos { + PPS_TIMES = -1, /* TIMES (not a slot, handled separately) */ + PPS_WAIT = 0, /* WAIT (technically not a prefix!) */ + PPS_REP, /* REP/HLE prefix */ + PPS_LOCK, /* LOCK prefix */ + PPS_SEG, /* Segment override prefix */ + PPS_OSIZE, /* Operand size prefix */ + PPS_ASIZE, /* Address size prefix */ + PPS_REX, /* REX/VEX type */ + MAXPREFIX /* Total number of prefix slots */ +}; + +/* + * Tuple types that are used when determining Disp8*N eligibility + * The order must match with a hash %tuple_codes in insns.pl + */ +enum ttypes { + FV = 001, + HV = 002, + FVM = 003, + T1S8 = 004, + T1S16 = 005, + T1S = 006, + T1F32 = 007, + T1F64 = 010, + T2 = 011, + T4 = 012, + T8 = 013, + HVM = 014, + QVM = 015, + OVM = 016, + M128 = 017, + DUP = 020 +}; + +/* EVEX.L'L : Vector length on vector insns */ +enum vectlens { + VL128 = 0, + VL256 = 1, + VL512 = 2, + VLMAX = 3 +}; + +/* If you need to change this, also change it in insns.pl */ +#define MAX_OPERANDS 5 + +typedef struct insn { /* an instruction itself */ + char *label; /* the label defined, or NULL */ + int prefixes[MAXPREFIX]; /* instruction prefixes, if any */ + enum opcode opcode; /* the opcode - not just the string */ + int operands; /* how many operands? 0-3 (more if db et al) */ + int addr_size; /* address size */ + operand oprs[MAX_OPERANDS]; /* the operands, defined as above */ + extop *eops; /* extended operands */ + int eops_float; /* true if DD and floating */ + int32_t times; /* repeat count (TIMES prefix) */ + bool forw_ref; /* is there a forward reference? */ + bool rex_done; /* REX prefix emitted? */ + int rex; /* Special REX Prefix */ + int vexreg; /* Register encoded in VEX prefix */ + int vex_cm; /* Class and M field for VEX prefix */ + int vex_wlp; /* W, P and L information for VEX prefix */ + uint8_t evex_p[3]; /* EVEX.P0: [RXB,R',00,mm], P1: [W,vvvv,1,pp] */ + /* EVEX.P2: [z,L'L,b,V',aaa] */ + enum ttypes evex_tuple; /* Tuple type for compressed Disp8*N */ + int evex_rm; /* static rounding mode for AVX512 (EVEX) */ + int8_t evex_brerop; /* BR/ER/SAE operand position */ +} insn; + +/* Instruction flags type: IF_* flags are defined in insns.h */ +typedef uint64_t iflags_t; + +/* + * What to return from a directive- or pragma-handling function. + * Currently DIRR_OK and DIRR_ERROR are treated the same way; + * in both cases the backend is expected to produce the appropriate + * error message on its own. + * + * DIRR_BADPARAM causes a generic error message to be printed. Note + * that it is an error, not a warning, even in the case of pragmas; + * don't use it where forward compatibility would be compromised + * (instead consider adding a DIRR_WARNPARAM.) + */ +enum directive_result { + DIRR_UNKNOWN, /* Directive not handled by backend */ + DIRR_OK, /* Directive processed */ + DIRR_ERROR, /* Directive processed unsuccessfully */ + DIRR_BADPARAM /* Print bad argument error message */ +}; + +/* + * A pragma facility: this structure is used to request passing a + * parsed pragma directive for a specific facility. If the handler is + * NULL then this pragma facility is recognized but ignored; pragma + * processing stops at that point. + * + * Note that the handler is passed a pointer to the facility structure + * as part of the struct pragma. + */ +struct pragma; +typedef enum directive_result (*pragma_handler)(const struct pragma *); + +struct pragma_facility { + const char *name; + pragma_handler handler; +}; + +/* + * This structure defines how a pragma directive is passed to a + * facility. This structure may be augmented in the future. + * + * Any facility MAY, but is not required to, add its operations + * keywords or a subset thereof into asm/directiv.dat, in which case + * the "opcode" field will be set to the corresponding D_ constant + * from directiv.h; otherwise it will be D_unknown. + */ +struct pragma { + const struct pragma_facility *facility; + const char *facility_name; /* Facility name exactly as entered by user */ + const char *opname; /* First word after the facility name */ + const char *tail; /* Anything after the operation */ + enum directive opcode; /* Operation as a D_ directives constant */ +}; + +/* + * These are semi-arbitrary limits to keep the assembler from going + * into a black hole on certain kinds of bugs. They can be overridden + * by command-line options or %pragma. + */ +enum nasm_limit { + LIMIT_PASSES, + LIMIT_STALLED, + LIMIT_MACRO_LEVELS, + LIMIT_MACRO_TOKENS, + LIMIT_MMACROS, + LIMIT_REP, + LIMIT_EVAL, + LIMIT_LINES +}; +#define LIMIT_MAX LIMIT_LINES +extern int64_t nasm_limit[LIMIT_MAX+1]; +extern enum directive_result nasm_set_limit(const char *, const char *); + +/* + * The data structure defining an output format driver, and the + * interfaces to the functions therein. + */ +struct ofmt { + /* + * This is a short (one-liner) description of the type of + * output generated by the driver. + */ + const char *fullname; + + /* + * This is a single keyword used to select the driver. + */ + const char *shortname; + + /* + * Default output filename extension, or a null string + */ + const char *extension; + + /* + * Output format flags. + */ +#define OFMT_TEXT 1 /* Text file format */ +#define OFMT_KEEP_ADDR 2 /* Keep addr; no conversion to data */ + + unsigned int flags; + + int maxbits; /* Maximum segment bits supported */ + + /* + * this is a pointer to the first element of the debug information + */ + const struct dfmt * const *debug_formats; + + /* + * the default debugging format if -F is not specified + */ + const struct dfmt *default_dfmt; + + /* + * This, if non-NULL, is a NULL-terminated list of `char *'s + * pointing to extra standard macros supplied by the object + * format (e.g. a sensible initial default value of __?SECT?__, + * and user-level equivalents for any format-specific + * directives). + */ + macros_t *stdmac; + + /* + * This procedure is called at the start of an output session to set + * up internal parameters. + */ + void (*init)(void); + + /* + * This procedure is called at the start of each pass. + */ + void (*reset)(void); + + /* + * This is the modern output function, which gets passed + * a struct out_data with much more information. See the + * definition of struct out_data. + */ + void (*output)(const struct out_data *data); + + /* + * This procedure is called by assemble() to write actual + * generated code or data to the object file. Typically it + * doesn't have to actually _write_ it, just store it for + * later. + * + * The `type' argument specifies the type of output data, and + * usually the size as well: its contents are described below. + * + * This is used for backends which have not yet been ported to + * the new interface, and should be NULL on ported backends. + * To use this entry point, set the output pointer to + * nasm_do_legacy_output. + */ + void (*legacy_output)(int32_t segto, const void *data, + enum out_type type, uint64_t size, + int32_t segment, int32_t wrt); + + /* + * This procedure is called once for every symbol defined in + * the module being assembled. It gives the name and value of + * the symbol, in NASM's terms, and indicates whether it has + * been declared to be global. Note that the parameter "name", + * when passed, will point to a piece of static storage + * allocated inside the label manager - it's safe to keep using + * that pointer, because the label manager doesn't clean up + * until after the output driver has. + * + * Values of `is_global' are: 0 means the symbol is local; 1 + * means the symbol is global; 2 means the symbol is common (in + * which case `offset' holds the _size_ of the variable). + * Anything else is available for the output driver to use + * internally. + * + * This routine explicitly _is_ allowed to call the label + * manager to define further symbols, if it wants to, even + * though it's been called _from_ the label manager. That much + * re-entrancy is guaranteed in the label manager. However, the + * label manager will in turn call this routine, so it should + * be prepared to be re-entrant itself. + * + * The `special' parameter contains special information passed + * through from the command that defined the label: it may have + * been an EXTERN, a COMMON or a GLOBAL. The distinction should + * be obvious to the output format from the other parameters. + */ + void (*symdef)(char *name, int32_t segment, int64_t offset, + int is_global, char *special); + + /* + * This procedure is called when the source code requests a + * segment change. It should return the corresponding segment + * _number_ for the name, or NO_SEG if the name is not a valid + * segment name. + * + * It may also be called with NULL, in which case it is to + * return the _default_ section number for starting assembly in. + * + * It is allowed to modify the string it is given a pointer to. + * + * It is also allowed to specify a default instruction size for + * the segment, by setting `*bits' to 16, 32 or 64. Or, if it + * doesn't wish to define a default, it can leave `bits' alone. + */ + int32_t (*section)(char *name, int *bits); + + /* + * This function is called when a label is defined + * in the source code. It is allowed to change the section + * number as a result, but not the bits value. + * This is *only* called if the symbol defined is at the + * current offset, i.e. "foo:" or "foo equ $". + * The offset isn't passed; and may not be stable at this point. + * The subsection number is a field available for use by the + * backend. It is initialized to NO_SEG. + * + * If "copyoffset" is set by the backend then the offset is + * copied from the previous segment, otherwise the new segment + * is treated as a new segment the normal way. + */ + int32_t (*herelabel)(const char *name, enum label_type type, + int32_t seg, int32_t *subsection, + bool *copyoffset); + + /* + * This procedure is called to modify section alignment, + * note there is a trick, the alignment can only increase + */ + void (*sectalign)(int32_t seg, unsigned int value); + + /* + * This procedure is called to modify the segment base values + * returned from the SEG operator. It is given a segment base + * value (i.e. a segment value with the low bit set), and is + * required to produce in return a segment value which may be + * different. It can map segment bases to absolute numbers by + * means of returning SEG_ABS types. + * + * It should return NO_SEG if the segment base cannot be + * determined; the evaluator (which calls this routine) is + * responsible for throwing an error condition if that occurs + * in pass two or in a critical expression. + */ + int32_t (*segbase)(int32_t segment); + + /* + * This procedure is called to allow the output driver to + * process its own specific directives. When called, it has the + * directive word in `directive' and the parameter string in + * `value'. + * + * The following values are (currently) possible for + * directive_result: + * + * 0 - DIRR_UNKNOWN - directive not recognized by backend + * 1 - DIRR_OK - directive processed ok + * 2 - DIRR_ERROR - backend printed its own error message + * 3 - DIRR_BADPARAM - print the generic message + * "invalid parameter to [*] directive" + */ + enum directive_result + (*directive)(enum directive directive, char *value); + + /* + * This procedure is called after assembly finishes, to allow + * the output driver to clean itself up and free its memory. + * Typically, it will also be the point at which the object + * file actually gets _written_. + * + * One thing the cleanup routine should always do is to close + * the output file pointer. + */ + void (*cleanup)(void); + + /* + * List of pragma facility names that apply to this backend. + */ + const struct pragma_facility *pragmas; +}; + +/* + * Output format driver alias + */ +struct ofmt_alias { + const char *shortname; + const struct ofmt *ofmt; +}; + +extern const struct ofmt *ofmt; +extern FILE *ofile; + +/* + * ------------------------------------------------------------ + * The data structure defining a debug format driver, and the + * interfaces to the functions therein. + * ------------------------------------------------------------ + */ +struct debug_macro_info; + +struct dfmt { + /* + * This is a short (one-liner) description of the type of + * output generated by the driver. + */ + const char *fullname; + + /* + * This is a single keyword used to select the driver. + */ + const char *shortname; + + /* + * init - called initially to set up local pointer to object format. + */ + void (*init)(void); + + /* + * linenum - called any time there is output with a change of + * line number or file. + */ + void (*linenum)(const char *filename, int32_t linenumber, int32_t segto); + + /* + * debug_deflabel - called whenever a label is defined. Parameters + * are the same as to 'symdef()' in the output format. This function + * is called after the output format version. + */ + + void (*debug_deflabel)(char *name, int32_t segment, int64_t offset, + int is_global, char *special); + + /* + * debug_smacros - called when an smacro is defined or undefined + * during the code-generation pass. The definition string contains + * the macro name, any arguments, a single space, and the macro + * definition; this is what is expected by e.g. DWARF. + * + * The definition is provided even for an undef. + */ + void (*debug_smacros)(bool define, const char *def); + + /* + * debug_include - called when a file is included or the include + * is finished during the code-generation pass. The filename is + * kept by the srcfile system and so can be compared for pointer + * equality. + * + * A filename of NULL means builtin (initial or %use) or command + * line statements. + */ + void (*debug_include)(bool start, struct src_location outer, + struct src_location inner); + + /* + * debug_mmacros - called once at the end with a definition for each + * non-.nolist macro that has been invoked at least once in the program, + * and the corresponding address ranges. See dbginfo.h. + */ + void (*debug_mmacros)(const struct debug_macro_info *); + + /* + * debug_directive - called whenever a DEBUG directive other than 'LINE' + * is encountered. 'directive' contains the first parameter to the + * DEBUG directive, and params contains the rest. For example, + * 'DEBUG VAR _somevar:int' would translate to a call to this + * function with 'directive' equal to "VAR" and 'params' equal to + * "_somevar:int". + */ + void (*debug_directive)(const char *directive, const char *params); + + /* + * typevalue - called whenever the assembler wishes to register a type + * for the last defined label. This routine MUST detect if a type was + * already registered and not re-register it. + */ + void (*debug_typevalue)(int32_t type); + + /* + * debug_output - called whenever output is required + * 'type' is the type of info required, and this is format-specific + */ + void (*debug_output)(int type, void *param); + + /* + * cleanup - called after processing of file is complete + */ + void (*cleanup)(void); + + /* + * List of pragma facility names that apply to this backend. + */ + const struct pragma_facility *pragmas; +}; + +extern const struct dfmt *dfmt; + +/* + * The type definition macros + * for debugging + * + * low 3 bits: reserved + * next 5 bits: type + * next 24 bits: number of elements for arrays (0 for labels) + */ + +#define TY_UNKNOWN 0x00 +#define TY_LABEL 0x08 +#define TY_BYTE 0x10 +#define TY_WORD 0x18 +#define TY_DWORD 0x20 +#define TY_FLOAT 0x28 +#define TY_QWORD 0x30 +#define TY_TBYTE 0x38 +#define TY_OWORD 0x40 +#define TY_YWORD 0x48 +#define TY_ZWORD 0x50 +#define TY_COMMON 0xE0 +#define TY_SEG 0xE8 +#define TY_EXTERN 0xF0 +#define TY_EQU 0xF8 + +#define TYM_TYPE(x) ((x) & 0xF8) +#define TYM_ELEMENTS(x) (((x) & 0xFFFFFF00) >> 8) + +#define TYS_ELEMENTS(x) ((x) << 8) + +/* Sizes corresponding to various tokens */ +enum byte_sizes { + SIZE_BYTE = 1, + SIZE_WORD = 2, + SIZE_DWORD = 4, + SIZE_QWORD = 8, + SIZE_TWORD = 10, + SIZE_OWORD = 16, + SIZE_YWORD = 32, + SIZE_ZWORD = 64 +}; + +enum special_tokens { + SIZE_ENUM_START = PREFIX_ENUM_LIMIT, + S_BYTE = SIZE_ENUM_START, + S_WORD, + S_DWORD, + S_QWORD, + S_TWORD, + S_OWORD, + S_YWORD, + S_ZWORD, + SIZE_ENUM_LIMIT, + + SPECIAL_ENUM_START = SIZE_ENUM_LIMIT, + S_ABS = SPECIAL_ENUM_START, + S_FAR, + S_LONG, + S_NEAR, + S_NOSPLIT, + S_REL, + S_SHORT, + S_STRICT, + S_TO, + SPECIAL_ENUM_LIMIT +}; + +enum decorator_tokens { + DECORATOR_ENUM_START = SPECIAL_ENUM_LIMIT, + BRC_1TO2 = DECORATOR_ENUM_START, + BRC_1TO4, + BRC_1TO8, + BRC_1TO16, + BRC_1TO32, + BRC_RN, + BRC_RD, + BRC_RU, + BRC_RZ, + BRC_SAE, + BRC_Z, + DECORATOR_ENUM_LIMIT +}; + +/* + * AVX512 Decorator (decoflags_t) bits distribution (counted from 0) + * 3 2 1 + * 10987654321098765432109876543210 + * | + * | word boundary + * ............................1111 opmask + * ...........................1.... zeroing / merging + * ..........................1..... broadcast + * .........................1...... static rounding + * ........................1....... SAE + * ....................1111........ broadcast element size + * .................111............ number of broadcast elements + */ +#define OP_GENVAL(val, bits, shift) (((val) & ((UINT64_C(1) << (bits)) - 1)) << (shift)) + +/* + * Opmask register number + * identical to EVEX.aaa + * + * Bits: 0 - 3 + */ +#define OPMASK_SHIFT (0) +#define OPMASK_BITS (4) +#define OPMASK_MASK OP_GENMASK(OPMASK_BITS, OPMASK_SHIFT) +#define GEN_OPMASK(bit) OP_GENBIT(bit, OPMASK_SHIFT) +#define VAL_OPMASK(val) OP_GENVAL(val, OPMASK_BITS, OPMASK_SHIFT) + +/* + * zeroing / merging control available + * matching to EVEX.z + * + * Bits: 4 + */ +#define Z_SHIFT (4) +#define Z_BITS (1) +#define Z_MASK OP_GENMASK(Z_BITS, Z_SHIFT) +#define GEN_Z(bit) OP_GENBIT(bit, Z_SHIFT) + +/* + * broadcast - Whether this operand can be broadcasted + * + * Bits: 5 + */ +#define BRDCAST_SHIFT (5) +#define BRDCAST_BITS (1) +#define BRDCAST_MASK OP_GENMASK(BRDCAST_BITS, BRDCAST_SHIFT) +#define GEN_BRDCAST(bit) OP_GENBIT(bit, BRDCAST_SHIFT) + +/* + * Whether this instruction can have a static rounding mode. + * It goes with the last simd operand because the static rounding mode + * decorator is located between the last simd operand and imm8 (if any). + * + * Bits: 6 + */ +#define STATICRND_SHIFT (6) +#define STATICRND_BITS (1) +#define STATICRND_MASK OP_GENMASK(STATICRND_BITS, STATICRND_SHIFT) +#define GEN_STATICRND(bit) OP_GENBIT(bit, STATICRND_SHIFT) + +/* + * SAE(Suppress all exception) available + * + * Bits: 7 + */ +#define SAE_SHIFT (7) +#define SAE_BITS (1) +#define SAE_MASK OP_GENMASK(SAE_BITS, SAE_SHIFT) +#define GEN_SAE(bit) OP_GENBIT(bit, SAE_SHIFT) + +/* + * Broadcasting element size. + * + * Bits: 8 - 11 + */ +#define BRSIZE_SHIFT (8) +#define BRSIZE_BITS (4) +#define BRSIZE_MASK OP_GENMASK(BRSIZE_BITS, BRSIZE_SHIFT) +#define GEN_BRSIZE(bit) OP_GENBIT(bit, BRSIZE_SHIFT) + +#define BR_BITS8 GEN_BRSIZE(0) /* For potential future use */ +#define BR_BITS16 GEN_BRSIZE(1) +#define BR_BITS32 GEN_BRSIZE(2) +#define BR_BITS64 GEN_BRSIZE(3) + +/* + * Number of broadcasting elements + * + * Bits: 12 - 14 + */ +#define BRNUM_SHIFT (12) +#define BRNUM_BITS (3) +#define BRNUM_MASK OP_GENMASK(BRNUM_BITS, BRNUM_SHIFT) +#define VAL_BRNUM(val) OP_GENVAL(val, BRNUM_BITS, BRNUM_SHIFT) + +#define BR_1TO2 VAL_BRNUM(0) +#define BR_1TO4 VAL_BRNUM(1) +#define BR_1TO8 VAL_BRNUM(2) +#define BR_1TO16 VAL_BRNUM(3) +#define BR_1TO32 VAL_BRNUM(4) +#define BR_1TO64 VAL_BRNUM(5) /* For potential future use */ + +#define MASK OPMASK_MASK /* Opmask (k1 ~ 7) can be used */ +#define Z Z_MASK +#define B16 (BRDCAST_MASK|BR_BITS16) /* {1to32} : broadcast 16b * 32 to zmm(512b) */ +#define B32 (BRDCAST_MASK|BR_BITS32) /* {1to16} : broadcast 32b * 16 to zmm(512b) */ +#define B64 (BRDCAST_MASK|BR_BITS64) /* {1to8} : broadcast 64b * 8 to zmm(512b) */ +#define ER STATICRND_MASK /* ER(Embedded Rounding) == Static rounding mode */ +#define SAE SAE_MASK /* SAE(Suppress All Exception) */ + +/* + * Broadcast flags (BR_BITS*) to sizes (BITS*) + */ +static inline opflags_t brsize_to_size(opflags_t brbits) +{ + return (brbits & BRSIZE_MASK) << (SIZE_SHIFT - BRSIZE_SHIFT); +} + +/* + * Global modes + */ + +/* + * flag to disable optimizations selectively + * this is useful to turn-off certain optimizations + */ +enum optimization_disable_flag { + OPTIM_ALL_ENABLED = 0, + OPTIM_DISABLE_JMP_MATCH = 1 +}; + +struct optimization { + int level; + int flag; +}; + +/* + * Various types of compiler passes we may execute. + * If these are changed, you need to also change _pass_types[] + * in asm/nasm.c. + */ +enum pass_type { + PASS_INIT, /* Initialization, not doing anything yet */ + PASS_PREPROC, /* Preprocess-only mode (similar to PASS_FIRST) */ + PASS_FIRST, /* The very first pass over the code */ + PASS_OPT, /* Optimization pass */ + PASS_STAB, /* Stabilization pass (original pass 1) */ + PASS_FINAL /* Code generation pass (original pass 2) */ +}; +extern const char * const _pass_types[]; +extern enum pass_type _pass_type; +static inline enum pass_type pass_type(void) +{ + return _pass_type; +} +static inline const char *pass_type_name(void) +{ + return _pass_types[_pass_type]; +} +/* True during initialization, no code read yet */ +static inline bool not_started(void) +{ + return pass_type() == PASS_INIT; +} +/* True for the initial pass and setup (old "pass2 < 2") */ +static inline bool pass_first(void) +{ + return pass_type() <= PASS_FIRST; +} +/* At this point we better have stable definitions */ +static inline bool pass_stable(void) +{ + return pass_type() >= PASS_STAB; +} +/* True for the code generation pass only, (old "pass1 >= 2") */ +static inline bool pass_final(void) +{ + return pass_type() >= PASS_FINAL; +} +/* True for code generation *or* preprocess-only mode */ +static inline bool pass_final_or_preproc(void) +{ + return pass_type() >= PASS_FINAL || pass_type() == PASS_PREPROC; +} + +/* + * The actual pass number. 0 is used during initialization, the very + * first pass is 1, and then it is simply increasing numbers until we are + * done. + */ +extern int64_t _passn; /* Actual pass number */ +static inline int64_t pass_count(void) +{ + return _passn; +} + +extern struct optimization optimizing; +extern int globalbits; /* 16, 32 or 64-bit mode */ +extern int globalrel; /* default to relative addressing? */ +extern int globalbnd; /* default to using bnd prefix? */ + +extern const char *inname; /* primary input filename */ +extern const char *outname; /* output filename */ + +/* + * Switch to a different segment and return the current offset + */ +int64_t switch_segment(int32_t segment); + +#endif /* NASM_NASM_H */ diff --git a/vere/ext/nasm/include/nasmint.h b/vere/ext/nasm/include/nasmint.h new file mode 100644 index 0000000..6be623b --- /dev/null +++ b/vere/ext/nasm/include/nasmint.h @@ -0,0 +1,219 @@ +/* + * nasmint.h + * + * Small ersatz subset of , deriving the types from + * . + * + * Important: the preprocessor may truncate numbers too large for it. + * Therefore, test the signed types only ... truncation won't generate + * a 01111111... bit pattern. + */ + +#ifndef NASM_NASMINT_H +#define NASM_NASMINT_H + +#include + +/*** 64-bit type: __int64, long or long long ***/ + +/* Some old versions of gcc omit LLONG_MAX */ +#ifndef LLONG_MAX +# ifdef __LONG_LONG_MAX__ +# define LLONG_MAX __LONG_LONG_MAX__ +# else +# define LLONG_MAX 0 /* Assume long long is unusable */ +# endif +#endif + +#ifndef _I64_MAX +# ifdef _MSC_VER +# define _I64_MAX 9223372036854775807 +# else +# define _I64_MAX 0 +# endif +#endif + +#if _I64_MAX == 9223372036854775807 + +/* Windows-based compiler: use __int64 */ +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; +#define _scn64 "I64" +#define _pri64 "I64" +#define INT64_C(x) x ## i64 +#define UINT64_C(x) x ## ui64 + +#elif LONG_MAX == 9223372036854775807L + +/* long is 64 bits */ +typedef signed long int64_t; +typedef unsigned long uint64_t; +#define _scn64 "l" +#define _pri64 "l" +#define INT64_C(x) x ## L +#define UINT64_C(x) x ## UL + +#elif LLONG_MAX == 9223372036854775807LL + +/* long long is 64 bits */ +typedef signed long long int64_t; +typedef unsigned long long uint64_t; +#define _scn64 "ll" +#define _pri64 "ll" +#define INT64_C(x) x ## LL +#define UINT64_C(x) x ## ULL + +#else + +#error "Neither long nor long long is 64 bits in size" + +#endif + +/*** 32-bit type: int or long ***/ + +#if INT_MAX == 2147483647 + +/* int is 32 bits */ +typedef signed int int32_t; +typedef unsigned int uint32_t; +#define _scn32 "" +#define _pri32 "" +#define INT32_C(x) x +#define UINT32_C(x) x ## U + +#elif LONG_MAX == 2147483647L + +/* long is 32 bits */ +typedef signed long int32_t; +typedef unsigned long uint32_t; +#define _scn32 "l" +#define _pri32 "l" +#define INT32_C(x) x ## L +#define UINT32_C(x) x ## UL + +#else + +#error "Neither int nor long is 32 bits in size" + +#endif + +/*** 16-bit size: int or short ***/ + +#if INT_MAX == 32767 + +/* int is 16 bits */ +typedef signed int int16_t; +typedef unsigned int uint16_t; +#define _scn16 "" +#define _pri16 "" +#define INT16_C(x) x +#define UINT16_C(x) x ## U + +#elif SHRT_MAX == 32767 + +/* short is 16 bits */ +typedef signed short int16_t; +typedef unsigned short uint16_t; +#define _scn16 "h" +#define _pri16 "" +#define INT16_C(x) x +#define UINT16_C(x) x ## U + +#else + +#error "Neither short nor int is 16 bits in size" + +#endif + +/*** 8-bit size: char ***/ + +#if SCHAR_MAX == 127 + +/* char is 8 bits */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +#define _scn8 "hh" +#define _pri8 "" +#define INT8_C(x) x +#define UINT8_C(x) x ## U + +#else + +#error "char is not 8 bits in size" + +#endif + +/* The rest of this is common to all models */ + +#define PRId8 _pri8 "d" +#define PRId16 _pri16 "d" +#define PRId32 _pri32 "d" +#define PRId64 _pri64 "d" + +#define PRIi8 _pri8 "i" +#define PRIi16 _pri16 "i" +#define PRIi32 _pri32 "i" +#define PRIi64 _pri64 "i" + +#define PRIo8 _pri8 "o" +#define PRIo16 _pri16 "o" +#define PRIo32 _pri32 "o" +#define PRIo64 _pri64 "o" + +#define PRIu8 _pri8 "u" +#define PRIu16 _pri16 "u" +#define PRIu32 _pri32 "u" +#define PRIu64 _pri64 "u" + +#define PRIx8 _pri8 "x" +#define PRIx16 _pri16 "x" +#define PRIx32 _pri32 "x" +#define PRIx64 _pri64 "x" + +#define PRIX8 _pri8 "X" +#define PRIX16 _pri16 "X" +#define PRIX32 _pri32 "X" +#define PRIX64 _pri64 "X" + +#define SCNd8 _scn8 "d" +#define SCNd16 _scn16 "d" +#define SCNd32 _scn32 "d" +#define SCNd64 _scn64 "d" + +#define SCNi8 _scn8 "i" +#define SCNi16 _scn16 "i" +#define SCNi32 _scn32 "i" +#define SCNi64 _scn64 "i" + +#define SCNo8 _scn8 "o" +#define SCNo16 _scn16 "o" +#define SCNo32 _scn32 "o" +#define SCNo64 _scn64 "o" + +#define SCNu8 _scn8 "u" +#define SCNu16 _scn16 "u" +#define SCNu32 _scn32 "u" +#define SCNu64 _scn64 "u" + +#define SCNx8 _scn8 "x" +#define SCNx16 _scn16 "x" +#define SCNx32 _scn32 "x" +#define SCNx64 _scn64 "x" + +#define INT8_MIN INT8_C(-128) +#define INT8_MAX INT8_C(127) +#define UINT8_MAX UINT8_C(255) + +#define INT16_MIN INT16_C(-32768) +#define INT16_MAX INT16_C(32767) +#define UINT16_MAX UINT16_C(65535) + +#define INT32_MIN INT32_C(-2147483648) +#define INT32_MAX INT32_C(2147483647) +#define UINT32_MAX UINT32_C(4294967295) + +#define INT64_MIN INT64_C(-9223372036854775808) +#define INT64_MAX INT64_C(9223372036854775807) +#define UINT64_MAX UINT64_C(18446744073709551615) + +#endif /* NASM_NASMINT_H */ diff --git a/vere/ext/nasm/include/nasmlib.h b/vere/ext/nasm/include/nasmlib.h new file mode 100644 index 0000000..87a7fc6 --- /dev/null +++ b/vere/ext/nasm/include/nasmlib.h @@ -0,0 +1,467 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * nasmlib.h header file for nasmlib.c + */ + +#ifndef NASM_NASMLIB_H +#define NASM_NASMLIB_H + +#include "compiler.h" +#include "bytesex.h" + +/* + * Useful construct for private values + */ +union intorptr { + int64_t i; + uint64_t u; + size_t s; + void *p; + const void *cp; + uintptr_t up; +}; +typedef union intorptr intorptr; + +/* + * Wrappers around malloc, realloc, free and a few more. nasm_malloc + * will fatal-error and die rather than return NULL; nasm_realloc will + * do likewise, and will also guarantee to work right on being passed + * a NULL pointer; nasm_free will do nothing if it is passed a NULL + * pointer. + */ +void * safe_malloc(1) nasm_malloc(size_t); +void * safe_malloc(1) nasm_zalloc(size_t); +void * safe_malloc2(1,2) nasm_calloc(size_t, size_t); +void * safe_realloc(2) nasm_realloc(void *, size_t); +void nasm_free(void *); +char * safe_alloc nasm_strdup(const char *); +char * safe_alloc nasm_strndup(const char *, size_t); +char * safe_alloc nasm_strcat(const char *one, const char *two); +char * safe_alloc end_with_null nasm_strcatn(const char *one, ...); + +/* + * nasm_[v]asprintf() are variants of the semi-standard [v]asprintf() + * functions, except that we return the pointer instead of a count. + * The size of the string (including the final NUL!) is available + * by calling nasm_aprintf_size() afterwards. + * + * nasm_[v]axprintf() are similar, but allocates a user-defined amount + * of storage before the string, and returns a pointer to the + * allocated buffer. The value of nasm_aprintf_size() does *not* include + * this additional storage. + */ +char * safe_alloc printf_func(1, 2) nasm_asprintf(const char *fmt, ...); +char * safe_alloc vprintf_func(1) nasm_vasprintf(const char *fmt, va_list ap); +void * safe_alloc printf_func(2, 3) nasm_axprintf(size_t extra, const char *fmt, ...); +void * safe_alloc vprintf_func(2) nasm_vaxprintf(size_t extra, const char *fmt, va_list ap); + +/* + * nasm_last_string_len() returns the length of the last string allocated + * by [v]asprintf, nasm_strdup, nasm_strcat, or nasm_strcatn. + * + * nasm_last_string_size() returns the equivalent size including the + * final NUL. + */ +static inline size_t nasm_last_string_len(void) +{ + extern size_t _nasm_last_string_size; + return _nasm_last_string_size - 1; +} +static inline size_t nasm_last_string_size(void) +{ + extern size_t _nasm_last_string_size; + return _nasm_last_string_size; +} + +/* Assert the argument is a pointer without evaluating it */ +#define nasm_assert_pointer(p) ((void)sizeof(*(p))) + +#define nasm_new(p) ((p) = nasm_zalloc(sizeof(*(p)))) +#define nasm_newn(p,n) ((p) = nasm_calloc((n), sizeof(*(p)))) +/* + * This is broken on platforms where there are pointers which don't + * match void * in their internal layout. It unfortunately also + * loses any "const" part of the argument, although hopefully the + * compiler will warn in that case. + */ +#define nasm_delete(p) \ + do { \ + void **_pp = (void **)&(p); \ + nasm_assert_pointer(p); \ + nasm_free(*_pp); \ + *_pp = NULL; \ + } while (0) +#define nasm_zero(x) (memset(&(x), 0, sizeof(x))) +#define nasm_zeron(p,n) (memset((p), 0, (n)*sizeof(*(p)))) + +/* + * Wrappers around fread()/fwrite() which fatal-errors on failure. + * For fread(), only use this if EOF is supposed to be a fatal error! + */ +void nasm_read(void *, size_t, FILE *); +void nasm_write(const void *, size_t, FILE *); + +/* + * NASM failure at build time if the argument is false + */ +#ifdef static_assert +# define nasm_static_assert(x) static_assert((x), #x) +#elif defined(HAVE_FUNC_ATTRIBUTE_ERROR) && defined(__OPTIMIZE__) +# define nasm_static_assert(x) \ + do { \ + if (!(x)) { \ + extern void __attribute__((error("assertion " #x " failed"))) \ + _nasm_static_fail(void); \ + _nasm_static_fail(); \ + } \ + } while (0) +#else +/* See http://www.drdobbs.com/compile-time-assertions/184401873 */ +# define nasm_static_assert(x) \ + do { enum { _static_assert_failed = 1/(!!(x)) }; } while (0) +#endif + +/* + * conditional static assert, if we know it is possible to determine + * the assert value at compile time. Since if_constant triggers + * pedantic warnings on gcc, turn them off explicitly around this code. + */ +#ifdef static_assert +# define nasm_try_static_assert(x) \ + do { \ + not_pedantic_start \ + static_assert(if_constant(x, true), #x); \ + not_pedantic_end \ + } while (0) +#elif defined(HAVE_FUNC_ATTRIBUTE_ERROR) && defined(__OPTIMIZE__) +# define nasm_try_static_assert(x) \ + do { \ + if (!if_constant(x, true)) { \ + extern void __attribute__((error("assertion " #x " failed"))) \ + _nasm_static_fail(void); \ + _nasm_static_fail(); \ + } \ + } while (0) +#else +# define nasm_try_static_assert(x) ((void)0) +#endif + +/* + * NASM assert failure + */ +fatal_func nasm_assert_failed(const char *, int, const char *); +#define nasm_assert(x) \ + do { \ + nasm_try_static_assert(x); \ + if (unlikely(!(x))) \ + nasm_assert_failed(__FILE__,__LINE__,#x); \ + } while (0) + +/* Utility function to generate a string for an invalid enum */ +const char *invalid_enum_str(int); + +/* + * ANSI doesn't guarantee the presence of `stricmp' or + * `strcasecmp'. + */ +#if defined(HAVE_STRCASECMP) +#define nasm_stricmp strcasecmp +#elif defined(HAVE_STRICMP) +#define nasm_stricmp stricmp +#else +int pure_func nasm_stricmp(const char *, const char *); +#endif + +#if defined(HAVE_STRNCASECMP) +#define nasm_strnicmp strncasecmp +#elif defined(HAVE_STRNICMP) +#define nasm_strnicmp strnicmp +#else +int pure_func nasm_strnicmp(const char *, const char *, size_t); +#endif + +int pure_func nasm_memicmp(const char *, const char *, size_t); + +#if defined(HAVE_STRSEP) +#define nasm_strsep strsep +#else +char *nasm_strsep(char **stringp, const char *delim); +#endif + +#ifndef HAVE_DECL_STRNLEN +size_t pure_func strnlen(const char *, size_t); +#endif + +/* This returns the numeric value of a given 'digit'; no check for validity */ +static inline unsigned int numvalue(unsigned char c) +{ + c |= 0x20; + return c >= 'a' ? c - 'a' + 10 : c - '0'; +} + +/* + * Convert a string into a number, using NASM number rules. Sets + * `*error' to true if an error occurs, and false otherwise. + */ +int64_t readnum(const char *str, bool *error); + +/* + * Convert a character constant into a number. Sets + * `*warn' to true if an overflow occurs, and false otherwise. + * str points to and length covers the middle of the string, + * without the quotes. + */ +int64_t readstrnum(char *str, int length, bool *warn); + +/* + * seg_alloc: allocate a hitherto unused segment number. + */ +int32_t seg_alloc(void); + +/* + * Add/replace or remove an extension to the end of a filename + */ +const char *filename_set_extension(const char *inname, const char *extension); + +/* + * Utility macros... + * + * This is a useful #define which I keep meaning to use more often: + * the number of elements of a statically defined array. + */ +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +/* + * List handling + * + * list_for_each - regular iterator over list + * list_for_each_safe - the same but safe against list items removal + * list_last - find the last element in a list + * list_reverse - reverse the order of a list + * + * Arguments named with _ + single letter should be temp variables + * of the appropriate pointer type. + */ +#define list_for_each(pos, head) \ + for (pos = head; pos; pos = pos->next) +#define list_for_each_safe(pos, _n, head) \ + for (pos = head, _n = (pos ? pos->next : NULL); pos; \ + pos = _n, _n = (_n ? _n->next : NULL)) +#define list_last(pos, head) \ + for (pos = head; pos && pos->next; pos = pos->next) \ + ; +#define list_reverse(head) \ + do { \ + void *_p, *_n; \ + if (!head || !head->next) \ + break; \ + _p = NULL; \ + while (head) { \ + _n = head->next; \ + head->next = _p; \ + _p = head; \ + head = _n; \ + } \ + head = _p; \ + } while (0) + +/* + * Power of 2 align helpers + */ +#undef ALIGN_MASK /* Some BSD flavors define these in system headers */ +#undef ALIGN +#define ALIGN_MASK(v, mask) (((v) + (mask)) & ~(mask)) +#define ALIGN(v, a) ALIGN_MASK(v, (a) - 1) +#define IS_ALIGNED(v, a) (((v) & ((a) - 1)) == 0) + +/* + * Routines to write littleendian data to a file + */ +#define fwriteint8_t(d,f) putc(d,f) +void fwriteint16_t(uint16_t data, FILE * fp); +void fwriteint32_t(uint32_t data, FILE * fp); +void fwriteint64_t(uint64_t data, FILE * fp); +void fwriteaddr(uint64_t data, int size, FILE * fp); + +/* + * Binary search routine. Returns index into `array' of an entry + * matching `string', or <0 if no match. `array' is taken to + * contain `size' elements. + * + * bsi() is case sensitive, bsii() is case insensitive. + */ +int bsi(const char *string, const char **array, int size); +int bsii(const char *string, const char **array, int size); + +/* + * Convenient string processing helper routines + */ +char *nasm_skip_spaces(const char *p); +char *nasm_skip_word(const char *p); +char *nasm_zap_spaces_fwd(char *p); +char *nasm_zap_spaces_rev(char *p); +char *nasm_trim_spaces(char *p); +char *nasm_get_word(char *p, char **tail); +char *nasm_opt_val(char *p, char **opt, char **val); + +/* + * Converts a relative pathname rel_path into an absolute path name. + * + * The buffer returned must be freed by the caller + */ +char * safe_alloc nasm_realpath(const char *rel_path); + +/* + * Path-splitting and merging functions + */ +char * safe_alloc nasm_dirname(const char *path); +char * safe_alloc nasm_basename(const char *path); +char * safe_alloc nasm_catfile(const char *dir, const char *path); + +const char * pure_func prefix_name(int); + +/* + * Wrappers around fopen()... for future change to a dedicated structure + */ +enum file_flags { + NF_BINARY = 0x00000000, /* Binary file (default) */ + NF_TEXT = 0x00000001, /* Text file */ + NF_NONFATAL = 0x00000000, /* Don't die on open failure (default) */ + NF_FATAL = 0x00000002, /* Die on open failure */ + NF_FORMAP = 0x00000004, /* Intended to use nasm_map_file() */ + NF_IONBF = 0x00000010, /* Force unbuffered stdio */ + NF_IOLBF = 0x00000020, /* Force line buffered stdio */ + NF_IOFBF = 0000000030 /* Force fully buffered stdio */ +}; +#define NF_BUF_MASK 0x30 + +FILE *nasm_open_read(const char *filename, enum file_flags flags); +FILE *nasm_open_write(const char *filename, enum file_flags flags); + +void nasm_set_binary_mode(FILE *f); + +/* Probe for existence of a file */ +bool nasm_file_exists(const char *filename); + +#define ZERO_BUF_SIZE 65536 /* Default value */ +#if defined(BUFSIZ) && (BUFSIZ > ZERO_BUF_SIZE) +# undef ZERO_BUF_SIZE +# define ZERO_BUF_SIZE BUFSIZ +#endif +extern const uint8_t zero_buffer[ZERO_BUF_SIZE]; + +/* Missing fseeko/ftello */ +#ifndef HAVE_FSEEKO +# undef off_t /* Just in case it is a macro */ +# ifdef HAVE__FSEEKI64 +# define fseeko _fseeki64 +# define ftello _ftelli64 +# define off_t int64_t +# else +# define fseeko fseek +# define ftello ftell +# define off_t long +# endif +#endif + +const void *nasm_map_file(FILE *fp, off_t start, off_t len); +void nasm_unmap_file(const void *p, size_t len); +off_t nasm_file_size(FILE *f); +off_t nasm_file_size_by_path(const char *pathname); +bool nasm_file_time(time_t *t, const char *pathname); +void fwritezero(off_t bytes, FILE *fp); + +static inline bool const_func overflow_general(int64_t value, int bytes) +{ + int sbit; + int64_t vmax, vmin; + + if (bytes >= 8) + return false; + + sbit = (bytes << 3) - 1; + vmax = ((int64_t)2 << sbit) - 1; + vmin = -((int64_t)2 << sbit); + + return value < vmin || value > vmax; +} + +static inline bool const_func overflow_signed(int64_t value, int bytes) +{ + int sbit; + int64_t vmax, vmin; + + if (bytes >= 8) + return false; + + sbit = (bytes << 3) - 1; + vmax = ((int64_t)1 << sbit) - 1; + vmin = -((int64_t)1 << sbit); + + return value < vmin || value > vmax; +} + +static inline bool const_func overflow_unsigned(int64_t value, int bytes) +{ + int sbit; + int64_t vmax, vmin; + + if (bytes >= 8) + return false; + + sbit = (bytes << 3) - 1; + vmax = ((int64_t)2 << sbit) - 1; + vmin = 0; + + return value < vmin || value > vmax; +} + +static inline int64_t const_func signed_bits(int64_t value, int bits) +{ + if (bits < 64) { + value &= ((int64_t)1 << bits) - 1; + if (value & (int64_t)1 << (bits - 1)) + value |= (int64_t)((uint64_t)-1 << bits); + } + return value; +} + +/* check if value is power of 2 */ +#define is_power2(v) ((v) && ((v) & ((v) - 1)) == 0) + +/* try to get the system stack size */ +extern size_t nasm_get_stack_size_limit(void); + +#endif diff --git a/vere/ext/nasm/include/nctype.h b/vere/ext/nasm/include/nctype.h new file mode 100644 index 0000000..ba594b9 --- /dev/null +++ b/vere/ext/nasm/include/nctype.h @@ -0,0 +1,127 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * ctype-like functions specific to NASM + */ +#ifndef NASM_NCTYPE_H +#define NASM_NCTYPE_H + +#include "compiler.h" + +void nasm_ctype_init(void); + +extern unsigned char nasm_tolower_tab[256]; +static inline char nasm_tolower(char x) +{ + return nasm_tolower_tab[(unsigned char)x]; +} + +/* + * NASM ctype table + */ +enum nasm_ctype { + NCT_CTRL = 0x0001, + NCT_SPACE = 0x0002, + NCT_ASCII = 0x0004, + NCT_LOWER = 0x0008, /* isalpha(x) && tolower(x) == x */ + NCT_UPPER = 0x0010, /* isalpha(x) && tolower(x) != x */ + NCT_DIGIT = 0x0020, + NCT_HEX = 0x0040, + NCT_ID = 0x0080, + NCT_IDSTART = 0x0100, + NCT_MINUS = 0x0200, /* - */ + NCT_DOLLAR = 0x0400, /* $ */ + NCT_UNDER = 0x0800, /* _ */ + NCT_QUOTE = 0x1000 /* " ' ` */ +}; + +extern uint16_t nasm_ctype_tab[256]; +static inline bool nasm_ctype(unsigned char x, enum nasm_ctype mask) +{ + return (nasm_ctype_tab[x] & mask) != 0; +} + +static inline bool nasm_isspace(char x) +{ + return nasm_ctype(x, NCT_SPACE); +} + +static inline bool nasm_isalpha(char x) +{ + return nasm_ctype(x, NCT_LOWER|NCT_UPPER); +} + +static inline bool nasm_isdigit(char x) +{ + return nasm_ctype(x, NCT_DIGIT); +} +static inline bool nasm_isalnum(char x) +{ + return nasm_ctype(x, NCT_LOWER|NCT_UPPER|NCT_DIGIT); +} +static inline bool nasm_isxdigit(char x) +{ + return nasm_ctype(x, NCT_HEX); +} +static inline bool nasm_isidstart(char x) +{ + return nasm_ctype(x, NCT_IDSTART); +} +static inline bool nasm_isidchar(char x) +{ + return nasm_ctype(x, NCT_ID); +} +static inline bool nasm_isbrcchar(char x) +{ + return nasm_ctype(x, NCT_ID|NCT_MINUS); +} +static inline bool nasm_isnumstart(char x) +{ + return nasm_ctype(x, NCT_DIGIT|NCT_DOLLAR); +} +static inline bool nasm_isnumchar(char x) +{ + return nasm_ctype(x, NCT_DIGIT|NCT_LOWER|NCT_UPPER|NCT_UNDER); +} +static inline bool nasm_isquote(char x) +{ + return nasm_ctype(x, NCT_QUOTE); +} + +static inline void nasm_ctype_tasm_mode(void) +{ + /* No differences at the present moment */ +} + +#endif /* NASM_NCTYPE_H */ diff --git a/vere/ext/nasm/include/opflags.h b/vere/ext/nasm/include/opflags.h new file mode 100644 index 0000000..179b1e0 --- /dev/null +++ b/vere/ext/nasm/include/opflags.h @@ -0,0 +1,301 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * opflags.h - operand flags + */ + +#ifndef NASM_OPFLAGS_H +#define NASM_OPFLAGS_H + +#include "compiler.h" +#include "tables.h" /* for opflags_t and nasm_reg_flags[] */ +#include "regs.h" + +/* + * Here we define the operand types. These are implemented as bit + * masks, since some are subsets of others; e.g. AX in a MOV + * instruction is a special operand type, whereas AX in other + * contexts is just another 16-bit register. (Also, consider CL in + * shift instructions, DX in OUT, etc.) + * + * The basic concept here is that + * (class & ~operand) == 0 + * + * if and only if "operand" belongs to class type "class". + */ + +#define OP_GENMASK(bits, shift) (((UINT64_C(1) << (bits)) - 1) << (shift)) +#define OP_GENBIT(bit, shift) (UINT64_C(1) << ((shift) + (bit))) + +/* + * Type of operand: memory reference, register, etc. + * + * Bits: 0 - 3 + */ +#define OPTYPE_SHIFT (0) +#define OPTYPE_BITS (4) +#define OPTYPE_MASK OP_GENMASK(OPTYPE_BITS, OPTYPE_SHIFT) +#define GEN_OPTYPE(bit) OP_GENBIT(bit, OPTYPE_SHIFT) + +/* + * Modifiers. + * + * Bits: 4 - 6 + */ +#define MODIFIER_SHIFT (4) +#define MODIFIER_BITS (3) +#define MODIFIER_MASK OP_GENMASK(MODIFIER_BITS, MODIFIER_SHIFT) +#define GEN_MODIFIER(bit) OP_GENBIT(bit, MODIFIER_SHIFT) + +/* + * Register classes. + * + * Bits: 7 - 17 + */ +#define REG_CLASS_SHIFT (7) +#define REG_CLASS_BITS (11) +#define REG_CLASS_MASK OP_GENMASK(REG_CLASS_BITS, REG_CLASS_SHIFT) +#define GEN_REG_CLASS(bit) OP_GENBIT(bit, REG_CLASS_SHIFT) + +/* + * Subclasses. Depends on type of operand. + * + * Bits: 18 - 25 + */ +#define SUBCLASS_SHIFT (18) +#define SUBCLASS_BITS (8) +#define SUBCLASS_MASK OP_GENMASK(SUBCLASS_BITS, SUBCLASS_SHIFT) +#define GEN_SUBCLASS(bit) OP_GENBIT(bit, SUBCLASS_SHIFT) + +/* + * Special flags. Context dependent. + * + * Bits: 26 - 32 + */ +#define SPECIAL_SHIFT (26) +#define SPECIAL_BITS (7) +#define SPECIAL_MASK OP_GENMASK(SPECIAL_BITS, SPECIAL_SHIFT) +#define GEN_SPECIAL(bit) OP_GENBIT(bit, SPECIAL_SHIFT) + +/* + * Sizes of the operands and attributes. + * + * Bits: 33 - 43 + */ +#define SIZE_SHIFT (33) +#define SIZE_BITS (11) +#define SIZE_MASK OP_GENMASK(SIZE_BITS, SIZE_SHIFT) +#define GEN_SIZE(bit) OP_GENBIT(bit, SIZE_SHIFT) + +/* + * Register set count + * + * Bits: 44 - 48 + */ +#define REGSET_SHIFT (44) +#define REGSET_BITS (5) +#define REGSET_MASK OP_GENMASK(REGSET_BITS, REGSET_SHIFT) +#define GEN_REGSET(bit) OP_GENBIT(bit, REGSET_SHIFT) + +/* + * Bits distribution (counted from 0) + * + * 6 5 4 3 2 1 + * 3210987654321098765432109876543210987654321098765432109876543210 + * | + * | dword bound + * + * ............................................................1111 optypes + * .........................................................111.... modifiers + * ..............................................11111111111....... register classes + * ......................................11111111.................. subclasses + * ...............................1111111.......................... specials + * ....................11111111111................................. sizes + * ...............11111............................................ regset count + */ + +#define REGISTER GEN_OPTYPE(0) /* register number in 'basereg' */ +#define IMMEDIATE GEN_OPTYPE(1) +#define REGMEM GEN_OPTYPE(2) /* for r/m, ie EA, operands */ +#define MEMORY (GEN_OPTYPE(3) | REGMEM) + +#define BITS8 GEN_SIZE(0) /* 8 bits (BYTE) */ +#define BITS16 GEN_SIZE(1) /* 16 bits (WORD) */ +#define BITS32 GEN_SIZE(2) /* 32 bits (DWORD) */ +#define BITS64 GEN_SIZE(3) /* 64 bits (QWORD), x64 and FPU only */ +#define BITS80 GEN_SIZE(4) /* 80 bits (TWORD), FPU only */ +#define BITS128 GEN_SIZE(5) /* 128 bits (OWORD) */ +#define BITS256 GEN_SIZE(6) /* 256 bits (YWORD) */ +#define BITS512 GEN_SIZE(7) /* 512 bits (ZWORD) */ +#define FAR GEN_SIZE(8) /* grotty: this means 16:16 or 16:32, like in CALL/JMP */ +#define NEAR GEN_SIZE(9) +#define SHORT GEN_SIZE(10) /* and this means what it says :) */ + +#define TO GEN_MODIFIER(0) /* reverse effect in FADD, FSUB &c */ +#define COLON GEN_MODIFIER(1) /* operand is followed by a colon */ +#define STRICT GEN_MODIFIER(2) /* do not optimize this operand */ + +#define REG_CLASS_CDT GEN_REG_CLASS(0) +#define REG_CLASS_GPR GEN_REG_CLASS(1) +#define REG_CLASS_SREG GEN_REG_CLASS(2) +#define REG_CLASS_FPUREG GEN_REG_CLASS(3) +#define REG_CLASS_RM_MMX GEN_REG_CLASS(4) +#define REG_CLASS_RM_XMM GEN_REG_CLASS(5) +#define REG_CLASS_RM_YMM GEN_REG_CLASS(6) +#define REG_CLASS_RM_ZMM GEN_REG_CLASS(7) +#define REG_CLASS_OPMASK GEN_REG_CLASS(8) +#define REG_CLASS_BND GEN_REG_CLASS(9) +#define REG_CLASS_RM_TMM GEN_REG_CLASS(10) + +static inline bool is_class(opflags_t class, opflags_t op) +{ + return !(class & ~op); +} + +static inline bool is_reg_class(opflags_t class, opflags_t reg) +{ + if (reg >= EXPR_REG_START && reg <= EXPR_REG_END) + return is_class(class, nasm_reg_flags[reg]); + return false; +} + +#define IS_SREG(reg) is_reg_class(REG_SREG, (reg)) +#define IS_FSGS(reg) is_reg_class(REG_FSGS, (reg)) + +/* Register classes */ +#define REG_EA ( REGMEM | REGISTER) /* 'normal' reg, qualifies as EA */ +#define RM_GPR ( REG_CLASS_GPR | REGMEM) /* integer operand */ +#define REG_GPR ( REG_CLASS_GPR | REGMEM | REGISTER) /* integer register */ +#define REG8 ( REG_CLASS_GPR | BITS8 | REGMEM | REGISTER) /* 8-bit GPR */ +#define REG16 ( REG_CLASS_GPR | BITS16 | REGMEM | REGISTER) /* 16-bit GPR */ +#define REG32 ( REG_CLASS_GPR | BITS32 | REGMEM | REGISTER) /* 32-bit GPR */ +#define REG64 ( REG_CLASS_GPR | BITS64 | REGMEM | REGISTER) /* 64-bit GPR */ +#define FPUREG ( REG_CLASS_FPUREG | REGISTER) /* floating point stack registers */ +#define FPU0 (GEN_SUBCLASS(1) | REG_CLASS_FPUREG | REGISTER) /* FPU stack register zero */ +#define RM_MMX ( REG_CLASS_RM_MMX | REGMEM) /* MMX operand */ +#define MMXREG ( REG_CLASS_RM_MMX | REGMEM | REGISTER) /* MMX register */ +#define RM_XMM ( REG_CLASS_RM_XMM | REGMEM) /* XMM (SSE) operand */ +#define XMMREG ( REG_CLASS_RM_XMM | REGMEM | REGISTER) /* XMM (SSE) register */ +#define RM_YMM ( REG_CLASS_RM_YMM | REGMEM) /* YMM (AVX) operand */ +#define YMMREG ( REG_CLASS_RM_YMM | REGMEM | REGISTER) /* YMM (AVX) register */ +#define RM_ZMM ( REG_CLASS_RM_ZMM | REGMEM) /* ZMM (AVX512) operand */ +#define ZMMREG ( REG_CLASS_RM_ZMM | REGMEM | REGISTER) /* ZMM (AVX512) register */ +#define RM_OPMASK ( REG_CLASS_OPMASK | REGMEM) /* Opmask operand */ +#define OPMASKREG ( REG_CLASS_OPMASK | REGMEM | REGISTER) /* Opmask register */ +#define OPMASK0 (GEN_SUBCLASS(1) | REG_CLASS_OPMASK | REGMEM | REGISTER) /* Opmask register zero (k0) */ +#define RM_K RM_OPMASK +#define KREG OPMASKREG +#define RM_BND ( REG_CLASS_BND | REGMEM) /* Bounds operand */ +#define BNDREG ( REG_CLASS_BND | REGMEM | REGISTER) /* Bounds register */ +#define TMMREG ( REG_CLASS_RM_TMM | REGMEM | REGISTER) /* TMM (AMX) register */ +#define REG_CDT ( REG_CLASS_CDT | BITS32 | REGISTER) /* CRn, DRn and TRn */ +#define REG_CREG (GEN_SUBCLASS(1) | REG_CLASS_CDT | BITS32 | REGISTER) /* CRn */ +#define REG_DREG (GEN_SUBCLASS(2) | REG_CLASS_CDT | BITS32 | REGISTER) /* DRn */ +#define REG_TREG (GEN_SUBCLASS(3) | REG_CLASS_CDT | BITS32 | REGISTER) /* TRn */ +#define REG_SREG ( REG_CLASS_SREG | BITS16 | REGISTER) /* any segment register */ + +/* Segment registers */ +#define REG_ES (GEN_SUBCLASS(0) | GEN_SUBCLASS(2) | REG_CLASS_SREG | BITS16 | REGISTER) /* ES */ +#define REG_CS (GEN_SUBCLASS(1) | GEN_SUBCLASS(2) | REG_CLASS_SREG | BITS16 | REGISTER) /* CS */ +#define REG_SS (GEN_SUBCLASS(0) | GEN_SUBCLASS(3) | REG_CLASS_SREG | BITS16 | REGISTER) /* SS */ +#define REG_DS (GEN_SUBCLASS(1) | GEN_SUBCLASS(3) | REG_CLASS_SREG | BITS16 | REGISTER) /* DS */ +#define REG_FS (GEN_SUBCLASS(0) | GEN_SUBCLASS(4) | REG_CLASS_SREG | BITS16 | REGISTER) /* FS */ +#define REG_GS (GEN_SUBCLASS(1) | GEN_SUBCLASS(4) | REG_CLASS_SREG | BITS16 | REGISTER) /* GS */ +#define REG_FSGS ( GEN_SUBCLASS(4) | REG_CLASS_SREG | BITS16 | REGISTER) /* FS or GS */ +#define REG_SEG67 ( GEN_SUBCLASS(5) | REG_CLASS_SREG | BITS16 | REGISTER) /* Unimplemented segment registers */ + +/* Special GPRs */ +#define REG_SMASK SUBCLASS_MASK /* a mask for the following */ +#define REG_ACCUM (GEN_SUBCLASS(1) | REG_CLASS_GPR | REGMEM | REGISTER) /* accumulator: AL, AX, EAX, RAX */ +#define REG_AL (GEN_SUBCLASS(1) | REG_CLASS_GPR | BITS8 | REGMEM | REGISTER) +#define REG_AX (GEN_SUBCLASS(1) | REG_CLASS_GPR | BITS16 | REGMEM | REGISTER) +#define REG_EAX (GEN_SUBCLASS(1) | REG_CLASS_GPR | BITS32 | REGMEM | REGISTER) +#define REG_RAX (GEN_SUBCLASS(1) | REG_CLASS_GPR | BITS64 | REGMEM | REGISTER) +#define REG_COUNT (GEN_SUBCLASS(5) | GEN_SUBCLASS(2) | REG_CLASS_GPR | REGMEM | REGISTER) /* counter: CL, CX, ECX, RCX */ +#define REG_CL (GEN_SUBCLASS(5) | GEN_SUBCLASS(2) | REG_CLASS_GPR | BITS8 | REGMEM | REGISTER) +#define REG_CX (GEN_SUBCLASS(5) | GEN_SUBCLASS(2) | REG_CLASS_GPR | BITS16 | REGMEM | REGISTER) +#define REG_ECX (GEN_SUBCLASS(5) | GEN_SUBCLASS(2) | REG_CLASS_GPR | BITS32 | REGMEM | REGISTER) +#define REG_RCX (GEN_SUBCLASS(5) | GEN_SUBCLASS(2) | REG_CLASS_GPR | BITS64 | REGMEM | REGISTER) +#define REG_DL (GEN_SUBCLASS(5) | GEN_SUBCLASS(3) | REG_CLASS_GPR | BITS8 | REGMEM | REGISTER) /* data: DL, DX, EDX, RDX */ +#define REG_DX (GEN_SUBCLASS(5) | GEN_SUBCLASS(3) | REG_CLASS_GPR | BITS16 | REGMEM | REGISTER) +#define REG_EDX (GEN_SUBCLASS(5) | GEN_SUBCLASS(3) | REG_CLASS_GPR | BITS32 | REGMEM | REGISTER) +#define REG_RDX (GEN_SUBCLASS(5) | GEN_SUBCLASS(3) | REG_CLASS_GPR | BITS64 | REGMEM | REGISTER) +#define REG_HIGH (GEN_SUBCLASS(5) | GEN_SUBCLASS(4) | REG_CLASS_GPR | BITS8 | REGMEM | REGISTER) /* high regs: AH, CH, DH, BH */ +#define REG_NOTACC GEN_SUBCLASS(5) /* non-accumulator register */ +#define REG8NA (GEN_SUBCLASS(5) | REG_CLASS_GPR | BITS8 | REGMEM | REGISTER) /* 8-bit non-acc GPR */ +#define REG16NA (GEN_SUBCLASS(5) | REG_CLASS_GPR | BITS16 | REGMEM | REGISTER) /* 16-bit non-acc GPR */ +#define REG32NA (GEN_SUBCLASS(5) | REG_CLASS_GPR | BITS32 | REGMEM | REGISTER) /* 32-bit non-acc GPR */ +#define REG64NA (GEN_SUBCLASS(5) | REG_CLASS_GPR | BITS64 | REGMEM | REGISTER) /* 64-bit non-acc GPR */ + +/* special types of EAs */ +#define MEM_OFFS (GEN_SUBCLASS(1) | MEMORY) /* simple [address] offset - absolute! */ +#define IP_REL (GEN_SUBCLASS(2) | MEMORY) /* IP-relative offset */ +#define XMEM (GEN_SUBCLASS(3) | MEMORY) /* 128-bit vector SIB */ +#define YMEM (GEN_SUBCLASS(4) | MEMORY) /* 256-bit vector SIB */ +#define ZMEM (GEN_SUBCLASS(5) | MEMORY) /* 512-bit vector SIB */ + +/* memory which matches any type of r/m operand */ +#define MEMORY_ANY (MEMORY | RM_GPR | RM_MMX | RM_XMM_L16 | RM_YMM_L16 | RM_ZMM_L16 | RM_OPMASK | RM_BND) + +/* special immediate values */ +#define UNITY (GEN_SUBCLASS(0) | IMMEDIATE) /* operand equals 1 */ +#define SBYTEWORD (GEN_SUBCLASS(1) | IMMEDIATE) /* operand is in the range -128..127 mod 2^16 */ +#define SBYTEDWORD (GEN_SUBCLASS(2) | IMMEDIATE) /* operand is in the range -128..127 mod 2^32 */ +#define SDWORD (GEN_SUBCLASS(3) | IMMEDIATE) /* operand is in the range -0x80000000..0x7FFFFFFF */ +#define UDWORD (GEN_SUBCLASS(4) | IMMEDIATE) /* operand is in the range 0..0xFFFFFFFF */ + +/* + * Subset of vector registers: register 0 only and registers 0-15. + * Avoid conflicts in subclass bitfield with any of special EA types! + */ +#define RM_XMM_L16 (GEN_SUBCLASS(6) | RM_XMM) /* XMM r/m operand 0 ~ 15 */ +#define XMM0 (GEN_SUBCLASS(1) | GEN_SUBCLASS(6) | XMMREG) /* XMM register zero */ +#define XMM_L16 ( GEN_SUBCLASS(6) | XMMREG) /* XMM register 0 ~ 15 */ + +#define RM_YMM_L16 (GEN_SUBCLASS(6) | RM_YMM) /* YMM r/m operand 0 ~ 15 */ +#define YMM0 (GEN_SUBCLASS(1) | GEN_SUBCLASS(6) | YMMREG) /* YMM register zero */ +#define YMM_L16 ( GEN_SUBCLASS(6) | YMMREG) /* YMM register 0 ~ 15 */ + +#define RM_ZMM_L16 (GEN_SUBCLASS(6) | RM_ZMM) /* ZMM r/m operand 0 ~ 15 */ +#define ZMM0 (GEN_SUBCLASS(1) | GEN_SUBCLASS(6) | ZMMREG) /* ZMM register zero */ +#define ZMM_L16 ( GEN_SUBCLASS(6) | ZMMREG) /* ZMM register 0 ~ 15 */ + +/* Register set sizes */ +#define RS2 GEN_REGSET(0) +#define RS4 GEN_REGSET(1) +#define RS8 GEN_REGSET(2) +#define RS16 GEN_REGSET(3) +#define RS32 GEN_REGSET(4) + +#endif /* NASM_OPFLAGS_H */ diff --git a/vere/ext/nasm/include/perfhash.h b/vere/ext/nasm/include/perfhash.h new file mode 100644 index 0000000..43e536c --- /dev/null +++ b/vere/ext/nasm/include/perfhash.h @@ -0,0 +1,52 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef PERFHASH_H +#define PERFHASH_H 1 + +#include "compiler.h" +#include "nasmlib.h" /* For invalid_enum_str() */ + +struct perfect_hash { + uint64_t crcinit; + uint32_t hashmask; + uint32_t tbllen; + int tbloffs; + int errval; + const int16_t *hashvals; + const char * const *strings; +}; + +int perfhash_find(const struct perfect_hash *, const char *); + +#endif /* PERFHASH_H */ diff --git a/vere/ext/nasm/include/raa.h b/vere/ext/nasm/include/raa.h new file mode 100644 index 0000000..e08d90b --- /dev/null +++ b/vere/ext/nasm/include/raa.h @@ -0,0 +1,49 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2009 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef NASM_RAA_H +#define NASM_RAA_H 1 + +#include "compiler.h" + +struct RAA; +typedef uint64_t raaindex; + +#define raa_init() NULL +void raa_free(struct RAA *); +int64_t raa_read(struct RAA *, raaindex); +void *raa_read_ptr(struct RAA *, raaindex); +struct RAA * never_null raa_write(struct RAA *r, raaindex posn, int64_t value); +struct RAA * never_null raa_write_ptr(struct RAA *r, raaindex posn, void *value); + +#endif /* NASM_RAA_H */ diff --git a/vere/ext/nasm/include/rbtree.h b/vere/ext/nasm/include/rbtree.h new file mode 100644 index 0000000..39d45af --- /dev/null +++ b/vere/ext/nasm/include/rbtree.h @@ -0,0 +1,108 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef NASM_RBTREE_H +#define NASM_RBTREE_H + +#include "compiler.h" + +/* + * This structure should be embedded in a larger data structure; + * the final output from rb_search() can then be converted back + * to the larger data structure via container_of(). + * + * An empty tree is simply represented by a NULL pointer. + */ + +/* Note: the values of these flags is significant */ +enum rbtree_node_flags { + RBTREE_NODE_BLACK = 1, /* Node color is black */ + RBTREE_NODE_PRED = 2, /* Left pointer is an uplink */ + RBTREE_NODE_SUCC = 4 /* Right pointer is an uplink */ +}; + +struct rbtree { + uint64_t key; + struct rbtree_metadata { + struct rbtree *left, *right; + enum rbtree_node_flags flags; + } m; +}; + +/* + * Add a node to a tree. Returns the new root pointer. + * The key value in the structure needs to be preinitialized; + * the rest of the structure should be zero. + */ +struct rbtree *rb_insert(struct rbtree *, struct rbtree *); + +/* + * Find a node in the tree corresponding to the key immediately + * <= the passed-in key value. + */ +struct rbtree *rb_search(const struct rbtree *, uint64_t); + +/* + * Find a node in the tree exactly matching the key value. + */ +struct rbtree *rb_search_exact(const struct rbtree *, uint64_t); + +/* + * Return the immediately previous or next node in key order. + * Returns NULL if this node is the end of the tree. + * These operations are safe for complee (but not partial!) + * tree walk-with-destruction in key order. + */ +struct rbtree *rb_prev(const struct rbtree *); +struct rbtree *rb_next(const struct rbtree *); + +/* + * Return the very first or very last node in key order. + */ +struct rbtree *rb_first(const struct rbtree *); +struct rbtree *rb_last(const struct rbtree *); + +/* + * Left and right nodes, if real. These operations are + * safe for tree destruction, but not for splitting a tree. + */ +static inline struct rbtree *rb_left(const struct rbtree *rb) +{ + return (rb->m.flags & RBTREE_NODE_PRED) ? NULL : rb->m.left; +} +static inline struct rbtree *rb_right(const struct rbtree *rb) +{ + return (rb->m.flags & RBTREE_NODE_SUCC) ? NULL : rb->m.right; +} + +#endif /* NASM_RBTREE_H */ diff --git a/vere/ext/nasm/include/rdoff.h b/vere/ext/nasm/include/rdoff.h new file mode 100644 index 0000000..973be8c --- /dev/null +++ b/vere/ext/nasm/include/rdoff.h @@ -0,0 +1,169 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * rdoff.h RDOFF Object File manipulation routines header file + */ + +#ifndef RDOFF_H +#define RDOFF_H 1 + +/* + * RDOFF definitions. They are used by RDOFF utilities and by NASM's + * 'outrdf2.c' output module. + */ + +/* RDOFF format revision (currently used only when printing the version) */ +#define RDOFF2_REVISION "0.6.1" + +/* RDOFF2 file signature */ +#define RDOFF2_SIGNATURE "RDOFF2" + +/* Maximum size of an import/export label (including trailing zero) */ +#define EXIM_LABEL_MAX 256 + +/* Maximum size of library or module name (including trailing zero) */ +#define MODLIB_NAME_MAX 128 + +/* Maximum number of segments that we can handle in one file */ +#define RDF_MAXSEGS 64 + +/* Record types that may present the RDOFF header */ +#define RDFREC_GENERIC 0 +#define RDFREC_RELOC 1 +#define RDFREC_IMPORT 2 +#define RDFREC_GLOBAL 3 +#define RDFREC_DLL 4 +#define RDFREC_BSS 5 +#define RDFREC_SEGRELOC 6 +#define RDFREC_FARIMPORT 7 +#define RDFREC_MODNAME 8 +#define RDFREC_COMMON 10 + +/* + * Generic record - contains the type and length field, plus a 128 byte + * array 'data' + */ +struct GenericRec { + uint8_t type; + uint8_t reclen; + char data[128]; +}; + +/* + * Relocation record + */ +struct RelocRec { + uint8_t type; /* must be 1 */ + uint8_t reclen; /* content length */ + uint8_t segment; /* only 0 for code, or 1 for data supported, + but add 64 for relative refs (ie do not require + reloc @ loadtime, only linkage) */ + int32_t offset; /* from start of segment in which reference is loc'd */ + uint8_t length; /* 1 2 or 4 bytes */ + uint16_t refseg; /* segment to which reference refers to */ +}; + +/* + * Extern/import record + */ +struct ImportRec { + uint8_t type; /* must be 2 */ + uint8_t reclen; /* content length */ + uint8_t flags; /* SYM_* flags (see below) */ + uint16_t segment; /* segment number allocated to the label for reloc + records - label is assumed to be at offset zero + in this segment, so linker must fix up with offset + of segment and of offset within segment */ + char label[EXIM_LABEL_MAX]; /* zero terminated, should be written to file + until the zero, but not after it */ +}; + +/* + * Public/export record + */ +struct ExportRec { + uint8_t type; /* must be 3 */ + uint8_t reclen; /* content length */ + uint8_t flags; /* SYM_* flags (see below) */ + uint8_t segment; /* segment referred to (0/1/2) */ + int32_t offset; /* offset within segment */ + char label[EXIM_LABEL_MAX]; /* zero terminated as in import */ +}; + +/* + * DLL record + */ +struct DLLRec { + uint8_t type; /* must be 4 */ + uint8_t reclen; /* content length */ + char libname[MODLIB_NAME_MAX]; /* name of library to link with at load time */ +}; + +/* + * BSS record + */ +struct BSSRec { + uint8_t type; /* must be 5 */ + uint8_t reclen; /* content length */ + int32_t amount; /* number of bytes BSS to reserve */ +}; + +/* + * Module name record + */ +struct ModRec { + uint8_t type; /* must be 8 */ + uint8_t reclen; /* content length */ + char modname[MODLIB_NAME_MAX]; /* module name */ +}; + +/* + * Common variable record + */ +struct CommonRec { + uint8_t type; /* must be 10 */ + uint8_t reclen; /* equals 7+label length */ + uint16_t segment; /* segment number */ + int32_t size; /* size of common variable */ + uint16_t align; /* alignment (power of two) */ + char label[EXIM_LABEL_MAX]; /* zero terminated as in import */ +}; + +/* Flags for ExportRec */ +#define SYM_DATA 1 +#define SYM_FUNCTION 2 +#define SYM_GLOBAL 4 +#define SYM_IMPORT 8 + +#endif /* RDOFF_H */ diff --git a/vere/ext/nasm/include/saa.h b/vere/ext/nasm/include/saa.h new file mode 100644 index 0000000..9d939ef --- /dev/null +++ b/vere/ext/nasm/include/saa.h @@ -0,0 +1,94 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef NASM_SAA_H +#define NASM_SAA_H + +#include "compiler.h" + +/* + * Routines to manage a dynamic sequential-access array, under the + * same restriction on maximum mallocable block. This array may be + * written to in two ways: a contiguous chunk can be reserved of a + * given size with a pointer returned OR single-byte data may be + * written. The array can also be read back in the same two ways: + * as a series of big byte-data blocks or as a list of structures + * of a given size. + */ + +struct SAA { + /* + * members `end' and `elem_len' are only valid in first link in + * list; `rptr' and `rpos' are used for reading + */ + size_t elem_len; /* Size of each element */ + size_t blk_len; /* Size of each allocation block */ + size_t nblks; /* Total number of allocated blocks */ + size_t nblkptrs; /* Total number of allocation block pointers */ + size_t length; /* Total allocated length of the array */ + size_t datalen; /* Total data length of the array */ + char **wblk; /* Write block pointer */ + size_t wpos; /* Write position inside block */ + size_t wptr; /* Absolute write position */ + char **rblk; /* Read block pointer */ + size_t rpos; /* Read position inside block */ + size_t rptr; /* Absolute read position */ + char **blk_ptrs; /* Pointer to pointer blocks */ +}; + +struct SAA * never_null saa_init(size_t elem_len); /* 1 == byte */ +void saa_free(struct SAA *); +void *saa_wstruct(struct SAA *); /* return a structure of elem_len */ +void saa_wbytes(struct SAA *, const void *, size_t); /* write arbitrary bytes */ +size_t saa_wcstring(struct SAA *s, const char *str); /* write a C string */ +void saa_rewind(struct SAA *); /* for reading from beginning */ +void *saa_rstruct(struct SAA *); /* return NULL on EOA */ +const void *saa_rbytes(struct SAA *, size_t *); /* return 0 on EOA */ +void saa_rnbytes(struct SAA *, void *, size_t); /* read a given no. of bytes */ +/* random access */ +void saa_fread(struct SAA *, size_t, void *, size_t); +void saa_fwrite(struct SAA *, size_t, const void *, size_t); + +/* dump to file */ +void saa_fpwrite(struct SAA *, FILE *); + +/* Write specific-sized values */ +void saa_write8(struct SAA *s, uint8_t v); +void saa_write16(struct SAA *s, uint16_t v); +void saa_write32(struct SAA *s, uint32_t v); +void saa_write64(struct SAA *s, uint64_t v); +void saa_wleb128u(struct SAA *, int); /* write unsigned LEB128 value */ +void saa_wleb128s(struct SAA *, int); /* write signed LEB128 value */ +void saa_writeaddr(struct SAA *, uint64_t, size_t); + +#endif /* NASM_SAA_H */ diff --git a/vere/ext/nasm/include/strlist.h b/vere/ext/nasm/include/strlist.h new file mode 100644 index 0000000..faf70e2 --- /dev/null +++ b/vere/ext/nasm/include/strlist.h @@ -0,0 +1,93 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * strlist.h - list of unique, ordered strings + */ + +#ifndef NASM_STRLIST_H +#define NASM_STRLIST_H + +#include "compiler.h" +#include "nasmlib.h" +#include "hashtbl.h" + +struct strlist_entry { + struct strlist_entry *next; + size_t offset; + size_t size; + intorptr pvt; + char str[1]; +}; + +struct strlist { + struct hash_table hash; + struct strlist_entry *head, **tailp; + size_t nstr, size; + bool uniq; +}; + +static inline const struct strlist_entry * +strlist_head(const struct strlist *list) +{ + return list ? list->head : NULL; +} +static inline struct strlist_entry *strlist_tail(struct strlist *list) +{ + if (!list || !list->head) + return NULL; + return container_of(list->tailp, struct strlist_entry, next); +} +static inline size_t strlist_count(const struct strlist *list) +{ + return list ? list->nstr : 0; +} +static inline size_t strlist_size(const struct strlist *list) +{ + return list ? list->size : 0; +} + +struct strlist * safe_alloc strlist_alloc(bool uniq); +const struct strlist_entry *strlist_add(struct strlist *list, const char *str); +const struct strlist_entry * printf_func(2, 3) + strlist_printf(struct strlist *list, const char *fmt, ...); +const struct strlist_entry * vprintf_func(2) + strlist_vprintf(struct strlist *list, const char *fmt, va_list ap); +const struct strlist_entry * +strlist_find(const struct strlist *list, const char *str); +void * safe_alloc strlist_linearize(const struct strlist *list, char sep); +void strlist_write(const struct strlist *list, const char *sep, FILE *f); +void strlist_free(struct strlist **listp); +#define strlist_for_each(p,h) list_for_each((p), strlist_head(h)) + +#endif /* NASM_STRLIST_H */ diff --git a/vere/ext/nasm/include/tables.h b/vere/ext/nasm/include/tables.h new file mode 100644 index 0000000..2b36357 --- /dev/null +++ b/vere/ext/nasm/include/tables.h @@ -0,0 +1,77 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2016 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * tables.h + * + * Declarations for auto-generated tables + */ + +#ifndef NASM_TABLES_H +#define NASM_TABLES_H + +#include "compiler.h" +#include "insnsi.h" /* For enum opcode */ + +/* --- From standard.mac via macros.pl: --- */ + +/* macros.c */ +extern const unsigned char nasm_stdmac_tasm[]; +extern const unsigned char nasm_stdmac_nasm[]; +extern const unsigned char nasm_stdmac_version[]; + +struct use_package { + const char *package; + const unsigned char *macros; + int index; +}; +extern const struct use_package *nasm_find_use_package(const char *); +extern const int use_package_count; + +/* --- From insns.dat via insns.pl: --- */ + +/* insnsn.c */ +extern const char * const nasm_insn_names[]; + +/* --- From regs.dat via regs.pl: --- */ + +/* regs.c */ +extern const char * const nasm_reg_names[]; +/* regflags.c */ +typedef uint64_t opflags_t; +typedef uint16_t decoflags_t; +extern const opflags_t nasm_reg_flags[]; +/* regvals.c */ +extern const int nasm_regvals[]; + +#endif /* NASM_TABLES_H */ diff --git a/vere/ext/nasm/include/ver.h b/vere/ext/nasm/include/ver.h new file mode 100644 index 0000000..a5bbf38 --- /dev/null +++ b/vere/ext/nasm/include/ver.h @@ -0,0 +1,55 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * NASM version strings, defined in ver.c + */ + +#ifndef NASM_VER_H +#define NASM_VER_H + +#include "compiler.h" + +extern const char nasm_version[]; +extern const char nasm_date[]; +extern const char nasm_compile_options[]; + +extern bool reproducible; + +extern const char *nasm_comment(void); +extern size_t nasm_comment_len(void); + +extern const char *nasm_signature(void); +extern size_t nasm_signature_len(void); + +#endif /* NASM_VER_H */ diff --git a/vere/ext/nasm/include/warnings.h b/vere/ext/nasm/include/warnings.h new file mode 100644 index 0000000..3707515 --- /dev/null +++ b/vere/ext/nasm/include/warnings.h @@ -0,0 +1,131 @@ +#ifndef NASM_WARNINGS_H +#define NASM_WARNINGS_H + +#ifndef WARN_SHR +# error "warnings.h should only be included from within error.h" +#endif + +enum warn_index { + WARN_IDX_NONE = 0, /* not suppressible */ + WARN_IDX_DB_EMPTY = 1, /* no operand for data declaration */ + WARN_IDX_EA_ABSOLUTE = 2, /* absolute address cannot be RIP-relative */ + WARN_IDX_EA_DISPSIZE = 3, /* displacement size ignored on absolute address */ + WARN_IDX_FLOAT_DENORM = 4, /* floating point denormal */ + WARN_IDX_FLOAT_OVERFLOW = 5, /* floating point overflow */ + WARN_IDX_FLOAT_TOOLONG = 6, /* too many digits in floating-point number */ + WARN_IDX_FLOAT_UNDERFLOW = 7, /* floating point underflow */ + WARN_IDX_FORWARD = 8, /* forward reference may have unpredictable results */ + WARN_IDX_LABEL_ORPHAN = 9, /* labels alone on lines without trailing `:' */ + WARN_IDX_LABEL_REDEF = 10, /* label redefined to an identical value */ + WARN_IDX_LABEL_REDEF_LATE = 11, /* label (re)defined during code generation */ + WARN_IDX_NUMBER_OVERFLOW = 12, /* numeric constant does not fit */ + WARN_IDX_OBSOLETE_NOP = 13, /* instruction obsolete and is a noop on the target CPU */ + WARN_IDX_OBSOLETE_REMOVED = 14, /* instruction obsolete and removed on the target CPU */ + WARN_IDX_OBSOLETE_VALID = 15, /* instruction obsolete but valid on the target CPU */ + WARN_IDX_PHASE = 16, /* phase error during stabilization */ + WARN_IDX_PP_ELSE_ELIF = 17, /* %elif after %else */ + WARN_IDX_PP_ELSE_ELSE = 18, /* %else after %else */ + WARN_IDX_PP_EMPTY_BRACES = 19, /* empty %{} construct */ + WARN_IDX_PP_ENVIRONMENT = 20, /* nonexistent environment variable */ + WARN_IDX_PP_MACRO_DEF_CASE_SINGLE = 21, /* single-line macro defined both case sensitive and insensitive */ + WARN_IDX_PP_MACRO_DEF_GREEDY_SINGLE = 22, /* single-line macro */ + WARN_IDX_PP_MACRO_DEF_PARAM_SINGLE = 23, /* single-line macro defined with and without parameters */ + WARN_IDX_PP_MACRO_DEFAULTS = 24, /* macros with more default than optional parameters */ + WARN_IDX_PP_MACRO_PARAMS_LEGACY = 25, /* improperly calling multi-line macro for legacy support */ + WARN_IDX_PP_MACRO_PARAMS_MULTI = 26, /* multi-line macro calls with wrong parameter count */ + WARN_IDX_PP_MACRO_PARAMS_SINGLE = 27, /* single-line macro calls with wrong parameter count */ + WARN_IDX_PP_MACRO_REDEF_MULTI = 28, /* redefining multi-line macro */ + WARN_IDX_PP_OPEN_BRACES = 29, /* unterminated %{...} */ + WARN_IDX_PP_OPEN_BRACKETS = 30, /* unterminated %[...] */ + WARN_IDX_PP_OPEN_STRING = 31, /* unterminated string */ + WARN_IDX_PP_REP_NEGATIVE = 32, /* regative %rep count */ + WARN_IDX_PP_SEL_RANGE = 33, /* %sel() argument out of range */ + WARN_IDX_PP_TRAILING = 34, /* trailing garbage ignored */ + WARN_IDX_PRAGMA_BAD = 35, /* malformed %pragma */ + WARN_IDX_PRAGMA_EMPTY = 36, /* empty %pragma directive */ + WARN_IDX_PRAGMA_NA = 37, /* %pragma not applicable to this compilation */ + WARN_IDX_PRAGMA_UNKNOWN = 38, /* unknown %pragma facility or directive */ + WARN_IDX_PREFIX_BND = 39, /* invalid BND prefix */ + WARN_IDX_PREFIX_HLE = 40, /* invalid HLE prefix */ + WARN_IDX_PREFIX_LOCK = 41, /* LOCK prefix on unlockable instructions */ + WARN_IDX_PREFIX_OPSIZE = 42, /* invalid operand size prefix */ + WARN_IDX_PREFIX_SEG = 43, /* segment prefix ignored in 64-bit mode */ + WARN_IDX_PTR = 44, /* non-NASM keyword used in other assemblers */ + WARN_IDX_REGSIZE = 45, /* register size specification ignored */ + WARN_IDX_UNKNOWN_WARNING = 46, /* unknown warning in -W/-w or warning directive */ + WARN_IDX_USER = 47, /* %warning directives */ + WARN_IDX_WARN_STACK_EMPTY = 48, /* warning stack empty */ + WARN_IDX_ZEROING = 49, /* RESx in initialized section becomes zero */ + WARN_IDX_ZEXT_RELOC = 50, /* relocation zero-extended to match output format */ + WARN_IDX_OTHER = 51, /* any warning not specifically mentioned above */ + WARN_IDX_ALL = 52 /* all possible warnings */ +}; + +enum warn_const { + WARN_NONE = 0 << WARN_SHR, + WARN_DB_EMPTY = 1 << WARN_SHR, + WARN_EA_ABSOLUTE = 2 << WARN_SHR, + WARN_EA_DISPSIZE = 3 << WARN_SHR, + WARN_FLOAT_DENORM = 4 << WARN_SHR, + WARN_FLOAT_OVERFLOW = 5 << WARN_SHR, + WARN_FLOAT_TOOLONG = 6 << WARN_SHR, + WARN_FLOAT_UNDERFLOW = 7 << WARN_SHR, + WARN_FORWARD = 8 << WARN_SHR, + WARN_LABEL_ORPHAN = 9 << WARN_SHR, + WARN_LABEL_REDEF = 10 << WARN_SHR, + WARN_LABEL_REDEF_LATE = 11 << WARN_SHR, + WARN_NUMBER_OVERFLOW = 12 << WARN_SHR, + WARN_OBSOLETE_NOP = 13 << WARN_SHR, + WARN_OBSOLETE_REMOVED = 14 << WARN_SHR, + WARN_OBSOLETE_VALID = 15 << WARN_SHR, + WARN_PHASE = 16 << WARN_SHR, + WARN_PP_ELSE_ELIF = 17 << WARN_SHR, + WARN_PP_ELSE_ELSE = 18 << WARN_SHR, + WARN_PP_EMPTY_BRACES = 19 << WARN_SHR, + WARN_PP_ENVIRONMENT = 20 << WARN_SHR, + WARN_PP_MACRO_DEF_CASE_SINGLE = 21 << WARN_SHR, + WARN_PP_MACRO_DEF_GREEDY_SINGLE = 22 << WARN_SHR, + WARN_PP_MACRO_DEF_PARAM_SINGLE = 23 << WARN_SHR, + WARN_PP_MACRO_DEFAULTS = 24 << WARN_SHR, + WARN_PP_MACRO_PARAMS_LEGACY = 25 << WARN_SHR, + WARN_PP_MACRO_PARAMS_MULTI = 26 << WARN_SHR, + WARN_PP_MACRO_PARAMS_SINGLE = 27 << WARN_SHR, + WARN_PP_MACRO_REDEF_MULTI = 28 << WARN_SHR, + WARN_PP_OPEN_BRACES = 29 << WARN_SHR, + WARN_PP_OPEN_BRACKETS = 30 << WARN_SHR, + WARN_PP_OPEN_STRING = 31 << WARN_SHR, + WARN_PP_REP_NEGATIVE = 32 << WARN_SHR, + WARN_PP_SEL_RANGE = 33 << WARN_SHR, + WARN_PP_TRAILING = 34 << WARN_SHR, + WARN_PRAGMA_BAD = 35 << WARN_SHR, + WARN_PRAGMA_EMPTY = 36 << WARN_SHR, + WARN_PRAGMA_NA = 37 << WARN_SHR, + WARN_PRAGMA_UNKNOWN = 38 << WARN_SHR, + WARN_PREFIX_BND = 39 << WARN_SHR, + WARN_PREFIX_HLE = 40 << WARN_SHR, + WARN_PREFIX_LOCK = 41 << WARN_SHR, + WARN_PREFIX_OPSIZE = 42 << WARN_SHR, + WARN_PREFIX_SEG = 43 << WARN_SHR, + WARN_PTR = 44 << WARN_SHR, + WARN_REGSIZE = 45 << WARN_SHR, + WARN_UNKNOWN_WARNING = 46 << WARN_SHR, + WARN_USER = 47 << WARN_SHR, + WARN_WARN_STACK_EMPTY = 48 << WARN_SHR, + WARN_ZEROING = 49 << WARN_SHR, + WARN_ZEXT_RELOC = 50 << WARN_SHR, + WARN_OTHER = 51 << WARN_SHR +}; + +struct warning_alias { + const char *name; + enum warn_index warning; +}; + +#define NUM_WARNING_ALIAS 68 +extern const char * const warning_name[53]; +extern const char * const warning_help[53]; +extern const struct warning_alias warning_alias[NUM_WARNING_ALIAS]; +extern const uint8_t warning_default[52]; +extern uint8_t warning_state[52]; + +#endif /* NASM_WARNINGS_H */ diff --git a/vere/ext/nasm/macros/altreg.mac b/vere/ext/nasm/macros/altreg.mac new file mode 100644 index 0000000..16134cd --- /dev/null +++ b/vere/ext/nasm/macros/altreg.mac @@ -0,0 +1,107 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2009 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +;; +;; altreg.mac +;; +;; Alternate register names for 64-bit mode +;; + +USE: altreg + +;; +;; Intel documents R8L-R15L instead of R8B-R15B +;; (Warning: this may confuse people with an AT&T-style assembly +;; background, where "r8l" means R8D, etc.) +;; +%idefine r8l r8b +%idefine r9l r9b +%idefine r10l r10b +%idefine r11l r11b +%idefine r12l r12b +%idefine r13l r13b +%idefine r14l r14b +%idefine r15l r15b + +;; +;; Numeric register names for the lower 8 registers +;; +%idefine r0 rax +%idefine r1 rcx +%idefine r2 rdx +%idefine r3 rbx +%idefine r4 rsp +%idefine r5 rbp +%idefine r6 rsi +%idefine r7 rdi + +%idefine r0d eax +%idefine r1d ecx +%idefine r2d edx +%idefine r3d ebx +%idefine r4d esp +%idefine r5d ebp +%idefine r6d esi +%idefine r7d edi + +%idefine r0w ax +%idefine r1w cx +%idefine r2w dx +%idefine r3w bx +%idefine r4w sp +%idefine r5w bp +%idefine r6w si +%idefine r7w di + +%idefine r0b al +%idefine r1b cl +%idefine r2b dl +%idefine r3b bl +%idefine r4b spl +%idefine r5b bpl +%idefine r6b sil +%idefine r7b dil + +%idefine r0l al +%idefine r1l cl +%idefine r2l dl +%idefine r3l bl +%idefine r4l spl +%idefine r5l bpl +%idefine r6l sil +%idefine r7l dil + +%idefine r0h ah +%idefine r1h ch +%idefine r2h dh +%idefine r3h bh diff --git a/vere/ext/nasm/macros/fp.mac b/vere/ext/nasm/macros/fp.mac new file mode 100644 index 0000000..3a094a5 --- /dev/null +++ b/vere/ext/nasm/macros/fp.mac @@ -0,0 +1,62 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 2010-2020 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +;; +;; fp.mac +;; +;; Floating-point utility macros +;; + +USE: fp + +%define Inf __?Infinity?__ +%define NaN __?QNaN?__ +%define QNaN __?QNaN?__ +%define SNaN __?SNaN?__ + +%define float8(x) __?float8?__(x) +%define float16(x) __?float16?__(x) +%define bfloat16(x) __?bfloat16?__(x) +%define float32(x) __?float32?__(x) +%define float64(x) __?float64?__(x) +%define float80m(x) __?float80m?__(x) +%define float80e(x) __?float80e?__(x) +%define float128l(x) __?float128l?__(x) +%define float128h(x) __?float128h?__(x) + +%imacro bf16 1-*.nolist + %rep %0 + dw __?bfloat16?__(%1) + %rotate 1 + %endrep +%endmacro diff --git a/vere/ext/nasm/macros/ifunc.mac b/vere/ext/nasm/macros/ifunc.mac new file mode 100644 index 0000000..4db46d3 --- /dev/null +++ b/vere/ext/nasm/macros/ifunc.mac @@ -0,0 +1,48 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 2012-2016 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +;; +;; ifunc.mac +;; +;; Integer function utility macros +;; + +USE: ifunc + +%idefine ilog2(x) (__?ilog2e?__(x)) +%idefine ilog2e(x) (__?ilog2e?__(x)) +%idefine ilog2w(x) (__?ilog2w?__(x)) +%idefine ilog2fw(x) (__?ilog2w?__(x)) +%idefine ilog2f(x) (__?ilog2f?__(x)) +%idefine ilog2cw(x) (__?ilog2w?__(x) * 0 + __?ilog2c?__(x)) +%idefine ilog2c(x) (__?ilog2c?__(x)) diff --git a/vere/ext/nasm/macros/macros.c b/vere/ext/nasm/macros/macros.c new file mode 100644 index 0000000..b00e426 --- /dev/null +++ b/vere/ext/nasm/macros/macros.c @@ -0,0 +1,875 @@ +/* + * Do not edit - this file auto-generated by macros.pl from: + * version.mac + * ./macros/altreg.mac + * ./macros/fp.mac + * ./macros/ifunc.mac + * ./macros/masm.mac + * ./macros/smartalign.mac + * ./macros/standard.mac + * ./output/outaout.mac + * ./output/outas86.mac + * ./output/outbin.mac + * ./output/outcoff.mac + * ./output/outdbg.mac + * ./output/outelf.mac + * ./output/outmacho.mac + * ./output/outobj.mac + */ + +#include "tables.h" +#include "nasmlib.h" +#include "hashtbl.h" +#include "outform.h" + +#define p_if 128 +#define p_ifctx 129 +#define p_ifdef 130 +#define p_ifdefalias 131 +#define p_ifdifi 132 +#define p_ifempty 133 +#define p_ifenv 134 +#define p_ifid 135 +#define p_ifidn 136 +#define p_ifidni 137 +#define p_ifmacro 138 +#define p_ifnum 139 +#define p_ifstr 140 +#define p_iftoken 141 +#define p_ifusable 142 +#define p_ifusing 143 +#define p_ifn 144 +#define p_ifnctx 145 +#define p_ifndef 146 +#define p_ifndefalias 147 +#define p_ifndifi 148 +#define p_ifnempty 149 +#define p_ifnenv 150 +#define p_ifnid 151 +#define p_ifnidn 152 +#define p_ifnidni 153 +#define p_ifnmacro 154 +#define p_ifnnum 155 +#define p_ifnstr 156 +#define p_ifntoken 157 +#define p_ifnusable 158 +#define p_ifnusing 159 +#define p_elif 160 +#define p_elifctx 161 +#define p_elifdef 162 +#define p_elifdefalias 163 +#define p_elifdifi 164 +#define p_elifempty 165 +#define p_elifenv 166 +#define p_elifid 167 +#define p_elifidn 168 +#define p_elifidni 169 +#define p_elifmacro 170 +#define p_elifnum 171 +#define p_elifstr 172 +#define p_eliftoken 173 +#define p_elifusable 174 +#define p_elifusing 175 +#define p_elifn 176 +#define p_elifnctx 177 +#define p_elifndef 178 +#define p_elifndefalias 179 +#define p_elifndifi 180 +#define p_elifnempty 181 +#define p_elifnenv 182 +#define p_elifnid 183 +#define p_elifnidn 184 +#define p_elifnidni 185 +#define p_elifnmacro 186 +#define p_elifnnum 187 +#define p_elifnstr 188 +#define p_elifntoken 189 +#define p_elifnusable 190 +#define p_elifnusing 191 +#define p_aliases 192 +#define p_arg 193 +#define p_clear 194 +#define p_depend 195 +#define p_else 196 +#define p_endif 197 +#define p_endm 198 +#define p_endmacro 199 +#define p_endrep 200 +#define p_error 201 +#define p_exitmacro 202 +#define p_exitrep 203 +#define p_fatal 204 +#define p_include 205 +#define p_line 206 +#define p_local 207 +#define p_null 208 +#define p_pop 209 +#define p_pragma 210 +#define p_push 211 +#define p_rep 212 +#define p_repl 213 +#define p_require 214 +#define p_rotate 215 +#define p_stacksize 216 +#define p_undef 217 +#define p_undefalias 218 +#define p_use 219 +#define p_warning 220 +#define p_assign 222 +#define p_iassign 223 +#define p_defalias 224 +#define p_idefalias 225 +#define p_define 226 +#define p_idefine 227 +#define p_defstr 228 +#define p_idefstr 229 +#define p_deftok 230 +#define p_ideftok 231 +#define p_macro 232 +#define p_imacro 233 +#define p_pathsearch 234 +#define p_ipathsearch 235 +#define p_rmacro 236 +#define p_irmacro 237 +#define p_strcat 238 +#define p_istrcat 239 +#define p_strlen 240 +#define p_istrlen 241 +#define p_substr 242 +#define p_isubstr 243 +#define p_xdefine 244 +#define p_ixdefine 245 +#define p_unmacro 246 +#define p_unimacro 247 +#define EOL 127 + + +#if 1 +const unsigned char nasm_stdmac_version[] = { + /* From version.mac */ + /* 0 */ p_define,'_','_','?','N','A','S','M','_','M','A','J','O','R','?','_','_',' ','2',EOL, + /* 20 */ p_define,'_','_','?','N','A','S','M','_','M','I','N','O','R','?','_','_',' ','1','6',EOL, + /* 41 */ p_define,'_','_','?','N','A','S','M','_','S','U','B','M','I','N','O','R','?','_','_',' ','1',EOL, + /* 64 */ p_define,'_','_','?','N','A','S','M','_','P','A','T','C','H','L','E','V','E','L','?','_','_',' ','0',EOL, + /* 89 */ p_define,'_','_','?','N','A','S','M','_','V','E','R','S','I','O','N','_','I','D','?','_','_',' ','0','0','2','1','0','0','1','0','0','h',EOL, + /* 123 */ p_define,'_','_','?','N','A','S','M','_','V','E','R','?','_','_',' ','\"','2','.','1','6','.','0','1','\"',EOL, + /* 149 */ EOL +}; +#endif + +#if 1 +static const unsigned char nasm_usemac_altreg[] = { + /* From ./macros/altreg.mac */ + /* 0 */ p_define,'_','_','?','U','S','E','_','A','L','T','R','E','G','?','_','_',EOL, + /* 0 */ p_defalias,'_','_','U','S','E','_','A','L','T','R','E','G','_','_',' ','_','_','?','U','S','E','A','L','T','R','E','G','?','_','_',EOL, + /* 32 */ p_idefine,'r','8','l',' ','r','8','b',EOL, + /* 41 */ p_idefine,'r','9','l',' ','r','9','b',EOL, + /* 50 */ p_idefine,'r','1','0','l',' ','r','1','0','b',EOL, + /* 61 */ p_idefine,'r','1','1','l',' ','r','1','1','b',EOL, + /* 72 */ p_idefine,'r','1','2','l',' ','r','1','2','b',EOL, + /* 83 */ p_idefine,'r','1','3','l',' ','r','1','3','b',EOL, + /* 94 */ p_idefine,'r','1','4','l',' ','r','1','4','b',EOL, + /* 105 */ p_idefine,'r','1','5','l',' ','r','1','5','b',EOL, + /* 116 */ p_idefine,'r','0',' ','r','a','x',EOL, + /* 124 */ p_idefine,'r','1',' ','r','c','x',EOL, + /* 132 */ p_idefine,'r','2',' ','r','d','x',EOL, + /* 140 */ p_idefine,'r','3',' ','r','b','x',EOL, + /* 148 */ p_idefine,'r','4',' ','r','s','p',EOL, + /* 156 */ p_idefine,'r','5',' ','r','b','p',EOL, + /* 164 */ p_idefine,'r','6',' ','r','s','i',EOL, + /* 172 */ p_idefine,'r','7',' ','r','d','i',EOL, + /* 180 */ p_idefine,'r','0','d',' ','e','a','x',EOL, + /* 189 */ p_idefine,'r','1','d',' ','e','c','x',EOL, + /* 198 */ p_idefine,'r','2','d',' ','e','d','x',EOL, + /* 207 */ p_idefine,'r','3','d',' ','e','b','x',EOL, + /* 216 */ p_idefine,'r','4','d',' ','e','s','p',EOL, + /* 225 */ p_idefine,'r','5','d',' ','e','b','p',EOL, + /* 234 */ p_idefine,'r','6','d',' ','e','s','i',EOL, + /* 243 */ p_idefine,'r','7','d',' ','e','d','i',EOL, + /* 252 */ p_idefine,'r','0','w',' ','a','x',EOL, + /* 260 */ p_idefine,'r','1','w',' ','c','x',EOL, + /* 268 */ p_idefine,'r','2','w',' ','d','x',EOL, + /* 276 */ p_idefine,'r','3','w',' ','b','x',EOL, + /* 284 */ p_idefine,'r','4','w',' ','s','p',EOL, + /* 292 */ p_idefine,'r','5','w',' ','b','p',EOL, + /* 300 */ p_idefine,'r','6','w',' ','s','i',EOL, + /* 308 */ p_idefine,'r','7','w',' ','d','i',EOL, + /* 316 */ p_idefine,'r','0','b',' ','a','l',EOL, + /* 324 */ p_idefine,'r','1','b',' ','c','l',EOL, + /* 332 */ p_idefine,'r','2','b',' ','d','l',EOL, + /* 340 */ p_idefine,'r','3','b',' ','b','l',EOL, + /* 348 */ p_idefine,'r','4','b',' ','s','p','l',EOL, + /* 357 */ p_idefine,'r','5','b',' ','b','p','l',EOL, + /* 366 */ p_idefine,'r','6','b',' ','s','i','l',EOL, + /* 375 */ p_idefine,'r','7','b',' ','d','i','l',EOL, + /* 384 */ p_idefine,'r','0','l',' ','a','l',EOL, + /* 392 */ p_idefine,'r','1','l',' ','c','l',EOL, + /* 400 */ p_idefine,'r','2','l',' ','d','l',EOL, + /* 408 */ p_idefine,'r','3','l',' ','b','l',EOL, + /* 416 */ p_idefine,'r','4','l',' ','s','p','l',EOL, + /* 425 */ p_idefine,'r','5','l',' ','b','p','l',EOL, + /* 434 */ p_idefine,'r','6','l',' ','s','i','l',EOL, + /* 443 */ p_idefine,'r','7','l',' ','d','i','l',EOL, + /* 452 */ p_idefine,'r','0','h',' ','a','h',EOL, + /* 460 */ p_idefine,'r','1','h',' ','c','h',EOL, + /* 468 */ p_idefine,'r','2','h',' ','d','h',EOL, + /* 476 */ p_idefine,'r','3','h',' ','b','h',EOL, + /* 484 */ EOL +}; +#endif + +#if 1 +static const unsigned char nasm_usemac_fp[] = { + /* From ./macros/fp.mac */ + /* 0 */ p_define,'_','_','?','U','S','E','_','F','P','?','_','_',EOL, + /* 0 */ p_defalias,'_','_','U','S','E','_','F','P','_','_',' ','_','_','?','U','S','E','F','P','?','_','_',EOL, + /* 24 */ p_define,'I','n','f',' ','_','_','?','I','n','f','i','n','i','t','y','?','_','_',EOL, + /* 44 */ p_define,'N','a','N',' ','_','_','?','Q','N','a','N','?','_','_',EOL, + /* 60 */ p_define,'Q','N','a','N',' ','_','_','?','Q','N','a','N','?','_','_',EOL, + /* 77 */ p_define,'S','N','a','N',' ','_','_','?','S','N','a','N','?','_','_',EOL, + /* 94 */ p_define,'f','l','o','a','t','8','(','x',')',' ','_','_','?','f','l','o','a','t','8','?','_','_','(','x',')',EOL, + /* 121 */ p_define,'f','l','o','a','t','1','6','(','x',')',' ','_','_','?','f','l','o','a','t','1','6','?','_','_','(','x',')',EOL, + /* 150 */ p_define,'b','f','l','o','a','t','1','6','(','x',')',' ','_','_','?','b','f','l','o','a','t','1','6','?','_','_','(','x',')',EOL, + /* 181 */ p_define,'f','l','o','a','t','3','2','(','x',')',' ','_','_','?','f','l','o','a','t','3','2','?','_','_','(','x',')',EOL, + /* 210 */ p_define,'f','l','o','a','t','6','4','(','x',')',' ','_','_','?','f','l','o','a','t','6','4','?','_','_','(','x',')',EOL, + /* 239 */ p_define,'f','l','o','a','t','8','0','m','(','x',')',' ','_','_','?','f','l','o','a','t','8','0','m','?','_','_','(','x',')',EOL, + /* 270 */ p_define,'f','l','o','a','t','8','0','e','(','x',')',' ','_','_','?','f','l','o','a','t','8','0','e','?','_','_','(','x',')',EOL, + /* 301 */ p_define,'f','l','o','a','t','1','2','8','l','(','x',')',' ','_','_','?','f','l','o','a','t','1','2','8','l','?','_','_','(','x',')',EOL, + /* 334 */ p_define,'f','l','o','a','t','1','2','8','h','(','x',')',' ','_','_','?','f','l','o','a','t','1','2','8','h','?','_','_','(','x',')',EOL, + /* 367 */ p_imacro,'b','f','1','6',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 384 */ p_rep,'%','0',EOL, + /* 388 */ 'd','w',' ','_','_','?','b','f','l','o','a','t','1','6','?','_','_','(','%','1',')',EOL, + /* 410 */ p_rotate,'1',EOL, + /* 413 */ p_endrep,EOL, + /* 415 */ p_endmacro,EOL, + /* 417 */ EOL +}; +#endif + +#if 1 +static const unsigned char nasm_usemac_ifunc[] = { + /* From ./macros/ifunc.mac */ + /* 0 */ p_define,'_','_','?','U','S','E','_','I','F','U','N','C','?','_','_',EOL, + /* 0 */ p_defalias,'_','_','U','S','E','_','I','F','U','N','C','_','_',' ','_','_','?','U','S','E','I','F','U','N','C','?','_','_',EOL, + /* 30 */ p_idefine,'i','l','o','g','2','(','x',')',' ','(','_','_','?','i','l','o','g','2','e','?','_','_','(','x',')',')',EOL, + /* 58 */ p_idefine,'i','l','o','g','2','e','(','x',')',' ','(','_','_','?','i','l','o','g','2','e','?','_','_','(','x',')',')',EOL, + /* 87 */ p_idefine,'i','l','o','g','2','w','(','x',')',' ','(','_','_','?','i','l','o','g','2','w','?','_','_','(','x',')',')',EOL, + /* 116 */ p_idefine,'i','l','o','g','2','f','w','(','x',')',' ','(','_','_','?','i','l','o','g','2','w','?','_','_','(','x',')',')',EOL, + /* 146 */ p_idefine,'i','l','o','g','2','f','(','x',')',' ','(','_','_','?','i','l','o','g','2','f','?','_','_','(','x',')',')',EOL, + /* 175 */ p_idefine,'i','l','o','g','2','c','w','(','x',')',' ','(','_','_','?','i','l','o','g','2','w','?','_','_','(','x',')',' ','*',' ','0',' ','+',' ','_','_','?','i','l','o','g','2','c','?','_','_','(','x',')',')',EOL, + /* 227 */ p_idefine,'i','l','o','g','2','c','(','x',')',' ','(','_','_','?','i','l','o','g','2','c','?','_','_','(','x',')',')',EOL, + /* 256 */ EOL +}; +#endif + +#if 1 +static const unsigned char nasm_usemac_masm[] = { + /* From ./macros/masm.mac */ + /* 0 */ p_define,'_','_','?','U','S','E','_','M','A','S','M','?','_','_',EOL, + /* 0 */ p_defalias,'_','_','U','S','E','_','M','A','S','M','_','_',' ','_','_','?','U','S','E','M','A','S','M','?','_','_',EOL, + /* 28 */ p_unimacro,'s','e','g','m','e','n','t',' ','1','+',EOL, + /* 40 */ p_imacro,'s','e','g','m','e','n','t',' ','0','-','1','+','.','n','o','l','i','s','t',EOL, + /* 61 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','g','m','e','n','t',' ','%','0','0',' ','%','1',']',EOL, + /* 90 */ '_','_','?','S','E','C','T','?','_','_',EOL, + /* 101 */ p_endmacro,EOL, + /* 103 */ p_imacro,'e','n','d','s',' ','0','+','.','n','o','l','i','s','t',EOL, + /* 119 */ p_null,'e','n','d','s',' ','%','0','0',EOL, + /* 129 */ p_endmacro,EOL, + /* 131 */ p_imacro,'p','r','o','c',' ','0','-','*','.','n','o','l','i','s','t',EOL, + /* 148 */ p_rep,'%','0',EOL, + /* 152 */ p_ifidni,'%','1',',','f','a','r',EOL, + /* 160 */ p_idefine,'r','e','t',' ','r','e','t','f',EOL, + /* 170 */ p_else,EOL, + /* 172 */ p_idefine,'r','e','t',' ','r','e','t','n',EOL, + /* 182 */ p_endif,EOL, + /* 184 */ p_rotate,'1',EOL, + /* 187 */ p_endrep,EOL, + /* 189 */ p_endmacro,EOL, + /* 191 */ p_imacro,'e','n','d','p',' ','0','.','n','o','l','i','s','t',EOL, + /* 206 */ p_null,'e','n','d','p',' ','%','0','0',EOL, + /* 216 */ p_undef,'r','e','t',EOL, + /* 221 */ p_endmacro,EOL, + /* 223 */ p_idefine,'p','t','r',' ','_','_','?','m','a','s','m','_','p','t','r','?','_','_',EOL, + /* 243 */ p_idefine,'f','l','a','t',' ','_','_','?','m','a','s','m','_','f','l','a','t','?','_','_',EOL, + /* 265 */ p_idefine,'o','f','f','s','e','t',EOL, + /* 273 */ p_imacro,'e','n','d',' ','0','+','.','n','o','l','i','s','t',EOL, + /* 288 */ p_endmacro,EOL, + /* 290 */ p_idefine,'t','b','y','t','e',' ','t','w','o','r','d',EOL, + /* 303 */ 'd','e','f','a','u','l','t',' ','r','e','l',EOL, + /* 315 */ EOL +}; +#endif + +#if 1 +static const unsigned char nasm_usemac_smartalign[] = { + /* From ./macros/smartalign.mac */ + /* 0 */ p_define,'_','_','?','U','S','E','_','S','M','A','R','T','A','L','I','G','N','?','_','_',EOL, + /* 0 */ p_defalias,'_','_','U','S','E','_','S','M','A','R','T','A','L','I','G','N','_','_',' ','_','_','?','U','S','E','S','M','A','R','T','A','L','I','G','N','?','_','_',EOL, + /* 40 */ p_imacro,'a','l','i','g','n','m','o','d','e',' ','1','-','2','.','n','o','l','i','s','t',EOL, + /* 62 */ p_ifidni,'%','1',',','n','o','p',EOL, + /* 70 */ p_define,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','1','6',EOL, + /* 100 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 127 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','G','R','O','U','P','?','_','_',' ','1',EOL, + /* 154 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 181 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','G','R','O','U','P','?','_','_',' ','1',EOL, + /* 208 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 235 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','G','R','O','U','P','?','_','_',' ','1',EOL, + /* 262 */ p_elifidni,'%','1',',','g','e','n','e','r','i','c',EOL, + /* 274 */ p_define,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','8',EOL, + /* 303 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 330 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','2','B','?','_','_',' ','0','x','8','9',',','0','x','f','6',EOL, + /* 362 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','3','B','?','_','_',' ','0','x','8','d',',','0','x','7','4',',','0','x','0','0',EOL, + /* 399 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','4','B','?','_','_',' ','0','x','8','d',',','0','x','b','4',',','0','x','0','0',',','0','x','0','0',EOL, + /* 441 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','5','B','?','_','_',' ','0','x','8','d',',','0','x','b','4',',','0','x','0','0',',','0','x','0','0',',','0','x','9','0',EOL, + /* 488 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','6','B','?','_','_',' ','0','x','8','d',',','0','x','b','4',',','0','x','0','0',',','0','x','0','0',',','0','x','8','9',',','0','x','f','f',EOL, + /* 540 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','7','B','?','_','_',' ','0','x','8','d',',','0','x','b','4',',','0','x','0','0',',','0','x','0','0',',','0','x','8','d',',','0','x','7','d',',','0','x','0','0',EOL, + /* 597 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','8','B','?','_','_',' ','0','x','8','d',',','0','x','b','4',',','0','x','0','0',',','0','x','0','0',',','0','x','8','d',',','0','x','b','d',',','0','x','0','0',',','0','x','0','0',EOL, + /* 659 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','G','R','O','U','P','?','_','_',' ','8',EOL, + /* 686 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 713 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','2','B','?','_','_',' ','0','x','8','9',',','0','x','f','6',EOL, + /* 745 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','3','B','?','_','_',' ','0','x','8','d',',','0','x','7','6',',','0','x','0','0',EOL, + /* 782 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','4','B','?','_','_',' ','0','x','8','d',',','0','x','7','4',',','0','x','2','6',',','0','x','0','0',EOL, + /* 824 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','5','B','?','_','_',' ','0','x','9','0',',','0','x','8','d',',','0','x','7','4',',','0','x','2','6',',','0','x','0','0',EOL, + /* 871 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','6','B','?','_','_',' ','0','x','8','d',',','0','x','b','6',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 923 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','7','B','?','_','_',' ','0','x','8','d',',','0','x','b','4',',','0','x','2','6',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 980 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','G','R','O','U','P','?','_','_',' ','7',EOL, + /* 1007 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 1034 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 1066 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','3','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1103 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','4','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1145 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 1172 */ p_elifidni,'%','1',',','k','8',EOL, + /* 1179 */ p_define,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','1','6',EOL, + /* 1209 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 1236 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 1268 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','3','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1305 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','4','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1347 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 1374 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 1401 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 1433 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','3','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1470 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','4','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1512 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 1539 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 1566 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 1598 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','3','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1635 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','4','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1677 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 1704 */ p_elifidni,'%','1',',','k','7',EOL, + /* 1711 */ p_define,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','1','6',EOL, + /* 1741 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 1768 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 1800 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','3','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1837 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','4','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1879 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 1906 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 1933 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','2','B','?','_','_',' ','0','x','8','b',',','0','x','c','0',EOL, + /* 1965 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','3','B','?','_','_',' ','0','x','8','d',',','0','x','0','4',',','0','x','2','0',EOL, + /* 2002 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','4','B','?','_','_',' ','0','x','8','d',',','0','x','4','4',',','0','x','2','0',',','0','x','0','0',EOL, + /* 2044 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','5','B','?','_','_',' ','0','x','8','d',',','0','x','4','4',',','0','x','2','0',',','0','x','0','0',',','0','x','9','0',EOL, + /* 2091 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','6','B','?','_','_',' ','0','x','8','d',',','0','x','8','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 2143 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','7','B','?','_','_',' ','0','x','8','d',',','0','x','0','4',',','0','x','0','5',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 2200 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','G','R','O','U','P','?','_','_',' ','7',EOL, + /* 2227 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 2254 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 2286 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','3','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 2323 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','4','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 2365 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 2392 */ p_elifidni,'%','1',',','p','6',EOL, + /* 2399 */ p_define,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','1','6',EOL, + /* 2429 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 2456 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 2488 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','3','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','0','0',EOL, + /* 2525 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','4','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','4','0',',','0','x','0','0',EOL, + /* 2567 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 2594 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 2621 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 2653 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','3','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','0','0',EOL, + /* 2690 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','4','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','4','0',',','0','x','0','0',EOL, + /* 2732 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','5','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','4','4',',','0','x','0','0',',','0','x','0','0',EOL, + /* 2779 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','6','B','?','_','_',' ','0','x','6','6',',','0','x','0','f',',','0','x','1','f',',','0','x','4','4',',','0','x','0','0',',','0','x','0','0',EOL, + /* 2831 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','7','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','8','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 2888 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','8','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','8','4',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 2950 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','G','R','O','U','P','?','_','_',' ','8',EOL, + /* 2977 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 3004 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 3036 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','3','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','0','0',EOL, + /* 3073 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','4','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','4','0',',','0','x','0','0',EOL, + /* 3115 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','5','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','4','4',',','0','x','0','0',',','0','x','0','0',EOL, + /* 3162 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','6','B','?','_','_',' ','0','x','6','6',',','0','x','0','f',',','0','x','1','f',',','0','x','4','4',',','0','x','0','0',',','0','x','0','0',EOL, + /* 3214 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','7','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','8','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 3271 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','8','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','8','4',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 3333 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','G','R','O','U','P','?','_','_',' ','8',EOL, + /* 3360 */ p_else,EOL, + /* 3362 */ p_error,'u','n','k','n','o','w','n',' ','a','l','i','g','n','m','e','n','t',' ','m','o','d','e',':',' ','%','1',EOL, + /* 3390 */ p_endif,EOL, + /* 3392 */ p_ifnempty,'%','2',EOL, + /* 3396 */ p_ifidni,'%','2',',','n','o','j','m','p',EOL, + /* 3406 */ p_xdefine,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','-','1',EOL, + /* 3436 */ p_else,EOL, + /* 3438 */ p_xdefine,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','%','2',EOL, + /* 3468 */ p_endif,EOL, + /* 3470 */ p_endif,EOL, + /* 3472 */ p_xdefine,'_','_','?','A','L','I','G','N','M','O','D','E','?','_','_',' ','%','1',',','_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',EOL, + /* 3518 */ p_endmacro,EOL, + /* 3520 */ p_defalias,'_','_','A','L','I','G','N','M','O','D','E','_','_',' ','_','_','?','A','L','I','G','N','M','O','D','E','?','_','_',EOL, + /* 3551 */ p_unimacro,'a','l','i','g','n',' ','1','-','2','+','.','n','o','l','i','s','t',EOL, + /* 3570 */ p_imacro,'a','l','i','g','n',' ','1','-','2','+','.','n','o','l','i','s','t',EOL, + /* 3589 */ 's','e','c','t','a','l','i','g','n',' ','%','1',EOL, + /* 3602 */ p_ifnempty,'%','2',EOL, + /* 3606 */ 't','i','m','e','s',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',' ','%','2',EOL, + /* 3649 */ p_elif,'_','_','?','P','A','S','S','?','_','_',' ','=','=',' ','0',' ','|','|',' ','_','_','?','P','A','S','S','?','_','_',' ','=','=',' ','3',EOL, + /* 3685 */ 't','i','m','e','s',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',' ','n','o','p',EOL, + /* 3729 */ p_else,EOL, + /* 3731 */ p_push,EOL, + /* 3733 */ p_assign,'%','$','p','a','d',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',EOL, + /* 3774 */ p_if,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','!','=',' ','-','1',' ','&','&',' ','%','$','p','a','d',' ','>',' ','_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',EOL, + /* 3844 */ 'j','m','p',' ','%','$','e','n','d',EOL, + /* 3854 */ 't','i','m','e','s',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',' ','n','o','p',EOL, + /* 3898 */ p_else,EOL, + /* 3900 */ 't','i','m','e','s',' ','(','%','$','p','a','d',' ','/',' ','_','_','?','A','L','I','G','N','_','%','[','_','_','?','B','I','T','S','?','_','_',']','B','I','T','_','G','R','O','U','P','?','_','_',')',' ','d','b',' ','_','_','?','A','L','I','G','N','_','%','[','_','_','?','B','I','T','S','?','_','_',']','B','I','T','_','%','[','_','_','?','A','L','I','G','N','_','%','[','_','_','?','B','I','T','S','?','_','_',']','B','I','T','_','G','R','O','U','P','?','_','_',']','B','?','_','_',EOL, + /* 4022 */ p_assign,'%','$','p','a','d',' ','%','$','p','a','d',' ','%',' ','_','_','?','A','L','I','G','N','_','%','[','_','_','?','B','I','T','S','?','_','_',']','B','I','T','_','G','R','O','U','P','?','_','_',EOL, + /* 4072 */ p_if,'%','$','p','a','d',' ','>',' ','0',EOL, + /* 4083 */ 'd','b',' ','_','_','?','A','L','I','G','N','_','%','[','_','_','?','B','I','T','S','?','_','_',']','B','I','T','_','%','[','%','$','p','a','d',']','B','?','_','_',EOL, + /* 4125 */ p_endif,EOL, + /* 4127 */ p_endif,EOL, + /* 4129 */ '%','$','e','n','d',':',EOL, + /* 4136 */ p_pop,EOL, + /* 4138 */ p_endif,EOL, + /* 4140 */ p_endmacro,EOL, + /* 4142 */ 'a','l','i','g','n','m','o','d','e',' ','g','e','n','e','r','i','c',EOL, + /* 4160 */ EOL +}; +#endif + +#if 1 +const unsigned char nasm_stdmac_tasm[] = { + /* From ./macros/standard.mac */ + /* 0 */ p_idefine,'I','D','E','A','L',EOL, + /* 7 */ p_idefine,'J','U','M','P','S',EOL, + /* 14 */ p_idefine,'P','3','8','6',EOL, + /* 20 */ p_idefine,'P','4','8','6',EOL, + /* 26 */ p_idefine,'P','5','8','6',EOL, + /* 32 */ p_idefine,'E','N','D',EOL, + /* 37 */ EOL +}; +#endif + +#if 1 +const unsigned char nasm_stdmac_nasm[] = { + /* From ./macros/standard.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',EOL, + /* 12 */ p_defalias,'_','_','S','E','C','T','_','_',' ','_','_','?','S','E','C','T','?','_','_',EOL, + /* 33 */ p_imacro,'s','e','c','t','i','o','n',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 52 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','%','1',']',EOL, + /* 77 */ '_','_','?','S','E','C','T','?','_','_',EOL, + /* 88 */ p_endmacro,EOL, + /* 90 */ p_imacro,'s','e','g','m','e','n','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 109 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','g','m','e','n','t',' ','%','1',']',EOL, + /* 134 */ '_','_','?','S','E','C','T','?','_','_',EOL, + /* 145 */ p_endmacro,EOL, + /* 147 */ p_define,'_','_','?','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','?','_','_',' ','1',EOL, + /* 188 */ p_imacro,'s','e','c','t','a','l','i','g','n',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 209 */ p_ifidni,'%','1',',','o','f','f',EOL, + /* 217 */ p_define,'_','_','?','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','?','_','_',' ','0',EOL, + /* 258 */ p_elifidni,'%','1',',','o','n',EOL, + /* 265 */ p_define,'_','_','?','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','?','_','_',' ','1',EOL, + /* 306 */ p_else,EOL, + /* 308 */ '[','s','e','c','t','a','l','i','g','n',' ','%','1',']',EOL, + /* 323 */ p_endif,EOL, + /* 325 */ p_endmacro,EOL, + /* 327 */ p_defalias,'_','_','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','_','_',' ','_','_','?','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','?','_','_',EOL, + /* 402 */ p_imacro,'a','b','s','o','l','u','t','e',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 422 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','a','b','s','o','l','u','t','e',' ','%','1',']',EOL, + /* 448 */ '_','_','?','S','E','C','T','?','_','_',EOL, + /* 459 */ p_endmacro,EOL, + /* 461 */ p_imacro,'s','t','r','u','c',' ','1','-','2','.','n','o','l','i','s','t',' ','0',EOL, + /* 481 */ p_push,EOL, + /* 483 */ p_define,'%','$','s','t','r','u','c','n','a','m','e',' ','%','1',EOL, + /* 499 */ '[','a','b','s','o','l','u','t','e',' ','%','2',']',EOL, + /* 513 */ '%','$','s','t','r','u','c','n','a','m','e',':',EOL, + /* 526 */ p_endmacro,EOL, + /* 528 */ p_imacro,'e','n','d','s','t','r','u','c',' ','0','.','n','o','l','i','s','t',EOL, + /* 547 */ '%','{','$','s','t','r','u','c','n','a','m','e','}','_','s','i','z','e',' ','e','q','u',' ','(','$','-','%','$','s','t','r','u','c','n','a','m','e',')',EOL, + /* 586 */ p_pop,EOL, + /* 588 */ '_','_','?','S','E','C','T','?','_','_',EOL, + /* 599 */ p_endmacro,EOL, + /* 601 */ p_imacro,'i','s','t','r','u','c',' ','1','.','n','o','l','i','s','t',EOL, + /* 618 */ p_push,EOL, + /* 620 */ p_define,'%','$','s','t','r','u','c','n','a','m','e',' ','%','1',EOL, + /* 636 */ '%','$','s','t','r','u','c','s','t','a','r','t',':',EOL, + /* 650 */ p_endmacro,EOL, + /* 652 */ p_imacro,'a','t',' ','1','-','2','+','.','n','o','l','i','s','t',EOL, + /* 668 */ p_defstr,'%','$','m','e','m','b','e','r',' ','%','1',EOL, + /* 681 */ p_substr,'%','$','m','e','m','b','e','r','1',' ','%','$','m','e','m','b','e','r',' ','1',EOL, + /* 703 */ p_ifidn,'%','$','m','e','m','b','e','r','1',',',' ','\'','.','\'',EOL, + /* 719 */ 't','i','m','e','s',' ','(','%','$','s','t','r','u','c','n','a','m','e','%','1','-','%','$','s','t','r','u','c','n','a','m','e',')','-','(','$','-','%','$','s','t','r','u','c','s','t','a','r','t',')',' ','d','b',' ','0',EOL, + /* 775 */ p_else,EOL, + /* 777 */ 't','i','m','e','s',' ','(','%','1','-','%','$','s','t','r','u','c','n','a','m','e',')','-','(','$','-','%','$','s','t','r','u','c','s','t','a','r','t',')',' ','d','b',' ','0',EOL, + /* 822 */ p_endif,EOL, + /* 824 */ '%','2',EOL, + /* 827 */ p_endmacro,EOL, + /* 829 */ p_imacro,'i','e','n','d',' ','0','.','n','o','l','i','s','t',EOL, + /* 844 */ 't','i','m','e','s',' ','%','{','$','s','t','r','u','c','n','a','m','e','}','_','s','i','z','e','-','(','$','-','%','$','s','t','r','u','c','s','t','a','r','t',')',' ','d','b',' ','0',EOL, + /* 891 */ p_pop,EOL, + /* 893 */ p_endmacro,EOL, + /* 895 */ p_imacro,'a','l','i','g','n',' ','1','-','2','+','.','n','o','l','i','s','t',' ','n','o','p',EOL, + /* 918 */ p_if,'_','_','?','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','?','_','_',EOL, + /* 957 */ 's','e','c','t','a','l','i','g','n',' ','%','1',EOL, + /* 970 */ p_endif,EOL, + /* 972 */ 't','i','m','e','s',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',' ','%','2',EOL, + /* 1015 */ p_endmacro,EOL, + /* 1017 */ p_imacro,'a','l','i','g','n','b',' ','1','-','2','+','.','n','o','l','i','s','t',EOL, + /* 1037 */ p_if,'_','_','?','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','?','_','_',EOL, + /* 1076 */ 's','e','c','t','a','l','i','g','n',' ','%','1',EOL, + /* 1089 */ p_endif,EOL, + /* 1091 */ p_ifempty,'%','2',EOL, + /* 1095 */ '[','w','a','r','n','i','n','g',' ','p','u','s','h',']',EOL, + /* 1110 */ '[','w','a','r','n','i','n','g',' ','-','z','e','r','o','i','n','g',']',EOL, + /* 1129 */ 'r','e','s','b',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',EOL, + /* 1168 */ '[','w','a','r','n','i','n','g',' ','p','o','p',']',EOL, + /* 1182 */ p_else,EOL, + /* 1184 */ 't','i','m','e','s',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',' ','%','2',EOL, + /* 1227 */ p_endif,EOL, + /* 1229 */ p_endmacro,EOL, + /* 1231 */ p_imacro,'b','i','t','s',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 1247 */ '[','b','i','t','s',' ','%','1',']',EOL, + /* 1257 */ p_endmacro,EOL, + /* 1259 */ p_imacro,'u','s','e','1','6',' ','0','.','n','o','l','i','s','t',EOL, + /* 1275 */ '[','b','i','t','s',' ','1','6',']',EOL, + /* 1285 */ p_endmacro,EOL, + /* 1287 */ p_imacro,'u','s','e','3','2',' ','0','.','n','o','l','i','s','t',EOL, + /* 1303 */ '[','b','i','t','s',' ','3','2',']',EOL, + /* 1313 */ p_endmacro,EOL, + /* 1315 */ p_imacro,'u','s','e','6','4',' ','0','.','n','o','l','i','s','t',EOL, + /* 1331 */ '[','b','i','t','s',' ','6','4',']',EOL, + /* 1341 */ p_endmacro,EOL, + /* 1343 */ p_imacro,'e','x','t','e','r','n',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 1362 */ p_rep,'%','0',EOL, + /* 1366 */ '[','e','x','t','e','r','n',' ','%','1',']',EOL, + /* 1378 */ p_rotate,'1',EOL, + /* 1381 */ p_endrep,EOL, + /* 1383 */ p_endmacro,EOL, + /* 1385 */ p_imacro,'s','t','a','t','i','c',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 1404 */ p_rep,'%','0',EOL, + /* 1408 */ '[','s','t','a','t','i','c',' ','%','1',']',EOL, + /* 1420 */ p_rotate,'1',EOL, + /* 1423 */ p_endrep,EOL, + /* 1425 */ p_endmacro,EOL, + /* 1427 */ p_imacro,'g','l','o','b','a','l',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 1446 */ p_rep,'%','0',EOL, + /* 1450 */ '[','g','l','o','b','a','l',' ','%','1',']',EOL, + /* 1462 */ p_rotate,'1',EOL, + /* 1465 */ p_endrep,EOL, + /* 1467 */ p_endmacro,EOL, + /* 1469 */ p_imacro,'r','e','q','u','i','r','e','d',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 1490 */ p_rep,'%','0',EOL, + /* 1494 */ '[','r','e','q','u','i','r','e','d',' ','%','1',']',EOL, + /* 1508 */ p_rotate,'1',EOL, + /* 1511 */ p_endrep,EOL, + /* 1513 */ p_endmacro,EOL, + /* 1515 */ p_imacro,'c','o','m','m','o','n',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 1534 */ p_rep,'%','0',EOL, + /* 1538 */ '[','c','o','m','m','o','n',' ','%','1',']',EOL, + /* 1550 */ p_rotate,'1',EOL, + /* 1553 */ p_endrep,EOL, + /* 1555 */ p_endmacro,EOL, + /* 1557 */ p_imacro,'c','p','u',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 1572 */ '[','c','p','u',' ','%','1',']',EOL, + /* 1581 */ p_endmacro,EOL, + /* 1583 */ p_define,'_','_','?','F','L','O','A','T','_','D','A','Z','?','_','_',' ','n','o','d','a','z',EOL, + /* 1606 */ p_define,'_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',' ','n','e','a','r',EOL, + /* 1630 */ p_define,'_','_','?','F','L','O','A','T','?','_','_',' ','_','_','?','F','L','O','A','T','_','D','A','Z','?','_','_',',','_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',EOL, + /* 1677 */ p_defalias,'_','_','F','L','O','A','T','_','D','A','Z','_','_',' ','_','_','?','F','L','O','A','T','_','D','A','Z','?','_','_',EOL, + /* 1708 */ p_defalias,'_','_','F','L','O','A','T','_','R','O','U','N','D','_','_',' ','_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',EOL, + /* 1743 */ p_defalias,'_','_','F','L','O','A','T','_','_',' ','_','_','?','F','L','O','A','T','?','_','_',EOL, + /* 1766 */ p_imacro,'f','l','o','a','t',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 1784 */ p_rep,'%','0',EOL, + /* 1788 */ '[','f','l','o','a','t',' ','%','1',']',EOL, + /* 1799 */ p_ifidni,'%','1',',','d','a','z',EOL, + /* 1807 */ p_define,'_','_','?','F','L','O','A','T','_','D','A','Z','?','_','_',' ','d','a','z',EOL, + /* 1828 */ p_elifidni,'%','1',',','n','o','d','a','z',EOL, + /* 1838 */ p_define,'_','_','?','F','L','O','A','T','_','D','A','Z','?','_','_',' ','n','o','d','a','z',EOL, + /* 1861 */ p_elifidni,'%','1',',','n','e','a','r',EOL, + /* 1870 */ p_define,'_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',' ','n','e','a','r',EOL, + /* 1894 */ p_elifidni,'%','1',',','u','p',EOL, + /* 1901 */ p_define,'_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',' ','u','p',EOL, + /* 1923 */ p_elifidni,'%','1',',','d','o','w','n',EOL, + /* 1932 */ p_define,'_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',' ','d','o','w','n',EOL, + /* 1956 */ p_elifidni,'%','1',',','z','e','r','o',EOL, + /* 1965 */ p_define,'_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',' ','z','e','r','o',EOL, + /* 1989 */ p_elifidni,'%','1',',','d','e','f','a','u','l','t',EOL, + /* 2001 */ p_define,'_','_','?','F','L','O','A','T','_','D','A','Z','?','_','_',' ','n','o','d','a','z',EOL, + /* 2024 */ p_define,'_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',' ','n','e','a','r',EOL, + /* 2048 */ p_endif,EOL, + /* 2050 */ p_rotate,'1',EOL, + /* 2053 */ p_endrep,EOL, + /* 2055 */ p_endmacro,EOL, + /* 2057 */ p_imacro,'d','e','f','a','u','l','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 2076 */ '[','d','e','f','a','u','l','t',' ','%','1',']',EOL, + /* 2089 */ p_endmacro,EOL, + /* 2091 */ p_imacro,'u','s','e','r','e','l',' ','0','.','n','o','l','i','s','t',EOL, + /* 2108 */ '[','d','e','f','a','u','l','t',' ','r','e','l',']',EOL, + /* 2122 */ p_endmacro,EOL, + /* 2124 */ p_imacro,'u','s','e','a','b','s',' ','0','.','n','o','l','i','s','t',EOL, + /* 2141 */ '[','d','e','f','a','u','l','t',' ','a','b','s',']',EOL, + /* 2155 */ p_endmacro,EOL, + /* 2157 */ p_imacro,'u','s','e','b','n','d',' ','0','.','n','o','l','i','s','t',EOL, + /* 2174 */ '[','d','e','f','a','u','l','t',' ','b','n','d',']',EOL, + /* 2188 */ p_endmacro,EOL, + /* 2190 */ p_imacro,'u','s','e','n','o','b','n','d',' ','0','.','n','o','l','i','s','t',EOL, + /* 2209 */ '[','d','e','f','a','u','l','t',' ','n','o','b','n','d',']',EOL, + /* 2225 */ p_endmacro,EOL, + /* 2227 */ p_imacro,'i','n','c','b','i','n',' ','1','-','2','+','.','n','o','l','i','s','t',' ','0',EOL, + /* 2249 */ p_push,EOL, + /* 2251 */ p_pathsearch,'%','$','d','e','p',' ','%','1',EOL, + /* 2261 */ p_depend,'%','$','d','e','p',EOL, + /* 2268 */ '%','?',' ','%','$','d','e','p',',','%','2',EOL, + /* 2280 */ p_pop,EOL, + /* 2282 */ p_endmacro,EOL, + /* 2284 */ p_defalias,'_','_','N','A','S','M','_','M','A','J','O','R','_','_',' ','_','_','?','N','A','S','M','_','M','A','J','O','R','?','_','_',EOL, + /* 2317 */ p_defalias,'_','_','N','A','S','M','_','M','I','N','O','R','_','_',' ','_','_','?','N','A','S','M','_','M','I','N','O','R','?','_','_',EOL, + /* 2350 */ p_defalias,'_','_','N','A','S','M','_','S','U','B','M','I','N','O','R','_','_',' ','_','_','?','N','A','S','M','_','S','U','B','M','I','N','O','R','?','_','_',EOL, + /* 2389 */ p_defalias,'_','_','N','A','S','M','_','P','A','T','C','H','L','E','V','E','L','_','_',' ','_','_','?','N','A','S','M','_','P','A','T','C','H','L','E','V','E','L','?','_','_',EOL, + /* 2432 */ p_defalias,'_','_','N','A','S','M','_','S','N','A','P','S','H','O','T','_','_',' ','_','_','?','N','A','S','M','_','S','N','A','P','S','H','O','T','?','_','_',EOL, + /* 2471 */ p_defalias,'_','_','N','A','S','M','_','V','E','R','S','I','O','N','_','I','D','_','_',' ','_','_','?','N','A','S','M','_','V','E','R','S','I','O','N','_','I','D','?','_','_',EOL, + /* 2514 */ p_defalias,'_','_','N','A','S','M','_','V','E','R','_','_',' ','_','_','?','N','A','S','M','_','V','E','R','?','_','_',EOL, + /* 2543 */ p_defalias,'_','_','O','U','T','P','U','T','_','F','O','R','M','A','T','_','_',' ','_','_','?','O','U','T','P','U','T','_','F','O','R','M','A','T','?','_','_',EOL, + /* 2582 */ p_defalias,'_','_','D','E','B','U','G','_','F','O','R','M','A','T','_','_',' ','_','_','?','D','E','B','U','G','_','F','O','R','M','A','T','?','_','_',EOL, + /* 2619 */ p_defalias,'_','_','D','A','T','E','_','_',' ','_','_','?','D','A','T','E','?','_','_',EOL, + /* 2640 */ p_defalias,'_','_','D','A','T','E','_','N','U','M','_','_',' ','_','_','?','D','A','T','E','_','N','U','M','?','_','_',EOL, + /* 2669 */ p_defalias,'_','_','T','I','M','E','_','_',' ','_','_','?','T','I','M','E','?','_','_',EOL, + /* 2690 */ p_defalias,'_','_','T','I','M','E','_','N','U','M','_','_',' ','_','_','?','T','I','M','E','_','N','U','M','?','_','_',EOL, + /* 2719 */ p_defalias,'_','_','U','T','C','_','D','A','T','E','_','_',' ','_','_','?','U','T','C','_','D','A','T','E','?','_','_',EOL, + /* 2748 */ p_defalias,'_','_','U','T','C','_','D','A','T','E','_','N','U','M','_','_',' ','_','_','?','U','T','C','_','D','A','T','E','_','N','U','M','?','_','_',EOL, + /* 2785 */ p_defalias,'_','_','U','T','C','_','T','I','M','E','_','_',' ','_','_','?','U','T','C','_','T','I','M','E','?','_','_',EOL, + /* 2814 */ p_defalias,'_','_','U','T','C','_','T','I','M','E','_','N','U','M','_','_',' ','_','_','?','U','T','C','_','T','I','M','E','_','N','U','M','?','_','_',EOL, + /* 2851 */ p_defalias,'_','_','P','O','S','I','X','_','T','I','M','E','_','_',' ','_','_','?','P','O','S','I','X','_','T','I','M','E','?','_','_',EOL, + /* 2884 */ p_defalias,'_','_','F','I','L','E','_','_',' ','_','_','?','F','I','L','E','?','_','_',EOL, + /* 2905 */ p_defalias,'_','_','L','I','N','E','_','_',' ','_','_','?','L','I','N','E','?','_','_',EOL, + /* 2926 */ p_defalias,'_','_','B','I','T','S','_','_',' ','_','_','?','B','I','T','S','?','_','_',EOL, + /* 2947 */ p_defalias,'_','_','P','T','R','_','_',' ','_','_','?','P','T','R','?','_','_',EOL, + /* 2966 */ p_defalias,'_','_','P','A','S','S','_','_',' ','_','_','?','P','A','S','S','?','_','_',EOL, + /* 2987 */ p_idefine,'_','_','?','i','n','f','i','n','i','t','y','?','_','_',' ','%','?',EOL, + /* 3006 */ p_idefine,'_','_','?','n','a','n','?','_','_',' ','%','?',EOL, + /* 3020 */ p_idefine,'_','_','?','q','n','a','n','?','_','_',' ','%','?',EOL, + /* 3035 */ p_idefine,'_','_','?','s','n','a','n','?','_','_',' ','%','?',EOL, + /* 3050 */ p_idefine,'_','_','?','f','l','o','a','t','8','?','_','_',' ','%','?',EOL, + /* 3067 */ p_idefine,'_','_','?','f','l','o','a','t','1','6','?','_','_',' ','%','?',EOL, + /* 3085 */ p_idefine,'_','_','?','f','l','o','a','t','3','2','?','_','_',' ','%','?',EOL, + /* 3103 */ p_idefine,'_','_','?','f','l','o','a','t','6','4','?','_','_',' ','%','?',EOL, + /* 3121 */ p_idefine,'_','_','?','f','l','o','a','t','8','0','m','?','_','_',' ','%','?',EOL, + /* 3140 */ p_idefine,'_','_','?','f','l','o','a','t','8','0','e','?','_','_',' ','%','?',EOL, + /* 3159 */ p_idefine,'_','_','?','f','l','o','a','t','1','2','8','l','?','_','_',' ','%','?',EOL, + /* 3179 */ p_idefine,'_','_','?','f','l','o','a','t','1','2','8','h','?','_','_',' ','%','?',EOL, + /* 3199 */ p_idefine,'_','_','?','u','t','f','1','6','?','_','_',' ','%','?',EOL, + /* 3215 */ p_idefine,'_','_','?','u','t','f','1','6','l','e','?','_','_',' ','%','?',EOL, + /* 3233 */ p_idefine,'_','_','?','u','t','f','1','6','b','e','?','_','_',' ','%','?',EOL, + /* 3251 */ p_idefine,'_','_','?','u','t','f','3','2','?','_','_',' ','%','?',EOL, + /* 3267 */ p_idefine,'_','_','?','u','t','f','3','2','l','e','?','_','_',' ','%','?',EOL, + /* 3285 */ p_idefine,'_','_','?','u','t','f','3','2','b','e','?','_','_',' ','%','?',EOL, + /* 3303 */ p_idefine,'_','_','?','i','l','o','g','2','e','?','_','_',' ','%','?',EOL, + /* 3320 */ p_idefine,'_','_','?','i','l','o','g','2','w','?','_','_',' ','%','?',EOL, + /* 3337 */ p_idefine,'_','_','?','i','l','o','g','2','f','?','_','_',' ','%','?',EOL, + /* 3354 */ p_idefine,'_','_','?','i','l','o','g','2','c','?','_','_',' ','%','?',EOL, + /* 3371 */ p_idefalias,'_','_','i','n','f','i','n','i','t','y','_','_',' ','_','_','?','i','n','f','i','n','i','t','y','?','_','_',EOL, + /* 3400 */ p_idefalias,'_','_','n','a','n','_','_',' ','_','_','?','n','a','n','?','_','_',EOL, + /* 3419 */ p_idefalias,'_','_','q','n','a','n','_','_',' ','_','_','?','q','n','a','n','?','_','_',EOL, + /* 3440 */ p_idefalias,'_','_','s','n','a','n','_','_',' ','_','_','?','s','n','a','n','?','_','_',EOL, + /* 3461 */ p_idefalias,'_','_','f','l','o','a','t','8','_','_',' ','_','_','?','f','l','o','a','t','8','?','_','_',EOL, + /* 3486 */ p_idefalias,'_','_','f','l','o','a','t','1','6','_','_',' ','_','_','?','f','l','o','a','t','1','6','?','_','_',EOL, + /* 3513 */ p_idefalias,'_','_','f','l','o','a','t','3','2','_','_',' ','_','_','?','f','l','o','a','t','3','2','?','_','_',EOL, + /* 3540 */ p_idefalias,'_','_','f','l','o','a','t','6','4','_','_',' ','_','_','?','f','l','o','a','t','6','4','?','_','_',EOL, + /* 3567 */ p_idefalias,'_','_','f','l','o','a','t','8','0','m','_','_',' ','_','_','?','f','l','o','a','t','8','0','m','?','_','_',EOL, + /* 3596 */ p_idefalias,'_','_','f','l','o','a','t','8','0','e','_','_',' ','_','_','?','f','l','o','a','t','8','0','e','?','_','_',EOL, + /* 3625 */ p_idefalias,'_','_','f','l','o','a','t','1','2','8','l','_','_',' ','_','_','?','f','l','o','a','t','1','2','8','l','?','_','_',EOL, + /* 3656 */ p_idefalias,'_','_','f','l','o','a','t','1','2','8','h','_','_',' ','_','_','?','f','l','o','a','t','1','2','8','h','?','_','_',EOL, + /* 3687 */ p_idefalias,'_','_','u','t','f','1','6','_','_',' ','_','_','?','u','t','f','1','6','?','_','_',EOL, + /* 3710 */ p_idefalias,'_','_','u','t','f','1','6','l','e','_','_',' ','_','_','?','u','t','f','1','6','l','e','?','_','_',EOL, + /* 3737 */ p_idefalias,'_','_','u','t','f','1','6','b','e','_','_',' ','_','_','?','u','t','f','1','6','b','e','?','_','_',EOL, + /* 3764 */ p_idefalias,'_','_','u','t','f','3','2','_','_',' ','_','_','?','u','t','f','3','2','?','_','_',EOL, + /* 3787 */ p_idefalias,'_','_','u','t','f','3','2','l','e','_','_',' ','_','_','?','u','t','f','3','2','l','e','?','_','_',EOL, + /* 3814 */ p_idefalias,'_','_','u','t','f','3','2','b','e','_','_',' ','_','_','?','u','t','f','3','2','b','e','?','_','_',EOL, + /* 3841 */ p_idefalias,'_','_','i','l','o','g','2','e','_','_',' ','_','_','?','i','l','o','g','2','e','?','_','_',EOL, + /* 3866 */ p_idefalias,'_','_','i','l','o','g','2','w','_','_',' ','_','_','?','i','l','o','g','2','w','?','_','_',EOL, + /* 3891 */ p_idefalias,'_','_','i','l','o','g','2','f','_','_',' ','_','_','?','i','l','o','g','2','f','?','_','_',EOL, + /* 3916 */ p_idefalias,'_','_','i','l','o','g','2','c','_','_',' ','_','_','?','i','l','o','g','2','c','?','_','_',EOL, + /* 3941 */ EOL +}; +#endif + +#if defined(OF_AOUT) || defined(OF_AOUTB) +const unsigned char aout_stdmac[] = { + /* From ./output/outaout.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 48 */ p_endmacro,EOL, + /* 50 */ EOL +}; +#endif + +#if defined(OF_AS86) +const unsigned char as86_stdmac[] = { + /* From ./output/outas86.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 48 */ p_endmacro,EOL, + /* 50 */ EOL +}; +#endif + +#if defined(OF_BIN) +const unsigned char bin_stdmac[] = { + /* From ./output/outbin.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_imacro,'o','r','g',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 43 */ '[','o','r','g',' ','%','1',']',EOL, + /* 52 */ p_endmacro,EOL, + /* 54 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 74 */ p_endmacro,EOL, + /* 76 */ EOL +}; +#endif + +#if defined(OF_COFF) || defined(OF_WIN32) || defined(OF_WIN64) +const unsigned char coff_stdmac[] = { + /* From ./output/outcoff.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 48 */ p_endmacro,EOL, + /* 50 */ p_imacro,'e','x','p','o','r','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 68 */ '[','e','x','p','o','r','t',' ','%','1',']',EOL, + /* 80 */ p_endmacro,EOL, + /* 82 */ p_imacro,'s','a','f','e','s','e','h',' ','1','.','n','o','l','i','s','t',EOL, + /* 100 */ '[','s','a','f','e','s','e','h',' ','%','1',']',EOL, + /* 113 */ p_endmacro,EOL, + /* 115 */ EOL +}; +#endif + +#if defined(OF_DBG) +const unsigned char dbg_stdmac[] = { + /* From ./output/outdbg.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_imacro,'g','r','o','u','p',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 45 */ '[','g','r','o','u','p',' ','%','1',']',EOL, + /* 56 */ p_endmacro,EOL, + /* 58 */ p_imacro,'u','p','p','e','r','c','a','s','e',' ','0','+','.','n','o','l','i','s','t',EOL, + /* 79 */ p_pragma,'d','b','g',' ','u','p','p','e','r','c','a','s','e',' ','%','1',EOL, + /* 97 */ p_endmacro,EOL, + /* 99 */ p_imacro,'e','x','p','o','r','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 117 */ p_pragma,'d','b','g',' ','e','x','p','o','r','t',' ','%','1',EOL, + /* 132 */ p_endmacro,EOL, + /* 134 */ p_imacro,'i','m','p','o','r','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 152 */ p_pragma,'d','b','g',' ','i','m','p','o','r','t',' ','%','1',EOL, + /* 167 */ p_endmacro,EOL, + /* 169 */ p_imacro,'o','r','g',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 184 */ p_pragma,'d','b','g',' ','o','r','g',' ','%','1',EOL, + /* 196 */ p_endmacro,EOL, + /* 198 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 218 */ p_endmacro,EOL, + /* 220 */ EOL +}; +#endif + +#if defined(OF_ELF) || defined(OF_ELF32) || defined(OF_ELF64) +const unsigned char elf_stdmac[] = { + /* From ./output/outelf.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 48 */ p_define,'$','_','%','1',' ','$','%','1',EOL, + /* 58 */ p_endmacro,EOL, + /* 60 */ p_imacro,'o','s','a','b','i',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 77 */ '[','%','?',' ','%','1',']',EOL, + /* 85 */ p_endmacro,EOL, + /* 87 */ EOL +}; +#endif + +#if defined(OF_MACHO) || defined(OF_MACHO32) || defined(OF_MACHO64) +const unsigned char macho_stdmac[] = { + /* From ./output/outmacho.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 48 */ p_endmacro,EOL, + /* 50 */ p_imacro,'s','u','b','s','e','c','t','i','o','n','s','_','v','i','a','_','s','y','m','b','o','l','s',' ','0','.','n','o','l','i','s','t',EOL, + /* 84 */ p_pragma,'_','_','?','O','U','T','P','U','T','_','F','O','R','M','A','T','?','_','_',' ','%','?',EOL, + /* 108 */ p_endmacro,EOL, + /* 110 */ p_imacro,'n','o','_','d','e','a','d','_','s','t','r','i','p',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 136 */ p_rep,'%','0',EOL, + /* 140 */ p_pragma,'_','_','?','O','U','T','P','U','T','_','F','O','R','M','A','T','?','_','_',' ','%','?',' ','%','1',EOL, + /* 167 */ p_rotate,'1',EOL, + /* 170 */ p_endrep,EOL, + /* 172 */ p_endmacro,EOL, + /* 174 */ EOL +}; +#endif + +#if defined(OF_OBJ) +const unsigned char obj_stdmac[] = { + /* From ./output/outobj.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_imacro,'g','r','o','u','p',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 45 */ '[','g','r','o','u','p',' ','%','1',']',EOL, + /* 56 */ p_endmacro,EOL, + /* 58 */ p_imacro,'u','p','p','e','r','c','a','s','e',' ','0','+','.','n','o','l','i','s','t',EOL, + /* 79 */ '[','u','p','p','e','r','c','a','s','e',' ','%','1',']',EOL, + /* 94 */ p_endmacro,EOL, + /* 96 */ p_imacro,'e','x','p','o','r','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 114 */ '[','e','x','p','o','r','t',' ','%','1',']',EOL, + /* 126 */ p_endmacro,EOL, + /* 128 */ p_imacro,'i','m','p','o','r','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 146 */ '[','i','m','p','o','r','t',' ','%','1',']',EOL, + /* 158 */ p_endmacro,EOL, + /* 160 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 180 */ p_endmacro,EOL, + /* 182 */ EOL +}; +#endif +const int use_package_count = 5; + +const struct use_package *nasm_find_use_package(const char *name) +{ + static const struct use_package packages[5] = { + { "altreg", nasm_usemac_altreg, 0 }, + { "fp", nasm_usemac_fp, 1 }, + { "ifunc", nasm_usemac_ifunc, 2 }, + { "masm", nasm_usemac_masm, 3 }, + { "smartalign", nasm_usemac_smartalign, 4 }, + }; +#define INVALID_HASH_ENTRY (65535/3) + static const int16_t hashdata[16] = { + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2, + 0, + INVALID_HASH_ENTRY, + 3, + 0, + 1, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 4, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + }; + uint32_t k1, k2; + uint64_t crc; + uint16_t ix; + + crc = crc64i(UINT64_C(0x076259c3e291c26c), name); + k1 = ((uint32_t)crc & 0xe) + 0; + k2 = ((uint32_t)(crc >> 32) & 0xe) + 1; + + ix = hashdata[k1] + hashdata[k2]; + if (ix >= 5) + return NULL; + + if (nasm_stricmp(packages[ix].package, name)) + return NULL; + + return &packages[ix]; +} diff --git a/vere/ext/nasm/macros/macros.pl b/vere/ext/nasm/macros/macros.pl new file mode 100755 index 0000000..03a6486 --- /dev/null +++ b/vere/ext/nasm/macros/macros.pl @@ -0,0 +1,311 @@ +#!/usr/bin/perl +## -------------------------------------------------------------------------- +## +## Copyright 1996-2009 The NASM Authors - All Rights Reserved +## See the file AUTHORS included with the NASM distribution for +## the specific copyright holders. +## +## 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. +## +## -------------------------------------------------------------------------- + +# +# macros.pl produce macros.c from standard.mac +# + +require 'phash.ph'; +require 'asm/pptok.ph'; + +use bytes; + +my $fname; +my $line = 0; +my $index = 0; +my $tasm_count = 0; +my @pname; + +# Default names for various bytes +for (my $o = 0; $o < 256; $o++) { + my $c = chr($o); + if ($o < 32 || $o > 126) { + $pname[$o] = sprintf("%d", $o); + } elsif ($c =~ /^[\'\"\\]$/) { + $pname[$o] = "\'\\".$c."\'"; + } else { + $pname[$o] = "\'".$c."\'"; + } +} + +# +# Print out a string as a character array +# +sub charcify(@) { + my $l = ''; + my ($c, $o); + my $space = 1; + my $quote = 0; + + foreach $o (unpack("C*", join('',@_))) { + $c = pack("C", $o); + if ($quote) { + if ($o == $quote) { + $quote = 0; + } + } elsif ($c =~ /^[\'\"\`]$/) { + $quote = $o; + } else { + if ($c eq ' ') { + next if ($space); + $o = 32; + $c = ' '; + $space = 1; + } elsif ($o < 32 || $o > 126) { + $space = 1; # Implicit space after compacted directive + } else { + $space = 0; + } + } + $l .= $pname[$o]; + $l .= ','; + } + return $l; +} + + +# +# Generate macros.c +# +open(OUT, '>', 'macros/macros.c') or die "unable to open macros.c\n"; + +print OUT "/*\n"; +print OUT " * Do not edit - this file auto-generated by macros.pl from:\n"; +print OUT " * ", join("\n * ", @ARGV), "\n"; +print OUT " */\n"; +print OUT "\n"; +print OUT "#include \"tables.h\"\n"; +print OUT "#include \"nasmlib.h\"\n"; +print OUT "#include \"hashtbl.h\"\n"; +print OUT "#include \"outform.h\"\n"; +print OUT "\n"; + +my $name = undef; +my $npkg = 0; +my @pkg_list = (); +my %pkg_number = (); +my $pkg; +my @out_list = (); +my @std_list = (); +my $outfmt; +my $lastname; +my $z; + +my @pptok_list = sort { $pptok_hash{$a} <=> $pptok_hash{$b} } keys %pptok_hash; +my %pnum; + +foreach my $pt (@pptok_list) { + my $n = $pptok_hash{$pt}; + if ($pt !~ /[A-Z]/ && $n < 256-96) { + $n = ($n+128) & 255; + (my $et = $pt) =~ s/^\%/p_/; + printf OUT "#define %-24s %3d\n", $et, $n; + $pnum{$pt} = $n; + $pname[$n] = $et; + } +} +printf OUT "#define %-24s %3d\n\n", 'EOL', 127; + +foreach $args ( @ARGV ) { + my @file_list = glob ( $args ); + foreach $fname ( @file_list ) { + open(INPUT,'<', $fname) or die "$0: $fname: $!\n"; + while () { + $line++; + chomp; + while (/^(.*)\\$/) { + $_ = $1; + $_ .= ; + chomp; + $line++; + } + s/^\s*(([^\'\"\;]|\"[^\"]*\"|\'[^\']*\')*?)\s*(\;.*)?$/$1/; + s/\s+/ /g; + next if ($_ eq ''); + + if (m/^OUT:\s*(\S.*)$/) { + undef $pkg; + my @out_alias = split(/\s+/, $1); + if (defined($name)) { + printf OUT " /* %4d */ EOL\n", $index++; + print OUT "};\n#endif\n"; + undef $name; + } + $index = 0; + print OUT "\n"; + my $pfx = '#if'; + foreach my $al (@out_alias) { + print OUT $pfx, " defined(OF_\U${al}\E)"; + $pfx = ' ||'; + } + $name = $out_alias[0] . '_stdmac'; + print OUT "\nconst unsigned char ${name}[] = {\n"; + print OUT " /* From $fname */\n"; + $lastname = $fname; + } elsif (m/^STD:\s*(\S+)$/) { + undef $pkg; + my $std = $1; + if (defined($name)) { + printf OUT " /* %4d */ EOL\n", $index++; + print OUT "};\n#endif\n"; + undef $name; + } + $index = 0; + print OUT "\n#if 1"; + $name = 'nasm_stdmac_' . $std; + print OUT "\nconst unsigned char ${name}[] = {\n"; + print OUT " /* From $fname */\n"; + $lastname = $fname; + } elsif (m/^USE:\s*(\S+)$/) { + $pkg = $1; + if (defined($pkg_number{$pkg})) { + die "$0: $fname: duplicate package: $pkg\n"; + } + if (defined($name)) { + printf OUT " /* %4d */ EOL\n", $index++; + print OUT "};\n#endif\n"; + undef $name; + } + $index = 0; + print OUT "\n#if 1"; + $name = 'nasm_usemac_' . $pkg; + print OUT "\nstatic const unsigned char ${name}[] = {\n"; + print OUT " /* From $fname */\n"; + $lastname = $fname; + push(@pkg_list, $pkg); + $pkg_number{$pkg} = $npkg++; + $z = pack("C", $pnum{'%define'})."__?USE_\U$pkg\E?__"; + printf OUT " /* %4d */ %sEOL,\n", $index, charcify($z); + $z = pack("C", $pnum{'%defalias'})."__USE_\U$pkg\E__ __?USE\U$pkg\E?__"; + printf OUT " /* %4d */ %sEOL,\n", $index, charcify($z); + $index += length($z)+1; + } else { + my($s1, $s2, $pd, $ws); + + if (!defined($name)) { + die "$0: $fname: macro declarations outside a known block\n"; + } + + $s1 = $_; + $s2 = ''; + while ($s1 =~ /(\%[a-zA-Z_][a-zA-Z0-9_]*)((\s+)(.*)|)$/) { + $s2 .= "$'"; + $pd = $1; + $ws = $3; + $s1 = $4; + if (defined($pnum{$pd})) { + $s2 .= pack("C", $pnum{$pd}); + } else { + $s2 .= $pd.$ws; + } + } + $s2 .= $s1; + if (length($s2) > 0) { + if ($lastname ne $fname) { + print OUT "\n /* From $fname */\n"; + $lastname = $fname; + } + printf OUT " /* %4d */ %sEOL,\n", + $index, charcify($s2); + $index += length($s2)+1; + } + } + } + close(INPUT); + } +} + +if (defined($name)) { + printf OUT " /* %4d */ EOL\n", $index++; + print OUT "};\n#endif\n"; + undef $name; +} + +my @hashinfo = gen_perfect_hash(\%pkg_number); +if (!@hashinfo) { + die "$0: no hash found\n"; +} +# Paranoia... +verify_hash_table(\%pkg_number, \@hashinfo); +my ($n, $sv, $g) = @hashinfo; +die if ($n & ($n-1)); +$n <<= 1; + +printf OUT "const int use_package_count = %d;\n\n", $npkg; + +print OUT "const struct use_package *nasm_find_use_package(const char *name)\n"; +print OUT "{\n"; +print OUT " static const struct use_package packages[$npkg] = {\n"; +my $ix = 0; +foreach $pkg (@pkg_list) { + printf OUT " { \"%s\", nasm_usemac_%s, %d },\n", + $pkg, $pkg, $ix++; +} +print OUT " };\n"; + +# Put a large value in unused slots. This makes it extremely unlikely +# that any combination that involves unused slot will pass the range test. +# This speeds up rejection of unrecognized tokens, i.e. identifiers. +print OUT "#define INVALID_HASH_ENTRY (65535/3)\n"; + +print OUT " static const int16_t hashdata[$n] = {\n"; +for ($i = 0; $i < $n; $i++) { + my $h = ${$g}[$i]; + print OUT " ", defined($h) ? $h : 'INVALID_HASH_ENTRY', ",\n"; +} +print OUT " };\n"; + +print OUT " uint32_t k1, k2;\n"; +print OUT " uint64_t crc;\n"; +# For correct overflow behavior, "ix" should be unsigned of the same +# width as the hash arrays. +print OUT " uint16_t ix;\n"; +print OUT "\n"; + +printf OUT " crc = crc64i(UINT64_C(0x%08x%08x), name);\n", + $$sv[0], $$sv[1]; +printf OUT " k1 = ((uint32_t)crc & 0x%x) + 0;\n", $n-2; +printf OUT " k2 = ((uint32_t)(crc >> 32) & 0x%x) + 1;\n", $n-2; +print OUT "\n"; +printf OUT " ix = hashdata[k1] + hashdata[k2];\n"; +printf OUT " if (ix >= %d)\n", scalar(@pkg_list); +print OUT " return NULL;\n"; +print OUT "\n"; +print OUT " if (nasm_stricmp(packages[ix].package, name))\n"; +print OUT " return NULL;\n"; +print OUT "\n"; +print OUT " return &packages[ix];\n"; +print OUT "}\n"; + +close(OUT); diff --git a/vere/ext/nasm/macros/masm.mac b/vere/ext/nasm/macros/masm.mac new file mode 100644 index 0000000..f476364 --- /dev/null +++ b/vere/ext/nasm/macros/masm.mac @@ -0,0 +1,82 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 2019 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +;; +;; masm.mac +;; +;; Very limited MASM compatibility package; intended to be used +;; primarily with machine-generated code. It does not include any +;; "programmer friendly" shortcuts, nor does it in any way support +;; ASSUME, symbol typing, or MASM-style structures. +;; + +USE: masm + +%unimacro segment 1+ + +%imacro segment 0-1+.nolist + %define __?SECT?__ [segment %00 %1] + __?SECT?__ +%endmacro + +%imacro ends 0+.nolist + %null ends %00 +%endmacro + +%imacro proc 0-*.nolist + %rep %0 + %ifidni %1,far + %idefine ret retf + %else + %idefine ret retn + %endif + %rotate 1 + %endrep +%endmacro + +%imacro endp 0.nolist + %null endp %00 + %undef ret +%endmacro + +%idefine ptr __?masm_ptr?__ +%idefine flat __?masm_flat?__ ; is %idefine really correct here? +%idefine offset + +%imacro end 0+.nolist + ; Nothing +%endmacro + +%idefine tbyte tword + + default rel diff --git a/vere/ext/nasm/macros/smartalign.mac b/vere/ext/nasm/macros/smartalign.mac new file mode 100644 index 0000000..abd496e --- /dev/null +++ b/vere/ext/nasm/macros/smartalign.mac @@ -0,0 +1,191 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2017 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +; +; Smart alignment macros +; +USE: smartalign + +%imacro alignmode 1-2.nolist + %ifidni %1,nop + %define __?ALIGN_JMP_THRESHOLD?__ 16 + + %define __?ALIGN_16BIT_1B?__ 0x90 + %define __?ALIGN_16BIT_GROUP?__ 1 + + %define __?ALIGN_32BIT_1B?__ 0x90 + %define __?ALIGN_32BIT_GROUP?__ 1 + + %define __?ALIGN_64BIT_1B?__ 0x90 + %define __?ALIGN_64BIT_GROUP?__ 1 + %elifidni %1,generic + %define __?ALIGN_JMP_THRESHOLD?__ 8 + + %define __?ALIGN_16BIT_1B?__ 0x90 + %define __?ALIGN_16BIT_2B?__ 0x89,0xf6 + %define __?ALIGN_16BIT_3B?__ 0x8d,0x74,0x00 + %define __?ALIGN_16BIT_4B?__ 0x8d,0xb4,0x00,0x00 + %define __?ALIGN_16BIT_5B?__ 0x8d,0xb4,0x00,0x00,0x90 + %define __?ALIGN_16BIT_6B?__ 0x8d,0xb4,0x00,0x00,0x89,0xff + %define __?ALIGN_16BIT_7B?__ 0x8d,0xb4,0x00,0x00,0x8d,0x7d,0x00 + %define __?ALIGN_16BIT_8B?__ 0x8d,0xb4,0x00,0x00,0x8d,0xbd,0x00,0x00 + %define __?ALIGN_16BIT_GROUP?__ 8 + + %define __?ALIGN_32BIT_1B?__ 0x90 + %define __?ALIGN_32BIT_2B?__ 0x89,0xf6 + %define __?ALIGN_32BIT_3B?__ 0x8d,0x76,0x00 + %define __?ALIGN_32BIT_4B?__ 0x8d,0x74,0x26,0x00 + %define __?ALIGN_32BIT_5B?__ 0x90,0x8d,0x74,0x26,0x00 + %define __?ALIGN_32BIT_6B?__ 0x8d,0xb6,0x00,0x00,0x00,0x00 + %define __?ALIGN_32BIT_7B?__ 0x8d,0xb4,0x26,0x00,0x00,0x00,0x00 + %define __?ALIGN_32BIT_GROUP?__ 7 + + %define __?ALIGN_64BIT_1B?__ 0x90 + %define __?ALIGN_64BIT_2B?__ 0x66,0x90 + %define __?ALIGN_64BIT_3B?__ 0x66,0x66,0x90 + %define __?ALIGN_64BIT_4B?__ 0x66,0x66,0x66,0x90 + %define __?ALIGN_64BIT_GROUP?__ 4 + %elifidni %1,k8 + %define __?ALIGN_JMP_THRESHOLD?__ 16 + + %define __?ALIGN_16BIT_1B?__ 0x90 + %define __?ALIGN_16BIT_2B?__ 0x66,0x90 + %define __?ALIGN_16BIT_3B?__ 0x66,0x66,0x90 + %define __?ALIGN_16BIT_4B?__ 0x66,0x66,0x66,0x90 + %define __?ALIGN_16BIT_GROUP?__ 4 + + %define __?ALIGN_32BIT_1B?__ 0x90 + %define __?ALIGN_32BIT_2B?__ 0x66,0x90 + %define __?ALIGN_32BIT_3B?__ 0x66,0x66,0x90 + %define __?ALIGN_32BIT_4B?__ 0x66,0x66,0x66,0x90 + %define __?ALIGN_32BIT_GROUP?__ 4 + + %define __?ALIGN_64BIT_1B?__ 0x90 + %define __?ALIGN_64BIT_2B?__ 0x66,0x90 + %define __?ALIGN_64BIT_3B?__ 0x66,0x66,0x90 + %define __?ALIGN_64BIT_4B?__ 0x66,0x66,0x66,0x90 + %define __?ALIGN_64BIT_GROUP?__ 4 + %elifidni %1,k7 + %define __?ALIGN_JMP_THRESHOLD?__ 16 + + %define __?ALIGN_16BIT_1B?__ 0x90 + %define __?ALIGN_16BIT_2B?__ 0x66,0x90 + %define __?ALIGN_16BIT_3B?__ 0x66,0x66,0x90 + %define __?ALIGN_16BIT_4B?__ 0x66,0x66,0x66,0x90 + %define __?ALIGN_64BIT_GROUP?__ 4 + + %define __?ALIGN_32BIT_1B?__ 0x90 + %define __?ALIGN_32BIT_2B?__ 0x8b,0xc0 + %define __?ALIGN_32BIT_3B?__ 0x8d,0x04,0x20 + %define __?ALIGN_32BIT_4B?__ 0x8d,0x44,0x20,0x00 + %define __?ALIGN_32BIT_5B?__ 0x8d,0x44,0x20,0x00,0x90 + %define __?ALIGN_32BIT_6B?__ 0x8d,0x80,0x00,0x00,0x00,0x00 + %define __?ALIGN_32BIT_7B?__ 0x8d,0x04,0x05,0x00,0x00,0x00,0x00 + %define __?ALIGN_32BIT_GROUP?__ 7 + + %define __?ALIGN_64BIT_1B?__ 0x90 + %define __?ALIGN_64BIT_2B?__ 0x66,0x90 + %define __?ALIGN_64BIT_3B?__ 0x66,0x66,0x90 + %define __?ALIGN_64BIT_4B?__ 0x66,0x66,0x66,0x90 + %define __?ALIGN_64BIT_GROUP?__ 4 + %elifidni %1,p6 + %define __?ALIGN_JMP_THRESHOLD?__ 16 + + %define __?ALIGN_16BIT_1B?__ 0x90 + %define __?ALIGN_16BIT_2B?__ 0x66,0x90 + %define __?ALIGN_16BIT_3B?__ 0x0f,0x1f,0x00 + %define __?ALIGN_16BIT_4B?__ 0x0f,0x1f,0x40,0x00 + %define __?ALIGN_16BIT_GROUP?__ 4 + + %define __?ALIGN_32BIT_1B?__ 0x90 + %define __?ALIGN_32BIT_2B?__ 0x66,0x90 + %define __?ALIGN_32BIT_3B?__ 0x0f,0x1f,0x00 + %define __?ALIGN_32BIT_4B?__ 0x0f,0x1f,0x40,0x00 + %define __?ALIGN_32BIT_5B?__ 0x0f,0x1f,0x44,0x00,0x00 + %define __?ALIGN_32BIT_6B?__ 0x66,0x0f,0x1f,0x44,0x00,0x00 + %define __?ALIGN_32BIT_7B?__ 0x0f,0x1f,0x80,0x00,0x00,0x00,0x00 + %define __?ALIGN_32BIT_8B?__ 0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 + %define __?ALIGN_32BIT_GROUP?__ 8 + + %define __?ALIGN_64BIT_1B?__ 0x90 + %define __?ALIGN_64BIT_2B?__ 0x66,0x90 + %define __?ALIGN_64BIT_3B?__ 0x0f,0x1f,0x00 + %define __?ALIGN_64BIT_4B?__ 0x0f,0x1f,0x40,0x00 + %define __?ALIGN_64BIT_5B?__ 0x0f,0x1f,0x44,0x00,0x00 + %define __?ALIGN_64BIT_6B?__ 0x66,0x0f,0x1f,0x44,0x00,0x00 + %define __?ALIGN_64BIT_7B?__ 0x0f,0x1f,0x80,0x00,0x00,0x00,0x00 + %define __?ALIGN_64BIT_8B?__ 0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 + %define __?ALIGN_64BIT_GROUP?__ 8 + %else + %error unknown alignment mode: %1 + %endif + %ifnempty %2 + %ifidni %2,nojmp + %xdefine __?ALIGN_JMP_THRESHOLD?__ -1 + %else + %xdefine __?ALIGN_JMP_THRESHOLD?__ %2 + %endif + %endif + %xdefine __?ALIGNMODE?__ %1,__?ALIGN_JMP_THRESHOLD?__ +%endmacro + +%defalias __ALIGNMODE__ __?ALIGNMODE?__ + +%unimacro align 1-2+.nolist +%imacro align 1-2+.nolist + sectalign %1 ; align a segment as well + %ifnempty %2 + times (((%1) - (($-$$) % (%1))) % (%1)) %2 + %elif __?PASS?__ == 0 || __?PASS?__ == 3 + times (((%1) - (($-$$) % (%1))) % (%1)) nop + %else + %push + %assign %$pad (((%1) - (($-$$) % (%1))) % (%1)) + %if __?ALIGN_JMP_THRESHOLD?__ != -1 && %$pad > __?ALIGN_JMP_THRESHOLD?__ + jmp %$end + ; We can't re-use %$pad here as $ will have changed! + times (((%1) - (($-$$) % (%1))) % (%1)) nop + %else + times (%$pad / __?ALIGN_%[__?BITS?__]BIT_GROUP?__) \ + db __?ALIGN_%[__?BITS?__]BIT_%[__?ALIGN_%[__?BITS?__]BIT_GROUP?__]B?__ + %assign %$pad %$pad % __?ALIGN_%[__?BITS?__]BIT_GROUP?__ + %if %$pad > 0 + db __?ALIGN_%[__?BITS?__]BIT_%[%$pad]B?__ + %endif + %endif +%$end: + %pop + %endif +%endmacro + + alignmode generic diff --git a/vere/ext/nasm/macros/standard.mac b/vere/ext/nasm/macros/standard.mac new file mode 100644 index 0000000..3d875e3 --- /dev/null +++ b/vere/ext/nasm/macros/standard.mac @@ -0,0 +1,331 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2019 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +; Standard macro set for NASM -*- nasm -*- + +; Macros to make NASM ignore some TASM directives +STD: tasm + %idefine IDEAL + %idefine JUMPS + %idefine P386 + %idefine P486 + %idefine P586 + %idefine END + +; The normal standard macros +STD: nasm + +; Note that although some user-level forms of directives are defined +; here, not all of them are: the user-level form of a format-specific +; directive should be defined in the module for that directive. + +%define __?SECT?__ ; it ought to be defined, even if as nothing +%defalias __SECT__ __?SECT?__ + +%imacro section 1+.nolist + %define __?SECT?__ [section %1] + __?SECT?__ +%endmacro + +%imacro segment 1+.nolist + %define __?SECT?__ [segment %1] + __?SECT?__ +%endmacro + +%define __?SECTALIGN_ALIGN_UPDATES_SECTION?__ 1 +%imacro sectalign 1+.nolist + %ifidni %1,off + %define __?SECTALIGN_ALIGN_UPDATES_SECTION?__ 0 + %elifidni %1,on + %define __?SECTALIGN_ALIGN_UPDATES_SECTION?__ 1 + %else + [sectalign %1] + %endif +%endmacro +%defalias __SECTALIGN_ALIGN_UPDATES_SECTION__ __?SECTALIGN_ALIGN_UPDATES_SECTION?__ + +%imacro absolute 1+.nolist + %define __?SECT?__ [absolute %1] + __?SECT?__ +%endmacro + +%imacro struc 1-2.nolist 0 + %push + %define %$strucname %1 + [absolute %2] + %$strucname: ; allow definition of `.member' to work sanely +%endmacro + +%imacro endstruc 0.nolist + %{$strucname}_size equ ($-%$strucname) + %pop + __?SECT?__ +%endmacro + +%imacro istruc 1.nolist + %push + %define %$strucname %1 + %$strucstart: +%endmacro + +%imacro at 1-2+.nolist + %defstr %$member %1 + %substr %$member1 %$member 1 + %ifidn %$member1, '.' + times (%$strucname%1-%$strucname)-($-%$strucstart) db 0 + %else + times (%1-%$strucname)-($-%$strucstart) db 0 + %endif + %2 +%endmacro + +%imacro iend 0.nolist + times %{$strucname}_size-($-%$strucstart) db 0 + %pop +%endmacro + +%imacro align 1-2+.nolist nop + %if __?SECTALIGN_ALIGN_UPDATES_SECTION?__ + sectalign %1 + %endif + times (((%1) - (($-$$) % (%1))) % (%1)) %2 +%endmacro + +%imacro alignb 1-2+.nolist + %if __?SECTALIGN_ALIGN_UPDATES_SECTION?__ + sectalign %1 + %endif + %ifempty %2 + [warning push] + [warning -zeroing] + resb (((%1) - (($-$$) % (%1))) % (%1)) + [warning pop] + %else + times (((%1) - (($-$$) % (%1))) % (%1)) %2 + %endif +%endmacro + +%imacro bits 1+.nolist + [bits %1] +%endmacro + +%imacro use16 0.nolist + [bits 16] +%endmacro + +%imacro use32 0.nolist + [bits 32] +%endmacro + +%imacro use64 0.nolist + [bits 64] +%endmacro + +%imacro extern 1-*.nolist + %rep %0 + [extern %1] + %rotate 1 + %endrep +%endmacro + +%imacro static 1-*.nolist + %rep %0 + [static %1] + %rotate 1 + %endrep +%endmacro + +%imacro global 1-*.nolist + %rep %0 + [global %1] + %rotate 1 + %endrep +%endmacro + +%imacro required 1-*.nolist + %rep %0 + [required %1] + %rotate 1 + %endrep +%endmacro + +%imacro common 1-*.nolist + %rep %0 + [common %1] + %rotate 1 + %endrep +%endmacro + +%imacro cpu 1+.nolist + [cpu %1] +%endmacro + +%define __?FLOAT_DAZ?__ nodaz +%define __?FLOAT_ROUND?__ near +; __?FLOAT?__ contains the whole floating-point configuration so it can +; be saved and restored +%define __?FLOAT?__ __?FLOAT_DAZ?__,__?FLOAT_ROUND?__ + +%defalias __FLOAT_DAZ__ __?FLOAT_DAZ?__ +%defalias __FLOAT_ROUND__ __?FLOAT_ROUND?__ +%defalias __FLOAT__ __?FLOAT?__ + +%imacro float 1-*.nolist + %rep %0 + [float %1] + %ifidni %1,daz + %define __?FLOAT_DAZ?__ daz + %elifidni %1,nodaz + %define __?FLOAT_DAZ?__ nodaz + %elifidni %1,near + %define __?FLOAT_ROUND?__ near + %elifidni %1,up + %define __?FLOAT_ROUND?__ up + %elifidni %1,down + %define __?FLOAT_ROUND?__ down + %elifidni %1,zero + %define __?FLOAT_ROUND?__ zero + %elifidni %1,default + %define __?FLOAT_DAZ?__ nodaz + %define __?FLOAT_ROUND?__ near + %endif + %rotate 1 + %endrep +%endmacro + +%imacro default 1+.nolist + [default %1] +%endmacro + +%imacro userel 0.nolist + [default rel] +%endmacro +%imacro useabs 0.nolist + [default abs] +%endmacro +%imacro usebnd 0.nolist + [default bnd] +%endmacro +%imacro usenobnd 0.nolist + [default nobnd] +%endmacro + +%imacro incbin 1-2+.nolist 0 + %push + %pathsearch %$dep %1 + %depend %$dep + %? %$dep,%2 + %pop +%endmacro + +; Compatibility macro aliases +%defalias __NASM_MAJOR__ __?NASM_MAJOR?__ +%defalias __NASM_MINOR__ __?NASM_MINOR?__ +%defalias __NASM_SUBMINOR__ __?NASM_SUBMINOR?__ +%defalias __NASM_PATCHLEVEL__ __?NASM_PATCHLEVEL?__ +%defalias __NASM_SNAPSHOT__ __?NASM_SNAPSHOT?__ +%defalias __NASM_VERSION_ID__ __?NASM_VERSION_ID?__ +%defalias __NASM_VER__ __?NASM_VER?__ + +%defalias __OUTPUT_FORMAT__ __?OUTPUT_FORMAT?__ +%defalias __DEBUG_FORMAT__ __?DEBUG_FORMAT?__ + +%defalias __DATE__ __?DATE?__ +%defalias __DATE_NUM__ __?DATE_NUM?__ +%defalias __TIME__ __?TIME?__ +%defalias __TIME_NUM__ __?TIME_NUM?__ +%defalias __UTC_DATE__ __?UTC_DATE?__ +%defalias __UTC_DATE_NUM__ __?UTC_DATE_NUM?__ +%defalias __UTC_TIME__ __?UTC_TIME?__ +%defalias __UTC_TIME_NUM__ __?UTC_TIME_NUM?__ +%defalias __POSIX_TIME__ __?POSIX_TIME?__ + +%defalias __FILE__ __?FILE?__ +%defalias __LINE__ __?LINE?__ +%defalias __BITS__ __?BITS?__ +%defalias __PTR__ __?PTR?__ +%defalias __PASS__ __?PASS?__ + +; Backwards compatibility aliases for tokens. The extra level of indirection here +; means %aliases on|off will do the right thing for these as well. +%idefine __?infinity?__ %? +%idefine __?nan?__ %? +%idefine __?qnan?__ %? +%idefine __?snan?__ %? + +%idefine __?float8?__ %? +%idefine __?float16?__ %? +%idefine __?float32?__ %? +%idefine __?float64?__ %? +%idefine __?float80m?__ %? +%idefine __?float80e?__ %? +%idefine __?float128l?__ %? +%idefine __?float128h?__ %? + +%idefine __?utf16?__ %? +%idefine __?utf16le?__ %? +%idefine __?utf16be?__ %? +%idefine __?utf32?__ %? +%idefine __?utf32le?__ %? +%idefine __?utf32be?__ %? + +%idefine __?ilog2e?__ %? +%idefine __?ilog2w?__ %? +%idefine __?ilog2f?__ %? +%idefine __?ilog2c?__ %? + +%idefalias __infinity__ __?infinity?__ +%idefalias __nan__ __?nan?__ +%idefalias __qnan__ __?qnan?__ +%idefalias __snan__ __?snan?__ + +%idefalias __float8__ __?float8?__ +%idefalias __float16__ __?float16?__ +%idefalias __float32__ __?float32?__ +%idefalias __float64__ __?float64?__ +%idefalias __float80m__ __?float80m?__ +%idefalias __float80e__ __?float80e?__ +%idefalias __float128l__ __?float128l?__ +%idefalias __float128h__ __?float128h?__ + +%idefalias __utf16__ __?utf16?__ +%idefalias __utf16le__ __?utf16le?__ +%idefalias __utf16be__ __?utf16be?__ +%idefalias __utf32__ __?utf32?__ +%idefalias __utf32le__ __?utf32le?__ +%idefalias __utf32be__ __?utf32be?__ + +%idefalias __ilog2e__ __?ilog2e?__ +%idefalias __ilog2w__ __?ilog2w?__ +%idefalias __ilog2f__ __?ilog2f?__ +%idefalias __ilog2c__ __?ilog2c?__ diff --git a/vere/ext/nasm/misc/Doxyfile b/vere/ext/nasm/misc/Doxyfile new file mode 100644 index 0000000..d3bd8d2 --- /dev/null +++ b/vere/ext/nasm/misc/Doxyfile @@ -0,0 +1,752 @@ +# Doxyfile 1.2.5 + +# This file describes the settings to be used by doxygen for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "NASM - the Netwide Assembler" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 0.98 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doxy + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, +# Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian, +# Polish, Portuguese and Slovene. + +OUTPUT_LANGUAGE = English + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these class will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a class diagram (in Html and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. + +CLASS_DIAGRAMS = YES + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower case letters. If set to YES upper case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# The ENABLE_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consist of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. +# For instance some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = . + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +FILE_PATTERNS = *.c *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse. + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript and frames is required (for instance Netscape 4.0+ +# or Internet explorer 4.0+). + +GENERATE_TREEVIEW = YES + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = YES + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using a WORD or other. +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = YES + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tagfiles. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other +# documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented header file showing +# the documented files that directly or indirectly include this file + +INCLUDED_BY_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO + +# The CGI_NAME tag should be the name of the CGI script that +# starts the search engine (doxysearch) with the correct parameters. +# A script with this name will be generated by doxygen. + +CGI_NAME = search.cgi + +# The CGI_URL tag should be the absolute URL to the directory where the +# cgi binaries are located. See the documentation of your http daemon for +# details. + +CGI_URL = + +# The DOC_URL tag should be the absolute URL to the directory where the +# documentation is located. If left blank the absolute path to the +# documentation, with file:// prepended to it, will be used. + +DOC_URL = + +# The DOC_ABSPATH tag should be the absolute path to the directory where the +# documentation is located. If left blank the directory on the local machine +# will be used. + +DOC_ABSPATH = + +# The BIN_ABSPATH tag must point to the directory where the doxysearch binary +# is installed. + +BIN_ABSPATH = /usr/local/bin/ + +# The EXT_DOC_PATHS tag can be used to specify one or more paths to +# documentation generated for other projects. This allows doxysearch to search +# the documentation for these projects as well. + +EXT_DOC_PATHS = diff --git a/vere/ext/nasm/misc/Nindent b/vere/ext/nasm/misc/Nindent new file mode 100755 index 0000000..a6c806c --- /dev/null +++ b/vere/ext/nasm/misc/Nindent @@ -0,0 +1,18 @@ +#!/bin/sh +PARAM="-npro -kr -i8 -ts8 -sob -l80 -ss -ncs -cp1" +RES=`indent --version` +V1=`echo $RES | cut -d' ' -f3 | cut -d'.' -f1` +V2=`echo $RES | cut -d' ' -f3 | cut -d'.' -f2` +V3=`echo $RES | cut -d' ' -f3 | cut -d'.' -f3` +if [ $V1 -gt 2 ]; then + PARAM="$PARAM -il0" +elif [ $V1 -eq 2 ]; then + if [ $V2 -gt 2 ]; then + PARAM="$PARAM -il0"; + elif [ $V2 -eq 2 ]; then + if [ $V3 -ge 10 ]; then + PARAM="$PARAM -il0" + fi + fi +fi +exec indent $PARAM "$@" diff --git a/vere/ext/nasm/misc/README b/vere/ext/nasm/misc/README new file mode 100644 index 0000000..f39ba4d --- /dev/null +++ b/vere/ext/nasm/misc/README @@ -0,0 +1,2 @@ +There are various helpful bits and pieces for NASM, +including but not limited to Simon photograph =) diff --git a/vere/ext/nasm/misc/c16.mac b/vere/ext/nasm/misc/c16.mac new file mode 100644 index 0000000..50b5d5e --- /dev/null +++ b/vere/ext/nasm/misc/c16.mac @@ -0,0 +1,82 @@ +; NASM macro set to make interfacing to 16-bit programs easier -*- nasm -*- + + + +%imacro proc 1 ; begin a procedure definition + +%push proc + + global %1 + +%1: push bp + + mov bp,sp + +%ifdef FARCODE PASCAL ; arguments may start at bp+4 or bp+6 + +%assign %$arg 6 + +%define %$firstarg 6 + +%else + +%assign %$arg 4 + +%define %$firstarg 4 + +%endif + +%define %$procname %1 + +%endmacro + + + +%imacro arg 0-1 2 ; used with the argument name as a label + +%00 equ %$arg + + ; we could possibly be adding some + + ; debug information at this point...? + +%assign %$arg %1+%$arg + +%endmacro + + + +%imacro endproc 0 + +%ifnctx proc + +%error Mismatched `endproc'/`proc' + +%else + + mov sp,bp + + pop bp + +%ifdef PASCAL + + retf %$arg - %$firstarg + +%elifdef FARCODE + + retf + +%else + + retn + +%endif + +__end_%$procname: ; useful for calculating function size + +%pop + +%endif + +%endmacro + diff --git a/vere/ext/nasm/misc/c32.mac b/vere/ext/nasm/misc/c32.mac new file mode 100644 index 0000000..f0c116b --- /dev/null +++ b/vere/ext/nasm/misc/c32.mac @@ -0,0 +1,52 @@ +; NASM macro set to make interfacing to 32-bit programs easier -*- nasm -*- + + + +%imacro proc 1 ; begin a procedure definition + +%push proc + + global %1 + +%1: push ebp + + mov ebp,esp + +%assign %$arg 8 + +%define %$procname %1 + +%endmacro + + + +%imacro arg 0-1 4 ; used with the argument name as a label + +%00 equ %$arg + +%assign %$arg %1+%$arg + +%endmacro + + + +%imacro endproc 0 + +%ifnctx proc + +%error Mismatched `endproc'/`proc' + +%else + + leave + + ret + +__end_%$procname: ; useful for calculating function size + +%pop + +%endif + +%endmacro + diff --git a/vere/ext/nasm/misc/crcgen.c b/vere/ext/nasm/misc/crcgen.c new file mode 100644 index 0000000..f11e252 --- /dev/null +++ b/vere/ext/nasm/misc/crcgen.c @@ -0,0 +1,44 @@ +#include +#include + +int main(int argc, char *argv[]) +{ + /* Polynomial in bit-reversed notation */ + uint64_t poly; + uint64_t crctab[256], v; + int i, j; + + poly = strtoumax(argv[1], NULL, 0); + + printf("/* C */\n"); + printf("static const uint64_t crc64_tab[256] = {\n"); + for (i = 0; i < 256; i++) { + v = i; + for (j = 0; j < 8; j++) + v = (v >> 1) ^ ((v & 1) ? poly : 0); + crctab[i] = v; + } + + for (i = 0; i < 256; i += 2) { + printf(" /* %02x */ UINT64_C(0x%016"PRIx64"), " + "UINT64_C(0x%016"PRIx64")%s\n", + i, crctab[i], crctab[i+1], (i == 254) ? "" : ","); + } + printf("};\n\n"); + + printf("# perl\n"); + printf("@crc64_tab = (\n"); + for (i = 0; i < 256; i += 2) { + printf(" [0x%08"PRIx32", 0x%08"PRIx32"], " + "[0x%08"PRIx32", 0x%08"PRIx32"]%-1s # %02x\n", + (uint32_t)(crctab[i] >> 32), + (uint32_t)(crctab[i]), + (uint32_t)(crctab[i+1] >> 32), + (uint32_t)(crctab[i+1]), + (i == 254) ? "" : ",", + i); + } + printf(");\n"); + + return 0; +} diff --git a/vere/ext/nasm/misc/emacstbl.pl b/vere/ext/nasm/misc/emacstbl.pl new file mode 100755 index 0000000..341810d --- /dev/null +++ b/vere/ext/nasm/misc/emacstbl.pl @@ -0,0 +1,215 @@ +#!/usr/bin/perl +# +# Automatically produce some tables useful for a NASM major mode +# + +use integer; +use strict; +use File::Spec; + +my($outfile, $srcdir, $objdir) = @ARGV; + +if (!defined($outfile)) { + die "Usage: $0 outfile srcdir objdir\n"; +} + +$srcdir = File::Spec->curdir() unless (defined($srcdir)); +$objdir = $srcdir unless (defined($objdir)); + +my %tokens = (); + +sub xpush($@) { + my $ref = shift @_; + + $$ref = [] unless (defined($$ref)); + return push(@$$ref, @_); +} + +# Combine some specific token types +my %override = ( 'id' => 'special', + 'float' => 'function', + 'floatize' => 'function', + 'strfunc' => 'function', + 'ifunc' => 'function', + 'insn' => 'instruction', + 'reg' => 'register', + 'seg' => 'special', + 'wrt' => 'special' ); + +sub read_tokhash_c($) { + my($tokhash_c) = @_; + + open(my $th, '<', $tokhash_c) + or die "$0:$tokhash_c: $!\n"; + + my $l; + my $tokendata = 0; + while (defined($l = <$th>)) { + if ($l =~ /\bstruct tokendata tokendata\[/) { + $tokendata = 1; + next; + } elsif (!$tokendata) { + next; + } + + last if ($l =~ /\}\;/); + + if ($l =~ /^\s*\{\s*\"(.*?)\",.*?,\s*TOKEN_(\w+),.*\}/) { + my $token = $1; + my $type = lc($2); + + if ($override{$type}) { + $type = $override{$type}; + } elsif ($token !~ /^\w/) { + $type = 'operator'; + } elsif ($token =~ /^__\?masm_.*\?__$/) { + next; + } + xpush(\$tokens{$type}, $token); + if ($token =~ /^__\?(.*)\?__$/) { + # Also encode the "user" (macro) form without __?...?__ + xpush(\$tokens{$type}, $1); + } + } + } + close($th); +} + +sub read_pptok_c($) { + my($pptok_c) = @_; + + open(my $pt, '<', $pptok_c) + or die "$0:$pptok_c: $!\n"; + + my $l; + my $pp_dir = 0; + + while (defined($l = <$pt>)) { + if ($l =~ /\bpp_directives\[/) { + $pp_dir = 1; + next; + } elsif (!$pp_dir) { + next; + } + + last if ($l =~ /\}\;/); + + if ($l =~ /^\s*\"(.*?)\"/) { + xpush(\$tokens{'pp-directive'}, $1); + } + } + close($pt); +} + +sub read_directiv_dat($) { + my($directiv_dat) = @_; + + open(my $dd, '<', $directiv_dat) + or die "$0:$directiv_dat: $!\n"; + + my $l; + my $directiv = 0; + + while (defined($l = <$dd>)) { + if ($l =~ /^\; ---.*?(pragma)?/) { + $directiv = ($1 ne 'pragma'); + next; + } elsif (!$directiv) { + next; + } + + if ($l =~ /^\s*(\w+)/) { + xpush(\$tokens{'directive'}, $1); + } + } + + close($dd); +} + +my $version; +sub read_version($) { + my($vfile) = @_; + open(my $v, '<', $vfile) + or die "$0:$vfile: $!\n"; + + $version = <$v>; + chomp $version; + + close($v); +} + +sub make_lines($$@) { + my $maxline = shift @_; + my $indent = shift @_; + + # The first line isn't explicitly indented and the last line + # doesn't end in "\n"; assumed the surrounding formatter wants + # do control that + my $linepos = 0; + my $linewidth = $maxline - $indent; + + my $line = ''; + my @lines = (); + + foreach my $w (@_) { + my $l = length($w); + + if ($linepos > 0 && $linepos+$l+1 >= $linewidth) { + $line .= "\n" . (' ' x $indent); + push(@lines, $line); + $linepos = 0; + $line = ''; + } + if ($linepos > 0) { + $line .= ' '; + $linepos++; + } + $line .= $w; + $linepos += $l; + } + + if ($linepos > 0) { + push(@lines, $line); + } + + return @lines; +} + +sub quote_for_emacs(@) { + return map { s/[\\\"\']/\\$1/g; '"'.$_.'"' } @_; +} + +sub write_output($) { + my($outfile) = @_; + + open(my $out, '>', $outfile) + or die "$0:$outfile: $!\n"; + + my($vol,$dir,$file) = File::Spec->splitpath($outfile); + + print $out ";;; ${file} --- lists of NASM assembler tokens\n"; + print $out ";;;\n"; + print $out ";;; This file contains list of tokens from the NASM x86\n"; + print $out ";;; assembler, automatically extracted from NASM ${version}.\n"; + print $out ";;;\n"; + print $out ";;; This file is intended to be (require)d from a `nasm-mode\'\n"; + print $out ";;; major mode definition.\n"; + + foreach my $type (sort keys(%tokens)) { + print $out "\n(defconst nasm-${type}\n"; + print $out " \'("; + + print $out make_lines(78, 4, quote_for_emacs(sort @{$tokens{$type}})); + print $out ")\n"; + print $out " \"NASM ${version} ${type} tokens for `nasm-mode\'.\")\n"; + } + + close($out); +} + +read_tokhash_c(File::Spec->catfile($objdir, 'asm', 'tokhash.c')); +read_pptok_c(File::Spec->catfile($objdir, 'asm', 'pptok.c')); +read_directiv_dat(File::Spec->catfile($srcdir, 'asm', 'directiv.dat')); +read_version(File::Spec->catfile($srcdir, 'version')); + +write_output($outfile); diff --git a/vere/ext/nasm/misc/exebin.mac b/vere/ext/nasm/misc/exebin.mac new file mode 100644 index 0000000..8d1eaf8 --- /dev/null +++ b/vere/ext/nasm/misc/exebin.mac @@ -0,0 +1,57 @@ +; -*- nasm -*- +; NASM macro file to allow the `bin' output format to generate +; simple .EXE files by constructing the EXE header by hand. +; Adapted from a contribution by Yann Guidon + +%define EXE_stack_size EXE_realstacksize + +%macro EXE_begin 0 + ORG 0E0h + section .text + +header_start: + db 4Dh,5Ah ; EXE file signature + dw EXE_allocsize % 512 + dw (EXE_allocsize + 511) / 512 + dw 0 ; relocation information: none + dw (header_end-header_start)/16 ; header size in paragraphs + dw (EXE_absssize + EXE_realstacksize) / 16 ; min extra mem + dw (EXE_absssize + EXE_realstacksize) / 16 ; max extra mem + dw -10h ; Initial SS (before fixup) + dw EXE_endbss + EXE_realstacksize ; Initial SP (1K DPMI+1K STACK) + dw 0 ; (no) Checksum + dw 100h ; Initial IP - start just after the header + dw -10h ; Initial CS (before fixup) + dw 0 ; file offset to relocation table: none + dw 0 ; (no overlay) + align 16,db 0 +header_end: + +EXE_startcode: + section .data +EXE_startdata: + section .bss +EXE_startbss: +%endmacro + +%macro EXE_stack 1 +EXE_realstacksize equ %1 +%define EXE_stack_size EXE_bogusstacksize ; defeat EQU in EXE_end +%endmacro + +%macro EXE_end 0 + section .text +EXE_endcode: + section .data +EXE_enddata: + section .bss + alignb 4 +EXE_endbss: + +EXE_acodesize equ (EXE_endcode-EXE_startcode+3) & (~3) +EXE_datasize equ EXE_enddata-EXE_startdata +EXE_absssize equ (EXE_endbss-EXE_startbss+3) & (~3) +EXE_allocsize equ EXE_acodesize + EXE_datasize + +EXE_stack_size equ 0x800 ; default if nothing else was used +%endmacro diff --git a/vere/ext/nasm/misc/exebin2.mac b/vere/ext/nasm/misc/exebin2.mac new file mode 100644 index 0000000..89c6889 --- /dev/null +++ b/vere/ext/nasm/misc/exebin2.mac @@ -0,0 +1,114 @@ +; -*- nasm -*- + +; NASM macro file to allow the `bin' output format to generate + +; simple .EXE files by constructing the EXE header by hand. + +; Adapted from a contribution by Yann Guidon + + + +%define EXE_stack_size EXE_realstacksize + + + +%macro EXE_begin 0 + + ORG 0E0h + + section .text + + + +header_start: + + db 4Dh,5Ah ; EXE file signature + + dw EXE_allocsize % 512 + + dw (EXE_allocsize + 511) / 512 + + dw 0 ; relocation information: none + + dw (header_end-header_start)/16 ; header size in paragraphs + + dw (EXE_absssize + EXE_realstacksize) / 16 ; min extra mem + + dw (EXE_absssize + EXE_realstacksize) / 16 ; max extra mem + + dw -10h ; Initial SS (before fixup) + + dw EXE_endbss + EXE_realstacksize ; Initial SP (1K DPMI+1K STACK) + + dw 0 ; (no) Checksum + + dw 100h ; Initial IP - start just after the header + + dw -10h ; Initial CS (before fixup) + + dw 0 ; file offset to relocation table: none + + dw 0 ; (no overlay) + + align 16,db 0 + +header_end: + + + +EXE_startcode: + + section .data + +EXE_startdata: + + section .bss + +EXE_startbss: + +%endmacro + + + +%macro EXE_stack 1 + +EXE_realstacksize equ %1 + +%define EXE_stack_size EXE_bogusstacksize ; defeat EQU in EXE_end + +%endmacro + + + +%macro EXE_end 0 + + section .text + +EXE_endcode: + + section .data + +EXE_enddata: + + section .bss + + alignb 4 + +EXE_endbss: + + + +EXE_acodesize equ (EXE_endcode-EXE_startcode+3) & (~3) + +EXE_datasize equ EXE_enddata-EXE_startdata + +EXE_absssize equ (EXE_endbss-EXE_startbss+3) & (~3) + +EXE_allocsize equ EXE_acodesize + EXE_datasize + + + +EXE_stack_size equ 0x800 ; default if nothing else was used + +%endmacro + diff --git a/vere/ext/nasm/misc/fmtinsns.pl b/vere/ext/nasm/misc/fmtinsns.pl new file mode 100755 index 0000000..848ee2d --- /dev/null +++ b/vere/ext/nasm/misc/fmtinsns.pl @@ -0,0 +1,40 @@ +#!/usr/bin/perl +# +# Re-align the columns in insns.dat, and enforce case conventions +# + +@cols = (0, 16, 48, 96); + +while ($line = ) { + chomp $line; + if ($line !~ /^\s*(\;.*|)$/) { + ($ln = $line) =~ s/\s+$//; + if ($line =~ /^\s*(\S+)\s+(\S+)\s+(\S+|\[.*\])\s+(\S+)\s*$/) { + @fields = ($1, $2, $3, $4); + $fields[0] = "\U$fields[0]" unless ($fields[0] =~ /^[^a-z]+cc$/); + $fields[3] =~ s/\,+$//; + $fields[3] = "\U$fields[3]" unless ($fields[3] eq 'ignore'); + $c = 0; + $line = ''; + for ($i = 0; $i < scalar(@fields); $i++) { + if ($i > 0 && $c >= $cols[$i]) { + $line .= ' '; + $c++; + } + while ($c < $cols[$i]) { + $line .= "\t"; + $c = ($c+8) & ~7; + } + $line .= $fields[$i]; + for ($j = 0; $j < length($fields[$i]); $j++) { + if (substr($fields[$i], $j, 1) eq "\t") { + $c = ($c+8) & ~7; + } else { + $c++; + } + } + } + } + } + print $line, "\n"; +} diff --git a/vere/ext/nasm/misc/genfma.pl b/vere/ext/nasm/misc/genfma.pl new file mode 100755 index 0000000..2b6a65c --- /dev/null +++ b/vere/ext/nasm/misc/genfma.pl @@ -0,0 +1,63 @@ +#!/usr/bin/perl +%packed_insns = ( + 'vfmadd' => 0x98, + 'vfmaddsub' => 0x96, + 'vfmsubadd' => 0x97, + 'vfmsub' => 0x9a, + 'vfnmadd' => 0x9c, + 'vfnmsub' => 0x9e + ); + +%scalar_insns = ( + 'vfmadd' => 0x99, + 'vfmsub' => 0x9b, + 'vfnmadd' => 0x9d, + 'vfnmsub' => 0x9f + ); + +foreach $pi ( sort(keys(%packed_insns)) ) { + $op = $packed_insns{$pi}; + foreach $order ('132', '213', '231') { + $xorder = substr($order,1,1).substr($order,0,1).substr($order,2,1); + foreach $o ($order, $xorder) { + for ($w = 0; $w < 2; $w++) { + $suf = $w ? 'pd' : 'ps'; + for ($l = 128; $l <= 256; $l <<= 1) { + $sx = ($l == 256) ? 'SY' : 'SO'; + $mm = ($l == 256) ? 'ymm' : 'xmm'; + printf "%-15s %-31s %-8s%-39s %s\n", + "\U${pi}${o}${suf}", + "${mm}reg,${mm}reg,${mm}rm", + "[rvm:", + sprintf("vex.dds.%d.66.0f38.w%d %02x /r]", + $l, $w, $op), + "FMA,FUTURE,${sx}"; + } + } + } + $op += 0x10; + } +} + +foreach $si ( sort(keys(%scalar_insns)) ) { + $op = $scalar_insns{$si}; + foreach $order ('132', '213', '231') { + $xorder = substr($order,1,1).substr($order,0,1).substr($order,2,1); + foreach $o ($order, $xorder) { + for ($w = 0; $w < 2; $w++) { + $suf = $w ? 'sd' : 'ss'; + $sx = $w ? 'SQ' : 'SD'; + $l = 128; + $mm = 'xmm'; + printf "%-15s %-31s %-8s%-39s %s\n", + "\U${si}${o}${suf}", + "${mm}reg,${mm}reg,${mm}rm", + '[rvm:', + sprintf("vex.dds.%d.66.0f38.w%d %02x /r]", + $l, $w, $op), + "FMA,FUTURE,${sx}"; + } + } + $op += 0x10; + } +} diff --git a/vere/ext/nasm/misc/hints.txt b/vere/ext/nasm/misc/hints.txt new file mode 100644 index 0000000..576e1cf --- /dev/null +++ b/vere/ext/nasm/misc/hints.txt @@ -0,0 +1,26 @@ +Subject: Re: [nasm-devel] P4 insns +Date: Sat, 05 May 2001 11:39:36 -0500 +From: Kyle Markley +Reply-To: nasm-devel@yahoogroups.com +To: nasm-devel@yahoogroups.com + +berkus wrote: +> +> Use The Source, NASM! +> +> Do we have the P4 'probable branch taken' (3e) and 'probable branch +> not taken' (2e) prefixes opcodes? + +They're just segment override prefixes: 2e is CS, 3e is DS. You can just +say +"cs jnz foo" for a not-taken hint, "ds jnz foo" for a taken hint. + +Maybe it would be nice to have a more suggestive name, but you could just +%define one. + +--- +Kyle Markley + + + +Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ diff --git a/vere/ext/nasm/misc/magic b/vere/ext/nasm/misc/magic new file mode 100644 index 0000000..0172f4a --- /dev/null +++ b/vere/ext/nasm/misc/magic @@ -0,0 +1,6 @@ +# Put the following lines in your /etc/magic file to get 'file' to recognise +# RDOFF Object Files + +0 string RDOFF RDOFF Object File +>5 byte >32 version %c (little endian) +>5 byte <32 version %d (big endian) diff --git a/vere/ext/nasm/misc/myC32.mac b/vere/ext/nasm/misc/myC32.mac new file mode 100644 index 0000000..e70fc82 --- /dev/null +++ b/vere/ext/nasm/misc/myC32.mac @@ -0,0 +1,121 @@ +; NASM macro set to make interfacing to 32-bit programs easier +; Also cool little macros to make NASM emulate some MASM things. +; +; Originally included in NASM. Modifications by Peter Johnson, 1999. +; + +%imacro proc 1 ; begin a procedure definition +%push proc + global %1 +%1: push ebp + mov ebp, esp +%assign %$arg 8 +;%assign %$argnum 0 +%define %$procname %1 +%endmacro + +%imacro arg 0-1 4 ; used with the argument name as a label +%00 equ %$arg +;%assign %$argnum %$argnum+1 +;.arg%$argnum equ %1 +%assign %$arg %1+%$arg +%endmacro + +%imacro endproc 0 +%ifnctx proc +%error Mismatched `endproc'/`proc' +%else +; mov esp, ebp +; pop ebp +%ifdef LEGACY_ENDPROC + ret +%endif +;__end_%$procname: ; useful for calculating function size +; global %{$procname}_arglen +;%{$procname}_arglen equ %$arg-8 +;%assign %$i 1 +;%rep %$argnum +; global %{$procname}_arg%$i +;%{$procname}_arg%$i equ %{$procname}.arg%$i +;%assign %$i %$i+1 +;%endrep +%pop +%endif +%endmacro + +; redefine ret instructions for in-proc cases +%imacro ret 0-1 +%ifnctx proc + ret %1 +%else + mov esp, ebp + pop ebp + ret %1 +%endif +%endmacro + +%imacro retf 0-1 +%ifnctx proc + retf %1 +%else + mov esp, ebp + pop ebp + retf %1 +%endif +%endmacro + +%imacro retn 0-1 +%ifnctx proc + retn %1 +%else + mov esp, ebp + pop ebp + retn %1 +%endif +%endmacro + +; invoke calls a C function +; defaults to word (16 bit) size parameters +%macro invoke 1-* +%rotate -1 +;%define invoketype word +%rep (%0-1) +; %ifidni %1,dword +; %define invoketype dword +; %elifidni %1,word +; %define invoketype word +; %elifidni %1,byte +; %define invoketype byte +; %else + %ifidni %1, cs + o16 push %1 + %elifidni %1, ds + o16 push %1 + %elifidni %1, es + o16 push %1 + %elifidni %1, fs + o16 push %1 + %elifidni %1, gs + o16 push %1 + %elifidni %1, word cs + o16 push %1 + %elifidni %1, word ds + o16 push %1 + %elifidni %1, word es + o16 push %1 + %elifidni %1, word fs + o16 push %1 + %elifidni %1, word gs + o16 push %1 + %else + push %1 + %endif +; %endif + %rotate -1 +%endrep +call %1 +%if (%0!=1) + add esp, byte %{1}_arglen +%endif +%endmacro + diff --git a/vere/ext/nasm/misc/nasm.sl b/vere/ext/nasm/misc/nasm.sl new file mode 100644 index 0000000..2ddb5c1 --- /dev/null +++ b/vere/ext/nasm/misc/nasm.sl @@ -0,0 +1,320 @@ +% This file defines a NASM editor mode for the JED editor. +% JED's home page is http://space.mit.edu/~davis/jed.html. +% +% To install, copy this file into your JED_LIBRARY directory +% (/usr/local/jed/lib or C:\JED\LIB or whatever), then add the +% following lines to your .jedrc or jed.rc file: +% autoload("nasm_mode", "nasm"); +% add_mode_for_extension("nasm", "asm"); +% (you can of course replace "asm" with whatever file extension +% you like to use for your NASM source files). + +variable Nasm_Instruction_Indent = 10; +variable Nasm_Comment_Column = 33; +variable Nasm_Comment_Space = 1; + +variable nasm_kw_2 = strcat("ahalaxbhblbpbtbxchclcscxdbdddhdidldqdsdtdwdxes", + "fsgsinjajbjcjejgjljojpjsjzorsispssto"); +variable nasm_kw_3 = strncat("a16a32aaaaadaamaasadcaddandbsfbsrbtcbtrbtscbw", + "cdqclccldclicmccmpcr0cr2cr3cr4cwddaadasdecdiv", + "dr0dr1dr2dr3dr6dr7eaxebpebxecxediedxequesiesp", + "farfldfsthltincintjaejbejgejlejmpjnajnbjncjne", + "jngjnljnojnpjnsjnzjpejpolarldslealeslfslgslsl", + "lssltrmm0mm1mm2mm3mm4mm5mm6mm7movmulnegnopnot", + "o16o32outpopporrclrcrrepretrolrorrsmsalsarsbb", + "segshlshrsmist0st1st2st3st4st5st6st7stcstdsti", + "strsubtr3tr4tr5tr6tr7wrtxor", 9); +variable nasm_kw_4 = strncat("arplbytecallcltscwdeemmsfabsfaddfbldfchsfcom", + "fcosfdivfenifildfistfld1fldzfmulfnopfsinfstp", + "fsubftstfxamfxchibtsidivimulinsbinsdinswint1", + "int3intoinvdiretjcxzjnaejnbejngejnlelahflgdt", + "lidtlldtlmswlocklongloopmovdmovqnearpandpopa", + "popfpushpxorreperepzresbresdresqrestreswretf", + "retnsahfsalcsetasetbsetcsetesetgsetlsetosetp", + "setssetzsgdtshldshrdsidtsldtsmswtestumovverr", + "verwwaitwordxaddxbtsxchg", 9); +variable nasm_kw_5 = strncat("boundbswapcmovacmovbcmovccmovecmovgcmovlcmovo", + "cmovpcmovscmovzcmpsbcmpsdcmpswcpuiddwordenter", + "f2xm1faddpfbstpfclexfcomifcompfdisifdivpfdivr", + "ffreefiaddficomfidivfimulfinitfistpfisubfldcw", + "fldpifmulpfpremfptanfsavefsqrtfstcwfstswfsubp", + "fsubrfucomfyl2xicebpint01iretdiretwjecxzleave", + "lodsblodsdlodswloopeloopzmovsbmovsdmovswmovsx", + "movzxoutsboutsdoutswpaddbpadddpaddwpandnpopad", + "popawpopfdpopfwpslldpsllqpsllwpsradpsrawpsrld", + "psrlqpsrlwpsubbpsubdpsubwpushapushfqwordrdmsr", + "rdpmcrdtscrepnerepnzscasbscasdscaswsetaesetbe", + "setgesetlesetnasetnbsetncsetnesetngsetnlsetno", + "setnpsetnssetnzsetpesetposhortstosbstosdstosw", + "timestwordwrmsrxlatb", 14); +variable nasm_kw_6 = strncat("cmovaecmovbecmovgecmovlecmovnacmovnbcmovnc", + "cmovnecmovngcmovnlcmovnocmovnpcmovnscmovnz", + "cmovpecmovpofcmovbfcmovefcmovufcomipfcompp", + "fdivrpficompfidivrfisubrfldenvfldl2efldl2t", + "fldlg2fldln2fpatanfprem1frstorfscalefsetpm", + "fstenvfsubrpfucomifucompincbininvlpgloopne", + "loopnzpaddsbpaddswpmulhwpmullwpsubsbpsubsw", + "pushadpushawpushfdpushfwsetnaesetnbesetnge", + "setnlewbinvd", 9); +variable nasm_kw_7 = strncat("cmovnaecmovnbecmovngecmovnlecmpxchgfcmovbe", + "fcmovnbfcmovnefcmovnufdecstpfincstpfrndint", + "fsincosfucomipfucomppfxtractfyl2xp1loadall", + "paddusbpadduswpcmpeqbpcmpeqdpcmpeqwpcmpgtb", + "pcmpgtdpcmpgtwpmaddwdpsubusbpsubusw", 5); +variable nasm_kw_8 = "fcmovnbepackssdwpacksswbpackuswb"; +variable nasm_kw_9 = strcat("cmpxchg8bpunpckhbwpunpckhdqpunpckhwdpunpcklbw", + "punpckldqpunpcklwd"); +variable nasm_kw_10 = "cmpxchg486loadall286"; + +define nasm_indent_line() { + variable word, len, e, c; + + e = eolp(); + + push_spot(); + EXIT_BLOCK { + pop_spot(); + if (what_column() <= Nasm_Instruction_Indent) + skip_white(); + } + + bol_skip_white(); + c = what_column(); + + if (orelse + {looking_at_char(';')} + {looking_at_char('#')} + {looking_at_char('[')}) { + bol_trim(); + pop_spot(); + EXIT_BLOCK { + } + return; + } + + if (looking_at_char('%')) { + go_right_1(); + !if (orelse + {looking_at_char('$')} + {looking_at_char('%')} + {looking_at_char('+')} + {looking_at_char('-')} + {looking_at_char('0')} + {looking_at_char('1')} + {looking_at_char('2')} + {looking_at_char('3')} + {looking_at_char('4')} + {looking_at_char('5')} + {looking_at_char('6')} + {looking_at_char('7')} + {looking_at_char('8')} + {looking_at_char('9')}) { + bol_trim(); + pop_spot(); + EXIT_BLOCK { + } + return; + } + go_left_1(); + } + + push_mark(); + skip_chars("%$+-"); + skip_chars("0-9a-zA-Z_."); + word = bufsubstr(); + + if (orelse + {c == 1} + {looking_at_char(':')}) { + push_spot(); + bol_trim(); + pop_spot(); + len = strlen(word); + if (looking_at_char(':')) { + go_right_1(); + len++; + } + trim(); + if (e or not(eolp())) { + if (len >= Nasm_Instruction_Indent) { + pop(); + whitespace(1); + } else + whitespace(Nasm_Instruction_Indent - len); + if (e) { + pop_spot(); + eol(); + push_spot(); + } + } + } else { + bol_trim(); + whitespace(Nasm_Instruction_Indent); + } +} + +define nasm_newline_indent() { + push_spot(); + bol_skip_white(); + if (eolp()) + trim(); + pop_spot(); + newline(); + nasm_indent_line(); +} + +define nasm_bol_self_ins() { + push_spot(); + bskip_white(); + bolp(); + pop_spot(); + + call("self_insert_cmd"); + + % Grotty: force immediate update of the syntax highlighting. + insert_char('.'); + deln(left(1)); + + if (()) + nasm_indent_line(); +} + +define nasm_self_ins_ind() { + call("self_insert_cmd"); + + % Grotty: force immediate update of the syntax highlighting. + insert_char('.'); + deln(left(1)); + + nasm_indent_line(); +} + +define nasm_insert_comment() { + variable spc; + + bol_skip_white(); + if (looking_at_char(';')) { + bol_trim(); + go_right(1); + skip_white(); + return; + } else if (eolp()) { + bol_trim(); + insert("; "); + return; + } + + forever { + skip_chars("^;\n'\""); + if (looking_at_char('\'')) { + go_right_1(); + skip_chars("^'\n"); + !if (eolp()) + go_right_1(); + } else if (looking_at_char('\"')) { + go_right_1(); + skip_chars("^\"\n"); + !if (eolp()) + go_right_1(); + } else if (looking_at_char(';')) { + !if (bolp()) { + go_left_1(); + trim(); + !if (looking_at_char(';')) + go_right_1(); + } + break; + } else { + break; + } + } + spc = Nasm_Comment_Column - what_column(); + if (spc < Nasm_Comment_Space) + spc = Nasm_Comment_Space; + whitespace(spc); + if (eolp()) { + insert("; "); + } else { + go_right_1(); + skip_white(); + } +} + +$1 = "NASM"; +create_syntax_table($1); + +define_syntax (";", "", '%', $1); +define_syntax ("([", ")]", '(', $1); +define_syntax ('"', '"', $1); +define_syntax ('\'', '\'', $1); +define_syntax ("0-9a-zA-Z_.@#", 'w', $1); +define_syntax ("-+0-9a-fA-F.xXL", '0', $1); +define_syntax (",:", ',', $1); +define_syntax ('%', '#', $1); +define_syntax ("|^&<>+-*/%~", '+', $1); + +set_syntax_flags($1,1); + +#ifdef HAS_DFA_SYNTAX + +dfa_enable_highlight_cache("nasm.dfa", $1); +dfa_define_highlight_rule(";.*$", "comment", $1); +dfa_define_highlight_rule("[A-Za-z_\\.\\?][A-Za-z0-9_\\.\\?\\$#@~]*", + "Knormal", $1); +dfa_define_highlight_rule("$([A-Za-z_\\.\\?][A-Za-z0-9_\\.\\?\\$#@~]*)?", + "normal", $1); +dfa_define_highlight_rule("[0-9]+(\\.[0-9]*)?([Ee][\\+\\-]?[0-9]*)?", + "number", $1); +dfa_define_highlight_rule("[0-9]+[QqBb]", "number", $1); +dfa_define_highlight_rule("(0x|\\$[0-9A-Fa-f])[0-9A-Fa-f]*", "number", $1); +dfa_define_highlight_rule("[0-9A-Fa-f]+[Hh]", "number", $1); +dfa_define_highlight_rule("\"[^\"]*\"", "string", $1); +dfa_define_highlight_rule("\"[^\"]*$", "string", $1); +dfa_define_highlight_rule("'[^']*'", "string", $1); +dfa_define_highlight_rule("'[^']*$", "string", $1); +dfa_define_highlight_rule("[\\(\\)\\[\\],:]*", "delimiter", $1); +dfa_define_highlight_rule("^[ \t]*#", "PQpreprocess", $1); +dfa_define_highlight_rule("^[ \t]*\\%{?[^%\\$\\+\\-0-9]", "PQpreprocess", $1); +dfa_define_highlight_rule("^%$", "preprocess", $1); +dfa_define_highlight_rule("[\\|\\^&<>\\+\\-\\*/%~]*", "operator", $1); +dfa_define_highlight_rule("%([%\\$]?-?[0-9A-Za-z_\\.\\?\\$~@]+|{[^}]*}?)", + "preprocess", $1); +dfa_define_highlight_rule("[ \t]*", "normal", $1); +dfa_define_highlight_rule(".", "normal", $1); +dfa_build_highlight_table($1); +#endif + +define_keywords_n($1, nasm_kw_2, 2, 0); +define_keywords_n($1, nasm_kw_3, 3, 0); +define_keywords_n($1, nasm_kw_4, 4, 0); +define_keywords_n($1, nasm_kw_5, 5, 0); +define_keywords_n($1, nasm_kw_6, 6, 0); +define_keywords_n($1, nasm_kw_7, 7, 0); +define_keywords_n($1, nasm_kw_8, 8, 0); +define_keywords_n($1, nasm_kw_9, 9, 0); +define_keywords_n($1, nasm_kw_10, 10, 0); + +define_keywords_n($1, "org", 3, 1); +define_keywords_n($1, "bitsiend", 4, 1); +define_keywords_n($1, "aligngroupstruc", 5, 1); +define_keywords_n($1, "alignbcommonexternglobalistruc", 6, 1); +define_keywords_n($1, "sectionsegmentlibrary", 7, 1); +define_keywords_n($1, "absoluteendstruc", 8, 1); +define_keywords_n($1, "uppercase", 9, 1); + +!if (keymap_p ($1)) make_keymap ($1); +definekey("nasm_bol_self_ins", ";", $1); +definekey("nasm_bol_self_ins", "#", $1); +definekey("nasm_bol_self_ins", "%", $1); +definekey("nasm_bol_self_ins", "[", $1); +definekey("nasm_self_ins_ind", ":", $1); +definekey("nasm_insert_comment", "^[;", $1); + +define nasm_mode() { + set_mode("NASM", 4); + use_keymap ("NASM"); + use_syntax_table ("NASM"); + set_buffer_hook ("indent_hook", "nasm_indent_line"); + set_buffer_hook ("newline_indent_hook", "nasm_newline_indent"); + runhooks("nasm_mode_hook"); +} diff --git a/vere/ext/nasm/misc/nasmstab b/vere/ext/nasm/misc/nasmstab new file mode 100644 index 0000000..32ef67e --- /dev/null +++ b/vere/ext/nasm/misc/nasmstab @@ -0,0 +1,296 @@ +#!/usr/bin/perl + +sub StabLine ($ $ $ $ $ $) { + local ($comment,$n_strx,$type,$other,$desc,$value) = @_; + print $comment; + print "","dd",$n_strx; + print "","db",$type; + print "","db",$other; + print "","dw",$desc; + print "","dd","0" . $value . "h"; +} + +sub RStabLine ($ $ $ $ $) { + local ($comment,$offset,$info,$type,$symbol) = @_; + print $comment; + print "","dd",$offset; + print "","db",$type; + print "","db",$symbol; + print "","dw",$info; +} + +#this sub exists because i've no idea how to print non-ascii numbers in perl + +sub OutBin ( $ $ ) { + local ($offset, $shnum) = @_; + seek(FINAL,$offset,0); + if ( $shnum == 2 ) { printf FINAL "\x02" } ; + if ( $shnum == 3 ) { printf FINAL "\x03" } ; + if ( $shnum == 4 ) { printf FINAL "\x04" } ; + if ( $shnum == 5 ) { printf FINAL "\x05" } ; + if ( $shnum == 6 ) { printf FINAL "\x06" } ; + if ( $shnum == 7 ) { printf FINAL "\x07" } ; + if ( $shnum == 8 ) { printf FINAL "\x08" } ; + if ( $shnum == 9 ) { printf FINAL "\x09" } ; + if ( $shnum == 10 ) { printf FINAL "\x0a" } ; + if ( $shnum == 11 ) { printf FINAL "\x0b" } ; + if ( $shnum == 12 ) { printf FINAL "\x0c" } ; + if ( $shnum == 13 ) { printf FINAL "\x0d" } ; + if ( $shnum == 14 ) { printf FINAL "\x0e" } ; + if ( $shnum == 15 ) { printf FINAL "\x0f" } ; +} + +sub DispHelp () { + $\="\n"; + print "Usage:"; + print "\t-f,--input-file"; + print "\t\tThe input file name (only required option)"; + print "\t-o,--output-file"; + print "\t\tThe output file name (if not specified, *.asm becomes *.o"; + print "\t\tand anything else becomes a.out)"; + print "\t-l,--list-file"; + print "\t\tThe listing file's name (default: trailing .asm is +removed"; + print "\t\tif there and .lst is appended)"; + print "\t-s,--second-asm-file"; + print "\t\tThe second asm file's name (default: trailing .asm is"; + print "\t\tremoved if there and .nasm is appended)"; + print "\n"; + exit ; +} + +if ( $ARGV[0] eq "" ) { $ARGV[0] = "-h" }; + +$i = 0; +$filename = ""; +$outname = ""; + +while ( $ARGV[$i] ne "" ) { + $_ = $ARGV[$i]; + if ( m/^-/ ) { + if ( m/^-f$/ ) { $filename = $ARGV[++$i] }; + if ( m/^-o$/ ) { $outname = $ARGV[++$i] }; + if ( m/^-l$/ ) { $listname = $ARGV[++$i] }; + if ( m/^-s$/ ) { $asmname = $ARGV[++$i] }; + if ( m/^-h$/ ) { DispHelp }; + } elsif ( m/^--\w+/ ) { + if ( m/^--input-file$/ ) { $filename = $ARGV[++$i] }; + if ( m/^--output-file$/ ) { $outname = $ARGV[++$i] }; + if ( m/^--list-file$/ ) { $listname = $ARGV[++$i] }; + if ( m/^--second-asm-file$/ ) { $asmname = $ARGV[++$i] }; + if ( m/^--help/ ) { DispHelp }; + } elsif ( m/^--$/ ) { + while ( $ARGV[++$i] ) { + $NasmOptions .= " "; + $NasmOptions .= $_; + }; + } else { + DispHelp() + }; + $i++; +}; + +if ( $filename eq "" ) { DispHelp() }; + +if ( $outname eq "" ) { + $outname = $filename; + $outname =~ s/\.asm/.o/; + if ( $outname eq $filename ) { $outname = "a.out" }; +}; + +if ( $listname eq "" ) { + $listname = $filename; + $listname =~ s/\.asm//; + $listname .= ".lst"; +}; + +if ( $asmname eq "" ) { + $asmname = $filename; + $asmname =~ s/\.asm//; + $asmname .= ".nasm"; +}; + +$err = `nasm -f elf ${filename} -l ${listname} -o ${outname} `; + +if ( $err ) { die "\n$err\n"}; + +open(LISTFILE,"${listname}") or die "\n $0: Could not reopen list file!\n"; +open(ASMFILE,">${asmname}") or die "\n $0: Could not open asm file!\n"; + +select ASMFILE; + +open(OLDASM,$filename) or die "\n$0: Cannot open file $filename\n"; + +while ( $x = ) { + print $x; +} + +@stab = ("n_desc", "value"); +@rel_stab = ("offset"); +$i = 0; +$current_section = ""; +$has_text = 'FALSE'; +$midst_of_macro = 'FALSE'; +$line_dec = 0 ; + +while ( $x = ) { + if ( $x =~ m/[^;]*%include/ ) { + $x = ; + while ( $x =~ m/\s+\d+\s+\<\d+\>\s+/ ) { + $x = ; + $line_dec++; + } + } + if ( $current_section eq ".text" ) { + if ( $x =~ m/^\s+(\S+)\s+(\S+)\s+(\S+)\s+[^<]+$/ ) { + $stab[$i++] = $1-$line_dec; #linenum + $stab[$i++] = $2; #offset + $count++; + if ( $3 =~ m/-/ ) { + $x = ; + $line_dec++; + } + $midst_of_macro = 'FALSE'; + } elsif ( $x =~ m/^\s+(\S+)\s+(\S+)\s+(\S+)\s+<\d+>/ ) { + if ( $midst_of_macro eq 'TRUE' ) { + $stab[$i] = $stab[$i-2]; #same linenum + $line_dec++; + } else { + $stab[$i] = $1 - ++$line_dec; + $midst_of_macro = 'TRUE'; + } + $count++; + $i++; + $stab[$i++] = $2; + if ( $3 =~ m/-/ ) { + $x = ; + $line_dec++; + } + + } + $has_text = 'TRUE'; + } elsif ( $x =~ m/\s+\S+\s+\S+\s+\S+\s+<\d+>/ ) { # is it a macro? + $line_dec++; + } + if ( $x =~ s/(section|segment)\s+([^\s]+)/$2/ ) { + $current_section = $2; + } +}; + +close LISTFILE; + +unless ( $has_text eq "TRUE" ) { + $err = `nasm -f elf ${asmname} -o ${outname}`; + print STDERR $err; + exit; +} + +#Write Stab section +$, = "\t"; #output field separator +$\ = "\n"; #output record separator + +print "section .stab noalloc"; +StabLine(";header",1,0,0,$count+1,length($filename)*2+3); +StabLine(";so",length($asmname)+2,"064h",0,0,0); + +$offset = 12; +$i = 0; +$j = 0; +$rel_stab[$j++] = $offset + 8; + +while ( $stab[$i] ) { + StabLine(";N_SLINE" . " " . ( ($i+2) / 2 ), 0, "044h", 0, + $stab[$i++], $stab[$i++]); + $offset += 12; + $rel_stab[$j++] = $offset + 8; +} + +#Write .rel.stab section +print "\n\nsection .rel.stab noalloc"; + +open (READELF,"readelf -s ${outname} |") or die "\n$0: Could not run readelf\n"; + +while ( $x = ) { + if ( $x =~ m/\s+(\d+):\s+00000000\s+\d+\s+SECTION\s+\w+\s+\w+\s+1\s+/){ $textsymnum = $1; + }; +}; +close READELF; + +$i = 0; + +while ( $rel_stab[$i] ne "" ) { + RStabLine(";relocation for N_SLINE " . ($i), $rel_stab[$i], 0, 1, $textsymnum); + $i++; +} ; + +#Write .stabstr section + +print "\n\nsection .stabstr noalloc"; + +print "","db","0"; +print "","db",'"' . $asmname . '"'; +print "","db","0"; +print "","db",'"' . $asmname . '"' ; +print "","db","0"; + +close ASMFILE; + +$err = `nasm -f elf ${asmname} -o ${outname}`; + +if ( $err ) { die "\n$err\n" } ; + +open (READELF,"readelf -h -S ${outname} |") or die "\n$0: Could not run readelf\n"; + + +while ( $x = ) { + if ( $x =~ m/Start\s+of\s+section\s+headers:\s+(\d+)\s+/ ) { + $shoff = $1; + } + if ( $x =~ m/Size\s+of\s+section\s+headers:\s+(\d+)\s+/ ) { + $shentsize = $1; + } + if ( $x =~ m/\[\s*(\d+)\]\s+.rel.stab\s+/ ) { + $relnum = $1; + } + if ( $x =~ m/\[\s*(\d+)\]\s+.stab\s+/ ) { + $stabnum = $1; + } + if ( $x =~ m/\[\s*(\d+)\]\s+.stabstr\s+/ ) { + $stabstrnum = $1; + } + if ( $x =~ m/\[\s*(\d+)\]\s+.symtab\s+/ ) { + $symtabnum = $1; + } +} +close READELF; + +sysopen (FINAL,"${outname}",2,0) or die "\n$0: Could not open ${outname}"; +$, = ""; #output field separator +$\ = ""; #output record separator + +#set .rel.stab->type to rel +OutBin($shoff + ($shentsize * $relnum) + 4,9); + +#set .rel.stab->link to .symtab +OutBin($shoff + ($shentsize * $relnum) + 24,$symtabnum); + +#set .rel.stab->info to .stab +OutBin($shoff + ($shentsize * $relnum) + 28,$stabnum); + +#set .rel.stab->entsize to 8 +OutBin($shoff + ($shentsize * $relnum) + 36,8); + +#set .stab->link to .stabstr +OutBin($shoff + ($shentsize * $stabnum) + 24,$stabstrnum); + +#set .stab->entsize to 12 +OutBin($shoff + ($shentsize * $stabnum) + 36,12); + +#set .stabstr->type to strtab +OutBin($shoff + ($shentsize * $stabstrnum) + 4,3); + +close FINAL; + +#Date: 17 Mar 2002 15:51:20 -0800 +#From: kitsred@hotmail.com (kired) +#Newsgroups: alt.lang.asm diff --git a/vere/ext/nasm/misc/omfdump.c b/vere/ext/nasm/misc/omfdump.c new file mode 100644 index 0000000..b27e7c9 --- /dev/null +++ b/vere/ext/nasm/misc/omfdump.c @@ -0,0 +1,516 @@ +/* + * omfdump.c + * + * Very simple program to dump the contents of an OMF (OBJ) file + * + * This assumes a littleendian, unaligned-load-capable host and a + * C compiler which handles basic C99. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const char *progname; + +static const char *record_types[256] = +{ + [0x80] = "THEADR", + [0x82] = "LHEADR", + [0x88] = "COMENT", + [0x8a] = "MODEND16", + [0x8b] = "MODEND32", + [0x8c] = "EXTDEF", + [0x90] = "PUBDEF16", + [0x91] = "PUBDEF32", + [0x94] = "LINNUM16", + [0x95] = "LINNUM32", + [0x96] = "LNAMES", + [0x98] = "SEGDEF16", + [0x99] = "SEGDEF32", + [0x9a] = "GRPDEF", + [0x9c] = "FIXUPP16", + [0x9d] = "FIXUPP32", + [0xa0] = "LEDATA16", + [0xa1] = "LEDATA32", + [0xa2] = "LIDATA16", + [0xa3] = "LIDATA32", + [0xb0] = "COMDEF", + [0xb2] = "BAKPAT16", + [0xb3] = "BAKPAT32", + [0xb4] = "LEXTDEF", + [0xb6] = "LPUBDEF16", + [0xb7] = "LPUBDEF32", + [0xb8] = "LCOMDEF", + [0xbc] = "CEXTDEF", + [0xc2] = "COMDAT16", + [0xc3] = "COMDAT32", + [0xc4] = "LINSYM16", + [0xc5] = "LINSYM32", + [0xc6] = "ALIAS", + [0xc8] = "NBKPAT16", + [0xc9] = "NBKPAT32", + [0xca] = "LLNAMES", + [0xcc] = "VERNUM", + [0xce] = "VENDEXT", + [0xf0] = "LIBHDR", + [0xf1] = "LIBEND", +}; + +typedef void (*dump_func)(uint8_t, const uint8_t *, size_t); + +/* Ordered collection type */ +struct collection { + size_t n; /* Elements in collection (not including 0) */ + size_t s; /* Elements allocated (not including 0) */ + const void **p; /* Element pointers */ +}; + +struct collection c_names, c_lsegs, c_groups, c_extsym; + +static void nomem(void) +{ + fprintf(stderr, "%s: memory allocation error\n", progname); + exit(1); +} + +#define INIT_SIZE 64 +static void add_collection(struct collection *c, const void *p) +{ + if (c->n >= c->s) { + size_t cs = c->s ? (c->s << 1) : INIT_SIZE; + const void **cp = realloc(c->p, cs*sizeof(const void *)); + + if (!cp) + nomem(); + + c->p = cp; + c->s = cs; + + memset(cp + c->n, 0, (cs - c->n)*sizeof(const void *)); + } + + c->p[++c->n] = p; +} + +static const void *get_collection(struct collection *c, size_t index) +{ + if (index >= c->n) + return NULL; + + return c->p[index]; +} + +static void hexdump_data(unsigned int offset, const uint8_t *data, + size_t n, size_t field) +{ + unsigned int i, j; + + for (i = 0; i < n; i += 16) { + printf(" %04x: ", i+offset); + for (j = 0; j < 16; j++) { + char sep = (j == 7) ? '-' : ' '; + if (i+j < field) + printf("%02x%c", data[i+j], sep); + else if (i+j < n) + printf("xx%c", sep); /* Beyond end of... */ + else + printf(" "); /* No separator */ + } + printf(" : "); + for (j = 0; j < 16; j++) { + if (i+j < n) + putchar((i+j >= field) ? 'x' : + isprint(data[i+j]) ? data[i+j] : '.'); + } + putchar('\n'); + } +} + +static void dump_unknown(uint8_t type, const uint8_t *data, size_t n) +{ + (void)type; + hexdump_data(0, data, n, n); +} + +static void print_dostime(const uint8_t *p) +{ + uint16_t da = (p[3] << 8) + p[2]; + uint16_t ti = (p[1] << 8) + p[0]; + + printf("%04u-%02u-%02u %02u:%02u:%02u", + (da >> 9) + 1980, (da >> 5) & 15, da & 31, + (ti >> 11), (ti >> 5) & 63, (ti << 1) & 63); +} + +static void dump_coment_depfile(uint8_t type, const uint8_t *data, size_t n) +{ + if (n > 4 && data[4] == n-5) { + printf(" # "); + print_dostime(data); + printf(" %.*s\n", n-5, data+5); + } + + hexdump_data(2, data, n, n); +} + +static const dump_func dump_coment_class[256] = { + [0xe9] = dump_coment_depfile +}; + +static void dump_coment(uint8_t type, const uint8_t *data, size_t n) +{ + uint8_t class; + static const char *coment_class[256] = { + [0x00] = "Translator", + [0x01] = "Copyright", + [0x81] = "Library specifier", + [0x9c] = "MS-DOS version", + [0x9d] = "Memory model", + [0x9e] = "DOSSEG", + [0x9f] = "Library search", + [0xa0] = "OMF extensions", + [0xa1] = "New OMF extension", + [0xa2] = "Link pass separator", + [0xa3] = "LIBMOD", + [0xa4] = "EXESTR", + [0xa6] = "INCERR", + [0xa7] = "NOPAD", + [0xa8] = "WKEXT", + [0xa9] = "LZEXT", + [0xda] = "Comment", + [0xdb] = "Compiler", + [0xdc] = "Date", + [0xdd] = "Timestamp", + [0xdf] = "User", + [0xe3] = "Type definition", + [0xe8] = "Filename", + [0xe9] = "Dependency file", + [0xff] = "Command line" + }; + + if (n < 2) { + hexdump_data(type, data, 2, n); + return; + } + + type = data[0]; + class = data[1]; + + printf(" [NP=%d NL=%d UD=%02X] %02X %s\n", + (type >> 7) & 1, + (type >> 6) & 1, + type & 0x3f, + class, + coment_class[class] ? coment_class[class] : "???"); + + if (dump_coment_class[class]) + dump_coment_class[class](class, data+2, n-2); + else + hexdump_data(2, data+2, n-2, n-2); +} + +/* Parse an index field */ +static uint16_t get_index(const uint8_t **pp) +{ + uint8_t c; + + c = *(*pp)++; + if (c & 0x80) { + return ((c & 0x7f) << 8) + *(*pp)++; + } else { + return c; + } +} + +static uint16_t get_16(const uint8_t **pp) +{ + uint16_t v = *(const uint16_t *)(*pp); + (*pp) += 2; + + return v; +} + +static uint32_t get_32(const uint8_t **pp) +{ + const uint32_t v = *(const uint32_t *)(*pp); + (*pp) += 4; + + return v; +} + +/* Returns a name as a C string in a newly allocated buffer */ +char *lname(int index) +{ + char *s; + const char *p = get_collection(&c_names, index); + size_t len; + + if (!p) + return NULL; + + len = (uint8_t)p[0]; + + s = malloc(len+1); + if (!s) + nomem(); + + memcpy(s, p+1, len); + s[len] = '\0'; + + return s; +} + +/* LNAMES or LLNAMES */ +static void dump_lnames(uint8_t type, const uint8_t *data, size_t n) +{ + const uint8_t *p = data; + const uint8_t *end = data + n; + + while (p < end) { + size_t l = *p+1; + if (l > n) { + add_collection(&c_names, NULL); + printf(" # %4u 0x%04x: \"%.*s... <%zu missing bytes>\n", + c_names.n, c_names.n, n-1, p+1, l-n); + } else { + add_collection(&c_names, p); + printf(" # %4u 0x%04x: \"%.*s\"\n", + c_names.n, c_names.n, l-1, p+1); + } + hexdump_data(p-data, p, l, n); + p += l; + n -= l; + } +} + +/* SEGDEF16 or SEGDEF32 */ +static void dump_segdef(uint8_t type, const uint8_t *data, size_t n) +{ + bool big = type & 1; + const uint8_t *p = data; + const uint8_t *end = data+n; + uint8_t attr; + static const char * const alignment[8] = + { "ABS", "BYTE", "WORD", "PARA", "PAGE", "DWORD", "LTL", "?ALIGN" }; + static const char * const combine[8] = + { "PRIVATE", "?COMMON", "PUBLIC", "?COMBINE", "?PUBLIC", "STACK", "COMMON", "?PUBLIC" }; + uint16_t idx; + char *s; + + if (p >= end) + return; + + attr = *p++; + + printf(" # %s (A%u) %s (C%u) %s%s", + alignment[(attr >> 5) & 7], (attr >> 5) & 7, + combine[(attr >> 2) & 7], (attr >> 2) & 7, + (attr & 0x02) ? "MAXSIZE " : "", + (attr & 0x01) ? "USE32" : "USE16"); + + if (((attr >> 5) & 7) == 0) { + /* Absolute segment */ + if (p+3 > end) + goto dump; + printf(" AT %04x:", get_16(&p)); + printf("%02x", *p++); + } + + if (big) { + if (p+4 > end) + goto dump; + printf(" size 0x%08x", get_32(&p)); + } else { + if (p+2 > end) + goto dump; + printf(" size 0x%04x", get_16(&p)); + } + + idx = get_index(&p); + if (p > end) + goto dump; + s = lname(idx); + printf(" name '%s'", s); + + idx = get_index(&p); + if (p > end) + goto dump; + s = lname(idx); + printf(" class '%s'", s); + + idx = get_index(&p); + if (p > end) + goto dump; + s = lname(idx); + printf(" ovl '%s'", s); + +dump: + putchar('\n'); + hexdump_data(0, data, n, n); +} + +/* FIXUPP16 or FIXUPP32 */ +static void dump_fixupp(uint8_t type, const uint8_t *data, size_t n) +{ + bool big = type & 1; + const uint8_t *p = data; + const uint8_t *end = data + n; + static const char * const method_base[4] = + { "SEGDEF", "GRPDEF", "EXTDEF", "frame#" }; + + while (p < end) { + const uint8_t *start = p; + uint8_t op = *p++; + uint16_t index; + uint32_t disp; + + if (!(op & 0x80)) { + /* THREAD record */ + bool frame = !!(op & 0x40); + + printf(" THREAD %-7s%d%s method %c%d (%s)", + frame ? "frame" : "target", op & 3, + (op & 0x20) ? " +flag5?" : "", + (op & 0x40) ? 'F' : 'T', + op & 3, method_base[op & 3]); + + if ((op & 0x50) != 0x50) { + printf(" index 0x%04x", get_index(&p)); + } + putchar('\n'); + } else { + /* FIXUP subrecord */ + uint8_t fix; + + printf(" FIXUP %s-rel location %2d offset 0x%03x", + (op & 0x40) ? "seg" : "self", + (op & 0x3c) >> 2, + ((op & 3) << 8) + *p++); + + fix = *p++; + printf("\n frame %s%d%s", + (fix & 0x80) ? "thread " : "F", + ((fix & 0x70) >> 4), + ((fix & 0xc0) == 0xc0) ? "?" : ""); + + if ((fix & 0xc0) == 0) + printf(" datum 0x%04x", get_index(&p)); + + printf("\n target %s%d", + (fix & 0x10) ? "thread " : "method T", + fix & 3); + + if ((fix & 0x10) == 0) + printf(" (%s)", method_base[fix & 3]); + + printf(" datum 0x%04x", get_index(&p)); + + if ((fix & 0x08) == 0) { + if (big) { + printf(" disp 0x%08x", get_32(&p)); + } else { + printf(" disp 0x%04x", get_16(&p)); + } + } + putchar('\n'); + } + hexdump_data(start-data, start, p-start, n-(start-data)); + } +} + +static const dump_func dump_type[256] = +{ + [0x88] = dump_coment, + [0x96] = dump_lnames, + [0x98] = dump_segdef, + [0x99] = dump_segdef, + [0x9c] = dump_fixupp, + [0x9d] = dump_fixupp, + [0xca] = dump_lnames, +}; + +int dump_omf(int fd) +{ + struct stat st; + size_t len, n; + uint8_t type; + const uint8_t *p, *data; + + if (fstat(fd, &st)) + return -1; + + len = st.st_size; + + data = mmap(NULL, len, PROT_READ, MAP_PRIVATE, fd, 0); + if (data == MAP_FAILED) + return -1; + + p = data; + while (len >= 3) { + uint8_t csum; + int i; + + type = p[0]; + n = *(uint16_t *)(p+1); + + printf("%02x %-10s %4zd bytes", + type, + record_types[type] ? record_types[type] : "???", + n); + + if (len < n+3) { + printf("\n (truncated, only %zd bytes left)\n", len-3); + break; /* Truncated */ + } + + p += 3; /* Header doesn't count in the length */ + n--; /* Remove checksum byte */ + + csum = 0; + for (i = -3; i < (int)n; i++) + csum -= p[i]; + + printf(", checksum %02X", p[i]); + if (csum == p[i]) + printf(" (valid)\n"); + else + printf(" (actual = %02X)\n", csum); + + if (dump_type[type]) + dump_type[type](type, p, n); + else + dump_unknown(type, p, n); + + p += n+1; + len -= (n+4); + } + + munmap((void *)data, st.st_size); + return 0; +} + +int main(int argc, char *argv[]) +{ + int fd; + int i; + + progname = argv[0]; + + for (i = 1; i < argc; i++) { + fd = open(argv[i], O_RDONLY); + if (fd < 0 || dump_omf(fd)) { + perror(argv[i]); + return 1; + } + close(fd); + } + + return 0; +} diff --git a/vere/ext/nasm/misc/pmw.bat b/vere/ext/nasm/misc/pmw.bat new file mode 100644 index 0000000..88b67a5 --- /dev/null +++ b/vere/ext/nasm/misc/pmw.bat @@ -0,0 +1,9 @@ +@echo off +rem some batch file to bind nasm and ndisasm with pmode/w +rem a mega cool dos extender for watcom done by tran +rem +rem max 8 megs, dpmi stack 256*16=4096, no banner +pmwlite.exe nasm.exe +pmwsetup.exe /X8388608 /P256 /B0 nasm.exe +pmwlite.exe ndisasm.exe +pmwsetup.exe /X8388608 /P256 /B0 ndisasm.exe diff --git a/vere/ext/nasm/misc/proc32.ash b/vere/ext/nasm/misc/proc32.ash new file mode 100644 index 0000000..b0633ec --- /dev/null +++ b/vere/ext/nasm/misc/proc32.ash @@ -0,0 +1,441 @@ +;--------=========xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=========-------- +; +; Copyright (C) 1999 by Andrew Zabolotny +; Miscellaneous NASM macros that makes use of new preprocessor features +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Library General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Library General Public License for more details. +; +; You should have received a copy of the GNU Library General Public +; License along with this library; if not, write to the Free +; Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +; +;--------=========xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=========-------- + +; The macros in this file provides support for writing 32-bit C-callable +; NASM routines. For a short description of every macros see the +; corresponding comment before every one. Simple usage example: +; +; proc sin,1 +; targ %$angle +; fld %$angle +; fsin +; endproc sin + +%ifndef __PROC32_ASH__ +%define __PROC32_ASH__ + +[WARNING -macro-selfref] + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Mangle a name to be compatible with the C compiler +; Arguments: +; The name +; Example: +; cname (my_func) +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%ifdef EXTERNC_UNDERSCORE + %define cname(x) _ %+ x +%else + %define cname(x) x +%endif + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Import an external C procedure definition +; Arguments: +; The name of external C procedure +; Example: +; cextern printf +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro cextern 1 + %xdefine %1 cname(%1) + %ifidni __OUTPUT_FORMAT__,obj + extern %1:wrt FLAT + %else + extern %1 + %endif +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Export an C procedure definition +; Arguments: +; The name of C procedure +; Example: +; cglobal my_printf +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro cglobal 1 + %xdefine %1 cname(%1) + global %1 +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Misc macros to deal with PIC shared libraries +; Comment: +; Note that we have a different syntax for working with and without +; PIC shared libraries. In a PIC environment we should load first +; the address of the variable into a register and then work through +; that address, i.e: mov eax,myvar; mov [eax],1 +; In a non-PIC environment we should directly write: mov myvar,1 +; Example: +; extvar myvar +; GetGOT +; %ifdef PIC +; mov ebx,myvar ; get offset of myvar into ebx +; %else +; lea ebx,myvar +; %endif +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%ifdef PIC + cextern _GLOBAL_OFFSET_TABLE_ + %macro GetGOT 0 + %ifdef .$proc.stkofs + %assign .$proc.stkofs .$proc.stkofs+4 + %endif + call %$Get_GOT + %$Get_GOT: + pop ebx + add ebx,_GLOBAL_OFFSET_TABLE_ + $$ - %$Get_GOT wrt ..gotpc + %endmacro + %macro extvar 1 + cextern %1 + %xdefine %1 [ebx+%1 wrt ..got] + %endmacro +%else + %define GetGOT + %macro extvar 1 + cextern %1 + %endmacro +%endif + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Begin a procedure definition +; For performance reasons we don't use stack frame pointer EBP, +; instead we're using the [esp+xx] addressing. Because of this +; you should be careful when you work with stack pointer. +; The push/pop instructions are macros that are defined to +; deal correctly with these issues. +; Arguments: +; First argument - the procedure name +; Second optional argument - the number of bytes for local variables +; The following arguments could specify the registers that should be +; pushed at beginning of procedure and popped before exiting +; Example: +; proc MyTestProc +; proc MyTestProc,4,ebx,esi,edi +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro proc 1-3+ 0 + cglobal %1 + %push %1 + align 16 +%1: + %xdefine %$proc.name %1 + ; total size of local arguments + %assign %$proc.locsize (%2+3) & 0xFFFC + ; offset from esp to argument + %assign %$proc.argofs 4+%$proc.locsize + ; additional offset to args (tracks push/pops) + %assign .$proc.stkofs 0 + ; offset from esp to local arguments + %assign %$proc.locofs 0 + ; Now push the registers that we should save + %define %$proc.save %3 + %if %$proc.locsize != 0 + sub esp,%$proc.locsize + %endif + push %$proc.save +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Declare an argument passed on stack +; This macro defines two additional macros: +; first (with the name given by first argument) - [esp+xx] +; second (with a underscore appended to first argument) - esp+xx +; Arguments: +; First argument defines the procedure argument name +; Second optional parameter defines the size of the argument +; Default value is 4 (a double word) +; Example: +; arg .my_float +; arg .my_double,8 +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro arg 1-2 4 + %ifndef %$proc.argofs + %error "`arg' not in a proc context" + %else + ; Trick: temporary undefine .$proc.stkofs so that it won't be expanded + %assign %%. .$proc.stkofs + %undef .$proc.stkofs + %xdefine %{1}_ esp+%$proc.argofs+.$proc.stkofs + %xdefine %1 [esp+%$proc.argofs+.$proc.stkofs] + %assign .$proc.stkofs %%. + %assign %$proc.argofs %2+%$proc.argofs + %endif +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Declare an local variable +; first (with the name given by first argument) - [esp+xx] +; second (with a slash prefixing the first argument) - esp+xx +; Arguments: +; First argument defines the procedure argument name +; Second optional parameter defines the size of the argument +; Default value is 4 (a double word) +; Example: +; loc .int_value +; loc .double_value,8 +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro loc 1-2 4 + %ifndef %$proc.locofs + %error "`loc' not in a proc context" + %elif %$proc.locofs + %2 > %$proc.locsize + %error "local stack space exceeded" + %else + %assign %%. .$proc.stkofs + %undef .$proc.stkofs + %xdefine %{1}_ esp+%$proc.locofs+.$proc.stkofs + %xdefine %1 [esp+%$proc.locofs+.$proc.stkofs] + %assign .$proc.stkofs %%. + %assign %$proc.locofs %$proc.locofs+%2 + %endif +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Get the type of given size into context-local variable %$type +; Arguments: +; Size of type we want (1,2,4,8 or 10) +; Example: +; type 4 ; gives "dword" +; type 10 ; gives "tword" +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro type 1 + %if %1 = 1 + %define %$type byte + %elif %1 = 2 + %define %$type word + %elif %1 = 4 + %define %$type dword + %elif %1 = 8 + %define %$type qword + %elif %1 = 10 + %define %$type tword + %else + %define %$. %1 + %error "unknown type for argument size %$." + %endif +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Same as `arg' but prepends "word", "dword" etc (typed arg) +; first (with the name given by first argument) - dword [esp+xx] +; second (with a slash prefixing the first argument) - esp+xx +; Arguments: +; Same as for `arg' +; Example: +; targ .my_float ; .my_float is now "dword [esp+xxx]" +; targ .my_double,8 ; .my_double is now "qword [esp+xxx]" +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro targ 1-2 4 + %ifndef %$proc.argofs + %error "`targ' not in a proc context" + %else + arg %1,%2 + type %2 + %assign %%. .$proc.stkofs + %undef .$proc.stkofs + %xdefine %1 %$type %1 + %assign .$proc.stkofs %%. + %endif +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Same as `loc' but prepends "word", "dword" etc (typed loc) +; first (with the name given by first argument) - dword [esp+xx] +; second (with a slash prefixing the first argument) - esp+xx +; Arguments: +; Same as for `loc' +; Example: +; tloc int_value +; tloc double_value,8 +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro tloc 1-2 4 + %ifndef %$proc.locofs + %error "`tloc' not in a proc context" + %else + loc %1,%2 + type %2 + %assign %%. .$proc.stkofs + %undef .$proc.stkofs + %xdefine %1 %$type %1 + %assign .$proc.stkofs %%. + %endif +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Finish a procedure +; Gives an error if proc/endproc pairs mismatch +; Defines an label called __end_(procedure name) +; which is useful for calculating function size +; Arguments: +; (optional) The name of procedure +; Example: +; endproc MyTestProc +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%push tmp ; trick: define a dummy context to avoid error in next line +%macro endproc 0-1 %$proc.name + %ifndef %$proc.argofs + %error "`endproc' not in a proc context" + %elifnidn %$proc.name,%1 + %define %$. %1 + %error "endproc names mismatch: expected `%$proc.name'" + %error "but got `%$.' instead" + %elif %$proc.locofs < %$proc.locsize + %error "unused local space declared (used %$proc.locofs, requested %$proc.locsize)" + %else +%$exit: + ; Now pop the registers that we should restore on exit + pop %$proc.save + %if %$proc.locsize != 0 + add esp,%$proc.locsize + %endif + ret +__end_%1: + %pop + %endif +%endmacro +%pop + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; A replacement for "push" for use within procedures +; Arguments: +; any number of registers which will be push'ed successively +; Example: +; push eax,ebx,ecx,edx +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro push 0-* +; dummy comment to avoid problems with "push" on the same line with a label + %rep %0 + push %1 + %rotate 1 + %assign .$proc.stkofs .$proc.stkofs+4 + %endrep +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; A replacement for "pop" for use within procedures +; Arguments: +; any number of registers which will be pop'ed in reverse order +; Example: +; pop eax,ebx,ecx,edx +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro pop 0-* +; dummy comment to avoid problems with "pop" on the same line with a label + %rep %0 + %rotate -1 + pop %1 + %assign .$proc.stkofs .$proc.stkofs-4 + %endrep +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Replacements for "pushfd" and "popfd" that takes care of esp +; Example: +; pushfd +; popfd +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro pushfd 0 + pushfd + %assign .$proc.stkofs .$proc.stkofs+4 +%endmacro +%macro popfd 0 + popfd + %assign .$proc.stkofs .$proc.stkofs-4 +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Exit from current procedure (optionally on given condition) +; Arguments: +; Either none or a condition code +; Example: +; exit +; exit nz +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro exit 0-1 mp + j%1 near %$exit +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; start an conditional branch +; Arguments: +; A condition code +; second (optional) argument - "short" (by default - "near") +; Example: +; if nz +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro if 1-2 near +; dummy comment to avoid problems with "if" on the same line with a label + %push if + j%-1 %2 %$elseif +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; define the "else" branch of a conditional statement +; Arguments: +; optionally: "short" if jmp to endif is less than 128 bytes away +; Example: +; else +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro else 0-1 + %ifnctx if + %error "`else' without matching `if'" + %else + jmp %1 %$endif +%$elseif: + %define %$elseif_defined + %endif +%endmacro + +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +; Summary: +; Finish am conditional statement +; Arguments: +; none +; Example: +; endif +;-----======xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx======----- +%macro endif 0 + %ifnctx if + %error "`endif' without matching `if'" + %else + %ifndef %$elseif_defined +%$elseif: + %endif +%$endif: + %pop + %endif +%endmacro + +%endif ; __PROC32_ASH__ diff --git a/vere/ext/nasm/misc/scitech.mac b/vere/ext/nasm/misc/scitech.mac new file mode 100644 index 0000000..5fe0470 --- /dev/null +++ b/vere/ext/nasm/misc/scitech.mac @@ -0,0 +1,1222 @@ +;**************************************************************************** +;* +;* ======================================================================== +;* +;* The contents of this file are subject to the SciTech MGL Public +;* License Version 1.0 (the "License"); you may not use this file +;* except in compliance with the License. You may obtain a copy of +;* the License at http://www.scitechsoft.com/mgl-license.txt +;* +;* Software distributed under the License is distributed on an +;* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +;* implied. See the License for the specific language governing +;* rights and limitations under the License. +;* +;* The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc. +;* +;* The Initial Developer of the Original Code is SciTech Software, Inc. +;* All Rights Reserved. +;* +;* ======================================================================== +;* +;* Language: NetWide Assembler (NASM) or Turbo Assembler (TASM) +;* Environment: Any Intel Environment +;* +;* Description: Macros to provide memory model independent assembly language +;* module for C programming. Supports the large and flat memory +;* models. +;* +;* The defines that you should use when assembling modules that +;* use this macro package are: +;* +;* __LARGE__ Assemble for 16-bit large model +;* __FLAT__ Assemble for 32-bit FLAT memory model +;* __NOU__ No underscore for all external C labels +;* __NOU_VAR__ No underscore for global variables only +;* +;* The default settings are for 16-bit large memory model with +;* leading underscores for symbol names. +;* +;* The main intent of the macro file is to enable programmers +;* to write _one_ set of source that can be assembled to run +;* in either 16 bit real and protected modes or 32 bit +;* protected mode without the need to riddle the code with +;* 'if flatmodel' style conditional assembly (it is still there +;* but nicely hidden by a macro layer that enhances the +;* readability and understandability of the resulting code). +;* +;**************************************************************************** + +; Include the appropriate version in here depending on the assembler. NASM +; appears to always try and parse code, even if it is in a non-compiling +; block of a ifdef expression, and hence crashes if we include the TASM +; macro package in the same header file. Hence we split the macros up into +; two separate header files. + +ifdef __NASM_MAJOR__ + +;============================================================================ +; Macro package when compiling with NASM. +;============================================================================ + +; Turn off underscores for globals if disabled for all externals + +%ifdef __NOU__ +%define __NOU_VAR__ +%endif + +; Define the __WINDOWS__ symbol if we are compiling for any Windows +; environment + +%ifdef __WINDOWS16__ +%define __WINDOWS__ 1 +%endif +%ifdef __WINDOWS32__ +%define __WINDOWS__ 1 +%define __WINDOWS32_386__ 1 +%endif + +; Macros for accessing 'generic' registers + +%ifdef __FLAT__ +%idefine _ax eax +%idefine _bx ebx +%idefine _cx ecx +%idefine _dx edx +%idefine _si esi +%idefine _di edi +%idefine _bp ebp +%idefine _sp esp +%idefine _es +%idefine UCHAR BYTE ; Size of a character +%idefine USHORT WORD ; Size of a short +%idefine UINT DWORD ; Size of an integer +%idefine ULONG DWORD ; Size of a long +%idefine BOOL DWORD ; Size of a boolean +%idefine DPTR DWORD ; Size of a data pointer +%idefine FDPTR FWORD ; Size of a far data pointer +%idefine NDPTR DWORD ; Size of a near data pointer +%idefine CPTR DWORD ; Size of a code pointer +%idefine FCPTR FWORD ; Size of a far code pointer +%idefine NCPTR DWORD ; Size of a near code pointer +%idefine FPTR NEAR ; Distance for function pointers +%idefine DUINT dd ; Declare a integer variable +%idefine intsize 4 +%idefine flatmodel 1 +%else +%idefine _ax ax +%idefine _bx bx +%idefine _cx cx +%idefine _dx dx +%idefine _si si +%idefine _di di +%idefine _bp bp +%idefine _sp sp +%idefine _es es: +%idefine UCHAR BYTE ; Size of a character +%idefine USHORT WORD ; Size of a short +%idefine UINT WORD ; Size of an integer +%idefine ULONG DWORD ; Size of a long +%idefine BOOL WORD ; Size of a boolean +%idefine DPTR DWORD ; Size of a data pointer +%idefine FDPTR DWORD ; Size of a far data pointer +%idefine NDPTR WORD ; Size of a near data pointer +%idefine CPTR DWORD ; Size of a code pointer +%idefine FCPTR DWORD ; Size of a far code pointer +%idefine NCPTR WORD ; Size of a near code pointer +%idefine FPTR FAR ; Distance for function pointers +%idefine DUINT dw ; Declare a integer variable +%idefine intsize 2 +%endif +%idefine invert ~ +%idefine offset +%idefine use_nasm + +; Convert all jumps to near jumps, since NASM does not so this automatically + +%idefine jo jo near +%idefine jno jno near +%idefine jz jz near +%idefine jnz jnz near +%idefine je je near +%idefine jne jne near +%idefine jb jb near +%idefine jbe jbe near +%idefine ja ja near +%idefine jae jae near +%idefine jl jl near +%idefine jle jle near +%idefine jg jg near +%idefine jge jge near +%idefine jc jc near +%idefine jnc jnc near +%idefine js js near +%idefine jns jns near + +%ifdef DOUBLE +%idefine REAL QWORD +%idefine DREAL dq +%else +%idefine REAL DWORD +%idefine DREAL dd +%endif + +; Boolean truth values (same as those in debug.h) + +%idefine False 0 +%idefine True 1 +%idefine No 0 +%idefine Yes 1 + +; Macro to be invoked at the start of all modules to set up segments for +; later use. Does nothing for NASM. + +%imacro header 1 +%endmacro + +; Macro to begin a data segment + +%imacro begdataseg 1 +%ifdef __GNUC__ +segment .data public class=DATA use32 flat +%else +%ifdef flatmodel +segment _DATA public align=4 class=DATA use32 flat +%else +segment _DATA public align=4 class=DATA use16 +%endif +%endif +%endmacro + +; Macro to end a data segment + +%imacro enddataseg 1 +%endmacro + +; Macro to begin a code segment + +%imacro begcodeseg 1 +%ifdef __GNUC__ +segment .text public class=CODE use32 flat +%else +%ifdef flatmodel +segment _TEXT public align=16 class=CODE use32 flat +%else +segment %1_TEXT public align=16 class=CODE use16 +%endif +%endif +%endmacro + +; Macro to begin a near code segment + +%imacro begcodeseg_near 0 +%ifdef __GNUC__ +segment .text public class=CODE use32 flat +%else +%ifdef flatmodel +segment _TEXT public align=16 class=CODE use32 flat +%else +segment _TEXT public align=16 class=CODE use16 +%endif +%endif +%endmacro + +; Macro to end a code segment + +%imacro endcodeseg 1 +%endmacro + +; Macro to end a near code segment + +%imacro endcodeseg_near 0 +%endmacro + +; Macro for an extern C symbol. If the C compiler requires leading +; underscores, then the underscores are added to the symbol names, otherwise +; they are left off. The symbol name is referenced in the assembler code +; using the non-underscored symbol name. + +%imacro cextern 2 +%ifdef __NOU_VAR__ +extern %1 +%else +extern _%1 +%define %1 _%1 +%endif +%endmacro + +%imacro cexternfunc 2 +%ifdef __NOU__ +extern %1 +%else +extern _%1 +%define %1 _%1 +%endif +%endmacro + +; Macro for a public C symbol. If the C compiler requires leading +; underscores, then the underscores are added to the symbol names, otherwise +; they are left off. The symbol name is referenced in the assembler code +; using the non-underscored symbol name. + +%imacro cpublic 1 +%ifdef __NOU_VAR__ +global %1 +%1: +%else +global _%1 +_%1: +%define %1 _%1 +%endif +%endmacro + +; Macro for an global C symbol. If the C compiler requires leading +; underscores, then the underscores are added to the symbol names, otherwise +; they are left off. The symbol name is referenced in the assembler code +; using the non-underscored symbol name. + +%imacro cglobal 1 +%ifdef __NOU_VAR__ +global %1 +%else +global _%1 +%define %1 _%1 +%endif +%endmacro + +; Macro for an global C function symbol. If the C compiler requires leading +; underscores, then the underscores are added to the symbol names, otherwise +; they are left off. The symbol name is referenced in the assembler code +; using the non-underscored symbol name. + +%imacro cglobalfunc 1 +%ifdef __NOU__ +global %1 +%else +global _%1 +%define %1 _%1 +%endif +%endmacro + +; Macro to start a C callable function. This will be a far function for +; 16-bit code, and a near function for 32-bit code. + +%imacro cprocstatic 1 +%push cproc +%1: +%ifdef flatmodel +%stacksize flat +%define ret retn +%else +%stacksize large +%define ret retf +%endif +%assign %$localsize 0 +%endmacro + +%imacro cprocstart 1 +%push cproc + cglobalfunc %1 +%1: +%ifdef flatmodel +%stacksize flat +%define ret retn +%else +%stacksize large +%define ret retf +%endif +%assign %$localsize 0 +%endmacro + +; This macro sets up a procedure to be exported from a 16 bit DLL. Since the +; calling conventions are always _far _pascal for 16 bit DLL's, we actually +; rename this routine with an extra underscore with 'C' calling conventions +; and a small DLL stub will be provided by the high level code to call the +; assembler routine. + +%imacro cprocstartdll16 1 +%ifdef __WINDOWS16__ +cprocstart _%1 +%else +cprocstart %1 +%endif +%endmacro + +; Macro to start a C callable near function. + +%imacro cprocnear 1 +%push cproc + cglobalfunc %1 +%1: +%define ret retn +%ifdef flatmodel +%stacksize flat +%else +%stacksize small +%endif +%assign %$localsize 0 +%endmacro + +; Macro to start a C callable far function. + +%imacro cprocfar 1 +%push cproc + cglobalfunc %1 +%1: +%define ret retf +%ifdef flatmodel +%stacksize flat +%else +%stacksize large +%endif +%assign %$localsize 0 +%endmacro + +; Macro to end a C function + +%imacro cprocend 0 +%pop +%endmacro + +; Macros for entering and exiting C callable functions. Note that we must +; always save and restore the SI and DI registers for C functions, and for +; 32 bit C functions we also need to save and restore EBX and clear the +; direction flag. + +%imacro enter_c 0 + push _bp + mov _bp,_sp +%ifnidn %$localsize,0 + sub _sp,%$localsize +%endif +%ifdef flatmodel + push ebx +%endif + push _si + push _di +%endmacro + +%imacro leave_c 0 + pop _di + pop _si +%ifdef flatmodel + pop ebx + cld +%endif +%ifnidn %$localsize,0 + mov _sp,_bp +%endif + pop _bp +%endmacro + +%imacro use_ebx 0 +%ifdef flatmodel + push ebx +%endif +%endmacro + +%imacro unuse_ebx 0 +%ifdef flatmodel + pop ebx +%endif +%endmacro + +; Macros for saving and restoring the value of DS,ES,FS,GS when it is to +; be used in assembly routines. This evaluates to nothing in the flat memory +; model, but is saves and restores DS in the large memory model. + +%imacro use_ds 0 +%ifndef flatmodel + push ds +%endif +%endmacro + +%imacro unuse_ds 0 +%ifndef flatmodel + pop ds +%endif +%endmacro + +%imacro use_es 0 +%ifndef flatmodel + push es +%endif +%endmacro + +%imacro unuse_es 0 +%ifndef flatmodel + pop es +%endif +%endmacro + +; Macros for loading the address of a data pointer into a segment and +; index register pair. The %imacro explicitly loads DS or ES in the 16 bit +; memory model, or it simply loads the offset into the register in the flat +; memory model since DS and ES always point to all addressable memory. You +; must use the correct _REG (ie: _BX) %imacros for documentation purposes. + +%imacro _lds 2 +%ifdef flatmodel + mov %1,%2 +%else + lds %1,%2 +%endif +%endmacro + +%imacro _les 2 +%ifdef flatmodel + mov %1,%2 +%else + les %1,%2 +%endif +%endmacro + +; Macros for adding and subtracting a value from registers. Two value are +; provided, one for 16 bit modes and another for 32 bit modes (the extended +; register is used in 32 bit modes). + +%imacro _add 3 +%ifdef flatmodel + add e%1, %3 +%else + add %1, %2 +%endif +%endmacro + +%imacro _sub 3 +%ifdef flatmodel + sub e%1, %3 +%else + sub %1, %2 +%endif +%endmacro + +; Macro to clear the high order word for the 32 bit extended registers. +; This is used to convert an unsigned 16 bit value to an unsigned 32 bit +; value, and will evaluate to nothing in 16 bit modes. + +%imacro clrhi 1 +%ifdef flatmodel + movzx e%1,%1 +%endif +%endmacro + +%imacro sgnhi 1 +%ifdef flatmodel + movsx e%1,%1 +%endif +%endmacro + +; Macro to load an extended register with an integer value in either mode + +%imacro loadint 2 +%ifdef flatmodel + mov e%1,%2 +%else + xor e%1,e%1 + mov %1,%2 +%endif +%endmacro + +; Macros to load and store integer values with string instructions + +%imacro LODSINT 0 +%ifdef flatmodel + lodsd +%else + lodsw +%endif +%endmacro + +%imacro STOSINT 0 +%ifdef flatmodel + stosd +%else + stosw +%endif +%endmacro + +; Macros to provide resb, resw, resd compatibility with NASM + +%imacro dclb 1 +times %1 db 0 +%endmacro + +%imacro dclw 1 +times %1 dw 0 +%endmacro + +%imacro dcld 1 +times %1 dd 0 +%endmacro + +; macros to declare assembler function stubs for function structures + +%imacro BEGIN_STUBS_DEF 2 +begdataseg _STUBS +%ifdef __NOU_VAR__ +extern %1 +%define STUBS_START %1 +%else +extern _%1 +%define STUBS_START _%1 +%endif +enddataseg _STUBS +begcodeseg _STUBS +%assign off %2 +%endmacro + +%imacro DECLARE_STUB 1 +%ifdef __NOU__ + global %1 +%1: +%else + global _%1 +_%1: +%endif + jmp [DWORD STUBS_START+off] +%assign off off+4 +%endmacro + +%imacro DECLARE_STDCALL 2 +%ifdef STDCALL_MANGLE + global _%1@%2 +_%1@%2: +%else +%ifdef __GNUC__ + global _%1 +_%1: +%else + global %1 +%1: +%endif +%endif + jmp [DWORD STUBS_START+off] +%assign off off+4 +%endmacro + +%imacro END_STUBS_DEF 0 +endcodeseg _STUBS +%endmacro + +; macros to declare assembler import stubs for binary loadable drivers + +%imacro BEGIN_IMPORTS_DEF 1 +BEGIN_STUBS_DEF %1,4 +%endmacro + +%imacro DECLARE_IMP 1 +DECLARE_STUB %1 +%endmacro + +%imacro END_IMPORTS_DEF 0 +END_STUBS_DEF +%endmacro + +else ; __NASM_MAJOR__ + +;============================================================================ +; Macro package when compiling with TASM. +;============================================================================ + +; Turn off underscores for globals if disabled for all externals + +ifdef __NOU__ +__NOU_VAR__ = 1 +endif + +; Define the __WINDOWS__ symbol if we are compiling for any Windows +; environment + +ifdef __WINDOWS16__ +__WINDOWS__ = 1 +endif +ifdef __WINDOWS32__ +__WINDOWS__ = 1 +__WINDOWS32_386__ = 1 +endif +ifdef __WIN386__ +__WINDOWS__ = 1 +__WINDOWS32_386__ = 1 +endif +ifdef __VXD__ +__WINDOWS__ = 1 +__WINDOWS32_386__ = 1 + MASM + .386 + NO_SEGMENTS = 1 + include vmm.inc ; IGNORE DEPEND + include vsegment.inc ; IGNORE DEPEND + IDEAL +endif + +; Macros for accessing 'generic' registers + +ifdef __FLAT__ + _ax EQU eax ; EAX is used for accumulator + _bx EQU ebx ; EBX is used for accumulator + _cx EQU ecx ; ECX is used for looping + _dx EQU edx ; EDX is used for data register + _si EQU esi ; ESI is the source index register + _di EQU edi ; EDI is the destination index register + _bp EQU ebp ; EBP is used for base pointer register + _sp EQU esp ; ESP is used for stack pointer register + _es EQU ; ES and DS are the same in 32 bit PM + typedef UCHAR BYTE ; Size of a character + typedef USHORT WORD ; Size of a short + typedef UINT DWORD ; Size of an integer + typedef ULONG DWORD ; Size of a long + typedef BOOL DWORD ; Size of a boolean + typedef DPTR DWORD ; Size of a data pointer + typedef FDPTR FWORD ; Size of a far data pointer + typedef NDPTR DWORD ; Size of a near data pointer + typedef CPTR DWORD ; Size of a code pointer + typedef FCPTR FWORD ; Size of a far code pointer + typedef NCPTR DWORD ; Size of a near code pointer + typedef DUINT DWORD ; Declare a integer variable + FPTR EQU NEAR ; Distance for function pointers + intsize = 4 ; Size of an integer + flatmodel = 1 ; This is a flat memory model + P386 ; Turn on 386 code generation + MODEL FLAT ; Set up for 32 bit simplified FLAT model +else + _ax EQU ax ; AX is used for accumulator + _bx EQU bx ; BX is used for accumulator + _cx EQU cx ; CX is used for looping + _dx EQU dx ; DX is used for data register + _si EQU si ; SI is the source index register + _di EQU di ; DI is the destination index register + _bp EQU bp ; BP is used for base pointer register + _sp EQU sp ; SP is used for stack pointer register + _es EQU es: ; ES is used for segment override + typedef UCHAR BYTE ; Size of a character + typedef USHORT WORD ; Size of a short + typedef UINT WORD ; Size of an integer + typedef ULONG DWORD ; Size of a long + typedef BOOL WORD ; Size of a boolean + typedef DPTR DWORD ; Size of a data pointer + typedef FDPTR DWORD ; Size of a far data pointer + typedef NDPTR WORD ; Size of a near data pointer + typedef CPTR DWORD ; Size of a code pointer + typedef FCPTR DWORD ; Size of a far code pointer + typedef NCPTR WORD ; Size of a near code pointer + typedef DUINT WORD ; Declare a integer variable + FPTR EQU FAR ; Distance for function pointers + intsize = 2 ; Size of an integer + P386 ; Turn on 386 code generation +endif + invert EQU not + +; Provide a typedef for real floating point numbers + +ifdef DOUBLE +typedef REAL QWORD +typedef DREAL QWORD +else +typedef REAL DWORD +typedef DREAL DWORD +endif + +; Macros to access the floating point stack registers to convert them +; from NASM style to TASM style + +st0 EQU st(0) +st1 EQU st(1) +st2 EQU st(2) +st3 EQU st(3) +st4 EQU st(4) +st5 EQU st(5) +st6 EQU st(6) +st7 EQU st(7) +st8 EQU st(8) + +; Boolean truth values (same as those in debug.h) + +ifndef __VXD__ +False = 0 +True = 1 +No = 0 +Yes = 1 +Yes = 1 +endif + +; Macros for the _DATA data segment. This segment contains initialised data. + +MACRO begdataseg name +ifdef __VXD__ + MASM +VXD_LOCKED_DATA_SEG + IDEAL +else +ifdef flatmodel + DATASEG +else +SEGMENT _DATA DWORD PUBLIC USE16 'DATA' +endif +endif +ENDM + +MACRO enddataseg name +ifdef __VXD__ + MASM +VXD_LOCKED_DATA_ENDS + IDEAL +else +ifndef flatmodel +ENDS _DATA +endif +endif +ENDM + +; Macro for the main code segment. + +MACRO begcodeseg name +ifdef __VXD__ + MASM +VXD_LOCKED_CODE_SEG + IDEAL +else +ifdef flatmodel + CODESEG + ASSUME CS:FLAT,DS:FLAT,SS:FLAT +else +SEGMENT &name&_TEXT PARA PUBLIC USE16 'CODE' + ASSUME CS:&name&_TEXT,DS:_DATA +endif +endif +ENDM + +; Macro for a near code segment + +MACRO begcodeseg_near +ifdef flatmodel + CODESEG + ASSUME CS:FLAT,DS:FLAT,SS:FLAT +else +SEGMENT _TEXT PARA PUBLIC USE16 'CODE' + ASSUME CS:_TEXT,DS:_DATA +endif +ENDM + +MACRO endcodeseg name +ifdef __VXD__ + MASM +VXD_LOCKED_CODE_ENDS + IDEAL +else +ifndef flatmodel +ENDS &name&_TEXT +endif +endif +ENDM + +MACRO endcodeseg_near +ifndef flatmodel +ENDS _TEXT +endif +ENDM + +; Macro to be invoked at the start of all modules to set up segments for +; later use. + +MACRO header name +begdataseg name +enddataseg name +ENDM + +; Macro for an extern C symbol. If the C compiler requires leading +; underscores, then the underscores are added to the symbol names, otherwise +; they are left off. The symbol name is referenced in the assembler code +; using the non-underscored symbol name. + +MACRO cextern name,size +ifdef __NOU_VAR__ + EXTRN name:size +else + EXTRN _&name&:size +name EQU _&name& +endif +ENDM + +MACRO cexternfunc name,size +ifdef __NOU__ + EXTRN name:size +else + EXTRN _&name&:size +name EQU _&name& +endif +ENDM + +MACRO stdexternfunc name,args,size +ifdef STDCALL_MANGLE + EXTRN _&name&@&num_args&:size +name EQU _&name&@&num_args +else + EXTRN name:size +endif +ENDM + +; Macro for a public C symbol. If the C compiler requires leading +; underscores, then the underscores are added to the symbol names, otherwise +; they are left off. The symbol name is referenced in the assembler code +; using the non-underscored symbol name. + +MACRO cpublic name +ifdef __NOU_VAR__ +name: + PUBLIC name +else +_&name&: + PUBLIC _&name& +name EQU _&name& +endif +ENDM + +; Macro for an global C symbol. If the C compiler requires leading +; underscores, then the underscores are added to the symbol names, otherwise +; they are left off. The symbol name is referenced in the assembler code +; using the non-underscored symbol name. + +MACRO cglobal name +ifdef __NOU_VAR__ + PUBLIC name +else + PUBLIC _&name& +name EQU _&name& +endif +ENDM + +; Macro for an global C function symbol. If the C compiler requires leading +; underscores, then the underscores are added to the symbol names, otherwise +; they are left off. The symbol name is referenced in the assembler code +; using the non-underscored symbol name. + +MACRO cglobalfunc name +ifdef __NOU__ + PUBLIC name +else + PUBLIC _&name& +name EQU _&name& +endif +ENDM + +; Macro to start a C callable function. This will be a far function for +; 16-bit code, and a near function for 32-bit code. + +MACRO cprocstatic name ; Set up model independent private proc +ifdef flatmodel +PROC name NEAR +else +PROC name FAR +endif +LocalSize = 0 +ENDM + +MACRO cprocstart name ; Set up model independent proc +ifdef flatmodel +ifdef __NOU__ +PROC name NEAR +else +PROC _&name& NEAR +endif +else +ifdef __NOU__ +PROC name FAR +else +PROC _&name& FAR +endif +endif +LocalSize = 0 + cglobalfunc name +ENDM + +MACRO cprocnear name ; Set up near proc +ifdef __NOU__ +PROC name NEAR +else +PROC _&name& NEAR +endif +LocalSize = 0 + cglobalfunc name +ENDM + +MACRO cprocfar name ; Set up far proc +ifdef __NOU__ +PROC name FAR +else +PROC _&name& FAR +endif +LocalSize = 0 + cglobalfunc name +ENDM + +MACRO cprocend ; End procedure macro +ENDP +ENDM + +; This macro sets up a procedure to be exported from a 16 bit DLL. Since the +; calling conventions are always _far _pascal for 16 bit DLL's, we actually +; rename this routine with an extra underscore with 'C' calling conventions +; and a small DLL stub will be provided by the high level code to call the +; assembler routine. + +MACRO cprocstartdll16 name +ifdef __WINDOWS16__ +cprocstart _&name& +else +cprocstart name +endif +ENDM + +; Macros for entering and exiting C callable functions. Note that we must +; always save and restore the SI and DI registers for C functions, and for +; 32 bit C functions we also need to save and restore EBX and clear the +; direction flag. + +MACRO save_c_regs +ifdef flatmodel + push ebx +endif + push _si + push _di +ENDM + +MACRO enter_c + push _bp + mov _bp,_sp + IFDIFI ,<0> + sub _sp,LocalSize + ENDIF + save_c_regs +ENDM + +MACRO restore_c_regs + pop _di + pop _si +ifdef flatmodel + pop ebx +endif +ENDM + +MACRO leave_c + restore_c_regs + cld + IFDIFI ,<0> + mov _sp,_bp + ENDIF + pop _bp +ENDM + +MACRO use_ebx +ifdef flatmodel + push ebx +endif +ENDM + +MACRO unuse_ebx +ifdef flatmodel + pop ebx +endif +ENDM + +; Macros for saving and restoring the value of DS,ES,FS,GS when it is to +; be used in assembly routines. This evaluates to nothing in the flat memory +; model, but is saves and restores DS in the large memory model. + +MACRO use_ds +ifndef flatmodel + push ds +endif +ENDM + +MACRO unuse_ds +ifndef flatmodel + pop ds +endif +ENDM + +MACRO use_es +ifndef flatmodel + push es +endif +ENDM + +MACRO unuse_es +ifndef flatmodel + pop es +endif +ENDM + +; Macros for loading the address of a data pointer into a segment and +; index register pair. The macro explicitly loads DS or ES in the 16 bit +; memory model, or it simply loads the offset into the register in the flat +; memory model since DS and ES always point to all addressable memory. You +; must use the correct _REG (ie: _BX) macros for documentation purposes. + +MACRO _lds reg, addr +ifdef flatmodel + mov reg,addr +else + lds reg,addr +endif +ENDM + +MACRO _les reg, addr +ifdef flatmodel + mov reg,addr +else + les reg,addr +endif +ENDM + +; Macros for adding and subtracting a value from registers. Two value are +; provided, one for 16 bit modes and another for 32 bit modes (the extended +; register is used in 32 bit modes). + +MACRO _add reg, val16, val32 +ifdef flatmodel + add e®&, val32 +else + add reg, val16 +endif +ENDM + +MACRO _sub reg, val16, val32 +ifdef flatmodel + sub e®&, val32 +else + sub reg, val16 +endif +ENDM + +; Macro to clear the high order word for the 32 bit extended registers. +; This is used to convert an unsigned 16 bit value to an unsigned 32 bit +; value, and will evaluate to nothing in 16 bit modes. + +MACRO clrhi reg +ifdef flatmodel + movzx e®&,reg +endif +ENDM + +MACRO sgnhi reg +ifdef flatmodel + movsx e®&,reg +endif +ENDM + +; Macro to load an extended register with an integer value in either mode + +MACRO loadint reg,val +ifdef flatmodel + mov e®&,val +else + xor e®&,e®& + mov reg,val +endif +ENDM + +; Macros to load and store integer values with string instructions + +MACRO LODSINT +ifdef flatmodel + lodsd +else + lodsw +endif +ENDM + +MACRO STOSINT +ifdef flatmodel + stosd +else + stosw +endif +ENDM + +; Macros to provide resb, resw, resd compatibility with NASM + +MACRO dclb count +db count dup (0) +ENDM + +MACRO dclw count +dw count dup (0) +ENDM + +MACRO dcld count +dd count dup (0) +ENDM + +; Macros to provide resb, resw, resd compatibility with NASM + +MACRO resb count +db count dup (?) +ENDM + +MACRO resw count +dw count dup (?) +ENDM + +MACRO resd count +dd count dup (?) +ENDM + +; Macros to declare assembler stubs for function structures + +MACRO BEGIN_STUBS_DEF name, firstOffset +begdataseg _STUBS +ifdef __NOU_VAR__ + EXTRN name:DWORD +STUBS_START = name +else + EXTRN _&name&:DWORD +name EQU _&name& +STUBS_START = _&name +endif +enddataseg _STUBS +begcodeseg _STUBS +off = firstOffset +ENDM + +MACRO DECLARE_STUB name +ifdef __NOU__ +name: + PUBLIC name +else +_&name: + PUBLIC _&name +endif + jmp [DWORD STUBS_START+off] +off = off + 4 +ENDM + +MACRO DECLARE_STDCALL name,num_args +ifdef STDCALL_MANGLE +_&name&@&num_args&: + PUBLIC _&name&@&num_args& +else +name: + PUBLIC name +endif + jmp [DWORD STUBS_START+off] +off = off + 4 +ENDM + +MACRO END_STUBS_DEF +endcodeseg _STUBS +ENDM + +MACRO BEGIN_IMPORTS_DEF name +BEGIN_STUBS_DEF name,4 +ENDM + +MACRO DECLARE_IMP name +DECLARE_STUB name +ENDM + +MACRO END_IMPORTS_DEF +END_STUBS_DEF +ENDM + +endif diff --git a/vere/ext/nasm/misc/xcrcgen.c b/vere/ext/nasm/misc/xcrcgen.c new file mode 100644 index 0000000..0198480 --- /dev/null +++ b/vere/ext/nasm/misc/xcrcgen.c @@ -0,0 +1,79 @@ +/* + * Produce a "generalized CRC" table. Assumes a platform with + * /dev/urandom -- otherwise reimplement get_random_byte(). + */ + +#include +#include +#include +#include +#include +#include + +static uint8_t get_random_byte(void) +{ + static int fd = -1; + uint8_t buf; + int rv; + + if (fd < 0) + fd = open("/dev/urandom", O_RDONLY); + + do { + errno = 0; + rv = read(fd, &buf, 1); + if (rv < 1 && errno != EAGAIN) + abort(); + } while (rv < 1); + + return buf; +} + +static void random_permute(uint8_t *buf) +{ + int i, j, k; + int m; + + for (i = 0; i < 256; i++) + buf[i] = i; + + m = 255; + for (i = 255; i > 0; i--) { + if (i <= (m >> 1)) + m >>= 1; + do { + j = get_random_byte() & m; + } while (j > i); + k = buf[i]; + buf[i] = buf[j]; + buf[j] = k; + } +} + +static void xcrc_table(uint64_t *buf) +{ + uint8_t perm[256]; + int i, j; + + memset(buf, 0, 8*256); /* Make static checkers happy */ + + for (i = 0; i < 8; i++) { + random_permute(perm); + for (j = 0; j < 256; j++) + buf[j] = (buf[j] << 8) | perm[j]; + } +} + +int main(void) +{ + int i; + uint64_t buf[256]; + + xcrc_table(buf); + + for (i = 0; i < 256; i++) { + printf("%016"PRIx64"\n", buf[i]); + } + + return 0; +} diff --git a/vere/ext/nasm/nasmlib/alloc.c b/vere/ext/nasm/nasmlib/alloc.c new file mode 100644 index 0000000..e25e0e0 --- /dev/null +++ b/vere/ext/nasm/nasmlib/alloc.c @@ -0,0 +1,197 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2019 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * nasmlib.c library routines for the Netwide Assembler + */ + +#include "compiler.h" +#include "nasmlib.h" +#include "error.h" +#include "alloc.h" + +size_t _nasm_last_string_size; + +fatal_func nasm_alloc_failed(void) +{ + nasm_critical("out of memory!"); +} + +void *nasm_malloc(size_t size) +{ + void *p; + +again: + p = malloc(size); + + if (unlikely(!p)) { + if (!size) { + size = 1; + goto again; + } + nasm_alloc_failed(); + } + return p; +} + +void *nasm_calloc(size_t nelem, size_t size) +{ + void *p; + +again: + p = calloc(nelem, size); + + if (unlikely(!p)) { + if (!nelem || !size) { + nelem = size = 1; + goto again; + } + nasm_alloc_failed(); + } + + return p; +} + +void *nasm_zalloc(size_t size) +{ + return nasm_calloc(size, 1); +} + +/* + * Unlike the system realloc, we do *not* allow size == 0 to be + * the equivalent to free(); we guarantee returning a non-NULL pointer. + * + * The check for calling malloc() is theoretically redundant, but be + * paranoid about the system library... + */ +void *nasm_realloc(void *q, size_t size) +{ + if (unlikely(!size)) + size = 1; + q = q ? realloc(q, size) : malloc(size); + return validate_ptr(q); +} + +void nasm_free(void *q) +{ + if (q) + free(q); +} + +char *nasm_strdup(const char *s) +{ + char *p; + const size_t size = strlen(s) + 1; + + _nasm_last_string_size = size; + p = nasm_malloc(size); + return memcpy(p, s, size); +} + +char *nasm_strndup(const char *s, size_t len) +{ + char *p; + + len = strnlen(s, len); + _nasm_last_string_size = len + 1; + p = nasm_malloc(len+1); + p[len] = '\0'; + return memcpy(p, s, len); +} + +char *nasm_strcat(const char *one, const char *two) +{ + char *rslt; + const size_t l1 = strlen(one); + const size_t s2 = strlen(two) + 1; + + _nasm_last_string_size = l1 + s2; + rslt = nasm_malloc(l1 + s2); + memcpy(rslt, one, l1); + memcpy(rslt + l1, two, s2); + return rslt; +} + +char *nasm_strcatn(const char *str1, ...) +{ + va_list ap; + char *rslt; /* Output buffer */ + size_t s; /* Total buffer size */ + size_t n; /* Number of arguments */ + size_t *ltbl; /* Table of lengths */ + size_t l, *lp; /* Length for current argument */ + const char *p; /* Currently examined argument */ + char *q; /* Output pointer */ + + n = 0; /* No strings encountered yet */ + p = str1; + va_start(ap, str1); + while (p) { + n++; + p = va_arg(ap, const char *); + } + va_end(ap); + + ltbl = nasm_malloc(n * sizeof(size_t)); + + s = 1; /* Space for final NULL */ + p = str1; + lp = ltbl; + va_start(ap, str1); + while (p) { + *lp++ = l = strlen(p); + s += l; + p = va_arg(ap, const char *); + } + va_end(ap); + + _nasm_last_string_size = s; + + q = rslt = nasm_malloc(s); + + p = str1; + lp = ltbl; + va_start(ap, str1); + while (p) { + l = *lp++; + memcpy(q, p, l); + q += l; + p = va_arg(ap, const char *); + } + va_end(ap); + *q = '\0'; + + nasm_free(ltbl); + + return rslt; +} diff --git a/vere/ext/nasm/nasmlib/alloc.h b/vere/ext/nasm/nasmlib/alloc.h new file mode 100644 index 0000000..9b8ad19 --- /dev/null +++ b/vere/ext/nasm/nasmlib/alloc.h @@ -0,0 +1,50 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef NASMLIB_ALLOC_H +#define NASMLIB_ALLOC_H + +#include "compiler.h" + +fatal_func nasm_alloc_failed(void); + +static inline void *validate_ptr(void *p) +{ + if (unlikely(!p)) + nasm_alloc_failed(); + return p; +} + +extern size_t _nasm_last_string_size; + +#endif /* NASMLIB_ALLOC_H */ diff --git a/vere/ext/nasm/nasmlib/asprintf.c b/vere/ext/nasm/nasmlib/asprintf.c new file mode 100644 index 0000000..0b8e49d --- /dev/null +++ b/vere/ext/nasm/nasmlib/asprintf.c @@ -0,0 +1,94 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "compiler.h" +#include "nasmlib.h" +#include "alloc.h" + +/* + * nasm_[v]asprintf() are variants of the semi-standard [v]asprintf() + * functions, except that we return the pointer instead of a count. + * The length of the string (with or without the final NUL) is available + * by calling nasm_last_string_{len,size}() afterwards. + * + * nasm_[v]axprintf() are similar, but allocates a user-defined amount + * of storage before the string, and returns a pointer to the + * allocated buffer. The size of that area is not included in the value + * returned by nasm_last_string_size(). + */ + +void *nasm_vaxprintf(size_t extra, const char *fmt, va_list ap) +{ + char *strp; + va_list xap; + size_t bytes; + + va_copy(xap, ap); + bytes = vsnprintf(NULL, 0, fmt, xap) + 1; + _nasm_last_string_size = bytes; + va_end(xap); + + strp = nasm_malloc(extra+bytes); + memset(strp, 0, extra); + vsnprintf(strp+extra, bytes, fmt, ap); + return strp; +} + +char *nasm_vasprintf(const char *fmt, va_list ap) +{ + return nasm_vaxprintf(0, fmt, ap); +} + +void *nasm_axprintf(size_t extra, const char *fmt, ...) +{ + va_list ap; + void *strp; + + va_start(ap, fmt); + strp = nasm_vaxprintf(extra, fmt, ap); + va_end(ap); + + return strp; +} + +char *nasm_asprintf(const char *fmt, ...) +{ + va_list ap; + char *strp; + + va_start(ap, fmt); + strp = nasm_vaxprintf(0, fmt, ap); + va_end(ap); + + return strp; +} diff --git a/vere/ext/nasm/nasmlib/badenum.c b/vere/ext/nasm/nasmlib/badenum.c new file mode 100644 index 0000000..6f880c8 --- /dev/null +++ b/vere/ext/nasm/nasmlib/badenum.c @@ -0,0 +1,43 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "nasmlib.h" + +/* Used to avoid returning NULL to a debug printing function */ +const char *invalid_enum_str(int x) +{ + static char buf[64]; + + snprintf(buf, sizeof buf, "", x); + return buf; +} diff --git a/vere/ext/nasm/nasmlib/bsi.c b/vere/ext/nasm/nasmlib/bsi.c new file mode 100644 index 0000000..ae31f48 --- /dev/null +++ b/vere/ext/nasm/nasmlib/bsi.c @@ -0,0 +1,76 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2016 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * nasmlib.c library routines for the Netwide Assembler + */ + +#include "compiler.h" + + +#include "nasmlib.h" + +/* + * Binary search. + */ +int bsi(const char *string, const char **array, int size) +{ + int i = -1, j = size; /* always, i < index < j */ + while (j - i >= 2) { + int k = (i + j) / 2; + int l = strcmp(string, array[k]); + if (l < 0) /* it's in the first half */ + j = k; + else if (l > 0) /* it's in the second half */ + i = k; + else /* we've got it :) */ + return k; + } + return -1; /* we haven't got it :( */ +} + +int bsii(const char *string, const char **array, int size) +{ + int i = -1, j = size; /* always, i < index < j */ + while (j - i >= 2) { + int k = (i + j) / 2; + int l = nasm_stricmp(string, array[k]); + if (l < 0) /* it's in the first half */ + j = k; + else if (l > 0) /* it's in the second half */ + i = k; + else /* we've got it :) */ + return k; + } + return -1; /* we haven't got it :( */ +} diff --git a/vere/ext/nasm/nasmlib/crc32.c b/vere/ext/nasm/nasmlib/crc32.c new file mode 100644 index 0000000..9b4068e --- /dev/null +++ b/vere/ext/nasm/nasmlib/crc32.c @@ -0,0 +1,115 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2021 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "compiler.h" +#include "hashtbl.h" + +const uint32_t crc32_tab[256] = { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, + 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, + 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, + 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, + 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, + 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, + 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, + 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, + 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, + 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, + 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, + 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, + 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, + 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, + 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, + 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, + 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, + 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, + 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, + 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, + 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, + 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, + 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, + 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, + 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, + 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, + 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, + 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, + 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, + 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, + 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, + 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, + 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D +}; + +uint32_t crc32b(uint32_t crc, const void *data, size_t len) +{ + register const uint8_t *p = data; + register uint32_t hashval = crc; + + while (len--) + { + hashval = (hashval >> 8) ^ crc32_tab[(hashval ^ *p++) & 0xff]; + } + + return hashval; +} diff --git a/vere/ext/nasm/nasmlib/crc64.c b/vere/ext/nasm/nasmlib/crc64.c new file mode 100644 index 0000000..e37e07b --- /dev/null +++ b/vere/ext/nasm/nasmlib/crc64.c @@ -0,0 +1,207 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2014 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "compiler.h" +#include "nctype.h" +#include "hashtbl.h" + +const uint64_t crc64_tab[256] = { + UINT64_C(0x0000000000000000), UINT64_C(0x7ad870c830358979), + UINT64_C(0xf5b0e190606b12f2), UINT64_C(0x8f689158505e9b8b), + UINT64_C(0xc038e5739841b68f), UINT64_C(0xbae095bba8743ff6), + UINT64_C(0x358804e3f82aa47d), UINT64_C(0x4f50742bc81f2d04), + UINT64_C(0xab28ecb46814fe75), UINT64_C(0xd1f09c7c5821770c), + UINT64_C(0x5e980d24087fec87), UINT64_C(0x24407dec384a65fe), + UINT64_C(0x6b1009c7f05548fa), UINT64_C(0x11c8790fc060c183), + UINT64_C(0x9ea0e857903e5a08), UINT64_C(0xe478989fa00bd371), + UINT64_C(0x7d08ff3b88be6f81), UINT64_C(0x07d08ff3b88be6f8), + UINT64_C(0x88b81eabe8d57d73), UINT64_C(0xf2606e63d8e0f40a), + UINT64_C(0xbd301a4810ffd90e), UINT64_C(0xc7e86a8020ca5077), + UINT64_C(0x4880fbd87094cbfc), UINT64_C(0x32588b1040a14285), + UINT64_C(0xd620138fe0aa91f4), UINT64_C(0xacf86347d09f188d), + UINT64_C(0x2390f21f80c18306), UINT64_C(0x594882d7b0f40a7f), + UINT64_C(0x1618f6fc78eb277b), UINT64_C(0x6cc0863448deae02), + UINT64_C(0xe3a8176c18803589), UINT64_C(0x997067a428b5bcf0), + UINT64_C(0xfa11fe77117cdf02), UINT64_C(0x80c98ebf2149567b), + UINT64_C(0x0fa11fe77117cdf0), UINT64_C(0x75796f2f41224489), + UINT64_C(0x3a291b04893d698d), UINT64_C(0x40f16bccb908e0f4), + UINT64_C(0xcf99fa94e9567b7f), UINT64_C(0xb5418a5cd963f206), + UINT64_C(0x513912c379682177), UINT64_C(0x2be1620b495da80e), + UINT64_C(0xa489f35319033385), UINT64_C(0xde51839b2936bafc), + UINT64_C(0x9101f7b0e12997f8), UINT64_C(0xebd98778d11c1e81), + UINT64_C(0x64b116208142850a), UINT64_C(0x1e6966e8b1770c73), + UINT64_C(0x8719014c99c2b083), UINT64_C(0xfdc17184a9f739fa), + UINT64_C(0x72a9e0dcf9a9a271), UINT64_C(0x08719014c99c2b08), + UINT64_C(0x4721e43f0183060c), UINT64_C(0x3df994f731b68f75), + UINT64_C(0xb29105af61e814fe), UINT64_C(0xc849756751dd9d87), + UINT64_C(0x2c31edf8f1d64ef6), UINT64_C(0x56e99d30c1e3c78f), + UINT64_C(0xd9810c6891bd5c04), UINT64_C(0xa3597ca0a188d57d), + UINT64_C(0xec09088b6997f879), UINT64_C(0x96d1784359a27100), + UINT64_C(0x19b9e91b09fcea8b), UINT64_C(0x636199d339c963f2), + UINT64_C(0xdf7adabd7a6e2d6f), UINT64_C(0xa5a2aa754a5ba416), + UINT64_C(0x2aca3b2d1a053f9d), UINT64_C(0x50124be52a30b6e4), + UINT64_C(0x1f423fcee22f9be0), UINT64_C(0x659a4f06d21a1299), + UINT64_C(0xeaf2de5e82448912), UINT64_C(0x902aae96b271006b), + UINT64_C(0x74523609127ad31a), UINT64_C(0x0e8a46c1224f5a63), + UINT64_C(0x81e2d7997211c1e8), UINT64_C(0xfb3aa75142244891), + UINT64_C(0xb46ad37a8a3b6595), UINT64_C(0xceb2a3b2ba0eecec), + UINT64_C(0x41da32eaea507767), UINT64_C(0x3b024222da65fe1e), + UINT64_C(0xa2722586f2d042ee), UINT64_C(0xd8aa554ec2e5cb97), + UINT64_C(0x57c2c41692bb501c), UINT64_C(0x2d1ab4dea28ed965), + UINT64_C(0x624ac0f56a91f461), UINT64_C(0x1892b03d5aa47d18), + UINT64_C(0x97fa21650afae693), UINT64_C(0xed2251ad3acf6fea), + UINT64_C(0x095ac9329ac4bc9b), UINT64_C(0x7382b9faaaf135e2), + UINT64_C(0xfcea28a2faafae69), UINT64_C(0x8632586aca9a2710), + UINT64_C(0xc9622c4102850a14), UINT64_C(0xb3ba5c8932b0836d), + UINT64_C(0x3cd2cdd162ee18e6), UINT64_C(0x460abd1952db919f), + UINT64_C(0x256b24ca6b12f26d), UINT64_C(0x5fb354025b277b14), + UINT64_C(0xd0dbc55a0b79e09f), UINT64_C(0xaa03b5923b4c69e6), + UINT64_C(0xe553c1b9f35344e2), UINT64_C(0x9f8bb171c366cd9b), + UINT64_C(0x10e3202993385610), UINT64_C(0x6a3b50e1a30ddf69), + UINT64_C(0x8e43c87e03060c18), UINT64_C(0xf49bb8b633338561), + UINT64_C(0x7bf329ee636d1eea), UINT64_C(0x012b592653589793), + UINT64_C(0x4e7b2d0d9b47ba97), UINT64_C(0x34a35dc5ab7233ee), + UINT64_C(0xbbcbcc9dfb2ca865), UINT64_C(0xc113bc55cb19211c), + UINT64_C(0x5863dbf1e3ac9dec), UINT64_C(0x22bbab39d3991495), + UINT64_C(0xadd33a6183c78f1e), UINT64_C(0xd70b4aa9b3f20667), + UINT64_C(0x985b3e827bed2b63), UINT64_C(0xe2834e4a4bd8a21a), + UINT64_C(0x6debdf121b863991), UINT64_C(0x1733afda2bb3b0e8), + UINT64_C(0xf34b37458bb86399), UINT64_C(0x8993478dbb8deae0), + UINT64_C(0x06fbd6d5ebd3716b), UINT64_C(0x7c23a61ddbe6f812), + UINT64_C(0x3373d23613f9d516), UINT64_C(0x49aba2fe23cc5c6f), + UINT64_C(0xc6c333a67392c7e4), UINT64_C(0xbc1b436e43a74e9d), + UINT64_C(0x95ac9329ac4bc9b5), UINT64_C(0xef74e3e19c7e40cc), + UINT64_C(0x601c72b9cc20db47), UINT64_C(0x1ac40271fc15523e), + UINT64_C(0x5594765a340a7f3a), UINT64_C(0x2f4c0692043ff643), + UINT64_C(0xa02497ca54616dc8), UINT64_C(0xdafce7026454e4b1), + UINT64_C(0x3e847f9dc45f37c0), UINT64_C(0x445c0f55f46abeb9), + UINT64_C(0xcb349e0da4342532), UINT64_C(0xb1eceec59401ac4b), + UINT64_C(0xfebc9aee5c1e814f), UINT64_C(0x8464ea266c2b0836), + UINT64_C(0x0b0c7b7e3c7593bd), UINT64_C(0x71d40bb60c401ac4), + UINT64_C(0xe8a46c1224f5a634), UINT64_C(0x927c1cda14c02f4d), + UINT64_C(0x1d148d82449eb4c6), UINT64_C(0x67ccfd4a74ab3dbf), + UINT64_C(0x289c8961bcb410bb), UINT64_C(0x5244f9a98c8199c2), + UINT64_C(0xdd2c68f1dcdf0249), UINT64_C(0xa7f41839ecea8b30), + UINT64_C(0x438c80a64ce15841), UINT64_C(0x3954f06e7cd4d138), + UINT64_C(0xb63c61362c8a4ab3), UINT64_C(0xcce411fe1cbfc3ca), + UINT64_C(0x83b465d5d4a0eece), UINT64_C(0xf96c151de49567b7), + UINT64_C(0x76048445b4cbfc3c), UINT64_C(0x0cdcf48d84fe7545), + UINT64_C(0x6fbd6d5ebd3716b7), UINT64_C(0x15651d968d029fce), + UINT64_C(0x9a0d8ccedd5c0445), UINT64_C(0xe0d5fc06ed698d3c), + UINT64_C(0xaf85882d2576a038), UINT64_C(0xd55df8e515432941), + UINT64_C(0x5a3569bd451db2ca), UINT64_C(0x20ed197575283bb3), + UINT64_C(0xc49581ead523e8c2), UINT64_C(0xbe4df122e51661bb), + UINT64_C(0x3125607ab548fa30), UINT64_C(0x4bfd10b2857d7349), + UINT64_C(0x04ad64994d625e4d), UINT64_C(0x7e7514517d57d734), + UINT64_C(0xf11d85092d094cbf), UINT64_C(0x8bc5f5c11d3cc5c6), + UINT64_C(0x12b5926535897936), UINT64_C(0x686de2ad05bcf04f), + UINT64_C(0xe70573f555e26bc4), UINT64_C(0x9ddd033d65d7e2bd), + UINT64_C(0xd28d7716adc8cfb9), UINT64_C(0xa85507de9dfd46c0), + UINT64_C(0x273d9686cda3dd4b), UINT64_C(0x5de5e64efd965432), + UINT64_C(0xb99d7ed15d9d8743), UINT64_C(0xc3450e196da80e3a), + UINT64_C(0x4c2d9f413df695b1), UINT64_C(0x36f5ef890dc31cc8), + UINT64_C(0x79a59ba2c5dc31cc), UINT64_C(0x037deb6af5e9b8b5), + UINT64_C(0x8c157a32a5b7233e), UINT64_C(0xf6cd0afa9582aa47), + UINT64_C(0x4ad64994d625e4da), UINT64_C(0x300e395ce6106da3), + UINT64_C(0xbf66a804b64ef628), UINT64_C(0xc5bed8cc867b7f51), + UINT64_C(0x8aeeace74e645255), UINT64_C(0xf036dc2f7e51db2c), + UINT64_C(0x7f5e4d772e0f40a7), UINT64_C(0x05863dbf1e3ac9de), + UINT64_C(0xe1fea520be311aaf), UINT64_C(0x9b26d5e88e0493d6), + UINT64_C(0x144e44b0de5a085d), UINT64_C(0x6e963478ee6f8124), + UINT64_C(0x21c640532670ac20), UINT64_C(0x5b1e309b16452559), + UINT64_C(0xd476a1c3461bbed2), UINT64_C(0xaeaed10b762e37ab), + UINT64_C(0x37deb6af5e9b8b5b), UINT64_C(0x4d06c6676eae0222), + UINT64_C(0xc26e573f3ef099a9), UINT64_C(0xb8b627f70ec510d0), + UINT64_C(0xf7e653dcc6da3dd4), UINT64_C(0x8d3e2314f6efb4ad), + UINT64_C(0x0256b24ca6b12f26), UINT64_C(0x788ec2849684a65f), + UINT64_C(0x9cf65a1b368f752e), UINT64_C(0xe62e2ad306bafc57), + UINT64_C(0x6946bb8b56e467dc), UINT64_C(0x139ecb4366d1eea5), + UINT64_C(0x5ccebf68aecec3a1), UINT64_C(0x2616cfa09efb4ad8), + UINT64_C(0xa97e5ef8cea5d153), UINT64_C(0xd3a62e30fe90582a), + UINT64_C(0xb0c7b7e3c7593bd8), UINT64_C(0xca1fc72bf76cb2a1), + UINT64_C(0x45775673a732292a), UINT64_C(0x3faf26bb9707a053), + UINT64_C(0x70ff52905f188d57), UINT64_C(0x0a2722586f2d042e), + UINT64_C(0x854fb3003f739fa5), UINT64_C(0xff97c3c80f4616dc), + UINT64_C(0x1bef5b57af4dc5ad), UINT64_C(0x61372b9f9f784cd4), + UINT64_C(0xee5fbac7cf26d75f), UINT64_C(0x9487ca0fff135e26), + UINT64_C(0xdbd7be24370c7322), UINT64_C(0xa10fceec0739fa5b), + UINT64_C(0x2e675fb4576761d0), UINT64_C(0x54bf2f7c6752e8a9), + UINT64_C(0xcdcf48d84fe75459), UINT64_C(0xb71738107fd2dd20), + UINT64_C(0x387fa9482f8c46ab), UINT64_C(0x42a7d9801fb9cfd2), + UINT64_C(0x0df7adabd7a6e2d6), UINT64_C(0x772fdd63e7936baf), + UINT64_C(0xf8474c3bb7cdf024), UINT64_C(0x829f3cf387f8795d), + UINT64_C(0x66e7a46c27f3aa2c), UINT64_C(0x1c3fd4a417c62355), + UINT64_C(0x935745fc4798b8de), UINT64_C(0xe98f353477ad31a7), + UINT64_C(0xa6df411fbfb21ca3), UINT64_C(0xdc0731d78f8795da), + UINT64_C(0x536fa08fdfd90e51), UINT64_C(0x29b7d047efec8728), +}; + +uint64_t crc64(uint64_t crc, const char *str) +{ + uint8_t c; + + while ((c = *str++) != 0) + crc = crc64_byte(crc, c); + + return crc; +} + +uint64_t crc64i(uint64_t crc, const char *str) +{ + uint8_t c; + + while ((c = *str++) != 0) + crc = crc64_byte(crc, nasm_tolower(c)); + + return crc; +} + +uint64_t crc64b(uint64_t crc, const void *data, size_t len) +{ + const uint8_t *str = data; + + while (len--) + crc = crc64_byte(crc, *str++); + + return crc; +} + +uint64_t crc64ib(uint64_t crc, const void *data, size_t len) +{ + const uint8_t *str = data; + + while (len--) + crc = crc64_byte(crc, nasm_tolower(*str++)); + + return crc; +} diff --git a/vere/ext/nasm/nasmlib/errfile.c b/vere/ext/nasm/nasmlib/errfile.c new file mode 100644 index 0000000..a2c5e4f --- /dev/null +++ b/vere/ext/nasm/nasmlib/errfile.c @@ -0,0 +1,4 @@ +#include "compiler.h" + +FILE *error_file; + diff --git a/vere/ext/nasm/nasmlib/file.c b/vere/ext/nasm/nasmlib/file.c new file mode 100644 index 0000000..62b854d --- /dev/null +++ b/vere/ext/nasm/nasmlib/file.c @@ -0,0 +1,352 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "file.h" + +void nasm_read(void *ptr, size_t size, FILE *f) +{ + size_t n = fread(ptr, 1, size, f); + if (ferror(f)) { + nasm_fatal("unable to read input: %s", strerror(errno)); + } else if (n != size || feof(f)) { + nasm_fatal("fatal short read on input"); + } +} + +void nasm_write(const void *ptr, size_t size, FILE *f) +{ + size_t n = fwrite(ptr, 1, size, f); + if (n != size || ferror(f) || feof(f)) + nasm_fatal("unable to write output: %s", strerror(errno)); +} + +void fwriteint16_t(uint16_t data, FILE * fp) +{ + data = cpu_to_le16(data); + nasm_write(&data, 2, fp); +} + +void fwriteint32_t(uint32_t data, FILE * fp) +{ + data = cpu_to_le32(data); + nasm_write(&data, 4, fp); +} + +void fwriteint64_t(uint64_t data, FILE * fp) +{ + data = cpu_to_le64(data); + nasm_write(&data, 8, fp); +} + +void fwriteaddr(uint64_t data, int size, FILE * fp) +{ + data = cpu_to_le64(data); + nasm_write(&data, size, fp); +} + +void fwritezero(off_t bytes, FILE *fp) +{ + size_t blksize; + +#ifdef os_ftruncate + if (bytes >= BUFSIZ && !ferror(fp) && !feof(fp)) { + off_t pos = ftello(fp); + if (pos != (off_t)-1) { + off_t end = pos + bytes; + if (!fflush(fp) && !os_ftruncate(fileno(fp), end)) { + fseeko(fp, 0, SEEK_END); + pos = ftello(fp); + if (pos != (off_t)-1) + bytes = end - pos; /* This SHOULD be zero */ + } + } + } +#endif + + while (bytes > 0) { + blksize = (bytes < ZERO_BUF_SIZE) ? bytes : ZERO_BUF_SIZE; + + nasm_write(zero_buffer, blksize, fp); + bytes -= blksize; + } +} + +#ifdef _WIN32 + +/* + * On Windows, we want to use _wfopen(), as fopen() has a much smaller limit + * on the path length that it supports. + * + * Previously we tried to prefix the path name with \\?\ in order to + * let the Windows kernel know that we are not limited to PATH_MAX + * characters, but it breaks relative paths among other things, and + * apparently Windows 10 contains a registry option to override this + * limit anyway. One day maybe they will even implement UTF-8 as byte + * characters so we can use the standard file API even on this OS. + */ + +os_filename os_mangle_filename(const char *filename) +{ + mbstate_t ps; + size_t wclen; + wchar_t *buf; + const char *p; + + /* + * Note: mbsrtowcs() return (size_t)-1 on error, otherwise + * the length of the string *without* final NUL in wchar_t + * units. Thus we add 1 for the final NUL; the error value + * now becomes 0. + */ + memset(&ps, 0, sizeof ps); /* Begin in the initial state */ + p = filename; + wclen = mbsrtowcs(NULL, &p, 0, &ps) + 1; + if (!wclen) + return NULL; + + buf = nasm_malloc(wclen * sizeof(wchar_t)); + + memset(&ps, 0, sizeof ps); /* Begin in the initial state */ + p = filename; + if (mbsrtowcs(buf, &p, wclen, &ps) + 1 != wclen || p) { + nasm_free(buf); + return NULL; + } + + return buf; +} + +#endif + +void nasm_set_binary_mode(FILE *f) +{ + os_set_binary_mode(f); +} + +FILE *nasm_open_read(const char *filename, enum file_flags flags) +{ + FILE *f = NULL; + os_filename osfname; + + osfname = os_mangle_filename(filename); + if (osfname) { + os_fopenflag fopen_flags[4]; + memset(fopen_flags, 0, sizeof fopen_flags); + + fopen_flags[0] = 'r'; + fopen_flags[1] = (flags & NF_TEXT) ? 't' : 'b'; + +#if defined(__GLIBC__) || defined(__linux__) + /* + * Try to open this file with memory mapping for speed, unless we are + * going to do it "manually" with nasm_map_file() + */ + if (!(flags & NF_FORMAP)) + fopen_flags[2] = 'm'; +#endif + + while (true) { + f = os_fopen(osfname, fopen_flags); + if (f || errno != EINVAL || !fopen_flags[2]) + break; + + /* We got EINVAL but with 'm'; try again without 'm' */ + fopen_flags[2] = '\0'; + } + + os_free_filename(osfname); + } + + if (!f && (flags & NF_FATAL)) + nasm_fatalf(ERR_NOFILE, "unable to open input file: `%s': %s", + filename, strerror(errno)); + + return f; +} + +FILE *nasm_open_write(const char *filename, enum file_flags flags) +{ + FILE *f = NULL; + os_filename osfname; + + osfname = os_mangle_filename(filename); + if (osfname) { + os_fopenflag fopen_flags[3]; + + fopen_flags[0] = 'w'; + fopen_flags[1] = (flags & NF_TEXT) ? 't' : 'b'; + fopen_flags[2] = '\0'; + + f = os_fopen(osfname, fopen_flags); + os_free_filename(osfname); + } + + if (!f && (flags & NF_FATAL)) + nasm_fatalf(ERR_NOFILE, "unable to open output file: `%s': %s", + filename, strerror(errno)); + + switch (flags & NF_BUF_MASK) { + case NF_IONBF: + setvbuf(f, NULL, _IONBF, 0); + break; + case NF_IOLBF: + setvbuf(f, NULL, _IOLBF, 0); + break; + case NF_IOFBF: + setvbuf(f, NULL, _IOFBF, 0); + break; + default: + break; + } + + return f; +} + +/* The appropriate "rb" strings for os_fopen() */ +static const os_fopenflag fopenflags_rb[3] = { 'r', 'b', 0 }; + +/* + * Report the existence of a file + */ +bool nasm_file_exists(const char *filename) +{ +#ifndef os_access + FILE *f; +#endif + os_filename osfname; + bool exists; + + osfname = os_mangle_filename(filename); + if (!osfname) + return false; + +#ifdef os_access + exists = os_access(osfname, R_OK) == 0; +#else + f = os_fopen(osfname, fopenflags_rb); + exists = f != NULL; + if (f) + fclose(f); +#endif + + os_free_filename(osfname); + return exists; +} + +/* + * Report the file size of an open file. This MAY move the file pointer. + */ +off_t nasm_file_size(FILE *f) +{ + off_t where, end; + os_struct_stat st; + + if (!os_fstat(fileno(f), &st) && S_ISREG(st.st_mode)) + return st.st_size; + + /* Do it the hard way... this tests for seekability */ + + if (fseeko(f, 0, SEEK_CUR)) + goto fail; /* Not seekable, don't even try */ + + where = ftello(f); + if (where == (off_t)-1) + goto fail; + + if (fseeko(f, 0, SEEK_END)) + goto fail; + + end = ftello(f); + if (end == (off_t)-1) + goto fail; + + /* + * Move the file pointer back. If this fails, this is probably + * not a plain file. + */ + if (fseeko(f, where, SEEK_SET)) + goto fail; + + return end; + +fail: + return -1; +} + +/* + * Report file size given pathname + */ +off_t nasm_file_size_by_path(const char *pathname) +{ + os_filename osfname; + off_t len = -1; + os_struct_stat st; + FILE *fp; + + osfname = os_mangle_filename(pathname); + + if (!os_stat(osfname, &st) && S_ISREG(st.st_mode)) + len = st.st_size; + + fp = os_fopen(osfname, fopenflags_rb); + if (fp) { + len = nasm_file_size(fp); + fclose(fp); + } + + return len; +} + +/* + * Report the timestamp on a file, returns true if successful + */ +bool nasm_file_time(time_t *t, const char *pathname) +{ +#ifdef os_stat + os_filename osfname; + os_struct_stat st; + bool rv = false; + + osfname = os_mangle_filename(pathname); + if (!osfname) + return false; + + rv = !os_stat(osfname, &st); + *t = st.st_mtime; + os_free_filename(osfname); + + return rv; +#else + return false; /* No idea how to do this on this OS */ +#endif +} diff --git a/vere/ext/nasm/nasmlib/file.h b/vere/ext/nasm/nasmlib/file.h new file mode 100644 index 0000000..140cde3 --- /dev/null +++ b/vere/ext/nasm/nasmlib/file.h @@ -0,0 +1,234 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2022 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef NASMLIB_FILE_H +#define NASMLIB_FILE_H + +#include "compiler.h" +#include "nasmlib.h" +#include "error.h" + +#include + +#ifdef HAVE_FCNTL_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_IO_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif +#ifdef HAVE_SYS_MMAN_H +# include +#endif + +#ifndef R_OK +# define R_OK 4 /* Classic Unix constant, same on Windows */ +#endif + +/* Can we adjust the file size without actually writing all the bytes? */ +#ifdef HAVE__CHSIZE_S +# define os_ftruncate(fd,size) _chsize_s(fd,size) +#elif defined(HAVE__CHSIZE) +# define os_ftruncate(fd,size) _chsize(fd,size) +#elif defined(HAVE_FTRUNCATE) +# define os_ftruncate(fd,size) ftruncate(fd,size) +#endif + +/* + * On Windows, we want to use _wfopen(), as fopen() has a much smaller limit + * on the path length that it supports. Furthermore, we want to prefix the + * path name with \\?\ in order to let the Windows kernel know that + * we are not limited to PATH_MAX characters. Thus, we wrap all the functions + * which take filenames... + */ +#ifdef _WIN32 +# include +typedef wchar_t *os_filename; +typedef wchar_t os_fopenflag; + +os_filename os_mangle_filename(const char *filename); +static inline void os_free_filename(os_filename filename) +{ + nasm_free(filename); +} + +# define os_fopen _wfopen +# define os_access _waccess + +/* + * On Win32/64, we have to use the _wstati64() function. Note that + * we can't use _wstat64() without depending on a needlessly new + * version os MSVCRT. + */ + +typedef struct _stati64 os_struct_stat; + +# define os_stat _wstati64 +# define os_fstat _fstati64 + +/* + * On Win32/64, freopen() and _wfreopen() fails when the mode string + * is with the letter 'b' that represents to set binary mode. On + * POSIX operating systems, the 'b' is ignored, without failure. + */ + +#include +#include + +static inline void os_set_binary_mode(FILE *f) { + int ret = _setmode(_fileno(f), _O_BINARY); + + if (ret == -1) { + nasm_fatalf(ERR_NOFILE, "unable to open file: %s", + strerror(errno)); + } +} + +#else /* not _WIN32 */ + +typedef const char *os_filename; +typedef char os_fopenflag; + +static inline os_filename os_mangle_filename(const char *filename) +{ + return filename; +} +static inline void os_free_filename(os_filename filename) +{ + (void)filename; /* Nothing to do */ +} + +static inline void os_set_binary_mode(FILE *f) { + (void)f; +} + +# define os_fopen fopen + +#if defined(HAVE_FACCESSAT) && defined(AT_EACCESS) +static inline int os_access(os_filename pathname, int mode) +{ + return faccessat(AT_FDCWD, pathname, mode, AT_EACCESS); +} +# define os_access os_access +#elif defined(HAVE_ACCESS) +# define os_access access +#endif + +#ifdef HAVE_STRUCT_STAT +typedef struct stat os_struct_stat; +# ifdef HAVE_STAT +# define os_stat stat +# endif +# ifdef HAVE_FSTAT +# define os_fstat fstat +# endif +#else +struct dummy_struct_stat { + int st_mode; + int st_size; +}; +typedef struct dummy_struct_stat os_struct_stat; +#endif + +#endif /* Not _WIN32 */ + +#ifdef S_ISREG +/* all good */ +#elif defined(HAVE_S_ISREG) +/* exists, but not a macro */ +# define S_ISREG S_ISREG +#elif defined(S_IFMT) && defined(S_IFREG) +# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#elif defined(_S_IFMT) && defined(_S_IFREG) +# define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG) +#endif + +#ifdef fileno +/* all good */ +#elif defined(HAVE_FILENO) +/* exists, but not a macro */ +# define fileno fileno +#elif defined(_fileno) || defined(HAVE__FILENO) +# define fileno _fileno +#endif + +#ifndef S_ISREG +# undef os_stat +# undef os_fstat +#endif + +/* Disable these functions if they don't support something we need */ +#ifndef fileno +# undef os_fstat +# undef os_ftruncate +# undef HAVE_MMAP +#endif + +/* + * If we don't have functional versions of these functions, + * stub them out so we don't need so many #ifndefs + */ +#ifndef os_stat +static inline int os_stat(os_filename osfname, os_struct_stat *st) +{ + (void)osfname; + (void)st; + return -1; +} +#endif + +#ifndef os_fstat +static inline int os_fstat(int fd, os_struct_stat *st) +{ + (void)fd; + (void)st; + return -1; +} +#endif + +#ifndef S_ISREG +static inline bool S_ISREG(int m) +{ + (void)m; + return false; +} +#endif + +#endif /* NASMLIB_FILE_H */ diff --git a/vere/ext/nasm/nasmlib/filename.c b/vere/ext/nasm/nasmlib/filename.c new file mode 100644 index 0000000..172ae0b --- /dev/null +++ b/vere/ext/nasm/nasmlib/filename.c @@ -0,0 +1,63 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * nasmlib.c library routines for the Netwide Assembler + */ + +#include "compiler.h" +#include "nasmlib.h" +#include "error.h" + +/* + * Add/modify a filename extension, assumed to be a period-delimited + * field at the very end of the filename. Returns a newly allocated + * string buffer. + */ +const char *filename_set_extension(const char *inname, const char *extension) +{ + const char *q = inname; + char *p; + size_t elen = strlen(extension); + size_t baselen; + + q = strrchrnul(inname, '.'); /* find extension or end of string */ + baselen = q - inname; + + p = nasm_malloc(baselen + elen + 1); + + memcpy(p, inname, baselen); + memcpy(p+baselen, extension, elen+1); + + return p; +} diff --git a/vere/ext/nasm/nasmlib/hashtbl.c b/vere/ext/nasm/nasmlib/hashtbl.c new file mode 100644 index 0000000..9a4c0b5 --- /dev/null +++ b/vere/ext/nasm/nasmlib/hashtbl.c @@ -0,0 +1,287 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * hashtbl.c + * + * Efficient dictionary hash table class. + */ + +#include "compiler.h" + +#include "nasm.h" +#include "hashtbl.h" + +#define HASH_MAX_LOAD 2 /* Higher = more memory-efficient, slower */ +#define HASH_INIT_SIZE 16 /* Initial size (power of 2, min 4) */ + +#define hash_calc(key,keylen) crc64b(CRC64_INIT, (key), (keylen)) +#define hash_calci(key,keylen) crc64ib(CRC64_INIT, (key), (keylen)) +#define hash_max_load(size) ((size) * (HASH_MAX_LOAD - 1) / HASH_MAX_LOAD) +#define hash_expand(size) ((size) << 1) +#define hash_mask(size) ((size) - 1) +#define hash_pos(hash, mask) ((hash) & (mask)) +#define hash_inc(hash, mask) ((((hash) >> 32) & (mask)) | 1) /* always odd */ +#define hash_pos_next(pos, inc, mask) (((pos) + (inc)) & (mask)) + +static void hash_init(struct hash_table *head) +{ + head->size = HASH_INIT_SIZE; + head->load = 0; + head->max_load = hash_max_load(head->size); + nasm_newn(head->table, head->size); +} + +/* + * Find an entry in a hash table. The key can be any binary object. + * + * On failure, if "insert" is non-NULL, store data in that structure + * which can be used to insert that node using hash_add(). + * See hash_add() for constraints on the uses of the insert object. + * + * On success, return a pointer to the "data" element of the hash + * structure. + */ +void **hash_findb(struct hash_table *head, const void *key, + size_t keylen, struct hash_insert *insert) +{ + struct hash_node *np = NULL; + struct hash_node *tbl = head->table; + uint64_t hash = hash_calc(key, keylen); + size_t mask = hash_mask(head->size); + size_t pos = hash_pos(hash, mask); + size_t inc = hash_inc(hash, mask); + + if (likely(tbl)) { + while ((np = &tbl[pos])->key) { + if (hash == np->hash && + keylen == np->keylen && + !memcmp(key, np->key, keylen)) + return &np->data; + pos = hash_pos_next(pos, inc, mask); + } + } + + /* Not found. Store info for insert if requested. */ + if (insert) { + insert->node.hash = hash; + insert->node.key = key; + insert->node.keylen = keylen; + insert->node.data = NULL; + insert->head = head; + insert->where = np; + } + return NULL; +} + +/* + * Same as hash_findb(), but for a C string. + */ +void **hash_find(struct hash_table *head, const char *key, + struct hash_insert *insert) +{ + return hash_findb(head, key, strlen(key)+1, insert); +} + +/* + * Same as hash_findb(), but for case-insensitive hashing. + */ +void **hash_findib(struct hash_table *head, const void *key, size_t keylen, + struct hash_insert *insert) +{ + struct hash_node *np = NULL; + struct hash_node *tbl = head->table; + uint64_t hash = hash_calci(key, keylen); + size_t mask = hash_mask(head->size); + size_t pos = hash_pos(hash, mask); + size_t inc = hash_inc(hash, mask); + + if (likely(tbl)) { + while ((np = &tbl[pos])->key) { + if (hash == np->hash && + keylen == np->keylen && + !nasm_memicmp(key, np->key, keylen)) + return &np->data; + pos = hash_pos_next(pos, inc, mask); + } + } + + /* Not found. Store info for insert if requested. */ + if (insert) { + insert->node.hash = hash; + insert->node.key = key; + insert->node.keylen = keylen; + insert->node.data = NULL; + insert->head = head; + insert->where = np; + } + return NULL; +} + +/* + * Same as hash_find(), but for case-insensitive hashing. + */ +void **hash_findi(struct hash_table *head, const char *key, + struct hash_insert *insert) +{ + return hash_findib(head, key, strlen(key)+1, insert); +} + +/* + * Insert node. Return a pointer to the "data" element of the newly + * created hash node. + * + * The following constraints apply: + * 1. A call to hash_add() invalidates all other outstanding hash_insert + * objects; attempting to use them causes a wild pointer reference. + * 2. The key provided must exactly match the key passed to hash_find*(), + * but it does not have to point to the same storage address. The key + * buffer provided to this function must not be freed for the lifespan + * of the hash. NULL will use the same pointer that was passed to + * hash_find*(). + */ +void **hash_add(struct hash_insert *insert, const void *key, void *data) +{ + struct hash_table *head = insert->head; + struct hash_node *np = insert->where; + + if (unlikely(!np)) { + hash_init(head); + /* The hash table is empty, so we don't need to iterate here */ + np = &head->table[hash_pos(insert->node.hash, hash_mask(head->size))]; + } + + /* + * Insert node. We can always do this, even if we need to + * rebalance immediately after. + */ + *np = insert->node; + np->data = data; + if (key) + np->key = key; + + if (unlikely(++head->load > head->max_load)) { + /* Need to expand the table */ + size_t newsize = hash_expand(head->size); + struct hash_node *newtbl; + size_t mask = hash_mask(newsize); + struct hash_node *op, *xp; + size_t i; + + nasm_newn(newtbl, newsize); + + /* Rebalance all the entries */ + for (i = 0, op = head->table; i < head->size; i++, op++) { + if (op->key) { + size_t pos = hash_pos(op->hash, mask); + size_t inc = hash_inc(op->hash, mask); + + while ((xp = &newtbl[pos])->key) + pos = hash_pos_next(pos, inc, mask); + + *xp = *op; + if (op == np) + np = xp; + } + } + nasm_free(head->table); + + head->table = newtbl; + head->size = newsize; + head->max_load = hash_max_load(newsize); + } + + return &np->data; +} + +/* + * Iterate over all members of a hash set. For the first call, iter + * should be as initialized by hash_iterator_init(). Returns a struct + * hash_node representing the current object, or NULL if we have + * reached the end of the hash table. + * + * Calling hash_add() will invalidate the iterator. + */ +const struct hash_node *hash_iterate(struct hash_iterator *iter) +{ + const struct hash_table *head = iter->head; + const struct hash_node *cp = iter->next; + const struct hash_node *ep = head->table + head->size; + + /* For an empty table, cp == ep == NULL */ + while (cp < ep) { + if (cp->key) { + iter->next = cp+1; + return cp; + } + cp++; + } + + iter->next = head->table; + return NULL; +} + +/* + * Free the hash itself. Doesn't free the data elements; use + * hash_iterate() to do that first, if needed. This function is normally + * used when the hash data entries are either freed separately, or + * compound objects which can't be freed in a single operation. + */ +void hash_free(struct hash_table *head) +{ + void *p = head->table; + memset(head, 0, sizeof *head); + nasm_free(p); +} + +/* + * Frees the hash *and* all data elements. This is applicable only in + * the case where the data element is a single allocation. If the + * second argument is false, the key string is part of the data + * allocation or belongs to an allocation which will be freed + * separately, if it is true the keys are also freed. + */ +void hash_free_all(struct hash_table *head, bool free_keys) +{ + struct hash_iterator it; + const struct hash_node *np; + + hash_for_each(head, it, np) { + if (np->data) + nasm_free(np->data); + if (free_keys && np->key) + nasm_free((void *)np->key); + } + + hash_free(head); +} diff --git a/vere/ext/nasm/nasmlib/ilog2.c b/vere/ext/nasm/nasmlib/ilog2.c new file mode 100644 index 0000000..cba2224 --- /dev/null +++ b/vere/ext/nasm/nasmlib/ilog2.c @@ -0,0 +1,2 @@ +#define ILOG2_C +#include "ilog2.h" diff --git a/vere/ext/nasm/nasmlib/md5c.c b/vere/ext/nasm/nasmlib/md5c.c new file mode 100644 index 0000000..79cf4e0 --- /dev/null +++ b/vere/ext/nasm/nasmlib/md5c.c @@ -0,0 +1,246 @@ +/* + * This code implements the MD5 message-digest algorithm. + * The algorithm is due to Ron Rivest. This code was + * written by Colin Plumb in 1993, no copyright is claimed. + * This code is in the public domain; do with it what you wish. + * + * Equivalent code is available from RSA Data Security, Inc. + * This code has been tested against that, and is equivalent, + * except that you don't need to include two pages of legalese + * with every copy. + * + * To compute the message digest of a chunk of bytes, declare an + * MD5Context structure, pass it to MD5Init, call MD5Update as + * needed on buffers full of bytes, and then call MD5Final, which + * will fill a supplied 16-byte array with the digest. + */ + +#include "md5.h" + +#ifdef WORDS_LITTLEENDIAN +#define byteReverse(buf, len) /* Nothing */ +#else +static void byteReverse(unsigned char *buf, unsigned longs); + +/* + * Note: this code is harmless on little-endian machines. + */ +static void byteReverse(unsigned char *buf, unsigned longs) +{ + uint32_t t; + do { + t = (uint32_t) ((unsigned) buf[3] << 8 | buf[2]) << 16 | + ((unsigned) buf[1] << 8 | buf[0]); + *(uint32_t *) buf = t; + buf += 4; + } while (--longs); +} +#endif + +/* + * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious + * initialization constants. + */ +void MD5Init(MD5_CTX *ctx) +{ + ctx->buf[0] = 0x67452301; + ctx->buf[1] = 0xefcdab89; + ctx->buf[2] = 0x98badcfe; + ctx->buf[3] = 0x10325476; + + ctx->bits[0] = 0; + ctx->bits[1] = 0; +} + +/* + * Update context to reflect the concatenation of another buffer full + * of bytes. + */ +void MD5Update(MD5_CTX *ctx, unsigned char const *buf, unsigned len) +{ + uint32_t t; + + /* Update bitcount */ + + t = ctx->bits[0]; + if ((ctx->bits[0] = t + ((uint32_t) len << 3)) < t) + ctx->bits[1]++; /* Carry from low to high */ + ctx->bits[1] += len >> 29; + + t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ + + /* Handle any leading odd-sized chunks */ + + if (t) { + unsigned char *p = (unsigned char *) ctx->in + t; + + t = 64 - t; + if (len < t) { + memcpy(p, buf, len); + return; + } + memcpy(p, buf, t); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (uint32_t *) ctx->in); + buf += t; + len -= t; + } + /* Process data in 64-byte chunks */ + + while (len >= 64) { + memcpy(ctx->in, buf, 64); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (uint32_t *) ctx->in); + buf += 64; + len -= 64; + } + + /* Handle any remaining bytes of data. */ + + memcpy(ctx->in, buf, len); +} + +/* + * Final wrapup - pad to 64-byte boundary with the bit pattern + * 1 0* (64-bit count of bits processed, MSB-first) + */ +void MD5Final(unsigned char digest[16], MD5_CTX *ctx) +{ + unsigned count; + unsigned char *p; + + /* Compute number of bytes mod 64 */ + count = (ctx->bits[0] >> 3) & 0x3F; + + /* Set the first char of padding to 0x80. This is safe since there is + always at least one byte free */ + p = ctx->in + count; + *p++ = 0x80; + + /* Bytes of padding needed to make 64 bytes */ + count = 64 - 1 - count; + + /* Pad out to 56 mod 64 */ + if (count < 8) { + /* Two lots of padding: Pad the first block to 64 bytes */ + memset(p, 0, count); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (uint32_t *) ctx->in); + + /* Now fill the next block with 56 bytes */ + memset(ctx->in, 0, 56); + } else { + /* Pad block to 56 bytes */ + memset(p, 0, count - 8); + } + byteReverse(ctx->in, 14); + + /* Append length in bits and transform */ + ((uint32_t *) ctx->in)[14] = ctx->bits[0]; + ((uint32_t *) ctx->in)[15] = ctx->bits[1]; + + MD5Transform(ctx->buf, (uint32_t *) ctx->in); + byteReverse((unsigned char *) ctx->buf, 4); + memcpy(digest, ctx->buf, 16); + memset((char *) ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ +} + +/* The four core functions - F1 is optimized somewhat */ + +/* #define F1(x, y, z) (x & y | ~x & z) */ +#define F1(x, y, z) (z ^ (x & (y ^ z))) +#define F2(x, y, z) F1(z, x, y) +#define F3(x, y, z) (x ^ y ^ z) +#define F4(x, y, z) (y ^ (x | ~z)) + +/* This is the central step in the MD5 algorithm. */ +#define MD5STEP(f, w, x, y, z, data, s) \ + ( w += f(x, y, z) + data, w = w<>(32-s), w += x ) + +/* + * The core of the MD5 algorithm, this alters an existing MD5 hash to + * reflect the addition of 16 longwords of new data. MD5Update blocks + * the data and converts bytes into longwords for this routine. + */ +void MD5Transform(uint32_t buf[4], uint32_t const in[16]) +{ + register uint32_t a, b, c, d; + + a = buf[0]; + b = buf[1]; + c = buf[2]; + d = buf[3]; + + MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); + MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); + MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); + MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); + MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); + MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); + MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); + MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); + MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); + MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); + MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); + MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); + MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); + MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); + MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); + MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); + + MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); + MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); + MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); + MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); + MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); + MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); + MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); + MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); + MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); + MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); + MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); + MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); + MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); + MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); + MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); + MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); + + MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); + MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); + MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); + MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); + MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); + MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); + MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); + MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); + MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); + MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); + MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); + MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); + MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); + MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); + MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); + MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); + + MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); + MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); + MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); + MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); + MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); + MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); + MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); + MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); + MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); + MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); + MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); + MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); + MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); + MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); + MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); + MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); + + buf[0] += a; + buf[1] += b; + buf[2] += c; + buf[3] += d; +} diff --git a/vere/ext/nasm/nasmlib/mmap.c b/vere/ext/nasm/nasmlib/mmap.c new file mode 100644 index 0000000..5fc5646 --- /dev/null +++ b/vere/ext/nasm/nasmlib/mmap.c @@ -0,0 +1,139 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "file.h" + +/* ----------------------------------------------------------------------- * + * Unix-style memory mapping, using mmap(). + * ----------------------------------------------------------------------- */ +#if defined(HAVE_FILENO) && defined(HAVE_MMAP) + +/* + * System page size + */ + +/* File scope since not all compilers like static data in inline functions */ +static size_t nasm_pagemask; + +static size_t get_pagemask(void) +{ + size_t ps = 0; + +# if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE) + ps = sysconf(_SC_PAGESIZE); +# elif defined(HAVE_GETPAGESIZE) + ps = getpagesize(); +# elif defined(PAGE_SIZE) + ps = PAGE_SIZE; +# endif + + nasm_pagemask = ps = is_power2(ps) ? (ps - 1) : 0; + return ps; +} + +static inline size_t pagemask(void) +{ + size_t pm = nasm_pagemask; + + if (unlikely(!pm)) + return get_pagemask(); + + return pm; +} + +/* + * Try to map an input file into memory + */ +const void *nasm_map_file(FILE *fp, off_t start, off_t len) +{ + const char *p; + off_t astart; /* Aligned start */ + size_t salign; /* Amount of start adjustment */ + size_t alen; /* Aligned length */ + const size_t page_mask = pagemask(); + + if (unlikely(!page_mask)) + return NULL; /* Page size undefined? */ + + if (unlikely(!len)) + return NULL; /* Mapping nothing... */ + + if (unlikely(len != (off_t)(size_t)len)) + return NULL; /* Address space insufficient */ + + astart = start & ~(off_t)page_mask; + salign = start - astart; + alen = (len + salign + page_mask) & ~page_mask; + + p = mmap(NULL, alen, PROT_READ, MAP_SHARED, fileno(fp), astart); + return unlikely(p == MAP_FAILED) ? NULL : p + salign; +} + +/* + * Unmap an input file + */ +void nasm_unmap_file(const void *p, size_t len) +{ + const size_t page_mask = pagemask(); + uintptr_t astart; + size_t salign; + size_t alen; + + if (unlikely(!page_mask)) + return; + + astart = (uintptr_t)p & ~(uintptr_t)page_mask; + salign = (uintptr_t)p - astart; + alen = (len + salign + page_mask) & ~page_mask; + + munmap((void *)astart, alen); +} + +/* ----------------------------------------------------------------------- * + * No memory map support at all + * XXX: Add a section with Windows support + * ----------------------------------------------------------------------- */ +#else + +const void *nasm_map_file(FILE *fp, off_t start, off_t len) +{ + (void)fp; (void)start; (void)len; + return NULL; +} + +void nasm_unmap_file(const void *p, size_t len) +{ + (void)p; (void)len; +} + +#endif diff --git a/vere/ext/nasm/nasmlib/nctype.c b/vere/ext/nasm/nasmlib/nctype.c new file mode 100644 index 0000000..f30f37e --- /dev/null +++ b/vere/ext/nasm/nasmlib/nctype.c @@ -0,0 +1,116 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "nctype.h" +#include + +/* + * Table of tolower() results. This avoids function calls + * on some platforms. + */ +unsigned char nasm_tolower_tab[256]; + +static void tolower_tab_init(void) +{ + int i; + + for (i = 0; i < 256; i++) + nasm_tolower_tab[i] = tolower(i); +} + +/* + * Table of character type flags; some are simply , + * some are NASM-specific. + */ + +uint16_t nasm_ctype_tab[256]; + +#if !defined(HAVE_ISCNTRL) && !defined(iscntrl) +# define iscntrl(x) ((x) < 32) +#endif +#if !defined(HAVE_ISASCII) && !defined(isascii) +# define isascii(x) ((x) < 128) +#endif + +static void ctype_tab_init(void) +{ + int i; + + for (i = 0; i < 256; i++) { + enum nasm_ctype ct = 0; + + if (iscntrl(i)) + ct |= NCT_CTRL; + + if (isascii(i)) + ct |= NCT_ASCII; + + if (isspace(i) && i != '\n') + ct |= NCT_SPACE; + + if (isalpha(i)) { + ct |= (nasm_tolower(i) == i) ? NCT_LOWER : NCT_UPPER; + ct |= NCT_ID|NCT_IDSTART; + } + + if (isdigit(i)) + ct |= NCT_DIGIT|NCT_ID; + + if (isxdigit(i)) + ct |= NCT_HEX; + + /* Non-ASCII character, but no ctype returned (e.g. Unicode) */ + if (!ct && !ispunct(i)) + ct |= NCT_ID|NCT_IDSTART; + + nasm_ctype_tab[i] = ct; + } + + nasm_ctype_tab['-'] |= NCT_MINUS; + nasm_ctype_tab['$'] |= NCT_DOLLAR|NCT_ID; + nasm_ctype_tab['_'] |= NCT_UNDER|NCT_ID|NCT_IDSTART; + nasm_ctype_tab['.'] |= NCT_ID|NCT_IDSTART; + nasm_ctype_tab['@'] |= NCT_ID|NCT_IDSTART; + nasm_ctype_tab['?'] |= NCT_ID|NCT_IDSTART; + nasm_ctype_tab['#'] |= NCT_ID; + nasm_ctype_tab['~'] |= NCT_ID; + nasm_ctype_tab['\''] |= NCT_QUOTE; + nasm_ctype_tab['\"'] |= NCT_QUOTE; + nasm_ctype_tab['`'] |= NCT_QUOTE; +} + +void nasm_ctype_init(void) +{ + tolower_tab_init(); + ctype_tab_init(); +} diff --git a/vere/ext/nasm/nasmlib/path.c b/vere/ext/nasm/nasmlib/path.c new file mode 100644 index 0000000..d228ed1 --- /dev/null +++ b/vere/ext/nasm/nasmlib/path.c @@ -0,0 +1,186 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * path.c - host operating system specific pathname manipulation functions + * + * This file is inherently nonportable ... please help adjusting it to + * any new platforms that may be necessary. + */ + +#include "compiler.h" +#include "nasmlib.h" +#include "error.h" + +#if defined(__MSDOS__) || defined(__DOS__) || \ + defined(__WINDOWS__) || defined(_Windows) || \ + defined(__OS2__) || defined(_WIN16) || defined(WIN32) || defined(_WIN32) +/* MS-DOS/Windows and like operating systems */ +# define separators "/\\:" +# define cleandirend "/\\" +# define catsep '\\' +# define leaveonclean 2 /* Leave \\ at the start alone */ +# define curdir "." +#elif defined(unix) || defined(__unix) || defined(__unix__) || \ + defined(__UNIX__) || defined(__Unix__) || \ + defined(__MACH__) || defined(__BEOS__) +/* Unix and Unix-like operating systems and others using + * the equivalent syntax (slashes as only separators, no concept of volume) + * + * This must come after the __MSDOS__ section, since it seems that at + * least DJGPP defines __unix__ despite not being a Unix environment at all. + */ +# define separators "/" +# define cleandirend "/" +# define catsep '/' +# define leaveonclean 1 +# define curdir "." +#elif defined(Macintosh) || defined(macintosh) +/* MacOS classic */ +# define separators ":" +# define curdir ":" +# define catsep ':' +# define cleandirend ":" +# define leaveonclean 0 +# define leave_leading 1 +#elif defined(__VMS) +/* VMS * + * + * VMS filenames may have ;version at the end. Assume we should count that + * as part of the filename anyway. + */ +# define separators ":]" +# define curdir "[]" +#else +/* No idea what to do here, do nothing. Feel free to add new ones. */ +# define curdir "" +#endif + +/* + * This is an inline, because most compilers can greatly simplify this + * for a fixed string, like we have here. + */ +static inline bool ismatch(const char *charset, char ch) +{ + const char *p; + + for (p = charset; *p; p++) { + if (ch == *p) + return true; + } + + return false; +} + +static const char *first_filename_char(const char *path) +{ +#ifdef separators + const char *p = path + strlen(path); + + while (p > path) { + if (ismatch(separators, p[-1])) + return p; + p--; + } + + return p; +#else + return path; +#endif +} + +/* Return the filename portion of a PATH as a new string */ +char *nasm_basename(const char *path) +{ + return nasm_strdup(first_filename_char(path)); +} + +/* Return the directory name portion of a PATH as a new string */ +char *nasm_dirname(const char *path) +{ + const char *p = first_filename_char(path); + const char *p0 = p; + (void)p0; /* Don't warn if unused */ + + if (p == path) + return nasm_strdup(curdir); + +#ifdef cleandirend + while (p > path+leaveonclean) { + if (ismatch(cleandirend, p[-1])) + break; + p--; + } +#endif + +#ifdef leave_leading + /* If the directory contained ONLY separators, leave as-is */ + if (p == path+leaveonclean) + p = p0; +#endif + + return nasm_strndup(path, p-path); +} + +/* + * Concatenate a directory path and a filename. Note that this function + * currently does NOT handle the case where file itself contains + * directory components (except on Unix platforms, because it is trivial.) + */ +char *nasm_catfile(const char *dir, const char *file) +{ +#ifndef catsep + return nasm_strcat(dir, file); +#else + size_t dl = strlen(dir); + size_t fl = strlen(file); + char *p, *pp; + bool dosep = true; + + if (!dl || ismatch(separators, dir[dl-1])) { + /* No separator necessary */ + dosep = false; + } + + p = pp = nasm_malloc(dl + fl + dosep + 1); + + memcpy(pp, dir, dl); + pp += dl; + if (dosep) + *pp++ = catsep; + + memcpy(pp, file, fl+1); + + return p; +#endif +} diff --git a/vere/ext/nasm/nasmlib/perfhash.c b/vere/ext/nasm/nasmlib/perfhash.c new file mode 100644 index 0000000..acd3d28 --- /dev/null +++ b/vere/ext/nasm/nasmlib/perfhash.c @@ -0,0 +1,55 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "perfhash.h" +#include "hashtbl.h" /* For crc64i() */ + +int perfhash_find(const struct perfect_hash *hash, const char *str) +{ + uint32_t k1, k2; + uint64_t crc; + uint16_t ix; + + crc = crc64i(hash->crcinit, str); + k1 = (uint32_t)crc & hash->hashmask; + k2 = ((uint32_t)(crc >> 32) & hash->hashmask) + 1; + + ix = hash->hashvals[k1] + hash->hashvals[k2]; + + if (ix >= hash->tbllen || + !hash->strings[ix] || + nasm_stricmp(str, hash->strings[ix])) + return hash->errval; + + return hash->tbloffs + ix; +} diff --git a/vere/ext/nasm/nasmlib/perfhash.pl b/vere/ext/nasm/nasmlib/perfhash.pl new file mode 100755 index 0000000..0c885e8 --- /dev/null +++ b/vere/ext/nasm/nasmlib/perfhash.pl @@ -0,0 +1,357 @@ +#!/usr/bin/perl +## -------------------------------------------------------------------------- +## +## Copyright 1996-2017 The NASM Authors - All Rights Reserved +## See the file AUTHORS included with the NASM distribution for +## the specific copyright holders. +## +## 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. +## +## -------------------------------------------------------------------------- + +# +# Generate a perfect hash for general case-insensitive string-to-enum +# lookup. This generates an enum and the corresponding hash, but +# relies on a common function to parse the hash. +# +# Usage: +# perfhash.pl h foohash.dat foohash.h (to generate C header) +# perfhash.pl c foohash.dat foohash.c (to generate C source) +# + +use strict; + +require 'phash.ph'; + +sub basename($) { + my($s) = @_; + $s =~ s/^.*[^-[:alnum:]_\.]//; # Remove path component as best we can + return $s; +} + +sub intval($) { + my($s) = @_; + + if ($s =~ /^0/) { + return oct($s); # Handles octal or hexadecimal + } elsif ($s =~ /^\-(0.*)$/) { + return -oct($1); + } else { + return $s + 0; # Forcibly convert to number + } +} + +my($output, $infile, $outfile) = @ARGV; +my $me = basename($0); + +# The following special things are allowed in the input file: +# # or ; begins a comment +# #include filename +# #name str +# The name of the hash +# #prefix str +# Defines the prefix before enum +# #guard str +# Defines the header guard string +# #special str [= value] +# Generate an enum value without a corresponding string; not capitalized. +# #header str +# Indicates the name of the .h file to include from the .c file +# #errval str +# Define the value to be returned if a string is not found +# (defaults to -1). This can be any constant C expression, +# including one of the enum values. +# +# Regular lines are just str [= value] +# +# Enumeration is generated in the order listed in the file, just as in C +# specifying a value causes the values to increase by 1 from that point on +# unless specified. + +my $name; +my $prefix; +my $guard; +my $hfile; + +my %strings = (); +my %specials = (); +my $next_value = 0; +my $errval = '-1'; + +my @incstack = (); +my @filenames = ($infile); +my @linenums = (0); +my $dd = undef; +my $err = 0; + +while (scalar(@filenames)) { + if (!defined($dd)) { + open($dd, '<', $filenames[-1]) + or die "$0: cannot open: $filenames[-1]: $!\n"; + } + + my $line = <$dd>; + if (!defined($line)) { + close($dd); + $dd = pop @incstack; + pop @filenames; + pop @linenums; + next; + } + + $linenums[-1]++; + + chomp $line; + $line =~ s/\s*(|\;.*|\#\s.*|\#)$//; # Remove comments and trailing space + $line =~ s/^\s+//; # Remove leading space + if ($line eq '') { + # Do nothing + } elsif ($line =~ /^\#name\s+([[:alnum:]_]+)$/) { + $name = $1; + } elsif ($line =~ /^\#prefix\s+([[:alnum:]_]+)$/) { + $prefix = $1; + } elsif ($line =~ /^\#guard\s+([[:alnum:]_]+)$/) { + $guard = $1; + } elsif ($line =~ /^\#errval\s+(\S.*)$/) { + $errval = $1; + } elsif ($line =~ /^\#header\s+(\"(.+)\"|\S+)$/) { + $hfile = ($2 ne '') ? $2 : $1; + } elsif ($line =~ /^\#include\s+(\"(.+)\"|\S+)$/) { + push @incstack, $dd; + push @filenames, (($2 ne '') ? $2 : $1); + push @linenums, 0; + undef $dd; # Open a new file + } elsif ($line =~ /^(|\#special\s+)(\S+)\s*(|=\s*(\-?(0[Xx][[:xdigit:]]+|0[0-7]*|[0-9]+)))$/) { + $next_value = intval($4) if ($4 ne ''); + if ($1 eq '') { + $strings{$2} = $next_value++; + } else { + $specials{$2} = $next_value++; + } + } else { + printf STDERR "%s:%d:%s syntax error: \"%s\"\n", + $filenames[-1], $linenums[-1], + (scalar(@incstack) == 1) ? '' : "(from $infile)", $line; + $err++; + } +} + +exit 1 if ($err); + +# Default name, prefix, and header guard name +if (!defined($name)) { + $name = basename($infile); + $name =~ s/(\..*)$//; # Strip extension, if any +} +if (!defined($prefix)) { + $prefix = "\U${name}\E_"; +} +if (!defined($hfile)) { + $hfile = $outfile; + $hfile =~ s/\.c$/\.h/; +} +if (!defined($guard)) { + $guard = basename($hfile); + $guard =~ s/[^[:alnum:]_]/_/g; + $guard =~ s/__+/_/g; + $guard = "\U$guard"; +} + +# Verify input. We can't have more than one constant with the same +# enumeration value, nor the same enumeration string. +if (scalar(keys(%strings)) == 0) { + die "$0: $infile: no strings to hash!\n"; +} + +my %enums; +my %enumvals; +my %stringbyval; +my $max_enum; +my $tbllen = 0; +my $tbloffs; +foreach my $s (keys(%strings)) { + my $es = "${prefix}\U${s}"; + $es =~ s/[^[:alnum:]_]/_/g; + $es =~ s/__+/_/g; + my $v = $strings{$s}; + $stringbyval{$v} = $s; + if (defined($enums{$es})) { + printf STDERR "%s: string \"%s\" duplicates existing enum %s\n", + $infile, $s, $es; + $err++; + } else { + $enums{$es} = $v; + } + if (defined($enumvals{$v})) { + printf STDERR "%s: string \"%s\" duplicates existing enum constant %d\n", $v; + $err++; + } else { + $enumvals{$v} = $es; + } + $max_enum = $v if (!defined($max_enum) || $v > $max_enum); + $tbloffs = $v if (!defined($tbloffs) || $v < $tbloffs); + $tbllen = $v+1 if (!defined($tbllen) || $v >= $tbllen); +} +foreach my $s (keys(%specials)) { + my $es = $prefix . $s; # No string mangling here + my $v = $specials{$s}; + if (defined($enums{$es})) { + printf STDERR "%s: special \"%s\" duplicates existing enum %s\n", + $infile, $s, $es; + $err++; + } else { + $enums{$es} = $v; + } + if (defined ($enumvals{$v})) { + printf STDERR "%s: special \"%s\" duplicates existing enum constant %d\n", $v; + $err++; + } else { + $enumvals{$v} = $es; + } + $max_enum = $v if ($v > $max_enum || !defined($max_enum)); +} + +$tbllen -= $tbloffs; +if ($tbllen > 65536) { + printf STDERR "%s: span of enumeration values too large\n"; + $err++; +} + +exit 1 if ($err); + +open(F, '>', $outfile) + or die "$0: cannot create: ${outfile}: $!\n"; + +if ($output eq 'h') { + print F "/*\n"; + print F " * This file is generated from $infile\n"; + print F " * by $me; do not edit.\n"; + print F " */\n"; + print F "\n"; + + print F "#ifndef $guard\n"; + print F "#define $guard 1\n\n"; + print F "#include \"perfhash.h\"\n\n"; + + my $c = '{'; + $next_value = 0; + print F "enum ${name} "; + foreach my $v (sort { $a <=> $b } keys(%enumvals)) { + my $s = $enumvals{$v}; + print F "$c\n $s"; + print F " = $v" if ($v != $next_value); + $next_value = $v + 1; + $c = ','; + } + print F "\n};\n\n"; + print F "extern const struct perfect_hash ${name}_hash;\n"; + printf F "extern const char * const %s_tbl[%d];\n", $name, $tbllen; + + print F "\nstatic inline enum ${name} ${name}_find(const char *str)\n"; + print F "{\n"; + print F " return perfhash_find(&${name}_hash, str);\n"; + print F "}\n"; + + print F "\nstatic inline const char * ${name}_name(enum ${name} x)\n"; + print F "{\n"; + printf F " size_t ix = (size_t)x - (%d);\n", $tbloffs; + printf F " if (ix >= %d)\n", $tbllen; + print F " return NULL;\n"; + print F " return ${name}_tbl[ix];\n"; + print F "}\n"; + + print F "\nstatic inline const char * ${name}_dname(enum ${name} x)\n"; + print F "{\n"; + print F " const char *y = ${name}_name(x);\n"; + print F " return y ? y : invalid_enum_str(x);\n"; + print F "}\n"; + + print F "\n#endif /* $guard */\n"; +} elsif ($output eq 'c') { + # The strings we hash must all be lower case, even if the string + # table doesn't contain them that way. + + my %lcstrings; + foreach my $s (keys(%strings)) { + my $ls = "\L$s"; + if (defined($lcstrings{$ls})) { + printf STDERR "%s: strings \"%s\" and \"%s\" differ only in case\n", + $infile, $s, $strings{$lcstrings{$s}}; + } else { + $lcstrings{$ls} = $strings{$s} - $tbloffs; + } + } + + my @hashinfo = gen_perfect_hash(\%lcstrings); + if (!@hashinfo) { + die "$0: no hash found\n"; + } + + # Paranoia... + verify_hash_table(\%lcstrings, \@hashinfo); + + my ($n, $sv, $g) = @hashinfo; + + die if ($n & ($n-1)); + + print F "/*\n"; + print F " * This file is generated from $infile\n"; + print F " * by $me; do not edit.\n"; + print F " */\n"; + print F "\n"; + + print F "#include \"$hfile\"\n\n"; + + printf F "const char * const %s_tbl[%d] = ", $name, $tbllen; + my $c = '{'; + for (my $i = $tbloffs; $i < $tbloffs+$tbllen; $i++) { + printf F "%s\n %s", $c, + defined($stringbyval{$i}) ? '"'.$stringbyval{$i}.'"' : 'NULL'; + $c = ','; + } + print F "\n};\n\n"; + + print F "#define INVALID_HASH_ENTRY (65536/3)\n\n"; + + printf F "static const int16_t %s_hashvals[%d] = ", $name, $n*2; + $c = '{'; + for (my $i = 0; $i < $n*2; $i++) { + my $h = ${$g}[$i]; + print F "$c\n ", defined($h) ? $h : 'INVALID_HASH_ENTRY'; + $c = ','; + } + print F "\n};\n\n"; + + print F "const struct perfect_hash ${name}_hash = {\n"; + printf F " UINT64_C(0x%08x%08x),\n", $$sv[0], $$sv[1]; # crcinit + printf F " UINT32_C(0x%x),\n", ($n-1) << 1; # hashmask + printf F " UINT32_C(%u),\n", $tbllen; # tbllen + printf F " %d,\n", $tbloffs; # tbloffs + printf F " (%s),\n", $errval; # errval + printf F " ${name}_hashvals,\n"; # hashvals + printf F " ${name}_tbl\n"; # strings + print F "};\n"; +} diff --git a/vere/ext/nasm/nasmlib/raa.c b/vere/ext/nasm/nasmlib/raa.c new file mode 100644 index 0000000..038f97a --- /dev/null +++ b/vere/ext/nasm/nasmlib/raa.c @@ -0,0 +1,198 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "nasmlib.h" +#include "raa.h" +#include "ilog2.h" + +/* + * Routines to manage a dynamic random access array of int64_ts which + * may grow in size to be more than the largest single malloc'able + * chunk. + */ + +#define RAA_LAYERSHIFT 11 /* 2^this many items per layer */ +#define RAA_LAYERSIZE ((size_t)1 << RAA_LAYERSHIFT) +#define RAA_LAYERMASK (RAA_LAYERSIZE-1) + +typedef struct RAA RAA; +typedef union RAA_UNION RAA_UNION; +typedef struct RAA_LEAF RAA_LEAF; +typedef struct RAA_BRANCH RAA_BRANCH; + +struct RAA { + /* Last position in this RAA */ + raaindex endposn; + + /* + * Number of layers below this one to get to the real data. 0 + * means this structure is a leaf, holding RAA_LAYERSIZE real + * data items; 1 and above mean it's a branch, holding + * RAA_LAYERSIZE pointers to the next level branch or leaf + * structures. + */ + unsigned int layers; + + /* + * Number of real data items spanned by one position in the + * `data' array at this level. This number is 0 trivially, for + * a leaf (level 0): for a level n branch it should be + * n*RAA_LAYERSHIFT. + */ + unsigned int shift; + + /* + * The actual data + */ + union RAA_UNION { + struct RAA_LEAF { + union intorptr data[RAA_LAYERSIZE]; + } l; + struct RAA_BRANCH { + struct RAA *data[RAA_LAYERSIZE]; + } b; + } u; +}; + +#define LEAFSIZ (sizeof(RAA)-sizeof(RAA_UNION)+sizeof(RAA_LEAF)) +#define BRANCHSIZ (sizeof(RAA)-sizeof(RAA_UNION)+sizeof(RAA_BRANCH)) + +static struct RAA *raa_init_layer(raaindex posn, unsigned int layers) +{ + struct RAA *r; + raaindex posmask; + + r = nasm_zalloc((layers == 0) ? LEAFSIZ : BRANCHSIZ); + r->shift = layers * RAA_LAYERSHIFT; + r->layers = layers; + posmask = ((raaindex)RAA_LAYERSIZE << r->shift) - 1; + r->endposn = posn | posmask; + return r; +} + +void raa_free(struct RAA *r) +{ + if (!r) + return; + + if (r->layers) { + struct RAA **p = r->u.b.data; + size_t i; + for (i = 0; i < RAA_LAYERSIZE; i++) + raa_free(*p++); + } + nasm_free(r); +} + +static const union intorptr *real_raa_read(struct RAA *r, raaindex posn) +{ + nasm_assert(posn <= (~(raaindex)0 >> 1)); + + if (unlikely(!r || posn > r->endposn)) + return NULL; /* Beyond the end */ + + while (r->layers) { + size_t l = (posn >> r->shift) & RAA_LAYERMASK; + r = r->u.b.data[l]; + if (!r) + return NULL; /* Not present */ + } + return &r->u.l.data[posn & RAA_LAYERMASK]; +} + +int64_t raa_read(struct RAA *r, raaindex pos) +{ + const union intorptr *ip; + + ip = real_raa_read(r, pos); + return ip ? ip->i : 0; +} + +void *raa_read_ptr(struct RAA *r, raaindex pos) +{ + const union intorptr *ip; + + ip = real_raa_read(r, pos); + return ip ? ip->p : NULL; +} + + +static struct RAA * +real_raa_write(struct RAA *r, raaindex posn, union intorptr value) +{ + struct RAA *result; + + nasm_assert(posn <= (~(raaindex)0 >> 1)); + + if (unlikely(!r)) { + /* Create a new top-level RAA */ + r = raa_init_layer(posn, ilog2_64(posn)/RAA_LAYERSHIFT); + } else { + while (unlikely(r->endposn < posn)) { + /* We need to add layers to an existing RAA */ + struct RAA *s = raa_init_layer(r->endposn, r->layers + 1); + s->u.b.data[0] = r; + r = s; + } + } + + result = r; + + while (r->layers) { + struct RAA **s; + size_t l = (posn >> r->shift) & RAA_LAYERMASK; + s = &r->u.b.data[l]; + if (unlikely(!*s)) + *s = raa_init_layer(posn, r->layers - 1); + r = *s; + } + r->u.l.data[posn & RAA_LAYERMASK] = value; + + return result; +} + +struct RAA *raa_write(struct RAA *r, raaindex posn, int64_t value) +{ + union intorptr ip; + + ip.i = value; + return real_raa_write(r, posn, ip); +} + +struct RAA *raa_write_ptr(struct RAA *r, raaindex posn, void *value) +{ + union intorptr ip; + + ip.p = value; + return real_raa_write(r, posn, ip); +} diff --git a/vere/ext/nasm/nasmlib/rbtree.c b/vere/ext/nasm/nasmlib/rbtree.c new file mode 100644 index 0000000..773338b --- /dev/null +++ b/vere/ext/nasm/nasmlib/rbtree.c @@ -0,0 +1,259 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * rbtree.c + * + * Simple implementation of a "left-leaning threaded red-black tree" + * with 64-bit integer keys. The search operation will return the + * highest node <= the key; only search and insert are supported, but + * additional standard llrbtree operations can be coded up at will. + * + * See http://www.cs.princeton.edu/~rs/talks/LLRB/RedBlack.pdf for + * information about left-leaning red-black trees. + * + * The "threaded" part means that left and right pointers that would + * otherwise be NULL are pointers to the in-order predecessor or + * successor node. The only pointers that are NULL are the very left- + * and rightmost, for which no corresponding side node exists. + * + * This, among other things, allows for efficient predecessor and + * successor operations without requiring dedicated space for a parent + * pointer. + * + * This implementation is robust for identical key values; such keys + * will not have their insertion order preserved, and after insertion + * of unrelated keys a lookup may return a different node for the + * duplicated key, but the prev/next operations will always enumerate + * all entries. + * + * The NULL pointers at the end are considered predecessor/successor + * pointers, so if the corresponding flags are clear it is always safe + * to access the pointed-to object without an explicit NULL pointer + * check. + */ + +#include "rbtree.h" +#include "nasmlib.h" + +struct rbtree *rb_search(const struct rbtree *tree, uint64_t key) +{ + const struct rbtree *best = NULL; + + if (tree) { + while (true) { + if (tree->key > key) { + if (tree->m.flags & RBTREE_NODE_PRED) + break; + tree = tree->m.left; + } else { + best = tree; + if (tree->key == key || (tree->m.flags & RBTREE_NODE_SUCC)) + break; + tree = tree->m.right; + } + } + } + return (struct rbtree *)best; +} + +struct rbtree *rb_search_exact(const struct rbtree *tree, uint64_t key) +{ + struct rbtree *rv; + + rv = rb_search(tree, key); + return (rv && rv->key == key) ? rv : NULL; +} + +/* Reds two left in a row? */ +static inline bool is_red_left_left(struct rbtree *h) +{ + return !(h->m.flags & RBTREE_NODE_PRED) && + !(h->m.left->m.flags & (RBTREE_NODE_BLACK|RBTREE_NODE_PRED)) && + !(h->m.left->m.left->m.flags & RBTREE_NODE_BLACK); +} + +/* Node to the right is red? */ +static inline bool is_red_right(struct rbtree *h) +{ + return !(h->m.flags & RBTREE_NODE_SUCC) && + !(h->m.right->m.flags & RBTREE_NODE_BLACK); +} + +/* Both the left and right hand nodes are red? */ +static inline bool is_red_both(struct rbtree *h) +{ + return !(h->m.flags & (RBTREE_NODE_PRED|RBTREE_NODE_SUCC)) + && !(h->m.left->m.flags & h->m.right->m.flags & RBTREE_NODE_BLACK); +} + +static inline struct rbtree *rotate_left(struct rbtree *h) +{ + struct rbtree *x = h->m.right; + enum rbtree_node_flags hf = h->m.flags; + enum rbtree_node_flags xf = x->m.flags; + + if (xf & RBTREE_NODE_PRED) { + h->m.right = x; + h->m.flags = (hf & RBTREE_NODE_PRED) | RBTREE_NODE_SUCC; + } else { + h->m.right = x->m.left; + h->m.flags = hf & RBTREE_NODE_PRED; + } + x->m.flags = (hf & RBTREE_NODE_BLACK) | (xf & RBTREE_NODE_SUCC); + x->m.left = h; + + return x; +} + +static inline struct rbtree *rotate_right(struct rbtree *h) +{ + struct rbtree *x = h->m.left; + enum rbtree_node_flags hf = h->m.flags; + enum rbtree_node_flags xf = x->m.flags; + + if (xf & RBTREE_NODE_SUCC) { + h->m.left = x; + h->m.flags = (hf & RBTREE_NODE_SUCC) | RBTREE_NODE_PRED; + } else { + h->m.left = x->m.right; + h->m.flags = hf & RBTREE_NODE_SUCC; + } + x->m.flags = (hf & RBTREE_NODE_BLACK) | (xf & RBTREE_NODE_PRED); + x->m.right = h; + + return x; +} + +static inline void color_flip(struct rbtree *h) +{ + h->m.flags ^= RBTREE_NODE_BLACK; + h->m.left->m.flags ^= RBTREE_NODE_BLACK; + h->m.right->m.flags ^= RBTREE_NODE_BLACK; +} + +static struct rbtree * +_rb_insert(struct rbtree *tree, struct rbtree *node); + +struct rbtree *rb_insert(struct rbtree *tree, struct rbtree *node) +{ + /* Initialize node as if it was the sole member of the tree */ + + nasm_zero(node->m); + node->m.flags = RBTREE_NODE_PRED|RBTREE_NODE_SUCC; + + if (unlikely(!tree)) + return node; + + return _rb_insert(tree, node); +} + +static struct rbtree * +_rb_insert(struct rbtree *tree, struct rbtree *node) +{ + /* Recursive part of the algorithm */ + + /* Red on both sides? */ + if (is_red_both(tree)) + color_flip(tree); + + if (node->key < tree->key) { + node->m.right = tree; /* Potential successor */ + if (tree->m.flags & RBTREE_NODE_PRED) { + node->m.left = tree->m.left; + tree->m.flags &= ~RBTREE_NODE_PRED; + tree->m.left = node; + } else { + tree->m.left = _rb_insert(tree->m.left, node); + } + } else { + node->m.left = tree; /* Potential predecessor */ + if (tree->m.flags & RBTREE_NODE_SUCC) { + node->m.right = tree->m.right; + tree->m.flags &= ~RBTREE_NODE_SUCC; + tree->m.right = node; + } else { + tree->m.right = _rb_insert(tree->m.right, node); + } + } + + if (is_red_right(tree)) + tree = rotate_left(tree); + + if (is_red_left_left(tree)) + tree = rotate_right(tree); + + return tree; +} + +struct rbtree *rb_first(const struct rbtree *tree) +{ + if (unlikely(!tree)) + return NULL; + + while (!(tree->m.flags & RBTREE_NODE_PRED)) + tree = tree->m.left; + + return (struct rbtree *)tree; +} + +struct rbtree *rb_last(const struct rbtree *tree) +{ + if (unlikely(!tree)) + return NULL; + + while (!(tree->m.flags & RBTREE_NODE_SUCC)) + tree = tree->m.right; + + return (struct rbtree *)tree; +} + +struct rbtree *rb_prev(const struct rbtree *node) +{ + struct rbtree *np = node->m.left; + + if (node->m.flags & RBTREE_NODE_PRED) + return np; + else + return rb_last(np); +} + +struct rbtree *rb_next(const struct rbtree *node) +{ + struct rbtree *np = node->m.right; + + if (node->m.flags & RBTREE_NODE_SUCC) + return np; + else + return rb_first(np); +} diff --git a/vere/ext/nasm/nasmlib/readnum.c b/vere/ext/nasm/nasmlib/readnum.c new file mode 100644 index 0000000..947bda5 --- /dev/null +++ b/vere/ext/nasm/nasmlib/readnum.c @@ -0,0 +1,179 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2016 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * nasmlib.c library routines for the Netwide Assembler + */ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasmlib.h" +#include "error.h" +#include "nasm.h" /* For globalbits */ + +#define lib_isnumchar(c) (nasm_isalnum(c) || (c) == '$' || (c) == '_') + +static int radix_letter(char c) +{ + switch (c) { + case 'b': case 'B': + case 'y': case 'Y': + return 2; /* Binary */ + case 'o': case 'O': + case 'q': case 'Q': + return 8; /* Octal */ + case 'h': case 'H': + case 'x': case 'X': + return 16; /* Hexadecimal */ + case 'd': case 'D': + case 't': case 'T': + return 10; /* Decimal */ + default: + return 0; /* Not a known radix letter */ + } +} + +int64_t readnum(const char *str, bool *error) +{ + const char *r = str, *q; + int32_t pradix, sradix, radix; + int plen, slen, len; + uint64_t result, checklimit; + int digit, last; + bool warn = false; + int sign = 1; + + if (error) + *error = true; + + while (nasm_isspace(*r)) + r++; /* find start of number */ + + /* + * If the number came from make_tok_num (as a result of an %assign), it + * might have a '-' built into it (rather than in a preceding token). + */ + if (*r == '-') { + r++; + sign = -1; + } + + q = r; + + while (lib_isnumchar(*q)) + q++; /* find end of number */ + + len = q-r; + if (!len) { + /* Not numeric */ + return 0; + } + + /* + * Handle radix formats: + * + * 0 + * $ (hexadecimal) + * + */ + pradix = sradix = 0; + plen = slen = 0; + + if (len > 2 && *r == '0' && (pradix = radix_letter(r[1])) != 0) + plen = 2; + else if (len > 1 && *r == '$') + pradix = 16, plen = 1; + + if (len > 1 && (sradix = radix_letter(q[-1])) != 0) + slen = 1; + + if (pradix > sradix) { + radix = pradix; + r += plen; + } else if (sradix > pradix) { + radix = sradix; + q -= slen; + } else { + /* Either decimal, or invalid -- if invalid, we'll trip up + further down. */ + radix = 10; + } + + /* + * `checklimit' must be 2**64 / radix. We can't do that in + * 64-bit arithmetic, which we're (probably) using, so we + * cheat: since we know that all radices we use are even, we + * can divide 2**63 by radix/2 instead. + */ + checklimit = UINT64_C(0x8000000000000000) / (radix >> 1); + + /* + * Calculate the highest allowable value for the last digit of a + * 64-bit constant... in radix 10, it is 6, otherwise it is 0 + */ + last = (radix == 10 ? 6 : 0); + + result = 0; + while (*r && r < q) { + if (*r != '_') { + if (*r < '0' || (*r > '9' && *r < 'A') + || (digit = numvalue(*r)) >= radix) { + return 0; + } + if (result > checklimit || + (result == checklimit && digit >= last)) { + warn = true; + } + + result = radix * result + digit; + } + r++; + } + + if (warn) { + /*! + *!number-overflow [on] numeric constant does not fit + *! covers warnings about numeric constants which + *! don't fit in 64 bits. + */ + nasm_warn(WARN_NUMBER_OVERFLOW, + "numeric constant %s does not fit in 64 bits", + str); + } + + if (error) + *error = false; + return result * sign; +} diff --git a/vere/ext/nasm/nasmlib/realpath.c b/vere/ext/nasm/nasmlib/realpath.c new file mode 100644 index 0000000..eaa148a --- /dev/null +++ b/vere/ext/nasm/nasmlib/realpath.c @@ -0,0 +1,133 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2016 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * realpath.c As system-independent as possible implementation of realpath() + */ + +#include "compiler.h" + +#include +#ifdef HAVE_UNISTD_H +# include +#endif +#ifdef HAVE_SYS_PARAM_H +# include +#endif + +#include "nasmlib.h" + +#ifdef HAVE_CANONICALIZE_FILE_NAME + +/* + * GNU-specific, but avoids the realpath(..., NULL) + * portability problem if it exists. + */ +char *nasm_realpath(const char *rel_path) +{ + char *rp = canonicalize_file_name(rel_path); + return rp ? rp : nasm_strdup(rel_path); +} + +#elif defined(HAVE_REALPATH) + +/* + * POSIX.1-2008 defines realpath(..., NULL); POSIX.1-2001 doesn't guarantee + * that a NULL second argument is supported. + */ + +char *nasm_realpath(const char *rel_path) +{ + char *rp; + + rp = realpath(rel_path, NULL); + + /* Not all implementations of realpath() support a NULL second argument */ + if (!rp && errno == EINVAL) { + long path_max = -1; + char *rp; + +#if defined(HAVE_PATHCONF) && defined(_PC_PATH_MAX) + path_max = pathconf(rel_path, _PC_PATH_MAX); /* POSIX */ +#endif + + if (path_max < 0) { +#ifdef PATH_MAX + path_max = PATH_MAX; /* SUSv2 */ +#elif defined(MAXPATHLEN) + path_max = MAXPATHLEN; /* Solaris */ +#else + path_max = 65536; /* Crazily high, we hope */ +#endif + } + + rp = nasm_malloc(path_max); + + if (!realpath(rel_path, rp)) { + nasm_free(rp); + rp = NULL; + } else { + /* On some systems, pathconf() can return a very large value */ + + rp[path_max - 1] = '\0'; /* Just in case overrun is possible */ + rp = nasm_realloc(rp, strlen(rp) + 1); + } + } + + return rp ? rp : nasm_strdup(rel_path); +} + +#elif defined(HAVE__FULLPATH) + +/* + * win32/win64 API + */ + +char *nasm_realpath(const char *rel_path) +{ + char *rp = _fullpath(NULL, rel_path, 0); + return rp ? rp : nasm_strdup(rel_path); +} + +#else + +/* + * There is nothing we know how to do here, so hope it just works anyway. + */ + +char *nasm_realpath(const char *rel_path) +{ + return nasm_strdup(rel_path); +} + +#endif diff --git a/vere/ext/nasm/nasmlib/rlimit.c b/vere/ext/nasm/nasmlib/rlimit.c new file mode 100644 index 0000000..096879f --- /dev/null +++ b/vere/ext/nasm/nasmlib/rlimit.c @@ -0,0 +1,78 @@ + /* ----------------------------------------------------------------------- * + * + * Copyright 2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "compiler.h" +#include "nasmlib.h" + +#ifdef HAVE_SYS_RESOURCE_H +# include +#endif + +#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_STACK) + +size_t nasm_get_stack_size_limit(void) +{ + struct rlimit rl; + + if (getrlimit(RLIMIT_STACK, &rl)) + return SIZE_MAX; + +# ifdef RLIM_SAVED_MAX + if (rl.rlim_cur == RLIM_SAVED_MAX) + rl.rlim_cur = rl.rlim_max; +# endif + + if ( +# ifdef RLIM_INFINITY + rl.rlim_cur >= RLIM_INFINITY || +# endif +# ifdef RLIM_SAVED_CUR + rl.rlim_cur == RLIM_SAVED_CUR || +# endif +# ifdef RLIM_SAVED_MAX + rl.rlim_cur == RLIM_SAVED_MAX || +# endif + (size_t)rl.rlim_cur != rl.rlim_cur) + return SIZE_MAX; + + return rl.rlim_cur; +} + +#else + +size_t nasm_get_stack_size_limit(void) +{ + return SIZE_MAX; +} + +#endif diff --git a/vere/ext/nasm/nasmlib/saa.c b/vere/ext/nasm/nasmlib/saa.c new file mode 100644 index 0000000..dcc2c01 --- /dev/null +++ b/vere/ext/nasm/nasmlib/saa.c @@ -0,0 +1,383 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "compiler.h" +#include "nasmlib.h" +#include "saa.h" + +/* Aggregate SAA components smaller than this */ +#define SAA_BLKSHIFT 16 +#define SAA_BLKLEN ((size_t)1 << SAA_BLKSHIFT) + +struct SAA *saa_init(size_t elem_len) +{ + struct SAA *s; + char *data; + + s = nasm_zalloc(sizeof(struct SAA)); + + if (elem_len >= SAA_BLKLEN) + s->blk_len = elem_len; + else + s->blk_len = SAA_BLKLEN - (SAA_BLKLEN % elem_len); + + s->elem_len = elem_len; + s->length = s->blk_len; + data = nasm_malloc(s->blk_len); + s->nblkptrs = s->nblks = 1; + s->blk_ptrs = nasm_malloc(sizeof(char *)); + s->blk_ptrs[0] = data; + s->wblk = s->rblk = &s->blk_ptrs[0]; + + return s; +} + +void saa_free(struct SAA *s) +{ + char **p; + size_t n; + + for (p = s->blk_ptrs, n = s->nblks; n; p++, n--) + nasm_free(*p); + + nasm_free(s->blk_ptrs); + nasm_free(s); +} + +/* Add one allocation block to an SAA */ +static void saa_extend(struct SAA *s) +{ + size_t blkn = s->nblks++; + + if (blkn >= s->nblkptrs) { + size_t rindex = s->rblk - s->blk_ptrs; + size_t windex = s->wblk - s->blk_ptrs; + + s->nblkptrs <<= 1; + s->blk_ptrs = + nasm_realloc(s->blk_ptrs, s->nblkptrs * sizeof(char *)); + + s->rblk = s->blk_ptrs + rindex; + s->wblk = s->blk_ptrs + windex; + } + + s->blk_ptrs[blkn] = nasm_malloc(s->blk_len); + s->length += s->blk_len; +} + +void *saa_wstruct(struct SAA *s) +{ + void *p; + + nasm_assert((s->wpos % s->elem_len) == 0); + + if (s->wpos + s->elem_len > s->blk_len) { + nasm_assert(s->wpos == s->blk_len); + if (s->wptr + s->elem_len > s->length) + saa_extend(s); + s->wblk++; + s->wpos = 0; + } + + p = *s->wblk + s->wpos; + s->wpos += s->elem_len; + s->wptr += s->elem_len; + + if (s->wptr > s->datalen) + s->datalen = s->wptr; + + return p; +} + +void saa_wbytes(struct SAA *s, const void *data, size_t len) +{ + const char *d = data; + + while (len) { + size_t l = s->blk_len - s->wpos; + if (l > len) + l = len; + if (l) { + if (d) { + memcpy(*s->wblk + s->wpos, d, l); + d += l; + } else + memset(*s->wblk + s->wpos, 0, l); + s->wpos += l; + s->wptr += l; + len -= l; + + if (s->datalen < s->wptr) + s->datalen = s->wptr; + } + if (len) { + if (s->wptr >= s->length) + saa_extend(s); + s->wblk++; + s->wpos = 0; + } + } +} + +/* + * Writes a string, *including* the final null, to the specified SAA, + * and return the number of bytes written. + */ +size_t saa_wcstring(struct SAA *s, const char *str) +{ + size_t bytes = strlen(str) + 1; + + saa_wbytes(s, str, bytes); + + return bytes; +} + +void saa_rewind(struct SAA *s) +{ + s->rblk = s->blk_ptrs; + s->rpos = s->rptr = 0; +} + +void *saa_rstruct(struct SAA *s) +{ + void *p; + + if (s->rptr + s->elem_len > s->datalen) + return NULL; + + nasm_assert((s->rpos % s->elem_len) == 0); + + if (s->rpos + s->elem_len > s->blk_len) { + s->rblk++; + s->rpos = 0; + } + + p = *s->rblk + s->rpos; + s->rpos += s->elem_len; + s->rptr += s->elem_len; + + return p; +} + +const void *saa_rbytes(struct SAA *s, size_t * lenp) +{ + const void *p; + size_t len; + + if (s->rptr >= s->datalen) { + *lenp = 0; + return NULL; + } + + if (s->rpos >= s->blk_len) { + s->rblk++; + s->rpos = 0; + } + + len = *lenp; + if (len > s->datalen - s->rptr) + len = s->datalen - s->rptr; + if (len > s->blk_len - s->rpos) + len = s->blk_len - s->rpos; + + *lenp = len; + p = *s->rblk + s->rpos; + + s->rpos += len; + s->rptr += len; + + return p; +} + +void saa_rnbytes(struct SAA *s, void *data, size_t len) +{ + char *d = data; + + nasm_assert(s->rptr + len <= s->datalen); + + while (len) { + size_t l; + const void *p; + + l = len; + p = saa_rbytes(s, &l); + + memcpy(d, p, l); + d += l; + len -= l; + } +} + +/* Same as saa_rnbytes, except position the counter first */ +void saa_fread(struct SAA *s, size_t posn, void *data, size_t len) +{ + size_t ix; + + nasm_assert(posn + len <= s->datalen); + + if (likely(s->blk_len == SAA_BLKLEN)) { + ix = posn >> SAA_BLKSHIFT; + s->rpos = posn & (SAA_BLKLEN - 1); + } else { + ix = posn / s->blk_len; + s->rpos = posn % s->blk_len; + } + s->rptr = posn; + s->rblk = &s->blk_ptrs[ix]; + + saa_rnbytes(s, data, len); +} + +/* Same as saa_wbytes, except position the counter first */ +void saa_fwrite(struct SAA *s, size_t posn, const void *data, size_t len) +{ + size_t ix; + size_t padding = 0; + + if (posn > s->datalen) { + padding = posn - s->datalen; + posn = s->datalen; + } + + if (likely(s->blk_len == SAA_BLKLEN)) { + ix = posn >> SAA_BLKSHIFT; + s->wpos = posn & (SAA_BLKLEN - 1); + } else { + ix = posn / s->blk_len; + s->wpos = posn % s->blk_len; + } + s->wptr = posn; + s->wblk = &s->blk_ptrs[ix]; + + if (!s->wpos) { + s->wpos = s->blk_len; + s->wblk--; + } + + if (padding) + saa_wbytes(s, NULL, padding); + + saa_wbytes(s, data, len); +} + +void saa_fpwrite(struct SAA *s, FILE * fp) +{ + const char *data; + size_t len; + + saa_rewind(s); + while (len = s->datalen, (data = saa_rbytes(s, &len)) != NULL) + nasm_write(data, len, fp); +} + +void saa_write8(struct SAA *s, uint8_t v) +{ + saa_wbytes(s, &v, 1); +} + +void saa_write16(struct SAA *s, uint16_t v) +{ + v = cpu_to_le16(v); + saa_wbytes(s, &v, 2); +} + +void saa_write32(struct SAA *s, uint32_t v) +{ + v = cpu_to_le32(v); + saa_wbytes(s, &v, 4); +} + +void saa_write64(struct SAA *s, uint64_t v) +{ + v = cpu_to_le64(v); + saa_wbytes(s, &v, 8); +} + +void saa_writeaddr(struct SAA *s, uint64_t v, size_t len) +{ + v = cpu_to_le64(v); + saa_wbytes(s, &v, len); +} + +/* write unsigned LEB128 value to SAA */ +void saa_wleb128u(struct SAA *psaa, int value) +{ + char temp[64], *ptemp; + uint8_t byte; + int len; + + ptemp = temp; + len = 0; + do { + byte = value & 127; + value >>= 7; + if (value != 0) /* more bytes to come */ + byte |= 0x80; + *ptemp = byte; + ptemp++; + len++; + } while (value != 0); + saa_wbytes(psaa, temp, len); +} + +/* write signed LEB128 value to SAA */ +void saa_wleb128s(struct SAA *psaa, int value) +{ + char temp[64], *ptemp; + uint8_t byte; + bool more, negative; + int size, len; + + ptemp = temp; + more = 1; + negative = (value < 0); + size = sizeof(int) * 8; + len = 0; + while (more) { + byte = value & 0x7f; + value >>= 7; + if (negative) + /* sign extend */ + value |= -(1 << (size - 7)); + /* sign bit of byte is second high order bit (0x40) */ + if ((value == 0 && !(byte & 0x40)) || + ((value == -1) && (byte & 0x40))) + more = 0; + else + byte |= 0x80; + *ptemp = byte; + ptemp++; + len++; + } + saa_wbytes(psaa, temp, len); +} diff --git a/vere/ext/nasm/nasmlib/string.c b/vere/ext/nasm/nasmlib/string.c new file mode 100644 index 0000000..4ee3ecb --- /dev/null +++ b/vere/ext/nasm/nasmlib/string.c @@ -0,0 +1,224 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2016 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * nasmlib.c library routines for the Netwide Assembler + */ + +#include "compiler.h" +#include "nasmlib.h" +#include "nctype.h" + +#ifndef nasm_stricmp +int nasm_stricmp(const char *s1, const char *s2) +{ + unsigned char c1, c2; + int d; + + while (1) { + c1 = nasm_tolower(*s1++); + c2 = nasm_tolower(*s2++); + d = c1-c2; + + if (d) + return d; + if (!c1) + break; + } + return 0; +} +#endif + +#ifndef nasm_strnicmp +int nasm_strnicmp(const char *s1, const char *s2, size_t n) +{ + unsigned char c1, c2; + int d; + + while (n--) { + c1 = nasm_tolower(*s1++); + c2 = nasm_tolower(*s2++); + d = c1-c2; + + if (d) + return d; + if (!c1) + break; + } + return 0; +} +#endif + +int nasm_memicmp(const char *s1, const char *s2, size_t n) +{ + unsigned char c1, c2; + int d; + + while (n--) { + c1 = nasm_tolower(*s1++); + c2 = nasm_tolower(*s2++); + d = c1-c2; + if (d) + return d; + } + return 0; +} + +#ifndef nasm_strsep +char *nasm_strsep(char **stringp, const char *delim) +{ + char *s = *stringp; + char *e; + + if (!s) + return NULL; + + e = strpbrk(s, delim); + if (e) + *e++ = '\0'; + + *stringp = e; + return s; +} +#endif + +/* skip leading spaces */ +char *nasm_skip_spaces(const char *p) +{ + if (p) + while (*p && nasm_isspace(*p)) + p++; + return (char *)p; +} + +/* skip leading non-spaces */ +char *nasm_skip_word(const char *p) +{ + if (p) + while (*p && !nasm_isspace(*p)) + p++; + return (char *)p; +} + +/* zap leading spaces with zero */ +char *nasm_zap_spaces_fwd(char *p) +{ + if (p) + while (*p && nasm_isspace(*p)) + *p++ = 0x0; + return p; +} + +/* zap spaces with zero in reverse order */ +char *nasm_zap_spaces_rev(char *p) +{ + if (p) + while (*p && nasm_isspace(*p)) + *p-- = 0x0; + return p; +} + +/* zap leading and trailing spaces */ +char *nasm_trim_spaces(char *p) +{ + p = nasm_zap_spaces_fwd(p); + nasm_zap_spaces_fwd(nasm_skip_word(p)); + + return p; +} + +/* + * return the word extracted from a stream + * or NULL if nothing left + */ +char *nasm_get_word(char *p, char **tail) +{ + char *word = nasm_skip_spaces(p); + char *next = nasm_skip_word(word); + + if (word && *word) { + if (*next) + *next++ = '\0'; + } else + word = next = NULL; + + /* NOTE: the tail may start with spaces */ + *tail = next; + + return word; +} + +/* + * Extract "opt=val" values from the stream and + * returns "opt" + * + * Exceptions: + * 1) If "=val" passed the NULL returned though + * you may continue handling the tail via "next" + * 2) If "=" passed the NULL is returned and "val" + * is set to NULL as well + */ +char *nasm_opt_val(char *p, char **val, char **next) +{ + char *q, *nxt; + + *val = *next = NULL; + + p = nasm_get_word(p, &nxt); + if (!p) + return NULL; + + q = strchr(p, '='); + if (q) { + if (q == p) + p = NULL; + *q++='\0'; + if (*q) { + *val = q; + } else { + q = nasm_get_word(q + 1, &nxt); + if (q) + *val = q; + } + } else { + q = nasm_skip_spaces(nxt); + if (q && *q == '=') { + q = nasm_get_word(q + 1, &nxt); + if (q) + *val = q; + } + } + + *next = nxt; + return p; +} diff --git a/vere/ext/nasm/nasmlib/strlist.c b/vere/ext/nasm/nasmlib/strlist.c new file mode 100644 index 0000000..449304b --- /dev/null +++ b/vere/ext/nasm/nasmlib/strlist.c @@ -0,0 +1,207 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * strlist.c - list of ordered strings, optionally made unique + */ + +#include "strlist.h" + +/* + * Create a string list. The list can be uniqizing or not. + */ +struct strlist *strlist_alloc(bool uniq) +{ + struct strlist *list = nasm_zalloc(sizeof(*list)); + list->tailp = &list->head; + list->uniq = uniq; + return list; +} + +/* + * Append a string to a string list. Return the entry pointer, which + * may be a pre-existing entry for a uniqizing list. + */ + +static const struct strlist_entry * +strlist_add_common(struct strlist *list, struct strlist_entry *e, + struct hash_insert *hi) +{ + e->offset = list->size; + e->next = NULL; + + *list->tailp = e; + list->tailp = &e->next; + list->nstr++; + list->size += e->size; + + if (list->uniq) + hash_add(hi, e->str, (void *)e); + + return e; +} + +const struct strlist_entry * +strlist_add(struct strlist *list, const char *str) +{ + struct strlist_entry *e; + struct hash_insert hi; + size_t size; + + if (!list) + return NULL; + + size = strlen(str) + 1; + if (list->uniq) { + void **dp = hash_findb(&list->hash, str, size, &hi); + if (dp) + return *dp; + } + + /* Structure already has char[1] as EOS */ + e = nasm_malloc(sizeof(*e) - 1 + size); + e->size = size; + memcpy(e->str, str, size); + + return strlist_add_common(list, e, &hi); +} + +/* + * printf() to a string list + */ +const struct strlist_entry * +strlist_vprintf(struct strlist *list, const char *fmt, va_list ap) +{ + /* clang miscompiles offsetin() unless e is initialized here */ + struct strlist_entry *e = NULL; + struct hash_insert hi; + + if (!list) + return NULL; + + e = nasm_vaxprintf(offsetin(*e, str), fmt, ap); + e->size = nasm_last_string_size(); + + if (list->uniq) { + void **dp = hash_findb(&list->hash, e->str, e->size, &hi); + if (dp) { + nasm_free(e); + return *dp; + } + } + + return strlist_add_common(list, e, &hi); +} + +const struct strlist_entry * +strlist_printf(struct strlist *list, const char *fmt, ...) +{ + va_list ap; + const struct strlist_entry *e; + + va_start(ap, fmt); + e = strlist_vprintf(list, fmt, ap); + va_end(ap); + + return e; +} + +/* + * Free a string list. Sets the pointed to pointer to NULL. + */ +void strlist_free(struct strlist **listp) +{ + struct strlist *list = *listp; + struct strlist_entry *e, *tmp; + + if (!list) + return; + + if (list->uniq) + hash_free(&list->hash); + + list_for_each_safe(e, tmp, list->head) + nasm_free(e); + + nasm_free(list); + *listp = NULL; +} + +/* + * Search the string list for an entry. If found, return the entry pointer. + * Only possible on a uniqizing list. + */ +const struct strlist_entry * +strlist_find(const struct strlist *list, const char *str) +{ + void **hf; + + nasm_assert(list->uniq); + + hf = hash_find((struct hash_table *)&list->hash, str, NULL); + return hf ? *hf : NULL; +} + +/* + * Produce a linearized buffer containing the whole list, in order; + * The character "sep" is the separator between strings; this is + * typically either 0 or '\n'. strlist_size() will give the size of + * the returned buffer. + */ +void *strlist_linearize(const struct strlist *list, char sep) +{ + const struct strlist_entry *sl; + char *buf = nasm_malloc(list->size); + char *p = buf; + + strlist_for_each(sl, list) { + p = mempcpy(p, sl->str, sl->size); + p[-1] = sep; + } + + return buf; +} + +/* + * Output a string list to a file. The separator can be any string. + */ +void strlist_write(const struct strlist *list, const char *sep, FILE *f) +{ + const struct strlist_entry *sl; + size_t seplen = strlen(sep); + + strlist_for_each(sl, list) { + fwrite(sl->str, 1, sl->size - 1, f); + fwrite(sep, 1, seplen, f); + } +} diff --git a/vere/ext/nasm/nasmlib/ver.c b/vere/ext/nasm/nasmlib/ver.c new file mode 100644 index 0000000..667dc88 --- /dev/null +++ b/vere/ext/nasm/nasmlib/ver.c @@ -0,0 +1,80 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "ver.h" +#include "version.h" + +/* This is printed when entering nasm -v */ +const char nasm_version[] = NASM_VER; +const char nasm_date[] = ""; +const char nasm_compile_options[] = "" +#ifdef DEBUG + " with -DDEBUG" +#endif + ; + +bool reproducible; /* Reproducible output */ + +/* These are used by some backends. For a reproducible build, + * these cannot contain version numbers. + */ +static const char * const _nasm_comment[2] = +{ + "The Netwide Assembler " NASM_VER, + "The Netwide Assembler" +}; + +static const char * const _nasm_signature[2] = { + "NASM " NASM_VER, + "NASM" +}; + +const char *nasm_comment(void) +{ + return _nasm_comment[reproducible]; +} + +size_t nasm_comment_len(void) +{ + return strlen(nasm_comment()); +} + +const char *nasm_signature(void) +{ + return _nasm_signature[reproducible]; +} + +size_t nasm_signature_len(void) +{ + return strlen(nasm_signature()); +} diff --git a/vere/ext/nasm/nasmlib/zerobuf.c b/vere/ext/nasm/nasmlib/zerobuf.c new file mode 100644 index 0000000..651c0fd --- /dev/null +++ b/vere/ext/nasm/nasmlib/zerobuf.c @@ -0,0 +1,42 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2016 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * nasmlib.c library routines for the Netwide Assembler + */ + +#include "compiler.h" +#include "nasmlib.h" + +/* Uninitialized -> all zero by C spec */ +const uint8_t zero_buffer[ZERO_BUF_SIZE]; diff --git a/vere/ext/nasm/output/codeview.c b/vere/ext/nasm/output/codeview.c new file mode 100644 index 0000000..d1011fc --- /dev/null +++ b/vere/ext/nasm/output/codeview.c @@ -0,0 +1,820 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * codeview.c Codeview Debug Format support for COFF + */ + +#include "version.h" +#include "compiler.h" + + +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "preproc.h" +#include "saa.h" +#include "hashtbl.h" +#include "outlib.h" +#include "pecoff.h" +#include "md5.h" + +static void cv8_init(void); +static void cv8_linenum(const char *filename, int32_t linenumber, + int32_t segto); +static void cv8_deflabel(char *name, int32_t segment, int64_t offset, + int is_global, char *special); +static void cv8_typevalue(int32_t type); +static void cv8_output(int type, void *param); +static void cv8_cleanup(void); + +const struct dfmt df_cv8 = { + "Codeview 8+", /* .fullname */ + "cv8", /* .shortname */ + cv8_init, /* .init */ + cv8_linenum, /* .linenum */ + cv8_deflabel, /* .debug_deflabel */ + NULL, /* .debug_smacros */ + NULL, /* .debug_include */ + NULL, /* .debug_mmacros */ + null_debug_directive, /* .debug_directive */ + cv8_typevalue, /* .debug_typevalue */ + cv8_output, /* .debug_output */ + cv8_cleanup, /* .cleanup */ + NULL /* pragma list */ +}; + +/******************************************************************************* + * dfmt callbacks + ******************************************************************************/ +struct source_file; + +struct source_file { + const char *filename; + char *fullname; + uint32_t fullnamelen; + + struct source_file *next; + + uint32_t filetbl_off; + uint32_t sourcetbl_off; + + struct SAA *lines; + uint32_t num_lines; + + unsigned char md5sum[MD5_HASHBYTES]; +}; + +struct linepair { + uint32_t file_offset; + uint32_t linenumber; +}; + +enum symbol_type { + SYMTYPE_CODE, + SYMTYPE_PROC, + SYMTYPE_LDATA, + SYMTYPE_GDATA, + + SYMTYPE_MAX +}; + +struct cv8_symbol { + enum symbol_type type; + char *name; + + uint32_t secrel; + uint16_t section; + uint32_t size; + uint32_t typeindex; + + enum symtype { + TYPE_UNREGISTERED = 0x0000, /* T_NOTYPE */ + TYPE_BYTE = 0x0020, + TYPE_WORD = 0x0021, + TYPE_DWORD= 0x0022, + TYPE_QUAD = 0x0023, + + TYPE_REAL32 = 0x0040, + TYPE_REAL64 = 0x0041, + TYPE_REAL80 = 0x0042, + TYPE_REAL128= 0x0043, + TYPE_REAL256= 0x0044, + TYPE_REAL512= 0x0045 + } symtype; +}; + +struct cv8_state { + int symbol_sect; + int type_sect; + + uint32_t text_offset; + + struct source_file *source_files, **source_files_tail; + const char *last_filename; + struct source_file *last_source_file; + struct hash_table file_hash; + unsigned num_files; + uint32_t total_filename_len; + + + unsigned total_lines; + + struct SAA *symbols; + struct cv8_symbol *last_sym; + unsigned num_syms[SYMTYPE_MAX]; + unsigned symbol_lengths; + unsigned total_syms; + + struct { + char *name; + size_t namebytes; + } outfile; +}; +struct cv8_state cv8_state; + +static void cv8_init(void) +{ + const uint32_t sect_flags = IMAGE_SCN_MEM_READ | + IMAGE_SCN_MEM_DISCARDABLE | + IMAGE_SCN_CNT_INITIALIZED_DATA | + IMAGE_SCN_ALIGN_1BYTES; + + cv8_state.symbol_sect = coff_make_section(".debug$S", sect_flags); + cv8_state.type_sect = coff_make_section(".debug$T", sect_flags); + + cv8_state.text_offset = 0; + + cv8_state.source_files = NULL; + cv8_state.source_files_tail = &cv8_state.source_files; + + cv8_state.num_files = 0; + cv8_state.total_filename_len = 0; + + cv8_state.total_lines = 0; + + cv8_state.symbols = saa_init(sizeof(struct cv8_symbol)); + cv8_state.last_sym = NULL; +} + +static struct source_file *register_file(const char *filename); +static struct coff_Section *find_section(int32_t segto); + +static void cv8_linenum(const char *filename, int32_t linenumber, + int32_t segto) +{ + struct coff_Section *s; + struct linepair *li; + struct source_file *file; + + file = register_file(filename); + + s = find_section(segto); + if (s == NULL) + return; + + if ((s->flags & IMAGE_SCN_MEM_EXECUTE) == 0) + return; + + li = saa_wstruct(file->lines); + li->file_offset = cv8_state.text_offset; + li->linenumber = linenumber; + + file->num_lines++; + cv8_state.total_lines++; +} + +static void cv8_deflabel(char *name, int32_t segment, int64_t offset, + int is_global, char *special) +{ + struct cv8_symbol *sym; + struct coff_Section *s; + + (void)special; + + s = find_section(segment); + if (s == NULL) + return; + + sym = saa_wstruct(cv8_state.symbols); + + if (s->flags & IMAGE_SCN_MEM_EXECUTE) + sym->type = is_global ? SYMTYPE_PROC : SYMTYPE_CODE; + else + sym->type = is_global ? SYMTYPE_GDATA : SYMTYPE_LDATA; + cv8_state.num_syms[sym->type]++; + cv8_state.total_syms++; + + sym->section = segment; + sym->secrel = offset; + sym->symtype = TYPE_UNREGISTERED; + sym->size = 0; + sym->typeindex = 0; + + sym->name = nasm_strdup(name); + cv8_state.symbol_lengths += strlen(sym->name) + 1; + + if (cv8_state.last_sym && cv8_state.last_sym->section == segment) + cv8_state.last_sym->size = offset - cv8_state.last_sym->secrel; + cv8_state.last_sym = sym; +} + +static void cv8_typevalue(int32_t type) +{ + if (!cv8_state.last_sym) + return; + if (cv8_state.last_sym->symtype != TYPE_UNREGISTERED) + return; + + switch (TYM_TYPE(type)) { + case TY_BYTE: + cv8_state.last_sym->symtype = TYPE_BYTE; + break; + case TY_WORD: + cv8_state.last_sym->symtype = TYPE_WORD; + break; + case TY_DWORD: + cv8_state.last_sym->symtype = TYPE_DWORD; + break; + case TY_QWORD: + cv8_state.last_sym->symtype = TYPE_QUAD; + break; + case TY_FLOAT: + cv8_state.last_sym->symtype = TYPE_REAL32; + break; + case TY_TBYTE: + cv8_state.last_sym->symtype = TYPE_REAL80; + break; + case TY_OWORD: + cv8_state.last_sym->symtype = TYPE_REAL128; + break; + case TY_YWORD: + cv8_state.last_sym->symtype = TYPE_REAL256; + break; + case TY_ZWORD: + cv8_state.last_sym->symtype = TYPE_REAL512; + break; + case TY_UNKNOWN: + break; + case TY_LABEL: + break; + } +} + +static void cv8_output(int type, void *param) +{ + struct coff_DebugInfo *dinfo = param; + + (void)type; + + if (dinfo->section && dinfo->section->name && + !strncmp(dinfo->section->name, ".text", 5)) + cv8_state.text_offset += dinfo->size; +} + +static void build_symbol_table(struct coff_Section *const sect); +static void build_type_table(struct coff_Section *const sect); + +static void cv8_cleanup(void) +{ + struct cv8_symbol *sym; + struct source_file *file, *ftmp; + + struct coff_Section *symbol_sect = coff_sects[cv8_state.symbol_sect]; + struct coff_Section *type_sect = coff_sects[cv8_state.type_sect]; + + cv8_state.outfile.name = nasm_realpath(outname); + cv8_state.outfile.namebytes = strlen(cv8_state.outfile.name) + 1; + + build_symbol_table(symbol_sect); + build_type_table(type_sect); + + list_for_each_safe(file, ftmp, cv8_state.source_files) { + nasm_free(file->fullname); + saa_free(file->lines); + nasm_free(file); + } + hash_free(&cv8_state.file_hash); + + saa_rewind(cv8_state.symbols); + while ((sym = saa_rstruct(cv8_state.symbols))) + nasm_free(sym->name); + saa_free(cv8_state.symbols); + + nasm_free(cv8_state.outfile.name); +} + +/******************************************************************************* + * implementation + ******************************************************************************/ +static void calc_md5(const char *const filename, + unsigned char sum[MD5_HASHBYTES]) +{ + int success = 0; + unsigned char *file_buf; + FILE *f; + MD5_CTX ctx; + + f = pp_input_fopen(filename, NF_BINARY); + if (!f) + goto done; + + file_buf = nasm_zalloc(BUFSIZ); + + MD5Init(&ctx); + while (!feof(f)) { + size_t i = fread(file_buf, 1, BUFSIZ, f); + if (ferror(f)) + goto done_0; + else if (i == 0) + break; + MD5Update(&ctx, file_buf, i); + } + MD5Final(sum, &ctx); + + success = 1; +done_0: + nasm_free(file_buf); + fclose(f); +done: + if (!success) { + nasm_nonfatal("unable to hash file %s. " + "Debug information may be unavailable.", + filename); + } + return; +} + +static struct source_file *register_file(const char *filename) +{ + struct source_file *file; + void **filep; + char *fullpath; + struct hash_insert hi; + + /* + * The common case is that we are invoked with the same filename + * as we were last time. Make this a pointer comparison: this is + * safe because the NASM core code allocates each filename once + * and never frees it. + */ + if (likely(cv8_state.last_filename == filename)) + return cv8_state.last_source_file; + + cv8_state.last_filename = filename; + + filep = hash_find(&cv8_state.file_hash, filename, &hi); + if (likely(filep)) { + file = *filep; + } else { + /* New filename encounter */ + + fullpath = nasm_realpath(filename); + + nasm_new(file); + file->filename = filename; + file->fullname = fullpath; + file->fullnamelen = strlen(fullpath); + file->lines = saa_init(sizeof(struct linepair)); + *cv8_state.source_files_tail = file; + cv8_state.source_files_tail = &file->next; + calc_md5(fullpath, file->md5sum); + + hash_add(&hi, filename, file); + + cv8_state.num_files++; + cv8_state.total_filename_len += file->fullnamelen + 1; + } + + cv8_state.last_source_file = file; + return file; +} + +static struct coff_Section *find_section(int32_t segto) +{ + int i; + + for (i = 0; i < coff_nsects; i++) { + struct coff_Section *sec; + + sec = coff_sects[i]; + if (segto == sec->index) + return sec; + } + return NULL; +} + +static void register_reloc(struct coff_Section *const sect, + char *sym, uint32_t addr, uint16_t type) +{ + struct coff_Reloc *r; + struct coff_Section *sec; + uint32_t i; + + r = *sect->tail = nasm_malloc(sizeof(struct coff_Reloc)); + sect->tail = &r->next; + r->next = NULL; + sect->nrelocs++; + + r->address = addr; + r->symbase = SECT_SYMBOLS; + r->type = type; + + r->symbol = 0; + for (i = 0; i < (uint32_t)coff_nsects; i++) { + sec = coff_sects[i]; + if (!strcmp(sym, sec->name)) { + return; + } + r->symbol += 2; + } + + saa_rewind(coff_syms); + for (i = 0; i < coff_nsyms; i++) { + struct coff_Symbol *s = saa_rstruct(coff_syms); + r->symbol++; + if (s->strpos == -1 && !strcmp(sym, s->name)) { + return; + } else if (s->strpos != -1) { + int res; + char *symname; + + symname = nasm_malloc(s->namlen + 1); + saa_fread(coff_strs, s->strpos-4, symname, s->namlen); + symname[s->namlen] = '\0'; + res = strcmp(sym, symname); + nasm_free(symname); + if (!res) + return; + } + } + nasm_panic("codeview: relocation for unregistered symbol: %s", sym); +} + +static inline void section_write32(struct coff_Section *sect, uint32_t val) +{ + saa_write32(sect->data, val); + sect->len += 4; +} + +static inline void section_write16(struct coff_Section *sect, uint16_t val) +{ + saa_write16(sect->data, val); + sect->len += 2; +} + +static inline void section_write8(struct coff_Section *sect, uint8_t val) +{ + saa_write8(sect->data, val); + sect->len++; +} + +static inline void section_wbytes(struct coff_Section *sect, const void *buf, + size_t len) +{ + saa_wbytes(sect->data, buf, len); + sect->len += len; +} + +static void write_filename_table(struct coff_Section *const sect) +{ + uint32_t field_length; + uint32_t tbl_off = 1; /* offset starts at 1 to skip NULL entry */ + struct source_file *file; + + nasm_assert(cv8_state.source_files != NULL); + nasm_assert(cv8_state.num_files > 0); + nasm_assert(cv8_state.total_filename_len > 0); + + field_length = 1 + cv8_state.total_filename_len; + + section_write32(sect, 0x000000F3); + section_write32(sect, field_length); + + section_write8(sect, 0); + + list_for_each(file, cv8_state.source_files) { + section_wbytes(sect, file->fullname, file->fullnamelen + 1); + file->filetbl_off = tbl_off; + tbl_off += file->fullnamelen + 1; + } +} + +static void write_sourcefile_table(struct coff_Section *const sect) +{ + const uint32_t entry_size = 4 + 2 + MD5_HASHBYTES + 2; + + uint32_t field_length = 0; + uint32_t tbl_off = 0; + struct source_file *file; + + field_length = entry_size * cv8_state.num_files; + + section_write32(sect, 0x000000F4); + section_write32(sect, field_length); + + list_for_each(file, cv8_state.source_files) { + nasm_assert(file->filetbl_off > 0); + section_write32(sect, file->filetbl_off); + section_write16(sect, 0x0110); + section_wbytes(sect, file->md5sum, MD5_HASHBYTES); + section_write16(sect, 0); + + file->sourcetbl_off = tbl_off; + tbl_off += entry_size; + } +} + +static void write_linenumber_table(struct coff_Section *const sect) +{ + const uint32_t file_field_len = 12; + const uint32_t line_field_len = 8; + + int i; + uint32_t field_length = 0; + size_t field_base; + struct source_file *file; + struct coff_Section *s; + + for (i = 0; i < coff_nsects; i++) { + if (!strncmp(coff_sects[i]->name, ".text", 5)) + break; + } + + if (i == coff_nsects) + return; + s = coff_sects[i]; + + field_length = 12; + field_length += (cv8_state.num_files * file_field_len); + field_length += (cv8_state.total_lines * line_field_len); + + section_write32(sect, 0x000000F2); + section_write32(sect, field_length); + + field_base = sect->len; + section_write32(sect, 0); /* SECREL, updated by relocation */ + section_write16(sect, 0); /* SECTION, updated by relocation*/ + section_write16(sect, 0); /* pad */ + section_write32(sect, s->len); + + register_reloc(sect, ".text", field_base, + win64 ? IMAGE_REL_AMD64_SECREL : IMAGE_REL_I386_SECREL); + + register_reloc(sect, ".text", field_base + 4, + win64 ? IMAGE_REL_AMD64_SECTION : IMAGE_REL_I386_SECTION); + + list_for_each(file, cv8_state.source_files) { + struct linepair *li; + + /* source mapping */ + section_write32(sect, file->sourcetbl_off); + section_write32(sect, file->num_lines); + section_write32(sect, file_field_len + (file->num_lines * line_field_len)); + + /* the pairs */ + saa_rewind(file->lines); + while ((li = saa_rstruct(file->lines))) { + section_write32(sect, li->file_offset); + section_write32(sect, li->linenumber |= 0x80000000); + } + } +} + +static uint32_t write_symbolinfo_obj(struct coff_Section *sect) +{ + uint32_t obj_len; + + obj_len = 2 + 4 + cv8_state.outfile.namebytes; + + section_write16(sect, obj_len); + section_write16(sect, 0x1101); + section_write32(sect, 0); /* ASM language */ + section_wbytes(sect, cv8_state.outfile.name, cv8_state.outfile.namebytes); + + return obj_len; +} + +static uint32_t write_symbolinfo_properties(struct coff_Section *sect, + const char *const creator_str) +{ + /* https://github.com/Microsoft/microsoft-pdb/blob/1d60e041/include/cvinfo.h#L3313 */ + uint32_t creator_len; + + creator_len = 2 + 4 + 2 + 3*2 + 3*2 + strlen(creator_str)+1 + 2; + + /* + * We used to use a language ID of 3 for "MASM", since it's closest of the + * options available; however, BinScope from WACK (the Windows Application + * Certification Kit) tests for specific minimum MASM versions and trying to + * match an increasing sequence of random MASM version/build numbers seems + * like a fool's errand. + * + * Instead, use a different language ID (NASM is, after all, not MASM + * syntax) and just write the actual NASM version number. BinScope appears + * to be happy with that. + */ + + section_write16(sect, creator_len); + section_write16(sect, 0x1116); + section_write32(sect, 'N'); /* language: 'N' (0x4e) for "NASM"; flags are 0 */ + if (win64) + section_write16(sect, 0x00D0); /* machine */ + else if (win32) + section_write16(sect, 0x0006); /* machine */ + else + nasm_panic("neither win32 nor win64 are set!"); + section_write16(sect, 0); /* verFEMajor */ + section_write16(sect, 0); /* verFEMinor */ + section_write16(sect, 0); /* verFEBuild */ + + /* BinScope/WACK insist on version >= 8.0.50727 */ + section_write16(sect, NASM_MAJOR_VER); /* verMajor */ + section_write16(sect, NASM_MINOR_VER); /* verMinor */ + section_write16(sect, NASM_SUBMINOR_VER*100 + NASM_PATCHLEVEL_VER); /* verBuild */ + + section_wbytes(sect, creator_str, strlen(creator_str)+1); /* verSt */ + /* + * normally there would be key/value pairs here, but they aren't + * necessary. They are terminated by 2B + */ + section_write16(sect, 0); + + return creator_len; +} + +static uint32_t write_symbolinfo_symbols(struct coff_Section *sect) +{ + uint32_t len = 0, field_len; + uint32_t field_base; + struct cv8_symbol *sym; + + saa_rewind(cv8_state.symbols); + while ((sym = saa_rstruct(cv8_state.symbols))) { + switch (sym->type) { + case SYMTYPE_LDATA: + case SYMTYPE_GDATA: + field_len = 12 + strlen(sym->name) + 1; + len += field_len - 2; + section_write16(sect, field_len); + if (sym->type == SYMTYPE_LDATA) + section_write16(sect, 0x110C); + else + section_write16(sect, 0x110D); + section_write32(sect, sym->symtype); + + field_base = sect->len; + section_write32(sect, 0); /* SECREL */ + section_write16(sect, 0); /* SECTION */ + break; + case SYMTYPE_PROC: + case SYMTYPE_CODE: + field_len = 9 + strlen(sym->name) + 1; + len += field_len - 2; + section_write16(sect, field_len); + section_write16(sect, 0x1105); + + field_base = sect->len; + section_write32(sect, 0); /* SECREL */ + section_write16(sect, 0); /* SECTION */ + section_write8(sect, 0); /* FLAG */ + break; + default: + nasm_panic("unknown symbol type"); + } + + section_wbytes(sect, sym->name, strlen(sym->name) + 1); + + register_reloc(sect, sym->name, field_base, + win64 ? IMAGE_REL_AMD64_SECREL : + IMAGE_REL_I386_SECREL); + register_reloc(sect, sym->name, field_base + 4, + win64 ? IMAGE_REL_AMD64_SECTION : + IMAGE_REL_I386_SECTION); + } + + return len; +} + +static void write_symbolinfo_table(struct coff_Section *const sect) +{ + static const char creator_str[] = "The Netwide Assembler " NASM_VER; + uint32_t obj_length, creator_length, sym_length; + uint32_t field_length = 0, out_len; + + nasm_assert(cv8_state.outfile.namebytes); + + /* signature, language, outfile NULL */ + obj_length = 2 + 4 + cv8_state.outfile.namebytes; + creator_length = 2 + 4 + 2 + 3*2 + 3*2 + strlen(creator_str)+1 + 2; + + sym_length = ( cv8_state.num_syms[SYMTYPE_CODE] * 7) + + ( cv8_state.num_syms[SYMTYPE_PROC] * 7) + + ( cv8_state.num_syms[SYMTYPE_LDATA] * 10) + + ( cv8_state.num_syms[SYMTYPE_GDATA] * 10) + + cv8_state.symbol_lengths; + + field_length = 2 + obj_length + + 2 + creator_length + + (4 * cv8_state.total_syms) + sym_length; + + section_write32(sect, 0x000000F1); + section_write32(sect, field_length); + + /* for sub fields, length proceeds type */ + + out_len = write_symbolinfo_obj(sect); + nasm_assert(out_len == obj_length); + + out_len = write_symbolinfo_properties(sect, creator_str); + nasm_assert(out_len == creator_length); + + out_len = write_symbolinfo_symbols(sect); + nasm_assert(out_len == sym_length); +} + +static inline void align4_table(struct coff_Section *const sect) +{ + unsigned diff; + uint32_t zero = 0; + struct SAA *data = sect->data; + + if (data->wptr % 4 == 0) + return; + + diff = 4 - (data->wptr % 4); + if (diff) + section_wbytes(sect, &zero, diff); +} + +static void build_symbol_table(struct coff_Section *const sect) +{ + section_write32(sect, 0x00000004); + + write_filename_table(sect); + align4_table(sect); + write_sourcefile_table(sect); + align4_table(sect); + write_linenumber_table(sect); + align4_table(sect); + write_symbolinfo_table(sect); + align4_table(sect); +} + +static void build_type_table(struct coff_Section *const sect) +{ + uint32_t field_len; + uint32_t typeindex = 0x1000; + uint32_t idx_arglist; + + section_write32(sect, 0x00000004); + + /* empty argument list type */ + field_len = 2 + 4; + section_write16(sect, field_len); + section_write16(sect, 0x1201); /* ARGLIST */ + section_write32(sect, 0); /* num params */ + idx_arglist = typeindex++; + + /* procedure type: void proc(void) */ + field_len = 2 + 4 + 1 + 1 + 2 + 4; + section_write16(sect, field_len); + section_write16(sect, 0x1008); /* PROC type */ + + section_write32(sect, 0x00000003); /* return type VOID */ + section_write8(sect, 0); /* calling convention (default) */ + section_write8(sect, 0); /* function attributes */ + section_write16(sect, 0); /* # params */ + section_write32(sect, idx_arglist); /* argument list type */ + /* idx_voidfunc = typeindex++; */ +} diff --git a/vere/ext/nasm/output/dwarf.h b/vere/ext/nasm/output/dwarf.h new file mode 100644 index 0000000..87bc0c8 --- /dev/null +++ b/vere/ext/nasm/output/dwarf.h @@ -0,0 +1,621 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef OUTPUT_DWARF_H +#define OUTPUT_DWARF_H + +/* + * based on DWARF 3 standard + */ + +enum dwarf_tag { + DW_TAG_padding = 0x00, + DW_TAG_array_type = 0x01, + DW_TAG_class_type = 0x02, + DW_TAG_entry_point = 0x03, + DW_TAG_enumeration_type = 0x04, + DW_TAG_formal_parameter = 0x05, + DW_TAG_global_subroutine = 0x06, + DW_TAG_global_variable = 0x07, + DW_TAG_label = 0x0a, + DW_TAG_lexical_block = 0x0b, + DW_TAG_local_variable = 0x0c, + DW_TAG_member = 0x0d, + DW_TAG_pointer_type = 0x0f, + DW_TAG_reference_type = 0x10, + DW_TAG_compile_unit = 0x11, + DW_TAG_string_type = 0x12, + DW_TAG_structure_type = 0x13, + DW_TAG_subroutine = 0x14, + DW_TAG_subroutine_type = 0x15, + DW_TAG_typedef = 0x16, + DW_TAG_union_type = 0x17, + DW_TAG_unspecified_parameters = 0x18, + DW_TAG_variant = 0x19, + DW_TAG_common_block = 0x1a, + DW_TAG_common_inclusion = 0x1b, + DW_TAG_inheritance = 0x1c, + DW_TAG_inlined_subroutine = 0x1d, + DW_TAG_module = 0x1e, + DW_TAG_ptr_to_member_type = 0x1f, + DW_TAG_set_type = 0x20, + DW_TAG_subrange_type = 0x21, + DW_TAG_with_stmt = 0x22, + DW_TAG_access_declaration = 0x23, + DW_TAG_base_type = 0x24, + DW_TAG_catch_block = 0x25, + DW_TAG_const_type = 0x26, + DW_TAG_constant = 0x27, + DW_TAG_enumerator = 0x28, + DW_TAG_file_type = 0x29, + DW_TAG_friend = 0x2a, + DW_TAG_namelist = 0x2b, + DW_TAG_namelist_item = 0x2c, + DW_TAG_packed_type = 0x2d, + DW_TAG_subprogram = 0x2e, + DW_TAG_template_type_parameter = 0x2f, + DW_TAG_template_value_parameter = 0x30, + DW_TAG_thrown_type = 0x31, + DW_TAG_try_block = 0x32, + DW_TAG_variant_part = 0x33, + DW_TAG_variable = 0x34, + DW_TAG_volatile_type = 0x35, + /* DWARF 3 */ + DW_TAG_dwarf_procedure = 0x36, + DW_TAG_restrict_type = 0x37, + DW_TAG_interface_type = 0x38, + DW_TAG_namespace = 0x39, + DW_TAG_imported_module = 0x3a, + DW_TAG_unspecified_type = 0x3b, + DW_TAG_partial_unit = 0x3c, + DW_TAG_imported_unit = 0x3d, + DW_TAG_condition = 0x3f, + DW_TAG_shared_type = 0x40, + /* DWARF 4 */ + DW_TAG_type_unit = 0x41, + DW_TAG_rvalue_reference_type = 0x42, + DW_TAG_template_alias = 0x43, + /* DWARF 5 */ + DW_TAG_atomic_type = 0x47, + + DW_TAG_lo_user = 0x4080, + DW_TAG_hi_user = 0xffff +}; + +enum dwarf_child { + DW_CHILDREN_no = 0x00, + DW_CHILDREN_yes = 0x01 +}; + +enum dwarf_form { + DW_FORM_addr = 0x01, + DW_FORM_block2 = 0x03, + DW_FORM_block4 = 0x04, + DW_FORM_data2 = 0x05, + DW_FORM_data4 = 0x06, + DW_FORM_data8 = 0x07, + DW_FORM_string = 0x08, + DW_FORM_block = 0x09, + DW_FORM_block1 = 0x0a, + DW_FORM_data1 = 0x0b, + DW_FORM_flag = 0x0c, + DW_FORM_sdata = 0x0d, + DW_FORM_strp = 0x0e, + DW_FORM_udata = 0x0f, + DW_FORM_ref_addr = 0x10, + DW_FORM_ref1 = 0x11, + DW_FORM_ref2 = 0x12, + DW_FORM_ref4 = 0x13, + DW_FORM_ref8 = 0x14, + DW_FORM_ref_udata = 0x15, + DW_FORM_indirect = 0x16, + /* DWARF 4 */ + DW_FORM_sec_offset = 0x17, + DW_FORM_exprloc = 0x18, + DW_FORM_flag_present = 0x19, + DW_FORM_ref_sig8 = 0x20 +}; + +enum dwarf_attribute { + DW_AT_sibling = 0x01, + DW_AT_location = 0x02, + DW_AT_name = 0x03, + DW_AT_ordering = 0x09, + DW_AT_byte_size = 0x0b, + DW_AT_bit_offset = 0x0c, + DW_AT_bit_size = 0x0d, + DW_AT_stmt_list = 0x10, + DW_AT_low_pc = 0x11, + DW_AT_high_pc = 0x12, + DW_AT_language = 0x13, + DW_AT_discr = 0x15, + DW_AT_discr_value = 0x16, + DW_AT_visibility = 0x17, + DW_AT_import = 0x18, + DW_AT_string_length = 0x19, + DW_AT_common_reference = 0x1a, + DW_AT_comp_dir = 0x1b, + DW_AT_const_value = 0x1c, + DW_AT_containing_type = 0x1d, + DW_AT_default_value = 0x1e, + DW_AT_inline = 0x20, + DW_AT_is_optional = 0x21, + DW_AT_lower_bound = 0x22, + DW_AT_producer = 0x25, + DW_AT_prototyped = 0x27, + DW_AT_return_addr = 0x2a, + DW_AT_start_scope = 0x2c, + DW_AT_bit_stride = 0x2e, + DW_AT_upper_bound = 0x2f, + DW_AT_abstract_origin = 0x31, + DW_AT_accessibility = 0x32, + DW_AT_address_class = 0x33, + DW_AT_artificial = 0x34, + DW_AT_base_types = 0x35, + DW_AT_calling_convention= 0x36, + DW_AT_count = 0x37, + DW_AT_data_member_location = 0x38, + DW_AT_decl_column = 0x39, + DW_AT_decl_file = 0x3a, + DW_AT_decl_line = 0x3b, + DW_AT_declaration = 0x3c, + DW_AT_discr_list = 0x3d, + DW_AT_encoding = 0x3e, + DW_AT_external = 0x3f, + DW_AT_frame_base = 0x40, + DW_AT_friend = 0x41, + DW_AT_identifier_case = 0x42, + DW_AT_macro_info = 0x43, + DW_AT_namelist_item = 0x44, + DW_AT_priority = 0x45, + DW_AT_segment = 0x46, + DW_AT_specification = 0x47, + DW_AT_static_link = 0x48, + DW_AT_type = 0x49, + DW_AT_use_location = 0x4a, + DW_AT_variable_parameter = 0x4b, + DW_AT_virtuality = 0x4c, + DW_AT_vtable_elem_location = 0x4d, + /* DWARF 3 */ + DW_AT_allocated = 0x4e, + DW_AT_associated = 0x4f, + DW_AT_data_location = 0x50, + DW_AT_byte_stride = 0x51, + DW_AT_entry_pc = 0x52, + DW_AT_use_UTF8 = 0x53, + DW_AT_extension = 0x54, + DW_AT_ranges = 0x55, + DW_AT_trampoline = 0x56, + DW_AT_call_column = 0x57, + DW_AT_call_file = 0x58, + DW_AT_call_line = 0x59, + DW_AT_description = 0x5a, + DW_AT_binary_scale = 0x5b, + DW_AT_decimal_scale = 0x5c, + DW_AT_small = 0x5d, + DW_AT_decimal_sign = 0x5e, + DW_AT_digit_count = 0x5f, + DW_AT_picture_string = 0x60, + DW_AT_mutable = 0x61, + DW_AT_threads_scaled = 0x62, + DW_AT_explicit = 0x63, + DW_AT_object_pointer = 0x64, + DW_AT_endianity = 0x65, + DW_AT_elemental = 0x66, + DW_AT_pure = 0x67, + DW_AT_recursive = 0x68, + /* DWARF 4 */ + DW_AT_signature = 0x69, + DW_AT_main_subprogram = 0x6a, + DW_AT_data_bit_offset = 0x6b, + DW_AT_const_expr = 0x6c, + DW_AT_enum_class = 0x6d, + DW_AT_linkage_name = 0x6e, + /* DWARF 5 */ + DW_AT_noreturn = 0x87, + + DW_AT_lo_user = 0x2000, + DW_AT_hi_user = 0x3fff +}; + +enum dwarf_op { + DW_OP_addr = 0x03, + DW_OP_deref = 0x06, + DW_OP_const1u = 0x08, + DW_OP_const1s = 0x09, + DW_OP_const2u = 0x0a, + DW_OP_const2s = 0x0b, + DW_OP_const4u = 0x0c, + DW_OP_const4s = 0x0d, + DW_OP_const8u = 0x0e, + DW_OP_const8s = 0x0f, + DW_OP_constu = 0x10, + DW_OP_consts = 0x11, + DW_OP_dup = 0x12, + DW_OP_drop = 0x13, + DW_OP_over = 0x14, + DW_OP_pick = 0x15, + DW_OP_swap = 0x16, + DW_OP_rot = 0x17, + DW_OP_xderef = 0x18, + DW_OP_abs = 0x19, + DW_OP_and = 0x1a, + DW_OP_div = 0x1b, + DW_OP_minus = 0x1c, + DW_OP_mod = 0x1d, + DW_OP_mul = 0x1e, + DW_OP_neg = 0x1f, + DW_OP_not = 0x20, + DW_OP_or = 0x21, + DW_OP_plus = 0x22, + DW_OP_plus_uconst = 0x23, + DW_OP_shl = 0x24, + DW_OP_shr = 0x25, + DW_OP_shra = 0x26, + DW_OP_xor = 0x27, + DW_OP_skip = 0x2f, + DW_OP_bra = 0x28, + DW_OP_eq = 0x29, + DW_OP_ge = 0x2a, + DW_OP_gt = 0x2b, + DW_OP_le = 0x2c, + DW_OP_lt = 0x2d, + DW_OP_ne = 0x2e, + DW_OP_lit0 = 0x30, + DW_OP_lit1 = 0x31, + DW_OP_lit2 = 0x32, + DW_OP_lit3 = 0x33, + DW_OP_lit4 = 0x34, + DW_OP_lit5 = 0x35, + DW_OP_lit6 = 0x36, + DW_OP_lit7 = 0x37, + DW_OP_lit8 = 0x38, + DW_OP_lit9 = 0x39, + DW_OP_lit10 = 0x3a, + DW_OP_lit11 = 0x3b, + DW_OP_lit12 = 0x3c, + DW_OP_lit13 = 0x3d, + DW_OP_lit14 = 0x3e, + DW_OP_lit15 = 0x3f, + DW_OP_lit16 = 0x40, + DW_OP_lit17 = 0x41, + DW_OP_lit18 = 0x42, + DW_OP_lit19 = 0x43, + DW_OP_lit20 = 0x44, + DW_OP_lit21 = 0x45, + DW_OP_lit22 = 0x46, + DW_OP_lit23 = 0x47, + DW_OP_lit24 = 0x48, + DW_OP_lit25 = 0x49, + DW_OP_lit26 = 0x4a, + DW_OP_lit27 = 0x4b, + DW_OP_lit28 = 0x4c, + DW_OP_lit29 = 0x4d, + DW_OP_lit30 = 0x4e, + DW_OP_lit31 = 0x4f, + DW_OP_reg0 = 0x50, + DW_OP_reg1 = 0x51, + DW_OP_reg2 = 0x52, + DW_OP_reg3 = 0x53, + DW_OP_reg4 = 0x54, + DW_OP_reg5 = 0x55, + DW_OP_reg6 = 0x56, + DW_OP_reg7 = 0x57, + DW_OP_reg8 = 0x58, + DW_OP_reg9 = 0x59, + DW_OP_reg10 = 0x5a, + DW_OP_reg11 = 0x5b, + DW_OP_reg12 = 0x5c, + DW_OP_reg13 = 0x5d, + DW_OP_reg14 = 0x5e, + DW_OP_reg15 = 0x5f, + DW_OP_reg16 = 0x60, + DW_OP_reg17 = 0x61, + DW_OP_reg18 = 0x62, + DW_OP_reg19 = 0x63, + DW_OP_reg20 = 0x64, + DW_OP_reg21 = 0x65, + DW_OP_reg22 = 0x66, + DW_OP_reg23 = 0x67, + DW_OP_reg24 = 0x68, + DW_OP_reg25 = 0x69, + DW_OP_reg26 = 0x6a, + DW_OP_reg27 = 0x6b, + DW_OP_reg28 = 0x6c, + DW_OP_reg29 = 0x6d, + DW_OP_reg30 = 0x6e, + DW_OP_reg31 = 0x6f, + DW_OP_breg0 = 0x70, + DW_OP_breg1 = 0x71, + DW_OP_breg2 = 0x72, + DW_OP_breg3 = 0x73, + DW_OP_breg4 = 0x74, + DW_OP_breg5 = 0x75, + DW_OP_breg6 = 0x76, + DW_OP_breg7 = 0x77, + DW_OP_breg8 = 0x78, + DW_OP_breg9 = 0x79, + DW_OP_breg10 = 0x7a, + DW_OP_breg11 = 0x7b, + DW_OP_breg12 = 0x7c, + DW_OP_breg13 = 0x7d, + DW_OP_breg14 = 0x7e, + DW_OP_breg15 = 0x7f, + DW_OP_breg16 = 0x80, + DW_OP_breg17 = 0x81, + DW_OP_breg18 = 0x82, + DW_OP_breg19 = 0x83, + DW_OP_breg20 = 0x84, + DW_OP_breg21 = 0x85, + DW_OP_breg22 = 0x86, + DW_OP_breg23 = 0x87, + DW_OP_breg24 = 0x88, + DW_OP_breg25 = 0x89, + DW_OP_breg26 = 0x8a, + DW_OP_breg27 = 0x8b, + DW_OP_breg28 = 0x8c, + DW_OP_breg29 = 0x8d, + DW_OP_breg30 = 0x8e, + DW_OP_breg31 = 0x8f, + DW_OP_regx = 0x90, + DW_OP_fbreg = 0x91, + DW_OP_bregx = 0x92, + DW_OP_piece = 0x93, + DW_OP_deref_size = 0x94, + DW_OP_xderef_size = 0x95, + DW_OP_nop = 0x96, + /* DWARF 3 */ + DW_OP_push_object_address = 0x97, + DW_OP_call2 = 0x98, + DW_OP_call4 = 0x99, + DW_OP_call_ref = 0x9a , + DW_OP_form_tls_address = 0x9b, + DW_OP_call_frame_cfa = 0x9c, + DW_OP_bit_piece = 0x9d, + /* DWARF 4 */ + DW_OP_implicit_value = 0x9e, + DW_OP_stack_value = 0x9f, + + DW_OP_lo_user = 0xe0, + DW_OP_hi_user = 0xff +}; + +enum dwarf_base_type { + DW_ATE_address = 0x01, + DW_ATE_boolean = 0x02, + DW_ATE_complex_float = 0x03, + DW_ATE_float = 0x04, + DW_ATE_signed = 0x05, + DW_ATE_signed_char = 0x06, + DW_ATE_unsigned = 0x07, + DW_ATE_unsigned_char = 0x08, + /* DWARF 3 */ + DW_ATE_imaginary_float = 0x09, + DW_ATE_packed_decimal = 0x0a, + DW_ATE_numeric_string = 0x0b, + DW_ATE_edited = 0x0c, + DW_ATE_signed_fixed = 0x0d, + DW_ATE_unsigned_fixed = 0x0e, + DW_ATE_decimal_float = 0x0f, + /* DWARF 4 */ + DW_ATE_UTF = 0x10, + + DW_ATE_lo_user = 0x80, + DW_ATE_hi_user = 0xff +}; + +enum dwarf_decimal_sign { + DW_DS_unsigned = 0x01, + DW_DS_leading_overpunch = 0x02, + DW_DS_trailing_overpunch = 0x03, + DW_DS_leading_separate = 0x04, + DW_DS_trailing_separate = 0x05 +}; + +enum dwarf_endianity { + DW_END_default = 0x00, + DW_END_big = 0x01, + DW_END_little = 0x02, + + DW_END_lo_user = 0x40, + DW_END_hi_user = 0xff +}; + +enum dwarf_accessibility { + DW_ACCESS_public = 0x01, + DW_ACCESS_protected = 0x02, + DW_ACCESS_private = 0x03 +}; + +enum dwarf_visibility { + DW_VIS_local = 0x01, + DW_VIS_exported = 0x02, + DW_VIS_qualified = 0x03 +}; + +enum dwarf_virtuality { + DW_VIRTUALITY_none = 0x00, + DW_VIRTUALITY_virtual = 0x01, + DW_VIRTUALITY_pure_virtual = 0x02 +}; + +enum dwarf_language { + DW_LANG_C89 = 0x0001, + DW_LANG_C = 0x0002, + DW_LANG_Ada83 = 0x0003, + DW_LANG_C_plus_plus = 0x0004, + DW_LANG_Cobol74 = 0x0005, + DW_LANG_Cobol85 = 0x0006, + DW_LANG_Fortran77 = 0x0007, + DW_LANG_Fortran90 = 0x0008, + DW_LANG_Pascal83 = 0x0009, + DW_LANG_Modula2 = 0x000a, + DW_LANG_Java = 0x000b, + DW_LANG_C99 = 0x000c, + DW_LANG_Ada95 = 0x000d, + DW_LANG_Fortran95 = 0x000e, + DW_LANG_PLI = 0x000f, + DW_LANG_ObjC = 0x0010, + DW_LANG_ObjC_plus_plus = 0x0011, + DW_LANG_UPC = 0x0012, + DW_LANG_D = 0x0013, + DW_LANG_Python = 0x0014, + DW_LANG_OpenCL = 0x0015, + DW_LANG_Go = 0x0016, + DW_LANG_Modula3 = 0x0017, + DW_LANG_Haskell = 0x0018, + DW_LANG_C_plus_plus_03 = 0x0019, + DW_LANG_C_plus_plus_11 = 0x001a, + DW_LANG_OCaml = 0x001b, + DW_LANG_Rust = 0x001c, + DW_LANG_C11 = 0x001d, + DW_LANG_Swift = 0x001e, + DW_LANG_Julia = 0x001f, + DW_LANG_Dylan = 0x0020, + DW_LANG_C_plus_plus_14 = 0x0021, + DW_LANG_Fortran03 = 0x0022, + DW_LANG_Fortran08 = 0x0023, + DW_LANG_RenderScript = 0x0024, + + DW_LANG_Mips_Assembler = 0x8001, + + DW_LANG_lo_user = 0x8000, + DW_LANG_hi_user = 0xffff, + + DW_LANG_Rust_old = 0x9000 +}; + +enum dwarf_identifier_case { + DW_ID_case_sensitive = 0x00, + DW_ID_up_case = 0x01, + DW_ID_down_case = 0x02, + DW_ID_case_insensitive = 0x03 +}; + +enum dwarf_calling_conversion { + DW_CC_normal = 0x01, + DW_CC_program = 0x02, + DW_CC_nocall = 0x03, + DW_CC_pass_by_reference = 0x4, + DW_CC_pass_by_value = 0x5, + + DW_CC_lo_user = 0x40, + DW_CC_hi_user = 0xff, + + DW_CC_GNU_renesas_sh = 0x40, + DW_CC_GNU_borland_fastcall_i386 = 0x41 +}; + +enum dwarf_inline { + DW_INL_not_inlined = 0x00, + DW_INL_inlined = 0x01, + DW_INL_declared_not_inlined = 0x02, + DW_INL_declared_inlined = 0x03 +}; + +enum dwarf_ordering { + DW_ORD_row_major = 0x00, + DW_ORD_col_major = 0x01 +}; + +enum dwarf_discriminant { + DW_DSC_label = 0x00, + DW_DSC_range = 0x01 +}; + +enum dwarf_line_number { + DW_LNS_extended_op = 0x00, + DW_LNS_copy = 0x01, + DW_LNS_advance_pc = 0x02, + DW_LNS_advance_line = 0x03, + DW_LNS_set_file = 0x04, + DW_LNS_set_column = 0x05, + DW_LNS_negate_stmt = 0x06, + DW_LNS_set_basic_block = 0x07, + DW_LNS_const_add_pc = 0x08, + DW_LNS_fixed_advance_pc = 0x09, + DW_LNS_set_prologue_end = 0x0a, + DW_LNS_set_epilogue_begin = 0x0b, + DW_LNS_set_isa = 0x0c +}; + +enum dwarf_line_number_extended { + DW_LNE_end_sequence = 0x01, + DW_LNE_set_address = 0x02, + DW_LNE_define_file = 0x03, + DW_LNE_set_discriminator= 0x04, + DW_LNE_lo_user = 0x80, + DW_LNE_hi_user = 0xff +}; + +enum dwarf_macinfo_type { + DW_MACINFO_define = 0x01, + DW_MACINFO_undef = 0x02, + DW_MACINFO_start_file = 0x03, + DW_MACINFO_end_file = 0x04, + DW_MACINFO_vendor_ext = 0xff +}; + +enum dwarf_call_frame { + DW_CFA_advance_loc = 0x01, + DW_CFA_offset = 0x02, + DW_CFA_restore = 0x03, + DW_CFA_nop = 0x00, + DW_CFA_set_loc = 0x01, + DW_CFA_advance_loc1 = 0x02, + DW_CFA_advance_loc2 = 0x03, + DW_CFA_advance_loc4 = 0x04, + DW_CFA_offset_extended = 0x05, + DW_CFA_restore_extended = 0x06, + DW_CFA_undefined = 0x07, + DW_CFA_same_value = 0x08, + DW_CFA_register = 0x09, + DW_CFA_remember_state = 0x0a, + DW_CFA_restore_state = 0x0b, + DW_CFA_def_cfa = 0x0c, + DW_CFA_def_cfa_register = 0x0d, + DW_CFA_def_cfa_offset = 0x0e, + /* DWARF 3 */ + DW_CFA_def_cfa_expression = 0x0f, + DW_CFA_expression = 0x10, + DW_CFA_offset_extended_sf = 0x11, + DW_CFA_def_cfa_sf = 0x12, + DW_CFA_def_cfa_offset_sf = 0x13, + DW_CFA_val_offset = 0x14, + DW_CFA_val_offset_sf = 0x15, + DW_CFA_val_expression = 0x16, + DW_CFA_lo_user = 0x1c, + DW_CFA_hi_user = 0x3f +}; + +#endif /* OUTPUT_DWARF_H */ diff --git a/vere/ext/nasm/output/elf.h b/vere/ext/nasm/output/elf.h new file mode 100644 index 0000000..a15688e --- /dev/null +++ b/vere/ext/nasm/output/elf.h @@ -0,0 +1,557 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef OUTPUT_ELF_H +#define OUTPUT_ELF_H + +/* + * Since NASM support both Elf32/64 file formats + * we need to cover all types, structures, typedefs and etc + */ + +#include "compiler.h" + +/* Segment types */ +#define PT_NULL 0 +#define PT_LOAD 1 +#define PT_DYNAMIC 2 +#define PT_INTERP 3 +#define PT_NOTE 4 +#define PT_SHLIB 5 +#define PT_PHDR 6 +#define PT_LOOS 0x60000000 +#define PT_HIOS 0x6fffffff +#define PT_LOPROC 0x70000000 +#define PT_HIPROC 0x7fffffff +#define PT_GNU_EH_FRAME 0x6474e550 /* Extension, eh? */ + +/* ELF file types */ +#define ET_NONE 0 +#define ET_REL 1 +#define ET_EXEC 2 +#define ET_DYN 3 +#define ET_CORE 4 +#define ET_LOPROC 0xff00 +#define ET_HIPROC 0xffff + +/* ELF machine types */ +#define EM_NONE 0 +#define EM_M32 1 +#define EM_SPARC 2 +#define EM_386 3 +#define EM_68K 4 +#define EM_88K 5 +#define EM_486 6 /* Not used in Linux at least */ +#define EM_860 7 +#define EM_MIPS 8 /* R3k, bigendian(?) */ +#define EM_MIPS_RS4_BE 10 /* R4k BE */ +#define EM_PARISC 15 +#define EM_SPARC32PLUS 18 +#define EM_PPC 20 +#define EM_PPC64 21 +#define EM_S390 22 +#define EM_SH 42 +#define EM_SPARCV9 43 /* v9 = SPARC64 */ +#define EM_H8_300H 47 +#define EM_H8S 48 +#define EM_IA_64 50 +#define EM_X86_64 62 +#define EM_CRIS 76 +#define EM_V850 87 +#define EM_ALPHA 0x9026 /* Interim Alpha that stuck around */ +#define EM_CYGNUS_V850 0x9080 /* Old v850 ID used by Cygnus */ +#define EM_S390_OLD 0xA390 /* Obsolete interim value for S/390 */ + +/* Dynamic type values */ +#define DT_NULL 0 +#define DT_NEEDED 1 +#define DT_PLTRELSZ 2 +#define DT_PLTGOT 3 +#define DT_HASH 4 +#define DT_STRTAB 5 +#define DT_SYMTAB 6 +#define DT_RELA 7 +#define DT_RELASZ 8 +#define DT_RELAENT 9 +#define DT_STRSZ 10 +#define DT_SYMENT 11 +#define DT_INIT 12 +#define DT_FINI 13 +#define DT_SONAME 14 +#define DT_RPATH 15 +#define DT_SYMBOLIC 16 +#define DT_REL 17 +#define DT_RELSZ 18 +#define DT_RELENT 19 +#define DT_PLTREL 20 +#define DT_DEBUG 21 +#define DT_TEXTREL 22 +#define DT_JMPREL 23 +#define DT_LOPROC 0x70000000 +#define DT_HIPROC 0x7fffffff + +/* Auxiliary table entries */ +#define AT_NULL 0 /* end of vector */ +#define AT_IGNORE 1 /* entry should be ignored */ +#define AT_EXECFD 2 /* file descriptor of program */ +#define AT_PHDR 3 /* program headers for program */ +#define AT_PHENT 4 /* size of program header entry */ +#define AT_PHNUM 5 /* number of program headers */ +#define AT_PAGESZ 6 /* system page size */ +#define AT_BASE 7 /* base address of interpreter */ +#define AT_FLAGS 8 /* flags */ +#define AT_ENTRY 9 /* entry point of program */ +#define AT_NOTELF 10 /* program is not ELF */ +#define AT_UID 11 /* real uid */ +#define AT_EUID 12 /* effective uid */ +#define AT_GID 13 /* real gid */ +#define AT_EGID 14 /* effective gid */ +#define AT_PLATFORM 15 /* string identifying CPU for optimizations */ +#define AT_HWCAP 16 /* arch dependent hints at CPU capabilities */ +#define AT_CLKTCK 17 /* frequency at which times() increments */ +/* 18..22 = ? */ +#define AT_SECURE 23 /* secure mode boolean */ + +/* Program header permission flags */ +#define PF_X 0x1 +#define PF_W 0x2 +#define PF_R 0x4 + +/* Section header types */ +#define SHT_NULL 0 +#define SHT_PROGBITS 1 +#define SHT_SYMTAB 2 +#define SHT_STRTAB 3 +#define SHT_RELA 4 +#define SHT_HASH 5 +#define SHT_DYNAMIC 6 +#define SHT_NOTE 7 +#define SHT_NOBITS 8 +#define SHT_REL 9 +#define SHT_SHLIB 10 +#define SHT_DYNSYM 11 +#define SHT_INIT_ARRAY 14 +#define SHT_FINI_ARRAY 15 +#define SHT_PREINIT_ARRAY 16 +#define SHT_GROUP 17 +#define SHT_SYMTAB_SHNDX 18 +#define SHT_LOPROC 0x70000000 +#define SHT_HIPROC 0x7fffffff +#define SHT_LOUSER 0x80000000 +#define SHT_HIUSER 0xffffffff + +/* Section header flags */ +#define SHF_WRITE (1 << 0) /* Writable */ +#define SHF_ALLOC (1 << 1) /* Occupies memory during execution */ +#define SHF_EXECINSTR (1 << 2) /* Executable */ +#define SHF_MERGE (1 << 4) /* Might be merged */ +#define SHF_STRINGS (1 << 5) /* Contains nul-terminated strings */ +#define SHF_INFO_LINK (1 << 6) /* `sh_info' contains SHT index */ +#define SHF_LINK_ORDER (1 << 7) /* Preserve order after combining */ +#define SHF_OS_NONCONFORMING (1 << 8) /* Non-standard OS specific handling required */ +#define SHF_GROUP (1 << 9) /* Section is member of a group */ +#define SHF_TLS (1 << 10) /* Section hold thread-local data */ + +/* Special section numbers */ +#define SHN_UNDEF 0x0000 +#define SHN_LORESERVE 0xff00 +#define SHN_LOPROC 0xff00 +#define SHN_HIPROC 0xff1f +#define SHN_ABS 0xfff1 +#define SHN_COMMON 0xfff2 +#define SHN_XINDEX 0xffff +#define SHN_HIRESERVE 0xffff + +/* Same, but signed/sign-extended */ +#define XSHN_UNDEF ((int16_t)SHN_UNDEF) +#define XSHN_LORESERVE ((int16_t)SHN_LORESERVE) +#define XSHN_LOPROC ((int16_t)SHN_LOPROC) +#define XSHN_HIPROC ((int16_t)SHN_HIPROC) +#define XSHN_ABS ((int16_t)SHN_ABS) +#define XSHN_COMMON ((int16_t)SHN_COMMON) +#define XSHN_XINDEX ((int16_t)SHN_XINDEX) +#define XSHN_HIRESERVE ((int16_t)SHN_HIRESERVE) + +/* Section align flag */ +#define SHA_ANY 1 /* No alignment constraint */ + +/* Length of magic at the start of a file */ +#define EI_NIDENT 16 + +/* Magic number constants... */ +#define EI_MAG0 0 /* e_ident[] indexes */ +#define EI_MAG1 1 +#define EI_MAG2 2 +#define EI_MAG3 3 +#define EI_CLASS 4 +#define EI_DATA 5 +#define EI_VERSION 6 +#define EI_OSABI 7 +#define EI_ABIVERSION 8 +#define EI_NINDENT 16 + +#define ELFMAG0 0x7f /* EI_MAG */ +#define ELFMAG1 'E' +#define ELFMAG2 'L' +#define ELFMAG3 'F' +#define ELFMAG "\177ELF" +#define SELFMAG 4 + +#define ELFCLASSNONE 0 /* EI_CLASS */ +#define ELFCLASS32 1 +#define ELFCLASS64 2 +#define ELFCLASSNUM 3 + +#define ELFDATANONE 0 /* e_ident[EI_DATA] */ +#define ELFDATA2LSB 1 +#define ELFDATA2MSB 2 + +#define EV_NONE 0 /* e_version, EI_VERSION */ +#define EV_CURRENT 1 +#define EV_NUM 2 + +#define ELFOSABI_NONE 0 +#define ELFOSABI_LINUX 3 + +/* Legal values for ST_BIND subfield of st_info (symbol binding) */ +#define STB_LOCAL 0 /* Local symbol */ +#define STB_GLOBAL 1 /* Global symbol */ +#define STB_WEAK 2 /* Weak symbol */ +#define STB_NUM 3 /* Number of defined types */ +#define STB_LOOS 10 /* Start of OS-specific */ +#define STB_HIOS 12 /* End of OS-specific */ +#define STB_LOPROC 13 /* Start of processor-specific */ +#define STB_HIPROC 15 /* End of processor-specific */ + +/* Symbol types */ +#define STT_NOTYPE 0 /* Symbol type is unspecified */ +#define STT_OBJECT 1 /* Symbol is a data object */ +#define STT_FUNC 2 /* Symbol is a code object */ +#define STT_SECTION 3 /* Symbol associated with a section */ +#define STT_FILE 4 /* Symbol's name is file name */ +#define STT_COMMON 5 /* Symbol is a common data object */ +#define STT_TLS 6 /* Symbol is thread-local data object */ +#define STT_NUM 7 /* Number of defined types */ + +/* Symbol visibilities */ +#define STV_DEFAULT 0 /* Default symbol visibility rules */ +#define STV_INTERNAL 1 /* Processor specific hidden class */ +#define STV_HIDDEN 2 /* Sym unavailable in other modules */ +#define STV_PROTECTED 3 /* Not preemptible, not exported */ + +/* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field */ +#define ELF32_ST_BIND(i) ((i) >> 4) +#define ELF32_ST_MKBIND(i) ((i) << 4) /* just a helper */ +#define ELF32_ST_TYPE(i) ((i) & 0xf) +#define ELF32_ST_INFO(b, i) (ELF32_ST_MKBIND(b) + ELF32_ST_TYPE(i)) + +#define ELF64_ST_BIND(i) ELF32_ST_BIND(i) +#define ELF64_ST_MKBIND(i) ELF32_ST_MKBIND(i) +#define ELF64_ST_TYPE(i) ELF32_ST_TYPE(i) +#define ELF64_ST_INFO(b, i) ELF32_ST_INFO(b, i) + +/* + * ELF standard typedefs (yet more proof that was way overdue) + */ + +typedef uint16_t Elf32_Half; +typedef int16_t Elf32_SHalf; +typedef uint32_t Elf32_Word; +typedef int32_t Elf32_Sword; +typedef uint64_t Elf32_Xword; +typedef int64_t Elf32_Sxword; + +typedef uint32_t Elf32_Off; +typedef uint32_t Elf32_Addr; +typedef uint16_t Elf32_Section; + +typedef uint16_t Elf64_Half; +typedef int16_t Elf64_SHalf; +typedef uint32_t Elf64_Word; +typedef int32_t Elf64_Sword; +typedef uint64_t Elf64_Xword; +typedef int64_t Elf64_Sxword; + +typedef uint64_t Elf64_Off; +typedef uint64_t Elf64_Addr; +typedef uint16_t Elf64_Section; + +/* + * Dynamic header + */ + +typedef struct elf32_dyn { + Elf32_Sword d_tag; + union { + Elf32_Sword d_val; + Elf32_Addr d_ptr; + } d_un; +} Elf32_Dyn; + +typedef struct elf64_dyn { + Elf64_Sxword d_tag; + union { + Elf64_Xword d_val; + Elf64_Addr d_ptr; + } d_un; +} Elf64_Dyn; + +/* + * Relocations + */ + +#define ELF32_R_SYM(x) ((x) >> 8) +#define ELF32_R_TYPE(x) ((x) & 0xff) +#define ELF32_R_INFO(s,t) (((Elf32_Word)(s) << 8) + ELF32_R_TYPE(t)) + +typedef struct elf32_rel { + Elf32_Addr r_offset; + Elf32_Word r_info; +} Elf32_Rel; + +typedef struct elf32_rela { + Elf32_Addr r_offset; + Elf32_Word r_info; + Elf32_Sword r_addend; +} Elf32_Rela; + +enum reloc32_type { + R_386_32 = 1, /* ordinary absolute relocation */ + R_386_PC32 = 2, /* PC-relative relocation */ + R_386_GOT32 = 3, /* an offset into GOT */ + R_386_PLT32 = 4, /* a PC-relative offset into PLT */ + R_386_COPY = 5, /* ??? */ + R_386_GLOB_DAT = 6, /* ??? */ + R_386_JUMP_SLOT = 7, /* ??? */ + R_386_RELATIVE = 8, /* ??? */ + R_386_GOTOFF = 9, /* an offset from GOT base */ + R_386_GOTPC = 10, /* a PC-relative offset _to_ GOT */ + R_386_TLS_TPOFF = 14, /* Offset in static TLS block */ + R_386_TLS_IE = 15, /* Address of GOT entry for static TLS block offset */ + /* These are GNU extensions, but useful */ + R_386_16 = 20, /* A 16-bit absolute relocation */ + R_386_PC16 = 21, /* A 16-bit PC-relative relocation */ + R_386_8 = 22, /* An 8-bit absolute relocation */ + R_386_PC8 = 23, /* An 8-bit PC-relative relocation */ + R_386_SEG16 = 45, /* A 16-bit real-mode segment */ + R_386_SUB16 = 46, /* Subtract 16-bit value */ + R_386_SUB32 = 47 /* Subtract 32-bit value */ +}; + +#define ELF64_R_SYM(x) ((x) >> 32) +#define ELF64_R_TYPE(x) ((x) & 0xffffffff) +#define ELF64_R_INFO(s,t) (((Elf64_Xword)(s) << 32) + ELF64_R_TYPE(t)) + +typedef struct elf64_rel { + Elf64_Addr r_offset; + Elf64_Xword r_info; +} Elf64_Rel; + +typedef struct elf64_rela { + Elf64_Addr r_offset; + Elf64_Xword r_info; + Elf64_Sxword r_addend; +} Elf64_Rela; + +enum reloc64_type { + R_X86_64_NONE = 0, /* No reloc */ + R_X86_64_64 = 1, /* Direct 64 bit */ + R_X86_64_PC32 = 2, /* PC relative 32 bit signed */ + R_X86_64_GOT32 = 3, /* 32 bit GOT entry */ + R_X86_64_PLT32 = 4, /* 32 bit PLT address */ + R_X86_64_COPY = 5, /* Copy symbol at runtime */ + R_X86_64_GLOB_DAT = 6, /* Create GOT entry */ + R_X86_64_JUMP_SLOT = 7, /* Create PLT entry */ + R_X86_64_RELATIVE = 8, /* Adjust by program base */ + R_X86_64_GOTPCREL = 9, /* 32 bit signed PC relative offset to GOT */ + R_X86_64_32 = 10, /* Direct 32 bit zero extended */ + R_X86_64_32S = 11, /* Direct 32 bit sign extended */ + R_X86_64_16 = 12, /* Direct 16 bit zero extended */ + R_X86_64_PC16 = 13, /* 16 bit sign extended pc relative */ + R_X86_64_8 = 14, /* Direct 8 bit sign extended */ + R_X86_64_PC8 = 15, /* 8 bit sign extended pc relative */ + R_X86_64_DTPMOD64 = 16, /* ID of module containing symbol */ + R_X86_64_DTPOFF64 = 17, /* Offset in module's TLS block */ + R_X86_64_TPOFF64 = 18, /* Offset in initial TLS block */ + R_X86_64_TLSGD = 19, /* 32 bit signed PC relative offset to two GOT entries for GD symbol */ + R_X86_64_TLSLD = 20, /* 32 bit signed PC relative offset to two GOT entries for LD symbol */ + R_X86_64_DTPOFF32 = 21, /* Offset in TLS block */ + R_X86_64_GOTTPOFF = 22, /* 32 bit signed PC relative offset to GOT entry for IE symbol */ + R_X86_64_TPOFF32 = 23, /* Offset in initial TLS block */ + R_X86_64_PC64 = 24, /* word64 S + A - P */ + R_X86_64_GOTOFF64 = 25, /* word64 S + A - GOT */ + R_X86_64_GOTPC32 = 26, /* word32 GOT + A - P */ + R_X86_64_GOT64 = 27, /* word64 G + A */ + R_X86_64_GOTPCREL64 = 28, /* word64 G + GOT - P + A */ + R_X86_64_GOTPC64 = 29, /* word64 GOT - P + A */ + R_X86_64_GOTPLT64 = 30, /* word64 G + A */ + R_X86_64_PLTOFF64 = 31, /* word64 L - GOT + A */ + R_X86_64_SIZE32 = 32, /* word32 Z + A */ + R_X86_64_SIZE64 = 33, /* word64 Z + A */ + R_X86_64_GOTPC32_TLSDESC= 34, /* word32 */ + R_X86_64_TLSDESC_CALL = 35, /* none */ + R_X86_64_TLSDESC = 36 /* word64?2 */ +}; + +/* + * Symbol + */ + +typedef struct elf32_sym { + Elf32_Word st_name; + Elf32_Addr st_value; + Elf32_Word st_size; + unsigned char st_info; + unsigned char st_other; + Elf32_Half st_shndx; +} Elf32_Sym; + +typedef struct elf64_sym { + Elf64_Word st_name; + unsigned char st_info; + unsigned char st_other; + Elf64_Half st_shndx; + Elf64_Addr st_value; + Elf64_Xword st_size; +} Elf64_Sym; + +/* + * Main file header + */ + +typedef struct elf32_hdr { + unsigned char e_ident[EI_NIDENT]; + Elf32_Half e_type; + Elf32_Half e_machine; + Elf32_Word e_version; + Elf32_Addr e_entry; + Elf32_Off e_phoff; + Elf32_Off e_shoff; + Elf32_Word e_flags; + Elf32_Half e_ehsize; + Elf32_Half e_phentsize; + Elf32_Half e_phnum; + Elf32_Half e_shentsize; + Elf32_Half e_shnum; + Elf32_Half e_shstrndx; +} Elf32_Ehdr; + +typedef struct elf64_hdr { + unsigned char e_ident[EI_NIDENT]; + Elf64_Half e_type; + Elf64_Half e_machine; + Elf64_Word e_version; + Elf64_Addr e_entry; + Elf64_Off e_phoff; + Elf64_Off e_shoff; + Elf64_Word e_flags; + Elf64_Half e_ehsize; + Elf64_Half e_phentsize; + Elf64_Half e_phnum; + Elf64_Half e_shentsize; + Elf64_Half e_shnum; + Elf64_Half e_shstrndx; +} Elf64_Ehdr; + +/* + * Program header + */ + +typedef struct elf32_phdr { + Elf32_Word p_type; + Elf32_Off p_offset; + Elf32_Addr p_vaddr; + Elf32_Addr p_paddr; + Elf32_Word p_filesz; + Elf32_Word p_memsz; + Elf32_Word p_flags; + Elf32_Word p_align; +} Elf32_Phdr; + +typedef struct elf64_phdr { + Elf64_Word p_type; + Elf64_Word p_flags; + Elf64_Off p_offset; + Elf64_Addr p_vaddr; + Elf64_Addr p_paddr; + Elf64_Xword p_filesz; + Elf64_Xword p_memsz; + Elf64_Xword p_align; +} Elf64_Phdr; + +/* + * Section header + */ + +typedef struct elf32_shdr { + Elf32_Word sh_name; + Elf32_Word sh_type; + Elf32_Word sh_flags; + Elf32_Addr sh_addr; + Elf32_Off sh_offset; + Elf32_Word sh_size; + Elf32_Word sh_link; + Elf32_Word sh_info; + Elf32_Word sh_addralign; + Elf32_Word sh_entsize; +} Elf32_Shdr; + +typedef struct elf64_shdr { + Elf64_Word sh_name; + Elf64_Word sh_type; + Elf64_Xword sh_flags; + Elf64_Addr sh_addr; + Elf64_Off sh_offset; + Elf64_Xword sh_size; + Elf64_Word sh_link; + Elf64_Word sh_info; + Elf64_Xword sh_addralign; + Elf64_Xword sh_entsize; +} Elf64_Shdr; + +/* + * Note header + */ +typedef struct elf32_note { + Elf32_Word n_namesz; /* Name size */ + Elf32_Word n_descsz; /* Content size */ + Elf32_Word n_type; /* Content type */ +} Elf32_Nhdr; + +typedef struct elf64_note { + Elf64_Word n_namesz; /* Name size */ + Elf64_Word n_descsz; /* Content size */ + Elf64_Word n_type; /* Content type */ +} Elf64_Nhdr; + +#endif /* OUTPUT_ELF_H */ diff --git a/vere/ext/nasm/output/legacy.c b/vere/ext/nasm/output/legacy.c new file mode 100644 index 0000000..15d22e9 --- /dev/null +++ b/vere/ext/nasm/output/legacy.c @@ -0,0 +1,122 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2016-2022 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * output/legacy.c + * + * Mangle a struct out_data to match the rather bizarre legacy + * backend interface. + * + * The "data" parameter for the output function points to a "int64_t", + * containing the address of the target in question, unless the type is + * OUT_RAWDATA, in which case it points to an "uint8_t" + * array. + * + * Exceptions are OUT_RELxADR, which denote an x-byte relocation + * which will be a relative jump. For this we need to know the + * distance in bytes from the start of the relocated record until + * the end of the containing instruction. _This_ is what is stored + * in the size part of the parameter, in this case. + * + * Also OUT_RESERVE denotes reservation of N bytes of BSS space, + * and the contents of the "data" parameter is irrelevant. + */ + +#include "nasm.h" +#include "outlib.h" + +void nasm_do_legacy_output(const struct out_data *data) +{ + const void *dptr = data->data; + enum out_type type = data->type; + int32_t tsegment = data->tsegment; + int32_t twrt = data->twrt; + uint64_t size = data->size; + + switch (data->type) { + case OUT_RELADDR: + switch (data->size) { + case 1: + type = OUT_REL1ADR; + break; + case 2: + type = OUT_REL2ADR; + break; + case 4: + type = OUT_REL4ADR; + break; + case 8: + type = OUT_REL8ADR; + break; + default: + panic(); + break; + } + + dptr = &data->toffset; + size = data->relbase - data->offset; + break; + + case OUT_SEGMENT: + type = OUT_ADDRESS; + tsegment |= 1; + /* fall through */ + + case OUT_ADDRESS: + dptr = &data->toffset; + size = (data->flags & OUT_SIGNED) ? -data->size : data->size; + break; + + case OUT_RAWDATA: + case OUT_RESERVE: + tsegment = twrt = NO_SEG; + break; + + case OUT_ZERODATA: + tsegment = twrt = NO_SEG; + type = OUT_RAWDATA; + dptr = zero_buffer; + while (size > ZERO_BUF_SIZE) { + ofmt->legacy_output(data->segment, dptr, type, + ZERO_BUF_SIZE, tsegment, twrt); + size -= ZERO_BUF_SIZE; + } + break; + + default: + panic(); + break; + } + + ofmt->legacy_output(data->segment, dptr, type, size, tsegment, twrt); +} diff --git a/vere/ext/nasm/output/macho.h b/vere/ext/nasm/output/macho.h new file mode 100644 index 0000000..538c531 --- /dev/null +++ b/vere/ext/nasm/output/macho.h @@ -0,0 +1,282 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef OUTPUT_MACHO_H +#define OUTPUT_MACHO_H + +#include "compiler.h" + +/* Magics */ +#define MH_MAGIC 0xfeedface +#define MH_MAGIC_64 0xfeedfacf + +/* File types */ +#define MH_OBJECT 0x1 + +/* CPUs */ +#define CPU_ARCH_MASK 0xff000000 +#define CPU_ARCH_ABI64 0x01000000 +#define CPU_TYPE_X86 7 +#define CPU_TYPE_I386 CPU_TYPE_X86 +#define CPU_TYPE_X86_64 (CPU_TYPE_X86 | CPU_ARCH_ABI64) + +#define CPU_SUBTYPE_MASK 0xff000000 +#define CPU_SUBTYPE_I386_ALL 3 + +/* Header flags */ +#define MH_SUBSECTIONS_VIA_SYMBOLS 0x00002000 + +/* Load commands */ +#define LC_SEGMENT 0x1 +#define LC_SEGMENT_64 0x19 +#define LC_SYMTAB 0x2 + +/* Symbol type bits */ +#define N_STAB 0xe0 +#define N_PEXT 0x10 +#define N_TYPE 0x0e +#define N_EXT 0x01 + +/* To mask with N_TYPE */ +#define N_UNDF 0x00 +#define N_ABS 0x02 +#define N_INDR 0x0a +#define N_PBUD 0x0c +#define N_SECT 0x0e + +/* Section ordinals */ +#define NO_SECT 0x00 +#define MAX_SECT 0xff + +/* Section bits */ +#define SECTION_TYPE 0x000000ff +#define SECTION_ATTRIBUTES 0xffffff00 +#define SECTION_ATTRIBUTES_USR 0xff000000 +#define SECTION_ATTRIBUTES_SYS 0x00ffff00 + +#define S_REGULAR 0x00 +#define S_ZEROFILL 0x01 +#define S_CSTRING_LITERALS 0x02 +#define S_4BYTE_LITERALS 0x03 +#define S_8BYTE_LITERALS 0x04 +#define S_LITERAL_POINTERS 0x05 +#define S_NON_LAZY_SYMBOL_POINTERS 0x06 +#define S_LAZY_SYMBOL_POINTERS 0x07 +#define S_SYMBOL_STUBS 0x08 +#define S_MOD_INIT_FUNC_POINTERS 0x09 +#define S_MOD_TERM_FUNC_POINTERS 0x0a +#define S_COALESCED 0x0b +#define S_GB_ZEROFILL 0x0c +#define S_INTERPOSING 0x0d +#define S_16BYTE_LITERALS 0x0e +#define S_DTRACE_DOF 0x0f +#define S_LAZY_DYLIB_SYMBOL_POINTERS 0x10 +#define S_THREAD_LOCAL_REGULAR 0x11 +#define S_THREAD_LOCAL_ZEROFILL 0x12 +#define S_THREAD_LOCAL_VARIABLES 0x13 +#define S_THREAD_LOCAL_VARIABLE_POINTERS 0x14 +#define S_THREAD_LOCAL_INIT_FUNCTION_POINTERS 0x15 + +#define S_ATTR_PURE_INSTRUCTIONS 0x80000000 +#define S_ATTR_NO_TOC 0x40000000 +#define S_ATTR_STRIP_STATIC_SYMS 0x20000000 +#define S_ATTR_NO_DEAD_STRIP 0x10000000 +#define S_ATTR_LIVE_SUPPORT 0x08000000 +#define S_ATTR_SELF_MODIFYING_CODE 0x04000000 +#define S_ATTR_DEBUG 0x02000000 + +#define S_ATTR_SOME_INSTRUCTIONS 0x00000400 +#define S_ATTR_EXT_RELOC 0x00000200 +#define S_ATTR_LOC_RELOC 0x00000100 +#define INDIRECT_SYMBOL_LOCAL 0x80000000 +#define INDIRECT_SYMBOL_ABS 0x40000000 + +/* Relocation info type */ +#define GENERIC_RELOC_VANILLA 0 +#define GENERIC_RELOC_PAIR 1 +#define GENERIC_RELOC_SECTDIFF 2 +#define GENERIC_RELOC_PB_LA_PTR 3 +#define GENERIC_RELOC_LOCAL_SECTDIFF 4 +#define GENERIC_RELOC_TLV 5 + +#define X86_64_RELOC_UNSIGNED 0 +#define X86_64_RELOC_SIGNED 1 +#define X86_64_RELOC_BRANCH 2 +#define X86_64_RELOC_GOT_LOAD 3 +#define X86_64_RELOC_GOT 4 +#define X86_64_RELOC_SUBTRACTOR 5 +#define X86_64_RELOC_SIGNED_1 6 +#define X86_64_RELOC_SIGNED_2 7 +#define X86_64_RELOC_SIGNED_4 8 +#define X86_64_RELOC_TLV 9 + +/* Relocation info */ +#define R_ABS 0 +#define R_SCATTERED 0x80000000 + +/* VM permission constants */ +#define VM_PROT_NONE 0x00 +#define VM_PROT_READ 0x01 +#define VM_PROT_WRITE 0x02 +#define VM_PROT_EXECUTE 0x04 + +typedef struct { + uint32_t magic; + uint32_t cputype; + uint32_t cpusubtype; + uint32_t filetype; + uint32_t ncmds; + uint32_t sizeofcmds; + uint32_t flags; +} macho_header_t; + +typedef struct { + uint32_t magic; + uint32_t cputype; + uint32_t cpusubtype; + uint32_t filetype; + uint32_t ncmds; + uint32_t sizeofcmds; + uint32_t flags; + uint32_t reserved; +} macho_header_64_t; + +typedef struct { + uint32_t cmd; + uint32_t cmdsize; +} macho_load_command_t; + +typedef struct { + uint32_t cmd; + uint32_t cmdsize; + char segname[16]; + uint32_t vmaddr; + uint32_t vmsize; + uint32_t fileoff; + uint32_t filesize; + uint32_t maxprot; + uint32_t initprot; + uint32_t nsects; + uint32_t flags; +} macho_segment_command_t; + +typedef struct { + uint32_t cmd; + uint32_t cmdsize; + char segname[16]; + uint64_t vmaddr; + uint64_t vmsize; + uint64_t fileoff; + uint64_t filesize; + uint32_t maxprot; + uint32_t initprot; + uint32_t nsects; + uint32_t flags; +} macho_segment_command_64_t; + +typedef struct { + char sectname[16]; + char segname[16]; + uint32_t addr; + uint32_t size; + uint32_t offset; + uint32_t align; + uint32_t reloff; + uint32_t nreloc; + uint32_t flags; + uint32_t reserved1; + uint32_t reserved2; +} macho_section_t; + +typedef struct { + char sectname[16]; + char segname[16]; + uint64_t addr; + uint64_t size; + uint32_t offset; + uint32_t align; + uint32_t reloff; + uint32_t nreloc; + uint32_t flags; + uint32_t reserved1; + uint32_t reserved2; + uint32_t reserved3; +} macho_section_64_t; + +typedef struct { + uint32_t cmd; + uint32_t cmdsize; + uint32_t symoff; + uint32_t nsyms; + uint32_t stroff; + uint32_t strsize; +} macho_symtab_command_t; + +typedef struct { + int32_t r_address; + union { + struct { + uint32_t r_symbolnum: 24, + r_pcrel: 1, + r_length: 2, + r_extern: 1, + r_type: 4; + } s; + uint32_t r_raw; + } u; +} macho_relocation_info_t; + +typedef struct nlist_base { + uint32_t n_strx; + uint8_t n_type; + uint8_t n_sect; + uint16_t n_desc; +} macho_nlist_base_t; + +typedef struct nlist { + uint32_t n_strx; + uint8_t n_type; + uint8_t n_sect; + int16_t n_desc; + uint32_t n_value; +} macho_nlist_t; + +typedef struct { + uint32_t n_strx; + uint8_t n_type; + uint8_t n_sect; + uint16_t n_desc; + uint64_t n_value; +} macho_nlist_64_t; + +#endif /* OUTPUT_MACHO_H */ diff --git a/vere/ext/nasm/output/nulldbg.c b/vere/ext/nasm/output/nulldbg.c new file mode 100644 index 0000000..93ec3a7 --- /dev/null +++ b/vere/ext/nasm/output/nulldbg.c @@ -0,0 +1,96 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2014 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "nasm.h" +#include "nasmlib.h" +#include "outlib.h" + +void null_debug_init(void) +{ +} + +void null_debug_linenum(const char *filename, int32_t linenumber, int32_t segto) +{ + (void)filename; + (void)linenumber; + (void)segto; +} + +void null_debug_deflabel(char *name, int32_t segment, int64_t offset, + int is_global, char *special) +{ + (void)name; + (void)segment; + (void)offset; + (void)is_global; + (void)special; +} + +void null_debug_directive(const char *directive, const char *params) +{ + (void)directive; + (void)params; +} + +void null_debug_typevalue(int32_t type) +{ + (void)type; +} + +void null_debug_output(int type, void *param) +{ + (void)type; + (void)param; +} + +void null_debug_cleanup(void) +{ +} + +const struct dfmt null_debug_form = { + "Null", + "null", + null_debug_init, + null_debug_linenum, + null_debug_deflabel, + NULL, /* .debug_smacros */ + NULL, /* .debug_include */ + NULL, /* .debug_mmacros */ + null_debug_directive, + null_debug_typevalue, + null_debug_output, + null_debug_cleanup, + NULL /* pragma list */ +}; + +const struct dfmt * const null_debug_arr[2] = { &null_debug_form, NULL }; diff --git a/vere/ext/nasm/output/nullout.c b/vere/ext/nasm/output/nullout.c new file mode 100644 index 0000000..121fe70 --- /dev/null +++ b/vere/ext/nasm/output/nullout.c @@ -0,0 +1,60 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "nasm.h" +#include "nasmlib.h" +#include "outlib.h" + +enum directive_result +null_directive(enum directive directive, char *value) +{ + (void)directive; + (void)value; + return DIRR_UNKNOWN; +} + +void null_sectalign(int32_t seg, unsigned int value) +{ + (void)seg; + (void)value; +} + +void null_reset(void) +{ + /* Nothing to do */ +} + +int32_t null_segbase(int32_t segment) +{ + return segment; +} diff --git a/vere/ext/nasm/output/outaout.c b/vere/ext/nasm/output/outaout.c new file mode 100644 index 0000000..c59c789 --- /dev/null +++ b/vere/ext/nasm/output/outaout.c @@ -0,0 +1,923 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2013 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * outaout.c output routines for the Netwide Assembler to produce + * Linux a.out object files + */ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "saa.h" +#include "raa.h" +#include "stdscan.h" +#include "eval.h" +#include "outform.h" +#include "outlib.h" + +#if defined OF_AOUT || defined OF_AOUTB + +#define RELTYPE_ABSOLUTE 0x00 +#define RELTYPE_RELATIVE 0x01 +#define RELTYPE_GOTPC 0x01 /* no explicit GOTPC in a.out */ +#define RELTYPE_GOTOFF 0x10 +#define RELTYPE_GOT 0x10 /* distinct from GOTOFF bcos sym not sect */ +#define RELTYPE_PLT 0x21 +#define RELTYPE_SYMFLAG 0x08 + +struct Reloc { + struct Reloc *next; + int32_t address; /* relative to _start_ of section */ + int32_t symbol; /* symbol number or -ve section id */ + int bytes; /* 2 or 4 */ + int reltype; /* see above */ +}; + +struct Symbol { + int32_t strpos; /* string table position of name */ + int type; /* symbol type - see flags below */ + int32_t value; /* address, or COMMON variable size */ + int32_t size; /* size for data or function exports */ + int32_t segment; /* back-reference used by gsym_reloc */ + struct Symbol *next; /* list of globals in each section */ + struct Symbol *nextfwd; /* list of unresolved-size symbols */ + char *name; /* for unresolved-size symbols */ + int32_t symnum; /* index into symbol table */ +}; + +/* + * Section IDs - used in Reloc.symbol when negative, and in + * Symbol.type when positive. + */ +#define SECT_ABS 2 /* absolute value */ +#define SECT_TEXT 4 /* text section */ +#define SECT_DATA 6 /* data section */ +#define SECT_BSS 8 /* bss section */ +#define SECT_MASK 0xE /* mask out any of the above */ + +/* + * More flags used in Symbol.type. + */ +#define SYM_GLOBAL 1 /* it's a global symbol */ +#define SYM_DATA 0x100 /* used for shared libs */ +#define SYM_FUNCTION 0x200 /* used for shared libs */ +#define SYM_WITH_SIZE 0x4000 /* not output; internal only */ + +/* + * Bit more explanation of symbol types: SECT_xxx denotes a local + * symbol. SECT_xxx|SYM_GLOBAL denotes a global symbol, defined in + * this module. Just SYM_GLOBAL, with zero value, denotes an + * external symbol referenced in this module. And just SYM_GLOBAL, + * but with a non-zero value, declares a C `common' variable, of + * size `value'. + */ + +struct Section { + struct SAA *data; + uint32_t len, size, nrelocs; + int32_t index; + struct Reloc *head, **tail; + struct Symbol *gsyms, *asym; +}; + +static struct Section stext, sdata, sbss; + +static struct SAA *syms; +static uint32_t nsyms; + +static struct RAA *bsym; + +static struct SAA *strs; +static uint32_t strslen; + +static struct Symbol *fwds; + +static int bsd; +static int is_pic; + +static void aout_write(void); +static void aout_write_relocs(struct Reloc *); +static void aout_write_syms(void); +static void aout_sect_write(struct Section *, const uint8_t *, + uint32_t); +static void aout_pad_sections(void); +static void aout_fixup_relocs(struct Section *); + +/* + * Special section numbers which are used to define special + * symbols, which can be used with WRT to provide PIC relocation + * types. + */ +static int32_t aout_gotpc_sect, aout_gotoff_sect; +static int32_t aout_got_sect, aout_plt_sect; +static int32_t aout_sym_sect; + +static void aoutg_init(void) +{ + stext.data = saa_init(1L); + stext.head = NULL; + stext.tail = &stext.head; + sdata.data = saa_init(1L); + sdata.head = NULL; + sdata.tail = &sdata.head; + stext.len = stext.size = sdata.len = sdata.size = sbss.len = 0; + stext.nrelocs = sdata.nrelocs = 0; + stext.gsyms = sdata.gsyms = sbss.gsyms = NULL; + stext.index = seg_alloc(); + sdata.index = seg_alloc(); + sbss.index = seg_alloc(); + stext.asym = sdata.asym = sbss.asym = NULL; + syms = saa_init((int32_t)sizeof(struct Symbol)); + nsyms = 0; + bsym = raa_init(); + strs = saa_init(1L); + strslen = 0; + fwds = NULL; +} + +#ifdef OF_AOUT + +static void aout_init(void) +{ + bsd = false; + aoutg_init(); + + aout_gotpc_sect = aout_gotoff_sect = aout_got_sect = + aout_plt_sect = aout_sym_sect = NO_SEG; +} + +#endif + +#ifdef OF_AOUTB + +extern const struct ofmt of_aoutb; + +static void aoutb_init(void) +{ + bsd = true; + aoutg_init(); + + is_pic = 0x00; /* may become 0x40 */ + + aout_gotpc_sect = seg_alloc(); + backend_label("..gotpc", aout_gotpc_sect + 1, 0L); + aout_gotoff_sect = seg_alloc(); + backend_label("..gotoff", aout_gotoff_sect + 1, 0L); + aout_got_sect = seg_alloc(); + backend_label("..got", aout_got_sect + 1, 0L); + aout_plt_sect = seg_alloc(); + backend_label("..plt", aout_plt_sect + 1, 0L); + aout_sym_sect = seg_alloc(); + backend_label("..sym", aout_sym_sect + 1, 0L); +} + +#endif + +static void aout_cleanup(void) +{ + struct Reloc *r; + + aout_pad_sections(); + aout_fixup_relocs(&stext); + aout_fixup_relocs(&sdata); + aout_write(); + saa_free(stext.data); + while (stext.head) { + r = stext.head; + stext.head = stext.head->next; + nasm_free(r); + } + saa_free(sdata.data); + while (sdata.head) { + r = sdata.head; + sdata.head = sdata.head->next; + nasm_free(r); + } + saa_free(syms); + raa_free(bsym); + saa_free(strs); +} + +static int32_t aout_section_names(char *name, int *bits) +{ + /* + * Default to 32 bits. + */ + if (!name) { + *bits = 32; + return stext.index; + } + + if (!strcmp(name, ".text")) + return stext.index; + else if (!strcmp(name, ".data")) + return sdata.index; + else if (!strcmp(name, ".bss")) + return sbss.index; + else + return NO_SEG; +} + +static void aout_deflabel(char *name, int32_t segment, int64_t offset, + int is_global, char *special) +{ + int pos = strslen + 4; + struct Symbol *sym; + int special_used = false; + + if (name[0] == '.' && name[1] == '.' && name[2] != '@') { + /* + * This is a NASM special symbol. We never allow it into + * the a.out symbol table, even if it's a valid one. If it + * _isn't_ a valid one, we should barf immediately. + */ + if (strcmp(name, "..gotpc") && strcmp(name, "..gotoff") && + strcmp(name, "..got") && strcmp(name, "..plt") && + strcmp(name, "..sym")) + nasm_nonfatal("unrecognised special symbol `%s'", name); + return; + } + + if (is_global == 3) { + struct Symbol **s; + /* + * Fix up a forward-reference symbol size from the first + * pass. + */ + for (s = &fwds; *s; s = &(*s)->nextfwd) + if (!strcmp((*s)->name, name)) { + struct tokenval tokval; + expr *e; + char *p = special; + + p = nasm_skip_spaces(nasm_skip_word(p)); + stdscan_reset(); + stdscan_set(p); + tokval.t_type = TOKEN_INVALID; + e = evaluate(stdscan, NULL, &tokval, NULL, 1, NULL); + if (e) { + if (!is_simple(e)) + nasm_nonfatal("cannot use relocatable" + " expression as symbol size"); + else + (*s)->size = reloc_value(e); + } + + /* + * Remove it from the list of unresolved sizes. + */ + nasm_free((*s)->name); + *s = (*s)->nextfwd; + return; + } + return; /* it wasn't an important one */ + } + + saa_wbytes(strs, name, (int32_t)(1 + strlen(name))); + strslen += 1 + strlen(name); + + sym = saa_wstruct(syms); + + sym->strpos = pos; + sym->type = is_global ? SYM_GLOBAL : 0; + sym->segment = segment; + if (segment == NO_SEG) + sym->type |= SECT_ABS; + else if (segment == stext.index) { + sym->type |= SECT_TEXT; + if (is_global) { + sym->next = stext.gsyms; + stext.gsyms = sym; + } else if (!stext.asym) + stext.asym = sym; + } else if (segment == sdata.index) { + sym->type |= SECT_DATA; + if (is_global) { + sym->next = sdata.gsyms; + sdata.gsyms = sym; + } else if (!sdata.asym) + sdata.asym = sym; + } else if (segment == sbss.index) { + sym->type |= SECT_BSS; + if (is_global) { + sym->next = sbss.gsyms; + sbss.gsyms = sym; + } else if (!sbss.asym) + sbss.asym = sym; + } else + sym->type = SYM_GLOBAL; + if (is_global == 2) + sym->value = offset; + else + sym->value = (sym->type == SYM_GLOBAL ? 0 : offset); + + if (is_global && sym->type != SYM_GLOBAL) { + /* + * Global symbol exported _from_ this module. We must check + * the special text for type information. + */ + + if (special) { + int n = strcspn(special, " "); + + if (!nasm_strnicmp(special, "function", n)) + sym->type |= SYM_FUNCTION; + else if (!nasm_strnicmp(special, "data", n) || + !nasm_strnicmp(special, "object", n)) + sym->type |= SYM_DATA; + else + nasm_nonfatal("unrecognised symbol type `%.*s'", + n, special); + if (special[n]) { + struct tokenval tokval; + expr *e; + int fwd = false; + char *saveme = stdscan_get(); + + if (!bsd) { + nasm_nonfatal("Linux a.out does not support" + " symbol size information"); + } else { + while (special[n] && nasm_isspace(special[n])) + n++; + /* + * We have a size expression; attempt to + * evaluate it. + */ + sym->type |= SYM_WITH_SIZE; + stdscan_reset(); + stdscan_set(special + n); + tokval.t_type = TOKEN_INVALID; + e = evaluate(stdscan, NULL, &tokval, &fwd, 0, NULL); + if (fwd) { + sym->nextfwd = fwds; + fwds = sym; + sym->name = nasm_strdup(name); + } else if (e) { + if (!is_simple(e)) + nasm_nonfatal("cannot use relocatable" + " expression as symbol size"); + else + sym->size = reloc_value(e); + } + } + stdscan_set(saveme); + } + special_used = true; + } + } + + /* + * define the references from external-symbol segment numbers + * to these symbol records. + */ + if (segment != NO_SEG && segment != stext.index && + segment != sdata.index && segment != sbss.index) + bsym = raa_write(bsym, segment, nsyms); + sym->symnum = nsyms; + + nsyms++; + if (sym->type & SYM_WITH_SIZE) + nsyms++; /* and another for the size */ + + if (special && !special_used) + nasm_nonfatal("no special symbol features supported here"); +} + +static void aout_add_reloc(struct Section *sect, int32_t segment, + int reltype, int bytes) +{ + struct Reloc *r; + + r = *sect->tail = nasm_malloc(sizeof(struct Reloc)); + sect->tail = &r->next; + r->next = NULL; + + r->address = sect->len; + r->symbol = (segment == NO_SEG ? -SECT_ABS : + segment == stext.index ? -SECT_TEXT : + segment == sdata.index ? -SECT_DATA : + segment == sbss.index ? -SECT_BSS : + raa_read(bsym, segment)); + r->reltype = reltype; + if (r->symbol >= 0) + r->reltype |= RELTYPE_SYMFLAG; + r->bytes = bytes; + + sect->nrelocs++; +} + +/* + * This routine deals with ..got and ..sym relocations: the more + * complicated kinds. In shared-library writing, some relocations + * with respect to global symbols must refer to the precise symbol + * rather than referring to an offset from the base of the section + * _containing_ the symbol. Such relocations call to this routine, + * which searches the symbol list for the symbol in question. + * + * RELTYPE_GOT references require the _exact_ symbol address to be + * used; RELTYPE_ABSOLUTE references can be at an offset from the + * symbol. The boolean argument `exact' tells us this. + * + * Return value is the adjusted value of `addr', having become an + * offset from the symbol rather than the section. Should always be + * zero when returning from an exact call. + * + * Limitation: if you define two symbols at the same place, + * confusion will occur. + * + * Inefficiency: we search, currently, using a linked list which + * isn't even necessarily sorted. + */ +static int32_t aout_add_gsym_reloc(struct Section *sect, + int32_t segment, int32_t offset, + int type, int bytes, int exact) +{ + struct Symbol *sym, *sm, *shead; + struct Reloc *r; + + /* + * First look up the segment to find whether it's text, data, + * bss or an external symbol. + */ + shead = NULL; + if (segment == stext.index) + shead = stext.gsyms; + else if (segment == sdata.index) + shead = sdata.gsyms; + else if (segment == sbss.index) + shead = sbss.gsyms; + if (!shead) { + if (exact && offset != 0) + nasm_nonfatal("unable to find a suitable global symbol" + " for this reference"); + else + aout_add_reloc(sect, segment, type, bytes); + return offset; + } + + if (exact) { + /* + * Find a symbol pointing _exactly_ at this one. + */ + list_for_each(sym, shead) + if (sym->value == offset) + break; + } else { + /* + * Find the nearest symbol below this one. + */ + sym = NULL; + list_for_each(sm, shead) + if (sm->value <= offset && (!sym || sm->value > sym->value)) + sym = sm; + } + if (!sym && exact) { + nasm_nonfatal("unable to find a suitable global symbol" + " for this reference"); + return 0; + } + + r = *sect->tail = nasm_malloc(sizeof(struct Reloc)); + sect->tail = &r->next; + r->next = NULL; + + r->address = sect->len; + r->symbol = sym->symnum; + r->reltype = type | RELTYPE_SYMFLAG; + r->bytes = bytes; + + sect->nrelocs++; + + return offset - sym->value; +} + +/* + * This routine deals with ..gotoff relocations. These _must_ refer + * to a symbol, due to a perversity of *BSD's PIC implementation, + * and it must be a non-global one as well; so we store `asym', the + * first nonglobal symbol defined in each section, and always work + * from that. Relocation type is always RELTYPE_GOTOFF. + * + * Return value is the adjusted value of `addr', having become an + * offset from the `asym' symbol rather than the section. + */ +static int32_t aout_add_gotoff_reloc(struct Section *sect, int32_t segment, + int32_t offset, int bytes) +{ + struct Reloc *r; + struct Symbol *asym; + + /* + * First look up the segment to find whether it's text, data, + * bss or an external symbol. + */ + asym = NULL; + if (segment == stext.index) + asym = stext.asym; + else if (segment == sdata.index) + asym = sdata.asym; + else if (segment == sbss.index) + asym = sbss.asym; + if (!asym) + nasm_nonfatal("`..gotoff' relocations require a non-global" + " symbol in the section"); + + r = *sect->tail = nasm_malloc(sizeof(struct Reloc)); + sect->tail = &r->next; + r->next = NULL; + + r->address = sect->len; + r->symbol = asym->symnum; + r->reltype = RELTYPE_GOTOFF; + r->bytes = bytes; + + sect->nrelocs++; + + return offset - asym->value; +} + +static void aout_out(int32_t segto, const void *data, + enum out_type type, uint64_t size, + int32_t segment, int32_t wrt) +{ + struct Section *s; + int32_t addr; + uint8_t mydata[4], *p; + + if (segto == stext.index) + s = &stext; + else if (segto == sdata.index) + s = &sdata; + else if (segto == sbss.index) + s = NULL; + else { + nasm_warn(WARN_OTHER, "attempt to assemble code in" + " segment %d: defaulting to `.text'", segto); + s = &stext; + } + + if (!s && type != OUT_RESERVE) { + nasm_warn(WARN_OTHER, "attempt to initialize memory in the" + " BSS section: ignored"); + sbss.len += realsize(type, size); + return; + } + + memset(mydata, 0, sizeof(mydata)); + + if (type == OUT_RESERVE) { + if (s) { + nasm_warn(WARN_ZEROING, "uninitialized space declared in" + " %s section: zeroing", + (segto == stext.index ? "code" : "data")); + aout_sect_write(s, NULL, size); + } else + sbss.len += size; + } else if (type == OUT_RAWDATA) { + aout_sect_write(s, data, size); + } else if (type == OUT_ADDRESS) { + int asize = abs((int)size); + addr = *(int64_t *)data; + if (segment != NO_SEG) { + if (segment % 2) { + nasm_nonfatal("a.out format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + aout_add_reloc(s, segment, RELTYPE_ABSOLUTE, asize); + } else if (!bsd) { + nasm_nonfatal("Linux a.out format does not support" + " any use of WRT"); + wrt = NO_SEG; /* we can at least _try_ to continue */ + } else if (wrt == aout_gotpc_sect + 1) { + is_pic = 0x40; + aout_add_reloc(s, segment, RELTYPE_GOTPC, asize); + } else if (wrt == aout_gotoff_sect + 1) { + is_pic = 0x40; + addr = aout_add_gotoff_reloc(s, segment, addr, asize); + } else if (wrt == aout_got_sect + 1) { + is_pic = 0x40; + addr = aout_add_gsym_reloc(s, segment, addr, RELTYPE_GOT, + asize, true); + } else if (wrt == aout_sym_sect + 1) { + addr = aout_add_gsym_reloc(s, segment, addr, + RELTYPE_ABSOLUTE, asize, + false); + } else if (wrt == aout_plt_sect + 1) { + is_pic = 0x40; + nasm_nonfatal("a.out format cannot produce non-PC-" + "relative PLT references"); + } else { + nasm_nonfatal("a.out format does not support this" + " use of WRT"); + wrt = NO_SEG; /* we can at least _try_ to continue */ + } + } + } + p = mydata; + if (asize == 2) + WRITESHORT(p, addr); + else + WRITELONG(p, addr); + aout_sect_write(s, mydata, asize); + } else if (type == OUT_REL2ADR) { + if (segment != NO_SEG && segment % 2) { + nasm_nonfatal("a.out format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + aout_add_reloc(s, segment, RELTYPE_RELATIVE, 2); + } else if (!bsd) { + nasm_nonfatal("Linux a.out format does not support" + " any use of WRT"); + wrt = NO_SEG; /* we can at least _try_ to continue */ + } else if (wrt == aout_plt_sect + 1) { + is_pic = 0x40; + aout_add_reloc(s, segment, RELTYPE_PLT, 2); + } else if (wrt == aout_gotpc_sect + 1 || + wrt == aout_gotoff_sect + 1 || + wrt == aout_got_sect + 1) { + nasm_nonfatal("a.out format cannot produce PC-" + "relative GOT references"); + } else { + nasm_nonfatal("a.out format does not support this" + " use of WRT"); + wrt = NO_SEG; /* we can at least _try_ to continue */ + } + } + p = mydata; + WRITESHORT(p, *(int64_t *)data - (size + s->len)); + aout_sect_write(s, mydata, 2L); + } else if (type == OUT_REL4ADR) { + if (segment != NO_SEG && segment % 2) { + nasm_nonfatal("a.out format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + aout_add_reloc(s, segment, RELTYPE_RELATIVE, 4); + } else if (!bsd) { + nasm_nonfatal("Linux a.out format does not support" + " any use of WRT"); + wrt = NO_SEG; /* we can at least _try_ to continue */ + } else if (wrt == aout_plt_sect + 1) { + is_pic = 0x40; + aout_add_reloc(s, segment, RELTYPE_PLT, 4); + } else if (wrt == aout_gotpc_sect + 1 || + wrt == aout_gotoff_sect + 1 || + wrt == aout_got_sect + 1) { + nasm_nonfatal("a.out format cannot produce PC-" + "relative GOT references"); + } else { + nasm_nonfatal("a.out format does not support this" + " use of WRT"); + wrt = NO_SEG; /* we can at least _try_ to continue */ + } + } + p = mydata; + WRITELONG(p, *(int64_t *)data - (size + s->len)); + aout_sect_write(s, mydata, 4L); + } +} + +static void aout_pad_sections(void) +{ + static uint8_t pad[] = { 0x90, 0x90, 0x90, 0x90 }; + /* + * Pad each of the text and data sections with NOPs until their + * length is a multiple of four. (NOP == 0x90.) Also increase + * the length of the BSS section similarly. + */ + aout_sect_write(&stext, pad, (-(int32_t)stext.len) & 3); + aout_sect_write(&sdata, pad, (-(int32_t)sdata.len) & 3); + sbss.len = ALIGN(sbss.len, 4); +} + +/* + * a.out files have the curious property that all references to + * things in the data or bss sections are done by addresses which + * are actually relative to the start of the _text_ section, in the + * _file_. (No relation to what happens after linking. No idea why + * this should be so. It's very strange.) So we have to go through + * the relocation table, _after_ the final size of each section is + * known, and fix up the relocations pointed to. + */ +static void aout_fixup_relocs(struct Section *sect) +{ + struct Reloc *r; + + saa_rewind(sect->data); + list_for_each(r, sect->head) { + uint8_t *p, *q, blk[4]; + int32_t l; + + saa_fread(sect->data, r->address, blk, (int32_t)r->bytes); + p = q = blk; + l = *p++; + if (r->bytes > 1) { + l += ((int32_t)*p++) << 8; + if (r->bytes == 4) { + l += ((int32_t)*p++) << 16; + l += ((int32_t)*p++) << 24; + } + } + if (r->symbol == -SECT_DATA) + l += stext.len; + else if (r->symbol == -SECT_BSS) + l += stext.len + sdata.len; + if (r->bytes == 4) + WRITELONG(q, l); + else if (r->bytes == 2) + WRITESHORT(q, l); + else + *q++ = l & 0xFF; + saa_fwrite(sect->data, r->address, blk, (int32_t)r->bytes); + } +} + +static void aout_write(void) +{ + /* + * Emit the a.out header. + */ + /* OMAGIC, M_386 or MID_I386, no flags */ + fwriteint32_t(bsd ? 0x07018600 | is_pic : 0x640107L, ofile); + fwriteint32_t(stext.len, ofile); + fwriteint32_t(sdata.len, ofile); + fwriteint32_t(sbss.len, ofile); + fwriteint32_t(nsyms * 12, ofile); /* length of symbol table */ + fwriteint32_t(0L, ofile); /* object files have no entry point */ + fwriteint32_t(stext.nrelocs * 8, ofile); /* size of text relocs */ + fwriteint32_t(sdata.nrelocs * 8, ofile); /* size of data relocs */ + + /* + * Write out the code section and the data section. + */ + saa_fpwrite(stext.data, ofile); + saa_fpwrite(sdata.data, ofile); + + /* + * Write out the relocations. + */ + aout_write_relocs(stext.head); + aout_write_relocs(sdata.head); + + /* + * Write the symbol table. + */ + aout_write_syms(); + + /* + * And the string table. + */ + fwriteint32_t(strslen + 4, ofile); /* length includes length count */ + saa_fpwrite(strs, ofile); +} + +static void aout_write_relocs(struct Reloc *r) +{ + list_for_each(r, r) { + uint32_t word2; + + fwriteint32_t(r->address, ofile); + + if (r->symbol >= 0) + word2 = r->symbol; + else + word2 = -r->symbol; + word2 |= r->reltype << 24; + word2 |= (r->bytes == 1 ? 0 : + r->bytes == 2 ? 0x2000000L : 0x4000000L); + fwriteint32_t(word2, ofile); + } +} + +static void aout_write_syms(void) +{ + uint32_t i; + + saa_rewind(syms); + for (i = 0; i < nsyms; i++) { + struct Symbol *sym = saa_rstruct(syms); + fwriteint32_t(sym->strpos, ofile); + fwriteint32_t((int32_t)sym->type & ~SYM_WITH_SIZE, ofile); + /* + * Fix up the symbol value now we know the final section + * sizes. + */ + if ((sym->type & SECT_MASK) == SECT_DATA) + sym->value += stext.len; + if ((sym->type & SECT_MASK) == SECT_BSS) + sym->value += stext.len + sdata.len; + fwriteint32_t(sym->value, ofile); + /* + * Output a size record if necessary. + */ + if (sym->type & SYM_WITH_SIZE) { + fwriteint32_t(sym->strpos, ofile); + fwriteint32_t(0x0DL, ofile); /* special value: means size */ + fwriteint32_t(sym->size, ofile); + i++; /* use up another of `nsyms' */ + } + } +} + +static void aout_sect_write(struct Section *sect, + const uint8_t *data, uint32_t len) +{ + saa_wbytes(sect->data, data, len); + sect->len += len; +} + +extern macros_t aout_stdmac[]; + +#endif /* OF_AOUT || OF_AOUTB */ + +#ifdef OF_AOUT + +const struct ofmt of_aout = { + "Linux a.out", + "aout", + ".o", + 0, + 32, + null_debug_arr, + &null_debug_form, + aout_stdmac, + aout_init, + null_reset, + nasm_do_legacy_output, + aout_out, + aout_deflabel, + aout_section_names, + NULL, + null_sectalign, + null_segbase, + null_directive, + aout_cleanup, + NULL /* pragma list */ +}; + +#endif + +#ifdef OF_AOUTB + +const struct ofmt of_aoutb = { + "NetBSD/FreeBSD a.out", + "aoutb", + ".o", + 0, + 32, + null_debug_arr, + &null_debug_form, + aout_stdmac, + aoutb_init, + null_reset, + nasm_do_legacy_output, + aout_out, + aout_deflabel, + aout_section_names, + NULL, + null_sectalign, + null_segbase, + null_directive, + aout_cleanup, + NULL /* pragma list */ +}; + +#endif diff --git a/vere/ext/nasm/output/outaout.mac b/vere/ext/nasm/output/outaout.mac new file mode 100644 index 0000000..5b7b366 --- /dev/null +++ b/vere/ext/nasm/output/outaout.mac @@ -0,0 +1,37 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2009 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +OUT: aout aoutb +%define __?SECT?__ [section .text] +%macro __?NASM_CDecl?__ 1 +%endmacro diff --git a/vere/ext/nasm/output/outas86.c b/vere/ext/nasm/output/outas86.c new file mode 100644 index 0000000..54b22f8 --- /dev/null +++ b/vere/ext/nasm/output/outas86.c @@ -0,0 +1,611 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * outas86.c output routines for the Netwide Assembler to produce + * Linux as86 (bin86-0.3) object files + */ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "saa.h" +#include "raa.h" +#include "outform.h" +#include "outlib.h" + +#ifdef OF_AS86 + +struct Piece { + struct Piece *next; + int type; /* 0 = absolute, 1 = seg, 2 = sym */ + int32_t offset; /* relative offset */ + int number; /* symbol/segment number (4=bss) */ + int32_t bytes; /* size of reloc or of absolute data */ + bool relative; /* relative address? */ +}; + +struct Symbol { + int32_t strpos; /* string table position of name */ + int flags; /* symbol flags */ + int segment; /* 4=bss at this point */ + int32_t value; /* address, or COMMON variable size */ +}; + +/* + * Section IDs - used in Piece.number and Symbol.segment. + */ +#define SECT_TEXT 0 /* text section */ +#define SECT_DATA 3 /* data section */ +#define SECT_BSS 4 /* bss section */ + +/* + * Flags used in Symbol.flags. + */ +#define SYM_ENTRY (1<<8) +#define SYM_EXPORT (1<<7) +#define SYM_IMPORT (1<<6) +#define SYM_ABSOLUTE (1<<4) + +struct Section { + struct SAA *data; + uint32_t datalen, size, len; + int32_t index; + struct Piece *head, *last, **tail; +}; + +static struct Section stext, sdata; +static uint32_t bsslen; +static int32_t bssindex; + +static struct SAA *syms; +static uint32_t nsyms; + +static struct RAA *bsym; + +static struct SAA *strs; +static size_t strslen; + +static int as86_reloc_size; + +static void as86_write(void); +static void as86_write_section(struct Section *, int); +static size_t as86_add_string(const char *name); +static void as86_sect_write(struct Section *, const uint8_t *, + uint32_t); + +static void as86_init(void) +{ + stext.data = saa_init(1L); + stext.datalen = 0L; + stext.head = stext.last = NULL; + stext.tail = &stext.head; + sdata.data = saa_init(1L); + sdata.datalen = 0L; + sdata.head = sdata.last = NULL; + sdata.tail = &sdata.head; + bsslen = + stext.len = stext.datalen = stext.size = + sdata.len = sdata.datalen = sdata.size = 0; + stext.index = seg_alloc(); + sdata.index = seg_alloc(); + bssindex = seg_alloc(); + syms = saa_init((int32_t)sizeof(struct Symbol)); + nsyms = 0; + bsym = raa_init(); + strs = saa_init(1L); + strslen = 0; + + /* as86 module name = input file minus extension */ + as86_add_string(filename_set_extension(inname, "")); +} + +static void as86_cleanup(void) +{ + struct Piece *p; + + as86_write(); + saa_free(stext.data); + while (stext.head) { + p = stext.head; + stext.head = stext.head->next; + nasm_free(p); + } + saa_free(sdata.data); + while (sdata.head) { + p = sdata.head; + sdata.head = sdata.head->next; + nasm_free(p); + } + saa_free(syms); + raa_free(bsym); + saa_free(strs); +} + +static int32_t as86_section_names(char *name, int *bits) +{ + /* + * Default is 16 bits. + */ + if (!name) { + *bits = 16; + return stext.index; + } + + if (!strcmp(name, ".text")) + return stext.index; + else if (!strcmp(name, ".data")) + return sdata.index; + else if (!strcmp(name, ".bss")) + return bssindex; + else + return NO_SEG; +} + +static size_t as86_add_string(const char *name) +{ + size_t pos = strslen; + size_t length = strlen(name); + + saa_wbytes(strs, name, length + 1); + strslen += 1 + length; + + return pos; +} + +static void as86_deflabel(char *name, int32_t segment, int64_t offset, + int is_global, char *special) +{ + bool is_start = false; + struct Symbol *sym; + + if (special) + nasm_nonfatal("as86 format does not support any" + " special symbol types"); + + + if (name[0] == '.' && name[1] == '.' && name[2] != '@') { + if (strcmp(name, "..start")) { + nasm_nonfatal("unrecognised special symbol `%s'", name); + return; + } else { + is_start = true; + } + } + + sym = saa_wstruct(syms); + + sym->strpos = as86_add_string(name); + sym->flags = 0; + + if (is_start) + sym->flags = SYM_ENTRY; + + if (segment == NO_SEG) + sym->flags |= SYM_ABSOLUTE, sym->segment = 0; + else if (segment == stext.index) + sym->segment = SECT_TEXT; + else if (segment == sdata.index) + sym->segment = SECT_DATA; + else if (segment == bssindex) + sym->segment = SECT_BSS; + else { + sym->flags |= SYM_IMPORT; + sym->segment = 15; + } + + if (is_global == 2) + sym->segment = 3; /* already have IMPORT */ + + if (is_global && !(sym->flags & SYM_IMPORT)) + sym->flags |= SYM_EXPORT; + + sym->value = offset; + + /* + * define the references from external-symbol segment numbers + * to these symbol records. + */ + if (segment != NO_SEG && segment != stext.index && + segment != sdata.index && segment != bssindex) + bsym = raa_write(bsym, segment, nsyms); + + nsyms++; +} + +static void as86_add_piece(struct Section *sect, int type, int32_t offset, + int32_t segment, int32_t bytes, int relative) +{ + struct Piece *p; + + sect->len += bytes; + + if (type == 0 && sect->last && sect->last->type == 0) { + sect->last->bytes += bytes; + return; + } + + p = sect->last = *sect->tail = nasm_malloc(sizeof(struct Piece)); + sect->tail = &p->next; + p->next = NULL; + + p->type = type; + p->offset = offset; + p->bytes = bytes; + p->relative = relative; + + if (type == 1 && segment == stext.index) + p->number = SECT_TEXT; + else if (type == 1 && segment == sdata.index) + p->number = SECT_DATA; + else if (type == 1 && segment == bssindex) + p->number = SECT_BSS; + else if (type == 1) + p->number = raa_read(bsym, segment), p->type = 2; +} + +static void as86_out(int32_t segto, const void *data, + enum out_type type, uint64_t size, + int32_t segment, int32_t wrt) +{ + struct Section *s; + int32_t offset; + uint8_t mydata[4], *p; + + if (wrt != NO_SEG) { + wrt = NO_SEG; /* continue to do _something_ */ + nasm_nonfatal("WRT not supported by as86 output format"); + } + + if (segto == stext.index) + s = &stext; + else if (segto == sdata.index) + s = &sdata; + else if (segto == bssindex) + s = NULL; + else { + nasm_warn(WARN_OTHER, "attempt to assemble code in" + " segment %d: defaulting to `.text'", segto); + s = &stext; + } + + if (!s && type != OUT_RESERVE) { + nasm_warn(WARN_OTHER, "attempt to initialize memory in the" + " BSS section: ignored"); + bsslen += realsize(type, size); + return; + } + + memset(mydata, 0, sizeof(mydata)); + + if (type == OUT_RESERVE) { + if (s) { + nasm_warn(WARN_ZEROING, "uninitialized space declared in" + " %s section: zeroing", + (segto == stext.index ? "code" : "data")); + as86_sect_write(s, NULL, size); + as86_add_piece(s, 0, 0L, 0L, size, 0); + } else + bsslen += size; + } else if (type == OUT_RAWDATA) { + as86_sect_write(s, data, size); + as86_add_piece(s, 0, 0L, 0L, size, 0); + } else if (type == OUT_ADDRESS) { + int asize = abs((int)size); + if (segment != NO_SEG) { + if (segment % 2) { + nasm_nonfatal("as86 format does not support" + " segment base references"); + } else { + offset = *(int64_t *)data; + as86_add_piece(s, 1, offset, segment, asize, 0); + } + } else { + p = mydata; + WRITELONG(p, *(int64_t *)data); + as86_sect_write(s, data, asize); + as86_add_piece(s, 0, 0L, 0L, asize, 0); + } + } else if (type == OUT_REL2ADR) { + if (segment != NO_SEG) { + if (segment % 2) { + nasm_nonfatal("as86 format does not support" + " segment base references"); + } else { + offset = *(int64_t *)data; + as86_add_piece(s, 1, offset - size + 2, segment, 2L, + 1); + } + } + } else if (type == OUT_REL4ADR) { + if (segment != NO_SEG) { + if (segment % 2) { + nasm_nonfatal("as86 format does not support" + " segment base references"); + } else { + offset = *(int64_t *)data; + as86_add_piece(s, 1, offset - size + 4, segment, 4L, + 1); + } + } + } +} + +static void as86_write(void) +{ + uint32_t i; + int32_t symlen, seglen, segsize; + + /* + * First, go through the symbol records working out how big + * each will be. Also fix up BSS references at this time, and + * set the flags words up completely. + */ + symlen = 0; + saa_rewind(syms); + for (i = 0; i < nsyms; i++) { + struct Symbol *sym = saa_rstruct(syms); + if (sym->segment == SECT_BSS) + sym->segment = SECT_DATA, sym->value += sdata.len; + sym->flags |= sym->segment; + if (sym->value == 0) + sym->flags |= 0 << 14, symlen += 4; + else if (sym->value >= 0 && sym->value <= 255) + sym->flags |= 1 << 14, symlen += 5; + else if (sym->value >= 0 && sym->value <= 65535L) + sym->flags |= 2 << 14, symlen += 6; + else + sym->flags |= 3 << 14, symlen += 8; + } + + /* + * Now do the same for the segments, and get the segment size + * descriptor word at the same time. + */ + seglen = segsize = 0; + if ((uint32_t)stext.len > 65535L) + segsize |= 0x03000000L, seglen += 4; + else + segsize |= 0x02000000L, seglen += 2; + if ((uint32_t)sdata.len > 65535L) + segsize |= 0xC0000000L, seglen += 4; + else + segsize |= 0x80000000L, seglen += 2; + + /* + * Emit the as86 header. + */ + fwriteint32_t(0x000186A3L, ofile); + fputc(0x2A, ofile); + fwriteint32_t(27 + symlen + seglen + strslen, ofile); /* header length */ + fwriteint32_t(stext.len + sdata.len + bsslen, ofile); + fwriteint16_t(strslen, ofile); + fwriteint16_t(0, ofile); /* class = revision = 0 */ + fwriteint32_t(0x55555555L, ofile); /* segment max sizes: always this */ + fwriteint32_t(segsize, ofile); /* segment size descriptors */ + if (segsize & 0x01000000L) + fwriteint32_t(stext.len, ofile); + else + fwriteint16_t(stext.len, ofile); + if (segsize & 0x40000000L) + fwriteint32_t(sdata.len + bsslen, ofile); + else + fwriteint16_t(sdata.len + bsslen, ofile); + fwriteint16_t(nsyms, ofile); + + /* + * Write the symbol table. + */ + saa_rewind(syms); + for (i = 0; i < nsyms; i++) { + struct Symbol *sym = saa_rstruct(syms); + fwriteint16_t(sym->strpos, ofile); + fwriteint16_t(sym->flags, ofile); + switch (sym->flags & (3 << 14)) { + case 0 << 14: + break; + case 1 << 14: + fputc(sym->value, ofile); + break; + case 2 << 14: + fwriteint16_t(sym->value, ofile); + break; + case 3 << 14: + fwriteint32_t(sym->value, ofile); + break; + } + } + + /* + * Write out the string table. + */ + saa_fpwrite(strs, ofile); + + /* + * Write the program text. + */ + as86_reloc_size = -1; + as86_write_section(&stext, SECT_TEXT); + as86_write_section(&sdata, SECT_DATA); + /* + * Append the BSS section to the .data section + */ + if (bsslen > 65535L) { + fputc(0x13, ofile); + fwriteint32_t(bsslen, ofile); + } else if (bsslen > 255) { + fputc(0x12, ofile); + fwriteint16_t(bsslen, ofile); + } else if (bsslen) { + fputc(0x11, ofile); + fputc(bsslen, ofile); + } + + fputc(0, ofile); /* termination */ +} + +static void as86_set_rsize(int size) +{ + if (as86_reloc_size != size) { + switch (as86_reloc_size = size) { + case 1: + fputc(0x01, ofile); + break; + case 2: + fputc(0x02, ofile); + break; + case 4: + fputc(0x03, ofile); + break; + default: + nasm_panic("bizarre relocation size %d", size); + break; + } + } +} + +static void as86_write_section(struct Section *sect, int index) +{ + struct Piece *p; + uint32_t s; + int32_t length; + + fputc(0x20 + index, ofile); /* select the right section */ + + saa_rewind(sect->data); + + for (p = sect->head; p; p = p->next) + switch (p->type) { + case 0: + /* + * Absolute data. Emit it in chunks of at most 64 + * bytes. + */ + length = p->bytes; + do { + char buf[64]; + int32_t tmplen = (length > 64 ? 64 : length); + fputc(0x40 | (tmplen & 0x3F), ofile); + saa_rnbytes(sect->data, buf, tmplen); + nasm_write(buf, tmplen, ofile); + length -= tmplen; + } while (length > 0); + break; + case 1: + /* + * A segment-type relocation. First fix up the BSS. + */ + if (p->number == SECT_BSS) + p->number = SECT_DATA, p->offset += sdata.len; + as86_set_rsize(p->bytes); + fputc(0x80 | (p->relative ? 0x20 : 0) | p->number, ofile); + if (as86_reloc_size == 2) + fwriteint16_t(p->offset, ofile); + else + fwriteint32_t(p->offset, ofile); + break; + case 2: + /* + * A symbol-type relocation. + */ + as86_set_rsize(p->bytes); + s = p->offset; + if (s > 65535L) + s = 3; + else if (s > 255) + s = 2; + else if (s > 0) + s = 1; + else + s = 0; + fputc(0xC0 | + (p->relative ? 0x20 : 0) | + (p->number > 255 ? 0x04 : 0) | s, ofile); + if (p->number > 255) + fwriteint16_t(p->number, ofile); + else + fputc(p->number, ofile); + switch (s) { + case 0: + break; + case 1: + fputc(p->offset, ofile); + break; + case 2: + fwriteint16_t(p->offset, ofile); + break; + case 3: + fwriteint32_t(p->offset, ofile); + break; + } + break; + } +} + +static void as86_sect_write(struct Section *sect, + const uint8_t *data, uint32_t len) +{ + saa_wbytes(sect->data, data, len); + sect->datalen += len; +} + +extern macros_t as86_stdmac[]; + +const struct ofmt of_as86 = { + "as86 (bin86/dev86 toolchain)", + "as86", + ".o", + 0, + 32, + null_debug_arr, + &null_debug_form, + as86_stdmac, + as86_init, + null_reset, + nasm_do_legacy_output, + as86_out, + as86_deflabel, + as86_section_names, + NULL, + null_sectalign, + null_segbase, + null_directive, + as86_cleanup, + NULL /* pragma list */ +}; + +#endif /* OF_AS86 */ diff --git a/vere/ext/nasm/output/outas86.mac b/vere/ext/nasm/output/outas86.mac new file mode 100644 index 0000000..f7c9a48 --- /dev/null +++ b/vere/ext/nasm/output/outas86.mac @@ -0,0 +1,37 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2009 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +OUT: as86 +%define __?SECT?__ [section .text] +%macro __?NASM_CDecl?__ 1 +%endmacro diff --git a/vere/ext/nasm/output/outbin.c b/vere/ext/nasm/output/outbin.c new file mode 100644 index 0000000..1522e5c --- /dev/null +++ b/vere/ext/nasm/output/outbin.c @@ -0,0 +1,1669 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * outbin.c output routines for the Netwide Assembler to produce + * flat-form binary files + */ + +/* This is the extended version of NASM's original binary output + * format. It is backward compatible with the original BIN format, + * and contains support for multiple sections and advanced section + * ordering. + * + * Feature summary: + * + * - Users can create an arbitrary number of sections; they are not + * limited to just ".text", ".data", and ".bss". + * + * - Sections can be either progbits or nobits type. + * + * - You can specify that they be aligned at a certain boundary + * following the previous section ("align="), or positioned at an + * arbitrary byte-granular location ("start="). + * + * - You can specify a "virtual" start address for a section, which + * will be used for the calculation for all address references + * with respect to that section ("vstart="). + * + * - The ORG directive, as well as the section/segment directive + * arguments ("align=", "start=", "vstart="), can take a critical + * expression as their value. For example: "align=(1 << 12)". + * + * - You can generate map files using the 'map' directive. + * + */ + +/* Uncomment the following define if you want sections to adapt + * their progbits/nobits state depending on what type of + * instructions are issued, rather than defaulting to progbits. + * Note that this behavior violates the specification. + +#define ABIN_SMART_ADAPT + +*/ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "saa.h" +#include "stdscan.h" +#include "labels.h" +#include "eval.h" +#include "outform.h" +#include "outlib.h" + +#ifdef OF_BIN + +static FILE *rf = NULL; +static void (*do_output)(void); + +/* Section flags keep track of which attributes the user has defined. */ +#define START_DEFINED 0x001 +#define ALIGN_DEFINED 0x002 +#define FOLLOWS_DEFINED 0x004 +#define VSTART_DEFINED 0x008 +#define VALIGN_DEFINED 0x010 +#define VFOLLOWS_DEFINED 0x020 +#define TYPE_DEFINED 0x040 +#define TYPE_PROGBITS 0x080 +#define TYPE_NOBITS 0x100 + +/* This struct is used to keep track of symbols for map-file generation. */ +static struct bin_label { + char *name; + struct bin_label *next; +} *no_seg_labels, **nsl_tail; + +static struct Section { + char *name; + struct SAA *contents; + int64_t length; /* section length in bytes */ + +/* Section attributes */ + int flags; /* see flag definitions above */ + uint64_t align; /* section alignment */ + uint64_t valign; /* notional section alignment */ + uint64_t start; /* section start address */ + uint64_t vstart; /* section virtual start address */ + char *follows; /* the section that this one will follow */ + char *vfollows; /* the section that this one will notionally follow */ + int32_t start_index; /* NASM section id for non-relocated version */ + int32_t vstart_index; /* the NASM section id */ + + struct bin_label *labels; /* linked-list of label handles for map output. */ + struct bin_label **labels_end; /* Holds address of end of labels list. */ + struct Section *prev; /* Points to previous section (implicit follows). */ + struct Section *next; /* This links sections with a defined start address. */ + +/* The extended bin format allows for sections to have a "virtual" + * start address. This is accomplished by creating two sections: + * one beginning at the Load Memory Address and the other beginning + * at the Virtual Memory Address. The LMA section is only used to + * define the section..start label, but there isn't + * any other good way for us to handle that label. + */ + +} *sections, *last_section; + +static struct Reloc { + struct Reloc *next; + int32_t posn; + int32_t bytes; + int32_t secref; + int32_t secrel; + struct Section *target; +} *relocs, **reloctail; + +static uint64_t origin; +static int origin_defined; + +/* Stuff we need for map-file generation. */ +#define MAP_ORIGIN 1 +#define MAP_SUMMARY 2 +#define MAP_SECTIONS 4 +#define MAP_SYMBOLS 8 +static int map_control = 0; + +extern macros_t bin_stdmac[]; + +static void add_reloc(struct Section *s, int32_t bytes, int32_t secref, + int32_t secrel) +{ + struct Reloc *r; + + r = *reloctail = nasm_malloc(sizeof(struct Reloc)); + reloctail = &r->next; + r->next = NULL; + r->posn = s->length; + r->bytes = bytes; + r->secref = secref; + r->secrel = secrel; + r->target = s; +} + +static struct Section *find_section_by_name(const char *name) +{ + struct Section *s; + + list_for_each(s, sections) + if (!strcmp(s->name, name)) + break; + return s; +} + +static struct Section *find_section_by_index(int32_t index) +{ + struct Section *s; + + list_for_each(s, sections) + if ((index == s->vstart_index) || (index == s->start_index)) + break; + return s; +} + +static struct Section *create_section(char *name) +{ + struct Section *s = nasm_zalloc(sizeof(*s)); + + s->prev = last_section; + s->name = nasm_strdup(name); + s->labels_end = &(s->labels); + s->contents = saa_init(1L); + + /* Register our sections with NASM. */ + s->vstart_index = seg_alloc(); + s->start_index = seg_alloc(); + + /* FIXME: Append to a tail, we need some helper */ + last_section->next = s; + last_section = s; + + return last_section; +} + +static void bin_cleanup(void) +{ + struct Section *g, **gp; + struct Section *gs = NULL, **gsp; + struct Section *s, **sp; + struct Section *nobits = NULL, **nt; + struct Section *last_progbits; + struct bin_label *l; + struct Reloc *r; + uint64_t pend; + int h; + + if (debug_level(1)) { + nasm_debug("bin_cleanup: Sections were initially referenced in this order:\n"); + for (h = 0, s = sections; s; h++, s = s->next) + nasm_debug("%i. %s\n", h, s->name); + } + + /* Assembly has completed, so now we need to generate the output file. + * Step 1: Separate progbits and nobits sections into separate lists. + * Step 2: Sort the progbits sections into their output order. + * Step 3: Compute start addresses for all progbits sections. + * Step 4: Compute vstart addresses for all sections. + * Step 5: Apply relocations. + * Step 6: Write the sections' data to the output file. + * Step 7: Generate the map file. + * Step 8: Release all allocated memory. + */ + + /* To do: Smart section-type adaptation could leave some empty sections + * without a defined type (progbits/nobits). Won't fix now since this + * feature will be disabled. */ + + /* Step 1: Split progbits and nobits sections into separate lists. */ + + nt = &nobits; + /* Move nobits sections into a separate list. Also pre-process nobits + * sections' attributes. */ + for (sp = §ions->next, s = sections->next; s; s = *sp) { /* Skip progbits sections. */ + if (s->flags & TYPE_PROGBITS) { + sp = &s->next; + continue; + } + /* Do some special pre-processing on nobits sections' attributes. */ + if (s->flags & (START_DEFINED | ALIGN_DEFINED | FOLLOWS_DEFINED)) { /* Check for a mixture of real and virtual section attributes. */ + if (s->flags & (VSTART_DEFINED | VALIGN_DEFINED | + VFOLLOWS_DEFINED)) + nasm_fatal("cannot mix real and virtual attributes" + " in nobits section (%s)", s->name); + /* Real and virtual attributes mean the same thing for nobits sections. */ + if (s->flags & START_DEFINED) { + s->vstart = s->start; + s->flags |= VSTART_DEFINED; + } + if (s->flags & ALIGN_DEFINED) { + s->valign = s->align; + s->flags |= VALIGN_DEFINED; + } + if (s->flags & FOLLOWS_DEFINED) { + s->vfollows = s->follows; + s->flags |= VFOLLOWS_DEFINED; + s->flags &= ~FOLLOWS_DEFINED; + } + } + /* Every section must have a start address. */ + if (s->flags & VSTART_DEFINED) { + s->start = s->vstart; + s->flags |= START_DEFINED; + } + /* Move the section into the nobits list. */ + *sp = s->next; + s->next = NULL; + *nt = s; + nt = &s->next; + } + + /* Step 2: Sort the progbits sections into their output order. */ + + /* In Step 2 we move around sections in groups. A group + * begins with a section (group leader) that has a user- + * defined start address or follows section. The remainder + * of the group is made up of the sections that implicitly + * follow the group leader (i.e., they were defined after + * the group leader and were not given an explicit start + * address or follows section by the user). */ + + /* For anyone attempting to read this code: + * g (group) points to a group of sections, the first one of which has + * a user-defined start address or follows section. + * gp (g previous) holds the location of the pointer to g. + * gs (g scan) is a temp variable that we use to scan to the end of the group. + * gsp (gs previous) holds the location of the pointer to gs. + * nt (nobits tail) points to the nobits section-list tail. + */ + + /* Link all 'follows' groups to their proper position. To do + * this we need to know three things: the start of the group + * to relocate (g), the section it is following (s), and the + * end of the group we're relocating (gs). */ + for (gp = §ions, g = sections; g; g = gs) { /* Find the next follows group that is out of place (g). */ + if (!(g->flags & FOLLOWS_DEFINED)) { + while (g->next) { + if ((g->next->flags & FOLLOWS_DEFINED) && + strcmp(g->name, g->next->follows)) + break; + g = g->next; + } + if (!g->next) + break; + gp = &g->next; + g = g->next; + } + /* Find the section that this group follows (s). */ + for (sp = §ions, s = sections; + s && strcmp(s->name, g->follows); + sp = &s->next, s = s->next) ; + if (!s) + nasm_fatal("section %s follows an invalid or" + " unknown section (%s)", g->name, g->follows); + if (s == g) + nasm_fatal("section %s is self following", s->name); + if (s->next && (s->next->flags & FOLLOWS_DEFINED) && + !strcmp(s->name, s->next->follows)) + nasm_fatal("sections %s and %s can't both follow" + " section %s", g->name, s->next->name, s->name); + /* Find the end of the current follows group (gs). */ + for (gsp = &g->next, gs = g->next; + gs && (gs != s) && !(gs->flags & START_DEFINED); + gsp = &gs->next, gs = gs->next) { + if (gs->next && (gs->next->flags & FOLLOWS_DEFINED) && + strcmp(gs->name, gs->next->follows)) { + gsp = &gs->next; + gs = gs->next; + break; + } + } + /* Re-link the group after its follows section. */ + *gsp = s->next; + s->next = g; + *gp = gs; + } + + /* Link all 'start' groups to their proper position. Once + * again we need to know g, s, and gs (see above). The main + * difference is we already know g since we sort by moving + * groups from the 'unsorted' list into a 'sorted' list (g + * will always be the first section in the unsorted list). */ + for (g = sections, sections = NULL; g; g = gs) { /* Find the section that we will insert this group before (s). */ + for (sp = §ions, s = sections; s; sp = &s->next, s = s->next) + if ((s->flags & START_DEFINED) && (g->start < s->start)) + break; + /* Find the end of the group (gs). */ + for (gs = g->next, gsp = &g->next; + gs && !(gs->flags & START_DEFINED); + gsp = &gs->next, gs = gs->next) ; + /* Re-link the group before the target section. */ + *sp = g; + *gsp = s; + } + + /* Step 3: Compute start addresses for all progbits sections. */ + + /* Make sure we have an origin and a start address for the first section. */ + if (origin_defined) { + if (sections->flags & START_DEFINED) { + /* Make sure this section doesn't begin before the origin. */ + if (sections->start < origin) + nasm_fatal("section %s begins" + " before program origin", sections->name); + } else if (sections->flags & ALIGN_DEFINED) { + sections->start = ALIGN(origin, sections->align); + } else { + sections->start = origin; + } + } else { + if (!(sections->flags & START_DEFINED)) + sections->start = 0; + origin = sections->start; + } + sections->flags |= START_DEFINED; + + /* Make sure each section has an explicit start address. If it + * doesn't, then compute one based its alignment and the end of + * the previous section. */ + for (pend = sections->start, g = s = sections; g; g = g->next) { /* Find the next section that could cause an overlap situation + * (has a defined start address, and is not zero length). */ + if (g == s) + for (s = g->next; + s && ((s->length == 0) || !(s->flags & START_DEFINED)); + s = s->next) ; + /* Compute the start address of this section, if necessary. */ + if (!(g->flags & START_DEFINED)) { /* Default to an alignment of 4 if unspecified. */ + if (!(g->flags & ALIGN_DEFINED)) { + g->align = 4; + g->flags |= ALIGN_DEFINED; + } + /* Set the section start address. */ + g->start = ALIGN(pend, g->align); + g->flags |= START_DEFINED; + } + /* Ugly special case for progbits sections' virtual attributes: + * If there is a defined valign, but no vstart and no vfollows, then + * we valign after the previous progbits section. This case doesn't + * really make much sense for progbits sections with a defined start + * address, but it is possible and we must do *something*. + * Not-so-ugly special case: + * If a progbits section has no virtual attributes, we set the + * vstart equal to the start address. */ + if (!(g->flags & (VSTART_DEFINED | VFOLLOWS_DEFINED))) { + if (g->flags & VALIGN_DEFINED) + g->vstart = ALIGN(pend, g->valign); + else + g->vstart = g->start; + g->flags |= VSTART_DEFINED; + } + /* Ignore zero-length sections. */ + if (g->start < pend) + continue; + /* Compute the span of this section. */ + pend = g->start + g->length; + /* Check for section overlap. */ + if (s) { + if (s->start < origin) + nasm_fatal("section %s beings before program origin", + s->name); + if (g->start > s->start) + nasm_fatal("sections %s ~ %s and %s overlap!", + gs->name, g->name, s->name); + if (pend > s->start) + nasm_fatal("sections %s and %s overlap!", + g->name, s->name); + } + /* Remember this section as the latest >0 length section. */ + gs = g; + } + + /* Step 4: Compute vstart addresses for all sections. */ + + /* Attach the nobits sections to the end of the progbits sections. */ + for (s = sections; s->next; s = s->next) ; + s->next = nobits; + last_progbits = s; + /* + * Scan for sections that don't have a vstart address. If we find + * one we'll attempt to compute its vstart. If we can't compute + * the vstart, we leave it alone and come back to it in a + * subsequent scan. We continue scanning and re-scanning until + * we've gone one full cycle without computing any vstarts. + */ + do { /* Do one full scan of the sections list. */ + for (h = 0, g = sections; g; g = g->next) { + if (g->flags & VSTART_DEFINED) + continue; + /* Find the section that this one virtually follows. */ + if (g->flags & VFOLLOWS_DEFINED) { + for (s = sections; s && strcmp(g->vfollows, s->name); + s = s->next) ; + if (!s) + nasm_fatal("section %s vfollows unknown section (%s)", + g->name, g->vfollows); + } else if (g->prev != NULL) + for (s = sections; s && (s != g->prev); s = s->next) ; + /* The .bss section is the only one with prev = NULL. + In this case we implicitly follow the last progbits + section. */ + else + s = last_progbits; + + /* If the section we're following has a vstart, we can proceed. */ + if (s->flags & VSTART_DEFINED) { /* Default to virtual alignment of four. */ + if (!(g->flags & VALIGN_DEFINED)) { + g->valign = 4; + g->flags |= VALIGN_DEFINED; + } + /* Compute the vstart address. */ + g->vstart = ALIGN(s->vstart + s->length, g->valign); + g->flags |= VSTART_DEFINED; + h++; + /* Start and vstart mean the same thing for nobits sections. */ + if (g->flags & TYPE_NOBITS) + g->start = g->vstart; + } + } + } while (h); + + /* Now check for any circular vfollows references, which will manifest + * themselves as sections without a defined vstart. */ + for (h = 0, s = sections; s; s = s->next) { + if (!(s->flags & VSTART_DEFINED)) { /* Non-fatal errors after assembly has completed are generally a + * no-no, but we'll throw a fatal one eventually so it's ok. */ + nasm_nonfatal("cannot compute vstart for section %s", s->name); + h++; + } + } + if (h) + nasm_fatal("circular vfollows path detected"); + + if (debug_level(1)) { + nasm_debug("bin_cleanup: Confirm final section order for output file:\n"); + for (h = 0, s = sections; s && (s->flags & TYPE_PROGBITS); + h++, s = s->next) + nasm_debug("%i. %s\n", h, s->name); + } + + /* Step 5: Apply relocations. */ + + /* Prepare the sections for relocating. */ + list_for_each(s, sections) + saa_rewind(s->contents); + /* Apply relocations. */ + list_for_each(r, relocs) { + uint8_t *p, mydata[8]; + int64_t l; + int b; + + nasm_assert(r->bytes <= 8); + + memset(mydata, 0, sizeof(mydata)); + + saa_fread(r->target->contents, r->posn, mydata, r->bytes); + p = mydata; + l = 0; + for (b = r->bytes - 1; b >= 0; b--) + l = (l << 8) + mydata[b]; + + s = find_section_by_index(r->secref); + if (s) { + if (r->secref == s->start_index) + l += s->start; + else + l += s->vstart; + } + s = find_section_by_index(r->secrel); + if (s) { + if (r->secrel == s->start_index) + l -= s->start; + else + l -= s->vstart; + } + + WRITEADDR(p, l, r->bytes); + saa_fwrite(r->target->contents, r->posn, mydata, r->bytes); + } + + /* Step 6: Write the section data to the output file. */ + do_output(); + + /* Step 7: Generate the map file. */ + + if (map_control) { + static const char not_defined[] = "not defined"; + + /* Display input and output file names. */ + fprintf(rf, "\n- NASM Map file "); + for (h = 63; h; h--) + fputc('-', rf); + fprintf(rf, "\n\nSource file: %s\nOutput file: %s\n\n", + inname, outname); + + if (map_control & MAP_ORIGIN) { /* Display program origin. */ + fprintf(rf, "-- Program origin "); + for (h = 61; h; h--) + fputc('-', rf); + fprintf(rf, "\n\n%08"PRIX64"\n\n", origin); + } + /* Display sections summary. */ + if (map_control & MAP_SUMMARY) { + fprintf(rf, "-- Sections (summary) "); + for (h = 57; h; h--) + fputc('-', rf); + fprintf(rf, "\n\nVstart Start Stop " + "Length Class Name\n"); + list_for_each(s, sections) { + fprintf(rf, "%16"PRIX64" %16"PRIX64" %16"PRIX64" %08"PRIX64" ", + s->vstart, s->start, s->start + s->length, + s->length); + if (s->flags & TYPE_PROGBITS) + fprintf(rf, "progbits "); + else + fprintf(rf, "nobits "); + fprintf(rf, "%s\n", s->name); + } + fprintf(rf, "\n"); + } + /* Display detailed section information. */ + if (map_control & MAP_SECTIONS) { + fprintf(rf, "-- Sections (detailed) "); + for (h = 56; h; h--) + fputc('-', rf); + fprintf(rf, "\n\n"); + list_for_each(s, sections) { + fprintf(rf, "---- Section %s ", s->name); + if (strlen(s->name) < 65) + for (h = 65 - strlen(s->name); h; h--) + fputc('-', rf); + fprintf(rf, "\n\nclass: "); + if (s->flags & TYPE_PROGBITS) + fprintf(rf, "progbits"); + else + fprintf(rf, "nobits"); + fprintf(rf, "\nlength: %16"PRIX64"\nstart: %16"PRIX64"" + "\nalign: ", s->length, s->start); + if (s->flags & ALIGN_DEFINED) + fprintf(rf, "%16"PRIX64"", s->align); + else + fputs(not_defined, rf); + fprintf(rf, "\nfollows: "); + if (s->flags & FOLLOWS_DEFINED) + fprintf(rf, "%s", s->follows); + else + fputs(not_defined, rf); + fprintf(rf, "\nvstart: %16"PRIX64"\nvalign: ", s->vstart); + if (s->flags & VALIGN_DEFINED) + fprintf(rf, "%16"PRIX64"", s->valign); + else + fputs(not_defined, rf); + fprintf(rf, "\nvfollows: "); + if (s->flags & VFOLLOWS_DEFINED) + fprintf(rf, "%s", s->vfollows); + else + fputs(not_defined, rf); + fprintf(rf, "\n\n"); + } + } + /* Display symbols information. */ + if (map_control & MAP_SYMBOLS) { + int32_t segment; + int64_t offset; + enum label_type found_label; + + fprintf(rf, "-- Symbols "); + for (h = 68; h; h--) + fputc('-', rf); + fprintf(rf, "\n\n"); + if (no_seg_labels) { + fprintf(rf, "---- No Section "); + for (h = 63; h; h--) + fputc('-', rf); + fprintf(rf, "\n\nValue Name\n"); + list_for_each(l, no_seg_labels) { + found_label = lookup_label(l->name, &segment, &offset); + nasm_assert(found_label != LBL_none); + fprintf(rf, "%08"PRIX64" %s\n", offset, l->name); + } + fprintf(rf, "\n\n"); + } + list_for_each(s, sections) { + if (s->labels) { + fprintf(rf, "---- Section %s ", s->name); + for (h = 65 - strlen(s->name); h; h--) + fputc('-', rf); + fprintf(rf, "\n\nReal Virtual Name\n"); + list_for_each(l, s->labels) { + found_label = lookup_label(l->name, &segment, &offset); + nasm_assert(found_label != LBL_none); + fprintf(rf, "%16"PRIX64" %16"PRIX64" %s\n", + s->start + offset, s->vstart + offset, + l->name); + } + fprintf(rf, "\n"); + } + } + } + } + + /* Close the report file. */ + if (map_control && (rf != stdout) && (rf != stderr)) + fclose(rf); + + /* Step 8: Release all allocated memory. */ + + /* Free sections, label pointer structs, etc.. */ + while (sections) { + s = sections; + sections = s->next; + saa_free(s->contents); + nasm_free(s->name); + if (s->flags & FOLLOWS_DEFINED) + nasm_free(s->follows); + if (s->flags & VFOLLOWS_DEFINED) + nasm_free(s->vfollows); + while (s->labels) { + l = s->labels; + s->labels = l->next; + nasm_free(l); + } + nasm_free(s); + } + + /* Free no-section labels. */ + while (no_seg_labels) { + l = no_seg_labels; + no_seg_labels = l->next; + nasm_free(l); + } + + /* Free relocation structures. */ + while (relocs) { + r = relocs->next; + nasm_free(relocs); + relocs = r; + } +} + +static void bin_out(int32_t segto, const void *data, + enum out_type type, uint64_t size, + int32_t segment, int32_t wrt) +{ + uint8_t *p, mydata[8]; + struct Section *s; + + if (wrt != NO_SEG) { + wrt = NO_SEG; /* continue to do _something_ */ + nasm_nonfatal("WRT not supported by binary output format"); + } + + /* Find the segment we are targeting. */ + s = find_section_by_index(segto); + if (!s) + nasm_panic("code directed to nonexistent segment?"); + + /* "Smart" section-type adaptation code. */ + if (!(s->flags & TYPE_DEFINED)) { + if (type == OUT_RESERVE) + s->flags |= TYPE_DEFINED | TYPE_NOBITS; + else + s->flags |= TYPE_DEFINED | TYPE_PROGBITS; + } + + if ((s->flags & TYPE_NOBITS) && (type != OUT_RESERVE)) + nasm_warn(WARN_OTHER, "attempt to initialize memory in a" + " nobits section: ignored"); + + switch (type) { + case OUT_ADDRESS: + { + int asize = abs((int)size); + + if (segment != NO_SEG && !find_section_by_index(segment)) { + if (segment % 2) + nasm_nonfatal("binary output format does not support" + " segment base references"); + else + nasm_nonfatal("binary output format does not support" + " external references"); + segment = NO_SEG; + } + if (s->flags & TYPE_PROGBITS) { + if (segment != NO_SEG) + add_reloc(s, asize, segment, -1L); + p = mydata; + WRITEADDR(p, *(int64_t *)data, asize); + saa_wbytes(s->contents, mydata, asize); + } + + /* + * Reassign size with sign dropped, we will need it + * for section length calculation. + */ + size = asize; + break; + } + + case OUT_RAWDATA: + if (s->flags & TYPE_PROGBITS) + saa_wbytes(s->contents, data, size); + break; + + case OUT_RESERVE: + if (s->flags & TYPE_PROGBITS) { + nasm_warn(WARN_ZEROING, "uninitialized space declared in" + " %s section: zeroing", s->name); + saa_wbytes(s->contents, NULL, size); + } + break; + + case OUT_REL1ADR: + case OUT_REL2ADR: + case OUT_REL4ADR: + case OUT_REL8ADR: + { + int64_t addr = *(int64_t *)data - size; + size = realsize(type, size); + if (segment != NO_SEG && !find_section_by_index(segment)) { + if (segment % 2) + nasm_nonfatal("binary output format does not support" + " segment base references"); + else + nasm_nonfatal("binary output format does not support" + " external references"); + segment = NO_SEG; + } + if (s->flags & TYPE_PROGBITS) { + add_reloc(s, size, segment, segto); + p = mydata; + WRITEADDR(p, addr - s->length, size); + saa_wbytes(s->contents, mydata, size); + } + break; + } + + default: + nasm_nonfatal("unsupported relocation type %d\n", type); + break; + } + + s->length += size; +} + +static void bin_deflabel(char *name, int32_t segment, int64_t offset, + int is_global, char *special) +{ + (void)segment; /* Don't warn that this parameter is unused */ + (void)offset; /* Don't warn that this parameter is unused */ + + if (special) + nasm_nonfatal("binary format does not support any" + " special symbol types"); + else if (name[0] == '.' && name[1] == '.' && name[2] != '@') + nasm_nonfatal("unrecognised special symbol `%s'", name); + else if (is_global == 2) + nasm_nonfatal("binary output format does not support common" + " variables"); + else { + struct Section *s; + struct bin_label ***ltp; + + /* Remember label definition so we can look it up later when + * creating the map file. */ + s = find_section_by_index(segment); + if (s) + ltp = &(s->labels_end); + else + ltp = &nsl_tail; + (**ltp) = nasm_malloc(sizeof(struct bin_label)); + (**ltp)->name = name; + (**ltp)->next = NULL; + *ltp = &((**ltp)->next); + } + +} + +/* These constants and the following function are used + * by bin_secname() to parse attribute assignments. */ + +enum { ATTRIB_START, ATTRIB_ALIGN, ATTRIB_FOLLOWS, + ATTRIB_VSTART, ATTRIB_VALIGN, ATTRIB_VFOLLOWS, + ATTRIB_NOBITS, ATTRIB_PROGBITS +}; + +static int bin_read_attribute(char **line, int *attribute, + uint64_t *value) +{ + expr *e; + int attrib_name_size; + struct tokenval tokval; + char *exp; + + /* Skip whitespace. */ + while (**line && nasm_isspace(**line)) + (*line)++; + if (!**line) + return 0; + + /* Figure out what attribute we're reading. */ + if (!nasm_strnicmp(*line, "align=", 6)) { + *attribute = ATTRIB_ALIGN; + attrib_name_size = 6; + } else { + if (!nasm_strnicmp(*line, "start=", 6)) { + *attribute = ATTRIB_START; + attrib_name_size = 6; + } else if (!nasm_strnicmp(*line, "follows=", 8)) { + *attribute = ATTRIB_FOLLOWS; + *line += 8; + return 1; + } else if (!nasm_strnicmp(*line, "vstart=", 7)) { + *attribute = ATTRIB_VSTART; + attrib_name_size = 7; + } else if (!nasm_strnicmp(*line, "valign=", 7)) { + *attribute = ATTRIB_VALIGN; + attrib_name_size = 7; + } else if (!nasm_strnicmp(*line, "vfollows=", 9)) { + *attribute = ATTRIB_VFOLLOWS; + *line += 9; + return 1; + } else if (!nasm_strnicmp(*line, "nobits", 6) && + (nasm_isspace((*line)[6]) || ((*line)[6] == '\0'))) { + *attribute = ATTRIB_NOBITS; + *line += 6; + return 1; + } else if (!nasm_strnicmp(*line, "progbits", 8) && + (nasm_isspace((*line)[8]) || ((*line)[8] == '\0'))) { + *attribute = ATTRIB_PROGBITS; + *line += 8; + return 1; + } else + return 0; + } + + /* Find the end of the expression. */ + if ((*line)[attrib_name_size] != '(') { + /* Single term (no parenthesis). */ + exp = *line += attrib_name_size; + while (**line && !nasm_isspace(**line)) + (*line)++; + if (**line) { + **line = '\0'; + (*line)++; + } + } else { + char c; + int pcount = 1; + + /* Full expression (delimited by parenthesis) */ + exp = *line += attrib_name_size + 1; + while (1) { + (*line) += strcspn(*line, "()'\""); + if (**line == '(') { + ++(*line); + ++pcount; + } + if (**line == ')') { + ++(*line); + --pcount; + if (!pcount) + break; + } + if ((**line == '"') || (**line == '\'')) { + c = **line; + while (**line) { + ++(*line); + if (**line == c) + break; + } + if (!**line) { + nasm_nonfatal("invalid syntax in `section' directive"); + return -1; + } + ++(*line); + } + if (!**line) { + nasm_nonfatal("expecting `)'"); + return -1; + } + } + *(*line - 1) = '\0'; /* Terminate the expression. */ + } + + /* Check for no value given. */ + if (!*exp) { + nasm_warn(WARN_OTHER, "No value given to attribute in" + " `section' directive"); + return -1; + } + + /* Read and evaluate the expression. */ + stdscan_reset(); + stdscan_set(exp); + tokval.t_type = TOKEN_INVALID; + e = evaluate(stdscan, NULL, &tokval, NULL, 1, NULL); + if (e) { + if (!is_really_simple(e)) { + nasm_nonfatal("section attribute value must be" + " a critical expression"); + return -1; + } + } else { + nasm_nonfatal("Invalid attribute value" + " specified in `section' directive."); + return -1; + } + *value = (uint64_t)reloc_value(e); + return 1; +} + +static void bin_sectalign(int32_t seg, unsigned int value) +{ + struct Section *s = find_section_by_index(seg); + + if (!s || !is_power2(value)) + return; + + if (value > s->align) + s->align = value; + + if (!(s->flags & ALIGN_DEFINED)) + s->flags |= ALIGN_DEFINED; +} + +static void bin_assign_attributes(struct Section *sec, char *astring) +{ + int attribute, check; + uint64_t value; + char *p; + + while (1) { /* Get the next attribute. */ + check = bin_read_attribute(&astring, &attribute, &value); + /* Skip bad attribute. */ + if (check == -1) + continue; + /* Unknown section attribute, so skip it and warn the user. */ + if (!check) { + if (!*astring) + break; /* End of line. */ + else { + p = astring; + while (*astring && !nasm_isspace(*astring)) + astring++; + if (*astring) { + *astring = '\0'; + astring++; + } + nasm_warn(WARN_OTHER, "ignoring unknown section attribute: \"%s\"", p); + } + continue; + } + + switch (attribute) { /* Handle nobits attribute. */ + case ATTRIB_NOBITS: + if ((sec->flags & TYPE_DEFINED) + && (sec->flags & TYPE_PROGBITS)) + nasm_nonfatal("attempt to change section type" + " from progbits to nobits"); + else + sec->flags |= TYPE_DEFINED | TYPE_NOBITS; + continue; + + /* Handle progbits attribute. */ + case ATTRIB_PROGBITS: + if ((sec->flags & TYPE_DEFINED) && (sec->flags & TYPE_NOBITS)) + nasm_nonfatal("attempt to change section type" + " from nobits to progbits"); + else + sec->flags |= TYPE_DEFINED | TYPE_PROGBITS; + continue; + + /* Handle align attribute. */ + case ATTRIB_ALIGN: + if (!value || ((value - 1) & value)) { + nasm_nonfatal("argument to `align' is not a power of two"); + } else { + /* + * Alignment is already satisfied if + * the previous align value is greater + */ + if ((sec->flags & ALIGN_DEFINED) && (value < sec->align)) + value = sec->align; + + /* Don't allow a conflicting align value. */ + if ((sec->flags & START_DEFINED) && (sec->start & (value - 1))) { + nasm_nonfatal("`align' value conflicts with section start address"); + } else { + sec->align = value; + sec->flags |= ALIGN_DEFINED; + } + } + continue; + + /* Handle valign attribute. */ + case ATTRIB_VALIGN: + if (!value || ((value - 1) & value)) + nasm_nonfatal("argument to `valign' is not a power of two"); + else { /* Alignment is already satisfied if the previous + * align value is greater. */ + if ((sec->flags & VALIGN_DEFINED) && (value < sec->valign)) + value = sec->valign; + + /* Don't allow a conflicting valign value. */ + if ((sec->flags & VSTART_DEFINED) + && (sec->vstart & (value - 1))) + nasm_nonfatal("`valign' value conflicts with `vstart' address"); + else { + sec->valign = value; + sec->flags |= VALIGN_DEFINED; + } + } + continue; + + /* Handle start attribute. */ + case ATTRIB_START: + if (sec->flags & FOLLOWS_DEFINED) + nasm_nonfatal("cannot combine `start' and `follows'" + " section attributes"); + else if ((sec->flags & START_DEFINED) && (value != sec->start)) + nasm_nonfatal("section start address redefined"); + else { + sec->start = value; + sec->flags |= START_DEFINED; + if (sec->flags & ALIGN_DEFINED) { + if (sec->start & (sec->align - 1)) + nasm_nonfatal("`start' address conflicts" + " with section alignment"); + sec->flags ^= ALIGN_DEFINED; + } + } + continue; + + /* Handle vstart attribute. */ + case ATTRIB_VSTART: + if (sec->flags & VFOLLOWS_DEFINED) + nasm_nonfatal("cannot combine `vstart' and `vfollows'" + " section attributes"); + else if ((sec->flags & VSTART_DEFINED) + && (value != sec->vstart)) + nasm_nonfatal("section virtual start address" + " (vstart) redefined"); + else { + sec->vstart = value; + sec->flags |= VSTART_DEFINED; + if (sec->flags & VALIGN_DEFINED) { + if (sec->vstart & (sec->valign - 1)) + nasm_nonfatal("`vstart' address conflicts" + " with `valign' value"); + sec->flags ^= VALIGN_DEFINED; + } + } + continue; + + /* Handle follows attribute. */ + case ATTRIB_FOLLOWS: + p = astring; + astring += strcspn(astring, " \t"); + if (astring == p) + nasm_nonfatal("expecting section name for `follows'" + " attribute"); + else { + *(astring++) = '\0'; + if (sec->flags & START_DEFINED) + nasm_nonfatal("cannot combine `start' and `follows'" + " section attributes"); + sec->follows = nasm_strdup(p); + sec->flags |= FOLLOWS_DEFINED; + } + continue; + + /* Handle vfollows attribute. */ + case ATTRIB_VFOLLOWS: + if (sec->flags & VSTART_DEFINED) + nasm_nonfatal("cannot combine `vstart' and `vfollows'" + " section attributes"); + else { + p = astring; + astring += strcspn(astring, " \t"); + if (astring == p) + nasm_nonfatal("expecting section name for `vfollows'" + " attribute"); + else { + *(astring++) = '\0'; + sec->vfollows = nasm_strdup(p); + sec->flags |= VFOLLOWS_DEFINED; + } + } + continue; + } + } +} + +static void bin_define_section_labels(void) +{ + static int labels_defined = 0; + struct Section *sec; + char *label_name; + size_t base_len; + + if (labels_defined) + return; + list_for_each(sec, sections) { + base_len = strlen(sec->name) + 8; + label_name = nasm_malloc(base_len + 8); + strcpy(label_name, "section."); + strcpy(label_name + 8, sec->name); + + /* section..start */ + strcpy(label_name + base_len, ".start"); + define_label(label_name, sec->start_index, 0L, false); + + /* section..vstart */ + strcpy(label_name + base_len, ".vstart"); + define_label(label_name, sec->vstart_index, 0L, false); + + nasm_free(label_name); + } + labels_defined = 1; +} + +static int32_t bin_secname(char *name, int *bits) +{ + char *p; + struct Section *sec; + + /* bin_secname is called with *name = NULL at the start of each + * pass. Use this opportunity to establish the default section + * (default is BITS-16 ".text" segment). + */ + if (!name) { + /* Reset ORG and section attributes at the start of each pass. */ + origin_defined = 0; + list_for_each(sec, sections) + sec->flags &= ~(START_DEFINED | VSTART_DEFINED | + ALIGN_DEFINED | VALIGN_DEFINED); + + /* Define section start and vstart labels. */ + if (!pass_first()) + bin_define_section_labels(); + + /* Establish the default (.text) section. */ + *bits = 16; + sec = find_section_by_name(".text"); + sec->flags |= TYPE_DEFINED | TYPE_PROGBITS; + return sec->vstart_index; + } + + /* Attempt to find the requested section. If it does not + * exist, create it. */ + p = name; + while (*p && !nasm_isspace(*p)) + p++; + if (*p) + *p++ = '\0'; + sec = find_section_by_name(name); + if (!sec) { + sec = create_section(name); + if (!strcmp(name, ".data")) + sec->flags |= TYPE_DEFINED | TYPE_PROGBITS; + else if (!strcmp(name, ".bss")) { + sec->flags |= TYPE_DEFINED | TYPE_NOBITS; + sec->prev = NULL; + } + } + + /* Handle attribute assignments. */ + if (!pass_first()) + bin_assign_attributes(sec, p); + +#ifndef ABIN_SMART_ADAPT + /* The following line disables smart adaptation of + * PROGBITS/NOBITS section types (it forces sections to + * default to PROGBITS). */ + if (!pass_first() && !(sec->flags & TYPE_DEFINED)) + sec->flags |= TYPE_DEFINED | TYPE_PROGBITS; +#endif + + return sec->vstart_index; +} + +static enum directive_result +bin_directive(enum directive directive, char *args) +{ + switch (directive) { + case D_ORG: + { + struct tokenval tokval; + uint64_t value; + expr *e; + + stdscan_reset(); + stdscan_set(args); + tokval.t_type = TOKEN_INVALID; + e = evaluate(stdscan, NULL, &tokval, NULL, 1, NULL); + if (e) { + if (!is_really_simple(e)) + nasm_nonfatal("org value must be a critical" + " expression"); + else { + value = reloc_value(e); + /* Check for ORG redefinition. */ + if (origin_defined && (value != origin)) + nasm_nonfatal("program origin redefined"); + else { + origin = value; + origin_defined = 1; + } + } + } else + nasm_nonfatal("No or invalid offset specified" + " in ORG directive."); + return DIRR_OK; + } + case D_MAP: + { + /* The 'map' directive allows the user to generate section + * and symbol information to stdout, stderr, or to a file. */ + char *p; + + if (!pass_first()) + return DIRR_OK; + args += strspn(args, " \t"); + while (*args) { + p = args; + args += strcspn(args, " \t"); + if (*args != '\0') + *(args++) = '\0'; + if (!nasm_stricmp(p, "all")) + map_control |= + MAP_ORIGIN | MAP_SUMMARY | MAP_SECTIONS | MAP_SYMBOLS; + else if (!nasm_stricmp(p, "brief")) + map_control |= MAP_ORIGIN | MAP_SUMMARY; + else if (!nasm_stricmp(p, "sections")) + map_control |= MAP_ORIGIN | MAP_SUMMARY | MAP_SECTIONS; + else if (!nasm_stricmp(p, "segments")) + map_control |= MAP_ORIGIN | MAP_SUMMARY | MAP_SECTIONS; + else if (!nasm_stricmp(p, "symbols")) + map_control |= MAP_SYMBOLS; + else if (!rf) { + if (!nasm_stricmp(p, "stdout")) + rf = stdout; + else if (!nasm_stricmp(p, "stderr")) + rf = stderr; + else { /* Must be a filename. */ + rf = nasm_open_write(p, NF_TEXT); + if (!rf) { + nasm_warn(WARN_OTHER, "unable to open map file `%s'", p); + map_control = 0; + return DIRR_OK; + } + } + } else + nasm_warn(WARN_OTHER, "map file already specified"); + } + if (map_control == 0) + map_control |= MAP_ORIGIN | MAP_SUMMARY; + if (!rf) + rf = stdout; + return DIRR_OK; + } + default: + return DIRR_UNKNOWN; + } +} + +const struct ofmt of_bin, of_ith, of_srec; +static void binfmt_init(void); +static void do_output_bin(void); +static void do_output_ith(void); +static void do_output_srec(void); + +static void bin_init(void) +{ + do_output = do_output_bin; + binfmt_init(); +} + +static void ith_init(void) +{ + do_output = do_output_ith; + binfmt_init(); +} + +static void srec_init(void) +{ + do_output = do_output_srec; + binfmt_init(); +} + +static void binfmt_init(void) +{ + relocs = NULL; + reloctail = &relocs; + origin_defined = 0; + no_seg_labels = NULL; + nsl_tail = &no_seg_labels; + + /* Create default section (.text). */ + sections = last_section = nasm_zalloc(sizeof(struct Section)); + last_section->name = nasm_strdup(".text"); + last_section->contents = saa_init(1L); + last_section->flags = TYPE_DEFINED | TYPE_PROGBITS; + last_section->labels_end = &(last_section->labels); + last_section->start_index = seg_alloc(); + last_section->vstart_index = seg_alloc(); +} + +/* Generate binary file output */ +static void do_output_bin(void) +{ + struct Section *s; + uint64_t addr = origin; + + /* Write the progbits sections to the output file. */ + list_for_each(s, sections) { + /* Skip non-progbits sections */ + if (!(s->flags & TYPE_PROGBITS)) + continue; + /* Skip zero-length sections */ + if (s->length == 0) + continue; + + /* Pad the space between sections. */ + nasm_assert(addr <= s->start); + fwritezero(s->start - addr, ofile); + + /* Write the section to the output file. */ + saa_fpwrite(s->contents, ofile); + + /* Keep track of the current file position */ + addr = s->start + s->length; + } +} + +/* Generate Intel hex file output */ +static void write_ith_record(unsigned int len, uint16_t addr, + uint8_t type, void *data) +{ + char buf[1+2+4+2+255*2+2+2]; + char *p = buf; + uint8_t csum, *dptr = data; + unsigned int i; + + nasm_assert(len <= 255); + + csum = len + addr + (addr >> 8) + type; + for (i = 0; i < len; i++) + csum += dptr[i]; + csum = -csum; + + p += sprintf(p, ":%02X%04X%02X", len, addr, type); + for (i = 0; i < len; i++) + p += sprintf(p, "%02X", dptr[i]); + p += sprintf(p, "%02X\n", csum); + + nasm_write(buf, p-buf, ofile); +} + +static void do_output_ith(void) +{ + uint8_t buf[32]; + struct Section *s; + uint64_t addr, hiaddr, hilba; + uint64_t length; + unsigned int chunk; + + /* Write the progbits sections to the output file. */ + hilba = 0; + list_for_each(s, sections) { + /* Skip non-progbits sections */ + if (!(s->flags & TYPE_PROGBITS)) + continue; + /* Skip zero-length sections */ + if (s->length == 0) + continue; + + addr = s->start; + length = s->length; + saa_rewind(s->contents); + + while (length) { + hiaddr = addr >> 16; + if (hiaddr != hilba) { + buf[0] = hiaddr >> 8; + buf[1] = hiaddr; + write_ith_record(2, 0, 4, buf); + hilba = hiaddr; + } + + chunk = 32 - (addr & 31); + if (length < chunk) + chunk = length; + + saa_rnbytes(s->contents, buf, chunk); + write_ith_record(chunk, (uint16_t)addr, 0, buf); + + addr += chunk; + length -= chunk; + } + } + + /* Write closing record */ + write_ith_record(0, 0, 1, NULL); +} + +/* Generate Motorola S-records */ +static void write_srecord(unsigned int len, unsigned int alen, + uint32_t addr, uint8_t type, void *data) +{ + char buf[2+2+8+255*2+2+2]; + char *p = buf; + uint8_t csum, *dptr = data; + unsigned int i; + + nasm_assert(len <= 255); + + switch (alen) { + case 2: + addr &= 0xffff; + break; + case 3: + addr &= 0xffffff; + break; + case 4: + break; + default: + panic(); + break; + } + + csum = (len+alen+1) + addr + (addr >> 8) + (addr >> 16) + (addr >> 24); + for (i = 0; i < len; i++) + csum += dptr[i]; + csum = 0xff-csum; + + p += sprintf(p, "S%c%02X%0*X", type, len+alen+1, alen*2, addr); + for (i = 0; i < len; i++) + p += sprintf(p, "%02X", dptr[i]); + p += sprintf(p, "%02X\n", csum); + + nasm_write(buf, p-buf, ofile); +} + +static void do_output_srec(void) +{ + uint8_t buf[32]; + struct Section *s; + uint64_t addr, maxaddr; + uint64_t length; + int alen; + unsigned int chunk; + char dtype, etype; + + maxaddr = 0; + list_for_each(s, sections) { + /* Skip non-progbits sections */ + if (!(s->flags & TYPE_PROGBITS)) + continue; + /* Skip zero-length sections */ + if (s->length == 0) + continue; + + addr = s->start + s->length - 1; + if (addr > maxaddr) + maxaddr = addr; + } + + if (maxaddr <= 0xffff) { + alen = 2; + dtype = '1'; /* S1 = 16-bit data */ + etype = '9'; /* S9 = 16-bit end */ + } else if (maxaddr <= 0xffffff) { + alen = 3; + dtype = '2'; /* S2 = 24-bit data */ + etype = '8'; /* S8 = 24-bit end */ + } else { + alen = 4; + dtype = '3'; /* S3 = 32-bit data */ + etype = '7'; /* S7 = 32-bit end */ + } + + /* Write head record */ + write_srecord(0, 2, 0, '0', NULL); + + /* Write the progbits sections to the output file. */ + list_for_each(s, sections) { + /* Skip non-progbits sections */ + if (!(s->flags & TYPE_PROGBITS)) + continue; + /* Skip zero-length sections */ + if (s->length == 0) + continue; + + addr = s->start; + length = s->length; + saa_rewind(s->contents); + + while (length) { + chunk = 32 - (addr & 31); + if (length < chunk) + chunk = length; + + saa_rnbytes(s->contents, buf, chunk); + write_srecord(chunk, alen, (uint32_t)addr, dtype, buf); + + addr += chunk; + length -= chunk; + } + } + + /* Write closing record */ + write_srecord(0, alen, 0, etype, NULL); +} + + +const struct ofmt of_bin = { + "Flat raw binary (MS-DOS, embedded, ...)", + "bin", + "", + 0, + 64, + null_debug_arr, + &null_debug_form, + bin_stdmac, + bin_init, + null_reset, + nasm_do_legacy_output, + bin_out, + bin_deflabel, + bin_secname, + NULL, + bin_sectalign, + null_segbase, + bin_directive, + bin_cleanup, + NULL /* pragma list */ +}; + +const struct ofmt of_ith = { + "Intel Hex encoded flat binary", + "ith", + ".ith", /* really should have been ".hex"... */ + OFMT_TEXT, + 64, + null_debug_arr, + &null_debug_form, + bin_stdmac, + ith_init, + null_reset, + nasm_do_legacy_output, + bin_out, + bin_deflabel, + bin_secname, + NULL, + bin_sectalign, + null_segbase, + bin_directive, + bin_cleanup, + NULL /* pragma list */ +}; + +const struct ofmt of_srec = { + "Motorola S-records encoded flat binary", + "srec", + ".srec", + OFMT_TEXT, + 64, + null_debug_arr, + &null_debug_form, + bin_stdmac, + srec_init, + null_reset, + nasm_do_legacy_output, + bin_out, + bin_deflabel, + bin_secname, + NULL, + bin_sectalign, + null_segbase, + bin_directive, + bin_cleanup, + NULL /* pragma list */ +}; + +#endif /* #ifdef OF_BIN */ diff --git a/vere/ext/nasm/output/outbin.mac b/vere/ext/nasm/output/outbin.mac new file mode 100644 index 0000000..99c15b6 --- /dev/null +++ b/vere/ext/nasm/output/outbin.mac @@ -0,0 +1,40 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2009 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +OUT: bin +%define __?SECT?__ [section .text] +%imacro org 1+.nolist +[org %1] +%endmacro +%macro __?NASM_CDecl?__ 1 +%endmacro diff --git a/vere/ext/nasm/output/outcoff.c b/vere/ext/nasm/output/outcoff.c new file mode 100644 index 0000000..c2b4eb6 --- /dev/null +++ b/vere/ext/nasm/output/outcoff.c @@ -0,0 +1,1436 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * outcoff.c output routines for the Netwide Assembler to produce + * COFF object files (for DJGPP and Win32) + */ + +#include "compiler.h" + +#include "nctype.h" +#include +#include "ver.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "ilog2.h" +#include "error.h" +#include "saa.h" +#include "raa.h" +#include "eval.h" +#include "outform.h" +#include "outlib.h" +#include "pecoff.h" + +#if defined(OF_COFF) || defined(OF_WIN32) || defined(OF_WIN64) + +/* + * Notes on COFF: + * + * (0) When I say `standard COFF' below, I mean `COFF as output and + * used by DJGPP'. I assume DJGPP gets it right. + * + * (1) Win32 appears to interpret the term `relative relocation' + * differently from standard COFF. Standard COFF understands a + * relative relocation to mean that during relocation you add the + * address of the symbol you're referencing, and subtract the base + * address of the section you're in. Win32 COFF, by contrast, seems + * to add the address of the symbol and then subtract the address + * of THE BYTE AFTER THE RELOCATED DWORD. Hence the two formats are + * subtly incompatible. + * + * (2) Win32 doesn't bother putting any flags in the header flags + * field (at offset 0x12 into the file). + * + * (3) Win32/64 uses some extra flags into the section header table: + * it defines flags 0x80000000 (writable), 0x40000000 (readable) + * and 0x20000000 (executable), and uses them in the expected + * combinations. It also defines 0x00100000 through 0x00f00000 for + * section alignments of 1 through 8192 bytes. + * + * (4) Both standard COFF and Win32 COFF seem to use the DWORD + * field directly after the section name in the section header + * table for something strange: they store what the address of the + * section start point _would_ be, if you laid all the sections end + * to end starting at zero. Dunno why. Microsoft's documentation + * lists this field as "Virtual Size of Section", which doesn't + * seem to fit at all. In fact, Win32 even includes non-linked + * sections such as .drectve in this calculation. + * + * Newer versions of MASM seem to have changed this to be zero, and + * that apparently matches the COFF spec, so go with that. + * + * (5) Standard COFF does something very strange to common + * variables: the relocation point for a common variable is as far + * _before_ the variable as its size stretches out _after_ it. So + * we must fix up common variable references. Win32 seems to be + * sensible on this one. + */ + +/* Flag which version of COFF we are currently outputting. */ +bool win32, win64; + +static int32_t imagebase_sect; +#define WRT_IMAGEBASE "..imagebase" + +/* + * Some common section flags by default + */ +#define TEXT_FLAGS_WIN \ + (IMAGE_SCN_CNT_CODE | \ + IMAGE_SCN_ALIGN_16BYTES | \ + IMAGE_SCN_MEM_EXECUTE | \ + IMAGE_SCN_MEM_READ) +#define TEXT_FLAGS_DOS \ + (IMAGE_SCN_CNT_CODE) + +#define DATA_FLAGS_WIN \ + (IMAGE_SCN_CNT_INITIALIZED_DATA | \ + IMAGE_SCN_ALIGN_4BYTES | \ + IMAGE_SCN_MEM_READ | \ + IMAGE_SCN_MEM_WRITE) +#define DATA_FLAGS_DOS \ + (IMAGE_SCN_CNT_INITIALIZED_DATA) + +#define BSS_FLAGS_WIN \ + (IMAGE_SCN_CNT_UNINITIALIZED_DATA | \ + IMAGE_SCN_ALIGN_4BYTES | \ + IMAGE_SCN_MEM_READ | \ + IMAGE_SCN_MEM_WRITE) +#define BSS_FLAGS_DOS \ + (IMAGE_SCN_CNT_UNINITIALIZED_DATA) + +#define RDATA_FLAGS_WIN \ + (IMAGE_SCN_CNT_INITIALIZED_DATA | \ + IMAGE_SCN_ALIGN_8BYTES | \ + IMAGE_SCN_MEM_READ) + +#define RDATA_FLAGS_DOS \ + (IMAGE_SCN_CNT_INITIALIZED_DATA) + +#define PDATA_FLAGS \ + (IMAGE_SCN_CNT_INITIALIZED_DATA | \ + IMAGE_SCN_ALIGN_4BYTES | \ + IMAGE_SCN_MEM_READ) + +#define XDATA_FLAGS \ + (IMAGE_SCN_CNT_INITIALIZED_DATA | \ + IMAGE_SCN_ALIGN_8BYTES | \ + IMAGE_SCN_MEM_READ) + +#define INFO_FLAGS \ + (IMAGE_SCN_ALIGN_1BYTES | \ + IMAGE_SCN_LNK_INFO | \ + IMAGE_SCN_LNK_REMOVE) + +#define TEXT_FLAGS ((win32 | win64) ? TEXT_FLAGS_WIN : TEXT_FLAGS_DOS) +#define DATA_FLAGS ((win32 | win64) ? DATA_FLAGS_WIN : DATA_FLAGS_DOS) +#define BSS_FLAGS ((win32 | win64) ? BSS_FLAGS_WIN : BSS_FLAGS_DOS) +#define RDATA_FLAGS ((win32 | win64) ? RDATA_FLAGS_WIN : RDATA_FLAGS_DOS) + +#define COFF_MAX_ALIGNMENT 8192 + +#define SECT_DELTA 32 +struct coff_Section **coff_sects; +static int sectlen; +int coff_nsects; + +struct SAA *coff_syms; +uint32_t coff_nsyms; + +static int32_t def_seg; + +static int initsym; + +static struct RAA *bsym, *symval; + +struct SAA *coff_strs; +static uint32_t strslen; + +static void coff_gen_init(void); +static void coff_sect_write(struct coff_Section *, const uint8_t *, uint32_t); +static void coff_write(void); +static void coff_section_header(char *, int32_t, int32_t, int32_t, int32_t, int32_t, int, int32_t); +static void coff_write_relocs(struct coff_Section *); +static void coff_write_symbols(void); +static void coff_defcomdatname(char *name, int32_t segment); + +#define COMDAT_PLACEHOLDER_NAME ".tmpcmdt" + +static void coff_win32_init(void) +{ + win32 = true; + win64 = false; + coff_gen_init(); +} + +static void coff_win64_init(void) +{ + win32 = false; + win64 = true; + coff_gen_init(); + imagebase_sect = seg_alloc()+1; + backend_label(WRT_IMAGEBASE, imagebase_sect, 0); +} + +static void coff_std_init(void) +{ + win32 = win64 = false; + coff_gen_init(); +} + +static void coff_gen_init(void) +{ + + coff_sects = NULL; + coff_nsects = sectlen = 0; + coff_syms = saa_init(sizeof(struct coff_Symbol)); + coff_nsyms = 0; + bsym = raa_init(); + symval = raa_init(); + coff_strs = saa_init(1); + strslen = 0; + def_seg = seg_alloc(); +} + +static void coff_cleanup(void) +{ + struct coff_Reloc *r; + int i; + + dfmt->cleanup(); + + coff_write(); + for (i = 0; i < coff_nsects; i++) { + if (coff_sects[i]->data) + saa_free(coff_sects[i]->data); + while (coff_sects[i]->head) { + r = coff_sects[i]->head; + coff_sects[i]->head = coff_sects[i]->head->next; + nasm_free(r); + } + nasm_free(coff_sects[i]->name); + nasm_free(coff_sects[i]->comdat_name); + nasm_free(coff_sects[i]); + } + nasm_free(coff_sects); + saa_free(coff_syms); + raa_free(bsym); + raa_free(symval); + saa_free(coff_strs); +} + +int coff_make_section(char *name, uint32_t flags) +{ + struct coff_Section *s; + size_t namelen; + + s = nasm_zalloc(sizeof(*s)); + + if (flags != BSS_FLAGS) + s->data = saa_init(1); + s->tail = &s->head; + if (!strcmp(name, ".text")) + s->index = def_seg; + else + s->index = seg_alloc(); + s->namepos = -1; + namelen = strlen(name); + if (namelen > 8) { + if (win32 || win64) { + s->namepos = strslen + 4; + saa_wbytes(coff_strs, name, namelen + 1); + strslen += namelen + 1; + } else { + namelen = 8; + } + } + s->name = nasm_malloc(namelen + 1); + strncpy(s->name, name, namelen); + s->name[namelen] = '\0'; + s->flags = flags; + + if (coff_nsects >= sectlen) { + sectlen += SECT_DELTA; + coff_sects = nasm_realloc(coff_sects, sectlen * sizeof(*coff_sects)); + } + coff_sects[coff_nsects++] = s; + + return coff_nsects - 1; +} + +/* + * Update the name and flags of an existing section + */ +static void coff_update_section(int section, char *name, uint32_t flags) +{ + struct coff_Section *s = coff_sects[section]; + size_t namelen = strlen(name); + + if (namelen > 8) { + if (win32 || win64) { + s->namepos = strslen + 4; + saa_wbytes(coff_strs, name, namelen + 1); + strslen += namelen + 1; + } else { + namelen = 8; + } + } + + nasm_free(s->name); + s->name = nasm_malloc(namelen + 1); + strncpy(s->name, name, namelen); + s->name[namelen] = '\0'; + s->flags = flags; +} + +/* + * Convert an alignment value to the corresponding flags. + * An alignment value of 0 means no flags should be set. + */ +static inline uint32_t coff_sectalign_flags(unsigned int align) +{ + return (alignlog2_32(align) + 1) << 20; +} + +/* + * Get the default section flags (based on section name) + */ +static uint32_t coff_section_flags(char *name, uint32_t flags) +{ + if (!flags) { + flags = TEXT_FLAGS; + + if (!strcmp(name, ".data")) { + flags = DATA_FLAGS; + } else if (!strcmp(name, ".rdata")) { + flags = RDATA_FLAGS; + } else if (!strcmp(name, ".bss")) { + flags = BSS_FLAGS; + } else if (win64) { + if (!strcmp(name, ".pdata")) + flags = PDATA_FLAGS; + else if (!strcmp(name, ".xdata")) + flags = XDATA_FLAGS; + } + } + + return flags; +} + +static int32_t coff_section_names(char *name, int *bits) +{ + char *p, *comdat_name; + uint32_t flags, align_flags; + int i, j; + int8_t comdat_selection; + int32_t comdat_associated; + + /* + * Set default bits. + */ + if (!name) { + if(win64) + *bits = 64; + else + *bits = 32; + + return def_seg; + } + + p = name; + while (*p && !nasm_isspace(*p)) + p++; + if (*p) + *p++ = '\0'; + if (strlen(name) > 8) { + if (!win32 && !win64) { + nasm_warn(WARN_OTHER, "COFF section names limited to 8 characters: truncating"); + name[8] = '\0'; + } + } + flags = align_flags = comdat_selection = comdat_associated = 0; + comdat_name = NULL; + + while (*p && nasm_isspace(*p)) + p++; + while (*p) { + char *q = p; + while (*p && !nasm_isspace(*p)) + p++; + if (*p) + *p++ = '\0'; + while (*p && nasm_isspace(*p)) + p++; + + if (!nasm_stricmp(q, "code") || !nasm_stricmp(q, "text")) { + flags = TEXT_FLAGS; + } else if (!nasm_stricmp(q, "data")) { + flags = DATA_FLAGS; + } else if (!nasm_stricmp(q, "rdata")) { + if (win32 | win64) + flags = RDATA_FLAGS; + else { + flags = DATA_FLAGS; /* gotta do something */ + nasm_nonfatal("standard COFF does not support" + " read-only data sections"); + } + } else if (!nasm_stricmp(q, "bss")) { + flags = BSS_FLAGS; + } else if (!nasm_stricmp(q, "info")) { + if (win32 | win64) + flags = INFO_FLAGS; + else { + flags = DATA_FLAGS; /* gotta do something */ + nasm_nonfatal("standard COFF does not support" + " informational sections"); + } + } else if (!nasm_strnicmp(q, "align=", 6)) { + if (q[6 + strspn(q + 6, "0123456789")]) + nasm_nonfatal("argument to `align' is not numeric"); + else { + unsigned int align = atoi(q + 6); + /* Allow align=0 meaning use default */ + if (!align) { + align_flags = 0; + } else if (!is_power2(align)) { + nasm_nonfatal("argument to `align' is not a" + " power of two"); + } else if (align > COFF_MAX_ALIGNMENT) { + nasm_nonfatal("maximum alignment in COFF is %d bytes", + COFF_MAX_ALIGNMENT); + } else { + align_flags = coff_sectalign_flags(align); + } + } + } else if (!nasm_strnicmp(q, "comdat=", 7)) { + /* + * Expected format: comdat=num:name] + * where + * num is a number: one of the IMAGE_COMDAT_SELECT_* constants + * name is a string: the "COMDAT name" + */ + comdat_selection = strtoul(q + 7, &q, 10); + if (!comdat_selection) + nasm_nonfatal("invalid argument to `comdat'"); + else if (*q != ':' || q[1] == '\0') + nasm_nonfatal("missing name in `comdat'"); + else { + comdat_name = q + 1; + } + } + } + + for (i = 0; i < coff_nsects; i++) + if (!strcmp(name, coff_sects[i]->name)) { + if (!comdat_name && !coff_sects[i]->comdat_name) + break; + else if (comdat_name && coff_sects[i]->comdat_name && + !strcmp(comdat_name, coff_sects[i]->comdat_name)) { + /* + * For COMDAT, it makes sense to have multiple sections with + * the same name (different comdat name though) + */ + if ((coff_sects[i]->comdat_selection == IMAGE_COMDAT_SELECT_ASSOCIATIVE && + comdat_selection == IMAGE_COMDAT_SELECT_ASSOCIATIVE) || + (coff_sects[i]->comdat_selection != IMAGE_COMDAT_SELECT_ASSOCIATIVE && + comdat_selection != IMAGE_COMDAT_SELECT_ASSOCIATIVE)) { + /* + * Let's also allow an associative/other pair with the same name + */ + break; + } + } + } + else if (comdat_name && coff_sects[i]->comdat_name && + !coff_sects[i]->comdat_selection && + !strcmp(comdat_name, coff_sects[i]->comdat_name) && + comdat_selection != IMAGE_COMDAT_SELECT_ASSOCIATIVE) { + /* + * This seems to be a "placeholder section" we've created before + * to be the associate of a previous comdat section. + * We'll just update the name and flags with the real ones now. + */ + flags = coff_section_flags(name, flags); + coff_update_section(i, name, flags | IMAGE_SCN_LNK_COMDAT); + coff_sects[i]->comdat_selection = comdat_selection; + break; + } + + if (i == coff_nsects) { + flags = coff_section_flags(name, flags); + + if (comdat_name) { + flags |= IMAGE_SCN_LNK_COMDAT; + + if (comdat_selection == IMAGE_COMDAT_SELECT_ASSOCIATIVE) { + /* + * Find an existing section with given comdat name + */ + for (j = 0; j < coff_nsects; j++) + if (coff_sects[j]->comdat_name && + !strcmp(coff_sects[j]->comdat_name, comdat_name)) + break; + + if (j == coff_nsects) { + /* + * The associated section doesn't exist (yet) + * Even though the specs don't enforce a particular order, + * VS (2019) linker doesn't accept .obj files where the + * target section is a later one (than the one with sel==5) + * + * So let's insert another section now (a placeholder), + * hoping it will be turned into the target section later. + */ + j = coff_make_section(COMDAT_PLACEHOLDER_NAME, TEXT_FLAGS); + coff_sects[j]->comdat_name = nasm_strdup(comdat_name); + } + + comdat_associated = j + 1; + } + } + + i = coff_make_section(name, flags); + coff_sects[i]->align_flags = align_flags; + + if (comdat_name) { + coff_sects[i]->comdat_selection = comdat_selection; + coff_sects[i]->comdat_associated = comdat_associated; + coff_sects[i]->comdat_name = nasm_strdup(comdat_name); + } + } else { + if (flags) { + if (comdat_name) + flags |= IMAGE_SCN_LNK_COMDAT; + + /* Warn if non-alignment flags differ */ + if (((flags ^ coff_sects[i]->flags) & ~IMAGE_SCN_ALIGN_MASK) && + coff_sects[i]->pass_last_seen == pass_count()) { + nasm_warn(WARN_OTHER, "section attributes changed on" + " redeclaration of section `%s'", name); + } + } + + /* + * Alignment can be increased, but never decreased. However, + * specifying a narrower alignment is permitted and ignored. + */ + if (align_flags > coff_sects[i]->align_flags) { + coff_sects[i]->align_flags = align_flags; + } + + if (comdat_name) { + if ((coff_sects[i]->comdat_selection != comdat_selection) && + coff_sects[i]->pass_last_seen == pass_count()) { + nasm_warn(WARN_OTHER, "comdat selection changed on" + " redeclaration of name `%s'", comdat_name); + } + } + } + + coff_sects[i]->pass_last_seen = pass_count(); + return coff_sects[i]->index; +} + +static void coff_deflabel(char *name, int32_t segment, int64_t offset, + int is_global, char *special) +{ + int pos, section; + struct coff_Symbol *sym; + + if (special) + nasm_nonfatal("COFF format does not support any" + " special symbol types"); + + if (name[0] == '.' && name[1] == '.' && name[2] != '@') { + if (strcmp(name,WRT_IMAGEBASE)) + nasm_nonfatal("unrecognized special symbol `%s'", name); + return; + } + + if (segment == NO_SEG) + section = -1; /* absolute symbol */ + else { + int i; + section = 0; + for (i = 0; i < coff_nsects; i++) + if (segment == coff_sects[i]->index) { + section = i + 1; + + if (coff_sects[i]->comdat_name && !coff_sects[i]->comdat_symbol) { + /* + * The "comdat symbol" must be the first one in symbol table + * So we'll insert/define it - before defining the other one + */ + coff_sects[i]->comdat_symbol = 1; + + if (coff_sects[i]->comdat_selection != IMAGE_COMDAT_SELECT_ASSOCIATIVE && + 0 != strcmp(coff_sects[i]->comdat_name, name)) { + coff_defcomdatname(coff_sects[i]->comdat_name, segment); + } + } + break; + } + } + + pos = strslen + 4; + if (strlen(name) > 8) { + size_t nlen = strlen(name)+1; + saa_wbytes(coff_strs, name, nlen); + strslen += nlen; + } else + pos = -1; + + sym = saa_wstruct(coff_syms); + + sym->strpos = pos; + sym->namlen = strlen(name); + if (pos == -1) + strcpy(sym->name, name); + sym->is_global = !!is_global; + sym->type = 0; /* Default to T_NULL (no type) */ + sym->section = section; + if (!sym->section) + sym->is_global = true; + if (is_global == 2) + sym->value = offset; + else + sym->value = (sym->section == 0 ? 0 : offset); + + /* + * define the references from external-symbol segment numbers + * to these symbol records. + */ + if (sym->section == 0) + bsym = raa_write(bsym, segment, coff_nsyms); + + if (segment != NO_SEG) + symval = raa_write(symval, segment, sym->section ? 0 : sym->value); + + coff_nsyms++; +} + +static int32_t coff_add_reloc(struct coff_Section *sect, int32_t segment, + int16_t type) +{ + struct coff_Reloc *r; + + r = *sect->tail = nasm_malloc(sizeof(struct coff_Reloc)); + sect->tail = &r->next; + r->next = NULL; + + r->address = sect->len; + if (segment == NO_SEG) { + r->symbol = 0, r->symbase = ABS_SYMBOL; + } else { + int i; + r->symbase = REAL_SYMBOLS; + for (i = 0; i < coff_nsects; i++) { + if (segment == coff_sects[i]->index) { + r->symbol = i * 2; + r->symbase = SECT_SYMBOLS; + break; + } + } + if (r->symbase == REAL_SYMBOLS) + r->symbol = raa_read(bsym, segment); + } + r->type = type; + + sect->nrelocs++; + + /* + * Return the fixup for standard COFF common variables. + */ + if (r->symbase == REAL_SYMBOLS && !(win32 | win64)) + return raa_read(symval, segment); + + return 0; +} + +static void coff_out(int32_t segto, const void *data, + enum out_type type, uint64_t size, + int32_t segment, int32_t wrt) +{ + struct coff_Section *s; + uint8_t mydata[8], *p; + int i; + + if (wrt != NO_SEG && !win64) { + wrt = NO_SEG; /* continue to do _something_ */ + nasm_nonfatal("WRT not supported by COFF output formats"); + } + + s = NULL; + for (i = 0; i < coff_nsects; i++) { + if (segto == coff_sects[i]->index) { + s = coff_sects[i]; + break; + } + } + if (!s) { + int tempint; /* ignored */ + if (segto != coff_section_names(".text", &tempint)) + nasm_panic("strange segment conditions in COFF driver"); + else + s = coff_sects[coff_nsects - 1]; + } + + /* magically default to 'wrt ..imagebase' in .pdata and .xdata */ + if (win64 && wrt == NO_SEG) { + if (!strcmp(s->name,".pdata") || !strcmp(s->name,".xdata")) + wrt = imagebase_sect; + } + + if (!s->data && type != OUT_RESERVE) { + nasm_warn(WARN_OTHER, "attempt to initialize memory in" + " BSS section `%s': ignored", s->name); + s->len += realsize(type, size); + return; + } + + memset(mydata, 0, sizeof(mydata)); + + if (dfmt && dfmt->debug_output) { + struct coff_DebugInfo dinfo; + dinfo.segto = segto; + dinfo.seg = segment; + dinfo.section = s; + + if (type == OUT_ADDRESS) + dinfo.size = abs((int)size); + else + dinfo.size = realsize(type, size); + + dfmt->debug_output(type, &dinfo); + } + + if (type == OUT_RESERVE) { + if (s->data) { + nasm_warn(WARN_ZEROING, "uninitialised space declared in" + " non-BSS section `%s': zeroing", s->name); + coff_sect_write(s, NULL, size); + } else + s->len += size; + } else if (type == OUT_RAWDATA) { + coff_sect_write(s, data, size); + } else if (type == OUT_ADDRESS) { + int asize = abs((int)size); + if (!win64) { + if (asize != 4 && (segment != NO_SEG || wrt != NO_SEG)) { + nasm_nonfatal("COFF format does not support non-32-bit" + " relocations"); + } else { + int32_t fix = 0; + if (segment != NO_SEG || wrt != NO_SEG) { + if (wrt != NO_SEG) { + nasm_nonfatal("COFF format does not support WRT types"); + } else if (segment % 2) { + nasm_nonfatal("COFF format does not support" + " segment base references"); + } else + fix = coff_add_reloc(s, segment, IMAGE_REL_I386_DIR32); + } + p = mydata; + WRITELONG(p, *(int64_t *)data + fix); + coff_sect_write(s, mydata, asize); + } + } else { + int32_t fix = 0; + p = mydata; + if (asize == 8) { + if (wrt == imagebase_sect) { + nasm_nonfatal("operand size mismatch: 'wrt " + WRT_IMAGEBASE "' is a 32-bit operand"); + } + fix = coff_add_reloc(s, segment, IMAGE_REL_AMD64_ADDR64); + WRITEDLONG(p, *(int64_t *)data + fix); + coff_sect_write(s, mydata, asize); + } else { + fix = coff_add_reloc(s, segment, + wrt == imagebase_sect ? IMAGE_REL_AMD64_ADDR32NB: + IMAGE_REL_AMD64_ADDR32); + WRITELONG(p, *(int64_t *)data + fix); + coff_sect_write(s, mydata, asize); + } + } + } else if (type == OUT_REL2ADR) { + nasm_nonfatal("COFF format does not support 16-bit relocations"); + } else if (type == OUT_REL4ADR) { + if (segment == segto && !(win64)) /* Acceptable for RIP-relative */ + nasm_panic("intra-segment OUT_REL4ADR"); + else if (segment == NO_SEG && win32) + nasm_nonfatal("Win32 COFF does not correctly support" + " relative references to absolute addresses"); + else { + int32_t fix = 0; + if (segment != NO_SEG && segment % 2) { + nasm_nonfatal("COFF format does not support" + " segment base references"); + } else + fix = coff_add_reloc(s, segment, + win64 ? IMAGE_REL_AMD64_REL32 : IMAGE_REL_I386_REL32); + p = mydata; + if (win32 | win64) { + WRITELONG(p, *(int64_t *)data + 4 - size + fix); + } else { + WRITELONG(p, *(int64_t *)data - (size + s->len) + fix); + } + coff_sect_write(s, mydata, 4L); + } + + } +} + +static void coff_sect_write(struct coff_Section *sect, + const uint8_t *data, uint32_t len) +{ + saa_wbytes(sect->data, data, len); + sect->len += len; +} + +typedef struct tagString { + struct tagString *next; + int len; + char *String; +} STRING; + +#define EXPORT_SECTION_NAME ".drectve" +#define EXPORT_SECTION_FLAGS INFO_FLAGS +/* + * #define EXPORT_SECTION_NAME ".text" + * #define EXPORT_SECTION_FLAGS TEXT_FLAGS + */ + +static STRING *Exports = NULL; +static struct coff_Section *directive_sec; +static void AddExport(char *name) +{ + STRING *rvp = Exports, *newS; + + newS = (STRING *) nasm_malloc(sizeof(STRING)); + newS->len = strlen(name); + newS->next = NULL; + newS->String = (char *)nasm_malloc(newS->len + 1); + strcpy(newS->String, name); + if (rvp == NULL) { + int i; + + for (i = 0; i < coff_nsects; i++) { + if (!strcmp(EXPORT_SECTION_NAME, coff_sects[i]->name)) + break; + } + + if (i == coff_nsects) + i = coff_make_section(EXPORT_SECTION_NAME, EXPORT_SECTION_FLAGS); + + directive_sec = coff_sects[i]; + Exports = newS; + } else { + while (rvp->next) { + if (!strcmp(rvp->String, name)) + return; + rvp = rvp->next; + } + rvp->next = newS; + } +} + +static void BuildExportTable(STRING **rvp) +{ + STRING *p, *t; + + if (!rvp || !*rvp) + return; + + list_for_each_safe(p, t, *rvp) { + coff_sect_write(directive_sec, (uint8_t *)"-export:", 8); + coff_sect_write(directive_sec, (uint8_t *)p->String, p->len); + coff_sect_write(directive_sec, (uint8_t *)" ", 1); + nasm_free(p->String); + nasm_free(p); + } + + *rvp = NULL; +} + +static void coff_defcomdatname(char *name, int32_t segment) +{ + coff_deflabel(name, segment, 0, 1, NULL); +} + +static enum directive_result +coff_directives(enum directive directive, char *value) +{ + switch (directive) { + case D_EXPORT: + { + char *q, *name; + + /* + * XXX: pass_first() is really wrong here, but AddExport() + * needs to be modified to handle duplicate calls for the + * same value in order to change that. The right thing to do + * is probably to mark a label as an export in the label + * structure, in case the label doesn't actually exist. + */ + if (!pass_first()) + return DIRR_OK; /* ignore in pass two */ + name = q = value; + while (*q && !nasm_isspace(*q)) + q++; + if (nasm_isspace(*q)) { + *q++ = '\0'; + while (*q && nasm_isspace(*q)) + q++; + } + + if (!*name) { + nasm_nonfatal("`export' directive requires export name"); + return DIRR_ERROR; + } + if (*q) { + nasm_nonfatal("unrecognized export qualifier `%s'", q); + return DIRR_ERROR; + } + AddExport(name); + return DIRR_OK; + } + case D_SAFESEH: + { + static int sxseg=-1; + int i; + + if (!win32) /* Only applicable for -f win32 */ + return 0; + + if (sxseg == -1) { + for (i = 0; i < coff_nsects; i++) + if (!strcmp(".sxdata",coff_sects[i]->name)) + break; + if (i == coff_nsects) + sxseg = coff_make_section(".sxdata", IMAGE_SCN_LNK_INFO); + else + sxseg = i; + } + /* + * pass_final() is the only time when the full set of symbols are + * guaranteed to be present as it is the final output pass. + */ + if (pass_final()) { + uint32_t n; + saa_rewind(coff_syms); + for (n = 0; n < coff_nsyms; n++) { + struct coff_Symbol *sym = saa_rstruct(coff_syms); + bool equals; + + /* + * sym->strpos is biased by 4, because symbol + * table is prefixed with table length + */ + if (sym->strpos >=4) { + char *name = nasm_malloc(sym->namlen+1); + saa_fread(coff_strs, sym->strpos-4, name, sym->namlen); + name[sym->namlen] = '\0'; + equals = !strcmp(value,name); + nasm_free(name); + } else { + equals = !strcmp(value,sym->name); + } + + if (equals) { + /* + * this value arithmetic effectively reflects + * initsym in coff_write(): 2 for file, 1 for + * .absolute and two per each section + */ + unsigned char value[4],*p=value; + WRITELONG(p,n + 2 + 1 + coff_nsects*2); + coff_sect_write(coff_sects[sxseg],value,4); + sym->type = 0x20; + break; + } + } + if (n == coff_nsyms) { + nasm_nonfatal("`safeseh' directive requires valid symbol"); + return DIRR_ERROR; + } + } + return DIRR_OK; + } + default: + return DIRR_UNKNOWN; + } +} + +/* handle relocations storm, valid for win32/64 only */ +static inline void coff_adjust_relocs(struct coff_Section *s) +{ + if (s->nrelocs < IMAGE_SCN_MAX_RELOC) + return; +#ifdef OF_COFF + else + { + if (ofmt == &of_coff) + nasm_fatal("Too many relocations (%d) for section `%s'", + s->nrelocs, s->name); + } +#endif + + s->flags |= IMAGE_SCN_LNK_NRELOC_OVFL; + s->nrelocs++; +} + +/* + * Make sure we satisfy all section alignment requirements and put the + * resulting alignment flags into the flags value in the header. If + * no user-specified alignment is given, use the default for the + * section type; then either way round up to alignment specified by + * sectalign directives. + */ +static inline void coff_adjust_alignment(struct coff_Section *s) +{ + uint32_t align_flags = s->align_flags; + + if (!align_flags) { + /* No user-specified alignment, use default for partition type */ + align_flags = s->flags & IMAGE_SCN_ALIGN_MASK; + } + + if (align_flags < s->sectalign_flags) + align_flags = s->sectalign_flags; + + s->flags = (s->flags & ~IMAGE_SCN_ALIGN_MASK) | align_flags; +} + +static void coff_write(void) +{ + int32_t pos, sympos, vsize; + int i; + + /* fill in the .drectve section with -export's */ + BuildExportTable(&Exports); + + if (win32) { + /* add default value for @feat.00, this allows to 'link /safeseh' */ + uint32_t n; + + saa_rewind(coff_syms); + for (n = 0; n < coff_nsyms; n++) { + struct coff_Symbol *sym = saa_rstruct(coff_syms); + if (sym->strpos == -1 && !strcmp("@feat.00",sym->name)) + break; + } + if (n == coff_nsyms) + coff_deflabel("@feat.00", NO_SEG, 1, 0, NULL); + } + + /* + * Check all comdat sections + */ + for (i = 0; i < coff_nsects; i++) + if (coff_sects[i]->comdat_name) { + if (!coff_sects[i]->comdat_symbol && + coff_sects[i]->comdat_selection != IMAGE_COMDAT_SELECT_ASSOCIATIVE) { + /* + * This section doesn't have its comdat symbol defined; do it + */ + coff_defcomdatname(coff_sects[i]->comdat_name, coff_sects[i]->index); + } + if (!coff_sects[i]->comdat_selection) { + /* + * This is a placeholder section that wasn't properly defined + */ + nasm_nonfatal("`comdat' associate with symbol `%s` wasn't defined", + coff_sects[i]->comdat_name); + } + } + + /* + * Work out how big the file will get. + * Calculate the start of the `real' symbols at the same time. + * Check for massive relocations. + */ + pos = 0x14 + 0x28 * coff_nsects; + initsym = 3; /* two for the file, one absolute */ + for (i = 0; i < coff_nsects; i++) { + coff_adjust_alignment(coff_sects[i]); + if (coff_sects[i]->data) { + coff_adjust_relocs(coff_sects[i]); + coff_sects[i]->pos = pos; + pos += coff_sects[i]->len; + coff_sects[i]->relpos = pos; + pos += 10 * coff_sects[i]->nrelocs; + } else + coff_sects[i]->pos = coff_sects[i]->relpos = 0L; + initsym += 2; /* two for each section */ + } + sympos = pos; + + /* + * Output the COFF header. + */ + if (win64) + i = IMAGE_FILE_MACHINE_AMD64; + else + i = IMAGE_FILE_MACHINE_I386; + fwriteint16_t(i, ofile); /* machine type */ + fwriteint16_t(coff_nsects, ofile); /* number of sections */ + fwriteint32_t(posix_timestamp(), ofile); /* timestamp */ + fwriteint32_t(sympos, ofile); + fwriteint32_t(coff_nsyms + initsym, ofile); + fwriteint16_t(0, ofile); /* no optional header */ + /* Flags: 32-bit, no line numbers. Win32 doesn't even bother with them. */ + fwriteint16_t((win32 | win64) ? 0 : 0x104, ofile); + + /* + * Output the section headers. + */ + vsize = 0L; + for (i = 0; i < coff_nsects; i++) { + coff_section_header(coff_sects[i]->name, coff_sects[i]->namepos, vsize, coff_sects[i]->len, + coff_sects[i]->pos, coff_sects[i]->relpos, + coff_sects[i]->nrelocs, coff_sects[i]->flags); + vsize += coff_sects[i]->len; + } + + /* + * Output the sections and their relocations. + */ + for (i = 0; i < coff_nsects; i++) + if (coff_sects[i]->data) { + saa_fpwrite(coff_sects[i]->data, ofile); + coff_write_relocs(coff_sects[i]); + + if (coff_sects[i]->flags & IMAGE_SCN_LNK_COMDAT) { + /* + * Checksum the section data + */ + uint32_t checksum = 0; + const char *data; + size_t len; + + saa_rewind(coff_sects[i]->data); + while (len = coff_sects[i]->data->datalen, + (data = saa_rbytes(coff_sects[i]->data, &len)) != NULL) + checksum = crc32b(checksum, data, len); + + coff_sects[i]->checksum = checksum; + } + } + + /* + * Output the symbol and string tables. + */ + coff_write_symbols(); + fwriteint32_t(strslen + 4, ofile); /* length includes length count */ + saa_fpwrite(coff_strs, ofile); +} + +static void coff_section_header(char *name, int32_t namepos, int32_t vsize, + int32_t datalen, int32_t datapos, + int32_t relpos, int nrelocs, int32_t flags) +{ + char padname[8]; + + (void)vsize; + + if (namepos == -1) { + strncpy(padname, name, 8); + nasm_write(padname, 8, ofile); + } else { + /* + * If name is longer than 8 bytes, write '/' followed + * by offset into the strings table represented as + * decimal number. + */ + namepos = namepos % 100000000; + padname[0] = '/'; + padname[1] = '0' + (namepos / 1000000); + namepos = namepos % 1000000; + padname[2] = '0' + (namepos / 100000); + namepos = namepos % 100000; + padname[3] = '0' + (namepos / 10000); + namepos = namepos % 10000; + padname[4] = '0' + (namepos / 1000); + namepos = namepos % 1000; + padname[5] = '0' + (namepos / 100); + namepos = namepos % 100; + padname[6] = '0' + (namepos / 10); + namepos = namepos % 10; + padname[7] = '0' + (namepos); + nasm_write(padname, 8, ofile); + } + + fwriteint32_t(0, ofile); /* Virtual size field - set to 0 or vsize */ + fwriteint32_t(0L, ofile); /* RVA/offset - we ignore */ + fwriteint32_t(datalen, ofile); + fwriteint32_t(datapos, ofile); + fwriteint32_t(relpos, ofile); + fwriteint32_t(0L, ofile); /* no line numbers - we don't do 'em */ + + /* + * a special case -- if there are too many relocs + * we have to put IMAGE_SCN_MAX_RELOC here and write + * the real relocs number into VirtualAddress of first + * relocation + */ + if (flags & IMAGE_SCN_LNK_NRELOC_OVFL) + fwriteint16_t(IMAGE_SCN_MAX_RELOC, ofile); + else + fwriteint16_t(nrelocs, ofile); + + fwriteint16_t(0, ofile); /* again, no line numbers */ + fwriteint32_t(flags, ofile); +} + +static void coff_write_relocs(struct coff_Section *s) +{ + struct coff_Reloc *r; + + /* a real number of relocations if needed */ + if (s->flags & IMAGE_SCN_LNK_NRELOC_OVFL) { + fwriteint32_t(s->nrelocs, ofile); + fwriteint32_t(0, ofile); + fwriteint16_t(0, ofile); + } + + for (r = s->head; r; r = r->next) { + fwriteint32_t(r->address, ofile); + fwriteint32_t(r->symbol + (r->symbase == REAL_SYMBOLS ? initsym : + r->symbase == ABS_SYMBOL ? initsym - 1 : + r->symbase == SECT_SYMBOLS ? 2 : 0), + ofile); + fwriteint16_t(r->type, ofile); + } +} + +static void coff_symbol(char *name, int32_t strpos, int32_t value, + int section, int type, int storageclass, int aux) +{ + char padname[8]; + + if (name) { + strncpy(padname, name, 8); + nasm_write(padname, 8, ofile); + } else { + fwriteint32_t(0, ofile); + fwriteint32_t(strpos, ofile); + } + + fwriteint32_t(value, ofile); + fwriteint16_t(section, ofile); + fwriteint16_t(type, ofile); + + fputc(storageclass, ofile); + fputc(aux, ofile); +} + +static void coff_write_symbols(void) +{ + char filename[18]; + uint32_t i; + + /* + * The `.file' record, and the file name auxiliary record. + */ + coff_symbol(".file", 0L, 0L, -2, 0, 0x67, 1); + if (reproducible) + memset(filename, 0, 18); + else + strncpy(filename, inname, 18); + nasm_write(filename, 18, ofile); + + /* + * The section records, with their auxiliaries. + */ + memset(filename, 0, 18); /* useful zeroed buffer */ + + for (i = 0; i < (uint32_t) coff_nsects; i++) { + coff_symbol(coff_sects[i]->name, 0L, 0L, i + 1, 0, 3, 1); + fwriteint32_t(coff_sects[i]->len, ofile); + fwriteint16_t(coff_sects[i]->nrelocs,ofile); + if (coff_sects[i]->flags & IMAGE_SCN_LNK_COMDAT) { + fwriteint16_t(0, ofile); + fwriteint32_t(coff_sects[i]->checksum, ofile); + fwriteint16_t(coff_sects[i]->comdat_associated, ofile); + fputc(coff_sects[i]->comdat_selection, ofile); + nasm_write(filename, 3, ofile); + } + else + nasm_write(filename, 12, ofile); + } + + /* + * The absolute symbol, for relative-to-absolute relocations. + */ + coff_symbol(".absolut", 0L, 0L, -1, 0, 3, 0); + + /* + * The real symbols. + */ + saa_rewind(coff_syms); + for (i = 0; i < coff_nsyms; i++) { + struct coff_Symbol *sym = saa_rstruct(coff_syms); + coff_symbol(sym->strpos == -1 ? sym->name : NULL, + sym->strpos, sym->value, sym->section, + sym->type, sym->is_global ? 2 : 3, 0); + } +} + +static void coff_sectalign(int32_t seg, unsigned int value) +{ + struct coff_Section *s = NULL; + uint32_t flags; + int i; + + for (i = 0; i < coff_nsects; i++) { + if (coff_sects[i]->index == seg) { + s = coff_sects[i]; + break; + } + } + + if (!s || !is_power2(value)) + return; + + if (value > COFF_MAX_ALIGNMENT) + value = COFF_MAX_ALIGNMENT; /* Do our best... */ + + flags = coff_sectalign_flags(value); + if (flags > s->sectalign_flags) + s->sectalign_flags = flags; +} + +extern macros_t coff_stdmac[]; + +#endif /* defined(OF_COFF) || defined(OF_WIN32) */ + +#ifdef OF_COFF + +static const struct pragma_facility coff_pragma_list[] = { + { "coff", NULL }, + { NULL, NULL } +}; + +const struct ofmt of_coff = { + "COFF (i386) (DJGPP, some Unix variants)", + "coff", + ".o", + 0, + 32, + null_debug_arr, + &null_debug_form, + coff_stdmac, + coff_std_init, + null_reset, + nasm_do_legacy_output, + coff_out, + coff_deflabel, + coff_section_names, + NULL, + coff_sectalign, + null_segbase, + coff_directives, + coff_cleanup, + coff_pragma_list +}; + +#endif + + +#ifdef OF_WIN32 + +static const struct pragma_facility coff_win_pragma_list[] = { + { "win", NULL }, + { "coff", NULL }, + { NULL, NULL } +}; + +extern const struct dfmt df_cv8; +static const struct dfmt * const win32_debug_arr[2] = { &df_cv8, NULL }; + +const struct ofmt of_win32 = { + "Microsoft extended COFF for Win32 (i386)", + "win32", + ".obj", + 0, + 32, + win32_debug_arr, + &df_cv8, + coff_stdmac, + coff_win32_init, + null_reset, + nasm_do_legacy_output, + coff_out, + coff_deflabel, + coff_section_names, + NULL, + coff_sectalign, + null_segbase, + coff_directives, + coff_cleanup, + coff_win_pragma_list +}; + +#endif + +#ifdef OF_WIN64 + +static const struct dfmt * const win64_debug_arr[2] = { &df_cv8, NULL }; + +const struct ofmt of_win64 = { + "Microsoft extended COFF for Win64 (x86-64)", + "win64", + ".obj", + 0, + 64, + win64_debug_arr, + &df_cv8, + coff_stdmac, + coff_win64_init, + null_reset, + nasm_do_legacy_output, + coff_out, + coff_deflabel, + coff_section_names, + NULL, + coff_sectalign, + null_segbase, + coff_directives, + coff_cleanup, + coff_win_pragma_list +}; + +#endif diff --git a/vere/ext/nasm/output/outcoff.mac b/vere/ext/nasm/output/outcoff.mac new file mode 100644 index 0000000..8d338ef --- /dev/null +++ b/vere/ext/nasm/output/outcoff.mac @@ -0,0 +1,43 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2009 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +OUT: coff win32 win64 +%define __?SECT?__ [section .text] +%macro __?NASM_CDecl?__ 1 +%endmacro +%imacro export 1+.nolist +[export %1] +%endmacro +%imacro safeseh 1.nolist +[safeseh %1] +%endmacro diff --git a/vere/ext/nasm/output/outdbg.c b/vere/ext/nasm/output/outdbg.c new file mode 100644 index 0000000..e7a9a4e --- /dev/null +++ b/vere/ext/nasm/output/outdbg.c @@ -0,0 +1,576 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * outdbg.c output routines for the Netwide Assembler to produce + * a debugging trace + */ + +#include "compiler.h" + +#include "nctype.h" +#include + +#include "nasm.h" +#include "nasmlib.h" +#include "outform.h" +#include "outlib.h" +#include "insns.h" +#include "dbginfo.h" + +#ifdef OF_DBG + +struct Section { + struct Section *next; + int32_t number; + char *name; +} *dbgsect; + +static unsigned long dbg_max_data_dump = 128; +static bool section_labels = true; +static bool subsections_via_symbols = false; +static int32_t init_seg; + +const struct ofmt of_dbg; +static void dbg_init(void) +{ + dbgsect = NULL; + fprintf(ofile, "NASM Output format debug dump\n"); + fprintf(ofile, "input file = %s\n", inname); + fprintf(ofile, "output file = %s\n", outname); + init_seg = seg_alloc(); +} + +static void dbg_reset(void) +{ + fprintf(ofile, "*** pass reset: pass = %"PRId64" (%s)\n", + pass_count(), pass_type_name()); +} + +static void dbg_cleanup(void) +{ + dfmt->cleanup(); + while (dbgsect) { + struct Section *tmp = dbgsect; + dbgsect = dbgsect->next; + nasm_free(tmp->name); + nasm_free(tmp); + } +} + +static int32_t dbg_add_section(char *name, int *bits, const char *whatwecallit) +{ + int seg; + + /* + * We must have an initial default: let's make it 16. + */ + if (!name) + *bits = 16; + + if (!name) { + fprintf(ofile, "section_name on init: returning %d\n", init_seg); + seg = init_seg; + } else { + int n = strcspn(name, " \t"); + char *sname = nasm_strndup(name, n); + char *tail = nasm_skip_spaces(name+n); + struct Section *s; + + seg = NO_SEG; + for (s = dbgsect; s; s = s->next) + if (!strcmp(s->name, sname)) + seg = s->number; + + if (seg == NO_SEG) { + s = nasm_malloc(sizeof(*s)); + s->name = sname; + s->number = seg = seg_alloc(); + s->next = dbgsect; + dbgsect = s; + fprintf(ofile, "%s %s (%s) pass %"PRId64" (%s) : returning %d\n", + whatwecallit, name, tail, pass_count(), pass_type_name(), seg); + + if (section_labels) + backend_label(s->name, s->number + 1, 0); + } + } + return seg; +} + +static int32_t dbg_section_names(char *name, int *bits) +{ + return dbg_add_section(name, bits, "section_names"); +} + +static int32_t dbg_herelabel(const char *name, enum label_type type, + int32_t oldseg, int32_t *subsection, + bool *copyoffset) +{ + int32_t newseg = oldseg; + + if (subsections_via_symbols && type != LBL_LOCAL) { + newseg = *subsection; + if (newseg == NO_SEG) { + newseg = *subsection = seg_alloc(); + *copyoffset = true; /* Minic MachO for now */ + } + } + fprintf(ofile, "herelabel %s type %d (seg %08x) -> %08x\n", + name, type, oldseg, newseg); + + return newseg; +} + +static void dbg_deflabel(char *name, int32_t segment, int64_t offset, + int is_global, char *special) +{ + fprintf(ofile, "deflabel %s := %08"PRIx32":%016"PRIx64" %s (%d)%s%s\n", + name, segment, offset, + is_global == 2 ? "common" : is_global ? "global" : "local", + is_global, special ? ": " : "", special); +} + +static const char *out_type(enum out_type type) +{ + static const char *out_types[] = { + "rawdata", + "reserve", + "zerodata", + "address", + "reladdr", + "segment" + }; + static char invalid_buf[64]; + + if (type >= sizeof(out_types)/sizeof(out_types[0])) { + sprintf(invalid_buf, "[invalid type %d]", type); + return invalid_buf; + } + + return out_types[type]; +} + +static const char *out_flags(enum out_flags flags) +{ + static const char *out_flags[] = { + "signed", + "unsigned" + }; + static char flags_buf[1024]; + unsigned long flv = flags; + size_t n; + size_t left = sizeof flags_buf - 1; + char *p = flags_buf; + unsigned int i; + + for (i = 0; flv; flv >>= 1, i++) { + if (flv & 1) { + if (i < ARRAY_SIZE(out_flags)) + n = snprintf(p, left, "%s,", out_flags[i]); + else + n = snprintf(p, left, "%u,", i); + if (n >= left) + break; + left -= n; + p += n; + } + } + if (p > flags_buf) + p--; /* Delete final comma */ + *p = '\0'; + + return flags_buf; +} + +static void dbg_out(const struct out_data *data) +{ + fprintf(ofile, + "out to %"PRIx32":%"PRIx64" %s(%s) bits %d insoffs %d/%d " + "size %"PRIu64, + data->segment, data->offset, + out_type(data->type), out_flags(data->flags), + data->bits, data->insoffs, data->inslen, data->size); + if (data->itemp) { + fprintf(ofile, " ins %s(%d)", + nasm_insn_names[data->itemp->opcode], data->itemp->operands); + } else { + fprintf(ofile, " no ins (plain data)"); + } + + if (data->type == OUT_ADDRESS || data->type == OUT_RELADDR || + data->type == OUT_SEGMENT) { + fprintf(ofile, " target %"PRIx32":%"PRIx64, + data->tsegment, data->toffset); + if (data->twrt != NO_SEG) + fprintf(ofile, " wrt %"PRIx32, data->twrt); + } + if (data->type == OUT_RELADDR) + fprintf(ofile, " relbase %"PRIx64, data->relbase); + + putc('\n', ofile); + + if (data->type == OUT_RAWDATA) { + if ((size_t)data->size != data->size) { + fprintf(ofile, " data: \n"); + } else if (!data->data) { + fprintf(ofile, " data: \n"); + } else if (dbg_max_data_dump != -1UL && + data->size > dbg_max_data_dump) { + fprintf(ofile, " data: <%"PRIu64" bytes>\n", data->size); + } else { + size_t i, j; + const uint8_t *bytes = data->data; + for (i = 0; i < data->size; i += 16) { + fprintf(ofile, " data:"); + for (j = 0; j < 16; j++) { + if (i+j >= data->size) + fprintf(ofile, " "); + else + fprintf(ofile, "%c%02x", + (j == 8) ? '-' : ' ', bytes[i+j]); + } + fprintf(ofile," "); + for (j = 0; j < 16; j++) { + if (i+j >= data->size) { + putc(' ', ofile); + } else { + if (bytes[i+j] >= 32 && bytes[i+j] <= 126) + putc(bytes[i+j], ofile); + else + putc('.', ofile); + } + } + putc('\n', ofile); + } + } + } + + /* This is probably the only place were we'll call this this way... */ + nasm_do_legacy_output(data); +} + +static void dbg_legacy_out(int32_t segto, const void *data, + enum out_type type, uint64_t size, + int32_t segment, int32_t wrt) +{ + int32_t ldata; + + if (type == OUT_ADDRESS) + fprintf(ofile, " legacy: out to %"PRIx32", len = %d: ", + segto, (int)abs((int)size)); + else + fprintf(ofile, " legacy: out to %"PRIx32", len = %"PRId64" (0x%"PRIx64"): ", + segto, (int64_t)size, size); + + switch (type) { + case OUT_RESERVE: + fprintf(ofile, "reserved.\n"); + break; + case OUT_RAWDATA: + fprintf(ofile, "rawdata\n"); /* Already have a data dump */ + break; + case OUT_ADDRESS: + ldata = *(int64_t *)data; + fprintf(ofile, "addr %08"PRIx32" (seg %08"PRIx32", wrt %08"PRIx32")\n", + ldata, segment, wrt); + break; + case OUT_REL1ADR: + fprintf(ofile, "rel1adr %02"PRIx8" (seg %08"PRIx32")\n", + (uint8_t)*(int64_t *)data, segment); + break; + case OUT_REL2ADR: + fprintf(ofile, "rel2adr %04"PRIx16" (seg %08"PRIx32")\n", + (uint16_t)*(int64_t *)data, segment); + break; + case OUT_REL4ADR: + fprintf(ofile, "rel4adr %08"PRIx32" (seg %08"PRIx32")\n", + (uint32_t)*(int64_t *)data, + segment); + break; + case OUT_REL8ADR: + fprintf(ofile, "rel8adr %016"PRIx64" (seg %08"PRIx32")\n", + (uint64_t)*(int64_t *)data, segment); + break; + default: + fprintf(ofile, "unknown\n"); + break; + } +} + +static void dbg_sectalign(int32_t seg, unsigned int value) +{ + fprintf(ofile, "set alignment (%d) for segment (%u)\n", + seg, value); +} + +static enum directive_result +dbg_directive(enum directive directive, char *value) +{ + switch (directive) { + /* + * The .obj GROUP directive is nontrivial to emulate in a macro. + * It effectively creates a "pseudo-section" containing the first + * space-separated argument; the rest we ignore. + */ + case D_GROUP: + { + int dummy; + dbg_add_section(value, &dummy, "directive:group"); + break; + } + + default: + break; + } + + fprintf(ofile, "directive [%s] value [%s] pass %"PRId64" (%s)\n", + directive_dname(directive), value, pass_count(), pass_type_name()); + return DIRR_OK; +} + +static enum directive_result +dbg_pragma(const struct pragma *pragma); + +static const struct pragma_facility dbg_pragma_list[] = { + { NULL, dbg_pragma } +}; + +static enum directive_result +dbg_pragma(const struct pragma *pragma) +{ + fprintf(ofile, "pragma %s(%s) %s[%s] %s\n", + pragma->facility_name, + pragma->facility->name ? pragma->facility->name : "", + pragma->opname, directive_dname(pragma->opcode), + pragma->tail); + + if (pragma->facility == &dbg_pragma_list[0]) { + switch (pragma->opcode) { + case D_MAXDUMP: + if (!nasm_stricmp(pragma->tail, "unlimited")) { + dbg_max_data_dump = -1UL; + } else { + char *ep; + unsigned long arg; + + errno = 0; + arg = strtoul(pragma->tail, &ep, 0); + if (errno || *nasm_skip_spaces(ep)) { + nasm_warn(WARN_PRAGMA_BAD | ERR_PASS2, + "invalid %%pragma dbg maxdump argument"); + return DIRR_ERROR; + } else { + dbg_max_data_dump = arg; + } + } + break; + case D_NOSECLABELS: + section_labels = false; + break; + case D_SUBSECTIONS_VIA_SYMBOLS: + subsections_via_symbols = true; + break; + default: + break; + } + } + return DIRR_OK; +} + +static const char * const types[] = { + "unknown", "label", "byte", "word", "dword", "float", "qword", "tbyte" +}; +static void dbgdbg_init(void) +{ + fprintf(ofile, "dbg init: debug information enabled\n"); +} +static void dbgdbg_cleanup(void) +{ + fprintf(ofile, "dbg cleanup: called\n"); +} + +static void dbgdbg_linnum(const char *lnfname, int32_t lineno, int32_t segto) +{ + fprintf(ofile, "dbg linenum: %s(%"PRId32") segment %"PRIx32"\n", + lnfname, lineno, segto); +} +static void dbgdbg_deflabel(char *name, int32_t segment, + int64_t offset, int is_global, char *special) +{ + fprintf(ofile, "dbg deflabel: %s = %08"PRIx32":%016"PRIx64" %s (%d)%s%s\n", + name, + segment, offset, + is_global == 2 ? "common" : is_global ? "global" : "local", + is_global, special ? ": " : "", special); +} + +static void dbgdbg_debug_smacros(bool define, const char *def) +{ + fprintf(ofile, "dbg define: %s [%s]\n", + define ? "define " : "undef ", def); +} +static void dbgdbg_debug_include(bool start, struct src_location outer, + struct src_location inner) +{ + fprintf(ofile, "dbg include: %s include: %s:%"PRId32" %s %s:%"PRId32"\n", + start ? "start" : "end", outer.filename, outer.lineno, + start ? "->" : "<-", inner.filename, inner.lineno); +} + +static void dbgdbg_output(int output_type, void *param) +{ + (void)output_type; + (void)param; + fprintf(ofile, "dbg output: called\n"); +} +static void dbgdbg_typevalue(int32_t type) +{ + fprintf(ofile, "dbg typevalue: %s(%"PRIX32")\n", + types[TYM_TYPE(type) >> 3], TYM_ELEMENTS(type)); +} + +static void +write_macro_inv_list(const struct debug_macro_inv *inv, int level) +{ + int indent = (level+1) << 1; + + while (inv) { + const struct rbtree *rb; + + fprintf(ofile, "%*smacro: %s, invoked at %s:%"PRId32 + ", %"PRIu32" ranges\n", + indent, "", inv->def->name, inv->where.filename, + inv->where.lineno, inv->naddr); + + for (rb = rb_first(inv->addr.tree); rb; rb = rb_next(rb)) { + const struct debug_macro_addr *addr = + (const struct debug_macro_addr *)rb; + if (!addr->len) { + fprintf(ofile, "%*s%08"PRIx32": empty\n", + indent+2, "", debug_macro_seg(addr)); + } else { + fprintf(ofile, + "%*s%08"PRIx32":[%016"PRIx64" ... %016"PRIx64"] " + "len %"PRIu64"\n", + indent+2, "", + debug_macro_seg(addr), addr->start, + addr->start + addr->len - 1, addr->len); + } + } + + write_macro_inv_list(inv->down.l, level+1); + inv = inv->next; + } +} + +static void dbgdbg_debug_mmacros(const struct debug_macro_info *dmi) +{ + const struct debug_macro_def *def; + + fprintf(ofile, "dbg macros: %llu macros defined\n", + (unsigned long long)dmi->def.n); + + fprintf(ofile, " macro definitions:\n"); + list_for_each(def, dmi->def.l) { + fprintf(ofile, " macro: %s, count %llu, defined at %s:%"PRId32"\n", + def->name, (unsigned long long)def->ninv, + def->where.filename, def->where.lineno); + } + + fprintf(ofile, " macro invocations:\n"); + write_macro_inv_list(dmi->inv.l, 1); + + fprintf(ofile, " end macro debug information\n"); +} + +static void dbgdbg_debug_directive(const char *id, const char *value) +{ + fprintf(ofile, "dbg directive: id [%s] value [%s] pass %"PRId64" (%s)\n", + id, value, pass_count(), pass_type_name()); +} + + +static const struct pragma_facility dbgdbg_pragma_list[] = { + { "dbgdbg", dbg_pragma }, + { NULL, dbg_pragma } /* Won't trigger, "debug" is a reserved ns */ +}; + +static const struct dfmt debug_debug_form = { + "Trace of all info passed to debug stage", + "debug", + dbgdbg_init, + dbgdbg_linnum, + dbgdbg_deflabel, + dbgdbg_debug_smacros, + dbgdbg_debug_include, + dbgdbg_debug_mmacros, + dbgdbg_debug_directive, + dbgdbg_typevalue, + dbgdbg_output, + dbgdbg_cleanup, + dbgdbg_pragma_list +}; + +static const struct dfmt * const debug_debug_arr[3] = { + &debug_debug_form, + &null_debug_form, + NULL +}; + +extern macros_t dbg_stdmac[]; + +const struct ofmt of_dbg = { + "Trace of all info passed to output stage", + "dbg", + ".dbg", + OFMT_TEXT|OFMT_KEEP_ADDR, + 64, + debug_debug_arr, + &debug_debug_form, + dbg_stdmac, + dbg_init, + dbg_reset, + dbg_out, + dbg_legacy_out, + dbg_deflabel, + dbg_section_names, + dbg_herelabel, + dbg_sectalign, + null_segbase, + dbg_directive, + dbg_cleanup, + dbg_pragma_list +}; + +#endif /* OF_DBG */ diff --git a/vere/ext/nasm/output/outdbg.mac b/vere/ext/nasm/output/outdbg.mac new file mode 100644 index 0000000..44cd11c --- /dev/null +++ b/vere/ext/nasm/output/outdbg.mac @@ -0,0 +1,56 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2017 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +; +; Define a few macros which lets the dbg format process files intended +; for the .obj and .bin formats. +; +OUT: dbg +%define __?SECT?__ [section .text] +%imacro group 1+.nolist +[group %1] +%endmacro +%imacro uppercase 0+.nolist + %pragma dbg uppercase %1 +%endmacro +%imacro export 1+.nolist + %pragma dbg export %1 +%endmacro +%imacro import 1+.nolist + %pragma dbg import %1 +%endmacro +%imacro org 1+.nolist + %pragma dbg org %1 +%endmacro +%macro __?NASM_CDecl?__ 1 +%endmacro diff --git a/vere/ext/nasm/output/outelf.c b/vere/ext/nasm/output/outelf.c new file mode 100644 index 0000000..ad8d210 --- /dev/null +++ b/vere/ext/nasm/output/outelf.c @@ -0,0 +1,3672 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2022 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * Common code for outelf32 and outelf64 + */ + +#include "compiler.h" + + +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "saa.h" +#include "raa.h" +#include "stdscan.h" +#include "eval.h" +#include "outform.h" +#include "outlib.h" +#include "rbtree.h" +#include "hashtbl.h" +#include "ver.h" + +#include "dwarf.h" +#include "stabs.h" +#include "outelf.h" +#include "elf.h" + +#if defined(OF_ELF32) || defined(OF_ELF64) || defined(OF_ELFX32) + +#define SECT_DELTA 32 +static struct elf_section **sects; +static int nsects, sectlen; + +#define SHSTR_DELTA 256 +static char *shstrtab; +static int shstrtablen, shstrtabsize; + +static struct SAA *syms; +static uint32_t nlocals, nglobs, ndebugs; /* Symbol counts */ + +static int32_t def_seg; + +static struct RAA *bsym; + +static struct SAA *symtab, *symtab_shndx; + +static struct SAA *strs; +static uint32_t strslen; + +static struct RAA *section_by_index; +static struct hash_table section_by_name; + +static struct elf_symbol *fwds; + +static char elf_module[FILENAME_MAX]; +static char elf_dir[FILENAME_MAX]; + +extern const struct ofmt of_elf32; +extern const struct ofmt of_elf64; +extern const struct ofmt of_elfx32; + +static struct ELF_SECTDATA { + void *data; + int64_t len; + bool is_saa; +} *elf_sects; + +static int elf_nsect, nsections; +static int64_t elf_foffs; + +static void elf_write(void); +static void elf_sect_write(struct elf_section *, const void *, size_t); +static void elf_sect_writeaddr(struct elf_section *, int64_t, size_t); +static void elf_section_header(int name, int type, uint64_t flags, + void *data, bool is_saa, uint64_t datalen, + int link, int info, + uint64_t align, uint64_t entsize); +static void elf_write_sections(void); +static size_t elf_build_symtab(void); +static int add_sectname(const char *, const char *); + +/* First debugging section index */ +static int sec_debug; + +struct symlininfo { + int offset; + int section; /* index into sects[] */ + int segto; /* internal section number */ + char *name; /* shallow-copied pointer of section name */ +}; + +struct linelist { + struct linelist *next; + struct linelist *last; + struct symlininfo info; + char *filename; + int line; +}; + +struct sectlist { + struct SAA *psaa; + int section; + int line; + int offset; + int file; + struct sectlist *next; + struct sectlist *last; +}; + +/* common debug variables */ +static int currentline = 1; +static int debug_immcall = 0; + +/* stabs debug variables */ +static struct linelist *stabslines = 0; +static int numlinestabs = 0; +static char *stabs_filename = 0; +static uint8_t *stabbuf = 0, *stabstrbuf = 0, *stabrelbuf = 0; +static int stablen, stabstrlen, stabrellen; + +/* dwarf debug variables */ +static struct linelist *dwarf_flist = 0, *dwarf_clist = 0, *dwarf_elist = 0; +static struct sectlist *dwarf_fsect = 0, *dwarf_csect = 0, *dwarf_esect = 0; +static int dwarf_numfiles = 0, dwarf_nsections; +static uint8_t *arangesbuf = 0, *arangesrelbuf = 0, *pubnamesbuf = 0, *infobuf = 0, *inforelbuf = 0, + *abbrevbuf = 0, *linebuf = 0, *linerelbuf = 0, *framebuf = 0, *locbuf = 0; +static int8_t line_base = -5, line_range = 14, opcode_base = 13; +static int arangeslen, arangesrellen, pubnameslen, infolen, inforellen, + abbrevlen, linelen, linerellen, framelen, loclen; +static int64_t dwarf_infosym, dwarf_abbrevsym, dwarf_linesym; + +static struct elf_symbol *lastsym; + +/* common debugging routines */ +static void debug_typevalue(int32_t); + +/* stabs debugging routines */ +static void stabs_linenum(const char *filename, int32_t linenumber, int32_t); +static void stabs_output(int, void *); +static void stabs_generate(void); +static void stabs_cleanup(void); + +/* dwarf debugging routines */ + +/* This should match the order in elf_write() */ +enum dwarf_sect { + DWARF_ARANGES, + DWARF_RELA_ARANGES, + DWARF_PUBNAMES, + DWARF_INFO, + DWARF_RELA_INFO, + DWARF_ABBREV, + DWARF_LINE, + DWARF_RELA_LINE, + DWARF_FRAME, + DWARF_LOC, + DWARF_NSECT +}; + +struct dwarf_format { + uint16_t dwarf_version; + uint16_t sect_version[DWARF_NSECT]; + /* ... add more here to generalize further */ +}; +const struct dwarf_format *dwfmt; + +static void dwarf32_init(void); +static void dwarfx32_init(void); +static void dwarf64_init(void); +static void dwarf_linenum(const char *filename, int32_t linenumber, int32_t); +static void dwarf_output(int, void *); +static void dwarf_generate(void); +static void dwarf_cleanup(void); +static void dwarf_findfile(const char *); +static void dwarf_findsect(const int); + +struct elf_format_info { + size_t word; /* Word size (4 or 8) */ + size_t ehdr_size; /* Size of the ELF header */ + size_t shdr_size; /* Size of a section header */ + size_t sym_size; /* Size of a symbol */ + size_t relsize; /* Size of a reltype relocation */ + char relpfx[8]; /* Relocation section prefix */ + uint32_t reltype; /* Relocation section type */ + uint16_t e_machine; /* Header e_machine field */ + uint8_t ei_class; /* ELFCLASS32 or ELFCLASS64 */ + bool elf64; /* 64-bit ELF */ + + /* Write a symbol */ + void (*elf_sym)(const struct elf_symbol *); + + /* Build a relocation table */ + struct SAA *(*elf_build_reltab)(const struct elf_reloc *); +}; +static const struct elf_format_info *efmt; + +static void elf32_sym(const struct elf_symbol *sym); +static void elf64_sym(const struct elf_symbol *sym); + +static struct SAA *elf32_build_reltab(const struct elf_reloc *r); +static struct SAA *elfx32_build_reltab(const struct elf_reloc *r); +static struct SAA *elf64_build_reltab(const struct elf_reloc *r); + +static bool dfmt_is_stabs(void); +static bool dfmt_is_dwarf(void); + +/* + * Special NASM section numbers which are used to define ELF special + * symbols. + */ +static int32_t elf_gotpc_sect, elf_gotoff_sect; +static int32_t elf_got_sect, elf_plt_sect; +static int32_t elf_sym_sect, elf_gottpoff_sect, elf_tlsie_sect; + +uint8_t elf_osabi = 0; /* Default OSABI = 0 (System V or Linux) */ +uint8_t elf_abiver = 0; /* Current ABI version */ + +/* Known sections with nonstandard defaults. -n means n*pointer size. */ +struct elf_known_section { + const char *name; /* Name of section */ + int type; /* Section type (SHT_) */ + uint32_t flags; /* Section flags (SHF_) */ + int align; /* Section alignment */ + int entsize; /* Entry size, if applicable */ +}; + +static const struct elf_known_section elf_known_sections[] = { + { ".text", SHT_PROGBITS, SHF_ALLOC|SHF_EXECINSTR, 16, 0 }, + { ".rodata", SHT_PROGBITS, SHF_ALLOC, 4, 0 }, + { ".lrodata", SHT_PROGBITS, SHF_ALLOC, 4, 0 }, + { ".data", SHT_PROGBITS, SHF_ALLOC|SHF_WRITE, 4, 0 }, + { ".ldata", SHT_PROGBITS, SHF_ALLOC|SHF_WRITE, 4, 0 }, + { ".bss", SHT_NOBITS, SHF_ALLOC|SHF_WRITE, 4, 0 }, + { ".lbss", SHT_NOBITS, SHF_ALLOC|SHF_WRITE, 4, 0 }, + { ".tdata", SHT_PROGBITS, SHF_ALLOC|SHF_WRITE|SHF_TLS, 4, 0 }, + { ".tbss", SHT_NOBITS, SHF_ALLOC|SHF_WRITE|SHF_TLS, 4, 0 }, + { ".comment", SHT_PROGBITS, 0, 1, 0 }, + { ".preinit_array", SHT_PREINIT_ARRAY, SHF_ALLOC, -1, -1 }, + { ".init_array", SHT_INIT_ARRAY, SHF_ALLOC, -1, -1 }, + { ".fini_array", SHT_FINI_ARRAY, SHF_ALLOC, -1, -1 }, + { ".note", SHT_NOTE, 0, 4, 0 }, + { NULL /*default*/, SHT_PROGBITS, SHF_ALLOC, 1, 0 } +}; + +struct size_unit { + char name[8]; + int bytes; + int align; +}; +static const struct size_unit size_units[] = +{ + { "byte", 1, 1 }, + { "word", 2, 2 }, + { "dword", 4, 4 }, + { "qword", 8, 8 }, + { "tword", 10, 2 }, + { "tbyte", 10, 2 }, + { "oword", 16, 16 }, + { "xword", 16, 16 }, + { "yword", 32, 32 }, + { "zword", 64, 64 }, + { "pointer", -1, -1 }, + { "", 0, 0 } +}; + +static inline size_t to_bytes(int val) +{ + return (val >= 0) ? (size_t)val : -val * efmt->word; +} + +/* parse section attributes */ +static void elf_section_attrib(char *name, char *attr, uint32_t *flags_and, uint32_t *flags_or, + uint64_t *alignp, uint64_t *entsize, int *type) +{ + char *opt, *val, *next; + uint64_t align = 0; + uint64_t xalign = 0; + + opt = nasm_skip_spaces(attr); + if (!opt || !*opt) + return; + + while ((opt = nasm_opt_val(opt, &val, &next))) { + if (!nasm_stricmp(opt, "align")) { + if (!val) { + nasm_nonfatal("section align without value specified"); + } else { + bool err; + uint64_t a = readnum(val, &err); + if (a && !is_power2(a)) { + nasm_error(ERR_NONFATAL, + "section alignment %"PRId64" is not a power of two", + a); + } else if (a > align) { + align = a; + } + } + } else if (!nasm_stricmp(opt, "alloc")) { + *flags_and |= SHF_ALLOC; + *flags_or |= SHF_ALLOC; + } else if (!nasm_stricmp(opt, "noalloc")) { + *flags_and |= SHF_ALLOC; + *flags_or &= ~SHF_ALLOC; + } else if (!nasm_stricmp(opt, "exec")) { + *flags_and |= SHF_EXECINSTR; + *flags_or |= SHF_EXECINSTR; + } else if (!nasm_stricmp(opt, "noexec")) { + *flags_and |= SHF_EXECINSTR; + *flags_or &= ~SHF_EXECINSTR; + } else if (!nasm_stricmp(opt, "write")) { + *flags_and |= SHF_WRITE; + *flags_or |= SHF_WRITE; + } else if (!nasm_stricmp(opt, "nowrite") || + !nasm_stricmp(opt, "readonly")) { + *flags_and |= SHF_WRITE; + *flags_or &= ~SHF_WRITE; + } else if (!nasm_stricmp(opt, "tls")) { + *flags_and |= SHF_TLS; + *flags_or |= SHF_TLS; + } else if (!nasm_stricmp(opt, "notls")) { + *flags_and |= SHF_TLS; + *flags_or &= ~SHF_TLS; + } else if (!nasm_stricmp(opt, "merge")) { + *flags_and |= SHF_MERGE; + *flags_or |= SHF_MERGE; + } else if (!nasm_stricmp(opt, "nomerge")) { + *flags_and |= SHF_MERGE; + *flags_or &= ~SHF_MERGE; + } else if (!nasm_stricmp(opt, "strings")) { + *flags_and |= SHF_STRINGS; + *flags_or |= SHF_STRINGS; + } else if (!nasm_stricmp(opt, "nostrings")) { + *flags_and |= SHF_STRINGS; + *flags_or &= ~SHF_STRINGS; + } else if (!nasm_stricmp(opt, "progbits")) { + *type = SHT_PROGBITS; + } else if (!nasm_stricmp(opt, "nobits")) { + *type = SHT_NOBITS; + } else if (!nasm_stricmp(opt, "note")) { + *type = SHT_NOTE; + } else if (!nasm_stricmp(opt, "preinit_array")) { + *type = SHT_PREINIT_ARRAY; + } else if (!nasm_stricmp(opt, "init_array")) { + *type = SHT_INIT_ARRAY; + } else if (!nasm_stricmp(opt, "fini_array")) { + *type = SHT_FINI_ARRAY; + } else { + uint64_t mult; + size_t l; + const char *a = strchr(opt, '*'); + bool err; + const struct size_unit *su; + + if (a) { + l = a - opt - 1; + mult = readnum(a+1, &err); + } else { + l = strlen(opt); + mult = 1; + } + + for (su = size_units; su->bytes; su++) { + if (!nasm_strnicmp(opt, su->name, l)) + break; + } + + if (su->bytes) { + *entsize = to_bytes(su->bytes) * mult; + xalign = to_bytes(su->align); + } else { + /* Unknown attribute */ + nasm_warn(WARN_OTHER, + "unknown section attribute '%s' ignored on" + " declaration of section `%s'", opt, name); + } + } + opt = next; + } + + switch (*type) { + case SHT_PREINIT_ARRAY: + case SHT_INIT_ARRAY: + case SHT_FINI_ARRAY: + if (!xalign) + xalign = efmt->word; + if (!*entsize) + *entsize = efmt->word; + break; + default: + break; + } + + if (!align) + align = xalign; + if (!align) + align = SHA_ANY; + + *alignp = align; +} + +static enum directive_result +elf_directive(enum directive directive, char *value) +{ + int64_t n; + bool err; + char *p; + + switch (directive) { + case D_OSABI: + if (!pass_first()) /* XXX: Why? */ + return DIRR_OK; + + n = readnum(value, &err); + if (err) { + nasm_nonfatal("`osabi' directive requires a parameter"); + return DIRR_ERROR; + } + + if (n < 0 || n > 255) { + nasm_nonfatal("valid osabi numbers are 0 to 255"); + return DIRR_ERROR; + } + + elf_osabi = n; + elf_abiver = 0; + + p = strchr(value,','); + if (!p) + return DIRR_OK; + + n = readnum(p + 1, &err); + if (err || n < 0 || n > 255) { + nasm_nonfatal("invalid ABI version number (valid: 0 to 255)"); + return DIRR_ERROR; + } + + elf_abiver = n; + return DIRR_OK; + + default: + return DIRR_UNKNOWN; + } +} + +static void elf_init(void); + +static void elf32_init(void) +{ + static const struct elf_format_info ef_elf32 = { + 4, + sizeof(Elf32_Ehdr), + sizeof(Elf32_Shdr), + sizeof(Elf32_Sym), + sizeof(Elf32_Rel), + ".rel", + SHT_REL, + EM_386, + ELFCLASS32, + false, + + elf32_sym, + elf32_build_reltab + }; + efmt = &ef_elf32; + elf_init(); +} + +static void elfx32_init(void) +{ + static const struct elf_format_info ef_elfx32 = { + 4, + sizeof(Elf32_Ehdr), + sizeof(Elf32_Shdr), + sizeof(Elf32_Sym), + sizeof(Elf32_Rela), + ".rela", + SHT_RELA, + EM_X86_64, + ELFCLASS32, + false, + + elf32_sym, + elfx32_build_reltab + }; + efmt = &ef_elfx32; + elf_init(); +} + +static void elf64_init(void) +{ + static const struct elf_format_info ef_elf64 = { + 8, + sizeof(Elf64_Ehdr), + sizeof(Elf64_Shdr), + sizeof(Elf64_Sym), + sizeof(Elf64_Rela), + ".rela", + SHT_RELA, + EM_X86_64, + ELFCLASS64, + true, + + elf64_sym, + elf64_build_reltab + }; + efmt = &ef_elf64; + elf_init(); +} + +static void elf_init(void) +{ + static const char * const reserved_sections[] = { + ".shstrtab", ".strtab", ".symtab", ".symtab_shndx", NULL + }; + const char * const *p; + const char * cur_path = nasm_realpath(inname); + + strlcpy(elf_module, inname, sizeof(elf_module)); + strlcpy(elf_dir, nasm_dirname(cur_path), sizeof(elf_dir)); + sects = NULL; + nsects = sectlen = 0; + syms = saa_init((int32_t)sizeof(struct elf_symbol)); + nlocals = nglobs = ndebugs = 0; + bsym = raa_init(); + strs = saa_init(1L); + saa_wbytes(strs, "\0", 1L); + saa_wbytes(strs, elf_module, strlen(elf_module)+1); + strslen = 2 + strlen(elf_module); + shstrtab = NULL; + shstrtablen = shstrtabsize = 0;; + add_sectname("", ""); /* SHN_UNDEF */ + + fwds = NULL; + + section_by_index = raa_init(); + + /* + * Add reserved section names to the section hash, with NULL + * as the data pointer + */ + for (p = reserved_sections; *p; p++) { + struct hash_insert hi; + hash_find(§ion_by_name, *p, &hi); + hash_add(&hi, *p, NULL); + } + + /* + * FIXME: tlsie is Elf32 only and + * gottpoff is Elfx32|64 only. + */ + elf_gotpc_sect = seg_alloc(); + backend_label("..gotpc", elf_gotpc_sect + 1, 0L); + elf_gotoff_sect = seg_alloc(); + backend_label("..gotoff", elf_gotoff_sect + 1, 0L); + elf_got_sect = seg_alloc(); + backend_label("..got", elf_got_sect + 1, 0L); + elf_plt_sect = seg_alloc(); + backend_label("..plt", elf_plt_sect + 1, 0L); + elf_sym_sect = seg_alloc(); + backend_label("..sym", elf_sym_sect + 1, 0L); + elf_gottpoff_sect = seg_alloc(); + backend_label("..gottpoff", elf_gottpoff_sect + 1, 0L); + elf_tlsie_sect = seg_alloc(); + backend_label("..tlsie", elf_tlsie_sect + 1, 0L); + + def_seg = seg_alloc(); +} + +static void elf_cleanup(void) +{ + struct elf_reloc *r; + int i; + + elf_write(); + for (i = 0; i < nsects; i++) { + if (sects[i]->type != SHT_NOBITS) + saa_free(sects[i]->data); + if (sects[i]->rel) + saa_free(sects[i]->rel); + while (sects[i]->head) { + r = sects[i]->head; + sects[i]->head = sects[i]->head->next; + nasm_free(r); + } + } + hash_free(§ion_by_name); + raa_free(section_by_index); + nasm_free(sects); + saa_free(syms); + raa_free(bsym); + saa_free(strs); + dfmt->cleanup(); +} + +/* + * Add entry to the elf .shstrtab section and increment nsections. + * Returns the section index for this new section. + * + * IMPORTANT: this needs to match the order the section headers are + * emitted. + */ +static int add_sectname(const char *firsthalf, const char *secondhalf) +{ + int l1 = strlen(firsthalf); + int l2 = strlen(secondhalf); + + while (shstrtablen + l1 + l2 + 1 > shstrtabsize) + shstrtab = nasm_realloc(shstrtab, (shstrtabsize += SHSTR_DELTA)); + + memcpy(shstrtab + shstrtablen, firsthalf, l1); + shstrtablen += l1; + memcpy(shstrtab + shstrtablen, secondhalf, l2+1); + shstrtablen += l2 + 1; + + return nsections++; +} + +static struct elf_section * +elf_make_section(char *name, int type, int flags, uint64_t align) +{ + struct elf_section *s; + + s = nasm_zalloc(sizeof(*s)); + + if (type != SHT_NOBITS) + s->data = saa_init(1L); + s->tail = &s->head; + if (!strcmp(name, ".text")) + s->index = def_seg; + else + s->index = seg_alloc(); + + s->name = nasm_strdup(name); + s->type = type; + s->flags = flags; + s->align = align; + s->shndx = add_sectname("", name); + + if (nsects >= sectlen) + sects = nasm_realloc(sects, (sectlen += SECT_DELTA) * sizeof(*sects)); + sects[nsects++] = s; + + return s; +} + +static int32_t elf_section_names(char *name, int *bits) +{ + char *p; + uint32_t flags, flags_and, flags_or; + uint64_t align, entsize; + void **hp; + struct elf_section *s; + struct hash_insert hi; + int type; + + if (!name) { + *bits = ofmt->maxbits; + return def_seg; + } + + p = nasm_skip_word(name); + if (*p) + *p++ = '\0'; + flags_and = flags_or = type = align = entsize = 0; + + elf_section_attrib(name, p, &flags_and, &flags_or, &align, &entsize, &type); + + hp = hash_find(§ion_by_name, name, &hi); + if (hp) { + s = *hp; + if (!s) { + nasm_nonfatal("attempt to redefine reserved section name `%s'", name); + return NO_SEG; + } + } else { + const struct elf_known_section *ks = elf_known_sections; + + while (ks->name) { + if (!strcmp(name, ks->name)) + break; + ks++; + } + + type = type ? type : ks->type; + if (!align) + align = to_bytes(ks->align); + if (!entsize) + entsize = to_bytes(ks->entsize); + flags = (ks->flags & ~flags_and) | flags_or; + + s = elf_make_section(name, type, flags, align); + hash_add(&hi, s->name, s); + section_by_index = raa_write_ptr(section_by_index, s->index >> 1, s); + } + + if ((type && s->type != type) + || ((s->flags & flags_and) != flags_or) + || (entsize && s->entsize && entsize != s->entsize)) { + nasm_warn(WARN_OTHER, "incompatible section attributes ignored on" + " redeclaration of section `%s'", name); + } + + if (align > s->align) + s->align = align; + + if (entsize && !s->entsize) + s->entsize = entsize; + + if ((flags_or & SHF_MERGE) && s->entsize == 0) { + if (!(s->flags & SHF_STRINGS)) + nasm_nonfatal("section attribute merge specified without an entry size or `strings'"); + s->entsize = 1; + } + + return s->index; +} + +static inline bool sym_type_local(int type) +{ + return ELF32_ST_BIND(type) == STB_LOCAL; +} + +static void elf_deflabel(char *name, int32_t segment, int64_t offset, + int is_global, char *special) +{ + int pos = strslen; + struct elf_symbol *sym; + const char *spcword = nasm_skip_spaces(special); + int bind, type; /* st_info components */ + const struct elf_section *sec = NULL; + + if (debug_level(2)) { + nasm_debug(" elf_deflabel: %s, seg=%"PRIx32", off=%"PRIx64", is_global=%d, %s\n", + name, segment, offset, is_global, special); + } + + if (name[0] == '.' && name[1] == '.' && name[2] != '@') { + /* + * This is a NASM special symbol. We never allow it into + * the ELF symbol table, even if it's a valid one. If it + * _isn't_ a valid one, we should barf immediately. + * + * FIXME: tlsie is Elf32 only, and gottpoff is Elfx32|64 only. + */ + if (strcmp(name, "..gotpc") && strcmp(name, "..gotoff") && + strcmp(name, "..got") && strcmp(name, "..plt") && + strcmp(name, "..sym") && strcmp(name, "..gottpoff") && + strcmp(name, "..tlsie")) + nasm_nonfatal("unrecognised special symbol `%s'", name); + return; + } + + if (is_global == 3) { + struct elf_symbol **s; + /* + * Fix up a forward-reference symbol size from the first + * pass. + */ + for (s = &fwds; *s; s = &(*s)->nextfwd) + if (!strcmp((*s)->name, name)) { + struct tokenval tokval; + expr *e; + char *p = nasm_skip_spaces(nasm_skip_word(special)); + + stdscan_reset(); + stdscan_set(p); + tokval.t_type = TOKEN_INVALID; + e = evaluate(stdscan, NULL, &tokval, NULL, 1, NULL); + if (e) { + if (!is_simple(e)) + nasm_nonfatal("cannot use relocatable" + " expression as symbol size"); + else + (*s)->size = reloc_value(e); + } + + /* + * Remove it from the list of unresolved sizes. + */ + nasm_free((*s)->name); + *s = (*s)->nextfwd; + return; + } + return; /* it wasn't an important one */ + } + + saa_wbytes(strs, name, (int32_t)(1 + strlen(name))); + strslen += 1 + strlen(name); + + lastsym = sym = saa_wstruct(syms); + + memset(&sym->symv, 0, sizeof(struct rbtree)); + + sym->strpos = pos; + bind = is_global ? STB_GLOBAL : STB_LOCAL; + type = STT_NOTYPE; + sym->other = STV_DEFAULT; + sym->size = 0; + if (segment == NO_SEG) { + sym->section = XSHN_ABS; + } else { + sym->section = XSHN_UNDEF; + if (segment == def_seg) { + /* we have to be sure at least text section is there */ + int tempint; + if (segment != elf_section_names(".text", &tempint)) + nasm_panic("strange segment conditions in ELF driver"); + } + sec = raa_read_ptr(section_by_index, segment >> 1); + if (sec) + sym->section = sec->shndx; + } + + if (is_global == 2) { + sym->size = offset; + sym->symv.key = 0; + sym->section = XSHN_COMMON; + /* + * We have a common variable. Check the special text to see + * if it's a valid number and power of two; if so, store it + * as the alignment for the common variable. + * + * XXX: this should allow an expression. + */ + if (spcword) { + bool err; + sym->symv.key = readnum(spcword, &err); + if (err) + nasm_nonfatal("alignment constraint `%s' is not a" + " valid number", special); + else if (!is_power2(sym->symv.key)) + nasm_nonfatal("alignment constraint `%s' is not a" + " power of two", special); + spcword = nasm_skip_spaces(nasm_skip_word(spcword)); + } + } else { + sym->symv.key = (sym->section == XSHN_UNDEF ? 0 : offset); + } + + if (spcword && *spcword) { + const char *wend; + bool ok = true; + + while (ok) { + size_t wlen; + wend = nasm_skip_word(spcword); + wlen = wend - spcword; + + switch (wlen) { + case 4: + if (!nasm_strnicmp(spcword, "data", wlen)) + type = STT_OBJECT; + else if (!nasm_strnicmp(spcword, "weak", wlen)) + bind = STB_WEAK; + else + ok = false; + break; + + case 6: + if (!nasm_strnicmp(spcword, "notype", wlen)) + type = STT_NOTYPE; + else if (!nasm_strnicmp(spcword, "object", wlen)) + type = STT_OBJECT; + else if (!nasm_strnicmp(spcword, "hidden", wlen)) + sym->other = STV_HIDDEN; + else if (!nasm_strnicmp(spcword, "strong", wlen)) + bind = STB_GLOBAL; + else + ok = false; + break; + + case 7: + if (!nasm_strnicmp(spcword, "default", wlen)) + sym->other = STV_DEFAULT; + else + ok = false; + break; + + case 8: + if (!nasm_strnicmp(spcword, "function", wlen)) + type = STT_FUNC; + else if (!nasm_stricmp(spcword, "internal")) + sym->other = STV_INTERNAL; + else + ok = false; + break; + + case 9: + if (!nasm_strnicmp(spcword, "protected", wlen)) + sym->other = STV_PROTECTED; + else + ok = false; + break; + + default: + ok = false; + break; + } + + if (ok) + spcword = nasm_skip_spaces(wend); + } + if (!is_global && bind != STB_LOCAL) { + nasm_nonfatal("weak and strong only applies to global symbols"); + bind = STB_LOCAL; + } + + if (spcword && *spcword) { + struct tokenval tokval; + expr *e; + int fwd = 0; + char *saveme = stdscan_get(); + + /* + * We have a size expression; attempt to + * evaluate it. + */ + stdscan_reset(); + stdscan_set((char *)spcword); + tokval.t_type = TOKEN_INVALID; + e = evaluate(stdscan, NULL, &tokval, &fwd, 0, NULL); + if (fwd) { + sym->nextfwd = fwds; + fwds = sym; + sym->name = nasm_strdup(name); + } else if (e) { + if (!is_simple(e)) + nasm_nonfatal("cannot use relocatable" + " expression as symbol size"); + else + sym->size = reloc_value(e); + } + stdscan_set(saveme); + } + } + + /* + * If it is in a TLS segment, mark symbol accordingly. + */ + if (sec && (sec->flags & SHF_TLS)) + type = STT_TLS; + + /* Note: ELF32_ST_INFO() and ELF64_ST_INFO() are identical */ + sym->type = ELF32_ST_INFO(bind, type); + + if (sym_type_local(sym->type)) { + nlocals++; + } else { + /* + * If sym->section == SHN_ABS, then the first line of the + * else section would cause a core dump, because its a reference + * beyond the end of the section array. + * This behaviour is exhibited by this code: + * GLOBAL crash_nasm + * crash_nasm equ 0 + * To avoid such a crash, such requests are silently discarded. + * This may not be the best solution. + */ + if (sym->section == XSHN_UNDEF || sym->section == XSHN_COMMON) { + bsym = raa_write(bsym, segment, nglobs); + } else if (sym->section != XSHN_ABS) { + /* + * This is a global symbol; so we must add it to the rbtree + * of global symbols in its section. + * + * In addition, we check the special text for symbol + * type and size information. + */ + sects[sym->section-1]->gsyms = + rb_insert(sects[sym->section-1]->gsyms, &sym->symv); + + } + sym->globnum = nglobs; + nglobs++; + } +} + +static void elf_add_reloc(struct elf_section *sect, int32_t segment, + int64_t offset, int type) +{ + struct elf_reloc *r; + + r = *sect->tail = nasm_zalloc(sizeof(struct elf_reloc)); + sect->tail = &r->next; + + r->address = sect->len; + r->offset = offset; + + if (segment != NO_SEG) { + const struct elf_section *s; + s = raa_read_ptr(section_by_index, segment >> 1); + if (s) + r->symbol = s->shndx + 1; + else + r->symbol = GLOBAL_TEMP_BASE + raa_read(bsym, segment); + } + r->type = type; + + sect->nrelocs++; +} + +/* + * This routine deals with ..got and ..sym relocations: the more + * complicated kinds. In shared-library writing, some relocations + * with respect to global symbols must refer to the precise symbol + * rather than referring to an offset from the base of the section + * _containing_ the symbol. Such relocations call to this routine, + * which searches the symbol list for the symbol in question. + * + * R_386_GOT32 | R_X86_64_GOT32 references require the _exact_ symbol address to be + * used; R_386_32 | R_X86_64_32 references can be at an offset from the symbol. + * The boolean argument `exact' tells us this. + * + * Return value is the adjusted value of `addr', having become an + * offset from the symbol rather than the section. Should always be + * zero when returning from an exact call. + * + * Limitation: if you define two symbols at the same place, + * confusion will occur. + * + * Inefficiency: we search, currently, using a linked list which + * isn't even necessarily sorted. + */ +static int64_t elf_add_gsym_reloc(struct elf_section *sect, + int32_t segment, uint64_t offset, + int64_t pcrel, int type, bool exact) +{ + struct elf_reloc *r; + struct elf_section *s; + struct elf_symbol *sym; + struct rbtree *srb; + + /* + * First look up the segment/offset pair and find a global + * symbol corresponding to it. If it's not one of our segments, + * then it must be an external symbol, in which case we're fine + * doing a normal elf_add_reloc after first sanity-checking + * that the offset from the symbol is zero. + */ + s = raa_read_ptr(section_by_index, segment >> 1); + if (!s) { + if (exact && offset) + nasm_nonfatal("invalid access to an external symbol"); + else + elf_add_reloc(sect, segment, offset - pcrel, type); + return 0; + } + + srb = rb_search(s->gsyms, offset); + if (!srb || (exact && srb->key != offset)) { + nasm_nonfatal("unable to find a suitable global symbol" + " for this reference"); + return 0; + } + sym = container_of(srb, struct elf_symbol, symv); + + r = *sect->tail = nasm_malloc(sizeof(struct elf_reloc)); + sect->tail = &r->next; + + r->next = NULL; + r->address = sect->len; + r->offset = offset - pcrel - sym->symv.key; + r->symbol = GLOBAL_TEMP_BASE + sym->globnum; + r->type = type; + + sect->nrelocs++; + return r->offset; +} + +static void elf32_out(int32_t segto, const void *data, + enum out_type type, uint64_t size, + int32_t segment, int32_t wrt) +{ + struct elf_section *s; + int64_t addr; + int reltype, bytes; + static struct symlininfo sinfo; + + /* + * handle absolute-assembly (structure definitions) + */ + if (segto == NO_SEG) { + if (type != OUT_RESERVE) + nasm_nonfatal("attempt to assemble code in [ABSOLUTE] space"); + return; + } + + s = raa_read_ptr(section_by_index, segto >> 1); + if (!s) { + int tempint; /* ignored */ + if (segto != elf_section_names(".text", &tempint)) + nasm_panic("strange segment conditions in ELF driver"); + else + s = sects[nsects - 1]; + } + + /* again some stabs debugging stuff */ + sinfo.offset = s->len; + /* Adjust to an index of the section table. */ + sinfo.section = s->shndx - 1; + sinfo.segto = segto; + sinfo.name = s->name; + dfmt->debug_output(TY_DEBUGSYMLIN, &sinfo); + /* end of debugging stuff */ + + if (s->type == SHT_NOBITS && type != OUT_RESERVE) { + nasm_warn(WARN_OTHER, "attempt to initialize memory in" + " BSS section `%s': ignored", s->name); + s->len += realsize(type, size); + return; + } + + switch (type) { + case OUT_RESERVE: + if (s->type != SHT_NOBITS) { + nasm_warn(WARN_ZEROING, "uninitialized space declared in" + " non-BSS section `%s': zeroing", s->name); + elf_sect_write(s, NULL, size); + } else + s->len += size; + break; + + case OUT_RAWDATA: + elf_sect_write(s, data, size); + break; + + case OUT_ADDRESS: + { + bool err = false; + int asize = abs((int)size); + + addr = *(int64_t *)data; + if (segment != NO_SEG) { + if (segment & 1) { + nasm_nonfatal("ELF format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + /* + * The if() is a hack to deal with compilers which + * don't handle switch() statements with 64-bit + * expressions. + */ + switch (asize) { + case 1: + elf_add_reloc(s, segment, 0, R_386_8); + break; + case 2: + elf_add_reloc(s, segment, 0, R_386_16); + break; + case 4: + elf_add_reloc(s, segment, 0, R_386_32); + break; + default: /* Error issued further down */ + err = true; + break; + } + } else if (wrt == elf_gotpc_sect + 1) { + /* + * The user will supply GOT relative to $$. ELF + * will let us have GOT relative to $. So we + * need to fix up the data item by $-$$. + */ + err = asize != 4; + addr += s->len; + elf_add_reloc(s, segment, 0, R_386_GOTPC); + } else if (wrt == elf_gotoff_sect + 1) { + err = asize != 4; + elf_add_reloc(s, segment, 0, R_386_GOTOFF); + } else if (wrt == elf_tlsie_sect + 1) { + err = asize != 4; + addr = elf_add_gsym_reloc(s, segment, addr, 0, + R_386_TLS_IE, true); + } else if (wrt == elf_got_sect + 1) { + err = asize != 4; + addr = elf_add_gsym_reloc(s, segment, addr, 0, + R_386_GOT32, true); + } else if (wrt == elf_sym_sect + 1) { + switch (asize) { + case 1: + addr = elf_add_gsym_reloc(s, segment, addr, 0, + R_386_8, false); + break; + case 2: + addr = elf_add_gsym_reloc(s, segment, addr, 0, + R_386_16, false); + break; + case 4: + addr = elf_add_gsym_reloc(s, segment, addr, 0, + R_386_32, false); + break; + default: + err = true; + break; + } + } else if (wrt == elf_plt_sect + 1) { + nasm_nonfatal("ELF format cannot produce non-PC-" + "relative PLT references"); + } else { + nasm_nonfatal("ELF format does not support this" + " use of WRT"); + wrt = NO_SEG; /* we can at least _try_ to continue */ + } + } + } + + if (err) { + nasm_nonfatal("Unsupported %d-bit ELF relocation", asize << 3); + } + elf_sect_writeaddr(s, addr, asize); + break; + } + + case OUT_REL1ADR: + reltype = R_386_PC8; + bytes = 1; + goto rel12adr; + case OUT_REL2ADR: + reltype = R_386_PC16; + bytes = 2; + goto rel12adr; + +rel12adr: + addr = *(int64_t *)data - size; + nasm_assert(segment != segto); + if (segment != NO_SEG && (segment & 1)) { + nasm_nonfatal("ELF format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + elf_add_reloc(s, segment, 0, reltype); + } else { + nasm_nonfatal("Unsupported %d-bit ELF relocation", bytes << 3); + } + } + elf_sect_writeaddr(s, addr, bytes); + break; + + case OUT_REL4ADR: + addr = *(int64_t *)data - size; + if (segment == segto) + nasm_panic("intra-segment OUT_REL4ADR"); + if (segment != NO_SEG && (segment & 1)) { + nasm_nonfatal("ELF format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + elf_add_reloc(s, segment, 0, R_386_PC32); + } else if (wrt == elf_plt_sect + 1) { + elf_add_reloc(s, segment, 0, R_386_PLT32); + } else if (wrt == elf_gotpc_sect + 1 || + wrt == elf_gotoff_sect + 1 || + wrt == elf_got_sect + 1) { + nasm_nonfatal("ELF format cannot produce PC-" + "relative GOT references"); + } else { + nasm_nonfatal("ELF format does not support this" + " use of WRT"); + wrt = NO_SEG; /* we can at least _try_ to continue */ + } + } + elf_sect_writeaddr(s, addr, 4); + break; + + case OUT_REL8ADR: + nasm_nonfatal("32-bit ELF format does not support 64-bit relocations"); + addr = 0; + elf_sect_writeaddr(s, addr, 8); + break; + + default: + panic(); + } +} +static void elf64_out(int32_t segto, const void *data, + enum out_type type, uint64_t size, + int32_t segment, int32_t wrt) +{ + struct elf_section *s; + int64_t addr; + int reltype, bytes; + static struct symlininfo sinfo; + + /* + * handle absolute-assembly (structure definitions) + */ + if (segto == NO_SEG) { + if (type != OUT_RESERVE) + nasm_nonfatal("attempt to assemble code in [ABSOLUTE] space"); + return; + } + + s = raa_read_ptr(section_by_index, segto >> 1); + if (!s) { + int tempint; /* ignored */ + if (segto != elf_section_names(".text", &tempint)) + nasm_panic("strange segment conditions in ELF driver"); + else + s = sects[nsects - 1]; + } + + /* again some stabs debugging stuff */ + sinfo.offset = s->len; + /* Adjust to an index of the section table. */ + sinfo.section = s->shndx - 1; + sinfo.segto = segto; + sinfo.name = s->name; + dfmt->debug_output(TY_DEBUGSYMLIN, &sinfo); + /* end of debugging stuff */ + + if (s->type == SHT_NOBITS && type != OUT_RESERVE) { + nasm_warn(WARN_OTHER, "attempt to initialize memory in" + " BSS section `%s': ignored", s->name); + s->len += realsize(type, size); + return; + } + + switch (type) { + case OUT_RESERVE: + if (s->type != SHT_NOBITS) { + nasm_warn(WARN_ZEROING, "uninitialized space declared in" + " non-BSS section `%s': zeroing", s->name); + elf_sect_write(s, NULL, size); + } else + s->len += size; + break; + + case OUT_RAWDATA: + if (segment != NO_SEG) + nasm_panic("OUT_RAWDATA with other than NO_SEG"); + elf_sect_write(s, data, size); + break; + + case OUT_ADDRESS: + { + int isize = (int)size; + int asize = abs((int)size); + + addr = *(int64_t *)data; + if (segment == NO_SEG) { + /* Do nothing */ + } else if (segment & 1) { + nasm_nonfatal("ELF format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + switch (isize) { + case 1: + case -1: + elf_add_reloc(s, segment, addr, R_X86_64_8); + break; + case 2: + case -2: + elf_add_reloc(s, segment, addr, R_X86_64_16); + break; + case 4: + elf_add_reloc(s, segment, addr, R_X86_64_32); + break; + case -4: + elf_add_reloc(s, segment, addr, R_X86_64_32S); + break; + case 8: + case -8: + elf_add_reloc(s, segment, addr, R_X86_64_64); + break; + default: + nasm_panic("internal error elf64-hpa-871"); + break; + } + addr = 0; + } else if (wrt == elf_gotpc_sect + 1) { + /* + * The user will supply GOT relative to $$. ELF + * will let us have GOT relative to $. So we + * need to fix up the data item by $-$$. + */ + addr += s->len; + elf_add_reloc(s, segment, addr, R_X86_64_GOTPC32); + addr = 0; + } else if (wrt == elf_gotoff_sect + 1) { + if (asize != 8) { + nasm_nonfatal("ELF64 requires ..gotoff " + "references to be qword"); + } else { + elf_add_reloc(s, segment, addr, R_X86_64_GOTOFF64); + addr = 0; + } + } else if (wrt == elf_got_sect + 1) { + switch (asize) { + case 4: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_GOT32, true); + addr = 0; + break; + case 8: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_GOT64, true); + addr = 0; + break; + default: + nasm_nonfatal("invalid ..got reference"); + break; + } + } else if (wrt == elf_sym_sect + 1) { + switch (isize) { + case 1: + case -1: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_8, false); + addr = 0; + break; + case 2: + case -2: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_16, false); + addr = 0; + break; + case 4: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_32, false); + addr = 0; + break; + case -4: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_32S, false); + addr = 0; + break; + case 8: + case -8: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_64, false); + addr = 0; + break; + default: + nasm_panic("internal error elf64-hpa-903"); + break; + } + } else if (wrt == elf_plt_sect + 1) { + nasm_nonfatal("ELF format cannot produce non-PC-" + "relative PLT references"); + } else { + nasm_nonfatal("ELF format does not support this" + " use of WRT"); + } + } + elf_sect_writeaddr(s, addr, asize); + break; + } + + case OUT_REL1ADR: + reltype = R_X86_64_PC8; + bytes = 1; + goto rel12adr; + + case OUT_REL2ADR: + reltype = R_X86_64_PC16; + bytes = 2; + goto rel12adr; + +rel12adr: + addr = *(int64_t *)data - size; + if (segment == segto) + nasm_panic("intra-segment OUT_REL1ADR"); + if (segment == NO_SEG) { + /* Do nothing */ + } else if (segment & 1) { + nasm_nonfatal("ELF format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + elf_add_reloc(s, segment, addr, reltype); + addr = 0; + } else { + nasm_nonfatal("Unsupported %d-bit ELF relocation", bytes << 3); + } + } + elf_sect_writeaddr(s, addr, bytes); + break; + + case OUT_REL4ADR: + addr = *(int64_t *)data - size; + if (segment == segto) + nasm_panic("intra-segment OUT_REL4ADR"); + if (segment == NO_SEG) { + /* Do nothing */ + } else if (segment & 1) { + nasm_nonfatal("ELF64 format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + elf_add_reloc(s, segment, addr, R_X86_64_PC32); + addr = 0; + } else if (wrt == elf_plt_sect + 1) { + elf_add_gsym_reloc(s, segment, addr+size, size, + R_X86_64_PLT32, true); + addr = 0; + } else if (wrt == elf_gotpc_sect + 1 || + wrt == elf_got_sect + 1) { + elf_add_gsym_reloc(s, segment, addr+size, size, + R_X86_64_GOTPCREL, true); + addr = 0; + } else if (wrt == elf_gotoff_sect + 1 || + wrt == elf_got_sect + 1) { + nasm_nonfatal("ELF64 requires ..gotoff references to be " + "qword absolute"); + } else if (wrt == elf_gottpoff_sect + 1) { + elf_add_gsym_reloc(s, segment, addr+size, size, + R_X86_64_GOTTPOFF, true); + addr = 0; + } else { + nasm_nonfatal("ELF64 format does not support this" + " use of WRT"); + } + } + elf_sect_writeaddr(s, addr, 4); + break; + + case OUT_REL8ADR: + addr = *(int64_t *)data - size; + if (segment == segto) + nasm_panic("intra-segment OUT_REL8ADR"); + if (segment == NO_SEG) { + /* Do nothing */ + } else if (segment & 1) { + nasm_nonfatal("ELF64 format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + elf_add_reloc(s, segment, addr, R_X86_64_PC64); + addr = 0; + } else if (wrt == elf_gotpc_sect + 1 || + wrt == elf_got_sect + 1) { + elf_add_gsym_reloc(s, segment, addr+size, size, + R_X86_64_GOTPCREL64, true); + addr = 0; + } else if (wrt == elf_gotoff_sect + 1 || + wrt == elf_got_sect + 1) { + nasm_nonfatal("ELF64 requires ..gotoff references to be " + "absolute"); + } else if (wrt == elf_gottpoff_sect + 1) { + nasm_nonfatal("ELF64 requires ..gottpoff references to be " + "dword"); + } else { + nasm_nonfatal("ELF64 format does not support this" + " use of WRT"); + } + } + elf_sect_writeaddr(s, addr, 8); + break; + + default: + panic(); + } +} + +static void elfx32_out(int32_t segto, const void *data, + enum out_type type, uint64_t size, + int32_t segment, int32_t wrt) +{ + struct elf_section *s; + int64_t addr; + int reltype, bytes; + static struct symlininfo sinfo; + + /* + * handle absolute-assembly (structure definitions) + */ + if (segto == NO_SEG) { + if (type != OUT_RESERVE) + nasm_nonfatal("attempt to assemble code in [ABSOLUTE] space"); + return; + } + + s = raa_read_ptr(section_by_index, segto >> 1); + if (!s) { + int tempint; /* ignored */ + if (segto != elf_section_names(".text", &tempint)) + nasm_panic("strange segment conditions in ELF driver"); + else + s = sects[nsects - 1]; + } + + /* again some stabs debugging stuff */ + sinfo.offset = s->len; + /* Adjust to an index of the section table. */ + sinfo.section = s->shndx - 1; + sinfo.segto = segto; + sinfo.name = s->name; + dfmt->debug_output(TY_DEBUGSYMLIN, &sinfo); + /* end of debugging stuff */ + + if (s->type == SHT_NOBITS && type != OUT_RESERVE) { + nasm_warn(WARN_OTHER, "attempt to initialize memory in" + " BSS section `%s': ignored", s->name); + s->len += realsize(type, size); + return; + } + + switch (type) { + case OUT_RESERVE: + if (s->type != SHT_NOBITS) { + nasm_warn(WARN_ZEROING, "uninitialized space declared in" + " non-BSS section `%s': zeroing", s->name); + elf_sect_write(s, NULL, size); + } else + s->len += size; + break; + + case OUT_RAWDATA: + if (segment != NO_SEG) + nasm_panic("OUT_RAWDATA with other than NO_SEG"); + elf_sect_write(s, data, size); + break; + + case OUT_ADDRESS: + { + int isize = (int)size; + int asize = abs((int)size); + + addr = *(int64_t *)data; + if (segment == NO_SEG) { + /* Do nothing */ + } else if (segment & 1) { + nasm_nonfatal("ELF format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + switch (isize) { + case 1: + case -1: + elf_add_reloc(s, segment, addr, R_X86_64_8); + break; + case 2: + case -2: + elf_add_reloc(s, segment, addr, R_X86_64_16); + break; + case 4: + elf_add_reloc(s, segment, addr, R_X86_64_32); + break; + case -4: + elf_add_reloc(s, segment, addr, R_X86_64_32S); + break; + case 8: + case -8: + elf_add_reloc(s, segment, addr, R_X86_64_64); + break; + default: + nasm_panic("internal error elfx32-hpa-871"); + break; + } + addr = 0; + } else if (wrt == elf_gotpc_sect + 1) { + /* + * The user will supply GOT relative to $$. ELF + * will let us have GOT relative to $. So we + * need to fix up the data item by $-$$. + */ + addr += s->len; + elf_add_reloc(s, segment, addr, R_X86_64_GOTPC32); + addr = 0; + } else if (wrt == elf_gotoff_sect + 1) { + nasm_nonfatal("ELFX32 doesn't support " + "R_X86_64_GOTOFF64"); + } else if (wrt == elf_got_sect + 1) { + switch (asize) { + case 4: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_GOT32, true); + addr = 0; + break; + default: + nasm_nonfatal("invalid ..got reference"); + break; + } + } else if (wrt == elf_sym_sect + 1) { + switch (isize) { + case 1: + case -1: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_8, false); + addr = 0; + break; + case 2: + case -2: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_16, false); + addr = 0; + break; + case 4: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_32, false); + addr = 0; + break; + case -4: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_32S, false); + addr = 0; + break; + case 8: + case -8: + elf_add_gsym_reloc(s, segment, addr, 0, + R_X86_64_64, false); + addr = 0; + break; + default: + nasm_panic("internal error elfx32-hpa-903"); + break; + } + } else if (wrt == elf_plt_sect + 1) { + nasm_nonfatal("ELF format cannot produce non-PC-" + "relative PLT references"); + } else { + nasm_nonfatal("ELF format does not support this" + " use of WRT"); + } + } + elf_sect_writeaddr(s, addr, asize); + break; + } + + case OUT_REL1ADR: + reltype = R_X86_64_PC8; + bytes = 1; + goto rel12adr; + + case OUT_REL2ADR: + reltype = R_X86_64_PC16; + bytes = 2; + goto rel12adr; + +rel12adr: + addr = *(int64_t *)data - size; + if (segment == segto) + nasm_panic("intra-segment OUT_REL1ADR"); + if (segment == NO_SEG) { + /* Do nothing */ + } else if (segment & 1) { + nasm_nonfatal("ELF format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + elf_add_reloc(s, segment, addr, reltype); + addr = 0; + } else { + nasm_nonfatal("unsupported %d-bit ELF relocation", bytes << 3); + } + } + elf_sect_writeaddr(s, addr, bytes); + break; + + case OUT_REL4ADR: + addr = *(int64_t *)data - size; + if (segment == segto) + nasm_panic("intra-segment OUT_REL4ADR"); + if (segment == NO_SEG) { + /* Do nothing */ + } else if (segment & 1) { + nasm_nonfatal("ELFX32 format does not support" + " segment base references"); + } else { + if (wrt == NO_SEG) { + elf_add_reloc(s, segment, addr, R_X86_64_PC32); + addr = 0; + } else if (wrt == elf_plt_sect + 1) { + elf_add_gsym_reloc(s, segment, addr+size, size, + R_X86_64_PLT32, true); + addr = 0; + } else if (wrt == elf_gotpc_sect + 1 || + wrt == elf_got_sect + 1) { + elf_add_gsym_reloc(s, segment, addr+size, size, + R_X86_64_GOTPCREL, true); + addr = 0; + } else if (wrt == elf_gotoff_sect + 1 || + wrt == elf_got_sect + 1) { + nasm_nonfatal("invalid ..gotoff reference"); + } else if (wrt == elf_gottpoff_sect + 1) { + elf_add_gsym_reloc(s, segment, addr+size, size, + R_X86_64_GOTTPOFF, true); + addr = 0; + } else { + nasm_nonfatal("ELFX32 format does not support this use of WRT"); + } + } + elf_sect_writeaddr(s, addr, 4); + break; + + case OUT_REL8ADR: + nasm_nonfatal("32-bit ELF format does not support 64-bit relocations"); + addr = 0; + elf_sect_writeaddr(s, addr, 8); + break; + + default: + panic(); + } +} + +/* + * Section index/count with a specified overflow value (usually SHN_INDEX, + * but 0 for e_shnum. + */ +static inline uint16_t elf_shndx(int section, uint16_t overflow) +{ + return cpu_to_le16(section < (int)SHN_LORESERVE ? section : overflow); +} + +struct ehdr_common { + uint8_t e_ident[EI_NIDENT]; + uint16_t e_type; + uint16_t e_machine; + uint32_t e_version; +}; + +union ehdr { + Elf32_Ehdr ehdr32; + Elf64_Ehdr ehdr64; + struct ehdr_common com; +}; + +static void elf_write(void) +{ + int align; + char *p; + int i; + size_t symtablocal; + int sec_shstrtab, sec_symtab, sec_strtab; + union ehdr ehdr; + + /* + * Add any sections we don't already have: + * rel/rela sections for the user sections, debug sections, and + * the ELF special sections. + */ + + sec_debug = nsections; + if (dfmt_is_stabs()) { + /* in case the debug information is wanted, just add these three sections... */ + add_sectname("", ".stab"); + add_sectname("", ".stabstr"); + add_sectname(efmt->relpfx, ".stab"); + } else if (dfmt_is_dwarf()) { + /* the dwarf debug standard specifies the following ten sections, + not all of which are currently implemented, + although all of them are defined. */ + add_sectname("", ".debug_aranges"); + add_sectname(efmt->relpfx, ".debug_aranges"); + add_sectname("", ".debug_pubnames"); + add_sectname("", ".debug_info"); + add_sectname(efmt->relpfx, ".debug_info"); + add_sectname("", ".debug_abbrev"); + add_sectname("", ".debug_line"); + add_sectname(efmt->relpfx, ".debug_line"); + add_sectname("", ".debug_frame"); + add_sectname("", ".debug_loc"); + } + + sec_shstrtab = add_sectname("", ".shstrtab"); + sec_symtab = add_sectname("", ".symtab"); + sec_strtab = add_sectname("", ".strtab"); + + /* + * Build the symbol table and relocation tables. + */ + symtablocal = elf_build_symtab(); + + /* Do we need an .symtab_shndx section? */ + if (symtab_shndx) + add_sectname("", ".symtab_shndx"); + + for (i = 0; i < nsects; i++) { + if (sects[i]->head) { + add_sectname(efmt->relpfx, sects[i]->name); + sects[i]->rel = efmt->elf_build_reltab(sects[i]->head); + } + } + + /* + * Output the ELF header. + */ + nasm_zero(ehdr); + + /* These fields are in the same place for 32 and 64 bits */ + memcpy(&ehdr.com.e_ident[EI_MAG0], ELFMAG, SELFMAG); + ehdr.com.e_ident[EI_CLASS] = efmt->ei_class; + ehdr.com.e_ident[EI_DATA] = ELFDATA2LSB; + ehdr.com.e_ident[EI_VERSION] = EV_CURRENT; + ehdr.com.e_ident[EI_OSABI] = elf_osabi; + ehdr.com.e_ident[EI_ABIVERSION] = elf_abiver; + ehdr.com.e_type = cpu_to_le16(ET_REL); + ehdr.com.e_machine = cpu_to_le16(efmt->e_machine); + ehdr.com.e_version = cpu_to_le16(EV_CURRENT); + + if (!efmt->elf64) { + ehdr.ehdr32.e_shoff = cpu_to_le32(sizeof ehdr); + ehdr.ehdr32.e_ehsize = cpu_to_le16(sizeof(Elf32_Ehdr)); + ehdr.ehdr32.e_shentsize = cpu_to_le16(sizeof(Elf32_Shdr)); + ehdr.ehdr32.e_shnum = elf_shndx(nsections, 0); + ehdr.ehdr32.e_shstrndx = elf_shndx(sec_shstrtab, SHN_XINDEX); + } else { + ehdr.ehdr64.e_shoff = cpu_to_le64(sizeof ehdr); + ehdr.ehdr64.e_ehsize = cpu_to_le16(sizeof(Elf64_Ehdr)); + ehdr.ehdr64.e_shentsize = cpu_to_le16(sizeof(Elf64_Shdr)); + ehdr.ehdr64.e_shnum = elf_shndx(nsections, 0); + ehdr.ehdr64.e_shstrndx = elf_shndx(sec_shstrtab, SHN_XINDEX); + } + + nasm_write(&ehdr, sizeof(ehdr), ofile); + elf_foffs = sizeof ehdr + efmt->shdr_size * nsections; + + /* + * Now output the section header table. + */ + align = ALIGN(elf_foffs, SEC_FILEALIGN) - elf_foffs; + elf_foffs += align; + elf_nsect = 0; + elf_sects = nasm_malloc(sizeof(*elf_sects) * nsections); + + /* SHN_UNDEF */ + elf_section_header(0, SHT_NULL, 0, NULL, false, + nsections > (int)SHN_LORESERVE ? nsections : 0, + sec_shstrtab >= (int)SHN_LORESERVE ? sec_shstrtab : 0, + 0, 0, 0); + p = shstrtab + 1; + + /* The normal sections */ + for (i = 0; i < nsects; i++) { + elf_section_header(p - shstrtab, sects[i]->type, sects[i]->flags, + sects[i]->data, true, + sects[i]->len, 0, 0, + sects[i]->align, sects[i]->entsize); + p += strlen(p) + 1; + } + + /* The debugging sections */ + if (dfmt_is_stabs()) { + /* for debugging information, create the last three sections + which are the .stab , .stabstr and .rel.stab sections respectively */ + + /* this function call creates the stab sections in memory */ + stabs_generate(); + + if (stabbuf && stabstrbuf && stabrelbuf) { + elf_section_header(p - shstrtab, SHT_PROGBITS, 0, stabbuf, false, + stablen, sec_stabstr, 0, 4, 12); + p += strlen(p) + 1; + + elf_section_header(p - shstrtab, SHT_STRTAB, 0, stabstrbuf, false, + stabstrlen, 0, 0, 4, 0); + p += strlen(p) + 1; + + /* link -> symtable info -> section to refer to */ + elf_section_header(p - shstrtab, efmt->reltype, 0, + stabrelbuf, false, stabrellen, + sec_symtab, sec_stab, + efmt->word, efmt->relsize); + p += strlen(p) + 1; + } + } else if (dfmt_is_dwarf()) { + /* for dwarf debugging information, create the ten dwarf sections */ + + /* this function call creates the dwarf sections in memory */ + if (dwarf_fsect) + dwarf_generate(); + + elf_section_header(p - shstrtab, SHT_PROGBITS, 0, arangesbuf, false, + arangeslen, 0, 0, 1, 0); + p += strlen(p) + 1; + + elf_section_header(p - shstrtab, efmt->reltype, 0, arangesrelbuf, false, + arangesrellen, sec_symtab, + sec_debug_aranges, + efmt->word, efmt->relsize); + p += strlen(p) + 1; + + elf_section_header(p - shstrtab, SHT_PROGBITS, 0, pubnamesbuf, + false, pubnameslen, 0, 0, 1, 0); + p += strlen(p) + 1; + + elf_section_header(p - shstrtab, SHT_PROGBITS, 0, infobuf, false, + infolen, 0, 0, 1, 0); + p += strlen(p) + 1; + + elf_section_header(p - shstrtab, efmt->reltype, 0, inforelbuf, false, + inforellen, sec_symtab, + sec_debug_info, + efmt->word, efmt->relsize); + p += strlen(p) + 1; + + elf_section_header(p - shstrtab, SHT_PROGBITS, 0, abbrevbuf, false, + abbrevlen, 0, 0, 1, 0); + p += strlen(p) + 1; + + elf_section_header(p - shstrtab, SHT_PROGBITS, 0, linebuf, false, + linelen, 0, 0, 1, 0); + p += strlen(p) + 1; + + elf_section_header(p - shstrtab, efmt->reltype, 0, linerelbuf, false, + linerellen, sec_symtab, + sec_debug_line, + efmt->word, efmt->relsize); + p += strlen(p) + 1; + + elf_section_header(p - shstrtab, SHT_PROGBITS, 0, framebuf, false, + framelen, 0, 0, 8, 0); + p += strlen(p) + 1; + + elf_section_header(p - shstrtab, SHT_PROGBITS, 0, locbuf, false, + loclen, 0, 0, 1, 0); + p += strlen(p) + 1; + } + + /* .shstrtab */ + elf_section_header(p - shstrtab, SHT_STRTAB, 0, shstrtab, false, + shstrtablen, 0, 0, 1, 0); + p += strlen(p) + 1; + + /* .symtab */ + elf_section_header(p - shstrtab, SHT_SYMTAB, 0, symtab, true, + symtab->datalen, sec_strtab, symtablocal, + efmt->word, efmt->sym_size); + p += strlen(p) + 1; + + /* .strtab */ + elf_section_header(p - shstrtab, SHT_STRTAB, 0, strs, true, + strslen, 0, 0, 1, 0); + p += strlen(p) + 1 +; + /* .symtab_shndx */ + if (symtab_shndx) { + elf_section_header(p - shstrtab, SHT_SYMTAB_SHNDX, 0, + symtab_shndx, true, symtab_shndx->datalen, + sec_symtab, 0, 1, 0); + p += strlen(p) + 1; + } + + /* The relocation sections */ + for (i = 0; i < nsects; i++) { + if (sects[i]->rel) { + elf_section_header(p - shstrtab, efmt->reltype, 0, + sects[i]->rel, true, sects[i]->rel->datalen, + sec_symtab, sects[i]->shndx, + efmt->word, efmt->relsize); + p += strlen(p) + 1; + } + } + fwritezero(align, ofile); + + /* + * Now output the sections. + */ + elf_write_sections(); + + nasm_free(elf_sects); + saa_free(symtab); + if (symtab_shndx) + saa_free(symtab_shndx); +} + +static size_t nsyms; + +static void elf_sym(const struct elf_symbol *sym) +{ + int shndx = sym->section; + + /* + * Careful here. This relies on sym->section being signed; for + * special section indices this value needs to be cast to + * (int16_t) so that it sign-extends, however, here SHN_LORESERVE + * is used as an unsigned constant. + */ + if (shndx >= (int)SHN_LORESERVE) { + if (unlikely(!symtab_shndx)) { + /* Create symtab_shndx and fill previous entries with zero */ + symtab_shndx = saa_init(1); + saa_wbytes(symtab_shndx, NULL, nsyms << 2); + } + } else { + shndx = 0; /* Section index table always write zero */ + } + + if (symtab_shndx) + saa_write32(symtab_shndx, shndx); + + efmt->elf_sym(sym); + nsyms++; +} + +static void elf32_sym(const struct elf_symbol *sym) +{ + Elf32_Sym sym32; + + sym32.st_name = cpu_to_le32(sym->strpos); + sym32.st_value = cpu_to_le32(sym->symv.key); + sym32.st_size = cpu_to_le32(sym->size); + sym32.st_info = sym->type; + sym32.st_other = sym->other; + sym32.st_shndx = elf_shndx(sym->section, SHN_XINDEX); + saa_wbytes(symtab, &sym32, sizeof sym32); +} + +static void elf64_sym(const struct elf_symbol *sym) +{ + Elf64_Sym sym64; + + sym64.st_name = cpu_to_le32(sym->strpos); + sym64.st_value = cpu_to_le64(sym->symv.key); + sym64.st_size = cpu_to_le64(sym->size); + sym64.st_info = sym->type; + sym64.st_other = sym->other; + sym64.st_shndx = elf_shndx(sym->section, SHN_XINDEX); + saa_wbytes(symtab, &sym64, sizeof sym64); +} + +static size_t elf_build_symtab(void) +{ + struct elf_symbol *sym, xsym; + size_t nlocal; + int i; + + symtab = saa_init(1); + symtab_shndx = NULL; + + /* + * Zero symbol first as required by spec. + */ + nasm_zero(xsym); + elf_sym(&xsym); + + /* + * Next, an entry for the file name. + */ + nasm_zero(xsym); + xsym.strpos = 1; + xsym.type = ELF32_ST_INFO(STB_LOCAL, STT_FILE); + xsym.section = XSHN_ABS; + elf_sym(&xsym); + + /* + * Now some standard symbols defining the segments, for relocation + * purposes. + */ + nasm_zero(xsym); + for (i = 1; i <= nsects; i++) { + xsym.type = ELF64_ST_INFO(STB_LOCAL, STT_SECTION); + xsym.section = i; + elf_sym(&xsym); + } + + /* + * dwarf needs symbols for debug sections + * which are relocation targets. + */ + if (dfmt_is_dwarf()) { + dwarf_infosym = nsyms; + xsym.section = sec_debug_info; + elf_sym(&xsym); + + dwarf_abbrevsym = nsyms; + xsym.section = sec_debug_abbrev; + elf_sym(&xsym); + + dwarf_linesym = nsyms; + xsym.section = sec_debug_line; + elf_sym(&xsym); + } + + /* + * Now the other local symbols. + */ + saa_rewind(syms); + while ((sym = saa_rstruct(syms))) { + if (!sym_type_local(sym->type)) + continue; + + elf_sym(sym); + } + + nlocal = nsyms; + + /* + * Now the global symbols. + */ + saa_rewind(syms); + while ((sym = saa_rstruct(syms))) { + if (sym_type_local(sym->type)) + continue; + + elf_sym(sym); + } + + return nlocal; +} + +static struct SAA *elf32_build_reltab(const struct elf_reloc *r) +{ + struct SAA *s; + int32_t global_offset; + Elf32_Rel rel32; + + if (!r) + return NULL; + + s = saa_init(1L); + + /* + * How to onvert from a global placeholder to a real symbol index; + * the +2 refers to the two special entries, the null entry and + * the filename entry. + */ + global_offset = -GLOBAL_TEMP_BASE + nsects + nlocals + ndebugs + 2; + + while (r) { + int32_t sym = r->symbol; + + if (sym >= GLOBAL_TEMP_BASE) + sym += global_offset; + + rel32.r_offset = cpu_to_le32(r->address); + rel32.r_info = cpu_to_le32(ELF32_R_INFO(sym, r->type)); + saa_wbytes(s, &rel32, sizeof rel32); + + r = r->next; + } + + return s; +} + +static struct SAA *elfx32_build_reltab(const struct elf_reloc *r) +{ + struct SAA *s; + int32_t global_offset; + Elf32_Rela rela32; + + if (!r) + return NULL; + + s = saa_init(1L); + + /* + * How to onvert from a global placeholder to a real symbol index; + * the +2 refers to the two special entries, the null entry and + * the filename entry. + */ + global_offset = -GLOBAL_TEMP_BASE + nsects + nlocals + ndebugs + 2; + + while (r) { + int32_t sym = r->symbol; + + if (sym >= GLOBAL_TEMP_BASE) + sym += global_offset; + + rela32.r_offset = cpu_to_le32(r->address); + rela32.r_info = cpu_to_le32(ELF32_R_INFO(sym, r->type)); + rela32.r_addend = cpu_to_le32(r->offset); + saa_wbytes(s, &rela32, sizeof rela32); + + r = r->next; + } + + return s; +} + +static struct SAA *elf64_build_reltab(const struct elf_reloc *r) +{ + struct SAA *s; + int32_t global_offset; + Elf64_Rela rela64; + + if (!r) + return NULL; + + s = saa_init(1L); + + /* + * How to onvert from a global placeholder to a real symbol index; + * the +2 refers to the two special entries, the null entry and + * the filename entry. + */ + global_offset = -GLOBAL_TEMP_BASE + nsects + nlocals + ndebugs + 2; + + while (r) { + int32_t sym = r->symbol; + + if (sym >= GLOBAL_TEMP_BASE) + sym += global_offset; + + rela64.r_offset = cpu_to_le64(r->address); + rela64.r_info = cpu_to_le64(ELF64_R_INFO(sym, r->type)); + rela64.r_addend = cpu_to_le64(r->offset); + saa_wbytes(s, &rela64, sizeof rela64); + + r = r->next; + } + + return s; +} + +static void elf_section_header(int name, int type, uint64_t flags, + void *data, bool is_saa, uint64_t datalen, + int link, int info, + uint64_t align, uint64_t entsize) +{ + elf_sects[elf_nsect].data = data; + elf_sects[elf_nsect].len = datalen; + elf_sects[elf_nsect].is_saa = is_saa; + elf_nsect++; + + if (!efmt->elf64) { + Elf32_Shdr shdr; + + shdr.sh_name = cpu_to_le32(name); + shdr.sh_type = cpu_to_le32(type); + shdr.sh_flags = cpu_to_le32(flags); + shdr.sh_addr = 0; + shdr.sh_offset = cpu_to_le32(type == SHT_NULL ? 0 : elf_foffs); + shdr.sh_size = cpu_to_le32(datalen); + if (data) + elf_foffs += ALIGN(datalen, SEC_FILEALIGN); + shdr.sh_link = cpu_to_le32(link); + shdr.sh_info = cpu_to_le32(info); + shdr.sh_addralign = cpu_to_le32(align); + shdr.sh_entsize = cpu_to_le32(entsize); + + nasm_write(&shdr, sizeof shdr, ofile); + } else { + Elf64_Shdr shdr; + + shdr.sh_name = cpu_to_le32(name); + shdr.sh_type = cpu_to_le32(type); + shdr.sh_flags = cpu_to_le64(flags); + shdr.sh_addr = 0; + shdr.sh_offset = cpu_to_le64(type == SHT_NULL ? 0 : elf_foffs); + shdr.sh_size = cpu_to_le64(datalen); + if (data) + elf_foffs += ALIGN(datalen, SEC_FILEALIGN); + shdr.sh_link = cpu_to_le32(link); + shdr.sh_info = cpu_to_le32(info); + shdr.sh_addralign = cpu_to_le64(align); + shdr.sh_entsize = cpu_to_le64(entsize); + + nasm_write(&shdr, sizeof shdr, ofile); + } +} + +static void elf_write_sections(void) +{ + int i; + for (i = 0; i < elf_nsect; i++) + if (elf_sects[i].data) { + int32_t len = elf_sects[i].len; + int32_t reallen = ALIGN(len, SEC_FILEALIGN); + int32_t align = reallen - len; + if (elf_sects[i].is_saa) + saa_fpwrite(elf_sects[i].data, ofile); + else + nasm_write(elf_sects[i].data, len, ofile); + fwritezero(align, ofile); + } +} + +static void elf_sect_write(struct elf_section *sect, const void *data, size_t len) +{ + saa_wbytes(sect->data, data, len); + sect->len += len; +} + +static void elf_sect_writeaddr(struct elf_section *sect, int64_t data, size_t len) +{ + saa_writeaddr(sect->data, data, len); + sect->len += len; +} + +static void elf_sectalign(int32_t seg, unsigned int value) +{ + struct elf_section *s; + + s = raa_read_ptr(section_by_index, seg >> 1); + if (!s || !is_power2(value)) + return; + + if (value > s->align) + s->align = value; +} + +extern macros_t elf_stdmac[]; + +/* Claim "elf" as a pragma namespace, for the future */ +static const struct pragma_facility elf_pragma_list[] = +{ + { "elf", NULL }, + { NULL, NULL } /* Implements the canonical output name */ +}; + + +static const struct dfmt elf32_df_dwarf = { + "ELF32 (i386) dwarf (newer)", + "dwarf", + dwarf32_init, + dwarf_linenum, + null_debug_deflabel, + NULL, /* .debug_smacros */ + NULL, /* .debug_include */ + NULL, /* .debug_mmacros */ + null_debug_directive, + debug_typevalue, + dwarf_output, + dwarf_cleanup, + NULL /* pragma list */ +}; + +static const struct dfmt elf32_df_stabs = { + "ELF32 (i386) stabs (older)", + "stabs", + null_debug_init, + stabs_linenum, + null_debug_deflabel, + NULL, /* .debug_smacros */ + NULL, /* .debug_include */ + NULL, /* .debug_mmacros */ + null_debug_directive, + debug_typevalue, + stabs_output, + stabs_cleanup, + NULL /* pragma list */ +}; + +static const struct dfmt * const elf32_debugs_arr[3] = + { &elf32_df_dwarf, &elf32_df_stabs, NULL }; + +const struct ofmt of_elf32 = { + "ELF32 (i386) (Linux, most Unix variants)", + "elf32", + ".o", + 0, + 32, + elf32_debugs_arr, + &elf32_df_dwarf, + elf_stdmac, + elf32_init, + null_reset, + nasm_do_legacy_output, + elf32_out, + elf_deflabel, + elf_section_names, + NULL, + elf_sectalign, + null_segbase, + elf_directive, + elf_cleanup, + elf_pragma_list, +}; + +static const struct dfmt elf64_df_dwarf = { + "ELF64 (x86-64) dwarf (newer)", + "dwarf", + dwarf64_init, + dwarf_linenum, + null_debug_deflabel, + NULL, /* .debug_smacros */ + NULL, /* .debug_include */ + NULL, /* .debug_mmacros */ + null_debug_directive, + debug_typevalue, + dwarf_output, + dwarf_cleanup, + NULL /* pragma list */ +}; + +static const struct dfmt elf64_df_stabs = { + "ELF64 (x86-64) stabs (older)", + "stabs", + null_debug_init, + stabs_linenum, + null_debug_deflabel, + NULL, /* .debug_smacros */ + NULL, /* .debug_include */ + NULL, /* .debug_mmacros */ + null_debug_directive, + debug_typevalue, + stabs_output, + stabs_cleanup, + NULL /* pragma list */ +}; + +static const struct dfmt * const elf64_debugs_arr[3] = + { &elf64_df_dwarf, &elf64_df_stabs, NULL }; + +const struct ofmt of_elf64 = { + "ELF64 (x86-64) (Linux, most Unix variants)", + "elf64", + ".o", + 0, + 64, + elf64_debugs_arr, + &elf64_df_dwarf, + elf_stdmac, + elf64_init, + null_reset, + nasm_do_legacy_output, + elf64_out, + elf_deflabel, + elf_section_names, + NULL, + elf_sectalign, + null_segbase, + elf_directive, + elf_cleanup, + elf_pragma_list, +}; + +static const struct dfmt elfx32_df_dwarf = { + "ELFx32 (x86-64) dwarf (newer)", + "dwarf", + dwarfx32_init, + dwarf_linenum, + null_debug_deflabel, + NULL, /* .debug_smacros */ + NULL, /* .debug_include */ + NULL, /* .debug_mmacros */ + null_debug_directive, + debug_typevalue, + dwarf_output, + dwarf_cleanup, + NULL /* pragma list */ +}; + +static const struct dfmt elfx32_df_stabs = { + "ELFx32 (x86-64) stabs (older)", + "stabs", + null_debug_init, + stabs_linenum, + null_debug_deflabel, + NULL, /* .debug_smacros */ + NULL, /* .debug_include */ + NULL, /* .debug_mmacros */ + null_debug_directive, + debug_typevalue, + stabs_output, + stabs_cleanup, + elf_pragma_list, +}; + +static const struct dfmt * const elfx32_debugs_arr[3] = + { &elfx32_df_dwarf, &elfx32_df_stabs, NULL }; + +const struct ofmt of_elfx32 = { + "ELFx32 (ELF32 for x86-64) (Linux)", + "elfx32", + ".o", + 0, + 64, + elfx32_debugs_arr, + &elfx32_df_dwarf, + elf_stdmac, + elfx32_init, + null_reset, + nasm_do_legacy_output, + elfx32_out, + elf_deflabel, + elf_section_names, + NULL, + elf_sectalign, + null_segbase, + elf_directive, + elf_cleanup, + NULL /* pragma list */ +}; + +static bool is_elf64(void) +{ + return ofmt == &of_elf64; +} + +static bool is_elf32(void) +{ + return ofmt == &of_elf32; +} + +static bool is_elfx32(void) +{ + return ofmt == &of_elfx32; +} + +static bool dfmt_is_stabs(void) +{ + return dfmt == &elf32_df_stabs || + dfmt == &elfx32_df_stabs || + dfmt == &elf64_df_stabs; +} + +static bool dfmt_is_dwarf(void) +{ + return dfmt == &elf32_df_dwarf || + dfmt == &elfx32_df_dwarf || + dfmt == &elf64_df_dwarf; +} + +/* common debugging routines */ +static void debug_typevalue(int32_t type) +{ + int32_t stype, ssize; + switch (TYM_TYPE(type)) { + case TY_LABEL: + ssize = 0; + stype = STT_NOTYPE; + break; + case TY_BYTE: + ssize = 1; + stype = STT_OBJECT; + break; + case TY_WORD: + ssize = 2; + stype = STT_OBJECT; + break; + case TY_DWORD: + ssize = 4; + stype = STT_OBJECT; + break; + case TY_FLOAT: + ssize = 4; + stype = STT_OBJECT; + break; + case TY_QWORD: + ssize = 8; + stype = STT_OBJECT; + break; + case TY_TBYTE: + ssize = 10; + stype = STT_OBJECT; + break; + case TY_OWORD: + ssize = 16; + stype = STT_OBJECT; + break; + case TY_YWORD: + ssize = 32; + stype = STT_OBJECT; + break; + case TY_ZWORD: + ssize = 64; + stype = STT_OBJECT; + break; + case TY_COMMON: + ssize = 0; + stype = STT_COMMON; + break; + case TY_SEG: + ssize = 0; + stype = STT_SECTION; + break; + case TY_EXTERN: + ssize = 0; + stype = STT_NOTYPE; + break; + case TY_EQU: + ssize = 0; + stype = STT_NOTYPE; + break; + default: + ssize = 0; + stype = STT_NOTYPE; + break; + } + /* Set type and size info on most recently seen symbol if we haven't set it already. + But avoid setting size info on object (data) symbols in absolute sections (which + is primarily structs); some environments get confused with non-zero-extent absolute + object symbols and end up showing them in backtraces for NULL fn pointer calls. */ + if (stype == STT_OBJECT && lastsym && !lastsym->type && lastsym->section != XSHN_ABS) { + lastsym->size = ssize; + lastsym->type = stype; + } +} + +/* stabs debugging routines */ + +static void stabs_linenum(const char *filename, int32_t linenumber, int32_t segto) +{ + (void)segto; + if (!stabs_filename) { + stabs_filename = nasm_malloc(strlen(filename) + 1); + strcpy(stabs_filename, filename); + } else { + if (strcmp(stabs_filename, filename)) { + /* yep, a memory leak...this program is one-shot anyway, so who cares... + in fact, this leak comes in quite handy to maintain a list of files + encountered so far in the symbol lines... */ + + /* why not nasm_free(stabs_filename); we're done with the old one */ + + stabs_filename = nasm_malloc(strlen(filename) + 1); + strcpy(stabs_filename, filename); + } + } + debug_immcall = 1; + currentline = linenumber; +} + +static void stabs_output(int type, void *param) +{ + struct symlininfo *s; + struct linelist *el; + if (type == TY_DEBUGSYMLIN) { + if (debug_immcall) { + s = (struct symlininfo *)param; + if (!(sects[s->section]->flags & SHF_EXECINSTR)) + return; /* line info is only collected for executable sections */ + numlinestabs++; + el = nasm_malloc(sizeof(struct linelist)); + el->info.offset = s->offset; + el->info.section = s->section; + el->info.name = s->name; + el->line = currentline; + el->filename = stabs_filename; + el->next = 0; + if (stabslines) { + stabslines->last->next = el; + stabslines->last = el; + } else { + stabslines = el; + stabslines->last = el; + } + } + } + debug_immcall = 0; +} + +/* for creating the .stab , .stabstr and .rel.stab sections in memory */ + +static void stabs_generate(void) +{ + int i, numfiles, strsize, numstabs = 0, currfile, mainfileindex; + uint8_t *sbuf, *ssbuf, *rbuf, *sptr, *rptr; + char **allfiles; + int *fileidx; + + struct linelist *ptr; + + ptr = stabslines; + + allfiles = nasm_zalloc(numlinestabs * sizeof(char *)); + numfiles = 0; + while (ptr) { + if (numfiles == 0) { + allfiles[0] = ptr->filename; + numfiles++; + } else { + for (i = 0; i < numfiles; i++) { + if (!strcmp(allfiles[i], ptr->filename)) + break; + } + if (i >= numfiles) { + allfiles[i] = ptr->filename; + numfiles++; + } + } + ptr = ptr->next; + } + strsize = 1; + fileidx = nasm_malloc(numfiles * sizeof(int)); + for (i = 0; i < numfiles; i++) { + fileidx[i] = strsize; + strsize += strlen(allfiles[i]) + 1; + } + currfile = mainfileindex = 0; + for (i = 0; i < numfiles; i++) { + if (!strcmp(allfiles[i], elf_module)) { + currfile = mainfileindex = i; + break; + } + } + + /* + * worst case size of the stab buffer would be: + * the sourcefiles changes each line, which would mean 1 SOL, 1 SYMLIN per line + * plus one "ending" entry + */ + sbuf = nasm_malloc((numlinestabs * 2 + 4) * + sizeof(struct stabentry)); + ssbuf = nasm_malloc(strsize); + rbuf = nasm_malloc(numlinestabs * (is_elf64() ? 16 : 8) * (2 + 3)); + rptr = rbuf; + + for (i = 0; i < numfiles; i++) + strcpy((char *)ssbuf + fileidx[i], allfiles[i]); + ssbuf[0] = 0; + + stabstrlen = strsize; /* set global variable for length of stab strings */ + + sptr = sbuf; + ptr = stabslines; + numstabs = 0; + + if (ptr) { + /* + * this is the first stab, its strx points to the filename of the + * source-file, the n_desc field should be set to the number + * of remaining stabs + */ + WRITE_STAB(sptr, fileidx[0], 0, 0, 0, stabstrlen); + + /* this is the stab for the main source file */ + WRITE_STAB(sptr, fileidx[mainfileindex], N_SO, 0, 0, 0); + + /* relocation table entry */ + + /* + * Since the symbol table has two entries before + * the section symbols, the index in the info.section + * member must be adjusted by adding 2 + */ + + if (is_elf32()) { + WRITELONG(rptr, (sptr - sbuf) - 4); + WRITELONG(rptr, ((ptr->info.section + 2) << 8) | R_386_32); + } else if (is_elfx32()) { + WRITELONG(rptr, (sptr - sbuf) - 4); + WRITELONG(rptr, ((ptr->info.section + 2) << 8) | R_X86_64_32); + WRITELONG(rptr, 0); + } else { + nasm_assert(is_elf64()); + WRITEDLONG(rptr, (int64_t)(sptr - sbuf) - 4); + WRITELONG(rptr, R_X86_64_32); + WRITELONG(rptr, ptr->info.section + 2); + WRITEDLONG(rptr, 0); + } + numstabs++; + } + + if (is_elf32()) { + while (ptr) { + if (strcmp(allfiles[currfile], ptr->filename)) { + /* oops file has changed... */ + for (i = 0; i < numfiles; i++) + if (!strcmp(allfiles[i], ptr->filename)) + break; + currfile = i; + WRITE_STAB(sptr, fileidx[currfile], N_SOL, 0, 0, + ptr->info.offset); + numstabs++; + + /* relocation table entry */ + WRITELONG(rptr, (sptr - sbuf) - 4); + WRITELONG(rptr, ((ptr->info.section + 2) << 8) | R_386_32); + } + + WRITE_STAB(sptr, 0, N_SLINE, 0, ptr->line, ptr->info.offset); + numstabs++; + + /* relocation table entry */ + WRITELONG(rptr, (sptr - sbuf) - 4); + WRITELONG(rptr, ((ptr->info.section + 2) << 8) | R_386_32); + + ptr = ptr->next; + } + } else if (is_elfx32()) { + while (ptr) { + if (strcmp(allfiles[currfile], ptr->filename)) { + /* oops file has changed... */ + for (i = 0; i < numfiles; i++) + if (!strcmp(allfiles[i], ptr->filename)) + break; + currfile = i; + WRITE_STAB(sptr, fileidx[currfile], N_SOL, 0, 0, + ptr->info.offset); + numstabs++; + + /* relocation table entry */ + WRITELONG(rptr, (sptr - sbuf) - 4); + WRITELONG(rptr, ((ptr->info.section + 2) << 8) | R_X86_64_32); + WRITELONG(rptr, ptr->info.offset); + } + + WRITE_STAB(sptr, 0, N_SLINE, 0, ptr->line, ptr->info.offset); + numstabs++; + + /* relocation table entry */ + WRITELONG(rptr, (sptr - sbuf) - 4); + WRITELONG(rptr, ((ptr->info.section + 2) << 8) | R_X86_64_32); + WRITELONG(rptr, ptr->info.offset); + + ptr = ptr->next; + } + } else { + nasm_assert(is_elf64()); + while (ptr) { + if (strcmp(allfiles[currfile], ptr->filename)) { + /* oops file has changed... */ + for (i = 0; i < numfiles; i++) + if (!strcmp(allfiles[i], ptr->filename)) + break; + currfile = i; + WRITE_STAB(sptr, fileidx[currfile], N_SOL, 0, 0, + ptr->info.offset); + numstabs++; + + /* relocation table entry */ + WRITEDLONG(rptr, (int64_t)(sptr - sbuf) - 4); + WRITELONG(rptr, R_X86_64_32); + WRITELONG(rptr, ptr->info.section + 2); + WRITEDLONG(rptr, ptr->info.offset); + } + + WRITE_STAB(sptr, 0, N_SLINE, 0, ptr->line, ptr->info.offset); + numstabs++; + + /* relocation table entry */ + WRITEDLONG(rptr, (int64_t)(sptr - sbuf) - 4); + WRITELONG(rptr, R_X86_64_32); + WRITELONG(rptr, ptr->info.section + 2); + WRITEDLONG(rptr, ptr->info.offset); + + ptr = ptr->next; + } + } + + /* this is an "ending" token */ + WRITE_STAB(sptr, 0, N_SO, 0, 0, 0); + numstabs++; + + ((struct stabentry *)sbuf)->n_desc = numstabs; + + nasm_free(allfiles); + nasm_free(fileidx); + + stablen = (sptr - sbuf); + stabrellen = (rptr - rbuf); + stabrelbuf = rbuf; + stabbuf = sbuf; + stabstrbuf = ssbuf; +} + +static void stabs_cleanup(void) +{ + struct linelist *ptr, *del; + if (!stabslines) + return; + + ptr = stabslines; + while (ptr) { + del = ptr; + ptr = ptr->next; + nasm_free(del); + } + + nasm_free(stabbuf); + nasm_free(stabrelbuf); + nasm_free(stabstrbuf); +} + +/* dwarf routines */ + +static void dwarf_init_common(const struct dwarf_format *fmt) +{ + dwfmt = fmt; + ndebugs = 3; /* 3 debug symbols */ +} + +static void dwarf32_init(void) +{ + static const struct dwarf_format dwfmt32 = { + 2, /* DWARF 2 */ + /* section version numbers: */ + { 2, /* .debug_aranges */ + 0, /* .rela.debug_aranges */ + 2, /* .debug_pubnames */ + 2, /* .debug_info */ + 0, /* .rela.debug_info */ + 0, /* .debug_abbrev */ + 2, /* .debug_line */ + 0, /* .rela.debug_line */ + 1, /* .debug_frame */ + 0 } /* .debug_loc */ + }; + dwarf_init_common(&dwfmt32); +} + +static void dwarfx32_init(void) +{ + static const struct dwarf_format dwfmtx32 = { + 3, /* DWARF 3 */ + /* section version numbers: */ + { 2, /* .debug_aranges */ + 0, /* .rela.debug_aranges */ + 2, /* .debug_pubnames */ + 3, /* .debug_info */ + 0, /* .rela.debug_info */ + 0, /* .debug_abbrev */ + 3, /* .debug_line */ + 0, /* .rela.debug_line */ + 3, /* .debug_frame */ + 0 } /* .debug_loc */ + }; + dwarf_init_common(&dwfmtx32); +} + +static void dwarf64_init(void) +{ + static const struct dwarf_format dwfmt64 = { + 3, /* DWARF 3 */ + /* section version numbers: */ + { 2, /* .debug_aranges */ + 0, /* .rela.debug_aranges */ + 2, /* .debug_pubnames */ + 3, /* .debug_info */ + 0, /* .rela.debug_info */ + 0, /* .debug_abbrev */ + 3, /* .debug_line */ + 0, /* .rela.debug_line */ + 3, /* .debug_frame */ + 0 } /* .debug_loc */ + }; + dwarf_init_common(&dwfmt64); +} + +static void dwarf_linenum(const char *filename, int32_t linenumber, + int32_t segto) +{ + (void)segto; + dwarf_findfile(filename); + debug_immcall = 1; + currentline = linenumber; +} + +/* called from elf_out with type == TY_DEBUGSYMLIN */ +static void dwarf_output(int type, void *param) +{ + int ln, aa, inx, maxln, soc; + struct symlininfo *s; + struct SAA *plinep; + + (void)type; + + s = (struct symlininfo *)param; + + /* line number info is only gathered for executable sections */ + if (!(sects[s->section]->flags & SHF_EXECINSTR)) + return; + + /* Check if section index has changed */ + if (!(dwarf_csect && (dwarf_csect->section) == (s->section))) + dwarf_findsect(s->section); + + /* do nothing unless line or file has changed */ + if (!debug_immcall) + return; + + ln = currentline - dwarf_csect->line; + aa = s->offset - dwarf_csect->offset; + inx = dwarf_clist->line; + plinep = dwarf_csect->psaa; + /* check for file change */ + if (!(inx == dwarf_csect->file)) { + saa_write8(plinep,DW_LNS_set_file); + saa_write8(plinep,inx); + dwarf_csect->file = inx; + } + /* check for line change */ + if (ln) { + /* test if in range of special op code */ + maxln = line_base + line_range; + soc = (ln - line_base) + (line_range * aa) + opcode_base; + if (ln >= line_base && ln < maxln && soc < 256) { + saa_write8(plinep,soc); + } else { + saa_write8(plinep,DW_LNS_advance_line); + saa_wleb128s(plinep,ln); + if (aa) { + saa_write8(plinep,DW_LNS_advance_pc); + saa_wleb128u(plinep,aa); + } + saa_write8(plinep,DW_LNS_copy); + } + dwarf_csect->line = currentline; + dwarf_csect->offset = s->offset; + } + + /* show change handled */ + debug_immcall = 0; +} + + +static void dwarf_generate(void) +{ + uint8_t *pbuf; + int indx; + struct linelist *ftentry; + struct SAA *paranges, *ppubnames, *pinfo, *pabbrev, *plines, *plinep; + struct SAA *parangesrel, *plinesrel, *pinforel; + struct sectlist *psect; + size_t saalen, linepoff, totlen, highaddr; + + if (is_elf32()) { + /* write epilogues for each line program range */ + /* and build aranges section */ + paranges = saa_init(1L); + parangesrel = saa_init(1L); + saa_write16(paranges, dwfmt->sect_version[DWARF_ARANGES]); + saa_write32(parangesrel, paranges->datalen+4); + saa_write32(parangesrel, (dwarf_infosym << 8) + R_386_32); /* reloc to info */ + saa_write32(paranges,0); /* offset into info */ + saa_write8(paranges,4); /* pointer size */ + saa_write8(paranges,0); /* not segmented */ + saa_write32(paranges,0); /* padding */ + /* iterate though sectlist entries */ + psect = dwarf_fsect; + totlen = 0; + highaddr = 0; + for (indx = 0; indx < dwarf_nsections; indx++) { + plinep = psect->psaa; + /* Line Number Program Epilogue */ + saa_write8(plinep,2); /* std op 2 */ + saa_write8(plinep,(sects[psect->section]->len)-psect->offset); + saa_write8(plinep,DW_LNS_extended_op); + saa_write8(plinep,1); /* operand length */ + saa_write8(plinep,DW_LNE_end_sequence); + totlen += plinep->datalen; + /* range table relocation entry */ + saa_write32(parangesrel, paranges->datalen + 4); + saa_write32(parangesrel, ((uint32_t) (psect->section + 2) << 8) + R_386_32); + /* range table entry */ + saa_write32(paranges,0x0000); /* range start */ + saa_write32(paranges,sects[psect->section]->len); /* range length */ + highaddr += sects[psect->section]->len; + /* done with this entry */ + psect = psect->next; + } + saa_write32(paranges,0); /* null address */ + saa_write32(paranges,0); /* null length */ + saalen = paranges->datalen; + arangeslen = saalen + 4; + arangesbuf = pbuf = nasm_malloc(arangeslen); + WRITELONG(pbuf,saalen); /* initial length */ + saa_rnbytes(paranges, pbuf, saalen); + saa_free(paranges); + } else if (is_elfx32()) { + /* write epilogues for each line program range */ + /* and build aranges section */ + paranges = saa_init(1L); + parangesrel = saa_init(1L); + saa_write16(paranges, dwfmt->sect_version[DWARF_ARANGES]); + saa_write32(parangesrel, paranges->datalen+4); + saa_write32(parangesrel, (dwarf_infosym << 8) + R_X86_64_32); /* reloc to info */ + saa_write32(parangesrel, 0); + saa_write32(paranges,0); /* offset into info */ + saa_write8(paranges,4); /* pointer size */ + saa_write8(paranges,0); /* not segmented */ + saa_write32(paranges,0); /* padding */ + /* iterate though sectlist entries */ + psect = dwarf_fsect; + totlen = 0; + highaddr = 0; + for (indx = 0; indx < dwarf_nsections; indx++) { + plinep = psect->psaa; + /* Line Number Program Epilogue */ + saa_write8(plinep,2); /* std op 2 */ + saa_write8(plinep,(sects[psect->section]->len)-psect->offset); + saa_write8(plinep,DW_LNS_extended_op); + saa_write8(plinep,1); /* operand length */ + saa_write8(plinep,DW_LNE_end_sequence); + totlen += plinep->datalen; + /* range table relocation entry */ + saa_write32(parangesrel, paranges->datalen + 4); + saa_write32(parangesrel, ((uint32_t) (psect->section + 2) << 8) + R_X86_64_32); + saa_write32(parangesrel, (uint32_t) 0); + /* range table entry */ + saa_write32(paranges,0x0000); /* range start */ + saa_write32(paranges,sects[psect->section]->len); /* range length */ + highaddr += sects[psect->section]->len; + /* done with this entry */ + psect = psect->next; + } + saa_write32(paranges,0); /* null address */ + saa_write32(paranges,0); /* null length */ + saalen = paranges->datalen; + arangeslen = saalen + 4; + arangesbuf = pbuf = nasm_malloc(arangeslen); + WRITELONG(pbuf,saalen); /* initial length */ + saa_rnbytes(paranges, pbuf, saalen); + saa_free(paranges); + } else { + nasm_assert(is_elf64()); + /* write epilogues for each line program range */ + /* and build aranges section */ + paranges = saa_init(1L); + parangesrel = saa_init(1L); + saa_write16(paranges, dwfmt->sect_version[DWARF_ARANGES]); + saa_write64(parangesrel, paranges->datalen+4); + saa_write64(parangesrel, (dwarf_infosym << 32) + R_X86_64_32); /* reloc to info */ + saa_write64(parangesrel, 0); + saa_write32(paranges,0); /* offset into info */ + saa_write8(paranges,8); /* pointer size */ + saa_write8(paranges,0); /* not segmented */ + saa_write32(paranges,0); /* padding */ + /* iterate though sectlist entries */ + psect = dwarf_fsect; + totlen = 0; + highaddr = 0; + for (indx = 0; indx < dwarf_nsections; indx++) { + plinep = psect->psaa; + /* Line Number Program Epilogue */ + saa_write8(plinep,2); /* std op 2 */ + saa_write8(plinep,(sects[psect->section]->len)-psect->offset); + saa_write8(plinep,DW_LNS_extended_op); + saa_write8(plinep,1); /* operand length */ + saa_write8(plinep,DW_LNE_end_sequence); + totlen += plinep->datalen; + /* range table relocation entry */ + saa_write64(parangesrel, paranges->datalen + 4); + saa_write64(parangesrel, ((uint64_t) (psect->section + 2) << 32) + R_X86_64_64); + saa_write64(parangesrel, (uint64_t) 0); + /* range table entry */ + saa_write64(paranges,0x0000); /* range start */ + saa_write64(paranges,sects[psect->section]->len); /* range length */ + highaddr += sects[psect->section]->len; + /* done with this entry */ + psect = psect->next; + } + saa_write64(paranges,0); /* null address */ + saa_write64(paranges,0); /* null length */ + saalen = paranges->datalen; + arangeslen = saalen + 4; + arangesbuf = pbuf = nasm_malloc(arangeslen); + WRITELONG(pbuf,saalen); /* initial length */ + saa_rnbytes(paranges, pbuf, saalen); + saa_free(paranges); + } + + /* build rela.aranges section */ + arangesrellen = saalen = parangesrel->datalen; + arangesrelbuf = pbuf = nasm_malloc(arangesrellen); + saa_rnbytes(parangesrel, pbuf, saalen); + saa_free(parangesrel); + + /* build pubnames section */ + if (0) { + ppubnames = saa_init(1L); + saa_write16(ppubnames,dwfmt->sect_version[DWARF_PUBNAMES]); + saa_write32(ppubnames,0); /* offset into info */ + saa_write32(ppubnames,0); /* space used in info */ + saa_write32(ppubnames,0); /* end of list */ + saalen = ppubnames->datalen; + pubnameslen = saalen + 4; + pubnamesbuf = pbuf = nasm_malloc(pubnameslen); + WRITELONG(pbuf,saalen); /* initial length */ + saa_rnbytes(ppubnames, pbuf, saalen); + saa_free(ppubnames); + } else { + /* Don't write a section without actual information */ + pubnameslen = 0; + } + + if (is_elf32()) { + /* build info section */ + pinfo = saa_init(1L); + pinforel = saa_init(1L); + saa_write16(pinfo, dwfmt->sect_version[DWARF_INFO]); + saa_write32(pinforel, pinfo->datalen + 4); + saa_write32(pinforel, (dwarf_abbrevsym << 8) + R_386_32); /* reloc to abbrev */ + saa_write32(pinfo,0); /* offset into abbrev */ + saa_write8(pinfo,4); /* pointer size */ + saa_write8(pinfo,1); /* abbrviation number LEB128u */ + saa_write32(pinforel, pinfo->datalen + 4); + saa_write32(pinforel, ((dwarf_fsect->section + 2) << 8) + R_386_32); + saa_write32(pinfo,0); /* DW_AT_low_pc */ + saa_write32(pinforel, pinfo->datalen + 4); + saa_write32(pinforel, ((dwarf_fsect->section + 2) << 8) + R_386_32); + saa_write32(pinfo,highaddr); /* DW_AT_high_pc */ + saa_write32(pinforel, pinfo->datalen + 4); + saa_write32(pinforel, (dwarf_linesym << 8) + R_386_32); /* reloc to line */ + saa_write32(pinfo,0); /* DW_AT_stmt_list */ + saa_wbytes(pinfo, elf_module, strlen(elf_module)+1); /* DW_AT_name */ + saa_wbytes(pinfo, elf_dir, strlen(elf_dir)+1); /* DW_AT_comp_dir */ + saa_wbytes(pinfo, nasm_signature(), nasm_signature_len()+1); + saa_write16(pinfo,DW_LANG_Mips_Assembler); + saa_write8(pinfo,2); /* abbrviation number LEB128u */ + saa_write32(pinforel, pinfo->datalen + 4); + saa_write32(pinforel, ((dwarf_fsect->section + 2) << 8) + R_386_32); + saa_write32(pinfo,0); /* DW_AT_low_pc */ + saa_write32(pinfo,0); /* DW_AT_frame_base */ + saa_write8(pinfo,0); /* end of entries */ + saalen = pinfo->datalen; + infolen = saalen + 4; + infobuf = pbuf = nasm_malloc(infolen); + WRITELONG(pbuf,saalen); /* initial length */ + saa_rnbytes(pinfo, pbuf, saalen); + saa_free(pinfo); + } else if (is_elfx32()) { + /* build info section */ + pinfo = saa_init(1L); + pinforel = saa_init(1L); + saa_write16(pinfo, dwfmt->sect_version[DWARF_INFO]); + saa_write32(pinforel, pinfo->datalen + 4); + saa_write32(pinforel, (dwarf_abbrevsym << 8) + R_X86_64_32); /* reloc to abbrev */ + saa_write32(pinforel, 0); + saa_write32(pinfo,0); /* offset into abbrev */ + saa_write8(pinfo,4); /* pointer size */ + saa_write8(pinfo,1); /* abbrviation number LEB128u */ + saa_write32(pinforel, pinfo->datalen + 4); + saa_write32(pinforel, ((dwarf_fsect->section + 2) << 8) + R_X86_64_32); + saa_write32(pinforel, 0); + saa_write32(pinfo,0); /* DW_AT_low_pc */ + saa_write32(pinforel, pinfo->datalen + 4); + saa_write32(pinforel, ((dwarf_fsect->section + 2) << 8) + R_X86_64_32); + saa_write32(pinforel, highaddr); + saa_write32(pinfo,0); /* DW_AT_high_pc */ + saa_write32(pinforel, pinfo->datalen + 4); + saa_write32(pinforel, (dwarf_linesym << 8) + R_X86_64_32); /* reloc to line */ + saa_write32(pinforel, 0); + saa_write32(pinfo,0); /* DW_AT_stmt_list */ + saa_wbytes(pinfo, elf_module, strlen(elf_module)+1); /* DW_AT_name */ + saa_wbytes(pinfo, elf_dir, strlen(elf_dir)+1); /* DW_AT_comp_dir */ + saa_wbytes(pinfo, nasm_signature(), nasm_signature_len()+1); + saa_write16(pinfo,DW_LANG_Mips_Assembler); + saa_write8(pinfo,2); /* abbrviation number LEB128u */ + saa_write32(pinforel, pinfo->datalen + 4); + saa_write32(pinforel, ((dwarf_fsect->section + 2) << 8) + R_X86_64_32); + saa_write32(pinforel, 0); + saa_write32(pinfo,0); /* DW_AT_low_pc */ + saa_write32(pinfo,0); /* DW_AT_frame_base */ + saa_write8(pinfo,0); /* end of entries */ + saalen = pinfo->datalen; + infolen = saalen + 4; + infobuf = pbuf = nasm_malloc(infolen); + WRITELONG(pbuf,saalen); /* initial length */ + saa_rnbytes(pinfo, pbuf, saalen); + saa_free(pinfo); + } else { + nasm_assert(is_elf64()); + /* build info section */ + pinfo = saa_init(1L); + pinforel = saa_init(1L); + saa_write16(pinfo, dwfmt->sect_version[DWARF_INFO]); + saa_write64(pinforel, pinfo->datalen + 4); + saa_write64(pinforel, (dwarf_abbrevsym << 32) + R_X86_64_32); /* reloc to abbrev */ + saa_write64(pinforel, 0); + saa_write32(pinfo,0); /* offset into abbrev */ + saa_write8(pinfo,8); /* pointer size */ + saa_write8(pinfo,1); /* abbrviation number LEB128u */ + saa_write64(pinforel, pinfo->datalen + 4); + saa_write64(pinforel, ((uint64_t)(dwarf_fsect->section + 2) << 32) + R_X86_64_64); + saa_write64(pinforel, 0); + saa_write64(pinfo,0); /* DW_AT_low_pc */ + saa_write64(pinforel, pinfo->datalen + 4); + saa_write64(pinforel, ((uint64_t)(dwarf_fsect->section + 2) << 32) + R_X86_64_64); + saa_write64(pinforel, highaddr); + saa_write64(pinfo,0); /* DW_AT_high_pc */ + saa_write64(pinforel, pinfo->datalen + 4); + saa_write64(pinforel, (dwarf_linesym << 32) + R_X86_64_32); /* reloc to line */ + saa_write64(pinforel, 0); + saa_write32(pinfo,0); /* DW_AT_stmt_list */ + saa_wbytes(pinfo, elf_module, strlen(elf_module)+1); /* DW_AT_name */ + saa_wbytes(pinfo, elf_dir, strlen(elf_dir)+1); /* DW_AT_comp_dir */ + saa_wbytes(pinfo, nasm_signature(), nasm_signature_len()+1); + saa_write16(pinfo,DW_LANG_Mips_Assembler); + saa_write8(pinfo,2); /* abbrviation number LEB128u */ + saa_write64(pinforel, pinfo->datalen + 4); + saa_write64(pinforel, ((uint64_t)(dwarf_fsect->section + 2) << 32) + R_X86_64_64); + saa_write64(pinforel, 0); + saa_write64(pinfo,0); /* DW_AT_low_pc */ + saa_write64(pinfo,0); /* DW_AT_frame_base */ + saa_write8(pinfo,0); /* end of entries */ + saalen = pinfo->datalen; + infolen = saalen + 4; + infobuf = pbuf = nasm_malloc(infolen); + WRITELONG(pbuf,saalen); /* initial length */ + saa_rnbytes(pinfo, pbuf, saalen); + saa_free(pinfo); + } + + /* build rela.info section */ + inforellen = saalen = pinforel->datalen; + inforelbuf = pbuf = nasm_malloc(inforellen); + saa_rnbytes(pinforel, pbuf, saalen); + saa_free(pinforel); + + /* build abbrev section */ + pabbrev = saa_init(1L); + saa_write8(pabbrev,1); /* entry number LEB128u */ + saa_write8(pabbrev,DW_TAG_compile_unit); /* tag LEB128u */ + saa_write8(pabbrev,1); /* has children */ + /* the following attributes and forms are all LEB128u values */ + saa_write8(pabbrev,DW_AT_low_pc); + saa_write8(pabbrev,DW_FORM_addr); + saa_write8(pabbrev,DW_AT_high_pc); + saa_write8(pabbrev,DW_FORM_addr); + saa_write8(pabbrev,DW_AT_stmt_list); + saa_write8(pabbrev,DW_FORM_data4); + saa_write8(pabbrev,DW_AT_name); + saa_write8(pabbrev,DW_FORM_string); + saa_write8(pabbrev,DW_AT_comp_dir); + saa_write8(pabbrev,DW_FORM_string); + saa_write8(pabbrev,DW_AT_producer); + saa_write8(pabbrev,DW_FORM_string); + saa_write8(pabbrev,DW_AT_language); + saa_write8(pabbrev,DW_FORM_data2); + saa_write16(pabbrev,0); /* end of entry */ + /* LEB128u usage same as above */ + saa_write8(pabbrev,2); /* entry number */ + saa_write8(pabbrev,DW_TAG_subprogram); + saa_write8(pabbrev,0); /* no children */ + saa_write8(pabbrev,DW_AT_low_pc); + saa_write8(pabbrev,DW_FORM_addr); + saa_write8(pabbrev,DW_AT_frame_base); + saa_write8(pabbrev,DW_FORM_data4); + saa_write16(pabbrev,0); /* end of entry */ + /* Terminal zero entry */ + saa_write8(pabbrev,0); + abbrevlen = saalen = pabbrev->datalen; + abbrevbuf = pbuf = nasm_malloc(saalen); + saa_rnbytes(pabbrev, pbuf, saalen); + saa_free(pabbrev); + + /* build line section */ + /* prolog */ + plines = saa_init(1L); + saa_write8(plines,1); /* Minimum Instruction Length */ + saa_write8(plines,1); /* Initial value of 'is_stmt' */ + saa_write8(plines,line_base); /* Line Base */ + saa_write8(plines,line_range); /* Line Range */ + saa_write8(plines,opcode_base); /* Opcode Base */ + /* standard opcode lengths (# of LEB128u operands) */ + saa_write8(plines,0); /* Std opcode 1 length */ + saa_write8(plines,1); /* Std opcode 2 length */ + saa_write8(plines,1); /* Std opcode 3 length */ + saa_write8(plines,1); /* Std opcode 4 length */ + saa_write8(plines,1); /* Std opcode 5 length */ + saa_write8(plines,0); /* Std opcode 6 length */ + saa_write8(plines,0); /* Std opcode 7 length */ + saa_write8(plines,0); /* Std opcode 8 length */ + saa_write8(plines,1); /* Std opcode 9 length */ + saa_write8(plines,0); /* Std opcode 10 length */ + saa_write8(plines,0); /* Std opcode 11 length */ + saa_write8(plines,1); /* Std opcode 12 length */ + /* Directory Table */ + saa_write8(plines,0); /* End of table */ + /* File Name Table */ + ftentry = dwarf_flist; + for (indx = 0; indx < dwarf_numfiles; indx++) { + saa_wbytes(plines, ftentry->filename, (int32_t)(strlen(ftentry->filename) + 1)); + saa_write8(plines,0); /* directory LEB128u */ + saa_write8(plines,0); /* time LEB128u */ + saa_write8(plines,0); /* size LEB128u */ + ftentry = ftentry->next; + } + saa_write8(plines,0); /* End of table */ + linepoff = plines->datalen; + linelen = linepoff + totlen + 10; + linebuf = pbuf = nasm_malloc(linelen); + WRITELONG(pbuf,linelen-4); /* initial length */ + WRITESHORT(pbuf,dwfmt->sect_version[DWARF_LINE]); + WRITELONG(pbuf,linepoff); /* offset to line number program */ + /* write line header */ + saalen = linepoff; + saa_rnbytes(plines, pbuf, saalen); /* read a given no. of bytes */ + pbuf += linepoff; + saa_free(plines); + /* concatenate line program ranges */ + linepoff += 13; + plinesrel = saa_init(1L); + psect = dwarf_fsect; + if (is_elf32()) { + for (indx = 0; indx < dwarf_nsections; indx++) { + saa_write32(plinesrel, linepoff); + saa_write32(plinesrel, ((uint32_t) (psect->section + 2) << 8) + R_386_32); + plinep = psect->psaa; + saalen = plinep->datalen; + saa_rnbytes(plinep, pbuf, saalen); + pbuf += saalen; + linepoff += saalen; + saa_free(plinep); + /* done with this entry */ + psect = psect->next; + } + } else if (is_elfx32()) { + for (indx = 0; indx < dwarf_nsections; indx++) { + saa_write32(plinesrel, linepoff); + saa_write32(plinesrel, ((psect->section + 2) << 8) + R_X86_64_32); + saa_write32(plinesrel, 0); + plinep = psect->psaa; + saalen = plinep->datalen; + saa_rnbytes(plinep, pbuf, saalen); + pbuf += saalen; + linepoff += saalen; + saa_free(plinep); + /* done with this entry */ + psect = psect->next; + } + } else { + nasm_assert(is_elf64()); + for (indx = 0; indx < dwarf_nsections; indx++) { + saa_write64(plinesrel, linepoff); + saa_write64(plinesrel, ((uint64_t) (psect->section + 2) << 32) + R_X86_64_64); + saa_write64(plinesrel, (uint64_t) 0); + plinep = psect->psaa; + saalen = plinep->datalen; + saa_rnbytes(plinep, pbuf, saalen); + pbuf += saalen; + linepoff += saalen; + saa_free(plinep); + /* done with this entry */ + psect = psect->next; + } + } + + /* build rela.lines section */ + linerellen =saalen = plinesrel->datalen; + linerelbuf = pbuf = nasm_malloc(linerellen); + saa_rnbytes(plinesrel, pbuf, saalen); + saa_free(plinesrel); + + /* build .debug_frame section */ + if (0) { + framelen = 4; + framebuf = pbuf = nasm_malloc(framelen); + WRITELONG(pbuf,framelen-4); /* initial length */ + } else { + /* Leave .debug_frame empty if not used! */ + framelen = 0; + } + + /* build .debug_loc section */ + if (0) { + loclen = 16; + locbuf = pbuf = nasm_malloc(loclen); + if (is_elf32() || is_elfx32()) { + WRITELONG(pbuf,0); /* null beginning offset */ + WRITELONG(pbuf,0); /* null ending offset */ + } else { + nasm_assert(is_elf64()); + WRITEDLONG(pbuf,0); /* null beginning offset */ + WRITEDLONG(pbuf,0); /* null ending offset */ + } + } else { + /* Leave .debug_frame empty if not used! */ + loclen = 0; + } +} + +static void dwarf_cleanup(void) +{ + nasm_free(arangesbuf); + nasm_free(arangesrelbuf); + nasm_free(pubnamesbuf); + nasm_free(infobuf); + nasm_free(inforelbuf); + nasm_free(abbrevbuf); + nasm_free(linebuf); + nasm_free(linerelbuf); + nasm_free(framebuf); + nasm_free(locbuf); +} + +static void dwarf_findfile(const char * fname) +{ + int finx; + struct linelist *match; + + /* return if fname is current file name */ + if (dwarf_clist && !(strcmp(fname, dwarf_clist->filename))) + return; + + /* search for match */ + match = 0; + if (dwarf_flist) { + match = dwarf_flist; + for (finx = 0; finx < dwarf_numfiles; finx++) { + if (!(strcmp(fname, match->filename))) { + dwarf_clist = match; + return; + } + match = match->next; + } + } + + /* add file name to end of list */ + dwarf_clist = nasm_malloc(sizeof(struct linelist)); + dwarf_numfiles++; + dwarf_clist->line = dwarf_numfiles; + dwarf_clist->filename = nasm_malloc(strlen(fname) + 1); + strcpy(dwarf_clist->filename,fname); + dwarf_clist->next = 0; + if (!dwarf_flist) { /* if first entry */ + dwarf_flist = dwarf_elist = dwarf_clist; + dwarf_clist->last = 0; + } else { /* chain to previous entry */ + dwarf_elist->next = dwarf_clist; + dwarf_elist = dwarf_clist; + } +} + +static void dwarf_findsect(const int index) +{ + int sinx; + struct sectlist *match; + struct SAA *plinep; + + /* return if index is current section index */ + if (dwarf_csect && (dwarf_csect->section == index)) + return; + + /* search for match */ + match = 0; + if (dwarf_fsect) { + match = dwarf_fsect; + for (sinx = 0; sinx < dwarf_nsections; sinx++) { + if (match->section == index) { + dwarf_csect = match; + return; + } + match = match->next; + } + } + + /* add entry to end of list */ + dwarf_csect = nasm_malloc(sizeof(struct sectlist)); + dwarf_nsections++; + dwarf_csect->psaa = plinep = saa_init(1L); + dwarf_csect->line = 1; + dwarf_csect->offset = 0; + dwarf_csect->file = 1; + dwarf_csect->section = index; + dwarf_csect->next = 0; + /* set relocatable address at start of line program */ + saa_write8(plinep,DW_LNS_extended_op); + saa_write8(plinep,is_elf64() ? 9 : 5); /* operand length */ + saa_write8(plinep,DW_LNE_set_address); + if (is_elf64()) + saa_write64(plinep,0); /* Start Address */ + else + saa_write32(plinep,0); /* Start Address */ + + if (!dwarf_fsect) { /* if first entry */ + dwarf_fsect = dwarf_esect = dwarf_csect; + dwarf_csect->last = 0; + } else { /* chain to previous entry */ + dwarf_esect->next = dwarf_csect; + dwarf_esect = dwarf_csect; + } +} + +#endif /* defined(OF_ELF32) || defined(OF_ELF64) || defined(OF_ELFX32) */ diff --git a/vere/ext/nasm/output/outelf.h b/vere/ext/nasm/output/outelf.h new file mode 100644 index 0000000..fcb91db --- /dev/null +++ b/vere/ext/nasm/output/outelf.h @@ -0,0 +1,133 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2019 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * Internal definitions common to outelf32 and outelf64 + */ +#ifndef OUTPUT_OUTELF_H +#define OUTPUT_OUTELF_H + +#include "elf.h" +#include "rbtree.h" +#include "saa.h" + +#define GLOBAL_TEMP_BASE 0x40000000 /* bigger than any sane symbol index */ + +/* alignment of sections in file */ +#define SEC_FILEALIGN 16 + +/* this stuff is needed for the dwarf/stabs debugging format */ +#define TY_DEBUGSYMLIN 0x40 /* internal call to debug_out */ + +/* + * Debugging ELF sections (section indices starting with sec_debug) + */ + +/* stabs */ +#define sec_stab (sec_debug + 0) +#define sec_stabstr (sec_debug + 1) +#define sec_rel_stab (sec_debug + 2) + +/* stabs symbol table format */ +struct stabentry { + uint32_t n_strx; + uint8_t n_type; + uint8_t n_other; + uint16_t n_desc; + uint32_t n_value; +}; + +/* dwarf */ +#define sec_debug_aranges (sec_debug + 0) +#define sec_rela_debug_aranges (sec_debug + 1) +#define sec_debug_pubnames (sec_debug + 2) +#define sec_debug_info (sec_debug + 3) +#define sec_rela_debug_info (sec_debug + 4) +#define sec_debug_abbrev (sec_debug + 5) +#define sec_debug_line (sec_debug + 6) +#define sec_rela_debug_line (sec_debug + 7) +#define sec_debug_frame (sec_debug + 8) +#define sec_debug_loc (sec_debug + 9) + +extern uint8_t elf_osabi; +extern uint8_t elf_abiver; + +#define WRITE_STAB(p,n_strx,n_type,n_other,n_desc,n_value) \ + do { \ + WRITELONG(p, n_strx); \ + WRITECHAR(p, n_type); \ + WRITECHAR(p, n_other); \ + WRITESHORT(p, n_desc); \ + WRITELONG(p, n_value); \ + } while (0) + +struct elf_reloc { + struct elf_reloc *next; + int64_t address; /* relative to _start_ of section */ + int64_t symbol; /* symbol index */ + int64_t offset; /* symbol addend */ + int type; /* type of relocation */ +}; + +struct elf_symbol { + struct rbtree symv; /* symbol value and symbol rbtree */ + int32_t strpos; /* string table position of name */ + int32_t section; /* section ID of the symbol */ + int type; /* symbol type */ + int other; /* symbol visibility */ + int32_t size; /* size of symbol */ + int32_t globnum; /* symbol table offset if global */ + struct elf_symbol *nextfwd; /* list of unresolved-size symbols */ + char *name; /* used temporarily if in above list */ +}; + +struct elf_section { + struct SAA *data; + uint64_t len; + uint64_t size; + uint64_t nrelocs; + int32_t index; /* NASM index or NO_SEG if internal */ + int shndx; /* ELF index */ + int type; /* SHT_* */ + uint64_t align; /* alignment: power of two */ + uint64_t flags; /* section flags */ + int64_t pass_last_seen; + uint64_t entsize; /* entry size */ + char *name; + struct SAA *rel; + struct elf_reloc *head; + struct elf_reloc **tail; + struct rbtree *gsyms; /* global symbols in section */ +}; + +#endif /* OUTPUT_OUTELF_H */ diff --git a/vere/ext/nasm/output/outelf.mac b/vere/ext/nasm/output/outelf.mac new file mode 100644 index 0000000..94babe3 --- /dev/null +++ b/vere/ext/nasm/output/outelf.mac @@ -0,0 +1,41 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2017 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +OUT: elf elf32 elf64 +%define __?SECT?__ [section .text] +%macro __?NASM_CDecl?__ 1 +%define $_%1 $%1 +%endmacro +%imacro osabi 1+.nolist +[%? %1] +%endmacro diff --git a/vere/ext/nasm/output/outform.c b/vere/ext/nasm/output/outform.c new file mode 100644 index 0000000..a2fdde8 --- /dev/null +++ b/vere/ext/nasm/output/outform.c @@ -0,0 +1,135 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2011 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * outform.c manages a list of output formats, and associates + * them with their relevant drivers. Also has a + * routine to find the correct driver given a name + * for it + */ + +#include "compiler.h" + + +#define BUILD_DRIVERS_ARRAY +#include "outform.h" +#include "outlib.h" + +const struct ofmt *ofmt_find(const char *name, + const struct ofmt_alias **ofmt_alias) +{ + const struct ofmt * const *ofp; + const struct ofmt *of; + unsigned int i; + + *ofmt_alias = NULL; + + /* primary targets first */ + for (ofp = drivers; (of = *ofp); ofp++) { + if (!nasm_stricmp(name, of->shortname)) + return of; + } + + /* lets walk thru aliases then */ + for (i = 0; i < ARRAY_SIZE(ofmt_aliases); i++) { + if (ofmt_aliases[i].shortname && + !nasm_stricmp(name, ofmt_aliases[i].shortname)) { + *ofmt_alias = &ofmt_aliases[i]; + return ofmt_aliases[i].ofmt; + } + } + + return NULL; +} + +const struct dfmt *dfmt_find(const struct ofmt *ofmt, const char *name) +{ + const struct dfmt * const *dfp; + const struct dfmt *df; + + for (dfp = ofmt->debug_formats; (df = *dfp); dfp++) { + if (!nasm_stricmp(name, df->shortname)) + return df; + } + return NULL; +} + +void ofmt_list(const struct ofmt *deffmt, FILE * fp) +{ + const struct ofmt * const *ofp, *of; + unsigned int i; + + /* primary targets first */ + for (ofp = drivers; (of = *ofp); ofp++) { + fprintf(fp, " %-20s %s%s\n", + of->shortname, + of->fullname, + of == deffmt ? " [default]" : ""); + } + + /* lets walk through aliases then */ + for (i = 0; i < ARRAY_SIZE(ofmt_aliases); i++) { + if (!ofmt_aliases[i].shortname) + continue; + fprintf(fp, " %-20s Legacy alias for \"%s\"\n", + ofmt_aliases[i].shortname, + ofmt_aliases[i].ofmt->shortname); + } +} + +void dfmt_list(FILE *fp) +{ + const struct ofmt * const *ofp; + const struct ofmt *of; + const struct dfmt * const *dfp; + const struct dfmt *df; + char prefixbuf[32]; + const char *prefix; + + for (ofp = drivers; (of = *ofp); ofp++) { + if (of->debug_formats && of->debug_formats != null_debug_arr) { + snprintf(prefixbuf, sizeof prefixbuf, "%s:", + of->shortname); + prefix = prefixbuf; + + for (dfp = of->debug_formats; (df = *dfp); dfp++) { + if (df != &null_debug_form) + fprintf(fp, " %-10s %-9s %s%s\n", + prefix, + df->shortname, df->fullname, + df == of->default_dfmt ? " [default]" : ""); + prefix = ""; + } + } + } +} diff --git a/vere/ext/nasm/output/outform.h b/vere/ext/nasm/output/outform.h new file mode 100644 index 0000000..3b84674 --- /dev/null +++ b/vere/ext/nasm/output/outform.h @@ -0,0 +1,354 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2022 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * outform.h header file for binding output format drivers to the + * remainder of the code in the Netwide Assembler + */ + +/* + * This header file allows configuration of which output formats + * get compiled into the NASM binary. You can configure by defining + * various preprocessor symbols beginning with "OF_", either on the + * compiler command line or at the top of this file. + * + * OF_ONLY -- only include specified object formats + * OF_name -- ensure that output format 'name' is included + * OF_NO_name -- remove output format 'name' + * OF_DOS -- ensure that 'obj', 'bin', 'win32' & 'win64' are included. + * OF_UNIX -- ensure that 'aout', 'aoutb', 'coff', 'elf32' & 'elf64' are in. + * OF_OTHERS -- ensure that 'bin', 'as86', 'rdf' 'macho32' & 'macho64' are in. + * OF_ALL -- ensure that all formats are included. + * note that this doesn't include 'dbg', which is + * only really useful if you're doing development + * work on NASM. Define OF_DBG if you want this. + * + * OF_DEFAULT=of_name -- ensure that 'name' is the default format. + * + * eg: -DOF_UNIX -DOF_ELF32 -DOF_DEFAULT=of_elf32 would be a suitable config + * for an average linux system. + * + * Default config = -DOF_ALL -DOF_DEFAULT=of_bin + * + * You probably only want to set these options while compiling 'nasm.c'. */ + +#ifndef NASM_OUTFORM_H +#define NASM_OUTFORM_H + +#include "nasm.h" + +/* -------------- USER MODIFIABLE PART ---------------- */ + +/* + * Insert #defines here in accordance with the configuration + * instructions above. + * + * E.g. + * + * #define OF_ONLY + * #define OF_OBJ + * #define OF_BIN + * + * for a 16-bit DOS assembler with no extraneous formats. + */ + +/* ------------ END USER MODIFIABLE PART -------------- */ + +/* ====configurable info begins here==== */ +/* formats configurable: + * bin,obj,elf32,elf64,aout,aoutb,coff,win32,as86,rdf2,macho32,macho64 */ + +/* process options... */ + +#ifndef OF_ONLY +#ifndef OF_ALL +#define OF_ALL /* default is to have all formats */ +#endif +#endif + +#ifdef OF_ALL /* set all formats on... */ +#ifndef OF_BIN +#define OF_BIN +#endif +#ifndef OF_OBJ +#define OF_OBJ +#endif +#ifndef OF_ELF32 +#define OF_ELF32 +#endif +#ifndef OF_ELFX32 +#define OF_ELFX32 +#endif +#ifndef OF_ELF64 +#define OF_ELF64 +#endif +#ifndef OF_COFF +#define OF_COFF +#endif +#ifndef OF_AOUT +#define OF_AOUT +#endif +#ifndef OF_AOUTB +#define OF_AOUTB +#endif +#ifndef OF_WIN32 +#define OF_WIN32 +#endif +#ifndef OF_WIN64 +#define OF_WIN64 +#endif +#ifndef OF_AS86 +#define OF_AS86 +#endif +#ifndef OF_IEEE +#define OF_IEEE +#endif +#ifndef OF_MACHO32 +#define OF_MACHO32 +#endif +#ifndef OF_MACHO64 +#define OF_MACHO64 +#endif +#ifndef OF_DBG +#define OF_DBG +#endif +#endif /* OF_ALL */ + +/* turn on groups of formats specified.... */ +#ifdef OF_DOS +#ifndef OF_OBJ +#define OF_OBJ +#endif +#ifndef OF_BIN +#define OF_BIN +#endif +#ifndef OF_COFF +#define OF_COFF /* COFF is used by DJGPP */ +#endif +#ifndef OF_WIN32 +#define OF_WIN32 +#endif +#ifndef OF_WIN64 +#define OF_WIN64 +#endif +#endif + +#ifdef OF_UNIX +#ifndef OF_AOUT +#define OF_AOUT +#endif +#ifndef OF_AOUTB +#define OF_AOUTB +#endif +#ifndef OF_COFF +#define OF_COFF +#endif +#ifndef OF_ELF32 +#define OF_ELF32 +#endif +#ifndef OF_ELF64 +#define OF_ELF64 +#endif +#ifndef OF_ELFX32 +#define OF_ELFX32 +#endif +#endif + +#ifdef OF_OTHERS +#ifndef OF_BIN +#define OF_BIN +#endif +#ifndef OF_AS86 +#define OF_AS86 +#endif +#ifndef OF_IEEE +#define OF_IEEE +#endif +#ifndef OF_MACHO32 +#define OF_MACHO32 +#endif +#ifndef OF_MACHO64 +#define OF_MACHO64 +#endif +#endif + +/* finally... override any format specifically specified to be off */ +#ifdef OF_NO_BIN +#undef OF_BIN +#endif +#ifdef OF_NO_OBJ +#undef OF_OBJ +#endif +#ifdef OF_NO_ELF32 +#undef OF_ELF32 +#endif +#ifdef OF_NO_ELF64 +#undef OF_ELF64 +#endif +#ifdef OF_NO_ELFX32 +#undef OF_ELFX32 +#endif +#ifdef OF_NO_AOUT +#undef OF_AOUT +#endif +#ifdef OF_NO_AOUTB +#undef OF_AOUTB +#endif +#ifdef OF_NO_COFF +#undef OF_COFF +#endif +#ifdef OF_NO_WIN32 +#undef OF_WIN32 +#endif +#ifdef OF_NO_WIN64 +#undef OF_WIN64 +#endif +#ifdef OF_NO_AS86 +#undef OF_AS86 +#endif +#ifdef OF_NO_IEEE +#undef OF_IEEE +#endif +#ifdef OF_NO_MACHO32 +#undef OF_MACHO32 +#endif +#ifdef OF_NO_MACHO64 +#undef OF_MACHO64 +#endif +#ifdef OF_NO_DBG +#undef OF_DBG +#endif + +#ifndef OF_DEFAULT +#define OF_DEFAULT of_bin +#endif + +extern const struct ofmt of_bin; +extern const struct ofmt of_ith; +extern const struct ofmt of_srec; +extern const struct ofmt of_aout; +extern const struct ofmt of_aoutb; +extern const struct ofmt of_coff; +extern const struct ofmt of_elf32; +extern const struct ofmt of_elfx32; +extern const struct ofmt of_elf64; +extern const struct ofmt of_as86; +extern const struct ofmt of_obj; +extern const struct ofmt of_win32; +extern const struct ofmt of_win64; +extern const struct ofmt of_ieee; +extern const struct ofmt of_macho32; +extern const struct ofmt of_macho64; +extern const struct ofmt of_dbg; + +#ifdef BUILD_DRIVERS_ARRAY /* only if included from outform.c */ + +/* + * pull in the externs for the different formats, then make the + * drivers array based on the above defines + */ + +static const struct ofmt * const drivers[] = { +#ifdef OF_BIN + &of_bin, + &of_ith, + &of_srec, +#endif +#ifdef OF_AOUT + &of_aout, +#endif +#ifdef OF_AOUTB + &of_aoutb, +#endif +#ifdef OF_COFF + &of_coff, +#endif +#ifdef OF_ELF32 + &of_elf32, +#endif +#ifdef OF_ELF64 + &of_elf64, +#endif +#ifdef OF_ELFX32 + &of_elfx32, +#endif +#ifdef OF_AS86 + &of_as86, +#endif +#ifdef OF_OBJ + &of_obj, +#endif +#ifdef OF_WIN32 + &of_win32, +#endif +#ifdef OF_WIN64 + &of_win64, +#endif +#ifdef OF_IEEE + &of_ieee, +#endif +#ifdef OF_MACHO32 + &of_macho32, +#endif +#ifdef OF_MACHO64 + &of_macho64, +#endif +#ifdef OF_DBG + &of_dbg, +#endif + + NULL +}; + +static const struct ofmt_alias ofmt_aliases[] = { +#ifdef OF_ELF32 + { "elf", &of_elf32 }, +#endif +#ifdef OF_MACHO32 + { "macho", &of_macho32 }, +#endif +#ifdef OF_WIN32 + { "win", &of_win32 }, +#endif + { NULL, NULL } +}; + +#endif /* BUILD_DRIVERS_ARRAY */ + +const struct ofmt *ofmt_find(const char *name, const struct ofmt_alias **ofmt_alias); +const struct dfmt *dfmt_find(const struct ofmt *, const char *); +void ofmt_list(const struct ofmt *, FILE *); +void dfmt_list(FILE *); +extern const struct dfmt null_debug_form; + +#endif /* NASM_OUTFORM_H */ diff --git a/vere/ext/nasm/output/outieee.c b/vere/ext/nasm/output/outieee.c new file mode 100644 index 0000000..7ba9036 --- /dev/null +++ b/vere/ext/nasm/output/outieee.c @@ -0,0 +1,1521 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2022 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * outieee.c output routines for the Netwide Assembler to produce + * IEEE-std object files + */ + +/* notes: I have tried to make this correspond to the IEEE version + * of the standard, specifically the primary ASCII version. It should + * be trivial to create the binary version given this source (which is + * one of MANY things that have to be done to make this correspond to + * the hp-microtek version of the standard). + * + * 16-bit support is assumed to use 24-bit addresses + * The linker can sort out segmentation-specific stuff + * if it keeps track of externals + * in terms of being relative to section bases + * + * A non-standard variable type, the 'Yn' variable, has been introduced. + * Basically it is a reference to extern 'n'- denoting the low limit + * (L-variable) of the section that extern 'n' is defined in. Like the + * x variable, there may be no explicit assignment to it, it is derived + * from the public definition corresponding to the extern name. This + * is required because the one thing the mufom guys forgot to do well was + * take into account segmented architectures. + * + * I use comment classes for various things and these are undefined by + * the standard. + * + * Debug info should be considered totally non-standard (local labels are + * standard but linenum records are not covered by the standard. + * Type defs have the standard format but absolute meanings for ordinal + * types are not covered by the standard.) + * + * David Lindauer, LADsoft + */ +#include "compiler.h" + +#include +#include /* For toupper() */ +#include "nctype.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "ver.h" + +#include "outform.h" +#include "outlib.h" + +#ifdef OF_IEEE + +#define ARRAY_BOT 0x1 + +static char ieee_infile[FILENAME_MAX]; +static int ieee_uppercase; + +static bool any_segs; +static int arrindex; + +#define HUNKSIZE 1024 /* Size of the data hunk */ +#define EXT_BLKSIZ 512 +#define LDPERLINE 32 /* bytes per line in output */ + +struct ieeeSection; + +struct LineNumber { + struct LineNumber *next; + struct ieeeSection *segment; + int32_t offset; + int32_t lineno; +}; + +static struct FileName { + struct FileName *next; + char *name; + int32_t index; +} *fnhead, **fntail; + +static struct Array { + struct Array *next; + unsigned size; + int basetype; +} *arrhead, **arrtail; + +static struct ieeePublic { + struct ieeePublic *next; + char *name; + int32_t offset; + int32_t segment; /* only if it's far-absolute */ + int32_t index; + int type; /* for debug purposes */ +} *fpubhead, **fpubtail, *last_defined; + +static struct ieeeExternal { + struct ieeeExternal *next; + char *name; + int32_t commonsize; +} *exthead, **exttail; + +static int externals; + +static struct ExtBack { + struct ExtBack *next; + int index[EXT_BLKSIZ]; +} *ebhead, **ebtail; + +/* NOTE: the first segment MUST be the lineno segment */ +static struct ieeeSection { + struct ieeeSection *next; + char *name; + struct ieeeObjData *data, *datacurr; + struct ieeeFixupp *fptr, *flptr; + int32_t index; /* the NASM segment id */ + int32_t ieee_index; /* the IEEE-file segment index */ + int32_t currentpos; + int32_t align; /* can be SEG_ABS + absolute addr */ + int32_t startpos; + int32_t use32; /* is this segment 32-bit? */ + int64_t pass_last_seen; + struct ieeePublic *pubhead, **pubtail, *lochead, **loctail; + enum { + CMB_PRIVATE = 0, + CMB_PUBLIC = 2, + CMB_COMMON = 6 + } combine; +} *seghead, **segtail, *ieee_seg_needs_update; + +struct ieeeObjData { + struct ieeeObjData *next; + uint8_t data[HUNKSIZE]; +}; + +struct ieeeFixupp { + struct ieeeFixupp *next; + enum { + FT_SEG = 0, + FT_REL = 1, + FT_OFS = 2, + FT_EXT = 3, + FT_WRT = 4, + FT_EXTREL = 5, + FT_EXTWRT = 6, + FT_EXTSEG = 7 + } ftype; + int16_t size; + int32_t id1; + int32_t id2; + int32_t offset; + int32_t addend; +}; + +static int32_t ieee_entry_seg, ieee_entry_ofs; +static int checksum; + +extern const struct ofmt of_ieee; +static const struct dfmt ladsoft_debug_form; + +static void ieee_data_new(struct ieeeSection *); +static void ieee_write_fixup(int32_t, int32_t, struct ieeeSection *, + int, uint64_t, int32_t); +static void ieee_install_fixup(struct ieeeSection *, struct ieeeFixupp *); +static int32_t ieee_segment(char *, int *); +static void ieee_write_file(void); +static void ieee_write_byte(struct ieeeSection *, int); +static void ieee_write_word(struct ieeeSection *, int); +static void ieee_write_dword(struct ieeeSection *, int32_t); +static void ieee_putascii(char *, ...); +static void ieee_putcs(int); +static int32_t ieee_putld(int32_t, int32_t, uint8_t *); +static int32_t ieee_putlr(struct ieeeFixupp *); +static void ieee_unqualified_name(char *, char *); + +/* + * pup init + */ +static void ieee_init(void) +{ + strlcpy(ieee_infile, inname, sizeof(ieee_infile)); + any_segs = false; + fpubhead = NULL; + fpubtail = &fpubhead; + exthead = NULL; + exttail = &exthead; + externals = 1; + ebhead = NULL; + ebtail = &ebhead; + seghead = ieee_seg_needs_update = NULL; + segtail = &seghead; + ieee_entry_seg = NO_SEG; + ieee_uppercase = false; + checksum = 0; +} + +/* + * Rundown + */ +static void ieee_cleanup(void) +{ + ieee_write_file(); + dfmt->cleanup(); + while (seghead) { + struct ieeeSection *segtmp = seghead; + seghead = seghead->next; + while (segtmp->pubhead) { + struct ieeePublic *pubtmp = segtmp->pubhead; + segtmp->pubhead = pubtmp->next; + nasm_free(pubtmp); + } + while (segtmp->fptr) { + struct ieeeFixupp *fixtmp = segtmp->fptr; + segtmp->fptr = fixtmp->next; + nasm_free(fixtmp); + } + while (segtmp->data) { + struct ieeeObjData *dattmp = segtmp->data; + segtmp->data = dattmp->next; + nasm_free(dattmp); + } + nasm_free(segtmp); + } + while (fpubhead) { + struct ieeePublic *pubtmp = fpubhead; + fpubhead = fpubhead->next; + nasm_free(pubtmp); + } + while (exthead) { + struct ieeeExternal *exttmp = exthead; + exthead = exthead->next; + nasm_free(exttmp); + } + while (ebhead) { + struct ExtBack *ebtmp = ebhead; + ebhead = ebhead->next; + nasm_free(ebtmp); + } +} + +/* + * callback for labels + */ +static void ieee_deflabel(char *name, int32_t segment, + int64_t offset, int is_global, char *special) +{ + /* + * We have three cases: + * + * (i) `segment' is a segment-base. If so, set the name field + * for the segment structure it refers to, and then + * return. + * + * (ii) `segment' is one of our segments, or a SEG_ABS segment. + * Save the label position for later output of a PUBDEF record. + * + * + * (iii) `segment' is not one of our segments. Save the label + * position for later output of an EXTDEF. + */ + struct ieeeExternal *ext; + struct ExtBack *eb; + struct ieeeSection *seg; + int i; + + if (special) + nasm_nonfatal("unrecognised symbol type `%s'", special); + /* + * First check for the double-period, signifying something + * unusual. + */ + if (name[0] == '.' && name[1] == '.' && name[2] != '@') { + if (!strcmp(name, "..start")) { + ieee_entry_seg = segment; + ieee_entry_ofs = offset; + } + return; + } + + /* + * Case (i): + */ + if (ieee_seg_needs_update) { + ieee_seg_needs_update->name = name; + return; + } + if (segment < SEG_ABS && segment != NO_SEG && segment % 2) + return; + + /* + * case (ii) + */ + if (segment >= SEG_ABS) { + /* + * SEG_ABS subcase of (ii). + */ + if (is_global) { + struct ieeePublic *pub; + + pub = *fpubtail = nasm_malloc(sizeof(*pub)); + fpubtail = &pub->next; + pub->next = NULL; + pub->name = name; + pub->offset = offset; + pub->segment = segment & ~SEG_ABS; + } + return; + } + + for (seg = seghead; seg && is_global; seg = seg->next) + if (seg->index == segment) { + struct ieeePublic *pub; + + last_defined = pub = *seg->pubtail = nasm_malloc(sizeof(*pub)); + seg->pubtail = &pub->next; + pub->next = NULL; + pub->name = name; + pub->offset = offset; + pub->index = seg->ieee_index; + pub->segment = -1; + return; + } + + /* + * Case (iii). + */ + if (is_global) { + ext = *exttail = nasm_malloc(sizeof(*ext)); + ext->next = NULL; + exttail = &ext->next; + ext->name = name; + if (is_global == 2) + ext->commonsize = offset; + else + ext->commonsize = 0; + i = segment / 2; + eb = ebhead; + if (!eb) { + eb = *ebtail = nasm_zalloc(sizeof(*eb)); + eb->next = NULL; + ebtail = &eb->next; + } + while (i > EXT_BLKSIZ) { + if (eb && eb->next) + eb = eb->next; + else { + eb = *ebtail = nasm_zalloc(sizeof(*eb)); + eb->next = NULL; + ebtail = &eb->next; + } + i -= EXT_BLKSIZ; + } + eb->index[i] = externals++; + } + +} + +/* + * Put data out + */ +static void ieee_out(int32_t segto, const void *data, + enum out_type type, uint64_t size, + int32_t segment, int32_t wrt) +{ + const uint8_t *ucdata; + int32_t ldata; + struct ieeeSection *seg; + + /* + * If `any_segs' is still false, we must define a default + * segment. + */ + if (!any_segs) { + int tempint; /* ignored */ + if (segto != ieee_segment("__NASMDEFSEG", &tempint)) + nasm_panic("strange segment conditions in IEEE driver"); + } + + /* + * Find the segment we are targeting. + */ + for (seg = seghead; seg; seg = seg->next) + if (seg->index == segto) + break; + if (!seg) + nasm_panic("code directed to nonexistent segment?"); + + if (type == OUT_RAWDATA) { + ucdata = data; + while (size--) + ieee_write_byte(seg, *ucdata++); + } else if (type == OUT_ADDRESS || type == OUT_REL2ADR || + type == OUT_REL4ADR) { + if (type == OUT_ADDRESS) + size = abs((int)size); + else if (segment == NO_SEG) + nasm_nonfatal("relative call to absolute address not" + " supported by IEEE format"); + ldata = *(int64_t *)data; + if (type == OUT_REL2ADR) + ldata += (size - 2); + if (type == OUT_REL4ADR) + ldata += (size - 4); + ieee_write_fixup(segment, wrt, seg, size, type, ldata); + if (size == 2) + ieee_write_word(seg, ldata); + else + ieee_write_dword(seg, ldata); + } else if (type == OUT_RESERVE) { + while (size--) + ieee_write_byte(seg, 0); + } +} + +static void ieee_data_new(struct ieeeSection *segto) +{ + + if (!segto->data) + segto->data = segto->datacurr = + nasm_malloc(sizeof(*(segto->datacurr))); + else + segto->datacurr = segto->datacurr->next = + nasm_malloc(sizeof(*(segto->datacurr))); + segto->datacurr->next = NULL; +} + +/* + * this routine is unalduterated bloatware. I usually don't do this + * but I might as well see what it is like on a harmless program. + * If anyone wants to optimize this is a good canditate! + */ +static void ieee_write_fixup(int32_t segment, int32_t wrt, + struct ieeeSection *segto, int size, + uint64_t realtype, int32_t offset) +{ + struct ieeeSection *target; + struct ieeeFixupp s; + + /* Don't put a fixup for things NASM can calculate */ + if (wrt == NO_SEG && segment == NO_SEG) + return; + + s.ftype = -1; + /* if it is a WRT offset */ + if (wrt != NO_SEG) { + s.ftype = FT_WRT; + s.addend = offset; + if (wrt >= SEG_ABS) + s.id1 = -(wrt - SEG_ABS); + else { + if (wrt % 2 && realtype != OUT_REL2ADR + && realtype != OUT_REL4ADR) { + wrt--; + + for (target = seghead; target; target = target->next) + if (target->index == wrt) + break; + if (target) { + s.id1 = target->ieee_index; + for (target = seghead; target; target = target->next) + if (target->index == segment) + break; + + if (target) + s.id2 = target->ieee_index; + else { + /* + * Now we assume the segment field is being used + * to hold an extern index + */ + int32_t i = segment / 2; + struct ExtBack *eb = ebhead; + while (i > EXT_BLKSIZ) { + if (eb) + eb = eb->next; + else + break; + i -= EXT_BLKSIZ; + } + /* if we have an extern decide the type and make a record + */ + if (eb) { + s.ftype = FT_EXTWRT; + s.addend = 0; + s.id2 = eb->index[i]; + } else + nasm_nonfatal("source of WRT must be an offset"); + } + + } else + nasm_panic("unrecognised WRT value in ieee_write_fixup"); + } else + nasm_nonfatal("target of WRT must be a section"); + } + s.size = size; + ieee_install_fixup(segto, &s); + return; + } + /* Pure segment fixup ? */ + if (segment != NO_SEG) { + s.ftype = FT_SEG; + s.id1 = 0; + if (segment >= SEG_ABS) { + /* absolute far segment fixup */ + s.id1 = -(segment - ~SEG_ABS); + } else if (segment % 2) { + /* fixup to named segment */ + /* look it up */ + for (target = seghead; target; target = target->next) + if (target->index == segment - 1) + break; + if (target) + s.id1 = target->ieee_index; + else { + /* + * Now we assume the segment field is being used + * to hold an extern index + */ + int32_t i = segment / 2; + struct ExtBack *eb = ebhead; + while (i > EXT_BLKSIZ) { + if (eb) + eb = eb->next; + else + break; + i -= EXT_BLKSIZ; + } + /* if we have an extern decide the type and make a record + */ + if (eb) { + if (realtype == OUT_REL2ADR || realtype == OUT_REL4ADR) { + nasm_panic("Segment of a rel not supported in ieee_write_fixup"); + } else { + /* If we want the segment */ + s.ftype = FT_EXTSEG; + s.addend = 0; + s.id1 = eb->index[i]; + } + + } else + /* If we get here the seg value doesn't make sense */ + nasm_panic("unrecognised segment value in ieee_write_fixup"); + } + + } else { + /* Assume we are offsetting directly from a section + * So look up the target segment + */ + for (target = seghead; target; target = target->next) + if (target->index == segment) + break; + if (target) { + if (realtype == OUT_REL2ADR || realtype == OUT_REL4ADR) { + /* PC rel to a known offset */ + s.id1 = target->ieee_index; + s.ftype = FT_REL; + s.size = size; + s.addend = offset; + } else { + /* We were offsetting from a seg */ + s.id1 = target->ieee_index; + s.ftype = FT_OFS; + s.size = size; + s.addend = offset; + } + } else { + /* + * Now we assume the segment field is being used + * to hold an extern index + */ + int32_t i = segment / 2; + struct ExtBack *eb = ebhead; + while (i > EXT_BLKSIZ) { + if (eb) + eb = eb->next; + else + break; + i -= EXT_BLKSIZ; + } + /* if we have an extern decide the type and make a record + */ + if (eb) { + if (realtype == OUT_REL2ADR || realtype == OUT_REL4ADR) { + s.ftype = FT_EXTREL; + s.addend = 0; + s.id1 = eb->index[i]; + } else { + /* else we want the external offset */ + s.ftype = FT_EXT; + s.addend = 0; + s.id1 = eb->index[i]; + } + + } else + /* If we get here the seg value doesn't make sense */ + nasm_panic("unrecognised segment value in ieee_write_fixup"); + } + } + if (size != 2 && s.ftype == FT_SEG) + nasm_nonfatal("IEEE format can only handle 2-byte" + " segment base references"); + s.size = size; + ieee_install_fixup(segto, &s); + return; + } + /* should never get here */ +} +static void ieee_install_fixup(struct ieeeSection *seg, + struct ieeeFixupp *fix) +{ + struct ieeeFixupp *f; + f = nasm_malloc(sizeof(struct ieeeFixupp)); + memcpy(f, fix, sizeof(struct ieeeFixupp)); + f->offset = seg->currentpos; + seg->currentpos += fix->size; + f->next = NULL; + if (seg->fptr) + seg->flptr = seg->flptr->next = f; + else + seg->fptr = seg->flptr = f; + +} + +/* + * segment registry + */ +static int32_t ieee_segment(char *name, int *bits) +{ + /* + * We call the label manager here to define a name for the new + * segment, and when our _own_ label-definition stub gets + * called in return, it should register the new segment name + * using the pointer it gets passed. That way we save memory, + * by sponging off the label manager. + */ + if (!name) { + *bits = 16; + if (!any_segs) + return 0; + return seghead->index; + } else { + struct ieeeSection *seg; + int ieee_idx, attrs; + bool rn_error; + char *p; + + /* + * Look for segment attributes. + */ + attrs = 0; + while (*name == '.') + name++; /* hack, but a documented one */ + p = name; + while (*p && !nasm_isspace(*p)) + p++; + if (*p) { + *p++ = '\0'; + while (*p && nasm_isspace(*p)) + *p++ = '\0'; + } + while (*p) { + while (*p && !nasm_isspace(*p)) + p++; + if (*p) { + *p++ = '\0'; + while (*p && nasm_isspace(*p)) + *p++ = '\0'; + } + + attrs++; + } + + ieee_idx = 1; + for (seg = seghead; seg; seg = seg->next) { + ieee_idx++; + if (!strcmp(seg->name, name)) { + if (attrs > 0 && seg->pass_last_seen == pass_count()) + nasm_warn(WARN_OTHER, "segment attributes specified on" + " redeclaration of segment: ignoring"); + if (seg->use32) + *bits = 32; + else + *bits = 16; + + seg->pass_last_seen = pass_count(); + return seg->index; + } + } + + *segtail = seg = nasm_malloc(sizeof(*seg)); + seg->next = NULL; + segtail = &seg->next; + seg->index = seg_alloc(); + seg->ieee_index = ieee_idx; + any_segs = true; + seg->name = NULL; + seg->currentpos = 0; + seg->align = 1; /* default */ + seg->use32 = *bits == 32; /* default to user spec */ + seg->combine = CMB_PUBLIC; /* default */ + seg->pubhead = NULL; + seg->pubtail = &seg->pubhead; + seg->data = NULL; + seg->fptr = NULL; + seg->lochead = NULL; + seg->loctail = &seg->lochead; + + /* + * Process the segment attributes. + */ + p = name; + while (attrs--) { + p += strlen(p); + while (!*p) + p++; + + /* + * `p' contains a segment attribute. + */ + if (!nasm_stricmp(p, "private")) + seg->combine = CMB_PRIVATE; + else if (!nasm_stricmp(p, "public")) + seg->combine = CMB_PUBLIC; + else if (!nasm_stricmp(p, "common")) + seg->combine = CMB_COMMON; + else if (!nasm_stricmp(p, "use16")) + seg->use32 = false; + else if (!nasm_stricmp(p, "use32")) + seg->use32 = true; + else if (!nasm_strnicmp(p, "align=", 6)) { + seg->align = readnum(p + 6, &rn_error); + if (seg->align == 0) + seg->align = 1; + if (rn_error) { + seg->align = 1; + nasm_nonfatal("segment alignment should be numeric"); + } + switch (seg->align) { + case 1: /* BYTE */ + case 2: /* WORD */ + case 4: /* DWORD */ + case 16: /* PARA */ + case 256: /* PAGE */ + case 8: + case 32: + case 64: + case 128: + break; + default: + nasm_nonfatal("invalid alignment value %d", seg->align); + seg->align = 1; + break; + } + } else if (!nasm_strnicmp(p, "absolute=", 9)) { + seg->align = SEG_ABS + readnum(p + 9, &rn_error); + if (rn_error) + nasm_nonfatal("argument to `absolute' segment" + " attribute should be numeric"); + } + } + + ieee_seg_needs_update = seg; + if (seg->align >= SEG_ABS) + define_label(name, NO_SEG, seg->align - SEG_ABS, false); + else + define_label(name, seg->index + 1, 0L, false); + ieee_seg_needs_update = NULL; + + /* + * In commit 98578071b9d71ecaa2344dd9c185237c1765041e + * we reworked labels significantly which in turn lead + * to the case where seg->name = NULL here and we get + * nil dereference in next segments definitions. + * + * Lets placate this case with explicit name setting + * if labels engine didn't set it yet. + * + * FIXME: Need to revisit this moment if such fix doesn't + * break anything but since IEEE 695 format is veeery + * old I don't expect there are many users left. In worst + * case this should only lead to a memory leak. + */ + if (!seg->name) + seg->name = nasm_strdup(name); + + if (seg->use32) + *bits = 32; + else + *bits = 16; + return seg->index; + } +} + +/* + * directives supported + */ +static enum directive_result +ieee_directive(enum directive directive, char *value) +{ + (void)value; + + switch (directive) { + case D_UPPERCASE: + ieee_uppercase = true; + return DIRR_OK; + + default: + return DIRR_UNKNOWN; + } +} + +static void ieee_sectalign(int32_t seg, unsigned int value) +{ + struct ieeeSection *s; + + list_for_each(s, seghead) { + if (s->index == seg) + break; + } + + /* + * 256 is maximum there, note it may happen + * that align is issued on "absolute" segment + * it's fine since SEG_ABS > 256 and we never + * get escape this test + */ + if (!s || !is_power2(value) || value > 256) + return; + + if ((unsigned int)s->align < value) + s->align = value; +} + +/* + * Return segment data + */ +static int32_t ieee_segbase(int32_t segment) +{ + struct ieeeSection *seg; + + /* + * Find the segment in our list. + */ + for (seg = seghead; seg; seg = seg->next) + if (seg->index == segment - 1) + break; + + if (!seg) + return segment; /* not one of ours - leave it alone */ + + if (seg->align >= SEG_ABS) + return seg->align; /* absolute segment */ + + return segment; /* no special treatment */ +} + +static void ieee_write_file(void) +{ + const struct tm * const thetime = &official_compile_time.local; + struct FileName *fn; + struct ieeeSection *seg; + struct ieeePublic *pub, *loc; + struct ieeeExternal *ext; + struct ieeeObjData *data; + struct ieeeFixupp *fix; + struct Array *arr; + int i; + const bool debuginfo = (dfmt == &ladsoft_debug_form); + + /* + * Write the module header + */ + ieee_putascii("MBFNASM,%02X%s.\n", strlen(ieee_infile), ieee_infile); + + /* + * Write the NASM boast comment. + */ + ieee_putascii("CO0,%02X%s.\n", nasm_comment_len(), nasm_comment()); + + /* + * write processor-specific information + */ + ieee_putascii("AD8,4,L.\n"); + + /* + * date and time + */ + ieee_putascii("DT%04d%02d%02d%02d%02d%02d.\n", + 1900 + thetime->tm_year, thetime->tm_mon + 1, + thetime->tm_mday, thetime->tm_hour, thetime->tm_min, + thetime->tm_sec); + /* + * if debugging, dump file names + */ + for (fn = fnhead; fn && debuginfo; fn = fn->next) { + ieee_putascii("C0105,%02X%s.\n", strlen(fn->name), fn->name); + } + + ieee_putascii("CO101,07ENDHEAD.\n"); + /* + * the standard doesn't specify when to put checksums, + * we'll just do it periodically. + */ + ieee_putcs(false); + + /* + * Write the section headers + */ + seg = seghead; + if (!debuginfo && seg && !strcmp(seg->name, "??LINE")) + seg = seg->next; + while (seg) { + char buf[256]; + char attrib; + switch (seg->combine) { + case CMB_PUBLIC: + default: + attrib = 'C'; + break; + case CMB_PRIVATE: + attrib = 'S'; + break; + case CMB_COMMON: + attrib = 'M'; + break; + } + ieee_unqualified_name(buf, seg->name); + if (seg->align >= SEG_ABS) { + ieee_putascii("ST%X,A,%02X%s.\n", seg->ieee_index, + strlen(buf), buf); + ieee_putascii("ASL%X,%lX.\n", seg->ieee_index, + (seg->align - SEG_ABS) * 16); + } else { + ieee_putascii("ST%X,%c,%02X%s.\n", seg->ieee_index, attrib, + strlen(buf), buf); + ieee_putascii("SA%X,%lX.\n", seg->ieee_index, seg->align); + ieee_putascii("ASS%X,%X.\n", seg->ieee_index, + seg->currentpos); + } + seg = seg->next; + } + /* + * write the start address if there is one + */ + if (ieee_entry_seg && seghead) { + for (seg = seghead; seg; seg = seg->next) + if (seg->index == ieee_entry_seg) + break; + if (!seg) + nasm_panic("Start address records are incorrect"); + else + ieee_putascii("ASG,R%X,%lX,+.\n", seg->ieee_index, + ieee_entry_ofs); + } + + ieee_putcs(false); + /* + * Write the publics + */ + i = 1; + for (seg = seghead; seg; seg = seg->next) { + for (pub = seg->pubhead; pub; pub = pub->next) { + char buf[256]; + ieee_unqualified_name(buf, pub->name); + ieee_putascii("NI%X,%02X%s.\n", i, strlen(buf), buf); + if (pub->segment == -1) + ieee_putascii("ASI%X,R%X,%lX,+.\n", i, pub->index, + pub->offset); + else + ieee_putascii("ASI%X,%lX,%lX,+.\n", i, pub->segment * 16, + pub->offset); + if (debuginfo) { + if (pub->type >= 0x100) + ieee_putascii("ATI%X,T%X.\n", i, pub->type - 0x100); + else + ieee_putascii("ATI%X,%X.\n", i, pub->type); + } + i++; + } + } + pub = fpubhead; + i = 1; + while (pub) { + char buf[256]; + ieee_unqualified_name(buf, pub->name); + ieee_putascii("NI%X,%02X%s.\n", i, strlen(buf), buf); + if (pub->segment == -1) + ieee_putascii("ASI%X,R%X,%lX,+.\n", i, pub->index, + pub->offset); + else + ieee_putascii("ASI%X,%lX,%lX,+.\n", i, pub->segment * 16, + pub->offset); + if (debuginfo) { + if (pub->type >= 0x100) + ieee_putascii("ATI%X,T%X.\n", i, pub->type - 0x100); + else + ieee_putascii("ATI%X,%X.\n", i, pub->type); + } + i++; + pub = pub->next; + } + /* + * Write the externals + */ + ext = exthead; + i = 1; + while (ext) { + char buf[256]; + ieee_unqualified_name(buf, ext->name); + ieee_putascii("NX%X,%02X%s.\n", i++, strlen(buf), buf); + ext = ext->next; + } + ieee_putcs(false); + + /* + * IEEE doesn't have a standard pass break record + * so use the ladsoft variant + */ + ieee_putascii("CO100,06ENDSYM.\n"); + + /* + * now put types + */ + i = ARRAY_BOT; + for (arr = arrhead; arr && debuginfo; arr = arr->next) { + ieee_putascii("TY%X,20,%X,%lX.\n", i++, arr->basetype, + arr->size); + } + /* + * now put locals + */ + i = 1; + for (seg = seghead; seg && debuginfo; seg = seg->next) { + for (loc = seg->lochead; loc; loc = loc->next) { + char buf[256]; + ieee_unqualified_name(buf, loc->name); + ieee_putascii("NN%X,%02X%s.\n", i, strlen(buf), buf); + if (loc->segment == -1) + ieee_putascii("ASN%X,R%X,%lX,+.\n", i, loc->index, + loc->offset); + else + ieee_putascii("ASN%X,%lX,%lX,+.\n", i, loc->segment * 16, + loc->offset); + if (debuginfo) { + if (loc->type >= 0x100) + ieee_putascii("ATN%X,T%X.\n", i, loc->type - 0x100); + else + ieee_putascii("ATN%X,%X.\n", i, loc->type); + } + i++; + } + } + + /* + * put out section data; + */ + seg = seghead; + if (!debuginfo && seg && !strcmp(seg->name, "??LINE")) + seg = seg->next; + while (seg) { + if (seg->currentpos) { + int32_t size, org = 0; + data = seg->data; + ieee_putascii("SB%X.\n", seg->ieee_index); + fix = seg->fptr; + while (fix) { + size = HUNKSIZE - (org % HUNKSIZE); + size = + size + org > + seg->currentpos ? seg->currentpos - org : size; + size = fix->offset - org > size ? size : fix->offset - org; + org = ieee_putld(org, org + size, data->data); + if (org % HUNKSIZE == 0) + data = data->next; + if (org == fix->offset) { + org += ieee_putlr(fix); + fix = fix->next; + } + } + while (org < seg->currentpos && data) { + size = + seg->currentpos - org > + HUNKSIZE ? HUNKSIZE : seg->currentpos - org; + org = ieee_putld(org, org + size, data->data); + data = data->next; + } + ieee_putcs(false); + + } + seg = seg->next; + } + /* + * module end record + */ + ieee_putascii("ME.\n"); +} + +static void ieee_write_byte(struct ieeeSection *seg, int data) +{ + int temp; + if (!(temp = seg->currentpos++ % HUNKSIZE)) + ieee_data_new(seg); + seg->datacurr->data[temp] = data; +} + +static void ieee_write_word(struct ieeeSection *seg, int data) +{ + ieee_write_byte(seg, data & 0xFF); + ieee_write_byte(seg, (data >> 8) & 0xFF); +} + +static void ieee_write_dword(struct ieeeSection *seg, int32_t data) +{ + ieee_write_byte(seg, data & 0xFF); + ieee_write_byte(seg, (data >> 8) & 0xFF); + ieee_write_byte(seg, (data >> 16) & 0xFF); + ieee_write_byte(seg, (data >> 24) & 0xFF); +} +static void printf_func(1, 2) ieee_putascii(char *format, ...) +{ + char buffer[256]; + size_t i, l; + va_list ap; + + va_start(ap, format); + l = vsnprintf(buffer, sizeof(buffer), format, ap); + nasm_assert(l < sizeof(buffer)); + for (i = 0; i < l; i++) + if ((uint8_t)buffer[i] > 31) + checksum += buffer[i]; + va_end(ap); + fputs(buffer, ofile); +} + +/* + * put out a checksum record */ +static void ieee_putcs(int toclear) +{ + if (toclear) { + ieee_putascii("CS.\n"); + } else { + checksum += 'C'; + checksum += 'S'; + ieee_putascii("CS%02X.\n", checksum & 127); + } + checksum = 0; +} + +static int32_t ieee_putld(int32_t start, int32_t end, uint8_t *buf) +{ + int32_t val; + if (start == end) + return (start); + val = start % HUNKSIZE; + /* fill up multiple lines */ + while (end - start >= LDPERLINE) { + int i; + ieee_putascii("LD"); + for (i = 0; i < LDPERLINE; i++) { + ieee_putascii("%02X", buf[val++]); + start++; + } + ieee_putascii(".\n"); + } + /* if no partial lines */ + if (start == end) + return (start); + /* make a partial line */ + ieee_putascii("LD"); + while (start < end) { + ieee_putascii("%02X", buf[val++]); + start++; + } + ieee_putascii(".\n"); + return (start); +} +static int32_t ieee_putlr(struct ieeeFixupp *p) +{ +/* + * To deal with the vagaries of segmentation the LADsoft linker + * defines two types of segments: absolute and virtual. Note that + * 'absolute' in this context is a different thing from the IEEE + * definition of an absolute segment type, which is also supported. If a + * segment is linked in virtual mode the low limit (L-var) is + * subtracted from each R,X, and P variable which appears in an + * expression, so that we can have relative offsets. Meanwhile + * in the ABSOLUTE mode this subtraction is not done and + * so we can use absolute offsets from 0. In the LADsoft linker + * this configuration is not done in the assemblker source but in + * a source the linker reads. Generally this type of thing only + * becomes an issue if real mode code is used. A pure 32-bit linker could + * get away without defining the virtual mode... + */ + char buf[40]; + int32_t size = p->size; + switch (p->ftype) { + case FT_SEG: + if (p->id1 < 0) + sprintf(buf, "%"PRIX32"", -p->id1); + else + sprintf(buf, "L%"PRIX32",10,/", p->id1); + break; + case FT_OFS: + sprintf(buf, "R%"PRIX32",%"PRIX32",+", p->id1, p->addend); + break; + case FT_REL: + sprintf(buf, "R%"PRIX32",%"PRIX32",+,P,-,%X,-", p->id1, p->addend, p->size); + break; + + case FT_WRT: + if (p->id2 < 0) + sprintf(buf, "R%"PRIX32",%"PRIX32",+,L%"PRIX32",+,%"PRIX32",-", p->id2, p->addend, + p->id2, -p->id1 * 16); + else + sprintf(buf, "R%"PRIX32",%"PRIX32",+,L%"PRIX32",+,L%"PRIX32",-", p->id2, p->addend, + p->id2, p->id1); + break; + case FT_EXT: + sprintf(buf, "X%"PRIX32"", p->id1); + break; + case FT_EXTREL: + sprintf(buf, "X%"PRIX32",P,-,%"PRIX32",-", p->id1, size); + break; + case FT_EXTSEG: + /* We needed a non-ieee hack here. + * We introduce the Y variable, which is the low + * limit of the native segment the extern resides in + */ + sprintf(buf, "Y%"PRIX32",10,/", p->id1); + break; + case FT_EXTWRT: + if (p->id2 < 0) + sprintf(buf, "X%"PRIX32",Y%"PRIX32",+,%"PRIX32",-", p->id2, p->id2, + -p->id1 * 16); + else + sprintf(buf, "X%"PRIX32",Y%"PRIX32",+,L%"PRIX32",-", p->id2, p->id2, p->id1); + break; + } + ieee_putascii("LR(%s,%"PRIX32").\n", buf, size); + + return (size); +} + +/* Dump all segment data (text and fixups )*/ + +static void ieee_unqualified_name(char *dest, char *source) +{ + if (ieee_uppercase) { + while (*source) + *dest++ = toupper(*source++); + *dest = 0; + } else + strcpy(dest, source); +} +static void dbgls_init(void) +{ + int tempint; + + fnhead = NULL; + fntail = &fnhead; + arrindex = ARRAY_BOT; + arrhead = NULL; + arrtail = &arrhead; + ieee_segment("??LINE", &tempint); + any_segs = false; +} +static void dbgls_cleanup(void) +{ + struct ieeeSection *segtmp; + while (fnhead) { + struct FileName *fntemp = fnhead; + fnhead = fnhead->next; + nasm_free(fntemp->name); + nasm_free(fntemp); + } + for (segtmp = seghead; segtmp; segtmp = segtmp->next) { + while (segtmp->lochead) { + struct ieeePublic *loctmp = segtmp->lochead; + segtmp->lochead = loctmp->next; + nasm_free(loctmp->name); + nasm_free(loctmp); + } + } + while (arrhead) { + struct Array *arrtmp = arrhead; + arrhead = arrhead->next; + nasm_free(arrtmp); + } +} + +/* + * because this routine is not bracketed in + * the main program, this routine will be called even if there + * is no request for debug info + * so, we have to make sure the ??LINE segment is available + * as the first segment when this debug format is selected + */ +static void dbgls_linnum(const char *lnfname, int32_t lineno, int32_t segto) +{ + struct FileName *fn; + struct ieeeSection *seg; + int i = 0; + if (segto == NO_SEG) + return; + + /* + * If `any_segs' is still false, we must define a default + * segment. + */ + if (!any_segs) { + int tempint; /* ignored */ + if (segto != ieee_segment("__NASMDEFSEG", &tempint)) + nasm_panic("strange segment conditions in IEEE driver"); + } + + /* + * Find the segment we are targeting. + */ + for (seg = seghead; seg; seg = seg->next) + if (seg->index == segto) + break; + if (!seg) + nasm_panic("lineno directed to nonexistent segment?"); + + for (fn = fnhead; fn; fn = fn->next) { + if (!nasm_stricmp(lnfname, fn->name)) + break; + i++; + } + if (!fn) { + fn = nasm_malloc(sizeof(*fn)); + fn->name = nasm_malloc(strlen(lnfname) + 1); + fn->index = i; + strcpy(fn->name, lnfname); + fn->next = NULL; + *fntail = fn; + fntail = &fn->next; + } + ieee_write_byte(seghead, fn->index); + ieee_write_word(seghead, lineno); + ieee_write_fixup(segto, NO_SEG, seghead, 4, OUT_ADDRESS, + seg->currentpos); + +} +static void dbgls_deflabel(char *name, int32_t segment, + int64_t offset, int is_global, char *special) +{ + struct ieeeSection *seg; + + /* Keep compiler from warning about special */ + (void)special; + + /* + * Note: ..[^@] special symbols are filtered in labels.c + */ + + /* + * If it's a special-retry from pass two, discard it. + */ + if (is_global == 3) + return; + + /* + * Case (i): + */ + if (ieee_seg_needs_update) + return; + if (segment < SEG_ABS && segment != NO_SEG && segment % 2) + return; + + if (segment >= SEG_ABS || segment == NO_SEG) { + return; + } + + /* + * If `any_segs' is still false, we might need to define a + * default segment, if they're trying to declare a label in + * `first_seg'. But the label should exist due to a prior + * call to ieee_deflabel so we can skip that. + */ + + for (seg = seghead; seg; seg = seg->next) + if (seg->index == segment) { + struct ieeePublic *loc; + /* + * Case (ii). Maybe MODPUB someday? + */ + if (!is_global) { + last_defined = loc = nasm_malloc(sizeof(*loc)); + *seg->loctail = loc; + seg->loctail = &loc->next; + loc->next = NULL; + loc->name = nasm_strdup(name); + loc->offset = offset; + loc->segment = -1; + loc->index = seg->ieee_index; + } + } +} +static void dbgls_typevalue(int32_t type) +{ + int elem = TYM_ELEMENTS(type); + type = TYM_TYPE(type); + + if (!last_defined) + return; + + switch (type) { + case TY_BYTE: + last_defined->type = 1; /* uint8_t */ + break; + case TY_WORD: + last_defined->type = 3; /* unsigned word */ + break; + case TY_DWORD: + last_defined->type = 5; /* unsigned dword */ + break; + case TY_FLOAT: + last_defined->type = 9; /* float */ + break; + case TY_QWORD: + last_defined->type = 10; /* qword */ + break; + case TY_TBYTE: + last_defined->type = 11; /* TBYTE */ + break; + default: + last_defined->type = 0x10; /* near label */ + break; + } + + if (elem > 1) { + struct Array *arrtmp = nasm_malloc(sizeof(*arrtmp)); + int vtype = last_defined->type; + arrtmp->size = elem; + arrtmp->basetype = vtype; + arrtmp->next = NULL; + last_defined->type = arrindex++ + 0x100; + *arrtail = arrtmp; + arrtail = &(arrtmp->next); + } + last_defined = NULL; +} +static void dbgls_output(int output_type, void *param) +{ + (void)output_type; + (void)param; +} +static const struct dfmt ladsoft_debug_form = { + "LADsoft Debug Records", + "ladsoft", + dbgls_init, + dbgls_linnum, + dbgls_deflabel, + NULL, /* .debug_smacros */ + NULL, /* .debug_include */ + NULL, /* .debug_mmacros */ + null_debug_directive, + dbgls_typevalue, + dbgls_output, + dbgls_cleanup, + NULL /* pragma list */ +}; +static const struct dfmt * const ladsoft_debug_arr[3] = { + &ladsoft_debug_form, + &null_debug_form, + NULL +}; +const struct ofmt of_ieee = { + "IEEE-695 (LADsoft variant) object file format", + "ieee", + ".o", + OFMT_TEXT, + 32, + ladsoft_debug_arr, + &ladsoft_debug_form, + NULL, + ieee_init, + null_reset, + nasm_do_legacy_output, + ieee_out, + ieee_deflabel, + ieee_segment, + NULL, + ieee_sectalign, + ieee_segbase, + ieee_directive, + ieee_cleanup, + NULL /* pragma list */ +}; + +#endif /* OF_IEEE */ diff --git a/vere/ext/nasm/output/outlib.c b/vere/ext/nasm/output/outlib.c new file mode 100644 index 0000000..54c8753 --- /dev/null +++ b/vere/ext/nasm/output/outlib.c @@ -0,0 +1,324 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * outlib.c + * + * Common routines for the output backends. + */ + +#include "outlib.h" +#include "raa.h" + +uint64_t realsize(enum out_type type, uint64_t size) +{ + switch (type) { + case OUT_REL1ADR: + return 1; + case OUT_REL2ADR: + return 2; + case OUT_REL4ADR: + return 4; + case OUT_REL8ADR: + return 8; + default: + return size; + } +} + +/* Common section/symbol handling */ + +struct ol_sect *_ol_sect_list; +uint64_t _ol_nsects; /* True sections, not external symbols */ +static struct ol_sect **ol_sect_tail = &_ol_sect_list; +static struct hash_table ol_secthash; +static struct RAA *ol_sect_index_tbl; + +struct ol_sym *_ol_sym_list; +uint64_t _ol_nsyms; +static struct ol_sym **ol_sym_tail = &_ol_sym_list; +static struct hash_table ol_symhash; + +void ol_init(void) +{ +} + +static void ol_free_symbols(void) +{ + struct ol_sym *s, *stmp; + + hash_free(&ol_symhash); + + list_for_each_safe(s, stmp, _ol_sym_list) { + nasm_free((char *)s->name); + nasm_free(s); + } + + _ol_nsyms = 0; + _ol_sym_list = NULL; + ol_sym_tail = &_ol_sym_list; +} + +static void ol_free_sections(void) +{ + struct ol_sect *s, *stmp; + + hash_free(&ol_secthash); + raa_free(ol_sect_index_tbl); + ol_sect_index_tbl = NULL; + + list_for_each_safe(s, stmp, _ol_sect_list) { + saa_free(s->data); + saa_free(s->reloc); + nasm_free((char *)s->name); + nasm_free(s); + } + + _ol_nsects = 0; + _ol_sect_list = NULL; + ol_sect_tail = &_ol_sect_list; +} + +void ol_cleanup(void) +{ + ol_free_symbols(); + ol_free_sections(); +} + +/* + * Allocate a section index and add a section, subsection, or external + * symbol to the section-by-index table. If the index provided is zero, + * allocate a new index via seg_alloc(). + */ +static uint32_t ol_seg_alloc(void *s, uint32_t ix) +{ + if (!ix) + ix = seg_alloc(); + ol_sect_index_tbl = raa_write_ptr(ol_sect_index_tbl, ix >> 1, s); + return ix; +} + +/* + * Find a section or create a new section structure if it does not exist + * and allocate it an index value via seg_alloc(). + */ +struct ol_sect *_ol_get_sect(const char *name, size_t ssize, size_t rsize) +{ + struct ol_sect *s, **sp; + struct hash_insert hi; + + sp = (struct ol_sect **)hash_find(&ol_secthash, name, &hi); + if (sp) + return *sp; + + s = nasm_zalloc(ssize); + s->syml.tail = &s->syml.head; + s->name = nasm_strdup(name); + s->data = saa_init(1); + s->reloc = saa_init(rsize); + *ol_sect_tail = s; + ol_sect_tail = &s->next; + _ol_nsects++; + s->index = s->subindex = ol_seg_alloc(s, 0); + + hash_add(&hi, s->name, s); + return s; +} + +/* Find a section by name without creating one */ +struct ol_sect *_ol_sect_by_name(const char *name) +{ + struct ol_sect **sp; + + sp = (struct ol_sect **)hash_find(&ol_secthash, name, NULL); + return sp ? *sp : NULL; +} + +/* Find a section or external symbol by index; NULL if not valid */ +struct ol_sect *_ol_sect_by_index(int32_t index) +{ + uint32_t ix = index; + + if (unlikely(ix >= SEG_ABS)) + return NULL; + + return raa_read_ptr(ol_sect_index_tbl, ix >> 1); +} + +/* + * Start a new subsection for the given section. At the moment, once a + * subsection has been created, it is not possible to revert to an + * earlier subsection. ol_sect_by_index() will return the main section + * structure. Returns the new section index. This is used to prevent + * the front end from optimizing across subsection boundaries. + */ +int32_t _ol_new_subsection(struct ol_sect *sect) +{ + if (unlikely(!sect)) + return NO_SEG; + + return sect->subindex = ol_seg_alloc(sect, 0); +} + +/* + * Insert a symbol into a list; need to use upcasting using container_of() + * to walk the list later. + */ +static void ol_add_sym_to(struct ol_symlist *syml, struct ol_symhead *head, + uint64_t offset) +{ + syml->tree.key = offset; + head->tree = rb_insert(head->tree, &syml->tree); + *head->tail = syml; + head->tail = &syml->next; + head->n++; +} + +/* + * Create a location structure from seg:offs + */ +void ol_mkloc(struct ol_loc *loc, int64_t offs, int32_t seg) +{ + nasm_zero(*loc); + loc->offs = offs; + + if (unlikely((uint32_t)seg >= SEG_ABS)) { + if (likely(seg == NO_SEG)) { + loc->seg.t = OS_NOSEG; + } else { + loc->seg.t = OS_ABS; + loc->seg.index = seg - SEG_ABS; + } + } else { + loc->seg.index = seg & ~1; + loc->seg.t = OS_SECT | (seg & 1); + loc->seg.s.sect = _ol_sect_by_index(loc->seg.index); + } +} + +/* + * Create a new symbol. If this symbol is OS_OFFS, add it to the relevant + * section, too. If the symbol already exists, return NULL; this is + * different from ol_get_section() as a single section may be invoked + * many times. On the contrary, the front end will prevent a single symbol + * from being defined more than once. + * + * If flags has OF_GLOBAL set, add it to the global symbol hash for + * the containing section if applicable. + * + * If flags has OF_IMPSEC set, allocate a segment index for it via + * seg_alloc() unless v->index is already set, and add it to the + * section by index list. + */ +struct ol_sym *_ol_new_sym(const char *name, const struct ol_loc *v, + uint32_t flags, size_t size) +{ + struct hash_insert hi; + struct ol_sym *sym; + + if (hash_find(&ol_symhash, name, &hi)) + return NULL; /* Symbol already exists */ + + flags |= OF_SYMBOL; + + sym = nasm_zalloc(size); + sym->name = nasm_strdup(name); + sym->v = *v; + + if (sym->v.seg.t & OS_SECT) { + struct ol_sect *sect = sym->v.seg.s.sect; + + if (!sect || (sect->flags & OF_SYMBOL)) + /* Must be an external or common reference */ + flags |= OF_IMPSEC; + + if (flags & OF_IMPSEC) { + /* Metasection */ + if (!sym->v.seg.s.sym) { + sym->v.seg.s.sym = sym; + sym->v.seg.index = ol_seg_alloc(sym, sym->v.seg.index); + } + } else if (sym->v.seg.t == OS_OFFS) { + struct ol_sect * const sect = sym->v.seg.s.sect; + const uint64_t offs = sym->v.offs; + + ol_add_sym_to(&sym->syml, §->syml, offs); + if (flags & OF_GLOBAL) + ol_add_sym_to(&sym->symg, §->symg, offs); + } + } + sym->flags = flags; + + *ol_sym_tail = sym; + ol_sym_tail = &sym->next; + _ol_nsyms++; + + hash_add(&hi, sym->name, sym); + return sym; +} + +/* Find a symbol in the global namespace */ +struct ol_sym *_ol_sym_by_name(const char *name) +{ + struct ol_sym **symp; + + symp = (struct ol_sym **)hash_find(&ol_symhash, name, NULL); + return symp ? *symp : NULL; +} + +/* + * Find a symbol by address in a specific section. If no symbol is defined + * at that exact address, return the immediately previously defined one. + * If global is set, then only return global symbols. + */ +struct ol_sym *_ol_sym_by_address(struct ol_sect *sect, int64_t addr, + bool global) +{ + struct ol_symhead *head; + size_t t_offs; + struct rbtree *t; + + if (global) { + head = §->symg; + t_offs = offsetof(struct ol_sym, symg.tree); + } else { + head = §->syml; + t_offs = offsetof(struct ol_sym, syml.tree); + } + + t = rb_search(head->tree, addr); + if (!t) + return NULL; + + return (struct ol_sym *)((char *)t - t_offs); +} diff --git a/vere/ext/nasm/output/outlib.h b/vere/ext/nasm/output/outlib.h new file mode 100644 index 0000000..7f6a789 --- /dev/null +++ b/vere/ext/nasm/output/outlib.h @@ -0,0 +1,313 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef NASM_OUTLIB_H +#define NASM_OUTLIB_H + +#include "compiler.h" +#include "nasm.h" +#include "error.h" +#include "hashtbl.h" +#include "saa.h" +#include "rbtree.h" + +uint64_t realsize(enum out_type type, uint64_t size); + +/* Do-nothing versions of some output routines */ +enum directive_result +null_directive(enum directive directive, char *value); +void null_sectalign(int32_t seg, unsigned int value); +void null_reset(void); +int32_t null_segbase(int32_t seg); + +/* Do-nothing versions of all the debug routines */ +void null_debug_init(void); +void null_debug_linenum(const char *filename, int32_t linenumber, + int32_t segto); +void null_debug_deflabel(char *name, int32_t segment, int64_t offset, + int is_global, char *special); +void null_debug_directive(const char *directive, const char *params); +void null_debug_typevalue(int32_t type); +void null_debug_output(int type, void *param); +void null_debug_cleanup(void); +extern const struct dfmt * const null_debug_arr[2]; + +/* Wrapper for unported backends */ +void nasm_do_legacy_output(const struct out_data *data); + +/* + * Common routines for tasks that really should migrate into the core. + * This provides a common interface for maintaining sections and symbols, + * and provide quick lookups as well as declared-order sequential walks. + * + * These structures are intended to be embedded at the *top* of a + * backend-specific structure containing additional information. + * + * The tokens O_Section, O_Symbol and O_Reloc are intended to be + * defined as macros by the backend before including this file! + */ + +struct ol_sect; +struct ol_sym; + +#ifndef O_Section +typedef struct ol_sect O_Section; +#endif +#ifndef O_Symbol +typedef struct ol_sym O_Symbol; +#endif +#ifndef O_Reloc +typedef void * O_Reloc; +#endif + +/* Common section structure */ + +/* + * Common flags for sections and symbols; low values reserved for + * backend. Note that both ol_sect and ol_sym begin with a flags + * field, so if a section pointer points to an external symbol instead + * they can be trivially resolved. + */ +#define OF_SYMBOL 0x80000000 +#define OF_GLOBAL 0x40000000 +#define OF_IMPSEC 0x20000000 +#define OF_COMMON 0x10000000 + +struct ol_sym; + +struct ol_symlist { + struct ol_symlist *next; + struct rbtree tree; +}; +struct ol_symhead { + struct ol_symlist *head, **tail; + struct rbtree *tree; + uint64_t n; +}; + +struct ol_sect { + uint32_t flags; /* Section/symbol flags */ + struct ol_sect *next; /* Next section in declared order */ + const char *name; /* Name of section */ + struct ol_symhead syml; /* All symbols in this section */ + struct ol_symhead symg; /* Global symbols in this section */ + struct SAA *data; /* Contents of section */ + struct SAA *reloc; /* Section relocations */ + uint32_t index; /* Primary section index */ + uint32_t subindex; /* Current subsection index */ +}; + +/* Segment reference */ +enum ol_seg_type { + OS_NOSEG = 0, /* Plain number (no segment) */ + OS_SEGREF = 1, /* It is a segment reference */ + OS_ABS = 1, /* Absolute segment reference */ + OS_SECT = 2, /* It is a real section */ + OS_OFFS = OS_SECT, /* Offset reference in section */ + OS_SEG = OS_SECT|OS_SEGREF /* Section reference */ +}; + +union ol_segval { + struct ol_sect *sect; /* Section structure */ + struct ol_sym *sym; /* External symbol structure */ +}; + +struct ol_seg { + union ol_segval s; + enum ol_seg_type t; + + /* + * For a section: subsection index + * For a metasymbol: virtual segment index + * For an absolute symbol: absolute value + */ + uint32_t index; +}; + +/* seg:offs representing the full location value and type */ +struct ol_loc { + int64_t offs; + struct ol_seg seg; +}; + +/* Common symbol structure */ +struct ol_sym { + uint32_t flags; /* Section/symbol flags */ + uint32_t size; /* Size value (for backend) */ + struct ol_sym *next; /* Next symbol in declared order */ + const char *name; /* Symbol name */ + struct ol_symlist syml; /* Section-local symbol list */ + struct ol_symlist symg; /* Section-local global symbol list */ + struct ol_loc p; /* Symbol position ("where") */ + struct ol_loc v; /* Symbol value ("what") */ +}; + +/* + * Operations + */ +void ol_init(void); +void ol_cleanup(void); + +/* Convert offs:seg to a location structure */ +extern void +ol_mkloc(struct ol_loc *loc, int64_t offs, int32_t seg); + +/* Get the section or external symbol from a struct ol_seg */ +static inline O_Section *seg_sect(struct ol_seg *seg) +{ + return (O_Section *)seg->s.sect; +} +static inline O_Symbol *seg_xsym(struct ol_seg *seg) +{ + return (O_Symbol *)seg->s.sym; +} + +/* + * Return a pointer to the symbol structure if and only if a section is + * really a symbol of some kind (extern, common...) + */ +static inline struct ol_sym *_seg_extsym(struct ol_sect *sect) +{ + return (sect->flags & OF_SYMBOL) ? (struct ol_sym *)sect : NULL; +} +static inline O_Symbol *seg_extsym(O_Section *sect) +{ + return (O_Symbol *)_seg_extsym((struct ol_sect *)sect); +} + +/* + * Find a section or create a new section structure if it does not exist + * and allocate it an index value via seg_alloc(). + */ +extern struct ol_sect * +_ol_get_sect(const char *name, size_t ssize, size_t rsize); +static inline O_Section *ol_get_sect(const char *name) +{ + return (O_Section *)_ol_get_sect(name, sizeof(O_Section), sizeof(O_Reloc)); +} + +/* Find a section by name without creating one */ +extern struct ol_sect *_ol_sect_by_name(const char *); +static inline O_Section *ol_sect_by_name(const char *name) +{ + return (O_Section *)_ol_sect_by_name(name); +} + +/* Find a section or external symbol by index; NULL if not valid */ +extern struct ol_sect *_ol_sect_by_index(int32_t index); +static inline O_Section *ol_sect_by_index(int32_t index) +{ + return (O_Section *)_ol_sect_by_index(index); +} + +/* Global list of sections (not including external symbols) */ +extern struct ol_sect *_ol_sect_list; +static inline O_Section *ol_sect_list(void) +{ + return (O_Section *)_ol_sect_list; +} + +/* Count of sections (not including external symbols) */ +extern uint64_t _ol_nsects; +static inline uint64_t ol_nsects(void) +{ + return _ol_nsects; +} + +/* + * Start a new subsection for the given section. At the moment, once a + * subsection has been created, it is not possible to revert to an + * earlier subsection. ol_sect_by_index() will return the main section + * structure. Returns the new section index. This is used to prevent + * the front end from optimizing across subsection boundaries. + */ +extern int32_t _ol_new_subsection(struct ol_sect *sect); +static inline int32_t ol_new_subsection(O_Section *sect) +{ + return _ol_new_subsection((struct ol_sect *)sect); +} + +/* + * Create a new symbol. If this symbol is OS_OFFS, add it to the relevant + * section, too. If the symbol already exists, return NULL; this is + * different from ol_get_section() as a single section may be invoked + * many times. On the contrary, the front end will prevent a single symbol + * from being defined more than once. + * + * If flags has OF_GLOBAL set, add it to the global symbol hash for the + * containing section. If flags has OF_IMPSEC set, allocate a segment + * index for it via seg_alloc() and add it to the section by index list. + */ +extern struct ol_sym *_ol_new_sym(const char *name, const struct ol_loc *v, + uint32_t flags, size_t size); +static inline O_Symbol *ol_new_sym(const char *name, const struct ol_loc *v, + uint32_t flags) +{ + return (O_Symbol *)_ol_new_sym(name, v, flags, sizeof(O_Symbol)); +} + +/* Find a symbol by name in the global namespace */ +extern struct ol_sym *_ol_sym_by_name(const char *name); +static inline O_Symbol *ol_sym_by_name(const char *name) +{ + return (O_Symbol *)_ol_sym_by_name(name); +} + +/* + * Find a symbol by address in a specific section. If no symbol is defined + * at that exact address, return the immediately previously defined one. + * If global is set, then only return global symbols. + */ +extern struct ol_sym *_ol_sym_by_address(struct ol_sect *sect, int64_t addr, + bool global); +static inline O_Symbol *ol_sym_by_address(O_Section *sect, int64_t addr, + bool global) +{ + return (O_Symbol *)_ol_sym_by_address((struct ol_sect *)sect, addr, global); +} + +/* Global list of symbols */ +extern struct ol_sym *_ol_sym_list; +static inline O_Symbol *ol_sym_list(void) +{ + return (O_Symbol *)_ol_sym_list; +} + +/* Global count of symbols */ +extern uint64_t _ol_nsyms; +static inline uint64_t ol_nsyms(void) +{ + return _ol_nsyms; +} + +#endif /* NASM_OUTLIB_H */ diff --git a/vere/ext/nasm/output/outmacho.c b/vere/ext/nasm/output/outmacho.c new file mode 100644 index 0000000..1e776f5 --- /dev/null +++ b/vere/ext/nasm/output/outmacho.c @@ -0,0 +1,2411 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * outmacho.c output routines for the Netwide Assembler to produce + * NeXTstep/OpenStep/Rhapsody/Darwin/MacOS X object files + */ + +#include "compiler.h" + +#include "nctype.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "ilog2.h" +#include "labels.h" +#include "error.h" +#include "saa.h" +#include "raa.h" +#include "rbtree.h" +#include "hashtbl.h" +#include "outform.h" +#include "outlib.h" +#include "ver.h" +#include "dwarf.h" +#include "macho.h" + +#if defined(OF_MACHO) || defined(OF_MACHO64) + +/* Mach-O in-file header structure sizes */ +#define MACHO_HEADER_SIZE 28 +#define MACHO_SEGCMD_SIZE 56 +#define MACHO_SECTCMD_SIZE 68 +#define MACHO_SYMCMD_SIZE 24 +#define MACHO_NLIST_SIZE 12 +#define MACHO_RELINFO_SIZE 8 + +#define MACHO_HEADER64_SIZE 32 +#define MACHO_SEGCMD64_SIZE 72 +#define MACHO_SECTCMD64_SIZE 80 +#define MACHO_NLIST64_SIZE 16 + +/* Mach-O relocations numbers */ + +#define VM_PROT_DEFAULT (VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE) +#define VM_PROT_ALL (VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE) + +/* Our internal relocation types */ +enum reltype { + RL_ABS, /* Absolute relocation */ + RL_REL, /* Relative relocation */ + RL_TLV, /* Thread local */ + RL_BRANCH, /* Relative direct branch */ + RL_SUB, /* X86_64_RELOC_SUBTRACT */ + RL_GOT, /* X86_64_RELOC_GOT */ + RL_GOTLOAD /* X86_64_RELOC_GOT_LOAD */ +}; +#define RL_MAX_32 RL_TLV +#define RL_MAX_64 RL_GOTLOAD + +struct macho_fmt { + uint32_t ptrsize; /* Pointer size in bytes */ + uint32_t mh_magic; /* Which magic number to use */ + uint32_t cpu_type; /* Which CPU type */ + uint32_t lc_segment; /* Which segment load command */ + uint32_t header_size; /* Header size */ + uint32_t segcmd_size; /* Segment command size */ + uint32_t sectcmd_size; /* Section command size */ + uint32_t nlist_size; /* Nlist (symbol) size */ + enum reltype maxreltype; /* Maximum entry in enum reltype permitted */ + uint32_t reloc_abs; /* Absolute relocation type */ + uint32_t reloc_rel; /* Relative relocation type */ + uint32_t reloc_tlv; /* Thread local relocation type */ + bool forcesym; /* Always use "external" (symbol-relative) relocations */ +}; + +static struct macho_fmt fmt; + +static void fwriteptr(uint64_t data, FILE * fp) +{ + fwriteaddr(data, fmt.ptrsize, fp); +} + +struct section { + /* nasm internal data */ + struct section *next; + struct SAA *data; + int32_t index; /* Main section index */ + int32_t subsection; /* Current subsection index */ + int32_t fileindex; + struct reloc *relocs; + struct rbtree *syms[2]; /* All/global symbols symbols in section */ + int align; + bool by_name; /* This section was specified by full MachO name */ + char namestr[34]; /* segment,section as a C string */ + + /* data that goes into the file */ + char sectname[16]; /* what this section is called */ + char segname[16]; /* segment this section will be in */ + uint64_t addr; /* in-memory address (subject to alignment) */ + uint64_t size; /* in-memory and -file size */ + uint64_t offset; /* in-file offset */ + uint32_t pad; /* padding bytes before section */ + uint32_t nreloc; /* relocation entry count */ + uint32_t flags; /* type and attributes (masked) */ + uint32_t extreloc; /* external relocations */ +}; + +#define S_NASM_TYPE_MASK 0x800004ff /* we consider these bits "section type" */ + +/* fake section for absolute symbols, *not* part of the section linked list */ +static struct section absolute_sect; + +struct reloc { + /* nasm internal data */ + struct reloc *next; + + /* data that goes into the file */ + int32_t addr; /* op's offset in section */ + uint32_t snum:24, /* contains symbol index if + ** ext otherwise in-file + ** section number */ + pcrel:1, /* relative relocation */ + length:2, /* 0=byte, 1=word, 2=int32_t, 3=int64_t */ + ext:1, /* external symbol referenced */ + type:4; /* reloc type */ +}; + +struct symbol { + /* nasm internal data */ + struct rbtree symv[2]; /* All/global symbol rbtrees; "key" contains the + symbol offset. */ + struct symbol *next; /* next symbol in the list */ + char *name; /* name of this symbol */ + int32_t initial_snum; /* symbol number used above in reloc */ + int32_t snum; /* true snum for reloc */ + + /* data that goes into the file */ + uint32_t strx; /* string table index */ + uint8_t type; /* symbol type */ + uint8_t sect; /* NO_SECT or section number */ + uint16_t desc; /* for stab debugging, 0 for us */ +}; + +#define DEFAULT_SECTION_ALIGNMENT 0 /* byte (i.e. no) alignment */ + +static struct section *sects, **sectstail, **sectstab; +static struct symbol *syms, **symstail; +static uint32_t nsyms; + +/* These variables are set by macho_layout_symbols() to organize + the symbol table and string table in order the dynamic linker + expects. They are then used in macho_write() to put out the + symbols and strings in that order. + + The order of the symbol table is: + local symbols + defined external symbols (sorted by name) + undefined external symbols (sorted by name) + + The order of the string table is: + strings for external symbols + strings for local symbols + */ +static uint32_t ilocalsym = 0; +static uint32_t iextdefsym = 0; +static uint32_t iundefsym = 0; +static uint32_t nlocalsym; +static uint32_t nextdefsym; +static uint32_t nundefsym; +static struct symbol **extdefsyms = NULL; +static struct symbol **undefsyms = NULL; + +static struct RAA *extsyms; +static struct SAA *strs; +static uint32_t strslen; + +/* Global file information. This should be cleaned up into either + a structure or as function arguments. */ +static uint32_t head_ncmds = 0; +static uint32_t head_sizeofcmds = 0; +static uint32_t head_flags = 0; +static uint64_t seg_filesize = 0; +static uint64_t seg_vmsize = 0; +static uint32_t seg_nsects = 0; +static uint64_t rel_padcnt = 0; + +/* + * Functions for handling fixed-length zero-padded string + * fields, that may or may not be null-terminated. + */ + +/* Copy a string into a zero-padded fixed-length field */ +#define xstrncpy(xdst, xsrc) strncpy(xdst, xsrc, sizeof(xdst)) + +/* Compare a fixed-length field with a string */ +#define xstrncmp(xdst, xsrc) strncmp(xdst, xsrc, sizeof(xdst)) + +#define alignint32_t(x) \ + ALIGN(x, sizeof(int32_t)) /* align x to int32_t boundary */ + +#define alignint64_t(x) \ + ALIGN(x, sizeof(int64_t)) /* align x to int64_t boundary */ + +#define alignptr(x) \ + ALIGN(x, fmt.ptrsize) /* align x to output format width */ + +static struct hash_table section_by_name; +static struct RAA *section_by_index; + +static struct section * never_null +find_or_add_section(const char *segname, const char *sectname) +{ + struct hash_insert hi; + void **sp; + struct section *s; + char sect[34]; + + snprintf(sect, sizeof sect, "%-16s,%-16s", segname, sectname); + + sp = hash_find(§ion_by_name, sect, &hi); + if (sp) + return (struct section *)(*sp); + + s = nasm_zalloc(sizeof *s); + xstrncpy(s->segname, segname); + xstrncpy(s->sectname, sectname); + xstrncpy(s->namestr, sect); + hash_add(&hi, s->namestr, s); + + s->index = s->subsection = seg_alloc(); + section_by_index = raa_write_ptr(section_by_index, s->index >> 1, s); + + return s; +} + +static inline bool is_new_section(const struct section *s) +{ + return !s->data; +} + +static struct section *get_section_by_name(const char *segname, + const char *sectname) +{ + char sect[34]; + void **sp; + + snprintf(sect, sizeof sect, "%-16s,%-16s", segname, sectname); + + sp = hash_find(§ion_by_name, sect, NULL); + return sp ? (struct section *)(*sp) : NULL; +} + +static struct section *get_section_by_index(int32_t index) +{ + if (index < 0 || index >= SEG_ABS || (index & 1)) + return NULL; + + return raa_read_ptr(section_by_index, index >> 1); +} + +struct dir_list { + struct dir_list *next; + struct dir_list *last; + const char *dir_name; + uint32_t dir; +}; + +struct file_list { + struct file_list *next; + struct file_list *last; + const char *file_name; + uint32_t file; + struct dir_list *dir; +}; + +struct dw_sect_list { + struct SAA *psaa; + int32_t section; + uint32_t line; + uint64_t offset; + uint32_t file; + struct dw_sect_list *next; + struct dw_sect_list *last; +}; + +struct section_info { + uint64_t size; + int32_t secto; +}; + +#define DW_LN_BASE (-5) +#define DW_LN_RANGE 14 +#define DW_OPCODE_BASE 13 +#define DW_MAX_LN (DW_LN_BASE + DW_LN_RANGE) +#define DW_MAX_SP_OPCODE 256 + +static struct file_list *dw_head_file = 0, *dw_cur_file = 0, **dw_last_file_next = NULL; +static struct dir_list *dw_head_dir = 0, **dw_last_dir_next = NULL; +static struct dw_sect_list *dw_head_sect = 0, *dw_cur_sect = 0, *dw_last_sect = 0; +static uint32_t cur_line = 0, dw_num_files = 0, dw_num_dirs = 0, dw_num_sects = 0; +static bool dbg_immcall = false; +static const char *module_name = NULL; + +/* + * Special section numbers which are used to define Mach-O special + * symbols, which can be used with WRT to provide PIC relocation + * types. + */ +static int32_t macho_tlvp_sect; +static int32_t macho_gotpcrel_sect; + +static void macho_init(void) +{ + module_name = inname; + sects = NULL; + sectstail = §s; + + /* Fake section for absolute symbols */ + absolute_sect.index = NO_SEG; + + syms = NULL; + symstail = &syms; + nsyms = 0; + nlocalsym = 0; + nextdefsym = 0; + nundefsym = 0; + + extsyms = raa_init(); + strs = saa_init(1L); + + section_by_index = raa_init(); + + /* string table starts with a zero byte so index 0 is an empty string */ + saa_wbytes(strs, zero_buffer, 1); + strslen = 1; + + /* add special symbol for TLVP */ + macho_tlvp_sect = seg_alloc() + 1; + backend_label("..tlvp", macho_tlvp_sect, 0L); +} + +static void sect_write(struct section *sect, + const uint8_t *data, uint32_t len) +{ + saa_wbytes(sect->data, data, len); + sect->size += len; +} + +/* + * Find a suitable global symbol for a ..gotpcrel or ..tlvp reference + */ +static struct symbol *macho_find_sym(struct section *s, uint64_t offset, + bool global, bool exact) +{ + struct rbtree *srb; + + srb = rb_search(s->syms[global], offset); + + if (!srb || (exact && srb->key != offset)) { + nasm_error(ERR_NONFATAL, "unable to find a suitable%s%s symbol" + " for this reference", + global ? " global" : "", + s == &absolute_sect ? " absolute " : ""); + return NULL; + } + + return container_of(srb - global, struct symbol, symv); +} + +static int64_t add_reloc(struct section *sect, int32_t section, + int64_t offset, + enum reltype reltype, int bytes) +{ + struct reloc *r; + struct section *s; + int32_t fi; + int64_t adjust; + + /* Double check this is a valid relocation type for this platform */ + nasm_assert(reltype <= fmt.maxreltype); + + /* the current end of the section will be the symbol's address for + ** now, might have to be fixed by macho_fixup_relocs() later on. make + ** sure we don't make the symbol scattered by setting the highest + ** bit by accident */ + r = nasm_malloc(sizeof(struct reloc)); + r->addr = sect->size & ~R_SCATTERED; + r->ext = 1; + adjust = 0; + + /* match byte count 1, 2, 4, 8 to length codes 0, 1, 2, 3 respectively */ + r->length = ilog2_32(bytes); + + /* set default relocation values */ + r->type = fmt.reloc_abs; + r->pcrel = 0; + r->snum = R_ABS; + + s = get_section_by_index(section); + fi = s ? s->fileindex : NO_SECT; + + /* absolute relocation */ + switch (reltype) { + case RL_ABS: + if (section == NO_SEG) { + /* absolute (can this even happen?) */ + r->ext = 0; + } else if (fi == NO_SECT) { + /* external */ + r->snum = raa_read(extsyms, section); + } else { + /* local */ + r->ext = 0; + r->snum = fi; + } + break; + + case RL_REL: + case RL_BRANCH: + r->type = fmt.reloc_rel; + r->pcrel = 1; + if (section == NO_SEG) { + /* may optionally be converted below by fmt.forcesym */ + r->ext = 0; + } else if (fi == NO_SECT) { + /* external */ + sect->extreloc = 1; + r->snum = raa_read(extsyms, section); + if (reltype == RL_BRANCH) + r->type = X86_64_RELOC_BRANCH; + } else { + /* local */ + r->ext = 0; + r->snum = fi; + if (reltype == RL_BRANCH) + r->type = X86_64_RELOC_BRANCH; + } + break; + + case RL_SUB: /* obsolete */ + nasm_warn(WARN_OTHER, "relcation with subtraction" + "becomes to be obsolete"); + r->ext = 0; + r->type = X86_64_RELOC_SUBTRACTOR; + break; + + case RL_GOT: + r->type = X86_64_RELOC_GOT; + goto needsym; + + case RL_GOTLOAD: + r->type = X86_64_RELOC_GOT_LOAD; + goto needsym; + + case RL_TLV: + r->type = fmt.reloc_tlv; + goto needsym; + + needsym: + r->pcrel = (fmt.ptrsize == 8 ? 1 : 0); + if (section == NO_SEG) { + nasm_error(ERR_NONFATAL, "Unsupported use of use of WRT"); + goto bail; + } else if (fi == NO_SECT) { + /* external */ + r->snum = raa_read(extsyms, section); + } else { + /* internal - GOTPCREL doesn't need to be in global */ + struct symbol *sym = macho_find_sym(s, offset, + false, /* reltype != RL_TLV */ + true); + if (!sym) { + nasm_error(ERR_NONFATAL, "Symbol for WRT not found"); + goto bail; + } + + adjust -= sym->symv[0].key; + r->snum = sym->initial_snum; + } + break; + } + + /* + * For 64-bit Mach-O, force a symbol reference if at all possible + * Allow for r->snum == R_ABS by searching absolute_sect + */ + if (!r->ext && fmt.forcesym) { + struct symbol *sym = macho_find_sym(s ? s : &absolute_sect, + offset, false, false); + if (sym) { + adjust -= sym->symv[0].key; + r->snum = sym->initial_snum; + r->ext = 1; + } + } + + if (r->pcrel) + adjust += ((r->ext && fmt.ptrsize == 8) ? bytes : -(int64_t)sect->size); + + /* NeXT as puts relocs in reversed order (address-wise) into the + ** files, so we do the same, doesn't seem to make much of a + ** difference either way */ + r->next = sect->relocs; + sect->relocs = r; + if (r->ext) + sect->extreloc = 1; + ++sect->nreloc; + + return adjust; + + bail: + nasm_free(r); + return 0; +} + +static void macho_output(int32_t secto, const void *data, + enum out_type type, uint64_t size, + int32_t section, int32_t wrt) +{ + struct section *s; + int64_t addr, offset; + uint8_t mydata[16], *p; + bool is_bss; + enum reltype reltype; + + s = get_section_by_index(secto); + if (!s) { + nasm_warn(WARN_OTHER, "attempt to assemble code in" + " section %d: defaulting to `.text'", secto); + s = get_section_by_name("__TEXT", "__text"); + + /* should never happen */ + if (!s) + nasm_panic("text section not found"); + } + + /* debug code generation only for sections tagged with + * instruction attribute */ + if (s->flags & S_ATTR_SOME_INSTRUCTIONS) + { + struct section_info sinfo; + sinfo.size = s->size; + sinfo.secto = secto; + dfmt->debug_output(0, &sinfo); + } + + is_bss = (s->flags & SECTION_TYPE) == S_ZEROFILL; + + if (is_bss && type != OUT_RESERVE) { + nasm_warn(WARN_OTHER, "attempt to initialize memory in " + "BSS section: ignored"); + /* FIXME */ + nasm_warn(WARN_OTHER, "section size may be negative" + "with address symbols"); + s->size += realsize(type, size); + return; + } + + memset(mydata, 0, sizeof(mydata)); + + switch (type) { + case OUT_RESERVE: + if (!is_bss) { + nasm_warn(WARN_ZEROING, "uninitialized space declared in" + " %s,%s section: zeroing", s->segname, s->sectname); + + sect_write(s, NULL, size); + } else + s->size += size; + + break; + + case OUT_RAWDATA: + sect_write(s, data, size); + break; + + case OUT_ADDRESS: + { + int asize = abs((int)size); + + addr = *(int64_t *)data; + if (section != NO_SEG) { + if (section % 2) { + nasm_error(ERR_NONFATAL, "Mach-O format does not support" + " section base references"); + } else if (wrt == NO_SEG) { + if (fmt.ptrsize == 8 && asize != 8) { + nasm_error(ERR_NONFATAL, + "Mach-O 64-bit format does not support" + " 32-bit absolute addresses"); + } else { + addr += add_reloc(s, section, addr, RL_ABS, asize); + } + } else if (wrt == macho_tlvp_sect && fmt.ptrsize != 8 && + asize == (int) fmt.ptrsize) { + addr += add_reloc(s, section, addr, RL_TLV, asize); + } else { + nasm_error(ERR_NONFATAL, "Mach-O format does not support" + " this use of WRT"); + } + } + + p = mydata; + WRITEADDR(p, addr, asize); + sect_write(s, mydata, asize); + break; + } + + case OUT_REL1ADR: + case OUT_REL2ADR: + + p = mydata; + offset = *(int64_t *)data; + addr = offset - size; + + if (section != NO_SEG && section % 2) { + nasm_error(ERR_NONFATAL, "Mach-O format does not support" + " section base references"); + } else if (fmt.ptrsize == 8) { + nasm_error(ERR_NONFATAL, "Unsupported non-32-bit" + " Macho-O relocation [2]"); + } else if (wrt != NO_SEG) { + nasm_error(ERR_NONFATAL, "Mach-O format does not support" + " this use of WRT"); + wrt = NO_SEG; /* we can at least _try_ to continue */ + } else { + addr += add_reloc(s, section, addr+size, RL_REL, + type == OUT_REL1ADR ? 1 : 2); + } + + WRITESHORT(p, addr); + sect_write(s, mydata, type == OUT_REL1ADR ? 1 : 2); + break; + + case OUT_REL4ADR: + case OUT_REL8ADR: + + p = mydata; + offset = *(int64_t *)data; + addr = offset - size; + reltype = RL_REL; + + if (section != NO_SEG && section % 2) { + nasm_error(ERR_NONFATAL, "Mach-O format does not support" + " section base references"); + } else if (wrt == NO_SEG) { + if (fmt.ptrsize == 8 && + (s->flags & S_ATTR_SOME_INSTRUCTIONS)) { + uint8_t opcode[2]; + + opcode[0] = opcode[1] = 0; + + /* HACK: Retrieve instruction opcode */ + if (likely(s->data->datalen >= 2)) { + saa_fread(s->data, s->data->datalen-2, opcode, 2); + } else if (s->data->datalen == 1) { + saa_fread(s->data, 0, opcode+1, 1); + } + + if ((opcode[0] != 0x0f && (opcode[1] & 0xfe) == 0xe8) || + (opcode[0] == 0x0f && (opcode[1] & 0xf0) == 0x80)) { + /* Direct call, jmp, or jcc */ + reltype = RL_BRANCH; + } + } + } else if (wrt == macho_gotpcrel_sect) { + reltype = RL_GOT; + + if ((s->flags & S_ATTR_SOME_INSTRUCTIONS) && + s->data->datalen >= 3) { + uint8_t gotload[3]; + + /* HACK: Retrieve instruction opcode */ + saa_fread(s->data, s->data->datalen-3, gotload, 3); + if ((gotload[0] & 0xf8) == 0x48 && + gotload[1] == 0x8b && + (gotload[2] & 0307) == 0005) { + /* movq ,[rel sym wrt ..gotpcrel] */ + reltype = RL_GOTLOAD; + } + } + } else if (wrt == macho_tlvp_sect && fmt.ptrsize == 8) { + reltype = RL_TLV; + } else { + nasm_error(ERR_NONFATAL, "Mach-O format does not support" + " this use of WRT"); + /* continue with RL_REL */ + } + + addr += add_reloc(s, section, offset, reltype, + type == OUT_REL4ADR ? 4 : 8); + WRITELONG(p, addr); + sect_write(s, mydata, type == OUT_REL4ADR ? 4 : 8); + break; + + default: + nasm_error(ERR_NONFATAL, "Unrepresentable relocation in Mach-O"); + break; + } +} + +#define S_CODE (S_REGULAR | S_ATTR_SOME_INSTRUCTIONS | S_ATTR_PURE_INSTRUCTIONS) +#define NO_TYPE S_NASM_TYPE_MASK + +/* Translation table from traditional Unix section names to Mach-O */ +static const struct macho_known_section { + const char *nasmsect; + const char *segname; + const char *sectname; + const uint32_t flags; +} known_sections[] = { + { ".text", "__TEXT", "__text", S_CODE }, + { ".data", "__DATA", "__data", S_REGULAR }, + { ".rodata", "__DATA", "__const", S_REGULAR }, + { ".bss", "__DATA", "__bss", S_ZEROFILL }, + { ".debug_abbrev", "__DWARF", "__debug_abbrev", S_ATTR_DEBUG }, + { ".debug_info", "__DWARF", "__debug_info", S_ATTR_DEBUG }, + { ".debug_line", "__DWARF", "__debug_line", S_ATTR_DEBUG }, + { ".debug_str", "__DWARF", "__debug_str", S_ATTR_DEBUG }, +}; + +/* Section type or attribute directives */ +static const struct macho_known_section_attr { + const char *name; + uint32_t flags; +} sect_attribs[] = { + { "data", S_REGULAR }, + { "code", S_CODE }, + { "mixed", S_REGULAR | S_ATTR_SOME_INSTRUCTIONS }, + { "bss", S_ZEROFILL }, + { "zerofill", S_ZEROFILL }, + { "no_dead_strip", NO_TYPE | S_ATTR_NO_DEAD_STRIP }, + { "live_support", NO_TYPE | S_ATTR_LIVE_SUPPORT }, + { "strip_static_syms", NO_TYPE | S_ATTR_STRIP_STATIC_SYMS }, + { "debug", NO_TYPE | S_ATTR_DEBUG }, + { NULL, 0 } +}; + +static const struct macho_known_section * +lookup_known_section(const char *name, bool by_sectname) +{ + size_t i; + + if (name && name[0]) { + for (i = 0; i < ARRAY_SIZE(known_sections); i++) { + const char *p = by_sectname ? + known_sections[i].sectname : + known_sections[i].nasmsect; + if (!strcmp(name, p)) + return &known_sections[i]; + } + } + + return NULL; +} + +static int32_t macho_section(char *name, int *bits) +{ + const struct macho_known_section *known_section; + const struct macho_known_section_attr *sa; + char *sectionAttributes; + struct section *s; + const char *section, *segment; + uint32_t flags; + char *currentAttribute; + char *comma; + + bool new_seg; + + /* Default to the appropriate number of bits. */ + if (!name) { + *bits = fmt.ptrsize << 3; + name = ".text"; + sectionAttributes = NULL; + } else { + sectionAttributes = name; + name = nasm_strsep(§ionAttributes, " \t"); + } + + section = segment = NULL; + flags = 0; + + comma = strchr(name, ','); + if (comma) { + int len; + + *comma = '\0'; + segment = name; + section = comma+1; + + len = strlen(segment); + if (len == 0) { + nasm_error(ERR_NONFATAL, "empty segment name\n"); + } else if (len > 16) { + nasm_error(ERR_NONFATAL, "segment name %s too long\n", segment); + } + + len = strlen(section); + if (len == 0) { + nasm_error(ERR_NONFATAL, "empty section name\n"); + } else if (len > 16) { + nasm_error(ERR_NONFATAL, "section name %s too long\n", section); + } + + known_section = lookup_known_section(section, true); + if (known_section) + flags = known_section->flags; + else + flags = S_REGULAR; + } else { + known_section = lookup_known_section(name, false); + if (!known_section) { + nasm_error(ERR_NONFATAL, "unknown section name %s\n", name); + return NO_SEG; + } + + segment = known_section->segname; + section = known_section->sectname; + flags = known_section->flags; + } + + /* try to find section with that name, or create it */ + s = find_or_add_section(segment, section); + new_seg = is_new_section(s); + + /* initialize it if it is a brand new section */ + if (new_seg) { + *sectstail = s; + sectstail = &s->next; + + s->data = saa_init(1L); + s->fileindex = ++seg_nsects; + s->align = -1; + s->pad = -1; + s->offset = -1; + s->by_name = false; + + s->size = 0; + s->nreloc = 0; + s->flags = flags; + } + + if (comma) + *comma = ','; /* Restore comma */ + + s->by_name = s->by_name || comma; /* Was specified by name */ + + flags = NO_TYPE; + + while (sectionAttributes && + (currentAttribute = nasm_strsep(§ionAttributes, " \t"))) { + if (!*currentAttribute) + continue; + + if (!nasm_strnicmp("align=", currentAttribute, 6)) { + char *end; + int newAlignment, value; + + value = strtoul(currentAttribute + 6, (char**)&end, 0); + newAlignment = alignlog2_32(value); + + if (0 != *end) { + nasm_error(ERR_NONFATAL, + "unknown or missing alignment value \"%s\" " + "specified for section \"%s\"", + currentAttribute + 6, + name); + } else if (0 > newAlignment) { + nasm_error(ERR_NONFATAL, + "alignment of %d (for section \"%s\") is not " + "a power of two", + value, + name); + } + + if (s->align < newAlignment) + s->align = newAlignment; + } else { + for (sa = sect_attribs; sa->name; sa++) { + if (!nasm_stricmp(sa->name, currentAttribute)) { + if ((sa->flags & S_NASM_TYPE_MASK) != NO_TYPE) { + flags = (flags & ~S_NASM_TYPE_MASK) + | (sa->flags & S_NASM_TYPE_MASK); + } + flags |= sa->flags & ~S_NASM_TYPE_MASK; + break; + } + } + + if (!sa->name) { + nasm_error(ERR_NONFATAL, + "unknown section attribute %s for section %s", + currentAttribute, name); + } + } + } + + if ((flags & S_NASM_TYPE_MASK) != NO_TYPE) { + if (!new_seg && ((s->flags ^ flags) & S_NASM_TYPE_MASK)) { + nasm_error(ERR_NONFATAL, + "inconsistent section attributes for section %s\n", + name); + } else { + s->flags = (s->flags & ~S_NASM_TYPE_MASK) | flags; + } + } else { + s->flags |= flags & ~S_NASM_TYPE_MASK; + } + + return s->subsection; +} + +static int32_t macho_herelabel(const char *name, enum label_type type, + int32_t section, int32_t *subsection, + bool *copyoffset) +{ + struct section *s; + int32_t subsec; + (void)name; + + if (!(head_flags & MH_SUBSECTIONS_VIA_SYMBOLS)) + return section; + + /* No subsection only for local labels */ + if (type == LBL_LOCAL) + return section; + + s = get_section_by_index(section); + if (!s) + return section; + + subsec = *subsection; + if (subsec == NO_SEG) { + /* Allocate a new subsection index */ + subsec = *subsection = seg_alloc(); + section_by_index = raa_write_ptr(section_by_index, subsec >> 1, s); + } + + s->subsection = subsec; + *copyoffset = true; /* Maintain previous offset */ + return subsec; +} + +static void macho_symdef(char *name, int32_t section, int64_t offset, + int is_global, char *special) +{ + struct symbol *sym; + struct section *s; + bool special_used = false; + +#if defined(DEBUG) && DEBUG>2 + nasm_error(ERR_DEBUG, + " macho_symdef: %s, pass=%"PRId64" type %s, sec=%"PRIx32", off=%"PRIx64", is_global=%d, %s\n", + name, pass_count(), pass_types[pass_type()], + section, offset, is_global, special); +#endif + + if (is_global == 3) { + if (special) { + int n = strcspn(special, " \t"); + + if (!nasm_strnicmp(special, "private_extern", n)) { + for (sym = syms; sym != NULL; sym = sym->next) { + if (!strcmp(name, sym->name)) { + if (sym->type & N_PEXT) + return; /* nothing to be done */ + else + break; + } + } + } + } + nasm_error(ERR_NONFATAL, "The Mach-O format does not " + "(yet) support forward reference fixups."); + return; + } + + if (name[0] == '.' && name[1] == '.' && name[2] != '@') { + /* + * This is a NASM special symbol. We never allow it into + * the Macho-O symbol table, even if it's a valid one. If it + * _isn't_ a valid one, we should barf immediately. + */ + if (strcmp(name, "..gotpcrel") && strcmp(name, "..tlvp")) + nasm_error(ERR_NONFATAL, "unrecognized special symbol `%s'", name); + return; + } + + sym = *symstail = nasm_zalloc(sizeof(struct symbol)); + sym->next = NULL; + symstail = &sym->next; + + sym->name = name; + sym->strx = strslen; + sym->type = 0; + sym->desc = 0; + sym->symv[0].key = offset; + sym->symv[1].key = offset; + sym->initial_snum = -1; + + /* external and common symbols get N_EXT */ + if (is_global != 0) { + sym->type |= N_EXT; + } + if (is_global == 1) { + /* check special to see if the global symbol shall be marked as private external: N_PEXT */ + if (special) { + int n = strcspn(special, " \t"); + + if (!nasm_strnicmp(special, "private_extern", n)) + sym->type |= N_PEXT; + else + nasm_error(ERR_NONFATAL, "unrecognised symbol type `%.*s'", n, special); + } + special_used = true; + } + + /* track the initially allocated symbol number for use in future fix-ups */ + sym->initial_snum = nsyms; + + if (section == NO_SEG) { + /* symbols in no section get absolute */ + sym->type |= N_ABS; + sym->sect = NO_SECT; + + s = &absolute_sect; + } else { + s = get_section_by_index(section); + + sym->type |= N_SECT; + + /* get the in-file index of the section the symbol was defined in */ + sym->sect = s ? s->fileindex : NO_SECT; + + if (!s) { + /* remember symbol number of references to external + ** symbols, this works because every external symbol gets + ** its own section number allocated internally by nasm and + ** can so be used as a key */ + extsyms = raa_write(extsyms, section, nsyms); + + switch (is_global) { + case 1: + case 2: + /* there isn't actually a difference between global + ** and common symbols, both even have their size in + ** sym->symv[0].key */ + sym->type = N_EXT; + break; + + default: + /* give an error on unfound section if it's not an + ** external or common symbol (assemble_file() does a + ** seg_alloc() on every call for them) */ + nasm_panic("in-file index for section %d not found, is_global = %d", section, is_global); + break; + } + } + } + + if (s) { + s->syms[0] = rb_insert(s->syms[0], &sym->symv[0]); + if (is_global) + s->syms[1] = rb_insert(s->syms[1], &sym->symv[1]); + } + + ++nsyms; + + if (special && !special_used) + nasm_error(ERR_NONFATAL, "no special symbol features supported here"); +} + +static void macho_sectalign(int32_t seg, unsigned int value) +{ + struct section *s; + int align; + + nasm_assert(!(seg & 1)); + + s = get_section_by_index(seg); + + if (!s || !is_power2(value)) + return; + + align = alignlog2_32(value); + if (s->align < align) + s->align = align; +} + +extern macros_t macho_stdmac[]; + +/* Comparison function for qsort symbol layout. */ +static int layout_compare (const struct symbol **s1, + const struct symbol **s2) +{ + return (strcmp ((*s1)->name, (*s2)->name)); +} + +/* The native assembler does a few things in a similar function + + * Remove temporary labels + * Sort symbols according to local, external, undefined (by name) + * Order the string table + + We do not remove temporary labels right now. + + numsyms is the total number of symbols we have. strtabsize is the + number entries in the string table. */ + +static void macho_layout_symbols (uint32_t *numsyms, + uint32_t *strtabsize) +{ + struct symbol *sym, **symp; + uint32_t i,j; + + *numsyms = 0; + *strtabsize = sizeof (char); + + symp = &syms; + + while ((sym = *symp)) { + /* Undefined symbols are now external. */ + if (sym->type == N_UNDF) + sym->type |= N_EXT; + + if ((sym->type & N_EXT) == 0) { + sym->snum = *numsyms; + *numsyms = *numsyms + 1; + nlocalsym++; + } + else { + if ((sym->type & N_TYPE) != N_UNDF) { + nextdefsym++; + } else { + nundefsym++; + } + + /* If we handle debug info we'll want + to check for it here instead of just + adding the symbol to the string table. */ + sym->strx = *strtabsize; + saa_wbytes (strs, sym->name, (int32_t)(strlen(sym->name) + 1)); + *strtabsize += strlen(sym->name) + 1; + } + symp = &(sym->next); + } + + /* Next, sort the symbols. Most of this code is a direct translation from + the Apple cctools symbol layout. We need to keep compatibility with that. */ + /* Set the indexes for symbol groups into the symbol table */ + ilocalsym = 0; + iextdefsym = nlocalsym; + iundefsym = nlocalsym + nextdefsym; + + /* allocate arrays for sorting externals by name */ + extdefsyms = nasm_malloc(nextdefsym * sizeof(struct symbol *)); + undefsyms = nasm_malloc(nundefsym * sizeof(struct symbol *)); + + i = 0; + j = 0; + + symp = &syms; + + while ((sym = *symp)) { + + if((sym->type & N_EXT) == 0) { + sym->strx = *strtabsize; + saa_wbytes (strs, sym->name, (int32_t)(strlen (sym->name) + 1)); + *strtabsize += strlen(sym->name) + 1; + } + else { + if ((sym->type & N_TYPE) != N_UNDF) { + extdefsyms[i++] = sym; + } else { + undefsyms[j++] = sym; + } + } + symp = &(sym->next); + } + + qsort(extdefsyms, nextdefsym, sizeof(struct symbol *), + (int (*)(const void *, const void *))layout_compare); + qsort(undefsyms, nundefsym, sizeof(struct symbol *), + (int (*)(const void *, const void *))layout_compare); + + for(i = 0; i < nextdefsym; i++) { + extdefsyms[i]->snum = *numsyms; + *numsyms += 1; + } + for(j = 0; j < nundefsym; j++) { + undefsyms[j]->snum = *numsyms; + *numsyms += 1; + } +} + +/* Calculate some values we'll need for writing later. */ + +static void macho_calculate_sizes (void) +{ + struct section *s; + int fi; + + /* count sections and calculate in-memory and in-file offsets */ + for (s = sects; s != NULL; s = s->next) { + uint64_t newaddr; + + /* recalculate segment address based on alignment and vm size */ + s->addr = seg_vmsize; + + /* we need section alignment to calculate final section address */ + if (s->align == -1) + s->align = DEFAULT_SECTION_ALIGNMENT; + + newaddr = ALIGN(s->addr, UINT64_C(1) << s->align); + s->addr = newaddr; + + seg_vmsize = newaddr + s->size; + + /* zerofill sections aren't actually written to the file */ + if ((s->flags & SECTION_TYPE) != S_ZEROFILL) { + /* + * LLVM/Xcode as always aligns the section data to 4 + * bytes; there is a comment in the LLVM source code that + * perhaps aligning to pointer size would be better. + */ + s->pad = ALIGN(seg_filesize, 4) - seg_filesize; + s->offset = seg_filesize + s->pad; + seg_filesize += s->size + s->pad; + + /* filesize and vmsize needs to be aligned */ + seg_vmsize += s->pad; + } + } + + /* calculate size of all headers, load commands and sections to + ** get a pointer to the start of all the raw data */ + if (seg_nsects > 0) { + ++head_ncmds; + head_sizeofcmds += fmt.segcmd_size + seg_nsects * fmt.sectcmd_size; + } + + if (nsyms > 0) { + ++head_ncmds; + head_sizeofcmds += MACHO_SYMCMD_SIZE; + } + + if (seg_nsects > MAX_SECT) { + nasm_fatal("MachO output is limited to %d sections\n", + MAX_SECT); + } + + /* Create a table of sections by file index to avoid linear search */ + sectstab = nasm_malloc((seg_nsects + 1) * sizeof(*sectstab)); + sectstab[NO_SECT] = &absolute_sect; + for (s = sects, fi = 1; s != NULL; s = s->next, fi++) + sectstab[fi] = s; +} + +/* Write out the header information for the file. */ + +static void macho_write_header (void) +{ + fwriteint32_t(fmt.mh_magic, ofile); /* magic */ + fwriteint32_t(fmt.cpu_type, ofile); /* CPU type */ + fwriteint32_t(CPU_SUBTYPE_I386_ALL, ofile); /* CPU subtype */ + fwriteint32_t(MH_OBJECT, ofile); /* Mach-O file type */ + fwriteint32_t(head_ncmds, ofile); /* number of load commands */ + fwriteint32_t(head_sizeofcmds, ofile); /* size of load commands */ + fwriteint32_t(head_flags, ofile); /* flags, if any */ + fwritezero(fmt.header_size - 7*4, ofile); /* reserved fields */ +} + +/* Write out the segment load command at offset. */ + +static uint32_t macho_write_segment (uint64_t offset) +{ + uint64_t rel_base = alignptr(offset + seg_filesize); + uint32_t s_reloff = 0; + struct section *s; + + fwriteint32_t(fmt.lc_segment, ofile); /* cmd == LC_SEGMENT_64 */ + + /* size of load command including section load commands */ + fwriteint32_t(fmt.segcmd_size + seg_nsects * fmt.sectcmd_size, + ofile); + + /* in an MH_OBJECT file all sections are in one unnamed (name + ** all zeros) segment */ + fwritezero(16, ofile); + fwriteptr(0, ofile); /* in-memory offset */ + fwriteptr(seg_vmsize, ofile); /* in-memory size */ + fwriteptr(offset, ofile); /* in-file offset to data */ + fwriteptr(seg_filesize, ofile); /* in-file size */ + fwriteint32_t(VM_PROT_DEFAULT, ofile); /* maximum vm protection */ + fwriteint32_t(VM_PROT_DEFAULT, ofile); /* initial vm protection */ + fwriteint32_t(seg_nsects, ofile); /* number of sections */ + fwriteint32_t(0, ofile); /* no flags */ + + /* emit section headers */ + for (s = sects; s != NULL; s = s->next) { + if (s->nreloc) { + nasm_assert((s->flags & SECTION_TYPE) != S_ZEROFILL); + s->flags |= S_ATTR_LOC_RELOC; + if (s->extreloc) + s->flags |= S_ATTR_EXT_RELOC; + } else if (!xstrncmp(s->segname, "__DATA") && + !xstrncmp(s->sectname, "__const") && + !s->by_name && + !get_section_by_name("__TEXT", "__const")) { + /* + * The MachO equivalent to .rodata can be either + * __DATA,__const or __TEXT,__const; the latter only if + * there are no relocations. However, when mixed it is + * better to specify the segments explicitly. + */ + xstrncpy(s->segname, "__TEXT"); + } + + nasm_write(s->sectname, sizeof(s->sectname), ofile); + nasm_write(s->segname, sizeof(s->segname), ofile); + fwriteptr(s->addr, ofile); + fwriteptr(s->size, ofile); + + /* dummy data for zerofill sections or proper values */ + if ((s->flags & SECTION_TYPE) != S_ZEROFILL) { + nasm_assert(s->pad != (uint32_t)-1); + offset += s->pad; + fwriteint32_t(offset, ofile); + offset += s->size; + /* Write out section alignment, as a power of two. + e.g. 32-bit word alignment would be 2 (2^2 = 4). */ + fwriteint32_t(s->align, ofile); + /* To be compatible with cctools as we emit + a zero reloff if we have no relocations. */ + fwriteint32_t(s->nreloc ? rel_base + s_reloff : 0, ofile); + fwriteint32_t(s->nreloc, ofile); + + s_reloff += s->nreloc * MACHO_RELINFO_SIZE; + } else { + fwriteint32_t(0, ofile); + fwriteint32_t(s->align, ofile); + fwriteint32_t(0, ofile); + fwriteint32_t(0, ofile); + } + + fwriteint32_t(s->flags, ofile); /* flags */ + fwriteint32_t(0, ofile); /* reserved */ + fwriteptr(0, ofile); /* reserved */ + } + + rel_padcnt = rel_base - offset; + offset = rel_base + s_reloff; + + return offset; +} + +/* For a given chain of relocs r, write out the entire relocation + chain to the object file. */ + +static void macho_write_relocs (struct reloc *r) +{ + while (r) { + uint32_t word2; + + fwriteint32_t(r->addr, ofile); /* reloc offset */ + + word2 = r->snum; + word2 |= r->pcrel << 24; + word2 |= r->length << 25; + word2 |= r->ext << 27; + word2 |= r->type << 28; + fwriteint32_t(word2, ofile); /* reloc data */ + r = r->next; + } +} + +/* Write out the section data. */ +static void macho_write_section (void) +{ + struct section *s; + struct reloc *r; + uint8_t *p; + int32_t len; + int64_t l; + union offset { + uint64_t val; + uint8_t buf[8]; + } blk; + + for (s = sects; s != NULL; s = s->next) { + if ((s->flags & SECTION_TYPE) == S_ZEROFILL) + continue; + + /* Like a.out Mach-O references things in the data or bss + * sections by addresses which are actually relative to the + * start of the _text_ section, in the _file_. See outaout.c + * for more information. */ + saa_rewind(s->data); + for (r = s->relocs; r != NULL; r = r->next) { + len = (uint32_t)1 << r->length; + if (len > 4) /* Can this ever be an issue?! */ + len = 8; + blk.val = 0; + saa_fread(s->data, r->addr, blk.buf, len); + + /* get offset based on relocation type */ +#ifdef WORDS_LITTLEENDIAN + l = blk.val; +#else + l = blk.buf[0]; + l += ((int64_t)blk.buf[1]) << 8; + l += ((int64_t)blk.buf[2]) << 16; + l += ((int64_t)blk.buf[3]) << 24; + l += ((int64_t)blk.buf[4]) << 32; + l += ((int64_t)blk.buf[5]) << 40; + l += ((int64_t)blk.buf[6]) << 48; + l += ((int64_t)blk.buf[7]) << 56; +#endif + + /* If the relocation is internal add to the current section + offset. Otherwise the only value we need is the symbol + offset which we already have. The linker takes care + of the rest of the address. */ + if (!r->ext) { + /* generate final address by section address and offset */ + nasm_assert(r->snum <= seg_nsects); + l += sectstab[r->snum]->addr; + if (r->pcrel) + l -= s->addr; + } else if (r->pcrel && r->type == GENERIC_RELOC_VANILLA) { + l -= s->addr; + } + + /* write new offset back */ + p = blk.buf; + WRITEDLONG(p, l); + saa_fwrite(s->data, r->addr, blk.buf, len); + } + + /* dump the section data to file */ + fwritezero(s->pad, ofile); + saa_fpwrite(s->data, ofile); + } + + /* pad last section up to reloc entries on pointer boundary */ + fwritezero(rel_padcnt, ofile); + + /* emit relocation entries */ + for (s = sects; s != NULL; s = s->next) + macho_write_relocs (s->relocs); +} + +/* Write out the symbol table. We should already have sorted this + before now. */ +static void macho_write_symtab (void) +{ + struct symbol *sym; + uint64_t i; + + /* we don't need to pad here since MACHO_RELINFO_SIZE == 8 */ + + for (sym = syms; sym != NULL; sym = sym->next) { + if ((sym->type & N_EXT) == 0) { + fwriteint32_t(sym->strx, ofile); /* string table entry number */ + nasm_write(&sym->type, 1, ofile); /* symbol type */ + nasm_write(&sym->sect, 1, ofile); /* section */ + fwriteint16_t(sym->desc, ofile); /* description */ + + /* Fix up the symbol value now that we know the final section + sizes. */ + if (((sym->type & N_TYPE) == N_SECT) && (sym->sect != NO_SECT)) { + nasm_assert(sym->sect <= seg_nsects); + sym->symv[0].key += sectstab[sym->sect]->addr; + } + + fwriteptr(sym->symv[0].key, ofile); /* value (i.e. offset) */ + } + } + + for (i = 0; i < nextdefsym; i++) { + sym = extdefsyms[i]; + fwriteint32_t(sym->strx, ofile); + nasm_write(&sym->type, 1, ofile); /* symbol type */ + nasm_write(&sym->sect, 1, ofile); /* section */ + fwriteint16_t(sym->desc, ofile); /* description */ + + /* Fix up the symbol value now that we know the final section + sizes. */ + if (((sym->type & N_TYPE) == N_SECT) && (sym->sect != NO_SECT)) { + nasm_assert(sym->sect <= seg_nsects); + sym->symv[0].key += sectstab[sym->sect]->addr; + } + + fwriteptr(sym->symv[0].key, ofile); /* value (i.e. offset) */ + } + + for (i = 0; i < nundefsym; i++) { + sym = undefsyms[i]; + fwriteint32_t(sym->strx, ofile); + nasm_write(&sym->type, 1, ofile); /* symbol type */ + nasm_write(&sym->sect, 1, ofile); /* section */ + fwriteint16_t(sym->desc, ofile); /* description */ + + /* Fix up the symbol value now that we know the final section + sizes. */ + if (((sym->type & N_TYPE) == N_SECT) && (sym->sect != NO_SECT)) { + nasm_assert(sym->sect <= seg_nsects); + sym->symv[0].key += sectstab[sym->sect]->addr; + } + + fwriteptr(sym->symv[0].key, ofile); /* value (i.e. offset) */ + } + +} + +/* Fixup the snum in the relocation entries, we should be + doing this only for externally referenced symbols. */ +static void macho_fixup_relocs (struct reloc *r) +{ + struct symbol *sym; + + while (r != NULL) { + if (r->ext) { + for (sym = syms; sym != NULL; sym = sym->next) { + if (sym->initial_snum == r->snum) { + r->snum = sym->snum; + break; + } + } + } + r = r->next; + } +} + +/* Write out the object file. */ + +static void macho_write (void) +{ + uint64_t offset = 0; + + /* mach-o object file structure: + ** + ** mach header + ** uint32_t magic + ** int cpu type + ** int cpu subtype + ** uint32_t mach file type + ** uint32_t number of load commands + ** uint32_t size of all load commands + ** (includes section struct size of segment command) + ** uint32_t flags + ** + ** segment command + ** uint32_t command type == LC_SEGMENT[_64] + ** uint32_t size of load command + ** (including section load commands) + ** char[16] segment name + ** pointer in-memory offset + ** pointer in-memory size + ** pointer in-file offset to data area + ** pointer in-file size + ** (in-memory size excluding zerofill sections) + ** int maximum vm protection + ** int initial vm protection + ** uint32_t number of sections + ** uint32_t flags + ** + ** section commands + ** char[16] section name + ** char[16] segment name + ** pointer in-memory offset + ** pointer in-memory size + ** uint32_t in-file offset + ** uint32_t alignment + ** (irrelevant in MH_OBJECT) + ** uint32_t in-file offset of relocation entries + ** uint32_t number of relocations + ** uint32_t flags + ** uint32_t reserved + ** uint32_t reserved + ** + ** symbol table command + ** uint32_t command type == LC_SYMTAB + ** uint32_t size of load command + ** uint32_t symbol table offset + ** uint32_t number of symbol table entries + ** uint32_t string table offset + ** uint32_t string table size + ** + ** raw section data + ** + ** padding to pointer boundary + ** + ** relocation data (struct reloc) + ** int32_t offset + ** uint data (symbolnum, pcrel, length, extern, type) + ** + ** symbol table data (struct nlist) + ** int32_t string table entry number + ** uint8_t type + ** (extern, absolute, defined in section) + ** uint8_t section + ** (0 for global symbols, section number of definition (>= 1, <= + ** 254) for local symbols, size of variable for common symbols + ** [type == extern]) + ** int16_t description + ** (for stab debugging format) + ** pointer value (i.e. file offset) of symbol or stab offset + ** + ** string table data + ** list of null-terminated strings + */ + + /* Emit the Mach-O header. */ + macho_write_header(); + + offset = fmt.header_size + head_sizeofcmds; + + /* emit the segment load command */ + if (seg_nsects > 0) + offset = macho_write_segment (offset); + else + nasm_warn(WARN_OTHER, "no sections?"); + + if (nsyms > 0) { + /* write out symbol command */ + fwriteint32_t(LC_SYMTAB, ofile); /* cmd == LC_SYMTAB */ + fwriteint32_t(MACHO_SYMCMD_SIZE, ofile); /* size of load command */ + fwriteint32_t(offset, ofile); /* symbol table offset */ + fwriteint32_t(nsyms, ofile); /* number of symbol + ** table entries */ + offset += nsyms * fmt.nlist_size; + fwriteint32_t(offset, ofile); /* string table offset */ + fwriteint32_t(strslen, ofile); /* string table size */ + } + + /* emit section data */ + if (seg_nsects > 0) + macho_write_section (); + + /* emit symbol table if we have symbols */ + if (nsyms > 0) + macho_write_symtab (); + + /* we don't need to pad here, we are already aligned */ + + /* emit string table */ + saa_fpwrite(strs, ofile); +} +/* We do quite a bit here, starting with finalizing all of the data + for the object file, writing, and then freeing all of the data from + the file. */ + +static void macho_cleanup(void) +{ + struct section *s; + struct reloc *r; + struct symbol *sym; + + dfmt->cleanup(); + + /* Sort all symbols. */ + macho_layout_symbols (&nsyms, &strslen); + + /* Fixup relocation entries */ + for (s = sects; s != NULL; s = s->next) { + macho_fixup_relocs (s->relocs); + } + + /* First calculate and finalize needed values. */ + macho_calculate_sizes(); + macho_write(); + + /* free up everything */ + while (sects->next) { + s = sects; + sects = sects->next; + + saa_free(s->data); + while (s->relocs != NULL) { + r = s->relocs; + s->relocs = s->relocs->next; + nasm_free(r); + } + + nasm_free(s); + } + + saa_free(strs); + + raa_free(extsyms); + + while (syms) { + sym = syms; + syms = syms->next; + nasm_free (sym); + } + + nasm_free(extdefsyms); + nasm_free(undefsyms); + nasm_free(sectstab); + raa_free(section_by_index); + hash_free(§ion_by_name); +} + +static bool macho_set_section_attribute_by_symbol(const char *label, uint32_t flags) +{ + struct section *s; + int32_t nasm_seg; + int64_t offset; + + if (lookup_label(label, &nasm_seg, &offset) == LBL_none) { + nasm_error(ERR_NONFATAL, "unknown symbol `%s' in no_dead_strip", label); + return false; + } + + s = get_section_by_index(nasm_seg); + if (!s) { + nasm_error(ERR_NONFATAL, "symbol `%s' is external or absolute", label); + return false; + } + + s->flags |= flags; + return true; +} + +/* + * Mark a symbol for no dead stripping + */ +static enum directive_result macho_no_dead_strip(const char *labels) +{ + char *s, *p, *ep; + char ec; + enum directive_result rv = DIRR_ERROR; + + p = s = nasm_strdup(labels); + while (*p) { + ep = nasm_skip_identifier(p); + if (!ep) { + nasm_error(ERR_NONFATAL, "invalid symbol in NO_DEAD_STRIP"); + goto err; + } + ec = *ep; + if (ec && ec != ',' && !nasm_isspace(ec)) { + nasm_error(ERR_NONFATAL, "cannot parse contents after symbol"); + goto err; + } + *ep = '\0'; + if (!pass_first()) { + if (!macho_set_section_attribute_by_symbol(p, S_ATTR_NO_DEAD_STRIP)) + rv = DIRR_ERROR; + } + *ep = ec; + p = nasm_skip_spaces(ep); + if (*p == ',') + p = nasm_skip_spaces(++p); + } + + rv = DIRR_OK; + +err: + nasm_free(s); + return rv; +} + +/* + * Mach-O pragmas + */ +static enum directive_result +macho_pragma(const struct pragma *pragma) +{ + switch (pragma->opcode) { + case D_SUBSECTIONS_VIA_SYMBOLS: + if (*pragma->tail) + return DIRR_BADPARAM; + + if (!pass_first()) + head_flags |= MH_SUBSECTIONS_VIA_SYMBOLS; + + /* Jmp-match optimization conflicts */ + optimizing.flag |= OPTIM_DISABLE_JMP_MATCH; + + return DIRR_OK; + + case D_NO_DEAD_STRIP: + return macho_no_dead_strip(pragma->tail); + + default: + return DIRR_UNKNOWN; /* Not a Mach-O directive */ + } +} + +static const struct pragma_facility macho_pragma_list[] = { + { "macho", macho_pragma }, + { NULL, macho_pragma } /* Implements macho32/macho64 namespaces */ +}; + +static void macho_dbg_generate(void) +{ + uint8_t *p_buf = NULL, *p_buf_base = NULL; + size_t saa_len = 0, high_addr = 0, total_len = 0; + struct section *p_section = NULL; + /* calculated at debug_str and referenced at debug_info */ + uint32_t producer_str_offset = 0, module_str_offset = 0, dir_str_offset = 0; + + /* debug section defines */ + { + int bits = 0; + macho_section(".debug_abbrev", &bits); + macho_section(".debug_info", &bits); + macho_section(".debug_line", &bits); + macho_section(".debug_str", &bits); + } + + /* dw section walk to find high_addr and total_len */ + { + struct dw_sect_list *p_sect; + + list_for_each(p_sect, dw_head_sect) { + uint64_t offset = get_section_by_index(p_sect->section)->size; + struct SAA *p_linep = p_sect->psaa; + + saa_write8(p_linep, 2); /* std op 2 */ + saa_write8(p_linep, offset - p_sect->offset); + saa_write8(p_linep, DW_LNS_extended_op); + saa_write8(p_linep, 1); /* operand length */ + saa_write8(p_linep, DW_LNE_end_sequence); + + total_len += p_linep->datalen; + high_addr += offset; + } + } + + /* debug line */ + { + struct dw_sect_list *p_sect; + size_t linep_off, buf_size; + struct SAA *p_lines = saa_init(1L); + struct dir_list *p_dir; + struct file_list *p_file; + + p_section = get_section_by_name("__DWARF", "__debug_line"); + nasm_assert(p_section != NULL); + + saa_write8(p_lines, 1); /* minimum instruction length */ + saa_write8(p_lines, 1); /* initial value of "is_stmt" */ + saa_write8(p_lines, DW_LN_BASE); /* line base */ + saa_write8(p_lines, DW_LN_RANGE); /* line range */ + saa_write8(p_lines, DW_OPCODE_BASE); /* opcode base */ + saa_write8(p_lines, 0); /* std opcode 1 length */ + saa_write8(p_lines, 1); /* std opcode 2 length */ + saa_write8(p_lines, 1); /* std opcode 3 length */ + saa_write8(p_lines, 1); /* std opcode 4 length */ + saa_write8(p_lines, 1); /* std opcode 5 length */ + saa_write8(p_lines, 0); /* std opcode 6 length */ + saa_write8(p_lines, 0); /* std opcode 7 length */ + saa_write8(p_lines, 0); /* std opcode 8 length */ + saa_write8(p_lines, 1); /* std opcode 9 length */ + saa_write8(p_lines, 0); /* std opcode 10 length */ + saa_write8(p_lines, 0); /* std opcode 11 length */ + saa_write8(p_lines, 1); /* std opcode 12 length */ + list_for_each(p_dir, dw_head_dir) { + saa_wcstring(p_lines, p_dir->dir_name); + } + saa_write8(p_lines, 0); /* end of table */ + + list_for_each(p_file, dw_head_file) { + saa_wcstring(p_lines, p_file->file_name); + saa_write8(p_lines, p_file->dir->dir); /* directory id */ + saa_write8(p_lines, 0); /* time */ + saa_write8(p_lines, 0); /* size */ + } + saa_write8(p_lines, 0); /* end of table */ + + linep_off = p_lines->datalen; + /* 10 bytes for initial & prolong length, and dwarf version info */ + buf_size = saa_len = linep_off + total_len + 10; + p_buf_base = p_buf = nasm_malloc(buf_size); + + WRITELONG(p_buf, saa_len - 4); /* initial length; size excluding itself */ + WRITESHORT(p_buf, 2); /* dwarf version */ + WRITELONG(p_buf, linep_off); /* prolong length */ + + saa_rnbytes(p_lines, p_buf, linep_off); + p_buf += linep_off; + saa_free(p_lines); + + list_for_each(p_sect, dw_head_sect) { + struct SAA *p_linep = p_sect->psaa; + + saa_len = p_linep->datalen; + saa_rnbytes(p_linep, p_buf, saa_len); + p_buf += saa_len; + + saa_free(p_linep); + } + + macho_output(p_section->index, p_buf_base, OUT_RAWDATA, buf_size, NO_SEG, 0); + + nasm_free(p_buf_base); + } + + /* string section */ + { + struct SAA *p_str = saa_init(1L); + char *cur_path = nasm_realpath(module_name); + char *cur_file = nasm_basename(cur_path); + char *cur_dir = nasm_dirname(cur_path); + + p_section = get_section_by_name("__DWARF", "__debug_str"); + nasm_assert(p_section != NULL); + + producer_str_offset = 0; + module_str_offset = dir_str_offset = saa_wcstring(p_str, nasm_signature()); + dir_str_offset += saa_wcstring(p_str, cur_file); + saa_wcstring(p_str, cur_dir); + + saa_len = p_str->datalen; + p_buf = nasm_malloc(saa_len); + saa_rnbytes(p_str, p_buf, saa_len); + macho_output(p_section->index, p_buf, OUT_RAWDATA, saa_len, NO_SEG, 0); + + nasm_free(cur_path); + nasm_free(cur_file); + nasm_free(cur_dir); + saa_free(p_str); + nasm_free(p_buf); + } + + /* debug info */ + { + struct SAA *p_info = saa_init(1L); + + p_section = get_section_by_name("__DWARF", "__debug_info"); + nasm_assert(p_section != NULL); + + /* size will be overwritten once determined, so skip in p_info layout */ + saa_write16(p_info, 2); /* dwarf version */ + saa_write32(p_info, 0); /* offset info abbrev */ + saa_write8(p_info, (ofmt == &of_macho64) ? 8 : 4); /* pointer size */ + + saa_write8(p_info, 1); /* abbrev entry number */ + + saa_write32(p_info, producer_str_offset); /* offset from string table for DW_AT_producer */ + saa_write16(p_info, DW_LANG_Mips_Assembler); /* DW_AT_language */ + saa_write32(p_info, module_str_offset); /* offset from string table for DW_AT_name */ + saa_write32(p_info, dir_str_offset); /* offset from string table for DW_AT_comp_dir */ + saa_write32(p_info, 0); /* DW_AT_stmt_list */ + + if (ofmt == &of_macho64) { + saa_write64(p_info, 0); /* DW_AT_low_pc */ + saa_write64(p_info, high_addr); /* DW_AT_high_pc */ + } else { + saa_write32(p_info, 0); /* DW_AT_low_pc */ + saa_write32(p_info, high_addr); /* DW_AT_high_pc */ + } + + saa_write8(p_info, 2); /* abbrev entry number */ + + if (ofmt == &of_macho64) { + saa_write64(p_info, 0); /* DW_AT_low_pc */ + saa_write64(p_info, 0); /* DW_AT_frame_base */ + } else { + saa_write32(p_info, 0); /* DW_AT_low_pc */ + saa_write32(p_info, 0); /* DW_AT_frame_base */ + } + saa_write8(p_info, DW_END_default); + + saa_len = p_info->datalen; + p_buf_base = p_buf = nasm_malloc(saa_len + 4); /* 4B for size info */ + + WRITELONG(p_buf, saa_len); + saa_rnbytes(p_info, p_buf, saa_len); + macho_output(p_section->index, p_buf_base, OUT_RAWDATA, saa_len + 4, NO_SEG, 0); + + saa_free(p_info); + nasm_free(p_buf_base); + } + + /* abbrev section */ + { + struct SAA *p_abbrev = saa_init(1L); + + p_section = get_section_by_name("__DWARF", "__debug_abbrev"); + nasm_assert(p_section != NULL); + + saa_write8(p_abbrev, 1); /* entry number */ + + saa_write8(p_abbrev, DW_TAG_compile_unit); + saa_write8(p_abbrev, DW_CHILDREN_yes); + + saa_write8(p_abbrev, DW_AT_producer); + saa_write8(p_abbrev, DW_FORM_strp); + + saa_write8(p_abbrev, DW_AT_language); + saa_write8(p_abbrev, DW_FORM_data2); + + saa_write8(p_abbrev, DW_AT_name); + saa_write8(p_abbrev, DW_FORM_strp); + + saa_write8(p_abbrev, DW_AT_comp_dir); + saa_write8(p_abbrev, DW_FORM_strp); + + saa_write8(p_abbrev, DW_AT_stmt_list); + saa_write8(p_abbrev, DW_FORM_data4); + + saa_write8(p_abbrev, DW_AT_low_pc); + saa_write8(p_abbrev, DW_FORM_addr); + + saa_write8(p_abbrev, DW_AT_high_pc); + saa_write8(p_abbrev, DW_FORM_addr); + + saa_write16(p_abbrev, DW_END_default); + + saa_write8(p_abbrev, 2); /* entry number */ + + saa_write8(p_abbrev, DW_TAG_subprogram); + saa_write8(p_abbrev, DW_CHILDREN_no); + + saa_write8(p_abbrev, DW_AT_low_pc); + saa_write8(p_abbrev, DW_FORM_addr); + + saa_write8(p_abbrev, DW_AT_frame_base); + saa_write8(p_abbrev, DW_FORM_addr); + + saa_write16(p_abbrev, DW_END_default); + + saa_write8(p_abbrev, 0); /* Terminal zero entry */ + + saa_len = p_abbrev->datalen; + + p_buf = nasm_malloc(saa_len); + + saa_rnbytes(p_abbrev, p_buf, saa_len); + macho_output(p_section->index, p_buf, OUT_RAWDATA, saa_len, NO_SEG, 0); + + saa_free(p_abbrev); + nasm_free(p_buf); + } +} + +static void new_file_list (const char *file_name, const char *dir_name) +{ + struct dir_list *dir_list; + bool need_new_dir_list = true; + + nasm_new(dw_cur_file); + dw_cur_file->file = ++dw_num_files; + dw_cur_file->file_name = file_name; + if(!dw_head_file) { + dw_head_file = dw_cur_file; + } else { + *dw_last_file_next = dw_cur_file; + } + dw_last_file_next = &(dw_cur_file->next); + + if(dw_head_dir) { + list_for_each(dir_list, dw_head_dir) { + if(!(strcmp(dir_name, dir_list->dir_name))) { + dw_cur_file->dir = dir_list; + need_new_dir_list = false; + break; + } + } + } + + if(need_new_dir_list) + { + nasm_new(dir_list); + dir_list->dir = dw_num_dirs++; + dir_list->dir_name = dir_name; + if(!dw_head_dir) { + dw_head_dir = dir_list; + } else { + *dw_last_dir_next = dir_list; + } + dw_last_dir_next = &(dir_list->next); + dw_cur_file->dir = dir_list; + } +} + +static void macho_dbg_init(void) +{ +} + +static void macho_dbg_linenum(const char *file_name, int32_t line_num, int32_t segto) +{ + bool need_new_list = true; + const char *cur_file = nasm_basename(file_name); + const char *cur_dir = nasm_dirname(file_name); + (void)segto; + + if(!dw_cur_file || strcmp(cur_file, dw_cur_file->file_name) || + strcmp(cur_dir, dw_cur_file->dir->dir_name)) { + if(dw_head_file) { + struct file_list *match; + + list_for_each(match, dw_head_file) { + if(!(strcmp(cur_file, match->file_name)) && + !(strcmp(cur_dir, match->dir->dir_name))) { + dw_cur_file = match; + dw_cur_file->dir = match->dir; + need_new_list = false; + break; + } + } + } + + if (need_new_list) + new_file_list(cur_file, cur_dir); + } + + if (!need_new_list) { + nasm_free((void *)cur_file); + nasm_free((void *)cur_dir); + } + + dbg_immcall = true; + cur_line = line_num; +} + +static void macho_dbg_output(int type, void *param) +{ + struct section_info *sinfo_param = (struct section_info *)param; + int32_t secto = sinfo_param->secto; + bool need_new_sect = false; + struct SAA *p_linep = NULL; + (void)type; + + if(!(dw_cur_sect && (dw_cur_sect->section == secto))) { + need_new_sect = true; + if(dw_head_sect) { + struct dw_sect_list *match = dw_head_sect; + uint32_t idx = 0; + + for(; idx < dw_num_sects; idx++) { + if(match->section == secto) { + dw_cur_sect = match; + need_new_sect = false; + break; + } + match = match->next; + } + } + } + + if(need_new_sect) { + nasm_new(dw_cur_sect); + dw_num_sects ++; + p_linep = dw_cur_sect->psaa = saa_init(1L); + dw_cur_sect->line = dw_cur_sect->file = 1; + dw_cur_sect->offset = 0; + dw_cur_sect->next = NULL; + dw_cur_sect->section = secto; + + saa_write8(p_linep, DW_LNS_extended_op); + saa_write8(p_linep, (ofmt == &of_macho64) ? 9 : 5); + saa_write8(p_linep, DW_LNE_set_address); + if (ofmt == &of_macho64) { + saa_write64(p_linep, 0); + } else { + saa_write32(p_linep, 0); + } + + if(!dw_head_sect) { + dw_head_sect = dw_last_sect = dw_cur_sect; + } else { + dw_last_sect->next = dw_cur_sect; + dw_last_sect = dw_cur_sect; + } + } + + if(dbg_immcall == true) { + int32_t line_delta = cur_line - dw_cur_sect->line; + int32_t offset_delta = sinfo_param->size - dw_cur_sect->offset; + uint32_t cur_file = dw_cur_file->file; + p_linep = dw_cur_sect->psaa; + + if(cur_file != dw_cur_sect->file) { + saa_write8(p_linep, DW_LNS_set_file); + saa_write8(p_linep, cur_file); + dw_cur_sect->file = cur_file; + } + + if(line_delta) { + int special_opcode = (line_delta - DW_LN_BASE) + (DW_LN_RANGE * offset_delta) + + DW_OPCODE_BASE; + + if((line_delta >= DW_LN_BASE) && (line_delta < DW_MAX_LN) && + (special_opcode < DW_MAX_SP_OPCODE)) { + saa_write8(p_linep, special_opcode); + } else { + saa_write8(p_linep, DW_LNS_advance_line); + saa_wleb128s(p_linep, line_delta); + if(offset_delta) { + saa_write8(p_linep, DW_LNS_advance_pc); + saa_wleb128u(p_linep, offset_delta); + } + saa_write8(p_linep, DW_LNS_copy); + } + + dw_cur_sect->line = cur_line; + dw_cur_sect->offset = sinfo_param->size; + } + + dbg_immcall = false; + } +} + +static void macho_dbg_cleanup(void) +{ + /* dwarf sectors generation */ + macho_dbg_generate(); + + { + struct dw_sect_list *p_sect = dw_head_sect; + struct file_list *p_file = dw_head_file; + uint32_t idx = 0; + + for(; idx < dw_num_sects; idx++) { + struct dw_sect_list *next = p_sect->next; + nasm_free(p_sect); + p_sect = next; + } + + for(idx = 0; idx < dw_num_files; idx++) { + struct file_list *next = p_file->next; + nasm_free(p_file); + p_file = next; + } + } +} + +#ifdef OF_MACHO32 +static const struct macho_fmt macho32_fmt = { + 4, + MH_MAGIC, + CPU_TYPE_I386, + LC_SEGMENT, + MACHO_HEADER_SIZE, + MACHO_SEGCMD_SIZE, + MACHO_SECTCMD_SIZE, + MACHO_NLIST_SIZE, + RL_MAX_32, + GENERIC_RELOC_VANILLA, + GENERIC_RELOC_VANILLA, + GENERIC_RELOC_TLV, + false /* Allow segment-relative relocations */ +}; + +static void macho32_init(void) +{ + fmt = macho32_fmt; + macho_init(); + + macho_gotpcrel_sect = NO_SEG; +} + +static const struct dfmt macho32_df_dwarf = { + "Mach-O i386 dwarf for Darwin/MacOS", + "dwarf", + macho_dbg_init, + macho_dbg_linenum, + null_debug_deflabel, + NULL, /* .debug_smacros */ + NULL, /* .debug_include */ + NULL, /* .debug_mmacros */ + null_debug_directive, + null_debug_typevalue, + macho_dbg_output, + macho_dbg_cleanup, + NULL /*pragma list*/ +}; + +static const struct dfmt * const macho32_df_arr[2] = + { &macho32_df_dwarf, NULL }; + +const struct ofmt of_macho32 = { + "Mach-O i386 (Mach, including MacOS X and variants)", + "macho32", + ".o", + 0, + 32, + macho32_df_arr, + &macho32_df_dwarf, + macho_stdmac, + macho32_init, + null_reset, + nasm_do_legacy_output, + macho_output, + macho_symdef, + macho_section, + macho_herelabel, + macho_sectalign, + null_segbase, + null_directive, + macho_cleanup, + macho_pragma_list +}; +#endif + +#ifdef OF_MACHO64 +static const struct macho_fmt macho64_fmt = { + 8, + MH_MAGIC_64, + CPU_TYPE_X86_64, + LC_SEGMENT_64, + MACHO_HEADER64_SIZE, + MACHO_SEGCMD64_SIZE, + MACHO_SECTCMD64_SIZE, + MACHO_NLIST64_SIZE, + RL_MAX_64, + X86_64_RELOC_UNSIGNED, + X86_64_RELOC_SIGNED, + X86_64_RELOC_TLV, + true /* Force symbol-relative relocations */ +}; + +static void macho64_init(void) +{ + fmt = macho64_fmt; + macho_init(); + + /* add special symbol for ..gotpcrel */ + macho_gotpcrel_sect = seg_alloc() + 1; + backend_label("..gotpcrel", macho_gotpcrel_sect, 0L); +} + +static const struct dfmt macho64_df_dwarf = { + "Mach-O x86-64 dwarf for Darwin/MacOS", + "dwarf", + macho_dbg_init, + macho_dbg_linenum, + null_debug_deflabel, + NULL, /* .debug_smacros */ + NULL, /* .debug_include */ + NULL, /* .debug_mmacros */ + null_debug_directive, + null_debug_typevalue, + macho_dbg_output, + macho_dbg_cleanup, + NULL /*pragma list*/ +}; + +static const struct dfmt * const macho64_df_arr[2] = + { &macho64_df_dwarf, NULL }; + +const struct ofmt of_macho64 = { + "Mach-O x86-64 (Mach, including MacOS X and variants)", + "macho64", + ".o", + 0, + 64, + macho64_df_arr, + &macho64_df_dwarf, + macho_stdmac, + macho64_init, + null_reset, + nasm_do_legacy_output, + macho_output, + macho_symdef, + macho_section, + macho_herelabel, + macho_sectalign, + null_segbase, + null_directive, + macho_cleanup, + macho_pragma_list, +}; +#endif + +#endif + +/* + * Local Variables: + * mode:c + * c-basic-offset:4 + * End: + * + * end of file */ diff --git a/vere/ext/nasm/output/outmacho.mac b/vere/ext/nasm/output/outmacho.mac new file mode 100644 index 0000000..001bb3a --- /dev/null +++ b/vere/ext/nasm/output/outmacho.mac @@ -0,0 +1,49 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2017 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +OUT: macho macho32 macho64 +%define __?SECT?__ [section .text] +%macro __?NASM_CDecl?__ 1 +%endmacro + +; This directive sets the MH_SUBSECTIONS_VIA_SYMBOLS header flag +%imacro subsections_via_symbols 0.nolist + %pragma __?OUTPUT_FORMAT?__ %? +%endmacro + +%imacro no_dead_strip 1-*.nolist + %rep %0 + %pragma __?OUTPUT_FORMAT?__ %? %1 + %rotate 1 + %endrep +%endmacro diff --git a/vere/ext/nasm/output/outobj.c b/vere/ext/nasm/output/outobj.c new file mode 100644 index 0000000..281839d --- /dev/null +++ b/vere/ext/nasm/output/outobj.c @@ -0,0 +1,2701 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * outobj.c output routines for the Netwide Assembler to produce + * .OBJ object files + */ + +#include "compiler.h" + +#include /* For toupper() */ +#include "nctype.h" + +#include "nasm.h" +#include "nasmlib.h" +#include "error.h" +#include "stdscan.h" +#include "eval.h" +#include "ver.h" + +#include "outform.h" +#include "outlib.h" + +#ifdef OF_OBJ + +/* + * outobj.c is divided into two sections. The first section is low level + * routines for creating obj records; It has nearly zero NASM specific + * code. The second section is high level routines for processing calls and + * data structures from the rest of NASM into obj format. + * + * It should be easy (though not zero work) to lift the first section out for + * use as an obj file writer for some other assembler or compiler. + */ + +/* + * These routines are built around the ObjRecord data structure. An ObjRecord + * holds an object file record that may be under construction or complete. + * + * A major function of these routines is to support continuation of an obj + * record into the next record when the maximum record size is exceeded. The + * high level code does not need to worry about where the record breaks occur. + * It does need to do some minor extra steps to make the automatic continuation + * work. Those steps may be skipped for records where the high level knows no + * continuation could be required. + * + * 1) An ObjRecord is allocated and cleared by obj_new, or an existing ObjRecord + * is cleared by obj_clear. + * + * 2) The caller should fill in .type. + * + * 3) If the record is continuable and there is processing that must be done at + * the start of each record then the caller should fill in .ori with the + * address of the record initializer routine. + * + * 4) If the record is continuable and it should be saved (rather than emitted + * immediately) as each record is done, the caller should set .up to be a + * pointer to a location in which the caller keeps the master pointer to the + * ObjRecord. When the record is continued, the obj_bump routine will then + * allocate a new ObjRecord structure and update the master pointer. + * + * 5) If the .ori field was used then the caller should fill in the .parm with + * any data required by the initializer. + * + * 6) The caller uses the routines: obj_byte, obj_word, obj_rword, obj_dword, + * obj_x, obj_index, obj_value and obj_name to fill in the various kinds of + * data required for this record. + * + * 7) If the record is continuable, the caller should call obj_commit at each + * point where breaking the record is permitted. + * + * 8) To write out the record, the caller should call obj_emit2. If the + * caller has called obj_commit for all data written then he can get slightly + * faster code by calling obj_emit instead of obj_emit2. + * + * Most of these routines return an ObjRecord pointer. This will be the input + * pointer most of the time and will be the new location if the ObjRecord + * moved as a result of the call. The caller may ignore the return value in + * three cases: It is a "Never Reallocates" routine; or The caller knows + * continuation is not possible; or The caller uses the master pointer for the + * next operation. + */ + +#define RECORD_MAX (1024-3) /* maximal size of any record except type+reclen */ +#define OBJ_PARMS 3 /* maximum .parm used by any .ori routine */ + +#define FIX_08_LOW 0x8000 /* location type for various fixup subrecords */ +#define FIX_16_OFFSET 0x8400 +#define FIX_16_SELECTOR 0x8800 +#define FIX_32_POINTER 0x8C00 +#define FIX_08_HIGH 0x9000 +#define FIX_32_OFFSET 0xA400 +#define FIX_48_POINTER 0xAC00 + +enum RecordID { /* record ID codes */ + + THEADR = 0x80, /* module header */ + COMENT = 0x88, /* comment record */ + + LINNUM = 0x94, /* line number record */ + LNAMES = 0x96, /* list of names */ + + SEGDEF = 0x98, /* segment definition */ + GRPDEF = 0x9A, /* group definition */ + EXTDEF = 0x8C, /* external definition */ + PUBDEF = 0x90, /* public definition */ + COMDEF = 0xB0, /* common definition */ + + LEDATA = 0xA0, /* logical enumerated data */ + FIXUPP = 0x9C, /* fixups (relocations) */ + FIXU32 = 0x9D, /* 32-bit fixups (relocations) */ + + MODEND = 0x8A, /* module end */ + MODE32 = 0x8B /* module end for 32-bit objects */ +}; + +enum ComentID { /* ID codes for comment records */ + dTRANSL = 0x0000, /* translator comment */ + dOMFEXT = 0xC0A0, /* "OMF extension" */ + dEXTENDED = 0xC0A1, /* translator-specific extensions */ + dLINKPASS = 0x40A2, /* link pass 2 marker */ + dTYPEDEF = 0xC0E3, /* define a type */ + dSYM = 0xC0E6, /* symbol debug record */ + dFILNAME = 0xC0E8, /* file name record */ + dDEPFILE = 0xC0E9, /* dependency file */ + dCOMPDEF = 0xC0EA /* compiler type info */ +}; + +typedef struct ObjRecord ObjRecord; +typedef void ORI(ObjRecord * orp); + +struct ObjRecord { + ORI *ori; /* Initialization routine */ + int used; /* Current data size */ + int committed; /* Data size at last boundary */ + int x_size; /* (see obj_x) */ + unsigned int type; /* Record type */ + ObjRecord *child; /* Associated record below this one */ + ObjRecord **up; /* Master pointer to this ObjRecord */ + ObjRecord *back; /* Previous part of this record */ + uint32_t parm[OBJ_PARMS]; /* Parameters for ori routine */ + uint8_t buf[RECORD_MAX + 3]; +}; + +static void obj_fwrite(ObjRecord * orp); +static void ori_ledata(ObjRecord * orp); +static void ori_pubdef(ObjRecord * orp); +static void ori_null(ObjRecord * orp); +static ObjRecord *obj_commit(ObjRecord * orp); + +static bool obj_uppercase; /* Flag: all names in uppercase */ +static bool obj_use32; /* Flag: at least one segment is 32-bit */ +static bool obj_nodepend; /* Flag: don't emit file dependencies */ + +/* + * Clear an ObjRecord structure. (Never reallocates). + * To simplify reuse of ObjRecord's, .type, .ori and .parm are not cleared. + */ +static ObjRecord *obj_clear(ObjRecord * orp) +{ + orp->used = 0; + orp->committed = 0; + orp->x_size = 0; + orp->child = NULL; + orp->up = NULL; + orp->back = NULL; + return (orp); +} + +/* + * Emit an ObjRecord structure. (Never reallocates). + * The record is written out proceeded (recursively) by its previous part (if + * any) and followed (recursively) by its child (if any). + * The previous part and the child are freed. The main ObjRecord is cleared, + * not freed. + */ +static ObjRecord *obj_emit(ObjRecord * orp) +{ + if (orp->back) { + obj_emit(orp->back); + nasm_free(orp->back); + } + + if (orp->committed) + obj_fwrite(orp); + + if (orp->child) { + obj_emit(orp->child); + nasm_free(orp->child); + } + + return (obj_clear(orp)); +} + +/* + * Commit and Emit a record. (Never reallocates). + */ +static ObjRecord *obj_emit2(ObjRecord * orp) +{ + obj_commit(orp); + return (obj_emit(orp)); +} + +/* + * Allocate and clear a new ObjRecord; Also sets .ori to ori_null + */ +static ObjRecord *obj_new(void) +{ + ObjRecord *orp; + + orp = obj_clear(nasm_malloc(sizeof(ObjRecord))); + orp->ori = ori_null; + return (orp); +} + +/* + * Advance to the next record because the existing one is full or its x_size + * is incompatible. + * Any uncommitted data is moved into the next record. + */ +static ObjRecord *obj_bump(ObjRecord * orp) +{ + ObjRecord *nxt; + int used = orp->used; + int committed = orp->committed; + + if (orp->up) { + *orp->up = nxt = obj_new(); + nxt->ori = orp->ori; + nxt->type = orp->type; + nxt->up = orp->up; + nxt->back = orp; + memcpy(nxt->parm, orp->parm, sizeof(orp->parm)); + } else + nxt = obj_emit(orp); + + used -= committed; + if (used) { + nxt->committed = 1; + nxt->ori(nxt); + nxt->committed = nxt->used; + memcpy(nxt->buf + nxt->committed, orp->buf + committed, used); + nxt->used = nxt->committed + used; + } + + return (nxt); +} + +/* + * Advance to the next record if necessary to allow the next field to fit. + */ +static ObjRecord *obj_check(ObjRecord * orp, int size) +{ + if (orp->used + size > RECORD_MAX) + orp = obj_bump(orp); + + if (!orp->committed) { + orp->committed = 1; + orp->ori(orp); + orp->committed = orp->used; + } + + return (orp); +} + +/* + * All data written so far is committed to the current record (won't be moved to + * the next record in case of continuation). + */ +static ObjRecord *obj_commit(ObjRecord * orp) +{ + orp->committed = orp->used; + return (orp); +} + +/* + * Write a byte + */ +static ObjRecord *obj_byte(ObjRecord * orp, uint8_t val) +{ + orp = obj_check(orp, 1); + orp->buf[orp->used] = val; + orp->used++; + return (orp); +} + +/* + * Write a word + */ +static ObjRecord *obj_word(ObjRecord * orp, unsigned int val) +{ + orp = obj_check(orp, 2); + orp->buf[orp->used] = val; + orp->buf[orp->used + 1] = val >> 8; + orp->used += 2; + return (orp); +} + +/* + * Write a reversed word + */ +static ObjRecord *obj_rword(ObjRecord * orp, unsigned int val) +{ + orp = obj_check(orp, 2); + orp->buf[orp->used] = val >> 8; + orp->buf[orp->used + 1] = val; + orp->used += 2; + return (orp); +} + +/* + * Write a dword + */ +static ObjRecord *obj_dword(ObjRecord * orp, uint32_t val) +{ + orp = obj_check(orp, 4); + orp->buf[orp->used] = val; + orp->buf[orp->used + 1] = val >> 8; + orp->buf[orp->used + 2] = val >> 16; + orp->buf[orp->used + 3] = val >> 24; + orp->used += 4; + return (orp); +} + +/* + * All fields of "size x" in one obj record must be the same size (either 16 + * bits or 32 bits). There is a one bit flag in each record which specifies + * which. + * This routine is used to force the current record to have the desired + * x_size. x_size is normally automatic (using obj_x), so that this + * routine should be used outside obj_x, only to provide compatibility with + * linkers that have bugs in their processing of the size bit. + */ + +static ObjRecord *obj_force(ObjRecord * orp, int x) +{ + if (orp->x_size == (x ^ 48)) + orp = obj_bump(orp); + orp->x_size = x; + return (orp); +} + +/* + * This routine writes a field of size x. The caller does not need to worry at + * all about whether 16-bits or 32-bits are required. + */ +static ObjRecord *obj_x(ObjRecord * orp, uint32_t val) +{ + if (orp->type & 1) + orp->x_size = 32; + if (val > 0xFFFF) + orp = obj_force(orp, 32); + if (orp->x_size == 32) { + ObjRecord *nxt = obj_dword(orp, val); + nxt->x_size = 32; /* x_size is cleared when a record overflows */ + return nxt; + } + orp->x_size = 16; + return (obj_word(orp, val)); +} + +/* + * Writes an index + */ +static ObjRecord *obj_index(ObjRecord * orp, unsigned int val) +{ + if (val < 128) + return (obj_byte(orp, val)); + return (obj_word(orp, (val >> 8) | (val << 8) | 0x80)); +} + +/* + * Writes a variable length value + */ +static ObjRecord *obj_value(ObjRecord * orp, uint32_t val) +{ + if (val <= 128) + return (obj_byte(orp, val)); + if (val <= 0xFFFF) { + orp = obj_byte(orp, 129); + return (obj_word(orp, val)); + } + if (val <= 0xFFFFFF) + return (obj_dword(orp, (val << 8) + 132)); + orp = obj_byte(orp, 136); + return (obj_dword(orp, val)); +} + +/* + * Writes a counted string + */ +static ObjRecord *obj_name(ObjRecord * orp, const char *name) +{ + int len = strlen(name); + uint8_t *ptr; + + if (len > UINT8_MAX) { + nasm_warn(WARN_OTHER, "truncating object name `%.64s...' to %u bytes", + name, UINT8_MAX); + len = UINT8_MAX; + } + + orp = obj_check(orp, len + 1); + ptr = orp->buf + orp->used; + *ptr++ = len; + orp->used += len + 1; + if (obj_uppercase) + while (--len >= 0) { + *ptr++ = toupper(*name); + name++; + } else + memcpy(ptr, name, len); + return (orp); +} + +/* + * Initializer for an LEDATA record. + * parm[0] = offset + * parm[1] = segment index + * During the use of a LEDATA ObjRecord, parm[0] is constantly updated to + * represent the offset that would be required if the record were split at the + * last commit point. + * parm[2] is a copy of parm[0] as it was when the current record was initted. + */ +static void ori_ledata(ObjRecord * orp) +{ + obj_index(orp, orp->parm[1]); + orp->parm[2] = orp->parm[0]; + obj_x(orp, orp->parm[0]); +} + +/* + * Initializer for a PUBDEF record. + * parm[0] = group index + * parm[1] = segment index + * parm[2] = frame (only used when both indexes are zero) + */ +static void ori_pubdef(ObjRecord * orp) +{ + obj_index(orp, orp->parm[0]); + obj_index(orp, orp->parm[1]); + if (!(orp->parm[0] | orp->parm[1])) + obj_word(orp, orp->parm[2]); +} + +/* + * Initializer for a LINNUM record. + * parm[0] = group index + * parm[1] = segment index + */ +static void ori_linnum(ObjRecord * orp) +{ + obj_index(orp, orp->parm[0]); + obj_index(orp, orp->parm[1]); +} + +/* + * Initializer for a local vars record. + */ +static void ori_local(ObjRecord * orp) +{ + obj_rword(orp, dSYM); +} + +/* + * Null initializer for records that continue without any header info + */ +static void ori_null(ObjRecord * orp) +{ + (void)orp; /* Do nothing */ +} + +/* + * This concludes the low level section of outobj.c + */ + +static char obj_infile[FILENAME_MAX]; + +static int32_t first_seg; +static bool any_segs; +static int passtwo; +static int arrindex; + +#define GROUP_MAX 256 /* we won't _realistically_ have more + * than this many segs in a group */ +#define EXT_BLKSIZ 256 /* block size for externals list */ + +struct Segment; /* need to know these structs exist */ +struct Group; + +struct LineNumber { + struct LineNumber *next; + struct Segment *segment; + int32_t offset; + int32_t lineno; +}; + +static struct FileName { + struct FileName *next; + char *name; + struct LineNumber *lnhead, **lntail; + int index; +} *fnhead, **fntail; + +static struct Array { + struct Array *next; + unsigned size; + int basetype; +} *arrhead, **arrtail; + +#define ARRAYBOT 31 /* magic number for first array index */ + +static struct Public { + struct Public *next; + char *name; + int32_t offset; + int32_t segment; /* only if it's far-absolute */ + int type; /* only for local debug syms */ +} *fpubhead, **fpubtail, *last_defined; + +static struct External { + struct External *next; + char *name; + int32_t commonsize; + int32_t commonelem; /* element size if FAR, else zero */ + int index; /* OBJ-file external index */ + enum { + DEFWRT_NONE, /* no unusual default-WRT */ + DEFWRT_STRING, /* a string we don't yet understand */ + DEFWRT_SEGMENT, /* a segment */ + DEFWRT_GROUP /* a group */ + } defwrt_type; + union { + char *string; + struct Segment *seg; + struct Group *grp; + } defwrt_ptr; + struct External *next_dws; /* next with DEFWRT_STRING */ +} *exthead, **exttail, *dws; + +static int externals; + +static struct ExtBack { + struct ExtBack *next; + struct External *exts[EXT_BLKSIZ]; +} *ebhead, **ebtail; + +static struct Segment { + struct Segment *next; + char *name; + int32_t index; /* the NASM segment id */ + int32_t obj_index; /* the OBJ-file segment index */ + struct Group *grp; /* the group it beint32_ts to */ + uint32_t currentpos; + int32_t align; /* can be SEG_ABS + absolute addr */ + int64_t pass_last_seen; + struct Public *pubhead, **pubtail, *lochead, **loctail; + char *segclass, *overlay; /* `class' is a C++ keyword :-) */ + ObjRecord *orp; + enum { + CMB_PRIVATE = 0, + CMB_PUBLIC = 2, + CMB_STACK = 5, + CMB_COMMON = 6 + } combine; + bool use32; /* is this segment 32-bit? */ +} *seghead, **segtail, *obj_seg_needs_update; + +static struct Group { + struct Group *next; + char *name; + int32_t index; /* NASM segment id */ + int32_t obj_index; /* OBJ-file group index */ + int32_t nentries; /* number of elements... */ + int32_t nindices; /* ...and number of index elts... */ + union { + int32_t index; + char *name; + } segs[GROUP_MAX]; /* ...in this */ +} *grphead, **grptail, *obj_grp_needs_update; + +static struct ImpDef { + struct ImpDef *next; + char *extname; + char *libname; + unsigned int impindex; + char *impname; +} *imphead, **imptail; + +static struct ExpDef { + struct ExpDef *next; + char *intname; + char *extname; + unsigned int ordinal; + int flags; +} *exphead, **exptail; + +#define EXPDEF_FLAG_ORDINAL 0x80 +#define EXPDEF_FLAG_RESIDENT 0x40 +#define EXPDEF_FLAG_NODATA 0x20 +#define EXPDEF_MASK_PARMCNT 0x1F + +static int32_t obj_entry_seg, obj_entry_ofs; + +const struct ofmt of_obj; +static const struct dfmt borland_debug_form; + +/* The current segment */ +static struct Segment *current_seg; + +static int32_t obj_segment(char *, int *); +static void obj_write_file(void); +static enum directive_result obj_directive(enum directive, char *); + +static void obj_init(void) +{ + strlcpy(obj_infile, inname, sizeof(obj_infile)); + first_seg = seg_alloc(); + any_segs = false; + fpubhead = NULL; + fpubtail = &fpubhead; + exthead = NULL; + exttail = &exthead; + imphead = NULL; + imptail = &imphead; + exphead = NULL; + exptail = &exphead; + dws = NULL; + externals = 0; + ebhead = NULL; + ebtail = &ebhead; + seghead = obj_seg_needs_update = NULL; + segtail = &seghead; + grphead = obj_grp_needs_update = NULL; + grptail = &grphead; + obj_entry_seg = NO_SEG; + obj_uppercase = false; + obj_use32 = false; + passtwo = 0; + current_seg = NULL; +} + +static void obj_cleanup(void) +{ + obj_write_file(); + dfmt->cleanup(); + while (seghead) { + struct Segment *segtmp = seghead; + seghead = seghead->next; + while (segtmp->pubhead) { + struct Public *pubtmp = segtmp->pubhead; + segtmp->pubhead = pubtmp->next; + nasm_free(pubtmp->name); + nasm_free(pubtmp); + } + nasm_free(segtmp->segclass); + nasm_free(segtmp->overlay); + nasm_free(segtmp); + } + while (fpubhead) { + struct Public *pubtmp = fpubhead; + fpubhead = fpubhead->next; + nasm_free(pubtmp->name); + nasm_free(pubtmp); + } + while (exthead) { + struct External *exttmp = exthead; + exthead = exthead->next; + nasm_free(exttmp); + } + while (imphead) { + struct ImpDef *imptmp = imphead; + imphead = imphead->next; + nasm_free(imptmp->extname); + nasm_free(imptmp->libname); + nasm_free(imptmp->impname); /* nasm_free won't mind if it's NULL */ + nasm_free(imptmp); + } + while (exphead) { + struct ExpDef *exptmp = exphead; + exphead = exphead->next; + nasm_free(exptmp->extname); + nasm_free(exptmp->intname); + nasm_free(exptmp); + } + while (ebhead) { + struct ExtBack *ebtmp = ebhead; + ebhead = ebhead->next; + nasm_free(ebtmp); + } + while (grphead) { + struct Group *grptmp = grphead; + grphead = grphead->next; + nasm_free(grptmp); + } +} + +static void obj_ext_set_defwrt(struct External *ext, char *id) +{ + struct Segment *seg; + struct Group *grp; + + for (seg = seghead; seg; seg = seg->next) + if (!strcmp(seg->name, id)) { + ext->defwrt_type = DEFWRT_SEGMENT; + ext->defwrt_ptr.seg = seg; + nasm_free(id); + return; + } + + for (grp = grphead; grp; grp = grp->next) + if (!strcmp(grp->name, id)) { + ext->defwrt_type = DEFWRT_GROUP; + ext->defwrt_ptr.grp = grp; + nasm_free(id); + return; + } + + ext->defwrt_type = DEFWRT_STRING; + ext->defwrt_ptr.string = id; + ext->next_dws = dws; + dws = ext; +} + +static void obj_deflabel(char *name, int32_t segment, + int64_t offset, int is_global, char *special) +{ + /* + * We have three cases: + * + * (i) `segment' is a segment-base. If so, set the name field + * for the segment or group structure it refers to, and then + * return. + * + * (ii) `segment' is one of our segments, or a SEG_ABS segment. + * Save the label position for later output of a PUBDEF record. + * (Or a MODPUB, if we work out how.) + * + * (iii) `segment' is not one of our segments. Save the label + * position for later output of an EXTDEF, and also store a + * back-reference so that we can map later references to this + * segment number to the external index. + */ + struct External *ext; + struct ExtBack *eb; + struct Segment *seg; + int i; + bool used_special = false; /* have we used the special text? */ + + if (debug_level(2)) + nasm_debug(" obj_deflabel: %s, seg=%"PRIx32", off=%"PRIx64", is_global=%d, %s\n", + name, segment, offset, is_global, special); + + /* + * If it's a special-retry from pass two, discard it. + */ + if (is_global == 3) + return; + + /* + * First check for the double-period, signifying something + * unusual. + */ + if (name[0] == '.' && name[1] == '.' && name[2] != '@') { + if (!strcmp(name, "..start")) { + obj_entry_seg = segment; + obj_entry_ofs = offset; + return; + } + nasm_nonfatal("unrecognised special symbol `%s'", name); + } + + /* + * Case (i): + */ + if (obj_seg_needs_update) { + obj_seg_needs_update->name = name; + return; + } else if (obj_grp_needs_update) { + obj_grp_needs_update->name = name; + return; + } + if (segment < SEG_ABS && segment != NO_SEG && segment % 2) + return; + + if (segment >= SEG_ABS || segment == NO_SEG) { + /* + * SEG_ABS subcase of (ii). + */ + if (is_global) { + struct Public *pub; + + pub = *fpubtail = nasm_malloc(sizeof(*pub)); + fpubtail = &pub->next; + pub->next = NULL; + pub->name = nasm_strdup(name); + pub->offset = offset; + pub->segment = (segment == NO_SEG ? 0 : segment & ~SEG_ABS); + } + if (special) + nasm_nonfatal("OBJ supports no special symbol features" + " for this symbol type"); + return; + } + + /* + * If `any_segs' is still false, we might need to define a + * default segment, if they're trying to declare a label in + * `first_seg'. + */ + if (!any_segs && segment == first_seg) { + int tempint = 0; + if (segment != obj_segment("__NASMDEFSEG", &tempint)) + nasm_panic("strange segment conditions in OBJ driver"); + } + + for (seg = seghead; seg && is_global; seg = seg->next) + if (seg->index == segment) { + struct Public *loc = nasm_malloc(sizeof(*loc)); + /* + * Case (ii). Maybe MODPUB someday? + */ + *seg->pubtail = loc; + seg->pubtail = &loc->next; + loc->next = NULL; + loc->name = nasm_strdup(name); + loc->offset = offset; + + if (special) + nasm_nonfatal("OBJ supports no special symbol features" + " for this symbol type"); + return; + } + + /* + * Case (iii). + */ + if (is_global) { + ext = *exttail = nasm_malloc(sizeof(*ext)); + ext->next = NULL; + exttail = &ext->next; + ext->name = name; + /* Place by default all externs into the current segment */ + ext->defwrt_type = DEFWRT_NONE; + +/* 28-Apr-2002 - John Coffman + The following code was introduced on 12-Aug-2000, and breaks fixups + on code passed thru the MSC 5.1 linker (3.66) and MSC 6.00A linker + (5.10). It was introduced after FIXUP32 was added, and may be needed + for 32-bit segments. The following will get 16-bit segments working + again, and maybe someone can correct the 'if' condition which is + actually needed. +*/ +#if 0 + if (current_seg) { +#else + if (current_seg && current_seg->use32) { + if (current_seg->grp) { + ext->defwrt_type = DEFWRT_GROUP; + ext->defwrt_ptr.grp = current_seg->grp; + } else { + ext->defwrt_type = DEFWRT_SEGMENT; + ext->defwrt_ptr.seg = current_seg; + } + } +#endif + + if (is_global == 2) { + ext->commonsize = offset; + ext->commonelem = 1; /* default FAR */ + } else + ext->commonsize = 0; + } else + return; + + /* + * Now process the special text, if any, to find default-WRT + * specifications and common-variable element-size and near/far + * specifications. + */ + while (special && *special) { + used_special = true; + + /* + * We might have a default-WRT specification. + */ + if (!nasm_strnicmp(special, "wrt", 3)) { + char *p; + int len; + special += 3; + special += strspn(special, " \t"); + p = nasm_strndup(special, len = strcspn(special, ":")); + obj_ext_set_defwrt(ext, p); + special += len; + if (*special && *special != ':') + nasm_nonfatal("`:' expected in special symbol" + " text for `%s'", ext->name); + else if (*special == ':') + special++; + } + + /* + * The NEAR or FAR keywords specify nearness or + * farness. FAR gives default element size 1. + */ + if (!nasm_strnicmp(special, "far", 3)) { + if (ext->commonsize) + ext->commonelem = 1; + else + nasm_nonfatal("`%s': `far' keyword may only be applied" + " to common variables\n", ext->name); + special += 3; + special += strspn(special, " \t"); + } else if (!nasm_strnicmp(special, "near", 4)) { + if (ext->commonsize) + ext->commonelem = 0; + else + nasm_nonfatal("`%s': `far' keyword may only be applied" + " to common variables\n", ext->name); + special += 4; + special += strspn(special, " \t"); + } + + /* + * If it's a common, and anything else remains on the line + * before a further colon, evaluate it as an expression and + * use that as the element size. Forward references aren't + * allowed. + */ + if (*special == ':') + special++; + else if (*special) { + if (ext->commonsize) { + expr *e; + struct tokenval tokval; + + stdscan_reset(); + stdscan_set(special); + tokval.t_type = TOKEN_INVALID; + e = evaluate(stdscan, NULL, &tokval, NULL, 1, NULL); + if (e) { + if (!is_simple(e)) + nasm_nonfatal("cannot use relocatable" + " expression as common-variable element size"); + else + ext->commonelem = reloc_value(e); + } + special = stdscan_get(); + } else { + nasm_nonfatal("`%s': element-size specifications only" + " apply to common variables", ext->name); + while (*special && *special != ':') + special++; + if (*special == ':') + special++; + } + } + } + + i = segment / 2; + eb = ebhead; + if (!eb) { + eb = *ebtail = nasm_zalloc(sizeof(*eb)); + eb->next = NULL; + ebtail = &eb->next; + } + while (i >= EXT_BLKSIZ) { + if (eb && eb->next) + eb = eb->next; + else { + eb = *ebtail = nasm_zalloc(sizeof(*eb)); + eb->next = NULL; + ebtail = &eb->next; + } + i -= EXT_BLKSIZ; + } + eb->exts[i] = ext; + ext->index = ++externals; + + if (special && !used_special) + nasm_nonfatal("OBJ supports no special symbol features" + " for this symbol type"); +} + +/* forward declaration */ +static void obj_write_fixup(ObjRecord * orp, int bytes, + int segrel, int32_t seg, int32_t wrt, + struct Segment *segto); + +static void obj_out(int32_t segto, const void *data, + enum out_type type, uint64_t size, + int32_t segment, int32_t wrt) +{ + const uint8_t *ucdata; + int32_t ldata; + struct Segment *seg; + ObjRecord *orp; + + /* + * If `any_segs' is still false, we must define a default + * segment. + */ + if (!any_segs) { + int tempint = 0; + if (segto != obj_segment("__NASMDEFSEG", &tempint)) + nasm_panic("strange segment conditions in OBJ driver"); + } + + /* + * Find the segment we are targeting. + */ + for (seg = seghead; seg; seg = seg->next) + if (seg->index == segto) + break; + if (!seg) + nasm_panic("code directed to nonexistent segment?"); + + orp = seg->orp; + orp->parm[0] = seg->currentpos; + + switch (type) { + case OUT_RAWDATA: + ucdata = data; + while (size > 0) { + unsigned int len; + orp = obj_check(seg->orp, 1); + len = RECORD_MAX - orp->used; + if (len > size) + len = size; + memcpy(orp->buf + orp->used, ucdata, len); + orp->committed = orp->used += len; + orp->parm[0] = seg->currentpos += len; + ucdata += len; + size -= len; + } + break; + + case OUT_ADDRESS: + case OUT_REL1ADR: + case OUT_REL2ADR: + case OUT_REL4ADR: + case OUT_REL8ADR: + { + int rsize; + + if (type == OUT_ADDRESS) + size = abs((int)size); + + if (segment == NO_SEG && type != OUT_ADDRESS) + nasm_nonfatal("relative call to absolute address not" + " supported by OBJ format"); + if (segment >= SEG_ABS) + nasm_nonfatal("far-absolute relocations not supported" + " by OBJ format"); + + ldata = *(int64_t *)data; + if (type != OUT_ADDRESS) { + /* + * For 16-bit and 32-bit x86 code, the size and realsize() always + * matches as only jumps, calls and loops uses PC relative + * addressing and the address isn't followed by any other opcode + * bytes. In 64-bit mode there is RIP relative addressing which + * means the fixup location can be followed by an immediate value, + * meaning that size > realsize(). + * + * When the CPU is calculating the effective address, it takes the + * RIP at the end of the instruction and adds the fixed up relative + * address value to it. + * + * The linker's point of reference is the end of the fixup location + * (which is the end of the instruction for Jcc, CALL, LOOP[cc]). + * It is calculating distance between the target symbol and the end + * of the fixup location, and add this to the displacement value we + * are calculating here and storing at the fixup location. + * + * To get the right effect, we need to _reduce_ the displacement + * value by the number of bytes following the fixup. + * + * Example: + * data at address 0x100; REL4ADR at 0x050, 4 byte immediate, + * end of fixup at 0x054, end of instruction at 0x058. + * => size = 8. + * => realsize() -> 4 + * => CPU needs a value of: 0x100 - 0x058 = 0x0a8 + * => linker/loader will add: 0x100 - 0x054 = 0x0ac + * => We must add an addend of -4. + * => realsize() - size = -4. + * + * The code used to do size - realsize() at least since v0.90, + * probably because it wasn't needed... + */ + ldata -= size; + size = realsize(type, size); + ldata += size; + } + + switch (size) { + default: + nasm_nonfatal("OBJ format can only handle 16- or " + "32-byte relocations"); + segment = NO_SEG; /* Don't actually generate a relocation */ + break; + case 2: + orp = obj_word(orp, ldata); + break; + case 4: + orp = obj_dword(orp, ldata); + break; + } + + rsize = size; + if (segment < SEG_ABS && (segment != NO_SEG && segment % 2) && + size == 4) { + /* + * This is a 4-byte segment-base relocation such as + * `MOV EAX,SEG foo'. OBJ format can't actually handle + * these, but if the constant term has the 16 low bits + * zero, we can just apply a 2-byte segment-base + * relocation to the low word instead. + */ + rsize = 2; + if (ldata & 0xFFFF) + nasm_nonfatal("OBJ format cannot handle complex" + " dword-size segment base references"); + } + if (segment != NO_SEG) + obj_write_fixup(orp, rsize, + (type == OUT_ADDRESS ? 0x4000 : 0), + segment, wrt, seg); + seg->currentpos += size; + break; + } + + default: + nasm_nonfatal("Relocation type not supported by output format"); + /* fall through */ + + case OUT_RESERVE: + if (orp->committed) + orp = obj_bump(orp); + seg->currentpos += size; + break; + } + obj_commit(orp); +} + +static void obj_write_fixup(ObjRecord * orp, int bytes, + int segrel, int32_t seg, int32_t wrt, + struct Segment *segto) +{ + unsigned locat; + int method; + int base; + int32_t tidx, fidx; + struct Segment *s = NULL; + struct Group *g = NULL; + struct External *e = NULL; + ObjRecord *forp; + + if (bytes != 2 && bytes != 4) { + nasm_nonfatal("`obj' output driver does not support" + " %d-bit relocations", bytes << 3); + return; + } + + forp = orp->child; + if (forp == NULL) { + orp->child = forp = obj_new(); + forp->up = &(orp->child); + /* We should choose between FIXUPP and FIXU32 record type */ + /* If we're targeting a 32-bit segment, use a FIXU32 record */ + if (segto->use32) + forp->type = FIXU32; + else + forp->type = FIXUPP; + } + + if (seg % 2) { + base = true; + locat = FIX_16_SELECTOR; + seg--; + if (bytes != 2) + nasm_panic("OBJ: 4-byte segment base fixup got" + " through sanity check"); + } else { + base = false; + locat = (bytes == 2) ? FIX_16_OFFSET : FIX_32_OFFSET; + if (!segrel) + /* + * There is a bug in tlink that makes it process self relative + * fixups incorrectly if the x_size doesn't match the location + * size. + */ + forp = obj_force(forp, bytes << 3); + } + + forp = obj_rword(forp, locat | segrel | (orp->parm[0] - orp->parm[2])); + + tidx = fidx = -1, method = 0; /* placate optimisers */ + + /* + * See if we can find the segment ID in our segment list. If + * so, we have a T4 (LSEG) target. + */ + for (s = seghead; s; s = s->next) + if (s->index == seg) + break; + if (s) + method = 4, tidx = s->obj_index; + else { + for (g = grphead; g; g = g->next) + if (g->index == seg) + break; + if (g) + method = 5, tidx = g->obj_index; + else { + int32_t i = seg / 2; + struct ExtBack *eb = ebhead; + while (i >= EXT_BLKSIZ) { + if (eb) + eb = eb->next; + else + break; + i -= EXT_BLKSIZ; + } + if (eb) + method = 6, e = eb->exts[i], tidx = e->index; + else + nasm_panic("unrecognised segment value in obj_write_fixup"); + } + } + + /* + * If no WRT given, assume the natural default, which is method + * F5 unless: + * + * - we are doing an OFFSET fixup for a grouped segment, in + * which case we require F1 (group). + * + * - we are doing an OFFSET fixup for an external with a + * default WRT, in which case we must honour the default WRT. + */ + if (wrt == NO_SEG) { + if (!base && s && s->grp) + method |= 0x10, fidx = s->grp->obj_index; + else if (!base && e && e->defwrt_type != DEFWRT_NONE) { + if (e->defwrt_type == DEFWRT_SEGMENT) + method |= 0x00, fidx = e->defwrt_ptr.seg->obj_index; + else if (e->defwrt_type == DEFWRT_GROUP) + method |= 0x10, fidx = e->defwrt_ptr.grp->obj_index; + else { + nasm_nonfatal("default WRT specification for" + " external `%s' unresolved", e->name); + method |= 0x50, fidx = -1; /* got to do _something_ */ + } + } else + method |= 0x50, fidx = -1; + } else { + /* + * See if we can find the WRT-segment ID in our segment + * list. If so, we have a F0 (LSEG) frame. + */ + for (s = seghead; s; s = s->next) + if (s->index == wrt - 1) + break; + if (s) + method |= 0x00, fidx = s->obj_index; + else { + for (g = grphead; g; g = g->next) + if (g->index == wrt - 1) + break; + if (g) + method |= 0x10, fidx = g->obj_index; + else { + int32_t i = wrt / 2; + struct ExtBack *eb = ebhead; + while (i >= EXT_BLKSIZ) { + if (eb) + eb = eb->next; + else + break; + i -= EXT_BLKSIZ; + } + if (eb) + method |= 0x20, fidx = eb->exts[i]->index; + else + nasm_panic("unrecognised WRT value in obj_write_fixup"); + } + } + } + + forp = obj_byte(forp, method); + if (fidx != -1) + forp = obj_index(forp, fidx); + forp = obj_index(forp, tidx); + obj_commit(forp); +} + +static int32_t obj_segment(char *name, int *bits) +{ + /* + * We call the label manager here to define a name for the new + * segment, and when our _own_ label-definition stub gets + * called in return, it should register the new segment name + * using the pointer it gets passed. That way we save memory, + * by sponging off the label manager. + */ + if (debug_level(3)) + nasm_debug(" obj_segment: < %s >, *bits=%d\n", name, *bits); + + if (!name) { + *bits = 16; + current_seg = NULL; + return first_seg; + } else { + struct Segment *seg; + struct Group *grp; + struct External **extp; + int obj_idx, i, attrs; + bool rn_error; + char *p; + + /* + * Look for segment attributes. + */ + attrs = 0; + while (*name == '.') + name++; /* hack, but a documented one */ + p = name; + while (*p && !nasm_isspace(*p)) + p++; + if (*p) { + *p++ = '\0'; + while (*p && nasm_isspace(*p)) + *p++ = '\0'; + } + while (*p) { + while (*p && !nasm_isspace(*p)) + p++; + if (*p) { + *p++ = '\0'; + while (*p && nasm_isspace(*p)) + *p++ = '\0'; + } + + attrs++; + } + + for (seg = seghead, obj_idx = 1; ; seg = seg->next, obj_idx++) { + if (!seg) + break; + + if (!strcmp(seg->name, name)) { + if (attrs > 0 && seg->pass_last_seen == pass_count()) + nasm_warn(WARN_OTHER, "segment attributes specified on" + " redeclaration of segment: ignoring"); + if (seg->use32) + *bits = 32; + else + *bits = 16; + current_seg = seg; + seg->pass_last_seen = pass_count(); + return seg->index; + } + } + + *segtail = seg = nasm_malloc(sizeof(*seg)); + seg->next = NULL; + segtail = &seg->next; + seg->index = (any_segs ? seg_alloc() : first_seg); + seg->obj_index = obj_idx; + seg->grp = NULL; + any_segs = true; + seg->name = nasm_strdup(name); + seg->currentpos = 0; + seg->align = 1; /* default */ + seg->use32 = false; /* default */ + seg->combine = CMB_PUBLIC; /* default */ + seg->segclass = seg->overlay = NULL; + seg->pubhead = NULL; + seg->pubtail = &seg->pubhead; + seg->lochead = NULL; + seg->loctail = &seg->lochead; + seg->orp = obj_new(); + seg->orp->up = &(seg->orp); + seg->orp->ori = ori_ledata; + seg->orp->type = LEDATA; + seg->orp->parm[1] = obj_idx; + + /* + * Process the segment attributes. + */ + p = name; + while (attrs--) { + p += strlen(p); + while (!*p) + p++; + + /* + * `p' contains a segment attribute. + */ + if (!nasm_stricmp(p, "private")) + seg->combine = CMB_PRIVATE; + else if (!nasm_stricmp(p, "public")) + seg->combine = CMB_PUBLIC; + else if (!nasm_stricmp(p, "common")) + seg->combine = CMB_COMMON; + else if (!nasm_stricmp(p, "stack")) + seg->combine = CMB_STACK; + else if (!nasm_stricmp(p, "use16")) + seg->use32 = false; + else if (!nasm_stricmp(p, "use32")) + seg->use32 = true; + else if (!nasm_stricmp(p, "flat")) { + /* + * This segment is an OS/2 FLAT segment. That means + * that its default group is group FLAT, even if + * the group FLAT does not explicitly _contain_ the + * segment. + * + * When we see this, we must create the group + * `FLAT', containing no segments, if it does not + * already exist; then we must set the default + * group of this segment to be the FLAT group. + */ + struct Group *grp; + for (grp = grphead; grp; grp = grp->next) + if (!strcmp(grp->name, "FLAT")) + break; + if (!grp) { + obj_directive(D_GROUP, "FLAT"); + for (grp = grphead; grp; grp = grp->next) + if (!strcmp(grp->name, "FLAT")) + break; + if (!grp) + nasm_panic("failure to define FLAT?!"); + } + seg->grp = grp; + } else if (!nasm_strnicmp(p, "class=", 6)) + seg->segclass = nasm_strdup(p + 6); + else if (!nasm_strnicmp(p, "overlay=", 8)) + seg->overlay = nasm_strdup(p + 8); + else if (!nasm_strnicmp(p, "align=", 6)) { + seg->align = readnum(p + 6, &rn_error); + if (rn_error) { + seg->align = 1; + nasm_nonfatal("segment alignment should be numeric"); + } + switch (seg->align) { + case 1: /* BYTE */ + case 2: /* WORD */ + case 4: /* DWORD */ + case 16: /* PARA */ + case 256: /* PAGE */ + case 4096: /* PharLap extension */ + break; + case 8: + nasm_warn(WARN_OTHER, "OBJ format does not support alignment" + " of 8: rounding up to 16"); + seg->align = 16; + break; + case 32: + case 64: + case 128: + nasm_warn(WARN_OTHER, "OBJ format does not support alignment" + " of %d: rounding up to 256", seg->align); + seg->align = 256; + break; + case 512: + case 1024: + case 2048: + nasm_warn(WARN_OTHER, "OBJ format does not support alignment" + " of %d: rounding up to 4096", seg->align); + seg->align = 4096; + break; + default: + nasm_nonfatal("invalid alignment value %d", + seg->align); + seg->align = 1; + break; + } + } else if (!nasm_strnicmp(p, "absolute=", 9)) { + seg->align = SEG_ABS + readnum(p + 9, &rn_error); + if (rn_error) + nasm_nonfatal("argument to `absolute' segment" + " attribute should be numeric"); + } + } + + /* We need to know whenever we have at least one 32-bit segment */ + obj_use32 |= seg->use32; + + obj_seg_needs_update = seg; + if (seg->align >= SEG_ABS) + define_label(name, NO_SEG, seg->align - SEG_ABS, false); + else + define_label(name, seg->index + 1, 0L, false); + obj_seg_needs_update = NULL; + + /* + * See if this segment is defined in any groups. + */ + for (grp = grphead; grp; grp = grp->next) { + for (i = grp->nindices; i < grp->nentries; i++) { + if (!strcmp(grp->segs[i].name, seg->name)) { + nasm_free(grp->segs[i].name); + grp->segs[i] = grp->segs[grp->nindices]; + grp->segs[grp->nindices++].index = seg->obj_index; + if (seg->grp) + nasm_warn(WARN_OTHER, "segment `%s' is already part of" + " a group: first one takes precedence", + seg->name); + else + seg->grp = grp; + } + } + } + + /* + * Walk through the list of externals with unresolved + * default-WRT clauses, and resolve any that point at this + * segment. + */ + extp = &dws; + while (*extp) { + if ((*extp)->defwrt_type == DEFWRT_STRING && + !strcmp((*extp)->defwrt_ptr.string, seg->name)) { + nasm_free((*extp)->defwrt_ptr.string); + (*extp)->defwrt_type = DEFWRT_SEGMENT; + (*extp)->defwrt_ptr.seg = seg; + *extp = (*extp)->next_dws; + } else + extp = &(*extp)->next_dws; + } + + if (seg->use32) + *bits = 32; + else + *bits = 16; + current_seg = seg; + return seg->index; + } +} + +static enum directive_result +obj_directive(enum directive directive, char *value) +{ + switch (directive) { + case D_GROUP: + { + char *p, *q, *v; + if (pass_first()) { /* XXX */ + struct Group *grp; + struct Segment *seg; + struct External **extp; + int obj_idx; + + q = value; + while (*q == '.') + q++; /* hack, but a documented one */ + v = q; + while (*q && !nasm_isspace(*q)) + q++; + if (nasm_isspace(*q)) { + *q++ = '\0'; + while (*q && nasm_isspace(*q)) + q++; + } + /* + * Here we used to sanity-check the group directive to + * ensure nobody tried to declare a group containing no + * segments. However, OS/2 does this as standard + * practice, so the sanity check has been removed. + * + * if (!*q) { + * nasm_error(ERR_NONFATAL,"GROUP directive contains no segments"); + * return DIRR_ERROR; + * } + */ + + obj_idx = 1; + for (grp = grphead; grp; grp = grp->next) { + obj_idx++; + if (!strcmp(grp->name, v)) { + nasm_nonfatal("group `%s' defined twice", v); + return DIRR_ERROR; + } + } + + *grptail = grp = nasm_malloc(sizeof(*grp)); + grp->next = NULL; + grptail = &grp->next; + grp->index = seg_alloc(); + grp->obj_index = obj_idx; + grp->nindices = grp->nentries = 0; + grp->name = NULL; + + obj_grp_needs_update = grp; + backend_label(v, grp->index + 1, 0L); + obj_grp_needs_update = NULL; + + while (*q) { + p = q; + while (*q && !nasm_isspace(*q)) + q++; + if (nasm_isspace(*q)) { + *q++ = '\0'; + while (*q && nasm_isspace(*q)) + q++; + } + /* + * Now p contains a segment name. Find it. + */ + for (seg = seghead; seg; seg = seg->next) + if (!strcmp(seg->name, p)) + break; + if (seg) { + /* + * We have a segment index. Shift a name entry + * to the end of the array to make room. + */ + grp->segs[grp->nentries++] = grp->segs[grp->nindices]; + grp->segs[grp->nindices++].index = seg->obj_index; + if (seg->grp) + nasm_warn(WARN_OTHER, "segment `%s' is already part of" + " a group: first one takes precedence", + seg->name); + else + seg->grp = grp; + } else { + /* + * We have an as-yet undefined segment. + * Remember its name, for later. + */ + grp->segs[grp->nentries++].name = nasm_strdup(p); + } + } + + /* + * Walk through the list of externals with unresolved + * default-WRT clauses, and resolve any that point at + * this group. + */ + extp = &dws; + while (*extp) { + if ((*extp)->defwrt_type == DEFWRT_STRING && + !strcmp((*extp)->defwrt_ptr.string, grp->name)) { + nasm_free((*extp)->defwrt_ptr.string); + (*extp)->defwrt_type = DEFWRT_GROUP; + (*extp)->defwrt_ptr.grp = grp; + *extp = (*extp)->next_dws; + } else + extp = &(*extp)->next_dws; + } + } + return DIRR_OK; + } + case D_UPPERCASE: + obj_uppercase = true; + return DIRR_OK; + + case D_IMPORT: + { + char *q, *extname, *libname, *impname; + + if (!pass_first()) /* XXX */ + return DIRR_OK; + extname = q = value; + while (*q && !nasm_isspace(*q)) + q++; + if (nasm_isspace(*q)) { + *q++ = '\0'; + while (*q && nasm_isspace(*q)) + q++; + } + + libname = q; + while (*q && !nasm_isspace(*q)) + q++; + if (nasm_isspace(*q)) { + *q++ = '\0'; + while (*q && nasm_isspace(*q)) + q++; + } + + impname = q; + + if (!*extname || !*libname) + nasm_nonfatal("`import' directive requires symbol name" + " and library name"); + else { + struct ImpDef *imp; + bool err = false; + + imp = *imptail = nasm_malloc(sizeof(struct ImpDef)); + imptail = &imp->next; + imp->next = NULL; + imp->extname = nasm_strdup(extname); + imp->libname = nasm_strdup(libname); + imp->impindex = readnum(impname, &err); + if (!*impname || err) + imp->impname = nasm_strdup(impname); + else + imp->impname = NULL; + } + + return DIRR_OK; + } + case D_EXPORT: + { + char *q, *extname, *intname, *v; + struct ExpDef *export; + int flags = 0; + unsigned int ordinal = 0; + + if (!pass_first()) + return DIRR_OK; /* ignore in pass two */ + intname = q = value; + while (*q && !nasm_isspace(*q)) + q++; + if (nasm_isspace(*q)) { + *q++ = '\0'; + while (*q && nasm_isspace(*q)) + q++; + } + + extname = q; + while (*q && !nasm_isspace(*q)) + q++; + if (nasm_isspace(*q)) { + *q++ = '\0'; + while (*q && nasm_isspace(*q)) + q++; + } + + if (!*intname) { + nasm_nonfatal("`export' directive requires export name"); + return DIRR_OK; + } + if (!*extname) { + extname = intname; + intname = ""; + } + while (*q) { + v = q; + while (*q && !nasm_isspace(*q)) + q++; + if (nasm_isspace(*q)) { + *q++ = '\0'; + while (*q && nasm_isspace(*q)) + q++; + } + if (!nasm_stricmp(v, "resident")) + flags |= EXPDEF_FLAG_RESIDENT; + else if (!nasm_stricmp(v, "nodata")) + flags |= EXPDEF_FLAG_NODATA; + else if (!nasm_strnicmp(v, "parm=", 5)) { + bool err = false; + flags |= EXPDEF_MASK_PARMCNT & readnum(v + 5, &err); + if (err) { + nasm_nonfatal("value `%s' for `parm' is non-numeric", v + 5); + return DIRR_ERROR; + } + } else { + bool err = false; + ordinal = readnum(v, &err); + if (err) { + nasm_nonfatal("unrecognised export qualifier `%s'", v); + return DIRR_ERROR; + } + flags |= EXPDEF_FLAG_ORDINAL; + } + } + + export = *exptail = nasm_malloc(sizeof(struct ExpDef)); + exptail = &export->next; + export->next = NULL; + export->extname = nasm_strdup(extname); + export->intname = nasm_strdup(intname); + export->ordinal = ordinal; + export->flags = flags; + + return DIRR_OK; + } + default: + return DIRR_UNKNOWN; + } +} + +static void obj_sectalign(int32_t seg, unsigned int value) +{ + struct Segment *s; + + list_for_each(s, seghead) { + if (s->index == seg) + break; + } + + /* + * it should not be too big value + * and applied on non-absolute sections + */ + if (!s || !is_power2(value) || + value > 4096 || s->align >= SEG_ABS) + return; + + /* + * FIXME: No code duplication please + * consider making helper for this + * mapping since section handler has + * to do the same + */ + switch (value) { + case 8: + value = 16; + break; + case 32: + case 64: + case 128: + value = 256; + break; + case 512: + case 1024: + case 2048: + value = 4096; + break; + } + + if (s->align < (int)value) + s->align = value; +} + +static int32_t obj_segbase(int32_t segment) +{ + struct Segment *seg; + + /* + * Find the segment in our list. + */ + for (seg = seghead; seg; seg = seg->next) + if (seg->index == segment - 1) + break; + + if (!seg) { + /* + * Might be an external with a default WRT. + */ + int32_t i = segment / 2; + struct ExtBack *eb = ebhead; + struct External *e; + + while (i >= EXT_BLKSIZ) { + if (eb) + eb = eb->next; + else + break; + i -= EXT_BLKSIZ; + } + if (eb) { + e = eb->exts[i]; + if (!e) { + /* Not available yet, probably a forward reference */ + nasm_assert(!pass_final()); + return NO_SEG; + } + + switch (e->defwrt_type) { + case DEFWRT_NONE: + return segment; /* fine */ + case DEFWRT_SEGMENT: + return e->defwrt_ptr.seg->index + 1; + case DEFWRT_GROUP: + return e->defwrt_ptr.grp->index + 1; + default: + return NO_SEG; /* can't tell what it is */ + } + } + + return segment; /* not one of ours - leave it alone */ + } + + if (seg->align >= SEG_ABS) + return seg->align; /* absolute segment */ + if (seg->grp) + return seg->grp->index + 1; /* grouped segment */ + + return segment; /* no special treatment */ +} + +/* Get a file timestamp in MS-DOS format */ +static uint32_t obj_file_timestamp(const char *pathname) +{ + time_t t; + const struct tm *lt; + + if (!nasm_file_time(&t, pathname)) + return 0; + + lt = localtime(&t); + if (!lt) + return 0; + + if (lt->tm_year < 80 || lt->tm_year > 207) + return 0; /* Only years 1980-2107 representable */ + + return + ((uint32_t)lt->tm_sec >> 1) + + ((uint32_t)lt->tm_min << 5) + + ((uint32_t)lt->tm_hour << 11) + + ((uint32_t)lt->tm_mday << 16) + + (((uint32_t)lt->tm_mon + 1) << 21) + + (((uint32_t)lt->tm_year - 80) << 25); +} + +static void obj_write_file(void) +{ + struct Segment *seg, *entry_seg_ptr = 0; + struct FileName *fn; + struct LineNumber *ln; + struct Group *grp; + struct Public *pub, *loc; + struct External *ext; + struct ImpDef *imp; + struct ExpDef *export; + int lname_idx; + ObjRecord *orp; + const struct strlist_entry *depfile; + const bool debuginfo = (dfmt == &borland_debug_form); + + /* + * Write the THEADR module header. + */ + orp = obj_new(); + orp->type = THEADR; + obj_name(orp, obj_infile); + obj_emit2(orp); + + /* + * Write the NASM boast comment. + */ + orp->type = COMENT; + obj_rword(orp, dTRANSL); + obj_name(orp, nasm_comment()); + obj_emit2(orp); + + /* + * Output file dependency information + */ + if (!obj_nodepend && depend_list) { + strlist_for_each(depfile, depend_list) { + uint32_t ts; + + ts = obj_file_timestamp(depfile->str); + if (ts) { + orp->type = COMENT; + obj_rword(orp, dDEPFILE); + obj_dword(orp, ts); + obj_name(orp, depfile->str); + obj_emit2(orp); + } + } + } + + orp->type = COMENT; + /* + * Write the IMPDEF records, if any. + */ + for (imp = imphead; imp; imp = imp->next) { + obj_rword(orp, dOMFEXT); + obj_byte(orp, 1); /* subfunction 1: IMPDEF */ + if (imp->impname) + obj_byte(orp, 0); /* import by name */ + else + obj_byte(orp, 1); /* import by ordinal */ + obj_name(orp, imp->extname); + obj_name(orp, imp->libname); + if (imp->impname) + obj_name(orp, imp->impname); + else + obj_word(orp, imp->impindex); + obj_emit2(orp); + } + + /* + * Write the EXPDEF records, if any. + */ + for (export = exphead; export; export = export->next) { + obj_rword(orp, dOMFEXT); + obj_byte(orp, 2); /* subfunction 2: EXPDEF */ + obj_byte(orp, export->flags); + obj_name(orp, export->extname); + obj_name(orp, export->intname); + if (export->flags & EXPDEF_FLAG_ORDINAL) + obj_word(orp, export->ordinal); + obj_emit2(orp); + } + + /* we're using extended OMF if we put in debug info */ + if (debuginfo) { + orp->type = COMENT; + obj_rword(orp, dEXTENDED); + obj_emit2(orp); + } + + /* + * Write the first LNAMES record, containing LNAME one, which + * is null. Also initialize the LNAME counter. + */ + orp->type = LNAMES; + obj_byte(orp, 0); + lname_idx = 1; + /* + * Write some LNAMES for the segment names + */ + for (seg = seghead; seg; seg = seg->next) { + orp = obj_name(orp, seg->name); + if (seg->segclass) + orp = obj_name(orp, seg->segclass); + if (seg->overlay) + orp = obj_name(orp, seg->overlay); + obj_commit(orp); + } + /* + * Write some LNAMES for the group names + */ + for (grp = grphead; grp; grp = grp->next) { + orp = obj_name(orp, grp->name); + obj_commit(orp); + } + obj_emit(orp); + + /* + * Write the SEGDEF records. + */ + orp->type = SEGDEF; + for (seg = seghead; seg; seg = seg->next) { + int acbp; + uint32_t seglen = seg->currentpos; + + acbp = (seg->combine << 2); /* C field */ + + if (seg->use32) + acbp |= 0x01; /* P bit is Use32 flag */ + else if (seglen == 0x10000L) { + seglen = 0; /* This special case may be needed for old linkers */ + acbp |= 0x02; /* B bit */ + } + + /* A field */ + if (seg->align >= SEG_ABS) + /* acbp |= 0x00 */ ; + else if (seg->align >= 4096) { + if (seg->align > 4096) + nasm_nonfatal("segment `%s' requires more alignment" + " than OBJ format supports", seg->name); + acbp |= 0xC0; /* PharLap extension */ + } else if (seg->align >= 256) { + acbp |= 0x80; + } else if (seg->align >= 16) { + acbp |= 0x60; + } else if (seg->align >= 4) { + acbp |= 0xA0; + } else if (seg->align >= 2) { + acbp |= 0x40; + } else + acbp |= 0x20; + + obj_byte(orp, acbp); + if (seg->align & SEG_ABS) { + obj_x(orp, seg->align - SEG_ABS); /* Frame */ + obj_byte(orp, 0); /* Offset */ + } + obj_x(orp, seglen); + obj_index(orp, ++lname_idx); + obj_index(orp, seg->segclass ? ++lname_idx : 1); + obj_index(orp, seg->overlay ? ++lname_idx : 1); + obj_emit2(orp); + } + + /* + * Write the GRPDEF records. + */ + orp->type = GRPDEF; + for (grp = grphead; grp; grp = grp->next) { + int i; + + if (grp->nindices != grp->nentries) { + for (i = grp->nindices; i < grp->nentries; i++) { + nasm_nonfatal("group `%s' contains undefined segment" + " `%s'", grp->name, grp->segs[i].name); + nasm_free(grp->segs[i].name); + grp->segs[i].name = NULL; + } + } + obj_index(orp, ++lname_idx); + for (i = 0; i < grp->nindices; i++) { + obj_byte(orp, 0xFF); + obj_index(orp, grp->segs[i].index); + } + obj_emit2(orp); + } + + /* + * Write the PUBDEF records: first the ones in the segments, + * then the far-absolutes. + */ + orp->type = PUBDEF; + orp->ori = ori_pubdef; + for (seg = seghead; seg; seg = seg->next) { + orp->parm[0] = seg->grp ? seg->grp->obj_index : 0; + orp->parm[1] = seg->obj_index; + for (pub = seg->pubhead; pub; pub = pub->next) { + orp = obj_name(orp, pub->name); + orp = obj_x(orp, pub->offset); + orp = obj_byte(orp, 0); /* type index */ + obj_commit(orp); + } + obj_emit(orp); + } + orp->parm[0] = 0; + orp->parm[1] = 0; + for (pub = fpubhead; pub; pub = pub->next) { /* pub-crawl :-) */ + if (orp->parm[2] != (uint32_t)pub->segment) { + obj_emit(orp); + orp->parm[2] = pub->segment; + } + orp = obj_name(orp, pub->name); + orp = obj_x(orp, pub->offset); + orp = obj_byte(orp, 0); /* type index */ + obj_commit(orp); + } + obj_emit(orp); + + /* + * Write the EXTDEF and COMDEF records, in order. + */ + orp->ori = ori_null; + for (ext = exthead; ext; ext = ext->next) { + if (ext->commonsize == 0) { + if (orp->type != EXTDEF) { + obj_emit(orp); + orp->type = EXTDEF; + } + orp = obj_name(orp, ext->name); + orp = obj_index(orp, 0); + } else { + if (orp->type != COMDEF) { + obj_emit(orp); + orp->type = COMDEF; + } + orp = obj_name(orp, ext->name); + orp = obj_index(orp, 0); + if (ext->commonelem) { + orp = obj_byte(orp, 0x61); /* far communal */ + orp = obj_value(orp, (ext->commonsize / ext->commonelem)); + orp = obj_value(orp, ext->commonelem); + } else { + orp = obj_byte(orp, 0x62); /* near communal */ + orp = obj_value(orp, ext->commonsize); + } + } + obj_commit(orp); + } + obj_emit(orp); + + /* + * Write a COMENT record stating that the linker's first pass + * may stop processing at this point. Exception is if our + * MODEND record specifies a start point, in which case, + * according to some variants of the documentation, this COMENT + * should be omitted. So we'll omit it just in case. + * But, TASM puts it in all the time so if we are using + * TASM debug stuff we are putting it in + */ + if (debuginfo || obj_entry_seg == NO_SEG) { + orp->type = COMENT; + obj_rword(orp, dLINKPASS); + obj_byte(orp, 1); + obj_emit2(orp); + } + + /* + * 1) put out the compiler type + * 2) Put out the type info. The only type we are using is near label #19 + */ + if (debuginfo) { + int i; + struct Array *arrtmp = arrhead; + orp->type = COMENT; + obj_rword(orp, dCOMPDEF); + obj_byte(orp, 4); + obj_byte(orp, 0); + obj_emit2(orp); + + obj_rword(orp, dTYPEDEF); + obj_word(orp, 0x18); /* type # for linking */ + obj_word(orp, 6); /* size of type */ + obj_byte(orp, 0x2a); /* absolute type for debugging */ + obj_emit2(orp); + obj_rword(orp, dTYPEDEF); + obj_word(orp, 0x19); /* type # for linking */ + obj_word(orp, 0); /* size of type */ + obj_byte(orp, 0x24); /* absolute type for debugging */ + obj_byte(orp, 0); /* near/far specifier */ + obj_emit2(orp); + obj_rword(orp, dTYPEDEF); + obj_word(orp, 0x1A); /* type # for linking */ + obj_word(orp, 0); /* size of type */ + obj_byte(orp, 0x24); /* absolute type for debugging */ + obj_byte(orp, 1); /* near/far specifier */ + obj_emit2(orp); + obj_rword(orp, dTYPEDEF); + obj_word(orp, 0x1b); /* type # for linking */ + obj_word(orp, 0); /* size of type */ + obj_byte(orp, 0x23); /* absolute type for debugging */ + obj_byte(orp, 0); + obj_byte(orp, 0); + obj_byte(orp, 0); + obj_emit2(orp); + obj_rword(orp, dTYPEDEF); + obj_word(orp, 0x1c); /* type # for linking */ + obj_word(orp, 0); /* size of type */ + obj_byte(orp, 0x23); /* absolute type for debugging */ + obj_byte(orp, 0); + obj_byte(orp, 4); + obj_byte(orp, 0); + obj_emit2(orp); + obj_rword(orp, dTYPEDEF); + obj_word(orp, 0x1d); /* type # for linking */ + obj_word(orp, 0); /* size of type */ + obj_byte(orp, 0x23); /* absolute type for debugging */ + obj_byte(orp, 0); + obj_byte(orp, 1); + obj_byte(orp, 0); + obj_emit2(orp); + obj_rword(orp, dTYPEDEF); + obj_word(orp, 0x1e); /* type # for linking */ + obj_word(orp, 0); /* size of type */ + obj_byte(orp, 0x23); /* absolute type for debugging */ + obj_byte(orp, 0); + obj_byte(orp, 5); + obj_byte(orp, 0); + obj_emit2(orp); + + /* put out the array types */ + for (i = ARRAYBOT; i < arrindex; i++) { + obj_rword(orp, dTYPEDEF); + obj_word(orp, i); /* type # for linking */ + obj_word(orp, arrtmp->size); /* size of type */ + obj_byte(orp, 0x1A); /* absolute type for debugging (array) */ + obj_byte(orp, arrtmp->basetype); /* base type */ + obj_emit2(orp); + arrtmp = arrtmp->next; + } + } + /* + * write out line number info with a LINNUM record + * switch records when we switch segments, and output the + * file in a pseudo-TASM fashion. The record switch is naive; that + * is that one file may have many records for the same segment + * if there are lots of segment switches + */ + if (fnhead && debuginfo) { + seg = fnhead->lnhead->segment; + + for (fn = fnhead; fn; fn = fn->next) { + /* write out current file name */ + orp->type = COMENT; + orp->ori = ori_null; + obj_rword(orp, dFILNAME); + obj_byte(orp, 0); + obj_name(orp, fn->name); + obj_dword(orp, 0); + obj_emit2(orp); + + /* write out line numbers this file */ + + orp->type = LINNUM; + orp->ori = ori_linnum; + for (ln = fn->lnhead; ln; ln = ln->next) { + if (seg != ln->segment) { + /* if we get here have to flush the buffer and start + * a new record for a new segment + */ + seg = ln->segment; + obj_emit(orp); + } + orp->parm[0] = seg->grp ? seg->grp->obj_index : 0; + orp->parm[1] = seg->obj_index; + orp = obj_word(orp, ln->lineno); + orp = obj_x(orp, ln->offset); + obj_commit(orp); + } + obj_emit(orp); + } + } + /* + * we are going to locate the entry point segment now + * rather than wait until the MODEND record, because, + * then we can output a special symbol to tell where the + * entry point is. + * + */ + if (obj_entry_seg != NO_SEG) { + for (seg = seghead; seg; seg = seg->next) { + if (seg->index == obj_entry_seg) { + entry_seg_ptr = seg; + break; + } + } + if (!seg) + nasm_nonfatal("entry point is not in this module"); + } + + /* + * get ready to put out symbol records + */ + orp->type = COMENT; + orp->ori = ori_local; + + /* + * put out a symbol for the entry point + * no dots in this symbol, because, borland does + * not (officially) support dots in label names + * and I don't know what various versions of TLINK will do + */ + if (debuginfo && obj_entry_seg != NO_SEG) { + orp = obj_name(orp, "start_of_program"); + orp = obj_word(orp, 0x19); /* type: near label */ + orp = obj_index(orp, seg->grp ? seg->grp->obj_index : 0); + orp = obj_index(orp, seg->obj_index); + orp = obj_x(orp, obj_entry_ofs); + obj_commit(orp); + } + + /* + * put out the local labels + */ + for (seg = seghead; seg && debuginfo; seg = seg->next) { + /* labels this seg */ + for (loc = seg->lochead; loc; loc = loc->next) { + orp = obj_name(orp, loc->name); + orp = obj_word(orp, loc->type); + orp = obj_index(orp, seg->grp ? seg->grp->obj_index : 0); + orp = obj_index(orp, seg->obj_index); + orp = obj_x(orp, loc->offset); + obj_commit(orp); + } + } + if (orp->used) + obj_emit(orp); + + /* + * Write the LEDATA/FIXUPP pairs. + */ + for (seg = seghead; seg; seg = seg->next) { + obj_emit(seg->orp); + nasm_free(seg->orp); + } + + /* + * Write the MODEND module end marker. + */ + orp->type = obj_use32 ? MODE32 : MODEND; + orp->ori = ori_null; + if (entry_seg_ptr) { + orp->type = entry_seg_ptr->use32 ? MODE32 : MODEND; + obj_byte(orp, 0xC1); + seg = entry_seg_ptr; + if (seg->grp) { + obj_byte(orp, 0x10); + obj_index(orp, seg->grp->obj_index); + } else { + /* + * the below changed to prevent TLINK crashing. + * Previous more efficient version read: + * + * obj_byte (orp, 0x50); + */ + obj_byte(orp, 0x00); + obj_index(orp, seg->obj_index); + } + obj_index(orp, seg->obj_index); + obj_x(orp, obj_entry_ofs); + } else + obj_byte(orp, 0); + obj_emit2(orp); + nasm_free(orp); +} + +static void obj_fwrite(ObjRecord * orp) +{ + unsigned int cksum, len; + uint8_t *ptr; + + cksum = orp->type; + if (orp->x_size == 32) + cksum |= 1; + fputc(cksum, ofile); + len = orp->committed + 1; + cksum += (len & 0xFF) + ((len >> 8) & 0xFF); + fwriteint16_t(len, ofile); + nasm_write(orp->buf, len-1, ofile); + for (ptr = orp->buf; --len; ptr++) + cksum += *ptr; + fputc((-cksum) & 0xFF, ofile); +} + +static enum directive_result +obj_pragma(const struct pragma *pragma) +{ + switch (pragma->opcode) { + case D_NODEPEND: + obj_nodepend = true; + break; + + default: + break; + } + + return DIRR_OK; +} + +extern macros_t obj_stdmac[]; + +static void dbgbi_init(void) +{ + fnhead = NULL; + fntail = &fnhead; + arrindex = ARRAYBOT; + arrhead = NULL; + arrtail = &arrhead; +} +static void dbgbi_cleanup(void) +{ + struct Segment *segtmp; + while (fnhead) { + struct FileName *fntemp = fnhead; + while (fnhead->lnhead) { + struct LineNumber *lntemp = fnhead->lnhead; + fnhead->lnhead = lntemp->next; + nasm_free(lntemp); + } + fnhead = fnhead->next; + nasm_free(fntemp->name); + nasm_free(fntemp); + } + for (segtmp = seghead; segtmp; segtmp = segtmp->next) { + while (segtmp->lochead) { + struct Public *loctmp = segtmp->lochead; + segtmp->lochead = loctmp->next; + nasm_free(loctmp->name); + nasm_free(loctmp); + } + } + while (arrhead) { + struct Array *arrtmp = arrhead; + arrhead = arrhead->next; + nasm_free(arrtmp); + } +} + +static void dbgbi_linnum(const char *lnfname, int32_t lineno, int32_t segto) +{ + struct FileName *fn; + struct LineNumber *ln; + struct Segment *seg; + + if (segto == NO_SEG) + return; + + /* + * If `any_segs' is still false, we must define a default + * segment. + */ + if (!any_segs) { + int tempint = 0; + if (segto != obj_segment("__NASMDEFSEG", &tempint)) + nasm_panic("strange segment conditions in OBJ driver"); + } + + /* + * Find the segment we are targeting. + */ + for (seg = seghead; seg; seg = seg->next) + if (seg->index == segto) + break; + if (!seg) + nasm_panic("lineno directed to nonexistent segment?"); + +/* for (fn = fnhead; fn; fn = fnhead->next) */ + for (fn = fnhead; fn; fn = fn->next) /* fbk - Austin Lunnen - John Fine */ + if (!nasm_stricmp(lnfname, fn->name)) + break; + if (!fn) { + fn = nasm_malloc(sizeof(*fn)); + fn->name = nasm_malloc(strlen(lnfname) + 1); + strcpy(fn->name, lnfname); + fn->lnhead = NULL; + fn->lntail = &fn->lnhead; + fn->next = NULL; + *fntail = fn; + fntail = &fn->next; + } + ln = nasm_malloc(sizeof(*ln)); + ln->segment = seg; + ln->offset = seg->currentpos; + ln->lineno = lineno; + ln->next = NULL; + *fn->lntail = ln; + fn->lntail = &ln->next; + +} +static void dbgbi_deflabel(char *name, int32_t segment, + int64_t offset, int is_global, char *special) +{ + struct Segment *seg; + + (void)special; + + /* + * Note: ..[^@] special symbols are filtered in labels.c + */ + + /* + * If it's a special-retry from pass two, discard it. + */ + if (is_global == 3) + return; + + /* + * Case (i): + */ + if (obj_seg_needs_update) { + return; + } else if (obj_grp_needs_update) { + return; + } + if (segment < SEG_ABS && segment != NO_SEG && segment % 2) + return; + + if (segment >= SEG_ABS || segment == NO_SEG) { + return; + } + + /* + * If `any_segs' is still false, we might need to define a + * default segment, if they're trying to declare a label in + * `first_seg'. But the label should exist due to a prior + * call to obj_deflabel so we can skip that. + */ + + for (seg = seghead; seg; seg = seg->next) + if (seg->index == segment) { + struct Public *loc = nasm_malloc(sizeof(*loc)); + /* + * Case (ii). Maybe MODPUB someday? + */ + last_defined = *seg->loctail = loc; + seg->loctail = &loc->next; + loc->next = NULL; + loc->name = nasm_strdup(name); + loc->offset = offset; + } +} +static void dbgbi_typevalue(int32_t type) +{ + int vsize; + int elem = TYM_ELEMENTS(type); + type = TYM_TYPE(type); + + if (!last_defined) + return; + + switch (type) { + case TY_BYTE: + last_defined->type = 8; /* uint8_t */ + vsize = 1; + break; + case TY_WORD: + last_defined->type = 10; /* unsigned word */ + vsize = 2; + break; + case TY_DWORD: + last_defined->type = 12; /* unsigned dword */ + vsize = 4; + break; + case TY_FLOAT: + last_defined->type = 14; /* float */ + vsize = 4; + break; + case TY_QWORD: + last_defined->type = 15; /* qword */ + vsize = 8; + break; + case TY_TBYTE: + last_defined->type = 16; /* TBYTE */ + vsize = 10; + break; + default: + last_defined->type = 0x19; /* label */ + vsize = 0; + break; + } + + if (elem > 1) { + struct Array *arrtmp = nasm_malloc(sizeof(*arrtmp)); + int vtype = last_defined->type; + arrtmp->size = vsize * elem; + arrtmp->basetype = vtype; + arrtmp->next = NULL; + last_defined->type = arrindex++; + *arrtail = arrtmp; + arrtail = &(arrtmp->next); + } + last_defined = NULL; +} +static void dbgbi_output(int output_type, void *param) +{ + (void)output_type; + (void)param; +} +static const struct dfmt borland_debug_form = { + "Borland Debug Records", + "borland", + dbgbi_init, + dbgbi_linnum, + dbgbi_deflabel, + NULL, /* .debug_smacros */ + NULL, /* .debug_include */ + NULL, /* .debug_mmacros */ + null_debug_directive, + dbgbi_typevalue, + dbgbi_output, + dbgbi_cleanup, + NULL /* pragma list */ +}; + +static const struct dfmt * const borland_debug_arr[3] = { + &borland_debug_form, + &null_debug_form, + NULL +}; + +static const struct pragma_facility obj_pragma_list[] = { + { NULL, obj_pragma } +}; + +const struct ofmt of_obj = { + "Intel/Microsoft OMF (MS-DOS, OS/2, Win16)", + "obj", + ".obj", + 0, + 32, + borland_debug_arr, + &borland_debug_form, + obj_stdmac, + obj_init, + null_reset, + nasm_do_legacy_output, + obj_out, + obj_deflabel, + obj_segment, + NULL, + obj_sectalign, + obj_segbase, + obj_directive, + obj_cleanup, + obj_pragma_list +}; +#endif /* OF_OBJ */ diff --git a/vere/ext/nasm/output/outobj.mac b/vere/ext/nasm/output/outobj.mac new file mode 100644 index 0000000..09158f2 --- /dev/null +++ b/vere/ext/nasm/output/outobj.mac @@ -0,0 +1,49 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2009 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +OUT: obj +%define __?SECT?__ [section .text] +%imacro group 1+.nolist +[group %1] +%endmacro +%imacro uppercase 0+.nolist +[uppercase %1] +%endmacro +%imacro export 1+.nolist +[export %1] +%endmacro +%imacro import 1+.nolist +[import %1] +%endmacro +%macro __?NASM_CDecl?__ 1 +%endmacro diff --git a/vere/ext/nasm/output/pecoff.h b/vere/ext/nasm/output/pecoff.h new file mode 100644 index 0000000..b99bed0 --- /dev/null +++ b/vere/ext/nasm/output/pecoff.h @@ -0,0 +1,542 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2020 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef PECOFF_H +#define PECOFF_H + +/* + * Microsoft Portable Executable and Common Object + * File Format Specification + * + * Revision 8.1 – February 15, 2008 + */ + +/* + * Machine types + */ +#define IMAGE_FILE_MACHINE_UNKNOWN 0x0000 +#define IMAGE_FILE_MACHINE_AM33 0x01d3 +#define IMAGE_FILE_MACHINE_AMD64 0x8664 +#define IMAGE_FILE_MACHINE_EBC 0x0ebc +#define IMAGE_FILE_MACHINE_M32R 0x9041 +#define IMAGE_FILE_MACHINE_ALPHA 0x0184 +#define IMAGE_FILE_MACHINE_ARM 0x01c0 +#define IMAGE_FILE_MACHINE_ALPHA64 0x0284 +#define IMAGE_FILE_MACHINE_I386 0x014c +#define IMAGE_FILE_MACHINE_IA64 0x0200 +#define IMAGE_FILE_MACHINE_M68K 0x0268 +#define IMAGE_FILE_MACHINE_MIPS16 0x0266 +#define IMAGE_FILE_MACHINE_MIPSFPU 0x0366 +#define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466 +#define IMAGE_FILE_MACHINE_POWERPC 0x01f0 +#define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1 +#define IMAGE_FILE_MACHINE_R3000 0x0162 +#define IMAGE_FILE_MACHINE_R4000 0x0166 +#define IMAGE_FILE_MACHINE_R10000 0x0168 +#define IMAGE_FILE_MACHINE_SH3 0x01a2 +#define IMAGE_FILE_MACHINE_SH3DSP 0x01a3 +#define IMAGE_FILE_MACHINE_SH4 0x01a6 +#define IMAGE_FILE_MACHINE_SH5 0x01a8 +#define IMAGE_FILE_MACHINE_THUMB 0x01c2 +#define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169 +#define IMAGE_FILE_MACHINE_MASK 0xffff + +/* + * Characteristics + */ +#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 +#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 +#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 +#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 +#define IMAGE_FILE_AGGRESSIVE_WS_TRIM 0x0010 +#define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 +#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 +#define IMAGE_FILE_32BIT_MACHINE 0x0100 +#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 +#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 +#define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 +#define IMAGE_FILE_SYSTEM 0x1000 +#define IMAGE_FILE_DLL 0x2000 +#define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 +#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 + +/* + * Windows subsystem + */ +#define IMAGE_SUBSYSTEM_UNKNOWN 0 +#define IMAGE_SUBSYSTEM_NATIVE 1 +#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 +#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 +#define IMAGE_SUBSYSTEM_POSIX_CUI 7 +#define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9 +#define IMAGE_SUBSYSTEM_EFI_APPLICATION 10 +#define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 +#define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 +#define IMAGE_SUBSYSTEM_EFI_ROM 13 +#define IMAGE_SUBSYSTEM_XBOX 14 + +/* + * DLL characteristics + */ +#define IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE 0x0040 +#define IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY 0x0080 +#define IMAGE_DLL_CHARACTERISTICS_NX_COMPAT 0x0100 +#define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200 +#define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400 +#define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800 +#define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000 +#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000 + +/* + * Section flags + */ +#define IMAGE_SCN_TYPE_REG 0x00000000 +#define IMAGE_SCN_TYPE_DSECT 0x00000001 +#define IMAGE_SCN_TYPE_NOLOAD 0x00000002 +#define IMAGE_SCN_TYPE_GROUP 0x00000004 +#define IMAGE_SCN_TYPE_NO_PAD 0x00000008 +#define IMAGE_SCN_TYPE_COPY 0x00000010 + +#define IMAGE_SCN_CNT_CODE 0x00000020 +#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 +#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 + +#define IMAGE_SCN_LNK_OTHER 0x00000100 +#define IMAGE_SCN_LNK_INFO 0x00000200 +#define IMAGE_SCN_TYPE_OVER 0x00000400 +#define IMAGE_SCN_LNK_REMOVE 0x00000800 +#define IMAGE_SCN_LNK_COMDAT 0x00001000 + +#define IMAGE_SCN_MAX_RELOC 0xffff + +#define IMAGE_SCN_MEM_FARDATA 0x00008000 +#define IMAGE_SCN_MEM_PURGEABLE 0x00020000 +#define IMAGE_SCN_MEM_16BIT 0x00020000 +#define IMAGE_SCN_MEM_LOCKED 0x00040000 +#define IMAGE_SCN_MEM_PRELOAD 0x00080000 + +#define IMAGE_SCN_ALIGN_1BYTES 0x00100000 +#define IMAGE_SCN_ALIGN_2BYTES 0x00200000 +#define IMAGE_SCN_ALIGN_4BYTES 0x00300000 +#define IMAGE_SCN_ALIGN_8BYTES 0x00400000 +#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 +#define IMAGE_SCN_ALIGN_32BYTES 0x00600000 +#define IMAGE_SCN_ALIGN_64BYTES 0x00700000 +#define IMAGE_SCN_ALIGN_128BYTES 0x00800000 +#define IMAGE_SCN_ALIGN_256BYTES 0x00900000 +#define IMAGE_SCN_ALIGN_512BYTES 0x00a00000 +#define IMAGE_SCN_ALIGN_1024BYTES 0x00b00000 +#define IMAGE_SCN_ALIGN_2048BYTES 0x00c00000 +#define IMAGE_SCN_ALIGN_4096BYTES 0x00d00000 +#define IMAGE_SCN_ALIGN_8192BYTES 0x00e00000 +#define IMAGE_SCN_ALIGN_MASK 0x00f00000 + +#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 +#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 +#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 +#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 +#define IMAGE_SCN_MEM_SHARED 0x10000000 +#define IMAGE_SCN_MEM_EXECUTE 0x20000000 +#define IMAGE_SCN_MEM_READ 0x40000000 +#define IMAGE_SCN_MEM_WRITE 0x80000000 + +/* + * Relocation type x86-64 + */ +#define IMAGE_REL_AMD64_ABSOLUTE 0x0000 +#define IMAGE_REL_AMD64_ADDR64 0x0001 +#define IMAGE_REL_AMD64_ADDR32 0x0002 +#define IMAGE_REL_AMD64_ADDR32NB 0x0003 +#define IMAGE_REL_AMD64_REL32 0x0004 +#define IMAGE_REL_AMD64_REL32_1 0x0005 +#define IMAGE_REL_AMD64_REL32_2 0x0006 +#define IMAGE_REL_AMD64_REL32_3 0x0007 +#define IMAGE_REL_AMD64_REL32_4 0x0008 +#define IMAGE_REL_AMD64_REL32_5 0x0009 +#define IMAGE_REL_AMD64_SECTION 0x000a +#define IMAGE_REL_AMD64_SECREL 0x000b +#define IMAGE_REL_AMD64_SECREL7 0x000c +#define IMAGE_REL_AMD64_TOKEN 0x000d +#define IMAGE_REL_AMD64_SREL32 0x000e +#define IMAGE_REL_AMD64_PAIR 0x000f +#define IMAGE_REL_AMD64_SSPAN32 0x0010 + +/* + * Relocation types i386 + */ +#define IMAGE_REL_I386_ABSOLUTE 0x0000 +#define IMAGE_REL_I386_DIR16 0x0001 +#define IMAGE_REL_I386_REL16 0x0002 +#define IMAGE_REL_I386_DIR32 0x0006 +#define IMAGE_REL_I386_DIR32NB 0x0007 +#define IMAGE_REL_I386_SEG12 0x0009 +#define IMAGE_REL_I386_SECTION 0x000a +#define IMAGE_REL_I386_SECREL 0x000b +#define IMAGE_REL_I386_TOKEN 0x000c +#define IMAGE_REL_I386_SECREL7 0x000d +#define IMAGE_REL_I386_REL32 0x0014 + +/* + * Relocation types ARM + */ +#define IMAGE_REL_ARM_ABSOLUTE 0x0000 +#define IMAGE_REL_ARM_ADDR32 0x0001 +#define IMAGE_REL_ARM_ADDR32NB 0x0002 +#define IMAGE_REL_ARM_BRANCH24 0x0003 +#define IMAGE_REL_ARM_BRANCH11 0x0004 +#define IMAGE_REL_ARM_SECTION 0x000e +#define IMAGE_REL_ARM_SECREL 0x000f + +/* + * Relocation types Hitachi SuperH + */ +#define IMAGE_REL_SH3_ABSOLUTE 0x0000 +#define IMAGE_REL_SH3_DIRECT16 0x0001 +#define IMAGE_REL_SH3_DIRECT32 0x0002 +#define IMAGE_REL_SH3_DIRECT8 0x0003 +#define IMAGE_REL_SH3_DIRECT8_WORD 0x0004 +#define IMAGE_REL_SH3_DIRECT8_LONG 0x0005 +#define IMAGE_REL_SH3_DIRECT4 0x0006 +#define IMAGE_REL_SH3_DIRECT4_WORD 0x0007 +#define IMAGE_REL_SH3_DIRECT4_LONG 0x0008 +#define IMAGE_REL_SH3_PCREL8_WORD 0x0009 +#define IMAGE_REL_SH3_PCREL8_LONG 0x000a +#define IMAGE_REL_SH3_PCREL12_WORD 0x000b +#define IMAGE_REL_SH3_STARTOF_SECTION 0x000c +#define IMAGE_REL_SH3_SIZEOF_SECTION 0x000d +#define IMAGE_REL_SH3_SECTION 0x000e +#define IMAGE_REL_SH3_SECREL 0x000f +#define IMAGE_REL_SH3_DIRECT32_NB 0x0010 +#define IMAGE_REL_SH3_GPREL4_LONG 0x0011 +#define IMAGE_REL_SH3_TOKEN 0x0012 +#define IMAGE_REL_SHM_PCRELPT 0x0013 +#define IMAGE_REL_SHM_REFLO 0x0014 +#define IMAGE_REL_SHM_REFHALF 0x0015 +#define IMAGE_REL_SHM_RELLO 0x0016 +#define IMAGE_REL_SHM_RELHALF 0x0017 +#define IMAGE_REL_SHM_PAIR 0x0018 +#define IMAGE_REL_SHM_NOMODE 0x8000 + +/* + * Relocation types IBM PowerPC processors + */ +#define IMAGE_REL_PPC_ABSOLUTE 0x0000 +#define IMAGE_REL_PPC_ADDR64 0x0001 +#define IMAGE_REL_PPC_ADDR32 0x0002 +#define IMAGE_REL_PPC_ADDR24 0x0003 +#define IMAGE_REL_PPC_ADDR16 0x0004 +#define IMAGE_REL_PPC_ADDR14 0x0005 +#define IMAGE_REL_PPC_REL24 0x0006 +#define IMAGE_REL_PPC_REL14 0x0007 +#define IMAGE_REL_PPC_ADDR32NB 0x000a +#define IMAGE_REL_PPC_SECREL 0x000b +#define IMAGE_REL_PPC_SECTION 0x000c +#define IMAGE_REL_PPC_SECREL16 0x000f +#define IMAGE_REL_PPC_REFHI 0x0010 +#define IMAGE_REL_PPC_REFLO 0x0011 +#define IMAGE_REL_PPC_PAIR 0x0012 +#define IMAGE_REL_PPC_SECRELLO 0x0013 +#define IMAGE_REL_PPC_GPREL 0x0015 +#define IMAGE_REL_PPC_TOKEN 0x0016 + +/* + * Relocation types Intel Itanium processor family (IPF) + */ +#define IMAGE_REL_IA64_ABSOLUTE 0x0000 +#define IMAGE_REL_IA64_IMM14 0x0001 +#define IMAGE_REL_IA64_IMM22 0x0002 +#define IMAGE_REL_IA64_IMM64 0x0003 +#define IMAGE_REL_IA64_DIR32 0x0004 +#define IMAGE_REL_IA64_DIR64 0x0005 +#define IMAGE_REL_IA64_PCREL21B 0x0006 +#define IMAGE_REL_IA64_PCREL21M 0x0007 +#define IMAGE_REL_IA64_PCREL21F 0x0008 +#define IMAGE_REL_IA64_GPREL22 0x0009 +#define IMAGE_REL_IA64_LTOFF22 0x000a +#define IMAGE_REL_IA64_SECTION 0x000b +#define IMAGE_REL_IA64_SECREL22 0x000c +#define IMAGE_REL_IA64_SECREL64I 0x000d +#define IMAGE_REL_IA64_SECREL32 0x000e +#define IMAGE_REL_IA64_DIR32NB 0x0010 +#define IMAGE_REL_IA64_SREL14 0x0011 +#define IMAGE_REL_IA64_SREL22 0x0012 +#define IMAGE_REL_IA64_SREL32 0x0013 +#define IMAGE_REL_IA64_UREL32 0x0014 +#define IMAGE_REL_IA64_PCREL60X 0x0015 +#define IMAGE_REL_IA64_PCREL 60B 0x0016 +#define IMAGE_REL_IA64_PCREL60F 0x0017 +#define IMAGE_REL_IA64_PCREL60I 0x0018 +#define IMAGE_REL_IA64_PCREL60M 0x0019 +#define IMAGE_REL_IA64_IMMGPREL64 0x001a +#define IMAGE_REL_IA64_TOKEN 0x001b +#define IMAGE_REL_IA64_GPREL32 0x001c +#define IMAGE_REL_IA64_ADDEND 0x001f + +/* + * Relocation types MIPS Processors + */ +#define IMAGE_REL_MIPS_ABSOLUTE 0x0000 +#define IMAGE_REL_MIPS_REFHALF 0x0001 +#define IMAGE_REL_MIPS_REFWORD 0x0002 +#define IMAGE_REL_MIPS_JMPADDR 0x0003 +#define IMAGE_REL_MIPS_REFHI 0x0004 +#define IMAGE_REL_MIPS_REFLO 0x0005 +#define IMAGE_REL_MIPS_GPREL 0x0006 +#define IMAGE_REL_MIPS_LITERAL 0x0007 +#define IMAGE_REL_MIPS_SECTION 0x000a +#define IMAGE_REL_MIPS_SECREL 0x000b +#define IMAGE_REL_MIPS_SECRELLO 0x000c +#define IMAGE_REL_MIPS_SECRELHI 0x000d +#define IMAGE_REL_MIPS_JMPADDR16 0x0010 +#define IMAGE_REL_MIPS_REFWORDNB 0x0022 +#define IMAGE_REL_MIPS_PAIR 0x0025 + +/* + * Relocation types Mitsubishi M32R + */ +#define IMAGE_REL_M32R_ABSOLUTE 0x0000 +#define IMAGE_REL_M32R_ADDR32 0x0001 +#define IMAGE_REL_M32R_ADDR32NB 0x0002 +#define IMAGE_REL_M32R_ADDR24 0x0003 +#define IMAGE_REL_M32R_GPREL16 0x0004 +#define IMAGE_REL_M32R_PCREL24 0x0005 +#define IMAGE_REL_M32R_PCREL16 0x0006 +#define IMAGE_REL_M32R_PCREL8 0x0007 +#define IMAGE_REL_M32R_REFHALF 0x0008 +#define IMAGE_REL_M32R_REFHI 0x0009 +#define IMAGE_REL_M32R_REFLO 0x000a +#define IMAGE_REL_M32R_PAIR 0x000b +#define IMAGE_REL_M32R_SECTION 0x000c +#define IMAGE_REL_M32R_SECREL 0x000d +#define IMAGE_REL_M32R_TOKEN 0x000e + +/* + * Section number values + */ +#define IMAGE_SYM_UNDEFINED 0 +#define IMAGE_SYM_ABSOLUTE -1 +#define IMAGE_SYM_DEBUG -2 + +/* + * Type representation + */ +#define IMAGE_SYM_TYPE_NULL 0 +#define IMAGE_SYM_TYPE_VOID 1 +#define IMAGE_SYM_TYPE_CHAR 2 +#define IMAGE_SYM_TYPE_SHORT 3 +#define IMAGE_SYM_TYPE_INT 4 +#define IMAGE_SYM_TYPE_LONG 5 +#define IMAGE_SYM_TYPE_FLOAT 6 +#define IMAGE_SYM_TYPE_DOUBLE 7 +#define IMAGE_SYM_TYPE_STRUCT 8 +#define IMAGE_SYM_TYPE_UNION 9 +#define IMAGE_SYM_TYPE_ENUM 10 +#define IMAGE_SYM_TYPE_MOE 11 +#define IMAGE_SYM_TYPE_BYTE 12 +#define IMAGE_SYM_TYPE_WORD 13 +#define IMAGE_SYM_TYPE_UINT 14 +#define IMAGE_SYM_TYPE_DWORD 15 + +#define IMAGE_SYM_DTYPE_NULL 0 +#define IMAGE_SYM_DTYPE_POINTER 1 +#define IMAGE_SYM_DTYPE_FUNCTION 2 +#define IMAGE_SYM_DTYPE_ARRAY 3 + +/* + * Storage class + */ +#define IMAGE_SYM_CLASS_END_OF_FUNCTION -1 +#define IMAGE_SYM_CLASS_NULL 0 +#define IMAGE_SYM_CLASS_AUTOMATIC 1 +#define IMAGE_SYM_CLASS_EXTERNAL 2 +#define IMAGE_SYM_CLASS_STATIC 3 +#define IMAGE_SYM_CLAS S_REGISTER 4 +#define IMAGE_SYM_CLASS_EXTERNAL_DEF 5 +#define IMAGE_SYM_CLASS_LABEL 6 +#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7 +#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8 +#define IMAGE_SYM_CLASS_ARGUMENT 9 +#define IMAGE_SYM_CLASS_STRUCT_TAG 10 +#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11 +#define IMAGE_SYM_CLASS_UNION_TAG 12 +#define IMAGE_SYM_CLASS_TYPE_DEFINITION 13 +#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14 +#define IMAGE_SYM_CLASS_ENUM_TAG 15 +#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16 +#define IMAGE_SYM_CLASS_REGISTER_PARAM 17 +#define IMAGE_SYM_CLASS_BIT_FIELD 18 +#define IMAGE_SYM_CLASS_BLOCK 100 +#define IMAGE_SYM_CLASS_FUNCTION 101 +#define IMAGE_SYM_CLASS_END_OF_STRUCT 102 +#define IMAGE_SYM_CLASS_FILE 103 +#define IMAGE_SYM_CLASS_SECTION 104 +#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105 +#define IMAGE_SYM_CLASS_CLR_TOKEN 107 + +/* + * COMDAT sections + */ +#define IMAGE_COMDAT_SELECT_NODUPLICATES 1 +#define IMAGE_COMDAT_SELECT_ANY 2 +#define IMAGE_COMDAT_SELECT_SAME_SIZE 3 +#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4 +#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5 +#define IMAGE_COMDAT_SELECT_LARGEST 6 + +/* + * Attribute certificate table + */ +#define WIN_CERT_REVISION_1_0 0x0100 +#define WIN_CERT_REVISION_2_0 0x0200 +#define WIN_CERT_TYPE_X509 0x0001 +#define WIN_CERT_TYPE_PKCS_SIGNED_DATA 0x0002 +#define WIN_CERT_TYPE_RESERVED_1 0x0003 +#define WIN_CERT_TYPE_TS_STACK_SIGNED 0x0004 + +/* + * Debug type + */ +#define IMAGE_DEBUG_TYPE_UNKNOWN 0 +#define IMAGE_DEBUG_TYPE_COFF 1 +#define IMAGE_DEBUG_TYPE_CODEVIEW 2 +#define IMAGE_DEBUG_TYPE_FPO 3 +#define IMAGE_DEBUG_TYPE_MISC 4 +#define IMAGE_DEBUG_TYPE_EXCEPTION 5 +#define IMAGE_DEBUG_TYPE_FIXUP 6 +#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 +#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 +#define IMAGE_DEBUG_TYP E_BORLAND 9 +#define IMAGE_DEBUG_TYPE_RESERVED10 10 +#define IMAGE_DEBUG_TYPE_CLSID 11 + +/* + * Base relocation types + */ +#define IMAGE_REL_BASED_ABSOLUTE 0 +#define IMAGE_REL_BASED_HIGH 1 +#define IMAGE_REL_BASED_LOW 2 +#define IMAGE_REL_BASED_HIGHLOW 3 +#define IMAGE_REL_BASED_HIGHADJ 4 +#define IMAGE_REL_BASED_MIPS_JMPADDR 5 +#define IMAGE_REL_BASED_MIPS_JMPADDR16 9 +#define IMAGE_REL_BASED_DIR64 10 + +/* + * TLS callback functions + */ +#define DLL_PROCESS_ATTACH 1 +#define DLL_THREAD_ATTACH 2 +#define DLL_THREAD_DETACH 3 +#define DLL_PROCESS_DETACH 0 + +/* + * Import Type + */ +#define IMPORT_CODE 0 +#define IMPORT_DATA 1 +#define IMPORT_CONST 2 + +/* + * Import name type + */ +#define IMPORT_ORDINAL 0 +#define IMPORT_NAME 1 +#define IMPORT_NAME_NOPREFIX 2 +#define IMPORT_NAME_UNDECORATE 3 + +struct coff_Section { + struct SAA *data; + uint32_t len; + int nrelocs; + int32_t index; + struct coff_Reloc *head, **tail; + uint32_t flags; /* section flags */ + uint32_t align_flags; /* user-specified alignment flags */ + uint32_t sectalign_flags; /* minimum alignment from sectalign */ + char *name; + int32_t namepos; /* Offset of name into the strings table */ + int32_t pos, relpos; + int64_t pass_last_seen; + + /* comdat-related members */ + char *comdat_name; + uint32_t checksum; /* set only for comdat sections */ + int8_t comdat_selection; + int8_t comdat_symbol; /* is the "comdat name" in symbol table? */ + int32_t comdat_associated; /* associated section for selection==5 */ +}; + +struct coff_Reloc { + struct coff_Reloc *next; + int32_t address; /* relative to _start_ of section */ + int32_t symbol; /* symbol number */ + enum { + SECT_SYMBOLS, + ABS_SYMBOL, + REAL_SYMBOLS + } symbase; /* relocation for symbol number :) */ + int16_t type; +}; + +struct coff_Symbol { + char name[9]; + int32_t strpos; /* string table position of name */ + int32_t value; /* address, or COMMON variable size */ + int section; /* section number where it's defined + * - in COFF codes, not NASM codes */ + bool is_global; /* is it a global symbol or not? */ + int16_t type; /* 0 - notype, 0x20 - function */ + int32_t namlen; /* full name length */ +}; + +struct coff_DebugInfo { + int32_t segto; + int32_t seg; + uint64_t size; + struct coff_Section *section; +}; + +extern struct coff_Section **coff_sects; +extern int coff_nsects; +extern struct SAA *coff_syms; +extern uint32_t coff_nsyms; +extern struct SAA *coff_strs; +extern bool win32, win64; + +extern char coff_infile[FILENAME_MAX]; +extern char coff_outfile[FILENAME_MAX]; + +extern int coff_make_section(char *name, uint32_t flags); + + +#endif /* PECOFF_H */ diff --git a/vere/ext/nasm/output/stabs.h b/vere/ext/nasm/output/stabs.h new file mode 100644 index 0000000..dbc4986 --- /dev/null +++ b/vere/ext/nasm/output/stabs.h @@ -0,0 +1,150 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#ifndef STABS_H_ +#define STABS_H_ + +#include "nctype.h" + +#include "compiler.h" +#include "nasmlib.h" +#include "nasm.h" + +/* offsets */ +enum stab_offsets { + STAB_strdxoff = 0, + STAB_typeoff = 4, + STAB_otheroff = 5, + STAB_descoff = 6, + STAB_valoff = 8, + STAB_stabsize = 12 +}; + +/* stab/non-stab types */ +enum stab_types { + N_UNDF = 0x00, /* Undefined symbol */ + N_EXT = 0x01, /* External symbol */ + N_ABS = 0x02, /* Absolute symbol */ + N_ABS_EXT = 0x03, /* Absolute external symbol */ + N_TEXT = 0x04, /* Symbol in text segment */ + N_TEXT_EXT = 0x05, /* Symbol in external text segment */ + N_DATA = 0x06, + N_DATA_EXT = 0x07, + N_BSS = 0x08, + N_BSS_EXT = 0x09, + N_INDR = 0x0a, + N_FN_SEQ = 0x0c, /* N_FN from Sequent compilers */ + N_WEAKU = 0x0d, /* Weak undefined symbol */ + N_WEAKA = 0x0e, /* Weak absolute symbl */ + N_WEAKT = 0x0f, /* Weak text symbol */ + N_WEAKD = 0x10, /* Weak data symbol */ + N_WEAKB = 0x11, /* Weak bss symbol */ + N_COMM = 0x12, /* Common symbol */ + N_SETA = 0x14, /* Absolute set element symbol */ + N_SETA_EXT = 0x15, + N_SETT = 0x16, /* Text set element symbol */ + N_SETT_EXT = 0x17, + N_SETD = 0x18, /* Data set element symbol */ + N_SETD_EXT = 0x19, + N_SETB = 0x1a, /* BSS set element symbol */ + N_SETB_EXT = 0x1b, + N_SETV = 0x1c, /* Pointer to set vector in data area */ + N_SETV_EXT = 0x1d, + N_WARNING = 0x1e, /* Warning symbol */ + N_FN = 0x1f, /* Filename of .o file */ + N_GSYM = 0x20, /* Global variable */ + N_FNAME = 0x22, /* Function name for BSD Fortran */ + N_FUN = 0x24, /* Function name or text segment variable for C */ + N_STSYM = 0x26, /* Data-segment variable with internal linkage */ + N_LCSYM = 0x28, /* BSS-segment variable with internal linkage */ + N_MAIN = 0x2a, /* Name of main routine */ + N_ROSYM = 0x2c, /* Read-only data symbols */ + N_BNSYM = 0x2e, /* The beginning of a relocatable function block */ + N_PC = 0x30, /* Global symbol in Pascal */ + N_NSYMS = 0x32, /* Number of symbols */ + N_NOMAP = 0x34, /* No DST map for sym */ + N_OBJ = 0x38, /* Like N_SO, but for the object file */ + N_OPT = 0x3c, /* Options for the debugger */ + N_RSYM = 0x40, /* Register variable */ + N_M2C = 0x42, /* Modula-2 compilation unit */ + N_SLINE = 0x44, /* Line number in text segment */ + N_DSLINE = 0x46, /* Line number in data segment */ + N_BSLINE = 0x48, /* Line number in bss segment */ + N_BROWS = 0x48, /* Sun's source-code browser stabs */ + N_DEFD = 0x4a, /* GNU Modula-2 definition module dependency */ + N_FLINE = 0x4c, /* Function start/body/end line numbers */ + N_ENSYM = 0x4e, /* This tells the end of a relocatable function */ + N_EHDECL = 0x50, /* GNU C++ exception variable */ + N_MOD2 = 0x50, /* Modula2 info "for imc" */ + N_CATCH = 0x54, /* GNU C++ `catch' clause */ + N_SSYM = 0x60, /* Structure or union element */ + N_ENDM = 0x62, /* Last stab emitted for module */ + N_SO = 0x64, /* ID for main source file */ + N_OSO = 0x66, /* Apple: This is the stab that associated the .o file */ + N_ALIAS = 0x6c, /* SunPro F77: Name of alias */ + N_LSYM = 0x80, /* Automatic variable in the stack */ + N_BINCL = 0x82, /* Beginning of an include file */ + N_SOL = 0x84, /* ID for sub-source file */ + N_PSYM = 0xa0, /* Parameter variable */ + N_EINCL = 0xa2, /* End of an include file */ + N_ENTRY = 0xa4, /* Alternate entry point */ + N_LBRAC = 0xc0, /* Beginning of lexical block */ + N_EXCL = 0xc2, /* Place holder for deleted include file */ + N_SCOPE = 0xc4, /* Modula-2 scope information */ + N_PATCH = 0xd0, /* Solaris2: Patch Run Time Checker */ + N_RBRAC = 0xe0, /* End of a lexical block */ + N_BCOMM = 0xe2, /* Begin named common block */ + N_ECOMM = 0xe4, /* End named common block */ + N_ECOML = 0xe8, /* Member of a common block */ + N_WITH = 0xea, /* Solaris2: Pascal "with" statement */ + N_NBTEXT = 0xf0, + N_NBDATA = 0xf2, + N_NBBSS = 0xf4, + N_NBSTS = 0xf6, + N_NBLCS = 0xf8, + N_LENG = 0xfe /* Second symbol entry whih a length-value for the preceding entry */ +}; + +enum stab_source_file { + N_SO_AS = 0x01, + N_SO_C = 0x02, + N_SO_ANSI_C = 0x03, + N_SO_CC = 0x04, + N_SO_FORTRAN = 0x05, + N_SO_PASCAL = 0x06, + N_SO_FORTRAN90 = 0x07, + N_SO_OBJC = 0x32, + N_SO_OBJCPLUS = 0x33 +}; + +#endif /* STABS_H_ */ diff --git a/vere/ext/nasm/perllib/crc64.ph b/vere/ext/nasm/perllib/crc64.ph new file mode 100644 index 0000000..30a4775 --- /dev/null +++ b/vere/ext/nasm/perllib/crc64.ph @@ -0,0 +1,158 @@ +# -*- perl -*- +# +# Pure Perl implementation of the same CRC64 implementation used +# elsewhere in NASM. +# +# Note: Perl may have 32- or 64-bit integers; we need to handle both +# without overflowing into floating point (yuck), so handle them as +# pairs of 32-bit numbers. Ordering is BIGENDIAN. +# + +@crc64_tab = ( + [0x00000000, 0x00000000], [0x7ad870c8, 0x30358979], + [0xf5b0e190, 0x606b12f2], [0x8f689158, 0x505e9b8b], + [0xc038e573, 0x9841b68f], [0xbae095bb, 0xa8743ff6], + [0x358804e3, 0xf82aa47d], [0x4f50742b, 0xc81f2d04], + [0xab28ecb4, 0x6814fe75], [0xd1f09c7c, 0x5821770c], + [0x5e980d24, 0x087fec87], [0x24407dec, 0x384a65fe], + [0x6b1009c7, 0xf05548fa], [0x11c8790f, 0xc060c183], + [0x9ea0e857, 0x903e5a08], [0xe478989f, 0xa00bd371], + [0x7d08ff3b, 0x88be6f81], [0x07d08ff3, 0xb88be6f8], + [0x88b81eab, 0xe8d57d73], [0xf2606e63, 0xd8e0f40a], + [0xbd301a48, 0x10ffd90e], [0xc7e86a80, 0x20ca5077], + [0x4880fbd8, 0x7094cbfc], [0x32588b10, 0x40a14285], + [0xd620138f, 0xe0aa91f4], [0xacf86347, 0xd09f188d], + [0x2390f21f, 0x80c18306], [0x594882d7, 0xb0f40a7f], + [0x1618f6fc, 0x78eb277b], [0x6cc08634, 0x48deae02], + [0xe3a8176c, 0x18803589], [0x997067a4, 0x28b5bcf0], + [0xfa11fe77, 0x117cdf02], [0x80c98ebf, 0x2149567b], + [0x0fa11fe7, 0x7117cdf0], [0x75796f2f, 0x41224489], + [0x3a291b04, 0x893d698d], [0x40f16bcc, 0xb908e0f4], + [0xcf99fa94, 0xe9567b7f], [0xb5418a5c, 0xd963f206], + [0x513912c3, 0x79682177], [0x2be1620b, 0x495da80e], + [0xa489f353, 0x19033385], [0xde51839b, 0x2936bafc], + [0x9101f7b0, 0xe12997f8], [0xebd98778, 0xd11c1e81], + [0x64b11620, 0x8142850a], [0x1e6966e8, 0xb1770c73], + [0x8719014c, 0x99c2b083], [0xfdc17184, 0xa9f739fa], + [0x72a9e0dc, 0xf9a9a271], [0x08719014, 0xc99c2b08], + [0x4721e43f, 0x0183060c], [0x3df994f7, 0x31b68f75], + [0xb29105af, 0x61e814fe], [0xc8497567, 0x51dd9d87], + [0x2c31edf8, 0xf1d64ef6], [0x56e99d30, 0xc1e3c78f], + [0xd9810c68, 0x91bd5c04], [0xa3597ca0, 0xa188d57d], + [0xec09088b, 0x6997f879], [0x96d17843, 0x59a27100], + [0x19b9e91b, 0x09fcea8b], [0x636199d3, 0x39c963f2], + [0xdf7adabd, 0x7a6e2d6f], [0xa5a2aa75, 0x4a5ba416], + [0x2aca3b2d, 0x1a053f9d], [0x50124be5, 0x2a30b6e4], + [0x1f423fce, 0xe22f9be0], [0x659a4f06, 0xd21a1299], + [0xeaf2de5e, 0x82448912], [0x902aae96, 0xb271006b], + [0x74523609, 0x127ad31a], [0x0e8a46c1, 0x224f5a63], + [0x81e2d799, 0x7211c1e8], [0xfb3aa751, 0x42244891], + [0xb46ad37a, 0x8a3b6595], [0xceb2a3b2, 0xba0eecec], + [0x41da32ea, 0xea507767], [0x3b024222, 0xda65fe1e], + [0xa2722586, 0xf2d042ee], [0xd8aa554e, 0xc2e5cb97], + [0x57c2c416, 0x92bb501c], [0x2d1ab4de, 0xa28ed965], + [0x624ac0f5, 0x6a91f461], [0x1892b03d, 0x5aa47d18], + [0x97fa2165, 0x0afae693], [0xed2251ad, 0x3acf6fea], + [0x095ac932, 0x9ac4bc9b], [0x7382b9fa, 0xaaf135e2], + [0xfcea28a2, 0xfaafae69], [0x8632586a, 0xca9a2710], + [0xc9622c41, 0x02850a14], [0xb3ba5c89, 0x32b0836d], + [0x3cd2cdd1, 0x62ee18e6], [0x460abd19, 0x52db919f], + [0x256b24ca, 0x6b12f26d], [0x5fb35402, 0x5b277b14], + [0xd0dbc55a, 0x0b79e09f], [0xaa03b592, 0x3b4c69e6], + [0xe553c1b9, 0xf35344e2], [0x9f8bb171, 0xc366cd9b], + [0x10e32029, 0x93385610], [0x6a3b50e1, 0xa30ddf69], + [0x8e43c87e, 0x03060c18], [0xf49bb8b6, 0x33338561], + [0x7bf329ee, 0x636d1eea], [0x012b5926, 0x53589793], + [0x4e7b2d0d, 0x9b47ba97], [0x34a35dc5, 0xab7233ee], + [0xbbcbcc9d, 0xfb2ca865], [0xc113bc55, 0xcb19211c], + [0x5863dbf1, 0xe3ac9dec], [0x22bbab39, 0xd3991495], + [0xadd33a61, 0x83c78f1e], [0xd70b4aa9, 0xb3f20667], + [0x985b3e82, 0x7bed2b63], [0xe2834e4a, 0x4bd8a21a], + [0x6debdf12, 0x1b863991], [0x1733afda, 0x2bb3b0e8], + [0xf34b3745, 0x8bb86399], [0x8993478d, 0xbb8deae0], + [0x06fbd6d5, 0xebd3716b], [0x7c23a61d, 0xdbe6f812], + [0x3373d236, 0x13f9d516], [0x49aba2fe, 0x23cc5c6f], + [0xc6c333a6, 0x7392c7e4], [0xbc1b436e, 0x43a74e9d], + [0x95ac9329, 0xac4bc9b5], [0xef74e3e1, 0x9c7e40cc], + [0x601c72b9, 0xcc20db47], [0x1ac40271, 0xfc15523e], + [0x5594765a, 0x340a7f3a], [0x2f4c0692, 0x043ff643], + [0xa02497ca, 0x54616dc8], [0xdafce702, 0x6454e4b1], + [0x3e847f9d, 0xc45f37c0], [0x445c0f55, 0xf46abeb9], + [0xcb349e0d, 0xa4342532], [0xb1eceec5, 0x9401ac4b], + [0xfebc9aee, 0x5c1e814f], [0x8464ea26, 0x6c2b0836], + [0x0b0c7b7e, 0x3c7593bd], [0x71d40bb6, 0x0c401ac4], + [0xe8a46c12, 0x24f5a634], [0x927c1cda, 0x14c02f4d], + [0x1d148d82, 0x449eb4c6], [0x67ccfd4a, 0x74ab3dbf], + [0x289c8961, 0xbcb410bb], [0x5244f9a9, 0x8c8199c2], + [0xdd2c68f1, 0xdcdf0249], [0xa7f41839, 0xecea8b30], + [0x438c80a6, 0x4ce15841], [0x3954f06e, 0x7cd4d138], + [0xb63c6136, 0x2c8a4ab3], [0xcce411fe, 0x1cbfc3ca], + [0x83b465d5, 0xd4a0eece], [0xf96c151d, 0xe49567b7], + [0x76048445, 0xb4cbfc3c], [0x0cdcf48d, 0x84fe7545], + [0x6fbd6d5e, 0xbd3716b7], [0x15651d96, 0x8d029fce], + [0x9a0d8cce, 0xdd5c0445], [0xe0d5fc06, 0xed698d3c], + [0xaf85882d, 0x2576a038], [0xd55df8e5, 0x15432941], + [0x5a3569bd, 0x451db2ca], [0x20ed1975, 0x75283bb3], + [0xc49581ea, 0xd523e8c2], [0xbe4df122, 0xe51661bb], + [0x3125607a, 0xb548fa30], [0x4bfd10b2, 0x857d7349], + [0x04ad6499, 0x4d625e4d], [0x7e751451, 0x7d57d734], + [0xf11d8509, 0x2d094cbf], [0x8bc5f5c1, 0x1d3cc5c6], + [0x12b59265, 0x35897936], [0x686de2ad, 0x05bcf04f], + [0xe70573f5, 0x55e26bc4], [0x9ddd033d, 0x65d7e2bd], + [0xd28d7716, 0xadc8cfb9], [0xa85507de, 0x9dfd46c0], + [0x273d9686, 0xcda3dd4b], [0x5de5e64e, 0xfd965432], + [0xb99d7ed1, 0x5d9d8743], [0xc3450e19, 0x6da80e3a], + [0x4c2d9f41, 0x3df695b1], [0x36f5ef89, 0x0dc31cc8], + [0x79a59ba2, 0xc5dc31cc], [0x037deb6a, 0xf5e9b8b5], + [0x8c157a32, 0xa5b7233e], [0xf6cd0afa, 0x9582aa47], + [0x4ad64994, 0xd625e4da], [0x300e395c, 0xe6106da3], + [0xbf66a804, 0xb64ef628], [0xc5bed8cc, 0x867b7f51], + [0x8aeeace7, 0x4e645255], [0xf036dc2f, 0x7e51db2c], + [0x7f5e4d77, 0x2e0f40a7], [0x05863dbf, 0x1e3ac9de], + [0xe1fea520, 0xbe311aaf], [0x9b26d5e8, 0x8e0493d6], + [0x144e44b0, 0xde5a085d], [0x6e963478, 0xee6f8124], + [0x21c64053, 0x2670ac20], [0x5b1e309b, 0x16452559], + [0xd476a1c3, 0x461bbed2], [0xaeaed10b, 0x762e37ab], + [0x37deb6af, 0x5e9b8b5b], [0x4d06c667, 0x6eae0222], + [0xc26e573f, 0x3ef099a9], [0xb8b627f7, 0x0ec510d0], + [0xf7e653dc, 0xc6da3dd4], [0x8d3e2314, 0xf6efb4ad], + [0x0256b24c, 0xa6b12f26], [0x788ec284, 0x9684a65f], + [0x9cf65a1b, 0x368f752e], [0xe62e2ad3, 0x06bafc57], + [0x6946bb8b, 0x56e467dc], [0x139ecb43, 0x66d1eea5], + [0x5ccebf68, 0xaecec3a1], [0x2616cfa0, 0x9efb4ad8], + [0xa97e5ef8, 0xcea5d153], [0xd3a62e30, 0xfe90582a], + [0xb0c7b7e3, 0xc7593bd8], [0xca1fc72b, 0xf76cb2a1], + [0x45775673, 0xa732292a], [0x3faf26bb, 0x9707a053], + [0x70ff5290, 0x5f188d57], [0x0a272258, 0x6f2d042e], + [0x854fb300, 0x3f739fa5], [0xff97c3c8, 0x0f4616dc], + [0x1bef5b57, 0xaf4dc5ad], [0x61372b9f, 0x9f784cd4], + [0xee5fbac7, 0xcf26d75f], [0x9487ca0f, 0xff135e26], + [0xdbd7be24, 0x370c7322], [0xa10fceec, 0x0739fa5b], + [0x2e675fb4, 0x576761d0], [0x54bf2f7c, 0x6752e8a9], + [0xcdcf48d8, 0x4fe75459], [0xb7173810, 0x7fd2dd20], + [0x387fa948, 0x2f8c46ab], [0x42a7d980, 0x1fb9cfd2], + [0x0df7adab, 0xd7a6e2d6], [0x772fdd63, 0xe7936baf], + [0xf8474c3b, 0xb7cdf024], [0x829f3cf3, 0x87f8795d], + [0x66e7a46c, 0x27f3aa2c], [0x1c3fd4a4, 0x17c62355], + [0x935745fc, 0x4798b8de], [0xe98f3534, 0x77ad31a7], + [0xa6df411f, 0xbfb21ca3], [0xdc0731d7, 0x8f8795da], + [0x536fa08f, 0xdfd90e51], [0x29b7d047, 0xefec8728] + ); + +sub crc64($$) { + my ($cv, $str) = @_; + my $c; + my @cc = @$cv; + $cc[0] %= 4294967296; + $cc[1] %= 4294967296; + + foreach $c (unpack("C*", $str)) { + my @ct = @{$crc64_tab[($cc[1] & 0xff) ^ $c]}; + + $cc[1] = $ct[1] ^ + ((($cc[1] & 0xffffff00) >> 8) | (($cc[0] & 0xff) << 24)); + $cc[0] = $ct[0] ^ (($cc[0] & 0xffffff00) >> 8); + } + + return @cc; +} diff --git a/vere/ext/nasm/perllib/gensv.pl b/vere/ext/nasm/perllib/gensv.pl new file mode 100755 index 0000000..b80ccbe --- /dev/null +++ b/vere/ext/nasm/perllib/gensv.pl @@ -0,0 +1,34 @@ +#!/usr/bin/perl +# +# Generate a list of rotation vectors so we always use the same set. +# This needs to be run on a platform with /dev/urandom. +# + +($n) = @ARGV; + +sysopen(UR, '/dev/urandom', O_RDONLY) or die; + +$maxlen = 78; + +print "\@random_sv_vectors = (\n"; +$outl = ' '; + +for ($i = 0; $i < $n; $i++) { + + die if (sysread(UR, $x8, 8) != 8); + @n = unpack("V*", $x8); + + $xl = sprintf(" [0x%08x, 0x%08x]%s", + $n[0], $n[1], + ($i == $n-1) ? '' : ','); + if (length($outl.$xl) > $maxlen) { + print $outl, "\n"; + $outl = ' '; + } + $outl .= $xl; +} +close(UR); + +print $outl, "\n"; +print ");\n"; +print "1;\n"; diff --git a/vere/ext/nasm/perllib/phash.ph b/vere/ext/nasm/perllib/phash.ph new file mode 100644 index 0000000..b5e4411 --- /dev/null +++ b/vere/ext/nasm/perllib/phash.ph @@ -0,0 +1,203 @@ +# -*- perl -*- +# +# Perfect Minimal Hash Generator written in Perl, which produces +# C output. +# + +require 'random_sv_vectors.ph'; +require 'crc64.ph'; + +# +# Compute the prehash for a key +# +# prehash(key, sv, N) +# +sub prehash($$$) { + my($key, $n, $sv) = @_; + my @c = crc64($sv, $key); + my $nmask = ($n << 1) - 2; + + # Create a bipartite graph... + $k1 = ($c[1] & $nmask) + 0; # low word + $k2 = ($c[0] & $nmask) + 1; # high word + + return ($k1, $k2); +} + +# +# Walk the assignment graph, return true on success +# +sub walk_graph($$$$) { + my($nodeval,$nodeneigh,$n,$v) = @_; + my $nx; + + # print STDERR "Vertex $n value $v\n"; + $$nodeval[$n] = $v; + + foreach $nx (@{$$nodeneigh[$n]}) { + # $nx -> [neigh, hash] + my ($o, $e) = @$nx; + + # print STDERR "Edge $n,$o value $e: "; + my $ov; + if (defined($ov = $$nodeval[$o])) { + if ($v+$ov != $e) { + # Cyclic graph with collision + # print STDERR "error, should be ", $v+$ov, "\n"; + return 0; + } else { + # print STDERR "ok\n"; + } + } else { + return 0 unless (walk_graph($nodeval, $nodeneigh, $o, $e-$v)); + } + } + return 1; +} + +# +# Generate the function assuming a given N. +# +# gen_hash_n(N, sv, \%data, run) +# +sub gen_hash_n($$$$) { + my($n, $sv, $href, $run) = @_; + my @keys = keys(%{$href}); + my $i; + my $gr; + my ($k, $v); + my $gsize = 2*$n; + my @nodeval; + my @nodeneigh; + my %edges; + + for ($i = 0; $i < $gsize; $i++) { + $nodeneigh[$i] = []; + } + + %edges = (); + foreach $k (@keys) { + my ($pf1, $pf2) = prehash($k, $n, $sv); + ($pf1,$pf2) = ($pf2,$pf1) if ($pf1 > $pf2); # Canonicalize order + + my $pf = "$pf1,$pf2"; + my $e = ${$href}{$k}; + my $xkey; + + if (defined($xkey = $edges{$pf})) { + next if ($e == ${$href}{$xkey}); # Duplicate hash, safe to ignore + if (defined($run)) { + print STDERR "$run: Collision: $pf: $k with $xkey\n"; + } + return; + } + + # print STDERR "Edge $pf value $e from $k\n"; + + $edges{$pf} = $k; + push(@{$nodeneigh[$pf1]}, [$pf2, $e]); + push(@{$nodeneigh[$pf2]}, [$pf1, $e]); + } + + # Now we need to assign values to each vertex, so that for each + # edge, the sum of the values for the two vertices give the value + # for the edge (which is our hash index.) If we find an impossible + # situation, the graph was cyclic. + @nodeval = (undef) x $gsize; + + for ($i = 0; $i < $gsize; $i++) { + if (scalar(@{$nodeneigh[$i]})) { + # This vertex has neighbors (is used) + if (!defined($nodeval[$i])) { + # First vertex in a cluster + unless (walk_graph(\@nodeval, \@nodeneigh, $i, 0)) { + if (defined($run)) { + print STDERR "$run: Graph is cyclic\n"; + } + return; + } + } + } + } + + # for ($i = 0; $i < $n; $i++) { + # print STDERR "Vertex ", $i, ": ", $g[$i], "\n"; + # } + + if (defined($run)) { + printf STDERR "$run: Done: n = $n, sv = [0x%08x, 0x%08x]\n", + $$sv[0], $$sv[1]; + } + + return ($n, $sv, \@nodeval); +} + +# +# Driver for generating the function +# +# gen_perfect_hash(\%data) +# +sub gen_perfect_hash($) { + my($href) = @_; + my @keys = keys(%{$href}); + my @hashinfo; + my ($n, $i, $j, $sv, $maxj); + my $run = 1; + + # Minimal power of 2 value for N with enough wiggle room. + # The scaling constant must be larger than 0.5 in order for the + # algorithm to ever terminate. The higher the scaling constant, + # the more space does the hash take up, but the less likely is it + # that an invalid token will require a string comparison. + my $room = int(scalar(@keys)*1.6); + $n = 1; + while ($n < $room) { + $n <<= 1; + } + + # Number of times to try... + $maxj = scalar @random_sv_vectors; + + for ($i = 0; $i < 4; $i++) { + printf STDERR "%d vectors, trying n = %d...\n", + scalar @keys, $n; + for ($j = 0; $j < $maxj; $j++) { + $sv = $random_sv_vectors[$j]; + @hashinfo = gen_hash_n($n, $sv, $href, $run++); + return @hashinfo if (@hashinfo); + } + $n <<= 1; + } + + return; +} + +# +# Verify that the hash table is actually correct... +# +sub verify_hash_table($$) +{ + my ($href, $hashinfo) = @_; + my ($n, $sv, $g) = @{$hashinfo}; + my $k; + my $err = 0; + + foreach $k (keys(%$href)) { + my ($pf1, $pf2) = prehash($k, $n, $sv); + my $g1 = ${$g}[$pf1]; + my $g2 = ${$g}[$pf2]; + + if ($g1+$g2 != ${$href}{$k}) { + printf STDERR "%s(%d,%d): %d+%d = %d != %d\n", + $k, $pf1, $pf2, $g1, $g2, $g1+$g2, ${$href}{$k}; + $err = 1; + } else { + # printf STDERR "%s: %d+%d = %d ok\n", + # $k, $g1, $g2, $g1+$g2; + } + } + + die "$0: hash validation error\n" if ($err); +} + +1; diff --git a/vere/ext/nasm/perllib/random_sv_vectors.ph b/vere/ext/nasm/perllib/random_sv_vectors.ph new file mode 100644 index 0000000..db2dc6e --- /dev/null +++ b/vere/ext/nasm/perllib/random_sv_vectors.ph @@ -0,0 +1,67 @@ +@random_sv_vectors = ( + [0x076259c3, 0xe291c26c], [0xaee7ac5c, 0xcabdec91], + [0x5d3862fb, 0x2e8a3060], [0x6fb3635c, 0x4783593a], + [0x13f0eafb, 0x407e486a], [0x7436afdd, 0xd04c4829], + [0xace2d0e4, 0x80575791], [0x2dd9a392, 0xdc1e869e], + [0x199c3e38, 0x026a9d67], [0x9f911c85, 0x3a489c87], + [0x9ac31028, 0x0b6e14b2], [0x2ccfbcf9, 0x3f9f2308], + [0x2e0210fb, 0x392f380f], [0x14ab403a, 0x81a11065], + [0xd496f63c, 0x53196b13], [0x48a34d7f, 0x2ffc6036], + [0x34ea8e9d, 0xcd1ed098], [0x2da1a3f2, 0x3d6c23f2], + [0xca7374da, 0x06054f89], [0xc909a0bb, 0x31d6c0d2], + [0x87454496, 0x15b360d7], [0x9eebbd12, 0x89532131], + [0x1119c65b, 0xd9e49705], [0x60c3be0b, 0xd6cc7c8a], + [0x117723cd, 0x40af090f], [0xfc284f51, 0x3dcf4c06], + [0xb41fcda4, 0xec03644c], [0xd99e1ea7, 0x84eaf76d], + [0x534b956a, 0x06d3fb8d], [0x2da4bb09, 0x078092eb], + [0x6a5be463, 0xbfa51a88], [0xc4e8be95, 0xe7eec27c], + [0x15a1fbb9, 0xfadc08cd], [0x0bcfab08, 0xbccade0f], + [0x629f1f6c, 0x90ccede7], [0x5c2b26aa, 0x1f0b1fce], + [0xdfe0e3fd, 0xbd7c3cfb], [0xa1628ca9, 0x90a05686], + [0xbf0267f2, 0xd2964139], [0x8009a9b9, 0xd2195918], + [0xfcc7b5f8, 0xc108c643], [0xf447d4b0, 0x71953863], + [0x95d091ed, 0xdbe01948], [0x81dec325, 0x2bfecda2], + [0x2ed2acaa, 0x7eeaa0d0], [0xb7b0a20e, 0x8bf5c01b], + [0x75eb3917, 0xfd2f758f], [0xb33a5b49, 0x8a8cedf6], + [0x3aaf2757, 0x69b319a9], [0x32cfa41b, 0xeba36f19], + [0xf54209dd, 0x941f3a08], [0x232703bb, 0x786a6f84], + [0x4937b242, 0xc9f07398], [0x74dc5d39, 0x550a58e8], + [0x6c9aebdc, 0x8fda5069], [0x5ae6d62a, 0x05cd24a3], + [0x8111e50a, 0xc1c6d19b], [0xb980a92b, 0x448b4d1f], + [0x568cf58a, 0x8bcb93ca], [0xfe96002f, 0x410cd2f1], + [0xaf511e45, 0x99e4872f], [0x822c20bc, 0x3db49ddd], + [0x184fec4e, 0xbb82ec52], [0x30ca5326, 0xf3180297], + [0x97962aa4, 0x7d4bc6d4], [0x9199a315, 0x8e9f18c6], + [0xead69a7e, 0x3262a683], [0xe261ec00, 0x81edc47a], + [0x06080c0e, 0x6d18fa9f], [0x1771ec43, 0x6747ed66], + [0xe71fe587, 0xe81ad0f3], [0xf083e80c, 0x0898bcd8], + [0x30328c5a, 0x2efb4ee7], [0xd04fa5d7, 0xec9c9f18], + [0x87820480, 0x48932224], [0xb1f18815, 0x1b27e3e3], + [0x79aa440c, 0xdf17a8fc], [0x8a83d404, 0x10fdec8c], + [0x7d4dfe60, 0x573561ee], [0x60315c7d, 0xa0692af6], + [0xb3ca4d52, 0x89ca832f], [0x9ebc5c79, 0xa84a28fc], + [0xdfa76008, 0x7772cf7c], [0xb0e3a15f, 0xbdc35aee], + [0x6e252b03, 0x32b2107d], [0x20dcc2a3, 0x21987229], + [0x848e3ad8, 0xe692a0c6], [0xdd07fa50, 0x0b64e1ae], + [0xc4072bc2, 0x2f120bba], [0xdb3af26e, 0xacab0c48], + [0xd7d4b59a, 0xcf72a7a7], [0x4628de45, 0x4dfb2750], + [0x7519211f, 0x4798b536], [0x19984af3, 0xffd2aa19], + [0x1372d9c0, 0x7512153a], [0x295d19da, 0x497416e5], + [0x70932c73, 0x8a9bf591], [0xa0960860, 0xfaa7dc61], + [0xd425f548, 0x43aeda4d], [0xaa2573c7, 0x01a2553d], + [0x988e71d7, 0xd3c004a4], [0x3da87545, 0x2197af10], + [0x2f89e592, 0xa686e2fc], [0x7b88018a, 0xae66d575], + [0x93215591, 0xed69e6ea], [0x4fcacc4a, 0x4d2aba97], + [0xbedb923b, 0x500b2f1a], [0x0b6d8aa0, 0x232511b0], + [0x282fb3ee, 0x23695de0], [0x0c455dfe, 0x820cca3f], + [0xe893868c, 0x87f698f6], [0xb6428730, 0x56e576ce], + [0xf3843ee7, 0xba79bc28], [0xa1c9ca45, 0x30c479c1], + [0xbfc244c2, 0xa9af65f0], [0x6eeb88eb, 0x62b4479c], + [0xcc328fe5, 0x60f5c9bf], [0x31aa2c21, 0xc55575fb], + [0x9429492d, 0x8e80612a], [0xb12fe59e, 0xf0e1e97b], + [0xc2501dad, 0x4a9f4bbf], [0x65ae8366, 0x3e8b0983], + [0xd5fc062a, 0xba74f808], [0x7398cc0a, 0x39a6a269], + [0x5581dd60, 0xff79d28c], [0xea5e52b3, 0x9be66c71], + [0x8f6e02a4, 0xe27318b5], [0xe8bceb99, 0xa48a7f2c], +); +1; diff --git a/vere/ext/nasm/stdlib/snprintf.c b/vere/ext/nasm/stdlib/snprintf.c new file mode 100644 index 0000000..e4a1c0b --- /dev/null +++ b/vere/ext/nasm/stdlib/snprintf.c @@ -0,0 +1,26 @@ +/* + * snprintf() + * + * Implement snprintf() in terms of vsnprintf() + */ + +#include "compiler.h" + + +#include "nasmlib.h" + +#if !defined(HAVE_SNPRINTF) && !defined(HAVE__SNPRINTF) + +int snprintf(char *str, size_t size, const char *format, ...) +{ + va_list ap; + int rv; + + va_start(ap, format); + rv = vsnprintf(str, size, format, ap); + va_end(ap); + + return rv; +} + +#endif diff --git a/vere/ext/nasm/stdlib/strlcpy.c b/vere/ext/nasm/stdlib/strlcpy.c new file mode 100644 index 0000000..22d9ccf --- /dev/null +++ b/vere/ext/nasm/stdlib/strlcpy.c @@ -0,0 +1,51 @@ +/* + * Copyright (c) 1998 Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "compiler.h" + +/* + * Copy src to string dst of size siz. At most siz-1 characters + * will be copied. Always NUL terminates (unless siz == 0). + * Returns strlen(src); if retval >= siz, truncation occurred. + */ +#ifndef HAVE_STRLCPY + +size_t strlcpy(char *dst, const char *src, size_t siz) +{ + char *d = dst; + const char *s = src; + size_t n = siz; + + /* Copy as many bytes as will fit */ + if (n != 0) { + while (--n != 0) { + if ((*d++ = *s++) == '\0') + break; + } + } + + /* Not enough room in dst, add NUL and traverse rest of src */ + if (n == 0) { + if (siz != 0) + *d = '\0'; /* NUL-terminate dst */ + while (*s++) + ; + } + + return(s - src - 1); /* count does not include NUL */ +} + +#endif diff --git a/vere/ext/nasm/stdlib/strnlen.c b/vere/ext/nasm/stdlib/strnlen.c new file mode 100644 index 0000000..193245e --- /dev/null +++ b/vere/ext/nasm/stdlib/strnlen.c @@ -0,0 +1,45 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2016 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "compiler.h" + +#ifndef HAVE_STRNLEN + +size_t strnlen(const char *s, size_t maxlen) +{ + const char *end = memchr(s, 0, maxlen); + + return end ? (size_t)(end - s) : maxlen; +} + +#endif diff --git a/vere/ext/nasm/stdlib/strrchrnul.c b/vere/ext/nasm/stdlib/strrchrnul.c new file mode 100644 index 0000000..2fc8eb6 --- /dev/null +++ b/vere/ext/nasm/stdlib/strrchrnul.c @@ -0,0 +1,49 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2017 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +#include "compiler.h" + +#ifndef HAVE_STRRCHRNUL + +char *strrchrnul(const char *s, int c) +{ + char *p; + + p = strrchr(s, c); + if (!p) + p = strchr(s, '\0'); + + return p; +} + +#endif diff --git a/vere/ext/nasm/stdlib/vsnprintf.c b/vere/ext/nasm/stdlib/vsnprintf.c new file mode 100644 index 0000000..58de651 --- /dev/null +++ b/vere/ext/nasm/stdlib/vsnprintf.c @@ -0,0 +1,46 @@ +/* + * vsnprintf() + * + * Poor substitute for a real vsnprintf() function for systems + * that don't have them... + */ + +#include "compiler.h" + + +#include "nasmlib.h" +#include "error.h" + +#if !defined(HAVE_VSNPRINTF) && !defined(HAVE__VSNPRINTF) + +#define BUFFER_SIZE 65536 /* Bigger than any string we might print... */ + +static char snprintf_buffer[BUFFER_SIZE]; + +int vsnprintf(char *str, size_t size, const char *format, va_list ap) +{ + int rv, bytes; + + if (size > BUFFER_SIZE) { + nasm_panic("vsnprintf: size (%llu) > BUFFER_SIZE (%d)", + (unsigned long long)size, BUFFER_SIZE); + size = BUFFER_SIZE; + } + + rv = vsprintf(snprintf_buffer, format, ap); + if (rv >= BUFFER_SIZE) + nasm_panic("vsnprintf buffer overflow"); + + if (size > 0) { + if ((size_t)rv < size-1) + bytes = rv; + else + bytes = size-1; + memcpy(str, snprintf_buffer, bytes); + str[bytes] = '\0'; + } + + return rv; +} + +#endif diff --git a/vere/ext/nasm/x86/disp8.c b/vere/ext/nasm/x86/disp8.c new file mode 100644 index 0000000..64c921b --- /dev/null +++ b/vere/ext/nasm/x86/disp8.c @@ -0,0 +1,131 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2013 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * 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. + * + * ----------------------------------------------------------------------- */ + +/* + * disp8.c : Contains a common logic for EVEX compressed displacement + */ + +#include "disp8.h" + +/* + * Find N value for compressed displacement (disp8 * N) + */ +uint8_t get_disp8N(insn *ins) +{ + static const uint8_t fv_n[2][2][VLMAX] = {{{16, 32, 64}, {4, 4, 4}}, + {{16, 32, 64}, {8, 8, 8}}}; + static const uint8_t hv_n[2][VLMAX] = {{8, 16, 32}, {4, 4, 4}}; + static const uint8_t dup_n[VLMAX] = {8, 32, 64}; + + bool evex_b = (ins->evex_p[2] & EVEX_P2B) >> 4; + enum ttypes tuple = ins->evex_tuple; + enum vectlens vectlen = (ins->evex_p[2] & EVEX_P2LL) >> 5; + bool evex_w = (ins->evex_p[1] & EVEX_P1W) >> 7; + uint8_t n = 0; + + switch(tuple) { + case FV: + n = fv_n[evex_w][evex_b][vectlen]; + break; + case HV: + n = hv_n[evex_b][vectlen]; + break; + + case FVM: + /* 16, 32, 64 for VL 128, 256, 512 respectively*/ + n = 1 << (vectlen + 4); + break; + case T1S8: /* N = 1 */ + case T1S16: /* N = 2 */ + n = tuple - T1S8 + 1; + break; + case T1S: + /* N = 4 for 32bit, 8 for 64bit */ + n = evex_w ? 8 : 4; + break; + case T1F32: + case T1F64: + /* N = 4 for 32bit, 8 for 64bit */ + n = (tuple == T1F32 ? 4 : 8); + break; + case T2: + case T4: + case T8: + if (vectlen + 7 <= (evex_w + 5) + (tuple - T2 + 1)) + n = 0; + else + n = 1 << (tuple - T2 + evex_w + 3); + break; + case HVM: + case QVM: + case OVM: + n = 1 << (OVM - tuple + vectlen + 1); + break; + case M128: + n = 16; + break; + case DUP: + n = dup_n[vectlen]; + break; + + default: + break; + } + + return n; +} + +/* + * Check if offset is a multiple of N with corresponding tuple type + * if Disp8*N is available, compressed displacement is stored in compdisp + */ +bool is_disp8n(operand *input, insn *ins, int8_t *compdisp) +{ + int32_t off = input->offset; + uint8_t n; + int32_t disp8; + + n = get_disp8N(ins); + + if (n && !(off & (n - 1))) { + disp8 = off / n; + /* if it fits in Disp8 */ + if (disp8 >= -128 && disp8 <= 127) { + *compdisp = disp8; + return true; + } + } + + *compdisp = 0; + return false; +} diff --git a/vere/ext/nasm/x86/iflag.c b/vere/ext/nasm/x86/iflag.c new file mode 100644 index 0000000..d47ce89 --- /dev/null +++ b/vere/ext/nasm/x86/iflag.c @@ -0,0 +1,315 @@ +/* This file is auto-generated. Don't edit. */ +#include "iflag.h" + +/* All combinations of instruction flags used in instruction patterns */ +const iflag_t insns_flags[309] = { + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 0 : 8086 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 1 : 8086,NOLONG */ + {{UINT32_C(0x00000004),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 2 : 8086,NOLONG,SB */ + {{UINT32_C(0x00000001),UINT32_C(0x00000008),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 3 : 8086,LOCK,SM */ + {{UINT32_C(0x00000001),UINT32_C(0x00000008),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 4 : 386,LOCK,SM */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 5 : 386 */ + {{UINT32_C(0x00000001),UINT32_C(0x00000028),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 6 : LOCK,LONG,SM,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 7 : LONG,X86_64 */ + {{UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 8 : 8086,SM */ + {{UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 9 : 386,SM */ + {{UINT32_C(0x00000001),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 10 : LONG,SM,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000008),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 11 : 8086,LOCK */ + {{UINT32_C(0x00000000),UINT32_C(0x00000008),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 12 : 386,LOCK */ + {{UINT32_C(0x00000000),UINT32_C(0x00000028),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 13 : LOCK,LONG,X86_64 */ + {{UINT32_C(0x00000001),UINT32_C(0x00000018),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 14 : 8086,LOCK,NOLONG,SM */ + {{UINT32_C(0x00000001),UINT32_C(0x00000014),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000004)}}, /* 15 : 286,NOLONG,PROT,SM */ + {{UINT32_C(0x00000000),UINT32_C(0x00000014),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000004)}}, /* 16 : 286,NOLONG,PROT */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00040020)}}, /* 17 : CYRIX,OBSOLETE,PENT */ + {{UINT32_C(0x00000000),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000002)}}, /* 18 : 186,NOLONG */ + {{UINT32_C(0x00000000),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 19 : 386,NOLONG */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000010)}}, /* 20 : 486 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000200),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 21 : 8086,BND */ + {{UINT32_C(0x00000000),UINT32_C(0x00000210),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 22 : 8086,BND,NOLONG */ + {{UINT32_C(0x00000000),UINT32_C(0x00000210),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 23 : 386,BND,NOLONG */ + {{UINT32_C(0x00000000),UINT32_C(0x00000220),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 24 : BND,LONG,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000004)}}, /* 25 : 286,PRIV */ + {{UINT32_C(0x00000001),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 26 : 8086,NOLONG,SM */ + {{UINT32_C(0x00000001),UINT32_C(0x00000008),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000020)}}, /* 27 : LOCK,PENT,SM */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000020)}}, /* 28 : PENT */ + {{UINT32_C(0x00000001),UINT32_C(0x00000408),UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00000010)}}, /* 29 : 486,LOCK,OBSOLETE,SM,UNDOC */ + {{UINT32_C(0x00000000),UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00000010)}}, /* 30 : 486,OBSOLETE,UNDOC */ + {{UINT32_C(0x00000000),UINT32_C(0x00000008),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000020)}}, /* 31 : LOCK,PENT */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040020)}}, /* 32 : CYRIX,PENT */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040040)}}, /* 33 : CYRIX,P6 */ + {{UINT32_C(0x00000000),UINT32_C(0x00002000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000020)}}, /* 34 : MMX,PENT */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000002)}}, /* 35 : 186 */ + {{UINT32_C(0x00000000),UINT32_C(0x00001000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 36 : 8086,FPU */ + {{UINT32_C(0x00000000),UINT32_C(0x00001000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000040)}}, /* 37 : FPU,P6 */ + {{UINT32_C(0x00000000),UINT32_C(0x00001000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 38 : 386,FPU */ + {{UINT32_C(0x00000000),UINT32_C(0x00004000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000020)}}, /* 39 : 3DNOW,PENT */ + {{UINT32_C(0x00000000),UINT32_C(0x00001400),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000004)}}, /* 40 : 286,FPU,UNDOC */ + {{UINT32_C(0x00000000),UINT32_C(0x00001000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000200)}}, /* 41 : FPU,PRESCOTT */ + {{UINT32_C(0x00000008),UINT32_C(0x00001000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 42 : 8086,FPU,SW */ + {{UINT32_C(0x00000000),UINT32_C(0x00001000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000004)}}, /* 43 : 286,FPU */ + {{UINT32_C(0x00000000),UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 44 : 8086,PRIV */ + {{UINT32_C(0x00000008),UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00000008)}}, /* 45 : 386,OBSOLETE,SW,UNDOC */ + {{UINT32_C(0x00000000),UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00000008)}}, /* 46 : 386,OBSOLETE,UNDOC */ + {{UINT32_C(0x00000010),UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00000008)}}, /* 47 : 386,OBSOLETE,SD,UNDOC */ + {{UINT32_C(0x00000002),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000002)}}, /* 48 : 186,SM2 */ + {{UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000002)}}, /* 49 : 186,SM */ + {{UINT32_C(0x00000002),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 50 : 386,SM2 */ + {{UINT32_C(0x00000002),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 51 : LONG,SM2,X86_64 */ + {{UINT32_C(0x00000004),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 52 : 8086,SB */ + {{UINT32_C(0x00000004),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 53 : 386,SB */ + {{UINT32_C(0x00000000),UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000010)}}, /* 54 : 486,PRIV */ + {{UINT32_C(0x00000000),UINT32_C(0x80000011),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 55 : FUTURE,INVPCID,NOLONG,PRIV */ + {{UINT32_C(0x00000000),UINT32_C(0x80000021),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 56 : FUTURE,INVPCID,LONG,PRIV */ + {{UINT32_C(0x00000000),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00080400)}}, /* 57 : AMD,NOLONG,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00080400)}}, /* 58 : AMD,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00080400)}}, /* 59 : AMD,LONG,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00008000)}}, /* 60 : IA64 */ + {{UINT32_C(0x00000008),UINT32_C(0x00000004),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000004)}}, /* 61 : 286,PROT,SW */ + {{UINT32_C(0x00000000),UINT32_C(0x00000004),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000004)}}, /* 62 : 286,PROT */ + {{UINT32_C(0x00000000),UINT32_C(0x00000004),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 63 : 386,PROT */ + {{UINT32_C(0x00000000),UINT32_C(0x00000024),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 64 : LONG,PROT,X86_64 */ + {{UINT32_C(0x00000008),UINT32_C(0x00000004),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 65 : 386,PROT,SW */ + {{UINT32_C(0x00000008),UINT32_C(0x00000024),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 66 : LONG,PROT,SW,X86_64 */ + {{UINT32_C(0x00000800),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 67 : 8086,ANYSIZE */ + {{UINT32_C(0x00000800),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 68 : 386,ANYSIZE */ + {{UINT32_C(0x00000800),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 69 : ANYSIZE,LONG,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000005),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000004)}}, /* 70 : 286,PRIV,PROT */ + {{UINT32_C(0x00000000),UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00000004)}}, /* 71 : 286,OBSOLETE,UNDOC */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000200)}}, /* 72 : PRESCOTT */ + {{UINT32_C(0x00000000),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000200)}}, /* 73 : NOLONG,PRESCOTT */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00080000)}}, /* 74 : AMD */ + {{UINT32_C(0x00000008),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 75 : 8086,SW */ + {{UINT32_C(0x00020000),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 76 : LONG,OPT,X86_64 */ + {{UINT32_C(0x00020000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 77 : 8086,OPT */ + {{UINT32_C(0x00020000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 78 : 386,OPT */ + {{UINT32_C(0x00000001),UINT32_C(0x00000040),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 79 : 8086,NOHLE,SM */ + {{UINT32_C(0x00000001),UINT32_C(0x00000040),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 80 : 386,NOHLE,SM */ + {{UINT32_C(0x00000001),UINT32_C(0x00000060),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 81 : LONG,NOHLE,SM,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000011),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 82 : 386,NOLONG,PRIV */ + {{UINT32_C(0x00000000),UINT32_C(0x00000021),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 83 : LONG,PRIV,X86_64 */ + {{UINT32_C(0x00020001),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 84 : LONG,OPT,SM,X86_64 */ + {{UINT32_C(0x00000010),UINT32_C(0x00002000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000020)}}, /* 85 : MMX,PENT,SD */ + {{UINT32_C(0x00000400),UINT32_C(0x00002020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 86 : LONG,MMX,SX,X86_64 */ + {{UINT32_C(0x00000020),UINT32_C(0x00002000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000020)}}, /* 87 : MMX,PENT,SQ */ + {{UINT32_C(0x00000000),UINT32_C(0x00002020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 88 : LONG,MMX,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000040)}}, /* 89 : P6 */ + {{UINT32_C(0x00000020),UINT32_C(0x00002000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040020)}}, /* 90 : CYRIX,MMX,PENT,SQ */ + {{UINT32_C(0x00000020),UINT32_C(0x00004000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000020)}}, /* 91 : 3DNOW,PENT,SQ */ + {{UINT32_C(0x00000001),UINT32_C(0x00002000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040020)}}, /* 92 : CYRIX,MMX,PENT,SM */ + {{UINT32_C(0x00000000),UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00000001)}}, /* 93 : 8086,OBSOLETE,UNDOC */ + {{UINT32_C(0x00001200),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000002)}}, /* 94 : 186,AR0,SIZE */ + {{UINT32_C(0x00001200),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 95 : 386,AR0,NOLONG,SIZE */ + {{UINT32_C(0x00000010),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 96 : 386,NOLONG,SD */ + {{UINT32_C(0x00001200),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 97 : AR0,LONG,SIZE,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000002),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040040)}}, /* 98 : CYRIX,P6,SMM */ + {{UINT32_C(0x00000000),UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000020)}}, /* 99 : PENT,PRIV */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 100 : X86_64 */ + {{UINT32_C(0x00000008),UINT32_C(0x00000200),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 101 : 8086,BND,SW */ + {{UINT32_C(0x00000008),UINT32_C(0x00000210),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 102 : 8086,BND,NOLONG,SW */ + {{UINT32_C(0x00000008),UINT32_C(0x00000220),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 103 : BND,LONG,SW,X86_64 */ + {{UINT32_C(0x00000008),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 104 : LONG,SW,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000002),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040010)}}, /* 105 : 486,CYRIX,SMM */ + {{UINT32_C(0x00000000),UINT32_C(0x00000002),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000020)}}, /* 106 : PENT,SMM */ + {{UINT32_C(0x00000000),UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001)}}, /* 107 : 8086,UNDOC */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000004)}}, /* 108 : 286 */ + {{UINT32_C(0x00004006),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 109 : 386,AR2,SB,SM2 */ + {{UINT32_C(0x00004006),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 110 : AR2,LONG,SB,SM2,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 111 : 386,UNDOC */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00040010)}}, /* 112 : 486,CYRIX,OBSOLETE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00080040)}}, /* 113 : AMD,P6 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000040)}}, /* 114 : P6,PRIV */ + {{UINT32_C(0x00000000),UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00080040)}}, /* 115 : AMD,P6,PRIV */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00000002)}}, /* 116 : 186,OBSOLETE */ + {{UINT32_C(0x00000001),UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 117 : 386,SM,UNDOC */ + {{UINT32_C(0x00000001),UINT32_C(0x00000008),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000010)}}, /* 118 : 486,LOCK,SM */ + {{UINT32_C(0x00000008),UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 119 : 386,SW,UNDOC */ + {{UINT32_C(0x00000010),UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 120 : 386,SD,UNDOC */ + {{UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000040)}}, /* 121 : P6,SM */ + {{UINT32_C(0x00000000),UINT32_C(0x00000200),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008)}}, /* 122 : 386,BND */ + {{UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000080)}}, /* 123 : KATMAI,SSE */ + {{UINT32_C(0x00000000),UINT32_C(0x0000a000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000080)}}, /* 124 : KATMAI,MMX,SSE */ + {{UINT32_C(0x00002010),UINT32_C(0x00008000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000080)}}, /* 125 : AR1,KATMAI,SD,SSE */ + {{UINT32_C(0x00002020),UINT32_C(0x00008020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 126 : AR1,LONG,SQ,SSE,X86_64 */ + {{UINT32_C(0x00002010),UINT32_C(0x00008020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 127 : AR1,LONG,SD,SSE,X86_64 */ + {{UINT32_C(0x00000020),UINT32_C(0x0000a000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000080)}}, /* 128 : KATMAI,MMX,SQ,SSE */ + {{UINT32_C(0x00000000),UINT32_C(0x00008020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 129 : LONG,SSE,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00009000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000040)}}, /* 130 : FPU,P6,SSE */ + {{UINT32_C(0x00000000),UINT32_C(0x00009020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 131 : FPU,LONG,SSE,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000800)}}, /* 132 : NEHALEM */ + {{UINT32_C(0x00000000),UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000800)}}, /* 133 : NEHALEM,PRIV */ + {{UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000800)}}, /* 134 : LONG,NEHALEM */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 135 : FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 136 : FUTURE,LONG */ + {{UINT32_C(0x00000004),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000080)}}, /* 137 : KATMAI,SB */ + {{UINT32_C(0x00000004),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100),UINT32_C(0x00004000)}}, /* 138 : FUTURE,PREFETCHI,SB */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000080)}}, /* 139 : KATMAI */ + {{UINT32_C(0x00000000),UINT32_C(0x00002000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000080)}}, /* 140 : KATMAI,MMX */ + {{UINT32_C(0x00000020),UINT32_C(0x00002000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000080)}}, /* 141 : KATMAI,MMX,SQ */ + {{UINT32_C(0x00004004),UINT32_C(0x00002000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000080)}}, /* 142 : AR2,KATMAI,MMX,SB */ + {{UINT32_C(0x00004006),UINT32_C(0x00002000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000080)}}, /* 143 : AR2,KATMAI,MMX,SB,SM2 */ + {{UINT32_C(0x00000000),UINT32_C(0x00010000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100)}}, /* 144 : SSE2,WILLAMETTE */ + {{UINT32_C(0x00000040),UINT32_C(0x00010000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100)}}, /* 145 : SO,SSE2,WILLAMETTE */ + {{UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100)}}, /* 146 : SD,WILLAMETTE */ + {{UINT32_C(0x00000020),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 147 : LONG,SQ,X86_64 */ + {{UINT32_C(0x00000010),UINT32_C(0x00010000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100)}}, /* 148 : SD,SSE2,WILLAMETTE */ + {{UINT32_C(0x00000020),UINT32_C(0x00010000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100)}}, /* 149 : SQ,SSE2,WILLAMETTE */ + {{UINT32_C(0x00000000),UINT32_C(0x00010020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 150 : LONG,SSE2,X86_64 */ + {{UINT32_C(0x00000020),UINT32_C(0x00002000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100)}}, /* 151 : MMX,SQ,WILLAMETTE */ + {{UINT32_C(0x00004004),UINT32_C(0x00010000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100)}}, /* 152 : AR2,SB,SSE2,WILLAMETTE */ + {{UINT32_C(0x00004004),UINT32_C(0x00010020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 153 : AR2,LONG,SB,SSE2,X86_64 */ + {{UINT32_C(0x00004006),UINT32_C(0x00010000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100)}}, /* 154 : AR2,SB,SM2,SSE2,WILLAMETTE */ + {{UINT32_C(0x00002004),UINT32_C(0x00010000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100)}}, /* 155 : AR1,SB,SSE2,WILLAMETTE */ + {{UINT32_C(0x00002020),UINT32_C(0x00010000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100)}}, /* 156 : AR1,SQ,SSE2,WILLAMETTE */ + {{UINT32_C(0x00002020),UINT32_C(0x00010020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 157 : AR1,LONG,SQ,SSE2,X86_64 */ + {{UINT32_C(0x00002010),UINT32_C(0x00010000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100)}}, /* 158 : AR1,SD,SSE2,WILLAMETTE */ + {{UINT32_C(0x00000040),UINT32_C(0x00020000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000200)}}, /* 159 : PRESCOTT,SO,SSE3 */ + {{UINT32_C(0x00000020),UINT32_C(0x00020000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000200)}}, /* 160 : PRESCOTT,SQ,SSE3 */ + {{UINT32_C(0x00000000),UINT32_C(0x00020000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000200)}}, /* 161 : PRESCOTT,SSE3 */ + {{UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00080000)}}, /* 162 : AMD,VMX */ + {{UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000)}}, /* 163 : VMX */ + {{UINT32_C(0x00000010),UINT32_C(0x00040010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000)}}, /* 164 : NOLONG,SD,VMX */ + {{UINT32_C(0x00000020),UINT32_C(0x00040020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 165 : LONG,SQ,VMX,X86_64 */ + {{UINT32_C(0x00000040),UINT32_C(0x00040010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000)}}, /* 166 : NOLONG,SO,VMX */ + {{UINT32_C(0x00000040),UINT32_C(0x00040020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000)}}, /* 167 : LONG,SO,VMX */ + {{UINT32_C(0x00000020),UINT32_C(0x00082000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000)}}, /* 168 : MMX,SQ,SSSE3 */ + {{UINT32_C(0x00000000),UINT32_C(0x00080000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000)}}, /* 169 : SSSE3 */ + {{UINT32_C(0x00000000),UINT32_C(0x00100000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00080000)}}, /* 170 : AMD,SSE4A */ + {{UINT32_C(0x00000020),UINT32_C(0x00100000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00080000)}}, /* 171 : AMD,SQ,SSE4A */ + {{UINT32_C(0x00000010),UINT32_C(0x00100000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00080000)}}, /* 172 : AMD,SD,SSE4A */ + {{UINT32_C(0x00000000),UINT32_C(0x00200000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000)}}, /* 173 : SSE41 */ + {{UINT32_C(0x00000000),UINT32_C(0x00200020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 174 : LONG,SSE41,X86_64 */ + {{UINT32_C(0x00004004),UINT32_C(0x00200000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000)}}, /* 175 : AR2,SB,SSE41 */ + {{UINT32_C(0x00004004),UINT32_C(0x00200020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 176 : AR2,LONG,SB,SSE41,X86_64 */ + {{UINT32_C(0x00000020),UINT32_C(0x00200000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000)}}, /* 177 : SQ,SSE41 */ + {{UINT32_C(0x00000010),UINT32_C(0x00200000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000)}}, /* 178 : SD,SSE41 */ + {{UINT32_C(0x00000008),UINT32_C(0x00200000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000)}}, /* 179 : SSE41,SW */ + {{UINT32_C(0x00000000),UINT32_C(0x00400000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000)}}, /* 180 : SSE42 */ + {{UINT32_C(0x00000000),UINT32_C(0x00400020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 181 : LONG,SSE42,X86_64 */ + {{UINT32_C(0x00000008),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000800)}}, /* 182 : NEHALEM,SW */ + {{UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000800)}}, /* 183 : NEHALEM,SD */ + {{UINT32_C(0x00000020),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000800)}}, /* 184 : LONG,NEHALEM,SQ */ + {{UINT32_C(0x00000020),UINT32_C(0x00004000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040020)}}, /* 185 : 3DNOW,CYRIX,PENT,SQ */ + {{UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000800)}}, /* 186 : NEHALEM,SM */ + {{UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00001000)}}, /* 187 : SSE,WESTMERE */ + {{UINT32_C(0x00000000),UINT32_C(0x01000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00002000)}}, /* 188 : AVX,SANDYBRIDGE,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00002000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 189 : FUTURE,VAES,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00002081),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 190 : AVX512,AVX512VL,EVEX,FUTURE,VAES */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00002001),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 191 : AVX512,EVEX,FUTURE,VAES */ + {{UINT32_C(0x00000040),UINT32_C(0x01000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00002000)}}, /* 192 : AVX,SANDYBRIDGE,SO,VEX */ + {{UINT32_C(0x00000080),UINT32_C(0x01000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00002000)}}, /* 193 : AVX,SANDYBRIDGE,SY,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x01000020),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00002000)}}, /* 194 : AVX,LONG,SANDYBRIDGE,VEX */ + {{UINT32_C(0x00000010),UINT32_C(0x01000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00002000)}}, /* 195 : AVX,SANDYBRIDGE,SD,VEX */ + {{UINT32_C(0x00000020),UINT32_C(0x01000020),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00002000)}}, /* 196 : AVX,LONG,SANDYBRIDGE,SQ,VEX */ + {{UINT32_C(0x00000020),UINT32_C(0x01000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00002000)}}, /* 197 : AVX,SANDYBRIDGE,SQ,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 198 : FUTURE,VEX,VPCLMULQDQ */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004080),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 199 : AVX512VL,EVEX,FUTURE,VPCLMULQDQ */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004001),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 200 : AVX512,EVEX,FUTURE,VPCLMULQDQ */ + {{UINT32_C(0x00000000),UINT32_C(0x04000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 201 : FMA,FUTURE,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x01000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 202 : AVX,FUTURE,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 203 : FUTURE,PRIV */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00080008)}}, /* 204 : 386,AMD,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00080400)}}, /* 205 : AMD,LONG,VEX,X86_64 */ + {{UINT32_C(0x00000000),UINT32_C(0x00800000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00080000)}}, /* 206 : AMD,SSE5,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x02000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 207 : AVX2,FUTURE,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x40000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 208 : FUTURE,RTM */ + {{UINT32_C(0x00000000),UINT32_C(0x40000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 209 : FUTURE,NOLONG,RTM */ + {{UINT32_C(0x00000000),UINT32_C(0x40000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 210 : FUTURE,LONG,RTM */ + {{UINT32_C(0x00000000),UINT32_C(0x40000800),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 211 : FUTURE,HLE,RTM */ + {{UINT32_C(0x00000000),UINT32_C(0x08000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 212 : BMI1,FUTURE,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x08000020),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 213 : BMI1,FUTURE,LONG,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x20000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 214 : FUTURE,TBM,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x20000020),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 215 : FUTURE,LONG,TBM,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x10000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 216 : BMI2,FUTURE,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x10000020),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 217 : BMI2,FUTURE,LONG,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x08000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 218 : BMI1,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x08000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 219 : BMI1,FUTURE,LONG */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000040),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 220 : FUTURE,PREFETCHWT1 */ + {{UINT32_C(0x00000000),UINT32_C(0x00000080),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 221 : FUTURE,MIB,MPX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 222 : FUTURE,MPX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000010),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 223 : FUTURE,MPX,NOLONG */ + {{UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 224 : FUTURE,LONG,MPX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000090),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 225 : FUTURE,MIB,MPX,NOLONG */ + {{UINT32_C(0x00000000),UINT32_C(0x000000a0),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 226 : FUTURE,LONG,MIB,MPX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 227 : FUTURE,SHA */ + {{UINT32_C(0x00040008),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040800),UINT32_C(0x00004000)}}, /* 228 : AVXNECONVERT,FUTURE,LATEVEX,SW,VEX */ + {{UINT32_C(0x00040400),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040800),UINT32_C(0x00004000)}}, /* 229 : AVXNECONVERT,FUTURE,LATEVEX,SX,VEX */ + {{UINT32_C(0x00040080),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040800),UINT32_C(0x00004000)}}, /* 230 : AVXNECONVERT,FUTURE,LATEVEX,SY,VEX */ + {{UINT32_C(0x00040400),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00041000),UINT32_C(0x00004000)}}, /* 231 : AVXVNNIINT8,FUTURE,LATEVEX,SX,VEX */ + {{UINT32_C(0x00040080),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00041000),UINT32_C(0x00004000)}}, /* 232 : AVXVNNIINT8,FUTURE,LATEVEX,SY,VEX */ + {{UINT32_C(0x00040400),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00042000),UINT32_C(0x00004000)}}, /* 233 : AVXIFMA,FUTURE,LATEVEX,SX,VEX */ + {{UINT32_C(0x00040080),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00042000),UINT32_C(0x00004000)}}, /* 234 : AVXIFMA,FUTURE,LATEVEX,SY,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 235 : FUTURE,VEX */ + {{UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 236 : FUTURE,SM,VEX */ + {{UINT32_C(0x00000005),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 237 : FUTURE,SB,SM,VEX */ + {{UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 238 : FUTURE,SX,VEX */ + {{UINT32_C(0x00000002),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 239 : FUTURE,SM2,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000081),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 240 : AVX512,AVX512VL,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000001),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 241 : AVX512,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000180),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 242 : AVX512DQ,AVX512VL,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000100),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 243 : AVX512DQ,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000280),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 244 : AVX512BW,AVX512VL,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000200),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 245 : AVX512BW,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000004),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 246 : AVX512ER,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000008),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 247 : AVX512PF,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000082),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 248 : AVX512CD,AVX512VL,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000002),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 249 : AVX512CD,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000880),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 250 : AVX512VBMI,AVX512VL,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000800),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 251 : AVX512VBMI,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000480),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 252 : AVX512IFMA,AVX512VL,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 253 : AVX512IFMA,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 254 : FUTURE,NOLONG */ + {{UINT32_C(0x00000000),UINT32_C(0x00000420),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 255 : FUTURE,LONG,UNDOC */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00038000),UINT32_C(0x00004000)}}, /* 256 : FUTURE,NEVER,NOP,OBSOLETE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00084000)}}, /* 257 : AMD,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00084000)}}, /* 258 : AMD,FUTURE,NOLONG */ + {{UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00084000)}}, /* 259 : AMD,FUTURE,LONG */ + {{UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 260 : FUTURE,SD */ + {{UINT32_C(0x00000020),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 261 : FUTURE,LONG,SQ */ + {{UINT32_C(0x00000000),UINT32_C(0x00008000),UINT32_C(0x00008000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 262 : FUTURE,GFNI,SSE */ + {{UINT32_C(0x00000000),UINT32_C(0x01000000),UINT32_C(0x00008000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 263 : AVX,FUTURE,GFNI,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00008080),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 264 : AVX512VL,EVEX,FUTURE,GFNI */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00008001),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 265 : AVX512,EVEX,FUTURE,GFNI */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00010080),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 266 : AVX512VBMI2,AVX512VL,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00010000),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 267 : AVX512VBMI2,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00020080),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 268 : AVX512VL,AVX512VNNI,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00020000),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 269 : AVX512VNNI,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040080),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 270 : AVX512BITALG,AVX512VL,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00040000),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 271 : AVX512BITALG,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00080080),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 272 : AVX512VL,AVX512VPOPCNTDQ,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00080000),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 273 : AVX512VPOPCNTDQ,EVEX,FUTURE */ + {{UINT32_C(0x00000040),UINT32_C(0x00000000),UINT32_C(0x00100000),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 274 : AVX5124FMAPS,EVEX,FUTURE,SO */ + {{UINT32_C(0x00000040),UINT32_C(0x00000000),UINT32_C(0x00200000),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 275 : AVX5124VNNIW,EVEX,FUTURE,SO */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x01000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 276 : FUTURE,SGX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x02000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 277 : CET,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x02000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 278 : CET,FUTURE,LONG */ + {{UINT32_C(0x00000100),UINT32_C(0x00000010),UINT32_C(0x04000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 279 : ENQCMD,FUTURE,NOLONG,SZ */ + {{UINT32_C(0x00000100),UINT32_C(0x00000000),UINT32_C(0x04000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 280 : ENQCMD,FUTURE,SZ */ + {{UINT32_C(0x00000100),UINT32_C(0x00000020),UINT32_C(0x04000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 281 : ENQCMD,FUTURE,LONG,SZ */ + {{UINT32_C(0x00000100),UINT32_C(0x00000011),UINT32_C(0x04000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 282 : ENQCMD,FUTURE,NOLONG,PRIV,SZ */ + {{UINT32_C(0x00000100),UINT32_C(0x00000001),UINT32_C(0x04000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 283 : ENQCMD,FUTURE,PRIV,SZ */ + {{UINT32_C(0x00000100),UINT32_C(0x00000021),UINT32_C(0x04000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 284 : ENQCMD,FUTURE,LONG,PRIV,SZ */ + {{UINT32_C(0x00000000),UINT32_C(0x00000001),UINT32_C(0x08000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 285 : FUTURE,PCONFIG,PRIV */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x40000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 286 : FUTURE,SERIALIZE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000001),UINT32_C(0x10000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 287 : FUTURE,PRIV,WBNOINVD */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x20000000),UINT32_C(0x00000000),UINT32_C(0x00004000)}}, /* 288 : FUTURE,TSXLDTRK */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x80000000),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 289 : AVX512BF16,EVEX,FUTURE */ + {{UINT32_C(0x00000100),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00040002),UINT32_C(0x00004000)}}, /* 290 : AMXTILE,FUTURE,LONG,SZ,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00040004),UINT32_C(0x00004000)}}, /* 291 : AMXBF16,FUTURE,LONG,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00040008),UINT32_C(0x00004000)}}, /* 292 : AMXINT8,FUTURE,LONG,VEX */ + {{UINT32_C(0x00000400),UINT32_C(0x000001a0),UINT32_C(0x00000000),UINT32_C(0x00040002),UINT32_C(0x00004000)}}, /* 293 : AMXTILE,FUTURE,LONG,MIB,SIB,SX,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00040002),UINT32_C(0x00004000)}}, /* 294 : AMXTILE,FUTURE,LONG,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00400080),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 295 : AVX512FP16,AVX512VL,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00400000),UINT32_C(0x00080000),UINT32_C(0x00004000)}}, /* 296 : AVX512FP16,EVEX,FUTURE */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00800000),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 297 : AVX512FC16,FUTURE,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00800080),UINT32_C(0x00040000),UINT32_C(0x00004000)}}, /* 298 : AVX512FC16,AVX512VL,FUTURE,VEX */ + {{UINT32_C(0x00000010),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00004000)}}, /* 299 : FUTURE,RAOINT,SD */ + {{UINT32_C(0x00000020),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00004000)}}, /* 300 : FUTURE,LONG,RAOINT,SQ */ + {{UINT32_C(0x00000000),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00000040),UINT32_C(0x00004000)}}, /* 301 : FUTURE,LONG,UINTR */ + {{UINT32_C(0x00000010),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00040080),UINT32_C(0x00004000)}}, /* 302 : CMPCCXADD,FUTURE,LONG,SD,VEX */ + {{UINT32_C(0x00000020),UINT32_C(0x00000020),UINT32_C(0x00000000),UINT32_C(0x00040080),UINT32_C(0x00004000)}}, /* 303 : CMPCCXADD,FUTURE,LONG,SQ,VEX */ + {{UINT32_C(0x00000000),UINT32_C(0x00000021),UINT32_C(0x00000000),UINT32_C(0x00000200),UINT32_C(0x00004000)}}, /* 304 : FUTURE,LONG,PRIV,WRMSRNS */ + {{UINT32_C(0x00000000),UINT32_C(0x00000021),UINT32_C(0x00000000),UINT32_C(0x00000400),UINT32_C(0x00004000)}}, /* 305 : FUTURE,LONG,MSRLIST,PRIV */ + {{UINT32_C(0x00000004),UINT32_C(0x00000001),UINT32_C(0x00000000),UINT32_C(0x00004000),UINT32_C(0x00004000)}}, /* 306 : FUTURE,HRESET,PRIV,SB */ + {{UINT32_C(0x00000000),UINT32_C(0x00000400),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000040)}}, /* 307 : P6,UNDOC */ + {{UINT32_C(0x00000000),UINT32_C(0x00000420),UINT32_C(0x00000000),UINT32_C(0x00000000),UINT32_C(0x00000400)}}, /* 308 : LONG,UNDOC,X86_64 */ +}; diff --git a/vere/ext/nasm/x86/iflaggen.h b/vere/ext/nasm/x86/iflaggen.h new file mode 100644 index 0000000..fdaee3b --- /dev/null +++ b/vere/ext/nasm/x86/iflaggen.h @@ -0,0 +1,287 @@ +/* This file is auto-generated. Don't edit. */ +#ifndef NASM_IFLAGGEN_H +#define NASM_IFLAGGEN_H 1 + +#define IF_SM 0 /* Size match */ +#define IF_SM2 1 /* Size match first two operands */ +#define IF_SB 2 /* Unsized operands can't be non-byte */ +#define IF_SW 3 /* Unsized operands can't be non-word */ +#define IF_SD 4 /* Unsized operands can't be non-dword */ +#define IF_SQ 5 /* Unsized operands can't be non-qword */ +#define IF_SO 6 /* Unsized operands can't be non-oword */ +#define IF_SY 7 /* Unsized operands can't be non-yword */ +#define IF_SZ 8 /* Unsized operands can't be non-zword */ +#define IF_SIZE 9 /* Unsized operands must match the bitsize */ +#define IF_SX 10 /* Unsized operands not allowed */ +#define IF_ANYSIZE 11 /* Ignore operand size even if explicit */ +#define IF_AR0 12 /* SB, SW, SD applies to argument 0 */ +#define IF_AR1 13 /* SB, SW, SD applies to argument 1 */ +#define IF_AR2 14 /* SB, SW, SD applies to argument 2 */ +#define IF_AR3 15 /* SB, SW, SD applies to argument 3 */ +#define IF_AR4 16 /* SB, SW, SD applies to argument 4 */ +#define IF_OPT 17 /* Optimizing assembly only */ +#define IF_LATEVEX 18 /* Only if EVEX instructions are disabled */ + /* 18...31 reserved */ +#define IF_PRIV 32 /* Privileged instruction */ +#define IF_SMM 33 /* Only valid in SMM */ +#define IF_PROT 34 /* Protected mode only */ +#define IF_LOCK 35 /* Lockable if operand 0 is memory */ +#define IF_NOLONG 36 /* Not available in long mode */ +#define IF_LONG 37 /* Long mode */ +#define IF_NOHLE 38 /* HLE prefixes forbidden */ +#define IF_MIB 39 /* split base/index EA */ +#define IF_SIB 40 /* SIB encoding required */ +#define IF_BND 41 /* BND (0xF2) prefix available */ +#define IF_UNDOC 42 /* Undocumented */ +#define IF_HLE 43 /* HLE prefixed */ +#define IF_FPU 44 /* FPU */ +#define IF_MMX 45 /* MMX */ +#define IF_3DNOW 46 /* 3DNow! */ +#define IF_SSE 47 /* SSE (KNI, MMX2) */ +#define IF_SSE2 48 /* SSE2 */ +#define IF_SSE3 49 /* SSE3 (PNI) */ +#define IF_VMX 50 /* VMX */ +#define IF_SSSE3 51 /* SSSE3 */ +#define IF_SSE4A 52 /* AMD SSE4a */ +#define IF_SSE41 53 /* SSE4.1 */ +#define IF_SSE42 54 /* SSE4.2 */ +#define IF_SSE5 55 /* SSE5 */ +#define IF_AVX 56 /* AVX (256-bit floating point) */ +#define IF_AVX2 57 /* AVX2 (256-bit integer) */ +#define IF_FMA 58 /* */ +#define IF_BMI1 59 /* */ +#define IF_BMI2 60 /* */ +#define IF_TBM 61 /* */ +#define IF_RTM 62 /* */ +#define IF_INVPCID 63 /* */ +#define IF_AVX512 64 /* AVX-512F (512-bit base architecture) */ +#define IF_AVX512CD 65 /* AVX-512 Conflict Detection */ +#define IF_AVX512ER 66 /* AVX-512 Exponential and Reciprocal */ +#define IF_AVX512PF 67 /* AVX-512 Prefetch */ +#define IF_MPX 68 /* MPX */ +#define IF_SHA 69 /* SHA */ +#define IF_PREFETCHWT1 70 /* PREFETCHWT1 */ +#define IF_AVX512VL 71 /* AVX-512 Vector Length Orthogonality */ +#define IF_AVX512DQ 72 /* AVX-512 Dword and Qword */ +#define IF_AVX512BW 73 /* AVX-512 Byte and Word */ +#define IF_AVX512IFMA 74 /* AVX-512 IFMA instructions */ +#define IF_AVX512VBMI 75 /* AVX-512 VBMI instructions */ +#define IF_AES 76 /* AES instructions */ +#define IF_VAES 77 /* AES AVX instructions */ +#define IF_VPCLMULQDQ 78 /* AVX Carryless Multiplication */ +#define IF_GFNI 79 /* Galois Field instructions */ +#define IF_AVX512VBMI2 80 /* AVX-512 VBMI2 instructions */ +#define IF_AVX512VNNI 81 /* AVX-512 VNNI instructions */ +#define IF_AVX512BITALG 82 /* AVX-512 Bit Algorithm instructions */ +#define IF_AVX512VPOPCNTDQ 83 /* AVX-512 VPOPCNTD/VPOPCNTQ */ +#define IF_AVX5124FMAPS 84 /* AVX-512 4-iteration multiply-add */ +#define IF_AVX5124VNNIW 85 /* AVX-512 4-iteration dot product */ +#define IF_AVX512FP16 86 /* AVX-512 FP16 instructions */ +#define IF_AVX512FC16 87 /* AVX-512 FC16 instructions */ +#define IF_SGX 88 /* Intel Software Guard Extensions (SGX) */ +#define IF_CET 89 /* Intel Control-Flow Enforcement Technology (CET) */ +#define IF_ENQCMD 90 /* Enqueue command instructions */ +#define IF_PCONFIG 91 /* Platform configuration instruction */ +#define IF_WBNOINVD 92 /* Writeback and do not invalidate instruction */ +#define IF_TSXLDTRK 93 /* TSX suspend load address tracking */ +#define IF_SERIALIZE 94 /* SERIALIZE instruction */ +#define IF_AVX512BF16 95 /* AVX-512 bfloat16 */ +#define IF_AVX512VP2INTERSECT 96 /* AVX-512 VP2INTERSECT instructions */ +#define IF_AMXTILE 97 /* AMX tile configuration instructions */ +#define IF_AMXBF16 98 /* AMX bfloat16 multiplication */ +#define IF_AMXINT8 99 /* AMX 8-bit integer multiplication */ +#define IF_FRED 100 /* Flexible Return and Exception Delivery (FRED) */ +#define IF_RAOINT 101 /* Remote atomic operations (RAO-INT) */ +#define IF_UINTR 102 /* User interrupts */ +#define IF_CMPCCXADD 103 /* CMPccXADD instructions */ +#define IF_PREFETCHI 104 /* PREFETCHI0 and PREFETCHI1 */ +#define IF_WRMSRNS 105 /* WRMSRNS */ +#define IF_MSRLIST 106 /* RDMSRLIST and WRMSRLIST */ +#define IF_AVXNECONVERT 107 /* AVX exceptionless floating-point conversions */ +#define IF_AVXVNNIINT8 108 /* AVX Vector Neural Network 8-bit integer instructions */ +#define IF_AVXIFMA 109 /* AVX integer multiply and add */ +#define IF_HRESET 110 /* History reset */ +#define IF_OBSOLETE 111 /* Instruction removed from architecture */ +#define IF_NEVER 112 /* Instruction never implemented */ +#define IF_NOP 113 /* Instruction is always a (nonintentional) NOP */ +#define IF_VEX 114 /* VEX or XOP encoded instruction */ +#define IF_EVEX 115 /* EVEX encoded instruction */ + /* 115...127 reserved */ +#define IF_8086 128 /* 8086 */ +#define IF_186 129 /* 186+ */ +#define IF_286 130 /* 286+ */ +#define IF_386 131 /* 386+ */ +#define IF_486 132 /* 486+ */ +#define IF_PENT 133 /* Pentium */ +#define IF_P6 134 /* P6 */ +#define IF_KATMAI 135 /* Katmai */ +#define IF_WILLAMETTE 136 /* Willamette */ +#define IF_PRESCOTT 137 /* Prescott */ +#define IF_X86_64 138 /* x86-64 (long or legacy mode) */ +#define IF_NEHALEM 139 /* Nehalem */ +#define IF_WESTMERE 140 /* Westmere */ +#define IF_SANDYBRIDGE 141 /* Sandy Bridge */ +#define IF_FUTURE 142 /* Ivy Bridge or newer */ +#define IF_IA64 143 /* IA64 (in x86 mode) */ +#define IF_DEFAULT 144 /* Default CPU level */ +#define IF_ANY 145 /* Allow any known instruction */ +#define IF_CYRIX 146 /* Cyrix-specific */ +#define IF_AMD 147 /* AMD-specific */ + /* 147...159 reserved */ + +/* Mask bits for field 0 : 0...31 */ +#define IFM_SM UINT32_C(0x00000001) /* 0 */ +#define IFM_SM2 UINT32_C(0x00000002) /* 1 */ +#define IFM_SB UINT32_C(0x00000004) /* 2 */ +#define IFM_SW UINT32_C(0x00000008) /* 3 */ +#define IFM_SD UINT32_C(0x00000010) /* 4 */ +#define IFM_SQ UINT32_C(0x00000020) /* 5 */ +#define IFM_SO UINT32_C(0x00000040) /* 6 */ +#define IFM_SY UINT32_C(0x00000080) /* 7 */ +#define IFM_SZ UINT32_C(0x00000100) /* 8 */ +#define IFM_SIZE UINT32_C(0x00000200) /* 9 */ +#define IFM_SX UINT32_C(0x00000400) /* 10 */ +#define IFM_ANYSIZE UINT32_C(0x00000800) /* 11 */ +#define IFM_AR0 UINT32_C(0x00001000) /* 12 */ +#define IFM_AR1 UINT32_C(0x00002000) /* 13 */ +#define IFM_AR2 UINT32_C(0x00004000) /* 14 */ +#define IFM_AR3 UINT32_C(0x00008000) /* 15 */ +#define IFM_AR4 UINT32_C(0x00010000) /* 16 */ +#define IFM_OPT UINT32_C(0x00020000) /* 17 */ +#define IFM_LATEVEX UINT32_C(0x00040000) /* 18 */ +/* Mask bits for field 1 : 32...63 */ +#define IFM_PRIV UINT32_C(0x00000001) /* 32 */ +#define IFM_SMM UINT32_C(0x00000002) /* 33 */ +#define IFM_PROT UINT32_C(0x00000004) /* 34 */ +#define IFM_LOCK UINT32_C(0x00000008) /* 35 */ +#define IFM_NOLONG UINT32_C(0x00000010) /* 36 */ +#define IFM_LONG UINT32_C(0x00000020) /* 37 */ +#define IFM_NOHLE UINT32_C(0x00000040) /* 38 */ +#define IFM_MIB UINT32_C(0x00000080) /* 39 */ +#define IFM_SIB UINT32_C(0x00000100) /* 40 */ +#define IFM_BND UINT32_C(0x00000200) /* 41 */ +#define IFM_UNDOC UINT32_C(0x00000400) /* 42 */ +#define IFM_HLE UINT32_C(0x00000800) /* 43 */ +#define IFM_FPU UINT32_C(0x00001000) /* 44 */ +#define IFM_MMX UINT32_C(0x00002000) /* 45 */ +#define IFM_3DNOW UINT32_C(0x00004000) /* 46 */ +#define IFM_SSE UINT32_C(0x00008000) /* 47 */ +#define IFM_SSE2 UINT32_C(0x00010000) /* 48 */ +#define IFM_SSE3 UINT32_C(0x00020000) /* 49 */ +#define IFM_VMX UINT32_C(0x00040000) /* 50 */ +#define IFM_SSSE3 UINT32_C(0x00080000) /* 51 */ +#define IFM_SSE4A UINT32_C(0x00100000) /* 52 */ +#define IFM_SSE41 UINT32_C(0x00200000) /* 53 */ +#define IFM_SSE42 UINT32_C(0x00400000) /* 54 */ +#define IFM_SSE5 UINT32_C(0x00800000) /* 55 */ +#define IFM_AVX UINT32_C(0x01000000) /* 56 */ +#define IFM_AVX2 UINT32_C(0x02000000) /* 57 */ +#define IFM_FMA UINT32_C(0x04000000) /* 58 */ +#define IFM_BMI1 UINT32_C(0x08000000) /* 59 */ +#define IFM_BMI2 UINT32_C(0x10000000) /* 60 */ +#define IFM_TBM UINT32_C(0x20000000) /* 61 */ +#define IFM_RTM UINT32_C(0x40000000) /* 62 */ +#define IFM_INVPCID UINT32_C(0x80000000) /* 63 */ +/* Mask bits for field 2 : 64...95 */ +#define IFM_AVX512 UINT32_C(0x00000001) /* 64 */ +#define IFM_AVX512CD UINT32_C(0x00000002) /* 65 */ +#define IFM_AVX512ER UINT32_C(0x00000004) /* 66 */ +#define IFM_AVX512PF UINT32_C(0x00000008) /* 67 */ +#define IFM_MPX UINT32_C(0x00000010) /* 68 */ +#define IFM_SHA UINT32_C(0x00000020) /* 69 */ +#define IFM_PREFETCHWT1 UINT32_C(0x00000040) /* 70 */ +#define IFM_AVX512VL UINT32_C(0x00000080) /* 71 */ +#define IFM_AVX512DQ UINT32_C(0x00000100) /* 72 */ +#define IFM_AVX512BW UINT32_C(0x00000200) /* 73 */ +#define IFM_AVX512IFMA UINT32_C(0x00000400) /* 74 */ +#define IFM_AVX512VBMI UINT32_C(0x00000800) /* 75 */ +#define IFM_AES UINT32_C(0x00001000) /* 76 */ +#define IFM_VAES UINT32_C(0x00002000) /* 77 */ +#define IFM_VPCLMULQDQ UINT32_C(0x00004000) /* 78 */ +#define IFM_GFNI UINT32_C(0x00008000) /* 79 */ +#define IFM_AVX512VBMI2 UINT32_C(0x00010000) /* 80 */ +#define IFM_AVX512VNNI UINT32_C(0x00020000) /* 81 */ +#define IFM_AVX512BITALG UINT32_C(0x00040000) /* 82 */ +#define IFM_AVX512VPOPCNTDQ UINT32_C(0x00080000) /* 83 */ +#define IFM_AVX5124FMAPS UINT32_C(0x00100000) /* 84 */ +#define IFM_AVX5124VNNIW UINT32_C(0x00200000) /* 85 */ +#define IFM_AVX512FP16 UINT32_C(0x00400000) /* 86 */ +#define IFM_AVX512FC16 UINT32_C(0x00800000) /* 87 */ +#define IFM_SGX UINT32_C(0x01000000) /* 88 */ +#define IFM_CET UINT32_C(0x02000000) /* 89 */ +#define IFM_ENQCMD UINT32_C(0x04000000) /* 90 */ +#define IFM_PCONFIG UINT32_C(0x08000000) /* 91 */ +#define IFM_WBNOINVD UINT32_C(0x10000000) /* 92 */ +#define IFM_TSXLDTRK UINT32_C(0x20000000) /* 93 */ +#define IFM_SERIALIZE UINT32_C(0x40000000) /* 94 */ +#define IFM_AVX512BF16 UINT32_C(0x80000000) /* 95 */ +/* Mask bits for field 3 : 96...127 */ +#define IFM_AVX512VP2INTERSECT UINT32_C(0x00000001) /* 96 */ +#define IFM_AMXTILE UINT32_C(0x00000002) /* 97 */ +#define IFM_AMXBF16 UINT32_C(0x00000004) /* 98 */ +#define IFM_AMXINT8 UINT32_C(0x00000008) /* 99 */ +#define IFM_FRED UINT32_C(0x00000010) /* 100 */ +#define IFM_RAOINT UINT32_C(0x00000020) /* 101 */ +#define IFM_UINTR UINT32_C(0x00000040) /* 102 */ +#define IFM_CMPCCXADD UINT32_C(0x00000080) /* 103 */ +#define IFM_PREFETCHI UINT32_C(0x00000100) /* 104 */ +#define IFM_WRMSRNS UINT32_C(0x00000200) /* 105 */ +#define IFM_MSRLIST UINT32_C(0x00000400) /* 106 */ +#define IFM_AVXNECONVERT UINT32_C(0x00000800) /* 107 */ +#define IFM_AVXVNNIINT8 UINT32_C(0x00001000) /* 108 */ +#define IFM_AVXIFMA UINT32_C(0x00002000) /* 109 */ +#define IFM_HRESET UINT32_C(0x00004000) /* 110 */ +#define IFM_OBSOLETE UINT32_C(0x00008000) /* 111 */ +#define IFM_NEVER UINT32_C(0x00010000) /* 112 */ +#define IFM_NOP UINT32_C(0x00020000) /* 113 */ +#define IFM_VEX UINT32_C(0x00040000) /* 114 */ +#define IFM_EVEX UINT32_C(0x00080000) /* 115 */ +/* Mask bits for field 4 : 128...159 */ +#define IFM_8086 UINT32_C(0x00000001) /* 128 */ +#define IFM_186 UINT32_C(0x00000002) /* 129 */ +#define IFM_286 UINT32_C(0x00000004) /* 130 */ +#define IFM_386 UINT32_C(0x00000008) /* 131 */ +#define IFM_486 UINT32_C(0x00000010) /* 132 */ +#define IFM_PENT UINT32_C(0x00000020) /* 133 */ +#define IFM_P6 UINT32_C(0x00000040) /* 134 */ +#define IFM_KATMAI UINT32_C(0x00000080) /* 135 */ +#define IFM_WILLAMETTE UINT32_C(0x00000100) /* 136 */ +#define IFM_PRESCOTT UINT32_C(0x00000200) /* 137 */ +#define IFM_X86_64 UINT32_C(0x00000400) /* 138 */ +#define IFM_NEHALEM UINT32_C(0x00000800) /* 139 */ +#define IFM_WESTMERE UINT32_C(0x00001000) /* 140 */ +#define IFM_SANDYBRIDGE UINT32_C(0x00002000) /* 141 */ +#define IFM_FUTURE UINT32_C(0x00004000) /* 142 */ +#define IFM_IA64 UINT32_C(0x00008000) /* 143 */ +#define IFM_DEFAULT UINT32_C(0x00010000) /* 144 */ +#define IFM_ANY UINT32_C(0x00020000) /* 145 */ +#define IFM_CYRIX UINT32_C(0x00040000) /* 146 */ +#define IFM_AMD UINT32_C(0x00080000) /* 147 */ + +/* IF_SM (0) ... IF_LATEVEX (18) */ +#define IF_IGEN_FIRST 0 +#define IF_IGEN_COUNT 19 +#define IF_IGEN_FIELD 0 +#define IF_IGEN_NFIELDS 1 + +/* IF_PRIV (32) ... IF_EVEX (115) */ +#define IF_FEATURE_FIRST 32 +#define IF_FEATURE_COUNT 84 +#define IF_FEATURE_FIELD 1 +#define IF_FEATURE_NFIELDS 3 + +/* IF_8086 (128) ... IF_AMD (147) */ +#define IF_CPU_FIRST 128 +#define IF_CPU_COUNT 20 +#define IF_CPU_FIELD 4 +#define IF_CPU_NFIELDS 1 + +#define IF_FIELD_COUNT 5 +typedef struct { + uint32_t field[IF_FIELD_COUNT]; +} iflag_t; + +/* All combinations of instruction flags used in instruction patterns */ +extern const iflag_t insns_flags[309]; + +#endif /* NASM_IFLAGGEN_H */ diff --git a/vere/ext/nasm/x86/iflags.ph b/vere/ext/nasm/x86/iflags.ph new file mode 100644 index 0000000..ffeb8e5 --- /dev/null +++ b/vere/ext/nasm/x86/iflags.ph @@ -0,0 +1,153 @@ +# -*- perl -*- + +# +# dword bound, index 0 - specific flags +# +if_align('IGEN'); + +if_("SM", "Size match"); +if_("SM2", "Size match first two operands"); +if_("SB", "Unsized operands can't be non-byte"); +if_("SW", "Unsized operands can't be non-word"); +if_("SD", "Unsized operands can't be non-dword"); +if_("SQ", "Unsized operands can't be non-qword"); +if_("SO", "Unsized operands can't be non-oword"); +if_("SY", "Unsized operands can't be non-yword"); +if_("SZ", "Unsized operands can't be non-zword"); +if_("SIZE", "Unsized operands must match the bitsize"); +if_("SX", "Unsized operands not allowed"); +if_("ANYSIZE", "Ignore operand size even if explicit"); +if_("AR0", "SB, SW, SD applies to argument 0"); +if_("AR1", "SB, SW, SD applies to argument 1"); +if_("AR2", "SB, SW, SD applies to argument 2"); +if_("AR3", "SB, SW, SD applies to argument 3"); +if_("AR4", "SB, SW, SD applies to argument 4"); +if_("OPT", "Optimizing assembly only"); +if_("LATEVEX", "Only if EVEX instructions are disabled"); + +# +# dword bound - instruction feature filtering flags +# +if_align('FEATURE'); + +if_("PRIV", "Privileged instruction"); +if_("SMM", "Only valid in SMM"); +if_("PROT", "Protected mode only"); +if_("LOCK", "Lockable if operand 0 is memory"); +if_("NOLONG", "Not available in long mode"); +if_("LONG", "Long mode"); +if_("NOHLE", "HLE prefixes forbidden"); +if_("MIB", "split base/index EA"); +if_("SIB", "SIB encoding required"); +if_("BND", "BND (0xF2) prefix available"); +if_("UNDOC", "Undocumented"); +if_("HLE", "HLE prefixed"); +if_("FPU", "FPU"); +if_("MMX", "MMX"); +if_("3DNOW", "3DNow!"); +if_("SSE", "SSE (KNI, MMX2)"); +if_("SSE2", "SSE2"); +if_("SSE3", "SSE3 (PNI)"); +if_("VMX", "VMX"); +if_("SSSE3", "SSSE3"); +if_("SSE4A", "AMD SSE4a"); +if_("SSE41", "SSE4.1"); +if_("SSE42", "SSE4.2"); +if_("SSE5", "SSE5"); +if_("AVX", "AVX (256-bit floating point)"); +if_("AVX2", "AVX2 (256-bit integer)"); +if_("FMA", ""); +if_("BMI1", ""); +if_("BMI2", ""); +if_("TBM", ""); +if_("RTM", ""); +if_("INVPCID", ""); +if_("AVX512", "AVX-512F (512-bit base architecture)"); +if_("AVX512CD", "AVX-512 Conflict Detection"); +if_("AVX512ER", "AVX-512 Exponential and Reciprocal"); +if_("AVX512PF", "AVX-512 Prefetch"); +if_("MPX", "MPX"); +if_("SHA", "SHA"); +if_("PREFETCHWT1", "PREFETCHWT1"); +if_("AVX512VL", "AVX-512 Vector Length Orthogonality"); +if_("AVX512DQ", "AVX-512 Dword and Qword"); +if_("AVX512BW", "AVX-512 Byte and Word"); +if_("AVX512IFMA", "AVX-512 IFMA instructions"); +if_("AVX512VBMI", "AVX-512 VBMI instructions"); +if_("AES", "AES instructions"); +if_("VAES", "AES AVX instructions"); +if_("VPCLMULQDQ", "AVX Carryless Multiplication"); +if_("GFNI", "Galois Field instructions"); +if_("AVX512VBMI2", "AVX-512 VBMI2 instructions"); +if_("AVX512VNNI", "AVX-512 VNNI instructions"); +if_("AVX512BITALG", "AVX-512 Bit Algorithm instructions"); +if_("AVX512VPOPCNTDQ", "AVX-512 VPOPCNTD/VPOPCNTQ"); +if_("AVX5124FMAPS", "AVX-512 4-iteration multiply-add"); +if_("AVX5124VNNIW", "AVX-512 4-iteration dot product"); +if_("AVX512FP16", "AVX-512 FP16 instructions"); +if_("AVX512FC16", "AVX-512 FC16 instructions"); +if_("SGX", "Intel Software Guard Extensions (SGX)"); +if_("CET", "Intel Control-Flow Enforcement Technology (CET)"); +if_("ENQCMD", "Enqueue command instructions"); +if_("PCONFIG", "Platform configuration instruction"); +if_("WBNOINVD", "Writeback and do not invalidate instruction"); +if_("TSXLDTRK", "TSX suspend load address tracking"); +if_("SERIALIZE", "SERIALIZE instruction"); +if_("AVX512BF16", "AVX-512 bfloat16"); +if_("AVX512VP2INTERSECT", "AVX-512 VP2INTERSECT instructions"); +if_("AMXTILE", "AMX tile configuration instructions"); +if_("AMXBF16", "AMX bfloat16 multiplication"); +if_("AMXINT8", "AMX 8-bit integer multiplication"); +if_("FRED", "Flexible Return and Exception Delivery (FRED)"); +if_("RAOINT", "Remote atomic operations (RAO-INT)"); +if_("UINTR", "User interrupts"); +if_("CMPCCXADD", "CMPccXADD instructions"); +if_("PREFETCHI", "PREFETCHI0 and PREFETCHI1"); +if_("WRMSRNS", "WRMSRNS"); +if_("MSRLIST", "RDMSRLIST and WRMSRLIST"); +if_("AVXNECONVERT", "AVX exceptionless floating-point conversions"); +if_("AVXVNNIINT8", "AVX Vector Neural Network 8-bit integer instructions"); +if_("AVXIFMA", "AVX integer multiply and add"); +if_("HRESET", "History reset"); + +# Put these last to minimize their relevance +if_("OBSOLETE", "Instruction removed from architecture"); +if_("NEVER", "Instruction never implemented"); +if_("NOP", "Instruction is always a (nonintentional) NOP"); +if_("VEX", "VEX or XOP encoded instruction"); +if_("EVEX", "EVEX encoded instruction"); + +# +# dword bound - cpu type flags +# +# The CYRIX and AMD flags should have the highest bit values; the +# disassembler selection algorithm depends on it. +# +if_align('CPU'); + +if_("8086", "8086"); +if_("186", "186+"); +if_("286", "286+"); +if_("386", "386+"); +if_("486", "486+"); +if_("PENT", "Pentium"); +if_("P6", "P6"); +if_("KATMAI", "Katmai"); +if_("WILLAMETTE", "Willamette"); +if_("PRESCOTT", "Prescott"); +if_("X86_64", "x86-64 (long or legacy mode)"); +if_("NEHALEM", "Nehalem"); +if_("WESTMERE", "Westmere"); +if_("SANDYBRIDGE", "Sandy Bridge"); +if_("FUTURE", "Ivy Bridge or newer"); +if_("IA64", "IA64 (in x86 mode)"); + +# Default CPU level +if_("DEFAULT", "Default CPU level"); + +# Must be the last CPU definition +if_("ANY", "Allow any known instruction"); + +# These must come after the CPU definitions proper +if_("CYRIX", "Cyrix-specific"); +if_("AMD", "AMD-specific"); diff --git a/vere/ext/nasm/x86/insns-iflags.ph b/vere/ext/nasm/x86/insns-iflags.ph new file mode 100644 index 0000000..3c73be9 --- /dev/null +++ b/vere/ext/nasm/x86/insns-iflags.ph @@ -0,0 +1,251 @@ +#!/usr/bin/perl +## -------------------------------------------------------------------------- +## +## Copyright 1996-2018 The NASM Authors - All Rights Reserved +## See the file AUTHORS included with the NASM distribution for +## the specific copyright holders. +## +## 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. +## +## -------------------------------------------------------------------------- + +# +# Instruction template flags. These specify which processor +# targets the instruction is eligible for, whether it is +# privileged or undocumented, and also specify extra error +# checking on the matching of the instruction. +# +# IF_SM stands for Size Match: any operand whose size is not +# explicitly specified by the template is `really' intended to be +# the same size as the first size-specified operand. +# Non-specification is tolerated in the input instruction, but +# _wrong_ specification is not. +# +# IF_SM2 invokes Size Match on only the first _two_ operands, for +# three-operand instructions such as SHLD: it implies that the +# first two operands must match in size, but that the third is +# required to be _unspecified_. +# +# IF_SB invokes Size Byte: operands with unspecified size in the +# template are really bytes, and so no non-byte specification in +# the input instruction will be tolerated. IF_SW similarly invokes +# Size Word, and IF_SD invokes Size Doubleword. +# +# (The default state if neither IF_SM nor IF_SM2 is specified is +# that any operand with unspecified size in the template is +# required to have unspecified size in the instruction too...) +# +# iflag_t is defined to store these flags. +# +# The order does matter here. We use some predefined masks to quick test +# for a set of flags, so be careful moving bits (and +# don't forget to update C code generation then). +# +sub dword_align($) { + my($n) = @_; + + $$n = ($$n + 31) & ~31; + return $n; +} + + +my $n_iflags = 0; +my %flag_byname; +my @flag_bynum; +my @flag_fields; +my $iflag_words; + +sub if_($$) { + my($name, $def) = @_; + my $num = $n_iflags++; + my $v = [$num, $name, $def]; + + $flag_byname{$name} = $v; + $flag_bynum[$num] = $v; + + return 1; +} +sub if_align($) { + my($name) = @_; + + if ($#flag_fields >= 0) { + $flag_fields[$#flag_fields]->[2] = $n_iflags-1; + } + $n_iflags = ($n_iflags + 31) & ~31; + + if (defined($name)) { + push(@flag_fields, [$name, $n_iflags, undef]); + } + + return 1; +} + +sub if_end() { + if_align(undef); + $iflag_words = $n_iflags >> 5; +} + +# The actual flags definitions +require 'x86/iflags.ph'; +if_end(); + +# Compute the combinations of instruction flags actually used in templates + +my %insns_flag_hash = (); +my @insns_flag_values = (); +my @insns_flag_lists = (); + +sub insns_flag_index(@) { + return undef if $_[0] eq "ignore"; + + my @prekey = sort(@_); + my $key = join(',', @prekey); + my $flag_index = $insns_flag_hash{$key}; + + unless (defined($flag_index)) { + my @newkey = (0) x $iflag_words; + + foreach my $i (@prekey) { + my $flag = $flag_byname{$i}; + die "No key for $i (in $key)\n" if not defined($flag); + $newkey[$flag->[0] >> 5] |= (1 << ($flag->[0] & 31)); + } + + my $str = join(',', map { sprintf("UINT32_C(0x%08x)",$_) } @newkey); + + push @insns_flag_values, $str; + push @insns_flag_lists, $key; + $insns_flag_hash{$key} = $flag_index = $#insns_flag_values; + } + + return $flag_index; +} + +sub write_iflaggen_h() { + print STDERR "Writing $oname...\n"; + + open(N, '>', $oname) or die "$0: $!\n"; + + print N "/* This file is auto-generated. Don't edit. */\n"; + print N "#ifndef NASM_IFLAGGEN_H\n"; + print N "#define NASM_IFLAGGEN_H 1\n\n"; + + # The flag numbers; the <= in the loop is intentional + + my $next = 0; + for ($i = 0; $i <= $n_iflags; $i++) { + if ((defined($flag_bynum[$i]) || $i >= $n_iflags) && + $next != $i) { + printf N "%-31s /* %-64s */\n", '', + ($next < $i-1) ? + sprintf("%d...%d reserved", $next-1, $i-1) : + sprintf("%d reserved", $i-1); + } + + if (defined($flag_bynum[$i])) { + printf N "#define IF_%-16s %3d /* %-64s */\n", + $flag_bynum[$i]->[1], $i, $flag_bynum[$i]->[2]; + $next = $i+1; + } + } + print N "\n"; + + # The flag masks for individual bits + + $next = 0; + for ($i = 0; $i < $n_iflags; $i++) { + if (($i & 31) == 0) { + printf N "/* Mask bits for field %d : %d...%d */\n", + $i >> 5, $i, $i+31; + } + if (defined(my $v = $flag_bynum[$i])) { + printf N "#define IFM_%-15s UINT32_C(0x%08x) /* %3d */\n", + $v->[1], 1 << ($i & 31), $i; + $next = $i+1; + } + } + print N "\n"; + + # The names of flag groups + + for ($i = 0; $i <= $#flag_fields; $i++) { + printf N "/* IF_%s (%d) ... IF_%s (%d) */\n", + $flag_bynum[$flag_fields[$i]->[1]]->[1], + $flag_bynum[$flag_fields[$i]->[1]]->[0], + $flag_bynum[$flag_fields[$i]->[2]]->[1], + $flag_bynum[$flag_fields[$i]->[2]]->[0]; + + # Bit definitions + printf N "#define %-19s %3d\n", + 'IF_'.$flag_fields[$i]->[0].'_FIRST', + $flag_fields[$i]->[1]; + printf N "#define %-19s %3d\n", + 'IF_'.$flag_fields[$i]->[0].'_COUNT', + ($flag_fields[$i]->[2] - $flag_fields[$i]->[1] + 1); + + # Field (uint32) definitions + printf N "#define %-19s %3d\n", + 'IF_'.$flag_fields[$i]->[0].'_FIELD', + $flag_fields[$i]->[1] >> 5; + printf N "#define %-19s %3d\n", + 'IF_'.$flag_fields[$i]->[0].'_NFIELDS', + ($flag_fields[$i]->[2] - $flag_fields[$i]->[1] + 31) >> 5; + print N "\n"; + } + + printf N "#define IF_FIELD_COUNT %d\n", $iflag_words; + print N "typedef struct {\n"; + print N " uint32_t field[IF_FIELD_COUNT];\n"; + print N "} iflag_t;\n"; + + print N "\n"; + print N "/* All combinations of instruction flags used in instruction patterns */\n"; + printf N "extern const iflag_t insns_flags[%d];\n\n", + $#insns_flag_values + 1; + + print N "#endif /* NASM_IFLAGGEN_H */\n"; + close N; +} + +sub write_iflag_c() { + print STDERR "Writing $oname...\n"; + + open(N, '>', $oname) or die "$0: $!\n"; + + print N "/* This file is auto-generated. Don't edit. */\n"; + print N "#include \"iflag.h\"\n\n"; + print N "/* All combinations of instruction flags used in instruction patterns */\n"; + printf N "const iflag_t insns_flags[%d] = {\n", + $#insns_flag_values + 1; + foreach my $i (0 .. $#insns_flag_values) { + printf N " {{%s}}, /* %3d : %s */\n", + $insns_flag_values[$i], $i, $insns_flag_lists[$i]; + } + print N "};\n"; + close N; +} + +1; diff --git a/vere/ext/nasm/x86/insns.dat b/vere/ext/nasm/x86/insns.dat new file mode 100644 index 0000000..17a3f10 --- /dev/null +++ b/vere/ext/nasm/x86/insns.dat @@ -0,0 +1,6570 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2022 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; 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. +;; +;; -------------------------------------------------------------------------- + +; +; insns.dat table of instructions for the Netwide Assembler +; +; Format of file: All four fields must be present on every functional +; line. Hence `void' for no-operand instructions, and `\0' for such +; as EQU. If the last three fields are all `ignore', no action is +; taken except to register the opcode as being present. +; +; For a detailed description of the code string (third field), please +; see insns.pl and the comment at the top of assemble.c. For a detailed +; description of the flags (fourth field), please see insns-iflags.ph. +; +; Comments with a pound sign after the semicolon generate section +; subheaders in the NASM documentation. +; + +;# Special instructions (pseudo-ops) +; These MUST be first in this file and must maintain the pattern of +; Dx by size, RESx by size, and INCBIN in that order. +DB ignore ignore ignore +DW ignore ignore ignore +DD ignore ignore ignore +DQ ignore ignore ignore +DT ignore ignore ignore +DO ignore ignore ignore +DY ignore ignore ignore +DZ ignore ignore ignore +RESB imm [ resb] 8086 +RESW imm [ resb] 8086 +RESD imm [ resb] 8086 +RESQ imm [ resb] 8086 +REST imm [ resb] 8086 +RESO imm [ resb] 8086 +RESY imm [ resb] 8086 +RESZ imm [ resb] 8086 +INCBIN ignore ignore ignore + +;# Conventional instructions +AAA void [ 37] 8086,NOLONG +AAD void [ d5 0a] 8086,NOLONG +AAD imm [i: d5 ib,u] 8086,SB,NOLONG +AAM void [ d4 0a] 8086,NOLONG +AAM imm [i: d4 ib,u] 8086,SB,NOLONG +AAS void [ 3f] 8086,NOLONG +ADC mem,reg8 [mr: hle 10 /r] 8086,SM,LOCK +ADC reg8,reg8 [mr: 10 /r] 8086 +ADC mem,reg16 [mr: hle o16 11 /r] 8086,SM,LOCK +ADC reg16,reg16 [mr: o16 11 /r] 8086 +ADC mem,reg32 [mr: hle o32 11 /r] 386,SM,LOCK +ADC reg32,reg32 [mr: o32 11 /r] 386 +ADC mem,reg64 [mr: hle o64 11 /r] X86_64,LONG,SM,LOCK +ADC reg64,reg64 [mr: o64 11 /r] X86_64,LONG +ADC reg8,mem [rm: 12 /r] 8086,SM +ADC reg8,reg8 [rm: 12 /r] 8086 +ADC reg16,mem [rm: o16 13 /r] 8086,SM +ADC reg16,reg16 [rm: o16 13 /r] 8086 +ADC reg32,mem [rm: o32 13 /r] 386,SM +ADC reg32,reg32 [rm: o32 13 /r] 386 +ADC reg64,mem [rm: o64 13 /r] X86_64,LONG,SM +ADC reg64,reg64 [rm: o64 13 /r] X86_64,LONG +ADC rm16,imm8 [mi: hle o16 83 /2 ib,s] 8086,LOCK +ADC rm32,imm8 [mi: hle o32 83 /2 ib,s] 386,LOCK +ADC rm64,imm8 [mi: hle o64 83 /2 ib,s] X86_64,LONG,LOCK +ADC reg_al,imm [-i: 14 ib] 8086,SM +ADC reg_ax,sbyteword [mi: o16 83 /2 ib,s] 8086,SM,ND +ADC reg_ax,imm [-i: o16 15 iw] 8086,SM +ADC reg_eax,sbytedword [mi: o32 83 /2 ib,s] 386,SM,ND +ADC reg_eax,imm [-i: o32 15 id] 386,SM +ADC reg_rax,sbytedword [mi: o64 83 /2 ib,s] X86_64,LONG,SM,ND +ADC reg_rax,imm [-i: o64 15 id,s] X86_64,LONG,SM +ADC rm8,imm [mi: hle 80 /2 ib] 8086,SM,LOCK +ADC rm16,sbyteword [mi: hle o16 83 /2 ib,s] 8086,SM,LOCK,ND +ADC rm16,imm [mi: hle o16 81 /2 iw] 8086,SM,LOCK +ADC rm32,sbytedword [mi: hle o32 83 /2 ib,s] 386,SM,LOCK,ND +ADC rm32,imm [mi: hle o32 81 /2 id] 386,SM,LOCK +ADC rm64,sbytedword [mi: hle o64 83 /2 ib,s] X86_64,LONG,SM,LOCK,ND +ADC rm64,imm [mi: hle o64 81 /2 id,s] X86_64,LONG,SM,LOCK +ADC mem,imm8 [mi: hle 80 /2 ib] 8086,SM,LOCK,ND +ADC mem,sbyteword16 [mi: hle o16 83 /2 ib,s] 8086,SM,LOCK,ND +ADC mem,imm16 [mi: hle o16 81 /2 iw] 8086,SM,LOCK +ADC mem,sbytedword32 [mi: hle o32 83 /2 ib,s] 386,SM,LOCK,ND +ADC mem,imm32 [mi: hle o32 81 /2 id] 386,SM,LOCK +ADC rm8,imm [mi: hle 82 /2 ib] 8086,SM,LOCK,ND,NOLONG +ADD mem,reg8 [mr: hle 00 /r] 8086,SM,LOCK +ADD reg8,reg8 [mr: 00 /r] 8086 +ADD mem,reg16 [mr: hle o16 01 /r] 8086,SM,LOCK +ADD reg16,reg16 [mr: o16 01 /r] 8086 +ADD mem,reg32 [mr: hle o32 01 /r] 386,SM,LOCK +ADD reg32,reg32 [mr: o32 01 /r] 386 +ADD mem,reg64 [mr: hle o64 01 /r] X86_64,LONG,SM,LOCK +ADD reg64,reg64 [mr: o64 01 /r] X86_64,LONG +ADD reg8,mem [rm: 02 /r] 8086,SM +ADD reg8,reg8 [rm: 02 /r] 8086 +ADD reg16,mem [rm: o16 03 /r] 8086,SM +ADD reg16,reg16 [rm: o16 03 /r] 8086 +ADD reg32,mem [rm: o32 03 /r] 386,SM +ADD reg32,reg32 [rm: o32 03 /r] 386 +ADD reg64,mem [rm: o64 03 /r] X86_64,LONG,SM +ADD reg64,reg64 [rm: o64 03 /r] X86_64,LONG +ADD rm16,imm8 [mi: hle o16 83 /0 ib,s] 8086,LOCK +ADD rm32,imm8 [mi: hle o32 83 /0 ib,s] 386,LOCK +ADD rm64,imm8 [mi: hle o64 83 /0 ib,s] X86_64,LONG,LOCK +ADD reg_al,imm [-i: 04 ib] 8086,SM +ADD reg_ax,sbyteword [mi: o16 83 /0 ib,s] 8086,SM,ND +ADD reg_ax,imm [-i: o16 05 iw] 8086,SM +ADD reg_eax,sbytedword [mi: o32 83 /0 ib,s] 386,SM,ND +ADD reg_eax,imm [-i: o32 05 id] 386,SM +ADD reg_rax,sbytedword [mi: o64 83 /0 ib,s] X86_64,LONG,SM,ND +ADD reg_rax,imm [-i: o64 05 id,s] X86_64,LONG,SM +ADD rm8,imm [mi: hle 80 /0 ib] 8086,SM,LOCK +ADD rm16,sbyteword [mi: hle o16 83 /0 ib,s] 8086,SM,LOCK,ND +ADD rm16,imm [mi: hle o16 81 /0 iw] 8086,SM,LOCK +ADD rm32,sbytedword [mi: hle o32 83 /0 ib,s] 386,SM,LOCK,ND +ADD rm32,imm [mi: hle o32 81 /0 id] 386,SM,LOCK +ADD rm64,sbytedword [mi: hle o64 83 /0 ib,s] X86_64,LONG,SM,LOCK,ND +ADD rm64,imm [mi: hle o64 81 /0 id,s] X86_64,LONG,SM,LOCK +ADD mem,imm8 [mi: hle 80 /0 ib] 8086,SM,LOCK +ADD mem,sbyteword16 [mi: hle o16 83 /0 ib,s] 8086,SM,LOCK,ND +ADD mem,imm16 [mi: hle o16 81 /0 iw] 8086,SM,LOCK +ADD mem,sbytedword32 [mi: hle o32 83 /0 ib,s] 386,SM,LOCK,ND +ADD mem,imm32 [mi: hle o32 81 /0 id] 386,SM,LOCK +ADD rm8,imm [mi: hle 82 /0 ib] 8086,SM,LOCK,ND,NOLONG +AND mem,reg8 [mr: hle 20 /r] 8086,SM,LOCK +AND reg8,reg8 [mr: 20 /r] 8086 +AND mem,reg16 [mr: hle o16 21 /r] 8086,SM,LOCK +AND reg16,reg16 [mr: o16 21 /r] 8086 +AND mem,reg32 [mr: hle o32 21 /r] 386,SM,LOCK +AND reg32,reg32 [mr: o32 21 /r] 386 +AND mem,reg64 [mr: hle o64 21 /r] X86_64,LONG,SM,LOCK +AND reg64,reg64 [mr: o64 21 /r] X86_64,LONG +AND reg8,mem [rm: 22 /r] 8086,SM +AND reg8,reg8 [rm: 22 /r] 8086 +AND reg16,mem [rm: o16 23 /r] 8086,SM +AND reg16,reg16 [rm: o16 23 /r] 8086 +AND reg32,mem [rm: o32 23 /r] 386,SM +AND reg32,reg32 [rm: o32 23 /r] 386 +AND reg64,mem [rm: o64 23 /r] X86_64,LONG,SM +AND reg64,reg64 [rm: o64 23 /r] X86_64,LONG +AND rm16,imm8 [mi: hle o16 83 /4 ib,s] 8086,LOCK +AND rm32,imm8 [mi: hle o32 83 /4 ib,s] 386,LOCK +AND rm64,imm8 [mi: hle o64 83 /4 ib,s] X86_64,LONG,LOCK +AND reg_al,imm [-i: 24 ib] 8086,SM +AND reg_ax,sbyteword [mi: o16 83 /4 ib,s] 8086,SM,ND +AND reg_ax,imm [-i: o16 25 iw] 8086,SM +AND reg_eax,sbytedword [mi: o32 83 /4 ib,s] 386,SM,ND +AND reg_eax,imm [-i: o32 25 id] 386,SM +AND reg_rax,sbytedword [mi: o64 83 /4 ib,s] X86_64,LONG,SM,ND +AND reg_rax,imm [-i: o64 25 id,s] X86_64,LONG,SM +AND rm8,imm [mi: hle 80 /4 ib] 8086,SM,LOCK +AND rm16,sbyteword [mi: hle o16 83 /4 ib,s] 8086,SM,LOCK,ND +AND rm16,imm [mi: hle o16 81 /4 iw] 8086,SM,LOCK +AND rm32,sbytedword [mi: hle o32 83 /4 ib,s] 386,SM,LOCK,ND +AND rm32,imm [mi: hle o32 81 /4 id] 386,SM,LOCK +AND rm64,sbytedword [mi: hle o64 83 /4 ib,s] X86_64,LONG,SM,LOCK,ND +AND rm64,imm [mi: hle o64 81 /4 id,s] X86_64,LONG,SM,LOCK +AND mem,imm8 [mi: hle 80 /4 ib] 8086,SM,LOCK +AND mem,sbyteword16 [mi: hle o16 83 /4 ib,s] 8086,SM,LOCK,ND +AND mem,imm16 [mi: hle o16 81 /4 iw] 8086,SM,LOCK +AND mem,sbytedword32 [mi: hle o32 83 /4 ib,s] 386,SM,LOCK,ND +AND mem,imm32 [mi: hle o32 81 /4 id] 386,SM,LOCK +AND rm8,imm [mi: hle 82 /4 ib] 8086,SM,LOCK,ND,NOLONG +ARPL mem,reg16 [mr: 63 /r] 286,PROT,SM,NOLONG +ARPL reg16,reg16 [mr: 63 /r] 286,PROT,NOLONG +BB0_RESET void [ 0f 3a] PENT,CYRIX,ND,OBSOLETE +BB1_RESET void [ 0f 3b] PENT,CYRIX,ND,OBSOLETE +BOUND reg16,mem [rm: o16 62 /r] 186,NOLONG +BOUND reg32,mem [rm: o32 62 /r] 386,NOLONG +BSF reg16,mem [rm: o16 nof3 0f bc /r] 386,SM +BSF reg16,reg16 [rm: o16 nof3 0f bc /r] 386 +BSF reg32,mem [rm: o32 nof3 0f bc /r] 386,SM +BSF reg32,reg32 [rm: o32 nof3 0f bc /r] 386 +BSF reg64,mem [rm: o64 nof3 0f bc /r] X86_64,LONG,SM +BSF reg64,reg64 [rm: o64 nof3 0f bc /r] X86_64,LONG +BSR reg16,mem [rm: o16 nof3 0f bd /r] 386,SM +BSR reg16,reg16 [rm: o16 nof3 0f bd /r] 386 +BSR reg32,mem [rm: o32 nof3 0f bd /r] 386,SM +BSR reg32,reg32 [rm: o32 nof3 0f bd /r] 386 +BSR reg64,mem [rm: o64 nof3 0f bd /r] X86_64,LONG,SM +BSR reg64,reg64 [rm: o64 nof3 0f bd /r] X86_64,LONG +BSWAP reg32 [r: o32 0f c8+r] 486 +BSWAP reg64 [r: o64 0f c8+r] X86_64,LONG +BT mem,reg16 [mr: o16 0f a3 /r] 386,SM +BT reg16,reg16 [mr: o16 0f a3 /r] 386 +BT mem,reg32 [mr: o32 0f a3 /r] 386,SM +BT reg32,reg32 [mr: o32 0f a3 /r] 386 +BT mem,reg64 [mr: o64 0f a3 /r] X86_64,LONG,SM +BT reg64,reg64 [mr: o64 0f a3 /r] X86_64,LONG +BT rm16,imm8 [mi: o16 0f ba /4 ib,u] 386 +BT rm32,imm8 [mi: o32 0f ba /4 ib,u] 386 +BT rm64,imm8 [mi: o64 0f ba /4 ib,u] X86_64,LONG +BTC mem,reg16 [mr: hle o16 0f bb /r] 386,SM,LOCK +BTC reg16,reg16 [mr: o16 0f bb /r] 386 +BTC mem,reg32 [mr: hle o32 0f bb /r] 386,SM,LOCK +BTC reg32,reg32 [mr: o32 0f bb /r] 386 +BTC mem,reg64 [mr: hle o64 0f bb /r] X86_64,LONG,SM,LOCK +BTC reg64,reg64 [mr: o64 0f bb /r] X86_64,LONG +BTC rm16,imm8 [mi: hle o16 0f ba /7 ib,u] 386,LOCK +BTC rm32,imm8 [mi: hle o32 0f ba /7 ib,u] 386,LOCK +BTC rm64,imm8 [mi: hle o64 0f ba /7 ib,u] X86_64,LONG,LOCK +BTR mem,reg16 [mr: hle o16 0f b3 /r] 386,SM,LOCK +BTR reg16,reg16 [mr: o16 0f b3 /r] 386 +BTR mem,reg32 [mr: hle o32 0f b3 /r] 386,SM,LOCK +BTR reg32,reg32 [mr: o32 0f b3 /r] 386 +BTR mem,reg64 [mr: hle o64 0f b3 /r] X86_64,LONG,SM,LOCK +BTR reg64,reg64 [mr: o64 0f b3 /r] X86_64,LONG +BTR rm16,imm8 [mi: hle o16 0f ba /6 ib,u] 386,LOCK +BTR rm32,imm8 [mi: hle o32 0f ba /6 ib,u] 386,LOCK +BTR rm64,imm8 [mi: hle o64 0f ba /6 ib,u] X86_64,LONG,LOCK +BTS mem,reg16 [mr: hle o16 0f ab /r] 386,SM,LOCK +BTS reg16,reg16 [mr: o16 0f ab /r] 386 +BTS mem,reg32 [mr: hle o32 0f ab /r] 386,SM,LOCK +BTS reg32,reg32 [mr: o32 0f ab /r] 386 +BTS mem,reg64 [mr: hle o64 0f ab /r] X86_64,LONG,SM,LOCK +BTS reg64,reg64 [mr: o64 0f ab /r] X86_64,LONG +BTS rm16,imm8 [mi: hle o16 0f ba /5 ib,u] 386,LOCK +BTS rm32,imm8 [mi: hle o32 0f ba /5 ib,u] 386,LOCK +BTS rm64,imm8 [mi: hle o64 0f ba /5 ib,u] X86_64,LONG,LOCK +CALL imm [i: odf e8 rel] 8086,BND +CALL imm|near [i: odf e8 rel] 8086,ND,BND +CALL imm|far [i: odf 9a iwd seg] 8086,ND,NOLONG +; Call/jmp near imm/reg/mem is always 64-bit in long mode. +CALL imm16 [i: o16 e8 rel] 8086,NOLONG,BND +CALL imm16|near [i: o16 e8 rel] 8086,ND,NOLONG,BND +CALL imm16|far [i: o16 9a iwd seg] 8086,ND,NOLONG +CALL imm32 [i: o32 e8 rel] 386,NOLONG,BND +CALL imm32|near [i: o32 e8 rel] 386,ND,NOLONG,BND +CALL imm32|far [i: o32 9a iwd seg] 386,ND,NOLONG +CALL imm64 [i: o64nw e8 rel] X86_64,LONG,BND +CALL imm64|near [i: o64nw e8 rel] X86_64,LONG,ND,BND +CALL imm:imm [ji: odf 9a iwd iw] 8086,NOLONG +CALL imm16:imm [ji: o16 9a iw iw] 8086,NOLONG +CALL imm:imm16 [ji: o16 9a iw iw] 8086,NOLONG +CALL imm32:imm [ji: o32 9a id iw] 386,NOLONG +CALL imm:imm32 [ji: o32 9a id iw] 386,NOLONG +CALL mem|far [m: odf ff /3] 8086,NOLONG +CALL mem|far [m: o64 ff /3] X86_64,LONG +CALL mem16|far [m: o16 ff /3] 8086 +CALL mem32|far [m: o32 ff /3] 386 +CALL mem64|far [m: o64 ff /3] X86_64,LONG +CALL mem|near [m: odf ff /2] 8086,ND,BND +CALL rm16|near [m: o16 ff /2] 8086,NOLONG,ND,BND +CALL rm32|near [m: o32 ff /2] 386,NOLONG,ND,BND +CALL rm64|near [m: o64nw ff /2] X86_64,LONG,ND,BND +CALL mem [m: odf ff /2] 8086,BND +CALL rm16 [m: o16 ff /2] 8086,NOLONG,BND +CALL rm32 [m: o32 ff /2] 386,NOLONG,BND +CALL rm64 [m: o64nw ff /2] X86_64,LONG,BND + +CBW void [ o16 98] 8086 +CDQ void [ o32 99] 386 +CDQE void [ o64 98] X86_64,LONG +CLC void [ f8] 8086 +CLD void [ fc] 8086 +CLI void [ fa] 8086 +CLTS void [ 0f 06] 286,PRIV +CMC void [ f5] 8086 +CMP mem,reg8 [mr: 38 /r] 8086,SM +CMP reg8,reg8 [mr: 38 /r] 8086 +CMP mem,reg16 [mr: o16 39 /r] 8086,SM +CMP reg16,reg16 [mr: o16 39 /r] 8086 +CMP mem,reg32 [mr: o32 39 /r] 386,SM +CMP reg32,reg32 [mr: o32 39 /r] 386 +CMP mem,reg64 [mr: o64 39 /r] X86_64,LONG,SM +CMP reg64,reg64 [mr: o64 39 /r] X86_64,LONG +CMP reg8,mem [rm: 3a /r] 8086,SM +CMP reg8,reg8 [rm: 3a /r] 8086 +CMP reg16,mem [rm: o16 3b /r] 8086,SM +CMP reg16,reg16 [rm: o16 3b /r] 8086 +CMP reg32,mem [rm: o32 3b /r] 386,SM +CMP reg32,reg32 [rm: o32 3b /r] 386 +CMP reg64,mem [rm: o64 3b /r] X86_64,LONG,SM +CMP reg64,reg64 [rm: o64 3b /r] X86_64,LONG +CMP rm16,imm8 [mi: o16 83 /7 ib,s] 8086 +CMP rm32,imm8 [mi: o32 83 /7 ib,s] 386 +CMP rm64,imm8 [mi: o64 83 /7 ib,s] X86_64,LONG +CMP reg_al,imm [-i: 3c ib] 8086,SM +CMP reg_ax,sbyteword [mi: o16 83 /7 ib,s] 8086,SM,ND +CMP reg_ax,imm [-i: o16 3d iw] 8086,SM +CMP reg_eax,sbytedword [mi: o32 83 /7 ib,s] 386,SM,ND +CMP reg_eax,imm [-i: o32 3d id] 386,SM +CMP reg_rax,sbytedword [mi: o64 83 /7 ib,s] X86_64,LONG,SM,ND +CMP reg_rax,imm [-i: o64 3d id,s] X86_64,LONG,SM +CMP rm8,imm [mi: 80 /7 ib] 8086,SM +CMP rm16,sbyteword [mi: o16 83 /7 ib,s] 8086,SM,ND +CMP rm16,imm [mi: o16 81 /7 iw] 8086,SM +CMP rm32,sbytedword [mi: o32 83 /7 ib,s] 386,SM,ND +CMP rm32,imm [mi: o32 81 /7 id] 386,SM +CMP rm64,sbytedword [mi: o64 83 /7 ib,s] X86_64,LONG,SM,ND +CMP rm64,imm [mi: o64 81 /7 id,s] X86_64,LONG,SM +CMP mem,imm8 [mi: 80 /7 ib] 8086,SM +CMP mem,sbyteword16 [mi: o16 83 /7 ib,s] 8086,SM,ND +CMP mem,imm16 [mi: o16 81 /7 iw] 8086,SM +CMP mem,sbytedword32 [mi: o32 83 /7 ib,s] 386,SM,ND +CMP mem,imm32 [mi: o32 81 /7 id] 386,SM +CMP rm8,imm [mi: 82 /7 ib] 8086,SM,ND,NOLONG +CMPSB void [ repe a6] 8086 +CMPSD void [ repe o32 a7] 386 +CMPSQ void [ repe o64 a7] X86_64,LONG +CMPSW void [ repe o16 a7] 8086 +CMPXCHG mem,reg8 [mr: hle 0f b0 /r] PENT,SM,LOCK +CMPXCHG reg8,reg8 [mr: 0f b0 /r] PENT +CMPXCHG mem,reg16 [mr: hle o16 0f b1 /r] PENT,SM,LOCK +CMPXCHG reg16,reg16 [mr: o16 0f b1 /r] PENT +CMPXCHG mem,reg32 [mr: hle o32 0f b1 /r] PENT,SM,LOCK +CMPXCHG reg32,reg32 [mr: o32 0f b1 /r] PENT +CMPXCHG mem,reg64 [mr: hle o64 0f b1 /r] X86_64,LONG,SM,LOCK +CMPXCHG reg64,reg64 [mr: o64 0f b1 /r] X86_64,LONG +CMPXCHG486 mem,reg8 [mr: 0f a6 /r] 486,SM,UNDOC,ND,LOCK,OBSOLETE +CMPXCHG486 reg8,reg8 [mr: 0f a6 /r] 486,UNDOC,ND,OBSOLETE +CMPXCHG486 mem,reg16 [mr: o16 0f a7 /r] 486,SM,UNDOC,ND,LOCK,OBSOLETE +CMPXCHG486 reg16,reg16 [mr: o16 0f a7 /r] 486,UNDOC,ND,OBSOLETE +CMPXCHG486 mem,reg32 [mr: o32 0f a7 /r] 486,SM,UNDOC,ND,LOCK,OBSOLETE +CMPXCHG486 reg32,reg32 [mr: o32 0f a7 /r] 486,UNDOC,ND,OBSOLETE +CMPXCHG8B mem64 [m: hle norexw 0f c7 /1] PENT,LOCK +CMPXCHG16B mem128 [m: o64 0f c7 /1] X86_64,LONG,LOCK +CPUID void [ 0f a2] PENT +CPU_READ void [ 0f 3d] PENT,CYRIX +CPU_WRITE void [ 0f 3c] PENT,CYRIX +CQO void [ o64 99] X86_64,LONG +CWD void [ o16 99] 8086 +CWDE void [ o32 98] 386 +DAA void [ 27] 8086,NOLONG +DAS void [ 2f] 8086,NOLONG +DEC reg16 [r: o16 48+r] 8086,NOLONG +DEC reg32 [r: o32 48+r] 386,NOLONG +DEC rm8 [m: hle fe /1] 8086,LOCK +DEC rm16 [m: hle o16 ff /1] 8086,LOCK +DEC rm32 [m: hle o32 ff /1] 386,LOCK +DEC rm64 [m: hle o64 ff /1] X86_64,LONG,LOCK +DIV rm8 [m: f6 /6] 8086 +DIV rm16 [m: o16 f7 /6] 8086 +DIV rm32 [m: o32 f7 /6] 386 +DIV rm64 [m: o64 f7 /6] X86_64,LONG +DMINT void [ 0f 39] P6,CYRIX +EMMS void [ 0f 77] PENT,MMX +ENTER imm,imm [ij: c8 iw ib,u] 186 +EQU imm ignore 8086 +EQU imm:imm ignore 8086 +F2XM1 void [ d9 f0] 8086,FPU +FABS void [ d9 e1] 8086,FPU +FADD mem32 [m: d8 /0] 8086,FPU +FADD mem64 [m: dc /0] 8086,FPU +FADD fpureg|to [r: dc c0+r] 8086,FPU +FADD fpureg [r: d8 c0+r] 8086,FPU +FADD fpureg,fpu0 [r-: dc c0+r] 8086,FPU +FADD fpu0,fpureg [-r: d8 c0+r] 8086,FPU +FADD void [ de c1] 8086,FPU,ND +FADDP fpureg [r: de c0+r] 8086,FPU +FADDP fpureg,fpu0 [r-: de c0+r] 8086,FPU +FADDP void [ de c1] 8086,FPU,ND +FBLD mem80 [m: df /4] 8086,FPU +FBLD mem [m: df /4] 8086,FPU +FBSTP mem80 [m: df /6] 8086,FPU +FBSTP mem [m: df /6] 8086,FPU +FCHS void [ d9 e0] 8086,FPU +FCLEX void [ wait db e2] 8086,FPU +FCMOVB fpureg [r: da c0+r] P6,FPU +FCMOVB fpu0,fpureg [-r: da c0+r] P6,FPU +FCMOVB void [ da c1] P6,FPU,ND +FCMOVBE fpureg [r: da d0+r] P6,FPU +FCMOVBE fpu0,fpureg [-r: da d0+r] P6,FPU +FCMOVBE void [ da d1] P6,FPU,ND +FCMOVE fpureg [r: da c8+r] P6,FPU +FCMOVE fpu0,fpureg [-r: da c8+r] P6,FPU +FCMOVE void [ da c9] P6,FPU,ND +FCMOVNB fpureg [r: db c0+r] P6,FPU +FCMOVNB fpu0,fpureg [-r: db c0+r] P6,FPU +FCMOVNB void [ db c1] P6,FPU,ND +FCMOVNBE fpureg [r: db d0+r] P6,FPU +FCMOVNBE fpu0,fpureg [-r: db d0+r] P6,FPU +FCMOVNBE void [ db d1] P6,FPU,ND +FCMOVNE fpureg [r: db c8+r] P6,FPU +FCMOVNE fpu0,fpureg [-r: db c8+r] P6,FPU +FCMOVNE void [ db c9] P6,FPU,ND +FCMOVNU fpureg [r: db d8+r] P6,FPU +FCMOVNU fpu0,fpureg [-r: db d8+r] P6,FPU +FCMOVNU void [ db d9] P6,FPU,ND +FCMOVU fpureg [r: da d8+r] P6,FPU +FCMOVU fpu0,fpureg [-r: da d8+r] P6,FPU +FCMOVU void [ da d9] P6,FPU,ND +FCOM mem32 [m: d8 /2] 8086,FPU +FCOM mem64 [m: dc /2] 8086,FPU +FCOM fpureg [r: d8 d0+r] 8086,FPU +FCOM fpu0,fpureg [-r: d8 d0+r] 8086,FPU +FCOM void [ d8 d1] 8086,FPU,ND +FCOMI fpureg [r: db f0+r] P6,FPU +FCOMI fpu0,fpureg [-r: db f0+r] P6,FPU +FCOMI void [ db f1] P6,FPU,ND +FCOMIP fpureg [r: df f0+r] P6,FPU +FCOMIP fpu0,fpureg [-r: df f0+r] P6,FPU +FCOMIP void [ df f1] P6,FPU,ND +FCOMP mem32 [m: d8 /3] 8086,FPU +FCOMP mem64 [m: dc /3] 8086,FPU +FCOMP fpureg [r: d8 d8+r] 8086,FPU +FCOMP fpu0,fpureg [-r: d8 d8+r] 8086,FPU +FCOMP void [ d8 d9] 8086,FPU,ND +FCOMPP void [ de d9] 8086,FPU +FCOS void [ d9 ff] 386,FPU +FDECSTP void [ d9 f6] 8086,FPU +FDISI void [ wait db e1] 8086,FPU +FDIV mem32 [m: d8 /6] 8086,FPU +FDIV mem64 [m: dc /6] 8086,FPU +FDIV fpureg|to [r: dc f8+r] 8086,FPU +FDIV fpureg [r: d8 f0+r] 8086,FPU +FDIV fpureg,fpu0 [r-: dc f8+r] 8086,FPU +FDIV fpu0,fpureg [-r: d8 f0+r] 8086,FPU +FDIV void [ de f9] 8086,FPU,ND +FDIVP fpureg [r: de f8+r] 8086,FPU +FDIVP fpureg,fpu0 [r-: de f8+r] 8086,FPU +FDIVP void [ de f9] 8086,FPU,ND +FDIVR mem32 [m: d8 /7] 8086,FPU +FDIVR mem64 [m: dc /7] 8086,FPU +FDIVR fpureg|to [r: dc f0+r] 8086,FPU +FDIVR fpureg,fpu0 [r-: dc f0+r] 8086,FPU +FDIVR fpureg [r: d8 f8+r] 8086,FPU +FDIVR fpu0,fpureg [-r: d8 f8+r] 8086,FPU +FDIVR void [ de f1] 8086,FPU,ND +FDIVRP fpureg [r: de f0+r] 8086,FPU +FDIVRP fpureg,fpu0 [r-: de f0+r] 8086,FPU +FDIVRP void [ de f1] 8086,FPU,ND +FEMMS void [ 0f 0e] PENT,3DNOW +FENI void [ wait db e0] 8086,FPU +FFREE fpureg [r: dd c0+r] 8086,FPU +FFREE void [ dd c1] 8086,FPU +FFREEP fpureg [r: df c0+r] 286,FPU,UNDOC +FFREEP void [ df c1] 286,FPU,UNDOC +FIADD mem32 [m: da /0] 8086,FPU +FIADD mem16 [m: de /0] 8086,FPU +FICOM mem32 [m: da /2] 8086,FPU +FICOM mem16 [m: de /2] 8086,FPU +FICOMP mem32 [m: da /3] 8086,FPU +FICOMP mem16 [m: de /3] 8086,FPU +FIDIV mem32 [m: da /6] 8086,FPU +FIDIV mem16 [m: de /6] 8086,FPU +FIDIVR mem32 [m: da /7] 8086,FPU +FIDIVR mem16 [m: de /7] 8086,FPU +FILD mem32 [m: db /0] 8086,FPU +FILD mem16 [m: df /0] 8086,FPU +FILD mem64 [m: df /5] 8086,FPU +FIMUL mem32 [m: da /1] 8086,FPU +FIMUL mem16 [m: de /1] 8086,FPU +FINCSTP void [ d9 f7] 8086,FPU +FINIT void [ wait db e3] 8086,FPU +FIST mem32 [m: db /2] 8086,FPU +FIST mem16 [m: df /2] 8086,FPU +FISTP mem32 [m: db /3] 8086,FPU +FISTP mem16 [m: df /3] 8086,FPU +FISTP mem64 [m: df /7] 8086,FPU +FISTTP mem16 [m: df /1] PRESCOTT,FPU +FISTTP mem32 [m: db /1] PRESCOTT,FPU +FISTTP mem64 [m: dd /1] PRESCOTT,FPU +FISUB mem32 [m: da /4] 8086,FPU +FISUB mem16 [m: de /4] 8086,FPU +FISUBR mem32 [m: da /5] 8086,FPU +FISUBR mem16 [m: de /5] 8086,FPU +FLD mem32 [m: d9 /0] 8086,FPU +FLD mem64 [m: dd /0] 8086,FPU +FLD mem80 [m: db /5] 8086,FPU +FLD fpureg [r: d9 c0+r] 8086,FPU +FLD void [ d9 c1] 8086,FPU,ND +FLD1 void [ d9 e8] 8086,FPU +FLDCW mem [m: d9 /5] 8086,FPU,SW +FLDENV mem [m: d9 /4] 8086,FPU +FLDL2E void [ d9 ea] 8086,FPU +FLDL2T void [ d9 e9] 8086,FPU +FLDLG2 void [ d9 ec] 8086,FPU +FLDLN2 void [ d9 ed] 8086,FPU +FLDPI void [ d9 eb] 8086,FPU +FLDZ void [ d9 ee] 8086,FPU +FMUL mem32 [m: d8 /1] 8086,FPU +FMUL mem64 [m: dc /1] 8086,FPU +FMUL fpureg|to [r: dc c8+r] 8086,FPU +FMUL fpureg,fpu0 [r-: dc c8+r] 8086,FPU +FMUL fpureg [r: d8 c8+r] 8086,FPU +FMUL fpu0,fpureg [-r: d8 c8+r] 8086,FPU +FMUL void [ de c9] 8086,FPU,ND +FMULP fpureg [r: de c8+r] 8086,FPU +FMULP fpureg,fpu0 [r-: de c8+r] 8086,FPU +FMULP void [ de c9] 8086,FPU,ND +FNCLEX void [ db e2] 8086,FPU +FNDISI void [ db e1] 8086,FPU +FNENI void [ db e0] 8086,FPU +FNINIT void [ db e3] 8086,FPU +FNOP void [ d9 d0] 8086,FPU +FNSAVE mem [m: dd /6] 8086,FPU +FNSTCW mem [m: d9 /7] 8086,FPU,SW +FNSTENV mem [m: d9 /6] 8086,FPU +FNSTSW mem [m: dd /7] 8086,FPU,SW +FNSTSW reg_ax [-: df e0] 286,FPU +FPATAN void [ d9 f3] 8086,FPU +FPREM void [ d9 f8] 8086,FPU +FPREM1 void [ d9 f5] 386,FPU +FPTAN void [ d9 f2] 8086,FPU +FRNDINT void [ d9 fc] 8086,FPU +FRSTOR mem [m: dd /4] 8086,FPU +FSAVE mem [m: wait dd /6] 8086,FPU +FSCALE void [ d9 fd] 8086,FPU +FSETPM void [ db e4] 286,FPU +FSIN void [ d9 fe] 386,FPU +FSINCOS void [ d9 fb] 386,FPU +FSQRT void [ d9 fa] 8086,FPU +FST mem32 [m: d9 /2] 8086,FPU +FST mem64 [m: dd /2] 8086,FPU +FST fpureg [r: dd d0+r] 8086,FPU +FST void [ dd d1] 8086,FPU,ND +FSTCW mem [m: wait d9 /7] 8086,FPU,SW +FSTENV mem [m: wait d9 /6] 8086,FPU +FSTP mem32 [m: d9 /3] 8086,FPU +FSTP mem64 [m: dd /3] 8086,FPU +FSTP mem80 [m: db /7] 8086,FPU +FSTP fpureg [r: dd d8+r] 8086,FPU +FSTP void [ dd d9] 8086,FPU,ND +FSTSW mem [m: wait dd /7] 8086,FPU,SW +FSTSW reg_ax [-: wait df e0] 286,FPU +FSUB mem32 [m: d8 /4] 8086,FPU +FSUB mem64 [m: dc /4] 8086,FPU +FSUB fpureg|to [r: dc e8+r] 8086,FPU +FSUB fpureg,fpu0 [r-: dc e8+r] 8086,FPU +FSUB fpureg [r: d8 e0+r] 8086,FPU +FSUB fpu0,fpureg [-r: d8 e0+r] 8086,FPU +FSUB void [ de e9] 8086,FPU,ND +FSUBP fpureg [r: de e8+r] 8086,FPU +FSUBP fpureg,fpu0 [r-: de e8+r] 8086,FPU +FSUBP void [ de e9] 8086,FPU,ND +FSUBR mem32 [m: d8 /5] 8086,FPU +FSUBR mem64 [m: dc /5] 8086,FPU +FSUBR fpureg|to [r: dc e0+r] 8086,FPU +FSUBR fpureg,fpu0 [r-: dc e0+r] 8086,FPU +FSUBR fpureg [r: d8 e8+r] 8086,FPU +FSUBR fpu0,fpureg [-r: d8 e8+r] 8086,FPU +FSUBR void [ de e1] 8086,FPU,ND +FSUBRP fpureg [r: de e0+r] 8086,FPU +FSUBRP fpureg,fpu0 [r-: de e0+r] 8086,FPU +FSUBRP void [ de e1] 8086,FPU,ND +FTST void [ d9 e4] 8086,FPU +FUCOM fpureg [r: dd e0+r] 386,FPU +FUCOM fpu0,fpureg [-r: dd e0+r] 386,FPU +FUCOM void [ dd e1] 386,FPU,ND +FUCOMI fpureg [r: db e8+r] P6,FPU +FUCOMI fpu0,fpureg [-r: db e8+r] P6,FPU +FUCOMI void [ db e9] P6,FPU,ND +FUCOMIP fpureg [r: df e8+r] P6,FPU +FUCOMIP fpu0,fpureg [-r: df e8+r] P6,FPU +FUCOMIP void [ df e9] P6,FPU,ND +FUCOMP fpureg [r: dd e8+r] 386,FPU +FUCOMP fpu0,fpureg [-r: dd e8+r] 386,FPU +FUCOMP void [ dd e9] 386,FPU,ND +FUCOMPP void [ da e9] 386,FPU +FXAM void [ d9 e5] 8086,FPU +FXCH fpureg [r: d9 c8+r] 8086,FPU +FXCH fpureg,fpu0 [r-: d9 c8+r] 8086,FPU +FXCH fpu0,fpureg [-r: d9 c8+r] 8086,FPU +FXCH void [ d9 c9] 8086,FPU,ND +FXTRACT void [ d9 f4] 8086,FPU +FYL2X void [ d9 f1] 8086,FPU +FYL2XP1 void [ d9 f9] 8086,FPU +HLT void [ f4] 8086,PRIV +IBTS mem,reg16 [mr: o16 0f a7 /r] 386,SW,UNDOC,ND,OBSOLETE +IBTS reg16,reg16 [mr: o16 0f a7 /r] 386,UNDOC,ND,OBSOLETE +IBTS mem,reg32 [mr: o32 0f a7 /r] 386,SD,UNDOC,ND,OBSOLETE +IBTS reg32,reg32 [mr: o32 0f a7 /r] 386,UNDOC,ND,OBSOLETE +ICEBP void [ f1] 386,ND +IDIV rm8 [m: f6 /7] 8086 +IDIV rm16 [m: o16 f7 /7] 8086 +IDIV rm32 [m: o32 f7 /7] 386 +IDIV rm64 [m: o64 f7 /7] X86_64,LONG +IMUL rm8 [m: f6 /5] 8086 +IMUL rm16 [m: o16 f7 /5] 8086 +IMUL rm32 [m: o32 f7 /5] 386 +IMUL rm64 [m: o64 f7 /5] X86_64,LONG +IMUL reg16,mem [rm: o16 0f af /r] 386,SM +IMUL reg16,reg16 [rm: o16 0f af /r] 386 +IMUL reg32,mem [rm: o32 0f af /r] 386,SM +IMUL reg32,reg32 [rm: o32 0f af /r] 386 +IMUL reg64,mem [rm: o64 0f af /r] X86_64,LONG,SM +IMUL reg64,reg64 [rm: o64 0f af /r] X86_64,LONG +IMUL reg16,mem,imm8 [rmi: o16 6b /r ib,s] 186,SM2 +IMUL reg16,mem,sbyteword [rmi: o16 6b /r ib,s] 186,SM,ND +IMUL reg16,mem,imm16 [rmi: o16 69 /r iw] 186,SM +IMUL reg16,mem,imm [rmi: o16 69 /r iw] 186,SM,ND +IMUL reg16,reg16,imm8 [rmi: o16 6b /r ib,s] 186 +IMUL reg16,reg16,sbyteword [rmi: o16 6b /r ib,s] 186,SM,ND +IMUL reg16,reg16,imm16 [rmi: o16 69 /r iw] 186 +IMUL reg16,reg16,imm [rmi: o16 69 /r iw] 186,SM,ND +IMUL reg32,mem,imm8 [rmi: o32 6b /r ib,s] 386,SM2 +IMUL reg32,mem,sbytedword [rmi: o32 6b /r ib,s] 386,SM,ND +IMUL reg32,mem,imm32 [rmi: o32 69 /r id] 386,SM +IMUL reg32,mem,imm [rmi: o32 69 /r id] 386,SM,ND +IMUL reg32,reg32,imm8 [rmi: o32 6b /r ib,s] 386 +IMUL reg32,reg32,sbytedword [rmi: o32 6b /r ib,s] 386,SM,ND +IMUL reg32,reg32,imm32 [rmi: o32 69 /r id] 386 +IMUL reg32,reg32,imm [rmi: o32 69 /r id] 386,SM,ND +IMUL reg64,mem,imm8 [rmi: o64 6b /r ib,s] X86_64,LONG,SM2 +IMUL reg64,mem,sbytedword [rmi: o64 6b /r ib,s] X86_64,LONG,SM,ND +IMUL reg64,mem,imm32 [rmi: o64 69 /r id] X86_64,LONG,SM2 +IMUL reg64,mem,imm [rmi: o64 69 /r id,s] X86_64,LONG,SM,ND +IMUL reg64,reg64,imm8 [rmi: o64 6b /r ib,s] X86_64,LONG +IMUL reg64,reg64,sbytedword [rmi: o64 6b /r ib,s] X86_64,LONG,SM,ND +IMUL reg64,reg64,imm32 [rmi: o64 69 /r id] X86_64,LONG +IMUL reg64,reg64,imm [rmi: o64 69 /r id,s] X86_64,LONG,SM,ND +IMUL reg16,imm8 [r+mi: o16 6b /r ib,s] 186 +IMUL reg16,sbyteword [r+mi: o16 6b /r ib,s] 186,SM,ND +IMUL reg16,imm16 [r+mi: o16 69 /r iw] 186 +IMUL reg16,imm [r+mi: o16 69 /r iw] 186,SM,ND +IMUL reg32,imm8 [r+mi: o32 6b /r ib,s] 386 +IMUL reg32,sbytedword [r+mi: o32 6b /r ib,s] 386,SM,ND +IMUL reg32,imm32 [r+mi: o32 69 /r id] 386 +IMUL reg32,imm [r+mi: o32 69 /r id] 386,SM,ND +IMUL reg64,imm8 [r+mi: o64 6b /r ib,s] X86_64,LONG +IMUL reg64,sbytedword [r+mi: o64 6b /r ib,s] X86_64,LONG,SM,ND +IMUL reg64,imm32 [r+mi: o64 69 /r id,s] X86_64,LONG +IMUL reg64,imm [r+mi: o64 69 /r id,s] X86_64,LONG,SM,ND +IN reg_al,imm [-i: e4 ib,u] 8086,SB +IN reg_ax,imm [-i: o16 e5 ib,u] 8086,SB +IN reg_eax,imm [-i: o32 e5 ib,u] 386,SB +IN reg_al,reg_dx [--: ec] 8086 +IN reg_ax,reg_dx [--: o16 ed] 8086 +IN reg_eax,reg_dx [--: o32 ed] 386 +INC reg16 [r: o16 40+r] 8086,NOLONG +INC reg32 [r: o32 40+r] 386,NOLONG +INC rm8 [m: hle fe /0] 8086,LOCK +INC rm16 [m: hle o16 ff /0] 8086,LOCK +INC rm32 [m: hle o32 ff /0] 386,LOCK +INC rm64 [m: hle o64 ff /0] X86_64,LONG,LOCK +INSB void [ 6c] 186 +INSD void [ o32 6d] 386 +INSW void [ o16 6d] 186 +INT imm [i: cd ib,u] 8086,SB +INT01 void [ f1] 386,ND +INT1 void [ f1] 386 +INT03 void [ cc] 8086,ND +INT3 void [ cc] 8086 +INTO void [ ce] 8086,NOLONG +INVD void [ 0f 08] 486,PRIV +INVPCID reg32,mem128 [rm: 66 0f 38 82 /r] FUTURE,INVPCID,PRIV,NOLONG +INVPCID reg64,mem128 [rm: 66 0f 38 82 /r] FUTURE,INVPCID,PRIV,LONG +INVLPG mem [m: 0f 01 /7] 486,PRIV +INVLPGA reg_ax,reg_ecx [--: a16 0f 01 df] X86_64,AMD,NOLONG +INVLPGA reg_eax,reg_ecx [--: a32 0f 01 df] X86_64,AMD +INVLPGA reg_rax,reg_ecx [--: o64nw a64 0f 01 df] X86_64,LONG,AMD +INVLPGA void [ 0f 01 df] X86_64,AMD +IRET void [ odf cf] 8086 +IRETD void [ o32 cf] 386 +IRETQ void [ o64 cf] X86_64,LONG +IRETW void [ o16 cf] 8086 +JCXZ imm [i: a16 e3 rel8] 8086,NOLONG +JECXZ imm [i: a32 e3 rel8] 386 +JRCXZ imm [i: o64nw a64 e3 rel8] X86_64,LONG +JMP imm|short [i: eb rel8] 8086 +JMP imm [i: jmp8 eb rel8] 8086,ND +JMP imm [i: odf e9 rel] 8086,BND +JMP imm|near [i: odf e9 rel] 8086,ND,BND +JMP imm|far [i: odf ea iwd seg] 8086,ND,NOLONG +; Call/jmp near imm/reg/mem is always 64-bit in long mode. +JMP imm16 [i: o16 e9 rel] 8086,NOLONG,BND +JMP imm16|near [i: o16 e9 rel] 8086,ND,NOLONG,BND +JMP imm16|far [i: o16 ea iwd seg] 8086,ND,NOLONG +JMP imm32 [i: o32 e9 rel] 386,NOLONG,BND +JMP imm32|near [i: o32 e9 rel] 386,ND,NOLONG,BND +JMP imm32|far [i: o32 ea iwd seg] 386,ND,NOLONG +JMP imm64 [i: o64nw e9 rel] X86_64,LONG,BND +JMP imm64|near [i: o64nw e9 rel] X86_64,LONG,ND,BND +JMP imm:imm [ji: odf ea iwd iw] 8086,NOLONG +JMP imm16:imm [ji: o16 ea iw iw] 8086,NOLONG +JMP imm:imm16 [ji: o16 ea iw iw] 8086,NOLONG +JMP imm32:imm [ji: o32 ea id iw] 386,NOLONG +JMP imm:imm32 [ji: o32 ea id iw] 386,NOLONG +JMP mem|far [m: odf ff /5] 8086,NOLONG +JMP mem|far [m: o64 ff /5] X86_64,LONG +JMP mem16|far [m: o16 ff /5] 8086 +JMP mem32|far [m: o32 ff /5] 386 +JMP mem64|far [m: o64 ff /5] X86_64,LONG +JMP mem|near [m: odf ff /4] 8086,ND,BND +JMP rm16|near [m: o16 ff /4] 8086,NOLONG,ND,BND +JMP rm32|near [m: o32 ff /4] 386,NOLONG,ND,BND +JMP rm64|near [m: o64nw ff /4] X86_64,LONG,ND,BND +JMP mem [m: odf ff /4] 8086,BND +JMP rm16 [m: o16 ff /4] 8086,NOLONG,BND +JMP rm32 [m: o32 ff /4] 386,NOLONG,BND +JMP rm64 [m: o64nw ff /4] X86_64,LONG,BND + +JMPE imm [i: odf 0f b8 rel] IA64 +JMPE imm16 [i: o16 0f b8 rel] IA64 +JMPE imm32 [i: o32 0f b8 rel] IA64 +JMPE rm16 [m: o16 0f 00 /6] IA64 +JMPE rm32 [m: o32 0f 00 /6] IA64 +LAHF void [ 9f] 8086 +LAR reg16,mem [rm: o16 0f 02 /r] 286,PROT,SW +LAR reg16,reg16 [rm: o16 0f 02 /r] 286,PROT +LAR reg16,reg32 [rm: o16 0f 02 /r] 386,PROT +LAR reg16,reg64 [rm: o16 o64nw 0f 02 /r] X86_64,LONG,PROT,ND +LAR reg32,mem [rm: o32 0f 02 /r] 386,PROT,SW +LAR reg32,reg16 [rm: o32 0f 02 /r] 386,PROT +LAR reg32,reg32 [rm: o32 0f 02 /r] 386,PROT +LAR reg32,reg64 [rm: o32 o64nw 0f 02 /r] X86_64,LONG,PROT,ND +LAR reg64,mem [rm: o64 0f 02 /r] X86_64,LONG,PROT,SW +LAR reg64,reg16 [rm: o64 0f 02 /r] X86_64,LONG,PROT +LAR reg64,reg32 [rm: o64 0f 02 /r] X86_64,LONG,PROT +LAR reg64,reg64 [rm: o64 0f 02 /r] X86_64,LONG,PROT +LDS reg16,mem [rm: o16 c5 /r] 8086,NOLONG +LDS reg32,mem [rm: o32 c5 /r] 386,NOLONG +LEA reg16,mem [rm: o16 8d /r] 8086,ANYSIZE +LEA reg32,mem [rm: o32 8d /r] 386,ANYSIZE +LEA reg64,mem [rm: o64 8d /r] X86_64,LONG,ANYSIZE +LEA reg16,imm [rm: o16 8d /r] 8086,ND,ANYSIZE +LEA reg32,imm [rm: o32 8d /r] 386,ND,ANYSIZE +LEA reg64,imm [rm: o64 8d /r] X86_64,LONG,ND,ANYSIZE +LEAVE void [ c9] 186 +LES reg16,mem [rm: o16 c4 /r] 8086,NOLONG +LES reg32,mem [rm: o32 c4 /r] 386,NOLONG +LFENCE void [ np 0f ae e8] X86_64,LONG,AMD +LFS reg16,mem [rm: o16 0f b4 /r] 386 +LFS reg32,mem [rm: o32 0f b4 /r] 386 +LFS reg64,mem [rm: o64 0f b4 /r] X86_64,LONG +LGDT mem [m: 0f 01 /2] 286,PRIV +LGS reg16,mem [rm: o16 0f b5 /r] 386 +LGS reg32,mem [rm: o32 0f b5 /r] 386 +LGS reg64,mem [rm: o64 0f b5 /r] X86_64,LONG +LIDT mem [m: 0f 01 /3] 286,PRIV +LLDT mem [m: 0f 00 /2] 286,PROT,PRIV +LLDT mem16 [m: 0f 00 /2] 286,PROT,PRIV +LLDT reg16 [m: 0f 00 /2] 286,PROT,PRIV +LMSW mem [m: 0f 01 /6] 286,PRIV +LMSW mem16 [m: 0f 01 /6] 286,PRIV +LMSW reg16 [m: 0f 01 /6] 286,PRIV +LOADALL void [ 0f 07] 386,UNDOC,ND,OBSOLETE +LOADALL286 void [ 0f 05] 286,UNDOC,ND,OBSOLETE +LODSB void [ ac] 8086 +LODSD void [ o32 ad] 386 +LODSQ void [ o64 ad] X86_64,LONG +LODSW void [ o16 ad] 8086 +LOOP imm [i: adf e2 rel8] 8086 +LOOP imm,reg_cx [i-: a16 e2 rel8] 8086,NOLONG +LOOP imm,reg_ecx [i-: a32 e2 rel8] 386 +LOOP imm,reg_rcx [i-: a64 e2 rel8] X86_64,LONG +LOOPE imm [i: adf e1 rel8] 8086 +LOOPE imm,reg_cx [i-: a16 e1 rel8] 8086,NOLONG +LOOPE imm,reg_ecx [i-: a32 e1 rel8] 386 +LOOPE imm,reg_rcx [i-: a64 e1 rel8] X86_64,LONG +LOOPNE imm [i: adf e0 rel8] 8086 +LOOPNE imm,reg_cx [i-: a16 e0 rel8] 8086,NOLONG +LOOPNE imm,reg_ecx [i-: a32 e0 rel8] 386 +LOOPNE imm,reg_rcx [i-: a64 e0 rel8] X86_64,LONG +LOOPNZ imm [i: adf e0 rel8] 8086 +LOOPNZ imm,reg_cx [i-: a16 e0 rel8] 8086,NOLONG +LOOPNZ imm,reg_ecx [i-: a32 e0 rel8] 386 +LOOPNZ imm,reg_rcx [i-: a64 e0 rel8] X86_64,LONG +LOOPZ imm [i: adf e1 rel8] 8086 +LOOPZ imm,reg_cx [i-: a16 e1 rel8] 8086,NOLONG +LOOPZ imm,reg_ecx [i-: a32 e1 rel8] 386 +LOOPZ imm,reg_rcx [i-: a64 e1 rel8] X86_64,LONG +LSL reg16,mem [rm: o16 0f 03 /r] 286,PROT,SW +LSL reg16,reg16 [rm: o16 0f 03 /r] 286,PROT +LSL reg16,reg32 [rm: o16 0f 03 /r] 386,PROT +LSL reg16,reg64 [rm: o16 o64nw 0f 03 /r] X86_64,LONG,PROT,ND +LSL reg32,mem [rm: o32 0f 03 /r] 386,PROT,SW +LSL reg32,reg16 [rm: o32 0f 03 /r] 386,PROT +LSL reg32,reg32 [rm: o32 0f 03 /r] 386,PROT +LSL reg32,reg64 [rm: o32 o64nw 0f 03 /r] X86_64,LONG,PROT,ND +LSL reg64,mem [rm: o64 0f 03 /r] X86_64,LONG,PROT,SW +LSL reg64,reg16 [rm: o64 0f 03 /r] X86_64,LONG,PROT +LSL reg64,reg32 [rm: o64 0f 03 /r] X86_64,LONG,PROT +LSL reg64,reg64 [rm: o64 0f 03 /r] X86_64,LONG,PROT +LSS reg16,mem [rm: o16 0f b2 /r] 386 +LSS reg32,mem [rm: o32 0f b2 /r] 386 +LSS reg64,mem [rm: o64 0f b2 /r] X86_64,LONG +LTR mem [m: 0f 00 /3] 286,PROT,PRIV +LTR mem16 [m: 0f 00 /3] 286,PROT,PRIV +LTR reg16 [m: 0f 00 /3] 286,PROT,PRIV +MFENCE void [ np 0f ae f0] X86_64,LONG,AMD +MONITOR void [ 0f 01 c8] PRESCOTT +MONITOR reg_eax,reg_ecx,reg_edx [---: 0f 01 c8] PRESCOTT,NOLONG,ND +MONITOR reg_rax,reg_ecx,reg_edx [---: 0f 01 c8] X86_64,LONG,ND +MONITORX void [ 0f 01 fa] AMD +MONITORX reg_rax,reg_ecx,reg_edx [---: 0f 01 fa] X86_64,LONG,AMD,ND +MONITORX reg_eax,reg_ecx,reg_edx [---: 0f 01 fa] AMD,ND +MONITORX reg_ax,reg_ecx,reg_edx [---: 0f 01 fa] AMD,ND +MOV mem,reg_sreg [mr: 8c /r] 8086,SW +MOV reg16,reg_sreg [mr: o16 8c /r] 8086 +MOV reg32,reg_sreg [mr: o32 8c /r] 386 +MOV reg64,reg_sreg [mr: o64nw 8c /r] X86_64,LONG,OPT,ND +MOV rm64,reg_sreg [mr: o64 8c /r] X86_64,LONG +MOV reg_sreg,mem [rm: 8e /r] 8086,SW +MOV reg_sreg,reg16 [rm: 8e /r] 8086,OPT,ND +MOV reg_sreg,reg32 [rm: 8e /r] 386,OPT,ND +MOV reg_sreg,reg64 [rm: o64nw 8e /r] X86_64,LONG,OPT,ND +MOV reg_sreg,reg16 [rm: o16 8e /r] 8086 +MOV reg_sreg,reg32 [rm: o32 8e /r] 386 +MOV reg_sreg,rm64 [rm: o64 8e /r] X86_64,LONG +MOV reg_al,mem_offs [-i: a0 iwdq] 8086,SM +MOV reg_ax,mem_offs [-i: o16 a1 iwdq] 8086,SM +MOV reg_eax,mem_offs [-i: o32 a1 iwdq] 386,SM +MOV reg_rax,mem_offs [-i: o64 a1 iwdq] X86_64,LONG,SM +MOV mem_offs,reg_al [i-: a2 iwdq] 8086,SM,NOHLE +MOV mem_offs,reg_ax [i-: o16 a3 iwdq] 8086,SM,NOHLE +MOV mem_offs,reg_eax [i-: o32 a3 iwdq] 386,SM,NOHLE +MOV mem_offs,reg_rax [i-: o64 a3 iwdq] X86_64,LONG,SM,NOHLE +MOV reg32,reg_creg [mr: rex.l 0f 20 /r] 386,PRIV,NOLONG +MOV reg64,reg_creg [mr: o64nw 0f 20 /r] X86_64,LONG,PRIV +MOV reg_creg,reg32 [rm: rex.l 0f 22 /r] 386,PRIV,NOLONG +MOV reg_creg,reg64 [rm: o64nw 0f 22 /r] X86_64,LONG,PRIV +MOV reg32,reg_dreg [mr: 0f 21 /r] 386,PRIV,NOLONG +MOV reg64,reg_dreg [mr: o64nw 0f 21 /r] X86_64,LONG,PRIV +MOV reg_dreg,reg32 [rm: 0f 23 /r] 386,PRIV,NOLONG +MOV reg_dreg,reg64 [rm: o64nw 0f 23 /r] X86_64,LONG,PRIV +MOV reg32,reg_treg [mr: 0f 24 /r] 386,NOLONG,ND +MOV reg_treg,reg32 [rm: 0f 26 /r] 386,NOLONG,ND +MOV mem,reg8 [mr: hlexr 88 /r] 8086,SM +MOV reg8,reg8 [mr: 88 /r] 8086 +MOV mem,reg16 [mr: hlexr o16 89 /r] 8086,SM +MOV reg16,reg16 [mr: o16 89 /r] 8086 +MOV mem,reg32 [mr: hlexr o32 89 /r] 386,SM +MOV reg32,reg32 [mr: o32 89 /r] 386 +MOV mem,reg64 [mr: hlexr o64 89 /r] X86_64,LONG,SM +MOV reg64,reg64 [mr: o64 89 /r] X86_64,LONG +MOV reg8,mem [rm: 8a /r] 8086,SM +MOV reg8,reg8 [rm: 8a /r] 8086 +MOV reg16,mem [rm: o16 8b /r] 8086,SM +MOV reg16,reg16 [rm: o16 8b /r] 8086 +MOV reg32,mem [rm: o32 8b /r] 386,SM +MOV reg32,reg32 [rm: o32 8b /r] 386 +MOV reg64,mem [rm: o64 8b /r] X86_64,LONG,SM +MOV reg64,reg64 [rm: o64 8b /r] X86_64,LONG +MOV reg8,imm [ri: b0+r ib] 8086,SM +MOV reg16,imm [ri: o16 b8+r iw] 8086,SM +MOV reg32,imm [ri: o32 b8+r id] 386,SM +MOV reg64,udword [ri: o64nw b8+r id] X86_64,LONG,SM,OPT,ND +MOV reg64,sdword [mi: o64 c7 /0 id,s] X86_64,LONG,SM,OPT,ND +MOV reg64,imm [ri: o64 b8+r iq] X86_64,LONG,SM +MOV rm8,imm [mi: hlexr c6 /0 ib] 8086,SM +MOV rm16,imm [mi: hlexr o16 c7 /0 iw] 8086,SM +MOV rm32,imm [mi: hlexr o32 c7 /0 id] 386,SM +MOV rm64,imm [mi: hlexr o64 c7 /0 id,s] X86_64,LONG,SM +MOV rm64,imm32 [mi: hlexr o64 c7 /0 id,s] X86_64,LONG +MOV mem,imm8 [mi: hlexr c6 /0 ib] 8086,SM +MOV mem,imm16 [mi: hlexr o16 c7 /0 iw] 8086,SM +MOV mem,imm32 [mi: hlexr o32 c7 /0 id] 386,SM +MOVD mmxreg,rm32 [rm: np 0f 6e /r] PENT,MMX,SD +MOVD rm32,mmxreg [mr: np 0f 7e /r] PENT,MMX,SD +MOVD mmxreg,rm64 [rm: np o64 0f 6e /r] X86_64,LONG,MMX,SX,ND +MOVD rm64,mmxreg [mr: np o64 0f 7e /r] X86_64,LONG,MMX,SX,ND +MOVQ mmxreg,mmxrm [rm: np 0f 6f /r] PENT,MMX,SQ +MOVQ mmxrm,mmxreg [mr: np 0f 7f /r] PENT,MMX,SQ +MOVQ mmxreg,rm64 [rm: np o64 0f 6e /r] X86_64,LONG,MMX +MOVQ rm64,mmxreg [mr: np o64 0f 7e /r] X86_64,LONG,MMX +MOVSB void [ a4] 8086 +MOVSD void [ o32 a5] 386 +MOVSQ void [ o64 a5] X86_64,LONG +MOVSW void [ o16 a5] 8086 +MOVSX reg16,mem [rm: o16 0f be /r] 386,SB +MOVSX reg16,reg8 [rm: o16 0f be /r] 386 +MOVSX reg32,rm8 [rm: o32 0f be /r] 386 +MOVSX reg32,rm16 [rm: o32 0f bf /r] 386 +MOVSX reg64,rm8 [rm: o64 0f be /r] X86_64,LONG +MOVSX reg64,rm16 [rm: o64 0f bf /r] X86_64,LONG +MOVSXD reg64,rm32 [rm: o64 63 /r] X86_64,LONG +MOVSX reg64,rm32 [rm: o64 63 /r] X86_64,LONG,ND +MOVZX reg16,mem [rm: o16 0f b6 /r] 386,SB +MOVZX reg16,reg8 [rm: o16 0f b6 /r] 386 +MOVZX reg32,rm8 [rm: o32 0f b6 /r] 386 +MOVZX reg32,rm16 [rm: o32 0f b7 /r] 386 +MOVZX reg64,rm8 [rm: o64 0f b6 /r] X86_64,LONG +MOVZX reg64,rm16 [rm: o64 0f b7 /r] X86_64,LONG +MUL rm8 [m: f6 /4] 8086 +MUL rm16 [m: o16 f7 /4] 8086 +MUL rm32 [m: o32 f7 /4] 386 +MUL rm64 [m: o64 f7 /4] X86_64,LONG +MWAIT void [ 0f 01 c9] PRESCOTT +MWAIT reg_eax,reg_ecx [--: 0f 01 c9] PRESCOTT,ND +MWAITX void [ 0f 01 fb] AMD +MWAITX reg_eax,reg_ecx [--: 0f 01 fb] AMD,ND +NEG rm8 [m: hle f6 /3] 8086,LOCK +NEG rm16 [m: hle o16 f7 /3] 8086,LOCK +NEG rm32 [m: hle o32 f7 /3] 386,LOCK +NEG rm64 [m: hle o64 f7 /3] X86_64,LONG,LOCK +NOP void [ norexb nof3 90] 8086 +NOP rm16 [m: o16 0f 1f /0] P6 +NOP rm32 [m: o32 0f 1f /0] P6 +NOP rm64 [m: o64 0f 1f /0] X86_64,LONG +NOT rm8 [m: hle f6 /2] 8086,LOCK +NOT rm16 [m: hle o16 f7 /2] 8086,LOCK +NOT rm32 [m: hle o32 f7 /2] 386,LOCK +NOT rm64 [m: hle o64 f7 /2] X86_64,LONG,LOCK +OR mem,reg8 [mr: hle 08 /r] 8086,SM,LOCK +OR reg8,reg8 [mr: 08 /r] 8086 +OR mem,reg16 [mr: hle o16 09 /r] 8086,SM,LOCK +OR reg16,reg16 [mr: o16 09 /r] 8086 +OR mem,reg32 [mr: hle o32 09 /r] 386,SM,LOCK +OR reg32,reg32 [mr: o32 09 /r] 386 +OR mem,reg64 [mr: hle o64 09 /r] X86_64,LONG,SM,LOCK +OR reg64,reg64 [mr: o64 09 /r] X86_64,LONG +OR reg8,mem [rm: 0a /r] 8086,SM +OR reg8,reg8 [rm: 0a /r] 8086 +OR reg16,mem [rm: o16 0b /r] 8086,SM +OR reg16,reg16 [rm: o16 0b /r] 8086 +OR reg32,mem [rm: o32 0b /r] 386,SM +OR reg32,reg32 [rm: o32 0b /r] 386 +OR reg64,mem [rm: o64 0b /r] X86_64,LONG,SM +OR reg64,reg64 [rm: o64 0b /r] X86_64,LONG +OR rm16,imm8 [mi: hle o16 83 /1 ib,s] 8086,LOCK +OR rm32,imm8 [mi: hle o32 83 /1 ib,s] 386,LOCK +OR rm64,imm8 [mi: hle o64 83 /1 ib,s] X86_64,LONG,LOCK +OR reg_al,imm [-i: 0c ib] 8086,SM +OR reg_ax,sbyteword [mi: o16 83 /1 ib,s] 8086,SM,ND +OR reg_ax,imm [-i: o16 0d iw] 8086,SM +OR reg_eax,sbytedword [mi: o32 83 /1 ib,s] 386,SM,ND +OR reg_eax,imm [-i: o32 0d id] 386,SM +OR reg_rax,sbytedword [mi: o64 83 /1 ib,s] X86_64,LONG,SM,ND +OR reg_rax,imm [-i: o64 0d id,s] X86_64,LONG,SM +OR rm8,imm [mi: hle 80 /1 ib] 8086,SM,LOCK +OR rm16,sbyteword [mi: hle o16 83 /1 ib,s] 8086,SM,LOCK,ND +OR rm16,imm [mi: hle o16 81 /1 iw] 8086,SM,LOCK +OR rm32,sbytedword [mi: hle o32 83 /1 ib,s] 386,SM,LOCK,ND +OR rm32,imm [mi: hle o32 81 /1 id] 386,SM,LOCK +OR rm64,sbytedword [mi: hle o64 83 /1 ib,s] X86_64,LONG,SM,LOCK,ND +OR rm64,imm [mi: hle o64 81 /1 id,s] X86_64,LONG,SM,LOCK +OR mem,imm8 [mi: hle 80 /1 ib] 8086,SM,LOCK +OR mem,sbyteword16 [mi: hle o16 83 /1 ib,s] 8086,SM,LOCK,ND +OR mem,imm16 [mi: hle o16 81 /1 iw] 8086,SM,LOCK +OR mem,sbytedword32 [mi: hle o32 83 /1 ib,s] 386,SM,LOCK,ND +OR mem,imm32 [mi: hle o32 81 /1 id] 386,SM,LOCK +OR rm8,imm [mi: hle 82 /1 ib] 8086,SM,LOCK,ND,NOLONG +OUT imm,reg_al [i-: e6 ib,u] 8086,SB +OUT imm,reg_ax [i-: o16 e7 ib,u] 8086,SB +OUT imm,reg_eax [i-: o32 e7 ib,u] 386,SB +OUT reg_dx,reg_al [--: ee] 8086 +OUT reg_dx,reg_ax [--: o16 ef] 8086 +OUT reg_dx,reg_eax [--: o32 ef] 386 +OUTSB void [ 6e] 186 +OUTSD void [ o32 6f] 386 +OUTSW void [ o16 6f] 186 +PACKSSDW mmxreg,mmxrm [rm: np o64nw 0f 6b /r] PENT,MMX,SQ +PACKSSWB mmxreg,mmxrm [rm: np o64nw 0f 63 /r] PENT,MMX,SQ +PACKUSWB mmxreg,mmxrm [rm: np o64nw 0f 67 /r] PENT,MMX,SQ +PADDB mmxreg,mmxrm [rm: np o64nw 0f fc /r] PENT,MMX,SQ +PADDD mmxreg,mmxrm [rm: np o64nw 0f fe /r] PENT,MMX,SQ +PADDSB mmxreg,mmxrm [rm: np o64nw 0f ec /r] PENT,MMX,SQ +PADDSIW mmxreg,mmxrm [rm: o64nw 0f 51 /r] PENT,MMX,SQ,CYRIX +PADDSW mmxreg,mmxrm [rm: np o64nw 0f ed /r] PENT,MMX,SQ +PADDUSB mmxreg,mmxrm [rm: np o64nw 0f dc /r] PENT,MMX,SQ +PADDUSW mmxreg,mmxrm [rm: np o64nw 0f dd /r] PENT,MMX,SQ +PADDW mmxreg,mmxrm [rm: np o64nw 0f fd /r] PENT,MMX,SQ +PAND mmxreg,mmxrm [rm: np o64nw 0f db /r] PENT,MMX,SQ +PANDN mmxreg,mmxrm [rm: np o64nw 0f df /r] PENT,MMX,SQ +PAUSE void [ f3i 90] 8086 +PAVEB mmxreg,mmxrm [rm: o64nw 0f 50 /r] PENT,MMX,SQ,CYRIX +PAVGUSB mmxreg,mmxrm [rm: o64nw 0f 0f /r bf] PENT,3DNOW,SQ +PCMPEQB mmxreg,mmxrm [rm: np o64nw 0f 74 /r] PENT,MMX,SQ +PCMPEQD mmxreg,mmxrm [rm: np o64nw 0f 76 /r] PENT,MMX,SQ +PCMPEQW mmxreg,mmxrm [rm: np o64nw 0f 75 /r] PENT,MMX,SQ +PCMPGTB mmxreg,mmxrm [rm: np o64nw 0f 64 /r] PENT,MMX,SQ +PCMPGTD mmxreg,mmxrm [rm: np o64nw 0f 66 /r] PENT,MMX,SQ +PCMPGTW mmxreg,mmxrm [rm: np o64nw 0f 65 /r] PENT,MMX,SQ +PDISTIB mmxreg,mem [rm: 0f 54 /r] PENT,MMX,SM,CYRIX +PF2ID mmxreg,mmxrm [rm: o64nw 0f 0f /r 1d] PENT,3DNOW,SQ +PFACC mmxreg,mmxrm [rm: o64nw 0f 0f /r ae] PENT,3DNOW,SQ +PFADD mmxreg,mmxrm [rm: o64nw 0f 0f /r 9e] PENT,3DNOW,SQ +PFCMPEQ mmxreg,mmxrm [rm: o64nw 0f 0f /r b0] PENT,3DNOW,SQ +PFCMPGE mmxreg,mmxrm [rm: o64nw 0f 0f /r 90] PENT,3DNOW,SQ +PFCMPGT mmxreg,mmxrm [rm: o64nw 0f 0f /r a0] PENT,3DNOW,SQ +PFMAX mmxreg,mmxrm [rm: o64nw 0f 0f /r a4] PENT,3DNOW,SQ +PFMIN mmxreg,mmxrm [rm: o64nw 0f 0f /r 94] PENT,3DNOW,SQ +PFMUL mmxreg,mmxrm [rm: o64nw 0f 0f /r b4] PENT,3DNOW,SQ +PFRCP mmxreg,mmxrm [rm: o64nw 0f 0f /r 96] PENT,3DNOW,SQ +PFRCPIT1 mmxreg,mmxrm [rm: o64nw 0f 0f /r a6] PENT,3DNOW,SQ +PFRCPIT2 mmxreg,mmxrm [rm: o64nw 0f 0f /r b6] PENT,3DNOW,SQ +PFRSQIT1 mmxreg,mmxrm [rm: o64nw 0f 0f /r a7] PENT,3DNOW,SQ +PFRSQRT mmxreg,mmxrm [rm: o64nw 0f 0f /r 97] PENT,3DNOW,SQ +PFSUB mmxreg,mmxrm [rm: o64nw 0f 0f /r 9a] PENT,3DNOW,SQ +PFSUBR mmxreg,mmxrm [rm: o64nw 0f 0f /r aa] PENT,3DNOW,SQ +PI2FD mmxreg,mmxrm [rm: o64nw 0f 0f /r 0d] PENT,3DNOW,SQ +PMACHRIW mmxreg,mem [rm: 0f 5e /r] PENT,MMX,SM,CYRIX +PMADDWD mmxreg,mmxrm [rm: np o64nw 0f f5 /r] PENT,MMX,SQ +PMAGW mmxreg,mmxrm [rm: o64nw 0f 52 /r] PENT,MMX,SQ,CYRIX +PMULHRIW mmxreg,mmxrm [rm: o64nw 0f 5d /r] PENT,MMX,SQ,CYRIX +PMULHRWA mmxreg,mmxrm [rm: o64nw 0f 0f /r b7] PENT,3DNOW,SQ +PMULHRWC mmxreg,mmxrm [rm: o64nw 0f 59 /r] PENT,MMX,SQ,CYRIX +PMULHW mmxreg,mmxrm [rm: np o64nw 0f e5 /r] PENT,MMX,SQ +PMULLW mmxreg,mmxrm [rm: np o64nw 0f d5 /r] PENT,MMX,SQ +PMVGEZB mmxreg,mem [rm: 0f 5c /r] PENT,MMX,SQ,CYRIX +PMVLZB mmxreg,mem [rm: 0f 5b /r] PENT,MMX,SQ,CYRIX +PMVNZB mmxreg,mem [rm: 0f 5a /r] PENT,MMX,SQ,CYRIX +PMVZB mmxreg,mem [rm: 0f 58 /r] PENT,MMX,SQ,CYRIX +POP reg16 [r: o16 58+r] 8086 +POP reg32 [r: o32 58+r] 386,NOLONG +POP reg64 [r: o64nw 58+r] X86_64,LONG +POP rm16 [m: o16 8f /0] 8086 +POP rm32 [m: o32 8f /0] 386,NOLONG +POP rm64 [m: o64nw 8f /0] X86_64,LONG +POP reg_es [-: 07] 8086,NOLONG +POP reg_cs [-: 0f] 8086,UNDOC,ND,OBSOLETE +POP reg_ss [-: 17] 8086,NOLONG +POP reg_ds [-: 1f] 8086,NOLONG +POP reg_fs [-: 0f a1] 386 +POP reg_gs [-: 0f a9] 386 +POPA void [ odf 61] 186,NOLONG +POPAD void [ o32 61] 386,NOLONG +POPAW void [ o16 61] 186,NOLONG +POPF void [ odf 9d] 8086 +POPFD void [ o32 9d] 386,NOLONG +POPFQ void [ o32 9d] X86_64,LONG +POPFW void [ o16 9d] 8086 +POR mmxreg,mmxrm [rm: np o64nw 0f eb /r] PENT,MMX,SQ +PREFETCH mem [m: 0f 0d /0] PENT,3DNOW,SQ +PREFETCHW mem [m: 0f 0d /1] PENT,3DNOW,SQ +PSLLD mmxreg,mmxrm [rm: np o64nw 0f f2 /r] PENT,MMX,SQ +PSLLD mmxreg,imm [mi: np 0f 72 /6 ib,u] PENT,MMX +PSLLQ mmxreg,mmxrm [rm: np o64nw 0f f3 /r] PENT,MMX,SQ +PSLLQ mmxreg,imm [mi: np 0f 73 /6 ib,u] PENT,MMX +PSLLW mmxreg,mmxrm [rm: np o64nw 0f f1 /r] PENT,MMX,SQ +PSLLW mmxreg,imm [mi: np 0f 71 /6 ib,u] PENT,MMX +PSRAD mmxreg,mmxrm [rm: np o64nw 0f e2 /r] PENT,MMX,SQ +PSRAD mmxreg,imm [mi: np 0f 72 /4 ib,u] PENT,MMX +PSRAW mmxreg,mmxrm [rm: np o64nw 0f e1 /r] PENT,MMX,SQ +PSRAW mmxreg,imm [mi: np 0f 71 /4 ib,u] PENT,MMX +PSRLD mmxreg,mmxrm [rm: np o64nw 0f d2 /r] PENT,MMX,SQ +PSRLD mmxreg,imm [mi: np 0f 72 /2 ib,u] PENT,MMX +PSRLQ mmxreg,mmxrm [rm: np o64nw 0f d3 /r] PENT,MMX,SQ +PSRLQ mmxreg,imm [mi: np 0f 73 /2 ib,u] PENT,MMX +PSRLW mmxreg,mmxrm [rm: np o64nw 0f d1 /r] PENT,MMX,SQ +PSRLW mmxreg,imm [mi: np 0f 71 /2 ib,u] PENT,MMX +PSUBB mmxreg,mmxrm [rm: np o64nw 0f f8 /r] PENT,MMX,SQ +PSUBD mmxreg,mmxrm [rm: np o64nw 0f fa /r] PENT,MMX,SQ +PSUBSB mmxreg,mmxrm [rm: np o64nw 0f e8 /r] PENT,MMX,SQ +PSUBSIW mmxreg,mmxrm [rm: o64nw 0f 55 /r] PENT,MMX,SQ,CYRIX +PSUBSW mmxreg,mmxrm [rm: np o64nw 0f e9 /r] PENT,MMX,SQ +PSUBUSB mmxreg,mmxrm [rm: np o64nw 0f d8 /r] PENT,MMX,SQ +PSUBUSW mmxreg,mmxrm [rm: np o64nw 0f d9 /r] PENT,MMX,SQ +PSUBW mmxreg,mmxrm [rm: np o64nw 0f f9 /r] PENT,MMX,SQ +PUNPCKHBW mmxreg,mmxrm [rm: np o64nw 0f 68 /r] PENT,MMX,SQ +PUNPCKHDQ mmxreg,mmxrm [rm: np o64nw 0f 6a /r] PENT,MMX,SQ +PUNPCKHWD mmxreg,mmxrm [rm: np o64nw 0f 69 /r] PENT,MMX,SQ +PUNPCKLBW mmxreg,mmxrm [rm: np o64nw 0f 60 /r] PENT,MMX,SQ +PUNPCKLDQ mmxreg,mmxrm [rm: np o64nw 0f 62 /r] PENT,MMX,SQ +PUNPCKLWD mmxreg,mmxrm [rm: np o64nw 0f 61 /r] PENT,MMX,SQ +PUSH reg16 [r: o16 50+r] 8086 +PUSH reg32 [r: o32 50+r] 386,NOLONG +PUSH reg64 [r: o64nw 50+r] X86_64,LONG +PUSH rm16 [m: o16 ff /6] 8086 +PUSH rm32 [m: o32 ff /6] 386,NOLONG +PUSH rm64 [m: o64nw ff /6] X86_64,LONG +PUSH reg_es [-: 06] 8086,NOLONG +PUSH reg_cs [-: 0e] 8086,NOLONG +PUSH reg_ss [-: 16] 8086,NOLONG +PUSH reg_ds [-: 1e] 8086,NOLONG +PUSH reg_fs [-: 0f a0] 386 +PUSH reg_gs [-: 0f a8] 386 +PUSH imm8 [i: 6a ib,s] 186 +PUSH sbyteword16 [i: o16 6a ib,s] 186,AR0,SIZE,ND +PUSH imm16 [i: o16 68 iw] 186,AR0,SIZE +PUSH sbytedword32 [i: o32 6a ib,s] 386,NOLONG,AR0,SIZE,ND +PUSH imm32 [i: o32 68 id] 386,NOLONG,AR0,SIZE +PUSH sbytedword32 [i: o32 6a ib,s] 386,NOLONG,SD,ND +PUSH imm32 [i: o32 68 id] 386,NOLONG,SD +PUSH sbytedword64 [i: o64nw 6a ib,s] X86_64,LONG,AR0,SIZE,ND +PUSH imm64 [i: o64nw 68 id,s] X86_64,LONG,AR0,SIZE +PUSH sbytedword32 [i: o64nw 6a ib,s] X86_64,LONG,AR0,SIZE,ND +PUSH imm32 [i: o64nw 68 id,s] X86_64,LONG,AR0,SIZE +PUSHA void [ odf 60] 186,NOLONG +PUSHAD void [ o32 60] 386,NOLONG +PUSHAW void [ o16 60] 186,NOLONG +PUSHF void [ odf 9c] 8086 +PUSHFD void [ o32 9c] 386,NOLONG +PUSHFQ void [ o32 9c] X86_64,LONG +PUSHFW void [ o16 9c] 8086 +PXOR mmxreg,mmxrm [rm: np o64nw 0f ef /r] PENT,MMX,SQ +RCL rm8,unity [m-: d0 /2] 8086 +RCL rm8,reg_cl [m-: d2 /2] 8086 +RCL rm8,imm8 [mi: c0 /2 ib,u] 186 +RCL rm16,unity [m-: o16 d1 /2] 8086 +RCL rm16,reg_cl [m-: o16 d3 /2] 8086 +RCL rm16,imm8 [mi: o16 c1 /2 ib,u] 186 +RCL rm32,unity [m-: o32 d1 /2] 386 +RCL rm32,reg_cl [m-: o32 d3 /2] 386 +RCL rm32,imm8 [mi: o32 c1 /2 ib,u] 386 +RCL rm64,unity [m-: o64 d1 /2] X86_64,LONG +RCL rm64,reg_cl [m-: o64 d3 /2] X86_64,LONG +RCL rm64,imm8 [mi: o64 c1 /2 ib,u] X86_64,LONG +RCR rm8,unity [m-: d0 /3] 8086 +RCR rm8,reg_cl [m-: d2 /3] 8086 +RCR rm8,imm8 [mi: c0 /3 ib,u] 186 +RCR rm16,unity [m-: o16 d1 /3] 8086 +RCR rm16,reg_cl [m-: o16 d3 /3] 8086 +RCR rm16,imm8 [mi: o16 c1 /3 ib,u] 186 +RCR rm32,unity [m-: o32 d1 /3] 386 +RCR rm32,reg_cl [m-: o32 d3 /3] 386 +RCR rm32,imm8 [mi: o32 c1 /3 ib,u] 386 +RCR rm64,unity [m-: o64 d1 /3] X86_64,LONG +RCR rm64,reg_cl [m-: o64 d3 /3] X86_64,LONG +RCR rm64,imm8 [mi: o64 c1 /3 ib,u] X86_64,LONG +RDSHR rm32 [m: o32 0f 36 /0] P6,CYRIX,SMM +RDMSR void [ 0f 32] PENT,PRIV +RDPMC void [ 0f 33] P6 +RDTSC void [ 0f 31] PENT +RDTSCP void [ 0f 01 f9] X86_64 +RET void [ c3] 8086,BND +RET imm [i: c2 iw] 8086,SW,BND +RETF void [ cb] 8086 +RETF imm [i: ca iw] 8086,SW +RETN void [ c3] 8086,BND +RETN imm [i: c2 iw] 8086,SW,BND +RETW void [ o16 c3] 8086,BND +RETW imm [i: c2 iw] 8086,SW,BND +RETFW void [ o16 cb] 8086 +RETFW imm [i: o16 ca iw] 8086,SW +RETNW void [ o16 c3] 8086,BND +RETNW imm [i: o16 c2 iw] 8086,SW,BND +RETD void [ o32 c3] 8086,BND,NOLONG +RETD imm [i: o32 c2 iw] 8086,SW,BND,NOLONG +RETFD void [ o32 cb] 8086 +RETFD imm [i: o32 ca iw] 8086,SW +RETND void [ o32 c3] 8086,BND,NOLONG +RETND imm [i: o32 c2 iw] 8086,SW,BND,NOLONG +RETQ void [ o64nw c3] X86_64,LONG,BND +RETQ imm [i: o64nw c2 iw] X86_64,LONG,SW,BND +RETFQ void [ o64 cb] X86_64,LONG +RETFQ imm [i: o64 ca iw] X86_64,LONG,SW +RETNQ void [ o64nw c3] X86_64,LONG,BND +RETNQ imm [i: o64nw c2 iw] X86_64,LONG,SW,BND + +ROL rm8,unity [m-: d0 /0] 8086 +ROL rm8,reg_cl [m-: d2 /0] 8086 +ROL rm8,imm8 [mi: c0 /0 ib,u] 186 +ROL rm16,unity [m-: o16 d1 /0] 8086 +ROL rm16,reg_cl [m-: o16 d3 /0] 8086 +ROL rm16,imm8 [mi: o16 c1 /0 ib,u] 186 +ROL rm32,unity [m-: o32 d1 /0] 386 +ROL rm32,reg_cl [m-: o32 d3 /0] 386 +ROL rm32,imm8 [mi: o32 c1 /0 ib,u] 386 +ROL rm64,unity [m-: o64 d1 /0] X86_64,LONG +ROL rm64,reg_cl [m-: o64 d3 /0] X86_64,LONG +ROL rm64,imm8 [mi: o64 c1 /0 ib,u] X86_64,LONG +ROR rm8,unity [m-: d0 /1] 8086 +ROR rm8,reg_cl [m-: d2 /1] 8086 +ROR rm8,imm8 [mi: c0 /1 ib,u] 186 +ROR rm16,unity [m-: o16 d1 /1] 8086 +ROR rm16,reg_cl [m-: o16 d3 /1] 8086 +ROR rm16,imm8 [mi: o16 c1 /1 ib,u] 186 +ROR rm32,unity [m-: o32 d1 /1] 386 +ROR rm32,reg_cl [m-: o32 d3 /1] 386 +ROR rm32,imm8 [mi: o32 c1 /1 ib,u] 386 +ROR rm64,unity [m-: o64 d1 /1] X86_64,LONG +ROR rm64,reg_cl [m-: o64 d3 /1] X86_64,LONG +ROR rm64,imm8 [mi: o64 c1 /1 ib,u] X86_64,LONG +RDM void [ 0f 3a] P6,CYRIX,ND +RSDC reg_sreg,mem80 [rm: 0f 79 /r] 486,CYRIX,SMM +RSLDT mem80 [m: 0f 7b /0] 486,CYRIX,SMM +RSM void [ 0f aa] PENT,SMM +RSTS mem80 [m: 0f 7d /0] 486,CYRIX,SMM +SAHF void [ 9e] 8086 +SAL rm8,unity [m-: d0 /4] 8086,ND +SAL rm8,reg_cl [m-: d2 /4] 8086,ND +SAL rm8,imm8 [mi: c0 /4 ib,u] 186,ND +SAL rm16,unity [m-: o16 d1 /4] 8086,ND +SAL rm16,reg_cl [m-: o16 d3 /4] 8086,ND +SAL rm16,imm8 [mi: o16 c1 /4 ib,u] 186,ND +SAL rm32,unity [m-: o32 d1 /4] 386,ND +SAL rm32,reg_cl [m-: o32 d3 /4] 386,ND +SAL rm32,imm8 [mi: o32 c1 /4 ib,u] 386,ND +SAL rm64,unity [m-: o64 d1 /4] X86_64,LONG,ND +SAL rm64,reg_cl [m-: o64 d3 /4] X86_64,LONG,ND +SAL rm64,imm8 [mi: o64 c1 /4 ib,u] X86_64,LONG,ND +SALC void [ d6] 8086,UNDOC +SAR rm8,unity [m-: d0 /7] 8086 +SAR rm8,reg_cl [m-: d2 /7] 8086 +SAR rm8,imm8 [mi: c0 /7 ib,u] 186 +SAR rm16,unity [m-: o16 d1 /7] 8086 +SAR rm16,reg_cl [m-: o16 d3 /7] 8086 +SAR rm16,imm8 [mi: o16 c1 /7 ib,u] 186 +SAR rm32,unity [m-: o32 d1 /7] 386 +SAR rm32,reg_cl [m-: o32 d3 /7] 386 +SAR rm32,imm8 [mi: o32 c1 /7 ib,u] 386 +SAR rm64,unity [m-: o64 d1 /7] X86_64,LONG +SAR rm64,reg_cl [m-: o64 d3 /7] X86_64,LONG +SAR rm64,imm8 [mi: o64 c1 /7 ib,u] X86_64,LONG +SBB mem,reg8 [mr: hle 18 /r] 8086,SM,LOCK +SBB reg8,reg8 [mr: 18 /r] 8086 +SBB mem,reg16 [mr: hle o16 19 /r] 8086,SM,LOCK +SBB reg16,reg16 [mr: o16 19 /r] 8086 +SBB mem,reg32 [mr: hle o32 19 /r] 386,SM,LOCK +SBB reg32,reg32 [mr: o32 19 /r] 386 +SBB mem,reg64 [mr: hle o64 19 /r] X86_64,LONG,SM,LOCK +SBB reg64,reg64 [mr: o64 19 /r] X86_64,LONG +SBB reg8,mem [rm: 1a /r] 8086,SM +SBB reg8,reg8 [rm: 1a /r] 8086 +SBB reg16,mem [rm: o16 1b /r] 8086,SM +SBB reg16,reg16 [rm: o16 1b /r] 8086 +SBB reg32,mem [rm: o32 1b /r] 386,SM +SBB reg32,reg32 [rm: o32 1b /r] 386 +SBB reg64,mem [rm: o64 1b /r] X86_64,LONG,SM +SBB reg64,reg64 [rm: o64 1b /r] X86_64,LONG +SBB rm16,imm8 [mi: hle o16 83 /3 ib,s] 8086,LOCK +SBB rm32,imm8 [mi: hle o32 83 /3 ib,s] 386,LOCK +SBB rm64,imm8 [mi: hle o64 83 /3 ib,s] X86_64,LONG,LOCK +SBB reg_al,imm [-i: 1c ib] 8086,SM +SBB reg_ax,sbyteword [mi: o16 83 /3 ib,s] 8086,SM,ND +SBB reg_ax,imm [-i: o16 1d iw] 8086,SM +SBB reg_eax,sbytedword [mi: o32 83 /3 ib,s] 386,SM,ND +SBB reg_eax,imm [-i: o32 1d id] 386,SM +SBB reg_rax,sbytedword [mi: o64 83 /3 ib,s] X86_64,LONG,SM,ND +SBB reg_rax,imm [-i: o64 1d id,s] X86_64,LONG,SM +SBB rm8,imm [mi: hle 80 /3 ib] 8086,SM,LOCK +SBB rm16,sbyteword [mi: hle o16 83 /3 ib,s] 8086,SM,LOCK,ND +SBB rm16,imm [mi: hle o16 81 /3 iw] 8086,SM,LOCK +SBB rm32,sbytedword [mi: hle o32 83 /3 ib,s] 386,SM,LOCK,ND +SBB rm32,imm [mi: hle o32 81 /3 id] 386,SM,LOCK +SBB rm64,sbytedword [mi: hle o64 83 /3 ib,s] X86_64,LONG,SM,LOCK,ND +SBB rm64,imm [mi: hle o64 81 /3 id,s] X86_64,LONG,SM,LOCK +SBB mem,imm8 [mi: hle 80 /3 ib] 8086,SM,LOCK +SBB mem,sbyteword16 [mi: hle o16 83 /3 ib,s] 8086,SM,LOCK,ND +SBB mem,imm16 [mi: hle o16 81 /3 iw] 8086,SM,LOCK +SBB mem,sbytedword32 [mi: hle o32 83 /3 ib,s] 386,SM,LOCK,ND +SBB mem,imm32 [mi: hle o32 81 /3 id] 386,SM,LOCK +SBB rm8,imm [mi: hle 82 /3 ib] 8086,SM,LOCK,ND,NOLONG +SCASB void [ repe ae] 8086 +SCASD void [ repe o32 af] 386 +SCASQ void [ repe o64 af] X86_64,LONG +SCASW void [ repe o16 af] 8086 +SFENCE void [ np 0f ae f8] X86_64,LONG,AMD +SGDT mem [m: 0f 01 /0] 286 +SHL rm8,unity [m-: d0 /4] 8086 +SHL rm8,reg_cl [m-: d2 /4] 8086 +SHL rm8,imm8 [mi: c0 /4 ib,u] 186 +SHL rm16,unity [m-: o16 d1 /4] 8086 +SHL rm16,reg_cl [m-: o16 d3 /4] 8086 +SHL rm16,imm8 [mi: o16 c1 /4 ib,u] 186 +SHL rm32,unity [m-: o32 d1 /4] 386 +SHL rm32,reg_cl [m-: o32 d3 /4] 386 +SHL rm32,imm8 [mi: o32 c1 /4 ib,u] 386 +SHL rm64,unity [m-: o64 d1 /4] X86_64,LONG +SHL rm64,reg_cl [m-: o64 d3 /4] X86_64,LONG +SHL rm64,imm8 [mi: o64 c1 /4 ib,u] X86_64,LONG +SHLD mem,reg16,imm [mri: o16 0f a4 /r ib,u] 386,SM2,SB,AR2 +SHLD reg16,reg16,imm [mri: o16 0f a4 /r ib,u] 386,SM2,SB,AR2 +SHLD mem,reg32,imm [mri: o32 0f a4 /r ib,u] 386,SM2,SB,AR2 +SHLD reg32,reg32,imm [mri: o32 0f a4 /r ib,u] 386,SM2,SB,AR2 +SHLD mem,reg64,imm [mri: o64 0f a4 /r ib,u] X86_64,LONG,SM2,SB,AR2 +SHLD reg64,reg64,imm [mri: o64 0f a4 /r ib,u] X86_64,LONG,SM2,SB,AR2 +SHLD mem,reg16,reg_cl [mr-: o16 0f a5 /r] 386,SM +SHLD reg16,reg16,reg_cl [mr-: o16 0f a5 /r] 386 +SHLD mem,reg32,reg_cl [mr-: o32 0f a5 /r] 386,SM +SHLD reg32,reg32,reg_cl [mr-: o32 0f a5 /r] 386 +SHLD mem,reg64,reg_cl [mr-: o64 0f a5 /r] X86_64,LONG,SM +SHLD reg64,reg64,reg_cl [mr-: o64 0f a5 /r] X86_64,LONG +SHR rm8,unity [m-: d0 /5] 8086 +SHR rm8,reg_cl [m-: d2 /5] 8086 +SHR rm8,imm8 [mi: c0 /5 ib,u] 186 +SHR rm16,unity [m-: o16 d1 /5] 8086 +SHR rm16,reg_cl [m-: o16 d3 /5] 8086 +SHR rm16,imm8 [mi: o16 c1 /5 ib,u] 186 +SHR rm32,unity [m-: o32 d1 /5] 386 +SHR rm32,reg_cl [m-: o32 d3 /5] 386 +SHR rm32,imm8 [mi: o32 c1 /5 ib,u] 386 +SHR rm64,unity [m-: o64 d1 /5] X86_64,LONG +SHR rm64,reg_cl [m-: o64 d3 /5] X86_64,LONG +SHR rm64,imm8 [mi: o64 c1 /5 ib,u] X86_64,LONG +SHRD mem,reg16,imm [mri: o16 0f ac /r ib,u] 386,SM2,SB,AR2 +SHRD reg16,reg16,imm [mri: o16 0f ac /r ib,u] 386,SM2,SB,AR2 +SHRD mem,reg32,imm [mri: o32 0f ac /r ib,u] 386,SM2,SB,AR2 +SHRD reg32,reg32,imm [mri: o32 0f ac /r ib,u] 386,SM2,SB,AR2 +SHRD mem,reg64,imm [mri: o64 0f ac /r ib,u] X86_64,LONG,SM2,SB,AR2 +SHRD reg64,reg64,imm [mri: o64 0f ac /r ib,u] X86_64,LONG,SM2,SB,AR2 +SHRD mem,reg16,reg_cl [mr-: o16 0f ad /r] 386,SM +SHRD reg16,reg16,reg_cl [mr-: o16 0f ad /r] 386 +SHRD mem,reg32,reg_cl [mr-: o32 0f ad /r] 386,SM +SHRD reg32,reg32,reg_cl [mr-: o32 0f ad /r] 386 +SHRD mem,reg64,reg_cl [mr-: o64 0f ad /r] X86_64,LONG,SM +SHRD reg64,reg64,reg_cl [mr-: o64 0f ad /r] X86_64,LONG +SIDT mem [m: 0f 01 /1] 286 +SLDT mem [m: 0f 00 /0] 286 +SLDT mem16 [m: 0f 00 /0] 286 +SLDT reg16 [m: o16 0f 00 /0] 286 +SLDT reg32 [m: o32 0f 00 /0] 386 +SLDT reg64 [m: o64nw 0f 00 /0] X86_64,LONG,ND +SLDT reg64 [m: o64 0f 00 /0] X86_64,LONG +SKINIT void [ 0f 01 de] X86_64,LONG +SMI void [ f1] 386,UNDOC +SMINT void [ 0f 38] P6,CYRIX,ND +; Older Cyrix chips had this; they had to move due to conflict with MMX +SMINTOLD void [ 0f 7e] 486,CYRIX,ND,OBSOLETE +SMSW mem [m: 0f 01 /4] 286 +SMSW mem16 [m: 0f 01 /4] 286 +SMSW reg16 [m: o16 0f 01 /4] 286 +SMSW reg32 [m: o32 0f 01 /4] 386 +SMSW reg64 [m: o64 0f 01 /4] X86_64,LONG +STC void [ f9] 8086 +STD void [ fd] 8086 +STI void [ fb] 8086 +STOSB void [ aa] 8086 +STOSD void [ o32 ab] 386 +STOSQ void [ o64 ab] X86_64,LONG +STOSW void [ o16 ab] 8086 +STR mem [m: 0f 00 /1] 286,PROT +STR mem16 [m: 0f 00 /1] 286,PROT +STR reg16 [m: o16 0f 00 /1] 286,PROT +STR reg32 [m: o32 0f 00 /1] 386,PROT +STR reg64 [m: o64 0f 00 /1] X86_64,LONG +SUB mem,reg8 [mr: hle 28 /r] 8086,SM,LOCK +SUB reg8,reg8 [mr: 28 /r] 8086 +SUB mem,reg16 [mr: hle o16 29 /r] 8086,SM,LOCK +SUB reg16,reg16 [mr: o16 29 /r] 8086 +SUB mem,reg32 [mr: hle o32 29 /r] 386,SM,LOCK +SUB reg32,reg32 [mr: o32 29 /r] 386 +SUB mem,reg64 [mr: hle o64 29 /r] X86_64,LONG,SM,LOCK +SUB reg64,reg64 [mr: o64 29 /r] X86_64,LONG +SUB reg8,mem [rm: 2a /r] 8086,SM +SUB reg8,reg8 [rm: 2a /r] 8086 +SUB reg16,mem [rm: o16 2b /r] 8086,SM +SUB reg16,reg16 [rm: o16 2b /r] 8086 +SUB reg32,mem [rm: o32 2b /r] 386,SM +SUB reg32,reg32 [rm: o32 2b /r] 386 +SUB reg64,mem [rm: o64 2b /r] X86_64,LONG,SM +SUB reg64,reg64 [rm: o64 2b /r] X86_64,LONG +SUB rm16,imm8 [mi: hle o16 83 /5 ib,s] 8086,LOCK +SUB rm32,imm8 [mi: hle o32 83 /5 ib,s] 386,LOCK +SUB rm64,imm8 [mi: hle o64 83 /5 ib,s] X86_64,LONG,LOCK +SUB reg_al,imm [-i: 2c ib] 8086,SM +SUB reg_ax,sbyteword [mi: o16 83 /5 ib,s] 8086,SM,ND +SUB reg_ax,imm [-i: o16 2d iw] 8086,SM +SUB reg_eax,sbytedword [mi: o32 83 /5 ib,s] 386,SM,ND +SUB reg_eax,imm [-i: o32 2d id] 386,SM +SUB reg_rax,sbytedword [mi: o64 83 /5 ib,s] X86_64,LONG,SM,ND +SUB reg_rax,imm [-i: o64 2d id,s] X86_64,LONG,SM +SUB rm8,imm [mi: hle 80 /5 ib] 8086,SM,LOCK +SUB rm16,sbyteword [mi: hle o16 83 /5 ib,s] 8086,SM,LOCK,ND +SUB rm16,imm [mi: hle o16 81 /5 iw] 8086,SM,LOCK +SUB rm32,sbytedword [mi: hle o32 83 /5 ib,s] 386,SM,LOCK,ND +SUB rm32,imm [mi: hle o32 81 /5 id] 386,SM,LOCK +SUB rm64,sbytedword [mi: hle o64 83 /5 ib,s] X86_64,LONG,SM,LOCK,ND +SUB rm64,imm [mi: hle o64 81 /5 id,s] X86_64,LONG,SM,LOCK +SUB mem,imm8 [mi: hle 80 /5 ib] 8086,SM,LOCK +SUB mem,sbyteword16 [mi: hle o16 83 /5 ib,s] 8086,SM,LOCK,ND +SUB mem,imm16 [mi: hle o16 81 /5 iw] 8086,SM,LOCK +SUB mem,sbytedword32 [mi: hle o32 83 /5 ib,s] 386,SM,LOCK,ND +SUB mem,imm32 [mi: hle o32 81 /5 id] 386,SM,LOCK +SUB rm8,imm [mi: hle 82 /5 ib] 8086,SM,LOCK,ND,NOLONG +SVDC mem80,reg_sreg [mr: 0f 78 /r] 486,CYRIX,SMM +SVLDT mem80 [m: 0f 7a /0] 486,CYRIX,SMM,ND +SVTS mem80 [m: 0f 7c /0] 486,CYRIX,SMM +SWAPGS void [ 0f 01 f8] X86_64,LONG +SYSCALL void [ 0f 05] P6,AMD +SYSENTER void [ 0f 34] P6 +SYSEXIT void [ 0f 35] P6,PRIV +SYSRET void [ 0f 07] P6,PRIV,AMD +TEST mem,reg8 [mr: 84 /r] 8086,SM +TEST reg8,reg8 [mr: 84 /r] 8086 +TEST mem,reg16 [mr: o16 85 /r] 8086,SM +TEST reg16,reg16 [mr: o16 85 /r] 8086 +TEST mem,reg32 [mr: o32 85 /r] 386,SM +TEST reg32,reg32 [mr: o32 85 /r] 386 +TEST mem,reg64 [mr: o64 85 /r] X86_64,LONG,SM +TEST reg64,reg64 [mr: o64 85 /r] X86_64,LONG +TEST reg8,mem [rm: 84 /r] 8086,SM +TEST reg16,mem [rm: o16 85 /r] 8086,SM +TEST reg32,mem [rm: o32 85 /r] 386,SM +TEST reg64,mem [rm: o64 85 /r] X86_64,LONG,SM +TEST reg_al,imm [-i: a8 ib] 8086,SM +TEST reg_ax,imm [-i: o16 a9 iw] 8086,SM +TEST reg_eax,imm [-i: o32 a9 id] 386,SM +TEST reg_rax,imm [-i: o64 a9 id,s] X86_64,LONG,SM +TEST rm8,imm [mi: f6 /0 ib] 8086,SM +TEST rm16,imm [mi: o16 f7 /0 iw] 8086,SM +TEST rm32,imm [mi: o32 f7 /0 id] 386,SM +TEST rm64,imm [mi: o64 f7 /0 id,s] X86_64,LONG,SM +TEST mem,imm8 [mi: f6 /0 ib] 8086,SM +TEST mem,imm16 [mi: o16 f7 /0 iw] 8086,SM +TEST mem,imm32 [mi: o32 f7 /0 id] 386,SM +UD0 void [ 0f ff] 186,OBSOLETE +UD0 reg16,rm16 [rm: o16 0f ff /r] 186 +UD0 reg32,rm32 [rm: o32 0f ff /r] 186 +UD0 reg64,rm64 [rm: o64 0f ff /r] 186 +UD1 reg16,rm16 [rm: o16 0f b9 /r] 186 +UD1 reg32,rm32 [rm: o32 0f b9 /r] 186 +UD1 reg64,rm64 [rm: o64 0f b9 /r] 186 +UD1 void [ 0f b9] 186,ND +UD2B void [ 0f b9] 186,ND +UD2B reg16,rm16 [rm: o16 0f b9 /r] 186,ND +UD2B reg32,rm32 [rm: o32 0f b9 /r] 186,ND +UD2B reg64,rm64 [rm: o64 0f b9 /r] 186,ND +UD2 void [ 0f 0b] 186 +UD2A void [ 0f 0b] 186,ND +UMOV mem,reg8 [mr: np 0f 10 /r] 386,UNDOC,SM,ND +UMOV reg8,reg8 [mr: np 0f 10 /r] 386,UNDOC,ND +UMOV mem,reg16 [mr: np o16 0f 11 /r] 386,UNDOC,SM,ND +UMOV reg16,reg16 [mr: np o16 0f 11 /r] 386,UNDOC,ND +UMOV mem,reg32 [mr: np o32 0f 11 /r] 386,UNDOC,SM,ND +UMOV reg32,reg32 [mr: np o32 0f 11 /r] 386,UNDOC,ND +UMOV reg8,mem [rm: np 0f 12 /r] 386,UNDOC,SM,ND +UMOV reg8,reg8 [rm: np 0f 12 /r] 386,UNDOC,ND +UMOV reg16,mem [rm: np o16 0f 13 /r] 386,UNDOC,SM,ND +UMOV reg16,reg16 [rm: np o16 0f 13 /r] 386,UNDOC,ND +UMOV reg32,mem [rm: np o32 0f 13 /r] 386,UNDOC,SM,ND +UMOV reg32,reg32 [rm: np o32 0f 13 /r] 386,UNDOC,ND +VERR mem [m: 0f 00 /4] 286,PROT +VERR mem16 [m: 0f 00 /4] 286,PROT +VERR reg16 [m: 0f 00 /4] 286,PROT +VERW mem [m: 0f 00 /5] 286,PROT +VERW mem16 [m: 0f 00 /5] 286,PROT +VERW reg16 [m: 0f 00 /5] 286,PROT +FWAIT void [ wait] 8086 +WBINVD void [ 0f 09] 486,PRIV +WRSHR rm32 [m: o32 0f 37 /0] P6,CYRIX,SMM +WRMSR void [ 0f 30] PENT,PRIV +XADD mem,reg8 [mr: hle 0f c0 /r] 486,SM,LOCK +XADD reg8,reg8 [mr: 0f c0 /r] 486 +XADD mem,reg16 [mr: hle o16 0f c1 /r] 486,SM,LOCK +XADD reg16,reg16 [mr: o16 0f c1 /r] 486 +XADD mem,reg32 [mr: hle o32 0f c1 /r] 486,SM,LOCK +XADD reg32,reg32 [mr: o32 0f c1 /r] 486 +XADD mem,reg64 [mr: hle o64 0f c1 /r] X86_64,LONG,SM,LOCK +XADD reg64,reg64 [mr: o64 0f c1 /r] X86_64,LONG +XBTS reg16,mem [rm: o16 0f a6 /r] 386,SW,UNDOC,ND +XBTS reg16,reg16 [rm: o16 0f a6 /r] 386,UNDOC,ND +XBTS reg32,mem [rm: o32 0f a6 /r] 386,SD,UNDOC,ND +XBTS reg32,reg32 [rm: o32 0f a6 /r] 386,UNDOC,ND +XCHG reg_ax,reg16 [-r: o16 90+r] 8086 +XCHG reg_eax,reg32na [-r: o32 90+r] 386 +XCHG reg_rax,reg64 [-r: o64 90+r] X86_64,LONG +XCHG reg16,reg_ax [r-: o16 90+r] 8086 +XCHG reg32na,reg_eax [r-: o32 90+r] 386 +XCHG reg64,reg_rax [r-: o64 90+r] X86_64,LONG +; This must be NOLONG since opcode 90 is NOP, and in 64-bit mode +; "xchg eax,eax" is *not* a NOP. +XCHG reg_eax,reg_eax [--: o32 90] 386,NOLONG +XCHG reg8,mem [rm: hlenl 86 /r] 8086,SM,LOCK +XCHG reg8,reg8 [rm: 86 /r] 8086 +XCHG reg16,mem [rm: hlenl o16 87 /r] 8086,SM,LOCK +XCHG reg16,reg16 [rm: o16 87 /r] 8086 +XCHG reg32,mem [rm: hlenl o32 87 /r] 386,SM,LOCK +XCHG reg32,reg32 [rm: o32 87 /r] 386 +XCHG reg64,mem [rm: hlenl o64 87 /r] X86_64,LONG,SM,LOCK +XCHG reg64,reg64 [rm: o64 87 /r] X86_64,LONG +XCHG mem,reg8 [mr: hlenl 86 /r] 8086,SM,LOCK +XCHG reg8,reg8 [mr: 86 /r] 8086 +XCHG mem,reg16 [mr: hlenl o16 87 /r] 8086,SM,LOCK +XCHG reg16,reg16 [mr: o16 87 /r] 8086 +XCHG mem,reg32 [mr: hlenl o32 87 /r] 386,SM,LOCK +XCHG reg32,reg32 [mr: o32 87 /r] 386 +XCHG mem,reg64 [mr: hlenl o64 87 /r] X86_64,LONG,SM,LOCK +XCHG reg64,reg64 [mr: o64 87 /r] X86_64,LONG +XLATB void [ d7] 8086 +XLAT void [ d7] 8086 +XOR mem,reg8 [mr: hle 30 /r] 8086,SM,LOCK +XOR reg8,reg8 [mr: 30 /r] 8086 +XOR mem,reg16 [mr: hle o16 31 /r] 8086,SM,LOCK +XOR reg16,reg16 [mr: o16 31 /r] 8086 +XOR mem,reg32 [mr: hle o32 31 /r] 386,SM,LOCK +XOR reg32,reg32 [mr: o32 31 /r] 386 +XOR mem,reg64 [mr: hle o64 31 /r] X86_64,LONG,SM,LOCK +XOR reg64,reg64 [mr: o64 31 /r] X86_64,LONG +XOR reg8,mem [rm: 32 /r] 8086,SM +XOR reg8,reg8 [rm: 32 /r] 8086 +XOR reg16,mem [rm: o16 33 /r] 8086,SM +XOR reg16,reg16 [rm: o16 33 /r] 8086 +XOR reg32,mem [rm: o32 33 /r] 386,SM +XOR reg32,reg32 [rm: o32 33 /r] 386 +XOR reg64,mem [rm: o64 33 /r] X86_64,LONG,SM +XOR reg64,reg64 [rm: o64 33 /r] X86_64,LONG +XOR rm16,imm8 [mi: hle o16 83 /6 ib,s] 8086,LOCK +XOR rm32,imm8 [mi: hle o32 83 /6 ib,s] 386,LOCK +XOR rm64,imm8 [mi: hle o64 83 /6 ib,s] X86_64,LONG,LOCK +XOR reg_al,imm [-i: 34 ib] 8086,SM +XOR reg_ax,sbyteword [mi: o16 83 /6 ib,s] 8086,SM,ND +XOR reg_ax,imm [-i: o16 35 iw] 8086,SM +XOR reg_eax,sbytedword [mi: o32 83 /6 ib,s] 386,SM,ND +XOR reg_eax,imm [-i: o32 35 id] 386,SM +XOR reg_rax,sbytedword [mi: o64 83 /6 ib,s] X86_64,LONG,SM,ND +XOR reg_rax,imm [-i: o64 35 id,s] X86_64,LONG,SM +XOR rm8,imm [mi: hle 80 /6 ib] 8086,SM,LOCK +XOR rm16,sbyteword [mi: hle o16 83 /6 ib,s] 8086,SM,LOCK,ND +XOR rm16,imm [mi: hle o16 81 /6 iw] 8086,SM,LOCK +XOR rm32,sbytedword [mi: hle o32 83 /6 ib,s] 386,SM,LOCK,ND +XOR rm32,imm [mi: hle o32 81 /6 id] 386,SM,LOCK +XOR rm64,sbytedword [mi: hle o64 83 /6 ib,s] X86_64,LONG,SM,LOCK,ND +XOR rm64,imm [mi: hle o64 81 /6 id,s] X86_64,LONG,SM,LOCK +XOR mem,imm8 [mi: hle 80 /6 ib] 8086,SM,LOCK +XOR mem,sbyteword16 [mi: hle o16 83 /6 ib,s] 8086,SM,LOCK,ND +XOR mem,imm16 [mi: hle o16 81 /6 iw] 8086,SM,LOCK +XOR mem,sbytedword32 [mi: hle o32 83 /6 ib,s] 386,SM,LOCK,ND +XOR mem,imm32 [mi: hle o32 81 /6 id] 386,SM,LOCK +XOR rm8,imm [mi: hle 82 /6 ib] 8086,SM,LOCK,ND,NOLONG +CMOVcc reg16,mem [rm: o16 0f 40+c /r] P6,SM +CMOVcc reg16,reg16 [rm: o16 0f 40+c /r] P6 +CMOVcc reg32,mem [rm: o32 0f 40+c /r] P6,SM +CMOVcc reg32,reg32 [rm: o32 0f 40+c /r] P6 +CMOVcc reg64,mem [rm: o64 0f 40+c /r] X86_64,LONG,SM +CMOVcc reg64,reg64 [rm: o64 0f 40+c /r] X86_64,LONG +Jcc imm|near [i: odf 0f 80+c rel] 386,BND +Jcc imm16|near [i: o16 0f 80+c rel] 386,NOLONG,BND +Jcc imm32|near [i: o32 0f 80+c rel] 386,NOLONG,BND +Jcc imm64|near [i: o64nw 0f 80+c rel] X86_64,LONG,BND +Jcc imm|short [i: 70+c rel8] 8086,ND,BND +Jcc imm [i: jcc8 70+c rel8] 8086,ND,BND +Jcc imm [i: 0f 80+c rel] 386,ND,BND +Jcc imm [i: 71+c jlen e9 rel] 8086,ND,BND +Jcc imm [i: 70+c rel8] 8086,BND + +SETcc mem [m: 0f 90+c /0] 386,SB +SETcc reg8 [m: 0f 90+c /0] 386 + +;# Katmai Streaming SIMD instructions (SSE -- a.k.a. KNI, XMM, MMX2) +ADDPS xmmreg,xmmrm128 [rm: np 0f 58 /r] KATMAI,SSE +ADDSS xmmreg,xmmrm32 [rm: f3 0f 58 /r] KATMAI,SSE +ANDNPS xmmreg,xmmrm128 [rm: np 0f 55 /r] KATMAI,SSE +ANDPS xmmreg,xmmrm128 [rm: np 0f 54 /r] KATMAI,SSE +CMPEQPS xmmreg,xmmrm128 [rm: np 0f c2 /r 00] KATMAI,SSE +CMPEQSS xmmreg,xmmrm32 [rm: f3 0f c2 /r 00] KATMAI,SSE +CMPLEPS xmmreg,xmmrm128 [rm: np 0f c2 /r 02] KATMAI,SSE +CMPLESS xmmreg,xmmrm32 [rm: f3 0f c2 /r 02] KATMAI,SSE +CMPLTPS xmmreg,xmmrm128 [rm: np 0f c2 /r 01] KATMAI,SSE +CMPLTSS xmmreg,xmmrm32 [rm: f3 0f c2 /r 01] KATMAI,SSE +CMPNEQPS xmmreg,xmmrm128 [rm: np 0f c2 /r 04] KATMAI,SSE +CMPNEQSS xmmreg,xmmrm32 [rm: f3 0f c2 /r 04] KATMAI,SSE +CMPNLEPS xmmreg,xmmrm128 [rm: np 0f c2 /r 06] KATMAI,SSE +CMPNLESS xmmreg,xmmrm32 [rm: f3 0f c2 /r 06] KATMAI,SSE +CMPNLTPS xmmreg,xmmrm128 [rm: np 0f c2 /r 05] KATMAI,SSE +CMPNLTSS xmmreg,xmmrm32 [rm: f3 0f c2 /r 05] KATMAI,SSE +CMPORDPS xmmreg,xmmrm128 [rm: np 0f c2 /r 07] KATMAI,SSE +CMPORDSS xmmreg,xmmrm32 [rm: f3 0f c2 /r 07] KATMAI,SSE +CMPUNORDPS xmmreg,xmmrm128 [rm: np 0f c2 /r 03] KATMAI,SSE +CMPUNORDSS xmmreg,xmmrm32 [rm: f3 0f c2 /r 03] KATMAI,SSE +; CMPPS/CMPSS must come after the specific ops; that way the disassembler will find the +; specific ops first and only disassemble illegal ones as cmpps/cmpss. +CMPPS xmmreg,xmmrm128,imm8 [rmi: np 0f c2 /r ib,u] KATMAI,SSE +CMPSS xmmreg,xmmrm32,imm8 [rmi: f3 0f c2 /r ib,u] KATMAI,SSE +COMISS xmmreg,xmmrm32 [rm: np 0f 2f /r] KATMAI,SSE +CVTPI2PS xmmreg,mmxrm64 [rm: np 0f 2a /r] KATMAI,SSE,MMX +CVTPS2PI mmxreg,xmmrm64 [rm: np 0f 2d /r] KATMAI,SSE,MMX +CVTSI2SS xmmreg,mem [rm: f3 0f 2a /r] KATMAI,SSE,SD,AR1,ND +CVTSI2SS xmmreg,rm32 [rm: f3 0f 2a /r] KATMAI,SSE,SD,AR1 +CVTSI2SS xmmreg,rm64 [rm: o64 f3 0f 2a /r] X86_64,LONG,SSE,SQ,AR1 +CVTSS2SI reg32,xmmreg [rm: f3 0f 2d /r] KATMAI,SSE,SD,AR1 +CVTSS2SI reg32,mem [rm: f3 0f 2d /r] KATMAI,SSE,SD,AR1 +CVTSS2SI reg64,xmmreg [rm: o64 f3 0f 2d /r] X86_64,LONG,SSE,SD,AR1 +CVTSS2SI reg64,mem [rm: o64 f3 0f 2d /r] X86_64,LONG,SSE,SD,AR1 +CVTTPS2PI mmxreg,xmmrm [rm: np 0f 2c /r] KATMAI,SSE,MMX,SQ +CVTTSS2SI reg32,xmmrm [rm: f3 0f 2c /r] KATMAI,SSE,SD,AR1 +CVTTSS2SI reg64,xmmrm [rm: o64 f3 0f 2c /r] X86_64,LONG,SSE,SD,AR1 +DIVPS xmmreg,xmmrm128 [rm: np 0f 5e /r] KATMAI,SSE +DIVSS xmmreg,xmmrm32 [rm: f3 0f 5e /r] KATMAI,SSE +LDMXCSR mem32 [m: np 0f ae /2] KATMAI,SSE +MAXPS xmmreg,xmmrm128 [rm: np 0f 5f /r] KATMAI,SSE +MAXSS xmmreg,xmmrm32 [rm: f3 0f 5f /r] KATMAI,SSE +MINPS xmmreg,xmmrm128 [rm: np 0f 5d /r] KATMAI,SSE +MINSS xmmreg,xmmrm32 [rm: f3 0f 5d /r] KATMAI,SSE +MOVAPS xmmreg,xmmrm128 [rm: np 0f 28 /r] KATMAI,SSE +MOVAPS xmmrm128,xmmreg [mr: np 0f 29 /r] KATMAI,SSE +MOVHPS xmmreg,mem64 [rm: np 0f 16 /r] KATMAI,SSE +MOVHPS mem64,xmmreg [mr: np 0f 17 /r] KATMAI,SSE +MOVLHPS xmmreg,xmmreg [rm: np 0f 16 /r] KATMAI,SSE +MOVLPS xmmreg,mem64 [rm: np 0f 12 /r] KATMAI,SSE +MOVLPS mem64,xmmreg [mr: np 0f 13 /r] KATMAI,SSE +MOVHLPS xmmreg,xmmreg [rm: np 0f 12 /r] KATMAI,SSE +MOVMSKPS reg32,xmmreg [rm: np 0f 50 /r] KATMAI,SSE +MOVMSKPS reg64,xmmreg [rm: np o64 0f 50 /r] X86_64,LONG,SSE +MOVNTPS mem128,xmmreg [mr: np 0f 2b /r] KATMAI,SSE +MOVSS xmmreg,xmmrm32 [rm: f3 0f 10 /r] KATMAI,SSE +MOVSS xmmrm32,xmmreg [mr: f3 0f 11 /r] KATMAI,SSE +MOVUPS xmmreg,xmmrm128 [rm: np 0f 10 /r] KATMAI,SSE +MOVUPS xmmrm128,xmmreg [mr: np 0f 11 /r] KATMAI,SSE +MULPS xmmreg,xmmrm128 [rm: np 0f 59 /r] KATMAI,SSE +MULSS xmmreg,xmmrm32 [rm: f3 0f 59 /r] KATMAI,SSE +ORPS xmmreg,xmmrm128 [rm: np 0f 56 /r] KATMAI,SSE +RCPPS xmmreg,xmmrm128 [rm: np 0f 53 /r] KATMAI,SSE +RCPSS xmmreg,xmmrm32 [rm: f3 0f 53 /r] KATMAI,SSE +RSQRTPS xmmreg,xmmrm128 [rm: np 0f 52 /r] KATMAI,SSE +RSQRTSS xmmreg,xmmrm32 [rm: f3 0f 52 /r] KATMAI,SSE +SHUFPS xmmreg,xmmrm128,imm8 [rmi: np 0f c6 /r ib,u] KATMAI,SSE +SQRTPS xmmreg,xmmrm128 [rm: np 0f 51 /r] KATMAI,SSE +SQRTSS xmmreg,xmmrm32 [rm: f3 0f 51 /r] KATMAI,SSE +STMXCSR mem32 [m: np 0f ae /3] KATMAI,SSE +SUBPS xmmreg,xmmrm128 [rm: np 0f 5c /r] KATMAI,SSE +SUBSS xmmreg,xmmrm32 [rm: f3 0f 5c /r] KATMAI,SSE +UCOMISS xmmreg,xmmrm32 [rm: np 0f 2e /r] KATMAI,SSE +UNPCKHPS xmmreg,xmmrm128 [rm: np 0f 15 /r] KATMAI,SSE +UNPCKLPS xmmreg,xmmrm128 [rm: np 0f 14 /r] KATMAI,SSE +XORPS xmmreg,xmmrm128 [rm: np 0f 57 /r] KATMAI,SSE + +;# Introduced in Deschutes but necessary for SSE support +FXRSTOR mem [m: np 0f ae /1] P6,SSE,FPU +FXRSTOR64 mem [m: o64 np 0f ae /1] X86_64,LONG,SSE,FPU +FXSAVE mem [m: np 0f ae /0] P6,SSE,FPU +FXSAVE64 mem [m: o64 np 0f ae /0] X86_64,LONG,SSE,FPU + +;# XSAVE group (AVX and extended state) +; Introduced in late Penryn ... we really need to clean up the handling +; of CPU feature bits. +XGETBV void [ 0f 01 d0] NEHALEM +XSETBV void [ 0f 01 d1] NEHALEM,PRIV +XSAVE mem [m: np 0f ae /4] NEHALEM +XSAVE64 mem [m: o64 np 0f ae /4] LONG,NEHALEM +XSAVEC mem [m: np 0f c7 /4] FUTURE +XSAVEC64 mem [m: o64 np 0f c7 /4] LONG,FUTURE +XSAVEOPT mem [m: np 0f ae /6] FUTURE +XSAVEOPT64 mem [m: o64 np 0f ae /6] LONG,FUTURE +XSAVES mem [m: np 0f c7 /5] FUTURE +XSAVES64 mem [m: o64 np 0f c7 /5] LONG,FUTURE +XRSTOR mem [m: np 0f ae /5] NEHALEM +XRSTOR64 mem [m: o64 np 0f ae /5] LONG,NEHALEM +XRSTORS mem [m: np 0f c7 /3] FUTURE +XRSTORS64 mem [m: o64 np 0f c7 /3] LONG,FUTURE + +; These instructions are not SSE-specific; they are +;# Generic memory operations +; and work even if CR4.OSFXFR == 0 +PREFETCHNTA mem8 [m: 0f 18 /0] KATMAI,SB +PREFETCHT0 mem8 [m: 0f 18 /1] KATMAI,SB +PREFETCHT1 mem8 [m: 0f 18 /2] KATMAI,SB +PREFETCHT2 mem8 [m: 0f 18 /3] KATMAI,SB +PREFETCHIT0 mem8 [m: 0f 18 /7] FUTURE,PREFETCHI,SB +PREFETCHIT1 mem8 [m: 0f 18 /6] FUTURE,PREFETCHI,SB +SFENCE void [ np 0f ae f8] KATMAI + +;# New MMX instructions introduced in Katmai +MASKMOVQ mmxreg,mmxreg [rm: np 0f f7 /r] KATMAI,MMX +MOVNTQ mem,mmxreg [mr: np 0f e7 /r] KATMAI,MMX,SQ +PAVGB mmxreg,mmxrm [rm: np o64nw 0f e0 /r] KATMAI,MMX,SQ +PAVGW mmxreg,mmxrm [rm: np o64nw 0f e3 /r] KATMAI,MMX,SQ +PEXTRW reg32,mmxreg,imm [rmi: np 0f c5 /r ib,u] KATMAI,MMX,SB,AR2 +; PINSRW is documented as using a reg32, but it's really using only 16 bit +; -- accept either, but be truthful in disassembly +PINSRW mmxreg,mem,imm [rmi: np 0f c4 /r ib,u] KATMAI,MMX,SB,AR2 +PINSRW mmxreg,rm16,imm [rmi: np 0f c4 /r ib,u] KATMAI,MMX,SB,AR2 +PINSRW mmxreg,reg32,imm [rmi: np 0f c4 /r ib,u] KATMAI,MMX,SB,AR2 +PMAXSW mmxreg,mmxrm [rm: np o64nw 0f ee /r] KATMAI,MMX,SQ +PMAXUB mmxreg,mmxrm [rm: np o64nw 0f de /r] KATMAI,MMX,SQ +PMINSW mmxreg,mmxrm [rm: np o64nw 0f ea /r] KATMAI,MMX,SQ +PMINUB mmxreg,mmxrm [rm: np o64nw 0f da /r] KATMAI,MMX,SQ +PMOVMSKB reg32,mmxreg [rm: np 0f d7 /r] KATMAI,MMX +PMULHUW mmxreg,mmxrm [rm: np o64nw 0f e4 /r] KATMAI,MMX,SQ +PSADBW mmxreg,mmxrm [rm: np o64nw 0f f6 /r] KATMAI,MMX,SQ +PSHUFW mmxreg,mmxrm,imm [rmi: np o64nw 0f 70 /r ib] KATMAI,MMX,SM2,SB,AR2 + +;# AMD Enhanced 3DNow! (Athlon) instructions +PF2IW mmxreg,mmxrm [rm: o64nw 0f 0f /r 1c] PENT,3DNOW,SQ +PFNACC mmxreg,mmxrm [rm: o64nw 0f 0f /r 8a] PENT,3DNOW,SQ +PFPNACC mmxreg,mmxrm [rm: o64nw 0f 0f /r 8e] PENT,3DNOW,SQ +PI2FW mmxreg,mmxrm [rm: o64nw 0f 0f /r 0c] PENT,3DNOW,SQ +PSWAPD mmxreg,mmxrm [rm: o64nw 0f 0f /r bb] PENT,3DNOW,SQ + +;# Willamette SSE2 Cacheability Instructions +MASKMOVDQU xmmreg,xmmreg [rm: 66 0f f7 /r] WILLAMETTE,SSE2 +; CLFLUSH needs its own feature flag implemented one day +CLFLUSH mem [m: np 0f ae /7] WILLAMETTE,SSE2 +MOVNTDQ mem,xmmreg [mr: 66 0f e7 /r] WILLAMETTE,SSE2,SO +MOVNTI mem,reg32 [mr: np 0f c3 /r] WILLAMETTE,SD +MOVNTI mem,reg64 [mr: o64 np 0f c3 /r] X86_64,LONG,SQ +MOVNTPD mem,xmmreg [mr: 66 0f 2b /r] WILLAMETTE,SSE2,SO +LFENCE void [ np 0f ae e8] WILLAMETTE,SSE2 +MFENCE void [ np 0f ae f0] WILLAMETTE,SSE2 + +;# Willamette MMX instructions (SSE2 SIMD Integer Instructions) +MOVD mem,xmmreg [mr: 66 norexw 0f 7e /r] WILLAMETTE,SSE2,SD +MOVD xmmreg,mem [rm: 66 norexw 0f 6e /r] WILLAMETTE,SSE2,SD +MOVD xmmreg,rm32 [rm: 66 norexw 0f 6e /r] WILLAMETTE,SSE2 +MOVD rm32,xmmreg [mr: 66 norexw 0f 7e /r] WILLAMETTE,SSE2 +MOVDQA xmmreg,xmmrm128 [rm: 66 0f 6f /r] WILLAMETTE,SSE2,SO +MOVDQA xmmrm128,xmmreg [mr: 66 0f 7f /r] WILLAMETTE,SSE2,SO +MOVDQU xmmreg,xmmrm128 [rm: f3 0f 6f /r] WILLAMETTE,SSE2,SO +MOVDQU xmmrm128,xmmreg [mr: f3 0f 7f /r] WILLAMETTE,SSE2,SO +MOVDQ2Q mmxreg,xmmreg [rm: f2 0f d6 /r] WILLAMETTE,SSE2 +MOVQ xmmreg,xmmreg [rm: f3 0f 7e /r] WILLAMETTE,SSE2 +MOVQ xmmreg,xmmreg [mr: 66 0f d6 /r] WILLAMETTE,SSE2 +MOVQ mem,xmmreg [mr: 66 0f d6 /r] WILLAMETTE,SSE2,SQ +MOVQ xmmreg,mem [rm: f3 0f 7e /r] WILLAMETTE,SSE2,SQ +MOVQ xmmreg,rm64 [rm: 66 o64 0f 6e /r] X86_64,LONG,SSE2 +MOVQ rm64,xmmreg [mr: 66 o64 0f 7e /r] X86_64,LONG,SSE2 +MOVQ2DQ xmmreg,mmxreg [rm: f3 0f d6 /r] WILLAMETTE,SSE2 +PACKSSWB xmmreg,xmmrm [rm: 66 0f 63 /r] WILLAMETTE,SSE2,SO +PACKSSDW xmmreg,xmmrm [rm: 66 0f 6b /r] WILLAMETTE,SSE2,SO +PACKUSWB xmmreg,xmmrm [rm: 66 0f 67 /r] WILLAMETTE,SSE2,SO +PADDB xmmreg,xmmrm [rm: 66 0f fc /r] WILLAMETTE,SSE2,SO +PADDW xmmreg,xmmrm [rm: 66 0f fd /r] WILLAMETTE,SSE2,SO +PADDD xmmreg,xmmrm [rm: 66 0f fe /r] WILLAMETTE,SSE2,SO +PADDQ mmxreg,mmxrm [rm: np 0f d4 /r] WILLAMETTE,MMX,SQ +PADDQ xmmreg,xmmrm [rm: 66 0f d4 /r] WILLAMETTE,SSE2,SO +PADDSB xmmreg,xmmrm [rm: 66 0f ec /r] WILLAMETTE,SSE2,SO +PADDSW xmmreg,xmmrm [rm: 66 0f ed /r] WILLAMETTE,SSE2,SO +PADDUSB xmmreg,xmmrm [rm: 66 0f dc /r] WILLAMETTE,SSE2,SO +PADDUSW xmmreg,xmmrm [rm: 66 0f dd /r] WILLAMETTE,SSE2,SO +PAND xmmreg,xmmrm [rm: 66 0f db /r] WILLAMETTE,SSE2,SO +PANDN xmmreg,xmmrm [rm: 66 0f df /r] WILLAMETTE,SSE2,SO +PAVGB xmmreg,xmmrm [rm: 66 0f e0 /r] WILLAMETTE,SSE2,SO +PAVGW xmmreg,xmmrm [rm: 66 0f e3 /r] WILLAMETTE,SSE2,SO +PCMPEQB xmmreg,xmmrm [rm: 66 0f 74 /r] WILLAMETTE,SSE2,SO +PCMPEQW xmmreg,xmmrm [rm: 66 0f 75 /r] WILLAMETTE,SSE2,SO +PCMPEQD xmmreg,xmmrm [rm: 66 0f 76 /r] WILLAMETTE,SSE2,SO +PCMPGTB xmmreg,xmmrm [rm: 66 0f 64 /r] WILLAMETTE,SSE2,SO +PCMPGTW xmmreg,xmmrm [rm: 66 0f 65 /r] WILLAMETTE,SSE2,SO +PCMPGTD xmmreg,xmmrm [rm: 66 0f 66 /r] WILLAMETTE,SSE2,SO +PEXTRW reg32,xmmreg,imm [rmi: 66 0f c5 /r ib,u] WILLAMETTE,SSE2,SB,AR2 +PEXTRW reg64,xmmreg,imm [rmi: 66 0f c5 /r ib,u] X86_64,LONG,SSE2,SB,AR2,ND +PINSRW xmmreg,reg16,imm [rmi: 66 0f c4 /r ib,u] WILLAMETTE,SSE2,SB,AR2 +PINSRW xmmreg,reg32,imm [rmi: 66 0f c4 /r ib,u] WILLAMETTE,SSE2,SB,AR2,ND +PINSRW xmmreg,reg64,imm [rmi: 66 0f c4 /r ib,u] X86_64,LONG,SSE2,SB,AR2,ND +PINSRW xmmreg,mem,imm [rmi: 66 0f c4 /r ib,u] WILLAMETTE,SSE2,SB,AR2 +PINSRW xmmreg,mem16,imm [rmi: 66 0f c4 /r ib,u] WILLAMETTE,SSE2,SB,AR2 +PMADDWD xmmreg,xmmrm [rm: 66 0f f5 /r] WILLAMETTE,SSE2,SO +PMAXSW xmmreg,xmmrm [rm: 66 0f ee /r] WILLAMETTE,SSE2,SO +PMAXUB xmmreg,xmmrm [rm: 66 0f de /r] WILLAMETTE,SSE2,SO +PMINSW xmmreg,xmmrm [rm: 66 0f ea /r] WILLAMETTE,SSE2,SO +PMINUB xmmreg,xmmrm [rm: 66 0f da /r] WILLAMETTE,SSE2,SO +PMOVMSKB reg32,xmmreg [rm: 66 0f d7 /r] WILLAMETTE,SSE2 +PMULHUW xmmreg,xmmrm [rm: 66 0f e4 /r] WILLAMETTE,SSE2,SO +PMULHW xmmreg,xmmrm [rm: 66 0f e5 /r] WILLAMETTE,SSE2,SO +PMULLW xmmreg,xmmrm [rm: 66 0f d5 /r] WILLAMETTE,SSE2,SO +PMULUDQ mmxreg,mmxrm [rm: np o64nw 0f f4 /r] WILLAMETTE,SSE2,SO +PMULUDQ xmmreg,xmmrm [rm: 66 0f f4 /r] WILLAMETTE,SSE2,SO +POR xmmreg,xmmrm [rm: 66 0f eb /r] WILLAMETTE,SSE2,SO +PSADBW xmmreg,xmmrm [rm: 66 0f f6 /r] WILLAMETTE,SSE2,SO +PSHUFD xmmreg,xmmreg,imm [rmi: 66 0f 70 /r ib] WILLAMETTE,SSE2,SB,AR2 +PSHUFD xmmreg,mem,imm [rmi: 66 0f 70 /r ib] WILLAMETTE,SSE2,SM2,SB,AR2 +PSHUFHW xmmreg,xmmreg,imm [rmi: f3 0f 70 /r ib] WILLAMETTE,SSE2,SB,AR2 +PSHUFHW xmmreg,mem,imm [rmi: f3 0f 70 /r ib] WILLAMETTE,SSE2,SM2,SB,AR2 +PSHUFLW xmmreg,xmmreg,imm [rmi: f2 0f 70 /r ib] WILLAMETTE,SSE2,SB,AR2 +PSHUFLW xmmreg,mem,imm [rmi: f2 0f 70 /r ib] WILLAMETTE,SSE2,SM2,SB,AR2 +PSLLDQ xmmreg,imm [mi: 66 0f 73 /7 ib,u] WILLAMETTE,SSE2,SB,AR1 +PSLLW xmmreg,xmmrm [rm: 66 0f f1 /r] WILLAMETTE,SSE2,SO +PSLLW xmmreg,imm [mi: 66 0f 71 /6 ib,u] WILLAMETTE,SSE2,SB,AR1 +PSLLD xmmreg,xmmrm [rm: 66 0f f2 /r] WILLAMETTE,SSE2,SO +PSLLD xmmreg,imm [mi: 66 0f 72 /6 ib,u] WILLAMETTE,SSE2,SB,AR1 +PSLLQ xmmreg,xmmrm [rm: 66 0f f3 /r] WILLAMETTE,SSE2,SO +PSLLQ xmmreg,imm [mi: 66 0f 73 /6 ib,u] WILLAMETTE,SSE2,SB,AR1 +PSRAW xmmreg,xmmrm [rm: 66 0f e1 /r] WILLAMETTE,SSE2,SO +PSRAW xmmreg,imm [mi: 66 0f 71 /4 ib,u] WILLAMETTE,SSE2,SB,AR1 +PSRAD xmmreg,xmmrm [rm: 66 0f e2 /r] WILLAMETTE,SSE2,SO +PSRAD xmmreg,imm [mi: 66 0f 72 /4 ib,u] WILLAMETTE,SSE2,SB,AR1 +PSRLDQ xmmreg,imm [mi: 66 0f 73 /3 ib,u] WILLAMETTE,SSE2,SB,AR1 +PSRLW xmmreg,xmmrm [rm: 66 0f d1 /r] WILLAMETTE,SSE2,SO +PSRLW xmmreg,imm [mi: 66 0f 71 /2 ib,u] WILLAMETTE,SSE2,SB,AR1 +PSRLD xmmreg,xmmrm [rm: 66 0f d2 /r] WILLAMETTE,SSE2,SO +PSRLD xmmreg,imm [mi: 66 0f 72 /2 ib,u] WILLAMETTE,SSE2,SB,AR1 +PSRLQ xmmreg,xmmrm [rm: 66 0f d3 /r] WILLAMETTE,SSE2,SO +PSRLQ xmmreg,imm [mi: 66 0f 73 /2 ib,u] WILLAMETTE,SSE2,SB,AR1 +PSUBB xmmreg,xmmrm [rm: 66 0f f8 /r] WILLAMETTE,SSE2,SO +PSUBW xmmreg,xmmrm [rm: 66 0f f9 /r] WILLAMETTE,SSE2,SO +PSUBD xmmreg,xmmrm [rm: 66 0f fa /r] WILLAMETTE,SSE2,SO +PSUBQ mmxreg,mmxrm [rm: np o64nw 0f fb /r] WILLAMETTE,SSE2,SO +PSUBQ xmmreg,xmmrm [rm: 66 0f fb /r] WILLAMETTE,SSE2,SO +PSUBSB xmmreg,xmmrm [rm: 66 0f e8 /r] WILLAMETTE,SSE2,SO +PSUBSW xmmreg,xmmrm [rm: 66 0f e9 /r] WILLAMETTE,SSE2,SO +PSUBUSB xmmreg,xmmrm [rm: 66 0f d8 /r] WILLAMETTE,SSE2,SO +PSUBUSW xmmreg,xmmrm [rm: 66 0f d9 /r] WILLAMETTE,SSE2,SO +PUNPCKHBW xmmreg,xmmrm [rm: 66 0f 68 /r] WILLAMETTE,SSE2,SO +PUNPCKHWD xmmreg,xmmrm [rm: 66 0f 69 /r] WILLAMETTE,SSE2,SO +PUNPCKHDQ xmmreg,xmmrm [rm: 66 0f 6a /r] WILLAMETTE,SSE2,SO +PUNPCKHQDQ xmmreg,xmmrm [rm: 66 0f 6d /r] WILLAMETTE,SSE2,SO +PUNPCKLBW xmmreg,xmmrm [rm: 66 0f 60 /r] WILLAMETTE,SSE2,SO +PUNPCKLWD xmmreg,xmmrm [rm: 66 0f 61 /r] WILLAMETTE,SSE2,SO +PUNPCKLDQ xmmreg,xmmrm [rm: 66 0f 62 /r] WILLAMETTE,SSE2,SO +PUNPCKLQDQ xmmreg,xmmrm [rm: 66 0f 6c /r] WILLAMETTE,SSE2,SO +PXOR xmmreg,xmmrm [rm: 66 0f ef /r] WILLAMETTE,SSE2,SO + +;# Willamette Streaming SIMD instructions (SSE2) +ADDPD xmmreg,xmmrm [rm: 66 0f 58 /r] WILLAMETTE,SSE2,SO +ADDSD xmmreg,xmmrm [rm: f2 0f 58 /r] WILLAMETTE,SSE2,SQ +ANDNPD xmmreg,xmmrm [rm: 66 0f 55 /r] WILLAMETTE,SSE2,SO +ANDPD xmmreg,xmmrm [rm: 66 0f 54 /r] WILLAMETTE,SSE2,SO +CMPEQPD xmmreg,xmmrm [rm: 66 0f c2 /r 00] WILLAMETTE,SSE2,SO +CMPEQSD xmmreg,xmmrm [rm: f2 0f c2 /r 00] WILLAMETTE,SSE2,SQ +CMPLEPD xmmreg,xmmrm [rm: 66 0f c2 /r 02] WILLAMETTE,SSE2,SO +CMPLESD xmmreg,xmmrm [rm: f2 0f c2 /r 02] WILLAMETTE,SSE2,SQ +CMPLTPD xmmreg,xmmrm [rm: 66 0f c2 /r 01] WILLAMETTE,SSE2,SO +CMPLTSD xmmreg,xmmrm [rm: f2 0f c2 /r 01] WILLAMETTE,SSE2,SQ +CMPNEQPD xmmreg,xmmrm [rm: 66 0f c2 /r 04] WILLAMETTE,SSE2,SO +CMPNEQSD xmmreg,xmmrm [rm: f2 0f c2 /r 04] WILLAMETTE,SSE2,SQ +CMPNLEPD xmmreg,xmmrm [rm: 66 0f c2 /r 06] WILLAMETTE,SSE2,SO +CMPNLESD xmmreg,xmmrm [rm: f2 0f c2 /r 06] WILLAMETTE,SSE2,SQ +CMPNLTPD xmmreg,xmmrm [rm: 66 0f c2 /r 05] WILLAMETTE,SSE2,SO +CMPNLTSD xmmreg,xmmrm [rm: f2 0f c2 /r 05] WILLAMETTE,SSE2,SQ +CMPORDPD xmmreg,xmmrm [rm: 66 0f c2 /r 07] WILLAMETTE,SSE2,SO +CMPORDSD xmmreg,xmmrm [rm: f2 0f c2 /r 07] WILLAMETTE,SSE2,SQ +CMPUNORDPD xmmreg,xmmrm [rm: 66 0f c2 /r 03] WILLAMETTE,SSE2,SO +CMPUNORDSD xmmreg,xmmrm [rm: f2 0f c2 /r 03] WILLAMETTE,SSE2,SQ +; CMPPD/CMPSD must come after the specific ops; that way the disassembler will find the +; specific ops first and only disassemble illegal ones as cmppd/cmpsd. +CMPPD xmmreg,xmmrm128,imm8 [rmi: 66 0f c2 /r ib,u] WILLAMETTE,SSE2 +CMPSD xmmreg,xmmrm128,imm8 [rmi: f2 0f c2 /r ib,u] WILLAMETTE,SSE2 +COMISD xmmreg,xmmrm64 [rm: 66 0f 2f /r] WILLAMETTE,SSE2 +CVTDQ2PD xmmreg,xmmrm [rm: f3 0f e6 /r] WILLAMETTE,SSE2,SQ +CVTDQ2PS xmmreg,xmmrm [rm: np 0f 5b /r] WILLAMETTE,SSE2,SO +CVTPD2DQ xmmreg,xmmrm [rm: f2 0f e6 /r] WILLAMETTE,SSE2,SO +CVTPD2PI mmxreg,xmmrm [rm: 66 0f 2d /r] WILLAMETTE,SSE2,SO +CVTPD2PS xmmreg,xmmrm [rm: 66 0f 5a /r] WILLAMETTE,SSE2,SO +CVTPI2PD xmmreg,mmxrm [rm: 66 0f 2a /r] WILLAMETTE,SSE2,SQ +CVTPS2DQ xmmreg,xmmrm [rm: 66 0f 5b /r] WILLAMETTE,SSE2,SO +CVTPS2PD xmmreg,xmmrm [rm: np 0f 5a /r] WILLAMETTE,SSE2,SQ +CVTSD2SI reg32,xmmreg [rm: norexw f2 0f 2d /r] WILLAMETTE,SSE2,SQ,AR1 +CVTSD2SI reg32,mem [rm: norexw f2 0f 2d /r] WILLAMETTE,SSE2,SQ,AR1 +CVTSD2SI reg64,xmmreg [rm: o64 f2 0f 2d /r] X86_64,LONG,SSE2,SQ,AR1 +CVTSD2SI reg64,mem [rm: o64 f2 0f 2d /r] X86_64,LONG,SSE2,SQ,AR1 +CVTSD2SS xmmreg,xmmrm [rm: f2 0f 5a /r] WILLAMETTE,SSE2,SQ +CVTSI2SD xmmreg,mem [rm: f2 0f 2a /r] WILLAMETTE,SSE2,SD,AR1,ND +CVTSI2SD xmmreg,rm32 [rm: norexw f2 0f 2a /r] WILLAMETTE,SSE2,SD,AR1 +CVTSI2SD xmmreg,rm64 [rm: o64 f2 0f 2a /r] X86_64,LONG,SSE2,SQ,AR1 +CVTSS2SD xmmreg,xmmrm [rm: f3 0f 5a /r] WILLAMETTE,SSE2,SD +CVTTPD2PI mmxreg,xmmrm [rm: 66 0f 2c /r] WILLAMETTE,SSE2,SO +CVTTPD2DQ xmmreg,xmmrm [rm: 66 0f e6 /r] WILLAMETTE,SSE2,SO +CVTTPS2DQ xmmreg,xmmrm [rm: f3 0f 5b /r] WILLAMETTE,SSE2,SO +CVTTSD2SI reg32,xmmreg [rm: norexw f2 0f 2c /r] WILLAMETTE,SSE2,SQ,AR1 +CVTTSD2SI reg32,mem [rm: norexw f2 0f 2c /r] WILLAMETTE,SSE2,SQ,AR1 +CVTTSD2SI reg64,xmmreg [rm: o64 f2 0f 2c /r] X86_64,LONG,SSE2,SQ,AR1 +CVTTSD2SI reg64,mem [rm: o64 f2 0f 2c /r] X86_64,LONG,SSE2,SQ,AR1 +DIVPD xmmreg,xmmrm [rm: 66 0f 5e /r] WILLAMETTE,SSE2,SO +DIVSD xmmreg,xmmrm [rm: f2 0f 5e /r] WILLAMETTE,SSE2,SQ +MAXPD xmmreg,xmmrm [rm: 66 0f 5f /r] WILLAMETTE,SSE2,SO +MAXSD xmmreg,xmmrm [rm: f2 0f 5f /r] WILLAMETTE,SSE2,SQ +MINPD xmmreg,xmmrm [rm: 66 0f 5d /r] WILLAMETTE,SSE2,SO +MINSD xmmreg,xmmrm [rm: f2 0f 5d /r] WILLAMETTE,SSE2,SQ +MOVAPD xmmreg,xmmrm128 [rm: 66 0f 28 /r] WILLAMETTE,SSE2 +MOVAPD xmmrm128,xmmreg [mr: 66 0f 29 /r] WILLAMETTE,SSE2 +MOVHPD mem64,xmmreg [mr: 66 0f 17 /r] WILLAMETTE,SSE2 +MOVHPD xmmreg,mem64 [rm: 66 0f 16 /r] WILLAMETTE,SSE2 +MOVLPD mem64,xmmreg [mr: 66 0f 13 /r] WILLAMETTE,SSE2 +MOVLPD xmmreg,mem64 [rm: 66 0f 12 /r] WILLAMETTE,SSE2 +MOVMSKPD reg32,xmmreg [rm: 66 0f 50 /r] WILLAMETTE,SSE2 +MOVMSKPD reg64,xmmreg [rm: 66 o64 0f 50 /r] X86_64,LONG,SSE2 +MOVSD xmmreg,xmmrm64 [rm: f2 0f 10 /r] WILLAMETTE,SSE2 +MOVSD xmmrm64,xmmreg [mr: f2 0f 11 /r] WILLAMETTE,SSE2 +MOVUPD xmmreg,xmmrm128 [rm: 66 0f 10 /r] WILLAMETTE,SSE2 +MOVUPD xmmrm128,xmmreg [mr: 66 0f 11 /r] WILLAMETTE,SSE2 +MULPD xmmreg,xmmrm128 [rm: 66 0f 59 /r] WILLAMETTE,SSE2,SO +MULSD xmmreg,xmmrm64 [rm: f2 0f 59 /r] WILLAMETTE,SSE2,SQ +ORPD xmmreg,xmmrm128 [rm: 66 0f 56 /r] WILLAMETTE,SSE2,SO +SHUFPD xmmreg,xmmrm128,imm8 [rmi: 66 0f c6 /r ib,u] WILLAMETTE,SSE2 +SQRTPD xmmreg,xmmrm128 [rm: 66 0f 51 /r] WILLAMETTE,SSE2,SO +SQRTSD xmmreg,xmmrm64 [rm: f2 0f 51 /r] WILLAMETTE,SSE2 +SUBPD xmmreg,xmmrm128 [rm: 66 0f 5c /r] WILLAMETTE,SSE2,SO +SUBSD xmmreg,xmmrm64 [rm: f2 0f 5c /r] WILLAMETTE,SSE2 +UCOMISD xmmreg,xmmrm64 [rm: 66 0f 2e /r] WILLAMETTE,SSE2 +UNPCKHPD xmmreg,xmmrm128 [rm: 66 0f 15 /r] WILLAMETTE,SSE2 +UNPCKLPD xmmreg,xmmrm128 [rm: 66 0f 14 /r] WILLAMETTE,SSE2 +XORPD xmmreg,xmmrm128 [rm: 66 0f 57 /r] WILLAMETTE,SSE2 + +;# Prescott New Instructions (SSE3) +ADDSUBPD xmmreg,xmmrm128 [rm: 66 0f d0 /r] PRESCOTT,SSE3,SO +ADDSUBPS xmmreg,xmmrm128 [rm: f2 0f d0 /r] PRESCOTT,SSE3,SO +HADDPD xmmreg,xmmrm128 [rm: 66 0f 7c /r] PRESCOTT,SSE3,SO +HADDPS xmmreg,xmmrm128 [rm: f2 0f 7c /r] PRESCOTT,SSE3,SO +HSUBPD xmmreg,xmmrm128 [rm: 66 0f 7d /r] PRESCOTT,SSE3,SO +HSUBPS xmmreg,xmmrm128 [rm: f2 0f 7d /r] PRESCOTT,SSE3,SO +LDDQU xmmreg,mem128 [rm: f2 0f f0 /r] PRESCOTT,SSE3,SO +MOVDDUP xmmreg,xmmrm64 [rm: f2 0f 12 /r] PRESCOTT,SSE3,SQ +MOVSHDUP xmmreg,xmmrm128 [rm: f3 0f 16 /r] PRESCOTT,SSE3 +MOVSLDUP xmmreg,xmmrm128 [rm: f3 0f 12 /r] PRESCOTT,SSE3 + +;# VMX/SVM Instructions +CLGI void [ 0f 01 dd] VMX,AMD +STGI void [ 0f 01 dc] VMX,AMD +VMCALL void [ 0f 01 c1] VMX +VMCLEAR mem [m: 66 0f c7 /6] VMX +VMFUNC void [ 0f 01 d4] VMX +VMLAUNCH void [ 0f 01 c2] VMX +VMLOAD void [ 0f 01 da] VMX,AMD +VMMCALL void [ 0f 01 d9] VMX,AMD +VMPTRLD mem [m: np 0f c7 /6] VMX +VMPTRST mem [m: np 0f c7 /7] VMX +VMREAD rm32,reg32 [mr: np 0f 78 /r] VMX,NOLONG,SD +VMREAD rm64,reg64 [mr: o64nw np 0f 78 /r] X86_64,LONG,VMX,SQ +VMRESUME void [ 0f 01 c3] VMX +VMRUN void [ 0f 01 d8] VMX,AMD +VMSAVE void [ 0f 01 db] VMX,AMD +VMWRITE reg32,rm32 [rm: np 0f 79 /r] VMX,NOLONG,SD +VMWRITE reg64,rm64 [rm: o64nw np 0f 79 /r] X86_64,LONG,VMX,SQ +VMXOFF void [ 0f 01 c4] VMX +VMXON mem [m: f3 0f c7 /6] VMX +;# Extended Page Tables VMX instructions +INVEPT reg32,mem [rm: 66 0f 38 80 /r] VMX,SO,NOLONG +INVEPT reg64,mem [rm: o64nw 66 0f 38 80 /r] VMX,SO,LONG +INVVPID reg32,mem [rm: 66 0f 38 81 /r] VMX,SO,NOLONG +INVVPID reg64,mem [rm: o64nw 66 0f 38 81 /r] VMX,SO,LONG +;# SEV-SNP AMD instructions +PVALIDATE void [ f2 0f 01 ff] VMX,AMD +RMPADJUST void [ f3 0f 01 fe] VMX,AMD +VMGEXIT void [ f2 0f 01 c1] VMX,AMD +VMGEXIT void [ f3 0f 01 c1] VMX,AMD + +;# Tejas New Instructions (SSSE3) +PABSB mmxreg,mmxrm [rm: np 0f 38 1c /r] SSSE3,MMX,SQ +PABSB xmmreg,xmmrm128 [rm: 66 0f 38 1c /r] SSSE3 +PABSW mmxreg,mmxrm [rm: np 0f 38 1d /r] SSSE3,MMX,SQ +PABSW xmmreg,xmmrm128 [rm: 66 0f 38 1d /r] SSSE3 +PABSD mmxreg,mmxrm [rm: np 0f 38 1e /r] SSSE3,MMX,SQ +PABSD xmmreg,xmmrm128 [rm: 66 0f 38 1e /r] SSSE3 +PALIGNR mmxreg,mmxrm,imm [rmi: np 0f 3a 0f /r ib,u] SSSE3,MMX,SQ +PALIGNR xmmreg,xmmrm,imm [rmi: 66 0f 3a 0f /r ib,u] SSSE3 +PHADDW mmxreg,mmxrm [rm: np 0f 38 01 /r] SSSE3,MMX,SQ +PHADDW xmmreg,xmmrm128 [rm: 66 0f 38 01 /r] SSSE3 +PHADDD mmxreg,mmxrm [rm: np 0f 38 02 /r] SSSE3,MMX,SQ +PHADDD xmmreg,xmmrm128 [rm: 66 0f 38 02 /r] SSSE3 +PHADDSW mmxreg,mmxrm [rm: np 0f 38 03 /r] SSSE3,MMX,SQ +PHADDSW xmmreg,xmmrm128 [rm: 66 0f 38 03 /r] SSSE3 +PHSUBW mmxreg,mmxrm [rm: np 0f 38 05 /r] SSSE3,MMX,SQ +PHSUBW xmmreg,xmmrm128 [rm: 66 0f 38 05 /r] SSSE3 +PHSUBD mmxreg,mmxrm [rm: np 0f 38 06 /r] SSSE3,MMX,SQ +PHSUBD xmmreg,xmmrm128 [rm: 66 0f 38 06 /r] SSSE3 +PHSUBSW mmxreg,mmxrm [rm: np 0f 38 07 /r] SSSE3,MMX,SQ +PHSUBSW xmmreg,xmmrm128 [rm: 66 0f 38 07 /r] SSSE3 +PMADDUBSW mmxreg,mmxrm [rm: np 0f 38 04 /r] SSSE3,MMX,SQ +PMADDUBSW xmmreg,xmmrm128 [rm: 66 0f 38 04 /r] SSSE3 +PMULHRSW mmxreg,mmxrm [rm: np 0f 38 0b /r] SSSE3,MMX,SQ +PMULHRSW xmmreg,xmmrm128 [rm: 66 0f 38 0b /r] SSSE3 +PSHUFB mmxreg,mmxrm [rm: np 0f 38 00 /r] SSSE3,MMX,SQ +PSHUFB xmmreg,xmmrm128 [rm: 66 0f 38 00 /r] SSSE3 +PSIGNB mmxreg,mmxrm [rm: np 0f 38 08 /r] SSSE3,MMX,SQ +PSIGNB xmmreg,xmmrm128 [rm: 66 0f 38 08 /r] SSSE3 +PSIGNW mmxreg,mmxrm [rm: np 0f 38 09 /r] SSSE3,MMX,SQ +PSIGNW xmmreg,xmmrm128 [rm: 66 0f 38 09 /r] SSSE3 +PSIGND mmxreg,mmxrm [rm: np 0f 38 0a /r] SSSE3,MMX,SQ +PSIGND xmmreg,xmmrm128 [rm: 66 0f 38 0a /r] SSSE3 + +;# AMD SSE4A +EXTRQ xmmreg,imm,imm [mij: 66 0f 78 /0 ib,u ib,u] SSE4A,AMD +EXTRQ xmmreg,xmmreg [rm: 66 0f 79 /r] SSE4A,AMD +INSERTQ xmmreg,xmmreg,imm,imm [rmij: f2 0f 78 /r ib,u ib,u] SSE4A,AMD +INSERTQ xmmreg,xmmreg [rm: f2 0f 79 /r] SSE4A,AMD +MOVNTSD mem64,xmmreg [mr: f2 0f 2b /r] SSE4A,AMD,SQ +MOVNTSS mem32,xmmreg [mr: f3 0f 2b /r] SSE4A,AMD,SD + +;# New instructions in Barcelona +LZCNT reg16,rm16 [rm: o16 f3i 0f bd /r] P6,AMD +LZCNT reg32,rm32 [rm: o32 f3i 0f bd /r] P6,AMD +LZCNT reg64,rm64 [rm: o64 f3i 0f bd /r] X86_64,LONG,AMD + +;# Penryn New Instructions (SSE4.1) +BLENDPD xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 0d /r ib,u] SSE41 +BLENDPS xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 0c /r ib,u] SSE41 +BLENDVPD xmmreg,xmmrm128,xmm0 [rm-: 66 0f 38 15 /r] SSE41 +BLENDVPD xmmreg,xmmrm128 [rm: 66 0f 38 15 /r] SSE41 +BLENDVPS xmmreg,xmmrm128,xmm0 [rm-: 66 0f 38 14 /r] SSE41 +BLENDVPS xmmreg,xmmrm128 [rm: 66 0f 38 14 /r] SSE41 +DPPD xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 41 /r ib,u] SSE41 +DPPS xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 40 /r ib,u] SSE41 +EXTRACTPS rm32,xmmreg,imm8 [mri: 66 0f 3a 17 /r ib,u] SSE41 +EXTRACTPS reg64,xmmreg,imm8 [mri: o64 66 0f 3a 17 /r ib,u] SSE41,X86_64,LONG +INSERTPS xmmreg,xmmrm32,imm8 [rmi: 66 0f 3a 21 /r ib,u] SSE41 +MOVNTDQA xmmreg,mem128 [rm: 66 0f 38 2a /r] SSE41 +MPSADBW xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 42 /r ib,u] SSE41 +PACKUSDW xmmreg,xmmrm128 [rm: 66 0f 38 2b /r] SSE41 +PBLENDVB xmmreg,xmmrm,xmm0 [rm-: 66 0f 38 10 /r] SSE41 +PBLENDVB xmmreg,xmmrm128 [rm: 66 0f 38 10 /r] SSE41 +PBLENDW xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 0e /r ib,u] SSE41 +PCMPEQQ xmmreg,xmmrm128 [rm: 66 0f 38 29 /r] SSE41 +PEXTRB reg32,xmmreg,imm8 [mri: 66 0f 3a 14 /r ib,u] SSE41 +PEXTRB mem8,xmmreg,imm8 [mri: 66 0f 3a 14 /r ib,u] SSE41 +PEXTRB reg64,xmmreg,imm8 [mri: o64nw 66 0f 3a 14 /r ib,u] SSE41,X86_64,LONG +PEXTRD rm32,xmmreg,imm8 [mri: norexw 66 0f 3a 16 /r ib,u] SSE41 +PEXTRQ rm64,xmmreg,imm8 [mri: o64 66 0f 3a 16 /r ib,u] SSE41,X86_64,LONG +PEXTRW reg32,xmmreg,imm8 [mri: 66 0f 3a 15 /r ib,u] SSE41 +PEXTRW mem16,xmmreg,imm8 [mri: 66 0f 3a 15 /r ib,u] SSE41 +PEXTRW reg64,xmmreg,imm8 [mri: o64 66 0f 3a 15 /r ib,u] SSE41,X86_64,LONG +PHMINPOSUW xmmreg,xmmrm128 [rm: 66 0f 38 41 /r] SSE41 +PINSRB xmmreg,mem,imm8 [rmi: 66 0f 3a 20 /r ib,u] SSE41,SB,AR2 +PINSRB xmmreg,rm8,imm8 [rmi: nohi 66 0f 3a 20 /r ib,u] SSE41,SB,AR2 +PINSRB xmmreg,reg32,imm8 [rmi: 66 0f 3a 20 /r ib,u] SSE41,SB,AR2 +PINSRD xmmreg,rm32,imm8 [rmi: norexw 66 0f 3a 22 /r ib,u] SSE41,SB,AR2 +PINSRQ xmmreg,rm64,imm8 [rmi: o64 66 0f 3a 22 /r ib,u] SSE41,X86_64,LONG,SB,AR2 +PMAXSB xmmreg,xmmrm128 [rm: 66 0f 38 3c /r] SSE41 +PMAXSD xmmreg,xmmrm128 [rm: 66 0f 38 3d /r] SSE41 +PMAXUD xmmreg,xmmrm128 [rm: 66 0f 38 3f /r] SSE41 +PMAXUW xmmreg,xmmrm128 [rm: 66 0f 38 3e /r] SSE41 +PMINSB xmmreg,xmmrm128 [rm: 66 0f 38 38 /r] SSE41 +PMINSD xmmreg,xmmrm128 [rm: 66 0f 38 39 /r] SSE41 +PMINUD xmmreg,xmmrm128 [rm: 66 0f 38 3b /r] SSE41 +PMINUW xmmreg,xmmrm128 [rm: 66 0f 38 3a /r] SSE41 +PMOVSXBW xmmreg,xmmrm64 [rm: 66 0f 38 20 /r] SSE41,SQ +PMOVSXBD xmmreg,xmmrm32 [rm: 66 0f 38 21 /r] SSE41,SD +PMOVSXBQ xmmreg,xmmrm16 [rm: 66 0f 38 22 /r] SSE41,SW +PMOVSXWD xmmreg,xmmrm64 [rm: 66 0f 38 23 /r] SSE41,SQ +PMOVSXWQ xmmreg,xmmrm32 [rm: 66 0f 38 24 /r] SSE41,SD +PMOVSXDQ xmmreg,xmmrm64 [rm: 66 0f 38 25 /r] SSE41,SQ +PMOVZXBW xmmreg,xmmrm64 [rm: 66 0f 38 30 /r] SSE41,SQ +PMOVZXBD xmmreg,xmmrm32 [rm: 66 0f 38 31 /r] SSE41,SD +PMOVZXBQ xmmreg,xmmrm16 [rm: 66 0f 38 32 /r] SSE41,SW +PMOVZXWD xmmreg,xmmrm64 [rm: 66 0f 38 33 /r] SSE41,SQ +PMOVZXWQ xmmreg,xmmrm32 [rm: 66 0f 38 34 /r] SSE41,SD +PMOVZXDQ xmmreg,xmmrm64 [rm: 66 0f 38 35 /r] SSE41,SQ +PMULDQ xmmreg,xmmrm128 [rm: 66 0f 38 28 /r] SSE41 +PMULLD xmmreg,xmmrm128 [rm: 66 0f 38 40 /r] SSE41 +PTEST xmmreg,xmmrm128 [rm: 66 0f 38 17 /r] SSE41 +ROUNDPD xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 09 /r ib,u] SSE41 +ROUNDPS xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 08 /r ib,u] SSE41 +ROUNDSD xmmreg,xmmrm64,imm8 [rmi: 66 0f 3a 0b /r ib,u] SSE41 +ROUNDSS xmmreg,xmmrm32,imm8 [rmi: 66 0f 3a 0a /r ib,u] SSE41 + +;# Nehalem New Instructions (SSE4.2) +CRC32 reg32,rm8 [rm: f2i 0f 38 f0 /r] SSE42 +CRC32 reg32,rm16 [rm: o16 f2i 0f 38 f1 /r] SSE42 +CRC32 reg32,rm32 [rm: o32 f2i 0f 38 f1 /r] SSE42 +CRC32 reg64,rm8 [rm: o64 f2i 0f 38 f0 /r] SSE42,X86_64,LONG +CRC32 reg64,rm64 [rm: o64 f2i 0f 38 f1 /r] SSE42,X86_64,LONG +PCMPESTRI xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 61 /r ib,u] SSE42 +PCMPESTRM xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 60 /r ib,u] SSE42 +PCMPISTRI xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 63 /r ib,u] SSE42 +PCMPISTRM xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 62 /r ib,u] SSE42 +PCMPGTQ xmmreg,xmmrm128 [rm: 66 0f 38 37 /r] SSE42 +POPCNT reg16,rm16 [rm: o16 f3i 0f b8 /r] NEHALEM,SW +POPCNT reg32,rm32 [rm: o32 f3i 0f b8 /r] NEHALEM,SD +POPCNT reg64,rm64 [rm: o64 f3i 0f b8 /r] NEHALEM,SQ,LONG + +;# Intel SMX +GETSEC void [ 0f 37] KATMAI + +;# Geode (Cyrix) 3DNow! additions +PFRCPV mmxreg,mmxrm [rm: o64nw 0f 0f /r 86] PENT,3DNOW,SQ,CYRIX +PFRSQRTV mmxreg,mmxrm [rm: o64nw 0f 0f /r 87] PENT,3DNOW,SQ,CYRIX + +;# Intel new instructions in ??? +; Is NEHALEM right here? +MOVBE reg16,mem16 [rm: o16 norep 0f 38 f0 /r] NEHALEM,SM +MOVBE reg32,mem32 [rm: o32 norep 0f 38 f0 /r] NEHALEM,SM +MOVBE reg64,mem64 [rm: o64 norep 0f 38 f0 /r] NEHALEM,SM +MOVBE mem16,reg16 [mr: o16 norep 0f 38 f1 /r] NEHALEM,SM +MOVBE mem32,reg32 [mr: o32 norep 0f 38 f1 /r] NEHALEM,SM +MOVBE mem64,reg64 [mr: o64 norep 0f 38 f1 /r] NEHALEM,SM + +;# Intel AES instructions +AESENC xmmreg,xmmrm128 [rm: 66 0f 38 dc /r] SSE,WESTMERE +AESENCLAST xmmreg,xmmrm128 [rm: 66 0f 38 dd /r] SSE,WESTMERE +AESDEC xmmreg,xmmrm128 [rm: 66 0f 38 de /r] SSE,WESTMERE +AESDECLAST xmmreg,xmmrm128 [rm: 66 0f 38 df /r] SSE,WESTMERE +AESIMC xmmreg,xmmrm128 [rm: 66 0f 38 db /r] SSE,WESTMERE +AESKEYGENASSIST xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a df /r ib] SSE,WESTMERE + +;# Intel AVX AES instructions +VAESENC xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 dc /r] AVX,SANDYBRIDGE +VAESENCLAST xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 dd /r] AVX,SANDYBRIDGE +VAESDEC xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 de /r] AVX,SANDYBRIDGE +VAESDECLAST xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 df /r] AVX,SANDYBRIDGE +VAESIMC xmmreg,xmmrm128 [rm: vex.128.66.0f38 db /r] AVX,SANDYBRIDGE +VAESKEYGENASSIST xmmreg,xmmrm128,imm8 [rmi: vex.128.66.0f3a df /r ib] AVX,SANDYBRIDGE + +;# Intel instruction extension based on pub number 319433-030 dated October 2017 + +; Intel VAES instructions +VAESENC ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.wig dc /r] VAES,FUTURE +VAESENCLAST ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.wig dd /r] VAES,FUTURE +VAESDEC ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.wig de /r] VAES,FUTURE +VAESDECLAST ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.wig df /r] VAES,FUTURE + +; Intel VAES + AVX512VL instructions +VAESENC xmmreg,xmmreg*,xmmrm128 [rvm:fv: evex.nds.128.66.0f38.wig dc /r] AVX512VL,AVX512,VAES,FUTURE +VAESENC ymmreg,ymmreg*,ymmrm256 [rvm:fv: evex.nds.256.66.0f38.wig dc /r] AVX512VL,AVX512,VAES,FUTURE +VAESENCLAST xmmreg,xmmreg*,xmmrm128 [rvm:fv: evex.nds.128.66.0f38.wig dd /r] AVX512VL,AVX512,VAES,FUTURE +VAESENCLAST ymmreg,ymmreg*,ymmrm256 [rvm:fv: evex.nds.256.66.0f38.wig dd /r] AVX512VL,AVX512,VAES,FUTURE +VAESDEC xmmreg,xmmreg*,xmmrm128 [rvm:fv: evex.nds.128.66.0f38.wig de /r] AVX512VL,AVX512,VAES,FUTURE +VAESDEC ymmreg,ymmreg*,ymmrm256 [rvm:fv: evex.nds.256.66.0f38.wig de /r] AVX512VL,AVX512,VAES,FUTURE +VAESDECLAST xmmreg,xmmreg*,xmmrm128 [rvm:fv: evex.nds.128.66.0f38.wig df /r] AVX512VL,AVX512,VAES,FUTURE +VAESDECLAST ymmreg,ymmreg*,ymmrm256 [rvm:fv: evex.nds.256.66.0f38.wig df /r] AVX512VL,AVX512,VAES,FUTURE + +; Intel VAES + AVX512F instructions +VAESENC zmmreg,zmmreg*,zmmrm512 [rvm:fv: evex.nds.512.66.0f38.wig dc /r] AVX512,VAES,FUTURE +VAESENCLAST zmmreg,zmmreg*,zmmrm512 [rvm:fv: evex.nds.512.66.0f38.wig dd /r] AVX512,VAES,FUTURE +VAESDEC zmmreg,zmmreg*,zmmrm512 [rvm:fv: evex.nds.512.66.0f38.wig de /r] AVX512,VAES,FUTURE +VAESDECLAST zmmreg,zmmreg*,zmmrm512 [rvm:fv: evex.nds.512.66.0f38.wig df /r] AVX512,VAES,FUTURE + +;# Intel AVX instructions +VADDPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 58 /r] AVX,SANDYBRIDGE +VADDPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 58 /r] AVX,SANDYBRIDGE +VADDPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f 58 /r] AVX,SANDYBRIDGE +VADDPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f 58 /r] AVX,SANDYBRIDGE +VADDSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f 58 /r] AVX,SANDYBRIDGE +VADDSS xmmreg,xmmreg*,xmmrm32 [rvm: vex.nds.lig.f3.0f 58 /r] AVX,SANDYBRIDGE +VADDSUBPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f d0 /r] AVX,SANDYBRIDGE +VADDSUBPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f d0 /r] AVX,SANDYBRIDGE +VADDSUBPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.f2.0f d0 /r] AVX,SANDYBRIDGE +VADDSUBPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.f2.0f d0 /r] AVX,SANDYBRIDGE +VANDPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 54 /r] AVX,SANDYBRIDGE +VANDPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 54 /r] AVX,SANDYBRIDGE +VANDPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f 54 /r] AVX,SANDYBRIDGE +VANDPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f 54 /r] AVX,SANDYBRIDGE +VANDNPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 55 /r] AVX,SANDYBRIDGE +VANDNPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 55 /r] AVX,SANDYBRIDGE +VANDNPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f 55 /r] AVX,SANDYBRIDGE +VANDNPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f 55 /r] AVX,SANDYBRIDGE +VBLENDPD xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a 0d /r ib] AVX,SANDYBRIDGE +VBLENDPD ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f3a 0d /r ib] AVX,SANDYBRIDGE +VBLENDPS xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a 0c /r ib] AVX,SANDYBRIDGE +VBLENDPS ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f3a 0c /r ib] AVX,SANDYBRIDGE +VBLENDVPD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.nds.128.66.0f3a.w0 4b /r /is4] AVX,SANDYBRIDGE +VBLENDVPD ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.nds.256.66.0f3a.w0 4b /r /is4] AVX,SANDYBRIDGE +VBLENDVPS xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.nds.128.66.0f3a.w0 4a /r /is4] AVX,SANDYBRIDGE +VBLENDVPS ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.nds.256.66.0f3a.w0 4a /r /is4] AVX,SANDYBRIDGE +VBROADCASTSS xmmreg,mem32 [rm: vex.128.66.0f38.w0 18 /r] AVX,SANDYBRIDGE +VBROADCASTSS ymmreg,mem32 [rm: vex.256.66.0f38.w0 18 /r] AVX,SANDYBRIDGE +VBROADCASTSD ymmreg,mem64 [rm: vex.256.66.0f38.w0 19 /r] AVX,SANDYBRIDGE +VBROADCASTF128 ymmreg,mem128 [rm: vex.256.66.0f38.w0 1a /r] AVX,SANDYBRIDGE +; Specific aliases first, then the generic version, to keep the disassembler happy... +VCMPEQ_OSPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 10] AVX,SANDYBRIDGE +VCMPEQ_OSPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 10] AVX,SANDYBRIDGE +VCMPEQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 00] AVX,SANDYBRIDGE +VCMPEQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 00] AVX,SANDYBRIDGE +VCMPLT_OSPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 01] AVX,SANDYBRIDGE +VCMPLT_OSPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 01] AVX,SANDYBRIDGE +VCMPLTPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 01] AVX,SANDYBRIDGE +VCMPLTPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 01] AVX,SANDYBRIDGE +VCMPLE_OSPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 02] AVX,SANDYBRIDGE +VCMPLE_OSPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 02] AVX,SANDYBRIDGE +VCMPLEPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 02] AVX,SANDYBRIDGE +VCMPLEPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 02] AVX,SANDYBRIDGE +VCMPUNORD_QPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 03] AVX,SANDYBRIDGE +VCMPUNORD_QPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 03] AVX,SANDYBRIDGE +VCMPUNORDPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 03] AVX,SANDYBRIDGE +VCMPUNORDPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 03] AVX,SANDYBRIDGE +VCMPNEQ_UQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 04] AVX,SANDYBRIDGE +VCMPNEQ_UQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 04] AVX,SANDYBRIDGE +VCMPNEQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 04] AVX,SANDYBRIDGE +VCMPNEQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 04] AVX,SANDYBRIDGE +VCMPNLT_USPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 05] AVX,SANDYBRIDGE +VCMPNLT_USPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 05] AVX,SANDYBRIDGE +VCMPNLTPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 05] AVX,SANDYBRIDGE +VCMPNLTPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 05] AVX,SANDYBRIDGE +VCMPNLE_USPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 06] AVX,SANDYBRIDGE +VCMPNLE_USPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 06] AVX,SANDYBRIDGE +VCMPNLEPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 06] AVX,SANDYBRIDGE +VCMPNLEPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 06] AVX,SANDYBRIDGE +VCMPORD_QPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 07] AVX,SANDYBRIDGE +VCMPORD_QPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 07] AVX,SANDYBRIDGE +VCMPORDPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 07] AVX,SANDYBRIDGE +VCMPORDPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 07] AVX,SANDYBRIDGE +VCMPEQ_UQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 08] AVX,SANDYBRIDGE +VCMPEQ_UQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 08] AVX,SANDYBRIDGE +VCMPNGE_USPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 09] AVX,SANDYBRIDGE +VCMPNGE_USPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 09] AVX,SANDYBRIDGE +VCMPNGEPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 09] AVX,SANDYBRIDGE +VCMPNGEPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 09] AVX,SANDYBRIDGE +VCMPNGT_USPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 0a] AVX,SANDYBRIDGE +VCMPNGT_USPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 0a] AVX,SANDYBRIDGE +VCMPNGTPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 0a] AVX,SANDYBRIDGE +VCMPNGTPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 0a] AVX,SANDYBRIDGE +VCMPFALSE_OQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 0b] AVX,SANDYBRIDGE +VCMPFALSE_OQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 0b] AVX,SANDYBRIDGE +VCMPFALSEPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 0b] AVX,SANDYBRIDGE +VCMPFALSEPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 0b] AVX,SANDYBRIDGE +VCMPNEQ_OQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 0c] AVX,SANDYBRIDGE +VCMPNEQ_OQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 0c] AVX,SANDYBRIDGE +VCMPGE_OSPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 0d] AVX,SANDYBRIDGE +VCMPGE_OSPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 0d] AVX,SANDYBRIDGE +VCMPGEPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 0d] AVX,SANDYBRIDGE +VCMPGEPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 0d] AVX,SANDYBRIDGE +VCMPGT_OSPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 0e] AVX,SANDYBRIDGE +VCMPGT_OSPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 0e] AVX,SANDYBRIDGE +VCMPGTPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 0e] AVX,SANDYBRIDGE +VCMPGTPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 0e] AVX,SANDYBRIDGE +VCMPTRUE_UQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 0f] AVX,SANDYBRIDGE +VCMPTRUE_UQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 0f] AVX,SANDYBRIDGE +VCMPTRUEPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 0f] AVX,SANDYBRIDGE +VCMPTRUEPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 0f] AVX,SANDYBRIDGE +VCMPEQ_OSPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 10] AVX,SANDYBRIDGE +VCMPEQ_OSPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 10] AVX,SANDYBRIDGE +VCMPLT_OQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 11] AVX,SANDYBRIDGE +VCMPLT_OQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 11] AVX,SANDYBRIDGE +VCMPLE_OQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 12] AVX,SANDYBRIDGE +VCMPLE_OQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 12] AVX,SANDYBRIDGE +VCMPUNORD_SPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 13] AVX,SANDYBRIDGE +VCMPUNORD_SPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 13] AVX,SANDYBRIDGE +VCMPNEQ_USPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 14] AVX,SANDYBRIDGE +VCMPNEQ_USPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 14] AVX,SANDYBRIDGE +VCMPNLT_UQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 15] AVX,SANDYBRIDGE +VCMPNLT_UQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 15] AVX,SANDYBRIDGE +VCMPNLE_UQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 16] AVX,SANDYBRIDGE +VCMPNLE_UQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 16] AVX,SANDYBRIDGE +VCMPORD_SPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 17] AVX,SANDYBRIDGE +VCMPORD_SPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 17] AVX,SANDYBRIDGE +VCMPEQ_USPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 18] AVX,SANDYBRIDGE +VCMPEQ_USPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 18] AVX,SANDYBRIDGE +VCMPNGE_UQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 19] AVX,SANDYBRIDGE +VCMPNGE_UQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 19] AVX,SANDYBRIDGE +VCMPNGT_UQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 1a] AVX,SANDYBRIDGE +VCMPNGT_UQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 1a] AVX,SANDYBRIDGE +VCMPFALSE_OSPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 1b] AVX,SANDYBRIDGE +VCMPFALSE_OSPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 1b] AVX,SANDYBRIDGE +VCMPNEQ_OSPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 1c] AVX,SANDYBRIDGE +VCMPNEQ_OSPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 1c] AVX,SANDYBRIDGE +VCMPGE_OQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 1d] AVX,SANDYBRIDGE +VCMPGE_OQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 1d] AVX,SANDYBRIDGE +VCMPGT_OQPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 1e] AVX,SANDYBRIDGE +VCMPGT_OQPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 1e] AVX,SANDYBRIDGE +VCMPTRUE_USPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f c2 /r 1f] AVX,SANDYBRIDGE +VCMPTRUE_USPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f c2 /r 1f] AVX,SANDYBRIDGE +VCMPPD xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f c2 /r ib] AVX,SANDYBRIDGE +VCMPPD ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f c2 /r ib] AVX,SANDYBRIDGE +; Specific aliases first, then the generic version, to keep the disassembler happy... +VCMPEQ_OSPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 10] AVX,SANDYBRIDGE +VCMPEQ_OSPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 10] AVX,SANDYBRIDGE +VCMPEQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 00] AVX,SANDYBRIDGE +VCMPEQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 00] AVX,SANDYBRIDGE +VCMPLT_OSPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 01] AVX,SANDYBRIDGE +VCMPLT_OSPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 01] AVX,SANDYBRIDGE +VCMPLTPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 01] AVX,SANDYBRIDGE +VCMPLTPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 01] AVX,SANDYBRIDGE +VCMPLE_OSPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 02] AVX,SANDYBRIDGE +VCMPLE_OSPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 02] AVX,SANDYBRIDGE +VCMPLEPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 02] AVX,SANDYBRIDGE +VCMPLEPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 02] AVX,SANDYBRIDGE +VCMPUNORD_QPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 03] AVX,SANDYBRIDGE +VCMPUNORD_QPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 03] AVX,SANDYBRIDGE +VCMPUNORDPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 03] AVX,SANDYBRIDGE +VCMPUNORDPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 03] AVX,SANDYBRIDGE +VCMPNEQ_UQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 04] AVX,SANDYBRIDGE +VCMPNEQ_UQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 04] AVX,SANDYBRIDGE +VCMPNEQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 04] AVX,SANDYBRIDGE +VCMPNEQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 04] AVX,SANDYBRIDGE +VCMPNLT_USPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 05] AVX,SANDYBRIDGE +VCMPNLT_USPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 05] AVX,SANDYBRIDGE +VCMPNLTPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 05] AVX,SANDYBRIDGE +VCMPNLTPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 05] AVX,SANDYBRIDGE +VCMPNLE_USPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 06] AVX,SANDYBRIDGE +VCMPNLE_USPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 06] AVX,SANDYBRIDGE +VCMPNLEPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 06] AVX,SANDYBRIDGE +VCMPNLEPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 06] AVX,SANDYBRIDGE +VCMPORD_QPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 07] AVX,SANDYBRIDGE +VCMPORD_QPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 07] AVX,SANDYBRIDGE +VCMPORDPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 07] AVX,SANDYBRIDGE +VCMPORDPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 07] AVX,SANDYBRIDGE +VCMPEQ_UQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 08] AVX,SANDYBRIDGE +VCMPEQ_UQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 08] AVX,SANDYBRIDGE +VCMPNGE_USPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 09] AVX,SANDYBRIDGE +VCMPNGE_USPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 09] AVX,SANDYBRIDGE +VCMPNGEPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 09] AVX,SANDYBRIDGE +VCMPNGEPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 09] AVX,SANDYBRIDGE +VCMPNGT_USPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 0a] AVX,SANDYBRIDGE +VCMPNGT_USPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 0a] AVX,SANDYBRIDGE +VCMPNGTPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 0a] AVX,SANDYBRIDGE +VCMPNGTPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 0a] AVX,SANDYBRIDGE +VCMPFALSE_OQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 0b] AVX,SANDYBRIDGE +VCMPFALSE_OQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 0b] AVX,SANDYBRIDGE +VCMPFALSEPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 0b] AVX,SANDYBRIDGE +VCMPFALSEPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 0b] AVX,SANDYBRIDGE +VCMPNEQ_OQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 0c] AVX,SANDYBRIDGE +VCMPNEQ_OQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 0c] AVX,SANDYBRIDGE +VCMPGE_OSPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 0d] AVX,SANDYBRIDGE +VCMPGE_OSPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 0d] AVX,SANDYBRIDGE +VCMPGEPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 0d] AVX,SANDYBRIDGE +VCMPGEPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 0d] AVX,SANDYBRIDGE +VCMPGT_OSPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 0e] AVX,SANDYBRIDGE +VCMPGT_OSPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 0e] AVX,SANDYBRIDGE +VCMPGTPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 0e] AVX,SANDYBRIDGE +VCMPGTPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 0e] AVX,SANDYBRIDGE +VCMPTRUE_UQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 0f] AVX,SANDYBRIDGE +VCMPTRUE_UQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 0f] AVX,SANDYBRIDGE +VCMPTRUEPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 0f] AVX,SANDYBRIDGE +VCMPTRUEPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 0f] AVX,SANDYBRIDGE +VCMPEQ_OSPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 10] AVX,SANDYBRIDGE +VCMPEQ_OSPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 10] AVX,SANDYBRIDGE +VCMPLT_OQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 11] AVX,SANDYBRIDGE +VCMPLT_OQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 11] AVX,SANDYBRIDGE +VCMPLE_OQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 12] AVX,SANDYBRIDGE +VCMPLE_OQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 12] AVX,SANDYBRIDGE +VCMPUNORD_SPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 13] AVX,SANDYBRIDGE +VCMPUNORD_SPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 13] AVX,SANDYBRIDGE +VCMPNEQ_USPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 14] AVX,SANDYBRIDGE +VCMPNEQ_USPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 14] AVX,SANDYBRIDGE +VCMPNLT_UQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 15] AVX,SANDYBRIDGE +VCMPNLT_UQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 15] AVX,SANDYBRIDGE +VCMPNLE_UQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 16] AVX,SANDYBRIDGE +VCMPNLE_UQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 16] AVX,SANDYBRIDGE +VCMPORD_SPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 17] AVX,SANDYBRIDGE +VCMPORD_SPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 17] AVX,SANDYBRIDGE +VCMPEQ_USPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 18] AVX,SANDYBRIDGE +VCMPEQ_USPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 18] AVX,SANDYBRIDGE +VCMPNGE_UQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 19] AVX,SANDYBRIDGE +VCMPNGE_UQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 19] AVX,SANDYBRIDGE +VCMPNGT_UQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 1a] AVX,SANDYBRIDGE +VCMPNGT_UQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 1a] AVX,SANDYBRIDGE +VCMPFALSE_OSPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 1b] AVX,SANDYBRIDGE +VCMPFALSE_OSPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 1b] AVX,SANDYBRIDGE +VCMPNEQ_OSPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 1c] AVX,SANDYBRIDGE +VCMPNEQ_OSPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 1c] AVX,SANDYBRIDGE +VCMPGE_OQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 1d] AVX,SANDYBRIDGE +VCMPGE_OQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 1d] AVX,SANDYBRIDGE +VCMPGT_OQPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 1e] AVX,SANDYBRIDGE +VCMPGT_OQPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 1e] AVX,SANDYBRIDGE +VCMPTRUE_USPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f c2 /r 1f] AVX,SANDYBRIDGE +VCMPTRUE_USPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f c2 /r 1f] AVX,SANDYBRIDGE +VCMPPS xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.0f c2 /r ib] AVX,SANDYBRIDGE +VCMPPS ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.0f c2 /r ib] AVX,SANDYBRIDGE +; Specific aliases first, then the generic version, to keep the disassembler happy... +VCMPEQ_OSSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 10] AVX,SANDYBRIDGE +VCMPEQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 00] AVX,SANDYBRIDGE +VCMPLT_OSSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 01] AVX,SANDYBRIDGE +VCMPLTSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 01] AVX,SANDYBRIDGE +VCMPLE_OSSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 02] AVX,SANDYBRIDGE +VCMPLESD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 02] AVX,SANDYBRIDGE +VCMPUNORD_QSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 03] AVX,SANDYBRIDGE +VCMPUNORDSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 03] AVX,SANDYBRIDGE +VCMPNEQ_UQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 04] AVX,SANDYBRIDGE +VCMPNEQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 04] AVX,SANDYBRIDGE +VCMPNLT_USSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 05] AVX,SANDYBRIDGE +VCMPNLTSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 05] AVX,SANDYBRIDGE +VCMPNLE_USSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 06] AVX,SANDYBRIDGE +VCMPNLESD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 06] AVX,SANDYBRIDGE +VCMPORD_QSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 07] AVX,SANDYBRIDGE +VCMPORDSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 07] AVX,SANDYBRIDGE +VCMPEQ_UQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 08] AVX,SANDYBRIDGE +VCMPNGE_USSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 09] AVX,SANDYBRIDGE +VCMPNGESD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 09] AVX,SANDYBRIDGE +VCMPNGT_USSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 0a] AVX,SANDYBRIDGE +VCMPNGTSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 0a] AVX,SANDYBRIDGE +VCMPFALSE_OQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 0b] AVX,SANDYBRIDGE +VCMPFALSESD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 0b] AVX,SANDYBRIDGE +VCMPNEQ_OQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 0c] AVX,SANDYBRIDGE +VCMPGE_OSSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 0d] AVX,SANDYBRIDGE +VCMPGESD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 0d] AVX,SANDYBRIDGE +VCMPGT_OSSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 0e] AVX,SANDYBRIDGE +VCMPGTSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 0e] AVX,SANDYBRIDGE +VCMPTRUE_UQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 0f] AVX,SANDYBRIDGE +VCMPTRUESD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 0f] AVX,SANDYBRIDGE +VCMPEQ_OSSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 10] AVX,SANDYBRIDGE +VCMPLT_OQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 11] AVX,SANDYBRIDGE +VCMPLE_OQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 12] AVX,SANDYBRIDGE +VCMPUNORD_SSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 13] AVX,SANDYBRIDGE +VCMPNEQ_USSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 14] AVX,SANDYBRIDGE +VCMPNLT_UQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 15] AVX,SANDYBRIDGE +VCMPNLE_UQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 16] AVX,SANDYBRIDGE +VCMPORD_SSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 17] AVX,SANDYBRIDGE +VCMPEQ_USSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 18] AVX,SANDYBRIDGE +VCMPNGE_UQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 19] AVX,SANDYBRIDGE +VCMPNGT_UQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 1a] AVX,SANDYBRIDGE +VCMPFALSE_OSSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 1b] AVX,SANDYBRIDGE +VCMPNEQ_OSSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 1c] AVX,SANDYBRIDGE +VCMPGE_OQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 1d] AVX,SANDYBRIDGE +VCMPGT_OQSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 1e] AVX,SANDYBRIDGE +VCMPTRUE_USSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f c2 /r 1f] AVX,SANDYBRIDGE +VCMPSD xmmreg,xmmreg*,xmmrm64,imm8 [rvmi: vex.nds.lig.f2.0f c2 /r ib] AVX,SANDYBRIDGE +; Specific aliases first, then the generic version, to keep the disassembler happy... +VCMPEQ_OSSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 10] AVX,SANDYBRIDGE +VCMPEQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 00] AVX,SANDYBRIDGE +VCMPLT_OSSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 01] AVX,SANDYBRIDGE +VCMPLTSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 01] AVX,SANDYBRIDGE +VCMPLE_OSSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 02] AVX,SANDYBRIDGE +VCMPLESS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 02] AVX,SANDYBRIDGE +VCMPUNORD_QSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 03] AVX,SANDYBRIDGE +VCMPUNORDSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 03] AVX,SANDYBRIDGE +VCMPNEQ_UQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 04] AVX,SANDYBRIDGE +VCMPNEQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 04] AVX,SANDYBRIDGE +VCMPNLT_USSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 05] AVX,SANDYBRIDGE +VCMPNLTSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 05] AVX,SANDYBRIDGE +VCMPNLE_USSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 06] AVX,SANDYBRIDGE +VCMPNLESS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 06] AVX,SANDYBRIDGE +VCMPORD_QSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 07] AVX,SANDYBRIDGE +VCMPORDSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 07] AVX,SANDYBRIDGE +VCMPEQ_UQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 08] AVX,SANDYBRIDGE +VCMPNGE_USSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 09] AVX,SANDYBRIDGE +VCMPNGESS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 09] AVX,SANDYBRIDGE +VCMPNGT_USSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 0a] AVX,SANDYBRIDGE +VCMPNGTSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 0a] AVX,SANDYBRIDGE +VCMPFALSE_OQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 0b] AVX,SANDYBRIDGE +VCMPFALSESS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 0b] AVX,SANDYBRIDGE +VCMPNEQ_OQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 0c] AVX,SANDYBRIDGE +VCMPGE_OSSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 0d] AVX,SANDYBRIDGE +VCMPGESS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 0d] AVX,SANDYBRIDGE +VCMPGT_OSSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 0e] AVX,SANDYBRIDGE +VCMPGTSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 0e] AVX,SANDYBRIDGE +VCMPTRUE_UQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 0f] AVX,SANDYBRIDGE +VCMPTRUESS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 0f] AVX,SANDYBRIDGE +VCMPEQ_OSSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 10] AVX,SANDYBRIDGE +VCMPLT_OQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 11] AVX,SANDYBRIDGE +VCMPLE_OQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 12] AVX,SANDYBRIDGE +VCMPUNORD_SSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 13] AVX,SANDYBRIDGE +VCMPNEQ_USSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 14] AVX,SANDYBRIDGE +VCMPNLT_UQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 15] AVX,SANDYBRIDGE +VCMPNLE_UQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 16] AVX,SANDYBRIDGE +VCMPORD_SSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 17] AVX,SANDYBRIDGE +VCMPEQ_USSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 18] AVX,SANDYBRIDGE +VCMPNGE_UQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 19] AVX,SANDYBRIDGE +VCMPNGT_UQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 1a] AVX,SANDYBRIDGE +VCMPFALSE_OSSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 1b] AVX,SANDYBRIDGE +VCMPNEQ_OSSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 1c] AVX,SANDYBRIDGE +VCMPGE_OQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 1d] AVX,SANDYBRIDGE +VCMPGT_OQSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 1e] AVX,SANDYBRIDGE +VCMPTRUE_USSS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f3.0f c2 /r 1f] AVX,SANDYBRIDGE +VCMPSS xmmreg,xmmreg*,xmmrm64,imm8 [rvmi: vex.nds.lig.f3.0f c2 /r ib] AVX,SANDYBRIDGE +VCOMISD xmmreg,xmmrm64 [rm: vex.lig.66.0f 2f /r] AVX,SANDYBRIDGE +VCOMISS xmmreg,xmmrm32 [rm: vex.lig.0f 2f /r] AVX,SANDYBRIDGE +VCVTDQ2PD xmmreg,xmmrm64 [rm: vex.128.f3.0f e6 /r] AVX,SANDYBRIDGE +VCVTDQ2PD ymmreg,xmmrm128 [rm: vex.256.f3.0f e6 /r] AVX,SANDYBRIDGE +VCVTDQ2PS xmmreg,xmmrm128 [rm: vex.128.0f 5b /r] AVX,SANDYBRIDGE +VCVTDQ2PS ymmreg,ymmrm256 [rm: vex.256.0f 5b /r] AVX,SANDYBRIDGE +VCVTPD2DQ xmmreg,xmmreg [rm: vex.128.f2.0f e6 /r] AVX,SANDYBRIDGE +VCVTPD2DQ xmmreg,mem128 [rm: vex.128.f2.0f e6 /r] AVX,SANDYBRIDGE,SO +VCVTPD2DQ xmmreg,ymmreg [rm: vex.256.f2.0f e6 /r] AVX,SANDYBRIDGE +VCVTPD2DQ xmmreg,mem256 [rm: vex.256.f2.0f e6 /r] AVX,SANDYBRIDGE,SY +VCVTPD2PS xmmreg,xmmreg [rm: vex.128.66.0f 5a /r] AVX,SANDYBRIDGE +VCVTPD2PS xmmreg,mem128 [rm: vex.128.66.0f 5a /r] AVX,SANDYBRIDGE,SO +VCVTPD2PS xmmreg,ymmreg [rm: vex.256.66.0f 5a /r] AVX,SANDYBRIDGE +VCVTPD2PS xmmreg,mem256 [rm: vex.256.66.0f 5a /r] AVX,SANDYBRIDGE,SY +VCVTPS2DQ xmmreg,xmmrm128 [rm: vex.128.66.0f 5b /r] AVX,SANDYBRIDGE +VCVTPS2DQ ymmreg,ymmrm256 [rm: vex.256.66.0f 5b /r] AVX,SANDYBRIDGE +VCVTPS2PD xmmreg,xmmrm64 [rm: vex.128.0f 5a /r] AVX,SANDYBRIDGE +VCVTPS2PD ymmreg,xmmrm128 [rm: vex.256.0f 5a /r] AVX,SANDYBRIDGE +VCVTSD2SI reg32,xmmrm64 [rm: vex.lig.f2.0f.w0 2d /r] AVX,SANDYBRIDGE +VCVTSD2SI reg64,xmmrm64 [rm: vex.lig.f2.0f.w1 2d /r] AVX,SANDYBRIDGE,LONG +VCVTSD2SS xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f 5a /r] AVX,SANDYBRIDGE +VCVTSI2SD xmmreg,xmmreg*,rm32 [rvm: vex.nds.lig.f2.0f.w0 2a /r] AVX,SANDYBRIDGE,SD +VCVTSI2SD xmmreg,xmmreg*,mem32 [rvm: vex.nds.lig.f2.0f.w0 2a /r] AVX,SANDYBRIDGE,ND,SD +VCVTSI2SD xmmreg,xmmreg*,rm64 [rvm: vex.nds.lig.f2.0f.w1 2a /r] AVX,SANDYBRIDGE,LONG,SQ +VCVTSI2SS xmmreg,xmmreg*,rm32 [rvm: vex.nds.lig.f3.0f.w0 2a /r] AVX,SANDYBRIDGE,SD +VCVTSI2SS xmmreg,xmmreg*,mem32 [rvm: vex.nds.lig.f3.0f.w0 2a /r] AVX,SANDYBRIDGE,ND,SD +VCVTSI2SS xmmreg,xmmreg*,rm64 [rvm: vex.nds.lig.f3.0f.w1 2a /r] AVX,SANDYBRIDGE,LONG,SQ +VCVTSS2SD xmmreg,xmmreg*,xmmrm32 [rvm: vex.nds.lig.f3.0f 5a /r] AVX,SANDYBRIDGE +VCVTSS2SI reg32,xmmrm32 [rm: vex.lig.f3.0f.w0 2d /r] AVX,SANDYBRIDGE +VCVTSS2SI reg64,xmmrm32 [rm: vex.lig.f3.0f.w1 2d /r] AVX,SANDYBRIDGE,LONG +VCVTTPD2DQ xmmreg,xmmreg [rm: vex.128.66.0f e6 /r] AVX,SANDYBRIDGE +VCVTTPD2DQ xmmreg,mem128 [rm: vex.128.66.0f e6 /r] AVX,SANDYBRIDGE,SO +VCVTTPD2DQ xmmreg,ymmreg [rm: vex.256.66.0f e6 /r] AVX,SANDYBRIDGE +VCVTTPD2DQ xmmreg,mem256 [rm: vex.256.66.0f e6 /r] AVX,SANDYBRIDGE,SY +VCVTTPS2DQ xmmreg,xmmrm128 [rm: vex.128.f3.0f 5b /r] AVX,SANDYBRIDGE +VCVTTPS2DQ ymmreg,ymmrm256 [rm: vex.256.f3.0f 5b /r] AVX,SANDYBRIDGE +VCVTTSD2SI reg32,xmmrm64 [rm: vex.lig.f2.0f.w0 2c /r] AVX,SANDYBRIDGE +VCVTTSD2SI reg64,xmmrm64 [rm: vex.lig.f2.0f.w1 2c /r] AVX,SANDYBRIDGE,LONG +VCVTTSS2SI reg32,xmmrm32 [rm: vex.lig.f3.0f.w0 2c /r] AVX,SANDYBRIDGE +VCVTTSS2SI reg64,xmmrm32 [rm: vex.lig.f3.0f.w1 2c /r] AVX,SANDYBRIDGE,LONG +VDIVPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 5e /r] AVX,SANDYBRIDGE +VDIVPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 5e /r] AVX,SANDYBRIDGE +VDIVPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f 5e /r] AVX,SANDYBRIDGE +VDIVPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f 5e /r] AVX,SANDYBRIDGE +VDIVSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f 5e /r] AVX,SANDYBRIDGE +VDIVSS xmmreg,xmmreg*,xmmrm32 [rvm: vex.nds.lig.f3.0f 5e /r] AVX,SANDYBRIDGE +VDPPD xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a 41 /r ib] AVX,SANDYBRIDGE +VDPPS xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a 40 /r ib] AVX,SANDYBRIDGE +VDPPS ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f3a 40 /r ib] AVX,SANDYBRIDGE +VEXTRACTF128 xmmrm128,ymmreg,imm8 [mri: vex.256.66.0f3a.w0 19 /r ib] AVX,SANDYBRIDGE +VEXTRACTPS rm32,xmmreg,imm8 [mri: vex.128.66.0f3a 17 /r ib] AVX,SANDYBRIDGE +VHADDPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 7c /r] AVX,SANDYBRIDGE +VHADDPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 7c /r] AVX,SANDYBRIDGE +VHADDPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.f2.0f 7c /r] AVX,SANDYBRIDGE +VHADDPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.f2.0f 7c /r] AVX,SANDYBRIDGE +VHSUBPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 7d /r] AVX,SANDYBRIDGE +VHSUBPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 7d /r] AVX,SANDYBRIDGE +VHSUBPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.f2.0f 7d /r] AVX,SANDYBRIDGE +VHSUBPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.f2.0f 7d /r] AVX,SANDYBRIDGE +VINSERTF128 ymmreg,ymmreg*,xmmrm128,imm8 [rvmi: vex.nds.256.66.0f3a.w0 18 /r ib] AVX,SANDYBRIDGE +VINSERTPS xmmreg,xmmreg*,xmmrm32,imm8 [rvmi: vex.nds.128.66.0f3a 21 /r ib] AVX,SANDYBRIDGE +VLDDQU xmmreg,mem128 [rm: vex.128.f2.0f f0 /r] AVX,SANDYBRIDGE +VLDQQU ymmreg,mem256 [rm: vex.256.f2.0f f0 /r] AVX,SANDYBRIDGE +VLDDQU ymmreg,mem256 [rm: vex.256.f2.0f f0 /r] AVX,SANDYBRIDGE +VLDMXCSR mem32 [m: vex.lz.0f ae /2] AVX,SANDYBRIDGE +VMASKMOVDQU xmmreg,xmmreg [rm: vex.128.66.0f f7 /r] AVX,SANDYBRIDGE +VMASKMOVPS xmmreg,xmmreg,mem128 [rvm: vex.nds.128.66.0f38.w0 2c /r] AVX,SANDYBRIDGE +VMASKMOVPS ymmreg,ymmreg,mem256 [rvm: vex.nds.256.66.0f38.w0 2c /r] AVX,SANDYBRIDGE +VMASKMOVPS mem128,xmmreg,xmmreg [mvr: vex.nds.128.66.0f38.w0 2e /r] AVX,SANDYBRIDGE,SO +VMASKMOVPS mem256,ymmreg,ymmreg [mvr: vex.nds.256.66.0f38.w0 2e /r] AVX,SANDYBRIDGE,SY +VMASKMOVPD xmmreg,xmmreg,mem128 [rvm: vex.nds.128.66.0f38.w0 2d /r] AVX,SANDYBRIDGE +VMASKMOVPD ymmreg,ymmreg,mem256 [rvm: vex.nds.256.66.0f38.w0 2d /r] AVX,SANDYBRIDGE +VMASKMOVPD mem128,xmmreg,xmmreg [mvr: vex.nds.128.66.0f38.w0 2f /r] AVX,SANDYBRIDGE +VMASKMOVPD mem256,ymmreg,ymmreg [mvr: vex.nds.256.66.0f38.w0 2f /r] AVX,SANDYBRIDGE +VMAXPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 5f /r] AVX,SANDYBRIDGE +VMAXPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 5f /r] AVX,SANDYBRIDGE +VMAXPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f 5f /r] AVX,SANDYBRIDGE +VMAXPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f 5f /r] AVX,SANDYBRIDGE +VMAXSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f 5f /r] AVX,SANDYBRIDGE +VMAXSS xmmreg,xmmreg*,xmmrm32 [rvm: vex.nds.lig.f3.0f 5f /r] AVX,SANDYBRIDGE +VMINPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 5d /r] AVX,SANDYBRIDGE +VMINPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 5d /r] AVX,SANDYBRIDGE +VMINPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f 5d /r] AVX,SANDYBRIDGE +VMINPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f 5d /r] AVX,SANDYBRIDGE +VMINSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f 5d /r] AVX,SANDYBRIDGE +VMINSS xmmreg,xmmreg*,xmmrm32 [rvm: vex.nds.lig.f3.0f 5d /r] AVX,SANDYBRIDGE +VMOVAPD xmmreg,xmmrm128 [rm: vex.128.66.0f 28 /r] AVX,SANDYBRIDGE +VMOVAPD xmmrm128,xmmreg [mr: vex.128.66.0f 29 /r] AVX,SANDYBRIDGE +VMOVAPD ymmreg,ymmrm256 [rm: vex.256.66.0f 28 /r] AVX,SANDYBRIDGE +VMOVAPD ymmrm256,ymmreg [mr: vex.256.66.0f 29 /r] AVX,SANDYBRIDGE +VMOVAPS xmmreg,xmmrm128 [rm: vex.128.0f 28 /r] AVX,SANDYBRIDGE +VMOVAPS xmmrm128,xmmreg [mr: vex.128.0f 29 /r] AVX,SANDYBRIDGE +VMOVAPS ymmreg,ymmrm256 [rm: vex.256.0f 28 /r] AVX,SANDYBRIDGE +VMOVAPS ymmrm256,ymmreg [mr: vex.256.0f 29 /r] AVX,SANDYBRIDGE +VMOVD xmmreg,rm32 [rm: vex.128.66.0f.w0 6e /r] AVX,SANDYBRIDGE +VMOVD rm32,xmmreg [mr: vex.128.66.0f.w0 7e /r] AVX,SANDYBRIDGE +VMOVQ xmmreg,xmmrm64 [rm: vex.128.f3.0f 7e /r] AVX,SANDYBRIDGE,SQ +VMOVQ xmmrm64,xmmreg [mr: vex.128.66.0f d6 /r] AVX,SANDYBRIDGE,SQ +VMOVQ xmmreg,rm64 [rm: vex.128.66.0f.w1 6e /r] AVX,SANDYBRIDGE,LONG,SQ +VMOVQ rm64,xmmreg [mr: vex.128.66.0f.w1 7e /r] AVX,SANDYBRIDGE,LONG,SQ +VMOVDDUP xmmreg,xmmrm64 [rm: vex.128.f2.0f 12 /r] AVX,SANDYBRIDGE +VMOVDDUP ymmreg,ymmrm256 [rm: vex.256.f2.0f 12 /r] AVX,SANDYBRIDGE +VMOVDQA xmmreg,xmmrm128 [rm: vex.128.66.0f 6f /r] AVX,SANDYBRIDGE +VMOVDQA xmmrm128,xmmreg [mr: vex.128.66.0f 7f /r] AVX,SANDYBRIDGE +; These are officially documented as VMOVDQA, but VMOVQQA seems more logical to me... +VMOVQQA ymmreg,ymmrm256 [rm: vex.256.66.0f 6f /r] AVX,SANDYBRIDGE +VMOVQQA ymmrm256,ymmreg [mr: vex.256.66.0f 7f /r] AVX,SANDYBRIDGE +VMOVDQA ymmreg,ymmrm256 [rm: vex.256.66.0f 6f /r] AVX,SANDYBRIDGE +VMOVDQA ymmrm256,ymmreg [mr: vex.256.66.0f 7f /r] AVX,SANDYBRIDGE +VMOVDQU xmmreg,xmmrm128 [rm: vex.128.f3.0f 6f /r] AVX,SANDYBRIDGE +VMOVDQU xmmrm128,xmmreg [mr: vex.128.f3.0f 7f /r] AVX,SANDYBRIDGE +; These are officially documented as VMOVDQU, but VMOVQQU seems more logical to me... +VMOVQQU ymmreg,ymmrm256 [rm: vex.256.f3.0f 6f /r] AVX,SANDYBRIDGE +VMOVQQU ymmrm256,ymmreg [mr: vex.256.f3.0f 7f /r] AVX,SANDYBRIDGE +VMOVDQU ymmreg,ymmrm256 [rm: vex.256.f3.0f 6f /r] AVX,SANDYBRIDGE +VMOVDQU ymmrm256,ymmreg [mr: vex.256.f3.0f 7f /r] AVX,SANDYBRIDGE +VMOVHLPS xmmreg,xmmreg*,xmmreg [rvm: vex.nds.128.0f 12 /r] AVX,SANDYBRIDGE +VMOVHPD xmmreg,xmmreg*,mem64 [rvm: vex.nds.128.66.0f 16 /r] AVX,SANDYBRIDGE +VMOVHPD mem64,xmmreg [mr: vex.128.66.0f 17 /r] AVX,SANDYBRIDGE +VMOVHPS xmmreg,xmmreg*,mem64 [rvm: vex.nds.128.0f 16 /r] AVX,SANDYBRIDGE +VMOVHPS mem64,xmmreg [mr: vex.128.0f 17 /r] AVX,SANDYBRIDGE +VMOVLHPS xmmreg,xmmreg*,xmmreg [rvm: vex.nds.128.0f 16 /r] AVX,SANDYBRIDGE +VMOVLPD xmmreg,xmmreg*,mem64 [rvm: vex.nds.128.66.0f 12 /r] AVX,SANDYBRIDGE +VMOVLPD mem64,xmmreg [mr: vex.128.66.0f 13 /r] AVX,SANDYBRIDGE +VMOVLPS xmmreg,xmmreg*,mem64 [rvm: vex.nds.128.0f 12 /r] AVX,SANDYBRIDGE +VMOVLPS mem64,xmmreg [mr: vex.128.0f 13 /r] AVX,SANDYBRIDGE +VMOVMSKPD reg64,xmmreg [rm: vex.128.66.0f 50 /r] AVX,SANDYBRIDGE,LONG +VMOVMSKPD reg32,xmmreg [rm: vex.128.66.0f 50 /r] AVX,SANDYBRIDGE +VMOVMSKPD reg64,ymmreg [rm: vex.256.66.0f 50 /r] AVX,SANDYBRIDGE,LONG +VMOVMSKPD reg32,ymmreg [rm: vex.256.66.0f 50 /r] AVX,SANDYBRIDGE +VMOVMSKPS reg64,xmmreg [rm: vex.128.0f 50 /r] AVX,SANDYBRIDGE,LONG +VMOVMSKPS reg32,xmmreg [rm: vex.128.0f 50 /r] AVX,SANDYBRIDGE +VMOVMSKPS reg64,ymmreg [rm: vex.256.0f 50 /r] AVX,SANDYBRIDGE,LONG +VMOVMSKPS reg32,ymmreg [rm: vex.256.0f 50 /r] AVX,SANDYBRIDGE +VMOVNTDQ mem128,xmmreg [mr: vex.128.66.0f e7 /r] AVX,SANDYBRIDGE +; Officially VMOVNTDQ, but VMOVNTQQ seems more logical to me... +VMOVNTQQ mem256,ymmreg [mr: vex.256.66.0f e7 /r] AVX,SANDYBRIDGE +VMOVNTDQ mem256,ymmreg [mr: vex.256.66.0f e7 /r] AVX,SANDYBRIDGE +VMOVNTDQA xmmreg,mem128 [rm: vex.128.66.0f38 2a /r] AVX,SANDYBRIDGE +VMOVNTPD mem128,xmmreg [mr: vex.128.66.0f 2b /r] AVX,SANDYBRIDGE +VMOVNTPD mem256,ymmreg [mr: vex.256.66.0f 2b /r] AVX,SANDYBRIDGE +VMOVNTPS mem128,xmmreg [mr: vex.128.0f 2b /r] AVX,SANDYBRIDGE +VMOVNTPS mem256,ymmreg [mr: vex.256.0f 2b /r] AVX,SANDYBRIDGE +VMOVSD xmmreg,xmmreg*,xmmreg [rvm: vex.nds.lig.f2.0f 10 /r] AVX,SANDYBRIDGE +VMOVSD xmmreg,mem64 [rm: vex.lig.f2.0f 10 /r] AVX,SANDYBRIDGE +VMOVSD xmmreg,xmmreg*,xmmreg [mvr: vex.nds.lig.f2.0f 11 /r] AVX,SANDYBRIDGE +VMOVSD mem64,xmmreg [mr: vex.lig.f2.0f 11 /r] AVX,SANDYBRIDGE +VMOVSHDUP xmmreg,xmmrm128 [rm: vex.128.f3.0f 16 /r] AVX,SANDYBRIDGE +VMOVSHDUP ymmreg,ymmrm256 [rm: vex.256.f3.0f 16 /r] AVX,SANDYBRIDGE +VMOVSLDUP xmmreg,xmmrm128 [rm: vex.128.f3.0f 12 /r] AVX,SANDYBRIDGE +VMOVSLDUP ymmreg,ymmrm256 [rm: vex.256.f3.0f 12 /r] AVX,SANDYBRIDGE +VMOVSS xmmreg,xmmreg*,xmmreg [rvm: vex.nds.lig.f3.0f 10 /r] AVX,SANDYBRIDGE +VMOVSS xmmreg,mem32 [rm: vex.lig.f3.0f 10 /r] AVX,SANDYBRIDGE +VMOVSS xmmreg,xmmreg*,xmmreg [mvr: vex.nds.lig.f3.0f 11 /r] AVX,SANDYBRIDGE +VMOVSS mem32,xmmreg [mr: vex.lig.f3.0f 11 /r] AVX,SANDYBRIDGE +VMOVUPD xmmreg,xmmrm128 [rm: vex.128.66.0f 10 /r] AVX,SANDYBRIDGE +VMOVUPD xmmrm128,xmmreg [mr: vex.128.66.0f 11 /r] AVX,SANDYBRIDGE +VMOVUPD ymmreg,ymmrm256 [rm: vex.256.66.0f 10 /r] AVX,SANDYBRIDGE +VMOVUPD ymmrm256,ymmreg [mr: vex.256.66.0f 11 /r] AVX,SANDYBRIDGE +VMOVUPS xmmreg,xmmrm128 [rm: vex.128.0f 10 /r] AVX,SANDYBRIDGE +VMOVUPS xmmrm128,xmmreg [mr: vex.128.0f 11 /r] AVX,SANDYBRIDGE +VMOVUPS ymmreg,ymmrm256 [rm: vex.256.0f 10 /r] AVX,SANDYBRIDGE +VMOVUPS ymmrm256,ymmreg [mr: vex.256.0f 11 /r] AVX,SANDYBRIDGE +VMPSADBW xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a 42 /r ib] AVX,SANDYBRIDGE +VMULPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 59 /r] AVX,SANDYBRIDGE +VMULPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 59 /r] AVX,SANDYBRIDGE +VMULPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f 59 /r] AVX,SANDYBRIDGE +VMULPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f 59 /r] AVX,SANDYBRIDGE +VMULSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f 59 /r] AVX,SANDYBRIDGE +VMULSS xmmreg,xmmreg*,xmmrm32 [rvm: vex.nds.lig.f3.0f 59 /r] AVX,SANDYBRIDGE +VORPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 56 /r] AVX,SANDYBRIDGE +VORPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 56 /r] AVX,SANDYBRIDGE +VORPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f 56 /r] AVX,SANDYBRIDGE +VORPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f 56 /r] AVX,SANDYBRIDGE +VPABSB xmmreg,xmmrm128 [rm: vex.128.66.0f38 1c /r] AVX,SANDYBRIDGE +VPABSW xmmreg,xmmrm128 [rm: vex.128.66.0f38 1d /r] AVX,SANDYBRIDGE +VPABSD xmmreg,xmmrm128 [rm: vex.128.66.0f38 1e /r] AVX,SANDYBRIDGE +VPACKSSWB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 63 /r] AVX,SANDYBRIDGE +VPACKSSDW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 6b /r] AVX,SANDYBRIDGE +VPACKUSWB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 67 /r] AVX,SANDYBRIDGE +VPACKUSDW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 2b /r] AVX,SANDYBRIDGE +VPADDB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f fc /r] AVX,SANDYBRIDGE +VPADDW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f fd /r] AVX,SANDYBRIDGE +VPADDD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f fe /r] AVX,SANDYBRIDGE +VPADDQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f d4 /r] AVX,SANDYBRIDGE +VPADDSB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f ec /r] AVX,SANDYBRIDGE +VPADDSW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f ed /r] AVX,SANDYBRIDGE +VPADDUSB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f dc /r] AVX,SANDYBRIDGE +VPADDUSW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f dd /r] AVX,SANDYBRIDGE +VPALIGNR xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a 0f /r ib] AVX,SANDYBRIDGE +VPAND xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f db /r] AVX,SANDYBRIDGE +VPANDN xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f df /r] AVX,SANDYBRIDGE +VPAVGB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f e0 /r] AVX,SANDYBRIDGE +VPAVGW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f e3 /r] AVX,SANDYBRIDGE +VPBLENDVB xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.nds.128.66.0f3a.w0 4c /r /is4] AVX,SANDYBRIDGE +VPBLENDW xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a 0e /r ib] AVX,SANDYBRIDGE +VPCMPESTRI xmmreg,xmmrm128,imm8 [rmi: vex.128.66.0f3a 61 /r ib] AVX,SANDYBRIDGE +VPCMPESTRM xmmreg,xmmrm128,imm8 [rmi: vex.128.66.0f3a 60 /r ib] AVX,SANDYBRIDGE +VPCMPISTRI xmmreg,xmmrm128,imm8 [rmi: vex.128.66.0f3a 63 /r ib] AVX,SANDYBRIDGE +VPCMPISTRM xmmreg,xmmrm128,imm8 [rmi: vex.128.66.0f3a 62 /r ib] AVX,SANDYBRIDGE +VPCMPEQB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 74 /r] AVX,SANDYBRIDGE +VPCMPEQW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 75 /r] AVX,SANDYBRIDGE +VPCMPEQD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 76 /r] AVX,SANDYBRIDGE +VPCMPEQQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 29 /r] AVX,SANDYBRIDGE +VPCMPGTB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 64 /r] AVX,SANDYBRIDGE +VPCMPGTW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 65 /r] AVX,SANDYBRIDGE +VPCMPGTD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 66 /r] AVX,SANDYBRIDGE +VPCMPGTQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 37 /r] AVX,SANDYBRIDGE +VPERMILPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38.w0 0d /r] AVX,SANDYBRIDGE +VPERMILPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.w0 0d /r] AVX,SANDYBRIDGE +VPERMILPD xmmreg,xmmrm128,imm8 [rmi: vex.128.66.0f3a.w0 05 /r ib] AVX,SANDYBRIDGE +VPERMILPD ymmreg,ymmrm256,imm8 [rmi: vex.256.66.0f3a.w0 05 /r ib] AVX,SANDYBRIDGE +VPERMILPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38.w0 0c /r] AVX,SANDYBRIDGE +VPERMILPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.w0 0c /r] AVX,SANDYBRIDGE +VPERMILPS xmmreg,xmmrm128,imm8 [rmi: vex.128.66.0f3a.w0 04 /r ib] AVX,SANDYBRIDGE +VPERMILPS ymmreg,ymmrm256,imm8 [rmi: vex.256.66.0f3a.w0 04 /r ib] AVX,SANDYBRIDGE +VPERM2F128 ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f3a.w0 06 /r ib] AVX,SANDYBRIDGE +VPEXTRB reg64,xmmreg,imm8 [mri: vex.128.66.0f3a.w0 14 /r ib] AVX,SANDYBRIDGE,LONG +VPEXTRB reg32,xmmreg,imm8 [mri: vex.128.66.0f3a.w0 14 /r ib] AVX,SANDYBRIDGE +VPEXTRB mem8,xmmreg,imm8 [mri: vex.128.66.0f3a.w0 14 /r ib] AVX,SANDYBRIDGE +VPEXTRW reg64,xmmreg,imm8 [rmi: vex.128.66.0f.w0 c5 /r ib] AVX,SANDYBRIDGE,LONG +VPEXTRW reg32,xmmreg,imm8 [rmi: vex.128.66.0f.w0 c5 /r ib] AVX,SANDYBRIDGE +VPEXTRW reg64,xmmreg,imm8 [mri: vex.128.66.0f3a.w0 15 /r ib] AVX,SANDYBRIDGE,LONG +VPEXTRW reg32,xmmreg,imm8 [mri: vex.128.66.0f3a.w0 15 /r ib] AVX,SANDYBRIDGE +VPEXTRW mem16,xmmreg,imm8 [mri: vex.128.66.0f3a.w0 15 /r ib] AVX,SANDYBRIDGE +VPEXTRD reg64,xmmreg,imm8 [mri: vex.128.66.0f3a.w0 16 /r ib] AVX,SANDYBRIDGE,LONG +VPEXTRD rm32,xmmreg,imm8 [mri: vex.128.66.0f3a.w0 16 /r ib] AVX,SANDYBRIDGE +VPEXTRQ rm64,xmmreg,imm8 [mri: vex.128.66.0f3a.w1 16 /r ib] AVX,SANDYBRIDGE,LONG +VPHADDW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 01 /r] AVX,SANDYBRIDGE +VPHADDD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 02 /r] AVX,SANDYBRIDGE +VPHADDSW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 03 /r] AVX,SANDYBRIDGE +VPHMINPOSUW xmmreg,xmmrm128 [rm: vex.128.66.0f38 41 /r] AVX,SANDYBRIDGE +VPHSUBW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 05 /r] AVX,SANDYBRIDGE +VPHSUBD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 06 /r] AVX,SANDYBRIDGE +VPHSUBSW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 07 /r] AVX,SANDYBRIDGE +VPINSRB xmmreg,xmmreg*,mem8,imm8 [rvmi: vex.nds.128.66.0f3a 20 /r ib] AVX,SANDYBRIDGE +VPINSRB xmmreg,xmmreg*,rm8,imm8 [rvmi: vex.nds.128.66.0f3a 20 /r ib] AVX,SANDYBRIDGE +VPINSRB xmmreg,xmmreg*,reg32,imm8 [rvmi: vex.nds.128.66.0f3a 20 /r ib] AVX,SANDYBRIDGE +VPINSRW xmmreg,xmmreg*,mem16,imm8 [rvmi: vex.nds.128.66.0f c4 /r ib] AVX,SANDYBRIDGE +VPINSRW xmmreg,xmmreg*,rm16,imm8 [rvmi: vex.nds.128.66.0f c4 /r ib] AVX,SANDYBRIDGE +VPINSRW xmmreg,xmmreg*,reg32,imm8 [rvmi: vex.nds.128.66.0f c4 /r ib] AVX,SANDYBRIDGE +VPINSRD xmmreg,xmmreg*,mem32,imm8 [rvmi: vex.nds.128.66.0f3a.w0 22 /r ib] AVX,SANDYBRIDGE +VPINSRD xmmreg,xmmreg*,rm32,imm8 [rvmi: vex.nds.128.66.0f3a.w0 22 /r ib] AVX,SANDYBRIDGE +VPINSRQ xmmreg,xmmreg*,mem64,imm8 [rvmi: vex.nds.128.66.0f3a.w1 22 /r ib] AVX,SANDYBRIDGE,LONG +VPINSRQ xmmreg,xmmreg*,rm64,imm8 [rvmi: vex.nds.128.66.0f3a.w1 22 /r ib] AVX,SANDYBRIDGE,LONG +VPMADDWD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f f5 /r] AVX,SANDYBRIDGE +VPMADDUBSW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 04 /r] AVX,SANDYBRIDGE +VPMAXSB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 3c /r] AVX,SANDYBRIDGE +VPMAXSW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f ee /r] AVX,SANDYBRIDGE +VPMAXSD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 3d /r] AVX,SANDYBRIDGE +VPMAXUB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f de /r] AVX,SANDYBRIDGE +VPMAXUW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 3e /r] AVX,SANDYBRIDGE +VPMAXUD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 3f /r] AVX,SANDYBRIDGE +VPMINSB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 38 /r] AVX,SANDYBRIDGE +VPMINSW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f ea /r] AVX,SANDYBRIDGE +VPMINSD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 39 /r] AVX,SANDYBRIDGE +VPMINUB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f da /r] AVX,SANDYBRIDGE +VPMINUW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 3a /r] AVX,SANDYBRIDGE +VPMINUD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 3b /r] AVX,SANDYBRIDGE +VPMOVMSKB reg64,xmmreg [rm: vex.128.66.0f d7 /r] AVX,SANDYBRIDGE,LONG +VPMOVMSKB reg32,xmmreg [rm: vex.128.66.0f d7 /r] AVX,SANDYBRIDGE +VPMOVSXBW xmmreg,xmmrm64 [rm: vex.128.66.0f38 20 /r] AVX,SANDYBRIDGE +VPMOVSXBD xmmreg,xmmrm32 [rm: vex.128.66.0f38 21 /r] AVX,SANDYBRIDGE +VPMOVSXBQ xmmreg,xmmrm16 [rm: vex.128.66.0f38 22 /r] AVX,SANDYBRIDGE +VPMOVSXWD xmmreg,xmmrm64 [rm: vex.128.66.0f38 23 /r] AVX,SANDYBRIDGE +VPMOVSXWQ xmmreg,xmmrm32 [rm: vex.128.66.0f38 24 /r] AVX,SANDYBRIDGE +VPMOVSXDQ xmmreg,xmmrm64 [rm: vex.128.66.0f38 25 /r] AVX,SANDYBRIDGE +VPMOVZXBW xmmreg,xmmrm64 [rm: vex.128.66.0f38 30 /r] AVX,SANDYBRIDGE +VPMOVZXBD xmmreg,xmmrm32 [rm: vex.128.66.0f38 31 /r] AVX,SANDYBRIDGE +VPMOVZXBQ xmmreg,xmmrm16 [rm: vex.128.66.0f38 32 /r] AVX,SANDYBRIDGE +VPMOVZXWD xmmreg,xmmrm64 [rm: vex.128.66.0f38 33 /r] AVX,SANDYBRIDGE +VPMOVZXWQ xmmreg,xmmrm32 [rm: vex.128.66.0f38 34 /r] AVX,SANDYBRIDGE +VPMOVZXDQ xmmreg,xmmrm64 [rm: vex.128.66.0f38 35 /r] AVX,SANDYBRIDGE +VPMULHUW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f e4 /r] AVX,SANDYBRIDGE +VPMULHRSW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 0b /r] AVX,SANDYBRIDGE +VPMULHW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f e5 /r] AVX,SANDYBRIDGE +VPMULLW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f d5 /r] AVX,SANDYBRIDGE +VPMULLD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 40 /r] AVX,SANDYBRIDGE +VPMULUDQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f f4 /r] AVX,SANDYBRIDGE +VPMULDQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 28 /r] AVX,SANDYBRIDGE +VPOR xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f eb /r] AVX,SANDYBRIDGE +VPSADBW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f f6 /r] AVX,SANDYBRIDGE +VPSHUFB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 00 /r] AVX,SANDYBRIDGE +VPSHUFD xmmreg,xmmrm128,imm8 [rmi: vex.128.66.0f 70 /r ib] AVX,SANDYBRIDGE +VPSHUFHW xmmreg,xmmrm128,imm8 [rmi: vex.128.f3.0f 70 /r ib] AVX,SANDYBRIDGE +VPSHUFLW xmmreg,xmmrm128,imm8 [rmi: vex.128.f2.0f 70 /r ib] AVX,SANDYBRIDGE +VPSIGNB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 08 /r] AVX,SANDYBRIDGE +VPSIGNW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 09 /r] AVX,SANDYBRIDGE +VPSIGND xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38 0a /r] AVX,SANDYBRIDGE +VPSLLDQ xmmreg,xmmreg*,imm8 [vmi: vex.ndd.128.66.0f 73 /7 ib] AVX,SANDYBRIDGE +VPSRLDQ xmmreg,xmmreg*,imm8 [vmi: vex.ndd.128.66.0f 73 /3 ib] AVX,SANDYBRIDGE +VPSLLW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f f1 /r] AVX,SANDYBRIDGE +VPSLLW xmmreg,xmmreg*,imm8 [vmi: vex.ndd.128.66.0f 71 /6 ib] AVX,SANDYBRIDGE +VPSLLD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f f2 /r] AVX,SANDYBRIDGE +VPSLLD xmmreg,xmmreg*,imm8 [vmi: vex.ndd.128.66.0f 72 /6 ib] AVX,SANDYBRIDGE +VPSLLQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f f3 /r] AVX,SANDYBRIDGE +VPSLLQ xmmreg,xmmreg*,imm8 [vmi: vex.ndd.128.66.0f 73 /6 ib] AVX,SANDYBRIDGE +VPSRAW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f e1 /r] AVX,SANDYBRIDGE +VPSRAW xmmreg,xmmreg*,imm8 [vmi: vex.ndd.128.66.0f 71 /4 ib] AVX,SANDYBRIDGE +VPSRAD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f e2 /r] AVX,SANDYBRIDGE +VPSRAD xmmreg,xmmreg*,imm8 [vmi: vex.ndd.128.66.0f 72 /4 ib] AVX,SANDYBRIDGE +VPSRLW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f d1 /r] AVX,SANDYBRIDGE +VPSRLW xmmreg,xmmreg*,imm8 [vmi: vex.ndd.128.66.0f 71 /2 ib] AVX,SANDYBRIDGE +VPSRLD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f d2 /r] AVX,SANDYBRIDGE +VPSRLD xmmreg,xmmreg*,imm8 [vmi: vex.ndd.128.66.0f 72 /2 ib] AVX,SANDYBRIDGE +VPSRLQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f d3 /r] AVX,SANDYBRIDGE +VPSRLQ xmmreg,xmmreg*,imm8 [vmi: vex.ndd.128.66.0f 73 /2 ib] AVX,SANDYBRIDGE +VPTEST xmmreg,xmmrm128 [rm: vex.128.66.0f38 17 /r] AVX,SANDYBRIDGE +VPTEST ymmreg,ymmrm256 [rm: vex.256.66.0f38 17 /r] AVX,SANDYBRIDGE +VPSUBB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f f8 /r] AVX,SANDYBRIDGE +VPSUBW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f f9 /r] AVX,SANDYBRIDGE +VPSUBD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f fa /r] AVX,SANDYBRIDGE +VPSUBQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f fb /r] AVX,SANDYBRIDGE +VPSUBSB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f e8 /r] AVX,SANDYBRIDGE +VPSUBSW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f e9 /r] AVX,SANDYBRIDGE +VPSUBUSB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f d8 /r] AVX,SANDYBRIDGE +VPSUBUSW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f d9 /r] AVX,SANDYBRIDGE +VPUNPCKHBW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 68 /r] AVX,SANDYBRIDGE +VPUNPCKHWD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 69 /r] AVX,SANDYBRIDGE +VPUNPCKHDQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 6a /r] AVX,SANDYBRIDGE +VPUNPCKHQDQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 6d /r] AVX,SANDYBRIDGE +VPUNPCKLBW xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 60 /r] AVX,SANDYBRIDGE +VPUNPCKLWD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 61 /r] AVX,SANDYBRIDGE +VPUNPCKLDQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 62 /r] AVX,SANDYBRIDGE +VPUNPCKLQDQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 6c /r] AVX,SANDYBRIDGE +VPXOR xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f ef /r] AVX,SANDYBRIDGE +VRCPPS xmmreg,xmmrm128 [rm: vex.128.0f 53 /r] AVX,SANDYBRIDGE +VRCPPS ymmreg,ymmrm256 [rm: vex.256.0f 53 /r] AVX,SANDYBRIDGE +VRCPSS xmmreg,xmmreg*,xmmrm32 [rvm: vex.nds.lig.f3.0f 53 /r] AVX,SANDYBRIDGE +VRSQRTPS xmmreg,xmmrm128 [rm: vex.128.0f 52 /r] AVX,SANDYBRIDGE +VRSQRTPS ymmreg,ymmrm256 [rm: vex.256.0f 52 /r] AVX,SANDYBRIDGE +VRSQRTSS xmmreg,xmmreg*,xmmrm32 [rvm: vex.nds.lig.f3.0f 52 /r] AVX,SANDYBRIDGE +VROUNDPD xmmreg,xmmrm128,imm8 [rmi: vex.128.66.0f3a 09 /r ib] AVX,SANDYBRIDGE +VROUNDPD ymmreg,ymmrm256,imm8 [rmi: vex.256.66.0f3a 09 /r ib] AVX,SANDYBRIDGE +VROUNDPS xmmreg,xmmrm128,imm8 [rmi: vex.128.66.0f3a 08 /r ib] AVX,SANDYBRIDGE +VROUNDPS ymmreg,ymmrm256,imm8 [rmi: vex.256.66.0f3a 08 /r ib] AVX,SANDYBRIDGE +VROUNDSD xmmreg,xmmreg*,xmmrm64,imm8 [rvmi: vex.nds.128.66.0f3a 0b /r ib] AVX,SANDYBRIDGE +VROUNDSS xmmreg,xmmreg*,xmmrm32,imm8 [rvmi: vex.nds.128.66.0f3a 0a /r ib] AVX,SANDYBRIDGE +VSHUFPD xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f c6 /r ib] AVX,SANDYBRIDGE +VSHUFPD ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f c6 /r ib] AVX,SANDYBRIDGE +VSHUFPS xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.0f c6 /r ib] AVX,SANDYBRIDGE +VSHUFPS ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.0f c6 /r ib] AVX,SANDYBRIDGE +VSQRTPD xmmreg,xmmrm128 [rm: vex.128.66.0f 51 /r] AVX,SANDYBRIDGE +VSQRTPD ymmreg,ymmrm256 [rm: vex.256.66.0f 51 /r] AVX,SANDYBRIDGE +VSQRTPS xmmreg,xmmrm128 [rm: vex.128.0f 51 /r] AVX,SANDYBRIDGE +VSQRTPS ymmreg,ymmrm256 [rm: vex.256.0f 51 /r] AVX,SANDYBRIDGE +VSQRTSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f 51 /r] AVX,SANDYBRIDGE +VSQRTSS xmmreg,xmmreg*,xmmrm32 [rvm: vex.nds.lig.f3.0f 51 /r] AVX,SANDYBRIDGE +VSTMXCSR mem32 [m: vex.128.0f ae /3] AVX,SANDYBRIDGE +VSUBPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 5c /r] AVX,SANDYBRIDGE +VSUBPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 5c /r] AVX,SANDYBRIDGE +VSUBPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f 5c /r] AVX,SANDYBRIDGE +VSUBPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f 5c /r] AVX,SANDYBRIDGE +VSUBSD xmmreg,xmmreg*,xmmrm64 [rvm: vex.nds.lig.f2.0f 5c /r] AVX,SANDYBRIDGE +VSUBSS xmmreg,xmmreg*,xmmrm32 [rvm: vex.nds.lig.f3.0f 5c /r] AVX,SANDYBRIDGE +VTESTPS xmmreg,xmmrm128 [rm: vex.128.66.0f38.w0 0e /r] AVX,SANDYBRIDGE +VTESTPS ymmreg,ymmrm256 [rm: vex.256.66.0f38.w0 0e /r] AVX,SANDYBRIDGE +VTESTPD xmmreg,xmmrm128 [rm: vex.128.66.0f38.w0 0f /r] AVX,SANDYBRIDGE +VTESTPD ymmreg,ymmrm256 [rm: vex.256.66.0f38.w0 0f /r] AVX,SANDYBRIDGE +VUCOMISD xmmreg,xmmrm64 [rm: vex.lig.66.0f 2e /r] AVX,SANDYBRIDGE +VUCOMISS xmmreg,xmmrm32 [rm: vex.lig.0f 2e /r] AVX,SANDYBRIDGE +VUNPCKHPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 15 /r] AVX,SANDYBRIDGE +VUNPCKHPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 15 /r] AVX,SANDYBRIDGE +VUNPCKHPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f 15 /r] AVX,SANDYBRIDGE +VUNPCKHPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f 15 /r] AVX,SANDYBRIDGE +VUNPCKLPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 14 /r] AVX,SANDYBRIDGE +VUNPCKLPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 14 /r] AVX,SANDYBRIDGE +VUNPCKLPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f 14 /r] AVX,SANDYBRIDGE +VUNPCKLPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f 14 /r] AVX,SANDYBRIDGE +VXORPD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f 57 /r] AVX,SANDYBRIDGE +VXORPD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 57 /r] AVX,SANDYBRIDGE +VXORPS xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.0f 57 /r] AVX,SANDYBRIDGE +VXORPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.0f 57 /r] AVX,SANDYBRIDGE +VZEROALL void [ vex.256.0f.w0 77] AVX,SANDYBRIDGE +VZEROUPPER void [ vex.128.0f.w0 77] AVX,SANDYBRIDGE + +;# Intel Carry-Less Multiplication instructions (CLMUL) +PCLMULLQLQDQ xmmreg,xmmrm128 [rm: 66 0f 3a 44 /r 00] SSE,WESTMERE +PCLMULHQLQDQ xmmreg,xmmrm128 [rm: 66 0f 3a 44 /r 01] SSE,WESTMERE +PCLMULLQHQDQ xmmreg,xmmrm128 [rm: 66 0f 3a 44 /r 10] SSE,WESTMERE +PCLMULHQHQDQ xmmreg,xmmrm128 [rm: 66 0f 3a 44 /r 11] SSE,WESTMERE +PCLMULQDQ xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a 44 /r ib] SSE,WESTMERE + +;# Intel AVX Carry-Less Multiplication instructions (CLMUL) +VPCLMULLQLQDQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f3a 44 /r 00] AVX,SANDYBRIDGE +VPCLMULHQLQDQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f3a 44 /r 01] AVX,SANDYBRIDGE +VPCLMULLQHQDQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f3a 44 /r 10] AVX,SANDYBRIDGE +VPCLMULHQHQDQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f3a 44 /r 11] AVX,SANDYBRIDGE +VPCLMULQDQ xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a 44 /r ib] AVX,SANDYBRIDGE + +; Intel VPCLMULQDQ instructions +VPCLMULLQLQDQ ymmreg,ymmreg*,ymmrm256 [rvm:fv: vex.nds.256.66.0f3a.wig 44 /r 00] VPCLMULQDQ,FUTURE +VPCLMULHQLQDQ ymmreg,ymmreg*,ymmrm256 [rvm:fv: vex.nds.256.66.0f3a.wig 44 /r 01] VPCLMULQDQ,FUTURE +VPCLMULLQHQDQ ymmreg,ymmreg*,ymmrm256 [rvm:fv: vex.nds.256.66.0f3a.wig 44 /r 10] VPCLMULQDQ,FUTURE +VPCLMULHQHQDQ ymmreg,ymmreg*,ymmrm256 [rvm:fv: vex.nds.256.66.0f3a.wig 44 /r 11] VPCLMULQDQ,FUTURE +VPCLMULQDQ ymmreg,ymmreg*,ymmrm256,imm8 [rvmi:fv: vex.nds.256.66.0f3a.wig 44 /r ib] VPCLMULQDQ,FUTURE + +; Intel VPCLMULQDQ + AVX512VL instructions +VPCLMULLQLQDQ xmmreg,xmmreg*,xmmrm128 [rvm:fv: evex.nds.128.66.0f3a.wig 44 /r 00] AVX512VL,VPCLMULQDQ,FUTURE +VPCLMULHQLQDQ xmmreg,xmmreg*,xmmrm128 [rvm:fv: evex.nds.128.66.0f3a.wig 44 /r 01] AVX512VL,VPCLMULQDQ,FUTURE +VPCLMULLQHQDQ xmmreg,xmmreg*,xmmrm128 [rvm:fv: evex.nds.128.66.0f3a.wig 44 /r 10] AVX512VL,VPCLMULQDQ,FUTURE +VPCLMULHQHQDQ xmmreg,xmmreg*,xmmrm128 [rvm:fv: evex.nds.128.66.0f3a.wig 44 /r 11] AVX512VL,VPCLMULQDQ,FUTURE +VPCLMULQDQ xmmreg,xmmreg*,xmmrm128,imm8 [rvmi:fv: evex.nds.128.66.0f3a.wig 44 /r ib] AVX512VL,VPCLMULQDQ,FUTURE + +VPCLMULLQLQDQ ymmreg,ymmreg*,ymmrm256 [rvm:fv: evex.nds.256.66.0f3a.wig 44 /r 00] AVX512VL,VPCLMULQDQ,FUTURE +VPCLMULHQLQDQ ymmreg,ymmreg*,ymmrm256 [rvm:fv: evex.nds.256.66.0f3a.wig 44 /r 01] AVX512VL,VPCLMULQDQ,FUTURE +VPCLMULLQHQDQ ymmreg,ymmreg*,ymmrm256 [rvm:fv: evex.nds.256.66.0f3a.wig 44 /r 10] AVX512VL,VPCLMULQDQ,FUTURE +VPCLMULHQHQDQ ymmreg,ymmreg*,ymmrm256 [rvm:fv: evex.nds.256.66.0f3a.wig 44 /r 11] AVX512VL,VPCLMULQDQ,FUTURE +VPCLMULQDQ ymmreg,ymmreg*,ymmrm256,imm8 [rvmi:fv: evex.nds.256.66.0f3a.wig 44 /r ib] AVX512VL,VPCLMULQDQ,FUTURE + +; Intel VPCLMULQDQ + AVX512F instructions +VPCLMULLQLQDQ zmmreg,zmmreg*,zmmrm512 [rvm:fv: evex.nds.512.66.0f3a.wig 44 /r 00] AVX512,VPCLMULQDQ,FUTURE +VPCLMULHQLQDQ zmmreg,zmmreg*,zmmrm512 [rvm:fv: evex.nds.512.66.0f3a.wig 44 /r 01] AVX512,VPCLMULQDQ,FUTURE +VPCLMULLQHQDQ zmmreg,zmmreg*,zmmrm512 [rvm:fv: evex.nds.512.66.0f3a.wig 44 /r 10] AVX512,VPCLMULQDQ,FUTURE +VPCLMULHQHQDQ zmmreg,zmmreg*,zmmrm512 [rvm:fv: evex.nds.512.66.0f3a.wig 44 /r 11] AVX512,VPCLMULQDQ,FUTURE +VPCLMULQDQ zmmreg,zmmreg*,zmmrm512,imm8 [rvmi:fv: evex.nds.512.66.0f3a.wig 44 /r ib] AVX512,VPCLMULQDQ,FUTURE + +;# Intel Fused Multiply-Add instructions (FMA) +VFMADD132PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 98 /r] FMA,FUTURE +VFMADD132PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 98 /r] FMA,FUTURE +VFMADD132PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 98 /r] FMA,FUTURE +VFMADD132PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 98 /r] FMA,FUTURE +VFMADD312PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 98 /r] FMA,FUTURE +VFMADD312PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 98 /r] FMA,FUTURE +VFMADD312PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 98 /r] FMA,FUTURE +VFMADD312PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 98 /r] FMA,FUTURE +VFMADD213PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 a8 /r] FMA,FUTURE +VFMADD213PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 a8 /r] FMA,FUTURE +VFMADD213PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 a8 /r] FMA,FUTURE +VFMADD213PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 a8 /r] FMA,FUTURE +VFMADD123PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 a8 /r] FMA,FUTURE +VFMADD123PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 a8 /r] FMA,FUTURE +VFMADD123PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 a8 /r] FMA,FUTURE +VFMADD123PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 a8 /r] FMA,FUTURE +VFMADD231PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 b8 /r] FMA,FUTURE +VFMADD231PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 b8 /r] FMA,FUTURE +VFMADD231PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 b8 /r] FMA,FUTURE +VFMADD231PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 b8 /r] FMA,FUTURE +VFMADD321PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 b8 /r] FMA,FUTURE +VFMADD321PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 b8 /r] FMA,FUTURE +VFMADD321PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 b8 /r] FMA,FUTURE +VFMADD321PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 b8 /r] FMA,FUTURE +VFMADDSUB132PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 96 /r] FMA,FUTURE +VFMADDSUB132PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 96 /r] FMA,FUTURE +VFMADDSUB132PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 96 /r] FMA,FUTURE +VFMADDSUB132PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 96 /r] FMA,FUTURE +VFMADDSUB312PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 96 /r] FMA,FUTURE +VFMADDSUB312PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 96 /r] FMA,FUTURE +VFMADDSUB312PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 96 /r] FMA,FUTURE +VFMADDSUB312PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 96 /r] FMA,FUTURE +VFMADDSUB213PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 a6 /r] FMA,FUTURE +VFMADDSUB213PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 a6 /r] FMA,FUTURE +VFMADDSUB213PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 a6 /r] FMA,FUTURE +VFMADDSUB213PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 a6 /r] FMA,FUTURE +VFMADDSUB123PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 a6 /r] FMA,FUTURE +VFMADDSUB123PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 a6 /r] FMA,FUTURE +VFMADDSUB123PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 a6 /r] FMA,FUTURE +VFMADDSUB123PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 a6 /r] FMA,FUTURE +VFMADDSUB231PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 b6 /r] FMA,FUTURE +VFMADDSUB231PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 b6 /r] FMA,FUTURE +VFMADDSUB231PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 b6 /r] FMA,FUTURE +VFMADDSUB231PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 b6 /r] FMA,FUTURE +VFMADDSUB321PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 b6 /r] FMA,FUTURE +VFMADDSUB321PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 b6 /r] FMA,FUTURE +VFMADDSUB321PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 b6 /r] FMA,FUTURE +VFMADDSUB321PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 b6 /r] FMA,FUTURE +VFMSUB132PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 9a /r] FMA,FUTURE +VFMSUB132PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 9a /r] FMA,FUTURE +VFMSUB132PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 9a /r] FMA,FUTURE +VFMSUB132PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 9a /r] FMA,FUTURE +VFMSUB312PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 9a /r] FMA,FUTURE +VFMSUB312PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 9a /r] FMA,FUTURE +VFMSUB312PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 9a /r] FMA,FUTURE +VFMSUB312PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 9a /r] FMA,FUTURE +VFMSUB213PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 aa /r] FMA,FUTURE +VFMSUB213PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 aa /r] FMA,FUTURE +VFMSUB213PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 aa /r] FMA,FUTURE +VFMSUB213PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 aa /r] FMA,FUTURE +VFMSUB123PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 aa /r] FMA,FUTURE +VFMSUB123PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 aa /r] FMA,FUTURE +VFMSUB123PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 aa /r] FMA,FUTURE +VFMSUB123PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 aa /r] FMA,FUTURE +VFMSUB231PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 ba /r] FMA,FUTURE +VFMSUB231PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 ba /r] FMA,FUTURE +VFMSUB231PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 ba /r] FMA,FUTURE +VFMSUB231PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 ba /r] FMA,FUTURE +VFMSUB321PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 ba /r] FMA,FUTURE +VFMSUB321PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 ba /r] FMA,FUTURE +VFMSUB321PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 ba /r] FMA,FUTURE +VFMSUB321PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 ba /r] FMA,FUTURE +VFMSUBADD132PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 97 /r] FMA,FUTURE +VFMSUBADD132PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 97 /r] FMA,FUTURE +VFMSUBADD132PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 97 /r] FMA,FUTURE +VFMSUBADD132PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 97 /r] FMA,FUTURE +VFMSUBADD312PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 97 /r] FMA,FUTURE +VFMSUBADD312PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 97 /r] FMA,FUTURE +VFMSUBADD312PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 97 /r] FMA,FUTURE +VFMSUBADD312PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 97 /r] FMA,FUTURE +VFMSUBADD213PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 a7 /r] FMA,FUTURE +VFMSUBADD213PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 a7 /r] FMA,FUTURE +VFMSUBADD213PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 a7 /r] FMA,FUTURE +VFMSUBADD213PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 a7 /r] FMA,FUTURE +VFMSUBADD123PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 a7 /r] FMA,FUTURE +VFMSUBADD123PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 a7 /r] FMA,FUTURE +VFMSUBADD123PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 a7 /r] FMA,FUTURE +VFMSUBADD123PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 a7 /r] FMA,FUTURE +VFMSUBADD231PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 b7 /r] FMA,FUTURE +VFMSUBADD231PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 b7 /r] FMA,FUTURE +VFMSUBADD231PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 b7 /r] FMA,FUTURE +VFMSUBADD231PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 b7 /r] FMA,FUTURE +VFMSUBADD321PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 b7 /r] FMA,FUTURE +VFMSUBADD321PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 b7 /r] FMA,FUTURE +VFMSUBADD321PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 b7 /r] FMA,FUTURE +VFMSUBADD321PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 b7 /r] FMA,FUTURE +VFNMADD132PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 9c /r] FMA,FUTURE +VFNMADD132PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 9c /r] FMA,FUTURE +VFNMADD132PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 9c /r] FMA,FUTURE +VFNMADD132PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 9c /r] FMA,FUTURE +VFNMADD312PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 9c /r] FMA,FUTURE +VFNMADD312PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 9c /r] FMA,FUTURE +VFNMADD312PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 9c /r] FMA,FUTURE +VFNMADD312PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 9c /r] FMA,FUTURE +VFNMADD213PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 ac /r] FMA,FUTURE +VFNMADD213PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 ac /r] FMA,FUTURE +VFNMADD213PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 ac /r] FMA,FUTURE +VFNMADD213PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 ac /r] FMA,FUTURE +VFNMADD123PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 ac /r] FMA,FUTURE +VFNMADD123PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 ac /r] FMA,FUTURE +VFNMADD123PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 ac /r] FMA,FUTURE +VFNMADD123PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 ac /r] FMA,FUTURE +VFNMADD231PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 bc /r] FMA,FUTURE +VFNMADD231PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 bc /r] FMA,FUTURE +VFNMADD231PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 bc /r] FMA,FUTURE +VFNMADD231PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 bc /r] FMA,FUTURE +VFNMADD321PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 bc /r] FMA,FUTURE +VFNMADD321PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 bc /r] FMA,FUTURE +VFNMADD321PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 bc /r] FMA,FUTURE +VFNMADD321PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 bc /r] FMA,FUTURE +VFNMSUB132PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 9e /r] FMA,FUTURE +VFNMSUB132PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 9e /r] FMA,FUTURE +VFNMSUB132PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 9e /r] FMA,FUTURE +VFNMSUB132PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 9e /r] FMA,FUTURE +VFNMSUB312PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 9e /r] FMA,FUTURE +VFNMSUB312PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 9e /r] FMA,FUTURE +VFNMSUB312PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 9e /r] FMA,FUTURE +VFNMSUB312PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 9e /r] FMA,FUTURE +VFNMSUB213PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 ae /r] FMA,FUTURE +VFNMSUB213PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 ae /r] FMA,FUTURE +VFNMSUB213PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 ae /r] FMA,FUTURE +VFNMSUB213PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 ae /r] FMA,FUTURE +VFNMSUB123PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 ae /r] FMA,FUTURE +VFNMSUB123PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 ae /r] FMA,FUTURE +VFNMSUB123PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 ae /r] FMA,FUTURE +VFNMSUB123PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 ae /r] FMA,FUTURE +VFNMSUB231PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 be /r] FMA,FUTURE +VFNMSUB231PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 be /r] FMA,FUTURE +VFNMSUB231PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 be /r] FMA,FUTURE +VFNMSUB231PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 be /r] FMA,FUTURE +VFNMSUB321PS xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w0 be /r] FMA,FUTURE +VFNMSUB321PS ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w0 be /r] FMA,FUTURE +VFNMSUB321PD xmmreg,xmmreg,xmmrm128 [rvm: vex.dds.128.66.0f38.w1 be /r] FMA,FUTURE +VFNMSUB321PD ymmreg,ymmreg,ymmrm256 [rvm: vex.dds.256.66.0f38.w1 be /r] FMA,FUTURE +VFMADD132SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 99 /r] FMA,FUTURE +VFMADD132SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 99 /r] FMA,FUTURE +VFMADD312SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 99 /r] FMA,FUTURE +VFMADD312SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 99 /r] FMA,FUTURE +VFMADD213SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 a9 /r] FMA,FUTURE +VFMADD213SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 a9 /r] FMA,FUTURE +VFMADD123SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 a9 /r] FMA,FUTURE +VFMADD123SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 a9 /r] FMA,FUTURE +VFMADD231SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 b9 /r] FMA,FUTURE +VFMADD231SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 b9 /r] FMA,FUTURE +VFMADD321SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 b9 /r] FMA,FUTURE +VFMADD321SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 b9 /r] FMA,FUTURE +VFMSUB132SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 9b /r] FMA,FUTURE +VFMSUB132SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 9b /r] FMA,FUTURE +VFMSUB312SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 9b /r] FMA,FUTURE +VFMSUB312SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 9b /r] FMA,FUTURE +VFMSUB213SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 ab /r] FMA,FUTURE +VFMSUB213SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 ab /r] FMA,FUTURE +VFMSUB123SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 ab /r] FMA,FUTURE +VFMSUB123SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 ab /r] FMA,FUTURE +VFMSUB231SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 bb /r] FMA,FUTURE +VFMSUB231SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 bb /r] FMA,FUTURE +VFMSUB321SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 bb /r] FMA,FUTURE +VFMSUB321SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 bb /r] FMA,FUTURE +VFNMADD132SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 9d /r] FMA,FUTURE +VFNMADD132SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 9d /r] FMA,FUTURE +VFNMADD312SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 9d /r] FMA,FUTURE +VFNMADD312SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 9d /r] FMA,FUTURE +VFNMADD213SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 ad /r] FMA,FUTURE +VFNMADD213SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 ad /r] FMA,FUTURE +VFNMADD123SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 ad /r] FMA,FUTURE +VFNMADD123SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 ad /r] FMA,FUTURE +VFNMADD231SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 bd /r] FMA,FUTURE +VFNMADD231SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 bd /r] FMA,FUTURE +VFNMADD321SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 bd /r] FMA,FUTURE +VFNMADD321SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 bd /r] FMA,FUTURE +VFNMSUB132SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 9f /r] FMA,FUTURE +VFNMSUB132SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 9f /r] FMA,FUTURE +VFNMSUB312SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 9f /r] FMA,FUTURE +VFNMSUB312SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 9f /r] FMA,FUTURE +VFNMSUB213SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 af /r] FMA,FUTURE +VFNMSUB213SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 af /r] FMA,FUTURE +VFNMSUB123SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 af /r] FMA,FUTURE +VFNMSUB123SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 af /r] FMA,FUTURE +VFNMSUB231SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 bf /r] FMA,FUTURE +VFNMSUB231SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 bf /r] FMA,FUTURE +VFNMSUB321SS xmmreg,xmmreg,xmmrm32 [rvm: vex.dds.128.66.0f38.w0 bf /r] FMA,FUTURE +VFNMSUB321SD xmmreg,xmmreg,xmmrm64 [rvm: vex.dds.128.66.0f38.w1 bf /r] FMA,FUTURE + +;# Intel post-32 nm processor instructions +; +; Per AVX spec revision 7, document 319433-007 +RDFSBASE reg32 [m: norexw f3 0f ae /0] LONG,FUTURE +RDFSBASE reg64 [m: o64 f3 0f ae /0] LONG,FUTURE +RDGSBASE reg32 [m: norexw f3 0f ae /1] LONG,FUTURE +RDGSBASE reg64 [m: o64 f3 0f ae /1] LONG,FUTURE +RDRAND reg16 [m: o16 0f c7 /6] FUTURE +RDRAND reg32 [m: o32 0f c7 /6] FUTURE +RDRAND reg64 [m: o64 0f c7 /6] LONG,FUTURE +WRFSBASE reg32 [m: norexw f3 0f ae /2] LONG,FUTURE +WRFSBASE reg64 [m: o64 f3 0f ae /2] LONG,FUTURE +WRGSBASE reg32 [m: norexw f3 0f ae /3] LONG,FUTURE +WRGSBASE reg64 [m: o64 f3 0f ae /3] LONG,FUTURE +VCVTPH2PS ymmreg,xmmrm128 [rm: vex.256.66.0f38.w0 13 /r] AVX,FUTURE +VCVTPH2PS xmmreg,xmmrm64 [rm: vex.128.66.0f38.w0 13 /r] AVX,FUTURE +VCVTPS2PH xmmrm128,ymmreg,imm8 [mri: vex.256.66.0f3a.w0 1d /r ib] AVX,FUTURE +VCVTPS2PH xmmrm64,xmmreg,imm8 [mri: vex.128.66.0f3a.w0 1d /r ib] AVX,FUTURE + +; Per AVX spec revision 13, document 319433-013 +ADCX reg32,rm32 [rm: norexw 66 0f 38 f6 /r] FUTURE +ADCX reg64,rm64 [rm: o64 66 0f 38 f6 /r] LONG,FUTURE +ADOX reg32,rm32 [rm: norexw f3 0f 38 f6 /r] FUTURE +ADOX reg64,rm64 [rm: o64 f3 0f 38 f6 /r] LONG,FUTURE +RDSEED reg16 [m: o16 0f c7 /7] FUTURE +RDSEED reg32 [m: o32 0f c7 /7] FUTURE +RDSEED reg64 [m: o64 0f c7 /7] LONG,FUTURE + +; Per AVX spec revision 14, document 319433-014 +CLAC void [ 0f 01 ca] PRIV,FUTURE +STAC void [ 0f 01 cb] PRIV,FUTURE + +;# VIA (Centaur) security instructions +XSTORE void [ 0f a7 c0] PENT,CYRIX +XCRYPTECB void [ mustrep 0f a7 c8] PENT,CYRIX +XCRYPTCBC void [ mustrep 0f a7 d0] PENT,CYRIX +XCRYPTCTR void [ mustrep 0f a7 d8] PENT,CYRIX +XCRYPTCFB void [ mustrep 0f a7 e0] PENT,CYRIX +XCRYPTOFB void [ mustrep 0f a7 e8] PENT,CYRIX +MONTMUL void [ mustrep 0f a6 c0] PENT,CYRIX +XSHA1 void [ mustrep 0f a6 c8] PENT,CYRIX +XSHA256 void [ mustrep 0f a6 d0] PENT,CYRIX + +;# AMD Lightweight Profiling (LWP) instructions +; +; based on pub number 43724 revision 3.04 date August 2009 +; +; updated to match draft from AMD developer (patch has been +; sent to binutils +; 2010-03-22 Quentin Neill +; Sebastian Pop +; +LLWPCB reg32 [m: xop.m9.w0.l0.p0 12 /0] AMD,386 +LLWPCB reg64 [m: xop.m9.w1.l0.p0 12 /0] AMD,X86_64,LONG + +SLWPCB reg32 [m: xop.m9.w0.l0.p0 12 /1] AMD,386 +SLWPCB reg64 [m: xop.m9.w1.l0.p0 12 /1] AMD,X86_64,LONG + +LWPVAL reg32,rm32,imm32 [vmi: xop.m10.w0.ndd.l0.p0 12 /1 id] AMD,386 +LWPVAL reg64,rm32,imm32 [vmi: xop.m10.w1.ndd.l0.p0 12 /1 id] AMD,X86_64,LONG + +LWPINS reg32,rm32,imm32 [vmi: xop.m10.w0.ndd.l0.p0 12 /0 id] AMD,386 +LWPINS reg64,rm32,imm32 [vmi: xop.m10.w1.ndd.l0.p0 12 /0 id] AMD,X86_64,LONG + +;# AMD XOP and FMA4 instructions (SSE5) +; +; based on pub number 43479 revision 3.04 dated November 2009 +; +VFMADDPD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.m3.w0.nds.l0.p1 69 /r /is4] AMD,SSE5 +VFMADDPD ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.m3.w0.nds.l1.p1 69 /r /is4] AMD,SSE5 +VFMADDPD xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: vex.m3.w1.nds.l0.p1 69 /r /is4] AMD,SSE5 +VFMADDPD ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: vex.m3.w1.nds.l1.p1 69 /r /is4] AMD,SSE5 + +VFMADDPS xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.m3.w0.nds.l0.p1 68 /r /is4] AMD,SSE5 +VFMADDPS ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.m3.w0.nds.l1.p1 68 /r /is4] AMD,SSE5 +VFMADDPS xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: vex.m3.w1.nds.l0.p1 68 /r /is4] AMD,SSE5 +VFMADDPS ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: vex.m3.w1.nds.l1.p1 68 /r /is4] AMD,SSE5 + +VFMADDSD xmmreg,xmmreg*,xmmrm64,xmmreg [rvms: vex.m3.w0.nds.l0.p1 6b /r /is4] AMD,SSE5 +VFMADDSD xmmreg,xmmreg*,xmmreg,xmmrm64 [rvsm: vex.m3.w1.nds.l0.p1 6b /r /is4] AMD,SSE5 + +VFMADDSS xmmreg,xmmreg*,xmmrm32,xmmreg [rvms: vex.m3.w0.nds.l0.p1 6a /r /is4] AMD,SSE5 +VFMADDSS xmmreg,xmmreg*,xmmreg,xmmrm32 [rvsm: vex.m3.w1.nds.l0.p1 6a /r /is4] AMD,SSE5 + +VFMADDSUBPD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.m3.w0.nds.l0.p1 5d /r /is4] AMD,SSE5 +VFMADDSUBPD ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.m3.w0.nds.l1.p1 5d /r /is4] AMD,SSE5 +VFMADDSUBPD xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: vex.m3.w1.nds.l0.p1 5d /r /is4] AMD,SSE5 +VFMADDSUBPD ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: vex.m3.w1.nds.l1.p1 5d /r /is4] AMD,SSE5 + +VFMADDSUBPS xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.m3.w0.nds.l0.p1 5c /r /is4] AMD,SSE5 +VFMADDSUBPS ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.m3.w0.nds.l1.p1 5c /r /is4] AMD,SSE5 +VFMADDSUBPS xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: vex.m3.w1.nds.l0.p1 5c /r /is4] AMD,SSE5 +VFMADDSUBPS ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: vex.m3.w1.nds.l1.p1 5c /r /is4] AMD,SSE5 + +VFMSUBADDPD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.m3.w0.nds.l0.p1 5f /r /is4] AMD,SSE5 +VFMSUBADDPD ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.m3.w0.nds.l1.p1 5f /r /is4] AMD,SSE5 +VFMSUBADDPD xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: vex.m3.w1.nds.l0.p1 5f /r /is4] AMD,SSE5 +VFMSUBADDPD ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: vex.m3.w1.nds.l1.p1 5f /r /is4] AMD,SSE5 + +VFMSUBADDPS xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.m3.w0.nds.l0.p1 5e /r /is4] AMD,SSE5 +VFMSUBADDPS ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.m3.w0.nds.l1.p1 5e /r /is4] AMD,SSE5 +VFMSUBADDPS xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: vex.m3.w1.nds.l0.p1 5e /r /is4] AMD,SSE5 +VFMSUBADDPS ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: vex.m3.w1.nds.l1.p1 5e /r /is4] AMD,SSE5 + +VFMSUBPD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.m3.w0.nds.l0.p1 6d /r /is4] AMD,SSE5 +VFMSUBPD ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.m3.w0.nds.l1.p1 6d /r /is4] AMD,SSE5 +VFMSUBPD xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: vex.m3.w1.nds.l0.p1 6d /r /is4] AMD,SSE5 +VFMSUBPD ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: vex.m3.w1.nds.l1.p1 6d /r /is4] AMD,SSE5 + +VFMSUBPS xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.m3.w0.nds.l0.p1 6c /r /is4] AMD,SSE5 +VFMSUBPS ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.m3.w0.nds.l1.p1 6c /r /is4] AMD,SSE5 +VFMSUBPS xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: vex.m3.w1.nds.l0.p1 6c /r /is4] AMD,SSE5 +VFMSUBPS ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: vex.m3.w1.nds.l1.p1 6c /r /is4] AMD,SSE5 + +VFMSUBSD xmmreg,xmmreg*,xmmrm64,xmmreg [rvms: vex.m3.w0.nds.l0.p1 6f /r /is4] AMD,SSE5 +VFMSUBSD xmmreg,xmmreg*,xmmreg,xmmrm64 [rvsm: vex.m3.w1.nds.l0.p1 6f /r /is4] AMD,SSE5 + +VFMSUBSS xmmreg,xmmreg*,xmmrm32,xmmreg [rvms: vex.m3.w0.nds.l0.p1 6e /r /is4] AMD,SSE5 +VFMSUBSS xmmreg,xmmreg*,xmmreg,xmmrm32 [rvsm: vex.m3.w1.nds.l0.p1 6e /r /is4] AMD,SSE5 + +VFNMADDPD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.m3.w0.nds.l0.p1 79 /r /is4] AMD,SSE5 +VFNMADDPD ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.m3.w0.nds.l1.p1 79 /r /is4] AMD,SSE5 +VFNMADDPD xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: vex.m3.w1.nds.l0.p1 79 /r /is4] AMD,SSE5 +VFNMADDPD ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: vex.m3.w1.nds.l1.p1 79 /r /is4] AMD,SSE5 + +VFNMADDPS xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.m3.w0.nds.l0.p1 78 /r /is4] AMD,SSE5 +VFNMADDPS ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.m3.w0.nds.l1.p1 78 /r /is4] AMD,SSE5 +VFNMADDPS xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: vex.m3.w1.nds.l0.p1 78 /r /is4] AMD,SSE5 +VFNMADDPS ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: vex.m3.w1.nds.l1.p1 78 /r /is4] AMD,SSE5 + +VFNMADDSD xmmreg,xmmreg*,xmmrm64,xmmreg [rvms: vex.m3.w0.nds.l0.p1 7b /r /is4] AMD,SSE5 +VFNMADDSD xmmreg,xmmreg*,xmmreg,xmmrm64 [rvsm: vex.m3.w1.nds.l0.p1 7b /r /is4] AMD,SSE5 + +VFNMADDSS xmmreg,xmmreg*,xmmrm32,xmmreg [rvms: vex.m3.w0.nds.l0.p1 7a /r /is4] AMD,SSE5 +VFNMADDSS xmmreg,xmmreg*,xmmreg,xmmrm32 [rvsm: vex.m3.w1.nds.l0.p1 7a /r /is4] AMD,SSE5 + +VFNMSUBPD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.m3.w0.nds.l0.p1 7d /r /is4] AMD,SSE5 +VFNMSUBPD ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.m3.w0.nds.l1.p1 7d /r /is4] AMD,SSE5 +VFNMSUBPD xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: vex.m3.w1.nds.l0.p1 7d /r /is4] AMD,SSE5 +VFNMSUBPD ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: vex.m3.w1.nds.l1.p1 7d /r /is4] AMD,SSE5 + +VFNMSUBPS xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: vex.m3.w0.nds.l0.p1 7c /r /is4] AMD,SSE5 +VFNMSUBPS ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.m3.w0.nds.l1.p1 7c /r /is4] AMD,SSE5 +VFNMSUBPS xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: vex.m3.w1.nds.l0.p1 7c /r /is4] AMD,SSE5 +VFNMSUBPS ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: vex.m3.w1.nds.l1.p1 7c /r /is4] AMD,SSE5 + +VFNMSUBSD xmmreg,xmmreg*,xmmrm64,xmmreg [rvms: vex.m3.w0.nds.l0.p1 7f /r /is4] AMD,SSE5 +VFNMSUBSD xmmreg,xmmreg*,xmmreg,xmmrm64 [rvsm: vex.m3.w1.nds.l0.p1 7f /r /is4] AMD,SSE5 + +VFNMSUBSS xmmreg,xmmreg*,xmmrm32,xmmreg [rvms: vex.m3.w0.nds.l0.p1 7e /r /is4] AMD,SSE5 +VFNMSUBSS xmmreg,xmmreg*,xmmreg,xmmrm32 [rvsm: vex.m3.w1.nds.l0.p1 7e /r /is4] AMD,SSE5 + +VFRCZPD xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 81 /r] AMD,SSE5 +VFRCZPD ymmreg,ymmrm256* [rm: xop.m9.w0.l1.p0 81 /r] AMD,SSE5 + +VFRCZPS xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 80 /r] AMD,SSE5 +VFRCZPS ymmreg,ymmrm256* [rm: xop.m9.w0.l1.p0 80 /r] AMD,SSE5 + +VFRCZSD xmmreg,xmmrm64* [rm: xop.m9.w0.l0.p0 83 /r] AMD,SSE5 + +VFRCZSS xmmreg,xmmrm32* [rm: xop.m9.w0.l0.p0 82 /r] AMD,SSE5 +; +; fixed: spec mention imm[7:4] though it should be /is4 even in spec +VPCMOV xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 a2 /r /is4] AMD,SSE5 +VPCMOV ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: xop.m8.w0.nds.l1.p0 a2 /r /is4] AMD,SSE5 +VPCMOV xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: xop.m8.w1.nds.l0.p0 a2 /r /is4] AMD,SSE5 +VPCMOV ymmreg,ymmreg*,ymmreg,ymmrm256 [rvsm: xop.m8.w1.nds.l1.p0 a2 /r /is4] AMD,SSE5 + +VPCOMB xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: xop.m8.w0.nds.l0.p0 cc /r ib] AMD,SSE5 +VPCOMD xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: xop.m8.w0.nds.l0.p0 ce /r ib] AMD,SSE5 +VPCOMQ xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: xop.m8.w0.nds.l0.p0 cf /r ib] AMD,SSE5 +; +; fixed: spec mention only 3 operands in mnemonics +VPCOMUB xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: xop.m8.w0.nds.l0.p0 ec /r ib] AMD,SSE5 +VPCOMUD xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: xop.m8.w0.nds.l0.p0 ee /r ib] AMD,SSE5 +VPCOMUQ xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: xop.m8.w0.nds.l0.p0 ef /r ib] AMD,SSE5 +; +; fixed: spec point wrong VPCOMB in mnemonic +VPCOMUW xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: xop.m8.w0.nds.l0.p0 ed /r ib] AMD,SSE5 +VPCOMW xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: xop.m8.w0.nds.l0.p0 cd /r ib] AMD,SSE5 + +VPHADDBD xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 c2 /r] AMD,SSE5 +VPHADDBQ xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 c3 /r] AMD,SSE5 +VPHADDBW xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 c1 /r] AMD,SSE5 +VPHADDDQ xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 cb /r] AMD,SSE5 +; +; fixed: spec has ymmreg for l0 +VPHADDUBD xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 d2 /r] AMD,SSE5 +VPHADDUBQ xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 d3 /r] AMD,SSE5 +; +; fixed: spec has VPHADDUBWD +VPHADDUBW xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 d1 /r] AMD,SSE5 +; +; fixed: opcode db +VPHADDUDQ xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 db /r] AMD,SSE5 +VPHADDUWD xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 d6 /r] AMD,SSE5 +VPHADDUWQ xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 d7 /r] AMD,SSE5 +; +; fixed: spec has ymmreg for l0 +VPHADDWD xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 c6 /r] AMD,SSE5 +; +; fixed: spec has d7 opcode +VPHADDWQ xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 c7 /r] AMD,SSE5 + +VPHSUBBW xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 e1 /r] AMD,SSE5 +VPHSUBDQ xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 e3 /r] AMD,SSE5 +VPHSUBWD xmmreg,xmmrm128* [rm: xop.m9.w0.l0.p0 e2 /r] AMD,SSE5 + +VPMACSDD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 9e /r /is4] AMD,SSE5 +; +; fixed: spec has 97,9f opcodes here +VPMACSDQH xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 9f /r /is4] AMD,SSE5 +VPMACSDQL xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 97 /r /is4] AMD,SSE5 +VPMACSSDD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 8e /r /is4] AMD,SSE5 +VPMACSSDQH xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 8f /r /is4] AMD,SSE5 +VPMACSSDQL xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 87 /r /is4] AMD,SSE5 +VPMACSSWD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 86 /r /is4] AMD,SSE5 +VPMACSSWW xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 85 /r /is4] AMD,SSE5 +VPMACSWD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 96 /r /is4] AMD,SSE5 +VPMACSWW xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 95 /r /is4] AMD,SSE5 +VPMADCSSWD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 a6 /r /is4] AMD,SSE5 +VPMADCSWD xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 b6 /r /is4] AMD,SSE5 + +VPPERM xmmreg,xmmreg*,xmmreg,xmmrm128 [rvsm: xop.m8.w1.nds.l0.p0 a3 /r /is4] AMD,SSE5 +VPPERM xmmreg,xmmreg*,xmmrm128,xmmreg [rvms: xop.m8.w0.nds.l0.p0 a3 /r /is4] AMD,SSE5 + +VPROTB xmmreg,xmmrm128*,xmmreg [rmv: xop.m9.w0.nds.l0.p0 90 /r] AMD,SSE5 +VPROTB xmmreg,xmmreg*,xmmrm128 [rvm: xop.m9.w1.nds.l0.p0 90 /r] AMD,SSE5 +; +; fixed: spec point xmmreg instead of reg/mem +VPROTB xmmreg,xmmrm128*,imm8 [rmi: xop.m8.w0.l0.p0 c0 /r ib] AMD,SSE5 + +VPROTD xmmreg,xmmrm128*,xmmreg [rmv: xop.m9.w0.nds.l0.p0 92 /r] AMD,SSE5 +VPROTD xmmreg,xmmreg*,xmmrm128 [rvm: xop.m9.w1.nds.l0.p0 92 /r] AMD,SSE5 +; +; fixed: spec error /r is needed +VPROTD xmmreg,xmmrm128*,imm8 [rmi: xop.m8.w0.l0.p0 c2 /r ib] AMD,SSE5 +VPROTQ xmmreg,xmmrm128*,xmmreg [rmv: xop.m9.w0.nds.l0.p0 93 /r] AMD,SSE5 +VPROTQ xmmreg,xmmreg*,xmmrm128 [rvm: xop.m9.w1.nds.l0.p0 93 /r] AMD,SSE5 +; +; fixed: spec error /r is needed +VPROTQ xmmreg,xmmrm128*,imm8 [rmi: xop.m8.w0.l0.p0 c3 /r ib] AMD,SSE5 +VPROTW xmmreg,xmmrm128*,xmmreg [rmv: xop.m9.w0.nds.l0.p0 91 /r] AMD,SSE5 +VPROTW xmmreg,xmmreg*,xmmrm128 [rvm: xop.m9.w1.nds.l0.p0 91 /r] AMD,SSE5 +VPROTW xmmreg,xmmrm128*,imm8 [rmi: xop.m8.w0.l0.p0 c1 /r ib] AMD,SSE5 + +VPSHAB xmmreg,xmmrm128*,xmmreg [rmv: xop.m9.w0.nds.l0.p0 98 /r] AMD,SSE5 +VPSHAB xmmreg,xmmreg*,xmmrm128 [rvm: xop.m9.w1.nds.l0.p0 98 /r] AMD,SSE5 + +VPSHAD xmmreg,xmmrm128*,xmmreg [rmv: xop.m9.w0.nds.l0.p0 9a /r] AMD,SSE5 +VPSHAD xmmreg,xmmreg*,xmmrm128 [rvm: xop.m9.w1.nds.l0.p0 9a /r] AMD,SSE5 + +VPSHAQ xmmreg,xmmrm128*,xmmreg [rmv: xop.m9.w0.nds.l0.p0 9b /r] AMD,SSE5 +VPSHAQ xmmreg,xmmreg*,xmmrm128 [rvm: xop.m9.w1.nds.l0.p0 9b /r] AMD,SSE5 + +VPSHAW xmmreg,xmmrm128*,xmmreg [rmv: xop.m9.w0.nds.l0.p0 99 /r] AMD,SSE5 +VPSHAW xmmreg,xmmreg*,xmmrm128 [rvm: xop.m9.w1.nds.l0.p0 99 /r] AMD,SSE5 + +VPSHLB xmmreg,xmmrm128*,xmmreg [rmv: xop.m9.w0.nds.l0.p0 94 /r] AMD,SSE5 +VPSHLB xmmreg,xmmreg*,xmmrm128 [rvm: xop.m9.w1.nds.l0.p0 94 /r] AMD,SSE5 + +; +; fixed: spec has ymmreg for l0 +VPSHLD xmmreg,xmmrm128*,xmmreg [rmv: xop.m9.w0.nds.l0.p0 96 /r] AMD,SSE5 +VPSHLD xmmreg,xmmreg*,xmmrm128 [rvm: xop.m9.w1.nds.l0.p0 96 /r] AMD,SSE5 + +VPSHLQ xmmreg,xmmrm128*,xmmreg [rmv: xop.m9.w0.nds.l0.p0 97 /r] AMD,SSE5 +VPSHLQ xmmreg,xmmreg*,xmmrm128 [rvm: xop.m9.w1.nds.l0.p0 97 /r] AMD,SSE5 + +VPSHLW xmmreg,xmmrm128*,xmmreg [rmv: xop.m9.w0.nds.l0.p0 95 /r] AMD,SSE5 +VPSHLW xmmreg,xmmreg*,xmmrm128 [rvm: xop.m9.w1.nds.l0.p0 95 /r] AMD,SSE5 + +;# Intel AVX2 instructions +; +; based on pub number 319433-011 dated July 2011 +; +VMPSADBW ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f3a 42 /r ib] FUTURE,AVX2 +VPABSB ymmreg,ymmrm256 [rm: vex.256.66.0f38 1c /r] FUTURE,AVX2 +VPABSW ymmreg,ymmrm256 [rm: vex.256.66.0f38 1d /r] FUTURE,AVX2 +VPABSD ymmreg,ymmrm256 [rm: vex.256.66.0f38 1e /r] FUTURE,AVX2 +VPACKSSWB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 63 /r] FUTURE,AVX2 +VPACKSSDW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 6b /r] FUTURE,AVX2 +VPACKUSDW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 2b /r] FUTURE,AVX2 +VPACKUSWB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 67 /r] FUTURE,AVX2 +VPADDB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f fc /r] FUTURE,AVX2 +VPADDW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f fd /r] FUTURE,AVX2 +VPADDD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f fe /r] FUTURE,AVX2 +VPADDQ ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f d4 /r] FUTURE,AVX2 +VPADDSB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f ec /r] FUTURE,AVX2 +VPADDSW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f ed /r] FUTURE,AVX2 +VPADDUSB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f dc /r] FUTURE,AVX2 +VPADDUSW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f dd /r] FUTURE,AVX2 +VPALIGNR ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f3a 0f /r ib] FUTURE,AVX2 +VPAND ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f db /r] FUTURE,AVX2 +VPANDN ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f df /r] FUTURE,AVX2 +VPAVGB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f e0 /r] FUTURE,AVX2 +VPAVGW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f e3 /r] FUTURE,AVX2 +VPBLENDVB ymmreg,ymmreg*,ymmrm256,ymmreg [rvms: vex.nds.256.66.0f3a 4c /r /is4] FUTURE,AVX2 +VPBLENDW ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f3a 0e /r ib] FUTURE,AVX2 +VPCMPEQB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 74 /r] FUTURE,AVX2 +VPCMPEQW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 75 /r] FUTURE,AVX2 +VPCMPEQD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 76 /r] FUTURE,AVX2 +VPCMPEQQ ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 29 /r] FUTURE,AVX2 +VPCMPGTB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 64 /r] FUTURE,AVX2 +VPCMPGTW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 65 /r] FUTURE,AVX2 +VPCMPGTD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 66 /r] FUTURE,AVX2 +VPCMPGTQ ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 37 /r] FUTURE,AVX2 +VPHADDW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 01 /r] FUTURE,AVX2 +VPHADDD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 02 /r] FUTURE,AVX2 +VPHADDSW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 03 /r] FUTURE,AVX2 +VPHSUBW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 05 /r] FUTURE,AVX2 +VPHSUBD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 06 /r] FUTURE,AVX2 +VPHSUBSW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 07 /r] FUTURE,AVX2 +VPMADDUBSW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 04 /r] FUTURE,AVX2 +VPMADDWD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f f5 /r] FUTURE,AVX2 +VPMAXSB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 3c /r] FUTURE,AVX2 +VPMAXSW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f ee /r] FUTURE,AVX2 +VPMAXSD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 3d /r] FUTURE,AVX2 +VPMAXUB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f de /r] FUTURE,AVX2 +VPMAXUW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 3e /r] FUTURE,AVX2 +VPMAXUD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 3f /r] FUTURE,AVX2 +VPMINSB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 38 /r] FUTURE,AVX2 +VPMINSW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f ea /r] FUTURE,AVX2 +VPMINSD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 39 /r] FUTURE,AVX2 +VPMINUB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f da /r] FUTURE,AVX2 +VPMINUW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 3a /r] FUTURE,AVX2 +VPMINUD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 3b /r] FUTURE,AVX2 +VPMOVMSKB reg32,ymmreg [rm: vex.256.66.0f d7 /r] FUTURE,AVX2 +VPMOVMSKB reg64,ymmreg [rm: vex.256.66.0f d7 /r] FUTURE,AVX2 +VPMOVSXBW ymmreg,xmmrm128 [rm: vex.256.66.0f38 20 /r] FUTURE,AVX2 +VPMOVSXBD ymmreg,mem64 [rm: vex.256.66.0f38 21 /r] FUTURE,AVX2 +VPMOVSXBD ymmreg,xmmreg [rm: vex.256.66.0f38 21 /r] FUTURE,AVX2 +VPMOVSXBQ ymmreg,mem32 [rm: vex.256.66.0f38 22 /r] FUTURE,AVX2 +VPMOVSXBQ ymmreg,xmmreg [rm: vex.256.66.0f38 22 /r] FUTURE,AVX2 +VPMOVSXWD ymmreg,xmmrm128 [rm: vex.256.66.0f38 23 /r] FUTURE,AVX2 +VPMOVSXWQ ymmreg,mem64 [rm: vex.256.66.0f38 24 /r] FUTURE,AVX2 +VPMOVSXWQ ymmreg,xmmreg [rm: vex.256.66.0f38 24 /r] FUTURE,AVX2 +VPMOVSXDQ ymmreg,xmmrm128 [rm: vex.256.66.0f38 25 /r] FUTURE,AVX2 +VPMOVZXBW ymmreg,xmmrm128 [rm: vex.256.66.0f38 30 /r] FUTURE,AVX2 +VPMOVZXBD ymmreg,mem64 [rm: vex.256.66.0f38 31 /r] FUTURE,AVX2 +VPMOVZXBD ymmreg,xmmreg [rm: vex.256.66.0f38 31 /r] FUTURE,AVX2 +VPMOVZXBQ ymmreg,mem32 [rm: vex.256.66.0f38 32 /r] FUTURE,AVX2 +VPMOVZXBQ ymmreg,xmmreg [rm: vex.256.66.0f38 32 /r] FUTURE,AVX2 +VPMOVZXWD ymmreg,xmmrm128 [rm: vex.256.66.0f38 33 /r] FUTURE,AVX2 +VPMOVZXWQ ymmreg,mem64 [rm: vex.256.66.0f38 34 /r] FUTURE,AVX2 +VPMOVZXWQ ymmreg,xmmreg [rm: vex.256.66.0f38 34 /r] FUTURE,AVX2 +VPMOVZXDQ ymmreg,xmmrm128 [rm: vex.256.66.0f38 35 /r] FUTURE,AVX2 +VPMULDQ ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 28 /r] FUTURE,AVX2 +VPMULHRSW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 0b /r] FUTURE,AVX2 +VPMULHUW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f e4 /r] FUTURE,AVX2 +VPMULHW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f e5 /r] FUTURE,AVX2 +VPMULLW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f d5 /r] FUTURE,AVX2 +VPMULLD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 40 /r] FUTURE,AVX2 +VPMULUDQ ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f f4 /r] FUTURE,AVX2 +VPOR ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f eb /r] FUTURE,AVX2 +VPSADBW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f f6 /r] FUTURE,AVX2 +VPSHUFB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 00 /r] FUTURE,AVX2 +VPSHUFD ymmreg,ymmrm256,imm8 [rmi: vex.256.66.0f 70 /r ib] FUTURE,AVX2 +VPSHUFHW ymmreg,ymmrm256,imm8 [rmi: vex.256.f3.0f 70 /r ib] FUTURE,AVX2 +VPSHUFLW ymmreg,ymmrm256,imm8 [rmi: vex.256.f2.0f 70 /r ib] FUTURE,AVX2 +VPSIGNB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 08 /r] FUTURE,AVX2 +VPSIGNW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 09 /r] FUTURE,AVX2 +VPSIGND ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38 0a /r] FUTURE,AVX2 +VPSLLDQ ymmreg,ymmreg*,imm8 [vmi: vex.ndd.256.66.0f 73 /7 ib] FUTURE,AVX2 +VPSLLW ymmreg,ymmreg*,xmmrm128 [rvm: vex.nds.256.66.0f f1 /r] FUTURE,AVX2 +VPSLLW ymmreg,ymmreg*,imm8 [vmi: vex.ndd.256.66.0f 71 /6 ib] FUTURE,AVX2 +VPSLLD ymmreg,ymmreg*,xmmrm128 [rvm: vex.nds.256.66.0f f2 /r] FUTURE,AVX2 +VPSLLD ymmreg,ymmreg*,imm8 [vmi: vex.ndd.256.66.0f 72 /6 ib] FUTURE,AVX2 +VPSLLQ ymmreg,ymmreg*,xmmrm128 [rvm: vex.nds.256.66.0f f3 /r] FUTURE,AVX2 +VPSLLQ ymmreg,ymmreg*,imm8 [vmi: vex.ndd.256.66.0f 73 /6 ib] FUTURE,AVX2 +VPSRAW ymmreg,ymmreg*,xmmrm128 [rvm: vex.nds.256.66.0f e1 /r] FUTURE,AVX2 +VPSRAW ymmreg,ymmreg*,imm8 [vmi: vex.ndd.256.66.0f 71 /4 ib] FUTURE,AVX2 +VPSRAD ymmreg,ymmreg*,xmmrm128 [rvm: vex.nds.256.66.0f e2 /r] FUTURE,AVX2 +VPSRAD ymmreg,ymmreg*,imm8 [vmi: vex.ndd.256.66.0f 72 /4 ib] FUTURE,AVX2 +VPSRLDQ ymmreg,ymmreg*,imm8 [vmi: vex.ndd.256.66.0f 73 /3 ib] FUTURE,AVX2 +VPSRLW ymmreg,ymmreg*,xmmrm128 [rvm: vex.nds.256.66.0f d1 /r] FUTURE,AVX2 +VPSRLW ymmreg,ymmreg*,imm8 [vmi: vex.ndd.256.66.0f 71 /2 ib] FUTURE,AVX2 +VPSRLD ymmreg,ymmreg*,xmmrm128 [rvm: vex.nds.256.66.0f d2 /r] FUTURE,AVX2 +VPSRLD ymmreg,ymmreg*,imm8 [vmi: vex.ndd.256.66.0f 72 /2 ib] FUTURE,AVX2 +VPSRLQ ymmreg,ymmreg*,xmmrm128 [rvm: vex.nds.256.66.0f d3 /r] FUTURE,AVX2 +VPSRLQ ymmreg,ymmreg*,imm8 [vmi: vex.ndd.256.66.0f.wig 73 /2 ib] FUTURE,AVX2 +VPSUBB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f f8 /r] FUTURE,AVX2 +VPSUBW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f f9 /r] FUTURE,AVX2 +VPSUBD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f fa /r] FUTURE,AVX2 +VPSUBQ ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f fb /r] FUTURE,AVX2 +VPSUBSB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f e8 /r] FUTURE,AVX2 +VPSUBSW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f e9 /r] FUTURE,AVX2 +VPSUBUSB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f d8 /r] FUTURE,AVX2 +VPSUBUSW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f d9 /r] FUTURE,AVX2 +VPUNPCKHBW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 68 /r] FUTURE,AVX2 +VPUNPCKHWD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 69 /r] FUTURE,AVX2 +VPUNPCKHDQ ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 6a /r] FUTURE,AVX2 +VPUNPCKHQDQ ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 6d /r] FUTURE,AVX2 +VPUNPCKLBW ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 60 /r] FUTURE,AVX2 +VPUNPCKLWD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 61 /r] FUTURE,AVX2 +VPUNPCKLDQ ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 62 /r] FUTURE,AVX2 +VPUNPCKLQDQ ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f 6c /r] FUTURE,AVX2 +VPXOR ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f ef /r] FUTURE,AVX2 +VMOVNTDQA ymmreg,mem256 [rm: vex.256.66.0f38 2a /r] FUTURE,AVX2 +VBROADCASTSS xmmreg,xmmreg [rm: vex.128.66.0f38.w0 18 /r] FUTURE,AVX2 +VBROADCASTSS ymmreg,xmmreg [rm: vex.256.66.0f38.w0 18 /r] FUTURE,AVX2 +VBROADCASTSD ymmreg,xmmreg [rm: vex.256.66.0f38.w0 19 /r] FUTURE,AVX2 +VBROADCASTI128 ymmreg,mem128 [rm: vex.256.66.0f38.w0 5a /r] FUTURE,AVX2 +VPBLENDD xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a.w0 02 /r ib] FUTURE,AVX2 +VPBLENDD ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f3a.w0 02 /r ib] FUTURE,AVX2 +VPBROADCASTB xmmreg,mem8 [rm: vex.128.66.0f38.w0 78 /r] FUTURE,AVX2 +VPBROADCASTB xmmreg,xmmreg [rm: vex.128.66.0f38.w0 78 /r] FUTURE,AVX2 +VPBROADCASTB ymmreg,mem8 [rm: vex.256.66.0f38.w0 78 /r] FUTURE,AVX2 +VPBROADCASTB ymmreg,xmmreg [rm: vex.256.66.0f38.w0 78 /r] FUTURE,AVX2 +VPBROADCASTW xmmreg,mem16 [rm: vex.128.66.0f38.w0 79 /r] FUTURE,AVX2 +VPBROADCASTW xmmreg,xmmreg [rm: vex.128.66.0f38.w0 79 /r] FUTURE,AVX2 +VPBROADCASTW ymmreg,mem16 [rm: vex.256.66.0f38.w0 79 /r] FUTURE,AVX2 +VPBROADCASTW ymmreg,xmmreg [rm: vex.256.66.0f38.w0 79 /r] FUTURE,AVX2 +VPBROADCASTD xmmreg,mem32 [rm: vex.128.66.0f38.w0 58 /r] FUTURE,AVX2 +VPBROADCASTD xmmreg,xmmreg [rm: vex.128.66.0f38.w0 58 /r] FUTURE,AVX2 +VPBROADCASTD ymmreg,mem32 [rm: vex.256.66.0f38.w0 58 /r] FUTURE,AVX2 +VPBROADCASTD ymmreg,xmmreg [rm: vex.256.66.0f38.w0 58 /r] FUTURE,AVX2 +VPBROADCASTQ xmmreg,mem64 [rm: vex.128.66.0f38.w0 59 /r] FUTURE,AVX2 +VPBROADCASTQ xmmreg,xmmreg [rm: vex.128.66.0f38.w0 59 /r] FUTURE,AVX2 +VPBROADCASTQ ymmreg,mem64 [rm: vex.256.66.0f38.w0 59 /r] FUTURE,AVX2 +VPBROADCASTQ ymmreg,xmmreg [rm: vex.256.66.0f38.w0 59 /r] FUTURE,AVX2 + +VPERMD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.w0 36 /r] FUTURE,AVX2 +VPERMPD ymmreg,ymmrm256,imm8 [rmi: vex.256.66.0f3a.w1 01 /r ib] FUTURE,AVX2 +VPERMPS ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.w0 16 /r] FUTURE,AVX2 +VPERMQ ymmreg,ymmrm256,imm8 [rmi: vex.256.66.0f3a.w1 00 /r ib] FUTURE,AVX2 +VPERM2I128 ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f3a.w0 46 /r ib] FUTURE,AVX2 +VEXTRACTI128 xmmrm128,ymmreg,imm8 [mri: vex.256.66.0f3a.w0 39 /r ib] FUTURE,AVX2 + +VINSERTI128 ymmreg,ymmreg*,xmmrm128,imm8 [rvmi: vex.nds.256.66.0f3a.w0 38 /r ib] FUTURE,AVX2 +VPMASKMOVD xmmreg,xmmreg*,mem128 [rvm: vex.nds.128.66.0f38.w0 8c /r] FUTURE,AVX2 +VPMASKMOVD ymmreg,ymmreg*,mem256 [rvm: vex.nds.256.66.0f38.w0 8c /r] FUTURE,AVX2 +VPMASKMOVQ xmmreg,xmmreg*,mem128 [rvm: vex.nds.128.66.0f38.w1 8c /r] FUTURE,AVX2 +VPMASKMOVQ ymmreg,ymmreg*,mem256 [rvm: vex.nds.256.66.0f38.w1 8c /r] FUTURE,AVX2 + +VPMASKMOVD mem128,xmmreg*,xmmreg [mvr: vex.nds.128.66.0f38.w0 8e /r] FUTURE,AVX2 +VPMASKMOVD mem256,ymmreg*,ymmreg [mvr: vex.nds.256.66.0f38.w0 8e /r] FUTURE,AVX2 +VPMASKMOVQ mem128,xmmreg*,xmmreg [mvr: vex.nds.128.66.0f38.w1 8e /r] FUTURE,AVX2 +VPMASKMOVQ mem256,ymmreg*,ymmreg [mvr: vex.nds.256.66.0f38.w1 8e /r] FUTURE,AVX2 + +VPSLLVD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38.w0 47 /r] FUTURE,AVX2 +VPSLLVQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38.w1 47 /r] FUTURE,AVX2 +VPSLLVD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.w0 47 /r] FUTURE,AVX2 +VPSLLVQ ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.w1 47 /r] FUTURE,AVX2 + +VPSRAVD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38.w0 46 /r] FUTURE,AVX2 +VPSRAVD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.w0 46 /r] FUTURE,AVX2 + +VPSRLVD xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38.w0 45 /r] FUTURE,AVX2 +VPSRLVQ xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38.w1 45 /r] FUTURE,AVX2 +VPSRLVD ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.w0 45 /r] FUTURE,AVX2 +VPSRLVQ ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.w1 45 /r] FUTURE,AVX2 + +VGATHERDPD xmmreg,xmem64,xmmreg [rmv: vm32x vex.dds.128.66.0f38.w1 92 /r] FUTURE,AVX2 +VGATHERQPD xmmreg,xmem64,xmmreg [rmv: vm64x vex.dds.128.66.0f38.w1 93 /r] FUTURE,AVX2 +VGATHERDPD ymmreg,xmem64,ymmreg [rmv: vm32x vex.dds.256.66.0f38.w1 92 /r] FUTURE,AVX2 +VGATHERQPD ymmreg,ymem64,ymmreg [rmv: vm64y vex.dds.256.66.0f38.w1 93 /r] FUTURE,AVX2 + +VGATHERDPS xmmreg,xmem32,xmmreg [rmv: vm32x vex.dds.128.66.0f38.w0 92 /r] FUTURE,AVX2 +VGATHERQPS xmmreg,xmem32,xmmreg [rmv: vm64x vex.dds.128.66.0f38.w0 93 /r] FUTURE,AVX2 +VGATHERDPS ymmreg,ymem32,ymmreg [rmv: vm32y vex.dds.256.66.0f38.w0 92 /r] FUTURE,AVX2 +VGATHERQPS xmmreg,ymem32,xmmreg [rmv: vm64y vex.dds.256.66.0f38.w0 93 /r] FUTURE,AVX2 + +VPGATHERDD xmmreg,xmem32,xmmreg [rmv: vm32x vex.dds.128.66.0f38.w0 90 /r] FUTURE,AVX2 +VPGATHERQD xmmreg,xmem32,xmmreg [rmv: vm64x vex.dds.128.66.0f38.w0 91 /r] FUTURE,AVX2 +VPGATHERDD ymmreg,ymem32,ymmreg [rmv: vm32y vex.dds.256.66.0f38.w0 90 /r] FUTURE,AVX2 +VPGATHERQD xmmreg,ymem32,xmmreg [rmv: vm64y vex.dds.256.66.0f38.w0 91 /r] FUTURE,AVX2 + +VPGATHERDQ xmmreg,xmem64,xmmreg [rmv: vm32x vex.dds.128.66.0f38.w1 90 /r] FUTURE,AVX2 +VPGATHERQQ xmmreg,xmem64,xmmreg [rmv: vm64x vex.dds.128.66.0f38.w1 91 /r] FUTURE,AVX2 +VPGATHERDQ ymmreg,xmem64,ymmreg [rmv: vm32x vex.dds.256.66.0f38.w1 90 /r] FUTURE,AVX2 +VPGATHERQQ ymmreg,ymem64,ymmreg [rmv: vm64y vex.dds.256.66.0f38.w1 91 /r] FUTURE,AVX2 + +;# Intel Transactional Synchronization Extensions (TSX) +XABORT imm [i: c6 f8 ib] FUTURE,RTM +XABORT imm8 [i: c6 f8 ib] FUTURE,RTM +XBEGIN imm [i: odf c7 f8 rel] FUTURE,RTM +XBEGIN imm|near [i: odf c7 f8 rel] FUTURE,RTM,ND +XBEGIN imm16 [i: o16 c7 f8 rel] FUTURE,RTM,NOLONG +XBEGIN imm16|near [i: o16 c7 f8 rel] FUTURE,RTM,NOLONG,ND +XBEGIN imm32 [i: o32 c7 f8 rel] FUTURE,RTM,NOLONG +XBEGIN imm32|near [i: o32 c7 f8 rel] FUTURE,RTM,NOLONG,ND +XBEGIN imm64 [i: o64nw c7 f8 rel] FUTURE,RTM,LONG +XBEGIN imm64|near [i: o64nw c7 f8 rel] FUTURE,RTM,LONG,ND +XEND void [ 0f 01 d5] FUTURE,RTM +XTEST void [ 0f 01 d6] FUTURE,HLE,RTM + +;# Intel BMI1 and BMI2 instructions, AMD TBM instructions +; +; based on pub number 319433-011 dated July 2011 +; +ANDN reg32,reg32,rm32 [rvm: vex.nds.lz.0f38.w0 f2 /r] FUTURE,BMI1 +ANDN reg64,reg64,rm64 [rvm: vex.nds.lz.0f38.w1 f2 /r] LONG,FUTURE,BMI1 +BEXTR reg32,rm32,reg32 [rmv: vex.nds.lz.0f38.w0 f7 /r] FUTURE,BMI1 +BEXTR reg64,rm64,reg64 [rmv: vex.nds.lz.0f38.w1 f7 /r] LONG,FUTURE,BMI1 +BEXTR reg32,rm32,imm32 [rmi: xop.m10.lz.w0 10 /r id] FUTURE,TBM +BEXTR reg64,rm64,imm32 [rmi: xop.m10.lz.w1 10 /r id] LONG,FUTURE,TBM +BLCI reg32,rm32 [vm: xop.ndd.lz.m9.w0 02 /6] FUTURE,TBM +BLCI reg64,rm64 [vm: xop.ndd.lz.m9.w1 02 /6] LONG,FUTURE,TBM +BLCIC reg32,rm32 [vm: xop.ndd.lz.m9.w0 01 /5] FUTURE,TBM +BLCIC reg64,rm64 [vm: xop.ndd.lz.m9.w1 01 /5] LONG,FUTURE,TBM +BLSI reg32,rm32 [vm: vex.ndd.lz.0f38.w0 f3 /3] FUTURE,BMI1 +BLSI reg64,rm64 [vm: vex.ndd.lz.0f38.w1 f3 /3] LONG,FUTURE,BMI1 +BLSIC reg32,rm32 [vm: xop.ndd.lz.m9.w0 01 /6] FUTURE,TBM +BLSIC reg64,rm64 [vm: xop.ndd.lz.m9.w1 01 /6] LONG,FUTURE,TBM +BLCFILL reg32,rm32 [vm: xop.ndd.lz.m9.w0 01 /1] FUTURE,TBM +BLCFILL reg64,rm64 [vm: xop.ndd.lz.m9.w1 01 /1] LONG,FUTURE,TBM +BLSFILL reg32,rm32 [vm: xop.ndd.lz.m9.w0 01 /2] FUTURE,TBM +BLSFILL reg64,rm64 [vm: xop.ndd.lz.m9.w1 01 /2] LONG,FUTURE,TBM +BLCMSK reg32,rm32 [vm: xop.ndd.lz.m9.w0 02 /1] FUTURE,TBM +BLCMSK reg64,rm64 [vm: xop.ndd.lz.m9.w1 02 /1] LONG,FUTURE,TBM +BLSMSK reg32,rm32 [vm: vex.ndd.lz.0f38.w0 f3 /2] FUTURE,BMI1 +BLSMSK reg64,rm64 [vm: vex.ndd.lz.0f38.w1 f3 /2] LONG,FUTURE,BMI1 +BLSR reg32,rm32 [vm: vex.ndd.lz.0f38.w0 f3 /1] FUTURE,BMI1 +BLSR reg64,rm64 [vm: vex.ndd.lz.0f38.w1 f3 /1] LONG,FUTURE,BMI1 +BLCS reg32,rm32 [vm: xop.ndd.lz.m9.w0 01 /3] FUTURE,TBM +BLCS reg64,rm64 [vm: xop.ndd.lz.m9.w1 01 /3] LONG,FUTURE,TBM +BZHI reg32,rm32,reg32 [rmv: vex.nds.lz.0f38.w0 f5 /r] FUTURE,BMI2 +BZHI reg64,rm64,reg64 [rmv: vex.nds.lz.0f38.w1 f5 /r] LONG,FUTURE,BMI2 +MULX reg32,reg32,rm32 [rvm: vex.ndd.lz.f2.0f38.w0 f6 /r] FUTURE,BMI2 +MULX reg64,reg64,rm64 [rvm: vex.ndd.lz.f2.0f38.w1 f6 /r] LONG,FUTURE,BMI2 +PDEP reg32,reg32,rm32 [rvm: vex.nds.lz.f2.0f38.w0 f5 /r] FUTURE,BMI2 +PDEP reg64,reg64,rm64 [rvm: vex.nds.lz.f2.0f38.w1 f5 /r] LONG,FUTURE,BMI2 +PEXT reg32,reg32,rm32 [rvm: vex.nds.lz.f3.0f38.w0 f5 /r] FUTURE,BMI2 +PEXT reg64,reg64,rm64 [rvm: vex.nds.lz.f3.0f38.w1 f5 /r] LONG,FUTURE,BMI2 +RORX reg32,rm32,imm8 [rmi: vex.lz.f2.0f3a.w0 f0 /r ib] FUTURE,BMI2 +RORX reg64,rm64,imm8 [rmi: vex.lz.f2.0f3a.w1 f0 /r ib] LONG,FUTURE,BMI2 +SARX reg32,rm32,reg32 [rmv: vex.nds.lz.f3.0f38.w0 f7 /r] FUTURE,BMI2 +SARX reg64,rm64,reg64 [rmv: vex.nds.lz.f3.0f38.w1 f7 /r] LONG,FUTURE,BMI2 +SHLX reg32,rm32,reg32 [rmv: vex.nds.lz.66.0f38.w0 f7 /r] FUTURE,BMI2 +SHLX reg64,rm64,reg64 [rmv: vex.nds.lz.66.0f38.w1 f7 /r] LONG,FUTURE,BMI2 +SHRX reg32,rm32,reg32 [rmv: vex.nds.lz.f2.0f38.w0 f7 /r] FUTURE,BMI2 +SHRX reg64,rm64,reg64 [rmv: vex.nds.lz.f2.0f38.w1 f7 /r] LONG,FUTURE,BMI2 +TZCNT reg16,rm16 [rm: o16 f3i 0f bc /r] FUTURE,BMI1 +TZCNT reg32,rm32 [rm: o32 f3i 0f bc /r] FUTURE,BMI1 +TZCNT reg64,rm64 [rm: o64 f3i 0f bc /r] LONG,FUTURE,BMI1 +TZMSK reg32,rm32 [vm: xop.ndd.lz.m9.w0 01 /4] FUTURE,TBM +TZMSK reg64,rm64 [vm: xop.ndd.lz.m9.w1 01 /4] LONG,FUTURE,TBM +T1MSKC reg32,rm32 [vm: xop.ndd.lz.m9.w0 01 /7] FUTURE,TBM +T1MSKC reg64,rm64 [vm: xop.ndd.lz.m9.w1 01 /7] LONG,FUTURE,TBM + +PREFETCHWT1 mem8 [m: 0f 0d /2 ] PREFETCHWT1,FUTURE + +;# Intel Memory Protection Extensions (MPX) +BNDMK bndreg,mem [rm: f3 0f 1b /r ] MPX,MIB,FUTURE +BNDCL bndreg,mem [rm: f3 0f 1a /r ] MPX,FUTURE +BNDCL bndreg,reg32 [rm: f3 0f 1a /r ] MPX,NOLONG,FUTURE +BNDCL bndreg,reg64 [rm: o64nw f3 0f 1a /r ] MPX,LONG,FUTURE +BNDCU bndreg,mem [rm: f2 0f 1a /r ] MPX,FUTURE +BNDCU bndreg,reg32 [rm: f2 0f 1a /r ] MPX,NOLONG,FUTURE +BNDCU bndreg,reg64 [rm: o64nw f2 0f 1a /r ] MPX,LONG,FUTURE +BNDCN bndreg,mem [rm: f2 0f 1b /r ] MPX,FUTURE +BNDCN bndreg,reg32 [rm: f2 0f 1b /r ] MPX,NOLONG,FUTURE +BNDCN bndreg,reg64 [rm: o64nw f2 0f 1b /r ] MPX,LONG,FUTURE +BNDMOV bndreg,bndreg [rm: 66 0f 1a /r ] MPX,FUTURE +BNDMOV bndreg,mem [rm: 66 0f 1a /r ] MPX,FUTURE +BNDMOV bndreg,bndreg [mr: 66 0f 1b /r ] MPX,FUTURE +BNDMOV mem,bndreg [mr: 66 0f 1b /r ] MPX,FUTURE +BNDLDX bndreg,mem [rm: 0f 1a /r ] MPX,MIB,FUTURE +BNDLDX bndreg,mem,reg32 [rmx: 0f 1a /r ] MPX,MIB,NOLONG,FUTURE +BNDLDX bndreg,mem,reg64 [rmx: 0f 1a /r ] MPX,MIB,LONG,FUTURE +BNDSTX mem,bndreg [mr: 0f 1b /r ] MPX,MIB,FUTURE +BNDSTX mem,reg32,bndreg [mxr: 0f 1b /r ] MPX,MIB,NOLONG,FUTURE +BNDSTX mem,reg64,bndreg [mxr: 0f 1b /r ] MPX,MIB,LONG,FUTURE +BNDSTX mem,bndreg,reg32 [mrx: 0f 1b /r ] MPX,MIB,NOLONG,FUTURE +BNDSTX mem,bndreg,reg64 [mrx: 0f 1b /r ] MPX,MIB,LONG,FUTURE + +;# Intel SHA acceleration instructions +SHA1MSG1 xmmreg,xmmrm128 [rm: 0f 38 c9 /r ] SHA,FUTURE +SHA1MSG2 xmmreg,xmmrm128 [rm: 0f 38 ca /r ] SHA,FUTURE +SHA1NEXTE xmmreg,xmmrm128 [rm: 0f 38 c8 /r ] SHA,FUTURE +SHA1RNDS4 xmmreg,xmmrm128,imm8 [rmi: 0f 3a cc /r ib ] SHA,FUTURE +SHA256MSG1 xmmreg,xmmrm128 [rm: 0f 38 cc /r ] SHA,FUTURE +SHA256MSG2 xmmreg,xmmrm128 [rm: 0f 38 cd /r ] SHA,FUTURE +SHA256RNDS2 xmmreg,xmmrm128,xmm0 [rm-: 0f 38 cb /r ] SHA,FUTURE +SHA256RNDS2 xmmreg,xmmrm128 [rm: 0f 38 cb /r ] SHA,FUTURE + +;# AVX no exception conversions +; Must precede AVX-512 versions +VBCSTNEBF16PS xmmreg,mem16 [rm: vex.128.f3.0f38.w0 b1 /r] AVXNECONVERT,FUTURE,LATEVEX,SW +VBCSTNEBF16PS ymmreg,mem16 [rm: vex.256.f3.0f38.w0 b1 /r] AVXNECONVERT,FUTURE,LATEVEX,SW +VBCSTNESH2PS xmmreg,mem16 [rm: vex.128.66.0f38.w0 b1 /r] AVXNECONVERT,FUTURE,LATEVEX,SW +VBCSTNESH2PS ymmreg,mem16 [rm: vex.256.66.0f38.w0 b1 /r] AVXNECONVERT,FUTURE,LATEVEX,SW +VCVTNEEBF162PS xmmreg,mem128 [rm: vex.128.f3.0f38.w0 b0 /r] AVXNECONVERT,FUTURE,LATEVEX,SX +VCVTNEEBF162PS ymmreg,mem256 [rm: vex.256.f3.0f38.w0 b0 /r] AVXNECONVERT,FUTURE,LATEVEX,SY +VCVTNEEPH2PS xmmreg,mem128 [rm: vex.128.66.0f38.w0 b0 /r] AVXNECONVERT,FUTURE,LATEVEX,SX +VCVTNEEPH2PS ymmreg,mem256 [rm: vex.256.66.0f38.w0 b0 /r] AVXNECONVERT,FUTURE,LATEVEX,SY +VCVTNEOBF162PS xmmreg,mem128 [rm: vex.128.f2.0f38.w0 b0 /r] AVXNECONVERT,FUTURE,LATEVEX,SX +VCVTNEOBF162PS ymmreg,mem256 [rm: vex.256.f2.0f38.w0 b0 /r] AVXNECONVERT,FUTURE,LATEVEX,SY +VCVTNEOPH2PS xmmreg,mem128 [rm: vex.128.np.0f38.w0 b0 /r] AVXNECONVERT,FUTURE,LATEVEX,SX +VCVTNEOPH2PS ymmreg,mem256 [rm: vex.256.np.0f38.w0 b0 /r] AVXNECONVERT,FUTURE,LATEVEX,SY +VCVTNEPS2BF16 xmmreg,xmmrm128 [rm: vex.128.f3.0f38.w0 72 /r] AVXNECONVERT,FUTURE,LATEVEX,SX +VCVTNEPS2BF16 ymmreg,ymmrm256 [rm: vex.256.f3.0f38.w0 72 /r] AVXNECONVERT,FUTURE,LATEVEX,SY + +;# AVX Vector Neural Network Instructions +; Must precede AVX-512 versions +VPDPBSSD xmmreg,xmmreg,xmmrm128 [rvm: vex.128.f2.0f38.w0 50 /r] AVXVNNIINT8,FUTURE,LATEVEX,SX +VPDPBSSD ymmreg,ymmreg,ymmrm256 [rvm: vex.256.f2.0f38.w0 50 /r] AVXVNNIINT8,FUTURE,LATEVEX,SY +VPDPBSSDS xmmreg,xmmreg,xmmrm128 [rvm: vex.128.f2.0f38.w0 51 /r] AVXVNNIINT8,FUTURE,LATEVEX,SX +VPDPBSSDS ymmreg,ymmreg,ymmrm256 [rvm: vex.256.f2.0f38.w0 51 /r] AVXVNNIINT8,FUTURE,LATEVEX,SY +VPDPBSUD xmmreg,xmmreg,xmmrm128 [rvm: vex.128.f3.0f38.w0 50 /r] AVXVNNIINT8,FUTURE,LATEVEX,SX +VPDPBSUD ymmreg,ymmreg,ymmrm256 [rvm: vex.256.f3.0f38.w0 50 /r] AVXVNNIINT8,FUTURE,LATEVEX,SY +VPDPBSUDS xmmreg,xmmreg,xmmrm128 [rvm: vex.128.f3.0f38.w0 51 /r] AVXVNNIINT8,FUTURE,LATEVEX,SX +VPDPBSUDS ymmreg,ymmreg,ymmrm256 [rvm: vex.256.f3.0f38.w0 51 /r] AVXVNNIINT8,FUTURE,LATEVEX,SY +VPDPBUUD xmmreg,xmmreg,xmmrm128 [rvm: vex.128.np.0f38.w0 50 /r] AVXVNNIINT8,FUTURE,LATEVEX,SX +VPDPBUUD ymmreg,ymmreg,ymmrm256 [rvm: vex.256.np.0f38.w0 50 /r] AVXVNNIINT8,FUTURE,LATEVEX,SY +VPDPBUUDS xmmreg,xmmreg,xmmrm128 [rvm: vex.128.np.0f38.w0 51 /r] AVXVNNIINT8,FUTURE,LATEVEX,SX +VPDPBUUDS ymmreg,ymmreg,ymmrm256 [rvm: vex.256.np.0f38.w0 51 /r] AVXVNNIINT8,FUTURE,LATEVEX,SY + +;# AVX Integer Fused Multiply-Add +; Must precede AVX-512 versions +VPMADD52HUQ xmmreg,xmmreg,xmmrm128 [rvm: vex.128.66.0f38.w1 b5 /r] AVXIFMA,FUTURE,LATEVEX,SX +VPMADD52HUQ ymmreg,ymmreg,ymmrm256 [rvm: vex.256.66.0f38.w1 b5 /r] AVXIFMA,FUTURE,LATEVEX,SY +VPMADD52LUQ xmmreg,xmmreg,xmmrm128 [rvm: vex.128.66.0f38.w1 b4 /r] AVXIFMA,FUTURE,LATEVEX,SX +VPMADD52LUQ ymmreg,ymmreg,ymmrm256 [rvm: vex.256.66.0f38.w1 b4 /r] AVXIFMA,FUTURE,LATEVEX,SY + +;# AVX-512 mask register instructions +KADDB kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 4a /r ] FUTURE +KADDD kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 4a /r ] FUTURE +KADDQ kreg,kreg,kreg [rvm: vex.nds.l1.0f.w1 4a /r ] FUTURE +KADDW kreg,kreg,kreg [rvm: vex.nds.l1.0f.w0 4a /r ] FUTURE +KANDB kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 41 /r ] FUTURE +KANDD kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 41 /r ] FUTURE +KANDNB kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 42 /r ] FUTURE +KANDND kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 42 /r ] FUTURE +KANDNQ kreg,kreg,kreg [rvm: vex.nds.l1.0f.w1 42 /r ] FUTURE +KANDNW kreg,kreg,kreg [rvm: vex.nds.l1.0f.w0 42 /r ] FUTURE +KANDQ kreg,kreg,kreg [rvm: vex.nds.l1.0f.w1 41 /r ] FUTURE +KANDW kreg,kreg,kreg [rvm: vex.nds.l1.0f.w0 41 /r ] FUTURE +KMOVB kreg,krm8 [rm: vex.l0.66.0f.w0 90 /r ] FUTURE +KMOVB mem8,kreg [mr: vex.l0.66.0f.w0 91 /r ] FUTURE +KMOVB kreg,reg32 [rm: vex.l0.66.0f.w0 92 /r ] FUTURE +KMOVB kreg,reg8 [rm: vex.l0.66.0f.w0 92 nohi /r ] FUTURE,ND +KMOVB reg32,kreg [rm: vex.l0.66.0f.w0 93 /r ] FUTURE +KMOVD kreg,krm32 [rm: vex.l0.66.0f.w1 90 /r ] FUTURE +KMOVD mem32,kreg [mr: vex.l0.66.0f.w1 91 /r ] FUTURE +KMOVD kreg,reg32 [rm: vex.l0.f2.0f.w0 92 /r ] FUTURE +KMOVD reg32,kreg [rm: vex.l0.f2.0f.w0 93 /r ] FUTURE +KMOVQ kreg,krm64 [rm: vex.l0.0f.w1 90 /r ] FUTURE +KMOVQ mem64,kreg [mr: vex.l0.0f.w1 91 /r ] FUTURE +KMOVQ kreg,reg64 [rm: vex.l0.f2.0f.w1 92 /r ] FUTURE +KMOVQ reg64,kreg [rm: vex.l0.f2.0f.w1 93 /r ] FUTURE +KMOVW kreg,krm16 [rm: vex.l0.0f.w0 90 /r ] FUTURE +KMOVW mem16,kreg [mr: vex.l0.0f.w0 91 /r ] FUTURE +KMOVW kreg,reg32 [rm: vex.l0.0f.w0 92 /r ] FUTURE +KMOVW kreg,reg16 [rm: vex.l0.0f.w0 92 /r ] FUTURE,ND +KMOVW reg32,kreg [rm: vex.l0.0f.w0 93 /r ] FUTURE +KNOTB kreg,kreg [rm: vex.l0.66.0f.w0 44 /r ] FUTURE +KNOTD kreg,kreg [rm: vex.l0.66.0f.w1 44 /r ] FUTURE +KNOTQ kreg,kreg [rm: vex.l0.0f.w1 44 /r ] FUTURE +KNOTW kreg,kreg [rm: vex.l0.0f.w0 44 /r ] FUTURE +KORB kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 45 /r ] FUTURE +KORD kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 45 /r ] FUTURE +KORQ kreg,kreg,kreg [rvm: vex.nds.l1.0f.w1 45 /r ] FUTURE +KORW kreg,kreg,kreg [rvm: vex.nds.l1.0f.w0 45 /r ] FUTURE +KORTESTB kreg,kreg [rm: vex.l0.66.0f.w0 98 /r ] FUTURE +KORTESTD kreg,kreg [rm: vex.l0.66.0f.w1 98 /r ] FUTURE +KORTESTQ kreg,kreg [rm: vex.l0.0f.w1 98 /r ] FUTURE +KORTESTW kreg,kreg [rm: vex.l0.0f.w0 98 /r ] FUTURE +KSHIFTLB kreg,kreg,imm8 [rmi: vex.l0.66.0f3a.w0 32 /r ib ] FUTURE +KSHIFTLD kreg,kreg,imm8 [rmi: vex.l0.66.0f3a.w0 33 /r ib ] FUTURE +KSHIFTLQ kreg,kreg,imm8 [rmi: vex.l0.66.0f3a.w1 33 /r ib ] FUTURE +KSHIFTLW kreg,kreg,imm8 [rmi: vex.l0.66.0f3a.w1 32 /r ib ] FUTURE +KSHIFTRB kreg,kreg,imm8 [rmi: vex.l0.66.0f3a.w0 30 /r ib ] FUTURE +KSHIFTRD kreg,kreg,imm8 [rmi: vex.l0.66.0f3a.w0 31 /r ib ] FUTURE +KSHIFTRQ kreg,kreg,imm8 [rmi: vex.l0.66.0f3a.w1 31 /r ib ] FUTURE +KSHIFTRW kreg,kreg,imm8 [rmi: vex.l0.66.0f3a.w1 30 /r ib ] FUTURE +KTESTB kreg,kreg [rm: vex.l0.66.0f.w0 99 /r ] FUTURE +KTESTD kreg,kreg [rm: vex.l0.66.0f.w1 99 /r ] FUTURE +KTESTQ kreg,kreg [rm: vex.l0.0f.w1 99 /r ] FUTURE +KTESTW kreg,kreg [rm: vex.l0.0f.w0 99 /r ] FUTURE +KUNPCKBW kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 4b /r ] FUTURE +KUNPCKDQ kreg,kreg,kreg [rvm: vex.nds.l1.0f.w1 4b /r ] FUTURE +KUNPCKWD kreg,kreg,kreg [rvm: vex.nds.l1.0f.w0 4b /r ] FUTURE +KXNORB kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 46 /r ] FUTURE +KXNORD kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 46 /r ] FUTURE +KXNORQ kreg,kreg,kreg [rvm: vex.nds.l1.0f.w1 46 /r ] FUTURE +KXNORW kreg,kreg,kreg [rvm: vex.nds.l1.0f.w0 46 /r ] FUTURE +KXORB kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 47 /r ] FUTURE +KXORD kreg,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 47 /r ] FUTURE +KXORQ kreg,kreg,kreg [rvm: vex.nds.l1.0f.w1 47 /r ] FUTURE +KXORW kreg,kreg,kreg [rvm: vex.nds.l1.0f.w0 47 /r ] FUTURE + +;# AVX-512 mask register instructions (aliases requiring explicit size support) +KADD kreg8,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 4a /r ] FUTURE,ND,SM +KADD kreg32,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 4a /r ] FUTURE,ND,SM +KADD kreg64,kreg,kreg [rvm: vex.nds.l1.0f.w1 4a /r ] FUTURE,ND,SM +KADD kreg16,kreg,kreg [rvm: vex.nds.l1.0f.w0 4a /r ] FUTURE,ND,SM +KAND kreg8,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 41 /r ] FUTURE,ND,SM +KAND kreg32,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 41 /r ] FUTURE,ND,SM +KANDN kreg64,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 42 /r ] FUTURE,ND,SM +KANDN kreg16,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 42 /r ] FUTURE,ND,SM +KANDN kreg8,kreg,kreg [rvm: vex.nds.l1.0f.w1 42 /r ] FUTURE,ND,SM +KANDN kreg32,kreg,kreg [rvm: vex.nds.l1.0f.w0 42 /r ] FUTURE,ND,SM +KAND kreg64,kreg,kreg [rvm: vex.nds.l1.0f.w1 41 /r ] FUTURE,ND,SM +KAND kreg16,kreg,kreg [rvm: vex.nds.l1.0f.w0 41 /r ] FUTURE,ND,SM +KMOV kreg8,krm8 [rm: vex.l0.66.0f.w0 90 /r ] FUTURE,ND,SM +KMOV mem8,kreg8 [mr: vex.l0.66.0f.w0 91 /r ] FUTURE,ND,SB,SM +KMOV kreg8,reg32 [rm: vex.l0.66.0f.w0 92 /r ] FUTURE,ND,SX +KMOV kreg8,reg8 [rm: vex.l0.66.0f.w0 92 /r ] FUTURE,ND,SM +KMOV reg32,kreg8 [rm: vex.l0.66.0f.w0 93 /r ] FUTURE,ND,SX +KMOV kreg32,krm32 [rm: vex.l0.66.0f.w1 90 /r ] FUTURE,ND,SM +KMOV mem32,kreg32 [mr: vex.l0.66.0f.w1 91 /r ] FUTURE,ND,SM +KMOV kreg32,reg32 [rm: vex.l0.f2.0f.w0 92 /r ] FUTURE,ND,SM +KMOV reg32,kreg32 [rm: vex.l0.f2.0f.w0 93 /r ] FUTURE,ND,SM +KMOV kreg64,krm64 [rm: vex.l0.0f.w1 90 /r ] FUTURE,ND,SM +KMOV mem64,kreg64 [mr: vex.l0.0f.w1 91 /r ] FUTURE,ND,SM +KMOV kreg64,reg64 [rm: vex.l0.f2.0f.w1 92 /r ] FUTURE,ND,SM +KMOV reg64,kreg64 [rm: vex.l0.f2.0f.w1 93 /r ] FUTURE,ND,SM +KMOV kreg16,krm16 [rm: vex.l0.0f.w0 90 /r ] FUTURE,ND,SM +KMOV mem16,kreg16 [mr: vex.l0.0f.w0 91 /r ] FUTURE,ND,SM +KMOV kreg16,reg32 [rm: vex.l0.0f.w0 92 /r ] FUTURE,ND,SX +KMOV reg32,kreg16 [rm: vex.l0.0f.w0 93 /r ] FUTURE,ND,SX +KMOV kreg16,reg32 [rm: vex.l0.0f.w0 92 /r ] FUTURE,ND,SX +KMOV kreg16,reg16 [rm: vex.l0.0f.w0 92 /r ] FUTURE,ND,SM +KNOT kreg8,kreg8 [rm: vex.l0.66.0f.w0 44 /r ] FUTURE,ND,SM +KNOT kreg32,kreg32 [rm: vex.l0.66.0f.w1 44 /r ] FUTURE,ND,SM +KNOT kreg64,kreg64 [rm: vex.l0.0f.w1 44 /r ] FUTURE,ND,SM +KNOT kreg16,kreg16 [rm: vex.l0.0f.w0 44 /r ] FUTURE,ND,SM +KOR kreg8,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 45 /r ] FUTURE,ND,SM +KOR kreg32,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 45 /r ] FUTURE,ND,SM +KOR kreg64,kreg,kreg [rvm: vex.nds.l1.0f.w1 45 /r ] FUTURE,ND,SM +KOR kreg16,kreg,kreg [rvm: vex.nds.l1.0f.w0 45 /r ] FUTURE,ND,SM +KORTEST kreg8,kreg [rm: vex.l0.66.0f.w0 98 /r ] FUTURE,ND,SM +KORTEST kreg32,kreg [rm: vex.l0.66.0f.w1 98 /r ] FUTURE,ND,SM +KORTEST kreg64,kreg [rm: vex.l0.0f.w1 98 /r ] FUTURE,ND,SM +KORTEST kreg16,kreg [rm: vex.l0.0f.w0 98 /r ] FUTURE,ND,SM +KSHIFTL kreg8,kreg,imm8 [rmi: vex.l0.66.0f3a.w0 32 /r ib ] FUTURE,ND,SM2 +KSHIFTL kreg32,kreg,imm8 [rmi: vex.l0.66.0f3a.w0 33 /r ib ] FUTURE,ND,SM2 +KSHIFTL kreg64,kreg,imm8 [rmi: vex.l0.66.0f3a.w1 33 /r ib ] FUTURE,ND,SM2 +KSHIFTL kreg16,kreg,imm8 [rmi: vex.l0.66.0f3a.w1 32 /r ib ] FUTURE,ND,SM2 +KSHIFTR kreg8,kreg,imm8 [rmi: vex.l0.66.0f3a.w0 30 /r ib ] FUTURE,ND,SM2 +KSHIFTR kreg32,kreg,imm8 [rmi: vex.l0.66.0f3a.w0 31 /r ib ] FUTURE,ND,SM2 +KSHIFTR kreg64,kreg,imm8 [rmi: vex.l0.66.0f3a.w1 31 /r ib ] FUTURE,ND,SM2 +KSHIFTR kreg16,kreg,imm8 [rmi: vex.l0.66.0f3a.w1 30 /r ib ] FUTURE,ND,SM2 +KTEST kreg8,kreg [rm: vex.l0.66.0f.w0 99 /r ] FUTURE,ND,SM +KTEST kreg32,kreg [rm: vex.l0.66.0f.w1 99 /r ] FUTURE,ND,SM +KTEST kreg64,kreg [rm: vex.l0.0f.w1 99 /r ] FUTURE,ND,SM +KTEST kreg16,kreg [rm: vex.l0.0f.w0 99 /r ] FUTURE,ND,SM +KUNPCK kreg16,kreg8,kreg8 [rvm: vex.nds.l1.66.0f.w0 4b /r ] FUTURE,ND +KUNPCK kreg64,kreg32,kreg32 [rvm: vex.nds.l1.0f.w1 4b /r ] FUTURE,ND +KUNPCK kreg32,kreg16,kreg16 [rvm: vex.nds.l1.0f.w0 4b /r ] FUTURE,ND +KXNOR kreg8,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 46 /r ] FUTURE,ND,SM +KXNOR kreg32,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 46 /r ] FUTURE,ND,SM +KXNOR kreg64,kreg,kreg [rvm: vex.nds.l1.0f.w1 46 /r ] FUTURE,ND,SM +KXNOR kreg16,kreg,kreg [rvm: vex.nds.l1.0f.w0 46 /r ] FUTURE,ND,SM +KXOR kreg8,kreg,kreg [rvm: vex.nds.l1.66.0f.w0 47 /r ] FUTURE,ND,SM +KXOR kreg32,kreg,kreg [rvm: vex.nds.l1.66.0f.w1 47 /r ] FUTURE,ND,SM +KXOR kreg64,kreg,kreg [rvm: vex.nds.l1.0f.w1 47 /r ] FUTURE,ND,SM +KXOR kreg16,kreg,kreg [rvm: vex.nds.l1.0f.w0 47 /r ] FUTURE,ND,SM + +;# AVX-512 instructions +VADDPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 58 /r ] AVX512VL,AVX512,FUTURE +VADDPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 58 /r ] AVX512VL,AVX512,FUTURE +VADDPD zmmreg|mask|z,zmmreg*,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f.w1 58 /r ] AVX512,FUTURE +VADDPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 58 /r ] AVX512VL,AVX512,FUTURE +VADDPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 58 /r ] AVX512VL,AVX512,FUTURE +VADDPS zmmreg|mask|z,zmmreg*,zmmrm512|b32|er [rvm:fv: evex.nds.512.0f.w0 58 /r ] AVX512,FUTURE +VADDSD xmmreg|mask|z,xmmreg*,xmmrm64|er [rvm:t1s: evex.nds.128.f2.0f.w1 58 /r ] AVX512,FUTURE +VADDSS xmmreg|mask|z,xmmreg*,xmmrm32|er [rvm:t1s: evex.nds.128.f3.0f.w0 58 /r ] AVX512,FUTURE +VALIGND xmmreg|mask|z,xmmreg*,xmmrm128|b32,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w0 03 /r ib ] AVX512VL,AVX512,FUTURE +VALIGND ymmreg|mask|z,ymmreg*,ymmrm256|b32,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w0 03 /r ib ] AVX512VL,AVX512,FUTURE +VALIGND zmmreg|mask|z,zmmreg*,zmmrm512|b32,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w0 03 /r ib ] AVX512,FUTURE +VALIGNQ xmmreg|mask|z,xmmreg*,xmmrm128|b64,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w1 03 /r ib ] AVX512VL,AVX512,FUTURE +VALIGNQ ymmreg|mask|z,ymmreg*,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w1 03 /r ib ] AVX512VL,AVX512,FUTURE +VALIGNQ zmmreg|mask|z,zmmreg*,zmmrm512|b64,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w1 03 /r ib ] AVX512,FUTURE +VANDNPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 55 /r ] AVX512VL,AVX512DQ,FUTURE +VANDNPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 55 /r ] AVX512VL,AVX512DQ,FUTURE +VANDNPD zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 55 /r ] AVX512DQ,FUTURE +VANDNPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 55 /r ] AVX512VL,AVX512DQ,FUTURE +VANDNPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 55 /r ] AVX512VL,AVX512DQ,FUTURE +VANDNPS zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.0f.w0 55 /r ] AVX512DQ,FUTURE +VANDPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 54 /r ] AVX512VL,AVX512DQ,FUTURE +VANDPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 54 /r ] AVX512VL,AVX512DQ,FUTURE +VANDPD zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 54 /r ] AVX512DQ,FUTURE +VANDPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 54 /r ] AVX512VL,AVX512DQ,FUTURE +VANDPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 54 /r ] AVX512VL,AVX512DQ,FUTURE +VANDPS zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.0f.w0 54 /r ] AVX512DQ,FUTURE +VBLENDMPD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 65 /r ] AVX512VL,AVX512,FUTURE +VBLENDMPD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 65 /r ] AVX512VL,AVX512,FUTURE +VBLENDMPD zmmreg|mask|z,zmmreg,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 65 /r ] AVX512,FUTURE +VBLENDMPS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 65 /r ] AVX512VL,AVX512,FUTURE +VBLENDMPS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 65 /r ] AVX512VL,AVX512,FUTURE +VBLENDMPS zmmreg|mask|z,zmmreg,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 65 /r ] AVX512,FUTURE +VBROADCASTF32X2 ymmreg|mask|z,xmmrm64 [rm:t2: evex.256.66.0f38.w0 19 /r ] AVX512VL,AVX512DQ,FUTURE +VBROADCASTF32X2 zmmreg|mask|z,xmmrm64 [rm:t2: evex.512.66.0f38.w0 19 /r ] AVX512DQ,FUTURE +VBROADCASTF32X4 ymmreg|mask|z,mem128 [rm:t4: evex.256.66.0f38.w0 1a /r ] AVX512VL,AVX512,FUTURE +VBROADCASTF32X4 zmmreg|mask|z,mem128 [rm:t4: evex.512.66.0f38.w0 1a /r ] AVX512,FUTURE +VBROADCASTF32X8 zmmreg|mask|z,mem256 [rm:t8: evex.512.66.0f38.w0 1b /r ] AVX512DQ,FUTURE +VBROADCASTF64X2 ymmreg|mask|z,mem128 [rm:t2: evex.256.66.0f38.w1 1a /r ] AVX512VL,AVX512DQ,FUTURE +VBROADCASTF64X2 zmmreg|mask|z,mem128 [rm:t2: evex.512.66.0f38.w1 1a /r ] AVX512DQ,FUTURE +VBROADCASTF64X4 zmmreg|mask|z,mem256 [rm:t4: evex.512.66.0f38.w1 1b /r ] AVX512,FUTURE +VBROADCASTI32X2 xmmreg|mask|z,xmmrm64 [rm:t2: evex.128.66.0f38.w0 59 /r ] AVX512VL,AVX512DQ,FUTURE +VBROADCASTI32X2 ymmreg|mask|z,xmmrm64 [rm:t2: evex.256.66.0f38.w0 59 /r ] AVX512VL,AVX512DQ,FUTURE +VBROADCASTI32X2 zmmreg|mask|z,xmmrm64 [rm:t2: evex.512.66.0f38.w0 59 /r ] AVX512DQ,FUTURE +VBROADCASTI32X4 ymmreg|mask|z,mem128 [rm:t4: evex.256.66.0f38.w0 5a /r ] AVX512VL,AVX512,FUTURE +VBROADCASTI32X4 zmmreg|mask|z,mem128 [rm:t4: evex.512.66.0f38.w0 5a /r ] AVX512,FUTURE +VBROADCASTI32X8 zmmreg|mask|z,mem256 [rm:t8: evex.512.66.0f38.w0 5b /r ] AVX512DQ,FUTURE +VBROADCASTI64X2 ymmreg|mask|z,mem128 [rm:t2: evex.256.66.0f38.w1 5a /r ] AVX512VL,AVX512DQ,FUTURE +VBROADCASTI64X2 zmmreg|mask|z,mem128 [rm:t2: evex.512.66.0f38.w1 5a /r ] AVX512DQ,FUTURE +VBROADCASTI64X4 zmmreg|mask|z,mem256 [rm:t4: evex.512.66.0f38.w1 5b /r ] AVX512,FUTURE +VBROADCASTSD ymmreg|mask|z,mem64 [rm:t1s: evex.256.66.0f38.w1 19 /r ] AVX512VL,AVX512,FUTURE +VBROADCASTSD zmmreg|mask|z,mem64 [rm:t1s: evex.512.66.0f38.w1 19 /r ] AVX512,FUTURE +VBROADCASTSD ymmreg|mask|z,xmmreg [rm: evex.256.66.0f38.w1 19 /r ] AVX512VL,AVX512,FUTURE +VBROADCASTSD zmmreg|mask|z,xmmreg [rm: evex.512.66.0f38.w1 19 /r ] AVX512,FUTURE +VBROADCASTSS xmmreg|mask|z,mem32 [rm:t1s: evex.128.66.0f38.w0 18 /r ] AVX512VL,AVX512,FUTURE +VBROADCASTSS ymmreg|mask|z,mem32 [rm:t1s: evex.256.66.0f38.w0 18 /r ] AVX512VL,AVX512,FUTURE +VBROADCASTSS zmmreg|mask|z,mem32 [rm:t1s: evex.512.66.0f38.w0 18 /r ] AVX512,FUTURE +VBROADCASTSS xmmreg|mask|z,xmmreg [rm: evex.128.66.0f38.w0 18 /r ] AVX512VL,AVX512,FUTURE +VBROADCASTSS ymmreg|mask|z,xmmreg [rm: evex.256.66.0f38.w0 18 /r ] AVX512VL,AVX512,FUTURE +VBROADCASTSS zmmreg|mask|z,xmmreg [rm: evex.512.66.0f38.w0 18 /r ] AVX512,FUTURE +VCMPEQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 00 ] AVX512VL,AVX512,FUTURE +VCMPEQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 00 ] AVX512VL,AVX512,FUTURE +VCMPEQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 00 ] AVX512,FUTURE +VCMPEQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 00 ] AVX512VL,AVX512,FUTURE +VCMPEQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 00 ] AVX512VL,AVX512,FUTURE +VCMPEQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 00 ] AVX512,FUTURE +VCMPEQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 00 ] AVX512,FUTURE +VCMPEQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 00 ] AVX512,FUTURE +VCMPEQ_OQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 00 ] AVX512VL,AVX512,FUTURE +VCMPEQ_OQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 00 ] AVX512VL,AVX512,FUTURE +VCMPEQ_OQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 00 ] AVX512,FUTURE +VCMPEQ_OQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 00 ] AVX512VL,AVX512,FUTURE +VCMPEQ_OQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 00 ] AVX512VL,AVX512,FUTURE +VCMPEQ_OQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 00 ] AVX512,FUTURE +VCMPEQ_OQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 00 ] AVX512,FUTURE +VCMPEQ_OQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 00 ] AVX512,FUTURE +VCMPLTPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 01 ] AVX512VL,AVX512,FUTURE +VCMPLTPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 01 ] AVX512VL,AVX512,FUTURE +VCMPLTPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 01 ] AVX512,FUTURE +VCMPLTPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 01 ] AVX512VL,AVX512,FUTURE +VCMPLTPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 01 ] AVX512VL,AVX512,FUTURE +VCMPLTPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 01 ] AVX512,FUTURE +VCMPLTSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 01 ] AVX512,FUTURE +VCMPLTSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 01 ] AVX512,FUTURE +VCMPLT_OSPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 01 ] AVX512VL,AVX512,FUTURE +VCMPLT_OSPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 01 ] AVX512VL,AVX512,FUTURE +VCMPLT_OSPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 01 ] AVX512,FUTURE +VCMPLT_OSPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 01 ] AVX512VL,AVX512,FUTURE +VCMPLT_OSPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 01 ] AVX512VL,AVX512,FUTURE +VCMPLT_OSPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 01 ] AVX512,FUTURE +VCMPLT_OSSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 01 ] AVX512,FUTURE +VCMPLT_OSSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 01 ] AVX512,FUTURE +VCMPLEPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 02 ] AVX512VL,AVX512,FUTURE +VCMPLEPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 02 ] AVX512VL,AVX512,FUTURE +VCMPLEPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 02 ] AVX512,FUTURE +VCMPLEPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 02 ] AVX512VL,AVX512,FUTURE +VCMPLEPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 02 ] AVX512VL,AVX512,FUTURE +VCMPLEPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 02 ] AVX512,FUTURE +VCMPLESD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 02 ] AVX512,FUTURE +VCMPLESS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 02 ] AVX512,FUTURE +VCMPLE_OSPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 02 ] AVX512VL,AVX512,FUTURE +VCMPLE_OSPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 02 ] AVX512VL,AVX512,FUTURE +VCMPLE_OSPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 02 ] AVX512,FUTURE +VCMPLE_OSPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 02 ] AVX512VL,AVX512,FUTURE +VCMPLE_OSPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 02 ] AVX512VL,AVX512,FUTURE +VCMPLE_OSPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 02 ] AVX512,FUTURE +VCMPLE_OSSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 02 ] AVX512,FUTURE +VCMPLE_OSSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 02 ] AVX512,FUTURE +VCMPUNORDPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 03 ] AVX512VL,AVX512,FUTURE +VCMPUNORDPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 03 ] AVX512VL,AVX512,FUTURE +VCMPUNORDPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 03 ] AVX512,FUTURE +VCMPUNORDPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 03 ] AVX512VL,AVX512,FUTURE +VCMPUNORDPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 03 ] AVX512VL,AVX512,FUTURE +VCMPUNORDPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 03 ] AVX512,FUTURE +VCMPUNORDSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 03 ] AVX512,FUTURE +VCMPUNORDSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 03 ] AVX512,FUTURE +VCMPUNORD_QPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 03 ] AVX512VL,AVX512,FUTURE +VCMPUNORD_QPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 03 ] AVX512VL,AVX512,FUTURE +VCMPUNORD_QPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 03 ] AVX512,FUTURE +VCMPUNORD_QPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 03 ] AVX512VL,AVX512,FUTURE +VCMPUNORD_QPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 03 ] AVX512VL,AVX512,FUTURE +VCMPUNORD_QPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 03 ] AVX512,FUTURE +VCMPUNORD_QSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 03 ] AVX512,FUTURE +VCMPUNORD_QSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 03 ] AVX512,FUTURE +VCMPNEQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 04 ] AVX512VL,AVX512,FUTURE +VCMPNEQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 04 ] AVX512VL,AVX512,FUTURE +VCMPNEQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 04 ] AVX512,FUTURE +VCMPNEQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 04 ] AVX512VL,AVX512,FUTURE +VCMPNEQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 04 ] AVX512VL,AVX512,FUTURE +VCMPNEQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 04 ] AVX512,FUTURE +VCMPNEQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 04 ] AVX512,FUTURE +VCMPNEQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 04 ] AVX512,FUTURE +VCMPNEQ_UQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 04 ] AVX512VL,AVX512,FUTURE +VCMPNEQ_UQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 04 ] AVX512VL,AVX512,FUTURE +VCMPNEQ_UQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 04 ] AVX512,FUTURE +VCMPNEQ_UQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 04 ] AVX512VL,AVX512,FUTURE +VCMPNEQ_UQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 04 ] AVX512VL,AVX512,FUTURE +VCMPNEQ_UQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 04 ] AVX512,FUTURE +VCMPNEQ_UQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 04 ] AVX512,FUTURE +VCMPNEQ_UQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 04 ] AVX512,FUTURE +VCMPNLTPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 05 ] AVX512VL,AVX512,FUTURE +VCMPNLTPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 05 ] AVX512VL,AVX512,FUTURE +VCMPNLTPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 05 ] AVX512,FUTURE +VCMPNLTPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 05 ] AVX512VL,AVX512,FUTURE +VCMPNLTPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 05 ] AVX512VL,AVX512,FUTURE +VCMPNLTPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 05 ] AVX512,FUTURE +VCMPNLTSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 05 ] AVX512,FUTURE +VCMPNLTSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 05 ] AVX512,FUTURE +VCMPNLT_USPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 05 ] AVX512VL,AVX512,FUTURE +VCMPNLT_USPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 05 ] AVX512VL,AVX512,FUTURE +VCMPNLT_USPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 05 ] AVX512,FUTURE +VCMPNLT_USPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 05 ] AVX512VL,AVX512,FUTURE +VCMPNLT_USPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 05 ] AVX512VL,AVX512,FUTURE +VCMPNLT_USPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 05 ] AVX512,FUTURE +VCMPNLT_USSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 05 ] AVX512,FUTURE +VCMPNLT_USSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 05 ] AVX512,FUTURE +VCMPNLEPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 06 ] AVX512VL,AVX512,FUTURE +VCMPNLEPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 06 ] AVX512VL,AVX512,FUTURE +VCMPNLEPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 06 ] AVX512,FUTURE +VCMPNLEPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 06 ] AVX512VL,AVX512,FUTURE +VCMPNLEPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 06 ] AVX512VL,AVX512,FUTURE +VCMPNLEPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 06 ] AVX512,FUTURE +VCMPNLESD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 06 ] AVX512,FUTURE +VCMPNLESS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 06 ] AVX512,FUTURE +VCMPNLE_USPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 06 ] AVX512VL,AVX512,FUTURE +VCMPNLE_USPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 06 ] AVX512VL,AVX512,FUTURE +VCMPNLE_USPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 06 ] AVX512,FUTURE +VCMPNLE_USPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 06 ] AVX512VL,AVX512,FUTURE +VCMPNLE_USPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 06 ] AVX512VL,AVX512,FUTURE +VCMPNLE_USPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 06 ] AVX512,FUTURE +VCMPNLE_USSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 06 ] AVX512,FUTURE +VCMPNLE_USSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 06 ] AVX512,FUTURE +VCMPORDPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 07 ] AVX512VL,AVX512,FUTURE +VCMPORDPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 07 ] AVX512VL,AVX512,FUTURE +VCMPORDPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 07 ] AVX512,FUTURE +VCMPORDPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 07 ] AVX512VL,AVX512,FUTURE +VCMPORDPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 07 ] AVX512VL,AVX512,FUTURE +VCMPORDPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 07 ] AVX512,FUTURE +VCMPORDSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 07 ] AVX512,FUTURE +VCMPORDSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 07 ] AVX512,FUTURE +VCMPORD_QPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 07 ] AVX512VL,AVX512,FUTURE +VCMPORD_QPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 07 ] AVX512VL,AVX512,FUTURE +VCMPORD_QPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 07 ] AVX512,FUTURE +VCMPORD_QPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 07 ] AVX512VL,AVX512,FUTURE +VCMPORD_QPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 07 ] AVX512VL,AVX512,FUTURE +VCMPORD_QPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 07 ] AVX512,FUTURE +VCMPORD_QSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 07 ] AVX512,FUTURE +VCMPORD_QSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 07 ] AVX512,FUTURE +VCMPEQ_UQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 08 ] AVX512VL,AVX512,FUTURE +VCMPEQ_UQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 08 ] AVX512VL,AVX512,FUTURE +VCMPEQ_UQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 08 ] AVX512,FUTURE +VCMPEQ_UQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 08 ] AVX512VL,AVX512,FUTURE +VCMPEQ_UQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 08 ] AVX512VL,AVX512,FUTURE +VCMPEQ_UQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 08 ] AVX512,FUTURE +VCMPEQ_UQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 08 ] AVX512,FUTURE +VCMPEQ_UQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 08 ] AVX512,FUTURE +VCMPNGEPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 09 ] AVX512VL,AVX512,FUTURE +VCMPNGEPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 09 ] AVX512VL,AVX512,FUTURE +VCMPNGEPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 09 ] AVX512,FUTURE +VCMPNGEPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 09 ] AVX512VL,AVX512,FUTURE +VCMPNGEPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 09 ] AVX512VL,AVX512,FUTURE +VCMPNGEPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 09 ] AVX512,FUTURE +VCMPNGESD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 09 ] AVX512,FUTURE +VCMPNGESS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 09 ] AVX512,FUTURE +VCMPNGE_USPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 09 ] AVX512VL,AVX512,FUTURE +VCMPNGE_USPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 09 ] AVX512VL,AVX512,FUTURE +VCMPNGE_USPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 09 ] AVX512,FUTURE +VCMPNGE_USPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 09 ] AVX512VL,AVX512,FUTURE +VCMPNGE_USPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 09 ] AVX512VL,AVX512,FUTURE +VCMPNGE_USPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 09 ] AVX512,FUTURE +VCMPNGE_USSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 09 ] AVX512,FUTURE +VCMPNGE_USSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 09 ] AVX512,FUTURE +VCMPNGTPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 0a ] AVX512VL,AVX512,FUTURE +VCMPNGTPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 0a ] AVX512VL,AVX512,FUTURE +VCMPNGTPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 0a ] AVX512,FUTURE +VCMPNGTPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 0a ] AVX512VL,AVX512,FUTURE +VCMPNGTPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 0a ] AVX512VL,AVX512,FUTURE +VCMPNGTPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 0a ] AVX512,FUTURE +VCMPNGTSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 0a ] AVX512,FUTURE +VCMPNGTSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 0a ] AVX512,FUTURE +VCMPNGT_USPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 0a ] AVX512VL,AVX512,FUTURE +VCMPNGT_USPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 0a ] AVX512VL,AVX512,FUTURE +VCMPNGT_USPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 0a ] AVX512,FUTURE +VCMPNGT_USPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 0a ] AVX512VL,AVX512,FUTURE +VCMPNGT_USPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 0a ] AVX512VL,AVX512,FUTURE +VCMPNGT_USPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 0a ] AVX512,FUTURE +VCMPNGT_USSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 0a ] AVX512,FUTURE +VCMPNGT_USSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 0a ] AVX512,FUTURE +VCMPFALSEPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 0b ] AVX512VL,AVX512,FUTURE +VCMPFALSEPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 0b ] AVX512VL,AVX512,FUTURE +VCMPFALSEPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 0b ] AVX512,FUTURE +VCMPFALSEPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 0b ] AVX512VL,AVX512,FUTURE +VCMPFALSEPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 0b ] AVX512VL,AVX512,FUTURE +VCMPFALSEPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 0b ] AVX512,FUTURE +VCMPFALSESD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 0b ] AVX512,FUTURE +VCMPFALSESS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 0b ] AVX512,FUTURE +VCMPFALSE_OQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 0b ] AVX512VL,AVX512,FUTURE +VCMPFALSE_OQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 0b ] AVX512VL,AVX512,FUTURE +VCMPFALSE_OQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 0b ] AVX512,FUTURE +VCMPFALSE_OQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 0b ] AVX512VL,AVX512,FUTURE +VCMPFALSE_OQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 0b ] AVX512VL,AVX512,FUTURE +VCMPFALSE_OQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 0b ] AVX512,FUTURE +VCMPFALSE_OQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 0b ] AVX512,FUTURE +VCMPFALSE_OQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 0b ] AVX512,FUTURE +VCMPNEQ_OQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 0c ] AVX512VL,AVX512,FUTURE +VCMPNEQ_OQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 0c ] AVX512VL,AVX512,FUTURE +VCMPNEQ_OQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 0c ] AVX512,FUTURE +VCMPNEQ_OQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 0c ] AVX512VL,AVX512,FUTURE +VCMPNEQ_OQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 0c ] AVX512VL,AVX512,FUTURE +VCMPNEQ_OQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 0c ] AVX512,FUTURE +VCMPNEQ_OQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 0c ] AVX512,FUTURE +VCMPNEQ_OQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 0c ] AVX512,FUTURE +VCMPGEPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 0d ] AVX512VL,AVX512,FUTURE +VCMPGEPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 0d ] AVX512VL,AVX512,FUTURE +VCMPGEPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 0d ] AVX512,FUTURE +VCMPGEPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 0d ] AVX512VL,AVX512,FUTURE +VCMPGEPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 0d ] AVX512VL,AVX512,FUTURE +VCMPGEPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 0d ] AVX512,FUTURE +VCMPGESD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 0d ] AVX512,FUTURE +VCMPGESS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 0d ] AVX512,FUTURE +VCMPGE_OSPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 0d ] AVX512VL,AVX512,FUTURE +VCMPGE_OSPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 0d ] AVX512VL,AVX512,FUTURE +VCMPGE_OSPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 0d ] AVX512,FUTURE +VCMPGE_OSPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 0d ] AVX512VL,AVX512,FUTURE +VCMPGE_OSPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 0d ] AVX512VL,AVX512,FUTURE +VCMPGE_OSPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 0d ] AVX512,FUTURE +VCMPGE_OSSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 0d ] AVX512,FUTURE +VCMPGE_OSSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 0d ] AVX512,FUTURE +VCMPGTPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 0e ] AVX512VL,AVX512,FUTURE +VCMPGTPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 0e ] AVX512VL,AVX512,FUTURE +VCMPGTPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 0e ] AVX512,FUTURE +VCMPGTPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 0e ] AVX512VL,AVX512,FUTURE +VCMPGTPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 0e ] AVX512VL,AVX512,FUTURE +VCMPGTPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 0e ] AVX512,FUTURE +VCMPGTSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 0e ] AVX512,FUTURE +VCMPGTSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 0e ] AVX512,FUTURE +VCMPGT_OSPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 0e ] AVX512VL,AVX512,FUTURE +VCMPGT_OSPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 0e ] AVX512VL,AVX512,FUTURE +VCMPGT_OSPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 0e ] AVX512,FUTURE +VCMPGT_OSPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 0e ] AVX512VL,AVX512,FUTURE +VCMPGT_OSPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 0e ] AVX512VL,AVX512,FUTURE +VCMPGT_OSPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 0e ] AVX512,FUTURE +VCMPGT_OSSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 0e ] AVX512,FUTURE +VCMPGT_OSSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 0e ] AVX512,FUTURE +VCMPTRUEPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 0f ] AVX512VL,AVX512,FUTURE +VCMPTRUEPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 0f ] AVX512VL,AVX512,FUTURE +VCMPTRUEPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 0f ] AVX512,FUTURE +VCMPTRUEPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 0f ] AVX512VL,AVX512,FUTURE +VCMPTRUEPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 0f ] AVX512VL,AVX512,FUTURE +VCMPTRUEPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 0f ] AVX512,FUTURE +VCMPTRUESD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 0f ] AVX512,FUTURE +VCMPTRUESS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 0f ] AVX512,FUTURE +VCMPTRUE_UQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 0f ] AVX512VL,AVX512,FUTURE +VCMPTRUE_UQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 0f ] AVX512VL,AVX512,FUTURE +VCMPTRUE_UQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 0f ] AVX512,FUTURE +VCMPTRUE_UQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 0f ] AVX512VL,AVX512,FUTURE +VCMPTRUE_UQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 0f ] AVX512VL,AVX512,FUTURE +VCMPTRUE_UQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 0f ] AVX512,FUTURE +VCMPTRUE_UQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 0f ] AVX512,FUTURE +VCMPTRUE_UQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 0f ] AVX512,FUTURE +VCMPEQ_OSPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 10 ] AVX512VL,AVX512,FUTURE +VCMPEQ_OSPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 10 ] AVX512VL,AVX512,FUTURE +VCMPEQ_OSPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 10 ] AVX512,FUTURE +VCMPEQ_OSPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 10 ] AVX512VL,AVX512,FUTURE +VCMPEQ_OSPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 10 ] AVX512VL,AVX512,FUTURE +VCMPEQ_OSPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 10 ] AVX512,FUTURE +VCMPEQ_OSSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 10 ] AVX512,FUTURE +VCMPEQ_OSSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 10 ] AVX512,FUTURE +VCMPLT_OQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 11 ] AVX512VL,AVX512,FUTURE +VCMPLT_OQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 11 ] AVX512VL,AVX512,FUTURE +VCMPLT_OQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 11 ] AVX512,FUTURE +VCMPLT_OQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 11 ] AVX512VL,AVX512,FUTURE +VCMPLT_OQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 11 ] AVX512VL,AVX512,FUTURE +VCMPLT_OQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 11 ] AVX512,FUTURE +VCMPLT_OQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 11 ] AVX512,FUTURE +VCMPLT_OQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 11 ] AVX512,FUTURE +VCMPLE_OQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 12 ] AVX512VL,AVX512,FUTURE +VCMPLE_OQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 12 ] AVX512VL,AVX512,FUTURE +VCMPLE_OQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 12 ] AVX512,FUTURE +VCMPLE_OQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 12 ] AVX512VL,AVX512,FUTURE +VCMPLE_OQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 12 ] AVX512VL,AVX512,FUTURE +VCMPLE_OQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 12 ] AVX512,FUTURE +VCMPLE_OQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 12 ] AVX512,FUTURE +VCMPLE_OQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 12 ] AVX512,FUTURE +VCMPUNORD_SPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 13 ] AVX512VL,AVX512,FUTURE +VCMPUNORD_SPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 13 ] AVX512VL,AVX512,FUTURE +VCMPUNORD_SPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 13 ] AVX512,FUTURE +VCMPUNORD_SPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 13 ] AVX512VL,AVX512,FUTURE +VCMPUNORD_SPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 13 ] AVX512VL,AVX512,FUTURE +VCMPUNORD_SPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 13 ] AVX512,FUTURE +VCMPUNORD_SSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 13 ] AVX512,FUTURE +VCMPUNORD_SSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 13 ] AVX512,FUTURE +VCMPNEQ_USPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 14 ] AVX512VL,AVX512,FUTURE +VCMPNEQ_USPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 14 ] AVX512VL,AVX512,FUTURE +VCMPNEQ_USPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 14 ] AVX512,FUTURE +VCMPNEQ_USPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 14 ] AVX512VL,AVX512,FUTURE +VCMPNEQ_USPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 14 ] AVX512VL,AVX512,FUTURE +VCMPNEQ_USPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 14 ] AVX512,FUTURE +VCMPNEQ_USSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 14 ] AVX512,FUTURE +VCMPNEQ_USSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 14 ] AVX512,FUTURE +VCMPNLT_UQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 15 ] AVX512VL,AVX512,FUTURE +VCMPNLT_UQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 15 ] AVX512VL,AVX512,FUTURE +VCMPNLT_UQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 15 ] AVX512,FUTURE +VCMPNLT_UQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 15 ] AVX512VL,AVX512,FUTURE +VCMPNLT_UQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 15 ] AVX512VL,AVX512,FUTURE +VCMPNLT_UQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 15 ] AVX512,FUTURE +VCMPNLT_UQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 15 ] AVX512,FUTURE +VCMPNLT_UQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 15 ] AVX512,FUTURE +VCMPNLE_UQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 16 ] AVX512VL,AVX512,FUTURE +VCMPNLE_UQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 16 ] AVX512VL,AVX512,FUTURE +VCMPNLE_UQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 16 ] AVX512,FUTURE +VCMPNLE_UQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 16 ] AVX512VL,AVX512,FUTURE +VCMPNLE_UQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 16 ] AVX512VL,AVX512,FUTURE +VCMPNLE_UQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 16 ] AVX512,FUTURE +VCMPNLE_UQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 16 ] AVX512,FUTURE +VCMPNLE_UQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 16 ] AVX512,FUTURE +VCMPORD_SPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 17 ] AVX512VL,AVX512,FUTURE +VCMPORD_SPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 17 ] AVX512VL,AVX512,FUTURE +VCMPORD_SPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 17 ] AVX512,FUTURE +VCMPORD_SPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 17 ] AVX512VL,AVX512,FUTURE +VCMPORD_SPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 17 ] AVX512VL,AVX512,FUTURE +VCMPORD_SPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 17 ] AVX512,FUTURE +VCMPORD_SSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 17 ] AVX512,FUTURE +VCMPORD_SSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 17 ] AVX512,FUTURE +VCMPEQ_USPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 18 ] AVX512VL,AVX512,FUTURE +VCMPEQ_USPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 18 ] AVX512VL,AVX512,FUTURE +VCMPEQ_USPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 18 ] AVX512,FUTURE +VCMPEQ_USPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 18 ] AVX512VL,AVX512,FUTURE +VCMPEQ_USPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 18 ] AVX512VL,AVX512,FUTURE +VCMPEQ_USPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 18 ] AVX512,FUTURE +VCMPEQ_USSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 18 ] AVX512,FUTURE +VCMPEQ_USSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 18 ] AVX512,FUTURE +VCMPNGE_UQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 19 ] AVX512VL,AVX512,FUTURE +VCMPNGE_UQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 19 ] AVX512VL,AVX512,FUTURE +VCMPNGE_UQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 19 ] AVX512,FUTURE +VCMPNGE_UQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 19 ] AVX512VL,AVX512,FUTURE +VCMPNGE_UQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 19 ] AVX512VL,AVX512,FUTURE +VCMPNGE_UQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 19 ] AVX512,FUTURE +VCMPNGE_UQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 19 ] AVX512,FUTURE +VCMPNGE_UQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 19 ] AVX512,FUTURE +VCMPNGT_UQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 1a ] AVX512VL,AVX512,FUTURE +VCMPNGT_UQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 1a ] AVX512VL,AVX512,FUTURE +VCMPNGT_UQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 1a ] AVX512,FUTURE +VCMPNGT_UQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 1a ] AVX512VL,AVX512,FUTURE +VCMPNGT_UQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 1a ] AVX512VL,AVX512,FUTURE +VCMPNGT_UQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 1a ] AVX512,FUTURE +VCMPNGT_UQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 1a ] AVX512,FUTURE +VCMPNGT_UQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 1a ] AVX512,FUTURE +VCMPFALSE_OSPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 1b ] AVX512VL,AVX512,FUTURE +VCMPFALSE_OSPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 1b ] AVX512VL,AVX512,FUTURE +VCMPFALSE_OSPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 1b ] AVX512,FUTURE +VCMPFALSE_OSPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 1b ] AVX512VL,AVX512,FUTURE +VCMPFALSE_OSPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 1b ] AVX512VL,AVX512,FUTURE +VCMPFALSE_OSPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 1b ] AVX512,FUTURE +VCMPFALSE_OSSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 1b ] AVX512,FUTURE +VCMPFALSE_OSSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 1b ] AVX512,FUTURE +VCMPNEQ_OSPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 1c ] AVX512VL,AVX512,FUTURE +VCMPNEQ_OSPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 1c ] AVX512VL,AVX512,FUTURE +VCMPNEQ_OSPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 1c ] AVX512,FUTURE +VCMPNEQ_OSPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 1c ] AVX512VL,AVX512,FUTURE +VCMPNEQ_OSPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 1c ] AVX512VL,AVX512,FUTURE +VCMPNEQ_OSPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 1c ] AVX512,FUTURE +VCMPNEQ_OSSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 1c ] AVX512,FUTURE +VCMPNEQ_OSSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 1c ] AVX512,FUTURE +VCMPGE_OQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 1d ] AVX512VL,AVX512,FUTURE +VCMPGE_OQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 1d ] AVX512VL,AVX512,FUTURE +VCMPGE_OQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 1d ] AVX512,FUTURE +VCMPGE_OQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 1d ] AVX512VL,AVX512,FUTURE +VCMPGE_OQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 1d ] AVX512VL,AVX512,FUTURE +VCMPGE_OQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 1d ] AVX512,FUTURE +VCMPGE_OQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 1d ] AVX512,FUTURE +VCMPGE_OQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 1d ] AVX512,FUTURE +VCMPGT_OQPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 1e ] AVX512VL,AVX512,FUTURE +VCMPGT_OQPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 1e ] AVX512VL,AVX512,FUTURE +VCMPGT_OQPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 1e ] AVX512,FUTURE +VCMPGT_OQPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 1e ] AVX512VL,AVX512,FUTURE +VCMPGT_OQPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 1e ] AVX512VL,AVX512,FUTURE +VCMPGT_OQPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 1e ] AVX512,FUTURE +VCMPGT_OQSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 1e ] AVX512,FUTURE +VCMPGT_OQSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 1e ] AVX512,FUTURE +VCMPTRUE_USPD kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r 1f ] AVX512VL,AVX512,FUTURE +VCMPTRUE_USPD kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r 1f ] AVX512VL,AVX512,FUTURE +VCMPTRUE_USPD kreg|mask,zmmreg,zmmrm512|b64|sae [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r 1f ] AVX512,FUTURE +VCMPTRUE_USPS kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.0f.w0 c2 /r 1f ] AVX512VL,AVX512,FUTURE +VCMPTRUE_USPS kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.0f.w0 c2 /r 1f ] AVX512VL,AVX512,FUTURE +VCMPTRUE_USPS kreg|mask,zmmreg,zmmrm512|b32|sae [rvmi:fv: evex.nds.512.0f.w0 c2 /r 1f ] AVX512,FUTURE +VCMPTRUE_USSD kreg|mask,xmmreg,xmmrm64|sae [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r 1f ] AVX512,FUTURE +VCMPTRUE_USSS kreg|mask,xmmreg,xmmrm32|sae [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r 1f ] AVX512,FUTURE +VCMPPD kreg|mask,xmmreg,xmmrm128|b64,imm8 [rvmi:fv: evex.nds.128.66.0f.w1 c2 /r ib ] AVX512VL,AVX512,FUTURE +VCMPPD kreg|mask,ymmreg,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f.w1 c2 /r ib ] AVX512VL,AVX512,FUTURE +VCMPPD kreg|mask,zmmreg,zmmrm512|b64|sae,imm8 [rvmi:fv: evex.nds.512.66.0f.w1 c2 /r ib ] AVX512,FUTURE +VCMPPS kreg|mask,xmmreg,xmmrm128|b32,imm8 [rvmi:fv: evex.nds.128.0f.w0 c2 /r ib ] AVX512VL,AVX512,FUTURE +VCMPPS kreg|mask,ymmreg,ymmrm256|b32,imm8 [rvmi:fv: evex.nds.256.0f.w0 c2 /r ib ] AVX512VL,AVX512,FUTURE +VCMPPS kreg|mask,zmmreg,zmmrm512|b32|sae,imm8 [rvmi:fv: evex.nds.512.0f.w0 c2 /r ib ] AVX512,FUTURE +VCMPSD kreg|mask,xmmreg,xmmrm64|sae,imm8 [rvmi:t1s: evex.nds.128.f2.0f.w1 c2 /r ib ] AVX512,FUTURE +VCMPSS kreg|mask,xmmreg,xmmrm32|sae,imm8 [rvmi:t1s: evex.nds.128.f3.0f.w0 c2 /r ib ] AVX512,FUTURE +VCOMISD xmmreg,xmmrm64|sae [rm:t1s: evex.128.66.0f.w1 2f /r ] AVX512,FUTURE +VCOMISS xmmreg,xmmrm32|sae [rm:t1s: evex.128.0f.w0 2f /r ] AVX512,FUTURE +VCOMPRESSPD mem128|mask,xmmreg [mr:t1s: evex.128.66.0f38.w1 8a /r ] AVX512VL,AVX512,FUTURE +VCOMPRESSPD mem256|mask,ymmreg [mr:t1s: evex.256.66.0f38.w1 8a /r ] AVX512VL,AVX512,FUTURE +VCOMPRESSPD mem512|mask,zmmreg [mr:t1s: evex.512.66.0f38.w1 8a /r ] AVX512,FUTURE +VCOMPRESSPD xmmreg|mask|z,xmmreg [mr: evex.128.66.0f38.w1 8a /r ] AVX512VL,AVX512,FUTURE +VCOMPRESSPD ymmreg|mask|z,ymmreg [mr: evex.256.66.0f38.w1 8a /r ] AVX512VL,AVX512,FUTURE +VCOMPRESSPD zmmreg|mask|z,zmmreg [mr: evex.512.66.0f38.w1 8a /r ] AVX512,FUTURE +VCOMPRESSPS mem128|mask,xmmreg [mr:t1s: evex.128.66.0f38.w0 8a /r ] AVX512VL,AVX512,FUTURE +VCOMPRESSPS mem256|mask,ymmreg [mr:t1s: evex.256.66.0f38.w0 8a /r ] AVX512VL,AVX512,FUTURE +VCOMPRESSPS mem512|mask,zmmreg [mr:t1s: evex.512.66.0f38.w0 8a /r ] AVX512,FUTURE +VCOMPRESSPS xmmreg|mask|z,xmmreg [mr: evex.128.66.0f38.w0 8a /r ] AVX512VL,AVX512,FUTURE +VCOMPRESSPS ymmreg|mask|z,ymmreg [mr: evex.256.66.0f38.w0 8a /r ] AVX512VL,AVX512,FUTURE +VCOMPRESSPS zmmreg|mask|z,zmmreg [mr: evex.512.66.0f38.w0 8a /r ] AVX512,FUTURE +VCVTDQ2PD xmmreg|mask|z,xmmrm64|b32 [rm:hv: evex.128.f3.0f.w0 e6 /r ] AVX512VL,AVX512,FUTURE +VCVTDQ2PD ymmreg|mask|z,xmmrm128|b32 [rm:hv: evex.256.f3.0f.w0 e6 /r ] AVX512VL,AVX512,FUTURE +VCVTDQ2PD zmmreg|mask|z,ymmrm256|b32|er [rm:hv: evex.512.f3.0f.w0 e6 /r ] AVX512,FUTURE +VCVTDQ2PS xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.0f.w0 5b /r ] AVX512VL,AVX512,FUTURE +VCVTDQ2PS ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.0f.w0 5b /r ] AVX512VL,AVX512,FUTURE +VCVTDQ2PS zmmreg|mask|z,zmmrm512|b32|er [rm:fv: evex.512.0f.w0 5b /r ] AVX512,FUTURE +VCVTPD2DQ xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.f2.0f.w1 e6 /r ] AVX512VL,AVX512,FUTURE +VCVTPD2DQ xmmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.f2.0f.w1 e6 /r ] AVX512VL,AVX512,FUTURE +VCVTPD2DQ ymmreg|mask|z,zmmrm512|b64|er [rm:fv: evex.512.f2.0f.w1 e6 /r ] AVX512,FUTURE +VCVTPD2PS xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f.w1 5a /r ] AVX512VL,AVX512,FUTURE +VCVTPD2PS xmmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f.w1 5a /r ] AVX512VL,AVX512,FUTURE +VCVTPD2PS ymmreg|mask|z,zmmrm512|b64|er [rm:fv: evex.512.66.0f.w1 5a /r ] AVX512,FUTURE +VCVTPD2QQ xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f.w1 7b /r ] AVX512VL,AVX512DQ,FUTURE +VCVTPD2QQ ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f.w1 7b /r ] AVX512VL,AVX512DQ,FUTURE +VCVTPD2QQ zmmreg|mask|z,zmmrm512|b64|er [rm:fv: evex.512.66.0f.w1 7b /r ] AVX512DQ,FUTURE +VCVTPD2UDQ xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.0f.w1 79 /r ] AVX512VL,AVX512,FUTURE +VCVTPD2UDQ xmmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.0f.w1 79 /r ] AVX512VL,AVX512,FUTURE +VCVTPD2UDQ ymmreg|mask|z,zmmrm512|b64|er [rm:fv: evex.512.0f.w1 79 /r ] AVX512,FUTURE +VCVTPD2UQQ xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f.w1 79 /r ] AVX512VL,AVX512DQ,FUTURE +VCVTPD2UQQ ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f.w1 79 /r ] AVX512VL,AVX512DQ,FUTURE +VCVTPD2UQQ zmmreg|mask|z,zmmrm512|b64|er [rm:fv: evex.512.66.0f.w1 79 /r ] AVX512DQ,FUTURE +VCVTPH2PS xmmreg|mask|z,xmmrm64 [rm:hvm: evex.128.66.0f38.w0 13 /r ] AVX512VL,AVX512,FUTURE +VCVTPH2PS ymmreg|mask|z,xmmrm128 [rm:hvm: evex.256.66.0f38.w0 13 /r ] AVX512VL,AVX512,FUTURE +VCVTPH2PS zmmreg|mask|z,ymmrm256|sae [rm:hvm: evex.512.66.0f38.w0 13 /r ] AVX512,FUTURE +VCVTPS2DQ xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.66.0f.w0 5b /r ] AVX512VL,AVX512,FUTURE +VCVTPS2DQ ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.66.0f.w0 5b /r ] AVX512VL,AVX512,FUTURE +VCVTPS2DQ zmmreg|mask|z,zmmrm512|b32|er [rm:fv: evex.512.66.0f.w0 5b /r ] AVX512,FUTURE +VCVTPS2PD xmmreg|mask|z,xmmrm64|b32 [rm:hv: evex.128.0f.w0 5a /r ] AVX512VL,AVX512,FUTURE +VCVTPS2PD ymmreg|mask|z,xmmrm128|b32 [rm:hv: evex.256.0f.w0 5a /r ] AVX512VL,AVX512,FUTURE +VCVTPS2PD zmmreg|mask|z,ymmrm256|b32|sae [rm:hv: evex.512.0f.w0 5a /r ] AVX512,FUTURE +VCVTPS2PH xmmreg|mask|z,xmmreg,imm8 [mri:hvm: evex.128.66.0f3a.w0 1d /r ib ] AVX512VL,AVX512,FUTURE +VCVTPS2PH xmmreg|mask|z,ymmreg,imm8 [mri:hvm: evex.256.66.0f3a.w0 1d /r ib ] AVX512VL,AVX512,FUTURE +VCVTPS2PH ymmreg|mask|z,zmmreg|sae,imm8 [mri:hvm: evex.512.66.0f3a.w0 1d /r ib ] AVX512,FUTURE +VCVTPS2PH mem64|mask,xmmreg,imm8 [mri:hvm: evex.128.66.0f3a.w0 1d /r ib ] AVX512VL,AVX512,FUTURE +VCVTPS2PH mem128|mask,ymmreg,imm8 [mri:hvm: evex.256.66.0f3a.w0 1d /r ib ] AVX512VL,AVX512,FUTURE +VCVTPS2PH mem256|mask,zmmreg|sae,imm8 [mri:hvm: evex.512.66.0f3a.w0 1d /r ib ] AVX512,FUTURE +VCVTPS2QQ xmmreg|mask|z,xmmrm64|b32 [rm:hv: evex.128.66.0f.w0 7b /r ] AVX512VL,AVX512DQ,FUTURE +VCVTPS2QQ ymmreg|mask|z,xmmrm128|b32 [rm:hv: evex.256.66.0f.w0 7b /r ] AVX512VL,AVX512DQ,FUTURE +VCVTPS2QQ zmmreg|mask|z,ymmrm256|b32|er [rm:hv: evex.512.66.0f.w0 7b /r ] AVX512DQ,FUTURE +VCVTPS2UDQ xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.0f.w0 79 /r ] AVX512VL,AVX512,FUTURE +VCVTPS2UDQ ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.0f.w0 79 /r ] AVX512VL,AVX512,FUTURE +VCVTPS2UDQ zmmreg|mask|z,zmmrm512|b32|er [rm:fv: evex.512.0f.w0 79 /r ] AVX512,FUTURE +VCVTPS2UQQ xmmreg|mask|z,xmmrm64|b32 [rm:hv: evex.128.66.0f.w0 79 /r ] AVX512VL,AVX512DQ,FUTURE +VCVTPS2UQQ ymmreg|mask|z,xmmrm128|b32 [rm:hv: evex.256.66.0f.w0 79 /r ] AVX512VL,AVX512DQ,FUTURE +VCVTPS2UQQ zmmreg|mask|z,ymmrm256|b32|er [rm:hv: evex.512.66.0f.w0 79 /r ] AVX512DQ,FUTURE +VCVTQQ2PD xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.f3.0f.w1 e6 /r ] AVX512VL,AVX512DQ,FUTURE +VCVTQQ2PD ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.f3.0f.w1 e6 /r ] AVX512VL,AVX512DQ,FUTURE +VCVTQQ2PD zmmreg|mask|z,zmmrm512|b64|er [rm:fv: evex.512.f3.0f.w1 e6 /r ] AVX512DQ,FUTURE +VCVTQQ2PS xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.0f.w1 5b /r ] AVX512VL,AVX512DQ,FUTURE +VCVTQQ2PS xmmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.0f.w1 5b /r ] AVX512VL,AVX512DQ,FUTURE +VCVTQQ2PS ymmreg|mask|z,zmmrm512|b64|er [rm:fv: evex.512.0f.w1 5b /r ] AVX512DQ,FUTURE +VCVTSD2SI reg32,xmmrm64|er [rm:t1f64: evex.128.f2.0f.w0 2d /r ] AVX512,FUTURE +VCVTSD2SI reg64,xmmrm64|er [rm:t1f64: evex.128.f2.0f.w1 2d /r ] AVX512,FUTURE +VCVTSD2SS xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.f2.0f.w1 5a /r ] AVX512,FUTURE +VCVTSD2USI reg32,xmmrm64|er [rm:t1f64: evex.128.f2.0f.w0 79 /r ] AVX512,FUTURE +VCVTSD2USI reg64,xmmrm64|er [rm:t1f64: evex.128.f2.0f.w1 79 /r ] AVX512,FUTURE +VCVTSI2SD xmmreg,xmmreg|er,rm32 [rvm:t1s: evex.nds.128.f2.0f.w0 2a /r ] AVX512,FUTURE +VCVTSI2SD xmmreg,xmmreg|er,rm64 [rvm:t1s: evex.nds.128.f2.0f.w1 2a /r ] AVX512,FUTURE +VCVTSI2SS xmmreg,xmmreg|er,rm32 [rvm:t1s: evex.nds.128.f3.0f.w0 2a /r ] AVX512,FUTURE +VCVTSI2SS xmmreg,xmmreg|er,rm64 [rvm:t1s: evex.nds.128.f3.0f.w1 2a /r ] AVX512,FUTURE +VCVTSS2SD xmmreg|mask|z,xmmreg,xmmrm32|sae [rvm:t1s: evex.nds.128.f3.0f.w0 5a /r ] AVX512,FUTURE +VCVTSS2SI reg32,xmmrm32|er [rm:t1f32: evex.128.f3.0f.w0 2d /r ] AVX512,FUTURE +VCVTSS2SI reg64,xmmrm32|er [rm:t1f32: evex.128.f3.0f.w1 2d /r ] AVX512,FUTURE +VCVTSS2USI reg32,xmmrm32|er [rm:t1f32: evex.128.f3.0f.w0 79 /r ] AVX512,FUTURE +VCVTSS2USI reg64,xmmrm32|er [rm:t1f32: evex.128.f3.0f.w1 79 /r ] AVX512,FUTURE +VCVTTPD2DQ xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f.w1 e6 /r ] AVX512VL,AVX512,FUTURE +VCVTTPD2DQ xmmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f.w1 e6 /r ] AVX512VL,AVX512,FUTURE +VCVTTPD2DQ ymmreg|mask|z,zmmrm512|b64|sae [rm:fv: evex.512.66.0f.w1 e6 /r ] AVX512,FUTURE +VCVTTPD2QQ xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f.w1 7a /r ] AVX512VL,AVX512DQ,FUTURE +VCVTTPD2QQ ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f.w1 7a /r ] AVX512VL,AVX512DQ,FUTURE +VCVTTPD2QQ zmmreg|mask|z,zmmrm512|b64|sae [rm:fv: evex.512.66.0f.w1 7a /r ] AVX512DQ,FUTURE +VCVTTPD2UDQ xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.0f.w1 78 /r ] AVX512VL,AVX512,FUTURE +VCVTTPD2UDQ xmmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.0f.w1 78 /r ] AVX512VL,AVX512,FUTURE +VCVTTPD2UDQ ymmreg|mask|z,zmmrm512|b64|sae [rm:fv: evex.512.0f.w1 78 /r ] AVX512,FUTURE +VCVTTPD2UQQ xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f.w1 78 /r ] AVX512VL,AVX512DQ,FUTURE +VCVTTPD2UQQ ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f.w1 78 /r ] AVX512VL,AVX512DQ,FUTURE +VCVTTPD2UQQ zmmreg|mask|z,zmmrm512|b64|sae [rm:fv: evex.512.66.0f.w1 78 /r ] AVX512DQ,FUTURE +VCVTTPS2DQ xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.f3.0f.w0 5b /r ] AVX512VL,AVX512,FUTURE +VCVTTPS2DQ ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.f3.0f.w0 5b /r ] AVX512VL,AVX512,FUTURE +VCVTTPS2DQ zmmreg|mask|z,zmmrm512|b32|sae [rm:fv: evex.512.f3.0f.w0 5b /r ] AVX512,FUTURE +VCVTTPS2QQ xmmreg|mask|z,xmmrm64|b32 [rm:hv: evex.128.66.0f.w0 7a /r ] AVX512VL,AVX512DQ,FUTURE +VCVTTPS2QQ ymmreg|mask|z,xmmrm128|b32 [rm:hv: evex.256.66.0f.w0 7a /r ] AVX512VL,AVX512DQ,FUTURE +VCVTTPS2QQ zmmreg|mask|z,ymmrm256|b32|sae [rm:hv: evex.512.66.0f.w0 7a /r ] AVX512DQ,FUTURE +VCVTTPS2UDQ xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.0f.w0 78 /r ] AVX512VL,AVX512,FUTURE +VCVTTPS2UDQ ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.0f.w0 78 /r ] AVX512VL,AVX512,FUTURE +VCVTTPS2UDQ zmmreg|mask|z,zmmrm512|b32|sae [rm:fv: evex.512.0f.w0 78 /r ] AVX512,FUTURE +VCVTTPS2UQQ xmmreg|mask|z,xmmrm64|b32 [rm:hv: evex.128.66.0f.w0 78 /r ] AVX512VL,AVX512DQ,FUTURE +VCVTTPS2UQQ ymmreg|mask|z,xmmrm128|b32 [rm:hv: evex.256.66.0f.w0 78 /r ] AVX512VL,AVX512DQ,FUTURE +VCVTTPS2UQQ zmmreg|mask|z,ymmrm256|b32|sae [rm:hv: evex.512.66.0f.w0 78 /r ] AVX512DQ,FUTURE +VCVTTSD2SI reg32,xmmrm64|sae [rm:t1f64: evex.128.f2.0f.w0 2c /r ] AVX512,FUTURE +VCVTTSD2SI reg64,xmmrm64|sae [rm:t1f64: evex.128.f2.0f.w1 2c /r ] AVX512,FUTURE +VCVTTSD2USI reg32,xmmrm64|sae [rm:t1f64: evex.128.f2.0f.w0 78 /r ] AVX512,FUTURE +VCVTTSD2USI reg64,xmmrm64|sae [rm:t1f64: evex.128.f2.0f.w1 78 /r ] AVX512,FUTURE +VCVTTSS2SI reg32,xmmrm32|sae [rm:t1f32: evex.128.f3.0f.w0 2c /r ] AVX512,FUTURE +VCVTTSS2SI reg64,xmmrm32|sae [rm:t1f32: evex.128.f3.0f.w1 2c /r ] AVX512,FUTURE +VCVTTSS2USI reg32,xmmrm32|sae [rm:t1f32: evex.128.f3.0f.w0 78 /r ] AVX512,FUTURE +VCVTTSS2USI reg64,xmmrm32|sae [rm:t1f32: evex.128.f3.0f.w1 78 /r ] AVX512,FUTURE +VCVTUDQ2PD xmmreg|mask|z,xmmrm64|b32 [rm:hv: evex.128.f3.0f.w0 7a /r ] AVX512VL,AVX512,FUTURE +VCVTUDQ2PD ymmreg|mask|z,xmmrm128|b32 [rm:hv: evex.256.f3.0f.w0 7a /r ] AVX512VL,AVX512,FUTURE +VCVTUDQ2PD zmmreg|mask|z,ymmrm256|b32|er [rm:hv: evex.512.f3.0f.w0 7a /r ] AVX512,FUTURE +VCVTUDQ2PS xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.f2.0f.w0 7a /r ] AVX512VL,AVX512,FUTURE +VCVTUDQ2PS ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.f2.0f.w0 7a /r ] AVX512VL,AVX512,FUTURE +VCVTUDQ2PS zmmreg|mask|z,zmmrm512|b32|er [rm:fv: evex.512.f2.0f.w0 7a /r ] AVX512,FUTURE +VCVTUQQ2PD xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.f3.0f.w1 7a /r ] AVX512VL,AVX512DQ,FUTURE +VCVTUQQ2PD ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.f3.0f.w1 7a /r ] AVX512VL,AVX512DQ,FUTURE +VCVTUQQ2PD zmmreg|mask|z,zmmrm512|b64|er [rm:fv: evex.512.f3.0f.w1 7a /r ] AVX512DQ,FUTURE +VCVTUQQ2PS xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.f2.0f.w1 7a /r ] AVX512VL,AVX512DQ,FUTURE +VCVTUQQ2PS xmmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.f2.0f.w1 7a /r ] AVX512VL,AVX512DQ,FUTURE +VCVTUQQ2PS ymmreg|mask|z,zmmrm512|b64|er [rm:fv: evex.512.f2.0f.w1 7a /r ] AVX512DQ,FUTURE +VCVTUSI2SD xmmreg,xmmreg|er,rm32 [rvm:t1s: evex.nds.128.f2.0f.w0 7b /r ] AVX512,FUTURE +VCVTUSI2SD xmmreg,xmmreg|er,rm64 [rvm:t1s: evex.nds.128.f2.0f.w1 7b /r ] AVX512,FUTURE +VCVTUSI2SS xmmreg,xmmreg|er,rm32 [rvm:t1s: evex.nds.128.f3.0f.w0 7b /r ] AVX512,FUTURE +VCVTUSI2SS xmmreg,xmmreg|er,rm64 [rvm:t1s: evex.nds.128.f3.0f.w1 7b /r ] AVX512,FUTURE +VDBPSADBW xmmreg|mask|z,xmmreg*,xmmrm128,imm8 [rvmi:fvm: evex.nds.128.66.0f3a.w0 42 /r ib ] AVX512VL,AVX512BW,FUTURE +VDBPSADBW ymmreg|mask|z,ymmreg*,ymmrm256,imm8 [rvmi:fvm: evex.nds.256.66.0f3a.w0 42 /r ib ] AVX512VL,AVX512BW,FUTURE +VDBPSADBW zmmreg|mask|z,zmmreg*,zmmrm512,imm8 [rvmi:fvm: evex.nds.512.66.0f3a.w0 42 /r ib ] AVX512BW,FUTURE +VDIVPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 5e /r ] AVX512VL,AVX512,FUTURE +VDIVPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 5e /r ] AVX512VL,AVX512,FUTURE +VDIVPD zmmreg|mask|z,zmmreg*,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f.w1 5e /r ] AVX512,FUTURE +VDIVPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 5e /r ] AVX512VL,AVX512,FUTURE +VDIVPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 5e /r ] AVX512VL,AVX512,FUTURE +VDIVPS zmmreg|mask|z,zmmreg*,zmmrm512|b32|er [rvm:fv: evex.nds.512.0f.w0 5e /r ] AVX512,FUTURE +VDIVSD xmmreg|mask|z,xmmreg*,xmmrm64|er [rvm:t1s: evex.nds.128.f2.0f.w1 5e /r ] AVX512,FUTURE +VDIVSS xmmreg|mask|z,xmmreg*,xmmrm32|er [rvm:t1s: evex.nds.128.f3.0f.w0 5e /r ] AVX512,FUTURE +VEXP2PD zmmreg|mask|z,zmmrm512|b64|sae [rm:fv: evex.512.66.0f38.w1 c8 /r ] AVX512ER,FUTURE +VEXP2PS zmmreg|mask|z,zmmrm512|b32|sae [rm:fv: evex.512.66.0f38.w0 c8 /r ] AVX512ER,FUTURE +VEXPANDPD xmmreg|mask|z,mem128 [rm:t1s: evex.128.66.0f38.w1 88 /r ] AVX512VL,AVX512,FUTURE +VEXPANDPD ymmreg|mask|z,mem256 [rm:t1s: evex.256.66.0f38.w1 88 /r ] AVX512VL,AVX512,FUTURE +VEXPANDPD zmmreg|mask|z,mem512 [rm:t1s: evex.512.66.0f38.w1 88 /r ] AVX512,FUTURE +VEXPANDPD xmmreg|mask|z,xmmreg [rm:t1s: evex.128.66.0f38.w1 88 /r ] AVX512VL,AVX512,FUTURE +VEXPANDPD ymmreg|mask|z,ymmreg [rm:t1s: evex.256.66.0f38.w1 88 /r ] AVX512VL,AVX512,FUTURE +VEXPANDPD zmmreg|mask|z,zmmreg [rm:t1s: evex.512.66.0f38.w1 88 /r ] AVX512,FUTURE +VEXPANDPS xmmreg|mask|z,mem128 [rm:t1s: evex.128.66.0f38.w0 88 /r ] AVX512VL,AVX512,FUTURE +VEXPANDPS ymmreg|mask|z,mem256 [rm:t1s: evex.256.66.0f38.w0 88 /r ] AVX512VL,AVX512,FUTURE +VEXPANDPS zmmreg|mask|z,mem512 [rm:t1s: evex.512.66.0f38.w0 88 /r ] AVX512,FUTURE +VEXPANDPS xmmreg|mask|z,xmmreg [rm:t1s: evex.128.66.0f38.w0 88 /r ] AVX512VL,AVX512,FUTURE +VEXPANDPS ymmreg|mask|z,ymmreg [rm:t1s: evex.256.66.0f38.w0 88 /r ] AVX512VL,AVX512,FUTURE +VEXPANDPS zmmreg|mask|z,zmmreg [rm:t1s: evex.512.66.0f38.w0 88 /r ] AVX512,FUTURE +VEXTRACTF32X4 xmmreg|mask|z,ymmreg,imm8 [mri: evex.256.66.0f3a.w0 19 /r ib ] AVX512VL,AVX512,FUTURE +VEXTRACTF32X4 xmmreg|mask|z,zmmreg,imm8 [mri: evex.512.66.0f3a.w0 19 /r ib ] AVX512,FUTURE +VEXTRACTF32X4 mem128|mask,ymmreg,imm8 [mri:t4: evex.256.66.0f3a.w0 19 /r ib ] AVX512VL,AVX512,FUTURE +VEXTRACTF32X4 mem128|mask,zmmreg,imm8 [mri:t4: evex.512.66.0f3a.w0 19 /r ib ] AVX512,FUTURE +VEXTRACTF32X8 ymmreg|mask|z,zmmreg,imm8 [mri: evex.512.66.0f3a.w0 1b /r ib ] AVX512DQ,FUTURE +VEXTRACTF32X8 mem256|mask,zmmreg,imm8 [mri:t8: evex.512.66.0f3a.w0 1b /r ib ] AVX512DQ,FUTURE +VEXTRACTF64X2 xmmreg|mask|z,ymmreg,imm8 [mri: evex.256.66.0f3a.w1 19 /r ib ] AVX512VL,AVX512DQ,FUTURE +VEXTRACTF64X2 xmmreg|mask|z,zmmreg,imm8 [mri: evex.512.66.0f3a.w1 19 /r ib ] AVX512DQ,FUTURE +VEXTRACTF64X2 mem128|mask,ymmreg,imm8 [mri:t2: evex.256.66.0f3a.w1 19 /r ib ] AVX512VL,AVX512DQ,FUTURE +VEXTRACTF64X2 mem128|mask,zmmreg,imm8 [mri:t2: evex.512.66.0f3a.w1 19 /r ib ] AVX512DQ,FUTURE +VEXTRACTF64X4 ymmreg|mask|z,zmmreg,imm8 [mri: evex.512.66.0f3a.w1 1b /r ib ] AVX512,FUTURE +VEXTRACTF64X4 mem256|mask,zmmreg,imm8 [mri:t4: evex.512.66.0f3a.w1 1b /r ib ] AVX512,FUTURE +VEXTRACTI32X4 xmmreg|mask|z,ymmreg,imm8 [mri: evex.256.66.0f3a.w0 39 /r ib ] AVX512VL,AVX512,FUTURE +VEXTRACTI32X4 xmmreg|mask|z,zmmreg,imm8 [mri: evex.512.66.0f3a.w0 39 /r ib ] AVX512,FUTURE +VEXTRACTI32X4 mem128|mask,ymmreg,imm8 [mri:t4: evex.256.66.0f3a.w0 39 /r ib ] AVX512VL,AVX512,FUTURE +VEXTRACTI32X4 mem128|mask,zmmreg,imm8 [mri:t4: evex.512.66.0f3a.w0 39 /r ib ] AVX512,FUTURE +VEXTRACTI32X8 ymmreg|mask|z,zmmreg,imm8 [mri: evex.512.66.0f3a.w0 3b /r ib ] AVX512DQ,FUTURE +VEXTRACTI32X8 mem256|mask,zmmreg,imm8 [mri:t8: evex.512.66.0f3a.w0 3b /r ib ] AVX512DQ,FUTURE +VEXTRACTI64X2 xmmreg|mask|z,ymmreg,imm8 [mri: evex.256.66.0f3a.w1 39 /r ib ] AVX512VL,AVX512DQ,FUTURE +VEXTRACTI64X2 xmmreg|mask|z,zmmreg,imm8 [mri: evex.512.66.0f3a.w1 39 /r ib ] AVX512DQ,FUTURE +VEXTRACTI64X2 mem128|mask,ymmreg,imm8 [mri:t2: evex.256.66.0f3a.w1 39 /r ib ] AVX512VL,AVX512DQ,FUTURE +VEXTRACTI64X2 mem128|mask,zmmreg,imm8 [mri:t2: evex.512.66.0f3a.w1 39 /r ib ] AVX512DQ,FUTURE +VEXTRACTI64X4 ymmreg|mask|z,zmmreg,imm8 [mri: evex.512.66.0f3a.w1 3b /r ib ] AVX512,FUTURE +VEXTRACTI64X4 mem256|mask,zmmreg,imm8 [mri:t4: evex.512.66.0f3a.w1 3b /r ib ] AVX512,FUTURE +VEXTRACTPS reg32,xmmreg,imm8 [mri:t1s: evex.128.66.0f3a.wig 17 /r ib ] AVX512,FUTURE +VEXTRACTPS reg64,xmmreg,imm8 [mri:t1s: evex.128.66.0f3a.wig 17 /r ib ] AVX512,FUTURE +VEXTRACTPS mem32,xmmreg,imm8 [mri:t1s: evex.128.66.0f3a.wig 17 /r ib ] AVX512,FUTURE +VFIXUPIMMPD xmmreg|mask|z,xmmreg*,xmmrm128|b64,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w1 54 /r ib ] AVX512VL,AVX512,FUTURE +VFIXUPIMMPD ymmreg|mask|z,ymmreg*,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w1 54 /r ib ] AVX512VL,AVX512,FUTURE +VFIXUPIMMPD zmmreg|mask|z,zmmreg*,zmmrm512|b64|sae,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w1 54 /r ib ] AVX512,FUTURE +VFIXUPIMMPS xmmreg|mask|z,xmmreg*,xmmrm128|b32,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w0 54 /r ib ] AVX512VL,AVX512,FUTURE +VFIXUPIMMPS ymmreg|mask|z,ymmreg*,ymmrm256|b32,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w0 54 /r ib ] AVX512VL,AVX512,FUTURE +VFIXUPIMMPS zmmreg|mask|z,zmmreg*,zmmrm512|b32|sae,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w0 54 /r ib ] AVX512,FUTURE +VFIXUPIMMSD xmmreg|mask|z,xmmreg*,xmmrm64|sae,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w1 55 /r ib ] AVX512,FUTURE +VFIXUPIMMSS xmmreg|mask|z,xmmreg*,xmmrm32|sae,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w0 55 /r ib ] AVX512,FUTURE +VFMADD132PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 98 /r ] AVX512VL,AVX512,FUTURE +VFMADD132PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 98 /r ] AVX512VL,AVX512,FUTURE +VFMADD132PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 98 /r ] AVX512,FUTURE +VFMADD132PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 98 /r ] AVX512VL,AVX512,FUTURE +VFMADD132PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 98 /r ] AVX512VL,AVX512,FUTURE +VFMADD132PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 98 /r ] AVX512,FUTURE +VFMADD132SD xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 99 /r ] AVX512,FUTURE +VFMADD132SS xmmreg|mask|z,xmmreg,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 99 /r ] AVX512,FUTURE +VFMADD213PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 a8 /r ] AVX512VL,AVX512,FUTURE +VFMADD213PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 a8 /r ] AVX512VL,AVX512,FUTURE +VFMADD213PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 a8 /r ] AVX512,FUTURE +VFMADD213PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 a8 /r ] AVX512VL,AVX512,FUTURE +VFMADD213PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 a8 /r ] AVX512VL,AVX512,FUTURE +VFMADD213PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 a8 /r ] AVX512,FUTURE +VFMADD213SD xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 a9 /r ] AVX512,FUTURE +VFMADD213SS xmmreg|mask|z,xmmreg,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 a9 /r ] AVX512,FUTURE +VFMADD231PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 b8 /r ] AVX512VL,AVX512,FUTURE +VFMADD231PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 b8 /r ] AVX512VL,AVX512,FUTURE +VFMADD231PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 b8 /r ] AVX512,FUTURE +VFMADD231PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 b8 /r ] AVX512VL,AVX512,FUTURE +VFMADD231PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 b8 /r ] AVX512VL,AVX512,FUTURE +VFMADD231PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 b8 /r ] AVX512,FUTURE +VFMADD231SD xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 b9 /r ] AVX512,FUTURE +VFMADD231SS xmmreg|mask|z,xmmreg,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 b9 /r ] AVX512,FUTURE +VFMADDSUB132PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 96 /r ] AVX512VL,AVX512,FUTURE +VFMADDSUB132PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 96 /r ] AVX512VL,AVX512,FUTURE +VFMADDSUB132PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 96 /r ] AVX512,FUTURE +VFMADDSUB132PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 96 /r ] AVX512VL,AVX512,FUTURE +VFMADDSUB132PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 96 /r ] AVX512VL,AVX512,FUTURE +VFMADDSUB132PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 96 /r ] AVX512,FUTURE +VFMADDSUB213PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 a6 /r ] AVX512VL,AVX512,FUTURE +VFMADDSUB213PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 a6 /r ] AVX512VL,AVX512,FUTURE +VFMADDSUB213PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 a6 /r ] AVX512,FUTURE +VFMADDSUB213PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 a6 /r ] AVX512VL,AVX512,FUTURE +VFMADDSUB213PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 a6 /r ] AVX512VL,AVX512,FUTURE +VFMADDSUB213PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 a6 /r ] AVX512,FUTURE +VFMADDSUB231PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 b6 /r ] AVX512VL,AVX512,FUTURE +VFMADDSUB231PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 b6 /r ] AVX512VL,AVX512,FUTURE +VFMADDSUB231PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 b6 /r ] AVX512,FUTURE +VFMADDSUB231PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 b6 /r ] AVX512VL,AVX512,FUTURE +VFMADDSUB231PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 b6 /r ] AVX512VL,AVX512,FUTURE +VFMADDSUB231PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 b6 /r ] AVX512,FUTURE +VFMSUB132PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 9a /r ] AVX512VL,AVX512,FUTURE +VFMSUB132PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 9a /r ] AVX512VL,AVX512,FUTURE +VFMSUB132PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 9a /r ] AVX512,FUTURE +VFMSUB132PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 9a /r ] AVX512VL,AVX512,FUTURE +VFMSUB132PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 9a /r ] AVX512VL,AVX512,FUTURE +VFMSUB132PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 9a /r ] AVX512,FUTURE +VFMSUB132SD xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 9b /r ] AVX512,FUTURE +VFMSUB132SS xmmreg|mask|z,xmmreg,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 9b /r ] AVX512,FUTURE +VFMSUB213PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 aa /r ] AVX512VL,AVX512,FUTURE +VFMSUB213PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 aa /r ] AVX512VL,AVX512,FUTURE +VFMSUB213PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 aa /r ] AVX512,FUTURE +VFMSUB213PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 aa /r ] AVX512VL,AVX512,FUTURE +VFMSUB213PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 aa /r ] AVX512VL,AVX512,FUTURE +VFMSUB213PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 aa /r ] AVX512,FUTURE +VFMSUB213SD xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 ab /r ] AVX512,FUTURE +VFMSUB213SS xmmreg|mask|z,xmmreg,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 ab /r ] AVX512,FUTURE +VFMSUB231PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 ba /r ] AVX512VL,AVX512,FUTURE +VFMSUB231PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 ba /r ] AVX512VL,AVX512,FUTURE +VFMSUB231PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 ba /r ] AVX512,FUTURE +VFMSUB231PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 ba /r ] AVX512VL,AVX512,FUTURE +VFMSUB231PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 ba /r ] AVX512VL,AVX512,FUTURE +VFMSUB231PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 ba /r ] AVX512,FUTURE +VFMSUB231SD xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 bb /r ] AVX512,FUTURE +VFMSUB231SS xmmreg|mask|z,xmmreg,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 bb /r ] AVX512,FUTURE +VFMSUBADD132PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 97 /r ] AVX512VL,AVX512,FUTURE +VFMSUBADD132PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 97 /r ] AVX512VL,AVX512,FUTURE +VFMSUBADD132PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 97 /r ] AVX512,FUTURE +VFMSUBADD132PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 97 /r ] AVX512VL,AVX512,FUTURE +VFMSUBADD132PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 97 /r ] AVX512VL,AVX512,FUTURE +VFMSUBADD132PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 97 /r ] AVX512,FUTURE +VFMSUBADD213PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 a7 /r ] AVX512VL,AVX512,FUTURE +VFMSUBADD213PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 a7 /r ] AVX512VL,AVX512,FUTURE +VFMSUBADD213PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 a7 /r ] AVX512,FUTURE +VFMSUBADD213PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 a7 /r ] AVX512VL,AVX512,FUTURE +VFMSUBADD213PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 a7 /r ] AVX512VL,AVX512,FUTURE +VFMSUBADD213PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 a7 /r ] AVX512,FUTURE +VFMSUBADD231PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 b7 /r ] AVX512VL,AVX512,FUTURE +VFMSUBADD231PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 b7 /r ] AVX512VL,AVX512,FUTURE +VFMSUBADD231PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 b7 /r ] AVX512,FUTURE +VFMSUBADD231PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 b7 /r ] AVX512VL,AVX512,FUTURE +VFMSUBADD231PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 b7 /r ] AVX512VL,AVX512,FUTURE +VFMSUBADD231PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 b7 /r ] AVX512,FUTURE +VFNMADD132PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 9c /r ] AVX512VL,AVX512,FUTURE +VFNMADD132PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 9c /r ] AVX512VL,AVX512,FUTURE +VFNMADD132PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 9c /r ] AVX512,FUTURE +VFNMADD132PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 9c /r ] AVX512VL,AVX512,FUTURE +VFNMADD132PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 9c /r ] AVX512VL,AVX512,FUTURE +VFNMADD132PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 9c /r ] AVX512,FUTURE +VFNMADD132SD xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 9d /r ] AVX512,FUTURE +VFNMADD132SS xmmreg|mask|z,xmmreg,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 9d /r ] AVX512,FUTURE +VFNMADD213PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 ac /r ] AVX512VL,AVX512,FUTURE +VFNMADD213PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 ac /r ] AVX512VL,AVX512,FUTURE +VFNMADD213PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 ac /r ] AVX512,FUTURE +VFNMADD213PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 ac /r ] AVX512VL,AVX512,FUTURE +VFNMADD213PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 ac /r ] AVX512VL,AVX512,FUTURE +VFNMADD213PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 ac /r ] AVX512,FUTURE +VFNMADD213SD xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 ad /r ] AVX512,FUTURE +VFNMADD213SS xmmreg|mask|z,xmmreg,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 ad /r ] AVX512,FUTURE +VFNMADD231PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 bc /r ] AVX512VL,AVX512,FUTURE +VFNMADD231PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 bc /r ] AVX512VL,AVX512,FUTURE +VFNMADD231PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 bc /r ] AVX512,FUTURE +VFNMADD231PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 bc /r ] AVX512VL,AVX512,FUTURE +VFNMADD231PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 bc /r ] AVX512VL,AVX512,FUTURE +VFNMADD231PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 bc /r ] AVX512,FUTURE +VFNMADD231SD xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 bd /r ] AVX512,FUTURE +VFNMADD231SS xmmreg|mask|z,xmmreg,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 bd /r ] AVX512,FUTURE +VFNMSUB132PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 9e /r ] AVX512VL,AVX512,FUTURE +VFNMSUB132PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 9e /r ] AVX512VL,AVX512,FUTURE +VFNMSUB132PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 9e /r ] AVX512,FUTURE +VFNMSUB132PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 9e /r ] AVX512VL,AVX512,FUTURE +VFNMSUB132PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 9e /r ] AVX512VL,AVX512,FUTURE +VFNMSUB132PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 9e /r ] AVX512,FUTURE +VFNMSUB132SD xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 9f /r ] AVX512,FUTURE +VFNMSUB132SS xmmreg|mask|z,xmmreg,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 9f /r ] AVX512,FUTURE +VFNMSUB213PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 ae /r ] AVX512VL,AVX512,FUTURE +VFNMSUB213PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 ae /r ] AVX512VL,AVX512,FUTURE +VFNMSUB213PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 ae /r ] AVX512,FUTURE +VFNMSUB213PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 ae /r ] AVX512VL,AVX512,FUTURE +VFNMSUB213PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 ae /r ] AVX512VL,AVX512,FUTURE +VFNMSUB213PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 ae /r ] AVX512,FUTURE +VFNMSUB213SD xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 af /r ] AVX512,FUTURE +VFNMSUB213SS xmmreg|mask|z,xmmreg,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 af /r ] AVX512,FUTURE +VFNMSUB231PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 be /r ] AVX512VL,AVX512,FUTURE +VFNMSUB231PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 be /r ] AVX512VL,AVX512,FUTURE +VFNMSUB231PD zmmreg|mask|z,zmmreg,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 be /r ] AVX512,FUTURE +VFNMSUB231PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 be /r ] AVX512VL,AVX512,FUTURE +VFNMSUB231PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 be /r ] AVX512VL,AVX512,FUTURE +VFNMSUB231PS zmmreg|mask|z,zmmreg,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 be /r ] AVX512,FUTURE +VFNMSUB231SD xmmreg|mask|z,xmmreg,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 bf /r ] AVX512,FUTURE +VFNMSUB231SS xmmreg|mask|z,xmmreg,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 bf /r ] AVX512,FUTURE +VFPCLASSPD kreg|mask,xmmrm128|b64,imm8 [rmi:fv: evex.128.66.0f3a.w1 66 /r ib ] AVX512VL,AVX512DQ,FUTURE +VFPCLASSPD kreg|mask,ymmrm256|b64,imm8 [rmi:fv: evex.256.66.0f3a.w1 66 /r ib ] AVX512VL,AVX512DQ,FUTURE +VFPCLASSPD kreg|mask,zmmrm512|b64,imm8 [rmi:fv: evex.512.66.0f3a.w1 66 /r ib ] AVX512DQ,FUTURE +VFPCLASSPS kreg|mask,xmmrm128|b32,imm8 [rmi:fv: evex.128.66.0f3a.w0 66 /r ib ] AVX512VL,AVX512DQ,FUTURE +VFPCLASSPS kreg|mask,ymmrm256|b32,imm8 [rmi:fv: evex.256.66.0f3a.w0 66 /r ib ] AVX512VL,AVX512DQ,FUTURE +VFPCLASSPS kreg|mask,zmmrm512|b32,imm8 [rmi:fv: evex.512.66.0f3a.w0 66 /r ib ] AVX512DQ,FUTURE +VFPCLASSSD kreg|mask,xmmrm64,imm8 [rmi:t1s: evex.128.66.0f3a.w1 67 /r ib ] AVX512DQ,FUTURE +VFPCLASSSS kreg|mask,xmmrm32,imm8 [rmi:t1s: evex.128.66.0f3a.w0 67 /r ib ] AVX512DQ,FUTURE +VGATHERDPD xmmreg|mask,xmem64 [rm:t1s: vsibx evex.128.66.0f38.w1 92 /r ] AVX512VL,AVX512,FUTURE +VGATHERDPD ymmreg|mask,xmem64 [rm:t1s: vsibx evex.256.66.0f38.w1 92 /r ] AVX512VL,AVX512,FUTURE +VGATHERDPD zmmreg|mask,ymem64 [rm:t1s: vsiby evex.512.66.0f38.w1 92 /r ] AVX512,FUTURE +VGATHERDPS xmmreg|mask,xmem32 [rm:t1s: vsibx evex.128.66.0f38.w0 92 /r ] AVX512VL,AVX512,FUTURE +VGATHERDPS ymmreg|mask,ymem32 [rm:t1s: vsiby evex.256.66.0f38.w0 92 /r ] AVX512VL,AVX512,FUTURE +VGATHERDPS zmmreg|mask,zmem32 [rm:t1s: vsibz evex.512.66.0f38.w0 92 /r ] AVX512,FUTURE +VGATHERPF0DPD ymem64|mask [m:t1s: vsiby evex.512.66.0f38.w1 c6 /1 ] AVX512PF,FUTURE +VGATHERPF0DPS zmem32|mask [m:t1s: vsibz evex.512.66.0f38.w0 c6 /1 ] AVX512PF,FUTURE +VGATHERPF0QPD zmem64|mask [m:t1s: vsibz evex.512.66.0f38.w1 c7 /1 ] AVX512PF,FUTURE +VGATHERPF0QPS zmem32|mask [m:t1s: vsibz evex.512.66.0f38.w0 c7 /1 ] AVX512PF,FUTURE +VGATHERPF1DPD ymem64|mask [m:t1s: vsiby evex.512.66.0f38.w1 c6 /2 ] AVX512PF,FUTURE +VGATHERPF1DPS zmem32|mask [m:t1s: vsibz evex.512.66.0f38.w0 c6 /2 ] AVX512PF,FUTURE +VGATHERPF1QPD zmem64|mask [m:t1s: vsibz evex.512.66.0f38.w1 c7 /2 ] AVX512PF,FUTURE +VGATHERPF1QPS zmem32|mask [m:t1s: vsibz evex.512.66.0f38.w0 c7 /2 ] AVX512PF,FUTURE +VGATHERQPD xmmreg|mask,xmem64 [rm:t1s: vsibx evex.128.66.0f38.w1 93 /r ] AVX512VL,AVX512,FUTURE +VGATHERQPD ymmreg|mask,ymem64 [rm:t1s: vsiby evex.256.66.0f38.w1 93 /r ] AVX512VL,AVX512,FUTURE +VGATHERQPD zmmreg|mask,zmem64 [rm:t1s: vsibz evex.512.66.0f38.w1 93 /r ] AVX512,FUTURE +VGATHERQPS xmmreg|mask,xmem32 [rm:t1s: vsibx evex.128.66.0f38.w0 93 /r ] AVX512VL,AVX512,FUTURE +VGATHERQPS xmmreg|mask,ymem32 [rm:t1s: vsiby evex.256.66.0f38.w0 93 /r ] AVX512VL,AVX512,FUTURE +VGATHERQPS ymmreg|mask,zmem32 [rm:t1s: vsibz evex.512.66.0f38.w0 93 /r ] AVX512,FUTURE +VGETEXPPD xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f38.w1 42 /r ] AVX512VL,AVX512,FUTURE +VGETEXPPD ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f38.w1 42 /r ] AVX512VL,AVX512,FUTURE +VGETEXPPD zmmreg|mask|z,zmmrm512|b64|sae [rm:fv: evex.512.66.0f38.w1 42 /r ] AVX512,FUTURE +VGETEXPPS xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.66.0f38.w0 42 /r ] AVX512VL,AVX512,FUTURE +VGETEXPPS ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.66.0f38.w0 42 /r ] AVX512VL,AVX512,FUTURE +VGETEXPPS zmmreg|mask|z,zmmrm512|b32|sae [rm:fv: evex.512.66.0f38.w0 42 /r ] AVX512,FUTURE +VGETEXPSD xmmreg|mask|z,xmmreg,xmmrm64|sae [rvm:t1s: evex.nds.128.66.0f38.w1 43 /r ] AVX512,FUTURE +VGETEXPSS xmmreg|mask|z,xmmreg,xmmrm32|sae [rvm:t1s: evex.nds.128.66.0f38.w0 43 /r ] AVX512,FUTURE +VGETMANTPD xmmreg|mask|z,xmmrm128|b64,imm8 [rmi:fv: evex.128.66.0f3a.w1 26 /r ib ] AVX512VL,AVX512,FUTURE +VGETMANTPD ymmreg|mask|z,ymmrm256|b64,imm8 [rmi:fv: evex.256.66.0f3a.w1 26 /r ib ] AVX512VL,AVX512,FUTURE +VGETMANTPD zmmreg|mask|z,zmmrm512|b64|sae,imm8 [rmi:fv: evex.512.66.0f3a.w1 26 /r ib ] AVX512,FUTURE +VGETMANTPS xmmreg|mask|z,xmmrm128|b32,imm8 [rmi:fv: evex.128.66.0f3a.w0 26 /r ib ] AVX512VL,AVX512,FUTURE +VGETMANTPS ymmreg|mask|z,ymmrm256|b32,imm8 [rmi:fv: evex.256.66.0f3a.w0 26 /r ib ] AVX512VL,AVX512,FUTURE +VGETMANTPS zmmreg|mask|z,zmmrm512|b32|sae,imm8 [rmi:fv: evex.512.66.0f3a.w0 26 /r ib ] AVX512,FUTURE +VGETMANTSD xmmreg|mask|z,xmmreg,xmmrm64|sae,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w1 27 /r ib ] AVX512,FUTURE +VGETMANTSS xmmreg|mask|z,xmmreg,xmmrm32|sae,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w0 27 /r ib ] AVX512,FUTURE +VINSERTF32X4 ymmreg|mask|z,ymmreg*,xmmrm128,imm8 [rvmi:t4: evex.nds.256.66.0f3a.w0 18 /r ib ] AVX512VL,AVX512,FUTURE +VINSERTF32X4 zmmreg|mask|z,zmmreg*,xmmrm128,imm8 [rvmi:t4: evex.nds.512.66.0f3a.w0 18 /r ib ] AVX512,FUTURE +VINSERTF32X8 zmmreg|mask|z,zmmreg*,ymmrm256,imm8 [rvmi:t8: evex.nds.512.66.0f3a.w0 1a /r ib ] AVX512DQ,FUTURE +VINSERTF64X2 ymmreg|mask|z,ymmreg*,xmmrm128,imm8 [rvmi:t2: evex.nds.256.66.0f3a.w1 18 /r ib ] AVX512VL,AVX512DQ,FUTURE +VINSERTF64X2 zmmreg|mask|z,zmmreg*,xmmrm128,imm8 [rvmi:t2: evex.nds.512.66.0f3a.w1 18 /r ib ] AVX512DQ,FUTURE +VINSERTF64X4 zmmreg|mask|z,zmmreg*,ymmrm256,imm8 [rvmi:t4: evex.nds.512.66.0f3a.w1 1a /r ib ] AVX512,FUTURE +VINSERTI32X4 ymmreg|mask|z,ymmreg*,xmmrm128,imm8 [rvmi:t4: evex.nds.256.66.0f3a.w0 38 /r ib ] AVX512VL,AVX512,FUTURE +VINSERTI32X4 zmmreg|mask|z,zmmreg*,xmmrm128,imm8 [rvmi:t4: evex.nds.512.66.0f3a.w0 38 /r ib ] AVX512,FUTURE +VINSERTI32X8 zmmreg|mask|z,zmmreg*,ymmrm256,imm8 [rvmi:t8: evex.nds.512.66.0f3a.w0 3a /r ib ] AVX512DQ,FUTURE +VINSERTI64X2 ymmreg|mask|z,ymmreg*,xmmrm128,imm8 [rvmi:t2: evex.nds.256.66.0f3a.w1 38 /r ib ] AVX512VL,AVX512DQ,FUTURE +VINSERTI64X2 zmmreg|mask|z,zmmreg*,xmmrm128,imm8 [rvmi:t2: evex.nds.512.66.0f3a.w1 38 /r ib ] AVX512DQ,FUTURE +VINSERTI64X4 zmmreg|mask|z,zmmreg*,ymmrm256,imm8 [rvmi:t4: evex.nds.512.66.0f3a.w1 3a /r ib ] AVX512,FUTURE +VINSERTPS xmmreg,xmmreg*,xmmrm32,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w0 21 /r ib ] AVX512,FUTURE +VMAXPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 5f /r ] AVX512VL,AVX512,FUTURE +VMAXPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 5f /r ] AVX512VL,AVX512,FUTURE +VMAXPD zmmreg|mask|z,zmmreg*,zmmrm512|b64|sae [rvm:fv: evex.nds.512.66.0f.w1 5f /r ] AVX512,FUTURE +VMAXPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 5f /r ] AVX512VL,AVX512,FUTURE +VMAXPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 5f /r ] AVX512VL,AVX512,FUTURE +VMAXPS zmmreg|mask|z,zmmreg*,zmmrm512|b32|sae [rvm:fv: evex.nds.512.0f.w0 5f /r ] AVX512,FUTURE +VMAXSD xmmreg|mask|z,xmmreg*,xmmrm64|sae [rvm:t1s: evex.nds.128.f2.0f.w1 5f /r ] AVX512,FUTURE +VMAXSS xmmreg|mask|z,xmmreg*,xmmrm32|sae [rvm:t1s: evex.nds.128.f3.0f.w0 5f /r ] AVX512,FUTURE +VMINPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 5d /r ] AVX512VL,AVX512,FUTURE +VMINPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 5d /r ] AVX512VL,AVX512,FUTURE +VMINPD zmmreg|mask|z,zmmreg*,zmmrm512|b64|sae [rvm:fv: evex.nds.512.66.0f.w1 5d /r ] AVX512,FUTURE +VMINPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 5d /r ] AVX512VL,AVX512,FUTURE +VMINPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 5d /r ] AVX512VL,AVX512,FUTURE +VMINPS zmmreg|mask|z,zmmreg*,zmmrm512|b32|sae [rvm:fv: evex.nds.512.0f.w0 5d /r ] AVX512,FUTURE +VMINSD xmmreg|mask|z,xmmreg*,xmmrm64|sae [rvm:t1s: evex.nds.128.f2.0f.w1 5d /r ] AVX512,FUTURE +VMINSS xmmreg|mask|z,xmmreg*,xmmrm32|sae [rvm:t1s: evex.nds.128.f3.0f.w0 5d /r ] AVX512,FUTURE +VMOVAPD xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.66.0f.w1 28 /r ] AVX512VL,AVX512,FUTURE +VMOVAPD ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.66.0f.w1 28 /r ] AVX512VL,AVX512,FUTURE +VMOVAPD zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.66.0f.w1 28 /r ] AVX512,FUTURE +VMOVAPD xmmreg|mask|z,xmmreg [mr: evex.128.66.0f.w1 29 /r ] AVX512VL,AVX512,FUTURE +VMOVAPD ymmreg|mask|z,ymmreg [mr: evex.256.66.0f.w1 29 /r ] AVX512VL,AVX512,FUTURE +VMOVAPD zmmreg|mask|z,zmmreg [mr: evex.512.66.0f.w1 29 /r ] AVX512,FUTURE +VMOVAPD mem128|mask,xmmreg [mr:fvm: evex.128.66.0f.w1 29 /r ] AVX512VL,AVX512,FUTURE +VMOVAPD mem256|mask,ymmreg [mr:fvm: evex.256.66.0f.w1 29 /r ] AVX512VL,AVX512,FUTURE +VMOVAPD mem512|mask,zmmreg [mr:fvm: evex.512.66.0f.w1 29 /r ] AVX512,FUTURE +VMOVAPS xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.0f.w0 28 /r ] AVX512VL,AVX512,FUTURE +VMOVAPS ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.0f.w0 28 /r ] AVX512VL,AVX512,FUTURE +VMOVAPS zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.0f.w0 28 /r ] AVX512,FUTURE +VMOVAPS xmmreg|mask|z,xmmreg [mr: evex.128.0f.w0 29 /r ] AVX512VL,AVX512,FUTURE +VMOVAPS ymmreg|mask|z,ymmreg [mr: evex.256.0f.w0 29 /r ] AVX512VL,AVX512,FUTURE +VMOVAPS zmmreg|mask|z,zmmreg [mr: evex.512.0f.w0 29 /r ] AVX512,FUTURE +VMOVAPS mem128|mask,xmmreg [mr:fvm: evex.128.0f.w0 29 /r ] AVX512VL,AVX512,FUTURE +VMOVAPS mem256|mask,ymmreg [mr:fvm: evex.256.0f.w0 29 /r ] AVX512VL,AVX512,FUTURE +VMOVAPS mem512|mask,zmmreg [mr:fvm: evex.512.0f.w0 29 /r ] AVX512,FUTURE +VMOVD xmmreg,rm32 [rm:t1s: evex.128.66.0f.w0 6e /r ] AVX512,FUTURE +VMOVD rm32,xmmreg [mr:t1s: evex.128.66.0f.w0 7e /r ] AVX512,FUTURE +VMOVDDUP xmmreg|mask|z,xmmrm64 [rm:dup: evex.128.f2.0f.w1 12 /r ] AVX512VL,AVX512,FUTURE +VMOVDDUP ymmreg|mask|z,ymmrm256 [rm:dup: evex.256.f2.0f.w1 12 /r ] AVX512VL,AVX512,FUTURE +VMOVDDUP zmmreg|mask|z,zmmrm512 [rm:dup: evex.512.f2.0f.w1 12 /r ] AVX512,FUTURE +VMOVDQA32 xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.66.0f.w0 6f /r ] AVX512VL,AVX512,FUTURE +VMOVDQA32 ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.66.0f.w0 6f /r ] AVX512VL,AVX512,FUTURE +VMOVDQA32 zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.66.0f.w0 6f /r ] AVX512,FUTURE +VMOVDQA32 xmmrm128|mask|z,xmmreg [mr:fvm: evex.128.66.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE +VMOVDQA32 ymmrm256|mask|z,ymmreg [mr:fvm: evex.256.66.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE +VMOVDQA32 zmmrm512|mask|z,zmmreg [mr:fvm: evex.512.66.0f.w0 7f /r ] AVX512,FUTURE +VMOVDQA64 xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.66.0f.w1 6f /r ] AVX512VL,AVX512,FUTURE +VMOVDQA64 ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.66.0f.w1 6f /r ] AVX512VL,AVX512,FUTURE +VMOVDQA64 zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.66.0f.w1 6f /r ] AVX512,FUTURE +VMOVDQA64 xmmrm128|mask|z,xmmreg [mr:fvm: evex.128.66.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE +VMOVDQA64 ymmrm256|mask|z,ymmreg [mr:fvm: evex.256.66.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE +VMOVDQA64 zmmrm512|mask|z,zmmreg [mr:fvm: evex.512.66.0f.w1 7f /r ] AVX512,FUTURE +VMOVDQU16 xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.f2.0f.w1 6f /r ] AVX512VL,AVX512BW,FUTURE +VMOVDQU16 ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.f2.0f.w1 6f /r ] AVX512VL,AVX512BW,FUTURE +VMOVDQU16 zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.f2.0f.w1 6f /r ] AVX512BW,FUTURE +VMOVDQU16 xmmrm128|mask|z,xmmreg [mr:fvm: evex.128.f2.0f.w1 7f /r ] AVX512VL,AVX512BW,FUTURE +VMOVDQU16 ymmrm256|mask|z,ymmreg [mr:fvm: evex.256.f2.0f.w1 7f /r ] AVX512VL,AVX512BW,FUTURE +VMOVDQU16 zmmrm512|mask|z,zmmreg [mr:fvm: evex.512.f2.0f.w1 7f /r ] AVX512BW,FUTURE +VMOVDQU32 xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.f3.0f.w0 6f /r ] AVX512VL,AVX512,FUTURE +VMOVDQU32 ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.f3.0f.w0 6f /r ] AVX512VL,AVX512,FUTURE +VMOVDQU32 zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.f3.0f.w0 6f /r ] AVX512,FUTURE +VMOVDQU32 xmmrm128|mask|z,xmmreg [mr:fvm: evex.128.f3.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE +VMOVDQU32 ymmrm256|mask|z,ymmreg [mr:fvm: evex.256.f3.0f.w0 7f /r ] AVX512VL,AVX512,FUTURE +VMOVDQU32 zmmrm512|mask|z,zmmreg [mr:fvm: evex.512.f3.0f.w0 7f /r ] AVX512,FUTURE +VMOVDQU64 xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.f3.0f.w1 6f /r ] AVX512VL,AVX512,FUTURE +VMOVDQU64 ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.f3.0f.w1 6f /r ] AVX512VL,AVX512,FUTURE +VMOVDQU64 zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.f3.0f.w1 6f /r ] AVX512,FUTURE +VMOVDQU64 xmmrm128|mask|z,xmmreg [mr:fvm: evex.128.f3.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE +VMOVDQU64 ymmrm256|mask|z,ymmreg [mr:fvm: evex.256.f3.0f.w1 7f /r ] AVX512VL,AVX512,FUTURE +VMOVDQU64 zmmrm512|mask|z,zmmreg [mr:fvm: evex.512.f3.0f.w1 7f /r ] AVX512,FUTURE +VMOVDQU8 xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.f2.0f.w0 6f /r ] AVX512VL,AVX512BW,FUTURE +VMOVDQU8 ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.f2.0f.w0 6f /r ] AVX512VL,AVX512BW,FUTURE +VMOVDQU8 zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.f2.0f.w0 6f /r ] AVX512BW,FUTURE +VMOVDQU8 xmmrm128|mask|z,xmmreg [mr:fvm: evex.128.f2.0f.w0 7f /r ] AVX512VL,AVX512BW,FUTURE +VMOVDQU8 ymmrm256|mask|z,ymmreg [mr:fvm: evex.256.f2.0f.w0 7f /r ] AVX512VL,AVX512BW,FUTURE +VMOVDQU8 zmmrm512|mask|z,zmmreg [mr:fvm: evex.512.f2.0f.w0 7f /r ] AVX512BW,FUTURE +VMOVHLPS xmmreg,xmmreg*,xmmreg [rvm: evex.nds.128.0f.w0 12 /r ] AVX512,FUTURE +VMOVHPD xmmreg,xmmreg*,mem64 [rvm:t1s: evex.nds.128.66.0f.w1 16 /r ] AVX512,FUTURE +VMOVHPD mem64,xmmreg [mr:t1s: evex.128.66.0f.w1 17 /r ] AVX512,FUTURE +VMOVHPS xmmreg,xmmreg*,mem64 [rvm:t2: evex.nds.128.0f.w0 16 /r ] AVX512,FUTURE +VMOVHPS mem64,xmmreg [mr:t2: evex.128.0f.w0 17 /r ] AVX512,FUTURE +VMOVLHPS xmmreg,xmmreg*,xmmreg [rvm: evex.nds.128.0f.w0 16 /r ] AVX512,FUTURE +VMOVLPD xmmreg,xmmreg*,mem64 [rvm:t1s: evex.nds.128.66.0f.w1 12 /r ] AVX512,FUTURE +VMOVLPD mem64,xmmreg [mr:t1s: evex.128.66.0f.w1 13 /r ] AVX512,FUTURE +VMOVLPS xmmreg,xmmreg*,mem64 [rvm:t2: evex.nds.128.0f.w0 12 /r ] AVX512,FUTURE +VMOVLPS mem64,xmmreg [mr:t2: evex.128.0f.w0 13 /r ] AVX512,FUTURE +VMOVNTDQ mem128,xmmreg [mr:fvm: evex.128.66.0f.w0 e7 /r ] AVX512VL,AVX512,FUTURE +VMOVNTDQ mem256,ymmreg [mr:fvm: evex.256.66.0f.w0 e7 /r ] AVX512VL,AVX512,FUTURE +VMOVNTDQ mem512,zmmreg [mr:fvm: evex.512.66.0f.w0 e7 /r ] AVX512,FUTURE +VMOVNTDQA xmmreg,mem128 [rm:fvm: evex.128.66.0f38.w0 2a /r ] AVX512VL,AVX512,FUTURE +VMOVNTDQA ymmreg,mem256 [rm:fvm: evex.256.66.0f38.w0 2a /r ] AVX512VL,AVX512,FUTURE +VMOVNTDQA zmmreg,mem512 [rm:fvm: evex.512.66.0f38.w0 2a /r ] AVX512,FUTURE +VMOVNTPD mem128,xmmreg [mr:fvm: evex.128.66.0f.w1 2b /r ] AVX512VL,AVX512,FUTURE +VMOVNTPD mem256,ymmreg [mr:fvm: evex.256.66.0f.w1 2b /r ] AVX512VL,AVX512,FUTURE +VMOVNTPD mem512,zmmreg [mr:fvm: evex.512.66.0f.w1 2b /r ] AVX512,FUTURE +VMOVNTPS mem128,xmmreg [mr:fvm: evex.128.0f.w0 2b /r ] AVX512VL,AVX512,FUTURE +VMOVNTPS mem256,ymmreg [mr:fvm: evex.256.0f.w0 2b /r ] AVX512VL,AVX512,FUTURE +VMOVNTPS mem512,zmmreg [mr:fvm: evex.512.0f.w0 2b /r ] AVX512,FUTURE +VMOVQ xmmreg,rm64 [rm:t1s: evex.128.66.0f.w1 6e /r ] AVX512,FUTURE +VMOVQ rm64,xmmreg [mr:t1s: evex.128.66.0f.w1 7e /r ] AVX512,FUTURE +VMOVQ xmmreg,xmmrm64 [rm:t1s: evex.128.f3.0f.w1 7e /r ] AVX512,FUTURE +VMOVQ xmmrm64,xmmreg [mr:t1s: evex.128.66.0f.w1 d6 /r ] AVX512,FUTURE +VMOVSD xmmreg|mask|z,mem64 [rm:t1s: evex.128.f2.0f.w1 10 /r ] AVX512,FUTURE +VMOVSD mem64|mask,xmmreg [mr:t1s: evex.128.f2.0f.w1 11 /r ] AVX512,FUTURE +VMOVSD xmmreg|mask|z,xmmreg*,xmmreg [rvm: evex.nds.128.f2.0f.w1 10 /r ] AVX512,FUTURE +VMOVSD xmmreg|mask|z,xmmreg*,xmmreg [mvr: evex.nds.128.f2.0f.w1 11 /r ] AVX512,FUTURE +VMOVSHDUP xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.f3.0f.w0 16 /r ] AVX512VL,AVX512,FUTURE +VMOVSHDUP ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.f3.0f.w0 16 /r ] AVX512VL,AVX512,FUTURE +VMOVSHDUP zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.f3.0f.w0 16 /r ] AVX512,FUTURE +VMOVSLDUP xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.f3.0f.w0 12 /r ] AVX512VL,AVX512,FUTURE +VMOVSLDUP ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.f3.0f.w0 12 /r ] AVX512VL,AVX512,FUTURE +VMOVSLDUP zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.f3.0f.w0 12 /r ] AVX512,FUTURE +VMOVSS xmmreg|mask|z,mem32 [rm:t1s: evex.128.f3.0f.w0 10 /r ] AVX512,FUTURE +VMOVSS mem32|mask,xmmreg [mr:t1s: evex.128.f3.0f.w0 11 /r ] AVX512,FUTURE +VMOVSS xmmreg|mask|z,xmmreg*,xmmreg [rvm: evex.nds.128.f3.0f.w0 10 /r ] AVX512,FUTURE +VMOVSS xmmreg|mask|z,xmmreg*,xmmreg [mvr: evex.nds.128.f3.0f.w0 11 /r ] AVX512,FUTURE +VMOVUPD xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.66.0f.w1 10 /r ] AVX512VL,AVX512,FUTURE +VMOVUPD ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.66.0f.w1 10 /r ] AVX512VL,AVX512,FUTURE +VMOVUPD zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.66.0f.w1 10 /r ] AVX512,FUTURE +VMOVUPD xmmreg|mask|z,xmmreg [mr: evex.128.66.0f.w1 11 /r ] AVX512VL,AVX512,FUTURE +VMOVUPD ymmreg|mask|z,ymmreg [mr: evex.256.66.0f.w1 11 /r ] AVX512VL,AVX512,FUTURE +VMOVUPD zmmreg|mask|z,zmmreg [mr: evex.512.66.0f.w1 11 /r ] AVX512,FUTURE +VMOVUPD mem128|mask,xmmreg [mr:fvm: evex.128.66.0f.w1 11 /r ] AVX512VL,AVX512,FUTURE +VMOVUPD mem256|mask,ymmreg [mr:fvm: evex.256.66.0f.w1 11 /r ] AVX512VL,AVX512,FUTURE +VMOVUPD mem512|mask,zmmreg [mr:fvm: evex.512.66.0f.w1 11 /r ] AVX512,FUTURE +VMOVUPS xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.0f.w0 10 /r ] AVX512VL,AVX512,FUTURE +VMOVUPS ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.0f.w0 10 /r ] AVX512VL,AVX512,FUTURE +VMOVUPS zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.0f.w0 10 /r ] AVX512,FUTURE +VMOVUPS xmmreg|mask|z,xmmreg [mr: evex.128.0f.w0 11 /r ] AVX512VL,AVX512,FUTURE +VMOVUPS ymmreg|mask|z,ymmreg [mr: evex.256.0f.w0 11 /r ] AVX512VL,AVX512,FUTURE +VMOVUPS zmmreg|mask|z,zmmreg [mr: evex.512.0f.w0 11 /r ] AVX512,FUTURE +VMOVUPS mem128|mask,xmmreg [mr:fvm: evex.128.0f.w0 11 /r ] AVX512VL,AVX512,FUTURE +VMOVUPS mem256|mask,ymmreg [mr:fvm: evex.256.0f.w0 11 /r ] AVX512VL,AVX512,FUTURE +VMOVUPS mem512|mask,zmmreg [mr:fvm: evex.512.0f.w0 11 /r ] AVX512,FUTURE +VMULPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 59 /r ] AVX512VL,AVX512,FUTURE +VMULPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 59 /r ] AVX512VL,AVX512,FUTURE +VMULPD zmmreg|mask|z,zmmreg*,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f.w1 59 /r ] AVX512,FUTURE +VMULPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 59 /r ] AVX512VL,AVX512,FUTURE +VMULPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 59 /r ] AVX512VL,AVX512,FUTURE +VMULPS zmmreg|mask|z,zmmreg*,zmmrm512|b32|er [rvm:fv: evex.nds.512.0f.w0 59 /r ] AVX512,FUTURE +VMULSD xmmreg|mask|z,xmmreg*,xmmrm64|er [rvm:t1s: evex.nds.128.f2.0f.w1 59 /r ] AVX512,FUTURE +VMULSS xmmreg|mask|z,xmmreg*,xmmrm32|er [rvm:t1s: evex.nds.128.f3.0f.w0 59 /r ] AVX512,FUTURE +VORPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 56 /r ] AVX512VL,AVX512DQ,FUTURE +VORPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 56 /r ] AVX512VL,AVX512DQ,FUTURE +VORPD zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 56 /r ] AVX512DQ,FUTURE +VORPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 56 /r ] AVX512VL,AVX512DQ,FUTURE +VORPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 56 /r ] AVX512VL,AVX512DQ,FUTURE +VORPS zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.0f.w0 56 /r ] AVX512DQ,FUTURE +VPABSB xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.66.0f38.wig 1c /r ] AVX512VL,AVX512BW,FUTURE +VPABSB ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.66.0f38.wig 1c /r ] AVX512VL,AVX512BW,FUTURE +VPABSB zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.66.0f38.wig 1c /r ] AVX512BW,FUTURE +VPABSD xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.66.0f38.w0 1e /r ] AVX512VL,AVX512,FUTURE +VPABSD ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.66.0f38.w0 1e /r ] AVX512VL,AVX512,FUTURE +VPABSD zmmreg|mask|z,zmmrm512|b32 [rm:fv: evex.512.66.0f38.w0 1e /r ] AVX512,FUTURE +VPABSQ xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f38.w1 1f /r ] AVX512VL,AVX512,FUTURE +VPABSQ ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f38.w1 1f /r ] AVX512VL,AVX512,FUTURE +VPABSQ zmmreg|mask|z,zmmrm512|b64 [rm:fv: evex.512.66.0f38.w1 1f /r ] AVX512,FUTURE +VPABSW xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.66.0f38.wig 1d /r ] AVX512VL,AVX512BW,FUTURE +VPABSW ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.66.0f38.wig 1d /r ] AVX512VL,AVX512BW,FUTURE +VPABSW zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.66.0f38.wig 1d /r ] AVX512BW,FUTURE +VPACKSSDW xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f.w0 6b /r ] AVX512VL,AVX512BW,FUTURE +VPACKSSDW ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f.w0 6b /r ] AVX512VL,AVX512BW,FUTURE +VPACKSSDW zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f.w0 6b /r ] AVX512BW,FUTURE +VPACKSSWB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig 63 /r ] AVX512VL,AVX512BW,FUTURE +VPACKSSWB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig 63 /r ] AVX512VL,AVX512BW,FUTURE +VPACKSSWB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig 63 /r ] AVX512BW,FUTURE +VPACKUSDW xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 2b /r ] AVX512VL,AVX512BW,FUTURE +VPACKUSDW ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 2b /r ] AVX512VL,AVX512BW,FUTURE +VPACKUSDW zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 2b /r ] AVX512BW,FUTURE +VPACKUSWB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig 67 /r ] AVX512VL,AVX512BW,FUTURE +VPACKUSWB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig 67 /r ] AVX512VL,AVX512BW,FUTURE +VPACKUSWB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig 67 /r ] AVX512BW,FUTURE +VPADDB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig fc /r ] AVX512VL,AVX512BW,FUTURE +VPADDB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig fc /r ] AVX512VL,AVX512BW,FUTURE +VPADDB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig fc /r ] AVX512BW,FUTURE +VPADDD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f.w0 fe /r ] AVX512VL,AVX512,FUTURE +VPADDD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f.w0 fe /r ] AVX512VL,AVX512,FUTURE +VPADDD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f.w0 fe /r ] AVX512,FUTURE +VPADDQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 d4 /r ] AVX512VL,AVX512,FUTURE +VPADDQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 d4 /r ] AVX512VL,AVX512,FUTURE +VPADDQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 d4 /r ] AVX512,FUTURE +VPADDSB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig ec /r ] AVX512VL,AVX512BW,FUTURE +VPADDSB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig ec /r ] AVX512VL,AVX512BW,FUTURE +VPADDSB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig ec /r ] AVX512BW,FUTURE +VPADDSW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig ed /r ] AVX512VL,AVX512BW,FUTURE +VPADDSW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig ed /r ] AVX512VL,AVX512BW,FUTURE +VPADDSW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig ed /r ] AVX512BW,FUTURE +VPADDUSB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig dc /r ] AVX512VL,AVX512BW,FUTURE +VPADDUSB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig dc /r ] AVX512VL,AVX512BW,FUTURE +VPADDUSB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig dc /r ] AVX512BW,FUTURE +VPADDUSW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig dd /r ] AVX512VL,AVX512BW,FUTURE +VPADDUSW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig dd /r ] AVX512VL,AVX512BW,FUTURE +VPADDUSW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig dd /r ] AVX512BW,FUTURE +VPADDW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig fd /r ] AVX512VL,AVX512BW,FUTURE +VPADDW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig fd /r ] AVX512VL,AVX512BW,FUTURE +VPADDW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig fd /r ] AVX512BW,FUTURE +VPALIGNR xmmreg|mask|z,xmmreg*,xmmrm128,imm8 [rvmi:fvm: evex.nds.128.66.0f3a.wig 0f /r ib ] AVX512VL,AVX512BW,FUTURE +VPALIGNR ymmreg|mask|z,ymmreg*,ymmrm256,imm8 [rvmi:fvm: evex.nds.256.66.0f3a.wig 0f /r ib ] AVX512VL,AVX512BW,FUTURE +VPALIGNR zmmreg|mask|z,zmmreg*,zmmrm512,imm8 [rvmi:fvm: evex.nds.512.66.0f3a.wig 0f /r ib ] AVX512BW,FUTURE +VPANDD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f.w0 db /r ] AVX512VL,AVX512,FUTURE +VPANDD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f.w0 db /r ] AVX512VL,AVX512,FUTURE +VPANDD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f.w0 db /r ] AVX512,FUTURE +VPANDND xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f.w0 df /r ] AVX512VL,AVX512,FUTURE +VPANDND ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f.w0 df /r ] AVX512VL,AVX512,FUTURE +VPANDND zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f.w0 df /r ] AVX512,FUTURE +VPANDNQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 df /r ] AVX512VL,AVX512,FUTURE +VPANDNQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 df /r ] AVX512VL,AVX512,FUTURE +VPANDNQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 df /r ] AVX512,FUTURE +VPANDQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 db /r ] AVX512VL,AVX512,FUTURE +VPANDQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 db /r ] AVX512VL,AVX512,FUTURE +VPANDQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 db /r ] AVX512,FUTURE +VPAVGB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig e0 /r ] AVX512VL,AVX512BW,FUTURE +VPAVGB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig e0 /r ] AVX512VL,AVX512BW,FUTURE +VPAVGB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig e0 /r ] AVX512BW,FUTURE +VPAVGW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig e3 /r ] AVX512VL,AVX512BW,FUTURE +VPAVGW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig e3 /r ] AVX512VL,AVX512BW,FUTURE +VPAVGW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig e3 /r ] AVX512BW,FUTURE +VPBLENDMB xmmreg|mask|z,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w0 66 /r ] AVX512VL,AVX512BW,FUTURE +VPBLENDMB ymmreg|mask|z,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w0 66 /r ] AVX512VL,AVX512BW,FUTURE +VPBLENDMB zmmreg|mask|z,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w0 66 /r ] AVX512BW,FUTURE +VPBLENDMD xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 64 /r ] AVX512VL,AVX512,FUTURE +VPBLENDMD ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 64 /r ] AVX512VL,AVX512,FUTURE +VPBLENDMD zmmreg|mask|z,zmmreg,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 64 /r ] AVX512,FUTURE +VPBLENDMQ xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 64 /r ] AVX512VL,AVX512,FUTURE +VPBLENDMQ ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 64 /r ] AVX512VL,AVX512,FUTURE +VPBLENDMQ zmmreg|mask|z,zmmreg,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 64 /r ] AVX512,FUTURE +VPBLENDMW xmmreg|mask|z,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w1 66 /r ] AVX512VL,AVX512BW,FUTURE +VPBLENDMW ymmreg|mask|z,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w1 66 /r ] AVX512VL,AVX512BW,FUTURE +VPBLENDMW zmmreg|mask|z,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w1 66 /r ] AVX512BW,FUTURE +VPBROADCASTB xmmreg|mask|z,xmmrm8 [rm:t1s8: evex.128.66.0f38.w0 78 /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTB ymmreg|mask|z,xmmrm8 [rm:t1s8: evex.256.66.0f38.w0 78 /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTB zmmreg|mask|z,xmmrm8 [rm:t1s8: evex.512.66.0f38.w0 78 /r ] AVX512BW,FUTURE +VPBROADCASTB xmmreg|mask|z,reg8 [rm: evex.128.66.0f38.w0 7a /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTB xmmreg|mask|z,reg16 [rm: evex.128.66.0f38.w0 7a /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTB xmmreg|mask|z,reg32 [rm: evex.128.66.0f38.w0 7a /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTB xmmreg|mask|z,reg64 [rm: evex.128.66.0f38.w0 7a /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTB ymmreg|mask|z,reg8 [rm: evex.256.66.0f38.w0 7a /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTB ymmreg|mask|z,reg16 [rm: evex.256.66.0f38.w0 7a /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTB ymmreg|mask|z,reg32 [rm: evex.256.66.0f38.w0 7a /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTB ymmreg|mask|z,reg64 [rm: evex.256.66.0f38.w0 7a /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTB zmmreg|mask|z,reg8 [rm: evex.512.66.0f38.w0 7a /r ] AVX512BW,FUTURE +VPBROADCASTB zmmreg|mask|z,reg16 [rm: evex.512.66.0f38.w0 7a /r ] AVX512BW,FUTURE +VPBROADCASTB zmmreg|mask|z,reg32 [rm: evex.512.66.0f38.w0 7a /r ] AVX512BW,FUTURE +VPBROADCASTB zmmreg|mask|z,reg64 [rm: evex.512.66.0f38.w0 7a /r ] AVX512BW,FUTURE +VPBROADCASTD xmmreg|mask|z,mem32 [rm:t1s: evex.128.66.0f38.w0 58 /r ] AVX512VL,AVX512,FUTURE +VPBROADCASTD ymmreg|mask|z,mem32 [rm:t1s: evex.256.66.0f38.w0 58 /r ] AVX512VL,AVX512,FUTURE +VPBROADCASTD zmmreg|mask|z,mem32 [rm:t1s: evex.512.66.0f38.w0 58 /r ] AVX512,FUTURE +VPBROADCASTD xmmreg|mask|z,xmmreg [rm: evex.128.66.0f38.w0 58 /r ] AVX512VL,AVX512,FUTURE +VPBROADCASTD ymmreg|mask|z,xmmreg [rm: evex.256.66.0f38.w0 58 /r ] AVX512VL,AVX512,FUTURE +VPBROADCASTD zmmreg|mask|z,xmmreg [rm: evex.512.66.0f38.w0 58 /r ] AVX512,FUTURE +VPBROADCASTD xmmreg|mask|z,reg32 [rm: evex.128.66.0f38.w0 7c /r ] AVX512VL,AVX512,FUTURE +VPBROADCASTD ymmreg|mask|z,reg32 [rm: evex.256.66.0f38.w0 7c /r ] AVX512VL,AVX512,FUTURE +VPBROADCASTD zmmreg|mask|z,reg32 [rm: evex.512.66.0f38.w0 7c /r ] AVX512,FUTURE +VPBROADCASTMB2Q xmmreg,kreg [rm: evex.128.f3.0f38.w1 2a /r ] AVX512VL,AVX512CD,FUTURE +VPBROADCASTMB2Q ymmreg,kreg [rm: evex.256.f3.0f38.w1 2a /r ] AVX512VL,AVX512CD,FUTURE +VPBROADCASTMB2Q zmmreg,kreg [rm: evex.512.f3.0f38.w1 2a /r ] AVX512CD,FUTURE +VPBROADCASTMW2D xmmreg,kreg [rm: evex.128.f3.0f38.w0 3a /r ] AVX512VL,AVX512CD,FUTURE +VPBROADCASTMW2D ymmreg,kreg [rm: evex.256.f3.0f38.w0 3a /r ] AVX512VL,AVX512CD,FUTURE +VPBROADCASTMW2D zmmreg,kreg [rm: evex.512.f3.0f38.w0 3a /r ] AVX512CD,FUTURE +VPBROADCASTQ xmmreg|mask|z,mem64 [rm:t1s: evex.128.66.0f38.w1 59 /r ] AVX512VL,AVX512,FUTURE +VPBROADCASTQ ymmreg|mask|z,mem64 [rm:t1s: evex.256.66.0f38.w1 59 /r ] AVX512VL,AVX512,FUTURE +VPBROADCASTQ zmmreg|mask|z,mem64 [rm:t1s: evex.512.66.0f38.w1 59 /r ] AVX512,FUTURE +VPBROADCASTQ xmmreg|mask|z,xmmreg [rm: evex.128.66.0f38.w1 59 /r ] AVX512VL,AVX512,FUTURE +VPBROADCASTQ ymmreg|mask|z,xmmreg [rm: evex.256.66.0f38.w1 59 /r ] AVX512VL,AVX512,FUTURE +VPBROADCASTQ zmmreg|mask|z,xmmreg [rm: evex.512.66.0f38.w1 59 /r ] AVX512,FUTURE +VPBROADCASTQ xmmreg|mask|z,reg64 [rm: evex.128.66.0f38.w1 7c /r ] AVX512VL,AVX512,FUTURE +VPBROADCASTQ ymmreg|mask|z,reg64 [rm: evex.256.66.0f38.w1 7c /r ] AVX512VL,AVX512,FUTURE +VPBROADCASTQ zmmreg|mask|z,reg64 [rm: evex.512.66.0f38.w1 7c /r ] AVX512,FUTURE +VPBROADCASTW xmmreg|mask|z,xmmrm16 [rm:t1s16: evex.128.66.0f38.w0 79 /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTW ymmreg|mask|z,xmmrm16 [rm:t1s16: evex.256.66.0f38.w0 79 /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTW zmmreg|mask|z,xmmrm16 [rm:t1s16: evex.512.66.0f38.w0 79 /r ] AVX512BW,FUTURE +VPBROADCASTW xmmreg|mask|z,reg16 [rm: evex.128.66.0f38.w0 7b /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTW xmmreg|mask|z,reg32 [rm: evex.128.66.0f38.w0 7b /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTW xmmreg|mask|z,reg64 [rm: evex.128.66.0f38.w0 7b /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTW ymmreg|mask|z,reg16 [rm: evex.256.66.0f38.w0 7b /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTW ymmreg|mask|z,reg32 [rm: evex.256.66.0f38.w0 7b /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTW ymmreg|mask|z,reg64 [rm: evex.256.66.0f38.w0 7b /r ] AVX512VL,AVX512BW,FUTURE +VPBROADCASTW zmmreg|mask|z,reg16 [rm: evex.512.66.0f38.w0 7b /r ] AVX512BW,FUTURE +VPBROADCASTW zmmreg|mask|z,reg32 [rm: evex.512.66.0f38.w0 7b /r ] AVX512BW,FUTURE +VPBROADCASTW zmmreg|mask|z,reg64 [rm: evex.512.66.0f38.w0 7b /r ] AVX512BW,FUTURE +; VPCMPEQx and VPCMPGTx come in two flavors: SSE-like, and VPCMP with immediate. They are both +; valid, but prefer the SSE version as it is one byte shorter. +VPCMPEQB kreg|mask,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig 74 /r ] AVX512VL,AVX512BW,FUTURE +VPCMPEQB kreg|mask,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig 74 /r ] AVX512VL,AVX512BW,FUTURE +VPCMPEQB kreg|mask,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig 74 /r ] AVX512BW,FUTURE +VPCMPEQD kreg|mask,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f.w0 76 /r ] AVX512VL,AVX512,FUTURE +VPCMPEQD kreg|mask,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f.w0 76 /r ] AVX512VL,AVX512,FUTURE +VPCMPEQD kreg|mask,zmmreg,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f.w0 76 /r ] AVX512,FUTURE +VPCMPEQQ kreg|mask,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 29 /r ] AVX512VL,AVX512,FUTURE +VPCMPEQQ kreg|mask,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 29 /r ] AVX512VL,AVX512,FUTURE +VPCMPEQQ kreg|mask,zmmreg,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 29 /r ] AVX512,FUTURE +VPCMPEQW kreg|mask,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig 75 /r ] AVX512VL,AVX512BW,FUTURE +VPCMPEQW kreg|mask,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig 75 /r ] AVX512VL,AVX512BW,FUTURE +VPCMPEQW kreg|mask,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig 75 /r ] AVX512BW,FUTURE +VPCMPGTB kreg|mask,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig 64 /r ] AVX512VL,AVX512BW,FUTURE +VPCMPGTB kreg|mask,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig 64 /r ] AVX512VL,AVX512BW,FUTURE +VPCMPGTB kreg|mask,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig 64 /r ] AVX512BW,FUTURE +VPCMPGTD kreg|mask,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f.w0 66 /r ] AVX512VL,AVX512,FUTURE +VPCMPGTD kreg|mask,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f.w0 66 /r ] AVX512VL,AVX512,FUTURE +VPCMPGTD kreg|mask,zmmreg,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f.w0 66 /r ] AVX512,FUTURE +VPCMPGTQ kreg|mask,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 37 /r ] AVX512VL,AVX512,FUTURE +VPCMPGTQ kreg|mask,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 37 /r ] AVX512VL,AVX512,FUTURE +VPCMPGTQ kreg|mask,zmmreg,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 37 /r ] AVX512,FUTURE +VPCMPGTW kreg|mask,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig 65 /r ] AVX512VL,AVX512BW,FUTURE +VPCMPGTW kreg|mask,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig 65 /r ] AVX512VL,AVX512BW,FUTURE +VPCMPGTW kreg|mask,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig 65 /r ] AVX512BW,FUTURE +; The systematic VPCMP with immediate instructions +VPCMPEQB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3f /r 00 ] AVX512VL,AVX512BW,FUTURE +VPCMPEQB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3f /r 00 ] AVX512VL,AVX512BW,FUTURE +VPCMPEQB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3f /r 00 ] AVX512BW,FUTURE +VPCMPEQD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1f /r 00 ] AVX512VL,AVX512,FUTURE +VPCMPEQD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1f /r 00 ] AVX512VL,AVX512,FUTURE +VPCMPEQD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1f /r 00 ] AVX512,FUTURE +VPCMPEQQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1f /r 00 ] AVX512VL,AVX512,FUTURE +VPCMPEQQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1f /r 00 ] AVX512VL,AVX512,FUTURE +VPCMPEQQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1f /r 00 ] AVX512,FUTURE +VPCMPEQUB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3e /r 00 ] AVX512VL,AVX512BW,FUTURE +VPCMPEQUB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3e /r 00 ] AVX512VL,AVX512BW,FUTURE +VPCMPEQUB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3e /r 00 ] AVX512BW,FUTURE +VPCMPEQUD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1e /r 00 ] AVX512VL,AVX512,FUTURE +VPCMPEQUD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1e /r 00 ] AVX512VL,AVX512,FUTURE +VPCMPEQUD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1e /r 00 ] AVX512,FUTURE +VPCMPEQUQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1e /r 00 ] AVX512VL,AVX512,FUTURE +VPCMPEQUQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1e /r 00 ] AVX512VL,AVX512,FUTURE +VPCMPEQUQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1e /r 00 ] AVX512,FUTURE +VPCMPEQUW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3e /r 00 ] AVX512VL,AVX512BW,FUTURE +VPCMPEQUW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3e /r 00 ] AVX512VL,AVX512BW,FUTURE +VPCMPEQUW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3e /r 00 ] AVX512BW,FUTURE +VPCMPEQW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3f /r 00 ] AVX512VL,AVX512BW,FUTURE +VPCMPEQW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3f /r 00 ] AVX512VL,AVX512BW,FUTURE +VPCMPEQW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3f /r 00 ] AVX512BW,FUTURE +VPCMPGEB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3f /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPGEB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3f /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPGEB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3f /r 05 ] AVX512BW,FUTURE +VPCMPGED kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1f /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPGED kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1f /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPGED kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1f /r 05 ] AVX512,FUTURE +VPCMPGEQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1f /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPGEQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1f /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPGEQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1f /r 05 ] AVX512,FUTURE +VPCMPGEUB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3e /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPGEUB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3e /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPGEUB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3e /r 05 ] AVX512BW,FUTURE +VPCMPGEUD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1e /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPGEUD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1e /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPGEUD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1e /r 05 ] AVX512,FUTURE +VPCMPGEUQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1e /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPGEUQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1e /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPGEUQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1e /r 05 ] AVX512,FUTURE +VPCMPGEUW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3e /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPGEUW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3e /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPGEUW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3e /r 05 ] AVX512BW,FUTURE +VPCMPGEW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3f /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPGEW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3f /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPGEW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3f /r 05 ] AVX512BW,FUTURE +VPCMPGTB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3f /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPGTB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3f /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPGTB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3f /r 06 ] AVX512BW,FUTURE +VPCMPGTD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1f /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPGTD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1f /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPGTD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1f /r 06 ] AVX512,FUTURE +VPCMPGTQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1f /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPGTQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1f /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPGTQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1f /r 06 ] AVX512,FUTURE +VPCMPGTUB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3e /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPGTUB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3e /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPGTUB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3e /r 06 ] AVX512BW,FUTURE +VPCMPGTUD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1e /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPGTUD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1e /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPGTUD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1e /r 06 ] AVX512,FUTURE +VPCMPGTUQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1e /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPGTUQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1e /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPGTUQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1e /r 06 ] AVX512,FUTURE +VPCMPGTUW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3e /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPGTUW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3e /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPGTUW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3e /r 06 ] AVX512BW,FUTURE +VPCMPGTW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3f /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPGTW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3f /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPGTW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3f /r 06 ] AVX512BW,FUTURE +VPCMPLEB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3f /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPLEB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3f /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPLEB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3f /r 02 ] AVX512BW,FUTURE +VPCMPLED kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1f /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPLED kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1f /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPLED kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1f /r 02 ] AVX512,FUTURE +VPCMPLEQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1f /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPLEQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1f /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPLEQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1f /r 02 ] AVX512,FUTURE +VPCMPLEUB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3e /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPLEUB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3e /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPLEUB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3e /r 02 ] AVX512BW,FUTURE +VPCMPLEUD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1e /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPLEUD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1e /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPLEUD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1e /r 02 ] AVX512,FUTURE +VPCMPLEUQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1e /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPLEUQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1e /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPLEUQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1e /r 02 ] AVX512,FUTURE +VPCMPLEUW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3e /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPLEUW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3e /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPLEUW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3e /r 02 ] AVX512BW,FUTURE +VPCMPLEW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3f /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPLEW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3f /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPLEW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3f /r 02 ] AVX512BW,FUTURE +VPCMPLTB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3f /r 01 ] AVX512VL,AVX512BW,FUTURE +VPCMPLTB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3f /r 01 ] AVX512VL,AVX512BW,FUTURE +VPCMPLTB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3f /r 01 ] AVX512BW,FUTURE +VPCMPLTD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1f /r 01 ] AVX512VL,AVX512,FUTURE +VPCMPLTD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1f /r 01 ] AVX512VL,AVX512,FUTURE +VPCMPLTD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1f /r 01 ] AVX512,FUTURE +VPCMPLTQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1f /r 01 ] AVX512VL,AVX512,FUTURE +VPCMPLTQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1f /r 01 ] AVX512VL,AVX512,FUTURE +VPCMPLTQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1f /r 01 ] AVX512,FUTURE +VPCMPLTUB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3e /r 01 ] AVX512VL,AVX512BW,FUTURE +VPCMPLTUB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3e /r 01 ] AVX512VL,AVX512BW,FUTURE +VPCMPLTUB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3e /r 01 ] AVX512BW,FUTURE +VPCMPLTUD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1e /r 01 ] AVX512VL,AVX512,FUTURE +VPCMPLTUD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1e /r 01 ] AVX512VL,AVX512,FUTURE +VPCMPLTUD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1e /r 01 ] AVX512,FUTURE +VPCMPLTUQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1e /r 01 ] AVX512VL,AVX512,FUTURE +VPCMPLTUQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1e /r 01 ] AVX512VL,AVX512,FUTURE +VPCMPLTUQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1e /r 01 ] AVX512,FUTURE +VPCMPLTUW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3e /r 01 ] AVX512VL,AVX512BW,FUTURE +VPCMPLTUW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3e /r 01 ] AVX512VL,AVX512BW,FUTURE +VPCMPLTUW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3e /r 01 ] AVX512BW,FUTURE +VPCMPLTW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3f /r 01 ] AVX512VL,AVX512BW,FUTURE +VPCMPLTW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3f /r 01 ] AVX512VL,AVX512BW,FUTURE +VPCMPLTW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3f /r 01 ] AVX512BW,FUTURE +VPCMPNEQB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3f /r 04 ] AVX512VL,AVX512BW,FUTURE +VPCMPNEQB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3f /r 04 ] AVX512VL,AVX512BW,FUTURE +VPCMPNEQB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3f /r 04 ] AVX512BW,FUTURE +VPCMPNEQD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1f /r 04 ] AVX512VL,AVX512,FUTURE +VPCMPNEQD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1f /r 04 ] AVX512VL,AVX512,FUTURE +VPCMPNEQD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1f /r 04 ] AVX512,FUTURE +VPCMPNEQQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1f /r 04 ] AVX512VL,AVX512,FUTURE +VPCMPNEQQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1f /r 04 ] AVX512VL,AVX512,FUTURE +VPCMPNEQQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1f /r 04 ] AVX512,FUTURE +VPCMPNEQUB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3e /r 04 ] AVX512VL,AVX512BW,FUTURE +VPCMPNEQUB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3e /r 04 ] AVX512VL,AVX512BW,FUTURE +VPCMPNEQUB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3e /r 04 ] AVX512BW,FUTURE +VPCMPNEQUD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1e /r 04 ] AVX512VL,AVX512,FUTURE +VPCMPNEQUD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1e /r 04 ] AVX512VL,AVX512,FUTURE +VPCMPNEQUD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1e /r 04 ] AVX512,FUTURE +VPCMPNEQUQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1e /r 04 ] AVX512VL,AVX512,FUTURE +VPCMPNEQUQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1e /r 04 ] AVX512VL,AVX512,FUTURE +VPCMPNEQUQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1e /r 04 ] AVX512,FUTURE +VPCMPNEQUW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3e /r 04 ] AVX512VL,AVX512BW,FUTURE +VPCMPNEQUW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3e /r 04 ] AVX512VL,AVX512BW,FUTURE +VPCMPNEQUW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3e /r 04 ] AVX512BW,FUTURE +VPCMPNEQW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3f /r 04 ] AVX512VL,AVX512BW,FUTURE +VPCMPNEQW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3f /r 04 ] AVX512VL,AVX512BW,FUTURE +VPCMPNEQW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3f /r 04 ] AVX512BW,FUTURE +VPCMPNGTB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3f /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPNGTB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3f /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPNGTB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3f /r 02 ] AVX512BW,FUTURE +VPCMPNGTD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1f /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPNGTD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1f /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPNGTD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1f /r 02 ] AVX512,FUTURE +VPCMPNGTQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1f /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPNGTQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1f /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPNGTQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1f /r 02 ] AVX512,FUTURE +VPCMPNGTUB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3e /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPNGTUB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3e /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPNGTUB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3e /r 02 ] AVX512BW,FUTURE +VPCMPNGTUD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1e /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPNGTUD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1e /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPNGTUD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1e /r 02 ] AVX512,FUTURE +VPCMPNGTUQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1e /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPNGTUQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1e /r 02 ] AVX512VL,AVX512,FUTURE +VPCMPNGTUQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1e /r 02 ] AVX512,FUTURE +VPCMPNGTUW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3e /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPNGTUW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3e /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPNGTUW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3e /r 02 ] AVX512BW,FUTURE +VPCMPNGTW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3f /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPNGTW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3f /r 02 ] AVX512VL,AVX512BW,FUTURE +VPCMPNGTW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3f /r 02 ] AVX512BW,FUTURE +VPCMPNLEB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3f /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLEB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3f /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLEB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3f /r 06 ] AVX512BW,FUTURE +VPCMPNLED kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1f /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPNLED kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1f /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPNLED kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1f /r 06 ] AVX512,FUTURE +VPCMPNLEQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1f /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPNLEQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1f /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPNLEQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1f /r 06 ] AVX512,FUTURE +VPCMPNLEUB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3e /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLEUB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3e /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLEUB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3e /r 06 ] AVX512BW,FUTURE +VPCMPNLEUD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1e /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPNLEUD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1e /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPNLEUD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1e /r 06 ] AVX512,FUTURE +VPCMPNLEUQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1e /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPNLEUQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1e /r 06 ] AVX512VL,AVX512,FUTURE +VPCMPNLEUQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1e /r 06 ] AVX512,FUTURE +VPCMPNLEUW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3e /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLEUW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3e /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLEUW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3e /r 06 ] AVX512BW,FUTURE +VPCMPNLEW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3f /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLEW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3f /r 06 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLEW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3f /r 06 ] AVX512BW,FUTURE +VPCMPNLTB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3f /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLTB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3f /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLTB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3f /r 05 ] AVX512BW,FUTURE +VPCMPNLTD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1f /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPNLTD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1f /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPNLTD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1f /r 05 ] AVX512,FUTURE +VPCMPNLTQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1f /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPNLTQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1f /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPNLTQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1f /r 05 ] AVX512,FUTURE +VPCMPNLTUB kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3e /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLTUB kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3e /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLTUB kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3e /r 05 ] AVX512BW,FUTURE +VPCMPNLTUD kreg|mask,xmmreg,xmmrm128|b32 [rvmi:fv: evex.nds.128.66.0f3a.w0 1e /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPNLTUD kreg|mask,ymmreg,ymmrm256|b32 [rvmi:fv: evex.nds.256.66.0f3a.w0 1e /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPNLTUD kreg|mask,zmmreg,zmmrm512|b32 [rvmi:fv: evex.nds.512.66.0f3a.w0 1e /r 05 ] AVX512,FUTURE +VPCMPNLTUQ kreg|mask,xmmreg,xmmrm128|b64 [rvmi:fv: evex.nds.128.66.0f3a.w1 1e /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPNLTUQ kreg|mask,ymmreg,ymmrm256|b64 [rvmi:fv: evex.nds.256.66.0f3a.w1 1e /r 05 ] AVX512VL,AVX512,FUTURE +VPCMPNLTUQ kreg|mask,zmmreg,zmmrm512|b64 [rvmi:fv: evex.nds.512.66.0f3a.w1 1e /r 05 ] AVX512,FUTURE +VPCMPNLTUW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3e /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLTUW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3e /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLTUW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3e /r 05 ] AVX512BW,FUTURE +VPCMPNLTW kreg|mask,xmmreg,xmmrm128 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3f /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLTW kreg|mask,ymmreg,ymmrm256 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3f /r 05 ] AVX512VL,AVX512BW,FUTURE +VPCMPNLTW kreg|mask,zmmreg,zmmrm512 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3f /r 05 ] AVX512BW,FUTURE +VPCMPB kreg|mask,xmmreg,xmmrm128,imm8 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3f /r ib ] AVX512VL,AVX512BW,FUTURE +VPCMPB kreg|mask,ymmreg,ymmrm256,imm8 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3f /r ib ] AVX512VL,AVX512BW,FUTURE +VPCMPB kreg|mask,zmmreg,zmmrm512,imm8 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3f /r ib ] AVX512BW,FUTURE +VPCMPD kreg|mask,xmmreg,xmmrm128|b32,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w0 1f /r ib ] AVX512VL,AVX512,FUTURE +VPCMPD kreg|mask,ymmreg,ymmrm256|b32,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w0 1f /r ib ] AVX512VL,AVX512,FUTURE +VPCMPD kreg|mask,zmmreg,zmmrm512|b32,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w0 1f /r ib ] AVX512,FUTURE +VPCMPQ kreg|mask,xmmreg,xmmrm128|b64,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w1 1f /r ib ] AVX512VL,AVX512,FUTURE +VPCMPQ kreg|mask,ymmreg,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w1 1f /r ib ] AVX512VL,AVX512,FUTURE +VPCMPQ kreg|mask,zmmreg,zmmrm512|b64,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w1 1f /r ib ] AVX512,FUTURE +VPCMPUB kreg|mask,xmmreg,xmmrm128,imm8 [rvmi:fvm: evex.nds.128.66.0f3a.w0 3e /r ib ] AVX512VL,AVX512BW,FUTURE +VPCMPUB kreg|mask,ymmreg,ymmrm256,imm8 [rvmi:fvm: evex.nds.256.66.0f3a.w0 3e /r ib ] AVX512VL,AVX512BW,FUTURE +VPCMPUB kreg|mask,zmmreg,zmmrm512,imm8 [rvmi:fvm: evex.nds.512.66.0f3a.w0 3e /r ib ] AVX512BW,FUTURE +VPCMPUD kreg|mask,xmmreg,xmmrm128|b32,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w0 1e /r ib ] AVX512VL,AVX512,FUTURE +VPCMPUD kreg|mask,ymmreg,ymmrm256|b32,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w0 1e /r ib ] AVX512VL,AVX512,FUTURE +VPCMPUD kreg|mask,zmmreg,zmmrm512|b32,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w0 1e /r ib ] AVX512,FUTURE +VPCMPUQ kreg|mask,xmmreg,xmmrm128|b64,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w1 1e /r ib ] AVX512VL,AVX512,FUTURE +VPCMPUQ kreg|mask,ymmreg,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w1 1e /r ib ] AVX512VL,AVX512,FUTURE +VPCMPUQ kreg|mask,zmmreg,zmmrm512|b64,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w1 1e /r ib ] AVX512,FUTURE +VPCMPUW kreg|mask,xmmreg,xmmrm128,imm8 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3e /r ib ] AVX512VL,AVX512BW,FUTURE +VPCMPUW kreg|mask,ymmreg,ymmrm256,imm8 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3e /r ib ] AVX512VL,AVX512BW,FUTURE +VPCMPUW kreg|mask,zmmreg,zmmrm512,imm8 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3e /r ib ] AVX512BW,FUTURE +VPCMPW kreg|mask,xmmreg,xmmrm128,imm8 [rvmi:fvm: evex.nds.128.66.0f3a.w1 3f /r ib ] AVX512VL,AVX512BW,FUTURE +VPCMPW kreg|mask,ymmreg,ymmrm256,imm8 [rvmi:fvm: evex.nds.256.66.0f3a.w1 3f /r ib ] AVX512VL,AVX512BW,FUTURE +VPCMPW kreg|mask,zmmreg,zmmrm512,imm8 [rvmi:fvm: evex.nds.512.66.0f3a.w1 3f /r ib ] AVX512BW,FUTURE +VPCOMPRESSD mem128|mask,xmmreg [mr:t1s: evex.128.66.0f38.w0 8b /r ] AVX512VL,AVX512,FUTURE +VPCOMPRESSD mem256|mask,ymmreg [mr:t1s: evex.256.66.0f38.w0 8b /r ] AVX512VL,AVX512,FUTURE +VPCOMPRESSD mem512|mask,zmmreg [mr:t1s: evex.512.66.0f38.w0 8b /r ] AVX512,FUTURE +VPCOMPRESSD xmmreg|mask|z,xmmreg [mr: evex.128.66.0f38.w0 8b /r ] AVX512VL,AVX512,FUTURE +VPCOMPRESSD ymmreg|mask|z,ymmreg [mr: evex.256.66.0f38.w0 8b /r ] AVX512VL,AVX512,FUTURE +VPCOMPRESSD zmmreg|mask|z,zmmreg [mr: evex.512.66.0f38.w0 8b /r ] AVX512,FUTURE +VPCOMPRESSQ mem128|mask,xmmreg [mr:t1s: evex.128.66.0f38.w1 8b /r ] AVX512VL,AVX512,FUTURE +VPCOMPRESSQ mem256|mask,ymmreg [mr:t1s: evex.256.66.0f38.w1 8b /r ] AVX512VL,AVX512,FUTURE +VPCOMPRESSQ mem512|mask,zmmreg [mr:t1s: evex.512.66.0f38.w1 8b /r ] AVX512,FUTURE +VPCOMPRESSQ xmmreg|mask|z,xmmreg [mr: evex.128.66.0f38.w1 8b /r ] AVX512VL,AVX512,FUTURE +VPCOMPRESSQ ymmreg|mask|z,ymmreg [mr: evex.256.66.0f38.w1 8b /r ] AVX512VL,AVX512,FUTURE +VPCOMPRESSQ zmmreg|mask|z,zmmreg [mr: evex.512.66.0f38.w1 8b /r ] AVX512,FUTURE +VPCONFLICTD xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.66.0f38.w0 c4 /r ] AVX512VL,AVX512CD,FUTURE +VPCONFLICTD ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.66.0f38.w0 c4 /r ] AVX512VL,AVX512CD,FUTURE +VPCONFLICTD zmmreg|mask|z,zmmrm512|b32 [rm:fv: evex.512.66.0f38.w0 c4 /r ] AVX512CD,FUTURE +VPCONFLICTQ xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f38.w1 c4 /r ] AVX512VL,AVX512CD,FUTURE +VPCONFLICTQ ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f38.w1 c4 /r ] AVX512VL,AVX512CD,FUTURE +VPCONFLICTQ zmmreg|mask|z,zmmrm512|b64 [rm:fv: evex.512.66.0f38.w1 c4 /r ] AVX512CD,FUTURE +VPERMB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w0 8d /r ] AVX512VL,AVX512VBMI,FUTURE +VPERMB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w0 8d /r ] AVX512VL,AVX512VBMI,FUTURE +VPERMB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w0 8d /r ] AVX512VBMI,FUTURE +VPERMD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 36 /r ] AVX512VL,AVX512,FUTURE +VPERMD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 36 /r ] AVX512,FUTURE +VPERMI2B xmmreg|mask|z,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w0 75 /r ] AVX512VL,AVX512VBMI,FUTURE +VPERMI2B ymmreg|mask|z,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w0 75 /r ] AVX512VL,AVX512VBMI,FUTURE +VPERMI2B zmmreg|mask|z,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w0 75 /r ] AVX512VBMI,FUTURE +VPERMI2D xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 76 /r ] AVX512VL,AVX512,FUTURE +VPERMI2D ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 76 /r ] AVX512VL,AVX512,FUTURE +VPERMI2D zmmreg|mask|z,zmmreg,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 76 /r ] AVX512,FUTURE +VPERMI2PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 77 /r ] AVX512VL,AVX512,FUTURE +VPERMI2PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 77 /r ] AVX512VL,AVX512,FUTURE +VPERMI2PD zmmreg|mask|z,zmmreg,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 77 /r ] AVX512,FUTURE +VPERMI2PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 77 /r ] AVX512VL,AVX512,FUTURE +VPERMI2PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 77 /r ] AVX512VL,AVX512,FUTURE +VPERMI2PS zmmreg|mask|z,zmmreg,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 77 /r ] AVX512,FUTURE +VPERMI2Q xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 76 /r ] AVX512VL,AVX512,FUTURE +VPERMI2Q ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 76 /r ] AVX512VL,AVX512,FUTURE +VPERMI2Q zmmreg|mask|z,zmmreg,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 76 /r ] AVX512,FUTURE +VPERMI2W xmmreg|mask|z,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w1 75 /r ] AVX512VL,AVX512BW,FUTURE +VPERMI2W ymmreg|mask|z,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w1 75 /r ] AVX512VL,AVX512BW,FUTURE +VPERMI2W zmmreg|mask|z,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w1 75 /r ] AVX512BW,FUTURE +VPERMILPD xmmreg|mask|z,xmmrm128|b64,imm8 [rmi:fv: evex.128.66.0f3a.w1 05 /r ib ] AVX512VL,AVX512,FUTURE +VPERMILPD ymmreg|mask|z,ymmrm256|b64,imm8 [rmi:fv: evex.256.66.0f3a.w1 05 /r ib ] AVX512VL,AVX512,FUTURE +VPERMILPD zmmreg|mask|z,zmmrm512|b64,imm8 [rmi:fv: evex.512.66.0f3a.w1 05 /r ib ] AVX512,FUTURE +VPERMILPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 0d /r ] AVX512VL,AVX512,FUTURE +VPERMILPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 0d /r ] AVX512VL,AVX512,FUTURE +VPERMILPD zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 0d /r ] AVX512,FUTURE +VPERMILPS xmmreg|mask|z,xmmrm128|b32,imm8 [rmi:fv: evex.128.66.0f3a.w0 04 /r ib ] AVX512VL,AVX512,FUTURE +VPERMILPS ymmreg|mask|z,ymmrm256|b32,imm8 [rmi:fv: evex.256.66.0f3a.w0 04 /r ib ] AVX512VL,AVX512,FUTURE +VPERMILPS zmmreg|mask|z,zmmrm512|b32,imm8 [rmi:fv: evex.512.66.0f3a.w0 04 /r ib ] AVX512,FUTURE +VPERMILPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 0c /r ] AVX512VL,AVX512,FUTURE +VPERMILPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 0c /r ] AVX512VL,AVX512,FUTURE +VPERMILPS zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 0c /r ] AVX512,FUTURE +VPERMPD ymmreg|mask|z,ymmrm256|b64,imm8 [rmi:fv: evex.256.66.0f3a.w1 01 /r ib ] AVX512VL,AVX512,FUTURE +VPERMPD zmmreg|mask|z,zmmrm512|b64,imm8 [rmi:fv: evex.512.66.0f3a.w1 01 /r ib ] AVX512,FUTURE +VPERMPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 16 /r ] AVX512VL,AVX512,FUTURE +VPERMPD zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 16 /r ] AVX512,FUTURE +VPERMPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 16 /r ] AVX512VL,AVX512,FUTURE +VPERMPS zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 16 /r ] AVX512,FUTURE +VPERMQ ymmreg|mask|z,ymmrm256|b64,imm8 [rmi:fv: evex.256.66.0f3a.w1 00 /r ib ] AVX512VL,AVX512,FUTURE +VPERMQ zmmreg|mask|z,zmmrm512|b64,imm8 [rmi:fv: evex.512.66.0f3a.w1 00 /r ib ] AVX512,FUTURE +VPERMQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 36 /r ] AVX512VL,AVX512,FUTURE +VPERMQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 36 /r ] AVX512,FUTURE +VPERMT2B xmmreg|mask|z,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w0 7d /r ] AVX512VL,AVX512VBMI,FUTURE +VPERMT2B ymmreg|mask|z,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w0 7d /r ] AVX512VL,AVX512VBMI,FUTURE +VPERMT2B zmmreg|mask|z,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w0 7d /r ] AVX512VBMI,FUTURE +VPERMT2D xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 7e /r ] AVX512VL,AVX512,FUTURE +VPERMT2D ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 7e /r ] AVX512VL,AVX512,FUTURE +VPERMT2D zmmreg|mask|z,zmmreg,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 7e /r ] AVX512,FUTURE +VPERMT2PD xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 7f /r ] AVX512VL,AVX512,FUTURE +VPERMT2PD ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 7f /r ] AVX512VL,AVX512,FUTURE +VPERMT2PD zmmreg|mask|z,zmmreg,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 7f /r ] AVX512,FUTURE +VPERMT2PS xmmreg|mask|z,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 7f /r ] AVX512VL,AVX512,FUTURE +VPERMT2PS ymmreg|mask|z,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 7f /r ] AVX512VL,AVX512,FUTURE +VPERMT2PS zmmreg|mask|z,zmmreg,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 7f /r ] AVX512,FUTURE +VPERMT2Q xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 7e /r ] AVX512VL,AVX512,FUTURE +VPERMT2Q ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 7e /r ] AVX512VL,AVX512,FUTURE +VPERMT2Q zmmreg|mask|z,zmmreg,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 7e /r ] AVX512,FUTURE +VPERMT2W xmmreg|mask|z,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w1 7d /r ] AVX512VL,AVX512BW,FUTURE +VPERMT2W ymmreg|mask|z,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w1 7d /r ] AVX512VL,AVX512BW,FUTURE +VPERMT2W zmmreg|mask|z,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w1 7d /r ] AVX512BW,FUTURE +VPERMW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w1 8d /r ] AVX512VL,AVX512BW,FUTURE +VPERMW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w1 8d /r ] AVX512VL,AVX512BW,FUTURE +VPERMW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w1 8d /r ] AVX512BW,FUTURE +VPEXPANDD xmmreg|mask|z,mem128 [rm:t1s: evex.128.66.0f38.w0 89 /r ] AVX512VL,AVX512,FUTURE +VPEXPANDD ymmreg|mask|z,mem256 [rm:t1s: evex.256.66.0f38.w0 89 /r ] AVX512VL,AVX512,FUTURE +VPEXPANDD zmmreg|mask|z,mem512 [rm:t1s: evex.512.66.0f38.w0 89 /r ] AVX512,FUTURE +VPEXPANDD xmmreg|mask|z,xmmreg [rm:t1s: evex.128.66.0f38.w0 89 /r ] AVX512VL,AVX512,FUTURE +VPEXPANDD ymmreg|mask|z,ymmreg [rm:t1s: evex.256.66.0f38.w0 89 /r ] AVX512VL,AVX512,FUTURE +VPEXPANDD zmmreg|mask|z,zmmreg [rm:t1s: evex.512.66.0f38.w0 89 /r ] AVX512,FUTURE +VPEXPANDQ xmmreg|mask|z,mem128 [rm:t1s: evex.128.66.0f38.w1 89 /r ] AVX512VL,AVX512,FUTURE +VPEXPANDQ ymmreg|mask|z,mem256 [rm:t1s: evex.256.66.0f38.w1 89 /r ] AVX512VL,AVX512,FUTURE +VPEXPANDQ zmmreg|mask|z,mem512 [rm:t1s: evex.512.66.0f38.w1 89 /r ] AVX512,FUTURE +VPEXPANDQ xmmreg|mask|z,xmmreg [rm:t1s: evex.128.66.0f38.w1 89 /r ] AVX512VL,AVX512,FUTURE +VPEXPANDQ ymmreg|mask|z,ymmreg [rm:t1s: evex.256.66.0f38.w1 89 /r ] AVX512VL,AVX512,FUTURE +VPEXPANDQ zmmreg|mask|z,zmmreg [rm:t1s: evex.512.66.0f38.w1 89 /r ] AVX512,FUTURE +VPEXTRB reg8,xmmreg,imm8 [mri:t1s8: evex.128.66.0f3a.wig 14 /r ib ] AVX512BW,FUTURE +VPEXTRB reg16,xmmreg,imm8 [mri:t1s8: evex.128.66.0f3a.wig 14 /r ib ] AVX512BW,FUTURE +VPEXTRB reg32,xmmreg,imm8 [mri:t1s8: evex.128.66.0f3a.wig 14 /r ib ] AVX512BW,FUTURE +VPEXTRB reg64,xmmreg,imm8 [mri:t1s8: evex.128.66.0f3a.wig 14 /r ib ] AVX512BW,FUTURE +VPEXTRB mem8,xmmreg,imm8 [mri:t1s8: evex.128.66.0f3a.wig 14 /r ib ] AVX512BW,FUTURE +VPEXTRD rm32,xmmreg,imm8 [mri:t1s: evex.128.66.0f3a.w0 16 /r ib ] AVX512DQ,FUTURE +VPEXTRQ rm64,xmmreg,imm8 [mri:t1s: evex.128.66.0f3a.w1 16 /r ib ] AVX512DQ,FUTURE +VPEXTRW reg16,xmmreg,imm8 [mri:t1s16: evex.128.66.0f3a.wig 15 /r ib ] AVX512BW,FUTURE +VPEXTRW reg32,xmmreg,imm8 [mri:t1s16: evex.128.66.0f3a.wig 15 /r ib ] AVX512BW,FUTURE +VPEXTRW reg64,xmmreg,imm8 [mri:t1s16: evex.128.66.0f3a.wig 15 /r ib ] AVX512BW,FUTURE +VPEXTRW mem16,xmmreg,imm8 [mri:t1s16: evex.128.66.0f3a.wig 15 /r ib ] AVX512BW,FUTURE +VPEXTRW reg16,xmmreg,imm8 [rmi: evex.128.66.0f.wig c5 /r ib ] AVX512BW,FUTURE +VPEXTRW reg32,xmmreg,imm8 [rmi: evex.128.66.0f.wig c5 /r ib ] AVX512BW,FUTURE +VPEXTRW reg64,xmmreg,imm8 [rmi: evex.128.66.0f.wig c5 /r ib ] AVX512BW,FUTURE +VPGATHERDD xmmreg|mask,xmem32 [rm:t1s: vsibx evex.128.66.0f38.w0 90 /r ] AVX512VL,AVX512,FUTURE +VPGATHERDD ymmreg|mask,ymem32 [rm:t1s: vsiby evex.256.66.0f38.w0 90 /r ] AVX512VL,AVX512,FUTURE +VPGATHERDD zmmreg|mask,zmem32 [rm:t1s: vsibz evex.512.66.0f38.w0 90 /r ] AVX512,FUTURE +VPGATHERDQ xmmreg|mask,xmem64 [rm:t1s: vsibx evex.128.66.0f38.w1 90 /r ] AVX512VL,AVX512,FUTURE +VPGATHERDQ ymmreg|mask,xmem64 [rm:t1s: vsibx evex.256.66.0f38.w1 90 /r ] AVX512VL,AVX512,FUTURE +VPGATHERDQ zmmreg|mask,ymem64 [rm:t1s: vsiby evex.512.66.0f38.w1 90 /r ] AVX512,FUTURE +VPGATHERQD xmmreg|mask,xmem32 [rm:t1s: vsibx evex.128.66.0f38.w0 91 /r ] AVX512VL,AVX512,FUTURE +VPGATHERQD xmmreg|mask,ymem32 [rm:t1s: vsiby evex.256.66.0f38.w0 91 /r ] AVX512VL,AVX512,FUTURE +VPGATHERQD ymmreg|mask,zmem32 [rm:t1s: vsibz evex.512.66.0f38.w0 91 /r ] AVX512,FUTURE +VPGATHERQQ xmmreg|mask,xmem64 [rm:t1s: vsibx evex.128.66.0f38.w1 91 /r ] AVX512VL,AVX512,FUTURE +VPGATHERQQ ymmreg|mask,ymem64 [rm:t1s: vsiby evex.256.66.0f38.w1 91 /r ] AVX512VL,AVX512,FUTURE +VPGATHERQQ zmmreg|mask,zmem64 [rm:t1s: vsibz evex.512.66.0f38.w1 91 /r ] AVX512,FUTURE +VPINSRB xmmreg,xmmreg*,reg32,imm8 [rvmi:t1s8: evex.nds.128.66.0f3a.wig 20 /r ib ] AVX512BW,FUTURE +VPINSRB xmmreg,xmmreg*,mem8,imm8 [rvmi:t1s8: evex.nds.128.66.0f3a.wig 20 /r ib ] AVX512BW,FUTURE +VPINSRD xmmreg,xmmreg*,rm32,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w0 22 /r ib ] AVX512DQ,FUTURE +VPINSRQ xmmreg,xmmreg*,rm64,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w1 22 /r ib ] AVX512DQ,FUTURE +VPINSRW xmmreg,xmmreg*,reg32,imm8 [rvmi:t1s16: evex.nds.128.66.0f.wig c4 /r ib ] AVX512BW,FUTURE +VPINSRW xmmreg,xmmreg*,mem16,imm8 [rvmi:t1s16: evex.nds.128.66.0f.wig c4 /r ib ] AVX512BW,FUTURE +VPLZCNTD xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.66.0f38.w0 44 /r ] AVX512VL,AVX512CD,FUTURE +VPLZCNTD ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.66.0f38.w0 44 /r ] AVX512VL,AVX512CD,FUTURE +VPLZCNTD zmmreg|mask|z,zmmrm512|b32 [rm:fv: evex.512.66.0f38.w0 44 /r ] AVX512CD,FUTURE +VPLZCNTQ xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f38.w1 44 /r ] AVX512VL,AVX512CD,FUTURE +VPLZCNTQ ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f38.w1 44 /r ] AVX512VL,AVX512CD,FUTURE +VPLZCNTQ zmmreg|mask|z,zmmrm512|b64 [rm:fv: evex.512.66.0f38.w1 44 /r ] AVX512CD,FUTURE +VPMADD52HUQ xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 b5 /r ] AVX512VL,AVX512IFMA,FUTURE +VPMADD52HUQ ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 b5 /r ] AVX512VL,AVX512IFMA,FUTURE +VPMADD52HUQ zmmreg|mask|z,zmmreg,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 b5 /r ] AVX512IFMA,FUTURE +VPMADD52LUQ xmmreg|mask|z,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 b4 /r ] AVX512VL,AVX512IFMA,FUTURE +VPMADD52LUQ ymmreg|mask|z,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 b4 /r ] AVX512VL,AVX512IFMA,FUTURE +VPMADD52LUQ zmmreg|mask|z,zmmreg,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 b4 /r ] AVX512IFMA,FUTURE +VPMADDUBSW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.wig 04 /r ] AVX512VL,AVX512BW,FUTURE +VPMADDUBSW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.wig 04 /r ] AVX512VL,AVX512BW,FUTURE +VPMADDUBSW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.wig 04 /r ] AVX512BW,FUTURE +VPMADDWD xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig f5 /r ] AVX512VL,AVX512BW,FUTURE +VPMADDWD ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig f5 /r ] AVX512VL,AVX512BW,FUTURE +VPMADDWD zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig f5 /r ] AVX512BW,FUTURE +VPMAXSB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.wig 3c /r ] AVX512VL,AVX512BW,FUTURE +VPMAXSB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.wig 3c /r ] AVX512VL,AVX512BW,FUTURE +VPMAXSB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.wig 3c /r ] AVX512BW,FUTURE +VPMAXSD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 3d /r ] AVX512VL,AVX512,FUTURE +VPMAXSD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 3d /r ] AVX512VL,AVX512,FUTURE +VPMAXSD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 3d /r ] AVX512,FUTURE +VPMAXSQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 3d /r ] AVX512VL,AVX512,FUTURE +VPMAXSQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 3d /r ] AVX512VL,AVX512,FUTURE +VPMAXSQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 3d /r ] AVX512,FUTURE +VPMAXSW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig ee /r ] AVX512VL,AVX512BW,FUTURE +VPMAXSW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig ee /r ] AVX512VL,AVX512BW,FUTURE +VPMAXSW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig ee /r ] AVX512BW,FUTURE +VPMAXUB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig de /r ] AVX512VL,AVX512BW,FUTURE +VPMAXUB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig de /r ] AVX512VL,AVX512BW,FUTURE +VPMAXUB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig de /r ] AVX512BW,FUTURE +VPMAXUD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 3f /r ] AVX512VL,AVX512,FUTURE +VPMAXUD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 3f /r ] AVX512VL,AVX512,FUTURE +VPMAXUD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 3f /r ] AVX512,FUTURE +VPMAXUQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 3f /r ] AVX512VL,AVX512,FUTURE +VPMAXUQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 3f /r ] AVX512VL,AVX512,FUTURE +VPMAXUQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 3f /r ] AVX512,FUTURE +VPMAXUW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.wig 3e /r ] AVX512VL,AVX512BW,FUTURE +VPMAXUW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.wig 3e /r ] AVX512VL,AVX512BW,FUTURE +VPMAXUW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.wig 3e /r ] AVX512BW,FUTURE +VPMINSB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.wig 38 /r ] AVX512VL,AVX512BW,FUTURE +VPMINSB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.wig 38 /r ] AVX512VL,AVX512BW,FUTURE +VPMINSB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.wig 38 /r ] AVX512BW,FUTURE +VPMINSD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 39 /r ] AVX512VL,AVX512,FUTURE +VPMINSD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 39 /r ] AVX512VL,AVX512,FUTURE +VPMINSD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 39 /r ] AVX512,FUTURE +VPMINSQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 39 /r ] AVX512VL,AVX512,FUTURE +VPMINSQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 39 /r ] AVX512VL,AVX512,FUTURE +VPMINSQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 39 /r ] AVX512,FUTURE +VPMINSW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig ea /r ] AVX512VL,AVX512BW,FUTURE +VPMINSW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig ea /r ] AVX512VL,AVX512BW,FUTURE +VPMINSW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig ea /r ] AVX512BW,FUTURE +VPMINUB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig da /r ] AVX512VL,AVX512BW,FUTURE +VPMINUB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig da /r ] AVX512VL,AVX512BW,FUTURE +VPMINUB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig da /r ] AVX512BW,FUTURE +VPMINUD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 3b /r ] AVX512VL,AVX512,FUTURE +VPMINUD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 3b /r ] AVX512VL,AVX512,FUTURE +VPMINUD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 3b /r ] AVX512,FUTURE +VPMINUQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 3b /r ] AVX512VL,AVX512,FUTURE +VPMINUQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 3b /r ] AVX512VL,AVX512,FUTURE +VPMINUQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 3b /r ] AVX512,FUTURE +VPMINUW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.wig 3a /r ] AVX512VL,AVX512BW,FUTURE +VPMINUW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.wig 3a /r ] AVX512VL,AVX512BW,FUTURE +VPMINUW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.wig 3a /r ] AVX512BW,FUTURE +VPMOVB2M kreg,xmmreg [rm: evex.128.f3.0f38.w0 29 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVB2M kreg,ymmreg [rm: evex.256.f3.0f38.w0 29 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVB2M kreg,zmmreg [rm: evex.512.f3.0f38.w0 29 /r ] AVX512BW,FUTURE +VPMOVD2M kreg,xmmreg [rm: evex.128.f3.0f38.w0 39 /r ] AVX512VL,AVX512DQ,FUTURE +VPMOVD2M kreg,ymmreg [rm: evex.256.f3.0f38.w0 39 /r ] AVX512VL,AVX512DQ,FUTURE +VPMOVD2M kreg,zmmreg [rm: evex.512.f3.0f38.w0 39 /r ] AVX512DQ,FUTURE +VPMOVDB xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 31 /r ] AVX512VL,AVX512,FUTURE +VPMOVDB xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 31 /r ] AVX512VL,AVX512,FUTURE +VPMOVDB xmmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 31 /r ] AVX512,FUTURE +VPMOVDB mem32|mask,xmmreg [mr:qvm: evex.128.f3.0f38.w0 31 /r ] AVX512VL,AVX512,FUTURE +VPMOVDB mem64|mask,ymmreg [mr:qvm: evex.256.f3.0f38.w0 31 /r ] AVX512VL,AVX512,FUTURE +VPMOVDB mem128|mask,zmmreg [mr:qvm: evex.512.f3.0f38.w0 31 /r ] AVX512,FUTURE +VPMOVDW xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 33 /r ] AVX512VL,AVX512,FUTURE +VPMOVDW xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 33 /r ] AVX512VL,AVX512,FUTURE +VPMOVDW ymmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 33 /r ] AVX512,FUTURE +VPMOVDW mem64|mask,xmmreg [mr:hvm: evex.128.f3.0f38.w0 33 /r ] AVX512VL,AVX512,FUTURE +VPMOVDW mem128|mask,ymmreg [mr:hvm: evex.256.f3.0f38.w0 33 /r ] AVX512VL,AVX512,FUTURE +VPMOVDW mem256|mask,zmmreg [mr:hvm: evex.512.f3.0f38.w0 33 /r ] AVX512,FUTURE +VPMOVM2B xmmreg,kreg [rm: evex.128.f3.0f38.w0 28 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVM2B ymmreg,kreg [rm: evex.256.f3.0f38.w0 28 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVM2B zmmreg,kreg [rm: evex.512.f3.0f38.w0 28 /r ] AVX512BW,FUTURE +VPMOVM2D xmmreg,kreg [rm: evex.128.f3.0f38.w0 38 /r ] AVX512VL,AVX512DQ,FUTURE +VPMOVM2D ymmreg,kreg [rm: evex.256.f3.0f38.w0 38 /r ] AVX512VL,AVX512DQ,FUTURE +VPMOVM2D zmmreg,kreg [rm: evex.512.f3.0f38.w0 38 /r ] AVX512DQ,FUTURE +VPMOVM2Q xmmreg,kreg [rm: evex.128.f3.0f38.w1 38 /r ] AVX512VL,AVX512DQ,FUTURE +VPMOVM2Q ymmreg,kreg [rm: evex.256.f3.0f38.w1 38 /r ] AVX512VL,AVX512DQ,FUTURE +VPMOVM2Q zmmreg,kreg [rm: evex.512.f3.0f38.w1 38 /r ] AVX512DQ,FUTURE +VPMOVM2W xmmreg,kreg [rm: evex.128.f3.0f38.w1 28 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVM2W ymmreg,kreg [rm: evex.256.f3.0f38.w1 28 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVM2W zmmreg,kreg [rm: evex.512.f3.0f38.w1 28 /r ] AVX512BW,FUTURE +VPMOVQ2M kreg,xmmreg [rm: evex.128.f3.0f38.w1 39 /r ] AVX512VL,AVX512DQ,FUTURE +VPMOVQ2M kreg,ymmreg [rm: evex.256.f3.0f38.w1 39 /r ] AVX512VL,AVX512DQ,FUTURE +VPMOVQ2M kreg,zmmreg [rm: evex.512.f3.0f38.w1 39 /r ] AVX512DQ,FUTURE +VPMOVQB xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 32 /r ] AVX512VL,AVX512,FUTURE +VPMOVQB xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 32 /r ] AVX512VL,AVX512,FUTURE +VPMOVQB xmmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 32 /r ] AVX512,FUTURE +VPMOVQB mem16|mask,xmmreg [mr:ovm: evex.128.f3.0f38.w0 32 /r ] AVX512VL,AVX512,FUTURE +VPMOVQB mem32|mask,ymmreg [mr:ovm: evex.256.f3.0f38.w0 32 /r ] AVX512VL,AVX512,FUTURE +VPMOVQB mem64|mask,zmmreg [mr:ovm: evex.512.f3.0f38.w0 32 /r ] AVX512,FUTURE +VPMOVQD xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 35 /r ] AVX512VL,AVX512,FUTURE +VPMOVQD xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 35 /r ] AVX512VL,AVX512,FUTURE +VPMOVQD ymmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 35 /r ] AVX512,FUTURE +VPMOVQD mem64|mask,xmmreg [mr:hvm: evex.128.f3.0f38.w0 35 /r ] AVX512VL,AVX512,FUTURE +VPMOVQD mem128|mask,ymmreg [mr:hvm: evex.256.f3.0f38.w0 35 /r ] AVX512VL,AVX512,FUTURE +VPMOVQD mem256|mask,zmmreg [mr:hvm: evex.512.f3.0f38.w0 35 /r ] AVX512,FUTURE +VPMOVQW xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 34 /r ] AVX512VL,AVX512,FUTURE +VPMOVQW xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 34 /r ] AVX512VL,AVX512,FUTURE +VPMOVQW xmmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 34 /r ] AVX512,FUTURE +VPMOVQW mem32|mask,xmmreg [mr:qvm: evex.128.f3.0f38.w0 34 /r ] AVX512VL,AVX512,FUTURE +VPMOVQW mem64|mask,ymmreg [mr:qvm: evex.256.f3.0f38.w0 34 /r ] AVX512VL,AVX512,FUTURE +VPMOVQW mem128|mask,zmmreg [mr:qvm: evex.512.f3.0f38.w0 34 /r ] AVX512,FUTURE +VPMOVSDB xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 21 /r ] AVX512VL,AVX512,FUTURE +VPMOVSDB xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 21 /r ] AVX512VL,AVX512,FUTURE +VPMOVSDB xmmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 21 /r ] AVX512,FUTURE +VPMOVSDB mem32|mask,xmmreg [mr:qvm: evex.128.f3.0f38.w0 21 /r ] AVX512VL,AVX512,FUTURE +VPMOVSDB mem64|mask,ymmreg [mr:qvm: evex.256.f3.0f38.w0 21 /r ] AVX512VL,AVX512,FUTURE +VPMOVSDB mem128|mask,zmmreg [mr:qvm: evex.512.f3.0f38.w0 21 /r ] AVX512,FUTURE +VPMOVSDW xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 23 /r ] AVX512VL,AVX512,FUTURE +VPMOVSDW xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 23 /r ] AVX512VL,AVX512,FUTURE +VPMOVSDW ymmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 23 /r ] AVX512,FUTURE +VPMOVSDW mem64|mask,xmmreg [mr:hvm: evex.128.f3.0f38.w0 23 /r ] AVX512VL,AVX512,FUTURE +VPMOVSDW mem128|mask,ymmreg [mr:hvm: evex.256.f3.0f38.w0 23 /r ] AVX512VL,AVX512,FUTURE +VPMOVSDW mem256|mask,zmmreg [mr:hvm: evex.512.f3.0f38.w0 23 /r ] AVX512,FUTURE +VPMOVSQB xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 22 /r ] AVX512VL,AVX512,FUTURE +VPMOVSQB xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 22 /r ] AVX512VL,AVX512,FUTURE +VPMOVSQB xmmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 22 /r ] AVX512,FUTURE +VPMOVSQB mem16|mask,xmmreg [mr:ovm: evex.128.f3.0f38.w0 22 /r ] AVX512VL,AVX512,FUTURE +VPMOVSQB mem32|mask,ymmreg [mr:ovm: evex.256.f3.0f38.w0 22 /r ] AVX512VL,AVX512,FUTURE +VPMOVSQB mem64|mask,zmmreg [mr:ovm: evex.512.f3.0f38.w0 22 /r ] AVX512,FUTURE +VPMOVSQD xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 25 /r ] AVX512VL,AVX512,FUTURE +VPMOVSQD xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 25 /r ] AVX512VL,AVX512,FUTURE +VPMOVSQD ymmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 25 /r ] AVX512,FUTURE +VPMOVSQD mem64|mask,xmmreg [mr:hvm: evex.128.f3.0f38.w0 25 /r ] AVX512VL,AVX512,FUTURE +VPMOVSQD mem128|mask,ymmreg [mr:hvm: evex.256.f3.0f38.w0 25 /r ] AVX512VL,AVX512,FUTURE +VPMOVSQD mem256|mask,zmmreg [mr:hvm: evex.512.f3.0f38.w0 25 /r ] AVX512,FUTURE +VPMOVSQW xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 24 /r ] AVX512VL,AVX512,FUTURE +VPMOVSQW xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 24 /r ] AVX512VL,AVX512,FUTURE +VPMOVSQW xmmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 24 /r ] AVX512,FUTURE +VPMOVSQW mem32|mask,xmmreg [mr:qvm: evex.128.f3.0f38.w0 24 /r ] AVX512VL,AVX512,FUTURE +VPMOVSQW mem64|mask,ymmreg [mr:qvm: evex.256.f3.0f38.w0 24 /r ] AVX512VL,AVX512,FUTURE +VPMOVSQW mem128|mask,zmmreg [mr:qvm: evex.512.f3.0f38.w0 24 /r ] AVX512,FUTURE +VPMOVSWB xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 20 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVSWB xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 20 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVSWB ymmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 20 /r ] AVX512BW,FUTURE +VPMOVSWB mem64|mask,xmmreg [mr:hvm: evex.128.f3.0f38.w0 20 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVSWB mem128|mask,ymmreg [mr:hvm: evex.256.f3.0f38.w0 20 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVSWB mem256|mask,zmmreg [mr:hvm: evex.512.f3.0f38.w0 20 /r ] AVX512BW,FUTURE +VPMOVSXBD xmmreg|mask|z,xmmrm32 [rm:qvm: evex.128.66.0f38.wig 21 /r ] AVX512VL,AVX512,FUTURE +VPMOVSXBD ymmreg|mask|z,xmmrm64 [rm:qvm: evex.256.66.0f38.wig 21 /r ] AVX512VL,AVX512,FUTURE +VPMOVSXBD zmmreg|mask|z,xmmrm128 [rm:qvm: evex.512.66.0f38.wig 21 /r ] AVX512,FUTURE +VPMOVSXBQ xmmreg|mask|z,xmmrm16 [rm:ovm: evex.128.66.0f38.wig 22 /r ] AVX512VL,AVX512,FUTURE +VPMOVSXBQ ymmreg|mask|z,xmmrm32 [rm:ovm: evex.256.66.0f38.wig 22 /r ] AVX512VL,AVX512,FUTURE +VPMOVSXBQ zmmreg|mask|z,xmmrm64 [rm:ovm: evex.512.66.0f38.wig 22 /r ] AVX512,FUTURE +VPMOVSXBW xmmreg|mask|z,xmmrm64 [rm:hvm: evex.128.66.0f38.wig 20 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVSXBW ymmreg|mask|z,xmmrm128 [rm:hvm: evex.256.66.0f38.wig 20 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVSXBW zmmreg|mask|z,ymmrm256 [rm:hvm: evex.512.66.0f38.wig 20 /r ] AVX512BW,FUTURE +VPMOVSXDQ xmmreg|mask|z,xmmrm64 [rm:hvm: evex.128.66.0f38.w0 25 /r ] AVX512VL,AVX512,FUTURE +VPMOVSXDQ ymmreg|mask|z,xmmrm128 [rm:hvm: evex.256.66.0f38.w0 25 /r ] AVX512VL,AVX512,FUTURE +VPMOVSXDQ zmmreg|mask|z,ymmrm256 [rm:hvm: evex.512.66.0f38.w0 25 /r ] AVX512,FUTURE +VPMOVSXWD xmmreg|mask|z,xmmrm64 [rm:hvm: evex.128.66.0f38.wig 23 /r ] AVX512VL,AVX512,FUTURE +VPMOVSXWD ymmreg|mask|z,xmmrm128 [rm:hvm: evex.256.66.0f38.wig 23 /r ] AVX512VL,AVX512,FUTURE +VPMOVSXWD zmmreg|mask|z,ymmrm256 [rm:hvm: evex.512.66.0f38.wig 23 /r ] AVX512,FUTURE +VPMOVSXWQ xmmreg|mask|z,xmmrm32 [rm:qvm: evex.128.66.0f38.wig 24 /r ] AVX512VL,AVX512,FUTURE +VPMOVSXWQ ymmreg|mask|z,xmmrm64 [rm:qvm: evex.256.66.0f38.wig 24 /r ] AVX512VL,AVX512,FUTURE +VPMOVSXWQ zmmreg|mask|z,xmmrm128 [rm:qvm: evex.512.66.0f38.wig 24 /r ] AVX512,FUTURE +VPMOVUSDB xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 11 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSDB xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 11 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSDB xmmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 11 /r ] AVX512,FUTURE +VPMOVUSDB mem32|mask,xmmreg [mr:qvm: evex.128.f3.0f38.w0 11 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSDB mem64|mask,ymmreg [mr:qvm: evex.256.f3.0f38.w0 11 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSDB mem128|mask,zmmreg [mr:qvm: evex.512.f3.0f38.w0 11 /r ] AVX512,FUTURE +VPMOVUSDW xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 13 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSDW xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 13 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSDW ymmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 13 /r ] AVX512,FUTURE +VPMOVUSDW mem64|mask,xmmreg [mr:hvm: evex.128.f3.0f38.w0 13 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSDW mem128|mask,ymmreg [mr:hvm: evex.256.f3.0f38.w0 13 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSDW mem256|mask,zmmreg [mr:hvm: evex.512.f3.0f38.w0 13 /r ] AVX512,FUTURE +VPMOVUSQB xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 12 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSQB xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 12 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSQB xmmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 12 /r ] AVX512,FUTURE +VPMOVUSQB mem16|mask,xmmreg [mr:ovm: evex.128.f3.0f38.w0 12 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSQB mem32|mask,ymmreg [mr:ovm: evex.256.f3.0f38.w0 12 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSQB mem64|mask,zmmreg [mr:ovm: evex.512.f3.0f38.w0 12 /r ] AVX512,FUTURE +VPMOVUSQD xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 15 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSQD xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 15 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSQD ymmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 15 /r ] AVX512,FUTURE +VPMOVUSQD mem64|mask,xmmreg [mr:hvm: evex.128.f3.0f38.w0 15 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSQD mem128|mask,ymmreg [mr:hvm: evex.256.f3.0f38.w0 15 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSQD mem256|mask,zmmreg [mr:hvm: evex.512.f3.0f38.w0 15 /r ] AVX512,FUTURE +VPMOVUSQW xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 14 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSQW xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 14 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSQW xmmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 14 /r ] AVX512,FUTURE +VPMOVUSQW mem32|mask,xmmreg [mr:qvm: evex.128.f3.0f38.w0 14 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSQW mem64|mask,ymmreg [mr:qvm: evex.256.f3.0f38.w0 14 /r ] AVX512VL,AVX512,FUTURE +VPMOVUSQW mem128|mask,zmmreg [mr:qvm: evex.512.f3.0f38.w0 14 /r ] AVX512,FUTURE +VPMOVUSWB xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 10 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVUSWB xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 10 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVUSWB ymmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 10 /r ] AVX512BW,FUTURE +VPMOVUSWB mem64|mask,xmmreg [mr:hvm: evex.128.f3.0f38.w0 10 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVUSWB mem128|mask,ymmreg [mr:hvm: evex.256.f3.0f38.w0 10 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVUSWB mem256|mask,zmmreg [mr:hvm: evex.512.f3.0f38.w0 10 /r ] AVX512BW,FUTURE +VPMOVW2M kreg,xmmreg [rm: evex.128.f3.0f38.w1 29 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVW2M kreg,ymmreg [rm: evex.256.f3.0f38.w1 29 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVW2M kreg,zmmreg [rm: evex.512.f3.0f38.w1 29 /r ] AVX512BW,FUTURE +VPMOVWB xmmreg|mask|z,xmmreg [mr: evex.128.f3.0f38.w0 30 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVWB xmmreg|mask|z,ymmreg [mr: evex.256.f3.0f38.w0 30 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVWB ymmreg|mask|z,zmmreg [mr: evex.512.f3.0f38.w0 30 /r ] AVX512BW,FUTURE +VPMOVWB mem64|mask,xmmreg [mr:hvm: evex.128.f3.0f38.w0 30 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVWB mem128|mask,ymmreg [mr:hvm: evex.256.f3.0f38.w0 30 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVWB mem256|mask,zmmreg [mr:hvm: evex.512.f3.0f38.w0 30 /r ] AVX512BW,FUTURE +VPMOVZXBD xmmreg|mask|z,xmmrm32 [rm:qvm: evex.128.66.0f38.wig 31 /r ] AVX512VL,AVX512,FUTURE +VPMOVZXBD ymmreg|mask|z,xmmrm64 [rm:qvm: evex.256.66.0f38.wig 31 /r ] AVX512VL,AVX512,FUTURE +VPMOVZXBD zmmreg|mask|z,xmmrm128 [rm:qvm: evex.512.66.0f38.wig 31 /r ] AVX512,FUTURE +VPMOVZXBQ xmmreg|mask|z,xmmrm16 [rm:ovm: evex.128.66.0f38.wig 32 /r ] AVX512VL,AVX512,FUTURE +VPMOVZXBQ ymmreg|mask|z,xmmrm32 [rm:ovm: evex.256.66.0f38.wig 32 /r ] AVX512VL,AVX512,FUTURE +VPMOVZXBQ zmmreg|mask|z,xmmrm64 [rm:ovm: evex.512.66.0f38.wig 32 /r ] AVX512,FUTURE +VPMOVZXBW xmmreg|mask|z,xmmrm64 [rm:hvm: evex.128.66.0f38.wig 30 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVZXBW ymmreg|mask|z,xmmrm128 [rm:hvm: evex.256.66.0f38.wig 30 /r ] AVX512VL,AVX512BW,FUTURE +VPMOVZXBW zmmreg|mask|z,ymmrm256 [rm:hvm: evex.512.66.0f38.wig 30 /r ] AVX512BW,FUTURE +VPMOVZXDQ xmmreg|mask|z,xmmrm64 [rm:hvm: evex.128.66.0f38.w0 35 /r ] AVX512VL,AVX512,FUTURE +VPMOVZXDQ ymmreg|mask|z,xmmrm128 [rm:hvm: evex.256.66.0f38.w0 35 /r ] AVX512VL,AVX512,FUTURE +VPMOVZXDQ zmmreg|mask|z,ymmrm256 [rm:hvm: evex.512.66.0f38.w0 35 /r ] AVX512,FUTURE +VPMOVZXWD xmmreg|mask|z,xmmrm64 [rm:hvm: evex.128.66.0f38.wig 33 /r ] AVX512VL,AVX512,FUTURE +VPMOVZXWD ymmreg|mask|z,xmmrm128 [rm:hvm: evex.256.66.0f38.wig 33 /r ] AVX512VL,AVX512,FUTURE +VPMOVZXWD zmmreg|mask|z,ymmrm256 [rm:hvm: evex.512.66.0f38.wig 33 /r ] AVX512,FUTURE +VPMOVZXWQ xmmreg|mask|z,xmmrm32 [rm:qvm: evex.128.66.0f38.wig 34 /r ] AVX512VL,AVX512,FUTURE +VPMOVZXWQ ymmreg|mask|z,xmmrm64 [rm:qvm: evex.256.66.0f38.wig 34 /r ] AVX512VL,AVX512,FUTURE +VPMOVZXWQ zmmreg|mask|z,xmmrm128 [rm:qvm: evex.512.66.0f38.wig 34 /r ] AVX512,FUTURE +VPMULDQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 28 /r ] AVX512VL,AVX512,FUTURE +VPMULDQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 28 /r ] AVX512VL,AVX512,FUTURE +VPMULDQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 28 /r ] AVX512,FUTURE +VPMULHRSW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.wig 0b /r ] AVX512VL,AVX512BW,FUTURE +VPMULHRSW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.wig 0b /r ] AVX512VL,AVX512BW,FUTURE +VPMULHRSW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.wig 0b /r ] AVX512BW,FUTURE +VPMULHUW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig e4 /r ] AVX512VL,AVX512BW,FUTURE +VPMULHUW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig e4 /r ] AVX512VL,AVX512BW,FUTURE +VPMULHUW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig e4 /r ] AVX512BW,FUTURE +VPMULHW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig e5 /r ] AVX512VL,AVX512BW,FUTURE +VPMULHW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig e5 /r ] AVX512VL,AVX512BW,FUTURE +VPMULHW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig e5 /r ] AVX512BW,FUTURE +VPMULLD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 40 /r ] AVX512VL,AVX512,FUTURE +VPMULLD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 40 /r ] AVX512VL,AVX512,FUTURE +VPMULLD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 40 /r ] AVX512,FUTURE +VPMULLQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 40 /r ] AVX512VL,AVX512DQ,FUTURE +VPMULLQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 40 /r ] AVX512VL,AVX512DQ,FUTURE +VPMULLQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 40 /r ] AVX512DQ,FUTURE +VPMULLW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig d5 /r ] AVX512VL,AVX512BW,FUTURE +VPMULLW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig d5 /r ] AVX512VL,AVX512BW,FUTURE +VPMULLW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig d5 /r ] AVX512BW,FUTURE +VPMULTISHIFTQB xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 83 /r ] AVX512VL,AVX512VBMI,FUTURE +VPMULTISHIFTQB ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 83 /r ] AVX512VL,AVX512VBMI,FUTURE +VPMULTISHIFTQB zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 83 /r ] AVX512VBMI,FUTURE +VPMULUDQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 f4 /r ] AVX512VL,AVX512,FUTURE +VPMULUDQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 f4 /r ] AVX512VL,AVX512,FUTURE +VPMULUDQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 f4 /r ] AVX512,FUTURE +VPORD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f.w0 eb /r ] AVX512VL,AVX512,FUTURE +VPORD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f.w0 eb /r ] AVX512VL,AVX512,FUTURE +VPORD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f.w0 eb /r ] AVX512,FUTURE +VPORQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 eb /r ] AVX512VL,AVX512,FUTURE +VPORQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 eb /r ] AVX512VL,AVX512,FUTURE +VPORQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 eb /r ] AVX512,FUTURE +VPROLD xmmreg|mask|z,xmmrm128|b32*,imm8 [vmi:fv: evex.nds.128.66.0f.w0 72 /1 ib ] AVX512VL,AVX512,FUTURE +VPROLD ymmreg|mask|z,ymmrm256|b32*,imm8 [vmi:fv: evex.nds.256.66.0f.w0 72 /1 ib ] AVX512VL,AVX512,FUTURE +VPROLD zmmreg|mask|z,zmmrm512|b32*,imm8 [vmi:fv: evex.nds.512.66.0f.w0 72 /1 ib ] AVX512,FUTURE +VPROLQ xmmreg|mask|z,xmmrm128|b64*,imm8 [vmi:fv: evex.nds.128.66.0f.w1 72 /1 ib ] AVX512VL,AVX512,FUTURE +VPROLQ ymmreg|mask|z,ymmrm256|b64*,imm8 [vmi:fv: evex.nds.256.66.0f.w1 72 /1 ib ] AVX512VL,AVX512,FUTURE +VPROLQ zmmreg|mask|z,zmmrm512|b64*,imm8 [vmi:fv: evex.nds.512.66.0f.w1 72 /1 ib ] AVX512,FUTURE +VPROLVD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 15 /r ] AVX512VL,AVX512,FUTURE +VPROLVD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 15 /r ] AVX512VL,AVX512,FUTURE +VPROLVD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 15 /r ] AVX512,FUTURE +VPROLVQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 15 /r ] AVX512VL,AVX512,FUTURE +VPROLVQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 15 /r ] AVX512VL,AVX512,FUTURE +VPROLVQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 15 /r ] AVX512,FUTURE +VPRORD xmmreg|mask|z,xmmrm128|b32*,imm8 [vmi:fv: evex.nds.128.66.0f.w0 72 /0 ib ] AVX512VL,AVX512,FUTURE +VPRORD ymmreg|mask|z,ymmrm256|b32*,imm8 [vmi:fv: evex.nds.256.66.0f.w0 72 /0 ib ] AVX512VL,AVX512,FUTURE +VPRORD zmmreg|mask|z,zmmrm512|b32*,imm8 [vmi:fv: evex.nds.512.66.0f.w0 72 /0 ib ] AVX512,FUTURE +VPRORQ xmmreg|mask|z,xmmrm128|b64*,imm8 [vmi:fv: evex.nds.128.66.0f.w1 72 /0 ib ] AVX512VL,AVX512,FUTURE +VPRORQ ymmreg|mask|z,ymmrm256|b64*,imm8 [vmi:fv: evex.nds.256.66.0f.w1 72 /0 ib ] AVX512VL,AVX512,FUTURE +VPRORQ zmmreg|mask|z,zmmrm512|b64*,imm8 [vmi:fv: evex.nds.512.66.0f.w1 72 /0 ib ] AVX512,FUTURE +VPRORVD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 14 /r ] AVX512VL,AVX512,FUTURE +VPRORVD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 14 /r ] AVX512VL,AVX512,FUTURE +VPRORVD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 14 /r ] AVX512,FUTURE +VPRORVQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 14 /r ] AVX512VL,AVX512,FUTURE +VPRORVQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 14 /r ] AVX512VL,AVX512,FUTURE +VPRORVQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 14 /r ] AVX512,FUTURE +VPSADBW xmmreg,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig f6 /r ] AVX512VL,AVX512BW,FUTURE +VPSADBW ymmreg,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig f6 /r ] AVX512VL,AVX512BW,FUTURE +VPSADBW zmmreg,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig f6 /r ] AVX512BW,FUTURE +VPSCATTERDD xmem32|mask,xmmreg [mr:t1s: vsibx evex.128.66.0f38.w0 a0 /r ] AVX512VL,AVX512,FUTURE +VPSCATTERDD ymem32|mask,ymmreg [mr:t1s: vsiby evex.256.66.0f38.w0 a0 /r ] AVX512VL,AVX512,FUTURE +VPSCATTERDD zmem32|mask,zmmreg [mr:t1s: vsibz evex.512.66.0f38.w0 a0 /r ] AVX512,FUTURE +VPSCATTERDQ xmem64|mask,xmmreg [mr:t1s: vsibx evex.128.66.0f38.w1 a0 /r ] AVX512VL,AVX512,FUTURE +VPSCATTERDQ xmem64|mask,ymmreg [mr:t1s: vsibx evex.256.66.0f38.w1 a0 /r ] AVX512VL,AVX512,FUTURE +VPSCATTERDQ ymem64|mask,zmmreg [mr:t1s: vsiby evex.512.66.0f38.w1 a0 /r ] AVX512,FUTURE +VPSCATTERQD xmem32|mask,xmmreg [mr:t1s: vsibx evex.128.66.0f38.w0 a1 /r ] AVX512VL,AVX512,FUTURE +VPSCATTERQD ymem32|mask,xmmreg [mr:t1s: vsiby evex.256.66.0f38.w0 a1 /r ] AVX512VL,AVX512,FUTURE +VPSCATTERQD zmem32|mask,ymmreg [mr:t1s: vsibz evex.512.66.0f38.w0 a1 /r ] AVX512,FUTURE +VPSCATTERQQ xmem64|mask,xmmreg [mr:t1s: vsibx evex.128.66.0f38.w1 a1 /r ] AVX512VL,AVX512,FUTURE +VPSCATTERQQ ymem64|mask,ymmreg [mr:t1s: vsiby evex.256.66.0f38.w1 a1 /r ] AVX512VL,AVX512,FUTURE +VPSCATTERQQ zmem64|mask,zmmreg [mr:t1s: vsibz evex.512.66.0f38.w1 a1 /r ] AVX512,FUTURE +VPSHUFB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.wig 00 /r ] AVX512VL,AVX512BW,FUTURE +VPSHUFB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.wig 00 /r ] AVX512VL,AVX512BW,FUTURE +VPSHUFB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.wig 00 /r ] AVX512BW,FUTURE +VPSHUFD xmmreg|mask|z,xmmrm128|b32,imm8 [rmi:fv: evex.128.66.0f.w0 70 /r ib ] AVX512VL,AVX512,FUTURE +VPSHUFD ymmreg|mask|z,ymmrm256|b32,imm8 [rmi:fv: evex.256.66.0f.w0 70 /r ib ] AVX512VL,AVX512,FUTURE +VPSHUFD zmmreg|mask|z,zmmrm512|b32,imm8 [rmi:fv: evex.512.66.0f.w0 70 /r ib ] AVX512,FUTURE +VPSHUFHW xmmreg|mask|z,xmmrm128,imm8 [rmi:fvm: evex.128.f3.0f.wig 70 /r ib ] AVX512VL,AVX512BW,FUTURE +VPSHUFHW ymmreg|mask|z,ymmrm256,imm8 [rmi:fvm: evex.256.f3.0f.wig 70 /r ib ] AVX512VL,AVX512BW,FUTURE +VPSHUFHW zmmreg|mask|z,zmmrm512,imm8 [rmi:fvm: evex.512.f3.0f.wig 70 /r ib ] AVX512BW,FUTURE +VPSHUFLW xmmreg|mask|z,xmmrm128,imm8 [rmi:fvm: evex.128.f2.0f.wig 70 /r ib ] AVX512VL,AVX512BW,FUTURE +VPSHUFLW ymmreg|mask|z,ymmrm256,imm8 [rmi:fvm: evex.256.f2.0f.wig 70 /r ib ] AVX512VL,AVX512BW,FUTURE +VPSHUFLW zmmreg|mask|z,zmmrm512,imm8 [rmi:fvm: evex.512.f2.0f.wig 70 /r ib ] AVX512BW,FUTURE +VPSLLD xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:m128: evex.nds.128.66.0f.w0 f2 /r ] AVX512VL,AVX512,FUTURE +VPSLLD ymmreg|mask|z,ymmreg*,xmmrm128 [rvm:m128: evex.nds.256.66.0f.w0 f2 /r ] AVX512VL,AVX512,FUTURE +VPSLLD zmmreg|mask|z,zmmreg*,xmmrm128 [rvm:m128: evex.nds.512.66.0f.w0 f2 /r ] AVX512,FUTURE +VPSLLD xmmreg|mask|z,xmmrm128|b32*,imm8 [vmi:fv: evex.nds.128.66.0f.w0 72 /6 ib ] AVX512VL,AVX512,FUTURE +VPSLLD ymmreg|mask|z,ymmrm256|b32*,imm8 [vmi:fv: evex.nds.256.66.0f.w0 72 /6 ib ] AVX512VL,AVX512,FUTURE +VPSLLD zmmreg|mask|z,zmmrm512|b32*,imm8 [vmi:fv: evex.nds.512.66.0f.w0 72 /6 ib ] AVX512,FUTURE +VPSLLDQ xmmreg,xmmrm128*,imm8 [vmi:fvm: evex.nds.128.66.0f.wig 73 /7 ib ] AVX512VL,AVX512BW,FUTURE +VPSLLDQ ymmreg,ymmrm256*,imm8 [vmi:fvm: evex.nds.256.66.0f.wig 73 /7 ib ] AVX512VL,AVX512BW,FUTURE +VPSLLDQ zmmreg,zmmrm512*,imm8 [vmi:fvm: evex.nds.512.66.0f.wig 73 /7 ib ] AVX512BW,FUTURE +VPSLLQ xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:m128: evex.nds.128.66.0f.w1 f3 /r ] AVX512VL,AVX512,FUTURE +VPSLLQ ymmreg|mask|z,ymmreg*,xmmrm128 [rvm:m128: evex.nds.256.66.0f.w1 f3 /r ] AVX512VL,AVX512,FUTURE +VPSLLQ zmmreg|mask|z,zmmreg*,xmmrm128 [rvm:m128: evex.nds.512.66.0f.w1 f3 /r ] AVX512,FUTURE +VPSLLQ xmmreg|mask|z,xmmrm128|b64*,imm8 [vmi:fv: evex.nds.128.66.0f.w1 73 /6 ib ] AVX512VL,AVX512,FUTURE +VPSLLQ ymmreg|mask|z,ymmrm256|b64*,imm8 [vmi:fv: evex.nds.256.66.0f.w1 73 /6 ib ] AVX512VL,AVX512,FUTURE +VPSLLQ zmmreg|mask|z,zmmrm512|b64*,imm8 [vmi:fv: evex.nds.512.66.0f.w1 73 /6 ib ] AVX512,FUTURE +VPSLLVD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 47 /r ] AVX512VL,AVX512,FUTURE +VPSLLVD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 47 /r ] AVX512VL,AVX512,FUTURE +VPSLLVD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 47 /r ] AVX512,FUTURE +VPSLLVQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 47 /r ] AVX512VL,AVX512,FUTURE +VPSLLVQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 47 /r ] AVX512VL,AVX512,FUTURE +VPSLLVQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 47 /r ] AVX512,FUTURE +VPSLLVW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w1 12 /r ] AVX512VL,AVX512BW,FUTURE +VPSLLVW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w1 12 /r ] AVX512VL,AVX512BW,FUTURE +VPSLLVW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w1 12 /r ] AVX512BW,FUTURE +VPSLLW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:m128: evex.nds.128.66.0f.wig f1 /r ] AVX512VL,AVX512BW,FUTURE +VPSLLW ymmreg|mask|z,ymmreg*,xmmrm128 [rvm:m128: evex.nds.256.66.0f.wig f1 /r ] AVX512VL,AVX512BW,FUTURE +VPSLLW zmmreg|mask|z,zmmreg*,xmmrm128 [rvm:m128: evex.nds.512.66.0f.wig f1 /r ] AVX512BW,FUTURE +VPSLLW xmmreg|mask|z,xmmrm128*,imm8 [vmi:fvm: evex.nds.128.66.0f.wig 71 /6 ib ] AVX512VL,AVX512BW,FUTURE +VPSLLW ymmreg|mask|z,ymmrm256*,imm8 [vmi:fvm: evex.nds.256.66.0f.wig 71 /6 ib ] AVX512VL,AVX512BW,FUTURE +VPSLLW zmmreg|mask|z,zmmrm512*,imm8 [vmi:fvm: evex.nds.512.66.0f.wig 71 /6 ib ] AVX512BW,FUTURE +VPSRAD xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:m128: evex.nds.128.66.0f.w0 e2 /r ] AVX512VL,AVX512,FUTURE +VPSRAD ymmreg|mask|z,ymmreg*,xmmrm128 [rvm:m128: evex.nds.256.66.0f.w0 e2 /r ] AVX512VL,AVX512,FUTURE +VPSRAD zmmreg|mask|z,zmmreg*,xmmrm128 [rvm:m128: evex.nds.512.66.0f.w0 e2 /r ] AVX512,FUTURE +VPSRAD xmmreg|mask|z,xmmrm128|b32*,imm8 [vmi:fv: evex.nds.128.66.0f.w0 72 /4 ib ] AVX512VL,AVX512,FUTURE +VPSRAD ymmreg|mask|z,ymmrm256|b32*,imm8 [vmi:fv: evex.nds.256.66.0f.w0 72 /4 ib ] AVX512VL,AVX512,FUTURE +VPSRAD zmmreg|mask|z,zmmrm512|b32*,imm8 [vmi:fv: evex.nds.512.66.0f.w0 72 /4 ib ] AVX512,FUTURE +VPSRAQ xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:m128: evex.nds.128.66.0f.w1 e2 /r ] AVX512VL,AVX512,FUTURE +VPSRAQ ymmreg|mask|z,ymmreg*,xmmrm128 [rvm:m128: evex.nds.256.66.0f.w1 e2 /r ] AVX512VL,AVX512,FUTURE +VPSRAQ zmmreg|mask|z,zmmreg*,xmmrm128 [rvm:m128: evex.nds.512.66.0f.w1 e2 /r ] AVX512,FUTURE +VPSRAQ xmmreg|mask|z,xmmrm128|b64*,imm8 [vmi:fv: evex.nds.128.66.0f.w1 72 /4 ib ] AVX512VL,AVX512,FUTURE +VPSRAQ ymmreg|mask|z,ymmrm256|b64*,imm8 [vmi:fv: evex.nds.256.66.0f.w1 72 /4 ib ] AVX512VL,AVX512,FUTURE +VPSRAQ zmmreg|mask|z,zmmrm512|b64*,imm8 [vmi:fv: evex.nds.512.66.0f.w1 72 /4 ib ] AVX512,FUTURE +VPSRAVD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 46 /r ] AVX512VL,AVX512,FUTURE +VPSRAVD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 46 /r ] AVX512VL,AVX512,FUTURE +VPSRAVD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 46 /r ] AVX512,FUTURE +VPSRAVQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 46 /r ] AVX512VL,AVX512,FUTURE +VPSRAVQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 46 /r ] AVX512VL,AVX512,FUTURE +VPSRAVQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 46 /r ] AVX512,FUTURE +VPSRAVW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w1 11 /r ] AVX512VL,AVX512BW,FUTURE +VPSRAVW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w1 11 /r ] AVX512VL,AVX512BW,FUTURE +VPSRAVW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w1 11 /r ] AVX512BW,FUTURE +VPSRAW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:m128: evex.nds.128.66.0f.wig e1 /r ] AVX512VL,AVX512BW,FUTURE +VPSRAW ymmreg|mask|z,ymmreg*,xmmrm128 [rvm:m128: evex.nds.256.66.0f.wig e1 /r ] AVX512VL,AVX512BW,FUTURE +VPSRAW zmmreg|mask|z,zmmreg*,xmmrm128 [rvm:m128: evex.nds.512.66.0f.wig e1 /r ] AVX512BW,FUTURE +VPSRAW xmmreg|mask|z,xmmrm128*,imm8 [vmi:fvm: evex.nds.128.66.0f.wig 71 /4 ib ] AVX512VL,AVX512BW,FUTURE +VPSRAW ymmreg|mask|z,ymmrm256*,imm8 [vmi:fvm: evex.nds.256.66.0f.wig 71 /4 ib ] AVX512VL,AVX512BW,FUTURE +VPSRAW zmmreg|mask|z,zmmrm512*,imm8 [vmi:fvm: evex.nds.512.66.0f.wig 71 /4 ib ] AVX512BW,FUTURE +VPSRLD xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:m128: evex.nds.128.66.0f.w0 d2 /r ] AVX512VL,AVX512,FUTURE +VPSRLD ymmreg|mask|z,ymmreg*,xmmrm128 [rvm:m128: evex.nds.256.66.0f.w0 d2 /r ] AVX512VL,AVX512,FUTURE +VPSRLD zmmreg|mask|z,zmmreg*,xmmrm128 [rvm:m128: evex.nds.512.66.0f.w0 d2 /r ] AVX512,FUTURE +VPSRLD xmmreg|mask|z,xmmrm128|b32*,imm8 [vmi:fv: evex.nds.128.66.0f.w0 72 /2 ib ] AVX512VL,AVX512,FUTURE +VPSRLD ymmreg|mask|z,ymmrm256|b32*,imm8 [vmi:fv: evex.nds.256.66.0f.w0 72 /2 ib ] AVX512VL,AVX512,FUTURE +VPSRLD zmmreg|mask|z,zmmrm512|b32*,imm8 [vmi:fv: evex.nds.512.66.0f.w0 72 /2 ib ] AVX512,FUTURE +VPSRLDQ xmmreg,xmmrm128*,imm8 [vmi:fvm: evex.nds.128.66.0f.wig 73 /3 ib ] AVX512VL,AVX512BW,FUTURE +VPSRLDQ ymmreg,ymmrm256*,imm8 [vmi:fvm: evex.nds.256.66.0f.wig 73 /3 ib ] AVX512VL,AVX512BW,FUTURE +VPSRLDQ zmmreg,zmmrm512*,imm8 [vmi:fvm: evex.nds.512.66.0f.wig 73 /3 ib ] AVX512BW,FUTURE +VPSRLQ xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:m128: evex.nds.128.66.0f.w1 d3 /r ] AVX512VL,AVX512,FUTURE +VPSRLQ ymmreg|mask|z,ymmreg*,xmmrm128 [rvm:m128: evex.nds.256.66.0f.w1 d3 /r ] AVX512VL,AVX512,FUTURE +VPSRLQ zmmreg|mask|z,zmmreg*,xmmrm128 [rvm:m128: evex.nds.512.66.0f.w1 d3 /r ] AVX512,FUTURE +VPSRLQ xmmreg|mask|z,xmmrm128|b64*,imm8 [vmi:fv: evex.nds.128.66.0f.w1 73 /2 ib ] AVX512VL,AVX512,FUTURE +VPSRLQ ymmreg|mask|z,ymmrm256|b64*,imm8 [vmi:fv: evex.nds.256.66.0f.w1 73 /2 ib ] AVX512VL,AVX512,FUTURE +VPSRLQ zmmreg|mask|z,zmmrm512|b64*,imm8 [vmi:fv: evex.nds.512.66.0f.w1 73 /2 ib ] AVX512,FUTURE +VPSRLVD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 45 /r ] AVX512VL,AVX512,FUTURE +VPSRLVD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 45 /r ] AVX512VL,AVX512,FUTURE +VPSRLVD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 45 /r ] AVX512,FUTURE +VPSRLVQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 45 /r ] AVX512VL,AVX512,FUTURE +VPSRLVQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 45 /r ] AVX512VL,AVX512,FUTURE +VPSRLVQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 45 /r ] AVX512,FUTURE +VPSRLVW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w1 10 /r ] AVX512VL,AVX512BW,FUTURE +VPSRLVW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w1 10 /r ] AVX512VL,AVX512BW,FUTURE +VPSRLVW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w1 10 /r ] AVX512BW,FUTURE +VPSRLW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:m128: evex.nds.128.66.0f.wig d1 /r ] AVX512VL,AVX512BW,FUTURE +VPSRLW ymmreg|mask|z,ymmreg*,xmmrm128 [rvm:m128: evex.nds.256.66.0f.wig d1 /r ] AVX512VL,AVX512BW,FUTURE +VPSRLW zmmreg|mask|z,zmmreg*,xmmrm128 [rvm:m128: evex.nds.512.66.0f.wig d1 /r ] AVX512BW,FUTURE +VPSRLW xmmreg|mask|z,xmmrm128*,imm8 [vmi:fvm: evex.nds.128.66.0f.wig 71 /2 ib ] AVX512VL,AVX512BW,FUTURE +VPSRLW ymmreg|mask|z,ymmrm256*,imm8 [vmi:fvm: evex.nds.256.66.0f.wig 71 /2 ib ] AVX512VL,AVX512BW,FUTURE +VPSRLW zmmreg|mask|z,zmmrm512*,imm8 [vmi:fvm: evex.nds.512.66.0f.wig 71 /2 ib ] AVX512BW,FUTURE +VPSUBB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig f8 /r ] AVX512VL,AVX512BW,FUTURE +VPSUBB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig f8 /r ] AVX512VL,AVX512BW,FUTURE +VPSUBB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig f8 /r ] AVX512BW,FUTURE +VPSUBD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f.w0 fa /r ] AVX512VL,AVX512,FUTURE +VPSUBD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f.w0 fa /r ] AVX512VL,AVX512,FUTURE +VPSUBD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f.w0 fa /r ] AVX512,FUTURE +VPSUBQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 fb /r ] AVX512VL,AVX512,FUTURE +VPSUBQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 fb /r ] AVX512VL,AVX512,FUTURE +VPSUBQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 fb /r ] AVX512,FUTURE +VPSUBSB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig e8 /r ] AVX512VL,AVX512BW,FUTURE +VPSUBSB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig e8 /r ] AVX512VL,AVX512BW,FUTURE +VPSUBSB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig e8 /r ] AVX512BW,FUTURE +VPSUBSW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig e9 /r ] AVX512VL,AVX512BW,FUTURE +VPSUBSW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig e9 /r ] AVX512VL,AVX512BW,FUTURE +VPSUBSW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig e9 /r ] AVX512BW,FUTURE +VPSUBUSB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig d8 /r ] AVX512VL,AVX512BW,FUTURE +VPSUBUSB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig d8 /r ] AVX512VL,AVX512BW,FUTURE +VPSUBUSB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig d8 /r ] AVX512BW,FUTURE +VPSUBUSW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig d9 /r ] AVX512VL,AVX512BW,FUTURE +VPSUBUSW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig d9 /r ] AVX512VL,AVX512BW,FUTURE +VPSUBUSW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig d9 /r ] AVX512BW,FUTURE +VPSUBW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig f9 /r ] AVX512VL,AVX512BW,FUTURE +VPSUBW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig f9 /r ] AVX512VL,AVX512BW,FUTURE +VPSUBW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig f9 /r ] AVX512BW,FUTURE +VPTERNLOGD xmmreg|mask|z,xmmreg,xmmrm128|b32,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w0 25 /r ib ] AVX512VL,AVX512,FUTURE +VPTERNLOGD ymmreg|mask|z,ymmreg,ymmrm256|b32,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w0 25 /r ib ] AVX512VL,AVX512,FUTURE +VPTERNLOGD zmmreg|mask|z,zmmreg,zmmrm512|b32,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w0 25 /r ib ] AVX512,FUTURE +VPTERNLOGQ xmmreg|mask|z,xmmreg,xmmrm128|b64,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w1 25 /r ib ] AVX512VL,AVX512,FUTURE +VPTERNLOGQ ymmreg|mask|z,ymmreg,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w1 25 /r ib ] AVX512VL,AVX512,FUTURE +VPTERNLOGQ zmmreg|mask|z,zmmreg,zmmrm512|b64,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w1 25 /r ib ] AVX512,FUTURE +VPTESTMB kreg|mask,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w0 26 /r ] AVX512VL,AVX512BW,FUTURE +VPTESTMB kreg|mask,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w0 26 /r ] AVX512VL,AVX512BW,FUTURE +VPTESTMB kreg|mask,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w0 26 /r ] AVX512BW,FUTURE +VPTESTMD kreg|mask,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 27 /r ] AVX512VL,AVX512,FUTURE +VPTESTMD kreg|mask,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 27 /r ] AVX512VL,AVX512,FUTURE +VPTESTMD kreg|mask,zmmreg,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f38.w0 27 /r ] AVX512,FUTURE +VPTESTMQ kreg|mask,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 27 /r ] AVX512VL,AVX512,FUTURE +VPTESTMQ kreg|mask,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 27 /r ] AVX512VL,AVX512,FUTURE +VPTESTMQ kreg|mask,zmmreg,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f38.w1 27 /r ] AVX512,FUTURE +VPTESTMW kreg|mask,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w1 26 /r ] AVX512VL,AVX512BW,FUTURE +VPTESTMW kreg|mask,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w1 26 /r ] AVX512VL,AVX512BW,FUTURE +VPTESTMW kreg|mask,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w1 26 /r ] AVX512BW,FUTURE +VPTESTNMB kreg|mask,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.f3.0f38.w0 26 /r ] AVX512VL,AVX512BW,FUTURE +VPTESTNMB kreg|mask,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.f3.0f38.w0 26 /r ] AVX512VL,AVX512BW,FUTURE +VPTESTNMB kreg|mask,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.f3.0f38.w0 26 /r ] AVX512BW,FUTURE +VPTESTNMD kreg|mask,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.f3.0f38.w0 27 /r ] AVX512VL,AVX512,FUTURE +VPTESTNMD kreg|mask,ymmreg,ymmrm256|b32 [rvm:fv: evex.nds.256.f3.0f38.w0 27 /r ] AVX512VL,AVX512,FUTURE +VPTESTNMD kreg|mask,zmmreg,zmmrm512|b32 [rvm:fv: evex.nds.512.f3.0f38.w0 27 /r ] AVX512,FUTURE +VPTESTNMQ kreg|mask,xmmreg,xmmrm128|b64 [rvm:fv: evex.nds.128.f3.0f38.w1 27 /r ] AVX512VL,AVX512,FUTURE +VPTESTNMQ kreg|mask,ymmreg,ymmrm256|b64 [rvm:fv: evex.nds.256.f3.0f38.w1 27 /r ] AVX512VL,AVX512,FUTURE +VPTESTNMQ kreg|mask,zmmreg,zmmrm512|b64 [rvm:fv: evex.nds.512.f3.0f38.w1 27 /r ] AVX512,FUTURE +VPTESTNMW kreg|mask,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.f3.0f38.w1 26 /r ] AVX512VL,AVX512BW,FUTURE +VPTESTNMW kreg|mask,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.f3.0f38.w1 26 /r ] AVX512VL,AVX512BW,FUTURE +VPTESTNMW kreg|mask,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.f3.0f38.w1 26 /r ] AVX512BW,FUTURE +VPUNPCKHBW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig 68 /r ] AVX512VL,AVX512BW,FUTURE +VPUNPCKHBW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig 68 /r ] AVX512VL,AVX512BW,FUTURE +VPUNPCKHBW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig 68 /r ] AVX512BW,FUTURE +VPUNPCKHDQ xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f.w0 6a /r ] AVX512VL,AVX512,FUTURE +VPUNPCKHDQ ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f.w0 6a /r ] AVX512VL,AVX512,FUTURE +VPUNPCKHDQ zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f.w0 6a /r ] AVX512,FUTURE +VPUNPCKHQDQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 6d /r ] AVX512VL,AVX512,FUTURE +VPUNPCKHQDQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 6d /r ] AVX512VL,AVX512,FUTURE +VPUNPCKHQDQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 6d /r ] AVX512,FUTURE +VPUNPCKHWD xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig 69 /r ] AVX512VL,AVX512BW,FUTURE +VPUNPCKHWD ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig 69 /r ] AVX512VL,AVX512BW,FUTURE +VPUNPCKHWD zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig 69 /r ] AVX512BW,FUTURE +VPUNPCKLBW xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig 60 /r ] AVX512VL,AVX512BW,FUTURE +VPUNPCKLBW ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig 60 /r ] AVX512VL,AVX512BW,FUTURE +VPUNPCKLBW zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig 60 /r ] AVX512BW,FUTURE +VPUNPCKLDQ xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f.w0 62 /r ] AVX512VL,AVX512,FUTURE +VPUNPCKLDQ ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f.w0 62 /r ] AVX512VL,AVX512,FUTURE +VPUNPCKLDQ zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f.w0 62 /r ] AVX512,FUTURE +VPUNPCKLQDQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 6c /r ] AVX512VL,AVX512,FUTURE +VPUNPCKLQDQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 6c /r ] AVX512VL,AVX512,FUTURE +VPUNPCKLQDQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 6c /r ] AVX512,FUTURE +VPUNPCKLWD xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f.wig 61 /r ] AVX512VL,AVX512BW,FUTURE +VPUNPCKLWD ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f.wig 61 /r ] AVX512VL,AVX512BW,FUTURE +VPUNPCKLWD zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f.wig 61 /r ] AVX512BW,FUTURE +VPXORD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f.w0 ef /r ] AVX512VL,AVX512,FUTURE +VPXORD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f.w0 ef /r ] AVX512VL,AVX512,FUTURE +VPXORD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.66.0f.w0 ef /r ] AVX512,FUTURE +VPXORQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 ef /r ] AVX512VL,AVX512,FUTURE +VPXORQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 ef /r ] AVX512VL,AVX512,FUTURE +VPXORQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 ef /r ] AVX512,FUTURE +VRANGEPD xmmreg|mask|z,xmmreg*,xmmrm128|b64,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w1 50 /r ib ] AVX512VL,AVX512DQ,FUTURE +VRANGEPD ymmreg|mask|z,ymmreg*,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w1 50 /r ib ] AVX512VL,AVX512DQ,FUTURE +VRANGEPD zmmreg|mask|z,zmmreg*,zmmrm512|b64|sae,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w1 50 /r ib ] AVX512DQ,FUTURE +VRANGEPS xmmreg|mask|z,xmmreg*,xmmrm128|b32,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w0 50 /r ib ] AVX512VL,AVX512DQ,FUTURE +VRANGEPS ymmreg|mask|z,ymmreg*,ymmrm256|b32,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w0 50 /r ib ] AVX512VL,AVX512DQ,FUTURE +VRANGEPS zmmreg|mask|z,zmmreg*,zmmrm512|b32|sae,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w0 50 /r ib ] AVX512DQ,FUTURE +VRANGESD xmmreg|mask|z,xmmreg*,xmmrm64|sae,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w1 51 /r ib ] AVX512DQ,FUTURE +VRANGESS xmmreg|mask|z,xmmreg*,xmmrm32|sae,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w0 51 /r ib ] AVX512DQ,FUTURE +VRCP14PD xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f38.w1 4c /r ] AVX512VL,AVX512,FUTURE +VRCP14PD ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f38.w1 4c /r ] AVX512VL,AVX512,FUTURE +VRCP14PD zmmreg|mask|z,zmmrm512|b64 [rm:fv: evex.512.66.0f38.w1 4c /r ] AVX512,FUTURE +VRCP14PS xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.66.0f38.w0 4c /r ] AVX512VL,AVX512,FUTURE +VRCP14PS ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.66.0f38.w0 4c /r ] AVX512VL,AVX512,FUTURE +VRCP14PS zmmreg|mask|z,zmmrm512|b32 [rm:fv: evex.512.66.0f38.w0 4c /r ] AVX512,FUTURE +VRCP14SD xmmreg|mask|z,xmmreg*,xmmrm64 [rvm:t1s: evex.nds.128.66.0f38.w1 4d /r ] AVX512,FUTURE +VRCP14SS xmmreg|mask|z,xmmreg*,xmmrm32 [rvm:t1s: evex.nds.128.66.0f38.w0 4d /r ] AVX512,FUTURE +VRCP28PD zmmreg|mask|z,zmmrm512|b64|sae [rm:fv: evex.512.66.0f38.w1 ca /r ] AVX512ER,FUTURE +VRCP28PS zmmreg|mask|z,zmmrm512|b32|sae [rm:fv: evex.512.66.0f38.w0 ca /r ] AVX512ER,FUTURE +VRCP28SD xmmreg|mask|z,xmmreg*,xmmrm64|sae [rvm:t1s: evex.nds.128.66.0f38.w1 cb /r ] AVX512ER,FUTURE +VRCP28SS xmmreg|mask|z,xmmreg*,xmmrm32|sae [rvm:t1s: evex.nds.128.66.0f38.w0 cb /r ] AVX512ER,FUTURE +VREDUCEPD xmmreg|mask|z,xmmrm128|b64,imm8 [rmi:fv: evex.128.66.0f3a.w1 56 /r ib ] AVX512VL,AVX512DQ,FUTURE +VREDUCEPD ymmreg|mask|z,ymmrm256|b64,imm8 [rmi:fv: evex.256.66.0f3a.w1 56 /r ib ] AVX512VL,AVX512DQ,FUTURE +VREDUCEPD zmmreg|mask|z,zmmrm512|b64|sae,imm8 [rmi:fv: evex.512.66.0f3a.w1 56 /r ib ] AVX512DQ,FUTURE +VREDUCEPS xmmreg|mask|z,xmmrm128|b32,imm8 [rmi:fv: evex.128.66.0f3a.w0 56 /r ib ] AVX512VL,AVX512DQ,FUTURE +VREDUCEPS ymmreg|mask|z,ymmrm256|b32,imm8 [rmi:fv: evex.256.66.0f3a.w0 56 /r ib ] AVX512VL,AVX512DQ,FUTURE +VREDUCEPS zmmreg|mask|z,zmmrm512|b32|sae,imm8 [rmi:fv: evex.512.66.0f3a.w0 56 /r ib ] AVX512DQ,FUTURE +VREDUCESD xmmreg|mask|z,xmmreg*,xmmrm64|sae,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w1 57 /r ib ] AVX512DQ,FUTURE +VREDUCESS xmmreg|mask|z,xmmreg*,xmmrm32|sae,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w0 57 /r ib ] AVX512DQ,FUTURE +VRNDSCALEPD xmmreg|mask|z,xmmrm128|b64,imm8 [rmi:fv: evex.128.66.0f3a.w1 09 /r ib ] AVX512VL,AVX512,FUTURE +VRNDSCALEPD ymmreg|mask|z,ymmrm256|b64,imm8 [rmi:fv: evex.256.66.0f3a.w1 09 /r ib ] AVX512VL,AVX512,FUTURE +VRNDSCALEPD zmmreg|mask|z,zmmrm512|b64|sae,imm8 [rmi:fv: evex.512.66.0f3a.w1 09 /r ib ] AVX512,FUTURE +VRNDSCALEPS xmmreg|mask|z,xmmrm128|b32,imm8 [rmi:fv: evex.128.66.0f3a.w0 08 /r ib ] AVX512VL,AVX512,FUTURE +VRNDSCALEPS ymmreg|mask|z,ymmrm256|b32,imm8 [rmi:fv: evex.256.66.0f3a.w0 08 /r ib ] AVX512VL,AVX512,FUTURE +VRNDSCALEPS zmmreg|mask|z,zmmrm512|b32|sae,imm8 [rmi:fv: evex.512.66.0f3a.w0 08 /r ib ] AVX512,FUTURE +VRNDSCALESD xmmreg|mask|z,xmmreg*,xmmrm64|sae,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w1 0b /r ib ] AVX512,FUTURE +VRNDSCALESS xmmreg|mask|z,xmmreg*,xmmrm32|sae,imm8 [rvmi:t1s: evex.nds.128.66.0f3a.w0 0a /r ib ] AVX512,FUTURE +VRSQRT14PD xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f38.w1 4e /r ] AVX512VL,AVX512,FUTURE +VRSQRT14PD ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f38.w1 4e /r ] AVX512VL,AVX512,FUTURE +VRSQRT14PD zmmreg|mask|z,zmmrm512|b64 [rm:fv: evex.512.66.0f38.w1 4e /r ] AVX512,FUTURE +VRSQRT14PS xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.66.0f38.w0 4e /r ] AVX512VL,AVX512,FUTURE +VRSQRT14PS ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.66.0f38.w0 4e /r ] AVX512VL,AVX512,FUTURE +VRSQRT14PS zmmreg|mask|z,zmmrm512|b32 [rm:fv: evex.512.66.0f38.w0 4e /r ] AVX512,FUTURE +VRSQRT14SD xmmreg|mask|z,xmmreg*,xmmrm64 [rvm:t1s: evex.nds.128.66.0f38.w1 4f /r ] AVX512,FUTURE +VRSQRT14SS xmmreg|mask|z,xmmreg*,xmmrm32 [rvm:t1s: evex.nds.128.66.0f38.w0 4f /r ] AVX512,FUTURE +VRSQRT28PD zmmreg|mask|z,zmmrm512|b64|sae [rm:fv: evex.512.66.0f38.w1 cc /r ] AVX512ER,FUTURE +VRSQRT28PS zmmreg|mask|z,zmmrm512|b32|sae [rm:fv: evex.512.66.0f38.w0 cc /r ] AVX512ER,FUTURE +VRSQRT28SD xmmreg|mask|z,xmmreg*,xmmrm64|sae [rvm:t1s: evex.nds.128.66.0f38.w1 cd /r ] AVX512ER,FUTURE +VRSQRT28SS xmmreg|mask|z,xmmreg*,xmmrm32|sae [rvm:t1s: evex.nds.128.66.0f38.w0 cd /r ] AVX512ER,FUTURE +VSCALEFPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f38.w1 2c /r ] AVX512VL,AVX512,FUTURE +VSCALEFPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f38.w1 2c /r ] AVX512VL,AVX512,FUTURE +VSCALEFPD zmmreg|mask|z,zmmreg*,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f38.w1 2c /r ] AVX512,FUTURE +VSCALEFPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.66.0f38.w0 2c /r ] AVX512VL,AVX512,FUTURE +VSCALEFPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.66.0f38.w0 2c /r ] AVX512VL,AVX512,FUTURE +VSCALEFPS zmmreg|mask|z,zmmreg*,zmmrm512|b32|er [rvm:fv: evex.nds.512.66.0f38.w0 2c /r ] AVX512,FUTURE +VSCALEFSD xmmreg|mask|z,xmmreg*,xmmrm64|er [rvm:t1s: evex.nds.128.66.0f38.w1 2d /r ] AVX512,FUTURE +VSCALEFSS xmmreg|mask|z,xmmreg*,xmmrm32|er [rvm:t1s: evex.nds.128.66.0f38.w0 2d /r ] AVX512,FUTURE +VSCATTERDPD xmem64|mask,xmmreg [mr:t1s: vsibx evex.128.66.0f38.w1 a2 /r ] AVX512VL,AVX512,FUTURE +VSCATTERDPD xmem64|mask,ymmreg [mr:t1s: vsibx evex.256.66.0f38.w1 a2 /r ] AVX512VL,AVX512,FUTURE +VSCATTERDPD ymem64|mask,zmmreg [mr:t1s: vsiby evex.512.66.0f38.w1 a2 /r ] AVX512,FUTURE +VSCATTERDPS xmem32|mask,xmmreg [mr:t1s: vsibx evex.128.66.0f38.w0 a2 /r ] AVX512VL,AVX512,FUTURE +VSCATTERDPS ymem32|mask,ymmreg [mr:t1s: vsiby evex.256.66.0f38.w0 a2 /r ] AVX512VL,AVX512,FUTURE +VSCATTERDPS zmem32|mask,zmmreg [mr:t1s: vsibz evex.512.66.0f38.w0 a2 /r ] AVX512,FUTURE +VSCATTERPF0DPD ymem64|mask [m:t1s: vsiby evex.512.66.0f38.w1 c6 /5 ] AVX512PF,FUTURE +VSCATTERPF0DPS zmem32|mask [m:t1s: vsibz evex.512.66.0f38.w0 c6 /5 ] AVX512PF,FUTURE +VSCATTERPF0QPD zmem64|mask [m:t1s: vsibz evex.512.66.0f38.w1 c7 /5 ] AVX512PF,FUTURE +VSCATTERPF0QPS zmem32|mask [m:t1s: vsibz evex.512.66.0f38.w0 c7 /5 ] AVX512PF,FUTURE +VSCATTERPF1DPD ymem64|mask [m:t1s: vsiby evex.512.66.0f38.w1 c6 /6 ] AVX512PF,FUTURE +VSCATTERPF1DPS zmem32|mask [m:t1s: vsibz evex.512.66.0f38.w0 c6 /6 ] AVX512PF,FUTURE +VSCATTERPF1QPD zmem64|mask [m:t1s: vsibz evex.512.66.0f38.w1 c7 /6 ] AVX512PF,FUTURE +VSCATTERPF1QPS zmem32|mask [m:t1s: vsibz evex.512.66.0f38.w0 c7 /6 ] AVX512PF,FUTURE +VSCATTERQPD xmem64|mask,xmmreg [mr:t1s: vsibx evex.128.66.0f38.w1 a3 /r ] AVX512VL,AVX512,FUTURE +VSCATTERQPD ymem64|mask,ymmreg [mr:t1s: vsiby evex.256.66.0f38.w1 a3 /r ] AVX512VL,AVX512,FUTURE +VSCATTERQPD zmem64|mask,zmmreg [mr:t1s: vsibz evex.512.66.0f38.w1 a3 /r ] AVX512,FUTURE +VSCATTERQPS xmem32|mask,xmmreg [mr:t1s: vsibx evex.128.66.0f38.w0 a3 /r ] AVX512VL,AVX512,FUTURE +VSCATTERQPS ymem32|mask,xmmreg [mr:t1s: vsiby evex.256.66.0f38.w0 a3 /r ] AVX512VL,AVX512,FUTURE +VSCATTERQPS zmem32|mask,ymmreg [mr:t1s: vsibz evex.512.66.0f38.w0 a3 /r ] AVX512,FUTURE +VSHUFF32X4 ymmreg|mask|z,ymmreg*,ymmrm256|b32,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w0 23 /r ib ] AVX512VL,AVX512,FUTURE +VSHUFF32X4 zmmreg|mask|z,zmmreg*,zmmrm512|b32,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w0 23 /r ib ] AVX512,FUTURE +VSHUFF64X2 ymmreg|mask|z,ymmreg*,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w1 23 /r ib ] AVX512VL,AVX512,FUTURE +VSHUFF64X2 zmmreg|mask|z,zmmreg*,zmmrm512|b64,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w1 23 /r ib ] AVX512,FUTURE +VSHUFI32X4 ymmreg|mask|z,ymmreg*,ymmrm256|b32,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w0 43 /r ib ] AVX512VL,AVX512,FUTURE +VSHUFI32X4 zmmreg|mask|z,zmmreg*,zmmrm512|b32,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w0 43 /r ib ] AVX512,FUTURE +VSHUFI64X2 ymmreg|mask|z,ymmreg*,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w1 43 /r ib ] AVX512VL,AVX512,FUTURE +VSHUFI64X2 zmmreg|mask|z,zmmreg*,zmmrm512|b64,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w1 43 /r ib ] AVX512,FUTURE +VSHUFPD xmmreg|mask|z,xmmreg*,xmmrm128|b64,imm8 [rvmi:fv: evex.nds.128.66.0f.w1 c6 /r ib ] AVX512VL,AVX512,FUTURE +VSHUFPD ymmreg|mask|z,ymmreg*,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f.w1 c6 /r ib ] AVX512VL,AVX512,FUTURE +VSHUFPD zmmreg|mask|z,zmmreg*,zmmrm512|b64,imm8 [rvmi:fv: evex.nds.512.66.0f.w1 c6 /r ib ] AVX512,FUTURE +VSHUFPS xmmreg|mask|z,xmmreg*,xmmrm128|b32,imm8 [rvmi:fv: evex.nds.128.0f.w0 c6 /r ib ] AVX512VL,AVX512,FUTURE +VSHUFPS ymmreg|mask|z,ymmreg*,ymmrm256|b32,imm8 [rvmi:fv: evex.nds.256.0f.w0 c6 /r ib ] AVX512VL,AVX512,FUTURE +VSHUFPS zmmreg|mask|z,zmmreg*,zmmrm512|b32,imm8 [rvmi:fv: evex.nds.512.0f.w0 c6 /r ib ] AVX512,FUTURE +VSQRTPD xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.0f.w1 51 /r ] AVX512VL,AVX512,FUTURE +VSQRTPD ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.0f.w1 51 /r ] AVX512VL,AVX512,FUTURE +VSQRTPD zmmreg|mask|z,zmmrm512|b64|er [rm:fv: evex.512.66.0f.w1 51 /r ] AVX512,FUTURE +VSQRTPS xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.0f.w0 51 /r ] AVX512VL,AVX512,FUTURE +VSQRTPS ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.0f.w0 51 /r ] AVX512VL,AVX512,FUTURE +VSQRTPS zmmreg|mask|z,zmmrm512|b32|er [rm:fv: evex.512.0f.w0 51 /r ] AVX512,FUTURE +VSQRTSD xmmreg|mask|z,xmmreg*,xmmrm64|er [rvm:t1s: evex.nds.128.f2.0f.w1 51 /r ] AVX512,FUTURE +VSQRTSS xmmreg|mask|z,xmmreg*,xmmrm32|er [rvm:t1s: evex.nds.128.f3.0f.w0 51 /r ] AVX512,FUTURE +VSUBPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 5c /r ] AVX512VL,AVX512,FUTURE +VSUBPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 5c /r ] AVX512VL,AVX512,FUTURE +VSUBPD zmmreg|mask|z,zmmreg*,zmmrm512|b64|er [rvm:fv: evex.nds.512.66.0f.w1 5c /r ] AVX512,FUTURE +VSUBPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 5c /r ] AVX512VL,AVX512,FUTURE +VSUBPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 5c /r ] AVX512VL,AVX512,FUTURE +VSUBPS zmmreg|mask|z,zmmreg*,zmmrm512|b32|er [rvm:fv: evex.nds.512.0f.w0 5c /r ] AVX512,FUTURE +VSUBSD xmmreg|mask|z,xmmreg*,xmmrm64|er [rvm:t1s: evex.nds.128.f2.0f.w1 5c /r ] AVX512,FUTURE +VSUBSS xmmreg|mask|z,xmmreg*,xmmrm32|er [rvm:t1s: evex.nds.128.f3.0f.w0 5c /r ] AVX512,FUTURE +VUCOMISD xmmreg,xmmrm64|sae [rm:t1s: evex.128.66.0f.w1 2e /r ] AVX512,FUTURE +VUCOMISS xmmreg,xmmrm32|sae [rm:t1s: evex.128.0f.w0 2e /r ] AVX512,FUTURE +VUNPCKHPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 15 /r ] AVX512VL,AVX512,FUTURE +VUNPCKHPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 15 /r ] AVX512VL,AVX512,FUTURE +VUNPCKHPD zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 15 /r ] AVX512,FUTURE +VUNPCKHPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 15 /r ] AVX512VL,AVX512,FUTURE +VUNPCKHPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 15 /r ] AVX512VL,AVX512,FUTURE +VUNPCKHPS zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.0f.w0 15 /r ] AVX512,FUTURE +VUNPCKLPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 14 /r ] AVX512VL,AVX512,FUTURE +VUNPCKLPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 14 /r ] AVX512VL,AVX512,FUTURE +VUNPCKLPD zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 14 /r ] AVX512,FUTURE +VUNPCKLPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 14 /r ] AVX512VL,AVX512,FUTURE +VUNPCKLPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 14 /r ] AVX512VL,AVX512,FUTURE +VUNPCKLPS zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.0f.w0 14 /r ] AVX512,FUTURE +VXORPD xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvm:fv: evex.nds.128.66.0f.w1 57 /r ] AVX512VL,AVX512DQ,FUTURE +VXORPD ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvm:fv: evex.nds.256.66.0f.w1 57 /r ] AVX512VL,AVX512DQ,FUTURE +VXORPD zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvm:fv: evex.nds.512.66.0f.w1 57 /r ] AVX512DQ,FUTURE +VXORPS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.0f.w0 57 /r ] AVX512VL,AVX512DQ,FUTURE +VXORPS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.0f.w0 57 /r ] AVX512VL,AVX512DQ,FUTURE +VXORPS zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.nds.512.0f.w0 57 /r ] AVX512DQ,FUTURE +; MJC PUBLIC END + +;# Intel memory protection keys for userspace (PKU aka PKEYs) +RDPKRU void [ 0f 01 ee] LONG,FUTURE +WRPKRU void [ 0f 01 ef] LONG,FUTURE + +;# Read Processor ID +RDPID reg32 [m: f3 0f c7 /7] NOLONG,FUTURE +RDPID reg64 [m: o64nw f3 0f c7 /7] LONG,FUTURE +RDPID reg32 [m: f3 0f c7 /7] LONG,UNDOC,FUTURE + +;# New memory instructions +CLFLUSHOPT mem [m: 66 0f ae /7] FUTURE +CLWB mem [m: 66 0f ae /6] FUTURE +; This one was killed before it saw the light of day +PCOMMIT void [ 66 0f ae f8] FUTURE,NEVER,NOP + +; AMD Zen v1 +CLZERO void [ 0f 01 fc] FUTURE,AMD +CLZERO reg_ax [-: a16 0f 01 fc] FUTURE,AMD,ND,NOLONG +CLZERO reg_eax [-: a32 0f 01 fc] FUTURE,AMD,ND +CLZERO reg_rax [-: a64 0f 01 fc] FUTURE,AMD,ND,LONG + +;# Processor trace write +PTWRITE rm32 [m: np 0f ae /4] FUTURE +PTWRITE rm64 [m: o64 np 0f ae /4] LONG,FUTURE + +;# Instructions from the Intel Instruction Set Extensions, +;# doc 319433-034 May 2018 +CLDEMOTE mem [m: np 0f 1c /0] FUTURE +MOVDIRI mem32,reg32 [mr: np 0f 38 f9 /r] FUTURE,SD +MOVDIRI mem64,reg64 [mr: o64 0f 38 f9 /r] FUTURE,LONG,SQ +MOVDIR64B reg16,mem512 [rm: a16 66 0f 38 f8 /r] FUTURE,NOLONG +MOVDIR64B reg32,mem512 [rm: a32 66 0f 38 f8 /r] FUTURE +MOVDIR64B reg64,mem512 [rm: o64nw a64 66 0f 38 f8 /r] FUTURE,LONG +PCONFIG void [ np 0f 01 c5] FUTURE +TPAUSE reg32 [m: 66 0f ae /6] FUTURE +TPAUSE reg32,reg_edx,reg_eax [m--: 66 0f ae /6] FUTURE,ND +UMONITOR reg16 [m: a16 f3 0f ae /6] FUTURE,NOLONG +UMONITOR reg32 [m: a32 f3 0f ae /6] FUTURE +UMONITOR reg64 [m: o64nw a64 f3 0f ae /6] FUTURE,LONG +UMWAIT reg32 [m: f2 0f ae /6] FUTURE +UMWAIT reg32,reg_edx,reg_eax [m--: f2 0f ae /6] FUTURE,ND +WBNOINVD void [ f3 0f 09] FUTURE + +;# Galois field operations (GFNI) +GF2P8AFFINEINVQB xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a cf /r ib] GFNI,SSE,FUTURE +VGF2P8AFFINEINVQB xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a.w1 cf /r ib] GFNI,AVX,FUTURE +VGF2P8AFFINEINVQB ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f3a.w1 cf /r ib] GFNI,AVX,FUTURE +VGF2P8AFFINEINVQB xmmreg|mask|z,xmmreg*,xmmrm128|b64,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w1 cf /r ib] GFNI,AVX512VL,FUTURE +VGF2P8AFFINEINVQB ymmreg|mask|z,ymmreg*,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w1 cf /r ib] GFNI,AVX512VL,FUTURE +VGF2P8AFFINEINVQB zmmreg|mask|z,zmmreg*,zmmrm512|b64,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w1 cf /r ib] GFNI,AVX512,FUTURE +GF2P8AFFINEQB xmmreg,xmmrm128,imm8 [rmi: 66 0f 3a ce /r ib] GFNI,SSE,FUTURE +VGF2P8AFFINEQB xmmreg,xmmreg*,xmmrm128,imm8 [rvmi: vex.nds.128.66.0f3a.w1 ce /r ib] GFNI,AVX,FUTURE +VGF2P8AFFINEQB ymmreg,ymmreg*,ymmrm256,imm8 [rvmi: vex.nds.256.66.0f3a.w1 ce /r ib] GFNI,AVX,FUTURE +VGF2P8AFFINEQB xmmreg|mask|z,xmmreg*,xmmrm128|b64,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w1 ce /r ib] GFNI,AVX512VL,FUTURE +VGF2P8AFFINEQB ymmreg|mask|z,ymmreg*,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w1 ce /r ib] GFNI,AVX512VL,FUTURE +VGF2P8AFFINEQB zmmreg|mask|z,zmmreg*,zmmrm512|b64,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w1 ce /r ib] GFNI,AVX512,FUTURE +GF2P8MULB xmmreg,xmmrm128 [rm: 66 0f 38 cf /r] GFNI,SSE,FUTURE +VGF2P8MULB xmmreg,xmmreg*,xmmrm128 [rvm: vex.nds.128.66.0f38.w0 cf /r] GFNI,AVX,FUTURE +VGF2P8MULB ymmreg,ymmreg*,ymmrm256 [rvm: vex.nds.256.66.0f38.w0 cf /r] GFNI,AVX,FUTURE +VGF2P8MULB xmmreg|mask|z,xmmreg*,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w0 cf /r] GFNI,AVX512VL,FUTURE +VGF2P8MULB ymmreg|mask|z,ymmreg*,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w0 cf /r] GFNI,AVX512VL,FUTURE +VGF2P8MULB zmmreg|mask|z,zmmreg*,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w0 cf /r] GFNI,AVX512,FUTURE + +;# AVX512 Vector Bit Manipulation Instructions 2 +VPCOMPRESSB mem128|mask,xmmreg [mr:t1s8: evex.128.66.0f38.w0 63 /r] AVX512VBMI2,AVX512VL,FUTURE +VPCOMPRESSB mem256|mask,ymmreg [mr:t1s8: evex.256.66.0f38.w0 63 /r] AVX512VBMI2,AVX512VL,FUTURE +VPCOMPRESSB mem512|mask,zmmreg [mr:t1s8: evex.512.66.0f38.w0 63 /r] AVX512VBMI2,FUTURE +VPCOMPRESSB xmmreg|mask|z,xmmreg [mr: evex.128.66.0f38.w0 63 /r] AVX512VBMI2,AVX512VL,FUTURE +VPCOMPRESSB ymmreg|mask|z,ymmreg [mr: evex.256.66.0f38.w0 63 /r] AVX512VBMI2,AVX512VL,FUTURE +VPCOMPRESSB zmmreg|mask|z,zmmreg [mr: evex.512.66.0f38.w0 63 /r] AVX512VBMI2,FUTURE +VPCOMPRESSW mem128|mask,xmmreg [mr:t1s16: evex.128.66.0f38.w1 63 /r] AVX512VBMI2,AVX512VL,FUTURE +VPCOMPRESSW mem256|mask,ymmreg [mr:t1s16: evex.256.66.0f38.w1 63 /r] AVX512VBMI2,AVX512VL,FUTURE +VPCOMPRESSW mem512|mask,zmmreg [mr:t1s16: evex.512.66.0f38.w1 63 /r] AVX512VBMI2,FUTURE +VPCOMPRESSW xmmreg|mask|z,xmmreg [mr: evex.128.66.0f38.w1 63 /r] AVX512VBMI2,AVX512VL,FUTURE +VPCOMPRESSW ymmreg|mask|z,ymmreg [mr: evex.256.66.0f38.w1 63 /r] AVX512VBMI2,AVX512VL,FUTURE +VPCOMPRESSW zmmreg|mask|z,zmmreg [mr: evex.512.66.0f38.w1 63 /r] AVX512VBMI2,FUTURE +VPEXPANDB xmmreg|mask|z,xmmrm128 [rm:t1s8: evex.128.66.0f38.w0 62 /r] AVX512VBMI2,AVX512VL,FUTURE +VPEXPANDB ymmreg|mask|z,ymmrm256 [rm:t1s8: evex.256.66.0f38.w0 62 /r] AVX512VBMI2,AVX512VL,FUTURE +VPEXPANDB zmmreg|mask|z,zmmrm512 [rm:t1s8: evex.512.66.0f38.w0 62 /r] AVX512VBMI2,FUTURE +VPEXPANDW xmmreg|mask|z,xmmrm128 [rm:t1s16: evex.128.66.0f38.w1 62 /r] AVX512VBMI2,AVX512VL,FUTURE +VPEXPANDW ymmreg|mask|z,ymmrm256 [rm:t1s16: evex.256.66.0f38.w1 62 /r] AVX512VBMI2,AVX512VL,FUTURE +VPEXPANDW zmmreg|mask|z,zmmrm512 [rm:t1s16: evex.512.66.0f38.w1 62 /r] AVX512VBMI2,FUTURE +VPSHLDW xmmreg|mask|z,xmmreg*,xmmrm128,imm8 [rvmi:fvm: evex.nds.128.66.0f3a.w1 70 /r ib] AVX512VBMI2,AVX512VL,FUTURE +VPSHLDW ymmreg|mask|z,ymmreg*,ymmrm256,imm8 [rvmi:fvm: evex.nds.256.66.0f3a.w1 70 /r ib] AVX512VBMI2,AVX512VL,FUTURE +VPSHLDW zmmreg|mask|z,zmmreg*,zmmrm512,imm8 [rvmi:fvm: evex.nds.512.66.0f3a.w1 70 /r ib] AVX512VBMI2,FUTURE +VPSHLDD xmmreg|mask|z,xmmreg*,xmmrm128|b32,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w0 71 /r ib] AVX512VBMI2,AVX512VL,FUTURE +VPSHLDD ymmreg|mask|z,ymmreg*,ymmrm256|b32,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w0 71 /r ib] AVX512VBMI2,AVX512VL,FUTURE +VPSHLDD zmmreg|mask|z,zmmreg*,zmmrm512|b32,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w0 71 /r ib] AVX512VBMI2,FUTURE +VPSHLDQ xmmreg|mask|z,xmmreg*,xmmrm128|b64,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w1 71 /r ib] AVX512VBMI2,AVX512VL,FUTURE +VPSHLDQ ymmreg|mask|z,ymmreg*,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w1 71 /r ib] AVX512VBMI2,AVX512VL,FUTURE +VPSHLDQ zmmreg|mask|z,zmmreg*,zmmrm512|b64,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w1 71 /r ib] AVX512VBMI2,FUTURE +VPSHLDVW xmmreg|mask|z,xmmreg*,xmmrm128 [rvmi:fvm: evex.dds.128.66.0f38.w1 70 /r] AVX512VBMI2,AVX512VL,FUTURE +VPSHLDVW ymmreg|mask|z,ymmreg*,ymmrm256 [rvmi:fvm: evex.dds.256.66.0f38.w1 70 /r] AVX512VBMI2,AVX512VL,FUTURE +VPSHLDVW zmmreg|mask|z,zmmreg*,zmmrm512 [rvmi:fvm: evex.dds.512.66.0f38.w1 70 /r] AVX512VBMI2,FUTURE +VPSHLDVD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvmi:fv: evex.dds.128.66.0f38.w0 71 /r] AVX512VBMI2,AVX512VL,FUTURE +VPSHLDVD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvmi:fv: evex.dds.256.66.0f38.w0 71 /r] AVX512VBMI2,AVX512VL,FUTURE +VPSHLDVD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvmi:fv: evex.dds.512.66.0f38.w0 71 /r] AVX512VBMI2,FUTURE +VPSHLDVQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvmi:fv: evex.dds.128.66.0f38.w1 71 /r] AVX512VBMI2,AVX512VL,FUTURE +VPSHLDVQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvmi:fv: evex.dds.256.66.0f38.w1 71 /r] AVX512VBMI2,AVX512VL,FUTURE +VPSHLDVQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvmi:fv: evex.dds.512.66.0f38.w1 71 /r] AVX512VBMI2,FUTURE +VPSHRDW xmmreg|mask|z,xmmreg*,xmmrm128,imm8 [rvmi:fvm: evex.nds.128.66.0f3a.w1 72 /r ib] AVX512VBMI2,AVX512VL,FUTURE +VPSHRDW ymmreg|mask|z,ymmreg*,ymmrm256,imm8 [rvmi:fvm: evex.nds.256.66.0f3a.w1 72 /r ib] AVX512VBMI2,AVX512VL,FUTURE +VPSHRDW zmmreg|mask|z,zmmreg*,zmmrm512,imm8 [rvmi:fvm: evex.nds.512.66.0f3a.w1 72 /r ib] AVX512VBMI2,FUTURE +VPSHRDD xmmreg|mask|z,xmmreg*,xmmrm128|b32,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w0 73 /r ib] AVX512VBMI2,AVX512VL,FUTURE +VPSHRDD ymmreg|mask|z,ymmreg*,ymmrm256|b32,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w0 73 /r ib] AVX512VBMI2,AVX512VL,FUTURE +VPSHRDD zmmreg|mask|z,zmmreg*,zmmrm512|b32,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w0 73 /r ib] AVX512VBMI2,FUTURE +VPSHRDQ xmmreg|mask|z,xmmreg*,xmmrm128|b64,imm8 [rvmi:fv: evex.nds.128.66.0f3a.w1 73 /r ib] AVX512VBMI2,AVX512VL,FUTURE +VPSHRDQ ymmreg|mask|z,ymmreg*,ymmrm256|b64,imm8 [rvmi:fv: evex.nds.256.66.0f3a.w1 73 /r ib] AVX512VBMI2,AVX512VL,FUTURE +VPSHRDQ zmmreg|mask|z,zmmreg*,zmmrm512|b64,imm8 [rvmi:fv: evex.nds.512.66.0f3a.w1 73 /r ib] AVX512VBMI2,FUTURE +VPSHRDVW xmmreg|mask|z,xmmreg*,xmmrm128 [rvmi:fvm: evex.dds.128.66.0f38.w1 72 /r] AVX512VBMI2,AVX512VL,FUTURE +VPSHRDVW ymmreg|mask|z,ymmreg*,ymmrm256 [rvmi:fvm: evex.dds.256.66.0f38.w1 72 /r] AVX512VBMI2,AVX512VL,FUTURE +VPSHRDVW zmmreg|mask|z,zmmreg*,zmmrm512 [rvmi:fvm: evex.dds.512.66.0f38.w1 72 /r] AVX512VBMI2,FUTURE +VPSHRDVD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvmi:fv: evex.dds.128.66.0f38.w0 73 /r] AVX512VBMI2,AVX512VL,FUTURE +VPSHRDVD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvmi:fv: evex.dds.256.66.0f38.w0 73 /r] AVX512VBMI2,AVX512VL,FUTURE +VPSHRDVD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvmi:fv: evex.dds.512.66.0f38.w0 73 /r] AVX512VBMI2,FUTURE +VPSHRDVQ xmmreg|mask|z,xmmreg*,xmmrm128|b64 [rvmi:fv: evex.dds.128.66.0f38.w1 73 /r] AVX512VBMI2,AVX512VL,FUTURE +VPSHRDVQ ymmreg|mask|z,ymmreg*,ymmrm256|b64 [rvmi:fv: evex.dds.256.66.0f38.w1 73 /r] AVX512VBMI2,AVX512VL,FUTURE +VPSHRDVQ zmmreg|mask|z,zmmreg*,zmmrm512|b64 [rvmi:fv: evex.dds.512.66.0f38.w1 73 /r] AVX512VBMI2,FUTURE + +;# AVX512 VNNI +VPDPBUSD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.dds.128.66.0f38.w0 50 /r] AVX512VNNI,AVX512VL,FUTURE +VPDPBUSD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.dds.256.66.0f38.w0 50 /r] AVX512VNNI,AVX512VL,FUTURE +VPDPBUSD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.dds.512.66.0f38.w0 50 /r] AVX512VNNI,FUTURE +VPDPBUSDS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.dds.128.66.0f38.w0 51 /r] AVX512VNNI,AVX512VL,FUTURE +VPDPBUSDS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.dds.256.66.0f38.w0 51 /r] AVX512VNNI,AVX512VL,FUTURE +VPDPBUSDS zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.dds.512.66.0f38.w0 51 /r] AVX512VNNI,FUTURE +VPDPWSSD xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.dds.128.66.0f38.w0 52 /r] AVX512VNNI,AVX512VL,FUTURE +VPDPWSSD ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.dds.256.66.0f38.w0 52 /r] AVX512VNNI,AVX512VL,FUTURE +VPDPWSSD zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.dds.512.66.0f38.w0 52 /r] AVX512VNNI,FUTURE +VPDPWSSDS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.dds.128.66.0f38.w0 53 /r] AVX512VNNI,AVX512VL,FUTURE +VPDPWSSDS ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.dds.256.66.0f38.w0 53 /r] AVX512VNNI,AVX512VL,FUTURE +VPDPWSSDS zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.dds.512.66.0f38.w0 53 /r] AVX512VNNI,FUTURE + +;# AVX512 Bit Algorithms +VPOPCNTB xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.66.0f38.w0 54 /r] AVX512BITALG,AVX512VL,FUTURE +VPOPCNTB ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.66.0f38.w0 54 /r] AVX512BITALG,AVX512VL,FUTURE +VPOPCNTB zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.66.0f38.w0 54 /r] AVX512BITALG,FUTURE +VPOPCNTW xmmreg|mask|z,xmmrm128 [rm:fvm: evex.128.66.0f38.w1 54 /r] AVX512BITALG,AVX512VL,FUTURE +VPOPCNTW ymmreg|mask|z,ymmrm256 [rm:fvm: evex.256.66.0f38.w1 54 /r] AVX512BITALG,AVX512VL,FUTURE +VPOPCNTW zmmreg|mask|z,zmmrm512 [rm:fvm: evex.512.66.0f38.w1 54 /r] AVX512BITALG,FUTURE +VPOPCNTD xmmreg|mask|z,xmmrm128 [rm:fv: evex.128.66.0f38.w0 55 /r] AVX512VPOPCNTDQ,AVX512VL,FUTURE +VPOPCNTD ymmreg|mask|z,ymmrm256 [rm:fv: evex.256.66.0f38.w0 55 /r] AVX512VPOPCNTDQ,AVX512VL,FUTURE +VPOPCNTD zmmreg|mask|z,zmmrm512 [rm:fv: evex.512.66.0f38.w0 55 /r] AVX512VPOPCNTDQ,FUTURE +VPOPCNTQ xmmreg|mask|z,xmmrm128 [rm:fv: evex.128.66.0f38.w1 55 /r] AVX512VPOPCNTDQ,AVX512VL,FUTURE +VPOPCNTQ ymmreg|mask|z,ymmrm256 [rm:fv: evex.256.66.0f38.w1 55 /r] AVX512VPOPCNTDQ,AVX512VL,FUTURE +VPOPCNTQ zmmreg|mask|z,zmmrm512 [rm:fv: evex.512.66.0f38.w1 55 /r] AVX512VPOPCNTDQ,FUTURE +VPSHUFBITQMB kreg|mask,xmmreg,xmmrm128 [rvm:fvm: evex.nds.128.66.0f38.w0 8f /r] AVX512BITALG,AVX512VL,FUTURE +VPSHUFBITQMB kreg|mask,ymmreg,ymmrm256 [rvm:fvm: evex.nds.256.66.0f38.w0 8f /r] AVX512BITALG,AVX512VL,FUTURE +VPSHUFBITQMB kreg|mask,zmmreg,zmmrm512 [rvm:fvm: evex.nds.512.66.0f38.w0 8f /r] AVX512BITALG,FUTURE + +;# AVX512 4-iteration Multiply-Add +V4FMADDPS zmmreg|mask|z,zmmreg|rs4,mem [rvm:m128:evex.dds.512.f2.0f38.w0 9a /r] AVX5124FMAPS,FUTURE,SO +V4FNMADDPS zmmreg|mask|z,zmmreg|rs4,mem [rvm:m128:evex.dds.512.f2.0f38.w0 aa /r] AVX5124FMAPS,FUTURE,SO +V4FMADDSS zmmreg|mask|z,zmmreg|rs4,mem [rvm:m128:evex.dds.lig.f2.0f38.w0 9b /r] AVX5124FMAPS,FUTURE,SO +V4FNMADDSS zmmreg|mask|z,zmmreg|rs4,mem [rvm:m128:evex.dds.lig.f2.0f38.w0 ab /r] AVX5124FMAPS,FUTURE,SO + +;# AVX512 4-iteration Dot Product +V4DPWSSDS zmmreg|mask|z,zmmreg|rs4,mem [rvm:m128:evex.dds.512.f2.0f38.w0 53 /r] AVX5124VNNIW,FUTURE,SO +V4DPWSSD zmmreg|mask|z,zmmreg|rs4,mem [rvm:m128:evex.dds.512.f2.0f38.w0 52 /r] AVX5124VNNIW,FUTURE,SO + +;# Intel Software Guard Extensions (SGX) +ENCLS void [ np 0f 01 cf] SGX,FUTURE +ENCLU void [ np 0f 01 d7] SGX,FUTURE +ENCLV void [ np 0f 01 c0] SGX,FUTURE + +;# Intel Control-Flow Enforcement Technology (CET) +CLRSSBSY mem64 [m: f3 0f ae /6] CET,FUTURE +ENDBR32 void [ f3 0f 1e fb] CET,FUTURE +ENDBR64 void [ f3 0f 1e fa] CET,FUTURE +INCSSPD reg32 [m: o32 f3 0f ae /5] CET,FUTURE +INCSSPQ reg64 [m: o64 f3 0f ae /5] CET,FUTURE,LONG +RDSSPD reg32 [m: o32 f3 0f 1e /1] CET,FUTURE +RDSSPQ reg64 [m: o64 f3 0f 1e /1] CET,FUTURE,LONG +RSTORSSP mem64 [m: f3 0f 01 /5] CET,FUTURE +SAVEPREVSSP void [ f3 0f 01 ea] CET,FUTURE +SETSSBSY void [ f3 0f 01 e8] CET,FUTURE +WRUSSD mem32,reg32 [mr: o32 66 0f 38 f5 /r] CET,FUTURE +WRUSSQ mem64,reg64 [mr: o64 66 0f 38 f5 /r] CET,FUTURE,LONG +WRSSD mem32,reg32 [mr: o32 0f 38 f6 /r] CET,FUTURE +WRSSQ mem64,reg64 [mr: o64 0f 38 f6 /r] CET,FUTURE,LONG + +;# Instructions from ISE doc 319433-040, June 2020 +ENQCMD reg16,mem512 [rm: a16 f2 0f 38 f8 /r] ENQCMD,FUTURE,SZ,NOLONG +ENQCMD reg32,mem512 [rm: a16 f2 0f 38 f8 /r] ENQCMD,FUTURE,SZ,NOLONG,ND +ENQCMD reg32,mem512 [rm: a32 f2 0f 38 f8 /r] ENQCMD,FUTURE,SZ +ENQCMD reg64,mem512 [rm: a64 f2 0f 38 f8 /r] ENQCMD,FUTURE,SZ,LONG +ENQCMDS reg16,mem512 [rm: a16 f3 0f 38 f8 /r] ENQCMD,FUTURE,SZ,NOLONG,PRIV +ENQCMDS reg32,mem512 [rm: a16 f3 0f 38 f8 /r] ENQCMD,FUTURE,SZ,NOLONG,PRIV,ND +ENQCMDS reg32,mem512 [rm: a32 f3 0f 38 f8 /r] ENQCMD,FUTURE,SZ,PRIV +ENQCMDS reg64,mem512 [rm: a64 f3 0f 38 f8 /r] ENQCMD,FUTURE,SZ,PRIV,LONG +PCONFIG void [ np 0f 01 c5] PCONFIG,FUTURE,PRIV +SERIALIZE void [ np 0f 01 e8] SERIALIZE,FUTURE +WBNOINVD void [ f3 0f 09] WBNOINVD,FUTURE,PRIV +XRESLDTRK void [ f2 0f 01 e9] TSXLDTRK,FUTURE +XSUSLDTRK void [ f2 0f 01 e8] TSXLDTRK,FUTURE + +;# AVX512 Bfloat16 instructions +VCVTNE2PS2BF16 xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.128.f2.0f38.w0 72 /r] AVX512BF16,FUTURE +VCVTNE2PS2BF16 ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.256.f2.0f38.w0 72 /r] AVX512BF16,FUTURE +VCVTNE2PS2BF16 zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.512.f2.0f38.w0 72 /r] AVX512BF16,FUTURE +VCVTNEPS2BF16 xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.128.f3.0f38.w0 72 /r] AVX512BF16,FUTURE +VCVTNEPS2BF16 ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.256.f3.0f38.w0 72 /r] AVX512BF16,FUTURE +VCVTNEPS2BF16 zmmreg|mask|z,zmmreg*,zmmrm512|b32 [rvm:fv: evex.512.f3.0f38.w0 72 /r] AVX512BF16,FUTURE +VDPBF16PS xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.128.f3.0f38.w0 52 /r] AVX512BF16,FUTURE +VDPBF16PS ymmreg|mask|z,ymmreg*,ymmrm128|b32 [rvm:fv: evex.256.f3.0f38.w0 52 /r] AVX512BF16,FUTURE +VDPBF16PS zmmreg|mask|z,zmmreg*,zmmrm128|b32 [rvm:fv: evex.512.f3.0f38.w0 52 /r] AVX512BF16,FUTURE + +;# AVX512 mask intersect instructions +VP2INTERSECTD kreg|rs2,xmmreg,xmmrm128|b32 [rvm:fv: evex.nds.128.f2.0f38.w0 68 /r] AVX512BF16,FUTURE +VP2INTERSECTD kreg|rs2,ymmreg,ymmrm128|b32 [rvm:fv: evex.nds.256.f2.0f38.w0 68 /r] AVX512BF16,FUTURE +VP2INTERSECTD kreg|rs2,zmmreg,zmmrm128|b32 [rvm:fv: evex.nds.512.f2.0f38.w0 68 /r] AVX512BF16,FUTURE + +;# Intel Advanced Matrix Extensions (AMX) +LDTILECFG mem512 [m: vex.128.np.0f38.w0 49 /0] AMXTILE,FUTURE,SZ,LONG +STTILECFG mem512 [m: vex.128.66.0f38.w0 49 /0] AMXTILE,FUTURE,SZ,LONG +TDPBF16PS tmmreg,tmmreg,tmmreg [rmv: vex.128.f3.0f38.w0 5c /r] AMXBF16,FUTURE,LONG +TDPBSSD tmmreg,tmmreg,tmmreg [rmv: vex.128.f2.0f38.w0 5e /r] AMXINT8,FUTURE,LONG +TDPBSUD tmmreg,tmmreg,tmmreg [rmv: vex.128.f3.0f38.w0 5e /r] AMXINT8,FUTURE,LONG +TDPBUSD tmmreg,tmmreg,tmmreg [rmv: vex.128.66.0f38.w0 5e /r] AMXINT8,FUTURE,LONG +TDPBUUD tmmreg,tmmreg,tmmreg [rmv: vex.128.np.0f38.w0 5e /r] AMXINT8,FUTURE,LONG +TILELOADD tmmreg,mem [rm: vex.128.f2.0f38.w0 4b /r] AMXTILE,MIB,SIB,FUTURE,SX,LONG +TILELOADDT1 tmmreg,mem [rm: vex.128.66.0f38.w0 4b /r] AMXTILE,MIB,SIB,FUTURE,SX,LONG +TILERELEASE void [ vex.128.np.0f38.w0 49 c0] AMXTILE,FUTURE,LONG +TILESTORED mem,tmmreg [mr: vex.128.f3.0f38.w0 4b /r] AMXTILE,MIB,SIB,FUTURE,SX,LONG +TILEZERO tmmreg [r: vex.128.f2.0f38.w0 49 /3r0] AMXTILE,FUTURE,LONG + +;# Intel AVX512-FP16 instructions +VADDPH xmmreg|mask|z,xmmreg*,xmmrm16|b16 [rvm:fv: evex.nds.128.np.map5.w0 58 /r] AVX512FP16,AVX512VL,FUTURE +VADDPH ymmreg|mask|z,ymmreg*,ymmrm16|b16 [rvm:fv: evex.nds.256.np.map5.w0 58 /r] AVX512FP16,AVX512VL,FUTURE +VADDPH zmmreg|mask|z,zmmreg*,zmmrm16|b16|er [rvm:fv: evex.nds.512.np.map5.w0 58 /r] AVX512FP16,FUTURE +VADDSH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.f3.map5.w0 58 /r] AVX512FP16,FUTURE +VCMPPH kreg|mask,xmmreg*,xmmrm16|b16,imm8 [rvmi:fv: evex.nds.128.np.0f3a.w0 C2 /r ib] AVX512FP16,AVX512VL,FUTURE +VCMPPH kreg|mask,ymmreg*,ymmrm16|b16,imm8 [rvmi:fv: evex.nds.256.np.0f3a.w0 C2 /r ib] AVX512FP16,AVX512VL,FUTURE +VCMPPH kreg|mask,zmmreg*,zmmrm16|b16|sae,imm8 [rvmi:fv: evex.nds.512.np.0f3a.w0 C2 /r ib] AVX512FP16,FUTURE +VCMPSH kreg|mask,xmmreg*,xmmrm16|sae,imm8 [rvmi:t1s: evex.nds.lig.f3.0f3a.w0 C2 /r ib] AVX512FP16,FUTURE +VCOMISH xmmreg,xmmrm16|sae [rm:fv: evex.lig.np.map5.w0 2F /r] AVX512FP16,FUTURE +VCVTDQ2PH xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.np.map5.w0 5B /r] AVX512FP16,AVX512VL,FUTURE +VCVTDQ2PH ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.np.map5.w0 5B /r] AVX512FP16,AVX512VL,FUTURE +VCVTDQ2PH zmmreg|mask|z,zmmrm512|b32|er [rm:fv: evex.512.np.map5.w0 5B /r] AVX512FP16,FUTURE +VCVTPD2PH xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.66.map5.w1 5A /r] AVX512FP16,AVX512VL,FUTURE +VCVTPD2PH ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.66.map5.w1 5A /r] AVX512FP16,AVX512VL,FUTURE +VCVTPD2PH zmmreg|mask|z,zmmrm512|b64|er [rm:fv: evex.512.66.map5.w1 5A /r] AVX512FP16,FUTURE +VCVTPH2DQ xmmreg|mask|z,xmmrm64|b16 [rm:hv: evex.128.66.map5.w0 5B /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2DQ ymmreg|mask|z,xmmrm128|b16 [rm:hv: evex.256.66.map5.w0 5B /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2DQ zmmreg|mask|z,ymmrm256|b16|er [rm:hv: evex.512.66.map5.w0 5B /r] AVX512FP16,FUTURE +VCVTPH2PD xmmreg|mask|z,xmmrm32|b16 [rm:qvm: evex.128.np.map5.w0 5A /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2PD ymmreg|mask|z,xmmrm64|b16 [rm:qvm: evex.256.np.map5.w0 5A /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2PD zmmreg|mask|z,xmmrm128|b16|sae [rm:qvm: evex.512.np.map5.w0 5A /r] AVX512FP16,FUTURE +VCVTPH2PS xmmreg,xmmrm64 [rm: vex.128.66.0f38.w0 13 /r] AVX512FC16,FUTURE +VCVTPH2PS ymmreg,xmmrm128 [rm: vex.256.66.0f38.w0 13 /r] AVX512FC16,FUTURE +VCVTPH2PS xmmreg|mask|z,xmmrm64 [rm:hvm:evex.128.66.0f38.w0 13 /r] AVX512,AVX512VL,FUTURE +VCVTPH2PS ymmreg|mask|z,xmmrm128 [rm:hvm:evex.256.66.0f38.w0 13 /r] AVX512,AVX512VL,FUTURE +VCVTPH2PS zmmreg|mask|z,ymmrm256|sae [rm:hvm:evex.512.66.0f38.w0 13 /r] AVX512,FUTURE +VCVTPH2PSX xmmreg|mask|z,xmmrm64|b16 [rm:hv: evex.128.66.map6.w0 13 /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2PSX ymmreg|mask|z,xmmrm128|b16 [rm:hv: evex.256.66.map6.w0 13 /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2PSX zmmreg|mask|z,ymmrm256|b16|sae [rm:hv: evex.512.66.map6.w0 13 /r] AVX512FP16,FUTURE +VCVTPH2QQ xmmreg|mask|z,xmmrm32|b16 [rm:qvm:evex.128.66.map5.w0 7b /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2QQ ymmreg|mask|z,xmmrm64|b16 [rm:qvm:evex.256.66.map5.w0 7b /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2QQ zmmreg|mask|z,xmmrm128|b16|er [rm:qvm:evex.512.66.map5.w0 7b /r] AVX512FP16,FUTURE +VCVTPH2UDQ xmmreg|mask|z,xmmrm32|b16 [rm:hv: evex.128.map5.w0 79 /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2UDQ ymmreg|mask|z,xmmrm64|b16 [rm:hv: evex.256.map5.w0 79 /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2UDQ zmmreg|mask|z,xmmrm128|b16|er [rm:hv: evex.512.map5.w0 79 /r] AVX512FP16,FUTURE +VCVTPH2UQQ xmmreg|mask|z,xmmrm32|b16 [rm:qvm:evex.128.66.map5.w0 79 /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2UQQ ymmreg|mask|z,xmmrm64|b16 [rm:qvm:evex.256.66.map5.w0 79 /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2UQQ zmmreg|mask|z,xmmrm128|b16|er [rm:qvm:evex.512.66.map5.w0 79 /r] AVX512FP16,FUTURE +VCVTPH2UW xmmreg|mask|z,xmmrm128|b16 [rm:fv: evex.128.np.map5.w0 7d /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2UW ymmreg|mask|z,ymmrm256|b16 [rm:fv: evex.256.np.map5.w0 7d /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2UW zmmreg|mask|z,zmmrm512|b16|er [rm:fv: evex.512.np.map5.w0 7d /r] AVX512FP16,FUTURE +VCVTPH2W xmmreg|mask|z,xmmrm128|b16 [rm:fv: evex.128.66.map5.w0 7d /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2W ymmreg|mask|z,ymmrm256|b16 [rm:fv: evex.256.66.map5.w0 7d /r] AVX512FP16,AVX512VL,FUTURE +VCVTPH2W zmmreg|mask|z,zmmrm512|b16|er [rm:fv: evex.512.66.map5.w0 7d /r] AVX512FP16,FUTURE +VCVTPS2PH xmmrm64,xmmreg,imm8 [mri: vex.128.66.0f3a.w0 1d /r ib] AVX512FC16,AVX512VL,FUTURE +VCVTPS2PH xmmrm128,ymmreg,imm8 [mri: vex.256.66.0f3a.w0 1d /r ib] AVX512FC16,AVX512VL,FUTURE +VCVTPS2PH xmmreg|mask|z,xmmreg,imm8 [mri:hvm: evex.128.66.0f3a.w0 1d /r ib] AVX512,AVX512VL,FUTURE +VCVTPS2PH mem64|mask,xmmreg,imm8 [mri:hvm: evex.128.66.0f3a.w0 1d /r ib] AVX512,AVX512VL,FUTURE +VCVTPS2PH xmmreg|mask|z,ymmreg,imm8 [mri:hvm: evex.256.66.0f3a.w0 1d /r ib] AVX512,AVX512VL,FUTURE +VCVTPS2PH mem128|mask,ymmreg,imm8 [mri:hvm: evex.256.66.0f3a.w0 1d /r ib] AVX512,AVX512VL,FUTURE +VCVTPS2PH ymmreg|mask|z,zmmreg|sae,imm8 [mri:hvm: evex.512.66.0f3a.w0 1d /r ib] AVX512,FUTURE +VCVTPS2PH mem256|mask,zmmreg|sae,imm8 [mri:hvm: evex.512.66.0f3a.w0 1d /r ib] AVX512,FUTURE +VCVTPS2PH xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.66.map5.w0 1d /r] AVX512FP16,AVX512VL,FUTURE +VCVTPS2PH ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.66.map5.w0 1d /r] AVX512FP16,AVX512VL,FUTURE +VCVTPS2PH zmmreg|mask|z,zmmrm512|b32|er [rm:fv: evex.512.66.map5.w0 1d /r] AVX512FP16,FUTURE +VCVTQQ2PH xmmreg|mask|z,xmmrm128|b64 [rm:fv: evex.128.np.map5.w1 5b /r] AVX512FP16,AVX512VL,FUTURE +VCVTQQ2PH ymmreg|mask|z,ymmrm256|b64 [rm:fv: evex.256.np.map5.w1 5b /r] AVX512FP16,AVX512VL,FUTURE +VCVTQQ2PH zmmreg|mask|z,zmmrm512|b64|er [rm:fv: evex.512.np.map5.w1 5b /r] AVX512FP16,AVX512VL,FUTURE +VCVTSD2SH xmmreg|mask|z,xmmreg*,xmmrm64|er [rvm:t1s: evex.nds.lig.f2.map5.w1 5a /r] AVX512FP16,FUTURE +VCVTSH2SD xmmreg,xmmreg*,xmmrm16|sae [rvm:t1s: evex.nds.lig.f3.map5.w0 5a /r] AVX512FP16,FUTURE +VCVTSH2SI reg32,xmmrm16|er [rm:t1s:evex.lig.f3.map5.w0 2d /r] AVX512FP16,FUTURE +VCVTSH2SI reg64,xmmrm16|er [rm:t1s:evex.lig.f3.map5.w1 2d /r] AVX512FP16,FUTURE +VCVTSH2SS xmmreg|mask|z,xmmreg*,xmmrm16|sae [rvm:t1s: evex.nds.lig.map6.w0 13 /r] AVX512FP16,FUTURE +VCVTSH2USI reg32,xmmrm16|er [rm:t1s:evex.lig.f3.map5.w0 79 /r] AVX512FP16,FUTURE +VCVTSH2USI reg64,xmmrm16|er [rm:t1s:evex.lig.f3.map5.w1 79 /r] AVX512FP16,FUTURE +VCVTSI2SH xmmreg,xmmreg*,rm32|er [rvm:t1s: evex.nds.lig.f3.map5.w0 2a /r] AVX512FP16,FUTURE +VCVTSI2SH xmmreg,xmmreg*,rm64|er [rvm:t1s: evex.nds.lig.f3.map5.w1 2a /r] AVX512FP16,FUTURE +VCVTSS2SH xmmreg,xmmreg*,xmmrm32|er [rvm:t1s: evex.nds.lig.np.map5 1d /r] AVX512FP16,FUTURE +VCVTTPH2DQ xmmreg|mask|z,xmmrm64|b16 [rm:hv: evex.128.f3.map5.w0 5b /r] AVX512FP16,AVX512VL,FUTURE +VCVTTPH2DQ ymmreg|mask|z,xmmrm128|b16 [rm:hv: evex.256.f3.map5.w0 5b /r] AVX512FP16,AVX512VL,FUTURE +VCVTTPH2DQ zmmreg|mask|z,ymmrm256|b16|sae [rm:hv: evex.512.f3.map5.w0 5b /r] AVX512FP16,FUTURE +VCVTTPH2QQ xmmreg|mask|z,xmmrm32|b16 [rm:t1s:evex.128.66.map5.w0 7a /r] AVX512FP16,AVX512VL,FUTURE +VCVTTPH2QQ ymmreg|mask|z,xmmrm64|b16 [rm:t1s:evex.256.66.map5.w0 7a /r] AVX512FP16,AVX512VL,FUTURE +VCVTTPH2QQ zmmreg|mask|z,xmmrm128|b16|sae [rm:t1s:evex.512.66.map5.w0 7a /r] AVX512FP16,FUTURE +VCVTTPH2UDQ xmmreg|mask|z,xmmrm64|b16 [rm:hv: evex.128.np.map5.w0 78 /r] AVX512FP16,AVX512VL,FUTURE +VCVTTPH2UDQ ymmreg|mask|z,xmmrm128|b16 [rm:hv: evex.256.np.map5.w0 78 /r] AVX512FP16,AVX512VL,FUTURE +VCVTTPH2UDQ zmmreg|mask|z,ymmrm256|b16|sae [rm:hv: evex.512.np.map5.w0 78 /r] AVX512FP16,FUTURE +VCVTTPH2UQQ xmmreg|mask|z,xmmrm32|b16 [rm:t1s: evex.128.66.map5.w0 78 /r] AVX512FP16,AVX512VL,FUTURE +VCVTTPH2UQQ ymmreg|mask|z,xmmrm64|b16 [rm:t1s: evex.256.66.map5.w0 78 /r] AVX512FP16,AVX512VL,FUTURE +VCVTTPH2UQQ zmmreg|mask|z,xmmrm128|b16|sae [rm:t1s: evex.512.66.map5.w0 78 /r] AVX512FP16,FUTURE +VCVTTPH2UW xmmreg|mask|z,xmmrm128|b16 [rm:fv: evex.128.np.map5.w0 7c /r] AVX512FP16,AVX512VL,FUTURE +VCVTTPH2UW ymmreg|mask|z,ymmrm256|b16 [rm:fv: evex.256.np.map5.w0 7c /r] AVX512FP16,AVX512VL,FUTURE +VCVTTPH2UW zmmreg|mask|z,zmmrm512|b16|sae [rm:fv: evex.512.np.map5.w0 7c /r] AVX512FP16,FUTURE +VCVTTPH2W xmmreg|mask|z,xmmrm128|b16 [rm:fv: evex.128.66.map5.w0 7c /r] AVX512FP16,AVX512VL,FUTURE +VCVTTPH2W ymmreg|mask|z,ymmrm256|b16 [rm:fv: evex.256.66.map5.w0 7c /r] AVX512FP16,AVX512VL,FUTURE +VCVTTPH2W zmmreg|mask|z,zmmrm512|b16|sae [rm:fv: evex.512.66.map5.w0 7c /r] AVX512FP16,FUTURE +VCVTTSH2SI reg32,xmmrm16|sae [rm:t1s:evex.lig.f3.map5.w0 2c /r] AVX512FP16,FUTURE +VCVTTSH2SI reg64,xmmrm16|sae [rm:t1s:evex.lig.f3.map5.w1 2c /r] AVX512FP16,FUTURE +VCVTTSH2USI reg32,xmmrm16|sae [rm:t1s:evex.lig.f3.map5.w0 78 /r] AVX512FP16,FUTURE +VCVTTSH2USI reg64,xmmrm16|sae [rm:t1s:evex.lig.f3.map5.w1 78 /r] AVX512FP16,FUTURE +VCVTUDQ2PH xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.f2.map5.w0 7a /r] AVX512FP16,AVX512VL,FUTURE +VCVTUDQ2PH ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.f2.map5.w0 7a /r] AVX512FP16,AVX512VL,FUTURE +VCVTUDQ2PH zmmreg|mask|z,zmmrm512|b32 [rm:fv: evex.512.f2.map5.w0 7a /r] AVX512FP16,FUTURE +VCVTUQQ2PH xmmreg|mask|z,xmmrm128|b32 [rm:fv: evex.128.f2.map5.w1 7a /r] AVX512FP16,AVX512VL,FUTURE +VCVTUQQ2PH ymmreg|mask|z,ymmrm256|b32 [rm:fv: evex.256.f2.map5.w1 7a /r] AVX512FP16,AVX512VL,FUTURE +VCVTUQQ2PH zmmreg|mask|z,zmmrm512|b32 [rm:fv: evex.512.f2.map5.w1 7a /r] AVX512FP16,FUTURE +VCVTUSI2SH xmmreg,xmmreg|er,rm32|er [rvm:t1s: evex.nds.lig.f3.map5.w0 7b /r] AVX512FP16,FUTURE +VCVTUSI2SS xmmreg,xmmreg|er,rm64|er [rvm:t1s: evex.nds.lig.f3.map5.w1 7b /r] AVX512FP16,FUTURE +VCVTUW2PH xmmreg|mask|z,xmmrm128|b16 [rm:fv: evex.128.f2.map5.w0 7d /r] AVX512FP16,AVX512VL,FUTURE +VCVTUW2PH ymmreg|mask|z,ymmrm256|b16 [rm:fv: evex.256.f2.map5.w0 7d /r] AVX512FP16,AVX512VL,FUTURE +VCVTUW2PH zmmreg|mask|z,zmmrm512|b16|er [rm:fv: evex.512.f2.map5.w0 7d /r] AVX512FP16,FUTURE +VCVTW2PH xmmreg|mask|z,xmmrm128|b16 [rm:fv: evex.128.f3.map5.w0 7d /r] AVX512FP16,AVX512VL,FUTURE +VCVTW2PH ymmreg|mask|z,ymmrm256|b16 [rm:fv: evex.256.f3.map5.w0 7d /r] AVX512FP16,AVX512VL,FUTURE +VCVTW2PH zmmreg|mask|z,zmmrm512|b16|er [rm:fv: evex.512.f3.map5.w0 7d /r] AVX512FP16,FUTURE +VDIVPH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.np.map5 5e /r] AVX512FP16,AVX512VL,FUTURE +VDIVPH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.np.map5 5e /r] AVX512FP16,AVX512VL,FUTURE +VDIVPH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.np.map5 5e /r] AVX512FP16,FUTURE +VDIVSH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.f3.map5 5e /r] AVX512FP16,FUTURE +VFCMADDCPH xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.f2.map6.w0 56 /r] AVX512FP16,AVX512VL,FUTURE +VFCMADDCPH ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.f2.map6.w0 56 /r] AVX512FP16,AVX512VL,FUTURE +VFCMADDCPH zmmreg|mask|z,zmmreg*,zmmrm512|b32|er [rvm:fv: evex.nds.512.f2.map6.w0 56 /r] AVX512FP16,AVX512VL,FUTURE +VFMADDCPH xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.f3.map6.w0 56 /r] AVX512FP16,AVX512VL,FUTURE +VFMADDCPH ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.f3.map6.w0 56 /r] AVX512FP16,AVX512VL,FUTURE +VFMADDCPH zmmreg|mask|z,zmmreg*,zmmrm512|b32|er [rvm:fv: evex.nds.512.f3.map6.w0 56 /r] AVX512FP16,AVX512VL,FUTURE +VFCMADDCSH xmmreg|mask|z,xmmreg*,xmmrm32|er [rvm:t1s: evex.nds.lig.f2.map6.w0 57 /r] AVX512FP16,FUTURE +VFMADDCSH xmmreg|mask|z,xmmreg*,xmmrm32|er [rvm:t1s: evex.nds.lig.f3.map6.w0 57 /r] AVX512FP16,FUTURE +VFCMULCPCH xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.f2.map6.w0 d6 /r] AVX512FP16,AVX512VL,FUTURE +VFCMULCPCH ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.f2.map6.w0 d6 /r] AVX512FP16,AVX512VL,FUTURE +VFCMULCPCH zmmreg|mask|z,zmmreg*,zmmrm512|b32|er [rvm:fv: evex.nds.512.f2.map6.w0 d6 /r] AVX512FP16,AVX512VL,FUTURE +VFMULCPCH xmmreg|mask|z,xmmreg*,xmmrm128|b32 [rvm:fv: evex.nds.128.f3.map6.w0 d6 /r] AVX512FP16,AVX512VL,FUTURE +VFMULCPCH ymmreg|mask|z,ymmreg*,ymmrm256|b32 [rvm:fv: evex.nds.256.f3.map6.w0 d6 /r] AVX512FP16,AVX512VL,FUTURE +VFMULCPCH zmmreg|mask|z,zmmreg*,zmmrm512|b32|er [rvm:fv: evex.nds.512.f3.map6.w0 d6 /r] AVX512FP16,AVX512VL,FUTURE +VFCMULCSH xmmreg|mask|z,xmmreg*,xmmrm32|er [rvm:t1s: evex.nds.lig.f2.map6.w0 d7 /r] AVX512FP16,FUTURE +VFMULCSH xmmreg|mask|z,xmmreg*,xmmrm32|er [rvm:t1s: evex.nds.lig.f3.map6.w0 d7 /r] AVX512FP16,FUTURE +VFMADDSUB132PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 96 /r] AVX512FP16,AVX512VL,FUTURE +VFMADDSUB132PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 96 /r] AVX512FP16,AVX512VL,FUTURE +VFMADDSUB132PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 96 /r] AVX512FP16,FUTURE +VFMADDSUB213PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 a6 /r] AVX512FP16,AVX512VL,FUTURE +VFMADDSUB213PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 a6 /r] AVX512FP16,AVX512VL,FUTURE +VFMADDSUB213PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 a6 /r] AVX512FP16,FUTURE +VFMADDSUB231PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 b6 /r] AVX512FP16,AVX512VL,FUTURE +VFMADDSUB231PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 b6 /r] AVX512FP16,AVX512VL,FUTURE +VFMADDSUB231PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 b6 /r] AVX512FP16,FUTURE +VFMSUBADD132PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 97 /r] AVX512FP16,AVX512VL,FUTURE +VFMSUBADD132PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 97 /r] AVX512FP16,AVX512VL,FUTURE +VFMSUBADD132PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 97 /r] AVX512FP16,FUTURE +VFMSUBADD213PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 a7 /r] AVX512FP16,AVX512VL,FUTURE +VFMSUBADD213PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 a7 /r] AVX512FP16,AVX512VL,FUTURE +VFMSUBADD213PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 a7 /r] AVX512FP16,FUTURE +VFMSUBADD231PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 b7 /r] AVX512FP16,AVX512VL,FUTURE +VFMSUBADD231PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 b7 /r] AVX512FP16,AVX512VL,FUTURE +VFMSUBADD231PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 b7 /r] AVX512FP16,FUTURE +VPMADD132PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 98 /r] AVX512FP16,AVX512VL,FUTURE +VPMADD132PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 98 /r] AVX512FP16,AVX512VL,FUTURE +VPMADD132PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 98 /r] AVX512FP16,FUTURE +VPMADD213PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 a8 /r] AVX512FP16,AVX512VL,FUTURE +VPMADD213PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 a8 /r] AVX512FP16,AVX512VL,FUTURE +VPMADD213PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 a8 /r] AVX512FP16,FUTURE +VPMADD231PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 b8 /r] AVX512FP16,AVX512VL,FUTURE +VPMADD231PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 b8 /r] AVX512FP16,AVX512VL,FUTURE +VPMADD231PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 b8 /r] AVX512FP16,FUTURE +VFMADD132PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 9c /r] AVX512FP16,AVX512VL,FUTURE +VFMADD132PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 9c /r] AVX512FP16,AVX512VL,FUTURE +VFMADD132PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 9c /r] AVX512FP16,FUTURE +VFMADD213PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 ac /r] AVX512FP16,AVX512VL,FUTURE +VFMADD213PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 ac /r] AVX512FP16,AVX512VL,FUTURE +VFMADD213PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 ac /r] AVX512FP16,FUTURE +VFMADD231PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 bc /r] AVX512FP16,AVX512VL,FUTURE +VFMADD231PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 bc /r] AVX512FP16,AVX512VL,FUTURE +VFMADD231PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 bc /r] AVX512FP16,FUTURE +VPMADD132SH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 99 /r] AVX512FP16,FUTURE +VPMADD213SH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 a9 /r] AVX512FP16,FUTURE +VPMADD231SH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 b9 /r] AVX512FP16,FUTURE +VPNMADD132SH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 9d /r] AVX512FP16,FUTURE +VPNMADD213SH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 ad /r] AVX512FP16,FUTURE +VPNMADD231SH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 bd /r] AVX512FP16,FUTURE +VPMSUB132PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 9a /r] AVX512FP16,AVX512VL,FUTURE +VPMSUB132PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 9a /r] AVX512FP16,AVX512VL,FUTURE +VPMSUB132PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 9a /r] AVX512FP16,FUTURE +VPMSUB213PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 aa /r] AVX512FP16,AVX512VL,FUTURE +VPMSUB213PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 aa /r] AVX512FP16,AVX512VL,FUTURE +VPMSUB213PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 aa /r] AVX512FP16,FUTURE +VPMSUB231PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 ba /r] AVX512FP16,AVX512VL,FUTURE +VPMSUB231PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 ba /r] AVX512FP16,AVX512VL,FUTURE +VPMSUB231PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 ba /r] AVX512FP16,FUTURE +VFMSUB132PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 9e /r] AVX512FP16,AVX512VL,FUTURE +VFMSUB132PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 9e /r] AVX512FP16,AVX512VL,FUTURE +VFMSUB132PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 9e /r] AVX512FP16,FUTURE +VFMSUB213PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 ae /r] AVX512FP16,AVX512VL,FUTURE +VFMSUB213PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 ae /r] AVX512FP16,AVX512VL,FUTURE +VFMSUB213PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 ae /r] AVX512FP16,FUTURE +VFMSUB231PH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 be /r] AVX512FP16,AVX512VL,FUTURE +VFMSUB231PH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 be /r] AVX512FP16,AVX512VL,FUTURE +VFMSUB231PH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 be /r] AVX512FP16,FUTURE +VPMSUB132SH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 9b /r] AVX512FP16,FUTURE +VPMSUB213SH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 ab /r] AVX512FP16,FUTURE +VPMSUB231SH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 bb /r] AVX512FP16,FUTURE +VPNMSUB132SH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 9f /r] AVX512FP16,FUTURE +VPNMSUB213SH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 af /r] AVX512FP16,FUTURE +VPNMSUB231SH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 bf /r] AVX512FP16,FUTURE +VFPCLASSPH kreg|mask,xmmrm128|b16,imm8 [rmi:fv: evex.128.np.0f3a.w0 66 /r ib] AVX512FP16,AVX512VL,FUTURE +VFPCLASSPH kreg|mask,ymmrm256|b16,imm8 [rmi:fv: evex.256.np.0f3a.w0 66 /r ib] AVX512FP16,AVX512VL,FUTURE +VFPCLASSPH kreg|mask,zmmrm512|b16,imm8 [rmi:fv: evex.512.np.0f3a.w0 66 /r ib] AVX512FP16,FUTURE +VFPCLASSSH kreg|mask,xmmrm16,imm8 [rmi:t1s: evex.lig.np.0f3a.w0 67 /r ib] AVX512FP16,FUTURE +VGETEXPPH xmmreg|mask|z,xmmrm128|b16 [rm:fv: evex.128.66.map6.w0 42 /r] AVX512FP16,AVX512VL,FUTURE +VGETEXPPH ymmreg|mask|z,ymmrm256|b16 [rm:fv: evex.256.66.map6.w0 42 /r] AVX512FP16,AVX512VL,FUTURE +VGETEXPPH zmmreg|mask|z,zmmrm512|b16|sae [rm:fv: evex.512.66.map6.w0 42 /r] AVX512FP16,FUTURE +VGETEXPSH xmmreg|mask|z,xmmrm16|sae [rm:t1s: evex.128.66.map6.w0 43 /r] AVX512FP16,FUTURE +VGETMANTPH xmmreg|mask|z,xmmrm128|b16,imm8 [rmi:fv: evex.128.np.0f3a.w0 25 /r ib] AVX512FP16,AVX512VL,FUTURE +VGETMANTPH ymmreg|mask|z,ymmrm256|b16,imm8 [rmi:fv: evex.256.np.0f3a.w0 25 /r ib] AVX512FP16,AVX512VL,FUTURE +VGETMANTPH zmmreg|mask|z,zmmrm512|b16|sae,imm8 [rmi:fv: evex.512.np.0f3a.w0 25 /r ib] AVX512FP16,FUTURE +VGETMANTSH xmmreg|mask|z,xmmrm16|sae,imm8 [rmi:t1s: evex.128.np.0f3a.w0 27 /r ib] AVX512FP16,FUTURE +VGETMAXPH xmmreg|mask|z,xmmrm128|b16 [rm:fv: evex.128.np.map5.w0 5f /r] AVX512FP16,AVX512VL,FUTURE +VGETMAXPH ymmreg|mask|z,ymmrm256|b16 [rm:fv: evex.256.np.map5.w0 5f /r] AVX512FP16,AVX512VL,FUTURE +VGETMAXPH zmmreg|mask|z,zmmrm512|b16|sae [rm:fv: evex.512.np.map5.w0 5f /r] AVX512FP16,FUTURE +VGETMAXSH xmmreg|mask|z,xmmrm16|sae [rm:t1s: evex.lig.f3.map5.w0 5f /r] AVX512FP16,FUTURE +VGETMINPH xmmreg|mask|z,xmmrm128|b16 [rm:fv: evex.128.np.map5.w0 5d /r] AVX512FP16,AVX512VL,FUTURE +VGETMINPH ymmreg|mask|z,xmmrm256|b16 [rm:fv: evex.256.np.map5.w0 5d /r] AVX512FP16,AVX512VL,FUTURE +VGETMINPH zmmreg|mask|z,zmmrm512|b16|sae [rm:fv: evex.512.np.map5.w0 5d /r] AVX512FP16,FUTURE +VGETMINSH xmmreg|mask|z,xmmrm16|sae [rm:t1s: evex.lig.f3.map5.w0 5d /r] AVX512FP16,FUTURE +VMOVSH xmmreg|mask|z,mem16 [rm:t1s: evex.lig.f3.map5.w0 10 /r] AVX512FP16,FUTURE +VMOVSH mem16|mask,xmmreg [mr:t1s: evex.lig.f3.map5.w0 11 /r] AVX512FP16,FUTURE +VMOVSH xmmreg|mask|z,xmmreg*,xmmreg [rvm: evex.nds.lig.f3.map5.w0 10 /r] AVX512FP16,FUTURE +VMOVSH xmmreg|mask|z,xmmreg*,xmmreg [rvm: evex.nds.lig.f3.map5.w0 11 /r] AVX512FP16,FUTURE +VMOVW xmmreg|mask|z,rm16 [rm:t1s: evex.128.66.map5.wig 6e /r] AVX512FP16,FUTURE +VMOVW rm16,xmmreg [mr:t1s: evex.128.66.map5.wig 7e /r] AVX512FP16,FUTURE +VMULPH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.np.map5.w0 59 /r] AVX512FP16,AVX512VL,FUTURE +VMULPH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.np.map5.w0 59 /r] AVX512FP16,AVX512VL,FUTURE +VMULPH zmmreg|mask|z,zmmreg*,zmmrm512|b16 [rvm:fv: evex.nds.512.np.map5.w0 59 /r] AVX512FP16,FUTURE +VMULSH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.f3.map5.w0 59 /r] AVX512FP16,FUTURE +VRCPPH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 4c /r] AVX512FP16,AVX512VL,FUTURE +VRCPPH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 4c /r] AVX512FP16,AVX512VL,FUTURE +VRCPPH zmmreg|mask|z,zmmreg*,zmmrm512|b16 [rvm:fv: evex.nds.512.66.map6.w0 4c /r] AVX512FP16,FUTURE +VRCPSH xmmreg|mask|z,xmmreg*,xmmrm16|sae [rvm:t1s: evex.nds.lig.66.map6.w0 4d /r] AVX512FP16,FUTURE +VREDUCEPH xmmreg|mask|z,xmmrm128|b16,imm8 [rmi:fv: evex.128.np.0f3a.w0 56 /r ib] AVX512FP16,AVX512VL,FUTURE +VREDUCEPH ymmreg|mask|z,ymmrm256|b16,imm8 [rmi:fv: evex.256.np.0f3a.w0 56 /r ib] AVX512FP16,AVX512VL,FUTURE +VREDUCEPH zmmreg|mask|z,zmmrm512|b16|sae,imm8 [rmi:fv: evex.512.np.0f3a.w0 56 /r ib] AVX512FP16,FUTURE +VREDUCESH xmmreg|mask|z,xmmreg*,xmmrm16|sae,imm8 [rmvi:t1s: evex.nds.lig.np.0f3a.w0 57 /r ib] AVX512FP16,FUTURE +VENDSCALEPH xmmreg|mask|z,xmmrm128|b16,imm8 [rmi:fv: evex.128.np.0f3a.w0 08 /r ib] AVX512FP16,AVX512VL,FUTURE +VENDSCALEPH ymmreg|mask|z,ymmrm256|b16,imm8 [rmi:fv: evex.256.np.0f3a.w0 08 /r ib] AVX512FP16,AVX512VL,FUTURE +VENDSCALEPH zmmreg|mask|z,zmmrm512|b16|sae,imm8 [rmi:fv: evex.512.np.0f3a.w0 08 /r ib] AVX512FP16,FUTURE +VENDSCALESH xmmreg|mask|z,xmmreg*,xmmrm16|sae,imm8 [rvmi:t1s: evex.nds.lig.np.0f3a.w0 0a /r ib] AVX512FP16,FUTURE +VRSQRTPH xmmreg|mask|z,xmmrm128|b16,imm8 [rmi:fv: evex.128.66.map6.w0 4e /r ib] AVX512FP16,AVX512VL,FUTURE +VRSQRTPH ymmreg|mask|z,ymmrm256|b16,imm8 [rmi:fv: evex.256.66.map6.w0 4e /r ib] AVX512FP16,AVX512VL,FUTURE +VRSQRTPH zmmreg|mask|z,zmmrm512|b16|sae,imm8 [rmi:fv: evex.512.66.map6.w0 4e /r ib] AVX512FP16,FUTURE +VRSQRTSH xmmreg|mask|z,xmmreg*,xmmrm16|sae,imm8 [rvmi:t1s: evex.nds.lig.66.map6.w0 4f /r ib] AVX512FP16,FUTURE +VSCALEFPH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.66.map6.w0 2c /r] AVX512FP16,AVX512VL,FUTURE +VSCALEFPH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.66.map6.w0 2c /r] AVX512FP16,AVX512VL,FUTURE +VSCALEFPH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.66.map6.w0 2c /r] AVX512FP16,FUTURE +VSCALEFSH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.66.map6.w0 2d /r] AVX512FP16,FUTURE +VSQRTPH xmmreg|mask|z,xmmrm128|b16 [rm:fv: evex.128.np.map5.w0 51 /r] AVX512FP16,AVX512VL,FUTURE +VSQRTPH ymmreg|mask|z,ymmrm256|b16 [rm:fv: evex.256.np.map5.w0 51 /r] AVX512FP16,AVX512VL,FUTURE +VSQRTPH zmmreg|mask|z,zmmrm512|b16|er [rm:fv: evex.512.np.map5.w0 51 /r] AVX512FP16,FUTURE +VSQRTSH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.f3.map5.w0 51 /r] AVX512FP16,FUTURE +VSUBPH xmmreg|mask|z,xmmreg*,xmmrm128|b16 [rvm:fv: evex.nds.128.np.map5.w0 5c /r] AVX512FP16,AVX512VL,FUTURE +VSUBPH ymmreg|mask|z,ymmreg*,ymmrm256|b16 [rvm:fv: evex.nds.256.np.map5.w0 5c /r] AVX512FP16,AVX512VL,FUTURE +VSUBPH zmmreg|mask|z,zmmreg*,zmmrm512|b16|er [rvm:fv: evex.nds.512.np.map5.w0 5c /r] AVX512FP16,FUTURE +VSUBSH xmmreg|mask|z,xmmreg*,xmmrm16|er [rvm:t1s: evex.nds.lig.f3.map5.w0 5c /r] AVX512FP16,FUTURE +VUCOMISH xmmreg,xmmrm16|sae [rm:t1s: evex.lig.np.map5.w0 2e /r] AVX512FP16,FUTURE + +;# RAO-INT weakly ordered atomic operations +AADD mem32,reg32 [mr: norexw np 0f 38 fc /r ] RAOINT,FUTURE,SD +AADD mem64,reg64 [mr: o64 np 0f 38 fc /r ] RAOINT,FUTURE,SQ,LONG +AAND mem32,reg32 [mr: norexw 66 0f 38 fc /r ] RAOINT,FUTURE,SD +AAND mem64,reg64 [mr: o64 66 0f 38 fc /r ] RAOINT,FUTURE,SQ,LONG +AXOR mem32,reg32 [mr: norexw f3 0f 38 fc /r ] RAOINT,FUTURE,SD +AXOR mem64,reg64 [mr: o64 f3 0f 38 fc /r ] RAOINT,FUTURE,SQ,LONG + +;# User interrupts +CLUI void [ f3 0f 01 ee ] UINTR,FUTURE,LONG +SENDUIPI reg64 [m: o64nw f3 0f c7 /6 ] UINTR,FUTURE,LONG +STUI void [ f3 0f 01 ef ] UINTR,FUTURE,LONG +TESTUI void [ f3 0f 01 ed ] UINTR,FUTURE,LONG +UIRET void [ f3 0f 01 ec ] UINTR,FUTURE,LONG + +;# Compare, exchange and add conditional +CMPccXADD mem32,reg32,reg32 [mrv: vex.128.66.0f38.w0 e0+c /r] CMPCCXADD,FUTURE,LONG,SD +CMPccXADD mem64,reg64,reg64 [mrv: vex.128.66.0f38.w1 e0+c /r] CMPCCXADD,FUTURE,LONG,SQ + +;# WRMSRNS and MSRLIST instructions +WRMSRNS void [ np 0f 01 c6 ] WRMSRNS,FUTURE,PRIV,LONG +RDMSRLIST void [ f2 0f 01 c6 ] MSRLIST,FUTURE,PRIV,LONG +WRMSRLIST void [ f3 0f 01 c6 ] MSRLIST,FUTURE,PRIV,LONG + +;# History reset +HRESET imm,reg_eax [i-: f3 0f 3a f0 c0 ib ] HRESET,FUTURE,PRIV,SB +HRESET imm [i: f3 0f 3a f0 c0 ib ] HRESET,FUTURE,PRIV,SB,ND + +;# Systematic names for the hinting nop instructions +; These should be last in the file +HINT_NOP0 rm16 [m: o16 0f 18 /0] P6,UNDOC +HINT_NOP0 rm32 [m: o32 0f 18 /0] P6,UNDOC +HINT_NOP0 rm64 [m: o64 0f 18 /0] X86_64,LONG,UNDOC +HINT_NOP1 rm16 [m: o16 0f 18 /1] P6,UNDOC +HINT_NOP1 rm32 [m: o32 0f 18 /1] P6,UNDOC +HINT_NOP1 rm64 [m: o64 0f 18 /1] X86_64,LONG,UNDOC +HINT_NOP2 rm16 [m: o16 0f 18 /2] P6,UNDOC +HINT_NOP2 rm32 [m: o32 0f 18 /2] P6,UNDOC +HINT_NOP2 rm64 [m: o64 0f 18 /2] X86_64,LONG,UNDOC +HINT_NOP3 rm16 [m: o16 0f 18 /3] P6,UNDOC +HINT_NOP3 rm32 [m: o32 0f 18 /3] P6,UNDOC +HINT_NOP3 rm64 [m: o64 0f 18 /3] X86_64,LONG,UNDOC +HINT_NOP4 rm16 [m: o16 0f 18 /4] P6,UNDOC +HINT_NOP4 rm32 [m: o32 0f 18 /4] P6,UNDOC +HINT_NOP4 rm64 [m: o64 0f 18 /4] X86_64,LONG,UNDOC +HINT_NOP5 rm16 [m: o16 0f 18 /5] P6,UNDOC +HINT_NOP5 rm32 [m: o32 0f 18 /5] P6,UNDOC +HINT_NOP5 rm64 [m: o64 0f 18 /5] X86_64,LONG,UNDOC +HINT_NOP6 rm16 [m: o16 0f 18 /6] P6,UNDOC +HINT_NOP6 rm32 [m: o32 0f 18 /6] P6,UNDOC +HINT_NOP6 rm64 [m: o64 0f 18 /6] X86_64,LONG,UNDOC +HINT_NOP7 rm16 [m: o16 0f 18 /7] P6,UNDOC +HINT_NOP7 rm32 [m: o32 0f 18 /7] P6,UNDOC +HINT_NOP7 rm64 [m: o64 0f 18 /7] X86_64,LONG,UNDOC +HINT_NOP8 rm16 [m: o16 0f 19 /0] P6,UNDOC +HINT_NOP8 rm32 [m: o32 0f 19 /0] P6,UNDOC +HINT_NOP8 rm64 [m: o64 0f 19 /0] X86_64,LONG,UNDOC +HINT_NOP9 rm16 [m: o16 0f 19 /1] P6,UNDOC +HINT_NOP9 rm32 [m: o32 0f 19 /1] P6,UNDOC +HINT_NOP9 rm64 [m: o64 0f 19 /1] X86_64,LONG,UNDOC +HINT_NOP10 rm16 [m: o16 0f 19 /2] P6,UNDOC +HINT_NOP10 rm32 [m: o32 0f 19 /2] P6,UNDOC +HINT_NOP10 rm64 [m: o64 0f 19 /2] X86_64,LONG,UNDOC +HINT_NOP11 rm16 [m: o16 0f 19 /3] P6,UNDOC +HINT_NOP11 rm32 [m: o32 0f 19 /3] P6,UNDOC +HINT_NOP11 rm64 [m: o64 0f 19 /3] X86_64,LONG,UNDOC +HINT_NOP12 rm16 [m: o16 0f 19 /4] P6,UNDOC +HINT_NOP12 rm32 [m: o32 0f 19 /4] P6,UNDOC +HINT_NOP12 rm64 [m: o64 0f 19 /4] X86_64,LONG,UNDOC +HINT_NOP13 rm16 [m: o16 0f 19 /5] P6,UNDOC +HINT_NOP13 rm32 [m: o32 0f 19 /5] P6,UNDOC +HINT_NOP13 rm64 [m: o64 0f 19 /5] X86_64,LONG,UNDOC +HINT_NOP14 rm16 [m: o16 0f 19 /6] P6,UNDOC +HINT_NOP14 rm32 [m: o32 0f 19 /6] P6,UNDOC +HINT_NOP14 rm64 [m: o64 0f 19 /6] X86_64,LONG,UNDOC +HINT_NOP15 rm16 [m: o16 0f 19 /7] P6,UNDOC +HINT_NOP15 rm32 [m: o32 0f 19 /7] P6,UNDOC +HINT_NOP15 rm64 [m: o64 0f 19 /7] X86_64,LONG,UNDOC +HINT_NOP16 rm16 [m: o16 0f 1a /0] P6,UNDOC +HINT_NOP16 rm32 [m: o32 0f 1a /0] P6,UNDOC +HINT_NOP16 rm64 [m: o64 0f 1a /0] X86_64,LONG,UNDOC +HINT_NOP17 rm16 [m: o16 0f 1a /1] P6,UNDOC +HINT_NOP17 rm32 [m: o32 0f 1a /1] P6,UNDOC +HINT_NOP17 rm64 [m: o64 0f 1a /1] X86_64,LONG,UNDOC +HINT_NOP18 rm16 [m: o16 0f 1a /2] P6,UNDOC +HINT_NOP18 rm32 [m: o32 0f 1a /2] P6,UNDOC +HINT_NOP18 rm64 [m: o64 0f 1a /2] X86_64,LONG,UNDOC +HINT_NOP19 rm16 [m: o16 0f 1a /3] P6,UNDOC +HINT_NOP19 rm32 [m: o32 0f 1a /3] P6,UNDOC +HINT_NOP19 rm64 [m: o64 0f 1a /3] X86_64,LONG,UNDOC +HINT_NOP20 rm16 [m: o16 0f 1a /4] P6,UNDOC +HINT_NOP20 rm32 [m: o32 0f 1a /4] P6,UNDOC +HINT_NOP20 rm64 [m: o64 0f 1a /4] X86_64,LONG,UNDOC +HINT_NOP21 rm16 [m: o16 0f 1a /5] P6,UNDOC +HINT_NOP21 rm32 [m: o32 0f 1a /5] P6,UNDOC +HINT_NOP21 rm64 [m: o64 0f 1a /5] X86_64,LONG,UNDOC +HINT_NOP22 rm16 [m: o16 0f 1a /6] P6,UNDOC +HINT_NOP22 rm32 [m: o32 0f 1a /6] P6,UNDOC +HINT_NOP22 rm64 [m: o64 0f 1a /6] X86_64,LONG,UNDOC +HINT_NOP23 rm16 [m: o16 0f 1a /7] P6,UNDOC +HINT_NOP23 rm32 [m: o32 0f 1a /7] P6,UNDOC +HINT_NOP23 rm64 [m: o64 0f 1a /7] X86_64,LONG,UNDOC +HINT_NOP24 rm16 [m: o16 0f 1b /0] P6,UNDOC +HINT_NOP24 rm32 [m: o32 0f 1b /0] P6,UNDOC +HINT_NOP24 rm64 [m: o64 0f 1b /0] X86_64,LONG,UNDOC +HINT_NOP25 rm16 [m: o16 0f 1b /1] P6,UNDOC +HINT_NOP25 rm32 [m: o32 0f 1b /1] P6,UNDOC +HINT_NOP25 rm64 [m: o64 0f 1b /1] X86_64,LONG,UNDOC +HINT_NOP26 rm16 [m: o16 0f 1b /2] P6,UNDOC +HINT_NOP26 rm32 [m: o32 0f 1b /2] P6,UNDOC +HINT_NOP26 rm64 [m: o64 0f 1b /2] X86_64,LONG,UNDOC +HINT_NOP27 rm16 [m: o16 0f 1b /3] P6,UNDOC +HINT_NOP27 rm32 [m: o32 0f 1b /3] P6,UNDOC +HINT_NOP27 rm64 [m: o64 0f 1b /3] X86_64,LONG,UNDOC +HINT_NOP28 rm16 [m: o16 0f 1b /4] P6,UNDOC +HINT_NOP28 rm32 [m: o32 0f 1b /4] P6,UNDOC +HINT_NOP28 rm64 [m: o64 0f 1b /4] X86_64,LONG,UNDOC +HINT_NOP29 rm16 [m: o16 0f 1b /5] P6,UNDOC +HINT_NOP29 rm32 [m: o32 0f 1b /5] P6,UNDOC +HINT_NOP29 rm64 [m: o64 0f 1b /5] X86_64,LONG,UNDOC +HINT_NOP30 rm16 [m: o16 0f 1b /6] P6,UNDOC +HINT_NOP30 rm32 [m: o32 0f 1b /6] P6,UNDOC +HINT_NOP30 rm64 [m: o64 0f 1b /6] X86_64,LONG,UNDOC +HINT_NOP31 rm16 [m: o16 0f 1b /7] P6,UNDOC +HINT_NOP31 rm32 [m: o32 0f 1b /7] P6,UNDOC +HINT_NOP31 rm64 [m: o64 0f 1b /7] X86_64,LONG,UNDOC +HINT_NOP32 rm16 [m: o16 0f 1c /0] P6,UNDOC +HINT_NOP32 rm32 [m: o32 0f 1c /0] P6,UNDOC +HINT_NOP32 rm64 [m: o64 0f 1c /0] X86_64,LONG,UNDOC +HINT_NOP33 rm16 [m: o16 0f 1c /1] P6,UNDOC +HINT_NOP33 rm32 [m: o32 0f 1c /1] P6,UNDOC +HINT_NOP33 rm64 [m: o64 0f 1c /1] X86_64,LONG,UNDOC +HINT_NOP34 rm16 [m: o16 0f 1c /2] P6,UNDOC +HINT_NOP34 rm32 [m: o32 0f 1c /2] P6,UNDOC +HINT_NOP34 rm64 [m: o64 0f 1c /2] X86_64,LONG,UNDOC +HINT_NOP35 rm16 [m: o16 0f 1c /3] P6,UNDOC +HINT_NOP35 rm32 [m: o32 0f 1c /3] P6,UNDOC +HINT_NOP35 rm64 [m: o64 0f 1c /3] X86_64,LONG,UNDOC +HINT_NOP36 rm16 [m: o16 0f 1c /4] P6,UNDOC +HINT_NOP36 rm32 [m: o32 0f 1c /4] P6,UNDOC +HINT_NOP36 rm64 [m: o64 0f 1c /4] X86_64,LONG,UNDOC +HINT_NOP37 rm16 [m: o16 0f 1c /5] P6,UNDOC +HINT_NOP37 rm32 [m: o32 0f 1c /5] P6,UNDOC +HINT_NOP37 rm64 [m: o64 0f 1c /5] X86_64,LONG,UNDOC +HINT_NOP38 rm16 [m: o16 0f 1c /6] P6,UNDOC +HINT_NOP38 rm32 [m: o32 0f 1c /6] P6,UNDOC +HINT_NOP38 rm64 [m: o64 0f 1c /6] X86_64,LONG,UNDOC +HINT_NOP39 rm16 [m: o16 0f 1c /7] P6,UNDOC +HINT_NOP39 rm32 [m: o32 0f 1c /7] P6,UNDOC +HINT_NOP39 rm64 [m: o64 0f 1c /7] X86_64,LONG,UNDOC +HINT_NOP40 rm16 [m: o16 0f 1d /0] P6,UNDOC +HINT_NOP40 rm32 [m: o32 0f 1d /0] P6,UNDOC +HINT_NOP40 rm64 [m: o64 0f 1d /0] X86_64,LONG,UNDOC +HINT_NOP41 rm16 [m: o16 0f 1d /1] P6,UNDOC +HINT_NOP41 rm32 [m: o32 0f 1d /1] P6,UNDOC +HINT_NOP41 rm64 [m: o64 0f 1d /1] X86_64,LONG,UNDOC +HINT_NOP42 rm16 [m: o16 0f 1d /2] P6,UNDOC +HINT_NOP42 rm32 [m: o32 0f 1d /2] P6,UNDOC +HINT_NOP42 rm64 [m: o64 0f 1d /2] X86_64,LONG,UNDOC +HINT_NOP43 rm16 [m: o16 0f 1d /3] P6,UNDOC +HINT_NOP43 rm32 [m: o32 0f 1d /3] P6,UNDOC +HINT_NOP43 rm64 [m: o64 0f 1d /3] X86_64,LONG,UNDOC +HINT_NOP44 rm16 [m: o16 0f 1d /4] P6,UNDOC +HINT_NOP44 rm32 [m: o32 0f 1d /4] P6,UNDOC +HINT_NOP44 rm64 [m: o64 0f 1d /4] X86_64,LONG,UNDOC +HINT_NOP45 rm16 [m: o16 0f 1d /5] P6,UNDOC +HINT_NOP45 rm32 [m: o32 0f 1d /5] P6,UNDOC +HINT_NOP45 rm64 [m: o64 0f 1d /5] X86_64,LONG,UNDOC +HINT_NOP46 rm16 [m: o16 0f 1d /6] P6,UNDOC +HINT_NOP46 rm32 [m: o32 0f 1d /6] P6,UNDOC +HINT_NOP46 rm64 [m: o64 0f 1d /6] X86_64,LONG,UNDOC +HINT_NOP47 rm16 [m: o16 0f 1d /7] P6,UNDOC +HINT_NOP47 rm32 [m: o32 0f 1d /7] P6,UNDOC +HINT_NOP47 rm64 [m: o64 0f 1d /7] X86_64,LONG,UNDOC +HINT_NOP48 rm16 [m: o16 0f 1e /0] P6,UNDOC +HINT_NOP48 rm32 [m: o32 0f 1e /0] P6,UNDOC +HINT_NOP48 rm64 [m: o64 0f 1e /0] X86_64,LONG,UNDOC +HINT_NOP49 rm16 [m: o16 0f 1e /1] P6,UNDOC +HINT_NOP49 rm32 [m: o32 0f 1e /1] P6,UNDOC +HINT_NOP49 rm64 [m: o64 0f 1e /1] X86_64,LONG,UNDOC +HINT_NOP50 rm16 [m: o16 0f 1e /2] P6,UNDOC +HINT_NOP50 rm32 [m: o32 0f 1e /2] P6,UNDOC +HINT_NOP50 rm64 [m: o64 0f 1e /2] X86_64,LONG,UNDOC +HINT_NOP51 rm16 [m: o16 0f 1e /3] P6,UNDOC +HINT_NOP51 rm32 [m: o32 0f 1e /3] P6,UNDOC +HINT_NOP51 rm64 [m: o64 0f 1e /3] X86_64,LONG,UNDOC +HINT_NOP52 rm16 [m: o16 0f 1e /4] P6,UNDOC +HINT_NOP52 rm32 [m: o32 0f 1e /4] P6,UNDOC +HINT_NOP52 rm64 [m: o64 0f 1e /4] X86_64,LONG,UNDOC +HINT_NOP53 rm16 [m: o16 0f 1e /5] P6,UNDOC +HINT_NOP53 rm32 [m: o32 0f 1e /5] P6,UNDOC +HINT_NOP53 rm64 [m: o64 0f 1e /5] X86_64,LONG,UNDOC +HINT_NOP54 rm16 [m: o16 0f 1e /6] P6,UNDOC +HINT_NOP54 rm32 [m: o32 0f 1e /6] P6,UNDOC +HINT_NOP54 rm64 [m: o64 0f 1e /6] X86_64,LONG,UNDOC +HINT_NOP55 rm16 [m: o16 0f 1e /7] P6,UNDOC +HINT_NOP55 rm32 [m: o32 0f 1e /7] P6,UNDOC +HINT_NOP55 rm64 [m: o64 0f 1e /7] X86_64,LONG,UNDOC +HINT_NOP56 rm16 [m: o16 0f 1f /0] P6,UNDOC +HINT_NOP56 rm32 [m: o32 0f 1f /0] P6,UNDOC +HINT_NOP56 rm64 [m: o64 0f 1f /0] X86_64,LONG,UNDOC +HINT_NOP57 rm16 [m: o16 0f 1f /1] P6,UNDOC +HINT_NOP57 rm32 [m: o32 0f 1f /1] P6,UNDOC +HINT_NOP57 rm64 [m: o64 0f 1f /1] X86_64,LONG,UNDOC +HINT_NOP58 rm16 [m: o16 0f 1f /2] P6,UNDOC +HINT_NOP58 rm32 [m: o32 0f 1f /2] P6,UNDOC +HINT_NOP58 rm64 [m: o64 0f 1f /2] X86_64,LONG,UNDOC +HINT_NOP59 rm16 [m: o16 0f 1f /3] P6,UNDOC +HINT_NOP59 rm32 [m: o32 0f 1f /3] P6,UNDOC +HINT_NOP59 rm64 [m: o64 0f 1f /3] X86_64,LONG,UNDOC +HINT_NOP60 rm16 [m: o16 0f 1f /4] P6,UNDOC +HINT_NOP60 rm32 [m: o32 0f 1f /4] P6,UNDOC +HINT_NOP60 rm64 [m: o64 0f 1f /4] X86_64,LONG,UNDOC +HINT_NOP61 rm16 [m: o16 0f 1f /5] P6,UNDOC +HINT_NOP61 rm32 [m: o32 0f 1f /5] P6,UNDOC +HINT_NOP61 rm64 [m: o64 0f 1f /5] X86_64,LONG,UNDOC +HINT_NOP62 rm16 [m: o16 0f 1f /6] P6,UNDOC +HINT_NOP62 rm32 [m: o32 0f 1f /6] P6,UNDOC +HINT_NOP62 rm64 [m: o64 0f 1f /6] X86_64,LONG,UNDOC +HINT_NOP63 rm16 [m: o16 0f 1f /7] P6,UNDOC +HINT_NOP63 rm32 [m: o32 0f 1f /7] P6,UNDOC +HINT_NOP63 rm64 [m: o64 0f 1f /7] X86_64,LONG,UNDOC diff --git a/vere/ext/nasm/x86/insns.pl b/vere/ext/nasm/x86/insns.pl new file mode 100755 index 0000000..1663428 --- /dev/null +++ b/vere/ext/nasm/x86/insns.pl @@ -0,0 +1,1167 @@ +#!/usr/bin/perl +## -------------------------------------------------------------------------- +## +## Copyright 1996-2020 The NASM Authors - All Rights Reserved +## See the file AUTHORS included with the NASM distribution for +## the specific copyright holders. +## +## 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. +## +## -------------------------------------------------------------------------- + +# +# insns.pl +# +# Parse insns.dat and produce generated source code files + +require 'x86/insns-iflags.ph'; + +# Opcode prefixes which need their own opcode tables +# LONGER PREFIXES FIRST! +@disasm_prefixes = qw(0F24 0F25 0F38 0F3A 0F7A 0FA6 0FA7 0F); + +# This should match MAX_OPERANDS from nasm.h +$MAX_OPERANDS = 5; + +# Add VEX/XOP prefixes +@vex_class = ( 'vex', 'xop', 'evex' ); +$vex_classes = scalar(@vex_class); +@vexlist = (); +%vexmap = (); +for ($c = 0; $c < $vex_classes; $c++) { + $vexmap{$vex_class[$c]} = $c; + for ($m = 0; $m < 32; $m++) { + for ($p = 0; $p < 4; $p++) { + push(@vexlist, sprintf("%s%02X%01X", $vex_class[$c], $m, $p)); + } + } +} +@disasm_prefixes = (@vexlist, @disasm_prefixes, ''); +%disasm_prefixes = map { $_ => 1 } @disasm_prefixes; + +@bytecode_count = (0) x 256; + +# Push to an array reference, creating the array if needed +sub xpush($@) { + my $ref = shift @_; + + $$ref = [] unless (defined($$ref)); + return push(@$$ref, @_); +} + +# Generate relaxed form patterns if applicable +sub relaxed_forms(@) { + my @field_list = @_; + + foreach my $fields (@_) { + next unless ($fields->[1] =~ /\*/); + + # This instruction has relaxed form(s) + if ($fields->[2] !~ /^\[/) { + warn "$fname:$line: has an * operand but uses raw bytecodes\n"; + next; + } + + my $opmask = 0; + my @ops = split(/,/, $fields->[1]); + for (my $oi = 0; $oi < scalar @ops; $oi++) { + if ($ops[$oi] =~ /\*$/) { + if ($oi == 0) { + warn "$fname:$line: has a first operand with a *\n"; + next; + } + $opmask |= 1 << $oi; + } + } + + for (my $oi = 1; $oi < (1 << scalar @ops); $oi++) { + if (($oi & ~$opmask) == 0) { + my @xops = (); + my $omask = ~$oi; + for ($oj = 0; $oj < scalar(@ops); $oj++) { + if ($omask & 1) { + push(@xops, $ops[$oj]); + } + $omask >>= 1; + } + my @ff = @$fields; + $ff[1] = join(',', @xops); + $ff[4] = $oi; + push(@field_list, [@ff]); + } + } + } + + return @field_list; +} + +# Condition codes used by the disassembler +my %condd = ( 'o' => 0, 'no' => 1, 'c' => 2, 'nc' => 3, + 'z' => 4, 'nz' => 5, 'na' => 6, 'a' => 7, + 's' => 8, 'ns' => 9, 'pe' => 10, 'po' => 11, + 'l' => 12, 'nl' => 13, 'ng' => 14, 'g' => 15 ); + +# All condition code aliases +my %conds = ( %condd, + 'ae' => 3, 'b' => 2, 'be' => 6, 'e' => 4, + 'ge' => 13, 'le' => 14, 'nae' => 2, 'nb' => 3, + 'nbe' => 7, 'ne' => 5, 'nge' => 12, 'nle' => 15, + 'np' => 11, 'p' => 10 ); + +my @conds = sort keys(%conds); + +# Generate conditional form patterns if applicable +sub conditional_forms(@) { + my @field_list = (); + + foreach my $fields (@_) { + # This is a case sensitive match! + if ($fields->[0] !~ /cc/) { + # Not a conditional instruction pattern + push(@field_list, $fields); + next; + } + + if ($fields->[2] !~ /^\[/) { + warn "$fname:$line: conditional instruction using raw bytecodes\n"; + next; + } + + foreach my $cc (@conds) { + my @ff = @$fields; + + $ff[0] =~ s/cc/\U$cc/; + + unless ($ff[2] =~ /^(\[.*?)\b([0-9a-f]{2})\+c\b(.*\])$/) { + warn "$fname:$line: invalid conditional encoding"; + next; + } + $ff[2] = $1.sprintf('%02x', hex($2)^$conds{$cc}).$3; + + unless (defined($condd{$cc}) || $ff[3] =~ /\bND\b/) { + $ff[3] .= ',ND'; + } + + push(@field_list, [@ff]); + } + } + return @field_list; +} + +print STDERR "Reading insns.dat...\n"; + +@args = (); +undef $output; +foreach $arg ( @ARGV ) { + if ( $arg =~ /^\-/ ) { + if ( $arg =~ /^\-([abdin]|f[hc])$/ ) { + $output = $1; + } else { + die "$0: Unknown option: ${arg}\n"; + } + } else { + push (@args, $arg); + } +} + +die if (scalar(@args) != 2); # input output +($fname, $oname) = @args; + +open(F, '<', $fname) || die "unable to open $fname"; + +%dinstables = (); +@bytecode_list = (); +%aname = (); + +$line = 0; +$insns = 0; +$n_opcodes = 0; +my @allpatterns = (); + +while () { + $line++; + chomp; + next if ( /^\s*(\;.*|)$/ ); # comments or blank lines + + unless (/^\s*(\S+)\s+(\S+)\s+(\S+|\[.*\])\s+(\S+)\s*$/) { + warn "line $line does not contain four fields\n"; + next; + } + my @field_list = ([$1, $2, $3, $4, 0]); + @field_list = relaxed_forms(@field_list); + @field_list = conditional_forms(@field_list); + + foreach my $fields (@field_list) { + ($formatted, $nd) = format_insn(@$fields); + if ($formatted) { + $insns++; + xpush(\$aname{$fields->[0]}, $formatted); + } + if (!defined($k_opcodes{$fields->[0]})) { + $k_opcodes{$fields->[0]} = $n_opcodes++; + } + if ($formatted && !$nd) { + push @big, $formatted; + my @sseq = startseq($fields->[2], $fields->[4]); + foreach my $i (@sseq) { + xpush(\$dinstables{$i}, $#big); + } + } + } +} + +close F; + +# +# Generate the bytecode array. At this point, @bytecode_list contains +# the full set of bytecodes. +# + +# Sort by descending length +@bytecode_list = sort { scalar(@$b) <=> scalar(@$a) } @bytecode_list; +@bytecode_array = (); +%bytecode_pos = (); +$bytecode_next = 0; +foreach $bl (@bytecode_list) { + my $h = hexstr(@$bl); + next if (defined($bytecode_pos{$h})); + + push(@bytecode_array, $bl); + while ($h ne '') { + $bytecode_pos{$h} = $bytecode_next; + $h = substr($h, 2); + $bytecode_next++; + } +} +undef @bytecode_list; + +@opcodes = sort { $k_opcodes{$a} <=> $k_opcodes{$b} } keys(%k_opcodes); + +if ( $output eq 'b') { + print STDERR "Writing $oname...\n"; + + open(B, '>', $oname); + + print B "/* This file auto-generated from insns.dat by insns.pl" . + " - don't edit it */\n\n"; + + print B "#include \"nasm.h\"\n"; + print B "#include \"insns.h\"\n\n"; + + print B "const uint8_t nasm_bytecodes[$bytecode_next] = {\n"; + + $p = 0; + foreach $bl (@bytecode_array) { + printf B " /* %5d */ ", $p; + foreach $d (@$bl) { + printf B "%#o,", $d; + $p++; + } + printf B "\n"; + } + print B "};\n"; + + print B "\n"; + print B "/*\n"; + print B " * Bytecode frequencies (including reuse):\n"; + print B " *\n"; + for ($i = 0; $i < 32; $i++) { + print B " *"; + for ($j = 0; $j < 256; $j += 32) { + print B " |" if ($j); + printf B " %3o:%4d", $i+$j, $bytecode_count[$i+$j]; + } + print B "\n"; + } + print B " */\n"; + + close B; +} + +if ( $output eq 'a' ) { + print STDERR "Writing $oname...\n"; + + open(A, '>', $oname); + + print A "/* This file auto-generated from insns.dat by insns.pl" . + " - don't edit it */\n\n"; + + print A "#include \"nasm.h\"\n"; + print A "#include \"insns.h\"\n\n"; + + foreach $i (@opcodes) { + print A "static const struct itemplate instrux_${i}[] = {\n"; + foreach $j (@{$aname{$i}}) { + print A " ", codesubst($j), "\n"; + } + print A " ITEMPLATE_END\n};\n\n"; + } + print A "const struct itemplate * const nasm_instructions[] = {\n"; + foreach $i (@opcodes) { + print A " instrux_${i},\n"; + } + print A "};\n"; + + close A; +} + +if ( $output eq 'd' ) { + print STDERR "Writing $oname...\n"; + + open(D, '>', $oname); + + print D "/* This file auto-generated from insns.dat by insns.pl" . + " - don't edit it */\n\n"; + + print D "#include \"nasm.h\"\n"; + print D "#include \"insns.h\"\n\n"; + + print D "static const struct itemplate instrux[] = {\n"; + $n = 0; + foreach $j (@big) { + printf D " /* %4d */ %s\n", $n++, codesubst($j); + } + print D "};\n"; + + foreach $h (sort(keys(%dinstables))) { + next if ($h eq ''); # Skip pseudo-instructions + print D "\nstatic const struct itemplate * const itable_${h}[] = {\n"; + foreach $j (@{$dinstables{$h}}) { + print D " instrux + $j,\n"; + } + print D "};\n"; + } + + @prefix_list = (); + foreach $h (@disasm_prefixes) { + for ($c = 0; $c < 256; $c++) { + $nn = sprintf("%s%02X", $h, $c); + if ($is_prefix{$nn} || defined($dinstables{$nn})) { + # At least one entry in this prefix table + push(@prefix_list, $h); + $is_prefix{$h} = 1; + last; + } + } + } + + foreach $h (@prefix_list) { + print D "\n"; + print D "static " unless ($h eq ''); + print D "const struct disasm_index "; + print D ($h eq '') ? 'itable' : "itable_$h"; + print D "[256] = {\n"; + for ($c = 0; $c < 256; $c++) { + $nn = sprintf("%s%02X", $h, $c); + if ($is_prefix{$nn}) { + if ($dinstables{$nn}) { + print STDERR "$fname: ambiguous decoding, prefix $nn aliases:\n"; + foreach my $dc (@{$dinstables{$nn}}) { + print STDERR codesubst($big[$dc]), "\n"; + } + exit 1; + } + printf D " /* 0x%02x */ { itable_%s, -1 },\n", $c, $nn; + } elsif ($dinstables{$nn}) { + printf D " /* 0x%02x */ { itable_%s, %u },\n", $c, + $nn, scalar(@{$dinstables{$nn}}); + } else { + printf D " /* 0x%02x */ { NULL, 0 },\n", $c; + } + } + print D "};\n"; + } + + printf D "\nconst struct disasm_index * const itable_vex[NASM_VEX_CLASSES][32][4] =\n"; + print D "{\n"; + for ($c = 0; $c < $vex_classes; $c++) { + print D " {\n"; + for ($m = 0; $m < 32; $m++) { + print D " { "; + for ($p = 0; $p < 4; $p++) { + $vp = sprintf("%s%02X%01X", $vex_class[$c], $m, $p); + printf D "%-15s", + ($is_prefix{$vp} ? sprintf("itable_%s,", $vp) : 'NULL,'); + } + print D "},\n"; + } + print D " },\n"; + } + print D "};\n"; + + close D; +} + +if ( $output eq 'i' ) { + print STDERR "Writing $oname...\n"; + + open(I, '>', $oname); + + print I "/* This file is auto-generated from insns.dat by insns.pl" . + " - don't edit it */\n\n"; + print I "/* This file in included by nasm.h */\n\n"; + + print I "/* Instruction names */\n\n"; + print I "#ifndef NASM_INSNSI_H\n"; + print I "#define NASM_INSNSI_H 1\n\n"; + print I "enum opcode {\n"; + $maxlen = 0; + foreach $i (@opcodes) { + print I "\tI_${i},\n"; + $len = length($i); + $maxlen = $len if ( $len > $maxlen ); + } + print I "\tI_none = -1\n"; + print I "};\n\n"; + print I "#define MAX_INSLEN ", $maxlen, "\n"; + print I "#define NASM_VEX_CLASSES ", $vex_classes, "\n"; + print I "#define NO_DECORATOR\t{", join(',',(0) x $MAX_OPERANDS), "}\n"; + print I "#endif /* NASM_INSNSI_H */\n"; + + close I; +} + +if ( $output eq 'n' ) { + print STDERR "Writing $oname...\n"; + + open(N, '>', $oname); + + print N "/* This file is auto-generated from insns.dat by insns.pl" . + " - don't edit it */\n\n"; + print N "#include \"tables.h\"\n\n"; + + print N "const char * const nasm_insn_names[] = {"; + foreach $i (@opcodes) { + print N "\n\t\"\L$i\""; + print N ',' if ($i < $#opcodes); + } + print N "\n};\n"; + close N; +} + +if ( $output eq 'fh') { + write_iflaggen_h(); +} + +if ( $output eq 'fc') { + write_iflag_c(); +} + +printf STDERR "Done: %d instructions\n", $insns; + +# Count primary bytecodes, for statistics +sub count_bytecodes(@) { + my $skip = 0; + foreach my $bc (@_) { + if ($skip) { + $skip--; + next; + } + $bytecode_count[$bc]++; + if ($bc >= 01 && $bc <= 04) { + $skip = $bc; + } elsif (($bc & ~03) == 010) { + $skip = 1; + } elsif (($bc & ~013) == 0144) { + $skip = 1; + } elsif ($bc == 0172 || $bc == 0173) { + $skip = 1; + } elsif (($bc & ~3) == 0260 || $bc == 0270) { # VEX + $skip = 2; + } elsif (($bc & ~3) == 0240 || $bc == 0250) { # EVEX + $skip = 3; + } elsif ($bc == 0330) { + $skip = 1; + } + } +} + +sub format_insn($$$$$) { + my ($opcode, $operands, $codes, $flags, $relax) = @_; + my $nd = 0; + my ($num, $flagsindex); + my @bytecode; + my ($op, @ops, @opsize, $opp, @opx, @oppx, @decos, @opevex); + + return (undef, undef) if $operands eq "ignore"; + + # format the operands + $operands =~ s/\*//g; + $operands =~ s/:/|colon,/g; + @ops = (); + @opsize = (); + @decos = (); + if ($operands ne 'void') { + foreach $op (split(/,/, $operands)) { + my $opsz = 0; + @opx = (); + @opevex = (); + foreach $opp (split(/\|/, $op)) { + @oppx = (); + if ($opp =~ s/^(b(16|32|64)|mask|z|er|sae)$//) { + push(@opevex, $1); + } + + if ($opp =~ s/(? 8, 'SW' => 16, 'SD' => 32, 'SQ' => 64, + 'SO' => 128, 'SY' => 256, 'SZ' => 512 ); + my $s = defined($arx) ? $arx : 0; + my $e = defined($arx) ? $arx : $MAX_OPERANDS - 1; + + foreach my $sf (keys(%sflags)) { + next if (!$flags{$sf}); + for (my $i = $s; $i <= $e; $i++) { + if ($opsize[$i] && $ops[$i] !~ /\breg_(gpr|[cdts]reg)\b/) { + die "$fname:$line: inconsistent $sf flag for argument $i ($ops[$i])\n" + if ($opsize[$i] != $sflags{$sf}); + } + } + } + + $flagsindex = insns_flag_index(keys %flags); + die "$fname:$line: error in flags $flags\n" unless (defined($flagsindex)); + + @bytecode = (decodify($codes, $relax), 0); + push(@bytecode_list, [@bytecode]); + $codes = hexstr(@bytecode); + count_bytecodes(@bytecode); + + ("{I_$opcode, $num, {$operands}, $decorators, \@\@CODES-$codes\@\@, $flagsindex},", $nd); +} + +# +# Look for @@CODES-xxx@@ sequences and replace them with the appropriate +# offset into nasm_bytecodes +# +sub codesubst($) { + my($s) = @_; + my $n; + + while ($s =~ /\@\@CODES-([0-9A-F]+)\@\@/) { + my $pos = $bytecode_pos{$1}; + if (!defined($pos)) { + die "$fname:$line: no position assigned to byte code $1\n"; + } + $s = $` . "nasm_bytecodes+${pos}" . "$'"; + } + return $s; +} + +sub addprefix ($@) { + my ($prefix, @list) = @_; + my $x; + my @l = (); + + foreach $x (@list) { + push(@l, sprintf("%s%02X", $prefix, $x)); + } + + return @l; +} + +# +# Turn a code string into a sequence of bytes +# +sub decodify($$) { + # Although these are C-syntax strings, by convention they should have + # only octal escapes (for directives) and hexadecimal escapes + # (for verbatim bytes) + my($codestr, $relax) = @_; + + if ($codestr =~ /^\s*\[([^\]]*)\]\s*$/) { + return byte_code_compile($1, $relax); + } + + my $c = $codestr; + my @codes = (); + + unless ($codestr eq 'ignore') { + while ($c ne '') { + if ($c =~ /^\\x([0-9a-f]+)(.*)$/i) { + push(@codes, hex $1); + $c = $2; + next; + } elsif ($c =~ /^\\([0-7]{1,3})(.*)$/) { + push(@codes, oct $1); + $c = $2; + next; + } else { + die "$fname:$line: unknown code format in \"$codestr\"\n"; + } + } + } + + return @codes; +} + +# Turn a numeric list into a hex string +sub hexstr(@) { + my $s = ''; + my $c; + + foreach $c (@_) { + $s .= sprintf("%02X", $c); + } + return $s; +} + +# Here we determine the range of possible starting bytes for a given +# instruction. We need only consider the codes: +# \[1234] mean literal bytes, of course +# \1[0123] mean byte plus register value +# \0 or \340 mean give up and return empty set +# \34[4567] mean PUSH/POP of segment registers: special case +# \17[234] skip is4 control byte +# \26x \270 skip VEX control bytes +# \24x \250 skip EVEX control bytes +sub startseq($$) { + my ($codestr, $relax) = @_; + my $word; + my @codes = (); + my $c = $codestr; + my($c0, $c1, $i); + my $prefix = ''; + + @codes = decodify($codestr, $relax); + + while (defined($c0 = shift(@codes))) { + $c1 = $codes[0]; + if ($c0 >= 01 && $c0 <= 04) { + # Fixed byte string + my $fbs = $prefix; + while (defined($c0)) { + if ($c0 >= 01 && $c0 <= 04) { + while ($c0--) { + $fbs .= sprintf("%02X", shift(@codes)); + } + } else { + last; + } + $c0 = shift(@codes); + } + + foreach $pfx (@disasm_prefixes) { + my $len = length($pfx); + if (substr($fbs, 0, $len) eq $pfx) { + $prefix = $pfx; + $fbs = substr($fbs, $len, 2); + last; + } + } + + if ($fbs ne '') { + return ($prefix.$fbs); + } + + unshift(@codes, $c0); + } elsif ($c0 >= 010 && $c0 <= 013) { + return addprefix($prefix, $c1..($c1+7)); + } elsif (($c0 & ~013) == 0144) { + return addprefix($prefix, $c1, $c1|2); + } elsif ($c0 == 0 || $c0 == 0340) { + return $prefix; + } elsif (($c0 & ~3) == 0260 || $c0 == 0270 || + ($c0 & ~3) == 0240 || $c0 == 0250) { + my($c,$m,$wlp); + $m = shift(@codes); + $wlp = shift(@codes); + $c = ($m >> 6); + $m = $m & 31; + $prefix .= sprintf('%s%02X%01X', $vex_class[$c], $m, $wlp & 3); + if ($c0 < 0260) { + my $tuple = shift(@codes); + } + } elsif ($c0 >= 0172 && $c0 <= 173) { + shift(@codes); # Skip is4 control byte + } else { + # We really need to be able to distinguish "forbidden" + # and "ignorable" codes here + } + } + return (); +} + +# EVEX tuple types offset is 0300. e.g. 0301 is for full vector(fv). +sub tupletype($) { + my ($tuplestr) = @_; + my %tuple_codes = ( + '' => 000, + 'fv' => 001, + 'hv' => 002, + 'fvm' => 003, + 't1s8' => 004, + 't1s16' => 005, + 't1s' => 006, + 't1f32' => 007, + 't1f64' => 010, + 't2' => 011, + 't4' => 012, + 't8' => 013, + 'hvm' => 014, + 'qvm' => 015, + 'ovm' => 016, + 'm128' => 017, + 'dup' => 020, + ); + + if (defined $tuple_codes{$tuplestr}) { + return 0300 + $tuple_codes{$tuplestr}; + } else { + die "$fname:$line: undefined tuple type : $tuplestr\n"; + } +} + +# +# This function takes a series of byte codes in a format which is more +# typical of the Intel documentation, and encode it. +# +# The format looks like: +# +# [operands: opcodes] +# +# The operands word lists the order of the operands: +# +# r = register field in the modr/m +# m = modr/m +# v = VEX "v" field +# i = immediate +# s = register field of is4/imz2 field +# - = implicit (unencoded) operand +# x = indeX register of mib. 014..017 bytecodes are used. +# +# For an operand that should be filled into more than one field, +# enter it as e.g. "r+v". +# +sub byte_code_compile($$) { + my($str, $relax) = @_; + my $opr; + my $opc; + my @codes = (); + my $litix = undef; + my %oppos = (); + my $i; + my ($op, $oq); + my $opex; + + my %imm_codes = ( + 'ib' => 020, # imm8 + 'ib,u' => 024, # Unsigned imm8 + 'iw' => 030, # imm16 + 'ib,s' => 0274, # imm8 sign-extended to opsize or bits + 'iwd' => 034, # imm16 or imm32, depending on opsize + 'id' => 040, # imm32 + 'id,s' => 0254, # imm32 sign-extended to 64 bits + 'iwdq' => 044, # imm16/32/64, depending on addrsize + 'rel8' => 050, + 'iq' => 054, + 'rel16' => 060, + 'rel' => 064, # 16 or 32 bit relative operand + 'rel32' => 070, + 'seg' => 074, + ); + my %plain_codes = ( + 'o16' => 0320, # 16-bit operand size + 'o32' => 0321, # 32-bit operand size + 'odf' => 0322, # Operand size is default + 'o64' => 0324, # 64-bit operand size requiring REX.W + 'o64nw' => 0323, # Implied 64-bit operand size (no REX.W) + 'a16' => 0310, + 'a32' => 0311, + 'adf' => 0312, # Address size is default + 'a64' => 0313, + '!osp' => 0364, + '!asp' => 0365, + 'f2i' => 0332, # F2 prefix, but 66 for operand size is OK + 'f3i' => 0333, # F3 prefix, but 66 for operand size is OK + 'mustrep' => 0336, + 'mustrepne' => 0337, + 'rex.l' => 0334, + 'norexb' => 0314, + 'norexx' => 0315, + 'norexr' => 0316, + 'norexw' => 0317, + 'repe' => 0335, + 'nohi' => 0325, # Use spl/bpl/sil/dil even without REX + 'nof3' => 0326, # No REP 0xF3 prefix permitted + 'norep' => 0331, # No REP prefix permitted + 'wait' => 0341, # Needs a wait prefix + 'resb' => 0340, + 'np' => 0360, # No prefix + 'jcc8' => 0370, # Match only if Jcc possible with single byte + 'jmp8' => 0371, # Match only if JMP possible with single byte + 'jlen' => 0373, # Length of jump + 'hlexr' => 0271, + 'hlenl' => 0272, + 'hle' => 0273, + + # This instruction takes XMM VSIB + 'vsibx' => 0374, + 'vm32x' => 0374, + 'vm64x' => 0374, + + # This instruction takes YMM VSIB + 'vsiby' => 0375, + 'vm32y' => 0375, + 'vm64y' => 0375, + + # This instruction takes ZMM VSIB + 'vsibz' => 0376, + 'vm32z' => 0376, + 'vm64z' => 0376, + ); + + unless ($str =~ /^(([^\s:]*)\:*([^\s:]*)\:|)\s*(.*\S)\s*$/) { + die "$fname:$line: cannot parse: [$str]\n"; + } + $opr = lc($2); + $tuple = lc($3); # Tuple type for AVX512 + $opc = lc($4); + + $op = 0; + for ($i = 0; $i < length($opr); $i++) { + my $c = substr($opr,$i,1); + if ($c eq '+') { + $op--; + } else { + if ($relax & 1) { + $op--; + } + $relax >>= 1; + $oppos{$c} = $op++; + } + } + $tup = tupletype($tuple); + + my $last_imm = 'h'; + my $prefix_ok = 1; + foreach $op (split(/\s*(?:\s|(?=[\/\\]))/, $opc)) { + my $pc = $plain_codes{$op}; + + if (defined $pc) { + # Plain code + push(@codes, $pc); + } elsif ($prefix_ok && $op =~ /^(66|f2|f3)$/) { + # 66/F2/F3 prefix used as an opcode extension + if ($op eq '66') { + push(@codes, 0361); + } elsif ($op eq 'f2') { + push(@codes, 0332); + } else { + push(@codes, 0333); + } + } elsif ($op =~ /^[0-9a-f]{2}$/) { + if (defined($litix) && $litix+$codes[$litix]+1 == scalar @codes && + $codes[$litix] < 4) { + $codes[$litix]++; + push(@codes, hex $op); + } else { + $litix = scalar(@codes); + push(@codes, 01, hex $op); + } + $prefix_ok = 0; + } elsif ($op eq '/r') { + if (!defined($oppos{'r'}) || !defined($oppos{'m'})) { + die "$fname:$line: $op requires r and m operands\n"; + } + $opex = (($oppos{'m'} & 4) ? 06 : 0) | + (($oppos{'r'} & 4) ? 05 : 0); + push(@codes, $opex) if ($opex); + # if mib is composed with two separate operands - ICC style + push(@codes, 014 + ($oppos{'x'} & 3)) if (defined($oppos{'x'})); + push(@codes, 0100 + (($oppos{'m'} & 3) << 3) + ($oppos{'r'} & 3)); + $prefix_ok = 0; + } elsif ($op =~ m:^/([0-7])$:) { + if (!defined($oppos{'m'})) { + die "$fname:$line: $op requires an m operand\n"; + } + push(@codes, 06) if ($oppos{'m'} & 4); + push(@codes, 0200 + (($oppos{'m'} & 3) << 3) + $1); + $prefix_ok = 0; + } elsif ($op =~ m:^/([0-3]?)r([0-7])$:) { + if (!defined($oppos{'r'})) { + die "$fname:$line: $op requires an r operand\n"; + } + push(@codes, 05) if ($oppos{'r'} & 4); + push(@codes, 0171); + push(@codes, (($1+0) << 6) + (($oppos{'r'} & 3) << 3) + $2); + $prefix_ok = 0; + } elsif ($op =~ /^(vex|xop)(|\..*)$/) { + my $vexname = $1; + my $c = $vexmap{$vexname}; + my ($m,$w,$l,$p) = (undef,2,undef,0); + my $has_nds = 0; + my @subops = split(/\./, $op); + shift @subops; # Drop prefix + foreach $oq (@subops) { + if ($oq eq '128' || $oq eq 'l0' || $oq eq 'lz') { + $l = 0; + } elsif ($oq eq '256' || $oq eq 'l1') { + $l = 1; + } elsif ($oq eq 'lig') { + $l = 2; + } elsif ($oq eq 'w0') { + $w = 0; + } elsif ($oq eq 'w1') { + $w = 1; + } elsif ($oq eq 'wig') { + $w = 2; + } elsif ($oq eq 'ww') { + $w = 3; + } elsif ($oq eq 'np' || $oq eq 'p0') { + $p = 0; + } elsif ($oq eq '66' || $oq eq 'p1') { + $p = 1; + } elsif ($oq eq 'f3' || $oq eq 'p2') { + $p = 2; + } elsif ($oq eq 'f2' || $oq eq 'p3') { + $p = 3; + } elsif ($oq eq '0f') { + $m = 1; + } elsif ($oq eq '0f38') { + $m = 2; + } elsif ($oq eq '0f3a') { + $m = 3; + } elsif ($oq =~ /^(m|map)([0-9]+)$/) { + $m = $2+0; + } elsif ($oq eq 'nds' || $oq eq 'ndd' || $oq eq 'dds') { + if (!defined($oppos{'v'})) { + die "$fname:$line: $vexname.$oq without 'v' operand\n"; + } + $has_nds = 1; + } else { + die "$fname:$line: undefined \U$vexname\E subcode: $oq\n"; + } + } + if (!defined($m) || !defined($w) || !defined($l) || !defined($p)) { + die "$fname:$line: missing fields in \U$vexname\E specification\n"; + } + my $minmap = ($c == 1) ? 8 : 0; # 0-31 for VEX, 8-31 for XOP + if ($m < $minmap || $m > 31) { + die "$fname:$line: Only maps ${minmap}-31 are valid for \U${vexname}\n"; + } + push(@codes, defined($oppos{'v'}) ? 0260+($oppos{'v'} & 3) : 0270, + ($c << 6)+$m, ($w << 4)+($l << 2)+$p); + $prefix_ok = 0; + } elsif ($op =~ /^(evex)(|\..*)$/) { + my $c = $vexmap{$1}; + my ($m,$w,$l,$p) = (undef,2,undef,0); + my $has_nds = 0; + my @subops = split(/\./, $op); + shift @subops; # Drop prefix + foreach $oq (@subops) { + if ($oq eq '128' || $oq eq 'l0' || $oq eq 'lz' || $oq eq 'lig') { + $l = 0; + } elsif ($oq eq '256' || $oq eq 'l1') { + $l = 1; + } elsif ($oq eq '512' || $oq eq 'l2') { + $l = 2; + } elsif ($oq eq 'w0') { + $w = 0; + } elsif ($oq eq 'w1') { + $w = 1; + } elsif ($oq eq 'wig') { + $w = 2; + } elsif ($oq eq 'ww') { + $w = 3; + } elsif ($oq eq 'np' || $oq eq 'p0') { + $p = 0; + } elsif ($oq eq '66' || $oq eq 'p1') { + $p = 1; + } elsif ($oq eq 'f3' || $oq eq 'p2') { + $p = 2; + } elsif ($oq eq 'f2' || $oq eq 'p3') { + $p = 3; + } elsif ($oq eq '0f') { + $m = 1; + } elsif ($oq eq '0f38') { + $m = 2; + } elsif ($oq eq '0f3a') { + $m = 3; + } elsif ($oq eq 'map5') { + $m = 5; + } elsif ($oq eq 'map6') { + $m = 6; + } elsif ($oq =~ /^m([0-9]+)$/) { + $m = $1+0; + } elsif ($oq eq 'nds' || $oq eq 'ndd' || $oq eq 'dds') { + if (!defined($oppos{'v'})) { + die "$fname:$line: evex.$oq without 'v' operand\n"; + } + $has_nds = 1; + } else { + die "$fname:$line: undefined EVEX subcode: $oq\n"; + } + } + if (!defined($m) || !defined($w) || !defined($l) || !defined($p)) { + die "$fname:$line: missing fields in EVEX specification\n"; + } + if ($m > 15) { + die "$fname:$line: Only maps 0-15 are valid for EVEX\n"; + } + push(@codes, defined($oppos{'v'}) ? 0240+($oppos{'v'} & 3) : 0250, + ($c << 6)+$m, ($w << 4)+($l << 2)+$p, $tup); + $prefix_ok = 0; + } elsif (defined $imm_codes{$op}) { + if ($op eq 'seg') { + if ($last_imm lt 'i') { + die "$fname:$line: seg without an immediate operand\n"; + } + } else { + $last_imm++; + if ($last_imm gt 'j') { + die "$fname:$line: too many immediate operands\n"; + } + } + if (!defined($oppos{$last_imm})) { + die "$fname:$line: $op without '$last_imm' operand\n"; + } + push(@codes, 05) if ($oppos{$last_imm} & 4); + push(@codes, $imm_codes{$op} + ($oppos{$last_imm} & 3)); + $prefix_ok = 0; + } elsif ($op eq '/is4') { + if (!defined($oppos{'s'})) { + die "$fname:$line: $op without 's' operand\n"; + } + if (defined($oppos{'i'})) { + push(@codes, 0172, ($oppos{'s'} << 3)+$oppos{'i'}); + } else { + push(@codes, 05) if ($oppos{'s'} & 4); + push(@codes, 0174+($oppos{'s'} & 3)); + } + $prefix_ok = 0; + } elsif ($op =~ /^\/is4\=([0-9]+)$/) { + my $imm = $1; + if (!defined($oppos{'s'})) { + die "$fname:$line: $op without 's' operand\n"; + } + if ($imm < 0 || $imm > 15) { + die "$fname:$line: invalid imm4 value for $op: $imm\n"; + } + push(@codes, 0173, ($oppos{'s'} << 4) + $imm); + $prefix_ok = 0; + } elsif ($op =~ /^([0-9a-f]{2})\+r$/) { + if (!defined($oppos{'r'})) { + die "$fname:$line: $op without 'r' operand\n"; + } + push(@codes, 05) if ($oppos{'r'} & 4); + push(@codes, 010 + ($oppos{'r'} & 3), hex $1); + $prefix_ok = 0; + } elsif ($op =~ /^\\([0-7]+|x[0-9a-f]{2})$/) { + # Escape to enter literal bytecodes + push(@codes, oct $1); + } else { + die "$fname:$line: unknown operation: $op\n"; + } + } + + return @codes; +} diff --git a/vere/ext/nasm/x86/insnsa.c b/vere/ext/nasm/x86/insnsa.c new file mode 100644 index 0000000..668ac07 --- /dev/null +++ b/vere/ext/nasm/x86/insnsa.c @@ -0,0 +1,19532 @@ +/* This file auto-generated from insns.dat by insns.pl - don't edit it */ + +#include "nasm.h" +#include "insns.h" + +static const struct itemplate instrux_DB[] = { + ITEMPLATE_END +}; + +static const struct itemplate instrux_DW[] = { + ITEMPLATE_END +}; + +static const struct itemplate instrux_DD[] = { + ITEMPLATE_END +}; + +static const struct itemplate instrux_DQ[] = { + ITEMPLATE_END +}; + +static const struct itemplate instrux_DT[] = { + ITEMPLATE_END +}; + +static const struct itemplate instrux_DO[] = { + ITEMPLATE_END +}; + +static const struct itemplate instrux_DY[] = { + ITEMPLATE_END +}; + +static const struct itemplate instrux_DZ[] = { + ITEMPLATE_END +}; + +static const struct itemplate instrux_RESB[] = { + {I_RESB, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RESW[] = { + {I_RESW, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RESD[] = { + {I_RESD, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RESQ[] = { + {I_RESQ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_REST[] = { + {I_REST, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RESO[] = { + {I_RESO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RESY[] = { + {I_RESY, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RESZ[] = { + {I_RESZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INCBIN[] = { + ITEMPLATE_END +}; + +static const struct itemplate instrux_AAA[] = { + {I_AAA, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50187, 1}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AAD[] = { + {I_AAD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49187, 1}, + {I_AAD, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49191, 2}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AAM[] = { + {I_AAM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49195, 1}, + {I_AAM, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49199, 2}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AAS[] = { + {I_AAS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50190, 1}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ADC[] = { + {I_ADC, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47247, 3}, + {I_ADC, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47248, 0}, + {I_ADC, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42741, 3}, + {I_ADC, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42742, 0}, + {I_ADC, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42747, 4}, + {I_ADC, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42748, 5}, + {I_ADC, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42753, 6}, + {I_ADC, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42754, 7}, + {I_ADC, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+36381, 8}, + {I_ADC, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+36381, 0}, + {I_ADC, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47252, 8}, + {I_ADC, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+47252, 0}, + {I_ADC, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47257, 9}, + {I_ADC, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+47257, 5}, + {I_ADC, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47262, 10}, + {I_ADC, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+47262, 7}, + {I_ADC, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32864, 11}, + {I_ADC, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32871, 12}, + {I_ADC, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32878, 13}, + {I_ADC, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49203, 8}, + {I_ADC, 2, {REG_AX,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32865, 8}, + {I_ADC, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47267, 8}, + {I_ADC, 2, {REG_EAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32872, 9}, + {I_ADC, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47272, 9}, + {I_ADC, 2, {REG_RAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32879, 10}, + {I_ADC, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47277, 10}, + {I_ADC, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42759, 3}, + {I_ADC, 2, {RM_GPR|BITS16,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32864, 3}, + {I_ADC, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32885, 3}, + {I_ADC, 2, {RM_GPR|BITS32,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32871, 4}, + {I_ADC, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32892, 4}, + {I_ADC, 2, {RM_GPR|BITS64,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32878, 6}, + {I_ADC, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32899, 6}, + {I_ADC, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42759, 3}, + {I_ADC, 2, {MEMORY,SBYTEWORD|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+32864, 3}, + {I_ADC, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+32885, 3}, + {I_ADC, 2, {MEMORY,SBYTEDWORD|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32871, 4}, + {I_ADC, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32892, 4}, + {I_ADC, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42765, 14}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ADD[] = { + {I_ADD, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47282, 3}, + {I_ADD, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47283, 0}, + {I_ADD, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42771, 3}, + {I_ADD, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42772, 0}, + {I_ADD, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42777, 4}, + {I_ADD, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42778, 5}, + {I_ADD, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42783, 6}, + {I_ADD, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42784, 7}, + {I_ADD, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+40154, 8}, + {I_ADD, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+40154, 0}, + {I_ADD, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47287, 8}, + {I_ADD, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+47287, 0}, + {I_ADD, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47292, 9}, + {I_ADD, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+47292, 5}, + {I_ADD, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47297, 10}, + {I_ADD, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+47297, 7}, + {I_ADD, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32906, 11}, + {I_ADD, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32913, 12}, + {I_ADD, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32920, 13}, + {I_ADD, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49207, 8}, + {I_ADD, 2, {REG_AX,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32907, 8}, + {I_ADD, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47302, 8}, + {I_ADD, 2, {REG_EAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32914, 9}, + {I_ADD, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47307, 9}, + {I_ADD, 2, {REG_RAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32921, 10}, + {I_ADD, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47312, 10}, + {I_ADD, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42789, 3}, + {I_ADD, 2, {RM_GPR|BITS16,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32906, 3}, + {I_ADD, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32927, 3}, + {I_ADD, 2, {RM_GPR|BITS32,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32913, 4}, + {I_ADD, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32934, 4}, + {I_ADD, 2, {RM_GPR|BITS64,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32920, 6}, + {I_ADD, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32941, 6}, + {I_ADD, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42789, 3}, + {I_ADD, 2, {MEMORY,SBYTEWORD|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+32906, 3}, + {I_ADD, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+32927, 3}, + {I_ADD, 2, {MEMORY,SBYTEDWORD|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32913, 4}, + {I_ADD, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32934, 4}, + {I_ADD, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42795, 14}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AND[] = { + {I_AND, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47317, 3}, + {I_AND, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47318, 0}, + {I_AND, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42801, 3}, + {I_AND, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42802, 0}, + {I_AND, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42807, 4}, + {I_AND, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42808, 5}, + {I_AND, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42813, 6}, + {I_AND, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42814, 7}, + {I_AND, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+40434, 8}, + {I_AND, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+40434, 0}, + {I_AND, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47322, 8}, + {I_AND, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+47322, 0}, + {I_AND, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47327, 9}, + {I_AND, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+47327, 5}, + {I_AND, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47332, 10}, + {I_AND, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+47332, 7}, + {I_AND, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32948, 11}, + {I_AND, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32955, 12}, + {I_AND, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32962, 13}, + {I_AND, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49211, 8}, + {I_AND, 2, {REG_AX,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32949, 8}, + {I_AND, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47337, 8}, + {I_AND, 2, {REG_EAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32956, 9}, + {I_AND, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47342, 9}, + {I_AND, 2, {REG_RAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32963, 10}, + {I_AND, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47347, 10}, + {I_AND, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42819, 3}, + {I_AND, 2, {RM_GPR|BITS16,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32948, 3}, + {I_AND, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32969, 3}, + {I_AND, 2, {RM_GPR|BITS32,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32955, 4}, + {I_AND, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32976, 4}, + {I_AND, 2, {RM_GPR|BITS64,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+32962, 6}, + {I_AND, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32983, 6}, + {I_AND, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42819, 3}, + {I_AND, 2, {MEMORY,SBYTEWORD|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+32948, 3}, + {I_AND, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+32969, 3}, + {I_AND, 2, {MEMORY,SBYTEDWORD|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32955, 4}, + {I_AND, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32976, 4}, + {I_AND, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42825, 14}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ARPL[] = { + {I_ARPL, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+29252, 15}, + {I_ARPL, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+29252, 16}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BB0_RESET[] = { + {I_BB0_RESET, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49215, 17}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BB1_RESET[] = { + {I_BB1_RESET, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49219, 17}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BOUND[] = { + {I_BOUND, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47352, 18}, + {I_BOUND, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47357, 19}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BSF[] = { + {I_BSF, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+32990, 9}, + {I_BSF, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+32990, 5}, + {I_BSF, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+32997, 9}, + {I_BSF, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32997, 5}, + {I_BSF, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33004, 10}, + {I_BSF, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33004, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BSR[] = { + {I_BSR, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33011, 9}, + {I_BSR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33011, 5}, + {I_BSR, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33018, 9}, + {I_BSR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33018, 5}, + {I_BSR, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33025, 10}, + {I_BSR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33025, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BSWAP[] = { + {I_BSWAP, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42831, 20}, + {I_BSWAP, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42837, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BT[] = { + {I_BT, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42843, 9}, + {I_BT, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42843, 5}, + {I_BT, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42849, 9}, + {I_BT, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42849, 5}, + {I_BT, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42855, 10}, + {I_BT, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42855, 7}, + {I_BT, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33032, 5}, + {I_BT, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33039, 5}, + {I_BT, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33046, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BTC[] = { + {I_BTC, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33053, 4}, + {I_BTC, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33054, 5}, + {I_BTC, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33060, 4}, + {I_BTC, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33061, 5}, + {I_BTC, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33067, 6}, + {I_BTC, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33068, 7}, + {I_BTC, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12304, 12}, + {I_BTC, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12312, 12}, + {I_BTC, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12320, 13}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BTR[] = { + {I_BTR, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33074, 4}, + {I_BTR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33075, 5}, + {I_BTR, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33081, 4}, + {I_BTR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33082, 5}, + {I_BTR, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33088, 6}, + {I_BTR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33089, 7}, + {I_BTR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12328, 12}, + {I_BTR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12336, 12}, + {I_BTR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12344, 13}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BTS[] = { + {I_BTS, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33095, 4}, + {I_BTS, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33096, 5}, + {I_BTS, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33102, 4}, + {I_BTS, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33103, 5}, + {I_BTS, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33109, 6}, + {I_BTS, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33110, 7}, + {I_BTS, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12352, 12}, + {I_BTS, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12360, 12}, + {I_BTS, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12368, 13}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CALL[] = { + {I_CALL, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47362, 21}, + {I_CALL, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47362, 21}, + {I_CALL, 1, {IMMEDIATE|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42861, 1}, + {I_CALL, 1, {IMMEDIATE|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47367, 22}, + {I_CALL, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47367, 22}, + {I_CALL, 1, {IMMEDIATE|BITS16|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42867, 1}, + {I_CALL, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47372, 23}, + {I_CALL, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47372, 23}, + {I_CALL, 1, {IMMEDIATE|BITS32|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42873, 19}, + {I_CALL, 1, {IMMEDIATE|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47377, 24}, + {I_CALL, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47377, 24}, + {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42879, 1}, + {I_CALL, 2, {IMMEDIATE|BITS16|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42885, 1}, + {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42885, 1}, + {I_CALL, 2, {IMMEDIATE|BITS32|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42891, 19}, + {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42891, 19}, + {I_CALL, 1, {MEMORY|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47382, 1}, + {I_CALL, 1, {MEMORY|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47387, 7}, + {I_CALL, 1, {MEMORY|BITS16|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47392, 0}, + {I_CALL, 1, {MEMORY|BITS32|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47397, 5}, + {I_CALL, 1, {MEMORY|BITS64|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47387, 7}, + {I_CALL, 1, {MEMORY|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47402, 21}, + {I_CALL, 1, {RM_GPR|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47407, 22}, + {I_CALL, 1, {RM_GPR|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47412, 23}, + {I_CALL, 1, {RM_GPR|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47417, 24}, + {I_CALL, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47402, 21}, + {I_CALL, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47407, 22}, + {I_CALL, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47412, 23}, + {I_CALL, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47417, 24}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CBW[] = { + {I_CBW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49223, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CDQ[] = { + {I_CDQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49227, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CDQE[] = { + {I_CDQE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49231, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLC[] = { + {I_CLC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48819, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLD[] = { + {I_CLD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45984, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLI[] = { + {I_CLI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48134, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLTS[] = { + {I_CLTS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49235, 25}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMC[] = { + {I_CMC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50193, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMP[] = { + {I_CMP, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+49239, 8}, + {I_CMP, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+49239, 0}, + {I_CMP, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+47422, 8}, + {I_CMP, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+47422, 0}, + {I_CMP, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+47427, 9}, + {I_CMP, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+47427, 5}, + {I_CMP, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+47432, 10}, + {I_CMP, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+47432, 7}, + {I_CMP, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+40392, 8}, + {I_CMP, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+40392, 0}, + {I_CMP, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47437, 8}, + {I_CMP, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+47437, 0}, + {I_CMP, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47442, 9}, + {I_CMP, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+47442, 5}, + {I_CMP, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47447, 10}, + {I_CMP, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+47447, 7}, + {I_CMP, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42897, 0}, + {I_CMP, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42903, 5}, + {I_CMP, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42909, 7}, + {I_CMP, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49243, 8}, + {I_CMP, 2, {REG_AX,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+42897, 8}, + {I_CMP, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47452, 8}, + {I_CMP, 2, {REG_EAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+42903, 9}, + {I_CMP, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47457, 9}, + {I_CMP, 2, {REG_RAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+42909, 10}, + {I_CMP, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47462, 10}, + {I_CMP, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47467, 8}, + {I_CMP, 2, {RM_GPR|BITS16,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+42897, 8}, + {I_CMP, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42915, 8}, + {I_CMP, 2, {RM_GPR|BITS32,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+42903, 9}, + {I_CMP, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42921, 9}, + {I_CMP, 2, {RM_GPR|BITS64,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+42909, 10}, + {I_CMP, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42927, 10}, + {I_CMP, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47467, 8}, + {I_CMP, 2, {MEMORY,SBYTEWORD|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42897, 8}, + {I_CMP, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42915, 8}, + {I_CMP, 2, {MEMORY,SBYTEDWORD|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42903, 9}, + {I_CMP, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42921, 9}, + {I_CMP, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47472, 26}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPSB[] = { + {I_CMPSB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49247, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPSD[] = { + {I_CMPSD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47477, 5}, + {I_CMPSD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+34292, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPSQ[] = { + {I_CMPSQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47482, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPSW[] = { + {I_CMPSW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47487, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPXCHG[] = { + {I_CMPXCHG, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42933, 27}, + {I_CMPXCHG, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42934, 28}, + {I_CMPXCHG, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33116, 27}, + {I_CMPXCHG, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33117, 28}, + {I_CMPXCHG, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33123, 27}, + {I_CMPXCHG, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33124, 28}, + {I_CMPXCHG, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33130, 6}, + {I_CMPXCHG, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33131, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPXCHG486[] = { + {I_CMPXCHG486, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47492, 29}, + {I_CMPXCHG486, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47492, 30}, + {I_CMPXCHG486, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42939, 29}, + {I_CMPXCHG486, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42939, 30}, + {I_CMPXCHG486, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42945, 29}, + {I_CMPXCHG486, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42945, 30}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPXCHG8B[] = { + {I_CMPXCHG8B, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33137, 31}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPXCHG16B[] = { + {I_CMPXCHG16B, 1, {MEMORY|BITS128,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42951, 13}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CPUID[] = { + {I_CPUID, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49251, 28}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CPU_READ[] = { + {I_CPU_READ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49255, 32}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CPU_WRITE[] = { + {I_CPU_WRITE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49259, 32}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CQO[] = { + {I_CQO, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49263, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CWD[] = { + {I_CWD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49267, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CWDE[] = { + {I_CWDE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49271, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_DAA[] = { + {I_DAA, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50196, 1}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_DAS[] = { + {I_DAS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50199, 1}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_DEC[] = { + {I_DEC, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49275, 1}, + {I_DEC, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49279, 19}, + {I_DEC, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47497, 11}, + {I_DEC, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42957, 11}, + {I_DEC, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42963, 12}, + {I_DEC, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42969, 13}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_DIV[] = { + {I_DIV, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49283, 0}, + {I_DIV, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47502, 0}, + {I_DIV, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47507, 5}, + {I_DIV, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47512, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_DMINT[] = { + {I_DMINT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49287, 33}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_EMMS[] = { + {I_EMMS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49291, 34}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ENTER[] = { + {I_ENTER, 2, {IMMEDIATE,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47517, 35}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_EQU[] = { + {I_EQU, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50228, 0}, + {I_EQU, 2, {IMMEDIATE|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+50228, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_F2XM1[] = { + {I_F2XM1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49295, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FABS[] = { + {I_FABS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49299, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FADD[] = { + {I_FADD, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49303, 36}, + {I_FADD, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49307, 36}, + {I_FADD, 1, {FPUREG|TO,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47522, 36}, + {I_FADD, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47527, 36}, + {I_FADD, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47522, 36}, + {I_FADD, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47532, 36}, + {I_FADD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49311, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FADDP[] = { + {I_FADDP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47537, 36}, + {I_FADDP, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47537, 36}, + {I_FADDP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49311, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FBLD[] = { + {I_FBLD, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49315, 36}, + {I_FBLD, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49315, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FBSTP[] = { + {I_FBSTP, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49319, 36}, + {I_FBSTP, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49319, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCHS[] = { + {I_FCHS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49323, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCLEX[] = { + {I_FCLEX, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47542, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCMOVB[] = { + {I_FCMOVB, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47547, 37}, + {I_FCMOVB, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47552, 37}, + {I_FCMOVB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49327, 37}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCMOVBE[] = { + {I_FCMOVBE, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47557, 37}, + {I_FCMOVBE, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47562, 37}, + {I_FCMOVBE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49331, 37}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCMOVE[] = { + {I_FCMOVE, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47567, 37}, + {I_FCMOVE, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47572, 37}, + {I_FCMOVE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49335, 37}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCMOVNB[] = { + {I_FCMOVNB, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47577, 37}, + {I_FCMOVNB, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47582, 37}, + {I_FCMOVNB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49339, 37}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCMOVNBE[] = { + {I_FCMOVNBE, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47587, 37}, + {I_FCMOVNBE, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47592, 37}, + {I_FCMOVNBE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49343, 37}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCMOVNE[] = { + {I_FCMOVNE, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47597, 37}, + {I_FCMOVNE, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47602, 37}, + {I_FCMOVNE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49347, 37}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCMOVNU[] = { + {I_FCMOVNU, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47607, 37}, + {I_FCMOVNU, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47612, 37}, + {I_FCMOVNU, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49351, 37}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCMOVU[] = { + {I_FCMOVU, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47617, 37}, + {I_FCMOVU, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47622, 37}, + {I_FCMOVU, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49355, 37}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCOM[] = { + {I_FCOM, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49359, 36}, + {I_FCOM, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49363, 36}, + {I_FCOM, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47627, 36}, + {I_FCOM, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47632, 36}, + {I_FCOM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49367, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCOMI[] = { + {I_FCOMI, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47637, 37}, + {I_FCOMI, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47642, 37}, + {I_FCOMI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49371, 37}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCOMIP[] = { + {I_FCOMIP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47647, 37}, + {I_FCOMIP, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47652, 37}, + {I_FCOMIP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49375, 37}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCOMP[] = { + {I_FCOMP, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49379, 36}, + {I_FCOMP, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49383, 36}, + {I_FCOMP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47657, 36}, + {I_FCOMP, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47662, 36}, + {I_FCOMP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49387, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCOMPP[] = { + {I_FCOMPP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49391, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FCOS[] = { + {I_FCOS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49395, 38}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FDECSTP[] = { + {I_FDECSTP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49399, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FDISI[] = { + {I_FDISI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47667, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FDIV[] = { + {I_FDIV, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49403, 36}, + {I_FDIV, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49407, 36}, + {I_FDIV, 1, {FPUREG|TO,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47672, 36}, + {I_FDIV, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47677, 36}, + {I_FDIV, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47672, 36}, + {I_FDIV, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47682, 36}, + {I_FDIV, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49411, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FDIVP[] = { + {I_FDIVP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47687, 36}, + {I_FDIVP, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47687, 36}, + {I_FDIVP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49411, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FDIVR[] = { + {I_FDIVR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49415, 36}, + {I_FDIVR, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49419, 36}, + {I_FDIVR, 1, {FPUREG|TO,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47692, 36}, + {I_FDIVR, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47692, 36}, + {I_FDIVR, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47697, 36}, + {I_FDIVR, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47702, 36}, + {I_FDIVR, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49423, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FDIVRP[] = { + {I_FDIVRP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47707, 36}, + {I_FDIVRP, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47707, 36}, + {I_FDIVRP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49423, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FEMMS[] = { + {I_FEMMS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49427, 39}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FENI[] = { + {I_FENI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47712, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FFREE[] = { + {I_FFREE, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47717, 36}, + {I_FFREE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49431, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FFREEP[] = { + {I_FFREEP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47722, 40}, + {I_FFREEP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49435, 40}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FIADD[] = { + {I_FIADD, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49439, 36}, + {I_FIADD, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49443, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FICOM[] = { + {I_FICOM, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49447, 36}, + {I_FICOM, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49451, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FICOMP[] = { + {I_FICOMP, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49455, 36}, + {I_FICOMP, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49459, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FIDIV[] = { + {I_FIDIV, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49463, 36}, + {I_FIDIV, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49467, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FIDIVR[] = { + {I_FIDIVR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49471, 36}, + {I_FIDIVR, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49475, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FILD[] = { + {I_FILD, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49479, 36}, + {I_FILD, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49483, 36}, + {I_FILD, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49487, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FIMUL[] = { + {I_FIMUL, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49491, 36}, + {I_FIMUL, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49495, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FINCSTP[] = { + {I_FINCSTP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49499, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FINIT[] = { + {I_FINIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47727, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FIST[] = { + {I_FIST, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49503, 36}, + {I_FIST, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49507, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FISTP[] = { + {I_FISTP, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49511, 36}, + {I_FISTP, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49515, 36}, + {I_FISTP, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49519, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FISTTP[] = { + {I_FISTTP, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49523, 41}, + {I_FISTTP, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49527, 41}, + {I_FISTTP, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49531, 41}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FISUB[] = { + {I_FISUB, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49535, 36}, + {I_FISUB, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49539, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FISUBR[] = { + {I_FISUBR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49543, 36}, + {I_FISUBR, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49547, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FLD[] = { + {I_FLD, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49551, 36}, + {I_FLD, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49555, 36}, + {I_FLD, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49559, 36}, + {I_FLD, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47732, 36}, + {I_FLD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49563, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FLD1[] = { + {I_FLD1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49567, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FLDCW[] = { + {I_FLDCW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49571, 42}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FLDENV[] = { + {I_FLDENV, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49575, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FLDL2E[] = { + {I_FLDL2E, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49579, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FLDL2T[] = { + {I_FLDL2T, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49583, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FLDLG2[] = { + {I_FLDLG2, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49587, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FLDLN2[] = { + {I_FLDLN2, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49591, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FLDPI[] = { + {I_FLDPI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49595, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FLDZ[] = { + {I_FLDZ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49599, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FMUL[] = { + {I_FMUL, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49603, 36}, + {I_FMUL, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49607, 36}, + {I_FMUL, 1, {FPUREG|TO,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47737, 36}, + {I_FMUL, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47737, 36}, + {I_FMUL, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47742, 36}, + {I_FMUL, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47747, 36}, + {I_FMUL, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49611, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FMULP[] = { + {I_FMULP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47752, 36}, + {I_FMULP, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47752, 36}, + {I_FMULP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49611, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FNCLEX[] = { + {I_FNCLEX, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47543, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FNDISI[] = { + {I_FNDISI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47668, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FNENI[] = { + {I_FNENI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47713, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FNINIT[] = { + {I_FNINIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47728, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FNOP[] = { + {I_FNOP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49615, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FNSAVE[] = { + {I_FNSAVE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47758, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FNSTCW[] = { + {I_FNSTCW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47768, 42}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FNSTENV[] = { + {I_FNSTENV, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47773, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FNSTSW[] = { + {I_FNSTSW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47783, 42}, + {I_FNSTSW, 1, {REG_AX,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47788, 43}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FPATAN[] = { + {I_FPATAN, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49619, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FPREM[] = { + {I_FPREM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49623, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FPREM1[] = { + {I_FPREM1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49627, 38}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FPTAN[] = { + {I_FPTAN, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49631, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FRNDINT[] = { + {I_FRNDINT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49635, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FRSTOR[] = { + {I_FRSTOR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49639, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSAVE[] = { + {I_FSAVE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47757, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSCALE[] = { + {I_FSCALE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49643, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSETPM[] = { + {I_FSETPM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49647, 43}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSIN[] = { + {I_FSIN, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49651, 38}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSINCOS[] = { + {I_FSINCOS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49655, 38}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSQRT[] = { + {I_FSQRT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49659, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FST[] = { + {I_FST, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49663, 36}, + {I_FST, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49667, 36}, + {I_FST, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47762, 36}, + {I_FST, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49671, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSTCW[] = { + {I_FSTCW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47767, 42}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSTENV[] = { + {I_FSTENV, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47772, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSTP[] = { + {I_FSTP, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49675, 36}, + {I_FSTP, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49679, 36}, + {I_FSTP, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49683, 36}, + {I_FSTP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47777, 36}, + {I_FSTP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49687, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSTSW[] = { + {I_FSTSW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47782, 42}, + {I_FSTSW, 1, {REG_AX,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47787, 43}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSUB[] = { + {I_FSUB, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49691, 36}, + {I_FSUB, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49695, 36}, + {I_FSUB, 1, {FPUREG|TO,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47792, 36}, + {I_FSUB, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47792, 36}, + {I_FSUB, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47797, 36}, + {I_FSUB, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47802, 36}, + {I_FSUB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49699, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSUBP[] = { + {I_FSUBP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47807, 36}, + {I_FSUBP, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47807, 36}, + {I_FSUBP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49699, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSUBR[] = { + {I_FSUBR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49703, 36}, + {I_FSUBR, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49707, 36}, + {I_FSUBR, 1, {FPUREG|TO,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47812, 36}, + {I_FSUBR, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47812, 36}, + {I_FSUBR, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47817, 36}, + {I_FSUBR, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47822, 36}, + {I_FSUBR, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49711, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FSUBRP[] = { + {I_FSUBRP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47827, 36}, + {I_FSUBRP, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47827, 36}, + {I_FSUBRP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49711, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FTST[] = { + {I_FTST, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49715, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FUCOM[] = { + {I_FUCOM, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47832, 38}, + {I_FUCOM, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47837, 38}, + {I_FUCOM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49719, 38}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FUCOMI[] = { + {I_FUCOMI, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47842, 37}, + {I_FUCOMI, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47847, 37}, + {I_FUCOMI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49723, 37}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FUCOMIP[] = { + {I_FUCOMIP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47852, 37}, + {I_FUCOMIP, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47857, 37}, + {I_FUCOMIP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49727, 37}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FUCOMP[] = { + {I_FUCOMP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47862, 38}, + {I_FUCOMP, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47867, 38}, + {I_FUCOMP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49731, 38}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FUCOMPP[] = { + {I_FUCOMPP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49735, 38}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FXAM[] = { + {I_FXAM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49739, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FXCH[] = { + {I_FXCH, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47872, 36}, + {I_FXCH, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47872, 36}, + {I_FXCH, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47877, 36}, + {I_FXCH, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49743, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FXTRACT[] = { + {I_FXTRACT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49747, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FYL2X[] = { + {I_FYL2X, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49751, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FYL2XP1[] = { + {I_FYL2XP1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49755, 36}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HLT[] = { + {I_HLT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50202, 44}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_IBTS[] = { + {I_IBTS, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42939, 45}, + {I_IBTS, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42939, 46}, + {I_IBTS, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42945, 47}, + {I_IBTS, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42945, 46}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ICEBP[] = { + {I_ICEBP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50205, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_IDIV[] = { + {I_IDIV, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49759, 0}, + {I_IDIV, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47882, 0}, + {I_IDIV, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47887, 5}, + {I_IDIV, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47892, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_IMUL[] = { + {I_IMUL, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49763, 0}, + {I_IMUL, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47897, 0}, + {I_IMUL, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47902, 5}, + {I_IMUL, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47907, 7}, + {I_IMUL, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+42975, 9}, + {I_IMUL, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42975, 5}, + {I_IMUL, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+42981, 9}, + {I_IMUL, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42981, 5}, + {I_IMUL, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+42987, 10}, + {I_IMUL, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42987, 7}, + {I_IMUL, 3, {REG_GPR|BITS16,MEMORY,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+42993, 48}, + {I_IMUL, 3, {REG_GPR|BITS16,MEMORY,SBYTEWORD,0,0}, NO_DECORATOR, nasm_bytecodes+42993, 49}, + {I_IMUL, 3, {REG_GPR|BITS16,MEMORY,IMMEDIATE|BITS16,0,0}, NO_DECORATOR, nasm_bytecodes+42999, 49}, + {I_IMUL, 3, {REG_GPR|BITS16,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+42999, 49}, + {I_IMUL, 3, {REG_GPR|BITS16,REG_GPR|BITS16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+42993, 35}, + {I_IMUL, 3, {REG_GPR|BITS16,REG_GPR|BITS16,SBYTEWORD,0,0}, NO_DECORATOR, nasm_bytecodes+42993, 49}, + {I_IMUL, 3, {REG_GPR|BITS16,REG_GPR|BITS16,IMMEDIATE|BITS16,0,0}, NO_DECORATOR, nasm_bytecodes+42999, 35}, + {I_IMUL, 3, {REG_GPR|BITS16,REG_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+42999, 49}, + {I_IMUL, 3, {REG_GPR|BITS32,MEMORY,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+43005, 50}, + {I_IMUL, 3, {REG_GPR|BITS32,MEMORY,SBYTEDWORD,0,0}, NO_DECORATOR, nasm_bytecodes+43005, 9}, + {I_IMUL, 3, {REG_GPR|BITS32,MEMORY,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+43011, 9}, + {I_IMUL, 3, {REG_GPR|BITS32,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+43011, 9}, + {I_IMUL, 3, {REG_GPR|BITS32,REG_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+43005, 5}, + {I_IMUL, 3, {REG_GPR|BITS32,REG_GPR|BITS32,SBYTEDWORD,0,0}, NO_DECORATOR, nasm_bytecodes+43005, 9}, + {I_IMUL, 3, {REG_GPR|BITS32,REG_GPR|BITS32,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+43011, 5}, + {I_IMUL, 3, {REG_GPR|BITS32,REG_GPR|BITS32,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+43011, 9}, + {I_IMUL, 3, {REG_GPR|BITS64,MEMORY,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+43017, 51}, + {I_IMUL, 3, {REG_GPR|BITS64,MEMORY,SBYTEDWORD,0,0}, NO_DECORATOR, nasm_bytecodes+43017, 10}, + {I_IMUL, 3, {REG_GPR|BITS64,MEMORY,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+43023, 51}, + {I_IMUL, 3, {REG_GPR|BITS64,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+43029, 10}, + {I_IMUL, 3, {REG_GPR|BITS64,REG_GPR|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+43017, 7}, + {I_IMUL, 3, {REG_GPR|BITS64,REG_GPR|BITS64,SBYTEDWORD,0,0}, NO_DECORATOR, nasm_bytecodes+43017, 10}, + {I_IMUL, 3, {REG_GPR|BITS64,REG_GPR|BITS64,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+43023, 7}, + {I_IMUL, 3, {REG_GPR|BITS64,REG_GPR|BITS64,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+43029, 10}, + {I_IMUL, 2, {REG_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43035, 35}, + {I_IMUL, 2, {REG_GPR|BITS16,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+43035, 49}, + {I_IMUL, 2, {REG_GPR|BITS16,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43041, 35}, + {I_IMUL, 2, {REG_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43041, 49}, + {I_IMUL, 2, {REG_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43047, 5}, + {I_IMUL, 2, {REG_GPR|BITS32,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+43047, 9}, + {I_IMUL, 2, {REG_GPR|BITS32,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43053, 5}, + {I_IMUL, 2, {REG_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43053, 9}, + {I_IMUL, 2, {REG_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43059, 7}, + {I_IMUL, 2, {REG_GPR|BITS64,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+43059, 10}, + {I_IMUL, 2, {REG_GPR|BITS64,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43065, 7}, + {I_IMUL, 2, {REG_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43065, 10}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_IN[] = { + {I_IN, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49767, 52}, + {I_IN, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47912, 52}, + {I_IN, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47917, 53}, + {I_IN, 2, {REG_AL,REG_DX,0,0,0}, NO_DECORATOR, nasm_bytecodes+46092, 0}, + {I_IN, 2, {REG_AX,REG_DX,0,0,0}, NO_DECORATOR, nasm_bytecodes+49771, 0}, + {I_IN, 2, {REG_EAX,REG_DX,0,0,0}, NO_DECORATOR, nasm_bytecodes+49775, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INC[] = { + {I_INC, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49779, 1}, + {I_INC, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49783, 19}, + {I_INC, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47922, 11}, + {I_INC, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43071, 11}, + {I_INC, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43077, 12}, + {I_INC, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43083, 13}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INSB[] = { + {I_INSB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50208, 35}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INSD[] = { + {I_INSD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49787, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INSW[] = { + {I_INSW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49791, 35}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INT[] = { + {I_INT, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49795, 52}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INT01[] = { + {I_INT01, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50205, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INT1[] = { + {I_INT1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50205, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INT03[] = { + {I_INT03, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50211, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INT3[] = { + {I_INT3, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50211, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INTO[] = { + {I_INTO, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50214, 1}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INVD[] = { + {I_INVD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49799, 54}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INVPCID[] = { + {I_INVPCID, 2, {REG_GPR|BITS32,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+33144, 55}, + {I_INVPCID, 2, {REG_GPR|BITS64,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+33144, 56}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INVLPG[] = { + {I_INVLPG, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47927, 54}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INVLPGA[] = { + {I_INVLPGA, 2, {REG_AX,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43089, 57}, + {I_INVLPGA, 2, {REG_EAX,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43095, 58}, + {I_INVLPGA, 2, {REG_RAX,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33151, 59}, + {I_INVLPGA, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43096, 58}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_IRET[] = { + {I_IRET, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49803, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_IRETD[] = { + {I_IRETD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49807, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_IRETQ[] = { + {I_IRETQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49811, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_IRETW[] = { + {I_IRETW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49815, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JCXZ[] = { + {I_JCXZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47932, 1}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JECXZ[] = { + {I_JECXZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47937, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JRCXZ[] = { + {I_JRCXZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43101, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JMP[] = { + {I_JMP, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47943, 0}, + {I_JMP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47942, 0}, + {I_JMP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47947, 21}, + {I_JMP, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47947, 21}, + {I_JMP, 1, {IMMEDIATE|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43107, 1}, + {I_JMP, 1, {IMMEDIATE|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47952, 22}, + {I_JMP, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47952, 22}, + {I_JMP, 1, {IMMEDIATE|BITS16|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43113, 1}, + {I_JMP, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47957, 23}, + {I_JMP, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47957, 23}, + {I_JMP, 1, {IMMEDIATE|BITS32|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43119, 19}, + {I_JMP, 1, {IMMEDIATE|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47962, 24}, + {I_JMP, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47962, 24}, + {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43125, 1}, + {I_JMP, 2, {IMMEDIATE|BITS16|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43131, 1}, + {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43131, 1}, + {I_JMP, 2, {IMMEDIATE|BITS32|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43137, 19}, + {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43137, 19}, + {I_JMP, 1, {MEMORY|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47967, 1}, + {I_JMP, 1, {MEMORY|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47972, 7}, + {I_JMP, 1, {MEMORY|BITS16|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47977, 0}, + {I_JMP, 1, {MEMORY|BITS32|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47982, 5}, + {I_JMP, 1, {MEMORY|BITS64|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47972, 7}, + {I_JMP, 1, {MEMORY|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47987, 21}, + {I_JMP, 1, {RM_GPR|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47992, 22}, + {I_JMP, 1, {RM_GPR|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47997, 23}, + {I_JMP, 1, {RM_GPR|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48002, 24}, + {I_JMP, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47987, 21}, + {I_JMP, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47992, 22}, + {I_JMP, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47997, 23}, + {I_JMP, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48002, 24}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JMPE[] = { + {I_JMPE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43143, 60}, + {I_JMPE, 1, {IMMEDIATE|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43149, 60}, + {I_JMPE, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43155, 60}, + {I_JMPE, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43161, 60}, + {I_JMPE, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43167, 60}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LAHF[] = { + {I_LAHF, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50217, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LAR[] = { + {I_LAR, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43173, 61}, + {I_LAR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43173, 62}, + {I_LAR, 2, {REG_GPR|BITS16,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43173, 63}, + {I_LAR, 2, {REG_GPR|BITS16,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33158, 64}, + {I_LAR, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43179, 65}, + {I_LAR, 2, {REG_GPR|BITS32,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43179, 63}, + {I_LAR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43179, 63}, + {I_LAR, 2, {REG_GPR|BITS32,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33165, 64}, + {I_LAR, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43185, 66}, + {I_LAR, 2, {REG_GPR|BITS64,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43185, 64}, + {I_LAR, 2, {REG_GPR|BITS64,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43185, 64}, + {I_LAR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43185, 64}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LDS[] = { + {I_LDS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48007, 1}, + {I_LDS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48012, 19}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LEA[] = { + {I_LEA, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48017, 67}, + {I_LEA, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48022, 68}, + {I_LEA, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48027, 69}, + {I_LEA, 2, {REG_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48017, 67}, + {I_LEA, 2, {REG_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48022, 68}, + {I_LEA, 2, {REG_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48027, 69}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LEAVE[] = { + {I_LEAVE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48279, 35}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LES[] = { + {I_LES, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48032, 1}, + {I_LES, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48037, 19}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LFENCE[] = { + {I_LFENCE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43191, 59}, + {I_LFENCE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43191, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LFS[] = { + {I_LFS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43197, 5}, + {I_LFS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43203, 5}, + {I_LFS, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43209, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LGDT[] = { + {I_LGDT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48042, 25}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LGS[] = { + {I_LGS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43215, 5}, + {I_LGS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43221, 5}, + {I_LGS, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43227, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LIDT[] = { + {I_LIDT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48047, 25}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LLDT[] = { + {I_LLDT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48052, 70}, + {I_LLDT, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48052, 70}, + {I_LLDT, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48052, 70}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LMSW[] = { + {I_LMSW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48057, 25}, + {I_LMSW, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48057, 25}, + {I_LMSW, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48057, 25}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LOADALL[] = { + {I_LOADALL, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49819, 46}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LOADALL286[] = { + {I_LOADALL286, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49823, 71}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LODSB[] = { + {I_LODSB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50220, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LODSD[] = { + {I_LODSD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49827, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LODSQ[] = { + {I_LODSQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49831, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LODSW[] = { + {I_LODSW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49835, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LOOP[] = { + {I_LOOP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48062, 0}, + {I_LOOP, 2, {IMMEDIATE,REG_CX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48067, 1}, + {I_LOOP, 2, {IMMEDIATE,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48072, 5}, + {I_LOOP, 2, {IMMEDIATE,REG_RCX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48077, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LOOPE[] = { + {I_LOOPE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48082, 0}, + {I_LOOPE, 2, {IMMEDIATE,REG_CX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48087, 1}, + {I_LOOPE, 2, {IMMEDIATE,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48092, 5}, + {I_LOOPE, 2, {IMMEDIATE,REG_RCX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48097, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LOOPNE[] = { + {I_LOOPNE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48102, 0}, + {I_LOOPNE, 2, {IMMEDIATE,REG_CX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48107, 1}, + {I_LOOPNE, 2, {IMMEDIATE,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48112, 5}, + {I_LOOPNE, 2, {IMMEDIATE,REG_RCX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48117, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LOOPNZ[] = { + {I_LOOPNZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48102, 0}, + {I_LOOPNZ, 2, {IMMEDIATE,REG_CX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48107, 1}, + {I_LOOPNZ, 2, {IMMEDIATE,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48112, 5}, + {I_LOOPNZ, 2, {IMMEDIATE,REG_RCX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48117, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LOOPZ[] = { + {I_LOOPZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48082, 0}, + {I_LOOPZ, 2, {IMMEDIATE,REG_CX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48087, 1}, + {I_LOOPZ, 2, {IMMEDIATE,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48092, 5}, + {I_LOOPZ, 2, {IMMEDIATE,REG_RCX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48097, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LSL[] = { + {I_LSL, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43233, 61}, + {I_LSL, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43233, 62}, + {I_LSL, 2, {REG_GPR|BITS16,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43233, 63}, + {I_LSL, 2, {REG_GPR|BITS16,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33172, 64}, + {I_LSL, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43239, 65}, + {I_LSL, 2, {REG_GPR|BITS32,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43239, 63}, + {I_LSL, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43239, 63}, + {I_LSL, 2, {REG_GPR|BITS32,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33179, 64}, + {I_LSL, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43245, 66}, + {I_LSL, 2, {REG_GPR|BITS64,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43245, 64}, + {I_LSL, 2, {REG_GPR|BITS64,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43245, 64}, + {I_LSL, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43245, 64}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LSS[] = { + {I_LSS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43251, 5}, + {I_LSS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43257, 5}, + {I_LSS, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43263, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LTR[] = { + {I_LTR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48122, 70}, + {I_LTR, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48122, 70}, + {I_LTR, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48122, 70}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MFENCE[] = { + {I_MFENCE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43269, 59}, + {I_MFENCE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43269, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MONITOR[] = { + {I_MONITOR, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48127, 72}, + {I_MONITOR, 3, {REG_EAX,REG_ECX,REG_EDX,0,0}, NO_DECORATOR, nasm_bytecodes+48127, 73}, + {I_MONITOR, 3, {REG_RAX,REG_ECX,REG_EDX,0,0}, NO_DECORATOR, nasm_bytecodes+48127, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MONITORX[] = { + {I_MONITORX, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48132, 74}, + {I_MONITORX, 3, {REG_RAX,REG_ECX,REG_EDX,0,0}, NO_DECORATOR, nasm_bytecodes+48132, 59}, + {I_MONITORX, 3, {REG_EAX,REG_ECX,REG_EDX,0,0}, NO_DECORATOR, nasm_bytecodes+48132, 74}, + {I_MONITORX, 3, {REG_AX,REG_ECX,REG_EDX,0,0}, NO_DECORATOR, nasm_bytecodes+48132, 74}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOV[] = { + {I_MOV, 2, {MEMORY,REG_SREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+48153, 75}, + {I_MOV, 2, {REG_GPR|BITS16,REG_SREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+48137, 0}, + {I_MOV, 2, {REG_GPR|BITS32,REG_SREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+48142, 5}, + {I_MOV, 2, {REG_GPR|BITS64,REG_SREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+48147, 76}, + {I_MOV, 2, {RM_GPR|BITS64,REG_SREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+48152, 7}, + {I_MOV, 2, {REG_SREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48173, 75}, + {I_MOV, 2, {REG_SREG,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48173, 77}, + {I_MOV, 2, {REG_SREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48173, 78}, + {I_MOV, 2, {REG_SREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48157, 76}, + {I_MOV, 2, {REG_SREG,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48162, 0}, + {I_MOV, 2, {REG_SREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48167, 5}, + {I_MOV, 2, {REG_SREG,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48172, 7}, + {I_MOV, 2, {REG_AL,MEM_OFFS,0,0,0}, NO_DECORATOR, nasm_bytecodes+49839, 8}, + {I_MOV, 2, {REG_AX,MEM_OFFS,0,0,0}, NO_DECORATOR, nasm_bytecodes+48177, 8}, + {I_MOV, 2, {REG_EAX,MEM_OFFS,0,0,0}, NO_DECORATOR, nasm_bytecodes+48182, 9}, + {I_MOV, 2, {REG_RAX,MEM_OFFS,0,0,0}, NO_DECORATOR, nasm_bytecodes+48187, 10}, + {I_MOV, 2, {MEM_OFFS,REG_AL,0,0,0}, NO_DECORATOR, nasm_bytecodes+49843, 79}, + {I_MOV, 2, {MEM_OFFS,REG_AX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48192, 79}, + {I_MOV, 2, {MEM_OFFS,REG_EAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48197, 80}, + {I_MOV, 2, {MEM_OFFS,REG_RAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48202, 81}, + {I_MOV, 2, {REG_GPR|BITS32,REG_CREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+43275, 82}, + {I_MOV, 2, {REG_GPR|BITS64,REG_CREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+43281, 83}, + {I_MOV, 2, {REG_CREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43287, 82}, + {I_MOV, 2, {REG_CREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43293, 83}, + {I_MOV, 2, {REG_GPR|BITS32,REG_DREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+43300, 82}, + {I_MOV, 2, {REG_GPR|BITS64,REG_DREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+43299, 83}, + {I_MOV, 2, {REG_DREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43306, 82}, + {I_MOV, 2, {REG_DREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43305, 83}, + {I_MOV, 2, {REG_GPR|BITS32,REG_TREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+48207, 19}, + {I_MOV, 2, {REG_TREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48212, 19}, + {I_MOV, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48217, 8}, + {I_MOV, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48218, 0}, + {I_MOV, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43311, 8}, + {I_MOV, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43312, 0}, + {I_MOV, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43317, 9}, + {I_MOV, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43318, 5}, + {I_MOV, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43323, 10}, + {I_MOV, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43324, 7}, + {I_MOV, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+49847, 8}, + {I_MOV, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+49847, 0}, + {I_MOV, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48222, 8}, + {I_MOV, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48222, 0}, + {I_MOV, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48227, 9}, + {I_MOV, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48227, 5}, + {I_MOV, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48232, 10}, + {I_MOV, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48232, 7}, + {I_MOV, 2, {REG_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49851, 8}, + {I_MOV, 2, {REG_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48237, 8}, + {I_MOV, 2, {REG_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48242, 9}, + {I_MOV, 2, {REG_GPR|BITS64,UDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+48247, 84}, + {I_MOV, 2, {REG_GPR|BITS64,SDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33201, 84}, + {I_MOV, 2, {REG_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48252, 10}, + {I_MOV, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43329, 8}, + {I_MOV, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33186, 8}, + {I_MOV, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33193, 9}, + {I_MOV, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33200, 10}, + {I_MOV, 2, {RM_GPR|BITS64,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33200, 7}, + {I_MOV, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43329, 8}, + {I_MOV, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33186, 8}, + {I_MOV, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33193, 9}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVD[] = { + {I_MOVD, 2, {MMXREG,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43335, 85}, + {I_MOVD, 2, {RM_GPR|BITS32,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+43341, 85}, + {I_MOVD, 2, {MMXREG,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33207, 86}, + {I_MOVD, 2, {RM_GPR|BITS64,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+33214, 86}, + {I_MOVD, 2, {MEMORY,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34138, 148}, + {I_MOVD, 2, {XMM_L16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+34145, 148}, + {I_MOVD, 2, {XMM_L16,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34145, 144}, + {I_MOVD, 2, {RM_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34138, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVQ[] = { + {I_MOVQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43347, 87}, + {I_MOVQ, 2, {RM_MMX,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+43353, 87}, + {I_MOVQ, 2, {MMXREG,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33207, 88}, + {I_MOVQ, 2, {RM_GPR|BITS64,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+33214, 88}, + {I_MOVQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44985, 144}, + {I_MOVQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44991, 144}, + {I_MOVQ, 2, {MEMORY,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44991, 149}, + {I_MOVQ, 2, {XMM_L16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44985, 149}, + {I_MOVQ, 2, {XMM_L16,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34152, 150}, + {I_MOVQ, 2, {RM_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34159, 150}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVSB[] = { + {I_MOVSB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+12437, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVSD[] = { + {I_MOVSD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49855, 5}, + {I_MOVSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45543, 144}, + {I_MOVSD, 2, {RM_XMM_L16|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45549, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVSQ[] = { + {I_MOVSQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49859, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVSW[] = { + {I_MOVSW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49863, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVSX[] = { + {I_MOVSX, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43359, 53}, + {I_MOVSX, 2, {REG_GPR|BITS16,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43359, 5}, + {I_MOVSX, 2, {REG_GPR|BITS32,RM_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43365, 5}, + {I_MOVSX, 2, {REG_GPR|BITS32,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43371, 5}, + {I_MOVSX, 2, {REG_GPR|BITS64,RM_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43377, 7}, + {I_MOVSX, 2, {REG_GPR|BITS64,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43383, 7}, + {I_MOVSX, 2, {REG_GPR|BITS64,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48257, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVSXD[] = { + {I_MOVSXD, 2, {REG_GPR|BITS64,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48257, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVZX[] = { + {I_MOVZX, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43389, 53}, + {I_MOVZX, 2, {REG_GPR|BITS16,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43389, 5}, + {I_MOVZX, 2, {REG_GPR|BITS32,RM_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43395, 5}, + {I_MOVZX, 2, {REG_GPR|BITS32,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43401, 5}, + {I_MOVZX, 2, {REG_GPR|BITS64,RM_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43407, 7}, + {I_MOVZX, 2, {REG_GPR|BITS64,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43413, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MUL[] = { + {I_MUL, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49867, 0}, + {I_MUL, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48262, 0}, + {I_MUL, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48267, 5}, + {I_MUL, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48272, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MWAIT[] = { + {I_MWAIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48277, 72}, + {I_MWAIT, 2, {REG_EAX,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48277, 72}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MWAITX[] = { + {I_MWAITX, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48282, 74}, + {I_MWAITX, 2, {REG_EAX,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48282, 74}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_NEG[] = { + {I_NEG, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48287, 11}, + {I_NEG, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43419, 11}, + {I_NEG, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43425, 12}, + {I_NEG, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43431, 13}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_NOP[] = { + {I_NOP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48292, 0}, + {I_NOP, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43437, 89}, + {I_NOP, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43443, 89}, + {I_NOP, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43449, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_NOT[] = { + {I_NOT, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48297, 11}, + {I_NOT, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43455, 11}, + {I_NOT, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43461, 12}, + {I_NOT, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43467, 13}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_OR[] = { + {I_OR, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48302, 3}, + {I_OR, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48303, 0}, + {I_OR, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43473, 3}, + {I_OR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43474, 0}, + {I_OR, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43479, 4}, + {I_OR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43480, 5}, + {I_OR, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43485, 6}, + {I_OR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43486, 7}, + {I_OR, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+40679, 8}, + {I_OR, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+40679, 0}, + {I_OR, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48307, 8}, + {I_OR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48307, 0}, + {I_OR, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48312, 9}, + {I_OR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48312, 5}, + {I_OR, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48317, 10}, + {I_OR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48317, 7}, + {I_OR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33221, 11}, + {I_OR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33228, 12}, + {I_OR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33235, 13}, + {I_OR, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49871, 8}, + {I_OR, 2, {REG_AX,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33222, 8}, + {I_OR, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48322, 8}, + {I_OR, 2, {REG_EAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33229, 9}, + {I_OR, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48327, 9}, + {I_OR, 2, {REG_RAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33236, 10}, + {I_OR, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48332, 10}, + {I_OR, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43491, 3}, + {I_OR, 2, {RM_GPR|BITS16,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33221, 3}, + {I_OR, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33242, 3}, + {I_OR, 2, {RM_GPR|BITS32,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33228, 4}, + {I_OR, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33249, 4}, + {I_OR, 2, {RM_GPR|BITS64,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33235, 6}, + {I_OR, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33256, 6}, + {I_OR, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43491, 3}, + {I_OR, 2, {MEMORY,SBYTEWORD|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33221, 3}, + {I_OR, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33242, 3}, + {I_OR, 2, {MEMORY,SBYTEDWORD|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33228, 4}, + {I_OR, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33249, 4}, + {I_OR, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43497, 14}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_OUT[] = { + {I_OUT, 2, {IMMEDIATE,REG_AL,0,0,0}, NO_DECORATOR, nasm_bytecodes+49875, 52}, + {I_OUT, 2, {IMMEDIATE,REG_AX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48337, 52}, + {I_OUT, 2, {IMMEDIATE,REG_EAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48342, 53}, + {I_OUT, 2, {REG_DX,REG_AL,0,0,0}, NO_DECORATOR, nasm_bytecodes+46074, 0}, + {I_OUT, 2, {REG_DX,REG_AX,0,0,0}, NO_DECORATOR, nasm_bytecodes+49879, 0}, + {I_OUT, 2, {REG_DX,REG_EAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+49883, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_OUTSB[] = { + {I_OUTSB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50223, 35}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_OUTSD[] = { + {I_OUTSD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49887, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_OUTSW[] = { + {I_OUTSW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49891, 35}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PACKSSDW[] = { + {I_PACKSSDW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33263, 87}, + {I_PACKSSDW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45009, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PACKSSWB[] = { + {I_PACKSSWB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33270, 87}, + {I_PACKSSWB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45003, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PACKUSWB[] = { + {I_PACKUSWB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33277, 87}, + {I_PACKUSWB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45015, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PADDB[] = { + {I_PADDB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33284, 87}, + {I_PADDB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45021, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PADDD[] = { + {I_PADDD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33291, 87}, + {I_PADDD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45033, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PADDSB[] = { + {I_PADDSB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33298, 87}, + {I_PADDSB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45051, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PADDSIW[] = { + {I_PADDSIW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43503, 90}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PADDSW[] = { + {I_PADDSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33305, 87}, + {I_PADDSW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45057, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PADDUSB[] = { + {I_PADDUSB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33312, 87}, + {I_PADDUSB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45063, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PADDUSW[] = { + {I_PADDUSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33319, 87}, + {I_PADDUSW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45069, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PADDW[] = { + {I_PADDW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33326, 87}, + {I_PADDW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45027, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PAND[] = { + {I_PAND, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33333, 87}, + {I_PAND, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45075, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PANDN[] = { + {I_PANDN, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33340, 87}, + {I_PANDN, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45081, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PAUSE[] = { + {I_PAUSE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49895, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PAVEB[] = { + {I_PAVEB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43509, 90}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PAVGUSB[] = { + {I_PAVGUSB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12376, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCMPEQB[] = { + {I_PCMPEQB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33347, 87}, + {I_PCMPEQB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45099, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCMPEQD[] = { + {I_PCMPEQD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33354, 87}, + {I_PCMPEQD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45111, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCMPEQW[] = { + {I_PCMPEQW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33361, 87}, + {I_PCMPEQW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45105, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCMPGTB[] = { + {I_PCMPGTB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33368, 87}, + {I_PCMPGTB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45117, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCMPGTD[] = { + {I_PCMPGTD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33375, 87}, + {I_PCMPGTD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45129, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCMPGTW[] = { + {I_PCMPGTW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33382, 87}, + {I_PCMPGTW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45123, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PDISTIB[] = { + {I_PDISTIB, 2, {MMXREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45376, 92}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PF2ID[] = { + {I_PF2ID, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12384, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFACC[] = { + {I_PFACC, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12392, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFADD[] = { + {I_PFADD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12400, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFCMPEQ[] = { + {I_PFCMPEQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12408, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFCMPGE[] = { + {I_PFCMPGE, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12416, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFCMPGT[] = { + {I_PFCMPGT, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12424, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFMAX[] = { + {I_PFMAX, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12432, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFMIN[] = { + {I_PFMIN, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12440, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFMUL[] = { + {I_PFMUL, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12448, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFRCP[] = { + {I_PFRCP, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12456, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFRCPIT1[] = { + {I_PFRCPIT1, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12464, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFRCPIT2[] = { + {I_PFRCPIT2, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12472, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFRSQIT1[] = { + {I_PFRSQIT1, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12480, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFRSQRT[] = { + {I_PFRSQRT, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12488, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFSUB[] = { + {I_PFSUB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12496, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFSUBR[] = { + {I_PFSUBR, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12504, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PI2FD[] = { + {I_PI2FD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12512, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMACHRIW[] = { + {I_PMACHRIW, 2, {MMXREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45472, 92}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMADDWD[] = { + {I_PMADDWD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33389, 87}, + {I_PMADDWD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45135, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMAGW[] = { + {I_PMAGW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43515, 90}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMULHRIW[] = { + {I_PMULHRIW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43521, 90}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMULHRWA[] = { + {I_PMULHRWA, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12520, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMULHRWC[] = { + {I_PMULHRWC, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43527, 90}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMULHW[] = { + {I_PMULHW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33396, 87}, + {I_PMULHW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45177, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMULLW[] = { + {I_PMULLW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33403, 87}, + {I_PMULLW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45183, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMVGEZB[] = { + {I_PMVGEZB, 2, {MMXREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45604, 90}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMVLZB[] = { + {I_PMVLZB, 2, {MMXREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45460, 90}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMVNZB[] = { + {I_PMVNZB, 2, {MMXREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45442, 90}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMVZB[] = { + {I_PMVZB, 2, {MMXREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45364, 90}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_POP[] = { + {I_POP, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49899, 0}, + {I_POP, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49903, 19}, + {I_POP, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49907, 7}, + {I_POP, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48347, 0}, + {I_POP, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48352, 19}, + {I_POP, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48357, 7}, + {I_POP, 1, {REG_ES,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+12813, 1}, + {I_POP, 1, {REG_CS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+7495, 93}, + {I_POP, 1, {REG_SS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+7621, 1}, + {I_POP, 1, {REG_DS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+7765, 1}, + {I_POP, 1, {REG_FS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49911, 5}, + {I_POP, 1, {REG_GS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49915, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_POPA[] = { + {I_POPA, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49919, 18}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_POPAD[] = { + {I_POPAD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49923, 19}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_POPAW[] = { + {I_POPAW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49927, 18}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_POPF[] = { + {I_POPF, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49931, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_POPFD[] = { + {I_POPFD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49935, 19}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_POPFQ[] = { + {I_POPFQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49935, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_POPFW[] = { + {I_POPFW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49939, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_POR[] = { + {I_POR, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33410, 87}, + {I_POR, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45195, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PREFETCH[] = { + {I_PREFETCH, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48362, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PREFETCHW[] = { + {I_PREFETCHW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48367, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSLLD[] = { + {I_PSLLD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33417, 87}, + {I_PSLLD, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33424, 34}, + {I_PSLLD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45213, 145}, + {I_PSLLD, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34222, 155}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSLLQ[] = { + {I_PSLLQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33431, 87}, + {I_PSLLQ, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33438, 34}, + {I_PSLLQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45219, 145}, + {I_PSLLQ, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34229, 155}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSLLW[] = { + {I_PSLLW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33445, 87}, + {I_PSLLW, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33452, 34}, + {I_PSLLW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45207, 145}, + {I_PSLLW, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34215, 155}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSRAD[] = { + {I_PSRAD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33459, 87}, + {I_PSRAD, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33466, 34}, + {I_PSRAD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45231, 145}, + {I_PSRAD, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34243, 155}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSRAW[] = { + {I_PSRAW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33473, 87}, + {I_PSRAW, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33480, 34}, + {I_PSRAW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45225, 145}, + {I_PSRAW, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34236, 155}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSRLD[] = { + {I_PSRLD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33487, 87}, + {I_PSRLD, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33494, 34}, + {I_PSRLD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45243, 145}, + {I_PSRLD, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34264, 155}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSRLQ[] = { + {I_PSRLQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33501, 87}, + {I_PSRLQ, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33508, 34}, + {I_PSRLQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45249, 145}, + {I_PSRLQ, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34271, 155}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSRLW[] = { + {I_PSRLW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33515, 87}, + {I_PSRLW, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33522, 34}, + {I_PSRLW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45237, 145}, + {I_PSRLW, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34257, 155}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSUBB[] = { + {I_PSUBB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33529, 87}, + {I_PSUBB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45255, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSUBD[] = { + {I_PSUBD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33536, 87}, + {I_PSUBD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45267, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSUBSB[] = { + {I_PSUBSB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33543, 87}, + {I_PSUBSB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45279, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSUBSIW[] = { + {I_PSUBSIW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43533, 90}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSUBSW[] = { + {I_PSUBSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33550, 87}, + {I_PSUBSW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45285, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSUBUSB[] = { + {I_PSUBUSB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33557, 87}, + {I_PSUBUSB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45291, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSUBUSW[] = { + {I_PSUBUSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33564, 87}, + {I_PSUBUSW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45297, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSUBW[] = { + {I_PSUBW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33571, 87}, + {I_PSUBW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45261, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUNPCKHBW[] = { + {I_PUNPCKHBW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33578, 87}, + {I_PUNPCKHBW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45303, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUNPCKHDQ[] = { + {I_PUNPCKHDQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33585, 87}, + {I_PUNPCKHDQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45315, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUNPCKHWD[] = { + {I_PUNPCKHWD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33592, 87}, + {I_PUNPCKHWD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45309, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUNPCKLBW[] = { + {I_PUNPCKLBW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33599, 87}, + {I_PUNPCKLBW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45327, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUNPCKLDQ[] = { + {I_PUNPCKLDQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33606, 87}, + {I_PUNPCKLDQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45339, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUNPCKLWD[] = { + {I_PUNPCKLWD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33613, 87}, + {I_PUNPCKLWD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45333, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUSH[] = { + {I_PUSH, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49943, 0}, + {I_PUSH, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49947, 19}, + {I_PUSH, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49951, 7}, + {I_PUSH, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48372, 0}, + {I_PUSH, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48377, 19}, + {I_PUSH, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48382, 7}, + {I_PUSH, 1, {REG_ES,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+12781, 1}, + {I_PUSH, 1, {REG_CS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+7477, 1}, + {I_PUSH, 1, {REG_SS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+7603, 1}, + {I_PUSH, 1, {REG_DS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+7747, 1}, + {I_PUSH, 1, {REG_FS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49955, 5}, + {I_PUSH, 1, {REG_GS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49959, 5}, + {I_PUSH, 1, {IMMEDIATE|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48408, 35}, + {I_PUSH, 1, {SBYTEWORD|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48387, 94}, + {I_PUSH, 1, {IMMEDIATE|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48392, 94}, + {I_PUSH, 1, {SBYTEDWORD|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48397, 95}, + {I_PUSH, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48402, 95}, + {I_PUSH, 1, {SBYTEDWORD|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48397, 96}, + {I_PUSH, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48402, 96}, + {I_PUSH, 1, {SBYTEDWORD|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48407, 97}, + {I_PUSH, 1, {IMMEDIATE|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48412, 97}, + {I_PUSH, 1, {SBYTEDWORD|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48407, 97}, + {I_PUSH, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48412, 97}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUSHA[] = { + {I_PUSHA, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49963, 18}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUSHAD[] = { + {I_PUSHAD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49967, 19}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUSHAW[] = { + {I_PUSHAW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49971, 18}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUSHF[] = { + {I_PUSHF, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49975, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUSHFD[] = { + {I_PUSHFD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49979, 19}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUSHFQ[] = { + {I_PUSHFQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49979, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUSHFW[] = { + {I_PUSHFW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49983, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PXOR[] = { + {I_PXOR, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33620, 87}, + {I_PXOR, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45351, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RCL[] = { + {I_RCL, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+49987, 0}, + {I_RCL, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+49991, 0}, + {I_RCL, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48417, 35}, + {I_RCL, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48422, 0}, + {I_RCL, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48427, 0}, + {I_RCL, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43539, 35}, + {I_RCL, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48432, 5}, + {I_RCL, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48437, 5}, + {I_RCL, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43545, 5}, + {I_RCL, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48442, 7}, + {I_RCL, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48447, 7}, + {I_RCL, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43551, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RCR[] = { + {I_RCR, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+49995, 0}, + {I_RCR, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+49999, 0}, + {I_RCR, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48452, 35}, + {I_RCR, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48457, 0}, + {I_RCR, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48462, 0}, + {I_RCR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43557, 35}, + {I_RCR, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48467, 5}, + {I_RCR, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48472, 5}, + {I_RCR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43563, 5}, + {I_RCR, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48477, 7}, + {I_RCR, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48482, 7}, + {I_RCR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43569, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDSHR[] = { + {I_RDSHR, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43575, 98}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDMSR[] = { + {I_RDMSR, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50003, 99}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDPMC[] = { + {I_RDPMC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50007, 89}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDTSC[] = { + {I_RDTSC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50011, 28}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDTSCP[] = { + {I_RDTSCP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48487, 100}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RET[] = { + {I_RET, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50032, 21}, + {I_RET, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48513, 101}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RETF[] = { + {I_RETF, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50036, 0}, + {I_RETF, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48518, 75}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RETN[] = { + {I_RETN, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50032, 21}, + {I_RETN, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48513, 101}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RETW[] = { + {I_RETW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50015, 21}, + {I_RETW, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48513, 101}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RETFW[] = { + {I_RETFW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50019, 0}, + {I_RETFW, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48492, 75}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RETNW[] = { + {I_RETNW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50015, 21}, + {I_RETNW, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48497, 101}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RETD[] = { + {I_RETD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50023, 22}, + {I_RETD, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48502, 102}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RETFD[] = { + {I_RETFD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50027, 0}, + {I_RETFD, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48507, 75}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RETND[] = { + {I_RETND, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50023, 22}, + {I_RETND, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48502, 102}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RETQ[] = { + {I_RETQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50031, 24}, + {I_RETQ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48512, 103}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RETFQ[] = { + {I_RETFQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50035, 7}, + {I_RETFQ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48517, 104}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RETNQ[] = { + {I_RETNQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50031, 24}, + {I_RETNQ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48512, 103}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ROL[] = { + {I_ROL, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50039, 0}, + {I_ROL, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+50043, 0}, + {I_ROL, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48522, 35}, + {I_ROL, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48527, 0}, + {I_ROL, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48532, 0}, + {I_ROL, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43581, 35}, + {I_ROL, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48537, 5}, + {I_ROL, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48542, 5}, + {I_ROL, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43587, 5}, + {I_ROL, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48547, 7}, + {I_ROL, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48552, 7}, + {I_ROL, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43593, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ROR[] = { + {I_ROR, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50047, 0}, + {I_ROR, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+50051, 0}, + {I_ROR, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48557, 35}, + {I_ROR, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48562, 0}, + {I_ROR, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48567, 0}, + {I_ROR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43599, 35}, + {I_ROR, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48572, 5}, + {I_ROR, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48577, 5}, + {I_ROR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43605, 5}, + {I_ROR, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48582, 7}, + {I_ROR, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48587, 7}, + {I_ROR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43611, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDM[] = { + {I_RDM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49215, 33}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RSDC[] = { + {I_RSDC, 2, {REG_SREG,MEMORY|BITS80,0,0,0}, NO_DECORATOR, nasm_bytecodes+45742, 105}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RSLDT[] = { + {I_RSLDT, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48592, 105}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RSM[] = { + {I_RSM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50055, 106}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RSTS[] = { + {I_RSTS, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48597, 105}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SAHF[] = { + {I_SAHF, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+12405, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SAL[] = { + {I_SAL, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50059, 0}, + {I_SAL, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+50063, 0}, + {I_SAL, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48602, 35}, + {I_SAL, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48607, 0}, + {I_SAL, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48612, 0}, + {I_SAL, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43617, 35}, + {I_SAL, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48617, 5}, + {I_SAL, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48622, 5}, + {I_SAL, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43623, 5}, + {I_SAL, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48627, 7}, + {I_SAL, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48632, 7}, + {I_SAL, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43629, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SALC[] = { + {I_SALC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49174, 107}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SAR[] = { + {I_SAR, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50067, 0}, + {I_SAR, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+50071, 0}, + {I_SAR, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48637, 35}, + {I_SAR, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48642, 0}, + {I_SAR, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48647, 0}, + {I_SAR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43635, 35}, + {I_SAR, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48652, 5}, + {I_SAR, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48657, 5}, + {I_SAR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43641, 5}, + {I_SAR, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48662, 7}, + {I_SAR, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48667, 7}, + {I_SAR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43647, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SBB[] = { + {I_SBB, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48672, 3}, + {I_SBB, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48673, 0}, + {I_SBB, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43653, 3}, + {I_SBB, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43654, 0}, + {I_SBB, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43659, 4}, + {I_SBB, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43660, 5}, + {I_SBB, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43665, 6}, + {I_SBB, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43666, 7}, + {I_SBB, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+35268, 8}, + {I_SBB, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+35268, 0}, + {I_SBB, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48677, 8}, + {I_SBB, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48677, 0}, + {I_SBB, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48682, 9}, + {I_SBB, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48682, 5}, + {I_SBB, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48687, 10}, + {I_SBB, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48687, 7}, + {I_SBB, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33627, 11}, + {I_SBB, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33634, 12}, + {I_SBB, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33641, 13}, + {I_SBB, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+50075, 8}, + {I_SBB, 2, {REG_AX,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33628, 8}, + {I_SBB, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48692, 8}, + {I_SBB, 2, {REG_EAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33635, 9}, + {I_SBB, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48697, 9}, + {I_SBB, 2, {REG_RAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33642, 10}, + {I_SBB, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48702, 10}, + {I_SBB, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43671, 3}, + {I_SBB, 2, {RM_GPR|BITS16,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33627, 3}, + {I_SBB, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33648, 3}, + {I_SBB, 2, {RM_GPR|BITS32,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33634, 4}, + {I_SBB, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33655, 4}, + {I_SBB, 2, {RM_GPR|BITS64,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33641, 6}, + {I_SBB, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33662, 6}, + {I_SBB, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43671, 3}, + {I_SBB, 2, {MEMORY,SBYTEWORD|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33627, 3}, + {I_SBB, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33648, 3}, + {I_SBB, 2, {MEMORY,SBYTEDWORD|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33634, 4}, + {I_SBB, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33655, 4}, + {I_SBB, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43677, 14}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SCASB[] = { + {I_SCASB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50079, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SCASD[] = { + {I_SCASD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48707, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SCASQ[] = { + {I_SCASQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48712, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SCASW[] = { + {I_SCASW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48717, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SFENCE[] = { + {I_SFENCE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43683, 59}, + {I_SFENCE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43683, 139}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SGDT[] = { + {I_SGDT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48722, 108}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHL[] = { + {I_SHL, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50059, 0}, + {I_SHL, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+50063, 0}, + {I_SHL, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48602, 35}, + {I_SHL, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48607, 0}, + {I_SHL, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48612, 0}, + {I_SHL, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43617, 35}, + {I_SHL, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48617, 5}, + {I_SHL, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48622, 5}, + {I_SHL, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43623, 5}, + {I_SHL, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48627, 7}, + {I_SHL, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48632, 7}, + {I_SHL, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43629, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHLD[] = { + {I_SHLD, 3, {MEMORY,REG_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33669, 109}, + {I_SHLD, 3, {REG_GPR|BITS16,REG_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33669, 109}, + {I_SHLD, 3, {MEMORY,REG_GPR|BITS32,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33676, 109}, + {I_SHLD, 3, {REG_GPR|BITS32,REG_GPR|BITS32,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33676, 109}, + {I_SHLD, 3, {MEMORY,REG_GPR|BITS64,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33683, 110}, + {I_SHLD, 3, {REG_GPR|BITS64,REG_GPR|BITS64,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33683, 110}, + {I_SHLD, 3, {MEMORY,REG_GPR|BITS16,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43689, 9}, + {I_SHLD, 3, {REG_GPR|BITS16,REG_GPR|BITS16,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43689, 5}, + {I_SHLD, 3, {MEMORY,REG_GPR|BITS32,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43695, 9}, + {I_SHLD, 3, {REG_GPR|BITS32,REG_GPR|BITS32,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43695, 5}, + {I_SHLD, 3, {MEMORY,REG_GPR|BITS64,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43701, 10}, + {I_SHLD, 3, {REG_GPR|BITS64,REG_GPR|BITS64,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43701, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHR[] = { + {I_SHR, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50083, 0}, + {I_SHR, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+50087, 0}, + {I_SHR, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48727, 35}, + {I_SHR, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48732, 0}, + {I_SHR, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48737, 0}, + {I_SHR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43707, 35}, + {I_SHR, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48742, 5}, + {I_SHR, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48747, 5}, + {I_SHR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43713, 5}, + {I_SHR, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48752, 7}, + {I_SHR, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48757, 7}, + {I_SHR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43719, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHRD[] = { + {I_SHRD, 3, {MEMORY,REG_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33690, 109}, + {I_SHRD, 3, {REG_GPR|BITS16,REG_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33690, 109}, + {I_SHRD, 3, {MEMORY,REG_GPR|BITS32,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33697, 109}, + {I_SHRD, 3, {REG_GPR|BITS32,REG_GPR|BITS32,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33697, 109}, + {I_SHRD, 3, {MEMORY,REG_GPR|BITS64,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33704, 110}, + {I_SHRD, 3, {REG_GPR|BITS64,REG_GPR|BITS64,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33704, 110}, + {I_SHRD, 3, {MEMORY,REG_GPR|BITS16,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43725, 9}, + {I_SHRD, 3, {REG_GPR|BITS16,REG_GPR|BITS16,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43725, 5}, + {I_SHRD, 3, {MEMORY,REG_GPR|BITS32,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43731, 9}, + {I_SHRD, 3, {REG_GPR|BITS32,REG_GPR|BITS32,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43731, 5}, + {I_SHRD, 3, {MEMORY,REG_GPR|BITS64,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43737, 10}, + {I_SHRD, 3, {REG_GPR|BITS64,REG_GPR|BITS64,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43737, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SIDT[] = { + {I_SIDT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48762, 108}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SLDT[] = { + {I_SLDT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43762, 108}, + {I_SLDT, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43762, 108}, + {I_SLDT, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43743, 108}, + {I_SLDT, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43749, 5}, + {I_SLDT, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43755, 7}, + {I_SLDT, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43761, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SKINIT[] = { + {I_SKINIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48767, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SMI[] = { + {I_SMI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50205, 111}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SMINT[] = { + {I_SMINT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50091, 33}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SMINTOLD[] = { + {I_SMINTOLD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50095, 112}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SMSW[] = { + {I_SMSW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43780, 108}, + {I_SMSW, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43780, 108}, + {I_SMSW, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43767, 108}, + {I_SMSW, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43773, 5}, + {I_SMSW, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43779, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STC[] = { + {I_STC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48489, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STD[] = { + {I_STD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50226, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STI[] = { + {I_STI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48284, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STOSB[] = { + {I_STOSB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+12509, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STOSD[] = { + {I_STOSD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50099, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STOSQ[] = { + {I_STOSQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50103, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STOSW[] = { + {I_STOSW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50107, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STR[] = { + {I_STR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43798, 62}, + {I_STR, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43798, 62}, + {I_STR, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43785, 62}, + {I_STR, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43791, 63}, + {I_STR, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43797, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SUB[] = { + {I_SUB, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48772, 3}, + {I_SUB, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48773, 0}, + {I_SUB, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43803, 3}, + {I_SUB, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43804, 0}, + {I_SUB, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43809, 4}, + {I_SUB, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43810, 5}, + {I_SUB, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43815, 6}, + {I_SUB, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43816, 7}, + {I_SUB, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+41036, 8}, + {I_SUB, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+41036, 0}, + {I_SUB, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48777, 8}, + {I_SUB, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48777, 0}, + {I_SUB, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48782, 9}, + {I_SUB, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48782, 5}, + {I_SUB, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48787, 10}, + {I_SUB, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48787, 7}, + {I_SUB, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33711, 11}, + {I_SUB, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33718, 12}, + {I_SUB, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33725, 13}, + {I_SUB, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+50111, 8}, + {I_SUB, 2, {REG_AX,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33712, 8}, + {I_SUB, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48792, 8}, + {I_SUB, 2, {REG_EAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33719, 9}, + {I_SUB, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48797, 9}, + {I_SUB, 2, {REG_RAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33726, 10}, + {I_SUB, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48802, 10}, + {I_SUB, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43821, 3}, + {I_SUB, 2, {RM_GPR|BITS16,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33711, 3}, + {I_SUB, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33732, 3}, + {I_SUB, 2, {RM_GPR|BITS32,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33718, 4}, + {I_SUB, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33739, 4}, + {I_SUB, 2, {RM_GPR|BITS64,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33725, 6}, + {I_SUB, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33746, 6}, + {I_SUB, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43821, 3}, + {I_SUB, 2, {MEMORY,SBYTEWORD|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33711, 3}, + {I_SUB, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33732, 3}, + {I_SUB, 2, {MEMORY,SBYTEDWORD|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33718, 4}, + {I_SUB, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33739, 4}, + {I_SUB, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43827, 14}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SVDC[] = { + {I_SVDC, 2, {MEMORY|BITS80,REG_SREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+34357, 105}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SVLDT[] = { + {I_SVLDT, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48807, 105}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SVTS[] = { + {I_SVTS, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48812, 105}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SWAPGS[] = { + {I_SWAPGS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48817, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SYSCALL[] = { + {I_SYSCALL, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49823, 113}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SYSENTER[] = { + {I_SYSENTER, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50115, 89}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SYSEXIT[] = { + {I_SYSEXIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50119, 114}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SYSRET[] = { + {I_SYSRET, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49819, 115}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TEST[] = { + {I_TEST, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+50123, 8}, + {I_TEST, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+50123, 0}, + {I_TEST, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48822, 8}, + {I_TEST, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48822, 0}, + {I_TEST, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48827, 9}, + {I_TEST, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48827, 5}, + {I_TEST, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48832, 10}, + {I_TEST, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48832, 7}, + {I_TEST, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50127, 8}, + {I_TEST, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48837, 8}, + {I_TEST, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48842, 9}, + {I_TEST, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48847, 10}, + {I_TEST, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+50131, 8}, + {I_TEST, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48852, 8}, + {I_TEST, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48857, 9}, + {I_TEST, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48862, 10}, + {I_TEST, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48867, 8}, + {I_TEST, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43833, 8}, + {I_TEST, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43839, 9}, + {I_TEST, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43845, 10}, + {I_TEST, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48867, 8}, + {I_TEST, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43833, 8}, + {I_TEST, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43839, 9}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UD0[] = { + {I_UD0, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50135, 116}, + {I_UD0, 2, {REG_GPR|BITS16,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43851, 35}, + {I_UD0, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43857, 35}, + {I_UD0, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43863, 35}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UD1[] = { + {I_UD1, 2, {REG_GPR|BITS16,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43869, 35}, + {I_UD1, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43875, 35}, + {I_UD1, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43881, 35}, + {I_UD1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50139, 35}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UD2B[] = { + {I_UD2B, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50139, 35}, + {I_UD2B, 2, {REG_GPR|BITS16,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43869, 35}, + {I_UD2B, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43875, 35}, + {I_UD2B, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43881, 35}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UD2[] = { + {I_UD2, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50143, 35}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UD2A[] = { + {I_UD2A, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50143, 35}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UMOV[] = { + {I_UMOV, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43887, 117}, + {I_UMOV, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43887, 111}, + {I_UMOV, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33753, 117}, + {I_UMOV, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33753, 111}, + {I_UMOV, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33760, 117}, + {I_UMOV, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33760, 111}, + {I_UMOV, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43893, 117}, + {I_UMOV, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43893, 111}, + {I_UMOV, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33767, 117}, + {I_UMOV, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33767, 111}, + {I_UMOV, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33774, 117}, + {I_UMOV, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33774, 111}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VERR[] = { + {I_VERR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48872, 62}, + {I_VERR, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48872, 62}, + {I_VERR, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48872, 62}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VERW[] = { + {I_VERW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48877, 62}, + {I_VERW, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48877, 62}, + {I_VERW, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48877, 62}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FWAIT[] = { + {I_FWAIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49721, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WBINVD[] = { + {I_WBINVD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49183, 54}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WRSHR[] = { + {I_WRSHR, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43899, 98}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WRMSR[] = { + {I_WRMSR, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50147, 99}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XADD[] = { + {I_XADD, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43905, 118}, + {I_XADD, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43906, 20}, + {I_XADD, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33781, 118}, + {I_XADD, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33782, 20}, + {I_XADD, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33788, 118}, + {I_XADD, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33789, 20}, + {I_XADD, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33795, 6}, + {I_XADD, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33796, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XBTS[] = { + {I_XBTS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43911, 119}, + {I_XBTS, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43911, 111}, + {I_XBTS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43917, 120}, + {I_XBTS, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43917, 111}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XCHG[] = { + {I_XCHG, 2, {REG_AX,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+50151, 0}, + {I_XCHG, 2, {REG_EAX,REG32NA,0,0,0}, NO_DECORATOR, nasm_bytecodes+50155, 5}, + {I_XCHG, 2, {REG_RAX,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+50159, 7}, + {I_XCHG, 2, {REG_GPR|BITS16,REG_AX,0,0,0}, NO_DECORATOR, nasm_bytecodes+50163, 0}, + {I_XCHG, 2, {REG32NA,REG_EAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+50167, 5}, + {I_XCHG, 2, {REG_GPR|BITS64,REG_RAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+50171, 7}, + {I_XCHG, 2, {REG_EAX,REG_EAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+50175, 19}, + {I_XCHG, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48882, 3}, + {I_XCHG, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48883, 0}, + {I_XCHG, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43923, 3}, + {I_XCHG, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43924, 0}, + {I_XCHG, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43929, 4}, + {I_XCHG, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43930, 5}, + {I_XCHG, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43935, 6}, + {I_XCHG, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43936, 7}, + {I_XCHG, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48887, 3}, + {I_XCHG, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48888, 0}, + {I_XCHG, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43941, 3}, + {I_XCHG, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43942, 0}, + {I_XCHG, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43947, 4}, + {I_XCHG, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43948, 5}, + {I_XCHG, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43953, 6}, + {I_XCHG, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43954, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XLATB[] = { + {I_XLATB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46014, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XLAT[] = { + {I_XLAT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46014, 0}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XOR[] = { + {I_XOR, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48892, 3}, + {I_XOR, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48893, 0}, + {I_XOR, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43959, 3}, + {I_XOR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43960, 0}, + {I_XOR, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43965, 4}, + {I_XOR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43966, 5}, + {I_XOR, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43971, 6}, + {I_XOR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43972, 7}, + {I_XOR, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+40476, 8}, + {I_XOR, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+40476, 0}, + {I_XOR, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48897, 8}, + {I_XOR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48897, 0}, + {I_XOR, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48902, 9}, + {I_XOR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48902, 5}, + {I_XOR, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48907, 10}, + {I_XOR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48907, 7}, + {I_XOR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33802, 11}, + {I_XOR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33809, 12}, + {I_XOR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33816, 13}, + {I_XOR, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+50179, 8}, + {I_XOR, 2, {REG_AX,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33803, 8}, + {I_XOR, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48912, 8}, + {I_XOR, 2, {REG_EAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33810, 9}, + {I_XOR, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48917, 9}, + {I_XOR, 2, {REG_RAX,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33817, 10}, + {I_XOR, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48922, 10}, + {I_XOR, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43977, 3}, + {I_XOR, 2, {RM_GPR|BITS16,SBYTEWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33802, 3}, + {I_XOR, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33823, 3}, + {I_XOR, 2, {RM_GPR|BITS32,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33809, 4}, + {I_XOR, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33830, 4}, + {I_XOR, 2, {RM_GPR|BITS64,SBYTEDWORD,0,0,0}, NO_DECORATOR, nasm_bytecodes+33816, 6}, + {I_XOR, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33837, 6}, + {I_XOR, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43977, 3}, + {I_XOR, 2, {MEMORY,SBYTEWORD|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33802, 3}, + {I_XOR, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33823, 3}, + {I_XOR, 2, {MEMORY,SBYTEDWORD|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33809, 4}, + {I_XOR, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33830, 4}, + {I_XOR, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43983, 14}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVA[] = { + {I_CMOVA, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43989, 121}, + {I_CMOVA, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43989, 89}, + {I_CMOVA, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44085, 121}, + {I_CMOVA, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44085, 89}, + {I_CMOVA, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44181, 10}, + {I_CMOVA, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44181, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVAE[] = { + {I_CMOVAE, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43995, 121}, + {I_CMOVAE, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43995, 89}, + {I_CMOVAE, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44091, 121}, + {I_CMOVAE, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44091, 89}, + {I_CMOVAE, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44187, 10}, + {I_CMOVAE, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44187, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVB[] = { + {I_CMOVB, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44001, 121}, + {I_CMOVB, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44001, 89}, + {I_CMOVB, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44097, 121}, + {I_CMOVB, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44097, 89}, + {I_CMOVB, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44193, 10}, + {I_CMOVB, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44193, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVBE[] = { + {I_CMOVBE, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44007, 121}, + {I_CMOVBE, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44007, 89}, + {I_CMOVBE, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44103, 121}, + {I_CMOVBE, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44103, 89}, + {I_CMOVBE, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44199, 10}, + {I_CMOVBE, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44199, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVC[] = { + {I_CMOVC, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44001, 121}, + {I_CMOVC, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44001, 89}, + {I_CMOVC, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44097, 121}, + {I_CMOVC, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44097, 89}, + {I_CMOVC, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44193, 10}, + {I_CMOVC, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44193, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVE[] = { + {I_CMOVE, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44013, 121}, + {I_CMOVE, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44013, 89}, + {I_CMOVE, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44109, 121}, + {I_CMOVE, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44109, 89}, + {I_CMOVE, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44205, 10}, + {I_CMOVE, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44205, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVG[] = { + {I_CMOVG, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44019, 121}, + {I_CMOVG, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44019, 89}, + {I_CMOVG, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44115, 121}, + {I_CMOVG, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44115, 89}, + {I_CMOVG, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44211, 10}, + {I_CMOVG, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44211, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVGE[] = { + {I_CMOVGE, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44025, 121}, + {I_CMOVGE, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44025, 89}, + {I_CMOVGE, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44121, 121}, + {I_CMOVGE, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44121, 89}, + {I_CMOVGE, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44217, 10}, + {I_CMOVGE, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44217, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVL[] = { + {I_CMOVL, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44031, 121}, + {I_CMOVL, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44031, 89}, + {I_CMOVL, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44127, 121}, + {I_CMOVL, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44127, 89}, + {I_CMOVL, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44223, 10}, + {I_CMOVL, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44223, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVLE[] = { + {I_CMOVLE, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44037, 121}, + {I_CMOVLE, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44037, 89}, + {I_CMOVLE, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44133, 121}, + {I_CMOVLE, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44133, 89}, + {I_CMOVLE, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44229, 10}, + {I_CMOVLE, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44229, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNA[] = { + {I_CMOVNA, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44007, 121}, + {I_CMOVNA, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44007, 89}, + {I_CMOVNA, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44103, 121}, + {I_CMOVNA, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44103, 89}, + {I_CMOVNA, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44199, 10}, + {I_CMOVNA, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44199, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNAE[] = { + {I_CMOVNAE, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44001, 121}, + {I_CMOVNAE, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44001, 89}, + {I_CMOVNAE, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44097, 121}, + {I_CMOVNAE, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44097, 89}, + {I_CMOVNAE, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44193, 10}, + {I_CMOVNAE, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44193, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNB[] = { + {I_CMOVNB, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43995, 121}, + {I_CMOVNB, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43995, 89}, + {I_CMOVNB, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44091, 121}, + {I_CMOVNB, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44091, 89}, + {I_CMOVNB, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44187, 10}, + {I_CMOVNB, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44187, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNBE[] = { + {I_CMOVNBE, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43989, 121}, + {I_CMOVNBE, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43989, 89}, + {I_CMOVNBE, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44085, 121}, + {I_CMOVNBE, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44085, 89}, + {I_CMOVNBE, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44181, 10}, + {I_CMOVNBE, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44181, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNC[] = { + {I_CMOVNC, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43995, 121}, + {I_CMOVNC, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43995, 89}, + {I_CMOVNC, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44091, 121}, + {I_CMOVNC, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44091, 89}, + {I_CMOVNC, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44187, 10}, + {I_CMOVNC, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44187, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNE[] = { + {I_CMOVNE, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44043, 121}, + {I_CMOVNE, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44043, 89}, + {I_CMOVNE, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44139, 121}, + {I_CMOVNE, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44139, 89}, + {I_CMOVNE, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44235, 10}, + {I_CMOVNE, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44235, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNG[] = { + {I_CMOVNG, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44037, 121}, + {I_CMOVNG, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44037, 89}, + {I_CMOVNG, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44133, 121}, + {I_CMOVNG, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44133, 89}, + {I_CMOVNG, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44229, 10}, + {I_CMOVNG, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44229, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNGE[] = { + {I_CMOVNGE, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44031, 121}, + {I_CMOVNGE, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44031, 89}, + {I_CMOVNGE, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44127, 121}, + {I_CMOVNGE, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44127, 89}, + {I_CMOVNGE, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44223, 10}, + {I_CMOVNGE, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44223, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNL[] = { + {I_CMOVNL, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44025, 121}, + {I_CMOVNL, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44025, 89}, + {I_CMOVNL, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44121, 121}, + {I_CMOVNL, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44121, 89}, + {I_CMOVNL, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44217, 10}, + {I_CMOVNL, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44217, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNLE[] = { + {I_CMOVNLE, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44019, 121}, + {I_CMOVNLE, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44019, 89}, + {I_CMOVNLE, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44115, 121}, + {I_CMOVNLE, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44115, 89}, + {I_CMOVNLE, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44211, 10}, + {I_CMOVNLE, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44211, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNO[] = { + {I_CMOVNO, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44049, 121}, + {I_CMOVNO, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44049, 89}, + {I_CMOVNO, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44145, 121}, + {I_CMOVNO, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44145, 89}, + {I_CMOVNO, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44241, 10}, + {I_CMOVNO, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44241, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNP[] = { + {I_CMOVNP, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44055, 121}, + {I_CMOVNP, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44055, 89}, + {I_CMOVNP, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44151, 121}, + {I_CMOVNP, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44151, 89}, + {I_CMOVNP, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44247, 10}, + {I_CMOVNP, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44247, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNS[] = { + {I_CMOVNS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44061, 121}, + {I_CMOVNS, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44061, 89}, + {I_CMOVNS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44157, 121}, + {I_CMOVNS, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44157, 89}, + {I_CMOVNS, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44253, 10}, + {I_CMOVNS, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44253, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVNZ[] = { + {I_CMOVNZ, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44043, 121}, + {I_CMOVNZ, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44043, 89}, + {I_CMOVNZ, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44139, 121}, + {I_CMOVNZ, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44139, 89}, + {I_CMOVNZ, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44235, 10}, + {I_CMOVNZ, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44235, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVO[] = { + {I_CMOVO, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44067, 121}, + {I_CMOVO, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44067, 89}, + {I_CMOVO, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44163, 121}, + {I_CMOVO, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44163, 89}, + {I_CMOVO, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44259, 10}, + {I_CMOVO, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44259, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVP[] = { + {I_CMOVP, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44073, 121}, + {I_CMOVP, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44073, 89}, + {I_CMOVP, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44169, 121}, + {I_CMOVP, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44169, 89}, + {I_CMOVP, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44265, 10}, + {I_CMOVP, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44265, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVPE[] = { + {I_CMOVPE, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44073, 121}, + {I_CMOVPE, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44073, 89}, + {I_CMOVPE, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44169, 121}, + {I_CMOVPE, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44169, 89}, + {I_CMOVPE, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44265, 10}, + {I_CMOVPE, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44265, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVPO[] = { + {I_CMOVPO, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44055, 121}, + {I_CMOVPO, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44055, 89}, + {I_CMOVPO, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44151, 121}, + {I_CMOVPO, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44151, 89}, + {I_CMOVPO, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44247, 10}, + {I_CMOVPO, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44247, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVS[] = { + {I_CMOVS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44079, 121}, + {I_CMOVS, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44079, 89}, + {I_CMOVS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44175, 121}, + {I_CMOVS, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44175, 89}, + {I_CMOVS, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44271, 10}, + {I_CMOVS, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44271, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMOVZ[] = { + {I_CMOVZ, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44013, 121}, + {I_CMOVZ, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44013, 89}, + {I_CMOVZ, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44109, 121}, + {I_CMOVZ, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44109, 89}, + {I_CMOVZ, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44205, 10}, + {I_CMOVZ, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44205, 7}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JA[] = { + {I_JA, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44277, 122}, + {I_JA, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44373, 23}, + {I_JA, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44469, 23}, + {I_JA, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44565, 24}, + {I_JA, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48928, 21}, + {I_JA, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48927, 21}, + {I_JA, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44566, 122}, + {I_JA, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33844, 21}, + {I_JA, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48928, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JAE[] = { + {I_JAE, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44283, 122}, + {I_JAE, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44379, 23}, + {I_JAE, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44475, 23}, + {I_JAE, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44571, 24}, + {I_JAE, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48933, 21}, + {I_JAE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48932, 21}, + {I_JAE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44572, 122}, + {I_JAE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33851, 21}, + {I_JAE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48933, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JB[] = { + {I_JB, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44289, 122}, + {I_JB, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44385, 23}, + {I_JB, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44481, 23}, + {I_JB, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44577, 24}, + {I_JB, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48938, 21}, + {I_JB, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48937, 21}, + {I_JB, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44578, 122}, + {I_JB, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33858, 21}, + {I_JB, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48938, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JBE[] = { + {I_JBE, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44295, 122}, + {I_JBE, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44391, 23}, + {I_JBE, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44487, 23}, + {I_JBE, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44583, 24}, + {I_JBE, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48943, 21}, + {I_JBE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48942, 21}, + {I_JBE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44584, 122}, + {I_JBE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33865, 21}, + {I_JBE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48943, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JC[] = { + {I_JC, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44289, 122}, + {I_JC, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44385, 23}, + {I_JC, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44481, 23}, + {I_JC, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44577, 24}, + {I_JC, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48938, 21}, + {I_JC, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48937, 21}, + {I_JC, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44578, 122}, + {I_JC, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33858, 21}, + {I_JC, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48938, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JE[] = { + {I_JE, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44301, 122}, + {I_JE, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44397, 23}, + {I_JE, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44493, 23}, + {I_JE, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44589, 24}, + {I_JE, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48948, 21}, + {I_JE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48947, 21}, + {I_JE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44590, 122}, + {I_JE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33872, 21}, + {I_JE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48948, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JG[] = { + {I_JG, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44307, 122}, + {I_JG, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44403, 23}, + {I_JG, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44499, 23}, + {I_JG, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44595, 24}, + {I_JG, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48953, 21}, + {I_JG, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48952, 21}, + {I_JG, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44596, 122}, + {I_JG, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33879, 21}, + {I_JG, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48953, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JGE[] = { + {I_JGE, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44313, 122}, + {I_JGE, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44409, 23}, + {I_JGE, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44505, 23}, + {I_JGE, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44601, 24}, + {I_JGE, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48958, 21}, + {I_JGE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48957, 21}, + {I_JGE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44602, 122}, + {I_JGE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33886, 21}, + {I_JGE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48958, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JL[] = { + {I_JL, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44319, 122}, + {I_JL, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44415, 23}, + {I_JL, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44511, 23}, + {I_JL, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44607, 24}, + {I_JL, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48963, 21}, + {I_JL, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48962, 21}, + {I_JL, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44608, 122}, + {I_JL, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33893, 21}, + {I_JL, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48963, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JLE[] = { + {I_JLE, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44325, 122}, + {I_JLE, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44421, 23}, + {I_JLE, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44517, 23}, + {I_JLE, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44613, 24}, + {I_JLE, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48968, 21}, + {I_JLE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48967, 21}, + {I_JLE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44614, 122}, + {I_JLE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33900, 21}, + {I_JLE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48968, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNA[] = { + {I_JNA, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44295, 122}, + {I_JNA, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44391, 23}, + {I_JNA, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44487, 23}, + {I_JNA, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44583, 24}, + {I_JNA, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48943, 21}, + {I_JNA, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48942, 21}, + {I_JNA, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44584, 122}, + {I_JNA, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33865, 21}, + {I_JNA, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48943, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNAE[] = { + {I_JNAE, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44289, 122}, + {I_JNAE, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44385, 23}, + {I_JNAE, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44481, 23}, + {I_JNAE, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44577, 24}, + {I_JNAE, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48938, 21}, + {I_JNAE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48937, 21}, + {I_JNAE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44578, 122}, + {I_JNAE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33858, 21}, + {I_JNAE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48938, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNB[] = { + {I_JNB, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44283, 122}, + {I_JNB, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44379, 23}, + {I_JNB, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44475, 23}, + {I_JNB, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44571, 24}, + {I_JNB, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48933, 21}, + {I_JNB, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48932, 21}, + {I_JNB, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44572, 122}, + {I_JNB, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33851, 21}, + {I_JNB, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48933, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNBE[] = { + {I_JNBE, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44277, 122}, + {I_JNBE, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44373, 23}, + {I_JNBE, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44469, 23}, + {I_JNBE, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44565, 24}, + {I_JNBE, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48928, 21}, + {I_JNBE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48927, 21}, + {I_JNBE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44566, 122}, + {I_JNBE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33844, 21}, + {I_JNBE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48928, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNC[] = { + {I_JNC, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44283, 122}, + {I_JNC, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44379, 23}, + {I_JNC, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44475, 23}, + {I_JNC, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44571, 24}, + {I_JNC, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48933, 21}, + {I_JNC, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48932, 21}, + {I_JNC, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44572, 122}, + {I_JNC, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33851, 21}, + {I_JNC, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48933, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNE[] = { + {I_JNE, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44331, 122}, + {I_JNE, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44427, 23}, + {I_JNE, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44523, 23}, + {I_JNE, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44619, 24}, + {I_JNE, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48973, 21}, + {I_JNE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48972, 21}, + {I_JNE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44620, 122}, + {I_JNE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33907, 21}, + {I_JNE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48973, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNG[] = { + {I_JNG, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44325, 122}, + {I_JNG, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44421, 23}, + {I_JNG, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44517, 23}, + {I_JNG, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44613, 24}, + {I_JNG, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48968, 21}, + {I_JNG, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48967, 21}, + {I_JNG, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44614, 122}, + {I_JNG, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33900, 21}, + {I_JNG, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48968, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNGE[] = { + {I_JNGE, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44319, 122}, + {I_JNGE, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44415, 23}, + {I_JNGE, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44511, 23}, + {I_JNGE, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44607, 24}, + {I_JNGE, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48963, 21}, + {I_JNGE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48962, 21}, + {I_JNGE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44608, 122}, + {I_JNGE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33893, 21}, + {I_JNGE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48963, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNL[] = { + {I_JNL, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44313, 122}, + {I_JNL, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44409, 23}, + {I_JNL, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44505, 23}, + {I_JNL, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44601, 24}, + {I_JNL, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48958, 21}, + {I_JNL, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48957, 21}, + {I_JNL, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44602, 122}, + {I_JNL, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33886, 21}, + {I_JNL, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48958, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNLE[] = { + {I_JNLE, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44307, 122}, + {I_JNLE, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44403, 23}, + {I_JNLE, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44499, 23}, + {I_JNLE, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44595, 24}, + {I_JNLE, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48953, 21}, + {I_JNLE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48952, 21}, + {I_JNLE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44596, 122}, + {I_JNLE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33879, 21}, + {I_JNLE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48953, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNO[] = { + {I_JNO, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44337, 122}, + {I_JNO, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44433, 23}, + {I_JNO, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44529, 23}, + {I_JNO, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44625, 24}, + {I_JNO, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48978, 21}, + {I_JNO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48977, 21}, + {I_JNO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44626, 122}, + {I_JNO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33914, 21}, + {I_JNO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48978, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNP[] = { + {I_JNP, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44343, 122}, + {I_JNP, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44439, 23}, + {I_JNP, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44535, 23}, + {I_JNP, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44631, 24}, + {I_JNP, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48983, 21}, + {I_JNP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48982, 21}, + {I_JNP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44632, 122}, + {I_JNP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33921, 21}, + {I_JNP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48983, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNS[] = { + {I_JNS, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44349, 122}, + {I_JNS, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44445, 23}, + {I_JNS, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44541, 23}, + {I_JNS, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44637, 24}, + {I_JNS, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48988, 21}, + {I_JNS, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48987, 21}, + {I_JNS, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44638, 122}, + {I_JNS, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33928, 21}, + {I_JNS, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48988, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JNZ[] = { + {I_JNZ, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44331, 122}, + {I_JNZ, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44427, 23}, + {I_JNZ, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44523, 23}, + {I_JNZ, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44619, 24}, + {I_JNZ, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48973, 21}, + {I_JNZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48972, 21}, + {I_JNZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44620, 122}, + {I_JNZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33907, 21}, + {I_JNZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48973, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JO[] = { + {I_JO, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44355, 122}, + {I_JO, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44451, 23}, + {I_JO, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44547, 23}, + {I_JO, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44643, 24}, + {I_JO, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48993, 21}, + {I_JO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48992, 21}, + {I_JO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44644, 122}, + {I_JO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33935, 21}, + {I_JO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48993, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JP[] = { + {I_JP, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44361, 122}, + {I_JP, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44457, 23}, + {I_JP, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44553, 23}, + {I_JP, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44649, 24}, + {I_JP, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48998, 21}, + {I_JP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48997, 21}, + {I_JP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44650, 122}, + {I_JP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33942, 21}, + {I_JP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48998, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JPE[] = { + {I_JPE, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44361, 122}, + {I_JPE, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44457, 23}, + {I_JPE, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44553, 23}, + {I_JPE, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44649, 24}, + {I_JPE, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48998, 21}, + {I_JPE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48997, 21}, + {I_JPE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44650, 122}, + {I_JPE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33942, 21}, + {I_JPE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48998, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JPO[] = { + {I_JPO, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44343, 122}, + {I_JPO, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44439, 23}, + {I_JPO, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44535, 23}, + {I_JPO, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44631, 24}, + {I_JPO, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48983, 21}, + {I_JPO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48982, 21}, + {I_JPO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44632, 122}, + {I_JPO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33921, 21}, + {I_JPO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48983, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JS[] = { + {I_JS, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44367, 122}, + {I_JS, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44463, 23}, + {I_JS, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44559, 23}, + {I_JS, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44655, 24}, + {I_JS, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49003, 21}, + {I_JS, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49002, 21}, + {I_JS, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44656, 122}, + {I_JS, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33949, 21}, + {I_JS, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49003, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_JZ[] = { + {I_JZ, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44301, 122}, + {I_JZ, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44397, 23}, + {I_JZ, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44493, 23}, + {I_JZ, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44589, 24}, + {I_JZ, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48948, 21}, + {I_JZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48947, 21}, + {I_JZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44590, 122}, + {I_JZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33872, 21}, + {I_JZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48948, 21}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETA[] = { + {I_SETA, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49007, 53}, + {I_SETA, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49007, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETAE[] = { + {I_SETAE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49012, 53}, + {I_SETAE, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49012, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETB[] = { + {I_SETB, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49017, 53}, + {I_SETB, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49017, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETBE[] = { + {I_SETBE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49022, 53}, + {I_SETBE, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49022, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETC[] = { + {I_SETC, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49017, 53}, + {I_SETC, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49017, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETE[] = { + {I_SETE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49027, 53}, + {I_SETE, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49027, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETG[] = { + {I_SETG, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49032, 53}, + {I_SETG, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49032, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETGE[] = { + {I_SETGE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49037, 53}, + {I_SETGE, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49037, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETL[] = { + {I_SETL, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49042, 53}, + {I_SETL, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49042, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETLE[] = { + {I_SETLE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49047, 53}, + {I_SETLE, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49047, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNA[] = { + {I_SETNA, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49022, 53}, + {I_SETNA, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49022, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNAE[] = { + {I_SETNAE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49017, 53}, + {I_SETNAE, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49017, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNB[] = { + {I_SETNB, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49012, 53}, + {I_SETNB, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49012, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNBE[] = { + {I_SETNBE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49007, 53}, + {I_SETNBE, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49007, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNC[] = { + {I_SETNC, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49012, 53}, + {I_SETNC, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49012, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNE[] = { + {I_SETNE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49052, 53}, + {I_SETNE, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49052, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNG[] = { + {I_SETNG, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49047, 53}, + {I_SETNG, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49047, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNGE[] = { + {I_SETNGE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49042, 53}, + {I_SETNGE, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49042, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNL[] = { + {I_SETNL, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49037, 53}, + {I_SETNL, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49037, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNLE[] = { + {I_SETNLE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49032, 53}, + {I_SETNLE, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49032, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNO[] = { + {I_SETNO, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49057, 53}, + {I_SETNO, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49057, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNP[] = { + {I_SETNP, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49062, 53}, + {I_SETNP, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49062, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNS[] = { + {I_SETNS, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49067, 53}, + {I_SETNS, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49067, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETNZ[] = { + {I_SETNZ, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49052, 53}, + {I_SETNZ, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49052, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETO[] = { + {I_SETO, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49072, 53}, + {I_SETO, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49072, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETP[] = { + {I_SETP, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49077, 53}, + {I_SETP, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49077, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETPE[] = { + {I_SETPE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49077, 53}, + {I_SETPE, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49077, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETPO[] = { + {I_SETPO, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49062, 53}, + {I_SETPO, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49062, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETS[] = { + {I_SETS, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49082, 53}, + {I_SETS, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49082, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETZ[] = { + {I_SETZ, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49027, 53}, + {I_SETZ, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49027, 5}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ADDPS[] = { + {I_ADDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44661, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ADDSS[] = { + {I_ADDSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44667, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ANDNPS[] = { + {I_ANDNPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44673, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ANDPS[] = { + {I_ANDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44679, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPEQPS[] = { + {I_CMPEQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12528, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPEQSS[] = { + {I_CMPEQSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12536, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPLEPS[] = { + {I_CMPLEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12544, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPLESS[] = { + {I_CMPLESS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12552, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPLTPS[] = { + {I_CMPLTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12560, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPLTSS[] = { + {I_CMPLTSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12568, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNEQPS[] = { + {I_CMPNEQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12576, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNEQSS[] = { + {I_CMPNEQSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12584, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNLEPS[] = { + {I_CMPNLEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12592, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNLESS[] = { + {I_CMPNLESS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12600, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNLTPS[] = { + {I_CMPNLTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12608, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNLTSS[] = { + {I_CMPNLTSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12616, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPORDPS[] = { + {I_CMPORDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12624, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPORDSS[] = { + {I_CMPORDSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12632, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPUNORDPS[] = { + {I_CMPUNORDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12640, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPUNORDSS[] = { + {I_CMPUNORDSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12648, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPPS[] = { + {I_CMPPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+33956, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPSS[] = { + {I_CMPSS, 3, {XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+33963, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_COMISS[] = { + {I_COMISS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44685, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTPI2PS[] = { + {I_CVTPI2PS, 2, {XMM_L16,RM_MMX|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44691, 124}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTPS2PI[] = { + {I_CVTPS2PI, 2, {MMXREG,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44697, 124}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTSI2SS[] = { + {I_CVTSI2SS, 2, {XMM_L16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33971, 125}, + {I_CVTSI2SS, 2, {XMM_L16,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33971, 125}, + {I_CVTSI2SS, 2, {XMM_L16,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33970, 126}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTSS2SI[] = { + {I_CVTSS2SI, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33978, 125}, + {I_CVTSS2SI, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33978, 125}, + {I_CVTSS2SI, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33977, 127}, + {I_CVTSS2SI, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33977, 127}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTTPS2PI[] = { + {I_CVTTPS2PI, 2, {MMXREG,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44703, 128}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTTSS2SI[] = { + {I_CVTTSS2SI, 2, {REG_GPR|BITS32,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33985, 125}, + {I_CVTTSS2SI, 2, {REG_GPR|BITS64,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33984, 127}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_DIVPS[] = { + {I_DIVPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44709, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_DIVSS[] = { + {I_DIVSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44715, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LDMXCSR[] = { + {I_LDMXCSR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44721, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MAXPS[] = { + {I_MAXPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44727, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MAXSS[] = { + {I_MAXSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44733, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MINPS[] = { + {I_MINPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44739, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MINSS[] = { + {I_MINSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44745, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVAPS[] = { + {I_MOVAPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44751, 123}, + {I_MOVAPS, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44757, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVHPS[] = { + {I_MOVHPS, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44763, 123}, + {I_MOVHPS, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44769, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVLHPS[] = { + {I_MOVLHPS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44763, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVLPS[] = { + {I_MOVLPS, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43893, 123}, + {I_MOVLPS, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44775, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVHLPS[] = { + {I_MOVHLPS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43893, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVMSKPS[] = { + {I_MOVMSKPS, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44781, 123}, + {I_MOVMSKPS, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33991, 129}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVNTPS[] = { + {I_MOVNTPS, 2, {MEMORY|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44787, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVSS[] = { + {I_MOVSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44793, 123}, + {I_MOVSS, 2, {RM_XMM_L16|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44799, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVUPS[] = { + {I_MOVUPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44805, 123}, + {I_MOVUPS, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44811, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MULPS[] = { + {I_MULPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44817, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MULSS[] = { + {I_MULSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44823, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ORPS[] = { + {I_ORPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44829, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RCPPS[] = { + {I_RCPPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44835, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RCPSS[] = { + {I_RCPSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44841, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RSQRTPS[] = { + {I_RSQRTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44847, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RSQRTSS[] = { + {I_RSQRTSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44853, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHUFPS[] = { + {I_SHUFPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+33998, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SQRTPS[] = { + {I_SQRTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44859, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SQRTSS[] = { + {I_SQRTSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44865, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STMXCSR[] = { + {I_STMXCSR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44871, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SUBPS[] = { + {I_SUBPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44877, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SUBSS[] = { + {I_SUBSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44883, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UCOMISS[] = { + {I_UCOMISS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44889, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UNPCKHPS[] = { + {I_UNPCKHPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44895, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UNPCKLPS[] = { + {I_UNPCKLPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44901, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XORPS[] = { + {I_XORPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44907, 123}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FXRSTOR[] = { + {I_FXRSTOR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34006, 130}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FXRSTOR64[] = { + {I_FXRSTOR64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34005, 131}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FXSAVE[] = { + {I_FXSAVE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34013, 130}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_FXSAVE64[] = { + {I_FXSAVE64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34012, 131}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XGETBV[] = { + {I_XGETBV, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49087, 132}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSETBV[] = { + {I_XSETBV, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49092, 133}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSAVE[] = { + {I_XSAVE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34020, 132}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSAVE64[] = { + {I_XSAVE64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34019, 134}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSAVEC[] = { + {I_XSAVEC, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34027, 135}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSAVEC64[] = { + {I_XSAVEC64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34026, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSAVEOPT[] = { + {I_XSAVEOPT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34034, 135}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSAVEOPT64[] = { + {I_XSAVEOPT64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34033, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSAVES[] = { + {I_XSAVES, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34041, 135}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSAVES64[] = { + {I_XSAVES64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34040, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XRSTOR[] = { + {I_XRSTOR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34048, 132}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XRSTOR64[] = { + {I_XRSTOR64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34047, 134}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XRSTORS[] = { + {I_XRSTORS, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34055, 135}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XRSTORS64[] = { + {I_XRSTORS64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34054, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PREFETCHNTA[] = { + {I_PREFETCHNTA, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46126, 137}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PREFETCHT0[] = { + {I_PREFETCHT0, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46144, 137}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PREFETCHT1[] = { + {I_PREFETCHT1, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46162, 137}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PREFETCHT2[] = { + {I_PREFETCHT2, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46180, 137}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PREFETCHIT0[] = { + {I_PREFETCHIT0, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46252, 138}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PREFETCHIT1[] = { + {I_PREFETCHIT1, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46234, 138}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MASKMOVQ[] = { + {I_MASKMOVQ, 2, {MMXREG,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+44913, 140}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVNTQ[] = { + {I_MOVNTQ, 2, {MEMORY,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+44919, 141}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PAVGB[] = { + {I_PAVGB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34061, 141}, + {I_PAVGB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45087, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PAVGW[] = { + {I_PAVGW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34068, 141}, + {I_PAVGW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45093, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PEXTRW[] = { + {I_PEXTRW, 3, {REG_GPR|BITS32,MMXREG,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34075, 142}, + {I_PEXTRW, 3, {REG_GPR|BITS32,XMM_L16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34166, 152}, + {I_PEXTRW, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34166, 153}, + {I_PEXTRW, 3, {REG_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4277, 173}, + {I_PEXTRW, 3, {MEMORY|BITS16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4277, 173}, + {I_PEXTRW, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4276, 174}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PINSRW[] = { + {I_PINSRW, 3, {MMXREG,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34082, 142}, + {I_PINSRW, 3, {MMXREG,RM_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34082, 142}, + {I_PINSRW, 3, {MMXREG,REG_GPR|BITS32,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34082, 142}, + {I_PINSRW, 3, {XMM_L16,REG_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34173, 152}, + {I_PINSRW, 3, {XMM_L16,REG_GPR|BITS32,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34173, 152}, + {I_PINSRW, 3, {XMM_L16,REG_GPR|BITS64,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34173, 153}, + {I_PINSRW, 3, {XMM_L16,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34173, 152}, + {I_PINSRW, 3, {XMM_L16,MEMORY|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34173, 152}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMAXSW[] = { + {I_PMAXSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34089, 141}, + {I_PMAXSW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45141, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMAXUB[] = { + {I_PMAXUB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34096, 141}, + {I_PMAXUB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45147, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMINSW[] = { + {I_PMINSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34103, 141}, + {I_PMINSW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45153, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMINUB[] = { + {I_PMINUB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34110, 141}, + {I_PMINUB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45159, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVMSKB[] = { + {I_PMOVMSKB, 2, {REG_GPR|BITS32,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+44925, 140}, + {I_PMOVMSKB, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45165, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMULHUW[] = { + {I_PMULHUW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34117, 141}, + {I_PMULHUW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45171, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSADBW[] = { + {I_PSADBW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34124, 141}, + {I_PSADBW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45201, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSHUFW[] = { + {I_PSHUFW, 3, {MMXREG,RM_MMX,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+12656, 143}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PF2IW[] = { + {I_PF2IW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12664, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFNACC[] = { + {I_PFNACC, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12672, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFPNACC[] = { + {I_PFPNACC, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12680, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PI2FW[] = { + {I_PI2FW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12688, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSWAPD[] = { + {I_PSWAPD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12696, 91}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MASKMOVDQU[] = { + {I_MASKMOVDQU, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44931, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLFLUSH[] = { + {I_CLFLUSH, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44937, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVNTDQ[] = { + {I_MOVNTDQ, 2, {MEMORY,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44943, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVNTI[] = { + {I_MOVNTI, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34132, 146}, + {I_MOVNTI, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34131, 147}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVNTPD[] = { + {I_MOVNTPD, 2, {MEMORY,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44949, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVDQA[] = { + {I_MOVDQA, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44955, 145}, + {I_MOVDQA, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44961, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVDQU[] = { + {I_MOVDQU, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44967, 145}, + {I_MOVDQU, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44973, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVDQ2Q[] = { + {I_MOVDQ2Q, 2, {MMXREG,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44979, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVQ2DQ[] = { + {I_MOVQ2DQ, 2, {XMM_L16,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+44997, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PADDQ[] = { + {I_PADDQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+45039, 151}, + {I_PADDQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45045, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMULUDQ[] = { + {I_PMULUDQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34180, 145}, + {I_PMULUDQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45189, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSHUFD[] = { + {I_PSHUFD, 3, {XMM_L16,XMM_L16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34187, 152}, + {I_PSHUFD, 3, {XMM_L16,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34187, 154}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSHUFHW[] = { + {I_PSHUFHW, 3, {XMM_L16,XMM_L16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34194, 152}, + {I_PSHUFHW, 3, {XMM_L16,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34194, 154}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSHUFLW[] = { + {I_PSHUFLW, 3, {XMM_L16,XMM_L16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34201, 152}, + {I_PSHUFLW, 3, {XMM_L16,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34201, 154}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSLLDQ[] = { + {I_PSLLDQ, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34208, 155}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSRLDQ[] = { + {I_PSRLDQ, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34250, 155}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSUBQ[] = { + {I_PSUBQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34278, 145}, + {I_PSUBQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45273, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUNPCKHQDQ[] = { + {I_PUNPCKHQDQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45321, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PUNPCKLQDQ[] = { + {I_PUNPCKLQDQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45345, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ADDPD[] = { + {I_ADDPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45357, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ADDSD[] = { + {I_ADDSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45363, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ANDNPD[] = { + {I_ANDNPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45369, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ANDPD[] = { + {I_ANDPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45375, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPEQPD[] = { + {I_CMPEQPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12704, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPEQSD[] = { + {I_CMPEQSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12712, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPLEPD[] = { + {I_CMPLEPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12720, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPLESD[] = { + {I_CMPLESD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12728, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPLTPD[] = { + {I_CMPLTPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12736, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPLTSD[] = { + {I_CMPLTSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12744, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNEQPD[] = { + {I_CMPNEQPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12752, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNEQSD[] = { + {I_CMPNEQSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12760, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNLEPD[] = { + {I_CMPNLEPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12768, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNLESD[] = { + {I_CMPNLESD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12776, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNLTPD[] = { + {I_CMPNLTPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12784, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNLTSD[] = { + {I_CMPNLTSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12792, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPORDPD[] = { + {I_CMPORDPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12800, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPORDSD[] = { + {I_CMPORDSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12808, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPUNORDPD[] = { + {I_CMPUNORDPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12816, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPUNORDSD[] = { + {I_CMPUNORDSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12824, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPPD[] = { + {I_CMPPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+34285, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_COMISD[] = { + {I_COMISD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45381, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTDQ2PD[] = { + {I_CVTDQ2PD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45387, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTDQ2PS[] = { + {I_CVTDQ2PS, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45393, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTPD2DQ[] = { + {I_CVTPD2DQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45399, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTPD2PI[] = { + {I_CVTPD2PI, 2, {MMXREG,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45405, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTPD2PS[] = { + {I_CVTPD2PS, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45411, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTPI2PD[] = { + {I_CVTPI2PD, 2, {XMM_L16,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+45417, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTPS2DQ[] = { + {I_CVTPS2DQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45423, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTPS2PD[] = { + {I_CVTPS2PD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45429, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTSD2SI[] = { + {I_CVTSD2SI, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34299, 156}, + {I_CVTSD2SI, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+34299, 156}, + {I_CVTSD2SI, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34306, 157}, + {I_CVTSD2SI, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+34306, 157}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTSD2SS[] = { + {I_CVTSD2SS, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45435, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTSI2SD[] = { + {I_CVTSI2SD, 2, {XMM_L16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+34321, 158}, + {I_CVTSI2SD, 2, {XMM_L16,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34313, 158}, + {I_CVTSI2SD, 2, {XMM_L16,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34320, 157}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTSS2SD[] = { + {I_CVTSS2SD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45441, 148}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTTPD2PI[] = { + {I_CVTTPD2PI, 2, {MMXREG,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45447, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTTPD2DQ[] = { + {I_CVTTPD2DQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45453, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTTPS2DQ[] = { + {I_CVTTPS2DQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45459, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CVTTSD2SI[] = { + {I_CVTTSD2SI, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34327, 156}, + {I_CVTTSD2SI, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+34327, 156}, + {I_CVTTSD2SI, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34334, 157}, + {I_CVTTSD2SI, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+34334, 157}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_DIVPD[] = { + {I_DIVPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45465, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_DIVSD[] = { + {I_DIVSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45471, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MAXPD[] = { + {I_MAXPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45477, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MAXSD[] = { + {I_MAXSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45483, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MINPD[] = { + {I_MINPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45489, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MINSD[] = { + {I_MINSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45495, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVAPD[] = { + {I_MOVAPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45501, 144}, + {I_MOVAPD, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45507, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVHPD[] = { + {I_MOVHPD, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45513, 144}, + {I_MOVHPD, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45519, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVLPD[] = { + {I_MOVLPD, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45525, 144}, + {I_MOVLPD, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45531, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVMSKPD[] = { + {I_MOVMSKPD, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45537, 144}, + {I_MOVMSKPD, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34341, 150}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVUPD[] = { + {I_MOVUPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45555, 144}, + {I_MOVUPD, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45561, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MULPD[] = { + {I_MULPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45567, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MULSD[] = { + {I_MULSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45573, 149}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ORPD[] = { + {I_ORPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45579, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHUFPD[] = { + {I_SHUFPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+34348, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SQRTPD[] = { + {I_SQRTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45585, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SQRTSD[] = { + {I_SQRTSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45591, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SUBPD[] = { + {I_SUBPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45597, 145}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SUBSD[] = { + {I_SUBSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45603, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UCOMISD[] = { + {I_UCOMISD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45609, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UNPCKHPD[] = { + {I_UNPCKHPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45615, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UNPCKLPD[] = { + {I_UNPCKLPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45621, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XORPD[] = { + {I_XORPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45627, 144}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ADDSUBPD[] = { + {I_ADDSUBPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45633, 159}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ADDSUBPS[] = { + {I_ADDSUBPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45639, 159}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HADDPD[] = { + {I_HADDPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45645, 159}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HADDPS[] = { + {I_HADDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45651, 159}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HSUBPD[] = { + {I_HSUBPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45657, 159}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HSUBPS[] = { + {I_HSUBPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45663, 159}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LDDQU[] = { + {I_LDDQU, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45669, 159}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVDDUP[] = { + {I_MOVDDUP, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45675, 160}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVSHDUP[] = { + {I_MOVSHDUP, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45681, 161}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVSLDUP[] = { + {I_MOVSLDUP, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45687, 161}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLGI[] = { + {I_CLGI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49097, 162}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STGI[] = { + {I_STGI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49102, 162}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMCALL[] = { + {I_VMCALL, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45730, 163}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMCLEAR[] = { + {I_VMCLEAR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45693, 163}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMFUNC[] = { + {I_VMFUNC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49107, 163}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMLAUNCH[] = { + {I_VMLAUNCH, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49112, 163}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMLOAD[] = { + {I_VMLOAD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49117, 162}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMMCALL[] = { + {I_VMMCALL, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49122, 162}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMPTRLD[] = { + {I_VMPTRLD, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45699, 163}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMPTRST[] = { + {I_VMPTRST, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45705, 163}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMREAD[] = { + {I_VMREAD, 2, {RM_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34356, 164}, + {I_VMREAD, 2, {RM_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34355, 165}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMRESUME[] = { + {I_VMRESUME, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49127, 163}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMRUN[] = { + {I_VMRUN, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49132, 162}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMSAVE[] = { + {I_VMSAVE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49137, 162}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMWRITE[] = { + {I_VMWRITE, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34363, 164}, + {I_VMWRITE, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34362, 165}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMXOFF[] = { + {I_VMXOFF, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49142, 163}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMXON[] = { + {I_VMXON, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42511, 163}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INVEPT[] = { + {I_INVEPT, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+12833, 166}, + {I_INVEPT, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+12832, 167}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INVVPID[] = { + {I_INVVPID, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+12841, 166}, + {I_INVVPID, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+12840, 167}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PVALIDATE[] = { + {I_PVALIDATE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45711, 162}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RMPADJUST[] = { + {I_RMPADJUST, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45717, 162}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMGEXIT[] = { + {I_VMGEXIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45723, 162}, + {I_VMGEXIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45729, 162}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PABSB[] = { + {I_PABSB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34369, 168}, + {I_PABSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34376, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PABSW[] = { + {I_PABSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34383, 168}, + {I_PABSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34390, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PABSD[] = { + {I_PABSD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34397, 168}, + {I_PABSD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34404, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PALIGNR[] = { + {I_PALIGNR, 3, {MMXREG,RM_MMX,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+12848, 168}, + {I_PALIGNR, 3, {XMM_L16,RM_XMM_L16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+12856, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PHADDW[] = { + {I_PHADDW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34411, 168}, + {I_PHADDW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34418, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PHADDD[] = { + {I_PHADDD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34425, 168}, + {I_PHADDD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34432, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PHADDSW[] = { + {I_PHADDSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34439, 168}, + {I_PHADDSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34446, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PHSUBW[] = { + {I_PHSUBW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34453, 168}, + {I_PHSUBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34460, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PHSUBD[] = { + {I_PHSUBD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34467, 168}, + {I_PHSUBD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34474, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PHSUBSW[] = { + {I_PHSUBSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34481, 168}, + {I_PHSUBSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34488, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMADDUBSW[] = { + {I_PMADDUBSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34495, 168}, + {I_PMADDUBSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34502, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMULHRSW[] = { + {I_PMULHRSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34509, 168}, + {I_PMULHRSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34516, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSHUFB[] = { + {I_PSHUFB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34523, 168}, + {I_PSHUFB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34530, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSIGNB[] = { + {I_PSIGNB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34537, 168}, + {I_PSIGNB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34544, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSIGNW[] = { + {I_PSIGNW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34551, 168}, + {I_PSIGNW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34558, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PSIGND[] = { + {I_PSIGND, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34565, 168}, + {I_PSIGND, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34572, 169}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_EXTRQ[] = { + {I_EXTRQ, 3, {XMM_L16,IMMEDIATE,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+12864, 170}, + {I_EXTRQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45735, 170}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INSERTQ[] = { + {I_INSERTQ, 4, {XMM_L16,XMM_L16,IMMEDIATE,IMMEDIATE,0}, NO_DECORATOR, nasm_bytecodes+12872, 170}, + {I_INSERTQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45741, 170}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVNTSD[] = { + {I_MOVNTSD, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45747, 171}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVNTSS[] = { + {I_MOVNTSS, 2, {MEMORY|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45753, 172}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LZCNT[] = { + {I_LZCNT, 2, {REG_GPR|BITS16,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34579, 113}, + {I_LZCNT, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34586, 113}, + {I_LZCNT, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34593, 59}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLENDPD[] = { + {I_BLENDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12880, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLENDPS[] = { + {I_BLENDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12888, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLENDVPD[] = { + {I_BLENDVPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM0,0,0}, NO_DECORATOR, nasm_bytecodes+34600, 173}, + {I_BLENDVPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34600, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLENDVPS[] = { + {I_BLENDVPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM0,0,0}, NO_DECORATOR, nasm_bytecodes+34607, 173}, + {I_BLENDVPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34607, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_DPPD[] = { + {I_DPPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12896, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_DPPS[] = { + {I_DPPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12904, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_EXTRACTPS[] = { + {I_EXTRACTPS, 3, {RM_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4241, 173}, + {I_EXTRACTPS, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4240, 174}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INSERTPS[] = { + {I_INSERTPS, 3, {XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12912, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVNTDQA[] = { + {I_MOVNTDQA, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34614, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MPSADBW[] = { + {I_MPSADBW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12920, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PACKUSDW[] = { + {I_PACKUSDW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34621, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PBLENDVB[] = { + {I_PBLENDVB, 3, {XMM_L16,RM_XMM_L16,XMM0,0,0}, NO_DECORATOR, nasm_bytecodes+34628, 173}, + {I_PBLENDVB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34628, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PBLENDW[] = { + {I_PBLENDW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12928, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCMPEQQ[] = { + {I_PCMPEQQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34635, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PEXTRB[] = { + {I_PEXTRB, 3, {REG_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4250, 173}, + {I_PEXTRB, 3, {MEMORY|BITS8,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4250, 173}, + {I_PEXTRB, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4249, 174}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PEXTRD[] = { + {I_PEXTRD, 3, {RM_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4258, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PEXTRQ[] = { + {I_PEXTRQ, 3, {RM_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4267, 174}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PHMINPOSUW[] = { + {I_PHMINPOSUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34642, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PINSRB[] = { + {I_PINSRB, 3, {XMM_L16,MEMORY,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4286, 175}, + {I_PINSRB, 3, {XMM_L16,RM_GPR|BITS8,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4285, 175}, + {I_PINSRB, 3, {XMM_L16,REG_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4286, 175}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PINSRD[] = { + {I_PINSRD, 3, {XMM_L16,RM_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4294, 175}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PINSRQ[] = { + {I_PINSRQ, 3, {XMM_L16,RM_GPR|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4303, 176}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMAXSB[] = { + {I_PMAXSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34649, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMAXSD[] = { + {I_PMAXSD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34656, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMAXUD[] = { + {I_PMAXUD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34663, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMAXUW[] = { + {I_PMAXUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34670, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMINSB[] = { + {I_PMINSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34677, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMINSD[] = { + {I_PMINSD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34684, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMINUD[] = { + {I_PMINUD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34691, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMINUW[] = { + {I_PMINUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34698, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVSXBW[] = { + {I_PMOVSXBW, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34705, 177}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVSXBD[] = { + {I_PMOVSXBD, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34712, 178}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVSXBQ[] = { + {I_PMOVSXBQ, 2, {XMM_L16,RM_XMM_L16|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34719, 179}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVSXWD[] = { + {I_PMOVSXWD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34726, 177}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVSXWQ[] = { + {I_PMOVSXWQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34733, 178}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVSXDQ[] = { + {I_PMOVSXDQ, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34740, 177}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVZXBW[] = { + {I_PMOVZXBW, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34747, 177}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVZXBD[] = { + {I_PMOVZXBD, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34754, 178}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVZXBQ[] = { + {I_PMOVZXBQ, 2, {XMM_L16,RM_XMM_L16|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34761, 179}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVZXWD[] = { + {I_PMOVZXWD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34768, 177}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVZXWQ[] = { + {I_PMOVZXWQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34775, 178}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMOVZXDQ[] = { + {I_PMOVZXDQ, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34782, 177}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMULDQ[] = { + {I_PMULDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34789, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PMULLD[] = { + {I_PMULLD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34796, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PTEST[] = { + {I_PTEST, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34803, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ROUNDPD[] = { + {I_ROUNDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12936, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ROUNDPS[] = { + {I_ROUNDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12944, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ROUNDSD[] = { + {I_ROUNDSD, 3, {XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12952, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ROUNDSS[] = { + {I_ROUNDSS, 3, {XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12960, 173}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CRC32[] = { + {I_CRC32, 2, {REG_GPR|BITS32,RM_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12985, 180}, + {I_CRC32, 2, {REG_GPR|BITS32,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12968, 180}, + {I_CRC32, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12976, 180}, + {I_CRC32, 2, {REG_GPR|BITS64,RM_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12984, 181}, + {I_CRC32, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+12992, 181}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCMPESTRI[] = { + {I_PCMPESTRI, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13000, 180}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCMPESTRM[] = { + {I_PCMPESTRM, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13008, 180}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCMPISTRI[] = { + {I_PCMPISTRI, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13016, 180}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCMPISTRM[] = { + {I_PCMPISTRM, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13024, 180}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCMPGTQ[] = { + {I_PCMPGTQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34810, 180}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_POPCNT[] = { + {I_POPCNT, 2, {REG_GPR|BITS16,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34817, 182}, + {I_POPCNT, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34824, 183}, + {I_POPCNT, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34831, 184}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_GETSEC[] = { + {I_GETSEC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50183, 139}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFRCPV[] = { + {I_PFRCPV, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+13032, 185}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PFRSQRTV[] = { + {I_PFRSQRTV, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+13040, 185}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVBE[] = { + {I_MOVBE, 2, {REG_GPR|BITS16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+13048, 186}, + {I_MOVBE, 2, {REG_GPR|BITS32,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+13056, 186}, + {I_MOVBE, 2, {REG_GPR|BITS64,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+13064, 186}, + {I_MOVBE, 2, {MEMORY|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+13072, 186}, + {I_MOVBE, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+13080, 186}, + {I_MOVBE, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+13088, 186}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AESENC[] = { + {I_AESENC, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34838, 187}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AESENCLAST[] = { + {I_AESENCLAST, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34845, 187}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AESDEC[] = { + {I_AESDEC, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34852, 187}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AESDECLAST[] = { + {I_AESDECLAST, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34859, 187}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AESIMC[] = { + {I_AESIMC, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34866, 187}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AESKEYGENASSIST[] = { + {I_AESKEYGENASSIST, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13096, 187}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VAESENC[] = { + {I_VAESENC, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+34873, 188}, + {I_VAESENC, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34880, 188}, + {I_VAESENC, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+34936, 189}, + {I_VAESENC, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+34943, 189}, + {I_VAESENC, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+13112, 190}, + {I_VAESENC, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+13120, 190}, + {I_VAESENC, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+13128, 190}, + {I_VAESENC, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+13136, 190}, + {I_VAESENC, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+13240, 191}, + {I_VAESENC, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+13248, 191}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VAESENCLAST[] = { + {I_VAESENCLAST, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+34887, 188}, + {I_VAESENCLAST, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34894, 188}, + {I_VAESENCLAST, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+34950, 189}, + {I_VAESENCLAST, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+34957, 189}, + {I_VAESENCLAST, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+13144, 190}, + {I_VAESENCLAST, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+13152, 190}, + {I_VAESENCLAST, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+13160, 190}, + {I_VAESENCLAST, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+13168, 190}, + {I_VAESENCLAST, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+13256, 191}, + {I_VAESENCLAST, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+13264, 191}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VAESDEC[] = { + {I_VAESDEC, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+34901, 188}, + {I_VAESDEC, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34908, 188}, + {I_VAESDEC, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+34964, 189}, + {I_VAESDEC, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+34971, 189}, + {I_VAESDEC, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+13176, 190}, + {I_VAESDEC, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+13184, 190}, + {I_VAESDEC, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+13192, 190}, + {I_VAESDEC, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+13200, 190}, + {I_VAESDEC, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+13272, 191}, + {I_VAESDEC, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+13280, 191}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VAESDECLAST[] = { + {I_VAESDECLAST, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+34915, 188}, + {I_VAESDECLAST, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34922, 188}, + {I_VAESDECLAST, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+34978, 189}, + {I_VAESDECLAST, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+34985, 189}, + {I_VAESDECLAST, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+13208, 190}, + {I_VAESDECLAST, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+13216, 190}, + {I_VAESDECLAST, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+13224, 190}, + {I_VAESDECLAST, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+13232, 190}, + {I_VAESDECLAST, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+13288, 191}, + {I_VAESDECLAST, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+13296, 191}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VAESIMC[] = { + {I_VAESIMC, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34929, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VAESKEYGENASSIST[] = { + {I_VAESKEYGENASSIST, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13104, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VADDPD[] = { + {I_VADDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+34992, 188}, + {I_VADDPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34999, 188}, + {I_VADDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35006, 188}, + {I_VADDPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35013, 188}, + {I_VADDPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16376, 240}, + {I_VADDPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16384, 240}, + {I_VADDPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16392, 240}, + {I_VADDPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16400, 240}, + {I_VADDPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+16408, 241}, + {I_VADDPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+16416, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VADDPS[] = { + {I_VADDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35020, 188}, + {I_VADDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35027, 188}, + {I_VADDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35034, 188}, + {I_VADDPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35041, 188}, + {I_VADDPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16424, 240}, + {I_VADDPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16432, 240}, + {I_VADDPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16440, 240}, + {I_VADDPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16448, 240}, + {I_VADDPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+16456, 241}, + {I_VADDPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+16464, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VADDSD[] = { + {I_VADDSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35048, 188}, + {I_VADDSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35055, 188}, + {I_VADDSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+16472, 241}, + {I_VADDSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+16480, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VADDSS[] = { + {I_VADDSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35062, 188}, + {I_VADDSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35069, 188}, + {I_VADDSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+16488, 241}, + {I_VADDSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+16496, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VADDSUBPD[] = { + {I_VADDSUBPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35076, 188}, + {I_VADDSUBPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35083, 188}, + {I_VADDSUBPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35090, 188}, + {I_VADDSUBPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35097, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VADDSUBPS[] = { + {I_VADDSUBPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35104, 188}, + {I_VADDSUBPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35111, 188}, + {I_VADDSUBPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35118, 188}, + {I_VADDSUBPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35125, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VANDPD[] = { + {I_VANDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35132, 188}, + {I_VANDPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35139, 188}, + {I_VANDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35146, 188}, + {I_VANDPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35153, 188}, + {I_VANDPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16600, 242}, + {I_VANDPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16608, 242}, + {I_VANDPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16616, 242}, + {I_VANDPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16624, 242}, + {I_VANDPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16632, 243}, + {I_VANDPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16640, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VANDPS[] = { + {I_VANDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35160, 188}, + {I_VANDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35167, 188}, + {I_VANDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35174, 188}, + {I_VANDPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35181, 188}, + {I_VANDPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16648, 242}, + {I_VANDPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16656, 242}, + {I_VANDPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16664, 242}, + {I_VANDPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16672, 242}, + {I_VANDPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16680, 243}, + {I_VANDPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16688, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VANDNPD[] = { + {I_VANDNPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35188, 188}, + {I_VANDNPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35195, 188}, + {I_VANDNPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35202, 188}, + {I_VANDNPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35209, 188}, + {I_VANDNPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16504, 242}, + {I_VANDNPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16512, 242}, + {I_VANDNPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16520, 242}, + {I_VANDNPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16528, 242}, + {I_VANDNPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16536, 243}, + {I_VANDNPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16544, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VANDNPS[] = { + {I_VANDNPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35216, 188}, + {I_VANDNPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35223, 188}, + {I_VANDNPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35230, 188}, + {I_VANDNPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35237, 188}, + {I_VANDNPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16552, 242}, + {I_VANDNPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16560, 242}, + {I_VANDNPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16568, 242}, + {I_VANDNPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16576, 242}, + {I_VANDNPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16584, 243}, + {I_VANDNPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16592, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBLENDPD[] = { + {I_VBLENDPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13304, 188}, + {I_VBLENDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13312, 188}, + {I_VBLENDPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13320, 188}, + {I_VBLENDPD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13328, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBLENDPS[] = { + {I_VBLENDPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13336, 188}, + {I_VBLENDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13344, 188}, + {I_VBLENDPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13352, 188}, + {I_VBLENDPS, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13360, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBLENDVPD[] = { + {I_VBLENDVPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+13368, 188}, + {I_VBLENDVPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+13376, 188}, + {I_VBLENDVPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+13384, 188}, + {I_VBLENDVPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+13392, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBLENDVPS[] = { + {I_VBLENDVPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+13400, 188}, + {I_VBLENDVPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+13408, 188}, + {I_VBLENDVPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+13416, 188}, + {I_VBLENDVPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+13424, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTSS[] = { + {I_VBROADCASTSS, 2, {XMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35244, 188}, + {I_VBROADCASTSS, 2, {YMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35251, 188}, + {I_VBROADCASTSS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35244, 207}, + {I_VBROADCASTSS, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35251, 207}, + {I_VBROADCASTSS, 2, {XMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16912, 240}, + {I_VBROADCASTSS, 2, {YMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16920, 240}, + {I_VBROADCASTSS, 2, {ZMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16928, 241}, + {I_VBROADCASTSS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16936, 240}, + {I_VBROADCASTSS, 2, {YMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16944, 240}, + {I_VBROADCASTSS, 2, {ZMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16952, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTSD[] = { + {I_VBROADCASTSD, 2, {YMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35258, 188}, + {I_VBROADCASTSD, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35258, 207}, + {I_VBROADCASTSD, 2, {YMMREG,MEMORY|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16880, 240}, + {I_VBROADCASTSD, 2, {ZMMREG,MEMORY|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16888, 241}, + {I_VBROADCASTSD, 2, {YMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16896, 240}, + {I_VBROADCASTSD, 2, {ZMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16904, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTF128[] = { + {I_VBROADCASTF128, 2, {YMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35265, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_OSPD[] = { + {I_VCMPEQ_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4312, 188}, + {I_VCMPEQ_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4321, 188}, + {I_VCMPEQ_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4330, 188}, + {I_VCMPEQ_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4339, 188}, + {I_VCMPEQ_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4312, 188}, + {I_VCMPEQ_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4321, 188}, + {I_VCMPEQ_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4330, 188}, + {I_VCMPEQ_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4339, 188}, + {I_VCMPEQ_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1520, 240}, + {I_VCMPEQ_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1530, 240}, + {I_VCMPEQ_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1540, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQPD[] = { + {I_VCMPEQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4348, 188}, + {I_VCMPEQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4357, 188}, + {I_VCMPEQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4366, 188}, + {I_VCMPEQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4375, 188}, + {I_VCMPEQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+240, 240}, + {I_VCMPEQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+250, 240}, + {I_VCMPEQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+260, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLT_OSPD[] = { + {I_VCMPLT_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4384, 188}, + {I_VCMPLT_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4393, 188}, + {I_VCMPLT_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4402, 188}, + {I_VCMPLT_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4411, 188}, + {I_VCMPLT_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+320, 240}, + {I_VCMPLT_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+330, 240}, + {I_VCMPLT_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+340, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLTPD[] = { + {I_VCMPLTPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4384, 188}, + {I_VCMPLTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4393, 188}, + {I_VCMPLTPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4402, 188}, + {I_VCMPLTPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4411, 188}, + {I_VCMPLTPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+320, 240}, + {I_VCMPLTPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+330, 240}, + {I_VCMPLTPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+340, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLE_OSPD[] = { + {I_VCMPLE_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4420, 188}, + {I_VCMPLE_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4429, 188}, + {I_VCMPLE_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4438, 188}, + {I_VCMPLE_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4447, 188}, + {I_VCMPLE_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+400, 240}, + {I_VCMPLE_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+410, 240}, + {I_VCMPLE_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+420, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLEPD[] = { + {I_VCMPLEPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4420, 188}, + {I_VCMPLEPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4429, 188}, + {I_VCMPLEPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4438, 188}, + {I_VCMPLEPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4447, 188}, + {I_VCMPLEPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+400, 240}, + {I_VCMPLEPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+410, 240}, + {I_VCMPLEPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+420, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPUNORD_QPD[] = { + {I_VCMPUNORD_QPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4456, 188}, + {I_VCMPUNORD_QPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4465, 188}, + {I_VCMPUNORD_QPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4474, 188}, + {I_VCMPUNORD_QPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4483, 188}, + {I_VCMPUNORD_QPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+480, 240}, + {I_VCMPUNORD_QPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+490, 240}, + {I_VCMPUNORD_QPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+500, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPUNORDPD[] = { + {I_VCMPUNORDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4456, 188}, + {I_VCMPUNORDPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4465, 188}, + {I_VCMPUNORDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4474, 188}, + {I_VCMPUNORDPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4483, 188}, + {I_VCMPUNORDPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+480, 240}, + {I_VCMPUNORDPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+490, 240}, + {I_VCMPUNORDPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+500, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_UQPD[] = { + {I_VCMPNEQ_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4492, 188}, + {I_VCMPNEQ_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4501, 188}, + {I_VCMPNEQ_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4510, 188}, + {I_VCMPNEQ_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4519, 188}, + {I_VCMPNEQ_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+560, 240}, + {I_VCMPNEQ_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+570, 240}, + {I_VCMPNEQ_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+580, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQPD[] = { + {I_VCMPNEQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4492, 188}, + {I_VCMPNEQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4501, 188}, + {I_VCMPNEQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4510, 188}, + {I_VCMPNEQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4519, 188}, + {I_VCMPNEQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+560, 240}, + {I_VCMPNEQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+570, 240}, + {I_VCMPNEQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+580, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLT_USPD[] = { + {I_VCMPNLT_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4528, 188}, + {I_VCMPNLT_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4537, 188}, + {I_VCMPNLT_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4546, 188}, + {I_VCMPNLT_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4555, 188}, + {I_VCMPNLT_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+640, 240}, + {I_VCMPNLT_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+650, 240}, + {I_VCMPNLT_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+660, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLTPD[] = { + {I_VCMPNLTPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4528, 188}, + {I_VCMPNLTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4537, 188}, + {I_VCMPNLTPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4546, 188}, + {I_VCMPNLTPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4555, 188}, + {I_VCMPNLTPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+640, 240}, + {I_VCMPNLTPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+650, 240}, + {I_VCMPNLTPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+660, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLE_USPD[] = { + {I_VCMPNLE_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4564, 188}, + {I_VCMPNLE_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4573, 188}, + {I_VCMPNLE_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4582, 188}, + {I_VCMPNLE_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4591, 188}, + {I_VCMPNLE_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+720, 240}, + {I_VCMPNLE_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+730, 240}, + {I_VCMPNLE_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+740, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLEPD[] = { + {I_VCMPNLEPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4564, 188}, + {I_VCMPNLEPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4573, 188}, + {I_VCMPNLEPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4582, 188}, + {I_VCMPNLEPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4591, 188}, + {I_VCMPNLEPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+720, 240}, + {I_VCMPNLEPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+730, 240}, + {I_VCMPNLEPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+740, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPORD_QPD[] = { + {I_VCMPORD_QPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4600, 188}, + {I_VCMPORD_QPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4609, 188}, + {I_VCMPORD_QPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4618, 188}, + {I_VCMPORD_QPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4627, 188}, + {I_VCMPORD_QPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+800, 240}, + {I_VCMPORD_QPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+810, 240}, + {I_VCMPORD_QPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+820, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPORDPD[] = { + {I_VCMPORDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4600, 188}, + {I_VCMPORDPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4609, 188}, + {I_VCMPORDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4618, 188}, + {I_VCMPORDPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4627, 188}, + {I_VCMPORDPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+800, 240}, + {I_VCMPORDPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+810, 240}, + {I_VCMPORDPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+820, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_UQPD[] = { + {I_VCMPEQ_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4636, 188}, + {I_VCMPEQ_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4645, 188}, + {I_VCMPEQ_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4654, 188}, + {I_VCMPEQ_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4663, 188}, + {I_VCMPEQ_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+880, 240}, + {I_VCMPEQ_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+890, 240}, + {I_VCMPEQ_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+900, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGE_USPD[] = { + {I_VCMPNGE_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4672, 188}, + {I_VCMPNGE_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4681, 188}, + {I_VCMPNGE_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4690, 188}, + {I_VCMPNGE_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4699, 188}, + {I_VCMPNGE_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+960, 240}, + {I_VCMPNGE_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+970, 240}, + {I_VCMPNGE_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+980, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGEPD[] = { + {I_VCMPNGEPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4672, 188}, + {I_VCMPNGEPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4681, 188}, + {I_VCMPNGEPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4690, 188}, + {I_VCMPNGEPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4699, 188}, + {I_VCMPNGEPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+960, 240}, + {I_VCMPNGEPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+970, 240}, + {I_VCMPNGEPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+980, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGT_USPD[] = { + {I_VCMPNGT_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4708, 188}, + {I_VCMPNGT_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4717, 188}, + {I_VCMPNGT_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4726, 188}, + {I_VCMPNGT_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4735, 188}, + {I_VCMPNGT_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1040, 240}, + {I_VCMPNGT_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1050, 240}, + {I_VCMPNGT_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1060, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGTPD[] = { + {I_VCMPNGTPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4708, 188}, + {I_VCMPNGTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4717, 188}, + {I_VCMPNGTPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4726, 188}, + {I_VCMPNGTPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4735, 188}, + {I_VCMPNGTPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1040, 240}, + {I_VCMPNGTPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1050, 240}, + {I_VCMPNGTPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1060, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPFALSE_OQPD[] = { + {I_VCMPFALSE_OQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4744, 188}, + {I_VCMPFALSE_OQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4753, 188}, + {I_VCMPFALSE_OQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4762, 188}, + {I_VCMPFALSE_OQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4771, 188}, + {I_VCMPFALSE_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1120, 240}, + {I_VCMPFALSE_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1130, 240}, + {I_VCMPFALSE_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1140, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPFALSEPD[] = { + {I_VCMPFALSEPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4744, 188}, + {I_VCMPFALSEPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4753, 188}, + {I_VCMPFALSEPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4762, 188}, + {I_VCMPFALSEPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4771, 188}, + {I_VCMPFALSEPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1120, 240}, + {I_VCMPFALSEPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1130, 240}, + {I_VCMPFALSEPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1140, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_OQPD[] = { + {I_VCMPNEQ_OQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4780, 188}, + {I_VCMPNEQ_OQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4789, 188}, + {I_VCMPNEQ_OQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4798, 188}, + {I_VCMPNEQ_OQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4807, 188}, + {I_VCMPNEQ_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1200, 240}, + {I_VCMPNEQ_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1210, 240}, + {I_VCMPNEQ_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1220, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGE_OSPD[] = { + {I_VCMPGE_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4816, 188}, + {I_VCMPGE_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4825, 188}, + {I_VCMPGE_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4834, 188}, + {I_VCMPGE_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4843, 188}, + {I_VCMPGE_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1280, 240}, + {I_VCMPGE_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1290, 240}, + {I_VCMPGE_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1300, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGEPD[] = { + {I_VCMPGEPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4816, 188}, + {I_VCMPGEPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4825, 188}, + {I_VCMPGEPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4834, 188}, + {I_VCMPGEPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4843, 188}, + {I_VCMPGEPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1280, 240}, + {I_VCMPGEPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1290, 240}, + {I_VCMPGEPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1300, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGT_OSPD[] = { + {I_VCMPGT_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4852, 188}, + {I_VCMPGT_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4861, 188}, + {I_VCMPGT_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4870, 188}, + {I_VCMPGT_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4879, 188}, + {I_VCMPGT_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1360, 240}, + {I_VCMPGT_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1370, 240}, + {I_VCMPGT_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1380, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGTPD[] = { + {I_VCMPGTPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4852, 188}, + {I_VCMPGTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4861, 188}, + {I_VCMPGTPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4870, 188}, + {I_VCMPGTPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4879, 188}, + {I_VCMPGTPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1360, 240}, + {I_VCMPGTPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1370, 240}, + {I_VCMPGTPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1380, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPTRUE_UQPD[] = { + {I_VCMPTRUE_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4888, 188}, + {I_VCMPTRUE_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4897, 188}, + {I_VCMPTRUE_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4906, 188}, + {I_VCMPTRUE_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4915, 188}, + {I_VCMPTRUE_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1440, 240}, + {I_VCMPTRUE_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1450, 240}, + {I_VCMPTRUE_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1460, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPTRUEPD[] = { + {I_VCMPTRUEPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4888, 188}, + {I_VCMPTRUEPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4897, 188}, + {I_VCMPTRUEPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4906, 188}, + {I_VCMPTRUEPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4915, 188}, + {I_VCMPTRUEPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1440, 240}, + {I_VCMPTRUEPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1450, 240}, + {I_VCMPTRUEPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1460, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLT_OQPD[] = { + {I_VCMPLT_OQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4924, 188}, + {I_VCMPLT_OQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4933, 188}, + {I_VCMPLT_OQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4942, 188}, + {I_VCMPLT_OQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4951, 188}, + {I_VCMPLT_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1600, 240}, + {I_VCMPLT_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1610, 240}, + {I_VCMPLT_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1620, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLE_OQPD[] = { + {I_VCMPLE_OQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4960, 188}, + {I_VCMPLE_OQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4969, 188}, + {I_VCMPLE_OQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4978, 188}, + {I_VCMPLE_OQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4987, 188}, + {I_VCMPLE_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1680, 240}, + {I_VCMPLE_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1690, 240}, + {I_VCMPLE_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1700, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPUNORD_SPD[] = { + {I_VCMPUNORD_SPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4996, 188}, + {I_VCMPUNORD_SPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5005, 188}, + {I_VCMPUNORD_SPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5014, 188}, + {I_VCMPUNORD_SPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5023, 188}, + {I_VCMPUNORD_SPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1760, 240}, + {I_VCMPUNORD_SPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1770, 240}, + {I_VCMPUNORD_SPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1780, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_USPD[] = { + {I_VCMPNEQ_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5032, 188}, + {I_VCMPNEQ_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5041, 188}, + {I_VCMPNEQ_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5050, 188}, + {I_VCMPNEQ_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5059, 188}, + {I_VCMPNEQ_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1840, 240}, + {I_VCMPNEQ_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1850, 240}, + {I_VCMPNEQ_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1860, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLT_UQPD[] = { + {I_VCMPNLT_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5068, 188}, + {I_VCMPNLT_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5077, 188}, + {I_VCMPNLT_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5086, 188}, + {I_VCMPNLT_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5095, 188}, + {I_VCMPNLT_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1920, 240}, + {I_VCMPNLT_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1930, 240}, + {I_VCMPNLT_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1940, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLE_UQPD[] = { + {I_VCMPNLE_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5104, 188}, + {I_VCMPNLE_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5113, 188}, + {I_VCMPNLE_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5122, 188}, + {I_VCMPNLE_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5131, 188}, + {I_VCMPNLE_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2000, 240}, + {I_VCMPNLE_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2010, 240}, + {I_VCMPNLE_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2020, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPORD_SPD[] = { + {I_VCMPORD_SPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5140, 188}, + {I_VCMPORD_SPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5149, 188}, + {I_VCMPORD_SPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5158, 188}, + {I_VCMPORD_SPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5167, 188}, + {I_VCMPORD_SPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2080, 240}, + {I_VCMPORD_SPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2090, 240}, + {I_VCMPORD_SPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2100, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_USPD[] = { + {I_VCMPEQ_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5176, 188}, + {I_VCMPEQ_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5185, 188}, + {I_VCMPEQ_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5194, 188}, + {I_VCMPEQ_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5203, 188}, + {I_VCMPEQ_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2160, 240}, + {I_VCMPEQ_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2170, 240}, + {I_VCMPEQ_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2180, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGE_UQPD[] = { + {I_VCMPNGE_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5212, 188}, + {I_VCMPNGE_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5221, 188}, + {I_VCMPNGE_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5230, 188}, + {I_VCMPNGE_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5239, 188}, + {I_VCMPNGE_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2240, 240}, + {I_VCMPNGE_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2250, 240}, + {I_VCMPNGE_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2260, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGT_UQPD[] = { + {I_VCMPNGT_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5248, 188}, + {I_VCMPNGT_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5257, 188}, + {I_VCMPNGT_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5266, 188}, + {I_VCMPNGT_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5275, 188}, + {I_VCMPNGT_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2320, 240}, + {I_VCMPNGT_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2330, 240}, + {I_VCMPNGT_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2340, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPFALSE_OSPD[] = { + {I_VCMPFALSE_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5284, 188}, + {I_VCMPFALSE_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5293, 188}, + {I_VCMPFALSE_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5302, 188}, + {I_VCMPFALSE_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5311, 188}, + {I_VCMPFALSE_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2400, 240}, + {I_VCMPFALSE_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2410, 240}, + {I_VCMPFALSE_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2420, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_OSPD[] = { + {I_VCMPNEQ_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5320, 188}, + {I_VCMPNEQ_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5329, 188}, + {I_VCMPNEQ_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5338, 188}, + {I_VCMPNEQ_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5347, 188}, + {I_VCMPNEQ_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2480, 240}, + {I_VCMPNEQ_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2490, 240}, + {I_VCMPNEQ_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2500, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGE_OQPD[] = { + {I_VCMPGE_OQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5356, 188}, + {I_VCMPGE_OQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5365, 188}, + {I_VCMPGE_OQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5374, 188}, + {I_VCMPGE_OQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5383, 188}, + {I_VCMPGE_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2560, 240}, + {I_VCMPGE_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2570, 240}, + {I_VCMPGE_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2580, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGT_OQPD[] = { + {I_VCMPGT_OQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5392, 188}, + {I_VCMPGT_OQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5401, 188}, + {I_VCMPGT_OQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5410, 188}, + {I_VCMPGT_OQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5419, 188}, + {I_VCMPGT_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2640, 240}, + {I_VCMPGT_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2650, 240}, + {I_VCMPGT_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2660, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPTRUE_USPD[] = { + {I_VCMPTRUE_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5428, 188}, + {I_VCMPTRUE_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5437, 188}, + {I_VCMPTRUE_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5446, 188}, + {I_VCMPTRUE_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5455, 188}, + {I_VCMPTRUE_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2720, 240}, + {I_VCMPTRUE_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2730, 240}, + {I_VCMPTRUE_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2740, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPPD[] = { + {I_VCMPPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13432, 188}, + {I_VCMPPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13440, 188}, + {I_VCMPPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13448, 188}, + {I_VCMPPD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13456, 188}, + {I_VCMPPD, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+8110, 240}, + {I_VCMPPD, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+8119, 240}, + {I_VCMPPD, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+8128, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_OSPS[] = { + {I_VCMPEQ_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5464, 188}, + {I_VCMPEQ_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5473, 188}, + {I_VCMPEQ_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5482, 188}, + {I_VCMPEQ_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5491, 188}, + {I_VCMPEQ_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5464, 188}, + {I_VCMPEQ_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5473, 188}, + {I_VCMPEQ_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5482, 188}, + {I_VCMPEQ_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5491, 188}, + {I_VCMPEQ_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1550, 240}, + {I_VCMPEQ_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1560, 240}, + {I_VCMPEQ_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1570, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQPS[] = { + {I_VCMPEQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5500, 188}, + {I_VCMPEQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5509, 188}, + {I_VCMPEQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5518, 188}, + {I_VCMPEQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5527, 188}, + {I_VCMPEQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+270, 240}, + {I_VCMPEQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+280, 240}, + {I_VCMPEQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+290, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLT_OSPS[] = { + {I_VCMPLT_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5536, 188}, + {I_VCMPLT_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5545, 188}, + {I_VCMPLT_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5554, 188}, + {I_VCMPLT_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5563, 188}, + {I_VCMPLT_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+350, 240}, + {I_VCMPLT_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+360, 240}, + {I_VCMPLT_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+370, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLTPS[] = { + {I_VCMPLTPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5536, 188}, + {I_VCMPLTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5545, 188}, + {I_VCMPLTPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5554, 188}, + {I_VCMPLTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5563, 188}, + {I_VCMPLTPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+350, 240}, + {I_VCMPLTPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+360, 240}, + {I_VCMPLTPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+370, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLE_OSPS[] = { + {I_VCMPLE_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5572, 188}, + {I_VCMPLE_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5581, 188}, + {I_VCMPLE_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5590, 188}, + {I_VCMPLE_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5599, 188}, + {I_VCMPLE_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+430, 240}, + {I_VCMPLE_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+440, 240}, + {I_VCMPLE_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+450, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLEPS[] = { + {I_VCMPLEPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5572, 188}, + {I_VCMPLEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5581, 188}, + {I_VCMPLEPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5590, 188}, + {I_VCMPLEPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5599, 188}, + {I_VCMPLEPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+430, 240}, + {I_VCMPLEPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+440, 240}, + {I_VCMPLEPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+450, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPUNORD_QPS[] = { + {I_VCMPUNORD_QPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5608, 188}, + {I_VCMPUNORD_QPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5617, 188}, + {I_VCMPUNORD_QPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5626, 188}, + {I_VCMPUNORD_QPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5635, 188}, + {I_VCMPUNORD_QPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+510, 240}, + {I_VCMPUNORD_QPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+520, 240}, + {I_VCMPUNORD_QPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+530, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPUNORDPS[] = { + {I_VCMPUNORDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5608, 188}, + {I_VCMPUNORDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5617, 188}, + {I_VCMPUNORDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5626, 188}, + {I_VCMPUNORDPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5635, 188}, + {I_VCMPUNORDPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+510, 240}, + {I_VCMPUNORDPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+520, 240}, + {I_VCMPUNORDPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+530, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_UQPS[] = { + {I_VCMPNEQ_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5644, 188}, + {I_VCMPNEQ_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5653, 188}, + {I_VCMPNEQ_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5662, 188}, + {I_VCMPNEQ_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5671, 188}, + {I_VCMPNEQ_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+590, 240}, + {I_VCMPNEQ_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+600, 240}, + {I_VCMPNEQ_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+610, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQPS[] = { + {I_VCMPNEQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5644, 188}, + {I_VCMPNEQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5653, 188}, + {I_VCMPNEQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5662, 188}, + {I_VCMPNEQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5671, 188}, + {I_VCMPNEQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+590, 240}, + {I_VCMPNEQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+600, 240}, + {I_VCMPNEQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+610, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLT_USPS[] = { + {I_VCMPNLT_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5680, 188}, + {I_VCMPNLT_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5689, 188}, + {I_VCMPNLT_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5698, 188}, + {I_VCMPNLT_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5707, 188}, + {I_VCMPNLT_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+670, 240}, + {I_VCMPNLT_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+680, 240}, + {I_VCMPNLT_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+690, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLTPS[] = { + {I_VCMPNLTPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5680, 188}, + {I_VCMPNLTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5689, 188}, + {I_VCMPNLTPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5698, 188}, + {I_VCMPNLTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5707, 188}, + {I_VCMPNLTPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+670, 240}, + {I_VCMPNLTPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+680, 240}, + {I_VCMPNLTPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+690, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLE_USPS[] = { + {I_VCMPNLE_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5716, 188}, + {I_VCMPNLE_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5725, 188}, + {I_VCMPNLE_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5734, 188}, + {I_VCMPNLE_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5743, 188}, + {I_VCMPNLE_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+750, 240}, + {I_VCMPNLE_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+760, 240}, + {I_VCMPNLE_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+770, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLEPS[] = { + {I_VCMPNLEPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5716, 188}, + {I_VCMPNLEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5725, 188}, + {I_VCMPNLEPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5734, 188}, + {I_VCMPNLEPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5743, 188}, + {I_VCMPNLEPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+750, 240}, + {I_VCMPNLEPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+760, 240}, + {I_VCMPNLEPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+770, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPORD_QPS[] = { + {I_VCMPORD_QPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5752, 188}, + {I_VCMPORD_QPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5761, 188}, + {I_VCMPORD_QPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5770, 188}, + {I_VCMPORD_QPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5779, 188}, + {I_VCMPORD_QPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+830, 240}, + {I_VCMPORD_QPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+840, 240}, + {I_VCMPORD_QPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+850, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPORDPS[] = { + {I_VCMPORDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5752, 188}, + {I_VCMPORDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5761, 188}, + {I_VCMPORDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5770, 188}, + {I_VCMPORDPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5779, 188}, + {I_VCMPORDPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+830, 240}, + {I_VCMPORDPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+840, 240}, + {I_VCMPORDPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+850, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_UQPS[] = { + {I_VCMPEQ_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5788, 188}, + {I_VCMPEQ_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5797, 188}, + {I_VCMPEQ_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5806, 188}, + {I_VCMPEQ_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5815, 188}, + {I_VCMPEQ_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+910, 240}, + {I_VCMPEQ_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+920, 240}, + {I_VCMPEQ_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+930, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGE_USPS[] = { + {I_VCMPNGE_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5824, 188}, + {I_VCMPNGE_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5833, 188}, + {I_VCMPNGE_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5842, 188}, + {I_VCMPNGE_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5851, 188}, + {I_VCMPNGE_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+990, 240}, + {I_VCMPNGE_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1000, 240}, + {I_VCMPNGE_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1010, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGEPS[] = { + {I_VCMPNGEPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5824, 188}, + {I_VCMPNGEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5833, 188}, + {I_VCMPNGEPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5842, 188}, + {I_VCMPNGEPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5851, 188}, + {I_VCMPNGEPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+990, 240}, + {I_VCMPNGEPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1000, 240}, + {I_VCMPNGEPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1010, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGT_USPS[] = { + {I_VCMPNGT_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5860, 188}, + {I_VCMPNGT_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5869, 188}, + {I_VCMPNGT_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5878, 188}, + {I_VCMPNGT_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5887, 188}, + {I_VCMPNGT_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1070, 240}, + {I_VCMPNGT_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1080, 240}, + {I_VCMPNGT_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1090, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGTPS[] = { + {I_VCMPNGTPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5860, 188}, + {I_VCMPNGTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5869, 188}, + {I_VCMPNGTPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5878, 188}, + {I_VCMPNGTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5887, 188}, + {I_VCMPNGTPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1070, 240}, + {I_VCMPNGTPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1080, 240}, + {I_VCMPNGTPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1090, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPFALSE_OQPS[] = { + {I_VCMPFALSE_OQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5896, 188}, + {I_VCMPFALSE_OQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5905, 188}, + {I_VCMPFALSE_OQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5914, 188}, + {I_VCMPFALSE_OQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5923, 188}, + {I_VCMPFALSE_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1150, 240}, + {I_VCMPFALSE_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1160, 240}, + {I_VCMPFALSE_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1170, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPFALSEPS[] = { + {I_VCMPFALSEPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5896, 188}, + {I_VCMPFALSEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5905, 188}, + {I_VCMPFALSEPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5914, 188}, + {I_VCMPFALSEPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5923, 188}, + {I_VCMPFALSEPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1150, 240}, + {I_VCMPFALSEPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1160, 240}, + {I_VCMPFALSEPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1170, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_OQPS[] = { + {I_VCMPNEQ_OQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5932, 188}, + {I_VCMPNEQ_OQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5941, 188}, + {I_VCMPNEQ_OQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5950, 188}, + {I_VCMPNEQ_OQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5959, 188}, + {I_VCMPNEQ_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1230, 240}, + {I_VCMPNEQ_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1240, 240}, + {I_VCMPNEQ_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1250, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGE_OSPS[] = { + {I_VCMPGE_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5968, 188}, + {I_VCMPGE_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5977, 188}, + {I_VCMPGE_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5986, 188}, + {I_VCMPGE_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5995, 188}, + {I_VCMPGE_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1310, 240}, + {I_VCMPGE_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1320, 240}, + {I_VCMPGE_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1330, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGEPS[] = { + {I_VCMPGEPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5968, 188}, + {I_VCMPGEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5977, 188}, + {I_VCMPGEPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5986, 188}, + {I_VCMPGEPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5995, 188}, + {I_VCMPGEPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1310, 240}, + {I_VCMPGEPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1320, 240}, + {I_VCMPGEPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1330, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGT_OSPS[] = { + {I_VCMPGT_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6004, 188}, + {I_VCMPGT_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6013, 188}, + {I_VCMPGT_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6022, 188}, + {I_VCMPGT_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6031, 188}, + {I_VCMPGT_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1390, 240}, + {I_VCMPGT_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1400, 240}, + {I_VCMPGT_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1410, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGTPS[] = { + {I_VCMPGTPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6004, 188}, + {I_VCMPGTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6013, 188}, + {I_VCMPGTPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6022, 188}, + {I_VCMPGTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6031, 188}, + {I_VCMPGTPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1390, 240}, + {I_VCMPGTPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1400, 240}, + {I_VCMPGTPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1410, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPTRUE_UQPS[] = { + {I_VCMPTRUE_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6040, 188}, + {I_VCMPTRUE_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6049, 188}, + {I_VCMPTRUE_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6058, 188}, + {I_VCMPTRUE_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6067, 188}, + {I_VCMPTRUE_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1470, 240}, + {I_VCMPTRUE_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1480, 240}, + {I_VCMPTRUE_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1490, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPTRUEPS[] = { + {I_VCMPTRUEPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6040, 188}, + {I_VCMPTRUEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6049, 188}, + {I_VCMPTRUEPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6058, 188}, + {I_VCMPTRUEPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6067, 188}, + {I_VCMPTRUEPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1470, 240}, + {I_VCMPTRUEPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1480, 240}, + {I_VCMPTRUEPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1490, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLT_OQPS[] = { + {I_VCMPLT_OQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6076, 188}, + {I_VCMPLT_OQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6085, 188}, + {I_VCMPLT_OQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6094, 188}, + {I_VCMPLT_OQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6103, 188}, + {I_VCMPLT_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1630, 240}, + {I_VCMPLT_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1640, 240}, + {I_VCMPLT_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1650, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLE_OQPS[] = { + {I_VCMPLE_OQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6112, 188}, + {I_VCMPLE_OQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6121, 188}, + {I_VCMPLE_OQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6130, 188}, + {I_VCMPLE_OQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6139, 188}, + {I_VCMPLE_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1710, 240}, + {I_VCMPLE_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1720, 240}, + {I_VCMPLE_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1730, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPUNORD_SPS[] = { + {I_VCMPUNORD_SPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6148, 188}, + {I_VCMPUNORD_SPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6157, 188}, + {I_VCMPUNORD_SPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6166, 188}, + {I_VCMPUNORD_SPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6175, 188}, + {I_VCMPUNORD_SPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1790, 240}, + {I_VCMPUNORD_SPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1800, 240}, + {I_VCMPUNORD_SPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1810, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_USPS[] = { + {I_VCMPNEQ_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6184, 188}, + {I_VCMPNEQ_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6193, 188}, + {I_VCMPNEQ_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6202, 188}, + {I_VCMPNEQ_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6211, 188}, + {I_VCMPNEQ_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1870, 240}, + {I_VCMPNEQ_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1880, 240}, + {I_VCMPNEQ_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1890, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLT_UQPS[] = { + {I_VCMPNLT_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6220, 188}, + {I_VCMPNLT_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6229, 188}, + {I_VCMPNLT_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6238, 188}, + {I_VCMPNLT_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6247, 188}, + {I_VCMPNLT_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1950, 240}, + {I_VCMPNLT_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1960, 240}, + {I_VCMPNLT_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1970, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLE_UQPS[] = { + {I_VCMPNLE_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6256, 188}, + {I_VCMPNLE_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6265, 188}, + {I_VCMPNLE_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6274, 188}, + {I_VCMPNLE_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6283, 188}, + {I_VCMPNLE_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2030, 240}, + {I_VCMPNLE_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2040, 240}, + {I_VCMPNLE_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2050, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPORD_SPS[] = { + {I_VCMPORD_SPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6292, 188}, + {I_VCMPORD_SPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6301, 188}, + {I_VCMPORD_SPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6310, 188}, + {I_VCMPORD_SPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6319, 188}, + {I_VCMPORD_SPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2110, 240}, + {I_VCMPORD_SPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2120, 240}, + {I_VCMPORD_SPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2130, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_USPS[] = { + {I_VCMPEQ_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6328, 188}, + {I_VCMPEQ_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6337, 188}, + {I_VCMPEQ_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6346, 188}, + {I_VCMPEQ_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6355, 188}, + {I_VCMPEQ_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2190, 240}, + {I_VCMPEQ_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2200, 240}, + {I_VCMPEQ_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2210, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGE_UQPS[] = { + {I_VCMPNGE_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6364, 188}, + {I_VCMPNGE_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6373, 188}, + {I_VCMPNGE_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6382, 188}, + {I_VCMPNGE_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6391, 188}, + {I_VCMPNGE_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2270, 240}, + {I_VCMPNGE_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2280, 240}, + {I_VCMPNGE_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2290, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGT_UQPS[] = { + {I_VCMPNGT_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6400, 188}, + {I_VCMPNGT_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6409, 188}, + {I_VCMPNGT_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6418, 188}, + {I_VCMPNGT_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6427, 188}, + {I_VCMPNGT_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2350, 240}, + {I_VCMPNGT_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2360, 240}, + {I_VCMPNGT_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2370, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPFALSE_OSPS[] = { + {I_VCMPFALSE_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6436, 188}, + {I_VCMPFALSE_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6445, 188}, + {I_VCMPFALSE_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6454, 188}, + {I_VCMPFALSE_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6463, 188}, + {I_VCMPFALSE_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2430, 240}, + {I_VCMPFALSE_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2440, 240}, + {I_VCMPFALSE_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2450, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_OSPS[] = { + {I_VCMPNEQ_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6472, 188}, + {I_VCMPNEQ_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6481, 188}, + {I_VCMPNEQ_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6490, 188}, + {I_VCMPNEQ_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6499, 188}, + {I_VCMPNEQ_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2510, 240}, + {I_VCMPNEQ_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2520, 240}, + {I_VCMPNEQ_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2530, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGE_OQPS[] = { + {I_VCMPGE_OQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6508, 188}, + {I_VCMPGE_OQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6517, 188}, + {I_VCMPGE_OQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6526, 188}, + {I_VCMPGE_OQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6535, 188}, + {I_VCMPGE_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2590, 240}, + {I_VCMPGE_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2600, 240}, + {I_VCMPGE_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2610, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGT_OQPS[] = { + {I_VCMPGT_OQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6544, 188}, + {I_VCMPGT_OQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6553, 188}, + {I_VCMPGT_OQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6562, 188}, + {I_VCMPGT_OQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6571, 188}, + {I_VCMPGT_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2670, 240}, + {I_VCMPGT_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2680, 240}, + {I_VCMPGT_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2690, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPTRUE_USPS[] = { + {I_VCMPTRUE_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6580, 188}, + {I_VCMPTRUE_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6589, 188}, + {I_VCMPTRUE_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6598, 188}, + {I_VCMPTRUE_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6607, 188}, + {I_VCMPTRUE_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2750, 240}, + {I_VCMPTRUE_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2760, 240}, + {I_VCMPTRUE_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2770, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPPS[] = { + {I_VCMPPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13464, 188}, + {I_VCMPPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13472, 188}, + {I_VCMPPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13480, 188}, + {I_VCMPPS, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13488, 188}, + {I_VCMPPS, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+8137, 240}, + {I_VCMPPS, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+8146, 240}, + {I_VCMPPS, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+8155, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_OSSD[] = { + {I_VCMPEQ_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6616, 188}, + {I_VCMPEQ_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6625, 188}, + {I_VCMPEQ_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6616, 188}, + {I_VCMPEQ_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6625, 188}, + {I_VCMPEQ_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1580, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQSD[] = { + {I_VCMPEQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6634, 188}, + {I_VCMPEQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6643, 188}, + {I_VCMPEQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+300, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLT_OSSD[] = { + {I_VCMPLT_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6652, 188}, + {I_VCMPLT_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6661, 188}, + {I_VCMPLT_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+380, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLTSD[] = { + {I_VCMPLTSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6652, 188}, + {I_VCMPLTSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6661, 188}, + {I_VCMPLTSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+380, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLE_OSSD[] = { + {I_VCMPLE_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6670, 188}, + {I_VCMPLE_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6679, 188}, + {I_VCMPLE_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+460, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLESD[] = { + {I_VCMPLESD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6670, 188}, + {I_VCMPLESD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6679, 188}, + {I_VCMPLESD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+460, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPUNORD_QSD[] = { + {I_VCMPUNORD_QSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6688, 188}, + {I_VCMPUNORD_QSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6697, 188}, + {I_VCMPUNORD_QSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+540, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPUNORDSD[] = { + {I_VCMPUNORDSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6688, 188}, + {I_VCMPUNORDSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6697, 188}, + {I_VCMPUNORDSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+540, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_UQSD[] = { + {I_VCMPNEQ_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6706, 188}, + {I_VCMPNEQ_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6715, 188}, + {I_VCMPNEQ_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+620, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQSD[] = { + {I_VCMPNEQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6706, 188}, + {I_VCMPNEQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6715, 188}, + {I_VCMPNEQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+620, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLT_USSD[] = { + {I_VCMPNLT_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6724, 188}, + {I_VCMPNLT_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6733, 188}, + {I_VCMPNLT_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+700, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLTSD[] = { + {I_VCMPNLTSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6724, 188}, + {I_VCMPNLTSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6733, 188}, + {I_VCMPNLTSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+700, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLE_USSD[] = { + {I_VCMPNLE_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6742, 188}, + {I_VCMPNLE_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6751, 188}, + {I_VCMPNLE_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+780, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLESD[] = { + {I_VCMPNLESD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6742, 188}, + {I_VCMPNLESD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6751, 188}, + {I_VCMPNLESD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+780, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPORD_QSD[] = { + {I_VCMPORD_QSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6760, 188}, + {I_VCMPORD_QSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6769, 188}, + {I_VCMPORD_QSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+860, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPORDSD[] = { + {I_VCMPORDSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6760, 188}, + {I_VCMPORDSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6769, 188}, + {I_VCMPORDSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+860, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_UQSD[] = { + {I_VCMPEQ_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6778, 188}, + {I_VCMPEQ_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6787, 188}, + {I_VCMPEQ_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+940, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGE_USSD[] = { + {I_VCMPNGE_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6796, 188}, + {I_VCMPNGE_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6805, 188}, + {I_VCMPNGE_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1020, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGESD[] = { + {I_VCMPNGESD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6796, 188}, + {I_VCMPNGESD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6805, 188}, + {I_VCMPNGESD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1020, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGT_USSD[] = { + {I_VCMPNGT_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6814, 188}, + {I_VCMPNGT_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6823, 188}, + {I_VCMPNGT_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1100, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGTSD[] = { + {I_VCMPNGTSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6814, 188}, + {I_VCMPNGTSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6823, 188}, + {I_VCMPNGTSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1100, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPFALSE_OQSD[] = { + {I_VCMPFALSE_OQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6832, 188}, + {I_VCMPFALSE_OQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6841, 188}, + {I_VCMPFALSE_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1180, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPFALSESD[] = { + {I_VCMPFALSESD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6832, 188}, + {I_VCMPFALSESD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6841, 188}, + {I_VCMPFALSESD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1180, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_OQSD[] = { + {I_VCMPNEQ_OQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6850, 188}, + {I_VCMPNEQ_OQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6859, 188}, + {I_VCMPNEQ_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1260, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGE_OSSD[] = { + {I_VCMPGE_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6868, 188}, + {I_VCMPGE_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6877, 188}, + {I_VCMPGE_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1340, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGESD[] = { + {I_VCMPGESD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6868, 188}, + {I_VCMPGESD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6877, 188}, + {I_VCMPGESD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1340, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGT_OSSD[] = { + {I_VCMPGT_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6886, 188}, + {I_VCMPGT_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6895, 188}, + {I_VCMPGT_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1420, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGTSD[] = { + {I_VCMPGTSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6886, 188}, + {I_VCMPGTSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6895, 188}, + {I_VCMPGTSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1420, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPTRUE_UQSD[] = { + {I_VCMPTRUE_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6904, 188}, + {I_VCMPTRUE_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6913, 188}, + {I_VCMPTRUE_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1500, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPTRUESD[] = { + {I_VCMPTRUESD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6904, 188}, + {I_VCMPTRUESD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6913, 188}, + {I_VCMPTRUESD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1500, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLT_OQSD[] = { + {I_VCMPLT_OQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6922, 188}, + {I_VCMPLT_OQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6931, 188}, + {I_VCMPLT_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1660, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLE_OQSD[] = { + {I_VCMPLE_OQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6940, 188}, + {I_VCMPLE_OQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6949, 188}, + {I_VCMPLE_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1740, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPUNORD_SSD[] = { + {I_VCMPUNORD_SSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6958, 188}, + {I_VCMPUNORD_SSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6967, 188}, + {I_VCMPUNORD_SSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1820, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_USSD[] = { + {I_VCMPNEQ_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6976, 188}, + {I_VCMPNEQ_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6985, 188}, + {I_VCMPNEQ_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1900, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLT_UQSD[] = { + {I_VCMPNLT_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6994, 188}, + {I_VCMPNLT_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7003, 188}, + {I_VCMPNLT_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1980, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLE_UQSD[] = { + {I_VCMPNLE_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7012, 188}, + {I_VCMPNLE_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7021, 188}, + {I_VCMPNLE_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2060, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPORD_SSD[] = { + {I_VCMPORD_SSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7030, 188}, + {I_VCMPORD_SSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7039, 188}, + {I_VCMPORD_SSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2140, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_USSD[] = { + {I_VCMPEQ_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7048, 188}, + {I_VCMPEQ_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7057, 188}, + {I_VCMPEQ_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2220, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGE_UQSD[] = { + {I_VCMPNGE_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7066, 188}, + {I_VCMPNGE_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7075, 188}, + {I_VCMPNGE_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2300, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGT_UQSD[] = { + {I_VCMPNGT_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7084, 188}, + {I_VCMPNGT_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7093, 188}, + {I_VCMPNGT_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2380, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPFALSE_OSSD[] = { + {I_VCMPFALSE_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7102, 188}, + {I_VCMPFALSE_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7111, 188}, + {I_VCMPFALSE_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2460, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_OSSD[] = { + {I_VCMPNEQ_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7120, 188}, + {I_VCMPNEQ_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7129, 188}, + {I_VCMPNEQ_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2540, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGE_OQSD[] = { + {I_VCMPGE_OQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7138, 188}, + {I_VCMPGE_OQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7147, 188}, + {I_VCMPGE_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2620, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGT_OQSD[] = { + {I_VCMPGT_OQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7156, 188}, + {I_VCMPGT_OQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7165, 188}, + {I_VCMPGT_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2700, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPTRUE_USSD[] = { + {I_VCMPTRUE_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7174, 188}, + {I_VCMPTRUE_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7183, 188}, + {I_VCMPTRUE_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2780, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPSD[] = { + {I_VCMPSD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13496, 188}, + {I_VCMPSD, 3, {XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13504, 188}, + {I_VCMPSD, 4, {KREG,XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+8164, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_OSSS[] = { + {I_VCMPEQ_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7192, 188}, + {I_VCMPEQ_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7201, 188}, + {I_VCMPEQ_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7192, 188}, + {I_VCMPEQ_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7201, 188}, + {I_VCMPEQ_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1590, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQSS[] = { + {I_VCMPEQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7210, 188}, + {I_VCMPEQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7219, 188}, + {I_VCMPEQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+310, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLT_OSSS[] = { + {I_VCMPLT_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7228, 188}, + {I_VCMPLT_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7237, 188}, + {I_VCMPLT_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+390, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLTSS[] = { + {I_VCMPLTSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7228, 188}, + {I_VCMPLTSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7237, 188}, + {I_VCMPLTSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+390, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLE_OSSS[] = { + {I_VCMPLE_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7246, 188}, + {I_VCMPLE_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7255, 188}, + {I_VCMPLE_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+470, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLESS[] = { + {I_VCMPLESS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7246, 188}, + {I_VCMPLESS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7255, 188}, + {I_VCMPLESS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+470, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPUNORD_QSS[] = { + {I_VCMPUNORD_QSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7264, 188}, + {I_VCMPUNORD_QSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7273, 188}, + {I_VCMPUNORD_QSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+550, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPUNORDSS[] = { + {I_VCMPUNORDSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7264, 188}, + {I_VCMPUNORDSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7273, 188}, + {I_VCMPUNORDSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+550, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_UQSS[] = { + {I_VCMPNEQ_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7282, 188}, + {I_VCMPNEQ_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7291, 188}, + {I_VCMPNEQ_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+630, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQSS[] = { + {I_VCMPNEQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7282, 188}, + {I_VCMPNEQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7291, 188}, + {I_VCMPNEQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+630, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLT_USSS[] = { + {I_VCMPNLT_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7300, 188}, + {I_VCMPNLT_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7309, 188}, + {I_VCMPNLT_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+710, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLTSS[] = { + {I_VCMPNLTSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7300, 188}, + {I_VCMPNLTSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7309, 188}, + {I_VCMPNLTSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+710, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLE_USSS[] = { + {I_VCMPNLE_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7318, 188}, + {I_VCMPNLE_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7327, 188}, + {I_VCMPNLE_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+790, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLESS[] = { + {I_VCMPNLESS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7318, 188}, + {I_VCMPNLESS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7327, 188}, + {I_VCMPNLESS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+790, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPORD_QSS[] = { + {I_VCMPORD_QSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7336, 188}, + {I_VCMPORD_QSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7345, 188}, + {I_VCMPORD_QSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+870, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPORDSS[] = { + {I_VCMPORDSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7336, 188}, + {I_VCMPORDSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7345, 188}, + {I_VCMPORDSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+870, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_UQSS[] = { + {I_VCMPEQ_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7354, 188}, + {I_VCMPEQ_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7363, 188}, + {I_VCMPEQ_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+950, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGE_USSS[] = { + {I_VCMPNGE_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7372, 188}, + {I_VCMPNGE_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7381, 188}, + {I_VCMPNGE_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1030, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGESS[] = { + {I_VCMPNGESS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7372, 188}, + {I_VCMPNGESS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7381, 188}, + {I_VCMPNGESS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1030, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGT_USSS[] = { + {I_VCMPNGT_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7390, 188}, + {I_VCMPNGT_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7399, 188}, + {I_VCMPNGT_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1110, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGTSS[] = { + {I_VCMPNGTSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7390, 188}, + {I_VCMPNGTSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7399, 188}, + {I_VCMPNGTSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1110, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPFALSE_OQSS[] = { + {I_VCMPFALSE_OQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7408, 188}, + {I_VCMPFALSE_OQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7417, 188}, + {I_VCMPFALSE_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1190, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPFALSESS[] = { + {I_VCMPFALSESS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7408, 188}, + {I_VCMPFALSESS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7417, 188}, + {I_VCMPFALSESS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1190, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_OQSS[] = { + {I_VCMPNEQ_OQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7426, 188}, + {I_VCMPNEQ_OQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7435, 188}, + {I_VCMPNEQ_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1270, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGE_OSSS[] = { + {I_VCMPGE_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7444, 188}, + {I_VCMPGE_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7453, 188}, + {I_VCMPGE_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1350, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGESS[] = { + {I_VCMPGESS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7444, 188}, + {I_VCMPGESS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7453, 188}, + {I_VCMPGESS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1350, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGT_OSSS[] = { + {I_VCMPGT_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7462, 188}, + {I_VCMPGT_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7471, 188}, + {I_VCMPGT_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1430, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGTSS[] = { + {I_VCMPGTSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7462, 188}, + {I_VCMPGTSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7471, 188}, + {I_VCMPGTSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1430, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPTRUE_UQSS[] = { + {I_VCMPTRUE_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7480, 188}, + {I_VCMPTRUE_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7489, 188}, + {I_VCMPTRUE_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1510, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPTRUESS[] = { + {I_VCMPTRUESS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7480, 188}, + {I_VCMPTRUESS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7489, 188}, + {I_VCMPTRUESS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1510, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLT_OQSS[] = { + {I_VCMPLT_OQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7498, 188}, + {I_VCMPLT_OQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7507, 188}, + {I_VCMPLT_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1670, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPLE_OQSS[] = { + {I_VCMPLE_OQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7516, 188}, + {I_VCMPLE_OQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7525, 188}, + {I_VCMPLE_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1750, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPUNORD_SSS[] = { + {I_VCMPUNORD_SSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7534, 188}, + {I_VCMPUNORD_SSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7543, 188}, + {I_VCMPUNORD_SSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1830, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_USSS[] = { + {I_VCMPNEQ_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7552, 188}, + {I_VCMPNEQ_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7561, 188}, + {I_VCMPNEQ_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1910, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLT_UQSS[] = { + {I_VCMPNLT_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7570, 188}, + {I_VCMPNLT_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7579, 188}, + {I_VCMPNLT_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1990, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNLE_UQSS[] = { + {I_VCMPNLE_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7588, 188}, + {I_VCMPNLE_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7597, 188}, + {I_VCMPNLE_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2070, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPORD_SSS[] = { + {I_VCMPORD_SSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7606, 188}, + {I_VCMPORD_SSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7615, 188}, + {I_VCMPORD_SSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2150, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_USSS[] = { + {I_VCMPEQ_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7624, 188}, + {I_VCMPEQ_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7633, 188}, + {I_VCMPEQ_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2230, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGE_UQSS[] = { + {I_VCMPNGE_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7642, 188}, + {I_VCMPNGE_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7651, 188}, + {I_VCMPNGE_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2310, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNGT_UQSS[] = { + {I_VCMPNGT_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7660, 188}, + {I_VCMPNGT_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7669, 188}, + {I_VCMPNGT_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2390, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPFALSE_OSSS[] = { + {I_VCMPFALSE_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7678, 188}, + {I_VCMPFALSE_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7687, 188}, + {I_VCMPFALSE_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2470, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPNEQ_OSSS[] = { + {I_VCMPNEQ_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7696, 188}, + {I_VCMPNEQ_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7705, 188}, + {I_VCMPNEQ_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2550, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGE_OQSS[] = { + {I_VCMPGE_OQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7714, 188}, + {I_VCMPGE_OQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7723, 188}, + {I_VCMPGE_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2630, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPGT_OQSS[] = { + {I_VCMPGT_OQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7732, 188}, + {I_VCMPGT_OQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7741, 188}, + {I_VCMPGT_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2710, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPTRUE_USSS[] = { + {I_VCMPTRUE_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7750, 188}, + {I_VCMPTRUE_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7759, 188}, + {I_VCMPTRUE_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2790, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPSS[] = { + {I_VCMPSS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13512, 188}, + {I_VCMPSS, 3, {XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13520, 188}, + {I_VCMPSS, 4, {KREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+8173, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCOMISD[] = { + {I_VCOMISD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35272, 188}, + {I_VCOMISD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+16960, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCOMISS[] = { + {I_VCOMISS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35279, 188}, + {I_VCOMISS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+16968, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTDQ2PD[] = { + {I_VCVTDQ2PD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35286, 188}, + {I_VCVTDQ2PD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35293, 188}, + {I_VCVTDQ2PD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17072, 240}, + {I_VCVTDQ2PD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17080, 240}, + {I_VCVTDQ2PD, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17088, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTDQ2PS[] = { + {I_VCVTDQ2PS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35300, 188}, + {I_VCVTDQ2PS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35307, 188}, + {I_VCVTDQ2PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17096, 240}, + {I_VCVTDQ2PS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17104, 240}, + {I_VCVTDQ2PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17112, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPD2DQ[] = { + {I_VCVTPD2DQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35314, 188}, + {I_VCVTPD2DQ, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35314, 192}, + {I_VCVTPD2DQ, 2, {XMM_L16,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35321, 188}, + {I_VCVTPD2DQ, 2, {XMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35321, 193}, + {I_VCVTPD2DQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17120, 240}, + {I_VCVTPD2DQ, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17128, 240}, + {I_VCVTPD2DQ, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17136, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPD2PS[] = { + {I_VCVTPD2PS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35328, 188}, + {I_VCVTPD2PS, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35328, 192}, + {I_VCVTPD2PS, 2, {XMM_L16,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35335, 188}, + {I_VCVTPD2PS, 2, {XMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35335, 193}, + {I_VCVTPD2PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17144, 240}, + {I_VCVTPD2PS, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17152, 240}, + {I_VCVTPD2PS, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17160, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPS2DQ[] = { + {I_VCVTPS2DQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35342, 188}, + {I_VCVTPS2DQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35349, 188}, + {I_VCVTPS2DQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17264, 240}, + {I_VCVTPS2DQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17272, 240}, + {I_VCVTPS2DQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17280, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPS2PD[] = { + {I_VCVTPS2PD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35356, 188}, + {I_VCVTPS2PD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35363, 188}, + {I_VCVTPS2PD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17288, 240}, + {I_VCVTPS2PD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17296, 240}, + {I_VCVTPS2PD, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+17304, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSD2SI[] = { + {I_VCVTSD2SI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35370, 188}, + {I_VCVTSD2SI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35377, 194}, + {I_VCVTSD2SI, 2, {REG_GPR|BITS32,RM_XMM|BITS64,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17432, 241}, + {I_VCVTSD2SI, 2, {REG_GPR|BITS64,RM_XMM|BITS64,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17440, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSD2SS[] = { + {I_VCVTSD2SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35384, 188}, + {I_VCVTSD2SS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35391, 188}, + {I_VCVTSD2SS, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+17448, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSI2SD[] = { + {I_VCVTSI2SD, 3, {XMM_L16,XMM_L16,RM_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35398, 195}, + {I_VCVTSI2SD, 2, {XMM_L16,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35405, 195}, + {I_VCVTSI2SD, 3, {XMM_L16,XMM_L16,MEMORY|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35398, 195}, + {I_VCVTSI2SD, 2, {XMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35405, 195}, + {I_VCVTSI2SD, 3, {XMM_L16,XMM_L16,RM_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35412, 196}, + {I_VCVTSI2SD, 2, {XMM_L16,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35419, 196}, + {I_VCVTSI2SD, 3, {XMMREG,XMMREG,RM_GPR|BITS32,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17472, 241}, + {I_VCVTSI2SD, 3, {XMMREG,XMMREG,RM_GPR|BITS64,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17480, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSI2SS[] = { + {I_VCVTSI2SS, 3, {XMM_L16,XMM_L16,RM_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35426, 195}, + {I_VCVTSI2SS, 2, {XMM_L16,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35433, 195}, + {I_VCVTSI2SS, 3, {XMM_L16,XMM_L16,MEMORY|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35426, 195}, + {I_VCVTSI2SS, 2, {XMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35433, 195}, + {I_VCVTSI2SS, 3, {XMM_L16,XMM_L16,RM_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35440, 196}, + {I_VCVTSI2SS, 2, {XMM_L16,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35447, 196}, + {I_VCVTSI2SS, 3, {XMMREG,XMMREG,RM_GPR|BITS32,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17488, 241}, + {I_VCVTSI2SS, 3, {XMMREG,XMMREG,RM_GPR|BITS64,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17496, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSS2SD[] = { + {I_VCVTSS2SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35454, 188}, + {I_VCVTSS2SD, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35461, 188}, + {I_VCVTSS2SD, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+17504, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSS2SI[] = { + {I_VCVTSS2SI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35468, 188}, + {I_VCVTSS2SI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35475, 194}, + {I_VCVTSS2SI, 2, {REG_GPR|BITS32,RM_XMM|BITS32,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17512, 241}, + {I_VCVTSS2SI, 2, {REG_GPR|BITS64,RM_XMM|BITS32,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17520, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPD2DQ[] = { + {I_VCVTTPD2DQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35482, 188}, + {I_VCVTTPD2DQ, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35482, 192}, + {I_VCVTTPD2DQ, 2, {XMM_L16,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35489, 188}, + {I_VCVTTPD2DQ, 2, {XMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35489, 193}, + {I_VCVTTPD2DQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17544, 240}, + {I_VCVTTPD2DQ, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17552, 240}, + {I_VCVTTPD2DQ, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+17560, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPS2DQ[] = { + {I_VCVTTPS2DQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35496, 188}, + {I_VCVTTPS2DQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35503, 188}, + {I_VCVTTPS2DQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17640, 240}, + {I_VCVTTPS2DQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17648, 240}, + {I_VCVTTPS2DQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+17656, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTSD2SI[] = { + {I_VCVTTSD2SI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35510, 188}, + {I_VCVTTSD2SI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35517, 194}, + {I_VCVTTSD2SI, 2, {REG_GPR|BITS32,RM_XMM|BITS64,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17736, 241}, + {I_VCVTTSD2SI, 2, {REG_GPR|BITS64,RM_XMM|BITS64,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17744, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTSS2SI[] = { + {I_VCVTTSS2SI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35524, 188}, + {I_VCVTTSS2SI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35531, 194}, + {I_VCVTTSS2SI, 2, {REG_GPR|BITS32,RM_XMM|BITS32,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17768, 241}, + {I_VCVTTSS2SI, 2, {REG_GPR|BITS64,RM_XMM|BITS32,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17776, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VDIVPD[] = { + {I_VDIVPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35538, 188}, + {I_VDIVPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35545, 188}, + {I_VDIVPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35552, 188}, + {I_VDIVPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35559, 188}, + {I_VDIVPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+17928, 240}, + {I_VDIVPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17936, 240}, + {I_VDIVPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+17944, 240}, + {I_VDIVPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17952, 240}, + {I_VDIVPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+17960, 241}, + {I_VDIVPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17968, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VDIVPS[] = { + {I_VDIVPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35566, 188}, + {I_VDIVPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35573, 188}, + {I_VDIVPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35580, 188}, + {I_VDIVPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35587, 188}, + {I_VDIVPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+17976, 240}, + {I_VDIVPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17984, 240}, + {I_VDIVPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+17992, 240}, + {I_VDIVPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+18000, 240}, + {I_VDIVPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18008, 241}, + {I_VDIVPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+18016, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VDIVSD[] = { + {I_VDIVSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35594, 188}, + {I_VDIVSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35601, 188}, + {I_VDIVSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18024, 241}, + {I_VDIVSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+18032, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VDIVSS[] = { + {I_VDIVSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35608, 188}, + {I_VDIVSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35615, 188}, + {I_VDIVSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18040, 241}, + {I_VDIVSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+18048, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VDPPD[] = { + {I_VDPPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13528, 188}, + {I_VDPPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13536, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VDPPS[] = { + {I_VDPPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13544, 188}, + {I_VDPPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13552, 188}, + {I_VDPPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13560, 188}, + {I_VDPPS, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13568, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXTRACTF128[] = { + {I_VEXTRACTF128, 3, {RM_XMM_L16|BITS128,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13576, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXTRACTPS[] = { + {I_VEXTRACTPS, 3, {RM_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13584, 188}, + {I_VEXTRACTPS, 3, {REG_GPR|BITS32,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+8479, 241}, + {I_VEXTRACTPS, 3, {REG_GPR|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+8479, 241}, + {I_VEXTRACTPS, 3, {MEMORY|BITS32,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+8479, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VHADDPD[] = { + {I_VHADDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35622, 188}, + {I_VHADDPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35629, 188}, + {I_VHADDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35636, 188}, + {I_VHADDPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35643, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VHADDPS[] = { + {I_VHADDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35650, 188}, + {I_VHADDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35657, 188}, + {I_VHADDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35664, 188}, + {I_VHADDPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35671, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VHSUBPD[] = { + {I_VHSUBPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35678, 188}, + {I_VHSUBPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35685, 188}, + {I_VHSUBPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35692, 188}, + {I_VHSUBPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35699, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VHSUBPS[] = { + {I_VHSUBPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35706, 188}, + {I_VHSUBPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35713, 188}, + {I_VHSUBPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35720, 188}, + {I_VHSUBPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35727, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VINSERTF128[] = { + {I_VINSERTF128, 4, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13592, 188}, + {I_VINSERTF128, 3, {YMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13600, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VINSERTPS[] = { + {I_VINSERTPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13608, 188}, + {I_VINSERTPS, 3, {XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13616, 188}, + {I_VINSERTPS, 4, {XMMREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9172, 241}, + {I_VINSERTPS, 3, {XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9181, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VLDDQU[] = { + {I_VLDDQU, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35734, 188}, + {I_VLDDQU, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35741, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VLDQQU[] = { + {I_VLDQQU, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35741, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VLDMXCSR[] = { + {I_VLDMXCSR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+35748, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMASKMOVDQU[] = { + {I_VMASKMOVDQU, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35755, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMASKMOVPS[] = { + {I_VMASKMOVPS, 3, {XMM_L16,XMM_L16,MEMORY|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35762, 188}, + {I_VMASKMOVPS, 3, {YMM_L16,YMM_L16,MEMORY|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35769, 188}, + {I_VMASKMOVPS, 3, {MEMORY|BITS128,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+35776, 192}, + {I_VMASKMOVPS, 3, {MEMORY|BITS256,YMM_L16,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+35783, 193}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMASKMOVPD[] = { + {I_VMASKMOVPD, 3, {XMM_L16,XMM_L16,MEMORY|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35790, 188}, + {I_VMASKMOVPD, 3, {YMM_L16,YMM_L16,MEMORY|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35797, 188}, + {I_VMASKMOVPD, 3, {MEMORY|BITS128,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+35804, 188}, + {I_VMASKMOVPD, 3, {MEMORY|BITS256,YMM_L16,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+35811, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMAXPD[] = { + {I_VMAXPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35818, 188}, + {I_VMAXPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35825, 188}, + {I_VMAXPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35832, 188}, + {I_VMAXPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35839, 188}, + {I_VMAXPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19240, 240}, + {I_VMAXPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+19248, 240}, + {I_VMAXPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19256, 240}, + {I_VMAXPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+19264, 240}, + {I_VMAXPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|SAE,0,0}, nasm_bytecodes+19272, 241}, + {I_VMAXPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+19280, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMAXPS[] = { + {I_VMAXPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35846, 188}, + {I_VMAXPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35853, 188}, + {I_VMAXPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35860, 188}, + {I_VMAXPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35867, 188}, + {I_VMAXPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19288, 240}, + {I_VMAXPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+19296, 240}, + {I_VMAXPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19304, 240}, + {I_VMAXPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+19312, 240}, + {I_VMAXPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|SAE,0,0}, nasm_bytecodes+19320, 241}, + {I_VMAXPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+19328, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMAXSD[] = { + {I_VMAXSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35874, 188}, + {I_VMAXSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35881, 188}, + {I_VMAXSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+19336, 241}, + {I_VMAXSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+19344, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMAXSS[] = { + {I_VMAXSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35888, 188}, + {I_VMAXSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35895, 188}, + {I_VMAXSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+19352, 241}, + {I_VMAXSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+19360, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMINPD[] = { + {I_VMINPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35902, 188}, + {I_VMINPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35909, 188}, + {I_VMINPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35916, 188}, + {I_VMINPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35923, 188}, + {I_VMINPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19368, 240}, + {I_VMINPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+19376, 240}, + {I_VMINPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19384, 240}, + {I_VMINPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+19392, 240}, + {I_VMINPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|SAE,0,0}, nasm_bytecodes+19400, 241}, + {I_VMINPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+19408, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMINPS[] = { + {I_VMINPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35930, 188}, + {I_VMINPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35937, 188}, + {I_VMINPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35944, 188}, + {I_VMINPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35951, 188}, + {I_VMINPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19416, 240}, + {I_VMINPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+19424, 240}, + {I_VMINPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19432, 240}, + {I_VMINPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+19440, 240}, + {I_VMINPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|SAE,0,0}, nasm_bytecodes+19448, 241}, + {I_VMINPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+19456, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMINSD[] = { + {I_VMINSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35958, 188}, + {I_VMINSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35965, 188}, + {I_VMINSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+19464, 241}, + {I_VMINSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+19472, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMINSS[] = { + {I_VMINSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35972, 188}, + {I_VMINSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35979, 188}, + {I_VMINSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+19480, 241}, + {I_VMINSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+19488, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVAPD[] = { + {I_VMOVAPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35986, 188}, + {I_VMOVAPD, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35993, 188}, + {I_VMOVAPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36000, 188}, + {I_VMOVAPD, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36007, 188}, + {I_VMOVAPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19496, 240}, + {I_VMOVAPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19504, 240}, + {I_VMOVAPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19512, 241}, + {I_VMOVAPD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19520, 240}, + {I_VMOVAPD, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19528, 240}, + {I_VMOVAPD, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19536, 241}, + {I_VMOVAPD, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+19544, 240}, + {I_VMOVAPD, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+19552, 240}, + {I_VMOVAPD, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+19560, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVAPS[] = { + {I_VMOVAPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36014, 188}, + {I_VMOVAPS, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36021, 188}, + {I_VMOVAPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36028, 188}, + {I_VMOVAPS, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36035, 188}, + {I_VMOVAPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19568, 240}, + {I_VMOVAPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19576, 240}, + {I_VMOVAPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19584, 241}, + {I_VMOVAPS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19592, 240}, + {I_VMOVAPS, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19600, 240}, + {I_VMOVAPS, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19608, 241}, + {I_VMOVAPS, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+19616, 240}, + {I_VMOVAPS, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+19624, 240}, + {I_VMOVAPS, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+19632, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVD[] = { + {I_VMOVD, 2, {XMM_L16,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+36042, 188}, + {I_VMOVD, 2, {RM_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36049, 188}, + {I_VMOVD, 2, {XMMREG,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+19640, 241}, + {I_VMOVD, 2, {RM_GPR|BITS32,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+19648, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVQ[] = { + {I_VMOVQ, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36056, 197}, + {I_VMOVQ, 2, {RM_XMM_L16|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36063, 197}, + {I_VMOVQ, 2, {XMM_L16,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36070, 196}, + {I_VMOVQ, 2, {RM_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36077, 196}, + {I_VMOVQ, 2, {XMMREG,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+20192, 241}, + {I_VMOVQ, 2, {RM_GPR|BITS64,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20200, 241}, + {I_VMOVQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+20208, 241}, + {I_VMOVQ, 2, {RM_XMM|BITS64,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20216, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVDDUP[] = { + {I_VMOVDDUP, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36084, 188}, + {I_VMOVDDUP, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36091, 188}, + {I_VMOVDDUP, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19656, 240}, + {I_VMOVDDUP, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19664, 240}, + {I_VMOVDDUP, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19672, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVDQA[] = { + {I_VMOVDQA, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36098, 188}, + {I_VMOVDQA, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36105, 188}, + {I_VMOVDQA, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36112, 188}, + {I_VMOVDQA, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36119, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVQQA[] = { + {I_VMOVQQA, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36112, 188}, + {I_VMOVQQA, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36119, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVDQU[] = { + {I_VMOVDQU, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36126, 188}, + {I_VMOVDQU, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36133, 188}, + {I_VMOVDQU, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36140, 188}, + {I_VMOVDQU, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36147, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVQQU[] = { + {I_VMOVQQU, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36140, 188}, + {I_VMOVQQU, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36147, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVHLPS[] = { + {I_VMOVHLPS, 3, {XMM_L16,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+36154, 188}, + {I_VMOVHLPS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36161, 188}, + {I_VMOVHLPS, 3, {XMMREG,XMMREG,XMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+19968, 241}, + {I_VMOVHLPS, 2, {XMMREG,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+19976, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVHPD[] = { + {I_VMOVHPD, 3, {XMM_L16,XMM_L16,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+36168, 188}, + {I_VMOVHPD, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36175, 188}, + {I_VMOVHPD, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36182, 188}, + {I_VMOVHPD, 3, {XMMREG,XMMREG,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+19984, 241}, + {I_VMOVHPD, 2, {XMMREG,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+19992, 241}, + {I_VMOVHPD, 2, {MEMORY|BITS64,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20000, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVHPS[] = { + {I_VMOVHPS, 3, {XMM_L16,XMM_L16,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+36189, 188}, + {I_VMOVHPS, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36196, 188}, + {I_VMOVHPS, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36203, 188}, + {I_VMOVHPS, 3, {XMMREG,XMMREG,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+20008, 241}, + {I_VMOVHPS, 2, {XMMREG,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+20016, 241}, + {I_VMOVHPS, 2, {MEMORY|BITS64,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20024, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVLHPS[] = { + {I_VMOVLHPS, 3, {XMM_L16,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+36189, 188}, + {I_VMOVLHPS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36196, 188}, + {I_VMOVLHPS, 3, {XMMREG,XMMREG,XMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+20032, 241}, + {I_VMOVLHPS, 2, {XMMREG,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20040, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVLPD[] = { + {I_VMOVLPD, 3, {XMM_L16,XMM_L16,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+36210, 188}, + {I_VMOVLPD, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36217, 188}, + {I_VMOVLPD, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36224, 188}, + {I_VMOVLPD, 3, {XMMREG,XMMREG,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+20048, 241}, + {I_VMOVLPD, 2, {XMMREG,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+20056, 241}, + {I_VMOVLPD, 2, {MEMORY|BITS64,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20064, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVLPS[] = { + {I_VMOVLPS, 3, {XMM_L16,XMM_L16,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+36154, 188}, + {I_VMOVLPS, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36161, 188}, + {I_VMOVLPS, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36231, 188}, + {I_VMOVLPS, 3, {XMMREG,XMMREG,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+20072, 241}, + {I_VMOVLPS, 2, {XMMREG,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+20080, 241}, + {I_VMOVLPS, 2, {MEMORY|BITS64,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20088, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVMSKPD[] = { + {I_VMOVMSKPD, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36238, 194}, + {I_VMOVMSKPD, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36238, 188}, + {I_VMOVMSKPD, 2, {REG_GPR|BITS64,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36245, 194}, + {I_VMOVMSKPD, 2, {REG_GPR|BITS32,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36245, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVMSKPS[] = { + {I_VMOVMSKPS, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36252, 194}, + {I_VMOVMSKPS, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36252, 188}, + {I_VMOVMSKPS, 2, {REG_GPR|BITS64,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36259, 194}, + {I_VMOVMSKPS, 2, {REG_GPR|BITS32,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36259, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVNTDQ[] = { + {I_VMOVNTDQ, 2, {MEMORY|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36266, 188}, + {I_VMOVNTDQ, 2, {MEMORY|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36273, 188}, + {I_VMOVNTDQ, 2, {MEMORY|BITS128,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20096, 240}, + {I_VMOVNTDQ, 2, {MEMORY|BITS256,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20104, 240}, + {I_VMOVNTDQ, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20112, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVNTQQ[] = { + {I_VMOVNTQQ, 2, {MEMORY|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36273, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVNTDQA[] = { + {I_VMOVNTDQA, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36280, 188}, + {I_VMOVNTDQA, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41033, 207}, + {I_VMOVNTDQA, 2, {XMMREG,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+20120, 240}, + {I_VMOVNTDQA, 2, {YMMREG,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+20128, 240}, + {I_VMOVNTDQA, 2, {ZMMREG,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+20136, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVNTPD[] = { + {I_VMOVNTPD, 2, {MEMORY|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36287, 188}, + {I_VMOVNTPD, 2, {MEMORY|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36294, 188}, + {I_VMOVNTPD, 2, {MEMORY|BITS128,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20144, 240}, + {I_VMOVNTPD, 2, {MEMORY|BITS256,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20152, 240}, + {I_VMOVNTPD, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20160, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVNTPS[] = { + {I_VMOVNTPS, 2, {MEMORY|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36301, 188}, + {I_VMOVNTPS, 2, {MEMORY|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36308, 188}, + {I_VMOVNTPS, 2, {MEMORY|BITS128,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20168, 240}, + {I_VMOVNTPS, 2, {MEMORY|BITS256,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20176, 240}, + {I_VMOVNTPS, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20184, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVSD[] = { + {I_VMOVSD, 3, {XMM_L16,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+36315, 188}, + {I_VMOVSD, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36322, 188}, + {I_VMOVSD, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36329, 188}, + {I_VMOVSD, 3, {XMM_L16,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+36336, 188}, + {I_VMOVSD, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36343, 188}, + {I_VMOVSD, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36350, 188}, + {I_VMOVSD, 2, {XMMREG,MEMORY|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20224, 241}, + {I_VMOVSD, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20232, 241}, + {I_VMOVSD, 3, {XMMREG,XMMREG,XMMREG,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20240, 241}, + {I_VMOVSD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20248, 241}, + {I_VMOVSD, 3, {XMMREG,XMMREG,XMMREG,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20256, 241}, + {I_VMOVSD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20264, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVSHDUP[] = { + {I_VMOVSHDUP, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36357, 188}, + {I_VMOVSHDUP, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36364, 188}, + {I_VMOVSHDUP, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20272, 240}, + {I_VMOVSHDUP, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20280, 240}, + {I_VMOVSHDUP, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20288, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVSLDUP[] = { + {I_VMOVSLDUP, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36371, 188}, + {I_VMOVSLDUP, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36378, 188}, + {I_VMOVSLDUP, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20296, 240}, + {I_VMOVSLDUP, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20304, 240}, + {I_VMOVSLDUP, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20312, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVSS[] = { + {I_VMOVSS, 3, {XMM_L16,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+36385, 188}, + {I_VMOVSS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36392, 188}, + {I_VMOVSS, 2, {XMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+36399, 188}, + {I_VMOVSS, 3, {XMM_L16,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+36406, 188}, + {I_VMOVSS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36413, 188}, + {I_VMOVSS, 2, {MEMORY|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36420, 188}, + {I_VMOVSS, 2, {XMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20320, 241}, + {I_VMOVSS, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20328, 241}, + {I_VMOVSS, 3, {XMMREG,XMMREG,XMMREG,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20336, 241}, + {I_VMOVSS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20344, 241}, + {I_VMOVSS, 3, {XMMREG,XMMREG,XMMREG,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20352, 241}, + {I_VMOVSS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20360, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVUPD[] = { + {I_VMOVUPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36427, 188}, + {I_VMOVUPD, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36434, 188}, + {I_VMOVUPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36441, 188}, + {I_VMOVUPD, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36448, 188}, + {I_VMOVUPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20368, 240}, + {I_VMOVUPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20376, 240}, + {I_VMOVUPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20384, 241}, + {I_VMOVUPD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20392, 240}, + {I_VMOVUPD, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20400, 240}, + {I_VMOVUPD, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20408, 241}, + {I_VMOVUPD, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20416, 240}, + {I_VMOVUPD, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20424, 240}, + {I_VMOVUPD, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20432, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVUPS[] = { + {I_VMOVUPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36455, 188}, + {I_VMOVUPS, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36462, 188}, + {I_VMOVUPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36469, 188}, + {I_VMOVUPS, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36476, 188}, + {I_VMOVUPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20440, 240}, + {I_VMOVUPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20448, 240}, + {I_VMOVUPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20456, 241}, + {I_VMOVUPS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20464, 240}, + {I_VMOVUPS, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20472, 240}, + {I_VMOVUPS, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20480, 241}, + {I_VMOVUPS, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20488, 240}, + {I_VMOVUPS, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20496, 240}, + {I_VMOVUPS, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20504, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMPSADBW[] = { + {I_VMPSADBW, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13624, 188}, + {I_VMPSADBW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13632, 188}, + {I_VMPSADBW, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15808, 207}, + {I_VMPSADBW, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15816, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMULPD[] = { + {I_VMULPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36483, 188}, + {I_VMULPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36490, 188}, + {I_VMULPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+36497, 188}, + {I_VMULPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36504, 188}, + {I_VMULPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+20512, 240}, + {I_VMULPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20520, 240}, + {I_VMULPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+20528, 240}, + {I_VMULPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20536, 240}, + {I_VMULPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+20544, 241}, + {I_VMULPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+20552, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMULPS[] = { + {I_VMULPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36511, 188}, + {I_VMULPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36518, 188}, + {I_VMULPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+36525, 188}, + {I_VMULPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36532, 188}, + {I_VMULPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20560, 240}, + {I_VMULPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20568, 240}, + {I_VMULPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20576, 240}, + {I_VMULPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20584, 240}, + {I_VMULPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+20592, 241}, + {I_VMULPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+20600, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMULSD[] = { + {I_VMULSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+36539, 188}, + {I_VMULSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36546, 188}, + {I_VMULSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+20608, 241}, + {I_VMULSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+20616, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMULSS[] = { + {I_VMULSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+36553, 188}, + {I_VMULSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+36560, 188}, + {I_VMULSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+20624, 241}, + {I_VMULSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+20632, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VORPD[] = { + {I_VORPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36567, 188}, + {I_VORPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36574, 188}, + {I_VORPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+36581, 188}, + {I_VORPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36588, 188}, + {I_VORPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+20640, 242}, + {I_VORPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20648, 242}, + {I_VORPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+20656, 242}, + {I_VORPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20664, 242}, + {I_VORPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+20672, 243}, + {I_VORPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20680, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VORPS[] = { + {I_VORPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36595, 188}, + {I_VORPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36602, 188}, + {I_VORPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+36609, 188}, + {I_VORPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36616, 188}, + {I_VORPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20688, 242}, + {I_VORPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20696, 242}, + {I_VORPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20704, 242}, + {I_VORPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20712, 242}, + {I_VORPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20720, 243}, + {I_VORPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20728, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPABSB[] = { + {I_VPABSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36623, 188}, + {I_VPABSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39773, 207}, + {I_VPABSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20736, 244}, + {I_VPABSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20744, 244}, + {I_VPABSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20752, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPABSW[] = { + {I_VPABSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36630, 188}, + {I_VPABSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39780, 207}, + {I_VPABSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20808, 244}, + {I_VPABSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20816, 244}, + {I_VPABSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20824, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPABSD[] = { + {I_VPABSD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36637, 188}, + {I_VPABSD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39787, 207}, + {I_VPABSD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20760, 240}, + {I_VPABSD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20768, 240}, + {I_VPABSD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20776, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPACKSSWB[] = { + {I_VPACKSSWB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36644, 188}, + {I_VPACKSSWB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36651, 188}, + {I_VPACKSSWB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39794, 207}, + {I_VPACKSSWB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39801, 207}, + {I_VPACKSSWB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20880, 244}, + {I_VPACKSSWB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20888, 244}, + {I_VPACKSSWB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20896, 244}, + {I_VPACKSSWB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20904, 244}, + {I_VPACKSSWB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20912, 245}, + {I_VPACKSSWB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20920, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPACKSSDW[] = { + {I_VPACKSSDW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36658, 188}, + {I_VPACKSSDW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36665, 188}, + {I_VPACKSSDW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39808, 207}, + {I_VPACKSSDW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39815, 207}, + {I_VPACKSSDW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20832, 244}, + {I_VPACKSSDW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20840, 244}, + {I_VPACKSSDW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20848, 244}, + {I_VPACKSSDW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20856, 244}, + {I_VPACKSSDW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20864, 245}, + {I_VPACKSSDW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20872, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPACKUSWB[] = { + {I_VPACKUSWB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36672, 188}, + {I_VPACKUSWB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36679, 188}, + {I_VPACKUSWB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39836, 207}, + {I_VPACKUSWB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39843, 207}, + {I_VPACKUSWB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20976, 244}, + {I_VPACKUSWB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20984, 244}, + {I_VPACKUSWB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20992, 244}, + {I_VPACKUSWB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21000, 244}, + {I_VPACKUSWB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21008, 245}, + {I_VPACKUSWB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21016, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPACKUSDW[] = { + {I_VPACKUSDW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36686, 188}, + {I_VPACKUSDW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36693, 188}, + {I_VPACKUSDW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39822, 207}, + {I_VPACKUSDW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39829, 207}, + {I_VPACKUSDW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20928, 244}, + {I_VPACKUSDW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20936, 244}, + {I_VPACKUSDW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20944, 244}, + {I_VPACKUSDW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20952, 244}, + {I_VPACKUSDW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20960, 245}, + {I_VPACKUSDW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20968, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPADDB[] = { + {I_VPADDB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36700, 188}, + {I_VPADDB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36707, 188}, + {I_VPADDB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39850, 207}, + {I_VPADDB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39857, 207}, + {I_VPADDB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21024, 244}, + {I_VPADDB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21032, 244}, + {I_VPADDB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21040, 244}, + {I_VPADDB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21048, 244}, + {I_VPADDB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21056, 245}, + {I_VPADDB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21064, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPADDW[] = { + {I_VPADDW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36714, 188}, + {I_VPADDW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36721, 188}, + {I_VPADDW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39864, 207}, + {I_VPADDW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39871, 207}, + {I_VPADDW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21360, 244}, + {I_VPADDW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21368, 244}, + {I_VPADDW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21376, 244}, + {I_VPADDW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21384, 244}, + {I_VPADDW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21392, 245}, + {I_VPADDW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21400, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPADDD[] = { + {I_VPADDD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36728, 188}, + {I_VPADDD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36735, 188}, + {I_VPADDD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39878, 207}, + {I_VPADDD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39885, 207}, + {I_VPADDD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21072, 240}, + {I_VPADDD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21080, 240}, + {I_VPADDD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21088, 240}, + {I_VPADDD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21096, 240}, + {I_VPADDD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21104, 241}, + {I_VPADDD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21112, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPADDQ[] = { + {I_VPADDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36742, 188}, + {I_VPADDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36749, 188}, + {I_VPADDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39892, 207}, + {I_VPADDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39899, 207}, + {I_VPADDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21120, 240}, + {I_VPADDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21128, 240}, + {I_VPADDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21136, 240}, + {I_VPADDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21144, 240}, + {I_VPADDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21152, 241}, + {I_VPADDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21160, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPADDSB[] = { + {I_VPADDSB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36756, 188}, + {I_VPADDSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36763, 188}, + {I_VPADDSB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39906, 207}, + {I_VPADDSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39913, 207}, + {I_VPADDSB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21168, 244}, + {I_VPADDSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21176, 244}, + {I_VPADDSB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21184, 244}, + {I_VPADDSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21192, 244}, + {I_VPADDSB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21200, 245}, + {I_VPADDSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21208, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPADDSW[] = { + {I_VPADDSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36770, 188}, + {I_VPADDSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36777, 188}, + {I_VPADDSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39920, 207}, + {I_VPADDSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39927, 207}, + {I_VPADDSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21216, 244}, + {I_VPADDSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21224, 244}, + {I_VPADDSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21232, 244}, + {I_VPADDSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21240, 244}, + {I_VPADDSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21248, 245}, + {I_VPADDSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21256, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPADDUSB[] = { + {I_VPADDUSB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36784, 188}, + {I_VPADDUSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36791, 188}, + {I_VPADDUSB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39934, 207}, + {I_VPADDUSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39941, 207}, + {I_VPADDUSB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21264, 244}, + {I_VPADDUSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21272, 244}, + {I_VPADDUSB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21280, 244}, + {I_VPADDUSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21288, 244}, + {I_VPADDUSB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21296, 245}, + {I_VPADDUSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21304, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPADDUSW[] = { + {I_VPADDUSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36798, 188}, + {I_VPADDUSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36805, 188}, + {I_VPADDUSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39948, 207}, + {I_VPADDUSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39955, 207}, + {I_VPADDUSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21312, 244}, + {I_VPADDUSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21320, 244}, + {I_VPADDUSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21328, 244}, + {I_VPADDUSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21336, 244}, + {I_VPADDUSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21344, 245}, + {I_VPADDUSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21352, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPALIGNR[] = { + {I_VPALIGNR, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13640, 188}, + {I_VPALIGNR, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13648, 188}, + {I_VPALIGNR, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15824, 207}, + {I_VPALIGNR, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15832, 207}, + {I_VPALIGNR, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9190, 244}, + {I_VPALIGNR, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9199, 244}, + {I_VPALIGNR, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9208, 244}, + {I_VPALIGNR, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9217, 244}, + {I_VPALIGNR, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9226, 245}, + {I_VPALIGNR, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9235, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPAND[] = { + {I_VPAND, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36812, 188}, + {I_VPAND, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36819, 188}, + {I_VPAND, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39962, 207}, + {I_VPAND, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39969, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPANDN[] = { + {I_VPANDN, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36826, 188}, + {I_VPANDN, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36833, 188}, + {I_VPANDN, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39976, 207}, + {I_VPANDN, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39983, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPAVGB[] = { + {I_VPAVGB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36840, 188}, + {I_VPAVGB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36847, 188}, + {I_VPAVGB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39990, 207}, + {I_VPAVGB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39997, 207}, + {I_VPAVGB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21600, 244}, + {I_VPAVGB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21608, 244}, + {I_VPAVGB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21616, 244}, + {I_VPAVGB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21624, 244}, + {I_VPAVGB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21632, 245}, + {I_VPAVGB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21640, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPAVGW[] = { + {I_VPAVGW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36854, 188}, + {I_VPAVGW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36861, 188}, + {I_VPAVGW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40004, 207}, + {I_VPAVGW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40011, 207}, + {I_VPAVGW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21648, 244}, + {I_VPAVGW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21656, 244}, + {I_VPAVGW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21664, 244}, + {I_VPAVGW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21672, 244}, + {I_VPAVGW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21680, 245}, + {I_VPAVGW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21688, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBLENDVB[] = { + {I_VPBLENDVB, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+13656, 188}, + {I_VPBLENDVB, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+13664, 188}, + {I_VPBLENDVB, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15840, 207}, + {I_VPBLENDVB, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15848, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBLENDW[] = { + {I_VPBLENDW, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13672, 188}, + {I_VPBLENDW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13680, 188}, + {I_VPBLENDW, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15856, 207}, + {I_VPBLENDW, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15864, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPESTRI[] = { + {I_VPCMPESTRI, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13688, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPESTRM[] = { + {I_VPCMPESTRM, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13696, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPISTRI[] = { + {I_VPCMPISTRI, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13704, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPISTRM[] = { + {I_VPCMPISTRM, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13712, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPEQB[] = { + {I_VPCMPEQB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36868, 188}, + {I_VPCMPEQB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36875, 188}, + {I_VPCMPEQB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40018, 207}, + {I_VPCMPEQB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40025, 207}, + {I_VPCMPEQB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22080, 244}, + {I_VPCMPEQB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22088, 244}, + {I_VPCMPEQB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22096, 245}, + {I_VPCMPEQB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2800, 244}, + {I_VPCMPEQB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2810, 244}, + {I_VPCMPEQB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2820, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPEQW[] = { + {I_VPCMPEQW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36882, 188}, + {I_VPCMPEQW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36889, 188}, + {I_VPCMPEQW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40032, 207}, + {I_VPCMPEQW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40039, 207}, + {I_VPCMPEQW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22152, 244}, + {I_VPCMPEQW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22160, 244}, + {I_VPCMPEQW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22168, 245}, + {I_VPCMPEQW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3010, 244}, + {I_VPCMPEQW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3020, 244}, + {I_VPCMPEQW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3030, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPEQD[] = { + {I_VPCMPEQD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36896, 188}, + {I_VPCMPEQD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36903, 188}, + {I_VPCMPEQD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40046, 207}, + {I_VPCMPEQD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40053, 207}, + {I_VPCMPEQD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+22104, 240}, + {I_VPCMPEQD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+22112, 240}, + {I_VPCMPEQD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+22120, 241}, + {I_VPCMPEQD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2830, 240}, + {I_VPCMPEQD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2840, 240}, + {I_VPCMPEQD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2850, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPEQQ[] = { + {I_VPCMPEQQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36910, 188}, + {I_VPCMPEQQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36917, 188}, + {I_VPCMPEQQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40060, 207}, + {I_VPCMPEQQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40067, 207}, + {I_VPCMPEQQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+22128, 240}, + {I_VPCMPEQQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+22136, 240}, + {I_VPCMPEQQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+22144, 241}, + {I_VPCMPEQQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2860, 240}, + {I_VPCMPEQQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2870, 240}, + {I_VPCMPEQQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2880, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGTB[] = { + {I_VPCMPGTB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36924, 188}, + {I_VPCMPGTB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36931, 188}, + {I_VPCMPGTB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40074, 207}, + {I_VPCMPGTB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40081, 207}, + {I_VPCMPGTB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22176, 244}, + {I_VPCMPGTB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22184, 244}, + {I_VPCMPGTB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22192, 245}, + {I_VPCMPGTB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3280, 244}, + {I_VPCMPGTB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3290, 244}, + {I_VPCMPGTB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3300, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGTW[] = { + {I_VPCMPGTW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36938, 188}, + {I_VPCMPGTW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36945, 188}, + {I_VPCMPGTW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40088, 207}, + {I_VPCMPGTW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40095, 207}, + {I_VPCMPGTW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22248, 244}, + {I_VPCMPGTW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22256, 244}, + {I_VPCMPGTW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22264, 245}, + {I_VPCMPGTW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3490, 244}, + {I_VPCMPGTW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3500, 244}, + {I_VPCMPGTW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3510, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGTD[] = { + {I_VPCMPGTD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36952, 188}, + {I_VPCMPGTD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36959, 188}, + {I_VPCMPGTD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40102, 207}, + {I_VPCMPGTD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40109, 207}, + {I_VPCMPGTD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+22200, 240}, + {I_VPCMPGTD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+22208, 240}, + {I_VPCMPGTD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+22216, 241}, + {I_VPCMPGTD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3310, 240}, + {I_VPCMPGTD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3320, 240}, + {I_VPCMPGTD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3330, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGTQ[] = { + {I_VPCMPGTQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36966, 188}, + {I_VPCMPGTQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36973, 188}, + {I_VPCMPGTQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40116, 207}, + {I_VPCMPGTQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40123, 207}, + {I_VPCMPGTQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+22224, 240}, + {I_VPCMPGTQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+22232, 240}, + {I_VPCMPGTQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+22240, 241}, + {I_VPCMPGTQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3340, 240}, + {I_VPCMPGTQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3350, 240}, + {I_VPCMPGTQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3360, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMILPD[] = { + {I_VPERMILPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36980, 188}, + {I_VPERMILPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36987, 188}, + {I_VPERMILPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+36994, 188}, + {I_VPERMILPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+37001, 188}, + {I_VPERMILPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13720, 188}, + {I_VPERMILPD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13728, 188}, + {I_VPERMILPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9460, 240}, + {I_VPERMILPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9469, 240}, + {I_VPERMILPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9478, 241}, + {I_VPERMILPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22640, 240}, + {I_VPERMILPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22648, 240}, + {I_VPERMILPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22656, 240}, + {I_VPERMILPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22664, 240}, + {I_VPERMILPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22672, 241}, + {I_VPERMILPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22680, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMILPS[] = { + {I_VPERMILPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37008, 188}, + {I_VPERMILPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37015, 188}, + {I_VPERMILPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+37022, 188}, + {I_VPERMILPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+37029, 188}, + {I_VPERMILPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13736, 188}, + {I_VPERMILPS, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13744, 188}, + {I_VPERMILPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9487, 240}, + {I_VPERMILPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9496, 240}, + {I_VPERMILPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9505, 241}, + {I_VPERMILPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22688, 240}, + {I_VPERMILPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22696, 240}, + {I_VPERMILPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22704, 240}, + {I_VPERMILPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22712, 240}, + {I_VPERMILPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22720, 241}, + {I_VPERMILPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22728, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERM2F128[] = { + {I_VPERM2F128, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13752, 188}, + {I_VPERM2F128, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13760, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPEXTRB[] = { + {I_VPEXTRB, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13768, 194}, + {I_VPEXTRB, 3, {REG_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13768, 188}, + {I_VPEXTRB, 3, {MEMORY|BITS8,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13768, 188}, + {I_VPEXTRB, 3, {REG_GPR|BITS8,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9550, 245}, + {I_VPEXTRB, 3, {REG_GPR|BITS16,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9550, 245}, + {I_VPEXTRB, 3, {REG_GPR|BITS32,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9550, 245}, + {I_VPEXTRB, 3, {REG_GPR|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9550, 245}, + {I_VPEXTRB, 3, {MEMORY|BITS8,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9550, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPEXTRW[] = { + {I_VPEXTRW, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13776, 194}, + {I_VPEXTRW, 3, {REG_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13776, 188}, + {I_VPEXTRW, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13784, 194}, + {I_VPEXTRW, 3, {REG_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13784, 188}, + {I_VPEXTRW, 3, {MEMORY|BITS16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13784, 188}, + {I_VPEXTRW, 3, {REG_GPR|BITS16,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9577, 245}, + {I_VPEXTRW, 3, {REG_GPR|BITS32,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9577, 245}, + {I_VPEXTRW, 3, {REG_GPR|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9577, 245}, + {I_VPEXTRW, 3, {MEMORY|BITS16,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9577, 245}, + {I_VPEXTRW, 3, {REG_GPR|BITS16,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9586, 245}, + {I_VPEXTRW, 3, {REG_GPR|BITS32,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9586, 245}, + {I_VPEXTRW, 3, {REG_GPR|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9586, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPEXTRD[] = { + {I_VPEXTRD, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13792, 194}, + {I_VPEXTRD, 3, {RM_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13792, 188}, + {I_VPEXTRD, 3, {RM_GPR|BITS32,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9559, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPEXTRQ[] = { + {I_VPEXTRQ, 3, {RM_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13800, 194}, + {I_VPEXTRQ, 3, {RM_GPR|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9568, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDW[] = { + {I_VPHADDW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37036, 188}, + {I_VPHADDW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37043, 188}, + {I_VPHADDW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40130, 207}, + {I_VPHADDW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40137, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDD[] = { + {I_VPHADDD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37050, 188}, + {I_VPHADDD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37057, 188}, + {I_VPHADDD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40144, 207}, + {I_VPHADDD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40151, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDSW[] = { + {I_VPHADDSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37064, 188}, + {I_VPHADDSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37071, 188}, + {I_VPHADDSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40158, 207}, + {I_VPHADDSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40165, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHMINPOSUW[] = { + {I_VPHMINPOSUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37078, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHSUBW[] = { + {I_VPHSUBW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37085, 188}, + {I_VPHSUBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37092, 188}, + {I_VPHSUBW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40172, 207}, + {I_VPHSUBW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40179, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHSUBD[] = { + {I_VPHSUBD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37099, 188}, + {I_VPHSUBD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37106, 188}, + {I_VPHSUBD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40186, 207}, + {I_VPHSUBD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40193, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHSUBSW[] = { + {I_VPHSUBSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37113, 188}, + {I_VPHSUBSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37120, 188}, + {I_VPHSUBSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40200, 207}, + {I_VPHSUBSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40207, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPINSRB[] = { + {I_VPINSRB, 4, {XMM_L16,XMM_L16,MEMORY|BITS8,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13808, 188}, + {I_VPINSRB, 3, {XMM_L16,MEMORY|BITS8,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13816, 188}, + {I_VPINSRB, 4, {XMM_L16,XMM_L16,RM_GPR|BITS8,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13808, 188}, + {I_VPINSRB, 3, {XMM_L16,RM_GPR|BITS8,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13816, 188}, + {I_VPINSRB, 4, {XMM_L16,XMM_L16,REG_GPR|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13808, 188}, + {I_VPINSRB, 3, {XMM_L16,REG_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13816, 188}, + {I_VPINSRB, 4, {XMMREG,XMMREG,REG_GPR|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9703, 245}, + {I_VPINSRB, 3, {XMMREG,REG_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9712, 245}, + {I_VPINSRB, 4, {XMMREG,XMMREG,MEMORY|BITS8,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9703, 245}, + {I_VPINSRB, 3, {XMMREG,MEMORY|BITS8,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9712, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPINSRW[] = { + {I_VPINSRW, 4, {XMM_L16,XMM_L16,MEMORY|BITS16,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13824, 188}, + {I_VPINSRW, 3, {XMM_L16,MEMORY|BITS16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13832, 188}, + {I_VPINSRW, 4, {XMM_L16,XMM_L16,RM_GPR|BITS16,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13824, 188}, + {I_VPINSRW, 3, {XMM_L16,RM_GPR|BITS16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13832, 188}, + {I_VPINSRW, 4, {XMM_L16,XMM_L16,REG_GPR|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13824, 188}, + {I_VPINSRW, 3, {XMM_L16,REG_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13832, 188}, + {I_VPINSRW, 4, {XMMREG,XMMREG,REG_GPR|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9757, 245}, + {I_VPINSRW, 3, {XMMREG,REG_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9766, 245}, + {I_VPINSRW, 4, {XMMREG,XMMREG,MEMORY|BITS16,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9757, 245}, + {I_VPINSRW, 3, {XMMREG,MEMORY|BITS16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9766, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPINSRD[] = { + {I_VPINSRD, 4, {XMM_L16,XMM_L16,MEMORY|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13840, 188}, + {I_VPINSRD, 3, {XMM_L16,MEMORY|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13848, 188}, + {I_VPINSRD, 4, {XMM_L16,XMM_L16,RM_GPR|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13840, 188}, + {I_VPINSRD, 3, {XMM_L16,RM_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13848, 188}, + {I_VPINSRD, 4, {XMMREG,XMMREG,RM_GPR|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9721, 243}, + {I_VPINSRD, 3, {XMMREG,RM_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9730, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPINSRQ[] = { + {I_VPINSRQ, 4, {XMM_L16,XMM_L16,MEMORY|BITS64,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13856, 194}, + {I_VPINSRQ, 3, {XMM_L16,MEMORY|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13864, 194}, + {I_VPINSRQ, 4, {XMM_L16,XMM_L16,RM_GPR|BITS64,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13856, 194}, + {I_VPINSRQ, 3, {XMM_L16,RM_GPR|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13864, 194}, + {I_VPINSRQ, 4, {XMMREG,XMMREG,RM_GPR|BITS64,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9739, 243}, + {I_VPINSRQ, 3, {XMMREG,RM_GPR|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9748, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMADDWD[] = { + {I_VPMADDWD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37127, 188}, + {I_VPMADDWD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37134, 188}, + {I_VPMADDWD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40228, 207}, + {I_VPMADDWD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40235, 207}, + {I_VPMADDWD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23216, 244}, + {I_VPMADDWD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23224, 244}, + {I_VPMADDWD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23232, 244}, + {I_VPMADDWD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23240, 244}, + {I_VPMADDWD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23248, 245}, + {I_VPMADDWD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23256, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMADDUBSW[] = { + {I_VPMADDUBSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37141, 188}, + {I_VPMADDUBSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37148, 188}, + {I_VPMADDUBSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40214, 207}, + {I_VPMADDUBSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40221, 207}, + {I_VPMADDUBSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23168, 244}, + {I_VPMADDUBSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23176, 244}, + {I_VPMADDUBSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23184, 244}, + {I_VPMADDUBSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23192, 244}, + {I_VPMADDUBSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23200, 245}, + {I_VPMADDUBSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23208, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMAXSB[] = { + {I_VPMAXSB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37155, 188}, + {I_VPMAXSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37162, 188}, + {I_VPMAXSB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40242, 207}, + {I_VPMAXSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40249, 207}, + {I_VPMAXSB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23264, 244}, + {I_VPMAXSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23272, 244}, + {I_VPMAXSB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23280, 244}, + {I_VPMAXSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23288, 244}, + {I_VPMAXSB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23296, 245}, + {I_VPMAXSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23304, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMAXSW[] = { + {I_VPMAXSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37169, 188}, + {I_VPMAXSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37176, 188}, + {I_VPMAXSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40256, 207}, + {I_VPMAXSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40263, 207}, + {I_VPMAXSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23408, 244}, + {I_VPMAXSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23416, 244}, + {I_VPMAXSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23424, 244}, + {I_VPMAXSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23432, 244}, + {I_VPMAXSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23440, 245}, + {I_VPMAXSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23448, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMAXSD[] = { + {I_VPMAXSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37183, 188}, + {I_VPMAXSD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37190, 188}, + {I_VPMAXSD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40270, 207}, + {I_VPMAXSD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40277, 207}, + {I_VPMAXSD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23312, 240}, + {I_VPMAXSD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23320, 240}, + {I_VPMAXSD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23328, 240}, + {I_VPMAXSD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23336, 240}, + {I_VPMAXSD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23344, 241}, + {I_VPMAXSD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23352, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMAXUB[] = { + {I_VPMAXUB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37197, 188}, + {I_VPMAXUB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37204, 188}, + {I_VPMAXUB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40284, 207}, + {I_VPMAXUB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40291, 207}, + {I_VPMAXUB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23456, 244}, + {I_VPMAXUB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23464, 244}, + {I_VPMAXUB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23472, 244}, + {I_VPMAXUB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23480, 244}, + {I_VPMAXUB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23488, 245}, + {I_VPMAXUB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23496, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMAXUW[] = { + {I_VPMAXUW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37211, 188}, + {I_VPMAXUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37218, 188}, + {I_VPMAXUW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40298, 207}, + {I_VPMAXUW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40305, 207}, + {I_VPMAXUW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23600, 244}, + {I_VPMAXUW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23608, 244}, + {I_VPMAXUW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23616, 244}, + {I_VPMAXUW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23624, 244}, + {I_VPMAXUW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23632, 245}, + {I_VPMAXUW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23640, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMAXUD[] = { + {I_VPMAXUD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37225, 188}, + {I_VPMAXUD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37232, 188}, + {I_VPMAXUD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40312, 207}, + {I_VPMAXUD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40319, 207}, + {I_VPMAXUD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23504, 240}, + {I_VPMAXUD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23512, 240}, + {I_VPMAXUD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23520, 240}, + {I_VPMAXUD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23528, 240}, + {I_VPMAXUD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23536, 241}, + {I_VPMAXUD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23544, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMINSB[] = { + {I_VPMINSB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37239, 188}, + {I_VPMINSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37246, 188}, + {I_VPMINSB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40326, 207}, + {I_VPMINSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40333, 207}, + {I_VPMINSB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23648, 244}, + {I_VPMINSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23656, 244}, + {I_VPMINSB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23664, 244}, + {I_VPMINSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23672, 244}, + {I_VPMINSB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23680, 245}, + {I_VPMINSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23688, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMINSW[] = { + {I_VPMINSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37253, 188}, + {I_VPMINSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37260, 188}, + {I_VPMINSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40340, 207}, + {I_VPMINSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40347, 207}, + {I_VPMINSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23792, 244}, + {I_VPMINSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23800, 244}, + {I_VPMINSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23808, 244}, + {I_VPMINSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23816, 244}, + {I_VPMINSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23824, 245}, + {I_VPMINSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23832, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMINSD[] = { + {I_VPMINSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37267, 188}, + {I_VPMINSD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37274, 188}, + {I_VPMINSD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40354, 207}, + {I_VPMINSD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40361, 207}, + {I_VPMINSD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23696, 240}, + {I_VPMINSD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23704, 240}, + {I_VPMINSD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23712, 240}, + {I_VPMINSD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23720, 240}, + {I_VPMINSD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23728, 241}, + {I_VPMINSD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23736, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMINUB[] = { + {I_VPMINUB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37281, 188}, + {I_VPMINUB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37288, 188}, + {I_VPMINUB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40368, 207}, + {I_VPMINUB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40375, 207}, + {I_VPMINUB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23840, 244}, + {I_VPMINUB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23848, 244}, + {I_VPMINUB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23856, 244}, + {I_VPMINUB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23864, 244}, + {I_VPMINUB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23872, 245}, + {I_VPMINUB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23880, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMINUW[] = { + {I_VPMINUW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37295, 188}, + {I_VPMINUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37302, 188}, + {I_VPMINUW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40382, 207}, + {I_VPMINUW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40389, 207}, + {I_VPMINUW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23984, 244}, + {I_VPMINUW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23992, 244}, + {I_VPMINUW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24000, 244}, + {I_VPMINUW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24008, 244}, + {I_VPMINUW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24016, 245}, + {I_VPMINUW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24024, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMINUD[] = { + {I_VPMINUD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37309, 188}, + {I_VPMINUD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37316, 188}, + {I_VPMINUD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40396, 207}, + {I_VPMINUD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40403, 207}, + {I_VPMINUD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23888, 240}, + {I_VPMINUD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23896, 240}, + {I_VPMINUD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23904, 240}, + {I_VPMINUD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23912, 240}, + {I_VPMINUD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23920, 241}, + {I_VPMINUD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23928, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVMSKB[] = { + {I_VPMOVMSKB, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+37323, 194}, + {I_VPMOVMSKB, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+37323, 188}, + {I_VPMOVMSKB, 2, {REG_GPR|BITS32,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40410, 207}, + {I_VPMOVMSKB, 2, {REG_GPR|BITS64,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40410, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVSXBW[] = { + {I_VPMOVSXBW, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+37330, 188}, + {I_VPMOVSXBW, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40417, 207}, + {I_VPMOVSXBW, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24776, 244}, + {I_VPMOVSXBW, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24784, 244}, + {I_VPMOVSXBW, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24792, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVSXBD[] = { + {I_VPMOVSXBD, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+37337, 188}, + {I_VPMOVSXBD, 2, {YMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+40424, 207}, + {I_VPMOVSXBD, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40424, 207}, + {I_VPMOVSXBD, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24728, 240}, + {I_VPMOVSXBD, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24736, 240}, + {I_VPMOVSXBD, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24744, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVSXBQ[] = { + {I_VPMOVSXBQ, 2, {XMM_L16,RM_XMM_L16|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+37344, 188}, + {I_VPMOVSXBQ, 2, {YMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+40431, 207}, + {I_VPMOVSXBQ, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40431, 207}, + {I_VPMOVSXBQ, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24752, 240}, + {I_VPMOVSXBQ, 2, {YMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24760, 240}, + {I_VPMOVSXBQ, 2, {ZMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24768, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVSXWD[] = { + {I_VPMOVSXWD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+37351, 188}, + {I_VPMOVSXWD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40438, 207}, + {I_VPMOVSXWD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24824, 240}, + {I_VPMOVSXWD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24832, 240}, + {I_VPMOVSXWD, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24840, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVSXWQ[] = { + {I_VPMOVSXWQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+37358, 188}, + {I_VPMOVSXWQ, 2, {YMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+40445, 207}, + {I_VPMOVSXWQ, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40445, 207}, + {I_VPMOVSXWQ, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24848, 240}, + {I_VPMOVSXWQ, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24856, 240}, + {I_VPMOVSXWQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24864, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVSXDQ[] = { + {I_VPMOVSXDQ, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+37365, 188}, + {I_VPMOVSXDQ, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40452, 207}, + {I_VPMOVSXDQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24800, 240}, + {I_VPMOVSXDQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24808, 240}, + {I_VPMOVSXDQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24816, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVZXBW[] = { + {I_VPMOVZXBW, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+37372, 188}, + {I_VPMOVZXBW, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40459, 207}, + {I_VPMOVZXBW, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25280, 244}, + {I_VPMOVZXBW, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25288, 244}, + {I_VPMOVZXBW, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25296, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVZXBD[] = { + {I_VPMOVZXBD, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+37379, 188}, + {I_VPMOVZXBD, 2, {YMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+40466, 207}, + {I_VPMOVZXBD, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40466, 207}, + {I_VPMOVZXBD, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25232, 240}, + {I_VPMOVZXBD, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25240, 240}, + {I_VPMOVZXBD, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25248, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVZXBQ[] = { + {I_VPMOVZXBQ, 2, {XMM_L16,RM_XMM_L16|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+37386, 188}, + {I_VPMOVZXBQ, 2, {YMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+40473, 207}, + {I_VPMOVZXBQ, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40473, 207}, + {I_VPMOVZXBQ, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25256, 240}, + {I_VPMOVZXBQ, 2, {YMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25264, 240}, + {I_VPMOVZXBQ, 2, {ZMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25272, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVZXWD[] = { + {I_VPMOVZXWD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+37393, 188}, + {I_VPMOVZXWD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40480, 207}, + {I_VPMOVZXWD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25328, 240}, + {I_VPMOVZXWD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25336, 240}, + {I_VPMOVZXWD, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25344, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVZXWQ[] = { + {I_VPMOVZXWQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+37400, 188}, + {I_VPMOVZXWQ, 2, {YMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+40487, 207}, + {I_VPMOVZXWQ, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40487, 207}, + {I_VPMOVZXWQ, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25352, 240}, + {I_VPMOVZXWQ, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25360, 240}, + {I_VPMOVZXWQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25368, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVZXDQ[] = { + {I_VPMOVZXDQ, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+37407, 188}, + {I_VPMOVZXDQ, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40494, 207}, + {I_VPMOVZXDQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25304, 240}, + {I_VPMOVZXDQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25312, 240}, + {I_VPMOVZXDQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25320, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMULHUW[] = { + {I_VPMULHUW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37414, 188}, + {I_VPMULHUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37421, 188}, + {I_VPMULHUW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40529, 207}, + {I_VPMULHUW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40536, 207}, + {I_VPMULHUW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25472, 244}, + {I_VPMULHUW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25480, 244}, + {I_VPMULHUW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25488, 244}, + {I_VPMULHUW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25496, 244}, + {I_VPMULHUW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25504, 245}, + {I_VPMULHUW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25512, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMULHRSW[] = { + {I_VPMULHRSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37428, 188}, + {I_VPMULHRSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37435, 188}, + {I_VPMULHRSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40515, 207}, + {I_VPMULHRSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40522, 207}, + {I_VPMULHRSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25424, 244}, + {I_VPMULHRSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25432, 244}, + {I_VPMULHRSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25440, 244}, + {I_VPMULHRSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25448, 244}, + {I_VPMULHRSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25456, 245}, + {I_VPMULHRSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25464, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMULHW[] = { + {I_VPMULHW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37442, 188}, + {I_VPMULHW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37449, 188}, + {I_VPMULHW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40543, 207}, + {I_VPMULHW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40550, 207}, + {I_VPMULHW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25520, 244}, + {I_VPMULHW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25528, 244}, + {I_VPMULHW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25536, 244}, + {I_VPMULHW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25544, 244}, + {I_VPMULHW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25552, 245}, + {I_VPMULHW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25560, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMULLW[] = { + {I_VPMULLW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37456, 188}, + {I_VPMULLW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37463, 188}, + {I_VPMULLW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40557, 207}, + {I_VPMULLW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40564, 207}, + {I_VPMULLW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25664, 244}, + {I_VPMULLW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25672, 244}, + {I_VPMULLW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25680, 244}, + {I_VPMULLW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25688, 244}, + {I_VPMULLW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25696, 245}, + {I_VPMULLW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25704, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMULLD[] = { + {I_VPMULLD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37470, 188}, + {I_VPMULLD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37477, 188}, + {I_VPMULLD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40571, 207}, + {I_VPMULLD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40578, 207}, + {I_VPMULLD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25568, 240}, + {I_VPMULLD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25576, 240}, + {I_VPMULLD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25584, 240}, + {I_VPMULLD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25592, 240}, + {I_VPMULLD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25600, 241}, + {I_VPMULLD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25608, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMULUDQ[] = { + {I_VPMULUDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37484, 188}, + {I_VPMULUDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37491, 188}, + {I_VPMULUDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40585, 207}, + {I_VPMULUDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40592, 207}, + {I_VPMULUDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25760, 240}, + {I_VPMULUDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25768, 240}, + {I_VPMULUDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25776, 240}, + {I_VPMULUDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25784, 240}, + {I_VPMULUDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25792, 241}, + {I_VPMULUDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25800, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMULDQ[] = { + {I_VPMULDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37498, 188}, + {I_VPMULDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37505, 188}, + {I_VPMULDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40501, 207}, + {I_VPMULDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40508, 207}, + {I_VPMULDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25376, 240}, + {I_VPMULDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25384, 240}, + {I_VPMULDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25392, 240}, + {I_VPMULDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25400, 240}, + {I_VPMULDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25408, 241}, + {I_VPMULDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25416, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPOR[] = { + {I_VPOR, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37512, 188}, + {I_VPOR, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37519, 188}, + {I_VPOR, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40599, 207}, + {I_VPOR, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40606, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSADBW[] = { + {I_VPSADBW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37526, 188}, + {I_VPSADBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37533, 188}, + {I_VPSADBW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40613, 207}, + {I_VPSADBW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40620, 207}, + {I_VPSADBW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+26096, 244}, + {I_VPSADBW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+26104, 244}, + {I_VPSADBW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+26112, 244}, + {I_VPSADBW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+26120, 244}, + {I_VPSADBW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+26128, 245}, + {I_VPSADBW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+26136, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHUFB[] = { + {I_VPSHUFB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37540, 188}, + {I_VPSHUFB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37547, 188}, + {I_VPSHUFB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40627, 207}, + {I_VPSHUFB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40634, 207}, + {I_VPSHUFB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26144, 244}, + {I_VPSHUFB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26152, 244}, + {I_VPSHUFB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26160, 244}, + {I_VPSHUFB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26168, 244}, + {I_VPSHUFB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26176, 245}, + {I_VPSHUFB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26184, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHUFD[] = { + {I_VPSHUFD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13872, 188}, + {I_VPSHUFD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15872, 207}, + {I_VPSHUFD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10099, 240}, + {I_VPSHUFD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10108, 240}, + {I_VPSHUFD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10117, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHUFHW[] = { + {I_VPSHUFHW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13880, 188}, + {I_VPSHUFHW, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15880, 207}, + {I_VPSHUFHW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10126, 244}, + {I_VPSHUFHW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10135, 244}, + {I_VPSHUFHW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10144, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHUFLW[] = { + {I_VPSHUFLW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13888, 188}, + {I_VPSHUFLW, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15888, 207}, + {I_VPSHUFLW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10153, 244}, + {I_VPSHUFLW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10162, 244}, + {I_VPSHUFLW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10171, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSIGNB[] = { + {I_VPSIGNB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37554, 188}, + {I_VPSIGNB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37561, 188}, + {I_VPSIGNB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40641, 207}, + {I_VPSIGNB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40648, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSIGNW[] = { + {I_VPSIGNW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37568, 188}, + {I_VPSIGNW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37575, 188}, + {I_VPSIGNW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40655, 207}, + {I_VPSIGNW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40662, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSIGND[] = { + {I_VPSIGND, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37582, 188}, + {I_VPSIGND, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37589, 188}, + {I_VPSIGND, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40669, 207}, + {I_VPSIGND, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40676, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSLLDQ[] = { + {I_VPSLLDQ, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13896, 188}, + {I_VPSLLDQ, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+13904, 188}, + {I_VPSLLDQ, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15896, 207}, + {I_VPSLLDQ, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15904, 207}, + {I_VPSLLDQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+10234, 244}, + {I_VPSLLDQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+10243, 244}, + {I_VPSLLDQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+10252, 244}, + {I_VPSLLDQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+10261, 244}, + {I_VPSLLDQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+10270, 245}, + {I_VPSLLDQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+10279, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRLDQ[] = { + {I_VPSRLDQ, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13912, 188}, + {I_VPSRLDQ, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+13920, 188}, + {I_VPSRLDQ, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15992, 207}, + {I_VPSRLDQ, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+16000, 207}, + {I_VPSRLDQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+10612, 244}, + {I_VPSRLDQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+10621, 244}, + {I_VPSRLDQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+10630, 244}, + {I_VPSRLDQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+10639, 244}, + {I_VPSRLDQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+10648, 245}, + {I_VPSRLDQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+10657, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSLLW[] = { + {I_VPSLLW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37596, 188}, + {I_VPSLLW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37603, 188}, + {I_VPSLLW, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13928, 188}, + {I_VPSLLW, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+13936, 188}, + {I_VPSLLW, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40683, 207}, + {I_VPSLLW, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40690, 207}, + {I_VPSLLW, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15912, 207}, + {I_VPSLLW, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15920, 207}, + {I_VPSLLW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26432, 244}, + {I_VPSLLW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26440, 244}, + {I_VPSLLW, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26448, 244}, + {I_VPSLLW, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26456, 244}, + {I_VPSLLW, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26464, 245}, + {I_VPSLLW, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26472, 245}, + {I_VPSLLW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10342, 244}, + {I_VPSLLW, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10351, 244}, + {I_VPSLLW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10360, 244}, + {I_VPSLLW, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10369, 244}, + {I_VPSLLW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10378, 245}, + {I_VPSLLW, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10387, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSLLD[] = { + {I_VPSLLD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37610, 188}, + {I_VPSLLD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37617, 188}, + {I_VPSLLD, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13944, 188}, + {I_VPSLLD, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+13952, 188}, + {I_VPSLLD, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40697, 207}, + {I_VPSLLD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40704, 207}, + {I_VPSLLD, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15928, 207}, + {I_VPSLLD, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15936, 207}, + {I_VPSLLD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26192, 240}, + {I_VPSLLD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26200, 240}, + {I_VPSLLD, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26208, 240}, + {I_VPSLLD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26216, 240}, + {I_VPSLLD, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26224, 241}, + {I_VPSLLD, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26232, 241}, + {I_VPSLLD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10180, 240}, + {I_VPSLLD, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10189, 240}, + {I_VPSLLD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10198, 240}, + {I_VPSLLD, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10207, 240}, + {I_VPSLLD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10216, 241}, + {I_VPSLLD, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10225, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSLLQ[] = { + {I_VPSLLQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37624, 188}, + {I_VPSLLQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37631, 188}, + {I_VPSLLQ, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13960, 188}, + {I_VPSLLQ, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+13968, 188}, + {I_VPSLLQ, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40711, 207}, + {I_VPSLLQ, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40718, 207}, + {I_VPSLLQ, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15944, 207}, + {I_VPSLLQ, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15952, 207}, + {I_VPSLLQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26240, 240}, + {I_VPSLLQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26248, 240}, + {I_VPSLLQ, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26256, 240}, + {I_VPSLLQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26264, 240}, + {I_VPSLLQ, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26272, 241}, + {I_VPSLLQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26280, 241}, + {I_VPSLLQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10288, 240}, + {I_VPSLLQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10297, 240}, + {I_VPSLLQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10306, 240}, + {I_VPSLLQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10315, 240}, + {I_VPSLLQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10324, 241}, + {I_VPSLLQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10333, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRAW[] = { + {I_VPSRAW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37638, 188}, + {I_VPSRAW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37645, 188}, + {I_VPSRAW, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13976, 188}, + {I_VPSRAW, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+13984, 188}, + {I_VPSRAW, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40725, 207}, + {I_VPSRAW, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40732, 207}, + {I_VPSRAW, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15960, 207}, + {I_VPSRAW, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15968, 207}, + {I_VPSRAW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26720, 244}, + {I_VPSRAW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26728, 244}, + {I_VPSRAW, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26736, 244}, + {I_VPSRAW, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26744, 244}, + {I_VPSRAW, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26752, 245}, + {I_VPSRAW, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26760, 245}, + {I_VPSRAW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10504, 244}, + {I_VPSRAW, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10513, 244}, + {I_VPSRAW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10522, 244}, + {I_VPSRAW, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10531, 244}, + {I_VPSRAW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10540, 245}, + {I_VPSRAW, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10549, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRAD[] = { + {I_VPSRAD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37652, 188}, + {I_VPSRAD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37659, 188}, + {I_VPSRAD, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13992, 188}, + {I_VPSRAD, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+14000, 188}, + {I_VPSRAD, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40739, 207}, + {I_VPSRAD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40746, 207}, + {I_VPSRAD, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15976, 207}, + {I_VPSRAD, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15984, 207}, + {I_VPSRAD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26480, 240}, + {I_VPSRAD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26488, 240}, + {I_VPSRAD, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26496, 240}, + {I_VPSRAD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26504, 240}, + {I_VPSRAD, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26512, 241}, + {I_VPSRAD, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26520, 241}, + {I_VPSRAD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10396, 240}, + {I_VPSRAD, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10405, 240}, + {I_VPSRAD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10414, 240}, + {I_VPSRAD, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10423, 240}, + {I_VPSRAD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10432, 241}, + {I_VPSRAD, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10441, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRLW[] = { + {I_VPSRLW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37666, 188}, + {I_VPSRLW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37673, 188}, + {I_VPSRLW, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14008, 188}, + {I_VPSRLW, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+14016, 188}, + {I_VPSRLW, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40753, 207}, + {I_VPSRLW, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40760, 207}, + {I_VPSRLW, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16008, 207}, + {I_VPSRLW, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+16016, 207}, + {I_VPSRLW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27008, 244}, + {I_VPSRLW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27016, 244}, + {I_VPSRLW, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27024, 244}, + {I_VPSRLW, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27032, 244}, + {I_VPSRLW, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27040, 245}, + {I_VPSRLW, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27048, 245}, + {I_VPSRLW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10720, 244}, + {I_VPSRLW, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10729, 244}, + {I_VPSRLW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10738, 244}, + {I_VPSRLW, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10747, 244}, + {I_VPSRLW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10756, 245}, + {I_VPSRLW, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10765, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRLD[] = { + {I_VPSRLD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37680, 188}, + {I_VPSRLD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37687, 188}, + {I_VPSRLD, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14024, 188}, + {I_VPSRLD, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+14032, 188}, + {I_VPSRLD, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40767, 207}, + {I_VPSRLD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40774, 207}, + {I_VPSRLD, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16024, 207}, + {I_VPSRLD, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+16032, 207}, + {I_VPSRLD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26768, 240}, + {I_VPSRLD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26776, 240}, + {I_VPSRLD, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26784, 240}, + {I_VPSRLD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26792, 240}, + {I_VPSRLD, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26800, 241}, + {I_VPSRLD, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26808, 241}, + {I_VPSRLD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10558, 240}, + {I_VPSRLD, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10567, 240}, + {I_VPSRLD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10576, 240}, + {I_VPSRLD, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10585, 240}, + {I_VPSRLD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10594, 241}, + {I_VPSRLD, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10603, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRLQ[] = { + {I_VPSRLQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37694, 188}, + {I_VPSRLQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37701, 188}, + {I_VPSRLQ, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14040, 188}, + {I_VPSRLQ, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+14048, 188}, + {I_VPSRLQ, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40781, 207}, + {I_VPSRLQ, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40788, 207}, + {I_VPSRLQ, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16040, 207}, + {I_VPSRLQ, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+16048, 207}, + {I_VPSRLQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26816, 240}, + {I_VPSRLQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26824, 240}, + {I_VPSRLQ, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26832, 240}, + {I_VPSRLQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26840, 240}, + {I_VPSRLQ, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26848, 241}, + {I_VPSRLQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26856, 241}, + {I_VPSRLQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10666, 240}, + {I_VPSRLQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10675, 240}, + {I_VPSRLQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10684, 240}, + {I_VPSRLQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10693, 240}, + {I_VPSRLQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10702, 241}, + {I_VPSRLQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10711, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPTEST[] = { + {I_VPTEST, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37708, 188}, + {I_VPTEST, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+37715, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSUBB[] = { + {I_VPSUBB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37722, 188}, + {I_VPSUBB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37729, 188}, + {I_VPSUBB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40795, 207}, + {I_VPSUBB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40802, 207}, + {I_VPSUBB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27056, 244}, + {I_VPSUBB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27064, 244}, + {I_VPSUBB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27072, 244}, + {I_VPSUBB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27080, 244}, + {I_VPSUBB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27088, 245}, + {I_VPSUBB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27096, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSUBW[] = { + {I_VPSUBW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37736, 188}, + {I_VPSUBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37743, 188}, + {I_VPSUBW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40809, 207}, + {I_VPSUBW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40816, 207}, + {I_VPSUBW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27392, 244}, + {I_VPSUBW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27400, 244}, + {I_VPSUBW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27408, 244}, + {I_VPSUBW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27416, 244}, + {I_VPSUBW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27424, 245}, + {I_VPSUBW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27432, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSUBD[] = { + {I_VPSUBD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37750, 188}, + {I_VPSUBD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37757, 188}, + {I_VPSUBD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40823, 207}, + {I_VPSUBD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40830, 207}, + {I_VPSUBD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27104, 240}, + {I_VPSUBD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27112, 240}, + {I_VPSUBD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27120, 240}, + {I_VPSUBD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27128, 240}, + {I_VPSUBD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27136, 241}, + {I_VPSUBD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27144, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSUBQ[] = { + {I_VPSUBQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37764, 188}, + {I_VPSUBQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37771, 188}, + {I_VPSUBQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40837, 207}, + {I_VPSUBQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40844, 207}, + {I_VPSUBQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27152, 240}, + {I_VPSUBQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27160, 240}, + {I_VPSUBQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27168, 240}, + {I_VPSUBQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27176, 240}, + {I_VPSUBQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27184, 241}, + {I_VPSUBQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27192, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSUBSB[] = { + {I_VPSUBSB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37778, 188}, + {I_VPSUBSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37785, 188}, + {I_VPSUBSB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40851, 207}, + {I_VPSUBSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40858, 207}, + {I_VPSUBSB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27200, 244}, + {I_VPSUBSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27208, 244}, + {I_VPSUBSB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27216, 244}, + {I_VPSUBSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27224, 244}, + {I_VPSUBSB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27232, 245}, + {I_VPSUBSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27240, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSUBSW[] = { + {I_VPSUBSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37792, 188}, + {I_VPSUBSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37799, 188}, + {I_VPSUBSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40865, 207}, + {I_VPSUBSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40872, 207}, + {I_VPSUBSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27248, 244}, + {I_VPSUBSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27256, 244}, + {I_VPSUBSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27264, 244}, + {I_VPSUBSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27272, 244}, + {I_VPSUBSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27280, 245}, + {I_VPSUBSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27288, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSUBUSB[] = { + {I_VPSUBUSB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37806, 188}, + {I_VPSUBUSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37813, 188}, + {I_VPSUBUSB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40879, 207}, + {I_VPSUBUSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40886, 207}, + {I_VPSUBUSB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27296, 244}, + {I_VPSUBUSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27304, 244}, + {I_VPSUBUSB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27312, 244}, + {I_VPSUBUSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27320, 244}, + {I_VPSUBUSB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27328, 245}, + {I_VPSUBUSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27336, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSUBUSW[] = { + {I_VPSUBUSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37820, 188}, + {I_VPSUBUSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37827, 188}, + {I_VPSUBUSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40893, 207}, + {I_VPSUBUSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40900, 207}, + {I_VPSUBUSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27344, 244}, + {I_VPSUBUSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27352, 244}, + {I_VPSUBUSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27360, 244}, + {I_VPSUBUSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27368, 244}, + {I_VPSUBUSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27376, 245}, + {I_VPSUBUSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27384, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPUNPCKHBW[] = { + {I_VPUNPCKHBW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37834, 188}, + {I_VPUNPCKHBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37841, 188}, + {I_VPUNPCKHBW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40907, 207}, + {I_VPUNPCKHBW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40914, 207}, + {I_VPUNPCKHBW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27632, 244}, + {I_VPUNPCKHBW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27640, 244}, + {I_VPUNPCKHBW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27648, 244}, + {I_VPUNPCKHBW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27656, 244}, + {I_VPUNPCKHBW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27664, 245}, + {I_VPUNPCKHBW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27672, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPUNPCKHWD[] = { + {I_VPUNPCKHWD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37848, 188}, + {I_VPUNPCKHWD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37855, 188}, + {I_VPUNPCKHWD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40921, 207}, + {I_VPUNPCKHWD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40928, 207}, + {I_VPUNPCKHWD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27776, 244}, + {I_VPUNPCKHWD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27784, 244}, + {I_VPUNPCKHWD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27792, 244}, + {I_VPUNPCKHWD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27800, 244}, + {I_VPUNPCKHWD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27808, 245}, + {I_VPUNPCKHWD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27816, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPUNPCKHDQ[] = { + {I_VPUNPCKHDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37862, 188}, + {I_VPUNPCKHDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37869, 188}, + {I_VPUNPCKHDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40935, 207}, + {I_VPUNPCKHDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40942, 207}, + {I_VPUNPCKHDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27680, 240}, + {I_VPUNPCKHDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27688, 240}, + {I_VPUNPCKHDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27696, 240}, + {I_VPUNPCKHDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27704, 240}, + {I_VPUNPCKHDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27712, 241}, + {I_VPUNPCKHDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27720, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPUNPCKHQDQ[] = { + {I_VPUNPCKHQDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37876, 188}, + {I_VPUNPCKHQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37883, 188}, + {I_VPUNPCKHQDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40949, 207}, + {I_VPUNPCKHQDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40956, 207}, + {I_VPUNPCKHQDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27728, 240}, + {I_VPUNPCKHQDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27736, 240}, + {I_VPUNPCKHQDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27744, 240}, + {I_VPUNPCKHQDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27752, 240}, + {I_VPUNPCKHQDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27760, 241}, + {I_VPUNPCKHQDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27768, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPUNPCKLBW[] = { + {I_VPUNPCKLBW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37890, 188}, + {I_VPUNPCKLBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37897, 188}, + {I_VPUNPCKLBW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40963, 207}, + {I_VPUNPCKLBW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40970, 207}, + {I_VPUNPCKLBW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27824, 244}, + {I_VPUNPCKLBW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27832, 244}, + {I_VPUNPCKLBW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27840, 244}, + {I_VPUNPCKLBW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27848, 244}, + {I_VPUNPCKLBW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27856, 245}, + {I_VPUNPCKLBW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27864, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPUNPCKLWD[] = { + {I_VPUNPCKLWD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37904, 188}, + {I_VPUNPCKLWD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37911, 188}, + {I_VPUNPCKLWD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40977, 207}, + {I_VPUNPCKLWD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40984, 207}, + {I_VPUNPCKLWD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27968, 244}, + {I_VPUNPCKLWD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27976, 244}, + {I_VPUNPCKLWD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27984, 244}, + {I_VPUNPCKLWD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27992, 244}, + {I_VPUNPCKLWD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28000, 245}, + {I_VPUNPCKLWD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28008, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPUNPCKLDQ[] = { + {I_VPUNPCKLDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37918, 188}, + {I_VPUNPCKLDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37925, 188}, + {I_VPUNPCKLDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40991, 207}, + {I_VPUNPCKLDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40998, 207}, + {I_VPUNPCKLDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27872, 240}, + {I_VPUNPCKLDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27880, 240}, + {I_VPUNPCKLDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27888, 240}, + {I_VPUNPCKLDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27896, 240}, + {I_VPUNPCKLDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27904, 241}, + {I_VPUNPCKLDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27912, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPUNPCKLQDQ[] = { + {I_VPUNPCKLQDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37932, 188}, + {I_VPUNPCKLQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37939, 188}, + {I_VPUNPCKLQDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41005, 207}, + {I_VPUNPCKLQDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41012, 207}, + {I_VPUNPCKLQDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27920, 240}, + {I_VPUNPCKLQDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27928, 240}, + {I_VPUNPCKLQDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27936, 240}, + {I_VPUNPCKLQDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27944, 240}, + {I_VPUNPCKLQDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27952, 241}, + {I_VPUNPCKLQDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27960, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPXOR[] = { + {I_VPXOR, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37946, 188}, + {I_VPXOR, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37953, 188}, + {I_VPXOR, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41019, 207}, + {I_VPXOR, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41026, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRCPPS[] = { + {I_VRCPPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37960, 188}, + {I_VRCPPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+37967, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRCPSS[] = { + {I_VRCPSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+37974, 188}, + {I_VRCPSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+37981, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRSQRTPS[] = { + {I_VRSQRTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37988, 188}, + {I_VRSQRTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+37995, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRSQRTSS[] = { + {I_VRSQRTSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38002, 188}, + {I_VRSQRTSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+38009, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VROUNDPD[] = { + {I_VROUNDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14056, 188}, + {I_VROUNDPD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14064, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VROUNDPS[] = { + {I_VROUNDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14072, 188}, + {I_VROUNDPS, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14080, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VROUNDSD[] = { + {I_VROUNDSD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14088, 188}, + {I_VROUNDSD, 3, {XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14096, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VROUNDSS[] = { + {I_VROUNDSS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14104, 188}, + {I_VROUNDSS, 3, {XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14112, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSHUFPD[] = { + {I_VSHUFPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14120, 188}, + {I_VSHUFPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14128, 188}, + {I_VSHUFPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14136, 188}, + {I_VSHUFPD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14144, 188}, + {I_VSHUFPD, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11476, 240}, + {I_VSHUFPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11485, 240}, + {I_VSHUFPD, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11494, 240}, + {I_VSHUFPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11503, 240}, + {I_VSHUFPD, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11512, 241}, + {I_VSHUFPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11521, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSHUFPS[] = { + {I_VSHUFPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14152, 188}, + {I_VSHUFPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14160, 188}, + {I_VSHUFPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14168, 188}, + {I_VSHUFPS, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14176, 188}, + {I_VSHUFPS, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11530, 240}, + {I_VSHUFPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11539, 240}, + {I_VSHUFPS, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11548, 240}, + {I_VSHUFPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11557, 240}, + {I_VSHUFPS, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11566, 241}, + {I_VSHUFPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11575, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSQRTPD[] = { + {I_VSQRTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38016, 188}, + {I_VSQRTPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38023, 188}, + {I_VSQRTPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28496, 240}, + {I_VSQRTPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28504, 240}, + {I_VSQRTPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+28512, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSQRTPS[] = { + {I_VSQRTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38030, 188}, + {I_VSQRTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38037, 188}, + {I_VSQRTPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28520, 240}, + {I_VSQRTPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28528, 240}, + {I_VSQRTPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+28536, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSQRTSD[] = { + {I_VSQRTSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38044, 188}, + {I_VSQRTSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+38051, 188}, + {I_VSQRTSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+28544, 241}, + {I_VSQRTSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+28552, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSQRTSS[] = { + {I_VSQRTSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38058, 188}, + {I_VSQRTSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+38065, 188}, + {I_VSQRTSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+28560, 241}, + {I_VSQRTSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+28568, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSTMXCSR[] = { + {I_VSTMXCSR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+38072, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSUBPD[] = { + {I_VSUBPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38079, 188}, + {I_VSUBPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38086, 188}, + {I_VSUBPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38093, 188}, + {I_VSUBPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38100, 188}, + {I_VSUBPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28576, 240}, + {I_VSUBPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28584, 240}, + {I_VSUBPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28592, 240}, + {I_VSUBPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28600, 240}, + {I_VSUBPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+28608, 241}, + {I_VSUBPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+28616, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSUBPS[] = { + {I_VSUBPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38107, 188}, + {I_VSUBPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38114, 188}, + {I_VSUBPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38121, 188}, + {I_VSUBPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38128, 188}, + {I_VSUBPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28624, 240}, + {I_VSUBPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28632, 240}, + {I_VSUBPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28640, 240}, + {I_VSUBPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28648, 240}, + {I_VSUBPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+28656, 241}, + {I_VSUBPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+28664, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSUBSD[] = { + {I_VSUBSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38135, 188}, + {I_VSUBSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+38142, 188}, + {I_VSUBSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+28672, 241}, + {I_VSUBSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+28680, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSUBSS[] = { + {I_VSUBSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38149, 188}, + {I_VSUBSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+38156, 188}, + {I_VSUBSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+28688, 241}, + {I_VSUBSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+28696, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VTESTPS[] = { + {I_VTESTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38163, 188}, + {I_VTESTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38170, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VTESTPD[] = { + {I_VTESTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38177, 188}, + {I_VTESTPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38184, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VUCOMISD[] = { + {I_VUCOMISD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+38191, 188}, + {I_VUCOMISD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+28704, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VUCOMISS[] = { + {I_VUCOMISS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+38198, 188}, + {I_VUCOMISS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+28712, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VUNPCKHPD[] = { + {I_VUNPCKHPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38205, 188}, + {I_VUNPCKHPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38212, 188}, + {I_VUNPCKHPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38219, 188}, + {I_VUNPCKHPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38226, 188}, + {I_VUNPCKHPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28720, 240}, + {I_VUNPCKHPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28728, 240}, + {I_VUNPCKHPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28736, 240}, + {I_VUNPCKHPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28744, 240}, + {I_VUNPCKHPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28752, 241}, + {I_VUNPCKHPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28760, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VUNPCKHPS[] = { + {I_VUNPCKHPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38233, 188}, + {I_VUNPCKHPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38240, 188}, + {I_VUNPCKHPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38247, 188}, + {I_VUNPCKHPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38254, 188}, + {I_VUNPCKHPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28768, 240}, + {I_VUNPCKHPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28776, 240}, + {I_VUNPCKHPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28784, 240}, + {I_VUNPCKHPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28792, 240}, + {I_VUNPCKHPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28800, 241}, + {I_VUNPCKHPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28808, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VUNPCKLPD[] = { + {I_VUNPCKLPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38261, 188}, + {I_VUNPCKLPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38268, 188}, + {I_VUNPCKLPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38275, 188}, + {I_VUNPCKLPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38282, 188}, + {I_VUNPCKLPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28816, 240}, + {I_VUNPCKLPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28824, 240}, + {I_VUNPCKLPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28832, 240}, + {I_VUNPCKLPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28840, 240}, + {I_VUNPCKLPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28848, 241}, + {I_VUNPCKLPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28856, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VUNPCKLPS[] = { + {I_VUNPCKLPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38289, 188}, + {I_VUNPCKLPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38296, 188}, + {I_VUNPCKLPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38303, 188}, + {I_VUNPCKLPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38310, 188}, + {I_VUNPCKLPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28864, 240}, + {I_VUNPCKLPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28872, 240}, + {I_VUNPCKLPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28880, 240}, + {I_VUNPCKLPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28888, 240}, + {I_VUNPCKLPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28896, 241}, + {I_VUNPCKLPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28904, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VXORPD[] = { + {I_VXORPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38317, 188}, + {I_VXORPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38324, 188}, + {I_VXORPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38331, 188}, + {I_VXORPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38338, 188}, + {I_VXORPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28912, 242}, + {I_VXORPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28920, 242}, + {I_VXORPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28928, 242}, + {I_VXORPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28936, 242}, + {I_VXORPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28944, 243}, + {I_VXORPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28952, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VXORPS[] = { + {I_VXORPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38345, 188}, + {I_VXORPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38352, 188}, + {I_VXORPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38359, 188}, + {I_VXORPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38366, 188}, + {I_VXORPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28960, 242}, + {I_VXORPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28968, 242}, + {I_VXORPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28976, 242}, + {I_VXORPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28984, 242}, + {I_VXORPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28992, 243}, + {I_VXORPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29000, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VZEROALL[] = { + {I_VZEROALL, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45759, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VZEROUPPER[] = { + {I_VZEROUPPER, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45765, 188}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCLMULLQLQDQ[] = { + {I_PCLMULLQLQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7768, 187}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCLMULHQLQDQ[] = { + {I_PCLMULHQLQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7777, 187}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCLMULLQHQDQ[] = { + {I_PCLMULLQHQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7786, 187}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCLMULHQHQDQ[] = { + {I_PCLMULHQHQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7795, 187}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCLMULQDQ[] = { + {I_PCLMULQDQ, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14184, 187}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCLMULLQLQDQ[] = { + {I_VPCLMULLQLQDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+7804, 188}, + {I_VPCLMULLQLQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7813, 188}, + {I_VPCLMULLQLQDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+7876, 198}, + {I_VPCLMULLQLQDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+7885, 198}, + {I_VPCLMULLQLQDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+0, 199}, + {I_VPCLMULLQLQDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+10, 199}, + {I_VPCLMULLQLQDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+80, 199}, + {I_VPCLMULLQLQDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+90, 199}, + {I_VPCLMULLQLQDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+160, 200}, + {I_VPCLMULLQLQDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+170, 200}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCLMULHQLQDQ[] = { + {I_VPCLMULHQLQDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+7822, 188}, + {I_VPCLMULHQLQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7831, 188}, + {I_VPCLMULHQLQDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+7894, 198}, + {I_VPCLMULHQLQDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+7903, 198}, + {I_VPCLMULHQLQDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+20, 199}, + {I_VPCLMULHQLQDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+30, 199}, + {I_VPCLMULHQLQDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+100, 199}, + {I_VPCLMULHQLQDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+110, 199}, + {I_VPCLMULHQLQDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+180, 200}, + {I_VPCLMULHQLQDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+190, 200}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCLMULLQHQDQ[] = { + {I_VPCLMULLQHQDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+7840, 188}, + {I_VPCLMULLQHQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7849, 188}, + {I_VPCLMULLQHQDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+7912, 198}, + {I_VPCLMULLQHQDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+7921, 198}, + {I_VPCLMULLQHQDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40, 199}, + {I_VPCLMULLQHQDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+50, 199}, + {I_VPCLMULLQHQDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+120, 199}, + {I_VPCLMULLQHQDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+130, 199}, + {I_VPCLMULLQHQDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+200, 200}, + {I_VPCLMULLQHQDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+210, 200}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCLMULHQHQDQ[] = { + {I_VPCLMULHQHQDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+7858, 188}, + {I_VPCLMULHQHQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7867, 188}, + {I_VPCLMULHQHQDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+7930, 198}, + {I_VPCLMULHQHQDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+7939, 198}, + {I_VPCLMULHQHQDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+60, 199}, + {I_VPCLMULHQHQDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+70, 199}, + {I_VPCLMULHQHQDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+140, 199}, + {I_VPCLMULHQHQDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+150, 199}, + {I_VPCLMULHQHQDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+220, 200}, + {I_VPCLMULHQHQDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+230, 200}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCLMULQDQ[] = { + {I_VPCLMULQDQ, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14192, 188}, + {I_VPCLMULQDQ, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14200, 188}, + {I_VPCLMULQDQ, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14208, 198}, + {I_VPCLMULQDQ, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14216, 198}, + {I_VPCLMULQDQ, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+7948, 199}, + {I_VPCLMULQDQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+7957, 199}, + {I_VPCLMULQDQ, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+7966, 199}, + {I_VPCLMULQDQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+7975, 199}, + {I_VPCLMULQDQ, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+7984, 200}, + {I_VPCLMULQDQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+7993, 200}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD132PS[] = { + {I_VFMADD132PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38373, 201}, + {I_VFMADD132PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38380, 201}, + {I_VFMADD132PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18144, 240}, + {I_VFMADD132PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18152, 240}, + {I_VFMADD132PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18160, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD132PD[] = { + {I_VFMADD132PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38387, 201}, + {I_VFMADD132PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38394, 201}, + {I_VFMADD132PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18120, 240}, + {I_VFMADD132PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18128, 240}, + {I_VFMADD132PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18136, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD312PS[] = { + {I_VFMADD312PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38373, 201}, + {I_VFMADD312PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38380, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD312PD[] = { + {I_VFMADD312PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38387, 201}, + {I_VFMADD312PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38394, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD213PS[] = { + {I_VFMADD213PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38401, 201}, + {I_VFMADD213PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38408, 201}, + {I_VFMADD213PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18208, 240}, + {I_VFMADD213PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18216, 240}, + {I_VFMADD213PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18224, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD213PD[] = { + {I_VFMADD213PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38415, 201}, + {I_VFMADD213PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38422, 201}, + {I_VFMADD213PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18184, 240}, + {I_VFMADD213PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18192, 240}, + {I_VFMADD213PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18200, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD123PS[] = { + {I_VFMADD123PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38401, 201}, + {I_VFMADD123PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38408, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD123PD[] = { + {I_VFMADD123PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38415, 201}, + {I_VFMADD123PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38422, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD231PS[] = { + {I_VFMADD231PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38429, 201}, + {I_VFMADD231PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38436, 201}, + {I_VFMADD231PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18272, 240}, + {I_VFMADD231PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18280, 240}, + {I_VFMADD231PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18288, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD231PD[] = { + {I_VFMADD231PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38443, 201}, + {I_VFMADD231PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38450, 201}, + {I_VFMADD231PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18248, 240}, + {I_VFMADD231PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18256, 240}, + {I_VFMADD231PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18264, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD321PS[] = { + {I_VFMADD321PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38429, 201}, + {I_VFMADD321PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38436, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD321PD[] = { + {I_VFMADD321PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38443, 201}, + {I_VFMADD321PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38450, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB132PS[] = { + {I_VFMADDSUB132PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38457, 201}, + {I_VFMADDSUB132PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38464, 201}, + {I_VFMADDSUB132PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18336, 240}, + {I_VFMADDSUB132PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18344, 240}, + {I_VFMADDSUB132PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18352, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB132PD[] = { + {I_VFMADDSUB132PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38471, 201}, + {I_VFMADDSUB132PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38478, 201}, + {I_VFMADDSUB132PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18312, 240}, + {I_VFMADDSUB132PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18320, 240}, + {I_VFMADDSUB132PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18328, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB312PS[] = { + {I_VFMADDSUB312PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38457, 201}, + {I_VFMADDSUB312PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38464, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB312PD[] = { + {I_VFMADDSUB312PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38471, 201}, + {I_VFMADDSUB312PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38478, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB213PS[] = { + {I_VFMADDSUB213PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38485, 201}, + {I_VFMADDSUB213PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38492, 201}, + {I_VFMADDSUB213PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18384, 240}, + {I_VFMADDSUB213PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18392, 240}, + {I_VFMADDSUB213PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18400, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB213PD[] = { + {I_VFMADDSUB213PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38499, 201}, + {I_VFMADDSUB213PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38506, 201}, + {I_VFMADDSUB213PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18360, 240}, + {I_VFMADDSUB213PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18368, 240}, + {I_VFMADDSUB213PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18376, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB123PS[] = { + {I_VFMADDSUB123PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38485, 201}, + {I_VFMADDSUB123PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38492, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB123PD[] = { + {I_VFMADDSUB123PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38499, 201}, + {I_VFMADDSUB123PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38506, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB231PS[] = { + {I_VFMADDSUB231PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38513, 201}, + {I_VFMADDSUB231PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38520, 201}, + {I_VFMADDSUB231PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18432, 240}, + {I_VFMADDSUB231PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18440, 240}, + {I_VFMADDSUB231PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18448, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB231PD[] = { + {I_VFMADDSUB231PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38527, 201}, + {I_VFMADDSUB231PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38534, 201}, + {I_VFMADDSUB231PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18408, 240}, + {I_VFMADDSUB231PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18416, 240}, + {I_VFMADDSUB231PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18424, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB321PS[] = { + {I_VFMADDSUB321PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38513, 201}, + {I_VFMADDSUB321PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38520, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB321PD[] = { + {I_VFMADDSUB321PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38527, 201}, + {I_VFMADDSUB321PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38534, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB132PS[] = { + {I_VFMSUB132PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38541, 201}, + {I_VFMSUB132PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38548, 201}, + {I_VFMSUB132PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18480, 240}, + {I_VFMSUB132PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18488, 240}, + {I_VFMSUB132PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18496, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB132PD[] = { + {I_VFMSUB132PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38555, 201}, + {I_VFMSUB132PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38562, 201}, + {I_VFMSUB132PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18456, 240}, + {I_VFMSUB132PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18464, 240}, + {I_VFMSUB132PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18472, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB312PS[] = { + {I_VFMSUB312PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38541, 201}, + {I_VFMSUB312PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38548, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB312PD[] = { + {I_VFMSUB312PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38555, 201}, + {I_VFMSUB312PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38562, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB213PS[] = { + {I_VFMSUB213PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38569, 201}, + {I_VFMSUB213PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38576, 201}, + {I_VFMSUB213PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18544, 240}, + {I_VFMSUB213PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18552, 240}, + {I_VFMSUB213PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18560, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB213PD[] = { + {I_VFMSUB213PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38583, 201}, + {I_VFMSUB213PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38590, 201}, + {I_VFMSUB213PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18520, 240}, + {I_VFMSUB213PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18528, 240}, + {I_VFMSUB213PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18536, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB123PS[] = { + {I_VFMSUB123PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38569, 201}, + {I_VFMSUB123PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38576, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB123PD[] = { + {I_VFMSUB123PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38583, 201}, + {I_VFMSUB123PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38590, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB231PS[] = { + {I_VFMSUB231PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38597, 201}, + {I_VFMSUB231PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38604, 201}, + {I_VFMSUB231PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18608, 240}, + {I_VFMSUB231PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18616, 240}, + {I_VFMSUB231PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18624, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB231PD[] = { + {I_VFMSUB231PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38611, 201}, + {I_VFMSUB231PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38618, 201}, + {I_VFMSUB231PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18584, 240}, + {I_VFMSUB231PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18592, 240}, + {I_VFMSUB231PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18600, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB321PS[] = { + {I_VFMSUB321PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38597, 201}, + {I_VFMSUB321PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38604, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB321PD[] = { + {I_VFMSUB321PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38611, 201}, + {I_VFMSUB321PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38618, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD132PS[] = { + {I_VFMSUBADD132PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38625, 201}, + {I_VFMSUBADD132PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38632, 201}, + {I_VFMSUBADD132PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18672, 240}, + {I_VFMSUBADD132PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18680, 240}, + {I_VFMSUBADD132PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18688, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD132PD[] = { + {I_VFMSUBADD132PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38639, 201}, + {I_VFMSUBADD132PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38646, 201}, + {I_VFMSUBADD132PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18648, 240}, + {I_VFMSUBADD132PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18656, 240}, + {I_VFMSUBADD132PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18664, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD312PS[] = { + {I_VFMSUBADD312PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38625, 201}, + {I_VFMSUBADD312PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38632, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD312PD[] = { + {I_VFMSUBADD312PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38639, 201}, + {I_VFMSUBADD312PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38646, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD213PS[] = { + {I_VFMSUBADD213PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38653, 201}, + {I_VFMSUBADD213PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38660, 201}, + {I_VFMSUBADD213PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18720, 240}, + {I_VFMSUBADD213PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18728, 240}, + {I_VFMSUBADD213PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18736, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD213PD[] = { + {I_VFMSUBADD213PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38667, 201}, + {I_VFMSUBADD213PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38674, 201}, + {I_VFMSUBADD213PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18696, 240}, + {I_VFMSUBADD213PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18704, 240}, + {I_VFMSUBADD213PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18712, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD123PS[] = { + {I_VFMSUBADD123PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38653, 201}, + {I_VFMSUBADD123PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38660, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD123PD[] = { + {I_VFMSUBADD123PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38667, 201}, + {I_VFMSUBADD123PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38674, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD231PS[] = { + {I_VFMSUBADD231PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38681, 201}, + {I_VFMSUBADD231PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38688, 201}, + {I_VFMSUBADD231PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18768, 240}, + {I_VFMSUBADD231PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18776, 240}, + {I_VFMSUBADD231PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18784, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD231PD[] = { + {I_VFMSUBADD231PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38695, 201}, + {I_VFMSUBADD231PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38702, 201}, + {I_VFMSUBADD231PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18744, 240}, + {I_VFMSUBADD231PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18752, 240}, + {I_VFMSUBADD231PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18760, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD321PS[] = { + {I_VFMSUBADD321PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38681, 201}, + {I_VFMSUBADD321PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38688, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD321PD[] = { + {I_VFMSUBADD321PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38695, 201}, + {I_VFMSUBADD321PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38702, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD132PS[] = { + {I_VFNMADD132PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38709, 201}, + {I_VFNMADD132PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38716, 201}, + {I_VFNMADD132PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18816, 240}, + {I_VFNMADD132PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18824, 240}, + {I_VFNMADD132PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18832, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD132PD[] = { + {I_VFNMADD132PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38723, 201}, + {I_VFNMADD132PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38730, 201}, + {I_VFNMADD132PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18792, 240}, + {I_VFNMADD132PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18800, 240}, + {I_VFNMADD132PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18808, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD312PS[] = { + {I_VFNMADD312PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38709, 201}, + {I_VFNMADD312PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38716, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD312PD[] = { + {I_VFNMADD312PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38723, 201}, + {I_VFNMADD312PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38730, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD213PS[] = { + {I_VFNMADD213PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38737, 201}, + {I_VFNMADD213PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38744, 201}, + {I_VFNMADD213PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18880, 240}, + {I_VFNMADD213PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18888, 240}, + {I_VFNMADD213PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18896, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD213PD[] = { + {I_VFNMADD213PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38751, 201}, + {I_VFNMADD213PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38758, 201}, + {I_VFNMADD213PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18856, 240}, + {I_VFNMADD213PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18864, 240}, + {I_VFNMADD213PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18872, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD123PS[] = { + {I_VFNMADD123PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38737, 201}, + {I_VFNMADD123PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38744, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD123PD[] = { + {I_VFNMADD123PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38751, 201}, + {I_VFNMADD123PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38758, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD231PS[] = { + {I_VFNMADD231PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38765, 201}, + {I_VFNMADD231PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38772, 201}, + {I_VFNMADD231PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18944, 240}, + {I_VFNMADD231PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18952, 240}, + {I_VFNMADD231PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18960, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD231PD[] = { + {I_VFNMADD231PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38779, 201}, + {I_VFNMADD231PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38786, 201}, + {I_VFNMADD231PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18920, 240}, + {I_VFNMADD231PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18928, 240}, + {I_VFNMADD231PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18936, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD321PS[] = { + {I_VFNMADD321PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38765, 201}, + {I_VFNMADD321PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38772, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD321PD[] = { + {I_VFNMADD321PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38779, 201}, + {I_VFNMADD321PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38786, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB132PS[] = { + {I_VFNMSUB132PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38793, 201}, + {I_VFNMSUB132PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38800, 201}, + {I_VFNMSUB132PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19008, 240}, + {I_VFNMSUB132PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19016, 240}, + {I_VFNMSUB132PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+19024, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB132PD[] = { + {I_VFNMSUB132PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38807, 201}, + {I_VFNMSUB132PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38814, 201}, + {I_VFNMSUB132PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18984, 240}, + {I_VFNMSUB132PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18992, 240}, + {I_VFNMSUB132PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+19000, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB312PS[] = { + {I_VFNMSUB312PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38793, 201}, + {I_VFNMSUB312PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38800, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB312PD[] = { + {I_VFNMSUB312PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38807, 201}, + {I_VFNMSUB312PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38814, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB213PS[] = { + {I_VFNMSUB213PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38821, 201}, + {I_VFNMSUB213PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38828, 201}, + {I_VFNMSUB213PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19072, 240}, + {I_VFNMSUB213PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19080, 240}, + {I_VFNMSUB213PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+19088, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB213PD[] = { + {I_VFNMSUB213PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38835, 201}, + {I_VFNMSUB213PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38842, 201}, + {I_VFNMSUB213PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19048, 240}, + {I_VFNMSUB213PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19056, 240}, + {I_VFNMSUB213PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+19064, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB123PS[] = { + {I_VFNMSUB123PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38821, 201}, + {I_VFNMSUB123PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38828, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB123PD[] = { + {I_VFNMSUB123PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38835, 201}, + {I_VFNMSUB123PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38842, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB231PS[] = { + {I_VFNMSUB231PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38849, 201}, + {I_VFNMSUB231PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38856, 201}, + {I_VFNMSUB231PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19136, 240}, + {I_VFNMSUB231PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19144, 240}, + {I_VFNMSUB231PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+19152, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB231PD[] = { + {I_VFNMSUB231PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38863, 201}, + {I_VFNMSUB231PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38870, 201}, + {I_VFNMSUB231PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19112, 240}, + {I_VFNMSUB231PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19120, 240}, + {I_VFNMSUB231PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+19128, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB321PS[] = { + {I_VFNMSUB321PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38849, 201}, + {I_VFNMSUB321PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38856, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB321PD[] = { + {I_VFNMSUB321PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38863, 201}, + {I_VFNMSUB321PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38870, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD132SS[] = { + {I_VFMADD132SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38877, 201}, + {I_VFMADD132SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18176, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD132SD[] = { + {I_VFMADD132SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38884, 201}, + {I_VFMADD132SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18168, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD312SS[] = { + {I_VFMADD312SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38877, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD312SD[] = { + {I_VFMADD312SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38884, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD213SS[] = { + {I_VFMADD213SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38891, 201}, + {I_VFMADD213SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18240, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD213SD[] = { + {I_VFMADD213SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38898, 201}, + {I_VFMADD213SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18232, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD123SS[] = { + {I_VFMADD123SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38891, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD123SD[] = { + {I_VFMADD123SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38898, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD231SS[] = { + {I_VFMADD231SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38905, 201}, + {I_VFMADD231SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18304, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD231SD[] = { + {I_VFMADD231SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38912, 201}, + {I_VFMADD231SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18296, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD321SS[] = { + {I_VFMADD321SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38905, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD321SD[] = { + {I_VFMADD321SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38912, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB132SS[] = { + {I_VFMSUB132SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38919, 201}, + {I_VFMSUB132SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18512, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB132SD[] = { + {I_VFMSUB132SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38926, 201}, + {I_VFMSUB132SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18504, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB312SS[] = { + {I_VFMSUB312SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38919, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB312SD[] = { + {I_VFMSUB312SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38926, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB213SS[] = { + {I_VFMSUB213SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38933, 201}, + {I_VFMSUB213SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18576, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB213SD[] = { + {I_VFMSUB213SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38940, 201}, + {I_VFMSUB213SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18568, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB123SS[] = { + {I_VFMSUB123SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38933, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB123SD[] = { + {I_VFMSUB123SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38940, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB231SS[] = { + {I_VFMSUB231SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38947, 201}, + {I_VFMSUB231SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18640, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB231SD[] = { + {I_VFMSUB231SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38954, 201}, + {I_VFMSUB231SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18632, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB321SS[] = { + {I_VFMSUB321SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38947, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB321SD[] = { + {I_VFMSUB321SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38954, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD132SS[] = { + {I_VFNMADD132SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38961, 201}, + {I_VFNMADD132SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18848, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD132SD[] = { + {I_VFNMADD132SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38968, 201}, + {I_VFNMADD132SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18840, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD312SS[] = { + {I_VFNMADD312SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38961, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD312SD[] = { + {I_VFNMADD312SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38968, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD213SS[] = { + {I_VFNMADD213SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38975, 201}, + {I_VFNMADD213SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18912, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD213SD[] = { + {I_VFNMADD213SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38982, 201}, + {I_VFNMADD213SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18904, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD123SS[] = { + {I_VFNMADD123SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38975, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD123SD[] = { + {I_VFNMADD123SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38982, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD231SS[] = { + {I_VFNMADD231SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38989, 201}, + {I_VFNMADD231SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18976, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD231SD[] = { + {I_VFNMADD231SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38996, 201}, + {I_VFNMADD231SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18968, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD321SS[] = { + {I_VFNMADD321SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38989, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADD321SD[] = { + {I_VFNMADD321SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38996, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB132SS[] = { + {I_VFNMSUB132SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+39003, 201}, + {I_VFNMSUB132SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+19040, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB132SD[] = { + {I_VFNMSUB132SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+39010, 201}, + {I_VFNMSUB132SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+19032, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB312SS[] = { + {I_VFNMSUB312SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+39003, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB312SD[] = { + {I_VFNMSUB312SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+39010, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB213SS[] = { + {I_VFNMSUB213SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+39017, 201}, + {I_VFNMSUB213SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+19104, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB213SD[] = { + {I_VFNMSUB213SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+39024, 201}, + {I_VFNMSUB213SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+19096, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB123SS[] = { + {I_VFNMSUB123SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+39017, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB123SD[] = { + {I_VFNMSUB123SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+39024, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB231SS[] = { + {I_VFNMSUB231SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+39031, 201}, + {I_VFNMSUB231SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+19168, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB231SD[] = { + {I_VFNMSUB231SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+39038, 201}, + {I_VFNMSUB231SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+19160, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB321SS[] = { + {I_VFNMSUB321SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+39031, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUB321SD[] = { + {I_VFNMSUB321SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+39038, 201}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDFSBASE[] = { + {I_RDFSBASE, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39045, 136}, + {I_RDFSBASE, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39052, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDGSBASE[] = { + {I_RDGSBASE, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39059, 136}, + {I_RDGSBASE, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39066, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDRAND[] = { + {I_RDRAND, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45771, 135}, + {I_RDRAND, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45777, 135}, + {I_RDRAND, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45783, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WRFSBASE[] = { + {I_WRFSBASE, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39073, 136}, + {I_WRFSBASE, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39080, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WRGSBASE[] = { + {I_WRGSBASE, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39087, 136}, + {I_WRGSBASE, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39094, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPH2PS[] = { + {I_VCVTPH2PS, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39101, 202}, + {I_VCVTPH2PS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+39108, 202}, + {I_VCVTPH2PS, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17240, 240}, + {I_VCVTPH2PS, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17248, 240}, + {I_VCVTPH2PS, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+17256, 241}, + {I_VCVTPH2PS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+39108, 297}, + {I_VCVTPH2PS, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39101, 297}, + {I_VCVTPH2PS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17240, 240}, + {I_VCVTPH2PS, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17248, 240}, + {I_VCVTPH2PS, 2, {ZMM_L16,RM_YMM_L16|BITS256,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+17256, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPS2PH[] = { + {I_VCVTPS2PH, 3, {RM_XMM_L16|BITS128,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14224, 202}, + {I_VCVTPS2PH, 3, {RM_XMM_L16|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14232, 202}, + {I_VCVTPS2PH, 3, {XMMREG,XMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8182, 240}, + {I_VCVTPS2PH, 3, {XMMREG,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8191, 240}, + {I_VCVTPS2PH, 3, {YMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+8200, 241}, + {I_VCVTPS2PH, 3, {MEMORY|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8182, 240}, + {I_VCVTPS2PH, 3, {MEMORY|BITS128,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8191, 240}, + {I_VCVTPS2PH, 3, {MEMORY|BITS256,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,SAE,0,0,0}, nasm_bytecodes+8200, 241}, + {I_VCVTPS2PH, 3, {RM_XMM_L16|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14232, 298}, + {I_VCVTPS2PH, 3, {RM_XMM_L16|BITS128,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14224, 298}, + {I_VCVTPS2PH, 3, {XMMREG,XMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8182, 240}, + {I_VCVTPS2PH, 3, {MEMORY|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8182, 240}, + {I_VCVTPS2PH, 3, {XMMREG,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8191, 240}, + {I_VCVTPS2PH, 3, {MEMORY|BITS128,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8191, 240}, + {I_VCVTPS2PH, 3, {YMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+8200, 241}, + {I_VCVTPS2PH, 3, {MEMORY|BITS256,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,SAE,0,0,0}, nasm_bytecodes+8200, 241}, + {I_VCVTPS2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30504, 295}, + {I_VCVTPS2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30512, 295}, + {I_VCVTPS2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+30520, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ADCX[] = { + {I_ADCX, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+14240, 135}, + {I_ADCX, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+14248, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ADOX[] = { + {I_ADOX, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+14256, 135}, + {I_ADOX, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+14264, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDSEED[] = { + {I_RDSEED, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45789, 135}, + {I_RDSEED, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45795, 135}, + {I_RDSEED, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45801, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLAC[] = { + {I_CLAC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49147, 203}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STAC[] = { + {I_STAC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49152, 203}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSTORE[] = { + {I_XSTORE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49157, 32}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XCRYPTECB[] = { + {I_XCRYPTECB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45807, 32}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XCRYPTCBC[] = { + {I_XCRYPTCBC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45813, 32}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XCRYPTCTR[] = { + {I_XCRYPTCTR, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45819, 32}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XCRYPTCFB[] = { + {I_XCRYPTCFB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45825, 32}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XCRYPTOFB[] = { + {I_XCRYPTOFB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45831, 32}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MONTMUL[] = { + {I_MONTMUL, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45837, 32}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSHA1[] = { + {I_XSHA1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45843, 32}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSHA256[] = { + {I_XSHA256, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45849, 32}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LLWPCB[] = { + {I_LLWPCB, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39115, 204}, + {I_LLWPCB, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39122, 205}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SLWPCB[] = { + {I_SLWPCB, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39129, 204}, + {I_SLWPCB, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39136, 205}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LWPVAL[] = { + {I_LWPVAL, 3, {REG_GPR|BITS32,RM_GPR|BITS32,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+14272, 204}, + {I_LWPVAL, 3, {REG_GPR|BITS64,RM_GPR|BITS32,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+14280, 205}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LWPINS[] = { + {I_LWPINS, 3, {REG_GPR|BITS32,RM_GPR|BITS32,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+14288, 204}, + {I_LWPINS, 3, {REG_GPR|BITS64,RM_GPR|BITS32,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+14296, 205}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDPD[] = { + {I_VFMADDPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14304, 206}, + {I_VFMADDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14312, 206}, + {I_VFMADDPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14320, 206}, + {I_VFMADDPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14328, 206}, + {I_VFMADDPD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14336, 206}, + {I_VFMADDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14344, 206}, + {I_VFMADDPD, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14352, 206}, + {I_VFMADDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14360, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDPS[] = { + {I_VFMADDPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14368, 206}, + {I_VFMADDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14376, 206}, + {I_VFMADDPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14384, 206}, + {I_VFMADDPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14392, 206}, + {I_VFMADDPS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14400, 206}, + {I_VFMADDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14408, 206}, + {I_VFMADDPS, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14416, 206}, + {I_VFMADDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14424, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSD[] = { + {I_VFMADDSD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14432, 206}, + {I_VFMADDSD, 3, {XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14440, 206}, + {I_VFMADDSD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0}, NO_DECORATOR, nasm_bytecodes+14448, 206}, + {I_VFMADDSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+14456, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSS[] = { + {I_VFMADDSS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14464, 206}, + {I_VFMADDSS, 3, {XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14472, 206}, + {I_VFMADDSS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0}, NO_DECORATOR, nasm_bytecodes+14480, 206}, + {I_VFMADDSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+14488, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUBPD[] = { + {I_VFMADDSUBPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14496, 206}, + {I_VFMADDSUBPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14504, 206}, + {I_VFMADDSUBPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14512, 206}, + {I_VFMADDSUBPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14520, 206}, + {I_VFMADDSUBPD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14528, 206}, + {I_VFMADDSUBPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14536, 206}, + {I_VFMADDSUBPD, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14544, 206}, + {I_VFMADDSUBPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14552, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUBPS[] = { + {I_VFMADDSUBPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14560, 206}, + {I_VFMADDSUBPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14568, 206}, + {I_VFMADDSUBPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14576, 206}, + {I_VFMADDSUBPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14584, 206}, + {I_VFMADDSUBPS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14592, 206}, + {I_VFMADDSUBPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14600, 206}, + {I_VFMADDSUBPS, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14608, 206}, + {I_VFMADDSUBPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14616, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADDPD[] = { + {I_VFMSUBADDPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14624, 206}, + {I_VFMSUBADDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14632, 206}, + {I_VFMSUBADDPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14640, 206}, + {I_VFMSUBADDPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14648, 206}, + {I_VFMSUBADDPD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14656, 206}, + {I_VFMSUBADDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14664, 206}, + {I_VFMSUBADDPD, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14672, 206}, + {I_VFMSUBADDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14680, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADDPS[] = { + {I_VFMSUBADDPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14688, 206}, + {I_VFMSUBADDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14696, 206}, + {I_VFMSUBADDPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14704, 206}, + {I_VFMSUBADDPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14712, 206}, + {I_VFMSUBADDPS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14720, 206}, + {I_VFMSUBADDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14728, 206}, + {I_VFMSUBADDPS, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14736, 206}, + {I_VFMSUBADDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14744, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBPD[] = { + {I_VFMSUBPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14752, 206}, + {I_VFMSUBPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14760, 206}, + {I_VFMSUBPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14768, 206}, + {I_VFMSUBPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14776, 206}, + {I_VFMSUBPD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14784, 206}, + {I_VFMSUBPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14792, 206}, + {I_VFMSUBPD, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14800, 206}, + {I_VFMSUBPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14808, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBPS[] = { + {I_VFMSUBPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14816, 206}, + {I_VFMSUBPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14824, 206}, + {I_VFMSUBPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14832, 206}, + {I_VFMSUBPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14840, 206}, + {I_VFMSUBPS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14848, 206}, + {I_VFMSUBPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14856, 206}, + {I_VFMSUBPS, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14864, 206}, + {I_VFMSUBPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14872, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBSD[] = { + {I_VFMSUBSD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14880, 206}, + {I_VFMSUBSD, 3, {XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14888, 206}, + {I_VFMSUBSD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0}, NO_DECORATOR, nasm_bytecodes+14896, 206}, + {I_VFMSUBSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+14904, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBSS[] = { + {I_VFMSUBSS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14912, 206}, + {I_VFMSUBSS, 3, {XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14920, 206}, + {I_VFMSUBSS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0}, NO_DECORATOR, nasm_bytecodes+14928, 206}, + {I_VFMSUBSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+14936, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADDPD[] = { + {I_VFNMADDPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14944, 206}, + {I_VFNMADDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14952, 206}, + {I_VFNMADDPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14960, 206}, + {I_VFNMADDPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14968, 206}, + {I_VFNMADDPD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14976, 206}, + {I_VFNMADDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14984, 206}, + {I_VFNMADDPD, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14992, 206}, + {I_VFNMADDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+15000, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADDPS[] = { + {I_VFNMADDPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15008, 206}, + {I_VFNMADDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15016, 206}, + {I_VFNMADDPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15024, 206}, + {I_VFNMADDPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15032, 206}, + {I_VFNMADDPS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+15040, 206}, + {I_VFNMADDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+15048, 206}, + {I_VFNMADDPS, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+15056, 206}, + {I_VFNMADDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+15064, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADDSD[] = { + {I_VFNMADDSD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15072, 206}, + {I_VFNMADDSD, 3, {XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15080, 206}, + {I_VFNMADDSD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0}, NO_DECORATOR, nasm_bytecodes+15088, 206}, + {I_VFNMADDSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+15096, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMADDSS[] = { + {I_VFNMADDSS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15104, 206}, + {I_VFNMADDSS, 3, {XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15112, 206}, + {I_VFNMADDSS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0}, NO_DECORATOR, nasm_bytecodes+15120, 206}, + {I_VFNMADDSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+15128, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUBPD[] = { + {I_VFNMSUBPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15136, 206}, + {I_VFNMSUBPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15144, 206}, + {I_VFNMSUBPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15152, 206}, + {I_VFNMSUBPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15160, 206}, + {I_VFNMSUBPD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+15168, 206}, + {I_VFNMSUBPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+15176, 206}, + {I_VFNMSUBPD, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+15184, 206}, + {I_VFNMSUBPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+15192, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUBPS[] = { + {I_VFNMSUBPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15200, 206}, + {I_VFNMSUBPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15208, 206}, + {I_VFNMSUBPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15216, 206}, + {I_VFNMSUBPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15224, 206}, + {I_VFNMSUBPS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+15232, 206}, + {I_VFNMSUBPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+15240, 206}, + {I_VFNMSUBPS, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+15248, 206}, + {I_VFNMSUBPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+15256, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUBSD[] = { + {I_VFNMSUBSD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15264, 206}, + {I_VFNMSUBSD, 3, {XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15272, 206}, + {I_VFNMSUBSD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0}, NO_DECORATOR, nasm_bytecodes+15280, 206}, + {I_VFNMSUBSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+15288, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFNMSUBSS[] = { + {I_VFNMSUBSS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15296, 206}, + {I_VFNMSUBSS, 3, {XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15304, 206}, + {I_VFNMSUBSS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0}, NO_DECORATOR, nasm_bytecodes+15312, 206}, + {I_VFNMSUBSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+15320, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFRCZPD[] = { + {I_VFRCZPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39143, 206}, + {I_VFRCZPD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39150, 206}, + {I_VFRCZPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39157, 206}, + {I_VFRCZPD, 1, {YMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39164, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFRCZPS[] = { + {I_VFRCZPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39171, 206}, + {I_VFRCZPS, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39178, 206}, + {I_VFRCZPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39185, 206}, + {I_VFRCZPS, 1, {YMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39192, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFRCZSD[] = { + {I_VFRCZSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+39199, 206}, + {I_VFRCZSD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39206, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFRCZSS[] = { + {I_VFRCZSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+39213, 206}, + {I_VFRCZSS, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39220, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMOV[] = { + {I_VPCMOV, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15328, 206}, + {I_VPCMOV, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15336, 206}, + {I_VPCMOV, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15344, 206}, + {I_VPCMOV, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15352, 206}, + {I_VPCMOV, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+15360, 206}, + {I_VPCMOV, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+15368, 206}, + {I_VPCMOV, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+15376, 206}, + {I_VPCMOV, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+15384, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCOMB[] = { + {I_VPCOMB, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15392, 206}, + {I_VPCOMB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15400, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCOMD[] = { + {I_VPCOMD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15408, 206}, + {I_VPCOMD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15416, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCOMQ[] = { + {I_VPCOMQ, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15424, 206}, + {I_VPCOMQ, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15432, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCOMUB[] = { + {I_VPCOMUB, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15440, 206}, + {I_VPCOMUB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15448, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCOMUD[] = { + {I_VPCOMUD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15456, 206}, + {I_VPCOMUD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15464, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCOMUQ[] = { + {I_VPCOMUQ, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15472, 206}, + {I_VPCOMUQ, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15480, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCOMUW[] = { + {I_VPCOMUW, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15488, 206}, + {I_VPCOMUW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15496, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCOMW[] = { + {I_VPCOMW, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15504, 206}, + {I_VPCOMW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15512, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDBD[] = { + {I_VPHADDBD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39227, 206}, + {I_VPHADDBD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39234, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDBQ[] = { + {I_VPHADDBQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39241, 206}, + {I_VPHADDBQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39248, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDBW[] = { + {I_VPHADDBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39255, 206}, + {I_VPHADDBW, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39262, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDDQ[] = { + {I_VPHADDDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39269, 206}, + {I_VPHADDDQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39276, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDUBD[] = { + {I_VPHADDUBD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39283, 206}, + {I_VPHADDUBD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39290, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDUBQ[] = { + {I_VPHADDUBQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39297, 206}, + {I_VPHADDUBQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39304, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDUBW[] = { + {I_VPHADDUBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39311, 206}, + {I_VPHADDUBW, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39318, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDUDQ[] = { + {I_VPHADDUDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39325, 206}, + {I_VPHADDUDQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39332, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDUWD[] = { + {I_VPHADDUWD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39339, 206}, + {I_VPHADDUWD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39346, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDUWQ[] = { + {I_VPHADDUWQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39353, 206}, + {I_VPHADDUWQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39360, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDWD[] = { + {I_VPHADDWD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39367, 206}, + {I_VPHADDWD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39374, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHADDWQ[] = { + {I_VPHADDWQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39381, 206}, + {I_VPHADDWQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39388, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHSUBBW[] = { + {I_VPHSUBBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39395, 206}, + {I_VPHSUBBW, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39402, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHSUBDQ[] = { + {I_VPHSUBDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39409, 206}, + {I_VPHSUBDQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39416, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPHSUBWD[] = { + {I_VPHSUBWD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39423, 206}, + {I_VPHSUBWD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39430, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMACSDD[] = { + {I_VPMACSDD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15520, 206}, + {I_VPMACSDD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15528, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMACSDQH[] = { + {I_VPMACSDQH, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15536, 206}, + {I_VPMACSDQH, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15544, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMACSDQL[] = { + {I_VPMACSDQL, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15552, 206}, + {I_VPMACSDQL, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15560, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMACSSDD[] = { + {I_VPMACSSDD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15568, 206}, + {I_VPMACSSDD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15576, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMACSSDQH[] = { + {I_VPMACSSDQH, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15584, 206}, + {I_VPMACSSDQH, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15592, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMACSSDQL[] = { + {I_VPMACSSDQL, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15600, 206}, + {I_VPMACSSDQL, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15608, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMACSSWD[] = { + {I_VPMACSSWD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15616, 206}, + {I_VPMACSSWD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15624, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMACSSWW[] = { + {I_VPMACSSWW, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15632, 206}, + {I_VPMACSSWW, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15640, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMACSWD[] = { + {I_VPMACSWD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15648, 206}, + {I_VPMACSWD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15656, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMACSWW[] = { + {I_VPMACSWW, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15664, 206}, + {I_VPMACSWW, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15672, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMADCSSWD[] = { + {I_VPMADCSSWD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15680, 206}, + {I_VPMADCSSWD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15688, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMADCSWD[] = { + {I_VPMADCSWD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15696, 206}, + {I_VPMADCSWD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15704, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPPERM[] = { + {I_VPPERM, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+15712, 206}, + {I_VPPERM, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+15720, 206}, + {I_VPPERM, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15728, 206}, + {I_VPPERM, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15736, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPROTB[] = { + {I_VPROTB, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39437, 206}, + {I_VPROTB, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39444, 206}, + {I_VPROTB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39451, 206}, + {I_VPROTB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39458, 206}, + {I_VPROTB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15744, 206}, + {I_VPROTB, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15752, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPROTD[] = { + {I_VPROTD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39465, 206}, + {I_VPROTD, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39472, 206}, + {I_VPROTD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39479, 206}, + {I_VPROTD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39486, 206}, + {I_VPROTD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15760, 206}, + {I_VPROTD, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15768, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPROTQ[] = { + {I_VPROTQ, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39493, 206}, + {I_VPROTQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39500, 206}, + {I_VPROTQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39507, 206}, + {I_VPROTQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39514, 206}, + {I_VPROTQ, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15776, 206}, + {I_VPROTQ, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15784, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPROTW[] = { + {I_VPROTW, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39521, 206}, + {I_VPROTW, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39528, 206}, + {I_VPROTW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39535, 206}, + {I_VPROTW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39542, 206}, + {I_VPROTW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15792, 206}, + {I_VPROTW, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15800, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHAB[] = { + {I_VPSHAB, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39549, 206}, + {I_VPSHAB, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39556, 206}, + {I_VPSHAB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39563, 206}, + {I_VPSHAB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39570, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHAD[] = { + {I_VPSHAD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39577, 206}, + {I_VPSHAD, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39584, 206}, + {I_VPSHAD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39591, 206}, + {I_VPSHAD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39598, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHAQ[] = { + {I_VPSHAQ, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39605, 206}, + {I_VPSHAQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39612, 206}, + {I_VPSHAQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39619, 206}, + {I_VPSHAQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39626, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHAW[] = { + {I_VPSHAW, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39633, 206}, + {I_VPSHAW, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39640, 206}, + {I_VPSHAW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39647, 206}, + {I_VPSHAW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39654, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHLB[] = { + {I_VPSHLB, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39661, 206}, + {I_VPSHLB, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39668, 206}, + {I_VPSHLB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39675, 206}, + {I_VPSHLB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39682, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHLD[] = { + {I_VPSHLD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39689, 206}, + {I_VPSHLD, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39696, 206}, + {I_VPSHLD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39703, 206}, + {I_VPSHLD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39710, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHLQ[] = { + {I_VPSHLQ, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39717, 206}, + {I_VPSHLQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39724, 206}, + {I_VPSHLQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39731, 206}, + {I_VPSHLQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39738, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHLW[] = { + {I_VPSHLW, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39745, 206}, + {I_VPSHLW, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39752, 206}, + {I_VPSHLW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39759, 206}, + {I_VPSHLW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39766, 206}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTI128[] = { + {I_VBROADCASTI128, 2, {YMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41040, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBLENDD[] = { + {I_VPBLENDD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+16056, 207}, + {I_VPBLENDD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16064, 207}, + {I_VPBLENDD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+16072, 207}, + {I_VPBLENDD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16080, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBROADCASTB[] = { + {I_VPBROADCASTB, 2, {XMM_L16,MEMORY|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+41047, 207}, + {I_VPBROADCASTB, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41047, 207}, + {I_VPBROADCASTB, 2, {YMM_L16,MEMORY|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+41054, 207}, + {I_VPBROADCASTB, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41054, 207}, + {I_VPBROADCASTB, 2, {XMMREG,RM_XMM|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21792, 244}, + {I_VPBROADCASTB, 2, {YMMREG,RM_XMM|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21800, 244}, + {I_VPBROADCASTB, 2, {ZMMREG,RM_XMM|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21808, 245}, + {I_VPBROADCASTB, 2, {XMMREG,REG_GPR|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21816, 244}, + {I_VPBROADCASTB, 2, {XMMREG,REG_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21816, 244}, + {I_VPBROADCASTB, 2, {XMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21816, 244}, + {I_VPBROADCASTB, 2, {XMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21816, 244}, + {I_VPBROADCASTB, 2, {YMMREG,REG_GPR|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21824, 244}, + {I_VPBROADCASTB, 2, {YMMREG,REG_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21824, 244}, + {I_VPBROADCASTB, 2, {YMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21824, 244}, + {I_VPBROADCASTB, 2, {YMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21824, 244}, + {I_VPBROADCASTB, 2, {ZMMREG,REG_GPR|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21832, 245}, + {I_VPBROADCASTB, 2, {ZMMREG,REG_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21832, 245}, + {I_VPBROADCASTB, 2, {ZMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21832, 245}, + {I_VPBROADCASTB, 2, {ZMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21832, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBROADCASTW[] = { + {I_VPBROADCASTW, 2, {XMM_L16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41061, 207}, + {I_VPBROADCASTW, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41061, 207}, + {I_VPBROADCASTW, 2, {YMM_L16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41068, 207}, + {I_VPBROADCASTW, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41068, 207}, + {I_VPBROADCASTW, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22032, 244}, + {I_VPBROADCASTW, 2, {YMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22040, 244}, + {I_VPBROADCASTW, 2, {ZMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22048, 245}, + {I_VPBROADCASTW, 2, {XMMREG,REG_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22056, 244}, + {I_VPBROADCASTW, 2, {XMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22056, 244}, + {I_VPBROADCASTW, 2, {XMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22056, 244}, + {I_VPBROADCASTW, 2, {YMMREG,REG_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22064, 244}, + {I_VPBROADCASTW, 2, {YMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22064, 244}, + {I_VPBROADCASTW, 2, {YMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22064, 244}, + {I_VPBROADCASTW, 2, {ZMMREG,REG_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22072, 245}, + {I_VPBROADCASTW, 2, {ZMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22072, 245}, + {I_VPBROADCASTW, 2, {ZMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22072, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBROADCASTD[] = { + {I_VPBROADCASTD, 2, {XMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41075, 207}, + {I_VPBROADCASTD, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41075, 207}, + {I_VPBROADCASTD, 2, {YMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41082, 207}, + {I_VPBROADCASTD, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41082, 207}, + {I_VPBROADCASTD, 2, {XMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21840, 240}, + {I_VPBROADCASTD, 2, {YMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21848, 240}, + {I_VPBROADCASTD, 2, {ZMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21856, 241}, + {I_VPBROADCASTD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21864, 240}, + {I_VPBROADCASTD, 2, {YMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21872, 240}, + {I_VPBROADCASTD, 2, {ZMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21880, 241}, + {I_VPBROADCASTD, 2, {XMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21888, 240}, + {I_VPBROADCASTD, 2, {YMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21896, 240}, + {I_VPBROADCASTD, 2, {ZMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21904, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBROADCASTQ[] = { + {I_VPBROADCASTQ, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41089, 207}, + {I_VPBROADCASTQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41089, 207}, + {I_VPBROADCASTQ, 2, {YMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41096, 207}, + {I_VPBROADCASTQ, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41096, 207}, + {I_VPBROADCASTQ, 2, {XMMREG,MEMORY|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21960, 240}, + {I_VPBROADCASTQ, 2, {YMMREG,MEMORY|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21968, 240}, + {I_VPBROADCASTQ, 2, {ZMMREG,MEMORY|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21976, 241}, + {I_VPBROADCASTQ, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21984, 240}, + {I_VPBROADCASTQ, 2, {YMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21992, 240}, + {I_VPBROADCASTQ, 2, {ZMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22000, 241}, + {I_VPBROADCASTQ, 2, {XMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22008, 240}, + {I_VPBROADCASTQ, 2, {YMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22016, 240}, + {I_VPBROADCASTQ, 2, {ZMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22024, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMD[] = { + {I_VPERMD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41103, 207}, + {I_VPERMD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41110, 207}, + {I_VPERMD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22464, 240}, + {I_VPERMD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22472, 240}, + {I_VPERMD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22480, 241}, + {I_VPERMD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22488, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMPD[] = { + {I_VPERMPD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16088, 207}, + {I_VPERMPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9514, 240}, + {I_VPERMPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9523, 241}, + {I_VPERMPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22736, 240}, + {I_VPERMPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22744, 240}, + {I_VPERMPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22752, 241}, + {I_VPERMPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22760, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMPS[] = { + {I_VPERMPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41117, 207}, + {I_VPERMPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41124, 207}, + {I_VPERMPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22768, 240}, + {I_VPERMPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22776, 240}, + {I_VPERMPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22784, 241}, + {I_VPERMPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22792, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMQ[] = { + {I_VPERMQ, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16096, 207}, + {I_VPERMQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9532, 240}, + {I_VPERMQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9541, 241}, + {I_VPERMQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22800, 240}, + {I_VPERMQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22808, 240}, + {I_VPERMQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22816, 241}, + {I_VPERMQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22824, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERM2I128[] = { + {I_VPERM2I128, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+16104, 207}, + {I_VPERM2I128, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16112, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXTRACTI128[] = { + {I_VEXTRACTI128, 3, {RM_XMM_L16|BITS128,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16120, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VINSERTI128[] = { + {I_VINSERTI128, 4, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+16128, 207}, + {I_VINSERTI128, 3, {YMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16136, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMASKMOVD[] = { + {I_VPMASKMOVD, 3, {XMM_L16,XMM_L16,MEMORY|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41131, 207}, + {I_VPMASKMOVD, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41138, 207}, + {I_VPMASKMOVD, 3, {YMM_L16,YMM_L16,MEMORY|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41145, 207}, + {I_VPMASKMOVD, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41152, 207}, + {I_VPMASKMOVD, 3, {MEMORY|BITS128,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+41187, 207}, + {I_VPMASKMOVD, 2, {MEMORY|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41194, 207}, + {I_VPMASKMOVD, 3, {MEMORY|BITS256,YMM_L16,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+41201, 207}, + {I_VPMASKMOVD, 2, {MEMORY|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41208, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMASKMOVQ[] = { + {I_VPMASKMOVQ, 3, {XMM_L16,XMM_L16,MEMORY|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41159, 207}, + {I_VPMASKMOVQ, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41166, 207}, + {I_VPMASKMOVQ, 3, {YMM_L16,YMM_L16,MEMORY|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41173, 207}, + {I_VPMASKMOVQ, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41180, 207}, + {I_VPMASKMOVQ, 3, {MEMORY|BITS128,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+41215, 207}, + {I_VPMASKMOVQ, 2, {MEMORY|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41222, 207}, + {I_VPMASKMOVQ, 3, {MEMORY|BITS256,YMM_L16,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+41229, 207}, + {I_VPMASKMOVQ, 2, {MEMORY|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41236, 207}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSLLVD[] = { + {I_VPSLLVD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41243, 207}, + {I_VPSLLVD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41250, 207}, + {I_VPSLLVD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41271, 207}, + {I_VPSLLVD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41278, 207}, + {I_VPSLLVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26288, 240}, + {I_VPSLLVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26296, 240}, + {I_VPSLLVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26304, 240}, + {I_VPSLLVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26312, 240}, + {I_VPSLLVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26320, 241}, + {I_VPSLLVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26328, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSLLVQ[] = { + {I_VPSLLVQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41257, 207}, + {I_VPSLLVQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41264, 207}, + {I_VPSLLVQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41285, 207}, + {I_VPSLLVQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41292, 207}, + {I_VPSLLVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26336, 240}, + {I_VPSLLVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26344, 240}, + {I_VPSLLVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26352, 240}, + {I_VPSLLVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26360, 240}, + {I_VPSLLVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26368, 241}, + {I_VPSLLVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26376, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRAVD[] = { + {I_VPSRAVD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41299, 207}, + {I_VPSRAVD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41306, 207}, + {I_VPSRAVD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41313, 207}, + {I_VPSRAVD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41320, 207}, + {I_VPSRAVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26576, 240}, + {I_VPSRAVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26584, 240}, + {I_VPSRAVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26592, 240}, + {I_VPSRAVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26600, 240}, + {I_VPSRAVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26608, 241}, + {I_VPSRAVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26616, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRLVD[] = { + {I_VPSRLVD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41327, 207}, + {I_VPSRLVD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41334, 207}, + {I_VPSRLVD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41355, 207}, + {I_VPSRLVD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41362, 207}, + {I_VPSRLVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26864, 240}, + {I_VPSRLVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26872, 240}, + {I_VPSRLVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26880, 240}, + {I_VPSRLVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26888, 240}, + {I_VPSRLVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26896, 241}, + {I_VPSRLVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26904, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRLVQ[] = { + {I_VPSRLVQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41341, 207}, + {I_VPSRLVQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41348, 207}, + {I_VPSRLVQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41369, 207}, + {I_VPSRLVQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41376, 207}, + {I_VPSRLVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26912, 240}, + {I_VPSRLVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26920, 240}, + {I_VPSRLVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26928, 240}, + {I_VPSRLVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26936, 240}, + {I_VPSRLVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26944, 241}, + {I_VPSRLVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26952, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGATHERDPD[] = { + {I_VGATHERDPD, 3, {XMM_L16,XMEM|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16144, 207}, + {I_VGATHERDPD, 3, {YMM_L16,XMEM|BITS64,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16160, 207}, + {I_VGATHERDPD, 2, {XMMREG,XMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8704, 240}, + {I_VGATHERDPD, 2, {YMMREG,XMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8713, 240}, + {I_VGATHERDPD, 2, {ZMMREG,YMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8722, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGATHERQPD[] = { + {I_VGATHERQPD, 3, {XMM_L16,XMEM|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16152, 207}, + {I_VGATHERQPD, 3, {YMM_L16,YMEM|BITS64,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16168, 207}, + {I_VGATHERQPD, 2, {XMMREG,XMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8830, 240}, + {I_VGATHERQPD, 2, {YMMREG,YMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8839, 240}, + {I_VGATHERQPD, 2, {ZMMREG,ZMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8848, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGATHERDPS[] = { + {I_VGATHERDPS, 3, {XMM_L16,XMEM|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16176, 207}, + {I_VGATHERDPS, 3, {YMM_L16,YMEM|BITS32,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16192, 207}, + {I_VGATHERDPS, 2, {XMMREG,XMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8731, 240}, + {I_VGATHERDPS, 2, {YMMREG,YMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8740, 240}, + {I_VGATHERDPS, 2, {ZMMREG,ZMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8749, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGATHERQPS[] = { + {I_VGATHERQPS, 3, {XMM_L16,XMEM|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16184, 207}, + {I_VGATHERQPS, 3, {XMM_L16,YMEM|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16200, 207}, + {I_VGATHERQPS, 2, {XMMREG,XMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8857, 240}, + {I_VGATHERQPS, 2, {XMMREG,YMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8866, 240}, + {I_VGATHERQPS, 2, {YMMREG,ZMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8875, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPGATHERDD[] = { + {I_VPGATHERDD, 3, {XMM_L16,XMEM|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16208, 207}, + {I_VPGATHERDD, 3, {YMM_L16,YMEM|BITS32,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16224, 207}, + {I_VPGATHERDD, 2, {XMMREG,XMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9595, 240}, + {I_VPGATHERDD, 2, {YMMREG,YMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9604, 240}, + {I_VPGATHERDD, 2, {ZMMREG,ZMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9613, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPGATHERQD[] = { + {I_VPGATHERQD, 3, {XMM_L16,XMEM|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16216, 207}, + {I_VPGATHERQD, 3, {XMM_L16,YMEM|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16232, 207}, + {I_VPGATHERQD, 2, {XMMREG,XMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9649, 240}, + {I_VPGATHERQD, 2, {XMMREG,YMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9658, 240}, + {I_VPGATHERQD, 2, {YMMREG,ZMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9667, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPGATHERDQ[] = { + {I_VPGATHERDQ, 3, {XMM_L16,XMEM|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16240, 207}, + {I_VPGATHERDQ, 3, {YMM_L16,XMEM|BITS64,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16256, 207}, + {I_VPGATHERDQ, 2, {XMMREG,XMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9622, 240}, + {I_VPGATHERDQ, 2, {YMMREG,XMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9631, 240}, + {I_VPGATHERDQ, 2, {ZMMREG,YMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9640, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPGATHERQQ[] = { + {I_VPGATHERQQ, 3, {XMM_L16,XMEM|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16248, 207}, + {I_VPGATHERQQ, 3, {YMM_L16,YMEM|BITS64,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16264, 207}, + {I_VPGATHERQQ, 2, {XMMREG,XMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9676, 240}, + {I_VPGATHERQQ, 2, {YMMREG,YMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9685, 240}, + {I_VPGATHERQQ, 2, {ZMMREG,ZMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9694, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XABORT[] = { + {I_XABORT, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49162, 208}, + {I_XABORT, 1, {IMMEDIATE|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49162, 208}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XBEGIN[] = { + {I_XBEGIN, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45855, 208}, + {I_XBEGIN, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45855, 208}, + {I_XBEGIN, 1, {IMMEDIATE|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45861, 209}, + {I_XBEGIN, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45861, 209}, + {I_XBEGIN, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45867, 209}, + {I_XBEGIN, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45867, 209}, + {I_XBEGIN, 1, {IMMEDIATE|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45873, 210}, + {I_XBEGIN, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45873, 210}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XEND[] = { + {I_XEND, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49167, 208}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XTEST[] = { + {I_XTEST, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49172, 211}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ANDN[] = { + {I_ANDN, 3, {REG_GPR|BITS32,REG_GPR|BITS32,RM_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41383, 212}, + {I_ANDN, 3, {REG_GPR|BITS64,REG_GPR|BITS64,RM_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41390, 213}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BEXTR[] = { + {I_BEXTR, 3, {REG_GPR|BITS32,RM_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41397, 212}, + {I_BEXTR, 3, {REG_GPR|BITS64,RM_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41404, 213}, + {I_BEXTR, 3, {REG_GPR|BITS32,RM_GPR|BITS32,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+16272, 214}, + {I_BEXTR, 3, {REG_GPR|BITS64,RM_GPR|BITS64,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+16280, 215}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLCI[] = { + {I_BLCI, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41411, 214}, + {I_BLCI, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41418, 215}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLCIC[] = { + {I_BLCIC, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41425, 214}, + {I_BLCIC, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41432, 215}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLSI[] = { + {I_BLSI, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41439, 212}, + {I_BLSI, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41446, 213}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLSIC[] = { + {I_BLSIC, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41453, 214}, + {I_BLSIC, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41460, 215}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLCFILL[] = { + {I_BLCFILL, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41467, 214}, + {I_BLCFILL, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41474, 215}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLSFILL[] = { + {I_BLSFILL, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41481, 214}, + {I_BLSFILL, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41488, 215}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLCMSK[] = { + {I_BLCMSK, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41495, 214}, + {I_BLCMSK, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41502, 215}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLSMSK[] = { + {I_BLSMSK, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41509, 212}, + {I_BLSMSK, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41516, 213}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLSR[] = { + {I_BLSR, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41523, 212}, + {I_BLSR, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41530, 213}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BLCS[] = { + {I_BLCS, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41537, 214}, + {I_BLCS, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41544, 215}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BZHI[] = { + {I_BZHI, 3, {REG_GPR|BITS32,RM_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41551, 216}, + {I_BZHI, 3, {REG_GPR|BITS64,RM_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41558, 217}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MULX[] = { + {I_MULX, 3, {REG_GPR|BITS32,REG_GPR|BITS32,RM_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41565, 216}, + {I_MULX, 3, {REG_GPR|BITS64,REG_GPR|BITS64,RM_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41572, 217}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PDEP[] = { + {I_PDEP, 3, {REG_GPR|BITS32,REG_GPR|BITS32,RM_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41579, 216}, + {I_PDEP, 3, {REG_GPR|BITS64,REG_GPR|BITS64,RM_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41586, 217}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PEXT[] = { + {I_PEXT, 3, {REG_GPR|BITS32,REG_GPR|BITS32,RM_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41593, 216}, + {I_PEXT, 3, {REG_GPR|BITS64,REG_GPR|BITS64,RM_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41600, 217}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RORX[] = { + {I_RORX, 3, {REG_GPR|BITS32,RM_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16288, 216}, + {I_RORX, 3, {REG_GPR|BITS64,RM_GPR|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16296, 217}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SARX[] = { + {I_SARX, 3, {REG_GPR|BITS32,RM_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41607, 216}, + {I_SARX, 3, {REG_GPR|BITS64,RM_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41614, 217}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHLX[] = { + {I_SHLX, 3, {REG_GPR|BITS32,RM_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41621, 216}, + {I_SHLX, 3, {REG_GPR|BITS64,RM_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41628, 217}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHRX[] = { + {I_SHRX, 3, {REG_GPR|BITS32,RM_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41635, 216}, + {I_SHRX, 3, {REG_GPR|BITS64,RM_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41642, 217}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TZCNT[] = { + {I_TZCNT, 2, {REG_GPR|BITS16,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41649, 218}, + {I_TZCNT, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41656, 218}, + {I_TZCNT, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41663, 219}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TZMSK[] = { + {I_TZMSK, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41670, 214}, + {I_TZMSK, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41677, 215}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_T1MSKC[] = { + {I_T1MSKC, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41684, 214}, + {I_T1MSKC, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41691, 215}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PREFETCHWT1[] = { + {I_PREFETCHWT1, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49177, 220}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BNDMK[] = { + {I_BNDMK, 2, {BNDREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45879, 221}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BNDCL[] = { + {I_BNDCL, 2, {BNDREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+41699, 222}, + {I_BNDCL, 2, {BNDREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41699, 223}, + {I_BNDCL, 2, {BNDREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41698, 224}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BNDCU[] = { + {I_BNDCU, 2, {BNDREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+41706, 222}, + {I_BNDCU, 2, {BNDREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41706, 223}, + {I_BNDCU, 2, {BNDREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41705, 224}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BNDCN[] = { + {I_BNDCN, 2, {BNDREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+41713, 222}, + {I_BNDCN, 2, {BNDREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41713, 223}, + {I_BNDCN, 2, {BNDREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41712, 224}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BNDMOV[] = { + {I_BNDMOV, 2, {BNDREG,BNDREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+45885, 222}, + {I_BNDMOV, 2, {BNDREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45885, 222}, + {I_BNDMOV, 2, {BNDREG,BNDREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+45891, 222}, + {I_BNDMOV, 2, {MEMORY,BNDREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+45891, 222}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BNDLDX[] = { + {I_BNDLDX, 2, {BNDREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45886, 221}, + {I_BNDLDX, 3, {BNDREG,MEMORY,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+45897, 225}, + {I_BNDLDX, 3, {BNDREG,MEMORY,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+45897, 226}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_BNDSTX[] = { + {I_BNDSTX, 2, {MEMORY,BNDREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+45892, 221}, + {I_BNDSTX, 3, {MEMORY,REG_GPR|BITS32,BNDREG,0,0}, NO_DECORATOR, nasm_bytecodes+45903, 225}, + {I_BNDSTX, 3, {MEMORY,REG_GPR|BITS64,BNDREG,0,0}, NO_DECORATOR, nasm_bytecodes+45903, 226}, + {I_BNDSTX, 3, {MEMORY,BNDREG,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+45909, 225}, + {I_BNDSTX, 3, {MEMORY,BNDREG,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+45909, 226}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHA1MSG1[] = { + {I_SHA1MSG1, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45915, 227}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHA1MSG2[] = { + {I_SHA1MSG2, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45921, 227}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHA1NEXTE[] = { + {I_SHA1NEXTE, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45927, 227}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHA1RNDS4[] = { + {I_SHA1RNDS4, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+41719, 227}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHA256MSG1[] = { + {I_SHA256MSG1, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45933, 227}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHA256MSG2[] = { + {I_SHA256MSG2, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45939, 227}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SHA256RNDS2[] = { + {I_SHA256RNDS2, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM0,0,0}, NO_DECORATOR, nasm_bytecodes+45945, 227}, + {I_SHA256RNDS2, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45945, 227}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBCSTNEBF16PS[] = { + {I_VBCSTNEBF16PS, 2, {XMM_L16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41726, 228}, + {I_VBCSTNEBF16PS, 2, {YMM_L16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41733, 228}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBCSTNESH2PS[] = { + {I_VBCSTNESH2PS, 2, {XMM_L16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41740, 228}, + {I_VBCSTNESH2PS, 2, {YMM_L16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41747, 228}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTNEEBF162PS[] = { + {I_VCVTNEEBF162PS, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41754, 229}, + {I_VCVTNEEBF162PS, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41761, 230}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTNEEPH2PS[] = { + {I_VCVTNEEPH2PS, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41768, 229}, + {I_VCVTNEEPH2PS, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41775, 230}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTNEOBF162PS[] = { + {I_VCVTNEOBF162PS, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41782, 229}, + {I_VCVTNEOBF162PS, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41789, 230}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTNEOPH2PS[] = { + {I_VCVTNEOPH2PS, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41796, 229}, + {I_VCVTNEOPH2PS, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41803, 230}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTNEPS2BF16[] = { + {I_VCVTNEPS2BF16, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41810, 229}, + {I_VCVTNEPS2BF16, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41817, 230}, + {I_VCVTNEPS2BF16, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30064, 289}, + {I_VCVTNEPS2BF16, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30072, 289}, + {I_VCVTNEPS2BF16, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30080, 289}, + {I_VCVTNEPS2BF16, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30088, 289}, + {I_VCVTNEPS2BF16, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30096, 289}, + {I_VCVTNEPS2BF16, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30104, 289}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPDPBSSD[] = { + {I_VPDPBSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41824, 231}, + {I_VPDPBSSD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41831, 232}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPDPBSSDS[] = { + {I_VPDPBSSDS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41838, 231}, + {I_VPDPBSSDS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41845, 232}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPDPBSUD[] = { + {I_VPDPBSUD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41852, 231}, + {I_VPDPBSUD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41859, 232}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPDPBSUDS[] = { + {I_VPDPBSUDS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41866, 231}, + {I_VPDPBSUDS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41873, 232}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPDPBUUD[] = { + {I_VPDPBUUD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41880, 231}, + {I_VPDPBUUD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41887, 232}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPDPBUUDS[] = { + {I_VPDPBUUDS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41894, 231}, + {I_VPDPBUUDS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41901, 232}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMADD52HUQ[] = { + {I_VPMADD52HUQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41908, 233}, + {I_VPMADD52HUQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41915, 234}, + {I_VPMADD52HUQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23120, 252}, + {I_VPMADD52HUQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23128, 252}, + {I_VPMADD52HUQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23136, 253}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMADD52LUQ[] = { + {I_VPMADD52LUQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41922, 233}, + {I_VPMADD52LUQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41929, 234}, + {I_VPMADD52LUQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23144, 252}, + {I_VPMADD52LUQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23152, 252}, + {I_VPMADD52LUQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23160, 253}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KADDB[] = { + {I_KADDB, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41936, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KADDD[] = { + {I_KADDD, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41943, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KADDQ[] = { + {I_KADDQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41950, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KADDW[] = { + {I_KADDW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41957, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KANDB[] = { + {I_KANDB, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41964, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KANDD[] = { + {I_KANDD, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41971, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KANDNB[] = { + {I_KANDNB, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41978, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KANDND[] = { + {I_KANDND, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41985, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KANDNQ[] = { + {I_KANDNQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41992, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KANDNW[] = { + {I_KANDNW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41999, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KANDQ[] = { + {I_KANDQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42006, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KANDW[] = { + {I_KANDW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42013, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KMOVB[] = { + {I_KMOVB, 2, {KREG,RM_K|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42020, 235}, + {I_KMOVB, 2, {MEMORY|BITS8,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42027, 235}, + {I_KMOVB, 2, {KREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42034, 235}, + {I_KMOVB, 2, {KREG,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+16304, 235}, + {I_KMOVB, 2, {REG_GPR|BITS32,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42041, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KMOVD[] = { + {I_KMOVD, 2, {KREG,RM_K|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42048, 235}, + {I_KMOVD, 2, {MEMORY|BITS32,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42055, 235}, + {I_KMOVD, 2, {KREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42062, 235}, + {I_KMOVD, 2, {REG_GPR|BITS32,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42069, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KMOVQ[] = { + {I_KMOVQ, 2, {KREG,RM_K|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42076, 235}, + {I_KMOVQ, 2, {MEMORY|BITS64,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42083, 235}, + {I_KMOVQ, 2, {KREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42090, 235}, + {I_KMOVQ, 2, {REG_GPR|BITS64,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42097, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KMOVW[] = { + {I_KMOVW, 2, {KREG,RM_K|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42104, 235}, + {I_KMOVW, 2, {MEMORY|BITS16,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42111, 235}, + {I_KMOVW, 2, {KREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42118, 235}, + {I_KMOVW, 2, {KREG,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42118, 235}, + {I_KMOVW, 2, {REG_GPR|BITS32,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42125, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KNOTB[] = { + {I_KNOTB, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42132, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KNOTD[] = { + {I_KNOTD, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42139, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KNOTQ[] = { + {I_KNOTQ, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42146, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KNOTW[] = { + {I_KNOTW, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42153, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KORB[] = { + {I_KORB, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42160, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KORD[] = { + {I_KORD, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42167, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KORQ[] = { + {I_KORQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42174, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KORW[] = { + {I_KORW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42181, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KORTESTB[] = { + {I_KORTESTB, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42188, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KORTESTD[] = { + {I_KORTESTD, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42195, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KORTESTQ[] = { + {I_KORTESTQ, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42202, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KORTESTW[] = { + {I_KORTESTW, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42209, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KSHIFTLB[] = { + {I_KSHIFTLB, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16312, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KSHIFTLD[] = { + {I_KSHIFTLD, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16320, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KSHIFTLQ[] = { + {I_KSHIFTLQ, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16328, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KSHIFTLW[] = { + {I_KSHIFTLW, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16336, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KSHIFTRB[] = { + {I_KSHIFTRB, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16344, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KSHIFTRD[] = { + {I_KSHIFTRD, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16352, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KSHIFTRQ[] = { + {I_KSHIFTRQ, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16360, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KSHIFTRW[] = { + {I_KSHIFTRW, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16368, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KTESTB[] = { + {I_KTESTB, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42216, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KTESTD[] = { + {I_KTESTD, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42223, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KTESTQ[] = { + {I_KTESTQ, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42230, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KTESTW[] = { + {I_KTESTW, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42237, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KUNPCKBW[] = { + {I_KUNPCKBW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42244, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KUNPCKDQ[] = { + {I_KUNPCKDQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42251, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KUNPCKWD[] = { + {I_KUNPCKWD, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42258, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KXNORB[] = { + {I_KXNORB, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42265, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KXNORD[] = { + {I_KXNORD, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42272, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KXNORQ[] = { + {I_KXNORQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42279, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KXNORW[] = { + {I_KXNORW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42286, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KXORB[] = { + {I_KXORB, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42293, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KXORD[] = { + {I_KXORD, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42300, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KXORQ[] = { + {I_KXORQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42307, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KXORW[] = { + {I_KXORW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42314, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KADD[] = { + {I_KADD, 3, {KREG|BITS8,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41936, 236}, + {I_KADD, 3, {KREG|BITS32,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41943, 236}, + {I_KADD, 3, {KREG|BITS64,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41950, 236}, + {I_KADD, 3, {KREG|BITS16,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41957, 236}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KAND[] = { + {I_KAND, 3, {KREG|BITS8,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41964, 236}, + {I_KAND, 3, {KREG|BITS32,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41971, 236}, + {I_KAND, 3, {KREG|BITS64,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42006, 236}, + {I_KAND, 3, {KREG|BITS16,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42013, 236}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KANDN[] = { + {I_KANDN, 3, {KREG|BITS64,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41978, 236}, + {I_KANDN, 3, {KREG|BITS16,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41985, 236}, + {I_KANDN, 3, {KREG|BITS8,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41992, 236}, + {I_KANDN, 3, {KREG|BITS32,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41999, 236}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KMOV[] = { + {I_KMOV, 2, {KREG|BITS8,RM_K|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42020, 236}, + {I_KMOV, 2, {MEMORY|BITS8,KREG|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42027, 237}, + {I_KMOV, 2, {KREG|BITS8,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42034, 238}, + {I_KMOV, 2, {KREG|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42034, 236}, + {I_KMOV, 2, {REG_GPR|BITS32,KREG|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42041, 238}, + {I_KMOV, 2, {KREG|BITS32,RM_K|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42048, 236}, + {I_KMOV, 2, {MEMORY|BITS32,KREG|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42055, 236}, + {I_KMOV, 2, {KREG|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42062, 236}, + {I_KMOV, 2, {REG_GPR|BITS32,KREG|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42069, 236}, + {I_KMOV, 2, {KREG|BITS64,RM_K|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42076, 236}, + {I_KMOV, 2, {MEMORY|BITS64,KREG|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42083, 236}, + {I_KMOV, 2, {KREG|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42090, 236}, + {I_KMOV, 2, {REG_GPR|BITS64,KREG|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42097, 236}, + {I_KMOV, 2, {KREG|BITS16,RM_K|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42104, 236}, + {I_KMOV, 2, {MEMORY|BITS16,KREG|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42111, 236}, + {I_KMOV, 2, {KREG|BITS16,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42118, 238}, + {I_KMOV, 2, {REG_GPR|BITS32,KREG|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42125, 238}, + {I_KMOV, 2, {KREG|BITS16,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42118, 238}, + {I_KMOV, 2, {KREG|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42118, 236}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KNOT[] = { + {I_KNOT, 2, {KREG|BITS8,KREG|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42132, 236}, + {I_KNOT, 2, {KREG|BITS32,KREG|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42139, 236}, + {I_KNOT, 2, {KREG|BITS64,KREG|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42146, 236}, + {I_KNOT, 2, {KREG|BITS16,KREG|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42153, 236}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KOR[] = { + {I_KOR, 3, {KREG|BITS8,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42160, 236}, + {I_KOR, 3, {KREG|BITS32,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42167, 236}, + {I_KOR, 3, {KREG|BITS64,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42174, 236}, + {I_KOR, 3, {KREG|BITS16,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42181, 236}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KORTEST[] = { + {I_KORTEST, 2, {KREG|BITS8,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42188, 236}, + {I_KORTEST, 2, {KREG|BITS32,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42195, 236}, + {I_KORTEST, 2, {KREG|BITS64,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42202, 236}, + {I_KORTEST, 2, {KREG|BITS16,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42209, 236}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KSHIFTL[] = { + {I_KSHIFTL, 3, {KREG|BITS8,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16312, 239}, + {I_KSHIFTL, 3, {KREG|BITS32,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16320, 239}, + {I_KSHIFTL, 3, {KREG|BITS64,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16328, 239}, + {I_KSHIFTL, 3, {KREG|BITS16,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16336, 239}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KSHIFTR[] = { + {I_KSHIFTR, 3, {KREG|BITS8,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16344, 239}, + {I_KSHIFTR, 3, {KREG|BITS32,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16352, 239}, + {I_KSHIFTR, 3, {KREG|BITS64,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16360, 239}, + {I_KSHIFTR, 3, {KREG|BITS16,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16368, 239}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KTEST[] = { + {I_KTEST, 2, {KREG|BITS8,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42216, 236}, + {I_KTEST, 2, {KREG|BITS32,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42223, 236}, + {I_KTEST, 2, {KREG|BITS64,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42230, 236}, + {I_KTEST, 2, {KREG|BITS16,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42237, 236}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KUNPCK[] = { + {I_KUNPCK, 3, {KREG|BITS16,KREG|BITS8,KREG|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+42244, 235}, + {I_KUNPCK, 3, {KREG|BITS64,KREG|BITS32,KREG|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42251, 235}, + {I_KUNPCK, 3, {KREG|BITS32,KREG|BITS16,KREG|BITS16,0,0}, NO_DECORATOR, nasm_bytecodes+42258, 235}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KXNOR[] = { + {I_KXNOR, 3, {KREG|BITS8,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42265, 236}, + {I_KXNOR, 3, {KREG|BITS32,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42272, 236}, + {I_KXNOR, 3, {KREG|BITS64,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42279, 236}, + {I_KXNOR, 3, {KREG|BITS16,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42286, 236}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_KXOR[] = { + {I_KXOR, 3, {KREG|BITS8,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42293, 236}, + {I_KXOR, 3, {KREG|BITS32,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42300, 236}, + {I_KXOR, 3, {KREG|BITS64,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42307, 236}, + {I_KXOR, 3, {KREG|BITS16,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42314, 236}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VALIGND[] = { + {I_VALIGND, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+8002, 240}, + {I_VALIGND, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8011, 240}, + {I_VALIGND, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+8020, 240}, + {I_VALIGND, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8029, 240}, + {I_VALIGND, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+8038, 241}, + {I_VALIGND, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8047, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VALIGNQ[] = { + {I_VALIGNQ, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+8056, 240}, + {I_VALIGNQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8065, 240}, + {I_VALIGNQ, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+8074, 240}, + {I_VALIGNQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8083, 240}, + {I_VALIGNQ, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+8092, 241}, + {I_VALIGNQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8101, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBLENDMPD[] = { + {I_VBLENDMPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16696, 240}, + {I_VBLENDMPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16704, 240}, + {I_VBLENDMPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16712, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBLENDMPS[] = { + {I_VBLENDMPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16720, 240}, + {I_VBLENDMPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16728, 240}, + {I_VBLENDMPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16736, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTF32X2[] = { + {I_VBROADCASTF32X2, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16744, 242}, + {I_VBROADCASTF32X2, 2, {ZMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16752, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTF32X4[] = { + {I_VBROADCASTF32X4, 2, {YMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16760, 240}, + {I_VBROADCASTF32X4, 2, {ZMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16768, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTF32X8[] = { + {I_VBROADCASTF32X8, 2, {ZMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16776, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTF64X2[] = { + {I_VBROADCASTF64X2, 2, {YMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16784, 242}, + {I_VBROADCASTF64X2, 2, {ZMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16792, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTF64X4[] = { + {I_VBROADCASTF64X4, 2, {ZMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16800, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTI32X2[] = { + {I_VBROADCASTI32X2, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16808, 242}, + {I_VBROADCASTI32X2, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16816, 242}, + {I_VBROADCASTI32X2, 2, {ZMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16824, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTI32X4[] = { + {I_VBROADCASTI32X4, 2, {YMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16832, 240}, + {I_VBROADCASTI32X4, 2, {ZMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16840, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTI32X8[] = { + {I_VBROADCASTI32X8, 2, {ZMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16848, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTI64X2[] = { + {I_VBROADCASTI64X2, 2, {YMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16856, 242}, + {I_VBROADCASTI64X2, 2, {ZMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16864, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VBROADCASTI64X4[] = { + {I_VBROADCASTI64X4, 2, {ZMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16872, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_OQPD[] = { + {I_VCMPEQ_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+240, 240}, + {I_VCMPEQ_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+250, 240}, + {I_VCMPEQ_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+260, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_OQPS[] = { + {I_VCMPEQ_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+270, 240}, + {I_VCMPEQ_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+280, 240}, + {I_VCMPEQ_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+290, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_OQSD[] = { + {I_VCMPEQ_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+300, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPEQ_OQSS[] = { + {I_VCMPEQ_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+310, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCOMPRESSPD[] = { + {I_VCOMPRESSPD, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+16976, 240}, + {I_VCOMPRESSPD, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+16984, 240}, + {I_VCOMPRESSPD, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+16992, 241}, + {I_VCOMPRESSPD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17000, 240}, + {I_VCOMPRESSPD, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17008, 240}, + {I_VCOMPRESSPD, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17016, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCOMPRESSPS[] = { + {I_VCOMPRESSPS, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+17024, 240}, + {I_VCOMPRESSPS, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+17032, 240}, + {I_VCOMPRESSPS, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+17040, 241}, + {I_VCOMPRESSPS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17048, 240}, + {I_VCOMPRESSPS, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17056, 240}, + {I_VCOMPRESSPS, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17064, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPD2QQ[] = { + {I_VCVTPD2QQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17168, 242}, + {I_VCVTPD2QQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17176, 242}, + {I_VCVTPD2QQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17184, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPD2UDQ[] = { + {I_VCVTPD2UDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17192, 240}, + {I_VCVTPD2UDQ, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17200, 240}, + {I_VCVTPD2UDQ, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17208, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPD2UQQ[] = { + {I_VCVTPD2UQQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17216, 242}, + {I_VCVTPD2UQQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17224, 242}, + {I_VCVTPD2UQQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17232, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPS2QQ[] = { + {I_VCVTPS2QQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17312, 242}, + {I_VCVTPS2QQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17320, 242}, + {I_VCVTPS2QQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17328, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPS2UDQ[] = { + {I_VCVTPS2UDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17336, 240}, + {I_VCVTPS2UDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17344, 240}, + {I_VCVTPS2UDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17352, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPS2UQQ[] = { + {I_VCVTPS2UQQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17360, 242}, + {I_VCVTPS2UQQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17368, 242}, + {I_VCVTPS2UQQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17376, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTQQ2PD[] = { + {I_VCVTQQ2PD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17384, 242}, + {I_VCVTQQ2PD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17392, 242}, + {I_VCVTQQ2PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17400, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTQQ2PS[] = { + {I_VCVTQQ2PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17408, 242}, + {I_VCVTQQ2PS, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17416, 242}, + {I_VCVTQQ2PS, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17424, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSD2USI[] = { + {I_VCVTSD2USI, 2, {REG_GPR|BITS32,RM_XMM|BITS64,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17456, 241}, + {I_VCVTSD2USI, 2, {REG_GPR|BITS64,RM_XMM|BITS64,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17464, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSS2USI[] = { + {I_VCVTSS2USI, 2, {REG_GPR|BITS32,RM_XMM|BITS32,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17528, 241}, + {I_VCVTSS2USI, 2, {REG_GPR|BITS64,RM_XMM|BITS32,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17536, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPD2QQ[] = { + {I_VCVTTPD2QQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17568, 242}, + {I_VCVTTPD2QQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17576, 242}, + {I_VCVTTPD2QQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+17584, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPD2UDQ[] = { + {I_VCVTTPD2UDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17592, 240}, + {I_VCVTTPD2UDQ, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17600, 240}, + {I_VCVTTPD2UDQ, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+17608, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPD2UQQ[] = { + {I_VCVTTPD2UQQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17616, 242}, + {I_VCVTTPD2UQQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17624, 242}, + {I_VCVTTPD2UQQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+17632, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPS2QQ[] = { + {I_VCVTTPS2QQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17664, 242}, + {I_VCVTTPS2QQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17672, 242}, + {I_VCVTTPS2QQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+17680, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPS2UDQ[] = { + {I_VCVTTPS2UDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17688, 240}, + {I_VCVTTPS2UDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17696, 240}, + {I_VCVTTPS2UDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+17704, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPS2UQQ[] = { + {I_VCVTTPS2UQQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17712, 242}, + {I_VCVTTPS2UQQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17720, 242}, + {I_VCVTTPS2UQQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+17728, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTSD2USI[] = { + {I_VCVTTSD2USI, 2, {REG_GPR|BITS32,RM_XMM|BITS64,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17752, 241}, + {I_VCVTTSD2USI, 2, {REG_GPR|BITS64,RM_XMM|BITS64,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17760, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTSS2USI[] = { + {I_VCVTTSS2USI, 2, {REG_GPR|BITS32,RM_XMM|BITS32,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17784, 241}, + {I_VCVTTSS2USI, 2, {REG_GPR|BITS64,RM_XMM|BITS32,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17792, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTUDQ2PD[] = { + {I_VCVTUDQ2PD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17800, 240}, + {I_VCVTUDQ2PD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17808, 240}, + {I_VCVTUDQ2PD, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17816, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTUDQ2PS[] = { + {I_VCVTUDQ2PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17824, 240}, + {I_VCVTUDQ2PS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17832, 240}, + {I_VCVTUDQ2PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17840, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTUQQ2PD[] = { + {I_VCVTUQQ2PD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17848, 242}, + {I_VCVTUQQ2PD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17856, 242}, + {I_VCVTUQQ2PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17864, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTUQQ2PS[] = { + {I_VCVTUQQ2PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17872, 242}, + {I_VCVTUQQ2PS, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17880, 242}, + {I_VCVTUQQ2PS, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17888, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTUSI2SD[] = { + {I_VCVTUSI2SD, 3, {XMMREG,XMMREG,RM_GPR|BITS32,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17896, 241}, + {I_VCVTUSI2SD, 3, {XMMREG,XMMREG,RM_GPR|BITS64,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17904, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTUSI2SS[] = { + {I_VCVTUSI2SS, 3, {XMMREG,XMMREG,RM_GPR|BITS32,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17912, 241}, + {I_VCVTUSI2SS, 3, {XMMREG,XMMREG,RM_GPR|BITS64,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17920, 241}, + {I_VCVTUSI2SS, 3, {XMMREG,XMMREG,RM_GPR|BITS64,0,0}, {0,ER,ER,0,0}, nasm_bytecodes+30912, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VDBPSADBW[] = { + {I_VDBPSADBW, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8209, 244}, + {I_VDBPSADBW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8218, 244}, + {I_VDBPSADBW, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8227, 244}, + {I_VDBPSADBW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8236, 244}, + {I_VDBPSADBW, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8245, 245}, + {I_VDBPSADBW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8254, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXP2PD[] = { + {I_VEXP2PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+18056, 246}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXP2PS[] = { + {I_VEXP2PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+18064, 246}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXPANDPD[] = { + {I_VEXPANDPD, 2, {XMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18072, 240}, + {I_VEXPANDPD, 2, {YMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18080, 240}, + {I_VEXPANDPD, 2, {ZMMREG,MEMORY|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18088, 241}, + {I_VEXPANDPD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18072, 240}, + {I_VEXPANDPD, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18080, 240}, + {I_VEXPANDPD, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18088, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXPANDPS[] = { + {I_VEXPANDPS, 2, {XMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18096, 240}, + {I_VEXPANDPS, 2, {YMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18104, 240}, + {I_VEXPANDPS, 2, {ZMMREG,MEMORY|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18112, 241}, + {I_VEXPANDPS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18096, 240}, + {I_VEXPANDPS, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18104, 240}, + {I_VEXPANDPS, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18112, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXTRACTF32X4[] = { + {I_VEXTRACTF32X4, 3, {XMMREG,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8263, 240}, + {I_VEXTRACTF32X4, 3, {XMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8272, 241}, + {I_VEXTRACTF32X4, 3, {MEMORY|BITS128,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8281, 240}, + {I_VEXTRACTF32X4, 3, {MEMORY|BITS128,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8290, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXTRACTF32X8[] = { + {I_VEXTRACTF32X8, 3, {YMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8299, 243}, + {I_VEXTRACTF32X8, 3, {MEMORY|BITS256,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8308, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXTRACTF64X2[] = { + {I_VEXTRACTF64X2, 3, {XMMREG,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8317, 242}, + {I_VEXTRACTF64X2, 3, {XMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8326, 243}, + {I_VEXTRACTF64X2, 3, {MEMORY|BITS128,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8335, 242}, + {I_VEXTRACTF64X2, 3, {MEMORY|BITS128,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8344, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXTRACTF64X4[] = { + {I_VEXTRACTF64X4, 3, {YMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8353, 241}, + {I_VEXTRACTF64X4, 3, {MEMORY|BITS256,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8362, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXTRACTI32X4[] = { + {I_VEXTRACTI32X4, 3, {XMMREG,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8371, 240}, + {I_VEXTRACTI32X4, 3, {XMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8380, 241}, + {I_VEXTRACTI32X4, 3, {MEMORY|BITS128,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8389, 240}, + {I_VEXTRACTI32X4, 3, {MEMORY|BITS128,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8398, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXTRACTI32X8[] = { + {I_VEXTRACTI32X8, 3, {YMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8407, 243}, + {I_VEXTRACTI32X8, 3, {MEMORY|BITS256,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8416, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXTRACTI64X2[] = { + {I_VEXTRACTI64X2, 3, {XMMREG,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8425, 242}, + {I_VEXTRACTI64X2, 3, {XMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8434, 243}, + {I_VEXTRACTI64X2, 3, {MEMORY|BITS128,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8443, 242}, + {I_VEXTRACTI64X2, 3, {MEMORY|BITS128,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8452, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VEXTRACTI64X4[] = { + {I_VEXTRACTI64X4, 3, {YMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8461, 241}, + {I_VEXTRACTI64X4, 3, {MEMORY|BITS256,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8470, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFIXUPIMMPD[] = { + {I_VFIXUPIMMPD, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+8488, 240}, + {I_VFIXUPIMMPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8497, 240}, + {I_VFIXUPIMMPD, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+8506, 240}, + {I_VFIXUPIMMPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8515, 240}, + {I_VFIXUPIMMPD, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64|SAE,0,0}, nasm_bytecodes+8524, 241}, + {I_VFIXUPIMMPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+8533, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFIXUPIMMPS[] = { + {I_VFIXUPIMMPS, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+8542, 240}, + {I_VFIXUPIMMPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8551, 240}, + {I_VFIXUPIMMPS, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+8560, 240}, + {I_VFIXUPIMMPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8569, 240}, + {I_VFIXUPIMMPS, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32|SAE,0,0}, nasm_bytecodes+8578, 241}, + {I_VFIXUPIMMPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+8587, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFIXUPIMMSD[] = { + {I_VFIXUPIMMSD, 4, {XMMREG,XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+8596, 241}, + {I_VFIXUPIMMSD, 3, {XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+8605, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFIXUPIMMSS[] = { + {I_VFIXUPIMMSS, 4, {XMMREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+8614, 241}, + {I_VFIXUPIMMSS, 3, {XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+8623, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFPCLASSPD[] = { + {I_VFPCLASSPD, 3, {KREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK,B64,0,0,0}, nasm_bytecodes+8632, 242}, + {I_VFPCLASSPD, 3, {KREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK,B64,0,0,0}, nasm_bytecodes+8641, 242}, + {I_VFPCLASSPD, 3, {KREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK,B64,0,0,0}, nasm_bytecodes+8650, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFPCLASSPS[] = { + {I_VFPCLASSPS, 3, {KREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK,B32,0,0,0}, nasm_bytecodes+8659, 242}, + {I_VFPCLASSPS, 3, {KREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK,B32,0,0,0}, nasm_bytecodes+8668, 242}, + {I_VFPCLASSPS, 3, {KREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK,B32,0,0,0}, nasm_bytecodes+8677, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFPCLASSSD[] = { + {I_VFPCLASSSD, 3, {KREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8686, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFPCLASSSS[] = { + {I_VFPCLASSSS, 3, {KREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8695, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGATHERPF0DPD[] = { + {I_VGATHERPF0DPD, 1, {YMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8758, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGATHERPF0DPS[] = { + {I_VGATHERPF0DPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8767, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGATHERPF0QPD[] = { + {I_VGATHERPF0QPD, 1, {ZMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8776, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGATHERPF0QPS[] = { + {I_VGATHERPF0QPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8785, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGATHERPF1DPD[] = { + {I_VGATHERPF1DPD, 1, {YMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8794, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGATHERPF1DPS[] = { + {I_VGATHERPF1DPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8803, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGATHERPF1QPD[] = { + {I_VGATHERPF1QPD, 1, {ZMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8812, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGATHERPF1QPS[] = { + {I_VGATHERPF1QPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8821, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETEXPPD[] = { + {I_VGETEXPPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+19176, 240}, + {I_VGETEXPPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+19184, 240}, + {I_VGETEXPPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+19192, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETEXPPS[] = { + {I_VGETEXPPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+19200, 240}, + {I_VGETEXPPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+19208, 240}, + {I_VGETEXPPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+19216, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETEXPSD[] = { + {I_VGETEXPSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+19224, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETEXPSS[] = { + {I_VGETEXPSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+19232, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETMANTPD[] = { + {I_VGETMANTPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8884, 240}, + {I_VGETMANTPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8893, 240}, + {I_VGETMANTPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+8902, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETMANTPS[] = { + {I_VGETMANTPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8911, 240}, + {I_VGETMANTPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8920, 240}, + {I_VGETMANTPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+8929, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETMANTSD[] = { + {I_VGETMANTSD, 4, {XMMREG,XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+8938, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETMANTSS[] = { + {I_VGETMANTSS, 4, {XMMREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+8947, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VINSERTF32X4[] = { + {I_VINSERTF32X4, 4, {YMMREG,YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8956, 240}, + {I_VINSERTF32X4, 3, {YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8965, 240}, + {I_VINSERTF32X4, 4, {ZMMREG,ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8974, 241}, + {I_VINSERTF32X4, 3, {ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8983, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VINSERTF32X8[] = { + {I_VINSERTF32X8, 4, {ZMMREG,ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8992, 243}, + {I_VINSERTF32X8, 3, {ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9001, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VINSERTF64X2[] = { + {I_VINSERTF64X2, 4, {YMMREG,YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9010, 242}, + {I_VINSERTF64X2, 3, {YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9019, 242}, + {I_VINSERTF64X2, 4, {ZMMREG,ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9028, 243}, + {I_VINSERTF64X2, 3, {ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9037, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VINSERTF64X4[] = { + {I_VINSERTF64X4, 4, {ZMMREG,ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9046, 241}, + {I_VINSERTF64X4, 3, {ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9055, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VINSERTI32X4[] = { + {I_VINSERTI32X4, 4, {YMMREG,YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9064, 240}, + {I_VINSERTI32X4, 3, {YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9073, 240}, + {I_VINSERTI32X4, 4, {ZMMREG,ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9082, 241}, + {I_VINSERTI32X4, 3, {ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9091, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VINSERTI32X8[] = { + {I_VINSERTI32X8, 4, {ZMMREG,ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9100, 243}, + {I_VINSERTI32X8, 3, {ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9109, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VINSERTI64X2[] = { + {I_VINSERTI64X2, 4, {YMMREG,YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9118, 242}, + {I_VINSERTI64X2, 3, {YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9127, 242}, + {I_VINSERTI64X2, 4, {ZMMREG,ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9136, 243}, + {I_VINSERTI64X2, 3, {ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9145, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VINSERTI64X4[] = { + {I_VINSERTI64X4, 4, {ZMMREG,ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9154, 241}, + {I_VINSERTI64X4, 3, {ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9163, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVDQA32[] = { + {I_VMOVDQA32, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19680, 240}, + {I_VMOVDQA32, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19688, 240}, + {I_VMOVDQA32, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19696, 241}, + {I_VMOVDQA32, 2, {RM_XMM|BITS128,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19704, 240}, + {I_VMOVDQA32, 2, {RM_YMM|BITS256,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19712, 240}, + {I_VMOVDQA32, 2, {RM_ZMM|BITS512,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19720, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVDQA64[] = { + {I_VMOVDQA64, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19728, 240}, + {I_VMOVDQA64, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19736, 240}, + {I_VMOVDQA64, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19744, 241}, + {I_VMOVDQA64, 2, {RM_XMM|BITS128,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19752, 240}, + {I_VMOVDQA64, 2, {RM_YMM|BITS256,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19760, 240}, + {I_VMOVDQA64, 2, {RM_ZMM|BITS512,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19768, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVDQU16[] = { + {I_VMOVDQU16, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19776, 244}, + {I_VMOVDQU16, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19784, 244}, + {I_VMOVDQU16, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19792, 245}, + {I_VMOVDQU16, 2, {RM_XMM|BITS128,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19800, 244}, + {I_VMOVDQU16, 2, {RM_YMM|BITS256,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19808, 244}, + {I_VMOVDQU16, 2, {RM_ZMM|BITS512,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19816, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVDQU32[] = { + {I_VMOVDQU32, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19824, 240}, + {I_VMOVDQU32, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19832, 240}, + {I_VMOVDQU32, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19840, 241}, + {I_VMOVDQU32, 2, {RM_XMM|BITS128,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19848, 240}, + {I_VMOVDQU32, 2, {RM_YMM|BITS256,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19856, 240}, + {I_VMOVDQU32, 2, {RM_ZMM|BITS512,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19864, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVDQU64[] = { + {I_VMOVDQU64, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19872, 240}, + {I_VMOVDQU64, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19880, 240}, + {I_VMOVDQU64, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19888, 241}, + {I_VMOVDQU64, 2, {RM_XMM|BITS128,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19896, 240}, + {I_VMOVDQU64, 2, {RM_YMM|BITS256,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19904, 240}, + {I_VMOVDQU64, 2, {RM_ZMM|BITS512,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19912, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVDQU8[] = { + {I_VMOVDQU8, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19920, 244}, + {I_VMOVDQU8, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19928, 244}, + {I_VMOVDQU8, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19936, 245}, + {I_VMOVDQU8, 2, {RM_XMM|BITS128,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19944, 244}, + {I_VMOVDQU8, 2, {RM_YMM|BITS256,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19952, 244}, + {I_VMOVDQU8, 2, {RM_ZMM|BITS512,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19960, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPABSQ[] = { + {I_VPABSQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20784, 240}, + {I_VPABSQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20792, 240}, + {I_VPABSQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20800, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPANDD[] = { + {I_VPANDD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21408, 240}, + {I_VPANDD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21416, 240}, + {I_VPANDD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21424, 240}, + {I_VPANDD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21432, 240}, + {I_VPANDD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21440, 241}, + {I_VPANDD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21448, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPANDND[] = { + {I_VPANDND, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21456, 240}, + {I_VPANDND, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21464, 240}, + {I_VPANDND, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21472, 240}, + {I_VPANDND, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21480, 240}, + {I_VPANDND, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21488, 241}, + {I_VPANDND, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21496, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPANDNQ[] = { + {I_VPANDNQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21504, 240}, + {I_VPANDNQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21512, 240}, + {I_VPANDNQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21520, 240}, + {I_VPANDNQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21528, 240}, + {I_VPANDNQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21536, 241}, + {I_VPANDNQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21544, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPANDQ[] = { + {I_VPANDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21552, 240}, + {I_VPANDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21560, 240}, + {I_VPANDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21568, 240}, + {I_VPANDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21576, 240}, + {I_VPANDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21584, 241}, + {I_VPANDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21592, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBLENDMB[] = { + {I_VPBLENDMB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21696, 244}, + {I_VPBLENDMB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21704, 244}, + {I_VPBLENDMB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21712, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBLENDMD[] = { + {I_VPBLENDMD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21720, 240}, + {I_VPBLENDMD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21728, 240}, + {I_VPBLENDMD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21736, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBLENDMQ[] = { + {I_VPBLENDMQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21744, 240}, + {I_VPBLENDMQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21752, 240}, + {I_VPBLENDMQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21760, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBLENDMW[] = { + {I_VPBLENDMW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21768, 244}, + {I_VPBLENDMW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21776, 244}, + {I_VPBLENDMW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21784, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBROADCASTMB2Q[] = { + {I_VPBROADCASTMB2Q, 2, {XMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+21912, 248}, + {I_VPBROADCASTMB2Q, 2, {YMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+21920, 248}, + {I_VPBROADCASTMB2Q, 2, {ZMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+21928, 249}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPBROADCASTMW2D[] = { + {I_VPBROADCASTMW2D, 2, {XMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+21936, 248}, + {I_VPBROADCASTMW2D, 2, {YMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+21944, 248}, + {I_VPBROADCASTMW2D, 2, {ZMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+21952, 249}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPEQUB[] = { + {I_VPCMPEQUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2890, 244}, + {I_VPCMPEQUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2900, 244}, + {I_VPCMPEQUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2910, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPEQUD[] = { + {I_VPCMPEQUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2920, 240}, + {I_VPCMPEQUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2930, 240}, + {I_VPCMPEQUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2940, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPEQUQ[] = { + {I_VPCMPEQUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2950, 240}, + {I_VPCMPEQUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2960, 240}, + {I_VPCMPEQUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2970, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPEQUW[] = { + {I_VPCMPEQUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2980, 244}, + {I_VPCMPEQUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2990, 244}, + {I_VPCMPEQUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3000, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGEB[] = { + {I_VPCMPGEB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3040, 244}, + {I_VPCMPGEB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3050, 244}, + {I_VPCMPGEB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3060, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGED[] = { + {I_VPCMPGED, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3070, 240}, + {I_VPCMPGED, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3080, 240}, + {I_VPCMPGED, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3090, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGEQ[] = { + {I_VPCMPGEQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3100, 240}, + {I_VPCMPGEQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3110, 240}, + {I_VPCMPGEQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3120, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGEUB[] = { + {I_VPCMPGEUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3130, 244}, + {I_VPCMPGEUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3140, 244}, + {I_VPCMPGEUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3150, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGEUD[] = { + {I_VPCMPGEUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3160, 240}, + {I_VPCMPGEUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3170, 240}, + {I_VPCMPGEUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3180, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGEUQ[] = { + {I_VPCMPGEUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3190, 240}, + {I_VPCMPGEUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3200, 240}, + {I_VPCMPGEUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3210, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGEUW[] = { + {I_VPCMPGEUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3220, 244}, + {I_VPCMPGEUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3230, 244}, + {I_VPCMPGEUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3240, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGEW[] = { + {I_VPCMPGEW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3250, 244}, + {I_VPCMPGEW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3260, 244}, + {I_VPCMPGEW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3270, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGTUB[] = { + {I_VPCMPGTUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3370, 244}, + {I_VPCMPGTUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3380, 244}, + {I_VPCMPGTUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3390, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGTUD[] = { + {I_VPCMPGTUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3400, 240}, + {I_VPCMPGTUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3410, 240}, + {I_VPCMPGTUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3420, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGTUQ[] = { + {I_VPCMPGTUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3430, 240}, + {I_VPCMPGTUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3440, 240}, + {I_VPCMPGTUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3450, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPGTUW[] = { + {I_VPCMPGTUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3460, 244}, + {I_VPCMPGTUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3470, 244}, + {I_VPCMPGTUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3480, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLEB[] = { + {I_VPCMPLEB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3520, 244}, + {I_VPCMPLEB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3530, 244}, + {I_VPCMPLEB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3540, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLED[] = { + {I_VPCMPLED, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3550, 240}, + {I_VPCMPLED, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3560, 240}, + {I_VPCMPLED, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3570, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLEQ[] = { + {I_VPCMPLEQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3580, 240}, + {I_VPCMPLEQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3590, 240}, + {I_VPCMPLEQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3600, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLEUB[] = { + {I_VPCMPLEUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3610, 244}, + {I_VPCMPLEUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3620, 244}, + {I_VPCMPLEUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3630, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLEUD[] = { + {I_VPCMPLEUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3640, 240}, + {I_VPCMPLEUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3650, 240}, + {I_VPCMPLEUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3660, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLEUQ[] = { + {I_VPCMPLEUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3670, 240}, + {I_VPCMPLEUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3680, 240}, + {I_VPCMPLEUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3690, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLEUW[] = { + {I_VPCMPLEUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3700, 244}, + {I_VPCMPLEUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3710, 244}, + {I_VPCMPLEUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3720, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLEW[] = { + {I_VPCMPLEW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3730, 244}, + {I_VPCMPLEW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3740, 244}, + {I_VPCMPLEW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3750, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLTB[] = { + {I_VPCMPLTB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3760, 244}, + {I_VPCMPLTB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3770, 244}, + {I_VPCMPLTB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3780, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLTD[] = { + {I_VPCMPLTD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3790, 240}, + {I_VPCMPLTD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3800, 240}, + {I_VPCMPLTD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3810, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLTQ[] = { + {I_VPCMPLTQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3820, 240}, + {I_VPCMPLTQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3830, 240}, + {I_VPCMPLTQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3840, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLTUB[] = { + {I_VPCMPLTUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3850, 244}, + {I_VPCMPLTUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3860, 244}, + {I_VPCMPLTUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3870, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLTUD[] = { + {I_VPCMPLTUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3880, 240}, + {I_VPCMPLTUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3890, 240}, + {I_VPCMPLTUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3900, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLTUQ[] = { + {I_VPCMPLTUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3910, 240}, + {I_VPCMPLTUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3920, 240}, + {I_VPCMPLTUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3930, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLTUW[] = { + {I_VPCMPLTUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3940, 244}, + {I_VPCMPLTUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3950, 244}, + {I_VPCMPLTUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3960, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPLTW[] = { + {I_VPCMPLTW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3970, 244}, + {I_VPCMPLTW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3980, 244}, + {I_VPCMPLTW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3990, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNEQB[] = { + {I_VPCMPNEQB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4000, 244}, + {I_VPCMPNEQB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4010, 244}, + {I_VPCMPNEQB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4020, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNEQD[] = { + {I_VPCMPNEQD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+4030, 240}, + {I_VPCMPNEQD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+4040, 240}, + {I_VPCMPNEQD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+4050, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNEQQ[] = { + {I_VPCMPNEQQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+4060, 240}, + {I_VPCMPNEQQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+4070, 240}, + {I_VPCMPNEQQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+4080, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNEQUB[] = { + {I_VPCMPNEQUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4090, 244}, + {I_VPCMPNEQUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4100, 244}, + {I_VPCMPNEQUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4110, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNEQUD[] = { + {I_VPCMPNEQUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+4120, 240}, + {I_VPCMPNEQUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+4130, 240}, + {I_VPCMPNEQUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+4140, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNEQUQ[] = { + {I_VPCMPNEQUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+4150, 240}, + {I_VPCMPNEQUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+4160, 240}, + {I_VPCMPNEQUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+4170, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNEQUW[] = { + {I_VPCMPNEQUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4180, 244}, + {I_VPCMPNEQUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4190, 244}, + {I_VPCMPNEQUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4200, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNEQW[] = { + {I_VPCMPNEQW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4210, 244}, + {I_VPCMPNEQW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4220, 244}, + {I_VPCMPNEQW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4230, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNGTB[] = { + {I_VPCMPNGTB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3520, 244}, + {I_VPCMPNGTB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3530, 244}, + {I_VPCMPNGTB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3540, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNGTD[] = { + {I_VPCMPNGTD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3550, 240}, + {I_VPCMPNGTD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3560, 240}, + {I_VPCMPNGTD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3570, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNGTQ[] = { + {I_VPCMPNGTQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3580, 240}, + {I_VPCMPNGTQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3590, 240}, + {I_VPCMPNGTQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3600, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNGTUB[] = { + {I_VPCMPNGTUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3610, 244}, + {I_VPCMPNGTUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3620, 244}, + {I_VPCMPNGTUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3630, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNGTUD[] = { + {I_VPCMPNGTUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3640, 240}, + {I_VPCMPNGTUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3650, 240}, + {I_VPCMPNGTUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3660, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNGTUQ[] = { + {I_VPCMPNGTUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3670, 240}, + {I_VPCMPNGTUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3680, 240}, + {I_VPCMPNGTUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3690, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNGTUW[] = { + {I_VPCMPNGTUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3700, 244}, + {I_VPCMPNGTUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3710, 244}, + {I_VPCMPNGTUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3720, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNGTW[] = { + {I_VPCMPNGTW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3730, 244}, + {I_VPCMPNGTW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3740, 244}, + {I_VPCMPNGTW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3750, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLEB[] = { + {I_VPCMPNLEB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3280, 244}, + {I_VPCMPNLEB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3290, 244}, + {I_VPCMPNLEB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3300, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLED[] = { + {I_VPCMPNLED, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3310, 240}, + {I_VPCMPNLED, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3320, 240}, + {I_VPCMPNLED, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3330, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLEQ[] = { + {I_VPCMPNLEQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3340, 240}, + {I_VPCMPNLEQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3350, 240}, + {I_VPCMPNLEQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3360, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLEUB[] = { + {I_VPCMPNLEUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3370, 244}, + {I_VPCMPNLEUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3380, 244}, + {I_VPCMPNLEUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3390, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLEUD[] = { + {I_VPCMPNLEUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3400, 240}, + {I_VPCMPNLEUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3410, 240}, + {I_VPCMPNLEUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3420, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLEUQ[] = { + {I_VPCMPNLEUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3430, 240}, + {I_VPCMPNLEUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3440, 240}, + {I_VPCMPNLEUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3450, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLEUW[] = { + {I_VPCMPNLEUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3460, 244}, + {I_VPCMPNLEUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3470, 244}, + {I_VPCMPNLEUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3480, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLEW[] = { + {I_VPCMPNLEW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3490, 244}, + {I_VPCMPNLEW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3500, 244}, + {I_VPCMPNLEW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3510, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLTB[] = { + {I_VPCMPNLTB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3040, 244}, + {I_VPCMPNLTB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3050, 244}, + {I_VPCMPNLTB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3060, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLTD[] = { + {I_VPCMPNLTD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3070, 240}, + {I_VPCMPNLTD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3080, 240}, + {I_VPCMPNLTD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3090, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLTQ[] = { + {I_VPCMPNLTQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3100, 240}, + {I_VPCMPNLTQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3110, 240}, + {I_VPCMPNLTQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3120, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLTUB[] = { + {I_VPCMPNLTUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3130, 244}, + {I_VPCMPNLTUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3140, 244}, + {I_VPCMPNLTUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3150, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLTUD[] = { + {I_VPCMPNLTUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3160, 240}, + {I_VPCMPNLTUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3170, 240}, + {I_VPCMPNLTUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3180, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLTUQ[] = { + {I_VPCMPNLTUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3190, 240}, + {I_VPCMPNLTUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3200, 240}, + {I_VPCMPNLTUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3210, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLTUW[] = { + {I_VPCMPNLTUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3220, 244}, + {I_VPCMPNLTUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3230, 244}, + {I_VPCMPNLTUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3240, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPNLTW[] = { + {I_VPCMPNLTW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3250, 244}, + {I_VPCMPNLTW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3260, 244}, + {I_VPCMPNLTW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3270, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPB[] = { + {I_VPCMPB, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9244, 244}, + {I_VPCMPB, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9253, 244}, + {I_VPCMPB, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9262, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPD[] = { + {I_VPCMPD, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+9271, 240}, + {I_VPCMPD, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+9280, 240}, + {I_VPCMPD, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+9289, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPQ[] = { + {I_VPCMPQ, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+9298, 240}, + {I_VPCMPQ, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+9307, 240}, + {I_VPCMPQ, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+9316, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPUB[] = { + {I_VPCMPUB, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9325, 244}, + {I_VPCMPUB, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9334, 244}, + {I_VPCMPUB, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9343, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPUD[] = { + {I_VPCMPUD, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+9352, 240}, + {I_VPCMPUD, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+9361, 240}, + {I_VPCMPUD, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+9370, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPUQ[] = { + {I_VPCMPUQ, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+9379, 240}, + {I_VPCMPUQ, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+9388, 240}, + {I_VPCMPUQ, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+9397, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPUW[] = { + {I_VPCMPUW, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9406, 244}, + {I_VPCMPUW, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9415, 244}, + {I_VPCMPUW, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9424, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCMPW[] = { + {I_VPCMPW, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9433, 244}, + {I_VPCMPW, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9442, 244}, + {I_VPCMPW, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9451, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCOMPRESSD[] = { + {I_VPCOMPRESSD, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22272, 240}, + {I_VPCOMPRESSD, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22280, 240}, + {I_VPCOMPRESSD, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22288, 241}, + {I_VPCOMPRESSD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22296, 240}, + {I_VPCOMPRESSD, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22304, 240}, + {I_VPCOMPRESSD, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22312, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCOMPRESSQ[] = { + {I_VPCOMPRESSQ, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22320, 240}, + {I_VPCOMPRESSQ, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22328, 240}, + {I_VPCOMPRESSQ, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22336, 241}, + {I_VPCOMPRESSQ, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22344, 240}, + {I_VPCOMPRESSQ, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22352, 240}, + {I_VPCOMPRESSQ, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22360, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCONFLICTD[] = { + {I_VPCONFLICTD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22368, 248}, + {I_VPCONFLICTD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22376, 248}, + {I_VPCONFLICTD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22384, 249}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCONFLICTQ[] = { + {I_VPCONFLICTQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22392, 248}, + {I_VPCONFLICTQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22400, 248}, + {I_VPCONFLICTQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22408, 249}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMB[] = { + {I_VPERMB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22416, 250}, + {I_VPERMB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22424, 250}, + {I_VPERMB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22432, 250}, + {I_VPERMB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22440, 250}, + {I_VPERMB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22448, 251}, + {I_VPERMB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22456, 251}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMI2B[] = { + {I_VPERMI2B, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22496, 250}, + {I_VPERMI2B, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22504, 250}, + {I_VPERMI2B, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22512, 251}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMI2D[] = { + {I_VPERMI2D, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22520, 240}, + {I_VPERMI2D, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22528, 240}, + {I_VPERMI2D, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22536, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMI2PD[] = { + {I_VPERMI2PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22544, 240}, + {I_VPERMI2PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22552, 240}, + {I_VPERMI2PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22560, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMI2PS[] = { + {I_VPERMI2PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22568, 240}, + {I_VPERMI2PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22576, 240}, + {I_VPERMI2PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22584, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMI2Q[] = { + {I_VPERMI2Q, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22592, 240}, + {I_VPERMI2Q, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22600, 240}, + {I_VPERMI2Q, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22608, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMI2W[] = { + {I_VPERMI2W, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22616, 244}, + {I_VPERMI2W, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22624, 244}, + {I_VPERMI2W, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22632, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMT2B[] = { + {I_VPERMT2B, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22832, 250}, + {I_VPERMT2B, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22840, 250}, + {I_VPERMT2B, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22848, 251}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMT2D[] = { + {I_VPERMT2D, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22856, 240}, + {I_VPERMT2D, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22864, 240}, + {I_VPERMT2D, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22872, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMT2PD[] = { + {I_VPERMT2PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22880, 240}, + {I_VPERMT2PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22888, 240}, + {I_VPERMT2PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22896, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMT2PS[] = { + {I_VPERMT2PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22904, 240}, + {I_VPERMT2PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22912, 240}, + {I_VPERMT2PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22920, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMT2Q[] = { + {I_VPERMT2Q, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22928, 240}, + {I_VPERMT2Q, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22936, 240}, + {I_VPERMT2Q, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22944, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMT2W[] = { + {I_VPERMT2W, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22952, 244}, + {I_VPERMT2W, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22960, 244}, + {I_VPERMT2W, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22968, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPERMW[] = { + {I_VPERMW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22976, 244}, + {I_VPERMW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22984, 244}, + {I_VPERMW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22992, 244}, + {I_VPERMW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23000, 244}, + {I_VPERMW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23008, 245}, + {I_VPERMW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23016, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPEXPANDD[] = { + {I_VPEXPANDD, 2, {XMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23024, 240}, + {I_VPEXPANDD, 2, {YMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23032, 240}, + {I_VPEXPANDD, 2, {ZMMREG,MEMORY|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23040, 241}, + {I_VPEXPANDD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23024, 240}, + {I_VPEXPANDD, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23032, 240}, + {I_VPEXPANDD, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23040, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPEXPANDQ[] = { + {I_VPEXPANDQ, 2, {XMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23048, 240}, + {I_VPEXPANDQ, 2, {YMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23056, 240}, + {I_VPEXPANDQ, 2, {ZMMREG,MEMORY|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23064, 241}, + {I_VPEXPANDQ, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23048, 240}, + {I_VPEXPANDQ, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23056, 240}, + {I_VPEXPANDQ, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23064, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPLZCNTD[] = { + {I_VPLZCNTD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23072, 248}, + {I_VPLZCNTD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23080, 248}, + {I_VPLZCNTD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23088, 249}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPLZCNTQ[] = { + {I_VPLZCNTQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23096, 248}, + {I_VPLZCNTQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23104, 248}, + {I_VPLZCNTQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23112, 249}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMAXSQ[] = { + {I_VPMAXSQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23360, 240}, + {I_VPMAXSQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23368, 240}, + {I_VPMAXSQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23376, 240}, + {I_VPMAXSQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23384, 240}, + {I_VPMAXSQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23392, 241}, + {I_VPMAXSQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23400, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMAXUQ[] = { + {I_VPMAXUQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23552, 240}, + {I_VPMAXUQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23560, 240}, + {I_VPMAXUQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23568, 240}, + {I_VPMAXUQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23576, 240}, + {I_VPMAXUQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23584, 241}, + {I_VPMAXUQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23592, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMINSQ[] = { + {I_VPMINSQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23744, 240}, + {I_VPMINSQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23752, 240}, + {I_VPMINSQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23760, 240}, + {I_VPMINSQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23768, 240}, + {I_VPMINSQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23776, 241}, + {I_VPMINSQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23784, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMINUQ[] = { + {I_VPMINUQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23936, 240}, + {I_VPMINUQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23944, 240}, + {I_VPMINUQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23952, 240}, + {I_VPMINUQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23960, 240}, + {I_VPMINUQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23968, 241}, + {I_VPMINUQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23976, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVB2M[] = { + {I_VPMOVB2M, 2, {KREG,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24032, 244}, + {I_VPMOVB2M, 2, {KREG,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24040, 244}, + {I_VPMOVB2M, 2, {KREG,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24048, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVD2M[] = { + {I_VPMOVD2M, 2, {KREG,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24056, 242}, + {I_VPMOVD2M, 2, {KREG,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24064, 242}, + {I_VPMOVD2M, 2, {KREG,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24072, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVDB[] = { + {I_VPMOVDB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24080, 240}, + {I_VPMOVDB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24088, 240}, + {I_VPMOVDB, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24096, 241}, + {I_VPMOVDB, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24104, 240}, + {I_VPMOVDB, 2, {MEMORY|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24112, 240}, + {I_VPMOVDB, 2, {MEMORY|BITS128,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24120, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVDW[] = { + {I_VPMOVDW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24128, 240}, + {I_VPMOVDW, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24136, 240}, + {I_VPMOVDW, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24144, 241}, + {I_VPMOVDW, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24152, 240}, + {I_VPMOVDW, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24160, 240}, + {I_VPMOVDW, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24168, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVM2B[] = { + {I_VPMOVM2B, 2, {XMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24176, 244}, + {I_VPMOVM2B, 2, {YMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24184, 244}, + {I_VPMOVM2B, 2, {ZMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24192, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVM2D[] = { + {I_VPMOVM2D, 2, {XMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24200, 242}, + {I_VPMOVM2D, 2, {YMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24208, 242}, + {I_VPMOVM2D, 2, {ZMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24216, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVM2Q[] = { + {I_VPMOVM2Q, 2, {XMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24224, 242}, + {I_VPMOVM2Q, 2, {YMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24232, 242}, + {I_VPMOVM2Q, 2, {ZMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24240, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVM2W[] = { + {I_VPMOVM2W, 2, {XMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24248, 244}, + {I_VPMOVM2W, 2, {YMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24256, 244}, + {I_VPMOVM2W, 2, {ZMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24264, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVQ2M[] = { + {I_VPMOVQ2M, 2, {KREG,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24272, 242}, + {I_VPMOVQ2M, 2, {KREG,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24280, 242}, + {I_VPMOVQ2M, 2, {KREG,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24288, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVQB[] = { + {I_VPMOVQB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24296, 240}, + {I_VPMOVQB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24304, 240}, + {I_VPMOVQB, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24312, 241}, + {I_VPMOVQB, 2, {MEMORY|BITS16,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24320, 240}, + {I_VPMOVQB, 2, {MEMORY|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24328, 240}, + {I_VPMOVQB, 2, {MEMORY|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24336, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVQD[] = { + {I_VPMOVQD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24344, 240}, + {I_VPMOVQD, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24352, 240}, + {I_VPMOVQD, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24360, 241}, + {I_VPMOVQD, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24368, 240}, + {I_VPMOVQD, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24376, 240}, + {I_VPMOVQD, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24384, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVQW[] = { + {I_VPMOVQW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24392, 240}, + {I_VPMOVQW, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24400, 240}, + {I_VPMOVQW, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24408, 241}, + {I_VPMOVQW, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24416, 240}, + {I_VPMOVQW, 2, {MEMORY|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24424, 240}, + {I_VPMOVQW, 2, {MEMORY|BITS128,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24432, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVSDB[] = { + {I_VPMOVSDB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24440, 240}, + {I_VPMOVSDB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24448, 240}, + {I_VPMOVSDB, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24456, 241}, + {I_VPMOVSDB, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24464, 240}, + {I_VPMOVSDB, 2, {MEMORY|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24472, 240}, + {I_VPMOVSDB, 2, {MEMORY|BITS128,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24480, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVSDW[] = { + {I_VPMOVSDW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24488, 240}, + {I_VPMOVSDW, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24496, 240}, + {I_VPMOVSDW, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24504, 241}, + {I_VPMOVSDW, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24512, 240}, + {I_VPMOVSDW, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24520, 240}, + {I_VPMOVSDW, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24528, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVSQB[] = { + {I_VPMOVSQB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24536, 240}, + {I_VPMOVSQB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24544, 240}, + {I_VPMOVSQB, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24552, 241}, + {I_VPMOVSQB, 2, {MEMORY|BITS16,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24560, 240}, + {I_VPMOVSQB, 2, {MEMORY|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24568, 240}, + {I_VPMOVSQB, 2, {MEMORY|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24576, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVSQD[] = { + {I_VPMOVSQD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24584, 240}, + {I_VPMOVSQD, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24592, 240}, + {I_VPMOVSQD, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24600, 241}, + {I_VPMOVSQD, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24608, 240}, + {I_VPMOVSQD, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24616, 240}, + {I_VPMOVSQD, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24624, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVSQW[] = { + {I_VPMOVSQW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24632, 240}, + {I_VPMOVSQW, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24640, 240}, + {I_VPMOVSQW, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24648, 241}, + {I_VPMOVSQW, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24656, 240}, + {I_VPMOVSQW, 2, {MEMORY|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24664, 240}, + {I_VPMOVSQW, 2, {MEMORY|BITS128,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24672, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVSWB[] = { + {I_VPMOVSWB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24680, 244}, + {I_VPMOVSWB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24688, 244}, + {I_VPMOVSWB, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24696, 245}, + {I_VPMOVSWB, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24704, 244}, + {I_VPMOVSWB, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24712, 244}, + {I_VPMOVSWB, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24720, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVUSDB[] = { + {I_VPMOVUSDB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24872, 240}, + {I_VPMOVUSDB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24880, 240}, + {I_VPMOVUSDB, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24888, 241}, + {I_VPMOVUSDB, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24896, 240}, + {I_VPMOVUSDB, 2, {MEMORY|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24904, 240}, + {I_VPMOVUSDB, 2, {MEMORY|BITS128,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24912, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVUSDW[] = { + {I_VPMOVUSDW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24920, 240}, + {I_VPMOVUSDW, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24928, 240}, + {I_VPMOVUSDW, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24936, 241}, + {I_VPMOVUSDW, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24944, 240}, + {I_VPMOVUSDW, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24952, 240}, + {I_VPMOVUSDW, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24960, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVUSQB[] = { + {I_VPMOVUSQB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24968, 240}, + {I_VPMOVUSQB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24976, 240}, + {I_VPMOVUSQB, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24984, 241}, + {I_VPMOVUSQB, 2, {MEMORY|BITS16,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24992, 240}, + {I_VPMOVUSQB, 2, {MEMORY|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25000, 240}, + {I_VPMOVUSQB, 2, {MEMORY|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25008, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVUSQD[] = { + {I_VPMOVUSQD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25016, 240}, + {I_VPMOVUSQD, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25024, 240}, + {I_VPMOVUSQD, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25032, 241}, + {I_VPMOVUSQD, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25040, 240}, + {I_VPMOVUSQD, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25048, 240}, + {I_VPMOVUSQD, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25056, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVUSQW[] = { + {I_VPMOVUSQW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25064, 240}, + {I_VPMOVUSQW, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25072, 240}, + {I_VPMOVUSQW, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25080, 241}, + {I_VPMOVUSQW, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25088, 240}, + {I_VPMOVUSQW, 2, {MEMORY|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25096, 240}, + {I_VPMOVUSQW, 2, {MEMORY|BITS128,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25104, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVUSWB[] = { + {I_VPMOVUSWB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25112, 244}, + {I_VPMOVUSWB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25120, 244}, + {I_VPMOVUSWB, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25128, 245}, + {I_VPMOVUSWB, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25136, 244}, + {I_VPMOVUSWB, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25144, 244}, + {I_VPMOVUSWB, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25152, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVW2M[] = { + {I_VPMOVW2M, 2, {KREG,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+25160, 244}, + {I_VPMOVW2M, 2, {KREG,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+25168, 244}, + {I_VPMOVW2M, 2, {KREG,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+25176, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMOVWB[] = { + {I_VPMOVWB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25184, 244}, + {I_VPMOVWB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25192, 244}, + {I_VPMOVWB, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25200, 245}, + {I_VPMOVWB, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25208, 244}, + {I_VPMOVWB, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25216, 244}, + {I_VPMOVWB, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25224, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMULLQ[] = { + {I_VPMULLQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25616, 242}, + {I_VPMULLQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25624, 242}, + {I_VPMULLQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25632, 242}, + {I_VPMULLQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25640, 242}, + {I_VPMULLQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25648, 243}, + {I_VPMULLQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25656, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMULTISHIFTQB[] = { + {I_VPMULTISHIFTQB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25712, 250}, + {I_VPMULTISHIFTQB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25720, 250}, + {I_VPMULTISHIFTQB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25728, 250}, + {I_VPMULTISHIFTQB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25736, 250}, + {I_VPMULTISHIFTQB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25744, 251}, + {I_VPMULTISHIFTQB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25752, 251}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPORD[] = { + {I_VPORD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25808, 240}, + {I_VPORD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25816, 240}, + {I_VPORD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25824, 240}, + {I_VPORD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25832, 240}, + {I_VPORD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25840, 241}, + {I_VPORD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25848, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPORQ[] = { + {I_VPORQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25856, 240}, + {I_VPORQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25864, 240}, + {I_VPORQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25872, 240}, + {I_VPORQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25880, 240}, + {I_VPORQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25888, 241}, + {I_VPORQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25896, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPROLD[] = { + {I_VPROLD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9775, 240}, + {I_VPROLD, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9784, 240}, + {I_VPROLD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9793, 240}, + {I_VPROLD, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9802, 240}, + {I_VPROLD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9811, 241}, + {I_VPROLD, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9820, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPROLQ[] = { + {I_VPROLQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9829, 240}, + {I_VPROLQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9838, 240}, + {I_VPROLQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9847, 240}, + {I_VPROLQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9856, 240}, + {I_VPROLQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9865, 241}, + {I_VPROLQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9874, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPROLVD[] = { + {I_VPROLVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25904, 240}, + {I_VPROLVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25912, 240}, + {I_VPROLVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25920, 240}, + {I_VPROLVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25928, 240}, + {I_VPROLVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25936, 241}, + {I_VPROLVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25944, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPROLVQ[] = { + {I_VPROLVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25952, 240}, + {I_VPROLVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25960, 240}, + {I_VPROLVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25968, 240}, + {I_VPROLVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25976, 240}, + {I_VPROLVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25984, 241}, + {I_VPROLVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25992, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPRORD[] = { + {I_VPRORD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9883, 240}, + {I_VPRORD, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9892, 240}, + {I_VPRORD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9901, 240}, + {I_VPRORD, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9910, 240}, + {I_VPRORD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9919, 241}, + {I_VPRORD, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9928, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPRORQ[] = { + {I_VPRORQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9937, 240}, + {I_VPRORQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9946, 240}, + {I_VPRORQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9955, 240}, + {I_VPRORQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9964, 240}, + {I_VPRORQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9973, 241}, + {I_VPRORQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9982, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPRORVD[] = { + {I_VPRORVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26000, 240}, + {I_VPRORVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26008, 240}, + {I_VPRORVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26016, 240}, + {I_VPRORVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26024, 240}, + {I_VPRORVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26032, 241}, + {I_VPRORVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26040, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPRORVQ[] = { + {I_VPRORVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26048, 240}, + {I_VPRORVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26056, 240}, + {I_VPRORVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26064, 240}, + {I_VPRORVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26072, 240}, + {I_VPRORVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26080, 241}, + {I_VPRORVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26088, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSCATTERDD[] = { + {I_VPSCATTERDD, 2, {XMEM|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9991, 240}, + {I_VPSCATTERDD, 2, {YMEM|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10000, 240}, + {I_VPSCATTERDD, 2, {ZMEM|BITS32,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10009, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSCATTERDQ[] = { + {I_VPSCATTERDQ, 2, {XMEM|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10018, 240}, + {I_VPSCATTERDQ, 2, {XMEM|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10027, 240}, + {I_VPSCATTERDQ, 2, {YMEM|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10036, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSCATTERQD[] = { + {I_VPSCATTERQD, 2, {XMEM|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10045, 240}, + {I_VPSCATTERQD, 2, {YMEM|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10054, 240}, + {I_VPSCATTERQD, 2, {ZMEM|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10063, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSCATTERQQ[] = { + {I_VPSCATTERQQ, 2, {XMEM|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10072, 240}, + {I_VPSCATTERQQ, 2, {YMEM|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10081, 240}, + {I_VPSCATTERQQ, 2, {ZMEM|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10090, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSLLVW[] = { + {I_VPSLLVW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26384, 244}, + {I_VPSLLVW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26392, 244}, + {I_VPSLLVW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26400, 244}, + {I_VPSLLVW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26408, 244}, + {I_VPSLLVW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26416, 245}, + {I_VPSLLVW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26424, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRAQ[] = { + {I_VPSRAQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26528, 240}, + {I_VPSRAQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26536, 240}, + {I_VPSRAQ, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26544, 240}, + {I_VPSRAQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26552, 240}, + {I_VPSRAQ, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26560, 241}, + {I_VPSRAQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26568, 241}, + {I_VPSRAQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10450, 240}, + {I_VPSRAQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10459, 240}, + {I_VPSRAQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10468, 240}, + {I_VPSRAQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10477, 240}, + {I_VPSRAQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10486, 241}, + {I_VPSRAQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10495, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRAVQ[] = { + {I_VPSRAVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26624, 240}, + {I_VPSRAVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26632, 240}, + {I_VPSRAVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26640, 240}, + {I_VPSRAVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26648, 240}, + {I_VPSRAVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26656, 241}, + {I_VPSRAVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26664, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRAVW[] = { + {I_VPSRAVW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26672, 244}, + {I_VPSRAVW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26680, 244}, + {I_VPSRAVW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26688, 244}, + {I_VPSRAVW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26696, 244}, + {I_VPSRAVW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26704, 245}, + {I_VPSRAVW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26712, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSRLVW[] = { + {I_VPSRLVW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26960, 244}, + {I_VPSRLVW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26968, 244}, + {I_VPSRLVW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26976, 244}, + {I_VPSRLVW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26984, 244}, + {I_VPSRLVW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26992, 245}, + {I_VPSRLVW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27000, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPTERNLOGD[] = { + {I_VPTERNLOGD, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+10774, 240}, + {I_VPTERNLOGD, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+10783, 240}, + {I_VPTERNLOGD, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+10792, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPTERNLOGQ[] = { + {I_VPTERNLOGQ, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+10801, 240}, + {I_VPTERNLOGQ, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+10810, 240}, + {I_VPTERNLOGQ, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+10819, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPTESTMB[] = { + {I_VPTESTMB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27440, 244}, + {I_VPTESTMB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27448, 244}, + {I_VPTESTMB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27456, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPTESTMD[] = { + {I_VPTESTMD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+27464, 240}, + {I_VPTESTMD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+27472, 240}, + {I_VPTESTMD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+27480, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPTESTMQ[] = { + {I_VPTESTMQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+27488, 240}, + {I_VPTESTMQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+27496, 240}, + {I_VPTESTMQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+27504, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPTESTMW[] = { + {I_VPTESTMW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27512, 244}, + {I_VPTESTMW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27520, 244}, + {I_VPTESTMW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27528, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPTESTNMB[] = { + {I_VPTESTNMB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27536, 244}, + {I_VPTESTNMB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27544, 244}, + {I_VPTESTNMB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27552, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPTESTNMD[] = { + {I_VPTESTNMD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+27560, 240}, + {I_VPTESTNMD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+27568, 240}, + {I_VPTESTNMD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+27576, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPTESTNMQ[] = { + {I_VPTESTNMQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+27584, 240}, + {I_VPTESTNMQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+27592, 240}, + {I_VPTESTNMQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+27600, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPTESTNMW[] = { + {I_VPTESTNMW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27608, 244}, + {I_VPTESTNMW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27616, 244}, + {I_VPTESTNMW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27624, 245}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPXORD[] = { + {I_VPXORD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28016, 240}, + {I_VPXORD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28024, 240}, + {I_VPXORD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28032, 240}, + {I_VPXORD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28040, 240}, + {I_VPXORD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28048, 241}, + {I_VPXORD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28056, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPXORQ[] = { + {I_VPXORQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28064, 240}, + {I_VPXORQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28072, 240}, + {I_VPXORQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28080, 240}, + {I_VPXORQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28088, 240}, + {I_VPXORQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28096, 241}, + {I_VPXORQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28104, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRANGEPD[] = { + {I_VRANGEPD, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+10828, 242}, + {I_VRANGEPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10837, 242}, + {I_VRANGEPD, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+10846, 242}, + {I_VRANGEPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10855, 242}, + {I_VRANGEPD, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64|SAE,0,0}, nasm_bytecodes+10864, 243}, + {I_VRANGEPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+10873, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRANGEPS[] = { + {I_VRANGEPS, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+10882, 242}, + {I_VRANGEPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10891, 242}, + {I_VRANGEPS, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+10900, 242}, + {I_VRANGEPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10909, 242}, + {I_VRANGEPS, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32|SAE,0,0}, nasm_bytecodes+10918, 243}, + {I_VRANGEPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+10927, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRANGESD[] = { + {I_VRANGESD, 4, {XMMREG,XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+10936, 243}, + {I_VRANGESD, 3, {XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+10945, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRANGESS[] = { + {I_VRANGESS, 4, {XMMREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+10954, 243}, + {I_VRANGESS, 3, {XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+10963, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRCP14PD[] = { + {I_VRCP14PD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28112, 240}, + {I_VRCP14PD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28120, 240}, + {I_VRCP14PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28128, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRCP14PS[] = { + {I_VRCP14PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28136, 240}, + {I_VRCP14PS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28144, 240}, + {I_VRCP14PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28152, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRCP14SD[] = { + {I_VRCP14SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28160, 241}, + {I_VRCP14SD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28168, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRCP14SS[] = { + {I_VRCP14SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28176, 241}, + {I_VRCP14SS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28184, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRCP28PD[] = { + {I_VRCP28PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+28192, 246}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRCP28PS[] = { + {I_VRCP28PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+28200, 246}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRCP28SD[] = { + {I_VRCP28SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+28208, 246}, + {I_VRCP28SD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+28216, 246}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRCP28SS[] = { + {I_VRCP28SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+28224, 246}, + {I_VRCP28SS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+28232, 246}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VREDUCEPD[] = { + {I_VREDUCEPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10972, 242}, + {I_VREDUCEPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10981, 242}, + {I_VREDUCEPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+10990, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VREDUCEPS[] = { + {I_VREDUCEPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10999, 242}, + {I_VREDUCEPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11008, 242}, + {I_VREDUCEPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+11017, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VREDUCESD[] = { + {I_VREDUCESD, 4, {XMMREG,XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+11026, 243}, + {I_VREDUCESD, 3, {XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+11035, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VREDUCESS[] = { + {I_VREDUCESS, 4, {XMMREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+11044, 243}, + {I_VREDUCESS, 3, {XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+11053, 243}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRNDSCALEPD[] = { + {I_VRNDSCALEPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11062, 240}, + {I_VRNDSCALEPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11071, 240}, + {I_VRNDSCALEPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+11080, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRNDSCALEPS[] = { + {I_VRNDSCALEPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11089, 240}, + {I_VRNDSCALEPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11098, 240}, + {I_VRNDSCALEPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+11107, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRNDSCALESD[] = { + {I_VRNDSCALESD, 4, {XMMREG,XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+11116, 241}, + {I_VRNDSCALESD, 3, {XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+11125, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRNDSCALESS[] = { + {I_VRNDSCALESS, 4, {XMMREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+11134, 241}, + {I_VRNDSCALESS, 3, {XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+11143, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRSQRT14PD[] = { + {I_VRSQRT14PD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28240, 240}, + {I_VRSQRT14PD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28248, 240}, + {I_VRSQRT14PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28256, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRSQRT14PS[] = { + {I_VRSQRT14PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28264, 240}, + {I_VRSQRT14PS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28272, 240}, + {I_VRSQRT14PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28280, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRSQRT14SD[] = { + {I_VRSQRT14SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28288, 241}, + {I_VRSQRT14SD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28296, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRSQRT14SS[] = { + {I_VRSQRT14SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28304, 241}, + {I_VRSQRT14SS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28312, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRSQRT28PD[] = { + {I_VRSQRT28PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+28320, 246}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRSQRT28PS[] = { + {I_VRSQRT28PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+28328, 246}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRSQRT28SD[] = { + {I_VRSQRT28SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+28336, 246}, + {I_VRSQRT28SD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+28344, 246}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRSQRT28SS[] = { + {I_VRSQRT28SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+28352, 246}, + {I_VRSQRT28SS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+28360, 246}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCALEFPD[] = { + {I_VSCALEFPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28368, 240}, + {I_VSCALEFPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28376, 240}, + {I_VSCALEFPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28384, 240}, + {I_VSCALEFPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28392, 240}, + {I_VSCALEFPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+28400, 241}, + {I_VSCALEFPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+28408, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCALEFPS[] = { + {I_VSCALEFPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28416, 240}, + {I_VSCALEFPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28424, 240}, + {I_VSCALEFPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28432, 240}, + {I_VSCALEFPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28440, 240}, + {I_VSCALEFPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+28448, 241}, + {I_VSCALEFPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+28456, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCALEFSD[] = { + {I_VSCALEFSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+28464, 241}, + {I_VSCALEFSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+28472, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCALEFSS[] = { + {I_VSCALEFSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+28480, 241}, + {I_VSCALEFSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+28488, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCATTERDPD[] = { + {I_VSCATTERDPD, 2, {XMEM|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11152, 240}, + {I_VSCATTERDPD, 2, {XMEM|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11161, 240}, + {I_VSCATTERDPD, 2, {YMEM|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11170, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCATTERDPS[] = { + {I_VSCATTERDPS, 2, {XMEM|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11179, 240}, + {I_VSCATTERDPS, 2, {YMEM|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11188, 240}, + {I_VSCATTERDPS, 2, {ZMEM|BITS32,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11197, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCATTERPF0DPD[] = { + {I_VSCATTERPF0DPD, 1, {YMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11206, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCATTERPF0DPS[] = { + {I_VSCATTERPF0DPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11215, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCATTERPF0QPD[] = { + {I_VSCATTERPF0QPD, 1, {ZMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11224, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCATTERPF0QPS[] = { + {I_VSCATTERPF0QPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11233, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCATTERPF1DPD[] = { + {I_VSCATTERPF1DPD, 1, {YMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11242, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCATTERPF1DPS[] = { + {I_VSCATTERPF1DPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11251, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCATTERPF1QPD[] = { + {I_VSCATTERPF1QPD, 1, {ZMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11260, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCATTERPF1QPS[] = { + {I_VSCATTERPF1QPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11269, 247}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCATTERQPD[] = { + {I_VSCATTERQPD, 2, {XMEM|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11278, 240}, + {I_VSCATTERQPD, 2, {YMEM|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11287, 240}, + {I_VSCATTERQPD, 2, {ZMEM|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11296, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCATTERQPS[] = { + {I_VSCATTERQPS, 2, {XMEM|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11305, 240}, + {I_VSCATTERQPS, 2, {YMEM|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11314, 240}, + {I_VSCATTERQPS, 2, {ZMEM|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11323, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSHUFF32X4[] = { + {I_VSHUFF32X4, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11332, 240}, + {I_VSHUFF32X4, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11341, 240}, + {I_VSHUFF32X4, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11350, 241}, + {I_VSHUFF32X4, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11359, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSHUFF64X2[] = { + {I_VSHUFF64X2, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11368, 240}, + {I_VSHUFF64X2, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11377, 240}, + {I_VSHUFF64X2, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11386, 241}, + {I_VSHUFF64X2, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11395, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSHUFI32X4[] = { + {I_VSHUFI32X4, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11404, 240}, + {I_VSHUFI32X4, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11413, 240}, + {I_VSHUFI32X4, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11422, 241}, + {I_VSHUFI32X4, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11431, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSHUFI64X2[] = { + {I_VSHUFI64X2, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11440, 240}, + {I_VSHUFI64X2, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11449, 240}, + {I_VSHUFI64X2, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11458, 241}, + {I_VSHUFI64X2, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11467, 241}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDPKRU[] = { + {I_RDPKRU, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46072, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WRPKRU[] = { + {I_WRPKRU, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46078, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDPID[] = { + {I_RDPID, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42322, 254}, + {I_RDPID, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42321, 136}, + {I_RDPID, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42322, 255}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLFLUSHOPT[] = { + {I_CLFLUSHOPT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45951, 135}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLWB[] = { + {I_CLWB, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45957, 135}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCOMMIT[] = { + {I_PCOMMIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45963, 256}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLZERO[] = { + {I_CLZERO, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45982, 257}, + {I_CLZERO, 1, {REG_AX,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45969, 258}, + {I_CLZERO, 1, {REG_EAX,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45975, 257}, + {I_CLZERO, 1, {REG_RAX,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45981, 259}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PTWRITE[] = { + {I_PTWRITE, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34020, 135}, + {I_PTWRITE, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34019, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLDEMOTE[] = { + {I_CLDEMOTE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45987, 135}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVDIRI[] = { + {I_MOVDIRI, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42328, 260}, + {I_MOVDIRI, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42335, 261}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_MOVDIR64B[] = { + {I_MOVDIR64B, 2, {REG_GPR|BITS16,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29008, 254}, + {I_MOVDIR64B, 2, {REG_GPR|BITS32,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29016, 135}, + {I_MOVDIR64B, 2, {REG_GPR|BITS64,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+11584, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_PCONFIG[] = { + {I_PCONFIG, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45993, 135}, + {I_PCONFIG, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45993, 285}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TPAUSE[] = { + {I_TPAUSE, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45957, 135}, + {I_TPAUSE, 3, {REG_GPR|BITS32,REG_EDX,REG_EAX,0,0}, NO_DECORATOR, nasm_bytecodes+45957, 135}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UMONITOR[] = { + {I_UMONITOR, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42342, 254}, + {I_UMONITOR, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42349, 135}, + {I_UMONITOR, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+29024, 136}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UMWAIT[] = { + {I_UMWAIT, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45999, 135}, + {I_UMWAIT, 3, {REG_GPR|BITS32,REG_EDX,REG_EAX,0,0}, NO_DECORATOR, nasm_bytecodes+45999, 135}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WBNOINVD[] = { + {I_WBNOINVD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49182, 135}, + {I_WBNOINVD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49182, 287}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_GF2P8AFFINEINVQB[] = { + {I_GF2P8AFFINEINVQB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+29032, 262}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGF2P8AFFINEINVQB[] = { + {I_VGF2P8AFFINEINVQB, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+29040, 263}, + {I_VGF2P8AFFINEINVQB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+29048, 263}, + {I_VGF2P8AFFINEINVQB, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+29056, 263}, + {I_VGF2P8AFFINEINVQB, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+29064, 263}, + {I_VGF2P8AFFINEINVQB, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11593, 264}, + {I_VGF2P8AFFINEINVQB, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11602, 264}, + {I_VGF2P8AFFINEINVQB, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11611, 264}, + {I_VGF2P8AFFINEINVQB, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11620, 264}, + {I_VGF2P8AFFINEINVQB, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11629, 265}, + {I_VGF2P8AFFINEINVQB, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11638, 265}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_GF2P8AFFINEQB[] = { + {I_GF2P8AFFINEQB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+29072, 262}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGF2P8AFFINEQB[] = { + {I_VGF2P8AFFINEQB, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+29080, 263}, + {I_VGF2P8AFFINEQB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+29088, 263}, + {I_VGF2P8AFFINEQB, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+29096, 263}, + {I_VGF2P8AFFINEQB, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+29104, 263}, + {I_VGF2P8AFFINEQB, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11647, 264}, + {I_VGF2P8AFFINEQB, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11656, 264}, + {I_VGF2P8AFFINEQB, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11665, 264}, + {I_VGF2P8AFFINEQB, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11674, 264}, + {I_VGF2P8AFFINEQB, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11683, 265}, + {I_VGF2P8AFFINEQB, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11692, 265}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_GF2P8MULB[] = { + {I_GF2P8MULB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+42356, 262}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGF2P8MULB[] = { + {I_VGF2P8MULB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+42363, 263}, + {I_VGF2P8MULB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+42370, 263}, + {I_VGF2P8MULB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+42377, 263}, + {I_VGF2P8MULB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+42384, 263}, + {I_VGF2P8MULB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29112, 264}, + {I_VGF2P8MULB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29120, 264}, + {I_VGF2P8MULB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29128, 264}, + {I_VGF2P8MULB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29136, 264}, + {I_VGF2P8MULB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29144, 265}, + {I_VGF2P8MULB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29152, 265}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCOMPRESSB[] = { + {I_VPCOMPRESSB, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29160, 266}, + {I_VPCOMPRESSB, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29168, 266}, + {I_VPCOMPRESSB, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29176, 267}, + {I_VPCOMPRESSB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29184, 266}, + {I_VPCOMPRESSB, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29192, 266}, + {I_VPCOMPRESSB, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29200, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPCOMPRESSW[] = { + {I_VPCOMPRESSW, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29208, 266}, + {I_VPCOMPRESSW, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29216, 266}, + {I_VPCOMPRESSW, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29224, 267}, + {I_VPCOMPRESSW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29232, 266}, + {I_VPCOMPRESSW, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29240, 266}, + {I_VPCOMPRESSW, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29248, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPEXPANDB[] = { + {I_VPEXPANDB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29256, 266}, + {I_VPEXPANDB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29264, 266}, + {I_VPEXPANDB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29272, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPEXPANDW[] = { + {I_VPEXPANDW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29280, 266}, + {I_VPEXPANDW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29288, 266}, + {I_VPEXPANDW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29296, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHLDW[] = { + {I_VPSHLDW, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11701, 266}, + {I_VPSHLDW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11710, 266}, + {I_VPSHLDW, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11719, 266}, + {I_VPSHLDW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11728, 266}, + {I_VPSHLDW, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11737, 267}, + {I_VPSHLDW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11746, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHLDD[] = { + {I_VPSHLDD, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11755, 266}, + {I_VPSHLDD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11764, 266}, + {I_VPSHLDD, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11773, 266}, + {I_VPSHLDD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11782, 266}, + {I_VPSHLDD, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11791, 267}, + {I_VPSHLDD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11800, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHLDQ[] = { + {I_VPSHLDQ, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11809, 266}, + {I_VPSHLDQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11818, 266}, + {I_VPSHLDQ, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11827, 266}, + {I_VPSHLDQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11836, 266}, + {I_VPSHLDQ, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11845, 267}, + {I_VPSHLDQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11854, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHLDVW[] = { + {I_VPSHLDVW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29304, 266}, + {I_VPSHLDVW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29312, 266}, + {I_VPSHLDVW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29320, 266}, + {I_VPSHLDVW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29328, 266}, + {I_VPSHLDVW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29336, 267}, + {I_VPSHLDVW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29344, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHLDVD[] = { + {I_VPSHLDVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29352, 266}, + {I_VPSHLDVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29360, 266}, + {I_VPSHLDVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29368, 266}, + {I_VPSHLDVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29376, 266}, + {I_VPSHLDVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29384, 267}, + {I_VPSHLDVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29392, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHLDVQ[] = { + {I_VPSHLDVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+29400, 266}, + {I_VPSHLDVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+29408, 266}, + {I_VPSHLDVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+29416, 266}, + {I_VPSHLDVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+29424, 266}, + {I_VPSHLDVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+29432, 267}, + {I_VPSHLDVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+29440, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHRDW[] = { + {I_VPSHRDW, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11863, 266}, + {I_VPSHRDW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11872, 266}, + {I_VPSHRDW, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11881, 266}, + {I_VPSHRDW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11890, 266}, + {I_VPSHRDW, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11899, 267}, + {I_VPSHRDW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11908, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHRDD[] = { + {I_VPSHRDD, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11917, 266}, + {I_VPSHRDD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11926, 266}, + {I_VPSHRDD, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11935, 266}, + {I_VPSHRDD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11944, 266}, + {I_VPSHRDD, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11953, 267}, + {I_VPSHRDD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11962, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHRDQ[] = { + {I_VPSHRDQ, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11971, 266}, + {I_VPSHRDQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11980, 266}, + {I_VPSHRDQ, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11989, 266}, + {I_VPSHRDQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11998, 266}, + {I_VPSHRDQ, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+12007, 267}, + {I_VPSHRDQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+12016, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHRDVW[] = { + {I_VPSHRDVW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29448, 266}, + {I_VPSHRDVW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29456, 266}, + {I_VPSHRDVW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29464, 266}, + {I_VPSHRDVW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29472, 266}, + {I_VPSHRDVW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29480, 267}, + {I_VPSHRDVW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29488, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHRDVD[] = { + {I_VPSHRDVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29496, 266}, + {I_VPSHRDVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29504, 266}, + {I_VPSHRDVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29512, 266}, + {I_VPSHRDVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29520, 266}, + {I_VPSHRDVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29528, 267}, + {I_VPSHRDVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29536, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHRDVQ[] = { + {I_VPSHRDVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+29544, 266}, + {I_VPSHRDVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+29552, 266}, + {I_VPSHRDVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+29560, 266}, + {I_VPSHRDVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+29568, 266}, + {I_VPSHRDVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+29576, 267}, + {I_VPSHRDVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+29584, 267}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPDPBUSD[] = { + {I_VPDPBUSD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29592, 268}, + {I_VPDPBUSD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29600, 268}, + {I_VPDPBUSD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29608, 268}, + {I_VPDPBUSD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29616, 268}, + {I_VPDPBUSD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29624, 269}, + {I_VPDPBUSD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29632, 269}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPDPBUSDS[] = { + {I_VPDPBUSDS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29640, 268}, + {I_VPDPBUSDS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29648, 268}, + {I_VPDPBUSDS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29656, 268}, + {I_VPDPBUSDS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29664, 268}, + {I_VPDPBUSDS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29672, 269}, + {I_VPDPBUSDS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29680, 269}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPDPWSSD[] = { + {I_VPDPWSSD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29688, 268}, + {I_VPDPWSSD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29696, 268}, + {I_VPDPWSSD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29704, 268}, + {I_VPDPWSSD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29712, 268}, + {I_VPDPWSSD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29720, 269}, + {I_VPDPWSSD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29728, 269}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPDPWSSDS[] = { + {I_VPDPWSSDS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29736, 268}, + {I_VPDPWSSDS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29744, 268}, + {I_VPDPWSSDS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29752, 268}, + {I_VPDPWSSDS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29760, 268}, + {I_VPDPWSSDS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29768, 269}, + {I_VPDPWSSDS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29776, 269}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPOPCNTB[] = { + {I_VPOPCNTB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29784, 270}, + {I_VPOPCNTB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29792, 270}, + {I_VPOPCNTB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29800, 271}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPOPCNTW[] = { + {I_VPOPCNTW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29808, 270}, + {I_VPOPCNTW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29816, 270}, + {I_VPOPCNTW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29824, 271}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPOPCNTD[] = { + {I_VPOPCNTD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29832, 272}, + {I_VPOPCNTD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29840, 272}, + {I_VPOPCNTD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29848, 273}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPOPCNTQ[] = { + {I_VPOPCNTQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29856, 272}, + {I_VPOPCNTQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29864, 272}, + {I_VPOPCNTQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29872, 273}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPSHUFBITQMB[] = { + {I_VPSHUFBITQMB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29880, 270}, + {I_VPSHUFBITQMB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29888, 270}, + {I_VPSHUFBITQMB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29896, 271}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_V4FMADDPS[] = { + {I_V4FMADDPS, 3, {ZMM_L16,ZMM_L16|RS4,MEMORY,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29904, 274}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_V4FNMADDPS[] = { + {I_V4FNMADDPS, 3, {ZMM_L16,ZMM_L16|RS4,MEMORY,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29912, 274}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_V4FMADDSS[] = { + {I_V4FMADDSS, 3, {ZMM_L16,ZMM_L16|RS4,MEMORY,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29920, 274}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_V4FNMADDSS[] = { + {I_V4FNMADDSS, 3, {ZMM_L16,ZMM_L16|RS4,MEMORY,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29928, 274}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_V4DPWSSDS[] = { + {I_V4DPWSSDS, 3, {ZMM_L16,ZMM_L16|RS4,MEMORY,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29936, 275}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_V4DPWSSD[] = { + {I_V4DPWSSD, 3, {ZMM_L16,ZMM_L16|RS4,MEMORY,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29944, 275}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ENCLS[] = { + {I_ENCLS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46005, 276}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ENCLU[] = { + {I_ENCLU, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46011, 276}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ENCLV[] = { + {I_ENCLV, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46017, 276}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLRSSBSY[] = { + {I_CLRSSBSY, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42350, 277}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ENDBR32[] = { + {I_ENDBR32, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46023, 277}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ENDBR64[] = { + {I_ENDBR64, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46029, 277}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INCSSPD[] = { + {I_INCSSPD, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42391, 277}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_INCSSPQ[] = { + {I_INCSSPQ, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42398, 278}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDSSPD[] = { + {I_RDSSPD, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42405, 277}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDSSPQ[] = { + {I_RDSSPQ, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42412, 278}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RSTORSSP[] = { + {I_RSTORSSP, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46035, 277}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SAVEPREVSSP[] = { + {I_SAVEPREVSSP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46041, 277}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SETSSBSY[] = { + {I_SETSSBSY, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46047, 277}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WRUSSD[] = { + {I_WRUSSD, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+29952, 277}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WRUSSQ[] = { + {I_WRUSSQ, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+29960, 278}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WRSSD[] = { + {I_WRSSD, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42419, 277}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WRSSQ[] = { + {I_WRSSQ, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42426, 278}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ENQCMD[] = { + {I_ENQCMD, 2, {REG_GPR|BITS16,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29968, 279}, + {I_ENQCMD, 2, {REG_GPR|BITS32,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29968, 279}, + {I_ENQCMD, 2, {REG_GPR|BITS32,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29976, 280}, + {I_ENQCMD, 2, {REG_GPR|BITS64,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29984, 281}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_ENQCMDS[] = { + {I_ENQCMDS, 2, {REG_GPR|BITS16,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29992, 282}, + {I_ENQCMDS, 2, {REG_GPR|BITS32,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29992, 282}, + {I_ENQCMDS, 2, {REG_GPR|BITS32,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+30000, 283}, + {I_ENQCMDS, 2, {REG_GPR|BITS64,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+30008, 284}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SERIALIZE[] = { + {I_SERIALIZE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46053, 286}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XRESLDTRK[] = { + {I_XRESLDTRK, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46059, 288}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_XSUSLDTRK[] = { + {I_XSUSLDTRK, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46065, 288}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTNE2PS2BF16[] = { + {I_VCVTNE2PS2BF16, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30016, 289}, + {I_VCVTNE2PS2BF16, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30024, 289}, + {I_VCVTNE2PS2BF16, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30032, 289}, + {I_VCVTNE2PS2BF16, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30040, 289}, + {I_VCVTNE2PS2BF16, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30048, 289}, + {I_VCVTNE2PS2BF16, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30056, 289}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VDPBF16PS[] = { + {I_VDPBF16PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30112, 289}, + {I_VDPBF16PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30120, 289}, + {I_VDPBF16PS, 3, {YMMREG,YMMREG,RM_YMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30128, 289}, + {I_VDPBF16PS, 2, {YMMREG,RM_YMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30136, 289}, + {I_VDPBF16PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30144, 289}, + {I_VDPBF16PS, 2, {ZMMREG,RM_ZMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30152, 289}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VP2INTERSECTD[] = { + {I_VP2INTERSECTD, 3, {KREG|RS2,XMMREG,RM_XMM|BITS128,0,0}, {0,0,B32,0,0}, nasm_bytecodes+30160, 289}, + {I_VP2INTERSECTD, 3, {KREG|RS2,YMMREG,RM_YMM|BITS128,0,0}, {0,0,B32,0,0}, nasm_bytecodes+30168, 289}, + {I_VP2INTERSECTD, 3, {KREG|RS2,ZMMREG,RM_ZMM|BITS128,0,0}, {0,0,B32,0,0}, nasm_bytecodes+30176, 289}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_LDTILECFG[] = { + {I_LDTILECFG, 1, {MEMORY|BITS512,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42433, 290}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STTILECFG[] = { + {I_STTILECFG, 1, {MEMORY|BITS512,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42440, 290}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TDPBF16PS[] = { + {I_TDPBF16PS, 3, {TMMREG,TMMREG,TMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+42447, 291}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TDPBSSD[] = { + {I_TDPBSSD, 3, {TMMREG,TMMREG,TMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+42454, 292}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TDPBSUD[] = { + {I_TDPBSUD, 3, {TMMREG,TMMREG,TMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+42461, 292}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TDPBUSD[] = { + {I_TDPBUSD, 3, {TMMREG,TMMREG,TMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+42468, 292}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TDPBUUD[] = { + {I_TDPBUUD, 3, {TMMREG,TMMREG,TMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+42475, 292}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TILELOADD[] = { + {I_TILELOADD, 2, {TMMREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+42482, 293}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TILELOADDT1[] = { + {I_TILELOADDT1, 2, {TMMREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+42489, 293}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TILERELEASE[] = { + {I_TILERELEASE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42496, 294}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TILESTORED[] = { + {I_TILESTORED, 2, {MEMORY,TMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42503, 293}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TILEZERO[] = { + {I_TILEZERO, 1, {TMMREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+30184, 294}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VADDPH[] = { + {I_VADDPH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+30192, 295}, + {I_VADDPH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30200, 295}, + {I_VADDPH, 3, {YMMREG,YMMREG,RM_YMM|BITS16,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+30208, 295}, + {I_VADDPH, 2, {YMMREG,RM_YMM|BITS16,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30216, 295}, + {I_VADDPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS16,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+30224, 296}, + {I_VADDPH, 2, {ZMMREG,RM_ZMM|BITS16,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30232, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VADDSH[] = { + {I_VADDSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+30240, 296}, + {I_VADDSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+30248, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPPH[] = { + {I_VCMPPH, 4, {KREG,XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0}, {MASK,0,B16,0,0}, nasm_bytecodes+12025, 295}, + {I_VCMPPH, 3, {KREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK,B16,0,0,0}, nasm_bytecodes+12034, 295}, + {I_VCMPPH, 4, {KREG,YMMREG,RM_YMM|BITS16,IMMEDIATE|BITS8,0}, {MASK,0,B16,0,0}, nasm_bytecodes+12043, 295}, + {I_VCMPPH, 3, {KREG,RM_YMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK,B16,0,0,0}, nasm_bytecodes+12052, 295}, + {I_VCMPPH, 4, {KREG,ZMMREG,RM_ZMM|BITS16,IMMEDIATE|BITS8,0}, {MASK,0,B16|SAE,0,0}, nasm_bytecodes+12061, 296}, + {I_VCMPPH, 3, {KREG,RM_ZMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK,B16|SAE,0,0,0}, nasm_bytecodes+12070, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCMPSH[] = { + {I_VCMPSH, 4, {KREG,XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+12079, 296}, + {I_VCMPSH, 3, {KREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK,SAE,0,0,0}, nasm_bytecodes+12088, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCOMISH[] = { + {I_VCOMISH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+30256, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTDQ2PH[] = { + {I_VCVTDQ2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30264, 295}, + {I_VCVTDQ2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30272, 295}, + {I_VCVTDQ2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+30280, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPD2PH[] = { + {I_VCVTPD2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+30288, 295}, + {I_VCVTPD2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+30296, 295}, + {I_VCVTPD2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+30304, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPH2DQ[] = { + {I_VCVTPH2DQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30312, 295}, + {I_VCVTPH2DQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30320, 295}, + {I_VCVTPH2DQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30328, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPH2PD[] = { + {I_VCVTPH2PD, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30336, 295}, + {I_VCVTPH2PD, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30344, 295}, + {I_VCVTPH2PD, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30352, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPH2PSX[] = { + {I_VCVTPH2PSX, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30360, 295}, + {I_VCVTPH2PSX, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30368, 295}, + {I_VCVTPH2PSX, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30376, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPH2QQ[] = { + {I_VCVTPH2QQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30384, 295}, + {I_VCVTPH2QQ, 2, {YMM_L16,RM_XMM_L16|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30392, 295}, + {I_VCVTPH2QQ, 2, {ZMM_L16,RM_XMM_L16|BITS128,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30400, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPH2UDQ[] = { + {I_VCVTPH2UDQ, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30408, 295}, + {I_VCVTPH2UDQ, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30416, 295}, + {I_VCVTPH2UDQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30424, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPH2UQQ[] = { + {I_VCVTPH2UQQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30432, 295}, + {I_VCVTPH2UQQ, 2, {YMM_L16,RM_XMM_L16|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30440, 295}, + {I_VCVTPH2UQQ, 2, {ZMM_L16,RM_XMM_L16|BITS128,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30448, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPH2UW[] = { + {I_VCVTPH2UW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30456, 295}, + {I_VCVTPH2UW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30464, 295}, + {I_VCVTPH2UW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30472, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTPH2W[] = { + {I_VCVTPH2W, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30480, 295}, + {I_VCVTPH2W, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30488, 295}, + {I_VCVTPH2W, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30496, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTQQ2PH[] = { + {I_VCVTQQ2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+30528, 295}, + {I_VCVTQQ2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+30536, 295}, + {I_VCVTQQ2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+30544, 295}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSD2SH[] = { + {I_VCVTSD2SH, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+30552, 296}, + {I_VCVTSD2SH, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+30560, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSH2SD[] = { + {I_VCVTSH2SD, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {0,0,SAE,0,0}, nasm_bytecodes+30568, 296}, + {I_VCVTSH2SD, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+30576, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSH2SI[] = { + {I_VCVTSH2SI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS16,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30584, 296}, + {I_VCVTSH2SI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS16,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30592, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSH2SS[] = { + {I_VCVTSH2SS, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+30600, 296}, + {I_VCVTSH2SS, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+30608, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSH2USI[] = { + {I_VCVTSH2USI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS16,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30616, 296}, + {I_VCVTSH2USI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS16,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30624, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSI2SH[] = { + {I_VCVTSI2SH, 3, {XMMREG,XMMREG,RM_GPR|BITS32,0,0}, {0,0,ER,0,0}, nasm_bytecodes+30632, 296}, + {I_VCVTSI2SH, 2, {XMMREG,RM_GPR|BITS32,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30640, 296}, + {I_VCVTSI2SH, 3, {XMMREG,XMMREG,RM_GPR|BITS64,0,0}, {0,0,ER,0,0}, nasm_bytecodes+30648, 296}, + {I_VCVTSI2SH, 2, {XMMREG,RM_GPR|BITS64,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30656, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTSS2SH[] = { + {I_VCVTSS2SH, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {0,0,ER,0,0}, nasm_bytecodes+30664, 296}, + {I_VCVTSS2SH, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30672, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPH2DQ[] = { + {I_VCVTTPH2DQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30680, 295}, + {I_VCVTTPH2DQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30688, 295}, + {I_VCVTTPH2DQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30696, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPH2QQ[] = { + {I_VCVTTPH2QQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30704, 295}, + {I_VCVTTPH2QQ, 2, {YMM_L16,RM_XMM_L16|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30712, 295}, + {I_VCVTTPH2QQ, 2, {ZMM_L16,RM_XMM_L16|BITS128,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30720, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPH2UDQ[] = { + {I_VCVTTPH2UDQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30728, 295}, + {I_VCVTTPH2UDQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30736, 295}, + {I_VCVTTPH2UDQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30744, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPH2UQQ[] = { + {I_VCVTTPH2UQQ, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30752, 295}, + {I_VCVTTPH2UQQ, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30760, 295}, + {I_VCVTTPH2UQQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30768, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPH2UW[] = { + {I_VCVTTPH2UW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30776, 295}, + {I_VCVTTPH2UW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30784, 295}, + {I_VCVTTPH2UW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30792, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTPH2W[] = { + {I_VCVTTPH2W, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30800, 295}, + {I_VCVTTPH2W, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30808, 295}, + {I_VCVTTPH2W, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30816, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTSH2SI[] = { + {I_VCVTTSH2SI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+30824, 296}, + {I_VCVTTSH2SI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+30832, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTTSH2USI[] = { + {I_VCVTTSH2USI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+30840, 296}, + {I_VCVTTSH2USI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+30848, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTUDQ2PH[] = { + {I_VCVTUDQ2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30856, 295}, + {I_VCVTUDQ2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30864, 295}, + {I_VCVTUDQ2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30872, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTUQQ2PH[] = { + {I_VCVTUQQ2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30880, 295}, + {I_VCVTUQQ2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30888, 295}, + {I_VCVTUQQ2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30896, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTUSI2SH[] = { + {I_VCVTUSI2SH, 3, {XMMREG,XMMREG,RM_GPR|BITS32,0,0}, {0,ER,ER,0,0}, nasm_bytecodes+30904, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTUW2PH[] = { + {I_VCVTUW2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30920, 295}, + {I_VCVTUW2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30928, 295}, + {I_VCVTUW2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30936, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VCVTW2PH[] = { + {I_VCVTW2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30944, 295}, + {I_VCVTW2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30952, 295}, + {I_VCVTW2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30960, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VDIVPH[] = { + {I_VDIVPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+30968, 295}, + {I_VDIVPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30976, 295}, + {I_VDIVPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+30984, 295}, + {I_VDIVPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30992, 295}, + {I_VDIVPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31000, 296}, + {I_VDIVPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31008, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VDIVSH[] = { + {I_VDIVSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31016, 296}, + {I_VDIVSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31024, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFCMADDCPH[] = { + {I_VFCMADDCPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31032, 295}, + {I_VFCMADDCPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31040, 295}, + {I_VFCMADDCPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31048, 295}, + {I_VFCMADDCPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31056, 295}, + {I_VFCMADDCPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+31064, 295}, + {I_VFCMADDCPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+31072, 295}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDCPH[] = { + {I_VFMADDCPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31080, 295}, + {I_VFMADDCPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31088, 295}, + {I_VFMADDCPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31096, 295}, + {I_VFMADDCPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31104, 295}, + {I_VFMADDCPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+31112, 295}, + {I_VFMADDCPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+31120, 295}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFCMADDCSH[] = { + {I_VFCMADDCSH, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31128, 296}, + {I_VFCMADDCSH, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31136, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDCSH[] = { + {I_VFMADDCSH, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31144, 296}, + {I_VFMADDCSH, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31152, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFCMULCPCH[] = { + {I_VFCMULCPCH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31160, 295}, + {I_VFCMULCPCH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31168, 295}, + {I_VFCMULCPCH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31176, 295}, + {I_VFCMULCPCH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31184, 295}, + {I_VFCMULCPCH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+31192, 295}, + {I_VFCMULCPCH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+31200, 295}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMULCPCH[] = { + {I_VFMULCPCH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31208, 295}, + {I_VFMULCPCH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31216, 295}, + {I_VFMULCPCH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31224, 295}, + {I_VFMULCPCH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31232, 295}, + {I_VFMULCPCH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+31240, 295}, + {I_VFMULCPCH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+31248, 295}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFCMULCSH[] = { + {I_VFCMULCSH, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31256, 296}, + {I_VFCMULCSH, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31264, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMULCSH[] = { + {I_VFMULCSH, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31272, 296}, + {I_VFMULCSH, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31280, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB132PH[] = { + {I_VFMADDSUB132PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31288, 295}, + {I_VFMADDSUB132PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31296, 295}, + {I_VFMADDSUB132PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31304, 295}, + {I_VFMADDSUB132PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31312, 295}, + {I_VFMADDSUB132PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31320, 296}, + {I_VFMADDSUB132PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31328, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB213PH[] = { + {I_VFMADDSUB213PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31336, 295}, + {I_VFMADDSUB213PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31344, 295}, + {I_VFMADDSUB213PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31352, 295}, + {I_VFMADDSUB213PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31360, 295}, + {I_VFMADDSUB213PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31368, 296}, + {I_VFMADDSUB213PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31376, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADDSUB231PH[] = { + {I_VFMADDSUB231PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31384, 295}, + {I_VFMADDSUB231PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31392, 295}, + {I_VFMADDSUB231PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31400, 295}, + {I_VFMADDSUB231PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31408, 295}, + {I_VFMADDSUB231PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31416, 296}, + {I_VFMADDSUB231PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31424, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD132PH[] = { + {I_VFMSUBADD132PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31432, 295}, + {I_VFMSUBADD132PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31440, 295}, + {I_VFMSUBADD132PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31448, 295}, + {I_VFMSUBADD132PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31456, 295}, + {I_VFMSUBADD132PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31464, 296}, + {I_VFMSUBADD132PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31472, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD213PH[] = { + {I_VFMSUBADD213PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31480, 295}, + {I_VFMSUBADD213PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31488, 295}, + {I_VFMSUBADD213PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31496, 295}, + {I_VFMSUBADD213PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31504, 295}, + {I_VFMSUBADD213PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31512, 296}, + {I_VFMSUBADD213PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31520, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUBADD231PH[] = { + {I_VFMSUBADD231PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31528, 295}, + {I_VFMSUBADD231PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31536, 295}, + {I_VFMSUBADD231PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31544, 295}, + {I_VFMSUBADD231PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31552, 295}, + {I_VFMSUBADD231PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31560, 296}, + {I_VFMSUBADD231PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31568, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMADD132PH[] = { + {I_VPMADD132PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31576, 295}, + {I_VPMADD132PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31584, 295}, + {I_VPMADD132PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31592, 295}, + {I_VPMADD132PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31600, 295}, + {I_VPMADD132PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31608, 296}, + {I_VPMADD132PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31616, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMADD213PH[] = { + {I_VPMADD213PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31624, 295}, + {I_VPMADD213PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31632, 295}, + {I_VPMADD213PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31640, 295}, + {I_VPMADD213PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31648, 295}, + {I_VPMADD213PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31656, 296}, + {I_VPMADD213PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31664, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMADD231PH[] = { + {I_VPMADD231PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31672, 295}, + {I_VPMADD231PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31680, 295}, + {I_VPMADD231PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31688, 295}, + {I_VPMADD231PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31696, 295}, + {I_VPMADD231PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31704, 296}, + {I_VPMADD231PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31712, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD132PH[] = { + {I_VFMADD132PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31720, 295}, + {I_VFMADD132PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31728, 295}, + {I_VFMADD132PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31736, 295}, + {I_VFMADD132PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31744, 295}, + {I_VFMADD132PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31752, 296}, + {I_VFMADD132PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31760, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD213PH[] = { + {I_VFMADD213PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31768, 295}, + {I_VFMADD213PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31776, 295}, + {I_VFMADD213PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31784, 295}, + {I_VFMADD213PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31792, 295}, + {I_VFMADD213PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31800, 296}, + {I_VFMADD213PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31808, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMADD231PH[] = { + {I_VFMADD231PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31816, 295}, + {I_VFMADD231PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31824, 295}, + {I_VFMADD231PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31832, 295}, + {I_VFMADD231PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31840, 295}, + {I_VFMADD231PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31848, 296}, + {I_VFMADD231PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31856, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMADD132SH[] = { + {I_VPMADD132SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31864, 296}, + {I_VPMADD132SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31872, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMADD213SH[] = { + {I_VPMADD213SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31880, 296}, + {I_VPMADD213SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31888, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMADD231SH[] = { + {I_VPMADD231SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31896, 296}, + {I_VPMADD231SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31904, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPNMADD132SH[] = { + {I_VPNMADD132SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31912, 296}, + {I_VPNMADD132SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31920, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPNMADD213SH[] = { + {I_VPNMADD213SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31928, 296}, + {I_VPNMADD213SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31936, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPNMADD231SH[] = { + {I_VPNMADD231SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31944, 296}, + {I_VPNMADD231SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31952, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMSUB132PH[] = { + {I_VPMSUB132PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31960, 295}, + {I_VPMSUB132PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31968, 295}, + {I_VPMSUB132PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31976, 295}, + {I_VPMSUB132PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31984, 295}, + {I_VPMSUB132PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31992, 296}, + {I_VPMSUB132PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32000, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMSUB213PH[] = { + {I_VPMSUB213PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32008, 295}, + {I_VPMSUB213PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32016, 295}, + {I_VPMSUB213PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32024, 295}, + {I_VPMSUB213PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32032, 295}, + {I_VPMSUB213PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32040, 296}, + {I_VPMSUB213PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32048, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMSUB231PH[] = { + {I_VPMSUB231PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32056, 295}, + {I_VPMSUB231PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32064, 295}, + {I_VPMSUB231PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32072, 295}, + {I_VPMSUB231PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32080, 295}, + {I_VPMSUB231PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32088, 296}, + {I_VPMSUB231PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32096, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB132PH[] = { + {I_VFMSUB132PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32104, 295}, + {I_VFMSUB132PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32112, 295}, + {I_VFMSUB132PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32120, 295}, + {I_VFMSUB132PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32128, 295}, + {I_VFMSUB132PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32136, 296}, + {I_VFMSUB132PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32144, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB213PH[] = { + {I_VFMSUB213PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32152, 295}, + {I_VFMSUB213PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32160, 295}, + {I_VFMSUB213PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32168, 295}, + {I_VFMSUB213PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32176, 295}, + {I_VFMSUB213PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32184, 296}, + {I_VFMSUB213PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32192, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFMSUB231PH[] = { + {I_VFMSUB231PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32200, 295}, + {I_VFMSUB231PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32208, 295}, + {I_VFMSUB231PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32216, 295}, + {I_VFMSUB231PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32224, 295}, + {I_VFMSUB231PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32232, 296}, + {I_VFMSUB231PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32240, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMSUB132SH[] = { + {I_VPMSUB132SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32248, 296}, + {I_VPMSUB132SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32256, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMSUB213SH[] = { + {I_VPMSUB213SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32264, 296}, + {I_VPMSUB213SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32272, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPMSUB231SH[] = { + {I_VPMSUB231SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32280, 296}, + {I_VPMSUB231SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32288, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPNMSUB132SH[] = { + {I_VPNMSUB132SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32296, 296}, + {I_VPNMSUB132SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32304, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPNMSUB213SH[] = { + {I_VPNMSUB213SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32312, 296}, + {I_VPNMSUB213SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32320, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VPNMSUB231SH[] = { + {I_VPNMSUB231SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32328, 296}, + {I_VPNMSUB231SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32336, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFPCLASSPH[] = { + {I_VFPCLASSPH, 3, {KREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK,B16,0,0,0}, nasm_bytecodes+12097, 295}, + {I_VFPCLASSPH, 3, {KREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK,B16,0,0,0}, nasm_bytecodes+12106, 295}, + {I_VFPCLASSPH, 3, {KREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK,B16,0,0,0}, nasm_bytecodes+12115, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VFPCLASSSH[] = { + {I_VFPCLASSSH, 3, {KREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+12124, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETEXPPH[] = { + {I_VGETEXPPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32344, 295}, + {I_VGETEXPPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32352, 295}, + {I_VGETEXPPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+32360, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETEXPSH[] = { + {I_VGETEXPSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+32368, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETMANTPH[] = { + {I_VGETMANTPH, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12133, 295}, + {I_VGETMANTPH, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12142, 295}, + {I_VGETMANTPH, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+12151, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETMANTSH[] = { + {I_VGETMANTSH, 3, {XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+12160, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETMAXPH[] = { + {I_VGETMAXPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32376, 295}, + {I_VGETMAXPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32384, 295}, + {I_VGETMAXPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+32392, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETMAXSH[] = { + {I_VGETMAXSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+32400, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETMINPH[] = { + {I_VGETMINPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32408, 295}, + {I_VGETMINPH, 2, {YMMREG,RM_XMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32416, 295}, + {I_VGETMINPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+32424, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VGETMINSH[] = { + {I_VGETMINSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+32432, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVSH[] = { + {I_VMOVSH, 2, {XMMREG,MEMORY|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+32440, 296}, + {I_VMOVSH, 2, {MEMORY|BITS16,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+32448, 296}, + {I_VMOVSH, 3, {XMMREG,XMMREG,XMMREG,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+32456, 296}, + {I_VMOVSH, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+32464, 296}, + {I_VMOVSH, 3, {XMMREG,XMMREG,XMMREG,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+32472, 296}, + {I_VMOVSH, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+32480, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMOVW[] = { + {I_VMOVW, 2, {XMMREG,RM_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+32488, 296}, + {I_VMOVW, 2, {RM_GPR|BITS16,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+32496, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMULPH[] = { + {I_VMULPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32504, 295}, + {I_VMULPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32512, 295}, + {I_VMULPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32520, 295}, + {I_VMULPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32528, 295}, + {I_VMULPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32536, 296}, + {I_VMULPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32544, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VMULSH[] = { + {I_VMULSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32552, 296}, + {I_VMULSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32560, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRCPPH[] = { + {I_VRCPPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32568, 295}, + {I_VRCPPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32576, 295}, + {I_VRCPPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32584, 295}, + {I_VRCPPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32592, 295}, + {I_VRCPPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32600, 296}, + {I_VRCPPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32608, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRCPSH[] = { + {I_VRCPSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+32616, 296}, + {I_VRCPSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+32624, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VREDUCEPH[] = { + {I_VREDUCEPH, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12169, 295}, + {I_VREDUCEPH, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12178, 295}, + {I_VREDUCEPH, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+12187, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VREDUCESH[] = { + {I_VREDUCESH, 4, {XMMREG,XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+12196, 296}, + {I_VREDUCESH, 3, {XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+12205, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VENDSCALEPH[] = { + {I_VENDSCALEPH, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12214, 295}, + {I_VENDSCALEPH, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12223, 295}, + {I_VENDSCALEPH, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+12232, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VENDSCALESH[] = { + {I_VENDSCALESH, 4, {XMMREG,XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+12241, 296}, + {I_VENDSCALESH, 3, {XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+12250, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRSQRTPH[] = { + {I_VRSQRTPH, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12259, 295}, + {I_VRSQRTPH, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12268, 295}, + {I_VRSQRTPH, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+12277, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VRSQRTSH[] = { + {I_VRSQRTSH, 4, {XMMREG,XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+12286, 296}, + {I_VRSQRTSH, 3, {XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+12295, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCALEFPH[] = { + {I_VSCALEFPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32632, 295}, + {I_VSCALEFPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32640, 295}, + {I_VSCALEFPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32648, 295}, + {I_VSCALEFPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32656, 295}, + {I_VSCALEFPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32664, 296}, + {I_VSCALEFPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32672, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSCALEFSH[] = { + {I_VSCALEFSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32680, 296}, + {I_VSCALEFSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32688, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSQRTPH[] = { + {I_VSQRTPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32696, 295}, + {I_VSQRTPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32704, 295}, + {I_VSQRTPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32712, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSQRTSH[] = { + {I_VSQRTSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32720, 296}, + {I_VSQRTSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32728, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSUBPH[] = { + {I_VSUBPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32736, 295}, + {I_VSUBPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32744, 295}, + {I_VSUBPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32752, 295}, + {I_VSUBPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32760, 295}, + {I_VSUBPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32768, 296}, + {I_VSUBPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32776, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VSUBSH[] = { + {I_VSUBSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32784, 296}, + {I_VSUBSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32792, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_VUCOMISH[] = { + {I_VUCOMISH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+32800, 296}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AADD[] = { + {I_AADD, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32808, 299}, + {I_AADD, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+32816, 300}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AAND[] = { + {I_AAND, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32824, 299}, + {I_AAND, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+32832, 300}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_AXOR[] = { + {I_AXOR, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32840, 299}, + {I_AXOR, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+32848, 300}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CLUI[] = { + {I_CLUI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46071, 301}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_SENDUIPI[] = { + {I_SENDUIPI, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42510, 301}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_STUI[] = { + {I_STUI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46077, 301}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_TESTUI[] = { + {I_TESTUI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46083, 301}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_UIRET[] = { + {I_UIRET, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46089, 301}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPAXADD[] = { + {I_CMPAXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42517, 302}, + {I_CMPAXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42629, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPAEXADD[] = { + {I_CMPAEXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42524, 302}, + {I_CMPAEXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42636, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPBXADD[] = { + {I_CMPBXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42531, 302}, + {I_CMPBXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42643, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPBEXADD[] = { + {I_CMPBEXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42538, 302}, + {I_CMPBEXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42650, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPCXADD[] = { + {I_CMPCXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42531, 302}, + {I_CMPCXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42643, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPEXADD[] = { + {I_CMPEXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42545, 302}, + {I_CMPEXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42657, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPGXADD[] = { + {I_CMPGXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42552, 302}, + {I_CMPGXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42664, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPGEXADD[] = { + {I_CMPGEXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42559, 302}, + {I_CMPGEXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42671, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPLXADD[] = { + {I_CMPLXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42566, 302}, + {I_CMPLXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42678, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPLEXADD[] = { + {I_CMPLEXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42573, 302}, + {I_CMPLEXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42685, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNAXADD[] = { + {I_CMPNAXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42538, 302}, + {I_CMPNAXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42650, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNAEXADD[] = { + {I_CMPNAEXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42531, 302}, + {I_CMPNAEXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42643, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNBXADD[] = { + {I_CMPNBXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42524, 302}, + {I_CMPNBXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42636, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNBEXADD[] = { + {I_CMPNBEXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42517, 302}, + {I_CMPNBEXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42629, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNCXADD[] = { + {I_CMPNCXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42524, 302}, + {I_CMPNCXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42636, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNEXADD[] = { + {I_CMPNEXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42580, 302}, + {I_CMPNEXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42692, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNGXADD[] = { + {I_CMPNGXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42573, 302}, + {I_CMPNGXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42685, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNGEXADD[] = { + {I_CMPNGEXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42566, 302}, + {I_CMPNGEXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42678, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNLXADD[] = { + {I_CMPNLXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42559, 302}, + {I_CMPNLXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42671, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNLEXADD[] = { + {I_CMPNLEXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42552, 302}, + {I_CMPNLEXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42664, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNOXADD[] = { + {I_CMPNOXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42587, 302}, + {I_CMPNOXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42699, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNPXADD[] = { + {I_CMPNPXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42594, 302}, + {I_CMPNPXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42706, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNSXADD[] = { + {I_CMPNSXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42601, 302}, + {I_CMPNSXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42713, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPNZXADD[] = { + {I_CMPNZXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42580, 302}, + {I_CMPNZXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42692, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPOXADD[] = { + {I_CMPOXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42608, 302}, + {I_CMPOXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42720, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPPXADD[] = { + {I_CMPPXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42615, 302}, + {I_CMPPXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42727, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPPEXADD[] = { + {I_CMPPEXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42615, 302}, + {I_CMPPEXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42727, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPPOXADD[] = { + {I_CMPPOXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42594, 302}, + {I_CMPPOXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42706, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPSXADD[] = { + {I_CMPSXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42622, 302}, + {I_CMPSXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42734, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_CMPZXADD[] = { + {I_CMPZXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42545, 302}, + {I_CMPZXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42657, 303}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WRMSRNS[] = { + {I_WRMSRNS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46095, 304}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_RDMSRLIST[] = { + {I_RDMSRLIST, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46101, 305}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_WRMSRLIST[] = { + {I_WRMSRLIST, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46107, 305}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HRESET[] = { + {I_HRESET, 2, {IMMEDIATE,REG_EAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+32856, 306}, + {I_HRESET, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+32856, 306}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP0[] = { + {I_HINT_NOP0, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46113, 307}, + {I_HINT_NOP0, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46119, 307}, + {I_HINT_NOP0, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46125, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP1[] = { + {I_HINT_NOP1, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46131, 307}, + {I_HINT_NOP1, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46137, 307}, + {I_HINT_NOP1, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46143, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP2[] = { + {I_HINT_NOP2, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46149, 307}, + {I_HINT_NOP2, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46155, 307}, + {I_HINT_NOP2, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46161, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP3[] = { + {I_HINT_NOP3, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46167, 307}, + {I_HINT_NOP3, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46173, 307}, + {I_HINT_NOP3, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46179, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP4[] = { + {I_HINT_NOP4, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46185, 307}, + {I_HINT_NOP4, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46191, 307}, + {I_HINT_NOP4, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46197, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP5[] = { + {I_HINT_NOP5, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46203, 307}, + {I_HINT_NOP5, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46209, 307}, + {I_HINT_NOP5, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46215, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP6[] = { + {I_HINT_NOP6, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46221, 307}, + {I_HINT_NOP6, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46227, 307}, + {I_HINT_NOP6, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46233, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP7[] = { + {I_HINT_NOP7, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46239, 307}, + {I_HINT_NOP7, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46245, 307}, + {I_HINT_NOP7, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46251, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP8[] = { + {I_HINT_NOP8, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46257, 307}, + {I_HINT_NOP8, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46263, 307}, + {I_HINT_NOP8, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46269, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP9[] = { + {I_HINT_NOP9, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46275, 307}, + {I_HINT_NOP9, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46281, 307}, + {I_HINT_NOP9, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46287, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP10[] = { + {I_HINT_NOP10, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46293, 307}, + {I_HINT_NOP10, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46299, 307}, + {I_HINT_NOP10, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46305, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP11[] = { + {I_HINT_NOP11, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46311, 307}, + {I_HINT_NOP11, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46317, 307}, + {I_HINT_NOP11, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46323, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP12[] = { + {I_HINT_NOP12, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46329, 307}, + {I_HINT_NOP12, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46335, 307}, + {I_HINT_NOP12, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46341, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP13[] = { + {I_HINT_NOP13, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46347, 307}, + {I_HINT_NOP13, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46353, 307}, + {I_HINT_NOP13, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46359, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP14[] = { + {I_HINT_NOP14, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46365, 307}, + {I_HINT_NOP14, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46371, 307}, + {I_HINT_NOP14, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46377, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP15[] = { + {I_HINT_NOP15, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46383, 307}, + {I_HINT_NOP15, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46389, 307}, + {I_HINT_NOP15, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46395, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP16[] = { + {I_HINT_NOP16, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46401, 307}, + {I_HINT_NOP16, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46407, 307}, + {I_HINT_NOP16, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46413, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP17[] = { + {I_HINT_NOP17, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46419, 307}, + {I_HINT_NOP17, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46425, 307}, + {I_HINT_NOP17, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46431, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP18[] = { + {I_HINT_NOP18, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46437, 307}, + {I_HINT_NOP18, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46443, 307}, + {I_HINT_NOP18, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46449, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP19[] = { + {I_HINT_NOP19, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46455, 307}, + {I_HINT_NOP19, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46461, 307}, + {I_HINT_NOP19, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46467, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP20[] = { + {I_HINT_NOP20, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46473, 307}, + {I_HINT_NOP20, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46479, 307}, + {I_HINT_NOP20, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46485, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP21[] = { + {I_HINT_NOP21, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46491, 307}, + {I_HINT_NOP21, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46497, 307}, + {I_HINT_NOP21, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46503, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP22[] = { + {I_HINT_NOP22, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46509, 307}, + {I_HINT_NOP22, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46515, 307}, + {I_HINT_NOP22, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46521, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP23[] = { + {I_HINT_NOP23, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46527, 307}, + {I_HINT_NOP23, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46533, 307}, + {I_HINT_NOP23, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46539, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP24[] = { + {I_HINT_NOP24, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46545, 307}, + {I_HINT_NOP24, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46551, 307}, + {I_HINT_NOP24, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46557, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP25[] = { + {I_HINT_NOP25, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46563, 307}, + {I_HINT_NOP25, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46569, 307}, + {I_HINT_NOP25, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46575, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP26[] = { + {I_HINT_NOP26, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46581, 307}, + {I_HINT_NOP26, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46587, 307}, + {I_HINT_NOP26, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46593, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP27[] = { + {I_HINT_NOP27, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46599, 307}, + {I_HINT_NOP27, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46605, 307}, + {I_HINT_NOP27, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46611, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP28[] = { + {I_HINT_NOP28, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46617, 307}, + {I_HINT_NOP28, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46623, 307}, + {I_HINT_NOP28, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46629, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP29[] = { + {I_HINT_NOP29, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46635, 307}, + {I_HINT_NOP29, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46641, 307}, + {I_HINT_NOP29, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46647, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP30[] = { + {I_HINT_NOP30, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46653, 307}, + {I_HINT_NOP30, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46659, 307}, + {I_HINT_NOP30, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46665, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP31[] = { + {I_HINT_NOP31, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46671, 307}, + {I_HINT_NOP31, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46677, 307}, + {I_HINT_NOP31, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46683, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP32[] = { + {I_HINT_NOP32, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46689, 307}, + {I_HINT_NOP32, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46695, 307}, + {I_HINT_NOP32, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46701, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP33[] = { + {I_HINT_NOP33, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46707, 307}, + {I_HINT_NOP33, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46713, 307}, + {I_HINT_NOP33, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46719, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP34[] = { + {I_HINT_NOP34, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46725, 307}, + {I_HINT_NOP34, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46731, 307}, + {I_HINT_NOP34, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46737, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP35[] = { + {I_HINT_NOP35, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46743, 307}, + {I_HINT_NOP35, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46749, 307}, + {I_HINT_NOP35, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46755, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP36[] = { + {I_HINT_NOP36, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46761, 307}, + {I_HINT_NOP36, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46767, 307}, + {I_HINT_NOP36, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46773, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP37[] = { + {I_HINT_NOP37, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46779, 307}, + {I_HINT_NOP37, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46785, 307}, + {I_HINT_NOP37, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46791, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP38[] = { + {I_HINT_NOP38, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46797, 307}, + {I_HINT_NOP38, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46803, 307}, + {I_HINT_NOP38, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46809, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP39[] = { + {I_HINT_NOP39, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46815, 307}, + {I_HINT_NOP39, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46821, 307}, + {I_HINT_NOP39, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46827, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP40[] = { + {I_HINT_NOP40, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46833, 307}, + {I_HINT_NOP40, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46839, 307}, + {I_HINT_NOP40, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46845, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP41[] = { + {I_HINT_NOP41, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46851, 307}, + {I_HINT_NOP41, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46857, 307}, + {I_HINT_NOP41, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46863, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP42[] = { + {I_HINT_NOP42, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46869, 307}, + {I_HINT_NOP42, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46875, 307}, + {I_HINT_NOP42, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46881, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP43[] = { + {I_HINT_NOP43, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46887, 307}, + {I_HINT_NOP43, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46893, 307}, + {I_HINT_NOP43, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46899, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP44[] = { + {I_HINT_NOP44, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46905, 307}, + {I_HINT_NOP44, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46911, 307}, + {I_HINT_NOP44, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46917, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP45[] = { + {I_HINT_NOP45, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46923, 307}, + {I_HINT_NOP45, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46929, 307}, + {I_HINT_NOP45, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46935, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP46[] = { + {I_HINT_NOP46, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46941, 307}, + {I_HINT_NOP46, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46947, 307}, + {I_HINT_NOP46, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46953, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP47[] = { + {I_HINT_NOP47, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46959, 307}, + {I_HINT_NOP47, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46965, 307}, + {I_HINT_NOP47, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46971, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP48[] = { + {I_HINT_NOP48, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46977, 307}, + {I_HINT_NOP48, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46983, 307}, + {I_HINT_NOP48, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46989, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP49[] = { + {I_HINT_NOP49, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46995, 307}, + {I_HINT_NOP49, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47001, 307}, + {I_HINT_NOP49, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47007, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP50[] = { + {I_HINT_NOP50, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47013, 307}, + {I_HINT_NOP50, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47019, 307}, + {I_HINT_NOP50, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47025, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP51[] = { + {I_HINT_NOP51, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47031, 307}, + {I_HINT_NOP51, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47037, 307}, + {I_HINT_NOP51, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47043, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP52[] = { + {I_HINT_NOP52, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47049, 307}, + {I_HINT_NOP52, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47055, 307}, + {I_HINT_NOP52, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47061, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP53[] = { + {I_HINT_NOP53, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47067, 307}, + {I_HINT_NOP53, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47073, 307}, + {I_HINT_NOP53, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47079, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP54[] = { + {I_HINT_NOP54, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47085, 307}, + {I_HINT_NOP54, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47091, 307}, + {I_HINT_NOP54, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47097, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP55[] = { + {I_HINT_NOP55, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47103, 307}, + {I_HINT_NOP55, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47109, 307}, + {I_HINT_NOP55, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47115, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP56[] = { + {I_HINT_NOP56, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43437, 307}, + {I_HINT_NOP56, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43443, 307}, + {I_HINT_NOP56, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43449, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP57[] = { + {I_HINT_NOP57, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47121, 307}, + {I_HINT_NOP57, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47127, 307}, + {I_HINT_NOP57, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47133, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP58[] = { + {I_HINT_NOP58, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47139, 307}, + {I_HINT_NOP58, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47145, 307}, + {I_HINT_NOP58, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47151, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP59[] = { + {I_HINT_NOP59, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47157, 307}, + {I_HINT_NOP59, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47163, 307}, + {I_HINT_NOP59, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47169, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP60[] = { + {I_HINT_NOP60, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47175, 307}, + {I_HINT_NOP60, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47181, 307}, + {I_HINT_NOP60, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47187, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP61[] = { + {I_HINT_NOP61, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47193, 307}, + {I_HINT_NOP61, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47199, 307}, + {I_HINT_NOP61, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47205, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP62[] = { + {I_HINT_NOP62, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47211, 307}, + {I_HINT_NOP62, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47217, 307}, + {I_HINT_NOP62, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47223, 308}, + ITEMPLATE_END +}; + +static const struct itemplate instrux_HINT_NOP63[] = { + {I_HINT_NOP63, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47229, 307}, + {I_HINT_NOP63, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47235, 307}, + {I_HINT_NOP63, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47241, 308}, + ITEMPLATE_END +}; + +const struct itemplate * const nasm_instructions[] = { + instrux_DB, + instrux_DW, + instrux_DD, + instrux_DQ, + instrux_DT, + instrux_DO, + instrux_DY, + instrux_DZ, + instrux_RESB, + instrux_RESW, + instrux_RESD, + instrux_RESQ, + instrux_REST, + instrux_RESO, + instrux_RESY, + instrux_RESZ, + instrux_INCBIN, + instrux_AAA, + instrux_AAD, + instrux_AAM, + instrux_AAS, + instrux_ADC, + instrux_ADD, + instrux_AND, + instrux_ARPL, + instrux_BB0_RESET, + instrux_BB1_RESET, + instrux_BOUND, + instrux_BSF, + instrux_BSR, + instrux_BSWAP, + instrux_BT, + instrux_BTC, + instrux_BTR, + instrux_BTS, + instrux_CALL, + instrux_CBW, + instrux_CDQ, + instrux_CDQE, + instrux_CLC, + instrux_CLD, + instrux_CLI, + instrux_CLTS, + instrux_CMC, + instrux_CMP, + instrux_CMPSB, + instrux_CMPSD, + instrux_CMPSQ, + instrux_CMPSW, + instrux_CMPXCHG, + instrux_CMPXCHG486, + instrux_CMPXCHG8B, + instrux_CMPXCHG16B, + instrux_CPUID, + instrux_CPU_READ, + instrux_CPU_WRITE, + instrux_CQO, + instrux_CWD, + instrux_CWDE, + instrux_DAA, + instrux_DAS, + instrux_DEC, + instrux_DIV, + instrux_DMINT, + instrux_EMMS, + instrux_ENTER, + instrux_EQU, + instrux_F2XM1, + instrux_FABS, + instrux_FADD, + instrux_FADDP, + instrux_FBLD, + instrux_FBSTP, + instrux_FCHS, + instrux_FCLEX, + instrux_FCMOVB, + instrux_FCMOVBE, + instrux_FCMOVE, + instrux_FCMOVNB, + instrux_FCMOVNBE, + instrux_FCMOVNE, + instrux_FCMOVNU, + instrux_FCMOVU, + instrux_FCOM, + instrux_FCOMI, + instrux_FCOMIP, + instrux_FCOMP, + instrux_FCOMPP, + instrux_FCOS, + instrux_FDECSTP, + instrux_FDISI, + instrux_FDIV, + instrux_FDIVP, + instrux_FDIVR, + instrux_FDIVRP, + instrux_FEMMS, + instrux_FENI, + instrux_FFREE, + instrux_FFREEP, + instrux_FIADD, + instrux_FICOM, + instrux_FICOMP, + instrux_FIDIV, + instrux_FIDIVR, + instrux_FILD, + instrux_FIMUL, + instrux_FINCSTP, + instrux_FINIT, + instrux_FIST, + instrux_FISTP, + instrux_FISTTP, + instrux_FISUB, + instrux_FISUBR, + instrux_FLD, + instrux_FLD1, + instrux_FLDCW, + instrux_FLDENV, + instrux_FLDL2E, + instrux_FLDL2T, + instrux_FLDLG2, + instrux_FLDLN2, + instrux_FLDPI, + instrux_FLDZ, + instrux_FMUL, + instrux_FMULP, + instrux_FNCLEX, + instrux_FNDISI, + instrux_FNENI, + instrux_FNINIT, + instrux_FNOP, + instrux_FNSAVE, + instrux_FNSTCW, + instrux_FNSTENV, + instrux_FNSTSW, + instrux_FPATAN, + instrux_FPREM, + instrux_FPREM1, + instrux_FPTAN, + instrux_FRNDINT, + instrux_FRSTOR, + instrux_FSAVE, + instrux_FSCALE, + instrux_FSETPM, + instrux_FSIN, + instrux_FSINCOS, + instrux_FSQRT, + instrux_FST, + instrux_FSTCW, + instrux_FSTENV, + instrux_FSTP, + instrux_FSTSW, + instrux_FSUB, + instrux_FSUBP, + instrux_FSUBR, + instrux_FSUBRP, + instrux_FTST, + instrux_FUCOM, + instrux_FUCOMI, + instrux_FUCOMIP, + instrux_FUCOMP, + instrux_FUCOMPP, + instrux_FXAM, + instrux_FXCH, + instrux_FXTRACT, + instrux_FYL2X, + instrux_FYL2XP1, + instrux_HLT, + instrux_IBTS, + instrux_ICEBP, + instrux_IDIV, + instrux_IMUL, + instrux_IN, + instrux_INC, + instrux_INSB, + instrux_INSD, + instrux_INSW, + instrux_INT, + instrux_INT01, + instrux_INT1, + instrux_INT03, + instrux_INT3, + instrux_INTO, + instrux_INVD, + instrux_INVPCID, + instrux_INVLPG, + instrux_INVLPGA, + instrux_IRET, + instrux_IRETD, + instrux_IRETQ, + instrux_IRETW, + instrux_JCXZ, + instrux_JECXZ, + instrux_JRCXZ, + instrux_JMP, + instrux_JMPE, + instrux_LAHF, + instrux_LAR, + instrux_LDS, + instrux_LEA, + instrux_LEAVE, + instrux_LES, + instrux_LFENCE, + instrux_LFS, + instrux_LGDT, + instrux_LGS, + instrux_LIDT, + instrux_LLDT, + instrux_LMSW, + instrux_LOADALL, + instrux_LOADALL286, + instrux_LODSB, + instrux_LODSD, + instrux_LODSQ, + instrux_LODSW, + instrux_LOOP, + instrux_LOOPE, + instrux_LOOPNE, + instrux_LOOPNZ, + instrux_LOOPZ, + instrux_LSL, + instrux_LSS, + instrux_LTR, + instrux_MFENCE, + instrux_MONITOR, + instrux_MONITORX, + instrux_MOV, + instrux_MOVD, + instrux_MOVQ, + instrux_MOVSB, + instrux_MOVSD, + instrux_MOVSQ, + instrux_MOVSW, + instrux_MOVSX, + instrux_MOVSXD, + instrux_MOVZX, + instrux_MUL, + instrux_MWAIT, + instrux_MWAITX, + instrux_NEG, + instrux_NOP, + instrux_NOT, + instrux_OR, + instrux_OUT, + instrux_OUTSB, + instrux_OUTSD, + instrux_OUTSW, + instrux_PACKSSDW, + instrux_PACKSSWB, + instrux_PACKUSWB, + instrux_PADDB, + instrux_PADDD, + instrux_PADDSB, + instrux_PADDSIW, + instrux_PADDSW, + instrux_PADDUSB, + instrux_PADDUSW, + instrux_PADDW, + instrux_PAND, + instrux_PANDN, + instrux_PAUSE, + instrux_PAVEB, + instrux_PAVGUSB, + instrux_PCMPEQB, + instrux_PCMPEQD, + instrux_PCMPEQW, + instrux_PCMPGTB, + instrux_PCMPGTD, + instrux_PCMPGTW, + instrux_PDISTIB, + instrux_PF2ID, + instrux_PFACC, + instrux_PFADD, + instrux_PFCMPEQ, + instrux_PFCMPGE, + instrux_PFCMPGT, + instrux_PFMAX, + instrux_PFMIN, + instrux_PFMUL, + instrux_PFRCP, + instrux_PFRCPIT1, + instrux_PFRCPIT2, + instrux_PFRSQIT1, + instrux_PFRSQRT, + instrux_PFSUB, + instrux_PFSUBR, + instrux_PI2FD, + instrux_PMACHRIW, + instrux_PMADDWD, + instrux_PMAGW, + instrux_PMULHRIW, + instrux_PMULHRWA, + instrux_PMULHRWC, + instrux_PMULHW, + instrux_PMULLW, + instrux_PMVGEZB, + instrux_PMVLZB, + instrux_PMVNZB, + instrux_PMVZB, + instrux_POP, + instrux_POPA, + instrux_POPAD, + instrux_POPAW, + instrux_POPF, + instrux_POPFD, + instrux_POPFQ, + instrux_POPFW, + instrux_POR, + instrux_PREFETCH, + instrux_PREFETCHW, + instrux_PSLLD, + instrux_PSLLQ, + instrux_PSLLW, + instrux_PSRAD, + instrux_PSRAW, + instrux_PSRLD, + instrux_PSRLQ, + instrux_PSRLW, + instrux_PSUBB, + instrux_PSUBD, + instrux_PSUBSB, + instrux_PSUBSIW, + instrux_PSUBSW, + instrux_PSUBUSB, + instrux_PSUBUSW, + instrux_PSUBW, + instrux_PUNPCKHBW, + instrux_PUNPCKHDQ, + instrux_PUNPCKHWD, + instrux_PUNPCKLBW, + instrux_PUNPCKLDQ, + instrux_PUNPCKLWD, + instrux_PUSH, + instrux_PUSHA, + instrux_PUSHAD, + instrux_PUSHAW, + instrux_PUSHF, + instrux_PUSHFD, + instrux_PUSHFQ, + instrux_PUSHFW, + instrux_PXOR, + instrux_RCL, + instrux_RCR, + instrux_RDSHR, + instrux_RDMSR, + instrux_RDPMC, + instrux_RDTSC, + instrux_RDTSCP, + instrux_RET, + instrux_RETF, + instrux_RETN, + instrux_RETW, + instrux_RETFW, + instrux_RETNW, + instrux_RETD, + instrux_RETFD, + instrux_RETND, + instrux_RETQ, + instrux_RETFQ, + instrux_RETNQ, + instrux_ROL, + instrux_ROR, + instrux_RDM, + instrux_RSDC, + instrux_RSLDT, + instrux_RSM, + instrux_RSTS, + instrux_SAHF, + instrux_SAL, + instrux_SALC, + instrux_SAR, + instrux_SBB, + instrux_SCASB, + instrux_SCASD, + instrux_SCASQ, + instrux_SCASW, + instrux_SFENCE, + instrux_SGDT, + instrux_SHL, + instrux_SHLD, + instrux_SHR, + instrux_SHRD, + instrux_SIDT, + instrux_SLDT, + instrux_SKINIT, + instrux_SMI, + instrux_SMINT, + instrux_SMINTOLD, + instrux_SMSW, + instrux_STC, + instrux_STD, + instrux_STI, + instrux_STOSB, + instrux_STOSD, + instrux_STOSQ, + instrux_STOSW, + instrux_STR, + instrux_SUB, + instrux_SVDC, + instrux_SVLDT, + instrux_SVTS, + instrux_SWAPGS, + instrux_SYSCALL, + instrux_SYSENTER, + instrux_SYSEXIT, + instrux_SYSRET, + instrux_TEST, + instrux_UD0, + instrux_UD1, + instrux_UD2B, + instrux_UD2, + instrux_UD2A, + instrux_UMOV, + instrux_VERR, + instrux_VERW, + instrux_FWAIT, + instrux_WBINVD, + instrux_WRSHR, + instrux_WRMSR, + instrux_XADD, + instrux_XBTS, + instrux_XCHG, + instrux_XLATB, + instrux_XLAT, + instrux_XOR, + instrux_CMOVA, + instrux_CMOVAE, + instrux_CMOVB, + instrux_CMOVBE, + instrux_CMOVC, + instrux_CMOVE, + instrux_CMOVG, + instrux_CMOVGE, + instrux_CMOVL, + instrux_CMOVLE, + instrux_CMOVNA, + instrux_CMOVNAE, + instrux_CMOVNB, + instrux_CMOVNBE, + instrux_CMOVNC, + instrux_CMOVNE, + instrux_CMOVNG, + instrux_CMOVNGE, + instrux_CMOVNL, + instrux_CMOVNLE, + instrux_CMOVNO, + instrux_CMOVNP, + instrux_CMOVNS, + instrux_CMOVNZ, + instrux_CMOVO, + instrux_CMOVP, + instrux_CMOVPE, + instrux_CMOVPO, + instrux_CMOVS, + instrux_CMOVZ, + instrux_JA, + instrux_JAE, + instrux_JB, + instrux_JBE, + instrux_JC, + instrux_JE, + instrux_JG, + instrux_JGE, + instrux_JL, + instrux_JLE, + instrux_JNA, + instrux_JNAE, + instrux_JNB, + instrux_JNBE, + instrux_JNC, + instrux_JNE, + instrux_JNG, + instrux_JNGE, + instrux_JNL, + instrux_JNLE, + instrux_JNO, + instrux_JNP, + instrux_JNS, + instrux_JNZ, + instrux_JO, + instrux_JP, + instrux_JPE, + instrux_JPO, + instrux_JS, + instrux_JZ, + instrux_SETA, + instrux_SETAE, + instrux_SETB, + instrux_SETBE, + instrux_SETC, + instrux_SETE, + instrux_SETG, + instrux_SETGE, + instrux_SETL, + instrux_SETLE, + instrux_SETNA, + instrux_SETNAE, + instrux_SETNB, + instrux_SETNBE, + instrux_SETNC, + instrux_SETNE, + instrux_SETNG, + instrux_SETNGE, + instrux_SETNL, + instrux_SETNLE, + instrux_SETNO, + instrux_SETNP, + instrux_SETNS, + instrux_SETNZ, + instrux_SETO, + instrux_SETP, + instrux_SETPE, + instrux_SETPO, + instrux_SETS, + instrux_SETZ, + instrux_ADDPS, + instrux_ADDSS, + instrux_ANDNPS, + instrux_ANDPS, + instrux_CMPEQPS, + instrux_CMPEQSS, + instrux_CMPLEPS, + instrux_CMPLESS, + instrux_CMPLTPS, + instrux_CMPLTSS, + instrux_CMPNEQPS, + instrux_CMPNEQSS, + instrux_CMPNLEPS, + instrux_CMPNLESS, + instrux_CMPNLTPS, + instrux_CMPNLTSS, + instrux_CMPORDPS, + instrux_CMPORDSS, + instrux_CMPUNORDPS, + instrux_CMPUNORDSS, + instrux_CMPPS, + instrux_CMPSS, + instrux_COMISS, + instrux_CVTPI2PS, + instrux_CVTPS2PI, + instrux_CVTSI2SS, + instrux_CVTSS2SI, + instrux_CVTTPS2PI, + instrux_CVTTSS2SI, + instrux_DIVPS, + instrux_DIVSS, + instrux_LDMXCSR, + instrux_MAXPS, + instrux_MAXSS, + instrux_MINPS, + instrux_MINSS, + instrux_MOVAPS, + instrux_MOVHPS, + instrux_MOVLHPS, + instrux_MOVLPS, + instrux_MOVHLPS, + instrux_MOVMSKPS, + instrux_MOVNTPS, + instrux_MOVSS, + instrux_MOVUPS, + instrux_MULPS, + instrux_MULSS, + instrux_ORPS, + instrux_RCPPS, + instrux_RCPSS, + instrux_RSQRTPS, + instrux_RSQRTSS, + instrux_SHUFPS, + instrux_SQRTPS, + instrux_SQRTSS, + instrux_STMXCSR, + instrux_SUBPS, + instrux_SUBSS, + instrux_UCOMISS, + instrux_UNPCKHPS, + instrux_UNPCKLPS, + instrux_XORPS, + instrux_FXRSTOR, + instrux_FXRSTOR64, + instrux_FXSAVE, + instrux_FXSAVE64, + instrux_XGETBV, + instrux_XSETBV, + instrux_XSAVE, + instrux_XSAVE64, + instrux_XSAVEC, + instrux_XSAVEC64, + instrux_XSAVEOPT, + instrux_XSAVEOPT64, + instrux_XSAVES, + instrux_XSAVES64, + instrux_XRSTOR, + instrux_XRSTOR64, + instrux_XRSTORS, + instrux_XRSTORS64, + instrux_PREFETCHNTA, + instrux_PREFETCHT0, + instrux_PREFETCHT1, + instrux_PREFETCHT2, + instrux_PREFETCHIT0, + instrux_PREFETCHIT1, + instrux_MASKMOVQ, + instrux_MOVNTQ, + instrux_PAVGB, + instrux_PAVGW, + instrux_PEXTRW, + instrux_PINSRW, + instrux_PMAXSW, + instrux_PMAXUB, + instrux_PMINSW, + instrux_PMINUB, + instrux_PMOVMSKB, + instrux_PMULHUW, + instrux_PSADBW, + instrux_PSHUFW, + instrux_PF2IW, + instrux_PFNACC, + instrux_PFPNACC, + instrux_PI2FW, + instrux_PSWAPD, + instrux_MASKMOVDQU, + instrux_CLFLUSH, + instrux_MOVNTDQ, + instrux_MOVNTI, + instrux_MOVNTPD, + instrux_MOVDQA, + instrux_MOVDQU, + instrux_MOVDQ2Q, + instrux_MOVQ2DQ, + instrux_PADDQ, + instrux_PMULUDQ, + instrux_PSHUFD, + instrux_PSHUFHW, + instrux_PSHUFLW, + instrux_PSLLDQ, + instrux_PSRLDQ, + instrux_PSUBQ, + instrux_PUNPCKHQDQ, + instrux_PUNPCKLQDQ, + instrux_ADDPD, + instrux_ADDSD, + instrux_ANDNPD, + instrux_ANDPD, + instrux_CMPEQPD, + instrux_CMPEQSD, + instrux_CMPLEPD, + instrux_CMPLESD, + instrux_CMPLTPD, + instrux_CMPLTSD, + instrux_CMPNEQPD, + instrux_CMPNEQSD, + instrux_CMPNLEPD, + instrux_CMPNLESD, + instrux_CMPNLTPD, + instrux_CMPNLTSD, + instrux_CMPORDPD, + instrux_CMPORDSD, + instrux_CMPUNORDPD, + instrux_CMPUNORDSD, + instrux_CMPPD, + instrux_COMISD, + instrux_CVTDQ2PD, + instrux_CVTDQ2PS, + instrux_CVTPD2DQ, + instrux_CVTPD2PI, + instrux_CVTPD2PS, + instrux_CVTPI2PD, + instrux_CVTPS2DQ, + instrux_CVTPS2PD, + instrux_CVTSD2SI, + instrux_CVTSD2SS, + instrux_CVTSI2SD, + instrux_CVTSS2SD, + instrux_CVTTPD2PI, + instrux_CVTTPD2DQ, + instrux_CVTTPS2DQ, + instrux_CVTTSD2SI, + instrux_DIVPD, + instrux_DIVSD, + instrux_MAXPD, + instrux_MAXSD, + instrux_MINPD, + instrux_MINSD, + instrux_MOVAPD, + instrux_MOVHPD, + instrux_MOVLPD, + instrux_MOVMSKPD, + instrux_MOVUPD, + instrux_MULPD, + instrux_MULSD, + instrux_ORPD, + instrux_SHUFPD, + instrux_SQRTPD, + instrux_SQRTSD, + instrux_SUBPD, + instrux_SUBSD, + instrux_UCOMISD, + instrux_UNPCKHPD, + instrux_UNPCKLPD, + instrux_XORPD, + instrux_ADDSUBPD, + instrux_ADDSUBPS, + instrux_HADDPD, + instrux_HADDPS, + instrux_HSUBPD, + instrux_HSUBPS, + instrux_LDDQU, + instrux_MOVDDUP, + instrux_MOVSHDUP, + instrux_MOVSLDUP, + instrux_CLGI, + instrux_STGI, + instrux_VMCALL, + instrux_VMCLEAR, + instrux_VMFUNC, + instrux_VMLAUNCH, + instrux_VMLOAD, + instrux_VMMCALL, + instrux_VMPTRLD, + instrux_VMPTRST, + instrux_VMREAD, + instrux_VMRESUME, + instrux_VMRUN, + instrux_VMSAVE, + instrux_VMWRITE, + instrux_VMXOFF, + instrux_VMXON, + instrux_INVEPT, + instrux_INVVPID, + instrux_PVALIDATE, + instrux_RMPADJUST, + instrux_VMGEXIT, + instrux_PABSB, + instrux_PABSW, + instrux_PABSD, + instrux_PALIGNR, + instrux_PHADDW, + instrux_PHADDD, + instrux_PHADDSW, + instrux_PHSUBW, + instrux_PHSUBD, + instrux_PHSUBSW, + instrux_PMADDUBSW, + instrux_PMULHRSW, + instrux_PSHUFB, + instrux_PSIGNB, + instrux_PSIGNW, + instrux_PSIGND, + instrux_EXTRQ, + instrux_INSERTQ, + instrux_MOVNTSD, + instrux_MOVNTSS, + instrux_LZCNT, + instrux_BLENDPD, + instrux_BLENDPS, + instrux_BLENDVPD, + instrux_BLENDVPS, + instrux_DPPD, + instrux_DPPS, + instrux_EXTRACTPS, + instrux_INSERTPS, + instrux_MOVNTDQA, + instrux_MPSADBW, + instrux_PACKUSDW, + instrux_PBLENDVB, + instrux_PBLENDW, + instrux_PCMPEQQ, + instrux_PEXTRB, + instrux_PEXTRD, + instrux_PEXTRQ, + instrux_PHMINPOSUW, + instrux_PINSRB, + instrux_PINSRD, + instrux_PINSRQ, + instrux_PMAXSB, + instrux_PMAXSD, + instrux_PMAXUD, + instrux_PMAXUW, + instrux_PMINSB, + instrux_PMINSD, + instrux_PMINUD, + instrux_PMINUW, + instrux_PMOVSXBW, + instrux_PMOVSXBD, + instrux_PMOVSXBQ, + instrux_PMOVSXWD, + instrux_PMOVSXWQ, + instrux_PMOVSXDQ, + instrux_PMOVZXBW, + instrux_PMOVZXBD, + instrux_PMOVZXBQ, + instrux_PMOVZXWD, + instrux_PMOVZXWQ, + instrux_PMOVZXDQ, + instrux_PMULDQ, + instrux_PMULLD, + instrux_PTEST, + instrux_ROUNDPD, + instrux_ROUNDPS, + instrux_ROUNDSD, + instrux_ROUNDSS, + instrux_CRC32, + instrux_PCMPESTRI, + instrux_PCMPESTRM, + instrux_PCMPISTRI, + instrux_PCMPISTRM, + instrux_PCMPGTQ, + instrux_POPCNT, + instrux_GETSEC, + instrux_PFRCPV, + instrux_PFRSQRTV, + instrux_MOVBE, + instrux_AESENC, + instrux_AESENCLAST, + instrux_AESDEC, + instrux_AESDECLAST, + instrux_AESIMC, + instrux_AESKEYGENASSIST, + instrux_VAESENC, + instrux_VAESENCLAST, + instrux_VAESDEC, + instrux_VAESDECLAST, + instrux_VAESIMC, + instrux_VAESKEYGENASSIST, + instrux_VADDPD, + instrux_VADDPS, + instrux_VADDSD, + instrux_VADDSS, + instrux_VADDSUBPD, + instrux_VADDSUBPS, + instrux_VANDPD, + instrux_VANDPS, + instrux_VANDNPD, + instrux_VANDNPS, + instrux_VBLENDPD, + instrux_VBLENDPS, + instrux_VBLENDVPD, + instrux_VBLENDVPS, + instrux_VBROADCASTSS, + instrux_VBROADCASTSD, + instrux_VBROADCASTF128, + instrux_VCMPEQ_OSPD, + instrux_VCMPEQPD, + instrux_VCMPLT_OSPD, + instrux_VCMPLTPD, + instrux_VCMPLE_OSPD, + instrux_VCMPLEPD, + instrux_VCMPUNORD_QPD, + instrux_VCMPUNORDPD, + instrux_VCMPNEQ_UQPD, + instrux_VCMPNEQPD, + instrux_VCMPNLT_USPD, + instrux_VCMPNLTPD, + instrux_VCMPNLE_USPD, + instrux_VCMPNLEPD, + instrux_VCMPORD_QPD, + instrux_VCMPORDPD, + instrux_VCMPEQ_UQPD, + instrux_VCMPNGE_USPD, + instrux_VCMPNGEPD, + instrux_VCMPNGT_USPD, + instrux_VCMPNGTPD, + instrux_VCMPFALSE_OQPD, + instrux_VCMPFALSEPD, + instrux_VCMPNEQ_OQPD, + instrux_VCMPGE_OSPD, + instrux_VCMPGEPD, + instrux_VCMPGT_OSPD, + instrux_VCMPGTPD, + instrux_VCMPTRUE_UQPD, + instrux_VCMPTRUEPD, + instrux_VCMPLT_OQPD, + instrux_VCMPLE_OQPD, + instrux_VCMPUNORD_SPD, + instrux_VCMPNEQ_USPD, + instrux_VCMPNLT_UQPD, + instrux_VCMPNLE_UQPD, + instrux_VCMPORD_SPD, + instrux_VCMPEQ_USPD, + instrux_VCMPNGE_UQPD, + instrux_VCMPNGT_UQPD, + instrux_VCMPFALSE_OSPD, + instrux_VCMPNEQ_OSPD, + instrux_VCMPGE_OQPD, + instrux_VCMPGT_OQPD, + instrux_VCMPTRUE_USPD, + instrux_VCMPPD, + instrux_VCMPEQ_OSPS, + instrux_VCMPEQPS, + instrux_VCMPLT_OSPS, + instrux_VCMPLTPS, + instrux_VCMPLE_OSPS, + instrux_VCMPLEPS, + instrux_VCMPUNORD_QPS, + instrux_VCMPUNORDPS, + instrux_VCMPNEQ_UQPS, + instrux_VCMPNEQPS, + instrux_VCMPNLT_USPS, + instrux_VCMPNLTPS, + instrux_VCMPNLE_USPS, + instrux_VCMPNLEPS, + instrux_VCMPORD_QPS, + instrux_VCMPORDPS, + instrux_VCMPEQ_UQPS, + instrux_VCMPNGE_USPS, + instrux_VCMPNGEPS, + instrux_VCMPNGT_USPS, + instrux_VCMPNGTPS, + instrux_VCMPFALSE_OQPS, + instrux_VCMPFALSEPS, + instrux_VCMPNEQ_OQPS, + instrux_VCMPGE_OSPS, + instrux_VCMPGEPS, + instrux_VCMPGT_OSPS, + instrux_VCMPGTPS, + instrux_VCMPTRUE_UQPS, + instrux_VCMPTRUEPS, + instrux_VCMPLT_OQPS, + instrux_VCMPLE_OQPS, + instrux_VCMPUNORD_SPS, + instrux_VCMPNEQ_USPS, + instrux_VCMPNLT_UQPS, + instrux_VCMPNLE_UQPS, + instrux_VCMPORD_SPS, + instrux_VCMPEQ_USPS, + instrux_VCMPNGE_UQPS, + instrux_VCMPNGT_UQPS, + instrux_VCMPFALSE_OSPS, + instrux_VCMPNEQ_OSPS, + instrux_VCMPGE_OQPS, + instrux_VCMPGT_OQPS, + instrux_VCMPTRUE_USPS, + instrux_VCMPPS, + instrux_VCMPEQ_OSSD, + instrux_VCMPEQSD, + instrux_VCMPLT_OSSD, + instrux_VCMPLTSD, + instrux_VCMPLE_OSSD, + instrux_VCMPLESD, + instrux_VCMPUNORD_QSD, + instrux_VCMPUNORDSD, + instrux_VCMPNEQ_UQSD, + instrux_VCMPNEQSD, + instrux_VCMPNLT_USSD, + instrux_VCMPNLTSD, + instrux_VCMPNLE_USSD, + instrux_VCMPNLESD, + instrux_VCMPORD_QSD, + instrux_VCMPORDSD, + instrux_VCMPEQ_UQSD, + instrux_VCMPNGE_USSD, + instrux_VCMPNGESD, + instrux_VCMPNGT_USSD, + instrux_VCMPNGTSD, + instrux_VCMPFALSE_OQSD, + instrux_VCMPFALSESD, + instrux_VCMPNEQ_OQSD, + instrux_VCMPGE_OSSD, + instrux_VCMPGESD, + instrux_VCMPGT_OSSD, + instrux_VCMPGTSD, + instrux_VCMPTRUE_UQSD, + instrux_VCMPTRUESD, + instrux_VCMPLT_OQSD, + instrux_VCMPLE_OQSD, + instrux_VCMPUNORD_SSD, + instrux_VCMPNEQ_USSD, + instrux_VCMPNLT_UQSD, + instrux_VCMPNLE_UQSD, + instrux_VCMPORD_SSD, + instrux_VCMPEQ_USSD, + instrux_VCMPNGE_UQSD, + instrux_VCMPNGT_UQSD, + instrux_VCMPFALSE_OSSD, + instrux_VCMPNEQ_OSSD, + instrux_VCMPGE_OQSD, + instrux_VCMPGT_OQSD, + instrux_VCMPTRUE_USSD, + instrux_VCMPSD, + instrux_VCMPEQ_OSSS, + instrux_VCMPEQSS, + instrux_VCMPLT_OSSS, + instrux_VCMPLTSS, + instrux_VCMPLE_OSSS, + instrux_VCMPLESS, + instrux_VCMPUNORD_QSS, + instrux_VCMPUNORDSS, + instrux_VCMPNEQ_UQSS, + instrux_VCMPNEQSS, + instrux_VCMPNLT_USSS, + instrux_VCMPNLTSS, + instrux_VCMPNLE_USSS, + instrux_VCMPNLESS, + instrux_VCMPORD_QSS, + instrux_VCMPORDSS, + instrux_VCMPEQ_UQSS, + instrux_VCMPNGE_USSS, + instrux_VCMPNGESS, + instrux_VCMPNGT_USSS, + instrux_VCMPNGTSS, + instrux_VCMPFALSE_OQSS, + instrux_VCMPFALSESS, + instrux_VCMPNEQ_OQSS, + instrux_VCMPGE_OSSS, + instrux_VCMPGESS, + instrux_VCMPGT_OSSS, + instrux_VCMPGTSS, + instrux_VCMPTRUE_UQSS, + instrux_VCMPTRUESS, + instrux_VCMPLT_OQSS, + instrux_VCMPLE_OQSS, + instrux_VCMPUNORD_SSS, + instrux_VCMPNEQ_USSS, + instrux_VCMPNLT_UQSS, + instrux_VCMPNLE_UQSS, + instrux_VCMPORD_SSS, + instrux_VCMPEQ_USSS, + instrux_VCMPNGE_UQSS, + instrux_VCMPNGT_UQSS, + instrux_VCMPFALSE_OSSS, + instrux_VCMPNEQ_OSSS, + instrux_VCMPGE_OQSS, + instrux_VCMPGT_OQSS, + instrux_VCMPTRUE_USSS, + instrux_VCMPSS, + instrux_VCOMISD, + instrux_VCOMISS, + instrux_VCVTDQ2PD, + instrux_VCVTDQ2PS, + instrux_VCVTPD2DQ, + instrux_VCVTPD2PS, + instrux_VCVTPS2DQ, + instrux_VCVTPS2PD, + instrux_VCVTSD2SI, + instrux_VCVTSD2SS, + instrux_VCVTSI2SD, + instrux_VCVTSI2SS, + instrux_VCVTSS2SD, + instrux_VCVTSS2SI, + instrux_VCVTTPD2DQ, + instrux_VCVTTPS2DQ, + instrux_VCVTTSD2SI, + instrux_VCVTTSS2SI, + instrux_VDIVPD, + instrux_VDIVPS, + instrux_VDIVSD, + instrux_VDIVSS, + instrux_VDPPD, + instrux_VDPPS, + instrux_VEXTRACTF128, + instrux_VEXTRACTPS, + instrux_VHADDPD, + instrux_VHADDPS, + instrux_VHSUBPD, + instrux_VHSUBPS, + instrux_VINSERTF128, + instrux_VINSERTPS, + instrux_VLDDQU, + instrux_VLDQQU, + instrux_VLDMXCSR, + instrux_VMASKMOVDQU, + instrux_VMASKMOVPS, + instrux_VMASKMOVPD, + instrux_VMAXPD, + instrux_VMAXPS, + instrux_VMAXSD, + instrux_VMAXSS, + instrux_VMINPD, + instrux_VMINPS, + instrux_VMINSD, + instrux_VMINSS, + instrux_VMOVAPD, + instrux_VMOVAPS, + instrux_VMOVD, + instrux_VMOVQ, + instrux_VMOVDDUP, + instrux_VMOVDQA, + instrux_VMOVQQA, + instrux_VMOVDQU, + instrux_VMOVQQU, + instrux_VMOVHLPS, + instrux_VMOVHPD, + instrux_VMOVHPS, + instrux_VMOVLHPS, + instrux_VMOVLPD, + instrux_VMOVLPS, + instrux_VMOVMSKPD, + instrux_VMOVMSKPS, + instrux_VMOVNTDQ, + instrux_VMOVNTQQ, + instrux_VMOVNTDQA, + instrux_VMOVNTPD, + instrux_VMOVNTPS, + instrux_VMOVSD, + instrux_VMOVSHDUP, + instrux_VMOVSLDUP, + instrux_VMOVSS, + instrux_VMOVUPD, + instrux_VMOVUPS, + instrux_VMPSADBW, + instrux_VMULPD, + instrux_VMULPS, + instrux_VMULSD, + instrux_VMULSS, + instrux_VORPD, + instrux_VORPS, + instrux_VPABSB, + instrux_VPABSW, + instrux_VPABSD, + instrux_VPACKSSWB, + instrux_VPACKSSDW, + instrux_VPACKUSWB, + instrux_VPACKUSDW, + instrux_VPADDB, + instrux_VPADDW, + instrux_VPADDD, + instrux_VPADDQ, + instrux_VPADDSB, + instrux_VPADDSW, + instrux_VPADDUSB, + instrux_VPADDUSW, + instrux_VPALIGNR, + instrux_VPAND, + instrux_VPANDN, + instrux_VPAVGB, + instrux_VPAVGW, + instrux_VPBLENDVB, + instrux_VPBLENDW, + instrux_VPCMPESTRI, + instrux_VPCMPESTRM, + instrux_VPCMPISTRI, + instrux_VPCMPISTRM, + instrux_VPCMPEQB, + instrux_VPCMPEQW, + instrux_VPCMPEQD, + instrux_VPCMPEQQ, + instrux_VPCMPGTB, + instrux_VPCMPGTW, + instrux_VPCMPGTD, + instrux_VPCMPGTQ, + instrux_VPERMILPD, + instrux_VPERMILPS, + instrux_VPERM2F128, + instrux_VPEXTRB, + instrux_VPEXTRW, + instrux_VPEXTRD, + instrux_VPEXTRQ, + instrux_VPHADDW, + instrux_VPHADDD, + instrux_VPHADDSW, + instrux_VPHMINPOSUW, + instrux_VPHSUBW, + instrux_VPHSUBD, + instrux_VPHSUBSW, + instrux_VPINSRB, + instrux_VPINSRW, + instrux_VPINSRD, + instrux_VPINSRQ, + instrux_VPMADDWD, + instrux_VPMADDUBSW, + instrux_VPMAXSB, + instrux_VPMAXSW, + instrux_VPMAXSD, + instrux_VPMAXUB, + instrux_VPMAXUW, + instrux_VPMAXUD, + instrux_VPMINSB, + instrux_VPMINSW, + instrux_VPMINSD, + instrux_VPMINUB, + instrux_VPMINUW, + instrux_VPMINUD, + instrux_VPMOVMSKB, + instrux_VPMOVSXBW, + instrux_VPMOVSXBD, + instrux_VPMOVSXBQ, + instrux_VPMOVSXWD, + instrux_VPMOVSXWQ, + instrux_VPMOVSXDQ, + instrux_VPMOVZXBW, + instrux_VPMOVZXBD, + instrux_VPMOVZXBQ, + instrux_VPMOVZXWD, + instrux_VPMOVZXWQ, + instrux_VPMOVZXDQ, + instrux_VPMULHUW, + instrux_VPMULHRSW, + instrux_VPMULHW, + instrux_VPMULLW, + instrux_VPMULLD, + instrux_VPMULUDQ, + instrux_VPMULDQ, + instrux_VPOR, + instrux_VPSADBW, + instrux_VPSHUFB, + instrux_VPSHUFD, + instrux_VPSHUFHW, + instrux_VPSHUFLW, + instrux_VPSIGNB, + instrux_VPSIGNW, + instrux_VPSIGND, + instrux_VPSLLDQ, + instrux_VPSRLDQ, + instrux_VPSLLW, + instrux_VPSLLD, + instrux_VPSLLQ, + instrux_VPSRAW, + instrux_VPSRAD, + instrux_VPSRLW, + instrux_VPSRLD, + instrux_VPSRLQ, + instrux_VPTEST, + instrux_VPSUBB, + instrux_VPSUBW, + instrux_VPSUBD, + instrux_VPSUBQ, + instrux_VPSUBSB, + instrux_VPSUBSW, + instrux_VPSUBUSB, + instrux_VPSUBUSW, + instrux_VPUNPCKHBW, + instrux_VPUNPCKHWD, + instrux_VPUNPCKHDQ, + instrux_VPUNPCKHQDQ, + instrux_VPUNPCKLBW, + instrux_VPUNPCKLWD, + instrux_VPUNPCKLDQ, + instrux_VPUNPCKLQDQ, + instrux_VPXOR, + instrux_VRCPPS, + instrux_VRCPSS, + instrux_VRSQRTPS, + instrux_VRSQRTSS, + instrux_VROUNDPD, + instrux_VROUNDPS, + instrux_VROUNDSD, + instrux_VROUNDSS, + instrux_VSHUFPD, + instrux_VSHUFPS, + instrux_VSQRTPD, + instrux_VSQRTPS, + instrux_VSQRTSD, + instrux_VSQRTSS, + instrux_VSTMXCSR, + instrux_VSUBPD, + instrux_VSUBPS, + instrux_VSUBSD, + instrux_VSUBSS, + instrux_VTESTPS, + instrux_VTESTPD, + instrux_VUCOMISD, + instrux_VUCOMISS, + instrux_VUNPCKHPD, + instrux_VUNPCKHPS, + instrux_VUNPCKLPD, + instrux_VUNPCKLPS, + instrux_VXORPD, + instrux_VXORPS, + instrux_VZEROALL, + instrux_VZEROUPPER, + instrux_PCLMULLQLQDQ, + instrux_PCLMULHQLQDQ, + instrux_PCLMULLQHQDQ, + instrux_PCLMULHQHQDQ, + instrux_PCLMULQDQ, + instrux_VPCLMULLQLQDQ, + instrux_VPCLMULHQLQDQ, + instrux_VPCLMULLQHQDQ, + instrux_VPCLMULHQHQDQ, + instrux_VPCLMULQDQ, + instrux_VFMADD132PS, + instrux_VFMADD132PD, + instrux_VFMADD312PS, + instrux_VFMADD312PD, + instrux_VFMADD213PS, + instrux_VFMADD213PD, + instrux_VFMADD123PS, + instrux_VFMADD123PD, + instrux_VFMADD231PS, + instrux_VFMADD231PD, + instrux_VFMADD321PS, + instrux_VFMADD321PD, + instrux_VFMADDSUB132PS, + instrux_VFMADDSUB132PD, + instrux_VFMADDSUB312PS, + instrux_VFMADDSUB312PD, + instrux_VFMADDSUB213PS, + instrux_VFMADDSUB213PD, + instrux_VFMADDSUB123PS, + instrux_VFMADDSUB123PD, + instrux_VFMADDSUB231PS, + instrux_VFMADDSUB231PD, + instrux_VFMADDSUB321PS, + instrux_VFMADDSUB321PD, + instrux_VFMSUB132PS, + instrux_VFMSUB132PD, + instrux_VFMSUB312PS, + instrux_VFMSUB312PD, + instrux_VFMSUB213PS, + instrux_VFMSUB213PD, + instrux_VFMSUB123PS, + instrux_VFMSUB123PD, + instrux_VFMSUB231PS, + instrux_VFMSUB231PD, + instrux_VFMSUB321PS, + instrux_VFMSUB321PD, + instrux_VFMSUBADD132PS, + instrux_VFMSUBADD132PD, + instrux_VFMSUBADD312PS, + instrux_VFMSUBADD312PD, + instrux_VFMSUBADD213PS, + instrux_VFMSUBADD213PD, + instrux_VFMSUBADD123PS, + instrux_VFMSUBADD123PD, + instrux_VFMSUBADD231PS, + instrux_VFMSUBADD231PD, + instrux_VFMSUBADD321PS, + instrux_VFMSUBADD321PD, + instrux_VFNMADD132PS, + instrux_VFNMADD132PD, + instrux_VFNMADD312PS, + instrux_VFNMADD312PD, + instrux_VFNMADD213PS, + instrux_VFNMADD213PD, + instrux_VFNMADD123PS, + instrux_VFNMADD123PD, + instrux_VFNMADD231PS, + instrux_VFNMADD231PD, + instrux_VFNMADD321PS, + instrux_VFNMADD321PD, + instrux_VFNMSUB132PS, + instrux_VFNMSUB132PD, + instrux_VFNMSUB312PS, + instrux_VFNMSUB312PD, + instrux_VFNMSUB213PS, + instrux_VFNMSUB213PD, + instrux_VFNMSUB123PS, + instrux_VFNMSUB123PD, + instrux_VFNMSUB231PS, + instrux_VFNMSUB231PD, + instrux_VFNMSUB321PS, + instrux_VFNMSUB321PD, + instrux_VFMADD132SS, + instrux_VFMADD132SD, + instrux_VFMADD312SS, + instrux_VFMADD312SD, + instrux_VFMADD213SS, + instrux_VFMADD213SD, + instrux_VFMADD123SS, + instrux_VFMADD123SD, + instrux_VFMADD231SS, + instrux_VFMADD231SD, + instrux_VFMADD321SS, + instrux_VFMADD321SD, + instrux_VFMSUB132SS, + instrux_VFMSUB132SD, + instrux_VFMSUB312SS, + instrux_VFMSUB312SD, + instrux_VFMSUB213SS, + instrux_VFMSUB213SD, + instrux_VFMSUB123SS, + instrux_VFMSUB123SD, + instrux_VFMSUB231SS, + instrux_VFMSUB231SD, + instrux_VFMSUB321SS, + instrux_VFMSUB321SD, + instrux_VFNMADD132SS, + instrux_VFNMADD132SD, + instrux_VFNMADD312SS, + instrux_VFNMADD312SD, + instrux_VFNMADD213SS, + instrux_VFNMADD213SD, + instrux_VFNMADD123SS, + instrux_VFNMADD123SD, + instrux_VFNMADD231SS, + instrux_VFNMADD231SD, + instrux_VFNMADD321SS, + instrux_VFNMADD321SD, + instrux_VFNMSUB132SS, + instrux_VFNMSUB132SD, + instrux_VFNMSUB312SS, + instrux_VFNMSUB312SD, + instrux_VFNMSUB213SS, + instrux_VFNMSUB213SD, + instrux_VFNMSUB123SS, + instrux_VFNMSUB123SD, + instrux_VFNMSUB231SS, + instrux_VFNMSUB231SD, + instrux_VFNMSUB321SS, + instrux_VFNMSUB321SD, + instrux_RDFSBASE, + instrux_RDGSBASE, + instrux_RDRAND, + instrux_WRFSBASE, + instrux_WRGSBASE, + instrux_VCVTPH2PS, + instrux_VCVTPS2PH, + instrux_ADCX, + instrux_ADOX, + instrux_RDSEED, + instrux_CLAC, + instrux_STAC, + instrux_XSTORE, + instrux_XCRYPTECB, + instrux_XCRYPTCBC, + instrux_XCRYPTCTR, + instrux_XCRYPTCFB, + instrux_XCRYPTOFB, + instrux_MONTMUL, + instrux_XSHA1, + instrux_XSHA256, + instrux_LLWPCB, + instrux_SLWPCB, + instrux_LWPVAL, + instrux_LWPINS, + instrux_VFMADDPD, + instrux_VFMADDPS, + instrux_VFMADDSD, + instrux_VFMADDSS, + instrux_VFMADDSUBPD, + instrux_VFMADDSUBPS, + instrux_VFMSUBADDPD, + instrux_VFMSUBADDPS, + instrux_VFMSUBPD, + instrux_VFMSUBPS, + instrux_VFMSUBSD, + instrux_VFMSUBSS, + instrux_VFNMADDPD, + instrux_VFNMADDPS, + instrux_VFNMADDSD, + instrux_VFNMADDSS, + instrux_VFNMSUBPD, + instrux_VFNMSUBPS, + instrux_VFNMSUBSD, + instrux_VFNMSUBSS, + instrux_VFRCZPD, + instrux_VFRCZPS, + instrux_VFRCZSD, + instrux_VFRCZSS, + instrux_VPCMOV, + instrux_VPCOMB, + instrux_VPCOMD, + instrux_VPCOMQ, + instrux_VPCOMUB, + instrux_VPCOMUD, + instrux_VPCOMUQ, + instrux_VPCOMUW, + instrux_VPCOMW, + instrux_VPHADDBD, + instrux_VPHADDBQ, + instrux_VPHADDBW, + instrux_VPHADDDQ, + instrux_VPHADDUBD, + instrux_VPHADDUBQ, + instrux_VPHADDUBW, + instrux_VPHADDUDQ, + instrux_VPHADDUWD, + instrux_VPHADDUWQ, + instrux_VPHADDWD, + instrux_VPHADDWQ, + instrux_VPHSUBBW, + instrux_VPHSUBDQ, + instrux_VPHSUBWD, + instrux_VPMACSDD, + instrux_VPMACSDQH, + instrux_VPMACSDQL, + instrux_VPMACSSDD, + instrux_VPMACSSDQH, + instrux_VPMACSSDQL, + instrux_VPMACSSWD, + instrux_VPMACSSWW, + instrux_VPMACSWD, + instrux_VPMACSWW, + instrux_VPMADCSSWD, + instrux_VPMADCSWD, + instrux_VPPERM, + instrux_VPROTB, + instrux_VPROTD, + instrux_VPROTQ, + instrux_VPROTW, + instrux_VPSHAB, + instrux_VPSHAD, + instrux_VPSHAQ, + instrux_VPSHAW, + instrux_VPSHLB, + instrux_VPSHLD, + instrux_VPSHLQ, + instrux_VPSHLW, + instrux_VBROADCASTI128, + instrux_VPBLENDD, + instrux_VPBROADCASTB, + instrux_VPBROADCASTW, + instrux_VPBROADCASTD, + instrux_VPBROADCASTQ, + instrux_VPERMD, + instrux_VPERMPD, + instrux_VPERMPS, + instrux_VPERMQ, + instrux_VPERM2I128, + instrux_VEXTRACTI128, + instrux_VINSERTI128, + instrux_VPMASKMOVD, + instrux_VPMASKMOVQ, + instrux_VPSLLVD, + instrux_VPSLLVQ, + instrux_VPSRAVD, + instrux_VPSRLVD, + instrux_VPSRLVQ, + instrux_VGATHERDPD, + instrux_VGATHERQPD, + instrux_VGATHERDPS, + instrux_VGATHERQPS, + instrux_VPGATHERDD, + instrux_VPGATHERQD, + instrux_VPGATHERDQ, + instrux_VPGATHERQQ, + instrux_XABORT, + instrux_XBEGIN, + instrux_XEND, + instrux_XTEST, + instrux_ANDN, + instrux_BEXTR, + instrux_BLCI, + instrux_BLCIC, + instrux_BLSI, + instrux_BLSIC, + instrux_BLCFILL, + instrux_BLSFILL, + instrux_BLCMSK, + instrux_BLSMSK, + instrux_BLSR, + instrux_BLCS, + instrux_BZHI, + instrux_MULX, + instrux_PDEP, + instrux_PEXT, + instrux_RORX, + instrux_SARX, + instrux_SHLX, + instrux_SHRX, + instrux_TZCNT, + instrux_TZMSK, + instrux_T1MSKC, + instrux_PREFETCHWT1, + instrux_BNDMK, + instrux_BNDCL, + instrux_BNDCU, + instrux_BNDCN, + instrux_BNDMOV, + instrux_BNDLDX, + instrux_BNDSTX, + instrux_SHA1MSG1, + instrux_SHA1MSG2, + instrux_SHA1NEXTE, + instrux_SHA1RNDS4, + instrux_SHA256MSG1, + instrux_SHA256MSG2, + instrux_SHA256RNDS2, + instrux_VBCSTNEBF16PS, + instrux_VBCSTNESH2PS, + instrux_VCVTNEEBF162PS, + instrux_VCVTNEEPH2PS, + instrux_VCVTNEOBF162PS, + instrux_VCVTNEOPH2PS, + instrux_VCVTNEPS2BF16, + instrux_VPDPBSSD, + instrux_VPDPBSSDS, + instrux_VPDPBSUD, + instrux_VPDPBSUDS, + instrux_VPDPBUUD, + instrux_VPDPBUUDS, + instrux_VPMADD52HUQ, + instrux_VPMADD52LUQ, + instrux_KADDB, + instrux_KADDD, + instrux_KADDQ, + instrux_KADDW, + instrux_KANDB, + instrux_KANDD, + instrux_KANDNB, + instrux_KANDND, + instrux_KANDNQ, + instrux_KANDNW, + instrux_KANDQ, + instrux_KANDW, + instrux_KMOVB, + instrux_KMOVD, + instrux_KMOVQ, + instrux_KMOVW, + instrux_KNOTB, + instrux_KNOTD, + instrux_KNOTQ, + instrux_KNOTW, + instrux_KORB, + instrux_KORD, + instrux_KORQ, + instrux_KORW, + instrux_KORTESTB, + instrux_KORTESTD, + instrux_KORTESTQ, + instrux_KORTESTW, + instrux_KSHIFTLB, + instrux_KSHIFTLD, + instrux_KSHIFTLQ, + instrux_KSHIFTLW, + instrux_KSHIFTRB, + instrux_KSHIFTRD, + instrux_KSHIFTRQ, + instrux_KSHIFTRW, + instrux_KTESTB, + instrux_KTESTD, + instrux_KTESTQ, + instrux_KTESTW, + instrux_KUNPCKBW, + instrux_KUNPCKDQ, + instrux_KUNPCKWD, + instrux_KXNORB, + instrux_KXNORD, + instrux_KXNORQ, + instrux_KXNORW, + instrux_KXORB, + instrux_KXORD, + instrux_KXORQ, + instrux_KXORW, + instrux_KADD, + instrux_KAND, + instrux_KANDN, + instrux_KMOV, + instrux_KNOT, + instrux_KOR, + instrux_KORTEST, + instrux_KSHIFTL, + instrux_KSHIFTR, + instrux_KTEST, + instrux_KUNPCK, + instrux_KXNOR, + instrux_KXOR, + instrux_VALIGND, + instrux_VALIGNQ, + instrux_VBLENDMPD, + instrux_VBLENDMPS, + instrux_VBROADCASTF32X2, + instrux_VBROADCASTF32X4, + instrux_VBROADCASTF32X8, + instrux_VBROADCASTF64X2, + instrux_VBROADCASTF64X4, + instrux_VBROADCASTI32X2, + instrux_VBROADCASTI32X4, + instrux_VBROADCASTI32X8, + instrux_VBROADCASTI64X2, + instrux_VBROADCASTI64X4, + instrux_VCMPEQ_OQPD, + instrux_VCMPEQ_OQPS, + instrux_VCMPEQ_OQSD, + instrux_VCMPEQ_OQSS, + instrux_VCOMPRESSPD, + instrux_VCOMPRESSPS, + instrux_VCVTPD2QQ, + instrux_VCVTPD2UDQ, + instrux_VCVTPD2UQQ, + instrux_VCVTPS2QQ, + instrux_VCVTPS2UDQ, + instrux_VCVTPS2UQQ, + instrux_VCVTQQ2PD, + instrux_VCVTQQ2PS, + instrux_VCVTSD2USI, + instrux_VCVTSS2USI, + instrux_VCVTTPD2QQ, + instrux_VCVTTPD2UDQ, + instrux_VCVTTPD2UQQ, + instrux_VCVTTPS2QQ, + instrux_VCVTTPS2UDQ, + instrux_VCVTTPS2UQQ, + instrux_VCVTTSD2USI, + instrux_VCVTTSS2USI, + instrux_VCVTUDQ2PD, + instrux_VCVTUDQ2PS, + instrux_VCVTUQQ2PD, + instrux_VCVTUQQ2PS, + instrux_VCVTUSI2SD, + instrux_VCVTUSI2SS, + instrux_VDBPSADBW, + instrux_VEXP2PD, + instrux_VEXP2PS, + instrux_VEXPANDPD, + instrux_VEXPANDPS, + instrux_VEXTRACTF32X4, + instrux_VEXTRACTF32X8, + instrux_VEXTRACTF64X2, + instrux_VEXTRACTF64X4, + instrux_VEXTRACTI32X4, + instrux_VEXTRACTI32X8, + instrux_VEXTRACTI64X2, + instrux_VEXTRACTI64X4, + instrux_VFIXUPIMMPD, + instrux_VFIXUPIMMPS, + instrux_VFIXUPIMMSD, + instrux_VFIXUPIMMSS, + instrux_VFPCLASSPD, + instrux_VFPCLASSPS, + instrux_VFPCLASSSD, + instrux_VFPCLASSSS, + instrux_VGATHERPF0DPD, + instrux_VGATHERPF0DPS, + instrux_VGATHERPF0QPD, + instrux_VGATHERPF0QPS, + instrux_VGATHERPF1DPD, + instrux_VGATHERPF1DPS, + instrux_VGATHERPF1QPD, + instrux_VGATHERPF1QPS, + instrux_VGETEXPPD, + instrux_VGETEXPPS, + instrux_VGETEXPSD, + instrux_VGETEXPSS, + instrux_VGETMANTPD, + instrux_VGETMANTPS, + instrux_VGETMANTSD, + instrux_VGETMANTSS, + instrux_VINSERTF32X4, + instrux_VINSERTF32X8, + instrux_VINSERTF64X2, + instrux_VINSERTF64X4, + instrux_VINSERTI32X4, + instrux_VINSERTI32X8, + instrux_VINSERTI64X2, + instrux_VINSERTI64X4, + instrux_VMOVDQA32, + instrux_VMOVDQA64, + instrux_VMOVDQU16, + instrux_VMOVDQU32, + instrux_VMOVDQU64, + instrux_VMOVDQU8, + instrux_VPABSQ, + instrux_VPANDD, + instrux_VPANDND, + instrux_VPANDNQ, + instrux_VPANDQ, + instrux_VPBLENDMB, + instrux_VPBLENDMD, + instrux_VPBLENDMQ, + instrux_VPBLENDMW, + instrux_VPBROADCASTMB2Q, + instrux_VPBROADCASTMW2D, + instrux_VPCMPEQUB, + instrux_VPCMPEQUD, + instrux_VPCMPEQUQ, + instrux_VPCMPEQUW, + instrux_VPCMPGEB, + instrux_VPCMPGED, + instrux_VPCMPGEQ, + instrux_VPCMPGEUB, + instrux_VPCMPGEUD, + instrux_VPCMPGEUQ, + instrux_VPCMPGEUW, + instrux_VPCMPGEW, + instrux_VPCMPGTUB, + instrux_VPCMPGTUD, + instrux_VPCMPGTUQ, + instrux_VPCMPGTUW, + instrux_VPCMPLEB, + instrux_VPCMPLED, + instrux_VPCMPLEQ, + instrux_VPCMPLEUB, + instrux_VPCMPLEUD, + instrux_VPCMPLEUQ, + instrux_VPCMPLEUW, + instrux_VPCMPLEW, + instrux_VPCMPLTB, + instrux_VPCMPLTD, + instrux_VPCMPLTQ, + instrux_VPCMPLTUB, + instrux_VPCMPLTUD, + instrux_VPCMPLTUQ, + instrux_VPCMPLTUW, + instrux_VPCMPLTW, + instrux_VPCMPNEQB, + instrux_VPCMPNEQD, + instrux_VPCMPNEQQ, + instrux_VPCMPNEQUB, + instrux_VPCMPNEQUD, + instrux_VPCMPNEQUQ, + instrux_VPCMPNEQUW, + instrux_VPCMPNEQW, + instrux_VPCMPNGTB, + instrux_VPCMPNGTD, + instrux_VPCMPNGTQ, + instrux_VPCMPNGTUB, + instrux_VPCMPNGTUD, + instrux_VPCMPNGTUQ, + instrux_VPCMPNGTUW, + instrux_VPCMPNGTW, + instrux_VPCMPNLEB, + instrux_VPCMPNLED, + instrux_VPCMPNLEQ, + instrux_VPCMPNLEUB, + instrux_VPCMPNLEUD, + instrux_VPCMPNLEUQ, + instrux_VPCMPNLEUW, + instrux_VPCMPNLEW, + instrux_VPCMPNLTB, + instrux_VPCMPNLTD, + instrux_VPCMPNLTQ, + instrux_VPCMPNLTUB, + instrux_VPCMPNLTUD, + instrux_VPCMPNLTUQ, + instrux_VPCMPNLTUW, + instrux_VPCMPNLTW, + instrux_VPCMPB, + instrux_VPCMPD, + instrux_VPCMPQ, + instrux_VPCMPUB, + instrux_VPCMPUD, + instrux_VPCMPUQ, + instrux_VPCMPUW, + instrux_VPCMPW, + instrux_VPCOMPRESSD, + instrux_VPCOMPRESSQ, + instrux_VPCONFLICTD, + instrux_VPCONFLICTQ, + instrux_VPERMB, + instrux_VPERMI2B, + instrux_VPERMI2D, + instrux_VPERMI2PD, + instrux_VPERMI2PS, + instrux_VPERMI2Q, + instrux_VPERMI2W, + instrux_VPERMT2B, + instrux_VPERMT2D, + instrux_VPERMT2PD, + instrux_VPERMT2PS, + instrux_VPERMT2Q, + instrux_VPERMT2W, + instrux_VPERMW, + instrux_VPEXPANDD, + instrux_VPEXPANDQ, + instrux_VPLZCNTD, + instrux_VPLZCNTQ, + instrux_VPMAXSQ, + instrux_VPMAXUQ, + instrux_VPMINSQ, + instrux_VPMINUQ, + instrux_VPMOVB2M, + instrux_VPMOVD2M, + instrux_VPMOVDB, + instrux_VPMOVDW, + instrux_VPMOVM2B, + instrux_VPMOVM2D, + instrux_VPMOVM2Q, + instrux_VPMOVM2W, + instrux_VPMOVQ2M, + instrux_VPMOVQB, + instrux_VPMOVQD, + instrux_VPMOVQW, + instrux_VPMOVSDB, + instrux_VPMOVSDW, + instrux_VPMOVSQB, + instrux_VPMOVSQD, + instrux_VPMOVSQW, + instrux_VPMOVSWB, + instrux_VPMOVUSDB, + instrux_VPMOVUSDW, + instrux_VPMOVUSQB, + instrux_VPMOVUSQD, + instrux_VPMOVUSQW, + instrux_VPMOVUSWB, + instrux_VPMOVW2M, + instrux_VPMOVWB, + instrux_VPMULLQ, + instrux_VPMULTISHIFTQB, + instrux_VPORD, + instrux_VPORQ, + instrux_VPROLD, + instrux_VPROLQ, + instrux_VPROLVD, + instrux_VPROLVQ, + instrux_VPRORD, + instrux_VPRORQ, + instrux_VPRORVD, + instrux_VPRORVQ, + instrux_VPSCATTERDD, + instrux_VPSCATTERDQ, + instrux_VPSCATTERQD, + instrux_VPSCATTERQQ, + instrux_VPSLLVW, + instrux_VPSRAQ, + instrux_VPSRAVQ, + instrux_VPSRAVW, + instrux_VPSRLVW, + instrux_VPTERNLOGD, + instrux_VPTERNLOGQ, + instrux_VPTESTMB, + instrux_VPTESTMD, + instrux_VPTESTMQ, + instrux_VPTESTMW, + instrux_VPTESTNMB, + instrux_VPTESTNMD, + instrux_VPTESTNMQ, + instrux_VPTESTNMW, + instrux_VPXORD, + instrux_VPXORQ, + instrux_VRANGEPD, + instrux_VRANGEPS, + instrux_VRANGESD, + instrux_VRANGESS, + instrux_VRCP14PD, + instrux_VRCP14PS, + instrux_VRCP14SD, + instrux_VRCP14SS, + instrux_VRCP28PD, + instrux_VRCP28PS, + instrux_VRCP28SD, + instrux_VRCP28SS, + instrux_VREDUCEPD, + instrux_VREDUCEPS, + instrux_VREDUCESD, + instrux_VREDUCESS, + instrux_VRNDSCALEPD, + instrux_VRNDSCALEPS, + instrux_VRNDSCALESD, + instrux_VRNDSCALESS, + instrux_VRSQRT14PD, + instrux_VRSQRT14PS, + instrux_VRSQRT14SD, + instrux_VRSQRT14SS, + instrux_VRSQRT28PD, + instrux_VRSQRT28PS, + instrux_VRSQRT28SD, + instrux_VRSQRT28SS, + instrux_VSCALEFPD, + instrux_VSCALEFPS, + instrux_VSCALEFSD, + instrux_VSCALEFSS, + instrux_VSCATTERDPD, + instrux_VSCATTERDPS, + instrux_VSCATTERPF0DPD, + instrux_VSCATTERPF0DPS, + instrux_VSCATTERPF0QPD, + instrux_VSCATTERPF0QPS, + instrux_VSCATTERPF1DPD, + instrux_VSCATTERPF1DPS, + instrux_VSCATTERPF1QPD, + instrux_VSCATTERPF1QPS, + instrux_VSCATTERQPD, + instrux_VSCATTERQPS, + instrux_VSHUFF32X4, + instrux_VSHUFF64X2, + instrux_VSHUFI32X4, + instrux_VSHUFI64X2, + instrux_RDPKRU, + instrux_WRPKRU, + instrux_RDPID, + instrux_CLFLUSHOPT, + instrux_CLWB, + instrux_PCOMMIT, + instrux_CLZERO, + instrux_PTWRITE, + instrux_CLDEMOTE, + instrux_MOVDIRI, + instrux_MOVDIR64B, + instrux_PCONFIG, + instrux_TPAUSE, + instrux_UMONITOR, + instrux_UMWAIT, + instrux_WBNOINVD, + instrux_GF2P8AFFINEINVQB, + instrux_VGF2P8AFFINEINVQB, + instrux_GF2P8AFFINEQB, + instrux_VGF2P8AFFINEQB, + instrux_GF2P8MULB, + instrux_VGF2P8MULB, + instrux_VPCOMPRESSB, + instrux_VPCOMPRESSW, + instrux_VPEXPANDB, + instrux_VPEXPANDW, + instrux_VPSHLDW, + instrux_VPSHLDD, + instrux_VPSHLDQ, + instrux_VPSHLDVW, + instrux_VPSHLDVD, + instrux_VPSHLDVQ, + instrux_VPSHRDW, + instrux_VPSHRDD, + instrux_VPSHRDQ, + instrux_VPSHRDVW, + instrux_VPSHRDVD, + instrux_VPSHRDVQ, + instrux_VPDPBUSD, + instrux_VPDPBUSDS, + instrux_VPDPWSSD, + instrux_VPDPWSSDS, + instrux_VPOPCNTB, + instrux_VPOPCNTW, + instrux_VPOPCNTD, + instrux_VPOPCNTQ, + instrux_VPSHUFBITQMB, + instrux_V4FMADDPS, + instrux_V4FNMADDPS, + instrux_V4FMADDSS, + instrux_V4FNMADDSS, + instrux_V4DPWSSDS, + instrux_V4DPWSSD, + instrux_ENCLS, + instrux_ENCLU, + instrux_ENCLV, + instrux_CLRSSBSY, + instrux_ENDBR32, + instrux_ENDBR64, + instrux_INCSSPD, + instrux_INCSSPQ, + instrux_RDSSPD, + instrux_RDSSPQ, + instrux_RSTORSSP, + instrux_SAVEPREVSSP, + instrux_SETSSBSY, + instrux_WRUSSD, + instrux_WRUSSQ, + instrux_WRSSD, + instrux_WRSSQ, + instrux_ENQCMD, + instrux_ENQCMDS, + instrux_SERIALIZE, + instrux_XRESLDTRK, + instrux_XSUSLDTRK, + instrux_VCVTNE2PS2BF16, + instrux_VDPBF16PS, + instrux_VP2INTERSECTD, + instrux_LDTILECFG, + instrux_STTILECFG, + instrux_TDPBF16PS, + instrux_TDPBSSD, + instrux_TDPBSUD, + instrux_TDPBUSD, + instrux_TDPBUUD, + instrux_TILELOADD, + instrux_TILELOADDT1, + instrux_TILERELEASE, + instrux_TILESTORED, + instrux_TILEZERO, + instrux_VADDPH, + instrux_VADDSH, + instrux_VCMPPH, + instrux_VCMPSH, + instrux_VCOMISH, + instrux_VCVTDQ2PH, + instrux_VCVTPD2PH, + instrux_VCVTPH2DQ, + instrux_VCVTPH2PD, + instrux_VCVTPH2PSX, + instrux_VCVTPH2QQ, + instrux_VCVTPH2UDQ, + instrux_VCVTPH2UQQ, + instrux_VCVTPH2UW, + instrux_VCVTPH2W, + instrux_VCVTQQ2PH, + instrux_VCVTSD2SH, + instrux_VCVTSH2SD, + instrux_VCVTSH2SI, + instrux_VCVTSH2SS, + instrux_VCVTSH2USI, + instrux_VCVTSI2SH, + instrux_VCVTSS2SH, + instrux_VCVTTPH2DQ, + instrux_VCVTTPH2QQ, + instrux_VCVTTPH2UDQ, + instrux_VCVTTPH2UQQ, + instrux_VCVTTPH2UW, + instrux_VCVTTPH2W, + instrux_VCVTTSH2SI, + instrux_VCVTTSH2USI, + instrux_VCVTUDQ2PH, + instrux_VCVTUQQ2PH, + instrux_VCVTUSI2SH, + instrux_VCVTUW2PH, + instrux_VCVTW2PH, + instrux_VDIVPH, + instrux_VDIVSH, + instrux_VFCMADDCPH, + instrux_VFMADDCPH, + instrux_VFCMADDCSH, + instrux_VFMADDCSH, + instrux_VFCMULCPCH, + instrux_VFMULCPCH, + instrux_VFCMULCSH, + instrux_VFMULCSH, + instrux_VFMADDSUB132PH, + instrux_VFMADDSUB213PH, + instrux_VFMADDSUB231PH, + instrux_VFMSUBADD132PH, + instrux_VFMSUBADD213PH, + instrux_VFMSUBADD231PH, + instrux_VPMADD132PH, + instrux_VPMADD213PH, + instrux_VPMADD231PH, + instrux_VFMADD132PH, + instrux_VFMADD213PH, + instrux_VFMADD231PH, + instrux_VPMADD132SH, + instrux_VPMADD213SH, + instrux_VPMADD231SH, + instrux_VPNMADD132SH, + instrux_VPNMADD213SH, + instrux_VPNMADD231SH, + instrux_VPMSUB132PH, + instrux_VPMSUB213PH, + instrux_VPMSUB231PH, + instrux_VFMSUB132PH, + instrux_VFMSUB213PH, + instrux_VFMSUB231PH, + instrux_VPMSUB132SH, + instrux_VPMSUB213SH, + instrux_VPMSUB231SH, + instrux_VPNMSUB132SH, + instrux_VPNMSUB213SH, + instrux_VPNMSUB231SH, + instrux_VFPCLASSPH, + instrux_VFPCLASSSH, + instrux_VGETEXPPH, + instrux_VGETEXPSH, + instrux_VGETMANTPH, + instrux_VGETMANTSH, + instrux_VGETMAXPH, + instrux_VGETMAXSH, + instrux_VGETMINPH, + instrux_VGETMINSH, + instrux_VMOVSH, + instrux_VMOVW, + instrux_VMULPH, + instrux_VMULSH, + instrux_VRCPPH, + instrux_VRCPSH, + instrux_VREDUCEPH, + instrux_VREDUCESH, + instrux_VENDSCALEPH, + instrux_VENDSCALESH, + instrux_VRSQRTPH, + instrux_VRSQRTSH, + instrux_VSCALEFPH, + instrux_VSCALEFSH, + instrux_VSQRTPH, + instrux_VSQRTSH, + instrux_VSUBPH, + instrux_VSUBSH, + instrux_VUCOMISH, + instrux_AADD, + instrux_AAND, + instrux_AXOR, + instrux_CLUI, + instrux_SENDUIPI, + instrux_STUI, + instrux_TESTUI, + instrux_UIRET, + instrux_CMPAXADD, + instrux_CMPAEXADD, + instrux_CMPBXADD, + instrux_CMPBEXADD, + instrux_CMPCXADD, + instrux_CMPEXADD, + instrux_CMPGXADD, + instrux_CMPGEXADD, + instrux_CMPLXADD, + instrux_CMPLEXADD, + instrux_CMPNAXADD, + instrux_CMPNAEXADD, + instrux_CMPNBXADD, + instrux_CMPNBEXADD, + instrux_CMPNCXADD, + instrux_CMPNEXADD, + instrux_CMPNGXADD, + instrux_CMPNGEXADD, + instrux_CMPNLXADD, + instrux_CMPNLEXADD, + instrux_CMPNOXADD, + instrux_CMPNPXADD, + instrux_CMPNSXADD, + instrux_CMPNZXADD, + instrux_CMPOXADD, + instrux_CMPPXADD, + instrux_CMPPEXADD, + instrux_CMPPOXADD, + instrux_CMPSXADD, + instrux_CMPZXADD, + instrux_WRMSRNS, + instrux_RDMSRLIST, + instrux_WRMSRLIST, + instrux_HRESET, + instrux_HINT_NOP0, + instrux_HINT_NOP1, + instrux_HINT_NOP2, + instrux_HINT_NOP3, + instrux_HINT_NOP4, + instrux_HINT_NOP5, + instrux_HINT_NOP6, + instrux_HINT_NOP7, + instrux_HINT_NOP8, + instrux_HINT_NOP9, + instrux_HINT_NOP10, + instrux_HINT_NOP11, + instrux_HINT_NOP12, + instrux_HINT_NOP13, + instrux_HINT_NOP14, + instrux_HINT_NOP15, + instrux_HINT_NOP16, + instrux_HINT_NOP17, + instrux_HINT_NOP18, + instrux_HINT_NOP19, + instrux_HINT_NOP20, + instrux_HINT_NOP21, + instrux_HINT_NOP22, + instrux_HINT_NOP23, + instrux_HINT_NOP24, + instrux_HINT_NOP25, + instrux_HINT_NOP26, + instrux_HINT_NOP27, + instrux_HINT_NOP28, + instrux_HINT_NOP29, + instrux_HINT_NOP30, + instrux_HINT_NOP31, + instrux_HINT_NOP32, + instrux_HINT_NOP33, + instrux_HINT_NOP34, + instrux_HINT_NOP35, + instrux_HINT_NOP36, + instrux_HINT_NOP37, + instrux_HINT_NOP38, + instrux_HINT_NOP39, + instrux_HINT_NOP40, + instrux_HINT_NOP41, + instrux_HINT_NOP42, + instrux_HINT_NOP43, + instrux_HINT_NOP44, + instrux_HINT_NOP45, + instrux_HINT_NOP46, + instrux_HINT_NOP47, + instrux_HINT_NOP48, + instrux_HINT_NOP49, + instrux_HINT_NOP50, + instrux_HINT_NOP51, + instrux_HINT_NOP52, + instrux_HINT_NOP53, + instrux_HINT_NOP54, + instrux_HINT_NOP55, + instrux_HINT_NOP56, + instrux_HINT_NOP57, + instrux_HINT_NOP58, + instrux_HINT_NOP59, + instrux_HINT_NOP60, + instrux_HINT_NOP61, + instrux_HINT_NOP62, + instrux_HINT_NOP63, +}; diff --git a/vere/ext/nasm/x86/insnsb.c b/vere/ext/nasm/x86/insnsb.c new file mode 100644 index 0000000..decc3db --- /dev/null +++ b/vere/ext/nasm/x86/insnsb.c @@ -0,0 +1,6748 @@ +/* This file auto-generated from insns.dat by insns.pl - don't edit it */ + +#include "nasm.h" +#include "insns.h" + +const uint8_t nasm_bytecodes[50229] = { + /* 0 */ 0241,0203,041,0301,01,0104,0120,01,0,0, + /* 10 */ 0240,0203,041,0301,01,0104,0110,01,0,0, + /* 20 */ 0241,0203,041,0301,01,0104,0120,01,01,0, + /* 30 */ 0240,0203,041,0301,01,0104,0110,01,01,0, + /* 40 */ 0241,0203,041,0301,01,0104,0120,01,020,0, + /* 50 */ 0240,0203,041,0301,01,0104,0110,01,020,0, + /* 60 */ 0241,0203,041,0301,01,0104,0120,01,021,0, + /* 70 */ 0240,0203,041,0301,01,0104,0110,01,021,0, + /* 80 */ 0241,0203,045,0301,01,0104,0120,01,0,0, + /* 90 */ 0240,0203,045,0301,01,0104,0110,01,0,0, + /* 100 */ 0241,0203,045,0301,01,0104,0120,01,01,0, + /* 110 */ 0240,0203,045,0301,01,0104,0110,01,01,0, + /* 120 */ 0241,0203,045,0301,01,0104,0120,01,020,0, + /* 130 */ 0240,0203,045,0301,01,0104,0110,01,020,0, + /* 140 */ 0241,0203,045,0301,01,0104,0120,01,021,0, + /* 150 */ 0240,0203,045,0301,01,0104,0110,01,021,0, + /* 160 */ 0241,0203,051,0301,01,0104,0120,01,0,0, + /* 170 */ 0240,0203,051,0301,01,0104,0110,01,0,0, + /* 180 */ 0241,0203,051,0301,01,0104,0120,01,01,0, + /* 190 */ 0240,0203,051,0301,01,0104,0110,01,01,0, + /* 200 */ 0241,0203,051,0301,01,0104,0120,01,020,0, + /* 210 */ 0240,0203,051,0301,01,0104,0110,01,020,0, + /* 220 */ 0241,0203,051,0301,01,0104,0120,01,021,0, + /* 230 */ 0240,0203,051,0301,01,0104,0110,01,021,0, + /* 240 */ 0241,0201,021,0301,01,0302,0120,01,0,0, + /* 250 */ 0241,0201,025,0301,01,0302,0120,01,0,0, + /* 260 */ 0241,0201,031,0301,01,0302,0120,01,0,0, + /* 270 */ 0241,0201,0,0301,01,0302,0120,01,0,0, + /* 280 */ 0241,0201,04,0301,01,0302,0120,01,0,0, + /* 290 */ 0241,0201,010,0301,01,0302,0120,01,0,0, + /* 300 */ 0241,0201,023,0306,01,0302,0120,01,0,0, + /* 310 */ 0241,0201,02,0306,01,0302,0120,01,0,0, + /* 320 */ 0241,0201,021,0301,01,0302,0120,01,01,0, + /* 330 */ 0241,0201,025,0301,01,0302,0120,01,01,0, + /* 340 */ 0241,0201,031,0301,01,0302,0120,01,01,0, + /* 350 */ 0241,0201,0,0301,01,0302,0120,01,01,0, + /* 360 */ 0241,0201,04,0301,01,0302,0120,01,01,0, + /* 370 */ 0241,0201,010,0301,01,0302,0120,01,01,0, + /* 380 */ 0241,0201,023,0306,01,0302,0120,01,01,0, + /* 390 */ 0241,0201,02,0306,01,0302,0120,01,01,0, + /* 400 */ 0241,0201,021,0301,01,0302,0120,01,02,0, + /* 410 */ 0241,0201,025,0301,01,0302,0120,01,02,0, + /* 420 */ 0241,0201,031,0301,01,0302,0120,01,02,0, + /* 430 */ 0241,0201,0,0301,01,0302,0120,01,02,0, + /* 440 */ 0241,0201,04,0301,01,0302,0120,01,02,0, + /* 450 */ 0241,0201,010,0301,01,0302,0120,01,02,0, + /* 460 */ 0241,0201,023,0306,01,0302,0120,01,02,0, + /* 470 */ 0241,0201,02,0306,01,0302,0120,01,02,0, + /* 480 */ 0241,0201,021,0301,01,0302,0120,01,03,0, + /* 490 */ 0241,0201,025,0301,01,0302,0120,01,03,0, + /* 500 */ 0241,0201,031,0301,01,0302,0120,01,03,0, + /* 510 */ 0241,0201,0,0301,01,0302,0120,01,03,0, + /* 520 */ 0241,0201,04,0301,01,0302,0120,01,03,0, + /* 530 */ 0241,0201,010,0301,01,0302,0120,01,03,0, + /* 540 */ 0241,0201,023,0306,01,0302,0120,01,03,0, + /* 550 */ 0241,0201,02,0306,01,0302,0120,01,03,0, + /* 560 */ 0241,0201,021,0301,01,0302,0120,01,04,0, + /* 570 */ 0241,0201,025,0301,01,0302,0120,01,04,0, + /* 580 */ 0241,0201,031,0301,01,0302,0120,01,04,0, + /* 590 */ 0241,0201,0,0301,01,0302,0120,01,04,0, + /* 600 */ 0241,0201,04,0301,01,0302,0120,01,04,0, + /* 610 */ 0241,0201,010,0301,01,0302,0120,01,04,0, + /* 620 */ 0241,0201,023,0306,01,0302,0120,01,04,0, + /* 630 */ 0241,0201,02,0306,01,0302,0120,01,04,0, + /* 640 */ 0241,0201,021,0301,01,0302,0120,01,05,0, + /* 650 */ 0241,0201,025,0301,01,0302,0120,01,05,0, + /* 660 */ 0241,0201,031,0301,01,0302,0120,01,05,0, + /* 670 */ 0241,0201,0,0301,01,0302,0120,01,05,0, + /* 680 */ 0241,0201,04,0301,01,0302,0120,01,05,0, + /* 690 */ 0241,0201,010,0301,01,0302,0120,01,05,0, + /* 700 */ 0241,0201,023,0306,01,0302,0120,01,05,0, + /* 710 */ 0241,0201,02,0306,01,0302,0120,01,05,0, + /* 720 */ 0241,0201,021,0301,01,0302,0120,01,06,0, + /* 730 */ 0241,0201,025,0301,01,0302,0120,01,06,0, + /* 740 */ 0241,0201,031,0301,01,0302,0120,01,06,0, + /* 750 */ 0241,0201,0,0301,01,0302,0120,01,06,0, + /* 760 */ 0241,0201,04,0301,01,0302,0120,01,06,0, + /* 770 */ 0241,0201,010,0301,01,0302,0120,01,06,0, + /* 780 */ 0241,0201,023,0306,01,0302,0120,01,06,0, + /* 790 */ 0241,0201,02,0306,01,0302,0120,01,06,0, + /* 800 */ 0241,0201,021,0301,01,0302,0120,01,07,0, + /* 810 */ 0241,0201,025,0301,01,0302,0120,01,07,0, + /* 820 */ 0241,0201,031,0301,01,0302,0120,01,07,0, + /* 830 */ 0241,0201,0,0301,01,0302,0120,01,07,0, + /* 840 */ 0241,0201,04,0301,01,0302,0120,01,07,0, + /* 850 */ 0241,0201,010,0301,01,0302,0120,01,07,0, + /* 860 */ 0241,0201,023,0306,01,0302,0120,01,07,0, + /* 870 */ 0241,0201,02,0306,01,0302,0120,01,07,0, + /* 880 */ 0241,0201,021,0301,01,0302,0120,01,010,0, + /* 890 */ 0241,0201,025,0301,01,0302,0120,01,010,0, + /* 900 */ 0241,0201,031,0301,01,0302,0120,01,010,0, + /* 910 */ 0241,0201,0,0301,01,0302,0120,01,010,0, + /* 920 */ 0241,0201,04,0301,01,0302,0120,01,010,0, + /* 930 */ 0241,0201,010,0301,01,0302,0120,01,010,0, + /* 940 */ 0241,0201,023,0306,01,0302,0120,01,010,0, + /* 950 */ 0241,0201,02,0306,01,0302,0120,01,010,0, + /* 960 */ 0241,0201,021,0301,01,0302,0120,01,011,0, + /* 970 */ 0241,0201,025,0301,01,0302,0120,01,011,0, + /* 980 */ 0241,0201,031,0301,01,0302,0120,01,011,0, + /* 990 */ 0241,0201,0,0301,01,0302,0120,01,011,0, + /* 1000 */ 0241,0201,04,0301,01,0302,0120,01,011,0, + /* 1010 */ 0241,0201,010,0301,01,0302,0120,01,011,0, + /* 1020 */ 0241,0201,023,0306,01,0302,0120,01,011,0, + /* 1030 */ 0241,0201,02,0306,01,0302,0120,01,011,0, + /* 1040 */ 0241,0201,021,0301,01,0302,0120,01,012,0, + /* 1050 */ 0241,0201,025,0301,01,0302,0120,01,012,0, + /* 1060 */ 0241,0201,031,0301,01,0302,0120,01,012,0, + /* 1070 */ 0241,0201,0,0301,01,0302,0120,01,012,0, + /* 1080 */ 0241,0201,04,0301,01,0302,0120,01,012,0, + /* 1090 */ 0241,0201,010,0301,01,0302,0120,01,012,0, + /* 1100 */ 0241,0201,023,0306,01,0302,0120,01,012,0, + /* 1110 */ 0241,0201,02,0306,01,0302,0120,01,012,0, + /* 1120 */ 0241,0201,021,0301,01,0302,0120,01,013,0, + /* 1130 */ 0241,0201,025,0301,01,0302,0120,01,013,0, + /* 1140 */ 0241,0201,031,0301,01,0302,0120,01,013,0, + /* 1150 */ 0241,0201,0,0301,01,0302,0120,01,013,0, + /* 1160 */ 0241,0201,04,0301,01,0302,0120,01,013,0, + /* 1170 */ 0241,0201,010,0301,01,0302,0120,01,013,0, + /* 1180 */ 0241,0201,023,0306,01,0302,0120,01,013,0, + /* 1190 */ 0241,0201,02,0306,01,0302,0120,01,013,0, + /* 1200 */ 0241,0201,021,0301,01,0302,0120,01,014,0, + /* 1210 */ 0241,0201,025,0301,01,0302,0120,01,014,0, + /* 1220 */ 0241,0201,031,0301,01,0302,0120,01,014,0, + /* 1230 */ 0241,0201,0,0301,01,0302,0120,01,014,0, + /* 1240 */ 0241,0201,04,0301,01,0302,0120,01,014,0, + /* 1250 */ 0241,0201,010,0301,01,0302,0120,01,014,0, + /* 1260 */ 0241,0201,023,0306,01,0302,0120,01,014,0, + /* 1270 */ 0241,0201,02,0306,01,0302,0120,01,014,0, + /* 1280 */ 0241,0201,021,0301,01,0302,0120,01,015,0, + /* 1290 */ 0241,0201,025,0301,01,0302,0120,01,015,0, + /* 1300 */ 0241,0201,031,0301,01,0302,0120,01,015,0, + /* 1310 */ 0241,0201,0,0301,01,0302,0120,01,015,0, + /* 1320 */ 0241,0201,04,0301,01,0302,0120,01,015,0, + /* 1330 */ 0241,0201,010,0301,01,0302,0120,01,015,0, + /* 1340 */ 0241,0201,023,0306,01,0302,0120,01,015,0, + /* 1350 */ 0241,0201,02,0306,01,0302,0120,01,015,0, + /* 1360 */ 0241,0201,021,0301,01,0302,0120,01,016,0, + /* 1370 */ 0241,0201,025,0301,01,0302,0120,01,016,0, + /* 1380 */ 0241,0201,031,0301,01,0302,0120,01,016,0, + /* 1390 */ 0241,0201,0,0301,01,0302,0120,01,016,0, + /* 1400 */ 0241,0201,04,0301,01,0302,0120,01,016,0, + /* 1410 */ 0241,0201,010,0301,01,0302,0120,01,016,0, + /* 1420 */ 0241,0201,023,0306,01,0302,0120,01,016,0, + /* 1430 */ 0241,0201,02,0306,01,0302,0120,01,016,0, + /* 1440 */ 0241,0201,021,0301,01,0302,0120,01,017,0, + /* 1450 */ 0241,0201,025,0301,01,0302,0120,01,017,0, + /* 1460 */ 0241,0201,031,0301,01,0302,0120,01,017,0, + /* 1470 */ 0241,0201,0,0301,01,0302,0120,01,017,0, + /* 1480 */ 0241,0201,04,0301,01,0302,0120,01,017,0, + /* 1490 */ 0241,0201,010,0301,01,0302,0120,01,017,0, + /* 1500 */ 0241,0201,023,0306,01,0302,0120,01,017,0, + /* 1510 */ 0241,0201,02,0306,01,0302,0120,01,017,0, + /* 1520 */ 0241,0201,021,0301,01,0302,0120,01,020,0, + /* 1530 */ 0241,0201,025,0301,01,0302,0120,01,020,0, + /* 1540 */ 0241,0201,031,0301,01,0302,0120,01,020,0, + /* 1550 */ 0241,0201,0,0301,01,0302,0120,01,020,0, + /* 1560 */ 0241,0201,04,0301,01,0302,0120,01,020,0, + /* 1570 */ 0241,0201,010,0301,01,0302,0120,01,020,0, + /* 1580 */ 0241,0201,023,0306,01,0302,0120,01,020,0, + /* 1590 */ 0241,0201,02,0306,01,0302,0120,01,020,0, + /* 1600 */ 0241,0201,021,0301,01,0302,0120,01,021,0, + /* 1610 */ 0241,0201,025,0301,01,0302,0120,01,021,0, + /* 1620 */ 0241,0201,031,0301,01,0302,0120,01,021,0, + /* 1630 */ 0241,0201,0,0301,01,0302,0120,01,021,0, + /* 1640 */ 0241,0201,04,0301,01,0302,0120,01,021,0, + /* 1650 */ 0241,0201,010,0301,01,0302,0120,01,021,0, + /* 1660 */ 0241,0201,023,0306,01,0302,0120,01,021,0, + /* 1670 */ 0241,0201,02,0306,01,0302,0120,01,021,0, + /* 1680 */ 0241,0201,021,0301,01,0302,0120,01,022,0, + /* 1690 */ 0241,0201,025,0301,01,0302,0120,01,022,0, + /* 1700 */ 0241,0201,031,0301,01,0302,0120,01,022,0, + /* 1710 */ 0241,0201,0,0301,01,0302,0120,01,022,0, + /* 1720 */ 0241,0201,04,0301,01,0302,0120,01,022,0, + /* 1730 */ 0241,0201,010,0301,01,0302,0120,01,022,0, + /* 1740 */ 0241,0201,023,0306,01,0302,0120,01,022,0, + /* 1750 */ 0241,0201,02,0306,01,0302,0120,01,022,0, + /* 1760 */ 0241,0201,021,0301,01,0302,0120,01,023,0, + /* 1770 */ 0241,0201,025,0301,01,0302,0120,01,023,0, + /* 1780 */ 0241,0201,031,0301,01,0302,0120,01,023,0, + /* 1790 */ 0241,0201,0,0301,01,0302,0120,01,023,0, + /* 1800 */ 0241,0201,04,0301,01,0302,0120,01,023,0, + /* 1810 */ 0241,0201,010,0301,01,0302,0120,01,023,0, + /* 1820 */ 0241,0201,023,0306,01,0302,0120,01,023,0, + /* 1830 */ 0241,0201,02,0306,01,0302,0120,01,023,0, + /* 1840 */ 0241,0201,021,0301,01,0302,0120,01,024,0, + /* 1850 */ 0241,0201,025,0301,01,0302,0120,01,024,0, + /* 1860 */ 0241,0201,031,0301,01,0302,0120,01,024,0, + /* 1870 */ 0241,0201,0,0301,01,0302,0120,01,024,0, + /* 1880 */ 0241,0201,04,0301,01,0302,0120,01,024,0, + /* 1890 */ 0241,0201,010,0301,01,0302,0120,01,024,0, + /* 1900 */ 0241,0201,023,0306,01,0302,0120,01,024,0, + /* 1910 */ 0241,0201,02,0306,01,0302,0120,01,024,0, + /* 1920 */ 0241,0201,021,0301,01,0302,0120,01,025,0, + /* 1930 */ 0241,0201,025,0301,01,0302,0120,01,025,0, + /* 1940 */ 0241,0201,031,0301,01,0302,0120,01,025,0, + /* 1950 */ 0241,0201,0,0301,01,0302,0120,01,025,0, + /* 1960 */ 0241,0201,04,0301,01,0302,0120,01,025,0, + /* 1970 */ 0241,0201,010,0301,01,0302,0120,01,025,0, + /* 1980 */ 0241,0201,023,0306,01,0302,0120,01,025,0, + /* 1990 */ 0241,0201,02,0306,01,0302,0120,01,025,0, + /* 2000 */ 0241,0201,021,0301,01,0302,0120,01,026,0, + /* 2010 */ 0241,0201,025,0301,01,0302,0120,01,026,0, + /* 2020 */ 0241,0201,031,0301,01,0302,0120,01,026,0, + /* 2030 */ 0241,0201,0,0301,01,0302,0120,01,026,0, + /* 2040 */ 0241,0201,04,0301,01,0302,0120,01,026,0, + /* 2050 */ 0241,0201,010,0301,01,0302,0120,01,026,0, + /* 2060 */ 0241,0201,023,0306,01,0302,0120,01,026,0, + /* 2070 */ 0241,0201,02,0306,01,0302,0120,01,026,0, + /* 2080 */ 0241,0201,021,0301,01,0302,0120,01,027,0, + /* 2090 */ 0241,0201,025,0301,01,0302,0120,01,027,0, + /* 2100 */ 0241,0201,031,0301,01,0302,0120,01,027,0, + /* 2110 */ 0241,0201,0,0301,01,0302,0120,01,027,0, + /* 2120 */ 0241,0201,04,0301,01,0302,0120,01,027,0, + /* 2130 */ 0241,0201,010,0301,01,0302,0120,01,027,0, + /* 2140 */ 0241,0201,023,0306,01,0302,0120,01,027,0, + /* 2150 */ 0241,0201,02,0306,01,0302,0120,01,027,0, + /* 2160 */ 0241,0201,021,0301,01,0302,0120,01,030,0, + /* 2170 */ 0241,0201,025,0301,01,0302,0120,01,030,0, + /* 2180 */ 0241,0201,031,0301,01,0302,0120,01,030,0, + /* 2190 */ 0241,0201,0,0301,01,0302,0120,01,030,0, + /* 2200 */ 0241,0201,04,0301,01,0302,0120,01,030,0, + /* 2210 */ 0241,0201,010,0301,01,0302,0120,01,030,0, + /* 2220 */ 0241,0201,023,0306,01,0302,0120,01,030,0, + /* 2230 */ 0241,0201,02,0306,01,0302,0120,01,030,0, + /* 2240 */ 0241,0201,021,0301,01,0302,0120,01,031,0, + /* 2250 */ 0241,0201,025,0301,01,0302,0120,01,031,0, + /* 2260 */ 0241,0201,031,0301,01,0302,0120,01,031,0, + /* 2270 */ 0241,0201,0,0301,01,0302,0120,01,031,0, + /* 2280 */ 0241,0201,04,0301,01,0302,0120,01,031,0, + /* 2290 */ 0241,0201,010,0301,01,0302,0120,01,031,0, + /* 2300 */ 0241,0201,023,0306,01,0302,0120,01,031,0, + /* 2310 */ 0241,0201,02,0306,01,0302,0120,01,031,0, + /* 2320 */ 0241,0201,021,0301,01,0302,0120,01,032,0, + /* 2330 */ 0241,0201,025,0301,01,0302,0120,01,032,0, + /* 2340 */ 0241,0201,031,0301,01,0302,0120,01,032,0, + /* 2350 */ 0241,0201,0,0301,01,0302,0120,01,032,0, + /* 2360 */ 0241,0201,04,0301,01,0302,0120,01,032,0, + /* 2370 */ 0241,0201,010,0301,01,0302,0120,01,032,0, + /* 2380 */ 0241,0201,023,0306,01,0302,0120,01,032,0, + /* 2390 */ 0241,0201,02,0306,01,0302,0120,01,032,0, + /* 2400 */ 0241,0201,021,0301,01,0302,0120,01,033,0, + /* 2410 */ 0241,0201,025,0301,01,0302,0120,01,033,0, + /* 2420 */ 0241,0201,031,0301,01,0302,0120,01,033,0, + /* 2430 */ 0241,0201,0,0301,01,0302,0120,01,033,0, + /* 2440 */ 0241,0201,04,0301,01,0302,0120,01,033,0, + /* 2450 */ 0241,0201,010,0301,01,0302,0120,01,033,0, + /* 2460 */ 0241,0201,023,0306,01,0302,0120,01,033,0, + /* 2470 */ 0241,0201,02,0306,01,0302,0120,01,033,0, + /* 2480 */ 0241,0201,021,0301,01,0302,0120,01,034,0, + /* 2490 */ 0241,0201,025,0301,01,0302,0120,01,034,0, + /* 2500 */ 0241,0201,031,0301,01,0302,0120,01,034,0, + /* 2510 */ 0241,0201,0,0301,01,0302,0120,01,034,0, + /* 2520 */ 0241,0201,04,0301,01,0302,0120,01,034,0, + /* 2530 */ 0241,0201,010,0301,01,0302,0120,01,034,0, + /* 2540 */ 0241,0201,023,0306,01,0302,0120,01,034,0, + /* 2550 */ 0241,0201,02,0306,01,0302,0120,01,034,0, + /* 2560 */ 0241,0201,021,0301,01,0302,0120,01,035,0, + /* 2570 */ 0241,0201,025,0301,01,0302,0120,01,035,0, + /* 2580 */ 0241,0201,031,0301,01,0302,0120,01,035,0, + /* 2590 */ 0241,0201,0,0301,01,0302,0120,01,035,0, + /* 2600 */ 0241,0201,04,0301,01,0302,0120,01,035,0, + /* 2610 */ 0241,0201,010,0301,01,0302,0120,01,035,0, + /* 2620 */ 0241,0201,023,0306,01,0302,0120,01,035,0, + /* 2630 */ 0241,0201,02,0306,01,0302,0120,01,035,0, + /* 2640 */ 0241,0201,021,0301,01,0302,0120,01,036,0, + /* 2650 */ 0241,0201,025,0301,01,0302,0120,01,036,0, + /* 2660 */ 0241,0201,031,0301,01,0302,0120,01,036,0, + /* 2670 */ 0241,0201,0,0301,01,0302,0120,01,036,0, + /* 2680 */ 0241,0201,04,0301,01,0302,0120,01,036,0, + /* 2690 */ 0241,0201,010,0301,01,0302,0120,01,036,0, + /* 2700 */ 0241,0201,023,0306,01,0302,0120,01,036,0, + /* 2710 */ 0241,0201,02,0306,01,0302,0120,01,036,0, + /* 2720 */ 0241,0201,021,0301,01,0302,0120,01,037,0, + /* 2730 */ 0241,0201,025,0301,01,0302,0120,01,037,0, + /* 2740 */ 0241,0201,031,0301,01,0302,0120,01,037,0, + /* 2750 */ 0241,0201,0,0301,01,0302,0120,01,037,0, + /* 2760 */ 0241,0201,04,0301,01,0302,0120,01,037,0, + /* 2770 */ 0241,0201,010,0301,01,0302,0120,01,037,0, + /* 2780 */ 0241,0201,023,0306,01,0302,0120,01,037,0, + /* 2790 */ 0241,0201,02,0306,01,0302,0120,01,037,0, + /* 2800 */ 0241,0203,01,0303,01,077,0120,01,0,0, + /* 2810 */ 0241,0203,05,0303,01,077,0120,01,0,0, + /* 2820 */ 0241,0203,011,0303,01,077,0120,01,0,0, + /* 2830 */ 0241,0203,01,0301,01,037,0120,01,0,0, + /* 2840 */ 0241,0203,05,0301,01,037,0120,01,0,0, + /* 2850 */ 0241,0203,011,0301,01,037,0120,01,0,0, + /* 2860 */ 0241,0203,021,0301,01,037,0120,01,0,0, + /* 2870 */ 0241,0203,025,0301,01,037,0120,01,0,0, + /* 2880 */ 0241,0203,031,0301,01,037,0120,01,0,0, + /* 2890 */ 0241,0203,01,0303,01,076,0120,01,0,0, + /* 2900 */ 0241,0203,05,0303,01,076,0120,01,0,0, + /* 2910 */ 0241,0203,011,0303,01,076,0120,01,0,0, + /* 2920 */ 0241,0203,01,0301,01,036,0120,01,0,0, + /* 2930 */ 0241,0203,05,0301,01,036,0120,01,0,0, + /* 2940 */ 0241,0203,011,0301,01,036,0120,01,0,0, + /* 2950 */ 0241,0203,021,0301,01,036,0120,01,0,0, + /* 2960 */ 0241,0203,025,0301,01,036,0120,01,0,0, + /* 2970 */ 0241,0203,031,0301,01,036,0120,01,0,0, + /* 2980 */ 0241,0203,021,0303,01,076,0120,01,0,0, + /* 2990 */ 0241,0203,025,0303,01,076,0120,01,0,0, + /* 3000 */ 0241,0203,031,0303,01,076,0120,01,0,0, + /* 3010 */ 0241,0203,021,0303,01,077,0120,01,0,0, + /* 3020 */ 0241,0203,025,0303,01,077,0120,01,0,0, + /* 3030 */ 0241,0203,031,0303,01,077,0120,01,0,0, + /* 3040 */ 0241,0203,01,0303,01,077,0120,01,05,0, + /* 3050 */ 0241,0203,05,0303,01,077,0120,01,05,0, + /* 3060 */ 0241,0203,011,0303,01,077,0120,01,05,0, + /* 3070 */ 0241,0203,01,0301,01,037,0120,01,05,0, + /* 3080 */ 0241,0203,05,0301,01,037,0120,01,05,0, + /* 3090 */ 0241,0203,011,0301,01,037,0120,01,05,0, + /* 3100 */ 0241,0203,021,0301,01,037,0120,01,05,0, + /* 3110 */ 0241,0203,025,0301,01,037,0120,01,05,0, + /* 3120 */ 0241,0203,031,0301,01,037,0120,01,05,0, + /* 3130 */ 0241,0203,01,0303,01,076,0120,01,05,0, + /* 3140 */ 0241,0203,05,0303,01,076,0120,01,05,0, + /* 3150 */ 0241,0203,011,0303,01,076,0120,01,05,0, + /* 3160 */ 0241,0203,01,0301,01,036,0120,01,05,0, + /* 3170 */ 0241,0203,05,0301,01,036,0120,01,05,0, + /* 3180 */ 0241,0203,011,0301,01,036,0120,01,05,0, + /* 3190 */ 0241,0203,021,0301,01,036,0120,01,05,0, + /* 3200 */ 0241,0203,025,0301,01,036,0120,01,05,0, + /* 3210 */ 0241,0203,031,0301,01,036,0120,01,05,0, + /* 3220 */ 0241,0203,021,0303,01,076,0120,01,05,0, + /* 3230 */ 0241,0203,025,0303,01,076,0120,01,05,0, + /* 3240 */ 0241,0203,031,0303,01,076,0120,01,05,0, + /* 3250 */ 0241,0203,021,0303,01,077,0120,01,05,0, + /* 3260 */ 0241,0203,025,0303,01,077,0120,01,05,0, + /* 3270 */ 0241,0203,031,0303,01,077,0120,01,05,0, + /* 3280 */ 0241,0203,01,0303,01,077,0120,01,06,0, + /* 3290 */ 0241,0203,05,0303,01,077,0120,01,06,0, + /* 3300 */ 0241,0203,011,0303,01,077,0120,01,06,0, + /* 3310 */ 0241,0203,01,0301,01,037,0120,01,06,0, + /* 3320 */ 0241,0203,05,0301,01,037,0120,01,06,0, + /* 3330 */ 0241,0203,011,0301,01,037,0120,01,06,0, + /* 3340 */ 0241,0203,021,0301,01,037,0120,01,06,0, + /* 3350 */ 0241,0203,025,0301,01,037,0120,01,06,0, + /* 3360 */ 0241,0203,031,0301,01,037,0120,01,06,0, + /* 3370 */ 0241,0203,01,0303,01,076,0120,01,06,0, + /* 3380 */ 0241,0203,05,0303,01,076,0120,01,06,0, + /* 3390 */ 0241,0203,011,0303,01,076,0120,01,06,0, + /* 3400 */ 0241,0203,01,0301,01,036,0120,01,06,0, + /* 3410 */ 0241,0203,05,0301,01,036,0120,01,06,0, + /* 3420 */ 0241,0203,011,0301,01,036,0120,01,06,0, + /* 3430 */ 0241,0203,021,0301,01,036,0120,01,06,0, + /* 3440 */ 0241,0203,025,0301,01,036,0120,01,06,0, + /* 3450 */ 0241,0203,031,0301,01,036,0120,01,06,0, + /* 3460 */ 0241,0203,021,0303,01,076,0120,01,06,0, + /* 3470 */ 0241,0203,025,0303,01,076,0120,01,06,0, + /* 3480 */ 0241,0203,031,0303,01,076,0120,01,06,0, + /* 3490 */ 0241,0203,021,0303,01,077,0120,01,06,0, + /* 3500 */ 0241,0203,025,0303,01,077,0120,01,06,0, + /* 3510 */ 0241,0203,031,0303,01,077,0120,01,06,0, + /* 3520 */ 0241,0203,01,0303,01,077,0120,01,02,0, + /* 3530 */ 0241,0203,05,0303,01,077,0120,01,02,0, + /* 3540 */ 0241,0203,011,0303,01,077,0120,01,02,0, + /* 3550 */ 0241,0203,01,0301,01,037,0120,01,02,0, + /* 3560 */ 0241,0203,05,0301,01,037,0120,01,02,0, + /* 3570 */ 0241,0203,011,0301,01,037,0120,01,02,0, + /* 3580 */ 0241,0203,021,0301,01,037,0120,01,02,0, + /* 3590 */ 0241,0203,025,0301,01,037,0120,01,02,0, + /* 3600 */ 0241,0203,031,0301,01,037,0120,01,02,0, + /* 3610 */ 0241,0203,01,0303,01,076,0120,01,02,0, + /* 3620 */ 0241,0203,05,0303,01,076,0120,01,02,0, + /* 3630 */ 0241,0203,011,0303,01,076,0120,01,02,0, + /* 3640 */ 0241,0203,01,0301,01,036,0120,01,02,0, + /* 3650 */ 0241,0203,05,0301,01,036,0120,01,02,0, + /* 3660 */ 0241,0203,011,0301,01,036,0120,01,02,0, + /* 3670 */ 0241,0203,021,0301,01,036,0120,01,02,0, + /* 3680 */ 0241,0203,025,0301,01,036,0120,01,02,0, + /* 3690 */ 0241,0203,031,0301,01,036,0120,01,02,0, + /* 3700 */ 0241,0203,021,0303,01,076,0120,01,02,0, + /* 3710 */ 0241,0203,025,0303,01,076,0120,01,02,0, + /* 3720 */ 0241,0203,031,0303,01,076,0120,01,02,0, + /* 3730 */ 0241,0203,021,0303,01,077,0120,01,02,0, + /* 3740 */ 0241,0203,025,0303,01,077,0120,01,02,0, + /* 3750 */ 0241,0203,031,0303,01,077,0120,01,02,0, + /* 3760 */ 0241,0203,01,0303,01,077,0120,01,01,0, + /* 3770 */ 0241,0203,05,0303,01,077,0120,01,01,0, + /* 3780 */ 0241,0203,011,0303,01,077,0120,01,01,0, + /* 3790 */ 0241,0203,01,0301,01,037,0120,01,01,0, + /* 3800 */ 0241,0203,05,0301,01,037,0120,01,01,0, + /* 3810 */ 0241,0203,011,0301,01,037,0120,01,01,0, + /* 3820 */ 0241,0203,021,0301,01,037,0120,01,01,0, + /* 3830 */ 0241,0203,025,0301,01,037,0120,01,01,0, + /* 3840 */ 0241,0203,031,0301,01,037,0120,01,01,0, + /* 3850 */ 0241,0203,01,0303,01,076,0120,01,01,0, + /* 3860 */ 0241,0203,05,0303,01,076,0120,01,01,0, + /* 3870 */ 0241,0203,011,0303,01,076,0120,01,01,0, + /* 3880 */ 0241,0203,01,0301,01,036,0120,01,01,0, + /* 3890 */ 0241,0203,05,0301,01,036,0120,01,01,0, + /* 3900 */ 0241,0203,011,0301,01,036,0120,01,01,0, + /* 3910 */ 0241,0203,021,0301,01,036,0120,01,01,0, + /* 3920 */ 0241,0203,025,0301,01,036,0120,01,01,0, + /* 3930 */ 0241,0203,031,0301,01,036,0120,01,01,0, + /* 3940 */ 0241,0203,021,0303,01,076,0120,01,01,0, + /* 3950 */ 0241,0203,025,0303,01,076,0120,01,01,0, + /* 3960 */ 0241,0203,031,0303,01,076,0120,01,01,0, + /* 3970 */ 0241,0203,021,0303,01,077,0120,01,01,0, + /* 3980 */ 0241,0203,025,0303,01,077,0120,01,01,0, + /* 3990 */ 0241,0203,031,0303,01,077,0120,01,01,0, + /* 4000 */ 0241,0203,01,0303,01,077,0120,01,04,0, + /* 4010 */ 0241,0203,05,0303,01,077,0120,01,04,0, + /* 4020 */ 0241,0203,011,0303,01,077,0120,01,04,0, + /* 4030 */ 0241,0203,01,0301,01,037,0120,01,04,0, + /* 4040 */ 0241,0203,05,0301,01,037,0120,01,04,0, + /* 4050 */ 0241,0203,011,0301,01,037,0120,01,04,0, + /* 4060 */ 0241,0203,021,0301,01,037,0120,01,04,0, + /* 4070 */ 0241,0203,025,0301,01,037,0120,01,04,0, + /* 4080 */ 0241,0203,031,0301,01,037,0120,01,04,0, + /* 4090 */ 0241,0203,01,0303,01,076,0120,01,04,0, + /* 4100 */ 0241,0203,05,0303,01,076,0120,01,04,0, + /* 4110 */ 0241,0203,011,0303,01,076,0120,01,04,0, + /* 4120 */ 0241,0203,01,0301,01,036,0120,01,04,0, + /* 4130 */ 0241,0203,05,0301,01,036,0120,01,04,0, + /* 4140 */ 0241,0203,011,0301,01,036,0120,01,04,0, + /* 4150 */ 0241,0203,021,0301,01,036,0120,01,04,0, + /* 4160 */ 0241,0203,025,0301,01,036,0120,01,04,0, + /* 4170 */ 0241,0203,031,0301,01,036,0120,01,04,0, + /* 4180 */ 0241,0203,021,0303,01,076,0120,01,04,0, + /* 4190 */ 0241,0203,025,0303,01,076,0120,01,04,0, + /* 4200 */ 0241,0203,031,0303,01,076,0120,01,04,0, + /* 4210 */ 0241,0203,021,0303,01,077,0120,01,04,0, + /* 4220 */ 0241,0203,025,0303,01,077,0120,01,04,0, + /* 4230 */ 0241,0203,031,0303,01,077,0120,01,04,0, + /* 4240 */ 0324,0361,03,017,072,027,0101,026,0, + /* 4249 */ 0323,0361,03,017,072,024,0101,026,0, + /* 4258 */ 0317,0361,03,017,072,026,0101,026,0, + /* 4267 */ 0324,0361,03,017,072,026,0101,026,0, + /* 4276 */ 0324,0361,03,017,072,025,0101,026,0, + /* 4285 */ 0325,0361,03,017,072,040,0110,026,0, + /* 4294 */ 0317,0361,03,017,072,042,0110,026,0, + /* 4303 */ 0324,0361,03,017,072,042,0110,026,0, + /* 4312 */ 0261,01,041,01,0302,0120,01,020,0, + /* 4321 */ 0260,01,041,01,0302,0110,01,020,0, + /* 4330 */ 0261,01,045,01,0302,0120,01,020,0, + /* 4339 */ 0260,01,045,01,0302,0110,01,020,0, + /* 4348 */ 0261,01,041,01,0302,0120,01,0,0, + /* 4357 */ 0260,01,041,01,0302,0110,01,0,0, + /* 4366 */ 0261,01,045,01,0302,0120,01,0,0, + /* 4375 */ 0260,01,045,01,0302,0110,01,0,0, + /* 4384 */ 0261,01,041,01,0302,0120,01,01,0, + /* 4393 */ 0260,01,041,01,0302,0110,01,01,0, + /* 4402 */ 0261,01,045,01,0302,0120,01,01,0, + /* 4411 */ 0260,01,045,01,0302,0110,01,01,0, + /* 4420 */ 0261,01,041,01,0302,0120,01,02,0, + /* 4429 */ 0260,01,041,01,0302,0110,01,02,0, + /* 4438 */ 0261,01,045,01,0302,0120,01,02,0, + /* 4447 */ 0260,01,045,01,0302,0110,01,02,0, + /* 4456 */ 0261,01,041,01,0302,0120,01,03,0, + /* 4465 */ 0260,01,041,01,0302,0110,01,03,0, + /* 4474 */ 0261,01,045,01,0302,0120,01,03,0, + /* 4483 */ 0260,01,045,01,0302,0110,01,03,0, + /* 4492 */ 0261,01,041,01,0302,0120,01,04,0, + /* 4501 */ 0260,01,041,01,0302,0110,01,04,0, + /* 4510 */ 0261,01,045,01,0302,0120,01,04,0, + /* 4519 */ 0260,01,045,01,0302,0110,01,04,0, + /* 4528 */ 0261,01,041,01,0302,0120,01,05,0, + /* 4537 */ 0260,01,041,01,0302,0110,01,05,0, + /* 4546 */ 0261,01,045,01,0302,0120,01,05,0, + /* 4555 */ 0260,01,045,01,0302,0110,01,05,0, + /* 4564 */ 0261,01,041,01,0302,0120,01,06,0, + /* 4573 */ 0260,01,041,01,0302,0110,01,06,0, + /* 4582 */ 0261,01,045,01,0302,0120,01,06,0, + /* 4591 */ 0260,01,045,01,0302,0110,01,06,0, + /* 4600 */ 0261,01,041,01,0302,0120,01,07,0, + /* 4609 */ 0260,01,041,01,0302,0110,01,07,0, + /* 4618 */ 0261,01,045,01,0302,0120,01,07,0, + /* 4627 */ 0260,01,045,01,0302,0110,01,07,0, + /* 4636 */ 0261,01,041,01,0302,0120,01,010,0, + /* 4645 */ 0260,01,041,01,0302,0110,01,010,0, + /* 4654 */ 0261,01,045,01,0302,0120,01,010,0, + /* 4663 */ 0260,01,045,01,0302,0110,01,010,0, + /* 4672 */ 0261,01,041,01,0302,0120,01,011,0, + /* 4681 */ 0260,01,041,01,0302,0110,01,011,0, + /* 4690 */ 0261,01,045,01,0302,0120,01,011,0, + /* 4699 */ 0260,01,045,01,0302,0110,01,011,0, + /* 4708 */ 0261,01,041,01,0302,0120,01,012,0, + /* 4717 */ 0260,01,041,01,0302,0110,01,012,0, + /* 4726 */ 0261,01,045,01,0302,0120,01,012,0, + /* 4735 */ 0260,01,045,01,0302,0110,01,012,0, + /* 4744 */ 0261,01,041,01,0302,0120,01,013,0, + /* 4753 */ 0260,01,041,01,0302,0110,01,013,0, + /* 4762 */ 0261,01,045,01,0302,0120,01,013,0, + /* 4771 */ 0260,01,045,01,0302,0110,01,013,0, + /* 4780 */ 0261,01,041,01,0302,0120,01,014,0, + /* 4789 */ 0260,01,041,01,0302,0110,01,014,0, + /* 4798 */ 0261,01,045,01,0302,0120,01,014,0, + /* 4807 */ 0260,01,045,01,0302,0110,01,014,0, + /* 4816 */ 0261,01,041,01,0302,0120,01,015,0, + /* 4825 */ 0260,01,041,01,0302,0110,01,015,0, + /* 4834 */ 0261,01,045,01,0302,0120,01,015,0, + /* 4843 */ 0260,01,045,01,0302,0110,01,015,0, + /* 4852 */ 0261,01,041,01,0302,0120,01,016,0, + /* 4861 */ 0260,01,041,01,0302,0110,01,016,0, + /* 4870 */ 0261,01,045,01,0302,0120,01,016,0, + /* 4879 */ 0260,01,045,01,0302,0110,01,016,0, + /* 4888 */ 0261,01,041,01,0302,0120,01,017,0, + /* 4897 */ 0260,01,041,01,0302,0110,01,017,0, + /* 4906 */ 0261,01,045,01,0302,0120,01,017,0, + /* 4915 */ 0260,01,045,01,0302,0110,01,017,0, + /* 4924 */ 0261,01,041,01,0302,0120,01,021,0, + /* 4933 */ 0260,01,041,01,0302,0110,01,021,0, + /* 4942 */ 0261,01,045,01,0302,0120,01,021,0, + /* 4951 */ 0260,01,045,01,0302,0110,01,021,0, + /* 4960 */ 0261,01,041,01,0302,0120,01,022,0, + /* 4969 */ 0260,01,041,01,0302,0110,01,022,0, + /* 4978 */ 0261,01,045,01,0302,0120,01,022,0, + /* 4987 */ 0260,01,045,01,0302,0110,01,022,0, + /* 4996 */ 0261,01,041,01,0302,0120,01,023,0, + /* 5005 */ 0260,01,041,01,0302,0110,01,023,0, + /* 5014 */ 0261,01,045,01,0302,0120,01,023,0, + /* 5023 */ 0260,01,045,01,0302,0110,01,023,0, + /* 5032 */ 0261,01,041,01,0302,0120,01,024,0, + /* 5041 */ 0260,01,041,01,0302,0110,01,024,0, + /* 5050 */ 0261,01,045,01,0302,0120,01,024,0, + /* 5059 */ 0260,01,045,01,0302,0110,01,024,0, + /* 5068 */ 0261,01,041,01,0302,0120,01,025,0, + /* 5077 */ 0260,01,041,01,0302,0110,01,025,0, + /* 5086 */ 0261,01,045,01,0302,0120,01,025,0, + /* 5095 */ 0260,01,045,01,0302,0110,01,025,0, + /* 5104 */ 0261,01,041,01,0302,0120,01,026,0, + /* 5113 */ 0260,01,041,01,0302,0110,01,026,0, + /* 5122 */ 0261,01,045,01,0302,0120,01,026,0, + /* 5131 */ 0260,01,045,01,0302,0110,01,026,0, + /* 5140 */ 0261,01,041,01,0302,0120,01,027,0, + /* 5149 */ 0260,01,041,01,0302,0110,01,027,0, + /* 5158 */ 0261,01,045,01,0302,0120,01,027,0, + /* 5167 */ 0260,01,045,01,0302,0110,01,027,0, + /* 5176 */ 0261,01,041,01,0302,0120,01,030,0, + /* 5185 */ 0260,01,041,01,0302,0110,01,030,0, + /* 5194 */ 0261,01,045,01,0302,0120,01,030,0, + /* 5203 */ 0260,01,045,01,0302,0110,01,030,0, + /* 5212 */ 0261,01,041,01,0302,0120,01,031,0, + /* 5221 */ 0260,01,041,01,0302,0110,01,031,0, + /* 5230 */ 0261,01,045,01,0302,0120,01,031,0, + /* 5239 */ 0260,01,045,01,0302,0110,01,031,0, + /* 5248 */ 0261,01,041,01,0302,0120,01,032,0, + /* 5257 */ 0260,01,041,01,0302,0110,01,032,0, + /* 5266 */ 0261,01,045,01,0302,0120,01,032,0, + /* 5275 */ 0260,01,045,01,0302,0110,01,032,0, + /* 5284 */ 0261,01,041,01,0302,0120,01,033,0, + /* 5293 */ 0260,01,041,01,0302,0110,01,033,0, + /* 5302 */ 0261,01,045,01,0302,0120,01,033,0, + /* 5311 */ 0260,01,045,01,0302,0110,01,033,0, + /* 5320 */ 0261,01,041,01,0302,0120,01,034,0, + /* 5329 */ 0260,01,041,01,0302,0110,01,034,0, + /* 5338 */ 0261,01,045,01,0302,0120,01,034,0, + /* 5347 */ 0260,01,045,01,0302,0110,01,034,0, + /* 5356 */ 0261,01,041,01,0302,0120,01,035,0, + /* 5365 */ 0260,01,041,01,0302,0110,01,035,0, + /* 5374 */ 0261,01,045,01,0302,0120,01,035,0, + /* 5383 */ 0260,01,045,01,0302,0110,01,035,0, + /* 5392 */ 0261,01,041,01,0302,0120,01,036,0, + /* 5401 */ 0260,01,041,01,0302,0110,01,036,0, + /* 5410 */ 0261,01,045,01,0302,0120,01,036,0, + /* 5419 */ 0260,01,045,01,0302,0110,01,036,0, + /* 5428 */ 0261,01,041,01,0302,0120,01,037,0, + /* 5437 */ 0260,01,041,01,0302,0110,01,037,0, + /* 5446 */ 0261,01,045,01,0302,0120,01,037,0, + /* 5455 */ 0260,01,045,01,0302,0110,01,037,0, + /* 5464 */ 0261,01,040,01,0302,0120,01,020,0, + /* 5473 */ 0260,01,040,01,0302,0110,01,020,0, + /* 5482 */ 0261,01,044,01,0302,0120,01,020,0, + /* 5491 */ 0260,01,044,01,0302,0110,01,020,0, + /* 5500 */ 0261,01,040,01,0302,0120,01,0,0, + /* 5509 */ 0260,01,040,01,0302,0110,01,0,0, + /* 5518 */ 0261,01,044,01,0302,0120,01,0,0, + /* 5527 */ 0260,01,044,01,0302,0110,01,0,0, + /* 5536 */ 0261,01,040,01,0302,0120,01,01,0, + /* 5545 */ 0260,01,040,01,0302,0110,01,01,0, + /* 5554 */ 0261,01,044,01,0302,0120,01,01,0, + /* 5563 */ 0260,01,044,01,0302,0110,01,01,0, + /* 5572 */ 0261,01,040,01,0302,0120,01,02,0, + /* 5581 */ 0260,01,040,01,0302,0110,01,02,0, + /* 5590 */ 0261,01,044,01,0302,0120,01,02,0, + /* 5599 */ 0260,01,044,01,0302,0110,01,02,0, + /* 5608 */ 0261,01,040,01,0302,0120,01,03,0, + /* 5617 */ 0260,01,040,01,0302,0110,01,03,0, + /* 5626 */ 0261,01,044,01,0302,0120,01,03,0, + /* 5635 */ 0260,01,044,01,0302,0110,01,03,0, + /* 5644 */ 0261,01,040,01,0302,0120,01,04,0, + /* 5653 */ 0260,01,040,01,0302,0110,01,04,0, + /* 5662 */ 0261,01,044,01,0302,0120,01,04,0, + /* 5671 */ 0260,01,044,01,0302,0110,01,04,0, + /* 5680 */ 0261,01,040,01,0302,0120,01,05,0, + /* 5689 */ 0260,01,040,01,0302,0110,01,05,0, + /* 5698 */ 0261,01,044,01,0302,0120,01,05,0, + /* 5707 */ 0260,01,044,01,0302,0110,01,05,0, + /* 5716 */ 0261,01,040,01,0302,0120,01,06,0, + /* 5725 */ 0260,01,040,01,0302,0110,01,06,0, + /* 5734 */ 0261,01,044,01,0302,0120,01,06,0, + /* 5743 */ 0260,01,044,01,0302,0110,01,06,0, + /* 5752 */ 0261,01,040,01,0302,0120,01,07,0, + /* 5761 */ 0260,01,040,01,0302,0110,01,07,0, + /* 5770 */ 0261,01,044,01,0302,0120,01,07,0, + /* 5779 */ 0260,01,044,01,0302,0110,01,07,0, + /* 5788 */ 0261,01,040,01,0302,0120,01,010,0, + /* 5797 */ 0260,01,040,01,0302,0110,01,010,0, + /* 5806 */ 0261,01,044,01,0302,0120,01,010,0, + /* 5815 */ 0260,01,044,01,0302,0110,01,010,0, + /* 5824 */ 0261,01,040,01,0302,0120,01,011,0, + /* 5833 */ 0260,01,040,01,0302,0110,01,011,0, + /* 5842 */ 0261,01,044,01,0302,0120,01,011,0, + /* 5851 */ 0260,01,044,01,0302,0110,01,011,0, + /* 5860 */ 0261,01,040,01,0302,0120,01,012,0, + /* 5869 */ 0260,01,040,01,0302,0110,01,012,0, + /* 5878 */ 0261,01,044,01,0302,0120,01,012,0, + /* 5887 */ 0260,01,044,01,0302,0110,01,012,0, + /* 5896 */ 0261,01,040,01,0302,0120,01,013,0, + /* 5905 */ 0260,01,040,01,0302,0110,01,013,0, + /* 5914 */ 0261,01,044,01,0302,0120,01,013,0, + /* 5923 */ 0260,01,044,01,0302,0110,01,013,0, + /* 5932 */ 0261,01,040,01,0302,0120,01,014,0, + /* 5941 */ 0260,01,040,01,0302,0110,01,014,0, + /* 5950 */ 0261,01,044,01,0302,0120,01,014,0, + /* 5959 */ 0260,01,044,01,0302,0110,01,014,0, + /* 5968 */ 0261,01,040,01,0302,0120,01,015,0, + /* 5977 */ 0260,01,040,01,0302,0110,01,015,0, + /* 5986 */ 0261,01,044,01,0302,0120,01,015,0, + /* 5995 */ 0260,01,044,01,0302,0110,01,015,0, + /* 6004 */ 0261,01,040,01,0302,0120,01,016,0, + /* 6013 */ 0260,01,040,01,0302,0110,01,016,0, + /* 6022 */ 0261,01,044,01,0302,0120,01,016,0, + /* 6031 */ 0260,01,044,01,0302,0110,01,016,0, + /* 6040 */ 0261,01,040,01,0302,0120,01,017,0, + /* 6049 */ 0260,01,040,01,0302,0110,01,017,0, + /* 6058 */ 0261,01,044,01,0302,0120,01,017,0, + /* 6067 */ 0260,01,044,01,0302,0110,01,017,0, + /* 6076 */ 0261,01,040,01,0302,0120,01,021,0, + /* 6085 */ 0260,01,040,01,0302,0110,01,021,0, + /* 6094 */ 0261,01,044,01,0302,0120,01,021,0, + /* 6103 */ 0260,01,044,01,0302,0110,01,021,0, + /* 6112 */ 0261,01,040,01,0302,0120,01,022,0, + /* 6121 */ 0260,01,040,01,0302,0110,01,022,0, + /* 6130 */ 0261,01,044,01,0302,0120,01,022,0, + /* 6139 */ 0260,01,044,01,0302,0110,01,022,0, + /* 6148 */ 0261,01,040,01,0302,0120,01,023,0, + /* 6157 */ 0260,01,040,01,0302,0110,01,023,0, + /* 6166 */ 0261,01,044,01,0302,0120,01,023,0, + /* 6175 */ 0260,01,044,01,0302,0110,01,023,0, + /* 6184 */ 0261,01,040,01,0302,0120,01,024,0, + /* 6193 */ 0260,01,040,01,0302,0110,01,024,0, + /* 6202 */ 0261,01,044,01,0302,0120,01,024,0, + /* 6211 */ 0260,01,044,01,0302,0110,01,024,0, + /* 6220 */ 0261,01,040,01,0302,0120,01,025,0, + /* 6229 */ 0260,01,040,01,0302,0110,01,025,0, + /* 6238 */ 0261,01,044,01,0302,0120,01,025,0, + /* 6247 */ 0260,01,044,01,0302,0110,01,025,0, + /* 6256 */ 0261,01,040,01,0302,0120,01,026,0, + /* 6265 */ 0260,01,040,01,0302,0110,01,026,0, + /* 6274 */ 0261,01,044,01,0302,0120,01,026,0, + /* 6283 */ 0260,01,044,01,0302,0110,01,026,0, + /* 6292 */ 0261,01,040,01,0302,0120,01,027,0, + /* 6301 */ 0260,01,040,01,0302,0110,01,027,0, + /* 6310 */ 0261,01,044,01,0302,0120,01,027,0, + /* 6319 */ 0260,01,044,01,0302,0110,01,027,0, + /* 6328 */ 0261,01,040,01,0302,0120,01,030,0, + /* 6337 */ 0260,01,040,01,0302,0110,01,030,0, + /* 6346 */ 0261,01,044,01,0302,0120,01,030,0, + /* 6355 */ 0260,01,044,01,0302,0110,01,030,0, + /* 6364 */ 0261,01,040,01,0302,0120,01,031,0, + /* 6373 */ 0260,01,040,01,0302,0110,01,031,0, + /* 6382 */ 0261,01,044,01,0302,0120,01,031,0, + /* 6391 */ 0260,01,044,01,0302,0110,01,031,0, + /* 6400 */ 0261,01,040,01,0302,0120,01,032,0, + /* 6409 */ 0260,01,040,01,0302,0110,01,032,0, + /* 6418 */ 0261,01,044,01,0302,0120,01,032,0, + /* 6427 */ 0260,01,044,01,0302,0110,01,032,0, + /* 6436 */ 0261,01,040,01,0302,0120,01,033,0, + /* 6445 */ 0260,01,040,01,0302,0110,01,033,0, + /* 6454 */ 0261,01,044,01,0302,0120,01,033,0, + /* 6463 */ 0260,01,044,01,0302,0110,01,033,0, + /* 6472 */ 0261,01,040,01,0302,0120,01,034,0, + /* 6481 */ 0260,01,040,01,0302,0110,01,034,0, + /* 6490 */ 0261,01,044,01,0302,0120,01,034,0, + /* 6499 */ 0260,01,044,01,0302,0110,01,034,0, + /* 6508 */ 0261,01,040,01,0302,0120,01,035,0, + /* 6517 */ 0260,01,040,01,0302,0110,01,035,0, + /* 6526 */ 0261,01,044,01,0302,0120,01,035,0, + /* 6535 */ 0260,01,044,01,0302,0110,01,035,0, + /* 6544 */ 0261,01,040,01,0302,0120,01,036,0, + /* 6553 */ 0260,01,040,01,0302,0110,01,036,0, + /* 6562 */ 0261,01,044,01,0302,0120,01,036,0, + /* 6571 */ 0260,01,044,01,0302,0110,01,036,0, + /* 6580 */ 0261,01,040,01,0302,0120,01,037,0, + /* 6589 */ 0260,01,040,01,0302,0110,01,037,0, + /* 6598 */ 0261,01,044,01,0302,0120,01,037,0, + /* 6607 */ 0260,01,044,01,0302,0110,01,037,0, + /* 6616 */ 0261,01,053,01,0302,0120,01,020,0, + /* 6625 */ 0260,01,053,01,0302,0110,01,020,0, + /* 6634 */ 0261,01,053,01,0302,0120,01,0,0, + /* 6643 */ 0260,01,053,01,0302,0110,01,0,0, + /* 6652 */ 0261,01,053,01,0302,0120,01,01,0, + /* 6661 */ 0260,01,053,01,0302,0110,01,01,0, + /* 6670 */ 0261,01,053,01,0302,0120,01,02,0, + /* 6679 */ 0260,01,053,01,0302,0110,01,02,0, + /* 6688 */ 0261,01,053,01,0302,0120,01,03,0, + /* 6697 */ 0260,01,053,01,0302,0110,01,03,0, + /* 6706 */ 0261,01,053,01,0302,0120,01,04,0, + /* 6715 */ 0260,01,053,01,0302,0110,01,04,0, + /* 6724 */ 0261,01,053,01,0302,0120,01,05,0, + /* 6733 */ 0260,01,053,01,0302,0110,01,05,0, + /* 6742 */ 0261,01,053,01,0302,0120,01,06,0, + /* 6751 */ 0260,01,053,01,0302,0110,01,06,0, + /* 6760 */ 0261,01,053,01,0302,0120,01,07,0, + /* 6769 */ 0260,01,053,01,0302,0110,01,07,0, + /* 6778 */ 0261,01,053,01,0302,0120,01,010,0, + /* 6787 */ 0260,01,053,01,0302,0110,01,010,0, + /* 6796 */ 0261,01,053,01,0302,0120,01,011,0, + /* 6805 */ 0260,01,053,01,0302,0110,01,011,0, + /* 6814 */ 0261,01,053,01,0302,0120,01,012,0, + /* 6823 */ 0260,01,053,01,0302,0110,01,012,0, + /* 6832 */ 0261,01,053,01,0302,0120,01,013,0, + /* 6841 */ 0260,01,053,01,0302,0110,01,013,0, + /* 6850 */ 0261,01,053,01,0302,0120,01,014,0, + /* 6859 */ 0260,01,053,01,0302,0110,01,014,0, + /* 6868 */ 0261,01,053,01,0302,0120,01,015,0, + /* 6877 */ 0260,01,053,01,0302,0110,01,015,0, + /* 6886 */ 0261,01,053,01,0302,0120,01,016,0, + /* 6895 */ 0260,01,053,01,0302,0110,01,016,0, + /* 6904 */ 0261,01,053,01,0302,0120,01,017,0, + /* 6913 */ 0260,01,053,01,0302,0110,01,017,0, + /* 6922 */ 0261,01,053,01,0302,0120,01,021,0, + /* 6931 */ 0260,01,053,01,0302,0110,01,021,0, + /* 6940 */ 0261,01,053,01,0302,0120,01,022,0, + /* 6949 */ 0260,01,053,01,0302,0110,01,022,0, + /* 6958 */ 0261,01,053,01,0302,0120,01,023,0, + /* 6967 */ 0260,01,053,01,0302,0110,01,023,0, + /* 6976 */ 0261,01,053,01,0302,0120,01,024,0, + /* 6985 */ 0260,01,053,01,0302,0110,01,024,0, + /* 6994 */ 0261,01,053,01,0302,0120,01,025,0, + /* 7003 */ 0260,01,053,01,0302,0110,01,025,0, + /* 7012 */ 0261,01,053,01,0302,0120,01,026,0, + /* 7021 */ 0260,01,053,01,0302,0110,01,026,0, + /* 7030 */ 0261,01,053,01,0302,0120,01,027,0, + /* 7039 */ 0260,01,053,01,0302,0110,01,027,0, + /* 7048 */ 0261,01,053,01,0302,0120,01,030,0, + /* 7057 */ 0260,01,053,01,0302,0110,01,030,0, + /* 7066 */ 0261,01,053,01,0302,0120,01,031,0, + /* 7075 */ 0260,01,053,01,0302,0110,01,031,0, + /* 7084 */ 0261,01,053,01,0302,0120,01,032,0, + /* 7093 */ 0260,01,053,01,0302,0110,01,032,0, + /* 7102 */ 0261,01,053,01,0302,0120,01,033,0, + /* 7111 */ 0260,01,053,01,0302,0110,01,033,0, + /* 7120 */ 0261,01,053,01,0302,0120,01,034,0, + /* 7129 */ 0260,01,053,01,0302,0110,01,034,0, + /* 7138 */ 0261,01,053,01,0302,0120,01,035,0, + /* 7147 */ 0260,01,053,01,0302,0110,01,035,0, + /* 7156 */ 0261,01,053,01,0302,0120,01,036,0, + /* 7165 */ 0260,01,053,01,0302,0110,01,036,0, + /* 7174 */ 0261,01,053,01,0302,0120,01,037,0, + /* 7183 */ 0260,01,053,01,0302,0110,01,037,0, + /* 7192 */ 0261,01,052,01,0302,0120,01,020,0, + /* 7201 */ 0260,01,052,01,0302,0110,01,020,0, + /* 7210 */ 0261,01,052,01,0302,0120,01,0,0, + /* 7219 */ 0260,01,052,01,0302,0110,01,0,0, + /* 7228 */ 0261,01,052,01,0302,0120,01,01,0, + /* 7237 */ 0260,01,052,01,0302,0110,01,01,0, + /* 7246 */ 0261,01,052,01,0302,0120,01,02,0, + /* 7255 */ 0260,01,052,01,0302,0110,01,02,0, + /* 7264 */ 0261,01,052,01,0302,0120,01,03,0, + /* 7273 */ 0260,01,052,01,0302,0110,01,03,0, + /* 7282 */ 0261,01,052,01,0302,0120,01,04,0, + /* 7291 */ 0260,01,052,01,0302,0110,01,04,0, + /* 7300 */ 0261,01,052,01,0302,0120,01,05,0, + /* 7309 */ 0260,01,052,01,0302,0110,01,05,0, + /* 7318 */ 0261,01,052,01,0302,0120,01,06,0, + /* 7327 */ 0260,01,052,01,0302,0110,01,06,0, + /* 7336 */ 0261,01,052,01,0302,0120,01,07,0, + /* 7345 */ 0260,01,052,01,0302,0110,01,07,0, + /* 7354 */ 0261,01,052,01,0302,0120,01,010,0, + /* 7363 */ 0260,01,052,01,0302,0110,01,010,0, + /* 7372 */ 0261,01,052,01,0302,0120,01,011,0, + /* 7381 */ 0260,01,052,01,0302,0110,01,011,0, + /* 7390 */ 0261,01,052,01,0302,0120,01,012,0, + /* 7399 */ 0260,01,052,01,0302,0110,01,012,0, + /* 7408 */ 0261,01,052,01,0302,0120,01,013,0, + /* 7417 */ 0260,01,052,01,0302,0110,01,013,0, + /* 7426 */ 0261,01,052,01,0302,0120,01,014,0, + /* 7435 */ 0260,01,052,01,0302,0110,01,014,0, + /* 7444 */ 0261,01,052,01,0302,0120,01,015,0, + /* 7453 */ 0260,01,052,01,0302,0110,01,015,0, + /* 7462 */ 0261,01,052,01,0302,0120,01,016,0, + /* 7471 */ 0260,01,052,01,0302,0110,01,016,0, + /* 7480 */ 0261,01,052,01,0302,0120,01,017,0, + /* 7489 */ 0260,01,052,01,0302,0110,01,017,0, + /* 7498 */ 0261,01,052,01,0302,0120,01,021,0, + /* 7507 */ 0260,01,052,01,0302,0110,01,021,0, + /* 7516 */ 0261,01,052,01,0302,0120,01,022,0, + /* 7525 */ 0260,01,052,01,0302,0110,01,022,0, + /* 7534 */ 0261,01,052,01,0302,0120,01,023,0, + /* 7543 */ 0260,01,052,01,0302,0110,01,023,0, + /* 7552 */ 0261,01,052,01,0302,0120,01,024,0, + /* 7561 */ 0260,01,052,01,0302,0110,01,024,0, + /* 7570 */ 0261,01,052,01,0302,0120,01,025,0, + /* 7579 */ 0260,01,052,01,0302,0110,01,025,0, + /* 7588 */ 0261,01,052,01,0302,0120,01,026,0, + /* 7597 */ 0260,01,052,01,0302,0110,01,026,0, + /* 7606 */ 0261,01,052,01,0302,0120,01,027,0, + /* 7615 */ 0260,01,052,01,0302,0110,01,027,0, + /* 7624 */ 0261,01,052,01,0302,0120,01,030,0, + /* 7633 */ 0260,01,052,01,0302,0110,01,030,0, + /* 7642 */ 0261,01,052,01,0302,0120,01,031,0, + /* 7651 */ 0260,01,052,01,0302,0110,01,031,0, + /* 7660 */ 0261,01,052,01,0302,0120,01,032,0, + /* 7669 */ 0260,01,052,01,0302,0110,01,032,0, + /* 7678 */ 0261,01,052,01,0302,0120,01,033,0, + /* 7687 */ 0260,01,052,01,0302,0110,01,033,0, + /* 7696 */ 0261,01,052,01,0302,0120,01,034,0, + /* 7705 */ 0260,01,052,01,0302,0110,01,034,0, + /* 7714 */ 0261,01,052,01,0302,0120,01,035,0, + /* 7723 */ 0260,01,052,01,0302,0110,01,035,0, + /* 7732 */ 0261,01,052,01,0302,0120,01,036,0, + /* 7741 */ 0260,01,052,01,0302,0110,01,036,0, + /* 7750 */ 0261,01,052,01,0302,0120,01,037,0, + /* 7759 */ 0260,01,052,01,0302,0110,01,037,0, + /* 7768 */ 0361,03,017,072,0104,0110,01,0,0, + /* 7777 */ 0361,03,017,072,0104,0110,01,01,0, + /* 7786 */ 0361,03,017,072,0104,0110,01,020,0, + /* 7795 */ 0361,03,017,072,0104,0110,01,021,0, + /* 7804 */ 0261,03,041,01,0104,0120,01,0,0, + /* 7813 */ 0260,03,041,01,0104,0110,01,0,0, + /* 7822 */ 0261,03,041,01,0104,0120,01,01,0, + /* 7831 */ 0260,03,041,01,0104,0110,01,01,0, + /* 7840 */ 0261,03,041,01,0104,0120,01,020,0, + /* 7849 */ 0260,03,041,01,0104,0110,01,020,0, + /* 7858 */ 0261,03,041,01,0104,0120,01,021,0, + /* 7867 */ 0260,03,041,01,0104,0110,01,021,0, + /* 7876 */ 0261,03,045,01,0104,0120,01,0,0, + /* 7885 */ 0260,03,045,01,0104,0110,01,0,0, + /* 7894 */ 0261,03,045,01,0104,0120,01,01,0, + /* 7903 */ 0260,03,045,01,0104,0110,01,01,0, + /* 7912 */ 0261,03,045,01,0104,0120,01,020,0, + /* 7921 */ 0260,03,045,01,0104,0110,01,020,0, + /* 7930 */ 0261,03,045,01,0104,0120,01,021,0, + /* 7939 */ 0260,03,045,01,0104,0110,01,021,0, + /* 7948 */ 0241,0203,041,0301,01,0104,0120,023,0, + /* 7957 */ 0240,0203,041,0301,01,0104,0110,022,0, + /* 7966 */ 0241,0203,045,0301,01,0104,0120,023,0, + /* 7975 */ 0240,0203,045,0301,01,0104,0110,022,0, + /* 7984 */ 0241,0203,051,0301,01,0104,0120,023,0, + /* 7993 */ 0240,0203,051,0301,01,0104,0110,022,0, + /* 8002 */ 0241,0203,01,0301,01,03,0120,023,0, + /* 8011 */ 0240,0203,01,0301,01,03,0110,022,0, + /* 8020 */ 0241,0203,05,0301,01,03,0120,023,0, + /* 8029 */ 0240,0203,05,0301,01,03,0110,022,0, + /* 8038 */ 0241,0203,011,0301,01,03,0120,023,0, + /* 8047 */ 0240,0203,011,0301,01,03,0110,022,0, + /* 8056 */ 0241,0203,021,0301,01,03,0120,023,0, + /* 8065 */ 0240,0203,021,0301,01,03,0110,022,0, + /* 8074 */ 0241,0203,025,0301,01,03,0120,023,0, + /* 8083 */ 0240,0203,025,0301,01,03,0110,022,0, + /* 8092 */ 0241,0203,031,0301,01,03,0120,023,0, + /* 8101 */ 0240,0203,031,0301,01,03,0110,022,0, + /* 8110 */ 0241,0201,021,0301,01,0302,0120,023,0, + /* 8119 */ 0241,0201,025,0301,01,0302,0120,023,0, + /* 8128 */ 0241,0201,031,0301,01,0302,0120,023,0, + /* 8137 */ 0241,0201,0,0301,01,0302,0120,023,0, + /* 8146 */ 0241,0201,04,0301,01,0302,0120,023,0, + /* 8155 */ 0241,0201,010,0301,01,0302,0120,023,0, + /* 8164 */ 0241,0201,023,0306,01,0302,0120,023,0, + /* 8173 */ 0241,0201,02,0306,01,0302,0120,023,0, + /* 8182 */ 0250,0203,01,0314,01,035,0101,022,0, + /* 8191 */ 0250,0203,05,0314,01,035,0101,022,0, + /* 8200 */ 0250,0203,011,0314,01,035,0101,022,0, + /* 8209 */ 0241,0203,01,0303,01,0102,0120,023,0, + /* 8218 */ 0240,0203,01,0303,01,0102,0110,022,0, + /* 8227 */ 0241,0203,05,0303,01,0102,0120,023,0, + /* 8236 */ 0240,0203,05,0303,01,0102,0110,022,0, + /* 8245 */ 0241,0203,011,0303,01,0102,0120,023,0, + /* 8254 */ 0240,0203,011,0303,01,0102,0110,022,0, + /* 8263 */ 0250,0203,05,0300,01,031,0101,022,0, + /* 8272 */ 0250,0203,011,0300,01,031,0101,022,0, + /* 8281 */ 0250,0203,05,0312,01,031,0101,022,0, + /* 8290 */ 0250,0203,011,0312,01,031,0101,022,0, + /* 8299 */ 0250,0203,011,0300,01,033,0101,022,0, + /* 8308 */ 0250,0203,011,0313,01,033,0101,022,0, + /* 8317 */ 0250,0203,025,0300,01,031,0101,022,0, + /* 8326 */ 0250,0203,031,0300,01,031,0101,022,0, + /* 8335 */ 0250,0203,025,0311,01,031,0101,022,0, + /* 8344 */ 0250,0203,031,0311,01,031,0101,022,0, + /* 8353 */ 0250,0203,031,0300,01,033,0101,022,0, + /* 8362 */ 0250,0203,031,0312,01,033,0101,022,0, + /* 8371 */ 0250,0203,05,0300,01,071,0101,022,0, + /* 8380 */ 0250,0203,011,0300,01,071,0101,022,0, + /* 8389 */ 0250,0203,05,0312,01,071,0101,022,0, + /* 8398 */ 0250,0203,011,0312,01,071,0101,022,0, + /* 8407 */ 0250,0203,011,0300,01,073,0101,022,0, + /* 8416 */ 0250,0203,011,0313,01,073,0101,022,0, + /* 8425 */ 0250,0203,025,0300,01,071,0101,022,0, + /* 8434 */ 0250,0203,031,0300,01,071,0101,022,0, + /* 8443 */ 0250,0203,025,0311,01,071,0101,022,0, + /* 8452 */ 0250,0203,031,0311,01,071,0101,022,0, + /* 8461 */ 0250,0203,031,0300,01,073,0101,022,0, + /* 8470 */ 0250,0203,031,0312,01,073,0101,022,0, + /* 8479 */ 0250,0203,041,0306,01,027,0101,022,0, + /* 8488 */ 0241,0203,021,0301,01,0124,0120,023,0, + /* 8497 */ 0240,0203,021,0301,01,0124,0110,022,0, + /* 8506 */ 0241,0203,025,0301,01,0124,0120,023,0, + /* 8515 */ 0240,0203,025,0301,01,0124,0110,022,0, + /* 8524 */ 0241,0203,031,0301,01,0124,0120,023,0, + /* 8533 */ 0240,0203,031,0301,01,0124,0110,022,0, + /* 8542 */ 0241,0203,01,0301,01,0124,0120,023,0, + /* 8551 */ 0240,0203,01,0301,01,0124,0110,022,0, + /* 8560 */ 0241,0203,05,0301,01,0124,0120,023,0, + /* 8569 */ 0240,0203,05,0301,01,0124,0110,022,0, + /* 8578 */ 0241,0203,011,0301,01,0124,0120,023,0, + /* 8587 */ 0240,0203,011,0301,01,0124,0110,022,0, + /* 8596 */ 0241,0203,021,0306,01,0125,0120,023,0, + /* 8605 */ 0240,0203,021,0306,01,0125,0110,022,0, + /* 8614 */ 0241,0203,01,0306,01,0125,0120,023,0, + /* 8623 */ 0240,0203,01,0306,01,0125,0110,022,0, + /* 8632 */ 0250,0203,021,0301,01,0146,0110,022,0, + /* 8641 */ 0250,0203,025,0301,01,0146,0110,022,0, + /* 8650 */ 0250,0203,031,0301,01,0146,0110,022,0, + /* 8659 */ 0250,0203,01,0301,01,0146,0110,022,0, + /* 8668 */ 0250,0203,05,0301,01,0146,0110,022,0, + /* 8677 */ 0250,0203,011,0301,01,0146,0110,022,0, + /* 8686 */ 0250,0203,021,0306,01,0147,0110,022,0, + /* 8695 */ 0250,0203,01,0306,01,0147,0110,022,0, + /* 8704 */ 0374,0250,0202,021,0306,01,0222,0110,0, + /* 8713 */ 0374,0250,0202,025,0306,01,0222,0110,0, + /* 8722 */ 0375,0250,0202,031,0306,01,0222,0110,0, + /* 8731 */ 0374,0250,0202,01,0306,01,0222,0110,0, + /* 8740 */ 0375,0250,0202,05,0306,01,0222,0110,0, + /* 8749 */ 0376,0250,0202,011,0306,01,0222,0110,0, + /* 8758 */ 0375,0250,0202,031,0306,01,0306,0201,0, + /* 8767 */ 0376,0250,0202,011,0306,01,0306,0201,0, + /* 8776 */ 0376,0250,0202,031,0306,01,0307,0201,0, + /* 8785 */ 0376,0250,0202,011,0306,01,0307,0201,0, + /* 8794 */ 0375,0250,0202,031,0306,01,0306,0202,0, + /* 8803 */ 0376,0250,0202,011,0306,01,0306,0202,0, + /* 8812 */ 0376,0250,0202,031,0306,01,0307,0202,0, + /* 8821 */ 0376,0250,0202,011,0306,01,0307,0202,0, + /* 8830 */ 0374,0250,0202,021,0306,01,0223,0110,0, + /* 8839 */ 0375,0250,0202,025,0306,01,0223,0110,0, + /* 8848 */ 0376,0250,0202,031,0306,01,0223,0110,0, + /* 8857 */ 0374,0250,0202,01,0306,01,0223,0110,0, + /* 8866 */ 0375,0250,0202,05,0306,01,0223,0110,0, + /* 8875 */ 0376,0250,0202,011,0306,01,0223,0110,0, + /* 8884 */ 0250,0203,021,0301,01,046,0110,022,0, + /* 8893 */ 0250,0203,025,0301,01,046,0110,022,0, + /* 8902 */ 0250,0203,031,0301,01,046,0110,022,0, + /* 8911 */ 0250,0203,01,0301,01,046,0110,022,0, + /* 8920 */ 0250,0203,05,0301,01,046,0110,022,0, + /* 8929 */ 0250,0203,011,0301,01,046,0110,022,0, + /* 8938 */ 0241,0203,021,0306,01,047,0120,023,0, + /* 8947 */ 0241,0203,01,0306,01,047,0120,023,0, + /* 8956 */ 0241,0203,05,0312,01,030,0120,023,0, + /* 8965 */ 0240,0203,05,0312,01,030,0110,022,0, + /* 8974 */ 0241,0203,011,0312,01,030,0120,023,0, + /* 8983 */ 0240,0203,011,0312,01,030,0110,022,0, + /* 8992 */ 0241,0203,011,0313,01,032,0120,023,0, + /* 9001 */ 0240,0203,011,0313,01,032,0110,022,0, + /* 9010 */ 0241,0203,025,0311,01,030,0120,023,0, + /* 9019 */ 0240,0203,025,0311,01,030,0110,022,0, + /* 9028 */ 0241,0203,031,0311,01,030,0120,023,0, + /* 9037 */ 0240,0203,031,0311,01,030,0110,022,0, + /* 9046 */ 0241,0203,031,0312,01,032,0120,023,0, + /* 9055 */ 0240,0203,031,0312,01,032,0110,022,0, + /* 9064 */ 0241,0203,05,0312,01,070,0120,023,0, + /* 9073 */ 0240,0203,05,0312,01,070,0110,022,0, + /* 9082 */ 0241,0203,011,0312,01,070,0120,023,0, + /* 9091 */ 0240,0203,011,0312,01,070,0110,022,0, + /* 9100 */ 0241,0203,011,0313,01,072,0120,023,0, + /* 9109 */ 0240,0203,011,0313,01,072,0110,022,0, + /* 9118 */ 0241,0203,025,0311,01,070,0120,023,0, + /* 9127 */ 0240,0203,025,0311,01,070,0110,022,0, + /* 9136 */ 0241,0203,031,0311,01,070,0120,023,0, + /* 9145 */ 0240,0203,031,0311,01,070,0110,022,0, + /* 9154 */ 0241,0203,031,0312,01,072,0120,023,0, + /* 9163 */ 0240,0203,031,0312,01,072,0110,022,0, + /* 9172 */ 0241,0203,01,0306,01,041,0120,023,0, + /* 9181 */ 0240,0203,01,0306,01,041,0110,022,0, + /* 9190 */ 0241,0203,041,0303,01,017,0120,023,0, + /* 9199 */ 0240,0203,041,0303,01,017,0110,022,0, + /* 9208 */ 0241,0203,045,0303,01,017,0120,023,0, + /* 9217 */ 0240,0203,045,0303,01,017,0110,022,0, + /* 9226 */ 0241,0203,051,0303,01,017,0120,023,0, + /* 9235 */ 0240,0203,051,0303,01,017,0110,022,0, + /* 9244 */ 0241,0203,01,0303,01,077,0120,023,0, + /* 9253 */ 0241,0203,05,0303,01,077,0120,023,0, + /* 9262 */ 0241,0203,011,0303,01,077,0120,023,0, + /* 9271 */ 0241,0203,01,0301,01,037,0120,023,0, + /* 9280 */ 0241,0203,05,0301,01,037,0120,023,0, + /* 9289 */ 0241,0203,011,0301,01,037,0120,023,0, + /* 9298 */ 0241,0203,021,0301,01,037,0120,023,0, + /* 9307 */ 0241,0203,025,0301,01,037,0120,023,0, + /* 9316 */ 0241,0203,031,0301,01,037,0120,023,0, + /* 9325 */ 0241,0203,01,0303,01,076,0120,023,0, + /* 9334 */ 0241,0203,05,0303,01,076,0120,023,0, + /* 9343 */ 0241,0203,011,0303,01,076,0120,023,0, + /* 9352 */ 0241,0203,01,0301,01,036,0120,023,0, + /* 9361 */ 0241,0203,05,0301,01,036,0120,023,0, + /* 9370 */ 0241,0203,011,0301,01,036,0120,023,0, + /* 9379 */ 0241,0203,021,0301,01,036,0120,023,0, + /* 9388 */ 0241,0203,025,0301,01,036,0120,023,0, + /* 9397 */ 0241,0203,031,0301,01,036,0120,023,0, + /* 9406 */ 0241,0203,021,0303,01,076,0120,023,0, + /* 9415 */ 0241,0203,025,0303,01,076,0120,023,0, + /* 9424 */ 0241,0203,031,0303,01,076,0120,023,0, + /* 9433 */ 0241,0203,021,0303,01,077,0120,023,0, + /* 9442 */ 0241,0203,025,0303,01,077,0120,023,0, + /* 9451 */ 0241,0203,031,0303,01,077,0120,023,0, + /* 9460 */ 0250,0203,021,0301,01,05,0110,022,0, + /* 9469 */ 0250,0203,025,0301,01,05,0110,022,0, + /* 9478 */ 0250,0203,031,0301,01,05,0110,022,0, + /* 9487 */ 0250,0203,01,0301,01,04,0110,022,0, + /* 9496 */ 0250,0203,05,0301,01,04,0110,022,0, + /* 9505 */ 0250,0203,011,0301,01,04,0110,022,0, + /* 9514 */ 0250,0203,025,0301,01,01,0110,022,0, + /* 9523 */ 0250,0203,031,0301,01,01,0110,022,0, + /* 9532 */ 0250,0203,025,0301,01,0,0110,022,0, + /* 9541 */ 0250,0203,031,0301,01,0,0110,022,0, + /* 9550 */ 0250,0203,041,0304,01,024,0101,022,0, + /* 9559 */ 0250,0203,01,0306,01,026,0101,022,0, + /* 9568 */ 0250,0203,021,0306,01,026,0101,022,0, + /* 9577 */ 0250,0203,041,0305,01,025,0101,022,0, + /* 9586 */ 0250,0201,041,0300,01,0305,0110,022,0, + /* 9595 */ 0374,0250,0202,01,0306,01,0220,0110,0, + /* 9604 */ 0375,0250,0202,05,0306,01,0220,0110,0, + /* 9613 */ 0376,0250,0202,011,0306,01,0220,0110,0, + /* 9622 */ 0374,0250,0202,021,0306,01,0220,0110,0, + /* 9631 */ 0374,0250,0202,025,0306,01,0220,0110,0, + /* 9640 */ 0375,0250,0202,031,0306,01,0220,0110,0, + /* 9649 */ 0374,0250,0202,01,0306,01,0221,0110,0, + /* 9658 */ 0375,0250,0202,05,0306,01,0221,0110,0, + /* 9667 */ 0376,0250,0202,011,0306,01,0221,0110,0, + /* 9676 */ 0374,0250,0202,021,0306,01,0221,0110,0, + /* 9685 */ 0375,0250,0202,025,0306,01,0221,0110,0, + /* 9694 */ 0376,0250,0202,031,0306,01,0221,0110,0, + /* 9703 */ 0241,0203,041,0304,01,040,0120,023,0, + /* 9712 */ 0240,0203,041,0304,01,040,0110,022,0, + /* 9721 */ 0241,0203,01,0306,01,042,0120,023,0, + /* 9730 */ 0240,0203,01,0306,01,042,0110,022,0, + /* 9739 */ 0241,0203,021,0306,01,042,0120,023,0, + /* 9748 */ 0240,0203,021,0306,01,042,0110,022,0, + /* 9757 */ 0241,0201,041,0305,01,0304,0120,023,0, + /* 9766 */ 0240,0201,041,0305,01,0304,0110,022,0, + /* 9775 */ 0240,0201,01,0301,01,0162,0211,022,0, + /* 9784 */ 0240,0201,01,0301,01,0162,0201,021,0, + /* 9793 */ 0240,0201,05,0301,01,0162,0211,022,0, + /* 9802 */ 0240,0201,05,0301,01,0162,0201,021,0, + /* 9811 */ 0240,0201,011,0301,01,0162,0211,022,0, + /* 9820 */ 0240,0201,011,0301,01,0162,0201,021,0, + /* 9829 */ 0240,0201,021,0301,01,0162,0211,022,0, + /* 9838 */ 0240,0201,021,0301,01,0162,0201,021,0, + /* 9847 */ 0240,0201,025,0301,01,0162,0211,022,0, + /* 9856 */ 0240,0201,025,0301,01,0162,0201,021,0, + /* 9865 */ 0240,0201,031,0301,01,0162,0211,022,0, + /* 9874 */ 0240,0201,031,0301,01,0162,0201,021,0, + /* 9883 */ 0240,0201,01,0301,01,0162,0210,022,0, + /* 9892 */ 0240,0201,01,0301,01,0162,0200,021,0, + /* 9901 */ 0240,0201,05,0301,01,0162,0210,022,0, + /* 9910 */ 0240,0201,05,0301,01,0162,0200,021,0, + /* 9919 */ 0240,0201,011,0301,01,0162,0210,022,0, + /* 9928 */ 0240,0201,011,0301,01,0162,0200,021,0, + /* 9937 */ 0240,0201,021,0301,01,0162,0210,022,0, + /* 9946 */ 0240,0201,021,0301,01,0162,0200,021,0, + /* 9955 */ 0240,0201,025,0301,01,0162,0210,022,0, + /* 9964 */ 0240,0201,025,0301,01,0162,0200,021,0, + /* 9973 */ 0240,0201,031,0301,01,0162,0210,022,0, + /* 9982 */ 0240,0201,031,0301,01,0162,0200,021,0, + /* 9991 */ 0374,0250,0202,01,0306,01,0240,0101,0, + /* 10000 */ 0375,0250,0202,05,0306,01,0240,0101,0, + /* 10009 */ 0376,0250,0202,011,0306,01,0240,0101,0, + /* 10018 */ 0374,0250,0202,021,0306,01,0240,0101,0, + /* 10027 */ 0374,0250,0202,025,0306,01,0240,0101,0, + /* 10036 */ 0375,0250,0202,031,0306,01,0240,0101,0, + /* 10045 */ 0374,0250,0202,01,0306,01,0241,0101,0, + /* 10054 */ 0375,0250,0202,05,0306,01,0241,0101,0, + /* 10063 */ 0376,0250,0202,011,0306,01,0241,0101,0, + /* 10072 */ 0374,0250,0202,021,0306,01,0241,0101,0, + /* 10081 */ 0375,0250,0202,025,0306,01,0241,0101,0, + /* 10090 */ 0376,0250,0202,031,0306,01,0241,0101,0, + /* 10099 */ 0250,0201,01,0301,01,0160,0110,022,0, + /* 10108 */ 0250,0201,05,0301,01,0160,0110,022,0, + /* 10117 */ 0250,0201,011,0301,01,0160,0110,022,0, + /* 10126 */ 0250,0201,042,0303,01,0160,0110,022,0, + /* 10135 */ 0250,0201,046,0303,01,0160,0110,022,0, + /* 10144 */ 0250,0201,052,0303,01,0160,0110,022,0, + /* 10153 */ 0250,0201,043,0303,01,0160,0110,022,0, + /* 10162 */ 0250,0201,047,0303,01,0160,0110,022,0, + /* 10171 */ 0250,0201,053,0303,01,0160,0110,022,0, + /* 10180 */ 0240,0201,01,0301,01,0162,0216,022,0, + /* 10189 */ 0240,0201,01,0301,01,0162,0206,021,0, + /* 10198 */ 0240,0201,05,0301,01,0162,0216,022,0, + /* 10207 */ 0240,0201,05,0301,01,0162,0206,021,0, + /* 10216 */ 0240,0201,011,0301,01,0162,0216,022,0, + /* 10225 */ 0240,0201,011,0301,01,0162,0206,021,0, + /* 10234 */ 0240,0201,041,0303,01,0163,0217,022,0, + /* 10243 */ 0240,0201,041,0303,01,0163,0207,021,0, + /* 10252 */ 0240,0201,045,0303,01,0163,0217,022,0, + /* 10261 */ 0240,0201,045,0303,01,0163,0207,021,0, + /* 10270 */ 0240,0201,051,0303,01,0163,0217,022,0, + /* 10279 */ 0240,0201,051,0303,01,0163,0207,021,0, + /* 10288 */ 0240,0201,021,0301,01,0163,0216,022,0, + /* 10297 */ 0240,0201,021,0301,01,0163,0206,021,0, + /* 10306 */ 0240,0201,025,0301,01,0163,0216,022,0, + /* 10315 */ 0240,0201,025,0301,01,0163,0206,021,0, + /* 10324 */ 0240,0201,031,0301,01,0163,0216,022,0, + /* 10333 */ 0240,0201,031,0301,01,0163,0206,021,0, + /* 10342 */ 0240,0201,041,0303,01,0161,0216,022,0, + /* 10351 */ 0240,0201,041,0303,01,0161,0206,021,0, + /* 10360 */ 0240,0201,045,0303,01,0161,0216,022,0, + /* 10369 */ 0240,0201,045,0303,01,0161,0206,021,0, + /* 10378 */ 0240,0201,051,0303,01,0161,0216,022,0, + /* 10387 */ 0240,0201,051,0303,01,0161,0206,021,0, + /* 10396 */ 0240,0201,01,0301,01,0162,0214,022,0, + /* 10405 */ 0240,0201,01,0301,01,0162,0204,021,0, + /* 10414 */ 0240,0201,05,0301,01,0162,0214,022,0, + /* 10423 */ 0240,0201,05,0301,01,0162,0204,021,0, + /* 10432 */ 0240,0201,011,0301,01,0162,0214,022,0, + /* 10441 */ 0240,0201,011,0301,01,0162,0204,021,0, + /* 10450 */ 0240,0201,021,0301,01,0162,0214,022,0, + /* 10459 */ 0240,0201,021,0301,01,0162,0204,021,0, + /* 10468 */ 0240,0201,025,0301,01,0162,0214,022,0, + /* 10477 */ 0240,0201,025,0301,01,0162,0204,021,0, + /* 10486 */ 0240,0201,031,0301,01,0162,0214,022,0, + /* 10495 */ 0240,0201,031,0301,01,0162,0204,021,0, + /* 10504 */ 0240,0201,041,0303,01,0161,0214,022,0, + /* 10513 */ 0240,0201,041,0303,01,0161,0204,021,0, + /* 10522 */ 0240,0201,045,0303,01,0161,0214,022,0, + /* 10531 */ 0240,0201,045,0303,01,0161,0204,021,0, + /* 10540 */ 0240,0201,051,0303,01,0161,0214,022,0, + /* 10549 */ 0240,0201,051,0303,01,0161,0204,021,0, + /* 10558 */ 0240,0201,01,0301,01,0162,0212,022,0, + /* 10567 */ 0240,0201,01,0301,01,0162,0202,021,0, + /* 10576 */ 0240,0201,05,0301,01,0162,0212,022,0, + /* 10585 */ 0240,0201,05,0301,01,0162,0202,021,0, + /* 10594 */ 0240,0201,011,0301,01,0162,0212,022,0, + /* 10603 */ 0240,0201,011,0301,01,0162,0202,021,0, + /* 10612 */ 0240,0201,041,0303,01,0163,0213,022,0, + /* 10621 */ 0240,0201,041,0303,01,0163,0203,021,0, + /* 10630 */ 0240,0201,045,0303,01,0163,0213,022,0, + /* 10639 */ 0240,0201,045,0303,01,0163,0203,021,0, + /* 10648 */ 0240,0201,051,0303,01,0163,0213,022,0, + /* 10657 */ 0240,0201,051,0303,01,0163,0203,021,0, + /* 10666 */ 0240,0201,021,0301,01,0163,0212,022,0, + /* 10675 */ 0240,0201,021,0301,01,0163,0202,021,0, + /* 10684 */ 0240,0201,025,0301,01,0163,0212,022,0, + /* 10693 */ 0240,0201,025,0301,01,0163,0202,021,0, + /* 10702 */ 0240,0201,031,0301,01,0163,0212,022,0, + /* 10711 */ 0240,0201,031,0301,01,0163,0202,021,0, + /* 10720 */ 0240,0201,041,0303,01,0161,0212,022,0, + /* 10729 */ 0240,0201,041,0303,01,0161,0202,021,0, + /* 10738 */ 0240,0201,045,0303,01,0161,0212,022,0, + /* 10747 */ 0240,0201,045,0303,01,0161,0202,021,0, + /* 10756 */ 0240,0201,051,0303,01,0161,0212,022,0, + /* 10765 */ 0240,0201,051,0303,01,0161,0202,021,0, + /* 10774 */ 0241,0203,01,0301,01,045,0120,023,0, + /* 10783 */ 0241,0203,05,0301,01,045,0120,023,0, + /* 10792 */ 0241,0203,011,0301,01,045,0120,023,0, + /* 10801 */ 0241,0203,021,0301,01,045,0120,023,0, + /* 10810 */ 0241,0203,025,0301,01,045,0120,023,0, + /* 10819 */ 0241,0203,031,0301,01,045,0120,023,0, + /* 10828 */ 0241,0203,021,0301,01,0120,0120,023,0, + /* 10837 */ 0240,0203,021,0301,01,0120,0110,022,0, + /* 10846 */ 0241,0203,025,0301,01,0120,0120,023,0, + /* 10855 */ 0240,0203,025,0301,01,0120,0110,022,0, + /* 10864 */ 0241,0203,031,0301,01,0120,0120,023,0, + /* 10873 */ 0240,0203,031,0301,01,0120,0110,022,0, + /* 10882 */ 0241,0203,01,0301,01,0120,0120,023,0, + /* 10891 */ 0240,0203,01,0301,01,0120,0110,022,0, + /* 10900 */ 0241,0203,05,0301,01,0120,0120,023,0, + /* 10909 */ 0240,0203,05,0301,01,0120,0110,022,0, + /* 10918 */ 0241,0203,011,0301,01,0120,0120,023,0, + /* 10927 */ 0240,0203,011,0301,01,0120,0110,022,0, + /* 10936 */ 0241,0203,021,0306,01,0121,0120,023,0, + /* 10945 */ 0240,0203,021,0306,01,0121,0110,022,0, + /* 10954 */ 0241,0203,01,0306,01,0121,0120,023,0, + /* 10963 */ 0240,0203,01,0306,01,0121,0110,022,0, + /* 10972 */ 0250,0203,021,0301,01,0126,0110,022,0, + /* 10981 */ 0250,0203,025,0301,01,0126,0110,022,0, + /* 10990 */ 0250,0203,031,0301,01,0126,0110,022,0, + /* 10999 */ 0250,0203,01,0301,01,0126,0110,022,0, + /* 11008 */ 0250,0203,05,0301,01,0126,0110,022,0, + /* 11017 */ 0250,0203,011,0301,01,0126,0110,022,0, + /* 11026 */ 0241,0203,021,0306,01,0127,0120,023,0, + /* 11035 */ 0240,0203,021,0306,01,0127,0110,022,0, + /* 11044 */ 0241,0203,01,0306,01,0127,0120,023,0, + /* 11053 */ 0240,0203,01,0306,01,0127,0110,022,0, + /* 11062 */ 0250,0203,021,0301,01,011,0110,022,0, + /* 11071 */ 0250,0203,025,0301,01,011,0110,022,0, + /* 11080 */ 0250,0203,031,0301,01,011,0110,022,0, + /* 11089 */ 0250,0203,01,0301,01,010,0110,022,0, + /* 11098 */ 0250,0203,05,0301,01,010,0110,022,0, + /* 11107 */ 0250,0203,011,0301,01,010,0110,022,0, + /* 11116 */ 0241,0203,021,0306,01,013,0120,023,0, + /* 11125 */ 0240,0203,021,0306,01,013,0110,022,0, + /* 11134 */ 0241,0203,01,0306,01,012,0120,023,0, + /* 11143 */ 0240,0203,01,0306,01,012,0110,022,0, + /* 11152 */ 0374,0250,0202,021,0306,01,0242,0101,0, + /* 11161 */ 0374,0250,0202,025,0306,01,0242,0101,0, + /* 11170 */ 0375,0250,0202,031,0306,01,0242,0101,0, + /* 11179 */ 0374,0250,0202,01,0306,01,0242,0101,0, + /* 11188 */ 0375,0250,0202,05,0306,01,0242,0101,0, + /* 11197 */ 0376,0250,0202,011,0306,01,0242,0101,0, + /* 11206 */ 0375,0250,0202,031,0306,01,0306,0205,0, + /* 11215 */ 0376,0250,0202,011,0306,01,0306,0205,0, + /* 11224 */ 0376,0250,0202,031,0306,01,0307,0205,0, + /* 11233 */ 0376,0250,0202,011,0306,01,0307,0205,0, + /* 11242 */ 0375,0250,0202,031,0306,01,0306,0206,0, + /* 11251 */ 0376,0250,0202,011,0306,01,0306,0206,0, + /* 11260 */ 0376,0250,0202,031,0306,01,0307,0206,0, + /* 11269 */ 0376,0250,0202,011,0306,01,0307,0206,0, + /* 11278 */ 0374,0250,0202,021,0306,01,0243,0101,0, + /* 11287 */ 0375,0250,0202,025,0306,01,0243,0101,0, + /* 11296 */ 0376,0250,0202,031,0306,01,0243,0101,0, + /* 11305 */ 0374,0250,0202,01,0306,01,0243,0101,0, + /* 11314 */ 0375,0250,0202,05,0306,01,0243,0101,0, + /* 11323 */ 0376,0250,0202,011,0306,01,0243,0101,0, + /* 11332 */ 0241,0203,05,0301,01,043,0120,023,0, + /* 11341 */ 0240,0203,05,0301,01,043,0110,022,0, + /* 11350 */ 0241,0203,011,0301,01,043,0120,023,0, + /* 11359 */ 0240,0203,011,0301,01,043,0110,022,0, + /* 11368 */ 0241,0203,025,0301,01,043,0120,023,0, + /* 11377 */ 0240,0203,025,0301,01,043,0110,022,0, + /* 11386 */ 0241,0203,031,0301,01,043,0120,023,0, + /* 11395 */ 0240,0203,031,0301,01,043,0110,022,0, + /* 11404 */ 0241,0203,05,0301,01,0103,0120,023,0, + /* 11413 */ 0240,0203,05,0301,01,0103,0110,022,0, + /* 11422 */ 0241,0203,011,0301,01,0103,0120,023,0, + /* 11431 */ 0240,0203,011,0301,01,0103,0110,022,0, + /* 11440 */ 0241,0203,025,0301,01,0103,0120,023,0, + /* 11449 */ 0240,0203,025,0301,01,0103,0110,022,0, + /* 11458 */ 0241,0203,031,0301,01,0103,0120,023,0, + /* 11467 */ 0240,0203,031,0301,01,0103,0110,022,0, + /* 11476 */ 0241,0201,021,0301,01,0306,0120,023,0, + /* 11485 */ 0240,0201,021,0301,01,0306,0110,022,0, + /* 11494 */ 0241,0201,025,0301,01,0306,0120,023,0, + /* 11503 */ 0240,0201,025,0301,01,0306,0110,022,0, + /* 11512 */ 0241,0201,031,0301,01,0306,0120,023,0, + /* 11521 */ 0240,0201,031,0301,01,0306,0110,022,0, + /* 11530 */ 0241,0201,0,0301,01,0306,0120,023,0, + /* 11539 */ 0240,0201,0,0301,01,0306,0110,022,0, + /* 11548 */ 0241,0201,04,0301,01,0306,0120,023,0, + /* 11557 */ 0240,0201,04,0301,01,0306,0110,022,0, + /* 11566 */ 0241,0201,010,0301,01,0306,0120,023,0, + /* 11575 */ 0240,0201,010,0301,01,0306,0110,022,0, + /* 11584 */ 0323,0313,0361,03,017,070,0370,0110,0, + /* 11593 */ 0241,0203,021,0301,01,0317,0120,023,0, + /* 11602 */ 0240,0203,021,0301,01,0317,0110,022,0, + /* 11611 */ 0241,0203,025,0301,01,0317,0120,023,0, + /* 11620 */ 0240,0203,025,0301,01,0317,0110,022,0, + /* 11629 */ 0241,0203,031,0301,01,0317,0120,023,0, + /* 11638 */ 0240,0203,031,0301,01,0317,0110,022,0, + /* 11647 */ 0241,0203,021,0301,01,0316,0120,023,0, + /* 11656 */ 0240,0203,021,0301,01,0316,0110,022,0, + /* 11665 */ 0241,0203,025,0301,01,0316,0120,023,0, + /* 11674 */ 0240,0203,025,0301,01,0316,0110,022,0, + /* 11683 */ 0241,0203,031,0301,01,0316,0120,023,0, + /* 11692 */ 0240,0203,031,0301,01,0316,0110,022,0, + /* 11701 */ 0241,0203,021,0303,01,0160,0120,023,0, + /* 11710 */ 0240,0203,021,0303,01,0160,0110,022,0, + /* 11719 */ 0241,0203,025,0303,01,0160,0120,023,0, + /* 11728 */ 0240,0203,025,0303,01,0160,0110,022,0, + /* 11737 */ 0241,0203,031,0303,01,0160,0120,023,0, + /* 11746 */ 0240,0203,031,0303,01,0160,0110,022,0, + /* 11755 */ 0241,0203,01,0301,01,0161,0120,023,0, + /* 11764 */ 0240,0203,01,0301,01,0161,0110,022,0, + /* 11773 */ 0241,0203,05,0301,01,0161,0120,023,0, + /* 11782 */ 0240,0203,05,0301,01,0161,0110,022,0, + /* 11791 */ 0241,0203,011,0301,01,0161,0120,023,0, + /* 11800 */ 0240,0203,011,0301,01,0161,0110,022,0, + /* 11809 */ 0241,0203,021,0301,01,0161,0120,023,0, + /* 11818 */ 0240,0203,021,0301,01,0161,0110,022,0, + /* 11827 */ 0241,0203,025,0301,01,0161,0120,023,0, + /* 11836 */ 0240,0203,025,0301,01,0161,0110,022,0, + /* 11845 */ 0241,0203,031,0301,01,0161,0120,023,0, + /* 11854 */ 0240,0203,031,0301,01,0161,0110,022,0, + /* 11863 */ 0241,0203,021,0303,01,0162,0120,023,0, + /* 11872 */ 0240,0203,021,0303,01,0162,0110,022,0, + /* 11881 */ 0241,0203,025,0303,01,0162,0120,023,0, + /* 11890 */ 0240,0203,025,0303,01,0162,0110,022,0, + /* 11899 */ 0241,0203,031,0303,01,0162,0120,023,0, + /* 11908 */ 0240,0203,031,0303,01,0162,0110,022,0, + /* 11917 */ 0241,0203,01,0301,01,0163,0120,023,0, + /* 11926 */ 0240,0203,01,0301,01,0163,0110,022,0, + /* 11935 */ 0241,0203,05,0301,01,0163,0120,023,0, + /* 11944 */ 0240,0203,05,0301,01,0163,0110,022,0, + /* 11953 */ 0241,0203,011,0301,01,0163,0120,023,0, + /* 11962 */ 0240,0203,011,0301,01,0163,0110,022,0, + /* 11971 */ 0241,0203,021,0301,01,0163,0120,023,0, + /* 11980 */ 0240,0203,021,0301,01,0163,0110,022,0, + /* 11989 */ 0241,0203,025,0301,01,0163,0120,023,0, + /* 11998 */ 0240,0203,025,0301,01,0163,0110,022,0, + /* 12007 */ 0241,0203,031,0301,01,0163,0120,023,0, + /* 12016 */ 0240,0203,031,0301,01,0163,0110,022,0, + /* 12025 */ 0241,0203,0,0301,01,0302,0120,023,0, + /* 12034 */ 0240,0203,0,0301,01,0302,0110,022,0, + /* 12043 */ 0241,0203,04,0301,01,0302,0120,023,0, + /* 12052 */ 0240,0203,04,0301,01,0302,0110,022,0, + /* 12061 */ 0241,0203,010,0301,01,0302,0120,023,0, + /* 12070 */ 0240,0203,010,0301,01,0302,0110,022,0, + /* 12079 */ 0241,0203,02,0306,01,0302,0120,023,0, + /* 12088 */ 0240,0203,02,0306,01,0302,0110,022,0, + /* 12097 */ 0250,0203,0,0301,01,0146,0110,022,0, + /* 12106 */ 0250,0203,04,0301,01,0146,0110,022,0, + /* 12115 */ 0250,0203,010,0301,01,0146,0110,022,0, + /* 12124 */ 0250,0203,0,0306,01,0147,0110,022,0, + /* 12133 */ 0250,0203,0,0301,01,045,0110,022,0, + /* 12142 */ 0250,0203,04,0301,01,045,0110,022,0, + /* 12151 */ 0250,0203,010,0301,01,045,0110,022,0, + /* 12160 */ 0250,0203,0,0306,01,047,0110,022,0, + /* 12169 */ 0250,0203,0,0301,01,0126,0110,022,0, + /* 12178 */ 0250,0203,04,0301,01,0126,0110,022,0, + /* 12187 */ 0250,0203,010,0301,01,0126,0110,022,0, + /* 12196 */ 0242,0203,0,0306,01,0127,0110,023,0, + /* 12205 */ 0241,0203,0,0306,01,0127,0100,022,0, + /* 12214 */ 0250,0203,0,0301,01,010,0110,022,0, + /* 12223 */ 0250,0203,04,0301,01,010,0110,022,0, + /* 12232 */ 0250,0203,010,0301,01,010,0110,022,0, + /* 12241 */ 0241,0203,0,0306,01,012,0120,023,0, + /* 12250 */ 0240,0203,0,0306,01,012,0110,022,0, + /* 12259 */ 0250,0206,01,0301,01,0116,0110,022,0, + /* 12268 */ 0250,0206,05,0301,01,0116,0110,022,0, + /* 12277 */ 0250,0206,011,0301,01,0116,0110,022,0, + /* 12286 */ 0241,0206,01,0306,01,0117,0120,023,0, + /* 12295 */ 0240,0206,01,0306,01,0117,0110,022,0, + /* 12304 */ 0273,0320,02,017,0272,0207,025,0, + /* 12312 */ 0273,0321,02,017,0272,0207,025,0, + /* 12320 */ 0273,0324,02,017,0272,0207,025,0, + /* 12328 */ 0273,0320,02,017,0272,0206,025,0, + /* 12336 */ 0273,0321,02,017,0272,0206,025,0, + /* 12344 */ 0273,0324,02,017,0272,0206,025,0, + /* 12352 */ 0273,0320,02,017,0272,0205,025,0, + /* 12360 */ 0273,0321,02,017,0272,0205,025,0, + /* 12368 */ 0273,0324,02,017,0272,0205,025,0, + /* 12376 */ 0323,02,017,017,0110,01,0277,0, + /* 12384 */ 0323,02,017,017,0110,01,035,0, + /* 12392 */ 0323,02,017,017,0110,01,0256,0, + /* 12400 */ 0323,02,017,017,0110,01,0236,0, + /* 12408 */ 0323,02,017,017,0110,01,0260,0, + /* 12416 */ 0323,02,017,017,0110,01,0220,0, + /* 12424 */ 0323,02,017,017,0110,01,0240,0, + /* 12432 */ 0323,02,017,017,0110,01,0244,0, + /* 12440 */ 0323,02,017,017,0110,01,0224,0, + /* 12448 */ 0323,02,017,017,0110,01,0264,0, + /* 12456 */ 0323,02,017,017,0110,01,0226,0, + /* 12464 */ 0323,02,017,017,0110,01,0246,0, + /* 12472 */ 0323,02,017,017,0110,01,0266,0, + /* 12480 */ 0323,02,017,017,0110,01,0247,0, + /* 12488 */ 0323,02,017,017,0110,01,0227,0, + /* 12496 */ 0323,02,017,017,0110,01,0232,0, + /* 12504 */ 0323,02,017,017,0110,01,0252,0, + /* 12512 */ 0323,02,017,017,0110,01,015,0, + /* 12520 */ 0323,02,017,017,0110,01,0267,0, + /* 12528 */ 0360,02,017,0302,0110,01,0,0, + /* 12536 */ 0333,02,017,0302,0110,01,0,0, + /* 12544 */ 0360,02,017,0302,0110,01,02,0, + /* 12552 */ 0333,02,017,0302,0110,01,02,0, + /* 12560 */ 0360,02,017,0302,0110,01,01,0, + /* 12568 */ 0333,02,017,0302,0110,01,01,0, + /* 12576 */ 0360,02,017,0302,0110,01,04,0, + /* 12584 */ 0333,02,017,0302,0110,01,04,0, + /* 12592 */ 0360,02,017,0302,0110,01,06,0, + /* 12600 */ 0333,02,017,0302,0110,01,06,0, + /* 12608 */ 0360,02,017,0302,0110,01,05,0, + /* 12616 */ 0333,02,017,0302,0110,01,05,0, + /* 12624 */ 0360,02,017,0302,0110,01,07,0, + /* 12632 */ 0333,02,017,0302,0110,01,07,0, + /* 12640 */ 0360,02,017,0302,0110,01,03,0, + /* 12648 */ 0333,02,017,0302,0110,01,03,0, + /* 12656 */ 0360,0323,02,017,0160,0110,022,0, + /* 12664 */ 0323,02,017,017,0110,01,034,0, + /* 12672 */ 0323,02,017,017,0110,01,0212,0, + /* 12680 */ 0323,02,017,017,0110,01,0216,0, + /* 12688 */ 0323,02,017,017,0110,01,014,0, + /* 12696 */ 0323,02,017,017,0110,01,0273,0, + /* 12704 */ 0361,02,017,0302,0110,01,0,0, + /* 12712 */ 0332,02,017,0302,0110,01,0,0, + /* 12720 */ 0361,02,017,0302,0110,01,02,0, + /* 12728 */ 0332,02,017,0302,0110,01,02,0, + /* 12736 */ 0361,02,017,0302,0110,01,01,0, + /* 12744 */ 0332,02,017,0302,0110,01,01,0, + /* 12752 */ 0361,02,017,0302,0110,01,04,0, + /* 12760 */ 0332,02,017,0302,0110,01,04,0, + /* 12768 */ 0361,02,017,0302,0110,01,06,0, + /* 12776 */ 0332,02,017,0302,0110,01,06,0, + /* 12784 */ 0361,02,017,0302,0110,01,05,0, + /* 12792 */ 0332,02,017,0302,0110,01,05,0, + /* 12800 */ 0361,02,017,0302,0110,01,07,0, + /* 12808 */ 0332,02,017,0302,0110,01,07,0, + /* 12816 */ 0361,02,017,0302,0110,01,03,0, + /* 12824 */ 0332,02,017,0302,0110,01,03,0, + /* 12832 */ 0323,0361,03,017,070,0200,0110,0, + /* 12840 */ 0323,0361,03,017,070,0201,0110,0, + /* 12848 */ 0360,03,017,072,017,0110,026,0, + /* 12856 */ 0361,03,017,072,017,0110,026,0, + /* 12864 */ 0361,02,017,0170,0200,025,026,0, + /* 12872 */ 0332,02,017,0170,0110,026,027,0, + /* 12880 */ 0361,03,017,072,015,0110,026,0, + /* 12888 */ 0361,03,017,072,014,0110,026,0, + /* 12896 */ 0361,03,017,072,0101,0110,026,0, + /* 12904 */ 0361,03,017,072,0100,0110,026,0, + /* 12912 */ 0361,03,017,072,041,0110,026,0, + /* 12920 */ 0361,03,017,072,0102,0110,026,0, + /* 12928 */ 0361,03,017,072,016,0110,026,0, + /* 12936 */ 0361,03,017,072,011,0110,026,0, + /* 12944 */ 0361,03,017,072,010,0110,026,0, + /* 12952 */ 0361,03,017,072,013,0110,026,0, + /* 12960 */ 0361,03,017,072,012,0110,026,0, + /* 12968 */ 0320,0332,03,017,070,0361,0110,0, + /* 12976 */ 0321,0332,03,017,070,0361,0110,0, + /* 12984 */ 0324,0332,03,017,070,0360,0110,0, + /* 12992 */ 0324,0332,03,017,070,0361,0110,0, + /* 13000 */ 0361,03,017,072,0141,0110,026,0, + /* 13008 */ 0361,03,017,072,0140,0110,026,0, + /* 13016 */ 0361,03,017,072,0143,0110,026,0, + /* 13024 */ 0361,03,017,072,0142,0110,026,0, + /* 13032 */ 0323,02,017,017,0110,01,0206,0, + /* 13040 */ 0323,02,017,017,0110,01,0207,0, + /* 13048 */ 0320,0331,03,017,070,0360,0110,0, + /* 13056 */ 0321,0331,03,017,070,0360,0110,0, + /* 13064 */ 0324,0331,03,017,070,0360,0110,0, + /* 13072 */ 0320,0331,03,017,070,0361,0101,0, + /* 13080 */ 0321,0331,03,017,070,0361,0101,0, + /* 13088 */ 0324,0331,03,017,070,0361,0101,0, + /* 13096 */ 0361,03,017,072,0337,0110,022,0, + /* 13104 */ 0270,03,041,01,0337,0110,022,0, + /* 13112 */ 0241,0202,041,0301,01,0334,0120,0, + /* 13120 */ 0240,0202,041,0301,01,0334,0110,0, + /* 13128 */ 0241,0202,045,0301,01,0334,0120,0, + /* 13136 */ 0240,0202,045,0301,01,0334,0110,0, + /* 13144 */ 0241,0202,041,0301,01,0335,0120,0, + /* 13152 */ 0240,0202,041,0301,01,0335,0110,0, + /* 13160 */ 0241,0202,045,0301,01,0335,0120,0, + /* 13168 */ 0240,0202,045,0301,01,0335,0110,0, + /* 13176 */ 0241,0202,041,0301,01,0336,0120,0, + /* 13184 */ 0240,0202,041,0301,01,0336,0110,0, + /* 13192 */ 0241,0202,045,0301,01,0336,0120,0, + /* 13200 */ 0240,0202,045,0301,01,0336,0110,0, + /* 13208 */ 0241,0202,041,0301,01,0337,0120,0, + /* 13216 */ 0240,0202,041,0301,01,0337,0110,0, + /* 13224 */ 0241,0202,045,0301,01,0337,0120,0, + /* 13232 */ 0240,0202,045,0301,01,0337,0110,0, + /* 13240 */ 0241,0202,051,0301,01,0334,0120,0, + /* 13248 */ 0240,0202,051,0301,01,0334,0110,0, + /* 13256 */ 0241,0202,051,0301,01,0335,0120,0, + /* 13264 */ 0240,0202,051,0301,01,0335,0110,0, + /* 13272 */ 0241,0202,051,0301,01,0336,0120,0, + /* 13280 */ 0240,0202,051,0301,01,0336,0110,0, + /* 13288 */ 0241,0202,051,0301,01,0337,0120,0, + /* 13296 */ 0240,0202,051,0301,01,0337,0110,0, + /* 13304 */ 0261,03,041,01,015,0120,023,0, + /* 13312 */ 0260,03,041,01,015,0110,022,0, + /* 13320 */ 0261,03,045,01,015,0120,023,0, + /* 13328 */ 0260,03,045,01,015,0110,022,0, + /* 13336 */ 0261,03,041,01,014,0120,023,0, + /* 13344 */ 0260,03,041,01,014,0110,022,0, + /* 13352 */ 0261,03,045,01,014,0120,023,0, + /* 13360 */ 0260,03,045,01,014,0110,022,0, + /* 13368 */ 0261,03,01,01,0113,0120,0177,0, + /* 13376 */ 0260,03,01,01,0113,0110,0176,0, + /* 13384 */ 0261,03,05,01,0113,0120,0177,0, + /* 13392 */ 0260,03,05,01,0113,0110,0176,0, + /* 13400 */ 0261,03,01,01,0112,0120,0177,0, + /* 13408 */ 0260,03,01,01,0112,0110,0176,0, + /* 13416 */ 0261,03,05,01,0112,0120,0177,0, + /* 13424 */ 0260,03,05,01,0112,0110,0176,0, + /* 13432 */ 0261,01,041,01,0302,0120,023,0, + /* 13440 */ 0260,01,041,01,0302,0110,022,0, + /* 13448 */ 0261,01,045,01,0302,0120,023,0, + /* 13456 */ 0260,01,045,01,0302,0110,022,0, + /* 13464 */ 0261,01,040,01,0302,0120,023,0, + /* 13472 */ 0260,01,040,01,0302,0110,022,0, + /* 13480 */ 0261,01,044,01,0302,0120,023,0, + /* 13488 */ 0260,01,044,01,0302,0110,022,0, + /* 13496 */ 0261,01,053,01,0302,0120,023,0, + /* 13504 */ 0260,01,053,01,0302,0110,022,0, + /* 13512 */ 0261,01,052,01,0302,0120,023,0, + /* 13520 */ 0260,01,052,01,0302,0110,022,0, + /* 13528 */ 0261,03,041,01,0101,0120,023,0, + /* 13536 */ 0260,03,041,01,0101,0110,022,0, + /* 13544 */ 0261,03,041,01,0100,0120,023,0, + /* 13552 */ 0260,03,041,01,0100,0110,022,0, + /* 13560 */ 0261,03,045,01,0100,0120,023,0, + /* 13568 */ 0260,03,045,01,0100,0110,022,0, + /* 13576 */ 0270,03,05,01,031,0101,022,0, + /* 13584 */ 0270,03,041,01,027,0101,022,0, + /* 13592 */ 0261,03,05,01,030,0120,023,0, + /* 13600 */ 0260,03,05,01,030,0110,022,0, + /* 13608 */ 0261,03,041,01,041,0120,023,0, + /* 13616 */ 0260,03,041,01,041,0110,022,0, + /* 13624 */ 0261,03,041,01,0102,0120,023,0, + /* 13632 */ 0260,03,041,01,0102,0110,022,0, + /* 13640 */ 0261,03,041,01,017,0120,023,0, + /* 13648 */ 0260,03,041,01,017,0110,022,0, + /* 13656 */ 0261,03,01,01,0114,0120,0177,0, + /* 13664 */ 0260,03,01,01,0114,0110,0176,0, + /* 13672 */ 0261,03,041,01,016,0120,023,0, + /* 13680 */ 0260,03,041,01,016,0110,022,0, + /* 13688 */ 0270,03,041,01,0141,0110,022,0, + /* 13696 */ 0270,03,041,01,0140,0110,022,0, + /* 13704 */ 0270,03,041,01,0143,0110,022,0, + /* 13712 */ 0270,03,041,01,0142,0110,022,0, + /* 13720 */ 0270,03,01,01,05,0110,022,0, + /* 13728 */ 0270,03,05,01,05,0110,022,0, + /* 13736 */ 0270,03,01,01,04,0110,022,0, + /* 13744 */ 0270,03,05,01,04,0110,022,0, + /* 13752 */ 0261,03,05,01,06,0120,023,0, + /* 13760 */ 0260,03,05,01,06,0110,022,0, + /* 13768 */ 0270,03,01,01,024,0101,022,0, + /* 13776 */ 0270,01,01,01,0305,0110,022,0, + /* 13784 */ 0270,03,01,01,025,0101,022,0, + /* 13792 */ 0270,03,01,01,026,0101,022,0, + /* 13800 */ 0270,03,021,01,026,0101,022,0, + /* 13808 */ 0261,03,041,01,040,0120,023,0, + /* 13816 */ 0260,03,041,01,040,0110,022,0, + /* 13824 */ 0261,01,041,01,0304,0120,023,0, + /* 13832 */ 0260,01,041,01,0304,0110,022,0, + /* 13840 */ 0261,03,01,01,042,0120,023,0, + /* 13848 */ 0260,03,01,01,042,0110,022,0, + /* 13856 */ 0261,03,021,01,042,0120,023,0, + /* 13864 */ 0260,03,021,01,042,0110,022,0, + /* 13872 */ 0270,01,041,01,0160,0110,022,0, + /* 13880 */ 0270,01,042,01,0160,0110,022,0, + /* 13888 */ 0270,01,043,01,0160,0110,022,0, + /* 13896 */ 0260,01,041,01,0163,0217,022,0, + /* 13904 */ 0260,01,041,01,0163,0207,021,0, + /* 13912 */ 0260,01,041,01,0163,0213,022,0, + /* 13920 */ 0260,01,041,01,0163,0203,021,0, + /* 13928 */ 0260,01,041,01,0161,0216,022,0, + /* 13936 */ 0260,01,041,01,0161,0206,021,0, + /* 13944 */ 0260,01,041,01,0162,0216,022,0, + /* 13952 */ 0260,01,041,01,0162,0206,021,0, + /* 13960 */ 0260,01,041,01,0163,0216,022,0, + /* 13968 */ 0260,01,041,01,0163,0206,021,0, + /* 13976 */ 0260,01,041,01,0161,0214,022,0, + /* 13984 */ 0260,01,041,01,0161,0204,021,0, + /* 13992 */ 0260,01,041,01,0162,0214,022,0, + /* 14000 */ 0260,01,041,01,0162,0204,021,0, + /* 14008 */ 0260,01,041,01,0161,0212,022,0, + /* 14016 */ 0260,01,041,01,0161,0202,021,0, + /* 14024 */ 0260,01,041,01,0162,0212,022,0, + /* 14032 */ 0260,01,041,01,0162,0202,021,0, + /* 14040 */ 0260,01,041,01,0163,0212,022,0, + /* 14048 */ 0260,01,041,01,0163,0202,021,0, + /* 14056 */ 0270,03,041,01,011,0110,022,0, + /* 14064 */ 0270,03,045,01,011,0110,022,0, + /* 14072 */ 0270,03,041,01,010,0110,022,0, + /* 14080 */ 0270,03,045,01,010,0110,022,0, + /* 14088 */ 0261,03,041,01,013,0120,023,0, + /* 14096 */ 0260,03,041,01,013,0110,022,0, + /* 14104 */ 0261,03,041,01,012,0120,023,0, + /* 14112 */ 0260,03,041,01,012,0110,022,0, + /* 14120 */ 0261,01,041,01,0306,0120,023,0, + /* 14128 */ 0260,01,041,01,0306,0110,022,0, + /* 14136 */ 0261,01,045,01,0306,0120,023,0, + /* 14144 */ 0260,01,045,01,0306,0110,022,0, + /* 14152 */ 0261,01,040,01,0306,0120,023,0, + /* 14160 */ 0260,01,040,01,0306,0110,022,0, + /* 14168 */ 0261,01,044,01,0306,0120,023,0, + /* 14176 */ 0260,01,044,01,0306,0110,022,0, + /* 14184 */ 0361,03,017,072,0104,0110,022,0, + /* 14192 */ 0261,03,041,01,0104,0120,023,0, + /* 14200 */ 0260,03,041,01,0104,0110,022,0, + /* 14208 */ 0261,03,045,01,0104,0120,023,0, + /* 14216 */ 0260,03,045,01,0104,0110,022,0, + /* 14224 */ 0270,03,05,01,035,0101,022,0, + /* 14232 */ 0270,03,01,01,035,0101,022,0, + /* 14240 */ 0317,0361,03,017,070,0366,0110,0, + /* 14248 */ 0324,0361,03,017,070,0366,0110,0, + /* 14256 */ 0317,0333,03,017,070,0366,0110,0, + /* 14264 */ 0324,0333,03,017,070,0366,0110,0, + /* 14272 */ 0260,0112,0,01,022,0211,042,0, + /* 14280 */ 0260,0112,020,01,022,0211,042,0, + /* 14288 */ 0260,0112,0,01,022,0210,042,0, + /* 14296 */ 0260,0112,020,01,022,0210,042,0, + /* 14304 */ 0261,03,01,01,0151,0120,0177,0, + /* 14312 */ 0260,03,01,01,0151,0110,0176,0, + /* 14320 */ 0261,03,05,01,0151,0120,0177,0, + /* 14328 */ 0260,03,05,01,0151,0110,0176,0, + /* 14336 */ 0261,03,021,01,0151,0130,0176,0, + /* 14344 */ 0260,03,021,01,0151,0120,0175,0, + /* 14352 */ 0261,03,025,01,0151,0130,0176,0, + /* 14360 */ 0260,03,025,01,0151,0120,0175,0, + /* 14368 */ 0261,03,01,01,0150,0120,0177,0, + /* 14376 */ 0260,03,01,01,0150,0110,0176,0, + /* 14384 */ 0261,03,05,01,0150,0120,0177,0, + /* 14392 */ 0260,03,05,01,0150,0110,0176,0, + /* 14400 */ 0261,03,021,01,0150,0130,0176,0, + /* 14408 */ 0260,03,021,01,0150,0120,0175,0, + /* 14416 */ 0261,03,025,01,0150,0130,0176,0, + /* 14424 */ 0260,03,025,01,0150,0120,0175,0, + /* 14432 */ 0261,03,01,01,0153,0120,0177,0, + /* 14440 */ 0260,03,01,01,0153,0110,0176,0, + /* 14448 */ 0261,03,021,01,0153,0130,0176,0, + /* 14456 */ 0260,03,021,01,0153,0120,0175,0, + /* 14464 */ 0261,03,01,01,0152,0120,0177,0, + /* 14472 */ 0260,03,01,01,0152,0110,0176,0, + /* 14480 */ 0261,03,021,01,0152,0130,0176,0, + /* 14488 */ 0260,03,021,01,0152,0120,0175,0, + /* 14496 */ 0261,03,01,01,0135,0120,0177,0, + /* 14504 */ 0260,03,01,01,0135,0110,0176,0, + /* 14512 */ 0261,03,05,01,0135,0120,0177,0, + /* 14520 */ 0260,03,05,01,0135,0110,0176,0, + /* 14528 */ 0261,03,021,01,0135,0130,0176,0, + /* 14536 */ 0260,03,021,01,0135,0120,0175,0, + /* 14544 */ 0261,03,025,01,0135,0130,0176,0, + /* 14552 */ 0260,03,025,01,0135,0120,0175,0, + /* 14560 */ 0261,03,01,01,0134,0120,0177,0, + /* 14568 */ 0260,03,01,01,0134,0110,0176,0, + /* 14576 */ 0261,03,05,01,0134,0120,0177,0, + /* 14584 */ 0260,03,05,01,0134,0110,0176,0, + /* 14592 */ 0261,03,021,01,0134,0130,0176,0, + /* 14600 */ 0260,03,021,01,0134,0120,0175,0, + /* 14608 */ 0261,03,025,01,0134,0130,0176,0, + /* 14616 */ 0260,03,025,01,0134,0120,0175,0, + /* 14624 */ 0261,03,01,01,0137,0120,0177,0, + /* 14632 */ 0260,03,01,01,0137,0110,0176,0, + /* 14640 */ 0261,03,05,01,0137,0120,0177,0, + /* 14648 */ 0260,03,05,01,0137,0110,0176,0, + /* 14656 */ 0261,03,021,01,0137,0130,0176,0, + /* 14664 */ 0260,03,021,01,0137,0120,0175,0, + /* 14672 */ 0261,03,025,01,0137,0130,0176,0, + /* 14680 */ 0260,03,025,01,0137,0120,0175,0, + /* 14688 */ 0261,03,01,01,0136,0120,0177,0, + /* 14696 */ 0260,03,01,01,0136,0110,0176,0, + /* 14704 */ 0261,03,05,01,0136,0120,0177,0, + /* 14712 */ 0260,03,05,01,0136,0110,0176,0, + /* 14720 */ 0261,03,021,01,0136,0130,0176,0, + /* 14728 */ 0260,03,021,01,0136,0120,0175,0, + /* 14736 */ 0261,03,025,01,0136,0130,0176,0, + /* 14744 */ 0260,03,025,01,0136,0120,0175,0, + /* 14752 */ 0261,03,01,01,0155,0120,0177,0, + /* 14760 */ 0260,03,01,01,0155,0110,0176,0, + /* 14768 */ 0261,03,05,01,0155,0120,0177,0, + /* 14776 */ 0260,03,05,01,0155,0110,0176,0, + /* 14784 */ 0261,03,021,01,0155,0130,0176,0, + /* 14792 */ 0260,03,021,01,0155,0120,0175,0, + /* 14800 */ 0261,03,025,01,0155,0130,0176,0, + /* 14808 */ 0260,03,025,01,0155,0120,0175,0, + /* 14816 */ 0261,03,01,01,0154,0120,0177,0, + /* 14824 */ 0260,03,01,01,0154,0110,0176,0, + /* 14832 */ 0261,03,05,01,0154,0120,0177,0, + /* 14840 */ 0260,03,05,01,0154,0110,0176,0, + /* 14848 */ 0261,03,021,01,0154,0130,0176,0, + /* 14856 */ 0260,03,021,01,0154,0120,0175,0, + /* 14864 */ 0261,03,025,01,0154,0130,0176,0, + /* 14872 */ 0260,03,025,01,0154,0120,0175,0, + /* 14880 */ 0261,03,01,01,0157,0120,0177,0, + /* 14888 */ 0260,03,01,01,0157,0110,0176,0, + /* 14896 */ 0261,03,021,01,0157,0130,0176,0, + /* 14904 */ 0260,03,021,01,0157,0120,0175,0, + /* 14912 */ 0261,03,01,01,0156,0120,0177,0, + /* 14920 */ 0260,03,01,01,0156,0110,0176,0, + /* 14928 */ 0261,03,021,01,0156,0130,0176,0, + /* 14936 */ 0260,03,021,01,0156,0120,0175,0, + /* 14944 */ 0261,03,01,01,0171,0120,0177,0, + /* 14952 */ 0260,03,01,01,0171,0110,0176,0, + /* 14960 */ 0261,03,05,01,0171,0120,0177,0, + /* 14968 */ 0260,03,05,01,0171,0110,0176,0, + /* 14976 */ 0261,03,021,01,0171,0130,0176,0, + /* 14984 */ 0260,03,021,01,0171,0120,0175,0, + /* 14992 */ 0261,03,025,01,0171,0130,0176,0, + /* 15000 */ 0260,03,025,01,0171,0120,0175,0, + /* 15008 */ 0261,03,01,01,0170,0120,0177,0, + /* 15016 */ 0260,03,01,01,0170,0110,0176,0, + /* 15024 */ 0261,03,05,01,0170,0120,0177,0, + /* 15032 */ 0260,03,05,01,0170,0110,0176,0, + /* 15040 */ 0261,03,021,01,0170,0130,0176,0, + /* 15048 */ 0260,03,021,01,0170,0120,0175,0, + /* 15056 */ 0261,03,025,01,0170,0130,0176,0, + /* 15064 */ 0260,03,025,01,0170,0120,0175,0, + /* 15072 */ 0261,03,01,01,0173,0120,0177,0, + /* 15080 */ 0260,03,01,01,0173,0110,0176,0, + /* 15088 */ 0261,03,021,01,0173,0130,0176,0, + /* 15096 */ 0260,03,021,01,0173,0120,0175,0, + /* 15104 */ 0261,03,01,01,0172,0120,0177,0, + /* 15112 */ 0260,03,01,01,0172,0110,0176,0, + /* 15120 */ 0261,03,021,01,0172,0130,0176,0, + /* 15128 */ 0260,03,021,01,0172,0120,0175,0, + /* 15136 */ 0261,03,01,01,0175,0120,0177,0, + /* 15144 */ 0260,03,01,01,0175,0110,0176,0, + /* 15152 */ 0261,03,05,01,0175,0120,0177,0, + /* 15160 */ 0260,03,05,01,0175,0110,0176,0, + /* 15168 */ 0261,03,021,01,0175,0130,0176,0, + /* 15176 */ 0260,03,021,01,0175,0120,0175,0, + /* 15184 */ 0261,03,025,01,0175,0130,0176,0, + /* 15192 */ 0260,03,025,01,0175,0120,0175,0, + /* 15200 */ 0261,03,01,01,0174,0120,0177,0, + /* 15208 */ 0260,03,01,01,0174,0110,0176,0, + /* 15216 */ 0261,03,05,01,0174,0120,0177,0, + /* 15224 */ 0260,03,05,01,0174,0110,0176,0, + /* 15232 */ 0261,03,021,01,0174,0130,0176,0, + /* 15240 */ 0260,03,021,01,0174,0120,0175,0, + /* 15248 */ 0261,03,025,01,0174,0130,0176,0, + /* 15256 */ 0260,03,025,01,0174,0120,0175,0, + /* 15264 */ 0261,03,01,01,0177,0120,0177,0, + /* 15272 */ 0260,03,01,01,0177,0110,0176,0, + /* 15280 */ 0261,03,021,01,0177,0130,0176,0, + /* 15288 */ 0260,03,021,01,0177,0120,0175,0, + /* 15296 */ 0261,03,01,01,0176,0120,0177,0, + /* 15304 */ 0260,03,01,01,0176,0110,0176,0, + /* 15312 */ 0261,03,021,01,0176,0130,0176,0, + /* 15320 */ 0260,03,021,01,0176,0120,0175,0, + /* 15328 */ 0261,0110,0,01,0242,0120,0177,0, + /* 15336 */ 0260,0110,0,01,0242,0110,0176,0, + /* 15344 */ 0261,0110,04,01,0242,0120,0177,0, + /* 15352 */ 0260,0110,04,01,0242,0110,0176,0, + /* 15360 */ 0261,0110,020,01,0242,0130,0176,0, + /* 15368 */ 0260,0110,020,01,0242,0120,0175,0, + /* 15376 */ 0261,0110,024,01,0242,0130,0176,0, + /* 15384 */ 0260,0110,024,01,0242,0120,0175,0, + /* 15392 */ 0261,0110,0,01,0314,0120,023,0, + /* 15400 */ 0260,0110,0,01,0314,0110,022,0, + /* 15408 */ 0261,0110,0,01,0316,0120,023,0, + /* 15416 */ 0260,0110,0,01,0316,0110,022,0, + /* 15424 */ 0261,0110,0,01,0317,0120,023,0, + /* 15432 */ 0260,0110,0,01,0317,0110,022,0, + /* 15440 */ 0261,0110,0,01,0354,0120,023,0, + /* 15448 */ 0260,0110,0,01,0354,0110,022,0, + /* 15456 */ 0261,0110,0,01,0356,0120,023,0, + /* 15464 */ 0260,0110,0,01,0356,0110,022,0, + /* 15472 */ 0261,0110,0,01,0357,0120,023,0, + /* 15480 */ 0260,0110,0,01,0357,0110,022,0, + /* 15488 */ 0261,0110,0,01,0355,0120,023,0, + /* 15496 */ 0260,0110,0,01,0355,0110,022,0, + /* 15504 */ 0261,0110,0,01,0315,0120,023,0, + /* 15512 */ 0260,0110,0,01,0315,0110,022,0, + /* 15520 */ 0261,0110,0,01,0236,0120,0177,0, + /* 15528 */ 0260,0110,0,01,0236,0110,0176,0, + /* 15536 */ 0261,0110,0,01,0237,0120,0177,0, + /* 15544 */ 0260,0110,0,01,0237,0110,0176,0, + /* 15552 */ 0261,0110,0,01,0227,0120,0177,0, + /* 15560 */ 0260,0110,0,01,0227,0110,0176,0, + /* 15568 */ 0261,0110,0,01,0216,0120,0177,0, + /* 15576 */ 0260,0110,0,01,0216,0110,0176,0, + /* 15584 */ 0261,0110,0,01,0217,0120,0177,0, + /* 15592 */ 0260,0110,0,01,0217,0110,0176,0, + /* 15600 */ 0261,0110,0,01,0207,0120,0177,0, + /* 15608 */ 0260,0110,0,01,0207,0110,0176,0, + /* 15616 */ 0261,0110,0,01,0206,0120,0177,0, + /* 15624 */ 0260,0110,0,01,0206,0110,0176,0, + /* 15632 */ 0261,0110,0,01,0205,0120,0177,0, + /* 15640 */ 0260,0110,0,01,0205,0110,0176,0, + /* 15648 */ 0261,0110,0,01,0226,0120,0177,0, + /* 15656 */ 0260,0110,0,01,0226,0110,0176,0, + /* 15664 */ 0261,0110,0,01,0225,0120,0177,0, + /* 15672 */ 0260,0110,0,01,0225,0110,0176,0, + /* 15680 */ 0261,0110,0,01,0246,0120,0177,0, + /* 15688 */ 0260,0110,0,01,0246,0110,0176,0, + /* 15696 */ 0261,0110,0,01,0266,0120,0177,0, + /* 15704 */ 0260,0110,0,01,0266,0110,0176,0, + /* 15712 */ 0261,0110,020,01,0243,0130,0176,0, + /* 15720 */ 0260,0110,020,01,0243,0120,0175,0, + /* 15728 */ 0261,0110,0,01,0243,0120,0177,0, + /* 15736 */ 0260,0110,0,01,0243,0110,0176,0, + /* 15744 */ 0270,0110,0,01,0300,0110,022,0, + /* 15752 */ 0270,0110,0,01,0300,0100,021,0, + /* 15760 */ 0270,0110,0,01,0302,0110,022,0, + /* 15768 */ 0270,0110,0,01,0302,0100,021,0, + /* 15776 */ 0270,0110,0,01,0303,0110,022,0, + /* 15784 */ 0270,0110,0,01,0303,0100,021,0, + /* 15792 */ 0270,0110,0,01,0301,0110,022,0, + /* 15800 */ 0270,0110,0,01,0301,0100,021,0, + /* 15808 */ 0261,03,045,01,0102,0120,023,0, + /* 15816 */ 0260,03,045,01,0102,0110,022,0, + /* 15824 */ 0261,03,045,01,017,0120,023,0, + /* 15832 */ 0260,03,045,01,017,0110,022,0, + /* 15840 */ 0261,03,045,01,0114,0120,0177,0, + /* 15848 */ 0260,03,045,01,0114,0110,0176,0, + /* 15856 */ 0261,03,045,01,016,0120,023,0, + /* 15864 */ 0260,03,045,01,016,0110,022,0, + /* 15872 */ 0270,01,045,01,0160,0110,022,0, + /* 15880 */ 0270,01,046,01,0160,0110,022,0, + /* 15888 */ 0270,01,047,01,0160,0110,022,0, + /* 15896 */ 0260,01,045,01,0163,0217,022,0, + /* 15904 */ 0260,01,045,01,0163,0207,021,0, + /* 15912 */ 0260,01,045,01,0161,0216,022,0, + /* 15920 */ 0260,01,045,01,0161,0206,021,0, + /* 15928 */ 0260,01,045,01,0162,0216,022,0, + /* 15936 */ 0260,01,045,01,0162,0206,021,0, + /* 15944 */ 0260,01,045,01,0163,0216,022,0, + /* 15952 */ 0260,01,045,01,0163,0206,021,0, + /* 15960 */ 0260,01,045,01,0161,0214,022,0, + /* 15968 */ 0260,01,045,01,0161,0204,021,0, + /* 15976 */ 0260,01,045,01,0162,0214,022,0, + /* 15984 */ 0260,01,045,01,0162,0204,021,0, + /* 15992 */ 0260,01,045,01,0163,0213,022,0, + /* 16000 */ 0260,01,045,01,0163,0203,021,0, + /* 16008 */ 0260,01,045,01,0161,0212,022,0, + /* 16016 */ 0260,01,045,01,0161,0202,021,0, + /* 16024 */ 0260,01,045,01,0162,0212,022,0, + /* 16032 */ 0260,01,045,01,0162,0202,021,0, + /* 16040 */ 0260,01,045,01,0163,0212,022,0, + /* 16048 */ 0260,01,045,01,0163,0202,021,0, + /* 16056 */ 0261,03,01,01,02,0120,023,0, + /* 16064 */ 0260,03,01,01,02,0110,022,0, + /* 16072 */ 0261,03,05,01,02,0120,023,0, + /* 16080 */ 0260,03,05,01,02,0110,022,0, + /* 16088 */ 0270,03,025,01,01,0110,022,0, + /* 16096 */ 0270,03,025,01,0,0110,022,0, + /* 16104 */ 0261,03,05,01,0106,0120,023,0, + /* 16112 */ 0260,03,05,01,0106,0110,022,0, + /* 16120 */ 0270,03,05,01,071,0101,022,0, + /* 16128 */ 0261,03,05,01,070,0120,023,0, + /* 16136 */ 0260,03,05,01,070,0110,022,0, + /* 16144 */ 0374,0262,02,021,01,0222,0110,0, + /* 16152 */ 0374,0262,02,021,01,0223,0110,0, + /* 16160 */ 0374,0262,02,025,01,0222,0110,0, + /* 16168 */ 0375,0262,02,025,01,0223,0110,0, + /* 16176 */ 0374,0262,02,01,01,0222,0110,0, + /* 16184 */ 0374,0262,02,01,01,0223,0110,0, + /* 16192 */ 0375,0262,02,05,01,0222,0110,0, + /* 16200 */ 0375,0262,02,05,01,0223,0110,0, + /* 16208 */ 0374,0262,02,01,01,0220,0110,0, + /* 16216 */ 0374,0262,02,01,01,0221,0110,0, + /* 16224 */ 0375,0262,02,05,01,0220,0110,0, + /* 16232 */ 0375,0262,02,05,01,0221,0110,0, + /* 16240 */ 0374,0262,02,021,01,0220,0110,0, + /* 16248 */ 0374,0262,02,021,01,0221,0110,0, + /* 16256 */ 0374,0262,02,025,01,0220,0110,0, + /* 16264 */ 0375,0262,02,025,01,0221,0110,0, + /* 16272 */ 0270,0112,0,01,020,0110,042,0, + /* 16280 */ 0270,0112,020,01,020,0110,042,0, + /* 16288 */ 0270,03,03,01,0360,0110,022,0, + /* 16296 */ 0270,03,023,01,0360,0110,022,0, + /* 16304 */ 0270,01,01,01,0222,0325,0110,0, + /* 16312 */ 0270,03,01,01,062,0110,022,0, + /* 16320 */ 0270,03,01,01,063,0110,022,0, + /* 16328 */ 0270,03,021,01,063,0110,022,0, + /* 16336 */ 0270,03,021,01,062,0110,022,0, + /* 16344 */ 0270,03,01,01,060,0110,022,0, + /* 16352 */ 0270,03,01,01,061,0110,022,0, + /* 16360 */ 0270,03,021,01,061,0110,022,0, + /* 16368 */ 0270,03,021,01,060,0110,022,0, + /* 16376 */ 0241,0201,021,0301,01,0130,0120,0, + /* 16384 */ 0240,0201,021,0301,01,0130,0110,0, + /* 16392 */ 0241,0201,025,0301,01,0130,0120,0, + /* 16400 */ 0240,0201,025,0301,01,0130,0110,0, + /* 16408 */ 0241,0201,031,0301,01,0130,0120,0, + /* 16416 */ 0240,0201,031,0301,01,0130,0110,0, + /* 16424 */ 0241,0201,0,0301,01,0130,0120,0, + /* 16432 */ 0240,0201,0,0301,01,0130,0110,0, + /* 16440 */ 0241,0201,04,0301,01,0130,0120,0, + /* 16448 */ 0240,0201,04,0301,01,0130,0110,0, + /* 16456 */ 0241,0201,010,0301,01,0130,0120,0, + /* 16464 */ 0240,0201,010,0301,01,0130,0110,0, + /* 16472 */ 0241,0201,023,0306,01,0130,0120,0, + /* 16480 */ 0240,0201,023,0306,01,0130,0110,0, + /* 16488 */ 0241,0201,02,0306,01,0130,0120,0, + /* 16496 */ 0240,0201,02,0306,01,0130,0110,0, + /* 16504 */ 0241,0201,021,0301,01,0125,0120,0, + /* 16512 */ 0240,0201,021,0301,01,0125,0110,0, + /* 16520 */ 0241,0201,025,0301,01,0125,0120,0, + /* 16528 */ 0240,0201,025,0301,01,0125,0110,0, + /* 16536 */ 0241,0201,031,0301,01,0125,0120,0, + /* 16544 */ 0240,0201,031,0301,01,0125,0110,0, + /* 16552 */ 0241,0201,0,0301,01,0125,0120,0, + /* 16560 */ 0240,0201,0,0301,01,0125,0110,0, + /* 16568 */ 0241,0201,04,0301,01,0125,0120,0, + /* 16576 */ 0240,0201,04,0301,01,0125,0110,0, + /* 16584 */ 0241,0201,010,0301,01,0125,0120,0, + /* 16592 */ 0240,0201,010,0301,01,0125,0110,0, + /* 16600 */ 0241,0201,021,0301,01,0124,0120,0, + /* 16608 */ 0240,0201,021,0301,01,0124,0110,0, + /* 16616 */ 0241,0201,025,0301,01,0124,0120,0, + /* 16624 */ 0240,0201,025,0301,01,0124,0110,0, + /* 16632 */ 0241,0201,031,0301,01,0124,0120,0, + /* 16640 */ 0240,0201,031,0301,01,0124,0110,0, + /* 16648 */ 0241,0201,0,0301,01,0124,0120,0, + /* 16656 */ 0240,0201,0,0301,01,0124,0110,0, + /* 16664 */ 0241,0201,04,0301,01,0124,0120,0, + /* 16672 */ 0240,0201,04,0301,01,0124,0110,0, + /* 16680 */ 0241,0201,010,0301,01,0124,0120,0, + /* 16688 */ 0240,0201,010,0301,01,0124,0110,0, + /* 16696 */ 0241,0202,021,0301,01,0145,0120,0, + /* 16704 */ 0241,0202,025,0301,01,0145,0120,0, + /* 16712 */ 0241,0202,031,0301,01,0145,0120,0, + /* 16720 */ 0241,0202,01,0301,01,0145,0120,0, + /* 16728 */ 0241,0202,05,0301,01,0145,0120,0, + /* 16736 */ 0241,0202,011,0301,01,0145,0120,0, + /* 16744 */ 0250,0202,05,0311,01,031,0110,0, + /* 16752 */ 0250,0202,011,0311,01,031,0110,0, + /* 16760 */ 0250,0202,05,0312,01,032,0110,0, + /* 16768 */ 0250,0202,011,0312,01,032,0110,0, + /* 16776 */ 0250,0202,011,0313,01,033,0110,0, + /* 16784 */ 0250,0202,025,0311,01,032,0110,0, + /* 16792 */ 0250,0202,031,0311,01,032,0110,0, + /* 16800 */ 0250,0202,031,0312,01,033,0110,0, + /* 16808 */ 0250,0202,01,0311,01,0131,0110,0, + /* 16816 */ 0250,0202,05,0311,01,0131,0110,0, + /* 16824 */ 0250,0202,011,0311,01,0131,0110,0, + /* 16832 */ 0250,0202,05,0312,01,0132,0110,0, + /* 16840 */ 0250,0202,011,0312,01,0132,0110,0, + /* 16848 */ 0250,0202,011,0313,01,0133,0110,0, + /* 16856 */ 0250,0202,025,0311,01,0132,0110,0, + /* 16864 */ 0250,0202,031,0311,01,0132,0110,0, + /* 16872 */ 0250,0202,031,0312,01,0133,0110,0, + /* 16880 */ 0250,0202,025,0306,01,031,0110,0, + /* 16888 */ 0250,0202,031,0306,01,031,0110,0, + /* 16896 */ 0250,0202,025,0300,01,031,0110,0, + /* 16904 */ 0250,0202,031,0300,01,031,0110,0, + /* 16912 */ 0250,0202,01,0306,01,030,0110,0, + /* 16920 */ 0250,0202,05,0306,01,030,0110,0, + /* 16928 */ 0250,0202,011,0306,01,030,0110,0, + /* 16936 */ 0250,0202,01,0300,01,030,0110,0, + /* 16944 */ 0250,0202,05,0300,01,030,0110,0, + /* 16952 */ 0250,0202,011,0300,01,030,0110,0, + /* 16960 */ 0250,0201,021,0306,01,057,0110,0, + /* 16968 */ 0250,0201,0,0306,01,057,0110,0, + /* 16976 */ 0250,0202,021,0306,01,0212,0101,0, + /* 16984 */ 0250,0202,025,0306,01,0212,0101,0, + /* 16992 */ 0250,0202,031,0306,01,0212,0101,0, + /* 17000 */ 0250,0202,021,0300,01,0212,0101,0, + /* 17008 */ 0250,0202,025,0300,01,0212,0101,0, + /* 17016 */ 0250,0202,031,0300,01,0212,0101,0, + /* 17024 */ 0250,0202,01,0306,01,0212,0101,0, + /* 17032 */ 0250,0202,05,0306,01,0212,0101,0, + /* 17040 */ 0250,0202,011,0306,01,0212,0101,0, + /* 17048 */ 0250,0202,01,0300,01,0212,0101,0, + /* 17056 */ 0250,0202,05,0300,01,0212,0101,0, + /* 17064 */ 0250,0202,011,0300,01,0212,0101,0, + /* 17072 */ 0250,0201,02,0302,01,0346,0110,0, + /* 17080 */ 0250,0201,06,0302,01,0346,0110,0, + /* 17088 */ 0250,0201,012,0302,01,0346,0110,0, + /* 17096 */ 0250,0201,0,0301,01,0133,0110,0, + /* 17104 */ 0250,0201,04,0301,01,0133,0110,0, + /* 17112 */ 0250,0201,010,0301,01,0133,0110,0, + /* 17120 */ 0250,0201,023,0301,01,0346,0110,0, + /* 17128 */ 0250,0201,027,0301,01,0346,0110,0, + /* 17136 */ 0250,0201,033,0301,01,0346,0110,0, + /* 17144 */ 0250,0201,021,0301,01,0132,0110,0, + /* 17152 */ 0250,0201,025,0301,01,0132,0110,0, + /* 17160 */ 0250,0201,031,0301,01,0132,0110,0, + /* 17168 */ 0250,0201,021,0301,01,0173,0110,0, + /* 17176 */ 0250,0201,025,0301,01,0173,0110,0, + /* 17184 */ 0250,0201,031,0301,01,0173,0110,0, + /* 17192 */ 0250,0201,020,0301,01,0171,0110,0, + /* 17200 */ 0250,0201,024,0301,01,0171,0110,0, + /* 17208 */ 0250,0201,030,0301,01,0171,0110,0, + /* 17216 */ 0250,0201,021,0301,01,0171,0110,0, + /* 17224 */ 0250,0201,025,0301,01,0171,0110,0, + /* 17232 */ 0250,0201,031,0301,01,0171,0110,0, + /* 17240 */ 0250,0202,01,0314,01,023,0110,0, + /* 17248 */ 0250,0202,05,0314,01,023,0110,0, + /* 17256 */ 0250,0202,011,0314,01,023,0110,0, + /* 17264 */ 0250,0201,01,0301,01,0133,0110,0, + /* 17272 */ 0250,0201,05,0301,01,0133,0110,0, + /* 17280 */ 0250,0201,011,0301,01,0133,0110,0, + /* 17288 */ 0250,0201,0,0302,01,0132,0110,0, + /* 17296 */ 0250,0201,04,0302,01,0132,0110,0, + /* 17304 */ 0250,0201,010,0302,01,0132,0110,0, + /* 17312 */ 0250,0201,01,0302,01,0173,0110,0, + /* 17320 */ 0250,0201,05,0302,01,0173,0110,0, + /* 17328 */ 0250,0201,011,0302,01,0173,0110,0, + /* 17336 */ 0250,0201,0,0301,01,0171,0110,0, + /* 17344 */ 0250,0201,04,0301,01,0171,0110,0, + /* 17352 */ 0250,0201,010,0301,01,0171,0110,0, + /* 17360 */ 0250,0201,01,0302,01,0171,0110,0, + /* 17368 */ 0250,0201,05,0302,01,0171,0110,0, + /* 17376 */ 0250,0201,011,0302,01,0171,0110,0, + /* 17384 */ 0250,0201,022,0301,01,0346,0110,0, + /* 17392 */ 0250,0201,026,0301,01,0346,0110,0, + /* 17400 */ 0250,0201,032,0301,01,0346,0110,0, + /* 17408 */ 0250,0201,020,0301,01,0133,0110,0, + /* 17416 */ 0250,0201,024,0301,01,0133,0110,0, + /* 17424 */ 0250,0201,030,0301,01,0133,0110,0, + /* 17432 */ 0250,0201,03,0310,01,055,0110,0, + /* 17440 */ 0250,0201,023,0310,01,055,0110,0, + /* 17448 */ 0241,0201,023,0306,01,0132,0120,0, + /* 17456 */ 0250,0201,03,0310,01,0171,0110,0, + /* 17464 */ 0250,0201,023,0310,01,0171,0110,0, + /* 17472 */ 0241,0201,03,0306,01,052,0120,0, + /* 17480 */ 0241,0201,023,0306,01,052,0120,0, + /* 17488 */ 0241,0201,02,0306,01,052,0120,0, + /* 17496 */ 0241,0201,022,0306,01,052,0120,0, + /* 17504 */ 0241,0201,02,0306,01,0132,0120,0, + /* 17512 */ 0250,0201,02,0307,01,055,0110,0, + /* 17520 */ 0250,0201,022,0307,01,055,0110,0, + /* 17528 */ 0250,0201,02,0307,01,0171,0110,0, + /* 17536 */ 0250,0201,022,0307,01,0171,0110,0, + /* 17544 */ 0250,0201,021,0301,01,0346,0110,0, + /* 17552 */ 0250,0201,025,0301,01,0346,0110,0, + /* 17560 */ 0250,0201,031,0301,01,0346,0110,0, + /* 17568 */ 0250,0201,021,0301,01,0172,0110,0, + /* 17576 */ 0250,0201,025,0301,01,0172,0110,0, + /* 17584 */ 0250,0201,031,0301,01,0172,0110,0, + /* 17592 */ 0250,0201,020,0301,01,0170,0110,0, + /* 17600 */ 0250,0201,024,0301,01,0170,0110,0, + /* 17608 */ 0250,0201,030,0301,01,0170,0110,0, + /* 17616 */ 0250,0201,021,0301,01,0170,0110,0, + /* 17624 */ 0250,0201,025,0301,01,0170,0110,0, + /* 17632 */ 0250,0201,031,0301,01,0170,0110,0, + /* 17640 */ 0250,0201,02,0301,01,0133,0110,0, + /* 17648 */ 0250,0201,06,0301,01,0133,0110,0, + /* 17656 */ 0250,0201,012,0301,01,0133,0110,0, + /* 17664 */ 0250,0201,01,0302,01,0172,0110,0, + /* 17672 */ 0250,0201,05,0302,01,0172,0110,0, + /* 17680 */ 0250,0201,011,0302,01,0172,0110,0, + /* 17688 */ 0250,0201,0,0301,01,0170,0110,0, + /* 17696 */ 0250,0201,04,0301,01,0170,0110,0, + /* 17704 */ 0250,0201,010,0301,01,0170,0110,0, + /* 17712 */ 0250,0201,01,0302,01,0170,0110,0, + /* 17720 */ 0250,0201,05,0302,01,0170,0110,0, + /* 17728 */ 0250,0201,011,0302,01,0170,0110,0, + /* 17736 */ 0250,0201,03,0310,01,054,0110,0, + /* 17744 */ 0250,0201,023,0310,01,054,0110,0, + /* 17752 */ 0250,0201,03,0310,01,0170,0110,0, + /* 17760 */ 0250,0201,023,0310,01,0170,0110,0, + /* 17768 */ 0250,0201,02,0307,01,054,0110,0, + /* 17776 */ 0250,0201,022,0307,01,054,0110,0, + /* 17784 */ 0250,0201,02,0307,01,0170,0110,0, + /* 17792 */ 0250,0201,022,0307,01,0170,0110,0, + /* 17800 */ 0250,0201,02,0302,01,0172,0110,0, + /* 17808 */ 0250,0201,06,0302,01,0172,0110,0, + /* 17816 */ 0250,0201,012,0302,01,0172,0110,0, + /* 17824 */ 0250,0201,03,0301,01,0172,0110,0, + /* 17832 */ 0250,0201,07,0301,01,0172,0110,0, + /* 17840 */ 0250,0201,013,0301,01,0172,0110,0, + /* 17848 */ 0250,0201,022,0301,01,0172,0110,0, + /* 17856 */ 0250,0201,026,0301,01,0172,0110,0, + /* 17864 */ 0250,0201,032,0301,01,0172,0110,0, + /* 17872 */ 0250,0201,023,0301,01,0172,0110,0, + /* 17880 */ 0250,0201,027,0301,01,0172,0110,0, + /* 17888 */ 0250,0201,033,0301,01,0172,0110,0, + /* 17896 */ 0241,0201,03,0306,01,0173,0120,0, + /* 17904 */ 0241,0201,023,0306,01,0173,0120,0, + /* 17912 */ 0241,0201,02,0306,01,0173,0120,0, + /* 17920 */ 0241,0201,022,0306,01,0173,0120,0, + /* 17928 */ 0241,0201,021,0301,01,0136,0120,0, + /* 17936 */ 0240,0201,021,0301,01,0136,0110,0, + /* 17944 */ 0241,0201,025,0301,01,0136,0120,0, + /* 17952 */ 0240,0201,025,0301,01,0136,0110,0, + /* 17960 */ 0241,0201,031,0301,01,0136,0120,0, + /* 17968 */ 0240,0201,031,0301,01,0136,0110,0, + /* 17976 */ 0241,0201,0,0301,01,0136,0120,0, + /* 17984 */ 0240,0201,0,0301,01,0136,0110,0, + /* 17992 */ 0241,0201,04,0301,01,0136,0120,0, + /* 18000 */ 0240,0201,04,0301,01,0136,0110,0, + /* 18008 */ 0241,0201,010,0301,01,0136,0120,0, + /* 18016 */ 0240,0201,010,0301,01,0136,0110,0, + /* 18024 */ 0241,0201,023,0306,01,0136,0120,0, + /* 18032 */ 0240,0201,023,0306,01,0136,0110,0, + /* 18040 */ 0241,0201,02,0306,01,0136,0120,0, + /* 18048 */ 0240,0201,02,0306,01,0136,0110,0, + /* 18056 */ 0250,0202,031,0301,01,0310,0110,0, + /* 18064 */ 0250,0202,011,0301,01,0310,0110,0, + /* 18072 */ 0250,0202,021,0306,01,0210,0110,0, + /* 18080 */ 0250,0202,025,0306,01,0210,0110,0, + /* 18088 */ 0250,0202,031,0306,01,0210,0110,0, + /* 18096 */ 0250,0202,01,0306,01,0210,0110,0, + /* 18104 */ 0250,0202,05,0306,01,0210,0110,0, + /* 18112 */ 0250,0202,011,0306,01,0210,0110,0, + /* 18120 */ 0241,0202,021,0301,01,0230,0120,0, + /* 18128 */ 0241,0202,025,0301,01,0230,0120,0, + /* 18136 */ 0241,0202,031,0301,01,0230,0120,0, + /* 18144 */ 0241,0202,01,0301,01,0230,0120,0, + /* 18152 */ 0241,0202,05,0301,01,0230,0120,0, + /* 18160 */ 0241,0202,011,0301,01,0230,0120,0, + /* 18168 */ 0241,0202,021,0306,01,0231,0120,0, + /* 18176 */ 0241,0202,01,0306,01,0231,0120,0, + /* 18184 */ 0241,0202,021,0301,01,0250,0120,0, + /* 18192 */ 0241,0202,025,0301,01,0250,0120,0, + /* 18200 */ 0241,0202,031,0301,01,0250,0120,0, + /* 18208 */ 0241,0202,01,0301,01,0250,0120,0, + /* 18216 */ 0241,0202,05,0301,01,0250,0120,0, + /* 18224 */ 0241,0202,011,0301,01,0250,0120,0, + /* 18232 */ 0241,0202,021,0306,01,0251,0120,0, + /* 18240 */ 0241,0202,01,0306,01,0251,0120,0, + /* 18248 */ 0241,0202,021,0301,01,0270,0120,0, + /* 18256 */ 0241,0202,025,0301,01,0270,0120,0, + /* 18264 */ 0241,0202,031,0301,01,0270,0120,0, + /* 18272 */ 0241,0202,01,0301,01,0270,0120,0, + /* 18280 */ 0241,0202,05,0301,01,0270,0120,0, + /* 18288 */ 0241,0202,011,0301,01,0270,0120,0, + /* 18296 */ 0241,0202,021,0306,01,0271,0120,0, + /* 18304 */ 0241,0202,01,0306,01,0271,0120,0, + /* 18312 */ 0241,0202,021,0301,01,0226,0120,0, + /* 18320 */ 0241,0202,025,0301,01,0226,0120,0, + /* 18328 */ 0241,0202,031,0301,01,0226,0120,0, + /* 18336 */ 0241,0202,01,0301,01,0226,0120,0, + /* 18344 */ 0241,0202,05,0301,01,0226,0120,0, + /* 18352 */ 0241,0202,011,0301,01,0226,0120,0, + /* 18360 */ 0241,0202,021,0301,01,0246,0120,0, + /* 18368 */ 0241,0202,025,0301,01,0246,0120,0, + /* 18376 */ 0241,0202,031,0301,01,0246,0120,0, + /* 18384 */ 0241,0202,01,0301,01,0246,0120,0, + /* 18392 */ 0241,0202,05,0301,01,0246,0120,0, + /* 18400 */ 0241,0202,011,0301,01,0246,0120,0, + /* 18408 */ 0241,0202,021,0301,01,0266,0120,0, + /* 18416 */ 0241,0202,025,0301,01,0266,0120,0, + /* 18424 */ 0241,0202,031,0301,01,0266,0120,0, + /* 18432 */ 0241,0202,01,0301,01,0266,0120,0, + /* 18440 */ 0241,0202,05,0301,01,0266,0120,0, + /* 18448 */ 0241,0202,011,0301,01,0266,0120,0, + /* 18456 */ 0241,0202,021,0301,01,0232,0120,0, + /* 18464 */ 0241,0202,025,0301,01,0232,0120,0, + /* 18472 */ 0241,0202,031,0301,01,0232,0120,0, + /* 18480 */ 0241,0202,01,0301,01,0232,0120,0, + /* 18488 */ 0241,0202,05,0301,01,0232,0120,0, + /* 18496 */ 0241,0202,011,0301,01,0232,0120,0, + /* 18504 */ 0241,0202,021,0306,01,0233,0120,0, + /* 18512 */ 0241,0202,01,0306,01,0233,0120,0, + /* 18520 */ 0241,0202,021,0301,01,0252,0120,0, + /* 18528 */ 0241,0202,025,0301,01,0252,0120,0, + /* 18536 */ 0241,0202,031,0301,01,0252,0120,0, + /* 18544 */ 0241,0202,01,0301,01,0252,0120,0, + /* 18552 */ 0241,0202,05,0301,01,0252,0120,0, + /* 18560 */ 0241,0202,011,0301,01,0252,0120,0, + /* 18568 */ 0241,0202,021,0306,01,0253,0120,0, + /* 18576 */ 0241,0202,01,0306,01,0253,0120,0, + /* 18584 */ 0241,0202,021,0301,01,0272,0120,0, + /* 18592 */ 0241,0202,025,0301,01,0272,0120,0, + /* 18600 */ 0241,0202,031,0301,01,0272,0120,0, + /* 18608 */ 0241,0202,01,0301,01,0272,0120,0, + /* 18616 */ 0241,0202,05,0301,01,0272,0120,0, + /* 18624 */ 0241,0202,011,0301,01,0272,0120,0, + /* 18632 */ 0241,0202,021,0306,01,0273,0120,0, + /* 18640 */ 0241,0202,01,0306,01,0273,0120,0, + /* 18648 */ 0241,0202,021,0301,01,0227,0120,0, + /* 18656 */ 0241,0202,025,0301,01,0227,0120,0, + /* 18664 */ 0241,0202,031,0301,01,0227,0120,0, + /* 18672 */ 0241,0202,01,0301,01,0227,0120,0, + /* 18680 */ 0241,0202,05,0301,01,0227,0120,0, + /* 18688 */ 0241,0202,011,0301,01,0227,0120,0, + /* 18696 */ 0241,0202,021,0301,01,0247,0120,0, + /* 18704 */ 0241,0202,025,0301,01,0247,0120,0, + /* 18712 */ 0241,0202,031,0301,01,0247,0120,0, + /* 18720 */ 0241,0202,01,0301,01,0247,0120,0, + /* 18728 */ 0241,0202,05,0301,01,0247,0120,0, + /* 18736 */ 0241,0202,011,0301,01,0247,0120,0, + /* 18744 */ 0241,0202,021,0301,01,0267,0120,0, + /* 18752 */ 0241,0202,025,0301,01,0267,0120,0, + /* 18760 */ 0241,0202,031,0301,01,0267,0120,0, + /* 18768 */ 0241,0202,01,0301,01,0267,0120,0, + /* 18776 */ 0241,0202,05,0301,01,0267,0120,0, + /* 18784 */ 0241,0202,011,0301,01,0267,0120,0, + /* 18792 */ 0241,0202,021,0301,01,0234,0120,0, + /* 18800 */ 0241,0202,025,0301,01,0234,0120,0, + /* 18808 */ 0241,0202,031,0301,01,0234,0120,0, + /* 18816 */ 0241,0202,01,0301,01,0234,0120,0, + /* 18824 */ 0241,0202,05,0301,01,0234,0120,0, + /* 18832 */ 0241,0202,011,0301,01,0234,0120,0, + /* 18840 */ 0241,0202,021,0306,01,0235,0120,0, + /* 18848 */ 0241,0202,01,0306,01,0235,0120,0, + /* 18856 */ 0241,0202,021,0301,01,0254,0120,0, + /* 18864 */ 0241,0202,025,0301,01,0254,0120,0, + /* 18872 */ 0241,0202,031,0301,01,0254,0120,0, + /* 18880 */ 0241,0202,01,0301,01,0254,0120,0, + /* 18888 */ 0241,0202,05,0301,01,0254,0120,0, + /* 18896 */ 0241,0202,011,0301,01,0254,0120,0, + /* 18904 */ 0241,0202,021,0306,01,0255,0120,0, + /* 18912 */ 0241,0202,01,0306,01,0255,0120,0, + /* 18920 */ 0241,0202,021,0301,01,0274,0120,0, + /* 18928 */ 0241,0202,025,0301,01,0274,0120,0, + /* 18936 */ 0241,0202,031,0301,01,0274,0120,0, + /* 18944 */ 0241,0202,01,0301,01,0274,0120,0, + /* 18952 */ 0241,0202,05,0301,01,0274,0120,0, + /* 18960 */ 0241,0202,011,0301,01,0274,0120,0, + /* 18968 */ 0241,0202,021,0306,01,0275,0120,0, + /* 18976 */ 0241,0202,01,0306,01,0275,0120,0, + /* 18984 */ 0241,0202,021,0301,01,0236,0120,0, + /* 18992 */ 0241,0202,025,0301,01,0236,0120,0, + /* 19000 */ 0241,0202,031,0301,01,0236,0120,0, + /* 19008 */ 0241,0202,01,0301,01,0236,0120,0, + /* 19016 */ 0241,0202,05,0301,01,0236,0120,0, + /* 19024 */ 0241,0202,011,0301,01,0236,0120,0, + /* 19032 */ 0241,0202,021,0306,01,0237,0120,0, + /* 19040 */ 0241,0202,01,0306,01,0237,0120,0, + /* 19048 */ 0241,0202,021,0301,01,0256,0120,0, + /* 19056 */ 0241,0202,025,0301,01,0256,0120,0, + /* 19064 */ 0241,0202,031,0301,01,0256,0120,0, + /* 19072 */ 0241,0202,01,0301,01,0256,0120,0, + /* 19080 */ 0241,0202,05,0301,01,0256,0120,0, + /* 19088 */ 0241,0202,011,0301,01,0256,0120,0, + /* 19096 */ 0241,0202,021,0306,01,0257,0120,0, + /* 19104 */ 0241,0202,01,0306,01,0257,0120,0, + /* 19112 */ 0241,0202,021,0301,01,0276,0120,0, + /* 19120 */ 0241,0202,025,0301,01,0276,0120,0, + /* 19128 */ 0241,0202,031,0301,01,0276,0120,0, + /* 19136 */ 0241,0202,01,0301,01,0276,0120,0, + /* 19144 */ 0241,0202,05,0301,01,0276,0120,0, + /* 19152 */ 0241,0202,011,0301,01,0276,0120,0, + /* 19160 */ 0241,0202,021,0306,01,0277,0120,0, + /* 19168 */ 0241,0202,01,0306,01,0277,0120,0, + /* 19176 */ 0250,0202,021,0301,01,0102,0110,0, + /* 19184 */ 0250,0202,025,0301,01,0102,0110,0, + /* 19192 */ 0250,0202,031,0301,01,0102,0110,0, + /* 19200 */ 0250,0202,01,0301,01,0102,0110,0, + /* 19208 */ 0250,0202,05,0301,01,0102,0110,0, + /* 19216 */ 0250,0202,011,0301,01,0102,0110,0, + /* 19224 */ 0241,0202,021,0306,01,0103,0120,0, + /* 19232 */ 0241,0202,01,0306,01,0103,0120,0, + /* 19240 */ 0241,0201,021,0301,01,0137,0120,0, + /* 19248 */ 0240,0201,021,0301,01,0137,0110,0, + /* 19256 */ 0241,0201,025,0301,01,0137,0120,0, + /* 19264 */ 0240,0201,025,0301,01,0137,0110,0, + /* 19272 */ 0241,0201,031,0301,01,0137,0120,0, + /* 19280 */ 0240,0201,031,0301,01,0137,0110,0, + /* 19288 */ 0241,0201,0,0301,01,0137,0120,0, + /* 19296 */ 0240,0201,0,0301,01,0137,0110,0, + /* 19304 */ 0241,0201,04,0301,01,0137,0120,0, + /* 19312 */ 0240,0201,04,0301,01,0137,0110,0, + /* 19320 */ 0241,0201,010,0301,01,0137,0120,0, + /* 19328 */ 0240,0201,010,0301,01,0137,0110,0, + /* 19336 */ 0241,0201,023,0306,01,0137,0120,0, + /* 19344 */ 0240,0201,023,0306,01,0137,0110,0, + /* 19352 */ 0241,0201,02,0306,01,0137,0120,0, + /* 19360 */ 0240,0201,02,0306,01,0137,0110,0, + /* 19368 */ 0241,0201,021,0301,01,0135,0120,0, + /* 19376 */ 0240,0201,021,0301,01,0135,0110,0, + /* 19384 */ 0241,0201,025,0301,01,0135,0120,0, + /* 19392 */ 0240,0201,025,0301,01,0135,0110,0, + /* 19400 */ 0241,0201,031,0301,01,0135,0120,0, + /* 19408 */ 0240,0201,031,0301,01,0135,0110,0, + /* 19416 */ 0241,0201,0,0301,01,0135,0120,0, + /* 19424 */ 0240,0201,0,0301,01,0135,0110,0, + /* 19432 */ 0241,0201,04,0301,01,0135,0120,0, + /* 19440 */ 0240,0201,04,0301,01,0135,0110,0, + /* 19448 */ 0241,0201,010,0301,01,0135,0120,0, + /* 19456 */ 0240,0201,010,0301,01,0135,0110,0, + /* 19464 */ 0241,0201,023,0306,01,0135,0120,0, + /* 19472 */ 0240,0201,023,0306,01,0135,0110,0, + /* 19480 */ 0241,0201,02,0306,01,0135,0120,0, + /* 19488 */ 0240,0201,02,0306,01,0135,0110,0, + /* 19496 */ 0250,0201,021,0303,01,050,0110,0, + /* 19504 */ 0250,0201,025,0303,01,050,0110,0, + /* 19512 */ 0250,0201,031,0303,01,050,0110,0, + /* 19520 */ 0250,0201,021,0300,01,051,0101,0, + /* 19528 */ 0250,0201,025,0300,01,051,0101,0, + /* 19536 */ 0250,0201,031,0300,01,051,0101,0, + /* 19544 */ 0250,0201,021,0303,01,051,0101,0, + /* 19552 */ 0250,0201,025,0303,01,051,0101,0, + /* 19560 */ 0250,0201,031,0303,01,051,0101,0, + /* 19568 */ 0250,0201,0,0303,01,050,0110,0, + /* 19576 */ 0250,0201,04,0303,01,050,0110,0, + /* 19584 */ 0250,0201,010,0303,01,050,0110,0, + /* 19592 */ 0250,0201,0,0300,01,051,0101,0, + /* 19600 */ 0250,0201,04,0300,01,051,0101,0, + /* 19608 */ 0250,0201,010,0300,01,051,0101,0, + /* 19616 */ 0250,0201,0,0303,01,051,0101,0, + /* 19624 */ 0250,0201,04,0303,01,051,0101,0, + /* 19632 */ 0250,0201,010,0303,01,051,0101,0, + /* 19640 */ 0250,0201,01,0306,01,0156,0110,0, + /* 19648 */ 0250,0201,01,0306,01,0176,0101,0, + /* 19656 */ 0250,0201,023,0320,01,022,0110,0, + /* 19664 */ 0250,0201,027,0320,01,022,0110,0, + /* 19672 */ 0250,0201,033,0320,01,022,0110,0, + /* 19680 */ 0250,0201,01,0303,01,0157,0110,0, + /* 19688 */ 0250,0201,05,0303,01,0157,0110,0, + /* 19696 */ 0250,0201,011,0303,01,0157,0110,0, + /* 19704 */ 0250,0201,01,0303,01,0177,0101,0, + /* 19712 */ 0250,0201,05,0303,01,0177,0101,0, + /* 19720 */ 0250,0201,011,0303,01,0177,0101,0, + /* 19728 */ 0250,0201,021,0303,01,0157,0110,0, + /* 19736 */ 0250,0201,025,0303,01,0157,0110,0, + /* 19744 */ 0250,0201,031,0303,01,0157,0110,0, + /* 19752 */ 0250,0201,021,0303,01,0177,0101,0, + /* 19760 */ 0250,0201,025,0303,01,0177,0101,0, + /* 19768 */ 0250,0201,031,0303,01,0177,0101,0, + /* 19776 */ 0250,0201,023,0303,01,0157,0110,0, + /* 19784 */ 0250,0201,027,0303,01,0157,0110,0, + /* 19792 */ 0250,0201,033,0303,01,0157,0110,0, + /* 19800 */ 0250,0201,023,0303,01,0177,0101,0, + /* 19808 */ 0250,0201,027,0303,01,0177,0101,0, + /* 19816 */ 0250,0201,033,0303,01,0177,0101,0, + /* 19824 */ 0250,0201,02,0303,01,0157,0110,0, + /* 19832 */ 0250,0201,06,0303,01,0157,0110,0, + /* 19840 */ 0250,0201,012,0303,01,0157,0110,0, + /* 19848 */ 0250,0201,02,0303,01,0177,0101,0, + /* 19856 */ 0250,0201,06,0303,01,0177,0101,0, + /* 19864 */ 0250,0201,012,0303,01,0177,0101,0, + /* 19872 */ 0250,0201,022,0303,01,0157,0110,0, + /* 19880 */ 0250,0201,026,0303,01,0157,0110,0, + /* 19888 */ 0250,0201,032,0303,01,0157,0110,0, + /* 19896 */ 0250,0201,022,0303,01,0177,0101,0, + /* 19904 */ 0250,0201,026,0303,01,0177,0101,0, + /* 19912 */ 0250,0201,032,0303,01,0177,0101,0, + /* 19920 */ 0250,0201,03,0303,01,0157,0110,0, + /* 19928 */ 0250,0201,07,0303,01,0157,0110,0, + /* 19936 */ 0250,0201,013,0303,01,0157,0110,0, + /* 19944 */ 0250,0201,03,0303,01,0177,0101,0, + /* 19952 */ 0250,0201,07,0303,01,0177,0101,0, + /* 19960 */ 0250,0201,013,0303,01,0177,0101,0, + /* 19968 */ 0241,0201,0,0300,01,022,0120,0, + /* 19976 */ 0240,0201,0,0300,01,022,0110,0, + /* 19984 */ 0241,0201,021,0306,01,026,0120,0, + /* 19992 */ 0240,0201,021,0306,01,026,0110,0, + /* 20000 */ 0250,0201,021,0306,01,027,0101,0, + /* 20008 */ 0241,0201,0,0311,01,026,0120,0, + /* 20016 */ 0240,0201,0,0311,01,026,0110,0, + /* 20024 */ 0250,0201,0,0311,01,027,0101,0, + /* 20032 */ 0241,0201,0,0300,01,026,0120,0, + /* 20040 */ 0240,0201,0,0300,01,026,0110,0, + /* 20048 */ 0241,0201,021,0306,01,022,0120,0, + /* 20056 */ 0240,0201,021,0306,01,022,0110,0, + /* 20064 */ 0250,0201,021,0306,01,023,0101,0, + /* 20072 */ 0241,0201,0,0311,01,022,0120,0, + /* 20080 */ 0240,0201,0,0311,01,022,0110,0, + /* 20088 */ 0250,0201,0,0311,01,023,0101,0, + /* 20096 */ 0250,0201,01,0303,01,0347,0101,0, + /* 20104 */ 0250,0201,05,0303,01,0347,0101,0, + /* 20112 */ 0250,0201,011,0303,01,0347,0101,0, + /* 20120 */ 0250,0202,01,0303,01,052,0110,0, + /* 20128 */ 0250,0202,05,0303,01,052,0110,0, + /* 20136 */ 0250,0202,011,0303,01,052,0110,0, + /* 20144 */ 0250,0201,021,0303,01,053,0101,0, + /* 20152 */ 0250,0201,025,0303,01,053,0101,0, + /* 20160 */ 0250,0201,031,0303,01,053,0101,0, + /* 20168 */ 0250,0201,0,0303,01,053,0101,0, + /* 20176 */ 0250,0201,04,0303,01,053,0101,0, + /* 20184 */ 0250,0201,010,0303,01,053,0101,0, + /* 20192 */ 0250,0201,021,0306,01,0156,0110,0, + /* 20200 */ 0250,0201,021,0306,01,0176,0101,0, + /* 20208 */ 0250,0201,022,0306,01,0176,0110,0, + /* 20216 */ 0250,0201,021,0306,01,0326,0101,0, + /* 20224 */ 0250,0201,023,0306,01,020,0110,0, + /* 20232 */ 0250,0201,023,0306,01,021,0101,0, + /* 20240 */ 0241,0201,023,0300,01,020,0120,0, + /* 20248 */ 0240,0201,023,0300,01,020,0110,0, + /* 20256 */ 0241,0201,023,0300,01,021,0102,0, + /* 20264 */ 0240,0201,023,0300,01,021,0101,0, + /* 20272 */ 0250,0201,02,0303,01,026,0110,0, + /* 20280 */ 0250,0201,06,0303,01,026,0110,0, + /* 20288 */ 0250,0201,012,0303,01,026,0110,0, + /* 20296 */ 0250,0201,02,0303,01,022,0110,0, + /* 20304 */ 0250,0201,06,0303,01,022,0110,0, + /* 20312 */ 0250,0201,012,0303,01,022,0110,0, + /* 20320 */ 0250,0201,02,0306,01,020,0110,0, + /* 20328 */ 0250,0201,02,0306,01,021,0101,0, + /* 20336 */ 0241,0201,02,0300,01,020,0120,0, + /* 20344 */ 0240,0201,02,0300,01,020,0110,0, + /* 20352 */ 0241,0201,02,0300,01,021,0102,0, + /* 20360 */ 0240,0201,02,0300,01,021,0101,0, + /* 20368 */ 0250,0201,021,0303,01,020,0110,0, + /* 20376 */ 0250,0201,025,0303,01,020,0110,0, + /* 20384 */ 0250,0201,031,0303,01,020,0110,0, + /* 20392 */ 0250,0201,021,0300,01,021,0101,0, + /* 20400 */ 0250,0201,025,0300,01,021,0101,0, + /* 20408 */ 0250,0201,031,0300,01,021,0101,0, + /* 20416 */ 0250,0201,021,0303,01,021,0101,0, + /* 20424 */ 0250,0201,025,0303,01,021,0101,0, + /* 20432 */ 0250,0201,031,0303,01,021,0101,0, + /* 20440 */ 0250,0201,0,0303,01,020,0110,0, + /* 20448 */ 0250,0201,04,0303,01,020,0110,0, + /* 20456 */ 0250,0201,010,0303,01,020,0110,0, + /* 20464 */ 0250,0201,0,0300,01,021,0101,0, + /* 20472 */ 0250,0201,04,0300,01,021,0101,0, + /* 20480 */ 0250,0201,010,0300,01,021,0101,0, + /* 20488 */ 0250,0201,0,0303,01,021,0101,0, + /* 20496 */ 0250,0201,04,0303,01,021,0101,0, + /* 20504 */ 0250,0201,010,0303,01,021,0101,0, + /* 20512 */ 0241,0201,021,0301,01,0131,0120,0, + /* 20520 */ 0240,0201,021,0301,01,0131,0110,0, + /* 20528 */ 0241,0201,025,0301,01,0131,0120,0, + /* 20536 */ 0240,0201,025,0301,01,0131,0110,0, + /* 20544 */ 0241,0201,031,0301,01,0131,0120,0, + /* 20552 */ 0240,0201,031,0301,01,0131,0110,0, + /* 20560 */ 0241,0201,0,0301,01,0131,0120,0, + /* 20568 */ 0240,0201,0,0301,01,0131,0110,0, + /* 20576 */ 0241,0201,04,0301,01,0131,0120,0, + /* 20584 */ 0240,0201,04,0301,01,0131,0110,0, + /* 20592 */ 0241,0201,010,0301,01,0131,0120,0, + /* 20600 */ 0240,0201,010,0301,01,0131,0110,0, + /* 20608 */ 0241,0201,023,0306,01,0131,0120,0, + /* 20616 */ 0240,0201,023,0306,01,0131,0110,0, + /* 20624 */ 0241,0201,02,0306,01,0131,0120,0, + /* 20632 */ 0240,0201,02,0306,01,0131,0110,0, + /* 20640 */ 0241,0201,021,0301,01,0126,0120,0, + /* 20648 */ 0240,0201,021,0301,01,0126,0110,0, + /* 20656 */ 0241,0201,025,0301,01,0126,0120,0, + /* 20664 */ 0240,0201,025,0301,01,0126,0110,0, + /* 20672 */ 0241,0201,031,0301,01,0126,0120,0, + /* 20680 */ 0240,0201,031,0301,01,0126,0110,0, + /* 20688 */ 0241,0201,0,0301,01,0126,0120,0, + /* 20696 */ 0240,0201,0,0301,01,0126,0110,0, + /* 20704 */ 0241,0201,04,0301,01,0126,0120,0, + /* 20712 */ 0240,0201,04,0301,01,0126,0110,0, + /* 20720 */ 0241,0201,010,0301,01,0126,0120,0, + /* 20728 */ 0240,0201,010,0301,01,0126,0110,0, + /* 20736 */ 0250,0202,041,0303,01,034,0110,0, + /* 20744 */ 0250,0202,045,0303,01,034,0110,0, + /* 20752 */ 0250,0202,051,0303,01,034,0110,0, + /* 20760 */ 0250,0202,01,0301,01,036,0110,0, + /* 20768 */ 0250,0202,05,0301,01,036,0110,0, + /* 20776 */ 0250,0202,011,0301,01,036,0110,0, + /* 20784 */ 0250,0202,021,0301,01,037,0110,0, + /* 20792 */ 0250,0202,025,0301,01,037,0110,0, + /* 20800 */ 0250,0202,031,0301,01,037,0110,0, + /* 20808 */ 0250,0202,041,0303,01,035,0110,0, + /* 20816 */ 0250,0202,045,0303,01,035,0110,0, + /* 20824 */ 0250,0202,051,0303,01,035,0110,0, + /* 20832 */ 0241,0201,01,0301,01,0153,0120,0, + /* 20840 */ 0240,0201,01,0301,01,0153,0110,0, + /* 20848 */ 0241,0201,05,0301,01,0153,0120,0, + /* 20856 */ 0240,0201,05,0301,01,0153,0110,0, + /* 20864 */ 0241,0201,011,0301,01,0153,0120,0, + /* 20872 */ 0240,0201,011,0301,01,0153,0110,0, + /* 20880 */ 0241,0201,041,0303,01,0143,0120,0, + /* 20888 */ 0240,0201,041,0303,01,0143,0110,0, + /* 20896 */ 0241,0201,045,0303,01,0143,0120,0, + /* 20904 */ 0240,0201,045,0303,01,0143,0110,0, + /* 20912 */ 0241,0201,051,0303,01,0143,0120,0, + /* 20920 */ 0240,0201,051,0303,01,0143,0110,0, + /* 20928 */ 0241,0202,01,0301,01,053,0120,0, + /* 20936 */ 0240,0202,01,0301,01,053,0110,0, + /* 20944 */ 0241,0202,05,0301,01,053,0120,0, + /* 20952 */ 0240,0202,05,0301,01,053,0110,0, + /* 20960 */ 0241,0202,011,0301,01,053,0120,0, + /* 20968 */ 0240,0202,011,0301,01,053,0110,0, + /* 20976 */ 0241,0201,041,0303,01,0147,0120,0, + /* 20984 */ 0240,0201,041,0303,01,0147,0110,0, + /* 20992 */ 0241,0201,045,0303,01,0147,0120,0, + /* 21000 */ 0240,0201,045,0303,01,0147,0110,0, + /* 21008 */ 0241,0201,051,0303,01,0147,0120,0, + /* 21016 */ 0240,0201,051,0303,01,0147,0110,0, + /* 21024 */ 0241,0201,041,0303,01,0374,0120,0, + /* 21032 */ 0240,0201,041,0303,01,0374,0110,0, + /* 21040 */ 0241,0201,045,0303,01,0374,0120,0, + /* 21048 */ 0240,0201,045,0303,01,0374,0110,0, + /* 21056 */ 0241,0201,051,0303,01,0374,0120,0, + /* 21064 */ 0240,0201,051,0303,01,0374,0110,0, + /* 21072 */ 0241,0201,01,0301,01,0376,0120,0, + /* 21080 */ 0240,0201,01,0301,01,0376,0110,0, + /* 21088 */ 0241,0201,05,0301,01,0376,0120,0, + /* 21096 */ 0240,0201,05,0301,01,0376,0110,0, + /* 21104 */ 0241,0201,011,0301,01,0376,0120,0, + /* 21112 */ 0240,0201,011,0301,01,0376,0110,0, + /* 21120 */ 0241,0201,021,0301,01,0324,0120,0, + /* 21128 */ 0240,0201,021,0301,01,0324,0110,0, + /* 21136 */ 0241,0201,025,0301,01,0324,0120,0, + /* 21144 */ 0240,0201,025,0301,01,0324,0110,0, + /* 21152 */ 0241,0201,031,0301,01,0324,0120,0, + /* 21160 */ 0240,0201,031,0301,01,0324,0110,0, + /* 21168 */ 0241,0201,041,0303,01,0354,0120,0, + /* 21176 */ 0240,0201,041,0303,01,0354,0110,0, + /* 21184 */ 0241,0201,045,0303,01,0354,0120,0, + /* 21192 */ 0240,0201,045,0303,01,0354,0110,0, + /* 21200 */ 0241,0201,051,0303,01,0354,0120,0, + /* 21208 */ 0240,0201,051,0303,01,0354,0110,0, + /* 21216 */ 0241,0201,041,0303,01,0355,0120,0, + /* 21224 */ 0240,0201,041,0303,01,0355,0110,0, + /* 21232 */ 0241,0201,045,0303,01,0355,0120,0, + /* 21240 */ 0240,0201,045,0303,01,0355,0110,0, + /* 21248 */ 0241,0201,051,0303,01,0355,0120,0, + /* 21256 */ 0240,0201,051,0303,01,0355,0110,0, + /* 21264 */ 0241,0201,041,0303,01,0334,0120,0, + /* 21272 */ 0240,0201,041,0303,01,0334,0110,0, + /* 21280 */ 0241,0201,045,0303,01,0334,0120,0, + /* 21288 */ 0240,0201,045,0303,01,0334,0110,0, + /* 21296 */ 0241,0201,051,0303,01,0334,0120,0, + /* 21304 */ 0240,0201,051,0303,01,0334,0110,0, + /* 21312 */ 0241,0201,041,0303,01,0335,0120,0, + /* 21320 */ 0240,0201,041,0303,01,0335,0110,0, + /* 21328 */ 0241,0201,045,0303,01,0335,0120,0, + /* 21336 */ 0240,0201,045,0303,01,0335,0110,0, + /* 21344 */ 0241,0201,051,0303,01,0335,0120,0, + /* 21352 */ 0240,0201,051,0303,01,0335,0110,0, + /* 21360 */ 0241,0201,041,0303,01,0375,0120,0, + /* 21368 */ 0240,0201,041,0303,01,0375,0110,0, + /* 21376 */ 0241,0201,045,0303,01,0375,0120,0, + /* 21384 */ 0240,0201,045,0303,01,0375,0110,0, + /* 21392 */ 0241,0201,051,0303,01,0375,0120,0, + /* 21400 */ 0240,0201,051,0303,01,0375,0110,0, + /* 21408 */ 0241,0201,01,0301,01,0333,0120,0, + /* 21416 */ 0240,0201,01,0301,01,0333,0110,0, + /* 21424 */ 0241,0201,05,0301,01,0333,0120,0, + /* 21432 */ 0240,0201,05,0301,01,0333,0110,0, + /* 21440 */ 0241,0201,011,0301,01,0333,0120,0, + /* 21448 */ 0240,0201,011,0301,01,0333,0110,0, + /* 21456 */ 0241,0201,01,0301,01,0337,0120,0, + /* 21464 */ 0240,0201,01,0301,01,0337,0110,0, + /* 21472 */ 0241,0201,05,0301,01,0337,0120,0, + /* 21480 */ 0240,0201,05,0301,01,0337,0110,0, + /* 21488 */ 0241,0201,011,0301,01,0337,0120,0, + /* 21496 */ 0240,0201,011,0301,01,0337,0110,0, + /* 21504 */ 0241,0201,021,0301,01,0337,0120,0, + /* 21512 */ 0240,0201,021,0301,01,0337,0110,0, + /* 21520 */ 0241,0201,025,0301,01,0337,0120,0, + /* 21528 */ 0240,0201,025,0301,01,0337,0110,0, + /* 21536 */ 0241,0201,031,0301,01,0337,0120,0, + /* 21544 */ 0240,0201,031,0301,01,0337,0110,0, + /* 21552 */ 0241,0201,021,0301,01,0333,0120,0, + /* 21560 */ 0240,0201,021,0301,01,0333,0110,0, + /* 21568 */ 0241,0201,025,0301,01,0333,0120,0, + /* 21576 */ 0240,0201,025,0301,01,0333,0110,0, + /* 21584 */ 0241,0201,031,0301,01,0333,0120,0, + /* 21592 */ 0240,0201,031,0301,01,0333,0110,0, + /* 21600 */ 0241,0201,041,0303,01,0340,0120,0, + /* 21608 */ 0240,0201,041,0303,01,0340,0110,0, + /* 21616 */ 0241,0201,045,0303,01,0340,0120,0, + /* 21624 */ 0240,0201,045,0303,01,0340,0110,0, + /* 21632 */ 0241,0201,051,0303,01,0340,0120,0, + /* 21640 */ 0240,0201,051,0303,01,0340,0110,0, + /* 21648 */ 0241,0201,041,0303,01,0343,0120,0, + /* 21656 */ 0240,0201,041,0303,01,0343,0110,0, + /* 21664 */ 0241,0201,045,0303,01,0343,0120,0, + /* 21672 */ 0240,0201,045,0303,01,0343,0110,0, + /* 21680 */ 0241,0201,051,0303,01,0343,0120,0, + /* 21688 */ 0240,0201,051,0303,01,0343,0110,0, + /* 21696 */ 0241,0202,01,0303,01,0146,0120,0, + /* 21704 */ 0241,0202,05,0303,01,0146,0120,0, + /* 21712 */ 0241,0202,011,0303,01,0146,0120,0, + /* 21720 */ 0241,0202,01,0301,01,0144,0120,0, + /* 21728 */ 0241,0202,05,0301,01,0144,0120,0, + /* 21736 */ 0241,0202,011,0301,01,0144,0120,0, + /* 21744 */ 0241,0202,021,0301,01,0144,0120,0, + /* 21752 */ 0241,0202,025,0301,01,0144,0120,0, + /* 21760 */ 0241,0202,031,0301,01,0144,0120,0, + /* 21768 */ 0241,0202,021,0303,01,0146,0120,0, + /* 21776 */ 0241,0202,025,0303,01,0146,0120,0, + /* 21784 */ 0241,0202,031,0303,01,0146,0120,0, + /* 21792 */ 0250,0202,01,0304,01,0170,0110,0, + /* 21800 */ 0250,0202,05,0304,01,0170,0110,0, + /* 21808 */ 0250,0202,011,0304,01,0170,0110,0, + /* 21816 */ 0250,0202,01,0300,01,0172,0110,0, + /* 21824 */ 0250,0202,05,0300,01,0172,0110,0, + /* 21832 */ 0250,0202,011,0300,01,0172,0110,0, + /* 21840 */ 0250,0202,01,0306,01,0130,0110,0, + /* 21848 */ 0250,0202,05,0306,01,0130,0110,0, + /* 21856 */ 0250,0202,011,0306,01,0130,0110,0, + /* 21864 */ 0250,0202,01,0300,01,0130,0110,0, + /* 21872 */ 0250,0202,05,0300,01,0130,0110,0, + /* 21880 */ 0250,0202,011,0300,01,0130,0110,0, + /* 21888 */ 0250,0202,01,0300,01,0174,0110,0, + /* 21896 */ 0250,0202,05,0300,01,0174,0110,0, + /* 21904 */ 0250,0202,011,0300,01,0174,0110,0, + /* 21912 */ 0250,0202,022,0300,01,052,0110,0, + /* 21920 */ 0250,0202,026,0300,01,052,0110,0, + /* 21928 */ 0250,0202,032,0300,01,052,0110,0, + /* 21936 */ 0250,0202,02,0300,01,072,0110,0, + /* 21944 */ 0250,0202,06,0300,01,072,0110,0, + /* 21952 */ 0250,0202,012,0300,01,072,0110,0, + /* 21960 */ 0250,0202,021,0306,01,0131,0110,0, + /* 21968 */ 0250,0202,025,0306,01,0131,0110,0, + /* 21976 */ 0250,0202,031,0306,01,0131,0110,0, + /* 21984 */ 0250,0202,021,0300,01,0131,0110,0, + /* 21992 */ 0250,0202,025,0300,01,0131,0110,0, + /* 22000 */ 0250,0202,031,0300,01,0131,0110,0, + /* 22008 */ 0250,0202,021,0300,01,0174,0110,0, + /* 22016 */ 0250,0202,025,0300,01,0174,0110,0, + /* 22024 */ 0250,0202,031,0300,01,0174,0110,0, + /* 22032 */ 0250,0202,01,0305,01,0171,0110,0, + /* 22040 */ 0250,0202,05,0305,01,0171,0110,0, + /* 22048 */ 0250,0202,011,0305,01,0171,0110,0, + /* 22056 */ 0250,0202,01,0300,01,0173,0110,0, + /* 22064 */ 0250,0202,05,0300,01,0173,0110,0, + /* 22072 */ 0250,0202,011,0300,01,0173,0110,0, + /* 22080 */ 0241,0201,041,0303,01,0164,0120,0, + /* 22088 */ 0241,0201,045,0303,01,0164,0120,0, + /* 22096 */ 0241,0201,051,0303,01,0164,0120,0, + /* 22104 */ 0241,0201,01,0301,01,0166,0120,0, + /* 22112 */ 0241,0201,05,0301,01,0166,0120,0, + /* 22120 */ 0241,0201,011,0301,01,0166,0120,0, + /* 22128 */ 0241,0202,021,0301,01,051,0120,0, + /* 22136 */ 0241,0202,025,0301,01,051,0120,0, + /* 22144 */ 0241,0202,031,0301,01,051,0120,0, + /* 22152 */ 0241,0201,041,0303,01,0165,0120,0, + /* 22160 */ 0241,0201,045,0303,01,0165,0120,0, + /* 22168 */ 0241,0201,051,0303,01,0165,0120,0, + /* 22176 */ 0241,0201,041,0303,01,0144,0120,0, + /* 22184 */ 0241,0201,045,0303,01,0144,0120,0, + /* 22192 */ 0241,0201,051,0303,01,0144,0120,0, + /* 22200 */ 0241,0201,01,0301,01,0146,0120,0, + /* 22208 */ 0241,0201,05,0301,01,0146,0120,0, + /* 22216 */ 0241,0201,011,0301,01,0146,0120,0, + /* 22224 */ 0241,0202,021,0301,01,067,0120,0, + /* 22232 */ 0241,0202,025,0301,01,067,0120,0, + /* 22240 */ 0241,0202,031,0301,01,067,0120,0, + /* 22248 */ 0241,0201,041,0303,01,0145,0120,0, + /* 22256 */ 0241,0201,045,0303,01,0145,0120,0, + /* 22264 */ 0241,0201,051,0303,01,0145,0120,0, + /* 22272 */ 0250,0202,01,0306,01,0213,0101,0, + /* 22280 */ 0250,0202,05,0306,01,0213,0101,0, + /* 22288 */ 0250,0202,011,0306,01,0213,0101,0, + /* 22296 */ 0250,0202,01,0300,01,0213,0101,0, + /* 22304 */ 0250,0202,05,0300,01,0213,0101,0, + /* 22312 */ 0250,0202,011,0300,01,0213,0101,0, + /* 22320 */ 0250,0202,021,0306,01,0213,0101,0, + /* 22328 */ 0250,0202,025,0306,01,0213,0101,0, + /* 22336 */ 0250,0202,031,0306,01,0213,0101,0, + /* 22344 */ 0250,0202,021,0300,01,0213,0101,0, + /* 22352 */ 0250,0202,025,0300,01,0213,0101,0, + /* 22360 */ 0250,0202,031,0300,01,0213,0101,0, + /* 22368 */ 0250,0202,01,0301,01,0304,0110,0, + /* 22376 */ 0250,0202,05,0301,01,0304,0110,0, + /* 22384 */ 0250,0202,011,0301,01,0304,0110,0, + /* 22392 */ 0250,0202,021,0301,01,0304,0110,0, + /* 22400 */ 0250,0202,025,0301,01,0304,0110,0, + /* 22408 */ 0250,0202,031,0301,01,0304,0110,0, + /* 22416 */ 0241,0202,01,0303,01,0215,0120,0, + /* 22424 */ 0240,0202,01,0303,01,0215,0110,0, + /* 22432 */ 0241,0202,05,0303,01,0215,0120,0, + /* 22440 */ 0240,0202,05,0303,01,0215,0110,0, + /* 22448 */ 0241,0202,011,0303,01,0215,0120,0, + /* 22456 */ 0240,0202,011,0303,01,0215,0110,0, + /* 22464 */ 0241,0202,05,0301,01,066,0120,0, + /* 22472 */ 0240,0202,05,0301,01,066,0110,0, + /* 22480 */ 0241,0202,011,0301,01,066,0120,0, + /* 22488 */ 0240,0202,011,0301,01,066,0110,0, + /* 22496 */ 0241,0202,01,0303,01,0165,0120,0, + /* 22504 */ 0241,0202,05,0303,01,0165,0120,0, + /* 22512 */ 0241,0202,011,0303,01,0165,0120,0, + /* 22520 */ 0241,0202,01,0301,01,0166,0120,0, + /* 22528 */ 0241,0202,05,0301,01,0166,0120,0, + /* 22536 */ 0241,0202,011,0301,01,0166,0120,0, + /* 22544 */ 0241,0202,021,0301,01,0167,0120,0, + /* 22552 */ 0241,0202,025,0301,01,0167,0120,0, + /* 22560 */ 0241,0202,031,0301,01,0167,0120,0, + /* 22568 */ 0241,0202,01,0301,01,0167,0120,0, + /* 22576 */ 0241,0202,05,0301,01,0167,0120,0, + /* 22584 */ 0241,0202,011,0301,01,0167,0120,0, + /* 22592 */ 0241,0202,021,0301,01,0166,0120,0, + /* 22600 */ 0241,0202,025,0301,01,0166,0120,0, + /* 22608 */ 0241,0202,031,0301,01,0166,0120,0, + /* 22616 */ 0241,0202,021,0303,01,0165,0120,0, + /* 22624 */ 0241,0202,025,0303,01,0165,0120,0, + /* 22632 */ 0241,0202,031,0303,01,0165,0120,0, + /* 22640 */ 0241,0202,021,0301,01,015,0120,0, + /* 22648 */ 0240,0202,021,0301,01,015,0110,0, + /* 22656 */ 0241,0202,025,0301,01,015,0120,0, + /* 22664 */ 0240,0202,025,0301,01,015,0110,0, + /* 22672 */ 0241,0202,031,0301,01,015,0120,0, + /* 22680 */ 0240,0202,031,0301,01,015,0110,0, + /* 22688 */ 0241,0202,01,0301,01,014,0120,0, + /* 22696 */ 0240,0202,01,0301,01,014,0110,0, + /* 22704 */ 0241,0202,05,0301,01,014,0120,0, + /* 22712 */ 0240,0202,05,0301,01,014,0110,0, + /* 22720 */ 0241,0202,011,0301,01,014,0120,0, + /* 22728 */ 0240,0202,011,0301,01,014,0110,0, + /* 22736 */ 0241,0202,025,0301,01,026,0120,0, + /* 22744 */ 0240,0202,025,0301,01,026,0110,0, + /* 22752 */ 0241,0202,031,0301,01,026,0120,0, + /* 22760 */ 0240,0202,031,0301,01,026,0110,0, + /* 22768 */ 0241,0202,05,0301,01,026,0120,0, + /* 22776 */ 0240,0202,05,0301,01,026,0110,0, + /* 22784 */ 0241,0202,011,0301,01,026,0120,0, + /* 22792 */ 0240,0202,011,0301,01,026,0110,0, + /* 22800 */ 0241,0202,025,0301,01,066,0120,0, + /* 22808 */ 0240,0202,025,0301,01,066,0110,0, + /* 22816 */ 0241,0202,031,0301,01,066,0120,0, + /* 22824 */ 0240,0202,031,0301,01,066,0110,0, + /* 22832 */ 0241,0202,01,0303,01,0175,0120,0, + /* 22840 */ 0241,0202,05,0303,01,0175,0120,0, + /* 22848 */ 0241,0202,011,0303,01,0175,0120,0, + /* 22856 */ 0241,0202,01,0301,01,0176,0120,0, + /* 22864 */ 0241,0202,05,0301,01,0176,0120,0, + /* 22872 */ 0241,0202,011,0301,01,0176,0120,0, + /* 22880 */ 0241,0202,021,0301,01,0177,0120,0, + /* 22888 */ 0241,0202,025,0301,01,0177,0120,0, + /* 22896 */ 0241,0202,031,0301,01,0177,0120,0, + /* 22904 */ 0241,0202,01,0301,01,0177,0120,0, + /* 22912 */ 0241,0202,05,0301,01,0177,0120,0, + /* 22920 */ 0241,0202,011,0301,01,0177,0120,0, + /* 22928 */ 0241,0202,021,0301,01,0176,0120,0, + /* 22936 */ 0241,0202,025,0301,01,0176,0120,0, + /* 22944 */ 0241,0202,031,0301,01,0176,0120,0, + /* 22952 */ 0241,0202,021,0303,01,0175,0120,0, + /* 22960 */ 0241,0202,025,0303,01,0175,0120,0, + /* 22968 */ 0241,0202,031,0303,01,0175,0120,0, + /* 22976 */ 0241,0202,021,0303,01,0215,0120,0, + /* 22984 */ 0240,0202,021,0303,01,0215,0110,0, + /* 22992 */ 0241,0202,025,0303,01,0215,0120,0, + /* 23000 */ 0240,0202,025,0303,01,0215,0110,0, + /* 23008 */ 0241,0202,031,0303,01,0215,0120,0, + /* 23016 */ 0240,0202,031,0303,01,0215,0110,0, + /* 23024 */ 0250,0202,01,0306,01,0211,0110,0, + /* 23032 */ 0250,0202,05,0306,01,0211,0110,0, + /* 23040 */ 0250,0202,011,0306,01,0211,0110,0, + /* 23048 */ 0250,0202,021,0306,01,0211,0110,0, + /* 23056 */ 0250,0202,025,0306,01,0211,0110,0, + /* 23064 */ 0250,0202,031,0306,01,0211,0110,0, + /* 23072 */ 0250,0202,01,0301,01,0104,0110,0, + /* 23080 */ 0250,0202,05,0301,01,0104,0110,0, + /* 23088 */ 0250,0202,011,0301,01,0104,0110,0, + /* 23096 */ 0250,0202,021,0301,01,0104,0110,0, + /* 23104 */ 0250,0202,025,0301,01,0104,0110,0, + /* 23112 */ 0250,0202,031,0301,01,0104,0110,0, + /* 23120 */ 0241,0202,021,0301,01,0265,0120,0, + /* 23128 */ 0241,0202,025,0301,01,0265,0120,0, + /* 23136 */ 0241,0202,031,0301,01,0265,0120,0, + /* 23144 */ 0241,0202,021,0301,01,0264,0120,0, + /* 23152 */ 0241,0202,025,0301,01,0264,0120,0, + /* 23160 */ 0241,0202,031,0301,01,0264,0120,0, + /* 23168 */ 0241,0202,041,0303,01,04,0120,0, + /* 23176 */ 0240,0202,041,0303,01,04,0110,0, + /* 23184 */ 0241,0202,045,0303,01,04,0120,0, + /* 23192 */ 0240,0202,045,0303,01,04,0110,0, + /* 23200 */ 0241,0202,051,0303,01,04,0120,0, + /* 23208 */ 0240,0202,051,0303,01,04,0110,0, + /* 23216 */ 0241,0201,041,0303,01,0365,0120,0, + /* 23224 */ 0240,0201,041,0303,01,0365,0110,0, + /* 23232 */ 0241,0201,045,0303,01,0365,0120,0, + /* 23240 */ 0240,0201,045,0303,01,0365,0110,0, + /* 23248 */ 0241,0201,051,0303,01,0365,0120,0, + /* 23256 */ 0240,0201,051,0303,01,0365,0110,0, + /* 23264 */ 0241,0202,041,0303,01,074,0120,0, + /* 23272 */ 0240,0202,041,0303,01,074,0110,0, + /* 23280 */ 0241,0202,045,0303,01,074,0120,0, + /* 23288 */ 0240,0202,045,0303,01,074,0110,0, + /* 23296 */ 0241,0202,051,0303,01,074,0120,0, + /* 23304 */ 0240,0202,051,0303,01,074,0110,0, + /* 23312 */ 0241,0202,01,0301,01,075,0120,0, + /* 23320 */ 0240,0202,01,0301,01,075,0110,0, + /* 23328 */ 0241,0202,05,0301,01,075,0120,0, + /* 23336 */ 0240,0202,05,0301,01,075,0110,0, + /* 23344 */ 0241,0202,011,0301,01,075,0120,0, + /* 23352 */ 0240,0202,011,0301,01,075,0110,0, + /* 23360 */ 0241,0202,021,0301,01,075,0120,0, + /* 23368 */ 0240,0202,021,0301,01,075,0110,0, + /* 23376 */ 0241,0202,025,0301,01,075,0120,0, + /* 23384 */ 0240,0202,025,0301,01,075,0110,0, + /* 23392 */ 0241,0202,031,0301,01,075,0120,0, + /* 23400 */ 0240,0202,031,0301,01,075,0110,0, + /* 23408 */ 0241,0201,041,0303,01,0356,0120,0, + /* 23416 */ 0240,0201,041,0303,01,0356,0110,0, + /* 23424 */ 0241,0201,045,0303,01,0356,0120,0, + /* 23432 */ 0240,0201,045,0303,01,0356,0110,0, + /* 23440 */ 0241,0201,051,0303,01,0356,0120,0, + /* 23448 */ 0240,0201,051,0303,01,0356,0110,0, + /* 23456 */ 0241,0201,041,0303,01,0336,0120,0, + /* 23464 */ 0240,0201,041,0303,01,0336,0110,0, + /* 23472 */ 0241,0201,045,0303,01,0336,0120,0, + /* 23480 */ 0240,0201,045,0303,01,0336,0110,0, + /* 23488 */ 0241,0201,051,0303,01,0336,0120,0, + /* 23496 */ 0240,0201,051,0303,01,0336,0110,0, + /* 23504 */ 0241,0202,01,0301,01,077,0120,0, + /* 23512 */ 0240,0202,01,0301,01,077,0110,0, + /* 23520 */ 0241,0202,05,0301,01,077,0120,0, + /* 23528 */ 0240,0202,05,0301,01,077,0110,0, + /* 23536 */ 0241,0202,011,0301,01,077,0120,0, + /* 23544 */ 0240,0202,011,0301,01,077,0110,0, + /* 23552 */ 0241,0202,021,0301,01,077,0120,0, + /* 23560 */ 0240,0202,021,0301,01,077,0110,0, + /* 23568 */ 0241,0202,025,0301,01,077,0120,0, + /* 23576 */ 0240,0202,025,0301,01,077,0110,0, + /* 23584 */ 0241,0202,031,0301,01,077,0120,0, + /* 23592 */ 0240,0202,031,0301,01,077,0110,0, + /* 23600 */ 0241,0202,041,0303,01,076,0120,0, + /* 23608 */ 0240,0202,041,0303,01,076,0110,0, + /* 23616 */ 0241,0202,045,0303,01,076,0120,0, + /* 23624 */ 0240,0202,045,0303,01,076,0110,0, + /* 23632 */ 0241,0202,051,0303,01,076,0120,0, + /* 23640 */ 0240,0202,051,0303,01,076,0110,0, + /* 23648 */ 0241,0202,041,0303,01,070,0120,0, + /* 23656 */ 0240,0202,041,0303,01,070,0110,0, + /* 23664 */ 0241,0202,045,0303,01,070,0120,0, + /* 23672 */ 0240,0202,045,0303,01,070,0110,0, + /* 23680 */ 0241,0202,051,0303,01,070,0120,0, + /* 23688 */ 0240,0202,051,0303,01,070,0110,0, + /* 23696 */ 0241,0202,01,0301,01,071,0120,0, + /* 23704 */ 0240,0202,01,0301,01,071,0110,0, + /* 23712 */ 0241,0202,05,0301,01,071,0120,0, + /* 23720 */ 0240,0202,05,0301,01,071,0110,0, + /* 23728 */ 0241,0202,011,0301,01,071,0120,0, + /* 23736 */ 0240,0202,011,0301,01,071,0110,0, + /* 23744 */ 0241,0202,021,0301,01,071,0120,0, + /* 23752 */ 0240,0202,021,0301,01,071,0110,0, + /* 23760 */ 0241,0202,025,0301,01,071,0120,0, + /* 23768 */ 0240,0202,025,0301,01,071,0110,0, + /* 23776 */ 0241,0202,031,0301,01,071,0120,0, + /* 23784 */ 0240,0202,031,0301,01,071,0110,0, + /* 23792 */ 0241,0201,041,0303,01,0352,0120,0, + /* 23800 */ 0240,0201,041,0303,01,0352,0110,0, + /* 23808 */ 0241,0201,045,0303,01,0352,0120,0, + /* 23816 */ 0240,0201,045,0303,01,0352,0110,0, + /* 23824 */ 0241,0201,051,0303,01,0352,0120,0, + /* 23832 */ 0240,0201,051,0303,01,0352,0110,0, + /* 23840 */ 0241,0201,041,0303,01,0332,0120,0, + /* 23848 */ 0240,0201,041,0303,01,0332,0110,0, + /* 23856 */ 0241,0201,045,0303,01,0332,0120,0, + /* 23864 */ 0240,0201,045,0303,01,0332,0110,0, + /* 23872 */ 0241,0201,051,0303,01,0332,0120,0, + /* 23880 */ 0240,0201,051,0303,01,0332,0110,0, + /* 23888 */ 0241,0202,01,0301,01,073,0120,0, + /* 23896 */ 0240,0202,01,0301,01,073,0110,0, + /* 23904 */ 0241,0202,05,0301,01,073,0120,0, + /* 23912 */ 0240,0202,05,0301,01,073,0110,0, + /* 23920 */ 0241,0202,011,0301,01,073,0120,0, + /* 23928 */ 0240,0202,011,0301,01,073,0110,0, + /* 23936 */ 0241,0202,021,0301,01,073,0120,0, + /* 23944 */ 0240,0202,021,0301,01,073,0110,0, + /* 23952 */ 0241,0202,025,0301,01,073,0120,0, + /* 23960 */ 0240,0202,025,0301,01,073,0110,0, + /* 23968 */ 0241,0202,031,0301,01,073,0120,0, + /* 23976 */ 0240,0202,031,0301,01,073,0110,0, + /* 23984 */ 0241,0202,041,0303,01,072,0120,0, + /* 23992 */ 0240,0202,041,0303,01,072,0110,0, + /* 24000 */ 0241,0202,045,0303,01,072,0120,0, + /* 24008 */ 0240,0202,045,0303,01,072,0110,0, + /* 24016 */ 0241,0202,051,0303,01,072,0120,0, + /* 24024 */ 0240,0202,051,0303,01,072,0110,0, + /* 24032 */ 0250,0202,02,0300,01,051,0110,0, + /* 24040 */ 0250,0202,06,0300,01,051,0110,0, + /* 24048 */ 0250,0202,012,0300,01,051,0110,0, + /* 24056 */ 0250,0202,02,0300,01,071,0110,0, + /* 24064 */ 0250,0202,06,0300,01,071,0110,0, + /* 24072 */ 0250,0202,012,0300,01,071,0110,0, + /* 24080 */ 0250,0202,02,0300,01,061,0101,0, + /* 24088 */ 0250,0202,06,0300,01,061,0101,0, + /* 24096 */ 0250,0202,012,0300,01,061,0101,0, + /* 24104 */ 0250,0202,02,0315,01,061,0101,0, + /* 24112 */ 0250,0202,06,0315,01,061,0101,0, + /* 24120 */ 0250,0202,012,0315,01,061,0101,0, + /* 24128 */ 0250,0202,02,0300,01,063,0101,0, + /* 24136 */ 0250,0202,06,0300,01,063,0101,0, + /* 24144 */ 0250,0202,012,0300,01,063,0101,0, + /* 24152 */ 0250,0202,02,0314,01,063,0101,0, + /* 24160 */ 0250,0202,06,0314,01,063,0101,0, + /* 24168 */ 0250,0202,012,0314,01,063,0101,0, + /* 24176 */ 0250,0202,02,0300,01,050,0110,0, + /* 24184 */ 0250,0202,06,0300,01,050,0110,0, + /* 24192 */ 0250,0202,012,0300,01,050,0110,0, + /* 24200 */ 0250,0202,02,0300,01,070,0110,0, + /* 24208 */ 0250,0202,06,0300,01,070,0110,0, + /* 24216 */ 0250,0202,012,0300,01,070,0110,0, + /* 24224 */ 0250,0202,022,0300,01,070,0110,0, + /* 24232 */ 0250,0202,026,0300,01,070,0110,0, + /* 24240 */ 0250,0202,032,0300,01,070,0110,0, + /* 24248 */ 0250,0202,022,0300,01,050,0110,0, + /* 24256 */ 0250,0202,026,0300,01,050,0110,0, + /* 24264 */ 0250,0202,032,0300,01,050,0110,0, + /* 24272 */ 0250,0202,022,0300,01,071,0110,0, + /* 24280 */ 0250,0202,026,0300,01,071,0110,0, + /* 24288 */ 0250,0202,032,0300,01,071,0110,0, + /* 24296 */ 0250,0202,02,0300,01,062,0101,0, + /* 24304 */ 0250,0202,06,0300,01,062,0101,0, + /* 24312 */ 0250,0202,012,0300,01,062,0101,0, + /* 24320 */ 0250,0202,02,0316,01,062,0101,0, + /* 24328 */ 0250,0202,06,0316,01,062,0101,0, + /* 24336 */ 0250,0202,012,0316,01,062,0101,0, + /* 24344 */ 0250,0202,02,0300,01,065,0101,0, + /* 24352 */ 0250,0202,06,0300,01,065,0101,0, + /* 24360 */ 0250,0202,012,0300,01,065,0101,0, + /* 24368 */ 0250,0202,02,0314,01,065,0101,0, + /* 24376 */ 0250,0202,06,0314,01,065,0101,0, + /* 24384 */ 0250,0202,012,0314,01,065,0101,0, + /* 24392 */ 0250,0202,02,0300,01,064,0101,0, + /* 24400 */ 0250,0202,06,0300,01,064,0101,0, + /* 24408 */ 0250,0202,012,0300,01,064,0101,0, + /* 24416 */ 0250,0202,02,0315,01,064,0101,0, + /* 24424 */ 0250,0202,06,0315,01,064,0101,0, + /* 24432 */ 0250,0202,012,0315,01,064,0101,0, + /* 24440 */ 0250,0202,02,0300,01,041,0101,0, + /* 24448 */ 0250,0202,06,0300,01,041,0101,0, + /* 24456 */ 0250,0202,012,0300,01,041,0101,0, + /* 24464 */ 0250,0202,02,0315,01,041,0101,0, + /* 24472 */ 0250,0202,06,0315,01,041,0101,0, + /* 24480 */ 0250,0202,012,0315,01,041,0101,0, + /* 24488 */ 0250,0202,02,0300,01,043,0101,0, + /* 24496 */ 0250,0202,06,0300,01,043,0101,0, + /* 24504 */ 0250,0202,012,0300,01,043,0101,0, + /* 24512 */ 0250,0202,02,0314,01,043,0101,0, + /* 24520 */ 0250,0202,06,0314,01,043,0101,0, + /* 24528 */ 0250,0202,012,0314,01,043,0101,0, + /* 24536 */ 0250,0202,02,0300,01,042,0101,0, + /* 24544 */ 0250,0202,06,0300,01,042,0101,0, + /* 24552 */ 0250,0202,012,0300,01,042,0101,0, + /* 24560 */ 0250,0202,02,0316,01,042,0101,0, + /* 24568 */ 0250,0202,06,0316,01,042,0101,0, + /* 24576 */ 0250,0202,012,0316,01,042,0101,0, + /* 24584 */ 0250,0202,02,0300,01,045,0101,0, + /* 24592 */ 0250,0202,06,0300,01,045,0101,0, + /* 24600 */ 0250,0202,012,0300,01,045,0101,0, + /* 24608 */ 0250,0202,02,0314,01,045,0101,0, + /* 24616 */ 0250,0202,06,0314,01,045,0101,0, + /* 24624 */ 0250,0202,012,0314,01,045,0101,0, + /* 24632 */ 0250,0202,02,0300,01,044,0101,0, + /* 24640 */ 0250,0202,06,0300,01,044,0101,0, + /* 24648 */ 0250,0202,012,0300,01,044,0101,0, + /* 24656 */ 0250,0202,02,0315,01,044,0101,0, + /* 24664 */ 0250,0202,06,0315,01,044,0101,0, + /* 24672 */ 0250,0202,012,0315,01,044,0101,0, + /* 24680 */ 0250,0202,02,0300,01,040,0101,0, + /* 24688 */ 0250,0202,06,0300,01,040,0101,0, + /* 24696 */ 0250,0202,012,0300,01,040,0101,0, + /* 24704 */ 0250,0202,02,0314,01,040,0101,0, + /* 24712 */ 0250,0202,06,0314,01,040,0101,0, + /* 24720 */ 0250,0202,012,0314,01,040,0101,0, + /* 24728 */ 0250,0202,041,0315,01,041,0110,0, + /* 24736 */ 0250,0202,045,0315,01,041,0110,0, + /* 24744 */ 0250,0202,051,0315,01,041,0110,0, + /* 24752 */ 0250,0202,041,0316,01,042,0110,0, + /* 24760 */ 0250,0202,045,0316,01,042,0110,0, + /* 24768 */ 0250,0202,051,0316,01,042,0110,0, + /* 24776 */ 0250,0202,041,0314,01,040,0110,0, + /* 24784 */ 0250,0202,045,0314,01,040,0110,0, + /* 24792 */ 0250,0202,051,0314,01,040,0110,0, + /* 24800 */ 0250,0202,01,0314,01,045,0110,0, + /* 24808 */ 0250,0202,05,0314,01,045,0110,0, + /* 24816 */ 0250,0202,011,0314,01,045,0110,0, + /* 24824 */ 0250,0202,041,0314,01,043,0110,0, + /* 24832 */ 0250,0202,045,0314,01,043,0110,0, + /* 24840 */ 0250,0202,051,0314,01,043,0110,0, + /* 24848 */ 0250,0202,041,0315,01,044,0110,0, + /* 24856 */ 0250,0202,045,0315,01,044,0110,0, + /* 24864 */ 0250,0202,051,0315,01,044,0110,0, + /* 24872 */ 0250,0202,02,0300,01,021,0101,0, + /* 24880 */ 0250,0202,06,0300,01,021,0101,0, + /* 24888 */ 0250,0202,012,0300,01,021,0101,0, + /* 24896 */ 0250,0202,02,0315,01,021,0101,0, + /* 24904 */ 0250,0202,06,0315,01,021,0101,0, + /* 24912 */ 0250,0202,012,0315,01,021,0101,0, + /* 24920 */ 0250,0202,02,0300,01,023,0101,0, + /* 24928 */ 0250,0202,06,0300,01,023,0101,0, + /* 24936 */ 0250,0202,012,0300,01,023,0101,0, + /* 24944 */ 0250,0202,02,0314,01,023,0101,0, + /* 24952 */ 0250,0202,06,0314,01,023,0101,0, + /* 24960 */ 0250,0202,012,0314,01,023,0101,0, + /* 24968 */ 0250,0202,02,0300,01,022,0101,0, + /* 24976 */ 0250,0202,06,0300,01,022,0101,0, + /* 24984 */ 0250,0202,012,0300,01,022,0101,0, + /* 24992 */ 0250,0202,02,0316,01,022,0101,0, + /* 25000 */ 0250,0202,06,0316,01,022,0101,0, + /* 25008 */ 0250,0202,012,0316,01,022,0101,0, + /* 25016 */ 0250,0202,02,0300,01,025,0101,0, + /* 25024 */ 0250,0202,06,0300,01,025,0101,0, + /* 25032 */ 0250,0202,012,0300,01,025,0101,0, + /* 25040 */ 0250,0202,02,0314,01,025,0101,0, + /* 25048 */ 0250,0202,06,0314,01,025,0101,0, + /* 25056 */ 0250,0202,012,0314,01,025,0101,0, + /* 25064 */ 0250,0202,02,0300,01,024,0101,0, + /* 25072 */ 0250,0202,06,0300,01,024,0101,0, + /* 25080 */ 0250,0202,012,0300,01,024,0101,0, + /* 25088 */ 0250,0202,02,0315,01,024,0101,0, + /* 25096 */ 0250,0202,06,0315,01,024,0101,0, + /* 25104 */ 0250,0202,012,0315,01,024,0101,0, + /* 25112 */ 0250,0202,02,0300,01,020,0101,0, + /* 25120 */ 0250,0202,06,0300,01,020,0101,0, + /* 25128 */ 0250,0202,012,0300,01,020,0101,0, + /* 25136 */ 0250,0202,02,0314,01,020,0101,0, + /* 25144 */ 0250,0202,06,0314,01,020,0101,0, + /* 25152 */ 0250,0202,012,0314,01,020,0101,0, + /* 25160 */ 0250,0202,022,0300,01,051,0110,0, + /* 25168 */ 0250,0202,026,0300,01,051,0110,0, + /* 25176 */ 0250,0202,032,0300,01,051,0110,0, + /* 25184 */ 0250,0202,02,0300,01,060,0101,0, + /* 25192 */ 0250,0202,06,0300,01,060,0101,0, + /* 25200 */ 0250,0202,012,0300,01,060,0101,0, + /* 25208 */ 0250,0202,02,0314,01,060,0101,0, + /* 25216 */ 0250,0202,06,0314,01,060,0101,0, + /* 25224 */ 0250,0202,012,0314,01,060,0101,0, + /* 25232 */ 0250,0202,041,0315,01,061,0110,0, + /* 25240 */ 0250,0202,045,0315,01,061,0110,0, + /* 25248 */ 0250,0202,051,0315,01,061,0110,0, + /* 25256 */ 0250,0202,041,0316,01,062,0110,0, + /* 25264 */ 0250,0202,045,0316,01,062,0110,0, + /* 25272 */ 0250,0202,051,0316,01,062,0110,0, + /* 25280 */ 0250,0202,041,0314,01,060,0110,0, + /* 25288 */ 0250,0202,045,0314,01,060,0110,0, + /* 25296 */ 0250,0202,051,0314,01,060,0110,0, + /* 25304 */ 0250,0202,01,0314,01,065,0110,0, + /* 25312 */ 0250,0202,05,0314,01,065,0110,0, + /* 25320 */ 0250,0202,011,0314,01,065,0110,0, + /* 25328 */ 0250,0202,041,0314,01,063,0110,0, + /* 25336 */ 0250,0202,045,0314,01,063,0110,0, + /* 25344 */ 0250,0202,051,0314,01,063,0110,0, + /* 25352 */ 0250,0202,041,0315,01,064,0110,0, + /* 25360 */ 0250,0202,045,0315,01,064,0110,0, + /* 25368 */ 0250,0202,051,0315,01,064,0110,0, + /* 25376 */ 0241,0202,021,0301,01,050,0120,0, + /* 25384 */ 0240,0202,021,0301,01,050,0110,0, + /* 25392 */ 0241,0202,025,0301,01,050,0120,0, + /* 25400 */ 0240,0202,025,0301,01,050,0110,0, + /* 25408 */ 0241,0202,031,0301,01,050,0120,0, + /* 25416 */ 0240,0202,031,0301,01,050,0110,0, + /* 25424 */ 0241,0202,041,0303,01,013,0120,0, + /* 25432 */ 0240,0202,041,0303,01,013,0110,0, + /* 25440 */ 0241,0202,045,0303,01,013,0120,0, + /* 25448 */ 0240,0202,045,0303,01,013,0110,0, + /* 25456 */ 0241,0202,051,0303,01,013,0120,0, + /* 25464 */ 0240,0202,051,0303,01,013,0110,0, + /* 25472 */ 0241,0201,041,0303,01,0344,0120,0, + /* 25480 */ 0240,0201,041,0303,01,0344,0110,0, + /* 25488 */ 0241,0201,045,0303,01,0344,0120,0, + /* 25496 */ 0240,0201,045,0303,01,0344,0110,0, + /* 25504 */ 0241,0201,051,0303,01,0344,0120,0, + /* 25512 */ 0240,0201,051,0303,01,0344,0110,0, + /* 25520 */ 0241,0201,041,0303,01,0345,0120,0, + /* 25528 */ 0240,0201,041,0303,01,0345,0110,0, + /* 25536 */ 0241,0201,045,0303,01,0345,0120,0, + /* 25544 */ 0240,0201,045,0303,01,0345,0110,0, + /* 25552 */ 0241,0201,051,0303,01,0345,0120,0, + /* 25560 */ 0240,0201,051,0303,01,0345,0110,0, + /* 25568 */ 0241,0202,01,0301,01,0100,0120,0, + /* 25576 */ 0240,0202,01,0301,01,0100,0110,0, + /* 25584 */ 0241,0202,05,0301,01,0100,0120,0, + /* 25592 */ 0240,0202,05,0301,01,0100,0110,0, + /* 25600 */ 0241,0202,011,0301,01,0100,0120,0, + /* 25608 */ 0240,0202,011,0301,01,0100,0110,0, + /* 25616 */ 0241,0202,021,0301,01,0100,0120,0, + /* 25624 */ 0240,0202,021,0301,01,0100,0110,0, + /* 25632 */ 0241,0202,025,0301,01,0100,0120,0, + /* 25640 */ 0240,0202,025,0301,01,0100,0110,0, + /* 25648 */ 0241,0202,031,0301,01,0100,0120,0, + /* 25656 */ 0240,0202,031,0301,01,0100,0110,0, + /* 25664 */ 0241,0201,041,0303,01,0325,0120,0, + /* 25672 */ 0240,0201,041,0303,01,0325,0110,0, + /* 25680 */ 0241,0201,045,0303,01,0325,0120,0, + /* 25688 */ 0240,0201,045,0303,01,0325,0110,0, + /* 25696 */ 0241,0201,051,0303,01,0325,0120,0, + /* 25704 */ 0240,0201,051,0303,01,0325,0110,0, + /* 25712 */ 0241,0202,021,0301,01,0203,0120,0, + /* 25720 */ 0240,0202,021,0301,01,0203,0110,0, + /* 25728 */ 0241,0202,025,0301,01,0203,0120,0, + /* 25736 */ 0240,0202,025,0301,01,0203,0110,0, + /* 25744 */ 0241,0202,031,0301,01,0203,0120,0, + /* 25752 */ 0240,0202,031,0301,01,0203,0110,0, + /* 25760 */ 0241,0201,021,0301,01,0364,0120,0, + /* 25768 */ 0240,0201,021,0301,01,0364,0110,0, + /* 25776 */ 0241,0201,025,0301,01,0364,0120,0, + /* 25784 */ 0240,0201,025,0301,01,0364,0110,0, + /* 25792 */ 0241,0201,031,0301,01,0364,0120,0, + /* 25800 */ 0240,0201,031,0301,01,0364,0110,0, + /* 25808 */ 0241,0201,01,0301,01,0353,0120,0, + /* 25816 */ 0240,0201,01,0301,01,0353,0110,0, + /* 25824 */ 0241,0201,05,0301,01,0353,0120,0, + /* 25832 */ 0240,0201,05,0301,01,0353,0110,0, + /* 25840 */ 0241,0201,011,0301,01,0353,0120,0, + /* 25848 */ 0240,0201,011,0301,01,0353,0110,0, + /* 25856 */ 0241,0201,021,0301,01,0353,0120,0, + /* 25864 */ 0240,0201,021,0301,01,0353,0110,0, + /* 25872 */ 0241,0201,025,0301,01,0353,0120,0, + /* 25880 */ 0240,0201,025,0301,01,0353,0110,0, + /* 25888 */ 0241,0201,031,0301,01,0353,0120,0, + /* 25896 */ 0240,0201,031,0301,01,0353,0110,0, + /* 25904 */ 0241,0202,01,0301,01,025,0120,0, + /* 25912 */ 0240,0202,01,0301,01,025,0110,0, + /* 25920 */ 0241,0202,05,0301,01,025,0120,0, + /* 25928 */ 0240,0202,05,0301,01,025,0110,0, + /* 25936 */ 0241,0202,011,0301,01,025,0120,0, + /* 25944 */ 0240,0202,011,0301,01,025,0110,0, + /* 25952 */ 0241,0202,021,0301,01,025,0120,0, + /* 25960 */ 0240,0202,021,0301,01,025,0110,0, + /* 25968 */ 0241,0202,025,0301,01,025,0120,0, + /* 25976 */ 0240,0202,025,0301,01,025,0110,0, + /* 25984 */ 0241,0202,031,0301,01,025,0120,0, + /* 25992 */ 0240,0202,031,0301,01,025,0110,0, + /* 26000 */ 0241,0202,01,0301,01,024,0120,0, + /* 26008 */ 0240,0202,01,0301,01,024,0110,0, + /* 26016 */ 0241,0202,05,0301,01,024,0120,0, + /* 26024 */ 0240,0202,05,0301,01,024,0110,0, + /* 26032 */ 0241,0202,011,0301,01,024,0120,0, + /* 26040 */ 0240,0202,011,0301,01,024,0110,0, + /* 26048 */ 0241,0202,021,0301,01,024,0120,0, + /* 26056 */ 0240,0202,021,0301,01,024,0110,0, + /* 26064 */ 0241,0202,025,0301,01,024,0120,0, + /* 26072 */ 0240,0202,025,0301,01,024,0110,0, + /* 26080 */ 0241,0202,031,0301,01,024,0120,0, + /* 26088 */ 0240,0202,031,0301,01,024,0110,0, + /* 26096 */ 0241,0201,041,0303,01,0366,0120,0, + /* 26104 */ 0240,0201,041,0303,01,0366,0110,0, + /* 26112 */ 0241,0201,045,0303,01,0366,0120,0, + /* 26120 */ 0240,0201,045,0303,01,0366,0110,0, + /* 26128 */ 0241,0201,051,0303,01,0366,0120,0, + /* 26136 */ 0240,0201,051,0303,01,0366,0110,0, + /* 26144 */ 0241,0202,041,0303,01,0,0120,0, + /* 26152 */ 0240,0202,041,0303,01,0,0110,0, + /* 26160 */ 0241,0202,045,0303,01,0,0120,0, + /* 26168 */ 0240,0202,045,0303,01,0,0110,0, + /* 26176 */ 0241,0202,051,0303,01,0,0120,0, + /* 26184 */ 0240,0202,051,0303,01,0,0110,0, + /* 26192 */ 0241,0201,01,0317,01,0362,0120,0, + /* 26200 */ 0240,0201,01,0317,01,0362,0110,0, + /* 26208 */ 0241,0201,05,0317,01,0362,0120,0, + /* 26216 */ 0240,0201,05,0317,01,0362,0110,0, + /* 26224 */ 0241,0201,011,0317,01,0362,0120,0, + /* 26232 */ 0240,0201,011,0317,01,0362,0110,0, + /* 26240 */ 0241,0201,021,0317,01,0363,0120,0, + /* 26248 */ 0240,0201,021,0317,01,0363,0110,0, + /* 26256 */ 0241,0201,025,0317,01,0363,0120,0, + /* 26264 */ 0240,0201,025,0317,01,0363,0110,0, + /* 26272 */ 0241,0201,031,0317,01,0363,0120,0, + /* 26280 */ 0240,0201,031,0317,01,0363,0110,0, + /* 26288 */ 0241,0202,01,0301,01,0107,0120,0, + /* 26296 */ 0240,0202,01,0301,01,0107,0110,0, + /* 26304 */ 0241,0202,05,0301,01,0107,0120,0, + /* 26312 */ 0240,0202,05,0301,01,0107,0110,0, + /* 26320 */ 0241,0202,011,0301,01,0107,0120,0, + /* 26328 */ 0240,0202,011,0301,01,0107,0110,0, + /* 26336 */ 0241,0202,021,0301,01,0107,0120,0, + /* 26344 */ 0240,0202,021,0301,01,0107,0110,0, + /* 26352 */ 0241,0202,025,0301,01,0107,0120,0, + /* 26360 */ 0240,0202,025,0301,01,0107,0110,0, + /* 26368 */ 0241,0202,031,0301,01,0107,0120,0, + /* 26376 */ 0240,0202,031,0301,01,0107,0110,0, + /* 26384 */ 0241,0202,021,0303,01,022,0120,0, + /* 26392 */ 0240,0202,021,0303,01,022,0110,0, + /* 26400 */ 0241,0202,025,0303,01,022,0120,0, + /* 26408 */ 0240,0202,025,0303,01,022,0110,0, + /* 26416 */ 0241,0202,031,0303,01,022,0120,0, + /* 26424 */ 0240,0202,031,0303,01,022,0110,0, + /* 26432 */ 0241,0201,041,0317,01,0361,0120,0, + /* 26440 */ 0240,0201,041,0317,01,0361,0110,0, + /* 26448 */ 0241,0201,045,0317,01,0361,0120,0, + /* 26456 */ 0240,0201,045,0317,01,0361,0110,0, + /* 26464 */ 0241,0201,051,0317,01,0361,0120,0, + /* 26472 */ 0240,0201,051,0317,01,0361,0110,0, + /* 26480 */ 0241,0201,01,0317,01,0342,0120,0, + /* 26488 */ 0240,0201,01,0317,01,0342,0110,0, + /* 26496 */ 0241,0201,05,0317,01,0342,0120,0, + /* 26504 */ 0240,0201,05,0317,01,0342,0110,0, + /* 26512 */ 0241,0201,011,0317,01,0342,0120,0, + /* 26520 */ 0240,0201,011,0317,01,0342,0110,0, + /* 26528 */ 0241,0201,021,0317,01,0342,0120,0, + /* 26536 */ 0240,0201,021,0317,01,0342,0110,0, + /* 26544 */ 0241,0201,025,0317,01,0342,0120,0, + /* 26552 */ 0240,0201,025,0317,01,0342,0110,0, + /* 26560 */ 0241,0201,031,0317,01,0342,0120,0, + /* 26568 */ 0240,0201,031,0317,01,0342,0110,0, + /* 26576 */ 0241,0202,01,0301,01,0106,0120,0, + /* 26584 */ 0240,0202,01,0301,01,0106,0110,0, + /* 26592 */ 0241,0202,05,0301,01,0106,0120,0, + /* 26600 */ 0240,0202,05,0301,01,0106,0110,0, + /* 26608 */ 0241,0202,011,0301,01,0106,0120,0, + /* 26616 */ 0240,0202,011,0301,01,0106,0110,0, + /* 26624 */ 0241,0202,021,0301,01,0106,0120,0, + /* 26632 */ 0240,0202,021,0301,01,0106,0110,0, + /* 26640 */ 0241,0202,025,0301,01,0106,0120,0, + /* 26648 */ 0240,0202,025,0301,01,0106,0110,0, + /* 26656 */ 0241,0202,031,0301,01,0106,0120,0, + /* 26664 */ 0240,0202,031,0301,01,0106,0110,0, + /* 26672 */ 0241,0202,021,0303,01,021,0120,0, + /* 26680 */ 0240,0202,021,0303,01,021,0110,0, + /* 26688 */ 0241,0202,025,0303,01,021,0120,0, + /* 26696 */ 0240,0202,025,0303,01,021,0110,0, + /* 26704 */ 0241,0202,031,0303,01,021,0120,0, + /* 26712 */ 0240,0202,031,0303,01,021,0110,0, + /* 26720 */ 0241,0201,041,0317,01,0341,0120,0, + /* 26728 */ 0240,0201,041,0317,01,0341,0110,0, + /* 26736 */ 0241,0201,045,0317,01,0341,0120,0, + /* 26744 */ 0240,0201,045,0317,01,0341,0110,0, + /* 26752 */ 0241,0201,051,0317,01,0341,0120,0, + /* 26760 */ 0240,0201,051,0317,01,0341,0110,0, + /* 26768 */ 0241,0201,01,0317,01,0322,0120,0, + /* 26776 */ 0240,0201,01,0317,01,0322,0110,0, + /* 26784 */ 0241,0201,05,0317,01,0322,0120,0, + /* 26792 */ 0240,0201,05,0317,01,0322,0110,0, + /* 26800 */ 0241,0201,011,0317,01,0322,0120,0, + /* 26808 */ 0240,0201,011,0317,01,0322,0110,0, + /* 26816 */ 0241,0201,021,0317,01,0323,0120,0, + /* 26824 */ 0240,0201,021,0317,01,0323,0110,0, + /* 26832 */ 0241,0201,025,0317,01,0323,0120,0, + /* 26840 */ 0240,0201,025,0317,01,0323,0110,0, + /* 26848 */ 0241,0201,031,0317,01,0323,0120,0, + /* 26856 */ 0240,0201,031,0317,01,0323,0110,0, + /* 26864 */ 0241,0202,01,0301,01,0105,0120,0, + /* 26872 */ 0240,0202,01,0301,01,0105,0110,0, + /* 26880 */ 0241,0202,05,0301,01,0105,0120,0, + /* 26888 */ 0240,0202,05,0301,01,0105,0110,0, + /* 26896 */ 0241,0202,011,0301,01,0105,0120,0, + /* 26904 */ 0240,0202,011,0301,01,0105,0110,0, + /* 26912 */ 0241,0202,021,0301,01,0105,0120,0, + /* 26920 */ 0240,0202,021,0301,01,0105,0110,0, + /* 26928 */ 0241,0202,025,0301,01,0105,0120,0, + /* 26936 */ 0240,0202,025,0301,01,0105,0110,0, + /* 26944 */ 0241,0202,031,0301,01,0105,0120,0, + /* 26952 */ 0240,0202,031,0301,01,0105,0110,0, + /* 26960 */ 0241,0202,021,0303,01,020,0120,0, + /* 26968 */ 0240,0202,021,0303,01,020,0110,0, + /* 26976 */ 0241,0202,025,0303,01,020,0120,0, + /* 26984 */ 0240,0202,025,0303,01,020,0110,0, + /* 26992 */ 0241,0202,031,0303,01,020,0120,0, + /* 27000 */ 0240,0202,031,0303,01,020,0110,0, + /* 27008 */ 0241,0201,041,0317,01,0321,0120,0, + /* 27016 */ 0240,0201,041,0317,01,0321,0110,0, + /* 27024 */ 0241,0201,045,0317,01,0321,0120,0, + /* 27032 */ 0240,0201,045,0317,01,0321,0110,0, + /* 27040 */ 0241,0201,051,0317,01,0321,0120,0, + /* 27048 */ 0240,0201,051,0317,01,0321,0110,0, + /* 27056 */ 0241,0201,041,0303,01,0370,0120,0, + /* 27064 */ 0240,0201,041,0303,01,0370,0110,0, + /* 27072 */ 0241,0201,045,0303,01,0370,0120,0, + /* 27080 */ 0240,0201,045,0303,01,0370,0110,0, + /* 27088 */ 0241,0201,051,0303,01,0370,0120,0, + /* 27096 */ 0240,0201,051,0303,01,0370,0110,0, + /* 27104 */ 0241,0201,01,0301,01,0372,0120,0, + /* 27112 */ 0240,0201,01,0301,01,0372,0110,0, + /* 27120 */ 0241,0201,05,0301,01,0372,0120,0, + /* 27128 */ 0240,0201,05,0301,01,0372,0110,0, + /* 27136 */ 0241,0201,011,0301,01,0372,0120,0, + /* 27144 */ 0240,0201,011,0301,01,0372,0110,0, + /* 27152 */ 0241,0201,021,0301,01,0373,0120,0, + /* 27160 */ 0240,0201,021,0301,01,0373,0110,0, + /* 27168 */ 0241,0201,025,0301,01,0373,0120,0, + /* 27176 */ 0240,0201,025,0301,01,0373,0110,0, + /* 27184 */ 0241,0201,031,0301,01,0373,0120,0, + /* 27192 */ 0240,0201,031,0301,01,0373,0110,0, + /* 27200 */ 0241,0201,041,0303,01,0350,0120,0, + /* 27208 */ 0240,0201,041,0303,01,0350,0110,0, + /* 27216 */ 0241,0201,045,0303,01,0350,0120,0, + /* 27224 */ 0240,0201,045,0303,01,0350,0110,0, + /* 27232 */ 0241,0201,051,0303,01,0350,0120,0, + /* 27240 */ 0240,0201,051,0303,01,0350,0110,0, + /* 27248 */ 0241,0201,041,0303,01,0351,0120,0, + /* 27256 */ 0240,0201,041,0303,01,0351,0110,0, + /* 27264 */ 0241,0201,045,0303,01,0351,0120,0, + /* 27272 */ 0240,0201,045,0303,01,0351,0110,0, + /* 27280 */ 0241,0201,051,0303,01,0351,0120,0, + /* 27288 */ 0240,0201,051,0303,01,0351,0110,0, + /* 27296 */ 0241,0201,041,0303,01,0330,0120,0, + /* 27304 */ 0240,0201,041,0303,01,0330,0110,0, + /* 27312 */ 0241,0201,045,0303,01,0330,0120,0, + /* 27320 */ 0240,0201,045,0303,01,0330,0110,0, + /* 27328 */ 0241,0201,051,0303,01,0330,0120,0, + /* 27336 */ 0240,0201,051,0303,01,0330,0110,0, + /* 27344 */ 0241,0201,041,0303,01,0331,0120,0, + /* 27352 */ 0240,0201,041,0303,01,0331,0110,0, + /* 27360 */ 0241,0201,045,0303,01,0331,0120,0, + /* 27368 */ 0240,0201,045,0303,01,0331,0110,0, + /* 27376 */ 0241,0201,051,0303,01,0331,0120,0, + /* 27384 */ 0240,0201,051,0303,01,0331,0110,0, + /* 27392 */ 0241,0201,041,0303,01,0371,0120,0, + /* 27400 */ 0240,0201,041,0303,01,0371,0110,0, + /* 27408 */ 0241,0201,045,0303,01,0371,0120,0, + /* 27416 */ 0240,0201,045,0303,01,0371,0110,0, + /* 27424 */ 0241,0201,051,0303,01,0371,0120,0, + /* 27432 */ 0240,0201,051,0303,01,0371,0110,0, + /* 27440 */ 0241,0202,01,0303,01,046,0120,0, + /* 27448 */ 0241,0202,05,0303,01,046,0120,0, + /* 27456 */ 0241,0202,011,0303,01,046,0120,0, + /* 27464 */ 0241,0202,01,0301,01,047,0120,0, + /* 27472 */ 0241,0202,05,0301,01,047,0120,0, + /* 27480 */ 0241,0202,011,0301,01,047,0120,0, + /* 27488 */ 0241,0202,021,0301,01,047,0120,0, + /* 27496 */ 0241,0202,025,0301,01,047,0120,0, + /* 27504 */ 0241,0202,031,0301,01,047,0120,0, + /* 27512 */ 0241,0202,021,0303,01,046,0120,0, + /* 27520 */ 0241,0202,025,0303,01,046,0120,0, + /* 27528 */ 0241,0202,031,0303,01,046,0120,0, + /* 27536 */ 0241,0202,02,0303,01,046,0120,0, + /* 27544 */ 0241,0202,06,0303,01,046,0120,0, + /* 27552 */ 0241,0202,012,0303,01,046,0120,0, + /* 27560 */ 0241,0202,02,0301,01,047,0120,0, + /* 27568 */ 0241,0202,06,0301,01,047,0120,0, + /* 27576 */ 0241,0202,012,0301,01,047,0120,0, + /* 27584 */ 0241,0202,022,0301,01,047,0120,0, + /* 27592 */ 0241,0202,026,0301,01,047,0120,0, + /* 27600 */ 0241,0202,032,0301,01,047,0120,0, + /* 27608 */ 0241,0202,022,0303,01,046,0120,0, + /* 27616 */ 0241,0202,026,0303,01,046,0120,0, + /* 27624 */ 0241,0202,032,0303,01,046,0120,0, + /* 27632 */ 0241,0201,041,0303,01,0150,0120,0, + /* 27640 */ 0240,0201,041,0303,01,0150,0110,0, + /* 27648 */ 0241,0201,045,0303,01,0150,0120,0, + /* 27656 */ 0240,0201,045,0303,01,0150,0110,0, + /* 27664 */ 0241,0201,051,0303,01,0150,0120,0, + /* 27672 */ 0240,0201,051,0303,01,0150,0110,0, + /* 27680 */ 0241,0201,01,0301,01,0152,0120,0, + /* 27688 */ 0240,0201,01,0301,01,0152,0110,0, + /* 27696 */ 0241,0201,05,0301,01,0152,0120,0, + /* 27704 */ 0240,0201,05,0301,01,0152,0110,0, + /* 27712 */ 0241,0201,011,0301,01,0152,0120,0, + /* 27720 */ 0240,0201,011,0301,01,0152,0110,0, + /* 27728 */ 0241,0201,021,0301,01,0155,0120,0, + /* 27736 */ 0240,0201,021,0301,01,0155,0110,0, + /* 27744 */ 0241,0201,025,0301,01,0155,0120,0, + /* 27752 */ 0240,0201,025,0301,01,0155,0110,0, + /* 27760 */ 0241,0201,031,0301,01,0155,0120,0, + /* 27768 */ 0240,0201,031,0301,01,0155,0110,0, + /* 27776 */ 0241,0201,041,0303,01,0151,0120,0, + /* 27784 */ 0240,0201,041,0303,01,0151,0110,0, + /* 27792 */ 0241,0201,045,0303,01,0151,0120,0, + /* 27800 */ 0240,0201,045,0303,01,0151,0110,0, + /* 27808 */ 0241,0201,051,0303,01,0151,0120,0, + /* 27816 */ 0240,0201,051,0303,01,0151,0110,0, + /* 27824 */ 0241,0201,041,0303,01,0140,0120,0, + /* 27832 */ 0240,0201,041,0303,01,0140,0110,0, + /* 27840 */ 0241,0201,045,0303,01,0140,0120,0, + /* 27848 */ 0240,0201,045,0303,01,0140,0110,0, + /* 27856 */ 0241,0201,051,0303,01,0140,0120,0, + /* 27864 */ 0240,0201,051,0303,01,0140,0110,0, + /* 27872 */ 0241,0201,01,0301,01,0142,0120,0, + /* 27880 */ 0240,0201,01,0301,01,0142,0110,0, + /* 27888 */ 0241,0201,05,0301,01,0142,0120,0, + /* 27896 */ 0240,0201,05,0301,01,0142,0110,0, + /* 27904 */ 0241,0201,011,0301,01,0142,0120,0, + /* 27912 */ 0240,0201,011,0301,01,0142,0110,0, + /* 27920 */ 0241,0201,021,0301,01,0154,0120,0, + /* 27928 */ 0240,0201,021,0301,01,0154,0110,0, + /* 27936 */ 0241,0201,025,0301,01,0154,0120,0, + /* 27944 */ 0240,0201,025,0301,01,0154,0110,0, + /* 27952 */ 0241,0201,031,0301,01,0154,0120,0, + /* 27960 */ 0240,0201,031,0301,01,0154,0110,0, + /* 27968 */ 0241,0201,041,0303,01,0141,0120,0, + /* 27976 */ 0240,0201,041,0303,01,0141,0110,0, + /* 27984 */ 0241,0201,045,0303,01,0141,0120,0, + /* 27992 */ 0240,0201,045,0303,01,0141,0110,0, + /* 28000 */ 0241,0201,051,0303,01,0141,0120,0, + /* 28008 */ 0240,0201,051,0303,01,0141,0110,0, + /* 28016 */ 0241,0201,01,0301,01,0357,0120,0, + /* 28024 */ 0240,0201,01,0301,01,0357,0110,0, + /* 28032 */ 0241,0201,05,0301,01,0357,0120,0, + /* 28040 */ 0240,0201,05,0301,01,0357,0110,0, + /* 28048 */ 0241,0201,011,0301,01,0357,0120,0, + /* 28056 */ 0240,0201,011,0301,01,0357,0110,0, + /* 28064 */ 0241,0201,021,0301,01,0357,0120,0, + /* 28072 */ 0240,0201,021,0301,01,0357,0110,0, + /* 28080 */ 0241,0201,025,0301,01,0357,0120,0, + /* 28088 */ 0240,0201,025,0301,01,0357,0110,0, + /* 28096 */ 0241,0201,031,0301,01,0357,0120,0, + /* 28104 */ 0240,0201,031,0301,01,0357,0110,0, + /* 28112 */ 0250,0202,021,0301,01,0114,0110,0, + /* 28120 */ 0250,0202,025,0301,01,0114,0110,0, + /* 28128 */ 0250,0202,031,0301,01,0114,0110,0, + /* 28136 */ 0250,0202,01,0301,01,0114,0110,0, + /* 28144 */ 0250,0202,05,0301,01,0114,0110,0, + /* 28152 */ 0250,0202,011,0301,01,0114,0110,0, + /* 28160 */ 0241,0202,021,0306,01,0115,0120,0, + /* 28168 */ 0240,0202,021,0306,01,0115,0110,0, + /* 28176 */ 0241,0202,01,0306,01,0115,0120,0, + /* 28184 */ 0240,0202,01,0306,01,0115,0110,0, + /* 28192 */ 0250,0202,031,0301,01,0312,0110,0, + /* 28200 */ 0250,0202,011,0301,01,0312,0110,0, + /* 28208 */ 0241,0202,021,0306,01,0313,0120,0, + /* 28216 */ 0240,0202,021,0306,01,0313,0110,0, + /* 28224 */ 0241,0202,01,0306,01,0313,0120,0, + /* 28232 */ 0240,0202,01,0306,01,0313,0110,0, + /* 28240 */ 0250,0202,021,0301,01,0116,0110,0, + /* 28248 */ 0250,0202,025,0301,01,0116,0110,0, + /* 28256 */ 0250,0202,031,0301,01,0116,0110,0, + /* 28264 */ 0250,0202,01,0301,01,0116,0110,0, + /* 28272 */ 0250,0202,05,0301,01,0116,0110,0, + /* 28280 */ 0250,0202,011,0301,01,0116,0110,0, + /* 28288 */ 0241,0202,021,0306,01,0117,0120,0, + /* 28296 */ 0240,0202,021,0306,01,0117,0110,0, + /* 28304 */ 0241,0202,01,0306,01,0117,0120,0, + /* 28312 */ 0240,0202,01,0306,01,0117,0110,0, + /* 28320 */ 0250,0202,031,0301,01,0314,0110,0, + /* 28328 */ 0250,0202,011,0301,01,0314,0110,0, + /* 28336 */ 0241,0202,021,0306,01,0315,0120,0, + /* 28344 */ 0240,0202,021,0306,01,0315,0110,0, + /* 28352 */ 0241,0202,01,0306,01,0315,0120,0, + /* 28360 */ 0240,0202,01,0306,01,0315,0110,0, + /* 28368 */ 0241,0202,021,0301,01,054,0120,0, + /* 28376 */ 0240,0202,021,0301,01,054,0110,0, + /* 28384 */ 0241,0202,025,0301,01,054,0120,0, + /* 28392 */ 0240,0202,025,0301,01,054,0110,0, + /* 28400 */ 0241,0202,031,0301,01,054,0120,0, + /* 28408 */ 0240,0202,031,0301,01,054,0110,0, + /* 28416 */ 0241,0202,01,0301,01,054,0120,0, + /* 28424 */ 0240,0202,01,0301,01,054,0110,0, + /* 28432 */ 0241,0202,05,0301,01,054,0120,0, + /* 28440 */ 0240,0202,05,0301,01,054,0110,0, + /* 28448 */ 0241,0202,011,0301,01,054,0120,0, + /* 28456 */ 0240,0202,011,0301,01,054,0110,0, + /* 28464 */ 0241,0202,021,0306,01,055,0120,0, + /* 28472 */ 0240,0202,021,0306,01,055,0110,0, + /* 28480 */ 0241,0202,01,0306,01,055,0120,0, + /* 28488 */ 0240,0202,01,0306,01,055,0110,0, + /* 28496 */ 0250,0201,021,0301,01,0121,0110,0, + /* 28504 */ 0250,0201,025,0301,01,0121,0110,0, + /* 28512 */ 0250,0201,031,0301,01,0121,0110,0, + /* 28520 */ 0250,0201,0,0301,01,0121,0110,0, + /* 28528 */ 0250,0201,04,0301,01,0121,0110,0, + /* 28536 */ 0250,0201,010,0301,01,0121,0110,0, + /* 28544 */ 0241,0201,023,0306,01,0121,0120,0, + /* 28552 */ 0240,0201,023,0306,01,0121,0110,0, + /* 28560 */ 0241,0201,02,0306,01,0121,0120,0, + /* 28568 */ 0240,0201,02,0306,01,0121,0110,0, + /* 28576 */ 0241,0201,021,0301,01,0134,0120,0, + /* 28584 */ 0240,0201,021,0301,01,0134,0110,0, + /* 28592 */ 0241,0201,025,0301,01,0134,0120,0, + /* 28600 */ 0240,0201,025,0301,01,0134,0110,0, + /* 28608 */ 0241,0201,031,0301,01,0134,0120,0, + /* 28616 */ 0240,0201,031,0301,01,0134,0110,0, + /* 28624 */ 0241,0201,0,0301,01,0134,0120,0, + /* 28632 */ 0240,0201,0,0301,01,0134,0110,0, + /* 28640 */ 0241,0201,04,0301,01,0134,0120,0, + /* 28648 */ 0240,0201,04,0301,01,0134,0110,0, + /* 28656 */ 0241,0201,010,0301,01,0134,0120,0, + /* 28664 */ 0240,0201,010,0301,01,0134,0110,0, + /* 28672 */ 0241,0201,023,0306,01,0134,0120,0, + /* 28680 */ 0240,0201,023,0306,01,0134,0110,0, + /* 28688 */ 0241,0201,02,0306,01,0134,0120,0, + /* 28696 */ 0240,0201,02,0306,01,0134,0110,0, + /* 28704 */ 0250,0201,021,0306,01,056,0110,0, + /* 28712 */ 0250,0201,0,0306,01,056,0110,0, + /* 28720 */ 0241,0201,021,0301,01,025,0120,0, + /* 28728 */ 0240,0201,021,0301,01,025,0110,0, + /* 28736 */ 0241,0201,025,0301,01,025,0120,0, + /* 28744 */ 0240,0201,025,0301,01,025,0110,0, + /* 28752 */ 0241,0201,031,0301,01,025,0120,0, + /* 28760 */ 0240,0201,031,0301,01,025,0110,0, + /* 28768 */ 0241,0201,0,0301,01,025,0120,0, + /* 28776 */ 0240,0201,0,0301,01,025,0110,0, + /* 28784 */ 0241,0201,04,0301,01,025,0120,0, + /* 28792 */ 0240,0201,04,0301,01,025,0110,0, + /* 28800 */ 0241,0201,010,0301,01,025,0120,0, + /* 28808 */ 0240,0201,010,0301,01,025,0110,0, + /* 28816 */ 0241,0201,021,0301,01,024,0120,0, + /* 28824 */ 0240,0201,021,0301,01,024,0110,0, + /* 28832 */ 0241,0201,025,0301,01,024,0120,0, + /* 28840 */ 0240,0201,025,0301,01,024,0110,0, + /* 28848 */ 0241,0201,031,0301,01,024,0120,0, + /* 28856 */ 0240,0201,031,0301,01,024,0110,0, + /* 28864 */ 0241,0201,0,0301,01,024,0120,0, + /* 28872 */ 0240,0201,0,0301,01,024,0110,0, + /* 28880 */ 0241,0201,04,0301,01,024,0120,0, + /* 28888 */ 0240,0201,04,0301,01,024,0110,0, + /* 28896 */ 0241,0201,010,0301,01,024,0120,0, + /* 28904 */ 0240,0201,010,0301,01,024,0110,0, + /* 28912 */ 0241,0201,021,0301,01,0127,0120,0, + /* 28920 */ 0240,0201,021,0301,01,0127,0110,0, + /* 28928 */ 0241,0201,025,0301,01,0127,0120,0, + /* 28936 */ 0240,0201,025,0301,01,0127,0110,0, + /* 28944 */ 0241,0201,031,0301,01,0127,0120,0, + /* 28952 */ 0240,0201,031,0301,01,0127,0110,0, + /* 28960 */ 0241,0201,0,0301,01,0127,0120,0, + /* 28968 */ 0240,0201,0,0301,01,0127,0110,0, + /* 28976 */ 0241,0201,04,0301,01,0127,0120,0, + /* 28984 */ 0240,0201,04,0301,01,0127,0110,0, + /* 28992 */ 0241,0201,010,0301,01,0127,0120,0, + /* 29000 */ 0240,0201,010,0301,01,0127,0110,0, + /* 29008 */ 0310,0361,03,017,070,0370,0110,0, + /* 29016 */ 0311,0361,03,017,070,0370,0110,0, + /* 29024 */ 0323,0313,0333,02,017,0256,0206,0, + /* 29032 */ 0361,03,017,072,0317,0110,022,0, + /* 29040 */ 0261,03,021,01,0317,0120,023,0, + /* 29048 */ 0260,03,021,01,0317,0110,022,0, + /* 29056 */ 0261,03,025,01,0317,0120,023,0, + /* 29064 */ 0260,03,025,01,0317,0110,022,0, + /* 29072 */ 0361,03,017,072,0316,0110,022,0, + /* 29080 */ 0261,03,021,01,0316,0120,023,0, + /* 29088 */ 0260,03,021,01,0316,0110,022,0, + /* 29096 */ 0261,03,025,01,0316,0120,023,0, + /* 29104 */ 0260,03,025,01,0316,0110,022,0, + /* 29112 */ 0241,0202,01,0303,01,0317,0120,0, + /* 29120 */ 0240,0202,01,0303,01,0317,0110,0, + /* 29128 */ 0241,0202,05,0303,01,0317,0120,0, + /* 29136 */ 0240,0202,05,0303,01,0317,0110,0, + /* 29144 */ 0241,0202,011,0303,01,0317,0120,0, + /* 29152 */ 0240,0202,011,0303,01,0317,0110,0, + /* 29160 */ 0250,0202,01,0304,01,0143,0101,0, + /* 29168 */ 0250,0202,05,0304,01,0143,0101,0, + /* 29176 */ 0250,0202,011,0304,01,0143,0101,0, + /* 29184 */ 0250,0202,01,0300,01,0143,0101,0, + /* 29192 */ 0250,0202,05,0300,01,0143,0101,0, + /* 29200 */ 0250,0202,011,0300,01,0143,0101,0, + /* 29208 */ 0250,0202,021,0305,01,0143,0101,0, + /* 29216 */ 0250,0202,025,0305,01,0143,0101,0, + /* 29224 */ 0250,0202,031,0305,01,0143,0101,0, + /* 29232 */ 0250,0202,021,0300,01,0143,0101,0, + /* 29240 */ 0250,0202,025,0300,01,0143,0101,0, + /* 29248 */ 0250,0202,031,0300,01,0143,0101,0, + /* 29256 */ 0250,0202,01,0304,01,0142,0110,0, + /* 29264 */ 0250,0202,05,0304,01,0142,0110,0, + /* 29272 */ 0250,0202,011,0304,01,0142,0110,0, + /* 29280 */ 0250,0202,021,0305,01,0142,0110,0, + /* 29288 */ 0250,0202,025,0305,01,0142,0110,0, + /* 29296 */ 0250,0202,031,0305,01,0142,0110,0, + /* 29304 */ 0241,0202,021,0303,01,0160,0120,0, + /* 29312 */ 0240,0202,021,0303,01,0160,0110,0, + /* 29320 */ 0241,0202,025,0303,01,0160,0120,0, + /* 29328 */ 0240,0202,025,0303,01,0160,0110,0, + /* 29336 */ 0241,0202,031,0303,01,0160,0120,0, + /* 29344 */ 0240,0202,031,0303,01,0160,0110,0, + /* 29352 */ 0241,0202,01,0301,01,0161,0120,0, + /* 29360 */ 0240,0202,01,0301,01,0161,0110,0, + /* 29368 */ 0241,0202,05,0301,01,0161,0120,0, + /* 29376 */ 0240,0202,05,0301,01,0161,0110,0, + /* 29384 */ 0241,0202,011,0301,01,0161,0120,0, + /* 29392 */ 0240,0202,011,0301,01,0161,0110,0, + /* 29400 */ 0241,0202,021,0301,01,0161,0120,0, + /* 29408 */ 0240,0202,021,0301,01,0161,0110,0, + /* 29416 */ 0241,0202,025,0301,01,0161,0120,0, + /* 29424 */ 0240,0202,025,0301,01,0161,0110,0, + /* 29432 */ 0241,0202,031,0301,01,0161,0120,0, + /* 29440 */ 0240,0202,031,0301,01,0161,0110,0, + /* 29448 */ 0241,0202,021,0303,01,0162,0120,0, + /* 29456 */ 0240,0202,021,0303,01,0162,0110,0, + /* 29464 */ 0241,0202,025,0303,01,0162,0120,0, + /* 29472 */ 0240,0202,025,0303,01,0162,0110,0, + /* 29480 */ 0241,0202,031,0303,01,0162,0120,0, + /* 29488 */ 0240,0202,031,0303,01,0162,0110,0, + /* 29496 */ 0241,0202,01,0301,01,0163,0120,0, + /* 29504 */ 0240,0202,01,0301,01,0163,0110,0, + /* 29512 */ 0241,0202,05,0301,01,0163,0120,0, + /* 29520 */ 0240,0202,05,0301,01,0163,0110,0, + /* 29528 */ 0241,0202,011,0301,01,0163,0120,0, + /* 29536 */ 0240,0202,011,0301,01,0163,0110,0, + /* 29544 */ 0241,0202,021,0301,01,0163,0120,0, + /* 29552 */ 0240,0202,021,0301,01,0163,0110,0, + /* 29560 */ 0241,0202,025,0301,01,0163,0120,0, + /* 29568 */ 0240,0202,025,0301,01,0163,0110,0, + /* 29576 */ 0241,0202,031,0301,01,0163,0120,0, + /* 29584 */ 0240,0202,031,0301,01,0163,0110,0, + /* 29592 */ 0241,0202,01,0301,01,0120,0120,0, + /* 29600 */ 0240,0202,01,0301,01,0120,0110,0, + /* 29608 */ 0241,0202,05,0301,01,0120,0120,0, + /* 29616 */ 0240,0202,05,0301,01,0120,0110,0, + /* 29624 */ 0241,0202,011,0301,01,0120,0120,0, + /* 29632 */ 0240,0202,011,0301,01,0120,0110,0, + /* 29640 */ 0241,0202,01,0301,01,0121,0120,0, + /* 29648 */ 0240,0202,01,0301,01,0121,0110,0, + /* 29656 */ 0241,0202,05,0301,01,0121,0120,0, + /* 29664 */ 0240,0202,05,0301,01,0121,0110,0, + /* 29672 */ 0241,0202,011,0301,01,0121,0120,0, + /* 29680 */ 0240,0202,011,0301,01,0121,0110,0, + /* 29688 */ 0241,0202,01,0301,01,0122,0120,0, + /* 29696 */ 0240,0202,01,0301,01,0122,0110,0, + /* 29704 */ 0241,0202,05,0301,01,0122,0120,0, + /* 29712 */ 0240,0202,05,0301,01,0122,0110,0, + /* 29720 */ 0241,0202,011,0301,01,0122,0120,0, + /* 29728 */ 0240,0202,011,0301,01,0122,0110,0, + /* 29736 */ 0241,0202,01,0301,01,0123,0120,0, + /* 29744 */ 0240,0202,01,0301,01,0123,0110,0, + /* 29752 */ 0241,0202,05,0301,01,0123,0120,0, + /* 29760 */ 0240,0202,05,0301,01,0123,0110,0, + /* 29768 */ 0241,0202,011,0301,01,0123,0120,0, + /* 29776 */ 0240,0202,011,0301,01,0123,0110,0, + /* 29784 */ 0250,0202,01,0303,01,0124,0110,0, + /* 29792 */ 0250,0202,05,0303,01,0124,0110,0, + /* 29800 */ 0250,0202,011,0303,01,0124,0110,0, + /* 29808 */ 0250,0202,021,0303,01,0124,0110,0, + /* 29816 */ 0250,0202,025,0303,01,0124,0110,0, + /* 29824 */ 0250,0202,031,0303,01,0124,0110,0, + /* 29832 */ 0250,0202,01,0301,01,0125,0110,0, + /* 29840 */ 0250,0202,05,0301,01,0125,0110,0, + /* 29848 */ 0250,0202,011,0301,01,0125,0110,0, + /* 29856 */ 0250,0202,021,0301,01,0125,0110,0, + /* 29864 */ 0250,0202,025,0301,01,0125,0110,0, + /* 29872 */ 0250,0202,031,0301,01,0125,0110,0, + /* 29880 */ 0241,0202,01,0303,01,0217,0120,0, + /* 29888 */ 0241,0202,05,0303,01,0217,0120,0, + /* 29896 */ 0241,0202,011,0303,01,0217,0120,0, + /* 29904 */ 0241,0202,013,0317,01,0232,0120,0, + /* 29912 */ 0241,0202,013,0317,01,0252,0120,0, + /* 29920 */ 0241,0202,03,0317,01,0233,0120,0, + /* 29928 */ 0241,0202,03,0317,01,0253,0120,0, + /* 29936 */ 0241,0202,013,0317,01,0123,0120,0, + /* 29944 */ 0241,0202,013,0317,01,0122,0120,0, + /* 29952 */ 0321,0361,03,017,070,0365,0101,0, + /* 29960 */ 0324,0361,03,017,070,0365,0101,0, + /* 29968 */ 0310,0332,03,017,070,0370,0110,0, + /* 29976 */ 0311,0332,03,017,070,0370,0110,0, + /* 29984 */ 0313,0332,03,017,070,0370,0110,0, + /* 29992 */ 0310,0333,03,017,070,0370,0110,0, + /* 30000 */ 0311,0333,03,017,070,0370,0110,0, + /* 30008 */ 0313,0333,03,017,070,0370,0110,0, + /* 30016 */ 0241,0202,03,0301,01,0162,0120,0, + /* 30024 */ 0240,0202,03,0301,01,0162,0110,0, + /* 30032 */ 0241,0202,07,0301,01,0162,0120,0, + /* 30040 */ 0240,0202,07,0301,01,0162,0110,0, + /* 30048 */ 0241,0202,013,0301,01,0162,0120,0, + /* 30056 */ 0240,0202,013,0301,01,0162,0110,0, + /* 30064 */ 0241,0202,02,0301,01,0162,0120,0, + /* 30072 */ 0240,0202,02,0301,01,0162,0110,0, + /* 30080 */ 0241,0202,06,0301,01,0162,0120,0, + /* 30088 */ 0240,0202,06,0301,01,0162,0110,0, + /* 30096 */ 0241,0202,012,0301,01,0162,0120,0, + /* 30104 */ 0240,0202,012,0301,01,0162,0110,0, + /* 30112 */ 0241,0202,02,0301,01,0122,0120,0, + /* 30120 */ 0240,0202,02,0301,01,0122,0110,0, + /* 30128 */ 0241,0202,06,0301,01,0122,0120,0, + /* 30136 */ 0240,0202,06,0301,01,0122,0110,0, + /* 30144 */ 0241,0202,012,0301,01,0122,0120,0, + /* 30152 */ 0240,0202,012,0301,01,0122,0110,0, + /* 30160 */ 0241,0202,03,0301,01,0150,0120,0, + /* 30168 */ 0241,0202,07,0301,01,0150,0120,0, + /* 30176 */ 0241,0202,013,0301,01,0150,0120,0, + /* 30184 */ 0270,02,03,01,0111,0171,0300,0, + /* 30192 */ 0241,0205,0,0301,01,0130,0120,0, + /* 30200 */ 0240,0205,0,0301,01,0130,0110,0, + /* 30208 */ 0241,0205,04,0301,01,0130,0120,0, + /* 30216 */ 0240,0205,04,0301,01,0130,0110,0, + /* 30224 */ 0241,0205,010,0301,01,0130,0120,0, + /* 30232 */ 0240,0205,010,0301,01,0130,0110,0, + /* 30240 */ 0241,0205,02,0306,01,0130,0120,0, + /* 30248 */ 0240,0205,02,0306,01,0130,0110,0, + /* 30256 */ 0250,0205,0,0301,01,057,0110,0, + /* 30264 */ 0250,0205,0,0301,01,0133,0110,0, + /* 30272 */ 0250,0205,04,0301,01,0133,0110,0, + /* 30280 */ 0250,0205,010,0301,01,0133,0110,0, + /* 30288 */ 0250,0205,021,0301,01,0132,0110,0, + /* 30296 */ 0250,0205,025,0301,01,0132,0110,0, + /* 30304 */ 0250,0205,031,0301,01,0132,0110,0, + /* 30312 */ 0250,0205,01,0302,01,0133,0110,0, + /* 30320 */ 0250,0205,05,0302,01,0133,0110,0, + /* 30328 */ 0250,0205,011,0302,01,0133,0110,0, + /* 30336 */ 0250,0205,0,0315,01,0132,0110,0, + /* 30344 */ 0250,0205,04,0315,01,0132,0110,0, + /* 30352 */ 0250,0205,010,0315,01,0132,0110,0, + /* 30360 */ 0250,0206,01,0302,01,023,0110,0, + /* 30368 */ 0250,0206,05,0302,01,023,0110,0, + /* 30376 */ 0250,0206,011,0302,01,023,0110,0, + /* 30384 */ 0250,0205,01,0315,01,0173,0110,0, + /* 30392 */ 0250,0205,05,0315,01,0173,0110,0, + /* 30400 */ 0250,0205,011,0315,01,0173,0110,0, + /* 30408 */ 0250,0205,0,0302,01,0171,0110,0, + /* 30416 */ 0250,0205,04,0302,01,0171,0110,0, + /* 30424 */ 0250,0205,010,0302,01,0171,0110,0, + /* 30432 */ 0250,0205,01,0315,01,0171,0110,0, + /* 30440 */ 0250,0205,05,0315,01,0171,0110,0, + /* 30448 */ 0250,0205,011,0315,01,0171,0110,0, + /* 30456 */ 0250,0205,0,0301,01,0175,0110,0, + /* 30464 */ 0250,0205,04,0301,01,0175,0110,0, + /* 30472 */ 0250,0205,010,0301,01,0175,0110,0, + /* 30480 */ 0250,0205,01,0301,01,0175,0110,0, + /* 30488 */ 0250,0205,05,0301,01,0175,0110,0, + /* 30496 */ 0250,0205,011,0301,01,0175,0110,0, + /* 30504 */ 0250,0205,01,0301,01,035,0110,0, + /* 30512 */ 0250,0205,05,0301,01,035,0110,0, + /* 30520 */ 0250,0205,011,0301,01,035,0110,0, + /* 30528 */ 0250,0205,020,0301,01,0133,0110,0, + /* 30536 */ 0250,0205,024,0301,01,0133,0110,0, + /* 30544 */ 0250,0205,030,0301,01,0133,0110,0, + /* 30552 */ 0241,0205,023,0306,01,0132,0120,0, + /* 30560 */ 0240,0205,023,0306,01,0132,0110,0, + /* 30568 */ 0241,0205,02,0306,01,0132,0120,0, + /* 30576 */ 0240,0205,02,0306,01,0132,0110,0, + /* 30584 */ 0250,0205,02,0306,01,055,0110,0, + /* 30592 */ 0250,0205,022,0306,01,055,0110,0, + /* 30600 */ 0241,0206,0,0306,01,023,0120,0, + /* 30608 */ 0240,0206,0,0306,01,023,0110,0, + /* 30616 */ 0250,0205,02,0306,01,0171,0110,0, + /* 30624 */ 0250,0205,022,0306,01,0171,0110,0, + /* 30632 */ 0241,0205,02,0306,01,052,0120,0, + /* 30640 */ 0240,0205,02,0306,01,052,0110,0, + /* 30648 */ 0241,0205,022,0306,01,052,0120,0, + /* 30656 */ 0240,0205,022,0306,01,052,0110,0, + /* 30664 */ 0241,0205,040,0306,01,035,0120,0, + /* 30672 */ 0240,0205,040,0306,01,035,0110,0, + /* 30680 */ 0250,0205,02,0302,01,0133,0110,0, + /* 30688 */ 0250,0205,06,0302,01,0133,0110,0, + /* 30696 */ 0250,0205,012,0302,01,0133,0110,0, + /* 30704 */ 0250,0205,01,0306,01,0172,0110,0, + /* 30712 */ 0250,0205,05,0306,01,0172,0110,0, + /* 30720 */ 0250,0205,011,0306,01,0172,0110,0, + /* 30728 */ 0250,0205,0,0302,01,0170,0110,0, + /* 30736 */ 0250,0205,04,0302,01,0170,0110,0, + /* 30744 */ 0250,0205,010,0302,01,0170,0110,0, + /* 30752 */ 0250,0205,01,0306,01,0170,0110,0, + /* 30760 */ 0250,0205,05,0306,01,0170,0110,0, + /* 30768 */ 0250,0205,011,0306,01,0170,0110,0, + /* 30776 */ 0250,0205,0,0301,01,0174,0110,0, + /* 30784 */ 0250,0205,04,0301,01,0174,0110,0, + /* 30792 */ 0250,0205,010,0301,01,0174,0110,0, + /* 30800 */ 0250,0205,01,0301,01,0174,0110,0, + /* 30808 */ 0250,0205,05,0301,01,0174,0110,0, + /* 30816 */ 0250,0205,011,0301,01,0174,0110,0, + /* 30824 */ 0250,0205,02,0306,01,054,0110,0, + /* 30832 */ 0250,0205,022,0306,01,054,0110,0, + /* 30840 */ 0250,0205,02,0306,01,0170,0110,0, + /* 30848 */ 0250,0205,022,0306,01,0170,0110,0, + /* 30856 */ 0250,0205,03,0301,01,0172,0110,0, + /* 30864 */ 0250,0205,07,0301,01,0172,0110,0, + /* 30872 */ 0250,0205,013,0301,01,0172,0110,0, + /* 30880 */ 0250,0205,023,0301,01,0172,0110,0, + /* 30888 */ 0250,0205,027,0301,01,0172,0110,0, + /* 30896 */ 0250,0205,033,0301,01,0172,0110,0, + /* 30904 */ 0241,0205,02,0306,01,0173,0120,0, + /* 30912 */ 0241,0205,022,0306,01,0173,0120,0, + /* 30920 */ 0250,0205,03,0301,01,0175,0110,0, + /* 30928 */ 0250,0205,07,0301,01,0175,0110,0, + /* 30936 */ 0250,0205,013,0301,01,0175,0110,0, + /* 30944 */ 0250,0205,02,0301,01,0175,0110,0, + /* 30952 */ 0250,0205,06,0301,01,0175,0110,0, + /* 30960 */ 0250,0205,012,0301,01,0175,0110,0, + /* 30968 */ 0241,0205,040,0301,01,0136,0120,0, + /* 30976 */ 0240,0205,040,0301,01,0136,0110,0, + /* 30984 */ 0241,0205,044,0301,01,0136,0120,0, + /* 30992 */ 0240,0205,044,0301,01,0136,0110,0, + /* 31000 */ 0241,0205,050,0301,01,0136,0120,0, + /* 31008 */ 0240,0205,050,0301,01,0136,0110,0, + /* 31016 */ 0241,0205,042,0306,01,0136,0120,0, + /* 31024 */ 0240,0205,042,0306,01,0136,0110,0, + /* 31032 */ 0241,0206,03,0301,01,0126,0120,0, + /* 31040 */ 0240,0206,03,0301,01,0126,0110,0, + /* 31048 */ 0241,0206,07,0301,01,0126,0120,0, + /* 31056 */ 0240,0206,07,0301,01,0126,0110,0, + /* 31064 */ 0241,0206,013,0301,01,0126,0120,0, + /* 31072 */ 0240,0206,013,0301,01,0126,0110,0, + /* 31080 */ 0241,0206,02,0301,01,0126,0120,0, + /* 31088 */ 0240,0206,02,0301,01,0126,0110,0, + /* 31096 */ 0241,0206,06,0301,01,0126,0120,0, + /* 31104 */ 0240,0206,06,0301,01,0126,0110,0, + /* 31112 */ 0241,0206,012,0301,01,0126,0120,0, + /* 31120 */ 0240,0206,012,0301,01,0126,0110,0, + /* 31128 */ 0241,0206,03,0306,01,0127,0120,0, + /* 31136 */ 0240,0206,03,0306,01,0127,0110,0, + /* 31144 */ 0241,0206,02,0306,01,0127,0120,0, + /* 31152 */ 0240,0206,02,0306,01,0127,0110,0, + /* 31160 */ 0241,0206,03,0301,01,0326,0120,0, + /* 31168 */ 0240,0206,03,0301,01,0326,0110,0, + /* 31176 */ 0241,0206,07,0301,01,0326,0120,0, + /* 31184 */ 0240,0206,07,0301,01,0326,0110,0, + /* 31192 */ 0241,0206,013,0301,01,0326,0120,0, + /* 31200 */ 0240,0206,013,0301,01,0326,0110,0, + /* 31208 */ 0241,0206,02,0301,01,0326,0120,0, + /* 31216 */ 0240,0206,02,0301,01,0326,0110,0, + /* 31224 */ 0241,0206,06,0301,01,0326,0120,0, + /* 31232 */ 0240,0206,06,0301,01,0326,0110,0, + /* 31240 */ 0241,0206,012,0301,01,0326,0120,0, + /* 31248 */ 0240,0206,012,0301,01,0326,0110,0, + /* 31256 */ 0241,0206,03,0306,01,0327,0120,0, + /* 31264 */ 0240,0206,03,0306,01,0327,0110,0, + /* 31272 */ 0241,0206,02,0306,01,0327,0120,0, + /* 31280 */ 0240,0206,02,0306,01,0327,0110,0, + /* 31288 */ 0241,0206,01,0301,01,0226,0120,0, + /* 31296 */ 0240,0206,01,0301,01,0226,0110,0, + /* 31304 */ 0241,0206,05,0301,01,0226,0120,0, + /* 31312 */ 0240,0206,05,0301,01,0226,0110,0, + /* 31320 */ 0241,0206,011,0301,01,0226,0120,0, + /* 31328 */ 0240,0206,011,0301,01,0226,0110,0, + /* 31336 */ 0241,0206,01,0301,01,0246,0120,0, + /* 31344 */ 0240,0206,01,0301,01,0246,0110,0, + /* 31352 */ 0241,0206,05,0301,01,0246,0120,0, + /* 31360 */ 0240,0206,05,0301,01,0246,0110,0, + /* 31368 */ 0241,0206,011,0301,01,0246,0120,0, + /* 31376 */ 0240,0206,011,0301,01,0246,0110,0, + /* 31384 */ 0241,0206,01,0301,01,0266,0120,0, + /* 31392 */ 0240,0206,01,0301,01,0266,0110,0, + /* 31400 */ 0241,0206,05,0301,01,0266,0120,0, + /* 31408 */ 0240,0206,05,0301,01,0266,0110,0, + /* 31416 */ 0241,0206,011,0301,01,0266,0120,0, + /* 31424 */ 0240,0206,011,0301,01,0266,0110,0, + /* 31432 */ 0241,0206,01,0301,01,0227,0120,0, + /* 31440 */ 0240,0206,01,0301,01,0227,0110,0, + /* 31448 */ 0241,0206,05,0301,01,0227,0120,0, + /* 31456 */ 0240,0206,05,0301,01,0227,0110,0, + /* 31464 */ 0241,0206,011,0301,01,0227,0120,0, + /* 31472 */ 0240,0206,011,0301,01,0227,0110,0, + /* 31480 */ 0241,0206,01,0301,01,0247,0120,0, + /* 31488 */ 0240,0206,01,0301,01,0247,0110,0, + /* 31496 */ 0241,0206,05,0301,01,0247,0120,0, + /* 31504 */ 0240,0206,05,0301,01,0247,0110,0, + /* 31512 */ 0241,0206,011,0301,01,0247,0120,0, + /* 31520 */ 0240,0206,011,0301,01,0247,0110,0, + /* 31528 */ 0241,0206,01,0301,01,0267,0120,0, + /* 31536 */ 0240,0206,01,0301,01,0267,0110,0, + /* 31544 */ 0241,0206,05,0301,01,0267,0120,0, + /* 31552 */ 0240,0206,05,0301,01,0267,0110,0, + /* 31560 */ 0241,0206,011,0301,01,0267,0120,0, + /* 31568 */ 0240,0206,011,0301,01,0267,0110,0, + /* 31576 */ 0241,0206,01,0301,01,0230,0120,0, + /* 31584 */ 0240,0206,01,0301,01,0230,0110,0, + /* 31592 */ 0241,0206,05,0301,01,0230,0120,0, + /* 31600 */ 0240,0206,05,0301,01,0230,0110,0, + /* 31608 */ 0241,0206,011,0301,01,0230,0120,0, + /* 31616 */ 0240,0206,011,0301,01,0230,0110,0, + /* 31624 */ 0241,0206,01,0301,01,0250,0120,0, + /* 31632 */ 0240,0206,01,0301,01,0250,0110,0, + /* 31640 */ 0241,0206,05,0301,01,0250,0120,0, + /* 31648 */ 0240,0206,05,0301,01,0250,0110,0, + /* 31656 */ 0241,0206,011,0301,01,0250,0120,0, + /* 31664 */ 0240,0206,011,0301,01,0250,0110,0, + /* 31672 */ 0241,0206,01,0301,01,0270,0120,0, + /* 31680 */ 0240,0206,01,0301,01,0270,0110,0, + /* 31688 */ 0241,0206,05,0301,01,0270,0120,0, + /* 31696 */ 0240,0206,05,0301,01,0270,0110,0, + /* 31704 */ 0241,0206,011,0301,01,0270,0120,0, + /* 31712 */ 0240,0206,011,0301,01,0270,0110,0, + /* 31720 */ 0241,0206,01,0301,01,0234,0120,0, + /* 31728 */ 0240,0206,01,0301,01,0234,0110,0, + /* 31736 */ 0241,0206,05,0301,01,0234,0120,0, + /* 31744 */ 0240,0206,05,0301,01,0234,0110,0, + /* 31752 */ 0241,0206,011,0301,01,0234,0120,0, + /* 31760 */ 0240,0206,011,0301,01,0234,0110,0, + /* 31768 */ 0241,0206,01,0301,01,0254,0120,0, + /* 31776 */ 0240,0206,01,0301,01,0254,0110,0, + /* 31784 */ 0241,0206,05,0301,01,0254,0120,0, + /* 31792 */ 0240,0206,05,0301,01,0254,0110,0, + /* 31800 */ 0241,0206,011,0301,01,0254,0120,0, + /* 31808 */ 0240,0206,011,0301,01,0254,0110,0, + /* 31816 */ 0241,0206,01,0301,01,0274,0120,0, + /* 31824 */ 0240,0206,01,0301,01,0274,0110,0, + /* 31832 */ 0241,0206,05,0301,01,0274,0120,0, + /* 31840 */ 0240,0206,05,0301,01,0274,0110,0, + /* 31848 */ 0241,0206,011,0301,01,0274,0120,0, + /* 31856 */ 0240,0206,011,0301,01,0274,0110,0, + /* 31864 */ 0241,0206,01,0306,01,0231,0120,0, + /* 31872 */ 0240,0206,01,0306,01,0231,0110,0, + /* 31880 */ 0241,0206,01,0306,01,0251,0120,0, + /* 31888 */ 0240,0206,01,0306,01,0251,0110,0, + /* 31896 */ 0241,0206,01,0306,01,0271,0120,0, + /* 31904 */ 0240,0206,01,0306,01,0271,0110,0, + /* 31912 */ 0241,0206,01,0306,01,0235,0120,0, + /* 31920 */ 0240,0206,01,0306,01,0235,0110,0, + /* 31928 */ 0241,0206,01,0306,01,0255,0120,0, + /* 31936 */ 0240,0206,01,0306,01,0255,0110,0, + /* 31944 */ 0241,0206,01,0306,01,0275,0120,0, + /* 31952 */ 0240,0206,01,0306,01,0275,0110,0, + /* 31960 */ 0241,0206,01,0301,01,0232,0120,0, + /* 31968 */ 0240,0206,01,0301,01,0232,0110,0, + /* 31976 */ 0241,0206,05,0301,01,0232,0120,0, + /* 31984 */ 0240,0206,05,0301,01,0232,0110,0, + /* 31992 */ 0241,0206,011,0301,01,0232,0120,0, + /* 32000 */ 0240,0206,011,0301,01,0232,0110,0, + /* 32008 */ 0241,0206,01,0301,01,0252,0120,0, + /* 32016 */ 0240,0206,01,0301,01,0252,0110,0, + /* 32024 */ 0241,0206,05,0301,01,0252,0120,0, + /* 32032 */ 0240,0206,05,0301,01,0252,0110,0, + /* 32040 */ 0241,0206,011,0301,01,0252,0120,0, + /* 32048 */ 0240,0206,011,0301,01,0252,0110,0, + /* 32056 */ 0241,0206,01,0301,01,0272,0120,0, + /* 32064 */ 0240,0206,01,0301,01,0272,0110,0, + /* 32072 */ 0241,0206,05,0301,01,0272,0120,0, + /* 32080 */ 0240,0206,05,0301,01,0272,0110,0, + /* 32088 */ 0241,0206,011,0301,01,0272,0120,0, + /* 32096 */ 0240,0206,011,0301,01,0272,0110,0, + /* 32104 */ 0241,0206,01,0301,01,0236,0120,0, + /* 32112 */ 0240,0206,01,0301,01,0236,0110,0, + /* 32120 */ 0241,0206,05,0301,01,0236,0120,0, + /* 32128 */ 0240,0206,05,0301,01,0236,0110,0, + /* 32136 */ 0241,0206,011,0301,01,0236,0120,0, + /* 32144 */ 0240,0206,011,0301,01,0236,0110,0, + /* 32152 */ 0241,0206,01,0301,01,0256,0120,0, + /* 32160 */ 0240,0206,01,0301,01,0256,0110,0, + /* 32168 */ 0241,0206,05,0301,01,0256,0120,0, + /* 32176 */ 0240,0206,05,0301,01,0256,0110,0, + /* 32184 */ 0241,0206,011,0301,01,0256,0120,0, + /* 32192 */ 0240,0206,011,0301,01,0256,0110,0, + /* 32200 */ 0241,0206,01,0301,01,0276,0120,0, + /* 32208 */ 0240,0206,01,0301,01,0276,0110,0, + /* 32216 */ 0241,0206,05,0301,01,0276,0120,0, + /* 32224 */ 0240,0206,05,0301,01,0276,0110,0, + /* 32232 */ 0241,0206,011,0301,01,0276,0120,0, + /* 32240 */ 0240,0206,011,0301,01,0276,0110,0, + /* 32248 */ 0241,0206,01,0306,01,0233,0120,0, + /* 32256 */ 0240,0206,01,0306,01,0233,0110,0, + /* 32264 */ 0241,0206,01,0306,01,0253,0120,0, + /* 32272 */ 0240,0206,01,0306,01,0253,0110,0, + /* 32280 */ 0241,0206,01,0306,01,0273,0120,0, + /* 32288 */ 0240,0206,01,0306,01,0273,0110,0, + /* 32296 */ 0241,0206,01,0306,01,0237,0120,0, + /* 32304 */ 0240,0206,01,0306,01,0237,0110,0, + /* 32312 */ 0241,0206,01,0306,01,0257,0120,0, + /* 32320 */ 0240,0206,01,0306,01,0257,0110,0, + /* 32328 */ 0241,0206,01,0306,01,0277,0120,0, + /* 32336 */ 0240,0206,01,0306,01,0277,0110,0, + /* 32344 */ 0250,0206,01,0301,01,0102,0110,0, + /* 32352 */ 0250,0206,05,0301,01,0102,0110,0, + /* 32360 */ 0250,0206,011,0301,01,0102,0110,0, + /* 32368 */ 0250,0206,01,0306,01,0103,0110,0, + /* 32376 */ 0250,0205,0,0301,01,0137,0110,0, + /* 32384 */ 0250,0205,04,0301,01,0137,0110,0, + /* 32392 */ 0250,0205,010,0301,01,0137,0110,0, + /* 32400 */ 0250,0205,02,0306,01,0137,0110,0, + /* 32408 */ 0250,0205,0,0301,01,0135,0110,0, + /* 32416 */ 0250,0205,04,0301,01,0135,0110,0, + /* 32424 */ 0250,0205,010,0301,01,0135,0110,0, + /* 32432 */ 0250,0205,02,0306,01,0135,0110,0, + /* 32440 */ 0250,0205,02,0306,01,020,0110,0, + /* 32448 */ 0250,0205,02,0306,01,021,0101,0, + /* 32456 */ 0241,0205,02,0300,01,020,0120,0, + /* 32464 */ 0240,0205,02,0300,01,020,0110,0, + /* 32472 */ 0241,0205,02,0300,01,021,0120,0, + /* 32480 */ 0240,0205,02,0300,01,021,0110,0, + /* 32488 */ 0250,0205,041,0306,01,0156,0110,0, + /* 32496 */ 0250,0205,041,0306,01,0176,0101,0, + /* 32504 */ 0241,0205,0,0301,01,0131,0120,0, + /* 32512 */ 0240,0205,0,0301,01,0131,0110,0, + /* 32520 */ 0241,0205,04,0301,01,0131,0120,0, + /* 32528 */ 0240,0205,04,0301,01,0131,0110,0, + /* 32536 */ 0241,0205,010,0301,01,0131,0120,0, + /* 32544 */ 0240,0205,010,0301,01,0131,0110,0, + /* 32552 */ 0241,0205,02,0306,01,0131,0120,0, + /* 32560 */ 0240,0205,02,0306,01,0131,0110,0, + /* 32568 */ 0241,0206,01,0301,01,0114,0120,0, + /* 32576 */ 0240,0206,01,0301,01,0114,0110,0, + /* 32584 */ 0241,0206,05,0301,01,0114,0120,0, + /* 32592 */ 0240,0206,05,0301,01,0114,0110,0, + /* 32600 */ 0241,0206,011,0301,01,0114,0120,0, + /* 32608 */ 0240,0206,011,0301,01,0114,0110,0, + /* 32616 */ 0241,0206,01,0306,01,0115,0120,0, + /* 32624 */ 0240,0206,01,0306,01,0115,0110,0, + /* 32632 */ 0241,0206,01,0301,01,054,0120,0, + /* 32640 */ 0240,0206,01,0301,01,054,0110,0, + /* 32648 */ 0241,0206,05,0301,01,054,0120,0, + /* 32656 */ 0240,0206,05,0301,01,054,0110,0, + /* 32664 */ 0241,0206,011,0301,01,054,0120,0, + /* 32672 */ 0240,0206,011,0301,01,054,0110,0, + /* 32680 */ 0241,0206,01,0306,01,055,0120,0, + /* 32688 */ 0240,0206,01,0306,01,055,0110,0, + /* 32696 */ 0250,0205,0,0301,01,0121,0110,0, + /* 32704 */ 0250,0205,04,0301,01,0121,0110,0, + /* 32712 */ 0250,0205,010,0301,01,0121,0110,0, + /* 32720 */ 0241,0205,02,0306,01,0121,0120,0, + /* 32728 */ 0240,0205,02,0306,01,0121,0110,0, + /* 32736 */ 0241,0205,0,0301,01,0134,0120,0, + /* 32744 */ 0240,0205,0,0301,01,0134,0110,0, + /* 32752 */ 0241,0205,04,0301,01,0134,0120,0, + /* 32760 */ 0240,0205,04,0301,01,0134,0110,0, + /* 32768 */ 0241,0205,010,0301,01,0134,0120,0, + /* 32776 */ 0240,0205,010,0301,01,0134,0110,0, + /* 32784 */ 0241,0205,02,0306,01,0134,0120,0, + /* 32792 */ 0240,0205,02,0306,01,0134,0110,0, + /* 32800 */ 0250,0205,0,0306,01,056,0110,0, + /* 32808 */ 0317,0360,03,017,070,0374,0101,0, + /* 32816 */ 0324,0360,03,017,070,0374,0101,0, + /* 32824 */ 0317,0361,03,017,070,0374,0101,0, + /* 32832 */ 0324,0361,03,017,070,0374,0101,0, + /* 32840 */ 0317,0333,03,017,070,0374,0101,0, + /* 32848 */ 0324,0333,03,017,070,0374,0101,0, + /* 32856 */ 0333,04,017,072,0360,0300,020,0, + /* 32864 */ 0273,0320,01,0203,0202,0275,0, + /* 32871 */ 0273,0321,01,0203,0202,0275,0, + /* 32878 */ 0273,0324,01,0203,0202,0275,0, + /* 32885 */ 0273,0320,01,0201,0202,031,0, + /* 32892 */ 0273,0321,01,0201,0202,041,0, + /* 32899 */ 0273,0324,01,0201,0202,0255,0, + /* 32906 */ 0273,0320,01,0203,0200,0275,0, + /* 32913 */ 0273,0321,01,0203,0200,0275,0, + /* 32920 */ 0273,0324,01,0203,0200,0275,0, + /* 32927 */ 0273,0320,01,0201,0200,031,0, + /* 32934 */ 0273,0321,01,0201,0200,041,0, + /* 32941 */ 0273,0324,01,0201,0200,0255,0, + /* 32948 */ 0273,0320,01,0203,0204,0275,0, + /* 32955 */ 0273,0321,01,0203,0204,0275,0, + /* 32962 */ 0273,0324,01,0203,0204,0275,0, + /* 32969 */ 0273,0320,01,0201,0204,031,0, + /* 32976 */ 0273,0321,01,0201,0204,041,0, + /* 32983 */ 0273,0324,01,0201,0204,0255,0, + /* 32990 */ 0320,0326,02,017,0274,0110,0, + /* 32997 */ 0321,0326,02,017,0274,0110,0, + /* 33004 */ 0324,0326,02,017,0274,0110,0, + /* 33011 */ 0320,0326,02,017,0275,0110,0, + /* 33018 */ 0321,0326,02,017,0275,0110,0, + /* 33025 */ 0324,0326,02,017,0275,0110,0, + /* 33032 */ 0320,02,017,0272,0204,025,0, + /* 33039 */ 0321,02,017,0272,0204,025,0, + /* 33046 */ 0324,02,017,0272,0204,025,0, + /* 33053 */ 0273,0320,02,017,0273,0101,0, + /* 33060 */ 0273,0321,02,017,0273,0101,0, + /* 33067 */ 0273,0324,02,017,0273,0101,0, + /* 33074 */ 0273,0320,02,017,0263,0101,0, + /* 33081 */ 0273,0321,02,017,0263,0101,0, + /* 33088 */ 0273,0324,02,017,0263,0101,0, + /* 33095 */ 0273,0320,02,017,0253,0101,0, + /* 33102 */ 0273,0321,02,017,0253,0101,0, + /* 33109 */ 0273,0324,02,017,0253,0101,0, + /* 33116 */ 0273,0320,02,017,0261,0101,0, + /* 33123 */ 0273,0321,02,017,0261,0101,0, + /* 33130 */ 0273,0324,02,017,0261,0101,0, + /* 33137 */ 0273,0317,02,017,0307,0201,0, + /* 33144 */ 0361,03,017,070,0202,0110,0, + /* 33151 */ 0323,0313,03,017,01,0337,0, + /* 33158 */ 0320,0323,02,017,02,0110,0, + /* 33165 */ 0321,0323,02,017,02,0110,0, + /* 33172 */ 0320,0323,02,017,03,0110,0, + /* 33179 */ 0321,0323,02,017,03,0110,0, + /* 33186 */ 0271,0320,01,0307,0200,031,0, + /* 33193 */ 0271,0321,01,0307,0200,041,0, + /* 33200 */ 0271,0324,01,0307,0200,0255,0, + /* 33207 */ 0360,0324,02,017,0156,0110,0, + /* 33214 */ 0360,0324,02,017,0176,0101,0, + /* 33221 */ 0273,0320,01,0203,0201,0275,0, + /* 33228 */ 0273,0321,01,0203,0201,0275,0, + /* 33235 */ 0273,0324,01,0203,0201,0275,0, + /* 33242 */ 0273,0320,01,0201,0201,031,0, + /* 33249 */ 0273,0321,01,0201,0201,041,0, + /* 33256 */ 0273,0324,01,0201,0201,0255,0, + /* 33263 */ 0360,0323,02,017,0153,0110,0, + /* 33270 */ 0360,0323,02,017,0143,0110,0, + /* 33277 */ 0360,0323,02,017,0147,0110,0, + /* 33284 */ 0360,0323,02,017,0374,0110,0, + /* 33291 */ 0360,0323,02,017,0376,0110,0, + /* 33298 */ 0360,0323,02,017,0354,0110,0, + /* 33305 */ 0360,0323,02,017,0355,0110,0, + /* 33312 */ 0360,0323,02,017,0334,0110,0, + /* 33319 */ 0360,0323,02,017,0335,0110,0, + /* 33326 */ 0360,0323,02,017,0375,0110,0, + /* 33333 */ 0360,0323,02,017,0333,0110,0, + /* 33340 */ 0360,0323,02,017,0337,0110,0, + /* 33347 */ 0360,0323,02,017,0164,0110,0, + /* 33354 */ 0360,0323,02,017,0166,0110,0, + /* 33361 */ 0360,0323,02,017,0165,0110,0, + /* 33368 */ 0360,0323,02,017,0144,0110,0, + /* 33375 */ 0360,0323,02,017,0146,0110,0, + /* 33382 */ 0360,0323,02,017,0145,0110,0, + /* 33389 */ 0360,0323,02,017,0365,0110,0, + /* 33396 */ 0360,0323,02,017,0345,0110,0, + /* 33403 */ 0360,0323,02,017,0325,0110,0, + /* 33410 */ 0360,0323,02,017,0353,0110,0, + /* 33417 */ 0360,0323,02,017,0362,0110,0, + /* 33424 */ 0360,02,017,0162,0206,025,0, + /* 33431 */ 0360,0323,02,017,0363,0110,0, + /* 33438 */ 0360,02,017,0163,0206,025,0, + /* 33445 */ 0360,0323,02,017,0361,0110,0, + /* 33452 */ 0360,02,017,0161,0206,025,0, + /* 33459 */ 0360,0323,02,017,0342,0110,0, + /* 33466 */ 0360,02,017,0162,0204,025,0, + /* 33473 */ 0360,0323,02,017,0341,0110,0, + /* 33480 */ 0360,02,017,0161,0204,025,0, + /* 33487 */ 0360,0323,02,017,0322,0110,0, + /* 33494 */ 0360,02,017,0162,0202,025,0, + /* 33501 */ 0360,0323,02,017,0323,0110,0, + /* 33508 */ 0360,02,017,0163,0202,025,0, + /* 33515 */ 0360,0323,02,017,0321,0110,0, + /* 33522 */ 0360,02,017,0161,0202,025,0, + /* 33529 */ 0360,0323,02,017,0370,0110,0, + /* 33536 */ 0360,0323,02,017,0372,0110,0, + /* 33543 */ 0360,0323,02,017,0350,0110,0, + /* 33550 */ 0360,0323,02,017,0351,0110,0, + /* 33557 */ 0360,0323,02,017,0330,0110,0, + /* 33564 */ 0360,0323,02,017,0331,0110,0, + /* 33571 */ 0360,0323,02,017,0371,0110,0, + /* 33578 */ 0360,0323,02,017,0150,0110,0, + /* 33585 */ 0360,0323,02,017,0152,0110,0, + /* 33592 */ 0360,0323,02,017,0151,0110,0, + /* 33599 */ 0360,0323,02,017,0140,0110,0, + /* 33606 */ 0360,0323,02,017,0142,0110,0, + /* 33613 */ 0360,0323,02,017,0141,0110,0, + /* 33620 */ 0360,0323,02,017,0357,0110,0, + /* 33627 */ 0273,0320,01,0203,0203,0275,0, + /* 33634 */ 0273,0321,01,0203,0203,0275,0, + /* 33641 */ 0273,0324,01,0203,0203,0275,0, + /* 33648 */ 0273,0320,01,0201,0203,031,0, + /* 33655 */ 0273,0321,01,0201,0203,041,0, + /* 33662 */ 0273,0324,01,0201,0203,0255,0, + /* 33669 */ 0320,02,017,0244,0101,026,0, + /* 33676 */ 0321,02,017,0244,0101,026,0, + /* 33683 */ 0324,02,017,0244,0101,026,0, + /* 33690 */ 0320,02,017,0254,0101,026,0, + /* 33697 */ 0321,02,017,0254,0101,026,0, + /* 33704 */ 0324,02,017,0254,0101,026,0, + /* 33711 */ 0273,0320,01,0203,0205,0275,0, + /* 33718 */ 0273,0321,01,0203,0205,0275,0, + /* 33725 */ 0273,0324,01,0203,0205,0275,0, + /* 33732 */ 0273,0320,01,0201,0205,031,0, + /* 33739 */ 0273,0321,01,0201,0205,041,0, + /* 33746 */ 0273,0324,01,0201,0205,0255,0, + /* 33753 */ 0360,0320,02,017,021,0101,0, + /* 33760 */ 0360,0321,02,017,021,0101,0, + /* 33767 */ 0360,0320,02,017,023,0110,0, + /* 33774 */ 0360,0321,02,017,023,0110,0, + /* 33781 */ 0273,0320,02,017,0301,0101,0, + /* 33788 */ 0273,0321,02,017,0301,0101,0, + /* 33795 */ 0273,0324,02,017,0301,0101,0, + /* 33802 */ 0273,0320,01,0203,0206,0275,0, + /* 33809 */ 0273,0321,01,0203,0206,0275,0, + /* 33816 */ 0273,0324,01,0203,0206,0275,0, + /* 33823 */ 0273,0320,01,0201,0206,031,0, + /* 33830 */ 0273,0321,01,0201,0206,041,0, + /* 33837 */ 0273,0324,01,0201,0206,0255,0, + /* 33844 */ 01,0166,0373,01,0351,064,0, + /* 33851 */ 01,0162,0373,01,0351,064,0, + /* 33858 */ 01,0163,0373,01,0351,064,0, + /* 33865 */ 01,0167,0373,01,0351,064,0, + /* 33872 */ 01,0165,0373,01,0351,064,0, + /* 33879 */ 01,0176,0373,01,0351,064,0, + /* 33886 */ 01,0174,0373,01,0351,064,0, + /* 33893 */ 01,0175,0373,01,0351,064,0, + /* 33900 */ 01,0177,0373,01,0351,064,0, + /* 33907 */ 01,0164,0373,01,0351,064,0, + /* 33914 */ 01,0160,0373,01,0351,064,0, + /* 33921 */ 01,0172,0373,01,0351,064,0, + /* 33928 */ 01,0170,0373,01,0351,064,0, + /* 33935 */ 01,0161,0373,01,0351,064,0, + /* 33942 */ 01,0173,0373,01,0351,064,0, + /* 33949 */ 01,0171,0373,01,0351,064,0, + /* 33956 */ 0360,02,017,0302,0110,026,0, + /* 33963 */ 0333,02,017,0302,0110,026,0, + /* 33970 */ 0324,0333,02,017,052,0110,0, + /* 33977 */ 0324,0333,02,017,055,0110,0, + /* 33984 */ 0324,0333,02,017,054,0110,0, + /* 33991 */ 0360,0324,02,017,0120,0110,0, + /* 33998 */ 0360,02,017,0306,0110,026,0, + /* 34005 */ 0324,0360,02,017,0256,0201,0, + /* 34012 */ 0324,0360,02,017,0256,0200,0, + /* 34019 */ 0324,0360,02,017,0256,0204,0, + /* 34026 */ 0324,0360,02,017,0307,0204,0, + /* 34033 */ 0324,0360,02,017,0256,0206,0, + /* 34040 */ 0324,0360,02,017,0307,0205,0, + /* 34047 */ 0324,0360,02,017,0256,0205,0, + /* 34054 */ 0324,0360,02,017,0307,0203,0, + /* 34061 */ 0360,0323,02,017,0340,0110,0, + /* 34068 */ 0360,0323,02,017,0343,0110,0, + /* 34075 */ 0360,02,017,0305,0110,026,0, + /* 34082 */ 0360,02,017,0304,0110,026,0, + /* 34089 */ 0360,0323,02,017,0356,0110,0, + /* 34096 */ 0360,0323,02,017,0336,0110,0, + /* 34103 */ 0360,0323,02,017,0352,0110,0, + /* 34110 */ 0360,0323,02,017,0332,0110,0, + /* 34117 */ 0360,0323,02,017,0344,0110,0, + /* 34124 */ 0360,0323,02,017,0366,0110,0, + /* 34131 */ 0324,0360,02,017,0303,0101,0, + /* 34138 */ 0361,0317,02,017,0176,0101,0, + /* 34145 */ 0361,0317,02,017,0156,0110,0, + /* 34152 */ 0361,0324,02,017,0156,0110,0, + /* 34159 */ 0361,0324,02,017,0176,0101,0, + /* 34166 */ 0361,02,017,0305,0110,026,0, + /* 34173 */ 0361,02,017,0304,0110,026,0, + /* 34180 */ 0360,0323,02,017,0364,0110,0, + /* 34187 */ 0361,02,017,0160,0110,022,0, + /* 34194 */ 0333,02,017,0160,0110,022,0, + /* 34201 */ 0332,02,017,0160,0110,022,0, + /* 34208 */ 0361,02,017,0163,0207,025,0, + /* 34215 */ 0361,02,017,0161,0206,025,0, + /* 34222 */ 0361,02,017,0162,0206,025,0, + /* 34229 */ 0361,02,017,0163,0206,025,0, + /* 34236 */ 0361,02,017,0161,0204,025,0, + /* 34243 */ 0361,02,017,0162,0204,025,0, + /* 34250 */ 0361,02,017,0163,0203,025,0, + /* 34257 */ 0361,02,017,0161,0202,025,0, + /* 34264 */ 0361,02,017,0162,0202,025,0, + /* 34271 */ 0361,02,017,0163,0202,025,0, + /* 34278 */ 0360,0323,02,017,0373,0110,0, + /* 34285 */ 0361,02,017,0302,0110,026,0, + /* 34292 */ 0332,02,017,0302,0110,026,0, + /* 34299 */ 0317,0332,02,017,055,0110,0, + /* 34306 */ 0324,0332,02,017,055,0110,0, + /* 34313 */ 0317,0332,02,017,052,0110,0, + /* 34320 */ 0324,0332,02,017,052,0110,0, + /* 34327 */ 0317,0332,02,017,054,0110,0, + /* 34334 */ 0324,0332,02,017,054,0110,0, + /* 34341 */ 0361,0324,02,017,0120,0110,0, + /* 34348 */ 0361,02,017,0306,0110,026,0, + /* 34355 */ 0323,0360,02,017,0170,0101,0, + /* 34362 */ 0323,0360,02,017,0171,0110,0, + /* 34369 */ 0360,03,017,070,034,0110,0, + /* 34376 */ 0361,03,017,070,034,0110,0, + /* 34383 */ 0360,03,017,070,035,0110,0, + /* 34390 */ 0361,03,017,070,035,0110,0, + /* 34397 */ 0360,03,017,070,036,0110,0, + /* 34404 */ 0361,03,017,070,036,0110,0, + /* 34411 */ 0360,03,017,070,01,0110,0, + /* 34418 */ 0361,03,017,070,01,0110,0, + /* 34425 */ 0360,03,017,070,02,0110,0, + /* 34432 */ 0361,03,017,070,02,0110,0, + /* 34439 */ 0360,03,017,070,03,0110,0, + /* 34446 */ 0361,03,017,070,03,0110,0, + /* 34453 */ 0360,03,017,070,05,0110,0, + /* 34460 */ 0361,03,017,070,05,0110,0, + /* 34467 */ 0360,03,017,070,06,0110,0, + /* 34474 */ 0361,03,017,070,06,0110,0, + /* 34481 */ 0360,03,017,070,07,0110,0, + /* 34488 */ 0361,03,017,070,07,0110,0, + /* 34495 */ 0360,03,017,070,04,0110,0, + /* 34502 */ 0361,03,017,070,04,0110,0, + /* 34509 */ 0360,03,017,070,013,0110,0, + /* 34516 */ 0361,03,017,070,013,0110,0, + /* 34523 */ 0360,03,017,070,0,0110,0, + /* 34530 */ 0361,03,017,070,0,0110,0, + /* 34537 */ 0360,03,017,070,010,0110,0, + /* 34544 */ 0361,03,017,070,010,0110,0, + /* 34551 */ 0360,03,017,070,011,0110,0, + /* 34558 */ 0361,03,017,070,011,0110,0, + /* 34565 */ 0360,03,017,070,012,0110,0, + /* 34572 */ 0361,03,017,070,012,0110,0, + /* 34579 */ 0320,0333,02,017,0275,0110,0, + /* 34586 */ 0321,0333,02,017,0275,0110,0, + /* 34593 */ 0324,0333,02,017,0275,0110,0, + /* 34600 */ 0361,03,017,070,025,0110,0, + /* 34607 */ 0361,03,017,070,024,0110,0, + /* 34614 */ 0361,03,017,070,052,0110,0, + /* 34621 */ 0361,03,017,070,053,0110,0, + /* 34628 */ 0361,03,017,070,020,0110,0, + /* 34635 */ 0361,03,017,070,051,0110,0, + /* 34642 */ 0361,03,017,070,0101,0110,0, + /* 34649 */ 0361,03,017,070,074,0110,0, + /* 34656 */ 0361,03,017,070,075,0110,0, + /* 34663 */ 0361,03,017,070,077,0110,0, + /* 34670 */ 0361,03,017,070,076,0110,0, + /* 34677 */ 0361,03,017,070,070,0110,0, + /* 34684 */ 0361,03,017,070,071,0110,0, + /* 34691 */ 0361,03,017,070,073,0110,0, + /* 34698 */ 0361,03,017,070,072,0110,0, + /* 34705 */ 0361,03,017,070,040,0110,0, + /* 34712 */ 0361,03,017,070,041,0110,0, + /* 34719 */ 0361,03,017,070,042,0110,0, + /* 34726 */ 0361,03,017,070,043,0110,0, + /* 34733 */ 0361,03,017,070,044,0110,0, + /* 34740 */ 0361,03,017,070,045,0110,0, + /* 34747 */ 0361,03,017,070,060,0110,0, + /* 34754 */ 0361,03,017,070,061,0110,0, + /* 34761 */ 0361,03,017,070,062,0110,0, + /* 34768 */ 0361,03,017,070,063,0110,0, + /* 34775 */ 0361,03,017,070,064,0110,0, + /* 34782 */ 0361,03,017,070,065,0110,0, + /* 34789 */ 0361,03,017,070,050,0110,0, + /* 34796 */ 0361,03,017,070,0100,0110,0, + /* 34803 */ 0361,03,017,070,027,0110,0, + /* 34810 */ 0361,03,017,070,067,0110,0, + /* 34817 */ 0320,0333,02,017,0270,0110,0, + /* 34824 */ 0321,0333,02,017,0270,0110,0, + /* 34831 */ 0324,0333,02,017,0270,0110,0, + /* 34838 */ 0361,03,017,070,0334,0110,0, + /* 34845 */ 0361,03,017,070,0335,0110,0, + /* 34852 */ 0361,03,017,070,0336,0110,0, + /* 34859 */ 0361,03,017,070,0337,0110,0, + /* 34866 */ 0361,03,017,070,0333,0110,0, + /* 34873 */ 0261,02,041,01,0334,0120,0, + /* 34880 */ 0260,02,041,01,0334,0110,0, + /* 34887 */ 0261,02,041,01,0335,0120,0, + /* 34894 */ 0260,02,041,01,0335,0110,0, + /* 34901 */ 0261,02,041,01,0336,0120,0, + /* 34908 */ 0260,02,041,01,0336,0110,0, + /* 34915 */ 0261,02,041,01,0337,0120,0, + /* 34922 */ 0260,02,041,01,0337,0110,0, + /* 34929 */ 0270,02,041,01,0333,0110,0, + /* 34936 */ 0261,02,045,01,0334,0120,0, + /* 34943 */ 0260,02,045,01,0334,0110,0, + /* 34950 */ 0261,02,045,01,0335,0120,0, + /* 34957 */ 0260,02,045,01,0335,0110,0, + /* 34964 */ 0261,02,045,01,0336,0120,0, + /* 34971 */ 0260,02,045,01,0336,0110,0, + /* 34978 */ 0261,02,045,01,0337,0120,0, + /* 34985 */ 0260,02,045,01,0337,0110,0, + /* 34992 */ 0261,01,041,01,0130,0120,0, + /* 34999 */ 0260,01,041,01,0130,0110,0, + /* 35006 */ 0261,01,045,01,0130,0120,0, + /* 35013 */ 0260,01,045,01,0130,0110,0, + /* 35020 */ 0261,01,040,01,0130,0120,0, + /* 35027 */ 0260,01,040,01,0130,0110,0, + /* 35034 */ 0261,01,044,01,0130,0120,0, + /* 35041 */ 0260,01,044,01,0130,0110,0, + /* 35048 */ 0261,01,053,01,0130,0120,0, + /* 35055 */ 0260,01,053,01,0130,0110,0, + /* 35062 */ 0261,01,052,01,0130,0120,0, + /* 35069 */ 0260,01,052,01,0130,0110,0, + /* 35076 */ 0261,01,041,01,0320,0120,0, + /* 35083 */ 0260,01,041,01,0320,0110,0, + /* 35090 */ 0261,01,045,01,0320,0120,0, + /* 35097 */ 0260,01,045,01,0320,0110,0, + /* 35104 */ 0261,01,043,01,0320,0120,0, + /* 35111 */ 0260,01,043,01,0320,0110,0, + /* 35118 */ 0261,01,047,01,0320,0120,0, + /* 35125 */ 0260,01,047,01,0320,0110,0, + /* 35132 */ 0261,01,041,01,0124,0120,0, + /* 35139 */ 0260,01,041,01,0124,0110,0, + /* 35146 */ 0261,01,045,01,0124,0120,0, + /* 35153 */ 0260,01,045,01,0124,0110,0, + /* 35160 */ 0261,01,040,01,0124,0120,0, + /* 35167 */ 0260,01,040,01,0124,0110,0, + /* 35174 */ 0261,01,044,01,0124,0120,0, + /* 35181 */ 0260,01,044,01,0124,0110,0, + /* 35188 */ 0261,01,041,01,0125,0120,0, + /* 35195 */ 0260,01,041,01,0125,0110,0, + /* 35202 */ 0261,01,045,01,0125,0120,0, + /* 35209 */ 0260,01,045,01,0125,0110,0, + /* 35216 */ 0261,01,040,01,0125,0120,0, + /* 35223 */ 0260,01,040,01,0125,0110,0, + /* 35230 */ 0261,01,044,01,0125,0120,0, + /* 35237 */ 0260,01,044,01,0125,0110,0, + /* 35244 */ 0270,02,01,01,030,0110,0, + /* 35251 */ 0270,02,05,01,030,0110,0, + /* 35258 */ 0270,02,05,01,031,0110,0, + /* 35265 */ 0270,02,05,01,032,0110,0, + /* 35272 */ 0270,01,051,01,057,0110,0, + /* 35279 */ 0270,01,050,01,057,0110,0, + /* 35286 */ 0270,01,042,01,0346,0110,0, + /* 35293 */ 0270,01,046,01,0346,0110,0, + /* 35300 */ 0270,01,040,01,0133,0110,0, + /* 35307 */ 0270,01,044,01,0133,0110,0, + /* 35314 */ 0270,01,043,01,0346,0110,0, + /* 35321 */ 0270,01,047,01,0346,0110,0, + /* 35328 */ 0270,01,041,01,0132,0110,0, + /* 35335 */ 0270,01,045,01,0132,0110,0, + /* 35342 */ 0270,01,041,01,0133,0110,0, + /* 35349 */ 0270,01,045,01,0133,0110,0, + /* 35356 */ 0270,01,040,01,0132,0110,0, + /* 35363 */ 0270,01,044,01,0132,0110,0, + /* 35370 */ 0270,01,013,01,055,0110,0, + /* 35377 */ 0270,01,033,01,055,0110,0, + /* 35384 */ 0261,01,053,01,0132,0120,0, + /* 35391 */ 0260,01,053,01,0132,0110,0, + /* 35398 */ 0261,01,013,01,052,0120,0, + /* 35405 */ 0260,01,013,01,052,0110,0, + /* 35412 */ 0261,01,033,01,052,0120,0, + /* 35419 */ 0260,01,033,01,052,0110,0, + /* 35426 */ 0261,01,012,01,052,0120,0, + /* 35433 */ 0260,01,012,01,052,0110,0, + /* 35440 */ 0261,01,032,01,052,0120,0, + /* 35447 */ 0260,01,032,01,052,0110,0, + /* 35454 */ 0261,01,052,01,0132,0120,0, + /* 35461 */ 0260,01,052,01,0132,0110,0, + /* 35468 */ 0270,01,012,01,055,0110,0, + /* 35475 */ 0270,01,032,01,055,0110,0, + /* 35482 */ 0270,01,041,01,0346,0110,0, + /* 35489 */ 0270,01,045,01,0346,0110,0, + /* 35496 */ 0270,01,042,01,0133,0110,0, + /* 35503 */ 0270,01,046,01,0133,0110,0, + /* 35510 */ 0270,01,013,01,054,0110,0, + /* 35517 */ 0270,01,033,01,054,0110,0, + /* 35524 */ 0270,01,012,01,054,0110,0, + /* 35531 */ 0270,01,032,01,054,0110,0, + /* 35538 */ 0261,01,041,01,0136,0120,0, + /* 35545 */ 0260,01,041,01,0136,0110,0, + /* 35552 */ 0261,01,045,01,0136,0120,0, + /* 35559 */ 0260,01,045,01,0136,0110,0, + /* 35566 */ 0261,01,040,01,0136,0120,0, + /* 35573 */ 0260,01,040,01,0136,0110,0, + /* 35580 */ 0261,01,044,01,0136,0120,0, + /* 35587 */ 0260,01,044,01,0136,0110,0, + /* 35594 */ 0261,01,053,01,0136,0120,0, + /* 35601 */ 0260,01,053,01,0136,0110,0, + /* 35608 */ 0261,01,052,01,0136,0120,0, + /* 35615 */ 0260,01,052,01,0136,0110,0, + /* 35622 */ 0261,01,041,01,0174,0120,0, + /* 35629 */ 0260,01,041,01,0174,0110,0, + /* 35636 */ 0261,01,045,01,0174,0120,0, + /* 35643 */ 0260,01,045,01,0174,0110,0, + /* 35650 */ 0261,01,043,01,0174,0120,0, + /* 35657 */ 0260,01,043,01,0174,0110,0, + /* 35664 */ 0261,01,047,01,0174,0120,0, + /* 35671 */ 0260,01,047,01,0174,0110,0, + /* 35678 */ 0261,01,041,01,0175,0120,0, + /* 35685 */ 0260,01,041,01,0175,0110,0, + /* 35692 */ 0261,01,045,01,0175,0120,0, + /* 35699 */ 0260,01,045,01,0175,0110,0, + /* 35706 */ 0261,01,043,01,0175,0120,0, + /* 35713 */ 0260,01,043,01,0175,0110,0, + /* 35720 */ 0261,01,047,01,0175,0120,0, + /* 35727 */ 0260,01,047,01,0175,0110,0, + /* 35734 */ 0270,01,043,01,0360,0110,0, + /* 35741 */ 0270,01,047,01,0360,0110,0, + /* 35748 */ 0270,01,040,01,0256,0202,0, + /* 35755 */ 0270,01,041,01,0367,0110,0, + /* 35762 */ 0261,02,01,01,054,0120,0, + /* 35769 */ 0261,02,05,01,054,0120,0, + /* 35776 */ 0261,02,01,01,056,0102,0, + /* 35783 */ 0261,02,05,01,056,0102,0, + /* 35790 */ 0261,02,01,01,055,0120,0, + /* 35797 */ 0261,02,05,01,055,0120,0, + /* 35804 */ 0261,02,01,01,057,0102,0, + /* 35811 */ 0261,02,05,01,057,0102,0, + /* 35818 */ 0261,01,041,01,0137,0120,0, + /* 35825 */ 0260,01,041,01,0137,0110,0, + /* 35832 */ 0261,01,045,01,0137,0120,0, + /* 35839 */ 0260,01,045,01,0137,0110,0, + /* 35846 */ 0261,01,040,01,0137,0120,0, + /* 35853 */ 0260,01,040,01,0137,0110,0, + /* 35860 */ 0261,01,044,01,0137,0120,0, + /* 35867 */ 0260,01,044,01,0137,0110,0, + /* 35874 */ 0261,01,053,01,0137,0120,0, + /* 35881 */ 0260,01,053,01,0137,0110,0, + /* 35888 */ 0261,01,052,01,0137,0120,0, + /* 35895 */ 0260,01,052,01,0137,0110,0, + /* 35902 */ 0261,01,041,01,0135,0120,0, + /* 35909 */ 0260,01,041,01,0135,0110,0, + /* 35916 */ 0261,01,045,01,0135,0120,0, + /* 35923 */ 0260,01,045,01,0135,0110,0, + /* 35930 */ 0261,01,040,01,0135,0120,0, + /* 35937 */ 0260,01,040,01,0135,0110,0, + /* 35944 */ 0261,01,044,01,0135,0120,0, + /* 35951 */ 0260,01,044,01,0135,0110,0, + /* 35958 */ 0261,01,053,01,0135,0120,0, + /* 35965 */ 0260,01,053,01,0135,0110,0, + /* 35972 */ 0261,01,052,01,0135,0120,0, + /* 35979 */ 0260,01,052,01,0135,0110,0, + /* 35986 */ 0270,01,041,01,050,0110,0, + /* 35993 */ 0270,01,041,01,051,0101,0, + /* 36000 */ 0270,01,045,01,050,0110,0, + /* 36007 */ 0270,01,045,01,051,0101,0, + /* 36014 */ 0270,01,040,01,050,0110,0, + /* 36021 */ 0270,01,040,01,051,0101,0, + /* 36028 */ 0270,01,044,01,050,0110,0, + /* 36035 */ 0270,01,044,01,051,0101,0, + /* 36042 */ 0270,01,01,01,0156,0110,0, + /* 36049 */ 0270,01,01,01,0176,0101,0, + /* 36056 */ 0270,01,042,01,0176,0110,0, + /* 36063 */ 0270,01,041,01,0326,0101,0, + /* 36070 */ 0270,01,021,01,0156,0110,0, + /* 36077 */ 0270,01,021,01,0176,0101,0, + /* 36084 */ 0270,01,043,01,022,0110,0, + /* 36091 */ 0270,01,047,01,022,0110,0, + /* 36098 */ 0270,01,041,01,0157,0110,0, + /* 36105 */ 0270,01,041,01,0177,0101,0, + /* 36112 */ 0270,01,045,01,0157,0110,0, + /* 36119 */ 0270,01,045,01,0177,0101,0, + /* 36126 */ 0270,01,042,01,0157,0110,0, + /* 36133 */ 0270,01,042,01,0177,0101,0, + /* 36140 */ 0270,01,046,01,0157,0110,0, + /* 36147 */ 0270,01,046,01,0177,0101,0, + /* 36154 */ 0261,01,040,01,022,0120,0, + /* 36161 */ 0260,01,040,01,022,0110,0, + /* 36168 */ 0261,01,041,01,026,0120,0, + /* 36175 */ 0260,01,041,01,026,0110,0, + /* 36182 */ 0270,01,041,01,027,0101,0, + /* 36189 */ 0261,01,040,01,026,0120,0, + /* 36196 */ 0260,01,040,01,026,0110,0, + /* 36203 */ 0270,01,040,01,027,0101,0, + /* 36210 */ 0261,01,041,01,022,0120,0, + /* 36217 */ 0260,01,041,01,022,0110,0, + /* 36224 */ 0270,01,041,01,023,0101,0, + /* 36231 */ 0270,01,040,01,023,0101,0, + /* 36238 */ 0270,01,041,01,0120,0110,0, + /* 36245 */ 0270,01,045,01,0120,0110,0, + /* 36252 */ 0270,01,040,01,0120,0110,0, + /* 36259 */ 0270,01,044,01,0120,0110,0, + /* 36266 */ 0270,01,041,01,0347,0101,0, + /* 36273 */ 0270,01,045,01,0347,0101,0, + /* 36280 */ 0270,02,041,01,052,0110,0, + /* 36287 */ 0270,01,041,01,053,0101,0, + /* 36294 */ 0270,01,045,01,053,0101,0, + /* 36301 */ 0270,01,040,01,053,0101,0, + /* 36308 */ 0270,01,044,01,053,0101,0, + /* 36315 */ 0261,01,053,01,020,0120,0, + /* 36322 */ 0260,01,053,01,020,0110,0, + /* 36329 */ 0270,01,053,01,020,0110,0, + /* 36336 */ 0261,01,053,01,021,0102,0, + /* 36343 */ 0260,01,053,01,021,0101,0, + /* 36350 */ 0270,01,053,01,021,0101,0, + /* 36357 */ 0270,01,042,01,026,0110,0, + /* 36364 */ 0270,01,046,01,026,0110,0, + /* 36371 */ 0270,01,042,01,022,0110,0, + /* 36378 */ 0270,01,046,01,022,0110,0, + /* 36385 */ 0261,01,052,01,020,0120,0, + /* 36392 */ 0260,01,052,01,020,0110,0, + /* 36399 */ 0270,01,052,01,020,0110,0, + /* 36406 */ 0261,01,052,01,021,0102,0, + /* 36413 */ 0260,01,052,01,021,0101,0, + /* 36420 */ 0270,01,052,01,021,0101,0, + /* 36427 */ 0270,01,041,01,020,0110,0, + /* 36434 */ 0270,01,041,01,021,0101,0, + /* 36441 */ 0270,01,045,01,020,0110,0, + /* 36448 */ 0270,01,045,01,021,0101,0, + /* 36455 */ 0270,01,040,01,020,0110,0, + /* 36462 */ 0270,01,040,01,021,0101,0, + /* 36469 */ 0270,01,044,01,020,0110,0, + /* 36476 */ 0270,01,044,01,021,0101,0, + /* 36483 */ 0261,01,041,01,0131,0120,0, + /* 36490 */ 0260,01,041,01,0131,0110,0, + /* 36497 */ 0261,01,045,01,0131,0120,0, + /* 36504 */ 0260,01,045,01,0131,0110,0, + /* 36511 */ 0261,01,040,01,0131,0120,0, + /* 36518 */ 0260,01,040,01,0131,0110,0, + /* 36525 */ 0261,01,044,01,0131,0120,0, + /* 36532 */ 0260,01,044,01,0131,0110,0, + /* 36539 */ 0261,01,053,01,0131,0120,0, + /* 36546 */ 0260,01,053,01,0131,0110,0, + /* 36553 */ 0261,01,052,01,0131,0120,0, + /* 36560 */ 0260,01,052,01,0131,0110,0, + /* 36567 */ 0261,01,041,01,0126,0120,0, + /* 36574 */ 0260,01,041,01,0126,0110,0, + /* 36581 */ 0261,01,045,01,0126,0120,0, + /* 36588 */ 0260,01,045,01,0126,0110,0, + /* 36595 */ 0261,01,040,01,0126,0120,0, + /* 36602 */ 0260,01,040,01,0126,0110,0, + /* 36609 */ 0261,01,044,01,0126,0120,0, + /* 36616 */ 0260,01,044,01,0126,0110,0, + /* 36623 */ 0270,02,041,01,034,0110,0, + /* 36630 */ 0270,02,041,01,035,0110,0, + /* 36637 */ 0270,02,041,01,036,0110,0, + /* 36644 */ 0261,01,041,01,0143,0120,0, + /* 36651 */ 0260,01,041,01,0143,0110,0, + /* 36658 */ 0261,01,041,01,0153,0120,0, + /* 36665 */ 0260,01,041,01,0153,0110,0, + /* 36672 */ 0261,01,041,01,0147,0120,0, + /* 36679 */ 0260,01,041,01,0147,0110,0, + /* 36686 */ 0261,02,041,01,053,0120,0, + /* 36693 */ 0260,02,041,01,053,0110,0, + /* 36700 */ 0261,01,041,01,0374,0120,0, + /* 36707 */ 0260,01,041,01,0374,0110,0, + /* 36714 */ 0261,01,041,01,0375,0120,0, + /* 36721 */ 0260,01,041,01,0375,0110,0, + /* 36728 */ 0261,01,041,01,0376,0120,0, + /* 36735 */ 0260,01,041,01,0376,0110,0, + /* 36742 */ 0261,01,041,01,0324,0120,0, + /* 36749 */ 0260,01,041,01,0324,0110,0, + /* 36756 */ 0261,01,041,01,0354,0120,0, + /* 36763 */ 0260,01,041,01,0354,0110,0, + /* 36770 */ 0261,01,041,01,0355,0120,0, + /* 36777 */ 0260,01,041,01,0355,0110,0, + /* 36784 */ 0261,01,041,01,0334,0120,0, + /* 36791 */ 0260,01,041,01,0334,0110,0, + /* 36798 */ 0261,01,041,01,0335,0120,0, + /* 36805 */ 0260,01,041,01,0335,0110,0, + /* 36812 */ 0261,01,041,01,0333,0120,0, + /* 36819 */ 0260,01,041,01,0333,0110,0, + /* 36826 */ 0261,01,041,01,0337,0120,0, + /* 36833 */ 0260,01,041,01,0337,0110,0, + /* 36840 */ 0261,01,041,01,0340,0120,0, + /* 36847 */ 0260,01,041,01,0340,0110,0, + /* 36854 */ 0261,01,041,01,0343,0120,0, + /* 36861 */ 0260,01,041,01,0343,0110,0, + /* 36868 */ 0261,01,041,01,0164,0120,0, + /* 36875 */ 0260,01,041,01,0164,0110,0, + /* 36882 */ 0261,01,041,01,0165,0120,0, + /* 36889 */ 0260,01,041,01,0165,0110,0, + /* 36896 */ 0261,01,041,01,0166,0120,0, + /* 36903 */ 0260,01,041,01,0166,0110,0, + /* 36910 */ 0261,02,041,01,051,0120,0, + /* 36917 */ 0260,02,041,01,051,0110,0, + /* 36924 */ 0261,01,041,01,0144,0120,0, + /* 36931 */ 0260,01,041,01,0144,0110,0, + /* 36938 */ 0261,01,041,01,0145,0120,0, + /* 36945 */ 0260,01,041,01,0145,0110,0, + /* 36952 */ 0261,01,041,01,0146,0120,0, + /* 36959 */ 0260,01,041,01,0146,0110,0, + /* 36966 */ 0261,02,041,01,067,0120,0, + /* 36973 */ 0260,02,041,01,067,0110,0, + /* 36980 */ 0261,02,01,01,015,0120,0, + /* 36987 */ 0260,02,01,01,015,0110,0, + /* 36994 */ 0261,02,05,01,015,0120,0, + /* 37001 */ 0260,02,05,01,015,0110,0, + /* 37008 */ 0261,02,01,01,014,0120,0, + /* 37015 */ 0260,02,01,01,014,0110,0, + /* 37022 */ 0261,02,05,01,014,0120,0, + /* 37029 */ 0260,02,05,01,014,0110,0, + /* 37036 */ 0261,02,041,01,01,0120,0, + /* 37043 */ 0260,02,041,01,01,0110,0, + /* 37050 */ 0261,02,041,01,02,0120,0, + /* 37057 */ 0260,02,041,01,02,0110,0, + /* 37064 */ 0261,02,041,01,03,0120,0, + /* 37071 */ 0260,02,041,01,03,0110,0, + /* 37078 */ 0270,02,041,01,0101,0110,0, + /* 37085 */ 0261,02,041,01,05,0120,0, + /* 37092 */ 0260,02,041,01,05,0110,0, + /* 37099 */ 0261,02,041,01,06,0120,0, + /* 37106 */ 0260,02,041,01,06,0110,0, + /* 37113 */ 0261,02,041,01,07,0120,0, + /* 37120 */ 0260,02,041,01,07,0110,0, + /* 37127 */ 0261,01,041,01,0365,0120,0, + /* 37134 */ 0260,01,041,01,0365,0110,0, + /* 37141 */ 0261,02,041,01,04,0120,0, + /* 37148 */ 0260,02,041,01,04,0110,0, + /* 37155 */ 0261,02,041,01,074,0120,0, + /* 37162 */ 0260,02,041,01,074,0110,0, + /* 37169 */ 0261,01,041,01,0356,0120,0, + /* 37176 */ 0260,01,041,01,0356,0110,0, + /* 37183 */ 0261,02,041,01,075,0120,0, + /* 37190 */ 0260,02,041,01,075,0110,0, + /* 37197 */ 0261,01,041,01,0336,0120,0, + /* 37204 */ 0260,01,041,01,0336,0110,0, + /* 37211 */ 0261,02,041,01,076,0120,0, + /* 37218 */ 0260,02,041,01,076,0110,0, + /* 37225 */ 0261,02,041,01,077,0120,0, + /* 37232 */ 0260,02,041,01,077,0110,0, + /* 37239 */ 0261,02,041,01,070,0120,0, + /* 37246 */ 0260,02,041,01,070,0110,0, + /* 37253 */ 0261,01,041,01,0352,0120,0, + /* 37260 */ 0260,01,041,01,0352,0110,0, + /* 37267 */ 0261,02,041,01,071,0120,0, + /* 37274 */ 0260,02,041,01,071,0110,0, + /* 37281 */ 0261,01,041,01,0332,0120,0, + /* 37288 */ 0260,01,041,01,0332,0110,0, + /* 37295 */ 0261,02,041,01,072,0120,0, + /* 37302 */ 0260,02,041,01,072,0110,0, + /* 37309 */ 0261,02,041,01,073,0120,0, + /* 37316 */ 0260,02,041,01,073,0110,0, + /* 37323 */ 0270,01,041,01,0327,0110,0, + /* 37330 */ 0270,02,041,01,040,0110,0, + /* 37337 */ 0270,02,041,01,041,0110,0, + /* 37344 */ 0270,02,041,01,042,0110,0, + /* 37351 */ 0270,02,041,01,043,0110,0, + /* 37358 */ 0270,02,041,01,044,0110,0, + /* 37365 */ 0270,02,041,01,045,0110,0, + /* 37372 */ 0270,02,041,01,060,0110,0, + /* 37379 */ 0270,02,041,01,061,0110,0, + /* 37386 */ 0270,02,041,01,062,0110,0, + /* 37393 */ 0270,02,041,01,063,0110,0, + /* 37400 */ 0270,02,041,01,064,0110,0, + /* 37407 */ 0270,02,041,01,065,0110,0, + /* 37414 */ 0261,01,041,01,0344,0120,0, + /* 37421 */ 0260,01,041,01,0344,0110,0, + /* 37428 */ 0261,02,041,01,013,0120,0, + /* 37435 */ 0260,02,041,01,013,0110,0, + /* 37442 */ 0261,01,041,01,0345,0120,0, + /* 37449 */ 0260,01,041,01,0345,0110,0, + /* 37456 */ 0261,01,041,01,0325,0120,0, + /* 37463 */ 0260,01,041,01,0325,0110,0, + /* 37470 */ 0261,02,041,01,0100,0120,0, + /* 37477 */ 0260,02,041,01,0100,0110,0, + /* 37484 */ 0261,01,041,01,0364,0120,0, + /* 37491 */ 0260,01,041,01,0364,0110,0, + /* 37498 */ 0261,02,041,01,050,0120,0, + /* 37505 */ 0260,02,041,01,050,0110,0, + /* 37512 */ 0261,01,041,01,0353,0120,0, + /* 37519 */ 0260,01,041,01,0353,0110,0, + /* 37526 */ 0261,01,041,01,0366,0120,0, + /* 37533 */ 0260,01,041,01,0366,0110,0, + /* 37540 */ 0261,02,041,01,0,0120,0, + /* 37547 */ 0260,02,041,01,0,0110,0, + /* 37554 */ 0261,02,041,01,010,0120,0, + /* 37561 */ 0260,02,041,01,010,0110,0, + /* 37568 */ 0261,02,041,01,011,0120,0, + /* 37575 */ 0260,02,041,01,011,0110,0, + /* 37582 */ 0261,02,041,01,012,0120,0, + /* 37589 */ 0260,02,041,01,012,0110,0, + /* 37596 */ 0261,01,041,01,0361,0120,0, + /* 37603 */ 0260,01,041,01,0361,0110,0, + /* 37610 */ 0261,01,041,01,0362,0120,0, + /* 37617 */ 0260,01,041,01,0362,0110,0, + /* 37624 */ 0261,01,041,01,0363,0120,0, + /* 37631 */ 0260,01,041,01,0363,0110,0, + /* 37638 */ 0261,01,041,01,0341,0120,0, + /* 37645 */ 0260,01,041,01,0341,0110,0, + /* 37652 */ 0261,01,041,01,0342,0120,0, + /* 37659 */ 0260,01,041,01,0342,0110,0, + /* 37666 */ 0261,01,041,01,0321,0120,0, + /* 37673 */ 0260,01,041,01,0321,0110,0, + /* 37680 */ 0261,01,041,01,0322,0120,0, + /* 37687 */ 0260,01,041,01,0322,0110,0, + /* 37694 */ 0261,01,041,01,0323,0120,0, + /* 37701 */ 0260,01,041,01,0323,0110,0, + /* 37708 */ 0270,02,041,01,027,0110,0, + /* 37715 */ 0270,02,045,01,027,0110,0, + /* 37722 */ 0261,01,041,01,0370,0120,0, + /* 37729 */ 0260,01,041,01,0370,0110,0, + /* 37736 */ 0261,01,041,01,0371,0120,0, + /* 37743 */ 0260,01,041,01,0371,0110,0, + /* 37750 */ 0261,01,041,01,0372,0120,0, + /* 37757 */ 0260,01,041,01,0372,0110,0, + /* 37764 */ 0261,01,041,01,0373,0120,0, + /* 37771 */ 0260,01,041,01,0373,0110,0, + /* 37778 */ 0261,01,041,01,0350,0120,0, + /* 37785 */ 0260,01,041,01,0350,0110,0, + /* 37792 */ 0261,01,041,01,0351,0120,0, + /* 37799 */ 0260,01,041,01,0351,0110,0, + /* 37806 */ 0261,01,041,01,0330,0120,0, + /* 37813 */ 0260,01,041,01,0330,0110,0, + /* 37820 */ 0261,01,041,01,0331,0120,0, + /* 37827 */ 0260,01,041,01,0331,0110,0, + /* 37834 */ 0261,01,041,01,0150,0120,0, + /* 37841 */ 0260,01,041,01,0150,0110,0, + /* 37848 */ 0261,01,041,01,0151,0120,0, + /* 37855 */ 0260,01,041,01,0151,0110,0, + /* 37862 */ 0261,01,041,01,0152,0120,0, + /* 37869 */ 0260,01,041,01,0152,0110,0, + /* 37876 */ 0261,01,041,01,0155,0120,0, + /* 37883 */ 0260,01,041,01,0155,0110,0, + /* 37890 */ 0261,01,041,01,0140,0120,0, + /* 37897 */ 0260,01,041,01,0140,0110,0, + /* 37904 */ 0261,01,041,01,0141,0120,0, + /* 37911 */ 0260,01,041,01,0141,0110,0, + /* 37918 */ 0261,01,041,01,0142,0120,0, + /* 37925 */ 0260,01,041,01,0142,0110,0, + /* 37932 */ 0261,01,041,01,0154,0120,0, + /* 37939 */ 0260,01,041,01,0154,0110,0, + /* 37946 */ 0261,01,041,01,0357,0120,0, + /* 37953 */ 0260,01,041,01,0357,0110,0, + /* 37960 */ 0270,01,040,01,0123,0110,0, + /* 37967 */ 0270,01,044,01,0123,0110,0, + /* 37974 */ 0261,01,052,01,0123,0120,0, + /* 37981 */ 0260,01,052,01,0123,0110,0, + /* 37988 */ 0270,01,040,01,0122,0110,0, + /* 37995 */ 0270,01,044,01,0122,0110,0, + /* 38002 */ 0261,01,052,01,0122,0120,0, + /* 38009 */ 0260,01,052,01,0122,0110,0, + /* 38016 */ 0270,01,041,01,0121,0110,0, + /* 38023 */ 0270,01,045,01,0121,0110,0, + /* 38030 */ 0270,01,040,01,0121,0110,0, + /* 38037 */ 0270,01,044,01,0121,0110,0, + /* 38044 */ 0261,01,053,01,0121,0120,0, + /* 38051 */ 0260,01,053,01,0121,0110,0, + /* 38058 */ 0261,01,052,01,0121,0120,0, + /* 38065 */ 0260,01,052,01,0121,0110,0, + /* 38072 */ 0270,01,040,01,0256,0203,0, + /* 38079 */ 0261,01,041,01,0134,0120,0, + /* 38086 */ 0260,01,041,01,0134,0110,0, + /* 38093 */ 0261,01,045,01,0134,0120,0, + /* 38100 */ 0260,01,045,01,0134,0110,0, + /* 38107 */ 0261,01,040,01,0134,0120,0, + /* 38114 */ 0260,01,040,01,0134,0110,0, + /* 38121 */ 0261,01,044,01,0134,0120,0, + /* 38128 */ 0260,01,044,01,0134,0110,0, + /* 38135 */ 0261,01,053,01,0134,0120,0, + /* 38142 */ 0260,01,053,01,0134,0110,0, + /* 38149 */ 0261,01,052,01,0134,0120,0, + /* 38156 */ 0260,01,052,01,0134,0110,0, + /* 38163 */ 0270,02,01,01,016,0110,0, + /* 38170 */ 0270,02,05,01,016,0110,0, + /* 38177 */ 0270,02,01,01,017,0110,0, + /* 38184 */ 0270,02,05,01,017,0110,0, + /* 38191 */ 0270,01,051,01,056,0110,0, + /* 38198 */ 0270,01,050,01,056,0110,0, + /* 38205 */ 0261,01,041,01,025,0120,0, + /* 38212 */ 0260,01,041,01,025,0110,0, + /* 38219 */ 0261,01,045,01,025,0120,0, + /* 38226 */ 0260,01,045,01,025,0110,0, + /* 38233 */ 0261,01,040,01,025,0120,0, + /* 38240 */ 0260,01,040,01,025,0110,0, + /* 38247 */ 0261,01,044,01,025,0120,0, + /* 38254 */ 0260,01,044,01,025,0110,0, + /* 38261 */ 0261,01,041,01,024,0120,0, + /* 38268 */ 0260,01,041,01,024,0110,0, + /* 38275 */ 0261,01,045,01,024,0120,0, + /* 38282 */ 0260,01,045,01,024,0110,0, + /* 38289 */ 0261,01,040,01,024,0120,0, + /* 38296 */ 0260,01,040,01,024,0110,0, + /* 38303 */ 0261,01,044,01,024,0120,0, + /* 38310 */ 0260,01,044,01,024,0110,0, + /* 38317 */ 0261,01,041,01,0127,0120,0, + /* 38324 */ 0260,01,041,01,0127,0110,0, + /* 38331 */ 0261,01,045,01,0127,0120,0, + /* 38338 */ 0260,01,045,01,0127,0110,0, + /* 38345 */ 0261,01,040,01,0127,0120,0, + /* 38352 */ 0260,01,040,01,0127,0110,0, + /* 38359 */ 0261,01,044,01,0127,0120,0, + /* 38366 */ 0260,01,044,01,0127,0110,0, + /* 38373 */ 0261,02,01,01,0230,0120,0, + /* 38380 */ 0261,02,05,01,0230,0120,0, + /* 38387 */ 0261,02,021,01,0230,0120,0, + /* 38394 */ 0261,02,025,01,0230,0120,0, + /* 38401 */ 0261,02,01,01,0250,0120,0, + /* 38408 */ 0261,02,05,01,0250,0120,0, + /* 38415 */ 0261,02,021,01,0250,0120,0, + /* 38422 */ 0261,02,025,01,0250,0120,0, + /* 38429 */ 0261,02,01,01,0270,0120,0, + /* 38436 */ 0261,02,05,01,0270,0120,0, + /* 38443 */ 0261,02,021,01,0270,0120,0, + /* 38450 */ 0261,02,025,01,0270,0120,0, + /* 38457 */ 0261,02,01,01,0226,0120,0, + /* 38464 */ 0261,02,05,01,0226,0120,0, + /* 38471 */ 0261,02,021,01,0226,0120,0, + /* 38478 */ 0261,02,025,01,0226,0120,0, + /* 38485 */ 0261,02,01,01,0246,0120,0, + /* 38492 */ 0261,02,05,01,0246,0120,0, + /* 38499 */ 0261,02,021,01,0246,0120,0, + /* 38506 */ 0261,02,025,01,0246,0120,0, + /* 38513 */ 0261,02,01,01,0266,0120,0, + /* 38520 */ 0261,02,05,01,0266,0120,0, + /* 38527 */ 0261,02,021,01,0266,0120,0, + /* 38534 */ 0261,02,025,01,0266,0120,0, + /* 38541 */ 0261,02,01,01,0232,0120,0, + /* 38548 */ 0261,02,05,01,0232,0120,0, + /* 38555 */ 0261,02,021,01,0232,0120,0, + /* 38562 */ 0261,02,025,01,0232,0120,0, + /* 38569 */ 0261,02,01,01,0252,0120,0, + /* 38576 */ 0261,02,05,01,0252,0120,0, + /* 38583 */ 0261,02,021,01,0252,0120,0, + /* 38590 */ 0261,02,025,01,0252,0120,0, + /* 38597 */ 0261,02,01,01,0272,0120,0, + /* 38604 */ 0261,02,05,01,0272,0120,0, + /* 38611 */ 0261,02,021,01,0272,0120,0, + /* 38618 */ 0261,02,025,01,0272,0120,0, + /* 38625 */ 0261,02,01,01,0227,0120,0, + /* 38632 */ 0261,02,05,01,0227,0120,0, + /* 38639 */ 0261,02,021,01,0227,0120,0, + /* 38646 */ 0261,02,025,01,0227,0120,0, + /* 38653 */ 0261,02,01,01,0247,0120,0, + /* 38660 */ 0261,02,05,01,0247,0120,0, + /* 38667 */ 0261,02,021,01,0247,0120,0, + /* 38674 */ 0261,02,025,01,0247,0120,0, + /* 38681 */ 0261,02,01,01,0267,0120,0, + /* 38688 */ 0261,02,05,01,0267,0120,0, + /* 38695 */ 0261,02,021,01,0267,0120,0, + /* 38702 */ 0261,02,025,01,0267,0120,0, + /* 38709 */ 0261,02,01,01,0234,0120,0, + /* 38716 */ 0261,02,05,01,0234,0120,0, + /* 38723 */ 0261,02,021,01,0234,0120,0, + /* 38730 */ 0261,02,025,01,0234,0120,0, + /* 38737 */ 0261,02,01,01,0254,0120,0, + /* 38744 */ 0261,02,05,01,0254,0120,0, + /* 38751 */ 0261,02,021,01,0254,0120,0, + /* 38758 */ 0261,02,025,01,0254,0120,0, + /* 38765 */ 0261,02,01,01,0274,0120,0, + /* 38772 */ 0261,02,05,01,0274,0120,0, + /* 38779 */ 0261,02,021,01,0274,0120,0, + /* 38786 */ 0261,02,025,01,0274,0120,0, + /* 38793 */ 0261,02,01,01,0236,0120,0, + /* 38800 */ 0261,02,05,01,0236,0120,0, + /* 38807 */ 0261,02,021,01,0236,0120,0, + /* 38814 */ 0261,02,025,01,0236,0120,0, + /* 38821 */ 0261,02,01,01,0256,0120,0, + /* 38828 */ 0261,02,05,01,0256,0120,0, + /* 38835 */ 0261,02,021,01,0256,0120,0, + /* 38842 */ 0261,02,025,01,0256,0120,0, + /* 38849 */ 0261,02,01,01,0276,0120,0, + /* 38856 */ 0261,02,05,01,0276,0120,0, + /* 38863 */ 0261,02,021,01,0276,0120,0, + /* 38870 */ 0261,02,025,01,0276,0120,0, + /* 38877 */ 0261,02,01,01,0231,0120,0, + /* 38884 */ 0261,02,021,01,0231,0120,0, + /* 38891 */ 0261,02,01,01,0251,0120,0, + /* 38898 */ 0261,02,021,01,0251,0120,0, + /* 38905 */ 0261,02,01,01,0271,0120,0, + /* 38912 */ 0261,02,021,01,0271,0120,0, + /* 38919 */ 0261,02,01,01,0233,0120,0, + /* 38926 */ 0261,02,021,01,0233,0120,0, + /* 38933 */ 0261,02,01,01,0253,0120,0, + /* 38940 */ 0261,02,021,01,0253,0120,0, + /* 38947 */ 0261,02,01,01,0273,0120,0, + /* 38954 */ 0261,02,021,01,0273,0120,0, + /* 38961 */ 0261,02,01,01,0235,0120,0, + /* 38968 */ 0261,02,021,01,0235,0120,0, + /* 38975 */ 0261,02,01,01,0255,0120,0, + /* 38982 */ 0261,02,021,01,0255,0120,0, + /* 38989 */ 0261,02,01,01,0275,0120,0, + /* 38996 */ 0261,02,021,01,0275,0120,0, + /* 39003 */ 0261,02,01,01,0237,0120,0, + /* 39010 */ 0261,02,021,01,0237,0120,0, + /* 39017 */ 0261,02,01,01,0257,0120,0, + /* 39024 */ 0261,02,021,01,0257,0120,0, + /* 39031 */ 0261,02,01,01,0277,0120,0, + /* 39038 */ 0261,02,021,01,0277,0120,0, + /* 39045 */ 0317,0333,02,017,0256,0200,0, + /* 39052 */ 0324,0333,02,017,0256,0200,0, + /* 39059 */ 0317,0333,02,017,0256,0201,0, + /* 39066 */ 0324,0333,02,017,0256,0201,0, + /* 39073 */ 0317,0333,02,017,0256,0202,0, + /* 39080 */ 0324,0333,02,017,0256,0202,0, + /* 39087 */ 0317,0333,02,017,0256,0203,0, + /* 39094 */ 0324,0333,02,017,0256,0203,0, + /* 39101 */ 0270,02,05,01,023,0110,0, + /* 39108 */ 0270,02,01,01,023,0110,0, + /* 39115 */ 0270,0111,0,01,022,0200,0, + /* 39122 */ 0270,0111,020,01,022,0200,0, + /* 39129 */ 0270,0111,0,01,022,0201,0, + /* 39136 */ 0270,0111,020,01,022,0201,0, + /* 39143 */ 0270,0111,0,01,0201,0110,0, + /* 39150 */ 0270,0111,0,01,0201,0100,0, + /* 39157 */ 0270,0111,04,01,0201,0110,0, + /* 39164 */ 0270,0111,04,01,0201,0100,0, + /* 39171 */ 0270,0111,0,01,0200,0110,0, + /* 39178 */ 0270,0111,0,01,0200,0100,0, + /* 39185 */ 0270,0111,04,01,0200,0110,0, + /* 39192 */ 0270,0111,04,01,0200,0100,0, + /* 39199 */ 0270,0111,0,01,0203,0110,0, + /* 39206 */ 0270,0111,0,01,0203,0100,0, + /* 39213 */ 0270,0111,0,01,0202,0110,0, + /* 39220 */ 0270,0111,0,01,0202,0100,0, + /* 39227 */ 0270,0111,0,01,0302,0110,0, + /* 39234 */ 0270,0111,0,01,0302,0100,0, + /* 39241 */ 0270,0111,0,01,0303,0110,0, + /* 39248 */ 0270,0111,0,01,0303,0100,0, + /* 39255 */ 0270,0111,0,01,0301,0110,0, + /* 39262 */ 0270,0111,0,01,0301,0100,0, + /* 39269 */ 0270,0111,0,01,0313,0110,0, + /* 39276 */ 0270,0111,0,01,0313,0100,0, + /* 39283 */ 0270,0111,0,01,0322,0110,0, + /* 39290 */ 0270,0111,0,01,0322,0100,0, + /* 39297 */ 0270,0111,0,01,0323,0110,0, + /* 39304 */ 0270,0111,0,01,0323,0100,0, + /* 39311 */ 0270,0111,0,01,0321,0110,0, + /* 39318 */ 0270,0111,0,01,0321,0100,0, + /* 39325 */ 0270,0111,0,01,0333,0110,0, + /* 39332 */ 0270,0111,0,01,0333,0100,0, + /* 39339 */ 0270,0111,0,01,0326,0110,0, + /* 39346 */ 0270,0111,0,01,0326,0100,0, + /* 39353 */ 0270,0111,0,01,0327,0110,0, + /* 39360 */ 0270,0111,0,01,0327,0100,0, + /* 39367 */ 0270,0111,0,01,0306,0110,0, + /* 39374 */ 0270,0111,0,01,0306,0100,0, + /* 39381 */ 0270,0111,0,01,0307,0110,0, + /* 39388 */ 0270,0111,0,01,0307,0100,0, + /* 39395 */ 0270,0111,0,01,0341,0110,0, + /* 39402 */ 0270,0111,0,01,0341,0100,0, + /* 39409 */ 0270,0111,0,01,0343,0110,0, + /* 39416 */ 0270,0111,0,01,0343,0100,0, + /* 39423 */ 0270,0111,0,01,0342,0110,0, + /* 39430 */ 0270,0111,0,01,0342,0100,0, + /* 39437 */ 0262,0111,0,01,0220,0110,0, + /* 39444 */ 0261,0111,0,01,0220,0100,0, + /* 39451 */ 0261,0111,020,01,0220,0120,0, + /* 39458 */ 0260,0111,020,01,0220,0110,0, + /* 39465 */ 0262,0111,0,01,0222,0110,0, + /* 39472 */ 0261,0111,0,01,0222,0100,0, + /* 39479 */ 0261,0111,020,01,0222,0120,0, + /* 39486 */ 0260,0111,020,01,0222,0110,0, + /* 39493 */ 0262,0111,0,01,0223,0110,0, + /* 39500 */ 0261,0111,0,01,0223,0100,0, + /* 39507 */ 0261,0111,020,01,0223,0120,0, + /* 39514 */ 0260,0111,020,01,0223,0110,0, + /* 39521 */ 0262,0111,0,01,0221,0110,0, + /* 39528 */ 0261,0111,0,01,0221,0100,0, + /* 39535 */ 0261,0111,020,01,0221,0120,0, + /* 39542 */ 0260,0111,020,01,0221,0110,0, + /* 39549 */ 0262,0111,0,01,0230,0110,0, + /* 39556 */ 0261,0111,0,01,0230,0100,0, + /* 39563 */ 0261,0111,020,01,0230,0120,0, + /* 39570 */ 0260,0111,020,01,0230,0110,0, + /* 39577 */ 0262,0111,0,01,0232,0110,0, + /* 39584 */ 0261,0111,0,01,0232,0100,0, + /* 39591 */ 0261,0111,020,01,0232,0120,0, + /* 39598 */ 0260,0111,020,01,0232,0110,0, + /* 39605 */ 0262,0111,0,01,0233,0110,0, + /* 39612 */ 0261,0111,0,01,0233,0100,0, + /* 39619 */ 0261,0111,020,01,0233,0120,0, + /* 39626 */ 0260,0111,020,01,0233,0110,0, + /* 39633 */ 0262,0111,0,01,0231,0110,0, + /* 39640 */ 0261,0111,0,01,0231,0100,0, + /* 39647 */ 0261,0111,020,01,0231,0120,0, + /* 39654 */ 0260,0111,020,01,0231,0110,0, + /* 39661 */ 0262,0111,0,01,0224,0110,0, + /* 39668 */ 0261,0111,0,01,0224,0100,0, + /* 39675 */ 0261,0111,020,01,0224,0120,0, + /* 39682 */ 0260,0111,020,01,0224,0110,0, + /* 39689 */ 0262,0111,0,01,0226,0110,0, + /* 39696 */ 0261,0111,0,01,0226,0100,0, + /* 39703 */ 0261,0111,020,01,0226,0120,0, + /* 39710 */ 0260,0111,020,01,0226,0110,0, + /* 39717 */ 0262,0111,0,01,0227,0110,0, + /* 39724 */ 0261,0111,0,01,0227,0100,0, + /* 39731 */ 0261,0111,020,01,0227,0120,0, + /* 39738 */ 0260,0111,020,01,0227,0110,0, + /* 39745 */ 0262,0111,0,01,0225,0110,0, + /* 39752 */ 0261,0111,0,01,0225,0100,0, + /* 39759 */ 0261,0111,020,01,0225,0120,0, + /* 39766 */ 0260,0111,020,01,0225,0110,0, + /* 39773 */ 0270,02,045,01,034,0110,0, + /* 39780 */ 0270,02,045,01,035,0110,0, + /* 39787 */ 0270,02,045,01,036,0110,0, + /* 39794 */ 0261,01,045,01,0143,0120,0, + /* 39801 */ 0260,01,045,01,0143,0110,0, + /* 39808 */ 0261,01,045,01,0153,0120,0, + /* 39815 */ 0260,01,045,01,0153,0110,0, + /* 39822 */ 0261,02,045,01,053,0120,0, + /* 39829 */ 0260,02,045,01,053,0110,0, + /* 39836 */ 0261,01,045,01,0147,0120,0, + /* 39843 */ 0260,01,045,01,0147,0110,0, + /* 39850 */ 0261,01,045,01,0374,0120,0, + /* 39857 */ 0260,01,045,01,0374,0110,0, + /* 39864 */ 0261,01,045,01,0375,0120,0, + /* 39871 */ 0260,01,045,01,0375,0110,0, + /* 39878 */ 0261,01,045,01,0376,0120,0, + /* 39885 */ 0260,01,045,01,0376,0110,0, + /* 39892 */ 0261,01,045,01,0324,0120,0, + /* 39899 */ 0260,01,045,01,0324,0110,0, + /* 39906 */ 0261,01,045,01,0354,0120,0, + /* 39913 */ 0260,01,045,01,0354,0110,0, + /* 39920 */ 0261,01,045,01,0355,0120,0, + /* 39927 */ 0260,01,045,01,0355,0110,0, + /* 39934 */ 0261,01,045,01,0334,0120,0, + /* 39941 */ 0260,01,045,01,0334,0110,0, + /* 39948 */ 0261,01,045,01,0335,0120,0, + /* 39955 */ 0260,01,045,01,0335,0110,0, + /* 39962 */ 0261,01,045,01,0333,0120,0, + /* 39969 */ 0260,01,045,01,0333,0110,0, + /* 39976 */ 0261,01,045,01,0337,0120,0, + /* 39983 */ 0260,01,045,01,0337,0110,0, + /* 39990 */ 0261,01,045,01,0340,0120,0, + /* 39997 */ 0260,01,045,01,0340,0110,0, + /* 40004 */ 0261,01,045,01,0343,0120,0, + /* 40011 */ 0260,01,045,01,0343,0110,0, + /* 40018 */ 0261,01,045,01,0164,0120,0, + /* 40025 */ 0260,01,045,01,0164,0110,0, + /* 40032 */ 0261,01,045,01,0165,0120,0, + /* 40039 */ 0260,01,045,01,0165,0110,0, + /* 40046 */ 0261,01,045,01,0166,0120,0, + /* 40053 */ 0260,01,045,01,0166,0110,0, + /* 40060 */ 0261,02,045,01,051,0120,0, + /* 40067 */ 0260,02,045,01,051,0110,0, + /* 40074 */ 0261,01,045,01,0144,0120,0, + /* 40081 */ 0260,01,045,01,0144,0110,0, + /* 40088 */ 0261,01,045,01,0145,0120,0, + /* 40095 */ 0260,01,045,01,0145,0110,0, + /* 40102 */ 0261,01,045,01,0146,0120,0, + /* 40109 */ 0260,01,045,01,0146,0110,0, + /* 40116 */ 0261,02,045,01,067,0120,0, + /* 40123 */ 0260,02,045,01,067,0110,0, + /* 40130 */ 0261,02,045,01,01,0120,0, + /* 40137 */ 0260,02,045,01,01,0110,0, + /* 40144 */ 0261,02,045,01,02,0120,0, + /* 40151 */ 0260,02,045,01,02,0110,0, + /* 40158 */ 0261,02,045,01,03,0120,0, + /* 40165 */ 0260,02,045,01,03,0110,0, + /* 40172 */ 0261,02,045,01,05,0120,0, + /* 40179 */ 0260,02,045,01,05,0110,0, + /* 40186 */ 0261,02,045,01,06,0120,0, + /* 40193 */ 0260,02,045,01,06,0110,0, + /* 40200 */ 0261,02,045,01,07,0120,0, + /* 40207 */ 0260,02,045,01,07,0110,0, + /* 40214 */ 0261,02,045,01,04,0120,0, + /* 40221 */ 0260,02,045,01,04,0110,0, + /* 40228 */ 0261,01,045,01,0365,0120,0, + /* 40235 */ 0260,01,045,01,0365,0110,0, + /* 40242 */ 0261,02,045,01,074,0120,0, + /* 40249 */ 0260,02,045,01,074,0110,0, + /* 40256 */ 0261,01,045,01,0356,0120,0, + /* 40263 */ 0260,01,045,01,0356,0110,0, + /* 40270 */ 0261,02,045,01,075,0120,0, + /* 40277 */ 0260,02,045,01,075,0110,0, + /* 40284 */ 0261,01,045,01,0336,0120,0, + /* 40291 */ 0260,01,045,01,0336,0110,0, + /* 40298 */ 0261,02,045,01,076,0120,0, + /* 40305 */ 0260,02,045,01,076,0110,0, + /* 40312 */ 0261,02,045,01,077,0120,0, + /* 40319 */ 0260,02,045,01,077,0110,0, + /* 40326 */ 0261,02,045,01,070,0120,0, + /* 40333 */ 0260,02,045,01,070,0110,0, + /* 40340 */ 0261,01,045,01,0352,0120,0, + /* 40347 */ 0260,01,045,01,0352,0110,0, + /* 40354 */ 0261,02,045,01,071,0120,0, + /* 40361 */ 0260,02,045,01,071,0110,0, + /* 40368 */ 0261,01,045,01,0332,0120,0, + /* 40375 */ 0260,01,045,01,0332,0110,0, + /* 40382 */ 0261,02,045,01,072,0120,0, + /* 40389 */ 0260,02,045,01,072,0110,0, + /* 40396 */ 0261,02,045,01,073,0120,0, + /* 40403 */ 0260,02,045,01,073,0110,0, + /* 40410 */ 0270,01,045,01,0327,0110,0, + /* 40417 */ 0270,02,045,01,040,0110,0, + /* 40424 */ 0270,02,045,01,041,0110,0, + /* 40431 */ 0270,02,045,01,042,0110,0, + /* 40438 */ 0270,02,045,01,043,0110,0, + /* 40445 */ 0270,02,045,01,044,0110,0, + /* 40452 */ 0270,02,045,01,045,0110,0, + /* 40459 */ 0270,02,045,01,060,0110,0, + /* 40466 */ 0270,02,045,01,061,0110,0, + /* 40473 */ 0270,02,045,01,062,0110,0, + /* 40480 */ 0270,02,045,01,063,0110,0, + /* 40487 */ 0270,02,045,01,064,0110,0, + /* 40494 */ 0270,02,045,01,065,0110,0, + /* 40501 */ 0261,02,045,01,050,0120,0, + /* 40508 */ 0260,02,045,01,050,0110,0, + /* 40515 */ 0261,02,045,01,013,0120,0, + /* 40522 */ 0260,02,045,01,013,0110,0, + /* 40529 */ 0261,01,045,01,0344,0120,0, + /* 40536 */ 0260,01,045,01,0344,0110,0, + /* 40543 */ 0261,01,045,01,0345,0120,0, + /* 40550 */ 0260,01,045,01,0345,0110,0, + /* 40557 */ 0261,01,045,01,0325,0120,0, + /* 40564 */ 0260,01,045,01,0325,0110,0, + /* 40571 */ 0261,02,045,01,0100,0120,0, + /* 40578 */ 0260,02,045,01,0100,0110,0, + /* 40585 */ 0261,01,045,01,0364,0120,0, + /* 40592 */ 0260,01,045,01,0364,0110,0, + /* 40599 */ 0261,01,045,01,0353,0120,0, + /* 40606 */ 0260,01,045,01,0353,0110,0, + /* 40613 */ 0261,01,045,01,0366,0120,0, + /* 40620 */ 0260,01,045,01,0366,0110,0, + /* 40627 */ 0261,02,045,01,0,0120,0, + /* 40634 */ 0260,02,045,01,0,0110,0, + /* 40641 */ 0261,02,045,01,010,0120,0, + /* 40648 */ 0260,02,045,01,010,0110,0, + /* 40655 */ 0261,02,045,01,011,0120,0, + /* 40662 */ 0260,02,045,01,011,0110,0, + /* 40669 */ 0261,02,045,01,012,0120,0, + /* 40676 */ 0260,02,045,01,012,0110,0, + /* 40683 */ 0261,01,045,01,0361,0120,0, + /* 40690 */ 0260,01,045,01,0361,0110,0, + /* 40697 */ 0261,01,045,01,0362,0120,0, + /* 40704 */ 0260,01,045,01,0362,0110,0, + /* 40711 */ 0261,01,045,01,0363,0120,0, + /* 40718 */ 0260,01,045,01,0363,0110,0, + /* 40725 */ 0261,01,045,01,0341,0120,0, + /* 40732 */ 0260,01,045,01,0341,0110,0, + /* 40739 */ 0261,01,045,01,0342,0120,0, + /* 40746 */ 0260,01,045,01,0342,0110,0, + /* 40753 */ 0261,01,045,01,0321,0120,0, + /* 40760 */ 0260,01,045,01,0321,0110,0, + /* 40767 */ 0261,01,045,01,0322,0120,0, + /* 40774 */ 0260,01,045,01,0322,0110,0, + /* 40781 */ 0261,01,045,01,0323,0120,0, + /* 40788 */ 0260,01,045,01,0323,0110,0, + /* 40795 */ 0261,01,045,01,0370,0120,0, + /* 40802 */ 0260,01,045,01,0370,0110,0, + /* 40809 */ 0261,01,045,01,0371,0120,0, + /* 40816 */ 0260,01,045,01,0371,0110,0, + /* 40823 */ 0261,01,045,01,0372,0120,0, + /* 40830 */ 0260,01,045,01,0372,0110,0, + /* 40837 */ 0261,01,045,01,0373,0120,0, + /* 40844 */ 0260,01,045,01,0373,0110,0, + /* 40851 */ 0261,01,045,01,0350,0120,0, + /* 40858 */ 0260,01,045,01,0350,0110,0, + /* 40865 */ 0261,01,045,01,0351,0120,0, + /* 40872 */ 0260,01,045,01,0351,0110,0, + /* 40879 */ 0261,01,045,01,0330,0120,0, + /* 40886 */ 0260,01,045,01,0330,0110,0, + /* 40893 */ 0261,01,045,01,0331,0120,0, + /* 40900 */ 0260,01,045,01,0331,0110,0, + /* 40907 */ 0261,01,045,01,0150,0120,0, + /* 40914 */ 0260,01,045,01,0150,0110,0, + /* 40921 */ 0261,01,045,01,0151,0120,0, + /* 40928 */ 0260,01,045,01,0151,0110,0, + /* 40935 */ 0261,01,045,01,0152,0120,0, + /* 40942 */ 0260,01,045,01,0152,0110,0, + /* 40949 */ 0261,01,045,01,0155,0120,0, + /* 40956 */ 0260,01,045,01,0155,0110,0, + /* 40963 */ 0261,01,045,01,0140,0120,0, + /* 40970 */ 0260,01,045,01,0140,0110,0, + /* 40977 */ 0261,01,045,01,0141,0120,0, + /* 40984 */ 0260,01,045,01,0141,0110,0, + /* 40991 */ 0261,01,045,01,0142,0120,0, + /* 40998 */ 0260,01,045,01,0142,0110,0, + /* 41005 */ 0261,01,045,01,0154,0120,0, + /* 41012 */ 0260,01,045,01,0154,0110,0, + /* 41019 */ 0261,01,045,01,0357,0120,0, + /* 41026 */ 0260,01,045,01,0357,0110,0, + /* 41033 */ 0270,02,045,01,052,0110,0, + /* 41040 */ 0270,02,05,01,0132,0110,0, + /* 41047 */ 0270,02,01,01,0170,0110,0, + /* 41054 */ 0270,02,05,01,0170,0110,0, + /* 41061 */ 0270,02,01,01,0171,0110,0, + /* 41068 */ 0270,02,05,01,0171,0110,0, + /* 41075 */ 0270,02,01,01,0130,0110,0, + /* 41082 */ 0270,02,05,01,0130,0110,0, + /* 41089 */ 0270,02,01,01,0131,0110,0, + /* 41096 */ 0270,02,05,01,0131,0110,0, + /* 41103 */ 0261,02,05,01,066,0120,0, + /* 41110 */ 0260,02,05,01,066,0110,0, + /* 41117 */ 0261,02,05,01,026,0120,0, + /* 41124 */ 0260,02,05,01,026,0110,0, + /* 41131 */ 0261,02,01,01,0214,0120,0, + /* 41138 */ 0260,02,01,01,0214,0110,0, + /* 41145 */ 0261,02,05,01,0214,0120,0, + /* 41152 */ 0260,02,05,01,0214,0110,0, + /* 41159 */ 0261,02,021,01,0214,0120,0, + /* 41166 */ 0260,02,021,01,0214,0110,0, + /* 41173 */ 0261,02,025,01,0214,0120,0, + /* 41180 */ 0260,02,025,01,0214,0110,0, + /* 41187 */ 0261,02,01,01,0216,0102,0, + /* 41194 */ 0260,02,01,01,0216,0101,0, + /* 41201 */ 0261,02,05,01,0216,0102,0, + /* 41208 */ 0260,02,05,01,0216,0101,0, + /* 41215 */ 0261,02,021,01,0216,0102,0, + /* 41222 */ 0260,02,021,01,0216,0101,0, + /* 41229 */ 0261,02,025,01,0216,0102,0, + /* 41236 */ 0260,02,025,01,0216,0101,0, + /* 41243 */ 0261,02,01,01,0107,0120,0, + /* 41250 */ 0260,02,01,01,0107,0110,0, + /* 41257 */ 0261,02,021,01,0107,0120,0, + /* 41264 */ 0260,02,021,01,0107,0110,0, + /* 41271 */ 0261,02,05,01,0107,0120,0, + /* 41278 */ 0260,02,05,01,0107,0110,0, + /* 41285 */ 0261,02,025,01,0107,0120,0, + /* 41292 */ 0260,02,025,01,0107,0110,0, + /* 41299 */ 0261,02,01,01,0106,0120,0, + /* 41306 */ 0260,02,01,01,0106,0110,0, + /* 41313 */ 0261,02,05,01,0106,0120,0, + /* 41320 */ 0260,02,05,01,0106,0110,0, + /* 41327 */ 0261,02,01,01,0105,0120,0, + /* 41334 */ 0260,02,01,01,0105,0110,0, + /* 41341 */ 0261,02,021,01,0105,0120,0, + /* 41348 */ 0260,02,021,01,0105,0110,0, + /* 41355 */ 0261,02,05,01,0105,0120,0, + /* 41362 */ 0260,02,05,01,0105,0110,0, + /* 41369 */ 0261,02,025,01,0105,0120,0, + /* 41376 */ 0260,02,025,01,0105,0110,0, + /* 41383 */ 0261,02,0,01,0362,0120,0, + /* 41390 */ 0261,02,020,01,0362,0120,0, + /* 41397 */ 0262,02,0,01,0367,0110,0, + /* 41404 */ 0262,02,020,01,0367,0110,0, + /* 41411 */ 0260,0111,0,01,02,0216,0, + /* 41418 */ 0260,0111,020,01,02,0216,0, + /* 41425 */ 0260,0111,0,01,01,0215,0, + /* 41432 */ 0260,0111,020,01,01,0215,0, + /* 41439 */ 0260,02,0,01,0363,0213,0, + /* 41446 */ 0260,02,020,01,0363,0213,0, + /* 41453 */ 0260,0111,0,01,01,0216,0, + /* 41460 */ 0260,0111,020,01,01,0216,0, + /* 41467 */ 0260,0111,0,01,01,0211,0, + /* 41474 */ 0260,0111,020,01,01,0211,0, + /* 41481 */ 0260,0111,0,01,01,0212,0, + /* 41488 */ 0260,0111,020,01,01,0212,0, + /* 41495 */ 0260,0111,0,01,02,0211,0, + /* 41502 */ 0260,0111,020,01,02,0211,0, + /* 41509 */ 0260,02,0,01,0363,0212,0, + /* 41516 */ 0260,02,020,01,0363,0212,0, + /* 41523 */ 0260,02,0,01,0363,0211,0, + /* 41530 */ 0260,02,020,01,0363,0211,0, + /* 41537 */ 0260,0111,0,01,01,0213,0, + /* 41544 */ 0260,0111,020,01,01,0213,0, + /* 41551 */ 0262,02,0,01,0365,0110,0, + /* 41558 */ 0262,02,020,01,0365,0110,0, + /* 41565 */ 0261,02,03,01,0366,0120,0, + /* 41572 */ 0261,02,023,01,0366,0120,0, + /* 41579 */ 0261,02,03,01,0365,0120,0, + /* 41586 */ 0261,02,023,01,0365,0120,0, + /* 41593 */ 0261,02,02,01,0365,0120,0, + /* 41600 */ 0261,02,022,01,0365,0120,0, + /* 41607 */ 0262,02,02,01,0367,0110,0, + /* 41614 */ 0262,02,022,01,0367,0110,0, + /* 41621 */ 0262,02,01,01,0367,0110,0, + /* 41628 */ 0262,02,021,01,0367,0110,0, + /* 41635 */ 0262,02,03,01,0367,0110,0, + /* 41642 */ 0262,02,023,01,0367,0110,0, + /* 41649 */ 0320,0333,02,017,0274,0110,0, + /* 41656 */ 0321,0333,02,017,0274,0110,0, + /* 41663 */ 0324,0333,02,017,0274,0110,0, + /* 41670 */ 0260,0111,0,01,01,0214,0, + /* 41677 */ 0260,0111,020,01,01,0214,0, + /* 41684 */ 0260,0111,0,01,01,0217,0, + /* 41691 */ 0260,0111,020,01,01,0217,0, + /* 41698 */ 0323,0333,02,017,032,0110,0, + /* 41705 */ 0323,0332,02,017,032,0110,0, + /* 41712 */ 0323,0332,02,017,033,0110,0, + /* 41719 */ 03,017,072,0314,0110,022,0, + /* 41726 */ 0270,02,02,01,0261,0110,0, + /* 41733 */ 0270,02,06,01,0261,0110,0, + /* 41740 */ 0270,02,01,01,0261,0110,0, + /* 41747 */ 0270,02,05,01,0261,0110,0, + /* 41754 */ 0270,02,02,01,0260,0110,0, + /* 41761 */ 0270,02,06,01,0260,0110,0, + /* 41768 */ 0270,02,01,01,0260,0110,0, + /* 41775 */ 0270,02,05,01,0260,0110,0, + /* 41782 */ 0270,02,03,01,0260,0110,0, + /* 41789 */ 0270,02,07,01,0260,0110,0, + /* 41796 */ 0270,02,0,01,0260,0110,0, + /* 41803 */ 0270,02,04,01,0260,0110,0, + /* 41810 */ 0270,02,02,01,0162,0110,0, + /* 41817 */ 0270,02,06,01,0162,0110,0, + /* 41824 */ 0261,02,03,01,0120,0120,0, + /* 41831 */ 0261,02,07,01,0120,0120,0, + /* 41838 */ 0261,02,03,01,0121,0120,0, + /* 41845 */ 0261,02,07,01,0121,0120,0, + /* 41852 */ 0261,02,02,01,0120,0120,0, + /* 41859 */ 0261,02,06,01,0120,0120,0, + /* 41866 */ 0261,02,02,01,0121,0120,0, + /* 41873 */ 0261,02,06,01,0121,0120,0, + /* 41880 */ 0261,02,0,01,0120,0120,0, + /* 41887 */ 0261,02,04,01,0120,0120,0, + /* 41894 */ 0261,02,0,01,0121,0120,0, + /* 41901 */ 0261,02,04,01,0121,0120,0, + /* 41908 */ 0261,02,021,01,0265,0120,0, + /* 41915 */ 0261,02,025,01,0265,0120,0, + /* 41922 */ 0261,02,021,01,0264,0120,0, + /* 41929 */ 0261,02,025,01,0264,0120,0, + /* 41936 */ 0261,01,05,01,0112,0120,0, + /* 41943 */ 0261,01,025,01,0112,0120,0, + /* 41950 */ 0261,01,024,01,0112,0120,0, + /* 41957 */ 0261,01,04,01,0112,0120,0, + /* 41964 */ 0261,01,05,01,0101,0120,0, + /* 41971 */ 0261,01,025,01,0101,0120,0, + /* 41978 */ 0261,01,05,01,0102,0120,0, + /* 41985 */ 0261,01,025,01,0102,0120,0, + /* 41992 */ 0261,01,024,01,0102,0120,0, + /* 41999 */ 0261,01,04,01,0102,0120,0, + /* 42006 */ 0261,01,024,01,0101,0120,0, + /* 42013 */ 0261,01,04,01,0101,0120,0, + /* 42020 */ 0270,01,01,01,0220,0110,0, + /* 42027 */ 0270,01,01,01,0221,0101,0, + /* 42034 */ 0270,01,01,01,0222,0110,0, + /* 42041 */ 0270,01,01,01,0223,0110,0, + /* 42048 */ 0270,01,021,01,0220,0110,0, + /* 42055 */ 0270,01,021,01,0221,0101,0, + /* 42062 */ 0270,01,03,01,0222,0110,0, + /* 42069 */ 0270,01,03,01,0223,0110,0, + /* 42076 */ 0270,01,020,01,0220,0110,0, + /* 42083 */ 0270,01,020,01,0221,0101,0, + /* 42090 */ 0270,01,023,01,0222,0110,0, + /* 42097 */ 0270,01,023,01,0223,0110,0, + /* 42104 */ 0270,01,0,01,0220,0110,0, + /* 42111 */ 0270,01,0,01,0221,0101,0, + /* 42118 */ 0270,01,0,01,0222,0110,0, + /* 42125 */ 0270,01,0,01,0223,0110,0, + /* 42132 */ 0270,01,01,01,0104,0110,0, + /* 42139 */ 0270,01,021,01,0104,0110,0, + /* 42146 */ 0270,01,020,01,0104,0110,0, + /* 42153 */ 0270,01,0,01,0104,0110,0, + /* 42160 */ 0261,01,05,01,0105,0120,0, + /* 42167 */ 0261,01,025,01,0105,0120,0, + /* 42174 */ 0261,01,024,01,0105,0120,0, + /* 42181 */ 0261,01,04,01,0105,0120,0, + /* 42188 */ 0270,01,01,01,0230,0110,0, + /* 42195 */ 0270,01,021,01,0230,0110,0, + /* 42202 */ 0270,01,020,01,0230,0110,0, + /* 42209 */ 0270,01,0,01,0230,0110,0, + /* 42216 */ 0270,01,01,01,0231,0110,0, + /* 42223 */ 0270,01,021,01,0231,0110,0, + /* 42230 */ 0270,01,020,01,0231,0110,0, + /* 42237 */ 0270,01,0,01,0231,0110,0, + /* 42244 */ 0261,01,05,01,0113,0120,0, + /* 42251 */ 0261,01,024,01,0113,0120,0, + /* 42258 */ 0261,01,04,01,0113,0120,0, + /* 42265 */ 0261,01,05,01,0106,0120,0, + /* 42272 */ 0261,01,025,01,0106,0120,0, + /* 42279 */ 0261,01,024,01,0106,0120,0, + /* 42286 */ 0261,01,04,01,0106,0120,0, + /* 42293 */ 0261,01,05,01,0107,0120,0, + /* 42300 */ 0261,01,025,01,0107,0120,0, + /* 42307 */ 0261,01,024,01,0107,0120,0, + /* 42314 */ 0261,01,04,01,0107,0120,0, + /* 42321 */ 0323,0333,02,017,0307,0207,0, + /* 42328 */ 0360,03,017,070,0371,0101,0, + /* 42335 */ 0324,03,017,070,0371,0101,0, + /* 42342 */ 0310,0333,02,017,0256,0206,0, + /* 42349 */ 0311,0333,02,017,0256,0206,0, + /* 42356 */ 0361,03,017,070,0317,0110,0, + /* 42363 */ 0261,02,01,01,0317,0120,0, + /* 42370 */ 0260,02,01,01,0317,0110,0, + /* 42377 */ 0261,02,05,01,0317,0120,0, + /* 42384 */ 0260,02,05,01,0317,0110,0, + /* 42391 */ 0321,0333,02,017,0256,0205,0, + /* 42398 */ 0324,0333,02,017,0256,0205,0, + /* 42405 */ 0321,0333,02,017,036,0201,0, + /* 42412 */ 0324,0333,02,017,036,0201,0, + /* 42419 */ 0321,03,017,070,0366,0101,0, + /* 42426 */ 0324,03,017,070,0366,0101,0, + /* 42433 */ 0270,02,0,01,0111,0200,0, + /* 42440 */ 0270,02,01,01,0111,0200,0, + /* 42447 */ 0262,02,02,01,0134,0110,0, + /* 42454 */ 0262,02,03,01,0136,0110,0, + /* 42461 */ 0262,02,02,01,0136,0110,0, + /* 42468 */ 0262,02,01,01,0136,0110,0, + /* 42475 */ 0262,02,0,01,0136,0110,0, + /* 42482 */ 0270,02,03,01,0113,0110,0, + /* 42489 */ 0270,02,01,01,0113,0110,0, + /* 42496 */ 0270,02,0,02,0111,0300,0, + /* 42503 */ 0270,02,02,01,0113,0101,0, + /* 42510 */ 0323,0333,02,017,0307,0206,0, + /* 42517 */ 0262,02,01,01,0347,0101,0, + /* 42524 */ 0262,02,01,01,0343,0101,0, + /* 42531 */ 0262,02,01,01,0342,0101,0, + /* 42538 */ 0262,02,01,01,0346,0101,0, + /* 42545 */ 0262,02,01,01,0344,0101,0, + /* 42552 */ 0262,02,01,01,0357,0101,0, + /* 42559 */ 0262,02,01,01,0355,0101,0, + /* 42566 */ 0262,02,01,01,0354,0101,0, + /* 42573 */ 0262,02,01,01,0356,0101,0, + /* 42580 */ 0262,02,01,01,0345,0101,0, + /* 42587 */ 0262,02,01,01,0341,0101,0, + /* 42594 */ 0262,02,01,01,0353,0101,0, + /* 42601 */ 0262,02,01,01,0351,0101,0, + /* 42608 */ 0262,02,01,01,0340,0101,0, + /* 42615 */ 0262,02,01,01,0352,0101,0, + /* 42622 */ 0262,02,01,01,0350,0101,0, + /* 42629 */ 0262,02,021,01,0347,0101,0, + /* 42636 */ 0262,02,021,01,0343,0101,0, + /* 42643 */ 0262,02,021,01,0342,0101,0, + /* 42650 */ 0262,02,021,01,0346,0101,0, + /* 42657 */ 0262,02,021,01,0344,0101,0, + /* 42664 */ 0262,02,021,01,0357,0101,0, + /* 42671 */ 0262,02,021,01,0355,0101,0, + /* 42678 */ 0262,02,021,01,0354,0101,0, + /* 42685 */ 0262,02,021,01,0356,0101,0, + /* 42692 */ 0262,02,021,01,0345,0101,0, + /* 42699 */ 0262,02,021,01,0341,0101,0, + /* 42706 */ 0262,02,021,01,0353,0101,0, + /* 42713 */ 0262,02,021,01,0351,0101,0, + /* 42720 */ 0262,02,021,01,0340,0101,0, + /* 42727 */ 0262,02,021,01,0352,0101,0, + /* 42734 */ 0262,02,021,01,0350,0101,0, + /* 42741 */ 0273,0320,01,021,0101,0, + /* 42747 */ 0273,0321,01,021,0101,0, + /* 42753 */ 0273,0324,01,021,0101,0, + /* 42759 */ 0273,01,0200,0202,021,0, + /* 42765 */ 0273,01,0202,0202,021,0, + /* 42771 */ 0273,0320,01,01,0101,0, + /* 42777 */ 0273,0321,01,01,0101,0, + /* 42783 */ 0273,0324,01,01,0101,0, + /* 42789 */ 0273,01,0200,0200,021,0, + /* 42795 */ 0273,01,0202,0200,021,0, + /* 42801 */ 0273,0320,01,041,0101,0, + /* 42807 */ 0273,0321,01,041,0101,0, + /* 42813 */ 0273,0324,01,041,0101,0, + /* 42819 */ 0273,01,0200,0204,021,0, + /* 42825 */ 0273,01,0202,0204,021,0, + /* 42831 */ 0321,01,017,010,0310,0, + /* 42837 */ 0324,01,017,010,0310,0, + /* 42843 */ 0320,02,017,0243,0101,0, + /* 42849 */ 0321,02,017,0243,0101,0, + /* 42855 */ 0324,02,017,0243,0101,0, + /* 42861 */ 0322,01,0232,034,074,0, + /* 42867 */ 0320,01,0232,034,074,0, + /* 42873 */ 0321,01,0232,034,074,0, + /* 42879 */ 0322,01,0232,035,030,0, + /* 42885 */ 0320,01,0232,031,030,0, + /* 42891 */ 0321,01,0232,041,030,0, + /* 42897 */ 0320,01,0203,0207,0275,0, + /* 42903 */ 0321,01,0203,0207,0275,0, + /* 42909 */ 0324,01,0203,0207,0275,0, + /* 42915 */ 0320,01,0201,0207,031,0, + /* 42921 */ 0321,01,0201,0207,041,0, + /* 42927 */ 0324,01,0201,0207,0255,0, + /* 42933 */ 0273,02,017,0260,0101,0, + /* 42939 */ 0320,02,017,0247,0101,0, + /* 42945 */ 0321,02,017,0247,0101,0, + /* 42951 */ 0324,02,017,0307,0201,0, + /* 42957 */ 0273,0320,01,0377,0201,0, + /* 42963 */ 0273,0321,01,0377,0201,0, + /* 42969 */ 0273,0324,01,0377,0201,0, + /* 42975 */ 0320,02,017,0257,0110,0, + /* 42981 */ 0321,02,017,0257,0110,0, + /* 42987 */ 0324,02,017,0257,0110,0, + /* 42993 */ 0320,01,0153,0110,0276,0, + /* 42999 */ 0320,01,0151,0110,032,0, + /* 43005 */ 0321,01,0153,0110,0276,0, + /* 43011 */ 0321,01,0151,0110,042,0, + /* 43017 */ 0324,01,0153,0110,0276,0, + /* 43023 */ 0324,01,0151,0110,042,0, + /* 43029 */ 0324,01,0151,0110,0256,0, + /* 43035 */ 0320,01,0153,0100,0275,0, + /* 43041 */ 0320,01,0151,0100,031,0, + /* 43047 */ 0321,01,0153,0100,0275,0, + /* 43053 */ 0321,01,0151,0100,041,0, + /* 43059 */ 0324,01,0153,0100,0275,0, + /* 43065 */ 0324,01,0151,0100,0255,0, + /* 43071 */ 0273,0320,01,0377,0200,0, + /* 43077 */ 0273,0321,01,0377,0200,0, + /* 43083 */ 0273,0324,01,0377,0200,0, + /* 43089 */ 0310,03,017,01,0337,0, + /* 43095 */ 0311,03,017,01,0337,0, + /* 43101 */ 0323,0313,01,0343,050,0, + /* 43107 */ 0322,01,0352,034,074,0, + /* 43113 */ 0320,01,0352,034,074,0, + /* 43119 */ 0321,01,0352,034,074,0, + /* 43125 */ 0322,01,0352,035,030,0, + /* 43131 */ 0320,01,0352,031,030,0, + /* 43137 */ 0321,01,0352,041,030,0, + /* 43143 */ 0322,02,017,0270,064,0, + /* 43149 */ 0320,02,017,0270,064,0, + /* 43155 */ 0321,02,017,0270,064,0, + /* 43161 */ 0320,02,017,0,0206,0, + /* 43167 */ 0321,02,017,0,0206,0, + /* 43173 */ 0320,02,017,02,0110,0, + /* 43179 */ 0321,02,017,02,0110,0, + /* 43185 */ 0324,02,017,02,0110,0, + /* 43191 */ 0360,03,017,0256,0350,0, + /* 43197 */ 0320,02,017,0264,0110,0, + /* 43203 */ 0321,02,017,0264,0110,0, + /* 43209 */ 0324,02,017,0264,0110,0, + /* 43215 */ 0320,02,017,0265,0110,0, + /* 43221 */ 0321,02,017,0265,0110,0, + /* 43227 */ 0324,02,017,0265,0110,0, + /* 43233 */ 0320,02,017,03,0110,0, + /* 43239 */ 0321,02,017,03,0110,0, + /* 43245 */ 0324,02,017,03,0110,0, + /* 43251 */ 0320,02,017,0262,0110,0, + /* 43257 */ 0321,02,017,0262,0110,0, + /* 43263 */ 0324,02,017,0262,0110,0, + /* 43269 */ 0360,03,017,0256,0360,0, + /* 43275 */ 0334,02,017,040,0101,0, + /* 43281 */ 0323,02,017,040,0101,0, + /* 43287 */ 0334,02,017,042,0110,0, + /* 43293 */ 0323,02,017,042,0110,0, + /* 43299 */ 0323,02,017,041,0101,0, + /* 43305 */ 0323,02,017,043,0110,0, + /* 43311 */ 0271,0320,01,0211,0101,0, + /* 43317 */ 0271,0321,01,0211,0101,0, + /* 43323 */ 0271,0324,01,0211,0101,0, + /* 43329 */ 0271,01,0306,0200,021,0, + /* 43335 */ 0360,02,017,0156,0110,0, + /* 43341 */ 0360,02,017,0176,0101,0, + /* 43347 */ 0360,02,017,0157,0110,0, + /* 43353 */ 0360,02,017,0177,0101,0, + /* 43359 */ 0320,02,017,0276,0110,0, + /* 43365 */ 0321,02,017,0276,0110,0, + /* 43371 */ 0321,02,017,0277,0110,0, + /* 43377 */ 0324,02,017,0276,0110,0, + /* 43383 */ 0324,02,017,0277,0110,0, + /* 43389 */ 0320,02,017,0266,0110,0, + /* 43395 */ 0321,02,017,0266,0110,0, + /* 43401 */ 0321,02,017,0267,0110,0, + /* 43407 */ 0324,02,017,0266,0110,0, + /* 43413 */ 0324,02,017,0267,0110,0, + /* 43419 */ 0273,0320,01,0367,0203,0, + /* 43425 */ 0273,0321,01,0367,0203,0, + /* 43431 */ 0273,0324,01,0367,0203,0, + /* 43437 */ 0320,02,017,037,0200,0, + /* 43443 */ 0321,02,017,037,0200,0, + /* 43449 */ 0324,02,017,037,0200,0, + /* 43455 */ 0273,0320,01,0367,0202,0, + /* 43461 */ 0273,0321,01,0367,0202,0, + /* 43467 */ 0273,0324,01,0367,0202,0, + /* 43473 */ 0273,0320,01,011,0101,0, + /* 43479 */ 0273,0321,01,011,0101,0, + /* 43485 */ 0273,0324,01,011,0101,0, + /* 43491 */ 0273,01,0200,0201,021,0, + /* 43497 */ 0273,01,0202,0201,021,0, + /* 43503 */ 0323,02,017,0121,0110,0, + /* 43509 */ 0323,02,017,0120,0110,0, + /* 43515 */ 0323,02,017,0122,0110,0, + /* 43521 */ 0323,02,017,0135,0110,0, + /* 43527 */ 0323,02,017,0131,0110,0, + /* 43533 */ 0323,02,017,0125,0110,0, + /* 43539 */ 0320,01,0301,0202,025,0, + /* 43545 */ 0321,01,0301,0202,025,0, + /* 43551 */ 0324,01,0301,0202,025,0, + /* 43557 */ 0320,01,0301,0203,025,0, + /* 43563 */ 0321,01,0301,0203,025,0, + /* 43569 */ 0324,01,0301,0203,025,0, + /* 43575 */ 0321,02,017,066,0200,0, + /* 43581 */ 0320,01,0301,0200,025,0, + /* 43587 */ 0321,01,0301,0200,025,0, + /* 43593 */ 0324,01,0301,0200,025,0, + /* 43599 */ 0320,01,0301,0201,025,0, + /* 43605 */ 0321,01,0301,0201,025,0, + /* 43611 */ 0324,01,0301,0201,025,0, + /* 43617 */ 0320,01,0301,0204,025,0, + /* 43623 */ 0321,01,0301,0204,025,0, + /* 43629 */ 0324,01,0301,0204,025,0, + /* 43635 */ 0320,01,0301,0207,025,0, + /* 43641 */ 0321,01,0301,0207,025,0, + /* 43647 */ 0324,01,0301,0207,025,0, + /* 43653 */ 0273,0320,01,031,0101,0, + /* 43659 */ 0273,0321,01,031,0101,0, + /* 43665 */ 0273,0324,01,031,0101,0, + /* 43671 */ 0273,01,0200,0203,021,0, + /* 43677 */ 0273,01,0202,0203,021,0, + /* 43683 */ 0360,03,017,0256,0370,0, + /* 43689 */ 0320,02,017,0245,0101,0, + /* 43695 */ 0321,02,017,0245,0101,0, + /* 43701 */ 0324,02,017,0245,0101,0, + /* 43707 */ 0320,01,0301,0205,025,0, + /* 43713 */ 0321,01,0301,0205,025,0, + /* 43719 */ 0324,01,0301,0205,025,0, + /* 43725 */ 0320,02,017,0255,0101,0, + /* 43731 */ 0321,02,017,0255,0101,0, + /* 43737 */ 0324,02,017,0255,0101,0, + /* 43743 */ 0320,02,017,0,0200,0, + /* 43749 */ 0321,02,017,0,0200,0, + /* 43755 */ 0323,02,017,0,0200,0, + /* 43761 */ 0324,02,017,0,0200,0, + /* 43767 */ 0320,02,017,01,0204,0, + /* 43773 */ 0321,02,017,01,0204,0, + /* 43779 */ 0324,02,017,01,0204,0, + /* 43785 */ 0320,02,017,0,0201,0, + /* 43791 */ 0321,02,017,0,0201,0, + /* 43797 */ 0324,02,017,0,0201,0, + /* 43803 */ 0273,0320,01,051,0101,0, + /* 43809 */ 0273,0321,01,051,0101,0, + /* 43815 */ 0273,0324,01,051,0101,0, + /* 43821 */ 0273,01,0200,0205,021,0, + /* 43827 */ 0273,01,0202,0205,021,0, + /* 43833 */ 0320,01,0367,0200,031,0, + /* 43839 */ 0321,01,0367,0200,041,0, + /* 43845 */ 0324,01,0367,0200,0255,0, + /* 43851 */ 0320,02,017,0377,0110,0, + /* 43857 */ 0321,02,017,0377,0110,0, + /* 43863 */ 0324,02,017,0377,0110,0, + /* 43869 */ 0320,02,017,0271,0110,0, + /* 43875 */ 0321,02,017,0271,0110,0, + /* 43881 */ 0324,02,017,0271,0110,0, + /* 43887 */ 0360,02,017,020,0101,0, + /* 43893 */ 0360,02,017,022,0110,0, + /* 43899 */ 0321,02,017,067,0200,0, + /* 43905 */ 0273,02,017,0300,0101,0, + /* 43911 */ 0320,02,017,0246,0110,0, + /* 43917 */ 0321,02,017,0246,0110,0, + /* 43923 */ 0272,0320,01,0207,0110,0, + /* 43929 */ 0272,0321,01,0207,0110,0, + /* 43935 */ 0272,0324,01,0207,0110,0, + /* 43941 */ 0272,0320,01,0207,0101,0, + /* 43947 */ 0272,0321,01,0207,0101,0, + /* 43953 */ 0272,0324,01,0207,0101,0, + /* 43959 */ 0273,0320,01,061,0101,0, + /* 43965 */ 0273,0321,01,061,0101,0, + /* 43971 */ 0273,0324,01,061,0101,0, + /* 43977 */ 0273,01,0200,0206,021,0, + /* 43983 */ 0273,01,0202,0206,021,0, + /* 43989 */ 0320,02,017,0107,0110,0, + /* 43995 */ 0320,02,017,0103,0110,0, + /* 44001 */ 0320,02,017,0102,0110,0, + /* 44007 */ 0320,02,017,0106,0110,0, + /* 44013 */ 0320,02,017,0104,0110,0, + /* 44019 */ 0320,02,017,0117,0110,0, + /* 44025 */ 0320,02,017,0115,0110,0, + /* 44031 */ 0320,02,017,0114,0110,0, + /* 44037 */ 0320,02,017,0116,0110,0, + /* 44043 */ 0320,02,017,0105,0110,0, + /* 44049 */ 0320,02,017,0101,0110,0, + /* 44055 */ 0320,02,017,0113,0110,0, + /* 44061 */ 0320,02,017,0111,0110,0, + /* 44067 */ 0320,02,017,0100,0110,0, + /* 44073 */ 0320,02,017,0112,0110,0, + /* 44079 */ 0320,02,017,0110,0110,0, + /* 44085 */ 0321,02,017,0107,0110,0, + /* 44091 */ 0321,02,017,0103,0110,0, + /* 44097 */ 0321,02,017,0102,0110,0, + /* 44103 */ 0321,02,017,0106,0110,0, + /* 44109 */ 0321,02,017,0104,0110,0, + /* 44115 */ 0321,02,017,0117,0110,0, + /* 44121 */ 0321,02,017,0115,0110,0, + /* 44127 */ 0321,02,017,0114,0110,0, + /* 44133 */ 0321,02,017,0116,0110,0, + /* 44139 */ 0321,02,017,0105,0110,0, + /* 44145 */ 0321,02,017,0101,0110,0, + /* 44151 */ 0321,02,017,0113,0110,0, + /* 44157 */ 0321,02,017,0111,0110,0, + /* 44163 */ 0321,02,017,0100,0110,0, + /* 44169 */ 0321,02,017,0112,0110,0, + /* 44175 */ 0321,02,017,0110,0110,0, + /* 44181 */ 0324,02,017,0107,0110,0, + /* 44187 */ 0324,02,017,0103,0110,0, + /* 44193 */ 0324,02,017,0102,0110,0, + /* 44199 */ 0324,02,017,0106,0110,0, + /* 44205 */ 0324,02,017,0104,0110,0, + /* 44211 */ 0324,02,017,0117,0110,0, + /* 44217 */ 0324,02,017,0115,0110,0, + /* 44223 */ 0324,02,017,0114,0110,0, + /* 44229 */ 0324,02,017,0116,0110,0, + /* 44235 */ 0324,02,017,0105,0110,0, + /* 44241 */ 0324,02,017,0101,0110,0, + /* 44247 */ 0324,02,017,0113,0110,0, + /* 44253 */ 0324,02,017,0111,0110,0, + /* 44259 */ 0324,02,017,0100,0110,0, + /* 44265 */ 0324,02,017,0112,0110,0, + /* 44271 */ 0324,02,017,0110,0110,0, + /* 44277 */ 0322,02,017,0207,064,0, + /* 44283 */ 0322,02,017,0203,064,0, + /* 44289 */ 0322,02,017,0202,064,0, + /* 44295 */ 0322,02,017,0206,064,0, + /* 44301 */ 0322,02,017,0204,064,0, + /* 44307 */ 0322,02,017,0217,064,0, + /* 44313 */ 0322,02,017,0215,064,0, + /* 44319 */ 0322,02,017,0214,064,0, + /* 44325 */ 0322,02,017,0216,064,0, + /* 44331 */ 0322,02,017,0205,064,0, + /* 44337 */ 0322,02,017,0201,064,0, + /* 44343 */ 0322,02,017,0213,064,0, + /* 44349 */ 0322,02,017,0211,064,0, + /* 44355 */ 0322,02,017,0200,064,0, + /* 44361 */ 0322,02,017,0212,064,0, + /* 44367 */ 0322,02,017,0210,064,0, + /* 44373 */ 0320,02,017,0207,064,0, + /* 44379 */ 0320,02,017,0203,064,0, + /* 44385 */ 0320,02,017,0202,064,0, + /* 44391 */ 0320,02,017,0206,064,0, + /* 44397 */ 0320,02,017,0204,064,0, + /* 44403 */ 0320,02,017,0217,064,0, + /* 44409 */ 0320,02,017,0215,064,0, + /* 44415 */ 0320,02,017,0214,064,0, + /* 44421 */ 0320,02,017,0216,064,0, + /* 44427 */ 0320,02,017,0205,064,0, + /* 44433 */ 0320,02,017,0201,064,0, + /* 44439 */ 0320,02,017,0213,064,0, + /* 44445 */ 0320,02,017,0211,064,0, + /* 44451 */ 0320,02,017,0200,064,0, + /* 44457 */ 0320,02,017,0212,064,0, + /* 44463 */ 0320,02,017,0210,064,0, + /* 44469 */ 0321,02,017,0207,064,0, + /* 44475 */ 0321,02,017,0203,064,0, + /* 44481 */ 0321,02,017,0202,064,0, + /* 44487 */ 0321,02,017,0206,064,0, + /* 44493 */ 0321,02,017,0204,064,0, + /* 44499 */ 0321,02,017,0217,064,0, + /* 44505 */ 0321,02,017,0215,064,0, + /* 44511 */ 0321,02,017,0214,064,0, + /* 44517 */ 0321,02,017,0216,064,0, + /* 44523 */ 0321,02,017,0205,064,0, + /* 44529 */ 0321,02,017,0201,064,0, + /* 44535 */ 0321,02,017,0213,064,0, + /* 44541 */ 0321,02,017,0211,064,0, + /* 44547 */ 0321,02,017,0200,064,0, + /* 44553 */ 0321,02,017,0212,064,0, + /* 44559 */ 0321,02,017,0210,064,0, + /* 44565 */ 0323,02,017,0207,064,0, + /* 44571 */ 0323,02,017,0203,064,0, + /* 44577 */ 0323,02,017,0202,064,0, + /* 44583 */ 0323,02,017,0206,064,0, + /* 44589 */ 0323,02,017,0204,064,0, + /* 44595 */ 0323,02,017,0217,064,0, + /* 44601 */ 0323,02,017,0215,064,0, + /* 44607 */ 0323,02,017,0214,064,0, + /* 44613 */ 0323,02,017,0216,064,0, + /* 44619 */ 0323,02,017,0205,064,0, + /* 44625 */ 0323,02,017,0201,064,0, + /* 44631 */ 0323,02,017,0213,064,0, + /* 44637 */ 0323,02,017,0211,064,0, + /* 44643 */ 0323,02,017,0200,064,0, + /* 44649 */ 0323,02,017,0212,064,0, + /* 44655 */ 0323,02,017,0210,064,0, + /* 44661 */ 0360,02,017,0130,0110,0, + /* 44667 */ 0333,02,017,0130,0110,0, + /* 44673 */ 0360,02,017,0125,0110,0, + /* 44679 */ 0360,02,017,0124,0110,0, + /* 44685 */ 0360,02,017,057,0110,0, + /* 44691 */ 0360,02,017,052,0110,0, + /* 44697 */ 0360,02,017,055,0110,0, + /* 44703 */ 0360,02,017,054,0110,0, + /* 44709 */ 0360,02,017,0136,0110,0, + /* 44715 */ 0333,02,017,0136,0110,0, + /* 44721 */ 0360,02,017,0256,0202,0, + /* 44727 */ 0360,02,017,0137,0110,0, + /* 44733 */ 0333,02,017,0137,0110,0, + /* 44739 */ 0360,02,017,0135,0110,0, + /* 44745 */ 0333,02,017,0135,0110,0, + /* 44751 */ 0360,02,017,050,0110,0, + /* 44757 */ 0360,02,017,051,0101,0, + /* 44763 */ 0360,02,017,026,0110,0, + /* 44769 */ 0360,02,017,027,0101,0, + /* 44775 */ 0360,02,017,023,0101,0, + /* 44781 */ 0360,02,017,0120,0110,0, + /* 44787 */ 0360,02,017,053,0101,0, + /* 44793 */ 0333,02,017,020,0110,0, + /* 44799 */ 0333,02,017,021,0101,0, + /* 44805 */ 0360,02,017,020,0110,0, + /* 44811 */ 0360,02,017,021,0101,0, + /* 44817 */ 0360,02,017,0131,0110,0, + /* 44823 */ 0333,02,017,0131,0110,0, + /* 44829 */ 0360,02,017,0126,0110,0, + /* 44835 */ 0360,02,017,0123,0110,0, + /* 44841 */ 0333,02,017,0123,0110,0, + /* 44847 */ 0360,02,017,0122,0110,0, + /* 44853 */ 0333,02,017,0122,0110,0, + /* 44859 */ 0360,02,017,0121,0110,0, + /* 44865 */ 0333,02,017,0121,0110,0, + /* 44871 */ 0360,02,017,0256,0203,0, + /* 44877 */ 0360,02,017,0134,0110,0, + /* 44883 */ 0333,02,017,0134,0110,0, + /* 44889 */ 0360,02,017,056,0110,0, + /* 44895 */ 0360,02,017,025,0110,0, + /* 44901 */ 0360,02,017,024,0110,0, + /* 44907 */ 0360,02,017,0127,0110,0, + /* 44913 */ 0360,02,017,0367,0110,0, + /* 44919 */ 0360,02,017,0347,0101,0, + /* 44925 */ 0360,02,017,0327,0110,0, + /* 44931 */ 0361,02,017,0367,0110,0, + /* 44937 */ 0360,02,017,0256,0207,0, + /* 44943 */ 0361,02,017,0347,0101,0, + /* 44949 */ 0361,02,017,053,0101,0, + /* 44955 */ 0361,02,017,0157,0110,0, + /* 44961 */ 0361,02,017,0177,0101,0, + /* 44967 */ 0333,02,017,0157,0110,0, + /* 44973 */ 0333,02,017,0177,0101,0, + /* 44979 */ 0332,02,017,0326,0110,0, + /* 44985 */ 0333,02,017,0176,0110,0, + /* 44991 */ 0361,02,017,0326,0101,0, + /* 44997 */ 0333,02,017,0326,0110,0, + /* 45003 */ 0361,02,017,0143,0110,0, + /* 45009 */ 0361,02,017,0153,0110,0, + /* 45015 */ 0361,02,017,0147,0110,0, + /* 45021 */ 0361,02,017,0374,0110,0, + /* 45027 */ 0361,02,017,0375,0110,0, + /* 45033 */ 0361,02,017,0376,0110,0, + /* 45039 */ 0360,02,017,0324,0110,0, + /* 45045 */ 0361,02,017,0324,0110,0, + /* 45051 */ 0361,02,017,0354,0110,0, + /* 45057 */ 0361,02,017,0355,0110,0, + /* 45063 */ 0361,02,017,0334,0110,0, + /* 45069 */ 0361,02,017,0335,0110,0, + /* 45075 */ 0361,02,017,0333,0110,0, + /* 45081 */ 0361,02,017,0337,0110,0, + /* 45087 */ 0361,02,017,0340,0110,0, + /* 45093 */ 0361,02,017,0343,0110,0, + /* 45099 */ 0361,02,017,0164,0110,0, + /* 45105 */ 0361,02,017,0165,0110,0, + /* 45111 */ 0361,02,017,0166,0110,0, + /* 45117 */ 0361,02,017,0144,0110,0, + /* 45123 */ 0361,02,017,0145,0110,0, + /* 45129 */ 0361,02,017,0146,0110,0, + /* 45135 */ 0361,02,017,0365,0110,0, + /* 45141 */ 0361,02,017,0356,0110,0, + /* 45147 */ 0361,02,017,0336,0110,0, + /* 45153 */ 0361,02,017,0352,0110,0, + /* 45159 */ 0361,02,017,0332,0110,0, + /* 45165 */ 0361,02,017,0327,0110,0, + /* 45171 */ 0361,02,017,0344,0110,0, + /* 45177 */ 0361,02,017,0345,0110,0, + /* 45183 */ 0361,02,017,0325,0110,0, + /* 45189 */ 0361,02,017,0364,0110,0, + /* 45195 */ 0361,02,017,0353,0110,0, + /* 45201 */ 0361,02,017,0366,0110,0, + /* 45207 */ 0361,02,017,0361,0110,0, + /* 45213 */ 0361,02,017,0362,0110,0, + /* 45219 */ 0361,02,017,0363,0110,0, + /* 45225 */ 0361,02,017,0341,0110,0, + /* 45231 */ 0361,02,017,0342,0110,0, + /* 45237 */ 0361,02,017,0321,0110,0, + /* 45243 */ 0361,02,017,0322,0110,0, + /* 45249 */ 0361,02,017,0323,0110,0, + /* 45255 */ 0361,02,017,0370,0110,0, + /* 45261 */ 0361,02,017,0371,0110,0, + /* 45267 */ 0361,02,017,0372,0110,0, + /* 45273 */ 0361,02,017,0373,0110,0, + /* 45279 */ 0361,02,017,0350,0110,0, + /* 45285 */ 0361,02,017,0351,0110,0, + /* 45291 */ 0361,02,017,0330,0110,0, + /* 45297 */ 0361,02,017,0331,0110,0, + /* 45303 */ 0361,02,017,0150,0110,0, + /* 45309 */ 0361,02,017,0151,0110,0, + /* 45315 */ 0361,02,017,0152,0110,0, + /* 45321 */ 0361,02,017,0155,0110,0, + /* 45327 */ 0361,02,017,0140,0110,0, + /* 45333 */ 0361,02,017,0141,0110,0, + /* 45339 */ 0361,02,017,0142,0110,0, + /* 45345 */ 0361,02,017,0154,0110,0, + /* 45351 */ 0361,02,017,0357,0110,0, + /* 45357 */ 0361,02,017,0130,0110,0, + /* 45363 */ 0332,02,017,0130,0110,0, + /* 45369 */ 0361,02,017,0125,0110,0, + /* 45375 */ 0361,02,017,0124,0110,0, + /* 45381 */ 0361,02,017,057,0110,0, + /* 45387 */ 0333,02,017,0346,0110,0, + /* 45393 */ 0360,02,017,0133,0110,0, + /* 45399 */ 0332,02,017,0346,0110,0, + /* 45405 */ 0361,02,017,055,0110,0, + /* 45411 */ 0361,02,017,0132,0110,0, + /* 45417 */ 0361,02,017,052,0110,0, + /* 45423 */ 0361,02,017,0133,0110,0, + /* 45429 */ 0360,02,017,0132,0110,0, + /* 45435 */ 0332,02,017,0132,0110,0, + /* 45441 */ 0333,02,017,0132,0110,0, + /* 45447 */ 0361,02,017,054,0110,0, + /* 45453 */ 0361,02,017,0346,0110,0, + /* 45459 */ 0333,02,017,0133,0110,0, + /* 45465 */ 0361,02,017,0136,0110,0, + /* 45471 */ 0332,02,017,0136,0110,0, + /* 45477 */ 0361,02,017,0137,0110,0, + /* 45483 */ 0332,02,017,0137,0110,0, + /* 45489 */ 0361,02,017,0135,0110,0, + /* 45495 */ 0332,02,017,0135,0110,0, + /* 45501 */ 0361,02,017,050,0110,0, + /* 45507 */ 0361,02,017,051,0101,0, + /* 45513 */ 0361,02,017,027,0101,0, + /* 45519 */ 0361,02,017,026,0110,0, + /* 45525 */ 0361,02,017,023,0101,0, + /* 45531 */ 0361,02,017,022,0110,0, + /* 45537 */ 0361,02,017,0120,0110,0, + /* 45543 */ 0332,02,017,020,0110,0, + /* 45549 */ 0332,02,017,021,0101,0, + /* 45555 */ 0361,02,017,020,0110,0, + /* 45561 */ 0361,02,017,021,0101,0, + /* 45567 */ 0361,02,017,0131,0110,0, + /* 45573 */ 0332,02,017,0131,0110,0, + /* 45579 */ 0361,02,017,0126,0110,0, + /* 45585 */ 0361,02,017,0121,0110,0, + /* 45591 */ 0332,02,017,0121,0110,0, + /* 45597 */ 0361,02,017,0134,0110,0, + /* 45603 */ 0332,02,017,0134,0110,0, + /* 45609 */ 0361,02,017,056,0110,0, + /* 45615 */ 0361,02,017,025,0110,0, + /* 45621 */ 0361,02,017,024,0110,0, + /* 45627 */ 0361,02,017,0127,0110,0, + /* 45633 */ 0361,02,017,0320,0110,0, + /* 45639 */ 0332,02,017,0320,0110,0, + /* 45645 */ 0361,02,017,0174,0110,0, + /* 45651 */ 0332,02,017,0174,0110,0, + /* 45657 */ 0361,02,017,0175,0110,0, + /* 45663 */ 0332,02,017,0175,0110,0, + /* 45669 */ 0332,02,017,0360,0110,0, + /* 45675 */ 0332,02,017,022,0110,0, + /* 45681 */ 0333,02,017,026,0110,0, + /* 45687 */ 0333,02,017,022,0110,0, + /* 45693 */ 0361,02,017,0307,0206,0, + /* 45699 */ 0360,02,017,0307,0206,0, + /* 45705 */ 0360,02,017,0307,0207,0, + /* 45711 */ 0332,03,017,01,0377,0, + /* 45717 */ 0333,03,017,01,0376,0, + /* 45723 */ 0332,03,017,01,0301,0, + /* 45729 */ 0333,03,017,01,0301,0, + /* 45735 */ 0361,02,017,0171,0110,0, + /* 45741 */ 0332,02,017,0171,0110,0, + /* 45747 */ 0332,02,017,053,0101,0, + /* 45753 */ 0333,02,017,053,0101,0, + /* 45759 */ 0270,01,04,01,0167,0, + /* 45765 */ 0270,01,0,01,0167,0, + /* 45771 */ 0320,02,017,0307,0206,0, + /* 45777 */ 0321,02,017,0307,0206,0, + /* 45783 */ 0324,02,017,0307,0206,0, + /* 45789 */ 0320,02,017,0307,0207,0, + /* 45795 */ 0321,02,017,0307,0207,0, + /* 45801 */ 0324,02,017,0307,0207,0, + /* 45807 */ 0336,03,017,0247,0310,0, + /* 45813 */ 0336,03,017,0247,0320,0, + /* 45819 */ 0336,03,017,0247,0330,0, + /* 45825 */ 0336,03,017,0247,0340,0, + /* 45831 */ 0336,03,017,0247,0350,0, + /* 45837 */ 0336,03,017,0246,0300,0, + /* 45843 */ 0336,03,017,0246,0310,0, + /* 45849 */ 0336,03,017,0246,0320,0, + /* 45855 */ 0322,02,0307,0370,064,0, + /* 45861 */ 0320,02,0307,0370,064,0, + /* 45867 */ 0321,02,0307,0370,064,0, + /* 45873 */ 0323,02,0307,0370,064,0, + /* 45879 */ 0333,02,017,033,0110,0, + /* 45885 */ 0361,02,017,032,0110,0, + /* 45891 */ 0361,02,017,033,0101,0, + /* 45897 */ 02,017,032,016,0110,0, + /* 45903 */ 02,017,033,015,0102,0, + /* 45909 */ 02,017,033,016,0101,0, + /* 45915 */ 03,017,070,0311,0110,0, + /* 45921 */ 03,017,070,0312,0110,0, + /* 45927 */ 03,017,070,0310,0110,0, + /* 45933 */ 03,017,070,0314,0110,0, + /* 45939 */ 03,017,070,0315,0110,0, + /* 45945 */ 03,017,070,0313,0110,0, + /* 45951 */ 0361,02,017,0256,0207,0, + /* 45957 */ 0361,02,017,0256,0206,0, + /* 45963 */ 0361,03,017,0256,0370,0, + /* 45969 */ 0310,03,017,01,0374,0, + /* 45975 */ 0311,03,017,01,0374,0, + /* 45981 */ 0313,03,017,01,0374,0, + /* 45987 */ 0360,02,017,034,0200,0, + /* 45993 */ 0360,03,017,01,0305,0, + /* 45999 */ 0332,02,017,0256,0206,0, + /* 46005 */ 0360,03,017,01,0317,0, + /* 46011 */ 0360,03,017,01,0327,0, + /* 46017 */ 0360,03,017,01,0300,0, + /* 46023 */ 0333,03,017,036,0373,0, + /* 46029 */ 0333,03,017,036,0372,0, + /* 46035 */ 0333,02,017,01,0205,0, + /* 46041 */ 0333,03,017,01,0352,0, + /* 46047 */ 0333,03,017,01,0350,0, + /* 46053 */ 0360,03,017,01,0350,0, + /* 46059 */ 0332,03,017,01,0351,0, + /* 46065 */ 0332,03,017,01,0350,0, + /* 46071 */ 0333,03,017,01,0356,0, + /* 46077 */ 0333,03,017,01,0357,0, + /* 46083 */ 0333,03,017,01,0355,0, + /* 46089 */ 0333,03,017,01,0354,0, + /* 46095 */ 0360,03,017,01,0306,0, + /* 46101 */ 0332,03,017,01,0306,0, + /* 46107 */ 0333,03,017,01,0306,0, + /* 46113 */ 0320,02,017,030,0200,0, + /* 46119 */ 0321,02,017,030,0200,0, + /* 46125 */ 0324,02,017,030,0200,0, + /* 46131 */ 0320,02,017,030,0201,0, + /* 46137 */ 0321,02,017,030,0201,0, + /* 46143 */ 0324,02,017,030,0201,0, + /* 46149 */ 0320,02,017,030,0202,0, + /* 46155 */ 0321,02,017,030,0202,0, + /* 46161 */ 0324,02,017,030,0202,0, + /* 46167 */ 0320,02,017,030,0203,0, + /* 46173 */ 0321,02,017,030,0203,0, + /* 46179 */ 0324,02,017,030,0203,0, + /* 46185 */ 0320,02,017,030,0204,0, + /* 46191 */ 0321,02,017,030,0204,0, + /* 46197 */ 0324,02,017,030,0204,0, + /* 46203 */ 0320,02,017,030,0205,0, + /* 46209 */ 0321,02,017,030,0205,0, + /* 46215 */ 0324,02,017,030,0205,0, + /* 46221 */ 0320,02,017,030,0206,0, + /* 46227 */ 0321,02,017,030,0206,0, + /* 46233 */ 0324,02,017,030,0206,0, + /* 46239 */ 0320,02,017,030,0207,0, + /* 46245 */ 0321,02,017,030,0207,0, + /* 46251 */ 0324,02,017,030,0207,0, + /* 46257 */ 0320,02,017,031,0200,0, + /* 46263 */ 0321,02,017,031,0200,0, + /* 46269 */ 0324,02,017,031,0200,0, + /* 46275 */ 0320,02,017,031,0201,0, + /* 46281 */ 0321,02,017,031,0201,0, + /* 46287 */ 0324,02,017,031,0201,0, + /* 46293 */ 0320,02,017,031,0202,0, + /* 46299 */ 0321,02,017,031,0202,0, + /* 46305 */ 0324,02,017,031,0202,0, + /* 46311 */ 0320,02,017,031,0203,0, + /* 46317 */ 0321,02,017,031,0203,0, + /* 46323 */ 0324,02,017,031,0203,0, + /* 46329 */ 0320,02,017,031,0204,0, + /* 46335 */ 0321,02,017,031,0204,0, + /* 46341 */ 0324,02,017,031,0204,0, + /* 46347 */ 0320,02,017,031,0205,0, + /* 46353 */ 0321,02,017,031,0205,0, + /* 46359 */ 0324,02,017,031,0205,0, + /* 46365 */ 0320,02,017,031,0206,0, + /* 46371 */ 0321,02,017,031,0206,0, + /* 46377 */ 0324,02,017,031,0206,0, + /* 46383 */ 0320,02,017,031,0207,0, + /* 46389 */ 0321,02,017,031,0207,0, + /* 46395 */ 0324,02,017,031,0207,0, + /* 46401 */ 0320,02,017,032,0200,0, + /* 46407 */ 0321,02,017,032,0200,0, + /* 46413 */ 0324,02,017,032,0200,0, + /* 46419 */ 0320,02,017,032,0201,0, + /* 46425 */ 0321,02,017,032,0201,0, + /* 46431 */ 0324,02,017,032,0201,0, + /* 46437 */ 0320,02,017,032,0202,0, + /* 46443 */ 0321,02,017,032,0202,0, + /* 46449 */ 0324,02,017,032,0202,0, + /* 46455 */ 0320,02,017,032,0203,0, + /* 46461 */ 0321,02,017,032,0203,0, + /* 46467 */ 0324,02,017,032,0203,0, + /* 46473 */ 0320,02,017,032,0204,0, + /* 46479 */ 0321,02,017,032,0204,0, + /* 46485 */ 0324,02,017,032,0204,0, + /* 46491 */ 0320,02,017,032,0205,0, + /* 46497 */ 0321,02,017,032,0205,0, + /* 46503 */ 0324,02,017,032,0205,0, + /* 46509 */ 0320,02,017,032,0206,0, + /* 46515 */ 0321,02,017,032,0206,0, + /* 46521 */ 0324,02,017,032,0206,0, + /* 46527 */ 0320,02,017,032,0207,0, + /* 46533 */ 0321,02,017,032,0207,0, + /* 46539 */ 0324,02,017,032,0207,0, + /* 46545 */ 0320,02,017,033,0200,0, + /* 46551 */ 0321,02,017,033,0200,0, + /* 46557 */ 0324,02,017,033,0200,0, + /* 46563 */ 0320,02,017,033,0201,0, + /* 46569 */ 0321,02,017,033,0201,0, + /* 46575 */ 0324,02,017,033,0201,0, + /* 46581 */ 0320,02,017,033,0202,0, + /* 46587 */ 0321,02,017,033,0202,0, + /* 46593 */ 0324,02,017,033,0202,0, + /* 46599 */ 0320,02,017,033,0203,0, + /* 46605 */ 0321,02,017,033,0203,0, + /* 46611 */ 0324,02,017,033,0203,0, + /* 46617 */ 0320,02,017,033,0204,0, + /* 46623 */ 0321,02,017,033,0204,0, + /* 46629 */ 0324,02,017,033,0204,0, + /* 46635 */ 0320,02,017,033,0205,0, + /* 46641 */ 0321,02,017,033,0205,0, + /* 46647 */ 0324,02,017,033,0205,0, + /* 46653 */ 0320,02,017,033,0206,0, + /* 46659 */ 0321,02,017,033,0206,0, + /* 46665 */ 0324,02,017,033,0206,0, + /* 46671 */ 0320,02,017,033,0207,0, + /* 46677 */ 0321,02,017,033,0207,0, + /* 46683 */ 0324,02,017,033,0207,0, + /* 46689 */ 0320,02,017,034,0200,0, + /* 46695 */ 0321,02,017,034,0200,0, + /* 46701 */ 0324,02,017,034,0200,0, + /* 46707 */ 0320,02,017,034,0201,0, + /* 46713 */ 0321,02,017,034,0201,0, + /* 46719 */ 0324,02,017,034,0201,0, + /* 46725 */ 0320,02,017,034,0202,0, + /* 46731 */ 0321,02,017,034,0202,0, + /* 46737 */ 0324,02,017,034,0202,0, + /* 46743 */ 0320,02,017,034,0203,0, + /* 46749 */ 0321,02,017,034,0203,0, + /* 46755 */ 0324,02,017,034,0203,0, + /* 46761 */ 0320,02,017,034,0204,0, + /* 46767 */ 0321,02,017,034,0204,0, + /* 46773 */ 0324,02,017,034,0204,0, + /* 46779 */ 0320,02,017,034,0205,0, + /* 46785 */ 0321,02,017,034,0205,0, + /* 46791 */ 0324,02,017,034,0205,0, + /* 46797 */ 0320,02,017,034,0206,0, + /* 46803 */ 0321,02,017,034,0206,0, + /* 46809 */ 0324,02,017,034,0206,0, + /* 46815 */ 0320,02,017,034,0207,0, + /* 46821 */ 0321,02,017,034,0207,0, + /* 46827 */ 0324,02,017,034,0207,0, + /* 46833 */ 0320,02,017,035,0200,0, + /* 46839 */ 0321,02,017,035,0200,0, + /* 46845 */ 0324,02,017,035,0200,0, + /* 46851 */ 0320,02,017,035,0201,0, + /* 46857 */ 0321,02,017,035,0201,0, + /* 46863 */ 0324,02,017,035,0201,0, + /* 46869 */ 0320,02,017,035,0202,0, + /* 46875 */ 0321,02,017,035,0202,0, + /* 46881 */ 0324,02,017,035,0202,0, + /* 46887 */ 0320,02,017,035,0203,0, + /* 46893 */ 0321,02,017,035,0203,0, + /* 46899 */ 0324,02,017,035,0203,0, + /* 46905 */ 0320,02,017,035,0204,0, + /* 46911 */ 0321,02,017,035,0204,0, + /* 46917 */ 0324,02,017,035,0204,0, + /* 46923 */ 0320,02,017,035,0205,0, + /* 46929 */ 0321,02,017,035,0205,0, + /* 46935 */ 0324,02,017,035,0205,0, + /* 46941 */ 0320,02,017,035,0206,0, + /* 46947 */ 0321,02,017,035,0206,0, + /* 46953 */ 0324,02,017,035,0206,0, + /* 46959 */ 0320,02,017,035,0207,0, + /* 46965 */ 0321,02,017,035,0207,0, + /* 46971 */ 0324,02,017,035,0207,0, + /* 46977 */ 0320,02,017,036,0200,0, + /* 46983 */ 0321,02,017,036,0200,0, + /* 46989 */ 0324,02,017,036,0200,0, + /* 46995 */ 0320,02,017,036,0201,0, + /* 47001 */ 0321,02,017,036,0201,0, + /* 47007 */ 0324,02,017,036,0201,0, + /* 47013 */ 0320,02,017,036,0202,0, + /* 47019 */ 0321,02,017,036,0202,0, + /* 47025 */ 0324,02,017,036,0202,0, + /* 47031 */ 0320,02,017,036,0203,0, + /* 47037 */ 0321,02,017,036,0203,0, + /* 47043 */ 0324,02,017,036,0203,0, + /* 47049 */ 0320,02,017,036,0204,0, + /* 47055 */ 0321,02,017,036,0204,0, + /* 47061 */ 0324,02,017,036,0204,0, + /* 47067 */ 0320,02,017,036,0205,0, + /* 47073 */ 0321,02,017,036,0205,0, + /* 47079 */ 0324,02,017,036,0205,0, + /* 47085 */ 0320,02,017,036,0206,0, + /* 47091 */ 0321,02,017,036,0206,0, + /* 47097 */ 0324,02,017,036,0206,0, + /* 47103 */ 0320,02,017,036,0207,0, + /* 47109 */ 0321,02,017,036,0207,0, + /* 47115 */ 0324,02,017,036,0207,0, + /* 47121 */ 0320,02,017,037,0201,0, + /* 47127 */ 0321,02,017,037,0201,0, + /* 47133 */ 0324,02,017,037,0201,0, + /* 47139 */ 0320,02,017,037,0202,0, + /* 47145 */ 0321,02,017,037,0202,0, + /* 47151 */ 0324,02,017,037,0202,0, + /* 47157 */ 0320,02,017,037,0203,0, + /* 47163 */ 0321,02,017,037,0203,0, + /* 47169 */ 0324,02,017,037,0203,0, + /* 47175 */ 0320,02,017,037,0204,0, + /* 47181 */ 0321,02,017,037,0204,0, + /* 47187 */ 0324,02,017,037,0204,0, + /* 47193 */ 0320,02,017,037,0205,0, + /* 47199 */ 0321,02,017,037,0205,0, + /* 47205 */ 0324,02,017,037,0205,0, + /* 47211 */ 0320,02,017,037,0206,0, + /* 47217 */ 0321,02,017,037,0206,0, + /* 47223 */ 0324,02,017,037,0206,0, + /* 47229 */ 0320,02,017,037,0207,0, + /* 47235 */ 0321,02,017,037,0207,0, + /* 47241 */ 0324,02,017,037,0207,0, + /* 47247 */ 0273,01,020,0101,0, + /* 47252 */ 0320,01,023,0110,0, + /* 47257 */ 0321,01,023,0110,0, + /* 47262 */ 0324,01,023,0110,0, + /* 47267 */ 0320,01,025,031,0, + /* 47272 */ 0321,01,025,041,0, + /* 47277 */ 0324,01,025,0255,0, + /* 47282 */ 0273,01,0,0101,0, + /* 47287 */ 0320,01,03,0110,0, + /* 47292 */ 0321,01,03,0110,0, + /* 47297 */ 0324,01,03,0110,0, + /* 47302 */ 0320,01,05,031,0, + /* 47307 */ 0321,01,05,041,0, + /* 47312 */ 0324,01,05,0255,0, + /* 47317 */ 0273,01,040,0101,0, + /* 47322 */ 0320,01,043,0110,0, + /* 47327 */ 0321,01,043,0110,0, + /* 47332 */ 0324,01,043,0110,0, + /* 47337 */ 0320,01,045,031,0, + /* 47342 */ 0321,01,045,041,0, + /* 47347 */ 0324,01,045,0255,0, + /* 47352 */ 0320,01,0142,0110,0, + /* 47357 */ 0321,01,0142,0110,0, + /* 47362 */ 0322,01,0350,064,0, + /* 47367 */ 0320,01,0350,064,0, + /* 47372 */ 0321,01,0350,064,0, + /* 47377 */ 0323,01,0350,064,0, + /* 47382 */ 0322,01,0377,0203,0, + /* 47387 */ 0324,01,0377,0203,0, + /* 47392 */ 0320,01,0377,0203,0, + /* 47397 */ 0321,01,0377,0203,0, + /* 47402 */ 0322,01,0377,0202,0, + /* 47407 */ 0320,01,0377,0202,0, + /* 47412 */ 0321,01,0377,0202,0, + /* 47417 */ 0323,01,0377,0202,0, + /* 47422 */ 0320,01,071,0101,0, + /* 47427 */ 0321,01,071,0101,0, + /* 47432 */ 0324,01,071,0101,0, + /* 47437 */ 0320,01,073,0110,0, + /* 47442 */ 0321,01,073,0110,0, + /* 47447 */ 0324,01,073,0110,0, + /* 47452 */ 0320,01,075,031,0, + /* 47457 */ 0321,01,075,041,0, + /* 47462 */ 0324,01,075,0255,0, + /* 47467 */ 01,0200,0207,021,0, + /* 47472 */ 01,0202,0207,021,0, + /* 47477 */ 0335,0321,01,0247,0, + /* 47482 */ 0335,0324,01,0247,0, + /* 47487 */ 0335,0320,01,0247,0, + /* 47492 */ 02,017,0246,0101,0, + /* 47497 */ 0273,01,0376,0201,0, + /* 47502 */ 0320,01,0367,0206,0, + /* 47507 */ 0321,01,0367,0206,0, + /* 47512 */ 0324,01,0367,0206,0, + /* 47517 */ 01,0310,030,025,0, + /* 47522 */ 01,0334,010,0300,0, + /* 47527 */ 01,0330,010,0300,0, + /* 47532 */ 01,0330,011,0300,0, + /* 47537 */ 01,0336,010,0300,0, + /* 47542 */ 0341,02,0333,0342,0, + /* 47547 */ 01,0332,010,0300,0, + /* 47552 */ 01,0332,011,0300,0, + /* 47557 */ 01,0332,010,0320,0, + /* 47562 */ 01,0332,011,0320,0, + /* 47567 */ 01,0332,010,0310,0, + /* 47572 */ 01,0332,011,0310,0, + /* 47577 */ 01,0333,010,0300,0, + /* 47582 */ 01,0333,011,0300,0, + /* 47587 */ 01,0333,010,0320,0, + /* 47592 */ 01,0333,011,0320,0, + /* 47597 */ 01,0333,010,0310,0, + /* 47602 */ 01,0333,011,0310,0, + /* 47607 */ 01,0333,010,0330,0, + /* 47612 */ 01,0333,011,0330,0, + /* 47617 */ 01,0332,010,0330,0, + /* 47622 */ 01,0332,011,0330,0, + /* 47627 */ 01,0330,010,0320,0, + /* 47632 */ 01,0330,011,0320,0, + /* 47637 */ 01,0333,010,0360,0, + /* 47642 */ 01,0333,011,0360,0, + /* 47647 */ 01,0337,010,0360,0, + /* 47652 */ 01,0337,011,0360,0, + /* 47657 */ 01,0330,010,0330,0, + /* 47662 */ 01,0330,011,0330,0, + /* 47667 */ 0341,02,0333,0341,0, + /* 47672 */ 01,0334,010,0370,0, + /* 47677 */ 01,0330,010,0360,0, + /* 47682 */ 01,0330,011,0360,0, + /* 47687 */ 01,0336,010,0370,0, + /* 47692 */ 01,0334,010,0360,0, + /* 47697 */ 01,0330,010,0370,0, + /* 47702 */ 01,0330,011,0370,0, + /* 47707 */ 01,0336,010,0360,0, + /* 47712 */ 0341,02,0333,0340,0, + /* 47717 */ 01,0335,010,0300,0, + /* 47722 */ 01,0337,010,0300,0, + /* 47727 */ 0341,02,0333,0343,0, + /* 47732 */ 01,0331,010,0300,0, + /* 47737 */ 01,0334,010,0310,0, + /* 47742 */ 01,0330,010,0310,0, + /* 47747 */ 01,0330,011,0310,0, + /* 47752 */ 01,0336,010,0310,0, + /* 47757 */ 0341,01,0335,0206,0, + /* 47762 */ 01,0335,010,0320,0, + /* 47767 */ 0341,01,0331,0207,0, + /* 47772 */ 0341,01,0331,0206,0, + /* 47777 */ 01,0335,010,0330,0, + /* 47782 */ 0341,01,0335,0207,0, + /* 47787 */ 0341,02,0337,0340,0, + /* 47792 */ 01,0334,010,0350,0, + /* 47797 */ 01,0330,010,0340,0, + /* 47802 */ 01,0330,011,0340,0, + /* 47807 */ 01,0336,010,0350,0, + /* 47812 */ 01,0334,010,0340,0, + /* 47817 */ 01,0330,010,0350,0, + /* 47822 */ 01,0330,011,0350,0, + /* 47827 */ 01,0336,010,0340,0, + /* 47832 */ 01,0335,010,0340,0, + /* 47837 */ 01,0335,011,0340,0, + /* 47842 */ 01,0333,010,0350,0, + /* 47847 */ 01,0333,011,0350,0, + /* 47852 */ 01,0337,010,0350,0, + /* 47857 */ 01,0337,011,0350,0, + /* 47862 */ 01,0335,010,0350,0, + /* 47867 */ 01,0335,011,0350,0, + /* 47872 */ 01,0331,010,0310,0, + /* 47877 */ 01,0331,011,0310,0, + /* 47882 */ 0320,01,0367,0207,0, + /* 47887 */ 0321,01,0367,0207,0, + /* 47892 */ 0324,01,0367,0207,0, + /* 47897 */ 0320,01,0367,0205,0, + /* 47902 */ 0321,01,0367,0205,0, + /* 47907 */ 0324,01,0367,0205,0, + /* 47912 */ 0320,01,0345,025,0, + /* 47917 */ 0321,01,0345,025,0, + /* 47922 */ 0273,01,0376,0200,0, + /* 47927 */ 02,017,01,0207,0, + /* 47932 */ 0310,01,0343,050,0, + /* 47937 */ 0311,01,0343,050,0, + /* 47942 */ 0371,01,0353,050,0, + /* 47947 */ 0322,01,0351,064,0, + /* 47952 */ 0320,01,0351,064,0, + /* 47957 */ 0321,01,0351,064,0, + /* 47962 */ 0323,01,0351,064,0, + /* 47967 */ 0322,01,0377,0205,0, + /* 47972 */ 0324,01,0377,0205,0, + /* 47977 */ 0320,01,0377,0205,0, + /* 47982 */ 0321,01,0377,0205,0, + /* 47987 */ 0322,01,0377,0204,0, + /* 47992 */ 0320,01,0377,0204,0, + /* 47997 */ 0321,01,0377,0204,0, + /* 48002 */ 0323,01,0377,0204,0, + /* 48007 */ 0320,01,0305,0110,0, + /* 48012 */ 0321,01,0305,0110,0, + /* 48017 */ 0320,01,0215,0110,0, + /* 48022 */ 0321,01,0215,0110,0, + /* 48027 */ 0324,01,0215,0110,0, + /* 48032 */ 0320,01,0304,0110,0, + /* 48037 */ 0321,01,0304,0110,0, + /* 48042 */ 02,017,01,0202,0, + /* 48047 */ 02,017,01,0203,0, + /* 48052 */ 02,017,0,0202,0, + /* 48057 */ 02,017,01,0206,0, + /* 48062 */ 0312,01,0342,050,0, + /* 48067 */ 0310,01,0342,050,0, + /* 48072 */ 0311,01,0342,050,0, + /* 48077 */ 0313,01,0342,050,0, + /* 48082 */ 0312,01,0341,050,0, + /* 48087 */ 0310,01,0341,050,0, + /* 48092 */ 0311,01,0341,050,0, + /* 48097 */ 0313,01,0341,050,0, + /* 48102 */ 0312,01,0340,050,0, + /* 48107 */ 0310,01,0340,050,0, + /* 48112 */ 0311,01,0340,050,0, + /* 48117 */ 0313,01,0340,050,0, + /* 48122 */ 02,017,0,0203,0, + /* 48127 */ 03,017,01,0310,0, + /* 48132 */ 03,017,01,0372,0, + /* 48137 */ 0320,01,0214,0101,0, + /* 48142 */ 0321,01,0214,0101,0, + /* 48147 */ 0323,01,0214,0101,0, + /* 48152 */ 0324,01,0214,0101,0, + /* 48157 */ 0323,01,0216,0110,0, + /* 48162 */ 0320,01,0216,0110,0, + /* 48167 */ 0321,01,0216,0110,0, + /* 48172 */ 0324,01,0216,0110,0, + /* 48177 */ 0320,01,0241,045,0, + /* 48182 */ 0321,01,0241,045,0, + /* 48187 */ 0324,01,0241,045,0, + /* 48192 */ 0320,01,0243,044,0, + /* 48197 */ 0321,01,0243,044,0, + /* 48202 */ 0324,01,0243,044,0, + /* 48207 */ 02,017,044,0101,0, + /* 48212 */ 02,017,046,0110,0, + /* 48217 */ 0271,01,0210,0101,0, + /* 48222 */ 0320,01,0213,0110,0, + /* 48227 */ 0321,01,0213,0110,0, + /* 48232 */ 0324,01,0213,0110,0, + /* 48237 */ 0320,010,0270,031,0, + /* 48242 */ 0321,010,0270,041,0, + /* 48247 */ 0323,010,0270,041,0, + /* 48252 */ 0324,010,0270,055,0, + /* 48257 */ 0324,01,0143,0110,0, + /* 48262 */ 0320,01,0367,0204,0, + /* 48267 */ 0321,01,0367,0204,0, + /* 48272 */ 0324,01,0367,0204,0, + /* 48277 */ 03,017,01,0311,0, + /* 48282 */ 03,017,01,0373,0, + /* 48287 */ 0273,01,0366,0203,0, + /* 48292 */ 0314,0326,01,0220,0, + /* 48297 */ 0273,01,0366,0202,0, + /* 48302 */ 0273,01,010,0101,0, + /* 48307 */ 0320,01,013,0110,0, + /* 48312 */ 0321,01,013,0110,0, + /* 48317 */ 0324,01,013,0110,0, + /* 48322 */ 0320,01,015,031,0, + /* 48327 */ 0321,01,015,041,0, + /* 48332 */ 0324,01,015,0255,0, + /* 48337 */ 0320,01,0347,024,0, + /* 48342 */ 0321,01,0347,024,0, + /* 48347 */ 0320,01,0217,0200,0, + /* 48352 */ 0321,01,0217,0200,0, + /* 48357 */ 0323,01,0217,0200,0, + /* 48362 */ 02,017,015,0200,0, + /* 48367 */ 02,017,015,0201,0, + /* 48372 */ 0320,01,0377,0206,0, + /* 48377 */ 0321,01,0377,0206,0, + /* 48382 */ 0323,01,0377,0206,0, + /* 48387 */ 0320,01,0152,0274,0, + /* 48392 */ 0320,01,0150,030,0, + /* 48397 */ 0321,01,0152,0274,0, + /* 48402 */ 0321,01,0150,040,0, + /* 48407 */ 0323,01,0152,0274,0, + /* 48412 */ 0323,01,0150,0254,0, + /* 48417 */ 01,0300,0202,025,0, + /* 48422 */ 0320,01,0321,0202,0, + /* 48427 */ 0320,01,0323,0202,0, + /* 48432 */ 0321,01,0321,0202,0, + /* 48437 */ 0321,01,0323,0202,0, + /* 48442 */ 0324,01,0321,0202,0, + /* 48447 */ 0324,01,0323,0202,0, + /* 48452 */ 01,0300,0203,025,0, + /* 48457 */ 0320,01,0321,0203,0, + /* 48462 */ 0320,01,0323,0203,0, + /* 48467 */ 0321,01,0321,0203,0, + /* 48472 */ 0321,01,0323,0203,0, + /* 48477 */ 0324,01,0321,0203,0, + /* 48482 */ 0324,01,0323,0203,0, + /* 48487 */ 03,017,01,0371,0, + /* 48492 */ 0320,01,0312,030,0, + /* 48497 */ 0320,01,0302,030,0, + /* 48502 */ 0321,01,0302,030,0, + /* 48507 */ 0321,01,0312,030,0, + /* 48512 */ 0323,01,0302,030,0, + /* 48517 */ 0324,01,0312,030,0, + /* 48522 */ 01,0300,0200,025,0, + /* 48527 */ 0320,01,0321,0200,0, + /* 48532 */ 0320,01,0323,0200,0, + /* 48537 */ 0321,01,0321,0200,0, + /* 48542 */ 0321,01,0323,0200,0, + /* 48547 */ 0324,01,0321,0200,0, + /* 48552 */ 0324,01,0323,0200,0, + /* 48557 */ 01,0300,0201,025,0, + /* 48562 */ 0320,01,0321,0201,0, + /* 48567 */ 0320,01,0323,0201,0, + /* 48572 */ 0321,01,0321,0201,0, + /* 48577 */ 0321,01,0323,0201,0, + /* 48582 */ 0324,01,0321,0201,0, + /* 48587 */ 0324,01,0323,0201,0, + /* 48592 */ 02,017,0173,0200,0, + /* 48597 */ 02,017,0175,0200,0, + /* 48602 */ 01,0300,0204,025,0, + /* 48607 */ 0320,01,0321,0204,0, + /* 48612 */ 0320,01,0323,0204,0, + /* 48617 */ 0321,01,0321,0204,0, + /* 48622 */ 0321,01,0323,0204,0, + /* 48627 */ 0324,01,0321,0204,0, + /* 48632 */ 0324,01,0323,0204,0, + /* 48637 */ 01,0300,0207,025,0, + /* 48642 */ 0320,01,0321,0207,0, + /* 48647 */ 0320,01,0323,0207,0, + /* 48652 */ 0321,01,0321,0207,0, + /* 48657 */ 0321,01,0323,0207,0, + /* 48662 */ 0324,01,0321,0207,0, + /* 48667 */ 0324,01,0323,0207,0, + /* 48672 */ 0273,01,030,0101,0, + /* 48677 */ 0320,01,033,0110,0, + /* 48682 */ 0321,01,033,0110,0, + /* 48687 */ 0324,01,033,0110,0, + /* 48692 */ 0320,01,035,031,0, + /* 48697 */ 0321,01,035,041,0, + /* 48702 */ 0324,01,035,0255,0, + /* 48707 */ 0335,0321,01,0257,0, + /* 48712 */ 0335,0324,01,0257,0, + /* 48717 */ 0335,0320,01,0257,0, + /* 48722 */ 02,017,01,0200,0, + /* 48727 */ 01,0300,0205,025,0, + /* 48732 */ 0320,01,0321,0205,0, + /* 48737 */ 0320,01,0323,0205,0, + /* 48742 */ 0321,01,0321,0205,0, + /* 48747 */ 0321,01,0323,0205,0, + /* 48752 */ 0324,01,0321,0205,0, + /* 48757 */ 0324,01,0323,0205,0, + /* 48762 */ 02,017,01,0201,0, + /* 48767 */ 03,017,01,0336,0, + /* 48772 */ 0273,01,050,0101,0, + /* 48777 */ 0320,01,053,0110,0, + /* 48782 */ 0321,01,053,0110,0, + /* 48787 */ 0324,01,053,0110,0, + /* 48792 */ 0320,01,055,031,0, + /* 48797 */ 0321,01,055,041,0, + /* 48802 */ 0324,01,055,0255,0, + /* 48807 */ 02,017,0172,0200,0, + /* 48812 */ 02,017,0174,0200,0, + /* 48817 */ 03,017,01,0370,0, + /* 48822 */ 0320,01,0205,0101,0, + /* 48827 */ 0321,01,0205,0101,0, + /* 48832 */ 0324,01,0205,0101,0, + /* 48837 */ 0320,01,0205,0110,0, + /* 48842 */ 0321,01,0205,0110,0, + /* 48847 */ 0324,01,0205,0110,0, + /* 48852 */ 0320,01,0251,031,0, + /* 48857 */ 0321,01,0251,041,0, + /* 48862 */ 0324,01,0251,0255,0, + /* 48867 */ 01,0366,0200,021,0, + /* 48872 */ 02,017,0,0204,0, + /* 48877 */ 02,017,0,0205,0, + /* 48882 */ 0272,01,0206,0110,0, + /* 48887 */ 0272,01,0206,0101,0, + /* 48892 */ 0273,01,060,0101,0, + /* 48897 */ 0320,01,063,0110,0, + /* 48902 */ 0321,01,063,0110,0, + /* 48907 */ 0324,01,063,0110,0, + /* 48912 */ 0320,01,065,031,0, + /* 48917 */ 0321,01,065,041,0, + /* 48922 */ 0324,01,065,0255,0, + /* 48927 */ 0370,01,0167,050,0, + /* 48932 */ 0370,01,0163,050,0, + /* 48937 */ 0370,01,0162,050,0, + /* 48942 */ 0370,01,0166,050,0, + /* 48947 */ 0370,01,0164,050,0, + /* 48952 */ 0370,01,0177,050,0, + /* 48957 */ 0370,01,0175,050,0, + /* 48962 */ 0370,01,0174,050,0, + /* 48967 */ 0370,01,0176,050,0, + /* 48972 */ 0370,01,0165,050,0, + /* 48977 */ 0370,01,0161,050,0, + /* 48982 */ 0370,01,0173,050,0, + /* 48987 */ 0370,01,0171,050,0, + /* 48992 */ 0370,01,0160,050,0, + /* 48997 */ 0370,01,0172,050,0, + /* 49002 */ 0370,01,0170,050,0, + /* 49007 */ 02,017,0227,0200,0, + /* 49012 */ 02,017,0223,0200,0, + /* 49017 */ 02,017,0222,0200,0, + /* 49022 */ 02,017,0226,0200,0, + /* 49027 */ 02,017,0224,0200,0, + /* 49032 */ 02,017,0237,0200,0, + /* 49037 */ 02,017,0235,0200,0, + /* 49042 */ 02,017,0234,0200,0, + /* 49047 */ 02,017,0236,0200,0, + /* 49052 */ 02,017,0225,0200,0, + /* 49057 */ 02,017,0221,0200,0, + /* 49062 */ 02,017,0233,0200,0, + /* 49067 */ 02,017,0231,0200,0, + /* 49072 */ 02,017,0220,0200,0, + /* 49077 */ 02,017,0232,0200,0, + /* 49082 */ 02,017,0230,0200,0, + /* 49087 */ 03,017,01,0320,0, + /* 49092 */ 03,017,01,0321,0, + /* 49097 */ 03,017,01,0335,0, + /* 49102 */ 03,017,01,0334,0, + /* 49107 */ 03,017,01,0324,0, + /* 49112 */ 03,017,01,0302,0, + /* 49117 */ 03,017,01,0332,0, + /* 49122 */ 03,017,01,0331,0, + /* 49127 */ 03,017,01,0303,0, + /* 49132 */ 03,017,01,0330,0, + /* 49137 */ 03,017,01,0333,0, + /* 49142 */ 03,017,01,0304,0, + /* 49147 */ 03,017,01,0312,0, + /* 49152 */ 03,017,01,0313,0, + /* 49157 */ 03,017,0247,0300,0, + /* 49162 */ 02,0306,0370,020,0, + /* 49167 */ 03,017,01,0325,0, + /* 49172 */ 03,017,01,0326,0, + /* 49177 */ 02,017,015,0202,0, + /* 49182 */ 0333,02,017,011,0, + /* 49187 */ 02,0325,012,0, + /* 49191 */ 01,0325,024,0, + /* 49195 */ 02,0324,012,0, + /* 49199 */ 01,0324,024,0, + /* 49203 */ 01,024,021,0, + /* 49207 */ 01,04,021,0, + /* 49211 */ 01,044,021,0, + /* 49215 */ 02,017,072,0, + /* 49219 */ 02,017,073,0, + /* 49223 */ 0320,01,0230,0, + /* 49227 */ 0321,01,0231,0, + /* 49231 */ 0324,01,0230,0, + /* 49235 */ 02,017,06,0, + /* 49239 */ 01,070,0101,0, + /* 49243 */ 01,074,021,0, + /* 49247 */ 0335,01,0246,0, + /* 49251 */ 02,017,0242,0, + /* 49255 */ 02,017,075,0, + /* 49259 */ 02,017,074,0, + /* 49263 */ 0324,01,0231,0, + /* 49267 */ 0320,01,0231,0, + /* 49271 */ 0321,01,0230,0, + /* 49275 */ 0320,010,0110,0, + /* 49279 */ 0321,010,0110,0, + /* 49283 */ 01,0366,0206,0, + /* 49287 */ 02,017,071,0, + /* 49291 */ 02,017,0167,0, + /* 49295 */ 02,0331,0360,0, + /* 49299 */ 02,0331,0341,0, + /* 49303 */ 01,0330,0200,0, + /* 49307 */ 01,0334,0200,0, + /* 49311 */ 02,0336,0301,0, + /* 49315 */ 01,0337,0204,0, + /* 49319 */ 01,0337,0206,0, + /* 49323 */ 02,0331,0340,0, + /* 49327 */ 02,0332,0301,0, + /* 49331 */ 02,0332,0321,0, + /* 49335 */ 02,0332,0311,0, + /* 49339 */ 02,0333,0301,0, + /* 49343 */ 02,0333,0321,0, + /* 49347 */ 02,0333,0311,0, + /* 49351 */ 02,0333,0331,0, + /* 49355 */ 02,0332,0331,0, + /* 49359 */ 01,0330,0202,0, + /* 49363 */ 01,0334,0202,0, + /* 49367 */ 02,0330,0321,0, + /* 49371 */ 02,0333,0361,0, + /* 49375 */ 02,0337,0361,0, + /* 49379 */ 01,0330,0203,0, + /* 49383 */ 01,0334,0203,0, + /* 49387 */ 02,0330,0331,0, + /* 49391 */ 02,0336,0331,0, + /* 49395 */ 02,0331,0377,0, + /* 49399 */ 02,0331,0366,0, + /* 49403 */ 01,0330,0206,0, + /* 49407 */ 01,0334,0206,0, + /* 49411 */ 02,0336,0371,0, + /* 49415 */ 01,0330,0207,0, + /* 49419 */ 01,0334,0207,0, + /* 49423 */ 02,0336,0361,0, + /* 49427 */ 02,017,016,0, + /* 49431 */ 02,0335,0301,0, + /* 49435 */ 02,0337,0301,0, + /* 49439 */ 01,0332,0200,0, + /* 49443 */ 01,0336,0200,0, + /* 49447 */ 01,0332,0202,0, + /* 49451 */ 01,0336,0202,0, + /* 49455 */ 01,0332,0203,0, + /* 49459 */ 01,0336,0203,0, + /* 49463 */ 01,0332,0206,0, + /* 49467 */ 01,0336,0206,0, + /* 49471 */ 01,0332,0207,0, + /* 49475 */ 01,0336,0207,0, + /* 49479 */ 01,0333,0200,0, + /* 49483 */ 01,0337,0200,0, + /* 49487 */ 01,0337,0205,0, + /* 49491 */ 01,0332,0201,0, + /* 49495 */ 01,0336,0201,0, + /* 49499 */ 02,0331,0367,0, + /* 49503 */ 01,0333,0202,0, + /* 49507 */ 01,0337,0202,0, + /* 49511 */ 01,0333,0203,0, + /* 49515 */ 01,0337,0203,0, + /* 49519 */ 01,0337,0207,0, + /* 49523 */ 01,0337,0201,0, + /* 49527 */ 01,0333,0201,0, + /* 49531 */ 01,0335,0201,0, + /* 49535 */ 01,0332,0204,0, + /* 49539 */ 01,0336,0204,0, + /* 49543 */ 01,0332,0205,0, + /* 49547 */ 01,0336,0205,0, + /* 49551 */ 01,0331,0200,0, + /* 49555 */ 01,0335,0200,0, + /* 49559 */ 01,0333,0205,0, + /* 49563 */ 02,0331,0301,0, + /* 49567 */ 02,0331,0350,0, + /* 49571 */ 01,0331,0205,0, + /* 49575 */ 01,0331,0204,0, + /* 49579 */ 02,0331,0352,0, + /* 49583 */ 02,0331,0351,0, + /* 49587 */ 02,0331,0354,0, + /* 49591 */ 02,0331,0355,0, + /* 49595 */ 02,0331,0353,0, + /* 49599 */ 02,0331,0356,0, + /* 49603 */ 01,0330,0201,0, + /* 49607 */ 01,0334,0201,0, + /* 49611 */ 02,0336,0311,0, + /* 49615 */ 02,0331,0320,0, + /* 49619 */ 02,0331,0363,0, + /* 49623 */ 02,0331,0370,0, + /* 49627 */ 02,0331,0365,0, + /* 49631 */ 02,0331,0362,0, + /* 49635 */ 02,0331,0374,0, + /* 49639 */ 01,0335,0204,0, + /* 49643 */ 02,0331,0375,0, + /* 49647 */ 02,0333,0344,0, + /* 49651 */ 02,0331,0376,0, + /* 49655 */ 02,0331,0373,0, + /* 49659 */ 02,0331,0372,0, + /* 49663 */ 01,0331,0202,0, + /* 49667 */ 01,0335,0202,0, + /* 49671 */ 02,0335,0321,0, + /* 49675 */ 01,0331,0203,0, + /* 49679 */ 01,0335,0203,0, + /* 49683 */ 01,0333,0207,0, + /* 49687 */ 02,0335,0331,0, + /* 49691 */ 01,0330,0204,0, + /* 49695 */ 01,0334,0204,0, + /* 49699 */ 02,0336,0351,0, + /* 49703 */ 01,0330,0205,0, + /* 49707 */ 01,0334,0205,0, + /* 49711 */ 02,0336,0341,0, + /* 49715 */ 02,0331,0344,0, + /* 49719 */ 02,0335,0341,0, + /* 49723 */ 02,0333,0351,0, + /* 49727 */ 02,0337,0351,0, + /* 49731 */ 02,0335,0351,0, + /* 49735 */ 02,0332,0351,0, + /* 49739 */ 02,0331,0345,0, + /* 49743 */ 02,0331,0311,0, + /* 49747 */ 02,0331,0364,0, + /* 49751 */ 02,0331,0361,0, + /* 49755 */ 02,0331,0371,0, + /* 49759 */ 01,0366,0207,0, + /* 49763 */ 01,0366,0205,0, + /* 49767 */ 01,0344,025,0, + /* 49771 */ 0320,01,0355,0, + /* 49775 */ 0321,01,0355,0, + /* 49779 */ 0320,010,0100,0, + /* 49783 */ 0321,010,0100,0, + /* 49787 */ 0321,01,0155,0, + /* 49791 */ 0320,01,0155,0, + /* 49795 */ 01,0315,024,0, + /* 49799 */ 02,017,010,0, + /* 49803 */ 0322,01,0317,0, + /* 49807 */ 0321,01,0317,0, + /* 49811 */ 0324,01,0317,0, + /* 49815 */ 0320,01,0317,0, + /* 49819 */ 02,017,07,0, + /* 49823 */ 02,017,05,0, + /* 49827 */ 0321,01,0255,0, + /* 49831 */ 0324,01,0255,0, + /* 49835 */ 0320,01,0255,0, + /* 49839 */ 01,0240,045,0, + /* 49843 */ 01,0242,044,0, + /* 49847 */ 01,0212,0110,0, + /* 49851 */ 010,0260,021,0, + /* 49855 */ 0321,01,0245,0, + /* 49859 */ 0324,01,0245,0, + /* 49863 */ 0320,01,0245,0, + /* 49867 */ 01,0366,0204,0, + /* 49871 */ 01,014,021,0, + /* 49875 */ 01,0346,024,0, + /* 49879 */ 0320,01,0357,0, + /* 49883 */ 0321,01,0357,0, + /* 49887 */ 0321,01,0157,0, + /* 49891 */ 0320,01,0157,0, + /* 49895 */ 0333,01,0220,0, + /* 49899 */ 0320,010,0130,0, + /* 49903 */ 0321,010,0130,0, + /* 49907 */ 0323,010,0130,0, + /* 49911 */ 02,017,0241,0, + /* 49915 */ 02,017,0251,0, + /* 49919 */ 0322,01,0141,0, + /* 49923 */ 0321,01,0141,0, + /* 49927 */ 0320,01,0141,0, + /* 49931 */ 0322,01,0235,0, + /* 49935 */ 0321,01,0235,0, + /* 49939 */ 0320,01,0235,0, + /* 49943 */ 0320,010,0120,0, + /* 49947 */ 0321,010,0120,0, + /* 49951 */ 0323,010,0120,0, + /* 49955 */ 02,017,0240,0, + /* 49959 */ 02,017,0250,0, + /* 49963 */ 0322,01,0140,0, + /* 49967 */ 0321,01,0140,0, + /* 49971 */ 0320,01,0140,0, + /* 49975 */ 0322,01,0234,0, + /* 49979 */ 0321,01,0234,0, + /* 49983 */ 0320,01,0234,0, + /* 49987 */ 01,0320,0202,0, + /* 49991 */ 01,0322,0202,0, + /* 49995 */ 01,0320,0203,0, + /* 49999 */ 01,0322,0203,0, + /* 50003 */ 02,017,062,0, + /* 50007 */ 02,017,063,0, + /* 50011 */ 02,017,061,0, + /* 50015 */ 0320,01,0303,0, + /* 50019 */ 0320,01,0313,0, + /* 50023 */ 0321,01,0303,0, + /* 50027 */ 0321,01,0313,0, + /* 50031 */ 0323,01,0303,0, + /* 50035 */ 0324,01,0313,0, + /* 50039 */ 01,0320,0200,0, + /* 50043 */ 01,0322,0200,0, + /* 50047 */ 01,0320,0201,0, + /* 50051 */ 01,0322,0201,0, + /* 50055 */ 02,017,0252,0, + /* 50059 */ 01,0320,0204,0, + /* 50063 */ 01,0322,0204,0, + /* 50067 */ 01,0320,0207,0, + /* 50071 */ 01,0322,0207,0, + /* 50075 */ 01,034,021,0, + /* 50079 */ 0335,01,0256,0, + /* 50083 */ 01,0320,0205,0, + /* 50087 */ 01,0322,0205,0, + /* 50091 */ 02,017,070,0, + /* 50095 */ 02,017,0176,0, + /* 50099 */ 0321,01,0253,0, + /* 50103 */ 0324,01,0253,0, + /* 50107 */ 0320,01,0253,0, + /* 50111 */ 01,054,021,0, + /* 50115 */ 02,017,064,0, + /* 50119 */ 02,017,065,0, + /* 50123 */ 01,0204,0101,0, + /* 50127 */ 01,0204,0110,0, + /* 50131 */ 01,0250,021,0, + /* 50135 */ 02,017,0377,0, + /* 50139 */ 02,017,0271,0, + /* 50143 */ 02,017,013,0, + /* 50147 */ 02,017,060,0, + /* 50151 */ 0320,011,0220,0, + /* 50155 */ 0321,011,0220,0, + /* 50159 */ 0324,011,0220,0, + /* 50163 */ 0320,010,0220,0, + /* 50167 */ 0321,010,0220,0, + /* 50171 */ 0324,010,0220,0, + /* 50175 */ 0321,01,0220,0, + /* 50179 */ 01,064,021,0, + /* 50183 */ 02,017,067,0, + /* 50187 */ 01,067,0, + /* 50190 */ 01,077,0, + /* 50193 */ 01,0365,0, + /* 50196 */ 01,047,0, + /* 50199 */ 01,057,0, + /* 50202 */ 01,0364,0, + /* 50205 */ 01,0361,0, + /* 50208 */ 01,0154,0, + /* 50211 */ 01,0314,0, + /* 50214 */ 01,0316,0, + /* 50217 */ 01,0237,0, + /* 50220 */ 01,0254,0, + /* 50223 */ 01,0156,0, + /* 50226 */ 01,0375,0, +}; + +/* + * Bytecode frequencies (including reuse): + * + * 0:8285 | 40: 2 | 100: 50 | 140: 0 | 200: 180 | 240: 768 | 300: 1 | 340: 8 + * 1:7845 | 41: 37 | 101: 645 | 141: 0 | 201: 94 | 241:1569 | 301: 0 | 341: 10 + * 2:1432 | 42: 12 | 102: 14 | 142: 0 | 202: 110 | 242: 1 | 302: 0 | 342: 0 + * 3: 242 | 43: 0 | 103: 0 | 143: 0 | 203: 89 | 243: 0 | 303: 0 | 343: 0 + * 4: 2 | 44: 4 | 104: 0 | 144: 0 | 204: 121 | 244: 0 | 304: 0 | 344: 0 + * 5: 0 | 45: 4 | 105: 0 | 145: 0 | 205: 88 | 245: 0 | 305: 0 | 345: 0 + * 6: 0 | 46: 0 | 106: 0 | 146: 0 | 206: 112 | 246: 0 | 306: 0 | 346: 0 + * 7: 0 | 47: 0 | 107: 0 | 147: 0 | 207: 89 | 247: 0 | 307: 0 | 347: 0 + * 10: 73 | 50: 115 | 110:3168 | 150: 0 | 210: 8 | 250: 863 | 310: 14 | 350: 0 + * 11: 26 | 51: 0 | 111: 0 | 151: 0 | 211: 14 | 251: 0 | 311: 12 | 351: 0 + * 12: 0 | 52: 0 | 112: 0 | 152: 0 | 212: 19 | 252: 0 | 312: 5 | 352: 0 + * 13: 0 | 53: 0 | 113: 0 | 153: 0 | 213: 9 | 253: 0 | 313: 12 | 353: 0 + * 14: 0 | 54: 0 | 114: 0 | 154: 0 | 214: 15 | 254: 2 | 314: 1 | 354: 0 + * 15: 2 | 55: 1 | 115: 0 | 155: 0 | 215: 2 | 255: 23 | 315: 0 | 355: 0 + * 16: 4 | 56: 0 | 116: 0 | 156: 0 | 216: 19 | 256: 2 | 316: 0 | 356: 0 + * 17: 0 | 57: 0 | 117: 0 | 157: 0 | 217: 7 | 257: 0 | 317: 21 | 357: 0 + * 20: 4 | 60: 0 | 120:2566 | 160: 0 | 220: 0 | 260: 800 | 320: 435 | 360: 198 + * 21: 107 | 61: 0 | 121: 0 | 161: 0 | 221: 0 | 261:1022 | 321: 448 | 361: 255 + * 22: 408 | 62: 0 | 122: 0 | 162: 0 | 222: 0 | 262: 103 | 322: 52 | 362: 0 + * 23: 195 | 63: 0 | 123: 0 | 163: 0 | 223: 0 | 263: 0 | 323: 165 | 363: 0 + * 24: 6 | 64: 207 | 124: 0 | 164: 0 | 224: 0 | 264: 0 | 324: 389 | 364: 0 + * 25: 67 | 65: 0 | 125: 0 | 165: 0 | 225: 0 | 265: 0 | 325: 2 | 365: 0 + * 26: 63 | 66: 0 | 126: 0 | 166: 0 | 226: 0 | 266: 0 | 326: 13 | 366: 0 + * 27: 1 | 67: 0 | 127: 0 | 167: 0 | 227: 0 | 267: 0 | 327: 0 | 367: 0 + * 30: 24 | 70: 0 | 130: 35 | 170: 0 | 230: 0 | 270: 386 | 330: 0 | 370: 30 + * 31: 36 | 71: 0 | 131: 0 | 171: 1 | 231: 0 | 271: 12 | 331: 6 | 371: 1 + * 32: 4 | 72: 0 | 132: 0 | 172: 0 | 232: 0 | 272: 8 | 332: 64 | 372: 0 + * 33: 0 | 73: 0 | 133: 0 | 173: 0 | 233: 0 | 273: 183 | 333: 101 | 373: 30 + * 34: 6 | 74: 6 | 134: 0 | 174: 0 | 234: 0 | 274: 6 | 334: 2 | 374: 30 + * 35: 2 | 75: 0 | 135: 0 | 175: 35 | 235: 0 | 275: 94 | 335: 8 | 375: 26 + * 36: 0 | 76: 0 | 136: 0 | 176: 88 | 236: 0 | 276: 12 | 336: 8 | 376: 24 + * 37: 0 | 77: 0 | 137: 0 | 177: 53 | 237: 0 | 277: 0 | 337: 0 | 377: 0 + */ diff --git a/vere/ext/nasm/x86/insnsd.c b/vere/ext/nasm/x86/insnsd.c new file mode 100644 index 0000000..53aff50 --- /dev/null +++ b/vere/ext/nasm/x86/insnsd.c @@ -0,0 +1,29941 @@ +/* This file auto-generated from insns.dat by insns.pl - don't edit it */ + +#include "nasm.h" +#include "insns.h" + +static const struct itemplate instrux[] = { + /* 0 */ {I_RESB, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + /* 1 */ {I_RESW, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + /* 2 */ {I_RESD, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + /* 3 */ {I_RESQ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + /* 4 */ {I_REST, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + /* 5 */ {I_RESO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + /* 6 */ {I_RESY, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + /* 7 */ {I_RESZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49325, 0}, + /* 8 */ {I_AAA, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50187, 1}, + /* 9 */ {I_AAD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49187, 1}, + /* 10 */ {I_AAD, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49191, 2}, + /* 11 */ {I_AAM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49195, 1}, + /* 12 */ {I_AAM, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49199, 2}, + /* 13 */ {I_AAS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50190, 1}, + /* 14 */ {I_ADC, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47247, 3}, + /* 15 */ {I_ADC, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47248, 0}, + /* 16 */ {I_ADC, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42741, 3}, + /* 17 */ {I_ADC, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42742, 0}, + /* 18 */ {I_ADC, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42747, 4}, + /* 19 */ {I_ADC, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42748, 5}, + /* 20 */ {I_ADC, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42753, 6}, + /* 21 */ {I_ADC, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42754, 7}, + /* 22 */ {I_ADC, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+36381, 8}, + /* 23 */ {I_ADC, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+36381, 0}, + /* 24 */ {I_ADC, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47252, 8}, + /* 25 */ {I_ADC, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+47252, 0}, + /* 26 */ {I_ADC, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47257, 9}, + /* 27 */ {I_ADC, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+47257, 5}, + /* 28 */ {I_ADC, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47262, 10}, + /* 29 */ {I_ADC, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+47262, 7}, + /* 30 */ {I_ADC, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32864, 11}, + /* 31 */ {I_ADC, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32871, 12}, + /* 32 */ {I_ADC, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32878, 13}, + /* 33 */ {I_ADC, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49203, 8}, + /* 34 */ {I_ADC, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47267, 8}, + /* 35 */ {I_ADC, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47272, 9}, + /* 36 */ {I_ADC, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47277, 10}, + /* 37 */ {I_ADC, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42759, 3}, + /* 38 */ {I_ADC, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32885, 3}, + /* 39 */ {I_ADC, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32892, 4}, + /* 40 */ {I_ADC, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32899, 6}, + /* 41 */ {I_ADC, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+32885, 3}, + /* 42 */ {I_ADC, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32892, 4}, + /* 43 */ {I_ADD, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47282, 3}, + /* 44 */ {I_ADD, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47283, 0}, + /* 45 */ {I_ADD, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42771, 3}, + /* 46 */ {I_ADD, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42772, 0}, + /* 47 */ {I_ADD, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42777, 4}, + /* 48 */ {I_ADD, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42778, 5}, + /* 49 */ {I_ADD, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42783, 6}, + /* 50 */ {I_ADD, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42784, 7}, + /* 51 */ {I_ADD, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+40154, 8}, + /* 52 */ {I_ADD, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+40154, 0}, + /* 53 */ {I_ADD, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47287, 8}, + /* 54 */ {I_ADD, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+47287, 0}, + /* 55 */ {I_ADD, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47292, 9}, + /* 56 */ {I_ADD, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+47292, 5}, + /* 57 */ {I_ADD, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47297, 10}, + /* 58 */ {I_ADD, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+47297, 7}, + /* 59 */ {I_ADD, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32906, 11}, + /* 60 */ {I_ADD, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32913, 12}, + /* 61 */ {I_ADD, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32920, 13}, + /* 62 */ {I_ADD, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49207, 8}, + /* 63 */ {I_ADD, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47302, 8}, + /* 64 */ {I_ADD, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47307, 9}, + /* 65 */ {I_ADD, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47312, 10}, + /* 66 */ {I_ADD, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42789, 3}, + /* 67 */ {I_ADD, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32927, 3}, + /* 68 */ {I_ADD, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32934, 4}, + /* 69 */ {I_ADD, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32941, 6}, + /* 70 */ {I_ADD, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42789, 3}, + /* 71 */ {I_ADD, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+32927, 3}, + /* 72 */ {I_ADD, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32934, 4}, + /* 73 */ {I_AND, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47317, 3}, + /* 74 */ {I_AND, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47318, 0}, + /* 75 */ {I_AND, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42801, 3}, + /* 76 */ {I_AND, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42802, 0}, + /* 77 */ {I_AND, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42807, 4}, + /* 78 */ {I_AND, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42808, 5}, + /* 79 */ {I_AND, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42813, 6}, + /* 80 */ {I_AND, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42814, 7}, + /* 81 */ {I_AND, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+40434, 8}, + /* 82 */ {I_AND, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+40434, 0}, + /* 83 */ {I_AND, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47322, 8}, + /* 84 */ {I_AND, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+47322, 0}, + /* 85 */ {I_AND, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47327, 9}, + /* 86 */ {I_AND, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+47327, 5}, + /* 87 */ {I_AND, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47332, 10}, + /* 88 */ {I_AND, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+47332, 7}, + /* 89 */ {I_AND, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32948, 11}, + /* 90 */ {I_AND, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32955, 12}, + /* 91 */ {I_AND, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+32962, 13}, + /* 92 */ {I_AND, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49211, 8}, + /* 93 */ {I_AND, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47337, 8}, + /* 94 */ {I_AND, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47342, 9}, + /* 95 */ {I_AND, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47347, 10}, + /* 96 */ {I_AND, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42819, 3}, + /* 97 */ {I_AND, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32969, 3}, + /* 98 */ {I_AND, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32976, 4}, + /* 99 */ {I_AND, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+32983, 6}, + /* 100 */ {I_AND, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42819, 3}, + /* 101 */ {I_AND, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+32969, 3}, + /* 102 */ {I_AND, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32976, 4}, + /* 103 */ {I_ARPL, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+29252, 15}, + /* 104 */ {I_ARPL, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+29252, 16}, + /* 105 */ {I_BOUND, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47352, 18}, + /* 106 */ {I_BOUND, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47357, 19}, + /* 107 */ {I_BSF, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+32990, 9}, + /* 108 */ {I_BSF, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+32990, 5}, + /* 109 */ {I_BSF, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+32997, 9}, + /* 110 */ {I_BSF, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32997, 5}, + /* 111 */ {I_BSF, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33004, 10}, + /* 112 */ {I_BSF, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33004, 7}, + /* 113 */ {I_BSR, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33011, 9}, + /* 114 */ {I_BSR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33011, 5}, + /* 115 */ {I_BSR, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33018, 9}, + /* 116 */ {I_BSR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33018, 5}, + /* 117 */ {I_BSR, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33025, 10}, + /* 118 */ {I_BSR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33025, 7}, + /* 119 */ {I_BSWAP, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42831, 20}, + /* 120 */ {I_BSWAP, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42837, 7}, + /* 121 */ {I_BT, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42843, 9}, + /* 122 */ {I_BT, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42843, 5}, + /* 123 */ {I_BT, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42849, 9}, + /* 124 */ {I_BT, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42849, 5}, + /* 125 */ {I_BT, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42855, 10}, + /* 126 */ {I_BT, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42855, 7}, + /* 127 */ {I_BT, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33032, 5}, + /* 128 */ {I_BT, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33039, 5}, + /* 129 */ {I_BT, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33046, 7}, + /* 130 */ {I_BTC, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33053, 4}, + /* 131 */ {I_BTC, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33054, 5}, + /* 132 */ {I_BTC, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33060, 4}, + /* 133 */ {I_BTC, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33061, 5}, + /* 134 */ {I_BTC, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33067, 6}, + /* 135 */ {I_BTC, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33068, 7}, + /* 136 */ {I_BTC, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12304, 12}, + /* 137 */ {I_BTC, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12312, 12}, + /* 138 */ {I_BTC, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12320, 13}, + /* 139 */ {I_BTR, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33074, 4}, + /* 140 */ {I_BTR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33075, 5}, + /* 141 */ {I_BTR, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33081, 4}, + /* 142 */ {I_BTR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33082, 5}, + /* 143 */ {I_BTR, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33088, 6}, + /* 144 */ {I_BTR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33089, 7}, + /* 145 */ {I_BTR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12328, 12}, + /* 146 */ {I_BTR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12336, 12}, + /* 147 */ {I_BTR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12344, 13}, + /* 148 */ {I_BTS, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33095, 4}, + /* 149 */ {I_BTS, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33096, 5}, + /* 150 */ {I_BTS, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33102, 4}, + /* 151 */ {I_BTS, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33103, 5}, + /* 152 */ {I_BTS, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33109, 6}, + /* 153 */ {I_BTS, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33110, 7}, + /* 154 */ {I_BTS, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12352, 12}, + /* 155 */ {I_BTS, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12360, 12}, + /* 156 */ {I_BTS, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12368, 13}, + /* 157 */ {I_CALL, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47362, 21}, + /* 158 */ {I_CALL, 1, {IMMEDIATE|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47367, 22}, + /* 159 */ {I_CALL, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47372, 23}, + /* 160 */ {I_CALL, 1, {IMMEDIATE|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47377, 24}, + /* 161 */ {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42879, 1}, + /* 162 */ {I_CALL, 2, {IMMEDIATE|BITS16|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42885, 1}, + /* 163 */ {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42885, 1}, + /* 164 */ {I_CALL, 2, {IMMEDIATE|BITS32|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42891, 19}, + /* 165 */ {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42891, 19}, + /* 166 */ {I_CALL, 1, {MEMORY|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47382, 1}, + /* 167 */ {I_CALL, 1, {MEMORY|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47387, 7}, + /* 168 */ {I_CALL, 1, {MEMORY|BITS16|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47392, 0}, + /* 169 */ {I_CALL, 1, {MEMORY|BITS32|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47397, 5}, + /* 170 */ {I_CALL, 1, {MEMORY|BITS64|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47387, 7}, + /* 171 */ {I_CALL, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47402, 21}, + /* 172 */ {I_CALL, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47407, 22}, + /* 173 */ {I_CALL, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47412, 23}, + /* 174 */ {I_CALL, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47417, 24}, + /* 175 */ {I_CBW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49223, 0}, + /* 176 */ {I_CDQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49227, 5}, + /* 177 */ {I_CDQE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49231, 7}, + /* 178 */ {I_CLC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48819, 0}, + /* 179 */ {I_CLD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45984, 0}, + /* 180 */ {I_CLI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48134, 0}, + /* 181 */ {I_CLTS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49235, 25}, + /* 182 */ {I_CMC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50193, 0}, + /* 183 */ {I_CMP, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+49239, 8}, + /* 184 */ {I_CMP, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+49239, 0}, + /* 185 */ {I_CMP, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+47422, 8}, + /* 186 */ {I_CMP, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+47422, 0}, + /* 187 */ {I_CMP, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+47427, 9}, + /* 188 */ {I_CMP, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+47427, 5}, + /* 189 */ {I_CMP, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+47432, 10}, + /* 190 */ {I_CMP, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+47432, 7}, + /* 191 */ {I_CMP, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+40392, 8}, + /* 192 */ {I_CMP, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+40392, 0}, + /* 193 */ {I_CMP, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47437, 8}, + /* 194 */ {I_CMP, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+47437, 0}, + /* 195 */ {I_CMP, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47442, 9}, + /* 196 */ {I_CMP, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+47442, 5}, + /* 197 */ {I_CMP, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+47447, 10}, + /* 198 */ {I_CMP, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+47447, 7}, + /* 199 */ {I_CMP, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42897, 0}, + /* 200 */ {I_CMP, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42903, 5}, + /* 201 */ {I_CMP, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42909, 7}, + /* 202 */ {I_CMP, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49243, 8}, + /* 203 */ {I_CMP, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47452, 8}, + /* 204 */ {I_CMP, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47457, 9}, + /* 205 */ {I_CMP, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47462, 10}, + /* 206 */ {I_CMP, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47467, 8}, + /* 207 */ {I_CMP, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42915, 8}, + /* 208 */ {I_CMP, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42921, 9}, + /* 209 */ {I_CMP, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+42927, 10}, + /* 210 */ {I_CMP, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+47467, 8}, + /* 211 */ {I_CMP, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42915, 8}, + /* 212 */ {I_CMP, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42921, 9}, + /* 213 */ {I_CMPSB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49247, 0}, + /* 214 */ {I_CMPSD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47477, 5}, + /* 215 */ {I_CMPSQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47482, 7}, + /* 216 */ {I_CMPSW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47487, 0}, + /* 217 */ {I_CMPXCHG, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42933, 27}, + /* 218 */ {I_CMPXCHG, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42934, 28}, + /* 219 */ {I_CMPXCHG, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33116, 27}, + /* 220 */ {I_CMPXCHG, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33117, 28}, + /* 221 */ {I_CMPXCHG, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33123, 27}, + /* 222 */ {I_CMPXCHG, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33124, 28}, + /* 223 */ {I_CMPXCHG, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33130, 6}, + /* 224 */ {I_CMPXCHG, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33131, 7}, + /* 225 */ {I_CMPXCHG8B, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+33137, 31}, + /* 226 */ {I_CMPXCHG16B, 1, {MEMORY|BITS128,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42951, 13}, + /* 227 */ {I_CPUID, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49251, 28}, + /* 228 */ {I_CPU_READ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49255, 32}, + /* 229 */ {I_CPU_WRITE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49259, 32}, + /* 230 */ {I_CQO, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49263, 7}, + /* 231 */ {I_CWD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49267, 0}, + /* 232 */ {I_CWDE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49271, 5}, + /* 233 */ {I_DAA, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50196, 1}, + /* 234 */ {I_DAS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50199, 1}, + /* 235 */ {I_DEC, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49275, 1}, + /* 236 */ {I_DEC, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49279, 19}, + /* 237 */ {I_DEC, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47497, 11}, + /* 238 */ {I_DEC, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42957, 11}, + /* 239 */ {I_DEC, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42963, 12}, + /* 240 */ {I_DEC, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42969, 13}, + /* 241 */ {I_DIV, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49283, 0}, + /* 242 */ {I_DIV, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47502, 0}, + /* 243 */ {I_DIV, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47507, 5}, + /* 244 */ {I_DIV, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47512, 7}, + /* 245 */ {I_DMINT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49287, 33}, + /* 246 */ {I_EMMS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49291, 34}, + /* 247 */ {I_ENTER, 2, {IMMEDIATE,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47517, 35}, + /* 248 */ {I_EQU, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50228, 0}, + /* 249 */ {I_EQU, 2, {IMMEDIATE|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+50228, 0}, + /* 250 */ {I_F2XM1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49295, 36}, + /* 251 */ {I_FABS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49299, 36}, + /* 252 */ {I_FADD, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49303, 36}, + /* 253 */ {I_FADD, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49307, 36}, + /* 254 */ {I_FADD, 1, {FPUREG|TO,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47522, 36}, + /* 255 */ {I_FADD, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47527, 36}, + /* 256 */ {I_FADD, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47522, 36}, + /* 257 */ {I_FADD, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47532, 36}, + /* 258 */ {I_FADDP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47537, 36}, + /* 259 */ {I_FADDP, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47537, 36}, + /* 260 */ {I_FBLD, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49315, 36}, + /* 261 */ {I_FBLD, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49315, 36}, + /* 262 */ {I_FBSTP, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49319, 36}, + /* 263 */ {I_FBSTP, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49319, 36}, + /* 264 */ {I_FCHS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49323, 36}, + /* 265 */ {I_FCLEX, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47542, 36}, + /* 266 */ {I_FCMOVB, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47547, 37}, + /* 267 */ {I_FCMOVB, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47552, 37}, + /* 268 */ {I_FCMOVBE, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47557, 37}, + /* 269 */ {I_FCMOVBE, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47562, 37}, + /* 270 */ {I_FCMOVE, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47567, 37}, + /* 271 */ {I_FCMOVE, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47572, 37}, + /* 272 */ {I_FCMOVNB, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47577, 37}, + /* 273 */ {I_FCMOVNB, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47582, 37}, + /* 274 */ {I_FCMOVNBE, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47587, 37}, + /* 275 */ {I_FCMOVNBE, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47592, 37}, + /* 276 */ {I_FCMOVNE, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47597, 37}, + /* 277 */ {I_FCMOVNE, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47602, 37}, + /* 278 */ {I_FCMOVNU, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47607, 37}, + /* 279 */ {I_FCMOVNU, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47612, 37}, + /* 280 */ {I_FCMOVU, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47617, 37}, + /* 281 */ {I_FCMOVU, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47622, 37}, + /* 282 */ {I_FCOM, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49359, 36}, + /* 283 */ {I_FCOM, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49363, 36}, + /* 284 */ {I_FCOM, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47627, 36}, + /* 285 */ {I_FCOM, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47632, 36}, + /* 286 */ {I_FCOMI, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47637, 37}, + /* 287 */ {I_FCOMI, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47642, 37}, + /* 288 */ {I_FCOMIP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47647, 37}, + /* 289 */ {I_FCOMIP, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47652, 37}, + /* 290 */ {I_FCOMP, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49379, 36}, + /* 291 */ {I_FCOMP, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49383, 36}, + /* 292 */ {I_FCOMP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47657, 36}, + /* 293 */ {I_FCOMP, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47662, 36}, + /* 294 */ {I_FCOMPP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49391, 36}, + /* 295 */ {I_FCOS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49395, 38}, + /* 296 */ {I_FDECSTP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49399, 36}, + /* 297 */ {I_FDISI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47667, 36}, + /* 298 */ {I_FDIV, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49403, 36}, + /* 299 */ {I_FDIV, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49407, 36}, + /* 300 */ {I_FDIV, 1, {FPUREG|TO,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47672, 36}, + /* 301 */ {I_FDIV, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47677, 36}, + /* 302 */ {I_FDIV, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47672, 36}, + /* 303 */ {I_FDIV, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47682, 36}, + /* 304 */ {I_FDIVP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47687, 36}, + /* 305 */ {I_FDIVP, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47687, 36}, + /* 306 */ {I_FDIVR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49415, 36}, + /* 307 */ {I_FDIVR, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49419, 36}, + /* 308 */ {I_FDIVR, 1, {FPUREG|TO,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47692, 36}, + /* 309 */ {I_FDIVR, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47692, 36}, + /* 310 */ {I_FDIVR, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47697, 36}, + /* 311 */ {I_FDIVR, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47702, 36}, + /* 312 */ {I_FDIVRP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47707, 36}, + /* 313 */ {I_FDIVRP, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47707, 36}, + /* 314 */ {I_FEMMS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49427, 39}, + /* 315 */ {I_FENI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47712, 36}, + /* 316 */ {I_FFREE, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47717, 36}, + /* 317 */ {I_FFREE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49431, 36}, + /* 318 */ {I_FFREEP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47722, 40}, + /* 319 */ {I_FFREEP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49435, 40}, + /* 320 */ {I_FIADD, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49439, 36}, + /* 321 */ {I_FIADD, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49443, 36}, + /* 322 */ {I_FICOM, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49447, 36}, + /* 323 */ {I_FICOM, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49451, 36}, + /* 324 */ {I_FICOMP, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49455, 36}, + /* 325 */ {I_FICOMP, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49459, 36}, + /* 326 */ {I_FIDIV, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49463, 36}, + /* 327 */ {I_FIDIV, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49467, 36}, + /* 328 */ {I_FIDIVR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49471, 36}, + /* 329 */ {I_FIDIVR, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49475, 36}, + /* 330 */ {I_FILD, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49479, 36}, + /* 331 */ {I_FILD, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49483, 36}, + /* 332 */ {I_FILD, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49487, 36}, + /* 333 */ {I_FIMUL, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49491, 36}, + /* 334 */ {I_FIMUL, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49495, 36}, + /* 335 */ {I_FINCSTP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49499, 36}, + /* 336 */ {I_FINIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47727, 36}, + /* 337 */ {I_FIST, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49503, 36}, + /* 338 */ {I_FIST, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49507, 36}, + /* 339 */ {I_FISTP, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49511, 36}, + /* 340 */ {I_FISTP, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49515, 36}, + /* 341 */ {I_FISTP, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49519, 36}, + /* 342 */ {I_FISTTP, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49523, 41}, + /* 343 */ {I_FISTTP, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49527, 41}, + /* 344 */ {I_FISTTP, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49531, 41}, + /* 345 */ {I_FISUB, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49535, 36}, + /* 346 */ {I_FISUB, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49539, 36}, + /* 347 */ {I_FISUBR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49543, 36}, + /* 348 */ {I_FISUBR, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49547, 36}, + /* 349 */ {I_FLD, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49551, 36}, + /* 350 */ {I_FLD, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49555, 36}, + /* 351 */ {I_FLD, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49559, 36}, + /* 352 */ {I_FLD, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47732, 36}, + /* 353 */ {I_FLD1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49567, 36}, + /* 354 */ {I_FLDCW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49571, 42}, + /* 355 */ {I_FLDENV, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49575, 36}, + /* 356 */ {I_FLDL2E, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49579, 36}, + /* 357 */ {I_FLDL2T, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49583, 36}, + /* 358 */ {I_FLDLG2, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49587, 36}, + /* 359 */ {I_FLDLN2, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49591, 36}, + /* 360 */ {I_FLDPI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49595, 36}, + /* 361 */ {I_FLDZ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49599, 36}, + /* 362 */ {I_FMUL, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49603, 36}, + /* 363 */ {I_FMUL, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49607, 36}, + /* 364 */ {I_FMUL, 1, {FPUREG|TO,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47737, 36}, + /* 365 */ {I_FMUL, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47737, 36}, + /* 366 */ {I_FMUL, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47742, 36}, + /* 367 */ {I_FMUL, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47747, 36}, + /* 368 */ {I_FMULP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47752, 36}, + /* 369 */ {I_FMULP, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47752, 36}, + /* 370 */ {I_FNCLEX, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47543, 36}, + /* 371 */ {I_FNDISI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47668, 36}, + /* 372 */ {I_FNENI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47713, 36}, + /* 373 */ {I_FNINIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47728, 36}, + /* 374 */ {I_FNOP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49615, 36}, + /* 375 */ {I_FNSAVE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47758, 36}, + /* 376 */ {I_FNSTCW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47768, 42}, + /* 377 */ {I_FNSTENV, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47773, 36}, + /* 378 */ {I_FNSTSW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47783, 42}, + /* 379 */ {I_FNSTSW, 1, {REG_AX,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47788, 43}, + /* 380 */ {I_FPATAN, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49619, 36}, + /* 381 */ {I_FPREM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49623, 36}, + /* 382 */ {I_FPREM1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49627, 38}, + /* 383 */ {I_FPTAN, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49631, 36}, + /* 384 */ {I_FRNDINT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49635, 36}, + /* 385 */ {I_FRSTOR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49639, 36}, + /* 386 */ {I_FSAVE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47757, 36}, + /* 387 */ {I_FSCALE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49643, 36}, + /* 388 */ {I_FSETPM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49647, 43}, + /* 389 */ {I_FSIN, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49651, 38}, + /* 390 */ {I_FSINCOS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49655, 38}, + /* 391 */ {I_FSQRT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49659, 36}, + /* 392 */ {I_FST, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49663, 36}, + /* 393 */ {I_FST, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49667, 36}, + /* 394 */ {I_FST, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47762, 36}, + /* 395 */ {I_FSTCW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47767, 42}, + /* 396 */ {I_FSTENV, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47772, 36}, + /* 397 */ {I_FSTP, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49675, 36}, + /* 398 */ {I_FSTP, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49679, 36}, + /* 399 */ {I_FSTP, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49683, 36}, + /* 400 */ {I_FSTP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47777, 36}, + /* 401 */ {I_FSTSW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47782, 42}, + /* 402 */ {I_FSTSW, 1, {REG_AX,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47787, 43}, + /* 403 */ {I_FSUB, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49691, 36}, + /* 404 */ {I_FSUB, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49695, 36}, + /* 405 */ {I_FSUB, 1, {FPUREG|TO,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47792, 36}, + /* 406 */ {I_FSUB, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47792, 36}, + /* 407 */ {I_FSUB, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47797, 36}, + /* 408 */ {I_FSUB, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47802, 36}, + /* 409 */ {I_FSUBP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47807, 36}, + /* 410 */ {I_FSUBP, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47807, 36}, + /* 411 */ {I_FSUBR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49703, 36}, + /* 412 */ {I_FSUBR, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49707, 36}, + /* 413 */ {I_FSUBR, 1, {FPUREG|TO,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47812, 36}, + /* 414 */ {I_FSUBR, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47812, 36}, + /* 415 */ {I_FSUBR, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47817, 36}, + /* 416 */ {I_FSUBR, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47822, 36}, + /* 417 */ {I_FSUBRP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47827, 36}, + /* 418 */ {I_FSUBRP, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47827, 36}, + /* 419 */ {I_FTST, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49715, 36}, + /* 420 */ {I_FUCOM, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47832, 38}, + /* 421 */ {I_FUCOM, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47837, 38}, + /* 422 */ {I_FUCOMI, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47842, 37}, + /* 423 */ {I_FUCOMI, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47847, 37}, + /* 424 */ {I_FUCOMIP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47852, 37}, + /* 425 */ {I_FUCOMIP, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47857, 37}, + /* 426 */ {I_FUCOMP, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47862, 38}, + /* 427 */ {I_FUCOMP, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47867, 38}, + /* 428 */ {I_FUCOMPP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49735, 38}, + /* 429 */ {I_FXAM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49739, 36}, + /* 430 */ {I_FXCH, 1, {FPUREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47872, 36}, + /* 431 */ {I_FXCH, 2, {FPUREG,FPU0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47872, 36}, + /* 432 */ {I_FXCH, 2, {FPU0,FPUREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+47877, 36}, + /* 433 */ {I_FXTRACT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49747, 36}, + /* 434 */ {I_FYL2X, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49751, 36}, + /* 435 */ {I_FYL2XP1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49755, 36}, + /* 436 */ {I_HLT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50202, 44}, + /* 437 */ {I_IDIV, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49759, 0}, + /* 438 */ {I_IDIV, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47882, 0}, + /* 439 */ {I_IDIV, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47887, 5}, + /* 440 */ {I_IDIV, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47892, 7}, + /* 441 */ {I_IMUL, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49763, 0}, + /* 442 */ {I_IMUL, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47897, 0}, + /* 443 */ {I_IMUL, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47902, 5}, + /* 444 */ {I_IMUL, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47907, 7}, + /* 445 */ {I_IMUL, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+42975, 9}, + /* 446 */ {I_IMUL, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42975, 5}, + /* 447 */ {I_IMUL, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+42981, 9}, + /* 448 */ {I_IMUL, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42981, 5}, + /* 449 */ {I_IMUL, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+42987, 10}, + /* 450 */ {I_IMUL, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42987, 7}, + /* 451 */ {I_IMUL, 3, {REG_GPR|BITS16,MEMORY,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+42993, 48}, + /* 452 */ {I_IMUL, 3, {REG_GPR|BITS16,MEMORY,IMMEDIATE|BITS16,0,0}, NO_DECORATOR, nasm_bytecodes+42999, 49}, + /* 453 */ {I_IMUL, 3, {REG_GPR|BITS16,REG_GPR|BITS16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+42993, 35}, + /* 454 */ {I_IMUL, 3, {REG_GPR|BITS16,REG_GPR|BITS16,IMMEDIATE|BITS16,0,0}, NO_DECORATOR, nasm_bytecodes+42999, 35}, + /* 455 */ {I_IMUL, 3, {REG_GPR|BITS32,MEMORY,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+43005, 50}, + /* 456 */ {I_IMUL, 3, {REG_GPR|BITS32,MEMORY,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+43011, 9}, + /* 457 */ {I_IMUL, 3, {REG_GPR|BITS32,REG_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+43005, 5}, + /* 458 */ {I_IMUL, 3, {REG_GPR|BITS32,REG_GPR|BITS32,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+43011, 5}, + /* 459 */ {I_IMUL, 3, {REG_GPR|BITS64,MEMORY,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+43017, 51}, + /* 460 */ {I_IMUL, 3, {REG_GPR|BITS64,MEMORY,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+43023, 51}, + /* 461 */ {I_IMUL, 3, {REG_GPR|BITS64,REG_GPR|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+43017, 7}, + /* 462 */ {I_IMUL, 3, {REG_GPR|BITS64,REG_GPR|BITS64,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+43023, 7}, + /* 463 */ {I_IMUL, 2, {REG_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43035, 35}, + /* 464 */ {I_IMUL, 2, {REG_GPR|BITS16,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43041, 35}, + /* 465 */ {I_IMUL, 2, {REG_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43047, 5}, + /* 466 */ {I_IMUL, 2, {REG_GPR|BITS32,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43053, 5}, + /* 467 */ {I_IMUL, 2, {REG_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43059, 7}, + /* 468 */ {I_IMUL, 2, {REG_GPR|BITS64,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43065, 7}, + /* 469 */ {I_IN, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49767, 52}, + /* 470 */ {I_IN, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47912, 52}, + /* 471 */ {I_IN, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+47917, 53}, + /* 472 */ {I_IN, 2, {REG_AL,REG_DX,0,0,0}, NO_DECORATOR, nasm_bytecodes+46092, 0}, + /* 473 */ {I_IN, 2, {REG_AX,REG_DX,0,0,0}, NO_DECORATOR, nasm_bytecodes+49771, 0}, + /* 474 */ {I_IN, 2, {REG_EAX,REG_DX,0,0,0}, NO_DECORATOR, nasm_bytecodes+49775, 5}, + /* 475 */ {I_INC, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49779, 1}, + /* 476 */ {I_INC, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49783, 19}, + /* 477 */ {I_INC, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47922, 11}, + /* 478 */ {I_INC, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43071, 11}, + /* 479 */ {I_INC, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43077, 12}, + /* 480 */ {I_INC, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43083, 13}, + /* 481 */ {I_INSB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50208, 35}, + /* 482 */ {I_INSD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49787, 5}, + /* 483 */ {I_INSW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49791, 35}, + /* 484 */ {I_INT, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49795, 52}, + /* 485 */ {I_INT1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50205, 5}, + /* 486 */ {I_INT3, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50211, 0}, + /* 487 */ {I_INTO, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50214, 1}, + /* 488 */ {I_INVD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49799, 54}, + /* 489 */ {I_INVPCID, 2, {REG_GPR|BITS32,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+33144, 55}, + /* 490 */ {I_INVPCID, 2, {REG_GPR|BITS64,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+33144, 56}, + /* 491 */ {I_INVLPG, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47927, 54}, + /* 492 */ {I_INVLPGA, 2, {REG_AX,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43089, 57}, + /* 493 */ {I_INVLPGA, 2, {REG_EAX,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43095, 58}, + /* 494 */ {I_INVLPGA, 2, {REG_RAX,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33151, 59}, + /* 495 */ {I_INVLPGA, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43096, 58}, + /* 496 */ {I_IRET, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49803, 0}, + /* 497 */ {I_IRETD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49807, 5}, + /* 498 */ {I_IRETQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49811, 7}, + /* 499 */ {I_IRETW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49815, 0}, + /* 500 */ {I_JCXZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47932, 1}, + /* 501 */ {I_JECXZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47937, 5}, + /* 502 */ {I_JRCXZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43101, 7}, + /* 503 */ {I_JMP, 1, {IMMEDIATE|SHORT,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47943, 0}, + /* 504 */ {I_JMP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47947, 21}, + /* 505 */ {I_JMP, 1, {IMMEDIATE|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47952, 22}, + /* 506 */ {I_JMP, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47957, 23}, + /* 507 */ {I_JMP, 1, {IMMEDIATE|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47962, 24}, + /* 508 */ {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43125, 1}, + /* 509 */ {I_JMP, 2, {IMMEDIATE|BITS16|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43131, 1}, + /* 510 */ {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43131, 1}, + /* 511 */ {I_JMP, 2, {IMMEDIATE|BITS32|COLON,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43137, 19}, + /* 512 */ {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43137, 19}, + /* 513 */ {I_JMP, 1, {MEMORY|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47967, 1}, + /* 514 */ {I_JMP, 1, {MEMORY|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47972, 7}, + /* 515 */ {I_JMP, 1, {MEMORY|BITS16|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47977, 0}, + /* 516 */ {I_JMP, 1, {MEMORY|BITS32|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47982, 5}, + /* 517 */ {I_JMP, 1, {MEMORY|BITS64|FAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47972, 7}, + /* 518 */ {I_JMP, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47987, 21}, + /* 519 */ {I_JMP, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47992, 22}, + /* 520 */ {I_JMP, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47997, 23}, + /* 521 */ {I_JMP, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48002, 24}, + /* 522 */ {I_JMPE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43143, 60}, + /* 523 */ {I_JMPE, 1, {IMMEDIATE|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43149, 60}, + /* 524 */ {I_JMPE, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43155, 60}, + /* 525 */ {I_JMPE, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43161, 60}, + /* 526 */ {I_JMPE, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43167, 60}, + /* 527 */ {I_LAHF, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50217, 0}, + /* 528 */ {I_LAR, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43173, 61}, + /* 529 */ {I_LAR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43173, 62}, + /* 530 */ {I_LAR, 2, {REG_GPR|BITS16,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43173, 63}, + /* 531 */ {I_LAR, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43179, 65}, + /* 532 */ {I_LAR, 2, {REG_GPR|BITS32,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43179, 63}, + /* 533 */ {I_LAR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43179, 63}, + /* 534 */ {I_LAR, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43185, 66}, + /* 535 */ {I_LAR, 2, {REG_GPR|BITS64,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43185, 64}, + /* 536 */ {I_LAR, 2, {REG_GPR|BITS64,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43185, 64}, + /* 537 */ {I_LAR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43185, 64}, + /* 538 */ {I_LDS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48007, 1}, + /* 539 */ {I_LDS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48012, 19}, + /* 540 */ {I_LEA, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48017, 67}, + /* 541 */ {I_LEA, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48022, 68}, + /* 542 */ {I_LEA, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48027, 69}, + /* 543 */ {I_LEAVE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48279, 35}, + /* 544 */ {I_LES, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48032, 1}, + /* 545 */ {I_LES, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48037, 19}, + /* 546 */ {I_LFENCE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43191, 59}, + /* 547 */ {I_LFS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43197, 5}, + /* 548 */ {I_LFS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43203, 5}, + /* 549 */ {I_LFS, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43209, 7}, + /* 550 */ {I_LGDT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48042, 25}, + /* 551 */ {I_LGS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43215, 5}, + /* 552 */ {I_LGS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43221, 5}, + /* 553 */ {I_LGS, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43227, 7}, + /* 554 */ {I_LIDT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48047, 25}, + /* 555 */ {I_LLDT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48052, 70}, + /* 556 */ {I_LLDT, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48052, 70}, + /* 557 */ {I_LLDT, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48052, 70}, + /* 558 */ {I_LMSW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48057, 25}, + /* 559 */ {I_LMSW, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48057, 25}, + /* 560 */ {I_LMSW, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48057, 25}, + /* 561 */ {I_LODSB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50220, 0}, + /* 562 */ {I_LODSD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49827, 5}, + /* 563 */ {I_LODSQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49831, 7}, + /* 564 */ {I_LODSW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49835, 0}, + /* 565 */ {I_LOOP, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48062, 0}, + /* 566 */ {I_LOOP, 2, {IMMEDIATE,REG_CX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48067, 1}, + /* 567 */ {I_LOOP, 2, {IMMEDIATE,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48072, 5}, + /* 568 */ {I_LOOP, 2, {IMMEDIATE,REG_RCX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48077, 7}, + /* 569 */ {I_LOOPE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48082, 0}, + /* 570 */ {I_LOOPE, 2, {IMMEDIATE,REG_CX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48087, 1}, + /* 571 */ {I_LOOPE, 2, {IMMEDIATE,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48092, 5}, + /* 572 */ {I_LOOPE, 2, {IMMEDIATE,REG_RCX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48097, 7}, + /* 573 */ {I_LOOPNE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48102, 0}, + /* 574 */ {I_LOOPNE, 2, {IMMEDIATE,REG_CX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48107, 1}, + /* 575 */ {I_LOOPNE, 2, {IMMEDIATE,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48112, 5}, + /* 576 */ {I_LOOPNE, 2, {IMMEDIATE,REG_RCX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48117, 7}, + /* 577 */ {I_LOOPNZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48102, 0}, + /* 578 */ {I_LOOPNZ, 2, {IMMEDIATE,REG_CX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48107, 1}, + /* 579 */ {I_LOOPNZ, 2, {IMMEDIATE,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48112, 5}, + /* 580 */ {I_LOOPNZ, 2, {IMMEDIATE,REG_RCX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48117, 7}, + /* 581 */ {I_LOOPZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48082, 0}, + /* 582 */ {I_LOOPZ, 2, {IMMEDIATE,REG_CX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48087, 1}, + /* 583 */ {I_LOOPZ, 2, {IMMEDIATE,REG_ECX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48092, 5}, + /* 584 */ {I_LOOPZ, 2, {IMMEDIATE,REG_RCX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48097, 7}, + /* 585 */ {I_LSL, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43233, 61}, + /* 586 */ {I_LSL, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43233, 62}, + /* 587 */ {I_LSL, 2, {REG_GPR|BITS16,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43233, 63}, + /* 588 */ {I_LSL, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43239, 65}, + /* 589 */ {I_LSL, 2, {REG_GPR|BITS32,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43239, 63}, + /* 590 */ {I_LSL, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43239, 63}, + /* 591 */ {I_LSL, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43245, 66}, + /* 592 */ {I_LSL, 2, {REG_GPR|BITS64,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43245, 64}, + /* 593 */ {I_LSL, 2, {REG_GPR|BITS64,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43245, 64}, + /* 594 */ {I_LSL, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43245, 64}, + /* 595 */ {I_LSS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43251, 5}, + /* 596 */ {I_LSS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43257, 5}, + /* 597 */ {I_LSS, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43263, 7}, + /* 598 */ {I_LTR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48122, 70}, + /* 599 */ {I_LTR, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48122, 70}, + /* 600 */ {I_LTR, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48122, 70}, + /* 601 */ {I_MFENCE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43269, 59}, + /* 602 */ {I_MONITOR, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48127, 72}, + /* 603 */ {I_MONITORX, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48132, 74}, + /* 604 */ {I_MOV, 2, {MEMORY,REG_SREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+48153, 75}, + /* 605 */ {I_MOV, 2, {REG_GPR|BITS16,REG_SREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+48137, 0}, + /* 606 */ {I_MOV, 2, {REG_GPR|BITS32,REG_SREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+48142, 5}, + /* 607 */ {I_MOV, 2, {RM_GPR|BITS64,REG_SREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+48152, 7}, + /* 608 */ {I_MOV, 2, {REG_SREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48173, 75}, + /* 609 */ {I_MOV, 2, {REG_SREG,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48162, 0}, + /* 610 */ {I_MOV, 2, {REG_SREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48167, 5}, + /* 611 */ {I_MOV, 2, {REG_SREG,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48172, 7}, + /* 612 */ {I_MOV, 2, {REG_AL,MEM_OFFS,0,0,0}, NO_DECORATOR, nasm_bytecodes+49839, 8}, + /* 613 */ {I_MOV, 2, {REG_AX,MEM_OFFS,0,0,0}, NO_DECORATOR, nasm_bytecodes+48177, 8}, + /* 614 */ {I_MOV, 2, {REG_EAX,MEM_OFFS,0,0,0}, NO_DECORATOR, nasm_bytecodes+48182, 9}, + /* 615 */ {I_MOV, 2, {REG_RAX,MEM_OFFS,0,0,0}, NO_DECORATOR, nasm_bytecodes+48187, 10}, + /* 616 */ {I_MOV, 2, {MEM_OFFS,REG_AL,0,0,0}, NO_DECORATOR, nasm_bytecodes+49843, 79}, + /* 617 */ {I_MOV, 2, {MEM_OFFS,REG_AX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48192, 79}, + /* 618 */ {I_MOV, 2, {MEM_OFFS,REG_EAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48197, 80}, + /* 619 */ {I_MOV, 2, {MEM_OFFS,REG_RAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48202, 81}, + /* 620 */ {I_MOV, 2, {REG_GPR|BITS32,REG_CREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+43275, 82}, + /* 621 */ {I_MOV, 2, {REG_GPR|BITS64,REG_CREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+43281, 83}, + /* 622 */ {I_MOV, 2, {REG_CREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43287, 82}, + /* 623 */ {I_MOV, 2, {REG_CREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43293, 83}, + /* 624 */ {I_MOV, 2, {REG_GPR|BITS32,REG_DREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+43300, 82}, + /* 625 */ {I_MOV, 2, {REG_GPR|BITS64,REG_DREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+43299, 83}, + /* 626 */ {I_MOV, 2, {REG_DREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43306, 82}, + /* 627 */ {I_MOV, 2, {REG_DREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43305, 83}, + /* 628 */ {I_MOV, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48217, 8}, + /* 629 */ {I_MOV, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48218, 0}, + /* 630 */ {I_MOV, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43311, 8}, + /* 631 */ {I_MOV, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43312, 0}, + /* 632 */ {I_MOV, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43317, 9}, + /* 633 */ {I_MOV, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43318, 5}, + /* 634 */ {I_MOV, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43323, 10}, + /* 635 */ {I_MOV, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43324, 7}, + /* 636 */ {I_MOV, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+49847, 8}, + /* 637 */ {I_MOV, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+49847, 0}, + /* 638 */ {I_MOV, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48222, 8}, + /* 639 */ {I_MOV, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48222, 0}, + /* 640 */ {I_MOV, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48227, 9}, + /* 641 */ {I_MOV, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48227, 5}, + /* 642 */ {I_MOV, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48232, 10}, + /* 643 */ {I_MOV, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48232, 7}, + /* 644 */ {I_MOV, 2, {REG_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49851, 8}, + /* 645 */ {I_MOV, 2, {REG_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48237, 8}, + /* 646 */ {I_MOV, 2, {REG_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48242, 9}, + /* 647 */ {I_MOV, 2, {REG_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48252, 10}, + /* 648 */ {I_MOV, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43329, 8}, + /* 649 */ {I_MOV, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33186, 8}, + /* 650 */ {I_MOV, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33193, 9}, + /* 651 */ {I_MOV, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33200, 10}, + /* 652 */ {I_MOV, 2, {RM_GPR|BITS64,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33200, 7}, + /* 653 */ {I_MOV, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43329, 8}, + /* 654 */ {I_MOV, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33186, 8}, + /* 655 */ {I_MOV, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33193, 9}, + /* 656 */ {I_MOVD, 2, {MMXREG,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43335, 85}, + /* 657 */ {I_MOVD, 2, {RM_GPR|BITS32,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+43341, 85}, + /* 658 */ {I_MOVQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43347, 87}, + /* 659 */ {I_MOVQ, 2, {RM_MMX,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+43353, 87}, + /* 660 */ {I_MOVQ, 2, {MMXREG,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33207, 88}, + /* 661 */ {I_MOVQ, 2, {RM_GPR|BITS64,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+33214, 88}, + /* 662 */ {I_MOVSB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+12437, 0}, + /* 663 */ {I_MOVSD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49855, 5}, + /* 664 */ {I_MOVSQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49859, 7}, + /* 665 */ {I_MOVSW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49863, 0}, + /* 666 */ {I_MOVSX, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43359, 53}, + /* 667 */ {I_MOVSX, 2, {REG_GPR|BITS16,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43359, 5}, + /* 668 */ {I_MOVSX, 2, {REG_GPR|BITS32,RM_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43365, 5}, + /* 669 */ {I_MOVSX, 2, {REG_GPR|BITS32,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43371, 5}, + /* 670 */ {I_MOVSX, 2, {REG_GPR|BITS64,RM_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43377, 7}, + /* 671 */ {I_MOVSX, 2, {REG_GPR|BITS64,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43383, 7}, + /* 672 */ {I_MOVSXD, 2, {REG_GPR|BITS64,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48257, 7}, + /* 673 */ {I_MOVZX, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43389, 53}, + /* 674 */ {I_MOVZX, 2, {REG_GPR|BITS16,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43389, 5}, + /* 675 */ {I_MOVZX, 2, {REG_GPR|BITS32,RM_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43395, 5}, + /* 676 */ {I_MOVZX, 2, {REG_GPR|BITS32,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43401, 5}, + /* 677 */ {I_MOVZX, 2, {REG_GPR|BITS64,RM_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43407, 7}, + /* 678 */ {I_MOVZX, 2, {REG_GPR|BITS64,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43413, 7}, + /* 679 */ {I_MUL, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49867, 0}, + /* 680 */ {I_MUL, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48262, 0}, + /* 681 */ {I_MUL, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48267, 5}, + /* 682 */ {I_MUL, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48272, 7}, + /* 683 */ {I_MWAIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48277, 72}, + /* 684 */ {I_MWAITX, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48282, 74}, + /* 685 */ {I_NEG, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48287, 11}, + /* 686 */ {I_NEG, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43419, 11}, + /* 687 */ {I_NEG, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43425, 12}, + /* 688 */ {I_NEG, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43431, 13}, + /* 689 */ {I_NOP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48292, 0}, + /* 690 */ {I_NOP, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43437, 89}, + /* 691 */ {I_NOP, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43443, 89}, + /* 692 */ {I_NOP, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43449, 7}, + /* 693 */ {I_NOT, 1, {RM_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48297, 11}, + /* 694 */ {I_NOT, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43455, 11}, + /* 695 */ {I_NOT, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43461, 12}, + /* 696 */ {I_NOT, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43467, 13}, + /* 697 */ {I_OR, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48302, 3}, + /* 698 */ {I_OR, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48303, 0}, + /* 699 */ {I_OR, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43473, 3}, + /* 700 */ {I_OR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43474, 0}, + /* 701 */ {I_OR, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43479, 4}, + /* 702 */ {I_OR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43480, 5}, + /* 703 */ {I_OR, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43485, 6}, + /* 704 */ {I_OR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43486, 7}, + /* 705 */ {I_OR, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+40679, 8}, + /* 706 */ {I_OR, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+40679, 0}, + /* 707 */ {I_OR, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48307, 8}, + /* 708 */ {I_OR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48307, 0}, + /* 709 */ {I_OR, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48312, 9}, + /* 710 */ {I_OR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48312, 5}, + /* 711 */ {I_OR, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48317, 10}, + /* 712 */ {I_OR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48317, 7}, + /* 713 */ {I_OR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33221, 11}, + /* 714 */ {I_OR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33228, 12}, + /* 715 */ {I_OR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33235, 13}, + /* 716 */ {I_OR, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+49871, 8}, + /* 717 */ {I_OR, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48322, 8}, + /* 718 */ {I_OR, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48327, 9}, + /* 719 */ {I_OR, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48332, 10}, + /* 720 */ {I_OR, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43491, 3}, + /* 721 */ {I_OR, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33242, 3}, + /* 722 */ {I_OR, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33249, 4}, + /* 723 */ {I_OR, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33256, 6}, + /* 724 */ {I_OR, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43491, 3}, + /* 725 */ {I_OR, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33242, 3}, + /* 726 */ {I_OR, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33249, 4}, + /* 727 */ {I_OUT, 2, {IMMEDIATE,REG_AL,0,0,0}, NO_DECORATOR, nasm_bytecodes+49875, 52}, + /* 728 */ {I_OUT, 2, {IMMEDIATE,REG_AX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48337, 52}, + /* 729 */ {I_OUT, 2, {IMMEDIATE,REG_EAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+48342, 53}, + /* 730 */ {I_OUT, 2, {REG_DX,REG_AL,0,0,0}, NO_DECORATOR, nasm_bytecodes+46074, 0}, + /* 731 */ {I_OUT, 2, {REG_DX,REG_AX,0,0,0}, NO_DECORATOR, nasm_bytecodes+49879, 0}, + /* 732 */ {I_OUT, 2, {REG_DX,REG_EAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+49883, 5}, + /* 733 */ {I_OUTSB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50223, 35}, + /* 734 */ {I_OUTSD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49887, 5}, + /* 735 */ {I_OUTSW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49891, 35}, + /* 736 */ {I_PACKSSDW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33263, 87}, + /* 737 */ {I_PACKSSWB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33270, 87}, + /* 738 */ {I_PACKUSWB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33277, 87}, + /* 739 */ {I_PADDB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33284, 87}, + /* 740 */ {I_PADDD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33291, 87}, + /* 741 */ {I_PADDSB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33298, 87}, + /* 742 */ {I_PADDSIW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43503, 90}, + /* 743 */ {I_PADDSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33305, 87}, + /* 744 */ {I_PADDUSB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33312, 87}, + /* 745 */ {I_PADDUSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33319, 87}, + /* 746 */ {I_PADDW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33326, 87}, + /* 747 */ {I_PAND, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33333, 87}, + /* 748 */ {I_PANDN, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33340, 87}, + /* 749 */ {I_PAUSE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49895, 0}, + /* 750 */ {I_PAVEB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43509, 90}, + /* 751 */ {I_PAVGUSB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12376, 91}, + /* 752 */ {I_PCMPEQB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33347, 87}, + /* 753 */ {I_PCMPEQD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33354, 87}, + /* 754 */ {I_PCMPEQW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33361, 87}, + /* 755 */ {I_PCMPGTB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33368, 87}, + /* 756 */ {I_PCMPGTD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33375, 87}, + /* 757 */ {I_PCMPGTW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33382, 87}, + /* 758 */ {I_PDISTIB, 2, {MMXREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45376, 92}, + /* 759 */ {I_PF2ID, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12384, 91}, + /* 760 */ {I_PFACC, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12392, 91}, + /* 761 */ {I_PFADD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12400, 91}, + /* 762 */ {I_PFCMPEQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12408, 91}, + /* 763 */ {I_PFCMPGE, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12416, 91}, + /* 764 */ {I_PFCMPGT, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12424, 91}, + /* 765 */ {I_PFMAX, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12432, 91}, + /* 766 */ {I_PFMIN, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12440, 91}, + /* 767 */ {I_PFMUL, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12448, 91}, + /* 768 */ {I_PFRCP, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12456, 91}, + /* 769 */ {I_PFRCPIT1, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12464, 91}, + /* 770 */ {I_PFRCPIT2, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12472, 91}, + /* 771 */ {I_PFRSQIT1, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12480, 91}, + /* 772 */ {I_PFRSQRT, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12488, 91}, + /* 773 */ {I_PFSUB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12496, 91}, + /* 774 */ {I_PFSUBR, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12504, 91}, + /* 775 */ {I_PI2FD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12512, 91}, + /* 776 */ {I_PMACHRIW, 2, {MMXREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45472, 92}, + /* 777 */ {I_PMADDWD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33389, 87}, + /* 778 */ {I_PMAGW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43515, 90}, + /* 779 */ {I_PMULHRIW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43521, 90}, + /* 780 */ {I_PMULHRWA, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12520, 91}, + /* 781 */ {I_PMULHRWC, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43527, 90}, + /* 782 */ {I_PMULHW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33396, 87}, + /* 783 */ {I_PMULLW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33403, 87}, + /* 784 */ {I_PMVGEZB, 2, {MMXREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45604, 90}, + /* 785 */ {I_PMVLZB, 2, {MMXREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45460, 90}, + /* 786 */ {I_PMVNZB, 2, {MMXREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45442, 90}, + /* 787 */ {I_PMVZB, 2, {MMXREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45364, 90}, + /* 788 */ {I_POP, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49899, 0}, + /* 789 */ {I_POP, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49903, 19}, + /* 790 */ {I_POP, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49907, 7}, + /* 791 */ {I_POP, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48347, 0}, + /* 792 */ {I_POP, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48352, 19}, + /* 793 */ {I_POP, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48357, 7}, + /* 794 */ {I_POP, 1, {REG_ES,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+12813, 1}, + /* 795 */ {I_POP, 1, {REG_SS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+7621, 1}, + /* 796 */ {I_POP, 1, {REG_DS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+7765, 1}, + /* 797 */ {I_POP, 1, {REG_FS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49911, 5}, + /* 798 */ {I_POP, 1, {REG_GS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49915, 5}, + /* 799 */ {I_POPA, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49919, 18}, + /* 800 */ {I_POPAD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49923, 19}, + /* 801 */ {I_POPAW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49927, 18}, + /* 802 */ {I_POPF, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49931, 0}, + /* 803 */ {I_POPFD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49935, 19}, + /* 804 */ {I_POPFQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49935, 7}, + /* 805 */ {I_POPFW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49939, 0}, + /* 806 */ {I_POR, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33410, 87}, + /* 807 */ {I_PREFETCH, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48362, 91}, + /* 808 */ {I_PREFETCHW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48367, 91}, + /* 809 */ {I_PSLLD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33417, 87}, + /* 810 */ {I_PSLLD, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33424, 34}, + /* 811 */ {I_PSLLQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33431, 87}, + /* 812 */ {I_PSLLQ, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33438, 34}, + /* 813 */ {I_PSLLW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33445, 87}, + /* 814 */ {I_PSLLW, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33452, 34}, + /* 815 */ {I_PSRAD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33459, 87}, + /* 816 */ {I_PSRAD, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33466, 34}, + /* 817 */ {I_PSRAW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33473, 87}, + /* 818 */ {I_PSRAW, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33480, 34}, + /* 819 */ {I_PSRLD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33487, 87}, + /* 820 */ {I_PSRLD, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33494, 34}, + /* 821 */ {I_PSRLQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33501, 87}, + /* 822 */ {I_PSRLQ, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33508, 34}, + /* 823 */ {I_PSRLW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33515, 87}, + /* 824 */ {I_PSRLW, 2, {MMXREG,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33522, 34}, + /* 825 */ {I_PSUBB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33529, 87}, + /* 826 */ {I_PSUBD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33536, 87}, + /* 827 */ {I_PSUBSB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33543, 87}, + /* 828 */ {I_PSUBSIW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+43533, 90}, + /* 829 */ {I_PSUBSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33550, 87}, + /* 830 */ {I_PSUBUSB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33557, 87}, + /* 831 */ {I_PSUBUSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33564, 87}, + /* 832 */ {I_PSUBW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33571, 87}, + /* 833 */ {I_PUNPCKHBW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33578, 87}, + /* 834 */ {I_PUNPCKHDQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33585, 87}, + /* 835 */ {I_PUNPCKHWD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33592, 87}, + /* 836 */ {I_PUNPCKLBW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33599, 87}, + /* 837 */ {I_PUNPCKLDQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33606, 87}, + /* 838 */ {I_PUNPCKLWD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33613, 87}, + /* 839 */ {I_PUSH, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49943, 0}, + /* 840 */ {I_PUSH, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49947, 19}, + /* 841 */ {I_PUSH, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49951, 7}, + /* 842 */ {I_PUSH, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48372, 0}, + /* 843 */ {I_PUSH, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48377, 19}, + /* 844 */ {I_PUSH, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48382, 7}, + /* 845 */ {I_PUSH, 1, {REG_ES,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+12781, 1}, + /* 846 */ {I_PUSH, 1, {REG_CS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+7477, 1}, + /* 847 */ {I_PUSH, 1, {REG_SS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+7603, 1}, + /* 848 */ {I_PUSH, 1, {REG_DS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+7747, 1}, + /* 849 */ {I_PUSH, 1, {REG_FS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49955, 5}, + /* 850 */ {I_PUSH, 1, {REG_GS,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49959, 5}, + /* 851 */ {I_PUSH, 1, {IMMEDIATE|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48408, 35}, + /* 852 */ {I_PUSH, 1, {IMMEDIATE|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48392, 94}, + /* 853 */ {I_PUSH, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48402, 95}, + /* 854 */ {I_PUSH, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48402, 96}, + /* 855 */ {I_PUSH, 1, {IMMEDIATE|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48412, 97}, + /* 856 */ {I_PUSH, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48412, 97}, + /* 857 */ {I_PUSHA, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49963, 18}, + /* 858 */ {I_PUSHAD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49967, 19}, + /* 859 */ {I_PUSHAW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49971, 18}, + /* 860 */ {I_PUSHF, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49975, 0}, + /* 861 */ {I_PUSHFD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49979, 19}, + /* 862 */ {I_PUSHFQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49979, 7}, + /* 863 */ {I_PUSHFW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49983, 0}, + /* 864 */ {I_PXOR, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+33620, 87}, + /* 865 */ {I_RCL, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+49987, 0}, + /* 866 */ {I_RCL, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+49991, 0}, + /* 867 */ {I_RCL, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48417, 35}, + /* 868 */ {I_RCL, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48422, 0}, + /* 869 */ {I_RCL, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48427, 0}, + /* 870 */ {I_RCL, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43539, 35}, + /* 871 */ {I_RCL, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48432, 5}, + /* 872 */ {I_RCL, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48437, 5}, + /* 873 */ {I_RCL, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43545, 5}, + /* 874 */ {I_RCL, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48442, 7}, + /* 875 */ {I_RCL, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48447, 7}, + /* 876 */ {I_RCL, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43551, 7}, + /* 877 */ {I_RCR, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+49995, 0}, + /* 878 */ {I_RCR, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+49999, 0}, + /* 879 */ {I_RCR, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48452, 35}, + /* 880 */ {I_RCR, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48457, 0}, + /* 881 */ {I_RCR, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48462, 0}, + /* 882 */ {I_RCR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43557, 35}, + /* 883 */ {I_RCR, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48467, 5}, + /* 884 */ {I_RCR, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48472, 5}, + /* 885 */ {I_RCR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43563, 5}, + /* 886 */ {I_RCR, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48477, 7}, + /* 887 */ {I_RCR, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48482, 7}, + /* 888 */ {I_RCR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43569, 7}, + /* 889 */ {I_RDSHR, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43575, 98}, + /* 890 */ {I_RDMSR, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50003, 99}, + /* 891 */ {I_RDPMC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50007, 89}, + /* 892 */ {I_RDTSC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50011, 28}, + /* 893 */ {I_RDTSCP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48487, 100}, + /* 894 */ {I_RET, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50032, 21}, + /* 895 */ {I_RET, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48513, 101}, + /* 896 */ {I_RETF, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50036, 0}, + /* 897 */ {I_RETF, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48518, 75}, + /* 898 */ {I_RETN, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50032, 21}, + /* 899 */ {I_RETN, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48513, 101}, + /* 900 */ {I_RETW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50015, 21}, + /* 901 */ {I_RETW, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48513, 101}, + /* 902 */ {I_RETFW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50019, 0}, + /* 903 */ {I_RETFW, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48492, 75}, + /* 904 */ {I_RETNW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50015, 21}, + /* 905 */ {I_RETNW, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48497, 101}, + /* 906 */ {I_RETD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50023, 22}, + /* 907 */ {I_RETD, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48502, 102}, + /* 908 */ {I_RETFD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50027, 0}, + /* 909 */ {I_RETFD, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48507, 75}, + /* 910 */ {I_RETND, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50023, 22}, + /* 911 */ {I_RETND, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48502, 102}, + /* 912 */ {I_RETQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50031, 24}, + /* 913 */ {I_RETQ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48512, 103}, + /* 914 */ {I_RETFQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50035, 7}, + /* 915 */ {I_RETFQ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48517, 104}, + /* 916 */ {I_RETNQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50031, 24}, + /* 917 */ {I_RETNQ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48512, 103}, + /* 918 */ {I_ROL, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50039, 0}, + /* 919 */ {I_ROL, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+50043, 0}, + /* 920 */ {I_ROL, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48522, 35}, + /* 921 */ {I_ROL, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48527, 0}, + /* 922 */ {I_ROL, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48532, 0}, + /* 923 */ {I_ROL, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43581, 35}, + /* 924 */ {I_ROL, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48537, 5}, + /* 925 */ {I_ROL, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48542, 5}, + /* 926 */ {I_ROL, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43587, 5}, + /* 927 */ {I_ROL, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48547, 7}, + /* 928 */ {I_ROL, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48552, 7}, + /* 929 */ {I_ROL, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43593, 7}, + /* 930 */ {I_ROR, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50047, 0}, + /* 931 */ {I_ROR, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+50051, 0}, + /* 932 */ {I_ROR, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48557, 35}, + /* 933 */ {I_ROR, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48562, 0}, + /* 934 */ {I_ROR, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48567, 0}, + /* 935 */ {I_ROR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43599, 35}, + /* 936 */ {I_ROR, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48572, 5}, + /* 937 */ {I_ROR, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48577, 5}, + /* 938 */ {I_ROR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43605, 5}, + /* 939 */ {I_ROR, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48582, 7}, + /* 940 */ {I_ROR, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48587, 7}, + /* 941 */ {I_ROR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43611, 7}, + /* 942 */ {I_RSDC, 2, {REG_SREG,MEMORY|BITS80,0,0,0}, NO_DECORATOR, nasm_bytecodes+45742, 105}, + /* 943 */ {I_RSLDT, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48592, 105}, + /* 944 */ {I_RSM, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50055, 106}, + /* 945 */ {I_RSTS, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48597, 105}, + /* 946 */ {I_SAHF, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+12405, 0}, + /* 947 */ {I_SALC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49174, 107}, + /* 948 */ {I_SAR, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50067, 0}, + /* 949 */ {I_SAR, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+50071, 0}, + /* 950 */ {I_SAR, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48637, 35}, + /* 951 */ {I_SAR, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48642, 0}, + /* 952 */ {I_SAR, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48647, 0}, + /* 953 */ {I_SAR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43635, 35}, + /* 954 */ {I_SAR, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48652, 5}, + /* 955 */ {I_SAR, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48657, 5}, + /* 956 */ {I_SAR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43641, 5}, + /* 957 */ {I_SAR, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48662, 7}, + /* 958 */ {I_SAR, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48667, 7}, + /* 959 */ {I_SAR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43647, 7}, + /* 960 */ {I_SBB, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48672, 3}, + /* 961 */ {I_SBB, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48673, 0}, + /* 962 */ {I_SBB, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43653, 3}, + /* 963 */ {I_SBB, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43654, 0}, + /* 964 */ {I_SBB, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43659, 4}, + /* 965 */ {I_SBB, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43660, 5}, + /* 966 */ {I_SBB, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43665, 6}, + /* 967 */ {I_SBB, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43666, 7}, + /* 968 */ {I_SBB, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+35268, 8}, + /* 969 */ {I_SBB, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+35268, 0}, + /* 970 */ {I_SBB, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48677, 8}, + /* 971 */ {I_SBB, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48677, 0}, + /* 972 */ {I_SBB, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48682, 9}, + /* 973 */ {I_SBB, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48682, 5}, + /* 974 */ {I_SBB, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48687, 10}, + /* 975 */ {I_SBB, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48687, 7}, + /* 976 */ {I_SBB, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33627, 11}, + /* 977 */ {I_SBB, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33634, 12}, + /* 978 */ {I_SBB, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33641, 13}, + /* 979 */ {I_SBB, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+50075, 8}, + /* 980 */ {I_SBB, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48692, 8}, + /* 981 */ {I_SBB, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48697, 9}, + /* 982 */ {I_SBB, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48702, 10}, + /* 983 */ {I_SBB, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43671, 3}, + /* 984 */ {I_SBB, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33648, 3}, + /* 985 */ {I_SBB, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33655, 4}, + /* 986 */ {I_SBB, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33662, 6}, + /* 987 */ {I_SBB, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43671, 3}, + /* 988 */ {I_SBB, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33648, 3}, + /* 989 */ {I_SBB, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33655, 4}, + /* 990 */ {I_SCASB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50079, 0}, + /* 991 */ {I_SCASD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48707, 5}, + /* 992 */ {I_SCASQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48712, 7}, + /* 993 */ {I_SCASW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48717, 0}, + /* 994 */ {I_SFENCE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43683, 59}, + /* 995 */ {I_SGDT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48722, 108}, + /* 996 */ {I_SHL, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50059, 0}, + /* 997 */ {I_SHL, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+50063, 0}, + /* 998 */ {I_SHL, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48602, 35}, + /* 999 */ {I_SHL, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48607, 0}, + /* 1000 */ {I_SHL, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48612, 0}, + /* 1001 */ {I_SHL, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43617, 35}, + /* 1002 */ {I_SHL, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48617, 5}, + /* 1003 */ {I_SHL, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48622, 5}, + /* 1004 */ {I_SHL, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43623, 5}, + /* 1005 */ {I_SHL, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48627, 7}, + /* 1006 */ {I_SHL, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48632, 7}, + /* 1007 */ {I_SHL, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43629, 7}, + /* 1008 */ {I_SHLD, 3, {MEMORY,REG_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33669, 109}, + /* 1009 */ {I_SHLD, 3, {REG_GPR|BITS16,REG_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33669, 109}, + /* 1010 */ {I_SHLD, 3, {MEMORY,REG_GPR|BITS32,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33676, 109}, + /* 1011 */ {I_SHLD, 3, {REG_GPR|BITS32,REG_GPR|BITS32,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33676, 109}, + /* 1012 */ {I_SHLD, 3, {MEMORY,REG_GPR|BITS64,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33683, 110}, + /* 1013 */ {I_SHLD, 3, {REG_GPR|BITS64,REG_GPR|BITS64,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33683, 110}, + /* 1014 */ {I_SHLD, 3, {MEMORY,REG_GPR|BITS16,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43689, 9}, + /* 1015 */ {I_SHLD, 3, {REG_GPR|BITS16,REG_GPR|BITS16,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43689, 5}, + /* 1016 */ {I_SHLD, 3, {MEMORY,REG_GPR|BITS32,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43695, 9}, + /* 1017 */ {I_SHLD, 3, {REG_GPR|BITS32,REG_GPR|BITS32,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43695, 5}, + /* 1018 */ {I_SHLD, 3, {MEMORY,REG_GPR|BITS64,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43701, 10}, + /* 1019 */ {I_SHLD, 3, {REG_GPR|BITS64,REG_GPR|BITS64,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43701, 7}, + /* 1020 */ {I_SHR, 2, {RM_GPR|BITS8,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50083, 0}, + /* 1021 */ {I_SHR, 2, {RM_GPR|BITS8,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+50087, 0}, + /* 1022 */ {I_SHR, 2, {RM_GPR|BITS8,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48727, 35}, + /* 1023 */ {I_SHR, 2, {RM_GPR|BITS16,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48732, 0}, + /* 1024 */ {I_SHR, 2, {RM_GPR|BITS16,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48737, 0}, + /* 1025 */ {I_SHR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43707, 35}, + /* 1026 */ {I_SHR, 2, {RM_GPR|BITS32,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48742, 5}, + /* 1027 */ {I_SHR, 2, {RM_GPR|BITS32,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48747, 5}, + /* 1028 */ {I_SHR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43713, 5}, + /* 1029 */ {I_SHR, 2, {RM_GPR|BITS64,UNITY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48752, 7}, + /* 1030 */ {I_SHR, 2, {RM_GPR|BITS64,REG_CL,0,0,0}, NO_DECORATOR, nasm_bytecodes+48757, 7}, + /* 1031 */ {I_SHR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43719, 7}, + /* 1032 */ {I_SHRD, 3, {MEMORY,REG_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33690, 109}, + /* 1033 */ {I_SHRD, 3, {REG_GPR|BITS16,REG_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33690, 109}, + /* 1034 */ {I_SHRD, 3, {MEMORY,REG_GPR|BITS32,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33697, 109}, + /* 1035 */ {I_SHRD, 3, {REG_GPR|BITS32,REG_GPR|BITS32,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33697, 109}, + /* 1036 */ {I_SHRD, 3, {MEMORY,REG_GPR|BITS64,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33704, 110}, + /* 1037 */ {I_SHRD, 3, {REG_GPR|BITS64,REG_GPR|BITS64,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+33704, 110}, + /* 1038 */ {I_SHRD, 3, {MEMORY,REG_GPR|BITS16,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43725, 9}, + /* 1039 */ {I_SHRD, 3, {REG_GPR|BITS16,REG_GPR|BITS16,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43725, 5}, + /* 1040 */ {I_SHRD, 3, {MEMORY,REG_GPR|BITS32,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43731, 9}, + /* 1041 */ {I_SHRD, 3, {REG_GPR|BITS32,REG_GPR|BITS32,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43731, 5}, + /* 1042 */ {I_SHRD, 3, {MEMORY,REG_GPR|BITS64,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43737, 10}, + /* 1043 */ {I_SHRD, 3, {REG_GPR|BITS64,REG_GPR|BITS64,REG_CL,0,0}, NO_DECORATOR, nasm_bytecodes+43737, 7}, + /* 1044 */ {I_SIDT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48762, 108}, + /* 1045 */ {I_SLDT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43762, 108}, + /* 1046 */ {I_SLDT, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43762, 108}, + /* 1047 */ {I_SLDT, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43743, 108}, + /* 1048 */ {I_SLDT, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43749, 5}, + /* 1049 */ {I_SLDT, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43761, 7}, + /* 1050 */ {I_SKINIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48767, 7}, + /* 1051 */ {I_SMI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50205, 111}, + /* 1052 */ {I_SMSW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43780, 108}, + /* 1053 */ {I_SMSW, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43780, 108}, + /* 1054 */ {I_SMSW, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43767, 108}, + /* 1055 */ {I_SMSW, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43773, 5}, + /* 1056 */ {I_SMSW, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43779, 7}, + /* 1057 */ {I_STC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48489, 0}, + /* 1058 */ {I_STD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50226, 0}, + /* 1059 */ {I_STI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48284, 0}, + /* 1060 */ {I_STOSB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+12509, 0}, + /* 1061 */ {I_STOSD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50099, 5}, + /* 1062 */ {I_STOSQ, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50103, 7}, + /* 1063 */ {I_STOSW, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50107, 0}, + /* 1064 */ {I_STR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43798, 62}, + /* 1065 */ {I_STR, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43798, 62}, + /* 1066 */ {I_STR, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43785, 62}, + /* 1067 */ {I_STR, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43791, 63}, + /* 1068 */ {I_STR, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43797, 7}, + /* 1069 */ {I_SUB, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48772, 3}, + /* 1070 */ {I_SUB, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48773, 0}, + /* 1071 */ {I_SUB, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43803, 3}, + /* 1072 */ {I_SUB, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43804, 0}, + /* 1073 */ {I_SUB, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43809, 4}, + /* 1074 */ {I_SUB, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43810, 5}, + /* 1075 */ {I_SUB, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43815, 6}, + /* 1076 */ {I_SUB, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43816, 7}, + /* 1077 */ {I_SUB, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+41036, 8}, + /* 1078 */ {I_SUB, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+41036, 0}, + /* 1079 */ {I_SUB, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48777, 8}, + /* 1080 */ {I_SUB, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48777, 0}, + /* 1081 */ {I_SUB, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48782, 9}, + /* 1082 */ {I_SUB, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48782, 5}, + /* 1083 */ {I_SUB, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48787, 10}, + /* 1084 */ {I_SUB, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48787, 7}, + /* 1085 */ {I_SUB, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33711, 11}, + /* 1086 */ {I_SUB, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33718, 12}, + /* 1087 */ {I_SUB, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33725, 13}, + /* 1088 */ {I_SUB, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+50111, 8}, + /* 1089 */ {I_SUB, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48792, 8}, + /* 1090 */ {I_SUB, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48797, 9}, + /* 1091 */ {I_SUB, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48802, 10}, + /* 1092 */ {I_SUB, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43821, 3}, + /* 1093 */ {I_SUB, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33732, 3}, + /* 1094 */ {I_SUB, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33739, 4}, + /* 1095 */ {I_SUB, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33746, 6}, + /* 1096 */ {I_SUB, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43821, 3}, + /* 1097 */ {I_SUB, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33732, 3}, + /* 1098 */ {I_SUB, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33739, 4}, + /* 1099 */ {I_SVDC, 2, {MEMORY|BITS80,REG_SREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+34357, 105}, + /* 1100 */ {I_SVTS, 1, {MEMORY|BITS80,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48812, 105}, + /* 1101 */ {I_SWAPGS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48817, 7}, + /* 1102 */ {I_SYSCALL, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49823, 113}, + /* 1103 */ {I_SYSENTER, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50115, 89}, + /* 1104 */ {I_SYSEXIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50119, 114}, + /* 1105 */ {I_SYSRET, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49819, 115}, + /* 1106 */ {I_TEST, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+50123, 8}, + /* 1107 */ {I_TEST, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+50123, 0}, + /* 1108 */ {I_TEST, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48822, 8}, + /* 1109 */ {I_TEST, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48822, 0}, + /* 1110 */ {I_TEST, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48827, 9}, + /* 1111 */ {I_TEST, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48827, 5}, + /* 1112 */ {I_TEST, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48832, 10}, + /* 1113 */ {I_TEST, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48832, 7}, + /* 1114 */ {I_TEST, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+50127, 8}, + /* 1115 */ {I_TEST, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48837, 8}, + /* 1116 */ {I_TEST, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48842, 9}, + /* 1117 */ {I_TEST, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48847, 10}, + /* 1118 */ {I_TEST, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+50131, 8}, + /* 1119 */ {I_TEST, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48852, 8}, + /* 1120 */ {I_TEST, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48857, 9}, + /* 1121 */ {I_TEST, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48862, 10}, + /* 1122 */ {I_TEST, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48867, 8}, + /* 1123 */ {I_TEST, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43833, 8}, + /* 1124 */ {I_TEST, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43839, 9}, + /* 1125 */ {I_TEST, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43845, 10}, + /* 1126 */ {I_TEST, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48867, 8}, + /* 1127 */ {I_TEST, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43833, 8}, + /* 1128 */ {I_TEST, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43839, 9}, + /* 1129 */ {I_UD0, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50135, 116}, + /* 1130 */ {I_UD0, 2, {REG_GPR|BITS16,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43851, 35}, + /* 1131 */ {I_UD0, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43857, 35}, + /* 1132 */ {I_UD0, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43863, 35}, + /* 1133 */ {I_UD1, 2, {REG_GPR|BITS16,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43869, 35}, + /* 1134 */ {I_UD1, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43875, 35}, + /* 1135 */ {I_UD1, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43881, 35}, + /* 1136 */ {I_UD2, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50143, 35}, + /* 1137 */ {I_VERR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48872, 62}, + /* 1138 */ {I_VERR, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48872, 62}, + /* 1139 */ {I_VERR, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48872, 62}, + /* 1140 */ {I_VERW, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48877, 62}, + /* 1141 */ {I_VERW, 1, {MEMORY|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48877, 62}, + /* 1142 */ {I_VERW, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48877, 62}, + /* 1143 */ {I_FWAIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49721, 0}, + /* 1144 */ {I_WBINVD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49183, 54}, + /* 1145 */ {I_WRSHR, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43899, 98}, + /* 1146 */ {I_WRMSR, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50147, 99}, + /* 1147 */ {I_XADD, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43905, 118}, + /* 1148 */ {I_XADD, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43906, 20}, + /* 1149 */ {I_XADD, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33781, 118}, + /* 1150 */ {I_XADD, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33782, 20}, + /* 1151 */ {I_XADD, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33788, 118}, + /* 1152 */ {I_XADD, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33789, 20}, + /* 1153 */ {I_XADD, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33795, 6}, + /* 1154 */ {I_XADD, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33796, 7}, + /* 1155 */ {I_XCHG, 2, {REG_AX,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+50151, 0}, + /* 1156 */ {I_XCHG, 2, {REG_EAX,REG32NA,0,0,0}, NO_DECORATOR, nasm_bytecodes+50155, 5}, + /* 1157 */ {I_XCHG, 2, {REG_RAX,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+50159, 7}, + /* 1158 */ {I_XCHG, 2, {REG_GPR|BITS16,REG_AX,0,0,0}, NO_DECORATOR, nasm_bytecodes+50163, 0}, + /* 1159 */ {I_XCHG, 2, {REG32NA,REG_EAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+50167, 5}, + /* 1160 */ {I_XCHG, 2, {REG_GPR|BITS64,REG_RAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+50171, 7}, + /* 1161 */ {I_XCHG, 2, {REG_EAX,REG_EAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+50175, 19}, + /* 1162 */ {I_XCHG, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48882, 3}, + /* 1163 */ {I_XCHG, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48883, 0}, + /* 1164 */ {I_XCHG, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43923, 3}, + /* 1165 */ {I_XCHG, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43924, 0}, + /* 1166 */ {I_XCHG, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43929, 4}, + /* 1167 */ {I_XCHG, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43930, 5}, + /* 1168 */ {I_XCHG, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43935, 6}, + /* 1169 */ {I_XCHG, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43936, 7}, + /* 1170 */ {I_XCHG, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48887, 3}, + /* 1171 */ {I_XCHG, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48888, 0}, + /* 1172 */ {I_XCHG, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43941, 3}, + /* 1173 */ {I_XCHG, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43942, 0}, + /* 1174 */ {I_XCHG, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43947, 4}, + /* 1175 */ {I_XCHG, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43948, 5}, + /* 1176 */ {I_XCHG, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43953, 6}, + /* 1177 */ {I_XCHG, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43954, 7}, + /* 1178 */ {I_XLATB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46014, 0}, + /* 1179 */ {I_XLAT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46014, 0}, + /* 1180 */ {I_XOR, 2, {MEMORY,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48892, 3}, + /* 1181 */ {I_XOR, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+48893, 0}, + /* 1182 */ {I_XOR, 2, {MEMORY,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43959, 3}, + /* 1183 */ {I_XOR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43960, 0}, + /* 1184 */ {I_XOR, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43965, 4}, + /* 1185 */ {I_XOR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+43966, 5}, + /* 1186 */ {I_XOR, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43971, 6}, + /* 1187 */ {I_XOR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43972, 7}, + /* 1188 */ {I_XOR, 2, {REG_GPR|BITS8,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+40476, 8}, + /* 1189 */ {I_XOR, 2, {REG_GPR|BITS8,REG_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+40476, 0}, + /* 1190 */ {I_XOR, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48897, 8}, + /* 1191 */ {I_XOR, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+48897, 0}, + /* 1192 */ {I_XOR, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48902, 9}, + /* 1193 */ {I_XOR, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+48902, 5}, + /* 1194 */ {I_XOR, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+48907, 10}, + /* 1195 */ {I_XOR, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+48907, 7}, + /* 1196 */ {I_XOR, 2, {RM_GPR|BITS16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33802, 11}, + /* 1197 */ {I_XOR, 2, {RM_GPR|BITS32,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33809, 12}, + /* 1198 */ {I_XOR, 2, {RM_GPR|BITS64,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+33816, 13}, + /* 1199 */ {I_XOR, 2, {REG_AL,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+50179, 8}, + /* 1200 */ {I_XOR, 2, {REG_AX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48912, 8}, + /* 1201 */ {I_XOR, 2, {REG_EAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48917, 9}, + /* 1202 */ {I_XOR, 2, {REG_RAX,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+48922, 10}, + /* 1203 */ {I_XOR, 2, {RM_GPR|BITS8,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+43977, 3}, + /* 1204 */ {I_XOR, 2, {RM_GPR|BITS16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33823, 3}, + /* 1205 */ {I_XOR, 2, {RM_GPR|BITS32,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33830, 4}, + /* 1206 */ {I_XOR, 2, {RM_GPR|BITS64,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+33837, 6}, + /* 1207 */ {I_XOR, 2, {MEMORY,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+43977, 3}, + /* 1208 */ {I_XOR, 2, {MEMORY,IMMEDIATE|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33823, 3}, + /* 1209 */ {I_XOR, 2, {MEMORY,IMMEDIATE|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33830, 4}, + /* 1210 */ {I_CMOVA, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43989, 121}, + /* 1211 */ {I_CMOVC, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44001, 121}, + /* 1212 */ {I_CMOVG, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44019, 121}, + /* 1213 */ {I_CMOVL, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44031, 121}, + /* 1214 */ {I_CMOVNA, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44007, 121}, + /* 1215 */ {I_CMOVNC, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+43995, 121}, + /* 1216 */ {I_CMOVNG, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44037, 121}, + /* 1217 */ {I_CMOVNL, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44025, 121}, + /* 1218 */ {I_CMOVNO, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44049, 121}, + /* 1219 */ {I_CMOVNS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44061, 121}, + /* 1220 */ {I_CMOVNZ, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44043, 121}, + /* 1221 */ {I_CMOVO, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44067, 121}, + /* 1222 */ {I_CMOVPE, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44073, 121}, + /* 1223 */ {I_CMOVPO, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44055, 121}, + /* 1224 */ {I_CMOVS, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44079, 121}, + /* 1225 */ {I_CMOVZ, 2, {REG_GPR|BITS16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44013, 121}, + /* 1226 */ {I_CMOVA, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43989, 89}, + /* 1227 */ {I_CMOVC, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44001, 89}, + /* 1228 */ {I_CMOVG, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44019, 89}, + /* 1229 */ {I_CMOVL, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44031, 89}, + /* 1230 */ {I_CMOVNA, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44007, 89}, + /* 1231 */ {I_CMOVNC, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43995, 89}, + /* 1232 */ {I_CMOVNG, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44037, 89}, + /* 1233 */ {I_CMOVNL, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44025, 89}, + /* 1234 */ {I_CMOVNO, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44049, 89}, + /* 1235 */ {I_CMOVNS, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44061, 89}, + /* 1236 */ {I_CMOVNZ, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44043, 89}, + /* 1237 */ {I_CMOVO, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44067, 89}, + /* 1238 */ {I_CMOVPE, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44073, 89}, + /* 1239 */ {I_CMOVPO, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44055, 89}, + /* 1240 */ {I_CMOVS, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44079, 89}, + /* 1241 */ {I_CMOVZ, 2, {REG_GPR|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44013, 89}, + /* 1242 */ {I_CMOVA, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44085, 121}, + /* 1243 */ {I_CMOVC, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44097, 121}, + /* 1244 */ {I_CMOVG, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44115, 121}, + /* 1245 */ {I_CMOVL, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44127, 121}, + /* 1246 */ {I_CMOVNA, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44103, 121}, + /* 1247 */ {I_CMOVNC, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44091, 121}, + /* 1248 */ {I_CMOVNG, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44133, 121}, + /* 1249 */ {I_CMOVNL, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44121, 121}, + /* 1250 */ {I_CMOVNO, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44145, 121}, + /* 1251 */ {I_CMOVNS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44157, 121}, + /* 1252 */ {I_CMOVNZ, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44139, 121}, + /* 1253 */ {I_CMOVO, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44163, 121}, + /* 1254 */ {I_CMOVPE, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44169, 121}, + /* 1255 */ {I_CMOVPO, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44151, 121}, + /* 1256 */ {I_CMOVS, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44175, 121}, + /* 1257 */ {I_CMOVZ, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44109, 121}, + /* 1258 */ {I_CMOVA, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44085, 89}, + /* 1259 */ {I_CMOVC, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44097, 89}, + /* 1260 */ {I_CMOVG, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44115, 89}, + /* 1261 */ {I_CMOVL, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44127, 89}, + /* 1262 */ {I_CMOVNA, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44103, 89}, + /* 1263 */ {I_CMOVNC, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44091, 89}, + /* 1264 */ {I_CMOVNG, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44133, 89}, + /* 1265 */ {I_CMOVNL, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44121, 89}, + /* 1266 */ {I_CMOVNO, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44145, 89}, + /* 1267 */ {I_CMOVNS, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44157, 89}, + /* 1268 */ {I_CMOVNZ, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44139, 89}, + /* 1269 */ {I_CMOVO, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44163, 89}, + /* 1270 */ {I_CMOVPE, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44169, 89}, + /* 1271 */ {I_CMOVPO, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44151, 89}, + /* 1272 */ {I_CMOVS, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44175, 89}, + /* 1273 */ {I_CMOVZ, 2, {REG_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44109, 89}, + /* 1274 */ {I_CMOVA, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44181, 10}, + /* 1275 */ {I_CMOVC, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44193, 10}, + /* 1276 */ {I_CMOVG, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44211, 10}, + /* 1277 */ {I_CMOVL, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44223, 10}, + /* 1278 */ {I_CMOVNA, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44199, 10}, + /* 1279 */ {I_CMOVNC, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44187, 10}, + /* 1280 */ {I_CMOVNG, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44229, 10}, + /* 1281 */ {I_CMOVNL, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44217, 10}, + /* 1282 */ {I_CMOVNO, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44241, 10}, + /* 1283 */ {I_CMOVNS, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44253, 10}, + /* 1284 */ {I_CMOVNZ, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44235, 10}, + /* 1285 */ {I_CMOVO, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44259, 10}, + /* 1286 */ {I_CMOVPE, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44265, 10}, + /* 1287 */ {I_CMOVPO, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44247, 10}, + /* 1288 */ {I_CMOVS, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44271, 10}, + /* 1289 */ {I_CMOVZ, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44205, 10}, + /* 1290 */ {I_CMOVA, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44181, 7}, + /* 1291 */ {I_CMOVC, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44193, 7}, + /* 1292 */ {I_CMOVG, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44211, 7}, + /* 1293 */ {I_CMOVL, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44223, 7}, + /* 1294 */ {I_CMOVNA, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44199, 7}, + /* 1295 */ {I_CMOVNC, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44187, 7}, + /* 1296 */ {I_CMOVNG, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44229, 7}, + /* 1297 */ {I_CMOVNL, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44217, 7}, + /* 1298 */ {I_CMOVNO, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44241, 7}, + /* 1299 */ {I_CMOVNS, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44253, 7}, + /* 1300 */ {I_CMOVNZ, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44235, 7}, + /* 1301 */ {I_CMOVO, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44259, 7}, + /* 1302 */ {I_CMOVPE, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44265, 7}, + /* 1303 */ {I_CMOVPO, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44247, 7}, + /* 1304 */ {I_CMOVS, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44271, 7}, + /* 1305 */ {I_CMOVZ, 2, {REG_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44205, 7}, + /* 1306 */ {I_JA, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44277, 122}, + /* 1307 */ {I_JC, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44289, 122}, + /* 1308 */ {I_JG, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44307, 122}, + /* 1309 */ {I_JL, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44319, 122}, + /* 1310 */ {I_JNA, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44295, 122}, + /* 1311 */ {I_JNC, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44283, 122}, + /* 1312 */ {I_JNG, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44325, 122}, + /* 1313 */ {I_JNL, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44313, 122}, + /* 1314 */ {I_JNO, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44337, 122}, + /* 1315 */ {I_JNS, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44349, 122}, + /* 1316 */ {I_JNZ, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44331, 122}, + /* 1317 */ {I_JO, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44355, 122}, + /* 1318 */ {I_JPE, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44361, 122}, + /* 1319 */ {I_JPO, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44343, 122}, + /* 1320 */ {I_JS, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44367, 122}, + /* 1321 */ {I_JZ, 1, {IMMEDIATE|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44301, 122}, + /* 1322 */ {I_JA, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44373, 23}, + /* 1323 */ {I_JC, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44385, 23}, + /* 1324 */ {I_JG, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44403, 23}, + /* 1325 */ {I_JL, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44415, 23}, + /* 1326 */ {I_JNA, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44391, 23}, + /* 1327 */ {I_JNC, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44379, 23}, + /* 1328 */ {I_JNG, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44421, 23}, + /* 1329 */ {I_JNL, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44409, 23}, + /* 1330 */ {I_JNO, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44433, 23}, + /* 1331 */ {I_JNS, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44445, 23}, + /* 1332 */ {I_JNZ, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44427, 23}, + /* 1333 */ {I_JO, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44451, 23}, + /* 1334 */ {I_JPE, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44457, 23}, + /* 1335 */ {I_JPO, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44439, 23}, + /* 1336 */ {I_JS, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44463, 23}, + /* 1337 */ {I_JZ, 1, {IMMEDIATE|BITS16|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44397, 23}, + /* 1338 */ {I_JA, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44469, 23}, + /* 1339 */ {I_JC, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44481, 23}, + /* 1340 */ {I_JG, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44499, 23}, + /* 1341 */ {I_JL, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44511, 23}, + /* 1342 */ {I_JNA, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44487, 23}, + /* 1343 */ {I_JNC, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44475, 23}, + /* 1344 */ {I_JNG, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44517, 23}, + /* 1345 */ {I_JNL, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44505, 23}, + /* 1346 */ {I_JNO, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44529, 23}, + /* 1347 */ {I_JNS, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44541, 23}, + /* 1348 */ {I_JNZ, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44523, 23}, + /* 1349 */ {I_JO, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44547, 23}, + /* 1350 */ {I_JPE, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44553, 23}, + /* 1351 */ {I_JPO, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44535, 23}, + /* 1352 */ {I_JS, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44559, 23}, + /* 1353 */ {I_JZ, 1, {IMMEDIATE|BITS32|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44493, 23}, + /* 1354 */ {I_JA, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44565, 24}, + /* 1355 */ {I_JC, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44577, 24}, + /* 1356 */ {I_JG, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44595, 24}, + /* 1357 */ {I_JL, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44607, 24}, + /* 1358 */ {I_JNA, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44583, 24}, + /* 1359 */ {I_JNC, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44571, 24}, + /* 1360 */ {I_JNG, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44613, 24}, + /* 1361 */ {I_JNL, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44601, 24}, + /* 1362 */ {I_JNO, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44625, 24}, + /* 1363 */ {I_JNS, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44637, 24}, + /* 1364 */ {I_JNZ, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44619, 24}, + /* 1365 */ {I_JO, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44643, 24}, + /* 1366 */ {I_JPE, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44649, 24}, + /* 1367 */ {I_JPO, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44631, 24}, + /* 1368 */ {I_JS, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44655, 24}, + /* 1369 */ {I_JZ, 1, {IMMEDIATE|BITS64|NEAR,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44589, 24}, + /* 1370 */ {I_JA, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48928, 21}, + /* 1371 */ {I_JC, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48938, 21}, + /* 1372 */ {I_JG, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48953, 21}, + /* 1373 */ {I_JL, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48963, 21}, + /* 1374 */ {I_JNA, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48943, 21}, + /* 1375 */ {I_JNC, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48933, 21}, + /* 1376 */ {I_JNG, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48968, 21}, + /* 1377 */ {I_JNL, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48958, 21}, + /* 1378 */ {I_JNO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48978, 21}, + /* 1379 */ {I_JNS, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48988, 21}, + /* 1380 */ {I_JNZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48973, 21}, + /* 1381 */ {I_JO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48993, 21}, + /* 1382 */ {I_JPE, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48998, 21}, + /* 1383 */ {I_JPO, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48983, 21}, + /* 1384 */ {I_JS, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49003, 21}, + /* 1385 */ {I_JZ, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+48948, 21}, + /* 1386 */ {I_SETA, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49007, 53}, + /* 1387 */ {I_SETC, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49017, 53}, + /* 1388 */ {I_SETG, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49032, 53}, + /* 1389 */ {I_SETL, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49042, 53}, + /* 1390 */ {I_SETNA, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49022, 53}, + /* 1391 */ {I_SETNC, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49012, 53}, + /* 1392 */ {I_SETNG, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49047, 53}, + /* 1393 */ {I_SETNL, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49037, 53}, + /* 1394 */ {I_SETNO, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49057, 53}, + /* 1395 */ {I_SETNS, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49067, 53}, + /* 1396 */ {I_SETNZ, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49052, 53}, + /* 1397 */ {I_SETO, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49072, 53}, + /* 1398 */ {I_SETPE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49077, 53}, + /* 1399 */ {I_SETPO, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49062, 53}, + /* 1400 */ {I_SETS, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49082, 53}, + /* 1401 */ {I_SETZ, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49027, 53}, + /* 1402 */ {I_SETA, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49007, 5}, + /* 1403 */ {I_SETC, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49017, 5}, + /* 1404 */ {I_SETG, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49032, 5}, + /* 1405 */ {I_SETL, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49042, 5}, + /* 1406 */ {I_SETNA, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49022, 5}, + /* 1407 */ {I_SETNC, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49012, 5}, + /* 1408 */ {I_SETNG, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49047, 5}, + /* 1409 */ {I_SETNL, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49037, 5}, + /* 1410 */ {I_SETNO, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49057, 5}, + /* 1411 */ {I_SETNS, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49067, 5}, + /* 1412 */ {I_SETNZ, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49052, 5}, + /* 1413 */ {I_SETO, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49072, 5}, + /* 1414 */ {I_SETPE, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49077, 5}, + /* 1415 */ {I_SETPO, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49062, 5}, + /* 1416 */ {I_SETS, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49082, 5}, + /* 1417 */ {I_SETZ, 1, {REG_GPR|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49027, 5}, + /* 1418 */ {I_ADDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44661, 123}, + /* 1419 */ {I_ADDSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44667, 123}, + /* 1420 */ {I_ANDNPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44673, 123}, + /* 1421 */ {I_ANDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44679, 123}, + /* 1422 */ {I_CMPEQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12528, 123}, + /* 1423 */ {I_CMPEQSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12536, 123}, + /* 1424 */ {I_CMPLEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12544, 123}, + /* 1425 */ {I_CMPLESS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12552, 123}, + /* 1426 */ {I_CMPLTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12560, 123}, + /* 1427 */ {I_CMPLTSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12568, 123}, + /* 1428 */ {I_CMPNEQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12576, 123}, + /* 1429 */ {I_CMPNEQSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12584, 123}, + /* 1430 */ {I_CMPNLEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12592, 123}, + /* 1431 */ {I_CMPNLESS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12600, 123}, + /* 1432 */ {I_CMPNLTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12608, 123}, + /* 1433 */ {I_CMPNLTSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12616, 123}, + /* 1434 */ {I_CMPORDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12624, 123}, + /* 1435 */ {I_CMPORDSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12632, 123}, + /* 1436 */ {I_CMPUNORDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+12640, 123}, + /* 1437 */ {I_CMPUNORDSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12648, 123}, + /* 1438 */ {I_CMPPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+33956, 123}, + /* 1439 */ {I_CMPSS, 3, {XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+33963, 123}, + /* 1440 */ {I_COMISS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44685, 123}, + /* 1441 */ {I_CVTPI2PS, 2, {XMM_L16,RM_MMX|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44691, 124}, + /* 1442 */ {I_CVTPS2PI, 2, {MMXREG,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44697, 124}, + /* 1443 */ {I_CVTSI2SS, 2, {XMM_L16,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+33971, 125}, + /* 1444 */ {I_CVTSI2SS, 2, {XMM_L16,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+33970, 126}, + /* 1445 */ {I_CVTSS2SI, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33978, 125}, + /* 1446 */ {I_CVTSS2SI, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33978, 125}, + /* 1447 */ {I_CVTSS2SI, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33977, 127}, + /* 1448 */ {I_CVTSS2SI, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+33977, 127}, + /* 1449 */ {I_CVTTPS2PI, 2, {MMXREG,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44703, 128}, + /* 1450 */ {I_CVTTSS2SI, 2, {REG_GPR|BITS32,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33985, 125}, + /* 1451 */ {I_CVTTSS2SI, 2, {REG_GPR|BITS64,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33984, 127}, + /* 1452 */ {I_DIVPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44709, 123}, + /* 1453 */ {I_DIVSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44715, 123}, + /* 1454 */ {I_LDMXCSR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44721, 123}, + /* 1455 */ {I_MAXPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44727, 123}, + /* 1456 */ {I_MAXSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44733, 123}, + /* 1457 */ {I_MINPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44739, 123}, + /* 1458 */ {I_MINSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44745, 123}, + /* 1459 */ {I_MOVAPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44751, 123}, + /* 1460 */ {I_MOVAPS, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44757, 123}, + /* 1461 */ {I_MOVHPS, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+44763, 123}, + /* 1462 */ {I_MOVHPS, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44769, 123}, + /* 1463 */ {I_MOVLHPS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44763, 123}, + /* 1464 */ {I_MOVLPS, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+43893, 123}, + /* 1465 */ {I_MOVLPS, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44775, 123}, + /* 1466 */ {I_MOVHLPS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+43893, 123}, + /* 1467 */ {I_MOVMSKPS, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44781, 123}, + /* 1468 */ {I_MOVMSKPS, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+33991, 129}, + /* 1469 */ {I_MOVNTPS, 2, {MEMORY|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44787, 123}, + /* 1470 */ {I_MOVSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44793, 123}, + /* 1471 */ {I_MOVSS, 2, {RM_XMM_L16|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44799, 123}, + /* 1472 */ {I_MOVUPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44805, 123}, + /* 1473 */ {I_MOVUPS, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44811, 123}, + /* 1474 */ {I_MULPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44817, 123}, + /* 1475 */ {I_MULSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44823, 123}, + /* 1476 */ {I_ORPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44829, 123}, + /* 1477 */ {I_RCPPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44835, 123}, + /* 1478 */ {I_RCPSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44841, 123}, + /* 1479 */ {I_RSQRTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44847, 123}, + /* 1480 */ {I_RSQRTSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44853, 123}, + /* 1481 */ {I_SHUFPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+33998, 123}, + /* 1482 */ {I_SQRTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44859, 123}, + /* 1483 */ {I_SQRTSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44865, 123}, + /* 1484 */ {I_STMXCSR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44871, 123}, + /* 1485 */ {I_SUBPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44877, 123}, + /* 1486 */ {I_SUBSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44883, 123}, + /* 1487 */ {I_UCOMISS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+44889, 123}, + /* 1488 */ {I_UNPCKHPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44895, 123}, + /* 1489 */ {I_UNPCKLPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44901, 123}, + /* 1490 */ {I_XORPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44907, 123}, + /* 1491 */ {I_FXRSTOR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34006, 130}, + /* 1492 */ {I_FXRSTOR64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34005, 131}, + /* 1493 */ {I_FXSAVE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34013, 130}, + /* 1494 */ {I_FXSAVE64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34012, 131}, + /* 1495 */ {I_XGETBV, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49087, 132}, + /* 1496 */ {I_XSETBV, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49092, 133}, + /* 1497 */ {I_XSAVE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34020, 132}, + /* 1498 */ {I_XSAVE64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34019, 134}, + /* 1499 */ {I_XSAVEC, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34027, 135}, + /* 1500 */ {I_XSAVEC64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34026, 136}, + /* 1501 */ {I_XSAVEOPT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34034, 135}, + /* 1502 */ {I_XSAVEOPT64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34033, 136}, + /* 1503 */ {I_XSAVES, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34041, 135}, + /* 1504 */ {I_XSAVES64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34040, 136}, + /* 1505 */ {I_XRSTOR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34048, 132}, + /* 1506 */ {I_XRSTOR64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34047, 134}, + /* 1507 */ {I_XRSTORS, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34055, 135}, + /* 1508 */ {I_XRSTORS64, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34054, 136}, + /* 1509 */ {I_PREFETCHNTA, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46126, 137}, + /* 1510 */ {I_PREFETCHT0, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46144, 137}, + /* 1511 */ {I_PREFETCHT1, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46162, 137}, + /* 1512 */ {I_PREFETCHT2, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46180, 137}, + /* 1513 */ {I_PREFETCHIT0, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46252, 138}, + /* 1514 */ {I_PREFETCHIT1, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46234, 138}, + /* 1515 */ {I_SFENCE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43683, 139}, + /* 1516 */ {I_MASKMOVQ, 2, {MMXREG,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+44913, 140}, + /* 1517 */ {I_MOVNTQ, 2, {MEMORY,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+44919, 141}, + /* 1518 */ {I_PAVGB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34061, 141}, + /* 1519 */ {I_PAVGW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34068, 141}, + /* 1520 */ {I_PEXTRW, 3, {REG_GPR|BITS32,MMXREG,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34075, 142}, + /* 1521 */ {I_PINSRW, 3, {MMXREG,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34082, 142}, + /* 1522 */ {I_PINSRW, 3, {MMXREG,RM_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34082, 142}, + /* 1523 */ {I_PINSRW, 3, {MMXREG,REG_GPR|BITS32,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34082, 142}, + /* 1524 */ {I_PMAXSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34089, 141}, + /* 1525 */ {I_PMAXUB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34096, 141}, + /* 1526 */ {I_PMINSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34103, 141}, + /* 1527 */ {I_PMINUB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34110, 141}, + /* 1528 */ {I_PMOVMSKB, 2, {REG_GPR|BITS32,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+44925, 140}, + /* 1529 */ {I_PMULHUW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34117, 141}, + /* 1530 */ {I_PSADBW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34124, 141}, + /* 1531 */ {I_PSHUFW, 3, {MMXREG,RM_MMX,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+12656, 143}, + /* 1532 */ {I_PF2IW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12664, 91}, + /* 1533 */ {I_PFNACC, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12672, 91}, + /* 1534 */ {I_PFPNACC, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12680, 91}, + /* 1535 */ {I_PI2FW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12688, 91}, + /* 1536 */ {I_PSWAPD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+12696, 91}, + /* 1537 */ {I_MASKMOVDQU, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44931, 144}, + /* 1538 */ {I_CLFLUSH, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+44937, 144}, + /* 1539 */ {I_MOVNTDQ, 2, {MEMORY,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44943, 145}, + /* 1540 */ {I_MOVNTI, 2, {MEMORY,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34132, 146}, + /* 1541 */ {I_MOVNTI, 2, {MEMORY,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34131, 147}, + /* 1542 */ {I_MOVNTPD, 2, {MEMORY,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44949, 145}, + /* 1543 */ {I_LFENCE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43191, 144}, + /* 1544 */ {I_MFENCE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43269, 144}, + /* 1545 */ {I_MOVD, 2, {MEMORY,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34138, 148}, + /* 1546 */ {I_MOVD, 2, {XMM_L16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+34145, 148}, + /* 1547 */ {I_MOVD, 2, {XMM_L16,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34145, 144}, + /* 1548 */ {I_MOVD, 2, {RM_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34138, 144}, + /* 1549 */ {I_MOVDQA, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44955, 145}, + /* 1550 */ {I_MOVDQA, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44961, 145}, + /* 1551 */ {I_MOVDQU, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+44967, 145}, + /* 1552 */ {I_MOVDQU, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44973, 145}, + /* 1553 */ {I_MOVDQ2Q, 2, {MMXREG,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44979, 144}, + /* 1554 */ {I_MOVQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44985, 144}, + /* 1555 */ {I_MOVQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44991, 144}, + /* 1556 */ {I_MOVQ, 2, {MEMORY,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+44991, 149}, + /* 1557 */ {I_MOVQ, 2, {XMM_L16,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+44985, 149}, + /* 1558 */ {I_MOVQ, 2, {XMM_L16,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34152, 150}, + /* 1559 */ {I_MOVQ, 2, {RM_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34159, 150}, + /* 1560 */ {I_MOVQ2DQ, 2, {XMM_L16,MMXREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+44997, 144}, + /* 1561 */ {I_PACKSSWB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45003, 145}, + /* 1562 */ {I_PACKSSDW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45009, 145}, + /* 1563 */ {I_PACKUSWB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45015, 145}, + /* 1564 */ {I_PADDB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45021, 145}, + /* 1565 */ {I_PADDW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45027, 145}, + /* 1566 */ {I_PADDD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45033, 145}, + /* 1567 */ {I_PADDQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+45039, 151}, + /* 1568 */ {I_PADDQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45045, 145}, + /* 1569 */ {I_PADDSB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45051, 145}, + /* 1570 */ {I_PADDSW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45057, 145}, + /* 1571 */ {I_PADDUSB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45063, 145}, + /* 1572 */ {I_PADDUSW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45069, 145}, + /* 1573 */ {I_PAND, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45075, 145}, + /* 1574 */ {I_PANDN, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45081, 145}, + /* 1575 */ {I_PAVGB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45087, 145}, + /* 1576 */ {I_PAVGW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45093, 145}, + /* 1577 */ {I_PCMPEQB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45099, 145}, + /* 1578 */ {I_PCMPEQW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45105, 145}, + /* 1579 */ {I_PCMPEQD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45111, 145}, + /* 1580 */ {I_PCMPGTB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45117, 145}, + /* 1581 */ {I_PCMPGTW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45123, 145}, + /* 1582 */ {I_PCMPGTD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45129, 145}, + /* 1583 */ {I_PEXTRW, 3, {REG_GPR|BITS32,XMM_L16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34166, 152}, + /* 1584 */ {I_PINSRW, 3, {XMM_L16,REG_GPR|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34173, 152}, + /* 1585 */ {I_PINSRW, 3, {XMM_L16,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34173, 152}, + /* 1586 */ {I_PINSRW, 3, {XMM_L16,MEMORY|BITS16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34173, 152}, + /* 1587 */ {I_PMADDWD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45135, 145}, + /* 1588 */ {I_PMAXSW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45141, 145}, + /* 1589 */ {I_PMAXUB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45147, 145}, + /* 1590 */ {I_PMINSW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45153, 145}, + /* 1591 */ {I_PMINUB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45159, 145}, + /* 1592 */ {I_PMOVMSKB, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45165, 144}, + /* 1593 */ {I_PMULHUW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45171, 145}, + /* 1594 */ {I_PMULHW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45177, 145}, + /* 1595 */ {I_PMULLW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45183, 145}, + /* 1596 */ {I_PMULUDQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34180, 145}, + /* 1597 */ {I_PMULUDQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45189, 145}, + /* 1598 */ {I_POR, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45195, 145}, + /* 1599 */ {I_PSADBW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45201, 145}, + /* 1600 */ {I_PSHUFD, 3, {XMM_L16,XMM_L16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34187, 152}, + /* 1601 */ {I_PSHUFD, 3, {XMM_L16,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34187, 154}, + /* 1602 */ {I_PSHUFHW, 3, {XMM_L16,XMM_L16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34194, 152}, + /* 1603 */ {I_PSHUFHW, 3, {XMM_L16,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34194, 154}, + /* 1604 */ {I_PSHUFLW, 3, {XMM_L16,XMM_L16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34201, 152}, + /* 1605 */ {I_PSHUFLW, 3, {XMM_L16,MEMORY,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+34201, 154}, + /* 1606 */ {I_PSLLDQ, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34208, 155}, + /* 1607 */ {I_PSLLW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45207, 145}, + /* 1608 */ {I_PSLLW, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34215, 155}, + /* 1609 */ {I_PSLLD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45213, 145}, + /* 1610 */ {I_PSLLD, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34222, 155}, + /* 1611 */ {I_PSLLQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45219, 145}, + /* 1612 */ {I_PSLLQ, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34229, 155}, + /* 1613 */ {I_PSRAW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45225, 145}, + /* 1614 */ {I_PSRAW, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34236, 155}, + /* 1615 */ {I_PSRAD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45231, 145}, + /* 1616 */ {I_PSRAD, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34243, 155}, + /* 1617 */ {I_PSRLDQ, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34250, 155}, + /* 1618 */ {I_PSRLW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45237, 145}, + /* 1619 */ {I_PSRLW, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34257, 155}, + /* 1620 */ {I_PSRLD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45243, 145}, + /* 1621 */ {I_PSRLD, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34264, 155}, + /* 1622 */ {I_PSRLQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45249, 145}, + /* 1623 */ {I_PSRLQ, 2, {XMM_L16,IMMEDIATE,0,0,0}, NO_DECORATOR, nasm_bytecodes+34271, 155}, + /* 1624 */ {I_PSUBB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45255, 145}, + /* 1625 */ {I_PSUBW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45261, 145}, + /* 1626 */ {I_PSUBD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45267, 145}, + /* 1627 */ {I_PSUBQ, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34278, 145}, + /* 1628 */ {I_PSUBQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45273, 145}, + /* 1629 */ {I_PSUBSB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45279, 145}, + /* 1630 */ {I_PSUBSW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45285, 145}, + /* 1631 */ {I_PSUBUSB, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45291, 145}, + /* 1632 */ {I_PSUBUSW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45297, 145}, + /* 1633 */ {I_PUNPCKHBW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45303, 145}, + /* 1634 */ {I_PUNPCKHWD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45309, 145}, + /* 1635 */ {I_PUNPCKHDQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45315, 145}, + /* 1636 */ {I_PUNPCKHQDQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45321, 145}, + /* 1637 */ {I_PUNPCKLBW, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45327, 145}, + /* 1638 */ {I_PUNPCKLWD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45333, 145}, + /* 1639 */ {I_PUNPCKLDQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45339, 145}, + /* 1640 */ {I_PUNPCKLQDQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45345, 145}, + /* 1641 */ {I_PXOR, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45351, 145}, + /* 1642 */ {I_ADDPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45357, 145}, + /* 1643 */ {I_ADDSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45363, 149}, + /* 1644 */ {I_ANDNPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45369, 145}, + /* 1645 */ {I_ANDPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45375, 145}, + /* 1646 */ {I_CMPEQPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12704, 145}, + /* 1647 */ {I_CMPEQSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12712, 149}, + /* 1648 */ {I_CMPLEPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12720, 145}, + /* 1649 */ {I_CMPLESD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12728, 149}, + /* 1650 */ {I_CMPLTPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12736, 145}, + /* 1651 */ {I_CMPLTSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12744, 149}, + /* 1652 */ {I_CMPNEQPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12752, 145}, + /* 1653 */ {I_CMPNEQSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12760, 149}, + /* 1654 */ {I_CMPNLEPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12768, 145}, + /* 1655 */ {I_CMPNLESD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12776, 149}, + /* 1656 */ {I_CMPNLTPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12784, 145}, + /* 1657 */ {I_CMPNLTSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12792, 149}, + /* 1658 */ {I_CMPORDPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12800, 145}, + /* 1659 */ {I_CMPORDSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12808, 149}, + /* 1660 */ {I_CMPUNORDPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12816, 145}, + /* 1661 */ {I_CMPUNORDSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12824, 149}, + /* 1662 */ {I_CMPPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+34285, 144}, + /* 1663 */ {I_CMPSD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+34292, 144}, + /* 1664 */ {I_COMISD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45381, 144}, + /* 1665 */ {I_CVTDQ2PD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45387, 149}, + /* 1666 */ {I_CVTDQ2PS, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45393, 145}, + /* 1667 */ {I_CVTPD2DQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45399, 145}, + /* 1668 */ {I_CVTPD2PI, 2, {MMXREG,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45405, 145}, + /* 1669 */ {I_CVTPD2PS, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45411, 145}, + /* 1670 */ {I_CVTPI2PD, 2, {XMM_L16,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+45417, 149}, + /* 1671 */ {I_CVTPS2DQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45423, 145}, + /* 1672 */ {I_CVTPS2PD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45429, 149}, + /* 1673 */ {I_CVTSD2SI, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34299, 156}, + /* 1674 */ {I_CVTSD2SI, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+34299, 156}, + /* 1675 */ {I_CVTSD2SI, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34306, 157}, + /* 1676 */ {I_CVTSD2SI, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+34306, 157}, + /* 1677 */ {I_CVTSD2SS, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45435, 149}, + /* 1678 */ {I_CVTSI2SD, 2, {XMM_L16,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34313, 158}, + /* 1679 */ {I_CVTSI2SD, 2, {XMM_L16,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34320, 157}, + /* 1680 */ {I_CVTSS2SD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45441, 148}, + /* 1681 */ {I_CVTTPD2PI, 2, {MMXREG,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45447, 145}, + /* 1682 */ {I_CVTTPD2DQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45453, 145}, + /* 1683 */ {I_CVTTPS2DQ, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45459, 145}, + /* 1684 */ {I_CVTTSD2SI, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34327, 156}, + /* 1685 */ {I_CVTTSD2SI, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+34327, 156}, + /* 1686 */ {I_CVTTSD2SI, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34334, 157}, + /* 1687 */ {I_CVTTSD2SI, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+34334, 157}, + /* 1688 */ {I_DIVPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45465, 145}, + /* 1689 */ {I_DIVSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45471, 149}, + /* 1690 */ {I_MAXPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45477, 145}, + /* 1691 */ {I_MAXSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45483, 149}, + /* 1692 */ {I_MINPD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45489, 145}, + /* 1693 */ {I_MINSD, 2, {XMM_L16,RM_XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45495, 149}, + /* 1694 */ {I_MOVAPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45501, 144}, + /* 1695 */ {I_MOVAPD, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45507, 144}, + /* 1696 */ {I_MOVHPD, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45513, 144}, + /* 1697 */ {I_MOVHPD, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45519, 144}, + /* 1698 */ {I_MOVLPD, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45525, 144}, + /* 1699 */ {I_MOVLPD, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45531, 144}, + /* 1700 */ {I_MOVMSKPD, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45537, 144}, + /* 1701 */ {I_MOVMSKPD, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34341, 150}, + /* 1702 */ {I_MOVSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45543, 144}, + /* 1703 */ {I_MOVSD, 2, {RM_XMM_L16|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45549, 144}, + /* 1704 */ {I_MOVUPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45555, 144}, + /* 1705 */ {I_MOVUPD, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45561, 144}, + /* 1706 */ {I_MULPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45567, 145}, + /* 1707 */ {I_MULSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45573, 149}, + /* 1708 */ {I_ORPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45579, 145}, + /* 1709 */ {I_SHUFPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+34348, 144}, + /* 1710 */ {I_SQRTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45585, 145}, + /* 1711 */ {I_SQRTSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45591, 144}, + /* 1712 */ {I_SUBPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45597, 145}, + /* 1713 */ {I_SUBSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45603, 144}, + /* 1714 */ {I_UCOMISD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45609, 144}, + /* 1715 */ {I_UNPCKHPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45615, 144}, + /* 1716 */ {I_UNPCKLPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45621, 144}, + /* 1717 */ {I_XORPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45627, 144}, + /* 1718 */ {I_ADDSUBPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45633, 159}, + /* 1719 */ {I_ADDSUBPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45639, 159}, + /* 1720 */ {I_HADDPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45645, 159}, + /* 1721 */ {I_HADDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45651, 159}, + /* 1722 */ {I_HSUBPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45657, 159}, + /* 1723 */ {I_HSUBPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45663, 159}, + /* 1724 */ {I_LDDQU, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45669, 159}, + /* 1725 */ {I_MOVDDUP, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+45675, 160}, + /* 1726 */ {I_MOVSHDUP, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45681, 161}, + /* 1727 */ {I_MOVSLDUP, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45687, 161}, + /* 1728 */ {I_CLGI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49097, 162}, + /* 1729 */ {I_STGI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49102, 162}, + /* 1730 */ {I_VMCALL, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45730, 163}, + /* 1731 */ {I_VMCLEAR, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45693, 163}, + /* 1732 */ {I_VMFUNC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49107, 163}, + /* 1733 */ {I_VMLAUNCH, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49112, 163}, + /* 1734 */ {I_VMLOAD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49117, 162}, + /* 1735 */ {I_VMMCALL, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49122, 162}, + /* 1736 */ {I_VMPTRLD, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45699, 163}, + /* 1737 */ {I_VMPTRST, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45705, 163}, + /* 1738 */ {I_VMREAD, 2, {RM_GPR|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34356, 164}, + /* 1739 */ {I_VMREAD, 2, {RM_GPR|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34355, 165}, + /* 1740 */ {I_VMRESUME, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49127, 163}, + /* 1741 */ {I_VMRUN, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49132, 162}, + /* 1742 */ {I_VMSAVE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49137, 162}, + /* 1743 */ {I_VMWRITE, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34363, 164}, + /* 1744 */ {I_VMWRITE, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34362, 165}, + /* 1745 */ {I_VMXOFF, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49142, 163}, + /* 1746 */ {I_VMXON, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42511, 163}, + /* 1747 */ {I_INVEPT, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+12833, 166}, + /* 1748 */ {I_INVEPT, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+12832, 167}, + /* 1749 */ {I_INVVPID, 2, {REG_GPR|BITS32,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+12841, 166}, + /* 1750 */ {I_INVVPID, 2, {REG_GPR|BITS64,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+12840, 167}, + /* 1751 */ {I_PVALIDATE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45711, 162}, + /* 1752 */ {I_RMPADJUST, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45717, 162}, + /* 1753 */ {I_VMGEXIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45723, 162}, + /* 1754 */ {I_VMGEXIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45729, 162}, + /* 1755 */ {I_PABSB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34369, 168}, + /* 1756 */ {I_PABSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34376, 169}, + /* 1757 */ {I_PABSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34383, 168}, + /* 1758 */ {I_PABSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34390, 169}, + /* 1759 */ {I_PABSD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34397, 168}, + /* 1760 */ {I_PABSD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34404, 169}, + /* 1761 */ {I_PALIGNR, 3, {MMXREG,RM_MMX,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+12848, 168}, + /* 1762 */ {I_PALIGNR, 3, {XMM_L16,RM_XMM_L16,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+12856, 169}, + /* 1763 */ {I_PHADDW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34411, 168}, + /* 1764 */ {I_PHADDW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34418, 169}, + /* 1765 */ {I_PHADDD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34425, 168}, + /* 1766 */ {I_PHADDD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34432, 169}, + /* 1767 */ {I_PHADDSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34439, 168}, + /* 1768 */ {I_PHADDSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34446, 169}, + /* 1769 */ {I_PHSUBW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34453, 168}, + /* 1770 */ {I_PHSUBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34460, 169}, + /* 1771 */ {I_PHSUBD, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34467, 168}, + /* 1772 */ {I_PHSUBD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34474, 169}, + /* 1773 */ {I_PHSUBSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34481, 168}, + /* 1774 */ {I_PHSUBSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34488, 169}, + /* 1775 */ {I_PMADDUBSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34495, 168}, + /* 1776 */ {I_PMADDUBSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34502, 169}, + /* 1777 */ {I_PMULHRSW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34509, 168}, + /* 1778 */ {I_PMULHRSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34516, 169}, + /* 1779 */ {I_PSHUFB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34523, 168}, + /* 1780 */ {I_PSHUFB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34530, 169}, + /* 1781 */ {I_PSIGNB, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34537, 168}, + /* 1782 */ {I_PSIGNB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34544, 169}, + /* 1783 */ {I_PSIGNW, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34551, 168}, + /* 1784 */ {I_PSIGNW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34558, 169}, + /* 1785 */ {I_PSIGND, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+34565, 168}, + /* 1786 */ {I_PSIGND, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34572, 169}, + /* 1787 */ {I_EXTRQ, 3, {XMM_L16,IMMEDIATE,IMMEDIATE,0,0}, NO_DECORATOR, nasm_bytecodes+12864, 170}, + /* 1788 */ {I_EXTRQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45735, 170}, + /* 1789 */ {I_INSERTQ, 4, {XMM_L16,XMM_L16,IMMEDIATE,IMMEDIATE,0}, NO_DECORATOR, nasm_bytecodes+12872, 170}, + /* 1790 */ {I_INSERTQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45741, 170}, + /* 1791 */ {I_MOVNTSD, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45747, 171}, + /* 1792 */ {I_MOVNTSS, 2, {MEMORY|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+45753, 172}, + /* 1793 */ {I_LZCNT, 2, {REG_GPR|BITS16,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34579, 113}, + /* 1794 */ {I_LZCNT, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34586, 113}, + /* 1795 */ {I_LZCNT, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34593, 59}, + /* 1796 */ {I_BLENDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12880, 173}, + /* 1797 */ {I_BLENDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12888, 173}, + /* 1798 */ {I_BLENDVPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM0,0,0}, NO_DECORATOR, nasm_bytecodes+34600, 173}, + /* 1799 */ {I_BLENDVPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34600, 173}, + /* 1800 */ {I_BLENDVPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM0,0,0}, NO_DECORATOR, nasm_bytecodes+34607, 173}, + /* 1801 */ {I_BLENDVPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34607, 173}, + /* 1802 */ {I_DPPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12896, 173}, + /* 1803 */ {I_DPPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12904, 173}, + /* 1804 */ {I_EXTRACTPS, 3, {RM_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4241, 173}, + /* 1805 */ {I_EXTRACTPS, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4240, 174}, + /* 1806 */ {I_INSERTPS, 3, {XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12912, 173}, + /* 1807 */ {I_MOVNTDQA, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34614, 173}, + /* 1808 */ {I_MPSADBW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12920, 173}, + /* 1809 */ {I_PACKUSDW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34621, 173}, + /* 1810 */ {I_PBLENDVB, 3, {XMM_L16,RM_XMM_L16,XMM0,0,0}, NO_DECORATOR, nasm_bytecodes+34628, 173}, + /* 1811 */ {I_PBLENDVB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34628, 173}, + /* 1812 */ {I_PBLENDW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12928, 173}, + /* 1813 */ {I_PCMPEQQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34635, 173}, + /* 1814 */ {I_PEXTRB, 3, {REG_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4250, 173}, + /* 1815 */ {I_PEXTRB, 3, {MEMORY|BITS8,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4250, 173}, + /* 1816 */ {I_PEXTRB, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4249, 174}, + /* 1817 */ {I_PEXTRD, 3, {RM_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4258, 173}, + /* 1818 */ {I_PEXTRQ, 3, {RM_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4267, 174}, + /* 1819 */ {I_PEXTRW, 3, {REG_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4277, 173}, + /* 1820 */ {I_PEXTRW, 3, {MEMORY|BITS16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4277, 173}, + /* 1821 */ {I_PEXTRW, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4276, 174}, + /* 1822 */ {I_PHMINPOSUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34642, 173}, + /* 1823 */ {I_PINSRB, 3, {XMM_L16,MEMORY,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4286, 175}, + /* 1824 */ {I_PINSRB, 3, {XMM_L16,RM_GPR|BITS8,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4285, 175}, + /* 1825 */ {I_PINSRB, 3, {XMM_L16,REG_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4286, 175}, + /* 1826 */ {I_PINSRD, 3, {XMM_L16,RM_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4294, 175}, + /* 1827 */ {I_PINSRQ, 3, {XMM_L16,RM_GPR|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+4303, 176}, + /* 1828 */ {I_PMAXSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34649, 173}, + /* 1829 */ {I_PMAXSD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34656, 173}, + /* 1830 */ {I_PMAXUD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34663, 173}, + /* 1831 */ {I_PMAXUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34670, 173}, + /* 1832 */ {I_PMINSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34677, 173}, + /* 1833 */ {I_PMINSD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34684, 173}, + /* 1834 */ {I_PMINUD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34691, 173}, + /* 1835 */ {I_PMINUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34698, 173}, + /* 1836 */ {I_PMOVSXBW, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34705, 177}, + /* 1837 */ {I_PMOVSXBD, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34712, 178}, + /* 1838 */ {I_PMOVSXBQ, 2, {XMM_L16,RM_XMM_L16|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34719, 179}, + /* 1839 */ {I_PMOVSXWD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34726, 177}, + /* 1840 */ {I_PMOVSXWQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34733, 178}, + /* 1841 */ {I_PMOVSXDQ, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34740, 177}, + /* 1842 */ {I_PMOVZXBW, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34747, 177}, + /* 1843 */ {I_PMOVZXBD, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34754, 178}, + /* 1844 */ {I_PMOVZXBQ, 2, {XMM_L16,RM_XMM_L16|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34761, 179}, + /* 1845 */ {I_PMOVZXWD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34768, 177}, + /* 1846 */ {I_PMOVZXWQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34775, 178}, + /* 1847 */ {I_PMOVZXDQ, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34782, 177}, + /* 1848 */ {I_PMULDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34789, 173}, + /* 1849 */ {I_PMULLD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34796, 173}, + /* 1850 */ {I_PTEST, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34803, 173}, + /* 1851 */ {I_ROUNDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12936, 173}, + /* 1852 */ {I_ROUNDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12944, 173}, + /* 1853 */ {I_ROUNDSD, 3, {XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12952, 173}, + /* 1854 */ {I_ROUNDSS, 3, {XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+12960, 173}, + /* 1855 */ {I_CRC32, 2, {REG_GPR|BITS32,RM_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12985, 180}, + /* 1856 */ {I_CRC32, 2, {REG_GPR|BITS32,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+12968, 180}, + /* 1857 */ {I_CRC32, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+12976, 180}, + /* 1858 */ {I_CRC32, 2, {REG_GPR|BITS64,RM_GPR|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+12984, 181}, + /* 1859 */ {I_CRC32, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+12992, 181}, + /* 1860 */ {I_PCMPESTRI, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13000, 180}, + /* 1861 */ {I_PCMPESTRM, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13008, 180}, + /* 1862 */ {I_PCMPISTRI, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13016, 180}, + /* 1863 */ {I_PCMPISTRM, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13024, 180}, + /* 1864 */ {I_PCMPGTQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34810, 180}, + /* 1865 */ {I_POPCNT, 2, {REG_GPR|BITS16,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+34817, 182}, + /* 1866 */ {I_POPCNT, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+34824, 183}, + /* 1867 */ {I_POPCNT, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+34831, 184}, + /* 1868 */ {I_GETSEC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+50183, 139}, + /* 1869 */ {I_PFRCPV, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+13032, 185}, + /* 1870 */ {I_PFRSQRTV, 2, {MMXREG,RM_MMX,0,0,0}, NO_DECORATOR, nasm_bytecodes+13040, 185}, + /* 1871 */ {I_MOVBE, 2, {REG_GPR|BITS16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+13048, 186}, + /* 1872 */ {I_MOVBE, 2, {REG_GPR|BITS32,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+13056, 186}, + /* 1873 */ {I_MOVBE, 2, {REG_GPR|BITS64,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+13064, 186}, + /* 1874 */ {I_MOVBE, 2, {MEMORY|BITS16,REG_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+13072, 186}, + /* 1875 */ {I_MOVBE, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+13080, 186}, + /* 1876 */ {I_MOVBE, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+13088, 186}, + /* 1877 */ {I_AESENC, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34838, 187}, + /* 1878 */ {I_AESENCLAST, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34845, 187}, + /* 1879 */ {I_AESDEC, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34852, 187}, + /* 1880 */ {I_AESDECLAST, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34859, 187}, + /* 1881 */ {I_AESIMC, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34866, 187}, + /* 1882 */ {I_AESKEYGENASSIST, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13096, 187}, + /* 1883 */ {I_VAESENC, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+34873, 188}, + /* 1884 */ {I_VAESENC, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34880, 188}, + /* 1885 */ {I_VAESENCLAST, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+34887, 188}, + /* 1886 */ {I_VAESENCLAST, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34894, 188}, + /* 1887 */ {I_VAESDEC, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+34901, 188}, + /* 1888 */ {I_VAESDEC, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34908, 188}, + /* 1889 */ {I_VAESDECLAST, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+34915, 188}, + /* 1890 */ {I_VAESDECLAST, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34922, 188}, + /* 1891 */ {I_VAESIMC, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34929, 188}, + /* 1892 */ {I_VAESKEYGENASSIST, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13104, 188}, + /* 1893 */ {I_VAESENC, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+34936, 189}, + /* 1894 */ {I_VAESENC, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+34943, 189}, + /* 1895 */ {I_VAESENCLAST, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+34950, 189}, + /* 1896 */ {I_VAESENCLAST, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+34957, 189}, + /* 1897 */ {I_VAESDEC, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+34964, 189}, + /* 1898 */ {I_VAESDEC, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+34971, 189}, + /* 1899 */ {I_VAESDECLAST, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+34978, 189}, + /* 1900 */ {I_VAESDECLAST, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+34985, 189}, + /* 1901 */ {I_VAESENC, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+13112, 190}, + /* 1902 */ {I_VAESENC, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+13120, 190}, + /* 1903 */ {I_VAESENC, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+13128, 190}, + /* 1904 */ {I_VAESENC, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+13136, 190}, + /* 1905 */ {I_VAESENCLAST, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+13144, 190}, + /* 1906 */ {I_VAESENCLAST, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+13152, 190}, + /* 1907 */ {I_VAESENCLAST, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+13160, 190}, + /* 1908 */ {I_VAESENCLAST, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+13168, 190}, + /* 1909 */ {I_VAESDEC, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+13176, 190}, + /* 1910 */ {I_VAESDEC, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+13184, 190}, + /* 1911 */ {I_VAESDEC, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+13192, 190}, + /* 1912 */ {I_VAESDEC, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+13200, 190}, + /* 1913 */ {I_VAESDECLAST, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+13208, 190}, + /* 1914 */ {I_VAESDECLAST, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+13216, 190}, + /* 1915 */ {I_VAESDECLAST, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+13224, 190}, + /* 1916 */ {I_VAESDECLAST, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+13232, 190}, + /* 1917 */ {I_VAESENC, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+13240, 191}, + /* 1918 */ {I_VAESENC, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+13248, 191}, + /* 1919 */ {I_VAESENCLAST, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+13256, 191}, + /* 1920 */ {I_VAESENCLAST, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+13264, 191}, + /* 1921 */ {I_VAESDEC, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+13272, 191}, + /* 1922 */ {I_VAESDEC, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+13280, 191}, + /* 1923 */ {I_VAESDECLAST, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+13288, 191}, + /* 1924 */ {I_VAESDECLAST, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+13296, 191}, + /* 1925 */ {I_VADDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+34992, 188}, + /* 1926 */ {I_VADDPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+34999, 188}, + /* 1927 */ {I_VADDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35006, 188}, + /* 1928 */ {I_VADDPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35013, 188}, + /* 1929 */ {I_VADDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35020, 188}, + /* 1930 */ {I_VADDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35027, 188}, + /* 1931 */ {I_VADDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35034, 188}, + /* 1932 */ {I_VADDPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35041, 188}, + /* 1933 */ {I_VADDSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35048, 188}, + /* 1934 */ {I_VADDSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35055, 188}, + /* 1935 */ {I_VADDSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35062, 188}, + /* 1936 */ {I_VADDSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35069, 188}, + /* 1937 */ {I_VADDSUBPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35076, 188}, + /* 1938 */ {I_VADDSUBPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35083, 188}, + /* 1939 */ {I_VADDSUBPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35090, 188}, + /* 1940 */ {I_VADDSUBPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35097, 188}, + /* 1941 */ {I_VADDSUBPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35104, 188}, + /* 1942 */ {I_VADDSUBPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35111, 188}, + /* 1943 */ {I_VADDSUBPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35118, 188}, + /* 1944 */ {I_VADDSUBPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35125, 188}, + /* 1945 */ {I_VANDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35132, 188}, + /* 1946 */ {I_VANDPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35139, 188}, + /* 1947 */ {I_VANDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35146, 188}, + /* 1948 */ {I_VANDPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35153, 188}, + /* 1949 */ {I_VANDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35160, 188}, + /* 1950 */ {I_VANDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35167, 188}, + /* 1951 */ {I_VANDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35174, 188}, + /* 1952 */ {I_VANDPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35181, 188}, + /* 1953 */ {I_VANDNPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35188, 188}, + /* 1954 */ {I_VANDNPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35195, 188}, + /* 1955 */ {I_VANDNPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35202, 188}, + /* 1956 */ {I_VANDNPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35209, 188}, + /* 1957 */ {I_VANDNPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35216, 188}, + /* 1958 */ {I_VANDNPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35223, 188}, + /* 1959 */ {I_VANDNPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35230, 188}, + /* 1960 */ {I_VANDNPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35237, 188}, + /* 1961 */ {I_VBLENDPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13304, 188}, + /* 1962 */ {I_VBLENDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13312, 188}, + /* 1963 */ {I_VBLENDPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13320, 188}, + /* 1964 */ {I_VBLENDPD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13328, 188}, + /* 1965 */ {I_VBLENDPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13336, 188}, + /* 1966 */ {I_VBLENDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13344, 188}, + /* 1967 */ {I_VBLENDPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13352, 188}, + /* 1968 */ {I_VBLENDPS, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13360, 188}, + /* 1969 */ {I_VBLENDVPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+13368, 188}, + /* 1970 */ {I_VBLENDVPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+13376, 188}, + /* 1971 */ {I_VBLENDVPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+13384, 188}, + /* 1972 */ {I_VBLENDVPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+13392, 188}, + /* 1973 */ {I_VBLENDVPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+13400, 188}, + /* 1974 */ {I_VBLENDVPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+13408, 188}, + /* 1975 */ {I_VBLENDVPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+13416, 188}, + /* 1976 */ {I_VBLENDVPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+13424, 188}, + /* 1977 */ {I_VBROADCASTSS, 2, {XMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35244, 188}, + /* 1978 */ {I_VBROADCASTSS, 2, {YMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35251, 188}, + /* 1979 */ {I_VBROADCASTSD, 2, {YMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35258, 188}, + /* 1980 */ {I_VBROADCASTF128, 2, {YMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35265, 188}, + /* 1981 */ {I_VCMPEQ_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4312, 188}, + /* 1982 */ {I_VCMPEQ_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4321, 188}, + /* 1983 */ {I_VCMPEQ_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4330, 188}, + /* 1984 */ {I_VCMPEQ_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4339, 188}, + /* 1985 */ {I_VCMPEQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4348, 188}, + /* 1986 */ {I_VCMPEQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4357, 188}, + /* 1987 */ {I_VCMPEQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4366, 188}, + /* 1988 */ {I_VCMPEQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4375, 188}, + /* 1989 */ {I_VCMPLT_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4384, 188}, + /* 1990 */ {I_VCMPLT_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4393, 188}, + /* 1991 */ {I_VCMPLT_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4402, 188}, + /* 1992 */ {I_VCMPLT_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4411, 188}, + /* 1993 */ {I_VCMPLTPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4384, 188}, + /* 1994 */ {I_VCMPLTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4393, 188}, + /* 1995 */ {I_VCMPLTPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4402, 188}, + /* 1996 */ {I_VCMPLTPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4411, 188}, + /* 1997 */ {I_VCMPLE_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4420, 188}, + /* 1998 */ {I_VCMPLE_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4429, 188}, + /* 1999 */ {I_VCMPLE_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4438, 188}, + /* 2000 */ {I_VCMPLE_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4447, 188}, + /* 2001 */ {I_VCMPLEPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4420, 188}, + /* 2002 */ {I_VCMPLEPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4429, 188}, + /* 2003 */ {I_VCMPLEPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4438, 188}, + /* 2004 */ {I_VCMPLEPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4447, 188}, + /* 2005 */ {I_VCMPUNORD_QPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4456, 188}, + /* 2006 */ {I_VCMPUNORD_QPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4465, 188}, + /* 2007 */ {I_VCMPUNORD_QPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4474, 188}, + /* 2008 */ {I_VCMPUNORD_QPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4483, 188}, + /* 2009 */ {I_VCMPUNORDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4456, 188}, + /* 2010 */ {I_VCMPUNORDPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4465, 188}, + /* 2011 */ {I_VCMPUNORDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4474, 188}, + /* 2012 */ {I_VCMPUNORDPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4483, 188}, + /* 2013 */ {I_VCMPNEQ_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4492, 188}, + /* 2014 */ {I_VCMPNEQ_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4501, 188}, + /* 2015 */ {I_VCMPNEQ_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4510, 188}, + /* 2016 */ {I_VCMPNEQ_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4519, 188}, + /* 2017 */ {I_VCMPNEQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4492, 188}, + /* 2018 */ {I_VCMPNEQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4501, 188}, + /* 2019 */ {I_VCMPNEQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4510, 188}, + /* 2020 */ {I_VCMPNEQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4519, 188}, + /* 2021 */ {I_VCMPNLT_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4528, 188}, + /* 2022 */ {I_VCMPNLT_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4537, 188}, + /* 2023 */ {I_VCMPNLT_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4546, 188}, + /* 2024 */ {I_VCMPNLT_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4555, 188}, + /* 2025 */ {I_VCMPNLTPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4528, 188}, + /* 2026 */ {I_VCMPNLTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4537, 188}, + /* 2027 */ {I_VCMPNLTPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4546, 188}, + /* 2028 */ {I_VCMPNLTPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4555, 188}, + /* 2029 */ {I_VCMPNLE_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4564, 188}, + /* 2030 */ {I_VCMPNLE_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4573, 188}, + /* 2031 */ {I_VCMPNLE_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4582, 188}, + /* 2032 */ {I_VCMPNLE_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4591, 188}, + /* 2033 */ {I_VCMPNLEPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4564, 188}, + /* 2034 */ {I_VCMPNLEPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4573, 188}, + /* 2035 */ {I_VCMPNLEPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4582, 188}, + /* 2036 */ {I_VCMPNLEPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4591, 188}, + /* 2037 */ {I_VCMPORD_QPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4600, 188}, + /* 2038 */ {I_VCMPORD_QPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4609, 188}, + /* 2039 */ {I_VCMPORD_QPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4618, 188}, + /* 2040 */ {I_VCMPORD_QPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4627, 188}, + /* 2041 */ {I_VCMPORDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4600, 188}, + /* 2042 */ {I_VCMPORDPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4609, 188}, + /* 2043 */ {I_VCMPORDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4618, 188}, + /* 2044 */ {I_VCMPORDPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4627, 188}, + /* 2045 */ {I_VCMPEQ_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4636, 188}, + /* 2046 */ {I_VCMPEQ_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4645, 188}, + /* 2047 */ {I_VCMPEQ_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4654, 188}, + /* 2048 */ {I_VCMPEQ_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4663, 188}, + /* 2049 */ {I_VCMPNGE_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4672, 188}, + /* 2050 */ {I_VCMPNGE_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4681, 188}, + /* 2051 */ {I_VCMPNGE_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4690, 188}, + /* 2052 */ {I_VCMPNGE_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4699, 188}, + /* 2053 */ {I_VCMPNGEPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4672, 188}, + /* 2054 */ {I_VCMPNGEPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4681, 188}, + /* 2055 */ {I_VCMPNGEPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4690, 188}, + /* 2056 */ {I_VCMPNGEPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4699, 188}, + /* 2057 */ {I_VCMPNGT_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4708, 188}, + /* 2058 */ {I_VCMPNGT_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4717, 188}, + /* 2059 */ {I_VCMPNGT_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4726, 188}, + /* 2060 */ {I_VCMPNGT_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4735, 188}, + /* 2061 */ {I_VCMPNGTPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4708, 188}, + /* 2062 */ {I_VCMPNGTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4717, 188}, + /* 2063 */ {I_VCMPNGTPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4726, 188}, + /* 2064 */ {I_VCMPNGTPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4735, 188}, + /* 2065 */ {I_VCMPFALSE_OQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4744, 188}, + /* 2066 */ {I_VCMPFALSE_OQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4753, 188}, + /* 2067 */ {I_VCMPFALSE_OQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4762, 188}, + /* 2068 */ {I_VCMPFALSE_OQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4771, 188}, + /* 2069 */ {I_VCMPFALSEPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4744, 188}, + /* 2070 */ {I_VCMPFALSEPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4753, 188}, + /* 2071 */ {I_VCMPFALSEPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4762, 188}, + /* 2072 */ {I_VCMPFALSEPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4771, 188}, + /* 2073 */ {I_VCMPNEQ_OQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4780, 188}, + /* 2074 */ {I_VCMPNEQ_OQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4789, 188}, + /* 2075 */ {I_VCMPNEQ_OQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4798, 188}, + /* 2076 */ {I_VCMPNEQ_OQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4807, 188}, + /* 2077 */ {I_VCMPGE_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4816, 188}, + /* 2078 */ {I_VCMPGE_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4825, 188}, + /* 2079 */ {I_VCMPGE_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4834, 188}, + /* 2080 */ {I_VCMPGE_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4843, 188}, + /* 2081 */ {I_VCMPGEPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4816, 188}, + /* 2082 */ {I_VCMPGEPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4825, 188}, + /* 2083 */ {I_VCMPGEPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4834, 188}, + /* 2084 */ {I_VCMPGEPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4843, 188}, + /* 2085 */ {I_VCMPGT_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4852, 188}, + /* 2086 */ {I_VCMPGT_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4861, 188}, + /* 2087 */ {I_VCMPGT_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4870, 188}, + /* 2088 */ {I_VCMPGT_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4879, 188}, + /* 2089 */ {I_VCMPGTPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4852, 188}, + /* 2090 */ {I_VCMPGTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4861, 188}, + /* 2091 */ {I_VCMPGTPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4870, 188}, + /* 2092 */ {I_VCMPGTPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4879, 188}, + /* 2093 */ {I_VCMPTRUE_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4888, 188}, + /* 2094 */ {I_VCMPTRUE_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4897, 188}, + /* 2095 */ {I_VCMPTRUE_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4906, 188}, + /* 2096 */ {I_VCMPTRUE_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4915, 188}, + /* 2097 */ {I_VCMPTRUEPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4888, 188}, + /* 2098 */ {I_VCMPTRUEPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4897, 188}, + /* 2099 */ {I_VCMPTRUEPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4906, 188}, + /* 2100 */ {I_VCMPTRUEPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4915, 188}, + /* 2101 */ {I_VCMPEQ_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4312, 188}, + /* 2102 */ {I_VCMPEQ_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4321, 188}, + /* 2103 */ {I_VCMPEQ_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4330, 188}, + /* 2104 */ {I_VCMPEQ_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4339, 188}, + /* 2105 */ {I_VCMPLT_OQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4924, 188}, + /* 2106 */ {I_VCMPLT_OQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4933, 188}, + /* 2107 */ {I_VCMPLT_OQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4942, 188}, + /* 2108 */ {I_VCMPLT_OQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4951, 188}, + /* 2109 */ {I_VCMPLE_OQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4960, 188}, + /* 2110 */ {I_VCMPLE_OQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+4969, 188}, + /* 2111 */ {I_VCMPLE_OQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+4978, 188}, + /* 2112 */ {I_VCMPLE_OQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+4987, 188}, + /* 2113 */ {I_VCMPUNORD_SPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+4996, 188}, + /* 2114 */ {I_VCMPUNORD_SPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5005, 188}, + /* 2115 */ {I_VCMPUNORD_SPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5014, 188}, + /* 2116 */ {I_VCMPUNORD_SPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5023, 188}, + /* 2117 */ {I_VCMPNEQ_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5032, 188}, + /* 2118 */ {I_VCMPNEQ_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5041, 188}, + /* 2119 */ {I_VCMPNEQ_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5050, 188}, + /* 2120 */ {I_VCMPNEQ_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5059, 188}, + /* 2121 */ {I_VCMPNLT_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5068, 188}, + /* 2122 */ {I_VCMPNLT_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5077, 188}, + /* 2123 */ {I_VCMPNLT_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5086, 188}, + /* 2124 */ {I_VCMPNLT_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5095, 188}, + /* 2125 */ {I_VCMPNLE_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5104, 188}, + /* 2126 */ {I_VCMPNLE_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5113, 188}, + /* 2127 */ {I_VCMPNLE_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5122, 188}, + /* 2128 */ {I_VCMPNLE_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5131, 188}, + /* 2129 */ {I_VCMPORD_SPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5140, 188}, + /* 2130 */ {I_VCMPORD_SPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5149, 188}, + /* 2131 */ {I_VCMPORD_SPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5158, 188}, + /* 2132 */ {I_VCMPORD_SPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5167, 188}, + /* 2133 */ {I_VCMPEQ_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5176, 188}, + /* 2134 */ {I_VCMPEQ_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5185, 188}, + /* 2135 */ {I_VCMPEQ_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5194, 188}, + /* 2136 */ {I_VCMPEQ_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5203, 188}, + /* 2137 */ {I_VCMPNGE_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5212, 188}, + /* 2138 */ {I_VCMPNGE_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5221, 188}, + /* 2139 */ {I_VCMPNGE_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5230, 188}, + /* 2140 */ {I_VCMPNGE_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5239, 188}, + /* 2141 */ {I_VCMPNGT_UQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5248, 188}, + /* 2142 */ {I_VCMPNGT_UQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5257, 188}, + /* 2143 */ {I_VCMPNGT_UQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5266, 188}, + /* 2144 */ {I_VCMPNGT_UQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5275, 188}, + /* 2145 */ {I_VCMPFALSE_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5284, 188}, + /* 2146 */ {I_VCMPFALSE_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5293, 188}, + /* 2147 */ {I_VCMPFALSE_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5302, 188}, + /* 2148 */ {I_VCMPFALSE_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5311, 188}, + /* 2149 */ {I_VCMPNEQ_OSPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5320, 188}, + /* 2150 */ {I_VCMPNEQ_OSPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5329, 188}, + /* 2151 */ {I_VCMPNEQ_OSPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5338, 188}, + /* 2152 */ {I_VCMPNEQ_OSPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5347, 188}, + /* 2153 */ {I_VCMPGE_OQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5356, 188}, + /* 2154 */ {I_VCMPGE_OQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5365, 188}, + /* 2155 */ {I_VCMPGE_OQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5374, 188}, + /* 2156 */ {I_VCMPGE_OQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5383, 188}, + /* 2157 */ {I_VCMPGT_OQPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5392, 188}, + /* 2158 */ {I_VCMPGT_OQPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5401, 188}, + /* 2159 */ {I_VCMPGT_OQPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5410, 188}, + /* 2160 */ {I_VCMPGT_OQPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5419, 188}, + /* 2161 */ {I_VCMPTRUE_USPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5428, 188}, + /* 2162 */ {I_VCMPTRUE_USPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5437, 188}, + /* 2163 */ {I_VCMPTRUE_USPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5446, 188}, + /* 2164 */ {I_VCMPTRUE_USPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5455, 188}, + /* 2165 */ {I_VCMPPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13432, 188}, + /* 2166 */ {I_VCMPPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13440, 188}, + /* 2167 */ {I_VCMPPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13448, 188}, + /* 2168 */ {I_VCMPPD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13456, 188}, + /* 2169 */ {I_VCMPEQ_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5464, 188}, + /* 2170 */ {I_VCMPEQ_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5473, 188}, + /* 2171 */ {I_VCMPEQ_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5482, 188}, + /* 2172 */ {I_VCMPEQ_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5491, 188}, + /* 2173 */ {I_VCMPEQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5500, 188}, + /* 2174 */ {I_VCMPEQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5509, 188}, + /* 2175 */ {I_VCMPEQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5518, 188}, + /* 2176 */ {I_VCMPEQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5527, 188}, + /* 2177 */ {I_VCMPLT_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5536, 188}, + /* 2178 */ {I_VCMPLT_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5545, 188}, + /* 2179 */ {I_VCMPLT_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5554, 188}, + /* 2180 */ {I_VCMPLT_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5563, 188}, + /* 2181 */ {I_VCMPLTPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5536, 188}, + /* 2182 */ {I_VCMPLTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5545, 188}, + /* 2183 */ {I_VCMPLTPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5554, 188}, + /* 2184 */ {I_VCMPLTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5563, 188}, + /* 2185 */ {I_VCMPLE_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5572, 188}, + /* 2186 */ {I_VCMPLE_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5581, 188}, + /* 2187 */ {I_VCMPLE_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5590, 188}, + /* 2188 */ {I_VCMPLE_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5599, 188}, + /* 2189 */ {I_VCMPLEPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5572, 188}, + /* 2190 */ {I_VCMPLEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5581, 188}, + /* 2191 */ {I_VCMPLEPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5590, 188}, + /* 2192 */ {I_VCMPLEPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5599, 188}, + /* 2193 */ {I_VCMPUNORD_QPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5608, 188}, + /* 2194 */ {I_VCMPUNORD_QPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5617, 188}, + /* 2195 */ {I_VCMPUNORD_QPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5626, 188}, + /* 2196 */ {I_VCMPUNORD_QPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5635, 188}, + /* 2197 */ {I_VCMPUNORDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5608, 188}, + /* 2198 */ {I_VCMPUNORDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5617, 188}, + /* 2199 */ {I_VCMPUNORDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5626, 188}, + /* 2200 */ {I_VCMPUNORDPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5635, 188}, + /* 2201 */ {I_VCMPNEQ_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5644, 188}, + /* 2202 */ {I_VCMPNEQ_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5653, 188}, + /* 2203 */ {I_VCMPNEQ_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5662, 188}, + /* 2204 */ {I_VCMPNEQ_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5671, 188}, + /* 2205 */ {I_VCMPNEQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5644, 188}, + /* 2206 */ {I_VCMPNEQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5653, 188}, + /* 2207 */ {I_VCMPNEQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5662, 188}, + /* 2208 */ {I_VCMPNEQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5671, 188}, + /* 2209 */ {I_VCMPNLT_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5680, 188}, + /* 2210 */ {I_VCMPNLT_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5689, 188}, + /* 2211 */ {I_VCMPNLT_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5698, 188}, + /* 2212 */ {I_VCMPNLT_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5707, 188}, + /* 2213 */ {I_VCMPNLTPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5680, 188}, + /* 2214 */ {I_VCMPNLTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5689, 188}, + /* 2215 */ {I_VCMPNLTPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5698, 188}, + /* 2216 */ {I_VCMPNLTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5707, 188}, + /* 2217 */ {I_VCMPNLE_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5716, 188}, + /* 2218 */ {I_VCMPNLE_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5725, 188}, + /* 2219 */ {I_VCMPNLE_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5734, 188}, + /* 2220 */ {I_VCMPNLE_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5743, 188}, + /* 2221 */ {I_VCMPNLEPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5716, 188}, + /* 2222 */ {I_VCMPNLEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5725, 188}, + /* 2223 */ {I_VCMPNLEPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5734, 188}, + /* 2224 */ {I_VCMPNLEPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5743, 188}, + /* 2225 */ {I_VCMPORD_QPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5752, 188}, + /* 2226 */ {I_VCMPORD_QPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5761, 188}, + /* 2227 */ {I_VCMPORD_QPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5770, 188}, + /* 2228 */ {I_VCMPORD_QPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5779, 188}, + /* 2229 */ {I_VCMPORDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5752, 188}, + /* 2230 */ {I_VCMPORDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5761, 188}, + /* 2231 */ {I_VCMPORDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5770, 188}, + /* 2232 */ {I_VCMPORDPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5779, 188}, + /* 2233 */ {I_VCMPEQ_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5788, 188}, + /* 2234 */ {I_VCMPEQ_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5797, 188}, + /* 2235 */ {I_VCMPEQ_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5806, 188}, + /* 2236 */ {I_VCMPEQ_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5815, 188}, + /* 2237 */ {I_VCMPNGE_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5824, 188}, + /* 2238 */ {I_VCMPNGE_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5833, 188}, + /* 2239 */ {I_VCMPNGE_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5842, 188}, + /* 2240 */ {I_VCMPNGE_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5851, 188}, + /* 2241 */ {I_VCMPNGEPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5824, 188}, + /* 2242 */ {I_VCMPNGEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5833, 188}, + /* 2243 */ {I_VCMPNGEPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5842, 188}, + /* 2244 */ {I_VCMPNGEPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5851, 188}, + /* 2245 */ {I_VCMPNGT_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5860, 188}, + /* 2246 */ {I_VCMPNGT_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5869, 188}, + /* 2247 */ {I_VCMPNGT_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5878, 188}, + /* 2248 */ {I_VCMPNGT_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5887, 188}, + /* 2249 */ {I_VCMPNGTPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5860, 188}, + /* 2250 */ {I_VCMPNGTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5869, 188}, + /* 2251 */ {I_VCMPNGTPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5878, 188}, + /* 2252 */ {I_VCMPNGTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5887, 188}, + /* 2253 */ {I_VCMPFALSE_OQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5896, 188}, + /* 2254 */ {I_VCMPFALSE_OQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5905, 188}, + /* 2255 */ {I_VCMPFALSE_OQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5914, 188}, + /* 2256 */ {I_VCMPFALSE_OQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5923, 188}, + /* 2257 */ {I_VCMPFALSEPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5896, 188}, + /* 2258 */ {I_VCMPFALSEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5905, 188}, + /* 2259 */ {I_VCMPFALSEPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5914, 188}, + /* 2260 */ {I_VCMPFALSEPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5923, 188}, + /* 2261 */ {I_VCMPNEQ_OQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5932, 188}, + /* 2262 */ {I_VCMPNEQ_OQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5941, 188}, + /* 2263 */ {I_VCMPNEQ_OQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5950, 188}, + /* 2264 */ {I_VCMPNEQ_OQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5959, 188}, + /* 2265 */ {I_VCMPGE_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5968, 188}, + /* 2266 */ {I_VCMPGE_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5977, 188}, + /* 2267 */ {I_VCMPGE_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5986, 188}, + /* 2268 */ {I_VCMPGE_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5995, 188}, + /* 2269 */ {I_VCMPGEPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5968, 188}, + /* 2270 */ {I_VCMPGEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5977, 188}, + /* 2271 */ {I_VCMPGEPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5986, 188}, + /* 2272 */ {I_VCMPGEPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5995, 188}, + /* 2273 */ {I_VCMPGT_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6004, 188}, + /* 2274 */ {I_VCMPGT_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6013, 188}, + /* 2275 */ {I_VCMPGT_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6022, 188}, + /* 2276 */ {I_VCMPGT_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6031, 188}, + /* 2277 */ {I_VCMPGTPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6004, 188}, + /* 2278 */ {I_VCMPGTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6013, 188}, + /* 2279 */ {I_VCMPGTPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6022, 188}, + /* 2280 */ {I_VCMPGTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6031, 188}, + /* 2281 */ {I_VCMPTRUE_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6040, 188}, + /* 2282 */ {I_VCMPTRUE_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6049, 188}, + /* 2283 */ {I_VCMPTRUE_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6058, 188}, + /* 2284 */ {I_VCMPTRUE_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6067, 188}, + /* 2285 */ {I_VCMPTRUEPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6040, 188}, + /* 2286 */ {I_VCMPTRUEPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6049, 188}, + /* 2287 */ {I_VCMPTRUEPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6058, 188}, + /* 2288 */ {I_VCMPTRUEPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6067, 188}, + /* 2289 */ {I_VCMPEQ_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+5464, 188}, + /* 2290 */ {I_VCMPEQ_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+5473, 188}, + /* 2291 */ {I_VCMPEQ_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+5482, 188}, + /* 2292 */ {I_VCMPEQ_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+5491, 188}, + /* 2293 */ {I_VCMPLT_OQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6076, 188}, + /* 2294 */ {I_VCMPLT_OQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6085, 188}, + /* 2295 */ {I_VCMPLT_OQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6094, 188}, + /* 2296 */ {I_VCMPLT_OQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6103, 188}, + /* 2297 */ {I_VCMPLE_OQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6112, 188}, + /* 2298 */ {I_VCMPLE_OQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6121, 188}, + /* 2299 */ {I_VCMPLE_OQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6130, 188}, + /* 2300 */ {I_VCMPLE_OQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6139, 188}, + /* 2301 */ {I_VCMPUNORD_SPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6148, 188}, + /* 2302 */ {I_VCMPUNORD_SPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6157, 188}, + /* 2303 */ {I_VCMPUNORD_SPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6166, 188}, + /* 2304 */ {I_VCMPUNORD_SPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6175, 188}, + /* 2305 */ {I_VCMPNEQ_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6184, 188}, + /* 2306 */ {I_VCMPNEQ_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6193, 188}, + /* 2307 */ {I_VCMPNEQ_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6202, 188}, + /* 2308 */ {I_VCMPNEQ_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6211, 188}, + /* 2309 */ {I_VCMPNLT_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6220, 188}, + /* 2310 */ {I_VCMPNLT_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6229, 188}, + /* 2311 */ {I_VCMPNLT_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6238, 188}, + /* 2312 */ {I_VCMPNLT_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6247, 188}, + /* 2313 */ {I_VCMPNLE_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6256, 188}, + /* 2314 */ {I_VCMPNLE_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6265, 188}, + /* 2315 */ {I_VCMPNLE_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6274, 188}, + /* 2316 */ {I_VCMPNLE_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6283, 188}, + /* 2317 */ {I_VCMPORD_SPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6292, 188}, + /* 2318 */ {I_VCMPORD_SPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6301, 188}, + /* 2319 */ {I_VCMPORD_SPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6310, 188}, + /* 2320 */ {I_VCMPORD_SPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6319, 188}, + /* 2321 */ {I_VCMPEQ_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6328, 188}, + /* 2322 */ {I_VCMPEQ_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6337, 188}, + /* 2323 */ {I_VCMPEQ_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6346, 188}, + /* 2324 */ {I_VCMPEQ_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6355, 188}, + /* 2325 */ {I_VCMPNGE_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6364, 188}, + /* 2326 */ {I_VCMPNGE_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6373, 188}, + /* 2327 */ {I_VCMPNGE_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6382, 188}, + /* 2328 */ {I_VCMPNGE_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6391, 188}, + /* 2329 */ {I_VCMPNGT_UQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6400, 188}, + /* 2330 */ {I_VCMPNGT_UQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6409, 188}, + /* 2331 */ {I_VCMPNGT_UQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6418, 188}, + /* 2332 */ {I_VCMPNGT_UQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6427, 188}, + /* 2333 */ {I_VCMPFALSE_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6436, 188}, + /* 2334 */ {I_VCMPFALSE_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6445, 188}, + /* 2335 */ {I_VCMPFALSE_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6454, 188}, + /* 2336 */ {I_VCMPFALSE_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6463, 188}, + /* 2337 */ {I_VCMPNEQ_OSPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6472, 188}, + /* 2338 */ {I_VCMPNEQ_OSPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6481, 188}, + /* 2339 */ {I_VCMPNEQ_OSPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6490, 188}, + /* 2340 */ {I_VCMPNEQ_OSPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6499, 188}, + /* 2341 */ {I_VCMPGE_OQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6508, 188}, + /* 2342 */ {I_VCMPGE_OQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6517, 188}, + /* 2343 */ {I_VCMPGE_OQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6526, 188}, + /* 2344 */ {I_VCMPGE_OQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6535, 188}, + /* 2345 */ {I_VCMPGT_OQPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6544, 188}, + /* 2346 */ {I_VCMPGT_OQPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6553, 188}, + /* 2347 */ {I_VCMPGT_OQPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6562, 188}, + /* 2348 */ {I_VCMPGT_OQPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6571, 188}, + /* 2349 */ {I_VCMPTRUE_USPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+6580, 188}, + /* 2350 */ {I_VCMPTRUE_USPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+6589, 188}, + /* 2351 */ {I_VCMPTRUE_USPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+6598, 188}, + /* 2352 */ {I_VCMPTRUE_USPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+6607, 188}, + /* 2353 */ {I_VCMPPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13464, 188}, + /* 2354 */ {I_VCMPPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13472, 188}, + /* 2355 */ {I_VCMPPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13480, 188}, + /* 2356 */ {I_VCMPPS, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13488, 188}, + /* 2357 */ {I_VCMPEQ_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6616, 188}, + /* 2358 */ {I_VCMPEQ_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6625, 188}, + /* 2359 */ {I_VCMPEQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6634, 188}, + /* 2360 */ {I_VCMPEQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6643, 188}, + /* 2361 */ {I_VCMPLT_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6652, 188}, + /* 2362 */ {I_VCMPLT_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6661, 188}, + /* 2363 */ {I_VCMPLTSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6652, 188}, + /* 2364 */ {I_VCMPLTSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6661, 188}, + /* 2365 */ {I_VCMPLE_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6670, 188}, + /* 2366 */ {I_VCMPLE_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6679, 188}, + /* 2367 */ {I_VCMPLESD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6670, 188}, + /* 2368 */ {I_VCMPLESD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6679, 188}, + /* 2369 */ {I_VCMPUNORD_QSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6688, 188}, + /* 2370 */ {I_VCMPUNORD_QSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6697, 188}, + /* 2371 */ {I_VCMPUNORDSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6688, 188}, + /* 2372 */ {I_VCMPUNORDSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6697, 188}, + /* 2373 */ {I_VCMPNEQ_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6706, 188}, + /* 2374 */ {I_VCMPNEQ_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6715, 188}, + /* 2375 */ {I_VCMPNEQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6706, 188}, + /* 2376 */ {I_VCMPNEQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6715, 188}, + /* 2377 */ {I_VCMPNLT_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6724, 188}, + /* 2378 */ {I_VCMPNLT_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6733, 188}, + /* 2379 */ {I_VCMPNLTSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6724, 188}, + /* 2380 */ {I_VCMPNLTSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6733, 188}, + /* 2381 */ {I_VCMPNLE_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6742, 188}, + /* 2382 */ {I_VCMPNLE_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6751, 188}, + /* 2383 */ {I_VCMPNLESD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6742, 188}, + /* 2384 */ {I_VCMPNLESD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6751, 188}, + /* 2385 */ {I_VCMPORD_QSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6760, 188}, + /* 2386 */ {I_VCMPORD_QSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6769, 188}, + /* 2387 */ {I_VCMPORDSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6760, 188}, + /* 2388 */ {I_VCMPORDSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6769, 188}, + /* 2389 */ {I_VCMPEQ_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6778, 188}, + /* 2390 */ {I_VCMPEQ_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6787, 188}, + /* 2391 */ {I_VCMPNGE_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6796, 188}, + /* 2392 */ {I_VCMPNGE_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6805, 188}, + /* 2393 */ {I_VCMPNGESD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6796, 188}, + /* 2394 */ {I_VCMPNGESD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6805, 188}, + /* 2395 */ {I_VCMPNGT_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6814, 188}, + /* 2396 */ {I_VCMPNGT_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6823, 188}, + /* 2397 */ {I_VCMPNGTSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6814, 188}, + /* 2398 */ {I_VCMPNGTSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6823, 188}, + /* 2399 */ {I_VCMPFALSE_OQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6832, 188}, + /* 2400 */ {I_VCMPFALSE_OQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6841, 188}, + /* 2401 */ {I_VCMPFALSESD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6832, 188}, + /* 2402 */ {I_VCMPFALSESD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6841, 188}, + /* 2403 */ {I_VCMPNEQ_OQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6850, 188}, + /* 2404 */ {I_VCMPNEQ_OQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6859, 188}, + /* 2405 */ {I_VCMPGE_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6868, 188}, + /* 2406 */ {I_VCMPGE_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6877, 188}, + /* 2407 */ {I_VCMPGESD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6868, 188}, + /* 2408 */ {I_VCMPGESD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6877, 188}, + /* 2409 */ {I_VCMPGT_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6886, 188}, + /* 2410 */ {I_VCMPGT_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6895, 188}, + /* 2411 */ {I_VCMPGTSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6886, 188}, + /* 2412 */ {I_VCMPGTSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6895, 188}, + /* 2413 */ {I_VCMPTRUE_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6904, 188}, + /* 2414 */ {I_VCMPTRUE_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6913, 188}, + /* 2415 */ {I_VCMPTRUESD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6904, 188}, + /* 2416 */ {I_VCMPTRUESD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6913, 188}, + /* 2417 */ {I_VCMPEQ_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6616, 188}, + /* 2418 */ {I_VCMPEQ_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6625, 188}, + /* 2419 */ {I_VCMPLT_OQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6922, 188}, + /* 2420 */ {I_VCMPLT_OQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6931, 188}, + /* 2421 */ {I_VCMPLE_OQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6940, 188}, + /* 2422 */ {I_VCMPLE_OQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6949, 188}, + /* 2423 */ {I_VCMPUNORD_SSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6958, 188}, + /* 2424 */ {I_VCMPUNORD_SSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6967, 188}, + /* 2425 */ {I_VCMPNEQ_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6976, 188}, + /* 2426 */ {I_VCMPNEQ_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+6985, 188}, + /* 2427 */ {I_VCMPNLT_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+6994, 188}, + /* 2428 */ {I_VCMPNLT_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7003, 188}, + /* 2429 */ {I_VCMPNLE_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7012, 188}, + /* 2430 */ {I_VCMPNLE_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7021, 188}, + /* 2431 */ {I_VCMPORD_SSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7030, 188}, + /* 2432 */ {I_VCMPORD_SSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7039, 188}, + /* 2433 */ {I_VCMPEQ_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7048, 188}, + /* 2434 */ {I_VCMPEQ_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7057, 188}, + /* 2435 */ {I_VCMPNGE_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7066, 188}, + /* 2436 */ {I_VCMPNGE_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7075, 188}, + /* 2437 */ {I_VCMPNGT_UQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7084, 188}, + /* 2438 */ {I_VCMPNGT_UQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7093, 188}, + /* 2439 */ {I_VCMPFALSE_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7102, 188}, + /* 2440 */ {I_VCMPFALSE_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7111, 188}, + /* 2441 */ {I_VCMPNEQ_OSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7120, 188}, + /* 2442 */ {I_VCMPNEQ_OSSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7129, 188}, + /* 2443 */ {I_VCMPGE_OQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7138, 188}, + /* 2444 */ {I_VCMPGE_OQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7147, 188}, + /* 2445 */ {I_VCMPGT_OQSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7156, 188}, + /* 2446 */ {I_VCMPGT_OQSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7165, 188}, + /* 2447 */ {I_VCMPTRUE_USSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7174, 188}, + /* 2448 */ {I_VCMPTRUE_USSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7183, 188}, + /* 2449 */ {I_VCMPSD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13496, 188}, + /* 2450 */ {I_VCMPSD, 3, {XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13504, 188}, + /* 2451 */ {I_VCMPEQ_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7192, 188}, + /* 2452 */ {I_VCMPEQ_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7201, 188}, + /* 2453 */ {I_VCMPEQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7210, 188}, + /* 2454 */ {I_VCMPEQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7219, 188}, + /* 2455 */ {I_VCMPLT_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7228, 188}, + /* 2456 */ {I_VCMPLT_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7237, 188}, + /* 2457 */ {I_VCMPLTSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7228, 188}, + /* 2458 */ {I_VCMPLTSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7237, 188}, + /* 2459 */ {I_VCMPLE_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7246, 188}, + /* 2460 */ {I_VCMPLE_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7255, 188}, + /* 2461 */ {I_VCMPLESS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7246, 188}, + /* 2462 */ {I_VCMPLESS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7255, 188}, + /* 2463 */ {I_VCMPUNORD_QSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7264, 188}, + /* 2464 */ {I_VCMPUNORD_QSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7273, 188}, + /* 2465 */ {I_VCMPUNORDSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7264, 188}, + /* 2466 */ {I_VCMPUNORDSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7273, 188}, + /* 2467 */ {I_VCMPNEQ_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7282, 188}, + /* 2468 */ {I_VCMPNEQ_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7291, 188}, + /* 2469 */ {I_VCMPNEQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7282, 188}, + /* 2470 */ {I_VCMPNEQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7291, 188}, + /* 2471 */ {I_VCMPNLT_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7300, 188}, + /* 2472 */ {I_VCMPNLT_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7309, 188}, + /* 2473 */ {I_VCMPNLTSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7300, 188}, + /* 2474 */ {I_VCMPNLTSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7309, 188}, + /* 2475 */ {I_VCMPNLE_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7318, 188}, + /* 2476 */ {I_VCMPNLE_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7327, 188}, + /* 2477 */ {I_VCMPNLESS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7318, 188}, + /* 2478 */ {I_VCMPNLESS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7327, 188}, + /* 2479 */ {I_VCMPORD_QSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7336, 188}, + /* 2480 */ {I_VCMPORD_QSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7345, 188}, + /* 2481 */ {I_VCMPORDSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7336, 188}, + /* 2482 */ {I_VCMPORDSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7345, 188}, + /* 2483 */ {I_VCMPEQ_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7354, 188}, + /* 2484 */ {I_VCMPEQ_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7363, 188}, + /* 2485 */ {I_VCMPNGE_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7372, 188}, + /* 2486 */ {I_VCMPNGE_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7381, 188}, + /* 2487 */ {I_VCMPNGESS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7372, 188}, + /* 2488 */ {I_VCMPNGESS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7381, 188}, + /* 2489 */ {I_VCMPNGT_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7390, 188}, + /* 2490 */ {I_VCMPNGT_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7399, 188}, + /* 2491 */ {I_VCMPNGTSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7390, 188}, + /* 2492 */ {I_VCMPNGTSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7399, 188}, + /* 2493 */ {I_VCMPFALSE_OQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7408, 188}, + /* 2494 */ {I_VCMPFALSE_OQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7417, 188}, + /* 2495 */ {I_VCMPFALSESS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7408, 188}, + /* 2496 */ {I_VCMPFALSESS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7417, 188}, + /* 2497 */ {I_VCMPNEQ_OQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7426, 188}, + /* 2498 */ {I_VCMPNEQ_OQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7435, 188}, + /* 2499 */ {I_VCMPGE_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7444, 188}, + /* 2500 */ {I_VCMPGE_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7453, 188}, + /* 2501 */ {I_VCMPGESS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7444, 188}, + /* 2502 */ {I_VCMPGESS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7453, 188}, + /* 2503 */ {I_VCMPGT_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7462, 188}, + /* 2504 */ {I_VCMPGT_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7471, 188}, + /* 2505 */ {I_VCMPGTSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7462, 188}, + /* 2506 */ {I_VCMPGTSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7471, 188}, + /* 2507 */ {I_VCMPTRUE_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7480, 188}, + /* 2508 */ {I_VCMPTRUE_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7489, 188}, + /* 2509 */ {I_VCMPTRUESS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7480, 188}, + /* 2510 */ {I_VCMPTRUESS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7489, 188}, + /* 2511 */ {I_VCMPEQ_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7192, 188}, + /* 2512 */ {I_VCMPEQ_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7201, 188}, + /* 2513 */ {I_VCMPLT_OQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7498, 188}, + /* 2514 */ {I_VCMPLT_OQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7507, 188}, + /* 2515 */ {I_VCMPLE_OQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7516, 188}, + /* 2516 */ {I_VCMPLE_OQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7525, 188}, + /* 2517 */ {I_VCMPUNORD_SSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7534, 188}, + /* 2518 */ {I_VCMPUNORD_SSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7543, 188}, + /* 2519 */ {I_VCMPNEQ_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7552, 188}, + /* 2520 */ {I_VCMPNEQ_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7561, 188}, + /* 2521 */ {I_VCMPNLT_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7570, 188}, + /* 2522 */ {I_VCMPNLT_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7579, 188}, + /* 2523 */ {I_VCMPNLE_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7588, 188}, + /* 2524 */ {I_VCMPNLE_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7597, 188}, + /* 2525 */ {I_VCMPORD_SSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7606, 188}, + /* 2526 */ {I_VCMPORD_SSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7615, 188}, + /* 2527 */ {I_VCMPEQ_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7624, 188}, + /* 2528 */ {I_VCMPEQ_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7633, 188}, + /* 2529 */ {I_VCMPNGE_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7642, 188}, + /* 2530 */ {I_VCMPNGE_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7651, 188}, + /* 2531 */ {I_VCMPNGT_UQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7660, 188}, + /* 2532 */ {I_VCMPNGT_UQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7669, 188}, + /* 2533 */ {I_VCMPFALSE_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7678, 188}, + /* 2534 */ {I_VCMPFALSE_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7687, 188}, + /* 2535 */ {I_VCMPNEQ_OSSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7696, 188}, + /* 2536 */ {I_VCMPNEQ_OSSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7705, 188}, + /* 2537 */ {I_VCMPGE_OQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7714, 188}, + /* 2538 */ {I_VCMPGE_OQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7723, 188}, + /* 2539 */ {I_VCMPGT_OQSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7732, 188}, + /* 2540 */ {I_VCMPGT_OQSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7741, 188}, + /* 2541 */ {I_VCMPTRUE_USSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+7750, 188}, + /* 2542 */ {I_VCMPTRUE_USSS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+7759, 188}, + /* 2543 */ {I_VCMPSS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13512, 188}, + /* 2544 */ {I_VCMPSS, 3, {XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13520, 188}, + /* 2545 */ {I_VCOMISD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35272, 188}, + /* 2546 */ {I_VCOMISS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35279, 188}, + /* 2547 */ {I_VCVTDQ2PD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35286, 188}, + /* 2548 */ {I_VCVTDQ2PD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35293, 188}, + /* 2549 */ {I_VCVTDQ2PS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35300, 188}, + /* 2550 */ {I_VCVTDQ2PS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35307, 188}, + /* 2551 */ {I_VCVTPD2DQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35314, 188}, + /* 2552 */ {I_VCVTPD2DQ, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35314, 192}, + /* 2553 */ {I_VCVTPD2DQ, 2, {XMM_L16,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35321, 188}, + /* 2554 */ {I_VCVTPD2DQ, 2, {XMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35321, 193}, + /* 2555 */ {I_VCVTPD2PS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35328, 188}, + /* 2556 */ {I_VCVTPD2PS, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35328, 192}, + /* 2557 */ {I_VCVTPD2PS, 2, {XMM_L16,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35335, 188}, + /* 2558 */ {I_VCVTPD2PS, 2, {XMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35335, 193}, + /* 2559 */ {I_VCVTPS2DQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35342, 188}, + /* 2560 */ {I_VCVTPS2DQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35349, 188}, + /* 2561 */ {I_VCVTPS2PD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35356, 188}, + /* 2562 */ {I_VCVTPS2PD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35363, 188}, + /* 2563 */ {I_VCVTSD2SI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35370, 188}, + /* 2564 */ {I_VCVTSD2SI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35377, 194}, + /* 2565 */ {I_VCVTSD2SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35384, 188}, + /* 2566 */ {I_VCVTSD2SS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35391, 188}, + /* 2567 */ {I_VCVTSI2SD, 3, {XMM_L16,XMM_L16,RM_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35398, 195}, + /* 2568 */ {I_VCVTSI2SD, 2, {XMM_L16,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35405, 195}, + /* 2569 */ {I_VCVTSI2SD, 3, {XMM_L16,XMM_L16,RM_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35412, 196}, + /* 2570 */ {I_VCVTSI2SD, 2, {XMM_L16,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35419, 196}, + /* 2571 */ {I_VCVTSI2SS, 3, {XMM_L16,XMM_L16,RM_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35426, 195}, + /* 2572 */ {I_VCVTSI2SS, 2, {XMM_L16,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35433, 195}, + /* 2573 */ {I_VCVTSI2SS, 3, {XMM_L16,XMM_L16,RM_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35440, 196}, + /* 2574 */ {I_VCVTSI2SS, 2, {XMM_L16,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35447, 196}, + /* 2575 */ {I_VCVTSS2SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35454, 188}, + /* 2576 */ {I_VCVTSS2SD, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35461, 188}, + /* 2577 */ {I_VCVTSS2SI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35468, 188}, + /* 2578 */ {I_VCVTSS2SI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35475, 194}, + /* 2579 */ {I_VCVTTPD2DQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35482, 188}, + /* 2580 */ {I_VCVTTPD2DQ, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35482, 192}, + /* 2581 */ {I_VCVTTPD2DQ, 2, {XMM_L16,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35489, 188}, + /* 2582 */ {I_VCVTTPD2DQ, 2, {XMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35489, 193}, + /* 2583 */ {I_VCVTTPS2DQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35496, 188}, + /* 2584 */ {I_VCVTTPS2DQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35503, 188}, + /* 2585 */ {I_VCVTTSD2SI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35510, 188}, + /* 2586 */ {I_VCVTTSD2SI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35517, 194}, + /* 2587 */ {I_VCVTTSS2SI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35524, 188}, + /* 2588 */ {I_VCVTTSS2SI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35531, 194}, + /* 2589 */ {I_VDIVPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35538, 188}, + /* 2590 */ {I_VDIVPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35545, 188}, + /* 2591 */ {I_VDIVPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35552, 188}, + /* 2592 */ {I_VDIVPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35559, 188}, + /* 2593 */ {I_VDIVPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35566, 188}, + /* 2594 */ {I_VDIVPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35573, 188}, + /* 2595 */ {I_VDIVPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35580, 188}, + /* 2596 */ {I_VDIVPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35587, 188}, + /* 2597 */ {I_VDIVSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35594, 188}, + /* 2598 */ {I_VDIVSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35601, 188}, + /* 2599 */ {I_VDIVSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35608, 188}, + /* 2600 */ {I_VDIVSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35615, 188}, + /* 2601 */ {I_VDPPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13528, 188}, + /* 2602 */ {I_VDPPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13536, 188}, + /* 2603 */ {I_VDPPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13544, 188}, + /* 2604 */ {I_VDPPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13552, 188}, + /* 2605 */ {I_VDPPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13560, 188}, + /* 2606 */ {I_VDPPS, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13568, 188}, + /* 2607 */ {I_VEXTRACTF128, 3, {RM_XMM_L16|BITS128,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13576, 188}, + /* 2608 */ {I_VEXTRACTPS, 3, {RM_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13584, 188}, + /* 2609 */ {I_VHADDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35622, 188}, + /* 2610 */ {I_VHADDPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35629, 188}, + /* 2611 */ {I_VHADDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35636, 188}, + /* 2612 */ {I_VHADDPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35643, 188}, + /* 2613 */ {I_VHADDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35650, 188}, + /* 2614 */ {I_VHADDPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35657, 188}, + /* 2615 */ {I_VHADDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35664, 188}, + /* 2616 */ {I_VHADDPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35671, 188}, + /* 2617 */ {I_VHSUBPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35678, 188}, + /* 2618 */ {I_VHSUBPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35685, 188}, + /* 2619 */ {I_VHSUBPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35692, 188}, + /* 2620 */ {I_VHSUBPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35699, 188}, + /* 2621 */ {I_VHSUBPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35706, 188}, + /* 2622 */ {I_VHSUBPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35713, 188}, + /* 2623 */ {I_VHSUBPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35720, 188}, + /* 2624 */ {I_VHSUBPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35727, 188}, + /* 2625 */ {I_VINSERTF128, 4, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13592, 188}, + /* 2626 */ {I_VINSERTF128, 3, {YMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13600, 188}, + /* 2627 */ {I_VINSERTPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13608, 188}, + /* 2628 */ {I_VINSERTPS, 3, {XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13616, 188}, + /* 2629 */ {I_VLDDQU, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35734, 188}, + /* 2630 */ {I_VLDQQU, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35741, 188}, + /* 2631 */ {I_VLDDQU, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35741, 188}, + /* 2632 */ {I_VLDMXCSR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+35748, 188}, + /* 2633 */ {I_VMASKMOVDQU, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35755, 188}, + /* 2634 */ {I_VMASKMOVPS, 3, {XMM_L16,XMM_L16,MEMORY|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35762, 188}, + /* 2635 */ {I_VMASKMOVPS, 3, {YMM_L16,YMM_L16,MEMORY|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35769, 188}, + /* 2636 */ {I_VMASKMOVPS, 3, {MEMORY|BITS128,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+35776, 192}, + /* 2637 */ {I_VMASKMOVPS, 3, {MEMORY|BITS256,YMM_L16,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+35783, 193}, + /* 2638 */ {I_VMASKMOVPD, 3, {XMM_L16,XMM_L16,MEMORY|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35790, 188}, + /* 2639 */ {I_VMASKMOVPD, 3, {YMM_L16,YMM_L16,MEMORY|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35797, 188}, + /* 2640 */ {I_VMASKMOVPD, 3, {MEMORY|BITS128,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+35804, 188}, + /* 2641 */ {I_VMASKMOVPD, 3, {MEMORY|BITS256,YMM_L16,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+35811, 188}, + /* 2642 */ {I_VMAXPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35818, 188}, + /* 2643 */ {I_VMAXPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35825, 188}, + /* 2644 */ {I_VMAXPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35832, 188}, + /* 2645 */ {I_VMAXPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35839, 188}, + /* 2646 */ {I_VMAXPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35846, 188}, + /* 2647 */ {I_VMAXPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35853, 188}, + /* 2648 */ {I_VMAXPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35860, 188}, + /* 2649 */ {I_VMAXPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35867, 188}, + /* 2650 */ {I_VMAXSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35874, 188}, + /* 2651 */ {I_VMAXSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35881, 188}, + /* 2652 */ {I_VMAXSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35888, 188}, + /* 2653 */ {I_VMAXSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35895, 188}, + /* 2654 */ {I_VMINPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35902, 188}, + /* 2655 */ {I_VMINPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35909, 188}, + /* 2656 */ {I_VMINPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35916, 188}, + /* 2657 */ {I_VMINPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35923, 188}, + /* 2658 */ {I_VMINPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+35930, 188}, + /* 2659 */ {I_VMINPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35937, 188}, + /* 2660 */ {I_VMINPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+35944, 188}, + /* 2661 */ {I_VMINPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+35951, 188}, + /* 2662 */ {I_VMINSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+35958, 188}, + /* 2663 */ {I_VMINSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+35965, 188}, + /* 2664 */ {I_VMINSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+35972, 188}, + /* 2665 */ {I_VMINSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+35979, 188}, + /* 2666 */ {I_VMOVAPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+35986, 188}, + /* 2667 */ {I_VMOVAPD, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35993, 188}, + /* 2668 */ {I_VMOVAPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36000, 188}, + /* 2669 */ {I_VMOVAPD, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36007, 188}, + /* 2670 */ {I_VMOVAPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36014, 188}, + /* 2671 */ {I_VMOVAPS, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36021, 188}, + /* 2672 */ {I_VMOVAPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36028, 188}, + /* 2673 */ {I_VMOVAPS, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36035, 188}, + /* 2674 */ {I_VMOVD, 2, {XMM_L16,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+36042, 188}, + /* 2675 */ {I_VMOVD, 2, {RM_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36049, 188}, + /* 2676 */ {I_VMOVQ, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36056, 197}, + /* 2677 */ {I_VMOVQ, 2, {RM_XMM_L16|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36063, 197}, + /* 2678 */ {I_VMOVQ, 2, {XMM_L16,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36070, 196}, + /* 2679 */ {I_VMOVQ, 2, {RM_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36077, 196}, + /* 2680 */ {I_VMOVDDUP, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36084, 188}, + /* 2681 */ {I_VMOVDDUP, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36091, 188}, + /* 2682 */ {I_VMOVDQA, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36098, 188}, + /* 2683 */ {I_VMOVDQA, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36105, 188}, + /* 2684 */ {I_VMOVQQA, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36112, 188}, + /* 2685 */ {I_VMOVQQA, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36119, 188}, + /* 2686 */ {I_VMOVDQA, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36112, 188}, + /* 2687 */ {I_VMOVDQA, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36119, 188}, + /* 2688 */ {I_VMOVDQU, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36126, 188}, + /* 2689 */ {I_VMOVDQU, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36133, 188}, + /* 2690 */ {I_VMOVQQU, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36140, 188}, + /* 2691 */ {I_VMOVQQU, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36147, 188}, + /* 2692 */ {I_VMOVDQU, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36140, 188}, + /* 2693 */ {I_VMOVDQU, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36147, 188}, + /* 2694 */ {I_VMOVHLPS, 3, {XMM_L16,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+36154, 188}, + /* 2695 */ {I_VMOVHLPS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36161, 188}, + /* 2696 */ {I_VMOVHPD, 3, {XMM_L16,XMM_L16,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+36168, 188}, + /* 2697 */ {I_VMOVHPD, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36175, 188}, + /* 2698 */ {I_VMOVHPD, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36182, 188}, + /* 2699 */ {I_VMOVHPS, 3, {XMM_L16,XMM_L16,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+36189, 188}, + /* 2700 */ {I_VMOVHPS, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36196, 188}, + /* 2701 */ {I_VMOVHPS, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36203, 188}, + /* 2702 */ {I_VMOVLHPS, 3, {XMM_L16,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+36189, 188}, + /* 2703 */ {I_VMOVLHPS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36196, 188}, + /* 2704 */ {I_VMOVLPD, 3, {XMM_L16,XMM_L16,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+36210, 188}, + /* 2705 */ {I_VMOVLPD, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36217, 188}, + /* 2706 */ {I_VMOVLPD, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36224, 188}, + /* 2707 */ {I_VMOVLPS, 3, {XMM_L16,XMM_L16,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+36154, 188}, + /* 2708 */ {I_VMOVLPS, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36161, 188}, + /* 2709 */ {I_VMOVLPS, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36231, 188}, + /* 2710 */ {I_VMOVMSKPD, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36238, 194}, + /* 2711 */ {I_VMOVMSKPD, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36238, 188}, + /* 2712 */ {I_VMOVMSKPD, 2, {REG_GPR|BITS64,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36245, 194}, + /* 2713 */ {I_VMOVMSKPD, 2, {REG_GPR|BITS32,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36245, 188}, + /* 2714 */ {I_VMOVMSKPS, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36252, 194}, + /* 2715 */ {I_VMOVMSKPS, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36252, 188}, + /* 2716 */ {I_VMOVMSKPS, 2, {REG_GPR|BITS64,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36259, 194}, + /* 2717 */ {I_VMOVMSKPS, 2, {REG_GPR|BITS32,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36259, 188}, + /* 2718 */ {I_VMOVNTDQ, 2, {MEMORY|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36266, 188}, + /* 2719 */ {I_VMOVNTQQ, 2, {MEMORY|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36273, 188}, + /* 2720 */ {I_VMOVNTDQ, 2, {MEMORY|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36273, 188}, + /* 2721 */ {I_VMOVNTDQA, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36280, 188}, + /* 2722 */ {I_VMOVNTPD, 2, {MEMORY|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36287, 188}, + /* 2723 */ {I_VMOVNTPD, 2, {MEMORY|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36294, 188}, + /* 2724 */ {I_VMOVNTPS, 2, {MEMORY|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36301, 188}, + /* 2725 */ {I_VMOVNTPS, 2, {MEMORY|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36308, 188}, + /* 2726 */ {I_VMOVSD, 3, {XMM_L16,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+36315, 188}, + /* 2727 */ {I_VMOVSD, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36322, 188}, + /* 2728 */ {I_VMOVSD, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36329, 188}, + /* 2729 */ {I_VMOVSD, 3, {XMM_L16,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+36336, 188}, + /* 2730 */ {I_VMOVSD, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36343, 188}, + /* 2731 */ {I_VMOVSD, 2, {MEMORY|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36350, 188}, + /* 2732 */ {I_VMOVSHDUP, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36357, 188}, + /* 2733 */ {I_VMOVSHDUP, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36364, 188}, + /* 2734 */ {I_VMOVSLDUP, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36371, 188}, + /* 2735 */ {I_VMOVSLDUP, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36378, 188}, + /* 2736 */ {I_VMOVSS, 3, {XMM_L16,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+36385, 188}, + /* 2737 */ {I_VMOVSS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36392, 188}, + /* 2738 */ {I_VMOVSS, 2, {XMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+36399, 188}, + /* 2739 */ {I_VMOVSS, 3, {XMM_L16,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+36406, 188}, + /* 2740 */ {I_VMOVSS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36413, 188}, + /* 2741 */ {I_VMOVSS, 2, {MEMORY|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36420, 188}, + /* 2742 */ {I_VMOVUPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36427, 188}, + /* 2743 */ {I_VMOVUPD, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36434, 188}, + /* 2744 */ {I_VMOVUPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36441, 188}, + /* 2745 */ {I_VMOVUPD, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36448, 188}, + /* 2746 */ {I_VMOVUPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36455, 188}, + /* 2747 */ {I_VMOVUPS, 2, {RM_XMM_L16|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36462, 188}, + /* 2748 */ {I_VMOVUPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36469, 188}, + /* 2749 */ {I_VMOVUPS, 2, {RM_YMM_L16|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+36476, 188}, + /* 2750 */ {I_VMPSADBW, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13624, 188}, + /* 2751 */ {I_VMPSADBW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13632, 188}, + /* 2752 */ {I_VMULPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36483, 188}, + /* 2753 */ {I_VMULPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36490, 188}, + /* 2754 */ {I_VMULPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+36497, 188}, + /* 2755 */ {I_VMULPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36504, 188}, + /* 2756 */ {I_VMULPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36511, 188}, + /* 2757 */ {I_VMULPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36518, 188}, + /* 2758 */ {I_VMULPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+36525, 188}, + /* 2759 */ {I_VMULPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36532, 188}, + /* 2760 */ {I_VMULSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+36539, 188}, + /* 2761 */ {I_VMULSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+36546, 188}, + /* 2762 */ {I_VMULSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+36553, 188}, + /* 2763 */ {I_VMULSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+36560, 188}, + /* 2764 */ {I_VORPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36567, 188}, + /* 2765 */ {I_VORPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36574, 188}, + /* 2766 */ {I_VORPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+36581, 188}, + /* 2767 */ {I_VORPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36588, 188}, + /* 2768 */ {I_VORPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36595, 188}, + /* 2769 */ {I_VORPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36602, 188}, + /* 2770 */ {I_VORPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+36609, 188}, + /* 2771 */ {I_VORPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+36616, 188}, + /* 2772 */ {I_VPABSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36623, 188}, + /* 2773 */ {I_VPABSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36630, 188}, + /* 2774 */ {I_VPABSD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36637, 188}, + /* 2775 */ {I_VPACKSSWB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36644, 188}, + /* 2776 */ {I_VPACKSSWB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36651, 188}, + /* 2777 */ {I_VPACKSSDW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36658, 188}, + /* 2778 */ {I_VPACKSSDW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36665, 188}, + /* 2779 */ {I_VPACKUSWB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36672, 188}, + /* 2780 */ {I_VPACKUSWB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36679, 188}, + /* 2781 */ {I_VPACKUSDW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36686, 188}, + /* 2782 */ {I_VPACKUSDW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36693, 188}, + /* 2783 */ {I_VPADDB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36700, 188}, + /* 2784 */ {I_VPADDB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36707, 188}, + /* 2785 */ {I_VPADDW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36714, 188}, + /* 2786 */ {I_VPADDW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36721, 188}, + /* 2787 */ {I_VPADDD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36728, 188}, + /* 2788 */ {I_VPADDD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36735, 188}, + /* 2789 */ {I_VPADDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36742, 188}, + /* 2790 */ {I_VPADDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36749, 188}, + /* 2791 */ {I_VPADDSB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36756, 188}, + /* 2792 */ {I_VPADDSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36763, 188}, + /* 2793 */ {I_VPADDSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36770, 188}, + /* 2794 */ {I_VPADDSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36777, 188}, + /* 2795 */ {I_VPADDUSB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36784, 188}, + /* 2796 */ {I_VPADDUSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36791, 188}, + /* 2797 */ {I_VPADDUSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36798, 188}, + /* 2798 */ {I_VPADDUSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36805, 188}, + /* 2799 */ {I_VPALIGNR, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13640, 188}, + /* 2800 */ {I_VPALIGNR, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13648, 188}, + /* 2801 */ {I_VPAND, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36812, 188}, + /* 2802 */ {I_VPAND, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36819, 188}, + /* 2803 */ {I_VPANDN, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36826, 188}, + /* 2804 */ {I_VPANDN, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36833, 188}, + /* 2805 */ {I_VPAVGB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36840, 188}, + /* 2806 */ {I_VPAVGB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36847, 188}, + /* 2807 */ {I_VPAVGW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36854, 188}, + /* 2808 */ {I_VPAVGW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36861, 188}, + /* 2809 */ {I_VPBLENDVB, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+13656, 188}, + /* 2810 */ {I_VPBLENDVB, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+13664, 188}, + /* 2811 */ {I_VPBLENDW, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13672, 188}, + /* 2812 */ {I_VPBLENDW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13680, 188}, + /* 2813 */ {I_VPCMPESTRI, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13688, 188}, + /* 2814 */ {I_VPCMPESTRM, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13696, 188}, + /* 2815 */ {I_VPCMPISTRI, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13704, 188}, + /* 2816 */ {I_VPCMPISTRM, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13712, 188}, + /* 2817 */ {I_VPCMPEQB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36868, 188}, + /* 2818 */ {I_VPCMPEQB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36875, 188}, + /* 2819 */ {I_VPCMPEQW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36882, 188}, + /* 2820 */ {I_VPCMPEQW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36889, 188}, + /* 2821 */ {I_VPCMPEQD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36896, 188}, + /* 2822 */ {I_VPCMPEQD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36903, 188}, + /* 2823 */ {I_VPCMPEQQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36910, 188}, + /* 2824 */ {I_VPCMPEQQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36917, 188}, + /* 2825 */ {I_VPCMPGTB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36924, 188}, + /* 2826 */ {I_VPCMPGTB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36931, 188}, + /* 2827 */ {I_VPCMPGTW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36938, 188}, + /* 2828 */ {I_VPCMPGTW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36945, 188}, + /* 2829 */ {I_VPCMPGTD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36952, 188}, + /* 2830 */ {I_VPCMPGTD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36959, 188}, + /* 2831 */ {I_VPCMPGTQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36966, 188}, + /* 2832 */ {I_VPCMPGTQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36973, 188}, + /* 2833 */ {I_VPERMILPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+36980, 188}, + /* 2834 */ {I_VPERMILPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+36987, 188}, + /* 2835 */ {I_VPERMILPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+36994, 188}, + /* 2836 */ {I_VPERMILPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+37001, 188}, + /* 2837 */ {I_VPERMILPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13720, 188}, + /* 2838 */ {I_VPERMILPD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13728, 188}, + /* 2839 */ {I_VPERMILPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37008, 188}, + /* 2840 */ {I_VPERMILPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37015, 188}, + /* 2841 */ {I_VPERMILPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+37022, 188}, + /* 2842 */ {I_VPERMILPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+37029, 188}, + /* 2843 */ {I_VPERMILPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13736, 188}, + /* 2844 */ {I_VPERMILPS, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13744, 188}, + /* 2845 */ {I_VPERM2F128, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13752, 188}, + /* 2846 */ {I_VPERM2F128, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13760, 188}, + /* 2847 */ {I_VPEXTRB, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13768, 194}, + /* 2848 */ {I_VPEXTRB, 3, {REG_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13768, 188}, + /* 2849 */ {I_VPEXTRB, 3, {MEMORY|BITS8,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13768, 188}, + /* 2850 */ {I_VPEXTRW, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13776, 194}, + /* 2851 */ {I_VPEXTRW, 3, {REG_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13776, 188}, + /* 2852 */ {I_VPEXTRW, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13784, 194}, + /* 2853 */ {I_VPEXTRW, 3, {REG_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13784, 188}, + /* 2854 */ {I_VPEXTRW, 3, {MEMORY|BITS16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13784, 188}, + /* 2855 */ {I_VPEXTRD, 3, {REG_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13792, 194}, + /* 2856 */ {I_VPEXTRD, 3, {RM_GPR|BITS32,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13792, 188}, + /* 2857 */ {I_VPEXTRQ, 3, {RM_GPR|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13800, 194}, + /* 2858 */ {I_VPHADDW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37036, 188}, + /* 2859 */ {I_VPHADDW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37043, 188}, + /* 2860 */ {I_VPHADDD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37050, 188}, + /* 2861 */ {I_VPHADDD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37057, 188}, + /* 2862 */ {I_VPHADDSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37064, 188}, + /* 2863 */ {I_VPHADDSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37071, 188}, + /* 2864 */ {I_VPHMINPOSUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37078, 188}, + /* 2865 */ {I_VPHSUBW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37085, 188}, + /* 2866 */ {I_VPHSUBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37092, 188}, + /* 2867 */ {I_VPHSUBD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37099, 188}, + /* 2868 */ {I_VPHSUBD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37106, 188}, + /* 2869 */ {I_VPHSUBSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37113, 188}, + /* 2870 */ {I_VPHSUBSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37120, 188}, + /* 2871 */ {I_VPINSRB, 4, {XMM_L16,XMM_L16,MEMORY|BITS8,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13808, 188}, + /* 2872 */ {I_VPINSRB, 3, {XMM_L16,MEMORY|BITS8,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13816, 188}, + /* 2873 */ {I_VPINSRB, 4, {XMM_L16,XMM_L16,RM_GPR|BITS8,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13808, 188}, + /* 2874 */ {I_VPINSRB, 3, {XMM_L16,RM_GPR|BITS8,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13816, 188}, + /* 2875 */ {I_VPINSRB, 4, {XMM_L16,XMM_L16,REG_GPR|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13808, 188}, + /* 2876 */ {I_VPINSRB, 3, {XMM_L16,REG_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13816, 188}, + /* 2877 */ {I_VPINSRW, 4, {XMM_L16,XMM_L16,MEMORY|BITS16,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13824, 188}, + /* 2878 */ {I_VPINSRW, 3, {XMM_L16,MEMORY|BITS16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13832, 188}, + /* 2879 */ {I_VPINSRW, 4, {XMM_L16,XMM_L16,RM_GPR|BITS16,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13824, 188}, + /* 2880 */ {I_VPINSRW, 3, {XMM_L16,RM_GPR|BITS16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13832, 188}, + /* 2881 */ {I_VPINSRW, 4, {XMM_L16,XMM_L16,REG_GPR|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13824, 188}, + /* 2882 */ {I_VPINSRW, 3, {XMM_L16,REG_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13832, 188}, + /* 2883 */ {I_VPINSRD, 4, {XMM_L16,XMM_L16,MEMORY|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13840, 188}, + /* 2884 */ {I_VPINSRD, 3, {XMM_L16,MEMORY|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13848, 188}, + /* 2885 */ {I_VPINSRD, 4, {XMM_L16,XMM_L16,RM_GPR|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13840, 188}, + /* 2886 */ {I_VPINSRD, 3, {XMM_L16,RM_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13848, 188}, + /* 2887 */ {I_VPINSRQ, 4, {XMM_L16,XMM_L16,MEMORY|BITS64,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13856, 194}, + /* 2888 */ {I_VPINSRQ, 3, {XMM_L16,MEMORY|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13864, 194}, + /* 2889 */ {I_VPINSRQ, 4, {XMM_L16,XMM_L16,RM_GPR|BITS64,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+13856, 194}, + /* 2890 */ {I_VPINSRQ, 3, {XMM_L16,RM_GPR|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13864, 194}, + /* 2891 */ {I_VPMADDWD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37127, 188}, + /* 2892 */ {I_VPMADDWD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37134, 188}, + /* 2893 */ {I_VPMADDUBSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37141, 188}, + /* 2894 */ {I_VPMADDUBSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37148, 188}, + /* 2895 */ {I_VPMAXSB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37155, 188}, + /* 2896 */ {I_VPMAXSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37162, 188}, + /* 2897 */ {I_VPMAXSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37169, 188}, + /* 2898 */ {I_VPMAXSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37176, 188}, + /* 2899 */ {I_VPMAXSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37183, 188}, + /* 2900 */ {I_VPMAXSD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37190, 188}, + /* 2901 */ {I_VPMAXUB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37197, 188}, + /* 2902 */ {I_VPMAXUB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37204, 188}, + /* 2903 */ {I_VPMAXUW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37211, 188}, + /* 2904 */ {I_VPMAXUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37218, 188}, + /* 2905 */ {I_VPMAXUD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37225, 188}, + /* 2906 */ {I_VPMAXUD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37232, 188}, + /* 2907 */ {I_VPMINSB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37239, 188}, + /* 2908 */ {I_VPMINSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37246, 188}, + /* 2909 */ {I_VPMINSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37253, 188}, + /* 2910 */ {I_VPMINSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37260, 188}, + /* 2911 */ {I_VPMINSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37267, 188}, + /* 2912 */ {I_VPMINSD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37274, 188}, + /* 2913 */ {I_VPMINUB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37281, 188}, + /* 2914 */ {I_VPMINUB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37288, 188}, + /* 2915 */ {I_VPMINUW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37295, 188}, + /* 2916 */ {I_VPMINUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37302, 188}, + /* 2917 */ {I_VPMINUD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37309, 188}, + /* 2918 */ {I_VPMINUD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37316, 188}, + /* 2919 */ {I_VPMOVMSKB, 2, {REG_GPR|BITS64,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+37323, 194}, + /* 2920 */ {I_VPMOVMSKB, 2, {REG_GPR|BITS32,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+37323, 188}, + /* 2921 */ {I_VPMOVSXBW, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+37330, 188}, + /* 2922 */ {I_VPMOVSXBD, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+37337, 188}, + /* 2923 */ {I_VPMOVSXBQ, 2, {XMM_L16,RM_XMM_L16|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+37344, 188}, + /* 2924 */ {I_VPMOVSXWD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+37351, 188}, + /* 2925 */ {I_VPMOVSXWQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+37358, 188}, + /* 2926 */ {I_VPMOVSXDQ, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+37365, 188}, + /* 2927 */ {I_VPMOVZXBW, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+37372, 188}, + /* 2928 */ {I_VPMOVZXBD, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+37379, 188}, + /* 2929 */ {I_VPMOVZXBQ, 2, {XMM_L16,RM_XMM_L16|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+37386, 188}, + /* 2930 */ {I_VPMOVZXWD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+37393, 188}, + /* 2931 */ {I_VPMOVZXWQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+37400, 188}, + /* 2932 */ {I_VPMOVZXDQ, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+37407, 188}, + /* 2933 */ {I_VPMULHUW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37414, 188}, + /* 2934 */ {I_VPMULHUW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37421, 188}, + /* 2935 */ {I_VPMULHRSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37428, 188}, + /* 2936 */ {I_VPMULHRSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37435, 188}, + /* 2937 */ {I_VPMULHW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37442, 188}, + /* 2938 */ {I_VPMULHW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37449, 188}, + /* 2939 */ {I_VPMULLW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37456, 188}, + /* 2940 */ {I_VPMULLW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37463, 188}, + /* 2941 */ {I_VPMULLD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37470, 188}, + /* 2942 */ {I_VPMULLD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37477, 188}, + /* 2943 */ {I_VPMULUDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37484, 188}, + /* 2944 */ {I_VPMULUDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37491, 188}, + /* 2945 */ {I_VPMULDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37498, 188}, + /* 2946 */ {I_VPMULDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37505, 188}, + /* 2947 */ {I_VPOR, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37512, 188}, + /* 2948 */ {I_VPOR, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37519, 188}, + /* 2949 */ {I_VPSADBW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37526, 188}, + /* 2950 */ {I_VPSADBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37533, 188}, + /* 2951 */ {I_VPSHUFB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37540, 188}, + /* 2952 */ {I_VPSHUFB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37547, 188}, + /* 2953 */ {I_VPSHUFD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13872, 188}, + /* 2954 */ {I_VPSHUFHW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13880, 188}, + /* 2955 */ {I_VPSHUFLW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13888, 188}, + /* 2956 */ {I_VPSIGNB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37554, 188}, + /* 2957 */ {I_VPSIGNB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37561, 188}, + /* 2958 */ {I_VPSIGNW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37568, 188}, + /* 2959 */ {I_VPSIGNW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37575, 188}, + /* 2960 */ {I_VPSIGND, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37582, 188}, + /* 2961 */ {I_VPSIGND, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37589, 188}, + /* 2962 */ {I_VPSLLDQ, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13896, 188}, + /* 2963 */ {I_VPSLLDQ, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+13904, 188}, + /* 2964 */ {I_VPSRLDQ, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13912, 188}, + /* 2965 */ {I_VPSRLDQ, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+13920, 188}, + /* 2966 */ {I_VPSLLW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37596, 188}, + /* 2967 */ {I_VPSLLW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37603, 188}, + /* 2968 */ {I_VPSLLW, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13928, 188}, + /* 2969 */ {I_VPSLLW, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+13936, 188}, + /* 2970 */ {I_VPSLLD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37610, 188}, + /* 2971 */ {I_VPSLLD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37617, 188}, + /* 2972 */ {I_VPSLLD, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13944, 188}, + /* 2973 */ {I_VPSLLD, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+13952, 188}, + /* 2974 */ {I_VPSLLQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37624, 188}, + /* 2975 */ {I_VPSLLQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37631, 188}, + /* 2976 */ {I_VPSLLQ, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13960, 188}, + /* 2977 */ {I_VPSLLQ, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+13968, 188}, + /* 2978 */ {I_VPSRAW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37638, 188}, + /* 2979 */ {I_VPSRAW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37645, 188}, + /* 2980 */ {I_VPSRAW, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13976, 188}, + /* 2981 */ {I_VPSRAW, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+13984, 188}, + /* 2982 */ {I_VPSRAD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37652, 188}, + /* 2983 */ {I_VPSRAD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37659, 188}, + /* 2984 */ {I_VPSRAD, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+13992, 188}, + /* 2985 */ {I_VPSRAD, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+14000, 188}, + /* 2986 */ {I_VPSRLW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37666, 188}, + /* 2987 */ {I_VPSRLW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37673, 188}, + /* 2988 */ {I_VPSRLW, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14008, 188}, + /* 2989 */ {I_VPSRLW, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+14016, 188}, + /* 2990 */ {I_VPSRLD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37680, 188}, + /* 2991 */ {I_VPSRLD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37687, 188}, + /* 2992 */ {I_VPSRLD, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14024, 188}, + /* 2993 */ {I_VPSRLD, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+14032, 188}, + /* 2994 */ {I_VPSRLQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37694, 188}, + /* 2995 */ {I_VPSRLQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37701, 188}, + /* 2996 */ {I_VPSRLQ, 3, {XMM_L16,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14040, 188}, + /* 2997 */ {I_VPSRLQ, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+14048, 188}, + /* 2998 */ {I_VPTEST, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37708, 188}, + /* 2999 */ {I_VPTEST, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+37715, 188}, + /* 3000 */ {I_VPSUBB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37722, 188}, + /* 3001 */ {I_VPSUBB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37729, 188}, + /* 3002 */ {I_VPSUBW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37736, 188}, + /* 3003 */ {I_VPSUBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37743, 188}, + /* 3004 */ {I_VPSUBD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37750, 188}, + /* 3005 */ {I_VPSUBD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37757, 188}, + /* 3006 */ {I_VPSUBQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37764, 188}, + /* 3007 */ {I_VPSUBQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37771, 188}, + /* 3008 */ {I_VPSUBSB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37778, 188}, + /* 3009 */ {I_VPSUBSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37785, 188}, + /* 3010 */ {I_VPSUBSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37792, 188}, + /* 3011 */ {I_VPSUBSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37799, 188}, + /* 3012 */ {I_VPSUBUSB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37806, 188}, + /* 3013 */ {I_VPSUBUSB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37813, 188}, + /* 3014 */ {I_VPSUBUSW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37820, 188}, + /* 3015 */ {I_VPSUBUSW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37827, 188}, + /* 3016 */ {I_VPUNPCKHBW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37834, 188}, + /* 3017 */ {I_VPUNPCKHBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37841, 188}, + /* 3018 */ {I_VPUNPCKHWD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37848, 188}, + /* 3019 */ {I_VPUNPCKHWD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37855, 188}, + /* 3020 */ {I_VPUNPCKHDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37862, 188}, + /* 3021 */ {I_VPUNPCKHDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37869, 188}, + /* 3022 */ {I_VPUNPCKHQDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37876, 188}, + /* 3023 */ {I_VPUNPCKHQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37883, 188}, + /* 3024 */ {I_VPUNPCKLBW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37890, 188}, + /* 3025 */ {I_VPUNPCKLBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37897, 188}, + /* 3026 */ {I_VPUNPCKLWD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37904, 188}, + /* 3027 */ {I_VPUNPCKLWD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37911, 188}, + /* 3028 */ {I_VPUNPCKLDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37918, 188}, + /* 3029 */ {I_VPUNPCKLDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37925, 188}, + /* 3030 */ {I_VPUNPCKLQDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37932, 188}, + /* 3031 */ {I_VPUNPCKLQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37939, 188}, + /* 3032 */ {I_VPXOR, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+37946, 188}, + /* 3033 */ {I_VPXOR, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37953, 188}, + /* 3034 */ {I_VRCPPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37960, 188}, + /* 3035 */ {I_VRCPPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+37967, 188}, + /* 3036 */ {I_VRCPSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+37974, 188}, + /* 3037 */ {I_VRCPSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+37981, 188}, + /* 3038 */ {I_VRSQRTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+37988, 188}, + /* 3039 */ {I_VRSQRTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+37995, 188}, + /* 3040 */ {I_VRSQRTSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38002, 188}, + /* 3041 */ {I_VRSQRTSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+38009, 188}, + /* 3042 */ {I_VROUNDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14056, 188}, + /* 3043 */ {I_VROUNDPD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14064, 188}, + /* 3044 */ {I_VROUNDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14072, 188}, + /* 3045 */ {I_VROUNDPS, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14080, 188}, + /* 3046 */ {I_VROUNDSD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14088, 188}, + /* 3047 */ {I_VROUNDSD, 3, {XMM_L16,RM_XMM_L16|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14096, 188}, + /* 3048 */ {I_VROUNDSS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14104, 188}, + /* 3049 */ {I_VROUNDSS, 3, {XMM_L16,RM_XMM_L16|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14112, 188}, + /* 3050 */ {I_VSHUFPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14120, 188}, + /* 3051 */ {I_VSHUFPD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14128, 188}, + /* 3052 */ {I_VSHUFPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14136, 188}, + /* 3053 */ {I_VSHUFPD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14144, 188}, + /* 3054 */ {I_VSHUFPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14152, 188}, + /* 3055 */ {I_VSHUFPS, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14160, 188}, + /* 3056 */ {I_VSHUFPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14168, 188}, + /* 3057 */ {I_VSHUFPS, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14176, 188}, + /* 3058 */ {I_VSQRTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38016, 188}, + /* 3059 */ {I_VSQRTPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38023, 188}, + /* 3060 */ {I_VSQRTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38030, 188}, + /* 3061 */ {I_VSQRTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38037, 188}, + /* 3062 */ {I_VSQRTSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38044, 188}, + /* 3063 */ {I_VSQRTSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+38051, 188}, + /* 3064 */ {I_VSQRTSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38058, 188}, + /* 3065 */ {I_VSQRTSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+38065, 188}, + /* 3066 */ {I_VSTMXCSR, 1, {MEMORY|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+38072, 188}, + /* 3067 */ {I_VSUBPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38079, 188}, + /* 3068 */ {I_VSUBPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38086, 188}, + /* 3069 */ {I_VSUBPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38093, 188}, + /* 3070 */ {I_VSUBPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38100, 188}, + /* 3071 */ {I_VSUBPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38107, 188}, + /* 3072 */ {I_VSUBPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38114, 188}, + /* 3073 */ {I_VSUBPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38121, 188}, + /* 3074 */ {I_VSUBPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38128, 188}, + /* 3075 */ {I_VSUBSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38135, 188}, + /* 3076 */ {I_VSUBSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+38142, 188}, + /* 3077 */ {I_VSUBSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38149, 188}, + /* 3078 */ {I_VSUBSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+38156, 188}, + /* 3079 */ {I_VTESTPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38163, 188}, + /* 3080 */ {I_VTESTPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38170, 188}, + /* 3081 */ {I_VTESTPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38177, 188}, + /* 3082 */ {I_VTESTPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38184, 188}, + /* 3083 */ {I_VUCOMISD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+38191, 188}, + /* 3084 */ {I_VUCOMISS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+38198, 188}, + /* 3085 */ {I_VUNPCKHPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38205, 188}, + /* 3086 */ {I_VUNPCKHPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38212, 188}, + /* 3087 */ {I_VUNPCKHPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38219, 188}, + /* 3088 */ {I_VUNPCKHPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38226, 188}, + /* 3089 */ {I_VUNPCKHPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38233, 188}, + /* 3090 */ {I_VUNPCKHPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38240, 188}, + /* 3091 */ {I_VUNPCKHPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38247, 188}, + /* 3092 */ {I_VUNPCKHPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38254, 188}, + /* 3093 */ {I_VUNPCKLPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38261, 188}, + /* 3094 */ {I_VUNPCKLPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38268, 188}, + /* 3095 */ {I_VUNPCKLPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38275, 188}, + /* 3096 */ {I_VUNPCKLPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38282, 188}, + /* 3097 */ {I_VUNPCKLPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38289, 188}, + /* 3098 */ {I_VUNPCKLPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38296, 188}, + /* 3099 */ {I_VUNPCKLPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38303, 188}, + /* 3100 */ {I_VUNPCKLPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38310, 188}, + /* 3101 */ {I_VXORPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38317, 188}, + /* 3102 */ {I_VXORPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38324, 188}, + /* 3103 */ {I_VXORPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38331, 188}, + /* 3104 */ {I_VXORPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38338, 188}, + /* 3105 */ {I_VXORPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38345, 188}, + /* 3106 */ {I_VXORPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+38352, 188}, + /* 3107 */ {I_VXORPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38359, 188}, + /* 3108 */ {I_VXORPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+38366, 188}, + /* 3109 */ {I_VZEROALL, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45759, 188}, + /* 3110 */ {I_VZEROUPPER, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45765, 188}, + /* 3111 */ {I_PCLMULLQLQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7768, 187}, + /* 3112 */ {I_PCLMULHQLQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7777, 187}, + /* 3113 */ {I_PCLMULLQHQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7786, 187}, + /* 3114 */ {I_PCLMULHQHQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7795, 187}, + /* 3115 */ {I_PCLMULQDQ, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14184, 187}, + /* 3116 */ {I_VPCLMULLQLQDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+7804, 188}, + /* 3117 */ {I_VPCLMULLQLQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7813, 188}, + /* 3118 */ {I_VPCLMULHQLQDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+7822, 188}, + /* 3119 */ {I_VPCLMULHQLQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7831, 188}, + /* 3120 */ {I_VPCLMULLQHQDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+7840, 188}, + /* 3121 */ {I_VPCLMULLQHQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7849, 188}, + /* 3122 */ {I_VPCLMULHQHQDQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+7858, 188}, + /* 3123 */ {I_VPCLMULHQHQDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+7867, 188}, + /* 3124 */ {I_VPCLMULQDQ, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14192, 188}, + /* 3125 */ {I_VPCLMULQDQ, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14200, 188}, + /* 3126 */ {I_VPCLMULLQLQDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+7876, 198}, + /* 3127 */ {I_VPCLMULLQLQDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+7885, 198}, + /* 3128 */ {I_VPCLMULHQLQDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+7894, 198}, + /* 3129 */ {I_VPCLMULHQLQDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+7903, 198}, + /* 3130 */ {I_VPCLMULLQHQDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+7912, 198}, + /* 3131 */ {I_VPCLMULLQHQDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+7921, 198}, + /* 3132 */ {I_VPCLMULHQHQDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+7930, 198}, + /* 3133 */ {I_VPCLMULHQHQDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+7939, 198}, + /* 3134 */ {I_VPCLMULQDQ, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+14208, 198}, + /* 3135 */ {I_VPCLMULQDQ, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14216, 198}, + /* 3136 */ {I_VPCLMULLQLQDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+0, 199}, + /* 3137 */ {I_VPCLMULLQLQDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+10, 199}, + /* 3138 */ {I_VPCLMULHQLQDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+20, 199}, + /* 3139 */ {I_VPCLMULHQLQDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+30, 199}, + /* 3140 */ {I_VPCLMULLQHQDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40, 199}, + /* 3141 */ {I_VPCLMULLQHQDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+50, 199}, + /* 3142 */ {I_VPCLMULHQHQDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+60, 199}, + /* 3143 */ {I_VPCLMULHQHQDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+70, 199}, + /* 3144 */ {I_VPCLMULQDQ, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+7948, 199}, + /* 3145 */ {I_VPCLMULQDQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+7957, 199}, + /* 3146 */ {I_VPCLMULLQLQDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+80, 199}, + /* 3147 */ {I_VPCLMULLQLQDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+90, 199}, + /* 3148 */ {I_VPCLMULHQLQDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+100, 199}, + /* 3149 */ {I_VPCLMULHQLQDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+110, 199}, + /* 3150 */ {I_VPCLMULLQHQDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+120, 199}, + /* 3151 */ {I_VPCLMULLQHQDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+130, 199}, + /* 3152 */ {I_VPCLMULHQHQDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+140, 199}, + /* 3153 */ {I_VPCLMULHQHQDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+150, 199}, + /* 3154 */ {I_VPCLMULQDQ, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+7966, 199}, + /* 3155 */ {I_VPCLMULQDQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+7975, 199}, + /* 3156 */ {I_VPCLMULLQLQDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+160, 200}, + /* 3157 */ {I_VPCLMULLQLQDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+170, 200}, + /* 3158 */ {I_VPCLMULHQLQDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+180, 200}, + /* 3159 */ {I_VPCLMULHQLQDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+190, 200}, + /* 3160 */ {I_VPCLMULLQHQDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+200, 200}, + /* 3161 */ {I_VPCLMULLQHQDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+210, 200}, + /* 3162 */ {I_VPCLMULHQHQDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+220, 200}, + /* 3163 */ {I_VPCLMULHQHQDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+230, 200}, + /* 3164 */ {I_VPCLMULQDQ, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+7984, 200}, + /* 3165 */ {I_VPCLMULQDQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+7993, 200}, + /* 3166 */ {I_VFMADD132PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38373, 201}, + /* 3167 */ {I_VFMADD132PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38380, 201}, + /* 3168 */ {I_VFMADD132PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38387, 201}, + /* 3169 */ {I_VFMADD132PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38394, 201}, + /* 3170 */ {I_VFMADD312PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38373, 201}, + /* 3171 */ {I_VFMADD312PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38380, 201}, + /* 3172 */ {I_VFMADD312PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38387, 201}, + /* 3173 */ {I_VFMADD312PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38394, 201}, + /* 3174 */ {I_VFMADD213PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38401, 201}, + /* 3175 */ {I_VFMADD213PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38408, 201}, + /* 3176 */ {I_VFMADD213PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38415, 201}, + /* 3177 */ {I_VFMADD213PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38422, 201}, + /* 3178 */ {I_VFMADD123PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38401, 201}, + /* 3179 */ {I_VFMADD123PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38408, 201}, + /* 3180 */ {I_VFMADD123PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38415, 201}, + /* 3181 */ {I_VFMADD123PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38422, 201}, + /* 3182 */ {I_VFMADD231PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38429, 201}, + /* 3183 */ {I_VFMADD231PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38436, 201}, + /* 3184 */ {I_VFMADD231PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38443, 201}, + /* 3185 */ {I_VFMADD231PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38450, 201}, + /* 3186 */ {I_VFMADD321PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38429, 201}, + /* 3187 */ {I_VFMADD321PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38436, 201}, + /* 3188 */ {I_VFMADD321PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38443, 201}, + /* 3189 */ {I_VFMADD321PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38450, 201}, + /* 3190 */ {I_VFMADDSUB132PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38457, 201}, + /* 3191 */ {I_VFMADDSUB132PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38464, 201}, + /* 3192 */ {I_VFMADDSUB132PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38471, 201}, + /* 3193 */ {I_VFMADDSUB132PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38478, 201}, + /* 3194 */ {I_VFMADDSUB312PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38457, 201}, + /* 3195 */ {I_VFMADDSUB312PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38464, 201}, + /* 3196 */ {I_VFMADDSUB312PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38471, 201}, + /* 3197 */ {I_VFMADDSUB312PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38478, 201}, + /* 3198 */ {I_VFMADDSUB213PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38485, 201}, + /* 3199 */ {I_VFMADDSUB213PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38492, 201}, + /* 3200 */ {I_VFMADDSUB213PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38499, 201}, + /* 3201 */ {I_VFMADDSUB213PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38506, 201}, + /* 3202 */ {I_VFMADDSUB123PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38485, 201}, + /* 3203 */ {I_VFMADDSUB123PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38492, 201}, + /* 3204 */ {I_VFMADDSUB123PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38499, 201}, + /* 3205 */ {I_VFMADDSUB123PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38506, 201}, + /* 3206 */ {I_VFMADDSUB231PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38513, 201}, + /* 3207 */ {I_VFMADDSUB231PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38520, 201}, + /* 3208 */ {I_VFMADDSUB231PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38527, 201}, + /* 3209 */ {I_VFMADDSUB231PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38534, 201}, + /* 3210 */ {I_VFMADDSUB321PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38513, 201}, + /* 3211 */ {I_VFMADDSUB321PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38520, 201}, + /* 3212 */ {I_VFMADDSUB321PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38527, 201}, + /* 3213 */ {I_VFMADDSUB321PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38534, 201}, + /* 3214 */ {I_VFMSUB132PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38541, 201}, + /* 3215 */ {I_VFMSUB132PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38548, 201}, + /* 3216 */ {I_VFMSUB132PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38555, 201}, + /* 3217 */ {I_VFMSUB132PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38562, 201}, + /* 3218 */ {I_VFMSUB312PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38541, 201}, + /* 3219 */ {I_VFMSUB312PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38548, 201}, + /* 3220 */ {I_VFMSUB312PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38555, 201}, + /* 3221 */ {I_VFMSUB312PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38562, 201}, + /* 3222 */ {I_VFMSUB213PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38569, 201}, + /* 3223 */ {I_VFMSUB213PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38576, 201}, + /* 3224 */ {I_VFMSUB213PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38583, 201}, + /* 3225 */ {I_VFMSUB213PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38590, 201}, + /* 3226 */ {I_VFMSUB123PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38569, 201}, + /* 3227 */ {I_VFMSUB123PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38576, 201}, + /* 3228 */ {I_VFMSUB123PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38583, 201}, + /* 3229 */ {I_VFMSUB123PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38590, 201}, + /* 3230 */ {I_VFMSUB231PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38597, 201}, + /* 3231 */ {I_VFMSUB231PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38604, 201}, + /* 3232 */ {I_VFMSUB231PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38611, 201}, + /* 3233 */ {I_VFMSUB231PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38618, 201}, + /* 3234 */ {I_VFMSUB321PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38597, 201}, + /* 3235 */ {I_VFMSUB321PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38604, 201}, + /* 3236 */ {I_VFMSUB321PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38611, 201}, + /* 3237 */ {I_VFMSUB321PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38618, 201}, + /* 3238 */ {I_VFMSUBADD132PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38625, 201}, + /* 3239 */ {I_VFMSUBADD132PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38632, 201}, + /* 3240 */ {I_VFMSUBADD132PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38639, 201}, + /* 3241 */ {I_VFMSUBADD132PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38646, 201}, + /* 3242 */ {I_VFMSUBADD312PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38625, 201}, + /* 3243 */ {I_VFMSUBADD312PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38632, 201}, + /* 3244 */ {I_VFMSUBADD312PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38639, 201}, + /* 3245 */ {I_VFMSUBADD312PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38646, 201}, + /* 3246 */ {I_VFMSUBADD213PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38653, 201}, + /* 3247 */ {I_VFMSUBADD213PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38660, 201}, + /* 3248 */ {I_VFMSUBADD213PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38667, 201}, + /* 3249 */ {I_VFMSUBADD213PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38674, 201}, + /* 3250 */ {I_VFMSUBADD123PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38653, 201}, + /* 3251 */ {I_VFMSUBADD123PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38660, 201}, + /* 3252 */ {I_VFMSUBADD123PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38667, 201}, + /* 3253 */ {I_VFMSUBADD123PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38674, 201}, + /* 3254 */ {I_VFMSUBADD231PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38681, 201}, + /* 3255 */ {I_VFMSUBADD231PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38688, 201}, + /* 3256 */ {I_VFMSUBADD231PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38695, 201}, + /* 3257 */ {I_VFMSUBADD231PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38702, 201}, + /* 3258 */ {I_VFMSUBADD321PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38681, 201}, + /* 3259 */ {I_VFMSUBADD321PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38688, 201}, + /* 3260 */ {I_VFMSUBADD321PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38695, 201}, + /* 3261 */ {I_VFMSUBADD321PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38702, 201}, + /* 3262 */ {I_VFNMADD132PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38709, 201}, + /* 3263 */ {I_VFNMADD132PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38716, 201}, + /* 3264 */ {I_VFNMADD132PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38723, 201}, + /* 3265 */ {I_VFNMADD132PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38730, 201}, + /* 3266 */ {I_VFNMADD312PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38709, 201}, + /* 3267 */ {I_VFNMADD312PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38716, 201}, + /* 3268 */ {I_VFNMADD312PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38723, 201}, + /* 3269 */ {I_VFNMADD312PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38730, 201}, + /* 3270 */ {I_VFNMADD213PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38737, 201}, + /* 3271 */ {I_VFNMADD213PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38744, 201}, + /* 3272 */ {I_VFNMADD213PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38751, 201}, + /* 3273 */ {I_VFNMADD213PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38758, 201}, + /* 3274 */ {I_VFNMADD123PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38737, 201}, + /* 3275 */ {I_VFNMADD123PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38744, 201}, + /* 3276 */ {I_VFNMADD123PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38751, 201}, + /* 3277 */ {I_VFNMADD123PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38758, 201}, + /* 3278 */ {I_VFNMADD231PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38765, 201}, + /* 3279 */ {I_VFNMADD231PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38772, 201}, + /* 3280 */ {I_VFNMADD231PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38779, 201}, + /* 3281 */ {I_VFNMADD231PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38786, 201}, + /* 3282 */ {I_VFNMADD321PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38765, 201}, + /* 3283 */ {I_VFNMADD321PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38772, 201}, + /* 3284 */ {I_VFNMADD321PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38779, 201}, + /* 3285 */ {I_VFNMADD321PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38786, 201}, + /* 3286 */ {I_VFNMSUB132PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38793, 201}, + /* 3287 */ {I_VFNMSUB132PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38800, 201}, + /* 3288 */ {I_VFNMSUB132PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38807, 201}, + /* 3289 */ {I_VFNMSUB132PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38814, 201}, + /* 3290 */ {I_VFNMSUB312PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38793, 201}, + /* 3291 */ {I_VFNMSUB312PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38800, 201}, + /* 3292 */ {I_VFNMSUB312PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38807, 201}, + /* 3293 */ {I_VFNMSUB312PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38814, 201}, + /* 3294 */ {I_VFNMSUB213PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38821, 201}, + /* 3295 */ {I_VFNMSUB213PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38828, 201}, + /* 3296 */ {I_VFNMSUB213PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38835, 201}, + /* 3297 */ {I_VFNMSUB213PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38842, 201}, + /* 3298 */ {I_VFNMSUB123PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38821, 201}, + /* 3299 */ {I_VFNMSUB123PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38828, 201}, + /* 3300 */ {I_VFNMSUB123PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38835, 201}, + /* 3301 */ {I_VFNMSUB123PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38842, 201}, + /* 3302 */ {I_VFNMSUB231PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38849, 201}, + /* 3303 */ {I_VFNMSUB231PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38856, 201}, + /* 3304 */ {I_VFNMSUB231PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38863, 201}, + /* 3305 */ {I_VFNMSUB231PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38870, 201}, + /* 3306 */ {I_VFNMSUB321PS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38849, 201}, + /* 3307 */ {I_VFNMSUB321PS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38856, 201}, + /* 3308 */ {I_VFNMSUB321PD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+38863, 201}, + /* 3309 */ {I_VFNMSUB321PD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+38870, 201}, + /* 3310 */ {I_VFMADD132SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38877, 201}, + /* 3311 */ {I_VFMADD132SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38884, 201}, + /* 3312 */ {I_VFMADD312SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38877, 201}, + /* 3313 */ {I_VFMADD312SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38884, 201}, + /* 3314 */ {I_VFMADD213SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38891, 201}, + /* 3315 */ {I_VFMADD213SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38898, 201}, + /* 3316 */ {I_VFMADD123SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38891, 201}, + /* 3317 */ {I_VFMADD123SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38898, 201}, + /* 3318 */ {I_VFMADD231SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38905, 201}, + /* 3319 */ {I_VFMADD231SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38912, 201}, + /* 3320 */ {I_VFMADD321SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38905, 201}, + /* 3321 */ {I_VFMADD321SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38912, 201}, + /* 3322 */ {I_VFMSUB132SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38919, 201}, + /* 3323 */ {I_VFMSUB132SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38926, 201}, + /* 3324 */ {I_VFMSUB312SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38919, 201}, + /* 3325 */ {I_VFMSUB312SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38926, 201}, + /* 3326 */ {I_VFMSUB213SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38933, 201}, + /* 3327 */ {I_VFMSUB213SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38940, 201}, + /* 3328 */ {I_VFMSUB123SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38933, 201}, + /* 3329 */ {I_VFMSUB123SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38940, 201}, + /* 3330 */ {I_VFMSUB231SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38947, 201}, + /* 3331 */ {I_VFMSUB231SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38954, 201}, + /* 3332 */ {I_VFMSUB321SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38947, 201}, + /* 3333 */ {I_VFMSUB321SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38954, 201}, + /* 3334 */ {I_VFNMADD132SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38961, 201}, + /* 3335 */ {I_VFNMADD132SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38968, 201}, + /* 3336 */ {I_VFNMADD312SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38961, 201}, + /* 3337 */ {I_VFNMADD312SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38968, 201}, + /* 3338 */ {I_VFNMADD213SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38975, 201}, + /* 3339 */ {I_VFNMADD213SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38982, 201}, + /* 3340 */ {I_VFNMADD123SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38975, 201}, + /* 3341 */ {I_VFNMADD123SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38982, 201}, + /* 3342 */ {I_VFNMADD231SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38989, 201}, + /* 3343 */ {I_VFNMADD231SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38996, 201}, + /* 3344 */ {I_VFNMADD321SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+38989, 201}, + /* 3345 */ {I_VFNMADD321SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+38996, 201}, + /* 3346 */ {I_VFNMSUB132SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+39003, 201}, + /* 3347 */ {I_VFNMSUB132SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+39010, 201}, + /* 3348 */ {I_VFNMSUB312SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+39003, 201}, + /* 3349 */ {I_VFNMSUB312SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+39010, 201}, + /* 3350 */ {I_VFNMSUB213SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+39017, 201}, + /* 3351 */ {I_VFNMSUB213SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+39024, 201}, + /* 3352 */ {I_VFNMSUB123SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+39017, 201}, + /* 3353 */ {I_VFNMSUB123SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+39024, 201}, + /* 3354 */ {I_VFNMSUB231SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+39031, 201}, + /* 3355 */ {I_VFNMSUB231SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+39038, 201}, + /* 3356 */ {I_VFNMSUB321SS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+39031, 201}, + /* 3357 */ {I_VFNMSUB321SD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+39038, 201}, + /* 3358 */ {I_RDFSBASE, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39045, 136}, + /* 3359 */ {I_RDFSBASE, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39052, 136}, + /* 3360 */ {I_RDGSBASE, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39059, 136}, + /* 3361 */ {I_RDGSBASE, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39066, 136}, + /* 3362 */ {I_RDRAND, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45771, 135}, + /* 3363 */ {I_RDRAND, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45777, 135}, + /* 3364 */ {I_RDRAND, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45783, 136}, + /* 3365 */ {I_WRFSBASE, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39073, 136}, + /* 3366 */ {I_WRFSBASE, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39080, 136}, + /* 3367 */ {I_WRGSBASE, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39087, 136}, + /* 3368 */ {I_WRGSBASE, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39094, 136}, + /* 3369 */ {I_VCVTPH2PS, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39101, 202}, + /* 3370 */ {I_VCVTPH2PS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+39108, 202}, + /* 3371 */ {I_VCVTPS2PH, 3, {RM_XMM_L16|BITS128,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14224, 202}, + /* 3372 */ {I_VCVTPS2PH, 3, {RM_XMM_L16|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14232, 202}, + /* 3373 */ {I_ADCX, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+14240, 135}, + /* 3374 */ {I_ADCX, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+14248, 136}, + /* 3375 */ {I_ADOX, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+14256, 135}, + /* 3376 */ {I_ADOX, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+14264, 136}, + /* 3377 */ {I_RDSEED, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45789, 135}, + /* 3378 */ {I_RDSEED, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45795, 135}, + /* 3379 */ {I_RDSEED, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45801, 136}, + /* 3380 */ {I_CLAC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49147, 203}, + /* 3381 */ {I_STAC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49152, 203}, + /* 3382 */ {I_XSTORE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49157, 32}, + /* 3383 */ {I_XCRYPTECB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45807, 32}, + /* 3384 */ {I_XCRYPTCBC, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45813, 32}, + /* 3385 */ {I_XCRYPTCTR, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45819, 32}, + /* 3386 */ {I_XCRYPTCFB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45825, 32}, + /* 3387 */ {I_XCRYPTOFB, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45831, 32}, + /* 3388 */ {I_MONTMUL, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45837, 32}, + /* 3389 */ {I_XSHA1, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45843, 32}, + /* 3390 */ {I_XSHA256, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45849, 32}, + /* 3391 */ {I_LLWPCB, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39115, 204}, + /* 3392 */ {I_LLWPCB, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39122, 205}, + /* 3393 */ {I_SLWPCB, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39129, 204}, + /* 3394 */ {I_SLWPCB, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39136, 205}, + /* 3395 */ {I_LWPVAL, 3, {REG_GPR|BITS32,RM_GPR|BITS32,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+14272, 204}, + /* 3396 */ {I_LWPVAL, 3, {REG_GPR|BITS64,RM_GPR|BITS32,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+14280, 205}, + /* 3397 */ {I_LWPINS, 3, {REG_GPR|BITS32,RM_GPR|BITS32,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+14288, 204}, + /* 3398 */ {I_LWPINS, 3, {REG_GPR|BITS64,RM_GPR|BITS32,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+14296, 205}, + /* 3399 */ {I_VFMADDPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14304, 206}, + /* 3400 */ {I_VFMADDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14312, 206}, + /* 3401 */ {I_VFMADDPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14320, 206}, + /* 3402 */ {I_VFMADDPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14328, 206}, + /* 3403 */ {I_VFMADDPD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14336, 206}, + /* 3404 */ {I_VFMADDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14344, 206}, + /* 3405 */ {I_VFMADDPD, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14352, 206}, + /* 3406 */ {I_VFMADDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14360, 206}, + /* 3407 */ {I_VFMADDPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14368, 206}, + /* 3408 */ {I_VFMADDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14376, 206}, + /* 3409 */ {I_VFMADDPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14384, 206}, + /* 3410 */ {I_VFMADDPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14392, 206}, + /* 3411 */ {I_VFMADDPS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14400, 206}, + /* 3412 */ {I_VFMADDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14408, 206}, + /* 3413 */ {I_VFMADDPS, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14416, 206}, + /* 3414 */ {I_VFMADDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14424, 206}, + /* 3415 */ {I_VFMADDSD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14432, 206}, + /* 3416 */ {I_VFMADDSD, 3, {XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14440, 206}, + /* 3417 */ {I_VFMADDSD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0}, NO_DECORATOR, nasm_bytecodes+14448, 206}, + /* 3418 */ {I_VFMADDSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+14456, 206}, + /* 3419 */ {I_VFMADDSS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14464, 206}, + /* 3420 */ {I_VFMADDSS, 3, {XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14472, 206}, + /* 3421 */ {I_VFMADDSS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0}, NO_DECORATOR, nasm_bytecodes+14480, 206}, + /* 3422 */ {I_VFMADDSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+14488, 206}, + /* 3423 */ {I_VFMADDSUBPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14496, 206}, + /* 3424 */ {I_VFMADDSUBPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14504, 206}, + /* 3425 */ {I_VFMADDSUBPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14512, 206}, + /* 3426 */ {I_VFMADDSUBPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14520, 206}, + /* 3427 */ {I_VFMADDSUBPD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14528, 206}, + /* 3428 */ {I_VFMADDSUBPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14536, 206}, + /* 3429 */ {I_VFMADDSUBPD, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14544, 206}, + /* 3430 */ {I_VFMADDSUBPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14552, 206}, + /* 3431 */ {I_VFMADDSUBPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14560, 206}, + /* 3432 */ {I_VFMADDSUBPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14568, 206}, + /* 3433 */ {I_VFMADDSUBPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14576, 206}, + /* 3434 */ {I_VFMADDSUBPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14584, 206}, + /* 3435 */ {I_VFMADDSUBPS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14592, 206}, + /* 3436 */ {I_VFMADDSUBPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14600, 206}, + /* 3437 */ {I_VFMADDSUBPS, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14608, 206}, + /* 3438 */ {I_VFMADDSUBPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14616, 206}, + /* 3439 */ {I_VFMSUBADDPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14624, 206}, + /* 3440 */ {I_VFMSUBADDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14632, 206}, + /* 3441 */ {I_VFMSUBADDPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14640, 206}, + /* 3442 */ {I_VFMSUBADDPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14648, 206}, + /* 3443 */ {I_VFMSUBADDPD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14656, 206}, + /* 3444 */ {I_VFMSUBADDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14664, 206}, + /* 3445 */ {I_VFMSUBADDPD, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14672, 206}, + /* 3446 */ {I_VFMSUBADDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14680, 206}, + /* 3447 */ {I_VFMSUBADDPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14688, 206}, + /* 3448 */ {I_VFMSUBADDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14696, 206}, + /* 3449 */ {I_VFMSUBADDPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14704, 206}, + /* 3450 */ {I_VFMSUBADDPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14712, 206}, + /* 3451 */ {I_VFMSUBADDPS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14720, 206}, + /* 3452 */ {I_VFMSUBADDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14728, 206}, + /* 3453 */ {I_VFMSUBADDPS, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14736, 206}, + /* 3454 */ {I_VFMSUBADDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14744, 206}, + /* 3455 */ {I_VFMSUBPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14752, 206}, + /* 3456 */ {I_VFMSUBPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14760, 206}, + /* 3457 */ {I_VFMSUBPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14768, 206}, + /* 3458 */ {I_VFMSUBPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14776, 206}, + /* 3459 */ {I_VFMSUBPD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14784, 206}, + /* 3460 */ {I_VFMSUBPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14792, 206}, + /* 3461 */ {I_VFMSUBPD, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14800, 206}, + /* 3462 */ {I_VFMSUBPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14808, 206}, + /* 3463 */ {I_VFMSUBPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14816, 206}, + /* 3464 */ {I_VFMSUBPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14824, 206}, + /* 3465 */ {I_VFMSUBPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14832, 206}, + /* 3466 */ {I_VFMSUBPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14840, 206}, + /* 3467 */ {I_VFMSUBPS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14848, 206}, + /* 3468 */ {I_VFMSUBPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14856, 206}, + /* 3469 */ {I_VFMSUBPS, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14864, 206}, + /* 3470 */ {I_VFMSUBPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+14872, 206}, + /* 3471 */ {I_VFMSUBSD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14880, 206}, + /* 3472 */ {I_VFMSUBSD, 3, {XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14888, 206}, + /* 3473 */ {I_VFMSUBSD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0}, NO_DECORATOR, nasm_bytecodes+14896, 206}, + /* 3474 */ {I_VFMSUBSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+14904, 206}, + /* 3475 */ {I_VFMSUBSS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14912, 206}, + /* 3476 */ {I_VFMSUBSS, 3, {XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14920, 206}, + /* 3477 */ {I_VFMSUBSS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0}, NO_DECORATOR, nasm_bytecodes+14928, 206}, + /* 3478 */ {I_VFMSUBSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+14936, 206}, + /* 3479 */ {I_VFNMADDPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14944, 206}, + /* 3480 */ {I_VFNMADDPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14952, 206}, + /* 3481 */ {I_VFNMADDPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+14960, 206}, + /* 3482 */ {I_VFNMADDPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+14968, 206}, + /* 3483 */ {I_VFNMADDPD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+14976, 206}, + /* 3484 */ {I_VFNMADDPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+14984, 206}, + /* 3485 */ {I_VFNMADDPD, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+14992, 206}, + /* 3486 */ {I_VFNMADDPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+15000, 206}, + /* 3487 */ {I_VFNMADDPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15008, 206}, + /* 3488 */ {I_VFNMADDPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15016, 206}, + /* 3489 */ {I_VFNMADDPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15024, 206}, + /* 3490 */ {I_VFNMADDPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15032, 206}, + /* 3491 */ {I_VFNMADDPS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+15040, 206}, + /* 3492 */ {I_VFNMADDPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+15048, 206}, + /* 3493 */ {I_VFNMADDPS, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+15056, 206}, + /* 3494 */ {I_VFNMADDPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+15064, 206}, + /* 3495 */ {I_VFNMADDSD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15072, 206}, + /* 3496 */ {I_VFNMADDSD, 3, {XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15080, 206}, + /* 3497 */ {I_VFNMADDSD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0}, NO_DECORATOR, nasm_bytecodes+15088, 206}, + /* 3498 */ {I_VFNMADDSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+15096, 206}, + /* 3499 */ {I_VFNMADDSS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15104, 206}, + /* 3500 */ {I_VFNMADDSS, 3, {XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15112, 206}, + /* 3501 */ {I_VFNMADDSS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0}, NO_DECORATOR, nasm_bytecodes+15120, 206}, + /* 3502 */ {I_VFNMADDSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+15128, 206}, + /* 3503 */ {I_VFNMSUBPD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15136, 206}, + /* 3504 */ {I_VFNMSUBPD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15144, 206}, + /* 3505 */ {I_VFNMSUBPD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15152, 206}, + /* 3506 */ {I_VFNMSUBPD, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15160, 206}, + /* 3507 */ {I_VFNMSUBPD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+15168, 206}, + /* 3508 */ {I_VFNMSUBPD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+15176, 206}, + /* 3509 */ {I_VFNMSUBPD, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+15184, 206}, + /* 3510 */ {I_VFNMSUBPD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+15192, 206}, + /* 3511 */ {I_VFNMSUBPS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15200, 206}, + /* 3512 */ {I_VFNMSUBPS, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15208, 206}, + /* 3513 */ {I_VFNMSUBPS, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15216, 206}, + /* 3514 */ {I_VFNMSUBPS, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15224, 206}, + /* 3515 */ {I_VFNMSUBPS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+15232, 206}, + /* 3516 */ {I_VFNMSUBPS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+15240, 206}, + /* 3517 */ {I_VFNMSUBPS, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+15248, 206}, + /* 3518 */ {I_VFNMSUBPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+15256, 206}, + /* 3519 */ {I_VFNMSUBSD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15264, 206}, + /* 3520 */ {I_VFNMSUBSD, 3, {XMM_L16,RM_XMM_L16|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15272, 206}, + /* 3521 */ {I_VFNMSUBSD, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0}, NO_DECORATOR, nasm_bytecodes+15280, 206}, + /* 3522 */ {I_VFNMSUBSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+15288, 206}, + /* 3523 */ {I_VFNMSUBSS, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15296, 206}, + /* 3524 */ {I_VFNMSUBSS, 3, {XMM_L16,RM_XMM_L16|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15304, 206}, + /* 3525 */ {I_VFNMSUBSS, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0}, NO_DECORATOR, nasm_bytecodes+15312, 206}, + /* 3526 */ {I_VFNMSUBSS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+15320, 206}, + /* 3527 */ {I_VFRCZPD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39143, 206}, + /* 3528 */ {I_VFRCZPD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39150, 206}, + /* 3529 */ {I_VFRCZPD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39157, 206}, + /* 3530 */ {I_VFRCZPD, 1, {YMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39164, 206}, + /* 3531 */ {I_VFRCZPS, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39171, 206}, + /* 3532 */ {I_VFRCZPS, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39178, 206}, + /* 3533 */ {I_VFRCZPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39185, 206}, + /* 3534 */ {I_VFRCZPS, 1, {YMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39192, 206}, + /* 3535 */ {I_VFRCZSD, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+39199, 206}, + /* 3536 */ {I_VFRCZSD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39206, 206}, + /* 3537 */ {I_VFRCZSS, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+39213, 206}, + /* 3538 */ {I_VFRCZSS, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39220, 206}, + /* 3539 */ {I_VPCMOV, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15328, 206}, + /* 3540 */ {I_VPCMOV, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15336, 206}, + /* 3541 */ {I_VPCMOV, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15344, 206}, + /* 3542 */ {I_VPCMOV, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15352, 206}, + /* 3543 */ {I_VPCMOV, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+15360, 206}, + /* 3544 */ {I_VPCMOV, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+15368, 206}, + /* 3545 */ {I_VPCMOV, 4, {YMM_L16,YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0}, NO_DECORATOR, nasm_bytecodes+15376, 206}, + /* 3546 */ {I_VPCMOV, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+15384, 206}, + /* 3547 */ {I_VPCOMB, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15392, 206}, + /* 3548 */ {I_VPCOMB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15400, 206}, + /* 3549 */ {I_VPCOMD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15408, 206}, + /* 3550 */ {I_VPCOMD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15416, 206}, + /* 3551 */ {I_VPCOMQ, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15424, 206}, + /* 3552 */ {I_VPCOMQ, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15432, 206}, + /* 3553 */ {I_VPCOMUB, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15440, 206}, + /* 3554 */ {I_VPCOMUB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15448, 206}, + /* 3555 */ {I_VPCOMUD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15456, 206}, + /* 3556 */ {I_VPCOMUD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15464, 206}, + /* 3557 */ {I_VPCOMUQ, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15472, 206}, + /* 3558 */ {I_VPCOMUQ, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15480, 206}, + /* 3559 */ {I_VPCOMUW, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15488, 206}, + /* 3560 */ {I_VPCOMUW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15496, 206}, + /* 3561 */ {I_VPCOMW, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15504, 206}, + /* 3562 */ {I_VPCOMW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15512, 206}, + /* 3563 */ {I_VPHADDBD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39227, 206}, + /* 3564 */ {I_VPHADDBD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39234, 206}, + /* 3565 */ {I_VPHADDBQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39241, 206}, + /* 3566 */ {I_VPHADDBQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39248, 206}, + /* 3567 */ {I_VPHADDBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39255, 206}, + /* 3568 */ {I_VPHADDBW, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39262, 206}, + /* 3569 */ {I_VPHADDDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39269, 206}, + /* 3570 */ {I_VPHADDDQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39276, 206}, + /* 3571 */ {I_VPHADDUBD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39283, 206}, + /* 3572 */ {I_VPHADDUBD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39290, 206}, + /* 3573 */ {I_VPHADDUBQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39297, 206}, + /* 3574 */ {I_VPHADDUBQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39304, 206}, + /* 3575 */ {I_VPHADDUBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39311, 206}, + /* 3576 */ {I_VPHADDUBW, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39318, 206}, + /* 3577 */ {I_VPHADDUDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39325, 206}, + /* 3578 */ {I_VPHADDUDQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39332, 206}, + /* 3579 */ {I_VPHADDUWD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39339, 206}, + /* 3580 */ {I_VPHADDUWD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39346, 206}, + /* 3581 */ {I_VPHADDUWQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39353, 206}, + /* 3582 */ {I_VPHADDUWQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39360, 206}, + /* 3583 */ {I_VPHADDWD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39367, 206}, + /* 3584 */ {I_VPHADDWD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39374, 206}, + /* 3585 */ {I_VPHADDWQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39381, 206}, + /* 3586 */ {I_VPHADDWQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39388, 206}, + /* 3587 */ {I_VPHSUBBW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39395, 206}, + /* 3588 */ {I_VPHSUBBW, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39402, 206}, + /* 3589 */ {I_VPHSUBDQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39409, 206}, + /* 3590 */ {I_VPHSUBDQ, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39416, 206}, + /* 3591 */ {I_VPHSUBWD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39423, 206}, + /* 3592 */ {I_VPHSUBWD, 1, {XMM_L16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+39430, 206}, + /* 3593 */ {I_VPMACSDD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15520, 206}, + /* 3594 */ {I_VPMACSDD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15528, 206}, + /* 3595 */ {I_VPMACSDQH, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15536, 206}, + /* 3596 */ {I_VPMACSDQH, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15544, 206}, + /* 3597 */ {I_VPMACSDQL, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15552, 206}, + /* 3598 */ {I_VPMACSDQL, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15560, 206}, + /* 3599 */ {I_VPMACSSDD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15568, 206}, + /* 3600 */ {I_VPMACSSDD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15576, 206}, + /* 3601 */ {I_VPMACSSDQH, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15584, 206}, + /* 3602 */ {I_VPMACSSDQH, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15592, 206}, + /* 3603 */ {I_VPMACSSDQL, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15600, 206}, + /* 3604 */ {I_VPMACSSDQL, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15608, 206}, + /* 3605 */ {I_VPMACSSWD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15616, 206}, + /* 3606 */ {I_VPMACSSWD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15624, 206}, + /* 3607 */ {I_VPMACSSWW, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15632, 206}, + /* 3608 */ {I_VPMACSSWW, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15640, 206}, + /* 3609 */ {I_VPMACSWD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15648, 206}, + /* 3610 */ {I_VPMACSWD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15656, 206}, + /* 3611 */ {I_VPMACSWW, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15664, 206}, + /* 3612 */ {I_VPMACSWW, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15672, 206}, + /* 3613 */ {I_VPMADCSSWD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15680, 206}, + /* 3614 */ {I_VPMADCSSWD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15688, 206}, + /* 3615 */ {I_VPMADCSWD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15696, 206}, + /* 3616 */ {I_VPMADCSWD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15704, 206}, + /* 3617 */ {I_VPPERM, 4, {XMM_L16,XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0}, NO_DECORATOR, nasm_bytecodes+15712, 206}, + /* 3618 */ {I_VPPERM, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+15720, 206}, + /* 3619 */ {I_VPPERM, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15728, 206}, + /* 3620 */ {I_VPPERM, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15736, 206}, + /* 3621 */ {I_VPROTB, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39437, 206}, + /* 3622 */ {I_VPROTB, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39444, 206}, + /* 3623 */ {I_VPROTB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39451, 206}, + /* 3624 */ {I_VPROTB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39458, 206}, + /* 3625 */ {I_VPROTB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15744, 206}, + /* 3626 */ {I_VPROTB, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15752, 206}, + /* 3627 */ {I_VPROTD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39465, 206}, + /* 3628 */ {I_VPROTD, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39472, 206}, + /* 3629 */ {I_VPROTD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39479, 206}, + /* 3630 */ {I_VPROTD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39486, 206}, + /* 3631 */ {I_VPROTD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15760, 206}, + /* 3632 */ {I_VPROTD, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15768, 206}, + /* 3633 */ {I_VPROTQ, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39493, 206}, + /* 3634 */ {I_VPROTQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39500, 206}, + /* 3635 */ {I_VPROTQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39507, 206}, + /* 3636 */ {I_VPROTQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39514, 206}, + /* 3637 */ {I_VPROTQ, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15776, 206}, + /* 3638 */ {I_VPROTQ, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15784, 206}, + /* 3639 */ {I_VPROTW, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39521, 206}, + /* 3640 */ {I_VPROTW, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39528, 206}, + /* 3641 */ {I_VPROTW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39535, 206}, + /* 3642 */ {I_VPROTW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39542, 206}, + /* 3643 */ {I_VPROTW, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15792, 206}, + /* 3644 */ {I_VPROTW, 2, {XMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15800, 206}, + /* 3645 */ {I_VPSHAB, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39549, 206}, + /* 3646 */ {I_VPSHAB, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39556, 206}, + /* 3647 */ {I_VPSHAB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39563, 206}, + /* 3648 */ {I_VPSHAB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39570, 206}, + /* 3649 */ {I_VPSHAD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39577, 206}, + /* 3650 */ {I_VPSHAD, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39584, 206}, + /* 3651 */ {I_VPSHAD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39591, 206}, + /* 3652 */ {I_VPSHAD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39598, 206}, + /* 3653 */ {I_VPSHAQ, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39605, 206}, + /* 3654 */ {I_VPSHAQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39612, 206}, + /* 3655 */ {I_VPSHAQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39619, 206}, + /* 3656 */ {I_VPSHAQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39626, 206}, + /* 3657 */ {I_VPSHAW, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39633, 206}, + /* 3658 */ {I_VPSHAW, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39640, 206}, + /* 3659 */ {I_VPSHAW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39647, 206}, + /* 3660 */ {I_VPSHAW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39654, 206}, + /* 3661 */ {I_VPSHLB, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39661, 206}, + /* 3662 */ {I_VPSHLB, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39668, 206}, + /* 3663 */ {I_VPSHLB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39675, 206}, + /* 3664 */ {I_VPSHLB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39682, 206}, + /* 3665 */ {I_VPSHLD, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39689, 206}, + /* 3666 */ {I_VPSHLD, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39696, 206}, + /* 3667 */ {I_VPSHLD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39703, 206}, + /* 3668 */ {I_VPSHLD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39710, 206}, + /* 3669 */ {I_VPSHLQ, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39717, 206}, + /* 3670 */ {I_VPSHLQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39724, 206}, + /* 3671 */ {I_VPSHLQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39731, 206}, + /* 3672 */ {I_VPSHLQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39738, 206}, + /* 3673 */ {I_VPSHLW, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+39745, 206}, + /* 3674 */ {I_VPSHLW, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+39752, 206}, + /* 3675 */ {I_VPSHLW, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+39759, 206}, + /* 3676 */ {I_VPSHLW, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39766, 206}, + /* 3677 */ {I_VMPSADBW, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15808, 207}, + /* 3678 */ {I_VMPSADBW, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15816, 207}, + /* 3679 */ {I_VPABSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39773, 207}, + /* 3680 */ {I_VPABSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39780, 207}, + /* 3681 */ {I_VPABSD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39787, 207}, + /* 3682 */ {I_VPACKSSWB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39794, 207}, + /* 3683 */ {I_VPACKSSWB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39801, 207}, + /* 3684 */ {I_VPACKSSDW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39808, 207}, + /* 3685 */ {I_VPACKSSDW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39815, 207}, + /* 3686 */ {I_VPACKUSDW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39822, 207}, + /* 3687 */ {I_VPACKUSDW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39829, 207}, + /* 3688 */ {I_VPACKUSWB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39836, 207}, + /* 3689 */ {I_VPACKUSWB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39843, 207}, + /* 3690 */ {I_VPADDB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39850, 207}, + /* 3691 */ {I_VPADDB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39857, 207}, + /* 3692 */ {I_VPADDW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39864, 207}, + /* 3693 */ {I_VPADDW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39871, 207}, + /* 3694 */ {I_VPADDD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39878, 207}, + /* 3695 */ {I_VPADDD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39885, 207}, + /* 3696 */ {I_VPADDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39892, 207}, + /* 3697 */ {I_VPADDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39899, 207}, + /* 3698 */ {I_VPADDSB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39906, 207}, + /* 3699 */ {I_VPADDSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39913, 207}, + /* 3700 */ {I_VPADDSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39920, 207}, + /* 3701 */ {I_VPADDSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39927, 207}, + /* 3702 */ {I_VPADDUSB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39934, 207}, + /* 3703 */ {I_VPADDUSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39941, 207}, + /* 3704 */ {I_VPADDUSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39948, 207}, + /* 3705 */ {I_VPADDUSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39955, 207}, + /* 3706 */ {I_VPALIGNR, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15824, 207}, + /* 3707 */ {I_VPALIGNR, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15832, 207}, + /* 3708 */ {I_VPAND, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39962, 207}, + /* 3709 */ {I_VPAND, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39969, 207}, + /* 3710 */ {I_VPANDN, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39976, 207}, + /* 3711 */ {I_VPANDN, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39983, 207}, + /* 3712 */ {I_VPAVGB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+39990, 207}, + /* 3713 */ {I_VPAVGB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+39997, 207}, + /* 3714 */ {I_VPAVGW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40004, 207}, + /* 3715 */ {I_VPAVGW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40011, 207}, + /* 3716 */ {I_VPBLENDVB, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0}, NO_DECORATOR, nasm_bytecodes+15840, 207}, + /* 3717 */ {I_VPBLENDVB, 3, {YMM_L16,RM_YMM_L16|BITS256,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+15848, 207}, + /* 3718 */ {I_VPBLENDW, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+15856, 207}, + /* 3719 */ {I_VPBLENDW, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15864, 207}, + /* 3720 */ {I_VPCMPEQB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40018, 207}, + /* 3721 */ {I_VPCMPEQB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40025, 207}, + /* 3722 */ {I_VPCMPEQW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40032, 207}, + /* 3723 */ {I_VPCMPEQW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40039, 207}, + /* 3724 */ {I_VPCMPEQD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40046, 207}, + /* 3725 */ {I_VPCMPEQD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40053, 207}, + /* 3726 */ {I_VPCMPEQQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40060, 207}, + /* 3727 */ {I_VPCMPEQQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40067, 207}, + /* 3728 */ {I_VPCMPGTB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40074, 207}, + /* 3729 */ {I_VPCMPGTB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40081, 207}, + /* 3730 */ {I_VPCMPGTW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40088, 207}, + /* 3731 */ {I_VPCMPGTW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40095, 207}, + /* 3732 */ {I_VPCMPGTD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40102, 207}, + /* 3733 */ {I_VPCMPGTD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40109, 207}, + /* 3734 */ {I_VPCMPGTQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40116, 207}, + /* 3735 */ {I_VPCMPGTQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40123, 207}, + /* 3736 */ {I_VPHADDW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40130, 207}, + /* 3737 */ {I_VPHADDW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40137, 207}, + /* 3738 */ {I_VPHADDD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40144, 207}, + /* 3739 */ {I_VPHADDD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40151, 207}, + /* 3740 */ {I_VPHADDSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40158, 207}, + /* 3741 */ {I_VPHADDSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40165, 207}, + /* 3742 */ {I_VPHSUBW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40172, 207}, + /* 3743 */ {I_VPHSUBW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40179, 207}, + /* 3744 */ {I_VPHSUBD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40186, 207}, + /* 3745 */ {I_VPHSUBD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40193, 207}, + /* 3746 */ {I_VPHSUBSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40200, 207}, + /* 3747 */ {I_VPHSUBSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40207, 207}, + /* 3748 */ {I_VPMADDUBSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40214, 207}, + /* 3749 */ {I_VPMADDUBSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40221, 207}, + /* 3750 */ {I_VPMADDWD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40228, 207}, + /* 3751 */ {I_VPMADDWD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40235, 207}, + /* 3752 */ {I_VPMAXSB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40242, 207}, + /* 3753 */ {I_VPMAXSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40249, 207}, + /* 3754 */ {I_VPMAXSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40256, 207}, + /* 3755 */ {I_VPMAXSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40263, 207}, + /* 3756 */ {I_VPMAXSD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40270, 207}, + /* 3757 */ {I_VPMAXSD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40277, 207}, + /* 3758 */ {I_VPMAXUB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40284, 207}, + /* 3759 */ {I_VPMAXUB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40291, 207}, + /* 3760 */ {I_VPMAXUW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40298, 207}, + /* 3761 */ {I_VPMAXUW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40305, 207}, + /* 3762 */ {I_VPMAXUD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40312, 207}, + /* 3763 */ {I_VPMAXUD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40319, 207}, + /* 3764 */ {I_VPMINSB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40326, 207}, + /* 3765 */ {I_VPMINSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40333, 207}, + /* 3766 */ {I_VPMINSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40340, 207}, + /* 3767 */ {I_VPMINSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40347, 207}, + /* 3768 */ {I_VPMINSD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40354, 207}, + /* 3769 */ {I_VPMINSD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40361, 207}, + /* 3770 */ {I_VPMINUB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40368, 207}, + /* 3771 */ {I_VPMINUB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40375, 207}, + /* 3772 */ {I_VPMINUW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40382, 207}, + /* 3773 */ {I_VPMINUW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40389, 207}, + /* 3774 */ {I_VPMINUD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40396, 207}, + /* 3775 */ {I_VPMINUD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40403, 207}, + /* 3776 */ {I_VPMOVMSKB, 2, {REG_GPR|BITS32,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40410, 207}, + /* 3777 */ {I_VPMOVMSKB, 2, {REG_GPR|BITS64,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40410, 207}, + /* 3778 */ {I_VPMOVSXBW, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40417, 207}, + /* 3779 */ {I_VPMOVSXBD, 2, {YMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+40424, 207}, + /* 3780 */ {I_VPMOVSXBD, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40424, 207}, + /* 3781 */ {I_VPMOVSXBQ, 2, {YMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+40431, 207}, + /* 3782 */ {I_VPMOVSXBQ, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40431, 207}, + /* 3783 */ {I_VPMOVSXWD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40438, 207}, + /* 3784 */ {I_VPMOVSXWQ, 2, {YMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+40445, 207}, + /* 3785 */ {I_VPMOVSXWQ, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40445, 207}, + /* 3786 */ {I_VPMOVSXDQ, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40452, 207}, + /* 3787 */ {I_VPMOVZXBW, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40459, 207}, + /* 3788 */ {I_VPMOVZXBD, 2, {YMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+40466, 207}, + /* 3789 */ {I_VPMOVZXBD, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40466, 207}, + /* 3790 */ {I_VPMOVZXBQ, 2, {YMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+40473, 207}, + /* 3791 */ {I_VPMOVZXBQ, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40473, 207}, + /* 3792 */ {I_VPMOVZXWD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40480, 207}, + /* 3793 */ {I_VPMOVZXWQ, 2, {YMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+40487, 207}, + /* 3794 */ {I_VPMOVZXWQ, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+40487, 207}, + /* 3795 */ {I_VPMOVZXDQ, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40494, 207}, + /* 3796 */ {I_VPMULDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40501, 207}, + /* 3797 */ {I_VPMULDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40508, 207}, + /* 3798 */ {I_VPMULHRSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40515, 207}, + /* 3799 */ {I_VPMULHRSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40522, 207}, + /* 3800 */ {I_VPMULHUW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40529, 207}, + /* 3801 */ {I_VPMULHUW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40536, 207}, + /* 3802 */ {I_VPMULHW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40543, 207}, + /* 3803 */ {I_VPMULHW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40550, 207}, + /* 3804 */ {I_VPMULLW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40557, 207}, + /* 3805 */ {I_VPMULLW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40564, 207}, + /* 3806 */ {I_VPMULLD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40571, 207}, + /* 3807 */ {I_VPMULLD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40578, 207}, + /* 3808 */ {I_VPMULUDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40585, 207}, + /* 3809 */ {I_VPMULUDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40592, 207}, + /* 3810 */ {I_VPOR, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40599, 207}, + /* 3811 */ {I_VPOR, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40606, 207}, + /* 3812 */ {I_VPSADBW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40613, 207}, + /* 3813 */ {I_VPSADBW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40620, 207}, + /* 3814 */ {I_VPSHUFB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40627, 207}, + /* 3815 */ {I_VPSHUFB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40634, 207}, + /* 3816 */ {I_VPSHUFD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15872, 207}, + /* 3817 */ {I_VPSHUFHW, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15880, 207}, + /* 3818 */ {I_VPSHUFLW, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15888, 207}, + /* 3819 */ {I_VPSIGNB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40641, 207}, + /* 3820 */ {I_VPSIGNB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40648, 207}, + /* 3821 */ {I_VPSIGNW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40655, 207}, + /* 3822 */ {I_VPSIGNW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40662, 207}, + /* 3823 */ {I_VPSIGND, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40669, 207}, + /* 3824 */ {I_VPSIGND, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40676, 207}, + /* 3825 */ {I_VPSLLDQ, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15896, 207}, + /* 3826 */ {I_VPSLLDQ, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15904, 207}, + /* 3827 */ {I_VPSLLW, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40683, 207}, + /* 3828 */ {I_VPSLLW, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40690, 207}, + /* 3829 */ {I_VPSLLW, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15912, 207}, + /* 3830 */ {I_VPSLLW, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15920, 207}, + /* 3831 */ {I_VPSLLD, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40697, 207}, + /* 3832 */ {I_VPSLLD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40704, 207}, + /* 3833 */ {I_VPSLLD, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15928, 207}, + /* 3834 */ {I_VPSLLD, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15936, 207}, + /* 3835 */ {I_VPSLLQ, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40711, 207}, + /* 3836 */ {I_VPSLLQ, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40718, 207}, + /* 3837 */ {I_VPSLLQ, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15944, 207}, + /* 3838 */ {I_VPSLLQ, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15952, 207}, + /* 3839 */ {I_VPSRAW, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40725, 207}, + /* 3840 */ {I_VPSRAW, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40732, 207}, + /* 3841 */ {I_VPSRAW, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15960, 207}, + /* 3842 */ {I_VPSRAW, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15968, 207}, + /* 3843 */ {I_VPSRAD, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40739, 207}, + /* 3844 */ {I_VPSRAD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40746, 207}, + /* 3845 */ {I_VPSRAD, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15976, 207}, + /* 3846 */ {I_VPSRAD, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+15984, 207}, + /* 3847 */ {I_VPSRLDQ, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+15992, 207}, + /* 3848 */ {I_VPSRLDQ, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+16000, 207}, + /* 3849 */ {I_VPSRLW, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40753, 207}, + /* 3850 */ {I_VPSRLW, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40760, 207}, + /* 3851 */ {I_VPSRLW, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16008, 207}, + /* 3852 */ {I_VPSRLW, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+16016, 207}, + /* 3853 */ {I_VPSRLD, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40767, 207}, + /* 3854 */ {I_VPSRLD, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40774, 207}, + /* 3855 */ {I_VPSRLD, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16024, 207}, + /* 3856 */ {I_VPSRLD, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+16032, 207}, + /* 3857 */ {I_VPSRLQ, 3, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+40781, 207}, + /* 3858 */ {I_VPSRLQ, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+40788, 207}, + /* 3859 */ {I_VPSRLQ, 3, {YMM_L16,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16040, 207}, + /* 3860 */ {I_VPSRLQ, 2, {YMM_L16,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+16048, 207}, + /* 3861 */ {I_VPSUBB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40795, 207}, + /* 3862 */ {I_VPSUBB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40802, 207}, + /* 3863 */ {I_VPSUBW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40809, 207}, + /* 3864 */ {I_VPSUBW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40816, 207}, + /* 3865 */ {I_VPSUBD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40823, 207}, + /* 3866 */ {I_VPSUBD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40830, 207}, + /* 3867 */ {I_VPSUBQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40837, 207}, + /* 3868 */ {I_VPSUBQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40844, 207}, + /* 3869 */ {I_VPSUBSB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40851, 207}, + /* 3870 */ {I_VPSUBSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40858, 207}, + /* 3871 */ {I_VPSUBSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40865, 207}, + /* 3872 */ {I_VPSUBSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40872, 207}, + /* 3873 */ {I_VPSUBUSB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40879, 207}, + /* 3874 */ {I_VPSUBUSB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40886, 207}, + /* 3875 */ {I_VPSUBUSW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40893, 207}, + /* 3876 */ {I_VPSUBUSW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40900, 207}, + /* 3877 */ {I_VPUNPCKHBW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40907, 207}, + /* 3878 */ {I_VPUNPCKHBW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40914, 207}, + /* 3879 */ {I_VPUNPCKHWD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40921, 207}, + /* 3880 */ {I_VPUNPCKHWD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40928, 207}, + /* 3881 */ {I_VPUNPCKHDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40935, 207}, + /* 3882 */ {I_VPUNPCKHDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40942, 207}, + /* 3883 */ {I_VPUNPCKHQDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40949, 207}, + /* 3884 */ {I_VPUNPCKHQDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40956, 207}, + /* 3885 */ {I_VPUNPCKLBW, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40963, 207}, + /* 3886 */ {I_VPUNPCKLBW, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40970, 207}, + /* 3887 */ {I_VPUNPCKLWD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40977, 207}, + /* 3888 */ {I_VPUNPCKLWD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40984, 207}, + /* 3889 */ {I_VPUNPCKLDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+40991, 207}, + /* 3890 */ {I_VPUNPCKLDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+40998, 207}, + /* 3891 */ {I_VPUNPCKLQDQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41005, 207}, + /* 3892 */ {I_VPUNPCKLQDQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41012, 207}, + /* 3893 */ {I_VPXOR, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41019, 207}, + /* 3894 */ {I_VPXOR, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41026, 207}, + /* 3895 */ {I_VMOVNTDQA, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41033, 207}, + /* 3896 */ {I_VBROADCASTSS, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35244, 207}, + /* 3897 */ {I_VBROADCASTSS, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35251, 207}, + /* 3898 */ {I_VBROADCASTSD, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+35258, 207}, + /* 3899 */ {I_VBROADCASTI128, 2, {YMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41040, 207}, + /* 3900 */ {I_VPBLENDD, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+16056, 207}, + /* 3901 */ {I_VPBLENDD, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16064, 207}, + /* 3902 */ {I_VPBLENDD, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+16072, 207}, + /* 3903 */ {I_VPBLENDD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16080, 207}, + /* 3904 */ {I_VPBROADCASTB, 2, {XMM_L16,MEMORY|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+41047, 207}, + /* 3905 */ {I_VPBROADCASTB, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41047, 207}, + /* 3906 */ {I_VPBROADCASTB, 2, {YMM_L16,MEMORY|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+41054, 207}, + /* 3907 */ {I_VPBROADCASTB, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41054, 207}, + /* 3908 */ {I_VPBROADCASTW, 2, {XMM_L16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41061, 207}, + /* 3909 */ {I_VPBROADCASTW, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41061, 207}, + /* 3910 */ {I_VPBROADCASTW, 2, {YMM_L16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41068, 207}, + /* 3911 */ {I_VPBROADCASTW, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41068, 207}, + /* 3912 */ {I_VPBROADCASTD, 2, {XMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41075, 207}, + /* 3913 */ {I_VPBROADCASTD, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41075, 207}, + /* 3914 */ {I_VPBROADCASTD, 2, {YMM_L16,MEMORY|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41082, 207}, + /* 3915 */ {I_VPBROADCASTD, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41082, 207}, + /* 3916 */ {I_VPBROADCASTQ, 2, {XMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41089, 207}, + /* 3917 */ {I_VPBROADCASTQ, 2, {XMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41089, 207}, + /* 3918 */ {I_VPBROADCASTQ, 2, {YMM_L16,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41096, 207}, + /* 3919 */ {I_VPBROADCASTQ, 2, {YMM_L16,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41096, 207}, + /* 3920 */ {I_VPERMD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41103, 207}, + /* 3921 */ {I_VPERMD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41110, 207}, + /* 3922 */ {I_VPERMPD, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16088, 207}, + /* 3923 */ {I_VPERMPS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41117, 207}, + /* 3924 */ {I_VPERMPS, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41124, 207}, + /* 3925 */ {I_VPERMQ, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16096, 207}, + /* 3926 */ {I_VPERM2I128, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+16104, 207}, + /* 3927 */ {I_VPERM2I128, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16112, 207}, + /* 3928 */ {I_VEXTRACTI128, 3, {RM_XMM_L16|BITS128,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16120, 207}, + /* 3929 */ {I_VINSERTI128, 4, {YMM_L16,YMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+16128, 207}, + /* 3930 */ {I_VINSERTI128, 3, {YMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16136, 207}, + /* 3931 */ {I_VPMASKMOVD, 3, {XMM_L16,XMM_L16,MEMORY|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41131, 207}, + /* 3932 */ {I_VPMASKMOVD, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41138, 207}, + /* 3933 */ {I_VPMASKMOVD, 3, {YMM_L16,YMM_L16,MEMORY|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41145, 207}, + /* 3934 */ {I_VPMASKMOVD, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41152, 207}, + /* 3935 */ {I_VPMASKMOVQ, 3, {XMM_L16,XMM_L16,MEMORY|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41159, 207}, + /* 3936 */ {I_VPMASKMOVQ, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41166, 207}, + /* 3937 */ {I_VPMASKMOVQ, 3, {YMM_L16,YMM_L16,MEMORY|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41173, 207}, + /* 3938 */ {I_VPMASKMOVQ, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41180, 207}, + /* 3939 */ {I_VPMASKMOVD, 3, {MEMORY|BITS128,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+41187, 207}, + /* 3940 */ {I_VPMASKMOVD, 2, {MEMORY|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41194, 207}, + /* 3941 */ {I_VPMASKMOVD, 3, {MEMORY|BITS256,YMM_L16,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+41201, 207}, + /* 3942 */ {I_VPMASKMOVD, 2, {MEMORY|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41208, 207}, + /* 3943 */ {I_VPMASKMOVQ, 3, {MEMORY|BITS128,XMM_L16,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+41215, 207}, + /* 3944 */ {I_VPMASKMOVQ, 2, {MEMORY|BITS128,XMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41222, 207}, + /* 3945 */ {I_VPMASKMOVQ, 3, {MEMORY|BITS256,YMM_L16,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+41229, 207}, + /* 3946 */ {I_VPMASKMOVQ, 2, {MEMORY|BITS256,YMM_L16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41236, 207}, + /* 3947 */ {I_VPSLLVD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41243, 207}, + /* 3948 */ {I_VPSLLVD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41250, 207}, + /* 3949 */ {I_VPSLLVQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41257, 207}, + /* 3950 */ {I_VPSLLVQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41264, 207}, + /* 3951 */ {I_VPSLLVD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41271, 207}, + /* 3952 */ {I_VPSLLVD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41278, 207}, + /* 3953 */ {I_VPSLLVQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41285, 207}, + /* 3954 */ {I_VPSLLVQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41292, 207}, + /* 3955 */ {I_VPSRAVD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41299, 207}, + /* 3956 */ {I_VPSRAVD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41306, 207}, + /* 3957 */ {I_VPSRAVD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41313, 207}, + /* 3958 */ {I_VPSRAVD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41320, 207}, + /* 3959 */ {I_VPSRLVD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41327, 207}, + /* 3960 */ {I_VPSRLVD, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41334, 207}, + /* 3961 */ {I_VPSRLVQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41341, 207}, + /* 3962 */ {I_VPSRLVQ, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41348, 207}, + /* 3963 */ {I_VPSRLVD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41355, 207}, + /* 3964 */ {I_VPSRLVD, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41362, 207}, + /* 3965 */ {I_VPSRLVQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41369, 207}, + /* 3966 */ {I_VPSRLVQ, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41376, 207}, + /* 3967 */ {I_VGATHERDPD, 3, {XMM_L16,XMEM|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16144, 207}, + /* 3968 */ {I_VGATHERQPD, 3, {XMM_L16,XMEM|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16152, 207}, + /* 3969 */ {I_VGATHERDPD, 3, {YMM_L16,XMEM|BITS64,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16160, 207}, + /* 3970 */ {I_VGATHERQPD, 3, {YMM_L16,YMEM|BITS64,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16168, 207}, + /* 3971 */ {I_VGATHERDPS, 3, {XMM_L16,XMEM|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16176, 207}, + /* 3972 */ {I_VGATHERQPS, 3, {XMM_L16,XMEM|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16184, 207}, + /* 3973 */ {I_VGATHERDPS, 3, {YMM_L16,YMEM|BITS32,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16192, 207}, + /* 3974 */ {I_VGATHERQPS, 3, {XMM_L16,YMEM|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16200, 207}, + /* 3975 */ {I_VPGATHERDD, 3, {XMM_L16,XMEM|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16208, 207}, + /* 3976 */ {I_VPGATHERQD, 3, {XMM_L16,XMEM|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16216, 207}, + /* 3977 */ {I_VPGATHERDD, 3, {YMM_L16,YMEM|BITS32,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16224, 207}, + /* 3978 */ {I_VPGATHERQD, 3, {XMM_L16,YMEM|BITS32,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16232, 207}, + /* 3979 */ {I_VPGATHERDQ, 3, {XMM_L16,XMEM|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16240, 207}, + /* 3980 */ {I_VPGATHERQQ, 3, {XMM_L16,XMEM|BITS64,XMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16248, 207}, + /* 3981 */ {I_VPGATHERDQ, 3, {YMM_L16,XMEM|BITS64,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16256, 207}, + /* 3982 */ {I_VPGATHERQQ, 3, {YMM_L16,YMEM|BITS64,YMM_L16,0,0}, NO_DECORATOR, nasm_bytecodes+16264, 207}, + /* 3983 */ {I_XABORT, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49162, 208}, + /* 3984 */ {I_XABORT, 1, {IMMEDIATE|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49162, 208}, + /* 3985 */ {I_XBEGIN, 1, {IMMEDIATE,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45855, 208}, + /* 3986 */ {I_XBEGIN, 1, {IMMEDIATE|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45861, 209}, + /* 3987 */ {I_XBEGIN, 1, {IMMEDIATE|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45867, 209}, + /* 3988 */ {I_XBEGIN, 1, {IMMEDIATE|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45873, 210}, + /* 3989 */ {I_XEND, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49167, 208}, + /* 3990 */ {I_XTEST, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49172, 211}, + /* 3991 */ {I_ANDN, 3, {REG_GPR|BITS32,REG_GPR|BITS32,RM_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41383, 212}, + /* 3992 */ {I_ANDN, 3, {REG_GPR|BITS64,REG_GPR|BITS64,RM_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41390, 213}, + /* 3993 */ {I_BEXTR, 3, {REG_GPR|BITS32,RM_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41397, 212}, + /* 3994 */ {I_BEXTR, 3, {REG_GPR|BITS64,RM_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41404, 213}, + /* 3995 */ {I_BEXTR, 3, {REG_GPR|BITS32,RM_GPR|BITS32,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+16272, 214}, + /* 3996 */ {I_BEXTR, 3, {REG_GPR|BITS64,RM_GPR|BITS64,IMMEDIATE|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+16280, 215}, + /* 3997 */ {I_BLCI, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41411, 214}, + /* 3998 */ {I_BLCI, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41418, 215}, + /* 3999 */ {I_BLCIC, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41425, 214}, + /* 4000 */ {I_BLCIC, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41432, 215}, + /* 4001 */ {I_BLSI, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41439, 212}, + /* 4002 */ {I_BLSI, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41446, 213}, + /* 4003 */ {I_BLSIC, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41453, 214}, + /* 4004 */ {I_BLSIC, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41460, 215}, + /* 4005 */ {I_BLCFILL, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41467, 214}, + /* 4006 */ {I_BLCFILL, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41474, 215}, + /* 4007 */ {I_BLSFILL, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41481, 214}, + /* 4008 */ {I_BLSFILL, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41488, 215}, + /* 4009 */ {I_BLCMSK, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41495, 214}, + /* 4010 */ {I_BLCMSK, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41502, 215}, + /* 4011 */ {I_BLSMSK, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41509, 212}, + /* 4012 */ {I_BLSMSK, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41516, 213}, + /* 4013 */ {I_BLSR, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41523, 212}, + /* 4014 */ {I_BLSR, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41530, 213}, + /* 4015 */ {I_BLCS, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41537, 214}, + /* 4016 */ {I_BLCS, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41544, 215}, + /* 4017 */ {I_BZHI, 3, {REG_GPR|BITS32,RM_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41551, 216}, + /* 4018 */ {I_BZHI, 3, {REG_GPR|BITS64,RM_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41558, 217}, + /* 4019 */ {I_MULX, 3, {REG_GPR|BITS32,REG_GPR|BITS32,RM_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41565, 216}, + /* 4020 */ {I_MULX, 3, {REG_GPR|BITS64,REG_GPR|BITS64,RM_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41572, 217}, + /* 4021 */ {I_PDEP, 3, {REG_GPR|BITS32,REG_GPR|BITS32,RM_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41579, 216}, + /* 4022 */ {I_PDEP, 3, {REG_GPR|BITS64,REG_GPR|BITS64,RM_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41586, 217}, + /* 4023 */ {I_PEXT, 3, {REG_GPR|BITS32,REG_GPR|BITS32,RM_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41593, 216}, + /* 4024 */ {I_PEXT, 3, {REG_GPR|BITS64,REG_GPR|BITS64,RM_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41600, 217}, + /* 4025 */ {I_RORX, 3, {REG_GPR|BITS32,RM_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16288, 216}, + /* 4026 */ {I_RORX, 3, {REG_GPR|BITS64,RM_GPR|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16296, 217}, + /* 4027 */ {I_SARX, 3, {REG_GPR|BITS32,RM_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41607, 216}, + /* 4028 */ {I_SARX, 3, {REG_GPR|BITS64,RM_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41614, 217}, + /* 4029 */ {I_SHLX, 3, {REG_GPR|BITS32,RM_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41621, 216}, + /* 4030 */ {I_SHLX, 3, {REG_GPR|BITS64,RM_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41628, 217}, + /* 4031 */ {I_SHRX, 3, {REG_GPR|BITS32,RM_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+41635, 216}, + /* 4032 */ {I_SHRX, 3, {REG_GPR|BITS64,RM_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+41642, 217}, + /* 4033 */ {I_TZCNT, 2, {REG_GPR|BITS16,RM_GPR|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41649, 218}, + /* 4034 */ {I_TZCNT, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41656, 218}, + /* 4035 */ {I_TZCNT, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41663, 219}, + /* 4036 */ {I_TZMSK, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41670, 214}, + /* 4037 */ {I_TZMSK, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41677, 215}, + /* 4038 */ {I_T1MSKC, 2, {REG_GPR|BITS32,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41684, 214}, + /* 4039 */ {I_T1MSKC, 2, {REG_GPR|BITS64,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41691, 215}, + /* 4040 */ {I_PREFETCHWT1, 1, {MEMORY|BITS8,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49177, 220}, + /* 4041 */ {I_BNDMK, 2, {BNDREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45879, 221}, + /* 4042 */ {I_BNDCL, 2, {BNDREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+41699, 222}, + /* 4043 */ {I_BNDCL, 2, {BNDREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41699, 223}, + /* 4044 */ {I_BNDCL, 2, {BNDREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41698, 224}, + /* 4045 */ {I_BNDCU, 2, {BNDREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+41706, 222}, + /* 4046 */ {I_BNDCU, 2, {BNDREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41706, 223}, + /* 4047 */ {I_BNDCU, 2, {BNDREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41705, 224}, + /* 4048 */ {I_BNDCN, 2, {BNDREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+41713, 222}, + /* 4049 */ {I_BNDCN, 2, {BNDREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+41713, 223}, + /* 4050 */ {I_BNDCN, 2, {BNDREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+41712, 224}, + /* 4051 */ {I_BNDMOV, 2, {BNDREG,BNDREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+45885, 222}, + /* 4052 */ {I_BNDMOV, 2, {BNDREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45885, 222}, + /* 4053 */ {I_BNDMOV, 2, {BNDREG,BNDREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+45891, 222}, + /* 4054 */ {I_BNDMOV, 2, {MEMORY,BNDREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+45891, 222}, + /* 4055 */ {I_BNDLDX, 2, {BNDREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+45886, 221}, + /* 4056 */ {I_BNDLDX, 3, {BNDREG,MEMORY,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+45897, 225}, + /* 4057 */ {I_BNDLDX, 3, {BNDREG,MEMORY,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+45897, 226}, + /* 4058 */ {I_BNDSTX, 2, {MEMORY,BNDREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+45892, 221}, + /* 4059 */ {I_BNDSTX, 3, {MEMORY,REG_GPR|BITS32,BNDREG,0,0}, NO_DECORATOR, nasm_bytecodes+45903, 225}, + /* 4060 */ {I_BNDSTX, 3, {MEMORY,REG_GPR|BITS64,BNDREG,0,0}, NO_DECORATOR, nasm_bytecodes+45903, 226}, + /* 4061 */ {I_BNDSTX, 3, {MEMORY,BNDREG,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+45909, 225}, + /* 4062 */ {I_BNDSTX, 3, {MEMORY,BNDREG,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+45909, 226}, + /* 4063 */ {I_SHA1MSG1, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45915, 227}, + /* 4064 */ {I_SHA1MSG2, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45921, 227}, + /* 4065 */ {I_SHA1NEXTE, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45927, 227}, + /* 4066 */ {I_SHA1RNDS4, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+41719, 227}, + /* 4067 */ {I_SHA256MSG1, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45933, 227}, + /* 4068 */ {I_SHA256MSG2, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45939, 227}, + /* 4069 */ {I_SHA256RNDS2, 3, {XMM_L16,RM_XMM_L16|BITS128,XMM0,0,0}, NO_DECORATOR, nasm_bytecodes+45945, 227}, + /* 4070 */ {I_SHA256RNDS2, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+45945, 227}, + /* 4071 */ {I_VBCSTNEBF16PS, 2, {XMM_L16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41726, 228}, + /* 4072 */ {I_VBCSTNEBF16PS, 2, {YMM_L16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41733, 228}, + /* 4073 */ {I_VBCSTNESH2PS, 2, {XMM_L16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41740, 228}, + /* 4074 */ {I_VBCSTNESH2PS, 2, {YMM_L16,MEMORY|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+41747, 228}, + /* 4075 */ {I_VCVTNEEBF162PS, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41754, 229}, + /* 4076 */ {I_VCVTNEEBF162PS, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41761, 230}, + /* 4077 */ {I_VCVTNEEPH2PS, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41768, 229}, + /* 4078 */ {I_VCVTNEEPH2PS, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41775, 230}, + /* 4079 */ {I_VCVTNEOBF162PS, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41782, 229}, + /* 4080 */ {I_VCVTNEOBF162PS, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41789, 230}, + /* 4081 */ {I_VCVTNEOPH2PS, 2, {XMM_L16,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41796, 229}, + /* 4082 */ {I_VCVTNEOPH2PS, 2, {YMM_L16,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41803, 230}, + /* 4083 */ {I_VCVTNEPS2BF16, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+41810, 229}, + /* 4084 */ {I_VCVTNEPS2BF16, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+41817, 230}, + /* 4085 */ {I_VPDPBSSD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41824, 231}, + /* 4086 */ {I_VPDPBSSD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41831, 232}, + /* 4087 */ {I_VPDPBSSDS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41838, 231}, + /* 4088 */ {I_VPDPBSSDS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41845, 232}, + /* 4089 */ {I_VPDPBSUD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41852, 231}, + /* 4090 */ {I_VPDPBSUD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41859, 232}, + /* 4091 */ {I_VPDPBSUDS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41866, 231}, + /* 4092 */ {I_VPDPBSUDS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41873, 232}, + /* 4093 */ {I_VPDPBUUD, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41880, 231}, + /* 4094 */ {I_VPDPBUUD, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41887, 232}, + /* 4095 */ {I_VPDPBUUDS, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41894, 231}, + /* 4096 */ {I_VPDPBUUDS, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41901, 232}, + /* 4097 */ {I_VPMADD52HUQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41908, 233}, + /* 4098 */ {I_VPMADD52HUQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41915, 234}, + /* 4099 */ {I_VPMADD52LUQ, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+41922, 233}, + /* 4100 */ {I_VPMADD52LUQ, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+41929, 234}, + /* 4101 */ {I_KADDB, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41936, 235}, + /* 4102 */ {I_KADDD, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41943, 235}, + /* 4103 */ {I_KADDQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41950, 235}, + /* 4104 */ {I_KADDW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41957, 235}, + /* 4105 */ {I_KANDB, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41964, 235}, + /* 4106 */ {I_KANDD, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41971, 235}, + /* 4107 */ {I_KANDNB, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41978, 235}, + /* 4108 */ {I_KANDND, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41985, 235}, + /* 4109 */ {I_KANDNQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41992, 235}, + /* 4110 */ {I_KANDNW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+41999, 235}, + /* 4111 */ {I_KANDQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42006, 235}, + /* 4112 */ {I_KANDW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42013, 235}, + /* 4113 */ {I_KMOVB, 2, {KREG,RM_K|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+42020, 235}, + /* 4114 */ {I_KMOVB, 2, {MEMORY|BITS8,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42027, 235}, + /* 4115 */ {I_KMOVB, 2, {KREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42034, 235}, + /* 4116 */ {I_KMOVB, 2, {REG_GPR|BITS32,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42041, 235}, + /* 4117 */ {I_KMOVD, 2, {KREG,RM_K|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42048, 235}, + /* 4118 */ {I_KMOVD, 2, {MEMORY|BITS32,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42055, 235}, + /* 4119 */ {I_KMOVD, 2, {KREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42062, 235}, + /* 4120 */ {I_KMOVD, 2, {REG_GPR|BITS32,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42069, 235}, + /* 4121 */ {I_KMOVQ, 2, {KREG,RM_K|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42076, 235}, + /* 4122 */ {I_KMOVQ, 2, {MEMORY|BITS64,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42083, 235}, + /* 4123 */ {I_KMOVQ, 2, {KREG,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42090, 235}, + /* 4124 */ {I_KMOVQ, 2, {REG_GPR|BITS64,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42097, 235}, + /* 4125 */ {I_KMOVW, 2, {KREG,RM_K|BITS16,0,0,0}, NO_DECORATOR, nasm_bytecodes+42104, 235}, + /* 4126 */ {I_KMOVW, 2, {MEMORY|BITS16,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42111, 235}, + /* 4127 */ {I_KMOVW, 2, {KREG,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42118, 235}, + /* 4128 */ {I_KMOVW, 2, {REG_GPR|BITS32,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42125, 235}, + /* 4129 */ {I_KNOTB, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42132, 235}, + /* 4130 */ {I_KNOTD, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42139, 235}, + /* 4131 */ {I_KNOTQ, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42146, 235}, + /* 4132 */ {I_KNOTW, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42153, 235}, + /* 4133 */ {I_KORB, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42160, 235}, + /* 4134 */ {I_KORD, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42167, 235}, + /* 4135 */ {I_KORQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42174, 235}, + /* 4136 */ {I_KORW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42181, 235}, + /* 4137 */ {I_KORTESTB, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42188, 235}, + /* 4138 */ {I_KORTESTD, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42195, 235}, + /* 4139 */ {I_KORTESTQ, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42202, 235}, + /* 4140 */ {I_KORTESTW, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42209, 235}, + /* 4141 */ {I_KSHIFTLB, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16312, 235}, + /* 4142 */ {I_KSHIFTLD, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16320, 235}, + /* 4143 */ {I_KSHIFTLQ, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16328, 235}, + /* 4144 */ {I_KSHIFTLW, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16336, 235}, + /* 4145 */ {I_KSHIFTRB, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16344, 235}, + /* 4146 */ {I_KSHIFTRD, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16352, 235}, + /* 4147 */ {I_KSHIFTRQ, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16360, 235}, + /* 4148 */ {I_KSHIFTRW, 3, {KREG,KREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+16368, 235}, + /* 4149 */ {I_KTESTB, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42216, 235}, + /* 4150 */ {I_KTESTD, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42223, 235}, + /* 4151 */ {I_KTESTQ, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42230, 235}, + /* 4152 */ {I_KTESTW, 2, {KREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42237, 235}, + /* 4153 */ {I_KUNPCKBW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42244, 235}, + /* 4154 */ {I_KUNPCKDQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42251, 235}, + /* 4155 */ {I_KUNPCKWD, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42258, 235}, + /* 4156 */ {I_KXNORB, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42265, 235}, + /* 4157 */ {I_KXNORD, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42272, 235}, + /* 4158 */ {I_KXNORQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42279, 235}, + /* 4159 */ {I_KXNORW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42286, 235}, + /* 4160 */ {I_KXORB, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42293, 235}, + /* 4161 */ {I_KXORD, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42300, 235}, + /* 4162 */ {I_KXORQ, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42307, 235}, + /* 4163 */ {I_KXORW, 3, {KREG,KREG,KREG,0,0}, NO_DECORATOR, nasm_bytecodes+42314, 235}, + /* 4164 */ {I_VADDPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16376, 240}, + /* 4165 */ {I_VADDPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16384, 240}, + /* 4166 */ {I_VADDPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16392, 240}, + /* 4167 */ {I_VADDPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16400, 240}, + /* 4168 */ {I_VADDPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+16408, 241}, + /* 4169 */ {I_VADDPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+16416, 241}, + /* 4170 */ {I_VADDPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16424, 240}, + /* 4171 */ {I_VADDPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16432, 240}, + /* 4172 */ {I_VADDPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16440, 240}, + /* 4173 */ {I_VADDPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16448, 240}, + /* 4174 */ {I_VADDPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+16456, 241}, + /* 4175 */ {I_VADDPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+16464, 241}, + /* 4176 */ {I_VADDSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+16472, 241}, + /* 4177 */ {I_VADDSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+16480, 241}, + /* 4178 */ {I_VADDSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+16488, 241}, + /* 4179 */ {I_VADDSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+16496, 241}, + /* 4180 */ {I_VALIGND, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+8002, 240}, + /* 4181 */ {I_VALIGND, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8011, 240}, + /* 4182 */ {I_VALIGND, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+8020, 240}, + /* 4183 */ {I_VALIGND, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8029, 240}, + /* 4184 */ {I_VALIGND, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+8038, 241}, + /* 4185 */ {I_VALIGND, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8047, 241}, + /* 4186 */ {I_VALIGNQ, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+8056, 240}, + /* 4187 */ {I_VALIGNQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8065, 240}, + /* 4188 */ {I_VALIGNQ, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+8074, 240}, + /* 4189 */ {I_VALIGNQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8083, 240}, + /* 4190 */ {I_VALIGNQ, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+8092, 241}, + /* 4191 */ {I_VALIGNQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8101, 241}, + /* 4192 */ {I_VANDNPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16504, 242}, + /* 4193 */ {I_VANDNPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16512, 242}, + /* 4194 */ {I_VANDNPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16520, 242}, + /* 4195 */ {I_VANDNPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16528, 242}, + /* 4196 */ {I_VANDNPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16536, 243}, + /* 4197 */ {I_VANDNPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16544, 243}, + /* 4198 */ {I_VANDNPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16552, 242}, + /* 4199 */ {I_VANDNPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16560, 242}, + /* 4200 */ {I_VANDNPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16568, 242}, + /* 4201 */ {I_VANDNPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16576, 242}, + /* 4202 */ {I_VANDNPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16584, 243}, + /* 4203 */ {I_VANDNPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16592, 243}, + /* 4204 */ {I_VANDPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16600, 242}, + /* 4205 */ {I_VANDPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16608, 242}, + /* 4206 */ {I_VANDPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16616, 242}, + /* 4207 */ {I_VANDPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16624, 242}, + /* 4208 */ {I_VANDPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16632, 243}, + /* 4209 */ {I_VANDPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+16640, 243}, + /* 4210 */ {I_VANDPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16648, 242}, + /* 4211 */ {I_VANDPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16656, 242}, + /* 4212 */ {I_VANDPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16664, 242}, + /* 4213 */ {I_VANDPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16672, 242}, + /* 4214 */ {I_VANDPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16680, 243}, + /* 4215 */ {I_VANDPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+16688, 243}, + /* 4216 */ {I_VBLENDMPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16696, 240}, + /* 4217 */ {I_VBLENDMPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16704, 240}, + /* 4218 */ {I_VBLENDMPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+16712, 241}, + /* 4219 */ {I_VBLENDMPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16720, 240}, + /* 4220 */ {I_VBLENDMPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16728, 240}, + /* 4221 */ {I_VBLENDMPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+16736, 241}, + /* 4222 */ {I_VBROADCASTF32X2, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16744, 242}, + /* 4223 */ {I_VBROADCASTF32X2, 2, {ZMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16752, 243}, + /* 4224 */ {I_VBROADCASTF32X4, 2, {YMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16760, 240}, + /* 4225 */ {I_VBROADCASTF32X4, 2, {ZMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16768, 241}, + /* 4226 */ {I_VBROADCASTF32X8, 2, {ZMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16776, 243}, + /* 4227 */ {I_VBROADCASTF64X2, 2, {YMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16784, 242}, + /* 4228 */ {I_VBROADCASTF64X2, 2, {ZMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16792, 243}, + /* 4229 */ {I_VBROADCASTF64X4, 2, {ZMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16800, 241}, + /* 4230 */ {I_VBROADCASTI32X2, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16808, 242}, + /* 4231 */ {I_VBROADCASTI32X2, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16816, 242}, + /* 4232 */ {I_VBROADCASTI32X2, 2, {ZMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16824, 243}, + /* 4233 */ {I_VBROADCASTI32X4, 2, {YMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16832, 240}, + /* 4234 */ {I_VBROADCASTI32X4, 2, {ZMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16840, 241}, + /* 4235 */ {I_VBROADCASTI32X8, 2, {ZMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16848, 243}, + /* 4236 */ {I_VBROADCASTI64X2, 2, {YMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16856, 242}, + /* 4237 */ {I_VBROADCASTI64X2, 2, {ZMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16864, 243}, + /* 4238 */ {I_VBROADCASTI64X4, 2, {ZMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16872, 241}, + /* 4239 */ {I_VBROADCASTSD, 2, {YMMREG,MEMORY|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16880, 240}, + /* 4240 */ {I_VBROADCASTSD, 2, {ZMMREG,MEMORY|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16888, 241}, + /* 4241 */ {I_VBROADCASTSD, 2, {YMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16896, 240}, + /* 4242 */ {I_VBROADCASTSD, 2, {ZMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16904, 241}, + /* 4243 */ {I_VBROADCASTSS, 2, {XMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16912, 240}, + /* 4244 */ {I_VBROADCASTSS, 2, {YMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16920, 240}, + /* 4245 */ {I_VBROADCASTSS, 2, {ZMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16928, 241}, + /* 4246 */ {I_VBROADCASTSS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16936, 240}, + /* 4247 */ {I_VBROADCASTSS, 2, {YMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16944, 240}, + /* 4248 */ {I_VBROADCASTSS, 2, {ZMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+16952, 241}, + /* 4249 */ {I_VCMPEQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+240, 240}, + /* 4250 */ {I_VCMPEQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+250, 240}, + /* 4251 */ {I_VCMPEQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+260, 241}, + /* 4252 */ {I_VCMPEQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+270, 240}, + /* 4253 */ {I_VCMPEQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+280, 240}, + /* 4254 */ {I_VCMPEQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+290, 241}, + /* 4255 */ {I_VCMPEQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+300, 241}, + /* 4256 */ {I_VCMPEQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+310, 241}, + /* 4257 */ {I_VCMPEQ_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+240, 240}, + /* 4258 */ {I_VCMPEQ_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+250, 240}, + /* 4259 */ {I_VCMPEQ_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+260, 241}, + /* 4260 */ {I_VCMPEQ_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+270, 240}, + /* 4261 */ {I_VCMPEQ_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+280, 240}, + /* 4262 */ {I_VCMPEQ_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+290, 241}, + /* 4263 */ {I_VCMPEQ_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+300, 241}, + /* 4264 */ {I_VCMPEQ_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+310, 241}, + /* 4265 */ {I_VCMPLTPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+320, 240}, + /* 4266 */ {I_VCMPLTPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+330, 240}, + /* 4267 */ {I_VCMPLTPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+340, 241}, + /* 4268 */ {I_VCMPLTPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+350, 240}, + /* 4269 */ {I_VCMPLTPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+360, 240}, + /* 4270 */ {I_VCMPLTPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+370, 241}, + /* 4271 */ {I_VCMPLTSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+380, 241}, + /* 4272 */ {I_VCMPLTSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+390, 241}, + /* 4273 */ {I_VCMPLT_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+320, 240}, + /* 4274 */ {I_VCMPLT_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+330, 240}, + /* 4275 */ {I_VCMPLT_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+340, 241}, + /* 4276 */ {I_VCMPLT_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+350, 240}, + /* 4277 */ {I_VCMPLT_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+360, 240}, + /* 4278 */ {I_VCMPLT_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+370, 241}, + /* 4279 */ {I_VCMPLT_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+380, 241}, + /* 4280 */ {I_VCMPLT_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+390, 241}, + /* 4281 */ {I_VCMPLEPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+400, 240}, + /* 4282 */ {I_VCMPLEPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+410, 240}, + /* 4283 */ {I_VCMPLEPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+420, 241}, + /* 4284 */ {I_VCMPLEPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+430, 240}, + /* 4285 */ {I_VCMPLEPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+440, 240}, + /* 4286 */ {I_VCMPLEPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+450, 241}, + /* 4287 */ {I_VCMPLESD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+460, 241}, + /* 4288 */ {I_VCMPLESS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+470, 241}, + /* 4289 */ {I_VCMPLE_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+400, 240}, + /* 4290 */ {I_VCMPLE_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+410, 240}, + /* 4291 */ {I_VCMPLE_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+420, 241}, + /* 4292 */ {I_VCMPLE_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+430, 240}, + /* 4293 */ {I_VCMPLE_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+440, 240}, + /* 4294 */ {I_VCMPLE_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+450, 241}, + /* 4295 */ {I_VCMPLE_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+460, 241}, + /* 4296 */ {I_VCMPLE_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+470, 241}, + /* 4297 */ {I_VCMPUNORDPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+480, 240}, + /* 4298 */ {I_VCMPUNORDPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+490, 240}, + /* 4299 */ {I_VCMPUNORDPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+500, 241}, + /* 4300 */ {I_VCMPUNORDPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+510, 240}, + /* 4301 */ {I_VCMPUNORDPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+520, 240}, + /* 4302 */ {I_VCMPUNORDPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+530, 241}, + /* 4303 */ {I_VCMPUNORDSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+540, 241}, + /* 4304 */ {I_VCMPUNORDSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+550, 241}, + /* 4305 */ {I_VCMPUNORD_QPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+480, 240}, + /* 4306 */ {I_VCMPUNORD_QPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+490, 240}, + /* 4307 */ {I_VCMPUNORD_QPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+500, 241}, + /* 4308 */ {I_VCMPUNORD_QPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+510, 240}, + /* 4309 */ {I_VCMPUNORD_QPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+520, 240}, + /* 4310 */ {I_VCMPUNORD_QPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+530, 241}, + /* 4311 */ {I_VCMPUNORD_QSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+540, 241}, + /* 4312 */ {I_VCMPUNORD_QSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+550, 241}, + /* 4313 */ {I_VCMPNEQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+560, 240}, + /* 4314 */ {I_VCMPNEQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+570, 240}, + /* 4315 */ {I_VCMPNEQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+580, 241}, + /* 4316 */ {I_VCMPNEQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+590, 240}, + /* 4317 */ {I_VCMPNEQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+600, 240}, + /* 4318 */ {I_VCMPNEQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+610, 241}, + /* 4319 */ {I_VCMPNEQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+620, 241}, + /* 4320 */ {I_VCMPNEQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+630, 241}, + /* 4321 */ {I_VCMPNEQ_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+560, 240}, + /* 4322 */ {I_VCMPNEQ_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+570, 240}, + /* 4323 */ {I_VCMPNEQ_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+580, 241}, + /* 4324 */ {I_VCMPNEQ_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+590, 240}, + /* 4325 */ {I_VCMPNEQ_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+600, 240}, + /* 4326 */ {I_VCMPNEQ_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+610, 241}, + /* 4327 */ {I_VCMPNEQ_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+620, 241}, + /* 4328 */ {I_VCMPNEQ_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+630, 241}, + /* 4329 */ {I_VCMPNLTPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+640, 240}, + /* 4330 */ {I_VCMPNLTPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+650, 240}, + /* 4331 */ {I_VCMPNLTPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+660, 241}, + /* 4332 */ {I_VCMPNLTPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+670, 240}, + /* 4333 */ {I_VCMPNLTPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+680, 240}, + /* 4334 */ {I_VCMPNLTPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+690, 241}, + /* 4335 */ {I_VCMPNLTSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+700, 241}, + /* 4336 */ {I_VCMPNLTSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+710, 241}, + /* 4337 */ {I_VCMPNLT_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+640, 240}, + /* 4338 */ {I_VCMPNLT_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+650, 240}, + /* 4339 */ {I_VCMPNLT_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+660, 241}, + /* 4340 */ {I_VCMPNLT_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+670, 240}, + /* 4341 */ {I_VCMPNLT_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+680, 240}, + /* 4342 */ {I_VCMPNLT_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+690, 241}, + /* 4343 */ {I_VCMPNLT_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+700, 241}, + /* 4344 */ {I_VCMPNLT_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+710, 241}, + /* 4345 */ {I_VCMPNLEPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+720, 240}, + /* 4346 */ {I_VCMPNLEPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+730, 240}, + /* 4347 */ {I_VCMPNLEPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+740, 241}, + /* 4348 */ {I_VCMPNLEPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+750, 240}, + /* 4349 */ {I_VCMPNLEPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+760, 240}, + /* 4350 */ {I_VCMPNLEPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+770, 241}, + /* 4351 */ {I_VCMPNLESD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+780, 241}, + /* 4352 */ {I_VCMPNLESS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+790, 241}, + /* 4353 */ {I_VCMPNLE_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+720, 240}, + /* 4354 */ {I_VCMPNLE_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+730, 240}, + /* 4355 */ {I_VCMPNLE_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+740, 241}, + /* 4356 */ {I_VCMPNLE_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+750, 240}, + /* 4357 */ {I_VCMPNLE_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+760, 240}, + /* 4358 */ {I_VCMPNLE_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+770, 241}, + /* 4359 */ {I_VCMPNLE_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+780, 241}, + /* 4360 */ {I_VCMPNLE_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+790, 241}, + /* 4361 */ {I_VCMPORDPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+800, 240}, + /* 4362 */ {I_VCMPORDPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+810, 240}, + /* 4363 */ {I_VCMPORDPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+820, 241}, + /* 4364 */ {I_VCMPORDPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+830, 240}, + /* 4365 */ {I_VCMPORDPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+840, 240}, + /* 4366 */ {I_VCMPORDPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+850, 241}, + /* 4367 */ {I_VCMPORDSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+860, 241}, + /* 4368 */ {I_VCMPORDSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+870, 241}, + /* 4369 */ {I_VCMPORD_QPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+800, 240}, + /* 4370 */ {I_VCMPORD_QPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+810, 240}, + /* 4371 */ {I_VCMPORD_QPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+820, 241}, + /* 4372 */ {I_VCMPORD_QPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+830, 240}, + /* 4373 */ {I_VCMPORD_QPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+840, 240}, + /* 4374 */ {I_VCMPORD_QPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+850, 241}, + /* 4375 */ {I_VCMPORD_QSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+860, 241}, + /* 4376 */ {I_VCMPORD_QSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+870, 241}, + /* 4377 */ {I_VCMPEQ_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+880, 240}, + /* 4378 */ {I_VCMPEQ_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+890, 240}, + /* 4379 */ {I_VCMPEQ_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+900, 241}, + /* 4380 */ {I_VCMPEQ_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+910, 240}, + /* 4381 */ {I_VCMPEQ_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+920, 240}, + /* 4382 */ {I_VCMPEQ_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+930, 241}, + /* 4383 */ {I_VCMPEQ_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+940, 241}, + /* 4384 */ {I_VCMPEQ_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+950, 241}, + /* 4385 */ {I_VCMPNGEPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+960, 240}, + /* 4386 */ {I_VCMPNGEPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+970, 240}, + /* 4387 */ {I_VCMPNGEPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+980, 241}, + /* 4388 */ {I_VCMPNGEPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+990, 240}, + /* 4389 */ {I_VCMPNGEPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1000, 240}, + /* 4390 */ {I_VCMPNGEPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1010, 241}, + /* 4391 */ {I_VCMPNGESD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1020, 241}, + /* 4392 */ {I_VCMPNGESS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1030, 241}, + /* 4393 */ {I_VCMPNGE_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+960, 240}, + /* 4394 */ {I_VCMPNGE_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+970, 240}, + /* 4395 */ {I_VCMPNGE_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+980, 241}, + /* 4396 */ {I_VCMPNGE_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+990, 240}, + /* 4397 */ {I_VCMPNGE_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1000, 240}, + /* 4398 */ {I_VCMPNGE_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1010, 241}, + /* 4399 */ {I_VCMPNGE_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1020, 241}, + /* 4400 */ {I_VCMPNGE_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1030, 241}, + /* 4401 */ {I_VCMPNGTPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1040, 240}, + /* 4402 */ {I_VCMPNGTPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1050, 240}, + /* 4403 */ {I_VCMPNGTPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1060, 241}, + /* 4404 */ {I_VCMPNGTPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1070, 240}, + /* 4405 */ {I_VCMPNGTPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1080, 240}, + /* 4406 */ {I_VCMPNGTPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1090, 241}, + /* 4407 */ {I_VCMPNGTSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1100, 241}, + /* 4408 */ {I_VCMPNGTSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1110, 241}, + /* 4409 */ {I_VCMPNGT_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1040, 240}, + /* 4410 */ {I_VCMPNGT_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1050, 240}, + /* 4411 */ {I_VCMPNGT_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1060, 241}, + /* 4412 */ {I_VCMPNGT_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1070, 240}, + /* 4413 */ {I_VCMPNGT_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1080, 240}, + /* 4414 */ {I_VCMPNGT_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1090, 241}, + /* 4415 */ {I_VCMPNGT_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1100, 241}, + /* 4416 */ {I_VCMPNGT_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1110, 241}, + /* 4417 */ {I_VCMPFALSEPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1120, 240}, + /* 4418 */ {I_VCMPFALSEPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1130, 240}, + /* 4419 */ {I_VCMPFALSEPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1140, 241}, + /* 4420 */ {I_VCMPFALSEPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1150, 240}, + /* 4421 */ {I_VCMPFALSEPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1160, 240}, + /* 4422 */ {I_VCMPFALSEPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1170, 241}, + /* 4423 */ {I_VCMPFALSESD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1180, 241}, + /* 4424 */ {I_VCMPFALSESS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1190, 241}, + /* 4425 */ {I_VCMPFALSE_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1120, 240}, + /* 4426 */ {I_VCMPFALSE_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1130, 240}, + /* 4427 */ {I_VCMPFALSE_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1140, 241}, + /* 4428 */ {I_VCMPFALSE_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1150, 240}, + /* 4429 */ {I_VCMPFALSE_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1160, 240}, + /* 4430 */ {I_VCMPFALSE_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1170, 241}, + /* 4431 */ {I_VCMPFALSE_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1180, 241}, + /* 4432 */ {I_VCMPFALSE_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1190, 241}, + /* 4433 */ {I_VCMPNEQ_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1200, 240}, + /* 4434 */ {I_VCMPNEQ_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1210, 240}, + /* 4435 */ {I_VCMPNEQ_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1220, 241}, + /* 4436 */ {I_VCMPNEQ_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1230, 240}, + /* 4437 */ {I_VCMPNEQ_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1240, 240}, + /* 4438 */ {I_VCMPNEQ_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1250, 241}, + /* 4439 */ {I_VCMPNEQ_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1260, 241}, + /* 4440 */ {I_VCMPNEQ_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1270, 241}, + /* 4441 */ {I_VCMPGEPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1280, 240}, + /* 4442 */ {I_VCMPGEPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1290, 240}, + /* 4443 */ {I_VCMPGEPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1300, 241}, + /* 4444 */ {I_VCMPGEPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1310, 240}, + /* 4445 */ {I_VCMPGEPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1320, 240}, + /* 4446 */ {I_VCMPGEPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1330, 241}, + /* 4447 */ {I_VCMPGESD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1340, 241}, + /* 4448 */ {I_VCMPGESS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1350, 241}, + /* 4449 */ {I_VCMPGE_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1280, 240}, + /* 4450 */ {I_VCMPGE_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1290, 240}, + /* 4451 */ {I_VCMPGE_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1300, 241}, + /* 4452 */ {I_VCMPGE_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1310, 240}, + /* 4453 */ {I_VCMPGE_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1320, 240}, + /* 4454 */ {I_VCMPGE_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1330, 241}, + /* 4455 */ {I_VCMPGE_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1340, 241}, + /* 4456 */ {I_VCMPGE_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1350, 241}, + /* 4457 */ {I_VCMPGTPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1360, 240}, + /* 4458 */ {I_VCMPGTPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1370, 240}, + /* 4459 */ {I_VCMPGTPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1380, 241}, + /* 4460 */ {I_VCMPGTPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1390, 240}, + /* 4461 */ {I_VCMPGTPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1400, 240}, + /* 4462 */ {I_VCMPGTPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1410, 241}, + /* 4463 */ {I_VCMPGTSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1420, 241}, + /* 4464 */ {I_VCMPGTSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1430, 241}, + /* 4465 */ {I_VCMPGT_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1360, 240}, + /* 4466 */ {I_VCMPGT_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1370, 240}, + /* 4467 */ {I_VCMPGT_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1380, 241}, + /* 4468 */ {I_VCMPGT_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1390, 240}, + /* 4469 */ {I_VCMPGT_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1400, 240}, + /* 4470 */ {I_VCMPGT_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1410, 241}, + /* 4471 */ {I_VCMPGT_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1420, 241}, + /* 4472 */ {I_VCMPGT_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1430, 241}, + /* 4473 */ {I_VCMPTRUEPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1440, 240}, + /* 4474 */ {I_VCMPTRUEPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1450, 240}, + /* 4475 */ {I_VCMPTRUEPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1460, 241}, + /* 4476 */ {I_VCMPTRUEPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1470, 240}, + /* 4477 */ {I_VCMPTRUEPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1480, 240}, + /* 4478 */ {I_VCMPTRUEPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1490, 241}, + /* 4479 */ {I_VCMPTRUESD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1500, 241}, + /* 4480 */ {I_VCMPTRUESS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1510, 241}, + /* 4481 */ {I_VCMPTRUE_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1440, 240}, + /* 4482 */ {I_VCMPTRUE_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1450, 240}, + /* 4483 */ {I_VCMPTRUE_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1460, 241}, + /* 4484 */ {I_VCMPTRUE_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1470, 240}, + /* 4485 */ {I_VCMPTRUE_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1480, 240}, + /* 4486 */ {I_VCMPTRUE_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1490, 241}, + /* 4487 */ {I_VCMPTRUE_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1500, 241}, + /* 4488 */ {I_VCMPTRUE_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1510, 241}, + /* 4489 */ {I_VCMPEQ_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1520, 240}, + /* 4490 */ {I_VCMPEQ_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1530, 240}, + /* 4491 */ {I_VCMPEQ_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1540, 241}, + /* 4492 */ {I_VCMPEQ_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1550, 240}, + /* 4493 */ {I_VCMPEQ_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1560, 240}, + /* 4494 */ {I_VCMPEQ_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1570, 241}, + /* 4495 */ {I_VCMPEQ_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1580, 241}, + /* 4496 */ {I_VCMPEQ_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1590, 241}, + /* 4497 */ {I_VCMPLT_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1600, 240}, + /* 4498 */ {I_VCMPLT_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1610, 240}, + /* 4499 */ {I_VCMPLT_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1620, 241}, + /* 4500 */ {I_VCMPLT_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1630, 240}, + /* 4501 */ {I_VCMPLT_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1640, 240}, + /* 4502 */ {I_VCMPLT_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1650, 241}, + /* 4503 */ {I_VCMPLT_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1660, 241}, + /* 4504 */ {I_VCMPLT_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1670, 241}, + /* 4505 */ {I_VCMPLE_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1680, 240}, + /* 4506 */ {I_VCMPLE_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1690, 240}, + /* 4507 */ {I_VCMPLE_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1700, 241}, + /* 4508 */ {I_VCMPLE_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1710, 240}, + /* 4509 */ {I_VCMPLE_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1720, 240}, + /* 4510 */ {I_VCMPLE_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1730, 241}, + /* 4511 */ {I_VCMPLE_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1740, 241}, + /* 4512 */ {I_VCMPLE_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1750, 241}, + /* 4513 */ {I_VCMPUNORD_SPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1760, 240}, + /* 4514 */ {I_VCMPUNORD_SPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1770, 240}, + /* 4515 */ {I_VCMPUNORD_SPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1780, 241}, + /* 4516 */ {I_VCMPUNORD_SPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1790, 240}, + /* 4517 */ {I_VCMPUNORD_SPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1800, 240}, + /* 4518 */ {I_VCMPUNORD_SPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1810, 241}, + /* 4519 */ {I_VCMPUNORD_SSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1820, 241}, + /* 4520 */ {I_VCMPUNORD_SSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1830, 241}, + /* 4521 */ {I_VCMPNEQ_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1840, 240}, + /* 4522 */ {I_VCMPNEQ_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1850, 240}, + /* 4523 */ {I_VCMPNEQ_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1860, 241}, + /* 4524 */ {I_VCMPNEQ_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1870, 240}, + /* 4525 */ {I_VCMPNEQ_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1880, 240}, + /* 4526 */ {I_VCMPNEQ_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1890, 241}, + /* 4527 */ {I_VCMPNEQ_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1900, 241}, + /* 4528 */ {I_VCMPNEQ_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1910, 241}, + /* 4529 */ {I_VCMPNLT_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1920, 240}, + /* 4530 */ {I_VCMPNLT_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+1930, 240}, + /* 4531 */ {I_VCMPNLT_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+1940, 241}, + /* 4532 */ {I_VCMPNLT_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1950, 240}, + /* 4533 */ {I_VCMPNLT_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+1960, 240}, + /* 4534 */ {I_VCMPNLT_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+1970, 241}, + /* 4535 */ {I_VCMPNLT_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1980, 241}, + /* 4536 */ {I_VCMPNLT_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+1990, 241}, + /* 4537 */ {I_VCMPNLE_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2000, 240}, + /* 4538 */ {I_VCMPNLE_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2010, 240}, + /* 4539 */ {I_VCMPNLE_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2020, 241}, + /* 4540 */ {I_VCMPNLE_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2030, 240}, + /* 4541 */ {I_VCMPNLE_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2040, 240}, + /* 4542 */ {I_VCMPNLE_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2050, 241}, + /* 4543 */ {I_VCMPNLE_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2060, 241}, + /* 4544 */ {I_VCMPNLE_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2070, 241}, + /* 4545 */ {I_VCMPORD_SPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2080, 240}, + /* 4546 */ {I_VCMPORD_SPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2090, 240}, + /* 4547 */ {I_VCMPORD_SPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2100, 241}, + /* 4548 */ {I_VCMPORD_SPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2110, 240}, + /* 4549 */ {I_VCMPORD_SPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2120, 240}, + /* 4550 */ {I_VCMPORD_SPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2130, 241}, + /* 4551 */ {I_VCMPORD_SSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2140, 241}, + /* 4552 */ {I_VCMPORD_SSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2150, 241}, + /* 4553 */ {I_VCMPEQ_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2160, 240}, + /* 4554 */ {I_VCMPEQ_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2170, 240}, + /* 4555 */ {I_VCMPEQ_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2180, 241}, + /* 4556 */ {I_VCMPEQ_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2190, 240}, + /* 4557 */ {I_VCMPEQ_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2200, 240}, + /* 4558 */ {I_VCMPEQ_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2210, 241}, + /* 4559 */ {I_VCMPEQ_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2220, 241}, + /* 4560 */ {I_VCMPEQ_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2230, 241}, + /* 4561 */ {I_VCMPNGE_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2240, 240}, + /* 4562 */ {I_VCMPNGE_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2250, 240}, + /* 4563 */ {I_VCMPNGE_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2260, 241}, + /* 4564 */ {I_VCMPNGE_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2270, 240}, + /* 4565 */ {I_VCMPNGE_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2280, 240}, + /* 4566 */ {I_VCMPNGE_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2290, 241}, + /* 4567 */ {I_VCMPNGE_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2300, 241}, + /* 4568 */ {I_VCMPNGE_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2310, 241}, + /* 4569 */ {I_VCMPNGT_UQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2320, 240}, + /* 4570 */ {I_VCMPNGT_UQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2330, 240}, + /* 4571 */ {I_VCMPNGT_UQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2340, 241}, + /* 4572 */ {I_VCMPNGT_UQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2350, 240}, + /* 4573 */ {I_VCMPNGT_UQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2360, 240}, + /* 4574 */ {I_VCMPNGT_UQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2370, 241}, + /* 4575 */ {I_VCMPNGT_UQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2380, 241}, + /* 4576 */ {I_VCMPNGT_UQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2390, 241}, + /* 4577 */ {I_VCMPFALSE_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2400, 240}, + /* 4578 */ {I_VCMPFALSE_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2410, 240}, + /* 4579 */ {I_VCMPFALSE_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2420, 241}, + /* 4580 */ {I_VCMPFALSE_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2430, 240}, + /* 4581 */ {I_VCMPFALSE_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2440, 240}, + /* 4582 */ {I_VCMPFALSE_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2450, 241}, + /* 4583 */ {I_VCMPFALSE_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2460, 241}, + /* 4584 */ {I_VCMPFALSE_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2470, 241}, + /* 4585 */ {I_VCMPNEQ_OSPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2480, 240}, + /* 4586 */ {I_VCMPNEQ_OSPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2490, 240}, + /* 4587 */ {I_VCMPNEQ_OSPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2500, 241}, + /* 4588 */ {I_VCMPNEQ_OSPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2510, 240}, + /* 4589 */ {I_VCMPNEQ_OSPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2520, 240}, + /* 4590 */ {I_VCMPNEQ_OSPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2530, 241}, + /* 4591 */ {I_VCMPNEQ_OSSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2540, 241}, + /* 4592 */ {I_VCMPNEQ_OSSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2550, 241}, + /* 4593 */ {I_VCMPGE_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2560, 240}, + /* 4594 */ {I_VCMPGE_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2570, 240}, + /* 4595 */ {I_VCMPGE_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2580, 241}, + /* 4596 */ {I_VCMPGE_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2590, 240}, + /* 4597 */ {I_VCMPGE_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2600, 240}, + /* 4598 */ {I_VCMPGE_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2610, 241}, + /* 4599 */ {I_VCMPGE_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2620, 241}, + /* 4600 */ {I_VCMPGE_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2630, 241}, + /* 4601 */ {I_VCMPGT_OQPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2640, 240}, + /* 4602 */ {I_VCMPGT_OQPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2650, 240}, + /* 4603 */ {I_VCMPGT_OQPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2660, 241}, + /* 4604 */ {I_VCMPGT_OQPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2670, 240}, + /* 4605 */ {I_VCMPGT_OQPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2680, 240}, + /* 4606 */ {I_VCMPGT_OQPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2690, 241}, + /* 4607 */ {I_VCMPGT_OQSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2700, 241}, + /* 4608 */ {I_VCMPGT_OQSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2710, 241}, + /* 4609 */ {I_VCMPTRUE_USPD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2720, 240}, + /* 4610 */ {I_VCMPTRUE_USPD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2730, 240}, + /* 4611 */ {I_VCMPTRUE_USPD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+2740, 241}, + /* 4612 */ {I_VCMPTRUE_USPS, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2750, 240}, + /* 4613 */ {I_VCMPTRUE_USPS, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2760, 240}, + /* 4614 */ {I_VCMPTRUE_USPS, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+2770, 241}, + /* 4615 */ {I_VCMPTRUE_USSD, 3, {KREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2780, 241}, + /* 4616 */ {I_VCMPTRUE_USSS, 3, {KREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+2790, 241}, + /* 4617 */ {I_VCMPPD, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+8110, 240}, + /* 4618 */ {I_VCMPPD, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+8119, 240}, + /* 4619 */ {I_VCMPPD, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,B64|SAE,0,0}, nasm_bytecodes+8128, 241}, + /* 4620 */ {I_VCMPPS, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+8137, 240}, + /* 4621 */ {I_VCMPPS, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+8146, 240}, + /* 4622 */ {I_VCMPPS, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,B32|SAE,0,0}, nasm_bytecodes+8155, 241}, + /* 4623 */ {I_VCMPSD, 4, {KREG,XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+8164, 241}, + /* 4624 */ {I_VCMPSS, 4, {KREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+8173, 241}, + /* 4625 */ {I_VCOMISD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+16960, 241}, + /* 4626 */ {I_VCOMISS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+16968, 241}, + /* 4627 */ {I_VCOMPRESSPD, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+16976, 240}, + /* 4628 */ {I_VCOMPRESSPD, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+16984, 240}, + /* 4629 */ {I_VCOMPRESSPD, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+16992, 241}, + /* 4630 */ {I_VCOMPRESSPD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17000, 240}, + /* 4631 */ {I_VCOMPRESSPD, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17008, 240}, + /* 4632 */ {I_VCOMPRESSPD, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17016, 241}, + /* 4633 */ {I_VCOMPRESSPS, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+17024, 240}, + /* 4634 */ {I_VCOMPRESSPS, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+17032, 240}, + /* 4635 */ {I_VCOMPRESSPS, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+17040, 241}, + /* 4636 */ {I_VCOMPRESSPS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17048, 240}, + /* 4637 */ {I_VCOMPRESSPS, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17056, 240}, + /* 4638 */ {I_VCOMPRESSPS, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17064, 241}, + /* 4639 */ {I_VCVTDQ2PD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17072, 240}, + /* 4640 */ {I_VCVTDQ2PD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17080, 240}, + /* 4641 */ {I_VCVTDQ2PD, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17088, 241}, + /* 4642 */ {I_VCVTDQ2PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17096, 240}, + /* 4643 */ {I_VCVTDQ2PS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17104, 240}, + /* 4644 */ {I_VCVTDQ2PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17112, 241}, + /* 4645 */ {I_VCVTPD2DQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17120, 240}, + /* 4646 */ {I_VCVTPD2DQ, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17128, 240}, + /* 4647 */ {I_VCVTPD2DQ, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17136, 241}, + /* 4648 */ {I_VCVTPD2PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17144, 240}, + /* 4649 */ {I_VCVTPD2PS, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17152, 240}, + /* 4650 */ {I_VCVTPD2PS, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17160, 241}, + /* 4651 */ {I_VCVTPD2QQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17168, 242}, + /* 4652 */ {I_VCVTPD2QQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17176, 242}, + /* 4653 */ {I_VCVTPD2QQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17184, 243}, + /* 4654 */ {I_VCVTPD2UDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17192, 240}, + /* 4655 */ {I_VCVTPD2UDQ, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17200, 240}, + /* 4656 */ {I_VCVTPD2UDQ, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17208, 241}, + /* 4657 */ {I_VCVTPD2UQQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17216, 242}, + /* 4658 */ {I_VCVTPD2UQQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17224, 242}, + /* 4659 */ {I_VCVTPD2UQQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17232, 243}, + /* 4660 */ {I_VCVTPH2PS, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17240, 240}, + /* 4661 */ {I_VCVTPH2PS, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17248, 240}, + /* 4662 */ {I_VCVTPH2PS, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+17256, 241}, + /* 4663 */ {I_VCVTPS2DQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17264, 240}, + /* 4664 */ {I_VCVTPS2DQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17272, 240}, + /* 4665 */ {I_VCVTPS2DQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17280, 241}, + /* 4666 */ {I_VCVTPS2PD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17288, 240}, + /* 4667 */ {I_VCVTPS2PD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17296, 240}, + /* 4668 */ {I_VCVTPS2PD, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+17304, 241}, + /* 4669 */ {I_VCVTPS2PH, 3, {XMMREG,XMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8182, 240}, + /* 4670 */ {I_VCVTPS2PH, 3, {XMMREG,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8191, 240}, + /* 4671 */ {I_VCVTPS2PH, 3, {YMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+8200, 241}, + /* 4672 */ {I_VCVTPS2PH, 3, {MEMORY|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8182, 240}, + /* 4673 */ {I_VCVTPS2PH, 3, {MEMORY|BITS128,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8191, 240}, + /* 4674 */ {I_VCVTPS2PH, 3, {MEMORY|BITS256,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,SAE,0,0,0}, nasm_bytecodes+8200, 241}, + /* 4675 */ {I_VCVTPS2QQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17312, 242}, + /* 4676 */ {I_VCVTPS2QQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17320, 242}, + /* 4677 */ {I_VCVTPS2QQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17328, 243}, + /* 4678 */ {I_VCVTPS2UDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17336, 240}, + /* 4679 */ {I_VCVTPS2UDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17344, 240}, + /* 4680 */ {I_VCVTPS2UDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17352, 241}, + /* 4681 */ {I_VCVTPS2UQQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17360, 242}, + /* 4682 */ {I_VCVTPS2UQQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17368, 242}, + /* 4683 */ {I_VCVTPS2UQQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17376, 243}, + /* 4684 */ {I_VCVTQQ2PD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17384, 242}, + /* 4685 */ {I_VCVTQQ2PD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17392, 242}, + /* 4686 */ {I_VCVTQQ2PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17400, 243}, + /* 4687 */ {I_VCVTQQ2PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17408, 242}, + /* 4688 */ {I_VCVTQQ2PS, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17416, 242}, + /* 4689 */ {I_VCVTQQ2PS, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17424, 243}, + /* 4690 */ {I_VCVTSD2SI, 2, {REG_GPR|BITS32,RM_XMM|BITS64,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17432, 241}, + /* 4691 */ {I_VCVTSD2SI, 2, {REG_GPR|BITS64,RM_XMM|BITS64,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17440, 241}, + /* 4692 */ {I_VCVTSD2SS, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+17448, 241}, + /* 4693 */ {I_VCVTSD2USI, 2, {REG_GPR|BITS32,RM_XMM|BITS64,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17456, 241}, + /* 4694 */ {I_VCVTSD2USI, 2, {REG_GPR|BITS64,RM_XMM|BITS64,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17464, 241}, + /* 4695 */ {I_VCVTSI2SD, 3, {XMMREG,XMMREG,RM_GPR|BITS32,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17472, 241}, + /* 4696 */ {I_VCVTSI2SD, 3, {XMMREG,XMMREG,RM_GPR|BITS64,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17480, 241}, + /* 4697 */ {I_VCVTSI2SS, 3, {XMMREG,XMMREG,RM_GPR|BITS32,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17488, 241}, + /* 4698 */ {I_VCVTSI2SS, 3, {XMMREG,XMMREG,RM_GPR|BITS64,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17496, 241}, + /* 4699 */ {I_VCVTSS2SD, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+17504, 241}, + /* 4700 */ {I_VCVTSS2SI, 2, {REG_GPR|BITS32,RM_XMM|BITS32,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17512, 241}, + /* 4701 */ {I_VCVTSS2SI, 2, {REG_GPR|BITS64,RM_XMM|BITS32,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17520, 241}, + /* 4702 */ {I_VCVTSS2USI, 2, {REG_GPR|BITS32,RM_XMM|BITS32,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17528, 241}, + /* 4703 */ {I_VCVTSS2USI, 2, {REG_GPR|BITS64,RM_XMM|BITS32,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17536, 241}, + /* 4704 */ {I_VCVTTPD2DQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17544, 240}, + /* 4705 */ {I_VCVTTPD2DQ, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17552, 240}, + /* 4706 */ {I_VCVTTPD2DQ, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+17560, 241}, + /* 4707 */ {I_VCVTTPD2QQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17568, 242}, + /* 4708 */ {I_VCVTTPD2QQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17576, 242}, + /* 4709 */ {I_VCVTTPD2QQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+17584, 243}, + /* 4710 */ {I_VCVTTPD2UDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17592, 240}, + /* 4711 */ {I_VCVTTPD2UDQ, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17600, 240}, + /* 4712 */ {I_VCVTTPD2UDQ, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+17608, 241}, + /* 4713 */ {I_VCVTTPD2UQQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17616, 242}, + /* 4714 */ {I_VCVTTPD2UQQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17624, 242}, + /* 4715 */ {I_VCVTTPD2UQQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+17632, 243}, + /* 4716 */ {I_VCVTTPS2DQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17640, 240}, + /* 4717 */ {I_VCVTTPS2DQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17648, 240}, + /* 4718 */ {I_VCVTTPS2DQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+17656, 241}, + /* 4719 */ {I_VCVTTPS2QQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17664, 242}, + /* 4720 */ {I_VCVTTPS2QQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17672, 242}, + /* 4721 */ {I_VCVTTPS2QQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+17680, 243}, + /* 4722 */ {I_VCVTTPS2UDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17688, 240}, + /* 4723 */ {I_VCVTTPS2UDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17696, 240}, + /* 4724 */ {I_VCVTTPS2UDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+17704, 241}, + /* 4725 */ {I_VCVTTPS2UQQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17712, 242}, + /* 4726 */ {I_VCVTTPS2UQQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17720, 242}, + /* 4727 */ {I_VCVTTPS2UQQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+17728, 243}, + /* 4728 */ {I_VCVTTSD2SI, 2, {REG_GPR|BITS32,RM_XMM|BITS64,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17736, 241}, + /* 4729 */ {I_VCVTTSD2SI, 2, {REG_GPR|BITS64,RM_XMM|BITS64,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17744, 241}, + /* 4730 */ {I_VCVTTSD2USI, 2, {REG_GPR|BITS32,RM_XMM|BITS64,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17752, 241}, + /* 4731 */ {I_VCVTTSD2USI, 2, {REG_GPR|BITS64,RM_XMM|BITS64,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17760, 241}, + /* 4732 */ {I_VCVTTSS2SI, 2, {REG_GPR|BITS32,RM_XMM|BITS32,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17768, 241}, + /* 4733 */ {I_VCVTTSS2SI, 2, {REG_GPR|BITS64,RM_XMM|BITS32,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17776, 241}, + /* 4734 */ {I_VCVTTSS2USI, 2, {REG_GPR|BITS32,RM_XMM|BITS32,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17784, 241}, + /* 4735 */ {I_VCVTTSS2USI, 2, {REG_GPR|BITS64,RM_XMM|BITS32,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+17792, 241}, + /* 4736 */ {I_VCVTUDQ2PD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17800, 240}, + /* 4737 */ {I_VCVTUDQ2PD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17808, 240}, + /* 4738 */ {I_VCVTUDQ2PD, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17816, 241}, + /* 4739 */ {I_VCVTUDQ2PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17824, 240}, + /* 4740 */ {I_VCVTUDQ2PS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17832, 240}, + /* 4741 */ {I_VCVTUDQ2PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+17840, 241}, + /* 4742 */ {I_VCVTUQQ2PD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17848, 242}, + /* 4743 */ {I_VCVTUQQ2PD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17856, 242}, + /* 4744 */ {I_VCVTUQQ2PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17864, 243}, + /* 4745 */ {I_VCVTUQQ2PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17872, 242}, + /* 4746 */ {I_VCVTUQQ2PS, 2, {XMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17880, 242}, + /* 4747 */ {I_VCVTUQQ2PS, 2, {YMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17888, 243}, + /* 4748 */ {I_VCVTUSI2SD, 3, {XMMREG,XMMREG,RM_GPR|BITS32,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17896, 241}, + /* 4749 */ {I_VCVTUSI2SD, 3, {XMMREG,XMMREG,RM_GPR|BITS64,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17904, 241}, + /* 4750 */ {I_VCVTUSI2SS, 3, {XMMREG,XMMREG,RM_GPR|BITS32,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17912, 241}, + /* 4751 */ {I_VCVTUSI2SS, 3, {XMMREG,XMMREG,RM_GPR|BITS64,0,0}, {0,ER,0,0,0}, nasm_bytecodes+17920, 241}, + /* 4752 */ {I_VDBPSADBW, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8209, 244}, + /* 4753 */ {I_VDBPSADBW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8218, 244}, + /* 4754 */ {I_VDBPSADBW, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8227, 244}, + /* 4755 */ {I_VDBPSADBW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8236, 244}, + /* 4756 */ {I_VDBPSADBW, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8245, 245}, + /* 4757 */ {I_VDBPSADBW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8254, 245}, + /* 4758 */ {I_VDIVPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+17928, 240}, + /* 4759 */ {I_VDIVPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17936, 240}, + /* 4760 */ {I_VDIVPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+17944, 240}, + /* 4761 */ {I_VDIVPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+17952, 240}, + /* 4762 */ {I_VDIVPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+17960, 241}, + /* 4763 */ {I_VDIVPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+17968, 241}, + /* 4764 */ {I_VDIVPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+17976, 240}, + /* 4765 */ {I_VDIVPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+17984, 240}, + /* 4766 */ {I_VDIVPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+17992, 240}, + /* 4767 */ {I_VDIVPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+18000, 240}, + /* 4768 */ {I_VDIVPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18008, 241}, + /* 4769 */ {I_VDIVPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+18016, 241}, + /* 4770 */ {I_VDIVSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18024, 241}, + /* 4771 */ {I_VDIVSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+18032, 241}, + /* 4772 */ {I_VDIVSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18040, 241}, + /* 4773 */ {I_VDIVSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+18048, 241}, + /* 4774 */ {I_VEXP2PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+18056, 246}, + /* 4775 */ {I_VEXP2PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+18064, 246}, + /* 4776 */ {I_VEXPANDPD, 2, {XMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18072, 240}, + /* 4777 */ {I_VEXPANDPD, 2, {YMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18080, 240}, + /* 4778 */ {I_VEXPANDPD, 2, {ZMMREG,MEMORY|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18088, 241}, + /* 4779 */ {I_VEXPANDPD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18072, 240}, + /* 4780 */ {I_VEXPANDPD, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18080, 240}, + /* 4781 */ {I_VEXPANDPD, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18088, 241}, + /* 4782 */ {I_VEXPANDPS, 2, {XMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18096, 240}, + /* 4783 */ {I_VEXPANDPS, 2, {YMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18104, 240}, + /* 4784 */ {I_VEXPANDPS, 2, {ZMMREG,MEMORY|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18112, 241}, + /* 4785 */ {I_VEXPANDPS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18096, 240}, + /* 4786 */ {I_VEXPANDPS, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18104, 240}, + /* 4787 */ {I_VEXPANDPS, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+18112, 241}, + /* 4788 */ {I_VEXTRACTF32X4, 3, {XMMREG,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8263, 240}, + /* 4789 */ {I_VEXTRACTF32X4, 3, {XMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8272, 241}, + /* 4790 */ {I_VEXTRACTF32X4, 3, {MEMORY|BITS128,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8281, 240}, + /* 4791 */ {I_VEXTRACTF32X4, 3, {MEMORY|BITS128,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8290, 241}, + /* 4792 */ {I_VEXTRACTF32X8, 3, {YMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8299, 243}, + /* 4793 */ {I_VEXTRACTF32X8, 3, {MEMORY|BITS256,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8308, 243}, + /* 4794 */ {I_VEXTRACTF64X2, 3, {XMMREG,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8317, 242}, + /* 4795 */ {I_VEXTRACTF64X2, 3, {XMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8326, 243}, + /* 4796 */ {I_VEXTRACTF64X2, 3, {MEMORY|BITS128,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8335, 242}, + /* 4797 */ {I_VEXTRACTF64X2, 3, {MEMORY|BITS128,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8344, 243}, + /* 4798 */ {I_VEXTRACTF64X4, 3, {YMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8353, 241}, + /* 4799 */ {I_VEXTRACTF64X4, 3, {MEMORY|BITS256,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8362, 241}, + /* 4800 */ {I_VEXTRACTI32X4, 3, {XMMREG,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8371, 240}, + /* 4801 */ {I_VEXTRACTI32X4, 3, {XMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8380, 241}, + /* 4802 */ {I_VEXTRACTI32X4, 3, {MEMORY|BITS128,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8389, 240}, + /* 4803 */ {I_VEXTRACTI32X4, 3, {MEMORY|BITS128,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8398, 241}, + /* 4804 */ {I_VEXTRACTI32X8, 3, {YMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8407, 243}, + /* 4805 */ {I_VEXTRACTI32X8, 3, {MEMORY|BITS256,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8416, 243}, + /* 4806 */ {I_VEXTRACTI64X2, 3, {XMMREG,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8425, 242}, + /* 4807 */ {I_VEXTRACTI64X2, 3, {XMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8434, 243}, + /* 4808 */ {I_VEXTRACTI64X2, 3, {MEMORY|BITS128,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8443, 242}, + /* 4809 */ {I_VEXTRACTI64X2, 3, {MEMORY|BITS128,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8452, 243}, + /* 4810 */ {I_VEXTRACTI64X4, 3, {YMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8461, 241}, + /* 4811 */ {I_VEXTRACTI64X4, 3, {MEMORY|BITS256,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8470, 241}, + /* 4812 */ {I_VEXTRACTPS, 3, {REG_GPR|BITS32,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+8479, 241}, + /* 4813 */ {I_VEXTRACTPS, 3, {REG_GPR|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+8479, 241}, + /* 4814 */ {I_VEXTRACTPS, 3, {MEMORY|BITS32,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+8479, 241}, + /* 4815 */ {I_VFIXUPIMMPD, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+8488, 240}, + /* 4816 */ {I_VFIXUPIMMPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8497, 240}, + /* 4817 */ {I_VFIXUPIMMPD, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+8506, 240}, + /* 4818 */ {I_VFIXUPIMMPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8515, 240}, + /* 4819 */ {I_VFIXUPIMMPD, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64|SAE,0,0}, nasm_bytecodes+8524, 241}, + /* 4820 */ {I_VFIXUPIMMPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+8533, 241}, + /* 4821 */ {I_VFIXUPIMMPS, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+8542, 240}, + /* 4822 */ {I_VFIXUPIMMPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8551, 240}, + /* 4823 */ {I_VFIXUPIMMPS, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+8560, 240}, + /* 4824 */ {I_VFIXUPIMMPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8569, 240}, + /* 4825 */ {I_VFIXUPIMMPS, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32|SAE,0,0}, nasm_bytecodes+8578, 241}, + /* 4826 */ {I_VFIXUPIMMPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+8587, 241}, + /* 4827 */ {I_VFIXUPIMMSD, 4, {XMMREG,XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+8596, 241}, + /* 4828 */ {I_VFIXUPIMMSD, 3, {XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+8605, 241}, + /* 4829 */ {I_VFIXUPIMMSS, 4, {XMMREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+8614, 241}, + /* 4830 */ {I_VFIXUPIMMSS, 3, {XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+8623, 241}, + /* 4831 */ {I_VFMADD132PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18120, 240}, + /* 4832 */ {I_VFMADD132PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18128, 240}, + /* 4833 */ {I_VFMADD132PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18136, 241}, + /* 4834 */ {I_VFMADD132PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18144, 240}, + /* 4835 */ {I_VFMADD132PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18152, 240}, + /* 4836 */ {I_VFMADD132PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18160, 241}, + /* 4837 */ {I_VFMADD132SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18168, 241}, + /* 4838 */ {I_VFMADD132SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18176, 241}, + /* 4839 */ {I_VFMADD213PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18184, 240}, + /* 4840 */ {I_VFMADD213PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18192, 240}, + /* 4841 */ {I_VFMADD213PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18200, 241}, + /* 4842 */ {I_VFMADD213PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18208, 240}, + /* 4843 */ {I_VFMADD213PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18216, 240}, + /* 4844 */ {I_VFMADD213PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18224, 241}, + /* 4845 */ {I_VFMADD213SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18232, 241}, + /* 4846 */ {I_VFMADD213SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18240, 241}, + /* 4847 */ {I_VFMADD231PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18248, 240}, + /* 4848 */ {I_VFMADD231PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18256, 240}, + /* 4849 */ {I_VFMADD231PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18264, 241}, + /* 4850 */ {I_VFMADD231PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18272, 240}, + /* 4851 */ {I_VFMADD231PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18280, 240}, + /* 4852 */ {I_VFMADD231PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18288, 241}, + /* 4853 */ {I_VFMADD231SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18296, 241}, + /* 4854 */ {I_VFMADD231SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18304, 241}, + /* 4855 */ {I_VFMADDSUB132PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18312, 240}, + /* 4856 */ {I_VFMADDSUB132PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18320, 240}, + /* 4857 */ {I_VFMADDSUB132PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18328, 241}, + /* 4858 */ {I_VFMADDSUB132PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18336, 240}, + /* 4859 */ {I_VFMADDSUB132PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18344, 240}, + /* 4860 */ {I_VFMADDSUB132PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18352, 241}, + /* 4861 */ {I_VFMADDSUB213PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18360, 240}, + /* 4862 */ {I_VFMADDSUB213PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18368, 240}, + /* 4863 */ {I_VFMADDSUB213PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18376, 241}, + /* 4864 */ {I_VFMADDSUB213PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18384, 240}, + /* 4865 */ {I_VFMADDSUB213PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18392, 240}, + /* 4866 */ {I_VFMADDSUB213PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18400, 241}, + /* 4867 */ {I_VFMADDSUB231PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18408, 240}, + /* 4868 */ {I_VFMADDSUB231PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18416, 240}, + /* 4869 */ {I_VFMADDSUB231PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18424, 241}, + /* 4870 */ {I_VFMADDSUB231PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18432, 240}, + /* 4871 */ {I_VFMADDSUB231PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18440, 240}, + /* 4872 */ {I_VFMADDSUB231PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18448, 241}, + /* 4873 */ {I_VFMSUB132PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18456, 240}, + /* 4874 */ {I_VFMSUB132PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18464, 240}, + /* 4875 */ {I_VFMSUB132PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18472, 241}, + /* 4876 */ {I_VFMSUB132PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18480, 240}, + /* 4877 */ {I_VFMSUB132PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18488, 240}, + /* 4878 */ {I_VFMSUB132PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18496, 241}, + /* 4879 */ {I_VFMSUB132SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18504, 241}, + /* 4880 */ {I_VFMSUB132SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18512, 241}, + /* 4881 */ {I_VFMSUB213PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18520, 240}, + /* 4882 */ {I_VFMSUB213PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18528, 240}, + /* 4883 */ {I_VFMSUB213PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18536, 241}, + /* 4884 */ {I_VFMSUB213PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18544, 240}, + /* 4885 */ {I_VFMSUB213PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18552, 240}, + /* 4886 */ {I_VFMSUB213PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18560, 241}, + /* 4887 */ {I_VFMSUB213SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18568, 241}, + /* 4888 */ {I_VFMSUB213SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18576, 241}, + /* 4889 */ {I_VFMSUB231PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18584, 240}, + /* 4890 */ {I_VFMSUB231PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18592, 240}, + /* 4891 */ {I_VFMSUB231PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18600, 241}, + /* 4892 */ {I_VFMSUB231PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18608, 240}, + /* 4893 */ {I_VFMSUB231PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18616, 240}, + /* 4894 */ {I_VFMSUB231PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18624, 241}, + /* 4895 */ {I_VFMSUB231SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18632, 241}, + /* 4896 */ {I_VFMSUB231SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18640, 241}, + /* 4897 */ {I_VFMSUBADD132PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18648, 240}, + /* 4898 */ {I_VFMSUBADD132PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18656, 240}, + /* 4899 */ {I_VFMSUBADD132PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18664, 241}, + /* 4900 */ {I_VFMSUBADD132PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18672, 240}, + /* 4901 */ {I_VFMSUBADD132PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18680, 240}, + /* 4902 */ {I_VFMSUBADD132PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18688, 241}, + /* 4903 */ {I_VFMSUBADD213PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18696, 240}, + /* 4904 */ {I_VFMSUBADD213PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18704, 240}, + /* 4905 */ {I_VFMSUBADD213PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18712, 241}, + /* 4906 */ {I_VFMSUBADD213PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18720, 240}, + /* 4907 */ {I_VFMSUBADD213PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18728, 240}, + /* 4908 */ {I_VFMSUBADD213PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18736, 241}, + /* 4909 */ {I_VFMSUBADD231PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18744, 240}, + /* 4910 */ {I_VFMSUBADD231PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18752, 240}, + /* 4911 */ {I_VFMSUBADD231PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18760, 241}, + /* 4912 */ {I_VFMSUBADD231PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18768, 240}, + /* 4913 */ {I_VFMSUBADD231PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18776, 240}, + /* 4914 */ {I_VFMSUBADD231PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18784, 241}, + /* 4915 */ {I_VFNMADD132PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18792, 240}, + /* 4916 */ {I_VFNMADD132PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18800, 240}, + /* 4917 */ {I_VFNMADD132PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18808, 241}, + /* 4918 */ {I_VFNMADD132PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18816, 240}, + /* 4919 */ {I_VFNMADD132PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18824, 240}, + /* 4920 */ {I_VFNMADD132PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18832, 241}, + /* 4921 */ {I_VFNMADD132SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18840, 241}, + /* 4922 */ {I_VFNMADD132SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18848, 241}, + /* 4923 */ {I_VFNMADD213PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18856, 240}, + /* 4924 */ {I_VFNMADD213PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18864, 240}, + /* 4925 */ {I_VFNMADD213PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18872, 241}, + /* 4926 */ {I_VFNMADD213PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18880, 240}, + /* 4927 */ {I_VFNMADD213PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18888, 240}, + /* 4928 */ {I_VFNMADD213PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18896, 241}, + /* 4929 */ {I_VFNMADD213SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18904, 241}, + /* 4930 */ {I_VFNMADD213SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18912, 241}, + /* 4931 */ {I_VFNMADD231PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18920, 240}, + /* 4932 */ {I_VFNMADD231PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18928, 240}, + /* 4933 */ {I_VFNMADD231PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+18936, 241}, + /* 4934 */ {I_VFNMADD231PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18944, 240}, + /* 4935 */ {I_VFNMADD231PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+18952, 240}, + /* 4936 */ {I_VFNMADD231PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+18960, 241}, + /* 4937 */ {I_VFNMADD231SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18968, 241}, + /* 4938 */ {I_VFNMADD231SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+18976, 241}, + /* 4939 */ {I_VFNMSUB132PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18984, 240}, + /* 4940 */ {I_VFNMSUB132PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+18992, 240}, + /* 4941 */ {I_VFNMSUB132PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+19000, 241}, + /* 4942 */ {I_VFNMSUB132PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19008, 240}, + /* 4943 */ {I_VFNMSUB132PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19016, 240}, + /* 4944 */ {I_VFNMSUB132PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+19024, 241}, + /* 4945 */ {I_VFNMSUB132SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+19032, 241}, + /* 4946 */ {I_VFNMSUB132SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+19040, 241}, + /* 4947 */ {I_VFNMSUB213PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19048, 240}, + /* 4948 */ {I_VFNMSUB213PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19056, 240}, + /* 4949 */ {I_VFNMSUB213PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+19064, 241}, + /* 4950 */ {I_VFNMSUB213PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19072, 240}, + /* 4951 */ {I_VFNMSUB213PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19080, 240}, + /* 4952 */ {I_VFNMSUB213PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+19088, 241}, + /* 4953 */ {I_VFNMSUB213SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+19096, 241}, + /* 4954 */ {I_VFNMSUB213SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+19104, 241}, + /* 4955 */ {I_VFNMSUB231PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19112, 240}, + /* 4956 */ {I_VFNMSUB231PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19120, 240}, + /* 4957 */ {I_VFNMSUB231PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+19128, 241}, + /* 4958 */ {I_VFNMSUB231PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19136, 240}, + /* 4959 */ {I_VFNMSUB231PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19144, 240}, + /* 4960 */ {I_VFNMSUB231PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+19152, 241}, + /* 4961 */ {I_VFNMSUB231SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+19160, 241}, + /* 4962 */ {I_VFNMSUB231SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+19168, 241}, + /* 4963 */ {I_VFPCLASSPD, 3, {KREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK,B64,0,0,0}, nasm_bytecodes+8632, 242}, + /* 4964 */ {I_VFPCLASSPD, 3, {KREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK,B64,0,0,0}, nasm_bytecodes+8641, 242}, + /* 4965 */ {I_VFPCLASSPD, 3, {KREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK,B64,0,0,0}, nasm_bytecodes+8650, 243}, + /* 4966 */ {I_VFPCLASSPS, 3, {KREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK,B32,0,0,0}, nasm_bytecodes+8659, 242}, + /* 4967 */ {I_VFPCLASSPS, 3, {KREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK,B32,0,0,0}, nasm_bytecodes+8668, 242}, + /* 4968 */ {I_VFPCLASSPS, 3, {KREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK,B32,0,0,0}, nasm_bytecodes+8677, 243}, + /* 4969 */ {I_VFPCLASSSD, 3, {KREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8686, 243}, + /* 4970 */ {I_VFPCLASSSS, 3, {KREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8695, 243}, + /* 4971 */ {I_VGATHERDPD, 2, {XMMREG,XMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8704, 240}, + /* 4972 */ {I_VGATHERDPD, 2, {YMMREG,XMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8713, 240}, + /* 4973 */ {I_VGATHERDPD, 2, {ZMMREG,YMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8722, 241}, + /* 4974 */ {I_VGATHERDPS, 2, {XMMREG,XMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8731, 240}, + /* 4975 */ {I_VGATHERDPS, 2, {YMMREG,YMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8740, 240}, + /* 4976 */ {I_VGATHERDPS, 2, {ZMMREG,ZMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8749, 241}, + /* 4977 */ {I_VGATHERPF0DPD, 1, {YMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8758, 247}, + /* 4978 */ {I_VGATHERPF0DPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8767, 247}, + /* 4979 */ {I_VGATHERPF0QPD, 1, {ZMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8776, 247}, + /* 4980 */ {I_VGATHERPF0QPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8785, 247}, + /* 4981 */ {I_VGATHERPF1DPD, 1, {YMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8794, 247}, + /* 4982 */ {I_VGATHERPF1DPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8803, 247}, + /* 4983 */ {I_VGATHERPF1QPD, 1, {ZMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8812, 247}, + /* 4984 */ {I_VGATHERPF1QPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8821, 247}, + /* 4985 */ {I_VGATHERQPD, 2, {XMMREG,XMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8830, 240}, + /* 4986 */ {I_VGATHERQPD, 2, {YMMREG,YMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8839, 240}, + /* 4987 */ {I_VGATHERQPD, 2, {ZMMREG,ZMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8848, 241}, + /* 4988 */ {I_VGATHERQPS, 2, {XMMREG,XMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8857, 240}, + /* 4989 */ {I_VGATHERQPS, 2, {XMMREG,YMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8866, 240}, + /* 4990 */ {I_VGATHERQPS, 2, {YMMREG,ZMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8875, 241}, + /* 4991 */ {I_VGETEXPPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+19176, 240}, + /* 4992 */ {I_VGETEXPPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+19184, 240}, + /* 4993 */ {I_VGETEXPPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+19192, 241}, + /* 4994 */ {I_VGETEXPPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+19200, 240}, + /* 4995 */ {I_VGETEXPPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+19208, 240}, + /* 4996 */ {I_VGETEXPPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+19216, 241}, + /* 4997 */ {I_VGETEXPSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+19224, 241}, + /* 4998 */ {I_VGETEXPSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+19232, 241}, + /* 4999 */ {I_VGETMANTPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8884, 240}, + /* 5000 */ {I_VGETMANTPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+8893, 240}, + /* 5001 */ {I_VGETMANTPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+8902, 241}, + /* 5002 */ {I_VGETMANTPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8911, 240}, + /* 5003 */ {I_VGETMANTPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+8920, 240}, + /* 5004 */ {I_VGETMANTPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+8929, 241}, + /* 5005 */ {I_VGETMANTSD, 4, {XMMREG,XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+8938, 241}, + /* 5006 */ {I_VGETMANTSS, 4, {XMMREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+8947, 241}, + /* 5007 */ {I_VINSERTF32X4, 4, {YMMREG,YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8956, 240}, + /* 5008 */ {I_VINSERTF32X4, 3, {YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8965, 240}, + /* 5009 */ {I_VINSERTF32X4, 4, {ZMMREG,ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8974, 241}, + /* 5010 */ {I_VINSERTF32X4, 3, {ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8983, 241}, + /* 5011 */ {I_VINSERTF32X8, 4, {ZMMREG,ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8992, 243}, + /* 5012 */ {I_VINSERTF32X8, 3, {ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9001, 243}, + /* 5013 */ {I_VINSERTF64X2, 4, {YMMREG,YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9010, 242}, + /* 5014 */ {I_VINSERTF64X2, 3, {YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9019, 242}, + /* 5015 */ {I_VINSERTF64X2, 4, {ZMMREG,ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9028, 243}, + /* 5016 */ {I_VINSERTF64X2, 3, {ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9037, 243}, + /* 5017 */ {I_VINSERTF64X4, 4, {ZMMREG,ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9046, 241}, + /* 5018 */ {I_VINSERTF64X4, 3, {ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9055, 241}, + /* 5019 */ {I_VINSERTI32X4, 4, {YMMREG,YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9064, 240}, + /* 5020 */ {I_VINSERTI32X4, 3, {YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9073, 240}, + /* 5021 */ {I_VINSERTI32X4, 4, {ZMMREG,ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9082, 241}, + /* 5022 */ {I_VINSERTI32X4, 3, {ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9091, 241}, + /* 5023 */ {I_VINSERTI32X8, 4, {ZMMREG,ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9100, 243}, + /* 5024 */ {I_VINSERTI32X8, 3, {ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9109, 243}, + /* 5025 */ {I_VINSERTI64X2, 4, {YMMREG,YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9118, 242}, + /* 5026 */ {I_VINSERTI64X2, 3, {YMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9127, 242}, + /* 5027 */ {I_VINSERTI64X2, 4, {ZMMREG,ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9136, 243}, + /* 5028 */ {I_VINSERTI64X2, 3, {ZMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9145, 243}, + /* 5029 */ {I_VINSERTI64X4, 4, {ZMMREG,ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9154, 241}, + /* 5030 */ {I_VINSERTI64X4, 3, {ZMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9163, 241}, + /* 5031 */ {I_VINSERTPS, 4, {XMMREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9172, 241}, + /* 5032 */ {I_VINSERTPS, 3, {XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9181, 241}, + /* 5033 */ {I_VMAXPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19240, 240}, + /* 5034 */ {I_VMAXPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+19248, 240}, + /* 5035 */ {I_VMAXPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19256, 240}, + /* 5036 */ {I_VMAXPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+19264, 240}, + /* 5037 */ {I_VMAXPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|SAE,0,0}, nasm_bytecodes+19272, 241}, + /* 5038 */ {I_VMAXPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+19280, 241}, + /* 5039 */ {I_VMAXPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19288, 240}, + /* 5040 */ {I_VMAXPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+19296, 240}, + /* 5041 */ {I_VMAXPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19304, 240}, + /* 5042 */ {I_VMAXPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+19312, 240}, + /* 5043 */ {I_VMAXPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|SAE,0,0}, nasm_bytecodes+19320, 241}, + /* 5044 */ {I_VMAXPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+19328, 241}, + /* 5045 */ {I_VMAXSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+19336, 241}, + /* 5046 */ {I_VMAXSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+19344, 241}, + /* 5047 */ {I_VMAXSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+19352, 241}, + /* 5048 */ {I_VMAXSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+19360, 241}, + /* 5049 */ {I_VMINPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19368, 240}, + /* 5050 */ {I_VMINPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+19376, 240}, + /* 5051 */ {I_VMINPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+19384, 240}, + /* 5052 */ {I_VMINPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+19392, 240}, + /* 5053 */ {I_VMINPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|SAE,0,0}, nasm_bytecodes+19400, 241}, + /* 5054 */ {I_VMINPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+19408, 241}, + /* 5055 */ {I_VMINPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19416, 240}, + /* 5056 */ {I_VMINPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+19424, 240}, + /* 5057 */ {I_VMINPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+19432, 240}, + /* 5058 */ {I_VMINPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+19440, 240}, + /* 5059 */ {I_VMINPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|SAE,0,0}, nasm_bytecodes+19448, 241}, + /* 5060 */ {I_VMINPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+19456, 241}, + /* 5061 */ {I_VMINSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+19464, 241}, + /* 5062 */ {I_VMINSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+19472, 241}, + /* 5063 */ {I_VMINSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+19480, 241}, + /* 5064 */ {I_VMINSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+19488, 241}, + /* 5065 */ {I_VMOVAPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19496, 240}, + /* 5066 */ {I_VMOVAPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19504, 240}, + /* 5067 */ {I_VMOVAPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19512, 241}, + /* 5068 */ {I_VMOVAPD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19520, 240}, + /* 5069 */ {I_VMOVAPD, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19528, 240}, + /* 5070 */ {I_VMOVAPD, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19536, 241}, + /* 5071 */ {I_VMOVAPD, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+19544, 240}, + /* 5072 */ {I_VMOVAPD, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+19552, 240}, + /* 5073 */ {I_VMOVAPD, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+19560, 241}, + /* 5074 */ {I_VMOVAPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19568, 240}, + /* 5075 */ {I_VMOVAPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19576, 240}, + /* 5076 */ {I_VMOVAPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19584, 241}, + /* 5077 */ {I_VMOVAPS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19592, 240}, + /* 5078 */ {I_VMOVAPS, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19600, 240}, + /* 5079 */ {I_VMOVAPS, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19608, 241}, + /* 5080 */ {I_VMOVAPS, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+19616, 240}, + /* 5081 */ {I_VMOVAPS, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+19624, 240}, + /* 5082 */ {I_VMOVAPS, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+19632, 241}, + /* 5083 */ {I_VMOVD, 2, {XMMREG,RM_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+19640, 241}, + /* 5084 */ {I_VMOVD, 2, {RM_GPR|BITS32,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+19648, 241}, + /* 5085 */ {I_VMOVDDUP, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19656, 240}, + /* 5086 */ {I_VMOVDDUP, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19664, 240}, + /* 5087 */ {I_VMOVDDUP, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19672, 241}, + /* 5088 */ {I_VMOVDQA32, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19680, 240}, + /* 5089 */ {I_VMOVDQA32, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19688, 240}, + /* 5090 */ {I_VMOVDQA32, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19696, 241}, + /* 5091 */ {I_VMOVDQA32, 2, {RM_XMM|BITS128,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19704, 240}, + /* 5092 */ {I_VMOVDQA32, 2, {RM_YMM|BITS256,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19712, 240}, + /* 5093 */ {I_VMOVDQA32, 2, {RM_ZMM|BITS512,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19720, 241}, + /* 5094 */ {I_VMOVDQA64, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19728, 240}, + /* 5095 */ {I_VMOVDQA64, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19736, 240}, + /* 5096 */ {I_VMOVDQA64, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19744, 241}, + /* 5097 */ {I_VMOVDQA64, 2, {RM_XMM|BITS128,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19752, 240}, + /* 5098 */ {I_VMOVDQA64, 2, {RM_YMM|BITS256,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19760, 240}, + /* 5099 */ {I_VMOVDQA64, 2, {RM_ZMM|BITS512,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19768, 241}, + /* 5100 */ {I_VMOVDQU16, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19776, 244}, + /* 5101 */ {I_VMOVDQU16, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19784, 244}, + /* 5102 */ {I_VMOVDQU16, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19792, 245}, + /* 5103 */ {I_VMOVDQU16, 2, {RM_XMM|BITS128,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19800, 244}, + /* 5104 */ {I_VMOVDQU16, 2, {RM_YMM|BITS256,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19808, 244}, + /* 5105 */ {I_VMOVDQU16, 2, {RM_ZMM|BITS512,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19816, 245}, + /* 5106 */ {I_VMOVDQU32, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19824, 240}, + /* 5107 */ {I_VMOVDQU32, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19832, 240}, + /* 5108 */ {I_VMOVDQU32, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19840, 241}, + /* 5109 */ {I_VMOVDQU32, 2, {RM_XMM|BITS128,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19848, 240}, + /* 5110 */ {I_VMOVDQU32, 2, {RM_YMM|BITS256,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19856, 240}, + /* 5111 */ {I_VMOVDQU32, 2, {RM_ZMM|BITS512,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19864, 241}, + /* 5112 */ {I_VMOVDQU64, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19872, 240}, + /* 5113 */ {I_VMOVDQU64, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19880, 240}, + /* 5114 */ {I_VMOVDQU64, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19888, 241}, + /* 5115 */ {I_VMOVDQU64, 2, {RM_XMM|BITS128,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19896, 240}, + /* 5116 */ {I_VMOVDQU64, 2, {RM_YMM|BITS256,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19904, 240}, + /* 5117 */ {I_VMOVDQU64, 2, {RM_ZMM|BITS512,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19912, 241}, + /* 5118 */ {I_VMOVDQU8, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19920, 244}, + /* 5119 */ {I_VMOVDQU8, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19928, 244}, + /* 5120 */ {I_VMOVDQU8, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19936, 245}, + /* 5121 */ {I_VMOVDQU8, 2, {RM_XMM|BITS128,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19944, 244}, + /* 5122 */ {I_VMOVDQU8, 2, {RM_YMM|BITS256,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19952, 244}, + /* 5123 */ {I_VMOVDQU8, 2, {RM_ZMM|BITS512,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+19960, 245}, + /* 5124 */ {I_VMOVHLPS, 3, {XMMREG,XMMREG,XMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+19968, 241}, + /* 5125 */ {I_VMOVHLPS, 2, {XMMREG,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+19976, 241}, + /* 5126 */ {I_VMOVHPD, 3, {XMMREG,XMMREG,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+19984, 241}, + /* 5127 */ {I_VMOVHPD, 2, {XMMREG,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+19992, 241}, + /* 5128 */ {I_VMOVHPD, 2, {MEMORY|BITS64,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20000, 241}, + /* 5129 */ {I_VMOVHPS, 3, {XMMREG,XMMREG,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+20008, 241}, + /* 5130 */ {I_VMOVHPS, 2, {XMMREG,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+20016, 241}, + /* 5131 */ {I_VMOVHPS, 2, {MEMORY|BITS64,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20024, 241}, + /* 5132 */ {I_VMOVLHPS, 3, {XMMREG,XMMREG,XMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+20032, 241}, + /* 5133 */ {I_VMOVLHPS, 2, {XMMREG,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20040, 241}, + /* 5134 */ {I_VMOVLPD, 3, {XMMREG,XMMREG,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+20048, 241}, + /* 5135 */ {I_VMOVLPD, 2, {XMMREG,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+20056, 241}, + /* 5136 */ {I_VMOVLPD, 2, {MEMORY|BITS64,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20064, 241}, + /* 5137 */ {I_VMOVLPS, 3, {XMMREG,XMMREG,MEMORY|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+20072, 241}, + /* 5138 */ {I_VMOVLPS, 2, {XMMREG,MEMORY|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+20080, 241}, + /* 5139 */ {I_VMOVLPS, 2, {MEMORY|BITS64,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20088, 241}, + /* 5140 */ {I_VMOVNTDQ, 2, {MEMORY|BITS128,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20096, 240}, + /* 5141 */ {I_VMOVNTDQ, 2, {MEMORY|BITS256,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20104, 240}, + /* 5142 */ {I_VMOVNTDQ, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20112, 241}, + /* 5143 */ {I_VMOVNTDQA, 2, {XMMREG,MEMORY|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+20120, 240}, + /* 5144 */ {I_VMOVNTDQA, 2, {YMMREG,MEMORY|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+20128, 240}, + /* 5145 */ {I_VMOVNTDQA, 2, {ZMMREG,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+20136, 241}, + /* 5146 */ {I_VMOVNTPD, 2, {MEMORY|BITS128,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20144, 240}, + /* 5147 */ {I_VMOVNTPD, 2, {MEMORY|BITS256,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20152, 240}, + /* 5148 */ {I_VMOVNTPD, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20160, 241}, + /* 5149 */ {I_VMOVNTPS, 2, {MEMORY|BITS128,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20168, 240}, + /* 5150 */ {I_VMOVNTPS, 2, {MEMORY|BITS256,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20176, 240}, + /* 5151 */ {I_VMOVNTPS, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20184, 241}, + /* 5152 */ {I_VMOVQ, 2, {XMMREG,RM_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+20192, 241}, + /* 5153 */ {I_VMOVQ, 2, {RM_GPR|BITS64,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20200, 241}, + /* 5154 */ {I_VMOVQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+20208, 241}, + /* 5155 */ {I_VMOVQ, 2, {RM_XMM|BITS64,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+20216, 241}, + /* 5156 */ {I_VMOVSD, 2, {XMMREG,MEMORY|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20224, 241}, + /* 5157 */ {I_VMOVSD, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20232, 241}, + /* 5158 */ {I_VMOVSD, 3, {XMMREG,XMMREG,XMMREG,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20240, 241}, + /* 5159 */ {I_VMOVSD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20248, 241}, + /* 5160 */ {I_VMOVSD, 3, {XMMREG,XMMREG,XMMREG,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20256, 241}, + /* 5161 */ {I_VMOVSD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20264, 241}, + /* 5162 */ {I_VMOVSHDUP, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20272, 240}, + /* 5163 */ {I_VMOVSHDUP, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20280, 240}, + /* 5164 */ {I_VMOVSHDUP, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20288, 241}, + /* 5165 */ {I_VMOVSLDUP, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20296, 240}, + /* 5166 */ {I_VMOVSLDUP, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20304, 240}, + /* 5167 */ {I_VMOVSLDUP, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20312, 241}, + /* 5168 */ {I_VMOVSS, 2, {XMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20320, 241}, + /* 5169 */ {I_VMOVSS, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20328, 241}, + /* 5170 */ {I_VMOVSS, 3, {XMMREG,XMMREG,XMMREG,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20336, 241}, + /* 5171 */ {I_VMOVSS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20344, 241}, + /* 5172 */ {I_VMOVSS, 3, {XMMREG,XMMREG,XMMREG,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20352, 241}, + /* 5173 */ {I_VMOVSS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20360, 241}, + /* 5174 */ {I_VMOVUPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20368, 240}, + /* 5175 */ {I_VMOVUPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20376, 240}, + /* 5176 */ {I_VMOVUPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20384, 241}, + /* 5177 */ {I_VMOVUPD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20392, 240}, + /* 5178 */ {I_VMOVUPD, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20400, 240}, + /* 5179 */ {I_VMOVUPD, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20408, 241}, + /* 5180 */ {I_VMOVUPD, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20416, 240}, + /* 5181 */ {I_VMOVUPD, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20424, 240}, + /* 5182 */ {I_VMOVUPD, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20432, 241}, + /* 5183 */ {I_VMOVUPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20440, 240}, + /* 5184 */ {I_VMOVUPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20448, 240}, + /* 5185 */ {I_VMOVUPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20456, 241}, + /* 5186 */ {I_VMOVUPS, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20464, 240}, + /* 5187 */ {I_VMOVUPS, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20472, 240}, + /* 5188 */ {I_VMOVUPS, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20480, 241}, + /* 5189 */ {I_VMOVUPS, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20488, 240}, + /* 5190 */ {I_VMOVUPS, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20496, 240}, + /* 5191 */ {I_VMOVUPS, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+20504, 241}, + /* 5192 */ {I_VMULPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+20512, 240}, + /* 5193 */ {I_VMULPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20520, 240}, + /* 5194 */ {I_VMULPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+20528, 240}, + /* 5195 */ {I_VMULPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20536, 240}, + /* 5196 */ {I_VMULPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+20544, 241}, + /* 5197 */ {I_VMULPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+20552, 241}, + /* 5198 */ {I_VMULPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20560, 240}, + /* 5199 */ {I_VMULPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20568, 240}, + /* 5200 */ {I_VMULPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20576, 240}, + /* 5201 */ {I_VMULPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20584, 240}, + /* 5202 */ {I_VMULPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+20592, 241}, + /* 5203 */ {I_VMULPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+20600, 241}, + /* 5204 */ {I_VMULSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+20608, 241}, + /* 5205 */ {I_VMULSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+20616, 241}, + /* 5206 */ {I_VMULSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+20624, 241}, + /* 5207 */ {I_VMULSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+20632, 241}, + /* 5208 */ {I_VORPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+20640, 242}, + /* 5209 */ {I_VORPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20648, 242}, + /* 5210 */ {I_VORPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+20656, 242}, + /* 5211 */ {I_VORPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20664, 242}, + /* 5212 */ {I_VORPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+20672, 243}, + /* 5213 */ {I_VORPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20680, 243}, + /* 5214 */ {I_VORPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20688, 242}, + /* 5215 */ {I_VORPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20696, 242}, + /* 5216 */ {I_VORPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20704, 242}, + /* 5217 */ {I_VORPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20712, 242}, + /* 5218 */ {I_VORPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20720, 243}, + /* 5219 */ {I_VORPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20728, 243}, + /* 5220 */ {I_VPABSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20736, 244}, + /* 5221 */ {I_VPABSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20744, 244}, + /* 5222 */ {I_VPABSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20752, 245}, + /* 5223 */ {I_VPABSD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20760, 240}, + /* 5224 */ {I_VPABSD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20768, 240}, + /* 5225 */ {I_VPABSD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20776, 241}, + /* 5226 */ {I_VPABSQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20784, 240}, + /* 5227 */ {I_VPABSQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20792, 240}, + /* 5228 */ {I_VPABSQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+20800, 241}, + /* 5229 */ {I_VPABSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20808, 244}, + /* 5230 */ {I_VPABSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20816, 244}, + /* 5231 */ {I_VPABSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20824, 245}, + /* 5232 */ {I_VPACKSSDW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20832, 244}, + /* 5233 */ {I_VPACKSSDW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20840, 244}, + /* 5234 */ {I_VPACKSSDW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20848, 244}, + /* 5235 */ {I_VPACKSSDW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20856, 244}, + /* 5236 */ {I_VPACKSSDW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20864, 245}, + /* 5237 */ {I_VPACKSSDW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20872, 245}, + /* 5238 */ {I_VPACKSSWB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20880, 244}, + /* 5239 */ {I_VPACKSSWB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20888, 244}, + /* 5240 */ {I_VPACKSSWB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20896, 244}, + /* 5241 */ {I_VPACKSSWB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20904, 244}, + /* 5242 */ {I_VPACKSSWB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20912, 245}, + /* 5243 */ {I_VPACKSSWB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20920, 245}, + /* 5244 */ {I_VPACKUSDW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20928, 244}, + /* 5245 */ {I_VPACKUSDW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20936, 244}, + /* 5246 */ {I_VPACKUSDW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20944, 244}, + /* 5247 */ {I_VPACKUSDW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20952, 244}, + /* 5248 */ {I_VPACKUSDW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+20960, 245}, + /* 5249 */ {I_VPACKUSDW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+20968, 245}, + /* 5250 */ {I_VPACKUSWB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20976, 244}, + /* 5251 */ {I_VPACKUSWB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20984, 244}, + /* 5252 */ {I_VPACKUSWB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+20992, 244}, + /* 5253 */ {I_VPACKUSWB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21000, 244}, + /* 5254 */ {I_VPACKUSWB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21008, 245}, + /* 5255 */ {I_VPACKUSWB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21016, 245}, + /* 5256 */ {I_VPADDB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21024, 244}, + /* 5257 */ {I_VPADDB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21032, 244}, + /* 5258 */ {I_VPADDB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21040, 244}, + /* 5259 */ {I_VPADDB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21048, 244}, + /* 5260 */ {I_VPADDB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21056, 245}, + /* 5261 */ {I_VPADDB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21064, 245}, + /* 5262 */ {I_VPADDD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21072, 240}, + /* 5263 */ {I_VPADDD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21080, 240}, + /* 5264 */ {I_VPADDD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21088, 240}, + /* 5265 */ {I_VPADDD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21096, 240}, + /* 5266 */ {I_VPADDD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21104, 241}, + /* 5267 */ {I_VPADDD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21112, 241}, + /* 5268 */ {I_VPADDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21120, 240}, + /* 5269 */ {I_VPADDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21128, 240}, + /* 5270 */ {I_VPADDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21136, 240}, + /* 5271 */ {I_VPADDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21144, 240}, + /* 5272 */ {I_VPADDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21152, 241}, + /* 5273 */ {I_VPADDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21160, 241}, + /* 5274 */ {I_VPADDSB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21168, 244}, + /* 5275 */ {I_VPADDSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21176, 244}, + /* 5276 */ {I_VPADDSB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21184, 244}, + /* 5277 */ {I_VPADDSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21192, 244}, + /* 5278 */ {I_VPADDSB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21200, 245}, + /* 5279 */ {I_VPADDSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21208, 245}, + /* 5280 */ {I_VPADDSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21216, 244}, + /* 5281 */ {I_VPADDSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21224, 244}, + /* 5282 */ {I_VPADDSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21232, 244}, + /* 5283 */ {I_VPADDSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21240, 244}, + /* 5284 */ {I_VPADDSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21248, 245}, + /* 5285 */ {I_VPADDSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21256, 245}, + /* 5286 */ {I_VPADDUSB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21264, 244}, + /* 5287 */ {I_VPADDUSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21272, 244}, + /* 5288 */ {I_VPADDUSB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21280, 244}, + /* 5289 */ {I_VPADDUSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21288, 244}, + /* 5290 */ {I_VPADDUSB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21296, 245}, + /* 5291 */ {I_VPADDUSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21304, 245}, + /* 5292 */ {I_VPADDUSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21312, 244}, + /* 5293 */ {I_VPADDUSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21320, 244}, + /* 5294 */ {I_VPADDUSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21328, 244}, + /* 5295 */ {I_VPADDUSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21336, 244}, + /* 5296 */ {I_VPADDUSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21344, 245}, + /* 5297 */ {I_VPADDUSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21352, 245}, + /* 5298 */ {I_VPADDW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21360, 244}, + /* 5299 */ {I_VPADDW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21368, 244}, + /* 5300 */ {I_VPADDW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21376, 244}, + /* 5301 */ {I_VPADDW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21384, 244}, + /* 5302 */ {I_VPADDW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21392, 245}, + /* 5303 */ {I_VPADDW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21400, 245}, + /* 5304 */ {I_VPALIGNR, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9190, 244}, + /* 5305 */ {I_VPALIGNR, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9199, 244}, + /* 5306 */ {I_VPALIGNR, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9208, 244}, + /* 5307 */ {I_VPALIGNR, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9217, 244}, + /* 5308 */ {I_VPALIGNR, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9226, 245}, + /* 5309 */ {I_VPALIGNR, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9235, 245}, + /* 5310 */ {I_VPANDD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21408, 240}, + /* 5311 */ {I_VPANDD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21416, 240}, + /* 5312 */ {I_VPANDD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21424, 240}, + /* 5313 */ {I_VPANDD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21432, 240}, + /* 5314 */ {I_VPANDD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21440, 241}, + /* 5315 */ {I_VPANDD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21448, 241}, + /* 5316 */ {I_VPANDND, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21456, 240}, + /* 5317 */ {I_VPANDND, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21464, 240}, + /* 5318 */ {I_VPANDND, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21472, 240}, + /* 5319 */ {I_VPANDND, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21480, 240}, + /* 5320 */ {I_VPANDND, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21488, 241}, + /* 5321 */ {I_VPANDND, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+21496, 241}, + /* 5322 */ {I_VPANDNQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21504, 240}, + /* 5323 */ {I_VPANDNQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21512, 240}, + /* 5324 */ {I_VPANDNQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21520, 240}, + /* 5325 */ {I_VPANDNQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21528, 240}, + /* 5326 */ {I_VPANDNQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21536, 241}, + /* 5327 */ {I_VPANDNQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21544, 241}, + /* 5328 */ {I_VPANDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21552, 240}, + /* 5329 */ {I_VPANDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21560, 240}, + /* 5330 */ {I_VPANDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21568, 240}, + /* 5331 */ {I_VPANDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21576, 240}, + /* 5332 */ {I_VPANDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21584, 241}, + /* 5333 */ {I_VPANDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+21592, 241}, + /* 5334 */ {I_VPAVGB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21600, 244}, + /* 5335 */ {I_VPAVGB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21608, 244}, + /* 5336 */ {I_VPAVGB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21616, 244}, + /* 5337 */ {I_VPAVGB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21624, 244}, + /* 5338 */ {I_VPAVGB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21632, 245}, + /* 5339 */ {I_VPAVGB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21640, 245}, + /* 5340 */ {I_VPAVGW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21648, 244}, + /* 5341 */ {I_VPAVGW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21656, 244}, + /* 5342 */ {I_VPAVGW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21664, 244}, + /* 5343 */ {I_VPAVGW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21672, 244}, + /* 5344 */ {I_VPAVGW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21680, 245}, + /* 5345 */ {I_VPAVGW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21688, 245}, + /* 5346 */ {I_VPBLENDMB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21696, 244}, + /* 5347 */ {I_VPBLENDMB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21704, 244}, + /* 5348 */ {I_VPBLENDMB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21712, 245}, + /* 5349 */ {I_VPBLENDMD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21720, 240}, + /* 5350 */ {I_VPBLENDMD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21728, 240}, + /* 5351 */ {I_VPBLENDMD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+21736, 241}, + /* 5352 */ {I_VPBLENDMQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21744, 240}, + /* 5353 */ {I_VPBLENDMQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21752, 240}, + /* 5354 */ {I_VPBLENDMQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+21760, 241}, + /* 5355 */ {I_VPBLENDMW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21768, 244}, + /* 5356 */ {I_VPBLENDMW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21776, 244}, + /* 5357 */ {I_VPBLENDMW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21784, 245}, + /* 5358 */ {I_VPBROADCASTB, 2, {XMMREG,RM_XMM|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21792, 244}, + /* 5359 */ {I_VPBROADCASTB, 2, {YMMREG,RM_XMM|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21800, 244}, + /* 5360 */ {I_VPBROADCASTB, 2, {ZMMREG,RM_XMM|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21808, 245}, + /* 5361 */ {I_VPBROADCASTB, 2, {XMMREG,REG_GPR|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21816, 244}, + /* 5362 */ {I_VPBROADCASTB, 2, {XMMREG,REG_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21816, 244}, + /* 5363 */ {I_VPBROADCASTB, 2, {XMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21816, 244}, + /* 5364 */ {I_VPBROADCASTB, 2, {XMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21816, 244}, + /* 5365 */ {I_VPBROADCASTB, 2, {YMMREG,REG_GPR|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21824, 244}, + /* 5366 */ {I_VPBROADCASTB, 2, {YMMREG,REG_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21824, 244}, + /* 5367 */ {I_VPBROADCASTB, 2, {YMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21824, 244}, + /* 5368 */ {I_VPBROADCASTB, 2, {YMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21824, 244}, + /* 5369 */ {I_VPBROADCASTB, 2, {ZMMREG,REG_GPR|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21832, 245}, + /* 5370 */ {I_VPBROADCASTB, 2, {ZMMREG,REG_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21832, 245}, + /* 5371 */ {I_VPBROADCASTB, 2, {ZMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21832, 245}, + /* 5372 */ {I_VPBROADCASTB, 2, {ZMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21832, 245}, + /* 5373 */ {I_VPBROADCASTD, 2, {XMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21840, 240}, + /* 5374 */ {I_VPBROADCASTD, 2, {YMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21848, 240}, + /* 5375 */ {I_VPBROADCASTD, 2, {ZMMREG,MEMORY|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21856, 241}, + /* 5376 */ {I_VPBROADCASTD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21864, 240}, + /* 5377 */ {I_VPBROADCASTD, 2, {YMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21872, 240}, + /* 5378 */ {I_VPBROADCASTD, 2, {ZMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21880, 241}, + /* 5379 */ {I_VPBROADCASTD, 2, {XMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21888, 240}, + /* 5380 */ {I_VPBROADCASTD, 2, {YMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21896, 240}, + /* 5381 */ {I_VPBROADCASTD, 2, {ZMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21904, 241}, + /* 5382 */ {I_VPBROADCASTMB2Q, 2, {XMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+21912, 248}, + /* 5383 */ {I_VPBROADCASTMB2Q, 2, {YMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+21920, 248}, + /* 5384 */ {I_VPBROADCASTMB2Q, 2, {ZMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+21928, 249}, + /* 5385 */ {I_VPBROADCASTMW2D, 2, {XMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+21936, 248}, + /* 5386 */ {I_VPBROADCASTMW2D, 2, {YMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+21944, 248}, + /* 5387 */ {I_VPBROADCASTMW2D, 2, {ZMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+21952, 249}, + /* 5388 */ {I_VPBROADCASTQ, 2, {XMMREG,MEMORY|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21960, 240}, + /* 5389 */ {I_VPBROADCASTQ, 2, {YMMREG,MEMORY|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21968, 240}, + /* 5390 */ {I_VPBROADCASTQ, 2, {ZMMREG,MEMORY|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21976, 241}, + /* 5391 */ {I_VPBROADCASTQ, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21984, 240}, + /* 5392 */ {I_VPBROADCASTQ, 2, {YMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+21992, 240}, + /* 5393 */ {I_VPBROADCASTQ, 2, {ZMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22000, 241}, + /* 5394 */ {I_VPBROADCASTQ, 2, {XMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22008, 240}, + /* 5395 */ {I_VPBROADCASTQ, 2, {YMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22016, 240}, + /* 5396 */ {I_VPBROADCASTQ, 2, {ZMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22024, 241}, + /* 5397 */ {I_VPBROADCASTW, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22032, 244}, + /* 5398 */ {I_VPBROADCASTW, 2, {YMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22040, 244}, + /* 5399 */ {I_VPBROADCASTW, 2, {ZMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22048, 245}, + /* 5400 */ {I_VPBROADCASTW, 2, {XMMREG,REG_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22056, 244}, + /* 5401 */ {I_VPBROADCASTW, 2, {XMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22056, 244}, + /* 5402 */ {I_VPBROADCASTW, 2, {XMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22056, 244}, + /* 5403 */ {I_VPBROADCASTW, 2, {YMMREG,REG_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22064, 244}, + /* 5404 */ {I_VPBROADCASTW, 2, {YMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22064, 244}, + /* 5405 */ {I_VPBROADCASTW, 2, {YMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22064, 244}, + /* 5406 */ {I_VPBROADCASTW, 2, {ZMMREG,REG_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22072, 245}, + /* 5407 */ {I_VPBROADCASTW, 2, {ZMMREG,REG_GPR|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22072, 245}, + /* 5408 */ {I_VPBROADCASTW, 2, {ZMMREG,REG_GPR|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22072, 245}, + /* 5409 */ {I_VPCMPEQB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22080, 244}, + /* 5410 */ {I_VPCMPEQB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22088, 244}, + /* 5411 */ {I_VPCMPEQB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22096, 245}, + /* 5412 */ {I_VPCMPEQD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+22104, 240}, + /* 5413 */ {I_VPCMPEQD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+22112, 240}, + /* 5414 */ {I_VPCMPEQD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+22120, 241}, + /* 5415 */ {I_VPCMPEQQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+22128, 240}, + /* 5416 */ {I_VPCMPEQQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+22136, 240}, + /* 5417 */ {I_VPCMPEQQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+22144, 241}, + /* 5418 */ {I_VPCMPEQW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22152, 244}, + /* 5419 */ {I_VPCMPEQW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22160, 244}, + /* 5420 */ {I_VPCMPEQW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22168, 245}, + /* 5421 */ {I_VPCMPGTB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22176, 244}, + /* 5422 */ {I_VPCMPGTB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22184, 244}, + /* 5423 */ {I_VPCMPGTB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22192, 245}, + /* 5424 */ {I_VPCMPGTD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+22200, 240}, + /* 5425 */ {I_VPCMPGTD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+22208, 240}, + /* 5426 */ {I_VPCMPGTD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+22216, 241}, + /* 5427 */ {I_VPCMPGTQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+22224, 240}, + /* 5428 */ {I_VPCMPGTQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+22232, 240}, + /* 5429 */ {I_VPCMPGTQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+22240, 241}, + /* 5430 */ {I_VPCMPGTW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22248, 244}, + /* 5431 */ {I_VPCMPGTW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22256, 244}, + /* 5432 */ {I_VPCMPGTW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22264, 245}, + /* 5433 */ {I_VPCMPEQB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2800, 244}, + /* 5434 */ {I_VPCMPEQB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2810, 244}, + /* 5435 */ {I_VPCMPEQB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2820, 245}, + /* 5436 */ {I_VPCMPEQD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2830, 240}, + /* 5437 */ {I_VPCMPEQD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2840, 240}, + /* 5438 */ {I_VPCMPEQD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2850, 241}, + /* 5439 */ {I_VPCMPEQQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2860, 240}, + /* 5440 */ {I_VPCMPEQQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2870, 240}, + /* 5441 */ {I_VPCMPEQQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2880, 241}, + /* 5442 */ {I_VPCMPEQUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2890, 244}, + /* 5443 */ {I_VPCMPEQUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2900, 244}, + /* 5444 */ {I_VPCMPEQUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2910, 245}, + /* 5445 */ {I_VPCMPEQUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2920, 240}, + /* 5446 */ {I_VPCMPEQUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2930, 240}, + /* 5447 */ {I_VPCMPEQUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+2940, 241}, + /* 5448 */ {I_VPCMPEQUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2950, 240}, + /* 5449 */ {I_VPCMPEQUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2960, 240}, + /* 5450 */ {I_VPCMPEQUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+2970, 241}, + /* 5451 */ {I_VPCMPEQUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2980, 244}, + /* 5452 */ {I_VPCMPEQUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+2990, 244}, + /* 5453 */ {I_VPCMPEQUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3000, 245}, + /* 5454 */ {I_VPCMPEQW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3010, 244}, + /* 5455 */ {I_VPCMPEQW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3020, 244}, + /* 5456 */ {I_VPCMPEQW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3030, 245}, + /* 5457 */ {I_VPCMPGEB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3040, 244}, + /* 5458 */ {I_VPCMPGEB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3050, 244}, + /* 5459 */ {I_VPCMPGEB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3060, 245}, + /* 5460 */ {I_VPCMPGED, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3070, 240}, + /* 5461 */ {I_VPCMPGED, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3080, 240}, + /* 5462 */ {I_VPCMPGED, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3090, 241}, + /* 5463 */ {I_VPCMPGEQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3100, 240}, + /* 5464 */ {I_VPCMPGEQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3110, 240}, + /* 5465 */ {I_VPCMPGEQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3120, 241}, + /* 5466 */ {I_VPCMPGEUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3130, 244}, + /* 5467 */ {I_VPCMPGEUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3140, 244}, + /* 5468 */ {I_VPCMPGEUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3150, 245}, + /* 5469 */ {I_VPCMPGEUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3160, 240}, + /* 5470 */ {I_VPCMPGEUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3170, 240}, + /* 5471 */ {I_VPCMPGEUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3180, 241}, + /* 5472 */ {I_VPCMPGEUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3190, 240}, + /* 5473 */ {I_VPCMPGEUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3200, 240}, + /* 5474 */ {I_VPCMPGEUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3210, 241}, + /* 5475 */ {I_VPCMPGEUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3220, 244}, + /* 5476 */ {I_VPCMPGEUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3230, 244}, + /* 5477 */ {I_VPCMPGEUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3240, 245}, + /* 5478 */ {I_VPCMPGEW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3250, 244}, + /* 5479 */ {I_VPCMPGEW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3260, 244}, + /* 5480 */ {I_VPCMPGEW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3270, 245}, + /* 5481 */ {I_VPCMPGTB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3280, 244}, + /* 5482 */ {I_VPCMPGTB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3290, 244}, + /* 5483 */ {I_VPCMPGTB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3300, 245}, + /* 5484 */ {I_VPCMPGTD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3310, 240}, + /* 5485 */ {I_VPCMPGTD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3320, 240}, + /* 5486 */ {I_VPCMPGTD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3330, 241}, + /* 5487 */ {I_VPCMPGTQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3340, 240}, + /* 5488 */ {I_VPCMPGTQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3350, 240}, + /* 5489 */ {I_VPCMPGTQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3360, 241}, + /* 5490 */ {I_VPCMPGTUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3370, 244}, + /* 5491 */ {I_VPCMPGTUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3380, 244}, + /* 5492 */ {I_VPCMPGTUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3390, 245}, + /* 5493 */ {I_VPCMPGTUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3400, 240}, + /* 5494 */ {I_VPCMPGTUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3410, 240}, + /* 5495 */ {I_VPCMPGTUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3420, 241}, + /* 5496 */ {I_VPCMPGTUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3430, 240}, + /* 5497 */ {I_VPCMPGTUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3440, 240}, + /* 5498 */ {I_VPCMPGTUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3450, 241}, + /* 5499 */ {I_VPCMPGTUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3460, 244}, + /* 5500 */ {I_VPCMPGTUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3470, 244}, + /* 5501 */ {I_VPCMPGTUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3480, 245}, + /* 5502 */ {I_VPCMPGTW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3490, 244}, + /* 5503 */ {I_VPCMPGTW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3500, 244}, + /* 5504 */ {I_VPCMPGTW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3510, 245}, + /* 5505 */ {I_VPCMPLEB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3520, 244}, + /* 5506 */ {I_VPCMPLEB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3530, 244}, + /* 5507 */ {I_VPCMPLEB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3540, 245}, + /* 5508 */ {I_VPCMPLED, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3550, 240}, + /* 5509 */ {I_VPCMPLED, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3560, 240}, + /* 5510 */ {I_VPCMPLED, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3570, 241}, + /* 5511 */ {I_VPCMPLEQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3580, 240}, + /* 5512 */ {I_VPCMPLEQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3590, 240}, + /* 5513 */ {I_VPCMPLEQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3600, 241}, + /* 5514 */ {I_VPCMPLEUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3610, 244}, + /* 5515 */ {I_VPCMPLEUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3620, 244}, + /* 5516 */ {I_VPCMPLEUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3630, 245}, + /* 5517 */ {I_VPCMPLEUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3640, 240}, + /* 5518 */ {I_VPCMPLEUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3650, 240}, + /* 5519 */ {I_VPCMPLEUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3660, 241}, + /* 5520 */ {I_VPCMPLEUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3670, 240}, + /* 5521 */ {I_VPCMPLEUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3680, 240}, + /* 5522 */ {I_VPCMPLEUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3690, 241}, + /* 5523 */ {I_VPCMPLEUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3700, 244}, + /* 5524 */ {I_VPCMPLEUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3710, 244}, + /* 5525 */ {I_VPCMPLEUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3720, 245}, + /* 5526 */ {I_VPCMPLEW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3730, 244}, + /* 5527 */ {I_VPCMPLEW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3740, 244}, + /* 5528 */ {I_VPCMPLEW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3750, 245}, + /* 5529 */ {I_VPCMPLTB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3760, 244}, + /* 5530 */ {I_VPCMPLTB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3770, 244}, + /* 5531 */ {I_VPCMPLTB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3780, 245}, + /* 5532 */ {I_VPCMPLTD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3790, 240}, + /* 5533 */ {I_VPCMPLTD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3800, 240}, + /* 5534 */ {I_VPCMPLTD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3810, 241}, + /* 5535 */ {I_VPCMPLTQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3820, 240}, + /* 5536 */ {I_VPCMPLTQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3830, 240}, + /* 5537 */ {I_VPCMPLTQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3840, 241}, + /* 5538 */ {I_VPCMPLTUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3850, 244}, + /* 5539 */ {I_VPCMPLTUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3860, 244}, + /* 5540 */ {I_VPCMPLTUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3870, 245}, + /* 5541 */ {I_VPCMPLTUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3880, 240}, + /* 5542 */ {I_VPCMPLTUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3890, 240}, + /* 5543 */ {I_VPCMPLTUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3900, 241}, + /* 5544 */ {I_VPCMPLTUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3910, 240}, + /* 5545 */ {I_VPCMPLTUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3920, 240}, + /* 5546 */ {I_VPCMPLTUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3930, 241}, + /* 5547 */ {I_VPCMPLTUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3940, 244}, + /* 5548 */ {I_VPCMPLTUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3950, 244}, + /* 5549 */ {I_VPCMPLTUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3960, 245}, + /* 5550 */ {I_VPCMPLTW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3970, 244}, + /* 5551 */ {I_VPCMPLTW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3980, 244}, + /* 5552 */ {I_VPCMPLTW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3990, 245}, + /* 5553 */ {I_VPCMPNEQB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4000, 244}, + /* 5554 */ {I_VPCMPNEQB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4010, 244}, + /* 5555 */ {I_VPCMPNEQB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4020, 245}, + /* 5556 */ {I_VPCMPNEQD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+4030, 240}, + /* 5557 */ {I_VPCMPNEQD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+4040, 240}, + /* 5558 */ {I_VPCMPNEQD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+4050, 241}, + /* 5559 */ {I_VPCMPNEQQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+4060, 240}, + /* 5560 */ {I_VPCMPNEQQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+4070, 240}, + /* 5561 */ {I_VPCMPNEQQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+4080, 241}, + /* 5562 */ {I_VPCMPNEQUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4090, 244}, + /* 5563 */ {I_VPCMPNEQUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4100, 244}, + /* 5564 */ {I_VPCMPNEQUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4110, 245}, + /* 5565 */ {I_VPCMPNEQUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+4120, 240}, + /* 5566 */ {I_VPCMPNEQUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+4130, 240}, + /* 5567 */ {I_VPCMPNEQUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+4140, 241}, + /* 5568 */ {I_VPCMPNEQUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+4150, 240}, + /* 5569 */ {I_VPCMPNEQUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+4160, 240}, + /* 5570 */ {I_VPCMPNEQUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+4170, 241}, + /* 5571 */ {I_VPCMPNEQUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4180, 244}, + /* 5572 */ {I_VPCMPNEQUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4190, 244}, + /* 5573 */ {I_VPCMPNEQUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4200, 245}, + /* 5574 */ {I_VPCMPNEQW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4210, 244}, + /* 5575 */ {I_VPCMPNEQW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4220, 244}, + /* 5576 */ {I_VPCMPNEQW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+4230, 245}, + /* 5577 */ {I_VPCMPNGTB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3520, 244}, + /* 5578 */ {I_VPCMPNGTB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3530, 244}, + /* 5579 */ {I_VPCMPNGTB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3540, 245}, + /* 5580 */ {I_VPCMPNGTD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3550, 240}, + /* 5581 */ {I_VPCMPNGTD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3560, 240}, + /* 5582 */ {I_VPCMPNGTD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3570, 241}, + /* 5583 */ {I_VPCMPNGTQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3580, 240}, + /* 5584 */ {I_VPCMPNGTQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3590, 240}, + /* 5585 */ {I_VPCMPNGTQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3600, 241}, + /* 5586 */ {I_VPCMPNGTUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3610, 244}, + /* 5587 */ {I_VPCMPNGTUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3620, 244}, + /* 5588 */ {I_VPCMPNGTUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3630, 245}, + /* 5589 */ {I_VPCMPNGTUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3640, 240}, + /* 5590 */ {I_VPCMPNGTUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3650, 240}, + /* 5591 */ {I_VPCMPNGTUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3660, 241}, + /* 5592 */ {I_VPCMPNGTUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3670, 240}, + /* 5593 */ {I_VPCMPNGTUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3680, 240}, + /* 5594 */ {I_VPCMPNGTUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3690, 241}, + /* 5595 */ {I_VPCMPNGTUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3700, 244}, + /* 5596 */ {I_VPCMPNGTUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3710, 244}, + /* 5597 */ {I_VPCMPNGTUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3720, 245}, + /* 5598 */ {I_VPCMPNGTW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3730, 244}, + /* 5599 */ {I_VPCMPNGTW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3740, 244}, + /* 5600 */ {I_VPCMPNGTW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3750, 245}, + /* 5601 */ {I_VPCMPNLEB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3280, 244}, + /* 5602 */ {I_VPCMPNLEB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3290, 244}, + /* 5603 */ {I_VPCMPNLEB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3300, 245}, + /* 5604 */ {I_VPCMPNLED, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3310, 240}, + /* 5605 */ {I_VPCMPNLED, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3320, 240}, + /* 5606 */ {I_VPCMPNLED, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3330, 241}, + /* 5607 */ {I_VPCMPNLEQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3340, 240}, + /* 5608 */ {I_VPCMPNLEQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3350, 240}, + /* 5609 */ {I_VPCMPNLEQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3360, 241}, + /* 5610 */ {I_VPCMPNLEUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3370, 244}, + /* 5611 */ {I_VPCMPNLEUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3380, 244}, + /* 5612 */ {I_VPCMPNLEUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3390, 245}, + /* 5613 */ {I_VPCMPNLEUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3400, 240}, + /* 5614 */ {I_VPCMPNLEUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3410, 240}, + /* 5615 */ {I_VPCMPNLEUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3420, 241}, + /* 5616 */ {I_VPCMPNLEUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3430, 240}, + /* 5617 */ {I_VPCMPNLEUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3440, 240}, + /* 5618 */ {I_VPCMPNLEUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3450, 241}, + /* 5619 */ {I_VPCMPNLEUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3460, 244}, + /* 5620 */ {I_VPCMPNLEUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3470, 244}, + /* 5621 */ {I_VPCMPNLEUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3480, 245}, + /* 5622 */ {I_VPCMPNLEW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3490, 244}, + /* 5623 */ {I_VPCMPNLEW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3500, 244}, + /* 5624 */ {I_VPCMPNLEW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3510, 245}, + /* 5625 */ {I_VPCMPNLTB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3040, 244}, + /* 5626 */ {I_VPCMPNLTB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3050, 244}, + /* 5627 */ {I_VPCMPNLTB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3060, 245}, + /* 5628 */ {I_VPCMPNLTD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3070, 240}, + /* 5629 */ {I_VPCMPNLTD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3080, 240}, + /* 5630 */ {I_VPCMPNLTD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3090, 241}, + /* 5631 */ {I_VPCMPNLTQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3100, 240}, + /* 5632 */ {I_VPCMPNLTQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3110, 240}, + /* 5633 */ {I_VPCMPNLTQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3120, 241}, + /* 5634 */ {I_VPCMPNLTUB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3130, 244}, + /* 5635 */ {I_VPCMPNLTUB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3140, 244}, + /* 5636 */ {I_VPCMPNLTUB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3150, 245}, + /* 5637 */ {I_VPCMPNLTUD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3160, 240}, + /* 5638 */ {I_VPCMPNLTUD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3170, 240}, + /* 5639 */ {I_VPCMPNLTUD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+3180, 241}, + /* 5640 */ {I_VPCMPNLTUQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3190, 240}, + /* 5641 */ {I_VPCMPNLTUQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3200, 240}, + /* 5642 */ {I_VPCMPNLTUQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+3210, 241}, + /* 5643 */ {I_VPCMPNLTUW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3220, 244}, + /* 5644 */ {I_VPCMPNLTUW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3230, 244}, + /* 5645 */ {I_VPCMPNLTUW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3240, 245}, + /* 5646 */ {I_VPCMPNLTW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3250, 244}, + /* 5647 */ {I_VPCMPNLTW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3260, 244}, + /* 5648 */ {I_VPCMPNLTW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+3270, 245}, + /* 5649 */ {I_VPCMPB, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9244, 244}, + /* 5650 */ {I_VPCMPB, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9253, 244}, + /* 5651 */ {I_VPCMPB, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9262, 245}, + /* 5652 */ {I_VPCMPD, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+9271, 240}, + /* 5653 */ {I_VPCMPD, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+9280, 240}, + /* 5654 */ {I_VPCMPD, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+9289, 241}, + /* 5655 */ {I_VPCMPQ, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+9298, 240}, + /* 5656 */ {I_VPCMPQ, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+9307, 240}, + /* 5657 */ {I_VPCMPQ, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+9316, 241}, + /* 5658 */ {I_VPCMPUB, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9325, 244}, + /* 5659 */ {I_VPCMPUB, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9334, 244}, + /* 5660 */ {I_VPCMPUB, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9343, 245}, + /* 5661 */ {I_VPCMPUD, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+9352, 240}, + /* 5662 */ {I_VPCMPUD, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+9361, 240}, + /* 5663 */ {I_VPCMPUD, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,B32,0,0}, nasm_bytecodes+9370, 241}, + /* 5664 */ {I_VPCMPUQ, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+9379, 240}, + /* 5665 */ {I_VPCMPUQ, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+9388, 240}, + /* 5666 */ {I_VPCMPUQ, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,B64,0,0}, nasm_bytecodes+9397, 241}, + /* 5667 */ {I_VPCMPUW, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9406, 244}, + /* 5668 */ {I_VPCMPUW, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9415, 244}, + /* 5669 */ {I_VPCMPUW, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9424, 245}, + /* 5670 */ {I_VPCMPW, 4, {KREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9433, 244}, + /* 5671 */ {I_VPCMPW, 4, {KREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9442, 244}, + /* 5672 */ {I_VPCMPW, 4, {KREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK,0,0,0,0}, nasm_bytecodes+9451, 245}, + /* 5673 */ {I_VPCOMPRESSD, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22272, 240}, + /* 5674 */ {I_VPCOMPRESSD, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22280, 240}, + /* 5675 */ {I_VPCOMPRESSD, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22288, 241}, + /* 5676 */ {I_VPCOMPRESSD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22296, 240}, + /* 5677 */ {I_VPCOMPRESSD, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22304, 240}, + /* 5678 */ {I_VPCOMPRESSD, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22312, 241}, + /* 5679 */ {I_VPCOMPRESSQ, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22320, 240}, + /* 5680 */ {I_VPCOMPRESSQ, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22328, 240}, + /* 5681 */ {I_VPCOMPRESSQ, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+22336, 241}, + /* 5682 */ {I_VPCOMPRESSQ, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22344, 240}, + /* 5683 */ {I_VPCOMPRESSQ, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22352, 240}, + /* 5684 */ {I_VPCOMPRESSQ, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22360, 241}, + /* 5685 */ {I_VPCONFLICTD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22368, 248}, + /* 5686 */ {I_VPCONFLICTD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22376, 248}, + /* 5687 */ {I_VPCONFLICTD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22384, 249}, + /* 5688 */ {I_VPCONFLICTQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22392, 248}, + /* 5689 */ {I_VPCONFLICTQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22400, 248}, + /* 5690 */ {I_VPCONFLICTQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22408, 249}, + /* 5691 */ {I_VPERMB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22416, 250}, + /* 5692 */ {I_VPERMB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22424, 250}, + /* 5693 */ {I_VPERMB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22432, 250}, + /* 5694 */ {I_VPERMB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22440, 250}, + /* 5695 */ {I_VPERMB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22448, 251}, + /* 5696 */ {I_VPERMB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22456, 251}, + /* 5697 */ {I_VPERMD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22464, 240}, + /* 5698 */ {I_VPERMD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22472, 240}, + /* 5699 */ {I_VPERMD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22480, 241}, + /* 5700 */ {I_VPERMD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22488, 241}, + /* 5701 */ {I_VPERMI2B, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22496, 250}, + /* 5702 */ {I_VPERMI2B, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22504, 250}, + /* 5703 */ {I_VPERMI2B, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22512, 251}, + /* 5704 */ {I_VPERMI2D, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22520, 240}, + /* 5705 */ {I_VPERMI2D, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22528, 240}, + /* 5706 */ {I_VPERMI2D, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22536, 241}, + /* 5707 */ {I_VPERMI2PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22544, 240}, + /* 5708 */ {I_VPERMI2PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22552, 240}, + /* 5709 */ {I_VPERMI2PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22560, 241}, + /* 5710 */ {I_VPERMI2PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22568, 240}, + /* 5711 */ {I_VPERMI2PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22576, 240}, + /* 5712 */ {I_VPERMI2PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22584, 241}, + /* 5713 */ {I_VPERMI2Q, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22592, 240}, + /* 5714 */ {I_VPERMI2Q, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22600, 240}, + /* 5715 */ {I_VPERMI2Q, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22608, 241}, + /* 5716 */ {I_VPERMI2W, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22616, 244}, + /* 5717 */ {I_VPERMI2W, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22624, 244}, + /* 5718 */ {I_VPERMI2W, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22632, 245}, + /* 5719 */ {I_VPERMILPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9460, 240}, + /* 5720 */ {I_VPERMILPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9469, 240}, + /* 5721 */ {I_VPERMILPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9478, 241}, + /* 5722 */ {I_VPERMILPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22640, 240}, + /* 5723 */ {I_VPERMILPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22648, 240}, + /* 5724 */ {I_VPERMILPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22656, 240}, + /* 5725 */ {I_VPERMILPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22664, 240}, + /* 5726 */ {I_VPERMILPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22672, 241}, + /* 5727 */ {I_VPERMILPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22680, 241}, + /* 5728 */ {I_VPERMILPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9487, 240}, + /* 5729 */ {I_VPERMILPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9496, 240}, + /* 5730 */ {I_VPERMILPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9505, 241}, + /* 5731 */ {I_VPERMILPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22688, 240}, + /* 5732 */ {I_VPERMILPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22696, 240}, + /* 5733 */ {I_VPERMILPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22704, 240}, + /* 5734 */ {I_VPERMILPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22712, 240}, + /* 5735 */ {I_VPERMILPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22720, 241}, + /* 5736 */ {I_VPERMILPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22728, 241}, + /* 5737 */ {I_VPERMPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9514, 240}, + /* 5738 */ {I_VPERMPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9523, 241}, + /* 5739 */ {I_VPERMPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22736, 240}, + /* 5740 */ {I_VPERMPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22744, 240}, + /* 5741 */ {I_VPERMPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22752, 241}, + /* 5742 */ {I_VPERMPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22760, 241}, + /* 5743 */ {I_VPERMPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22768, 240}, + /* 5744 */ {I_VPERMPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22776, 240}, + /* 5745 */ {I_VPERMPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22784, 241}, + /* 5746 */ {I_VPERMPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+22792, 241}, + /* 5747 */ {I_VPERMQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9532, 240}, + /* 5748 */ {I_VPERMQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9541, 241}, + /* 5749 */ {I_VPERMQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22800, 240}, + /* 5750 */ {I_VPERMQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22808, 240}, + /* 5751 */ {I_VPERMQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22816, 241}, + /* 5752 */ {I_VPERMQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+22824, 241}, + /* 5753 */ {I_VPERMT2B, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22832, 250}, + /* 5754 */ {I_VPERMT2B, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22840, 250}, + /* 5755 */ {I_VPERMT2B, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22848, 251}, + /* 5756 */ {I_VPERMT2D, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22856, 240}, + /* 5757 */ {I_VPERMT2D, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22864, 240}, + /* 5758 */ {I_VPERMT2D, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22872, 241}, + /* 5759 */ {I_VPERMT2PD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22880, 240}, + /* 5760 */ {I_VPERMT2PD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22888, 240}, + /* 5761 */ {I_VPERMT2PD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22896, 241}, + /* 5762 */ {I_VPERMT2PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22904, 240}, + /* 5763 */ {I_VPERMT2PS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22912, 240}, + /* 5764 */ {I_VPERMT2PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+22920, 241}, + /* 5765 */ {I_VPERMT2Q, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22928, 240}, + /* 5766 */ {I_VPERMT2Q, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22936, 240}, + /* 5767 */ {I_VPERMT2Q, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+22944, 241}, + /* 5768 */ {I_VPERMT2W, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22952, 244}, + /* 5769 */ {I_VPERMT2W, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22960, 244}, + /* 5770 */ {I_VPERMT2W, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22968, 245}, + /* 5771 */ {I_VPERMW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22976, 244}, + /* 5772 */ {I_VPERMW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22984, 244}, + /* 5773 */ {I_VPERMW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+22992, 244}, + /* 5774 */ {I_VPERMW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23000, 244}, + /* 5775 */ {I_VPERMW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23008, 245}, + /* 5776 */ {I_VPERMW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23016, 245}, + /* 5777 */ {I_VPEXPANDD, 2, {XMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23024, 240}, + /* 5778 */ {I_VPEXPANDD, 2, {YMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23032, 240}, + /* 5779 */ {I_VPEXPANDD, 2, {ZMMREG,MEMORY|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23040, 241}, + /* 5780 */ {I_VPEXPANDD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23024, 240}, + /* 5781 */ {I_VPEXPANDD, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23032, 240}, + /* 5782 */ {I_VPEXPANDD, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23040, 241}, + /* 5783 */ {I_VPEXPANDQ, 2, {XMMREG,MEMORY|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23048, 240}, + /* 5784 */ {I_VPEXPANDQ, 2, {YMMREG,MEMORY|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23056, 240}, + /* 5785 */ {I_VPEXPANDQ, 2, {ZMMREG,MEMORY|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23064, 241}, + /* 5786 */ {I_VPEXPANDQ, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23048, 240}, + /* 5787 */ {I_VPEXPANDQ, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23056, 240}, + /* 5788 */ {I_VPEXPANDQ, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23064, 241}, + /* 5789 */ {I_VPEXTRB, 3, {REG_GPR|BITS8,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9550, 245}, + /* 5790 */ {I_VPEXTRB, 3, {REG_GPR|BITS16,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9550, 245}, + /* 5791 */ {I_VPEXTRB, 3, {REG_GPR|BITS32,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9550, 245}, + /* 5792 */ {I_VPEXTRB, 3, {REG_GPR|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9550, 245}, + /* 5793 */ {I_VPEXTRB, 3, {MEMORY|BITS8,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9550, 245}, + /* 5794 */ {I_VPEXTRD, 3, {RM_GPR|BITS32,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9559, 243}, + /* 5795 */ {I_VPEXTRQ, 3, {RM_GPR|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9568, 243}, + /* 5796 */ {I_VPEXTRW, 3, {REG_GPR|BITS16,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9577, 245}, + /* 5797 */ {I_VPEXTRW, 3, {REG_GPR|BITS32,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9577, 245}, + /* 5798 */ {I_VPEXTRW, 3, {REG_GPR|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9577, 245}, + /* 5799 */ {I_VPEXTRW, 3, {MEMORY|BITS16,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9577, 245}, + /* 5800 */ {I_VPEXTRW, 3, {REG_GPR|BITS16,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9586, 245}, + /* 5801 */ {I_VPEXTRW, 3, {REG_GPR|BITS32,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9586, 245}, + /* 5802 */ {I_VPEXTRW, 3, {REG_GPR|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9586, 245}, + /* 5803 */ {I_VPGATHERDD, 2, {XMMREG,XMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9595, 240}, + /* 5804 */ {I_VPGATHERDD, 2, {YMMREG,YMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9604, 240}, + /* 5805 */ {I_VPGATHERDD, 2, {ZMMREG,ZMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9613, 241}, + /* 5806 */ {I_VPGATHERDQ, 2, {XMMREG,XMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9622, 240}, + /* 5807 */ {I_VPGATHERDQ, 2, {YMMREG,XMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9631, 240}, + /* 5808 */ {I_VPGATHERDQ, 2, {ZMMREG,YMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9640, 241}, + /* 5809 */ {I_VPGATHERQD, 2, {XMMREG,XMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9649, 240}, + /* 5810 */ {I_VPGATHERQD, 2, {XMMREG,YMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9658, 240}, + /* 5811 */ {I_VPGATHERQD, 2, {YMMREG,ZMEM|BITS32,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9667, 241}, + /* 5812 */ {I_VPGATHERQQ, 2, {XMMREG,XMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9676, 240}, + /* 5813 */ {I_VPGATHERQQ, 2, {YMMREG,YMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9685, 240}, + /* 5814 */ {I_VPGATHERQQ, 2, {ZMMREG,ZMEM|BITS64,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9694, 241}, + /* 5815 */ {I_VPINSRB, 4, {XMMREG,XMMREG,REG_GPR|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9703, 245}, + /* 5816 */ {I_VPINSRB, 3, {XMMREG,REG_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9712, 245}, + /* 5817 */ {I_VPINSRB, 4, {XMMREG,XMMREG,MEMORY|BITS8,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9703, 245}, + /* 5818 */ {I_VPINSRB, 3, {XMMREG,MEMORY|BITS8,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9712, 245}, + /* 5819 */ {I_VPINSRD, 4, {XMMREG,XMMREG,RM_GPR|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9721, 243}, + /* 5820 */ {I_VPINSRD, 3, {XMMREG,RM_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9730, 243}, + /* 5821 */ {I_VPINSRQ, 4, {XMMREG,XMMREG,RM_GPR|BITS64,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9739, 243}, + /* 5822 */ {I_VPINSRQ, 3, {XMMREG,RM_GPR|BITS64,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9748, 243}, + /* 5823 */ {I_VPINSRW, 4, {XMMREG,XMMREG,REG_GPR|BITS32,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9757, 245}, + /* 5824 */ {I_VPINSRW, 3, {XMMREG,REG_GPR|BITS32,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9766, 245}, + /* 5825 */ {I_VPINSRW, 4, {XMMREG,XMMREG,MEMORY|BITS16,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+9757, 245}, + /* 5826 */ {I_VPINSRW, 3, {XMMREG,MEMORY|BITS16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+9766, 245}, + /* 5827 */ {I_VPLZCNTD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23072, 248}, + /* 5828 */ {I_VPLZCNTD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23080, 248}, + /* 5829 */ {I_VPLZCNTD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23088, 249}, + /* 5830 */ {I_VPLZCNTQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23096, 248}, + /* 5831 */ {I_VPLZCNTQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23104, 248}, + /* 5832 */ {I_VPLZCNTQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23112, 249}, + /* 5833 */ {I_VPMADD52HUQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23120, 252}, + /* 5834 */ {I_VPMADD52HUQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23128, 252}, + /* 5835 */ {I_VPMADD52HUQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23136, 253}, + /* 5836 */ {I_VPMADD52LUQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23144, 252}, + /* 5837 */ {I_VPMADD52LUQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23152, 252}, + /* 5838 */ {I_VPMADD52LUQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23160, 253}, + /* 5839 */ {I_VPMADDUBSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23168, 244}, + /* 5840 */ {I_VPMADDUBSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23176, 244}, + /* 5841 */ {I_VPMADDUBSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23184, 244}, + /* 5842 */ {I_VPMADDUBSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23192, 244}, + /* 5843 */ {I_VPMADDUBSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23200, 245}, + /* 5844 */ {I_VPMADDUBSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23208, 245}, + /* 5845 */ {I_VPMADDWD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23216, 244}, + /* 5846 */ {I_VPMADDWD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23224, 244}, + /* 5847 */ {I_VPMADDWD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23232, 244}, + /* 5848 */ {I_VPMADDWD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23240, 244}, + /* 5849 */ {I_VPMADDWD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23248, 245}, + /* 5850 */ {I_VPMADDWD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23256, 245}, + /* 5851 */ {I_VPMAXSB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23264, 244}, + /* 5852 */ {I_VPMAXSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23272, 244}, + /* 5853 */ {I_VPMAXSB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23280, 244}, + /* 5854 */ {I_VPMAXSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23288, 244}, + /* 5855 */ {I_VPMAXSB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23296, 245}, + /* 5856 */ {I_VPMAXSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23304, 245}, + /* 5857 */ {I_VPMAXSD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23312, 240}, + /* 5858 */ {I_VPMAXSD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23320, 240}, + /* 5859 */ {I_VPMAXSD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23328, 240}, + /* 5860 */ {I_VPMAXSD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23336, 240}, + /* 5861 */ {I_VPMAXSD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23344, 241}, + /* 5862 */ {I_VPMAXSD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23352, 241}, + /* 5863 */ {I_VPMAXSQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23360, 240}, + /* 5864 */ {I_VPMAXSQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23368, 240}, + /* 5865 */ {I_VPMAXSQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23376, 240}, + /* 5866 */ {I_VPMAXSQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23384, 240}, + /* 5867 */ {I_VPMAXSQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23392, 241}, + /* 5868 */ {I_VPMAXSQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23400, 241}, + /* 5869 */ {I_VPMAXSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23408, 244}, + /* 5870 */ {I_VPMAXSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23416, 244}, + /* 5871 */ {I_VPMAXSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23424, 244}, + /* 5872 */ {I_VPMAXSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23432, 244}, + /* 5873 */ {I_VPMAXSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23440, 245}, + /* 5874 */ {I_VPMAXSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23448, 245}, + /* 5875 */ {I_VPMAXUB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23456, 244}, + /* 5876 */ {I_VPMAXUB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23464, 244}, + /* 5877 */ {I_VPMAXUB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23472, 244}, + /* 5878 */ {I_VPMAXUB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23480, 244}, + /* 5879 */ {I_VPMAXUB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23488, 245}, + /* 5880 */ {I_VPMAXUB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23496, 245}, + /* 5881 */ {I_VPMAXUD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23504, 240}, + /* 5882 */ {I_VPMAXUD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23512, 240}, + /* 5883 */ {I_VPMAXUD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23520, 240}, + /* 5884 */ {I_VPMAXUD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23528, 240}, + /* 5885 */ {I_VPMAXUD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23536, 241}, + /* 5886 */ {I_VPMAXUD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23544, 241}, + /* 5887 */ {I_VPMAXUQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23552, 240}, + /* 5888 */ {I_VPMAXUQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23560, 240}, + /* 5889 */ {I_VPMAXUQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23568, 240}, + /* 5890 */ {I_VPMAXUQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23576, 240}, + /* 5891 */ {I_VPMAXUQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23584, 241}, + /* 5892 */ {I_VPMAXUQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23592, 241}, + /* 5893 */ {I_VPMAXUW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23600, 244}, + /* 5894 */ {I_VPMAXUW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23608, 244}, + /* 5895 */ {I_VPMAXUW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23616, 244}, + /* 5896 */ {I_VPMAXUW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23624, 244}, + /* 5897 */ {I_VPMAXUW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23632, 245}, + /* 5898 */ {I_VPMAXUW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23640, 245}, + /* 5899 */ {I_VPMINSB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23648, 244}, + /* 5900 */ {I_VPMINSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23656, 244}, + /* 5901 */ {I_VPMINSB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23664, 244}, + /* 5902 */ {I_VPMINSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23672, 244}, + /* 5903 */ {I_VPMINSB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23680, 245}, + /* 5904 */ {I_VPMINSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23688, 245}, + /* 5905 */ {I_VPMINSD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23696, 240}, + /* 5906 */ {I_VPMINSD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23704, 240}, + /* 5907 */ {I_VPMINSD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23712, 240}, + /* 5908 */ {I_VPMINSD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23720, 240}, + /* 5909 */ {I_VPMINSD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23728, 241}, + /* 5910 */ {I_VPMINSD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23736, 241}, + /* 5911 */ {I_VPMINSQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23744, 240}, + /* 5912 */ {I_VPMINSQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23752, 240}, + /* 5913 */ {I_VPMINSQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23760, 240}, + /* 5914 */ {I_VPMINSQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23768, 240}, + /* 5915 */ {I_VPMINSQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23776, 241}, + /* 5916 */ {I_VPMINSQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23784, 241}, + /* 5917 */ {I_VPMINSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23792, 244}, + /* 5918 */ {I_VPMINSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23800, 244}, + /* 5919 */ {I_VPMINSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23808, 244}, + /* 5920 */ {I_VPMINSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23816, 244}, + /* 5921 */ {I_VPMINSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23824, 245}, + /* 5922 */ {I_VPMINSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23832, 245}, + /* 5923 */ {I_VPMINUB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23840, 244}, + /* 5924 */ {I_VPMINUB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23848, 244}, + /* 5925 */ {I_VPMINUB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23856, 244}, + /* 5926 */ {I_VPMINUB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23864, 244}, + /* 5927 */ {I_VPMINUB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23872, 245}, + /* 5928 */ {I_VPMINUB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23880, 245}, + /* 5929 */ {I_VPMINUD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23888, 240}, + /* 5930 */ {I_VPMINUD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23896, 240}, + /* 5931 */ {I_VPMINUD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23904, 240}, + /* 5932 */ {I_VPMINUD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23912, 240}, + /* 5933 */ {I_VPMINUD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+23920, 241}, + /* 5934 */ {I_VPMINUD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+23928, 241}, + /* 5935 */ {I_VPMINUQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23936, 240}, + /* 5936 */ {I_VPMINUQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23944, 240}, + /* 5937 */ {I_VPMINUQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23952, 240}, + /* 5938 */ {I_VPMINUQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23960, 240}, + /* 5939 */ {I_VPMINUQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+23968, 241}, + /* 5940 */ {I_VPMINUQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+23976, 241}, + /* 5941 */ {I_VPMINUW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23984, 244}, + /* 5942 */ {I_VPMINUW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+23992, 244}, + /* 5943 */ {I_VPMINUW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24000, 244}, + /* 5944 */ {I_VPMINUW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24008, 244}, + /* 5945 */ {I_VPMINUW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24016, 245}, + /* 5946 */ {I_VPMINUW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24024, 245}, + /* 5947 */ {I_VPMOVB2M, 2, {KREG,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24032, 244}, + /* 5948 */ {I_VPMOVB2M, 2, {KREG,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24040, 244}, + /* 5949 */ {I_VPMOVB2M, 2, {KREG,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24048, 245}, + /* 5950 */ {I_VPMOVD2M, 2, {KREG,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24056, 242}, + /* 5951 */ {I_VPMOVD2M, 2, {KREG,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24064, 242}, + /* 5952 */ {I_VPMOVD2M, 2, {KREG,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24072, 243}, + /* 5953 */ {I_VPMOVDB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24080, 240}, + /* 5954 */ {I_VPMOVDB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24088, 240}, + /* 5955 */ {I_VPMOVDB, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24096, 241}, + /* 5956 */ {I_VPMOVDB, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24104, 240}, + /* 5957 */ {I_VPMOVDB, 2, {MEMORY|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24112, 240}, + /* 5958 */ {I_VPMOVDB, 2, {MEMORY|BITS128,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24120, 241}, + /* 5959 */ {I_VPMOVDW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24128, 240}, + /* 5960 */ {I_VPMOVDW, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24136, 240}, + /* 5961 */ {I_VPMOVDW, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24144, 241}, + /* 5962 */ {I_VPMOVDW, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24152, 240}, + /* 5963 */ {I_VPMOVDW, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24160, 240}, + /* 5964 */ {I_VPMOVDW, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24168, 241}, + /* 5965 */ {I_VPMOVM2B, 2, {XMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24176, 244}, + /* 5966 */ {I_VPMOVM2B, 2, {YMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24184, 244}, + /* 5967 */ {I_VPMOVM2B, 2, {ZMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24192, 245}, + /* 5968 */ {I_VPMOVM2D, 2, {XMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24200, 242}, + /* 5969 */ {I_VPMOVM2D, 2, {YMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24208, 242}, + /* 5970 */ {I_VPMOVM2D, 2, {ZMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24216, 243}, + /* 5971 */ {I_VPMOVM2Q, 2, {XMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24224, 242}, + /* 5972 */ {I_VPMOVM2Q, 2, {YMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24232, 242}, + /* 5973 */ {I_VPMOVM2Q, 2, {ZMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24240, 243}, + /* 5974 */ {I_VPMOVM2W, 2, {XMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24248, 244}, + /* 5975 */ {I_VPMOVM2W, 2, {YMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24256, 244}, + /* 5976 */ {I_VPMOVM2W, 2, {ZMMREG,KREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24264, 245}, + /* 5977 */ {I_VPMOVQ2M, 2, {KREG,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24272, 242}, + /* 5978 */ {I_VPMOVQ2M, 2, {KREG,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24280, 242}, + /* 5979 */ {I_VPMOVQ2M, 2, {KREG,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+24288, 243}, + /* 5980 */ {I_VPMOVQB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24296, 240}, + /* 5981 */ {I_VPMOVQB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24304, 240}, + /* 5982 */ {I_VPMOVQB, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24312, 241}, + /* 5983 */ {I_VPMOVQB, 2, {MEMORY|BITS16,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24320, 240}, + /* 5984 */ {I_VPMOVQB, 2, {MEMORY|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24328, 240}, + /* 5985 */ {I_VPMOVQB, 2, {MEMORY|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24336, 241}, + /* 5986 */ {I_VPMOVQD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24344, 240}, + /* 5987 */ {I_VPMOVQD, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24352, 240}, + /* 5988 */ {I_VPMOVQD, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24360, 241}, + /* 5989 */ {I_VPMOVQD, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24368, 240}, + /* 5990 */ {I_VPMOVQD, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24376, 240}, + /* 5991 */ {I_VPMOVQD, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24384, 241}, + /* 5992 */ {I_VPMOVQW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24392, 240}, + /* 5993 */ {I_VPMOVQW, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24400, 240}, + /* 5994 */ {I_VPMOVQW, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24408, 241}, + /* 5995 */ {I_VPMOVQW, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24416, 240}, + /* 5996 */ {I_VPMOVQW, 2, {MEMORY|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24424, 240}, + /* 5997 */ {I_VPMOVQW, 2, {MEMORY|BITS128,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24432, 241}, + /* 5998 */ {I_VPMOVSDB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24440, 240}, + /* 5999 */ {I_VPMOVSDB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24448, 240}, + /* 6000 */ {I_VPMOVSDB, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24456, 241}, + /* 6001 */ {I_VPMOVSDB, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24464, 240}, + /* 6002 */ {I_VPMOVSDB, 2, {MEMORY|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24472, 240}, + /* 6003 */ {I_VPMOVSDB, 2, {MEMORY|BITS128,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24480, 241}, + /* 6004 */ {I_VPMOVSDW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24488, 240}, + /* 6005 */ {I_VPMOVSDW, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24496, 240}, + /* 6006 */ {I_VPMOVSDW, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24504, 241}, + /* 6007 */ {I_VPMOVSDW, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24512, 240}, + /* 6008 */ {I_VPMOVSDW, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24520, 240}, + /* 6009 */ {I_VPMOVSDW, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24528, 241}, + /* 6010 */ {I_VPMOVSQB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24536, 240}, + /* 6011 */ {I_VPMOVSQB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24544, 240}, + /* 6012 */ {I_VPMOVSQB, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24552, 241}, + /* 6013 */ {I_VPMOVSQB, 2, {MEMORY|BITS16,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24560, 240}, + /* 6014 */ {I_VPMOVSQB, 2, {MEMORY|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24568, 240}, + /* 6015 */ {I_VPMOVSQB, 2, {MEMORY|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24576, 241}, + /* 6016 */ {I_VPMOVSQD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24584, 240}, + /* 6017 */ {I_VPMOVSQD, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24592, 240}, + /* 6018 */ {I_VPMOVSQD, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24600, 241}, + /* 6019 */ {I_VPMOVSQD, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24608, 240}, + /* 6020 */ {I_VPMOVSQD, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24616, 240}, + /* 6021 */ {I_VPMOVSQD, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24624, 241}, + /* 6022 */ {I_VPMOVSQW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24632, 240}, + /* 6023 */ {I_VPMOVSQW, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24640, 240}, + /* 6024 */ {I_VPMOVSQW, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24648, 241}, + /* 6025 */ {I_VPMOVSQW, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24656, 240}, + /* 6026 */ {I_VPMOVSQW, 2, {MEMORY|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24664, 240}, + /* 6027 */ {I_VPMOVSQW, 2, {MEMORY|BITS128,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24672, 241}, + /* 6028 */ {I_VPMOVSWB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24680, 244}, + /* 6029 */ {I_VPMOVSWB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24688, 244}, + /* 6030 */ {I_VPMOVSWB, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24696, 245}, + /* 6031 */ {I_VPMOVSWB, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24704, 244}, + /* 6032 */ {I_VPMOVSWB, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24712, 244}, + /* 6033 */ {I_VPMOVSWB, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24720, 245}, + /* 6034 */ {I_VPMOVSXBD, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24728, 240}, + /* 6035 */ {I_VPMOVSXBD, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24736, 240}, + /* 6036 */ {I_VPMOVSXBD, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24744, 241}, + /* 6037 */ {I_VPMOVSXBQ, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24752, 240}, + /* 6038 */ {I_VPMOVSXBQ, 2, {YMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24760, 240}, + /* 6039 */ {I_VPMOVSXBQ, 2, {ZMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24768, 241}, + /* 6040 */ {I_VPMOVSXBW, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24776, 244}, + /* 6041 */ {I_VPMOVSXBW, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24784, 244}, + /* 6042 */ {I_VPMOVSXBW, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24792, 245}, + /* 6043 */ {I_VPMOVSXDQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24800, 240}, + /* 6044 */ {I_VPMOVSXDQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24808, 240}, + /* 6045 */ {I_VPMOVSXDQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24816, 241}, + /* 6046 */ {I_VPMOVSXWD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24824, 240}, + /* 6047 */ {I_VPMOVSXWD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24832, 240}, + /* 6048 */ {I_VPMOVSXWD, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24840, 241}, + /* 6049 */ {I_VPMOVSXWQ, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24848, 240}, + /* 6050 */ {I_VPMOVSXWQ, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24856, 240}, + /* 6051 */ {I_VPMOVSXWQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24864, 241}, + /* 6052 */ {I_VPMOVUSDB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24872, 240}, + /* 6053 */ {I_VPMOVUSDB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24880, 240}, + /* 6054 */ {I_VPMOVUSDB, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24888, 241}, + /* 6055 */ {I_VPMOVUSDB, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24896, 240}, + /* 6056 */ {I_VPMOVUSDB, 2, {MEMORY|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24904, 240}, + /* 6057 */ {I_VPMOVUSDB, 2, {MEMORY|BITS128,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24912, 241}, + /* 6058 */ {I_VPMOVUSDW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24920, 240}, + /* 6059 */ {I_VPMOVUSDW, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24928, 240}, + /* 6060 */ {I_VPMOVUSDW, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24936, 241}, + /* 6061 */ {I_VPMOVUSDW, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24944, 240}, + /* 6062 */ {I_VPMOVUSDW, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24952, 240}, + /* 6063 */ {I_VPMOVUSDW, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24960, 241}, + /* 6064 */ {I_VPMOVUSQB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24968, 240}, + /* 6065 */ {I_VPMOVUSQB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24976, 240}, + /* 6066 */ {I_VPMOVUSQB, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+24984, 241}, + /* 6067 */ {I_VPMOVUSQB, 2, {MEMORY|BITS16,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+24992, 240}, + /* 6068 */ {I_VPMOVUSQB, 2, {MEMORY|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25000, 240}, + /* 6069 */ {I_VPMOVUSQB, 2, {MEMORY|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25008, 241}, + /* 6070 */ {I_VPMOVUSQD, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25016, 240}, + /* 6071 */ {I_VPMOVUSQD, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25024, 240}, + /* 6072 */ {I_VPMOVUSQD, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25032, 241}, + /* 6073 */ {I_VPMOVUSQD, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25040, 240}, + /* 6074 */ {I_VPMOVUSQD, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25048, 240}, + /* 6075 */ {I_VPMOVUSQD, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25056, 241}, + /* 6076 */ {I_VPMOVUSQW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25064, 240}, + /* 6077 */ {I_VPMOVUSQW, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25072, 240}, + /* 6078 */ {I_VPMOVUSQW, 2, {XMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25080, 241}, + /* 6079 */ {I_VPMOVUSQW, 2, {MEMORY|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25088, 240}, + /* 6080 */ {I_VPMOVUSQW, 2, {MEMORY|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25096, 240}, + /* 6081 */ {I_VPMOVUSQW, 2, {MEMORY|BITS128,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25104, 241}, + /* 6082 */ {I_VPMOVUSWB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25112, 244}, + /* 6083 */ {I_VPMOVUSWB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25120, 244}, + /* 6084 */ {I_VPMOVUSWB, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25128, 245}, + /* 6085 */ {I_VPMOVUSWB, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25136, 244}, + /* 6086 */ {I_VPMOVUSWB, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25144, 244}, + /* 6087 */ {I_VPMOVUSWB, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25152, 245}, + /* 6088 */ {I_VPMOVW2M, 2, {KREG,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+25160, 244}, + /* 6089 */ {I_VPMOVW2M, 2, {KREG,YMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+25168, 244}, + /* 6090 */ {I_VPMOVW2M, 2, {KREG,ZMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+25176, 245}, + /* 6091 */ {I_VPMOVWB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25184, 244}, + /* 6092 */ {I_VPMOVWB, 2, {XMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25192, 244}, + /* 6093 */ {I_VPMOVWB, 2, {YMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25200, 245}, + /* 6094 */ {I_VPMOVWB, 2, {MEMORY|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25208, 244}, + /* 6095 */ {I_VPMOVWB, 2, {MEMORY|BITS128,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25216, 244}, + /* 6096 */ {I_VPMOVWB, 2, {MEMORY|BITS256,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+25224, 245}, + /* 6097 */ {I_VPMOVZXBD, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25232, 240}, + /* 6098 */ {I_VPMOVZXBD, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25240, 240}, + /* 6099 */ {I_VPMOVZXBD, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25248, 241}, + /* 6100 */ {I_VPMOVZXBQ, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25256, 240}, + /* 6101 */ {I_VPMOVZXBQ, 2, {YMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25264, 240}, + /* 6102 */ {I_VPMOVZXBQ, 2, {ZMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25272, 241}, + /* 6103 */ {I_VPMOVZXBW, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25280, 244}, + /* 6104 */ {I_VPMOVZXBW, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25288, 244}, + /* 6105 */ {I_VPMOVZXBW, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25296, 245}, + /* 6106 */ {I_VPMOVZXDQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25304, 240}, + /* 6107 */ {I_VPMOVZXDQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25312, 240}, + /* 6108 */ {I_VPMOVZXDQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25320, 241}, + /* 6109 */ {I_VPMOVZXWD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25328, 240}, + /* 6110 */ {I_VPMOVZXWD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25336, 240}, + /* 6111 */ {I_VPMOVZXWD, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25344, 241}, + /* 6112 */ {I_VPMOVZXWQ, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25352, 240}, + /* 6113 */ {I_VPMOVZXWQ, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25360, 240}, + /* 6114 */ {I_VPMOVZXWQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25368, 241}, + /* 6115 */ {I_VPMULDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25376, 240}, + /* 6116 */ {I_VPMULDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25384, 240}, + /* 6117 */ {I_VPMULDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25392, 240}, + /* 6118 */ {I_VPMULDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25400, 240}, + /* 6119 */ {I_VPMULDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25408, 241}, + /* 6120 */ {I_VPMULDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25416, 241}, + /* 6121 */ {I_VPMULHRSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25424, 244}, + /* 6122 */ {I_VPMULHRSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25432, 244}, + /* 6123 */ {I_VPMULHRSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25440, 244}, + /* 6124 */ {I_VPMULHRSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25448, 244}, + /* 6125 */ {I_VPMULHRSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25456, 245}, + /* 6126 */ {I_VPMULHRSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25464, 245}, + /* 6127 */ {I_VPMULHUW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25472, 244}, + /* 6128 */ {I_VPMULHUW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25480, 244}, + /* 6129 */ {I_VPMULHUW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25488, 244}, + /* 6130 */ {I_VPMULHUW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25496, 244}, + /* 6131 */ {I_VPMULHUW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25504, 245}, + /* 6132 */ {I_VPMULHUW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25512, 245}, + /* 6133 */ {I_VPMULHW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25520, 244}, + /* 6134 */ {I_VPMULHW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25528, 244}, + /* 6135 */ {I_VPMULHW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25536, 244}, + /* 6136 */ {I_VPMULHW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25544, 244}, + /* 6137 */ {I_VPMULHW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25552, 245}, + /* 6138 */ {I_VPMULHW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25560, 245}, + /* 6139 */ {I_VPMULLD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25568, 240}, + /* 6140 */ {I_VPMULLD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25576, 240}, + /* 6141 */ {I_VPMULLD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25584, 240}, + /* 6142 */ {I_VPMULLD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25592, 240}, + /* 6143 */ {I_VPMULLD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25600, 241}, + /* 6144 */ {I_VPMULLD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25608, 241}, + /* 6145 */ {I_VPMULLQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25616, 242}, + /* 6146 */ {I_VPMULLQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25624, 242}, + /* 6147 */ {I_VPMULLQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25632, 242}, + /* 6148 */ {I_VPMULLQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25640, 242}, + /* 6149 */ {I_VPMULLQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25648, 243}, + /* 6150 */ {I_VPMULLQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25656, 243}, + /* 6151 */ {I_VPMULLW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25664, 244}, + /* 6152 */ {I_VPMULLW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25672, 244}, + /* 6153 */ {I_VPMULLW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25680, 244}, + /* 6154 */ {I_VPMULLW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25688, 244}, + /* 6155 */ {I_VPMULLW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25696, 245}, + /* 6156 */ {I_VPMULLW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+25704, 245}, + /* 6157 */ {I_VPMULTISHIFTQB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25712, 250}, + /* 6158 */ {I_VPMULTISHIFTQB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25720, 250}, + /* 6159 */ {I_VPMULTISHIFTQB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25728, 250}, + /* 6160 */ {I_VPMULTISHIFTQB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25736, 250}, + /* 6161 */ {I_VPMULTISHIFTQB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25744, 251}, + /* 6162 */ {I_VPMULTISHIFTQB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25752, 251}, + /* 6163 */ {I_VPMULUDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25760, 240}, + /* 6164 */ {I_VPMULUDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25768, 240}, + /* 6165 */ {I_VPMULUDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25776, 240}, + /* 6166 */ {I_VPMULUDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25784, 240}, + /* 6167 */ {I_VPMULUDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25792, 241}, + /* 6168 */ {I_VPMULUDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25800, 241}, + /* 6169 */ {I_VPORD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25808, 240}, + /* 6170 */ {I_VPORD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25816, 240}, + /* 6171 */ {I_VPORD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25824, 240}, + /* 6172 */ {I_VPORD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25832, 240}, + /* 6173 */ {I_VPORD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25840, 241}, + /* 6174 */ {I_VPORD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25848, 241}, + /* 6175 */ {I_VPORQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25856, 240}, + /* 6176 */ {I_VPORQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25864, 240}, + /* 6177 */ {I_VPORQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25872, 240}, + /* 6178 */ {I_VPORQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25880, 240}, + /* 6179 */ {I_VPORQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25888, 241}, + /* 6180 */ {I_VPORQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25896, 241}, + /* 6181 */ {I_VPROLD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9775, 240}, + /* 6182 */ {I_VPROLD, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9784, 240}, + /* 6183 */ {I_VPROLD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9793, 240}, + /* 6184 */ {I_VPROLD, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9802, 240}, + /* 6185 */ {I_VPROLD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9811, 241}, + /* 6186 */ {I_VPROLD, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9820, 241}, + /* 6187 */ {I_VPROLQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9829, 240}, + /* 6188 */ {I_VPROLQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9838, 240}, + /* 6189 */ {I_VPROLQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9847, 240}, + /* 6190 */ {I_VPROLQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9856, 240}, + /* 6191 */ {I_VPROLQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9865, 241}, + /* 6192 */ {I_VPROLQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9874, 241}, + /* 6193 */ {I_VPROLVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25904, 240}, + /* 6194 */ {I_VPROLVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25912, 240}, + /* 6195 */ {I_VPROLVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25920, 240}, + /* 6196 */ {I_VPROLVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25928, 240}, + /* 6197 */ {I_VPROLVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+25936, 241}, + /* 6198 */ {I_VPROLVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+25944, 241}, + /* 6199 */ {I_VPROLVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25952, 240}, + /* 6200 */ {I_VPROLVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25960, 240}, + /* 6201 */ {I_VPROLVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25968, 240}, + /* 6202 */ {I_VPROLVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25976, 240}, + /* 6203 */ {I_VPROLVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+25984, 241}, + /* 6204 */ {I_VPROLVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+25992, 241}, + /* 6205 */ {I_VPRORD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9883, 240}, + /* 6206 */ {I_VPRORD, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9892, 240}, + /* 6207 */ {I_VPRORD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9901, 240}, + /* 6208 */ {I_VPRORD, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9910, 240}, + /* 6209 */ {I_VPRORD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+9919, 241}, + /* 6210 */ {I_VPRORD, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9928, 241}, + /* 6211 */ {I_VPRORQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9937, 240}, + /* 6212 */ {I_VPRORQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9946, 240}, + /* 6213 */ {I_VPRORQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9955, 240}, + /* 6214 */ {I_VPRORQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9964, 240}, + /* 6215 */ {I_VPRORQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+9973, 241}, + /* 6216 */ {I_VPRORQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+9982, 241}, + /* 6217 */ {I_VPRORVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26000, 240}, + /* 6218 */ {I_VPRORVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26008, 240}, + /* 6219 */ {I_VPRORVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26016, 240}, + /* 6220 */ {I_VPRORVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26024, 240}, + /* 6221 */ {I_VPRORVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26032, 241}, + /* 6222 */ {I_VPRORVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26040, 241}, + /* 6223 */ {I_VPRORVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26048, 240}, + /* 6224 */ {I_VPRORVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26056, 240}, + /* 6225 */ {I_VPRORVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26064, 240}, + /* 6226 */ {I_VPRORVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26072, 240}, + /* 6227 */ {I_VPRORVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26080, 241}, + /* 6228 */ {I_VPRORVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26088, 241}, + /* 6229 */ {I_VPSADBW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+26096, 244}, + /* 6230 */ {I_VPSADBW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+26104, 244}, + /* 6231 */ {I_VPSADBW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+26112, 244}, + /* 6232 */ {I_VPSADBW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+26120, 244}, + /* 6233 */ {I_VPSADBW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, NO_DECORATOR, nasm_bytecodes+26128, 245}, + /* 6234 */ {I_VPSADBW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+26136, 245}, + /* 6235 */ {I_VPSCATTERDD, 2, {XMEM|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+9991, 240}, + /* 6236 */ {I_VPSCATTERDD, 2, {YMEM|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10000, 240}, + /* 6237 */ {I_VPSCATTERDD, 2, {ZMEM|BITS32,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10009, 241}, + /* 6238 */ {I_VPSCATTERDQ, 2, {XMEM|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10018, 240}, + /* 6239 */ {I_VPSCATTERDQ, 2, {XMEM|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10027, 240}, + /* 6240 */ {I_VPSCATTERDQ, 2, {YMEM|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10036, 241}, + /* 6241 */ {I_VPSCATTERQD, 2, {XMEM|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10045, 240}, + /* 6242 */ {I_VPSCATTERQD, 2, {YMEM|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10054, 240}, + /* 6243 */ {I_VPSCATTERQD, 2, {ZMEM|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10063, 241}, + /* 6244 */ {I_VPSCATTERQQ, 2, {XMEM|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10072, 240}, + /* 6245 */ {I_VPSCATTERQQ, 2, {YMEM|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10081, 240}, + /* 6246 */ {I_VPSCATTERQQ, 2, {ZMEM|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+10090, 241}, + /* 6247 */ {I_VPSHUFB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26144, 244}, + /* 6248 */ {I_VPSHUFB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26152, 244}, + /* 6249 */ {I_VPSHUFB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26160, 244}, + /* 6250 */ {I_VPSHUFB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26168, 244}, + /* 6251 */ {I_VPSHUFB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26176, 245}, + /* 6252 */ {I_VPSHUFB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26184, 245}, + /* 6253 */ {I_VPSHUFD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10099, 240}, + /* 6254 */ {I_VPSHUFD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10108, 240}, + /* 6255 */ {I_VPSHUFD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10117, 241}, + /* 6256 */ {I_VPSHUFHW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10126, 244}, + /* 6257 */ {I_VPSHUFHW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10135, 244}, + /* 6258 */ {I_VPSHUFHW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10144, 245}, + /* 6259 */ {I_VPSHUFLW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10153, 244}, + /* 6260 */ {I_VPSHUFLW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10162, 244}, + /* 6261 */ {I_VPSHUFLW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10171, 245}, + /* 6262 */ {I_VPSLLD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26192, 240}, + /* 6263 */ {I_VPSLLD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26200, 240}, + /* 6264 */ {I_VPSLLD, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26208, 240}, + /* 6265 */ {I_VPSLLD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26216, 240}, + /* 6266 */ {I_VPSLLD, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26224, 241}, + /* 6267 */ {I_VPSLLD, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26232, 241}, + /* 6268 */ {I_VPSLLD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10180, 240}, + /* 6269 */ {I_VPSLLD, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10189, 240}, + /* 6270 */ {I_VPSLLD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10198, 240}, + /* 6271 */ {I_VPSLLD, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10207, 240}, + /* 6272 */ {I_VPSLLD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10216, 241}, + /* 6273 */ {I_VPSLLD, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10225, 241}, + /* 6274 */ {I_VPSLLDQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+10234, 244}, + /* 6275 */ {I_VPSLLDQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+10243, 244}, + /* 6276 */ {I_VPSLLDQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+10252, 244}, + /* 6277 */ {I_VPSLLDQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+10261, 244}, + /* 6278 */ {I_VPSLLDQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+10270, 245}, + /* 6279 */ {I_VPSLLDQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+10279, 245}, + /* 6280 */ {I_VPSLLQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26240, 240}, + /* 6281 */ {I_VPSLLQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26248, 240}, + /* 6282 */ {I_VPSLLQ, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26256, 240}, + /* 6283 */ {I_VPSLLQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26264, 240}, + /* 6284 */ {I_VPSLLQ, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26272, 241}, + /* 6285 */ {I_VPSLLQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26280, 241}, + /* 6286 */ {I_VPSLLQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10288, 240}, + /* 6287 */ {I_VPSLLQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10297, 240}, + /* 6288 */ {I_VPSLLQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10306, 240}, + /* 6289 */ {I_VPSLLQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10315, 240}, + /* 6290 */ {I_VPSLLQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10324, 241}, + /* 6291 */ {I_VPSLLQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10333, 241}, + /* 6292 */ {I_VPSLLVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26288, 240}, + /* 6293 */ {I_VPSLLVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26296, 240}, + /* 6294 */ {I_VPSLLVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26304, 240}, + /* 6295 */ {I_VPSLLVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26312, 240}, + /* 6296 */ {I_VPSLLVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26320, 241}, + /* 6297 */ {I_VPSLLVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26328, 241}, + /* 6298 */ {I_VPSLLVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26336, 240}, + /* 6299 */ {I_VPSLLVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26344, 240}, + /* 6300 */ {I_VPSLLVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26352, 240}, + /* 6301 */ {I_VPSLLVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26360, 240}, + /* 6302 */ {I_VPSLLVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26368, 241}, + /* 6303 */ {I_VPSLLVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26376, 241}, + /* 6304 */ {I_VPSLLVW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26384, 244}, + /* 6305 */ {I_VPSLLVW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26392, 244}, + /* 6306 */ {I_VPSLLVW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26400, 244}, + /* 6307 */ {I_VPSLLVW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26408, 244}, + /* 6308 */ {I_VPSLLVW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26416, 245}, + /* 6309 */ {I_VPSLLVW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26424, 245}, + /* 6310 */ {I_VPSLLW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26432, 244}, + /* 6311 */ {I_VPSLLW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26440, 244}, + /* 6312 */ {I_VPSLLW, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26448, 244}, + /* 6313 */ {I_VPSLLW, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26456, 244}, + /* 6314 */ {I_VPSLLW, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26464, 245}, + /* 6315 */ {I_VPSLLW, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26472, 245}, + /* 6316 */ {I_VPSLLW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10342, 244}, + /* 6317 */ {I_VPSLLW, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10351, 244}, + /* 6318 */ {I_VPSLLW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10360, 244}, + /* 6319 */ {I_VPSLLW, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10369, 244}, + /* 6320 */ {I_VPSLLW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10378, 245}, + /* 6321 */ {I_VPSLLW, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10387, 245}, + /* 6322 */ {I_VPSRAD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26480, 240}, + /* 6323 */ {I_VPSRAD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26488, 240}, + /* 6324 */ {I_VPSRAD, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26496, 240}, + /* 6325 */ {I_VPSRAD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26504, 240}, + /* 6326 */ {I_VPSRAD, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26512, 241}, + /* 6327 */ {I_VPSRAD, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26520, 241}, + /* 6328 */ {I_VPSRAD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10396, 240}, + /* 6329 */ {I_VPSRAD, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10405, 240}, + /* 6330 */ {I_VPSRAD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10414, 240}, + /* 6331 */ {I_VPSRAD, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10423, 240}, + /* 6332 */ {I_VPSRAD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10432, 241}, + /* 6333 */ {I_VPSRAD, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10441, 241}, + /* 6334 */ {I_VPSRAQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26528, 240}, + /* 6335 */ {I_VPSRAQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26536, 240}, + /* 6336 */ {I_VPSRAQ, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26544, 240}, + /* 6337 */ {I_VPSRAQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26552, 240}, + /* 6338 */ {I_VPSRAQ, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26560, 241}, + /* 6339 */ {I_VPSRAQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26568, 241}, + /* 6340 */ {I_VPSRAQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10450, 240}, + /* 6341 */ {I_VPSRAQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10459, 240}, + /* 6342 */ {I_VPSRAQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10468, 240}, + /* 6343 */ {I_VPSRAQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10477, 240}, + /* 6344 */ {I_VPSRAQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10486, 241}, + /* 6345 */ {I_VPSRAQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10495, 241}, + /* 6346 */ {I_VPSRAVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26576, 240}, + /* 6347 */ {I_VPSRAVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26584, 240}, + /* 6348 */ {I_VPSRAVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26592, 240}, + /* 6349 */ {I_VPSRAVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26600, 240}, + /* 6350 */ {I_VPSRAVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26608, 241}, + /* 6351 */ {I_VPSRAVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26616, 241}, + /* 6352 */ {I_VPSRAVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26624, 240}, + /* 6353 */ {I_VPSRAVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26632, 240}, + /* 6354 */ {I_VPSRAVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26640, 240}, + /* 6355 */ {I_VPSRAVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26648, 240}, + /* 6356 */ {I_VPSRAVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26656, 241}, + /* 6357 */ {I_VPSRAVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26664, 241}, + /* 6358 */ {I_VPSRAVW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26672, 244}, + /* 6359 */ {I_VPSRAVW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26680, 244}, + /* 6360 */ {I_VPSRAVW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26688, 244}, + /* 6361 */ {I_VPSRAVW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26696, 244}, + /* 6362 */ {I_VPSRAVW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26704, 245}, + /* 6363 */ {I_VPSRAVW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26712, 245}, + /* 6364 */ {I_VPSRAW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26720, 244}, + /* 6365 */ {I_VPSRAW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26728, 244}, + /* 6366 */ {I_VPSRAW, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26736, 244}, + /* 6367 */ {I_VPSRAW, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26744, 244}, + /* 6368 */ {I_VPSRAW, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26752, 245}, + /* 6369 */ {I_VPSRAW, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26760, 245}, + /* 6370 */ {I_VPSRAW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10504, 244}, + /* 6371 */ {I_VPSRAW, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10513, 244}, + /* 6372 */ {I_VPSRAW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10522, 244}, + /* 6373 */ {I_VPSRAW, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10531, 244}, + /* 6374 */ {I_VPSRAW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10540, 245}, + /* 6375 */ {I_VPSRAW, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10549, 245}, + /* 6376 */ {I_VPSRLD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26768, 240}, + /* 6377 */ {I_VPSRLD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26776, 240}, + /* 6378 */ {I_VPSRLD, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26784, 240}, + /* 6379 */ {I_VPSRLD, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26792, 240}, + /* 6380 */ {I_VPSRLD, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26800, 241}, + /* 6381 */ {I_VPSRLD, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26808, 241}, + /* 6382 */ {I_VPSRLD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10558, 240}, + /* 6383 */ {I_VPSRLD, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10567, 240}, + /* 6384 */ {I_VPSRLD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10576, 240}, + /* 6385 */ {I_VPSRLD, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10585, 240}, + /* 6386 */ {I_VPSRLD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10594, 241}, + /* 6387 */ {I_VPSRLD, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10603, 241}, + /* 6388 */ {I_VPSRLDQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+10612, 244}, + /* 6389 */ {I_VPSRLDQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+10621, 244}, + /* 6390 */ {I_VPSRLDQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+10630, 244}, + /* 6391 */ {I_VPSRLDQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+10639, 244}, + /* 6392 */ {I_VPSRLDQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+10648, 245}, + /* 6393 */ {I_VPSRLDQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, NO_DECORATOR, nasm_bytecodes+10657, 245}, + /* 6394 */ {I_VPSRLQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26816, 240}, + /* 6395 */ {I_VPSRLQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26824, 240}, + /* 6396 */ {I_VPSRLQ, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26832, 240}, + /* 6397 */ {I_VPSRLQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26840, 240}, + /* 6398 */ {I_VPSRLQ, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26848, 241}, + /* 6399 */ {I_VPSRLQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26856, 241}, + /* 6400 */ {I_VPSRLQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10666, 240}, + /* 6401 */ {I_VPSRLQ, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10675, 240}, + /* 6402 */ {I_VPSRLQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10684, 240}, + /* 6403 */ {I_VPSRLQ, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10693, 240}, + /* 6404 */ {I_VPSRLQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10702, 241}, + /* 6405 */ {I_VPSRLQ, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10711, 241}, + /* 6406 */ {I_VPSRLVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26864, 240}, + /* 6407 */ {I_VPSRLVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26872, 240}, + /* 6408 */ {I_VPSRLVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26880, 240}, + /* 6409 */ {I_VPSRLVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26888, 240}, + /* 6410 */ {I_VPSRLVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+26896, 241}, + /* 6411 */ {I_VPSRLVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+26904, 241}, + /* 6412 */ {I_VPSRLVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26912, 240}, + /* 6413 */ {I_VPSRLVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26920, 240}, + /* 6414 */ {I_VPSRLVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26928, 240}, + /* 6415 */ {I_VPSRLVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26936, 240}, + /* 6416 */ {I_VPSRLVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+26944, 241}, + /* 6417 */ {I_VPSRLVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+26952, 241}, + /* 6418 */ {I_VPSRLVW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26960, 244}, + /* 6419 */ {I_VPSRLVW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26968, 244}, + /* 6420 */ {I_VPSRLVW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26976, 244}, + /* 6421 */ {I_VPSRLVW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26984, 244}, + /* 6422 */ {I_VPSRLVW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+26992, 245}, + /* 6423 */ {I_VPSRLVW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27000, 245}, + /* 6424 */ {I_VPSRLW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27008, 244}, + /* 6425 */ {I_VPSRLW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27016, 244}, + /* 6426 */ {I_VPSRLW, 3, {YMMREG,YMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27024, 244}, + /* 6427 */ {I_VPSRLW, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27032, 244}, + /* 6428 */ {I_VPSRLW, 3, {ZMMREG,ZMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27040, 245}, + /* 6429 */ {I_VPSRLW, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27048, 245}, + /* 6430 */ {I_VPSRLW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10720, 244}, + /* 6431 */ {I_VPSRLW, 2, {XMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10729, 244}, + /* 6432 */ {I_VPSRLW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10738, 244}, + /* 6433 */ {I_VPSRLW, 2, {YMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10747, 244}, + /* 6434 */ {I_VPSRLW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10756, 245}, + /* 6435 */ {I_VPSRLW, 2, {ZMMREG,IMMEDIATE|BITS8,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+10765, 245}, + /* 6436 */ {I_VPSUBB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27056, 244}, + /* 6437 */ {I_VPSUBB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27064, 244}, + /* 6438 */ {I_VPSUBB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27072, 244}, + /* 6439 */ {I_VPSUBB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27080, 244}, + /* 6440 */ {I_VPSUBB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27088, 245}, + /* 6441 */ {I_VPSUBB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27096, 245}, + /* 6442 */ {I_VPSUBD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27104, 240}, + /* 6443 */ {I_VPSUBD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27112, 240}, + /* 6444 */ {I_VPSUBD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27120, 240}, + /* 6445 */ {I_VPSUBD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27128, 240}, + /* 6446 */ {I_VPSUBD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27136, 241}, + /* 6447 */ {I_VPSUBD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27144, 241}, + /* 6448 */ {I_VPSUBQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27152, 240}, + /* 6449 */ {I_VPSUBQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27160, 240}, + /* 6450 */ {I_VPSUBQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27168, 240}, + /* 6451 */ {I_VPSUBQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27176, 240}, + /* 6452 */ {I_VPSUBQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27184, 241}, + /* 6453 */ {I_VPSUBQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27192, 241}, + /* 6454 */ {I_VPSUBSB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27200, 244}, + /* 6455 */ {I_VPSUBSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27208, 244}, + /* 6456 */ {I_VPSUBSB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27216, 244}, + /* 6457 */ {I_VPSUBSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27224, 244}, + /* 6458 */ {I_VPSUBSB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27232, 245}, + /* 6459 */ {I_VPSUBSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27240, 245}, + /* 6460 */ {I_VPSUBSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27248, 244}, + /* 6461 */ {I_VPSUBSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27256, 244}, + /* 6462 */ {I_VPSUBSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27264, 244}, + /* 6463 */ {I_VPSUBSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27272, 244}, + /* 6464 */ {I_VPSUBSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27280, 245}, + /* 6465 */ {I_VPSUBSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27288, 245}, + /* 6466 */ {I_VPSUBUSB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27296, 244}, + /* 6467 */ {I_VPSUBUSB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27304, 244}, + /* 6468 */ {I_VPSUBUSB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27312, 244}, + /* 6469 */ {I_VPSUBUSB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27320, 244}, + /* 6470 */ {I_VPSUBUSB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27328, 245}, + /* 6471 */ {I_VPSUBUSB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27336, 245}, + /* 6472 */ {I_VPSUBUSW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27344, 244}, + /* 6473 */ {I_VPSUBUSW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27352, 244}, + /* 6474 */ {I_VPSUBUSW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27360, 244}, + /* 6475 */ {I_VPSUBUSW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27368, 244}, + /* 6476 */ {I_VPSUBUSW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27376, 245}, + /* 6477 */ {I_VPSUBUSW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27384, 245}, + /* 6478 */ {I_VPSUBW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27392, 244}, + /* 6479 */ {I_VPSUBW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27400, 244}, + /* 6480 */ {I_VPSUBW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27408, 244}, + /* 6481 */ {I_VPSUBW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27416, 244}, + /* 6482 */ {I_VPSUBW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27424, 245}, + /* 6483 */ {I_VPSUBW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27432, 245}, + /* 6484 */ {I_VPTERNLOGD, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+10774, 240}, + /* 6485 */ {I_VPTERNLOGD, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+10783, 240}, + /* 6486 */ {I_VPTERNLOGD, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+10792, 241}, + /* 6487 */ {I_VPTERNLOGQ, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+10801, 240}, + /* 6488 */ {I_VPTERNLOGQ, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+10810, 240}, + /* 6489 */ {I_VPTERNLOGQ, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+10819, 241}, + /* 6490 */ {I_VPTESTMB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27440, 244}, + /* 6491 */ {I_VPTESTMB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27448, 244}, + /* 6492 */ {I_VPTESTMB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27456, 245}, + /* 6493 */ {I_VPTESTMD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+27464, 240}, + /* 6494 */ {I_VPTESTMD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+27472, 240}, + /* 6495 */ {I_VPTESTMD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+27480, 241}, + /* 6496 */ {I_VPTESTMQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+27488, 240}, + /* 6497 */ {I_VPTESTMQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+27496, 240}, + /* 6498 */ {I_VPTESTMQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+27504, 241}, + /* 6499 */ {I_VPTESTMW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27512, 244}, + /* 6500 */ {I_VPTESTMW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27520, 244}, + /* 6501 */ {I_VPTESTMW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27528, 245}, + /* 6502 */ {I_VPTESTNMB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27536, 244}, + /* 6503 */ {I_VPTESTNMB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27544, 244}, + /* 6504 */ {I_VPTESTNMB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27552, 245}, + /* 6505 */ {I_VPTESTNMD, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+27560, 240}, + /* 6506 */ {I_VPTESTNMD, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+27568, 240}, + /* 6507 */ {I_VPTESTNMD, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B32,0,0}, nasm_bytecodes+27576, 241}, + /* 6508 */ {I_VPTESTNMQ, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+27584, 240}, + /* 6509 */ {I_VPTESTNMQ, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+27592, 240}, + /* 6510 */ {I_VPTESTNMQ, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,B64,0,0}, nasm_bytecodes+27600, 241}, + /* 6511 */ {I_VPTESTNMW, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27608, 244}, + /* 6512 */ {I_VPTESTNMW, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27616, 244}, + /* 6513 */ {I_VPTESTNMW, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+27624, 245}, + /* 6514 */ {I_VPUNPCKHBW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27632, 244}, + /* 6515 */ {I_VPUNPCKHBW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27640, 244}, + /* 6516 */ {I_VPUNPCKHBW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27648, 244}, + /* 6517 */ {I_VPUNPCKHBW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27656, 244}, + /* 6518 */ {I_VPUNPCKHBW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27664, 245}, + /* 6519 */ {I_VPUNPCKHBW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27672, 245}, + /* 6520 */ {I_VPUNPCKHDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27680, 240}, + /* 6521 */ {I_VPUNPCKHDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27688, 240}, + /* 6522 */ {I_VPUNPCKHDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27696, 240}, + /* 6523 */ {I_VPUNPCKHDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27704, 240}, + /* 6524 */ {I_VPUNPCKHDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27712, 241}, + /* 6525 */ {I_VPUNPCKHDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27720, 241}, + /* 6526 */ {I_VPUNPCKHQDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27728, 240}, + /* 6527 */ {I_VPUNPCKHQDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27736, 240}, + /* 6528 */ {I_VPUNPCKHQDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27744, 240}, + /* 6529 */ {I_VPUNPCKHQDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27752, 240}, + /* 6530 */ {I_VPUNPCKHQDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27760, 241}, + /* 6531 */ {I_VPUNPCKHQDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27768, 241}, + /* 6532 */ {I_VPUNPCKHWD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27776, 244}, + /* 6533 */ {I_VPUNPCKHWD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27784, 244}, + /* 6534 */ {I_VPUNPCKHWD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27792, 244}, + /* 6535 */ {I_VPUNPCKHWD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27800, 244}, + /* 6536 */ {I_VPUNPCKHWD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27808, 245}, + /* 6537 */ {I_VPUNPCKHWD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27816, 245}, + /* 6538 */ {I_VPUNPCKLBW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27824, 244}, + /* 6539 */ {I_VPUNPCKLBW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27832, 244}, + /* 6540 */ {I_VPUNPCKLBW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27840, 244}, + /* 6541 */ {I_VPUNPCKLBW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27848, 244}, + /* 6542 */ {I_VPUNPCKLBW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27856, 245}, + /* 6543 */ {I_VPUNPCKLBW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27864, 245}, + /* 6544 */ {I_VPUNPCKLDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27872, 240}, + /* 6545 */ {I_VPUNPCKLDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27880, 240}, + /* 6546 */ {I_VPUNPCKLDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27888, 240}, + /* 6547 */ {I_VPUNPCKLDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27896, 240}, + /* 6548 */ {I_VPUNPCKLDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+27904, 241}, + /* 6549 */ {I_VPUNPCKLDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+27912, 241}, + /* 6550 */ {I_VPUNPCKLQDQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27920, 240}, + /* 6551 */ {I_VPUNPCKLQDQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27928, 240}, + /* 6552 */ {I_VPUNPCKLQDQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27936, 240}, + /* 6553 */ {I_VPUNPCKLQDQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27944, 240}, + /* 6554 */ {I_VPUNPCKLQDQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+27952, 241}, + /* 6555 */ {I_VPUNPCKLQDQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+27960, 241}, + /* 6556 */ {I_VPUNPCKLWD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27968, 244}, + /* 6557 */ {I_VPUNPCKLWD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27976, 244}, + /* 6558 */ {I_VPUNPCKLWD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27984, 244}, + /* 6559 */ {I_VPUNPCKLWD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+27992, 244}, + /* 6560 */ {I_VPUNPCKLWD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28000, 245}, + /* 6561 */ {I_VPUNPCKLWD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28008, 245}, + /* 6562 */ {I_VPXORD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28016, 240}, + /* 6563 */ {I_VPXORD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28024, 240}, + /* 6564 */ {I_VPXORD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28032, 240}, + /* 6565 */ {I_VPXORD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28040, 240}, + /* 6566 */ {I_VPXORD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28048, 241}, + /* 6567 */ {I_VPXORD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28056, 241}, + /* 6568 */ {I_VPXORQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28064, 240}, + /* 6569 */ {I_VPXORQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28072, 240}, + /* 6570 */ {I_VPXORQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28080, 240}, + /* 6571 */ {I_VPXORQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28088, 240}, + /* 6572 */ {I_VPXORQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28096, 241}, + /* 6573 */ {I_VPXORQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28104, 241}, + /* 6574 */ {I_VRANGEPD, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+10828, 242}, + /* 6575 */ {I_VRANGEPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10837, 242}, + /* 6576 */ {I_VRANGEPD, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+10846, 242}, + /* 6577 */ {I_VRANGEPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10855, 242}, + /* 6578 */ {I_VRANGEPD, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64|SAE,0,0}, nasm_bytecodes+10864, 243}, + /* 6579 */ {I_VRANGEPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+10873, 243}, + /* 6580 */ {I_VRANGEPS, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+10882, 242}, + /* 6581 */ {I_VRANGEPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10891, 242}, + /* 6582 */ {I_VRANGEPS, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+10900, 242}, + /* 6583 */ {I_VRANGEPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10909, 242}, + /* 6584 */ {I_VRANGEPS, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32|SAE,0,0}, nasm_bytecodes+10918, 243}, + /* 6585 */ {I_VRANGEPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+10927, 243}, + /* 6586 */ {I_VRANGESD, 4, {XMMREG,XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+10936, 243}, + /* 6587 */ {I_VRANGESD, 3, {XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+10945, 243}, + /* 6588 */ {I_VRANGESS, 4, {XMMREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+10954, 243}, + /* 6589 */ {I_VRANGESS, 3, {XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+10963, 243}, + /* 6590 */ {I_VRCP14PD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28112, 240}, + /* 6591 */ {I_VRCP14PD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28120, 240}, + /* 6592 */ {I_VRCP14PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28128, 241}, + /* 6593 */ {I_VRCP14PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28136, 240}, + /* 6594 */ {I_VRCP14PS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28144, 240}, + /* 6595 */ {I_VRCP14PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28152, 241}, + /* 6596 */ {I_VRCP14SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28160, 241}, + /* 6597 */ {I_VRCP14SD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28168, 241}, + /* 6598 */ {I_VRCP14SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28176, 241}, + /* 6599 */ {I_VRCP14SS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28184, 241}, + /* 6600 */ {I_VRCP28PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+28192, 246}, + /* 6601 */ {I_VRCP28PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+28200, 246}, + /* 6602 */ {I_VRCP28SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+28208, 246}, + /* 6603 */ {I_VRCP28SD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+28216, 246}, + /* 6604 */ {I_VRCP28SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+28224, 246}, + /* 6605 */ {I_VRCP28SS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+28232, 246}, + /* 6606 */ {I_VREDUCEPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10972, 242}, + /* 6607 */ {I_VREDUCEPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+10981, 242}, + /* 6608 */ {I_VREDUCEPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+10990, 243}, + /* 6609 */ {I_VREDUCEPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+10999, 242}, + /* 6610 */ {I_VREDUCEPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11008, 242}, + /* 6611 */ {I_VREDUCEPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+11017, 243}, + /* 6612 */ {I_VREDUCESD, 4, {XMMREG,XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+11026, 243}, + /* 6613 */ {I_VREDUCESD, 3, {XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+11035, 243}, + /* 6614 */ {I_VREDUCESS, 4, {XMMREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+11044, 243}, + /* 6615 */ {I_VREDUCESS, 3, {XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+11053, 243}, + /* 6616 */ {I_VRNDSCALEPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11062, 240}, + /* 6617 */ {I_VRNDSCALEPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11071, 240}, + /* 6618 */ {I_VRNDSCALEPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+11080, 241}, + /* 6619 */ {I_VRNDSCALEPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11089, 240}, + /* 6620 */ {I_VRNDSCALEPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11098, 240}, + /* 6621 */ {I_VRNDSCALEPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+11107, 241}, + /* 6622 */ {I_VRNDSCALESD, 4, {XMMREG,XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+11116, 241}, + /* 6623 */ {I_VRNDSCALESD, 3, {XMMREG,RM_XMM|BITS64,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+11125, 241}, + /* 6624 */ {I_VRNDSCALESS, 4, {XMMREG,XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+11134, 241}, + /* 6625 */ {I_VRNDSCALESS, 3, {XMMREG,RM_XMM|BITS32,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+11143, 241}, + /* 6626 */ {I_VRSQRT14PD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28240, 240}, + /* 6627 */ {I_VRSQRT14PD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28248, 240}, + /* 6628 */ {I_VRSQRT14PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28256, 241}, + /* 6629 */ {I_VRSQRT14PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28264, 240}, + /* 6630 */ {I_VRSQRT14PS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28272, 240}, + /* 6631 */ {I_VRSQRT14PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28280, 241}, + /* 6632 */ {I_VRSQRT14SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28288, 241}, + /* 6633 */ {I_VRSQRT14SD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28296, 241}, + /* 6634 */ {I_VRSQRT14SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28304, 241}, + /* 6635 */ {I_VRSQRT14SS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+28312, 241}, + /* 6636 */ {I_VRSQRT28PD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|SAE,0,0,0}, nasm_bytecodes+28320, 246}, + /* 6637 */ {I_VRSQRT28PS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|SAE,0,0,0}, nasm_bytecodes+28328, 246}, + /* 6638 */ {I_VRSQRT28SD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+28336, 246}, + /* 6639 */ {I_VRSQRT28SD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+28344, 246}, + /* 6640 */ {I_VRSQRT28SS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+28352, 246}, + /* 6641 */ {I_VRSQRT28SS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+28360, 246}, + /* 6642 */ {I_VSCALEFPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28368, 240}, + /* 6643 */ {I_VSCALEFPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28376, 240}, + /* 6644 */ {I_VSCALEFPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28384, 240}, + /* 6645 */ {I_VSCALEFPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28392, 240}, + /* 6646 */ {I_VSCALEFPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+28400, 241}, + /* 6647 */ {I_VSCALEFPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+28408, 241}, + /* 6648 */ {I_VSCALEFPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28416, 240}, + /* 6649 */ {I_VSCALEFPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28424, 240}, + /* 6650 */ {I_VSCALEFPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28432, 240}, + /* 6651 */ {I_VSCALEFPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28440, 240}, + /* 6652 */ {I_VSCALEFPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+28448, 241}, + /* 6653 */ {I_VSCALEFPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+28456, 241}, + /* 6654 */ {I_VSCALEFSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+28464, 241}, + /* 6655 */ {I_VSCALEFSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+28472, 241}, + /* 6656 */ {I_VSCALEFSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+28480, 241}, + /* 6657 */ {I_VSCALEFSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+28488, 241}, + /* 6658 */ {I_VSCATTERDPD, 2, {XMEM|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11152, 240}, + /* 6659 */ {I_VSCATTERDPD, 2, {XMEM|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11161, 240}, + /* 6660 */ {I_VSCATTERDPD, 2, {YMEM|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11170, 241}, + /* 6661 */ {I_VSCATTERDPS, 2, {XMEM|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11179, 240}, + /* 6662 */ {I_VSCATTERDPS, 2, {YMEM|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11188, 240}, + /* 6663 */ {I_VSCATTERDPS, 2, {ZMEM|BITS32,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11197, 241}, + /* 6664 */ {I_VSCATTERPF0DPD, 1, {YMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11206, 247}, + /* 6665 */ {I_VSCATTERPF0DPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11215, 247}, + /* 6666 */ {I_VSCATTERPF0QPD, 1, {ZMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11224, 247}, + /* 6667 */ {I_VSCATTERPF0QPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11233, 247}, + /* 6668 */ {I_VSCATTERPF1DPD, 1, {YMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11242, 247}, + /* 6669 */ {I_VSCATTERPF1DPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11251, 247}, + /* 6670 */ {I_VSCATTERPF1QPD, 1, {ZMEM|BITS64,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11260, 247}, + /* 6671 */ {I_VSCATTERPF1QPS, 1, {ZMEM|BITS32,0,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11269, 247}, + /* 6672 */ {I_VSCATTERQPD, 2, {XMEM|BITS64,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11278, 240}, + /* 6673 */ {I_VSCATTERQPD, 2, {YMEM|BITS64,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11287, 240}, + /* 6674 */ {I_VSCATTERQPD, 2, {ZMEM|BITS64,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11296, 241}, + /* 6675 */ {I_VSCATTERQPS, 2, {XMEM|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11305, 240}, + /* 6676 */ {I_VSCATTERQPS, 2, {YMEM|BITS32,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11314, 240}, + /* 6677 */ {I_VSCATTERQPS, 2, {ZMEM|BITS32,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+11323, 241}, + /* 6678 */ {I_VSHUFF32X4, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11332, 240}, + /* 6679 */ {I_VSHUFF32X4, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11341, 240}, + /* 6680 */ {I_VSHUFF32X4, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11350, 241}, + /* 6681 */ {I_VSHUFF32X4, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11359, 241}, + /* 6682 */ {I_VSHUFF64X2, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11368, 240}, + /* 6683 */ {I_VSHUFF64X2, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11377, 240}, + /* 6684 */ {I_VSHUFF64X2, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11386, 241}, + /* 6685 */ {I_VSHUFF64X2, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11395, 241}, + /* 6686 */ {I_VSHUFI32X4, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11404, 240}, + /* 6687 */ {I_VSHUFI32X4, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11413, 240}, + /* 6688 */ {I_VSHUFI32X4, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11422, 241}, + /* 6689 */ {I_VSHUFI32X4, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11431, 241}, + /* 6690 */ {I_VSHUFI64X2, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11440, 240}, + /* 6691 */ {I_VSHUFI64X2, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11449, 240}, + /* 6692 */ {I_VSHUFI64X2, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11458, 241}, + /* 6693 */ {I_VSHUFI64X2, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11467, 241}, + /* 6694 */ {I_VSHUFPD, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11476, 240}, + /* 6695 */ {I_VSHUFPD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11485, 240}, + /* 6696 */ {I_VSHUFPD, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11494, 240}, + /* 6697 */ {I_VSHUFPD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11503, 240}, + /* 6698 */ {I_VSHUFPD, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11512, 241}, + /* 6699 */ {I_VSHUFPD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11521, 241}, + /* 6700 */ {I_VSHUFPS, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11530, 240}, + /* 6701 */ {I_VSHUFPS, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11539, 240}, + /* 6702 */ {I_VSHUFPS, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11548, 240}, + /* 6703 */ {I_VSHUFPS, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11557, 240}, + /* 6704 */ {I_VSHUFPS, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11566, 241}, + /* 6705 */ {I_VSHUFPS, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11575, 241}, + /* 6706 */ {I_VSQRTPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28496, 240}, + /* 6707 */ {I_VSQRTPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28504, 240}, + /* 6708 */ {I_VSQRTPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+28512, 241}, + /* 6709 */ {I_VSQRTPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28520, 240}, + /* 6710 */ {I_VSQRTPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28528, 240}, + /* 6711 */ {I_VSQRTPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+28536, 241}, + /* 6712 */ {I_VSQRTSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+28544, 241}, + /* 6713 */ {I_VSQRTSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+28552, 241}, + /* 6714 */ {I_VSQRTSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+28560, 241}, + /* 6715 */ {I_VSQRTSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+28568, 241}, + /* 6716 */ {I_VSUBPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28576, 240}, + /* 6717 */ {I_VSUBPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28584, 240}, + /* 6718 */ {I_VSUBPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28592, 240}, + /* 6719 */ {I_VSUBPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28600, 240}, + /* 6720 */ {I_VSUBPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64|ER,0,0}, nasm_bytecodes+28608, 241}, + /* 6721 */ {I_VSUBPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+28616, 241}, + /* 6722 */ {I_VSUBPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28624, 240}, + /* 6723 */ {I_VSUBPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28632, 240}, + /* 6724 */ {I_VSUBPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28640, 240}, + /* 6725 */ {I_VSUBPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28648, 240}, + /* 6726 */ {I_VSUBPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+28656, 241}, + /* 6727 */ {I_VSUBPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+28664, 241}, + /* 6728 */ {I_VSUBSD, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+28672, 241}, + /* 6729 */ {I_VSUBSD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+28680, 241}, + /* 6730 */ {I_VSUBSS, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+28688, 241}, + /* 6731 */ {I_VSUBSS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+28696, 241}, + /* 6732 */ {I_VUCOMISD, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+28704, 241}, + /* 6733 */ {I_VUCOMISS, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+28712, 241}, + /* 6734 */ {I_VUNPCKHPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28720, 240}, + /* 6735 */ {I_VUNPCKHPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28728, 240}, + /* 6736 */ {I_VUNPCKHPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28736, 240}, + /* 6737 */ {I_VUNPCKHPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28744, 240}, + /* 6738 */ {I_VUNPCKHPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28752, 241}, + /* 6739 */ {I_VUNPCKHPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28760, 241}, + /* 6740 */ {I_VUNPCKHPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28768, 240}, + /* 6741 */ {I_VUNPCKHPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28776, 240}, + /* 6742 */ {I_VUNPCKHPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28784, 240}, + /* 6743 */ {I_VUNPCKHPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28792, 240}, + /* 6744 */ {I_VUNPCKHPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28800, 241}, + /* 6745 */ {I_VUNPCKHPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28808, 241}, + /* 6746 */ {I_VUNPCKLPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28816, 240}, + /* 6747 */ {I_VUNPCKLPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28824, 240}, + /* 6748 */ {I_VUNPCKLPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28832, 240}, + /* 6749 */ {I_VUNPCKLPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28840, 240}, + /* 6750 */ {I_VUNPCKLPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28848, 241}, + /* 6751 */ {I_VUNPCKLPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28856, 241}, + /* 6752 */ {I_VUNPCKLPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28864, 240}, + /* 6753 */ {I_VUNPCKLPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28872, 240}, + /* 6754 */ {I_VUNPCKLPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28880, 240}, + /* 6755 */ {I_VUNPCKLPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28888, 240}, + /* 6756 */ {I_VUNPCKLPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28896, 241}, + /* 6757 */ {I_VUNPCKLPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28904, 241}, + /* 6758 */ {I_VXORPD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28912, 242}, + /* 6759 */ {I_VXORPD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28920, 242}, + /* 6760 */ {I_VXORPD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28928, 242}, + /* 6761 */ {I_VXORPD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28936, 242}, + /* 6762 */ {I_VXORPD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+28944, 243}, + /* 6763 */ {I_VXORPD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+28952, 243}, + /* 6764 */ {I_VXORPS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28960, 242}, + /* 6765 */ {I_VXORPS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28968, 242}, + /* 6766 */ {I_VXORPS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28976, 242}, + /* 6767 */ {I_VXORPS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+28984, 242}, + /* 6768 */ {I_VXORPS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+28992, 243}, + /* 6769 */ {I_VXORPS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29000, 243}, + /* 6770 */ {I_RDPKRU, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46072, 136}, + /* 6771 */ {I_WRPKRU, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46078, 136}, + /* 6772 */ {I_RDPID, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42322, 254}, + /* 6773 */ {I_RDPID, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42321, 136}, + /* 6774 */ {I_RDPID, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42322, 255}, + /* 6775 */ {I_CLFLUSHOPT, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45951, 135}, + /* 6776 */ {I_CLWB, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45957, 135}, + /* 6777 */ {I_PCOMMIT, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45963, 256}, + /* 6778 */ {I_CLZERO, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45982, 257}, + /* 6779 */ {I_PTWRITE, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34020, 135}, + /* 6780 */ {I_PTWRITE, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+34019, 136}, + /* 6781 */ {I_CLDEMOTE, 1, {MEMORY,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45987, 135}, + /* 6782 */ {I_MOVDIRI, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42328, 260}, + /* 6783 */ {I_MOVDIRI, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42335, 261}, + /* 6784 */ {I_MOVDIR64B, 2, {REG_GPR|BITS16,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29008, 254}, + /* 6785 */ {I_MOVDIR64B, 2, {REG_GPR|BITS32,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29016, 135}, + /* 6786 */ {I_MOVDIR64B, 2, {REG_GPR|BITS64,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+11584, 136}, + /* 6787 */ {I_PCONFIG, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45993, 135}, + /* 6788 */ {I_TPAUSE, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45957, 135}, + /* 6789 */ {I_UMONITOR, 1, {REG_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42342, 254}, + /* 6790 */ {I_UMONITOR, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42349, 135}, + /* 6791 */ {I_UMONITOR, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+29024, 136}, + /* 6792 */ {I_UMWAIT, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45999, 135}, + /* 6793 */ {I_WBNOINVD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49182, 135}, + /* 6794 */ {I_GF2P8AFFINEINVQB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+29032, 262}, + /* 6795 */ {I_VGF2P8AFFINEINVQB, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+29040, 263}, + /* 6796 */ {I_VGF2P8AFFINEINVQB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+29048, 263}, + /* 6797 */ {I_VGF2P8AFFINEINVQB, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+29056, 263}, + /* 6798 */ {I_VGF2P8AFFINEINVQB, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+29064, 263}, + /* 6799 */ {I_VGF2P8AFFINEINVQB, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11593, 264}, + /* 6800 */ {I_VGF2P8AFFINEINVQB, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11602, 264}, + /* 6801 */ {I_VGF2P8AFFINEINVQB, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11611, 264}, + /* 6802 */ {I_VGF2P8AFFINEINVQB, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11620, 264}, + /* 6803 */ {I_VGF2P8AFFINEINVQB, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11629, 265}, + /* 6804 */ {I_VGF2P8AFFINEINVQB, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11638, 265}, + /* 6805 */ {I_GF2P8AFFINEQB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+29072, 262}, + /* 6806 */ {I_VGF2P8AFFINEQB, 4, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+29080, 263}, + /* 6807 */ {I_VGF2P8AFFINEQB, 3, {XMM_L16,RM_XMM_L16|BITS128,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+29088, 263}, + /* 6808 */ {I_VGF2P8AFFINEQB, 4, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0}, NO_DECORATOR, nasm_bytecodes+29096, 263}, + /* 6809 */ {I_VGF2P8AFFINEQB, 3, {YMM_L16,RM_YMM_L16|BITS256,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+29104, 263}, + /* 6810 */ {I_VGF2P8AFFINEQB, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11647, 264}, + /* 6811 */ {I_VGF2P8AFFINEQB, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11656, 264}, + /* 6812 */ {I_VGF2P8AFFINEQB, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11665, 264}, + /* 6813 */ {I_VGF2P8AFFINEQB, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11674, 264}, + /* 6814 */ {I_VGF2P8AFFINEQB, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11683, 265}, + /* 6815 */ {I_VGF2P8AFFINEQB, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11692, 265}, + /* 6816 */ {I_GF2P8MULB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+42356, 262}, + /* 6817 */ {I_VGF2P8MULB, 3, {XMM_L16,XMM_L16,RM_XMM_L16|BITS128,0,0}, NO_DECORATOR, nasm_bytecodes+42363, 263}, + /* 6818 */ {I_VGF2P8MULB, 2, {XMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+42370, 263}, + /* 6819 */ {I_VGF2P8MULB, 3, {YMM_L16,YMM_L16,RM_YMM_L16|BITS256,0,0}, NO_DECORATOR, nasm_bytecodes+42377, 263}, + /* 6820 */ {I_VGF2P8MULB, 2, {YMM_L16,RM_YMM_L16|BITS256,0,0,0}, NO_DECORATOR, nasm_bytecodes+42384, 263}, + /* 6821 */ {I_VGF2P8MULB, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29112, 264}, + /* 6822 */ {I_VGF2P8MULB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29120, 264}, + /* 6823 */ {I_VGF2P8MULB, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29128, 264}, + /* 6824 */ {I_VGF2P8MULB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29136, 264}, + /* 6825 */ {I_VGF2P8MULB, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29144, 265}, + /* 6826 */ {I_VGF2P8MULB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29152, 265}, + /* 6827 */ {I_VPCOMPRESSB, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29160, 266}, + /* 6828 */ {I_VPCOMPRESSB, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29168, 266}, + /* 6829 */ {I_VPCOMPRESSB, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29176, 267}, + /* 6830 */ {I_VPCOMPRESSB, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29184, 266}, + /* 6831 */ {I_VPCOMPRESSB, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29192, 266}, + /* 6832 */ {I_VPCOMPRESSB, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29200, 267}, + /* 6833 */ {I_VPCOMPRESSW, 2, {MEMORY|BITS128,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29208, 266}, + /* 6834 */ {I_VPCOMPRESSW, 2, {MEMORY|BITS256,YMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29216, 266}, + /* 6835 */ {I_VPCOMPRESSW, 2, {MEMORY|BITS512,ZMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29224, 267}, + /* 6836 */ {I_VPCOMPRESSW, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29232, 266}, + /* 6837 */ {I_VPCOMPRESSW, 2, {YMMREG,YMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29240, 266}, + /* 6838 */ {I_VPCOMPRESSW, 2, {ZMMREG,ZMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29248, 267}, + /* 6839 */ {I_VPEXPANDB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29256, 266}, + /* 6840 */ {I_VPEXPANDB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29264, 266}, + /* 6841 */ {I_VPEXPANDB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29272, 267}, + /* 6842 */ {I_VPEXPANDW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29280, 266}, + /* 6843 */ {I_VPEXPANDW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29288, 266}, + /* 6844 */ {I_VPEXPANDW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29296, 267}, + /* 6845 */ {I_VPSHLDW, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11701, 266}, + /* 6846 */ {I_VPSHLDW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11710, 266}, + /* 6847 */ {I_VPSHLDW, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11719, 266}, + /* 6848 */ {I_VPSHLDW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11728, 266}, + /* 6849 */ {I_VPSHLDW, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11737, 267}, + /* 6850 */ {I_VPSHLDW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11746, 267}, + /* 6851 */ {I_VPSHLDD, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11755, 266}, + /* 6852 */ {I_VPSHLDD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11764, 266}, + /* 6853 */ {I_VPSHLDD, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11773, 266}, + /* 6854 */ {I_VPSHLDD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11782, 266}, + /* 6855 */ {I_VPSHLDD, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11791, 267}, + /* 6856 */ {I_VPSHLDD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11800, 267}, + /* 6857 */ {I_VPSHLDQ, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11809, 266}, + /* 6858 */ {I_VPSHLDQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11818, 266}, + /* 6859 */ {I_VPSHLDQ, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11827, 266}, + /* 6860 */ {I_VPSHLDQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11836, 266}, + /* 6861 */ {I_VPSHLDQ, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11845, 267}, + /* 6862 */ {I_VPSHLDQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11854, 267}, + /* 6863 */ {I_VPSHLDVW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29304, 266}, + /* 6864 */ {I_VPSHLDVW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29312, 266}, + /* 6865 */ {I_VPSHLDVW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29320, 266}, + /* 6866 */ {I_VPSHLDVW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29328, 266}, + /* 6867 */ {I_VPSHLDVW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29336, 267}, + /* 6868 */ {I_VPSHLDVW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29344, 267}, + /* 6869 */ {I_VPSHLDVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29352, 266}, + /* 6870 */ {I_VPSHLDVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29360, 266}, + /* 6871 */ {I_VPSHLDVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29368, 266}, + /* 6872 */ {I_VPSHLDVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29376, 266}, + /* 6873 */ {I_VPSHLDVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29384, 267}, + /* 6874 */ {I_VPSHLDVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29392, 267}, + /* 6875 */ {I_VPSHLDVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+29400, 266}, + /* 6876 */ {I_VPSHLDVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+29408, 266}, + /* 6877 */ {I_VPSHLDVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+29416, 266}, + /* 6878 */ {I_VPSHLDVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+29424, 266}, + /* 6879 */ {I_VPSHLDVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+29432, 267}, + /* 6880 */ {I_VPSHLDVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+29440, 267}, + /* 6881 */ {I_VPSHRDW, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11863, 266}, + /* 6882 */ {I_VPSHRDW, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11872, 266}, + /* 6883 */ {I_VPSHRDW, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11881, 266}, + /* 6884 */ {I_VPSHRDW, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11890, 266}, + /* 6885 */ {I_VPSHRDW, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11899, 267}, + /* 6886 */ {I_VPSHRDW, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+11908, 267}, + /* 6887 */ {I_VPSHRDD, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11917, 266}, + /* 6888 */ {I_VPSHRDD, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11926, 266}, + /* 6889 */ {I_VPSHRDD, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11935, 266}, + /* 6890 */ {I_VPSHRDD, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11944, 266}, + /* 6891 */ {I_VPSHRDD, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+11953, 267}, + /* 6892 */ {I_VPSHRDD, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+11962, 267}, + /* 6893 */ {I_VPSHRDQ, 4, {XMMREG,XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11971, 266}, + /* 6894 */ {I_VPSHRDQ, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11980, 266}, + /* 6895 */ {I_VPSHRDQ, 4, {YMMREG,YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+11989, 266}, + /* 6896 */ {I_VPSHRDQ, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+11998, 266}, + /* 6897 */ {I_VPSHRDQ, 4, {ZMMREG,ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+12007, 267}, + /* 6898 */ {I_VPSHRDQ, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+12016, 267}, + /* 6899 */ {I_VPSHRDVW, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29448, 266}, + /* 6900 */ {I_VPSHRDVW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29456, 266}, + /* 6901 */ {I_VPSHRDVW, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29464, 266}, + /* 6902 */ {I_VPSHRDVW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29472, 266}, + /* 6903 */ {I_VPSHRDVW, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29480, 267}, + /* 6904 */ {I_VPSHRDVW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29488, 267}, + /* 6905 */ {I_VPSHRDVD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29496, 266}, + /* 6906 */ {I_VPSHRDVD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29504, 266}, + /* 6907 */ {I_VPSHRDVD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29512, 266}, + /* 6908 */ {I_VPSHRDVD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29520, 266}, + /* 6909 */ {I_VPSHRDVD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29528, 267}, + /* 6910 */ {I_VPSHRDVD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29536, 267}, + /* 6911 */ {I_VPSHRDVQ, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+29544, 266}, + /* 6912 */ {I_VPSHRDVQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+29552, 266}, + /* 6913 */ {I_VPSHRDVQ, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+29560, 266}, + /* 6914 */ {I_VPSHRDVQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+29568, 266}, + /* 6915 */ {I_VPSHRDVQ, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B64,0,0}, nasm_bytecodes+29576, 267}, + /* 6916 */ {I_VPSHRDVQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+29584, 267}, + /* 6917 */ {I_VPDPBUSD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29592, 268}, + /* 6918 */ {I_VPDPBUSD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29600, 268}, + /* 6919 */ {I_VPDPBUSD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29608, 268}, + /* 6920 */ {I_VPDPBUSD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29616, 268}, + /* 6921 */ {I_VPDPBUSD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29624, 269}, + /* 6922 */ {I_VPDPBUSD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29632, 269}, + /* 6923 */ {I_VPDPBUSDS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29640, 268}, + /* 6924 */ {I_VPDPBUSDS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29648, 268}, + /* 6925 */ {I_VPDPBUSDS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29656, 268}, + /* 6926 */ {I_VPDPBUSDS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29664, 268}, + /* 6927 */ {I_VPDPBUSDS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29672, 269}, + /* 6928 */ {I_VPDPBUSDS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29680, 269}, + /* 6929 */ {I_VPDPWSSD, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29688, 268}, + /* 6930 */ {I_VPDPWSSD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29696, 268}, + /* 6931 */ {I_VPDPWSSD, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29704, 268}, + /* 6932 */ {I_VPDPWSSD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29712, 268}, + /* 6933 */ {I_VPDPWSSD, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29720, 269}, + /* 6934 */ {I_VPDPWSSD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29728, 269}, + /* 6935 */ {I_VPDPWSSDS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29736, 268}, + /* 6936 */ {I_VPDPWSSDS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29744, 268}, + /* 6937 */ {I_VPDPWSSDS, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29752, 268}, + /* 6938 */ {I_VPDPWSSDS, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29760, 268}, + /* 6939 */ {I_VPDPWSSDS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+29768, 269}, + /* 6940 */ {I_VPDPWSSDS, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+29776, 269}, + /* 6941 */ {I_VPOPCNTB, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29784, 270}, + /* 6942 */ {I_VPOPCNTB, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29792, 270}, + /* 6943 */ {I_VPOPCNTB, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29800, 271}, + /* 6944 */ {I_VPOPCNTW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29808, 270}, + /* 6945 */ {I_VPOPCNTW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29816, 270}, + /* 6946 */ {I_VPOPCNTW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29824, 271}, + /* 6947 */ {I_VPOPCNTD, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29832, 272}, + /* 6948 */ {I_VPOPCNTD, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29840, 272}, + /* 6949 */ {I_VPOPCNTD, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29848, 273}, + /* 6950 */ {I_VPOPCNTQ, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29856, 272}, + /* 6951 */ {I_VPOPCNTQ, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29864, 272}, + /* 6952 */ {I_VPOPCNTQ, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29872, 273}, + /* 6953 */ {I_VPSHUFBITQMB, 3, {KREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29880, 270}, + /* 6954 */ {I_VPSHUFBITQMB, 3, {KREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29888, 270}, + /* 6955 */ {I_VPSHUFBITQMB, 3, {KREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+29896, 271}, + /* 6956 */ {I_V4FMADDPS, 3, {ZMM_L16,ZMM_L16|RS4,MEMORY,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29904, 274}, + /* 6957 */ {I_V4FNMADDPS, 3, {ZMM_L16,ZMM_L16|RS4,MEMORY,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29912, 274}, + /* 6958 */ {I_V4FMADDSS, 3, {ZMM_L16,ZMM_L16|RS4,MEMORY,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29920, 274}, + /* 6959 */ {I_V4FNMADDSS, 3, {ZMM_L16,ZMM_L16|RS4,MEMORY,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29928, 274}, + /* 6960 */ {I_V4DPWSSDS, 3, {ZMM_L16,ZMM_L16|RS4,MEMORY,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29936, 275}, + /* 6961 */ {I_V4DPWSSD, 3, {ZMM_L16,ZMM_L16|RS4,MEMORY,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+29944, 275}, + /* 6962 */ {I_ENCLS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46005, 276}, + /* 6963 */ {I_ENCLU, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46011, 276}, + /* 6964 */ {I_ENCLV, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46017, 276}, + /* 6965 */ {I_CLRSSBSY, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42350, 277}, + /* 6966 */ {I_ENDBR32, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46023, 277}, + /* 6967 */ {I_ENDBR64, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46029, 277}, + /* 6968 */ {I_INCSSPD, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42391, 277}, + /* 6969 */ {I_INCSSPQ, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42398, 278}, + /* 6970 */ {I_RDSSPD, 1, {REG_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42405, 277}, + /* 6971 */ {I_RDSSPQ, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42412, 278}, + /* 6972 */ {I_RSTORSSP, 1, {MEMORY|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46035, 277}, + /* 6973 */ {I_SAVEPREVSSP, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46041, 277}, + /* 6974 */ {I_SETSSBSY, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46047, 277}, + /* 6975 */ {I_WRUSSD, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+29952, 277}, + /* 6976 */ {I_WRUSSQ, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+29960, 278}, + /* 6977 */ {I_WRSSD, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+42419, 277}, + /* 6978 */ {I_WRSSQ, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+42426, 278}, + /* 6979 */ {I_ENQCMD, 2, {REG_GPR|BITS16,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29968, 279}, + /* 6980 */ {I_ENQCMD, 2, {REG_GPR|BITS32,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29976, 280}, + /* 6981 */ {I_ENQCMD, 2, {REG_GPR|BITS64,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29984, 281}, + /* 6982 */ {I_ENQCMDS, 2, {REG_GPR|BITS16,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+29992, 282}, + /* 6983 */ {I_ENQCMDS, 2, {REG_GPR|BITS32,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+30000, 283}, + /* 6984 */ {I_ENQCMDS, 2, {REG_GPR|BITS64,MEMORY|BITS512,0,0,0}, NO_DECORATOR, nasm_bytecodes+30008, 284}, + /* 6985 */ {I_PCONFIG, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+45993, 285}, + /* 6986 */ {I_SERIALIZE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46053, 286}, + /* 6987 */ {I_WBNOINVD, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+49182, 287}, + /* 6988 */ {I_XRESLDTRK, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46059, 288}, + /* 6989 */ {I_XSUSLDTRK, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46065, 288}, + /* 6990 */ {I_VCVTNE2PS2BF16, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30016, 289}, + /* 6991 */ {I_VCVTNE2PS2BF16, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30024, 289}, + /* 6992 */ {I_VCVTNE2PS2BF16, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30032, 289}, + /* 6993 */ {I_VCVTNE2PS2BF16, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30040, 289}, + /* 6994 */ {I_VCVTNE2PS2BF16, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30048, 289}, + /* 6995 */ {I_VCVTNE2PS2BF16, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30056, 289}, + /* 6996 */ {I_VCVTNEPS2BF16, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30064, 289}, + /* 6997 */ {I_VCVTNEPS2BF16, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30072, 289}, + /* 6998 */ {I_VCVTNEPS2BF16, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30080, 289}, + /* 6999 */ {I_VCVTNEPS2BF16, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30088, 289}, + /* 7000 */ {I_VCVTNEPS2BF16, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30096, 289}, + /* 7001 */ {I_VCVTNEPS2BF16, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30104, 289}, + /* 7002 */ {I_VDPBF16PS, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30112, 289}, + /* 7003 */ {I_VDPBF16PS, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30120, 289}, + /* 7004 */ {I_VDPBF16PS, 3, {YMMREG,YMMREG,RM_YMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30128, 289}, + /* 7005 */ {I_VDPBF16PS, 2, {YMMREG,RM_YMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30136, 289}, + /* 7006 */ {I_VDPBF16PS, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+30144, 289}, + /* 7007 */ {I_VDPBF16PS, 2, {ZMMREG,RM_ZMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30152, 289}, + /* 7008 */ {I_VP2INTERSECTD, 3, {KREG|RS2,XMMREG,RM_XMM|BITS128,0,0}, {0,0,B32,0,0}, nasm_bytecodes+30160, 289}, + /* 7009 */ {I_VP2INTERSECTD, 3, {KREG|RS2,YMMREG,RM_YMM|BITS128,0,0}, {0,0,B32,0,0}, nasm_bytecodes+30168, 289}, + /* 7010 */ {I_VP2INTERSECTD, 3, {KREG|RS2,ZMMREG,RM_ZMM|BITS128,0,0}, {0,0,B32,0,0}, nasm_bytecodes+30176, 289}, + /* 7011 */ {I_LDTILECFG, 1, {MEMORY|BITS512,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42433, 290}, + /* 7012 */ {I_STTILECFG, 1, {MEMORY|BITS512,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42440, 290}, + /* 7013 */ {I_TDPBF16PS, 3, {TMMREG,TMMREG,TMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+42447, 291}, + /* 7014 */ {I_TDPBSSD, 3, {TMMREG,TMMREG,TMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+42454, 292}, + /* 7015 */ {I_TDPBSUD, 3, {TMMREG,TMMREG,TMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+42461, 292}, + /* 7016 */ {I_TDPBUSD, 3, {TMMREG,TMMREG,TMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+42468, 292}, + /* 7017 */ {I_TDPBUUD, 3, {TMMREG,TMMREG,TMMREG,0,0}, NO_DECORATOR, nasm_bytecodes+42475, 292}, + /* 7018 */ {I_TILELOADD, 2, {TMMREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+42482, 293}, + /* 7019 */ {I_TILELOADDT1, 2, {TMMREG,MEMORY,0,0,0}, NO_DECORATOR, nasm_bytecodes+42489, 293}, + /* 7020 */ {I_TILERELEASE, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42496, 294}, + /* 7021 */ {I_TILESTORED, 2, {MEMORY,TMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+42503, 293}, + /* 7022 */ {I_TILEZERO, 1, {TMMREG,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+30184, 294}, + /* 7023 */ {I_VADDPH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+30192, 295}, + /* 7024 */ {I_VADDPH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30200, 295}, + /* 7025 */ {I_VADDPH, 3, {YMMREG,YMMREG,RM_YMM|BITS16,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+30208, 295}, + /* 7026 */ {I_VADDPH, 2, {YMMREG,RM_YMM|BITS16,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30216, 295}, + /* 7027 */ {I_VADDPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS16,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+30224, 296}, + /* 7028 */ {I_VADDPH, 2, {ZMMREG,RM_ZMM|BITS16,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30232, 296}, + /* 7029 */ {I_VADDSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+30240, 296}, + /* 7030 */ {I_VADDSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+30248, 296}, + /* 7031 */ {I_VCMPPH, 4, {KREG,XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0}, {MASK,0,B16,0,0}, nasm_bytecodes+12025, 295}, + /* 7032 */ {I_VCMPPH, 3, {KREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK,B16,0,0,0}, nasm_bytecodes+12034, 295}, + /* 7033 */ {I_VCMPPH, 4, {KREG,YMMREG,RM_YMM|BITS16,IMMEDIATE|BITS8,0}, {MASK,0,B16,0,0}, nasm_bytecodes+12043, 295}, + /* 7034 */ {I_VCMPPH, 3, {KREG,RM_YMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK,B16,0,0,0}, nasm_bytecodes+12052, 295}, + /* 7035 */ {I_VCMPPH, 4, {KREG,ZMMREG,RM_ZMM|BITS16,IMMEDIATE|BITS8,0}, {MASK,0,B16|SAE,0,0}, nasm_bytecodes+12061, 296}, + /* 7036 */ {I_VCMPPH, 3, {KREG,RM_ZMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK,B16|SAE,0,0,0}, nasm_bytecodes+12070, 296}, + /* 7037 */ {I_VCMPSH, 4, {KREG,XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0}, {MASK,0,SAE,0,0}, nasm_bytecodes+12079, 296}, + /* 7038 */ {I_VCMPSH, 3, {KREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK,SAE,0,0,0}, nasm_bytecodes+12088, 296}, + /* 7039 */ {I_VCOMISH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+30256, 296}, + /* 7040 */ {I_VCVTDQ2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30264, 295}, + /* 7041 */ {I_VCVTDQ2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30272, 295}, + /* 7042 */ {I_VCVTDQ2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+30280, 296}, + /* 7043 */ {I_VCVTPD2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+30288, 295}, + /* 7044 */ {I_VCVTPD2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+30296, 295}, + /* 7045 */ {I_VCVTPD2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+30304, 296}, + /* 7046 */ {I_VCVTPH2DQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30312, 295}, + /* 7047 */ {I_VCVTPH2DQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30320, 295}, + /* 7048 */ {I_VCVTPH2DQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30328, 296}, + /* 7049 */ {I_VCVTPH2PD, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30336, 295}, + /* 7050 */ {I_VCVTPH2PD, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30344, 295}, + /* 7051 */ {I_VCVTPH2PD, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30352, 296}, + /* 7052 */ {I_VCVTPH2PS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+39108, 297}, + /* 7053 */ {I_VCVTPH2PS, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, NO_DECORATOR, nasm_bytecodes+39101, 297}, + /* 7054 */ {I_VCVTPH2PS, 2, {XMM_L16,RM_XMM_L16|BITS64,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17240, 240}, + /* 7055 */ {I_VCVTPH2PS, 2, {YMM_L16,RM_XMM_L16|BITS128,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+17248, 240}, + /* 7056 */ {I_VCVTPH2PS, 2, {ZMM_L16,RM_YMM_L16|BITS256,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+17256, 241}, + /* 7057 */ {I_VCVTPH2PSX, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30360, 295}, + /* 7058 */ {I_VCVTPH2PSX, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30368, 295}, + /* 7059 */ {I_VCVTPH2PSX, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30376, 296}, + /* 7060 */ {I_VCVTPH2QQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30384, 295}, + /* 7061 */ {I_VCVTPH2QQ, 2, {YMM_L16,RM_XMM_L16|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30392, 295}, + /* 7062 */ {I_VCVTPH2QQ, 2, {ZMM_L16,RM_XMM_L16|BITS128,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30400, 296}, + /* 7063 */ {I_VCVTPH2UDQ, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30408, 295}, + /* 7064 */ {I_VCVTPH2UDQ, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30416, 295}, + /* 7065 */ {I_VCVTPH2UDQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30424, 296}, + /* 7066 */ {I_VCVTPH2UQQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30432, 295}, + /* 7067 */ {I_VCVTPH2UQQ, 2, {YMM_L16,RM_XMM_L16|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30440, 295}, + /* 7068 */ {I_VCVTPH2UQQ, 2, {ZMM_L16,RM_XMM_L16|BITS128,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30448, 296}, + /* 7069 */ {I_VCVTPH2UW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30456, 295}, + /* 7070 */ {I_VCVTPH2UW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30464, 295}, + /* 7071 */ {I_VCVTPH2UW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30472, 296}, + /* 7072 */ {I_VCVTPH2W, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30480, 295}, + /* 7073 */ {I_VCVTPH2W, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30488, 295}, + /* 7074 */ {I_VCVTPH2W, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30496, 296}, + /* 7075 */ {I_VCVTPS2PH, 3, {RM_XMM_L16|BITS64,XMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14232, 298}, + /* 7076 */ {I_VCVTPS2PH, 3, {RM_XMM_L16|BITS128,YMM_L16,IMMEDIATE|BITS8,0,0}, NO_DECORATOR, nasm_bytecodes+14224, 298}, + /* 7077 */ {I_VCVTPS2PH, 3, {XMMREG,XMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8182, 240}, + /* 7078 */ {I_VCVTPS2PH, 3, {MEMORY|BITS64,XMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8182, 240}, + /* 7079 */ {I_VCVTPS2PH, 3, {XMMREG,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+8191, 240}, + /* 7080 */ {I_VCVTPS2PH, 3, {MEMORY|BITS128,YMMREG,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+8191, 240}, + /* 7081 */ {I_VCVTPS2PH, 3, {YMMREG,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+8200, 241}, + /* 7082 */ {I_VCVTPS2PH, 3, {MEMORY|BITS256,ZMMREG,IMMEDIATE|BITS8,0,0}, {MASK,SAE,0,0,0}, nasm_bytecodes+8200, 241}, + /* 7083 */ {I_VCVTPS2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30504, 295}, + /* 7084 */ {I_VCVTPS2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30512, 295}, + /* 7085 */ {I_VCVTPS2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+30520, 296}, + /* 7086 */ {I_VCVTQQ2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+30528, 295}, + /* 7087 */ {I_VCVTQQ2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B64,0,0,0}, nasm_bytecodes+30536, 295}, + /* 7088 */ {I_VCVTQQ2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B64|ER,0,0,0}, nasm_bytecodes+30544, 295}, + /* 7089 */ {I_VCVTSD2SH, 3, {XMMREG,XMMREG,RM_XMM|BITS64,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+30552, 296}, + /* 7090 */ {I_VCVTSD2SH, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+30560, 296}, + /* 7091 */ {I_VCVTSH2SD, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {0,0,SAE,0,0}, nasm_bytecodes+30568, 296}, + /* 7092 */ {I_VCVTSH2SD, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+30576, 296}, + /* 7093 */ {I_VCVTSH2SI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS16,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30584, 296}, + /* 7094 */ {I_VCVTSH2SI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS16,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30592, 296}, + /* 7095 */ {I_VCVTSH2SS, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+30600, 296}, + /* 7096 */ {I_VCVTSH2SS, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+30608, 296}, + /* 7097 */ {I_VCVTSH2USI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS16,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30616, 296}, + /* 7098 */ {I_VCVTSH2USI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS16,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30624, 296}, + /* 7099 */ {I_VCVTSI2SH, 3, {XMMREG,XMMREG,RM_GPR|BITS32,0,0}, {0,0,ER,0,0}, nasm_bytecodes+30632, 296}, + /* 7100 */ {I_VCVTSI2SH, 2, {XMMREG,RM_GPR|BITS32,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30640, 296}, + /* 7101 */ {I_VCVTSI2SH, 3, {XMMREG,XMMREG,RM_GPR|BITS64,0,0}, {0,0,ER,0,0}, nasm_bytecodes+30648, 296}, + /* 7102 */ {I_VCVTSI2SH, 2, {XMMREG,RM_GPR|BITS64,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30656, 296}, + /* 7103 */ {I_VCVTSS2SH, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {0,0,ER,0,0}, nasm_bytecodes+30664, 296}, + /* 7104 */ {I_VCVTSS2SH, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {0,ER,0,0,0}, nasm_bytecodes+30672, 296}, + /* 7105 */ {I_VCVTTPH2DQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30680, 295}, + /* 7106 */ {I_VCVTTPH2DQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30688, 295}, + /* 7107 */ {I_VCVTTPH2DQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30696, 296}, + /* 7108 */ {I_VCVTTPH2QQ, 2, {XMM_L16,RM_XMM_L16|BITS32,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30704, 295}, + /* 7109 */ {I_VCVTTPH2QQ, 2, {YMM_L16,RM_XMM_L16|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30712, 295}, + /* 7110 */ {I_VCVTTPH2QQ, 2, {ZMM_L16,RM_XMM_L16|BITS128,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30720, 296}, + /* 7111 */ {I_VCVTTPH2UDQ, 2, {XMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30728, 295}, + /* 7112 */ {I_VCVTTPH2UDQ, 2, {YMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30736, 295}, + /* 7113 */ {I_VCVTTPH2UDQ, 2, {ZMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30744, 296}, + /* 7114 */ {I_VCVTTPH2UQQ, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30752, 295}, + /* 7115 */ {I_VCVTTPH2UQQ, 2, {YMMREG,RM_XMM|BITS64,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30760, 295}, + /* 7116 */ {I_VCVTTPH2UQQ, 2, {ZMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30768, 296}, + /* 7117 */ {I_VCVTTPH2UW, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30776, 295}, + /* 7118 */ {I_VCVTTPH2UW, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30784, 295}, + /* 7119 */ {I_VCVTTPH2UW, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30792, 296}, + /* 7120 */ {I_VCVTTPH2W, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30800, 295}, + /* 7121 */ {I_VCVTTPH2W, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30808, 295}, + /* 7122 */ {I_VCVTTPH2W, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+30816, 296}, + /* 7123 */ {I_VCVTTSH2SI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+30824, 296}, + /* 7124 */ {I_VCVTTSH2SI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+30832, 296}, + /* 7125 */ {I_VCVTTSH2USI, 2, {REG_GPR|BITS32,RM_XMM_L16|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+30840, 296}, + /* 7126 */ {I_VCVTTSH2USI, 2, {REG_GPR|BITS64,RM_XMM_L16|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+30848, 296}, + /* 7127 */ {I_VCVTUDQ2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30856, 295}, + /* 7128 */ {I_VCVTUDQ2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30864, 295}, + /* 7129 */ {I_VCVTUDQ2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30872, 296}, + /* 7130 */ {I_VCVTUQQ2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30880, 295}, + /* 7131 */ {I_VCVTUQQ2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30888, 295}, + /* 7132 */ {I_VCVTUQQ2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+30896, 296}, + /* 7133 */ {I_VCVTUSI2SH, 3, {XMMREG,XMMREG,RM_GPR|BITS32,0,0}, {0,ER,ER,0,0}, nasm_bytecodes+30904, 296}, + /* 7134 */ {I_VCVTUSI2SS, 3, {XMMREG,XMMREG,RM_GPR|BITS64,0,0}, {0,ER,ER,0,0}, nasm_bytecodes+30912, 296}, + /* 7135 */ {I_VCVTUW2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30920, 295}, + /* 7136 */ {I_VCVTUW2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30928, 295}, + /* 7137 */ {I_VCVTUW2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30936, 296}, + /* 7138 */ {I_VCVTW2PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30944, 295}, + /* 7139 */ {I_VCVTW2PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30952, 295}, + /* 7140 */ {I_VCVTW2PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+30960, 296}, + /* 7141 */ {I_VDIVPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+30968, 295}, + /* 7142 */ {I_VDIVPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30976, 295}, + /* 7143 */ {I_VDIVPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+30984, 295}, + /* 7144 */ {I_VDIVPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+30992, 295}, + /* 7145 */ {I_VDIVPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31000, 296}, + /* 7146 */ {I_VDIVPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31008, 296}, + /* 7147 */ {I_VDIVSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31016, 296}, + /* 7148 */ {I_VDIVSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31024, 296}, + /* 7149 */ {I_VFCMADDCPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31032, 295}, + /* 7150 */ {I_VFCMADDCPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31040, 295}, + /* 7151 */ {I_VFCMADDCPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31048, 295}, + /* 7152 */ {I_VFCMADDCPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31056, 295}, + /* 7153 */ {I_VFCMADDCPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+31064, 295}, + /* 7154 */ {I_VFCMADDCPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+31072, 295}, + /* 7155 */ {I_VFMADDCPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31080, 295}, + /* 7156 */ {I_VFMADDCPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31088, 295}, + /* 7157 */ {I_VFMADDCPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31096, 295}, + /* 7158 */ {I_VFMADDCPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31104, 295}, + /* 7159 */ {I_VFMADDCPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+31112, 295}, + /* 7160 */ {I_VFMADDCPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+31120, 295}, + /* 7161 */ {I_VFCMADDCSH, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31128, 296}, + /* 7162 */ {I_VFCMADDCSH, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31136, 296}, + /* 7163 */ {I_VFMADDCSH, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31144, 296}, + /* 7164 */ {I_VFMADDCSH, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31152, 296}, + /* 7165 */ {I_VFCMULCPCH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31160, 295}, + /* 7166 */ {I_VFCMULCPCH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31168, 295}, + /* 7167 */ {I_VFCMULCPCH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31176, 295}, + /* 7168 */ {I_VFCMULCPCH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31184, 295}, + /* 7169 */ {I_VFCMULCPCH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+31192, 295}, + /* 7170 */ {I_VFCMULCPCH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+31200, 295}, + /* 7171 */ {I_VFMULCPCH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31208, 295}, + /* 7172 */ {I_VFMULCPCH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31216, 295}, + /* 7173 */ {I_VFMULCPCH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B32,0,0}, nasm_bytecodes+31224, 295}, + /* 7174 */ {I_VFMULCPCH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B32,0,0,0}, nasm_bytecodes+31232, 295}, + /* 7175 */ {I_VFMULCPCH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B32|ER,0,0}, nasm_bytecodes+31240, 295}, + /* 7176 */ {I_VFMULCPCH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B32|ER,0,0,0}, nasm_bytecodes+31248, 295}, + /* 7177 */ {I_VFCMULCSH, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31256, 296}, + /* 7178 */ {I_VFCMULCSH, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31264, 296}, + /* 7179 */ {I_VFMULCSH, 3, {XMMREG,XMMREG,RM_XMM|BITS32,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31272, 296}, + /* 7180 */ {I_VFMULCSH, 2, {XMMREG,RM_XMM|BITS32,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31280, 296}, + /* 7181 */ {I_VFMADDSUB132PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31288, 295}, + /* 7182 */ {I_VFMADDSUB132PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31296, 295}, + /* 7183 */ {I_VFMADDSUB132PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31304, 295}, + /* 7184 */ {I_VFMADDSUB132PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31312, 295}, + /* 7185 */ {I_VFMADDSUB132PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31320, 296}, + /* 7186 */ {I_VFMADDSUB132PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31328, 296}, + /* 7187 */ {I_VFMADDSUB213PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31336, 295}, + /* 7188 */ {I_VFMADDSUB213PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31344, 295}, + /* 7189 */ {I_VFMADDSUB213PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31352, 295}, + /* 7190 */ {I_VFMADDSUB213PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31360, 295}, + /* 7191 */ {I_VFMADDSUB213PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31368, 296}, + /* 7192 */ {I_VFMADDSUB213PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31376, 296}, + /* 7193 */ {I_VFMADDSUB231PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31384, 295}, + /* 7194 */ {I_VFMADDSUB231PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31392, 295}, + /* 7195 */ {I_VFMADDSUB231PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31400, 295}, + /* 7196 */ {I_VFMADDSUB231PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31408, 295}, + /* 7197 */ {I_VFMADDSUB231PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31416, 296}, + /* 7198 */ {I_VFMADDSUB231PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31424, 296}, + /* 7199 */ {I_VFMSUBADD132PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31432, 295}, + /* 7200 */ {I_VFMSUBADD132PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31440, 295}, + /* 7201 */ {I_VFMSUBADD132PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31448, 295}, + /* 7202 */ {I_VFMSUBADD132PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31456, 295}, + /* 7203 */ {I_VFMSUBADD132PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31464, 296}, + /* 7204 */ {I_VFMSUBADD132PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31472, 296}, + /* 7205 */ {I_VFMSUBADD213PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31480, 295}, + /* 7206 */ {I_VFMSUBADD213PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31488, 295}, + /* 7207 */ {I_VFMSUBADD213PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31496, 295}, + /* 7208 */ {I_VFMSUBADD213PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31504, 295}, + /* 7209 */ {I_VFMSUBADD213PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31512, 296}, + /* 7210 */ {I_VFMSUBADD213PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31520, 296}, + /* 7211 */ {I_VFMSUBADD231PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31528, 295}, + /* 7212 */ {I_VFMSUBADD231PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31536, 295}, + /* 7213 */ {I_VFMSUBADD231PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31544, 295}, + /* 7214 */ {I_VFMSUBADD231PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31552, 295}, + /* 7215 */ {I_VFMSUBADD231PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31560, 296}, + /* 7216 */ {I_VFMSUBADD231PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31568, 296}, + /* 7217 */ {I_VPMADD132PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31576, 295}, + /* 7218 */ {I_VPMADD132PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31584, 295}, + /* 7219 */ {I_VPMADD132PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31592, 295}, + /* 7220 */ {I_VPMADD132PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31600, 295}, + /* 7221 */ {I_VPMADD132PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31608, 296}, + /* 7222 */ {I_VPMADD132PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31616, 296}, + /* 7223 */ {I_VPMADD213PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31624, 295}, + /* 7224 */ {I_VPMADD213PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31632, 295}, + /* 7225 */ {I_VPMADD213PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31640, 295}, + /* 7226 */ {I_VPMADD213PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31648, 295}, + /* 7227 */ {I_VPMADD213PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31656, 296}, + /* 7228 */ {I_VPMADD213PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31664, 296}, + /* 7229 */ {I_VPMADD231PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31672, 295}, + /* 7230 */ {I_VPMADD231PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31680, 295}, + /* 7231 */ {I_VPMADD231PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31688, 295}, + /* 7232 */ {I_VPMADD231PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31696, 295}, + /* 7233 */ {I_VPMADD231PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31704, 296}, + /* 7234 */ {I_VPMADD231PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31712, 296}, + /* 7235 */ {I_VFMADD132PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31720, 295}, + /* 7236 */ {I_VFMADD132PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31728, 295}, + /* 7237 */ {I_VFMADD132PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31736, 295}, + /* 7238 */ {I_VFMADD132PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31744, 295}, + /* 7239 */ {I_VFMADD132PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31752, 296}, + /* 7240 */ {I_VFMADD132PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31760, 296}, + /* 7241 */ {I_VFMADD213PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31768, 295}, + /* 7242 */ {I_VFMADD213PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31776, 295}, + /* 7243 */ {I_VFMADD213PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31784, 295}, + /* 7244 */ {I_VFMADD213PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31792, 295}, + /* 7245 */ {I_VFMADD213PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31800, 296}, + /* 7246 */ {I_VFMADD213PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31808, 296}, + /* 7247 */ {I_VFMADD231PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31816, 295}, + /* 7248 */ {I_VFMADD231PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31824, 295}, + /* 7249 */ {I_VFMADD231PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31832, 295}, + /* 7250 */ {I_VFMADD231PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31840, 295}, + /* 7251 */ {I_VFMADD231PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31848, 296}, + /* 7252 */ {I_VFMADD231PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+31856, 296}, + /* 7253 */ {I_VPMADD132SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31864, 296}, + /* 7254 */ {I_VPMADD132SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31872, 296}, + /* 7255 */ {I_VPMADD213SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31880, 296}, + /* 7256 */ {I_VPMADD213SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31888, 296}, + /* 7257 */ {I_VPMADD231SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31896, 296}, + /* 7258 */ {I_VPMADD231SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31904, 296}, + /* 7259 */ {I_VPNMADD132SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31912, 296}, + /* 7260 */ {I_VPNMADD132SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31920, 296}, + /* 7261 */ {I_VPNMADD213SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31928, 296}, + /* 7262 */ {I_VPNMADD213SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31936, 296}, + /* 7263 */ {I_VPNMADD231SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+31944, 296}, + /* 7264 */ {I_VPNMADD231SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+31952, 296}, + /* 7265 */ {I_VPMSUB132PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31960, 295}, + /* 7266 */ {I_VPMSUB132PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31968, 295}, + /* 7267 */ {I_VPMSUB132PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+31976, 295}, + /* 7268 */ {I_VPMSUB132PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+31984, 295}, + /* 7269 */ {I_VPMSUB132PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+31992, 296}, + /* 7270 */ {I_VPMSUB132PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32000, 296}, + /* 7271 */ {I_VPMSUB213PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32008, 295}, + /* 7272 */ {I_VPMSUB213PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32016, 295}, + /* 7273 */ {I_VPMSUB213PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32024, 295}, + /* 7274 */ {I_VPMSUB213PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32032, 295}, + /* 7275 */ {I_VPMSUB213PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32040, 296}, + /* 7276 */ {I_VPMSUB213PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32048, 296}, + /* 7277 */ {I_VPMSUB231PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32056, 295}, + /* 7278 */ {I_VPMSUB231PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32064, 295}, + /* 7279 */ {I_VPMSUB231PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32072, 295}, + /* 7280 */ {I_VPMSUB231PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32080, 295}, + /* 7281 */ {I_VPMSUB231PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32088, 296}, + /* 7282 */ {I_VPMSUB231PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32096, 296}, + /* 7283 */ {I_VFMSUB132PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32104, 295}, + /* 7284 */ {I_VFMSUB132PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32112, 295}, + /* 7285 */ {I_VFMSUB132PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32120, 295}, + /* 7286 */ {I_VFMSUB132PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32128, 295}, + /* 7287 */ {I_VFMSUB132PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32136, 296}, + /* 7288 */ {I_VFMSUB132PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32144, 296}, + /* 7289 */ {I_VFMSUB213PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32152, 295}, + /* 7290 */ {I_VFMSUB213PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32160, 295}, + /* 7291 */ {I_VFMSUB213PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32168, 295}, + /* 7292 */ {I_VFMSUB213PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32176, 295}, + /* 7293 */ {I_VFMSUB213PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32184, 296}, + /* 7294 */ {I_VFMSUB213PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32192, 296}, + /* 7295 */ {I_VFMSUB231PH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32200, 295}, + /* 7296 */ {I_VFMSUB231PH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32208, 295}, + /* 7297 */ {I_VFMSUB231PH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32216, 295}, + /* 7298 */ {I_VFMSUB231PH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32224, 295}, + /* 7299 */ {I_VFMSUB231PH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32232, 296}, + /* 7300 */ {I_VFMSUB231PH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32240, 296}, + /* 7301 */ {I_VPMSUB132SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32248, 296}, + /* 7302 */ {I_VPMSUB132SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32256, 296}, + /* 7303 */ {I_VPMSUB213SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32264, 296}, + /* 7304 */ {I_VPMSUB213SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32272, 296}, + /* 7305 */ {I_VPMSUB231SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32280, 296}, + /* 7306 */ {I_VPMSUB231SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32288, 296}, + /* 7307 */ {I_VPNMSUB132SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32296, 296}, + /* 7308 */ {I_VPNMSUB132SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32304, 296}, + /* 7309 */ {I_VPNMSUB213SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32312, 296}, + /* 7310 */ {I_VPNMSUB213SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32320, 296}, + /* 7311 */ {I_VPNMSUB231SH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32328, 296}, + /* 7312 */ {I_VPNMSUB231SH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32336, 296}, + /* 7313 */ {I_VFPCLASSPH, 3, {KREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK,B16,0,0,0}, nasm_bytecodes+12097, 295}, + /* 7314 */ {I_VFPCLASSPH, 3, {KREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK,B16,0,0,0}, nasm_bytecodes+12106, 295}, + /* 7315 */ {I_VFPCLASSPH, 3, {KREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK,B16,0,0,0}, nasm_bytecodes+12115, 296}, + /* 7316 */ {I_VFPCLASSSH, 3, {KREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+12124, 296}, + /* 7317 */ {I_VGETEXPPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32344, 295}, + /* 7318 */ {I_VGETEXPPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32352, 295}, + /* 7319 */ {I_VGETEXPPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+32360, 296}, + /* 7320 */ {I_VGETEXPSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+32368, 296}, + /* 7321 */ {I_VGETMANTPH, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12133, 295}, + /* 7322 */ {I_VGETMANTPH, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12142, 295}, + /* 7323 */ {I_VGETMANTPH, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+12151, 296}, + /* 7324 */ {I_VGETMANTSH, 3, {XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+12160, 296}, + /* 7325 */ {I_VGETMAXPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32376, 295}, + /* 7326 */ {I_VGETMAXPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32384, 295}, + /* 7327 */ {I_VGETMAXPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+32392, 296}, + /* 7328 */ {I_VGETMAXSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+32400, 296}, + /* 7329 */ {I_VGETMINPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32408, 295}, + /* 7330 */ {I_VGETMINPH, 2, {YMMREG,RM_XMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32416, 295}, + /* 7331 */ {I_VGETMINPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+32424, 296}, + /* 7332 */ {I_VGETMINSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+32432, 296}, + /* 7333 */ {I_VMOVSH, 2, {XMMREG,MEMORY|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+32440, 296}, + /* 7334 */ {I_VMOVSH, 2, {MEMORY|BITS16,XMMREG,0,0,0}, {MASK,0,0,0,0}, nasm_bytecodes+32448, 296}, + /* 7335 */ {I_VMOVSH, 3, {XMMREG,XMMREG,XMMREG,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+32456, 296}, + /* 7336 */ {I_VMOVSH, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+32464, 296}, + /* 7337 */ {I_VMOVSH, 3, {XMMREG,XMMREG,XMMREG,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+32472, 296}, + /* 7338 */ {I_VMOVSH, 2, {XMMREG,XMMREG,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+32480, 296}, + /* 7339 */ {I_VMOVW, 2, {XMMREG,RM_GPR|BITS16,0,0,0}, {MASK|Z,0,0,0,0}, nasm_bytecodes+32488, 296}, + /* 7340 */ {I_VMOVW, 2, {RM_GPR|BITS16,XMMREG,0,0,0}, NO_DECORATOR, nasm_bytecodes+32496, 296}, + /* 7341 */ {I_VMULPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32504, 295}, + /* 7342 */ {I_VMULPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32512, 295}, + /* 7343 */ {I_VMULPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32520, 295}, + /* 7344 */ {I_VMULPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32528, 295}, + /* 7345 */ {I_VMULPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32536, 296}, + /* 7346 */ {I_VMULPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32544, 296}, + /* 7347 */ {I_VMULSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32552, 296}, + /* 7348 */ {I_VMULSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32560, 296}, + /* 7349 */ {I_VRCPPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32568, 295}, + /* 7350 */ {I_VRCPPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32576, 295}, + /* 7351 */ {I_VRCPPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32584, 295}, + /* 7352 */ {I_VRCPPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32592, 295}, + /* 7353 */ {I_VRCPPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32600, 296}, + /* 7354 */ {I_VRCPPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32608, 296}, + /* 7355 */ {I_VRCPSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+32616, 296}, + /* 7356 */ {I_VRCPSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+32624, 296}, + /* 7357 */ {I_VREDUCEPH, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12169, 295}, + /* 7358 */ {I_VREDUCEPH, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12178, 295}, + /* 7359 */ {I_VREDUCEPH, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+12187, 296}, + /* 7360 */ {I_VREDUCESH, 4, {XMMREG,XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+12196, 296}, + /* 7361 */ {I_VREDUCESH, 3, {XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+12205, 296}, + /* 7362 */ {I_VENDSCALEPH, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12214, 295}, + /* 7363 */ {I_VENDSCALEPH, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12223, 295}, + /* 7364 */ {I_VENDSCALEPH, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+12232, 296}, + /* 7365 */ {I_VENDSCALESH, 4, {XMMREG,XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+12241, 296}, + /* 7366 */ {I_VENDSCALESH, 3, {XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+12250, 296}, + /* 7367 */ {I_VRSQRTPH, 3, {XMMREG,RM_XMM|BITS128,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12259, 295}, + /* 7368 */ {I_VRSQRTPH, 3, {YMMREG,RM_YMM|BITS256,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+12268, 295}, + /* 7369 */ {I_VRSQRTPH, 3, {ZMMREG,RM_ZMM|BITS512,IMMEDIATE|BITS8,0,0}, {MASK|Z,B16|SAE,0,0,0}, nasm_bytecodes+12277, 296}, + /* 7370 */ {I_VRSQRTSH, 4, {XMMREG,XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0}, {MASK|Z,0,SAE,0,0}, nasm_bytecodes+12286, 296}, + /* 7371 */ {I_VRSQRTSH, 3, {XMMREG,RM_XMM|BITS16,IMMEDIATE|BITS8,0,0}, {MASK|Z,SAE,0,0,0}, nasm_bytecodes+12295, 296}, + /* 7372 */ {I_VSCALEFPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32632, 295}, + /* 7373 */ {I_VSCALEFPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32640, 295}, + /* 7374 */ {I_VSCALEFPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32648, 295}, + /* 7375 */ {I_VSCALEFPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32656, 295}, + /* 7376 */ {I_VSCALEFPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32664, 296}, + /* 7377 */ {I_VSCALEFPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32672, 296}, + /* 7378 */ {I_VSCALEFSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32680, 296}, + /* 7379 */ {I_VSCALEFSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32688, 296}, + /* 7380 */ {I_VSQRTPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32696, 295}, + /* 7381 */ {I_VSQRTPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32704, 295}, + /* 7382 */ {I_VSQRTPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32712, 296}, + /* 7383 */ {I_VSQRTSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32720, 296}, + /* 7384 */ {I_VSQRTSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32728, 296}, + /* 7385 */ {I_VSUBPH, 3, {XMMREG,XMMREG,RM_XMM|BITS128,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32736, 295}, + /* 7386 */ {I_VSUBPH, 2, {XMMREG,RM_XMM|BITS128,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32744, 295}, + /* 7387 */ {I_VSUBPH, 3, {YMMREG,YMMREG,RM_YMM|BITS256,0,0}, {MASK|Z,0,B16,0,0}, nasm_bytecodes+32752, 295}, + /* 7388 */ {I_VSUBPH, 2, {YMMREG,RM_YMM|BITS256,0,0,0}, {MASK|Z,B16,0,0,0}, nasm_bytecodes+32760, 295}, + /* 7389 */ {I_VSUBPH, 3, {ZMMREG,ZMMREG,RM_ZMM|BITS512,0,0}, {MASK|Z,0,B16|ER,0,0}, nasm_bytecodes+32768, 296}, + /* 7390 */ {I_VSUBPH, 2, {ZMMREG,RM_ZMM|BITS512,0,0,0}, {MASK|Z,B16|ER,0,0,0}, nasm_bytecodes+32776, 296}, + /* 7391 */ {I_VSUBSH, 3, {XMMREG,XMMREG,RM_XMM|BITS16,0,0}, {MASK|Z,0,ER,0,0}, nasm_bytecodes+32784, 296}, + /* 7392 */ {I_VSUBSH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {MASK|Z,ER,0,0,0}, nasm_bytecodes+32792, 296}, + /* 7393 */ {I_VUCOMISH, 2, {XMMREG,RM_XMM|BITS16,0,0,0}, {0,SAE,0,0,0}, nasm_bytecodes+32800, 296}, + /* 7394 */ {I_AADD, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32808, 299}, + /* 7395 */ {I_AADD, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+32816, 300}, + /* 7396 */ {I_AAND, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32824, 299}, + /* 7397 */ {I_AAND, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+32832, 300}, + /* 7398 */ {I_AXOR, 2, {MEMORY|BITS32,REG_GPR|BITS32,0,0,0}, NO_DECORATOR, nasm_bytecodes+32840, 299}, + /* 7399 */ {I_AXOR, 2, {MEMORY|BITS64,REG_GPR|BITS64,0,0,0}, NO_DECORATOR, nasm_bytecodes+32848, 300}, + /* 7400 */ {I_CLUI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46071, 301}, + /* 7401 */ {I_SENDUIPI, 1, {REG_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+42510, 301}, + /* 7402 */ {I_STUI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46077, 301}, + /* 7403 */ {I_TESTUI, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46083, 301}, + /* 7404 */ {I_UIRET, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46089, 301}, + /* 7405 */ {I_CMPAXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42517, 302}, + /* 7406 */ {I_CMPCXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42531, 302}, + /* 7407 */ {I_CMPGXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42552, 302}, + /* 7408 */ {I_CMPLXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42566, 302}, + /* 7409 */ {I_CMPNAXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42538, 302}, + /* 7410 */ {I_CMPNCXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42524, 302}, + /* 7411 */ {I_CMPNGXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42573, 302}, + /* 7412 */ {I_CMPNLXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42559, 302}, + /* 7413 */ {I_CMPNOXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42587, 302}, + /* 7414 */ {I_CMPNSXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42601, 302}, + /* 7415 */ {I_CMPNZXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42580, 302}, + /* 7416 */ {I_CMPOXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42608, 302}, + /* 7417 */ {I_CMPPEXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42615, 302}, + /* 7418 */ {I_CMPPOXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42594, 302}, + /* 7419 */ {I_CMPSXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42622, 302}, + /* 7420 */ {I_CMPZXADD, 3, {MEMORY|BITS32,REG_GPR|BITS32,REG_GPR|BITS32,0,0}, NO_DECORATOR, nasm_bytecodes+42545, 302}, + /* 7421 */ {I_CMPAXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42629, 303}, + /* 7422 */ {I_CMPCXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42643, 303}, + /* 7423 */ {I_CMPGXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42664, 303}, + /* 7424 */ {I_CMPLXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42678, 303}, + /* 7425 */ {I_CMPNAXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42650, 303}, + /* 7426 */ {I_CMPNCXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42636, 303}, + /* 7427 */ {I_CMPNGXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42685, 303}, + /* 7428 */ {I_CMPNLXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42671, 303}, + /* 7429 */ {I_CMPNOXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42699, 303}, + /* 7430 */ {I_CMPNSXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42713, 303}, + /* 7431 */ {I_CMPNZXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42692, 303}, + /* 7432 */ {I_CMPOXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42720, 303}, + /* 7433 */ {I_CMPPEXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42727, 303}, + /* 7434 */ {I_CMPPOXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42706, 303}, + /* 7435 */ {I_CMPSXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42734, 303}, + /* 7436 */ {I_CMPZXADD, 3, {MEMORY|BITS64,REG_GPR|BITS64,REG_GPR|BITS64,0,0}, NO_DECORATOR, nasm_bytecodes+42657, 303}, + /* 7437 */ {I_WRMSRNS, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46095, 304}, + /* 7438 */ {I_RDMSRLIST, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46101, 305}, + /* 7439 */ {I_WRMSRLIST, 0, {0,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46107, 305}, + /* 7440 */ {I_HRESET, 2, {IMMEDIATE,REG_EAX,0,0,0}, NO_DECORATOR, nasm_bytecodes+32856, 306}, + /* 7441 */ {I_HINT_NOP0, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46113, 307}, + /* 7442 */ {I_HINT_NOP0, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46119, 307}, + /* 7443 */ {I_HINT_NOP0, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46125, 308}, + /* 7444 */ {I_HINT_NOP1, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46131, 307}, + /* 7445 */ {I_HINT_NOP1, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46137, 307}, + /* 7446 */ {I_HINT_NOP1, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46143, 308}, + /* 7447 */ {I_HINT_NOP2, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46149, 307}, + /* 7448 */ {I_HINT_NOP2, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46155, 307}, + /* 7449 */ {I_HINT_NOP2, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46161, 308}, + /* 7450 */ {I_HINT_NOP3, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46167, 307}, + /* 7451 */ {I_HINT_NOP3, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46173, 307}, + /* 7452 */ {I_HINT_NOP3, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46179, 308}, + /* 7453 */ {I_HINT_NOP4, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46185, 307}, + /* 7454 */ {I_HINT_NOP4, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46191, 307}, + /* 7455 */ {I_HINT_NOP4, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46197, 308}, + /* 7456 */ {I_HINT_NOP5, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46203, 307}, + /* 7457 */ {I_HINT_NOP5, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46209, 307}, + /* 7458 */ {I_HINT_NOP5, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46215, 308}, + /* 7459 */ {I_HINT_NOP6, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46221, 307}, + /* 7460 */ {I_HINT_NOP6, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46227, 307}, + /* 7461 */ {I_HINT_NOP6, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46233, 308}, + /* 7462 */ {I_HINT_NOP7, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46239, 307}, + /* 7463 */ {I_HINT_NOP7, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46245, 307}, + /* 7464 */ {I_HINT_NOP7, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46251, 308}, + /* 7465 */ {I_HINT_NOP8, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46257, 307}, + /* 7466 */ {I_HINT_NOP8, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46263, 307}, + /* 7467 */ {I_HINT_NOP8, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46269, 308}, + /* 7468 */ {I_HINT_NOP9, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46275, 307}, + /* 7469 */ {I_HINT_NOP9, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46281, 307}, + /* 7470 */ {I_HINT_NOP9, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46287, 308}, + /* 7471 */ {I_HINT_NOP10, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46293, 307}, + /* 7472 */ {I_HINT_NOP10, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46299, 307}, + /* 7473 */ {I_HINT_NOP10, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46305, 308}, + /* 7474 */ {I_HINT_NOP11, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46311, 307}, + /* 7475 */ {I_HINT_NOP11, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46317, 307}, + /* 7476 */ {I_HINT_NOP11, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46323, 308}, + /* 7477 */ {I_HINT_NOP12, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46329, 307}, + /* 7478 */ {I_HINT_NOP12, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46335, 307}, + /* 7479 */ {I_HINT_NOP12, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46341, 308}, + /* 7480 */ {I_HINT_NOP13, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46347, 307}, + /* 7481 */ {I_HINT_NOP13, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46353, 307}, + /* 7482 */ {I_HINT_NOP13, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46359, 308}, + /* 7483 */ {I_HINT_NOP14, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46365, 307}, + /* 7484 */ {I_HINT_NOP14, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46371, 307}, + /* 7485 */ {I_HINT_NOP14, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46377, 308}, + /* 7486 */ {I_HINT_NOP15, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46383, 307}, + /* 7487 */ {I_HINT_NOP15, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46389, 307}, + /* 7488 */ {I_HINT_NOP15, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46395, 308}, + /* 7489 */ {I_HINT_NOP16, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46401, 307}, + /* 7490 */ {I_HINT_NOP16, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46407, 307}, + /* 7491 */ {I_HINT_NOP16, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46413, 308}, + /* 7492 */ {I_HINT_NOP17, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46419, 307}, + /* 7493 */ {I_HINT_NOP17, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46425, 307}, + /* 7494 */ {I_HINT_NOP17, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46431, 308}, + /* 7495 */ {I_HINT_NOP18, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46437, 307}, + /* 7496 */ {I_HINT_NOP18, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46443, 307}, + /* 7497 */ {I_HINT_NOP18, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46449, 308}, + /* 7498 */ {I_HINT_NOP19, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46455, 307}, + /* 7499 */ {I_HINT_NOP19, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46461, 307}, + /* 7500 */ {I_HINT_NOP19, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46467, 308}, + /* 7501 */ {I_HINT_NOP20, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46473, 307}, + /* 7502 */ {I_HINT_NOP20, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46479, 307}, + /* 7503 */ {I_HINT_NOP20, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46485, 308}, + /* 7504 */ {I_HINT_NOP21, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46491, 307}, + /* 7505 */ {I_HINT_NOP21, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46497, 307}, + /* 7506 */ {I_HINT_NOP21, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46503, 308}, + /* 7507 */ {I_HINT_NOP22, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46509, 307}, + /* 7508 */ {I_HINT_NOP22, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46515, 307}, + /* 7509 */ {I_HINT_NOP22, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46521, 308}, + /* 7510 */ {I_HINT_NOP23, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46527, 307}, + /* 7511 */ {I_HINT_NOP23, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46533, 307}, + /* 7512 */ {I_HINT_NOP23, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46539, 308}, + /* 7513 */ {I_HINT_NOP24, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46545, 307}, + /* 7514 */ {I_HINT_NOP24, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46551, 307}, + /* 7515 */ {I_HINT_NOP24, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46557, 308}, + /* 7516 */ {I_HINT_NOP25, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46563, 307}, + /* 7517 */ {I_HINT_NOP25, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46569, 307}, + /* 7518 */ {I_HINT_NOP25, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46575, 308}, + /* 7519 */ {I_HINT_NOP26, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46581, 307}, + /* 7520 */ {I_HINT_NOP26, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46587, 307}, + /* 7521 */ {I_HINT_NOP26, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46593, 308}, + /* 7522 */ {I_HINT_NOP27, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46599, 307}, + /* 7523 */ {I_HINT_NOP27, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46605, 307}, + /* 7524 */ {I_HINT_NOP27, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46611, 308}, + /* 7525 */ {I_HINT_NOP28, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46617, 307}, + /* 7526 */ {I_HINT_NOP28, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46623, 307}, + /* 7527 */ {I_HINT_NOP28, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46629, 308}, + /* 7528 */ {I_HINT_NOP29, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46635, 307}, + /* 7529 */ {I_HINT_NOP29, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46641, 307}, + /* 7530 */ {I_HINT_NOP29, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46647, 308}, + /* 7531 */ {I_HINT_NOP30, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46653, 307}, + /* 7532 */ {I_HINT_NOP30, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46659, 307}, + /* 7533 */ {I_HINT_NOP30, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46665, 308}, + /* 7534 */ {I_HINT_NOP31, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46671, 307}, + /* 7535 */ {I_HINT_NOP31, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46677, 307}, + /* 7536 */ {I_HINT_NOP31, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46683, 308}, + /* 7537 */ {I_HINT_NOP32, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46689, 307}, + /* 7538 */ {I_HINT_NOP32, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46695, 307}, + /* 7539 */ {I_HINT_NOP32, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46701, 308}, + /* 7540 */ {I_HINT_NOP33, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46707, 307}, + /* 7541 */ {I_HINT_NOP33, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46713, 307}, + /* 7542 */ {I_HINT_NOP33, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46719, 308}, + /* 7543 */ {I_HINT_NOP34, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46725, 307}, + /* 7544 */ {I_HINT_NOP34, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46731, 307}, + /* 7545 */ {I_HINT_NOP34, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46737, 308}, + /* 7546 */ {I_HINT_NOP35, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46743, 307}, + /* 7547 */ {I_HINT_NOP35, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46749, 307}, + /* 7548 */ {I_HINT_NOP35, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46755, 308}, + /* 7549 */ {I_HINT_NOP36, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46761, 307}, + /* 7550 */ {I_HINT_NOP36, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46767, 307}, + /* 7551 */ {I_HINT_NOP36, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46773, 308}, + /* 7552 */ {I_HINT_NOP37, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46779, 307}, + /* 7553 */ {I_HINT_NOP37, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46785, 307}, + /* 7554 */ {I_HINT_NOP37, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46791, 308}, + /* 7555 */ {I_HINT_NOP38, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46797, 307}, + /* 7556 */ {I_HINT_NOP38, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46803, 307}, + /* 7557 */ {I_HINT_NOP38, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46809, 308}, + /* 7558 */ {I_HINT_NOP39, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46815, 307}, + /* 7559 */ {I_HINT_NOP39, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46821, 307}, + /* 7560 */ {I_HINT_NOP39, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46827, 308}, + /* 7561 */ {I_HINT_NOP40, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46833, 307}, + /* 7562 */ {I_HINT_NOP40, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46839, 307}, + /* 7563 */ {I_HINT_NOP40, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46845, 308}, + /* 7564 */ {I_HINT_NOP41, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46851, 307}, + /* 7565 */ {I_HINT_NOP41, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46857, 307}, + /* 7566 */ {I_HINT_NOP41, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46863, 308}, + /* 7567 */ {I_HINT_NOP42, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46869, 307}, + /* 7568 */ {I_HINT_NOP42, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46875, 307}, + /* 7569 */ {I_HINT_NOP42, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46881, 308}, + /* 7570 */ {I_HINT_NOP43, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46887, 307}, + /* 7571 */ {I_HINT_NOP43, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46893, 307}, + /* 7572 */ {I_HINT_NOP43, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46899, 308}, + /* 7573 */ {I_HINT_NOP44, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46905, 307}, + /* 7574 */ {I_HINT_NOP44, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46911, 307}, + /* 7575 */ {I_HINT_NOP44, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46917, 308}, + /* 7576 */ {I_HINT_NOP45, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46923, 307}, + /* 7577 */ {I_HINT_NOP45, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46929, 307}, + /* 7578 */ {I_HINT_NOP45, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46935, 308}, + /* 7579 */ {I_HINT_NOP46, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46941, 307}, + /* 7580 */ {I_HINT_NOP46, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46947, 307}, + /* 7581 */ {I_HINT_NOP46, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46953, 308}, + /* 7582 */ {I_HINT_NOP47, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46959, 307}, + /* 7583 */ {I_HINT_NOP47, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46965, 307}, + /* 7584 */ {I_HINT_NOP47, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46971, 308}, + /* 7585 */ {I_HINT_NOP48, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46977, 307}, + /* 7586 */ {I_HINT_NOP48, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46983, 307}, + /* 7587 */ {I_HINT_NOP48, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46989, 308}, + /* 7588 */ {I_HINT_NOP49, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+46995, 307}, + /* 7589 */ {I_HINT_NOP49, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47001, 307}, + /* 7590 */ {I_HINT_NOP49, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47007, 308}, + /* 7591 */ {I_HINT_NOP50, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47013, 307}, + /* 7592 */ {I_HINT_NOP50, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47019, 307}, + /* 7593 */ {I_HINT_NOP50, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47025, 308}, + /* 7594 */ {I_HINT_NOP51, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47031, 307}, + /* 7595 */ {I_HINT_NOP51, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47037, 307}, + /* 7596 */ {I_HINT_NOP51, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47043, 308}, + /* 7597 */ {I_HINT_NOP52, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47049, 307}, + /* 7598 */ {I_HINT_NOP52, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47055, 307}, + /* 7599 */ {I_HINT_NOP52, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47061, 308}, + /* 7600 */ {I_HINT_NOP53, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47067, 307}, + /* 7601 */ {I_HINT_NOP53, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47073, 307}, + /* 7602 */ {I_HINT_NOP53, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47079, 308}, + /* 7603 */ {I_HINT_NOP54, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47085, 307}, + /* 7604 */ {I_HINT_NOP54, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47091, 307}, + /* 7605 */ {I_HINT_NOP54, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47097, 308}, + /* 7606 */ {I_HINT_NOP55, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47103, 307}, + /* 7607 */ {I_HINT_NOP55, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47109, 307}, + /* 7608 */ {I_HINT_NOP55, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47115, 308}, + /* 7609 */ {I_HINT_NOP56, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43437, 307}, + /* 7610 */ {I_HINT_NOP56, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43443, 307}, + /* 7611 */ {I_HINT_NOP56, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+43449, 308}, + /* 7612 */ {I_HINT_NOP57, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47121, 307}, + /* 7613 */ {I_HINT_NOP57, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47127, 307}, + /* 7614 */ {I_HINT_NOP57, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47133, 308}, + /* 7615 */ {I_HINT_NOP58, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47139, 307}, + /* 7616 */ {I_HINT_NOP58, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47145, 307}, + /* 7617 */ {I_HINT_NOP58, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47151, 308}, + /* 7618 */ {I_HINT_NOP59, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47157, 307}, + /* 7619 */ {I_HINT_NOP59, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47163, 307}, + /* 7620 */ {I_HINT_NOP59, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47169, 308}, + /* 7621 */ {I_HINT_NOP60, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47175, 307}, + /* 7622 */ {I_HINT_NOP60, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47181, 307}, + /* 7623 */ {I_HINT_NOP60, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47187, 308}, + /* 7624 */ {I_HINT_NOP61, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47193, 307}, + /* 7625 */ {I_HINT_NOP61, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47199, 307}, + /* 7626 */ {I_HINT_NOP61, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47205, 308}, + /* 7627 */ {I_HINT_NOP62, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47211, 307}, + /* 7628 */ {I_HINT_NOP62, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47217, 307}, + /* 7629 */ {I_HINT_NOP62, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47223, 308}, + /* 7630 */ {I_HINT_NOP63, 1, {RM_GPR|BITS16,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47229, 307}, + /* 7631 */ {I_HINT_NOP63, 1, {RM_GPR|BITS32,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47235, 307}, + /* 7632 */ {I_HINT_NOP63, 1, {RM_GPR|BITS64,0,0,0,0}, NO_DECORATOR, nasm_bytecodes+47241, 308}, +}; + +static const struct itemplate * const itable_00[] = { + instrux + 43, + instrux + 44, +}; + +static const struct itemplate * const itable_01[] = { + instrux + 45, + instrux + 46, + instrux + 47, + instrux + 48, + instrux + 49, + instrux + 50, +}; + +static const struct itemplate * const itable_02[] = { + instrux + 51, + instrux + 52, +}; + +static const struct itemplate * const itable_03[] = { + instrux + 53, + instrux + 54, + instrux + 55, + instrux + 56, + instrux + 57, + instrux + 58, +}; + +static const struct itemplate * const itable_04[] = { + instrux + 62, +}; + +static const struct itemplate * const itable_05[] = { + instrux + 63, + instrux + 64, + instrux + 65, +}; + +static const struct itemplate * const itable_06[] = { + instrux + 845, +}; + +static const struct itemplate * const itable_07[] = { + instrux + 794, +}; + +static const struct itemplate * const itable_08[] = { + instrux + 697, + instrux + 698, +}; + +static const struct itemplate * const itable_09[] = { + instrux + 699, + instrux + 700, + instrux + 701, + instrux + 702, + instrux + 703, + instrux + 704, +}; + +static const struct itemplate * const itable_0A[] = { + instrux + 705, + instrux + 706, +}; + +static const struct itemplate * const itable_0B[] = { + instrux + 707, + instrux + 708, + instrux + 709, + instrux + 710, + instrux + 711, + instrux + 712, +}; + +static const struct itemplate * const itable_0C[] = { + instrux + 716, +}; + +static const struct itemplate * const itable_0D[] = { + instrux + 717, + instrux + 718, + instrux + 719, +}; + +static const struct itemplate * const itable_0E[] = { + instrux + 846, +}; + +static const struct itemplate * const itable_0F00[] = { + instrux + 525, + instrux + 526, + instrux + 555, + instrux + 556, + instrux + 557, + instrux + 598, + instrux + 599, + instrux + 600, + instrux + 1045, + instrux + 1046, + instrux + 1047, + instrux + 1048, + instrux + 1049, + instrux + 1064, + instrux + 1065, + instrux + 1066, + instrux + 1067, + instrux + 1068, + instrux + 1137, + instrux + 1138, + instrux + 1139, + instrux + 1140, + instrux + 1141, + instrux + 1142, +}; + +static const struct itemplate * const itable_0F01[] = { + instrux + 491, + instrux + 492, + instrux + 493, + instrux + 494, + instrux + 495, + instrux + 550, + instrux + 554, + instrux + 558, + instrux + 559, + instrux + 560, + instrux + 602, + instrux + 603, + instrux + 683, + instrux + 684, + instrux + 893, + instrux + 995, + instrux + 1044, + instrux + 1050, + instrux + 1052, + instrux + 1053, + instrux + 1054, + instrux + 1055, + instrux + 1056, + instrux + 1101, + instrux + 1495, + instrux + 1496, + instrux + 1728, + instrux + 1729, + instrux + 1730, + instrux + 1732, + instrux + 1733, + instrux + 1734, + instrux + 1735, + instrux + 1740, + instrux + 1741, + instrux + 1742, + instrux + 1745, + instrux + 1751, + instrux + 1752, + instrux + 1753, + instrux + 1754, + instrux + 3380, + instrux + 3381, + instrux + 3989, + instrux + 3990, + instrux + 6770, + instrux + 6771, + instrux + 6778, + instrux + 6787, + instrux + 6962, + instrux + 6963, + instrux + 6964, + instrux + 6972, + instrux + 6973, + instrux + 6974, + instrux + 6985, + instrux + 6986, + instrux + 6988, + instrux + 6989, + instrux + 7400, + instrux + 7402, + instrux + 7403, + instrux + 7404, + instrux + 7437, + instrux + 7438, + instrux + 7439, +}; + +static const struct itemplate * const itable_0F02[] = { + instrux + 528, + instrux + 529, + instrux + 530, + instrux + 531, + instrux + 532, + instrux + 533, + instrux + 534, + instrux + 535, + instrux + 536, + instrux + 537, +}; + +static const struct itemplate * const itable_0F03[] = { + instrux + 585, + instrux + 586, + instrux + 587, + instrux + 588, + instrux + 589, + instrux + 590, + instrux + 591, + instrux + 592, + instrux + 593, + instrux + 594, +}; + +static const struct itemplate * const itable_0F05[] = { + instrux + 1102, +}; + +static const struct itemplate * const itable_0F06[] = { + instrux + 181, +}; + +static const struct itemplate * const itable_0F07[] = { + instrux + 1105, +}; + +static const struct itemplate * const itable_0F08[] = { + instrux + 488, +}; + +static const struct itemplate * const itable_0F09[] = { + instrux + 1144, + instrux + 6793, + instrux + 6987, +}; + +static const struct itemplate * const itable_0F0B[] = { + instrux + 1136, +}; + +static const struct itemplate * const itable_0F0D[] = { + instrux + 807, + instrux + 808, + instrux + 4040, +}; + +static const struct itemplate * const itable_0F0E[] = { + instrux + 314, +}; + +static const struct itemplate * const itable_0F0F[] = { + instrux + 751, + instrux + 759, + instrux + 760, + instrux + 761, + instrux + 762, + instrux + 763, + instrux + 764, + instrux + 765, + instrux + 766, + instrux + 767, + instrux + 768, + instrux + 769, + instrux + 770, + instrux + 771, + instrux + 772, + instrux + 773, + instrux + 774, + instrux + 775, + instrux + 780, + instrux + 1532, + instrux + 1533, + instrux + 1534, + instrux + 1535, + instrux + 1536, + instrux + 1869, + instrux + 1870, +}; + +static const struct itemplate * const itable_0F10[] = { + instrux + 1470, + instrux + 1472, + instrux + 1702, + instrux + 1704, +}; + +static const struct itemplate * const itable_0F11[] = { + instrux + 1471, + instrux + 1473, + instrux + 1703, + instrux + 1705, +}; + +static const struct itemplate * const itable_0F12[] = { + instrux + 1464, + instrux + 1466, + instrux + 1699, + instrux + 1725, + instrux + 1727, +}; + +static const struct itemplate * const itable_0F13[] = { + instrux + 1465, + instrux + 1698, +}; + +static const struct itemplate * const itable_0F14[] = { + instrux + 1489, + instrux + 1716, +}; + +static const struct itemplate * const itable_0F15[] = { + instrux + 1488, + instrux + 1715, +}; + +static const struct itemplate * const itable_0F16[] = { + instrux + 1461, + instrux + 1463, + instrux + 1697, + instrux + 1726, +}; + +static const struct itemplate * const itable_0F17[] = { + instrux + 1462, + instrux + 1696, +}; + +static const struct itemplate * const itable_0F18[] = { + instrux + 1509, + instrux + 1510, + instrux + 1511, + instrux + 1512, + instrux + 1513, + instrux + 1514, + instrux + 7441, + instrux + 7442, + instrux + 7443, + instrux + 7444, + instrux + 7445, + instrux + 7446, + instrux + 7447, + instrux + 7448, + instrux + 7449, + instrux + 7450, + instrux + 7451, + instrux + 7452, + instrux + 7453, + instrux + 7454, + instrux + 7455, + instrux + 7456, + instrux + 7457, + instrux + 7458, + instrux + 7459, + instrux + 7460, + instrux + 7461, + instrux + 7462, + instrux + 7463, + instrux + 7464, +}; + +static const struct itemplate * const itable_0F19[] = { + instrux + 7465, + instrux + 7466, + instrux + 7467, + instrux + 7468, + instrux + 7469, + instrux + 7470, + instrux + 7471, + instrux + 7472, + instrux + 7473, + instrux + 7474, + instrux + 7475, + instrux + 7476, + instrux + 7477, + instrux + 7478, + instrux + 7479, + instrux + 7480, + instrux + 7481, + instrux + 7482, + instrux + 7483, + instrux + 7484, + instrux + 7485, + instrux + 7486, + instrux + 7487, + instrux + 7488, +}; + +static const struct itemplate * const itable_0F1A[] = { + instrux + 4042, + instrux + 4043, + instrux + 4044, + instrux + 4045, + instrux + 4046, + instrux + 4047, + instrux + 4051, + instrux + 4052, + instrux + 4055, + instrux + 4056, + instrux + 4057, + instrux + 7489, + instrux + 7490, + instrux + 7491, + instrux + 7492, + instrux + 7493, + instrux + 7494, + instrux + 7495, + instrux + 7496, + instrux + 7497, + instrux + 7498, + instrux + 7499, + instrux + 7500, + instrux + 7501, + instrux + 7502, + instrux + 7503, + instrux + 7504, + instrux + 7505, + instrux + 7506, + instrux + 7507, + instrux + 7508, + instrux + 7509, + instrux + 7510, + instrux + 7511, + instrux + 7512, +}; + +static const struct itemplate * const itable_0F1B[] = { + instrux + 4041, + instrux + 4048, + instrux + 4049, + instrux + 4050, + instrux + 4053, + instrux + 4054, + instrux + 4058, + instrux + 4059, + instrux + 4060, + instrux + 4061, + instrux + 4062, + instrux + 7513, + instrux + 7514, + instrux + 7515, + instrux + 7516, + instrux + 7517, + instrux + 7518, + instrux + 7519, + instrux + 7520, + instrux + 7521, + instrux + 7522, + instrux + 7523, + instrux + 7524, + instrux + 7525, + instrux + 7526, + instrux + 7527, + instrux + 7528, + instrux + 7529, + instrux + 7530, + instrux + 7531, + instrux + 7532, + instrux + 7533, + instrux + 7534, + instrux + 7535, + instrux + 7536, +}; + +static const struct itemplate * const itable_0F1C[] = { + instrux + 6781, + instrux + 7537, + instrux + 7538, + instrux + 7539, + instrux + 7540, + instrux + 7541, + instrux + 7542, + instrux + 7543, + instrux + 7544, + instrux + 7545, + instrux + 7546, + instrux + 7547, + instrux + 7548, + instrux + 7549, + instrux + 7550, + instrux + 7551, + instrux + 7552, + instrux + 7553, + instrux + 7554, + instrux + 7555, + instrux + 7556, + instrux + 7557, + instrux + 7558, + instrux + 7559, + instrux + 7560, +}; + +static const struct itemplate * const itable_0F1D[] = { + instrux + 7561, + instrux + 7562, + instrux + 7563, + instrux + 7564, + instrux + 7565, + instrux + 7566, + instrux + 7567, + instrux + 7568, + instrux + 7569, + instrux + 7570, + instrux + 7571, + instrux + 7572, + instrux + 7573, + instrux + 7574, + instrux + 7575, + instrux + 7576, + instrux + 7577, + instrux + 7578, + instrux + 7579, + instrux + 7580, + instrux + 7581, + instrux + 7582, + instrux + 7583, + instrux + 7584, +}; + +static const struct itemplate * const itable_0F1E[] = { + instrux + 6966, + instrux + 6967, + instrux + 6970, + instrux + 6971, + instrux + 7585, + instrux + 7586, + instrux + 7587, + instrux + 7588, + instrux + 7589, + instrux + 7590, + instrux + 7591, + instrux + 7592, + instrux + 7593, + instrux + 7594, + instrux + 7595, + instrux + 7596, + instrux + 7597, + instrux + 7598, + instrux + 7599, + instrux + 7600, + instrux + 7601, + instrux + 7602, + instrux + 7603, + instrux + 7604, + instrux + 7605, + instrux + 7606, + instrux + 7607, + instrux + 7608, +}; + +static const struct itemplate * const itable_0F1F[] = { + instrux + 690, + instrux + 691, + instrux + 692, + instrux + 7609, + instrux + 7610, + instrux + 7611, + instrux + 7612, + instrux + 7613, + instrux + 7614, + instrux + 7615, + instrux + 7616, + instrux + 7617, + instrux + 7618, + instrux + 7619, + instrux + 7620, + instrux + 7621, + instrux + 7622, + instrux + 7623, + instrux + 7624, + instrux + 7625, + instrux + 7626, + instrux + 7627, + instrux + 7628, + instrux + 7629, + instrux + 7630, + instrux + 7631, + instrux + 7632, +}; + +static const struct itemplate * const itable_0F20[] = { + instrux + 620, + instrux + 621, +}; + +static const struct itemplate * const itable_0F21[] = { + instrux + 624, + instrux + 625, +}; + +static const struct itemplate * const itable_0F22[] = { + instrux + 622, + instrux + 623, +}; + +static const struct itemplate * const itable_0F23[] = { + instrux + 626, + instrux + 627, +}; + +static const struct itemplate * const itable_0F28[] = { + instrux + 1459, + instrux + 1694, +}; + +static const struct itemplate * const itable_0F29[] = { + instrux + 1460, + instrux + 1695, +}; + +static const struct itemplate * const itable_0F2A[] = { + instrux + 1441, + instrux + 1443, + instrux + 1444, + instrux + 1670, + instrux + 1678, + instrux + 1679, +}; + +static const struct itemplate * const itable_0F2B[] = { + instrux + 1469, + instrux + 1542, + instrux + 1791, + instrux + 1792, +}; + +static const struct itemplate * const itable_0F2C[] = { + instrux + 1449, + instrux + 1450, + instrux + 1451, + instrux + 1681, + instrux + 1684, + instrux + 1685, + instrux + 1686, + instrux + 1687, +}; + +static const struct itemplate * const itable_0F2D[] = { + instrux + 1442, + instrux + 1445, + instrux + 1446, + instrux + 1447, + instrux + 1448, + instrux + 1668, + instrux + 1673, + instrux + 1674, + instrux + 1675, + instrux + 1676, +}; + +static const struct itemplate * const itable_0F2E[] = { + instrux + 1487, + instrux + 1714, +}; + +static const struct itemplate * const itable_0F2F[] = { + instrux + 1440, + instrux + 1664, +}; + +static const struct itemplate * const itable_0F30[] = { + instrux + 1146, +}; + +static const struct itemplate * const itable_0F31[] = { + instrux + 892, +}; + +static const struct itemplate * const itable_0F32[] = { + instrux + 890, +}; + +static const struct itemplate * const itable_0F33[] = { + instrux + 891, +}; + +static const struct itemplate * const itable_0F34[] = { + instrux + 1103, +}; + +static const struct itemplate * const itable_0F35[] = { + instrux + 1104, +}; + +static const struct itemplate * const itable_0F36[] = { + instrux + 889, +}; + +static const struct itemplate * const itable_0F37[] = { + instrux + 1145, + instrux + 1868, +}; + +static const struct itemplate * const itable_0F3800[] = { + instrux + 1779, + instrux + 1780, +}; + +static const struct itemplate * const itable_0F3801[] = { + instrux + 1763, + instrux + 1764, +}; + +static const struct itemplate * const itable_0F3802[] = { + instrux + 1765, + instrux + 1766, +}; + +static const struct itemplate * const itable_0F3803[] = { + instrux + 1767, + instrux + 1768, +}; + +static const struct itemplate * const itable_0F3804[] = { + instrux + 1775, + instrux + 1776, +}; + +static const struct itemplate * const itable_0F3805[] = { + instrux + 1769, + instrux + 1770, +}; + +static const struct itemplate * const itable_0F3806[] = { + instrux + 1771, + instrux + 1772, +}; + +static const struct itemplate * const itable_0F3807[] = { + instrux + 1773, + instrux + 1774, +}; + +static const struct itemplate * const itable_0F3808[] = { + instrux + 1781, + instrux + 1782, +}; + +static const struct itemplate * const itable_0F3809[] = { + instrux + 1783, + instrux + 1784, +}; + +static const struct itemplate * const itable_0F380A[] = { + instrux + 1785, + instrux + 1786, +}; + +static const struct itemplate * const itable_0F380B[] = { + instrux + 1777, + instrux + 1778, +}; + +static const struct itemplate * const itable_0F3810[] = { + instrux + 1810, + instrux + 1811, +}; + +static const struct itemplate * const itable_0F3814[] = { + instrux + 1800, + instrux + 1801, +}; + +static const struct itemplate * const itable_0F3815[] = { + instrux + 1798, + instrux + 1799, +}; + +static const struct itemplate * const itable_0F3817[] = { + instrux + 1850, +}; + +static const struct itemplate * const itable_0F381C[] = { + instrux + 1755, + instrux + 1756, +}; + +static const struct itemplate * const itable_0F381D[] = { + instrux + 1757, + instrux + 1758, +}; + +static const struct itemplate * const itable_0F381E[] = { + instrux + 1759, + instrux + 1760, +}; + +static const struct itemplate * const itable_0F3820[] = { + instrux + 1836, +}; + +static const struct itemplate * const itable_0F3821[] = { + instrux + 1837, +}; + +static const struct itemplate * const itable_0F3822[] = { + instrux + 1838, +}; + +static const struct itemplate * const itable_0F3823[] = { + instrux + 1839, +}; + +static const struct itemplate * const itable_0F3824[] = { + instrux + 1840, +}; + +static const struct itemplate * const itable_0F3825[] = { + instrux + 1841, +}; + +static const struct itemplate * const itable_0F3828[] = { + instrux + 1848, +}; + +static const struct itemplate * const itable_0F3829[] = { + instrux + 1813, +}; + +static const struct itemplate * const itable_0F382A[] = { + instrux + 1807, +}; + +static const struct itemplate * const itable_0F382B[] = { + instrux + 1809, +}; + +static const struct itemplate * const itable_0F3830[] = { + instrux + 1842, +}; + +static const struct itemplate * const itable_0F3831[] = { + instrux + 1843, +}; + +static const struct itemplate * const itable_0F3832[] = { + instrux + 1844, +}; + +static const struct itemplate * const itable_0F3833[] = { + instrux + 1845, +}; + +static const struct itemplate * const itable_0F3834[] = { + instrux + 1846, +}; + +static const struct itemplate * const itable_0F3835[] = { + instrux + 1847, +}; + +static const struct itemplate * const itable_0F3837[] = { + instrux + 1864, +}; + +static const struct itemplate * const itable_0F3838[] = { + instrux + 1832, +}; + +static const struct itemplate * const itable_0F3839[] = { + instrux + 1833, +}; + +static const struct itemplate * const itable_0F383A[] = { + instrux + 1835, +}; + +static const struct itemplate * const itable_0F383B[] = { + instrux + 1834, +}; + +static const struct itemplate * const itable_0F383C[] = { + instrux + 1828, +}; + +static const struct itemplate * const itable_0F383D[] = { + instrux + 1829, +}; + +static const struct itemplate * const itable_0F383E[] = { + instrux + 1831, +}; + +static const struct itemplate * const itable_0F383F[] = { + instrux + 1830, +}; + +static const struct itemplate * const itable_0F3840[] = { + instrux + 1849, +}; + +static const struct itemplate * const itable_0F3841[] = { + instrux + 1822, +}; + +static const struct itemplate * const itable_0F3880[] = { + instrux + 1747, + instrux + 1748, +}; + +static const struct itemplate * const itable_0F3881[] = { + instrux + 1749, + instrux + 1750, +}; + +static const struct itemplate * const itable_0F3882[] = { + instrux + 489, + instrux + 490, +}; + +static const struct itemplate * const itable_0F38C8[] = { + instrux + 4065, +}; + +static const struct itemplate * const itable_0F38C9[] = { + instrux + 4063, +}; + +static const struct itemplate * const itable_0F38CA[] = { + instrux + 4064, +}; + +static const struct itemplate * const itable_0F38CB[] = { + instrux + 4069, + instrux + 4070, +}; + +static const struct itemplate * const itable_0F38CC[] = { + instrux + 4067, +}; + +static const struct itemplate * const itable_0F38CD[] = { + instrux + 4068, +}; + +static const struct itemplate * const itable_0F38CF[] = { + instrux + 6816, +}; + +static const struct itemplate * const itable_0F38DB[] = { + instrux + 1881, +}; + +static const struct itemplate * const itable_0F38DC[] = { + instrux + 1877, +}; + +static const struct itemplate * const itable_0F38DD[] = { + instrux + 1878, +}; + +static const struct itemplate * const itable_0F38DE[] = { + instrux + 1879, +}; + +static const struct itemplate * const itable_0F38DF[] = { + instrux + 1880, +}; + +static const struct itemplate * const itable_0F38F0[] = { + instrux + 1855, + instrux + 1858, + instrux + 1871, + instrux + 1872, + instrux + 1873, +}; + +static const struct itemplate * const itable_0F38F1[] = { + instrux + 1856, + instrux + 1857, + instrux + 1859, + instrux + 1874, + instrux + 1875, + instrux + 1876, +}; + +static const struct itemplate * const itable_0F38F5[] = { + instrux + 6975, + instrux + 6976, +}; + +static const struct itemplate * const itable_0F38F6[] = { + instrux + 3373, + instrux + 3374, + instrux + 3375, + instrux + 3376, + instrux + 6977, + instrux + 6978, +}; + +static const struct itemplate * const itable_0F38F8[] = { + instrux + 6784, + instrux + 6785, + instrux + 6786, + instrux + 6979, + instrux + 6980, + instrux + 6981, + instrux + 6982, + instrux + 6983, + instrux + 6984, +}; + +static const struct itemplate * const itable_0F38F9[] = { + instrux + 6782, + instrux + 6783, +}; + +static const struct itemplate * const itable_0F38FC[] = { + instrux + 7394, + instrux + 7395, + instrux + 7396, + instrux + 7397, + instrux + 7398, + instrux + 7399, +}; + +static const struct itemplate * const itable_0F39[] = { + instrux + 245, +}; + +static const struct itemplate * const itable_0F3A08[] = { + instrux + 1852, +}; + +static const struct itemplate * const itable_0F3A09[] = { + instrux + 1851, +}; + +static const struct itemplate * const itable_0F3A0A[] = { + instrux + 1854, +}; + +static const struct itemplate * const itable_0F3A0B[] = { + instrux + 1853, +}; + +static const struct itemplate * const itable_0F3A0C[] = { + instrux + 1797, +}; + +static const struct itemplate * const itable_0F3A0D[] = { + instrux + 1796, +}; + +static const struct itemplate * const itable_0F3A0E[] = { + instrux + 1812, +}; + +static const struct itemplate * const itable_0F3A0F[] = { + instrux + 1761, + instrux + 1762, +}; + +static const struct itemplate * const itable_0F3A14[] = { + instrux + 1814, + instrux + 1815, + instrux + 1816, +}; + +static const struct itemplate * const itable_0F3A15[] = { + instrux + 1819, + instrux + 1820, + instrux + 1821, +}; + +static const struct itemplate * const itable_0F3A16[] = { + instrux + 1817, + instrux + 1818, +}; + +static const struct itemplate * const itable_0F3A17[] = { + instrux + 1804, + instrux + 1805, +}; + +static const struct itemplate * const itable_0F3A20[] = { + instrux + 1823, + instrux + 1824, + instrux + 1825, +}; + +static const struct itemplate * const itable_0F3A21[] = { + instrux + 1806, +}; + +static const struct itemplate * const itable_0F3A22[] = { + instrux + 1826, + instrux + 1827, +}; + +static const struct itemplate * const itable_0F3A40[] = { + instrux + 1803, +}; + +static const struct itemplate * const itable_0F3A41[] = { + instrux + 1802, +}; + +static const struct itemplate * const itable_0F3A42[] = { + instrux + 1808, +}; + +static const struct itemplate * const itable_0F3A44[] = { + instrux + 3111, + instrux + 3112, + instrux + 3113, + instrux + 3114, + instrux + 3115, +}; + +static const struct itemplate * const itable_0F3A60[] = { + instrux + 1861, +}; + +static const struct itemplate * const itable_0F3A61[] = { + instrux + 1860, +}; + +static const struct itemplate * const itable_0F3A62[] = { + instrux + 1863, +}; + +static const struct itemplate * const itable_0F3A63[] = { + instrux + 1862, +}; + +static const struct itemplate * const itable_0F3ACC[] = { + instrux + 4066, +}; + +static const struct itemplate * const itable_0F3ACE[] = { + instrux + 6805, +}; + +static const struct itemplate * const itable_0F3ACF[] = { + instrux + 6794, +}; + +static const struct itemplate * const itable_0F3ADF[] = { + instrux + 1882, +}; + +static const struct itemplate * const itable_0F3AF0[] = { + instrux + 7440, +}; + +static const struct itemplate * const itable_0F3C[] = { + instrux + 229, +}; + +static const struct itemplate * const itable_0F3D[] = { + instrux + 228, +}; + +static const struct itemplate * const itable_0F40[] = { + instrux + 1221, + instrux + 1237, + instrux + 1253, + instrux + 1269, + instrux + 1285, + instrux + 1301, +}; + +static const struct itemplate * const itable_0F41[] = { + instrux + 1218, + instrux + 1234, + instrux + 1250, + instrux + 1266, + instrux + 1282, + instrux + 1298, +}; + +static const struct itemplate * const itable_0F42[] = { + instrux + 1211, + instrux + 1227, + instrux + 1243, + instrux + 1259, + instrux + 1275, + instrux + 1291, +}; + +static const struct itemplate * const itable_0F43[] = { + instrux + 1215, + instrux + 1231, + instrux + 1247, + instrux + 1263, + instrux + 1279, + instrux + 1295, +}; + +static const struct itemplate * const itable_0F44[] = { + instrux + 1225, + instrux + 1241, + instrux + 1257, + instrux + 1273, + instrux + 1289, + instrux + 1305, +}; + +static const struct itemplate * const itable_0F45[] = { + instrux + 1220, + instrux + 1236, + instrux + 1252, + instrux + 1268, + instrux + 1284, + instrux + 1300, +}; + +static const struct itemplate * const itable_0F46[] = { + instrux + 1214, + instrux + 1230, + instrux + 1246, + instrux + 1262, + instrux + 1278, + instrux + 1294, +}; + +static const struct itemplate * const itable_0F47[] = { + instrux + 1210, + instrux + 1226, + instrux + 1242, + instrux + 1258, + instrux + 1274, + instrux + 1290, +}; + +static const struct itemplate * const itable_0F48[] = { + instrux + 1224, + instrux + 1240, + instrux + 1256, + instrux + 1272, + instrux + 1288, + instrux + 1304, +}; + +static const struct itemplate * const itable_0F49[] = { + instrux + 1219, + instrux + 1235, + instrux + 1251, + instrux + 1267, + instrux + 1283, + instrux + 1299, +}; + +static const struct itemplate * const itable_0F4A[] = { + instrux + 1222, + instrux + 1238, + instrux + 1254, + instrux + 1270, + instrux + 1286, + instrux + 1302, +}; + +static const struct itemplate * const itable_0F4B[] = { + instrux + 1223, + instrux + 1239, + instrux + 1255, + instrux + 1271, + instrux + 1287, + instrux + 1303, +}; + +static const struct itemplate * const itable_0F4C[] = { + instrux + 1213, + instrux + 1229, + instrux + 1245, + instrux + 1261, + instrux + 1277, + instrux + 1293, +}; + +static const struct itemplate * const itable_0F4D[] = { + instrux + 1217, + instrux + 1233, + instrux + 1249, + instrux + 1265, + instrux + 1281, + instrux + 1297, +}; + +static const struct itemplate * const itable_0F4E[] = { + instrux + 1216, + instrux + 1232, + instrux + 1248, + instrux + 1264, + instrux + 1280, + instrux + 1296, +}; + +static const struct itemplate * const itable_0F4F[] = { + instrux + 1212, + instrux + 1228, + instrux + 1244, + instrux + 1260, + instrux + 1276, + instrux + 1292, +}; + +static const struct itemplate * const itable_0F50[] = { + instrux + 750, + instrux + 1467, + instrux + 1468, + instrux + 1700, + instrux + 1701, +}; + +static const struct itemplate * const itable_0F51[] = { + instrux + 742, + instrux + 1482, + instrux + 1483, + instrux + 1710, + instrux + 1711, +}; + +static const struct itemplate * const itable_0F52[] = { + instrux + 778, + instrux + 1479, + instrux + 1480, +}; + +static const struct itemplate * const itable_0F53[] = { + instrux + 1477, + instrux + 1478, +}; + +static const struct itemplate * const itable_0F54[] = { + instrux + 758, + instrux + 1421, + instrux + 1645, +}; + +static const struct itemplate * const itable_0F55[] = { + instrux + 828, + instrux + 1420, + instrux + 1644, +}; + +static const struct itemplate * const itable_0F56[] = { + instrux + 1476, + instrux + 1708, +}; + +static const struct itemplate * const itable_0F57[] = { + instrux + 1490, + instrux + 1717, +}; + +static const struct itemplate * const itable_0F58[] = { + instrux + 787, + instrux + 1418, + instrux + 1419, + instrux + 1642, + instrux + 1643, +}; + +static const struct itemplate * const itable_0F59[] = { + instrux + 781, + instrux + 1474, + instrux + 1475, + instrux + 1706, + instrux + 1707, +}; + +static const struct itemplate * const itable_0F5A[] = { + instrux + 786, + instrux + 1669, + instrux + 1672, + instrux + 1677, + instrux + 1680, +}; + +static const struct itemplate * const itable_0F5B[] = { + instrux + 785, + instrux + 1666, + instrux + 1671, + instrux + 1683, +}; + +static const struct itemplate * const itable_0F5C[] = { + instrux + 784, + instrux + 1485, + instrux + 1486, + instrux + 1712, + instrux + 1713, +}; + +static const struct itemplate * const itable_0F5D[] = { + instrux + 779, + instrux + 1457, + instrux + 1458, + instrux + 1692, + instrux + 1693, +}; + +static const struct itemplate * const itable_0F5E[] = { + instrux + 776, + instrux + 1452, + instrux + 1453, + instrux + 1688, + instrux + 1689, +}; + +static const struct itemplate * const itable_0F5F[] = { + instrux + 1455, + instrux + 1456, + instrux + 1690, + instrux + 1691, +}; + +static const struct itemplate * const itable_0F60[] = { + instrux + 836, + instrux + 1637, +}; + +static const struct itemplate * const itable_0F61[] = { + instrux + 838, + instrux + 1638, +}; + +static const struct itemplate * const itable_0F62[] = { + instrux + 837, + instrux + 1639, +}; + +static const struct itemplate * const itable_0F63[] = { + instrux + 737, + instrux + 1561, +}; + +static const struct itemplate * const itable_0F64[] = { + instrux + 755, + instrux + 1580, +}; + +static const struct itemplate * const itable_0F65[] = { + instrux + 757, + instrux + 1581, +}; + +static const struct itemplate * const itable_0F66[] = { + instrux + 756, + instrux + 1582, +}; + +static const struct itemplate * const itable_0F67[] = { + instrux + 738, + instrux + 1563, +}; + +static const struct itemplate * const itable_0F68[] = { + instrux + 833, + instrux + 1633, +}; + +static const struct itemplate * const itable_0F69[] = { + instrux + 835, + instrux + 1634, +}; + +static const struct itemplate * const itable_0F6A[] = { + instrux + 834, + instrux + 1635, +}; + +static const struct itemplate * const itable_0F6B[] = { + instrux + 736, + instrux + 1562, +}; + +static const struct itemplate * const itable_0F6C[] = { + instrux + 1640, +}; + +static const struct itemplate * const itable_0F6D[] = { + instrux + 1636, +}; + +static const struct itemplate * const itable_0F6E[] = { + instrux + 656, + instrux + 660, + instrux + 1546, + instrux + 1547, + instrux + 1558, +}; + +static const struct itemplate * const itable_0F6F[] = { + instrux + 658, + instrux + 1549, + instrux + 1551, +}; + +static const struct itemplate * const itable_0F70[] = { + instrux + 1531, + instrux + 1600, + instrux + 1601, + instrux + 1602, + instrux + 1603, + instrux + 1604, + instrux + 1605, +}; + +static const struct itemplate * const itable_0F71[] = { + instrux + 814, + instrux + 818, + instrux + 824, + instrux + 1608, + instrux + 1614, + instrux + 1619, +}; + +static const struct itemplate * const itable_0F72[] = { + instrux + 810, + instrux + 816, + instrux + 820, + instrux + 1610, + instrux + 1616, + instrux + 1621, +}; + +static const struct itemplate * const itable_0F73[] = { + instrux + 812, + instrux + 822, + instrux + 1606, + instrux + 1612, + instrux + 1617, + instrux + 1623, +}; + +static const struct itemplate * const itable_0F74[] = { + instrux + 752, + instrux + 1577, +}; + +static const struct itemplate * const itable_0F75[] = { + instrux + 754, + instrux + 1578, +}; + +static const struct itemplate * const itable_0F76[] = { + instrux + 753, + instrux + 1579, +}; + +static const struct itemplate * const itable_0F77[] = { + instrux + 246, +}; + +static const struct itemplate * const itable_0F78[] = { + instrux + 1099, + instrux + 1738, + instrux + 1739, + instrux + 1787, + instrux + 1789, +}; + +static const struct itemplate * const itable_0F79[] = { + instrux + 942, + instrux + 1743, + instrux + 1744, + instrux + 1788, + instrux + 1790, +}; + +static const struct itemplate * const itable_0F7B[] = { + instrux + 943, +}; + +static const struct itemplate * const itable_0F7C[] = { + instrux + 1100, + instrux + 1720, + instrux + 1721, +}; + +static const struct itemplate * const itable_0F7D[] = { + instrux + 945, + instrux + 1722, + instrux + 1723, +}; + +static const struct itemplate * const itable_0F7E[] = { + instrux + 657, + instrux + 661, + instrux + 1545, + instrux + 1548, + instrux + 1554, + instrux + 1557, + instrux + 1559, +}; + +static const struct itemplate * const itable_0F7F[] = { + instrux + 659, + instrux + 1550, + instrux + 1552, +}; + +static const struct itemplate * const itable_0F80[] = { + instrux + 1317, + instrux + 1333, + instrux + 1349, + instrux + 1365, +}; + +static const struct itemplate * const itable_0F81[] = { + instrux + 1314, + instrux + 1330, + instrux + 1346, + instrux + 1362, +}; + +static const struct itemplate * const itable_0F82[] = { + instrux + 1307, + instrux + 1323, + instrux + 1339, + instrux + 1355, +}; + +static const struct itemplate * const itable_0F83[] = { + instrux + 1311, + instrux + 1327, + instrux + 1343, + instrux + 1359, +}; + +static const struct itemplate * const itable_0F84[] = { + instrux + 1321, + instrux + 1337, + instrux + 1353, + instrux + 1369, +}; + +static const struct itemplate * const itable_0F85[] = { + instrux + 1316, + instrux + 1332, + instrux + 1348, + instrux + 1364, +}; + +static const struct itemplate * const itable_0F86[] = { + instrux + 1310, + instrux + 1326, + instrux + 1342, + instrux + 1358, +}; + +static const struct itemplate * const itable_0F87[] = { + instrux + 1306, + instrux + 1322, + instrux + 1338, + instrux + 1354, +}; + +static const struct itemplate * const itable_0F88[] = { + instrux + 1320, + instrux + 1336, + instrux + 1352, + instrux + 1368, +}; + +static const struct itemplate * const itable_0F89[] = { + instrux + 1315, + instrux + 1331, + instrux + 1347, + instrux + 1363, +}; + +static const struct itemplate * const itable_0F8A[] = { + instrux + 1318, + instrux + 1334, + instrux + 1350, + instrux + 1366, +}; + +static const struct itemplate * const itable_0F8B[] = { + instrux + 1319, + instrux + 1335, + instrux + 1351, + instrux + 1367, +}; + +static const struct itemplate * const itable_0F8C[] = { + instrux + 1309, + instrux + 1325, + instrux + 1341, + instrux + 1357, +}; + +static const struct itemplate * const itable_0F8D[] = { + instrux + 1313, + instrux + 1329, + instrux + 1345, + instrux + 1361, +}; + +static const struct itemplate * const itable_0F8E[] = { + instrux + 1312, + instrux + 1328, + instrux + 1344, + instrux + 1360, +}; + +static const struct itemplate * const itable_0F8F[] = { + instrux + 1308, + instrux + 1324, + instrux + 1340, + instrux + 1356, +}; + +static const struct itemplate * const itable_0F90[] = { + instrux + 1397, + instrux + 1413, +}; + +static const struct itemplate * const itable_0F91[] = { + instrux + 1394, + instrux + 1410, +}; + +static const struct itemplate * const itable_0F92[] = { + instrux + 1387, + instrux + 1403, +}; + +static const struct itemplate * const itable_0F93[] = { + instrux + 1391, + instrux + 1407, +}; + +static const struct itemplate * const itable_0F94[] = { + instrux + 1401, + instrux + 1417, +}; + +static const struct itemplate * const itable_0F95[] = { + instrux + 1396, + instrux + 1412, +}; + +static const struct itemplate * const itable_0F96[] = { + instrux + 1390, + instrux + 1406, +}; + +static const struct itemplate * const itable_0F97[] = { + instrux + 1386, + instrux + 1402, +}; + +static const struct itemplate * const itable_0F98[] = { + instrux + 1400, + instrux + 1416, +}; + +static const struct itemplate * const itable_0F99[] = { + instrux + 1395, + instrux + 1411, +}; + +static const struct itemplate * const itable_0F9A[] = { + instrux + 1398, + instrux + 1414, +}; + +static const struct itemplate * const itable_0F9B[] = { + instrux + 1399, + instrux + 1415, +}; + +static const struct itemplate * const itable_0F9C[] = { + instrux + 1389, + instrux + 1405, +}; + +static const struct itemplate * const itable_0F9D[] = { + instrux + 1393, + instrux + 1409, +}; + +static const struct itemplate * const itable_0F9E[] = { + instrux + 1392, + instrux + 1408, +}; + +static const struct itemplate * const itable_0F9F[] = { + instrux + 1388, + instrux + 1404, +}; + +static const struct itemplate * const itable_0FA0[] = { + instrux + 849, +}; + +static const struct itemplate * const itable_0FA1[] = { + instrux + 797, +}; + +static const struct itemplate * const itable_0FA2[] = { + instrux + 227, +}; + +static const struct itemplate * const itable_0FA3[] = { + instrux + 121, + instrux + 122, + instrux + 123, + instrux + 124, + instrux + 125, + instrux + 126, +}; + +static const struct itemplate * const itable_0FA4[] = { + instrux + 1008, + instrux + 1009, + instrux + 1010, + instrux + 1011, + instrux + 1012, + instrux + 1013, +}; + +static const struct itemplate * const itable_0FA5[] = { + instrux + 1014, + instrux + 1015, + instrux + 1016, + instrux + 1017, + instrux + 1018, + instrux + 1019, +}; + +static const struct itemplate * const itable_0FA6C0[] = { + instrux + 3388, +}; + +static const struct itemplate * const itable_0FA6C8[] = { + instrux + 3389, +}; + +static const struct itemplate * const itable_0FA6D0[] = { + instrux + 3390, +}; + +static const struct itemplate * const itable_0FA7C0[] = { + instrux + 3382, +}; + +static const struct itemplate * const itable_0FA7C8[] = { + instrux + 3383, +}; + +static const struct itemplate * const itable_0FA7D0[] = { + instrux + 3384, +}; + +static const struct itemplate * const itable_0FA7D8[] = { + instrux + 3385, +}; + +static const struct itemplate * const itable_0FA7E0[] = { + instrux + 3386, +}; + +static const struct itemplate * const itable_0FA7E8[] = { + instrux + 3387, +}; + +static const struct itemplate * const itable_0FA8[] = { + instrux + 850, +}; + +static const struct itemplate * const itable_0FA9[] = { + instrux + 798, +}; + +static const struct itemplate * const itable_0FAA[] = { + instrux + 944, +}; + +static const struct itemplate * const itable_0FAB[] = { + instrux + 148, + instrux + 149, + instrux + 150, + instrux + 151, + instrux + 152, + instrux + 153, +}; + +static const struct itemplate * const itable_0FAC[] = { + instrux + 1032, + instrux + 1033, + instrux + 1034, + instrux + 1035, + instrux + 1036, + instrux + 1037, +}; + +static const struct itemplate * const itable_0FAD[] = { + instrux + 1038, + instrux + 1039, + instrux + 1040, + instrux + 1041, + instrux + 1042, + instrux + 1043, +}; + +static const struct itemplate * const itable_0FAE[] = { + instrux + 546, + instrux + 601, + instrux + 994, + instrux + 1454, + instrux + 1484, + instrux + 1491, + instrux + 1492, + instrux + 1493, + instrux + 1494, + instrux + 1497, + instrux + 1498, + instrux + 1501, + instrux + 1502, + instrux + 1505, + instrux + 1506, + instrux + 1515, + instrux + 1538, + instrux + 1543, + instrux + 1544, + instrux + 3358, + instrux + 3359, + instrux + 3360, + instrux + 3361, + instrux + 3365, + instrux + 3366, + instrux + 3367, + instrux + 3368, + instrux + 6775, + instrux + 6776, + instrux + 6777, + instrux + 6779, + instrux + 6780, + instrux + 6788, + instrux + 6789, + instrux + 6790, + instrux + 6791, + instrux + 6792, + instrux + 6965, + instrux + 6968, + instrux + 6969, +}; + +static const struct itemplate * const itable_0FAF[] = { + instrux + 445, + instrux + 446, + instrux + 447, + instrux + 448, + instrux + 449, + instrux + 450, +}; + +static const struct itemplate * const itable_0FB0[] = { + instrux + 217, + instrux + 218, +}; + +static const struct itemplate * const itable_0FB1[] = { + instrux + 219, + instrux + 220, + instrux + 221, + instrux + 222, + instrux + 223, + instrux + 224, +}; + +static const struct itemplate * const itable_0FB2[] = { + instrux + 595, + instrux + 596, + instrux + 597, +}; + +static const struct itemplate * const itable_0FB3[] = { + instrux + 139, + instrux + 140, + instrux + 141, + instrux + 142, + instrux + 143, + instrux + 144, +}; + +static const struct itemplate * const itable_0FB4[] = { + instrux + 547, + instrux + 548, + instrux + 549, +}; + +static const struct itemplate * const itable_0FB5[] = { + instrux + 551, + instrux + 552, + instrux + 553, +}; + +static const struct itemplate * const itable_0FB6[] = { + instrux + 673, + instrux + 674, + instrux + 675, + instrux + 677, +}; + +static const struct itemplate * const itable_0FB7[] = { + instrux + 676, + instrux + 678, +}; + +static const struct itemplate * const itable_0FB8[] = { + instrux + 522, + instrux + 523, + instrux + 524, + instrux + 1865, + instrux + 1866, + instrux + 1867, +}; + +static const struct itemplate * const itable_0FB9[] = { + instrux + 1133, + instrux + 1134, + instrux + 1135, +}; + +static const struct itemplate * const itable_0FBA[] = { + instrux + 127, + instrux + 128, + instrux + 129, + instrux + 136, + instrux + 137, + instrux + 138, + instrux + 145, + instrux + 146, + instrux + 147, + instrux + 154, + instrux + 155, + instrux + 156, +}; + +static const struct itemplate * const itable_0FBB[] = { + instrux + 130, + instrux + 131, + instrux + 132, + instrux + 133, + instrux + 134, + instrux + 135, +}; + +static const struct itemplate * const itable_0FBC[] = { + instrux + 107, + instrux + 108, + instrux + 109, + instrux + 110, + instrux + 111, + instrux + 112, + instrux + 4033, + instrux + 4034, + instrux + 4035, +}; + +static const struct itemplate * const itable_0FBD[] = { + instrux + 113, + instrux + 114, + instrux + 115, + instrux + 116, + instrux + 117, + instrux + 118, + instrux + 1793, + instrux + 1794, + instrux + 1795, +}; + +static const struct itemplate * const itable_0FBE[] = { + instrux + 666, + instrux + 667, + instrux + 668, + instrux + 670, +}; + +static const struct itemplate * const itable_0FBF[] = { + instrux + 669, + instrux + 671, +}; + +static const struct itemplate * const itable_0FC0[] = { + instrux + 1147, + instrux + 1148, +}; + +static const struct itemplate * const itable_0FC1[] = { + instrux + 1149, + instrux + 1150, + instrux + 1151, + instrux + 1152, + instrux + 1153, + instrux + 1154, +}; + +static const struct itemplate * const itable_0FC2[] = { + instrux + 1422, + instrux + 1423, + instrux + 1424, + instrux + 1425, + instrux + 1426, + instrux + 1427, + instrux + 1428, + instrux + 1429, + instrux + 1430, + instrux + 1431, + instrux + 1432, + instrux + 1433, + instrux + 1434, + instrux + 1435, + instrux + 1436, + instrux + 1437, + instrux + 1438, + instrux + 1439, + instrux + 1646, + instrux + 1647, + instrux + 1648, + instrux + 1649, + instrux + 1650, + instrux + 1651, + instrux + 1652, + instrux + 1653, + instrux + 1654, + instrux + 1655, + instrux + 1656, + instrux + 1657, + instrux + 1658, + instrux + 1659, + instrux + 1660, + instrux + 1661, + instrux + 1662, + instrux + 1663, +}; + +static const struct itemplate * const itable_0FC3[] = { + instrux + 1540, + instrux + 1541, +}; + +static const struct itemplate * const itable_0FC4[] = { + instrux + 1521, + instrux + 1522, + instrux + 1523, + instrux + 1584, + instrux + 1585, + instrux + 1586, +}; + +static const struct itemplate * const itable_0FC5[] = { + instrux + 1520, + instrux + 1583, +}; + +static const struct itemplate * const itable_0FC6[] = { + instrux + 1481, + instrux + 1709, +}; + +static const struct itemplate * const itable_0FC7[] = { + instrux + 225, + instrux + 226, + instrux + 1499, + instrux + 1500, + instrux + 1503, + instrux + 1504, + instrux + 1507, + instrux + 1508, + instrux + 1731, + instrux + 1736, + instrux + 1737, + instrux + 1746, + instrux + 3362, + instrux + 3363, + instrux + 3364, + instrux + 3377, + instrux + 3378, + instrux + 3379, + instrux + 6772, + instrux + 6773, + instrux + 6774, + instrux + 7401, +}; + +static const struct itemplate * const itable_0FC8[] = { + instrux + 119, + instrux + 120, +}; + +static const struct itemplate * const itable_0FC9[] = { + instrux + 119, + instrux + 120, +}; + +static const struct itemplate * const itable_0FCA[] = { + instrux + 119, + instrux + 120, +}; + +static const struct itemplate * const itable_0FCB[] = { + instrux + 119, + instrux + 120, +}; + +static const struct itemplate * const itable_0FCC[] = { + instrux + 119, + instrux + 120, +}; + +static const struct itemplate * const itable_0FCD[] = { + instrux + 119, + instrux + 120, +}; + +static const struct itemplate * const itable_0FCE[] = { + instrux + 119, + instrux + 120, +}; + +static const struct itemplate * const itable_0FCF[] = { + instrux + 119, + instrux + 120, +}; + +static const struct itemplate * const itable_0FD0[] = { + instrux + 1718, + instrux + 1719, +}; + +static const struct itemplate * const itable_0FD1[] = { + instrux + 823, + instrux + 1618, +}; + +static const struct itemplate * const itable_0FD2[] = { + instrux + 819, + instrux + 1620, +}; + +static const struct itemplate * const itable_0FD3[] = { + instrux + 821, + instrux + 1622, +}; + +static const struct itemplate * const itable_0FD4[] = { + instrux + 1567, + instrux + 1568, +}; + +static const struct itemplate * const itable_0FD5[] = { + instrux + 783, + instrux + 1595, +}; + +static const struct itemplate * const itable_0FD6[] = { + instrux + 1553, + instrux + 1555, + instrux + 1556, + instrux + 1560, +}; + +static const struct itemplate * const itable_0FD7[] = { + instrux + 1528, + instrux + 1592, +}; + +static const struct itemplate * const itable_0FD8[] = { + instrux + 830, + instrux + 1631, +}; + +static const struct itemplate * const itable_0FD9[] = { + instrux + 831, + instrux + 1632, +}; + +static const struct itemplate * const itable_0FDA[] = { + instrux + 1527, + instrux + 1591, +}; + +static const struct itemplate * const itable_0FDB[] = { + instrux + 747, + instrux + 1573, +}; + +static const struct itemplate * const itable_0FDC[] = { + instrux + 744, + instrux + 1571, +}; + +static const struct itemplate * const itable_0FDD[] = { + instrux + 745, + instrux + 1572, +}; + +static const struct itemplate * const itable_0FDE[] = { + instrux + 1525, + instrux + 1589, +}; + +static const struct itemplate * const itable_0FDF[] = { + instrux + 748, + instrux + 1574, +}; + +static const struct itemplate * const itable_0FE0[] = { + instrux + 1518, + instrux + 1575, +}; + +static const struct itemplate * const itable_0FE1[] = { + instrux + 817, + instrux + 1613, +}; + +static const struct itemplate * const itable_0FE2[] = { + instrux + 815, + instrux + 1615, +}; + +static const struct itemplate * const itable_0FE3[] = { + instrux + 1519, + instrux + 1576, +}; + +static const struct itemplate * const itable_0FE4[] = { + instrux + 1529, + instrux + 1593, +}; + +static const struct itemplate * const itable_0FE5[] = { + instrux + 782, + instrux + 1594, +}; + +static const struct itemplate * const itable_0FE6[] = { + instrux + 1665, + instrux + 1667, + instrux + 1682, +}; + +static const struct itemplate * const itable_0FE7[] = { + instrux + 1517, + instrux + 1539, +}; + +static const struct itemplate * const itable_0FE8[] = { + instrux + 827, + instrux + 1629, +}; + +static const struct itemplate * const itable_0FE9[] = { + instrux + 829, + instrux + 1630, +}; + +static const struct itemplate * const itable_0FEA[] = { + instrux + 1526, + instrux + 1590, +}; + +static const struct itemplate * const itable_0FEB[] = { + instrux + 806, + instrux + 1598, +}; + +static const struct itemplate * const itable_0FEC[] = { + instrux + 741, + instrux + 1569, +}; + +static const struct itemplate * const itable_0FED[] = { + instrux + 743, + instrux + 1570, +}; + +static const struct itemplate * const itable_0FEE[] = { + instrux + 1524, + instrux + 1588, +}; + +static const struct itemplate * const itable_0FEF[] = { + instrux + 864, + instrux + 1641, +}; + +static const struct itemplate * const itable_0FF0[] = { + instrux + 1724, +}; + +static const struct itemplate * const itable_0FF1[] = { + instrux + 813, + instrux + 1607, +}; + +static const struct itemplate * const itable_0FF2[] = { + instrux + 809, + instrux + 1609, +}; + +static const struct itemplate * const itable_0FF3[] = { + instrux + 811, + instrux + 1611, +}; + +static const struct itemplate * const itable_0FF4[] = { + instrux + 1596, + instrux + 1597, +}; + +static const struct itemplate * const itable_0FF5[] = { + instrux + 777, + instrux + 1587, +}; + +static const struct itemplate * const itable_0FF6[] = { + instrux + 1530, + instrux + 1599, +}; + +static const struct itemplate * const itable_0FF7[] = { + instrux + 1516, + instrux + 1537, +}; + +static const struct itemplate * const itable_0FF8[] = { + instrux + 825, + instrux + 1624, +}; + +static const struct itemplate * const itable_0FF9[] = { + instrux + 832, + instrux + 1625, +}; + +static const struct itemplate * const itable_0FFA[] = { + instrux + 826, + instrux + 1626, +}; + +static const struct itemplate * const itable_0FFB[] = { + instrux + 1627, + instrux + 1628, +}; + +static const struct itemplate * const itable_0FFC[] = { + instrux + 739, + instrux + 1564, +}; + +static const struct itemplate * const itable_0FFD[] = { + instrux + 746, + instrux + 1565, +}; + +static const struct itemplate * const itable_0FFE[] = { + instrux + 740, + instrux + 1566, +}; + +static const struct itemplate * const itable_0FFF[] = { + instrux + 1129, + instrux + 1130, + instrux + 1131, + instrux + 1132, +}; + +static const struct itemplate * const itable_10[] = { + instrux + 14, + instrux + 15, +}; + +static const struct itemplate * const itable_11[] = { + instrux + 16, + instrux + 17, + instrux + 18, + instrux + 19, + instrux + 20, + instrux + 21, +}; + +static const struct itemplate * const itable_12[] = { + instrux + 22, + instrux + 23, +}; + +static const struct itemplate * const itable_13[] = { + instrux + 24, + instrux + 25, + instrux + 26, + instrux + 27, + instrux + 28, + instrux + 29, +}; + +static const struct itemplate * const itable_14[] = { + instrux + 33, +}; + +static const struct itemplate * const itable_15[] = { + instrux + 34, + instrux + 35, + instrux + 36, +}; + +static const struct itemplate * const itable_16[] = { + instrux + 847, +}; + +static const struct itemplate * const itable_17[] = { + instrux + 795, +}; + +static const struct itemplate * const itable_18[] = { + instrux + 960, + instrux + 961, +}; + +static const struct itemplate * const itable_19[] = { + instrux + 962, + instrux + 963, + instrux + 964, + instrux + 965, + instrux + 966, + instrux + 967, +}; + +static const struct itemplate * const itable_1A[] = { + instrux + 968, + instrux + 969, +}; + +static const struct itemplate * const itable_1B[] = { + instrux + 970, + instrux + 971, + instrux + 972, + instrux + 973, + instrux + 974, + instrux + 975, +}; + +static const struct itemplate * const itable_1C[] = { + instrux + 979, +}; + +static const struct itemplate * const itable_1D[] = { + instrux + 980, + instrux + 981, + instrux + 982, +}; + +static const struct itemplate * const itable_1E[] = { + instrux + 848, +}; + +static const struct itemplate * const itable_1F[] = { + instrux + 796, +}; + +static const struct itemplate * const itable_20[] = { + instrux + 73, + instrux + 74, +}; + +static const struct itemplate * const itable_21[] = { + instrux + 75, + instrux + 76, + instrux + 77, + instrux + 78, + instrux + 79, + instrux + 80, +}; + +static const struct itemplate * const itable_22[] = { + instrux + 81, + instrux + 82, +}; + +static const struct itemplate * const itable_23[] = { + instrux + 83, + instrux + 84, + instrux + 85, + instrux + 86, + instrux + 87, + instrux + 88, +}; + +static const struct itemplate * const itable_24[] = { + instrux + 92, +}; + +static const struct itemplate * const itable_25[] = { + instrux + 93, + instrux + 94, + instrux + 95, +}; + +static const struct itemplate * const itable_27[] = { + instrux + 233, +}; + +static const struct itemplate * const itable_28[] = { + instrux + 1069, + instrux + 1070, +}; + +static const struct itemplate * const itable_29[] = { + instrux + 1071, + instrux + 1072, + instrux + 1073, + instrux + 1074, + instrux + 1075, + instrux + 1076, +}; + +static const struct itemplate * const itable_2A[] = { + instrux + 1077, + instrux + 1078, +}; + +static const struct itemplate * const itable_2B[] = { + instrux + 1079, + instrux + 1080, + instrux + 1081, + instrux + 1082, + instrux + 1083, + instrux + 1084, +}; + +static const struct itemplate * const itable_2C[] = { + instrux + 1088, +}; + +static const struct itemplate * const itable_2D[] = { + instrux + 1089, + instrux + 1090, + instrux + 1091, +}; + +static const struct itemplate * const itable_2F[] = { + instrux + 234, +}; + +static const struct itemplate * const itable_30[] = { + instrux + 1180, + instrux + 1181, +}; + +static const struct itemplate * const itable_31[] = { + instrux + 1182, + instrux + 1183, + instrux + 1184, + instrux + 1185, + instrux + 1186, + instrux + 1187, +}; + +static const struct itemplate * const itable_32[] = { + instrux + 1188, + instrux + 1189, +}; + +static const struct itemplate * const itable_33[] = { + instrux + 1190, + instrux + 1191, + instrux + 1192, + instrux + 1193, + instrux + 1194, + instrux + 1195, +}; + +static const struct itemplate * const itable_34[] = { + instrux + 1199, +}; + +static const struct itemplate * const itable_35[] = { + instrux + 1200, + instrux + 1201, + instrux + 1202, +}; + +static const struct itemplate * const itable_37[] = { + instrux + 8, +}; + +static const struct itemplate * const itable_38[] = { + instrux + 183, + instrux + 184, +}; + +static const struct itemplate * const itable_39[] = { + instrux + 185, + instrux + 186, + instrux + 187, + instrux + 188, + instrux + 189, + instrux + 190, +}; + +static const struct itemplate * const itable_3A[] = { + instrux + 191, + instrux + 192, +}; + +static const struct itemplate * const itable_3B[] = { + instrux + 193, + instrux + 194, + instrux + 195, + instrux + 196, + instrux + 197, + instrux + 198, +}; + +static const struct itemplate * const itable_3C[] = { + instrux + 202, +}; + +static const struct itemplate * const itable_3D[] = { + instrux + 203, + instrux + 204, + instrux + 205, +}; + +static const struct itemplate * const itable_3F[] = { + instrux + 13, +}; + +static const struct itemplate * const itable_40[] = { + instrux + 475, + instrux + 476, +}; + +static const struct itemplate * const itable_41[] = { + instrux + 475, + instrux + 476, +}; + +static const struct itemplate * const itable_42[] = { + instrux + 475, + instrux + 476, +}; + +static const struct itemplate * const itable_43[] = { + instrux + 475, + instrux + 476, +}; + +static const struct itemplate * const itable_44[] = { + instrux + 475, + instrux + 476, +}; + +static const struct itemplate * const itable_45[] = { + instrux + 475, + instrux + 476, +}; + +static const struct itemplate * const itable_46[] = { + instrux + 475, + instrux + 476, +}; + +static const struct itemplate * const itable_47[] = { + instrux + 475, + instrux + 476, +}; + +static const struct itemplate * const itable_48[] = { + instrux + 235, + instrux + 236, +}; + +static const struct itemplate * const itable_49[] = { + instrux + 235, + instrux + 236, +}; + +static const struct itemplate * const itable_4A[] = { + instrux + 235, + instrux + 236, +}; + +static const struct itemplate * const itable_4B[] = { + instrux + 235, + instrux + 236, +}; + +static const struct itemplate * const itable_4C[] = { + instrux + 235, + instrux + 236, +}; + +static const struct itemplate * const itable_4D[] = { + instrux + 235, + instrux + 236, +}; + +static const struct itemplate * const itable_4E[] = { + instrux + 235, + instrux + 236, +}; + +static const struct itemplate * const itable_4F[] = { + instrux + 235, + instrux + 236, +}; + +static const struct itemplate * const itable_50[] = { + instrux + 839, + instrux + 840, + instrux + 841, +}; + +static const struct itemplate * const itable_51[] = { + instrux + 839, + instrux + 840, + instrux + 841, +}; + +static const struct itemplate * const itable_52[] = { + instrux + 839, + instrux + 840, + instrux + 841, +}; + +static const struct itemplate * const itable_53[] = { + instrux + 839, + instrux + 840, + instrux + 841, +}; + +static const struct itemplate * const itable_54[] = { + instrux + 839, + instrux + 840, + instrux + 841, +}; + +static const struct itemplate * const itable_55[] = { + instrux + 839, + instrux + 840, + instrux + 841, +}; + +static const struct itemplate * const itable_56[] = { + instrux + 839, + instrux + 840, + instrux + 841, +}; + +static const struct itemplate * const itable_57[] = { + instrux + 839, + instrux + 840, + instrux + 841, +}; + +static const struct itemplate * const itable_58[] = { + instrux + 788, + instrux + 789, + instrux + 790, +}; + +static const struct itemplate * const itable_59[] = { + instrux + 788, + instrux + 789, + instrux + 790, +}; + +static const struct itemplate * const itable_5A[] = { + instrux + 788, + instrux + 789, + instrux + 790, +}; + +static const struct itemplate * const itable_5B[] = { + instrux + 788, + instrux + 789, + instrux + 790, +}; + +static const struct itemplate * const itable_5C[] = { + instrux + 788, + instrux + 789, + instrux + 790, +}; + +static const struct itemplate * const itable_5D[] = { + instrux + 788, + instrux + 789, + instrux + 790, +}; + +static const struct itemplate * const itable_5E[] = { + instrux + 788, + instrux + 789, + instrux + 790, +}; + +static const struct itemplate * const itable_5F[] = { + instrux + 788, + instrux + 789, + instrux + 790, +}; + +static const struct itemplate * const itable_60[] = { + instrux + 857, + instrux + 858, + instrux + 859, +}; + +static const struct itemplate * const itable_61[] = { + instrux + 799, + instrux + 800, + instrux + 801, +}; + +static const struct itemplate * const itable_62[] = { + instrux + 105, + instrux + 106, +}; + +static const struct itemplate * const itable_63[] = { + instrux + 103, + instrux + 104, + instrux + 672, +}; + +static const struct itemplate * const itable_68[] = { + instrux + 852, + instrux + 853, + instrux + 854, + instrux + 855, + instrux + 856, +}; + +static const struct itemplate * const itable_69[] = { + instrux + 452, + instrux + 454, + instrux + 456, + instrux + 458, + instrux + 460, + instrux + 462, + instrux + 464, + instrux + 466, + instrux + 468, +}; + +static const struct itemplate * const itable_6A[] = { + instrux + 851, +}; + +static const struct itemplate * const itable_6B[] = { + instrux + 451, + instrux + 453, + instrux + 455, + instrux + 457, + instrux + 459, + instrux + 461, + instrux + 463, + instrux + 465, + instrux + 467, +}; + +static const struct itemplate * const itable_6C[] = { + instrux + 481, +}; + +static const struct itemplate * const itable_6D[] = { + instrux + 482, + instrux + 483, +}; + +static const struct itemplate * const itable_6E[] = { + instrux + 733, +}; + +static const struct itemplate * const itable_6F[] = { + instrux + 734, + instrux + 735, +}; + +static const struct itemplate * const itable_70[] = { + instrux + 1381, +}; + +static const struct itemplate * const itable_71[] = { + instrux + 1378, +}; + +static const struct itemplate * const itable_72[] = { + instrux + 1371, +}; + +static const struct itemplate * const itable_73[] = { + instrux + 1375, +}; + +static const struct itemplate * const itable_74[] = { + instrux + 1385, +}; + +static const struct itemplate * const itable_75[] = { + instrux + 1380, +}; + +static const struct itemplate * const itable_76[] = { + instrux + 1374, +}; + +static const struct itemplate * const itable_77[] = { + instrux + 1370, +}; + +static const struct itemplate * const itable_78[] = { + instrux + 1384, +}; + +static const struct itemplate * const itable_79[] = { + instrux + 1379, +}; + +static const struct itemplate * const itable_7A[] = { + instrux + 1382, +}; + +static const struct itemplate * const itable_7B[] = { + instrux + 1383, +}; + +static const struct itemplate * const itable_7C[] = { + instrux + 1373, +}; + +static const struct itemplate * const itable_7D[] = { + instrux + 1377, +}; + +static const struct itemplate * const itable_7E[] = { + instrux + 1376, +}; + +static const struct itemplate * const itable_7F[] = { + instrux + 1372, +}; + +static const struct itemplate * const itable_80[] = { + instrux + 37, + instrux + 66, + instrux + 70, + instrux + 96, + instrux + 100, + instrux + 206, + instrux + 210, + instrux + 720, + instrux + 724, + instrux + 983, + instrux + 987, + instrux + 1092, + instrux + 1096, + instrux + 1203, + instrux + 1207, +}; + +static const struct itemplate * const itable_81[] = { + instrux + 38, + instrux + 39, + instrux + 40, + instrux + 41, + instrux + 42, + instrux + 67, + instrux + 68, + instrux + 69, + instrux + 71, + instrux + 72, + instrux + 97, + instrux + 98, + instrux + 99, + instrux + 101, + instrux + 102, + instrux + 207, + instrux + 208, + instrux + 209, + instrux + 211, + instrux + 212, + instrux + 721, + instrux + 722, + instrux + 723, + instrux + 725, + instrux + 726, + instrux + 984, + instrux + 985, + instrux + 986, + instrux + 988, + instrux + 989, + instrux + 1093, + instrux + 1094, + instrux + 1095, + instrux + 1097, + instrux + 1098, + instrux + 1204, + instrux + 1205, + instrux + 1206, + instrux + 1208, + instrux + 1209, +}; + +static const struct itemplate * const itable_83[] = { + instrux + 30, + instrux + 31, + instrux + 32, + instrux + 59, + instrux + 60, + instrux + 61, + instrux + 89, + instrux + 90, + instrux + 91, + instrux + 199, + instrux + 200, + instrux + 201, + instrux + 713, + instrux + 714, + instrux + 715, + instrux + 976, + instrux + 977, + instrux + 978, + instrux + 1085, + instrux + 1086, + instrux + 1087, + instrux + 1196, + instrux + 1197, + instrux + 1198, +}; + +static const struct itemplate * const itable_84[] = { + instrux + 1106, + instrux + 1107, + instrux + 1114, +}; + +static const struct itemplate * const itable_85[] = { + instrux + 1108, + instrux + 1109, + instrux + 1110, + instrux + 1111, + instrux + 1112, + instrux + 1113, + instrux + 1115, + instrux + 1116, + instrux + 1117, +}; + +static const struct itemplate * const itable_86[] = { + instrux + 1162, + instrux + 1163, + instrux + 1170, + instrux + 1171, +}; + +static const struct itemplate * const itable_87[] = { + instrux + 1164, + instrux + 1165, + instrux + 1166, + instrux + 1167, + instrux + 1168, + instrux + 1169, + instrux + 1172, + instrux + 1173, + instrux + 1174, + instrux + 1175, + instrux + 1176, + instrux + 1177, +}; + +static const struct itemplate * const itable_88[] = { + instrux + 628, + instrux + 629, +}; + +static const struct itemplate * const itable_89[] = { + instrux + 630, + instrux + 631, + instrux + 632, + instrux + 633, + instrux + 634, + instrux + 635, +}; + +static const struct itemplate * const itable_8A[] = { + instrux + 636, + instrux + 637, +}; + +static const struct itemplate * const itable_8B[] = { + instrux + 638, + instrux + 639, + instrux + 640, + instrux + 641, + instrux + 642, + instrux + 643, +}; + +static const struct itemplate * const itable_8C[] = { + instrux + 604, + instrux + 605, + instrux + 606, + instrux + 607, +}; + +static const struct itemplate * const itable_8D[] = { + instrux + 540, + instrux + 541, + instrux + 542, +}; + +static const struct itemplate * const itable_8E[] = { + instrux + 608, + instrux + 609, + instrux + 610, + instrux + 611, +}; + +static const struct itemplate * const itable_8F[] = { + instrux + 791, + instrux + 792, + instrux + 793, +}; + +static const struct itemplate * const itable_90[] = { + instrux + 689, + instrux + 749, + instrux + 1155, + instrux + 1156, + instrux + 1157, + instrux + 1158, + instrux + 1159, + instrux + 1160, + instrux + 1161, +}; + +static const struct itemplate * const itable_91[] = { + instrux + 1155, + instrux + 1156, + instrux + 1157, + instrux + 1158, + instrux + 1159, + instrux + 1160, +}; + +static const struct itemplate * const itable_92[] = { + instrux + 1155, + instrux + 1156, + instrux + 1157, + instrux + 1158, + instrux + 1159, + instrux + 1160, +}; + +static const struct itemplate * const itable_93[] = { + instrux + 1155, + instrux + 1156, + instrux + 1157, + instrux + 1158, + instrux + 1159, + instrux + 1160, +}; + +static const struct itemplate * const itable_94[] = { + instrux + 1155, + instrux + 1156, + instrux + 1157, + instrux + 1158, + instrux + 1159, + instrux + 1160, +}; + +static const struct itemplate * const itable_95[] = { + instrux + 1155, + instrux + 1156, + instrux + 1157, + instrux + 1158, + instrux + 1159, + instrux + 1160, +}; + +static const struct itemplate * const itable_96[] = { + instrux + 1155, + instrux + 1156, + instrux + 1157, + instrux + 1158, + instrux + 1159, + instrux + 1160, +}; + +static const struct itemplate * const itable_97[] = { + instrux + 1155, + instrux + 1156, + instrux + 1157, + instrux + 1158, + instrux + 1159, + instrux + 1160, +}; + +static const struct itemplate * const itable_98[] = { + instrux + 175, + instrux + 177, + instrux + 232, +}; + +static const struct itemplate * const itable_99[] = { + instrux + 176, + instrux + 230, + instrux + 231, +}; + +static const struct itemplate * const itable_9A[] = { + instrux + 161, + instrux + 162, + instrux + 163, + instrux + 164, + instrux + 165, +}; + +static const struct itemplate * const itable_9C[] = { + instrux + 860, + instrux + 861, + instrux + 862, + instrux + 863, +}; + +static const struct itemplate * const itable_9D[] = { + instrux + 802, + instrux + 803, + instrux + 804, + instrux + 805, +}; + +static const struct itemplate * const itable_9E[] = { + instrux + 946, +}; + +static const struct itemplate * const itable_9F[] = { + instrux + 527, +}; + +static const struct itemplate * const itable_A0[] = { + instrux + 612, +}; + +static const struct itemplate * const itable_A1[] = { + instrux + 613, + instrux + 614, + instrux + 615, +}; + +static const struct itemplate * const itable_A2[] = { + instrux + 616, +}; + +static const struct itemplate * const itable_A3[] = { + instrux + 617, + instrux + 618, + instrux + 619, +}; + +static const struct itemplate * const itable_A4[] = { + instrux + 662, +}; + +static const struct itemplate * const itable_A5[] = { + instrux + 663, + instrux + 664, + instrux + 665, +}; + +static const struct itemplate * const itable_A6[] = { + instrux + 213, +}; + +static const struct itemplate * const itable_A7[] = { + instrux + 214, + instrux + 215, + instrux + 216, +}; + +static const struct itemplate * const itable_A8[] = { + instrux + 1118, +}; + +static const struct itemplate * const itable_A9[] = { + instrux + 1119, + instrux + 1120, + instrux + 1121, +}; + +static const struct itemplate * const itable_AA[] = { + instrux + 1060, +}; + +static const struct itemplate * const itable_AB[] = { + instrux + 1061, + instrux + 1062, + instrux + 1063, +}; + +static const struct itemplate * const itable_AC[] = { + instrux + 561, +}; + +static const struct itemplate * const itable_AD[] = { + instrux + 562, + instrux + 563, + instrux + 564, +}; + +static const struct itemplate * const itable_AE[] = { + instrux + 990, +}; + +static const struct itemplate * const itable_AF[] = { + instrux + 991, + instrux + 992, + instrux + 993, +}; + +static const struct itemplate * const itable_B0[] = { + instrux + 644, +}; + +static const struct itemplate * const itable_B1[] = { + instrux + 644, +}; + +static const struct itemplate * const itable_B2[] = { + instrux + 644, +}; + +static const struct itemplate * const itable_B3[] = { + instrux + 644, +}; + +static const struct itemplate * const itable_B4[] = { + instrux + 644, +}; + +static const struct itemplate * const itable_B5[] = { + instrux + 644, +}; + +static const struct itemplate * const itable_B6[] = { + instrux + 644, +}; + +static const struct itemplate * const itable_B7[] = { + instrux + 644, +}; + +static const struct itemplate * const itable_B8[] = { + instrux + 645, + instrux + 646, + instrux + 647, +}; + +static const struct itemplate * const itable_B9[] = { + instrux + 645, + instrux + 646, + instrux + 647, +}; + +static const struct itemplate * const itable_BA[] = { + instrux + 645, + instrux + 646, + instrux + 647, +}; + +static const struct itemplate * const itable_BB[] = { + instrux + 645, + instrux + 646, + instrux + 647, +}; + +static const struct itemplate * const itable_BC[] = { + instrux + 645, + instrux + 646, + instrux + 647, +}; + +static const struct itemplate * const itable_BD[] = { + instrux + 645, + instrux + 646, + instrux + 647, +}; + +static const struct itemplate * const itable_BE[] = { + instrux + 645, + instrux + 646, + instrux + 647, +}; + +static const struct itemplate * const itable_BF[] = { + instrux + 645, + instrux + 646, + instrux + 647, +}; + +static const struct itemplate * const itable_C0[] = { + instrux + 867, + instrux + 879, + instrux + 920, + instrux + 932, + instrux + 950, + instrux + 998, + instrux + 1022, +}; + +static const struct itemplate * const itable_C1[] = { + instrux + 870, + instrux + 873, + instrux + 876, + instrux + 882, + instrux + 885, + instrux + 888, + instrux + 923, + instrux + 926, + instrux + 929, + instrux + 935, + instrux + 938, + instrux + 941, + instrux + 953, + instrux + 956, + instrux + 959, + instrux + 1001, + instrux + 1004, + instrux + 1007, + instrux + 1025, + instrux + 1028, + instrux + 1031, +}; + +static const struct itemplate * const itable_C2[] = { + instrux + 895, + instrux + 899, + instrux + 901, + instrux + 905, + instrux + 907, + instrux + 911, + instrux + 913, + instrux + 917, +}; + +static const struct itemplate * const itable_C3[] = { + instrux + 894, + instrux + 898, + instrux + 900, + instrux + 904, + instrux + 906, + instrux + 910, + instrux + 912, + instrux + 916, +}; + +static const struct itemplate * const itable_C4[] = { + instrux + 544, + instrux + 545, +}; + +static const struct itemplate * const itable_C5[] = { + instrux + 538, + instrux + 539, +}; + +static const struct itemplate * const itable_C6[] = { + instrux + 648, + instrux + 653, + instrux + 3983, + instrux + 3984, +}; + +static const struct itemplate * const itable_C7[] = { + instrux + 649, + instrux + 650, + instrux + 651, + instrux + 652, + instrux + 654, + instrux + 655, + instrux + 3985, + instrux + 3986, + instrux + 3987, + instrux + 3988, +}; + +static const struct itemplate * const itable_C8[] = { + instrux + 247, +}; + +static const struct itemplate * const itable_C9[] = { + instrux + 543, +}; + +static const struct itemplate * const itable_CA[] = { + instrux + 897, + instrux + 903, + instrux + 909, + instrux + 915, +}; + +static const struct itemplate * const itable_CB[] = { + instrux + 896, + instrux + 902, + instrux + 908, + instrux + 914, +}; + +static const struct itemplate * const itable_CC[] = { + instrux + 486, +}; + +static const struct itemplate * const itable_CD[] = { + instrux + 484, +}; + +static const struct itemplate * const itable_CE[] = { + instrux + 487, +}; + +static const struct itemplate * const itable_CF[] = { + instrux + 496, + instrux + 497, + instrux + 498, + instrux + 499, +}; + +static const struct itemplate * const itable_D0[] = { + instrux + 865, + instrux + 877, + instrux + 918, + instrux + 930, + instrux + 948, + instrux + 996, + instrux + 1020, +}; + +static const struct itemplate * const itable_D1[] = { + instrux + 868, + instrux + 871, + instrux + 874, + instrux + 880, + instrux + 883, + instrux + 886, + instrux + 921, + instrux + 924, + instrux + 927, + instrux + 933, + instrux + 936, + instrux + 939, + instrux + 951, + instrux + 954, + instrux + 957, + instrux + 999, + instrux + 1002, + instrux + 1005, + instrux + 1023, + instrux + 1026, + instrux + 1029, +}; + +static const struct itemplate * const itable_D2[] = { + instrux + 866, + instrux + 878, + instrux + 919, + instrux + 931, + instrux + 949, + instrux + 997, + instrux + 1021, +}; + +static const struct itemplate * const itable_D3[] = { + instrux + 869, + instrux + 872, + instrux + 875, + instrux + 881, + instrux + 884, + instrux + 887, + instrux + 922, + instrux + 925, + instrux + 928, + instrux + 934, + instrux + 937, + instrux + 940, + instrux + 952, + instrux + 955, + instrux + 958, + instrux + 1000, + instrux + 1003, + instrux + 1006, + instrux + 1024, + instrux + 1027, + instrux + 1030, +}; + +static const struct itemplate * const itable_D4[] = { + instrux + 11, + instrux + 12, +}; + +static const struct itemplate * const itable_D5[] = { + instrux + 9, + instrux + 10, +}; + +static const struct itemplate * const itable_D6[] = { + instrux + 947, +}; + +static const struct itemplate * const itable_D7[] = { + instrux + 1178, + instrux + 1179, +}; + +static const struct itemplate * const itable_D8[] = { + instrux + 252, + instrux + 255, + instrux + 257, + instrux + 282, + instrux + 284, + instrux + 285, + instrux + 290, + instrux + 292, + instrux + 293, + instrux + 298, + instrux + 301, + instrux + 303, + instrux + 306, + instrux + 310, + instrux + 311, + instrux + 362, + instrux + 366, + instrux + 367, + instrux + 403, + instrux + 407, + instrux + 408, + instrux + 411, + instrux + 415, + instrux + 416, +}; + +static const struct itemplate * const itable_D9[] = { + instrux + 250, + instrux + 251, + instrux + 264, + instrux + 295, + instrux + 296, + instrux + 335, + instrux + 349, + instrux + 352, + instrux + 353, + instrux + 354, + instrux + 355, + instrux + 356, + instrux + 357, + instrux + 358, + instrux + 359, + instrux + 360, + instrux + 361, + instrux + 374, + instrux + 376, + instrux + 377, + instrux + 380, + instrux + 381, + instrux + 382, + instrux + 383, + instrux + 384, + instrux + 387, + instrux + 389, + instrux + 390, + instrux + 391, + instrux + 392, + instrux + 395, + instrux + 396, + instrux + 397, + instrux + 419, + instrux + 429, + instrux + 430, + instrux + 431, + instrux + 432, + instrux + 433, + instrux + 434, + instrux + 435, +}; + +static const struct itemplate * const itable_DA[] = { + instrux + 266, + instrux + 267, + instrux + 268, + instrux + 269, + instrux + 270, + instrux + 271, + instrux + 280, + instrux + 281, + instrux + 320, + instrux + 322, + instrux + 324, + instrux + 326, + instrux + 328, + instrux + 333, + instrux + 345, + instrux + 347, + instrux + 428, +}; + +static const struct itemplate * const itable_DB[] = { + instrux + 265, + instrux + 272, + instrux + 273, + instrux + 274, + instrux + 275, + instrux + 276, + instrux + 277, + instrux + 278, + instrux + 279, + instrux + 286, + instrux + 287, + instrux + 297, + instrux + 315, + instrux + 330, + instrux + 336, + instrux + 337, + instrux + 339, + instrux + 343, + instrux + 351, + instrux + 370, + instrux + 371, + instrux + 372, + instrux + 373, + instrux + 388, + instrux + 399, + instrux + 422, + instrux + 423, +}; + +static const struct itemplate * const itable_DC[] = { + instrux + 253, + instrux + 254, + instrux + 256, + instrux + 283, + instrux + 291, + instrux + 299, + instrux + 300, + instrux + 302, + instrux + 307, + instrux + 308, + instrux + 309, + instrux + 363, + instrux + 364, + instrux + 365, + instrux + 404, + instrux + 405, + instrux + 406, + instrux + 412, + instrux + 413, + instrux + 414, +}; + +static const struct itemplate * const itable_DD[] = { + instrux + 316, + instrux + 317, + instrux + 344, + instrux + 350, + instrux + 375, + instrux + 378, + instrux + 385, + instrux + 386, + instrux + 393, + instrux + 394, + instrux + 398, + instrux + 400, + instrux + 401, + instrux + 420, + instrux + 421, + instrux + 426, + instrux + 427, +}; + +static const struct itemplate * const itable_DE[] = { + instrux + 258, + instrux + 259, + instrux + 294, + instrux + 304, + instrux + 305, + instrux + 312, + instrux + 313, + instrux + 321, + instrux + 323, + instrux + 325, + instrux + 327, + instrux + 329, + instrux + 334, + instrux + 346, + instrux + 348, + instrux + 368, + instrux + 369, + instrux + 409, + instrux + 410, + instrux + 417, + instrux + 418, +}; + +static const struct itemplate * const itable_DF[] = { + instrux + 260, + instrux + 261, + instrux + 262, + instrux + 263, + instrux + 288, + instrux + 289, + instrux + 318, + instrux + 319, + instrux + 331, + instrux + 332, + instrux + 338, + instrux + 340, + instrux + 341, + instrux + 342, + instrux + 379, + instrux + 402, + instrux + 424, + instrux + 425, +}; + +static const struct itemplate * const itable_E0[] = { + instrux + 573, + instrux + 574, + instrux + 575, + instrux + 576, + instrux + 577, + instrux + 578, + instrux + 579, + instrux + 580, +}; + +static const struct itemplate * const itable_E1[] = { + instrux + 569, + instrux + 570, + instrux + 571, + instrux + 572, + instrux + 581, + instrux + 582, + instrux + 583, + instrux + 584, +}; + +static const struct itemplate * const itable_E2[] = { + instrux + 565, + instrux + 566, + instrux + 567, + instrux + 568, +}; + +static const struct itemplate * const itable_E3[] = { + instrux + 500, + instrux + 501, + instrux + 502, +}; + +static const struct itemplate * const itable_E4[] = { + instrux + 469, +}; + +static const struct itemplate * const itable_E5[] = { + instrux + 470, + instrux + 471, +}; + +static const struct itemplate * const itable_E6[] = { + instrux + 727, +}; + +static const struct itemplate * const itable_E7[] = { + instrux + 728, + instrux + 729, +}; + +static const struct itemplate * const itable_E8[] = { + instrux + 157, + instrux + 158, + instrux + 159, + instrux + 160, +}; + +static const struct itemplate * const itable_E9[] = { + instrux + 504, + instrux + 505, + instrux + 506, + instrux + 507, +}; + +static const struct itemplate * const itable_EA[] = { + instrux + 508, + instrux + 509, + instrux + 510, + instrux + 511, + instrux + 512, +}; + +static const struct itemplate * const itable_EB[] = { + instrux + 503, +}; + +static const struct itemplate * const itable_EC[] = { + instrux + 472, +}; + +static const struct itemplate * const itable_ED[] = { + instrux + 473, + instrux + 474, +}; + +static const struct itemplate * const itable_EE[] = { + instrux + 730, +}; + +static const struct itemplate * const itable_EF[] = { + instrux + 731, + instrux + 732, +}; + +static const struct itemplate * const itable_F1[] = { + instrux + 485, + instrux + 1051, +}; + +static const struct itemplate * const itable_F4[] = { + instrux + 436, +}; + +static const struct itemplate * const itable_F5[] = { + instrux + 182, +}; + +static const struct itemplate * const itable_F6[] = { + instrux + 241, + instrux + 437, + instrux + 441, + instrux + 679, + instrux + 685, + instrux + 693, + instrux + 1122, + instrux + 1126, +}; + +static const struct itemplate * const itable_F7[] = { + instrux + 242, + instrux + 243, + instrux + 244, + instrux + 438, + instrux + 439, + instrux + 440, + instrux + 442, + instrux + 443, + instrux + 444, + instrux + 680, + instrux + 681, + instrux + 682, + instrux + 686, + instrux + 687, + instrux + 688, + instrux + 694, + instrux + 695, + instrux + 696, + instrux + 1123, + instrux + 1124, + instrux + 1125, + instrux + 1127, + instrux + 1128, +}; + +static const struct itemplate * const itable_F8[] = { + instrux + 178, +}; + +static const struct itemplate * const itable_F9[] = { + instrux + 1057, +}; + +static const struct itemplate * const itable_FA[] = { + instrux + 180, +}; + +static const struct itemplate * const itable_FB[] = { + instrux + 1059, +}; + +static const struct itemplate * const itable_FC[] = { + instrux + 179, +}; + +static const struct itemplate * const itable_FD[] = { + instrux + 1058, +}; + +static const struct itemplate * const itable_FE[] = { + instrux + 237, + instrux + 477, +}; + +static const struct itemplate * const itable_FF[] = { + instrux + 166, + instrux + 167, + instrux + 168, + instrux + 169, + instrux + 170, + instrux + 171, + instrux + 172, + instrux + 173, + instrux + 174, + instrux + 238, + instrux + 239, + instrux + 240, + instrux + 478, + instrux + 479, + instrux + 480, + instrux + 513, + instrux + 514, + instrux + 515, + instrux + 516, + instrux + 517, + instrux + 518, + instrux + 519, + instrux + 520, + instrux + 521, + instrux + 842, + instrux + 843, + instrux + 844, +}; + +static const struct itemplate * const itable_evex01010[] = { + instrux + 5183, + instrux + 5184, + instrux + 5185, +}; + +static const struct itemplate * const itable_evex01011[] = { + instrux + 5186, + instrux + 5187, + instrux + 5188, + instrux + 5189, + instrux + 5190, + instrux + 5191, +}; + +static const struct itemplate * const itable_evex01012[] = { + instrux + 5124, + instrux + 5125, + instrux + 5137, + instrux + 5138, +}; + +static const struct itemplate * const itable_evex01013[] = { + instrux + 5139, +}; + +static const struct itemplate * const itable_evex01014[] = { + instrux + 6752, + instrux + 6753, + instrux + 6754, + instrux + 6755, + instrux + 6756, + instrux + 6757, +}; + +static const struct itemplate * const itable_evex01015[] = { + instrux + 6740, + instrux + 6741, + instrux + 6742, + instrux + 6743, + instrux + 6744, + instrux + 6745, +}; + +static const struct itemplate * const itable_evex01016[] = { + instrux + 5129, + instrux + 5130, + instrux + 5132, + instrux + 5133, +}; + +static const struct itemplate * const itable_evex01017[] = { + instrux + 5131, +}; + +static const struct itemplate * const itable_evex01028[] = { + instrux + 5074, + instrux + 5075, + instrux + 5076, +}; + +static const struct itemplate * const itable_evex01029[] = { + instrux + 5077, + instrux + 5078, + instrux + 5079, + instrux + 5080, + instrux + 5081, + instrux + 5082, +}; + +static const struct itemplate * const itable_evex0102B[] = { + instrux + 5149, + instrux + 5150, + instrux + 5151, +}; + +static const struct itemplate * const itable_evex0102E[] = { + instrux + 6733, +}; + +static const struct itemplate * const itable_evex0102F[] = { + instrux + 4626, +}; + +static const struct itemplate * const itable_evex01051[] = { + instrux + 6709, + instrux + 6710, + instrux + 6711, +}; + +static const struct itemplate * const itable_evex01054[] = { + instrux + 4210, + instrux + 4211, + instrux + 4212, + instrux + 4213, + instrux + 4214, + instrux + 4215, +}; + +static const struct itemplate * const itable_evex01055[] = { + instrux + 4198, + instrux + 4199, + instrux + 4200, + instrux + 4201, + instrux + 4202, + instrux + 4203, +}; + +static const struct itemplate * const itable_evex01056[] = { + instrux + 5214, + instrux + 5215, + instrux + 5216, + instrux + 5217, + instrux + 5218, + instrux + 5219, +}; + +static const struct itemplate * const itable_evex01057[] = { + instrux + 6764, + instrux + 6765, + instrux + 6766, + instrux + 6767, + instrux + 6768, + instrux + 6769, +}; + +static const struct itemplate * const itable_evex01058[] = { + instrux + 4170, + instrux + 4171, + instrux + 4172, + instrux + 4173, + instrux + 4174, + instrux + 4175, +}; + +static const struct itemplate * const itable_evex01059[] = { + instrux + 5198, + instrux + 5199, + instrux + 5200, + instrux + 5201, + instrux + 5202, + instrux + 5203, +}; + +static const struct itemplate * const itable_evex0105A[] = { + instrux + 4666, + instrux + 4667, + instrux + 4668, +}; + +static const struct itemplate * const itable_evex0105B[] = { + instrux + 4642, + instrux + 4643, + instrux + 4644, + instrux + 4687, + instrux + 4688, + instrux + 4689, +}; + +static const struct itemplate * const itable_evex0105C[] = { + instrux + 6722, + instrux + 6723, + instrux + 6724, + instrux + 6725, + instrux + 6726, + instrux + 6727, +}; + +static const struct itemplate * const itable_evex0105D[] = { + instrux + 5055, + instrux + 5056, + instrux + 5057, + instrux + 5058, + instrux + 5059, + instrux + 5060, +}; + +static const struct itemplate * const itable_evex0105E[] = { + instrux + 4764, + instrux + 4765, + instrux + 4766, + instrux + 4767, + instrux + 4768, + instrux + 4769, +}; + +static const struct itemplate * const itable_evex0105F[] = { + instrux + 5039, + instrux + 5040, + instrux + 5041, + instrux + 5042, + instrux + 5043, + instrux + 5044, +}; + +static const struct itemplate * const itable_evex01078[] = { + instrux + 4710, + instrux + 4711, + instrux + 4712, + instrux + 4722, + instrux + 4723, + instrux + 4724, +}; + +static const struct itemplate * const itable_evex01079[] = { + instrux + 4654, + instrux + 4655, + instrux + 4656, + instrux + 4678, + instrux + 4679, + instrux + 4680, +}; + +static const struct itemplate * const itable_evex010C2[] = { + instrux + 4252, + instrux + 4253, + instrux + 4254, + instrux + 4260, + instrux + 4261, + instrux + 4262, + instrux + 4268, + instrux + 4269, + instrux + 4270, + instrux + 4276, + instrux + 4277, + instrux + 4278, + instrux + 4284, + instrux + 4285, + instrux + 4286, + instrux + 4292, + instrux + 4293, + instrux + 4294, + instrux + 4300, + instrux + 4301, + instrux + 4302, + instrux + 4308, + instrux + 4309, + instrux + 4310, + instrux + 4316, + instrux + 4317, + instrux + 4318, + instrux + 4324, + instrux + 4325, + instrux + 4326, + instrux + 4332, + instrux + 4333, + instrux + 4334, + instrux + 4340, + instrux + 4341, + instrux + 4342, + instrux + 4348, + instrux + 4349, + instrux + 4350, + instrux + 4356, + instrux + 4357, + instrux + 4358, + instrux + 4364, + instrux + 4365, + instrux + 4366, + instrux + 4372, + instrux + 4373, + instrux + 4374, + instrux + 4380, + instrux + 4381, + instrux + 4382, + instrux + 4388, + instrux + 4389, + instrux + 4390, + instrux + 4396, + instrux + 4397, + instrux + 4398, + instrux + 4404, + instrux + 4405, + instrux + 4406, + instrux + 4412, + instrux + 4413, + instrux + 4414, + instrux + 4420, + instrux + 4421, + instrux + 4422, + instrux + 4428, + instrux + 4429, + instrux + 4430, + instrux + 4436, + instrux + 4437, + instrux + 4438, + instrux + 4444, + instrux + 4445, + instrux + 4446, + instrux + 4452, + instrux + 4453, + instrux + 4454, + instrux + 4460, + instrux + 4461, + instrux + 4462, + instrux + 4468, + instrux + 4469, + instrux + 4470, + instrux + 4476, + instrux + 4477, + instrux + 4478, + instrux + 4484, + instrux + 4485, + instrux + 4486, + instrux + 4492, + instrux + 4493, + instrux + 4494, + instrux + 4500, + instrux + 4501, + instrux + 4502, + instrux + 4508, + instrux + 4509, + instrux + 4510, + instrux + 4516, + instrux + 4517, + instrux + 4518, + instrux + 4524, + instrux + 4525, + instrux + 4526, + instrux + 4532, + instrux + 4533, + instrux + 4534, + instrux + 4540, + instrux + 4541, + instrux + 4542, + instrux + 4548, + instrux + 4549, + instrux + 4550, + instrux + 4556, + instrux + 4557, + instrux + 4558, + instrux + 4564, + instrux + 4565, + instrux + 4566, + instrux + 4572, + instrux + 4573, + instrux + 4574, + instrux + 4580, + instrux + 4581, + instrux + 4582, + instrux + 4588, + instrux + 4589, + instrux + 4590, + instrux + 4596, + instrux + 4597, + instrux + 4598, + instrux + 4604, + instrux + 4605, + instrux + 4606, + instrux + 4612, + instrux + 4613, + instrux + 4614, + instrux + 4620, + instrux + 4621, + instrux + 4622, +}; + +static const struct itemplate * const itable_evex010C6[] = { + instrux + 6700, + instrux + 6701, + instrux + 6702, + instrux + 6703, + instrux + 6704, + instrux + 6705, +}; + +static const struct itemplate * const itable_evex01110[] = { + instrux + 5174, + instrux + 5175, + instrux + 5176, +}; + +static const struct itemplate * const itable_evex01111[] = { + instrux + 5177, + instrux + 5178, + instrux + 5179, + instrux + 5180, + instrux + 5181, + instrux + 5182, +}; + +static const struct itemplate * const itable_evex01112[] = { + instrux + 5134, + instrux + 5135, +}; + +static const struct itemplate * const itable_evex01113[] = { + instrux + 5136, +}; + +static const struct itemplate * const itable_evex01114[] = { + instrux + 6746, + instrux + 6747, + instrux + 6748, + instrux + 6749, + instrux + 6750, + instrux + 6751, +}; + +static const struct itemplate * const itable_evex01115[] = { + instrux + 6734, + instrux + 6735, + instrux + 6736, + instrux + 6737, + instrux + 6738, + instrux + 6739, +}; + +static const struct itemplate * const itable_evex01116[] = { + instrux + 5126, + instrux + 5127, +}; + +static const struct itemplate * const itable_evex01117[] = { + instrux + 5128, +}; + +static const struct itemplate * const itable_evex01128[] = { + instrux + 5065, + instrux + 5066, + instrux + 5067, +}; + +static const struct itemplate * const itable_evex01129[] = { + instrux + 5068, + instrux + 5069, + instrux + 5070, + instrux + 5071, + instrux + 5072, + instrux + 5073, +}; + +static const struct itemplate * const itable_evex0112B[] = { + instrux + 5146, + instrux + 5147, + instrux + 5148, +}; + +static const struct itemplate * const itable_evex0112E[] = { + instrux + 6732, +}; + +static const struct itemplate * const itable_evex0112F[] = { + instrux + 4625, +}; + +static const struct itemplate * const itable_evex01151[] = { + instrux + 6706, + instrux + 6707, + instrux + 6708, +}; + +static const struct itemplate * const itable_evex01154[] = { + instrux + 4204, + instrux + 4205, + instrux + 4206, + instrux + 4207, + instrux + 4208, + instrux + 4209, +}; + +static const struct itemplate * const itable_evex01155[] = { + instrux + 4192, + instrux + 4193, + instrux + 4194, + instrux + 4195, + instrux + 4196, + instrux + 4197, +}; + +static const struct itemplate * const itable_evex01156[] = { + instrux + 5208, + instrux + 5209, + instrux + 5210, + instrux + 5211, + instrux + 5212, + instrux + 5213, +}; + +static const struct itemplate * const itable_evex01157[] = { + instrux + 6758, + instrux + 6759, + instrux + 6760, + instrux + 6761, + instrux + 6762, + instrux + 6763, +}; + +static const struct itemplate * const itable_evex01158[] = { + instrux + 4164, + instrux + 4165, + instrux + 4166, + instrux + 4167, + instrux + 4168, + instrux + 4169, +}; + +static const struct itemplate * const itable_evex01159[] = { + instrux + 5192, + instrux + 5193, + instrux + 5194, + instrux + 5195, + instrux + 5196, + instrux + 5197, +}; + +static const struct itemplate * const itable_evex0115A[] = { + instrux + 4648, + instrux + 4649, + instrux + 4650, +}; + +static const struct itemplate * const itable_evex0115B[] = { + instrux + 4663, + instrux + 4664, + instrux + 4665, +}; + +static const struct itemplate * const itable_evex0115C[] = { + instrux + 6716, + instrux + 6717, + instrux + 6718, + instrux + 6719, + instrux + 6720, + instrux + 6721, +}; + +static const struct itemplate * const itable_evex0115D[] = { + instrux + 5049, + instrux + 5050, + instrux + 5051, + instrux + 5052, + instrux + 5053, + instrux + 5054, +}; + +static const struct itemplate * const itable_evex0115E[] = { + instrux + 4758, + instrux + 4759, + instrux + 4760, + instrux + 4761, + instrux + 4762, + instrux + 4763, +}; + +static const struct itemplate * const itable_evex0115F[] = { + instrux + 5033, + instrux + 5034, + instrux + 5035, + instrux + 5036, + instrux + 5037, + instrux + 5038, +}; + +static const struct itemplate * const itable_evex01160[] = { + instrux + 6538, + instrux + 6539, + instrux + 6540, + instrux + 6541, + instrux + 6542, + instrux + 6543, +}; + +static const struct itemplate * const itable_evex01161[] = { + instrux + 6556, + instrux + 6557, + instrux + 6558, + instrux + 6559, + instrux + 6560, + instrux + 6561, +}; + +static const struct itemplate * const itable_evex01162[] = { + instrux + 6544, + instrux + 6545, + instrux + 6546, + instrux + 6547, + instrux + 6548, + instrux + 6549, +}; + +static const struct itemplate * const itable_evex01163[] = { + instrux + 5238, + instrux + 5239, + instrux + 5240, + instrux + 5241, + instrux + 5242, + instrux + 5243, +}; + +static const struct itemplate * const itable_evex01164[] = { + instrux + 5421, + instrux + 5422, + instrux + 5423, +}; + +static const struct itemplate * const itable_evex01165[] = { + instrux + 5430, + instrux + 5431, + instrux + 5432, +}; + +static const struct itemplate * const itable_evex01166[] = { + instrux + 5424, + instrux + 5425, + instrux + 5426, +}; + +static const struct itemplate * const itable_evex01167[] = { + instrux + 5250, + instrux + 5251, + instrux + 5252, + instrux + 5253, + instrux + 5254, + instrux + 5255, +}; + +static const struct itemplate * const itable_evex01168[] = { + instrux + 6514, + instrux + 6515, + instrux + 6516, + instrux + 6517, + instrux + 6518, + instrux + 6519, +}; + +static const struct itemplate * const itable_evex01169[] = { + instrux + 6532, + instrux + 6533, + instrux + 6534, + instrux + 6535, + instrux + 6536, + instrux + 6537, +}; + +static const struct itemplate * const itable_evex0116A[] = { + instrux + 6520, + instrux + 6521, + instrux + 6522, + instrux + 6523, + instrux + 6524, + instrux + 6525, +}; + +static const struct itemplate * const itable_evex0116B[] = { + instrux + 5232, + instrux + 5233, + instrux + 5234, + instrux + 5235, + instrux + 5236, + instrux + 5237, +}; + +static const struct itemplate * const itable_evex0116C[] = { + instrux + 6550, + instrux + 6551, + instrux + 6552, + instrux + 6553, + instrux + 6554, + instrux + 6555, +}; + +static const struct itemplate * const itable_evex0116D[] = { + instrux + 6526, + instrux + 6527, + instrux + 6528, + instrux + 6529, + instrux + 6530, + instrux + 6531, +}; + +static const struct itemplate * const itable_evex0116E[] = { + instrux + 5083, + instrux + 5152, +}; + +static const struct itemplate * const itable_evex0116F[] = { + instrux + 5088, + instrux + 5089, + instrux + 5090, + instrux + 5094, + instrux + 5095, + instrux + 5096, +}; + +static const struct itemplate * const itable_evex01170[] = { + instrux + 6253, + instrux + 6254, + instrux + 6255, +}; + +static const struct itemplate * const itable_evex01171[] = { + instrux + 6316, + instrux + 6317, + instrux + 6318, + instrux + 6319, + instrux + 6320, + instrux + 6321, + instrux + 6370, + instrux + 6371, + instrux + 6372, + instrux + 6373, + instrux + 6374, + instrux + 6375, + instrux + 6430, + instrux + 6431, + instrux + 6432, + instrux + 6433, + instrux + 6434, + instrux + 6435, +}; + +static const struct itemplate * const itable_evex01172[] = { + instrux + 6181, + instrux + 6182, + instrux + 6183, + instrux + 6184, + instrux + 6185, + instrux + 6186, + instrux + 6187, + instrux + 6188, + instrux + 6189, + instrux + 6190, + instrux + 6191, + instrux + 6192, + instrux + 6205, + instrux + 6206, + instrux + 6207, + instrux + 6208, + instrux + 6209, + instrux + 6210, + instrux + 6211, + instrux + 6212, + instrux + 6213, + instrux + 6214, + instrux + 6215, + instrux + 6216, + instrux + 6268, + instrux + 6269, + instrux + 6270, + instrux + 6271, + instrux + 6272, + instrux + 6273, + instrux + 6328, + instrux + 6329, + instrux + 6330, + instrux + 6331, + instrux + 6332, + instrux + 6333, + instrux + 6340, + instrux + 6341, + instrux + 6342, + instrux + 6343, + instrux + 6344, + instrux + 6345, + instrux + 6382, + instrux + 6383, + instrux + 6384, + instrux + 6385, + instrux + 6386, + instrux + 6387, +}; + +static const struct itemplate * const itable_evex01173[] = { + instrux + 6274, + instrux + 6275, + instrux + 6276, + instrux + 6277, + instrux + 6278, + instrux + 6279, + instrux + 6286, + instrux + 6287, + instrux + 6288, + instrux + 6289, + instrux + 6290, + instrux + 6291, + instrux + 6388, + instrux + 6389, + instrux + 6390, + instrux + 6391, + instrux + 6392, + instrux + 6393, + instrux + 6400, + instrux + 6401, + instrux + 6402, + instrux + 6403, + instrux + 6404, + instrux + 6405, +}; + +static const struct itemplate * const itable_evex01174[] = { + instrux + 5409, + instrux + 5410, + instrux + 5411, +}; + +static const struct itemplate * const itable_evex01175[] = { + instrux + 5418, + instrux + 5419, + instrux + 5420, +}; + +static const struct itemplate * const itable_evex01176[] = { + instrux + 5412, + instrux + 5413, + instrux + 5414, +}; + +static const struct itemplate * const itable_evex01178[] = { + instrux + 4713, + instrux + 4714, + instrux + 4715, + instrux + 4725, + instrux + 4726, + instrux + 4727, +}; + +static const struct itemplate * const itable_evex01179[] = { + instrux + 4657, + instrux + 4658, + instrux + 4659, + instrux + 4681, + instrux + 4682, + instrux + 4683, +}; + +static const struct itemplate * const itable_evex0117A[] = { + instrux + 4707, + instrux + 4708, + instrux + 4709, + instrux + 4719, + instrux + 4720, + instrux + 4721, +}; + +static const struct itemplate * const itable_evex0117B[] = { + instrux + 4651, + instrux + 4652, + instrux + 4653, + instrux + 4675, + instrux + 4676, + instrux + 4677, +}; + +static const struct itemplate * const itable_evex0117E[] = { + instrux + 5084, + instrux + 5153, +}; + +static const struct itemplate * const itable_evex0117F[] = { + instrux + 5091, + instrux + 5092, + instrux + 5093, + instrux + 5097, + instrux + 5098, + instrux + 5099, +}; + +static const struct itemplate * const itable_evex011C2[] = { + instrux + 4249, + instrux + 4250, + instrux + 4251, + instrux + 4257, + instrux + 4258, + instrux + 4259, + instrux + 4265, + instrux + 4266, + instrux + 4267, + instrux + 4273, + instrux + 4274, + instrux + 4275, + instrux + 4281, + instrux + 4282, + instrux + 4283, + instrux + 4289, + instrux + 4290, + instrux + 4291, + instrux + 4297, + instrux + 4298, + instrux + 4299, + instrux + 4305, + instrux + 4306, + instrux + 4307, + instrux + 4313, + instrux + 4314, + instrux + 4315, + instrux + 4321, + instrux + 4322, + instrux + 4323, + instrux + 4329, + instrux + 4330, + instrux + 4331, + instrux + 4337, + instrux + 4338, + instrux + 4339, + instrux + 4345, + instrux + 4346, + instrux + 4347, + instrux + 4353, + instrux + 4354, + instrux + 4355, + instrux + 4361, + instrux + 4362, + instrux + 4363, + instrux + 4369, + instrux + 4370, + instrux + 4371, + instrux + 4377, + instrux + 4378, + instrux + 4379, + instrux + 4385, + instrux + 4386, + instrux + 4387, + instrux + 4393, + instrux + 4394, + instrux + 4395, + instrux + 4401, + instrux + 4402, + instrux + 4403, + instrux + 4409, + instrux + 4410, + instrux + 4411, + instrux + 4417, + instrux + 4418, + instrux + 4419, + instrux + 4425, + instrux + 4426, + instrux + 4427, + instrux + 4433, + instrux + 4434, + instrux + 4435, + instrux + 4441, + instrux + 4442, + instrux + 4443, + instrux + 4449, + instrux + 4450, + instrux + 4451, + instrux + 4457, + instrux + 4458, + instrux + 4459, + instrux + 4465, + instrux + 4466, + instrux + 4467, + instrux + 4473, + instrux + 4474, + instrux + 4475, + instrux + 4481, + instrux + 4482, + instrux + 4483, + instrux + 4489, + instrux + 4490, + instrux + 4491, + instrux + 4497, + instrux + 4498, + instrux + 4499, + instrux + 4505, + instrux + 4506, + instrux + 4507, + instrux + 4513, + instrux + 4514, + instrux + 4515, + instrux + 4521, + instrux + 4522, + instrux + 4523, + instrux + 4529, + instrux + 4530, + instrux + 4531, + instrux + 4537, + instrux + 4538, + instrux + 4539, + instrux + 4545, + instrux + 4546, + instrux + 4547, + instrux + 4553, + instrux + 4554, + instrux + 4555, + instrux + 4561, + instrux + 4562, + instrux + 4563, + instrux + 4569, + instrux + 4570, + instrux + 4571, + instrux + 4577, + instrux + 4578, + instrux + 4579, + instrux + 4585, + instrux + 4586, + instrux + 4587, + instrux + 4593, + instrux + 4594, + instrux + 4595, + instrux + 4601, + instrux + 4602, + instrux + 4603, + instrux + 4609, + instrux + 4610, + instrux + 4611, + instrux + 4617, + instrux + 4618, + instrux + 4619, +}; + +static const struct itemplate * const itable_evex011C4[] = { + instrux + 5823, + instrux + 5824, + instrux + 5825, + instrux + 5826, +}; + +static const struct itemplate * const itable_evex011C5[] = { + instrux + 5800, + instrux + 5801, + instrux + 5802, +}; + +static const struct itemplate * const itable_evex011C6[] = { + instrux + 6694, + instrux + 6695, + instrux + 6696, + instrux + 6697, + instrux + 6698, + instrux + 6699, +}; + +static const struct itemplate * const itable_evex011D1[] = { + instrux + 6424, + instrux + 6425, + instrux + 6426, + instrux + 6427, + instrux + 6428, + instrux + 6429, +}; + +static const struct itemplate * const itable_evex011D2[] = { + instrux + 6376, + instrux + 6377, + instrux + 6378, + instrux + 6379, + instrux + 6380, + instrux + 6381, +}; + +static const struct itemplate * const itable_evex011D3[] = { + instrux + 6394, + instrux + 6395, + instrux + 6396, + instrux + 6397, + instrux + 6398, + instrux + 6399, +}; + +static const struct itemplate * const itable_evex011D4[] = { + instrux + 5268, + instrux + 5269, + instrux + 5270, + instrux + 5271, + instrux + 5272, + instrux + 5273, +}; + +static const struct itemplate * const itable_evex011D5[] = { + instrux + 6151, + instrux + 6152, + instrux + 6153, + instrux + 6154, + instrux + 6155, + instrux + 6156, +}; + +static const struct itemplate * const itable_evex011D6[] = { + instrux + 5155, +}; + +static const struct itemplate * const itable_evex011D8[] = { + instrux + 6466, + instrux + 6467, + instrux + 6468, + instrux + 6469, + instrux + 6470, + instrux + 6471, +}; + +static const struct itemplate * const itable_evex011D9[] = { + instrux + 6472, + instrux + 6473, + instrux + 6474, + instrux + 6475, + instrux + 6476, + instrux + 6477, +}; + +static const struct itemplate * const itable_evex011DA[] = { + instrux + 5923, + instrux + 5924, + instrux + 5925, + instrux + 5926, + instrux + 5927, + instrux + 5928, +}; + +static const struct itemplate * const itable_evex011DB[] = { + instrux + 5310, + instrux + 5311, + instrux + 5312, + instrux + 5313, + instrux + 5314, + instrux + 5315, + instrux + 5328, + instrux + 5329, + instrux + 5330, + instrux + 5331, + instrux + 5332, + instrux + 5333, +}; + +static const struct itemplate * const itable_evex011DC[] = { + instrux + 5286, + instrux + 5287, + instrux + 5288, + instrux + 5289, + instrux + 5290, + instrux + 5291, +}; + +static const struct itemplate * const itable_evex011DD[] = { + instrux + 5292, + instrux + 5293, + instrux + 5294, + instrux + 5295, + instrux + 5296, + instrux + 5297, +}; + +static const struct itemplate * const itable_evex011DE[] = { + instrux + 5875, + instrux + 5876, + instrux + 5877, + instrux + 5878, + instrux + 5879, + instrux + 5880, +}; + +static const struct itemplate * const itable_evex011DF[] = { + instrux + 5316, + instrux + 5317, + instrux + 5318, + instrux + 5319, + instrux + 5320, + instrux + 5321, + instrux + 5322, + instrux + 5323, + instrux + 5324, + instrux + 5325, + instrux + 5326, + instrux + 5327, +}; + +static const struct itemplate * const itable_evex011E0[] = { + instrux + 5334, + instrux + 5335, + instrux + 5336, + instrux + 5337, + instrux + 5338, + instrux + 5339, +}; + +static const struct itemplate * const itable_evex011E1[] = { + instrux + 6364, + instrux + 6365, + instrux + 6366, + instrux + 6367, + instrux + 6368, + instrux + 6369, +}; + +static const struct itemplate * const itable_evex011E2[] = { + instrux + 6322, + instrux + 6323, + instrux + 6324, + instrux + 6325, + instrux + 6326, + instrux + 6327, + instrux + 6334, + instrux + 6335, + instrux + 6336, + instrux + 6337, + instrux + 6338, + instrux + 6339, +}; + +static const struct itemplate * const itable_evex011E3[] = { + instrux + 5340, + instrux + 5341, + instrux + 5342, + instrux + 5343, + instrux + 5344, + instrux + 5345, +}; + +static const struct itemplate * const itable_evex011E4[] = { + instrux + 6127, + instrux + 6128, + instrux + 6129, + instrux + 6130, + instrux + 6131, + instrux + 6132, +}; + +static const struct itemplate * const itable_evex011E5[] = { + instrux + 6133, + instrux + 6134, + instrux + 6135, + instrux + 6136, + instrux + 6137, + instrux + 6138, +}; + +static const struct itemplate * const itable_evex011E6[] = { + instrux + 4704, + instrux + 4705, + instrux + 4706, +}; + +static const struct itemplate * const itable_evex011E7[] = { + instrux + 5140, + instrux + 5141, + instrux + 5142, +}; + +static const struct itemplate * const itable_evex011E8[] = { + instrux + 6454, + instrux + 6455, + instrux + 6456, + instrux + 6457, + instrux + 6458, + instrux + 6459, +}; + +static const struct itemplate * const itable_evex011E9[] = { + instrux + 6460, + instrux + 6461, + instrux + 6462, + instrux + 6463, + instrux + 6464, + instrux + 6465, +}; + +static const struct itemplate * const itable_evex011EA[] = { + instrux + 5917, + instrux + 5918, + instrux + 5919, + instrux + 5920, + instrux + 5921, + instrux + 5922, +}; + +static const struct itemplate * const itable_evex011EB[] = { + instrux + 6169, + instrux + 6170, + instrux + 6171, + instrux + 6172, + instrux + 6173, + instrux + 6174, + instrux + 6175, + instrux + 6176, + instrux + 6177, + instrux + 6178, + instrux + 6179, + instrux + 6180, +}; + +static const struct itemplate * const itable_evex011EC[] = { + instrux + 5274, + instrux + 5275, + instrux + 5276, + instrux + 5277, + instrux + 5278, + instrux + 5279, +}; + +static const struct itemplate * const itable_evex011ED[] = { + instrux + 5280, + instrux + 5281, + instrux + 5282, + instrux + 5283, + instrux + 5284, + instrux + 5285, +}; + +static const struct itemplate * const itable_evex011EE[] = { + instrux + 5869, + instrux + 5870, + instrux + 5871, + instrux + 5872, + instrux + 5873, + instrux + 5874, +}; + +static const struct itemplate * const itable_evex011EF[] = { + instrux + 6562, + instrux + 6563, + instrux + 6564, + instrux + 6565, + instrux + 6566, + instrux + 6567, + instrux + 6568, + instrux + 6569, + instrux + 6570, + instrux + 6571, + instrux + 6572, + instrux + 6573, +}; + +static const struct itemplate * const itable_evex011F1[] = { + instrux + 6310, + instrux + 6311, + instrux + 6312, + instrux + 6313, + instrux + 6314, + instrux + 6315, +}; + +static const struct itemplate * const itable_evex011F2[] = { + instrux + 6262, + instrux + 6263, + instrux + 6264, + instrux + 6265, + instrux + 6266, + instrux + 6267, +}; + +static const struct itemplate * const itable_evex011F3[] = { + instrux + 6280, + instrux + 6281, + instrux + 6282, + instrux + 6283, + instrux + 6284, + instrux + 6285, +}; + +static const struct itemplate * const itable_evex011F4[] = { + instrux + 6163, + instrux + 6164, + instrux + 6165, + instrux + 6166, + instrux + 6167, + instrux + 6168, +}; + +static const struct itemplate * const itable_evex011F5[] = { + instrux + 5845, + instrux + 5846, + instrux + 5847, + instrux + 5848, + instrux + 5849, + instrux + 5850, +}; + +static const struct itemplate * const itable_evex011F6[] = { + instrux + 6229, + instrux + 6230, + instrux + 6231, + instrux + 6232, + instrux + 6233, + instrux + 6234, +}; + +static const struct itemplate * const itable_evex011F8[] = { + instrux + 6436, + instrux + 6437, + instrux + 6438, + instrux + 6439, + instrux + 6440, + instrux + 6441, +}; + +static const struct itemplate * const itable_evex011F9[] = { + instrux + 6478, + instrux + 6479, + instrux + 6480, + instrux + 6481, + instrux + 6482, + instrux + 6483, +}; + +static const struct itemplate * const itable_evex011FA[] = { + instrux + 6442, + instrux + 6443, + instrux + 6444, + instrux + 6445, + instrux + 6446, + instrux + 6447, +}; + +static const struct itemplate * const itable_evex011FB[] = { + instrux + 6448, + instrux + 6449, + instrux + 6450, + instrux + 6451, + instrux + 6452, + instrux + 6453, +}; + +static const struct itemplate * const itable_evex011FC[] = { + instrux + 5256, + instrux + 5257, + instrux + 5258, + instrux + 5259, + instrux + 5260, + instrux + 5261, +}; + +static const struct itemplate * const itable_evex011FD[] = { + instrux + 5298, + instrux + 5299, + instrux + 5300, + instrux + 5301, + instrux + 5302, + instrux + 5303, +}; + +static const struct itemplate * const itable_evex011FE[] = { + instrux + 5262, + instrux + 5263, + instrux + 5264, + instrux + 5265, + instrux + 5266, + instrux + 5267, +}; + +static const struct itemplate * const itable_evex01210[] = { + instrux + 5168, + instrux + 5170, + instrux + 5171, +}; + +static const struct itemplate * const itable_evex01211[] = { + instrux + 5169, + instrux + 5172, + instrux + 5173, +}; + +static const struct itemplate * const itable_evex01212[] = { + instrux + 5165, + instrux + 5166, + instrux + 5167, +}; + +static const struct itemplate * const itable_evex01216[] = { + instrux + 5162, + instrux + 5163, + instrux + 5164, +}; + +static const struct itemplate * const itable_evex0122A[] = { + instrux + 4697, + instrux + 4698, +}; + +static const struct itemplate * const itable_evex0122C[] = { + instrux + 4732, + instrux + 4733, +}; + +static const struct itemplate * const itable_evex0122D[] = { + instrux + 4700, + instrux + 4701, +}; + +static const struct itemplate * const itable_evex01251[] = { + instrux + 6714, + instrux + 6715, +}; + +static const struct itemplate * const itable_evex01258[] = { + instrux + 4178, + instrux + 4179, +}; + +static const struct itemplate * const itable_evex01259[] = { + instrux + 5206, + instrux + 5207, +}; + +static const struct itemplate * const itable_evex0125A[] = { + instrux + 4699, +}; + +static const struct itemplate * const itable_evex0125B[] = { + instrux + 4716, + instrux + 4717, + instrux + 4718, +}; + +static const struct itemplate * const itable_evex0125C[] = { + instrux + 6730, + instrux + 6731, +}; + +static const struct itemplate * const itable_evex0125D[] = { + instrux + 5063, + instrux + 5064, +}; + +static const struct itemplate * const itable_evex0125E[] = { + instrux + 4772, + instrux + 4773, +}; + +static const struct itemplate * const itable_evex0125F[] = { + instrux + 5047, + instrux + 5048, +}; + +static const struct itemplate * const itable_evex0126F[] = { + instrux + 5106, + instrux + 5107, + instrux + 5108, + instrux + 5112, + instrux + 5113, + instrux + 5114, +}; + +static const struct itemplate * const itable_evex01270[] = { + instrux + 6256, + instrux + 6257, + instrux + 6258, +}; + +static const struct itemplate * const itable_evex01278[] = { + instrux + 4734, + instrux + 4735, +}; + +static const struct itemplate * const itable_evex01279[] = { + instrux + 4702, + instrux + 4703, +}; + +static const struct itemplate * const itable_evex0127A[] = { + instrux + 4736, + instrux + 4737, + instrux + 4738, + instrux + 4742, + instrux + 4743, + instrux + 4744, +}; + +static const struct itemplate * const itable_evex0127B[] = { + instrux + 4750, + instrux + 4751, +}; + +static const struct itemplate * const itable_evex0127E[] = { + instrux + 5154, +}; + +static const struct itemplate * const itable_evex0127F[] = { + instrux + 5109, + instrux + 5110, + instrux + 5111, + instrux + 5115, + instrux + 5116, + instrux + 5117, +}; + +static const struct itemplate * const itable_evex012C2[] = { + instrux + 4256, + instrux + 4264, + instrux + 4272, + instrux + 4280, + instrux + 4288, + instrux + 4296, + instrux + 4304, + instrux + 4312, + instrux + 4320, + instrux + 4328, + instrux + 4336, + instrux + 4344, + instrux + 4352, + instrux + 4360, + instrux + 4368, + instrux + 4376, + instrux + 4384, + instrux + 4392, + instrux + 4400, + instrux + 4408, + instrux + 4416, + instrux + 4424, + instrux + 4432, + instrux + 4440, + instrux + 4448, + instrux + 4456, + instrux + 4464, + instrux + 4472, + instrux + 4480, + instrux + 4488, + instrux + 4496, + instrux + 4504, + instrux + 4512, + instrux + 4520, + instrux + 4528, + instrux + 4536, + instrux + 4544, + instrux + 4552, + instrux + 4560, + instrux + 4568, + instrux + 4576, + instrux + 4584, + instrux + 4592, + instrux + 4600, + instrux + 4608, + instrux + 4616, + instrux + 4624, +}; + +static const struct itemplate * const itable_evex012E6[] = { + instrux + 4639, + instrux + 4640, + instrux + 4641, + instrux + 4684, + instrux + 4685, + instrux + 4686, +}; + +static const struct itemplate * const itable_evex01310[] = { + instrux + 5156, + instrux + 5158, + instrux + 5159, +}; + +static const struct itemplate * const itable_evex01311[] = { + instrux + 5157, + instrux + 5160, + instrux + 5161, +}; + +static const struct itemplate * const itable_evex01312[] = { + instrux + 5085, + instrux + 5086, + instrux + 5087, +}; + +static const struct itemplate * const itable_evex0132A[] = { + instrux + 4695, + instrux + 4696, +}; + +static const struct itemplate * const itable_evex0132C[] = { + instrux + 4728, + instrux + 4729, +}; + +static const struct itemplate * const itable_evex0132D[] = { + instrux + 4690, + instrux + 4691, +}; + +static const struct itemplate * const itable_evex01351[] = { + instrux + 6712, + instrux + 6713, +}; + +static const struct itemplate * const itable_evex01358[] = { + instrux + 4176, + instrux + 4177, +}; + +static const struct itemplate * const itable_evex01359[] = { + instrux + 5204, + instrux + 5205, +}; + +static const struct itemplate * const itable_evex0135A[] = { + instrux + 4692, +}; + +static const struct itemplate * const itable_evex0135C[] = { + instrux + 6728, + instrux + 6729, +}; + +static const struct itemplate * const itable_evex0135D[] = { + instrux + 5061, + instrux + 5062, +}; + +static const struct itemplate * const itable_evex0135E[] = { + instrux + 4770, + instrux + 4771, +}; + +static const struct itemplate * const itable_evex0135F[] = { + instrux + 5045, + instrux + 5046, +}; + +static const struct itemplate * const itable_evex0136F[] = { + instrux + 5100, + instrux + 5101, + instrux + 5102, + instrux + 5118, + instrux + 5119, + instrux + 5120, +}; + +static const struct itemplate * const itable_evex01370[] = { + instrux + 6259, + instrux + 6260, + instrux + 6261, +}; + +static const struct itemplate * const itable_evex01378[] = { + instrux + 4730, + instrux + 4731, +}; + +static const struct itemplate * const itable_evex01379[] = { + instrux + 4693, + instrux + 4694, +}; + +static const struct itemplate * const itable_evex0137A[] = { + instrux + 4739, + instrux + 4740, + instrux + 4741, + instrux + 4745, + instrux + 4746, + instrux + 4747, +}; + +static const struct itemplate * const itable_evex0137B[] = { + instrux + 4748, + instrux + 4749, +}; + +static const struct itemplate * const itable_evex0137F[] = { + instrux + 5103, + instrux + 5104, + instrux + 5105, + instrux + 5121, + instrux + 5122, + instrux + 5123, +}; + +static const struct itemplate * const itable_evex013C2[] = { + instrux + 4255, + instrux + 4263, + instrux + 4271, + instrux + 4279, + instrux + 4287, + instrux + 4295, + instrux + 4303, + instrux + 4311, + instrux + 4319, + instrux + 4327, + instrux + 4335, + instrux + 4343, + instrux + 4351, + instrux + 4359, + instrux + 4367, + instrux + 4375, + instrux + 4383, + instrux + 4391, + instrux + 4399, + instrux + 4407, + instrux + 4415, + instrux + 4423, + instrux + 4431, + instrux + 4439, + instrux + 4447, + instrux + 4455, + instrux + 4463, + instrux + 4471, + instrux + 4479, + instrux + 4487, + instrux + 4495, + instrux + 4503, + instrux + 4511, + instrux + 4519, + instrux + 4527, + instrux + 4535, + instrux + 4543, + instrux + 4551, + instrux + 4559, + instrux + 4567, + instrux + 4575, + instrux + 4583, + instrux + 4591, + instrux + 4599, + instrux + 4607, + instrux + 4615, + instrux + 4623, +}; + +static const struct itemplate * const itable_evex013E6[] = { + instrux + 4645, + instrux + 4646, + instrux + 4647, +}; + +static const struct itemplate * const itable_evex02100[] = { + instrux + 6247, + instrux + 6248, + instrux + 6249, + instrux + 6250, + instrux + 6251, + instrux + 6252, +}; + +static const struct itemplate * const itable_evex02104[] = { + instrux + 5839, + instrux + 5840, + instrux + 5841, + instrux + 5842, + instrux + 5843, + instrux + 5844, +}; + +static const struct itemplate * const itable_evex0210B[] = { + instrux + 6121, + instrux + 6122, + instrux + 6123, + instrux + 6124, + instrux + 6125, + instrux + 6126, +}; + +static const struct itemplate * const itable_evex0210C[] = { + instrux + 5731, + instrux + 5732, + instrux + 5733, + instrux + 5734, + instrux + 5735, + instrux + 5736, +}; + +static const struct itemplate * const itable_evex0210D[] = { + instrux + 5722, + instrux + 5723, + instrux + 5724, + instrux + 5725, + instrux + 5726, + instrux + 5727, +}; + +static const struct itemplate * const itable_evex02110[] = { + instrux + 6418, + instrux + 6419, + instrux + 6420, + instrux + 6421, + instrux + 6422, + instrux + 6423, +}; + +static const struct itemplate * const itable_evex02111[] = { + instrux + 6358, + instrux + 6359, + instrux + 6360, + instrux + 6361, + instrux + 6362, + instrux + 6363, +}; + +static const struct itemplate * const itable_evex02112[] = { + instrux + 6304, + instrux + 6305, + instrux + 6306, + instrux + 6307, + instrux + 6308, + instrux + 6309, +}; + +static const struct itemplate * const itable_evex02113[] = { + instrux + 4660, + instrux + 4661, + instrux + 4662, + instrux + 7054, + instrux + 7055, + instrux + 7056, +}; + +static const struct itemplate * const itable_evex02114[] = { + instrux + 6217, + instrux + 6218, + instrux + 6219, + instrux + 6220, + instrux + 6221, + instrux + 6222, + instrux + 6223, + instrux + 6224, + instrux + 6225, + instrux + 6226, + instrux + 6227, + instrux + 6228, +}; + +static const struct itemplate * const itable_evex02115[] = { + instrux + 6193, + instrux + 6194, + instrux + 6195, + instrux + 6196, + instrux + 6197, + instrux + 6198, + instrux + 6199, + instrux + 6200, + instrux + 6201, + instrux + 6202, + instrux + 6203, + instrux + 6204, +}; + +static const struct itemplate * const itable_evex02116[] = { + instrux + 5739, + instrux + 5740, + instrux + 5741, + instrux + 5742, + instrux + 5743, + instrux + 5744, + instrux + 5745, + instrux + 5746, +}; + +static const struct itemplate * const itable_evex02118[] = { + instrux + 4243, + instrux + 4244, + instrux + 4245, + instrux + 4246, + instrux + 4247, + instrux + 4248, +}; + +static const struct itemplate * const itable_evex02119[] = { + instrux + 4222, + instrux + 4223, + instrux + 4239, + instrux + 4240, + instrux + 4241, + instrux + 4242, +}; + +static const struct itemplate * const itable_evex0211A[] = { + instrux + 4224, + instrux + 4225, + instrux + 4227, + instrux + 4228, +}; + +static const struct itemplate * const itable_evex0211B[] = { + instrux + 4226, + instrux + 4229, +}; + +static const struct itemplate * const itable_evex0211C[] = { + instrux + 5220, + instrux + 5221, + instrux + 5222, +}; + +static const struct itemplate * const itable_evex0211D[] = { + instrux + 5229, + instrux + 5230, + instrux + 5231, +}; + +static const struct itemplate * const itable_evex0211E[] = { + instrux + 5223, + instrux + 5224, + instrux + 5225, +}; + +static const struct itemplate * const itable_evex0211F[] = { + instrux + 5226, + instrux + 5227, + instrux + 5228, +}; + +static const struct itemplate * const itable_evex02120[] = { + instrux + 6040, + instrux + 6041, + instrux + 6042, +}; + +static const struct itemplate * const itable_evex02121[] = { + instrux + 6034, + instrux + 6035, + instrux + 6036, +}; + +static const struct itemplate * const itable_evex02122[] = { + instrux + 6037, + instrux + 6038, + instrux + 6039, +}; + +static const struct itemplate * const itable_evex02123[] = { + instrux + 6046, + instrux + 6047, + instrux + 6048, +}; + +static const struct itemplate * const itable_evex02124[] = { + instrux + 6049, + instrux + 6050, + instrux + 6051, +}; + +static const struct itemplate * const itable_evex02125[] = { + instrux + 6043, + instrux + 6044, + instrux + 6045, +}; + +static const struct itemplate * const itable_evex02126[] = { + instrux + 6490, + instrux + 6491, + instrux + 6492, + instrux + 6499, + instrux + 6500, + instrux + 6501, +}; + +static const struct itemplate * const itable_evex02127[] = { + instrux + 6493, + instrux + 6494, + instrux + 6495, + instrux + 6496, + instrux + 6497, + instrux + 6498, +}; + +static const struct itemplate * const itable_evex02128[] = { + instrux + 6115, + instrux + 6116, + instrux + 6117, + instrux + 6118, + instrux + 6119, + instrux + 6120, +}; + +static const struct itemplate * const itable_evex02129[] = { + instrux + 5415, + instrux + 5416, + instrux + 5417, +}; + +static const struct itemplate * const itable_evex0212A[] = { + instrux + 5143, + instrux + 5144, + instrux + 5145, +}; + +static const struct itemplate * const itable_evex0212B[] = { + instrux + 5244, + instrux + 5245, + instrux + 5246, + instrux + 5247, + instrux + 5248, + instrux + 5249, +}; + +static const struct itemplate * const itable_evex0212C[] = { + instrux + 6642, + instrux + 6643, + instrux + 6644, + instrux + 6645, + instrux + 6646, + instrux + 6647, + instrux + 6648, + instrux + 6649, + instrux + 6650, + instrux + 6651, + instrux + 6652, + instrux + 6653, +}; + +static const struct itemplate * const itable_evex0212D[] = { + instrux + 6654, + instrux + 6655, + instrux + 6656, + instrux + 6657, +}; + +static const struct itemplate * const itable_evex02130[] = { + instrux + 6103, + instrux + 6104, + instrux + 6105, +}; + +static const struct itemplate * const itable_evex02131[] = { + instrux + 6097, + instrux + 6098, + instrux + 6099, +}; + +static const struct itemplate * const itable_evex02132[] = { + instrux + 6100, + instrux + 6101, + instrux + 6102, +}; + +static const struct itemplate * const itable_evex02133[] = { + instrux + 6109, + instrux + 6110, + instrux + 6111, +}; + +static const struct itemplate * const itable_evex02134[] = { + instrux + 6112, + instrux + 6113, + instrux + 6114, +}; + +static const struct itemplate * const itable_evex02135[] = { + instrux + 6106, + instrux + 6107, + instrux + 6108, +}; + +static const struct itemplate * const itable_evex02136[] = { + instrux + 5697, + instrux + 5698, + instrux + 5699, + instrux + 5700, + instrux + 5749, + instrux + 5750, + instrux + 5751, + instrux + 5752, +}; + +static const struct itemplate * const itable_evex02137[] = { + instrux + 5427, + instrux + 5428, + instrux + 5429, +}; + +static const struct itemplate * const itable_evex02138[] = { + instrux + 5899, + instrux + 5900, + instrux + 5901, + instrux + 5902, + instrux + 5903, + instrux + 5904, +}; + +static const struct itemplate * const itable_evex02139[] = { + instrux + 5905, + instrux + 5906, + instrux + 5907, + instrux + 5908, + instrux + 5909, + instrux + 5910, + instrux + 5911, + instrux + 5912, + instrux + 5913, + instrux + 5914, + instrux + 5915, + instrux + 5916, +}; + +static const struct itemplate * const itable_evex0213A[] = { + instrux + 5941, + instrux + 5942, + instrux + 5943, + instrux + 5944, + instrux + 5945, + instrux + 5946, +}; + +static const struct itemplate * const itable_evex0213B[] = { + instrux + 5929, + instrux + 5930, + instrux + 5931, + instrux + 5932, + instrux + 5933, + instrux + 5934, + instrux + 5935, + instrux + 5936, + instrux + 5937, + instrux + 5938, + instrux + 5939, + instrux + 5940, +}; + +static const struct itemplate * const itable_evex0213C[] = { + instrux + 5851, + instrux + 5852, + instrux + 5853, + instrux + 5854, + instrux + 5855, + instrux + 5856, +}; + +static const struct itemplate * const itable_evex0213D[] = { + instrux + 5857, + instrux + 5858, + instrux + 5859, + instrux + 5860, + instrux + 5861, + instrux + 5862, + instrux + 5863, + instrux + 5864, + instrux + 5865, + instrux + 5866, + instrux + 5867, + instrux + 5868, +}; + +static const struct itemplate * const itable_evex0213E[] = { + instrux + 5893, + instrux + 5894, + instrux + 5895, + instrux + 5896, + instrux + 5897, + instrux + 5898, +}; + +static const struct itemplate * const itable_evex0213F[] = { + instrux + 5881, + instrux + 5882, + instrux + 5883, + instrux + 5884, + instrux + 5885, + instrux + 5886, + instrux + 5887, + instrux + 5888, + instrux + 5889, + instrux + 5890, + instrux + 5891, + instrux + 5892, +}; + +static const struct itemplate * const itable_evex02140[] = { + instrux + 6139, + instrux + 6140, + instrux + 6141, + instrux + 6142, + instrux + 6143, + instrux + 6144, + instrux + 6145, + instrux + 6146, + instrux + 6147, + instrux + 6148, + instrux + 6149, + instrux + 6150, +}; + +static const struct itemplate * const itable_evex02142[] = { + instrux + 4991, + instrux + 4992, + instrux + 4993, + instrux + 4994, + instrux + 4995, + instrux + 4996, +}; + +static const struct itemplate * const itable_evex02143[] = { + instrux + 4997, + instrux + 4998, +}; + +static const struct itemplate * const itable_evex02144[] = { + instrux + 5827, + instrux + 5828, + instrux + 5829, + instrux + 5830, + instrux + 5831, + instrux + 5832, +}; + +static const struct itemplate * const itable_evex02145[] = { + instrux + 6406, + instrux + 6407, + instrux + 6408, + instrux + 6409, + instrux + 6410, + instrux + 6411, + instrux + 6412, + instrux + 6413, + instrux + 6414, + instrux + 6415, + instrux + 6416, + instrux + 6417, +}; + +static const struct itemplate * const itable_evex02146[] = { + instrux + 6346, + instrux + 6347, + instrux + 6348, + instrux + 6349, + instrux + 6350, + instrux + 6351, + instrux + 6352, + instrux + 6353, + instrux + 6354, + instrux + 6355, + instrux + 6356, + instrux + 6357, +}; + +static const struct itemplate * const itable_evex02147[] = { + instrux + 6292, + instrux + 6293, + instrux + 6294, + instrux + 6295, + instrux + 6296, + instrux + 6297, + instrux + 6298, + instrux + 6299, + instrux + 6300, + instrux + 6301, + instrux + 6302, + instrux + 6303, +}; + +static const struct itemplate * const itable_evex0214C[] = { + instrux + 6590, + instrux + 6591, + instrux + 6592, + instrux + 6593, + instrux + 6594, + instrux + 6595, +}; + +static const struct itemplate * const itable_evex0214D[] = { + instrux + 6596, + instrux + 6597, + instrux + 6598, + instrux + 6599, +}; + +static const struct itemplate * const itable_evex0214E[] = { + instrux + 6626, + instrux + 6627, + instrux + 6628, + instrux + 6629, + instrux + 6630, + instrux + 6631, +}; + +static const struct itemplate * const itable_evex0214F[] = { + instrux + 6632, + instrux + 6633, + instrux + 6634, + instrux + 6635, +}; + +static const struct itemplate * const itable_evex02150[] = { + instrux + 6917, + instrux + 6918, + instrux + 6919, + instrux + 6920, + instrux + 6921, + instrux + 6922, +}; + +static const struct itemplate * const itable_evex02151[] = { + instrux + 6923, + instrux + 6924, + instrux + 6925, + instrux + 6926, + instrux + 6927, + instrux + 6928, +}; + +static const struct itemplate * const itable_evex02152[] = { + instrux + 6929, + instrux + 6930, + instrux + 6931, + instrux + 6932, + instrux + 6933, + instrux + 6934, +}; + +static const struct itemplate * const itable_evex02153[] = { + instrux + 6935, + instrux + 6936, + instrux + 6937, + instrux + 6938, + instrux + 6939, + instrux + 6940, +}; + +static const struct itemplate * const itable_evex02154[] = { + instrux + 6941, + instrux + 6942, + instrux + 6943, + instrux + 6944, + instrux + 6945, + instrux + 6946, +}; + +static const struct itemplate * const itable_evex02155[] = { + instrux + 6947, + instrux + 6948, + instrux + 6949, + instrux + 6950, + instrux + 6951, + instrux + 6952, +}; + +static const struct itemplate * const itable_evex02158[] = { + instrux + 5373, + instrux + 5374, + instrux + 5375, + instrux + 5376, + instrux + 5377, + instrux + 5378, +}; + +static const struct itemplate * const itable_evex02159[] = { + instrux + 4230, + instrux + 4231, + instrux + 4232, + instrux + 5388, + instrux + 5389, + instrux + 5390, + instrux + 5391, + instrux + 5392, + instrux + 5393, +}; + +static const struct itemplate * const itable_evex0215A[] = { + instrux + 4233, + instrux + 4234, + instrux + 4236, + instrux + 4237, +}; + +static const struct itemplate * const itable_evex0215B[] = { + instrux + 4235, + instrux + 4238, +}; + +static const struct itemplate * const itable_evex02162[] = { + instrux + 6839, + instrux + 6840, + instrux + 6841, + instrux + 6842, + instrux + 6843, + instrux + 6844, +}; + +static const struct itemplate * const itable_evex02163[] = { + instrux + 6827, + instrux + 6828, + instrux + 6829, + instrux + 6830, + instrux + 6831, + instrux + 6832, + instrux + 6833, + instrux + 6834, + instrux + 6835, + instrux + 6836, + instrux + 6837, + instrux + 6838, +}; + +static const struct itemplate * const itable_evex02164[] = { + instrux + 5349, + instrux + 5350, + instrux + 5351, + instrux + 5352, + instrux + 5353, + instrux + 5354, +}; + +static const struct itemplate * const itable_evex02165[] = { + instrux + 4216, + instrux + 4217, + instrux + 4218, + instrux + 4219, + instrux + 4220, + instrux + 4221, +}; + +static const struct itemplate * const itable_evex02166[] = { + instrux + 5346, + instrux + 5347, + instrux + 5348, + instrux + 5355, + instrux + 5356, + instrux + 5357, +}; + +static const struct itemplate * const itable_evex02170[] = { + instrux + 6863, + instrux + 6864, + instrux + 6865, + instrux + 6866, + instrux + 6867, + instrux + 6868, +}; + +static const struct itemplate * const itable_evex02171[] = { + instrux + 6869, + instrux + 6870, + instrux + 6871, + instrux + 6872, + instrux + 6873, + instrux + 6874, + instrux + 6875, + instrux + 6876, + instrux + 6877, + instrux + 6878, + instrux + 6879, + instrux + 6880, +}; + +static const struct itemplate * const itable_evex02172[] = { + instrux + 6899, + instrux + 6900, + instrux + 6901, + instrux + 6902, + instrux + 6903, + instrux + 6904, +}; + +static const struct itemplate * const itable_evex02173[] = { + instrux + 6905, + instrux + 6906, + instrux + 6907, + instrux + 6908, + instrux + 6909, + instrux + 6910, + instrux + 6911, + instrux + 6912, + instrux + 6913, + instrux + 6914, + instrux + 6915, + instrux + 6916, +}; + +static const struct itemplate * const itable_evex02175[] = { + instrux + 5701, + instrux + 5702, + instrux + 5703, + instrux + 5716, + instrux + 5717, + instrux + 5718, +}; + +static const struct itemplate * const itable_evex02176[] = { + instrux + 5704, + instrux + 5705, + instrux + 5706, + instrux + 5713, + instrux + 5714, + instrux + 5715, +}; + +static const struct itemplate * const itable_evex02177[] = { + instrux + 5707, + instrux + 5708, + instrux + 5709, + instrux + 5710, + instrux + 5711, + instrux + 5712, +}; + +static const struct itemplate * const itable_evex02178[] = { + instrux + 5358, + instrux + 5359, + instrux + 5360, +}; + +static const struct itemplate * const itable_evex02179[] = { + instrux + 5397, + instrux + 5398, + instrux + 5399, +}; + +static const struct itemplate * const itable_evex0217A[] = { + instrux + 5361, + instrux + 5362, + instrux + 5363, + instrux + 5364, + instrux + 5365, + instrux + 5366, + instrux + 5367, + instrux + 5368, + instrux + 5369, + instrux + 5370, + instrux + 5371, + instrux + 5372, +}; + +static const struct itemplate * const itable_evex0217B[] = { + instrux + 5400, + instrux + 5401, + instrux + 5402, + instrux + 5403, + instrux + 5404, + instrux + 5405, + instrux + 5406, + instrux + 5407, + instrux + 5408, +}; + +static const struct itemplate * const itable_evex0217C[] = { + instrux + 5379, + instrux + 5380, + instrux + 5381, + instrux + 5394, + instrux + 5395, + instrux + 5396, +}; + +static const struct itemplate * const itable_evex0217D[] = { + instrux + 5753, + instrux + 5754, + instrux + 5755, + instrux + 5768, + instrux + 5769, + instrux + 5770, +}; + +static const struct itemplate * const itable_evex0217E[] = { + instrux + 5756, + instrux + 5757, + instrux + 5758, + instrux + 5765, + instrux + 5766, + instrux + 5767, +}; + +static const struct itemplate * const itable_evex0217F[] = { + instrux + 5759, + instrux + 5760, + instrux + 5761, + instrux + 5762, + instrux + 5763, + instrux + 5764, +}; + +static const struct itemplate * const itable_evex02183[] = { + instrux + 6157, + instrux + 6158, + instrux + 6159, + instrux + 6160, + instrux + 6161, + instrux + 6162, +}; + +static const struct itemplate * const itable_evex02188[] = { + instrux + 4776, + instrux + 4777, + instrux + 4778, + instrux + 4779, + instrux + 4780, + instrux + 4781, + instrux + 4782, + instrux + 4783, + instrux + 4784, + instrux + 4785, + instrux + 4786, + instrux + 4787, +}; + +static const struct itemplate * const itable_evex02189[] = { + instrux + 5777, + instrux + 5778, + instrux + 5779, + instrux + 5780, + instrux + 5781, + instrux + 5782, + instrux + 5783, + instrux + 5784, + instrux + 5785, + instrux + 5786, + instrux + 5787, + instrux + 5788, +}; + +static const struct itemplate * const itable_evex0218A[] = { + instrux + 4627, + instrux + 4628, + instrux + 4629, + instrux + 4630, + instrux + 4631, + instrux + 4632, + instrux + 4633, + instrux + 4634, + instrux + 4635, + instrux + 4636, + instrux + 4637, + instrux + 4638, +}; + +static const struct itemplate * const itable_evex0218B[] = { + instrux + 5673, + instrux + 5674, + instrux + 5675, + instrux + 5676, + instrux + 5677, + instrux + 5678, + instrux + 5679, + instrux + 5680, + instrux + 5681, + instrux + 5682, + instrux + 5683, + instrux + 5684, +}; + +static const struct itemplate * const itable_evex0218D[] = { + instrux + 5691, + instrux + 5692, + instrux + 5693, + instrux + 5694, + instrux + 5695, + instrux + 5696, + instrux + 5771, + instrux + 5772, + instrux + 5773, + instrux + 5774, + instrux + 5775, + instrux + 5776, +}; + +static const struct itemplate * const itable_evex0218F[] = { + instrux + 6953, + instrux + 6954, + instrux + 6955, +}; + +static const struct itemplate * const itable_evex02190[] = { + instrux + 5803, + instrux + 5804, + instrux + 5805, + instrux + 5806, + instrux + 5807, + instrux + 5808, +}; + +static const struct itemplate * const itable_evex02191[] = { + instrux + 5809, + instrux + 5810, + instrux + 5811, + instrux + 5812, + instrux + 5813, + instrux + 5814, +}; + +static const struct itemplate * const itable_evex02192[] = { + instrux + 4971, + instrux + 4972, + instrux + 4973, + instrux + 4974, + instrux + 4975, + instrux + 4976, +}; + +static const struct itemplate * const itable_evex02193[] = { + instrux + 4985, + instrux + 4986, + instrux + 4987, + instrux + 4988, + instrux + 4989, + instrux + 4990, +}; + +static const struct itemplate * const itable_evex02196[] = { + instrux + 4855, + instrux + 4856, + instrux + 4857, + instrux + 4858, + instrux + 4859, + instrux + 4860, +}; + +static const struct itemplate * const itable_evex02197[] = { + instrux + 4897, + instrux + 4898, + instrux + 4899, + instrux + 4900, + instrux + 4901, + instrux + 4902, +}; + +static const struct itemplate * const itable_evex02198[] = { + instrux + 4831, + instrux + 4832, + instrux + 4833, + instrux + 4834, + instrux + 4835, + instrux + 4836, +}; + +static const struct itemplate * const itable_evex02199[] = { + instrux + 4837, + instrux + 4838, +}; + +static const struct itemplate * const itable_evex0219A[] = { + instrux + 4873, + instrux + 4874, + instrux + 4875, + instrux + 4876, + instrux + 4877, + instrux + 4878, +}; + +static const struct itemplate * const itable_evex0219B[] = { + instrux + 4879, + instrux + 4880, +}; + +static const struct itemplate * const itable_evex0219C[] = { + instrux + 4915, + instrux + 4916, + instrux + 4917, + instrux + 4918, + instrux + 4919, + instrux + 4920, +}; + +static const struct itemplate * const itable_evex0219D[] = { + instrux + 4921, + instrux + 4922, +}; + +static const struct itemplate * const itable_evex0219E[] = { + instrux + 4939, + instrux + 4940, + instrux + 4941, + instrux + 4942, + instrux + 4943, + instrux + 4944, +}; + +static const struct itemplate * const itable_evex0219F[] = { + instrux + 4945, + instrux + 4946, +}; + +static const struct itemplate * const itable_evex021A0[] = { + instrux + 6235, + instrux + 6236, + instrux + 6237, + instrux + 6238, + instrux + 6239, + instrux + 6240, +}; + +static const struct itemplate * const itable_evex021A1[] = { + instrux + 6241, + instrux + 6242, + instrux + 6243, + instrux + 6244, + instrux + 6245, + instrux + 6246, +}; + +static const struct itemplate * const itable_evex021A2[] = { + instrux + 6658, + instrux + 6659, + instrux + 6660, + instrux + 6661, + instrux + 6662, + instrux + 6663, +}; + +static const struct itemplate * const itable_evex021A3[] = { + instrux + 6672, + instrux + 6673, + instrux + 6674, + instrux + 6675, + instrux + 6676, + instrux + 6677, +}; + +static const struct itemplate * const itable_evex021A6[] = { + instrux + 4861, + instrux + 4862, + instrux + 4863, + instrux + 4864, + instrux + 4865, + instrux + 4866, +}; + +static const struct itemplate * const itable_evex021A7[] = { + instrux + 4903, + instrux + 4904, + instrux + 4905, + instrux + 4906, + instrux + 4907, + instrux + 4908, +}; + +static const struct itemplate * const itable_evex021A8[] = { + instrux + 4839, + instrux + 4840, + instrux + 4841, + instrux + 4842, + instrux + 4843, + instrux + 4844, +}; + +static const struct itemplate * const itable_evex021A9[] = { + instrux + 4845, + instrux + 4846, +}; + +static const struct itemplate * const itable_evex021AA[] = { + instrux + 4881, + instrux + 4882, + instrux + 4883, + instrux + 4884, + instrux + 4885, + instrux + 4886, +}; + +static const struct itemplate * const itable_evex021AB[] = { + instrux + 4887, + instrux + 4888, +}; + +static const struct itemplate * const itable_evex021AC[] = { + instrux + 4923, + instrux + 4924, + instrux + 4925, + instrux + 4926, + instrux + 4927, + instrux + 4928, +}; + +static const struct itemplate * const itable_evex021AD[] = { + instrux + 4929, + instrux + 4930, +}; + +static const struct itemplate * const itable_evex021AE[] = { + instrux + 4947, + instrux + 4948, + instrux + 4949, + instrux + 4950, + instrux + 4951, + instrux + 4952, +}; + +static const struct itemplate * const itable_evex021AF[] = { + instrux + 4953, + instrux + 4954, +}; + +static const struct itemplate * const itable_evex021B4[] = { + instrux + 5836, + instrux + 5837, + instrux + 5838, +}; + +static const struct itemplate * const itable_evex021B5[] = { + instrux + 5833, + instrux + 5834, + instrux + 5835, +}; + +static const struct itemplate * const itable_evex021B6[] = { + instrux + 4867, + instrux + 4868, + instrux + 4869, + instrux + 4870, + instrux + 4871, + instrux + 4872, +}; + +static const struct itemplate * const itable_evex021B7[] = { + instrux + 4909, + instrux + 4910, + instrux + 4911, + instrux + 4912, + instrux + 4913, + instrux + 4914, +}; + +static const struct itemplate * const itable_evex021B8[] = { + instrux + 4847, + instrux + 4848, + instrux + 4849, + instrux + 4850, + instrux + 4851, + instrux + 4852, +}; + +static const struct itemplate * const itable_evex021B9[] = { + instrux + 4853, + instrux + 4854, +}; + +static const struct itemplate * const itable_evex021BA[] = { + instrux + 4889, + instrux + 4890, + instrux + 4891, + instrux + 4892, + instrux + 4893, + instrux + 4894, +}; + +static const struct itemplate * const itable_evex021BB[] = { + instrux + 4895, + instrux + 4896, +}; + +static const struct itemplate * const itable_evex021BC[] = { + instrux + 4931, + instrux + 4932, + instrux + 4933, + instrux + 4934, + instrux + 4935, + instrux + 4936, +}; + +static const struct itemplate * const itable_evex021BD[] = { + instrux + 4937, + instrux + 4938, +}; + +static const struct itemplate * const itable_evex021BE[] = { + instrux + 4955, + instrux + 4956, + instrux + 4957, + instrux + 4958, + instrux + 4959, + instrux + 4960, +}; + +static const struct itemplate * const itable_evex021BF[] = { + instrux + 4961, + instrux + 4962, +}; + +static const struct itemplate * const itable_evex021C4[] = { + instrux + 5685, + instrux + 5686, + instrux + 5687, + instrux + 5688, + instrux + 5689, + instrux + 5690, +}; + +static const struct itemplate * const itable_evex021C6[] = { + instrux + 4977, + instrux + 4978, + instrux + 4981, + instrux + 4982, + instrux + 6664, + instrux + 6665, + instrux + 6668, + instrux + 6669, +}; + +static const struct itemplate * const itable_evex021C7[] = { + instrux + 4979, + instrux + 4980, + instrux + 4983, + instrux + 4984, + instrux + 6666, + instrux + 6667, + instrux + 6670, + instrux + 6671, +}; + +static const struct itemplate * const itable_evex021C8[] = { + instrux + 4774, + instrux + 4775, +}; + +static const struct itemplate * const itable_evex021CA[] = { + instrux + 6600, + instrux + 6601, +}; + +static const struct itemplate * const itable_evex021CB[] = { + instrux + 6602, + instrux + 6603, + instrux + 6604, + instrux + 6605, +}; + +static const struct itemplate * const itable_evex021CC[] = { + instrux + 6636, + instrux + 6637, +}; + +static const struct itemplate * const itable_evex021CD[] = { + instrux + 6638, + instrux + 6639, + instrux + 6640, + instrux + 6641, +}; + +static const struct itemplate * const itable_evex021CF[] = { + instrux + 6821, + instrux + 6822, + instrux + 6823, + instrux + 6824, + instrux + 6825, + instrux + 6826, +}; + +static const struct itemplate * const itable_evex021DC[] = { + instrux + 1901, + instrux + 1902, + instrux + 1903, + instrux + 1904, + instrux + 1917, + instrux + 1918, +}; + +static const struct itemplate * const itable_evex021DD[] = { + instrux + 1905, + instrux + 1906, + instrux + 1907, + instrux + 1908, + instrux + 1919, + instrux + 1920, +}; + +static const struct itemplate * const itable_evex021DE[] = { + instrux + 1909, + instrux + 1910, + instrux + 1911, + instrux + 1912, + instrux + 1921, + instrux + 1922, +}; + +static const struct itemplate * const itable_evex021DF[] = { + instrux + 1913, + instrux + 1914, + instrux + 1915, + instrux + 1916, + instrux + 1923, + instrux + 1924, +}; + +static const struct itemplate * const itable_evex02210[] = { + instrux + 6082, + instrux + 6083, + instrux + 6084, + instrux + 6085, + instrux + 6086, + instrux + 6087, +}; + +static const struct itemplate * const itable_evex02211[] = { + instrux + 6052, + instrux + 6053, + instrux + 6054, + instrux + 6055, + instrux + 6056, + instrux + 6057, +}; + +static const struct itemplate * const itable_evex02212[] = { + instrux + 6064, + instrux + 6065, + instrux + 6066, + instrux + 6067, + instrux + 6068, + instrux + 6069, +}; + +static const struct itemplate * const itable_evex02213[] = { + instrux + 6058, + instrux + 6059, + instrux + 6060, + instrux + 6061, + instrux + 6062, + instrux + 6063, +}; + +static const struct itemplate * const itable_evex02214[] = { + instrux + 6076, + instrux + 6077, + instrux + 6078, + instrux + 6079, + instrux + 6080, + instrux + 6081, +}; + +static const struct itemplate * const itable_evex02215[] = { + instrux + 6070, + instrux + 6071, + instrux + 6072, + instrux + 6073, + instrux + 6074, + instrux + 6075, +}; + +static const struct itemplate * const itable_evex02220[] = { + instrux + 6028, + instrux + 6029, + instrux + 6030, + instrux + 6031, + instrux + 6032, + instrux + 6033, +}; + +static const struct itemplate * const itable_evex02221[] = { + instrux + 5998, + instrux + 5999, + instrux + 6000, + instrux + 6001, + instrux + 6002, + instrux + 6003, +}; + +static const struct itemplate * const itable_evex02222[] = { + instrux + 6010, + instrux + 6011, + instrux + 6012, + instrux + 6013, + instrux + 6014, + instrux + 6015, +}; + +static const struct itemplate * const itable_evex02223[] = { + instrux + 6004, + instrux + 6005, + instrux + 6006, + instrux + 6007, + instrux + 6008, + instrux + 6009, +}; + +static const struct itemplate * const itable_evex02224[] = { + instrux + 6022, + instrux + 6023, + instrux + 6024, + instrux + 6025, + instrux + 6026, + instrux + 6027, +}; + +static const struct itemplate * const itable_evex02225[] = { + instrux + 6016, + instrux + 6017, + instrux + 6018, + instrux + 6019, + instrux + 6020, + instrux + 6021, +}; + +static const struct itemplate * const itable_evex02226[] = { + instrux + 6502, + instrux + 6503, + instrux + 6504, + instrux + 6511, + instrux + 6512, + instrux + 6513, +}; + +static const struct itemplate * const itable_evex02227[] = { + instrux + 6505, + instrux + 6506, + instrux + 6507, + instrux + 6508, + instrux + 6509, + instrux + 6510, +}; + +static const struct itemplate * const itable_evex02228[] = { + instrux + 5965, + instrux + 5966, + instrux + 5967, + instrux + 5974, + instrux + 5975, + instrux + 5976, +}; + +static const struct itemplate * const itable_evex02229[] = { + instrux + 5947, + instrux + 5948, + instrux + 5949, + instrux + 6088, + instrux + 6089, + instrux + 6090, +}; + +static const struct itemplate * const itable_evex0222A[] = { + instrux + 5382, + instrux + 5383, + instrux + 5384, +}; + +static const struct itemplate * const itable_evex02230[] = { + instrux + 6091, + instrux + 6092, + instrux + 6093, + instrux + 6094, + instrux + 6095, + instrux + 6096, +}; + +static const struct itemplate * const itable_evex02231[] = { + instrux + 5953, + instrux + 5954, + instrux + 5955, + instrux + 5956, + instrux + 5957, + instrux + 5958, +}; + +static const struct itemplate * const itable_evex02232[] = { + instrux + 5980, + instrux + 5981, + instrux + 5982, + instrux + 5983, + instrux + 5984, + instrux + 5985, +}; + +static const struct itemplate * const itable_evex02233[] = { + instrux + 5959, + instrux + 5960, + instrux + 5961, + instrux + 5962, + instrux + 5963, + instrux + 5964, +}; + +static const struct itemplate * const itable_evex02234[] = { + instrux + 5992, + instrux + 5993, + instrux + 5994, + instrux + 5995, + instrux + 5996, + instrux + 5997, +}; + +static const struct itemplate * const itable_evex02235[] = { + instrux + 5986, + instrux + 5987, + instrux + 5988, + instrux + 5989, + instrux + 5990, + instrux + 5991, +}; + +static const struct itemplate * const itable_evex02238[] = { + instrux + 5968, + instrux + 5969, + instrux + 5970, + instrux + 5971, + instrux + 5972, + instrux + 5973, +}; + +static const struct itemplate * const itable_evex02239[] = { + instrux + 5950, + instrux + 5951, + instrux + 5952, + instrux + 5977, + instrux + 5978, + instrux + 5979, +}; + +static const struct itemplate * const itable_evex0223A[] = { + instrux + 5385, + instrux + 5386, + instrux + 5387, +}; + +static const struct itemplate * const itable_evex02252[] = { + instrux + 7002, + instrux + 7003, + instrux + 7004, + instrux + 7005, + instrux + 7006, + instrux + 7007, +}; + +static const struct itemplate * const itable_evex02272[] = { + instrux + 6996, + instrux + 6997, + instrux + 6998, + instrux + 6999, + instrux + 7000, + instrux + 7001, +}; + +static const struct itemplate * const itable_evex02352[] = { + instrux + 6961, +}; + +static const struct itemplate * const itable_evex02353[] = { + instrux + 6960, +}; + +static const struct itemplate * const itable_evex02368[] = { + instrux + 7008, + instrux + 7009, + instrux + 7010, +}; + +static const struct itemplate * const itable_evex02372[] = { + instrux + 6990, + instrux + 6991, + instrux + 6992, + instrux + 6993, + instrux + 6994, + instrux + 6995, +}; + +static const struct itemplate * const itable_evex0239A[] = { + instrux + 6956, +}; + +static const struct itemplate * const itable_evex0239B[] = { + instrux + 6958, +}; + +static const struct itemplate * const itable_evex023AA[] = { + instrux + 6957, +}; + +static const struct itemplate * const itable_evex023AB[] = { + instrux + 6959, +}; + +static const struct itemplate * const itable_evex03008[] = { + instrux + 7362, + instrux + 7363, + instrux + 7364, +}; + +static const struct itemplate * const itable_evex0300A[] = { + instrux + 7365, + instrux + 7366, +}; + +static const struct itemplate * const itable_evex03025[] = { + instrux + 7321, + instrux + 7322, + instrux + 7323, +}; + +static const struct itemplate * const itable_evex03027[] = { + instrux + 7324, +}; + +static const struct itemplate * const itable_evex03056[] = { + instrux + 7357, + instrux + 7358, + instrux + 7359, +}; + +static const struct itemplate * const itable_evex03057[] = { + instrux + 7360, + instrux + 7361, +}; + +static const struct itemplate * const itable_evex03066[] = { + instrux + 7313, + instrux + 7314, + instrux + 7315, +}; + +static const struct itemplate * const itable_evex03067[] = { + instrux + 7316, +}; + +static const struct itemplate * const itable_evex030C2[] = { + instrux + 7031, + instrux + 7032, + instrux + 7033, + instrux + 7034, + instrux + 7035, + instrux + 7036, +}; + +static const struct itemplate * const itable_evex03100[] = { + instrux + 5747, + instrux + 5748, +}; + +static const struct itemplate * const itable_evex03101[] = { + instrux + 5737, + instrux + 5738, +}; + +static const struct itemplate * const itable_evex03103[] = { + instrux + 4180, + instrux + 4181, + instrux + 4182, + instrux + 4183, + instrux + 4184, + instrux + 4185, + instrux + 4186, + instrux + 4187, + instrux + 4188, + instrux + 4189, + instrux + 4190, + instrux + 4191, +}; + +static const struct itemplate * const itable_evex03104[] = { + instrux + 5728, + instrux + 5729, + instrux + 5730, +}; + +static const struct itemplate * const itable_evex03105[] = { + instrux + 5719, + instrux + 5720, + instrux + 5721, +}; + +static const struct itemplate * const itable_evex03108[] = { + instrux + 6619, + instrux + 6620, + instrux + 6621, +}; + +static const struct itemplate * const itable_evex03109[] = { + instrux + 6616, + instrux + 6617, + instrux + 6618, +}; + +static const struct itemplate * const itable_evex0310A[] = { + instrux + 6624, + instrux + 6625, +}; + +static const struct itemplate * const itable_evex0310B[] = { + instrux + 6622, + instrux + 6623, +}; + +static const struct itemplate * const itable_evex0310F[] = { + instrux + 5304, + instrux + 5305, + instrux + 5306, + instrux + 5307, + instrux + 5308, + instrux + 5309, +}; + +static const struct itemplate * const itable_evex03114[] = { + instrux + 5789, + instrux + 5790, + instrux + 5791, + instrux + 5792, + instrux + 5793, +}; + +static const struct itemplate * const itable_evex03115[] = { + instrux + 5796, + instrux + 5797, + instrux + 5798, + instrux + 5799, +}; + +static const struct itemplate * const itable_evex03116[] = { + instrux + 5794, + instrux + 5795, +}; + +static const struct itemplate * const itable_evex03117[] = { + instrux + 4812, + instrux + 4813, + instrux + 4814, +}; + +static const struct itemplate * const itable_evex03118[] = { + instrux + 5007, + instrux + 5008, + instrux + 5009, + instrux + 5010, + instrux + 5013, + instrux + 5014, + instrux + 5015, + instrux + 5016, +}; + +static const struct itemplate * const itable_evex03119[] = { + instrux + 4788, + instrux + 4789, + instrux + 4790, + instrux + 4791, + instrux + 4794, + instrux + 4795, + instrux + 4796, + instrux + 4797, +}; + +static const struct itemplate * const itable_evex0311A[] = { + instrux + 5011, + instrux + 5012, + instrux + 5017, + instrux + 5018, +}; + +static const struct itemplate * const itable_evex0311B[] = { + instrux + 4792, + instrux + 4793, + instrux + 4798, + instrux + 4799, +}; + +static const struct itemplate * const itable_evex0311D[] = { + instrux + 4669, + instrux + 4670, + instrux + 4671, + instrux + 4672, + instrux + 4673, + instrux + 4674, + instrux + 7077, + instrux + 7078, + instrux + 7079, + instrux + 7080, + instrux + 7081, + instrux + 7082, +}; + +static const struct itemplate * const itable_evex0311E[] = { + instrux + 5445, + instrux + 5446, + instrux + 5447, + instrux + 5448, + instrux + 5449, + instrux + 5450, + instrux + 5469, + instrux + 5470, + instrux + 5471, + instrux + 5472, + instrux + 5473, + instrux + 5474, + instrux + 5493, + instrux + 5494, + instrux + 5495, + instrux + 5496, + instrux + 5497, + instrux + 5498, + instrux + 5517, + instrux + 5518, + instrux + 5519, + instrux + 5520, + instrux + 5521, + instrux + 5522, + instrux + 5541, + instrux + 5542, + instrux + 5543, + instrux + 5544, + instrux + 5545, + instrux + 5546, + instrux + 5565, + instrux + 5566, + instrux + 5567, + instrux + 5568, + instrux + 5569, + instrux + 5570, + instrux + 5589, + instrux + 5590, + instrux + 5591, + instrux + 5592, + instrux + 5593, + instrux + 5594, + instrux + 5613, + instrux + 5614, + instrux + 5615, + instrux + 5616, + instrux + 5617, + instrux + 5618, + instrux + 5637, + instrux + 5638, + instrux + 5639, + instrux + 5640, + instrux + 5641, + instrux + 5642, + instrux + 5661, + instrux + 5662, + instrux + 5663, + instrux + 5664, + instrux + 5665, + instrux + 5666, +}; + +static const struct itemplate * const itable_evex0311F[] = { + instrux + 5436, + instrux + 5437, + instrux + 5438, + instrux + 5439, + instrux + 5440, + instrux + 5441, + instrux + 5460, + instrux + 5461, + instrux + 5462, + instrux + 5463, + instrux + 5464, + instrux + 5465, + instrux + 5484, + instrux + 5485, + instrux + 5486, + instrux + 5487, + instrux + 5488, + instrux + 5489, + instrux + 5508, + instrux + 5509, + instrux + 5510, + instrux + 5511, + instrux + 5512, + instrux + 5513, + instrux + 5532, + instrux + 5533, + instrux + 5534, + instrux + 5535, + instrux + 5536, + instrux + 5537, + instrux + 5556, + instrux + 5557, + instrux + 5558, + instrux + 5559, + instrux + 5560, + instrux + 5561, + instrux + 5580, + instrux + 5581, + instrux + 5582, + instrux + 5583, + instrux + 5584, + instrux + 5585, + instrux + 5604, + instrux + 5605, + instrux + 5606, + instrux + 5607, + instrux + 5608, + instrux + 5609, + instrux + 5628, + instrux + 5629, + instrux + 5630, + instrux + 5631, + instrux + 5632, + instrux + 5633, + instrux + 5652, + instrux + 5653, + instrux + 5654, + instrux + 5655, + instrux + 5656, + instrux + 5657, +}; + +static const struct itemplate * const itable_evex03120[] = { + instrux + 5815, + instrux + 5816, + instrux + 5817, + instrux + 5818, +}; + +static const struct itemplate * const itable_evex03121[] = { + instrux + 5031, + instrux + 5032, +}; + +static const struct itemplate * const itable_evex03122[] = { + instrux + 5819, + instrux + 5820, + instrux + 5821, + instrux + 5822, +}; + +static const struct itemplate * const itable_evex03123[] = { + instrux + 6678, + instrux + 6679, + instrux + 6680, + instrux + 6681, + instrux + 6682, + instrux + 6683, + instrux + 6684, + instrux + 6685, +}; + +static const struct itemplate * const itable_evex03125[] = { + instrux + 6484, + instrux + 6485, + instrux + 6486, + instrux + 6487, + instrux + 6488, + instrux + 6489, +}; + +static const struct itemplate * const itable_evex03126[] = { + instrux + 4999, + instrux + 5000, + instrux + 5001, + instrux + 5002, + instrux + 5003, + instrux + 5004, +}; + +static const struct itemplate * const itable_evex03127[] = { + instrux + 5005, + instrux + 5006, +}; + +static const struct itemplate * const itable_evex03138[] = { + instrux + 5019, + instrux + 5020, + instrux + 5021, + instrux + 5022, + instrux + 5025, + instrux + 5026, + instrux + 5027, + instrux + 5028, +}; + +static const struct itemplate * const itable_evex03139[] = { + instrux + 4800, + instrux + 4801, + instrux + 4802, + instrux + 4803, + instrux + 4806, + instrux + 4807, + instrux + 4808, + instrux + 4809, +}; + +static const struct itemplate * const itable_evex0313A[] = { + instrux + 5023, + instrux + 5024, + instrux + 5029, + instrux + 5030, +}; + +static const struct itemplate * const itable_evex0313B[] = { + instrux + 4804, + instrux + 4805, + instrux + 4810, + instrux + 4811, +}; + +static const struct itemplate * const itable_evex0313E[] = { + instrux + 5442, + instrux + 5443, + instrux + 5444, + instrux + 5451, + instrux + 5452, + instrux + 5453, + instrux + 5466, + instrux + 5467, + instrux + 5468, + instrux + 5475, + instrux + 5476, + instrux + 5477, + instrux + 5490, + instrux + 5491, + instrux + 5492, + instrux + 5499, + instrux + 5500, + instrux + 5501, + instrux + 5514, + instrux + 5515, + instrux + 5516, + instrux + 5523, + instrux + 5524, + instrux + 5525, + instrux + 5538, + instrux + 5539, + instrux + 5540, + instrux + 5547, + instrux + 5548, + instrux + 5549, + instrux + 5562, + instrux + 5563, + instrux + 5564, + instrux + 5571, + instrux + 5572, + instrux + 5573, + instrux + 5586, + instrux + 5587, + instrux + 5588, + instrux + 5595, + instrux + 5596, + instrux + 5597, + instrux + 5610, + instrux + 5611, + instrux + 5612, + instrux + 5619, + instrux + 5620, + instrux + 5621, + instrux + 5634, + instrux + 5635, + instrux + 5636, + instrux + 5643, + instrux + 5644, + instrux + 5645, + instrux + 5658, + instrux + 5659, + instrux + 5660, + instrux + 5667, + instrux + 5668, + instrux + 5669, +}; + +static const struct itemplate * const itable_evex0313F[] = { + instrux + 5433, + instrux + 5434, + instrux + 5435, + instrux + 5454, + instrux + 5455, + instrux + 5456, + instrux + 5457, + instrux + 5458, + instrux + 5459, + instrux + 5478, + instrux + 5479, + instrux + 5480, + instrux + 5481, + instrux + 5482, + instrux + 5483, + instrux + 5502, + instrux + 5503, + instrux + 5504, + instrux + 5505, + instrux + 5506, + instrux + 5507, + instrux + 5526, + instrux + 5527, + instrux + 5528, + instrux + 5529, + instrux + 5530, + instrux + 5531, + instrux + 5550, + instrux + 5551, + instrux + 5552, + instrux + 5553, + instrux + 5554, + instrux + 5555, + instrux + 5574, + instrux + 5575, + instrux + 5576, + instrux + 5577, + instrux + 5578, + instrux + 5579, + instrux + 5598, + instrux + 5599, + instrux + 5600, + instrux + 5601, + instrux + 5602, + instrux + 5603, + instrux + 5622, + instrux + 5623, + instrux + 5624, + instrux + 5625, + instrux + 5626, + instrux + 5627, + instrux + 5646, + instrux + 5647, + instrux + 5648, + instrux + 5649, + instrux + 5650, + instrux + 5651, + instrux + 5670, + instrux + 5671, + instrux + 5672, +}; + +static const struct itemplate * const itable_evex03142[] = { + instrux + 4752, + instrux + 4753, + instrux + 4754, + instrux + 4755, + instrux + 4756, + instrux + 4757, +}; + +static const struct itemplate * const itable_evex03143[] = { + instrux + 6686, + instrux + 6687, + instrux + 6688, + instrux + 6689, + instrux + 6690, + instrux + 6691, + instrux + 6692, + instrux + 6693, +}; + +static const struct itemplate * const itable_evex03144[] = { + instrux + 3136, + instrux + 3137, + instrux + 3138, + instrux + 3139, + instrux + 3140, + instrux + 3141, + instrux + 3142, + instrux + 3143, + instrux + 3144, + instrux + 3145, + instrux + 3146, + instrux + 3147, + instrux + 3148, + instrux + 3149, + instrux + 3150, + instrux + 3151, + instrux + 3152, + instrux + 3153, + instrux + 3154, + instrux + 3155, + instrux + 3156, + instrux + 3157, + instrux + 3158, + instrux + 3159, + instrux + 3160, + instrux + 3161, + instrux + 3162, + instrux + 3163, + instrux + 3164, + instrux + 3165, +}; + +static const struct itemplate * const itable_evex03150[] = { + instrux + 6574, + instrux + 6575, + instrux + 6576, + instrux + 6577, + instrux + 6578, + instrux + 6579, + instrux + 6580, + instrux + 6581, + instrux + 6582, + instrux + 6583, + instrux + 6584, + instrux + 6585, +}; + +static const struct itemplate * const itable_evex03151[] = { + instrux + 6586, + instrux + 6587, + instrux + 6588, + instrux + 6589, +}; + +static const struct itemplate * const itable_evex03154[] = { + instrux + 4815, + instrux + 4816, + instrux + 4817, + instrux + 4818, + instrux + 4819, + instrux + 4820, + instrux + 4821, + instrux + 4822, + instrux + 4823, + instrux + 4824, + instrux + 4825, + instrux + 4826, +}; + +static const struct itemplate * const itable_evex03155[] = { + instrux + 4827, + instrux + 4828, + instrux + 4829, + instrux + 4830, +}; + +static const struct itemplate * const itable_evex03156[] = { + instrux + 6606, + instrux + 6607, + instrux + 6608, + instrux + 6609, + instrux + 6610, + instrux + 6611, +}; + +static const struct itemplate * const itable_evex03157[] = { + instrux + 6612, + instrux + 6613, + instrux + 6614, + instrux + 6615, +}; + +static const struct itemplate * const itable_evex03166[] = { + instrux + 4963, + instrux + 4964, + instrux + 4965, + instrux + 4966, + instrux + 4967, + instrux + 4968, +}; + +static const struct itemplate * const itable_evex03167[] = { + instrux + 4969, + instrux + 4970, +}; + +static const struct itemplate * const itable_evex03170[] = { + instrux + 6845, + instrux + 6846, + instrux + 6847, + instrux + 6848, + instrux + 6849, + instrux + 6850, +}; + +static const struct itemplate * const itable_evex03171[] = { + instrux + 6851, + instrux + 6852, + instrux + 6853, + instrux + 6854, + instrux + 6855, + instrux + 6856, + instrux + 6857, + instrux + 6858, + instrux + 6859, + instrux + 6860, + instrux + 6861, + instrux + 6862, +}; + +static const struct itemplate * const itable_evex03172[] = { + instrux + 6881, + instrux + 6882, + instrux + 6883, + instrux + 6884, + instrux + 6885, + instrux + 6886, +}; + +static const struct itemplate * const itable_evex03173[] = { + instrux + 6887, + instrux + 6888, + instrux + 6889, + instrux + 6890, + instrux + 6891, + instrux + 6892, + instrux + 6893, + instrux + 6894, + instrux + 6895, + instrux + 6896, + instrux + 6897, + instrux + 6898, +}; + +static const struct itemplate * const itable_evex031CE[] = { + instrux + 6810, + instrux + 6811, + instrux + 6812, + instrux + 6813, + instrux + 6814, + instrux + 6815, +}; + +static const struct itemplate * const itable_evex031CF[] = { + instrux + 6799, + instrux + 6800, + instrux + 6801, + instrux + 6802, + instrux + 6803, + instrux + 6804, +}; + +static const struct itemplate * const itable_evex032C2[] = { + instrux + 7037, + instrux + 7038, +}; + +static const struct itemplate * const itable_evex0501D[] = { + instrux + 7103, + instrux + 7104, +}; + +static const struct itemplate * const itable_evex0502E[] = { + instrux + 7393, +}; + +static const struct itemplate * const itable_evex0502F[] = { + instrux + 7039, +}; + +static const struct itemplate * const itable_evex05051[] = { + instrux + 7380, + instrux + 7381, + instrux + 7382, +}; + +static const struct itemplate * const itable_evex05058[] = { + instrux + 7023, + instrux + 7024, + instrux + 7025, + instrux + 7026, + instrux + 7027, + instrux + 7028, +}; + +static const struct itemplate * const itable_evex05059[] = { + instrux + 7341, + instrux + 7342, + instrux + 7343, + instrux + 7344, + instrux + 7345, + instrux + 7346, +}; + +static const struct itemplate * const itable_evex0505A[] = { + instrux + 7049, + instrux + 7050, + instrux + 7051, +}; + +static const struct itemplate * const itable_evex0505B[] = { + instrux + 7040, + instrux + 7041, + instrux + 7042, + instrux + 7086, + instrux + 7087, + instrux + 7088, +}; + +static const struct itemplate * const itable_evex0505C[] = { + instrux + 7385, + instrux + 7386, + instrux + 7387, + instrux + 7388, + instrux + 7389, + instrux + 7390, +}; + +static const struct itemplate * const itable_evex0505D[] = { + instrux + 7329, + instrux + 7330, + instrux + 7331, +}; + +static const struct itemplate * const itable_evex0505E[] = { + instrux + 7141, + instrux + 7142, + instrux + 7143, + instrux + 7144, + instrux + 7145, + instrux + 7146, +}; + +static const struct itemplate * const itable_evex0505F[] = { + instrux + 7325, + instrux + 7326, + instrux + 7327, +}; + +static const struct itemplate * const itable_evex05078[] = { + instrux + 7111, + instrux + 7112, + instrux + 7113, +}; + +static const struct itemplate * const itable_evex05079[] = { + instrux + 7063, + instrux + 7064, + instrux + 7065, +}; + +static const struct itemplate * const itable_evex0507C[] = { + instrux + 7117, + instrux + 7118, + instrux + 7119, +}; + +static const struct itemplate * const itable_evex0507D[] = { + instrux + 7069, + instrux + 7070, + instrux + 7071, +}; + +static const struct itemplate * const itable_evex0511D[] = { + instrux + 7083, + instrux + 7084, + instrux + 7085, +}; + +static const struct itemplate * const itable_evex0515A[] = { + instrux + 7043, + instrux + 7044, + instrux + 7045, +}; + +static const struct itemplate * const itable_evex0515B[] = { + instrux + 7046, + instrux + 7047, + instrux + 7048, +}; + +static const struct itemplate * const itable_evex0516E[] = { + instrux + 7339, +}; + +static const struct itemplate * const itable_evex05178[] = { + instrux + 7114, + instrux + 7115, + instrux + 7116, +}; + +static const struct itemplate * const itable_evex05179[] = { + instrux + 7066, + instrux + 7067, + instrux + 7068, +}; + +static const struct itemplate * const itable_evex0517A[] = { + instrux + 7108, + instrux + 7109, + instrux + 7110, +}; + +static const struct itemplate * const itable_evex0517B[] = { + instrux + 7060, + instrux + 7061, + instrux + 7062, +}; + +static const struct itemplate * const itable_evex0517C[] = { + instrux + 7120, + instrux + 7121, + instrux + 7122, +}; + +static const struct itemplate * const itable_evex0517D[] = { + instrux + 7072, + instrux + 7073, + instrux + 7074, +}; + +static const struct itemplate * const itable_evex0517E[] = { + instrux + 7340, +}; + +static const struct itemplate * const itable_evex05210[] = { + instrux + 7333, + instrux + 7335, + instrux + 7336, +}; + +static const struct itemplate * const itable_evex05211[] = { + instrux + 7334, + instrux + 7337, + instrux + 7338, +}; + +static const struct itemplate * const itable_evex0522A[] = { + instrux + 7099, + instrux + 7100, + instrux + 7101, + instrux + 7102, +}; + +static const struct itemplate * const itable_evex0522C[] = { + instrux + 7123, + instrux + 7124, +}; + +static const struct itemplate * const itable_evex0522D[] = { + instrux + 7093, + instrux + 7094, +}; + +static const struct itemplate * const itable_evex05251[] = { + instrux + 7383, + instrux + 7384, +}; + +static const struct itemplate * const itable_evex05258[] = { + instrux + 7029, + instrux + 7030, +}; + +static const struct itemplate * const itable_evex05259[] = { + instrux + 7347, + instrux + 7348, +}; + +static const struct itemplate * const itable_evex0525A[] = { + instrux + 7091, + instrux + 7092, +}; + +static const struct itemplate * const itable_evex0525B[] = { + instrux + 7105, + instrux + 7106, + instrux + 7107, +}; + +static const struct itemplate * const itable_evex0525C[] = { + instrux + 7391, + instrux + 7392, +}; + +static const struct itemplate * const itable_evex0525D[] = { + instrux + 7332, +}; + +static const struct itemplate * const itable_evex0525E[] = { + instrux + 7147, + instrux + 7148, +}; + +static const struct itemplate * const itable_evex0525F[] = { + instrux + 7328, +}; + +static const struct itemplate * const itable_evex05278[] = { + instrux + 7125, + instrux + 7126, +}; + +static const struct itemplate * const itable_evex05279[] = { + instrux + 7097, + instrux + 7098, +}; + +static const struct itemplate * const itable_evex0527B[] = { + instrux + 7133, + instrux + 7134, +}; + +static const struct itemplate * const itable_evex0527D[] = { + instrux + 7138, + instrux + 7139, + instrux + 7140, +}; + +static const struct itemplate * const itable_evex0535A[] = { + instrux + 7089, + instrux + 7090, +}; + +static const struct itemplate * const itable_evex0537A[] = { + instrux + 7127, + instrux + 7128, + instrux + 7129, + instrux + 7130, + instrux + 7131, + instrux + 7132, +}; + +static const struct itemplate * const itable_evex0537D[] = { + instrux + 7135, + instrux + 7136, + instrux + 7137, +}; + +static const struct itemplate * const itable_evex06013[] = { + instrux + 7095, + instrux + 7096, +}; + +static const struct itemplate * const itable_evex06113[] = { + instrux + 7057, + instrux + 7058, + instrux + 7059, +}; + +static const struct itemplate * const itable_evex0612C[] = { + instrux + 7372, + instrux + 7373, + instrux + 7374, + instrux + 7375, + instrux + 7376, + instrux + 7377, +}; + +static const struct itemplate * const itable_evex0612D[] = { + instrux + 7378, + instrux + 7379, +}; + +static const struct itemplate * const itable_evex06142[] = { + instrux + 7317, + instrux + 7318, + instrux + 7319, +}; + +static const struct itemplate * const itable_evex06143[] = { + instrux + 7320, +}; + +static const struct itemplate * const itable_evex0614C[] = { + instrux + 7349, + instrux + 7350, + instrux + 7351, + instrux + 7352, + instrux + 7353, + instrux + 7354, +}; + +static const struct itemplate * const itable_evex0614D[] = { + instrux + 7355, + instrux + 7356, +}; + +static const struct itemplate * const itable_evex0614E[] = { + instrux + 7367, + instrux + 7368, + instrux + 7369, +}; + +static const struct itemplate * const itable_evex0614F[] = { + instrux + 7370, + instrux + 7371, +}; + +static const struct itemplate * const itable_evex06196[] = { + instrux + 7181, + instrux + 7182, + instrux + 7183, + instrux + 7184, + instrux + 7185, + instrux + 7186, +}; + +static const struct itemplate * const itable_evex06197[] = { + instrux + 7199, + instrux + 7200, + instrux + 7201, + instrux + 7202, + instrux + 7203, + instrux + 7204, +}; + +static const struct itemplate * const itable_evex06198[] = { + instrux + 7217, + instrux + 7218, + instrux + 7219, + instrux + 7220, + instrux + 7221, + instrux + 7222, +}; + +static const struct itemplate * const itable_evex06199[] = { + instrux + 7253, + instrux + 7254, +}; + +static const struct itemplate * const itable_evex0619A[] = { + instrux + 7265, + instrux + 7266, + instrux + 7267, + instrux + 7268, + instrux + 7269, + instrux + 7270, +}; + +static const struct itemplate * const itable_evex0619B[] = { + instrux + 7301, + instrux + 7302, +}; + +static const struct itemplate * const itable_evex0619C[] = { + instrux + 7235, + instrux + 7236, + instrux + 7237, + instrux + 7238, + instrux + 7239, + instrux + 7240, +}; + +static const struct itemplate * const itable_evex0619D[] = { + instrux + 7259, + instrux + 7260, +}; + +static const struct itemplate * const itable_evex0619E[] = { + instrux + 7283, + instrux + 7284, + instrux + 7285, + instrux + 7286, + instrux + 7287, + instrux + 7288, +}; + +static const struct itemplate * const itable_evex0619F[] = { + instrux + 7307, + instrux + 7308, +}; + +static const struct itemplate * const itable_evex061A6[] = { + instrux + 7187, + instrux + 7188, + instrux + 7189, + instrux + 7190, + instrux + 7191, + instrux + 7192, +}; + +static const struct itemplate * const itable_evex061A7[] = { + instrux + 7205, + instrux + 7206, + instrux + 7207, + instrux + 7208, + instrux + 7209, + instrux + 7210, +}; + +static const struct itemplate * const itable_evex061A8[] = { + instrux + 7223, + instrux + 7224, + instrux + 7225, + instrux + 7226, + instrux + 7227, + instrux + 7228, +}; + +static const struct itemplate * const itable_evex061A9[] = { + instrux + 7255, + instrux + 7256, +}; + +static const struct itemplate * const itable_evex061AA[] = { + instrux + 7271, + instrux + 7272, + instrux + 7273, + instrux + 7274, + instrux + 7275, + instrux + 7276, +}; + +static const struct itemplate * const itable_evex061AB[] = { + instrux + 7303, + instrux + 7304, +}; + +static const struct itemplate * const itable_evex061AC[] = { + instrux + 7241, + instrux + 7242, + instrux + 7243, + instrux + 7244, + instrux + 7245, + instrux + 7246, +}; + +static const struct itemplate * const itable_evex061AD[] = { + instrux + 7261, + instrux + 7262, +}; + +static const struct itemplate * const itable_evex061AE[] = { + instrux + 7289, + instrux + 7290, + instrux + 7291, + instrux + 7292, + instrux + 7293, + instrux + 7294, +}; + +static const struct itemplate * const itable_evex061AF[] = { + instrux + 7309, + instrux + 7310, +}; + +static const struct itemplate * const itable_evex061B6[] = { + instrux + 7193, + instrux + 7194, + instrux + 7195, + instrux + 7196, + instrux + 7197, + instrux + 7198, +}; + +static const struct itemplate * const itable_evex061B7[] = { + instrux + 7211, + instrux + 7212, + instrux + 7213, + instrux + 7214, + instrux + 7215, + instrux + 7216, +}; + +static const struct itemplate * const itable_evex061B8[] = { + instrux + 7229, + instrux + 7230, + instrux + 7231, + instrux + 7232, + instrux + 7233, + instrux + 7234, +}; + +static const struct itemplate * const itable_evex061B9[] = { + instrux + 7257, + instrux + 7258, +}; + +static const struct itemplate * const itable_evex061BA[] = { + instrux + 7277, + instrux + 7278, + instrux + 7279, + instrux + 7280, + instrux + 7281, + instrux + 7282, +}; + +static const struct itemplate * const itable_evex061BB[] = { + instrux + 7305, + instrux + 7306, +}; + +static const struct itemplate * const itable_evex061BC[] = { + instrux + 7247, + instrux + 7248, + instrux + 7249, + instrux + 7250, + instrux + 7251, + instrux + 7252, +}; + +static const struct itemplate * const itable_evex061BD[] = { + instrux + 7263, + instrux + 7264, +}; + +static const struct itemplate * const itable_evex061BE[] = { + instrux + 7295, + instrux + 7296, + instrux + 7297, + instrux + 7298, + instrux + 7299, + instrux + 7300, +}; + +static const struct itemplate * const itable_evex061BF[] = { + instrux + 7311, + instrux + 7312, +}; + +static const struct itemplate * const itable_evex06256[] = { + instrux + 7155, + instrux + 7156, + instrux + 7157, + instrux + 7158, + instrux + 7159, + instrux + 7160, +}; + +static const struct itemplate * const itable_evex06257[] = { + instrux + 7163, + instrux + 7164, +}; + +static const struct itemplate * const itable_evex062D6[] = { + instrux + 7171, + instrux + 7172, + instrux + 7173, + instrux + 7174, + instrux + 7175, + instrux + 7176, +}; + +static const struct itemplate * const itable_evex062D7[] = { + instrux + 7179, + instrux + 7180, +}; + +static const struct itemplate * const itable_evex06356[] = { + instrux + 7149, + instrux + 7150, + instrux + 7151, + instrux + 7152, + instrux + 7153, + instrux + 7154, +}; + +static const struct itemplate * const itable_evex06357[] = { + instrux + 7161, + instrux + 7162, +}; + +static const struct itemplate * const itable_evex063D6[] = { + instrux + 7165, + instrux + 7166, + instrux + 7167, + instrux + 7168, + instrux + 7169, + instrux + 7170, +}; + +static const struct itemplate * const itable_evex063D7[] = { + instrux + 7177, + instrux + 7178, +}; + +static const struct itemplate * const itable_vex01010[] = { + instrux + 2746, + instrux + 2748, +}; + +static const struct itemplate * const itable_vex01011[] = { + instrux + 2747, + instrux + 2749, +}; + +static const struct itemplate * const itable_vex01012[] = { + instrux + 2694, + instrux + 2695, + instrux + 2707, + instrux + 2708, +}; + +static const struct itemplate * const itable_vex01013[] = { + instrux + 2709, +}; + +static const struct itemplate * const itable_vex01014[] = { + instrux + 3097, + instrux + 3098, + instrux + 3099, + instrux + 3100, +}; + +static const struct itemplate * const itable_vex01015[] = { + instrux + 3089, + instrux + 3090, + instrux + 3091, + instrux + 3092, +}; + +static const struct itemplate * const itable_vex01016[] = { + instrux + 2699, + instrux + 2700, + instrux + 2702, + instrux + 2703, +}; + +static const struct itemplate * const itable_vex01017[] = { + instrux + 2701, +}; + +static const struct itemplate * const itable_vex01028[] = { + instrux + 2670, + instrux + 2672, +}; + +static const struct itemplate * const itable_vex01029[] = { + instrux + 2671, + instrux + 2673, +}; + +static const struct itemplate * const itable_vex0102B[] = { + instrux + 2724, + instrux + 2725, +}; + +static const struct itemplate * const itable_vex0102E[] = { + instrux + 3084, +}; + +static const struct itemplate * const itable_vex0102F[] = { + instrux + 2546, +}; + +static const struct itemplate * const itable_vex01041[] = { + instrux + 4111, + instrux + 4112, +}; + +static const struct itemplate * const itable_vex01042[] = { + instrux + 4109, + instrux + 4110, +}; + +static const struct itemplate * const itable_vex01044[] = { + instrux + 4131, + instrux + 4132, +}; + +static const struct itemplate * const itable_vex01045[] = { + instrux + 4135, + instrux + 4136, +}; + +static const struct itemplate * const itable_vex01046[] = { + instrux + 4158, + instrux + 4159, +}; + +static const struct itemplate * const itable_vex01047[] = { + instrux + 4162, + instrux + 4163, +}; + +static const struct itemplate * const itable_vex0104A[] = { + instrux + 4103, + instrux + 4104, +}; + +static const struct itemplate * const itable_vex0104B[] = { + instrux + 4154, + instrux + 4155, +}; + +static const struct itemplate * const itable_vex01050[] = { + instrux + 2714, + instrux + 2715, + instrux + 2716, + instrux + 2717, +}; + +static const struct itemplate * const itable_vex01051[] = { + instrux + 3060, + instrux + 3061, +}; + +static const struct itemplate * const itable_vex01052[] = { + instrux + 3038, + instrux + 3039, +}; + +static const struct itemplate * const itable_vex01053[] = { + instrux + 3034, + instrux + 3035, +}; + +static const struct itemplate * const itable_vex01054[] = { + instrux + 1949, + instrux + 1950, + instrux + 1951, + instrux + 1952, +}; + +static const struct itemplate * const itable_vex01055[] = { + instrux + 1957, + instrux + 1958, + instrux + 1959, + instrux + 1960, +}; + +static const struct itemplate * const itable_vex01056[] = { + instrux + 2768, + instrux + 2769, + instrux + 2770, + instrux + 2771, +}; + +static const struct itemplate * const itable_vex01057[] = { + instrux + 3105, + instrux + 3106, + instrux + 3107, + instrux + 3108, +}; + +static const struct itemplate * const itable_vex01058[] = { + instrux + 1929, + instrux + 1930, + instrux + 1931, + instrux + 1932, +}; + +static const struct itemplate * const itable_vex01059[] = { + instrux + 2756, + instrux + 2757, + instrux + 2758, + instrux + 2759, +}; + +static const struct itemplate * const itable_vex0105A[] = { + instrux + 2561, + instrux + 2562, +}; + +static const struct itemplate * const itable_vex0105B[] = { + instrux + 2549, + instrux + 2550, +}; + +static const struct itemplate * const itable_vex0105C[] = { + instrux + 3071, + instrux + 3072, + instrux + 3073, + instrux + 3074, +}; + +static const struct itemplate * const itable_vex0105D[] = { + instrux + 2658, + instrux + 2659, + instrux + 2660, + instrux + 2661, +}; + +static const struct itemplate * const itable_vex0105E[] = { + instrux + 2593, + instrux + 2594, + instrux + 2595, + instrux + 2596, +}; + +static const struct itemplate * const itable_vex0105F[] = { + instrux + 2646, + instrux + 2647, + instrux + 2648, + instrux + 2649, +}; + +static const struct itemplate * const itable_vex01077[] = { + instrux + 3109, + instrux + 3110, +}; + +static const struct itemplate * const itable_vex01090[] = { + instrux + 4121, + instrux + 4125, +}; + +static const struct itemplate * const itable_vex01091[] = { + instrux + 4122, + instrux + 4126, +}; + +static const struct itemplate * const itable_vex01092[] = { + instrux + 4127, +}; + +static const struct itemplate * const itable_vex01093[] = { + instrux + 4128, +}; + +static const struct itemplate * const itable_vex01098[] = { + instrux + 4139, + instrux + 4140, +}; + +static const struct itemplate * const itable_vex01099[] = { + instrux + 4151, + instrux + 4152, +}; + +static const struct itemplate * const itable_vex010AE[] = { + instrux + 2632, + instrux + 3066, +}; + +static const struct itemplate * const itable_vex010C2[] = { + instrux + 2169, + instrux + 2170, + instrux + 2171, + instrux + 2172, + instrux + 2173, + instrux + 2174, + instrux + 2175, + instrux + 2176, + instrux + 2177, + instrux + 2178, + instrux + 2179, + instrux + 2180, + instrux + 2181, + instrux + 2182, + instrux + 2183, + instrux + 2184, + instrux + 2185, + instrux + 2186, + instrux + 2187, + instrux + 2188, + instrux + 2189, + instrux + 2190, + instrux + 2191, + instrux + 2192, + instrux + 2193, + instrux + 2194, + instrux + 2195, + instrux + 2196, + instrux + 2197, + instrux + 2198, + instrux + 2199, + instrux + 2200, + instrux + 2201, + instrux + 2202, + instrux + 2203, + instrux + 2204, + instrux + 2205, + instrux + 2206, + instrux + 2207, + instrux + 2208, + instrux + 2209, + instrux + 2210, + instrux + 2211, + instrux + 2212, + instrux + 2213, + instrux + 2214, + instrux + 2215, + instrux + 2216, + instrux + 2217, + instrux + 2218, + instrux + 2219, + instrux + 2220, + instrux + 2221, + instrux + 2222, + instrux + 2223, + instrux + 2224, + instrux + 2225, + instrux + 2226, + instrux + 2227, + instrux + 2228, + instrux + 2229, + instrux + 2230, + instrux + 2231, + instrux + 2232, + instrux + 2233, + instrux + 2234, + instrux + 2235, + instrux + 2236, + instrux + 2237, + instrux + 2238, + instrux + 2239, + instrux + 2240, + instrux + 2241, + instrux + 2242, + instrux + 2243, + instrux + 2244, + instrux + 2245, + instrux + 2246, + instrux + 2247, + instrux + 2248, + instrux + 2249, + instrux + 2250, + instrux + 2251, + instrux + 2252, + instrux + 2253, + instrux + 2254, + instrux + 2255, + instrux + 2256, + instrux + 2257, + instrux + 2258, + instrux + 2259, + instrux + 2260, + instrux + 2261, + instrux + 2262, + instrux + 2263, + instrux + 2264, + instrux + 2265, + instrux + 2266, + instrux + 2267, + instrux + 2268, + instrux + 2269, + instrux + 2270, + instrux + 2271, + instrux + 2272, + instrux + 2273, + instrux + 2274, + instrux + 2275, + instrux + 2276, + instrux + 2277, + instrux + 2278, + instrux + 2279, + instrux + 2280, + instrux + 2281, + instrux + 2282, + instrux + 2283, + instrux + 2284, + instrux + 2285, + instrux + 2286, + instrux + 2287, + instrux + 2288, + instrux + 2289, + instrux + 2290, + instrux + 2291, + instrux + 2292, + instrux + 2293, + instrux + 2294, + instrux + 2295, + instrux + 2296, + instrux + 2297, + instrux + 2298, + instrux + 2299, + instrux + 2300, + instrux + 2301, + instrux + 2302, + instrux + 2303, + instrux + 2304, + instrux + 2305, + instrux + 2306, + instrux + 2307, + instrux + 2308, + instrux + 2309, + instrux + 2310, + instrux + 2311, + instrux + 2312, + instrux + 2313, + instrux + 2314, + instrux + 2315, + instrux + 2316, + instrux + 2317, + instrux + 2318, + instrux + 2319, + instrux + 2320, + instrux + 2321, + instrux + 2322, + instrux + 2323, + instrux + 2324, + instrux + 2325, + instrux + 2326, + instrux + 2327, + instrux + 2328, + instrux + 2329, + instrux + 2330, + instrux + 2331, + instrux + 2332, + instrux + 2333, + instrux + 2334, + instrux + 2335, + instrux + 2336, + instrux + 2337, + instrux + 2338, + instrux + 2339, + instrux + 2340, + instrux + 2341, + instrux + 2342, + instrux + 2343, + instrux + 2344, + instrux + 2345, + instrux + 2346, + instrux + 2347, + instrux + 2348, + instrux + 2349, + instrux + 2350, + instrux + 2351, + instrux + 2352, + instrux + 2353, + instrux + 2354, + instrux + 2355, + instrux + 2356, +}; + +static const struct itemplate * const itable_vex010C6[] = { + instrux + 3054, + instrux + 3055, + instrux + 3056, + instrux + 3057, +}; + +static const struct itemplate * const itable_vex01110[] = { + instrux + 2742, + instrux + 2744, +}; + +static const struct itemplate * const itable_vex01111[] = { + instrux + 2743, + instrux + 2745, +}; + +static const struct itemplate * const itable_vex01112[] = { + instrux + 2704, + instrux + 2705, +}; + +static const struct itemplate * const itable_vex01113[] = { + instrux + 2706, +}; + +static const struct itemplate * const itable_vex01114[] = { + instrux + 3093, + instrux + 3094, + instrux + 3095, + instrux + 3096, +}; + +static const struct itemplate * const itable_vex01115[] = { + instrux + 3085, + instrux + 3086, + instrux + 3087, + instrux + 3088, +}; + +static const struct itemplate * const itable_vex01116[] = { + instrux + 2696, + instrux + 2697, +}; + +static const struct itemplate * const itable_vex01117[] = { + instrux + 2698, +}; + +static const struct itemplate * const itable_vex01128[] = { + instrux + 2666, + instrux + 2668, +}; + +static const struct itemplate * const itable_vex01129[] = { + instrux + 2667, + instrux + 2669, +}; + +static const struct itemplate * const itable_vex0112B[] = { + instrux + 2722, + instrux + 2723, +}; + +static const struct itemplate * const itable_vex0112E[] = { + instrux + 3083, +}; + +static const struct itemplate * const itable_vex0112F[] = { + instrux + 2545, +}; + +static const struct itemplate * const itable_vex01141[] = { + instrux + 4105, + instrux + 4106, +}; + +static const struct itemplate * const itable_vex01142[] = { + instrux + 4107, + instrux + 4108, +}; + +static const struct itemplate * const itable_vex01144[] = { + instrux + 4129, + instrux + 4130, +}; + +static const struct itemplate * const itable_vex01145[] = { + instrux + 4133, + instrux + 4134, +}; + +static const struct itemplate * const itable_vex01146[] = { + instrux + 4156, + instrux + 4157, +}; + +static const struct itemplate * const itable_vex01147[] = { + instrux + 4160, + instrux + 4161, +}; + +static const struct itemplate * const itable_vex0114A[] = { + instrux + 4101, + instrux + 4102, +}; + +static const struct itemplate * const itable_vex0114B[] = { + instrux + 4153, +}; + +static const struct itemplate * const itable_vex01150[] = { + instrux + 2710, + instrux + 2711, + instrux + 2712, + instrux + 2713, +}; + +static const struct itemplate * const itable_vex01151[] = { + instrux + 3058, + instrux + 3059, +}; + +static const struct itemplate * const itable_vex01154[] = { + instrux + 1945, + instrux + 1946, + instrux + 1947, + instrux + 1948, +}; + +static const struct itemplate * const itable_vex01155[] = { + instrux + 1953, + instrux + 1954, + instrux + 1955, + instrux + 1956, +}; + +static const struct itemplate * const itable_vex01156[] = { + instrux + 2764, + instrux + 2765, + instrux + 2766, + instrux + 2767, +}; + +static const struct itemplate * const itable_vex01157[] = { + instrux + 3101, + instrux + 3102, + instrux + 3103, + instrux + 3104, +}; + +static const struct itemplate * const itable_vex01158[] = { + instrux + 1925, + instrux + 1926, + instrux + 1927, + instrux + 1928, +}; + +static const struct itemplate * const itable_vex01159[] = { + instrux + 2752, + instrux + 2753, + instrux + 2754, + instrux + 2755, +}; + +static const struct itemplate * const itable_vex0115A[] = { + instrux + 2555, + instrux + 2556, + instrux + 2557, + instrux + 2558, +}; + +static const struct itemplate * const itable_vex0115B[] = { + instrux + 2559, + instrux + 2560, +}; + +static const struct itemplate * const itable_vex0115C[] = { + instrux + 3067, + instrux + 3068, + instrux + 3069, + instrux + 3070, +}; + +static const struct itemplate * const itable_vex0115D[] = { + instrux + 2654, + instrux + 2655, + instrux + 2656, + instrux + 2657, +}; + +static const struct itemplate * const itable_vex0115E[] = { + instrux + 2589, + instrux + 2590, + instrux + 2591, + instrux + 2592, +}; + +static const struct itemplate * const itable_vex0115F[] = { + instrux + 2642, + instrux + 2643, + instrux + 2644, + instrux + 2645, +}; + +static const struct itemplate * const itable_vex01160[] = { + instrux + 3024, + instrux + 3025, + instrux + 3885, + instrux + 3886, +}; + +static const struct itemplate * const itable_vex01161[] = { + instrux + 3026, + instrux + 3027, + instrux + 3887, + instrux + 3888, +}; + +static const struct itemplate * const itable_vex01162[] = { + instrux + 3028, + instrux + 3029, + instrux + 3889, + instrux + 3890, +}; + +static const struct itemplate * const itable_vex01163[] = { + instrux + 2775, + instrux + 2776, + instrux + 3682, + instrux + 3683, +}; + +static const struct itemplate * const itable_vex01164[] = { + instrux + 2825, + instrux + 2826, + instrux + 3728, + instrux + 3729, +}; + +static const struct itemplate * const itable_vex01165[] = { + instrux + 2827, + instrux + 2828, + instrux + 3730, + instrux + 3731, +}; + +static const struct itemplate * const itable_vex01166[] = { + instrux + 2829, + instrux + 2830, + instrux + 3732, + instrux + 3733, +}; + +static const struct itemplate * const itable_vex01167[] = { + instrux + 2779, + instrux + 2780, + instrux + 3688, + instrux + 3689, +}; + +static const struct itemplate * const itable_vex01168[] = { + instrux + 3016, + instrux + 3017, + instrux + 3877, + instrux + 3878, +}; + +static const struct itemplate * const itable_vex01169[] = { + instrux + 3018, + instrux + 3019, + instrux + 3879, + instrux + 3880, +}; + +static const struct itemplate * const itable_vex0116A[] = { + instrux + 3020, + instrux + 3021, + instrux + 3881, + instrux + 3882, +}; + +static const struct itemplate * const itable_vex0116B[] = { + instrux + 2777, + instrux + 2778, + instrux + 3684, + instrux + 3685, +}; + +static const struct itemplate * const itable_vex0116C[] = { + instrux + 3030, + instrux + 3031, + instrux + 3891, + instrux + 3892, +}; + +static const struct itemplate * const itable_vex0116D[] = { + instrux + 3022, + instrux + 3023, + instrux + 3883, + instrux + 3884, +}; + +static const struct itemplate * const itable_vex0116E[] = { + instrux + 2674, + instrux + 2678, +}; + +static const struct itemplate * const itable_vex0116F[] = { + instrux + 2682, + instrux + 2684, + instrux + 2686, +}; + +static const struct itemplate * const itable_vex01170[] = { + instrux + 2953, + instrux + 3816, +}; + +static const struct itemplate * const itable_vex01171[] = { + instrux + 2968, + instrux + 2969, + instrux + 2980, + instrux + 2981, + instrux + 2988, + instrux + 2989, + instrux + 3829, + instrux + 3830, + instrux + 3841, + instrux + 3842, + instrux + 3851, + instrux + 3852, +}; + +static const struct itemplate * const itable_vex01172[] = { + instrux + 2972, + instrux + 2973, + instrux + 2984, + instrux + 2985, + instrux + 2992, + instrux + 2993, + instrux + 3833, + instrux + 3834, + instrux + 3845, + instrux + 3846, + instrux + 3855, + instrux + 3856, +}; + +static const struct itemplate * const itable_vex01173[] = { + instrux + 2962, + instrux + 2963, + instrux + 2964, + instrux + 2965, + instrux + 2976, + instrux + 2977, + instrux + 2996, + instrux + 2997, + instrux + 3825, + instrux + 3826, + instrux + 3837, + instrux + 3838, + instrux + 3847, + instrux + 3848, + instrux + 3859, + instrux + 3860, +}; + +static const struct itemplate * const itable_vex01174[] = { + instrux + 2817, + instrux + 2818, + instrux + 3720, + instrux + 3721, +}; + +static const struct itemplate * const itable_vex01175[] = { + instrux + 2819, + instrux + 2820, + instrux + 3722, + instrux + 3723, +}; + +static const struct itemplate * const itable_vex01176[] = { + instrux + 2821, + instrux + 2822, + instrux + 3724, + instrux + 3725, +}; + +static const struct itemplate * const itable_vex0117C[] = { + instrux + 2609, + instrux + 2610, + instrux + 2611, + instrux + 2612, +}; + +static const struct itemplate * const itable_vex0117D[] = { + instrux + 2617, + instrux + 2618, + instrux + 2619, + instrux + 2620, +}; + +static const struct itemplate * const itable_vex0117E[] = { + instrux + 2675, + instrux + 2679, +}; + +static const struct itemplate * const itable_vex0117F[] = { + instrux + 2683, + instrux + 2685, + instrux + 2687, +}; + +static const struct itemplate * const itable_vex01190[] = { + instrux + 4113, + instrux + 4117, +}; + +static const struct itemplate * const itable_vex01191[] = { + instrux + 4114, + instrux + 4118, +}; + +static const struct itemplate * const itable_vex01192[] = { + instrux + 4115, +}; + +static const struct itemplate * const itable_vex01193[] = { + instrux + 4116, +}; + +static const struct itemplate * const itable_vex01198[] = { + instrux + 4137, + instrux + 4138, +}; + +static const struct itemplate * const itable_vex01199[] = { + instrux + 4149, + instrux + 4150, +}; + +static const struct itemplate * const itable_vex011C2[] = { + instrux + 1981, + instrux + 1982, + instrux + 1983, + instrux + 1984, + instrux + 1985, + instrux + 1986, + instrux + 1987, + instrux + 1988, + instrux + 1989, + instrux + 1990, + instrux + 1991, + instrux + 1992, + instrux + 1993, + instrux + 1994, + instrux + 1995, + instrux + 1996, + instrux + 1997, + instrux + 1998, + instrux + 1999, + instrux + 2000, + instrux + 2001, + instrux + 2002, + instrux + 2003, + instrux + 2004, + instrux + 2005, + instrux + 2006, + instrux + 2007, + instrux + 2008, + instrux + 2009, + instrux + 2010, + instrux + 2011, + instrux + 2012, + instrux + 2013, + instrux + 2014, + instrux + 2015, + instrux + 2016, + instrux + 2017, + instrux + 2018, + instrux + 2019, + instrux + 2020, + instrux + 2021, + instrux + 2022, + instrux + 2023, + instrux + 2024, + instrux + 2025, + instrux + 2026, + instrux + 2027, + instrux + 2028, + instrux + 2029, + instrux + 2030, + instrux + 2031, + instrux + 2032, + instrux + 2033, + instrux + 2034, + instrux + 2035, + instrux + 2036, + instrux + 2037, + instrux + 2038, + instrux + 2039, + instrux + 2040, + instrux + 2041, + instrux + 2042, + instrux + 2043, + instrux + 2044, + instrux + 2045, + instrux + 2046, + instrux + 2047, + instrux + 2048, + instrux + 2049, + instrux + 2050, + instrux + 2051, + instrux + 2052, + instrux + 2053, + instrux + 2054, + instrux + 2055, + instrux + 2056, + instrux + 2057, + instrux + 2058, + instrux + 2059, + instrux + 2060, + instrux + 2061, + instrux + 2062, + instrux + 2063, + instrux + 2064, + instrux + 2065, + instrux + 2066, + instrux + 2067, + instrux + 2068, + instrux + 2069, + instrux + 2070, + instrux + 2071, + instrux + 2072, + instrux + 2073, + instrux + 2074, + instrux + 2075, + instrux + 2076, + instrux + 2077, + instrux + 2078, + instrux + 2079, + instrux + 2080, + instrux + 2081, + instrux + 2082, + instrux + 2083, + instrux + 2084, + instrux + 2085, + instrux + 2086, + instrux + 2087, + instrux + 2088, + instrux + 2089, + instrux + 2090, + instrux + 2091, + instrux + 2092, + instrux + 2093, + instrux + 2094, + instrux + 2095, + instrux + 2096, + instrux + 2097, + instrux + 2098, + instrux + 2099, + instrux + 2100, + instrux + 2101, + instrux + 2102, + instrux + 2103, + instrux + 2104, + instrux + 2105, + instrux + 2106, + instrux + 2107, + instrux + 2108, + instrux + 2109, + instrux + 2110, + instrux + 2111, + instrux + 2112, + instrux + 2113, + instrux + 2114, + instrux + 2115, + instrux + 2116, + instrux + 2117, + instrux + 2118, + instrux + 2119, + instrux + 2120, + instrux + 2121, + instrux + 2122, + instrux + 2123, + instrux + 2124, + instrux + 2125, + instrux + 2126, + instrux + 2127, + instrux + 2128, + instrux + 2129, + instrux + 2130, + instrux + 2131, + instrux + 2132, + instrux + 2133, + instrux + 2134, + instrux + 2135, + instrux + 2136, + instrux + 2137, + instrux + 2138, + instrux + 2139, + instrux + 2140, + instrux + 2141, + instrux + 2142, + instrux + 2143, + instrux + 2144, + instrux + 2145, + instrux + 2146, + instrux + 2147, + instrux + 2148, + instrux + 2149, + instrux + 2150, + instrux + 2151, + instrux + 2152, + instrux + 2153, + instrux + 2154, + instrux + 2155, + instrux + 2156, + instrux + 2157, + instrux + 2158, + instrux + 2159, + instrux + 2160, + instrux + 2161, + instrux + 2162, + instrux + 2163, + instrux + 2164, + instrux + 2165, + instrux + 2166, + instrux + 2167, + instrux + 2168, +}; + +static const struct itemplate * const itable_vex011C4[] = { + instrux + 2877, + instrux + 2878, + instrux + 2879, + instrux + 2880, + instrux + 2881, + instrux + 2882, +}; + +static const struct itemplate * const itable_vex011C5[] = { + instrux + 2850, + instrux + 2851, +}; + +static const struct itemplate * const itable_vex011C6[] = { + instrux + 3050, + instrux + 3051, + instrux + 3052, + instrux + 3053, +}; + +static const struct itemplate * const itable_vex011D0[] = { + instrux + 1937, + instrux + 1938, + instrux + 1939, + instrux + 1940, +}; + +static const struct itemplate * const itable_vex011D1[] = { + instrux + 2986, + instrux + 2987, + instrux + 3849, + instrux + 3850, +}; + +static const struct itemplate * const itable_vex011D2[] = { + instrux + 2990, + instrux + 2991, + instrux + 3853, + instrux + 3854, +}; + +static const struct itemplate * const itable_vex011D3[] = { + instrux + 2994, + instrux + 2995, + instrux + 3857, + instrux + 3858, +}; + +static const struct itemplate * const itable_vex011D4[] = { + instrux + 2789, + instrux + 2790, + instrux + 3696, + instrux + 3697, +}; + +static const struct itemplate * const itable_vex011D5[] = { + instrux + 2939, + instrux + 2940, + instrux + 3804, + instrux + 3805, +}; + +static const struct itemplate * const itable_vex011D6[] = { + instrux + 2677, +}; + +static const struct itemplate * const itable_vex011D7[] = { + instrux + 2919, + instrux + 2920, + instrux + 3776, + instrux + 3777, +}; + +static const struct itemplate * const itable_vex011D8[] = { + instrux + 3012, + instrux + 3013, + instrux + 3873, + instrux + 3874, +}; + +static const struct itemplate * const itable_vex011D9[] = { + instrux + 3014, + instrux + 3015, + instrux + 3875, + instrux + 3876, +}; + +static const struct itemplate * const itable_vex011DA[] = { + instrux + 2913, + instrux + 2914, + instrux + 3770, + instrux + 3771, +}; + +static const struct itemplate * const itable_vex011DB[] = { + instrux + 2801, + instrux + 2802, + instrux + 3708, + instrux + 3709, +}; + +static const struct itemplate * const itable_vex011DC[] = { + instrux + 2795, + instrux + 2796, + instrux + 3702, + instrux + 3703, +}; + +static const struct itemplate * const itable_vex011DD[] = { + instrux + 2797, + instrux + 2798, + instrux + 3704, + instrux + 3705, +}; + +static const struct itemplate * const itable_vex011DE[] = { + instrux + 2901, + instrux + 2902, + instrux + 3758, + instrux + 3759, +}; + +static const struct itemplate * const itable_vex011DF[] = { + instrux + 2803, + instrux + 2804, + instrux + 3710, + instrux + 3711, +}; + +static const struct itemplate * const itable_vex011E0[] = { + instrux + 2805, + instrux + 2806, + instrux + 3712, + instrux + 3713, +}; + +static const struct itemplate * const itable_vex011E1[] = { + instrux + 2978, + instrux + 2979, + instrux + 3839, + instrux + 3840, +}; + +static const struct itemplate * const itable_vex011E2[] = { + instrux + 2982, + instrux + 2983, + instrux + 3843, + instrux + 3844, +}; + +static const struct itemplate * const itable_vex011E3[] = { + instrux + 2807, + instrux + 2808, + instrux + 3714, + instrux + 3715, +}; + +static const struct itemplate * const itable_vex011E4[] = { + instrux + 2933, + instrux + 2934, + instrux + 3800, + instrux + 3801, +}; + +static const struct itemplate * const itable_vex011E5[] = { + instrux + 2937, + instrux + 2938, + instrux + 3802, + instrux + 3803, +}; + +static const struct itemplate * const itable_vex011E6[] = { + instrux + 2579, + instrux + 2580, + instrux + 2581, + instrux + 2582, +}; + +static const struct itemplate * const itable_vex011E7[] = { + instrux + 2718, + instrux + 2719, + instrux + 2720, +}; + +static const struct itemplate * const itable_vex011E8[] = { + instrux + 3008, + instrux + 3009, + instrux + 3869, + instrux + 3870, +}; + +static const struct itemplate * const itable_vex011E9[] = { + instrux + 3010, + instrux + 3011, + instrux + 3871, + instrux + 3872, +}; + +static const struct itemplate * const itable_vex011EA[] = { + instrux + 2909, + instrux + 2910, + instrux + 3766, + instrux + 3767, +}; + +static const struct itemplate * const itable_vex011EB[] = { + instrux + 2947, + instrux + 2948, + instrux + 3810, + instrux + 3811, +}; + +static const struct itemplate * const itable_vex011EC[] = { + instrux + 2791, + instrux + 2792, + instrux + 3698, + instrux + 3699, +}; + +static const struct itemplate * const itable_vex011ED[] = { + instrux + 2793, + instrux + 2794, + instrux + 3700, + instrux + 3701, +}; + +static const struct itemplate * const itable_vex011EE[] = { + instrux + 2897, + instrux + 2898, + instrux + 3754, + instrux + 3755, +}; + +static const struct itemplate * const itable_vex011EF[] = { + instrux + 3032, + instrux + 3033, + instrux + 3893, + instrux + 3894, +}; + +static const struct itemplate * const itable_vex011F1[] = { + instrux + 2966, + instrux + 2967, + instrux + 3827, + instrux + 3828, +}; + +static const struct itemplate * const itable_vex011F2[] = { + instrux + 2970, + instrux + 2971, + instrux + 3831, + instrux + 3832, +}; + +static const struct itemplate * const itable_vex011F3[] = { + instrux + 2974, + instrux + 2975, + instrux + 3835, + instrux + 3836, +}; + +static const struct itemplate * const itable_vex011F4[] = { + instrux + 2943, + instrux + 2944, + instrux + 3808, + instrux + 3809, +}; + +static const struct itemplate * const itable_vex011F5[] = { + instrux + 2891, + instrux + 2892, + instrux + 3750, + instrux + 3751, +}; + +static const struct itemplate * const itable_vex011F6[] = { + instrux + 2949, + instrux + 2950, + instrux + 3812, + instrux + 3813, +}; + +static const struct itemplate * const itable_vex011F7[] = { + instrux + 2633, +}; + +static const struct itemplate * const itable_vex011F8[] = { + instrux + 3000, + instrux + 3001, + instrux + 3861, + instrux + 3862, +}; + +static const struct itemplate * const itable_vex011F9[] = { + instrux + 3002, + instrux + 3003, + instrux + 3863, + instrux + 3864, +}; + +static const struct itemplate * const itable_vex011FA[] = { + instrux + 3004, + instrux + 3005, + instrux + 3865, + instrux + 3866, +}; + +static const struct itemplate * const itable_vex011FB[] = { + instrux + 3006, + instrux + 3007, + instrux + 3867, + instrux + 3868, +}; + +static const struct itemplate * const itable_vex011FC[] = { + instrux + 2783, + instrux + 2784, + instrux + 3690, + instrux + 3691, +}; + +static const struct itemplate * const itable_vex011FD[] = { + instrux + 2785, + instrux + 2786, + instrux + 3692, + instrux + 3693, +}; + +static const struct itemplate * const itable_vex011FE[] = { + instrux + 2787, + instrux + 2788, + instrux + 3694, + instrux + 3695, +}; + +static const struct itemplate * const itable_vex01210[] = { + instrux + 2736, + instrux + 2737, + instrux + 2738, +}; + +static const struct itemplate * const itable_vex01211[] = { + instrux + 2739, + instrux + 2740, + instrux + 2741, +}; + +static const struct itemplate * const itable_vex01212[] = { + instrux + 2734, + instrux + 2735, +}; + +static const struct itemplate * const itable_vex01216[] = { + instrux + 2732, + instrux + 2733, +}; + +static const struct itemplate * const itable_vex0122A[] = { + instrux + 2571, + instrux + 2572, + instrux + 2573, + instrux + 2574, +}; + +static const struct itemplate * const itable_vex0122C[] = { + instrux + 2587, + instrux + 2588, +}; + +static const struct itemplate * const itable_vex0122D[] = { + instrux + 2577, + instrux + 2578, +}; + +static const struct itemplate * const itable_vex01251[] = { + instrux + 3064, + instrux + 3065, +}; + +static const struct itemplate * const itable_vex01252[] = { + instrux + 3040, + instrux + 3041, +}; + +static const struct itemplate * const itable_vex01253[] = { + instrux + 3036, + instrux + 3037, +}; + +static const struct itemplate * const itable_vex01258[] = { + instrux + 1935, + instrux + 1936, +}; + +static const struct itemplate * const itable_vex01259[] = { + instrux + 2762, + instrux + 2763, +}; + +static const struct itemplate * const itable_vex0125A[] = { + instrux + 2575, + instrux + 2576, +}; + +static const struct itemplate * const itable_vex0125B[] = { + instrux + 2583, + instrux + 2584, +}; + +static const struct itemplate * const itable_vex0125C[] = { + instrux + 3077, + instrux + 3078, +}; + +static const struct itemplate * const itable_vex0125D[] = { + instrux + 2664, + instrux + 2665, +}; + +static const struct itemplate * const itable_vex0125E[] = { + instrux + 2599, + instrux + 2600, +}; + +static const struct itemplate * const itable_vex0125F[] = { + instrux + 2652, + instrux + 2653, +}; + +static const struct itemplate * const itable_vex0126F[] = { + instrux + 2688, + instrux + 2690, + instrux + 2692, +}; + +static const struct itemplate * const itable_vex01270[] = { + instrux + 2954, + instrux + 3817, +}; + +static const struct itemplate * const itable_vex0127E[] = { + instrux + 2676, +}; + +static const struct itemplate * const itable_vex0127F[] = { + instrux + 2689, + instrux + 2691, + instrux + 2693, +}; + +static const struct itemplate * const itable_vex012C2[] = { + instrux + 2451, + instrux + 2452, + instrux + 2453, + instrux + 2454, + instrux + 2455, + instrux + 2456, + instrux + 2457, + instrux + 2458, + instrux + 2459, + instrux + 2460, + instrux + 2461, + instrux + 2462, + instrux + 2463, + instrux + 2464, + instrux + 2465, + instrux + 2466, + instrux + 2467, + instrux + 2468, + instrux + 2469, + instrux + 2470, + instrux + 2471, + instrux + 2472, + instrux + 2473, + instrux + 2474, + instrux + 2475, + instrux + 2476, + instrux + 2477, + instrux + 2478, + instrux + 2479, + instrux + 2480, + instrux + 2481, + instrux + 2482, + instrux + 2483, + instrux + 2484, + instrux + 2485, + instrux + 2486, + instrux + 2487, + instrux + 2488, + instrux + 2489, + instrux + 2490, + instrux + 2491, + instrux + 2492, + instrux + 2493, + instrux + 2494, + instrux + 2495, + instrux + 2496, + instrux + 2497, + instrux + 2498, + instrux + 2499, + instrux + 2500, + instrux + 2501, + instrux + 2502, + instrux + 2503, + instrux + 2504, + instrux + 2505, + instrux + 2506, + instrux + 2507, + instrux + 2508, + instrux + 2509, + instrux + 2510, + instrux + 2511, + instrux + 2512, + instrux + 2513, + instrux + 2514, + instrux + 2515, + instrux + 2516, + instrux + 2517, + instrux + 2518, + instrux + 2519, + instrux + 2520, + instrux + 2521, + instrux + 2522, + instrux + 2523, + instrux + 2524, + instrux + 2525, + instrux + 2526, + instrux + 2527, + instrux + 2528, + instrux + 2529, + instrux + 2530, + instrux + 2531, + instrux + 2532, + instrux + 2533, + instrux + 2534, + instrux + 2535, + instrux + 2536, + instrux + 2537, + instrux + 2538, + instrux + 2539, + instrux + 2540, + instrux + 2541, + instrux + 2542, + instrux + 2543, + instrux + 2544, +}; + +static const struct itemplate * const itable_vex012E6[] = { + instrux + 2547, + instrux + 2548, +}; + +static const struct itemplate * const itable_vex01310[] = { + instrux + 2726, + instrux + 2727, + instrux + 2728, +}; + +static const struct itemplate * const itable_vex01311[] = { + instrux + 2729, + instrux + 2730, + instrux + 2731, +}; + +static const struct itemplate * const itable_vex01312[] = { + instrux + 2680, + instrux + 2681, +}; + +static const struct itemplate * const itable_vex0132A[] = { + instrux + 2567, + instrux + 2568, + instrux + 2569, + instrux + 2570, +}; + +static const struct itemplate * const itable_vex0132C[] = { + instrux + 2585, + instrux + 2586, +}; + +static const struct itemplate * const itable_vex0132D[] = { + instrux + 2563, + instrux + 2564, +}; + +static const struct itemplate * const itable_vex01351[] = { + instrux + 3062, + instrux + 3063, +}; + +static const struct itemplate * const itable_vex01358[] = { + instrux + 1933, + instrux + 1934, +}; + +static const struct itemplate * const itable_vex01359[] = { + instrux + 2760, + instrux + 2761, +}; + +static const struct itemplate * const itable_vex0135A[] = { + instrux + 2565, + instrux + 2566, +}; + +static const struct itemplate * const itable_vex0135C[] = { + instrux + 3075, + instrux + 3076, +}; + +static const struct itemplate * const itable_vex0135D[] = { + instrux + 2662, + instrux + 2663, +}; + +static const struct itemplate * const itable_vex0135E[] = { + instrux + 2597, + instrux + 2598, +}; + +static const struct itemplate * const itable_vex0135F[] = { + instrux + 2650, + instrux + 2651, +}; + +static const struct itemplate * const itable_vex01370[] = { + instrux + 2955, + instrux + 3818, +}; + +static const struct itemplate * const itable_vex0137C[] = { + instrux + 2613, + instrux + 2614, + instrux + 2615, + instrux + 2616, +}; + +static const struct itemplate * const itable_vex0137D[] = { + instrux + 2621, + instrux + 2622, + instrux + 2623, + instrux + 2624, +}; + +static const struct itemplate * const itable_vex01392[] = { + instrux + 4119, + instrux + 4123, +}; + +static const struct itemplate * const itable_vex01393[] = { + instrux + 4120, + instrux + 4124, +}; + +static const struct itemplate * const itable_vex013C2[] = { + instrux + 2357, + instrux + 2358, + instrux + 2359, + instrux + 2360, + instrux + 2361, + instrux + 2362, + instrux + 2363, + instrux + 2364, + instrux + 2365, + instrux + 2366, + instrux + 2367, + instrux + 2368, + instrux + 2369, + instrux + 2370, + instrux + 2371, + instrux + 2372, + instrux + 2373, + instrux + 2374, + instrux + 2375, + instrux + 2376, + instrux + 2377, + instrux + 2378, + instrux + 2379, + instrux + 2380, + instrux + 2381, + instrux + 2382, + instrux + 2383, + instrux + 2384, + instrux + 2385, + instrux + 2386, + instrux + 2387, + instrux + 2388, + instrux + 2389, + instrux + 2390, + instrux + 2391, + instrux + 2392, + instrux + 2393, + instrux + 2394, + instrux + 2395, + instrux + 2396, + instrux + 2397, + instrux + 2398, + instrux + 2399, + instrux + 2400, + instrux + 2401, + instrux + 2402, + instrux + 2403, + instrux + 2404, + instrux + 2405, + instrux + 2406, + instrux + 2407, + instrux + 2408, + instrux + 2409, + instrux + 2410, + instrux + 2411, + instrux + 2412, + instrux + 2413, + instrux + 2414, + instrux + 2415, + instrux + 2416, + instrux + 2417, + instrux + 2418, + instrux + 2419, + instrux + 2420, + instrux + 2421, + instrux + 2422, + instrux + 2423, + instrux + 2424, + instrux + 2425, + instrux + 2426, + instrux + 2427, + instrux + 2428, + instrux + 2429, + instrux + 2430, + instrux + 2431, + instrux + 2432, + instrux + 2433, + instrux + 2434, + instrux + 2435, + instrux + 2436, + instrux + 2437, + instrux + 2438, + instrux + 2439, + instrux + 2440, + instrux + 2441, + instrux + 2442, + instrux + 2443, + instrux + 2444, + instrux + 2445, + instrux + 2446, + instrux + 2447, + instrux + 2448, + instrux + 2449, + instrux + 2450, +}; + +static const struct itemplate * const itable_vex013D0[] = { + instrux + 1941, + instrux + 1942, + instrux + 1943, + instrux + 1944, +}; + +static const struct itemplate * const itable_vex013E6[] = { + instrux + 2551, + instrux + 2552, + instrux + 2553, + instrux + 2554, +}; + +static const struct itemplate * const itable_vex013F0[] = { + instrux + 2629, + instrux + 2630, + instrux + 2631, +}; + +static const struct itemplate * const itable_vex02049[] = { + instrux + 7011, + instrux + 7020, +}; + +static const struct itemplate * const itable_vex02050[] = { + instrux + 4093, + instrux + 4094, +}; + +static const struct itemplate * const itable_vex02051[] = { + instrux + 4095, + instrux + 4096, +}; + +static const struct itemplate * const itable_vex0205E[] = { + instrux + 7017, +}; + +static const struct itemplate * const itable_vex020B0[] = { + instrux + 4081, + instrux + 4082, +}; + +static const struct itemplate * const itable_vex020F2[] = { + instrux + 3991, + instrux + 3992, +}; + +static const struct itemplate * const itable_vex020F3[] = { + instrux + 4001, + instrux + 4002, + instrux + 4011, + instrux + 4012, + instrux + 4013, + instrux + 4014, +}; + +static const struct itemplate * const itable_vex020F5[] = { + instrux + 4017, + instrux + 4018, +}; + +static const struct itemplate * const itable_vex020F7[] = { + instrux + 3993, + instrux + 3994, +}; + +static const struct itemplate * const itable_vex02100[] = { + instrux + 2951, + instrux + 2952, + instrux + 3814, + instrux + 3815, +}; + +static const struct itemplate * const itable_vex02101[] = { + instrux + 2858, + instrux + 2859, + instrux + 3736, + instrux + 3737, +}; + +static const struct itemplate * const itable_vex02102[] = { + instrux + 2860, + instrux + 2861, + instrux + 3738, + instrux + 3739, +}; + +static const struct itemplate * const itable_vex02103[] = { + instrux + 2862, + instrux + 2863, + instrux + 3740, + instrux + 3741, +}; + +static const struct itemplate * const itable_vex02104[] = { + instrux + 2893, + instrux + 2894, + instrux + 3748, + instrux + 3749, +}; + +static const struct itemplate * const itable_vex02105[] = { + instrux + 2865, + instrux + 2866, + instrux + 3742, + instrux + 3743, +}; + +static const struct itemplate * const itable_vex02106[] = { + instrux + 2867, + instrux + 2868, + instrux + 3744, + instrux + 3745, +}; + +static const struct itemplate * const itable_vex02107[] = { + instrux + 2869, + instrux + 2870, + instrux + 3746, + instrux + 3747, +}; + +static const struct itemplate * const itable_vex02108[] = { + instrux + 2956, + instrux + 2957, + instrux + 3819, + instrux + 3820, +}; + +static const struct itemplate * const itable_vex02109[] = { + instrux + 2958, + instrux + 2959, + instrux + 3821, + instrux + 3822, +}; + +static const struct itemplate * const itable_vex0210A[] = { + instrux + 2960, + instrux + 2961, + instrux + 3823, + instrux + 3824, +}; + +static const struct itemplate * const itable_vex0210B[] = { + instrux + 2935, + instrux + 2936, + instrux + 3798, + instrux + 3799, +}; + +static const struct itemplate * const itable_vex0210C[] = { + instrux + 2839, + instrux + 2840, + instrux + 2841, + instrux + 2842, +}; + +static const struct itemplate * const itable_vex0210D[] = { + instrux + 2833, + instrux + 2834, + instrux + 2835, + instrux + 2836, +}; + +static const struct itemplate * const itable_vex0210E[] = { + instrux + 3079, + instrux + 3080, +}; + +static const struct itemplate * const itable_vex0210F[] = { + instrux + 3081, + instrux + 3082, +}; + +static const struct itemplate * const itable_vex02113[] = { + instrux + 3369, + instrux + 3370, + instrux + 7052, + instrux + 7053, +}; + +static const struct itemplate * const itable_vex02116[] = { + instrux + 3923, + instrux + 3924, +}; + +static const struct itemplate * const itable_vex02117[] = { + instrux + 2998, + instrux + 2999, +}; + +static const struct itemplate * const itable_vex02118[] = { + instrux + 1977, + instrux + 1978, + instrux + 3896, + instrux + 3897, +}; + +static const struct itemplate * const itable_vex02119[] = { + instrux + 1979, + instrux + 3898, +}; + +static const struct itemplate * const itable_vex0211A[] = { + instrux + 1980, +}; + +static const struct itemplate * const itable_vex0211C[] = { + instrux + 2772, + instrux + 3679, +}; + +static const struct itemplate * const itable_vex0211D[] = { + instrux + 2773, + instrux + 3680, +}; + +static const struct itemplate * const itable_vex0211E[] = { + instrux + 2774, + instrux + 3681, +}; + +static const struct itemplate * const itable_vex02120[] = { + instrux + 2921, + instrux + 3778, +}; + +static const struct itemplate * const itable_vex02121[] = { + instrux + 2922, + instrux + 3779, + instrux + 3780, +}; + +static const struct itemplate * const itable_vex02122[] = { + instrux + 2923, + instrux + 3781, + instrux + 3782, +}; + +static const struct itemplate * const itable_vex02123[] = { + instrux + 2924, + instrux + 3783, +}; + +static const struct itemplate * const itable_vex02124[] = { + instrux + 2925, + instrux + 3784, + instrux + 3785, +}; + +static const struct itemplate * const itable_vex02125[] = { + instrux + 2926, + instrux + 3786, +}; + +static const struct itemplate * const itable_vex02128[] = { + instrux + 2945, + instrux + 2946, + instrux + 3796, + instrux + 3797, +}; + +static const struct itemplate * const itable_vex02129[] = { + instrux + 2823, + instrux + 2824, + instrux + 3726, + instrux + 3727, +}; + +static const struct itemplate * const itable_vex0212A[] = { + instrux + 2721, + instrux + 3895, +}; + +static const struct itemplate * const itable_vex0212B[] = { + instrux + 2781, + instrux + 2782, + instrux + 3686, + instrux + 3687, +}; + +static const struct itemplate * const itable_vex0212C[] = { + instrux + 2634, + instrux + 2635, +}; + +static const struct itemplate * const itable_vex0212D[] = { + instrux + 2638, + instrux + 2639, +}; + +static const struct itemplate * const itable_vex0212E[] = { + instrux + 2636, + instrux + 2637, +}; + +static const struct itemplate * const itable_vex0212F[] = { + instrux + 2640, + instrux + 2641, +}; + +static const struct itemplate * const itable_vex02130[] = { + instrux + 2927, + instrux + 3787, +}; + +static const struct itemplate * const itable_vex02131[] = { + instrux + 2928, + instrux + 3788, + instrux + 3789, +}; + +static const struct itemplate * const itable_vex02132[] = { + instrux + 2929, + instrux + 3790, + instrux + 3791, +}; + +static const struct itemplate * const itable_vex02133[] = { + instrux + 2930, + instrux + 3792, +}; + +static const struct itemplate * const itable_vex02134[] = { + instrux + 2931, + instrux + 3793, + instrux + 3794, +}; + +static const struct itemplate * const itable_vex02135[] = { + instrux + 2932, + instrux + 3795, +}; + +static const struct itemplate * const itable_vex02136[] = { + instrux + 3920, + instrux + 3921, +}; + +static const struct itemplate * const itable_vex02137[] = { + instrux + 2831, + instrux + 2832, + instrux + 3734, + instrux + 3735, +}; + +static const struct itemplate * const itable_vex02138[] = { + instrux + 2907, + instrux + 2908, + instrux + 3764, + instrux + 3765, +}; + +static const struct itemplate * const itable_vex02139[] = { + instrux + 2911, + instrux + 2912, + instrux + 3768, + instrux + 3769, +}; + +static const struct itemplate * const itable_vex0213A[] = { + instrux + 2915, + instrux + 2916, + instrux + 3772, + instrux + 3773, +}; + +static const struct itemplate * const itable_vex0213B[] = { + instrux + 2917, + instrux + 2918, + instrux + 3774, + instrux + 3775, +}; + +static const struct itemplate * const itable_vex0213C[] = { + instrux + 2895, + instrux + 2896, + instrux + 3752, + instrux + 3753, +}; + +static const struct itemplate * const itable_vex0213D[] = { + instrux + 2899, + instrux + 2900, + instrux + 3756, + instrux + 3757, +}; + +static const struct itemplate * const itable_vex0213E[] = { + instrux + 2903, + instrux + 2904, + instrux + 3760, + instrux + 3761, +}; + +static const struct itemplate * const itable_vex0213F[] = { + instrux + 2905, + instrux + 2906, + instrux + 3762, + instrux + 3763, +}; + +static const struct itemplate * const itable_vex02140[] = { + instrux + 2941, + instrux + 2942, + instrux + 3806, + instrux + 3807, +}; + +static const struct itemplate * const itable_vex02141[] = { + instrux + 2864, +}; + +static const struct itemplate * const itable_vex02145[] = { + instrux + 3959, + instrux + 3960, + instrux + 3961, + instrux + 3962, + instrux + 3963, + instrux + 3964, + instrux + 3965, + instrux + 3966, +}; + +static const struct itemplate * const itable_vex02146[] = { + instrux + 3955, + instrux + 3956, + instrux + 3957, + instrux + 3958, +}; + +static const struct itemplate * const itable_vex02147[] = { + instrux + 3947, + instrux + 3948, + instrux + 3949, + instrux + 3950, + instrux + 3951, + instrux + 3952, + instrux + 3953, + instrux + 3954, +}; + +static const struct itemplate * const itable_vex02149[] = { + instrux + 7012, +}; + +static const struct itemplate * const itable_vex0214B[] = { + instrux + 7019, +}; + +static const struct itemplate * const itable_vex02158[] = { + instrux + 3912, + instrux + 3913, + instrux + 3914, + instrux + 3915, +}; + +static const struct itemplate * const itable_vex02159[] = { + instrux + 3916, + instrux + 3917, + instrux + 3918, + instrux + 3919, +}; + +static const struct itemplate * const itable_vex0215A[] = { + instrux + 3899, +}; + +static const struct itemplate * const itable_vex0215E[] = { + instrux + 7016, +}; + +static const struct itemplate * const itable_vex02178[] = { + instrux + 3904, + instrux + 3905, + instrux + 3906, + instrux + 3907, +}; + +static const struct itemplate * const itable_vex02179[] = { + instrux + 3908, + instrux + 3909, + instrux + 3910, + instrux + 3911, +}; + +static const struct itemplate * const itable_vex0218C[] = { + instrux + 3931, + instrux + 3932, + instrux + 3933, + instrux + 3934, + instrux + 3935, + instrux + 3936, + instrux + 3937, + instrux + 3938, +}; + +static const struct itemplate * const itable_vex0218E[] = { + instrux + 3939, + instrux + 3940, + instrux + 3941, + instrux + 3942, + instrux + 3943, + instrux + 3944, + instrux + 3945, + instrux + 3946, +}; + +static const struct itemplate * const itable_vex02190[] = { + instrux + 3975, + instrux + 3977, + instrux + 3979, + instrux + 3981, +}; + +static const struct itemplate * const itable_vex02191[] = { + instrux + 3976, + instrux + 3978, + instrux + 3980, + instrux + 3982, +}; + +static const struct itemplate * const itable_vex02192[] = { + instrux + 3967, + instrux + 3969, + instrux + 3971, + instrux + 3973, +}; + +static const struct itemplate * const itable_vex02193[] = { + instrux + 3968, + instrux + 3970, + instrux + 3972, + instrux + 3974, +}; + +static const struct itemplate * const itable_vex02196[] = { + instrux + 3190, + instrux + 3191, + instrux + 3192, + instrux + 3193, + instrux + 3194, + instrux + 3195, + instrux + 3196, + instrux + 3197, +}; + +static const struct itemplate * const itable_vex02197[] = { + instrux + 3238, + instrux + 3239, + instrux + 3240, + instrux + 3241, + instrux + 3242, + instrux + 3243, + instrux + 3244, + instrux + 3245, +}; + +static const struct itemplate * const itable_vex02198[] = { + instrux + 3166, + instrux + 3167, + instrux + 3168, + instrux + 3169, + instrux + 3170, + instrux + 3171, + instrux + 3172, + instrux + 3173, +}; + +static const struct itemplate * const itable_vex02199[] = { + instrux + 3310, + instrux + 3311, + instrux + 3312, + instrux + 3313, +}; + +static const struct itemplate * const itable_vex0219A[] = { + instrux + 3214, + instrux + 3215, + instrux + 3216, + instrux + 3217, + instrux + 3218, + instrux + 3219, + instrux + 3220, + instrux + 3221, +}; + +static const struct itemplate * const itable_vex0219B[] = { + instrux + 3322, + instrux + 3323, + instrux + 3324, + instrux + 3325, +}; + +static const struct itemplate * const itable_vex0219C[] = { + instrux + 3262, + instrux + 3263, + instrux + 3264, + instrux + 3265, + instrux + 3266, + instrux + 3267, + instrux + 3268, + instrux + 3269, +}; + +static const struct itemplate * const itable_vex0219D[] = { + instrux + 3334, + instrux + 3335, + instrux + 3336, + instrux + 3337, +}; + +static const struct itemplate * const itable_vex0219E[] = { + instrux + 3286, + instrux + 3287, + instrux + 3288, + instrux + 3289, + instrux + 3290, + instrux + 3291, + instrux + 3292, + instrux + 3293, +}; + +static const struct itemplate * const itable_vex0219F[] = { + instrux + 3346, + instrux + 3347, + instrux + 3348, + instrux + 3349, +}; + +static const struct itemplate * const itable_vex021A6[] = { + instrux + 3198, + instrux + 3199, + instrux + 3200, + instrux + 3201, + instrux + 3202, + instrux + 3203, + instrux + 3204, + instrux + 3205, +}; + +static const struct itemplate * const itable_vex021A7[] = { + instrux + 3246, + instrux + 3247, + instrux + 3248, + instrux + 3249, + instrux + 3250, + instrux + 3251, + instrux + 3252, + instrux + 3253, +}; + +static const struct itemplate * const itable_vex021A8[] = { + instrux + 3174, + instrux + 3175, + instrux + 3176, + instrux + 3177, + instrux + 3178, + instrux + 3179, + instrux + 3180, + instrux + 3181, +}; + +static const struct itemplate * const itable_vex021A9[] = { + instrux + 3314, + instrux + 3315, + instrux + 3316, + instrux + 3317, +}; + +static const struct itemplate * const itable_vex021AA[] = { + instrux + 3222, + instrux + 3223, + instrux + 3224, + instrux + 3225, + instrux + 3226, + instrux + 3227, + instrux + 3228, + instrux + 3229, +}; + +static const struct itemplate * const itable_vex021AB[] = { + instrux + 3326, + instrux + 3327, + instrux + 3328, + instrux + 3329, +}; + +static const struct itemplate * const itable_vex021AC[] = { + instrux + 3270, + instrux + 3271, + instrux + 3272, + instrux + 3273, + instrux + 3274, + instrux + 3275, + instrux + 3276, + instrux + 3277, +}; + +static const struct itemplate * const itable_vex021AD[] = { + instrux + 3338, + instrux + 3339, + instrux + 3340, + instrux + 3341, +}; + +static const struct itemplate * const itable_vex021AE[] = { + instrux + 3294, + instrux + 3295, + instrux + 3296, + instrux + 3297, + instrux + 3298, + instrux + 3299, + instrux + 3300, + instrux + 3301, +}; + +static const struct itemplate * const itable_vex021AF[] = { + instrux + 3350, + instrux + 3351, + instrux + 3352, + instrux + 3353, +}; + +static const struct itemplate * const itable_vex021B0[] = { + instrux + 4077, + instrux + 4078, +}; + +static const struct itemplate * const itable_vex021B1[] = { + instrux + 4073, + instrux + 4074, +}; + +static const struct itemplate * const itable_vex021B4[] = { + instrux + 4099, + instrux + 4100, +}; + +static const struct itemplate * const itable_vex021B5[] = { + instrux + 4097, + instrux + 4098, +}; + +static const struct itemplate * const itable_vex021B6[] = { + instrux + 3206, + instrux + 3207, + instrux + 3208, + instrux + 3209, + instrux + 3210, + instrux + 3211, + instrux + 3212, + instrux + 3213, +}; + +static const struct itemplate * const itable_vex021B7[] = { + instrux + 3254, + instrux + 3255, + instrux + 3256, + instrux + 3257, + instrux + 3258, + instrux + 3259, + instrux + 3260, + instrux + 3261, +}; + +static const struct itemplate * const itable_vex021B8[] = { + instrux + 3182, + instrux + 3183, + instrux + 3184, + instrux + 3185, + instrux + 3186, + instrux + 3187, + instrux + 3188, + instrux + 3189, +}; + +static const struct itemplate * const itable_vex021B9[] = { + instrux + 3318, + instrux + 3319, + instrux + 3320, + instrux + 3321, +}; + +static const struct itemplate * const itable_vex021BA[] = { + instrux + 3230, + instrux + 3231, + instrux + 3232, + instrux + 3233, + instrux + 3234, + instrux + 3235, + instrux + 3236, + instrux + 3237, +}; + +static const struct itemplate * const itable_vex021BB[] = { + instrux + 3330, + instrux + 3331, + instrux + 3332, + instrux + 3333, +}; + +static const struct itemplate * const itable_vex021BC[] = { + instrux + 3278, + instrux + 3279, + instrux + 3280, + instrux + 3281, + instrux + 3282, + instrux + 3283, + instrux + 3284, + instrux + 3285, +}; + +static const struct itemplate * const itable_vex021BD[] = { + instrux + 3342, + instrux + 3343, + instrux + 3344, + instrux + 3345, +}; + +static const struct itemplate * const itable_vex021BE[] = { + instrux + 3302, + instrux + 3303, + instrux + 3304, + instrux + 3305, + instrux + 3306, + instrux + 3307, + instrux + 3308, + instrux + 3309, +}; + +static const struct itemplate * const itable_vex021BF[] = { + instrux + 3354, + instrux + 3355, + instrux + 3356, + instrux + 3357, +}; + +static const struct itemplate * const itable_vex021CF[] = { + instrux + 6817, + instrux + 6818, + instrux + 6819, + instrux + 6820, +}; + +static const struct itemplate * const itable_vex021DB[] = { + instrux + 1891, +}; + +static const struct itemplate * const itable_vex021DC[] = { + instrux + 1883, + instrux + 1884, + instrux + 1893, + instrux + 1894, +}; + +static const struct itemplate * const itable_vex021DD[] = { + instrux + 1885, + instrux + 1886, + instrux + 1895, + instrux + 1896, +}; + +static const struct itemplate * const itable_vex021DE[] = { + instrux + 1887, + instrux + 1888, + instrux + 1897, + instrux + 1898, +}; + +static const struct itemplate * const itable_vex021DF[] = { + instrux + 1889, + instrux + 1890, + instrux + 1899, + instrux + 1900, +}; + +static const struct itemplate * const itable_vex021E0[] = { + instrux + 7416, + instrux + 7432, +}; + +static const struct itemplate * const itable_vex021E1[] = { + instrux + 7413, + instrux + 7429, +}; + +static const struct itemplate * const itable_vex021E2[] = { + instrux + 7406, + instrux + 7422, +}; + +static const struct itemplate * const itable_vex021E3[] = { + instrux + 7410, + instrux + 7426, +}; + +static const struct itemplate * const itable_vex021E4[] = { + instrux + 7420, + instrux + 7436, +}; + +static const struct itemplate * const itable_vex021E5[] = { + instrux + 7415, + instrux + 7431, +}; + +static const struct itemplate * const itable_vex021E6[] = { + instrux + 7409, + instrux + 7425, +}; + +static const struct itemplate * const itable_vex021E7[] = { + instrux + 7405, + instrux + 7421, +}; + +static const struct itemplate * const itable_vex021E8[] = { + instrux + 7419, + instrux + 7435, +}; + +static const struct itemplate * const itable_vex021E9[] = { + instrux + 7414, + instrux + 7430, +}; + +static const struct itemplate * const itable_vex021EA[] = { + instrux + 7417, + instrux + 7433, +}; + +static const struct itemplate * const itable_vex021EB[] = { + instrux + 7418, + instrux + 7434, +}; + +static const struct itemplate * const itable_vex021EC[] = { + instrux + 7408, + instrux + 7424, +}; + +static const struct itemplate * const itable_vex021ED[] = { + instrux + 7412, + instrux + 7428, +}; + +static const struct itemplate * const itable_vex021EE[] = { + instrux + 7411, + instrux + 7427, +}; + +static const struct itemplate * const itable_vex021EF[] = { + instrux + 7407, + instrux + 7423, +}; + +static const struct itemplate * const itable_vex021F7[] = { + instrux + 4029, + instrux + 4030, +}; + +static const struct itemplate * const itable_vex0224B[] = { + instrux + 7021, +}; + +static const struct itemplate * const itable_vex02250[] = { + instrux + 4089, + instrux + 4090, +}; + +static const struct itemplate * const itable_vex02251[] = { + instrux + 4091, + instrux + 4092, +}; + +static const struct itemplate * const itable_vex0225C[] = { + instrux + 7013, +}; + +static const struct itemplate * const itable_vex0225E[] = { + instrux + 7015, +}; + +static const struct itemplate * const itable_vex02272[] = { + instrux + 4083, + instrux + 4084, +}; + +static const struct itemplate * const itable_vex022B0[] = { + instrux + 4075, + instrux + 4076, +}; + +static const struct itemplate * const itable_vex022B1[] = { + instrux + 4071, + instrux + 4072, +}; + +static const struct itemplate * const itable_vex022F5[] = { + instrux + 4023, + instrux + 4024, +}; + +static const struct itemplate * const itable_vex022F7[] = { + instrux + 4027, + instrux + 4028, +}; + +static const struct itemplate * const itable_vex02349[] = { + instrux + 7022, +}; + +static const struct itemplate * const itable_vex0234B[] = { + instrux + 7018, +}; + +static const struct itemplate * const itable_vex02350[] = { + instrux + 4085, + instrux + 4086, +}; + +static const struct itemplate * const itable_vex02351[] = { + instrux + 4087, + instrux + 4088, +}; + +static const struct itemplate * const itable_vex0235E[] = { + instrux + 7014, +}; + +static const struct itemplate * const itable_vex023B0[] = { + instrux + 4079, + instrux + 4080, +}; + +static const struct itemplate * const itable_vex023F5[] = { + instrux + 4021, + instrux + 4022, +}; + +static const struct itemplate * const itable_vex023F6[] = { + instrux + 4019, + instrux + 4020, +}; + +static const struct itemplate * const itable_vex023F7[] = { + instrux + 4031, + instrux + 4032, +}; + +static const struct itemplate * const itable_vex03100[] = { + instrux + 3925, +}; + +static const struct itemplate * const itable_vex03101[] = { + instrux + 3922, +}; + +static const struct itemplate * const itable_vex03102[] = { + instrux + 3900, + instrux + 3901, + instrux + 3902, + instrux + 3903, +}; + +static const struct itemplate * const itable_vex03104[] = { + instrux + 2843, + instrux + 2844, +}; + +static const struct itemplate * const itable_vex03105[] = { + instrux + 2837, + instrux + 2838, +}; + +static const struct itemplate * const itable_vex03106[] = { + instrux + 2845, + instrux + 2846, +}; + +static const struct itemplate * const itable_vex03108[] = { + instrux + 3044, + instrux + 3045, +}; + +static const struct itemplate * const itable_vex03109[] = { + instrux + 3042, + instrux + 3043, +}; + +static const struct itemplate * const itable_vex0310A[] = { + instrux + 3048, + instrux + 3049, +}; + +static const struct itemplate * const itable_vex0310B[] = { + instrux + 3046, + instrux + 3047, +}; + +static const struct itemplate * const itable_vex0310C[] = { + instrux + 1965, + instrux + 1966, + instrux + 1967, + instrux + 1968, +}; + +static const struct itemplate * const itable_vex0310D[] = { + instrux + 1961, + instrux + 1962, + instrux + 1963, + instrux + 1964, +}; + +static const struct itemplate * const itable_vex0310E[] = { + instrux + 2811, + instrux + 2812, + instrux + 3718, + instrux + 3719, +}; + +static const struct itemplate * const itable_vex0310F[] = { + instrux + 2799, + instrux + 2800, + instrux + 3706, + instrux + 3707, +}; + +static const struct itemplate * const itable_vex03114[] = { + instrux + 2847, + instrux + 2848, + instrux + 2849, +}; + +static const struct itemplate * const itable_vex03115[] = { + instrux + 2852, + instrux + 2853, + instrux + 2854, +}; + +static const struct itemplate * const itable_vex03116[] = { + instrux + 2855, + instrux + 2856, + instrux + 2857, +}; + +static const struct itemplate * const itable_vex03117[] = { + instrux + 2608, +}; + +static const struct itemplate * const itable_vex03118[] = { + instrux + 2625, + instrux + 2626, +}; + +static const struct itemplate * const itable_vex03119[] = { + instrux + 2607, +}; + +static const struct itemplate * const itable_vex0311D[] = { + instrux + 3371, + instrux + 3372, + instrux + 7075, + instrux + 7076, +}; + +static const struct itemplate * const itable_vex03120[] = { + instrux + 2871, + instrux + 2872, + instrux + 2873, + instrux + 2874, + instrux + 2875, + instrux + 2876, +}; + +static const struct itemplate * const itable_vex03121[] = { + instrux + 2627, + instrux + 2628, +}; + +static const struct itemplate * const itable_vex03122[] = { + instrux + 2883, + instrux + 2884, + instrux + 2885, + instrux + 2886, + instrux + 2887, + instrux + 2888, + instrux + 2889, + instrux + 2890, +}; + +static const struct itemplate * const itable_vex03130[] = { + instrux + 4145, + instrux + 4148, +}; + +static const struct itemplate * const itable_vex03131[] = { + instrux + 4146, + instrux + 4147, +}; + +static const struct itemplate * const itable_vex03132[] = { + instrux + 4141, + instrux + 4144, +}; + +static const struct itemplate * const itable_vex03133[] = { + instrux + 4142, + instrux + 4143, +}; + +static const struct itemplate * const itable_vex03138[] = { + instrux + 3929, + instrux + 3930, +}; + +static const struct itemplate * const itable_vex03139[] = { + instrux + 3928, +}; + +static const struct itemplate * const itable_vex03140[] = { + instrux + 2603, + instrux + 2604, + instrux + 2605, + instrux + 2606, +}; + +static const struct itemplate * const itable_vex03141[] = { + instrux + 2601, + instrux + 2602, +}; + +static const struct itemplate * const itable_vex03142[] = { + instrux + 2750, + instrux + 2751, + instrux + 3677, + instrux + 3678, +}; + +static const struct itemplate * const itable_vex03144[] = { + instrux + 3116, + instrux + 3117, + instrux + 3118, + instrux + 3119, + instrux + 3120, + instrux + 3121, + instrux + 3122, + instrux + 3123, + instrux + 3124, + instrux + 3125, + instrux + 3126, + instrux + 3127, + instrux + 3128, + instrux + 3129, + instrux + 3130, + instrux + 3131, + instrux + 3132, + instrux + 3133, + instrux + 3134, + instrux + 3135, +}; + +static const struct itemplate * const itable_vex03146[] = { + instrux + 3926, + instrux + 3927, +}; + +static const struct itemplate * const itable_vex0314A[] = { + instrux + 1973, + instrux + 1974, + instrux + 1975, + instrux + 1976, +}; + +static const struct itemplate * const itable_vex0314B[] = { + instrux + 1969, + instrux + 1970, + instrux + 1971, + instrux + 1972, +}; + +static const struct itemplate * const itable_vex0314C[] = { + instrux + 2809, + instrux + 2810, + instrux + 3716, + instrux + 3717, +}; + +static const struct itemplate * const itable_vex0315C[] = { + instrux + 3431, + instrux + 3432, + instrux + 3433, + instrux + 3434, + instrux + 3435, + instrux + 3436, + instrux + 3437, + instrux + 3438, +}; + +static const struct itemplate * const itable_vex0315D[] = { + instrux + 3423, + instrux + 3424, + instrux + 3425, + instrux + 3426, + instrux + 3427, + instrux + 3428, + instrux + 3429, + instrux + 3430, +}; + +static const struct itemplate * const itable_vex0315E[] = { + instrux + 3447, + instrux + 3448, + instrux + 3449, + instrux + 3450, + instrux + 3451, + instrux + 3452, + instrux + 3453, + instrux + 3454, +}; + +static const struct itemplate * const itable_vex0315F[] = { + instrux + 3439, + instrux + 3440, + instrux + 3441, + instrux + 3442, + instrux + 3443, + instrux + 3444, + instrux + 3445, + instrux + 3446, +}; + +static const struct itemplate * const itable_vex03160[] = { + instrux + 2814, +}; + +static const struct itemplate * const itable_vex03161[] = { + instrux + 2813, +}; + +static const struct itemplate * const itable_vex03162[] = { + instrux + 2816, +}; + +static const struct itemplate * const itable_vex03163[] = { + instrux + 2815, +}; + +static const struct itemplate * const itable_vex03168[] = { + instrux + 3407, + instrux + 3408, + instrux + 3409, + instrux + 3410, + instrux + 3411, + instrux + 3412, + instrux + 3413, + instrux + 3414, +}; + +static const struct itemplate * const itable_vex03169[] = { + instrux + 3399, + instrux + 3400, + instrux + 3401, + instrux + 3402, + instrux + 3403, + instrux + 3404, + instrux + 3405, + instrux + 3406, +}; + +static const struct itemplate * const itable_vex0316A[] = { + instrux + 3419, + instrux + 3420, + instrux + 3421, + instrux + 3422, +}; + +static const struct itemplate * const itable_vex0316B[] = { + instrux + 3415, + instrux + 3416, + instrux + 3417, + instrux + 3418, +}; + +static const struct itemplate * const itable_vex0316C[] = { + instrux + 3463, + instrux + 3464, + instrux + 3465, + instrux + 3466, + instrux + 3467, + instrux + 3468, + instrux + 3469, + instrux + 3470, +}; + +static const struct itemplate * const itable_vex0316D[] = { + instrux + 3455, + instrux + 3456, + instrux + 3457, + instrux + 3458, + instrux + 3459, + instrux + 3460, + instrux + 3461, + instrux + 3462, +}; + +static const struct itemplate * const itable_vex0316E[] = { + instrux + 3475, + instrux + 3476, + instrux + 3477, + instrux + 3478, +}; + +static const struct itemplate * const itable_vex0316F[] = { + instrux + 3471, + instrux + 3472, + instrux + 3473, + instrux + 3474, +}; + +static const struct itemplate * const itable_vex03178[] = { + instrux + 3487, + instrux + 3488, + instrux + 3489, + instrux + 3490, + instrux + 3491, + instrux + 3492, + instrux + 3493, + instrux + 3494, +}; + +static const struct itemplate * const itable_vex03179[] = { + instrux + 3479, + instrux + 3480, + instrux + 3481, + instrux + 3482, + instrux + 3483, + instrux + 3484, + instrux + 3485, + instrux + 3486, +}; + +static const struct itemplate * const itable_vex0317A[] = { + instrux + 3499, + instrux + 3500, + instrux + 3501, + instrux + 3502, +}; + +static const struct itemplate * const itable_vex0317B[] = { + instrux + 3495, + instrux + 3496, + instrux + 3497, + instrux + 3498, +}; + +static const struct itemplate * const itable_vex0317C[] = { + instrux + 3511, + instrux + 3512, + instrux + 3513, + instrux + 3514, + instrux + 3515, + instrux + 3516, + instrux + 3517, + instrux + 3518, +}; + +static const struct itemplate * const itable_vex0317D[] = { + instrux + 3503, + instrux + 3504, + instrux + 3505, + instrux + 3506, + instrux + 3507, + instrux + 3508, + instrux + 3509, + instrux + 3510, +}; + +static const struct itemplate * const itable_vex0317E[] = { + instrux + 3523, + instrux + 3524, + instrux + 3525, + instrux + 3526, +}; + +static const struct itemplate * const itable_vex0317F[] = { + instrux + 3519, + instrux + 3520, + instrux + 3521, + instrux + 3522, +}; + +static const struct itemplate * const itable_vex031CE[] = { + instrux + 6806, + instrux + 6807, + instrux + 6808, + instrux + 6809, +}; + +static const struct itemplate * const itable_vex031CF[] = { + instrux + 6795, + instrux + 6796, + instrux + 6797, + instrux + 6798, +}; + +static const struct itemplate * const itable_vex031DF[] = { + instrux + 1892, +}; + +static const struct itemplate * const itable_vex033F0[] = { + instrux + 4025, + instrux + 4026, +}; + +static const struct itemplate * const itable_xop08085[] = { + instrux + 3607, + instrux + 3608, +}; + +static const struct itemplate * const itable_xop08086[] = { + instrux + 3605, + instrux + 3606, +}; + +static const struct itemplate * const itable_xop08087[] = { + instrux + 3603, + instrux + 3604, +}; + +static const struct itemplate * const itable_xop0808E[] = { + instrux + 3599, + instrux + 3600, +}; + +static const struct itemplate * const itable_xop0808F[] = { + instrux + 3601, + instrux + 3602, +}; + +static const struct itemplate * const itable_xop08095[] = { + instrux + 3611, + instrux + 3612, +}; + +static const struct itemplate * const itable_xop08096[] = { + instrux + 3609, + instrux + 3610, +}; + +static const struct itemplate * const itable_xop08097[] = { + instrux + 3597, + instrux + 3598, +}; + +static const struct itemplate * const itable_xop0809E[] = { + instrux + 3593, + instrux + 3594, +}; + +static const struct itemplate * const itable_xop0809F[] = { + instrux + 3595, + instrux + 3596, +}; + +static const struct itemplate * const itable_xop080A2[] = { + instrux + 3539, + instrux + 3540, + instrux + 3541, + instrux + 3542, + instrux + 3543, + instrux + 3544, + instrux + 3545, + instrux + 3546, +}; + +static const struct itemplate * const itable_xop080A3[] = { + instrux + 3617, + instrux + 3618, + instrux + 3619, + instrux + 3620, +}; + +static const struct itemplate * const itable_xop080A6[] = { + instrux + 3613, + instrux + 3614, +}; + +static const struct itemplate * const itable_xop080B6[] = { + instrux + 3615, + instrux + 3616, +}; + +static const struct itemplate * const itable_xop080C0[] = { + instrux + 3625, + instrux + 3626, +}; + +static const struct itemplate * const itable_xop080C1[] = { + instrux + 3643, + instrux + 3644, +}; + +static const struct itemplate * const itable_xop080C2[] = { + instrux + 3631, + instrux + 3632, +}; + +static const struct itemplate * const itable_xop080C3[] = { + instrux + 3637, + instrux + 3638, +}; + +static const struct itemplate * const itable_xop080CC[] = { + instrux + 3547, + instrux + 3548, +}; + +static const struct itemplate * const itable_xop080CD[] = { + instrux + 3561, + instrux + 3562, +}; + +static const struct itemplate * const itable_xop080CE[] = { + instrux + 3549, + instrux + 3550, +}; + +static const struct itemplate * const itable_xop080CF[] = { + instrux + 3551, + instrux + 3552, +}; + +static const struct itemplate * const itable_xop080EC[] = { + instrux + 3553, + instrux + 3554, +}; + +static const struct itemplate * const itable_xop080ED[] = { + instrux + 3559, + instrux + 3560, +}; + +static const struct itemplate * const itable_xop080EE[] = { + instrux + 3555, + instrux + 3556, +}; + +static const struct itemplate * const itable_xop080EF[] = { + instrux + 3557, + instrux + 3558, +}; + +static const struct itemplate * const itable_xop09001[] = { + instrux + 3999, + instrux + 4000, + instrux + 4003, + instrux + 4004, + instrux + 4005, + instrux + 4006, + instrux + 4007, + instrux + 4008, + instrux + 4015, + instrux + 4016, + instrux + 4036, + instrux + 4037, + instrux + 4038, + instrux + 4039, +}; + +static const struct itemplate * const itable_xop09002[] = { + instrux + 3997, + instrux + 3998, + instrux + 4009, + instrux + 4010, +}; + +static const struct itemplate * const itable_xop09012[] = { + instrux + 3391, + instrux + 3392, + instrux + 3393, + instrux + 3394, +}; + +static const struct itemplate * const itable_xop09080[] = { + instrux + 3531, + instrux + 3532, + instrux + 3533, + instrux + 3534, +}; + +static const struct itemplate * const itable_xop09081[] = { + instrux + 3527, + instrux + 3528, + instrux + 3529, + instrux + 3530, +}; + +static const struct itemplate * const itable_xop09082[] = { + instrux + 3537, + instrux + 3538, +}; + +static const struct itemplate * const itable_xop09083[] = { + instrux + 3535, + instrux + 3536, +}; + +static const struct itemplate * const itable_xop09090[] = { + instrux + 3621, + instrux + 3622, + instrux + 3623, + instrux + 3624, +}; + +static const struct itemplate * const itable_xop09091[] = { + instrux + 3639, + instrux + 3640, + instrux + 3641, + instrux + 3642, +}; + +static const struct itemplate * const itable_xop09092[] = { + instrux + 3627, + instrux + 3628, + instrux + 3629, + instrux + 3630, +}; + +static const struct itemplate * const itable_xop09093[] = { + instrux + 3633, + instrux + 3634, + instrux + 3635, + instrux + 3636, +}; + +static const struct itemplate * const itable_xop09094[] = { + instrux + 3661, + instrux + 3662, + instrux + 3663, + instrux + 3664, +}; + +static const struct itemplate * const itable_xop09095[] = { + instrux + 3673, + instrux + 3674, + instrux + 3675, + instrux + 3676, +}; + +static const struct itemplate * const itable_xop09096[] = { + instrux + 3665, + instrux + 3666, + instrux + 3667, + instrux + 3668, +}; + +static const struct itemplate * const itable_xop09097[] = { + instrux + 3669, + instrux + 3670, + instrux + 3671, + instrux + 3672, +}; + +static const struct itemplate * const itable_xop09098[] = { + instrux + 3645, + instrux + 3646, + instrux + 3647, + instrux + 3648, +}; + +static const struct itemplate * const itable_xop09099[] = { + instrux + 3657, + instrux + 3658, + instrux + 3659, + instrux + 3660, +}; + +static const struct itemplate * const itable_xop0909A[] = { + instrux + 3649, + instrux + 3650, + instrux + 3651, + instrux + 3652, +}; + +static const struct itemplate * const itable_xop0909B[] = { + instrux + 3653, + instrux + 3654, + instrux + 3655, + instrux + 3656, +}; + +static const struct itemplate * const itable_xop090C1[] = { + instrux + 3567, + instrux + 3568, +}; + +static const struct itemplate * const itable_xop090C2[] = { + instrux + 3563, + instrux + 3564, +}; + +static const struct itemplate * const itable_xop090C3[] = { + instrux + 3565, + instrux + 3566, +}; + +static const struct itemplate * const itable_xop090C6[] = { + instrux + 3583, + instrux + 3584, +}; + +static const struct itemplate * const itable_xop090C7[] = { + instrux + 3585, + instrux + 3586, +}; + +static const struct itemplate * const itable_xop090CB[] = { + instrux + 3569, + instrux + 3570, +}; + +static const struct itemplate * const itable_xop090D1[] = { + instrux + 3575, + instrux + 3576, +}; + +static const struct itemplate * const itable_xop090D2[] = { + instrux + 3571, + instrux + 3572, +}; + +static const struct itemplate * const itable_xop090D3[] = { + instrux + 3573, + instrux + 3574, +}; + +static const struct itemplate * const itable_xop090D6[] = { + instrux + 3579, + instrux + 3580, +}; + +static const struct itemplate * const itable_xop090D7[] = { + instrux + 3581, + instrux + 3582, +}; + +static const struct itemplate * const itable_xop090DB[] = { + instrux + 3577, + instrux + 3578, +}; + +static const struct itemplate * const itable_xop090E1[] = { + instrux + 3587, + instrux + 3588, +}; + +static const struct itemplate * const itable_xop090E2[] = { + instrux + 3591, + instrux + 3592, +}; + +static const struct itemplate * const itable_xop090E3[] = { + instrux + 3589, + instrux + 3590, +}; + +static const struct itemplate * const itable_xop0A010[] = { + instrux + 3995, + instrux + 3996, +}; + +static const struct itemplate * const itable_xop0A012[] = { + instrux + 3395, + instrux + 3396, + instrux + 3397, + instrux + 3398, +}; + +static const struct disasm_index itable_vex010[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_vex01010, 2 }, + /* 0x11 */ { itable_vex01011, 2 }, + /* 0x12 */ { itable_vex01012, 4 }, + /* 0x13 */ { itable_vex01013, 1 }, + /* 0x14 */ { itable_vex01014, 4 }, + /* 0x15 */ { itable_vex01015, 4 }, + /* 0x16 */ { itable_vex01016, 4 }, + /* 0x17 */ { itable_vex01017, 1 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { itable_vex01028, 2 }, + /* 0x29 */ { itable_vex01029, 2 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { itable_vex0102B, 2 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { itable_vex0102E, 1 }, + /* 0x2f */ { itable_vex0102F, 1 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { itable_vex01041, 2 }, + /* 0x42 */ { itable_vex01042, 2 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { itable_vex01044, 2 }, + /* 0x45 */ { itable_vex01045, 2 }, + /* 0x46 */ { itable_vex01046, 2 }, + /* 0x47 */ { itable_vex01047, 2 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { itable_vex0104A, 2 }, + /* 0x4b */ { itable_vex0104B, 2 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { itable_vex01050, 4 }, + /* 0x51 */ { itable_vex01051, 2 }, + /* 0x52 */ { itable_vex01052, 2 }, + /* 0x53 */ { itable_vex01053, 2 }, + /* 0x54 */ { itable_vex01054, 4 }, + /* 0x55 */ { itable_vex01055, 4 }, + /* 0x56 */ { itable_vex01056, 4 }, + /* 0x57 */ { itable_vex01057, 4 }, + /* 0x58 */ { itable_vex01058, 4 }, + /* 0x59 */ { itable_vex01059, 4 }, + /* 0x5a */ { itable_vex0105A, 2 }, + /* 0x5b */ { itable_vex0105B, 2 }, + /* 0x5c */ { itable_vex0105C, 4 }, + /* 0x5d */ { itable_vex0105D, 4 }, + /* 0x5e */ { itable_vex0105E, 4 }, + /* 0x5f */ { itable_vex0105F, 4 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { itable_vex01077, 2 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { itable_vex01090, 2 }, + /* 0x91 */ { itable_vex01091, 2 }, + /* 0x92 */ { itable_vex01092, 1 }, + /* 0x93 */ { itable_vex01093, 1 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { itable_vex01098, 2 }, + /* 0x99 */ { itable_vex01099, 2 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { itable_vex010AE, 2 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { itable_vex010C2, 188 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { itable_vex010C6, 4 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_vex011[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_vex01110, 2 }, + /* 0x11 */ { itable_vex01111, 2 }, + /* 0x12 */ { itable_vex01112, 2 }, + /* 0x13 */ { itable_vex01113, 1 }, + /* 0x14 */ { itable_vex01114, 4 }, + /* 0x15 */ { itable_vex01115, 4 }, + /* 0x16 */ { itable_vex01116, 2 }, + /* 0x17 */ { itable_vex01117, 1 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { itable_vex01128, 2 }, + /* 0x29 */ { itable_vex01129, 2 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { itable_vex0112B, 2 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { itable_vex0112E, 1 }, + /* 0x2f */ { itable_vex0112F, 1 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { itable_vex01141, 2 }, + /* 0x42 */ { itable_vex01142, 2 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { itable_vex01144, 2 }, + /* 0x45 */ { itable_vex01145, 2 }, + /* 0x46 */ { itable_vex01146, 2 }, + /* 0x47 */ { itable_vex01147, 2 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { itable_vex0114A, 2 }, + /* 0x4b */ { itable_vex0114B, 1 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { itable_vex01150, 4 }, + /* 0x51 */ { itable_vex01151, 2 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { itable_vex01154, 4 }, + /* 0x55 */ { itable_vex01155, 4 }, + /* 0x56 */ { itable_vex01156, 4 }, + /* 0x57 */ { itable_vex01157, 4 }, + /* 0x58 */ { itable_vex01158, 4 }, + /* 0x59 */ { itable_vex01159, 4 }, + /* 0x5a */ { itable_vex0115A, 4 }, + /* 0x5b */ { itable_vex0115B, 2 }, + /* 0x5c */ { itable_vex0115C, 4 }, + /* 0x5d */ { itable_vex0115D, 4 }, + /* 0x5e */ { itable_vex0115E, 4 }, + /* 0x5f */ { itable_vex0115F, 4 }, + /* 0x60 */ { itable_vex01160, 4 }, + /* 0x61 */ { itable_vex01161, 4 }, + /* 0x62 */ { itable_vex01162, 4 }, + /* 0x63 */ { itable_vex01163, 4 }, + /* 0x64 */ { itable_vex01164, 4 }, + /* 0x65 */ { itable_vex01165, 4 }, + /* 0x66 */ { itable_vex01166, 4 }, + /* 0x67 */ { itable_vex01167, 4 }, + /* 0x68 */ { itable_vex01168, 4 }, + /* 0x69 */ { itable_vex01169, 4 }, + /* 0x6a */ { itable_vex0116A, 4 }, + /* 0x6b */ { itable_vex0116B, 4 }, + /* 0x6c */ { itable_vex0116C, 4 }, + /* 0x6d */ { itable_vex0116D, 4 }, + /* 0x6e */ { itable_vex0116E, 2 }, + /* 0x6f */ { itable_vex0116F, 3 }, + /* 0x70 */ { itable_vex01170, 2 }, + /* 0x71 */ { itable_vex01171, 12 }, + /* 0x72 */ { itable_vex01172, 12 }, + /* 0x73 */ { itable_vex01173, 16 }, + /* 0x74 */ { itable_vex01174, 4 }, + /* 0x75 */ { itable_vex01175, 4 }, + /* 0x76 */ { itable_vex01176, 4 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { itable_vex0117C, 4 }, + /* 0x7d */ { itable_vex0117D, 4 }, + /* 0x7e */ { itable_vex0117E, 2 }, + /* 0x7f */ { itable_vex0117F, 3 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { itable_vex01190, 2 }, + /* 0x91 */ { itable_vex01191, 2 }, + /* 0x92 */ { itable_vex01192, 1 }, + /* 0x93 */ { itable_vex01193, 1 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { itable_vex01198, 2 }, + /* 0x99 */ { itable_vex01199, 2 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { itable_vex011C2, 188 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { itable_vex011C4, 6 }, + /* 0xc5 */ { itable_vex011C5, 2 }, + /* 0xc6 */ { itable_vex011C6, 4 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { itable_vex011D0, 4 }, + /* 0xd1 */ { itable_vex011D1, 4 }, + /* 0xd2 */ { itable_vex011D2, 4 }, + /* 0xd3 */ { itable_vex011D3, 4 }, + /* 0xd4 */ { itable_vex011D4, 4 }, + /* 0xd5 */ { itable_vex011D5, 4 }, + /* 0xd6 */ { itable_vex011D6, 1 }, + /* 0xd7 */ { itable_vex011D7, 4 }, + /* 0xd8 */ { itable_vex011D8, 4 }, + /* 0xd9 */ { itable_vex011D9, 4 }, + /* 0xda */ { itable_vex011DA, 4 }, + /* 0xdb */ { itable_vex011DB, 4 }, + /* 0xdc */ { itable_vex011DC, 4 }, + /* 0xdd */ { itable_vex011DD, 4 }, + /* 0xde */ { itable_vex011DE, 4 }, + /* 0xdf */ { itable_vex011DF, 4 }, + /* 0xe0 */ { itable_vex011E0, 4 }, + /* 0xe1 */ { itable_vex011E1, 4 }, + /* 0xe2 */ { itable_vex011E2, 4 }, + /* 0xe3 */ { itable_vex011E3, 4 }, + /* 0xe4 */ { itable_vex011E4, 4 }, + /* 0xe5 */ { itable_vex011E5, 4 }, + /* 0xe6 */ { itable_vex011E6, 4 }, + /* 0xe7 */ { itable_vex011E7, 3 }, + /* 0xe8 */ { itable_vex011E8, 4 }, + /* 0xe9 */ { itable_vex011E9, 4 }, + /* 0xea */ { itable_vex011EA, 4 }, + /* 0xeb */ { itable_vex011EB, 4 }, + /* 0xec */ { itable_vex011EC, 4 }, + /* 0xed */ { itable_vex011ED, 4 }, + /* 0xee */ { itable_vex011EE, 4 }, + /* 0xef */ { itable_vex011EF, 4 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { itable_vex011F1, 4 }, + /* 0xf2 */ { itable_vex011F2, 4 }, + /* 0xf3 */ { itable_vex011F3, 4 }, + /* 0xf4 */ { itable_vex011F4, 4 }, + /* 0xf5 */ { itable_vex011F5, 4 }, + /* 0xf6 */ { itable_vex011F6, 4 }, + /* 0xf7 */ { itable_vex011F7, 1 }, + /* 0xf8 */ { itable_vex011F8, 4 }, + /* 0xf9 */ { itable_vex011F9, 4 }, + /* 0xfa */ { itable_vex011FA, 4 }, + /* 0xfb */ { itable_vex011FB, 4 }, + /* 0xfc */ { itable_vex011FC, 4 }, + /* 0xfd */ { itable_vex011FD, 4 }, + /* 0xfe */ { itable_vex011FE, 4 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_vex012[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_vex01210, 3 }, + /* 0x11 */ { itable_vex01211, 3 }, + /* 0x12 */ { itable_vex01212, 2 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { itable_vex01216, 2 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { itable_vex0122A, 4 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { itable_vex0122C, 2 }, + /* 0x2d */ { itable_vex0122D, 2 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { itable_vex01251, 2 }, + /* 0x52 */ { itable_vex01252, 2 }, + /* 0x53 */ { itable_vex01253, 2 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { itable_vex01258, 2 }, + /* 0x59 */ { itable_vex01259, 2 }, + /* 0x5a */ { itable_vex0125A, 2 }, + /* 0x5b */ { itable_vex0125B, 2 }, + /* 0x5c */ { itable_vex0125C, 2 }, + /* 0x5d */ { itable_vex0125D, 2 }, + /* 0x5e */ { itable_vex0125E, 2 }, + /* 0x5f */ { itable_vex0125F, 2 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { itable_vex0126F, 3 }, + /* 0x70 */ { itable_vex01270, 2 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { itable_vex0127E, 1 }, + /* 0x7f */ { itable_vex0127F, 3 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { itable_vex012C2, 94 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { itable_vex012E6, 2 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_vex013[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_vex01310, 3 }, + /* 0x11 */ { itable_vex01311, 3 }, + /* 0x12 */ { itable_vex01312, 2 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { itable_vex0132A, 4 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { itable_vex0132C, 2 }, + /* 0x2d */ { itable_vex0132D, 2 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { itable_vex01351, 2 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { itable_vex01358, 2 }, + /* 0x59 */ { itable_vex01359, 2 }, + /* 0x5a */ { itable_vex0135A, 2 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { itable_vex0135C, 2 }, + /* 0x5d */ { itable_vex0135D, 2 }, + /* 0x5e */ { itable_vex0135E, 2 }, + /* 0x5f */ { itable_vex0135F, 2 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { itable_vex01370, 2 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { itable_vex0137C, 4 }, + /* 0x7d */ { itable_vex0137D, 4 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { itable_vex01392, 2 }, + /* 0x93 */ { itable_vex01393, 2 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { itable_vex013C2, 94 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { itable_vex013D0, 4 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { itable_vex013E6, 4 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { itable_vex013F0, 3 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_vex020[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { itable_vex02049, 2 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { itable_vex02050, 2 }, + /* 0x51 */ { itable_vex02051, 2 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { itable_vex0205E, 1 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { itable_vex020B0, 2 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { itable_vex020F2, 2 }, + /* 0xf3 */ { itable_vex020F3, 6 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { itable_vex020F5, 2 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { itable_vex020F7, 2 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_vex021[256] = { + /* 0x00 */ { itable_vex02100, 4 }, + /* 0x01 */ { itable_vex02101, 4 }, + /* 0x02 */ { itable_vex02102, 4 }, + /* 0x03 */ { itable_vex02103, 4 }, + /* 0x04 */ { itable_vex02104, 4 }, + /* 0x05 */ { itable_vex02105, 4 }, + /* 0x06 */ { itable_vex02106, 4 }, + /* 0x07 */ { itable_vex02107, 4 }, + /* 0x08 */ { itable_vex02108, 4 }, + /* 0x09 */ { itable_vex02109, 4 }, + /* 0x0a */ { itable_vex0210A, 4 }, + /* 0x0b */ { itable_vex0210B, 4 }, + /* 0x0c */ { itable_vex0210C, 4 }, + /* 0x0d */ { itable_vex0210D, 4 }, + /* 0x0e */ { itable_vex0210E, 2 }, + /* 0x0f */ { itable_vex0210F, 2 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { itable_vex02113, 4 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { itable_vex02116, 2 }, + /* 0x17 */ { itable_vex02117, 2 }, + /* 0x18 */ { itable_vex02118, 4 }, + /* 0x19 */ { itable_vex02119, 2 }, + /* 0x1a */ { itable_vex0211A, 1 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { itable_vex0211C, 2 }, + /* 0x1d */ { itable_vex0211D, 2 }, + /* 0x1e */ { itable_vex0211E, 2 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { itable_vex02120, 2 }, + /* 0x21 */ { itable_vex02121, 3 }, + /* 0x22 */ { itable_vex02122, 3 }, + /* 0x23 */ { itable_vex02123, 2 }, + /* 0x24 */ { itable_vex02124, 3 }, + /* 0x25 */ { itable_vex02125, 2 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { itable_vex02128, 4 }, + /* 0x29 */ { itable_vex02129, 4 }, + /* 0x2a */ { itable_vex0212A, 2 }, + /* 0x2b */ { itable_vex0212B, 4 }, + /* 0x2c */ { itable_vex0212C, 2 }, + /* 0x2d */ { itable_vex0212D, 2 }, + /* 0x2e */ { itable_vex0212E, 2 }, + /* 0x2f */ { itable_vex0212F, 2 }, + /* 0x30 */ { itable_vex02130, 2 }, + /* 0x31 */ { itable_vex02131, 3 }, + /* 0x32 */ { itable_vex02132, 3 }, + /* 0x33 */ { itable_vex02133, 2 }, + /* 0x34 */ { itable_vex02134, 3 }, + /* 0x35 */ { itable_vex02135, 2 }, + /* 0x36 */ { itable_vex02136, 2 }, + /* 0x37 */ { itable_vex02137, 4 }, + /* 0x38 */ { itable_vex02138, 4 }, + /* 0x39 */ { itable_vex02139, 4 }, + /* 0x3a */ { itable_vex0213A, 4 }, + /* 0x3b */ { itable_vex0213B, 4 }, + /* 0x3c */ { itable_vex0213C, 4 }, + /* 0x3d */ { itable_vex0213D, 4 }, + /* 0x3e */ { itable_vex0213E, 4 }, + /* 0x3f */ { itable_vex0213F, 4 }, + /* 0x40 */ { itable_vex02140, 4 }, + /* 0x41 */ { itable_vex02141, 1 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { itable_vex02145, 8 }, + /* 0x46 */ { itable_vex02146, 4 }, + /* 0x47 */ { itable_vex02147, 8 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { itable_vex02149, 1 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { itable_vex0214B, 1 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { itable_vex02158, 4 }, + /* 0x59 */ { itable_vex02159, 4 }, + /* 0x5a */ { itable_vex0215A, 1 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { itable_vex0215E, 1 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { itable_vex02178, 4 }, + /* 0x79 */ { itable_vex02179, 4 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { itable_vex0218C, 8 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { itable_vex0218E, 8 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { itable_vex02190, 4 }, + /* 0x91 */ { itable_vex02191, 4 }, + /* 0x92 */ { itable_vex02192, 4 }, + /* 0x93 */ { itable_vex02193, 4 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { itable_vex02196, 8 }, + /* 0x97 */ { itable_vex02197, 8 }, + /* 0x98 */ { itable_vex02198, 8 }, + /* 0x99 */ { itable_vex02199, 4 }, + /* 0x9a */ { itable_vex0219A, 8 }, + /* 0x9b */ { itable_vex0219B, 4 }, + /* 0x9c */ { itable_vex0219C, 8 }, + /* 0x9d */ { itable_vex0219D, 4 }, + /* 0x9e */ { itable_vex0219E, 8 }, + /* 0x9f */ { itable_vex0219F, 4 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { itable_vex021A6, 8 }, + /* 0xa7 */ { itable_vex021A7, 8 }, + /* 0xa8 */ { itable_vex021A8, 8 }, + /* 0xa9 */ { itable_vex021A9, 4 }, + /* 0xaa */ { itable_vex021AA, 8 }, + /* 0xab */ { itable_vex021AB, 4 }, + /* 0xac */ { itable_vex021AC, 8 }, + /* 0xad */ { itable_vex021AD, 4 }, + /* 0xae */ { itable_vex021AE, 8 }, + /* 0xaf */ { itable_vex021AF, 4 }, + /* 0xb0 */ { itable_vex021B0, 2 }, + /* 0xb1 */ { itable_vex021B1, 2 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { itable_vex021B4, 2 }, + /* 0xb5 */ { itable_vex021B5, 2 }, + /* 0xb6 */ { itable_vex021B6, 8 }, + /* 0xb7 */ { itable_vex021B7, 8 }, + /* 0xb8 */ { itable_vex021B8, 8 }, + /* 0xb9 */ { itable_vex021B9, 4 }, + /* 0xba */ { itable_vex021BA, 8 }, + /* 0xbb */ { itable_vex021BB, 4 }, + /* 0xbc */ { itable_vex021BC, 8 }, + /* 0xbd */ { itable_vex021BD, 4 }, + /* 0xbe */ { itable_vex021BE, 8 }, + /* 0xbf */ { itable_vex021BF, 4 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { itable_vex021CF, 4 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { itable_vex021DB, 1 }, + /* 0xdc */ { itable_vex021DC, 4 }, + /* 0xdd */ { itable_vex021DD, 4 }, + /* 0xde */ { itable_vex021DE, 4 }, + /* 0xdf */ { itable_vex021DF, 4 }, + /* 0xe0 */ { itable_vex021E0, 2 }, + /* 0xe1 */ { itable_vex021E1, 2 }, + /* 0xe2 */ { itable_vex021E2, 2 }, + /* 0xe3 */ { itable_vex021E3, 2 }, + /* 0xe4 */ { itable_vex021E4, 2 }, + /* 0xe5 */ { itable_vex021E5, 2 }, + /* 0xe6 */ { itable_vex021E6, 2 }, + /* 0xe7 */ { itable_vex021E7, 2 }, + /* 0xe8 */ { itable_vex021E8, 2 }, + /* 0xe9 */ { itable_vex021E9, 2 }, + /* 0xea */ { itable_vex021EA, 2 }, + /* 0xeb */ { itable_vex021EB, 2 }, + /* 0xec */ { itable_vex021EC, 2 }, + /* 0xed */ { itable_vex021ED, 2 }, + /* 0xee */ { itable_vex021EE, 2 }, + /* 0xef */ { itable_vex021EF, 2 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { itable_vex021F7, 2 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_vex022[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { itable_vex0224B, 1 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { itable_vex02250, 2 }, + /* 0x51 */ { itable_vex02251, 2 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { itable_vex0225C, 1 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { itable_vex0225E, 1 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { itable_vex02272, 2 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { itable_vex022B0, 2 }, + /* 0xb1 */ { itable_vex022B1, 2 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { itable_vex022F5, 2 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { itable_vex022F7, 2 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_vex023[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { itable_vex02349, 1 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { itable_vex0234B, 1 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { itable_vex02350, 2 }, + /* 0x51 */ { itable_vex02351, 2 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { itable_vex0235E, 1 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { itable_vex023B0, 2 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { itable_vex023F5, 2 }, + /* 0xf6 */ { itable_vex023F6, 2 }, + /* 0xf7 */ { itable_vex023F7, 2 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_vex031[256] = { + /* 0x00 */ { itable_vex03100, 1 }, + /* 0x01 */ { itable_vex03101, 1 }, + /* 0x02 */ { itable_vex03102, 4 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { itable_vex03104, 2 }, + /* 0x05 */ { itable_vex03105, 2 }, + /* 0x06 */ { itable_vex03106, 2 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { itable_vex03108, 2 }, + /* 0x09 */ { itable_vex03109, 2 }, + /* 0x0a */ { itable_vex0310A, 2 }, + /* 0x0b */ { itable_vex0310B, 2 }, + /* 0x0c */ { itable_vex0310C, 4 }, + /* 0x0d */ { itable_vex0310D, 4 }, + /* 0x0e */ { itable_vex0310E, 4 }, + /* 0x0f */ { itable_vex0310F, 4 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { itable_vex03114, 3 }, + /* 0x15 */ { itable_vex03115, 3 }, + /* 0x16 */ { itable_vex03116, 3 }, + /* 0x17 */ { itable_vex03117, 1 }, + /* 0x18 */ { itable_vex03118, 2 }, + /* 0x19 */ { itable_vex03119, 1 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { itable_vex0311D, 4 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { itable_vex03120, 6 }, + /* 0x21 */ { itable_vex03121, 2 }, + /* 0x22 */ { itable_vex03122, 8 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { itable_vex03130, 2 }, + /* 0x31 */ { itable_vex03131, 2 }, + /* 0x32 */ { itable_vex03132, 2 }, + /* 0x33 */ { itable_vex03133, 2 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { itable_vex03138, 2 }, + /* 0x39 */ { itable_vex03139, 1 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { itable_vex03140, 4 }, + /* 0x41 */ { itable_vex03141, 2 }, + /* 0x42 */ { itable_vex03142, 4 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { itable_vex03144, 20 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { itable_vex03146, 2 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { itable_vex0314A, 4 }, + /* 0x4b */ { itable_vex0314B, 4 }, + /* 0x4c */ { itable_vex0314C, 4 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { itable_vex0315C, 8 }, + /* 0x5d */ { itable_vex0315D, 8 }, + /* 0x5e */ { itable_vex0315E, 8 }, + /* 0x5f */ { itable_vex0315F, 8 }, + /* 0x60 */ { itable_vex03160, 1 }, + /* 0x61 */ { itable_vex03161, 1 }, + /* 0x62 */ { itable_vex03162, 1 }, + /* 0x63 */ { itable_vex03163, 1 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { itable_vex03168, 8 }, + /* 0x69 */ { itable_vex03169, 8 }, + /* 0x6a */ { itable_vex0316A, 4 }, + /* 0x6b */ { itable_vex0316B, 4 }, + /* 0x6c */ { itable_vex0316C, 8 }, + /* 0x6d */ { itable_vex0316D, 8 }, + /* 0x6e */ { itable_vex0316E, 4 }, + /* 0x6f */ { itable_vex0316F, 4 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { itable_vex03178, 8 }, + /* 0x79 */ { itable_vex03179, 8 }, + /* 0x7a */ { itable_vex0317A, 4 }, + /* 0x7b */ { itable_vex0317B, 4 }, + /* 0x7c */ { itable_vex0317C, 8 }, + /* 0x7d */ { itable_vex0317D, 8 }, + /* 0x7e */ { itable_vex0317E, 4 }, + /* 0x7f */ { itable_vex0317F, 4 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { itable_vex031CE, 4 }, + /* 0xcf */ { itable_vex031CF, 4 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { itable_vex031DF, 1 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_vex033[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { itable_vex033F0, 2 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_xop080[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { itable_xop08085, 2 }, + /* 0x86 */ { itable_xop08086, 2 }, + /* 0x87 */ { itable_xop08087, 2 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { itable_xop0808E, 2 }, + /* 0x8f */ { itable_xop0808F, 2 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { itable_xop08095, 2 }, + /* 0x96 */ { itable_xop08096, 2 }, + /* 0x97 */ { itable_xop08097, 2 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { itable_xop0809E, 2 }, + /* 0x9f */ { itable_xop0809F, 2 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { itable_xop080A2, 8 }, + /* 0xa3 */ { itable_xop080A3, 4 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { itable_xop080A6, 2 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { itable_xop080B6, 2 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { itable_xop080C0, 2 }, + /* 0xc1 */ { itable_xop080C1, 2 }, + /* 0xc2 */ { itable_xop080C2, 2 }, + /* 0xc3 */ { itable_xop080C3, 2 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { itable_xop080CC, 2 }, + /* 0xcd */ { itable_xop080CD, 2 }, + /* 0xce */ { itable_xop080CE, 2 }, + /* 0xcf */ { itable_xop080CF, 2 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { itable_xop080EC, 2 }, + /* 0xed */ { itable_xop080ED, 2 }, + /* 0xee */ { itable_xop080EE, 2 }, + /* 0xef */ { itable_xop080EF, 2 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_xop090[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { itable_xop09001, 14 }, + /* 0x02 */ { itable_xop09002, 4 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { itable_xop09012, 4 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { itable_xop09080, 4 }, + /* 0x81 */ { itable_xop09081, 4 }, + /* 0x82 */ { itable_xop09082, 2 }, + /* 0x83 */ { itable_xop09083, 2 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { itable_xop09090, 4 }, + /* 0x91 */ { itable_xop09091, 4 }, + /* 0x92 */ { itable_xop09092, 4 }, + /* 0x93 */ { itable_xop09093, 4 }, + /* 0x94 */ { itable_xop09094, 4 }, + /* 0x95 */ { itable_xop09095, 4 }, + /* 0x96 */ { itable_xop09096, 4 }, + /* 0x97 */ { itable_xop09097, 4 }, + /* 0x98 */ { itable_xop09098, 4 }, + /* 0x99 */ { itable_xop09099, 4 }, + /* 0x9a */ { itable_xop0909A, 4 }, + /* 0x9b */ { itable_xop0909B, 4 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { itable_xop090C1, 2 }, + /* 0xc2 */ { itable_xop090C2, 2 }, + /* 0xc3 */ { itable_xop090C3, 2 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { itable_xop090C6, 2 }, + /* 0xc7 */ { itable_xop090C7, 2 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { itable_xop090CB, 2 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { itable_xop090D1, 2 }, + /* 0xd2 */ { itable_xop090D2, 2 }, + /* 0xd3 */ { itable_xop090D3, 2 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { itable_xop090D6, 2 }, + /* 0xd7 */ { itable_xop090D7, 2 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { itable_xop090DB, 2 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { itable_xop090E1, 2 }, + /* 0xe2 */ { itable_xop090E2, 2 }, + /* 0xe3 */ { itable_xop090E3, 2 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_xop0A0[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_xop0A010, 2 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { itable_xop0A012, 4 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex010[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_evex01010, 3 }, + /* 0x11 */ { itable_evex01011, 6 }, + /* 0x12 */ { itable_evex01012, 4 }, + /* 0x13 */ { itable_evex01013, 1 }, + /* 0x14 */ { itable_evex01014, 6 }, + /* 0x15 */ { itable_evex01015, 6 }, + /* 0x16 */ { itable_evex01016, 4 }, + /* 0x17 */ { itable_evex01017, 1 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { itable_evex01028, 3 }, + /* 0x29 */ { itable_evex01029, 6 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { itable_evex0102B, 3 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { itable_evex0102E, 1 }, + /* 0x2f */ { itable_evex0102F, 1 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { itable_evex01051, 3 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { itable_evex01054, 6 }, + /* 0x55 */ { itable_evex01055, 6 }, + /* 0x56 */ { itable_evex01056, 6 }, + /* 0x57 */ { itable_evex01057, 6 }, + /* 0x58 */ { itable_evex01058, 6 }, + /* 0x59 */ { itable_evex01059, 6 }, + /* 0x5a */ { itable_evex0105A, 3 }, + /* 0x5b */ { itable_evex0105B, 6 }, + /* 0x5c */ { itable_evex0105C, 6 }, + /* 0x5d */ { itable_evex0105D, 6 }, + /* 0x5e */ { itable_evex0105E, 6 }, + /* 0x5f */ { itable_evex0105F, 6 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { itable_evex01078, 6 }, + /* 0x79 */ { itable_evex01079, 6 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { itable_evex010C2, 141 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { itable_evex010C6, 6 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex011[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_evex01110, 3 }, + /* 0x11 */ { itable_evex01111, 6 }, + /* 0x12 */ { itable_evex01112, 2 }, + /* 0x13 */ { itable_evex01113, 1 }, + /* 0x14 */ { itable_evex01114, 6 }, + /* 0x15 */ { itable_evex01115, 6 }, + /* 0x16 */ { itable_evex01116, 2 }, + /* 0x17 */ { itable_evex01117, 1 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { itable_evex01128, 3 }, + /* 0x29 */ { itable_evex01129, 6 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { itable_evex0112B, 3 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { itable_evex0112E, 1 }, + /* 0x2f */ { itable_evex0112F, 1 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { itable_evex01151, 3 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { itable_evex01154, 6 }, + /* 0x55 */ { itable_evex01155, 6 }, + /* 0x56 */ { itable_evex01156, 6 }, + /* 0x57 */ { itable_evex01157, 6 }, + /* 0x58 */ { itable_evex01158, 6 }, + /* 0x59 */ { itable_evex01159, 6 }, + /* 0x5a */ { itable_evex0115A, 3 }, + /* 0x5b */ { itable_evex0115B, 3 }, + /* 0x5c */ { itable_evex0115C, 6 }, + /* 0x5d */ { itable_evex0115D, 6 }, + /* 0x5e */ { itable_evex0115E, 6 }, + /* 0x5f */ { itable_evex0115F, 6 }, + /* 0x60 */ { itable_evex01160, 6 }, + /* 0x61 */ { itable_evex01161, 6 }, + /* 0x62 */ { itable_evex01162, 6 }, + /* 0x63 */ { itable_evex01163, 6 }, + /* 0x64 */ { itable_evex01164, 3 }, + /* 0x65 */ { itable_evex01165, 3 }, + /* 0x66 */ { itable_evex01166, 3 }, + /* 0x67 */ { itable_evex01167, 6 }, + /* 0x68 */ { itable_evex01168, 6 }, + /* 0x69 */ { itable_evex01169, 6 }, + /* 0x6a */ { itable_evex0116A, 6 }, + /* 0x6b */ { itable_evex0116B, 6 }, + /* 0x6c */ { itable_evex0116C, 6 }, + /* 0x6d */ { itable_evex0116D, 6 }, + /* 0x6e */ { itable_evex0116E, 2 }, + /* 0x6f */ { itable_evex0116F, 6 }, + /* 0x70 */ { itable_evex01170, 3 }, + /* 0x71 */ { itable_evex01171, 18 }, + /* 0x72 */ { itable_evex01172, 48 }, + /* 0x73 */ { itable_evex01173, 24 }, + /* 0x74 */ { itable_evex01174, 3 }, + /* 0x75 */ { itable_evex01175, 3 }, + /* 0x76 */ { itable_evex01176, 3 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { itable_evex01178, 6 }, + /* 0x79 */ { itable_evex01179, 6 }, + /* 0x7a */ { itable_evex0117A, 6 }, + /* 0x7b */ { itable_evex0117B, 6 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { itable_evex0117E, 2 }, + /* 0x7f */ { itable_evex0117F, 6 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { itable_evex011C2, 141 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { itable_evex011C4, 4 }, + /* 0xc5 */ { itable_evex011C5, 3 }, + /* 0xc6 */ { itable_evex011C6, 6 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { itable_evex011D1, 6 }, + /* 0xd2 */ { itable_evex011D2, 6 }, + /* 0xd3 */ { itable_evex011D3, 6 }, + /* 0xd4 */ { itable_evex011D4, 6 }, + /* 0xd5 */ { itable_evex011D5, 6 }, + /* 0xd6 */ { itable_evex011D6, 1 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { itable_evex011D8, 6 }, + /* 0xd9 */ { itable_evex011D9, 6 }, + /* 0xda */ { itable_evex011DA, 6 }, + /* 0xdb */ { itable_evex011DB, 12 }, + /* 0xdc */ { itable_evex011DC, 6 }, + /* 0xdd */ { itable_evex011DD, 6 }, + /* 0xde */ { itable_evex011DE, 6 }, + /* 0xdf */ { itable_evex011DF, 12 }, + /* 0xe0 */ { itable_evex011E0, 6 }, + /* 0xe1 */ { itable_evex011E1, 6 }, + /* 0xe2 */ { itable_evex011E2, 12 }, + /* 0xe3 */ { itable_evex011E3, 6 }, + /* 0xe4 */ { itable_evex011E4, 6 }, + /* 0xe5 */ { itable_evex011E5, 6 }, + /* 0xe6 */ { itable_evex011E6, 3 }, + /* 0xe7 */ { itable_evex011E7, 3 }, + /* 0xe8 */ { itable_evex011E8, 6 }, + /* 0xe9 */ { itable_evex011E9, 6 }, + /* 0xea */ { itable_evex011EA, 6 }, + /* 0xeb */ { itable_evex011EB, 12 }, + /* 0xec */ { itable_evex011EC, 6 }, + /* 0xed */ { itable_evex011ED, 6 }, + /* 0xee */ { itable_evex011EE, 6 }, + /* 0xef */ { itable_evex011EF, 12 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { itable_evex011F1, 6 }, + /* 0xf2 */ { itable_evex011F2, 6 }, + /* 0xf3 */ { itable_evex011F3, 6 }, + /* 0xf4 */ { itable_evex011F4, 6 }, + /* 0xf5 */ { itable_evex011F5, 6 }, + /* 0xf6 */ { itable_evex011F6, 6 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { itable_evex011F8, 6 }, + /* 0xf9 */ { itable_evex011F9, 6 }, + /* 0xfa */ { itable_evex011FA, 6 }, + /* 0xfb */ { itable_evex011FB, 6 }, + /* 0xfc */ { itable_evex011FC, 6 }, + /* 0xfd */ { itable_evex011FD, 6 }, + /* 0xfe */ { itable_evex011FE, 6 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex012[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_evex01210, 3 }, + /* 0x11 */ { itable_evex01211, 3 }, + /* 0x12 */ { itable_evex01212, 3 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { itable_evex01216, 3 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { itable_evex0122A, 2 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { itable_evex0122C, 2 }, + /* 0x2d */ { itable_evex0122D, 2 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { itable_evex01251, 2 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { itable_evex01258, 2 }, + /* 0x59 */ { itable_evex01259, 2 }, + /* 0x5a */ { itable_evex0125A, 1 }, + /* 0x5b */ { itable_evex0125B, 3 }, + /* 0x5c */ { itable_evex0125C, 2 }, + /* 0x5d */ { itable_evex0125D, 2 }, + /* 0x5e */ { itable_evex0125E, 2 }, + /* 0x5f */ { itable_evex0125F, 2 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { itable_evex0126F, 6 }, + /* 0x70 */ { itable_evex01270, 3 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { itable_evex01278, 2 }, + /* 0x79 */ { itable_evex01279, 2 }, + /* 0x7a */ { itable_evex0127A, 6 }, + /* 0x7b */ { itable_evex0127B, 2 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { itable_evex0127E, 1 }, + /* 0x7f */ { itable_evex0127F, 6 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { itable_evex012C2, 47 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { itable_evex012E6, 6 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex013[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_evex01310, 3 }, + /* 0x11 */ { itable_evex01311, 3 }, + /* 0x12 */ { itable_evex01312, 3 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { itable_evex0132A, 2 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { itable_evex0132C, 2 }, + /* 0x2d */ { itable_evex0132D, 2 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { itable_evex01351, 2 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { itable_evex01358, 2 }, + /* 0x59 */ { itable_evex01359, 2 }, + /* 0x5a */ { itable_evex0135A, 1 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { itable_evex0135C, 2 }, + /* 0x5d */ { itable_evex0135D, 2 }, + /* 0x5e */ { itable_evex0135E, 2 }, + /* 0x5f */ { itable_evex0135F, 2 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { itable_evex0136F, 6 }, + /* 0x70 */ { itable_evex01370, 3 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { itable_evex01378, 2 }, + /* 0x79 */ { itable_evex01379, 2 }, + /* 0x7a */ { itable_evex0137A, 6 }, + /* 0x7b */ { itable_evex0137B, 2 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { itable_evex0137F, 6 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { itable_evex013C2, 47 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { itable_evex013E6, 3 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex021[256] = { + /* 0x00 */ { itable_evex02100, 6 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { itable_evex02104, 6 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { itable_evex0210B, 6 }, + /* 0x0c */ { itable_evex0210C, 6 }, + /* 0x0d */ { itable_evex0210D, 6 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_evex02110, 6 }, + /* 0x11 */ { itable_evex02111, 6 }, + /* 0x12 */ { itable_evex02112, 6 }, + /* 0x13 */ { itable_evex02113, 6 }, + /* 0x14 */ { itable_evex02114, 12 }, + /* 0x15 */ { itable_evex02115, 12 }, + /* 0x16 */ { itable_evex02116, 8 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { itable_evex02118, 6 }, + /* 0x19 */ { itable_evex02119, 6 }, + /* 0x1a */ { itable_evex0211A, 4 }, + /* 0x1b */ { itable_evex0211B, 2 }, + /* 0x1c */ { itable_evex0211C, 3 }, + /* 0x1d */ { itable_evex0211D, 3 }, + /* 0x1e */ { itable_evex0211E, 3 }, + /* 0x1f */ { itable_evex0211F, 3 }, + /* 0x20 */ { itable_evex02120, 3 }, + /* 0x21 */ { itable_evex02121, 3 }, + /* 0x22 */ { itable_evex02122, 3 }, + /* 0x23 */ { itable_evex02123, 3 }, + /* 0x24 */ { itable_evex02124, 3 }, + /* 0x25 */ { itable_evex02125, 3 }, + /* 0x26 */ { itable_evex02126, 6 }, + /* 0x27 */ { itable_evex02127, 6 }, + /* 0x28 */ { itable_evex02128, 6 }, + /* 0x29 */ { itable_evex02129, 3 }, + /* 0x2a */ { itable_evex0212A, 3 }, + /* 0x2b */ { itable_evex0212B, 6 }, + /* 0x2c */ { itable_evex0212C, 12 }, + /* 0x2d */ { itable_evex0212D, 4 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { itable_evex02130, 3 }, + /* 0x31 */ { itable_evex02131, 3 }, + /* 0x32 */ { itable_evex02132, 3 }, + /* 0x33 */ { itable_evex02133, 3 }, + /* 0x34 */ { itable_evex02134, 3 }, + /* 0x35 */ { itable_evex02135, 3 }, + /* 0x36 */ { itable_evex02136, 8 }, + /* 0x37 */ { itable_evex02137, 3 }, + /* 0x38 */ { itable_evex02138, 6 }, + /* 0x39 */ { itable_evex02139, 12 }, + /* 0x3a */ { itable_evex0213A, 6 }, + /* 0x3b */ { itable_evex0213B, 12 }, + /* 0x3c */ { itable_evex0213C, 6 }, + /* 0x3d */ { itable_evex0213D, 12 }, + /* 0x3e */ { itable_evex0213E, 6 }, + /* 0x3f */ { itable_evex0213F, 12 }, + /* 0x40 */ { itable_evex02140, 12 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { itable_evex02142, 6 }, + /* 0x43 */ { itable_evex02143, 2 }, + /* 0x44 */ { itable_evex02144, 6 }, + /* 0x45 */ { itable_evex02145, 12 }, + /* 0x46 */ { itable_evex02146, 12 }, + /* 0x47 */ { itable_evex02147, 12 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { itable_evex0214C, 6 }, + /* 0x4d */ { itable_evex0214D, 4 }, + /* 0x4e */ { itable_evex0214E, 6 }, + /* 0x4f */ { itable_evex0214F, 4 }, + /* 0x50 */ { itable_evex02150, 6 }, + /* 0x51 */ { itable_evex02151, 6 }, + /* 0x52 */ { itable_evex02152, 6 }, + /* 0x53 */ { itable_evex02153, 6 }, + /* 0x54 */ { itable_evex02154, 6 }, + /* 0x55 */ { itable_evex02155, 6 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { itable_evex02158, 6 }, + /* 0x59 */ { itable_evex02159, 9 }, + /* 0x5a */ { itable_evex0215A, 4 }, + /* 0x5b */ { itable_evex0215B, 2 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { itable_evex02162, 6 }, + /* 0x63 */ { itable_evex02163, 12 }, + /* 0x64 */ { itable_evex02164, 6 }, + /* 0x65 */ { itable_evex02165, 6 }, + /* 0x66 */ { itable_evex02166, 6 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { itable_evex02170, 6 }, + /* 0x71 */ { itable_evex02171, 12 }, + /* 0x72 */ { itable_evex02172, 6 }, + /* 0x73 */ { itable_evex02173, 12 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { itable_evex02175, 6 }, + /* 0x76 */ { itable_evex02176, 6 }, + /* 0x77 */ { itable_evex02177, 6 }, + /* 0x78 */ { itable_evex02178, 3 }, + /* 0x79 */ { itable_evex02179, 3 }, + /* 0x7a */ { itable_evex0217A, 12 }, + /* 0x7b */ { itable_evex0217B, 9 }, + /* 0x7c */ { itable_evex0217C, 6 }, + /* 0x7d */ { itable_evex0217D, 6 }, + /* 0x7e */ { itable_evex0217E, 6 }, + /* 0x7f */ { itable_evex0217F, 6 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { itable_evex02183, 6 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { itable_evex02188, 12 }, + /* 0x89 */ { itable_evex02189, 12 }, + /* 0x8a */ { itable_evex0218A, 12 }, + /* 0x8b */ { itable_evex0218B, 12 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { itable_evex0218D, 12 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { itable_evex0218F, 3 }, + /* 0x90 */ { itable_evex02190, 6 }, + /* 0x91 */ { itable_evex02191, 6 }, + /* 0x92 */ { itable_evex02192, 6 }, + /* 0x93 */ { itable_evex02193, 6 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { itable_evex02196, 6 }, + /* 0x97 */ { itable_evex02197, 6 }, + /* 0x98 */ { itable_evex02198, 6 }, + /* 0x99 */ { itable_evex02199, 2 }, + /* 0x9a */ { itable_evex0219A, 6 }, + /* 0x9b */ { itable_evex0219B, 2 }, + /* 0x9c */ { itable_evex0219C, 6 }, + /* 0x9d */ { itable_evex0219D, 2 }, + /* 0x9e */ { itable_evex0219E, 6 }, + /* 0x9f */ { itable_evex0219F, 2 }, + /* 0xa0 */ { itable_evex021A0, 6 }, + /* 0xa1 */ { itable_evex021A1, 6 }, + /* 0xa2 */ { itable_evex021A2, 6 }, + /* 0xa3 */ { itable_evex021A3, 6 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { itable_evex021A6, 6 }, + /* 0xa7 */ { itable_evex021A7, 6 }, + /* 0xa8 */ { itable_evex021A8, 6 }, + /* 0xa9 */ { itable_evex021A9, 2 }, + /* 0xaa */ { itable_evex021AA, 6 }, + /* 0xab */ { itable_evex021AB, 2 }, + /* 0xac */ { itable_evex021AC, 6 }, + /* 0xad */ { itable_evex021AD, 2 }, + /* 0xae */ { itable_evex021AE, 6 }, + /* 0xaf */ { itable_evex021AF, 2 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { itable_evex021B4, 3 }, + /* 0xb5 */ { itable_evex021B5, 3 }, + /* 0xb6 */ { itable_evex021B6, 6 }, + /* 0xb7 */ { itable_evex021B7, 6 }, + /* 0xb8 */ { itable_evex021B8, 6 }, + /* 0xb9 */ { itable_evex021B9, 2 }, + /* 0xba */ { itable_evex021BA, 6 }, + /* 0xbb */ { itable_evex021BB, 2 }, + /* 0xbc */ { itable_evex021BC, 6 }, + /* 0xbd */ { itable_evex021BD, 2 }, + /* 0xbe */ { itable_evex021BE, 6 }, + /* 0xbf */ { itable_evex021BF, 2 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { itable_evex021C4, 6 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { itable_evex021C6, 8 }, + /* 0xc7 */ { itable_evex021C7, 8 }, + /* 0xc8 */ { itable_evex021C8, 2 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { itable_evex021CA, 2 }, + /* 0xcb */ { itable_evex021CB, 4 }, + /* 0xcc */ { itable_evex021CC, 2 }, + /* 0xcd */ { itable_evex021CD, 4 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { itable_evex021CF, 6 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { itable_evex021DC, 6 }, + /* 0xdd */ { itable_evex021DD, 6 }, + /* 0xde */ { itable_evex021DE, 6 }, + /* 0xdf */ { itable_evex021DF, 6 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex022[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_evex02210, 6 }, + /* 0x11 */ { itable_evex02211, 6 }, + /* 0x12 */ { itable_evex02212, 6 }, + /* 0x13 */ { itable_evex02213, 6 }, + /* 0x14 */ { itable_evex02214, 6 }, + /* 0x15 */ { itable_evex02215, 6 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { itable_evex02220, 6 }, + /* 0x21 */ { itable_evex02221, 6 }, + /* 0x22 */ { itable_evex02222, 6 }, + /* 0x23 */ { itable_evex02223, 6 }, + /* 0x24 */ { itable_evex02224, 6 }, + /* 0x25 */ { itable_evex02225, 6 }, + /* 0x26 */ { itable_evex02226, 6 }, + /* 0x27 */ { itable_evex02227, 6 }, + /* 0x28 */ { itable_evex02228, 6 }, + /* 0x29 */ { itable_evex02229, 6 }, + /* 0x2a */ { itable_evex0222A, 3 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { itable_evex02230, 6 }, + /* 0x31 */ { itable_evex02231, 6 }, + /* 0x32 */ { itable_evex02232, 6 }, + /* 0x33 */ { itable_evex02233, 6 }, + /* 0x34 */ { itable_evex02234, 6 }, + /* 0x35 */ { itable_evex02235, 6 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { itable_evex02238, 6 }, + /* 0x39 */ { itable_evex02239, 6 }, + /* 0x3a */ { itable_evex0223A, 3 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { itable_evex02252, 6 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { itable_evex02272, 6 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex023[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { itable_evex02352, 1 }, + /* 0x53 */ { itable_evex02353, 1 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { itable_evex02368, 3 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { itable_evex02372, 6 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { itable_evex0239A, 1 }, + /* 0x9b */ { itable_evex0239B, 1 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { itable_evex023AA, 1 }, + /* 0xab */ { itable_evex023AB, 1 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex030[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { itable_evex03008, 3 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { itable_evex0300A, 2 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { itable_evex03025, 3 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { itable_evex03027, 1 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { itable_evex03056, 3 }, + /* 0x57 */ { itable_evex03057, 2 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { itable_evex03066, 3 }, + /* 0x67 */ { itable_evex03067, 1 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { itable_evex030C2, 6 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex031[256] = { + /* 0x00 */ { itable_evex03100, 2 }, + /* 0x01 */ { itable_evex03101, 2 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { itable_evex03103, 12 }, + /* 0x04 */ { itable_evex03104, 3 }, + /* 0x05 */ { itable_evex03105, 3 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { itable_evex03108, 3 }, + /* 0x09 */ { itable_evex03109, 3 }, + /* 0x0a */ { itable_evex0310A, 2 }, + /* 0x0b */ { itable_evex0310B, 2 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { itable_evex0310F, 6 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { itable_evex03114, 5 }, + /* 0x15 */ { itable_evex03115, 4 }, + /* 0x16 */ { itable_evex03116, 2 }, + /* 0x17 */ { itable_evex03117, 3 }, + /* 0x18 */ { itable_evex03118, 8 }, + /* 0x19 */ { itable_evex03119, 8 }, + /* 0x1a */ { itable_evex0311A, 4 }, + /* 0x1b */ { itable_evex0311B, 4 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { itable_evex0311D, 12 }, + /* 0x1e */ { itable_evex0311E, 60 }, + /* 0x1f */ { itable_evex0311F, 60 }, + /* 0x20 */ { itable_evex03120, 4 }, + /* 0x21 */ { itable_evex03121, 2 }, + /* 0x22 */ { itable_evex03122, 4 }, + /* 0x23 */ { itable_evex03123, 8 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { itable_evex03125, 6 }, + /* 0x26 */ { itable_evex03126, 6 }, + /* 0x27 */ { itable_evex03127, 2 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { itable_evex03138, 8 }, + /* 0x39 */ { itable_evex03139, 8 }, + /* 0x3a */ { itable_evex0313A, 4 }, + /* 0x3b */ { itable_evex0313B, 4 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { itable_evex0313E, 60 }, + /* 0x3f */ { itable_evex0313F, 60 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { itable_evex03142, 6 }, + /* 0x43 */ { itable_evex03143, 8 }, + /* 0x44 */ { itable_evex03144, 30 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { itable_evex03150, 12 }, + /* 0x51 */ { itable_evex03151, 4 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { itable_evex03154, 12 }, + /* 0x55 */ { itable_evex03155, 4 }, + /* 0x56 */ { itable_evex03156, 6 }, + /* 0x57 */ { itable_evex03157, 4 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { itable_evex03166, 6 }, + /* 0x67 */ { itable_evex03167, 2 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { itable_evex03170, 6 }, + /* 0x71 */ { itable_evex03171, 12 }, + /* 0x72 */ { itable_evex03172, 6 }, + /* 0x73 */ { itable_evex03173, 12 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { itable_evex031CE, 6 }, + /* 0xcf */ { itable_evex031CF, 6 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex032[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { itable_evex032C2, 2 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex050[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { itable_evex0501D, 2 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { itable_evex0502E, 1 }, + /* 0x2f */ { itable_evex0502F, 1 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { itable_evex05051, 3 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { itable_evex05058, 6 }, + /* 0x59 */ { itable_evex05059, 6 }, + /* 0x5a */ { itable_evex0505A, 3 }, + /* 0x5b */ { itable_evex0505B, 6 }, + /* 0x5c */ { itable_evex0505C, 6 }, + /* 0x5d */ { itable_evex0505D, 3 }, + /* 0x5e */ { itable_evex0505E, 6 }, + /* 0x5f */ { itable_evex0505F, 3 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { itable_evex05078, 3 }, + /* 0x79 */ { itable_evex05079, 3 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { itable_evex0507C, 3 }, + /* 0x7d */ { itable_evex0507D, 3 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex051[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { itable_evex0511D, 3 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { itable_evex0515A, 3 }, + /* 0x5b */ { itable_evex0515B, 3 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { itable_evex0516E, 1 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { itable_evex05178, 3 }, + /* 0x79 */ { itable_evex05179, 3 }, + /* 0x7a */ { itable_evex0517A, 3 }, + /* 0x7b */ { itable_evex0517B, 3 }, + /* 0x7c */ { itable_evex0517C, 3 }, + /* 0x7d */ { itable_evex0517D, 3 }, + /* 0x7e */ { itable_evex0517E, 1 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex052[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_evex05210, 3 }, + /* 0x11 */ { itable_evex05211, 3 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { itable_evex0522A, 4 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { itable_evex0522C, 2 }, + /* 0x2d */ { itable_evex0522D, 2 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { itable_evex05251, 2 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { itable_evex05258, 2 }, + /* 0x59 */ { itable_evex05259, 2 }, + /* 0x5a */ { itable_evex0525A, 2 }, + /* 0x5b */ { itable_evex0525B, 3 }, + /* 0x5c */ { itable_evex0525C, 2 }, + /* 0x5d */ { itable_evex0525D, 1 }, + /* 0x5e */ { itable_evex0525E, 2 }, + /* 0x5f */ { itable_evex0525F, 1 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { itable_evex05278, 2 }, + /* 0x79 */ { itable_evex05279, 2 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { itable_evex0527B, 2 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { itable_evex0527D, 3 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex053[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { itable_evex0535A, 2 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { itable_evex0537A, 6 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { itable_evex0537D, 3 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex060[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { itable_evex06013, 2 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex061[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { itable_evex06113, 3 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { itable_evex0612C, 6 }, + /* 0x2d */ { itable_evex0612D, 2 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { itable_evex06142, 3 }, + /* 0x43 */ { itable_evex06143, 1 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { itable_evex0614C, 6 }, + /* 0x4d */ { itable_evex0614D, 2 }, + /* 0x4e */ { itable_evex0614E, 3 }, + /* 0x4f */ { itable_evex0614F, 2 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { itable_evex06196, 6 }, + /* 0x97 */ { itable_evex06197, 6 }, + /* 0x98 */ { itable_evex06198, 6 }, + /* 0x99 */ { itable_evex06199, 2 }, + /* 0x9a */ { itable_evex0619A, 6 }, + /* 0x9b */ { itable_evex0619B, 2 }, + /* 0x9c */ { itable_evex0619C, 6 }, + /* 0x9d */ { itable_evex0619D, 2 }, + /* 0x9e */ { itable_evex0619E, 6 }, + /* 0x9f */ { itable_evex0619F, 2 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { itable_evex061A6, 6 }, + /* 0xa7 */ { itable_evex061A7, 6 }, + /* 0xa8 */ { itable_evex061A8, 6 }, + /* 0xa9 */ { itable_evex061A9, 2 }, + /* 0xaa */ { itable_evex061AA, 6 }, + /* 0xab */ { itable_evex061AB, 2 }, + /* 0xac */ { itable_evex061AC, 6 }, + /* 0xad */ { itable_evex061AD, 2 }, + /* 0xae */ { itable_evex061AE, 6 }, + /* 0xaf */ { itable_evex061AF, 2 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { itable_evex061B6, 6 }, + /* 0xb7 */ { itable_evex061B7, 6 }, + /* 0xb8 */ { itable_evex061B8, 6 }, + /* 0xb9 */ { itable_evex061B9, 2 }, + /* 0xba */ { itable_evex061BA, 6 }, + /* 0xbb */ { itable_evex061BB, 2 }, + /* 0xbc */ { itable_evex061BC, 6 }, + /* 0xbd */ { itable_evex061BD, 2 }, + /* 0xbe */ { itable_evex061BE, 6 }, + /* 0xbf */ { itable_evex061BF, 2 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex062[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { itable_evex06256, 6 }, + /* 0x57 */ { itable_evex06257, 2 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { itable_evex062D6, 6 }, + /* 0xd7 */ { itable_evex062D7, 2 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_evex063[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { itable_evex06356, 6 }, + /* 0x57 */ { itable_evex06357, 2 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { itable_evex063D6, 6 }, + /* 0xd7 */ { itable_evex063D7, 2 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_0F38[256] = { + /* 0x00 */ { itable_0F3800, 2 }, + /* 0x01 */ { itable_0F3801, 2 }, + /* 0x02 */ { itable_0F3802, 2 }, + /* 0x03 */ { itable_0F3803, 2 }, + /* 0x04 */ { itable_0F3804, 2 }, + /* 0x05 */ { itable_0F3805, 2 }, + /* 0x06 */ { itable_0F3806, 2 }, + /* 0x07 */ { itable_0F3807, 2 }, + /* 0x08 */ { itable_0F3808, 2 }, + /* 0x09 */ { itable_0F3809, 2 }, + /* 0x0a */ { itable_0F380A, 2 }, + /* 0x0b */ { itable_0F380B, 2 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { itable_0F3810, 2 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { itable_0F3814, 2 }, + /* 0x15 */ { itable_0F3815, 2 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { itable_0F3817, 1 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { itable_0F381C, 2 }, + /* 0x1d */ { itable_0F381D, 2 }, + /* 0x1e */ { itable_0F381E, 2 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { itable_0F3820, 1 }, + /* 0x21 */ { itable_0F3821, 1 }, + /* 0x22 */ { itable_0F3822, 1 }, + /* 0x23 */ { itable_0F3823, 1 }, + /* 0x24 */ { itable_0F3824, 1 }, + /* 0x25 */ { itable_0F3825, 1 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { itable_0F3828, 1 }, + /* 0x29 */ { itable_0F3829, 1 }, + /* 0x2a */ { itable_0F382A, 1 }, + /* 0x2b */ { itable_0F382B, 1 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { itable_0F3830, 1 }, + /* 0x31 */ { itable_0F3831, 1 }, + /* 0x32 */ { itable_0F3832, 1 }, + /* 0x33 */ { itable_0F3833, 1 }, + /* 0x34 */ { itable_0F3834, 1 }, + /* 0x35 */ { itable_0F3835, 1 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { itable_0F3837, 1 }, + /* 0x38 */ { itable_0F3838, 1 }, + /* 0x39 */ { itable_0F3839, 1 }, + /* 0x3a */ { itable_0F383A, 1 }, + /* 0x3b */ { itable_0F383B, 1 }, + /* 0x3c */ { itable_0F383C, 1 }, + /* 0x3d */ { itable_0F383D, 1 }, + /* 0x3e */ { itable_0F383E, 1 }, + /* 0x3f */ { itable_0F383F, 1 }, + /* 0x40 */ { itable_0F3840, 1 }, + /* 0x41 */ { itable_0F3841, 1 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { itable_0F3880, 2 }, + /* 0x81 */ { itable_0F3881, 2 }, + /* 0x82 */ { itable_0F3882, 2 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { itable_0F38C8, 1 }, + /* 0xc9 */ { itable_0F38C9, 1 }, + /* 0xca */ { itable_0F38CA, 1 }, + /* 0xcb */ { itable_0F38CB, 2 }, + /* 0xcc */ { itable_0F38CC, 1 }, + /* 0xcd */ { itable_0F38CD, 1 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { itable_0F38CF, 1 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { itable_0F38DB, 1 }, + /* 0xdc */ { itable_0F38DC, 1 }, + /* 0xdd */ { itable_0F38DD, 1 }, + /* 0xde */ { itable_0F38DE, 1 }, + /* 0xdf */ { itable_0F38DF, 1 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { itable_0F38F0, 5 }, + /* 0xf1 */ { itable_0F38F1, 6 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { itable_0F38F5, 2 }, + /* 0xf6 */ { itable_0F38F6, 6 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { itable_0F38F8, 9 }, + /* 0xf9 */ { itable_0F38F9, 2 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { itable_0F38FC, 6 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_0F3A[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { itable_0F3A08, 1 }, + /* 0x09 */ { itable_0F3A09, 1 }, + /* 0x0a */ { itable_0F3A0A, 1 }, + /* 0x0b */ { itable_0F3A0B, 1 }, + /* 0x0c */ { itable_0F3A0C, 1 }, + /* 0x0d */ { itable_0F3A0D, 1 }, + /* 0x0e */ { itable_0F3A0E, 1 }, + /* 0x0f */ { itable_0F3A0F, 2 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { itable_0F3A14, 3 }, + /* 0x15 */ { itable_0F3A15, 3 }, + /* 0x16 */ { itable_0F3A16, 2 }, + /* 0x17 */ { itable_0F3A17, 2 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { itable_0F3A20, 3 }, + /* 0x21 */ { itable_0F3A21, 1 }, + /* 0x22 */ { itable_0F3A22, 2 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { itable_0F3A40, 1 }, + /* 0x41 */ { itable_0F3A41, 1 }, + /* 0x42 */ { itable_0F3A42, 1 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { itable_0F3A44, 5 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { itable_0F3A60, 1 }, + /* 0x61 */ { itable_0F3A61, 1 }, + /* 0x62 */ { itable_0F3A62, 1 }, + /* 0x63 */ { itable_0F3A63, 1 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { NULL, 0 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { NULL, 0 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { itable_0F3ACC, 1 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { itable_0F3ACE, 1 }, + /* 0xcf */ { itable_0F3ACF, 1 }, + /* 0xd0 */ { NULL, 0 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { itable_0F3ADF, 1 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { itable_0F3AF0, 1 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_0FA6[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { itable_0FA6C0, 1 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { itable_0FA6C8, 1 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { itable_0FA6D0, 1 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { NULL, 0 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { NULL, 0 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { NULL, 0 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_0FA7[256] = { + /* 0x00 */ { NULL, 0 }, + /* 0x01 */ { NULL, 0 }, + /* 0x02 */ { NULL, 0 }, + /* 0x03 */ { NULL, 0 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { NULL, 0 }, + /* 0x06 */ { NULL, 0 }, + /* 0x07 */ { NULL, 0 }, + /* 0x08 */ { NULL, 0 }, + /* 0x09 */ { NULL, 0 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { NULL, 0 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { NULL, 0 }, + /* 0x0e */ { NULL, 0 }, + /* 0x0f */ { NULL, 0 }, + /* 0x10 */ { NULL, 0 }, + /* 0x11 */ { NULL, 0 }, + /* 0x12 */ { NULL, 0 }, + /* 0x13 */ { NULL, 0 }, + /* 0x14 */ { NULL, 0 }, + /* 0x15 */ { NULL, 0 }, + /* 0x16 */ { NULL, 0 }, + /* 0x17 */ { NULL, 0 }, + /* 0x18 */ { NULL, 0 }, + /* 0x19 */ { NULL, 0 }, + /* 0x1a */ { NULL, 0 }, + /* 0x1b */ { NULL, 0 }, + /* 0x1c */ { NULL, 0 }, + /* 0x1d */ { NULL, 0 }, + /* 0x1e */ { NULL, 0 }, + /* 0x1f */ { NULL, 0 }, + /* 0x20 */ { NULL, 0 }, + /* 0x21 */ { NULL, 0 }, + /* 0x22 */ { NULL, 0 }, + /* 0x23 */ { NULL, 0 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { NULL, 0 }, + /* 0x29 */ { NULL, 0 }, + /* 0x2a */ { NULL, 0 }, + /* 0x2b */ { NULL, 0 }, + /* 0x2c */ { NULL, 0 }, + /* 0x2d */ { NULL, 0 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { NULL, 0 }, + /* 0x30 */ { NULL, 0 }, + /* 0x31 */ { NULL, 0 }, + /* 0x32 */ { NULL, 0 }, + /* 0x33 */ { NULL, 0 }, + /* 0x34 */ { NULL, 0 }, + /* 0x35 */ { NULL, 0 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { NULL, 0 }, + /* 0x38 */ { NULL, 0 }, + /* 0x39 */ { NULL, 0 }, + /* 0x3a */ { NULL, 0 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { NULL, 0 }, + /* 0x3d */ { NULL, 0 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { NULL, 0 }, + /* 0x41 */ { NULL, 0 }, + /* 0x42 */ { NULL, 0 }, + /* 0x43 */ { NULL, 0 }, + /* 0x44 */ { NULL, 0 }, + /* 0x45 */ { NULL, 0 }, + /* 0x46 */ { NULL, 0 }, + /* 0x47 */ { NULL, 0 }, + /* 0x48 */ { NULL, 0 }, + /* 0x49 */ { NULL, 0 }, + /* 0x4a */ { NULL, 0 }, + /* 0x4b */ { NULL, 0 }, + /* 0x4c */ { NULL, 0 }, + /* 0x4d */ { NULL, 0 }, + /* 0x4e */ { NULL, 0 }, + /* 0x4f */ { NULL, 0 }, + /* 0x50 */ { NULL, 0 }, + /* 0x51 */ { NULL, 0 }, + /* 0x52 */ { NULL, 0 }, + /* 0x53 */ { NULL, 0 }, + /* 0x54 */ { NULL, 0 }, + /* 0x55 */ { NULL, 0 }, + /* 0x56 */ { NULL, 0 }, + /* 0x57 */ { NULL, 0 }, + /* 0x58 */ { NULL, 0 }, + /* 0x59 */ { NULL, 0 }, + /* 0x5a */ { NULL, 0 }, + /* 0x5b */ { NULL, 0 }, + /* 0x5c */ { NULL, 0 }, + /* 0x5d */ { NULL, 0 }, + /* 0x5e */ { NULL, 0 }, + /* 0x5f */ { NULL, 0 }, + /* 0x60 */ { NULL, 0 }, + /* 0x61 */ { NULL, 0 }, + /* 0x62 */ { NULL, 0 }, + /* 0x63 */ { NULL, 0 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { NULL, 0 }, + /* 0x69 */ { NULL, 0 }, + /* 0x6a */ { NULL, 0 }, + /* 0x6b */ { NULL, 0 }, + /* 0x6c */ { NULL, 0 }, + /* 0x6d */ { NULL, 0 }, + /* 0x6e */ { NULL, 0 }, + /* 0x6f */ { NULL, 0 }, + /* 0x70 */ { NULL, 0 }, + /* 0x71 */ { NULL, 0 }, + /* 0x72 */ { NULL, 0 }, + /* 0x73 */ { NULL, 0 }, + /* 0x74 */ { NULL, 0 }, + /* 0x75 */ { NULL, 0 }, + /* 0x76 */ { NULL, 0 }, + /* 0x77 */ { NULL, 0 }, + /* 0x78 */ { NULL, 0 }, + /* 0x79 */ { NULL, 0 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { NULL, 0 }, + /* 0x7c */ { NULL, 0 }, + /* 0x7d */ { NULL, 0 }, + /* 0x7e */ { NULL, 0 }, + /* 0x7f */ { NULL, 0 }, + /* 0x80 */ { NULL, 0 }, + /* 0x81 */ { NULL, 0 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { NULL, 0 }, + /* 0x84 */ { NULL, 0 }, + /* 0x85 */ { NULL, 0 }, + /* 0x86 */ { NULL, 0 }, + /* 0x87 */ { NULL, 0 }, + /* 0x88 */ { NULL, 0 }, + /* 0x89 */ { NULL, 0 }, + /* 0x8a */ { NULL, 0 }, + /* 0x8b */ { NULL, 0 }, + /* 0x8c */ { NULL, 0 }, + /* 0x8d */ { NULL, 0 }, + /* 0x8e */ { NULL, 0 }, + /* 0x8f */ { NULL, 0 }, + /* 0x90 */ { NULL, 0 }, + /* 0x91 */ { NULL, 0 }, + /* 0x92 */ { NULL, 0 }, + /* 0x93 */ { NULL, 0 }, + /* 0x94 */ { NULL, 0 }, + /* 0x95 */ { NULL, 0 }, + /* 0x96 */ { NULL, 0 }, + /* 0x97 */ { NULL, 0 }, + /* 0x98 */ { NULL, 0 }, + /* 0x99 */ { NULL, 0 }, + /* 0x9a */ { NULL, 0 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { NULL, 0 }, + /* 0x9d */ { NULL, 0 }, + /* 0x9e */ { NULL, 0 }, + /* 0x9f */ { NULL, 0 }, + /* 0xa0 */ { NULL, 0 }, + /* 0xa1 */ { NULL, 0 }, + /* 0xa2 */ { NULL, 0 }, + /* 0xa3 */ { NULL, 0 }, + /* 0xa4 */ { NULL, 0 }, + /* 0xa5 */ { NULL, 0 }, + /* 0xa6 */ { NULL, 0 }, + /* 0xa7 */ { NULL, 0 }, + /* 0xa8 */ { NULL, 0 }, + /* 0xa9 */ { NULL, 0 }, + /* 0xaa */ { NULL, 0 }, + /* 0xab */ { NULL, 0 }, + /* 0xac */ { NULL, 0 }, + /* 0xad */ { NULL, 0 }, + /* 0xae */ { NULL, 0 }, + /* 0xaf */ { NULL, 0 }, + /* 0xb0 */ { NULL, 0 }, + /* 0xb1 */ { NULL, 0 }, + /* 0xb2 */ { NULL, 0 }, + /* 0xb3 */ { NULL, 0 }, + /* 0xb4 */ { NULL, 0 }, + /* 0xb5 */ { NULL, 0 }, + /* 0xb6 */ { NULL, 0 }, + /* 0xb7 */ { NULL, 0 }, + /* 0xb8 */ { NULL, 0 }, + /* 0xb9 */ { NULL, 0 }, + /* 0xba */ { NULL, 0 }, + /* 0xbb */ { NULL, 0 }, + /* 0xbc */ { NULL, 0 }, + /* 0xbd */ { NULL, 0 }, + /* 0xbe */ { NULL, 0 }, + /* 0xbf */ { NULL, 0 }, + /* 0xc0 */ { itable_0FA7C0, 1 }, + /* 0xc1 */ { NULL, 0 }, + /* 0xc2 */ { NULL, 0 }, + /* 0xc3 */ { NULL, 0 }, + /* 0xc4 */ { NULL, 0 }, + /* 0xc5 */ { NULL, 0 }, + /* 0xc6 */ { NULL, 0 }, + /* 0xc7 */ { NULL, 0 }, + /* 0xc8 */ { itable_0FA7C8, 1 }, + /* 0xc9 */ { NULL, 0 }, + /* 0xca */ { NULL, 0 }, + /* 0xcb */ { NULL, 0 }, + /* 0xcc */ { NULL, 0 }, + /* 0xcd */ { NULL, 0 }, + /* 0xce */ { NULL, 0 }, + /* 0xcf */ { NULL, 0 }, + /* 0xd0 */ { itable_0FA7D0, 1 }, + /* 0xd1 */ { NULL, 0 }, + /* 0xd2 */ { NULL, 0 }, + /* 0xd3 */ { NULL, 0 }, + /* 0xd4 */ { NULL, 0 }, + /* 0xd5 */ { NULL, 0 }, + /* 0xd6 */ { NULL, 0 }, + /* 0xd7 */ { NULL, 0 }, + /* 0xd8 */ { itable_0FA7D8, 1 }, + /* 0xd9 */ { NULL, 0 }, + /* 0xda */ { NULL, 0 }, + /* 0xdb */ { NULL, 0 }, + /* 0xdc */ { NULL, 0 }, + /* 0xdd */ { NULL, 0 }, + /* 0xde */ { NULL, 0 }, + /* 0xdf */ { NULL, 0 }, + /* 0xe0 */ { itable_0FA7E0, 1 }, + /* 0xe1 */ { NULL, 0 }, + /* 0xe2 */ { NULL, 0 }, + /* 0xe3 */ { NULL, 0 }, + /* 0xe4 */ { NULL, 0 }, + /* 0xe5 */ { NULL, 0 }, + /* 0xe6 */ { NULL, 0 }, + /* 0xe7 */ { NULL, 0 }, + /* 0xe8 */ { itable_0FA7E8, 1 }, + /* 0xe9 */ { NULL, 0 }, + /* 0xea */ { NULL, 0 }, + /* 0xeb */ { NULL, 0 }, + /* 0xec */ { NULL, 0 }, + /* 0xed */ { NULL, 0 }, + /* 0xee */ { NULL, 0 }, + /* 0xef */ { NULL, 0 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { NULL, 0 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { NULL, 0 }, + /* 0xf5 */ { NULL, 0 }, + /* 0xf6 */ { NULL, 0 }, + /* 0xf7 */ { NULL, 0 }, + /* 0xf8 */ { NULL, 0 }, + /* 0xf9 */ { NULL, 0 }, + /* 0xfa */ { NULL, 0 }, + /* 0xfb */ { NULL, 0 }, + /* 0xfc */ { NULL, 0 }, + /* 0xfd */ { NULL, 0 }, + /* 0xfe */ { NULL, 0 }, + /* 0xff */ { NULL, 0 }, +}; + +static const struct disasm_index itable_0F[256] = { + /* 0x00 */ { itable_0F00, 24 }, + /* 0x01 */ { itable_0F01, 66 }, + /* 0x02 */ { itable_0F02, 10 }, + /* 0x03 */ { itable_0F03, 10 }, + /* 0x04 */ { NULL, 0 }, + /* 0x05 */ { itable_0F05, 1 }, + /* 0x06 */ { itable_0F06, 1 }, + /* 0x07 */ { itable_0F07, 1 }, + /* 0x08 */ { itable_0F08, 1 }, + /* 0x09 */ { itable_0F09, 3 }, + /* 0x0a */ { NULL, 0 }, + /* 0x0b */ { itable_0F0B, 1 }, + /* 0x0c */ { NULL, 0 }, + /* 0x0d */ { itable_0F0D, 3 }, + /* 0x0e */ { itable_0F0E, 1 }, + /* 0x0f */ { itable_0F0F, 26 }, + /* 0x10 */ { itable_0F10, 4 }, + /* 0x11 */ { itable_0F11, 4 }, + /* 0x12 */ { itable_0F12, 5 }, + /* 0x13 */ { itable_0F13, 2 }, + /* 0x14 */ { itable_0F14, 2 }, + /* 0x15 */ { itable_0F15, 2 }, + /* 0x16 */ { itable_0F16, 4 }, + /* 0x17 */ { itable_0F17, 2 }, + /* 0x18 */ { itable_0F18, 30 }, + /* 0x19 */ { itable_0F19, 24 }, + /* 0x1a */ { itable_0F1A, 35 }, + /* 0x1b */ { itable_0F1B, 35 }, + /* 0x1c */ { itable_0F1C, 25 }, + /* 0x1d */ { itable_0F1D, 24 }, + /* 0x1e */ { itable_0F1E, 28 }, + /* 0x1f */ { itable_0F1F, 27 }, + /* 0x20 */ { itable_0F20, 2 }, + /* 0x21 */ { itable_0F21, 2 }, + /* 0x22 */ { itable_0F22, 2 }, + /* 0x23 */ { itable_0F23, 2 }, + /* 0x24 */ { NULL, 0 }, + /* 0x25 */ { NULL, 0 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { NULL, 0 }, + /* 0x28 */ { itable_0F28, 2 }, + /* 0x29 */ { itable_0F29, 2 }, + /* 0x2a */ { itable_0F2A, 6 }, + /* 0x2b */ { itable_0F2B, 4 }, + /* 0x2c */ { itable_0F2C, 8 }, + /* 0x2d */ { itable_0F2D, 10 }, + /* 0x2e */ { itable_0F2E, 2 }, + /* 0x2f */ { itable_0F2F, 2 }, + /* 0x30 */ { itable_0F30, 1 }, + /* 0x31 */ { itable_0F31, 1 }, + /* 0x32 */ { itable_0F32, 1 }, + /* 0x33 */ { itable_0F33, 1 }, + /* 0x34 */ { itable_0F34, 1 }, + /* 0x35 */ { itable_0F35, 1 }, + /* 0x36 */ { itable_0F36, 1 }, + /* 0x37 */ { itable_0F37, 2 }, + /* 0x38 */ { itable_0F38, -1 }, + /* 0x39 */ { itable_0F39, 1 }, + /* 0x3a */ { itable_0F3A, -1 }, + /* 0x3b */ { NULL, 0 }, + /* 0x3c */ { itable_0F3C, 1 }, + /* 0x3d */ { itable_0F3D, 1 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { NULL, 0 }, + /* 0x40 */ { itable_0F40, 6 }, + /* 0x41 */ { itable_0F41, 6 }, + /* 0x42 */ { itable_0F42, 6 }, + /* 0x43 */ { itable_0F43, 6 }, + /* 0x44 */ { itable_0F44, 6 }, + /* 0x45 */ { itable_0F45, 6 }, + /* 0x46 */ { itable_0F46, 6 }, + /* 0x47 */ { itable_0F47, 6 }, + /* 0x48 */ { itable_0F48, 6 }, + /* 0x49 */ { itable_0F49, 6 }, + /* 0x4a */ { itable_0F4A, 6 }, + /* 0x4b */ { itable_0F4B, 6 }, + /* 0x4c */ { itable_0F4C, 6 }, + /* 0x4d */ { itable_0F4D, 6 }, + /* 0x4e */ { itable_0F4E, 6 }, + /* 0x4f */ { itable_0F4F, 6 }, + /* 0x50 */ { itable_0F50, 5 }, + /* 0x51 */ { itable_0F51, 5 }, + /* 0x52 */ { itable_0F52, 3 }, + /* 0x53 */ { itable_0F53, 2 }, + /* 0x54 */ { itable_0F54, 3 }, + /* 0x55 */ { itable_0F55, 3 }, + /* 0x56 */ { itable_0F56, 2 }, + /* 0x57 */ { itable_0F57, 2 }, + /* 0x58 */ { itable_0F58, 5 }, + /* 0x59 */ { itable_0F59, 5 }, + /* 0x5a */ { itable_0F5A, 5 }, + /* 0x5b */ { itable_0F5B, 4 }, + /* 0x5c */ { itable_0F5C, 5 }, + /* 0x5d */ { itable_0F5D, 5 }, + /* 0x5e */ { itable_0F5E, 5 }, + /* 0x5f */ { itable_0F5F, 4 }, + /* 0x60 */ { itable_0F60, 2 }, + /* 0x61 */ { itable_0F61, 2 }, + /* 0x62 */ { itable_0F62, 2 }, + /* 0x63 */ { itable_0F63, 2 }, + /* 0x64 */ { itable_0F64, 2 }, + /* 0x65 */ { itable_0F65, 2 }, + /* 0x66 */ { itable_0F66, 2 }, + /* 0x67 */ { itable_0F67, 2 }, + /* 0x68 */ { itable_0F68, 2 }, + /* 0x69 */ { itable_0F69, 2 }, + /* 0x6a */ { itable_0F6A, 2 }, + /* 0x6b */ { itable_0F6B, 2 }, + /* 0x6c */ { itable_0F6C, 1 }, + /* 0x6d */ { itable_0F6D, 1 }, + /* 0x6e */ { itable_0F6E, 5 }, + /* 0x6f */ { itable_0F6F, 3 }, + /* 0x70 */ { itable_0F70, 7 }, + /* 0x71 */ { itable_0F71, 6 }, + /* 0x72 */ { itable_0F72, 6 }, + /* 0x73 */ { itable_0F73, 6 }, + /* 0x74 */ { itable_0F74, 2 }, + /* 0x75 */ { itable_0F75, 2 }, + /* 0x76 */ { itable_0F76, 2 }, + /* 0x77 */ { itable_0F77, 1 }, + /* 0x78 */ { itable_0F78, 5 }, + /* 0x79 */ { itable_0F79, 5 }, + /* 0x7a */ { NULL, 0 }, + /* 0x7b */ { itable_0F7B, 1 }, + /* 0x7c */ { itable_0F7C, 3 }, + /* 0x7d */ { itable_0F7D, 3 }, + /* 0x7e */ { itable_0F7E, 7 }, + /* 0x7f */ { itable_0F7F, 3 }, + /* 0x80 */ { itable_0F80, 4 }, + /* 0x81 */ { itable_0F81, 4 }, + /* 0x82 */ { itable_0F82, 4 }, + /* 0x83 */ { itable_0F83, 4 }, + /* 0x84 */ { itable_0F84, 4 }, + /* 0x85 */ { itable_0F85, 4 }, + /* 0x86 */ { itable_0F86, 4 }, + /* 0x87 */ { itable_0F87, 4 }, + /* 0x88 */ { itable_0F88, 4 }, + /* 0x89 */ { itable_0F89, 4 }, + /* 0x8a */ { itable_0F8A, 4 }, + /* 0x8b */ { itable_0F8B, 4 }, + /* 0x8c */ { itable_0F8C, 4 }, + /* 0x8d */ { itable_0F8D, 4 }, + /* 0x8e */ { itable_0F8E, 4 }, + /* 0x8f */ { itable_0F8F, 4 }, + /* 0x90 */ { itable_0F90, 2 }, + /* 0x91 */ { itable_0F91, 2 }, + /* 0x92 */ { itable_0F92, 2 }, + /* 0x93 */ { itable_0F93, 2 }, + /* 0x94 */ { itable_0F94, 2 }, + /* 0x95 */ { itable_0F95, 2 }, + /* 0x96 */ { itable_0F96, 2 }, + /* 0x97 */ { itable_0F97, 2 }, + /* 0x98 */ { itable_0F98, 2 }, + /* 0x99 */ { itable_0F99, 2 }, + /* 0x9a */ { itable_0F9A, 2 }, + /* 0x9b */ { itable_0F9B, 2 }, + /* 0x9c */ { itable_0F9C, 2 }, + /* 0x9d */ { itable_0F9D, 2 }, + /* 0x9e */ { itable_0F9E, 2 }, + /* 0x9f */ { itable_0F9F, 2 }, + /* 0xa0 */ { itable_0FA0, 1 }, + /* 0xa1 */ { itable_0FA1, 1 }, + /* 0xa2 */ { itable_0FA2, 1 }, + /* 0xa3 */ { itable_0FA3, 6 }, + /* 0xa4 */ { itable_0FA4, 6 }, + /* 0xa5 */ { itable_0FA5, 6 }, + /* 0xa6 */ { itable_0FA6, -1 }, + /* 0xa7 */ { itable_0FA7, -1 }, + /* 0xa8 */ { itable_0FA8, 1 }, + /* 0xa9 */ { itable_0FA9, 1 }, + /* 0xaa */ { itable_0FAA, 1 }, + /* 0xab */ { itable_0FAB, 6 }, + /* 0xac */ { itable_0FAC, 6 }, + /* 0xad */ { itable_0FAD, 6 }, + /* 0xae */ { itable_0FAE, 40 }, + /* 0xaf */ { itable_0FAF, 6 }, + /* 0xb0 */ { itable_0FB0, 2 }, + /* 0xb1 */ { itable_0FB1, 6 }, + /* 0xb2 */ { itable_0FB2, 3 }, + /* 0xb3 */ { itable_0FB3, 6 }, + /* 0xb4 */ { itable_0FB4, 3 }, + /* 0xb5 */ { itable_0FB5, 3 }, + /* 0xb6 */ { itable_0FB6, 4 }, + /* 0xb7 */ { itable_0FB7, 2 }, + /* 0xb8 */ { itable_0FB8, 6 }, + /* 0xb9 */ { itable_0FB9, 3 }, + /* 0xba */ { itable_0FBA, 12 }, + /* 0xbb */ { itable_0FBB, 6 }, + /* 0xbc */ { itable_0FBC, 9 }, + /* 0xbd */ { itable_0FBD, 9 }, + /* 0xbe */ { itable_0FBE, 4 }, + /* 0xbf */ { itable_0FBF, 2 }, + /* 0xc0 */ { itable_0FC0, 2 }, + /* 0xc1 */ { itable_0FC1, 6 }, + /* 0xc2 */ { itable_0FC2, 36 }, + /* 0xc3 */ { itable_0FC3, 2 }, + /* 0xc4 */ { itable_0FC4, 6 }, + /* 0xc5 */ { itable_0FC5, 2 }, + /* 0xc6 */ { itable_0FC6, 2 }, + /* 0xc7 */ { itable_0FC7, 22 }, + /* 0xc8 */ { itable_0FC8, 2 }, + /* 0xc9 */ { itable_0FC9, 2 }, + /* 0xca */ { itable_0FCA, 2 }, + /* 0xcb */ { itable_0FCB, 2 }, + /* 0xcc */ { itable_0FCC, 2 }, + /* 0xcd */ { itable_0FCD, 2 }, + /* 0xce */ { itable_0FCE, 2 }, + /* 0xcf */ { itable_0FCF, 2 }, + /* 0xd0 */ { itable_0FD0, 2 }, + /* 0xd1 */ { itable_0FD1, 2 }, + /* 0xd2 */ { itable_0FD2, 2 }, + /* 0xd3 */ { itable_0FD3, 2 }, + /* 0xd4 */ { itable_0FD4, 2 }, + /* 0xd5 */ { itable_0FD5, 2 }, + /* 0xd6 */ { itable_0FD6, 4 }, + /* 0xd7 */ { itable_0FD7, 2 }, + /* 0xd8 */ { itable_0FD8, 2 }, + /* 0xd9 */ { itable_0FD9, 2 }, + /* 0xda */ { itable_0FDA, 2 }, + /* 0xdb */ { itable_0FDB, 2 }, + /* 0xdc */ { itable_0FDC, 2 }, + /* 0xdd */ { itable_0FDD, 2 }, + /* 0xde */ { itable_0FDE, 2 }, + /* 0xdf */ { itable_0FDF, 2 }, + /* 0xe0 */ { itable_0FE0, 2 }, + /* 0xe1 */ { itable_0FE1, 2 }, + /* 0xe2 */ { itable_0FE2, 2 }, + /* 0xe3 */ { itable_0FE3, 2 }, + /* 0xe4 */ { itable_0FE4, 2 }, + /* 0xe5 */ { itable_0FE5, 2 }, + /* 0xe6 */ { itable_0FE6, 3 }, + /* 0xe7 */ { itable_0FE7, 2 }, + /* 0xe8 */ { itable_0FE8, 2 }, + /* 0xe9 */ { itable_0FE9, 2 }, + /* 0xea */ { itable_0FEA, 2 }, + /* 0xeb */ { itable_0FEB, 2 }, + /* 0xec */ { itable_0FEC, 2 }, + /* 0xed */ { itable_0FED, 2 }, + /* 0xee */ { itable_0FEE, 2 }, + /* 0xef */ { itable_0FEF, 2 }, + /* 0xf0 */ { itable_0FF0, 1 }, + /* 0xf1 */ { itable_0FF1, 2 }, + /* 0xf2 */ { itable_0FF2, 2 }, + /* 0xf3 */ { itable_0FF3, 2 }, + /* 0xf4 */ { itable_0FF4, 2 }, + /* 0xf5 */ { itable_0FF5, 2 }, + /* 0xf6 */ { itable_0FF6, 2 }, + /* 0xf7 */ { itable_0FF7, 2 }, + /* 0xf8 */ { itable_0FF8, 2 }, + /* 0xf9 */ { itable_0FF9, 2 }, + /* 0xfa */ { itable_0FFA, 2 }, + /* 0xfb */ { itable_0FFB, 2 }, + /* 0xfc */ { itable_0FFC, 2 }, + /* 0xfd */ { itable_0FFD, 2 }, + /* 0xfe */ { itable_0FFE, 2 }, + /* 0xff */ { itable_0FFF, 4 }, +}; + +const struct disasm_index itable[256] = { + /* 0x00 */ { itable_00, 2 }, + /* 0x01 */ { itable_01, 6 }, + /* 0x02 */ { itable_02, 2 }, + /* 0x03 */ { itable_03, 6 }, + /* 0x04 */ { itable_04, 1 }, + /* 0x05 */ { itable_05, 3 }, + /* 0x06 */ { itable_06, 1 }, + /* 0x07 */ { itable_07, 1 }, + /* 0x08 */ { itable_08, 2 }, + /* 0x09 */ { itable_09, 6 }, + /* 0x0a */ { itable_0A, 2 }, + /* 0x0b */ { itable_0B, 6 }, + /* 0x0c */ { itable_0C, 1 }, + /* 0x0d */ { itable_0D, 3 }, + /* 0x0e */ { itable_0E, 1 }, + /* 0x0f */ { itable_0F, -1 }, + /* 0x10 */ { itable_10, 2 }, + /* 0x11 */ { itable_11, 6 }, + /* 0x12 */ { itable_12, 2 }, + /* 0x13 */ { itable_13, 6 }, + /* 0x14 */ { itable_14, 1 }, + /* 0x15 */ { itable_15, 3 }, + /* 0x16 */ { itable_16, 1 }, + /* 0x17 */ { itable_17, 1 }, + /* 0x18 */ { itable_18, 2 }, + /* 0x19 */ { itable_19, 6 }, + /* 0x1a */ { itable_1A, 2 }, + /* 0x1b */ { itable_1B, 6 }, + /* 0x1c */ { itable_1C, 1 }, + /* 0x1d */ { itable_1D, 3 }, + /* 0x1e */ { itable_1E, 1 }, + /* 0x1f */ { itable_1F, 1 }, + /* 0x20 */ { itable_20, 2 }, + /* 0x21 */ { itable_21, 6 }, + /* 0x22 */ { itable_22, 2 }, + /* 0x23 */ { itable_23, 6 }, + /* 0x24 */ { itable_24, 1 }, + /* 0x25 */ { itable_25, 3 }, + /* 0x26 */ { NULL, 0 }, + /* 0x27 */ { itable_27, 1 }, + /* 0x28 */ { itable_28, 2 }, + /* 0x29 */ { itable_29, 6 }, + /* 0x2a */ { itable_2A, 2 }, + /* 0x2b */ { itable_2B, 6 }, + /* 0x2c */ { itable_2C, 1 }, + /* 0x2d */ { itable_2D, 3 }, + /* 0x2e */ { NULL, 0 }, + /* 0x2f */ { itable_2F, 1 }, + /* 0x30 */ { itable_30, 2 }, + /* 0x31 */ { itable_31, 6 }, + /* 0x32 */ { itable_32, 2 }, + /* 0x33 */ { itable_33, 6 }, + /* 0x34 */ { itable_34, 1 }, + /* 0x35 */ { itable_35, 3 }, + /* 0x36 */ { NULL, 0 }, + /* 0x37 */ { itable_37, 1 }, + /* 0x38 */ { itable_38, 2 }, + /* 0x39 */ { itable_39, 6 }, + /* 0x3a */ { itable_3A, 2 }, + /* 0x3b */ { itable_3B, 6 }, + /* 0x3c */ { itable_3C, 1 }, + /* 0x3d */ { itable_3D, 3 }, + /* 0x3e */ { NULL, 0 }, + /* 0x3f */ { itable_3F, 1 }, + /* 0x40 */ { itable_40, 2 }, + /* 0x41 */ { itable_41, 2 }, + /* 0x42 */ { itable_42, 2 }, + /* 0x43 */ { itable_43, 2 }, + /* 0x44 */ { itable_44, 2 }, + /* 0x45 */ { itable_45, 2 }, + /* 0x46 */ { itable_46, 2 }, + /* 0x47 */ { itable_47, 2 }, + /* 0x48 */ { itable_48, 2 }, + /* 0x49 */ { itable_49, 2 }, + /* 0x4a */ { itable_4A, 2 }, + /* 0x4b */ { itable_4B, 2 }, + /* 0x4c */ { itable_4C, 2 }, + /* 0x4d */ { itable_4D, 2 }, + /* 0x4e */ { itable_4E, 2 }, + /* 0x4f */ { itable_4F, 2 }, + /* 0x50 */ { itable_50, 3 }, + /* 0x51 */ { itable_51, 3 }, + /* 0x52 */ { itable_52, 3 }, + /* 0x53 */ { itable_53, 3 }, + /* 0x54 */ { itable_54, 3 }, + /* 0x55 */ { itable_55, 3 }, + /* 0x56 */ { itable_56, 3 }, + /* 0x57 */ { itable_57, 3 }, + /* 0x58 */ { itable_58, 3 }, + /* 0x59 */ { itable_59, 3 }, + /* 0x5a */ { itable_5A, 3 }, + /* 0x5b */ { itable_5B, 3 }, + /* 0x5c */ { itable_5C, 3 }, + /* 0x5d */ { itable_5D, 3 }, + /* 0x5e */ { itable_5E, 3 }, + /* 0x5f */ { itable_5F, 3 }, + /* 0x60 */ { itable_60, 3 }, + /* 0x61 */ { itable_61, 3 }, + /* 0x62 */ { itable_62, 2 }, + /* 0x63 */ { itable_63, 3 }, + /* 0x64 */ { NULL, 0 }, + /* 0x65 */ { NULL, 0 }, + /* 0x66 */ { NULL, 0 }, + /* 0x67 */ { NULL, 0 }, + /* 0x68 */ { itable_68, 5 }, + /* 0x69 */ { itable_69, 9 }, + /* 0x6a */ { itable_6A, 1 }, + /* 0x6b */ { itable_6B, 9 }, + /* 0x6c */ { itable_6C, 1 }, + /* 0x6d */ { itable_6D, 2 }, + /* 0x6e */ { itable_6E, 1 }, + /* 0x6f */ { itable_6F, 2 }, + /* 0x70 */ { itable_70, 1 }, + /* 0x71 */ { itable_71, 1 }, + /* 0x72 */ { itable_72, 1 }, + /* 0x73 */ { itable_73, 1 }, + /* 0x74 */ { itable_74, 1 }, + /* 0x75 */ { itable_75, 1 }, + /* 0x76 */ { itable_76, 1 }, + /* 0x77 */ { itable_77, 1 }, + /* 0x78 */ { itable_78, 1 }, + /* 0x79 */ { itable_79, 1 }, + /* 0x7a */ { itable_7A, 1 }, + /* 0x7b */ { itable_7B, 1 }, + /* 0x7c */ { itable_7C, 1 }, + /* 0x7d */ { itable_7D, 1 }, + /* 0x7e */ { itable_7E, 1 }, + /* 0x7f */ { itable_7F, 1 }, + /* 0x80 */ { itable_80, 15 }, + /* 0x81 */ { itable_81, 40 }, + /* 0x82 */ { NULL, 0 }, + /* 0x83 */ { itable_83, 24 }, + /* 0x84 */ { itable_84, 3 }, + /* 0x85 */ { itable_85, 9 }, + /* 0x86 */ { itable_86, 4 }, + /* 0x87 */ { itable_87, 12 }, + /* 0x88 */ { itable_88, 2 }, + /* 0x89 */ { itable_89, 6 }, + /* 0x8a */ { itable_8A, 2 }, + /* 0x8b */ { itable_8B, 6 }, + /* 0x8c */ { itable_8C, 4 }, + /* 0x8d */ { itable_8D, 3 }, + /* 0x8e */ { itable_8E, 4 }, + /* 0x8f */ { itable_8F, 3 }, + /* 0x90 */ { itable_90, 9 }, + /* 0x91 */ { itable_91, 6 }, + /* 0x92 */ { itable_92, 6 }, + /* 0x93 */ { itable_93, 6 }, + /* 0x94 */ { itable_94, 6 }, + /* 0x95 */ { itable_95, 6 }, + /* 0x96 */ { itable_96, 6 }, + /* 0x97 */ { itable_97, 6 }, + /* 0x98 */ { itable_98, 3 }, + /* 0x99 */ { itable_99, 3 }, + /* 0x9a */ { itable_9A, 5 }, + /* 0x9b */ { NULL, 0 }, + /* 0x9c */ { itable_9C, 4 }, + /* 0x9d */ { itable_9D, 4 }, + /* 0x9e */ { itable_9E, 1 }, + /* 0x9f */ { itable_9F, 1 }, + /* 0xa0 */ { itable_A0, 1 }, + /* 0xa1 */ { itable_A1, 3 }, + /* 0xa2 */ { itable_A2, 1 }, + /* 0xa3 */ { itable_A3, 3 }, + /* 0xa4 */ { itable_A4, 1 }, + /* 0xa5 */ { itable_A5, 3 }, + /* 0xa6 */ { itable_A6, 1 }, + /* 0xa7 */ { itable_A7, 3 }, + /* 0xa8 */ { itable_A8, 1 }, + /* 0xa9 */ { itable_A9, 3 }, + /* 0xaa */ { itable_AA, 1 }, + /* 0xab */ { itable_AB, 3 }, + /* 0xac */ { itable_AC, 1 }, + /* 0xad */ { itable_AD, 3 }, + /* 0xae */ { itable_AE, 1 }, + /* 0xaf */ { itable_AF, 3 }, + /* 0xb0 */ { itable_B0, 1 }, + /* 0xb1 */ { itable_B1, 1 }, + /* 0xb2 */ { itable_B2, 1 }, + /* 0xb3 */ { itable_B3, 1 }, + /* 0xb4 */ { itable_B4, 1 }, + /* 0xb5 */ { itable_B5, 1 }, + /* 0xb6 */ { itable_B6, 1 }, + /* 0xb7 */ { itable_B7, 1 }, + /* 0xb8 */ { itable_B8, 3 }, + /* 0xb9 */ { itable_B9, 3 }, + /* 0xba */ { itable_BA, 3 }, + /* 0xbb */ { itable_BB, 3 }, + /* 0xbc */ { itable_BC, 3 }, + /* 0xbd */ { itable_BD, 3 }, + /* 0xbe */ { itable_BE, 3 }, + /* 0xbf */ { itable_BF, 3 }, + /* 0xc0 */ { itable_C0, 7 }, + /* 0xc1 */ { itable_C1, 21 }, + /* 0xc2 */ { itable_C2, 8 }, + /* 0xc3 */ { itable_C3, 8 }, + /* 0xc4 */ { itable_C4, 2 }, + /* 0xc5 */ { itable_C5, 2 }, + /* 0xc6 */ { itable_C6, 4 }, + /* 0xc7 */ { itable_C7, 10 }, + /* 0xc8 */ { itable_C8, 1 }, + /* 0xc9 */ { itable_C9, 1 }, + /* 0xca */ { itable_CA, 4 }, + /* 0xcb */ { itable_CB, 4 }, + /* 0xcc */ { itable_CC, 1 }, + /* 0xcd */ { itable_CD, 1 }, + /* 0xce */ { itable_CE, 1 }, + /* 0xcf */ { itable_CF, 4 }, + /* 0xd0 */ { itable_D0, 7 }, + /* 0xd1 */ { itable_D1, 21 }, + /* 0xd2 */ { itable_D2, 7 }, + /* 0xd3 */ { itable_D3, 21 }, + /* 0xd4 */ { itable_D4, 2 }, + /* 0xd5 */ { itable_D5, 2 }, + /* 0xd6 */ { itable_D6, 1 }, + /* 0xd7 */ { itable_D7, 2 }, + /* 0xd8 */ { itable_D8, 24 }, + /* 0xd9 */ { itable_D9, 41 }, + /* 0xda */ { itable_DA, 17 }, + /* 0xdb */ { itable_DB, 27 }, + /* 0xdc */ { itable_DC, 20 }, + /* 0xdd */ { itable_DD, 17 }, + /* 0xde */ { itable_DE, 21 }, + /* 0xdf */ { itable_DF, 18 }, + /* 0xe0 */ { itable_E0, 8 }, + /* 0xe1 */ { itable_E1, 8 }, + /* 0xe2 */ { itable_E2, 4 }, + /* 0xe3 */ { itable_E3, 3 }, + /* 0xe4 */ { itable_E4, 1 }, + /* 0xe5 */ { itable_E5, 2 }, + /* 0xe6 */ { itable_E6, 1 }, + /* 0xe7 */ { itable_E7, 2 }, + /* 0xe8 */ { itable_E8, 4 }, + /* 0xe9 */ { itable_E9, 4 }, + /* 0xea */ { itable_EA, 5 }, + /* 0xeb */ { itable_EB, 1 }, + /* 0xec */ { itable_EC, 1 }, + /* 0xed */ { itable_ED, 2 }, + /* 0xee */ { itable_EE, 1 }, + /* 0xef */ { itable_EF, 2 }, + /* 0xf0 */ { NULL, 0 }, + /* 0xf1 */ { itable_F1, 2 }, + /* 0xf2 */ { NULL, 0 }, + /* 0xf3 */ { NULL, 0 }, + /* 0xf4 */ { itable_F4, 1 }, + /* 0xf5 */ { itable_F5, 1 }, + /* 0xf6 */ { itable_F6, 8 }, + /* 0xf7 */ { itable_F7, 23 }, + /* 0xf8 */ { itable_F8, 1 }, + /* 0xf9 */ { itable_F9, 1 }, + /* 0xfa */ { itable_FA, 1 }, + /* 0xfb */ { itable_FB, 1 }, + /* 0xfc */ { itable_FC, 1 }, + /* 0xfd */ { itable_FD, 1 }, + /* 0xfe */ { itable_FE, 2 }, + /* 0xff */ { itable_FF, 27 }, +}; + +const struct disasm_index * const itable_vex[NASM_VEX_CLASSES][32][4] = +{ + { + { NULL, NULL, NULL, NULL, }, + { itable_vex010, itable_vex011, itable_vex012, itable_vex013, }, + { itable_vex020, itable_vex021, itable_vex022, itable_vex023, }, + { NULL, itable_vex031, NULL, itable_vex033, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + }, + { + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { itable_xop080, NULL, NULL, NULL, }, + { itable_xop090, NULL, NULL, NULL, }, + { itable_xop0A0, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + }, + { + { NULL, NULL, NULL, NULL, }, + { itable_evex010,itable_evex011,itable_evex012,itable_evex013,}, + { NULL, itable_evex021,itable_evex022,itable_evex023,}, + { itable_evex030,itable_evex031,itable_evex032,NULL, }, + { NULL, NULL, NULL, NULL, }, + { itable_evex050,itable_evex051,itable_evex052,itable_evex053,}, + { itable_evex060,itable_evex061,itable_evex062,itable_evex063,}, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + { NULL, NULL, NULL, NULL, }, + }, +}; diff --git a/vere/ext/nasm/x86/insnsi.h b/vere/ext/nasm/x86/insnsi.h new file mode 100644 index 0000000..65188c0 --- /dev/null +++ b/vere/ext/nasm/x86/insnsi.h @@ -0,0 +1,2265 @@ +/* This file is auto-generated from insns.dat by insns.pl - don't edit it */ + +/* This file in included by nasm.h */ + +/* Instruction names */ + +#ifndef NASM_INSNSI_H +#define NASM_INSNSI_H 1 + +enum opcode { + I_DB, + I_DW, + I_DD, + I_DQ, + I_DT, + I_DO, + I_DY, + I_DZ, + I_RESB, + I_RESW, + I_RESD, + I_RESQ, + I_REST, + I_RESO, + I_RESY, + I_RESZ, + I_INCBIN, + I_AAA, + I_AAD, + I_AAM, + I_AAS, + I_ADC, + I_ADD, + I_AND, + I_ARPL, + I_BB0_RESET, + I_BB1_RESET, + I_BOUND, + I_BSF, + I_BSR, + I_BSWAP, + I_BT, + I_BTC, + I_BTR, + I_BTS, + I_CALL, + I_CBW, + I_CDQ, + I_CDQE, + I_CLC, + I_CLD, + I_CLI, + I_CLTS, + I_CMC, + I_CMP, + I_CMPSB, + I_CMPSD, + I_CMPSQ, + I_CMPSW, + I_CMPXCHG, + I_CMPXCHG486, + I_CMPXCHG8B, + I_CMPXCHG16B, + I_CPUID, + I_CPU_READ, + I_CPU_WRITE, + I_CQO, + I_CWD, + I_CWDE, + I_DAA, + I_DAS, + I_DEC, + I_DIV, + I_DMINT, + I_EMMS, + I_ENTER, + I_EQU, + I_F2XM1, + I_FABS, + I_FADD, + I_FADDP, + I_FBLD, + I_FBSTP, + I_FCHS, + I_FCLEX, + I_FCMOVB, + I_FCMOVBE, + I_FCMOVE, + I_FCMOVNB, + I_FCMOVNBE, + I_FCMOVNE, + I_FCMOVNU, + I_FCMOVU, + I_FCOM, + I_FCOMI, + I_FCOMIP, + I_FCOMP, + I_FCOMPP, + I_FCOS, + I_FDECSTP, + I_FDISI, + I_FDIV, + I_FDIVP, + I_FDIVR, + I_FDIVRP, + I_FEMMS, + I_FENI, + I_FFREE, + I_FFREEP, + I_FIADD, + I_FICOM, + I_FICOMP, + I_FIDIV, + I_FIDIVR, + I_FILD, + I_FIMUL, + I_FINCSTP, + I_FINIT, + I_FIST, + I_FISTP, + I_FISTTP, + I_FISUB, + I_FISUBR, + I_FLD, + I_FLD1, + I_FLDCW, + I_FLDENV, + I_FLDL2E, + I_FLDL2T, + I_FLDLG2, + I_FLDLN2, + I_FLDPI, + I_FLDZ, + I_FMUL, + I_FMULP, + I_FNCLEX, + I_FNDISI, + I_FNENI, + I_FNINIT, + I_FNOP, + I_FNSAVE, + I_FNSTCW, + I_FNSTENV, + I_FNSTSW, + I_FPATAN, + I_FPREM, + I_FPREM1, + I_FPTAN, + I_FRNDINT, + I_FRSTOR, + I_FSAVE, + I_FSCALE, + I_FSETPM, + I_FSIN, + I_FSINCOS, + I_FSQRT, + I_FST, + I_FSTCW, + I_FSTENV, + I_FSTP, + I_FSTSW, + I_FSUB, + I_FSUBP, + I_FSUBR, + I_FSUBRP, + I_FTST, + I_FUCOM, + I_FUCOMI, + I_FUCOMIP, + I_FUCOMP, + I_FUCOMPP, + I_FXAM, + I_FXCH, + I_FXTRACT, + I_FYL2X, + I_FYL2XP1, + I_HLT, + I_IBTS, + I_ICEBP, + I_IDIV, + I_IMUL, + I_IN, + I_INC, + I_INSB, + I_INSD, + I_INSW, + I_INT, + I_INT01, + I_INT1, + I_INT03, + I_INT3, + I_INTO, + I_INVD, + I_INVPCID, + I_INVLPG, + I_INVLPGA, + I_IRET, + I_IRETD, + I_IRETQ, + I_IRETW, + I_JCXZ, + I_JECXZ, + I_JRCXZ, + I_JMP, + I_JMPE, + I_LAHF, + I_LAR, + I_LDS, + I_LEA, + I_LEAVE, + I_LES, + I_LFENCE, + I_LFS, + I_LGDT, + I_LGS, + I_LIDT, + I_LLDT, + I_LMSW, + I_LOADALL, + I_LOADALL286, + I_LODSB, + I_LODSD, + I_LODSQ, + I_LODSW, + I_LOOP, + I_LOOPE, + I_LOOPNE, + I_LOOPNZ, + I_LOOPZ, + I_LSL, + I_LSS, + I_LTR, + I_MFENCE, + I_MONITOR, + I_MONITORX, + I_MOV, + I_MOVD, + I_MOVQ, + I_MOVSB, + I_MOVSD, + I_MOVSQ, + I_MOVSW, + I_MOVSX, + I_MOVSXD, + I_MOVZX, + I_MUL, + I_MWAIT, + I_MWAITX, + I_NEG, + I_NOP, + I_NOT, + I_OR, + I_OUT, + I_OUTSB, + I_OUTSD, + I_OUTSW, + I_PACKSSDW, + I_PACKSSWB, + I_PACKUSWB, + I_PADDB, + I_PADDD, + I_PADDSB, + I_PADDSIW, + I_PADDSW, + I_PADDUSB, + I_PADDUSW, + I_PADDW, + I_PAND, + I_PANDN, + I_PAUSE, + I_PAVEB, + I_PAVGUSB, + I_PCMPEQB, + I_PCMPEQD, + I_PCMPEQW, + I_PCMPGTB, + I_PCMPGTD, + I_PCMPGTW, + I_PDISTIB, + I_PF2ID, + I_PFACC, + I_PFADD, + I_PFCMPEQ, + I_PFCMPGE, + I_PFCMPGT, + I_PFMAX, + I_PFMIN, + I_PFMUL, + I_PFRCP, + I_PFRCPIT1, + I_PFRCPIT2, + I_PFRSQIT1, + I_PFRSQRT, + I_PFSUB, + I_PFSUBR, + I_PI2FD, + I_PMACHRIW, + I_PMADDWD, + I_PMAGW, + I_PMULHRIW, + I_PMULHRWA, + I_PMULHRWC, + I_PMULHW, + I_PMULLW, + I_PMVGEZB, + I_PMVLZB, + I_PMVNZB, + I_PMVZB, + I_POP, + I_POPA, + I_POPAD, + I_POPAW, + I_POPF, + I_POPFD, + I_POPFQ, + I_POPFW, + I_POR, + I_PREFETCH, + I_PREFETCHW, + I_PSLLD, + I_PSLLQ, + I_PSLLW, + I_PSRAD, + I_PSRAW, + I_PSRLD, + I_PSRLQ, + I_PSRLW, + I_PSUBB, + I_PSUBD, + I_PSUBSB, + I_PSUBSIW, + I_PSUBSW, + I_PSUBUSB, + I_PSUBUSW, + I_PSUBW, + I_PUNPCKHBW, + I_PUNPCKHDQ, + I_PUNPCKHWD, + I_PUNPCKLBW, + I_PUNPCKLDQ, + I_PUNPCKLWD, + I_PUSH, + I_PUSHA, + I_PUSHAD, + I_PUSHAW, + I_PUSHF, + I_PUSHFD, + I_PUSHFQ, + I_PUSHFW, + I_PXOR, + I_RCL, + I_RCR, + I_RDSHR, + I_RDMSR, + I_RDPMC, + I_RDTSC, + I_RDTSCP, + I_RET, + I_RETF, + I_RETN, + I_RETW, + I_RETFW, + I_RETNW, + I_RETD, + I_RETFD, + I_RETND, + I_RETQ, + I_RETFQ, + I_RETNQ, + I_ROL, + I_ROR, + I_RDM, + I_RSDC, + I_RSLDT, + I_RSM, + I_RSTS, + I_SAHF, + I_SAL, + I_SALC, + I_SAR, + I_SBB, + I_SCASB, + I_SCASD, + I_SCASQ, + I_SCASW, + I_SFENCE, + I_SGDT, + I_SHL, + I_SHLD, + I_SHR, + I_SHRD, + I_SIDT, + I_SLDT, + I_SKINIT, + I_SMI, + I_SMINT, + I_SMINTOLD, + I_SMSW, + I_STC, + I_STD, + I_STI, + I_STOSB, + I_STOSD, + I_STOSQ, + I_STOSW, + I_STR, + I_SUB, + I_SVDC, + I_SVLDT, + I_SVTS, + I_SWAPGS, + I_SYSCALL, + I_SYSENTER, + I_SYSEXIT, + I_SYSRET, + I_TEST, + I_UD0, + I_UD1, + I_UD2B, + I_UD2, + I_UD2A, + I_UMOV, + I_VERR, + I_VERW, + I_FWAIT, + I_WBINVD, + I_WRSHR, + I_WRMSR, + I_XADD, + I_XBTS, + I_XCHG, + I_XLATB, + I_XLAT, + I_XOR, + I_CMOVA, + I_CMOVAE, + I_CMOVB, + I_CMOVBE, + I_CMOVC, + I_CMOVE, + I_CMOVG, + I_CMOVGE, + I_CMOVL, + I_CMOVLE, + I_CMOVNA, + I_CMOVNAE, + I_CMOVNB, + I_CMOVNBE, + I_CMOVNC, + I_CMOVNE, + I_CMOVNG, + I_CMOVNGE, + I_CMOVNL, + I_CMOVNLE, + I_CMOVNO, + I_CMOVNP, + I_CMOVNS, + I_CMOVNZ, + I_CMOVO, + I_CMOVP, + I_CMOVPE, + I_CMOVPO, + I_CMOVS, + I_CMOVZ, + I_JA, + I_JAE, + I_JB, + I_JBE, + I_JC, + I_JE, + I_JG, + I_JGE, + I_JL, + I_JLE, + I_JNA, + I_JNAE, + I_JNB, + I_JNBE, + I_JNC, + I_JNE, + I_JNG, + I_JNGE, + I_JNL, + I_JNLE, + I_JNO, + I_JNP, + I_JNS, + I_JNZ, + I_JO, + I_JP, + I_JPE, + I_JPO, + I_JS, + I_JZ, + I_SETA, + I_SETAE, + I_SETB, + I_SETBE, + I_SETC, + I_SETE, + I_SETG, + I_SETGE, + I_SETL, + I_SETLE, + I_SETNA, + I_SETNAE, + I_SETNB, + I_SETNBE, + I_SETNC, + I_SETNE, + I_SETNG, + I_SETNGE, + I_SETNL, + I_SETNLE, + I_SETNO, + I_SETNP, + I_SETNS, + I_SETNZ, + I_SETO, + I_SETP, + I_SETPE, + I_SETPO, + I_SETS, + I_SETZ, + I_ADDPS, + I_ADDSS, + I_ANDNPS, + I_ANDPS, + I_CMPEQPS, + I_CMPEQSS, + I_CMPLEPS, + I_CMPLESS, + I_CMPLTPS, + I_CMPLTSS, + I_CMPNEQPS, + I_CMPNEQSS, + I_CMPNLEPS, + I_CMPNLESS, + I_CMPNLTPS, + I_CMPNLTSS, + I_CMPORDPS, + I_CMPORDSS, + I_CMPUNORDPS, + I_CMPUNORDSS, + I_CMPPS, + I_CMPSS, + I_COMISS, + I_CVTPI2PS, + I_CVTPS2PI, + I_CVTSI2SS, + I_CVTSS2SI, + I_CVTTPS2PI, + I_CVTTSS2SI, + I_DIVPS, + I_DIVSS, + I_LDMXCSR, + I_MAXPS, + I_MAXSS, + I_MINPS, + I_MINSS, + I_MOVAPS, + I_MOVHPS, + I_MOVLHPS, + I_MOVLPS, + I_MOVHLPS, + I_MOVMSKPS, + I_MOVNTPS, + I_MOVSS, + I_MOVUPS, + I_MULPS, + I_MULSS, + I_ORPS, + I_RCPPS, + I_RCPSS, + I_RSQRTPS, + I_RSQRTSS, + I_SHUFPS, + I_SQRTPS, + I_SQRTSS, + I_STMXCSR, + I_SUBPS, + I_SUBSS, + I_UCOMISS, + I_UNPCKHPS, + I_UNPCKLPS, + I_XORPS, + I_FXRSTOR, + I_FXRSTOR64, + I_FXSAVE, + I_FXSAVE64, + I_XGETBV, + I_XSETBV, + I_XSAVE, + I_XSAVE64, + I_XSAVEC, + I_XSAVEC64, + I_XSAVEOPT, + I_XSAVEOPT64, + I_XSAVES, + I_XSAVES64, + I_XRSTOR, + I_XRSTOR64, + I_XRSTORS, + I_XRSTORS64, + I_PREFETCHNTA, + I_PREFETCHT0, + I_PREFETCHT1, + I_PREFETCHT2, + I_PREFETCHIT0, + I_PREFETCHIT1, + I_MASKMOVQ, + I_MOVNTQ, + I_PAVGB, + I_PAVGW, + I_PEXTRW, + I_PINSRW, + I_PMAXSW, + I_PMAXUB, + I_PMINSW, + I_PMINUB, + I_PMOVMSKB, + I_PMULHUW, + I_PSADBW, + I_PSHUFW, + I_PF2IW, + I_PFNACC, + I_PFPNACC, + I_PI2FW, + I_PSWAPD, + I_MASKMOVDQU, + I_CLFLUSH, + I_MOVNTDQ, + I_MOVNTI, + I_MOVNTPD, + I_MOVDQA, + I_MOVDQU, + I_MOVDQ2Q, + I_MOVQ2DQ, + I_PADDQ, + I_PMULUDQ, + I_PSHUFD, + I_PSHUFHW, + I_PSHUFLW, + I_PSLLDQ, + I_PSRLDQ, + I_PSUBQ, + I_PUNPCKHQDQ, + I_PUNPCKLQDQ, + I_ADDPD, + I_ADDSD, + I_ANDNPD, + I_ANDPD, + I_CMPEQPD, + I_CMPEQSD, + I_CMPLEPD, + I_CMPLESD, + I_CMPLTPD, + I_CMPLTSD, + I_CMPNEQPD, + I_CMPNEQSD, + I_CMPNLEPD, + I_CMPNLESD, + I_CMPNLTPD, + I_CMPNLTSD, + I_CMPORDPD, + I_CMPORDSD, + I_CMPUNORDPD, + I_CMPUNORDSD, + I_CMPPD, + I_COMISD, + I_CVTDQ2PD, + I_CVTDQ2PS, + I_CVTPD2DQ, + I_CVTPD2PI, + I_CVTPD2PS, + I_CVTPI2PD, + I_CVTPS2DQ, + I_CVTPS2PD, + I_CVTSD2SI, + I_CVTSD2SS, + I_CVTSI2SD, + I_CVTSS2SD, + I_CVTTPD2PI, + I_CVTTPD2DQ, + I_CVTTPS2DQ, + I_CVTTSD2SI, + I_DIVPD, + I_DIVSD, + I_MAXPD, + I_MAXSD, + I_MINPD, + I_MINSD, + I_MOVAPD, + I_MOVHPD, + I_MOVLPD, + I_MOVMSKPD, + I_MOVUPD, + I_MULPD, + I_MULSD, + I_ORPD, + I_SHUFPD, + I_SQRTPD, + I_SQRTSD, + I_SUBPD, + I_SUBSD, + I_UCOMISD, + I_UNPCKHPD, + I_UNPCKLPD, + I_XORPD, + I_ADDSUBPD, + I_ADDSUBPS, + I_HADDPD, + I_HADDPS, + I_HSUBPD, + I_HSUBPS, + I_LDDQU, + I_MOVDDUP, + I_MOVSHDUP, + I_MOVSLDUP, + I_CLGI, + I_STGI, + I_VMCALL, + I_VMCLEAR, + I_VMFUNC, + I_VMLAUNCH, + I_VMLOAD, + I_VMMCALL, + I_VMPTRLD, + I_VMPTRST, + I_VMREAD, + I_VMRESUME, + I_VMRUN, + I_VMSAVE, + I_VMWRITE, + I_VMXOFF, + I_VMXON, + I_INVEPT, + I_INVVPID, + I_PVALIDATE, + I_RMPADJUST, + I_VMGEXIT, + I_PABSB, + I_PABSW, + I_PABSD, + I_PALIGNR, + I_PHADDW, + I_PHADDD, + I_PHADDSW, + I_PHSUBW, + I_PHSUBD, + I_PHSUBSW, + I_PMADDUBSW, + I_PMULHRSW, + I_PSHUFB, + I_PSIGNB, + I_PSIGNW, + I_PSIGND, + I_EXTRQ, + I_INSERTQ, + I_MOVNTSD, + I_MOVNTSS, + I_LZCNT, + I_BLENDPD, + I_BLENDPS, + I_BLENDVPD, + I_BLENDVPS, + I_DPPD, + I_DPPS, + I_EXTRACTPS, + I_INSERTPS, + I_MOVNTDQA, + I_MPSADBW, + I_PACKUSDW, + I_PBLENDVB, + I_PBLENDW, + I_PCMPEQQ, + I_PEXTRB, + I_PEXTRD, + I_PEXTRQ, + I_PHMINPOSUW, + I_PINSRB, + I_PINSRD, + I_PINSRQ, + I_PMAXSB, + I_PMAXSD, + I_PMAXUD, + I_PMAXUW, + I_PMINSB, + I_PMINSD, + I_PMINUD, + I_PMINUW, + I_PMOVSXBW, + I_PMOVSXBD, + I_PMOVSXBQ, + I_PMOVSXWD, + I_PMOVSXWQ, + I_PMOVSXDQ, + I_PMOVZXBW, + I_PMOVZXBD, + I_PMOVZXBQ, + I_PMOVZXWD, + I_PMOVZXWQ, + I_PMOVZXDQ, + I_PMULDQ, + I_PMULLD, + I_PTEST, + I_ROUNDPD, + I_ROUNDPS, + I_ROUNDSD, + I_ROUNDSS, + I_CRC32, + I_PCMPESTRI, + I_PCMPESTRM, + I_PCMPISTRI, + I_PCMPISTRM, + I_PCMPGTQ, + I_POPCNT, + I_GETSEC, + I_PFRCPV, + I_PFRSQRTV, + I_MOVBE, + I_AESENC, + I_AESENCLAST, + I_AESDEC, + I_AESDECLAST, + I_AESIMC, + I_AESKEYGENASSIST, + I_VAESENC, + I_VAESENCLAST, + I_VAESDEC, + I_VAESDECLAST, + I_VAESIMC, + I_VAESKEYGENASSIST, + I_VADDPD, + I_VADDPS, + I_VADDSD, + I_VADDSS, + I_VADDSUBPD, + I_VADDSUBPS, + I_VANDPD, + I_VANDPS, + I_VANDNPD, + I_VANDNPS, + I_VBLENDPD, + I_VBLENDPS, + I_VBLENDVPD, + I_VBLENDVPS, + I_VBROADCASTSS, + I_VBROADCASTSD, + I_VBROADCASTF128, + I_VCMPEQ_OSPD, + I_VCMPEQPD, + I_VCMPLT_OSPD, + I_VCMPLTPD, + I_VCMPLE_OSPD, + I_VCMPLEPD, + I_VCMPUNORD_QPD, + I_VCMPUNORDPD, + I_VCMPNEQ_UQPD, + I_VCMPNEQPD, + I_VCMPNLT_USPD, + I_VCMPNLTPD, + I_VCMPNLE_USPD, + I_VCMPNLEPD, + I_VCMPORD_QPD, + I_VCMPORDPD, + I_VCMPEQ_UQPD, + I_VCMPNGE_USPD, + I_VCMPNGEPD, + I_VCMPNGT_USPD, + I_VCMPNGTPD, + I_VCMPFALSE_OQPD, + I_VCMPFALSEPD, + I_VCMPNEQ_OQPD, + I_VCMPGE_OSPD, + I_VCMPGEPD, + I_VCMPGT_OSPD, + I_VCMPGTPD, + I_VCMPTRUE_UQPD, + I_VCMPTRUEPD, + I_VCMPLT_OQPD, + I_VCMPLE_OQPD, + I_VCMPUNORD_SPD, + I_VCMPNEQ_USPD, + I_VCMPNLT_UQPD, + I_VCMPNLE_UQPD, + I_VCMPORD_SPD, + I_VCMPEQ_USPD, + I_VCMPNGE_UQPD, + I_VCMPNGT_UQPD, + I_VCMPFALSE_OSPD, + I_VCMPNEQ_OSPD, + I_VCMPGE_OQPD, + I_VCMPGT_OQPD, + I_VCMPTRUE_USPD, + I_VCMPPD, + I_VCMPEQ_OSPS, + I_VCMPEQPS, + I_VCMPLT_OSPS, + I_VCMPLTPS, + I_VCMPLE_OSPS, + I_VCMPLEPS, + I_VCMPUNORD_QPS, + I_VCMPUNORDPS, + I_VCMPNEQ_UQPS, + I_VCMPNEQPS, + I_VCMPNLT_USPS, + I_VCMPNLTPS, + I_VCMPNLE_USPS, + I_VCMPNLEPS, + I_VCMPORD_QPS, + I_VCMPORDPS, + I_VCMPEQ_UQPS, + I_VCMPNGE_USPS, + I_VCMPNGEPS, + I_VCMPNGT_USPS, + I_VCMPNGTPS, + I_VCMPFALSE_OQPS, + I_VCMPFALSEPS, + I_VCMPNEQ_OQPS, + I_VCMPGE_OSPS, + I_VCMPGEPS, + I_VCMPGT_OSPS, + I_VCMPGTPS, + I_VCMPTRUE_UQPS, + I_VCMPTRUEPS, + I_VCMPLT_OQPS, + I_VCMPLE_OQPS, + I_VCMPUNORD_SPS, + I_VCMPNEQ_USPS, + I_VCMPNLT_UQPS, + I_VCMPNLE_UQPS, + I_VCMPORD_SPS, + I_VCMPEQ_USPS, + I_VCMPNGE_UQPS, + I_VCMPNGT_UQPS, + I_VCMPFALSE_OSPS, + I_VCMPNEQ_OSPS, + I_VCMPGE_OQPS, + I_VCMPGT_OQPS, + I_VCMPTRUE_USPS, + I_VCMPPS, + I_VCMPEQ_OSSD, + I_VCMPEQSD, + I_VCMPLT_OSSD, + I_VCMPLTSD, + I_VCMPLE_OSSD, + I_VCMPLESD, + I_VCMPUNORD_QSD, + I_VCMPUNORDSD, + I_VCMPNEQ_UQSD, + I_VCMPNEQSD, + I_VCMPNLT_USSD, + I_VCMPNLTSD, + I_VCMPNLE_USSD, + I_VCMPNLESD, + I_VCMPORD_QSD, + I_VCMPORDSD, + I_VCMPEQ_UQSD, + I_VCMPNGE_USSD, + I_VCMPNGESD, + I_VCMPNGT_USSD, + I_VCMPNGTSD, + I_VCMPFALSE_OQSD, + I_VCMPFALSESD, + I_VCMPNEQ_OQSD, + I_VCMPGE_OSSD, + I_VCMPGESD, + I_VCMPGT_OSSD, + I_VCMPGTSD, + I_VCMPTRUE_UQSD, + I_VCMPTRUESD, + I_VCMPLT_OQSD, + I_VCMPLE_OQSD, + I_VCMPUNORD_SSD, + I_VCMPNEQ_USSD, + I_VCMPNLT_UQSD, + I_VCMPNLE_UQSD, + I_VCMPORD_SSD, + I_VCMPEQ_USSD, + I_VCMPNGE_UQSD, + I_VCMPNGT_UQSD, + I_VCMPFALSE_OSSD, + I_VCMPNEQ_OSSD, + I_VCMPGE_OQSD, + I_VCMPGT_OQSD, + I_VCMPTRUE_USSD, + I_VCMPSD, + I_VCMPEQ_OSSS, + I_VCMPEQSS, + I_VCMPLT_OSSS, + I_VCMPLTSS, + I_VCMPLE_OSSS, + I_VCMPLESS, + I_VCMPUNORD_QSS, + I_VCMPUNORDSS, + I_VCMPNEQ_UQSS, + I_VCMPNEQSS, + I_VCMPNLT_USSS, + I_VCMPNLTSS, + I_VCMPNLE_USSS, + I_VCMPNLESS, + I_VCMPORD_QSS, + I_VCMPORDSS, + I_VCMPEQ_UQSS, + I_VCMPNGE_USSS, + I_VCMPNGESS, + I_VCMPNGT_USSS, + I_VCMPNGTSS, + I_VCMPFALSE_OQSS, + I_VCMPFALSESS, + I_VCMPNEQ_OQSS, + I_VCMPGE_OSSS, + I_VCMPGESS, + I_VCMPGT_OSSS, + I_VCMPGTSS, + I_VCMPTRUE_UQSS, + I_VCMPTRUESS, + I_VCMPLT_OQSS, + I_VCMPLE_OQSS, + I_VCMPUNORD_SSS, + I_VCMPNEQ_USSS, + I_VCMPNLT_UQSS, + I_VCMPNLE_UQSS, + I_VCMPORD_SSS, + I_VCMPEQ_USSS, + I_VCMPNGE_UQSS, + I_VCMPNGT_UQSS, + I_VCMPFALSE_OSSS, + I_VCMPNEQ_OSSS, + I_VCMPGE_OQSS, + I_VCMPGT_OQSS, + I_VCMPTRUE_USSS, + I_VCMPSS, + I_VCOMISD, + I_VCOMISS, + I_VCVTDQ2PD, + I_VCVTDQ2PS, + I_VCVTPD2DQ, + I_VCVTPD2PS, + I_VCVTPS2DQ, + I_VCVTPS2PD, + I_VCVTSD2SI, + I_VCVTSD2SS, + I_VCVTSI2SD, + I_VCVTSI2SS, + I_VCVTSS2SD, + I_VCVTSS2SI, + I_VCVTTPD2DQ, + I_VCVTTPS2DQ, + I_VCVTTSD2SI, + I_VCVTTSS2SI, + I_VDIVPD, + I_VDIVPS, + I_VDIVSD, + I_VDIVSS, + I_VDPPD, + I_VDPPS, + I_VEXTRACTF128, + I_VEXTRACTPS, + I_VHADDPD, + I_VHADDPS, + I_VHSUBPD, + I_VHSUBPS, + I_VINSERTF128, + I_VINSERTPS, + I_VLDDQU, + I_VLDQQU, + I_VLDMXCSR, + I_VMASKMOVDQU, + I_VMASKMOVPS, + I_VMASKMOVPD, + I_VMAXPD, + I_VMAXPS, + I_VMAXSD, + I_VMAXSS, + I_VMINPD, + I_VMINPS, + I_VMINSD, + I_VMINSS, + I_VMOVAPD, + I_VMOVAPS, + I_VMOVD, + I_VMOVQ, + I_VMOVDDUP, + I_VMOVDQA, + I_VMOVQQA, + I_VMOVDQU, + I_VMOVQQU, + I_VMOVHLPS, + I_VMOVHPD, + I_VMOVHPS, + I_VMOVLHPS, + I_VMOVLPD, + I_VMOVLPS, + I_VMOVMSKPD, + I_VMOVMSKPS, + I_VMOVNTDQ, + I_VMOVNTQQ, + I_VMOVNTDQA, + I_VMOVNTPD, + I_VMOVNTPS, + I_VMOVSD, + I_VMOVSHDUP, + I_VMOVSLDUP, + I_VMOVSS, + I_VMOVUPD, + I_VMOVUPS, + I_VMPSADBW, + I_VMULPD, + I_VMULPS, + I_VMULSD, + I_VMULSS, + I_VORPD, + I_VORPS, + I_VPABSB, + I_VPABSW, + I_VPABSD, + I_VPACKSSWB, + I_VPACKSSDW, + I_VPACKUSWB, + I_VPACKUSDW, + I_VPADDB, + I_VPADDW, + I_VPADDD, + I_VPADDQ, + I_VPADDSB, + I_VPADDSW, + I_VPADDUSB, + I_VPADDUSW, + I_VPALIGNR, + I_VPAND, + I_VPANDN, + I_VPAVGB, + I_VPAVGW, + I_VPBLENDVB, + I_VPBLENDW, + I_VPCMPESTRI, + I_VPCMPESTRM, + I_VPCMPISTRI, + I_VPCMPISTRM, + I_VPCMPEQB, + I_VPCMPEQW, + I_VPCMPEQD, + I_VPCMPEQQ, + I_VPCMPGTB, + I_VPCMPGTW, + I_VPCMPGTD, + I_VPCMPGTQ, + I_VPERMILPD, + I_VPERMILPS, + I_VPERM2F128, + I_VPEXTRB, + I_VPEXTRW, + I_VPEXTRD, + I_VPEXTRQ, + I_VPHADDW, + I_VPHADDD, + I_VPHADDSW, + I_VPHMINPOSUW, + I_VPHSUBW, + I_VPHSUBD, + I_VPHSUBSW, + I_VPINSRB, + I_VPINSRW, + I_VPINSRD, + I_VPINSRQ, + I_VPMADDWD, + I_VPMADDUBSW, + I_VPMAXSB, + I_VPMAXSW, + I_VPMAXSD, + I_VPMAXUB, + I_VPMAXUW, + I_VPMAXUD, + I_VPMINSB, + I_VPMINSW, + I_VPMINSD, + I_VPMINUB, + I_VPMINUW, + I_VPMINUD, + I_VPMOVMSKB, + I_VPMOVSXBW, + I_VPMOVSXBD, + I_VPMOVSXBQ, + I_VPMOVSXWD, + I_VPMOVSXWQ, + I_VPMOVSXDQ, + I_VPMOVZXBW, + I_VPMOVZXBD, + I_VPMOVZXBQ, + I_VPMOVZXWD, + I_VPMOVZXWQ, + I_VPMOVZXDQ, + I_VPMULHUW, + I_VPMULHRSW, + I_VPMULHW, + I_VPMULLW, + I_VPMULLD, + I_VPMULUDQ, + I_VPMULDQ, + I_VPOR, + I_VPSADBW, + I_VPSHUFB, + I_VPSHUFD, + I_VPSHUFHW, + I_VPSHUFLW, + I_VPSIGNB, + I_VPSIGNW, + I_VPSIGND, + I_VPSLLDQ, + I_VPSRLDQ, + I_VPSLLW, + I_VPSLLD, + I_VPSLLQ, + I_VPSRAW, + I_VPSRAD, + I_VPSRLW, + I_VPSRLD, + I_VPSRLQ, + I_VPTEST, + I_VPSUBB, + I_VPSUBW, + I_VPSUBD, + I_VPSUBQ, + I_VPSUBSB, + I_VPSUBSW, + I_VPSUBUSB, + I_VPSUBUSW, + I_VPUNPCKHBW, + I_VPUNPCKHWD, + I_VPUNPCKHDQ, + I_VPUNPCKHQDQ, + I_VPUNPCKLBW, + I_VPUNPCKLWD, + I_VPUNPCKLDQ, + I_VPUNPCKLQDQ, + I_VPXOR, + I_VRCPPS, + I_VRCPSS, + I_VRSQRTPS, + I_VRSQRTSS, + I_VROUNDPD, + I_VROUNDPS, + I_VROUNDSD, + I_VROUNDSS, + I_VSHUFPD, + I_VSHUFPS, + I_VSQRTPD, + I_VSQRTPS, + I_VSQRTSD, + I_VSQRTSS, + I_VSTMXCSR, + I_VSUBPD, + I_VSUBPS, + I_VSUBSD, + I_VSUBSS, + I_VTESTPS, + I_VTESTPD, + I_VUCOMISD, + I_VUCOMISS, + I_VUNPCKHPD, + I_VUNPCKHPS, + I_VUNPCKLPD, + I_VUNPCKLPS, + I_VXORPD, + I_VXORPS, + I_VZEROALL, + I_VZEROUPPER, + I_PCLMULLQLQDQ, + I_PCLMULHQLQDQ, + I_PCLMULLQHQDQ, + I_PCLMULHQHQDQ, + I_PCLMULQDQ, + I_VPCLMULLQLQDQ, + I_VPCLMULHQLQDQ, + I_VPCLMULLQHQDQ, + I_VPCLMULHQHQDQ, + I_VPCLMULQDQ, + I_VFMADD132PS, + I_VFMADD132PD, + I_VFMADD312PS, + I_VFMADD312PD, + I_VFMADD213PS, + I_VFMADD213PD, + I_VFMADD123PS, + I_VFMADD123PD, + I_VFMADD231PS, + I_VFMADD231PD, + I_VFMADD321PS, + I_VFMADD321PD, + I_VFMADDSUB132PS, + I_VFMADDSUB132PD, + I_VFMADDSUB312PS, + I_VFMADDSUB312PD, + I_VFMADDSUB213PS, + I_VFMADDSUB213PD, + I_VFMADDSUB123PS, + I_VFMADDSUB123PD, + I_VFMADDSUB231PS, + I_VFMADDSUB231PD, + I_VFMADDSUB321PS, + I_VFMADDSUB321PD, + I_VFMSUB132PS, + I_VFMSUB132PD, + I_VFMSUB312PS, + I_VFMSUB312PD, + I_VFMSUB213PS, + I_VFMSUB213PD, + I_VFMSUB123PS, + I_VFMSUB123PD, + I_VFMSUB231PS, + I_VFMSUB231PD, + I_VFMSUB321PS, + I_VFMSUB321PD, + I_VFMSUBADD132PS, + I_VFMSUBADD132PD, + I_VFMSUBADD312PS, + I_VFMSUBADD312PD, + I_VFMSUBADD213PS, + I_VFMSUBADD213PD, + I_VFMSUBADD123PS, + I_VFMSUBADD123PD, + I_VFMSUBADD231PS, + I_VFMSUBADD231PD, + I_VFMSUBADD321PS, + I_VFMSUBADD321PD, + I_VFNMADD132PS, + I_VFNMADD132PD, + I_VFNMADD312PS, + I_VFNMADD312PD, + I_VFNMADD213PS, + I_VFNMADD213PD, + I_VFNMADD123PS, + I_VFNMADD123PD, + I_VFNMADD231PS, + I_VFNMADD231PD, + I_VFNMADD321PS, + I_VFNMADD321PD, + I_VFNMSUB132PS, + I_VFNMSUB132PD, + I_VFNMSUB312PS, + I_VFNMSUB312PD, + I_VFNMSUB213PS, + I_VFNMSUB213PD, + I_VFNMSUB123PS, + I_VFNMSUB123PD, + I_VFNMSUB231PS, + I_VFNMSUB231PD, + I_VFNMSUB321PS, + I_VFNMSUB321PD, + I_VFMADD132SS, + I_VFMADD132SD, + I_VFMADD312SS, + I_VFMADD312SD, + I_VFMADD213SS, + I_VFMADD213SD, + I_VFMADD123SS, + I_VFMADD123SD, + I_VFMADD231SS, + I_VFMADD231SD, + I_VFMADD321SS, + I_VFMADD321SD, + I_VFMSUB132SS, + I_VFMSUB132SD, + I_VFMSUB312SS, + I_VFMSUB312SD, + I_VFMSUB213SS, + I_VFMSUB213SD, + I_VFMSUB123SS, + I_VFMSUB123SD, + I_VFMSUB231SS, + I_VFMSUB231SD, + I_VFMSUB321SS, + I_VFMSUB321SD, + I_VFNMADD132SS, + I_VFNMADD132SD, + I_VFNMADD312SS, + I_VFNMADD312SD, + I_VFNMADD213SS, + I_VFNMADD213SD, + I_VFNMADD123SS, + I_VFNMADD123SD, + I_VFNMADD231SS, + I_VFNMADD231SD, + I_VFNMADD321SS, + I_VFNMADD321SD, + I_VFNMSUB132SS, + I_VFNMSUB132SD, + I_VFNMSUB312SS, + I_VFNMSUB312SD, + I_VFNMSUB213SS, + I_VFNMSUB213SD, + I_VFNMSUB123SS, + I_VFNMSUB123SD, + I_VFNMSUB231SS, + I_VFNMSUB231SD, + I_VFNMSUB321SS, + I_VFNMSUB321SD, + I_RDFSBASE, + I_RDGSBASE, + I_RDRAND, + I_WRFSBASE, + I_WRGSBASE, + I_VCVTPH2PS, + I_VCVTPS2PH, + I_ADCX, + I_ADOX, + I_RDSEED, + I_CLAC, + I_STAC, + I_XSTORE, + I_XCRYPTECB, + I_XCRYPTCBC, + I_XCRYPTCTR, + I_XCRYPTCFB, + I_XCRYPTOFB, + I_MONTMUL, + I_XSHA1, + I_XSHA256, + I_LLWPCB, + I_SLWPCB, + I_LWPVAL, + I_LWPINS, + I_VFMADDPD, + I_VFMADDPS, + I_VFMADDSD, + I_VFMADDSS, + I_VFMADDSUBPD, + I_VFMADDSUBPS, + I_VFMSUBADDPD, + I_VFMSUBADDPS, + I_VFMSUBPD, + I_VFMSUBPS, + I_VFMSUBSD, + I_VFMSUBSS, + I_VFNMADDPD, + I_VFNMADDPS, + I_VFNMADDSD, + I_VFNMADDSS, + I_VFNMSUBPD, + I_VFNMSUBPS, + I_VFNMSUBSD, + I_VFNMSUBSS, + I_VFRCZPD, + I_VFRCZPS, + I_VFRCZSD, + I_VFRCZSS, + I_VPCMOV, + I_VPCOMB, + I_VPCOMD, + I_VPCOMQ, + I_VPCOMUB, + I_VPCOMUD, + I_VPCOMUQ, + I_VPCOMUW, + I_VPCOMW, + I_VPHADDBD, + I_VPHADDBQ, + I_VPHADDBW, + I_VPHADDDQ, + I_VPHADDUBD, + I_VPHADDUBQ, + I_VPHADDUBW, + I_VPHADDUDQ, + I_VPHADDUWD, + I_VPHADDUWQ, + I_VPHADDWD, + I_VPHADDWQ, + I_VPHSUBBW, + I_VPHSUBDQ, + I_VPHSUBWD, + I_VPMACSDD, + I_VPMACSDQH, + I_VPMACSDQL, + I_VPMACSSDD, + I_VPMACSSDQH, + I_VPMACSSDQL, + I_VPMACSSWD, + I_VPMACSSWW, + I_VPMACSWD, + I_VPMACSWW, + I_VPMADCSSWD, + I_VPMADCSWD, + I_VPPERM, + I_VPROTB, + I_VPROTD, + I_VPROTQ, + I_VPROTW, + I_VPSHAB, + I_VPSHAD, + I_VPSHAQ, + I_VPSHAW, + I_VPSHLB, + I_VPSHLD, + I_VPSHLQ, + I_VPSHLW, + I_VBROADCASTI128, + I_VPBLENDD, + I_VPBROADCASTB, + I_VPBROADCASTW, + I_VPBROADCASTD, + I_VPBROADCASTQ, + I_VPERMD, + I_VPERMPD, + I_VPERMPS, + I_VPERMQ, + I_VPERM2I128, + I_VEXTRACTI128, + I_VINSERTI128, + I_VPMASKMOVD, + I_VPMASKMOVQ, + I_VPSLLVD, + I_VPSLLVQ, + I_VPSRAVD, + I_VPSRLVD, + I_VPSRLVQ, + I_VGATHERDPD, + I_VGATHERQPD, + I_VGATHERDPS, + I_VGATHERQPS, + I_VPGATHERDD, + I_VPGATHERQD, + I_VPGATHERDQ, + I_VPGATHERQQ, + I_XABORT, + I_XBEGIN, + I_XEND, + I_XTEST, + I_ANDN, + I_BEXTR, + I_BLCI, + I_BLCIC, + I_BLSI, + I_BLSIC, + I_BLCFILL, + I_BLSFILL, + I_BLCMSK, + I_BLSMSK, + I_BLSR, + I_BLCS, + I_BZHI, + I_MULX, + I_PDEP, + I_PEXT, + I_RORX, + I_SARX, + I_SHLX, + I_SHRX, + I_TZCNT, + I_TZMSK, + I_T1MSKC, + I_PREFETCHWT1, + I_BNDMK, + I_BNDCL, + I_BNDCU, + I_BNDCN, + I_BNDMOV, + I_BNDLDX, + I_BNDSTX, + I_SHA1MSG1, + I_SHA1MSG2, + I_SHA1NEXTE, + I_SHA1RNDS4, + I_SHA256MSG1, + I_SHA256MSG2, + I_SHA256RNDS2, + I_VBCSTNEBF16PS, + I_VBCSTNESH2PS, + I_VCVTNEEBF162PS, + I_VCVTNEEPH2PS, + I_VCVTNEOBF162PS, + I_VCVTNEOPH2PS, + I_VCVTNEPS2BF16, + I_VPDPBSSD, + I_VPDPBSSDS, + I_VPDPBSUD, + I_VPDPBSUDS, + I_VPDPBUUD, + I_VPDPBUUDS, + I_VPMADD52HUQ, + I_VPMADD52LUQ, + I_KADDB, + I_KADDD, + I_KADDQ, + I_KADDW, + I_KANDB, + I_KANDD, + I_KANDNB, + I_KANDND, + I_KANDNQ, + I_KANDNW, + I_KANDQ, + I_KANDW, + I_KMOVB, + I_KMOVD, + I_KMOVQ, + I_KMOVW, + I_KNOTB, + I_KNOTD, + I_KNOTQ, + I_KNOTW, + I_KORB, + I_KORD, + I_KORQ, + I_KORW, + I_KORTESTB, + I_KORTESTD, + I_KORTESTQ, + I_KORTESTW, + I_KSHIFTLB, + I_KSHIFTLD, + I_KSHIFTLQ, + I_KSHIFTLW, + I_KSHIFTRB, + I_KSHIFTRD, + I_KSHIFTRQ, + I_KSHIFTRW, + I_KTESTB, + I_KTESTD, + I_KTESTQ, + I_KTESTW, + I_KUNPCKBW, + I_KUNPCKDQ, + I_KUNPCKWD, + I_KXNORB, + I_KXNORD, + I_KXNORQ, + I_KXNORW, + I_KXORB, + I_KXORD, + I_KXORQ, + I_KXORW, + I_KADD, + I_KAND, + I_KANDN, + I_KMOV, + I_KNOT, + I_KOR, + I_KORTEST, + I_KSHIFTL, + I_KSHIFTR, + I_KTEST, + I_KUNPCK, + I_KXNOR, + I_KXOR, + I_VALIGND, + I_VALIGNQ, + I_VBLENDMPD, + I_VBLENDMPS, + I_VBROADCASTF32X2, + I_VBROADCASTF32X4, + I_VBROADCASTF32X8, + I_VBROADCASTF64X2, + I_VBROADCASTF64X4, + I_VBROADCASTI32X2, + I_VBROADCASTI32X4, + I_VBROADCASTI32X8, + I_VBROADCASTI64X2, + I_VBROADCASTI64X4, + I_VCMPEQ_OQPD, + I_VCMPEQ_OQPS, + I_VCMPEQ_OQSD, + I_VCMPEQ_OQSS, + I_VCOMPRESSPD, + I_VCOMPRESSPS, + I_VCVTPD2QQ, + I_VCVTPD2UDQ, + I_VCVTPD2UQQ, + I_VCVTPS2QQ, + I_VCVTPS2UDQ, + I_VCVTPS2UQQ, + I_VCVTQQ2PD, + I_VCVTQQ2PS, + I_VCVTSD2USI, + I_VCVTSS2USI, + I_VCVTTPD2QQ, + I_VCVTTPD2UDQ, + I_VCVTTPD2UQQ, + I_VCVTTPS2QQ, + I_VCVTTPS2UDQ, + I_VCVTTPS2UQQ, + I_VCVTTSD2USI, + I_VCVTTSS2USI, + I_VCVTUDQ2PD, + I_VCVTUDQ2PS, + I_VCVTUQQ2PD, + I_VCVTUQQ2PS, + I_VCVTUSI2SD, + I_VCVTUSI2SS, + I_VDBPSADBW, + I_VEXP2PD, + I_VEXP2PS, + I_VEXPANDPD, + I_VEXPANDPS, + I_VEXTRACTF32X4, + I_VEXTRACTF32X8, + I_VEXTRACTF64X2, + I_VEXTRACTF64X4, + I_VEXTRACTI32X4, + I_VEXTRACTI32X8, + I_VEXTRACTI64X2, + I_VEXTRACTI64X4, + I_VFIXUPIMMPD, + I_VFIXUPIMMPS, + I_VFIXUPIMMSD, + I_VFIXUPIMMSS, + I_VFPCLASSPD, + I_VFPCLASSPS, + I_VFPCLASSSD, + I_VFPCLASSSS, + I_VGATHERPF0DPD, + I_VGATHERPF0DPS, + I_VGATHERPF0QPD, + I_VGATHERPF0QPS, + I_VGATHERPF1DPD, + I_VGATHERPF1DPS, + I_VGATHERPF1QPD, + I_VGATHERPF1QPS, + I_VGETEXPPD, + I_VGETEXPPS, + I_VGETEXPSD, + I_VGETEXPSS, + I_VGETMANTPD, + I_VGETMANTPS, + I_VGETMANTSD, + I_VGETMANTSS, + I_VINSERTF32X4, + I_VINSERTF32X8, + I_VINSERTF64X2, + I_VINSERTF64X4, + I_VINSERTI32X4, + I_VINSERTI32X8, + I_VINSERTI64X2, + I_VINSERTI64X4, + I_VMOVDQA32, + I_VMOVDQA64, + I_VMOVDQU16, + I_VMOVDQU32, + I_VMOVDQU64, + I_VMOVDQU8, + I_VPABSQ, + I_VPANDD, + I_VPANDND, + I_VPANDNQ, + I_VPANDQ, + I_VPBLENDMB, + I_VPBLENDMD, + I_VPBLENDMQ, + I_VPBLENDMW, + I_VPBROADCASTMB2Q, + I_VPBROADCASTMW2D, + I_VPCMPEQUB, + I_VPCMPEQUD, + I_VPCMPEQUQ, + I_VPCMPEQUW, + I_VPCMPGEB, + I_VPCMPGED, + I_VPCMPGEQ, + I_VPCMPGEUB, + I_VPCMPGEUD, + I_VPCMPGEUQ, + I_VPCMPGEUW, + I_VPCMPGEW, + I_VPCMPGTUB, + I_VPCMPGTUD, + I_VPCMPGTUQ, + I_VPCMPGTUW, + I_VPCMPLEB, + I_VPCMPLED, + I_VPCMPLEQ, + I_VPCMPLEUB, + I_VPCMPLEUD, + I_VPCMPLEUQ, + I_VPCMPLEUW, + I_VPCMPLEW, + I_VPCMPLTB, + I_VPCMPLTD, + I_VPCMPLTQ, + I_VPCMPLTUB, + I_VPCMPLTUD, + I_VPCMPLTUQ, + I_VPCMPLTUW, + I_VPCMPLTW, + I_VPCMPNEQB, + I_VPCMPNEQD, + I_VPCMPNEQQ, + I_VPCMPNEQUB, + I_VPCMPNEQUD, + I_VPCMPNEQUQ, + I_VPCMPNEQUW, + I_VPCMPNEQW, + I_VPCMPNGTB, + I_VPCMPNGTD, + I_VPCMPNGTQ, + I_VPCMPNGTUB, + I_VPCMPNGTUD, + I_VPCMPNGTUQ, + I_VPCMPNGTUW, + I_VPCMPNGTW, + I_VPCMPNLEB, + I_VPCMPNLED, + I_VPCMPNLEQ, + I_VPCMPNLEUB, + I_VPCMPNLEUD, + I_VPCMPNLEUQ, + I_VPCMPNLEUW, + I_VPCMPNLEW, + I_VPCMPNLTB, + I_VPCMPNLTD, + I_VPCMPNLTQ, + I_VPCMPNLTUB, + I_VPCMPNLTUD, + I_VPCMPNLTUQ, + I_VPCMPNLTUW, + I_VPCMPNLTW, + I_VPCMPB, + I_VPCMPD, + I_VPCMPQ, + I_VPCMPUB, + I_VPCMPUD, + I_VPCMPUQ, + I_VPCMPUW, + I_VPCMPW, + I_VPCOMPRESSD, + I_VPCOMPRESSQ, + I_VPCONFLICTD, + I_VPCONFLICTQ, + I_VPERMB, + I_VPERMI2B, + I_VPERMI2D, + I_VPERMI2PD, + I_VPERMI2PS, + I_VPERMI2Q, + I_VPERMI2W, + I_VPERMT2B, + I_VPERMT2D, + I_VPERMT2PD, + I_VPERMT2PS, + I_VPERMT2Q, + I_VPERMT2W, + I_VPERMW, + I_VPEXPANDD, + I_VPEXPANDQ, + I_VPLZCNTD, + I_VPLZCNTQ, + I_VPMAXSQ, + I_VPMAXUQ, + I_VPMINSQ, + I_VPMINUQ, + I_VPMOVB2M, + I_VPMOVD2M, + I_VPMOVDB, + I_VPMOVDW, + I_VPMOVM2B, + I_VPMOVM2D, + I_VPMOVM2Q, + I_VPMOVM2W, + I_VPMOVQ2M, + I_VPMOVQB, + I_VPMOVQD, + I_VPMOVQW, + I_VPMOVSDB, + I_VPMOVSDW, + I_VPMOVSQB, + I_VPMOVSQD, + I_VPMOVSQW, + I_VPMOVSWB, + I_VPMOVUSDB, + I_VPMOVUSDW, + I_VPMOVUSQB, + I_VPMOVUSQD, + I_VPMOVUSQW, + I_VPMOVUSWB, + I_VPMOVW2M, + I_VPMOVWB, + I_VPMULLQ, + I_VPMULTISHIFTQB, + I_VPORD, + I_VPORQ, + I_VPROLD, + I_VPROLQ, + I_VPROLVD, + I_VPROLVQ, + I_VPRORD, + I_VPRORQ, + I_VPRORVD, + I_VPRORVQ, + I_VPSCATTERDD, + I_VPSCATTERDQ, + I_VPSCATTERQD, + I_VPSCATTERQQ, + I_VPSLLVW, + I_VPSRAQ, + I_VPSRAVQ, + I_VPSRAVW, + I_VPSRLVW, + I_VPTERNLOGD, + I_VPTERNLOGQ, + I_VPTESTMB, + I_VPTESTMD, + I_VPTESTMQ, + I_VPTESTMW, + I_VPTESTNMB, + I_VPTESTNMD, + I_VPTESTNMQ, + I_VPTESTNMW, + I_VPXORD, + I_VPXORQ, + I_VRANGEPD, + I_VRANGEPS, + I_VRANGESD, + I_VRANGESS, + I_VRCP14PD, + I_VRCP14PS, + I_VRCP14SD, + I_VRCP14SS, + I_VRCP28PD, + I_VRCP28PS, + I_VRCP28SD, + I_VRCP28SS, + I_VREDUCEPD, + I_VREDUCEPS, + I_VREDUCESD, + I_VREDUCESS, + I_VRNDSCALEPD, + I_VRNDSCALEPS, + I_VRNDSCALESD, + I_VRNDSCALESS, + I_VRSQRT14PD, + I_VRSQRT14PS, + I_VRSQRT14SD, + I_VRSQRT14SS, + I_VRSQRT28PD, + I_VRSQRT28PS, + I_VRSQRT28SD, + I_VRSQRT28SS, + I_VSCALEFPD, + I_VSCALEFPS, + I_VSCALEFSD, + I_VSCALEFSS, + I_VSCATTERDPD, + I_VSCATTERDPS, + I_VSCATTERPF0DPD, + I_VSCATTERPF0DPS, + I_VSCATTERPF0QPD, + I_VSCATTERPF0QPS, + I_VSCATTERPF1DPD, + I_VSCATTERPF1DPS, + I_VSCATTERPF1QPD, + I_VSCATTERPF1QPS, + I_VSCATTERQPD, + I_VSCATTERQPS, + I_VSHUFF32X4, + I_VSHUFF64X2, + I_VSHUFI32X4, + I_VSHUFI64X2, + I_RDPKRU, + I_WRPKRU, + I_RDPID, + I_CLFLUSHOPT, + I_CLWB, + I_PCOMMIT, + I_CLZERO, + I_PTWRITE, + I_CLDEMOTE, + I_MOVDIRI, + I_MOVDIR64B, + I_PCONFIG, + I_TPAUSE, + I_UMONITOR, + I_UMWAIT, + I_WBNOINVD, + I_GF2P8AFFINEINVQB, + I_VGF2P8AFFINEINVQB, + I_GF2P8AFFINEQB, + I_VGF2P8AFFINEQB, + I_GF2P8MULB, + I_VGF2P8MULB, + I_VPCOMPRESSB, + I_VPCOMPRESSW, + I_VPEXPANDB, + I_VPEXPANDW, + I_VPSHLDW, + I_VPSHLDD, + I_VPSHLDQ, + I_VPSHLDVW, + I_VPSHLDVD, + I_VPSHLDVQ, + I_VPSHRDW, + I_VPSHRDD, + I_VPSHRDQ, + I_VPSHRDVW, + I_VPSHRDVD, + I_VPSHRDVQ, + I_VPDPBUSD, + I_VPDPBUSDS, + I_VPDPWSSD, + I_VPDPWSSDS, + I_VPOPCNTB, + I_VPOPCNTW, + I_VPOPCNTD, + I_VPOPCNTQ, + I_VPSHUFBITQMB, + I_V4FMADDPS, + I_V4FNMADDPS, + I_V4FMADDSS, + I_V4FNMADDSS, + I_V4DPWSSDS, + I_V4DPWSSD, + I_ENCLS, + I_ENCLU, + I_ENCLV, + I_CLRSSBSY, + I_ENDBR32, + I_ENDBR64, + I_INCSSPD, + I_INCSSPQ, + I_RDSSPD, + I_RDSSPQ, + I_RSTORSSP, + I_SAVEPREVSSP, + I_SETSSBSY, + I_WRUSSD, + I_WRUSSQ, + I_WRSSD, + I_WRSSQ, + I_ENQCMD, + I_ENQCMDS, + I_SERIALIZE, + I_XRESLDTRK, + I_XSUSLDTRK, + I_VCVTNE2PS2BF16, + I_VDPBF16PS, + I_VP2INTERSECTD, + I_LDTILECFG, + I_STTILECFG, + I_TDPBF16PS, + I_TDPBSSD, + I_TDPBSUD, + I_TDPBUSD, + I_TDPBUUD, + I_TILELOADD, + I_TILELOADDT1, + I_TILERELEASE, + I_TILESTORED, + I_TILEZERO, + I_VADDPH, + I_VADDSH, + I_VCMPPH, + I_VCMPSH, + I_VCOMISH, + I_VCVTDQ2PH, + I_VCVTPD2PH, + I_VCVTPH2DQ, + I_VCVTPH2PD, + I_VCVTPH2PSX, + I_VCVTPH2QQ, + I_VCVTPH2UDQ, + I_VCVTPH2UQQ, + I_VCVTPH2UW, + I_VCVTPH2W, + I_VCVTQQ2PH, + I_VCVTSD2SH, + I_VCVTSH2SD, + I_VCVTSH2SI, + I_VCVTSH2SS, + I_VCVTSH2USI, + I_VCVTSI2SH, + I_VCVTSS2SH, + I_VCVTTPH2DQ, + I_VCVTTPH2QQ, + I_VCVTTPH2UDQ, + I_VCVTTPH2UQQ, + I_VCVTTPH2UW, + I_VCVTTPH2W, + I_VCVTTSH2SI, + I_VCVTTSH2USI, + I_VCVTUDQ2PH, + I_VCVTUQQ2PH, + I_VCVTUSI2SH, + I_VCVTUW2PH, + I_VCVTW2PH, + I_VDIVPH, + I_VDIVSH, + I_VFCMADDCPH, + I_VFMADDCPH, + I_VFCMADDCSH, + I_VFMADDCSH, + I_VFCMULCPCH, + I_VFMULCPCH, + I_VFCMULCSH, + I_VFMULCSH, + I_VFMADDSUB132PH, + I_VFMADDSUB213PH, + I_VFMADDSUB231PH, + I_VFMSUBADD132PH, + I_VFMSUBADD213PH, + I_VFMSUBADD231PH, + I_VPMADD132PH, + I_VPMADD213PH, + I_VPMADD231PH, + I_VFMADD132PH, + I_VFMADD213PH, + I_VFMADD231PH, + I_VPMADD132SH, + I_VPMADD213SH, + I_VPMADD231SH, + I_VPNMADD132SH, + I_VPNMADD213SH, + I_VPNMADD231SH, + I_VPMSUB132PH, + I_VPMSUB213PH, + I_VPMSUB231PH, + I_VFMSUB132PH, + I_VFMSUB213PH, + I_VFMSUB231PH, + I_VPMSUB132SH, + I_VPMSUB213SH, + I_VPMSUB231SH, + I_VPNMSUB132SH, + I_VPNMSUB213SH, + I_VPNMSUB231SH, + I_VFPCLASSPH, + I_VFPCLASSSH, + I_VGETEXPPH, + I_VGETEXPSH, + I_VGETMANTPH, + I_VGETMANTSH, + I_VGETMAXPH, + I_VGETMAXSH, + I_VGETMINPH, + I_VGETMINSH, + I_VMOVSH, + I_VMOVW, + I_VMULPH, + I_VMULSH, + I_VRCPPH, + I_VRCPSH, + I_VREDUCEPH, + I_VREDUCESH, + I_VENDSCALEPH, + I_VENDSCALESH, + I_VRSQRTPH, + I_VRSQRTSH, + I_VSCALEFPH, + I_VSCALEFSH, + I_VSQRTPH, + I_VSQRTSH, + I_VSUBPH, + I_VSUBSH, + I_VUCOMISH, + I_AADD, + I_AAND, + I_AXOR, + I_CLUI, + I_SENDUIPI, + I_STUI, + I_TESTUI, + I_UIRET, + I_CMPAXADD, + I_CMPAEXADD, + I_CMPBXADD, + I_CMPBEXADD, + I_CMPCXADD, + I_CMPEXADD, + I_CMPGXADD, + I_CMPGEXADD, + I_CMPLXADD, + I_CMPLEXADD, + I_CMPNAXADD, + I_CMPNAEXADD, + I_CMPNBXADD, + I_CMPNBEXADD, + I_CMPNCXADD, + I_CMPNEXADD, + I_CMPNGXADD, + I_CMPNGEXADD, + I_CMPNLXADD, + I_CMPNLEXADD, + I_CMPNOXADD, + I_CMPNPXADD, + I_CMPNSXADD, + I_CMPNZXADD, + I_CMPOXADD, + I_CMPPXADD, + I_CMPPEXADD, + I_CMPPOXADD, + I_CMPSXADD, + I_CMPZXADD, + I_WRMSRNS, + I_RDMSRLIST, + I_WRMSRLIST, + I_HRESET, + I_HINT_NOP0, + I_HINT_NOP1, + I_HINT_NOP2, + I_HINT_NOP3, + I_HINT_NOP4, + I_HINT_NOP5, + I_HINT_NOP6, + I_HINT_NOP7, + I_HINT_NOP8, + I_HINT_NOP9, + I_HINT_NOP10, + I_HINT_NOP11, + I_HINT_NOP12, + I_HINT_NOP13, + I_HINT_NOP14, + I_HINT_NOP15, + I_HINT_NOP16, + I_HINT_NOP17, + I_HINT_NOP18, + I_HINT_NOP19, + I_HINT_NOP20, + I_HINT_NOP21, + I_HINT_NOP22, + I_HINT_NOP23, + I_HINT_NOP24, + I_HINT_NOP25, + I_HINT_NOP26, + I_HINT_NOP27, + I_HINT_NOP28, + I_HINT_NOP29, + I_HINT_NOP30, + I_HINT_NOP31, + I_HINT_NOP32, + I_HINT_NOP33, + I_HINT_NOP34, + I_HINT_NOP35, + I_HINT_NOP36, + I_HINT_NOP37, + I_HINT_NOP38, + I_HINT_NOP39, + I_HINT_NOP40, + I_HINT_NOP41, + I_HINT_NOP42, + I_HINT_NOP43, + I_HINT_NOP44, + I_HINT_NOP45, + I_HINT_NOP46, + I_HINT_NOP47, + I_HINT_NOP48, + I_HINT_NOP49, + I_HINT_NOP50, + I_HINT_NOP51, + I_HINT_NOP52, + I_HINT_NOP53, + I_HINT_NOP54, + I_HINT_NOP55, + I_HINT_NOP56, + I_HINT_NOP57, + I_HINT_NOP58, + I_HINT_NOP59, + I_HINT_NOP60, + I_HINT_NOP61, + I_HINT_NOP62, + I_HINT_NOP63, + I_none = -1 +}; + +#define MAX_INSLEN 17 +#define NASM_VEX_CLASSES 3 +#define NO_DECORATOR {0,0,0,0,0} +#endif /* NASM_INSNSI_H */ diff --git a/vere/ext/nasm/x86/insnsn.c b/vere/ext/nasm/x86/insnsn.c new file mode 100644 index 0000000..88505a5 --- /dev/null +++ b/vere/ext/nasm/x86/insnsn.c @@ -0,0 +1,2254 @@ +/* This file is auto-generated from insns.dat by insns.pl - don't edit it */ + +#include "tables.h" + +const char * const nasm_insn_names[] = { + "db", + "dw", + "dd", + "dq", + "dt", + "do", + "dy", + "dz", + "resb", + "resw", + "resd", + "resq", + "rest", + "reso", + "resy", + "resz", + "incbin", + "aaa", + "aad", + "aam", + "aas", + "adc", + "add", + "and", + "arpl", + "bb0_reset", + "bb1_reset", + "bound", + "bsf", + "bsr", + "bswap", + "bt", + "btc", + "btr", + "bts", + "call", + "cbw", + "cdq", + "cdqe", + "clc", + "cld", + "cli", + "clts", + "cmc", + "cmp", + "cmpsb", + "cmpsd", + "cmpsq", + "cmpsw", + "cmpxchg", + "cmpxchg486", + "cmpxchg8b", + "cmpxchg16b", + "cpuid", + "cpu_read", + "cpu_write", + "cqo", + "cwd", + "cwde", + "daa", + "das", + "dec", + "div", + "dmint", + "emms", + "enter", + "equ", + "f2xm1", + "fabs", + "fadd", + "faddp", + "fbld", + "fbstp", + "fchs", + "fclex", + "fcmovb", + "fcmovbe", + "fcmove", + "fcmovnb", + "fcmovnbe", + "fcmovne", + "fcmovnu", + "fcmovu", + "fcom", + "fcomi", + "fcomip", + "fcomp", + "fcompp", + "fcos", + "fdecstp", + "fdisi", + "fdiv", + "fdivp", + "fdivr", + "fdivrp", + "femms", + "feni", + "ffree", + "ffreep", + "fiadd", + "ficom", + "ficomp", + "fidiv", + "fidivr", + "fild", + "fimul", + "fincstp", + "finit", + "fist", + "fistp", + "fisttp", + "fisub", + "fisubr", + "fld", + "fld1", + "fldcw", + "fldenv", + "fldl2e", + "fldl2t", + "fldlg2", + "fldln2", + "fldpi", + "fldz", + "fmul", + "fmulp", + "fnclex", + "fndisi", + "fneni", + "fninit", + "fnop", + "fnsave", + "fnstcw", + "fnstenv", + "fnstsw", + "fpatan", + "fprem", + "fprem1", + "fptan", + "frndint", + "frstor", + "fsave", + "fscale", + "fsetpm", + "fsin", + "fsincos", + "fsqrt", + "fst", + "fstcw", + "fstenv", + "fstp", + "fstsw", + "fsub", + "fsubp", + "fsubr", + "fsubrp", + "ftst", + "fucom", + "fucomi", + "fucomip", + "fucomp", + "fucompp", + "fxam", + "fxch", + "fxtract", + "fyl2x", + "fyl2xp1", + "hlt", + "ibts", + "icebp", + "idiv", + "imul", + "in", + "inc", + "insb", + "insd", + "insw", + "int", + "int01", + "int1", + "int03", + "int3", + "into", + "invd", + "invpcid", + "invlpg", + "invlpga", + "iret", + "iretd", + "iretq", + "iretw", + "jcxz", + "jecxz", + "jrcxz", + "jmp", + "jmpe", + "lahf", + "lar", + "lds", + "lea", + "leave", + "les", + "lfence", + "lfs", + "lgdt", + "lgs", + "lidt", + "lldt", + "lmsw", + "loadall", + "loadall286", + "lodsb", + "lodsd", + "lodsq", + "lodsw", + "loop", + "loope", + "loopne", + "loopnz", + "loopz", + "lsl", + "lss", + "ltr", + "mfence", + "monitor", + "monitorx", + "mov", + "movd", + "movq", + "movsb", + "movsd", + "movsq", + "movsw", + "movsx", + "movsxd", + "movzx", + "mul", + "mwait", + "mwaitx", + "neg", + "nop", + "not", + "or", + "out", + "outsb", + "outsd", + "outsw", + "packssdw", + "packsswb", + "packuswb", + "paddb", + "paddd", + "paddsb", + "paddsiw", + "paddsw", + "paddusb", + "paddusw", + "paddw", + "pand", + "pandn", + "pause", + "paveb", + "pavgusb", + "pcmpeqb", + "pcmpeqd", + "pcmpeqw", + "pcmpgtb", + "pcmpgtd", + "pcmpgtw", + "pdistib", + "pf2id", + "pfacc", + "pfadd", + "pfcmpeq", + "pfcmpge", + "pfcmpgt", + "pfmax", + "pfmin", + "pfmul", + "pfrcp", + "pfrcpit1", + "pfrcpit2", + "pfrsqit1", + "pfrsqrt", + "pfsub", + "pfsubr", + "pi2fd", + "pmachriw", + "pmaddwd", + "pmagw", + "pmulhriw", + "pmulhrwa", + "pmulhrwc", + "pmulhw", + "pmullw", + "pmvgezb", + "pmvlzb", + "pmvnzb", + "pmvzb", + "pop", + "popa", + "popad", + "popaw", + "popf", + "popfd", + "popfq", + "popfw", + "por", + "prefetch", + "prefetchw", + "pslld", + "psllq", + "psllw", + "psrad", + "psraw", + "psrld", + "psrlq", + "psrlw", + "psubb", + "psubd", + "psubsb", + "psubsiw", + "psubsw", + "psubusb", + "psubusw", + "psubw", + "punpckhbw", + "punpckhdq", + "punpckhwd", + "punpcklbw", + "punpckldq", + "punpcklwd", + "push", + "pusha", + "pushad", + "pushaw", + "pushf", + "pushfd", + "pushfq", + "pushfw", + "pxor", + "rcl", + "rcr", + "rdshr", + "rdmsr", + "rdpmc", + "rdtsc", + "rdtscp", + "ret", + "retf", + "retn", + "retw", + "retfw", + "retnw", + "retd", + "retfd", + "retnd", + "retq", + "retfq", + "retnq", + "rol", + "ror", + "rdm", + "rsdc", + "rsldt", + "rsm", + "rsts", + "sahf", + "sal", + "salc", + "sar", + "sbb", + "scasb", + "scasd", + "scasq", + "scasw", + "sfence", + "sgdt", + "shl", + "shld", + "shr", + "shrd", + "sidt", + "sldt", + "skinit", + "smi", + "smint", + "smintold", + "smsw", + "stc", + "std", + "sti", + "stosb", + "stosd", + "stosq", + "stosw", + "str", + "sub", + "svdc", + "svldt", + "svts", + "swapgs", + "syscall", + "sysenter", + "sysexit", + "sysret", + "test", + "ud0", + "ud1", + "ud2b", + "ud2", + "ud2a", + "umov", + "verr", + "verw", + "fwait", + "wbinvd", + "wrshr", + "wrmsr", + "xadd", + "xbts", + "xchg", + "xlatb", + "xlat", + "xor", + "cmova", + "cmovae", + "cmovb", + "cmovbe", + "cmovc", + "cmove", + "cmovg", + "cmovge", + "cmovl", + "cmovle", + "cmovna", + "cmovnae", + "cmovnb", + "cmovnbe", + "cmovnc", + "cmovne", + "cmovng", + "cmovnge", + "cmovnl", + "cmovnle", + "cmovno", + "cmovnp", + "cmovns", + "cmovnz", + "cmovo", + "cmovp", + "cmovpe", + "cmovpo", + "cmovs", + "cmovz", + "ja", + "jae", + "jb", + "jbe", + "jc", + "je", + "jg", + "jge", + "jl", + "jle", + "jna", + "jnae", + "jnb", + "jnbe", + "jnc", + "jne", + "jng", + "jnge", + "jnl", + "jnle", + "jno", + "jnp", + "jns", + "jnz", + "jo", + "jp", + "jpe", + "jpo", + "js", + "jz", + "seta", + "setae", + "setb", + "setbe", + "setc", + "sete", + "setg", + "setge", + "setl", + "setle", + "setna", + "setnae", + "setnb", + "setnbe", + "setnc", + "setne", + "setng", + "setnge", + "setnl", + "setnle", + "setno", + "setnp", + "setns", + "setnz", + "seto", + "setp", + "setpe", + "setpo", + "sets", + "setz", + "addps", + "addss", + "andnps", + "andps", + "cmpeqps", + "cmpeqss", + "cmpleps", + "cmpless", + "cmpltps", + "cmpltss", + "cmpneqps", + "cmpneqss", + "cmpnleps", + "cmpnless", + "cmpnltps", + "cmpnltss", + "cmpordps", + "cmpordss", + "cmpunordps", + "cmpunordss", + "cmpps", + "cmpss", + "comiss", + "cvtpi2ps", + "cvtps2pi", + "cvtsi2ss", + "cvtss2si", + "cvttps2pi", + "cvttss2si", + "divps", + "divss", + "ldmxcsr", + "maxps", + "maxss", + "minps", + "minss", + "movaps", + "movhps", + "movlhps", + "movlps", + "movhlps", + "movmskps", + "movntps", + "movss", + "movups", + "mulps", + "mulss", + "orps", + "rcpps", + "rcpss", + "rsqrtps", + "rsqrtss", + "shufps", + "sqrtps", + "sqrtss", + "stmxcsr", + "subps", + "subss", + "ucomiss", + "unpckhps", + "unpcklps", + "xorps", + "fxrstor", + "fxrstor64", + "fxsave", + "fxsave64", + "xgetbv", + "xsetbv", + "xsave", + "xsave64", + "xsavec", + "xsavec64", + "xsaveopt", + "xsaveopt64", + "xsaves", + "xsaves64", + "xrstor", + "xrstor64", + "xrstors", + "xrstors64", + "prefetchnta", + "prefetcht0", + "prefetcht1", + "prefetcht2", + "prefetchit0", + "prefetchit1", + "maskmovq", + "movntq", + "pavgb", + "pavgw", + "pextrw", + "pinsrw", + "pmaxsw", + "pmaxub", + "pminsw", + "pminub", + "pmovmskb", + "pmulhuw", + "psadbw", + "pshufw", + "pf2iw", + "pfnacc", + "pfpnacc", + "pi2fw", + "pswapd", + "maskmovdqu", + "clflush", + "movntdq", + "movnti", + "movntpd", + "movdqa", + "movdqu", + "movdq2q", + "movq2dq", + "paddq", + "pmuludq", + "pshufd", + "pshufhw", + "pshuflw", + "pslldq", + "psrldq", + "psubq", + "punpckhqdq", + "punpcklqdq", + "addpd", + "addsd", + "andnpd", + "andpd", + "cmpeqpd", + "cmpeqsd", + "cmplepd", + "cmplesd", + "cmpltpd", + "cmpltsd", + "cmpneqpd", + "cmpneqsd", + "cmpnlepd", + "cmpnlesd", + "cmpnltpd", + "cmpnltsd", + "cmpordpd", + "cmpordsd", + "cmpunordpd", + "cmpunordsd", + "cmppd", + "comisd", + "cvtdq2pd", + "cvtdq2ps", + "cvtpd2dq", + "cvtpd2pi", + "cvtpd2ps", + "cvtpi2pd", + "cvtps2dq", + "cvtps2pd", + "cvtsd2si", + "cvtsd2ss", + "cvtsi2sd", + "cvtss2sd", + "cvttpd2pi", + "cvttpd2dq", + "cvttps2dq", + "cvttsd2si", + "divpd", + "divsd", + "maxpd", + "maxsd", + "minpd", + "minsd", + "movapd", + "movhpd", + "movlpd", + "movmskpd", + "movupd", + "mulpd", + "mulsd", + "orpd", + "shufpd", + "sqrtpd", + "sqrtsd", + "subpd", + "subsd", + "ucomisd", + "unpckhpd", + "unpcklpd", + "xorpd", + "addsubpd", + "addsubps", + "haddpd", + "haddps", + "hsubpd", + "hsubps", + "lddqu", + "movddup", + "movshdup", + "movsldup", + "clgi", + "stgi", + "vmcall", + "vmclear", + "vmfunc", + "vmlaunch", + "vmload", + "vmmcall", + "vmptrld", + "vmptrst", + "vmread", + "vmresume", + "vmrun", + "vmsave", + "vmwrite", + "vmxoff", + "vmxon", + "invept", + "invvpid", + "pvalidate", + "rmpadjust", + "vmgexit", + "pabsb", + "pabsw", + "pabsd", + "palignr", + "phaddw", + "phaddd", + "phaddsw", + "phsubw", + "phsubd", + "phsubsw", + "pmaddubsw", + "pmulhrsw", + "pshufb", + "psignb", + "psignw", + "psignd", + "extrq", + "insertq", + "movntsd", + "movntss", + "lzcnt", + "blendpd", + "blendps", + "blendvpd", + "blendvps", + "dppd", + "dpps", + "extractps", + "insertps", + "movntdqa", + "mpsadbw", + "packusdw", + "pblendvb", + "pblendw", + "pcmpeqq", + "pextrb", + "pextrd", + "pextrq", + "phminposuw", + "pinsrb", + "pinsrd", + "pinsrq", + "pmaxsb", + "pmaxsd", + "pmaxud", + "pmaxuw", + "pminsb", + "pminsd", + "pminud", + "pminuw", + "pmovsxbw", + "pmovsxbd", + "pmovsxbq", + "pmovsxwd", + "pmovsxwq", + "pmovsxdq", + "pmovzxbw", + "pmovzxbd", + "pmovzxbq", + "pmovzxwd", + "pmovzxwq", + "pmovzxdq", + "pmuldq", + "pmulld", + "ptest", + "roundpd", + "roundps", + "roundsd", + "roundss", + "crc32", + "pcmpestri", + "pcmpestrm", + "pcmpistri", + "pcmpistrm", + "pcmpgtq", + "popcnt", + "getsec", + "pfrcpv", + "pfrsqrtv", + "movbe", + "aesenc", + "aesenclast", + "aesdec", + "aesdeclast", + "aesimc", + "aeskeygenassist", + "vaesenc", + "vaesenclast", + "vaesdec", + "vaesdeclast", + "vaesimc", + "vaeskeygenassist", + "vaddpd", + "vaddps", + "vaddsd", + "vaddss", + "vaddsubpd", + "vaddsubps", + "vandpd", + "vandps", + "vandnpd", + "vandnps", + "vblendpd", + "vblendps", + "vblendvpd", + "vblendvps", + "vbroadcastss", + "vbroadcastsd", + "vbroadcastf128", + "vcmpeq_ospd", + "vcmpeqpd", + "vcmplt_ospd", + "vcmpltpd", + "vcmple_ospd", + "vcmplepd", + "vcmpunord_qpd", + "vcmpunordpd", + "vcmpneq_uqpd", + "vcmpneqpd", + "vcmpnlt_uspd", + "vcmpnltpd", + "vcmpnle_uspd", + "vcmpnlepd", + "vcmpord_qpd", + "vcmpordpd", + "vcmpeq_uqpd", + "vcmpnge_uspd", + "vcmpngepd", + "vcmpngt_uspd", + "vcmpngtpd", + "vcmpfalse_oqpd", + "vcmpfalsepd", + "vcmpneq_oqpd", + "vcmpge_ospd", + "vcmpgepd", + "vcmpgt_ospd", + "vcmpgtpd", + "vcmptrue_uqpd", + "vcmptruepd", + "vcmplt_oqpd", + "vcmple_oqpd", + "vcmpunord_spd", + "vcmpneq_uspd", + "vcmpnlt_uqpd", + "vcmpnle_uqpd", + "vcmpord_spd", + "vcmpeq_uspd", + "vcmpnge_uqpd", + "vcmpngt_uqpd", + "vcmpfalse_ospd", + "vcmpneq_ospd", + "vcmpge_oqpd", + "vcmpgt_oqpd", + "vcmptrue_uspd", + "vcmppd", + "vcmpeq_osps", + "vcmpeqps", + "vcmplt_osps", + "vcmpltps", + "vcmple_osps", + "vcmpleps", + "vcmpunord_qps", + "vcmpunordps", + "vcmpneq_uqps", + "vcmpneqps", + "vcmpnlt_usps", + "vcmpnltps", + "vcmpnle_usps", + "vcmpnleps", + "vcmpord_qps", + "vcmpordps", + "vcmpeq_uqps", + "vcmpnge_usps", + "vcmpngeps", + "vcmpngt_usps", + "vcmpngtps", + "vcmpfalse_oqps", + "vcmpfalseps", + "vcmpneq_oqps", + "vcmpge_osps", + "vcmpgeps", + "vcmpgt_osps", + "vcmpgtps", + "vcmptrue_uqps", + "vcmptrueps", + "vcmplt_oqps", + "vcmple_oqps", + "vcmpunord_sps", + "vcmpneq_usps", + "vcmpnlt_uqps", + "vcmpnle_uqps", + "vcmpord_sps", + "vcmpeq_usps", + "vcmpnge_uqps", + "vcmpngt_uqps", + "vcmpfalse_osps", + "vcmpneq_osps", + "vcmpge_oqps", + "vcmpgt_oqps", + "vcmptrue_usps", + "vcmpps", + "vcmpeq_ossd", + "vcmpeqsd", + "vcmplt_ossd", + "vcmpltsd", + "vcmple_ossd", + "vcmplesd", + "vcmpunord_qsd", + "vcmpunordsd", + "vcmpneq_uqsd", + "vcmpneqsd", + "vcmpnlt_ussd", + "vcmpnltsd", + "vcmpnle_ussd", + "vcmpnlesd", + "vcmpord_qsd", + "vcmpordsd", + "vcmpeq_uqsd", + "vcmpnge_ussd", + "vcmpngesd", + "vcmpngt_ussd", + "vcmpngtsd", + "vcmpfalse_oqsd", + "vcmpfalsesd", + "vcmpneq_oqsd", + "vcmpge_ossd", + "vcmpgesd", + "vcmpgt_ossd", + "vcmpgtsd", + "vcmptrue_uqsd", + "vcmptruesd", + "vcmplt_oqsd", + "vcmple_oqsd", + "vcmpunord_ssd", + "vcmpneq_ussd", + "vcmpnlt_uqsd", + "vcmpnle_uqsd", + "vcmpord_ssd", + "vcmpeq_ussd", + "vcmpnge_uqsd", + "vcmpngt_uqsd", + "vcmpfalse_ossd", + "vcmpneq_ossd", + "vcmpge_oqsd", + "vcmpgt_oqsd", + "vcmptrue_ussd", + "vcmpsd", + "vcmpeq_osss", + "vcmpeqss", + "vcmplt_osss", + "vcmpltss", + "vcmple_osss", + "vcmpless", + "vcmpunord_qss", + "vcmpunordss", + "vcmpneq_uqss", + "vcmpneqss", + "vcmpnlt_usss", + "vcmpnltss", + "vcmpnle_usss", + "vcmpnless", + "vcmpord_qss", + "vcmpordss", + "vcmpeq_uqss", + "vcmpnge_usss", + "vcmpngess", + "vcmpngt_usss", + "vcmpngtss", + "vcmpfalse_oqss", + "vcmpfalsess", + "vcmpneq_oqss", + "vcmpge_osss", + "vcmpgess", + "vcmpgt_osss", + "vcmpgtss", + "vcmptrue_uqss", + "vcmptruess", + "vcmplt_oqss", + "vcmple_oqss", + "vcmpunord_sss", + "vcmpneq_usss", + "vcmpnlt_uqss", + "vcmpnle_uqss", + "vcmpord_sss", + "vcmpeq_usss", + "vcmpnge_uqss", + "vcmpngt_uqss", + "vcmpfalse_osss", + "vcmpneq_osss", + "vcmpge_oqss", + "vcmpgt_oqss", + "vcmptrue_usss", + "vcmpss", + "vcomisd", + "vcomiss", + "vcvtdq2pd", + "vcvtdq2ps", + "vcvtpd2dq", + "vcvtpd2ps", + "vcvtps2dq", + "vcvtps2pd", + "vcvtsd2si", + "vcvtsd2ss", + "vcvtsi2sd", + "vcvtsi2ss", + "vcvtss2sd", + "vcvtss2si", + "vcvttpd2dq", + "vcvttps2dq", + "vcvttsd2si", + "vcvttss2si", + "vdivpd", + "vdivps", + "vdivsd", + "vdivss", + "vdppd", + "vdpps", + "vextractf128", + "vextractps", + "vhaddpd", + "vhaddps", + "vhsubpd", + "vhsubps", + "vinsertf128", + "vinsertps", + "vlddqu", + "vldqqu", + "vldmxcsr", + "vmaskmovdqu", + "vmaskmovps", + "vmaskmovpd", + "vmaxpd", + "vmaxps", + "vmaxsd", + "vmaxss", + "vminpd", + "vminps", + "vminsd", + "vminss", + "vmovapd", + "vmovaps", + "vmovd", + "vmovq", + "vmovddup", + "vmovdqa", + "vmovqqa", + "vmovdqu", + "vmovqqu", + "vmovhlps", + "vmovhpd", + "vmovhps", + "vmovlhps", + "vmovlpd", + "vmovlps", + "vmovmskpd", + "vmovmskps", + "vmovntdq", + "vmovntqq", + "vmovntdqa", + "vmovntpd", + "vmovntps", + "vmovsd", + "vmovshdup", + "vmovsldup", + "vmovss", + "vmovupd", + "vmovups", + "vmpsadbw", + "vmulpd", + "vmulps", + "vmulsd", + "vmulss", + "vorpd", + "vorps", + "vpabsb", + "vpabsw", + "vpabsd", + "vpacksswb", + "vpackssdw", + "vpackuswb", + "vpackusdw", + "vpaddb", + "vpaddw", + "vpaddd", + "vpaddq", + "vpaddsb", + "vpaddsw", + "vpaddusb", + "vpaddusw", + "vpalignr", + "vpand", + "vpandn", + "vpavgb", + "vpavgw", + "vpblendvb", + "vpblendw", + "vpcmpestri", + "vpcmpestrm", + "vpcmpistri", + "vpcmpistrm", + "vpcmpeqb", + "vpcmpeqw", + "vpcmpeqd", + "vpcmpeqq", + "vpcmpgtb", + "vpcmpgtw", + "vpcmpgtd", + "vpcmpgtq", + "vpermilpd", + "vpermilps", + "vperm2f128", + "vpextrb", + "vpextrw", + "vpextrd", + "vpextrq", + "vphaddw", + "vphaddd", + "vphaddsw", + "vphminposuw", + "vphsubw", + "vphsubd", + "vphsubsw", + "vpinsrb", + "vpinsrw", + "vpinsrd", + "vpinsrq", + "vpmaddwd", + "vpmaddubsw", + "vpmaxsb", + "vpmaxsw", + "vpmaxsd", + "vpmaxub", + "vpmaxuw", + "vpmaxud", + "vpminsb", + "vpminsw", + "vpminsd", + "vpminub", + "vpminuw", + "vpminud", + "vpmovmskb", + "vpmovsxbw", + "vpmovsxbd", + "vpmovsxbq", + "vpmovsxwd", + "vpmovsxwq", + "vpmovsxdq", + "vpmovzxbw", + "vpmovzxbd", + "vpmovzxbq", + "vpmovzxwd", + "vpmovzxwq", + "vpmovzxdq", + "vpmulhuw", + "vpmulhrsw", + "vpmulhw", + "vpmullw", + "vpmulld", + "vpmuludq", + "vpmuldq", + "vpor", + "vpsadbw", + "vpshufb", + "vpshufd", + "vpshufhw", + "vpshuflw", + "vpsignb", + "vpsignw", + "vpsignd", + "vpslldq", + "vpsrldq", + "vpsllw", + "vpslld", + "vpsllq", + "vpsraw", + "vpsrad", + "vpsrlw", + "vpsrld", + "vpsrlq", + "vptest", + "vpsubb", + "vpsubw", + "vpsubd", + "vpsubq", + "vpsubsb", + "vpsubsw", + "vpsubusb", + "vpsubusw", + "vpunpckhbw", + "vpunpckhwd", + "vpunpckhdq", + "vpunpckhqdq", + "vpunpcklbw", + "vpunpcklwd", + "vpunpckldq", + "vpunpcklqdq", + "vpxor", + "vrcpps", + "vrcpss", + "vrsqrtps", + "vrsqrtss", + "vroundpd", + "vroundps", + "vroundsd", + "vroundss", + "vshufpd", + "vshufps", + "vsqrtpd", + "vsqrtps", + "vsqrtsd", + "vsqrtss", + "vstmxcsr", + "vsubpd", + "vsubps", + "vsubsd", + "vsubss", + "vtestps", + "vtestpd", + "vucomisd", + "vucomiss", + "vunpckhpd", + "vunpckhps", + "vunpcklpd", + "vunpcklps", + "vxorpd", + "vxorps", + "vzeroall", + "vzeroupper", + "pclmullqlqdq", + "pclmulhqlqdq", + "pclmullqhqdq", + "pclmulhqhqdq", + "pclmulqdq", + "vpclmullqlqdq", + "vpclmulhqlqdq", + "vpclmullqhqdq", + "vpclmulhqhqdq", + "vpclmulqdq", + "vfmadd132ps", + "vfmadd132pd", + "vfmadd312ps", + "vfmadd312pd", + "vfmadd213ps", + "vfmadd213pd", + "vfmadd123ps", + "vfmadd123pd", + "vfmadd231ps", + "vfmadd231pd", + "vfmadd321ps", + "vfmadd321pd", + "vfmaddsub132ps", + "vfmaddsub132pd", + "vfmaddsub312ps", + "vfmaddsub312pd", + "vfmaddsub213ps", + "vfmaddsub213pd", + "vfmaddsub123ps", + "vfmaddsub123pd", + "vfmaddsub231ps", + "vfmaddsub231pd", + "vfmaddsub321ps", + "vfmaddsub321pd", + "vfmsub132ps", + "vfmsub132pd", + "vfmsub312ps", + "vfmsub312pd", + "vfmsub213ps", + "vfmsub213pd", + "vfmsub123ps", + "vfmsub123pd", + "vfmsub231ps", + "vfmsub231pd", + "vfmsub321ps", + "vfmsub321pd", + "vfmsubadd132ps", + "vfmsubadd132pd", + "vfmsubadd312ps", + "vfmsubadd312pd", + "vfmsubadd213ps", + "vfmsubadd213pd", + "vfmsubadd123ps", + "vfmsubadd123pd", + "vfmsubadd231ps", + "vfmsubadd231pd", + "vfmsubadd321ps", + "vfmsubadd321pd", + "vfnmadd132ps", + "vfnmadd132pd", + "vfnmadd312ps", + "vfnmadd312pd", + "vfnmadd213ps", + "vfnmadd213pd", + "vfnmadd123ps", + "vfnmadd123pd", + "vfnmadd231ps", + "vfnmadd231pd", + "vfnmadd321ps", + "vfnmadd321pd", + "vfnmsub132ps", + "vfnmsub132pd", + "vfnmsub312ps", + "vfnmsub312pd", + "vfnmsub213ps", + "vfnmsub213pd", + "vfnmsub123ps", + "vfnmsub123pd", + "vfnmsub231ps", + "vfnmsub231pd", + "vfnmsub321ps", + "vfnmsub321pd", + "vfmadd132ss", + "vfmadd132sd", + "vfmadd312ss", + "vfmadd312sd", + "vfmadd213ss", + "vfmadd213sd", + "vfmadd123ss", + "vfmadd123sd", + "vfmadd231ss", + "vfmadd231sd", + "vfmadd321ss", + "vfmadd321sd", + "vfmsub132ss", + "vfmsub132sd", + "vfmsub312ss", + "vfmsub312sd", + "vfmsub213ss", + "vfmsub213sd", + "vfmsub123ss", + "vfmsub123sd", + "vfmsub231ss", + "vfmsub231sd", + "vfmsub321ss", + "vfmsub321sd", + "vfnmadd132ss", + "vfnmadd132sd", + "vfnmadd312ss", + "vfnmadd312sd", + "vfnmadd213ss", + "vfnmadd213sd", + "vfnmadd123ss", + "vfnmadd123sd", + "vfnmadd231ss", + "vfnmadd231sd", + "vfnmadd321ss", + "vfnmadd321sd", + "vfnmsub132ss", + "vfnmsub132sd", + "vfnmsub312ss", + "vfnmsub312sd", + "vfnmsub213ss", + "vfnmsub213sd", + "vfnmsub123ss", + "vfnmsub123sd", + "vfnmsub231ss", + "vfnmsub231sd", + "vfnmsub321ss", + "vfnmsub321sd", + "rdfsbase", + "rdgsbase", + "rdrand", + "wrfsbase", + "wrgsbase", + "vcvtph2ps", + "vcvtps2ph", + "adcx", + "adox", + "rdseed", + "clac", + "stac", + "xstore", + "xcryptecb", + "xcryptcbc", + "xcryptctr", + "xcryptcfb", + "xcryptofb", + "montmul", + "xsha1", + "xsha256", + "llwpcb", + "slwpcb", + "lwpval", + "lwpins", + "vfmaddpd", + "vfmaddps", + "vfmaddsd", + "vfmaddss", + "vfmaddsubpd", + "vfmaddsubps", + "vfmsubaddpd", + "vfmsubaddps", + "vfmsubpd", + "vfmsubps", + "vfmsubsd", + "vfmsubss", + "vfnmaddpd", + "vfnmaddps", + "vfnmaddsd", + "vfnmaddss", + "vfnmsubpd", + "vfnmsubps", + "vfnmsubsd", + "vfnmsubss", + "vfrczpd", + "vfrczps", + "vfrczsd", + "vfrczss", + "vpcmov", + "vpcomb", + "vpcomd", + "vpcomq", + "vpcomub", + "vpcomud", + "vpcomuq", + "vpcomuw", + "vpcomw", + "vphaddbd", + "vphaddbq", + "vphaddbw", + "vphadddq", + "vphaddubd", + "vphaddubq", + "vphaddubw", + "vphaddudq", + "vphadduwd", + "vphadduwq", + "vphaddwd", + "vphaddwq", + "vphsubbw", + "vphsubdq", + "vphsubwd", + "vpmacsdd", + "vpmacsdqh", + "vpmacsdql", + "vpmacssdd", + "vpmacssdqh", + "vpmacssdql", + "vpmacsswd", + "vpmacssww", + "vpmacswd", + "vpmacsww", + "vpmadcsswd", + "vpmadcswd", + "vpperm", + "vprotb", + "vprotd", + "vprotq", + "vprotw", + "vpshab", + "vpshad", + "vpshaq", + "vpshaw", + "vpshlb", + "vpshld", + "vpshlq", + "vpshlw", + "vbroadcasti128", + "vpblendd", + "vpbroadcastb", + "vpbroadcastw", + "vpbroadcastd", + "vpbroadcastq", + "vpermd", + "vpermpd", + "vpermps", + "vpermq", + "vperm2i128", + "vextracti128", + "vinserti128", + "vpmaskmovd", + "vpmaskmovq", + "vpsllvd", + "vpsllvq", + "vpsravd", + "vpsrlvd", + "vpsrlvq", + "vgatherdpd", + "vgatherqpd", + "vgatherdps", + "vgatherqps", + "vpgatherdd", + "vpgatherqd", + "vpgatherdq", + "vpgatherqq", + "xabort", + "xbegin", + "xend", + "xtest", + "andn", + "bextr", + "blci", + "blcic", + "blsi", + "blsic", + "blcfill", + "blsfill", + "blcmsk", + "blsmsk", + "blsr", + "blcs", + "bzhi", + "mulx", + "pdep", + "pext", + "rorx", + "sarx", + "shlx", + "shrx", + "tzcnt", + "tzmsk", + "t1mskc", + "prefetchwt1", + "bndmk", + "bndcl", + "bndcu", + "bndcn", + "bndmov", + "bndldx", + "bndstx", + "sha1msg1", + "sha1msg2", + "sha1nexte", + "sha1rnds4", + "sha256msg1", + "sha256msg2", + "sha256rnds2", + "vbcstnebf16ps", + "vbcstnesh2ps", + "vcvtneebf162ps", + "vcvtneeph2ps", + "vcvtneobf162ps", + "vcvtneoph2ps", + "vcvtneps2bf16", + "vpdpbssd", + "vpdpbssds", + "vpdpbsud", + "vpdpbsuds", + "vpdpbuud", + "vpdpbuuds", + "vpmadd52huq", + "vpmadd52luq", + "kaddb", + "kaddd", + "kaddq", + "kaddw", + "kandb", + "kandd", + "kandnb", + "kandnd", + "kandnq", + "kandnw", + "kandq", + "kandw", + "kmovb", + "kmovd", + "kmovq", + "kmovw", + "knotb", + "knotd", + "knotq", + "knotw", + "korb", + "kord", + "korq", + "korw", + "kortestb", + "kortestd", + "kortestq", + "kortestw", + "kshiftlb", + "kshiftld", + "kshiftlq", + "kshiftlw", + "kshiftrb", + "kshiftrd", + "kshiftrq", + "kshiftrw", + "ktestb", + "ktestd", + "ktestq", + "ktestw", + "kunpckbw", + "kunpckdq", + "kunpckwd", + "kxnorb", + "kxnord", + "kxnorq", + "kxnorw", + "kxorb", + "kxord", + "kxorq", + "kxorw", + "kadd", + "kand", + "kandn", + "kmov", + "knot", + "kor", + "kortest", + "kshiftl", + "kshiftr", + "ktest", + "kunpck", + "kxnor", + "kxor", + "valignd", + "valignq", + "vblendmpd", + "vblendmps", + "vbroadcastf32x2", + "vbroadcastf32x4", + "vbroadcastf32x8", + "vbroadcastf64x2", + "vbroadcastf64x4", + "vbroadcasti32x2", + "vbroadcasti32x4", + "vbroadcasti32x8", + "vbroadcasti64x2", + "vbroadcasti64x4", + "vcmpeq_oqpd", + "vcmpeq_oqps", + "vcmpeq_oqsd", + "vcmpeq_oqss", + "vcompresspd", + "vcompressps", + "vcvtpd2qq", + "vcvtpd2udq", + "vcvtpd2uqq", + "vcvtps2qq", + "vcvtps2udq", + "vcvtps2uqq", + "vcvtqq2pd", + "vcvtqq2ps", + "vcvtsd2usi", + "vcvtss2usi", + "vcvttpd2qq", + "vcvttpd2udq", + "vcvttpd2uqq", + "vcvttps2qq", + "vcvttps2udq", + "vcvttps2uqq", + "vcvttsd2usi", + "vcvttss2usi", + "vcvtudq2pd", + "vcvtudq2ps", + "vcvtuqq2pd", + "vcvtuqq2ps", + "vcvtusi2sd", + "vcvtusi2ss", + "vdbpsadbw", + "vexp2pd", + "vexp2ps", + "vexpandpd", + "vexpandps", + "vextractf32x4", + "vextractf32x8", + "vextractf64x2", + "vextractf64x4", + "vextracti32x4", + "vextracti32x8", + "vextracti64x2", + "vextracti64x4", + "vfixupimmpd", + "vfixupimmps", + "vfixupimmsd", + "vfixupimmss", + "vfpclasspd", + "vfpclassps", + "vfpclasssd", + "vfpclassss", + "vgatherpf0dpd", + "vgatherpf0dps", + "vgatherpf0qpd", + "vgatherpf0qps", + "vgatherpf1dpd", + "vgatherpf1dps", + "vgatherpf1qpd", + "vgatherpf1qps", + "vgetexppd", + "vgetexpps", + "vgetexpsd", + "vgetexpss", + "vgetmantpd", + "vgetmantps", + "vgetmantsd", + "vgetmantss", + "vinsertf32x4", + "vinsertf32x8", + "vinsertf64x2", + "vinsertf64x4", + "vinserti32x4", + "vinserti32x8", + "vinserti64x2", + "vinserti64x4", + "vmovdqa32", + "vmovdqa64", + "vmovdqu16", + "vmovdqu32", + "vmovdqu64", + "vmovdqu8", + "vpabsq", + "vpandd", + "vpandnd", + "vpandnq", + "vpandq", + "vpblendmb", + "vpblendmd", + "vpblendmq", + "vpblendmw", + "vpbroadcastmb2q", + "vpbroadcastmw2d", + "vpcmpequb", + "vpcmpequd", + "vpcmpequq", + "vpcmpequw", + "vpcmpgeb", + "vpcmpged", + "vpcmpgeq", + "vpcmpgeub", + "vpcmpgeud", + "vpcmpgeuq", + "vpcmpgeuw", + "vpcmpgew", + "vpcmpgtub", + "vpcmpgtud", + "vpcmpgtuq", + "vpcmpgtuw", + "vpcmpleb", + "vpcmpled", + "vpcmpleq", + "vpcmpleub", + "vpcmpleud", + "vpcmpleuq", + "vpcmpleuw", + "vpcmplew", + "vpcmpltb", + "vpcmpltd", + "vpcmpltq", + "vpcmpltub", + "vpcmpltud", + "vpcmpltuq", + "vpcmpltuw", + "vpcmpltw", + "vpcmpneqb", + "vpcmpneqd", + "vpcmpneqq", + "vpcmpnequb", + "vpcmpnequd", + "vpcmpnequq", + "vpcmpnequw", + "vpcmpneqw", + "vpcmpngtb", + "vpcmpngtd", + "vpcmpngtq", + "vpcmpngtub", + "vpcmpngtud", + "vpcmpngtuq", + "vpcmpngtuw", + "vpcmpngtw", + "vpcmpnleb", + "vpcmpnled", + "vpcmpnleq", + "vpcmpnleub", + "vpcmpnleud", + "vpcmpnleuq", + "vpcmpnleuw", + "vpcmpnlew", + "vpcmpnltb", + "vpcmpnltd", + "vpcmpnltq", + "vpcmpnltub", + "vpcmpnltud", + "vpcmpnltuq", + "vpcmpnltuw", + "vpcmpnltw", + "vpcmpb", + "vpcmpd", + "vpcmpq", + "vpcmpub", + "vpcmpud", + "vpcmpuq", + "vpcmpuw", + "vpcmpw", + "vpcompressd", + "vpcompressq", + "vpconflictd", + "vpconflictq", + "vpermb", + "vpermi2b", + "vpermi2d", + "vpermi2pd", + "vpermi2ps", + "vpermi2q", + "vpermi2w", + "vpermt2b", + "vpermt2d", + "vpermt2pd", + "vpermt2ps", + "vpermt2q", + "vpermt2w", + "vpermw", + "vpexpandd", + "vpexpandq", + "vplzcntd", + "vplzcntq", + "vpmaxsq", + "vpmaxuq", + "vpminsq", + "vpminuq", + "vpmovb2m", + "vpmovd2m", + "vpmovdb", + "vpmovdw", + "vpmovm2b", + "vpmovm2d", + "vpmovm2q", + "vpmovm2w", + "vpmovq2m", + "vpmovqb", + "vpmovqd", + "vpmovqw", + "vpmovsdb", + "vpmovsdw", + "vpmovsqb", + "vpmovsqd", + "vpmovsqw", + "vpmovswb", + "vpmovusdb", + "vpmovusdw", + "vpmovusqb", + "vpmovusqd", + "vpmovusqw", + "vpmovuswb", + "vpmovw2m", + "vpmovwb", + "vpmullq", + "vpmultishiftqb", + "vpord", + "vporq", + "vprold", + "vprolq", + "vprolvd", + "vprolvq", + "vprord", + "vprorq", + "vprorvd", + "vprorvq", + "vpscatterdd", + "vpscatterdq", + "vpscatterqd", + "vpscatterqq", + "vpsllvw", + "vpsraq", + "vpsravq", + "vpsravw", + "vpsrlvw", + "vpternlogd", + "vpternlogq", + "vptestmb", + "vptestmd", + "vptestmq", + "vptestmw", + "vptestnmb", + "vptestnmd", + "vptestnmq", + "vptestnmw", + "vpxord", + "vpxorq", + "vrangepd", + "vrangeps", + "vrangesd", + "vrangess", + "vrcp14pd", + "vrcp14ps", + "vrcp14sd", + "vrcp14ss", + "vrcp28pd", + "vrcp28ps", + "vrcp28sd", + "vrcp28ss", + "vreducepd", + "vreduceps", + "vreducesd", + "vreducess", + "vrndscalepd", + "vrndscaleps", + "vrndscalesd", + "vrndscaless", + "vrsqrt14pd", + "vrsqrt14ps", + "vrsqrt14sd", + "vrsqrt14ss", + "vrsqrt28pd", + "vrsqrt28ps", + "vrsqrt28sd", + "vrsqrt28ss", + "vscalefpd", + "vscalefps", + "vscalefsd", + "vscalefss", + "vscatterdpd", + "vscatterdps", + "vscatterpf0dpd", + "vscatterpf0dps", + "vscatterpf0qpd", + "vscatterpf0qps", + "vscatterpf1dpd", + "vscatterpf1dps", + "vscatterpf1qpd", + "vscatterpf1qps", + "vscatterqpd", + "vscatterqps", + "vshuff32x4", + "vshuff64x2", + "vshufi32x4", + "vshufi64x2", + "rdpkru", + "wrpkru", + "rdpid", + "clflushopt", + "clwb", + "pcommit", + "clzero", + "ptwrite", + "cldemote", + "movdiri", + "movdir64b", + "pconfig", + "tpause", + "umonitor", + "umwait", + "wbnoinvd", + "gf2p8affineinvqb", + "vgf2p8affineinvqb", + "gf2p8affineqb", + "vgf2p8affineqb", + "gf2p8mulb", + "vgf2p8mulb", + "vpcompressb", + "vpcompressw", + "vpexpandb", + "vpexpandw", + "vpshldw", + "vpshldd", + "vpshldq", + "vpshldvw", + "vpshldvd", + "vpshldvq", + "vpshrdw", + "vpshrdd", + "vpshrdq", + "vpshrdvw", + "vpshrdvd", + "vpshrdvq", + "vpdpbusd", + "vpdpbusds", + "vpdpwssd", + "vpdpwssds", + "vpopcntb", + "vpopcntw", + "vpopcntd", + "vpopcntq", + "vpshufbitqmb", + "v4fmaddps", + "v4fnmaddps", + "v4fmaddss", + "v4fnmaddss", + "v4dpwssds", + "v4dpwssd", + "encls", + "enclu", + "enclv", + "clrssbsy", + "endbr32", + "endbr64", + "incsspd", + "incsspq", + "rdsspd", + "rdsspq", + "rstorssp", + "saveprevssp", + "setssbsy", + "wrussd", + "wrussq", + "wrssd", + "wrssq", + "enqcmd", + "enqcmds", + "serialize", + "xresldtrk", + "xsusldtrk", + "vcvtne2ps2bf16", + "vdpbf16ps", + "vp2intersectd", + "ldtilecfg", + "sttilecfg", + "tdpbf16ps", + "tdpbssd", + "tdpbsud", + "tdpbusd", + "tdpbuud", + "tileloadd", + "tileloaddt1", + "tilerelease", + "tilestored", + "tilezero", + "vaddph", + "vaddsh", + "vcmpph", + "vcmpsh", + "vcomish", + "vcvtdq2ph", + "vcvtpd2ph", + "vcvtph2dq", + "vcvtph2pd", + "vcvtph2psx", + "vcvtph2qq", + "vcvtph2udq", + "vcvtph2uqq", + "vcvtph2uw", + "vcvtph2w", + "vcvtqq2ph", + "vcvtsd2sh", + "vcvtsh2sd", + "vcvtsh2si", + "vcvtsh2ss", + "vcvtsh2usi", + "vcvtsi2sh", + "vcvtss2sh", + "vcvttph2dq", + "vcvttph2qq", + "vcvttph2udq", + "vcvttph2uqq", + "vcvttph2uw", + "vcvttph2w", + "vcvttsh2si", + "vcvttsh2usi", + "vcvtudq2ph", + "vcvtuqq2ph", + "vcvtusi2sh", + "vcvtuw2ph", + "vcvtw2ph", + "vdivph", + "vdivsh", + "vfcmaddcph", + "vfmaddcph", + "vfcmaddcsh", + "vfmaddcsh", + "vfcmulcpch", + "vfmulcpch", + "vfcmulcsh", + "vfmulcsh", + "vfmaddsub132ph", + "vfmaddsub213ph", + "vfmaddsub231ph", + "vfmsubadd132ph", + "vfmsubadd213ph", + "vfmsubadd231ph", + "vpmadd132ph", + "vpmadd213ph", + "vpmadd231ph", + "vfmadd132ph", + "vfmadd213ph", + "vfmadd231ph", + "vpmadd132sh", + "vpmadd213sh", + "vpmadd231sh", + "vpnmadd132sh", + "vpnmadd213sh", + "vpnmadd231sh", + "vpmsub132ph", + "vpmsub213ph", + "vpmsub231ph", + "vfmsub132ph", + "vfmsub213ph", + "vfmsub231ph", + "vpmsub132sh", + "vpmsub213sh", + "vpmsub231sh", + "vpnmsub132sh", + "vpnmsub213sh", + "vpnmsub231sh", + "vfpclassph", + "vfpclasssh", + "vgetexpph", + "vgetexpsh", + "vgetmantph", + "vgetmantsh", + "vgetmaxph", + "vgetmaxsh", + "vgetminph", + "vgetminsh", + "vmovsh", + "vmovw", + "vmulph", + "vmulsh", + "vrcpph", + "vrcpsh", + "vreduceph", + "vreducesh", + "vendscaleph", + "vendscalesh", + "vrsqrtph", + "vrsqrtsh", + "vscalefph", + "vscalefsh", + "vsqrtph", + "vsqrtsh", + "vsubph", + "vsubsh", + "vucomish", + "aadd", + "aand", + "axor", + "clui", + "senduipi", + "stui", + "testui", + "uiret", + "cmpaxadd", + "cmpaexadd", + "cmpbxadd", + "cmpbexadd", + "cmpcxadd", + "cmpexadd", + "cmpgxadd", + "cmpgexadd", + "cmplxadd", + "cmplexadd", + "cmpnaxadd", + "cmpnaexadd", + "cmpnbxadd", + "cmpnbexadd", + "cmpncxadd", + "cmpnexadd", + "cmpngxadd", + "cmpngexadd", + "cmpnlxadd", + "cmpnlexadd", + "cmpnoxadd", + "cmpnpxadd", + "cmpnsxadd", + "cmpnzxadd", + "cmpoxadd", + "cmppxadd", + "cmppexadd", + "cmppoxadd", + "cmpsxadd", + "cmpzxadd", + "wrmsrns", + "rdmsrlist", + "wrmsrlist", + "hreset", + "hint_nop0", + "hint_nop1", + "hint_nop2", + "hint_nop3", + "hint_nop4", + "hint_nop5", + "hint_nop6", + "hint_nop7", + "hint_nop8", + "hint_nop9", + "hint_nop10", + "hint_nop11", + "hint_nop12", + "hint_nop13", + "hint_nop14", + "hint_nop15", + "hint_nop16", + "hint_nop17", + "hint_nop18", + "hint_nop19", + "hint_nop20", + "hint_nop21", + "hint_nop22", + "hint_nop23", + "hint_nop24", + "hint_nop25", + "hint_nop26", + "hint_nop27", + "hint_nop28", + "hint_nop29", + "hint_nop30", + "hint_nop31", + "hint_nop32", + "hint_nop33", + "hint_nop34", + "hint_nop35", + "hint_nop36", + "hint_nop37", + "hint_nop38", + "hint_nop39", + "hint_nop40", + "hint_nop41", + "hint_nop42", + "hint_nop43", + "hint_nop44", + "hint_nop45", + "hint_nop46", + "hint_nop47", + "hint_nop48", + "hint_nop49", + "hint_nop50", + "hint_nop51", + "hint_nop52", + "hint_nop53", + "hint_nop54", + "hint_nop55", + "hint_nop56", + "hint_nop57", + "hint_nop58", + "hint_nop59", + "hint_nop60", + "hint_nop61", + "hint_nop62", + "hint_nop63", +}; diff --git a/vere/ext/nasm/x86/regdis.c b/vere/ext/nasm/x86/regdis.c new file mode 100644 index 0000000..99179d6 --- /dev/null +++ b/vere/ext/nasm/x86/regdis.c @@ -0,0 +1,21 @@ +/* automatically generated from ./x86/regs.dat - do not edit */ + +#include "regdis.h" + +const enum reg_enum nasm_rd_bndreg [ 4] = {R_BND0,R_BND1,R_BND2,R_BND3}; +const enum reg_enum nasm_rd_creg [16] = {R_CR0,R_CR1,R_CR2,R_CR3,R_CR4,R_CR5,R_CR6,R_CR7,R_CR8,R_CR9,R_CR10,R_CR11,R_CR12,R_CR13,R_CR14,R_CR15}; +const enum reg_enum nasm_rd_dreg [16] = {R_DR0,R_DR1,R_DR2,R_DR3,R_DR4,R_DR5,R_DR6,R_DR7,R_DR8,R_DR9,R_DR10,R_DR11,R_DR12,R_DR13,R_DR14,R_DR15}; +const enum reg_enum nasm_rd_fpureg [ 8] = {R_ST0,R_ST1,R_ST2,R_ST3,R_ST4,R_ST5,R_ST6,R_ST7}; +const enum reg_enum nasm_rd_mmxreg [ 8] = {R_MM0,R_MM1,R_MM2,R_MM3,R_MM4,R_MM5,R_MM6,R_MM7}; +const enum reg_enum nasm_rd_opmaskreg[ 8] = {R_K0,R_K1,R_K2,R_K3,R_K4,R_K5,R_K6,R_K7}; +const enum reg_enum nasm_rd_reg16 [16] = {R_AX,R_CX,R_DX,R_BX,R_SP,R_BP,R_SI,R_DI,R_R8W,R_R9W,R_R10W,R_R11W,R_R12W,R_R13W,R_R14W,R_R15W}; +const enum reg_enum nasm_rd_reg32 [16] = {R_EAX,R_ECX,R_EDX,R_EBX,R_ESP,R_EBP,R_ESI,R_EDI,R_R8D,R_R9D,R_R10D,R_R11D,R_R12D,R_R13D,R_R14D,R_R15D}; +const enum reg_enum nasm_rd_reg64 [16] = {R_RAX,R_RCX,R_RDX,R_RBX,R_RSP,R_RBP,R_RSI,R_RDI,R_R8,R_R9,R_R10,R_R11,R_R12,R_R13,R_R14,R_R15}; +const enum reg_enum nasm_rd_reg8 [ 8] = {R_AL,R_CL,R_DL,R_BL,R_AH,R_CH,R_DH,R_BH}; +const enum reg_enum nasm_rd_reg8_rex[16] = {R_AL,R_CL,R_DL,R_BL,R_SPL,R_BPL,R_SIL,R_DIL,R_R8B,R_R9B,R_R10B,R_R11B,R_R12B,R_R13B,R_R14B,R_R15B}; +const enum reg_enum nasm_rd_sreg [ 8] = {R_ES,R_CS,R_SS,R_DS,R_FS,R_GS,R_SEGR6,R_SEGR7}; +const enum reg_enum nasm_rd_tmmreg [ 8] = {R_TMM0,R_TMM1,R_TMM2,R_TMM3,R_TMM4,R_TMM5,R_TMM6,R_TMM7}; +const enum reg_enum nasm_rd_treg [ 8] = {R_TR0,R_TR1,R_TR2,R_TR3,R_TR4,R_TR5,R_TR6,R_TR7}; +const enum reg_enum nasm_rd_xmmreg [32] = {R_XMM0,R_XMM1,R_XMM2,R_XMM3,R_XMM4,R_XMM5,R_XMM6,R_XMM7,R_XMM8,R_XMM9,R_XMM10,R_XMM11,R_XMM12,R_XMM13,R_XMM14,R_XMM15,R_XMM16,R_XMM17,R_XMM18,R_XMM19,R_XMM20,R_XMM21,R_XMM22,R_XMM23,R_XMM24,R_XMM25,R_XMM26,R_XMM27,R_XMM28,R_XMM29,R_XMM30,R_XMM31}; +const enum reg_enum nasm_rd_ymmreg [32] = {R_YMM0,R_YMM1,R_YMM2,R_YMM3,R_YMM4,R_YMM5,R_YMM6,R_YMM7,R_YMM8,R_YMM9,R_YMM10,R_YMM11,R_YMM12,R_YMM13,R_YMM14,R_YMM15,R_YMM16,R_YMM17,R_YMM18,R_YMM19,R_YMM20,R_YMM21,R_YMM22,R_YMM23,R_YMM24,R_YMM25,R_YMM26,R_YMM27,R_YMM28,R_YMM29,R_YMM30,R_YMM31}; +const enum reg_enum nasm_rd_zmmreg [32] = {R_ZMM0,R_ZMM1,R_ZMM2,R_ZMM3,R_ZMM4,R_ZMM5,R_ZMM6,R_ZMM7,R_ZMM8,R_ZMM9,R_ZMM10,R_ZMM11,R_ZMM12,R_ZMM13,R_ZMM14,R_ZMM15,R_ZMM16,R_ZMM17,R_ZMM18,R_ZMM19,R_ZMM20,R_ZMM21,R_ZMM22,R_ZMM23,R_ZMM24,R_ZMM25,R_ZMM26,R_ZMM27,R_ZMM28,R_ZMM29,R_ZMM30,R_ZMM31}; diff --git a/vere/ext/nasm/x86/regflags.c b/vere/ext/nasm/x86/regflags.c new file mode 100644 index 0000000..ef42544 --- /dev/null +++ b/vere/ext/nasm/x86/regflags.c @@ -0,0 +1,256 @@ +/* automatically generated from ./x86/regs.dat - do not edit */ + +#include "tables.h" +#include "nasm.h" + +const opflags_t nasm_reg_flags[] = { + 0, + REG_HIGH, /* ah */ + REG_AL, /* al */ + REG_AX, /* ax */ + REG_HIGH, /* bh */ + REG8NA, /* bl */ + BNDREG, /* bnd0 */ + BNDREG, /* bnd1 */ + BNDREG, /* bnd2 */ + BNDREG, /* bnd3 */ + REG16NA, /* bp */ + REG8NA, /* bpl */ + REG16NA, /* bx */ + REG_HIGH, /* ch */ + REG_CL, /* cl */ + REG_CREG, /* cr0 */ + REG_CREG, /* cr1 */ + REG_CREG, /* cr10 */ + REG_CREG, /* cr11 */ + REG_CREG, /* cr12 */ + REG_CREG, /* cr13 */ + REG_CREG, /* cr14 */ + REG_CREG, /* cr15 */ + REG_CREG, /* cr2 */ + REG_CREG, /* cr3 */ + REG_CREG, /* cr4 */ + REG_CREG, /* cr5 */ + REG_CREG, /* cr6 */ + REG_CREG, /* cr7 */ + REG_CREG, /* cr8 */ + REG_CREG, /* cr9 */ + REG_CS, /* cs */ + REG_CX, /* cx */ + REG_HIGH, /* dh */ + REG16NA, /* di */ + REG8NA, /* dil */ + REG_DL, /* dl */ + REG_DREG, /* dr0 */ + REG_DREG, /* dr1 */ + REG_DREG, /* dr10 */ + REG_DREG, /* dr11 */ + REG_DREG, /* dr12 */ + REG_DREG, /* dr13 */ + REG_DREG, /* dr14 */ + REG_DREG, /* dr15 */ + REG_DREG, /* dr2 */ + REG_DREG, /* dr3 */ + REG_DREG, /* dr4 */ + REG_DREG, /* dr5 */ + REG_DREG, /* dr6 */ + REG_DREG, /* dr7 */ + REG_DREG, /* dr8 */ + REG_DREG, /* dr9 */ + REG_DS, /* ds */ + REG_DX, /* dx */ + REG_EAX, /* eax */ + REG32NA, /* ebp */ + REG32NA, /* ebx */ + REG_ECX, /* ecx */ + REG32NA, /* edi */ + REG_EDX, /* edx */ + REG_ES, /* es */ + REG32NA, /* esi */ + REG32NA, /* esp */ + REG_FS, /* fs */ + REG_GS, /* gs */ + OPMASK0, /* k0 */ + OPMASKREG, /* k1 */ + OPMASKREG, /* k2 */ + OPMASKREG, /* k3 */ + OPMASKREG, /* k4 */ + OPMASKREG, /* k5 */ + OPMASKREG, /* k6 */ + OPMASKREG, /* k7 */ + MMXREG, /* mm0 */ + MMXREG, /* mm1 */ + MMXREG, /* mm2 */ + MMXREG, /* mm3 */ + MMXREG, /* mm4 */ + MMXREG, /* mm5 */ + MMXREG, /* mm6 */ + MMXREG, /* mm7 */ + REG64NA, /* r10 */ + REG8NA, /* r10b */ + REG32NA, /* r10d */ + REG16NA, /* r10w */ + REG64NA, /* r11 */ + REG8NA, /* r11b */ + REG32NA, /* r11d */ + REG16NA, /* r11w */ + REG64NA, /* r12 */ + REG8NA, /* r12b */ + REG32NA, /* r12d */ + REG16NA, /* r12w */ + REG64NA, /* r13 */ + REG8NA, /* r13b */ + REG32NA, /* r13d */ + REG16NA, /* r13w */ + REG64NA, /* r14 */ + REG8NA, /* r14b */ + REG32NA, /* r14d */ + REG16NA, /* r14w */ + REG64NA, /* r15 */ + REG8NA, /* r15b */ + REG32NA, /* r15d */ + REG16NA, /* r15w */ + REG64NA, /* r8 */ + REG8NA, /* r8b */ + REG32NA, /* r8d */ + REG16NA, /* r8w */ + REG64NA, /* r9 */ + REG8NA, /* r9b */ + REG32NA, /* r9d */ + REG16NA, /* r9w */ + REG_RAX, /* rax */ + REG64NA, /* rbp */ + REG64NA, /* rbx */ + REG_RCX, /* rcx */ + REG64NA, /* rdi */ + REG_RDX, /* rdx */ + REG64NA, /* rsi */ + REG64NA, /* rsp */ + REG_SEG67, /* segr6 */ + REG_SEG67, /* segr7 */ + REG16NA, /* si */ + REG8NA, /* sil */ + REG16NA, /* sp */ + REG8NA, /* spl */ + REG_SS, /* ss */ + FPU0, /* st0 */ + FPUREG, /* st1 */ + FPUREG, /* st2 */ + FPUREG, /* st3 */ + FPUREG, /* st4 */ + FPUREG, /* st5 */ + FPUREG, /* st6 */ + FPUREG, /* st7 */ + TMMREG, /* tmm0 */ + TMMREG, /* tmm1 */ + TMMREG, /* tmm2 */ + TMMREG, /* tmm3 */ + TMMREG, /* tmm4 */ + TMMREG, /* tmm5 */ + TMMREG, /* tmm6 */ + TMMREG, /* tmm7 */ + REG_TREG, /* tr0 */ + REG_TREG, /* tr1 */ + REG_TREG, /* tr2 */ + REG_TREG, /* tr3 */ + REG_TREG, /* tr4 */ + REG_TREG, /* tr5 */ + REG_TREG, /* tr6 */ + REG_TREG, /* tr7 */ + XMM0, /* xmm0 */ + XMM_L16, /* xmm1 */ + XMM_L16, /* xmm10 */ + XMM_L16, /* xmm11 */ + XMM_L16, /* xmm12 */ + XMM_L16, /* xmm13 */ + XMM_L16, /* xmm14 */ + XMM_L16, /* xmm15 */ + XMMREG, /* xmm16 */ + XMMREG, /* xmm17 */ + XMMREG, /* xmm18 */ + XMMREG, /* xmm19 */ + XMM_L16, /* xmm2 */ + XMMREG, /* xmm20 */ + XMMREG, /* xmm21 */ + XMMREG, /* xmm22 */ + XMMREG, /* xmm23 */ + XMMREG, /* xmm24 */ + XMMREG, /* xmm25 */ + XMMREG, /* xmm26 */ + XMMREG, /* xmm27 */ + XMMREG, /* xmm28 */ + XMMREG, /* xmm29 */ + XMM_L16, /* xmm3 */ + XMMREG, /* xmm30 */ + XMMREG, /* xmm31 */ + XMM_L16, /* xmm4 */ + XMM_L16, /* xmm5 */ + XMM_L16, /* xmm6 */ + XMM_L16, /* xmm7 */ + XMM_L16, /* xmm8 */ + XMM_L16, /* xmm9 */ + YMM0, /* ymm0 */ + YMM_L16, /* ymm1 */ + YMM_L16, /* ymm10 */ + YMM_L16, /* ymm11 */ + YMM_L16, /* ymm12 */ + YMM_L16, /* ymm13 */ + YMM_L16, /* ymm14 */ + YMM_L16, /* ymm15 */ + YMMREG, /* ymm16 */ + YMMREG, /* ymm17 */ + YMMREG, /* ymm18 */ + YMMREG, /* ymm19 */ + YMM_L16, /* ymm2 */ + YMMREG, /* ymm20 */ + YMMREG, /* ymm21 */ + YMMREG, /* ymm22 */ + YMMREG, /* ymm23 */ + YMMREG, /* ymm24 */ + YMMREG, /* ymm25 */ + YMMREG, /* ymm26 */ + YMMREG, /* ymm27 */ + YMMREG, /* ymm28 */ + YMMREG, /* ymm29 */ + YMM_L16, /* ymm3 */ + YMMREG, /* ymm30 */ + YMMREG, /* ymm31 */ + YMM_L16, /* ymm4 */ + YMM_L16, /* ymm5 */ + YMM_L16, /* ymm6 */ + YMM_L16, /* ymm7 */ + YMM_L16, /* ymm8 */ + YMM_L16, /* ymm9 */ + ZMM0, /* zmm0 */ + ZMM_L16, /* zmm1 */ + ZMM_L16, /* zmm10 */ + ZMM_L16, /* zmm11 */ + ZMM_L16, /* zmm12 */ + ZMM_L16, /* zmm13 */ + ZMM_L16, /* zmm14 */ + ZMM_L16, /* zmm15 */ + ZMMREG, /* zmm16 */ + ZMMREG, /* zmm17 */ + ZMMREG, /* zmm18 */ + ZMMREG, /* zmm19 */ + ZMM_L16, /* zmm2 */ + ZMMREG, /* zmm20 */ + ZMMREG, /* zmm21 */ + ZMMREG, /* zmm22 */ + ZMMREG, /* zmm23 */ + ZMMREG, /* zmm24 */ + ZMMREG, /* zmm25 */ + ZMMREG, /* zmm26 */ + ZMMREG, /* zmm27 */ + ZMMREG, /* zmm28 */ + ZMMREG, /* zmm29 */ + ZMM_L16, /* zmm3 */ + ZMMREG, /* zmm30 */ + ZMMREG, /* zmm31 */ + ZMM_L16, /* zmm4 */ + ZMM_L16, /* zmm5 */ + ZMM_L16, /* zmm6 */ + ZMM_L16, /* zmm7 */ + ZMM_L16, /* zmm8 */ + ZMM_L16, /* zmm9 */ +}; diff --git a/vere/ext/nasm/x86/regs.c b/vere/ext/nasm/x86/regs.c new file mode 100644 index 0000000..1e4fd01 --- /dev/null +++ b/vere/ext/nasm/x86/regs.c @@ -0,0 +1,254 @@ +/* automatically generated from ./x86/regs.dat - do not edit */ + +#include "tables.h" + +const char * const nasm_reg_names[] = { + "ah", + "al", + "ax", + "bh", + "bl", + "bnd0", + "bnd1", + "bnd2", + "bnd3", + "bp", + "bpl", + "bx", + "ch", + "cl", + "cr0", + "cr1", + "cr10", + "cr11", + "cr12", + "cr13", + "cr14", + "cr15", + "cr2", + "cr3", + "cr4", + "cr5", + "cr6", + "cr7", + "cr8", + "cr9", + "cs", + "cx", + "dh", + "di", + "dil", + "dl", + "dr0", + "dr1", + "dr10", + "dr11", + "dr12", + "dr13", + "dr14", + "dr15", + "dr2", + "dr3", + "dr4", + "dr5", + "dr6", + "dr7", + "dr8", + "dr9", + "ds", + "dx", + "eax", + "ebp", + "ebx", + "ecx", + "edi", + "edx", + "es", + "esi", + "esp", + "fs", + "gs", + "k0", + "k1", + "k2", + "k3", + "k4", + "k5", + "k6", + "k7", + "mm0", + "mm1", + "mm2", + "mm3", + "mm4", + "mm5", + "mm6", + "mm7", + "r10", + "r10b", + "r10d", + "r10w", + "r11", + "r11b", + "r11d", + "r11w", + "r12", + "r12b", + "r12d", + "r12w", + "r13", + "r13b", + "r13d", + "r13w", + "r14", + "r14b", + "r14d", + "r14w", + "r15", + "r15b", + "r15d", + "r15w", + "r8", + "r8b", + "r8d", + "r8w", + "r9", + "r9b", + "r9d", + "r9w", + "rax", + "rbp", + "rbx", + "rcx", + "rdi", + "rdx", + "rsi", + "rsp", + "segr6", + "segr7", + "si", + "sil", + "sp", + "spl", + "ss", + "st0", + "st1", + "st2", + "st3", + "st4", + "st5", + "st6", + "st7", + "tmm0", + "tmm1", + "tmm2", + "tmm3", + "tmm4", + "tmm5", + "tmm6", + "tmm7", + "tr0", + "tr1", + "tr2", + "tr3", + "tr4", + "tr5", + "tr6", + "tr7", + "xmm0", + "xmm1", + "xmm10", + "xmm11", + "xmm12", + "xmm13", + "xmm14", + "xmm15", + "xmm16", + "xmm17", + "xmm18", + "xmm19", + "xmm2", + "xmm20", + "xmm21", + "xmm22", + "xmm23", + "xmm24", + "xmm25", + "xmm26", + "xmm27", + "xmm28", + "xmm29", + "xmm3", + "xmm30", + "xmm31", + "xmm4", + "xmm5", + "xmm6", + "xmm7", + "xmm8", + "xmm9", + "ymm0", + "ymm1", + "ymm10", + "ymm11", + "ymm12", + "ymm13", + "ymm14", + "ymm15", + "ymm16", + "ymm17", + "ymm18", + "ymm19", + "ymm2", + "ymm20", + "ymm21", + "ymm22", + "ymm23", + "ymm24", + "ymm25", + "ymm26", + "ymm27", + "ymm28", + "ymm29", + "ymm3", + "ymm30", + "ymm31", + "ymm4", + "ymm5", + "ymm6", + "ymm7", + "ymm8", + "ymm9", + "zmm0", + "zmm1", + "zmm10", + "zmm11", + "zmm12", + "zmm13", + "zmm14", + "zmm15", + "zmm16", + "zmm17", + "zmm18", + "zmm19", + "zmm2", + "zmm20", + "zmm21", + "zmm22", + "zmm23", + "zmm24", + "zmm25", + "zmm26", + "zmm27", + "zmm28", + "zmm29", + "zmm3", + "zmm30", + "zmm31", + "zmm4", + "zmm5", + "zmm6", + "zmm7", + "zmm8", + "zmm9" +}; diff --git a/vere/ext/nasm/x86/regs.dat b/vere/ext/nasm/x86/regs.dat new file mode 100644 index 0000000..cec8420 --- /dev/null +++ b/vere/ext/nasm/x86/regs.dat @@ -0,0 +1,141 @@ +## -------------------------------------------------------------------------- +## +## Copyright 1996-2009 The NASM Authors - All Rights Reserved +## See the file AUTHORS included with the NASM distribution for +## the specific copyright holders. +## +## 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. +## +## -------------------------------------------------------------------------- + +# +# List of registers and their classes; classes are defined in nasm.h +# +# The columns are: +# +# register name, assembler class, disassembler class(es), x86 register number[, token flag] +# +# If the register name ends in two numbers separated by a dash, then it is +# repeated as many times as indicated, and the register number is +# updated with it. +# +# If 'token flag' is present, this value will be assigned to tokflag field in +# 'struct tokendata tokendata[]' table. Token flag can be used for specifying +# special usage of corresponding register. E.g. opmask registers can be either +# enclosed by curly braces or standalone operand depending on the usage. +# + +# General-purpose registers +al REG_AL reg8,reg8_rex 0 +ah REG_HIGH reg8 4 +ax REG_AX reg16 0 +eax REG_EAX reg32 0 +rax REG_RAX reg64 0 +bl REG8NA reg8,reg8_rex 3 +bh REG_HIGH reg8 7 +bx REG16NA reg16 3 +ebx REG32NA reg32 3 +rbx REG64NA reg64 3 +cl REG_CL reg8,reg8_rex 1 +ch REG_HIGH reg8 5 +cx REG_CX reg16 1 +ecx REG_ECX reg32 1 +rcx REG_RCX reg64 1 +dl REG_DL reg8,reg8_rex 2 +dh REG_HIGH reg8 6 +dx REG_DX reg16 2 +edx REG_EDX reg32 2 +rdx REG_RDX reg64 2 +spl REG8NA reg8_rex 4 +sp REG16NA reg16 4 +esp REG32NA reg32 4 +rsp REG64NA reg64 4 +bpl REG8NA reg8_rex 5 +bp REG16NA reg16 5 +ebp REG32NA reg32 5 +rbp REG64NA reg64 5 +sil REG8NA reg8_rex 6 +si REG16NA reg16 6 +esi REG32NA reg32 6 +rsi REG64NA reg64 6 +dil REG8NA reg8_rex 7 +di REG16NA reg16 7 +edi REG32NA reg32 7 +rdi REG64NA reg64 7 +r8-15b REG8NA reg8_rex 8 +r8-15w REG16NA reg16 8 +r8-15d REG32NA reg32 8 +r8-15 REG64NA reg64 8 + +# Segment registers +es REG_ES sreg 0 +cs REG_CS sreg 1 +ss REG_SS sreg 2 +ds REG_DS sreg 3 +fs REG_FS sreg 4 +gs REG_GS sreg 5 +segr6-7 REG_SEG67 sreg 6 + +# Control registers +cr0-15 REG_CREG creg 0 + +# Debug registers +dr0-15 REG_DREG dreg 0 + +# Test registers +tr0-7 REG_TREG treg 0 + +# Floating-point registers +st0 FPU0 fpureg 0 +st1-7 FPUREG fpureg 1 + +# MMX registers +mm0-7 MMXREG mmxreg 0 + +# SSE registers +xmm0 XMM0 xmmreg 0 +xmm1-15 XMM_L16 xmmreg 1 +xmm16-31 XMMREG xmmreg 16 + +# AVX registers +ymm0 YMM0 ymmreg 0 +ymm1-15 YMM_L16 ymmreg 1 +ymm16-31 YMMREG ymmreg 16 + +# AVX512 registers +zmm0 ZMM0 zmmreg 0 +zmm1-15 ZMM_L16 zmmreg 1 +zmm16-31 ZMMREG zmmreg 16 + +# AMX tile registers +tmm0-7 TMMREG tmmreg 0 + +# Opmask registers +k0 OPMASK0 opmaskreg 0 +k1-7 OPMASKREG opmaskreg 1 TFLAG_BRC_OPT + +# Bounds registers +bnd0-3 BNDREG bndreg 0 diff --git a/vere/ext/nasm/x86/regs.h b/vere/ext/nasm/x86/regs.h new file mode 100644 index 0000000..f1bca71 --- /dev/null +++ b/vere/ext/nasm/x86/regs.h @@ -0,0 +1,514 @@ +/* automatically generated from ./x86/regs.dat - do not edit */ + +#ifndef NASM_REGS_H +#define NASM_REGS_H + +#define EXPR_REG_START 1 + +enum reg_enum { + R_zero = 0, + R_none = -1, + R_AH = EXPR_REG_START, + R_AL, + R_AX, + R_BH, + R_BL, + R_BND0, + R_BND1, + R_BND2, + R_BND3, + R_BP, + R_BPL, + R_BX, + R_CH, + R_CL, + R_CR0, + R_CR1, + R_CR10, + R_CR11, + R_CR12, + R_CR13, + R_CR14, + R_CR15, + R_CR2, + R_CR3, + R_CR4, + R_CR5, + R_CR6, + R_CR7, + R_CR8, + R_CR9, + R_CS, + R_CX, + R_DH, + R_DI, + R_DIL, + R_DL, + R_DR0, + R_DR1, + R_DR10, + R_DR11, + R_DR12, + R_DR13, + R_DR14, + R_DR15, + R_DR2, + R_DR3, + R_DR4, + R_DR5, + R_DR6, + R_DR7, + R_DR8, + R_DR9, + R_DS, + R_DX, + R_EAX, + R_EBP, + R_EBX, + R_ECX, + R_EDI, + R_EDX, + R_ES, + R_ESI, + R_ESP, + R_FS, + R_GS, + R_K0, + R_K1, + R_K2, + R_K3, + R_K4, + R_K5, + R_K6, + R_K7, + R_MM0, + R_MM1, + R_MM2, + R_MM3, + R_MM4, + R_MM5, + R_MM6, + R_MM7, + R_R10, + R_R10B, + R_R10D, + R_R10W, + R_R11, + R_R11B, + R_R11D, + R_R11W, + R_R12, + R_R12B, + R_R12D, + R_R12W, + R_R13, + R_R13B, + R_R13D, + R_R13W, + R_R14, + R_R14B, + R_R14D, + R_R14W, + R_R15, + R_R15B, + R_R15D, + R_R15W, + R_R8, + R_R8B, + R_R8D, + R_R8W, + R_R9, + R_R9B, + R_R9D, + R_R9W, + R_RAX, + R_RBP, + R_RBX, + R_RCX, + R_RDI, + R_RDX, + R_RSI, + R_RSP, + R_SEGR6, + R_SEGR7, + R_SI, + R_SIL, + R_SP, + R_SPL, + R_SS, + R_ST0, + R_ST1, + R_ST2, + R_ST3, + R_ST4, + R_ST5, + R_ST6, + R_ST7, + R_TMM0, + R_TMM1, + R_TMM2, + R_TMM3, + R_TMM4, + R_TMM5, + R_TMM6, + R_TMM7, + R_TR0, + R_TR1, + R_TR2, + R_TR3, + R_TR4, + R_TR5, + R_TR6, + R_TR7, + R_XMM0, + R_XMM1, + R_XMM10, + R_XMM11, + R_XMM12, + R_XMM13, + R_XMM14, + R_XMM15, + R_XMM16, + R_XMM17, + R_XMM18, + R_XMM19, + R_XMM2, + R_XMM20, + R_XMM21, + R_XMM22, + R_XMM23, + R_XMM24, + R_XMM25, + R_XMM26, + R_XMM27, + R_XMM28, + R_XMM29, + R_XMM3, + R_XMM30, + R_XMM31, + R_XMM4, + R_XMM5, + R_XMM6, + R_XMM7, + R_XMM8, + R_XMM9, + R_YMM0, + R_YMM1, + R_YMM10, + R_YMM11, + R_YMM12, + R_YMM13, + R_YMM14, + R_YMM15, + R_YMM16, + R_YMM17, + R_YMM18, + R_YMM19, + R_YMM2, + R_YMM20, + R_YMM21, + R_YMM22, + R_YMM23, + R_YMM24, + R_YMM25, + R_YMM26, + R_YMM27, + R_YMM28, + R_YMM29, + R_YMM3, + R_YMM30, + R_YMM31, + R_YMM4, + R_YMM5, + R_YMM6, + R_YMM7, + R_YMM8, + R_YMM9, + R_ZMM0, + R_ZMM1, + R_ZMM10, + R_ZMM11, + R_ZMM12, + R_ZMM13, + R_ZMM14, + R_ZMM15, + R_ZMM16, + R_ZMM17, + R_ZMM18, + R_ZMM19, + R_ZMM2, + R_ZMM20, + R_ZMM21, + R_ZMM22, + R_ZMM23, + R_ZMM24, + R_ZMM25, + R_ZMM26, + R_ZMM27, + R_ZMM28, + R_ZMM29, + R_ZMM3, + R_ZMM30, + R_ZMM31, + R_ZMM4, + R_ZMM5, + R_ZMM6, + R_ZMM7, + R_ZMM8, + R_ZMM9, + REG_ENUM_LIMIT +}; + +#define EXPR_REG_END 248 + +#define REG_NUM_AH 4 +#define REG_NUM_AL 0 +#define REG_NUM_AX 0 +#define REG_NUM_BH 7 +#define REG_NUM_BL 3 +#define REG_NUM_BND0 0 +#define REG_NUM_BND1 1 +#define REG_NUM_BND2 2 +#define REG_NUM_BND3 3 +#define REG_NUM_BP 5 +#define REG_NUM_BPL 5 +#define REG_NUM_BX 3 +#define REG_NUM_CH 5 +#define REG_NUM_CL 1 +#define REG_NUM_CR0 0 +#define REG_NUM_CR1 1 +#define REG_NUM_CR10 10 +#define REG_NUM_CR11 11 +#define REG_NUM_CR12 12 +#define REG_NUM_CR13 13 +#define REG_NUM_CR14 14 +#define REG_NUM_CR15 15 +#define REG_NUM_CR2 2 +#define REG_NUM_CR3 3 +#define REG_NUM_CR4 4 +#define REG_NUM_CR5 5 +#define REG_NUM_CR6 6 +#define REG_NUM_CR7 7 +#define REG_NUM_CR8 8 +#define REG_NUM_CR9 9 +#define REG_NUM_CS 1 +#define REG_NUM_CX 1 +#define REG_NUM_DH 6 +#define REG_NUM_DI 7 +#define REG_NUM_DIL 7 +#define REG_NUM_DL 2 +#define REG_NUM_DR0 0 +#define REG_NUM_DR1 1 +#define REG_NUM_DR10 10 +#define REG_NUM_DR11 11 +#define REG_NUM_DR12 12 +#define REG_NUM_DR13 13 +#define REG_NUM_DR14 14 +#define REG_NUM_DR15 15 +#define REG_NUM_DR2 2 +#define REG_NUM_DR3 3 +#define REG_NUM_DR4 4 +#define REG_NUM_DR5 5 +#define REG_NUM_DR6 6 +#define REG_NUM_DR7 7 +#define REG_NUM_DR8 8 +#define REG_NUM_DR9 9 +#define REG_NUM_DS 3 +#define REG_NUM_DX 2 +#define REG_NUM_EAX 0 +#define REG_NUM_EBP 5 +#define REG_NUM_EBX 3 +#define REG_NUM_ECX 1 +#define REG_NUM_EDI 7 +#define REG_NUM_EDX 2 +#define REG_NUM_ES 0 +#define REG_NUM_ESI 6 +#define REG_NUM_ESP 4 +#define REG_NUM_FS 4 +#define REG_NUM_GS 5 +#define REG_NUM_K0 0 +#define REG_NUM_K1 1 +#define REG_NUM_K2 2 +#define REG_NUM_K3 3 +#define REG_NUM_K4 4 +#define REG_NUM_K5 5 +#define REG_NUM_K6 6 +#define REG_NUM_K7 7 +#define REG_NUM_MM0 0 +#define REG_NUM_MM1 1 +#define REG_NUM_MM2 2 +#define REG_NUM_MM3 3 +#define REG_NUM_MM4 4 +#define REG_NUM_MM5 5 +#define REG_NUM_MM6 6 +#define REG_NUM_MM7 7 +#define REG_NUM_R10 10 +#define REG_NUM_R10B 10 +#define REG_NUM_R10D 10 +#define REG_NUM_R10W 10 +#define REG_NUM_R11 11 +#define REG_NUM_R11B 11 +#define REG_NUM_R11D 11 +#define REG_NUM_R11W 11 +#define REG_NUM_R12 12 +#define REG_NUM_R12B 12 +#define REG_NUM_R12D 12 +#define REG_NUM_R12W 12 +#define REG_NUM_R13 13 +#define REG_NUM_R13B 13 +#define REG_NUM_R13D 13 +#define REG_NUM_R13W 13 +#define REG_NUM_R14 14 +#define REG_NUM_R14B 14 +#define REG_NUM_R14D 14 +#define REG_NUM_R14W 14 +#define REG_NUM_R15 15 +#define REG_NUM_R15B 15 +#define REG_NUM_R15D 15 +#define REG_NUM_R15W 15 +#define REG_NUM_R8 8 +#define REG_NUM_R8B 8 +#define REG_NUM_R8D 8 +#define REG_NUM_R8W 8 +#define REG_NUM_R9 9 +#define REG_NUM_R9B 9 +#define REG_NUM_R9D 9 +#define REG_NUM_R9W 9 +#define REG_NUM_RAX 0 +#define REG_NUM_RBP 5 +#define REG_NUM_RBX 3 +#define REG_NUM_RCX 1 +#define REG_NUM_RDI 7 +#define REG_NUM_RDX 2 +#define REG_NUM_RSI 6 +#define REG_NUM_RSP 4 +#define REG_NUM_SEGR6 6 +#define REG_NUM_SEGR7 7 +#define REG_NUM_SI 6 +#define REG_NUM_SIL 6 +#define REG_NUM_SP 4 +#define REG_NUM_SPL 4 +#define REG_NUM_SS 2 +#define REG_NUM_ST0 0 +#define REG_NUM_ST1 1 +#define REG_NUM_ST2 2 +#define REG_NUM_ST3 3 +#define REG_NUM_ST4 4 +#define REG_NUM_ST5 5 +#define REG_NUM_ST6 6 +#define REG_NUM_ST7 7 +#define REG_NUM_TMM0 0 +#define REG_NUM_TMM1 1 +#define REG_NUM_TMM2 2 +#define REG_NUM_TMM3 3 +#define REG_NUM_TMM4 4 +#define REG_NUM_TMM5 5 +#define REG_NUM_TMM6 6 +#define REG_NUM_TMM7 7 +#define REG_NUM_TR0 0 +#define REG_NUM_TR1 1 +#define REG_NUM_TR2 2 +#define REG_NUM_TR3 3 +#define REG_NUM_TR4 4 +#define REG_NUM_TR5 5 +#define REG_NUM_TR6 6 +#define REG_NUM_TR7 7 +#define REG_NUM_XMM0 0 +#define REG_NUM_XMM1 1 +#define REG_NUM_XMM10 10 +#define REG_NUM_XMM11 11 +#define REG_NUM_XMM12 12 +#define REG_NUM_XMM13 13 +#define REG_NUM_XMM14 14 +#define REG_NUM_XMM15 15 +#define REG_NUM_XMM16 16 +#define REG_NUM_XMM17 17 +#define REG_NUM_XMM18 18 +#define REG_NUM_XMM19 19 +#define REG_NUM_XMM2 2 +#define REG_NUM_XMM20 20 +#define REG_NUM_XMM21 21 +#define REG_NUM_XMM22 22 +#define REG_NUM_XMM23 23 +#define REG_NUM_XMM24 24 +#define REG_NUM_XMM25 25 +#define REG_NUM_XMM26 26 +#define REG_NUM_XMM27 27 +#define REG_NUM_XMM28 28 +#define REG_NUM_XMM29 29 +#define REG_NUM_XMM3 3 +#define REG_NUM_XMM30 30 +#define REG_NUM_XMM31 31 +#define REG_NUM_XMM4 4 +#define REG_NUM_XMM5 5 +#define REG_NUM_XMM6 6 +#define REG_NUM_XMM7 7 +#define REG_NUM_XMM8 8 +#define REG_NUM_XMM9 9 +#define REG_NUM_YMM0 0 +#define REG_NUM_YMM1 1 +#define REG_NUM_YMM10 10 +#define REG_NUM_YMM11 11 +#define REG_NUM_YMM12 12 +#define REG_NUM_YMM13 13 +#define REG_NUM_YMM14 14 +#define REG_NUM_YMM15 15 +#define REG_NUM_YMM16 16 +#define REG_NUM_YMM17 17 +#define REG_NUM_YMM18 18 +#define REG_NUM_YMM19 19 +#define REG_NUM_YMM2 2 +#define REG_NUM_YMM20 20 +#define REG_NUM_YMM21 21 +#define REG_NUM_YMM22 22 +#define REG_NUM_YMM23 23 +#define REG_NUM_YMM24 24 +#define REG_NUM_YMM25 25 +#define REG_NUM_YMM26 26 +#define REG_NUM_YMM27 27 +#define REG_NUM_YMM28 28 +#define REG_NUM_YMM29 29 +#define REG_NUM_YMM3 3 +#define REG_NUM_YMM30 30 +#define REG_NUM_YMM31 31 +#define REG_NUM_YMM4 4 +#define REG_NUM_YMM5 5 +#define REG_NUM_YMM6 6 +#define REG_NUM_YMM7 7 +#define REG_NUM_YMM8 8 +#define REG_NUM_YMM9 9 +#define REG_NUM_ZMM0 0 +#define REG_NUM_ZMM1 1 +#define REG_NUM_ZMM10 10 +#define REG_NUM_ZMM11 11 +#define REG_NUM_ZMM12 12 +#define REG_NUM_ZMM13 13 +#define REG_NUM_ZMM14 14 +#define REG_NUM_ZMM15 15 +#define REG_NUM_ZMM16 16 +#define REG_NUM_ZMM17 17 +#define REG_NUM_ZMM18 18 +#define REG_NUM_ZMM19 19 +#define REG_NUM_ZMM2 2 +#define REG_NUM_ZMM20 20 +#define REG_NUM_ZMM21 21 +#define REG_NUM_ZMM22 22 +#define REG_NUM_ZMM23 23 +#define REG_NUM_ZMM24 24 +#define REG_NUM_ZMM25 25 +#define REG_NUM_ZMM26 26 +#define REG_NUM_ZMM27 27 +#define REG_NUM_ZMM28 28 +#define REG_NUM_ZMM29 29 +#define REG_NUM_ZMM3 3 +#define REG_NUM_ZMM30 30 +#define REG_NUM_ZMM31 31 +#define REG_NUM_ZMM4 4 +#define REG_NUM_ZMM5 5 +#define REG_NUM_ZMM6 6 +#define REG_NUM_ZMM7 7 +#define REG_NUM_ZMM8 8 +#define REG_NUM_ZMM9 9 + + +#endif /* NASM_REGS_H */ diff --git a/vere/ext/nasm/x86/regs.pl b/vere/ext/nasm/x86/regs.pl new file mode 100755 index 0000000..31a3fb3 --- /dev/null +++ b/vere/ext/nasm/x86/regs.pl @@ -0,0 +1,205 @@ +#!/usr/bin/perl +## -------------------------------------------------------------------------- +## +## Copyright 1996-2009 The NASM Authors - All Rights Reserved +## See the file AUTHORS included with the NASM distribution for +## the specific copyright holders. +## +## 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. +## +## -------------------------------------------------------------------------- + +# +# Read regs.dat and output regs.h and regs.c (included in names.c) +# + +$nline = 0; + +sub toint($) { + my($v) = @_; + + return ($v =~ /^0/) ? oct $v : $v+0; +} + +sub process_line($) { + my($line) = @_; + my @v; + + if ( $line !~ /^\s*(\S+)\s*(\S+)\s*(\S+)\s*([0-9]+)\s*(\S*)/i ) { + die "regs.dat:$nline: invalid input\n"; + } + $reg = $1; + $aclass = $2; + $dclasses = $3; + $x86regno = toint($4); + + if ($reg =~ /^(.*[^0-9])([0-9]+)\-([0-9]+)(|[^0-9].*)$/) { + $nregs = $3-$2+1; + $reg = $1.$2.$4; + $reg_nr = $2; + $reg_prefix = $1; + $reg_suffix = $4; + } else { + $nregs = 1; + undef $reg_prefix; + undef $reg_suffix; + } + + while ($nregs--) { + $regs{$reg} = $aclass; + $regvals{$reg} = $x86regno; + + foreach $dclass (split(/,/, $dclasses)) { + if ( !defined($disclass{$dclass}) ) { + $disclass{$dclass} = []; + } + + $disclass{$dclass}->[$x86regno] = $reg; + } + + # Compute the next register, if any + if (defined($reg_prefix)) { + $x86regno++; + $reg_nr++; + $reg = sprintf("%s%u%s", $reg_prefix, $reg_nr, $reg_suffix); + } else { + # Not a dashed sequence + die if ($nregs); + } + } +} + +($fmt, $file) = @ARGV; + +%regs = (); +%regvals = (); +%disclass = (); +open(REGS, '<', $file) or die "$0: Cannot open $file\n"; +while ( defined($line = ) ) { + $nline++; + + chomp $line; + $line =~ s/\s*(\#.*|)$//; + + next if ( $line eq '' ); + + process_line($line); +} +close(REGS); + +if ( $fmt eq 'h' ) { + # Output regs.h + print "/* automatically generated from $file - do not edit */\n\n"; + print "#ifndef NASM_REGS_H\n"; + print "#define NASM_REGS_H\n\n"; + + $expr_regs = 1; + printf "#define EXPR_REG_START %d\n\n", $expr_regs; + print "enum reg_enum {\n"; + # Unfortunately the code uses both 0 and -1 as "no register" in + # different places... + print " R_zero = 0,\n"; + print " R_none = -1,\n"; + $attach = ' = EXPR_REG_START'; # EXPR_REG_START == 1 + foreach $reg ( sort(keys(%regs)) ) { + print " R_\U${reg}\E${attach},\n"; + $attach = ''; + $expr_regs++; + } + print " REG_ENUM_LIMIT\n"; + print "};\n\n"; + printf "#define EXPR_REG_END %d\n\n", $expr_regs-1; + foreach $reg ( sort(keys(%regs)) ) { + printf "#define %-15s %2d\n", "REG_NUM_\U${reg}", $regvals{$reg}; + } + print "\n\n#endif /* NASM_REGS_H */\n"; +} elsif ( $fmt eq 'c' ) { + # Output regs.c + print "/* automatically generated from $file - do not edit */\n\n"; + print "#include \"tables.h\"\n\n"; + print "const char * const nasm_reg_names[] = "; $ch = '{'; + # This one has no dummy entry for 0 + foreach $reg ( sort(keys(%regs)) ) { + print "$ch\n \"${reg}\""; + $ch = ','; + } + print "\n};\n"; +} elsif ( $fmt eq 'fc' ) { + # Output regflags.c + print "/* automatically generated from $file - do not edit */\n\n"; + print "#include \"tables.h\"\n"; + print "#include \"nasm.h\"\n\n"; + print "const opflags_t nasm_reg_flags[] = {\n"; + printf " 0,\n"; # Dummy entry for 0 + foreach $reg ( sort(keys(%regs)) ) { + # Print the class of the register + printf " %-15s /* %-5s */\n", + $regs{$reg}.',', $reg; + } + print "};\n"; +} elsif ( $fmt eq 'vc' ) { + # Output regvals.c + print "/* automatically generated from $file - do not edit */\n\n"; + print "#include \"tables.h\"\n\n"; + print "const int nasm_regvals[] = {\n"; + print " -1,\n"; # Dummy entry for 0 + foreach $reg ( sort(keys(%regs)) ) { + # Print the x86 value of the register + printf " %2d, /* %-5s */\n", $regvals{$reg}, $reg; + } + print "};\n"; +} elsif ( $fmt eq 'dc' ) { + # Output regdis.c + print "/* automatically generated from $file - do not edit */\n\n"; + print "#include \"regdis.h\"\n\n"; + foreach $class ( sort(keys(%disclass)) ) { + printf "const enum reg_enum nasm_rd_%-8s[%2d] = {", + $class, scalar @{$disclass{$class}}; + @foo = @{$disclass{$class}}; + @bar = (); + for ( $i = 0 ; $i < scalar(@foo) ; $i++ ) { + if (defined($foo[$i])) { + push(@bar, "R_\U$foo[$i]\E"); + } else { + die "$0: No register name for class $class, value $i\n"; + } + } + print join(',', @bar), "};\n"; + } +} elsif ( $fmt eq 'dh' ) { + # Output regdis.h + print "/* automatically generated from $file - do not edit */\n\n"; + print "#ifndef NASM_REGDIS_H\n"; + print "#define NASM_REGDIS_H\n\n"; + print "#include \"regs.h\"\n\n"; + foreach $class ( sort(keys(%disclass)) ) { + printf "extern const enum reg_enum nasm_rd_%-8s[%2d];\n", + $class, scalar @{$disclass{$class}}; + } + print "\n#endif /* NASM_REGDIS_H */\n"; +} else { + die "$0: Unknown output format\n"; +} diff --git a/vere/ext/nasm/x86/regvals.c b/vere/ext/nasm/x86/regvals.c new file mode 100644 index 0000000..458abb7 --- /dev/null +++ b/vere/ext/nasm/x86/regvals.c @@ -0,0 +1,255 @@ +/* automatically generated from ./x86/regs.dat - do not edit */ + +#include "tables.h" + +const int nasm_regvals[] = { + -1, + 4, /* ah */ + 0, /* al */ + 0, /* ax */ + 7, /* bh */ + 3, /* bl */ + 0, /* bnd0 */ + 1, /* bnd1 */ + 2, /* bnd2 */ + 3, /* bnd3 */ + 5, /* bp */ + 5, /* bpl */ + 3, /* bx */ + 5, /* ch */ + 1, /* cl */ + 0, /* cr0 */ + 1, /* cr1 */ + 10, /* cr10 */ + 11, /* cr11 */ + 12, /* cr12 */ + 13, /* cr13 */ + 14, /* cr14 */ + 15, /* cr15 */ + 2, /* cr2 */ + 3, /* cr3 */ + 4, /* cr4 */ + 5, /* cr5 */ + 6, /* cr6 */ + 7, /* cr7 */ + 8, /* cr8 */ + 9, /* cr9 */ + 1, /* cs */ + 1, /* cx */ + 6, /* dh */ + 7, /* di */ + 7, /* dil */ + 2, /* dl */ + 0, /* dr0 */ + 1, /* dr1 */ + 10, /* dr10 */ + 11, /* dr11 */ + 12, /* dr12 */ + 13, /* dr13 */ + 14, /* dr14 */ + 15, /* dr15 */ + 2, /* dr2 */ + 3, /* dr3 */ + 4, /* dr4 */ + 5, /* dr5 */ + 6, /* dr6 */ + 7, /* dr7 */ + 8, /* dr8 */ + 9, /* dr9 */ + 3, /* ds */ + 2, /* dx */ + 0, /* eax */ + 5, /* ebp */ + 3, /* ebx */ + 1, /* ecx */ + 7, /* edi */ + 2, /* edx */ + 0, /* es */ + 6, /* esi */ + 4, /* esp */ + 4, /* fs */ + 5, /* gs */ + 0, /* k0 */ + 1, /* k1 */ + 2, /* k2 */ + 3, /* k3 */ + 4, /* k4 */ + 5, /* k5 */ + 6, /* k6 */ + 7, /* k7 */ + 0, /* mm0 */ + 1, /* mm1 */ + 2, /* mm2 */ + 3, /* mm3 */ + 4, /* mm4 */ + 5, /* mm5 */ + 6, /* mm6 */ + 7, /* mm7 */ + 10, /* r10 */ + 10, /* r10b */ + 10, /* r10d */ + 10, /* r10w */ + 11, /* r11 */ + 11, /* r11b */ + 11, /* r11d */ + 11, /* r11w */ + 12, /* r12 */ + 12, /* r12b */ + 12, /* r12d */ + 12, /* r12w */ + 13, /* r13 */ + 13, /* r13b */ + 13, /* r13d */ + 13, /* r13w */ + 14, /* r14 */ + 14, /* r14b */ + 14, /* r14d */ + 14, /* r14w */ + 15, /* r15 */ + 15, /* r15b */ + 15, /* r15d */ + 15, /* r15w */ + 8, /* r8 */ + 8, /* r8b */ + 8, /* r8d */ + 8, /* r8w */ + 9, /* r9 */ + 9, /* r9b */ + 9, /* r9d */ + 9, /* r9w */ + 0, /* rax */ + 5, /* rbp */ + 3, /* rbx */ + 1, /* rcx */ + 7, /* rdi */ + 2, /* rdx */ + 6, /* rsi */ + 4, /* rsp */ + 6, /* segr6 */ + 7, /* segr7 */ + 6, /* si */ + 6, /* sil */ + 4, /* sp */ + 4, /* spl */ + 2, /* ss */ + 0, /* st0 */ + 1, /* st1 */ + 2, /* st2 */ + 3, /* st3 */ + 4, /* st4 */ + 5, /* st5 */ + 6, /* st6 */ + 7, /* st7 */ + 0, /* tmm0 */ + 1, /* tmm1 */ + 2, /* tmm2 */ + 3, /* tmm3 */ + 4, /* tmm4 */ + 5, /* tmm5 */ + 6, /* tmm6 */ + 7, /* tmm7 */ + 0, /* tr0 */ + 1, /* tr1 */ + 2, /* tr2 */ + 3, /* tr3 */ + 4, /* tr4 */ + 5, /* tr5 */ + 6, /* tr6 */ + 7, /* tr7 */ + 0, /* xmm0 */ + 1, /* xmm1 */ + 10, /* xmm10 */ + 11, /* xmm11 */ + 12, /* xmm12 */ + 13, /* xmm13 */ + 14, /* xmm14 */ + 15, /* xmm15 */ + 16, /* xmm16 */ + 17, /* xmm17 */ + 18, /* xmm18 */ + 19, /* xmm19 */ + 2, /* xmm2 */ + 20, /* xmm20 */ + 21, /* xmm21 */ + 22, /* xmm22 */ + 23, /* xmm23 */ + 24, /* xmm24 */ + 25, /* xmm25 */ + 26, /* xmm26 */ + 27, /* xmm27 */ + 28, /* xmm28 */ + 29, /* xmm29 */ + 3, /* xmm3 */ + 30, /* xmm30 */ + 31, /* xmm31 */ + 4, /* xmm4 */ + 5, /* xmm5 */ + 6, /* xmm6 */ + 7, /* xmm7 */ + 8, /* xmm8 */ + 9, /* xmm9 */ + 0, /* ymm0 */ + 1, /* ymm1 */ + 10, /* ymm10 */ + 11, /* ymm11 */ + 12, /* ymm12 */ + 13, /* ymm13 */ + 14, /* ymm14 */ + 15, /* ymm15 */ + 16, /* ymm16 */ + 17, /* ymm17 */ + 18, /* ymm18 */ + 19, /* ymm19 */ + 2, /* ymm2 */ + 20, /* ymm20 */ + 21, /* ymm21 */ + 22, /* ymm22 */ + 23, /* ymm23 */ + 24, /* ymm24 */ + 25, /* ymm25 */ + 26, /* ymm26 */ + 27, /* ymm27 */ + 28, /* ymm28 */ + 29, /* ymm29 */ + 3, /* ymm3 */ + 30, /* ymm30 */ + 31, /* ymm31 */ + 4, /* ymm4 */ + 5, /* ymm5 */ + 6, /* ymm6 */ + 7, /* ymm7 */ + 8, /* ymm8 */ + 9, /* ymm9 */ + 0, /* zmm0 */ + 1, /* zmm1 */ + 10, /* zmm10 */ + 11, /* zmm11 */ + 12, /* zmm12 */ + 13, /* zmm13 */ + 14, /* zmm14 */ + 15, /* zmm15 */ + 16, /* zmm16 */ + 17, /* zmm17 */ + 18, /* zmm18 */ + 19, /* zmm19 */ + 2, /* zmm2 */ + 20, /* zmm20 */ + 21, /* zmm21 */ + 22, /* zmm22 */ + 23, /* zmm23 */ + 24, /* zmm24 */ + 25, /* zmm25 */ + 26, /* zmm26 */ + 27, /* zmm27 */ + 28, /* zmm28 */ + 29, /* zmm29 */ + 3, /* zmm3 */ + 30, /* zmm30 */ + 31, /* zmm31 */ + 4, /* zmm4 */ + 5, /* zmm5 */ + 6, /* zmm6 */ + 7, /* zmm7 */ + 8, /* zmm8 */ + 9, /* zmm9 */ +}; diff --git a/vere/ext/natpmp/build.zig b/vere/ext/natpmp/build.zig new file mode 100644 index 0000000..1dfe1ba --- /dev/null +++ b/vere/ext/natpmp/build.zig @@ -0,0 +1,45 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const t = target.result; + const optimize = b.standardOptimizeOption(.{}); + + const lib = b.addStaticLibrary(.{ + .name = "natpmp", + .target = target, + .optimize = optimize, + }); + + const dep_c = b.dependency("natpmp", .{ + .target = target, + .optimize = optimize, + }); + + lib.addIncludePath(dep_c.path("include")); + + lib.addCSourceFiles(.{ + .root = dep_c.path(""), + .files = &.{ + "natpmp.c", + "getgateway.c", + "wingettimeofday.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + + lib.installHeader(dep_c.path("natpmp.h"), "natpmp.h"); + lib.installHeader(dep_c.path("getgateway.h"), "getgateway.h"); + lib.installHeader(dep_c.path("natpmp_declspec.h"), "natpmp_declspec.h"); + + if (t.os.tag == .windows and t.cpu.arch == .x86_64) { + lib.root_module.addCMacro("WIN32", ""); + lib.root_module.addCMacro("NATPMP_STATICLIB", ""); + lib.root_module.addCMacro("ENABLE_STRNATPMPERR", ""); + } + + lib.linkLibC(); + b.installArtifact(lib); +} diff --git a/vere/ext/natpmp/build.zig.zon b/vere/ext/natpmp/build.zig.zon new file mode 100644 index 0000000..30e5682 --- /dev/null +++ b/vere/ext/natpmp/build.zig.zon @@ -0,0 +1,15 @@ +.{ + .name = .natpmp, + .fingerprint = 0x1794aa3995c13962, + .version = "0.0.1", + .dependencies = .{ + .natpmp = .{ + .url = "https://mirrors.wikimedia.org/ubuntu/ubuntu/pool/main/libn/libnatpmp/libnatpmp_20230423.orig.tar.gz", + // .url = "https://debian.mirror.root.lu/debian/pool/main/libn/libnatpmp/libnatpmp_20230423.orig.tar.gz", + .hash = "N-V-__8AAKudAQA_d3eW8d8dskxBlLzGBg0qe-4u6ohSfCM2", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/openssl/build.zig b/vere/ext/openssl/build.zig new file mode 100644 index 0000000..876abcf --- /dev/null +++ b/vere/ext/openssl/build.zig @@ -0,0 +1,1164 @@ +const std = @import("std"); + +fn basenameNewExtension(b: *std.Build, path: []const u8, new_extension: []const u8) []const u8 { + const basename = std.fs.path.basename(path); + const ext = std.fs.path.extension(basename); + return b.fmt("{s}{s}", .{ basename[0 .. basename.len - ext.len], new_extension }); +} + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const macos_cflags = .{ + "-arch", + if (target.result.cpu.arch.isAARCH64()) + "arm64" + else + "x86_64", + }; + + const linux_cflags = .{}; + + const crypto = try libcrypto( + b, + target, + optimize, + if (target.result.os.tag.isDarwin()) &macos_cflags else &linux_cflags, + ); + if (target.result.os.tag.isDarwin() and !target.query.isNative()) { + const macos_sdk = b.lazyDependency("macos_sdk", .{ + .target = target, + .optimize = optimize, + }); + if (macos_sdk != null) { + crypto.addSystemIncludePath(macos_sdk.?.path("usr/include")); + crypto.addLibraryPath(macos_sdk.?.path("usr/lib")); + crypto.addFrameworkPath(macos_sdk.?.path("System/Library/Frameworks")); + } + } + + b.installArtifact(crypto); + b.installArtifact(libssl( + b, + target, + optimize, + if (target.result.os.tag.isDarwin()) &macos_cflags else &linux_cflags, + )); +} + +fn libcrypto( + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, + cflags: []const []const u8, +) !*std.Build.Step.Compile { + const t = target.result; + + const dep = b.dependency("openssl", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "crypto", + .target = target, + .optimize = optimize, + }); + + lib.pie = true; + + switch (optimize) { + .Debug, .ReleaseSafe => lib.bundle_compiler_rt = true, + else => lib.root_module.strip = true, + } + + lib.linkLibC(); + + lib.addIncludePath(dep.path(".")); + lib.addIncludePath(dep.path("crypto")); + lib.addIncludePath(dep.path("crypto/ec/curve448/")); + lib.addIncludePath(dep.path("crypto/ec/curve448/arch_32/")); + lib.addIncludePath(dep.path("crypto/modes")); + lib.addIncludePath(dep.path("include")); + + lib.root_module.addCMacro("L_ENDIAN", ""); + lib.root_module.addCMacro("OPENSSL_PIC", ""); + lib.root_module.addCMacro("OPENSSL_CPUID_OBJ", ""); + lib.root_module.addCMacro("OPENSSL_BN_ASM_MONT", ""); + lib.root_module.addCMacro("SHA1_ASM", ""); + lib.root_module.addCMacro("SHA256_ASM", ""); + lib.root_module.addCMacro("SHA512_ASM", ""); + lib.root_module.addCMacro("KECCAK1600_ASM", ""); + lib.root_module.addCMacro("VPAES_ASM", ""); + lib.root_module.addCMacro("ECP_NISTZ256_ASM", ""); + lib.root_module.addCMacro("POLY1305_ASM", ""); + lib.root_module.addCMacro("OPENSSLDIR", "\"\""); + lib.root_module.addCMacro("ENGINESDIR", "\"\""); + + lib.root_module.addCMacro("_REENTRANT", ""); + lib.root_module.addCMacro("NDEBUG", ""); + + // lib.root_module.addCMacro("OPENSSL_NO_DEPRECATED", ""); + // lib.root_module.addCMacro("OPENSSL_NO_ENGINE", ""); + // lib.root_module.addCMacro("OPENSSL_NO_SRP", ""); + // lib.root_module.addCMacro("OPENSSL_NO_UI_CONSOLE", ""); + // lib.root_module.addCMacro("OPENSSL_NO_ASAN", ""); + // lib.root_module.addCMacro("OPENSSL_NO_UBSAN", ""); + // lib.root_module.addCMacro("OPENSSL_NO_ASM", ""); + // lib.root_module.addCMacro("OPENSSL_NO_KTLS", ""); + // lib.root_module.addCMacro("OPENSSL_NO_QUIC", ""); + // lib.root_module.addCMacro("OPENSSL_NO_THREAD_POOL", ""); + // lib.root_module.addCMacro("OPENSSL_NO_STDIO", ""); + // lib.root_module.addCMacro("OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ", "1"); + + if (t.os.tag == .windows and t.cpu.arch == .x86_64) { + lib.root_module.addCMacro("WIN32_LEAN_AND_MEAN", ""); + lib.root_module.addCMacro("UNICODE", ""); + lib.root_module.addCMacro("_UNICODE", ""); + lib.root_module.addCMacro("_CRT_SECURE_NO_DEPRECATE", ""); + lib.root_module.addCMacro("_WINSOCK_DEPRECATED_NO_WARNINGS", ""); + lib.root_module.addCMacro("OPENSSL_USE_APPLINK", ""); + lib.root_module.addCMacro("OPENSSL_SYS_WIN32", ""); + + lib.root_module.addCMacro("NOCRYPT", ""); + + lib.root_module.addCMacro("AESNI_ASM", ""); + lib.root_module.addCMacro("X25519_ASM", ""); + lib.root_module.addCMacro("MD5_ASM", ""); + lib.root_module.addCMacro("RC4_ASM", ""); + + lib.addIncludePath(b.path("gen/windows-x86_64/include")); + lib.addIncludePath(b.path("gen/windows-x86_64/include/crypto")); + lib.addIncludePath(b.path("gen/windows-x86_64/include/openssl")); + + const nasm_dep = b.dependency("nasm", .{ + .optimize = .ReleaseFast, + }); + + // const nasm_dep = nasm_dep2 orelse unreachable; + + const nasm_exe = nasm_dep.artifact("nasm"); + + const asm_sources = [_][]const u8{ + "gen/windows-x86_64/crypto/aes/aesni-mb-x86_64.asm", + "gen/windows-x86_64/crypto/aes/aesni-sha1-x86_64.asm", + "gen/windows-x86_64/crypto/aes/aesni-sha256-x86_64.asm", + "gen/windows-x86_64/crypto/aes/aesni-x86_64.asm", + "gen/windows-x86_64/crypto/aes/vpaes-x86_64.asm", + "gen/windows-x86_64/crypto/bn/rsaz-avx2.asm", + "gen/windows-x86_64/crypto/bn/rsaz-x86_64.asm", + "gen/windows-x86_64/crypto/bn/x86_64-gf2m.asm", + "gen/windows-x86_64/crypto/bn/x86_64-mont.asm", + "gen/windows-x86_64/crypto/bn/x86_64-mont5.asm", + "gen/windows-x86_64/crypto/camellia/cmll-x86_64.asm", + "gen/windows-x86_64/crypto/chacha/chacha-x86_64.asm", + "gen/windows-x86_64/crypto/ec/ecp_nistz256-x86_64.asm", + "gen/windows-x86_64/crypto/ec/x25519-x86_64.asm", + "gen/windows-x86_64/crypto/md5/md5-x86_64.asm", + "gen/windows-x86_64/crypto/modes/aesni-gcm-x86_64.asm", + "gen/windows-x86_64/crypto/modes/ghash-x86_64.asm", + "gen/windows-x86_64/crypto/poly1305/poly1305-x86_64.asm", + "gen/windows-x86_64/crypto/rc4/rc4-md5-x86_64.asm", + "gen/windows-x86_64/crypto/rc4/rc4-x86_64.asm", + "gen/windows-x86_64/crypto/sha/keccak1600-x86_64.asm", + "gen/windows-x86_64/crypto/sha/sha1-mb-x86_64.asm", + "gen/windows-x86_64/crypto/sha/sha1-x86_64.asm", + "gen/windows-x86_64/crypto/sha/sha256-mb-x86_64.asm", + "gen/windows-x86_64/crypto/sha/sha256-x86_64.asm", + "gen/windows-x86_64/crypto/sha/sha512-x86_64.asm", + "gen/windows-x86_64/crypto/uplink-x86_64.asm", + "gen/windows-x86_64/crypto/whrlpool/wp-x86_64.asm", + "gen/windows-x86_64/crypto/x86_64cpuid.asm", + "gen/windows-x86_64/engines/e_padlock-x86_64.asm", + }; + + for (asm_sources) |input_file| { + const output_basename = basenameNewExtension(b, input_file, ".o"); + const nasm_run = b.addRunArtifact(nasm_exe); + + nasm_run.addArgs(&.{ "-f", "win64", "-g" }); + + nasm_run.addArgs(&.{"-o"}); + lib.addObjectFile(nasm_run.addOutputFileArg(output_basename)); + + nasm_run.addFileArg(b.path(input_file)); + } + } + + if (t.os.tag.isDarwin() and t.cpu.arch.isAARCH64()) { + lib.addIncludePath(b.path("gen/macos-aarch64/include")); + lib.addIncludePath(b.path("gen/macos-aarch64/include/crypto")); + lib.addIncludePath(b.path("gen/macos-aarch64/include/openssl")); + + lib.addCSourceFiles(.{ + .root = b.path("gen/macos-aarch64/crypto"), + .files = &.{ + "aes/aesv8-armx.S", + "aes/vpaes-armv8.S", + "arm64cpuid.S", + "bn/armv8-mont.S", + "chacha/chacha-armv8.S", + "ec/ecp_nistz256-armv8.S", + "modes/ghashv8-armx.S", + "poly1305/poly1305-armv8.S", + "sha/keccak1600-armv8.S", + "sha/sha1-armv8.S", + "sha/sha256-armv8.S", + "sha/sha512-armv8.S", + }, + .flags = cflags, + }); + } + + if (t.os.tag == .linux and t.cpu.arch.isAARCH64()) { + lib.addIncludePath(b.path("gen/linux-aarch64/include")); + lib.addIncludePath(b.path("gen/linux-aarch64/include/crypto")); + lib.addIncludePath(b.path("gen/linux-aarch64/include/openssl")); + + lib.addCSourceFiles(.{ + .root = b.path("gen/linux-aarch64/crypto"), + .files = &.{ + "aes/aesv8-armx.S", + "aes/vpaes-armv8.S", + "arm64cpuid.S", + "bn/armv8-mont.S", + "chacha/chacha-armv8.S", + "ec/ecp_nistz256-armv8.S", + "modes/ghashv8-armx.S", + "poly1305/poly1305-armv8.S", + "sha/keccak1600-armv8.S", + "sha/sha1-armv8.S", + "sha/sha256-armv8.S", + "sha/sha512-armv8.S", + }, + .flags = cflags, + }); + } + + if (t.os.tag.isDarwin() and t.cpu.arch == .x86_64) { + lib.root_module.addCMacro("AESNI_ASM", ""); + lib.root_module.addCMacro("X25519_ASM", ""); + lib.root_module.addCMacro("MD5_ASM", ""); + lib.root_module.addCMacro("RC4_ASM", ""); + + lib.addIncludePath(b.path("gen/macos-x86_64/include")); + lib.addIncludePath(b.path("gen/macos-x86_64/include/crypto")); + lib.addIncludePath(b.path("gen/macos-x86_64/include/openssl")); + + lib.addCSourceFiles(.{ + .root = b.path("gen/macos-x86_64"), + .files = &.{ + "crypto/aes/aesni-mb-x86_64.s", + "crypto/aes/aesni-sha1-x86_64.s", + "crypto/aes/aesni-sha256-x86_64.s", + "crypto/aes/aesni-x86_64.s", + "crypto/aes/vpaes-x86_64.s", + "crypto/bn/rsaz-avx2.s", + "crypto/bn/rsaz-x86_64.s", + "crypto/bn/x86_64-gf2m.s", + "crypto/bn/x86_64-mont.s", + "crypto/bn/x86_64-mont5.s", + "crypto/camellia/cmll-x86_64.s", + "crypto/chacha/chacha-x86_64.s", + "crypto/ec/ecp_nistz256-x86_64.s", + "crypto/ec/x25519-x86_64.s", + "crypto/md5/md5-x86_64.s", + "crypto/modes/aesni-gcm-x86_64.s", + "crypto/modes/ghash-x86_64.s", + "crypto/poly1305/poly1305-x86_64.s", + "crypto/rc4/rc4-md5-x86_64.s", + "crypto/rc4/rc4-x86_64.s", + "crypto/sha/keccak1600-x86_64.s", + "crypto/sha/sha1-mb-x86_64.s", + "crypto/sha/sha1-x86_64.s", + "crypto/sha/sha256-mb-x86_64.s", + "crypto/sha/sha256-x86_64.s", + "crypto/sha/sha512-x86_64.s", + "crypto/whrlpool/wp-x86_64.s", + "crypto/x86_64cpuid.s", + "engines/e_padlock-x86_64.s", + }, + .flags = cflags, + }); + } + + if (t.os.tag == .linux and t.cpu.arch == .x86_64) { + lib.root_module.addCMacro("AESNI_ASM", ""); + lib.root_module.addCMacro("X25519_ASM", ""); + lib.root_module.addCMacro("MD5_ASM", ""); + lib.root_module.addCMacro("RC4_ASM", ""); + + lib.addIncludePath(b.path("gen/linux-x86_64/include")); + lib.addIncludePath(b.path("gen/linux-x86_64/include/crypto")); + lib.addIncludePath(b.path("gen/linux-x86_64/include/openssl")); + + lib.addCSourceFiles(.{ + .root = b.path("gen/linux-x86_64"), + .files = &.{ + "crypto/aes/aesni-mb-x86_64.s", + "crypto/aes/aesni-sha1-x86_64.s", + "crypto/aes/aesni-sha256-x86_64.s", + "crypto/aes/aesni-x86_64.s", + "crypto/aes/vpaes-x86_64.s", + "crypto/bn/rsaz-avx2.s", + "crypto/bn/rsaz-x86_64.s", + "crypto/bn/x86_64-gf2m.s", + "crypto/bn/x86_64-mont.s", + "crypto/bn/x86_64-mont5.s", + "crypto/camellia/cmll-x86_64.s", + "crypto/chacha/chacha-x86_64.s", + "crypto/ec/ecp_nistz256-x86_64.s", + "crypto/ec/x25519-x86_64.s", + "crypto/md5/md5-x86_64.s", + "crypto/modes/aesni-gcm-x86_64.s", + "crypto/modes/ghash-x86_64.s", + "crypto/poly1305/poly1305-x86_64.s", + "crypto/rc4/rc4-md5-x86_64.s", + "crypto/rc4/rc4-x86_64.s", + "crypto/sha/keccak1600-x86_64.s", + "crypto/sha/sha1-mb-x86_64.s", + "crypto/sha/sha1-x86_64.s", + "crypto/sha/sha256-mb-x86_64.s", + "crypto/sha/sha256-x86_64.s", + "crypto/sha/sha512-x86_64.s", + "crypto/whrlpool/wp-x86_64.s", + "crypto/x86_64cpuid.s", + "engines/e_padlock-x86_64.s", + }, + .flags = cflags, + }); + } + + var srcs = std.ArrayList([]const u8).init(b.allocator); + defer srcs.deinit(); + try srcs.appendSlice(&common_crypto_sources); + + if (t.os.tag == .linux) { + try srcs.appendSlice(&.{ + "engines/e_afalg.c", + }); + } + + if (t.os.tag == .windows) { + try srcs.appendSlice(&.{ + "ms/applink.c", + "ms/uplink.c", + }); + lib.addIncludePath(dep.path("ms")); + lib.linkSystemLibrary("crypt32"); + } + + lib.addCSourceFiles(.{ + .root = dep.path(""), + .files = switch (t.cpu.arch) { + .arm, .aarch64 => &.{ + "crypto/armcap.c", + }, + .powerpc => &.{ + "crypto/ppccap.c", + }, + .riscv64 => &.{ + "crypto/riscvcap.c", + }, + .s390x => &.{ + "crypto/bn/bn_s390x.c", + "crypto/ec/ecp_s390x_nistp.c", + "crypto/ec/ecx_s390x.c", + "crypto/s390xcap.c", + }, + .sparc, .sparc64 => &.{ + "crypto/bn/bn_sparc.c", + "crypto/sparcv9cap.c", + }, + else => &.{}, + }, + .flags = cflags, + }); + + lib.addCSourceFiles(.{ + .root = dep.path(""), + .files = srcs.items, + .flags = cflags, + }); + + lib.installHeadersDirectory(dep.path("include/crypto"), "crypto", .{}); + lib.installHeadersDirectory(dep.path("include/internal"), "internal", .{}); + + return lib; +} + +fn libssl( + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, + cflags: []const []const u8, +) *std.Build.Step.Compile { + const t = target.result; + const dep = b.dependency("openssl", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "ssl", + .target = target, + .optimize = optimize, + }); + + lib.pie = true; + + switch (optimize) { + .Debug, .ReleaseSafe => lib.bundle_compiler_rt = true, + else => lib.root_module.strip = true, + } + + lib.linkLibC(); + + lib.addIncludePath(dep.path(".")); + lib.addIncludePath(dep.path("openssl")); + lib.addIncludePath(dep.path("include")); + lib.addIncludePath(dep.path("include/internal")); + lib.addIncludePath(dep.path("include/openssl")); + + if (t.os.tag.isDarwin() and t.cpu.arch.isAARCH64()) { + lib.addIncludePath(b.path("gen/macos-aarch64/include")); + lib.addIncludePath(b.path("gen/macos-aarch64/include/openssl")); + lib.installHeadersDirectory(b.path("gen/macos-aarch64/include/openssl"), "openssl", .{}); + } + + if (t.os.tag == .linux and t.cpu.arch.isAARCH64()) { + lib.addIncludePath(b.path("gen/linux-aarch64/include")); + lib.addIncludePath(b.path("gen/linux-aarch64/include/openssl")); + lib.installHeadersDirectory(b.path("gen/linux-aarch64/include/openssl"), "openssl", .{}); + } + + if (t.os.tag.isDarwin() and t.cpu.arch == .x86_64) { + lib.addIncludePath(b.path("gen/macos-x86_64/include")); + lib.addIncludePath(b.path("gen/macos-x86_64/include/openssl")); + lib.installHeadersDirectory(b.path("gen/macos-x86_64/include/openssl"), "openssl", .{}); + } + + if (t.os.tag == .linux and t.cpu.arch == .x86_64) { + lib.addIncludePath(b.path("gen/linux-x86_64/include")); + lib.addIncludePath(b.path("gen/linux-x86_64/include/openssl")); + lib.installHeadersDirectory(b.path("gen/linux-x86_64/include/openssl"), "openssl", .{}); + } + + if (t.os.tag == .windows and t.cpu.arch == .x86_64) { + lib.root_module.addCMacro("WIN32_LEAN_AND_MEAN", ""); + lib.root_module.addCMacro("UNICODE", ""); + lib.root_module.addCMacro("_UNICODE", ""); + lib.root_module.addCMacro("_CRT_SECURE_NO_DEPRECATE", ""); + lib.root_module.addCMacro("_WINSOCK_DEPRECATED_NO_WARNINGS", ""); + lib.root_module.addCMacro("OPENSSL_USE_APPLINK", ""); + lib.root_module.addCMacro("OPENSSL_SYS_WIN32", ""); + + lib.addIncludePath(b.path("gen/windows-x86_64/include")); + lib.addIncludePath(b.path("gen/windows-x86_64/include/openssl")); + lib.installHeadersDirectory(b.path("gen/windows-x86_64/include/openssl"), "openssl", .{}); + } + + lib.root_module.addCMacro("OPENSSLDIR", "\"\""); + lib.root_module.addCMacro("ENGINESDIR", "\"\""); + + lib.addCSourceFiles(.{ + .root = dep.path(""), + .files = &.{ + "ssl/bio_ssl.c", + "ssl/d1_lib.c", + "ssl/d1_msg.c", + "ssl/d1_srtp.c", + "ssl/methods.c", + "ssl/packet.c", + "ssl/pqueue.c", + "ssl/record/dtls1_bitmap.c", + "ssl/record/rec_layer_d1.c", + "ssl/record/rec_layer_s3.c", + "ssl/record/ssl3_buffer.c", + "ssl/record/ssl3_record.c", + "ssl/record/ssl3_record_tls13.c", + "ssl/s3_cbc.c", + "ssl/s3_enc.c", + "ssl/s3_lib.c", + "ssl/s3_msg.c", + "ssl/ssl_asn1.c", + "ssl/ssl_cert.c", + "ssl/ssl_ciph.c", + "ssl/ssl_conf.c", + "ssl/ssl_err.c", + "ssl/ssl_init.c", + "ssl/ssl_lib.c", + "ssl/ssl_mcnf.c", + "ssl/ssl_rsa.c", + "ssl/ssl_sess.c", + "ssl/ssl_stat.c", + "ssl/ssl_txt.c", + "ssl/ssl_utst.c", + "ssl/statem/extensions.c", + "ssl/statem/extensions_clnt.c", + "ssl/statem/extensions_cust.c", + "ssl/statem/extensions_srvr.c", + "ssl/statem/statem.c", + "ssl/statem/statem_clnt.c", + "ssl/statem/statem_dtls.c", + "ssl/statem/statem_lib.c", + "ssl/statem/statem_srvr.c", + "ssl/t1_enc.c", + "ssl/t1_lib.c", + "ssl/t1_trce.c", + "ssl/tls13_enc.c", + "ssl/tls_srp.c", + }, + .flags = cflags, + }); + + lib.installHeadersDirectory(dep.path("include/openssl"), "openssl", .{}); + + return lib; +} + +const common_crypto_sources = [_][]const u8{ + "crypto/aes/aes_cbc.c", + "crypto/aes/aes_cfb.c", + "crypto/aes/aes_core.c", + "crypto/aes/aes_ecb.c", + "crypto/aes/aes_ige.c", + "crypto/aes/aes_misc.c", + "crypto/aes/aes_ofb.c", + "crypto/aes/aes_wrap.c", + "crypto/aria/aria.c", + // "crypto/armcap.c", + "crypto/asn1/a_bitstr.c", + "crypto/asn1/a_d2i_fp.c", + "crypto/asn1/a_digest.c", + "crypto/asn1/a_dup.c", + "crypto/asn1/a_gentm.c", + "crypto/asn1/a_i2d_fp.c", + "crypto/asn1/a_int.c", + "crypto/asn1/a_mbstr.c", + "crypto/asn1/a_object.c", + "crypto/asn1/a_octet.c", + "crypto/asn1/a_print.c", + "crypto/asn1/a_sign.c", + "crypto/asn1/a_strex.c", + "crypto/asn1/a_strnid.c", + "crypto/asn1/a_time.c", + "crypto/asn1/a_type.c", + "crypto/asn1/a_utctm.c", + "crypto/asn1/a_utf8.c", + "crypto/asn1/a_verify.c", + "crypto/asn1/ameth_lib.c", + "crypto/asn1/asn1_err.c", + "crypto/asn1/asn1_gen.c", + "crypto/asn1/asn1_item_list.c", + "crypto/asn1/asn1_lib.c", + "crypto/asn1/asn1_par.c", + "crypto/asn1/asn_mime.c", + "crypto/asn1/asn_moid.c", + "crypto/asn1/asn_mstbl.c", + "crypto/asn1/asn_pack.c", + "crypto/asn1/bio_asn1.c", + "crypto/asn1/bio_ndef.c", + "crypto/asn1/d2i_pr.c", + "crypto/asn1/d2i_pu.c", + "crypto/asn1/evp_asn1.c", + "crypto/asn1/f_int.c", + "crypto/asn1/f_string.c", + "crypto/asn1/i2d_pr.c", + "crypto/asn1/i2d_pu.c", + "crypto/asn1/n_pkey.c", + "crypto/asn1/nsseq.c", + "crypto/asn1/p5_pbe.c", + "crypto/asn1/p5_pbev2.c", + "crypto/asn1/p5_scrypt.c", + "crypto/asn1/p8_pkey.c", + "crypto/asn1/t_bitst.c", + "crypto/asn1/t_pkey.c", + "crypto/asn1/t_spki.c", + "crypto/asn1/tasn_dec.c", + "crypto/asn1/tasn_enc.c", + "crypto/asn1/tasn_fre.c", + "crypto/asn1/tasn_new.c", + "crypto/asn1/tasn_prn.c", + "crypto/asn1/tasn_scn.c", + "crypto/asn1/tasn_typ.c", + "crypto/asn1/tasn_utl.c", + "crypto/asn1/x_algor.c", + "crypto/asn1/x_bignum.c", + "crypto/asn1/x_info.c", + "crypto/asn1/x_int64.c", + "crypto/asn1/x_long.c", + "crypto/asn1/x_pkey.c", + "crypto/asn1/x_sig.c", + "crypto/asn1/x_spki.c", + "crypto/asn1/x_val.c", + "crypto/async/arch/async_null.c", + "crypto/async/arch/async_posix.c", + "crypto/async/arch/async_win.c", + "crypto/async/async.c", + "crypto/async/async_err.c", + "crypto/async/async_wait.c", + "crypto/bf/bf_cfb64.c", + "crypto/bf/bf_ecb.c", + "crypto/bf/bf_enc.c", + "crypto/bf/bf_ofb64.c", + "crypto/bf/bf_skey.c", + "crypto/bio/b_addr.c", + "crypto/bio/b_dump.c", + "crypto/bio/b_print.c", + "crypto/bio/b_sock.c", + "crypto/bio/b_sock2.c", + "crypto/bio/bf_buff.c", + "crypto/bio/bf_lbuf.c", + "crypto/bio/bf_nbio.c", + "crypto/bio/bf_null.c", + "crypto/bio/bio_cb.c", + "crypto/bio/bio_err.c", + "crypto/bio/bio_lib.c", + "crypto/bio/bio_meth.c", + "crypto/bio/bss_acpt.c", + "crypto/bio/bss_bio.c", + "crypto/bio/bss_conn.c", + "crypto/bio/bss_dgram.c", + "crypto/bio/bss_fd.c", + "crypto/bio/bss_file.c", + "crypto/bio/bss_log.c", + "crypto/bio/bss_mem.c", + "crypto/bio/bss_null.c", + "crypto/bio/bss_sock.c", + "crypto/blake2/blake2b.c", + "crypto/blake2/blake2s.c", + "crypto/blake2/m_blake2b.c", + "crypto/blake2/m_blake2s.c", + "crypto/bn/bn_add.c", + "crypto/bn/bn_asm.c", + "crypto/bn/bn_blind.c", + "crypto/bn/bn_const.c", + "crypto/bn/bn_ctx.c", + "crypto/bn/bn_depr.c", + "crypto/bn/bn_dh.c", + "crypto/bn/bn_div.c", + "crypto/bn/bn_err.c", + "crypto/bn/bn_exp.c", + "crypto/bn/bn_exp2.c", + "crypto/bn/bn_gcd.c", + "crypto/bn/bn_gf2m.c", + "crypto/bn/bn_intern.c", + "crypto/bn/bn_kron.c", + "crypto/bn/bn_lib.c", + "crypto/bn/bn_mod.c", + "crypto/bn/bn_mont.c", + "crypto/bn/bn_mpi.c", + "crypto/bn/bn_mul.c", + "crypto/bn/bn_nist.c", + "crypto/bn/bn_prime.c", + "crypto/bn/bn_print.c", + "crypto/bn/bn_rand.c", + "crypto/bn/bn_recp.c", + "crypto/bn/bn_shift.c", + "crypto/bn/bn_sqr.c", + "crypto/bn/bn_sqrt.c", + "crypto/bn/bn_srp.c", + "crypto/bn/bn_word.c", + "crypto/bn/bn_x931p.c", + "crypto/bn/rsaz_exp.c", + "crypto/buffer/buf_err.c", + "crypto/buffer/buffer.c", + "crypto/camellia/camellia.c", + "crypto/camellia/cmll_cbc.c", + "crypto/camellia/cmll_cfb.c", + "crypto/camellia/cmll_ctr.c", + "crypto/camellia/cmll_ecb.c", + "crypto/camellia/cmll_misc.c", + "crypto/camellia/cmll_ofb.c", + "crypto/cast/c_cfb64.c", + "crypto/cast/c_ecb.c", + "crypto/cast/c_enc.c", + "crypto/cast/c_ofb64.c", + "crypto/cast/c_skey.c", + // "crypto/chacha/chacha_enc.c", + "crypto/cmac/cm_ameth.c", + "crypto/cmac/cm_pmeth.c", + "crypto/cmac/cmac.c", + "crypto/cms/cms_asn1.c", + "crypto/cms/cms_att.c", + "crypto/cms/cms_cd.c", + "crypto/cms/cms_dd.c", + "crypto/cms/cms_enc.c", + "crypto/cms/cms_env.c", + "crypto/cms/cms_err.c", + "crypto/cms/cms_ess.c", + "crypto/cms/cms_io.c", + "crypto/cms/cms_kari.c", + "crypto/cms/cms_lib.c", + "crypto/cms/cms_pwri.c", + "crypto/cms/cms_sd.c", + "crypto/cms/cms_smime.c", + "crypto/comp/c_zlib.c", + "crypto/comp/comp_err.c", + "crypto/comp/comp_lib.c", + "crypto/conf/conf_api.c", + "crypto/conf/conf_def.c", + "crypto/conf/conf_err.c", + "crypto/conf/conf_lib.c", + "crypto/conf/conf_mall.c", + "crypto/conf/conf_mod.c", + "crypto/conf/conf_sap.c", + "crypto/conf/conf_ssl.c", + "crypto/cpt_err.c", + "crypto/cryptlib.c", + "crypto/ct/ct_b64.c", + "crypto/ct/ct_err.c", + "crypto/ct/ct_log.c", + "crypto/ct/ct_oct.c", + "crypto/ct/ct_policy.c", + "crypto/ct/ct_prn.c", + "crypto/ct/ct_sct.c", + "crypto/ct/ct_sct_ctx.c", + "crypto/ct/ct_vfy.c", + "crypto/ct/ct_x509v3.c", + "crypto/ctype.c", + "crypto/cversion.c", + "crypto/des/cbc_cksm.c", + "crypto/des/cbc_enc.c", + "crypto/des/cfb64ede.c", + "crypto/des/cfb64enc.c", + "crypto/des/cfb_enc.c", + "crypto/des/des_enc.c", + "crypto/des/ecb3_enc.c", + "crypto/des/ecb_enc.c", + "crypto/des/fcrypt.c", + "crypto/des/fcrypt_b.c", + "crypto/des/ofb64ede.c", + "crypto/des/ofb64enc.c", + "crypto/des/ofb_enc.c", + "crypto/des/pcbc_enc.c", + "crypto/des/qud_cksm.c", + "crypto/des/rand_key.c", + "crypto/des/set_key.c", + "crypto/des/str2key.c", + "crypto/des/xcbc_enc.c", + "crypto/dh/dh_ameth.c", + "crypto/dh/dh_asn1.c", + "crypto/dh/dh_check.c", + "crypto/dh/dh_depr.c", + "crypto/dh/dh_err.c", + "crypto/dh/dh_gen.c", + "crypto/dh/dh_kdf.c", + "crypto/dh/dh_key.c", + "crypto/dh/dh_lib.c", + "crypto/dh/dh_meth.c", + "crypto/dh/dh_pmeth.c", + "crypto/dh/dh_prn.c", + "crypto/dh/dh_rfc5114.c", + "crypto/dh/dh_rfc7919.c", + "crypto/dsa/dsa_ameth.c", + "crypto/dsa/dsa_asn1.c", + "crypto/dsa/dsa_depr.c", + "crypto/dsa/dsa_err.c", + "crypto/dsa/dsa_gen.c", + "crypto/dsa/dsa_key.c", + "crypto/dsa/dsa_lib.c", + "crypto/dsa/dsa_meth.c", + "crypto/dsa/dsa_ossl.c", + "crypto/dsa/dsa_pmeth.c", + "crypto/dsa/dsa_prn.c", + "crypto/dsa/dsa_sign.c", + "crypto/dsa/dsa_vrf.c", + "crypto/dso/dso_dl.c", + "crypto/dso/dso_dlfcn.c", + "crypto/dso/dso_err.c", + "crypto/dso/dso_lib.c", + "crypto/dso/dso_openssl.c", + "crypto/dso/dso_vms.c", + "crypto/dso/dso_win32.c", + "crypto/ebcdic.c", + "crypto/ec/curve25519.c", + "crypto/ec/curve448/arch_32/f_impl.c", + "crypto/ec/curve448/curve448.c", + "crypto/ec/curve448/curve448_tables.c", + "crypto/ec/curve448/eddsa.c", + "crypto/ec/curve448/f_generic.c", + "crypto/ec/curve448/scalar.c", + "crypto/ec/ec2_oct.c", + "crypto/ec/ec2_smpl.c", + "crypto/ec/ec_ameth.c", + "crypto/ec/ec_asn1.c", + "crypto/ec/ec_check.c", + "crypto/ec/ec_curve.c", + "crypto/ec/ec_cvt.c", + "crypto/ec/ec_err.c", + "crypto/ec/ec_key.c", + "crypto/ec/ec_kmeth.c", + "crypto/ec/ec_lib.c", + "crypto/ec/ec_mult.c", + "crypto/ec/ec_oct.c", + "crypto/ec/ec_pmeth.c", + "crypto/ec/ec_print.c", + "crypto/ec/ecdh_kdf.c", + "crypto/ec/ecdh_ossl.c", + "crypto/ec/ecdsa_ossl.c", + "crypto/ec/ecdsa_sign.c", + "crypto/ec/ecdsa_vrf.c", + "crypto/ec/eck_prn.c", + "crypto/ec/ecp_mont.c", + "crypto/ec/ecp_nist.c", + "crypto/ec/ecp_nistp224.c", + "crypto/ec/ecp_nistp256.c", + "crypto/ec/ecp_nistp521.c", + "crypto/ec/ecp_nistputil.c", + "crypto/ec/ecp_nistz256.c", + "crypto/ec/ecp_oct.c", + "crypto/ec/ecp_smpl.c", + "crypto/ec/ecx_meth.c", + "crypto/engine/eng_all.c", + "crypto/engine/eng_cnf.c", + "crypto/engine/eng_ctrl.c", + "crypto/engine/eng_dyn.c", + "crypto/engine/eng_err.c", + "crypto/engine/eng_fat.c", + "crypto/engine/eng_init.c", + "crypto/engine/eng_lib.c", + "crypto/engine/eng_list.c", + "crypto/engine/eng_openssl.c", + "crypto/engine/eng_pkey.c", + "crypto/engine/eng_rdrand.c", + "crypto/engine/eng_table.c", + "crypto/engine/tb_asnmth.c", + "crypto/engine/tb_cipher.c", + "crypto/engine/tb_dh.c", + "crypto/engine/tb_digest.c", + "crypto/engine/tb_dsa.c", + "crypto/engine/tb_eckey.c", + "crypto/engine/tb_pkmeth.c", + "crypto/engine/tb_rand.c", + "crypto/engine/tb_rsa.c", + "crypto/err/err.c", + "crypto/err/err_all.c", + "crypto/err/err_prn.c", + "crypto/evp/bio_b64.c", + "crypto/evp/bio_enc.c", + "crypto/evp/bio_md.c", + "crypto/evp/bio_ok.c", + "crypto/evp/c_allc.c", + "crypto/evp/c_alld.c", + "crypto/evp/cmeth_lib.c", + "crypto/evp/digest.c", + "crypto/evp/e_aes.c", + "crypto/evp/e_aes_cbc_hmac_sha1.c", + "crypto/evp/e_aes_cbc_hmac_sha256.c", + "crypto/evp/e_aria.c", + "crypto/evp/e_bf.c", + "crypto/evp/e_camellia.c", + "crypto/evp/e_cast.c", + "crypto/evp/e_chacha20_poly1305.c", + "crypto/evp/e_des.c", + "crypto/evp/e_des3.c", + "crypto/evp/e_idea.c", + "crypto/evp/e_null.c", + "crypto/evp/e_old.c", + "crypto/evp/e_rc2.c", + "crypto/evp/e_rc4.c", + "crypto/evp/e_rc4_hmac_md5.c", + "crypto/evp/e_rc5.c", + "crypto/evp/e_seed.c", + "crypto/evp/e_sm4.c", + "crypto/evp/e_xcbc_d.c", + "crypto/evp/encode.c", + "crypto/evp/evp_cnf.c", + "crypto/evp/evp_enc.c", + "crypto/evp/evp_err.c", + "crypto/evp/evp_key.c", + "crypto/evp/evp_lib.c", + "crypto/evp/evp_pbe.c", + "crypto/evp/evp_pkey.c", + "crypto/evp/m_md2.c", + "crypto/evp/m_md4.c", + "crypto/evp/m_md5.c", + "crypto/evp/m_md5_sha1.c", + "crypto/evp/m_mdc2.c", + "crypto/evp/m_null.c", + "crypto/evp/m_ripemd.c", + "crypto/evp/m_sha1.c", + "crypto/evp/m_sha3.c", + "crypto/evp/m_sigver.c", + "crypto/evp/m_wp.c", + "crypto/evp/names.c", + "crypto/evp/p5_crpt.c", + "crypto/evp/p5_crpt2.c", + "crypto/evp/p_dec.c", + "crypto/evp/p_enc.c", + "crypto/evp/p_lib.c", + "crypto/evp/p_open.c", + "crypto/evp/p_seal.c", + "crypto/evp/p_sign.c", + "crypto/evp/p_verify.c", + "crypto/evp/pbe_scrypt.c", + "crypto/evp/pmeth_fn.c", + "crypto/evp/pmeth_gn.c", + "crypto/evp/pmeth_lib.c", + "crypto/ex_data.c", + "crypto/getenv.c", + "crypto/hmac/hm_ameth.c", + "crypto/hmac/hm_pmeth.c", + "crypto/hmac/hmac.c", + "crypto/idea/i_cbc.c", + "crypto/idea/i_cfb64.c", + "crypto/idea/i_ecb.c", + "crypto/idea/i_ofb64.c", + "crypto/idea/i_skey.c", + "crypto/init.c", + "crypto/kdf/hkdf.c", + "crypto/kdf/kdf_err.c", + "crypto/kdf/scrypt.c", + "crypto/kdf/tls1_prf.c", + "crypto/lhash/lh_stats.c", + "crypto/lhash/lhash.c", + "crypto/md4/md4_dgst.c", + "crypto/md4/md4_one.c", + "crypto/md5/md5_dgst.c", + "crypto/md5/md5_one.c", + "crypto/mdc2/mdc2_one.c", + "crypto/mdc2/mdc2dgst.c", + "crypto/mem.c", + // "crypto/mem_clr.c", + "crypto/mem_dbg.c", + "crypto/mem_sec.c", + "crypto/modes/cbc128.c", + "crypto/modes/ccm128.c", + "crypto/modes/cfb128.c", + "crypto/modes/ctr128.c", + "crypto/modes/cts128.c", + "crypto/modes/gcm128.c", + "crypto/modes/ocb128.c", + "crypto/modes/ofb128.c", + "crypto/modes/wrap128.c", + "crypto/modes/xts128.c", + "crypto/o_dir.c", + "crypto/o_fips.c", + "crypto/o_fopen.c", + "crypto/o_init.c", + "crypto/o_str.c", + "crypto/o_time.c", + "crypto/objects/o_names.c", + "crypto/objects/obj_dat.c", + "crypto/objects/obj_err.c", + "crypto/objects/obj_lib.c", + "crypto/objects/obj_xref.c", + "crypto/ocsp/ocsp_asn.c", + "crypto/ocsp/ocsp_cl.c", + "crypto/ocsp/ocsp_err.c", + "crypto/ocsp/ocsp_ext.c", + "crypto/ocsp/ocsp_ht.c", + "crypto/ocsp/ocsp_lib.c", + "crypto/ocsp/ocsp_prn.c", + "crypto/ocsp/ocsp_srv.c", + "crypto/ocsp/ocsp_vfy.c", + "crypto/ocsp/v3_ocsp.c", + "crypto/pem/pem_all.c", + "crypto/pem/pem_err.c", + "crypto/pem/pem_info.c", + "crypto/pem/pem_lib.c", + "crypto/pem/pem_oth.c", + "crypto/pem/pem_pk8.c", + "crypto/pem/pem_pkey.c", + "crypto/pem/pem_sign.c", + "crypto/pem/pem_x509.c", + "crypto/pem/pem_xaux.c", + "crypto/pem/pvkfmt.c", + "crypto/pkcs12/p12_add.c", + "crypto/pkcs12/p12_asn.c", + "crypto/pkcs12/p12_attr.c", + "crypto/pkcs12/p12_crpt.c", + "crypto/pkcs12/p12_crt.c", + "crypto/pkcs12/p12_decr.c", + "crypto/pkcs12/p12_init.c", + "crypto/pkcs12/p12_key.c", + "crypto/pkcs12/p12_kiss.c", + "crypto/pkcs12/p12_mutl.c", + "crypto/pkcs12/p12_npas.c", + "crypto/pkcs12/p12_p8d.c", + "crypto/pkcs12/p12_p8e.c", + "crypto/pkcs12/p12_sbag.c", + "crypto/pkcs12/p12_utl.c", + "crypto/pkcs12/pk12err.c", + "crypto/pkcs7/bio_pk7.c", + "crypto/pkcs7/pk7_asn1.c", + "crypto/pkcs7/pk7_attr.c", + "crypto/pkcs7/pk7_doit.c", + "crypto/pkcs7/pk7_lib.c", + "crypto/pkcs7/pk7_mime.c", + "crypto/pkcs7/pk7_smime.c", + "crypto/pkcs7/pkcs7err.c", + "crypto/poly1305/poly1305.c", + "crypto/poly1305/poly1305_ameth.c", + "crypto/poly1305/poly1305_pmeth.c", + "crypto/rand/drbg_ctr.c", + "crypto/rand/drbg_lib.c", + "crypto/rand/rand_egd.c", + "crypto/rand/rand_err.c", + "crypto/rand/rand_lib.c", + "crypto/rand/rand_unix.c", + "crypto/rand/rand_vms.c", + "crypto/rand/rand_win.c", + "crypto/rand/randfile.c", + "crypto/rc2/rc2_cbc.c", + "crypto/rc2/rc2_ecb.c", + "crypto/rc2/rc2_skey.c", + "crypto/rc2/rc2cfb64.c", + "crypto/rc2/rc2ofb64.c", + "crypto/rc4/rc4_enc.c", + "crypto/rc4/rc4_skey.c", + "crypto/ripemd/rmd_dgst.c", + "crypto/ripemd/rmd_one.c", + "crypto/rsa/rsa_ameth.c", + "crypto/rsa/rsa_asn1.c", + "crypto/rsa/rsa_chk.c", + "crypto/rsa/rsa_crpt.c", + "crypto/rsa/rsa_depr.c", + "crypto/rsa/rsa_err.c", + "crypto/rsa/rsa_gen.c", + "crypto/rsa/rsa_lib.c", + "crypto/rsa/rsa_meth.c", + "crypto/rsa/rsa_mp.c", + "crypto/rsa/rsa_none.c", + "crypto/rsa/rsa_oaep.c", + "crypto/rsa/rsa_ossl.c", + "crypto/rsa/rsa_pk1.c", + "crypto/rsa/rsa_pmeth.c", + "crypto/rsa/rsa_prn.c", + "crypto/rsa/rsa_pss.c", + "crypto/rsa/rsa_saos.c", + "crypto/rsa/rsa_sign.c", + "crypto/rsa/rsa_ssl.c", + "crypto/rsa/rsa_x931.c", + "crypto/rsa/rsa_x931g.c", + "crypto/seed/seed.c", + "crypto/seed/seed_cbc.c", + "crypto/seed/seed_cfb.c", + "crypto/seed/seed_ecb.c", + "crypto/seed/seed_ofb.c", + // "crypto/sha/keccak1600.c", + "crypto/sha/sha1_one.c", + "crypto/sha/sha1dgst.c", + "crypto/sha/sha256.c", + "crypto/sha/sha512.c", + "crypto/siphash/siphash.c", + "crypto/siphash/siphash_ameth.c", + "crypto/siphash/siphash_pmeth.c", + "crypto/sm2/sm2_crypt.c", + "crypto/sm2/sm2_err.c", + "crypto/sm2/sm2_pmeth.c", + "crypto/sm2/sm2_sign.c", + "crypto/sm3/m_sm3.c", + "crypto/sm3/sm3.c", + "crypto/sm4/sm4.c", + "crypto/srp/srp_lib.c", + "crypto/srp/srp_vfy.c", + "crypto/stack/stack.c", + "crypto/store/loader_file.c", + "crypto/store/store_err.c", + "crypto/store/store_init.c", + "crypto/store/store_lib.c", + "crypto/store/store_register.c", + "crypto/store/store_strings.c", + "crypto/threads_none.c", + "crypto/threads_pthread.c", + "crypto/threads_win.c", + "crypto/ts/ts_asn1.c", + "crypto/ts/ts_conf.c", + "crypto/ts/ts_err.c", + "crypto/ts/ts_lib.c", + "crypto/ts/ts_req_print.c", + "crypto/ts/ts_req_utils.c", + "crypto/ts/ts_rsp_print.c", + "crypto/ts/ts_rsp_sign.c", + "crypto/ts/ts_rsp_utils.c", + "crypto/ts/ts_rsp_verify.c", + "crypto/ts/ts_verify_ctx.c", + "crypto/txt_db/txt_db.c", + "crypto/ui/ui_err.c", + "crypto/ui/ui_lib.c", + "crypto/ui/ui_null.c", + "crypto/ui/ui_openssl.c", + "crypto/ui/ui_util.c", + "crypto/uid.c", + "crypto/whrlpool/wp_block.c", + "crypto/whrlpool/wp_dgst.c", + "crypto/x509/by_dir.c", + "crypto/x509/by_file.c", + "crypto/x509/t_crl.c", + "crypto/x509/t_req.c", + "crypto/x509/t_x509.c", + "crypto/x509/x509_att.c", + "crypto/x509/x509_cmp.c", + "crypto/x509/x509_d2.c", + "crypto/x509/x509_def.c", + "crypto/x509/x509_err.c", + "crypto/x509/x509_ext.c", + "crypto/x509/x509_lu.c", + "crypto/x509/x509_meth.c", + "crypto/x509/x509_obj.c", + "crypto/x509/x509_r2x.c", + "crypto/x509/x509_req.c", + "crypto/x509/x509_set.c", + "crypto/x509/x509_trs.c", + "crypto/x509/x509_txt.c", + "crypto/x509/x509_v3.c", + "crypto/x509/x509_vfy.c", + "crypto/x509/x509_vpm.c", + "crypto/x509/x509cset.c", + "crypto/x509/x509name.c", + "crypto/x509/x509rset.c", + "crypto/x509/x509spki.c", + "crypto/x509/x509type.c", + "crypto/x509/x_all.c", + "crypto/x509/x_attrib.c", + "crypto/x509/x_crl.c", + "crypto/x509/x_exten.c", + "crypto/x509/x_name.c", + "crypto/x509/x_pubkey.c", + "crypto/x509/x_req.c", + "crypto/x509/x_x509.c", + "crypto/x509/x_x509a.c", + "crypto/x509v3/pcy_cache.c", + "crypto/x509v3/pcy_data.c", + "crypto/x509v3/pcy_lib.c", + "crypto/x509v3/pcy_map.c", + "crypto/x509v3/pcy_node.c", + "crypto/x509v3/pcy_tree.c", + "crypto/x509v3/v3_addr.c", + "crypto/x509v3/v3_admis.c", + "crypto/x509v3/v3_akey.c", + "crypto/x509v3/v3_akeya.c", + "crypto/x509v3/v3_alt.c", + "crypto/x509v3/v3_asid.c", + "crypto/x509v3/v3_bcons.c", + "crypto/x509v3/v3_bitst.c", + "crypto/x509v3/v3_conf.c", + "crypto/x509v3/v3_cpols.c", + "crypto/x509v3/v3_crld.c", + "crypto/x509v3/v3_enum.c", + "crypto/x509v3/v3_extku.c", + "crypto/x509v3/v3_genn.c", + "crypto/x509v3/v3_ia5.c", + "crypto/x509v3/v3_info.c", + "crypto/x509v3/v3_int.c", + "crypto/x509v3/v3_lib.c", + "crypto/x509v3/v3_ncons.c", + "crypto/x509v3/v3_pci.c", + "crypto/x509v3/v3_pcia.c", + "crypto/x509v3/v3_pcons.c", + "crypto/x509v3/v3_pku.c", + "crypto/x509v3/v3_pmaps.c", + "crypto/x509v3/v3_prn.c", + "crypto/x509v3/v3_purp.c", + "crypto/x509v3/v3_skey.c", + "crypto/x509v3/v3_sxnet.c", + "crypto/x509v3/v3_tlsf.c", + "crypto/x509v3/v3_utl.c", + "crypto/x509v3/v3err.c", + "engines/e_capi.c", + "engines/e_padlock.c", +}; diff --git a/vere/ext/openssl/build.zig.zon b/vere/ext/openssl/build.zig.zon new file mode 100644 index 0000000..8298d4a --- /dev/null +++ b/vere/ext/openssl/build.zig.zon @@ -0,0 +1,22 @@ +.{ + .name = .openssl, + .fingerprint = 0x773a47f1ba90827f, + .version = "0.0.1", + .dependencies = .{ + .nasm = .{ + .path = "../nasm", + }, + .macos_sdk = .{ + .url = "https://github.com/joseluisq/macosx-sdks/releases/download/14.5/MacOSX14.5.sdk.tar.xz", + .hash = "N-V-__8AAKtK4FMzqcFsY_ZrpMg9bGH0h7BqZDXtVyAerMtM", + .lazy = true, + }, + .openssl = .{ + .url = "https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz", + .hash = "N-V-__8AANidegJCsKafw97uPGA7EQRvFWkwRuXPz1aFjgKL", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/openssl/gen/linux-aarch64/crypto/aes/aesv8-armx.S b/vere/ext/openssl/gen/linux-aarch64/crypto/aes/aesv8-armx.S new file mode 100644 index 0000000..cdeae4e --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/crypto/aes/aesv8-armx.S @@ -0,0 +1,757 @@ +#include "arm_arch.h" + +#if __ARM_MAX_ARCH__>=7 +.text +.arch armv8-a+crypto +.align 5 +.Lrcon: +.long 0x01,0x01,0x01,0x01 +.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d // rotate-n-splat +.long 0x1b,0x1b,0x1b,0x1b + +.globl aes_v8_set_encrypt_key +.type aes_v8_set_encrypt_key,%function +.align 5 +aes_v8_set_encrypt_key: +.Lenc_key: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + mov x3,#-1 + cmp x0,#0 + b.eq .Lenc_key_abort + cmp x2,#0 + b.eq .Lenc_key_abort + mov x3,#-2 + cmp w1,#128 + b.lt .Lenc_key_abort + cmp w1,#256 + b.gt .Lenc_key_abort + tst w1,#0x3f + b.ne .Lenc_key_abort + + adr x3,.Lrcon + cmp w1,#192 + + eor v0.16b,v0.16b,v0.16b + ld1 {v3.16b},[x0],#16 + mov w1,#8 // reuse w1 + ld1 {v1.4s,v2.4s},[x3],#32 + + b.lt .Loop128 + b.eq .L192 + b .L256 + +.align 4 +.Loop128: + tbl v6.16b,{v3.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 + st1 {v3.4s},[x2],#16 + aese v6.16b,v0.16b + subs w1,w1,#1 + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v6.16b,v6.16b,v1.16b + eor v3.16b,v3.16b,v5.16b + shl v1.16b,v1.16b,#1 + eor v3.16b,v3.16b,v6.16b + b.ne .Loop128 + + ld1 {v1.4s},[x3] + + tbl v6.16b,{v3.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 + st1 {v3.4s},[x2],#16 + aese v6.16b,v0.16b + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v6.16b,v6.16b,v1.16b + eor v3.16b,v3.16b,v5.16b + shl v1.16b,v1.16b,#1 + eor v3.16b,v3.16b,v6.16b + + tbl v6.16b,{v3.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 + st1 {v3.4s},[x2],#16 + aese v6.16b,v0.16b + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v6.16b,v6.16b,v1.16b + eor v3.16b,v3.16b,v5.16b + eor v3.16b,v3.16b,v6.16b + st1 {v3.4s},[x2] + add x2,x2,#0x50 + + mov w12,#10 + b .Ldone + +.align 4 +.L192: + ld1 {v4.8b},[x0],#8 + movi v6.16b,#8 // borrow v6.16b + st1 {v3.4s},[x2],#16 + sub v2.16b,v2.16b,v6.16b // adjust the mask + +.Loop192: + tbl v6.16b,{v4.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 +#ifdef __ARMEB__ + st1 {v4.4s},[x2],#16 + sub x2,x2,#8 +#else + st1 {v4.8b},[x2],#8 +#endif + aese v6.16b,v0.16b + subs w1,w1,#1 + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + + dup v5.4s,v3.s[3] + eor v5.16b,v5.16b,v4.16b + eor v6.16b,v6.16b,v1.16b + ext v4.16b,v0.16b,v4.16b,#12 + shl v1.16b,v1.16b,#1 + eor v4.16b,v4.16b,v5.16b + eor v3.16b,v3.16b,v6.16b + eor v4.16b,v4.16b,v6.16b + st1 {v3.4s},[x2],#16 + b.ne .Loop192 + + mov w12,#12 + add x2,x2,#0x20 + b .Ldone + +.align 4 +.L256: + ld1 {v4.16b},[x0] + mov w1,#7 + mov w12,#14 + st1 {v3.4s},[x2],#16 + +.Loop256: + tbl v6.16b,{v4.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 + st1 {v4.4s},[x2],#16 + aese v6.16b,v0.16b + subs w1,w1,#1 + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v6.16b,v6.16b,v1.16b + eor v3.16b,v3.16b,v5.16b + shl v1.16b,v1.16b,#1 + eor v3.16b,v3.16b,v6.16b + st1 {v3.4s},[x2],#16 + b.eq .Ldone + + dup v6.4s,v3.s[3] // just splat + ext v5.16b,v0.16b,v4.16b,#12 + aese v6.16b,v0.16b + + eor v4.16b,v4.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v4.16b,v4.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v4.16b,v4.16b,v5.16b + + eor v4.16b,v4.16b,v6.16b + b .Loop256 + +.Ldone: + str w12,[x2] + mov x3,#0 + +.Lenc_key_abort: + mov x0,x3 // return value + ldr x29,[sp],#16 + ret +.size aes_v8_set_encrypt_key,.-aes_v8_set_encrypt_key + +.globl aes_v8_set_decrypt_key +.type aes_v8_set_decrypt_key,%function +.align 5 +aes_v8_set_decrypt_key: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + bl .Lenc_key + + cmp x0,#0 + b.ne .Ldec_key_abort + + sub x2,x2,#240 // restore original x2 + mov x4,#-16 + add x0,x2,x12,lsl#4 // end of key schedule + + ld1 {v0.4s},[x2] + ld1 {v1.4s},[x0] + st1 {v0.4s},[x0],x4 + st1 {v1.4s},[x2],#16 + +.Loop_imc: + ld1 {v0.4s},[x2] + ld1 {v1.4s},[x0] + aesimc v0.16b,v0.16b + aesimc v1.16b,v1.16b + st1 {v0.4s},[x0],x4 + st1 {v1.4s},[x2],#16 + cmp x0,x2 + b.hi .Loop_imc + + ld1 {v0.4s},[x2] + aesimc v0.16b,v0.16b + st1 {v0.4s},[x0] + + eor x0,x0,x0 // return value +.Ldec_key_abort: + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size aes_v8_set_decrypt_key,.-aes_v8_set_decrypt_key +.globl aes_v8_encrypt +.type aes_v8_encrypt,%function +.align 5 +aes_v8_encrypt: + ldr w3,[x2,#240] + ld1 {v0.4s},[x2],#16 + ld1 {v2.16b},[x0] + sub w3,w3,#2 + ld1 {v1.4s},[x2],#16 + +.Loop_enc: + aese v2.16b,v0.16b + aesmc v2.16b,v2.16b + ld1 {v0.4s},[x2],#16 + subs w3,w3,#2 + aese v2.16b,v1.16b + aesmc v2.16b,v2.16b + ld1 {v1.4s},[x2],#16 + b.gt .Loop_enc + + aese v2.16b,v0.16b + aesmc v2.16b,v2.16b + ld1 {v0.4s},[x2] + aese v2.16b,v1.16b + eor v2.16b,v2.16b,v0.16b + + st1 {v2.16b},[x1] + ret +.size aes_v8_encrypt,.-aes_v8_encrypt +.globl aes_v8_decrypt +.type aes_v8_decrypt,%function +.align 5 +aes_v8_decrypt: + ldr w3,[x2,#240] + ld1 {v0.4s},[x2],#16 + ld1 {v2.16b},[x0] + sub w3,w3,#2 + ld1 {v1.4s},[x2],#16 + +.Loop_dec: + aesd v2.16b,v0.16b + aesimc v2.16b,v2.16b + ld1 {v0.4s},[x2],#16 + subs w3,w3,#2 + aesd v2.16b,v1.16b + aesimc v2.16b,v2.16b + ld1 {v1.4s},[x2],#16 + b.gt .Loop_dec + + aesd v2.16b,v0.16b + aesimc v2.16b,v2.16b + ld1 {v0.4s},[x2] + aesd v2.16b,v1.16b + eor v2.16b,v2.16b,v0.16b + + st1 {v2.16b},[x1] + ret +.size aes_v8_decrypt,.-aes_v8_decrypt +.globl aes_v8_cbc_encrypt +.type aes_v8_cbc_encrypt,%function +.align 5 +aes_v8_cbc_encrypt: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + subs x2,x2,#16 + mov x8,#16 + b.lo .Lcbc_abort + csel x8,xzr,x8,eq + + cmp w5,#0 // en- or decrypting? + ldr w5,[x3,#240] + and x2,x2,#-16 + ld1 {v6.16b},[x4] + ld1 {v0.16b},[x0],x8 + + ld1 {v16.4s,v17.4s},[x3] // load key schedule... + sub w5,w5,#6 + add x7,x3,x5,lsl#4 // pointer to last 7 round keys + sub w5,w5,#2 + ld1 {v18.4s,v19.4s},[x7],#32 + ld1 {v20.4s,v21.4s},[x7],#32 + ld1 {v22.4s,v23.4s},[x7],#32 + ld1 {v7.4s},[x7] + + add x7,x3,#32 + mov w6,w5 + b.eq .Lcbc_dec + + cmp w5,#2 + eor v0.16b,v0.16b,v6.16b + eor v5.16b,v16.16b,v7.16b + b.eq .Lcbc_enc128 + + ld1 {v2.4s,v3.4s},[x7] + add x7,x3,#16 + add x6,x3,#16*4 + add x12,x3,#16*5 + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + add x14,x3,#16*6 + add x3,x3,#16*7 + b .Lenter_cbc_enc + +.align 4 +.Loop_cbc_enc: + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + st1 {v6.16b},[x1],#16 +.Lenter_cbc_enc: + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + aese v0.16b,v2.16b + aesmc v0.16b,v0.16b + ld1 {v16.4s},[x6] + cmp w5,#4 + aese v0.16b,v3.16b + aesmc v0.16b,v0.16b + ld1 {v17.4s},[x12] + b.eq .Lcbc_enc192 + + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + ld1 {v16.4s},[x14] + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + ld1 {v17.4s},[x3] + nop + +.Lcbc_enc192: + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + subs x2,x2,#16 + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + csel x8,xzr,x8,eq + aese v0.16b,v18.16b + aesmc v0.16b,v0.16b + aese v0.16b,v19.16b + aesmc v0.16b,v0.16b + ld1 {v16.16b},[x0],x8 + aese v0.16b,v20.16b + aesmc v0.16b,v0.16b + eor v16.16b,v16.16b,v5.16b + aese v0.16b,v21.16b + aesmc v0.16b,v0.16b + ld1 {v17.4s},[x7] // re-pre-load rndkey[1] + aese v0.16b,v22.16b + aesmc v0.16b,v0.16b + aese v0.16b,v23.16b + eor v6.16b,v0.16b,v7.16b + b.hs .Loop_cbc_enc + + st1 {v6.16b},[x1],#16 + b .Lcbc_done + +.align 5 +.Lcbc_enc128: + ld1 {v2.4s,v3.4s},[x7] + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + b .Lenter_cbc_enc128 +.Loop_cbc_enc128: + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + st1 {v6.16b},[x1],#16 +.Lenter_cbc_enc128: + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + subs x2,x2,#16 + aese v0.16b,v2.16b + aesmc v0.16b,v0.16b + csel x8,xzr,x8,eq + aese v0.16b,v3.16b + aesmc v0.16b,v0.16b + aese v0.16b,v18.16b + aesmc v0.16b,v0.16b + aese v0.16b,v19.16b + aesmc v0.16b,v0.16b + ld1 {v16.16b},[x0],x8 + aese v0.16b,v20.16b + aesmc v0.16b,v0.16b + aese v0.16b,v21.16b + aesmc v0.16b,v0.16b + aese v0.16b,v22.16b + aesmc v0.16b,v0.16b + eor v16.16b,v16.16b,v5.16b + aese v0.16b,v23.16b + eor v6.16b,v0.16b,v7.16b + b.hs .Loop_cbc_enc128 + + st1 {v6.16b},[x1],#16 + b .Lcbc_done +.align 5 +.Lcbc_dec: + ld1 {v18.16b},[x0],#16 + subs x2,x2,#32 // bias + add w6,w5,#2 + orr v3.16b,v0.16b,v0.16b + orr v1.16b,v0.16b,v0.16b + orr v19.16b,v18.16b,v18.16b + b.lo .Lcbc_dec_tail + + orr v1.16b,v18.16b,v18.16b + ld1 {v18.16b},[x0],#16 + orr v2.16b,v0.16b,v0.16b + orr v3.16b,v1.16b,v1.16b + orr v19.16b,v18.16b,v18.16b + +.Loop3x_cbc_dec: + aesd v0.16b,v16.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v16.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v16.16b + aesimc v18.16b,v18.16b + ld1 {v16.4s},[x7],#16 + subs w6,w6,#2 + aesd v0.16b,v17.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v17.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v17.16b + aesimc v18.16b,v18.16b + ld1 {v17.4s},[x7],#16 + b.gt .Loop3x_cbc_dec + + aesd v0.16b,v16.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v16.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v16.16b + aesimc v18.16b,v18.16b + eor v4.16b,v6.16b,v7.16b + subs x2,x2,#0x30 + eor v5.16b,v2.16b,v7.16b + csel x6,x2,x6,lo // x6, w6, is zero at this point + aesd v0.16b,v17.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v17.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v17.16b + aesimc v18.16b,v18.16b + eor v17.16b,v3.16b,v7.16b + add x0,x0,x6 // x0 is adjusted in such way that + // at exit from the loop v1.16b-v18.16b + // are loaded with last "words" + orr v6.16b,v19.16b,v19.16b + mov x7,x3 + aesd v0.16b,v20.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v20.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v20.16b + aesimc v18.16b,v18.16b + ld1 {v2.16b},[x0],#16 + aesd v0.16b,v21.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v21.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v21.16b + aesimc v18.16b,v18.16b + ld1 {v3.16b},[x0],#16 + aesd v0.16b,v22.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v22.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v22.16b + aesimc v18.16b,v18.16b + ld1 {v19.16b},[x0],#16 + aesd v0.16b,v23.16b + aesd v1.16b,v23.16b + aesd v18.16b,v23.16b + ld1 {v16.4s},[x7],#16 // re-pre-load rndkey[0] + add w6,w5,#2 + eor v4.16b,v4.16b,v0.16b + eor v5.16b,v5.16b,v1.16b + eor v18.16b,v18.16b,v17.16b + ld1 {v17.4s},[x7],#16 // re-pre-load rndkey[1] + st1 {v4.16b},[x1],#16 + orr v0.16b,v2.16b,v2.16b + st1 {v5.16b},[x1],#16 + orr v1.16b,v3.16b,v3.16b + st1 {v18.16b},[x1],#16 + orr v18.16b,v19.16b,v19.16b + b.hs .Loop3x_cbc_dec + + cmn x2,#0x30 + b.eq .Lcbc_done + nop + +.Lcbc_dec_tail: + aesd v1.16b,v16.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v16.16b + aesimc v18.16b,v18.16b + ld1 {v16.4s},[x7],#16 + subs w6,w6,#2 + aesd v1.16b,v17.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v17.16b + aesimc v18.16b,v18.16b + ld1 {v17.4s},[x7],#16 + b.gt .Lcbc_dec_tail + + aesd v1.16b,v16.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v16.16b + aesimc v18.16b,v18.16b + aesd v1.16b,v17.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v17.16b + aesimc v18.16b,v18.16b + aesd v1.16b,v20.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v20.16b + aesimc v18.16b,v18.16b + cmn x2,#0x20 + aesd v1.16b,v21.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v21.16b + aesimc v18.16b,v18.16b + eor v5.16b,v6.16b,v7.16b + aesd v1.16b,v22.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v22.16b + aesimc v18.16b,v18.16b + eor v17.16b,v3.16b,v7.16b + aesd v1.16b,v23.16b + aesd v18.16b,v23.16b + b.eq .Lcbc_dec_one + eor v5.16b,v5.16b,v1.16b + eor v17.16b,v17.16b,v18.16b + orr v6.16b,v19.16b,v19.16b + st1 {v5.16b},[x1],#16 + st1 {v17.16b},[x1],#16 + b .Lcbc_done + +.Lcbc_dec_one: + eor v5.16b,v5.16b,v18.16b + orr v6.16b,v19.16b,v19.16b + st1 {v5.16b},[x1],#16 + +.Lcbc_done: + st1 {v6.16b},[x4] +.Lcbc_abort: + ldr x29,[sp],#16 + ret +.size aes_v8_cbc_encrypt,.-aes_v8_cbc_encrypt +.globl aes_v8_ctr32_encrypt_blocks +.type aes_v8_ctr32_encrypt_blocks,%function +.align 5 +aes_v8_ctr32_encrypt_blocks: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + ldr w5,[x3,#240] + + ldr w8, [x4, #12] +#ifdef __ARMEB__ + ld1 {v0.16b},[x4] +#else + ld1 {v0.4s},[x4] +#endif + ld1 {v16.4s,v17.4s},[x3] // load key schedule... + sub w5,w5,#4 + mov x12,#16 + cmp x2,#2 + add x7,x3,x5,lsl#4 // pointer to last 5 round keys + sub w5,w5,#2 + ld1 {v20.4s,v21.4s},[x7],#32 + ld1 {v22.4s,v23.4s},[x7],#32 + ld1 {v7.4s},[x7] + add x7,x3,#32 + mov w6,w5 + csel x12,xzr,x12,lo +#ifndef __ARMEB__ + rev w8, w8 +#endif + orr v1.16b,v0.16b,v0.16b + add w10, w8, #1 + orr v18.16b,v0.16b,v0.16b + add w8, w8, #2 + orr v6.16b,v0.16b,v0.16b + rev w10, w10 + mov v1.s[3],w10 + b.ls .Lctr32_tail + rev w12, w8 + sub x2,x2,#3 // bias + mov v18.s[3],w12 + b .Loop3x_ctr32 + +.align 4 +.Loop3x_ctr32: + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + aese v1.16b,v16.16b + aesmc v1.16b,v1.16b + aese v18.16b,v16.16b + aesmc v18.16b,v18.16b + ld1 {v16.4s},[x7],#16 + subs w6,w6,#2 + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + aese v1.16b,v17.16b + aesmc v1.16b,v1.16b + aese v18.16b,v17.16b + aesmc v18.16b,v18.16b + ld1 {v17.4s},[x7],#16 + b.gt .Loop3x_ctr32 + + aese v0.16b,v16.16b + aesmc v4.16b,v0.16b + aese v1.16b,v16.16b + aesmc v5.16b,v1.16b + ld1 {v2.16b},[x0],#16 + orr v0.16b,v6.16b,v6.16b + aese v18.16b,v16.16b + aesmc v18.16b,v18.16b + ld1 {v3.16b},[x0],#16 + orr v1.16b,v6.16b,v6.16b + aese v4.16b,v17.16b + aesmc v4.16b,v4.16b + aese v5.16b,v17.16b + aesmc v5.16b,v5.16b + ld1 {v19.16b},[x0],#16 + mov x7,x3 + aese v18.16b,v17.16b + aesmc v17.16b,v18.16b + orr v18.16b,v6.16b,v6.16b + add w9,w8,#1 + aese v4.16b,v20.16b + aesmc v4.16b,v4.16b + aese v5.16b,v20.16b + aesmc v5.16b,v5.16b + eor v2.16b,v2.16b,v7.16b + add w10,w8,#2 + aese v17.16b,v20.16b + aesmc v17.16b,v17.16b + eor v3.16b,v3.16b,v7.16b + add w8,w8,#3 + aese v4.16b,v21.16b + aesmc v4.16b,v4.16b + aese v5.16b,v21.16b + aesmc v5.16b,v5.16b + eor v19.16b,v19.16b,v7.16b + rev w9,w9 + aese v17.16b,v21.16b + aesmc v17.16b,v17.16b + mov v0.s[3], w9 + rev w10,w10 + aese v4.16b,v22.16b + aesmc v4.16b,v4.16b + aese v5.16b,v22.16b + aesmc v5.16b,v5.16b + mov v1.s[3], w10 + rev w12,w8 + aese v17.16b,v22.16b + aesmc v17.16b,v17.16b + mov v18.s[3], w12 + subs x2,x2,#3 + aese v4.16b,v23.16b + aese v5.16b,v23.16b + aese v17.16b,v23.16b + + eor v2.16b,v2.16b,v4.16b + ld1 {v16.4s},[x7],#16 // re-pre-load rndkey[0] + st1 {v2.16b},[x1],#16 + eor v3.16b,v3.16b,v5.16b + mov w6,w5 + st1 {v3.16b},[x1],#16 + eor v19.16b,v19.16b,v17.16b + ld1 {v17.4s},[x7],#16 // re-pre-load rndkey[1] + st1 {v19.16b},[x1],#16 + b.hs .Loop3x_ctr32 + + adds x2,x2,#3 + b.eq .Lctr32_done + cmp x2,#1 + mov x12,#16 + csel x12,xzr,x12,eq + +.Lctr32_tail: + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + aese v1.16b,v16.16b + aesmc v1.16b,v1.16b + ld1 {v16.4s},[x7],#16 + subs w6,w6,#2 + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + aese v1.16b,v17.16b + aesmc v1.16b,v1.16b + ld1 {v17.4s},[x7],#16 + b.gt .Lctr32_tail + + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + aese v1.16b,v16.16b + aesmc v1.16b,v1.16b + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + aese v1.16b,v17.16b + aesmc v1.16b,v1.16b + ld1 {v2.16b},[x0],x12 + aese v0.16b,v20.16b + aesmc v0.16b,v0.16b + aese v1.16b,v20.16b + aesmc v1.16b,v1.16b + ld1 {v3.16b},[x0] + aese v0.16b,v21.16b + aesmc v0.16b,v0.16b + aese v1.16b,v21.16b + aesmc v1.16b,v1.16b + eor v2.16b,v2.16b,v7.16b + aese v0.16b,v22.16b + aesmc v0.16b,v0.16b + aese v1.16b,v22.16b + aesmc v1.16b,v1.16b + eor v3.16b,v3.16b,v7.16b + aese v0.16b,v23.16b + aese v1.16b,v23.16b + + cmp x2,#1 + eor v2.16b,v2.16b,v0.16b + eor v3.16b,v3.16b,v1.16b + st1 {v2.16b},[x1],#16 + b.eq .Lctr32_done + st1 {v3.16b},[x1] + +.Lctr32_done: + ldr x29,[sp],#16 + ret +.size aes_v8_ctr32_encrypt_blocks,.-aes_v8_ctr32_encrypt_blocks +#endif diff --git a/vere/ext/openssl/gen/linux-aarch64/crypto/aes/vpaes-armv8.S b/vere/ext/openssl/gen/linux-aarch64/crypto/aes/vpaes-armv8.S new file mode 100644 index 0000000..5d1752c --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/crypto/aes/vpaes-armv8.S @@ -0,0 +1,1196 @@ +.text + +.type _vpaes_consts,%object +.align 7 // totally strategic alignment +_vpaes_consts: +.Lk_mc_forward: // mc_forward +.quad 0x0407060500030201, 0x0C0F0E0D080B0A09 +.quad 0x080B0A0904070605, 0x000302010C0F0E0D +.quad 0x0C0F0E0D080B0A09, 0x0407060500030201 +.quad 0x000302010C0F0E0D, 0x080B0A0904070605 +.Lk_mc_backward: // mc_backward +.quad 0x0605040702010003, 0x0E0D0C0F0A09080B +.quad 0x020100030E0D0C0F, 0x0A09080B06050407 +.quad 0x0E0D0C0F0A09080B, 0x0605040702010003 +.quad 0x0A09080B06050407, 0x020100030E0D0C0F +.Lk_sr: // sr +.quad 0x0706050403020100, 0x0F0E0D0C0B0A0908 +.quad 0x030E09040F0A0500, 0x0B06010C07020D08 +.quad 0x0F060D040B020900, 0x070E050C030A0108 +.quad 0x0B0E0104070A0D00, 0x0306090C0F020508 + +// +// "Hot" constants +// +.Lk_inv: // inv, inva +.quad 0x0E05060F0D080180, 0x040703090A0B0C02 +.quad 0x01040A060F0B0780, 0x030D0E0C02050809 +.Lk_ipt: // input transform (lo, hi) +.quad 0xC2B2E8985A2A7000, 0xCABAE09052227808 +.quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81 +.Lk_sbo: // sbou, sbot +.quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878 +.quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA +.Lk_sb1: // sb1u, sb1t +.quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF +.quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544 +.Lk_sb2: // sb2u, sb2t +.quad 0x69EB88400AE12900, 0xC2A163C8AB82234A +.quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD + +// +// Decryption stuff +// +.Lk_dipt: // decryption input transform +.quad 0x0F505B040B545F00, 0x154A411E114E451A +.quad 0x86E383E660056500, 0x12771772F491F194 +.Lk_dsbo: // decryption sbox final output +.quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D +.quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C +.Lk_dsb9: // decryption sbox output *9*u, *9*t +.quad 0x851C03539A86D600, 0xCAD51F504F994CC9 +.quad 0xC03B1789ECD74900, 0x725E2C9EB2FBA565 +.Lk_dsbd: // decryption sbox output *D*u, *D*t +.quad 0x7D57CCDFE6B1A200, 0xF56E9B13882A4439 +.quad 0x3CE2FAF724C6CB00, 0x2931180D15DEEFD3 +.Lk_dsbb: // decryption sbox output *B*u, *B*t +.quad 0xD022649296B44200, 0x602646F6B0F2D404 +.quad 0xC19498A6CD596700, 0xF3FF0C3E3255AA6B +.Lk_dsbe: // decryption sbox output *E*u, *E*t +.quad 0x46F2929626D4D000, 0x2242600464B4F6B0 +.quad 0x0C55A6CDFFAAC100, 0x9467F36B98593E32 + +// +// Key schedule constants +// +.Lk_dksd: // decryption key schedule: invskew x*D +.quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9 +.quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E +.Lk_dksb: // decryption key schedule: invskew x*B +.quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99 +.quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8 +.Lk_dkse: // decryption key schedule: invskew x*E + 0x63 +.quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086 +.quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487 +.Lk_dks9: // decryption key schedule: invskew x*9 +.quad 0xB6116FC87ED9A700, 0x4AED933482255BFC +.quad 0x4576516227143300, 0x8BB89FACE9DAFDCE + +.Lk_rcon: // rcon +.quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81 + +.Lk_opt: // output transform +.quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808 +.quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0 +.Lk_deskew: // deskew tables: inverts the sbox's "skew" +.quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A +.quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77 + +.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,65,82,77,118,56,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 +.align 2 +.size _vpaes_consts,.-_vpaes_consts +.align 6 +## +## _aes_preheat +## +## Fills register %r10 -> .aes_consts (so you can -fPIC) +## and %xmm9-%xmm15 as specified below. +## +.type _vpaes_encrypt_preheat,%function +.align 4 +_vpaes_encrypt_preheat: + adr x10, .Lk_inv + movi v17.16b, #0x0f + ld1 {v18.2d,v19.2d}, [x10],#32 // .Lk_inv + ld1 {v20.2d,v21.2d,v22.2d,v23.2d}, [x10],#64 // .Lk_ipt, .Lk_sbo + ld1 {v24.2d,v25.2d,v26.2d,v27.2d}, [x10] // .Lk_sb1, .Lk_sb2 + ret +.size _vpaes_encrypt_preheat,.-_vpaes_encrypt_preheat + +## +## _aes_encrypt_core +## +## AES-encrypt %xmm0. +## +## Inputs: +## %xmm0 = input +## %xmm9-%xmm15 as in _vpaes_preheat +## (%rdx) = scheduled keys +## +## Output in %xmm0 +## Clobbers %xmm1-%xmm5, %r9, %r10, %r11, %rax +## Preserves %xmm6 - %xmm8 so you get some local vectors +## +## +.type _vpaes_encrypt_core,%function +.align 4 +_vpaes_encrypt_core: + mov x9, x2 + ldr w8, [x2,#240] // pull rounds + adr x11, .Lk_mc_forward+16 + // vmovdqa .Lk_ipt(%rip), %xmm2 # iptlo + ld1 {v16.2d}, [x9], #16 // vmovdqu (%r9), %xmm5 # round0 key + and v1.16b, v7.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v7.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + tbl v1.16b, {v20.16b}, v1.16b // vpshufb %xmm1, %xmm2, %xmm1 + // vmovdqa .Lk_ipt+16(%rip), %xmm3 # ipthi + tbl v2.16b, {v21.16b}, v0.16b // vpshufb %xmm0, %xmm3, %xmm2 + eor v0.16b, v1.16b, v16.16b // vpxor %xmm5, %xmm1, %xmm0 + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + b .Lenc_entry + +.align 4 +.Lenc_loop: + // middle of middle round + add x10, x11, #0x40 + tbl v4.16b, {v25.16b}, v2.16b // vpshufb %xmm2, %xmm13, %xmm4 # 4 = sb1u + ld1 {v1.2d}, [x11], #16 // vmovdqa -0x40(%r11,%r10), %xmm1 # .Lk_mc_forward[] + tbl v0.16b, {v24.16b}, v3.16b // vpshufb %xmm3, %xmm12, %xmm0 # 0 = sb1t + eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k + tbl v5.16b, {v27.16b}, v2.16b // vpshufb %xmm2, %xmm15, %xmm5 # 4 = sb2u + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A + tbl v2.16b, {v26.16b}, v3.16b // vpshufb %xmm3, %xmm14, %xmm2 # 2 = sb2t + ld1 {v4.2d}, [x10] // vmovdqa (%r11,%r10), %xmm4 # .Lk_mc_backward[] + tbl v3.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm3 # 0 = B + eor v2.16b, v2.16b, v5.16b // vpxor %xmm5, %xmm2, %xmm2 # 2 = 2A + tbl v0.16b, {v0.16b}, v4.16b // vpshufb %xmm4, %xmm0, %xmm0 # 3 = D + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 0 = 2A+B + tbl v4.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm4 # 0 = 2B+C + eor v0.16b, v0.16b, v3.16b // vpxor %xmm3, %xmm0, %xmm0 # 3 = 2A+B+D + and x11, x11, #~(1<<6) // and $0x30, %r11 # ... mod 4 + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = 2A+3B+C+D + sub w8, w8, #1 // nr-- + +.Lenc_entry: + // top of round + and v1.16b, v0.16b, v17.16b // vpand %xmm0, %xmm9, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + tbl v5.16b, {v19.16b}, v1.16b // vpshufb %xmm1, %xmm11, %xmm5 # 2 = a/k + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + tbl v3.16b, {v18.16b}, v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + tbl v4.16b, {v18.16b}, v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + eor v3.16b, v3.16b, v5.16b // vpxor %xmm5, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + eor v4.16b, v4.16b, v5.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + tbl v2.16b, {v18.16b}, v3.16b // vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak + tbl v3.16b, {v18.16b}, v4.16b // vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak + eor v2.16b, v2.16b, v1.16b // vpxor %xmm1, %xmm2, %xmm2 # 2 = io + eor v3.16b, v3.16b, v0.16b // vpxor %xmm0, %xmm3, %xmm3 # 3 = jo + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm5 + cbnz w8, .Lenc_loop + + // middle of last round + add x10, x11, #0x80 + // vmovdqa -0x60(%r10), %xmm4 # 3 : sbou .Lk_sbo + // vmovdqa -0x50(%r10), %xmm0 # 0 : sbot .Lk_sbo+16 + tbl v4.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou + ld1 {v1.2d}, [x10] // vmovdqa 0x40(%r11,%r10), %xmm1 # .Lk_sr[] + tbl v0.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm0, %xmm0 # 0 = sb1t + eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A + tbl v0.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm0 + ret +.size _vpaes_encrypt_core,.-_vpaes_encrypt_core + +.globl vpaes_encrypt +.type vpaes_encrypt,%function +.align 4 +vpaes_encrypt: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v7.16b}, [x0] + bl _vpaes_encrypt_preheat + bl _vpaes_encrypt_core + st1 {v0.16b}, [x1] + + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size vpaes_encrypt,.-vpaes_encrypt + +.type _vpaes_encrypt_2x,%function +.align 4 +_vpaes_encrypt_2x: + mov x9, x2 + ldr w8, [x2,#240] // pull rounds + adr x11, .Lk_mc_forward+16 + // vmovdqa .Lk_ipt(%rip), %xmm2 # iptlo + ld1 {v16.2d}, [x9], #16 // vmovdqu (%r9), %xmm5 # round0 key + and v1.16b, v14.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v14.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + and v9.16b, v15.16b, v17.16b + ushr v8.16b, v15.16b, #4 + tbl v1.16b, {v20.16b}, v1.16b // vpshufb %xmm1, %xmm2, %xmm1 + tbl v9.16b, {v20.16b}, v9.16b + // vmovdqa .Lk_ipt+16(%rip), %xmm3 # ipthi + tbl v2.16b, {v21.16b}, v0.16b // vpshufb %xmm0, %xmm3, %xmm2 + tbl v10.16b, {v21.16b}, v8.16b + eor v0.16b, v1.16b, v16.16b // vpxor %xmm5, %xmm1, %xmm0 + eor v8.16b, v9.16b, v16.16b + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + eor v8.16b, v8.16b, v10.16b + b .Lenc_2x_entry + +.align 4 +.Lenc_2x_loop: + // middle of middle round + add x10, x11, #0x40 + tbl v4.16b, {v25.16b}, v2.16b // vpshufb %xmm2, %xmm13, %xmm4 # 4 = sb1u + tbl v12.16b, {v25.16b}, v10.16b + ld1 {v1.2d}, [x11], #16 // vmovdqa -0x40(%r11,%r10), %xmm1 # .Lk_mc_forward[] + tbl v0.16b, {v24.16b}, v3.16b // vpshufb %xmm3, %xmm12, %xmm0 # 0 = sb1t + tbl v8.16b, {v24.16b}, v11.16b + eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k + eor v12.16b, v12.16b, v16.16b + tbl v5.16b, {v27.16b}, v2.16b // vpshufb %xmm2, %xmm15, %xmm5 # 4 = sb2u + tbl v13.16b, {v27.16b}, v10.16b + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A + eor v8.16b, v8.16b, v12.16b + tbl v2.16b, {v26.16b}, v3.16b // vpshufb %xmm3, %xmm14, %xmm2 # 2 = sb2t + tbl v10.16b, {v26.16b}, v11.16b + ld1 {v4.2d}, [x10] // vmovdqa (%r11,%r10), %xmm4 # .Lk_mc_backward[] + tbl v3.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm3 # 0 = B + tbl v11.16b, {v8.16b}, v1.16b + eor v2.16b, v2.16b, v5.16b // vpxor %xmm5, %xmm2, %xmm2 # 2 = 2A + eor v10.16b, v10.16b, v13.16b + tbl v0.16b, {v0.16b}, v4.16b // vpshufb %xmm4, %xmm0, %xmm0 # 3 = D + tbl v8.16b, {v8.16b}, v4.16b + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 0 = 2A+B + eor v11.16b, v11.16b, v10.16b + tbl v4.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm4 # 0 = 2B+C + tbl v12.16b, {v11.16b},v1.16b + eor v0.16b, v0.16b, v3.16b // vpxor %xmm3, %xmm0, %xmm0 # 3 = 2A+B+D + eor v8.16b, v8.16b, v11.16b + and x11, x11, #~(1<<6) // and $0x30, %r11 # ... mod 4 + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = 2A+3B+C+D + eor v8.16b, v8.16b, v12.16b + sub w8, w8, #1 // nr-- + +.Lenc_2x_entry: + // top of round + and v1.16b, v0.16b, v17.16b // vpand %xmm0, %xmm9, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + and v9.16b, v8.16b, v17.16b + ushr v8.16b, v8.16b, #4 + tbl v5.16b, {v19.16b},v1.16b // vpshufb %xmm1, %xmm11, %xmm5 # 2 = a/k + tbl v13.16b, {v19.16b},v9.16b + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + eor v9.16b, v9.16b, v8.16b + tbl v3.16b, {v18.16b},v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + tbl v11.16b, {v18.16b},v8.16b + tbl v4.16b, {v18.16b},v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + tbl v12.16b, {v18.16b},v9.16b + eor v3.16b, v3.16b, v5.16b // vpxor %xmm5, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + eor v11.16b, v11.16b, v13.16b + eor v4.16b, v4.16b, v5.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + eor v12.16b, v12.16b, v13.16b + tbl v2.16b, {v18.16b},v3.16b // vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak + tbl v10.16b, {v18.16b},v11.16b + tbl v3.16b, {v18.16b},v4.16b // vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak + tbl v11.16b, {v18.16b},v12.16b + eor v2.16b, v2.16b, v1.16b // vpxor %xmm1, %xmm2, %xmm2 # 2 = io + eor v10.16b, v10.16b, v9.16b + eor v3.16b, v3.16b, v0.16b // vpxor %xmm0, %xmm3, %xmm3 # 3 = jo + eor v11.16b, v11.16b, v8.16b + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm5 + cbnz w8, .Lenc_2x_loop + + // middle of last round + add x10, x11, #0x80 + // vmovdqa -0x60(%r10), %xmm4 # 3 : sbou .Lk_sbo + // vmovdqa -0x50(%r10), %xmm0 # 0 : sbot .Lk_sbo+16 + tbl v4.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou + tbl v12.16b, {v22.16b}, v10.16b + ld1 {v1.2d}, [x10] // vmovdqa 0x40(%r11,%r10), %xmm1 # .Lk_sr[] + tbl v0.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm0, %xmm0 # 0 = sb1t + tbl v8.16b, {v23.16b}, v11.16b + eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k + eor v12.16b, v12.16b, v16.16b + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A + eor v8.16b, v8.16b, v12.16b + tbl v0.16b, {v0.16b},v1.16b // vpshufb %xmm1, %xmm0, %xmm0 + tbl v1.16b, {v8.16b},v1.16b + ret +.size _vpaes_encrypt_2x,.-_vpaes_encrypt_2x + +.type _vpaes_decrypt_preheat,%function +.align 4 +_vpaes_decrypt_preheat: + adr x10, .Lk_inv + movi v17.16b, #0x0f + adr x11, .Lk_dipt + ld1 {v18.2d,v19.2d}, [x10],#32 // .Lk_inv + ld1 {v20.2d,v21.2d,v22.2d,v23.2d}, [x11],#64 // .Lk_dipt, .Lk_dsbo + ld1 {v24.2d,v25.2d,v26.2d,v27.2d}, [x11],#64 // .Lk_dsb9, .Lk_dsbd + ld1 {v28.2d,v29.2d,v30.2d,v31.2d}, [x11] // .Lk_dsbb, .Lk_dsbe + ret +.size _vpaes_decrypt_preheat,.-_vpaes_decrypt_preheat + +## +## Decryption core +## +## Same API as encryption core. +## +.type _vpaes_decrypt_core,%function +.align 4 +_vpaes_decrypt_core: + mov x9, x2 + ldr w8, [x2,#240] // pull rounds + + // vmovdqa .Lk_dipt(%rip), %xmm2 # iptlo + lsl x11, x8, #4 // mov %rax, %r11; shl $4, %r11 + eor x11, x11, #0x30 // xor $0x30, %r11 + adr x10, .Lk_sr + and x11, x11, #0x30 // and $0x30, %r11 + add x11, x11, x10 + adr x10, .Lk_mc_forward+48 + + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm4 # round0 key + and v1.16b, v7.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v7.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + tbl v2.16b, {v20.16b}, v1.16b // vpshufb %xmm1, %xmm2, %xmm2 + ld1 {v5.2d}, [x10] // vmovdqa .Lk_mc_forward+48(%rip), %xmm5 + // vmovdqa .Lk_dipt+16(%rip), %xmm1 # ipthi + tbl v0.16b, {v21.16b}, v0.16b // vpshufb %xmm0, %xmm1, %xmm0 + eor v2.16b, v2.16b, v16.16b // vpxor %xmm4, %xmm2, %xmm2 + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + b .Ldec_entry + +.align 4 +.Ldec_loop: +// +// Inverse mix columns +// + // vmovdqa -0x20(%r10),%xmm4 # 4 : sb9u + // vmovdqa -0x10(%r10),%xmm1 # 0 : sb9t + tbl v4.16b, {v24.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sb9u + tbl v1.16b, {v25.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sb9t + eor v0.16b, v4.16b, v16.16b // vpxor %xmm4, %xmm0, %xmm0 + // vmovdqa 0x00(%r10),%xmm4 # 4 : sbdu + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + // vmovdqa 0x10(%r10),%xmm1 # 0 : sbdt + + tbl v4.16b, {v26.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbdu + tbl v0.16b, {v0.16b}, v5.16b // vpshufb %xmm5, %xmm0, %xmm0 # MC ch + tbl v1.16b, {v27.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sbdt + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 4 = ch + // vmovdqa 0x20(%r10), %xmm4 # 4 : sbbu + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + // vmovdqa 0x30(%r10), %xmm1 # 0 : sbbt + + tbl v4.16b, {v28.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbbu + tbl v0.16b, {v0.16b}, v5.16b // vpshufb %xmm5, %xmm0, %xmm0 # MC ch + tbl v1.16b, {v29.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sbbt + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 4 = ch + // vmovdqa 0x40(%r10), %xmm4 # 4 : sbeu + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + // vmovdqa 0x50(%r10), %xmm1 # 0 : sbet + + tbl v4.16b, {v30.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbeu + tbl v0.16b, {v0.16b}, v5.16b // vpshufb %xmm5, %xmm0, %xmm0 # MC ch + tbl v1.16b, {v31.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sbet + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 4 = ch + ext v5.16b, v5.16b, v5.16b, #12 // vpalignr $12, %xmm5, %xmm5, %xmm5 + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + sub w8, w8, #1 // sub $1,%rax # nr-- + +.Ldec_entry: + // top of round + and v1.16b, v0.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + tbl v2.16b, {v19.16b}, v1.16b // vpshufb %xmm1, %xmm11, %xmm2 # 2 = a/k + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + tbl v3.16b, {v18.16b}, v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + tbl v4.16b, {v18.16b}, v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + eor v4.16b, v4.16b, v2.16b // vpxor %xmm2, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + tbl v2.16b, {v18.16b}, v3.16b // vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak + tbl v3.16b, {v18.16b}, v4.16b // vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak + eor v2.16b, v2.16b, v1.16b // vpxor %xmm1, %xmm2, %xmm2 # 2 = io + eor v3.16b, v3.16b, v0.16b // vpxor %xmm0, %xmm3, %xmm3 # 3 = jo + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm0 + cbnz w8, .Ldec_loop + + // middle of last round + // vmovdqa 0x60(%r10), %xmm4 # 3 : sbou + tbl v4.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou + // vmovdqa 0x70(%r10), %xmm1 # 0 : sbot + ld1 {v2.2d}, [x11] // vmovdqa -0x160(%r11), %xmm2 # .Lk_sr-.Lk_dsbd=-0x160 + tbl v1.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sb1t + eor v4.16b, v4.16b, v16.16b // vpxor %xmm0, %xmm4, %xmm4 # 4 = sb1u + k + eor v0.16b, v1.16b, v4.16b // vpxor %xmm4, %xmm1, %xmm0 # 0 = A + tbl v0.16b, {v0.16b}, v2.16b // vpshufb %xmm2, %xmm0, %xmm0 + ret +.size _vpaes_decrypt_core,.-_vpaes_decrypt_core + +.globl vpaes_decrypt +.type vpaes_decrypt,%function +.align 4 +vpaes_decrypt: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v7.16b}, [x0] + bl _vpaes_decrypt_preheat + bl _vpaes_decrypt_core + st1 {v0.16b}, [x1] + + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size vpaes_decrypt,.-vpaes_decrypt + +// v14-v15 input, v0-v1 output +.type _vpaes_decrypt_2x,%function +.align 4 +_vpaes_decrypt_2x: + mov x9, x2 + ldr w8, [x2,#240] // pull rounds + + // vmovdqa .Lk_dipt(%rip), %xmm2 # iptlo + lsl x11, x8, #4 // mov %rax, %r11; shl $4, %r11 + eor x11, x11, #0x30 // xor $0x30, %r11 + adr x10, .Lk_sr + and x11, x11, #0x30 // and $0x30, %r11 + add x11, x11, x10 + adr x10, .Lk_mc_forward+48 + + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm4 # round0 key + and v1.16b, v14.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v14.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + and v9.16b, v15.16b, v17.16b + ushr v8.16b, v15.16b, #4 + tbl v2.16b, {v20.16b},v1.16b // vpshufb %xmm1, %xmm2, %xmm2 + tbl v10.16b, {v20.16b},v9.16b + ld1 {v5.2d}, [x10] // vmovdqa .Lk_mc_forward+48(%rip), %xmm5 + // vmovdqa .Lk_dipt+16(%rip), %xmm1 # ipthi + tbl v0.16b, {v21.16b},v0.16b // vpshufb %xmm0, %xmm1, %xmm0 + tbl v8.16b, {v21.16b},v8.16b + eor v2.16b, v2.16b, v16.16b // vpxor %xmm4, %xmm2, %xmm2 + eor v10.16b, v10.16b, v16.16b + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + eor v8.16b, v8.16b, v10.16b + b .Ldec_2x_entry + +.align 4 +.Ldec_2x_loop: +// +// Inverse mix columns +// + // vmovdqa -0x20(%r10),%xmm4 # 4 : sb9u + // vmovdqa -0x10(%r10),%xmm1 # 0 : sb9t + tbl v4.16b, {v24.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sb9u + tbl v12.16b, {v24.16b}, v10.16b + tbl v1.16b, {v25.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sb9t + tbl v9.16b, {v25.16b}, v11.16b + eor v0.16b, v4.16b, v16.16b // vpxor %xmm4, %xmm0, %xmm0 + eor v8.16b, v12.16b, v16.16b + // vmovdqa 0x00(%r10),%xmm4 # 4 : sbdu + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + eor v8.16b, v8.16b, v9.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + // vmovdqa 0x10(%r10),%xmm1 # 0 : sbdt + + tbl v4.16b, {v26.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbdu + tbl v12.16b, {v26.16b}, v10.16b + tbl v0.16b, {v0.16b},v5.16b // vpshufb %xmm5, %xmm0, %xmm0 # MC ch + tbl v8.16b, {v8.16b},v5.16b + tbl v1.16b, {v27.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sbdt + tbl v9.16b, {v27.16b}, v11.16b + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 4 = ch + eor v8.16b, v8.16b, v12.16b + // vmovdqa 0x20(%r10), %xmm4 # 4 : sbbu + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + eor v8.16b, v8.16b, v9.16b + // vmovdqa 0x30(%r10), %xmm1 # 0 : sbbt + + tbl v4.16b, {v28.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbbu + tbl v12.16b, {v28.16b}, v10.16b + tbl v0.16b, {v0.16b},v5.16b // vpshufb %xmm5, %xmm0, %xmm0 # MC ch + tbl v8.16b, {v8.16b},v5.16b + tbl v1.16b, {v29.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sbbt + tbl v9.16b, {v29.16b}, v11.16b + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 4 = ch + eor v8.16b, v8.16b, v12.16b + // vmovdqa 0x40(%r10), %xmm4 # 4 : sbeu + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + eor v8.16b, v8.16b, v9.16b + // vmovdqa 0x50(%r10), %xmm1 # 0 : sbet + + tbl v4.16b, {v30.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbeu + tbl v12.16b, {v30.16b}, v10.16b + tbl v0.16b, {v0.16b},v5.16b // vpshufb %xmm5, %xmm0, %xmm0 # MC ch + tbl v8.16b, {v8.16b},v5.16b + tbl v1.16b, {v31.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sbet + tbl v9.16b, {v31.16b}, v11.16b + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 4 = ch + eor v8.16b, v8.16b, v12.16b + ext v5.16b, v5.16b, v5.16b, #12 // vpalignr $12, %xmm5, %xmm5, %xmm5 + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + eor v8.16b, v8.16b, v9.16b + sub w8, w8, #1 // sub $1,%rax # nr-- + +.Ldec_2x_entry: + // top of round + and v1.16b, v0.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + and v9.16b, v8.16b, v17.16b + ushr v8.16b, v8.16b, #4 + tbl v2.16b, {v19.16b},v1.16b // vpshufb %xmm1, %xmm11, %xmm2 # 2 = a/k + tbl v10.16b, {v19.16b},v9.16b + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + eor v9.16b, v9.16b, v8.16b + tbl v3.16b, {v18.16b},v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + tbl v11.16b, {v18.16b},v8.16b + tbl v4.16b, {v18.16b},v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + tbl v12.16b, {v18.16b},v9.16b + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + eor v11.16b, v11.16b, v10.16b + eor v4.16b, v4.16b, v2.16b // vpxor %xmm2, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + eor v12.16b, v12.16b, v10.16b + tbl v2.16b, {v18.16b},v3.16b // vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak + tbl v10.16b, {v18.16b},v11.16b + tbl v3.16b, {v18.16b},v4.16b // vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak + tbl v11.16b, {v18.16b},v12.16b + eor v2.16b, v2.16b, v1.16b // vpxor %xmm1, %xmm2, %xmm2 # 2 = io + eor v10.16b, v10.16b, v9.16b + eor v3.16b, v3.16b, v0.16b // vpxor %xmm0, %xmm3, %xmm3 # 3 = jo + eor v11.16b, v11.16b, v8.16b + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm0 + cbnz w8, .Ldec_2x_loop + + // middle of last round + // vmovdqa 0x60(%r10), %xmm4 # 3 : sbou + tbl v4.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou + tbl v12.16b, {v22.16b}, v10.16b + // vmovdqa 0x70(%r10), %xmm1 # 0 : sbot + tbl v1.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sb1t + tbl v9.16b, {v23.16b}, v11.16b + ld1 {v2.2d}, [x11] // vmovdqa -0x160(%r11), %xmm2 # .Lk_sr-.Lk_dsbd=-0x160 + eor v4.16b, v4.16b, v16.16b // vpxor %xmm0, %xmm4, %xmm4 # 4 = sb1u + k + eor v12.16b, v12.16b, v16.16b + eor v0.16b, v1.16b, v4.16b // vpxor %xmm4, %xmm1, %xmm0 # 0 = A + eor v8.16b, v9.16b, v12.16b + tbl v0.16b, {v0.16b},v2.16b // vpshufb %xmm2, %xmm0, %xmm0 + tbl v1.16b, {v8.16b},v2.16b + ret +.size _vpaes_decrypt_2x,.-_vpaes_decrypt_2x +######################################################## +## ## +## AES key schedule ## +## ## +######################################################## +.type _vpaes_key_preheat,%function +.align 4 +_vpaes_key_preheat: + adr x10, .Lk_inv + movi v16.16b, #0x5b // .Lk_s63 + adr x11, .Lk_sb1 + movi v17.16b, #0x0f // .Lk_s0F + ld1 {v18.2d,v19.2d,v20.2d,v21.2d}, [x10] // .Lk_inv, .Lk_ipt + adr x10, .Lk_dksd + ld1 {v22.2d,v23.2d}, [x11] // .Lk_sb1 + adr x11, .Lk_mc_forward + ld1 {v24.2d,v25.2d,v26.2d,v27.2d}, [x10],#64 // .Lk_dksd, .Lk_dksb + ld1 {v28.2d,v29.2d,v30.2d,v31.2d}, [x10],#64 // .Lk_dkse, .Lk_dks9 + ld1 {v8.2d}, [x10] // .Lk_rcon + ld1 {v9.2d}, [x11] // .Lk_mc_forward[0] + ret +.size _vpaes_key_preheat,.-_vpaes_key_preheat + +.type _vpaes_schedule_core,%function +.align 4 +_vpaes_schedule_core: +.inst 0xd503233f // paciasp + stp x29, x30, [sp,#-16]! + add x29,sp,#0 + + bl _vpaes_key_preheat // load the tables + + ld1 {v0.16b}, [x0],#16 // vmovdqu (%rdi), %xmm0 # load key (unaligned) + + // input transform + mov v3.16b, v0.16b // vmovdqa %xmm0, %xmm3 + bl _vpaes_schedule_transform + mov v7.16b, v0.16b // vmovdqa %xmm0, %xmm7 + + adr x10, .Lk_sr // lea .Lk_sr(%rip),%r10 + add x8, x8, x10 + cbnz w3, .Lschedule_am_decrypting + + // encrypting, output zeroth round key after transform + st1 {v0.2d}, [x2] // vmovdqu %xmm0, (%rdx) + b .Lschedule_go + +.Lschedule_am_decrypting: + // decrypting, output zeroth round key after shiftrows + ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10), %xmm1 + tbl v3.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 + st1 {v3.2d}, [x2] // vmovdqu %xmm3, (%rdx) + eor x8, x8, #0x30 // xor $0x30, %r8 + +.Lschedule_go: + cmp w1, #192 // cmp $192, %esi + b.hi .Lschedule_256 + b.eq .Lschedule_192 + // 128: fall though + +## +## .schedule_128 +## +## 128-bit specific part of key schedule. +## +## This schedule is really simple, because all its parts +## are accomplished by the subroutines. +## +.Lschedule_128: + mov x0, #10 // mov $10, %esi + +.Loop_schedule_128: + sub x0, x0, #1 // dec %esi + bl _vpaes_schedule_round + cbz x0, .Lschedule_mangle_last + bl _vpaes_schedule_mangle // write output + b .Loop_schedule_128 + +## +## .aes_schedule_192 +## +## 192-bit specific part of key schedule. +## +## The main body of this schedule is the same as the 128-bit +## schedule, but with more smearing. The long, high side is +## stored in %xmm7 as before, and the short, low side is in +## the high bits of %xmm6. +## +## This schedule is somewhat nastier, however, because each +## round produces 192 bits of key material, or 1.5 round keys. +## Therefore, on each cycle we do 2 rounds and produce 3 round +## keys. +## +.align 4 +.Lschedule_192: + sub x0, x0, #8 + ld1 {v0.16b}, [x0] // vmovdqu 8(%rdi),%xmm0 # load key part 2 (very unaligned) + bl _vpaes_schedule_transform // input transform + mov v6.16b, v0.16b // vmovdqa %xmm0, %xmm6 # save short part + eor v4.16b, v4.16b, v4.16b // vpxor %xmm4, %xmm4, %xmm4 # clear 4 + ins v6.d[0], v4.d[0] // vmovhlps %xmm4, %xmm6, %xmm6 # clobber low side with zeros + mov x0, #4 // mov $4, %esi + +.Loop_schedule_192: + sub x0, x0, #1 // dec %esi + bl _vpaes_schedule_round + ext v0.16b, v6.16b, v0.16b, #8 // vpalignr $8,%xmm6,%xmm0,%xmm0 + bl _vpaes_schedule_mangle // save key n + bl _vpaes_schedule_192_smear + bl _vpaes_schedule_mangle // save key n+1 + bl _vpaes_schedule_round + cbz x0, .Lschedule_mangle_last + bl _vpaes_schedule_mangle // save key n+2 + bl _vpaes_schedule_192_smear + b .Loop_schedule_192 + +## +## .aes_schedule_256 +## +## 256-bit specific part of key schedule. +## +## The structure here is very similar to the 128-bit +## schedule, but with an additional "low side" in +## %xmm6. The low side's rounds are the same as the +## high side's, except no rcon and no rotation. +## +.align 4 +.Lschedule_256: + ld1 {v0.16b}, [x0] // vmovdqu 16(%rdi),%xmm0 # load key part 2 (unaligned) + bl _vpaes_schedule_transform // input transform + mov x0, #7 // mov $7, %esi + +.Loop_schedule_256: + sub x0, x0, #1 // dec %esi + bl _vpaes_schedule_mangle // output low result + mov v6.16b, v0.16b // vmovdqa %xmm0, %xmm6 # save cur_lo in xmm6 + + // high round + bl _vpaes_schedule_round + cbz x0, .Lschedule_mangle_last + bl _vpaes_schedule_mangle + + // low round. swap xmm7 and xmm6 + dup v0.4s, v0.s[3] // vpshufd $0xFF, %xmm0, %xmm0 + movi v4.16b, #0 + mov v5.16b, v7.16b // vmovdqa %xmm7, %xmm5 + mov v7.16b, v6.16b // vmovdqa %xmm6, %xmm7 + bl _vpaes_schedule_low_round + mov v7.16b, v5.16b // vmovdqa %xmm5, %xmm7 + + b .Loop_schedule_256 + +## +## .aes_schedule_mangle_last +## +## Mangler for last round of key schedule +## Mangles %xmm0 +## when encrypting, outputs out(%xmm0) ^ 63 +## when decrypting, outputs unskew(%xmm0) +## +## Always called right before return... jumps to cleanup and exits +## +.align 4 +.Lschedule_mangle_last: + // schedule last round key from xmm0 + adr x11, .Lk_deskew // lea .Lk_deskew(%rip),%r11 # prepare to deskew + cbnz w3, .Lschedule_mangle_last_dec + + // encrypting + ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10),%xmm1 + adr x11, .Lk_opt // lea .Lk_opt(%rip), %r11 # prepare to output transform + add x2, x2, #32 // add $32, %rdx + tbl v0.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm0 # output permute + +.Lschedule_mangle_last_dec: + ld1 {v20.2d,v21.2d}, [x11] // reload constants + sub x2, x2, #16 // add $-16, %rdx + eor v0.16b, v0.16b, v16.16b // vpxor .Lk_s63(%rip), %xmm0, %xmm0 + bl _vpaes_schedule_transform // output transform + st1 {v0.2d}, [x2] // vmovdqu %xmm0, (%rdx) # save last key + + // cleanup + eor v0.16b, v0.16b, v0.16b // vpxor %xmm0, %xmm0, %xmm0 + eor v1.16b, v1.16b, v1.16b // vpxor %xmm1, %xmm1, %xmm1 + eor v2.16b, v2.16b, v2.16b // vpxor %xmm2, %xmm2, %xmm2 + eor v3.16b, v3.16b, v3.16b // vpxor %xmm3, %xmm3, %xmm3 + eor v4.16b, v4.16b, v4.16b // vpxor %xmm4, %xmm4, %xmm4 + eor v5.16b, v5.16b, v5.16b // vpxor %xmm5, %xmm5, %xmm5 + eor v6.16b, v6.16b, v6.16b // vpxor %xmm6, %xmm6, %xmm6 + eor v7.16b, v7.16b, v7.16b // vpxor %xmm7, %xmm7, %xmm7 + ldp x29, x30, [sp],#16 +.inst 0xd50323bf // autiasp + ret +.size _vpaes_schedule_core,.-_vpaes_schedule_core + +## +## .aes_schedule_192_smear +## +## Smear the short, low side in the 192-bit key schedule. +## +## Inputs: +## %xmm7: high side, b a x y +## %xmm6: low side, d c 0 0 +## %xmm13: 0 +## +## Outputs: +## %xmm6: b+c+d b+c 0 0 +## %xmm0: b+c+d b+c b a +## +.type _vpaes_schedule_192_smear,%function +.align 4 +_vpaes_schedule_192_smear: + movi v1.16b, #0 + dup v0.4s, v7.s[3] + ins v1.s[3], v6.s[2] // vpshufd $0x80, %xmm6, %xmm1 # d c 0 0 -> c 0 0 0 + ins v0.s[0], v7.s[2] // vpshufd $0xFE, %xmm7, %xmm0 # b a _ _ -> b b b a + eor v6.16b, v6.16b, v1.16b // vpxor %xmm1, %xmm6, %xmm6 # -> c+d c 0 0 + eor v1.16b, v1.16b, v1.16b // vpxor %xmm1, %xmm1, %xmm1 + eor v6.16b, v6.16b, v0.16b // vpxor %xmm0, %xmm6, %xmm6 # -> b+c+d b+c b a + mov v0.16b, v6.16b // vmovdqa %xmm6, %xmm0 + ins v6.d[0], v1.d[0] // vmovhlps %xmm1, %xmm6, %xmm6 # clobber low side with zeros + ret +.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear + +## +## .aes_schedule_round +## +## Runs one main round of the key schedule on %xmm0, %xmm7 +## +## Specifically, runs subbytes on the high dword of %xmm0 +## then rotates it by one byte and xors into the low dword of +## %xmm7. +## +## Adds rcon from low byte of %xmm8, then rotates %xmm8 for +## next rcon. +## +## Smears the dwords of %xmm7 by xoring the low into the +## second low, result into third, result into highest. +## +## Returns results in %xmm7 = %xmm0. +## Clobbers %xmm1-%xmm4, %r11. +## +.type _vpaes_schedule_round,%function +.align 4 +_vpaes_schedule_round: + // extract rcon from xmm8 + movi v4.16b, #0 // vpxor %xmm4, %xmm4, %xmm4 + ext v1.16b, v8.16b, v4.16b, #15 // vpalignr $15, %xmm8, %xmm4, %xmm1 + ext v8.16b, v8.16b, v8.16b, #15 // vpalignr $15, %xmm8, %xmm8, %xmm8 + eor v7.16b, v7.16b, v1.16b // vpxor %xmm1, %xmm7, %xmm7 + + // rotate + dup v0.4s, v0.s[3] // vpshufd $0xFF, %xmm0, %xmm0 + ext v0.16b, v0.16b, v0.16b, #1 // vpalignr $1, %xmm0, %xmm0, %xmm0 + + // fall through... + + // low round: same as high round, but no rotation and no rcon. +_vpaes_schedule_low_round: + // smear xmm7 + ext v1.16b, v4.16b, v7.16b, #12 // vpslldq $4, %xmm7, %xmm1 + eor v7.16b, v7.16b, v1.16b // vpxor %xmm1, %xmm7, %xmm7 + ext v4.16b, v4.16b, v7.16b, #8 // vpslldq $8, %xmm7, %xmm4 + + // subbytes + and v1.16b, v0.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + eor v7.16b, v7.16b, v4.16b // vpxor %xmm4, %xmm7, %xmm7 + tbl v2.16b, {v19.16b}, v1.16b // vpshufb %xmm1, %xmm11, %xmm2 # 2 = a/k + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + tbl v3.16b, {v18.16b}, v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + tbl v4.16b, {v18.16b}, v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + eor v7.16b, v7.16b, v16.16b // vpxor .Lk_s63(%rip), %xmm7, %xmm7 + tbl v3.16b, {v18.16b}, v3.16b // vpshufb %xmm3, %xmm10, %xmm3 # 2 = 1/iak + eor v4.16b, v4.16b, v2.16b // vpxor %xmm2, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + tbl v2.16b, {v18.16b}, v4.16b // vpshufb %xmm4, %xmm10, %xmm2 # 3 = 1/jak + eor v3.16b, v3.16b, v1.16b // vpxor %xmm1, %xmm3, %xmm3 # 2 = io + eor v2.16b, v2.16b, v0.16b // vpxor %xmm0, %xmm2, %xmm2 # 3 = jo + tbl v4.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm13, %xmm4 # 4 = sbou + tbl v1.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm12, %xmm1 # 0 = sb1t + eor v1.16b, v1.16b, v4.16b // vpxor %xmm4, %xmm1, %xmm1 # 0 = sbox output + + // add in smeared stuff + eor v0.16b, v1.16b, v7.16b // vpxor %xmm7, %xmm1, %xmm0 + eor v7.16b, v1.16b, v7.16b // vmovdqa %xmm0, %xmm7 + ret +.size _vpaes_schedule_round,.-_vpaes_schedule_round + +## +## .aes_schedule_transform +## +## Linear-transform %xmm0 according to tables at (%r11) +## +## Requires that %xmm9 = 0x0F0F... as in preheat +## Output in %xmm0 +## Clobbers %xmm1, %xmm2 +## +.type _vpaes_schedule_transform,%function +.align 4 +_vpaes_schedule_transform: + and v1.16b, v0.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + // vmovdqa (%r11), %xmm2 # lo + tbl v2.16b, {v20.16b}, v1.16b // vpshufb %xmm1, %xmm2, %xmm2 + // vmovdqa 16(%r11), %xmm1 # hi + tbl v0.16b, {v21.16b}, v0.16b // vpshufb %xmm0, %xmm1, %xmm0 + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + ret +.size _vpaes_schedule_transform,.-_vpaes_schedule_transform + +## +## .aes_schedule_mangle +## +## Mangle xmm0 from (basis-transformed) standard version +## to our version. +## +## On encrypt, +## xor with 0x63 +## multiply by circulant 0,1,1,1 +## apply shiftrows transform +## +## On decrypt, +## xor with 0x63 +## multiply by "inverse mixcolumns" circulant E,B,D,9 +## deskew +## apply shiftrows transform +## +## +## Writes out to (%rdx), and increments or decrements it +## Keeps track of round number mod 4 in %r8 +## Preserves xmm0 +## Clobbers xmm1-xmm5 +## +.type _vpaes_schedule_mangle,%function +.align 4 +_vpaes_schedule_mangle: + mov v4.16b, v0.16b // vmovdqa %xmm0, %xmm4 # save xmm0 for later + // vmovdqa .Lk_mc_forward(%rip),%xmm5 + cbnz w3, .Lschedule_mangle_dec + + // encrypting + eor v4.16b, v0.16b, v16.16b // vpxor .Lk_s63(%rip), %xmm0, %xmm4 + add x2, x2, #16 // add $16, %rdx + tbl v4.16b, {v4.16b}, v9.16b // vpshufb %xmm5, %xmm4, %xmm4 + tbl v1.16b, {v4.16b}, v9.16b // vpshufb %xmm5, %xmm4, %xmm1 + tbl v3.16b, {v1.16b}, v9.16b // vpshufb %xmm5, %xmm1, %xmm3 + eor v4.16b, v4.16b, v1.16b // vpxor %xmm1, %xmm4, %xmm4 + ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10), %xmm1 + eor v3.16b, v3.16b, v4.16b // vpxor %xmm4, %xmm3, %xmm3 + + b .Lschedule_mangle_both +.align 4 +.Lschedule_mangle_dec: + // inverse mix columns + // lea .Lk_dksd(%rip),%r11 + ushr v1.16b, v4.16b, #4 // vpsrlb $4, %xmm4, %xmm1 # 1 = hi + and v4.16b, v4.16b, v17.16b // vpand %xmm9, %xmm4, %xmm4 # 4 = lo + + // vmovdqa 0x00(%r11), %xmm2 + tbl v2.16b, {v24.16b}, v4.16b // vpshufb %xmm4, %xmm2, %xmm2 + // vmovdqa 0x10(%r11), %xmm3 + tbl v3.16b, {v25.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 + tbl v3.16b, {v3.16b}, v9.16b // vpshufb %xmm5, %xmm3, %xmm3 + + // vmovdqa 0x20(%r11), %xmm2 + tbl v2.16b, {v26.16b}, v4.16b // vpshufb %xmm4, %xmm2, %xmm2 + eor v2.16b, v2.16b, v3.16b // vpxor %xmm3, %xmm2, %xmm2 + // vmovdqa 0x30(%r11), %xmm3 + tbl v3.16b, {v27.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 + tbl v3.16b, {v3.16b}, v9.16b // vpshufb %xmm5, %xmm3, %xmm3 + + // vmovdqa 0x40(%r11), %xmm2 + tbl v2.16b, {v28.16b}, v4.16b // vpshufb %xmm4, %xmm2, %xmm2 + eor v2.16b, v2.16b, v3.16b // vpxor %xmm3, %xmm2, %xmm2 + // vmovdqa 0x50(%r11), %xmm3 + tbl v3.16b, {v29.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 + + // vmovdqa 0x60(%r11), %xmm2 + tbl v2.16b, {v30.16b}, v4.16b // vpshufb %xmm4, %xmm2, %xmm2 + tbl v3.16b, {v3.16b}, v9.16b // vpshufb %xmm5, %xmm3, %xmm3 + // vmovdqa 0x70(%r11), %xmm4 + tbl v4.16b, {v31.16b}, v1.16b // vpshufb %xmm1, %xmm4, %xmm4 + ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10), %xmm1 + eor v2.16b, v2.16b, v3.16b // vpxor %xmm3, %xmm2, %xmm2 + eor v3.16b, v4.16b, v2.16b // vpxor %xmm2, %xmm4, %xmm3 + + sub x2, x2, #16 // add $-16, %rdx + +.Lschedule_mangle_both: + tbl v3.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 + add x8, x8, #64-16 // add $-16, %r8 + and x8, x8, #~(1<<6) // and $0x30, %r8 + st1 {v3.2d}, [x2] // vmovdqu %xmm3, (%rdx) + ret +.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle + +.globl vpaes_set_encrypt_key +.type vpaes_set_encrypt_key,%function +.align 4 +vpaes_set_encrypt_key: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + stp d8,d9,[sp,#-16]! // ABI spec says so + + lsr w9, w1, #5 // shr $5,%eax + add w9, w9, #5 // $5,%eax + str w9, [x2,#240] // mov %eax,240(%rdx) # AES_KEY->rounds = nbits/32+5; + + mov w3, #0 // mov $0,%ecx + mov x8, #0x30 // mov $0x30,%r8d + bl _vpaes_schedule_core + eor x0, x0, x0 + + ldp d8,d9,[sp],#16 + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key + +.globl vpaes_set_decrypt_key +.type vpaes_set_decrypt_key,%function +.align 4 +vpaes_set_decrypt_key: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + stp d8,d9,[sp,#-16]! // ABI spec says so + + lsr w9, w1, #5 // shr $5,%eax + add w9, w9, #5 // $5,%eax + str w9, [x2,#240] // mov %eax,240(%rdx) # AES_KEY->rounds = nbits/32+5; + lsl w9, w9, #4 // shl $4,%eax + add x2, x2, #16 // lea 16(%rdx,%rax),%rdx + add x2, x2, x9 + + mov w3, #1 // mov $1,%ecx + lsr w8, w1, #1 // shr $1,%r8d + and x8, x8, #32 // and $32,%r8d + eor x8, x8, #32 // xor $32,%r8d # nbits==192?0:32 + bl _vpaes_schedule_core + + ldp d8,d9,[sp],#16 + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key +.globl vpaes_cbc_encrypt +.type vpaes_cbc_encrypt,%function +.align 4 +vpaes_cbc_encrypt: + cbz x2, .Lcbc_abort + cmp w5, #0 // check direction + b.eq vpaes_cbc_decrypt + +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + mov x17, x2 // reassign + mov x2, x3 // reassign + + ld1 {v0.16b}, [x4] // load ivec + bl _vpaes_encrypt_preheat + b .Lcbc_enc_loop + +.align 4 +.Lcbc_enc_loop: + ld1 {v7.16b}, [x0],#16 // load input + eor v7.16b, v7.16b, v0.16b // xor with ivec + bl _vpaes_encrypt_core + st1 {v0.16b}, [x1],#16 // save output + subs x17, x17, #16 + b.hi .Lcbc_enc_loop + + st1 {v0.16b}, [x4] // write ivec + + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp +.Lcbc_abort: + ret +.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt + +.type vpaes_cbc_decrypt,%function +.align 4 +vpaes_cbc_decrypt: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + stp d8,d9,[sp,#-16]! // ABI spec says so + stp d10,d11,[sp,#-16]! + stp d12,d13,[sp,#-16]! + stp d14,d15,[sp,#-16]! + + mov x17, x2 // reassign + mov x2, x3 // reassign + ld1 {v6.16b}, [x4] // load ivec + bl _vpaes_decrypt_preheat + tst x17, #16 + b.eq .Lcbc_dec_loop2x + + ld1 {v7.16b}, [x0], #16 // load input + bl _vpaes_decrypt_core + eor v0.16b, v0.16b, v6.16b // xor with ivec + orr v6.16b, v7.16b, v7.16b // next ivec value + st1 {v0.16b}, [x1], #16 + subs x17, x17, #16 + b.ls .Lcbc_dec_done + +.align 4 +.Lcbc_dec_loop2x: + ld1 {v14.16b,v15.16b}, [x0], #32 + bl _vpaes_decrypt_2x + eor v0.16b, v0.16b, v6.16b // xor with ivec + eor v1.16b, v1.16b, v14.16b + orr v6.16b, v15.16b, v15.16b + st1 {v0.16b,v1.16b}, [x1], #32 + subs x17, x17, #32 + b.hi .Lcbc_dec_loop2x + +.Lcbc_dec_done: + st1 {v6.16b}, [x4] + + ldp d14,d15,[sp],#16 + ldp d12,d13,[sp],#16 + ldp d10,d11,[sp],#16 + ldp d8,d9,[sp],#16 + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size vpaes_cbc_decrypt,.-vpaes_cbc_decrypt +.globl vpaes_ecb_encrypt +.type vpaes_ecb_encrypt,%function +.align 4 +vpaes_ecb_encrypt: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + stp d8,d9,[sp,#-16]! // ABI spec says so + stp d10,d11,[sp,#-16]! + stp d12,d13,[sp,#-16]! + stp d14,d15,[sp,#-16]! + + mov x17, x2 + mov x2, x3 + bl _vpaes_encrypt_preheat + tst x17, #16 + b.eq .Lecb_enc_loop + + ld1 {v7.16b}, [x0],#16 + bl _vpaes_encrypt_core + st1 {v0.16b}, [x1],#16 + subs x17, x17, #16 + b.ls .Lecb_enc_done + +.align 4 +.Lecb_enc_loop: + ld1 {v14.16b,v15.16b}, [x0], #32 + bl _vpaes_encrypt_2x + st1 {v0.16b,v1.16b}, [x1], #32 + subs x17, x17, #32 + b.hi .Lecb_enc_loop + +.Lecb_enc_done: + ldp d14,d15,[sp],#16 + ldp d12,d13,[sp],#16 + ldp d10,d11,[sp],#16 + ldp d8,d9,[sp],#16 + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size vpaes_ecb_encrypt,.-vpaes_ecb_encrypt + +.globl vpaes_ecb_decrypt +.type vpaes_ecb_decrypt,%function +.align 4 +vpaes_ecb_decrypt: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + stp d8,d9,[sp,#-16]! // ABI spec says so + stp d10,d11,[sp,#-16]! + stp d12,d13,[sp,#-16]! + stp d14,d15,[sp,#-16]! + + mov x17, x2 + mov x2, x3 + bl _vpaes_decrypt_preheat + tst x17, #16 + b.eq .Lecb_dec_loop + + ld1 {v7.16b}, [x0],#16 + bl _vpaes_encrypt_core + st1 {v0.16b}, [x1],#16 + subs x17, x17, #16 + b.ls .Lecb_dec_done + +.align 4 +.Lecb_dec_loop: + ld1 {v14.16b,v15.16b}, [x0], #32 + bl _vpaes_decrypt_2x + st1 {v0.16b,v1.16b}, [x1], #32 + subs x17, x17, #32 + b.hi .Lecb_dec_loop + +.Lecb_dec_done: + ldp d14,d15,[sp],#16 + ldp d12,d13,[sp],#16 + ldp d10,d11,[sp],#16 + ldp d8,d9,[sp],#16 + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size vpaes_ecb_decrypt,.-vpaes_ecb_decrypt diff --git a/vere/ext/openssl/gen/linux-aarch64/crypto/arm64cpuid.S b/vere/ext/openssl/gen/linux-aarch64/crypto/arm64cpuid.S new file mode 100644 index 0000000..fdf9f46 --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/crypto/arm64cpuid.S @@ -0,0 +1,122 @@ +#include "arm_arch.h" + +.text +.arch armv8-a+crypto + +.align 5 +.globl _armv7_neon_probe +.type _armv7_neon_probe,%function +_armv7_neon_probe: + orr v15.16b, v15.16b, v15.16b + ret +.size _armv7_neon_probe,.-_armv7_neon_probe + +.globl _armv7_tick +.type _armv7_tick,%function +_armv7_tick: +#ifdef __APPLE__ + mrs x0, CNTPCT_EL0 +#else + mrs x0, CNTVCT_EL0 +#endif + ret +.size _armv7_tick,.-_armv7_tick + +.globl _armv8_aes_probe +.type _armv8_aes_probe,%function +_armv8_aes_probe: + aese v0.16b, v0.16b + ret +.size _armv8_aes_probe,.-_armv8_aes_probe + +.globl _armv8_sha1_probe +.type _armv8_sha1_probe,%function +_armv8_sha1_probe: + sha1h s0, s0 + ret +.size _armv8_sha1_probe,.-_armv8_sha1_probe + +.globl _armv8_sha256_probe +.type _armv8_sha256_probe,%function +_armv8_sha256_probe: + sha256su0 v0.4s, v0.4s + ret +.size _armv8_sha256_probe,.-_armv8_sha256_probe + +.globl _armv8_pmull_probe +.type _armv8_pmull_probe,%function +_armv8_pmull_probe: + pmull v0.1q, v0.1d, v0.1d + ret +.size _armv8_pmull_probe,.-_armv8_pmull_probe + +.globl _armv8_sha512_probe +.type _armv8_sha512_probe,%function +_armv8_sha512_probe: +.long 0xcec08000 // sha512su0 v0.2d,v0.2d + ret +.size _armv8_sha512_probe,.-_armv8_sha512_probe + +.globl OPENSSL_cleanse +.type OPENSSL_cleanse,%function +.align 5 +OPENSSL_cleanse: + cbz x1,.Lret // len==0? + cmp x1,#15 + b.hi .Lot // len>15 + nop +.Little: + strb wzr,[x0],#1 // store byte-by-byte + subs x1,x1,#1 + b.ne .Little +.Lret: ret + +.align 4 +.Lot: tst x0,#7 + b.eq .Laligned // inp is aligned + strb wzr,[x0],#1 // store byte-by-byte + sub x1,x1,#1 + b .Lot + +.align 4 +.Laligned: + str xzr,[x0],#8 // store word-by-word + sub x1,x1,#8 + tst x1,#-8 + b.ne .Laligned // len>=8 + cbnz x1,.Little // len!=0? + ret +.size OPENSSL_cleanse,.-OPENSSL_cleanse + +.globl CRYPTO_memcmp +.type CRYPTO_memcmp,%function +.align 4 +CRYPTO_memcmp: + eor w3,w3,w3 + cbz x2,.Lno_data // len==0? + cmp x2,#16 + b.ne .Loop_cmp + ldp x8,x9,[x0] + ldp x10,x11,[x1] + eor x8,x8,x10 + eor x9,x9,x11 + orr x8,x8,x9 + mov x0,#1 + cmp x8,#0 + csel x0,xzr,x0,eq + ret + +.align 4 +.Loop_cmp: + ldrb w4,[x0],#1 + ldrb w5,[x1],#1 + eor w4,w4,w5 + orr w3,w3,w4 + subs x2,x2,#1 + b.ne .Loop_cmp + +.Lno_data: + neg w0,w3 + lsr w0,w0,#31 + ret +.size CRYPTO_memcmp,.-CRYPTO_memcmp diff --git a/vere/ext/openssl/gen/linux-aarch64/crypto/bn/armv8-mont.S b/vere/ext/openssl/gen/linux-aarch64/crypto/bn/armv8-mont.S new file mode 100644 index 0000000..d573c00 --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/crypto/bn/armv8-mont.S @@ -0,0 +1,1408 @@ +.text + +.globl bn_mul_mont +.type bn_mul_mont,%function +.align 5 +bn_mul_mont: + tst x5,#7 + b.eq __bn_sqr8x_mont + tst x5,#3 + b.eq __bn_mul4x_mont +.Lmul_mont: + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + ldr x9,[x2],#8 // bp[0] + sub x22,sp,x5,lsl#3 + ldp x7,x8,[x1],#16 // ap[0..1] + lsl x5,x5,#3 + ldr x4,[x4] // *n0 + and x22,x22,#-16 // ABI says so + ldp x13,x14,[x3],#16 // np[0..1] + + mul x6,x7,x9 // ap[0]*bp[0] + sub x21,x5,#16 // j=num-2 + umulh x7,x7,x9 + mul x10,x8,x9 // ap[1]*bp[0] + umulh x11,x8,x9 + + mul x15,x6,x4 // "tp[0]"*n0 + mov sp,x22 // alloca + + // (*) mul x12,x13,x15 // np[0]*m1 + umulh x13,x13,x15 + mul x16,x14,x15 // np[1]*m1 + // (*) adds x12,x12,x6 // discarded + // (*) As for removal of first multiplication and addition + // instructions. The outcome of first addition is + // guaranteed to be zero, which leaves two computationally + // significant outcomes: it either carries or not. Then + // question is when does it carry? Is there alternative + // way to deduce it? If you follow operations, you can + // observe that condition for carry is quite simple: + // x6 being non-zero. So that carry can be calculated + // by adding -1 to x6. That's what next instruction does. + subs xzr,x6,#1 // (*) + umulh x17,x14,x15 + adc x13,x13,xzr + cbz x21,.L1st_skip + +.L1st: + ldr x8,[x1],#8 + adds x6,x10,x7 + sub x21,x21,#8 // j-- + adc x7,x11,xzr + + ldr x14,[x3],#8 + adds x12,x16,x13 + mul x10,x8,x9 // ap[j]*bp[0] + adc x13,x17,xzr + umulh x11,x8,x9 + + adds x12,x12,x6 + mul x16,x14,x15 // np[j]*m1 + adc x13,x13,xzr + umulh x17,x14,x15 + str x12,[x22],#8 // tp[j-1] + cbnz x21,.L1st + +.L1st_skip: + adds x6,x10,x7 + sub x1,x1,x5 // rewind x1 + adc x7,x11,xzr + + adds x12,x16,x13 + sub x3,x3,x5 // rewind x3 + adc x13,x17,xzr + + adds x12,x12,x6 + sub x20,x5,#8 // i=num-1 + adcs x13,x13,x7 + + adc x19,xzr,xzr // upmost overflow bit + stp x12,x13,[x22] + +.Louter: + ldr x9,[x2],#8 // bp[i] + ldp x7,x8,[x1],#16 + ldr x23,[sp] // tp[0] + add x22,sp,#8 + + mul x6,x7,x9 // ap[0]*bp[i] + sub x21,x5,#16 // j=num-2 + umulh x7,x7,x9 + ldp x13,x14,[x3],#16 + mul x10,x8,x9 // ap[1]*bp[i] + adds x6,x6,x23 + umulh x11,x8,x9 + adc x7,x7,xzr + + mul x15,x6,x4 + sub x20,x20,#8 // i-- + + // (*) mul x12,x13,x15 // np[0]*m1 + umulh x13,x13,x15 + mul x16,x14,x15 // np[1]*m1 + // (*) adds x12,x12,x6 + subs xzr,x6,#1 // (*) + umulh x17,x14,x15 + cbz x21,.Linner_skip + +.Linner: + ldr x8,[x1],#8 + adc x13,x13,xzr + ldr x23,[x22],#8 // tp[j] + adds x6,x10,x7 + sub x21,x21,#8 // j-- + adc x7,x11,xzr + + adds x12,x16,x13 + ldr x14,[x3],#8 + adc x13,x17,xzr + + mul x10,x8,x9 // ap[j]*bp[i] + adds x6,x6,x23 + umulh x11,x8,x9 + adc x7,x7,xzr + + mul x16,x14,x15 // np[j]*m1 + adds x12,x12,x6 + umulh x17,x14,x15 + str x12,[x22,#-16] // tp[j-1] + cbnz x21,.Linner + +.Linner_skip: + ldr x23,[x22],#8 // tp[j] + adc x13,x13,xzr + adds x6,x10,x7 + sub x1,x1,x5 // rewind x1 + adc x7,x11,xzr + + adds x12,x16,x13 + sub x3,x3,x5 // rewind x3 + adcs x13,x17,x19 + adc x19,xzr,xzr + + adds x6,x6,x23 + adc x7,x7,xzr + + adds x12,x12,x6 + adcs x13,x13,x7 + adc x19,x19,xzr // upmost overflow bit + stp x12,x13,[x22,#-16] + + cbnz x20,.Louter + + // Final step. We see if result is larger than modulus, and + // if it is, subtract the modulus. But comparison implies + // subtraction. So we subtract modulus, see if it borrowed, + // and conditionally copy original value. + ldr x23,[sp] // tp[0] + add x22,sp,#8 + ldr x14,[x3],#8 // np[0] + subs x21,x5,#8 // j=num-1 and clear borrow + mov x1,x0 +.Lsub: + sbcs x8,x23,x14 // tp[j]-np[j] + ldr x23,[x22],#8 + sub x21,x21,#8 // j-- + ldr x14,[x3],#8 + str x8,[x1],#8 // rp[j]=tp[j]-np[j] + cbnz x21,.Lsub + + sbcs x8,x23,x14 + sbcs x19,x19,xzr // did it borrow? + str x8,[x1],#8 // rp[num-1] + + ldr x23,[sp] // tp[0] + add x22,sp,#8 + ldr x8,[x0],#8 // rp[0] + sub x5,x5,#8 // num-- + nop +.Lcond_copy: + sub x5,x5,#8 // num-- + csel x14,x23,x8,lo // did it borrow? + ldr x23,[x22],#8 + ldr x8,[x0],#8 + str xzr,[x22,#-16] // wipe tp + str x14,[x0,#-16] + cbnz x5,.Lcond_copy + + csel x14,x23,x8,lo + str xzr,[x22,#-8] // wipe tp + str x14,[x0,#-8] + + ldp x19,x20,[x29,#16] + mov sp,x29 + ldp x21,x22,[x29,#32] + mov x0,#1 + ldp x23,x24,[x29,#48] + ldr x29,[sp],#64 + ret +.size bn_mul_mont,.-bn_mul_mont +.type __bn_sqr8x_mont,%function +.align 5 +__bn_sqr8x_mont: + cmp x1,x2 + b.ne __bn_mul4x_mont +.Lsqr8x_mont: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + stp x0,x3,[sp,#96] // offload rp and np + + ldp x6,x7,[x1,#8*0] + ldp x8,x9,[x1,#8*2] + ldp x10,x11,[x1,#8*4] + ldp x12,x13,[x1,#8*6] + + sub x2,sp,x5,lsl#4 + lsl x5,x5,#3 + ldr x4,[x4] // *n0 + mov sp,x2 // alloca + sub x27,x5,#8*8 + b .Lsqr8x_zero_start + +.Lsqr8x_zero: + sub x27,x27,#8*8 + stp xzr,xzr,[x2,#8*0] + stp xzr,xzr,[x2,#8*2] + stp xzr,xzr,[x2,#8*4] + stp xzr,xzr,[x2,#8*6] +.Lsqr8x_zero_start: + stp xzr,xzr,[x2,#8*8] + stp xzr,xzr,[x2,#8*10] + stp xzr,xzr,[x2,#8*12] + stp xzr,xzr,[x2,#8*14] + add x2,x2,#8*16 + cbnz x27,.Lsqr8x_zero + + add x3,x1,x5 + add x1,x1,#8*8 + mov x19,xzr + mov x20,xzr + mov x21,xzr + mov x22,xzr + mov x23,xzr + mov x24,xzr + mov x25,xzr + mov x26,xzr + mov x2,sp + str x4,[x29,#112] // offload n0 + + // Multiply everything but a[i]*a[i] +.align 4 +.Lsqr8x_outer_loop: + // a[1]a[0] (i) + // a[2]a[0] + // a[3]a[0] + // a[4]a[0] + // a[5]a[0] + // a[6]a[0] + // a[7]a[0] + // a[2]a[1] (ii) + // a[3]a[1] + // a[4]a[1] + // a[5]a[1] + // a[6]a[1] + // a[7]a[1] + // a[3]a[2] (iii) + // a[4]a[2] + // a[5]a[2] + // a[6]a[2] + // a[7]a[2] + // a[4]a[3] (iv) + // a[5]a[3] + // a[6]a[3] + // a[7]a[3] + // a[5]a[4] (v) + // a[6]a[4] + // a[7]a[4] + // a[6]a[5] (vi) + // a[7]a[5] + // a[7]a[6] (vii) + + mul x14,x7,x6 // lo(a[1..7]*a[0]) (i) + mul x15,x8,x6 + mul x16,x9,x6 + mul x17,x10,x6 + adds x20,x20,x14 // t[1]+lo(a[1]*a[0]) + mul x14,x11,x6 + adcs x21,x21,x15 + mul x15,x12,x6 + adcs x22,x22,x16 + mul x16,x13,x6 + adcs x23,x23,x17 + umulh x17,x7,x6 // hi(a[1..7]*a[0]) + adcs x24,x24,x14 + umulh x14,x8,x6 + adcs x25,x25,x15 + umulh x15,x9,x6 + adcs x26,x26,x16 + umulh x16,x10,x6 + stp x19,x20,[x2],#8*2 // t[0..1] + adc x19,xzr,xzr // t[8] + adds x21,x21,x17 // t[2]+lo(a[1]*a[0]) + umulh x17,x11,x6 + adcs x22,x22,x14 + umulh x14,x12,x6 + adcs x23,x23,x15 + umulh x15,x13,x6 + adcs x24,x24,x16 + mul x16,x8,x7 // lo(a[2..7]*a[1]) (ii) + adcs x25,x25,x17 + mul x17,x9,x7 + adcs x26,x26,x14 + mul x14,x10,x7 + adc x19,x19,x15 + + mul x15,x11,x7 + adds x22,x22,x16 + mul x16,x12,x7 + adcs x23,x23,x17 + mul x17,x13,x7 + adcs x24,x24,x14 + umulh x14,x8,x7 // hi(a[2..7]*a[1]) + adcs x25,x25,x15 + umulh x15,x9,x7 + adcs x26,x26,x16 + umulh x16,x10,x7 + adcs x19,x19,x17 + umulh x17,x11,x7 + stp x21,x22,[x2],#8*2 // t[2..3] + adc x20,xzr,xzr // t[9] + adds x23,x23,x14 + umulh x14,x12,x7 + adcs x24,x24,x15 + umulh x15,x13,x7 + adcs x25,x25,x16 + mul x16,x9,x8 // lo(a[3..7]*a[2]) (iii) + adcs x26,x26,x17 + mul x17,x10,x8 + adcs x19,x19,x14 + mul x14,x11,x8 + adc x20,x20,x15 + + mul x15,x12,x8 + adds x24,x24,x16 + mul x16,x13,x8 + adcs x25,x25,x17 + umulh x17,x9,x8 // hi(a[3..7]*a[2]) + adcs x26,x26,x14 + umulh x14,x10,x8 + adcs x19,x19,x15 + umulh x15,x11,x8 + adcs x20,x20,x16 + umulh x16,x12,x8 + stp x23,x24,[x2],#8*2 // t[4..5] + adc x21,xzr,xzr // t[10] + adds x25,x25,x17 + umulh x17,x13,x8 + adcs x26,x26,x14 + mul x14,x10,x9 // lo(a[4..7]*a[3]) (iv) + adcs x19,x19,x15 + mul x15,x11,x9 + adcs x20,x20,x16 + mul x16,x12,x9 + adc x21,x21,x17 + + mul x17,x13,x9 + adds x26,x26,x14 + umulh x14,x10,x9 // hi(a[4..7]*a[3]) + adcs x19,x19,x15 + umulh x15,x11,x9 + adcs x20,x20,x16 + umulh x16,x12,x9 + adcs x21,x21,x17 + umulh x17,x13,x9 + stp x25,x26,[x2],#8*2 // t[6..7] + adc x22,xzr,xzr // t[11] + adds x19,x19,x14 + mul x14,x11,x10 // lo(a[5..7]*a[4]) (v) + adcs x20,x20,x15 + mul x15,x12,x10 + adcs x21,x21,x16 + mul x16,x13,x10 + adc x22,x22,x17 + + umulh x17,x11,x10 // hi(a[5..7]*a[4]) + adds x20,x20,x14 + umulh x14,x12,x10 + adcs x21,x21,x15 + umulh x15,x13,x10 + adcs x22,x22,x16 + mul x16,x12,x11 // lo(a[6..7]*a[5]) (vi) + adc x23,xzr,xzr // t[12] + adds x21,x21,x17 + mul x17,x13,x11 + adcs x22,x22,x14 + umulh x14,x12,x11 // hi(a[6..7]*a[5]) + adc x23,x23,x15 + + umulh x15,x13,x11 + adds x22,x22,x16 + mul x16,x13,x12 // lo(a[7]*a[6]) (vii) + adcs x23,x23,x17 + umulh x17,x13,x12 // hi(a[7]*a[6]) + adc x24,xzr,xzr // t[13] + adds x23,x23,x14 + sub x27,x3,x1 // done yet? + adc x24,x24,x15 + + adds x24,x24,x16 + sub x14,x3,x5 // rewinded ap + adc x25,xzr,xzr // t[14] + add x25,x25,x17 + + cbz x27,.Lsqr8x_outer_break + + mov x4,x6 + ldp x6,x7,[x2,#8*0] + ldp x8,x9,[x2,#8*2] + ldp x10,x11,[x2,#8*4] + ldp x12,x13,[x2,#8*6] + adds x19,x19,x6 + adcs x20,x20,x7 + ldp x6,x7,[x1,#8*0] + adcs x21,x21,x8 + adcs x22,x22,x9 + ldp x8,x9,[x1,#8*2] + adcs x23,x23,x10 + adcs x24,x24,x11 + ldp x10,x11,[x1,#8*4] + adcs x25,x25,x12 + mov x0,x1 + adcs x26,xzr,x13 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + //adc x28,xzr,xzr // moved below + mov x27,#-8*8 + + // a[8]a[0] + // a[9]a[0] + // a[a]a[0] + // a[b]a[0] + // a[c]a[0] + // a[d]a[0] + // a[e]a[0] + // a[f]a[0] + // a[8]a[1] + // a[f]a[1]........................ + // a[8]a[2] + // a[f]a[2]........................ + // a[8]a[3] + // a[f]a[3]........................ + // a[8]a[4] + // a[f]a[4]........................ + // a[8]a[5] + // a[f]a[5]........................ + // a[8]a[6] + // a[f]a[6]........................ + // a[8]a[7] + // a[f]a[7]........................ +.Lsqr8x_mul: + mul x14,x6,x4 + adc x28,xzr,xzr // carry bit, modulo-scheduled + mul x15,x7,x4 + add x27,x27,#8 + mul x16,x8,x4 + mul x17,x9,x4 + adds x19,x19,x14 + mul x14,x10,x4 + adcs x20,x20,x15 + mul x15,x11,x4 + adcs x21,x21,x16 + mul x16,x12,x4 + adcs x22,x22,x17 + mul x17,x13,x4 + adcs x23,x23,x14 + umulh x14,x6,x4 + adcs x24,x24,x15 + umulh x15,x7,x4 + adcs x25,x25,x16 + umulh x16,x8,x4 + adcs x26,x26,x17 + umulh x17,x9,x4 + adc x28,x28,xzr + str x19,[x2],#8 + adds x19,x20,x14 + umulh x14,x10,x4 + adcs x20,x21,x15 + umulh x15,x11,x4 + adcs x21,x22,x16 + umulh x16,x12,x4 + adcs x22,x23,x17 + umulh x17,x13,x4 + ldr x4,[x0,x27] + adcs x23,x24,x14 + adcs x24,x25,x15 + adcs x25,x26,x16 + adcs x26,x28,x17 + //adc x28,xzr,xzr // moved above + cbnz x27,.Lsqr8x_mul + // note that carry flag is guaranteed + // to be zero at this point + cmp x1,x3 // done yet? + b.eq .Lsqr8x_break + + ldp x6,x7,[x2,#8*0] + ldp x8,x9,[x2,#8*2] + ldp x10,x11,[x2,#8*4] + ldp x12,x13,[x2,#8*6] + adds x19,x19,x6 + ldr x4,[x0,#-8*8] + adcs x20,x20,x7 + ldp x6,x7,[x1,#8*0] + adcs x21,x21,x8 + adcs x22,x22,x9 + ldp x8,x9,[x1,#8*2] + adcs x23,x23,x10 + adcs x24,x24,x11 + ldp x10,x11,[x1,#8*4] + adcs x25,x25,x12 + mov x27,#-8*8 + adcs x26,x26,x13 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + //adc x28,xzr,xzr // moved above + b .Lsqr8x_mul + +.align 4 +.Lsqr8x_break: + ldp x6,x7,[x0,#8*0] + add x1,x0,#8*8 + ldp x8,x9,[x0,#8*2] + sub x14,x3,x1 // is it last iteration? + ldp x10,x11,[x0,#8*4] + sub x15,x2,x14 + ldp x12,x13,[x0,#8*6] + cbz x14,.Lsqr8x_outer_loop + + stp x19,x20,[x2,#8*0] + ldp x19,x20,[x15,#8*0] + stp x21,x22,[x2,#8*2] + ldp x21,x22,[x15,#8*2] + stp x23,x24,[x2,#8*4] + ldp x23,x24,[x15,#8*4] + stp x25,x26,[x2,#8*6] + mov x2,x15 + ldp x25,x26,[x15,#8*6] + b .Lsqr8x_outer_loop + +.align 4 +.Lsqr8x_outer_break: + // Now multiply above result by 2 and add a[n-1]*a[n-1]|...|a[0]*a[0] + ldp x7,x9,[x14,#8*0] // recall that x14 is &a[0] + ldp x15,x16,[sp,#8*1] + ldp x11,x13,[x14,#8*2] + add x1,x14,#8*4 + ldp x17,x14,[sp,#8*3] + + stp x19,x20,[x2,#8*0] + mul x19,x7,x7 + stp x21,x22,[x2,#8*2] + umulh x7,x7,x7 + stp x23,x24,[x2,#8*4] + mul x8,x9,x9 + stp x25,x26,[x2,#8*6] + mov x2,sp + umulh x9,x9,x9 + adds x20,x7,x15,lsl#1 + extr x15,x16,x15,#63 + sub x27,x5,#8*4 + +.Lsqr4x_shift_n_add: + adcs x21,x8,x15 + extr x16,x17,x16,#63 + sub x27,x27,#8*4 + adcs x22,x9,x16 + ldp x15,x16,[x2,#8*5] + mul x10,x11,x11 + ldp x7,x9,[x1],#8*2 + umulh x11,x11,x11 + mul x12,x13,x13 + umulh x13,x13,x13 + extr x17,x14,x17,#63 + stp x19,x20,[x2,#8*0] + adcs x23,x10,x17 + extr x14,x15,x14,#63 + stp x21,x22,[x2,#8*2] + adcs x24,x11,x14 + ldp x17,x14,[x2,#8*7] + extr x15,x16,x15,#63 + adcs x25,x12,x15 + extr x16,x17,x16,#63 + adcs x26,x13,x16 + ldp x15,x16,[x2,#8*9] + mul x6,x7,x7 + ldp x11,x13,[x1],#8*2 + umulh x7,x7,x7 + mul x8,x9,x9 + umulh x9,x9,x9 + stp x23,x24,[x2,#8*4] + extr x17,x14,x17,#63 + stp x25,x26,[x2,#8*6] + add x2,x2,#8*8 + adcs x19,x6,x17 + extr x14,x15,x14,#63 + adcs x20,x7,x14 + ldp x17,x14,[x2,#8*3] + extr x15,x16,x15,#63 + cbnz x27,.Lsqr4x_shift_n_add + ldp x1,x4,[x29,#104] // pull np and n0 + + adcs x21,x8,x15 + extr x16,x17,x16,#63 + adcs x22,x9,x16 + ldp x15,x16,[x2,#8*5] + mul x10,x11,x11 + umulh x11,x11,x11 + stp x19,x20,[x2,#8*0] + mul x12,x13,x13 + umulh x13,x13,x13 + stp x21,x22,[x2,#8*2] + extr x17,x14,x17,#63 + adcs x23,x10,x17 + extr x14,x15,x14,#63 + ldp x19,x20,[sp,#8*0] + adcs x24,x11,x14 + extr x15,x16,x15,#63 + ldp x6,x7,[x1,#8*0] + adcs x25,x12,x15 + extr x16,xzr,x16,#63 + ldp x8,x9,[x1,#8*2] + adc x26,x13,x16 + ldp x10,x11,[x1,#8*4] + + // Reduce by 512 bits per iteration + mul x28,x4,x19 // t[0]*n0 + ldp x12,x13,[x1,#8*6] + add x3,x1,x5 + ldp x21,x22,[sp,#8*2] + stp x23,x24,[x2,#8*4] + ldp x23,x24,[sp,#8*4] + stp x25,x26,[x2,#8*6] + ldp x25,x26,[sp,#8*6] + add x1,x1,#8*8 + mov x30,xzr // initial top-most carry + mov x2,sp + mov x27,#8 + +.Lsqr8x_reduction: + // (*) mul x14,x6,x28 // lo(n[0-7])*lo(t[0]*n0) + mul x15,x7,x28 + sub x27,x27,#1 + mul x16,x8,x28 + str x28,[x2],#8 // put aside t[0]*n0 for tail processing + mul x17,x9,x28 + // (*) adds xzr,x19,x14 + subs xzr,x19,#1 // (*) + mul x14,x10,x28 + adcs x19,x20,x15 + mul x15,x11,x28 + adcs x20,x21,x16 + mul x16,x12,x28 + adcs x21,x22,x17 + mul x17,x13,x28 + adcs x22,x23,x14 + umulh x14,x6,x28 // hi(n[0-7])*lo(t[0]*n0) + adcs x23,x24,x15 + umulh x15,x7,x28 + adcs x24,x25,x16 + umulh x16,x8,x28 + adcs x25,x26,x17 + umulh x17,x9,x28 + adc x26,xzr,xzr + adds x19,x19,x14 + umulh x14,x10,x28 + adcs x20,x20,x15 + umulh x15,x11,x28 + adcs x21,x21,x16 + umulh x16,x12,x28 + adcs x22,x22,x17 + umulh x17,x13,x28 + mul x28,x4,x19 // next t[0]*n0 + adcs x23,x23,x14 + adcs x24,x24,x15 + adcs x25,x25,x16 + adc x26,x26,x17 + cbnz x27,.Lsqr8x_reduction + + ldp x14,x15,[x2,#8*0] + ldp x16,x17,[x2,#8*2] + mov x0,x2 + sub x27,x3,x1 // done yet? + adds x19,x19,x14 + adcs x20,x20,x15 + ldp x14,x15,[x2,#8*4] + adcs x21,x21,x16 + adcs x22,x22,x17 + ldp x16,x17,[x2,#8*6] + adcs x23,x23,x14 + adcs x24,x24,x15 + adcs x25,x25,x16 + adcs x26,x26,x17 + //adc x28,xzr,xzr // moved below + cbz x27,.Lsqr8x8_post_condition + + ldr x4,[x2,#-8*8] + ldp x6,x7,[x1,#8*0] + ldp x8,x9,[x1,#8*2] + ldp x10,x11,[x1,#8*4] + mov x27,#-8*8 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + +.Lsqr8x_tail: + mul x14,x6,x4 + adc x28,xzr,xzr // carry bit, modulo-scheduled + mul x15,x7,x4 + add x27,x27,#8 + mul x16,x8,x4 + mul x17,x9,x4 + adds x19,x19,x14 + mul x14,x10,x4 + adcs x20,x20,x15 + mul x15,x11,x4 + adcs x21,x21,x16 + mul x16,x12,x4 + adcs x22,x22,x17 + mul x17,x13,x4 + adcs x23,x23,x14 + umulh x14,x6,x4 + adcs x24,x24,x15 + umulh x15,x7,x4 + adcs x25,x25,x16 + umulh x16,x8,x4 + adcs x26,x26,x17 + umulh x17,x9,x4 + adc x28,x28,xzr + str x19,[x2],#8 + adds x19,x20,x14 + umulh x14,x10,x4 + adcs x20,x21,x15 + umulh x15,x11,x4 + adcs x21,x22,x16 + umulh x16,x12,x4 + adcs x22,x23,x17 + umulh x17,x13,x4 + ldr x4,[x0,x27] + adcs x23,x24,x14 + adcs x24,x25,x15 + adcs x25,x26,x16 + adcs x26,x28,x17 + //adc x28,xzr,xzr // moved above + cbnz x27,.Lsqr8x_tail + // note that carry flag is guaranteed + // to be zero at this point + ldp x6,x7,[x2,#8*0] + sub x27,x3,x1 // done yet? + sub x16,x3,x5 // rewinded np + ldp x8,x9,[x2,#8*2] + ldp x10,x11,[x2,#8*4] + ldp x12,x13,[x2,#8*6] + cbz x27,.Lsqr8x_tail_break + + ldr x4,[x0,#-8*8] + adds x19,x19,x6 + adcs x20,x20,x7 + ldp x6,x7,[x1,#8*0] + adcs x21,x21,x8 + adcs x22,x22,x9 + ldp x8,x9,[x1,#8*2] + adcs x23,x23,x10 + adcs x24,x24,x11 + ldp x10,x11,[x1,#8*4] + adcs x25,x25,x12 + mov x27,#-8*8 + adcs x26,x26,x13 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + //adc x28,xzr,xzr // moved above + b .Lsqr8x_tail + +.align 4 +.Lsqr8x_tail_break: + ldr x4,[x29,#112] // pull n0 + add x27,x2,#8*8 // end of current t[num] window + + subs xzr,x30,#1 // "move" top-most carry to carry bit + adcs x14,x19,x6 + adcs x15,x20,x7 + ldp x19,x20,[x0,#8*0] + adcs x21,x21,x8 + ldp x6,x7,[x16,#8*0] // recall that x16 is &n[0] + adcs x22,x22,x9 + ldp x8,x9,[x16,#8*2] + adcs x23,x23,x10 + adcs x24,x24,x11 + ldp x10,x11,[x16,#8*4] + adcs x25,x25,x12 + adcs x26,x26,x13 + ldp x12,x13,[x16,#8*6] + add x1,x16,#8*8 + adc x30,xzr,xzr // top-most carry + mul x28,x4,x19 + stp x14,x15,[x2,#8*0] + stp x21,x22,[x2,#8*2] + ldp x21,x22,[x0,#8*2] + stp x23,x24,[x2,#8*4] + ldp x23,x24,[x0,#8*4] + cmp x27,x29 // did we hit the bottom? + stp x25,x26,[x2,#8*6] + mov x2,x0 // slide the window + ldp x25,x26,[x0,#8*6] + mov x27,#8 + b.ne .Lsqr8x_reduction + + // Final step. We see if result is larger than modulus, and + // if it is, subtract the modulus. But comparison implies + // subtraction. So we subtract modulus, see if it borrowed, + // and conditionally copy original value. + ldr x0,[x29,#96] // pull rp + add x2,x2,#8*8 + subs x14,x19,x6 + sbcs x15,x20,x7 + sub x27,x5,#8*8 + mov x3,x0 // x0 copy + +.Lsqr8x_sub: + sbcs x16,x21,x8 + ldp x6,x7,[x1,#8*0] + sbcs x17,x22,x9 + stp x14,x15,[x0,#8*0] + sbcs x14,x23,x10 + ldp x8,x9,[x1,#8*2] + sbcs x15,x24,x11 + stp x16,x17,[x0,#8*2] + sbcs x16,x25,x12 + ldp x10,x11,[x1,#8*4] + sbcs x17,x26,x13 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + ldp x19,x20,[x2,#8*0] + sub x27,x27,#8*8 + ldp x21,x22,[x2,#8*2] + ldp x23,x24,[x2,#8*4] + ldp x25,x26,[x2,#8*6] + add x2,x2,#8*8 + stp x14,x15,[x0,#8*4] + sbcs x14,x19,x6 + stp x16,x17,[x0,#8*6] + add x0,x0,#8*8 + sbcs x15,x20,x7 + cbnz x27,.Lsqr8x_sub + + sbcs x16,x21,x8 + mov x2,sp + add x1,sp,x5 + ldp x6,x7,[x3,#8*0] + sbcs x17,x22,x9 + stp x14,x15,[x0,#8*0] + sbcs x14,x23,x10 + ldp x8,x9,[x3,#8*2] + sbcs x15,x24,x11 + stp x16,x17,[x0,#8*2] + sbcs x16,x25,x12 + ldp x19,x20,[x1,#8*0] + sbcs x17,x26,x13 + ldp x21,x22,[x1,#8*2] + sbcs xzr,x30,xzr // did it borrow? + ldr x30,[x29,#8] // pull return address + stp x14,x15,[x0,#8*4] + stp x16,x17,[x0,#8*6] + + sub x27,x5,#8*4 +.Lsqr4x_cond_copy: + sub x27,x27,#8*4 + csel x14,x19,x6,lo + stp xzr,xzr,[x2,#8*0] + csel x15,x20,x7,lo + ldp x6,x7,[x3,#8*4] + ldp x19,x20,[x1,#8*4] + csel x16,x21,x8,lo + stp xzr,xzr,[x2,#8*2] + add x2,x2,#8*4 + csel x17,x22,x9,lo + ldp x8,x9,[x3,#8*6] + ldp x21,x22,[x1,#8*6] + add x1,x1,#8*4 + stp x14,x15,[x3,#8*0] + stp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + stp xzr,xzr,[x1,#8*0] + stp xzr,xzr,[x1,#8*2] + cbnz x27,.Lsqr4x_cond_copy + + csel x14,x19,x6,lo + stp xzr,xzr,[x2,#8*0] + csel x15,x20,x7,lo + stp xzr,xzr,[x2,#8*2] + csel x16,x21,x8,lo + csel x17,x22,x9,lo + stp x14,x15,[x3,#8*0] + stp x16,x17,[x3,#8*2] + + b .Lsqr8x_done + +.align 4 +.Lsqr8x8_post_condition: + adc x28,xzr,xzr + ldr x30,[x29,#8] // pull return address + // x19-7,x28 hold result, x6-7 hold modulus + subs x6,x19,x6 + ldr x1,[x29,#96] // pull rp + sbcs x7,x20,x7 + stp xzr,xzr,[sp,#8*0] + sbcs x8,x21,x8 + stp xzr,xzr,[sp,#8*2] + sbcs x9,x22,x9 + stp xzr,xzr,[sp,#8*4] + sbcs x10,x23,x10 + stp xzr,xzr,[sp,#8*6] + sbcs x11,x24,x11 + stp xzr,xzr,[sp,#8*8] + sbcs x12,x25,x12 + stp xzr,xzr,[sp,#8*10] + sbcs x13,x26,x13 + stp xzr,xzr,[sp,#8*12] + sbcs x28,x28,xzr // did it borrow? + stp xzr,xzr,[sp,#8*14] + + // x6-7 hold result-modulus + csel x6,x19,x6,lo + csel x7,x20,x7,lo + csel x8,x21,x8,lo + csel x9,x22,x9,lo + stp x6,x7,[x1,#8*0] + csel x10,x23,x10,lo + csel x11,x24,x11,lo + stp x8,x9,[x1,#8*2] + csel x12,x25,x12,lo + csel x13,x26,x13,lo + stp x10,x11,[x1,#8*4] + stp x12,x13,[x1,#8*6] + +.Lsqr8x_done: + ldp x19,x20,[x29,#16] + mov sp,x29 + ldp x21,x22,[x29,#32] + mov x0,#1 + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldr x29,[sp],#128 +.inst 0xd50323bf // autiasp + ret +.size __bn_sqr8x_mont,.-__bn_sqr8x_mont +.type __bn_mul4x_mont,%function +.align 5 +__bn_mul4x_mont: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + + sub x26,sp,x5,lsl#3 + lsl x5,x5,#3 + ldr x4,[x4] // *n0 + sub sp,x26,#8*4 // alloca + + add x10,x2,x5 + add x27,x1,x5 + stp x0,x10,[x29,#96] // offload rp and &b[num] + + ldr x24,[x2,#8*0] // b[0] + ldp x6,x7,[x1,#8*0] // a[0..3] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + mov x19,xzr + mov x20,xzr + mov x21,xzr + mov x22,xzr + ldp x14,x15,[x3,#8*0] // n[0..3] + ldp x16,x17,[x3,#8*2] + adds x3,x3,#8*4 // clear carry bit + mov x0,xzr + mov x28,#0 + mov x26,sp + +.Loop_mul4x_1st_reduction: + mul x10,x6,x24 // lo(a[0..3]*b[0]) + adc x0,x0,xzr // modulo-scheduled + mul x11,x7,x24 + add x28,x28,#8 + mul x12,x8,x24 + and x28,x28,#31 + mul x13,x9,x24 + adds x19,x19,x10 + umulh x10,x6,x24 // hi(a[0..3]*b[0]) + adcs x20,x20,x11 + mul x25,x19,x4 // t[0]*n0 + adcs x21,x21,x12 + umulh x11,x7,x24 + adcs x22,x22,x13 + umulh x12,x8,x24 + adc x23,xzr,xzr + umulh x13,x9,x24 + ldr x24,[x2,x28] // next b[i] (or b[0]) + adds x20,x20,x10 + // (*) mul x10,x14,x25 // lo(n[0..3]*t[0]*n0) + str x25,[x26],#8 // put aside t[0]*n0 for tail processing + adcs x21,x21,x11 + mul x11,x15,x25 + adcs x22,x22,x12 + mul x12,x16,x25 + adc x23,x23,x13 // can't overflow + mul x13,x17,x25 + // (*) adds xzr,x19,x10 + subs xzr,x19,#1 // (*) + umulh x10,x14,x25 // hi(n[0..3]*t[0]*n0) + adcs x19,x20,x11 + umulh x11,x15,x25 + adcs x20,x21,x12 + umulh x12,x16,x25 + adcs x21,x22,x13 + umulh x13,x17,x25 + adcs x22,x23,x0 + adc x0,xzr,xzr + adds x19,x19,x10 + sub x10,x27,x1 + adcs x20,x20,x11 + adcs x21,x21,x12 + adcs x22,x22,x13 + //adc x0,x0,xzr + cbnz x28,.Loop_mul4x_1st_reduction + + cbz x10,.Lmul4x4_post_condition + + ldp x6,x7,[x1,#8*0] // a[4..7] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + ldr x25,[sp] // a[0]*n0 + ldp x14,x15,[x3,#8*0] // n[4..7] + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + +.Loop_mul4x_1st_tail: + mul x10,x6,x24 // lo(a[4..7]*b[i]) + adc x0,x0,xzr // modulo-scheduled + mul x11,x7,x24 + add x28,x28,#8 + mul x12,x8,x24 + and x28,x28,#31 + mul x13,x9,x24 + adds x19,x19,x10 + umulh x10,x6,x24 // hi(a[4..7]*b[i]) + adcs x20,x20,x11 + umulh x11,x7,x24 + adcs x21,x21,x12 + umulh x12,x8,x24 + adcs x22,x22,x13 + umulh x13,x9,x24 + adc x23,xzr,xzr + ldr x24,[x2,x28] // next b[i] (or b[0]) + adds x20,x20,x10 + mul x10,x14,x25 // lo(n[4..7]*a[0]*n0) + adcs x21,x21,x11 + mul x11,x15,x25 + adcs x22,x22,x12 + mul x12,x16,x25 + adc x23,x23,x13 // can't overflow + mul x13,x17,x25 + adds x19,x19,x10 + umulh x10,x14,x25 // hi(n[4..7]*a[0]*n0) + adcs x20,x20,x11 + umulh x11,x15,x25 + adcs x21,x21,x12 + umulh x12,x16,x25 + adcs x22,x22,x13 + adcs x23,x23,x0 + umulh x13,x17,x25 + adc x0,xzr,xzr + ldr x25,[sp,x28] // next t[0]*n0 + str x19,[x26],#8 // result!!! + adds x19,x20,x10 + sub x10,x27,x1 // done yet? + adcs x20,x21,x11 + adcs x21,x22,x12 + adcs x22,x23,x13 + //adc x0,x0,xzr + cbnz x28,.Loop_mul4x_1st_tail + + sub x11,x27,x5 // rewinded x1 + cbz x10,.Lmul4x_proceed + + ldp x6,x7,[x1,#8*0] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + ldp x14,x15,[x3,#8*0] + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + b .Loop_mul4x_1st_tail + +.align 5 +.Lmul4x_proceed: + ldr x24,[x2,#8*4]! // *++b + adc x30,x0,xzr + ldp x6,x7,[x11,#8*0] // a[0..3] + sub x3,x3,x5 // rewind np + ldp x8,x9,[x11,#8*2] + add x1,x11,#8*4 + + stp x19,x20,[x26,#8*0] // result!!! + ldp x19,x20,[sp,#8*4] // t[0..3] + stp x21,x22,[x26,#8*2] // result!!! + ldp x21,x22,[sp,#8*6] + + ldp x14,x15,[x3,#8*0] // n[0..3] + mov x26,sp + ldp x16,x17,[x3,#8*2] + adds x3,x3,#8*4 // clear carry bit + mov x0,xzr + +.align 4 +.Loop_mul4x_reduction: + mul x10,x6,x24 // lo(a[0..3]*b[4]) + adc x0,x0,xzr // modulo-scheduled + mul x11,x7,x24 + add x28,x28,#8 + mul x12,x8,x24 + and x28,x28,#31 + mul x13,x9,x24 + adds x19,x19,x10 + umulh x10,x6,x24 // hi(a[0..3]*b[4]) + adcs x20,x20,x11 + mul x25,x19,x4 // t[0]*n0 + adcs x21,x21,x12 + umulh x11,x7,x24 + adcs x22,x22,x13 + umulh x12,x8,x24 + adc x23,xzr,xzr + umulh x13,x9,x24 + ldr x24,[x2,x28] // next b[i] + adds x20,x20,x10 + // (*) mul x10,x14,x25 + str x25,[x26],#8 // put aside t[0]*n0 for tail processing + adcs x21,x21,x11 + mul x11,x15,x25 // lo(n[0..3]*t[0]*n0 + adcs x22,x22,x12 + mul x12,x16,x25 + adc x23,x23,x13 // can't overflow + mul x13,x17,x25 + // (*) adds xzr,x19,x10 + subs xzr,x19,#1 // (*) + umulh x10,x14,x25 // hi(n[0..3]*t[0]*n0 + adcs x19,x20,x11 + umulh x11,x15,x25 + adcs x20,x21,x12 + umulh x12,x16,x25 + adcs x21,x22,x13 + umulh x13,x17,x25 + adcs x22,x23,x0 + adc x0,xzr,xzr + adds x19,x19,x10 + adcs x20,x20,x11 + adcs x21,x21,x12 + adcs x22,x22,x13 + //adc x0,x0,xzr + cbnz x28,.Loop_mul4x_reduction + + adc x0,x0,xzr + ldp x10,x11,[x26,#8*4] // t[4..7] + ldp x12,x13,[x26,#8*6] + ldp x6,x7,[x1,#8*0] // a[4..7] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + adds x19,x19,x10 + adcs x20,x20,x11 + adcs x21,x21,x12 + adcs x22,x22,x13 + //adc x0,x0,xzr + + ldr x25,[sp] // t[0]*n0 + ldp x14,x15,[x3,#8*0] // n[4..7] + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + +.align 4 +.Loop_mul4x_tail: + mul x10,x6,x24 // lo(a[4..7]*b[4]) + adc x0,x0,xzr // modulo-scheduled + mul x11,x7,x24 + add x28,x28,#8 + mul x12,x8,x24 + and x28,x28,#31 + mul x13,x9,x24 + adds x19,x19,x10 + umulh x10,x6,x24 // hi(a[4..7]*b[4]) + adcs x20,x20,x11 + umulh x11,x7,x24 + adcs x21,x21,x12 + umulh x12,x8,x24 + adcs x22,x22,x13 + umulh x13,x9,x24 + adc x23,xzr,xzr + ldr x24,[x2,x28] // next b[i] + adds x20,x20,x10 + mul x10,x14,x25 // lo(n[4..7]*t[0]*n0) + adcs x21,x21,x11 + mul x11,x15,x25 + adcs x22,x22,x12 + mul x12,x16,x25 + adc x23,x23,x13 // can't overflow + mul x13,x17,x25 + adds x19,x19,x10 + umulh x10,x14,x25 // hi(n[4..7]*t[0]*n0) + adcs x20,x20,x11 + umulh x11,x15,x25 + adcs x21,x21,x12 + umulh x12,x16,x25 + adcs x22,x22,x13 + umulh x13,x17,x25 + adcs x23,x23,x0 + ldr x25,[sp,x28] // next a[0]*n0 + adc x0,xzr,xzr + str x19,[x26],#8 // result!!! + adds x19,x20,x10 + sub x10,x27,x1 // done yet? + adcs x20,x21,x11 + adcs x21,x22,x12 + adcs x22,x23,x13 + //adc x0,x0,xzr + cbnz x28,.Loop_mul4x_tail + + sub x11,x3,x5 // rewinded np? + adc x0,x0,xzr + cbz x10,.Loop_mul4x_break + + ldp x10,x11,[x26,#8*4] + ldp x12,x13,[x26,#8*6] + ldp x6,x7,[x1,#8*0] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + adds x19,x19,x10 + adcs x20,x20,x11 + adcs x21,x21,x12 + adcs x22,x22,x13 + //adc x0,x0,xzr + ldp x14,x15,[x3,#8*0] + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + b .Loop_mul4x_tail + +.align 4 +.Loop_mul4x_break: + ldp x12,x13,[x29,#96] // pull rp and &b[num] + adds x19,x19,x30 + add x2,x2,#8*4 // bp++ + adcs x20,x20,xzr + sub x1,x1,x5 // rewind ap + adcs x21,x21,xzr + stp x19,x20,[x26,#8*0] // result!!! + adcs x22,x22,xzr + ldp x19,x20,[sp,#8*4] // t[0..3] + adc x30,x0,xzr + stp x21,x22,[x26,#8*2] // result!!! + cmp x2,x13 // done yet? + ldp x21,x22,[sp,#8*6] + ldp x14,x15,[x11,#8*0] // n[0..3] + ldp x16,x17,[x11,#8*2] + add x3,x11,#8*4 + b.eq .Lmul4x_post + + ldr x24,[x2] + ldp x6,x7,[x1,#8*0] // a[0..3] + ldp x8,x9,[x1,#8*2] + adds x1,x1,#8*4 // clear carry bit + mov x0,xzr + mov x26,sp + b .Loop_mul4x_reduction + +.align 4 +.Lmul4x_post: + // Final step. We see if result is larger than modulus, and + // if it is, subtract the modulus. But comparison implies + // subtraction. So we subtract modulus, see if it borrowed, + // and conditionally copy original value. + mov x0,x12 + mov x27,x12 // x0 copy + subs x10,x19,x14 + add x26,sp,#8*8 + sbcs x11,x20,x15 + sub x28,x5,#8*4 + +.Lmul4x_sub: + sbcs x12,x21,x16 + ldp x14,x15,[x3,#8*0] + sub x28,x28,#8*4 + ldp x19,x20,[x26,#8*0] + sbcs x13,x22,x17 + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + ldp x21,x22,[x26,#8*2] + add x26,x26,#8*4 + stp x10,x11,[x0,#8*0] + sbcs x10,x19,x14 + stp x12,x13,[x0,#8*2] + add x0,x0,#8*4 + sbcs x11,x20,x15 + cbnz x28,.Lmul4x_sub + + sbcs x12,x21,x16 + mov x26,sp + add x1,sp,#8*4 + ldp x6,x7,[x27,#8*0] + sbcs x13,x22,x17 + stp x10,x11,[x0,#8*0] + ldp x8,x9,[x27,#8*2] + stp x12,x13,[x0,#8*2] + ldp x19,x20,[x1,#8*0] + ldp x21,x22,[x1,#8*2] + sbcs xzr,x30,xzr // did it borrow? + ldr x30,[x29,#8] // pull return address + + sub x28,x5,#8*4 +.Lmul4x_cond_copy: + sub x28,x28,#8*4 + csel x10,x19,x6,lo + stp xzr,xzr,[x26,#8*0] + csel x11,x20,x7,lo + ldp x6,x7,[x27,#8*4] + ldp x19,x20,[x1,#8*4] + csel x12,x21,x8,lo + stp xzr,xzr,[x26,#8*2] + add x26,x26,#8*4 + csel x13,x22,x9,lo + ldp x8,x9,[x27,#8*6] + ldp x21,x22,[x1,#8*6] + add x1,x1,#8*4 + stp x10,x11,[x27,#8*0] + stp x12,x13,[x27,#8*2] + add x27,x27,#8*4 + cbnz x28,.Lmul4x_cond_copy + + csel x10,x19,x6,lo + stp xzr,xzr,[x26,#8*0] + csel x11,x20,x7,lo + stp xzr,xzr,[x26,#8*2] + csel x12,x21,x8,lo + stp xzr,xzr,[x26,#8*3] + csel x13,x22,x9,lo + stp xzr,xzr,[x26,#8*4] + stp x10,x11,[x27,#8*0] + stp x12,x13,[x27,#8*2] + + b .Lmul4x_done + +.align 4 +.Lmul4x4_post_condition: + adc x0,x0,xzr + ldr x1,[x29,#96] // pull rp + // x19-3,x0 hold result, x14-7 hold modulus + subs x6,x19,x14 + ldr x30,[x29,#8] // pull return address + sbcs x7,x20,x15 + stp xzr,xzr,[sp,#8*0] + sbcs x8,x21,x16 + stp xzr,xzr,[sp,#8*2] + sbcs x9,x22,x17 + stp xzr,xzr,[sp,#8*4] + sbcs xzr,x0,xzr // did it borrow? + stp xzr,xzr,[sp,#8*6] + + // x6-3 hold result-modulus + csel x6,x19,x6,lo + csel x7,x20,x7,lo + csel x8,x21,x8,lo + csel x9,x22,x9,lo + stp x6,x7,[x1,#8*0] + stp x8,x9,[x1,#8*2] + +.Lmul4x_done: + ldp x19,x20,[x29,#16] + mov sp,x29 + ldp x21,x22,[x29,#32] + mov x0,#1 + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldr x29,[sp],#128 +.inst 0xd50323bf // autiasp + ret +.size __bn_mul4x_mont,.-__bn_mul4x_mont +.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 4 diff --git a/vere/ext/openssl/gen/linux-aarch64/crypto/chacha/chacha-armv8.S b/vere/ext/openssl/gen/linux-aarch64/crypto/chacha/chacha-armv8.S new file mode 100644 index 0000000..f4676cb --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/crypto/chacha/chacha-armv8.S @@ -0,0 +1,1977 @@ +#include "arm_arch.h" + +.text + + +.hidden OPENSSL_armcap_P + +.align 5 +.Lsigma: +.quad 0x3320646e61707865,0x6b20657479622d32 // endian-neutral +.Lone: +.long 1,0,0,0 +.LOPENSSL_armcap_P: +#ifdef __ILP32__ +.long OPENSSL_armcap_P-. +#else +.quad OPENSSL_armcap_P-. +#endif +.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 + +.globl ChaCha20_ctr32 +.type ChaCha20_ctr32,%function +.align 5 +ChaCha20_ctr32: + cbz x2,.Labort + adr x5,.LOPENSSL_armcap_P + cmp x2,#192 + b.lo .Lshort +#ifdef __ILP32__ + ldrsw x6,[x5] +#else + ldr x6,[x5] +#endif + ldr w17,[x6,x5] + tst w17,#ARMV7_NEON + b.ne ChaCha20_neon + +.Lshort: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + + adr x5,.Lsigma + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#64 + + ldp x22,x23,[x5] // load sigma + ldp x24,x25,[x3] // load key + ldp x26,x27,[x3,#16] + ldp x28,x30,[x4] // load counter +#ifdef __ARMEB__ + ror x24,x24,#32 + ror x25,x25,#32 + ror x26,x26,#32 + ror x27,x27,#32 + ror x28,x28,#32 + ror x30,x30,#32 +#endif + +.Loop_outer: + mov w5,w22 // unpack key block + lsr x6,x22,#32 + mov w7,w23 + lsr x8,x23,#32 + mov w9,w24 + lsr x10,x24,#32 + mov w11,w25 + lsr x12,x25,#32 + mov w13,w26 + lsr x14,x26,#32 + mov w15,w27 + lsr x16,x27,#32 + mov w17,w28 + lsr x19,x28,#32 + mov w20,w30 + lsr x21,x30,#32 + + mov x4,#10 + subs x2,x2,#64 +.Loop: + sub x4,x4,#1 + add w5,w5,w9 + add w6,w6,w10 + add w7,w7,w11 + add w8,w8,w12 + eor w17,w17,w5 + eor w19,w19,w6 + eor w20,w20,w7 + eor w21,w21,w8 + ror w17,w17,#16 + ror w19,w19,#16 + ror w20,w20,#16 + ror w21,w21,#16 + add w13,w13,w17 + add w14,w14,w19 + add w15,w15,w20 + add w16,w16,w21 + eor w9,w9,w13 + eor w10,w10,w14 + eor w11,w11,w15 + eor w12,w12,w16 + ror w9,w9,#20 + ror w10,w10,#20 + ror w11,w11,#20 + ror w12,w12,#20 + add w5,w5,w9 + add w6,w6,w10 + add w7,w7,w11 + add w8,w8,w12 + eor w17,w17,w5 + eor w19,w19,w6 + eor w20,w20,w7 + eor w21,w21,w8 + ror w17,w17,#24 + ror w19,w19,#24 + ror w20,w20,#24 + ror w21,w21,#24 + add w13,w13,w17 + add w14,w14,w19 + add w15,w15,w20 + add w16,w16,w21 + eor w9,w9,w13 + eor w10,w10,w14 + eor w11,w11,w15 + eor w12,w12,w16 + ror w9,w9,#25 + ror w10,w10,#25 + ror w11,w11,#25 + ror w12,w12,#25 + add w5,w5,w10 + add w6,w6,w11 + add w7,w7,w12 + add w8,w8,w9 + eor w21,w21,w5 + eor w17,w17,w6 + eor w19,w19,w7 + eor w20,w20,w8 + ror w21,w21,#16 + ror w17,w17,#16 + ror w19,w19,#16 + ror w20,w20,#16 + add w15,w15,w21 + add w16,w16,w17 + add w13,w13,w19 + add w14,w14,w20 + eor w10,w10,w15 + eor w11,w11,w16 + eor w12,w12,w13 + eor w9,w9,w14 + ror w10,w10,#20 + ror w11,w11,#20 + ror w12,w12,#20 + ror w9,w9,#20 + add w5,w5,w10 + add w6,w6,w11 + add w7,w7,w12 + add w8,w8,w9 + eor w21,w21,w5 + eor w17,w17,w6 + eor w19,w19,w7 + eor w20,w20,w8 + ror w21,w21,#24 + ror w17,w17,#24 + ror w19,w19,#24 + ror w20,w20,#24 + add w15,w15,w21 + add w16,w16,w17 + add w13,w13,w19 + add w14,w14,w20 + eor w10,w10,w15 + eor w11,w11,w16 + eor w12,w12,w13 + eor w9,w9,w14 + ror w10,w10,#25 + ror w11,w11,#25 + ror w12,w12,#25 + ror w9,w9,#25 + cbnz x4,.Loop + + add w5,w5,w22 // accumulate key block + add x6,x6,x22,lsr#32 + add w7,w7,w23 + add x8,x8,x23,lsr#32 + add w9,w9,w24 + add x10,x10,x24,lsr#32 + add w11,w11,w25 + add x12,x12,x25,lsr#32 + add w13,w13,w26 + add x14,x14,x26,lsr#32 + add w15,w15,w27 + add x16,x16,x27,lsr#32 + add w17,w17,w28 + add x19,x19,x28,lsr#32 + add w20,w20,w30 + add x21,x21,x30,lsr#32 + + b.lo .Ltail + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + ldp x6,x8,[x1,#0] // load input + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + ldp x10,x12,[x1,#16] + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + ldp x14,x16,[x1,#32] + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 + ldp x19,x21,[x1,#48] + add x1,x1,#64 +#ifdef __ARMEB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor x15,x15,x16 + eor x17,x17,x19 + eor x20,x20,x21 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#1 // increment counter + stp x9,x11,[x0,#16] + stp x13,x15,[x0,#32] + stp x17,x20,[x0,#48] + add x0,x0,#64 + + b.hi .Loop_outer + + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp +.Labort: + ret + +.align 4 +.Ltail: + add x2,x2,#64 +.Less_than_64: + sub x0,x0,#1 + add x1,x1,x2 + add x0,x0,x2 + add x4,sp,x2 + neg x2,x2 + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 +#ifdef __ARMEB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + stp x5,x7,[sp,#0] + stp x9,x11,[sp,#16] + stp x13,x15,[sp,#32] + stp x17,x20,[sp,#48] + +.Loop_tail: + ldrb w10,[x1,x2] + ldrb w11,[x4,x2] + add x2,x2,#1 + eor w10,w10,w11 + strb w10,[x0,x2] + cbnz x2,.Loop_tail + + stp xzr,xzr,[sp,#0] + stp xzr,xzr,[sp,#16] + stp xzr,xzr,[sp,#32] + stp xzr,xzr,[sp,#48] + + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp + ret +.size ChaCha20_ctr32,.-ChaCha20_ctr32 + +.type ChaCha20_neon,%function +.align 5 +ChaCha20_neon: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + + adr x5,.Lsigma + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + cmp x2,#512 + b.hs .L512_or_more_neon + + sub sp,sp,#64 + + ldp x22,x23,[x5] // load sigma + ld1 {v24.4s},[x5],#16 + ldp x24,x25,[x3] // load key + ldp x26,x27,[x3,#16] + ld1 {v25.4s,v26.4s},[x3] + ldp x28,x30,[x4] // load counter + ld1 {v27.4s},[x4] + ld1 {v31.4s},[x5] +#ifdef __ARMEB__ + rev64 v24.4s,v24.4s + ror x24,x24,#32 + ror x25,x25,#32 + ror x26,x26,#32 + ror x27,x27,#32 + ror x28,x28,#32 + ror x30,x30,#32 +#endif + add v27.4s,v27.4s,v31.4s // += 1 + add v28.4s,v27.4s,v31.4s + add v29.4s,v28.4s,v31.4s + shl v31.4s,v31.4s,#2 // 1 -> 4 + +.Loop_outer_neon: + mov w5,w22 // unpack key block + lsr x6,x22,#32 + mov v0.16b,v24.16b + mov w7,w23 + lsr x8,x23,#32 + mov v4.16b,v24.16b + mov w9,w24 + lsr x10,x24,#32 + mov v16.16b,v24.16b + mov w11,w25 + mov v1.16b,v25.16b + lsr x12,x25,#32 + mov v5.16b,v25.16b + mov w13,w26 + mov v17.16b,v25.16b + lsr x14,x26,#32 + mov v3.16b,v27.16b + mov w15,w27 + mov v7.16b,v28.16b + lsr x16,x27,#32 + mov v19.16b,v29.16b + mov w17,w28 + mov v2.16b,v26.16b + lsr x19,x28,#32 + mov v6.16b,v26.16b + mov w20,w30 + mov v18.16b,v26.16b + lsr x21,x30,#32 + + mov x4,#10 + subs x2,x2,#256 +.Loop_neon: + sub x4,x4,#1 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v16.4s,v16.4s,v17.4s + add w7,w7,w11 + eor v3.16b,v3.16b,v0.16b + add w8,w8,w12 + eor v7.16b,v7.16b,v4.16b + eor w17,w17,w5 + eor v19.16b,v19.16b,v16.16b + eor w19,w19,w6 + rev32 v3.8h,v3.8h + eor w20,w20,w7 + rev32 v7.8h,v7.8h + eor w21,w21,w8 + rev32 v19.8h,v19.8h + ror w17,w17,#16 + add v2.4s,v2.4s,v3.4s + ror w19,w19,#16 + add v6.4s,v6.4s,v7.4s + ror w20,w20,#16 + add v18.4s,v18.4s,v19.4s + ror w21,w21,#16 + eor v20.16b,v1.16b,v2.16b + add w13,w13,w17 + eor v21.16b,v5.16b,v6.16b + add w14,w14,w19 + eor v22.16b,v17.16b,v18.16b + add w15,w15,w20 + ushr v1.4s,v20.4s,#20 + add w16,w16,w21 + ushr v5.4s,v21.4s,#20 + eor w9,w9,w13 + ushr v17.4s,v22.4s,#20 + eor w10,w10,w14 + sli v1.4s,v20.4s,#12 + eor w11,w11,w15 + sli v5.4s,v21.4s,#12 + eor w12,w12,w16 + sli v17.4s,v22.4s,#12 + ror w9,w9,#20 + add v0.4s,v0.4s,v1.4s + ror w10,w10,#20 + add v4.4s,v4.4s,v5.4s + ror w11,w11,#20 + add v16.4s,v16.4s,v17.4s + ror w12,w12,#20 + eor v20.16b,v3.16b,v0.16b + add w5,w5,w9 + eor v21.16b,v7.16b,v4.16b + add w6,w6,w10 + eor v22.16b,v19.16b,v16.16b + add w7,w7,w11 + ushr v3.4s,v20.4s,#24 + add w8,w8,w12 + ushr v7.4s,v21.4s,#24 + eor w17,w17,w5 + ushr v19.4s,v22.4s,#24 + eor w19,w19,w6 + sli v3.4s,v20.4s,#8 + eor w20,w20,w7 + sli v7.4s,v21.4s,#8 + eor w21,w21,w8 + sli v19.4s,v22.4s,#8 + ror w17,w17,#24 + add v2.4s,v2.4s,v3.4s + ror w19,w19,#24 + add v6.4s,v6.4s,v7.4s + ror w20,w20,#24 + add v18.4s,v18.4s,v19.4s + ror w21,w21,#24 + eor v20.16b,v1.16b,v2.16b + add w13,w13,w17 + eor v21.16b,v5.16b,v6.16b + add w14,w14,w19 + eor v22.16b,v17.16b,v18.16b + add w15,w15,w20 + ushr v1.4s,v20.4s,#25 + add w16,w16,w21 + ushr v5.4s,v21.4s,#25 + eor w9,w9,w13 + ushr v17.4s,v22.4s,#25 + eor w10,w10,w14 + sli v1.4s,v20.4s,#7 + eor w11,w11,w15 + sli v5.4s,v21.4s,#7 + eor w12,w12,w16 + sli v17.4s,v22.4s,#7 + ror w9,w9,#25 + ext v2.16b,v2.16b,v2.16b,#8 + ror w10,w10,#25 + ext v6.16b,v6.16b,v6.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v3.16b,v3.16b,v3.16b,#12 + ext v7.16b,v7.16b,v7.16b,#12 + ext v19.16b,v19.16b,v19.16b,#12 + ext v1.16b,v1.16b,v1.16b,#4 + ext v5.16b,v5.16b,v5.16b,#4 + ext v17.16b,v17.16b,v17.16b,#4 + add v0.4s,v0.4s,v1.4s + add w5,w5,w10 + add v4.4s,v4.4s,v5.4s + add w6,w6,w11 + add v16.4s,v16.4s,v17.4s + add w7,w7,w12 + eor v3.16b,v3.16b,v0.16b + add w8,w8,w9 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w5 + eor v19.16b,v19.16b,v16.16b + eor w17,w17,w6 + rev32 v3.8h,v3.8h + eor w19,w19,w7 + rev32 v7.8h,v7.8h + eor w20,w20,w8 + rev32 v19.8h,v19.8h + ror w21,w21,#16 + add v2.4s,v2.4s,v3.4s + ror w17,w17,#16 + add v6.4s,v6.4s,v7.4s + ror w19,w19,#16 + add v18.4s,v18.4s,v19.4s + ror w20,w20,#16 + eor v20.16b,v1.16b,v2.16b + add w15,w15,w21 + eor v21.16b,v5.16b,v6.16b + add w16,w16,w17 + eor v22.16b,v17.16b,v18.16b + add w13,w13,w19 + ushr v1.4s,v20.4s,#20 + add w14,w14,w20 + ushr v5.4s,v21.4s,#20 + eor w10,w10,w15 + ushr v17.4s,v22.4s,#20 + eor w11,w11,w16 + sli v1.4s,v20.4s,#12 + eor w12,w12,w13 + sli v5.4s,v21.4s,#12 + eor w9,w9,w14 + sli v17.4s,v22.4s,#12 + ror w10,w10,#20 + add v0.4s,v0.4s,v1.4s + ror w11,w11,#20 + add v4.4s,v4.4s,v5.4s + ror w12,w12,#20 + add v16.4s,v16.4s,v17.4s + ror w9,w9,#20 + eor v20.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v21.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v22.16b,v19.16b,v16.16b + add w7,w7,w12 + ushr v3.4s,v20.4s,#24 + add w8,w8,w9 + ushr v7.4s,v21.4s,#24 + eor w21,w21,w5 + ushr v19.4s,v22.4s,#24 + eor w17,w17,w6 + sli v3.4s,v20.4s,#8 + eor w19,w19,w7 + sli v7.4s,v21.4s,#8 + eor w20,w20,w8 + sli v19.4s,v22.4s,#8 + ror w21,w21,#24 + add v2.4s,v2.4s,v3.4s + ror w17,w17,#24 + add v6.4s,v6.4s,v7.4s + ror w19,w19,#24 + add v18.4s,v18.4s,v19.4s + ror w20,w20,#24 + eor v20.16b,v1.16b,v2.16b + add w15,w15,w21 + eor v21.16b,v5.16b,v6.16b + add w16,w16,w17 + eor v22.16b,v17.16b,v18.16b + add w13,w13,w19 + ushr v1.4s,v20.4s,#25 + add w14,w14,w20 + ushr v5.4s,v21.4s,#25 + eor w10,w10,w15 + ushr v17.4s,v22.4s,#25 + eor w11,w11,w16 + sli v1.4s,v20.4s,#7 + eor w12,w12,w13 + sli v5.4s,v21.4s,#7 + eor w9,w9,w14 + sli v17.4s,v22.4s,#7 + ror w10,w10,#25 + ext v2.16b,v2.16b,v2.16b,#8 + ror w11,w11,#25 + ext v6.16b,v6.16b,v6.16b,#8 + ror w12,w12,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#4 + ext v7.16b,v7.16b,v7.16b,#4 + ext v19.16b,v19.16b,v19.16b,#4 + ext v1.16b,v1.16b,v1.16b,#12 + ext v5.16b,v5.16b,v5.16b,#12 + ext v17.16b,v17.16b,v17.16b,#12 + cbnz x4,.Loop_neon + + add w5,w5,w22 // accumulate key block + add v0.4s,v0.4s,v24.4s + add x6,x6,x22,lsr#32 + add v4.4s,v4.4s,v24.4s + add w7,w7,w23 + add v16.4s,v16.4s,v24.4s + add x8,x8,x23,lsr#32 + add v2.4s,v2.4s,v26.4s + add w9,w9,w24 + add v6.4s,v6.4s,v26.4s + add x10,x10,x24,lsr#32 + add v18.4s,v18.4s,v26.4s + add w11,w11,w25 + add v3.4s,v3.4s,v27.4s + add x12,x12,x25,lsr#32 + add w13,w13,w26 + add v7.4s,v7.4s,v28.4s + add x14,x14,x26,lsr#32 + add w15,w15,w27 + add v19.4s,v19.4s,v29.4s + add x16,x16,x27,lsr#32 + add w17,w17,w28 + add v1.4s,v1.4s,v25.4s + add x19,x19,x28,lsr#32 + add w20,w20,w30 + add v5.4s,v5.4s,v25.4s + add x21,x21,x30,lsr#32 + add v17.4s,v17.4s,v25.4s + + b.lo .Ltail_neon + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + ldp x6,x8,[x1,#0] // load input + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + ldp x10,x12,[x1,#16] + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + ldp x14,x16,[x1,#32] + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 + ldp x19,x21,[x1,#48] + add x1,x1,#64 +#ifdef __ARMEB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor v0.16b,v0.16b,v20.16b + eor x15,x15,x16 + eor v1.16b,v1.16b,v21.16b + eor x17,x17,x19 + eor v2.16b,v2.16b,v22.16b + eor x20,x20,x21 + eor v3.16b,v3.16b,v23.16b + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#4 // increment counter + stp x9,x11,[x0,#16] + add v27.4s,v27.4s,v31.4s // += 4 + stp x13,x15,[x0,#32] + add v28.4s,v28.4s,v31.4s + stp x17,x20,[x0,#48] + add v29.4s,v29.4s,v31.4s + add x0,x0,#64 + + st1 {v0.16b,v1.16b,v2.16b,v3.16b},[x0],#64 + ld1 {v0.16b,v1.16b,v2.16b,v3.16b},[x1],#64 + + eor v4.16b,v4.16b,v20.16b + eor v5.16b,v5.16b,v21.16b + eor v6.16b,v6.16b,v22.16b + eor v7.16b,v7.16b,v23.16b + st1 {v4.16b,v5.16b,v6.16b,v7.16b},[x0],#64 + + eor v16.16b,v16.16b,v0.16b + eor v17.16b,v17.16b,v1.16b + eor v18.16b,v18.16b,v2.16b + eor v19.16b,v19.16b,v3.16b + st1 {v16.16b,v17.16b,v18.16b,v19.16b},[x0],#64 + + b.hi .Loop_outer_neon + + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp + ret + +.Ltail_neon: + add x2,x2,#256 + cmp x2,#64 + b.lo .Less_than_64 + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + ldp x6,x8,[x1,#0] // load input + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + ldp x10,x12,[x1,#16] + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + ldp x14,x16,[x1,#32] + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 + ldp x19,x21,[x1,#48] + add x1,x1,#64 +#ifdef __ARMEB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor x15,x15,x16 + eor x17,x17,x19 + eor x20,x20,x21 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#4 // increment counter + stp x9,x11,[x0,#16] + stp x13,x15,[x0,#32] + stp x17,x20,[x0,#48] + add x0,x0,#64 + b.eq .Ldone_neon + sub x2,x2,#64 + cmp x2,#64 + b.lo .Less_than_128 + + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + eor v0.16b,v0.16b,v20.16b + eor v1.16b,v1.16b,v21.16b + eor v2.16b,v2.16b,v22.16b + eor v3.16b,v3.16b,v23.16b + st1 {v0.16b,v1.16b,v2.16b,v3.16b},[x0],#64 + b.eq .Ldone_neon + sub x2,x2,#64 + cmp x2,#64 + b.lo .Less_than_192 + + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + eor v4.16b,v4.16b,v20.16b + eor v5.16b,v5.16b,v21.16b + eor v6.16b,v6.16b,v22.16b + eor v7.16b,v7.16b,v23.16b + st1 {v4.16b,v5.16b,v6.16b,v7.16b},[x0],#64 + b.eq .Ldone_neon + sub x2,x2,#64 + + st1 {v16.16b,v17.16b,v18.16b,v19.16b},[sp] + b .Last_neon + +.Less_than_128: + st1 {v0.16b,v1.16b,v2.16b,v3.16b},[sp] + b .Last_neon +.Less_than_192: + st1 {v4.16b,v5.16b,v6.16b,v7.16b},[sp] + b .Last_neon + +.align 4 +.Last_neon: + sub x0,x0,#1 + add x1,x1,x2 + add x0,x0,x2 + add x4,sp,x2 + neg x2,x2 + +.Loop_tail_neon: + ldrb w10,[x1,x2] + ldrb w11,[x4,x2] + add x2,x2,#1 + eor w10,w10,w11 + strb w10,[x0,x2] + cbnz x2,.Loop_tail_neon + + stp xzr,xzr,[sp,#0] + stp xzr,xzr,[sp,#16] + stp xzr,xzr,[sp,#32] + stp xzr,xzr,[sp,#48] + +.Ldone_neon: + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp + ret +.size ChaCha20_neon,.-ChaCha20_neon +.type ChaCha20_512_neon,%function +.align 5 +ChaCha20_512_neon: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + + adr x5,.Lsigma + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + +.L512_or_more_neon: + sub sp,sp,#128+64 + + ldp x22,x23,[x5] // load sigma + ld1 {v24.4s},[x5],#16 + ldp x24,x25,[x3] // load key + ldp x26,x27,[x3,#16] + ld1 {v25.4s,v26.4s},[x3] + ldp x28,x30,[x4] // load counter + ld1 {v27.4s},[x4] + ld1 {v31.4s},[x5] +#ifdef __ARMEB__ + rev64 v24.4s,v24.4s + ror x24,x24,#32 + ror x25,x25,#32 + ror x26,x26,#32 + ror x27,x27,#32 + ror x28,x28,#32 + ror x30,x30,#32 +#endif + add v27.4s,v27.4s,v31.4s // += 1 + stp q24,q25,[sp,#0] // off-load key block, invariant part + add v27.4s,v27.4s,v31.4s // not typo + str q26,[sp,#32] + add v28.4s,v27.4s,v31.4s + add v29.4s,v28.4s,v31.4s + add v30.4s,v29.4s,v31.4s + shl v31.4s,v31.4s,#2 // 1 -> 4 + + stp d8,d9,[sp,#128+0] // meet ABI requirements + stp d10,d11,[sp,#128+16] + stp d12,d13,[sp,#128+32] + stp d14,d15,[sp,#128+48] + + sub x2,x2,#512 // not typo + +.Loop_outer_512_neon: + mov v0.16b,v24.16b + mov v4.16b,v24.16b + mov v8.16b,v24.16b + mov v12.16b,v24.16b + mov v16.16b,v24.16b + mov v20.16b,v24.16b + mov v1.16b,v25.16b + mov w5,w22 // unpack key block + mov v5.16b,v25.16b + lsr x6,x22,#32 + mov v9.16b,v25.16b + mov w7,w23 + mov v13.16b,v25.16b + lsr x8,x23,#32 + mov v17.16b,v25.16b + mov w9,w24 + mov v21.16b,v25.16b + lsr x10,x24,#32 + mov v3.16b,v27.16b + mov w11,w25 + mov v7.16b,v28.16b + lsr x12,x25,#32 + mov v11.16b,v29.16b + mov w13,w26 + mov v15.16b,v30.16b + lsr x14,x26,#32 + mov v2.16b,v26.16b + mov w15,w27 + mov v6.16b,v26.16b + lsr x16,x27,#32 + add v19.4s,v3.4s,v31.4s // +4 + mov w17,w28 + add v23.4s,v7.4s,v31.4s // +4 + lsr x19,x28,#32 + mov v10.16b,v26.16b + mov w20,w30 + mov v14.16b,v26.16b + lsr x21,x30,#32 + mov v18.16b,v26.16b + stp q27,q28,[sp,#48] // off-load key block, variable part + mov v22.16b,v26.16b + str q29,[sp,#80] + + mov x4,#5 + subs x2,x2,#512 +.Loop_upper_neon: + sub x4,x4,#1 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v8.4s,v8.4s,v9.4s + add w7,w7,w11 + add v12.4s,v12.4s,v13.4s + add w8,w8,w12 + add v16.4s,v16.4s,v17.4s + eor w17,w17,w5 + add v20.4s,v20.4s,v21.4s + eor w19,w19,w6 + eor v3.16b,v3.16b,v0.16b + eor w20,w20,w7 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w8 + eor v11.16b,v11.16b,v8.16b + ror w17,w17,#16 + eor v15.16b,v15.16b,v12.16b + ror w19,w19,#16 + eor v19.16b,v19.16b,v16.16b + ror w20,w20,#16 + eor v23.16b,v23.16b,v20.16b + ror w21,w21,#16 + rev32 v3.8h,v3.8h + add w13,w13,w17 + rev32 v7.8h,v7.8h + add w14,w14,w19 + rev32 v11.8h,v11.8h + add w15,w15,w20 + rev32 v15.8h,v15.8h + add w16,w16,w21 + rev32 v19.8h,v19.8h + eor w9,w9,w13 + rev32 v23.8h,v23.8h + eor w10,w10,w14 + add v2.4s,v2.4s,v3.4s + eor w11,w11,w15 + add v6.4s,v6.4s,v7.4s + eor w12,w12,w16 + add v10.4s,v10.4s,v11.4s + ror w9,w9,#20 + add v14.4s,v14.4s,v15.4s + ror w10,w10,#20 + add v18.4s,v18.4s,v19.4s + ror w11,w11,#20 + add v22.4s,v22.4s,v23.4s + ror w12,w12,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w9 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w10 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w11 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w12 + eor v28.16b,v17.16b,v18.16b + eor w17,w17,w5 + eor v29.16b,v21.16b,v22.16b + eor w19,w19,w6 + ushr v1.4s,v24.4s,#20 + eor w20,w20,w7 + ushr v5.4s,v25.4s,#20 + eor w21,w21,w8 + ushr v9.4s,v26.4s,#20 + ror w17,w17,#24 + ushr v13.4s,v27.4s,#20 + ror w19,w19,#24 + ushr v17.4s,v28.4s,#20 + ror w20,w20,#24 + ushr v21.4s,v29.4s,#20 + ror w21,w21,#24 + sli v1.4s,v24.4s,#12 + add w13,w13,w17 + sli v5.4s,v25.4s,#12 + add w14,w14,w19 + sli v9.4s,v26.4s,#12 + add w15,w15,w20 + sli v13.4s,v27.4s,#12 + add w16,w16,w21 + sli v17.4s,v28.4s,#12 + eor w9,w9,w13 + sli v21.4s,v29.4s,#12 + eor w10,w10,w14 + add v0.4s,v0.4s,v1.4s + eor w11,w11,w15 + add v4.4s,v4.4s,v5.4s + eor w12,w12,w16 + add v8.4s,v8.4s,v9.4s + ror w9,w9,#25 + add v12.4s,v12.4s,v13.4s + ror w10,w10,#25 + add v16.4s,v16.4s,v17.4s + ror w11,w11,#25 + add v20.4s,v20.4s,v21.4s + ror w12,w12,#25 + eor v24.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v25.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v26.16b,v11.16b,v8.16b + add w7,w7,w12 + eor v27.16b,v15.16b,v12.16b + add w8,w8,w9 + eor v28.16b,v19.16b,v16.16b + eor w21,w21,w5 + eor v29.16b,v23.16b,v20.16b + eor w17,w17,w6 + ushr v3.4s,v24.4s,#24 + eor w19,w19,w7 + ushr v7.4s,v25.4s,#24 + eor w20,w20,w8 + ushr v11.4s,v26.4s,#24 + ror w21,w21,#16 + ushr v15.4s,v27.4s,#24 + ror w17,w17,#16 + ushr v19.4s,v28.4s,#24 + ror w19,w19,#16 + ushr v23.4s,v29.4s,#24 + ror w20,w20,#16 + sli v3.4s,v24.4s,#8 + add w15,w15,w21 + sli v7.4s,v25.4s,#8 + add w16,w16,w17 + sli v11.4s,v26.4s,#8 + add w13,w13,w19 + sli v15.4s,v27.4s,#8 + add w14,w14,w20 + sli v19.4s,v28.4s,#8 + eor w10,w10,w15 + sli v23.4s,v29.4s,#8 + eor w11,w11,w16 + add v2.4s,v2.4s,v3.4s + eor w12,w12,w13 + add v6.4s,v6.4s,v7.4s + eor w9,w9,w14 + add v10.4s,v10.4s,v11.4s + ror w10,w10,#20 + add v14.4s,v14.4s,v15.4s + ror w11,w11,#20 + add v18.4s,v18.4s,v19.4s + ror w12,w12,#20 + add v22.4s,v22.4s,v23.4s + ror w9,w9,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w10 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w11 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w12 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w9 + eor v28.16b,v17.16b,v18.16b + eor w21,w21,w5 + eor v29.16b,v21.16b,v22.16b + eor w17,w17,w6 + ushr v1.4s,v24.4s,#25 + eor w19,w19,w7 + ushr v5.4s,v25.4s,#25 + eor w20,w20,w8 + ushr v9.4s,v26.4s,#25 + ror w21,w21,#24 + ushr v13.4s,v27.4s,#25 + ror w17,w17,#24 + ushr v17.4s,v28.4s,#25 + ror w19,w19,#24 + ushr v21.4s,v29.4s,#25 + ror w20,w20,#24 + sli v1.4s,v24.4s,#7 + add w15,w15,w21 + sli v5.4s,v25.4s,#7 + add w16,w16,w17 + sli v9.4s,v26.4s,#7 + add w13,w13,w19 + sli v13.4s,v27.4s,#7 + add w14,w14,w20 + sli v17.4s,v28.4s,#7 + eor w10,w10,w15 + sli v21.4s,v29.4s,#7 + eor w11,w11,w16 + ext v2.16b,v2.16b,v2.16b,#8 + eor w12,w12,w13 + ext v6.16b,v6.16b,v6.16b,#8 + eor w9,w9,w14 + ext v10.16b,v10.16b,v10.16b,#8 + ror w10,w10,#25 + ext v14.16b,v14.16b,v14.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v22.16b,v22.16b,v22.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#12 + ext v7.16b,v7.16b,v7.16b,#12 + ext v11.16b,v11.16b,v11.16b,#12 + ext v15.16b,v15.16b,v15.16b,#12 + ext v19.16b,v19.16b,v19.16b,#12 + ext v23.16b,v23.16b,v23.16b,#12 + ext v1.16b,v1.16b,v1.16b,#4 + ext v5.16b,v5.16b,v5.16b,#4 + ext v9.16b,v9.16b,v9.16b,#4 + ext v13.16b,v13.16b,v13.16b,#4 + ext v17.16b,v17.16b,v17.16b,#4 + ext v21.16b,v21.16b,v21.16b,#4 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v8.4s,v8.4s,v9.4s + add w7,w7,w11 + add v12.4s,v12.4s,v13.4s + add w8,w8,w12 + add v16.4s,v16.4s,v17.4s + eor w17,w17,w5 + add v20.4s,v20.4s,v21.4s + eor w19,w19,w6 + eor v3.16b,v3.16b,v0.16b + eor w20,w20,w7 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w8 + eor v11.16b,v11.16b,v8.16b + ror w17,w17,#16 + eor v15.16b,v15.16b,v12.16b + ror w19,w19,#16 + eor v19.16b,v19.16b,v16.16b + ror w20,w20,#16 + eor v23.16b,v23.16b,v20.16b + ror w21,w21,#16 + rev32 v3.8h,v3.8h + add w13,w13,w17 + rev32 v7.8h,v7.8h + add w14,w14,w19 + rev32 v11.8h,v11.8h + add w15,w15,w20 + rev32 v15.8h,v15.8h + add w16,w16,w21 + rev32 v19.8h,v19.8h + eor w9,w9,w13 + rev32 v23.8h,v23.8h + eor w10,w10,w14 + add v2.4s,v2.4s,v3.4s + eor w11,w11,w15 + add v6.4s,v6.4s,v7.4s + eor w12,w12,w16 + add v10.4s,v10.4s,v11.4s + ror w9,w9,#20 + add v14.4s,v14.4s,v15.4s + ror w10,w10,#20 + add v18.4s,v18.4s,v19.4s + ror w11,w11,#20 + add v22.4s,v22.4s,v23.4s + ror w12,w12,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w9 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w10 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w11 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w12 + eor v28.16b,v17.16b,v18.16b + eor w17,w17,w5 + eor v29.16b,v21.16b,v22.16b + eor w19,w19,w6 + ushr v1.4s,v24.4s,#20 + eor w20,w20,w7 + ushr v5.4s,v25.4s,#20 + eor w21,w21,w8 + ushr v9.4s,v26.4s,#20 + ror w17,w17,#24 + ushr v13.4s,v27.4s,#20 + ror w19,w19,#24 + ushr v17.4s,v28.4s,#20 + ror w20,w20,#24 + ushr v21.4s,v29.4s,#20 + ror w21,w21,#24 + sli v1.4s,v24.4s,#12 + add w13,w13,w17 + sli v5.4s,v25.4s,#12 + add w14,w14,w19 + sli v9.4s,v26.4s,#12 + add w15,w15,w20 + sli v13.4s,v27.4s,#12 + add w16,w16,w21 + sli v17.4s,v28.4s,#12 + eor w9,w9,w13 + sli v21.4s,v29.4s,#12 + eor w10,w10,w14 + add v0.4s,v0.4s,v1.4s + eor w11,w11,w15 + add v4.4s,v4.4s,v5.4s + eor w12,w12,w16 + add v8.4s,v8.4s,v9.4s + ror w9,w9,#25 + add v12.4s,v12.4s,v13.4s + ror w10,w10,#25 + add v16.4s,v16.4s,v17.4s + ror w11,w11,#25 + add v20.4s,v20.4s,v21.4s + ror w12,w12,#25 + eor v24.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v25.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v26.16b,v11.16b,v8.16b + add w7,w7,w12 + eor v27.16b,v15.16b,v12.16b + add w8,w8,w9 + eor v28.16b,v19.16b,v16.16b + eor w21,w21,w5 + eor v29.16b,v23.16b,v20.16b + eor w17,w17,w6 + ushr v3.4s,v24.4s,#24 + eor w19,w19,w7 + ushr v7.4s,v25.4s,#24 + eor w20,w20,w8 + ushr v11.4s,v26.4s,#24 + ror w21,w21,#16 + ushr v15.4s,v27.4s,#24 + ror w17,w17,#16 + ushr v19.4s,v28.4s,#24 + ror w19,w19,#16 + ushr v23.4s,v29.4s,#24 + ror w20,w20,#16 + sli v3.4s,v24.4s,#8 + add w15,w15,w21 + sli v7.4s,v25.4s,#8 + add w16,w16,w17 + sli v11.4s,v26.4s,#8 + add w13,w13,w19 + sli v15.4s,v27.4s,#8 + add w14,w14,w20 + sli v19.4s,v28.4s,#8 + eor w10,w10,w15 + sli v23.4s,v29.4s,#8 + eor w11,w11,w16 + add v2.4s,v2.4s,v3.4s + eor w12,w12,w13 + add v6.4s,v6.4s,v7.4s + eor w9,w9,w14 + add v10.4s,v10.4s,v11.4s + ror w10,w10,#20 + add v14.4s,v14.4s,v15.4s + ror w11,w11,#20 + add v18.4s,v18.4s,v19.4s + ror w12,w12,#20 + add v22.4s,v22.4s,v23.4s + ror w9,w9,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w10 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w11 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w12 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w9 + eor v28.16b,v17.16b,v18.16b + eor w21,w21,w5 + eor v29.16b,v21.16b,v22.16b + eor w17,w17,w6 + ushr v1.4s,v24.4s,#25 + eor w19,w19,w7 + ushr v5.4s,v25.4s,#25 + eor w20,w20,w8 + ushr v9.4s,v26.4s,#25 + ror w21,w21,#24 + ushr v13.4s,v27.4s,#25 + ror w17,w17,#24 + ushr v17.4s,v28.4s,#25 + ror w19,w19,#24 + ushr v21.4s,v29.4s,#25 + ror w20,w20,#24 + sli v1.4s,v24.4s,#7 + add w15,w15,w21 + sli v5.4s,v25.4s,#7 + add w16,w16,w17 + sli v9.4s,v26.4s,#7 + add w13,w13,w19 + sli v13.4s,v27.4s,#7 + add w14,w14,w20 + sli v17.4s,v28.4s,#7 + eor w10,w10,w15 + sli v21.4s,v29.4s,#7 + eor w11,w11,w16 + ext v2.16b,v2.16b,v2.16b,#8 + eor w12,w12,w13 + ext v6.16b,v6.16b,v6.16b,#8 + eor w9,w9,w14 + ext v10.16b,v10.16b,v10.16b,#8 + ror w10,w10,#25 + ext v14.16b,v14.16b,v14.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v22.16b,v22.16b,v22.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#4 + ext v7.16b,v7.16b,v7.16b,#4 + ext v11.16b,v11.16b,v11.16b,#4 + ext v15.16b,v15.16b,v15.16b,#4 + ext v19.16b,v19.16b,v19.16b,#4 + ext v23.16b,v23.16b,v23.16b,#4 + ext v1.16b,v1.16b,v1.16b,#12 + ext v5.16b,v5.16b,v5.16b,#12 + ext v9.16b,v9.16b,v9.16b,#12 + ext v13.16b,v13.16b,v13.16b,#12 + ext v17.16b,v17.16b,v17.16b,#12 + ext v21.16b,v21.16b,v21.16b,#12 + cbnz x4,.Loop_upper_neon + + add w5,w5,w22 // accumulate key block + add x6,x6,x22,lsr#32 + add w7,w7,w23 + add x8,x8,x23,lsr#32 + add w9,w9,w24 + add x10,x10,x24,lsr#32 + add w11,w11,w25 + add x12,x12,x25,lsr#32 + add w13,w13,w26 + add x14,x14,x26,lsr#32 + add w15,w15,w27 + add x16,x16,x27,lsr#32 + add w17,w17,w28 + add x19,x19,x28,lsr#32 + add w20,w20,w30 + add x21,x21,x30,lsr#32 + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + ldp x6,x8,[x1,#0] // load input + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + ldp x10,x12,[x1,#16] + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + ldp x14,x16,[x1,#32] + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 + ldp x19,x21,[x1,#48] + add x1,x1,#64 +#ifdef __ARMEB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor x15,x15,x16 + eor x17,x17,x19 + eor x20,x20,x21 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#1 // increment counter + mov w5,w22 // unpack key block + lsr x6,x22,#32 + stp x9,x11,[x0,#16] + mov w7,w23 + lsr x8,x23,#32 + stp x13,x15,[x0,#32] + mov w9,w24 + lsr x10,x24,#32 + stp x17,x20,[x0,#48] + add x0,x0,#64 + mov w11,w25 + lsr x12,x25,#32 + mov w13,w26 + lsr x14,x26,#32 + mov w15,w27 + lsr x16,x27,#32 + mov w17,w28 + lsr x19,x28,#32 + mov w20,w30 + lsr x21,x30,#32 + + mov x4,#5 +.Loop_lower_neon: + sub x4,x4,#1 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v8.4s,v8.4s,v9.4s + add w7,w7,w11 + add v12.4s,v12.4s,v13.4s + add w8,w8,w12 + add v16.4s,v16.4s,v17.4s + eor w17,w17,w5 + add v20.4s,v20.4s,v21.4s + eor w19,w19,w6 + eor v3.16b,v3.16b,v0.16b + eor w20,w20,w7 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w8 + eor v11.16b,v11.16b,v8.16b + ror w17,w17,#16 + eor v15.16b,v15.16b,v12.16b + ror w19,w19,#16 + eor v19.16b,v19.16b,v16.16b + ror w20,w20,#16 + eor v23.16b,v23.16b,v20.16b + ror w21,w21,#16 + rev32 v3.8h,v3.8h + add w13,w13,w17 + rev32 v7.8h,v7.8h + add w14,w14,w19 + rev32 v11.8h,v11.8h + add w15,w15,w20 + rev32 v15.8h,v15.8h + add w16,w16,w21 + rev32 v19.8h,v19.8h + eor w9,w9,w13 + rev32 v23.8h,v23.8h + eor w10,w10,w14 + add v2.4s,v2.4s,v3.4s + eor w11,w11,w15 + add v6.4s,v6.4s,v7.4s + eor w12,w12,w16 + add v10.4s,v10.4s,v11.4s + ror w9,w9,#20 + add v14.4s,v14.4s,v15.4s + ror w10,w10,#20 + add v18.4s,v18.4s,v19.4s + ror w11,w11,#20 + add v22.4s,v22.4s,v23.4s + ror w12,w12,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w9 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w10 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w11 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w12 + eor v28.16b,v17.16b,v18.16b + eor w17,w17,w5 + eor v29.16b,v21.16b,v22.16b + eor w19,w19,w6 + ushr v1.4s,v24.4s,#20 + eor w20,w20,w7 + ushr v5.4s,v25.4s,#20 + eor w21,w21,w8 + ushr v9.4s,v26.4s,#20 + ror w17,w17,#24 + ushr v13.4s,v27.4s,#20 + ror w19,w19,#24 + ushr v17.4s,v28.4s,#20 + ror w20,w20,#24 + ushr v21.4s,v29.4s,#20 + ror w21,w21,#24 + sli v1.4s,v24.4s,#12 + add w13,w13,w17 + sli v5.4s,v25.4s,#12 + add w14,w14,w19 + sli v9.4s,v26.4s,#12 + add w15,w15,w20 + sli v13.4s,v27.4s,#12 + add w16,w16,w21 + sli v17.4s,v28.4s,#12 + eor w9,w9,w13 + sli v21.4s,v29.4s,#12 + eor w10,w10,w14 + add v0.4s,v0.4s,v1.4s + eor w11,w11,w15 + add v4.4s,v4.4s,v5.4s + eor w12,w12,w16 + add v8.4s,v8.4s,v9.4s + ror w9,w9,#25 + add v12.4s,v12.4s,v13.4s + ror w10,w10,#25 + add v16.4s,v16.4s,v17.4s + ror w11,w11,#25 + add v20.4s,v20.4s,v21.4s + ror w12,w12,#25 + eor v24.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v25.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v26.16b,v11.16b,v8.16b + add w7,w7,w12 + eor v27.16b,v15.16b,v12.16b + add w8,w8,w9 + eor v28.16b,v19.16b,v16.16b + eor w21,w21,w5 + eor v29.16b,v23.16b,v20.16b + eor w17,w17,w6 + ushr v3.4s,v24.4s,#24 + eor w19,w19,w7 + ushr v7.4s,v25.4s,#24 + eor w20,w20,w8 + ushr v11.4s,v26.4s,#24 + ror w21,w21,#16 + ushr v15.4s,v27.4s,#24 + ror w17,w17,#16 + ushr v19.4s,v28.4s,#24 + ror w19,w19,#16 + ushr v23.4s,v29.4s,#24 + ror w20,w20,#16 + sli v3.4s,v24.4s,#8 + add w15,w15,w21 + sli v7.4s,v25.4s,#8 + add w16,w16,w17 + sli v11.4s,v26.4s,#8 + add w13,w13,w19 + sli v15.4s,v27.4s,#8 + add w14,w14,w20 + sli v19.4s,v28.4s,#8 + eor w10,w10,w15 + sli v23.4s,v29.4s,#8 + eor w11,w11,w16 + add v2.4s,v2.4s,v3.4s + eor w12,w12,w13 + add v6.4s,v6.4s,v7.4s + eor w9,w9,w14 + add v10.4s,v10.4s,v11.4s + ror w10,w10,#20 + add v14.4s,v14.4s,v15.4s + ror w11,w11,#20 + add v18.4s,v18.4s,v19.4s + ror w12,w12,#20 + add v22.4s,v22.4s,v23.4s + ror w9,w9,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w10 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w11 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w12 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w9 + eor v28.16b,v17.16b,v18.16b + eor w21,w21,w5 + eor v29.16b,v21.16b,v22.16b + eor w17,w17,w6 + ushr v1.4s,v24.4s,#25 + eor w19,w19,w7 + ushr v5.4s,v25.4s,#25 + eor w20,w20,w8 + ushr v9.4s,v26.4s,#25 + ror w21,w21,#24 + ushr v13.4s,v27.4s,#25 + ror w17,w17,#24 + ushr v17.4s,v28.4s,#25 + ror w19,w19,#24 + ushr v21.4s,v29.4s,#25 + ror w20,w20,#24 + sli v1.4s,v24.4s,#7 + add w15,w15,w21 + sli v5.4s,v25.4s,#7 + add w16,w16,w17 + sli v9.4s,v26.4s,#7 + add w13,w13,w19 + sli v13.4s,v27.4s,#7 + add w14,w14,w20 + sli v17.4s,v28.4s,#7 + eor w10,w10,w15 + sli v21.4s,v29.4s,#7 + eor w11,w11,w16 + ext v2.16b,v2.16b,v2.16b,#8 + eor w12,w12,w13 + ext v6.16b,v6.16b,v6.16b,#8 + eor w9,w9,w14 + ext v10.16b,v10.16b,v10.16b,#8 + ror w10,w10,#25 + ext v14.16b,v14.16b,v14.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v22.16b,v22.16b,v22.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#12 + ext v7.16b,v7.16b,v7.16b,#12 + ext v11.16b,v11.16b,v11.16b,#12 + ext v15.16b,v15.16b,v15.16b,#12 + ext v19.16b,v19.16b,v19.16b,#12 + ext v23.16b,v23.16b,v23.16b,#12 + ext v1.16b,v1.16b,v1.16b,#4 + ext v5.16b,v5.16b,v5.16b,#4 + ext v9.16b,v9.16b,v9.16b,#4 + ext v13.16b,v13.16b,v13.16b,#4 + ext v17.16b,v17.16b,v17.16b,#4 + ext v21.16b,v21.16b,v21.16b,#4 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v8.4s,v8.4s,v9.4s + add w7,w7,w11 + add v12.4s,v12.4s,v13.4s + add w8,w8,w12 + add v16.4s,v16.4s,v17.4s + eor w17,w17,w5 + add v20.4s,v20.4s,v21.4s + eor w19,w19,w6 + eor v3.16b,v3.16b,v0.16b + eor w20,w20,w7 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w8 + eor v11.16b,v11.16b,v8.16b + ror w17,w17,#16 + eor v15.16b,v15.16b,v12.16b + ror w19,w19,#16 + eor v19.16b,v19.16b,v16.16b + ror w20,w20,#16 + eor v23.16b,v23.16b,v20.16b + ror w21,w21,#16 + rev32 v3.8h,v3.8h + add w13,w13,w17 + rev32 v7.8h,v7.8h + add w14,w14,w19 + rev32 v11.8h,v11.8h + add w15,w15,w20 + rev32 v15.8h,v15.8h + add w16,w16,w21 + rev32 v19.8h,v19.8h + eor w9,w9,w13 + rev32 v23.8h,v23.8h + eor w10,w10,w14 + add v2.4s,v2.4s,v3.4s + eor w11,w11,w15 + add v6.4s,v6.4s,v7.4s + eor w12,w12,w16 + add v10.4s,v10.4s,v11.4s + ror w9,w9,#20 + add v14.4s,v14.4s,v15.4s + ror w10,w10,#20 + add v18.4s,v18.4s,v19.4s + ror w11,w11,#20 + add v22.4s,v22.4s,v23.4s + ror w12,w12,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w9 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w10 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w11 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w12 + eor v28.16b,v17.16b,v18.16b + eor w17,w17,w5 + eor v29.16b,v21.16b,v22.16b + eor w19,w19,w6 + ushr v1.4s,v24.4s,#20 + eor w20,w20,w7 + ushr v5.4s,v25.4s,#20 + eor w21,w21,w8 + ushr v9.4s,v26.4s,#20 + ror w17,w17,#24 + ushr v13.4s,v27.4s,#20 + ror w19,w19,#24 + ushr v17.4s,v28.4s,#20 + ror w20,w20,#24 + ushr v21.4s,v29.4s,#20 + ror w21,w21,#24 + sli v1.4s,v24.4s,#12 + add w13,w13,w17 + sli v5.4s,v25.4s,#12 + add w14,w14,w19 + sli v9.4s,v26.4s,#12 + add w15,w15,w20 + sli v13.4s,v27.4s,#12 + add w16,w16,w21 + sli v17.4s,v28.4s,#12 + eor w9,w9,w13 + sli v21.4s,v29.4s,#12 + eor w10,w10,w14 + add v0.4s,v0.4s,v1.4s + eor w11,w11,w15 + add v4.4s,v4.4s,v5.4s + eor w12,w12,w16 + add v8.4s,v8.4s,v9.4s + ror w9,w9,#25 + add v12.4s,v12.4s,v13.4s + ror w10,w10,#25 + add v16.4s,v16.4s,v17.4s + ror w11,w11,#25 + add v20.4s,v20.4s,v21.4s + ror w12,w12,#25 + eor v24.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v25.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v26.16b,v11.16b,v8.16b + add w7,w7,w12 + eor v27.16b,v15.16b,v12.16b + add w8,w8,w9 + eor v28.16b,v19.16b,v16.16b + eor w21,w21,w5 + eor v29.16b,v23.16b,v20.16b + eor w17,w17,w6 + ushr v3.4s,v24.4s,#24 + eor w19,w19,w7 + ushr v7.4s,v25.4s,#24 + eor w20,w20,w8 + ushr v11.4s,v26.4s,#24 + ror w21,w21,#16 + ushr v15.4s,v27.4s,#24 + ror w17,w17,#16 + ushr v19.4s,v28.4s,#24 + ror w19,w19,#16 + ushr v23.4s,v29.4s,#24 + ror w20,w20,#16 + sli v3.4s,v24.4s,#8 + add w15,w15,w21 + sli v7.4s,v25.4s,#8 + add w16,w16,w17 + sli v11.4s,v26.4s,#8 + add w13,w13,w19 + sli v15.4s,v27.4s,#8 + add w14,w14,w20 + sli v19.4s,v28.4s,#8 + eor w10,w10,w15 + sli v23.4s,v29.4s,#8 + eor w11,w11,w16 + add v2.4s,v2.4s,v3.4s + eor w12,w12,w13 + add v6.4s,v6.4s,v7.4s + eor w9,w9,w14 + add v10.4s,v10.4s,v11.4s + ror w10,w10,#20 + add v14.4s,v14.4s,v15.4s + ror w11,w11,#20 + add v18.4s,v18.4s,v19.4s + ror w12,w12,#20 + add v22.4s,v22.4s,v23.4s + ror w9,w9,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w10 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w11 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w12 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w9 + eor v28.16b,v17.16b,v18.16b + eor w21,w21,w5 + eor v29.16b,v21.16b,v22.16b + eor w17,w17,w6 + ushr v1.4s,v24.4s,#25 + eor w19,w19,w7 + ushr v5.4s,v25.4s,#25 + eor w20,w20,w8 + ushr v9.4s,v26.4s,#25 + ror w21,w21,#24 + ushr v13.4s,v27.4s,#25 + ror w17,w17,#24 + ushr v17.4s,v28.4s,#25 + ror w19,w19,#24 + ushr v21.4s,v29.4s,#25 + ror w20,w20,#24 + sli v1.4s,v24.4s,#7 + add w15,w15,w21 + sli v5.4s,v25.4s,#7 + add w16,w16,w17 + sli v9.4s,v26.4s,#7 + add w13,w13,w19 + sli v13.4s,v27.4s,#7 + add w14,w14,w20 + sli v17.4s,v28.4s,#7 + eor w10,w10,w15 + sli v21.4s,v29.4s,#7 + eor w11,w11,w16 + ext v2.16b,v2.16b,v2.16b,#8 + eor w12,w12,w13 + ext v6.16b,v6.16b,v6.16b,#8 + eor w9,w9,w14 + ext v10.16b,v10.16b,v10.16b,#8 + ror w10,w10,#25 + ext v14.16b,v14.16b,v14.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v22.16b,v22.16b,v22.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#4 + ext v7.16b,v7.16b,v7.16b,#4 + ext v11.16b,v11.16b,v11.16b,#4 + ext v15.16b,v15.16b,v15.16b,#4 + ext v19.16b,v19.16b,v19.16b,#4 + ext v23.16b,v23.16b,v23.16b,#4 + ext v1.16b,v1.16b,v1.16b,#12 + ext v5.16b,v5.16b,v5.16b,#12 + ext v9.16b,v9.16b,v9.16b,#12 + ext v13.16b,v13.16b,v13.16b,#12 + ext v17.16b,v17.16b,v17.16b,#12 + ext v21.16b,v21.16b,v21.16b,#12 + cbnz x4,.Loop_lower_neon + + add w5,w5,w22 // accumulate key block + ldp q24,q25,[sp,#0] + add x6,x6,x22,lsr#32 + ldp q26,q27,[sp,#32] + add w7,w7,w23 + ldp q28,q29,[sp,#64] + add x8,x8,x23,lsr#32 + add v0.4s,v0.4s,v24.4s + add w9,w9,w24 + add v4.4s,v4.4s,v24.4s + add x10,x10,x24,lsr#32 + add v8.4s,v8.4s,v24.4s + add w11,w11,w25 + add v12.4s,v12.4s,v24.4s + add x12,x12,x25,lsr#32 + add v16.4s,v16.4s,v24.4s + add w13,w13,w26 + add v20.4s,v20.4s,v24.4s + add x14,x14,x26,lsr#32 + add v2.4s,v2.4s,v26.4s + add w15,w15,w27 + add v6.4s,v6.4s,v26.4s + add x16,x16,x27,lsr#32 + add v10.4s,v10.4s,v26.4s + add w17,w17,w28 + add v14.4s,v14.4s,v26.4s + add x19,x19,x28,lsr#32 + add v18.4s,v18.4s,v26.4s + add w20,w20,w30 + add v22.4s,v22.4s,v26.4s + add x21,x21,x30,lsr#32 + add v19.4s,v19.4s,v31.4s // +4 + add x5,x5,x6,lsl#32 // pack + add v23.4s,v23.4s,v31.4s // +4 + add x7,x7,x8,lsl#32 + add v3.4s,v3.4s,v27.4s + ldp x6,x8,[x1,#0] // load input + add v7.4s,v7.4s,v28.4s + add x9,x9,x10,lsl#32 + add v11.4s,v11.4s,v29.4s + add x11,x11,x12,lsl#32 + add v15.4s,v15.4s,v30.4s + ldp x10,x12,[x1,#16] + add v19.4s,v19.4s,v27.4s + add x13,x13,x14,lsl#32 + add v23.4s,v23.4s,v28.4s + add x15,x15,x16,lsl#32 + add v1.4s,v1.4s,v25.4s + ldp x14,x16,[x1,#32] + add v5.4s,v5.4s,v25.4s + add x17,x17,x19,lsl#32 + add v9.4s,v9.4s,v25.4s + add x20,x20,x21,lsl#32 + add v13.4s,v13.4s,v25.4s + ldp x19,x21,[x1,#48] + add v17.4s,v17.4s,v25.4s + add x1,x1,#64 + add v21.4s,v21.4s,v25.4s + +#ifdef __ARMEB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + ld1 {v24.16b,v25.16b,v26.16b,v27.16b},[x1],#64 + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor v0.16b,v0.16b,v24.16b + eor x15,x15,x16 + eor v1.16b,v1.16b,v25.16b + eor x17,x17,x19 + eor v2.16b,v2.16b,v26.16b + eor x20,x20,x21 + eor v3.16b,v3.16b,v27.16b + ld1 {v24.16b,v25.16b,v26.16b,v27.16b},[x1],#64 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#7 // increment counter + stp x9,x11,[x0,#16] + stp x13,x15,[x0,#32] + stp x17,x20,[x0,#48] + add x0,x0,#64 + st1 {v0.16b,v1.16b,v2.16b,v3.16b},[x0],#64 + + ld1 {v0.16b,v1.16b,v2.16b,v3.16b},[x1],#64 + eor v4.16b,v4.16b,v24.16b + eor v5.16b,v5.16b,v25.16b + eor v6.16b,v6.16b,v26.16b + eor v7.16b,v7.16b,v27.16b + st1 {v4.16b,v5.16b,v6.16b,v7.16b},[x0],#64 + + ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64 + eor v8.16b,v8.16b,v0.16b + ldp q24,q25,[sp,#0] + eor v9.16b,v9.16b,v1.16b + ldp q26,q27,[sp,#32] + eor v10.16b,v10.16b,v2.16b + eor v11.16b,v11.16b,v3.16b + st1 {v8.16b,v9.16b,v10.16b,v11.16b},[x0],#64 + + ld1 {v8.16b,v9.16b,v10.16b,v11.16b},[x1],#64 + eor v12.16b,v12.16b,v4.16b + eor v13.16b,v13.16b,v5.16b + eor v14.16b,v14.16b,v6.16b + eor v15.16b,v15.16b,v7.16b + st1 {v12.16b,v13.16b,v14.16b,v15.16b},[x0],#64 + + ld1 {v12.16b,v13.16b,v14.16b,v15.16b},[x1],#64 + eor v16.16b,v16.16b,v8.16b + eor v17.16b,v17.16b,v9.16b + eor v18.16b,v18.16b,v10.16b + eor v19.16b,v19.16b,v11.16b + st1 {v16.16b,v17.16b,v18.16b,v19.16b},[x0],#64 + + shl v0.4s,v31.4s,#1 // 4 -> 8 + eor v20.16b,v20.16b,v12.16b + eor v21.16b,v21.16b,v13.16b + eor v22.16b,v22.16b,v14.16b + eor v23.16b,v23.16b,v15.16b + st1 {v20.16b,v21.16b,v22.16b,v23.16b},[x0],#64 + + add v27.4s,v27.4s,v0.4s // += 8 + add v28.4s,v28.4s,v0.4s + add v29.4s,v29.4s,v0.4s + add v30.4s,v30.4s,v0.4s + + b.hs .Loop_outer_512_neon + + adds x2,x2,#512 + ushr v0.4s,v31.4s,#2 // 4 -> 1 + + ldp d8,d9,[sp,#128+0] // meet ABI requirements + ldp d10,d11,[sp,#128+16] + ldp d12,d13,[sp,#128+32] + ldp d14,d15,[sp,#128+48] + + stp q24,q31,[sp,#0] // wipe off-load area + stp q24,q31,[sp,#32] + stp q24,q31,[sp,#64] + + b.eq .Ldone_512_neon + + cmp x2,#192 + sub v27.4s,v27.4s,v0.4s // -= 1 + sub v28.4s,v28.4s,v0.4s + sub v29.4s,v29.4s,v0.4s + add sp,sp,#128 + b.hs .Loop_outer_neon + + eor v25.16b,v25.16b,v25.16b + eor v26.16b,v26.16b,v26.16b + eor v27.16b,v27.16b,v27.16b + eor v28.16b,v28.16b,v28.16b + eor v29.16b,v29.16b,v29.16b + eor v30.16b,v30.16b,v30.16b + b .Loop_outer + +.Ldone_512_neon: + ldp x19,x20,[x29,#16] + add sp,sp,#128+64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp + ret +.size ChaCha20_512_neon,.-ChaCha20_512_neon diff --git a/vere/ext/openssl/gen/linux-aarch64/crypto/ec/ecp_nistz256-armv8.S b/vere/ext/openssl/gen/linux-aarch64/crypto/ec/ecp_nistz256-armv8.S new file mode 100644 index 0000000..7caa581 --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/crypto/ec/ecp_nistz256-armv8.S @@ -0,0 +1,4242 @@ +#include "arm_arch.h" + +.text +.globl ecp_nistz256_precomputed +.type ecp_nistz256_precomputed,%object +.align 12 +ecp_nistz256_precomputed: +.byte 0x3c,0x4d,0x27,0xcc,0xf5,0x4a,0x4f,0x8f,0xe8,0xc8,0x04,0x68,0x09,0x4a,0x5b,0x80,0x9d,0x7a,0xe8,0x31,0x08,0x76,0x68,0x19,0x9f,0x08,0xb4,0x1f,0x32,0x43,0x89,0xd8,0x34,0xd3,0xf5,0xb7,0xb5,0xee,0x42,0x3e,0x91,0x01,0x06,0x7c,0xbf,0xd9,0x97,0x12,0xd3,0x1a,0xc9,0x04,0x8d,0x53,0x83,0x14,0x28,0xf0,0x8e,0x19,0xcc,0x91,0xe5,0x80 +.byte 0x14,0xd6,0xc1,0x8d,0x61,0x66,0x3b,0xa7,0x20,0x1e,0xe4,0x77,0xd7,0x66,0x05,0xfb,0x5c,0xa9,0x9a,0x7a,0xb2,0x30,0x50,0x28,0x87,0x80,0xfe,0xcd,0xe1,0xb3,0xff,0xa3,0x45,0x3c,0x7e,0x9b,0x08,0xc0,0xc1,0x9f,0x2e,0xad,0x7d,0x89,0x79,0x90,0x60,0xc6,0xac,0x17,0x64,0x59,0x4d,0xcf,0x56,0x7a,0xca,0x82,0xaa,0x6e,0x04,0x2f,0x1f,0x8b +.byte 0xa9,0xdd,0xeb,0x91,0x5c,0x77,0x17,0x99,0x4e,0xc2,0x45,0x69,0x2e,0xcf,0x60,0xc6,0x3c,0xad,0x65,0x33,0x35,0x6f,0xe4,0xd0,0x37,0x1f,0xe2,0x2c,0x66,0x98,0x55,0xe3,0x66,0xa2,0xc6,0x21,0xce,0x63,0x59,0x2e,0xd2,0x2b,0x8a,0x5a,0xcd,0xee,0xa7,0xad,0xf6,0x8c,0x3f,0x44,0x6c,0x12,0x30,0x8d,0xca,0xea,0x46,0x8a,0x4c,0x96,0xf9,0x96 +.byte 0x18,0x10,0x4e,0x46,0xc4,0x3e,0xa0,0x94,0x26,0x9d,0x62,0xd2,0x4b,0xb0,0xbc,0x0b,0xd5,0x56,0xa5,0xd2,0xc1,0x2f,0x2d,0x15,0xd8,0xed,0x97,0x17,0xcb,0x32,0x67,0xc5,0x0f,0x7c,0xde,0xa8,0x8c,0x4d,0xa0,0xb8,0x2e,0xed,0x24,0xd5,0xd5,0x49,0xca,0x77,0x1f,0x48,0x3b,0x83,0x54,0xb2,0xe7,0x7e,0x7a,0xa7,0x5c,0xed,0x7f,0xa1,0x9f,0x05 +.byte 0xd4,0xd4,0x90,0x0d,0xae,0x37,0x4e,0xd1,0x8f,0xd1,0x0a,0xa7,0x63,0x5b,0xb7,0x65,0xcb,0xc8,0xba,0x29,0xec,0x35,0x53,0xb2,0xac,0x32,0xf4,0xb7,0x6a,0xb1,0x69,0xcf,0x56,0x14,0x7f,0xd6,0xc5,0xca,0x88,0x1d,0x49,0xcf,0xfd,0x1f,0xcc,0xb1,0x13,0x30,0x42,0xd0,0x1c,0x6e,0x38,0x8e,0xf9,0x40,0xe7,0xe8,0xd6,0x28,0x1a,0x75,0x31,0xf3 +.byte 0x30,0x46,0x3f,0xb5,0x8a,0x47,0x35,0x4c,0x6e,0xdb,0x26,0x1a,0x25,0xa3,0xd8,0x0b,0x1d,0x51,0x12,0x91,0x4c,0x11,0x76,0x83,0x19,0xad,0x2a,0x3e,0xb4,0x1c,0x3c,0xfc,0x14,0x20,0x84,0x58,0x7b,0xc3,0x94,0x68,0x60,0x5c,0x3f,0x7c,0x26,0xb5,0x75,0x41,0x0b,0xc2,0xec,0xf3,0x96,0x5b,0xbb,0x41,0x32,0x00,0x4e,0x68,0xeb,0xf1,0xd9,0x96 +.byte 0xe7,0x00,0xac,0xb0,0x1b,0x39,0x46,0xf1,0xc9,0x18,0x7d,0xb7,0xc4,0x42,0xbc,0x8b,0x09,0x3e,0xa9,0x97,0x2e,0xc6,0xf8,0x38,0xa3,0xe4,0x2c,0x52,0x5d,0x24,0xf7,0xc5,0x15,0xab,0x16,0x5e,0x46,0x2c,0xd8,0xd7,0x4d,0xb3,0xf2,0xfd,0xe4,0x75,0x3c,0x34,0x95,0xb9,0x8c,0x92,0x35,0x42,0x8b,0xc4,0xc8,0x6c,0xd4,0x1e,0x67,0x35,0xd3,0x6d +.byte 0x79,0x85,0xff,0x74,0xbe,0x40,0x07,0x27,0x75,0x2c,0xea,0x04,0xcc,0xa2,0x72,0x80,0x97,0x5f,0xfe,0x8a,0x56,0x0f,0xf4,0x6d,0xa4,0x61,0x04,0x4b,0x5e,0xb4,0xe2,0xd8,0x87,0xb6,0xfd,0x3d,0x00,0x8a,0xa9,0xe4,0x62,0x5f,0x4f,0xec,0x1e,0x40,0x28,0x6b,0x21,0x0f,0x50,0x26,0x97,0xa0,0x25,0x8f,0x3e,0xf2,0x69,0xdc,0x36,0xe5,0xb8,0xdb +.byte 0x01,0x7d,0xfb,0x73,0x7d,0x3e,0xf7,0x55,0x41,0x39,0xe0,0x33,0x0d,0xe3,0x4b,0x6b,0x7b,0x3e,0x6e,0xdc,0x7d,0x9a,0x6e,0x35,0xb0,0x38,0x13,0x92,0x80,0xa1,0xe6,0xbf,0x03,0x9d,0xb7,0x7f,0x55,0xce,0x46,0x3c,0x22,0xc7,0xfa,0xfb,0x18,0xba,0x06,0xa0,0x09,0x78,0x3f,0xc0,0x79,0x5f,0xe6,0x6a,0x29,0xaf,0xd1,0xc7,0x84,0xa7,0xed,0xb9 +.byte 0xb6,0x82,0x81,0xc1,0x53,0xee,0x00,0x34,0xa8,0x81,0xdf,0x5a,0xd3,0x07,0x7e,0x2e,0x17,0x40,0xa1,0x2b,0xf4,0x2a,0x1f,0x9a,0x67,0x75,0x73,0xa8,0x58,0x65,0x17,0xdf,0xf1,0x84,0x76,0xc5,0x8d,0x48,0x93,0xe1,0x28,0xa5,0x73,0x10,0x6e,0x9e,0x39,0x03,0x69,0x52,0xdf,0xf9,0x46,0x7c,0x5b,0xf3,0x5b,0x9a,0x63,0xd9,0x4f,0xf5,0x8e,0x73 +.byte 0xed,0x33,0x7d,0x23,0xb9,0x6c,0x3c,0x9b,0xa7,0xcf,0x7f,0x34,0x6f,0x97,0xe2,0xfe,0x0a,0x8b,0xe1,0x86,0x83,0x91,0x2e,0xdd,0x6b,0xb1,0xbf,0xa6,0x92,0x4f,0x30,0x79,0x68,0x91,0x3e,0x06,0x17,0xe9,0x0b,0x25,0x07,0xa6,0x88,0x91,0x6c,0x6e,0xc8,0xd8,0xdc,0x68,0x5e,0x45,0xf2,0x55,0xef,0x56,0x38,0x29,0xd0,0x89,0x40,0x58,0x51,0x9f +.byte 0x5f,0xa4,0x08,0xc6,0x94,0x34,0xd2,0x6f,0x59,0x0f,0x6e,0xca,0x85,0x7f,0x56,0x3f,0xac,0x8f,0x25,0x0f,0x47,0xe3,0x9e,0x40,0xed,0xd8,0xae,0x30,0x0d,0xb4,0x47,0x40,0x4b,0xa3,0x23,0x1b,0x7f,0x0f,0xff,0xdf,0x6f,0x1d,0x87,0xb2,0x94,0xa0,0x36,0xbb,0x53,0x13,0x1e,0xaf,0x92,0xf8,0x07,0x95,0xc7,0xe4,0xa8,0x41,0xa9,0xed,0xf0,0x08 +.byte 0xfc,0xc1,0x4a,0xed,0x9a,0x4f,0x13,0xc5,0xed,0x8a,0x95,0xf5,0x69,0xf7,0xee,0x75,0xb6,0x4d,0xba,0x8f,0x65,0x23,0xe8,0x50,0x9e,0x7a,0xd7,0x28,0x3a,0x49,0xe7,0x4c,0x7c,0xc6,0x64,0xbd,0x8c,0x17,0x14,0x0b,0xb5,0xe3,0xb4,0xab,0x0b,0x9a,0xa9,0x29,0x84,0xaa,0xba,0x69,0xc4,0x2e,0xbf,0xca,0x57,0x0d,0xd3,0x36,0x21,0x61,0x00,0x13 +.byte 0x95,0xe3,0xf8,0xa6,0x64,0x74,0x02,0xb5,0xbf,0x86,0x07,0xde,0x67,0x48,0x23,0xe0,0x24,0x96,0x3a,0x86,0xb2,0xfa,0xa7,0x75,0xb4,0x26,0x42,0xcb,0x96,0x4e,0xf7,0x90,0xae,0xa5,0xe4,0xd0,0x45,0x31,0xe7,0x0f,0xe0,0xcb,0xbf,0x94,0x94,0x33,0x4f,0x65,0x04,0xfb,0xc0,0xc4,0x3f,0x51,0xa5,0xf3,0xea,0xc8,0xd5,0x23,0x66,0xe0,0x48,0x09 +.byte 0xba,0x6a,0x27,0x50,0xec,0xae,0xd2,0x2a,0xe6,0xf9,0xe4,0xde,0x35,0x6e,0xcc,0x82,0x76,0xfc,0x36,0x16,0xe1,0x9f,0xc7,0x0d,0xc1,0xc9,0x6a,0x23,0xbe,0xa1,0x3c,0xfd,0xce,0xa7,0x2e,0x91,0x36,0x23,0x5a,0x20,0xdf,0x55,0xc5,0x91,0x32,0x5c,0x62,0x49,0xe7,0x8b,0x0b,0x0e,0x9c,0x2e,0xee,0x1f,0xfe,0xca,0x00,0xfc,0x55,0xd7,0x9c,0x0a +.byte 0x75,0xaa,0xb0,0x46,0x90,0x55,0x2b,0x46,0xab,0x98,0x9d,0xab,0x0e,0x12,0x03,0x58,0xf1,0x4a,0x68,0x59,0x74,0xc9,0x37,0x6d,0x6f,0xe6,0xd3,0x73,0xf1,0xa3,0xdd,0xbe,0x85,0xca,0x74,0xc6,0xb6,0x51,0x6f,0x83,0x6f,0xa1,0x80,0x00,0x00,0x78,0x0a,0xa7,0xff,0xa7,0xe2,0x2e,0x5f,0x4f,0x31,0xbb,0x1b,0x99,0x21,0x33,0x59,0x6e,0x03,0x38 +.byte 0x10,0xd9,0x98,0xf2,0x0c,0xad,0x08,0x6b,0x00,0x49,0xb5,0x5e,0x11,0x60,0x70,0x49,0xff,0x79,0xac,0xba,0x30,0x3d,0x69,0x9f,0xaf,0xfb,0xd7,0xeb,0xe2,0xcd,0x0d,0x97,0xb9,0x94,0xc8,0x6e,0x06,0x3b,0x64,0x80,0x71,0x8f,0x81,0xb0,0x58,0xe0,0xc7,0xbd,0x27,0x6a,0xd4,0xb7,0xd9,0x6c,0xc1,0x44,0x38,0xe1,0x36,0xbc,0x0a,0x33,0x26,0x01 +.byte 0x25,0x90,0xbc,0x0a,0xc2,0xa3,0xbb,0xfc,0xeb,0x0b,0x1a,0x38,0x98,0x26,0x93,0xf5,0x2d,0x29,0x41,0x83,0x3b,0xba,0x40,0x46,0xf3,0xf6,0xfd,0x53,0xb9,0x7a,0x60,0x01,0x8a,0x8d,0xb4,0x57,0xd8,0xf3,0x36,0x72,0x22,0x2f,0x59,0xd3,0x7f,0x25,0xf2,0x05,0x61,0xfa,0x18,0x28,0xac,0xd5,0x14,0x00,0xaf,0x8b,0x7c,0x39,0xb5,0xa2,0xcb,0x1e +.byte 0x62,0x14,0xcb,0x10,0x76,0x17,0x23,0x2c,0xc8,0x25,0xac,0x37,0x9e,0x83,0x81,0x83,0xfe,0x2e,0x2c,0xd2,0x3f,0xf8,0x58,0x2b,0xf1,0x7f,0x4f,0xe1,0x17,0xc7,0xf7,0xad,0x57,0x67,0xc2,0x57,0x77,0x2e,0xfb,0xf2,0xce,0xa9,0x74,0x81,0x47,0xf8,0x5a,0x88,0x76,0xb1,0x43,0x75,0xc8,0xc4,0xc8,0x60,0x1e,0xd7,0xd1,0x1c,0xce,0x89,0x82,0xc6 +.byte 0x77,0x8d,0x87,0xe8,0xd0,0x5b,0x0c,0xf0,0x44,0x48,0x8d,0xee,0x55,0xc6,0xe4,0x2c,0x2c,0x41,0x75,0x5d,0x5a,0xd2,0xa3,0x1d,0x32,0x85,0x08,0xcf,0x03,0x3a,0x3c,0xfe,0x65,0x75,0xef,0xd2,0xa6,0x22,0x16,0x66,0x39,0x30,0x05,0xe3,0x57,0xab,0x71,0x6d,0x28,0xd5,0x2f,0xc6,0xa8,0x25,0x46,0x14,0xfd,0x7e,0xa2,0x67,0x7e,0x20,0x91,0xc2 +.byte 0x2b,0x03,0xdd,0xac,0xaa,0x1a,0xb5,0x2a,0x04,0xd6,0x15,0x9d,0x3f,0x54,0x24,0x7c,0x75,0xab,0x77,0xd9,0x6c,0x85,0xa2,0xf9,0x33,0xeb,0xeb,0xc0,0x27,0xcd,0x9d,0x58,0xae,0xa3,0x34,0x10,0xae,0x85,0x7d,0x4c,0x15,0x4c,0x90,0x46,0xe0,0x5b,0xec,0xa7,0xb2,0x68,0x85,0x01,0xed,0xf9,0x4a,0x85,0xe3,0xb6,0xea,0xe2,0x53,0xc0,0x32,0x83 +.byte 0x73,0x05,0x77,0xac,0xb5,0x96,0xaa,0xf0,0x9c,0x2c,0xa4,0xd2,0xd4,0xbf,0x74,0x2f,0x39,0x47,0x22,0x99,0x50,0x06,0x5f,0xcb,0x99,0xc5,0xc9,0x2e,0x70,0xd6,0x68,0x6a,0xc4,0x73,0x41,0xcb,0x8b,0xfd,0x23,0x98,0x11,0x59,0xad,0x20,0x8a,0x0d,0xaf,0xaa,0xd0,0xe2,0xeb,0x32,0x8b,0x6f,0x0e,0x43,0x12,0xe3,0x27,0x8f,0xf6,0xa4,0x76,0x0b +.byte 0xfb,0x22,0xad,0xda,0x1c,0x0a,0x3e,0x90,0xc0,0x7d,0xf3,0x09,0xbc,0x17,0x33,0xef,0xf1,0xf2,0x84,0x80,0x2a,0x0b,0x82,0xd7,0x95,0xc7,0xd2,0x08,0x4a,0xf4,0xf5,0x6d,0x09,0x06,0x8e,0xe4,0x74,0x63,0x8f,0x09,0xca,0xe2,0xd9,0x0e,0x1e,0x03,0x20,0x1b,0x4c,0xfb,0x1d,0x5a,0x2e,0x28,0xeb,0x84,0x82,0x6f,0x97,0x6f,0xcd,0x7a,0xc3,0xa7 +.byte 0x79,0x73,0x66,0x0c,0x94,0xd5,0xf4,0x8f,0x2c,0x73,0x1f,0x24,0xbc,0x17,0xee,0xd5,0xb0,0xa6,0xb8,0x04,0x6d,0x6a,0xd0,0x61,0xe3,0x1a,0x49,0x97,0x94,0xc5,0x8e,0xbc,0xac,0x5b,0x0b,0x0a,0xc5,0x74,0x06,0x89,0xee,0xc2,0xb7,0x5f,0x1b,0xa1,0x6b,0x1a,0xff,0xed,0xda,0x90,0x91,0xc1,0x0d,0x6a,0x06,0xd6,0xcb,0x02,0x71,0x17,0x95,0x7d +.byte 0xc6,0x3b,0x7e,0x6b,0xc8,0x73,0x03,0x0d,0x6b,0x8f,0x73,0x56,0x59,0x2e,0x09,0x23,0x4e,0xda,0xfc,0x4e,0xfc,0xa4,0x42,0x15,0x2e,0x10,0x6a,0x97,0x48,0x3c,0xb4,0xa4,0x0c,0x64,0x21,0xc3,0xeb,0x6c,0xac,0x27,0x4f,0x43,0x94,0x91,0x78,0xdc,0xfd,0xad,0x2b,0xa7,0x43,0x42,0xb0,0x51,0xdd,0x63,0xcc,0xcd,0xb7,0x15,0xfa,0x13,0x8d,0xc7 +.byte 0x55,0x3a,0x74,0x17,0x23,0x36,0x3e,0x23,0xe1,0x42,0x90,0xe1,0xb7,0xc7,0xda,0xb7,0x57,0xeb,0xc3,0xfb,0x62,0x58,0xbf,0x31,0x2a,0xfb,0xc7,0xdb,0x3d,0xfc,0x87,0x32,0xb1,0x3e,0xe5,0x3d,0x94,0x3d,0x86,0x32,0x61,0xfe,0x19,0xd2,0x32,0x31,0x8b,0x43,0xdb,0xab,0xa4,0xe5,0x34,0xc8,0x30,0xae,0x8c,0x02,0x53,0x99,0x35,0xb4,0x56,0x38 +.byte 0x37,0xcf,0xff,0xb0,0x05,0x21,0x12,0x65,0xc4,0xb3,0x9c,0x83,0x95,0x12,0xd3,0x03,0x7a,0x80,0x97,0x5b,0x67,0x33,0x27,0xfc,0x43,0xf2,0xf7,0xaa,0x60,0xb6,0xfc,0x55,0x44,0x30,0xa3,0x4a,0xa3,0x60,0x31,0xf7,0x01,0xfa,0xb0,0x8d,0x82,0x29,0xa7,0x03,0xb7,0x7e,0x3f,0xe5,0x66,0x26,0xb7,0x51,0xcf,0x8d,0xdd,0x6f,0x83,0x39,0xfc,0x9b +.byte 0xa5,0x3d,0xb6,0x41,0x89,0x54,0xc3,0xb2,0xf0,0x24,0x64,0xcb,0x53,0xfd,0x0a,0x91,0x6c,0x6f,0x28,0xfe,0xc1,0xe9,0x17,0x2e,0x65,0x55,0x2e,0xf2,0x48,0x52,0xb1,0x69,0xf0,0xdd,0x42,0xd5,0xdf,0x7c,0x36,0x75,0xdb,0x5b,0x3d,0xa9,0x6d,0xa4,0xeb,0x47,0x4f,0x2b,0x5c,0xd0,0x30,0xee,0xa7,0x74,0x6a,0x64,0x8a,0xbc,0x9b,0xe5,0x82,0x56 +.byte 0x76,0xe4,0x3f,0xf5,0x05,0x59,0x19,0x1e,0x80,0x47,0xf1,0x77,0xac,0x32,0x43,0x80,0x0a,0x1b,0x28,0xb6,0xf4,0xe8,0x7c,0x2f,0xeb,0xa8,0x4b,0x6a,0x59,0xb5,0xf8,0x77,0x68,0xd4,0x86,0x6c,0x87,0xdc,0xc4,0x00,0x4f,0xce,0xdb,0xf6,0x34,0xc3,0x74,0x02,0x08,0xdb,0x0d,0x34,0x8d,0xea,0x49,0x4a,0x30,0x5f,0x1b,0xcd,0xa6,0x3a,0x34,0x94 +.byte 0x5f,0x32,0x6a,0x62,0x96,0x4b,0x51,0x89,0x30,0xc9,0x90,0xdf,0x77,0x73,0x0e,0x3c,0x5c,0xbd,0x5c,0xee,0xd9,0x77,0xea,0x23,0x42,0xaa,0xa5,0x6b,0xf9,0x8c,0xc4,0x70,0x68,0xdd,0x0b,0x65,0xa3,0xc7,0xe4,0x7b,0x0a,0x89,0x85,0x25,0x7d,0x84,0x99,0x39,0xe6,0xb8,0xbe,0x7f,0x31,0x0f,0x84,0x0c,0x98,0x72,0xab,0x4c,0x44,0xb0,0xa4,0x83 +.byte 0x90,0xbb,0x93,0x73,0x07,0x07,0xba,0x63,0x5b,0x61,0x70,0xe1,0x84,0xae,0xaa,0xd6,0xa3,0x5a,0x54,0xd1,0xea,0xc7,0x2c,0x7b,0x67,0x4b,0x8a,0x7f,0x66,0x28,0x8d,0x22,0xec,0x82,0x64,0x69,0x63,0xf0,0x53,0x2d,0x10,0x9c,0x9c,0x34,0x4f,0xc6,0x96,0x40,0xdb,0xce,0x0e,0xf7,0x3a,0x8a,0xee,0x3f,0x32,0x5f,0x2b,0x0c,0x4a,0xbc,0x63,0xfb +.byte 0x18,0xf6,0x26,0x57,0xc9,0x13,0x13,0xb7,0xe0,0xcc,0x3e,0x4e,0x73,0xfa,0xe2,0x54,0xc1,0x67,0xfe,0xe2,0xec,0xfd,0xaf,0xf9,0x96,0x99,0x9f,0xe9,0xe2,0xd0,0x94,0x39,0x33,0xc9,0xca,0x35,0x27,0xad,0x58,0x46,0x98,0x64,0x17,0x5f,0xe9,0xce,0x4b,0xc8,0xab,0x0d,0xd2,0x88,0xec,0xbb,0x5c,0xba,0xc1,0x30,0x4c,0xd4,0x99,0x0d,0x07,0x95 +.byte 0x0a,0xa5,0xeb,0xa6,0x10,0x4b,0x4d,0x77,0x14,0x76,0x88,0x43,0x7f,0x6b,0x5d,0x9b,0x87,0x1d,0x6b,0x5d,0xb9,0x04,0xa9,0xc7,0x28,0x18,0x70,0xa1,0x99,0xbc,0x99,0xf5,0xf1,0x71,0xa9,0x3a,0xb6,0xe5,0x98,0x98,0x8f,0x7a,0x6c,0xda,0x1a,0x63,0x0e,0xf1,0xe8,0x10,0xa3,0x7c,0x64,0x7e,0xde,0x2a,0x59,0x1b,0x04,0xca,0x69,0x8e,0xba,0x2f +.byte 0x56,0xe1,0xa7,0xab,0x4f,0xe4,0x9d,0x49,0x33,0x9e,0x4e,0x5b,0xe1,0x58,0xc4,0x3f,0x99,0x5a,0x69,0x00,0xe5,0x5f,0x85,0xcb,0x62,0x80,0x5e,0x3d,0x88,0x0a,0x32,0x42,0xc1,0xf9,0x6a,0xa0,0xeb,0x65,0x2f,0x17,0x62,0x25,0x96,0x50,0xa2,0x6e,0xd6,0xdf,0x09,0xb7,0x1e,0x68,0xb2,0x10,0x2b,0xf3,0x9e,0xb2,0x67,0x75,0x9b,0xe3,0x76,0xfe +.byte 0x95,0xbe,0x83,0xcb,0xba,0x77,0x5b,0x2d,0x5f,0xdd,0x94,0xbb,0x0e,0x5d,0x83,0xa2,0xe7,0x48,0x4c,0x84,0x86,0x41,0x47,0x4b,0x96,0x24,0x89,0xa8,0x20,0x04,0xa5,0xef,0x8e,0xb6,0xeb,0xcd,0x3c,0x77,0xc5,0x65,0x5c,0xff,0xa6,0x0d,0x2b,0x58,0x21,0x5a,0x11,0xe2,0x24,0x64,0x1c,0xd6,0x18,0x9a,0xac,0x3f,0x42,0x0e,0xeb,0x32,0x3e,0xed +.byte 0xce,0x61,0xc9,0xe4,0xe7,0xd3,0x3f,0x53,0xa4,0x80,0x2b,0x1c,0xc0,0x99,0x63,0x52,0x93,0x5e,0xdc,0x78,0xe2,0x35,0x9e,0xb2,0xb4,0x1d,0x09,0xd1,0x5c,0x1c,0x4e,0xdb,0x3a,0x5d,0x8c,0x94,0x7d,0xfe,0x63,0xf2,0xa3,0xe9,0x61,0x73,0x78,0xc1,0xd9,0x17,0x5e,0x9a,0x73,0x58,0xc3,0xe7,0xa0,0x1f,0x2a,0x62,0x15,0xf8,0xdb,0xbb,0x38,0x80 +.byte 0x57,0xd3,0x1f,0x4c,0x4a,0x20,0x30,0xa9,0x7a,0x78,0x61,0xd9,0x90,0xb7,0x4f,0xd6,0x46,0x72,0xe7,0x41,0xb2,0xbb,0xfb,0x50,0xfe,0xe1,0xba,0x3e,0x73,0x2f,0x81,0x6d,0x2b,0x0b,0x90,0xbd,0x8a,0x3b,0x23,0x88,0xa2,0x7d,0x62,0x87,0x96,0xc9,0xcc,0x66,0x28,0x89,0xa7,0x29,0x41,0xd2,0xc5,0x5b,0xdb,0xc4,0x0c,0xbb,0x19,0x4e,0xd5,0x12 +.byte 0x53,0x48,0x5c,0xf2,0x9b,0x62,0xd0,0xa3,0x77,0x40,0x85,0x12,0x2b,0x2d,0x52,0x1b,0x31,0xbd,0xe9,0x1c,0xd4,0x87,0xa4,0xd7,0xc9,0x14,0xb7,0x39,0x66,0x8c,0xfe,0x3e,0x83,0x00,0x01,0xae,0x44,0x2d,0x7d,0xa1,0xda,0x66,0xb0,0x66,0xcb,0x62,0x55,0x9f,0x92,0x80,0x4e,0x8d,0x7f,0x70,0x95,0xc2,0xf2,0x1b,0xe9,0x35,0xf8,0x42,0x04,0x65 +.byte 0xf2,0x36,0x4c,0x96,0x30,0xd3,0x47,0x9d,0xb7,0x2b,0x76,0xac,0x75,0xb5,0xb8,0xf1,0x7d,0xa2,0x36,0xef,0x9d,0xa7,0x60,0x51,0x8d,0xcf,0x00,0x3d,0xdb,0xcc,0xe9,0xe2,0xc4,0x7b,0x3a,0xeb,0x2b,0xc3,0xd8,0x0b,0xb0,0x58,0x41,0xa0,0x47,0xab,0x07,0xf5,0x7c,0x9e,0x0b,0x7a,0x16,0x8f,0xb4,0xca,0x09,0xed,0x84,0xa1,0xfa,0xdc,0x7c,0x3c +.byte 0xdd,0x2f,0xb0,0x2d,0xeb,0x93,0x28,0xf5,0x1e,0x0c,0x1a,0x0c,0x35,0x27,0x40,0xf2,0x22,0x66,0x2d,0x82,0xf2,0x94,0x03,0xa5,0x4b,0x84,0x92,0x1d,0x98,0xd5,0xd9,0x09,0x6a,0xfd,0x65,0xe5,0xa1,0x0e,0xe2,0xd9,0xb6,0xd1,0xba,0xbf,0xc7,0x42,0x22,0x39,0x83,0xbf,0x37,0xf6,0x80,0xc2,0xea,0xdf,0xb9,0x33,0xa0,0xaf,0xd7,0xe3,0x70,0x9a +.byte 0x5c,0xf8,0x1a,0x47,0x2b,0xb5,0xdd,0x15,0xe3,0x08,0xc8,0x37,0xe3,0xc2,0x25,0x87,0x0e,0x3c,0xc5,0xae,0x61,0xa4,0x4a,0x56,0x50,0x08,0x58,0x68,0xa3,0x4a,0x28,0x08,0xef,0x92,0xd5,0x13,0x50,0x09,0x76,0x34,0x47,0xae,0xa8,0x7f,0xa5,0x2b,0x13,0xb7,0x5a,0x96,0x65,0x62,0xf2,0xaa,0xb4,0x4b,0x2a,0xad,0xea,0x2c,0x0d,0x1e,0x97,0x82 +.byte 0xe4,0x6f,0xfe,0xf4,0x88,0x14,0x7b,0xba,0x45,0xbe,0x61,0x56,0xd2,0x37,0x1b,0x65,0xb8,0x0b,0x77,0xcb,0x3c,0xfe,0x9f,0xe3,0x39,0xc5,0xfb,0x2a,0x18,0x9b,0x60,0x99,0xd5,0x6f,0x52,0xfe,0xd8,0x04,0x88,0x1c,0x9a,0x50,0xe5,0x3b,0x33,0x3f,0xca,0xc5,0x5b,0x9c,0x5f,0x35,0x13,0x65,0xa6,0x21,0x78,0x19,0xeb,0xff,0x35,0x70,0x81,0xaf +.byte 0x19,0x23,0x61,0xd6,0xeb,0xff,0xa6,0x9e,0x5d,0x3f,0x7f,0x89,0x2e,0x22,0xa4,0x0b,0x9c,0x4f,0xa9,0xff,0xbb,0x23,0x29,0xa1,0xf4,0x8a,0xb7,0x4b,0xfb,0xbf,0xeb,0x0a,0x47,0x87,0x78,0x2b,0x20,0x38,0x82,0xab,0x7e,0x2c,0xdc,0x08,0x2b,0xb4,0xae,0xd8,0x64,0x44,0x1a,0xdf,0x21,0x62,0x27,0xf2,0x61,0x63,0x37,0xad,0xd4,0x06,0x4e,0xae +.byte 0xba,0xeb,0x08,0xfa,0xe5,0xad,0x5d,0xcf,0xce,0x38,0xe5,0xca,0x74,0x83,0x42,0x4b,0xe8,0x8f,0xfb,0xff,0x83,0x4d,0x27,0x88,0x43,0x62,0xdd,0x80,0xa2,0x06,0x98,0x48,0x58,0x6f,0x54,0x16,0x6f,0xbf,0x81,0x36,0xc8,0xf3,0xea,0x4b,0xf7,0x5a,0x7b,0xb7,0xf4,0xa4,0x5e,0x22,0x52,0xe7,0x9e,0xb1,0xb6,0x7a,0xa8,0x22,0xee,0x68,0x82,0x8f +.byte 0xe4,0xcb,0xad,0x71,0xef,0x53,0xf2,0x7d,0xed,0x91,0x9e,0xf6,0x90,0x9e,0x54,0x19,0x30,0xaf,0x4a,0x17,0xc0,0x6a,0x9c,0x49,0x12,0x8b,0x6f,0xc7,0x47,0x1e,0xa2,0x64,0x28,0x1f,0x0c,0xd3,0x3e,0x59,0x66,0x8c,0x2e,0x11,0x52,0x6c,0x69,0x66,0x10,0xfb,0x27,0xe6,0x1c,0xae,0x6f,0x44,0x87,0x86,0x0d,0x3e,0xd3,0xa0,0x80,0xef,0x30,0xb9 +.byte 0xb8,0xd7,0x47,0x84,0x68,0x2b,0xf2,0x32,0x7b,0x89,0x93,0xd2,0x83,0x56,0x35,0xc3,0xbf,0x5c,0x24,0xec,0xad,0x2d,0xa4,0x49,0x63,0x89,0xc6,0xf9,0x24,0x51,0x1c,0x9b,0xd1,0xcb,0x30,0x82,0xda,0xb3,0xa7,0xe1,0x4d,0x96,0xd0,0x44,0x44,0x1d,0x4e,0xd7,0x7d,0x7a,0x51,0x2e,0x2f,0xc4,0x9f,0xdb,0x06,0x53,0xfc,0x51,0x56,0xe5,0xb9,0x6b +.byte 0x4a,0x2c,0x3e,0x62,0xc5,0x9c,0x42,0xe3,0xaf,0x3a,0x0f,0x0e,0x74,0x29,0x66,0x70,0x75,0x2a,0x06,0xd4,0x0f,0x0c,0xfd,0xea,0xcc,0x39,0xd0,0xa7,0x47,0x75,0x92,0x44,0x09,0xa2,0x3c,0x4e,0xad,0xaa,0xc4,0xc6,0xf9,0x35,0x82,0x23,0x25,0x43,0x94,0x26,0x14,0xde,0xf1,0xb9,0xb8,0xe0,0x75,0xe0,0x48,0x70,0x8a,0xc6,0x3c,0x72,0x98,0x72 +.byte 0x8b,0x15,0x58,0x17,0x73,0x29,0x67,0x21,0x56,0xc4,0x25,0x17,0x68,0xbe,0xd7,0x36,0x05,0x4b,0x58,0xa2,0x1b,0x64,0xe5,0x11,0x96,0x5a,0x3b,0xa6,0x90,0xb6,0x2d,0x7e,0x55,0xbb,0x31,0x93,0xe7,0xcc,0x2e,0x74,0xb6,0x9b,0x4d,0x04,0xc5,0x45,0x9b,0x0b,0x26,0xef,0x61,0x23,0x3d,0x7e,0xee,0x01,0x57,0xfa,0x77,0x12,0x47,0x64,0xac,0x8f +.byte 0x25,0xbe,0x8e,0x2e,0x68,0x11,0x95,0xf0,0x1a,0xd2,0x3d,0x66,0xc1,0xdb,0x97,0x9e,0xbb,0xba,0xc1,0x66,0xa4,0xb5,0x71,0x01,0xee,0xf5,0xbb,0x1e,0x9f,0x41,0xfc,0x40,0x74,0x26,0xf7,0xc6,0x2c,0x9c,0x1c,0x59,0xce,0xcf,0x18,0x17,0x81,0x5d,0xd4,0xe3,0xd8,0x46,0x62,0x9e,0x97,0xb1,0xca,0xac,0x01,0x3e,0xf8,0x96,0xa2,0xee,0xe0,0xf8 +.byte 0xf3,0x2d,0xe9,0xd2,0x1f,0x9f,0x41,0xbb,0x2f,0xe5,0x64,0x6d,0x5b,0xe7,0x47,0x0e,0x83,0x7b,0x08,0x5e,0x29,0x35,0x2f,0x75,0x31,0x44,0x4c,0xb7,0x61,0xa4,0x03,0x2e,0x15,0x94,0x7a,0xa0,0x46,0x31,0x7b,0x43,0xd9,0x14,0xa3,0x34,0x0c,0x83,0x93,0x75,0x8e,0x3a,0x1c,0xc3,0xe1,0x36,0x18,0x96,0x7a,0xfb,0x77,0xad,0xbb,0xe9,0x0d,0x4b +.byte 0x21,0x04,0x2e,0xdd,0x7a,0x63,0xc9,0x60,0xb1,0x9b,0xad,0xde,0x1f,0x65,0x8a,0x58,0x18,0x84,0x95,0xa9,0xac,0x3a,0xac,0xcb,0xb7,0xa9,0xeb,0x0c,0x7c,0x3a,0x98,0x9a,0x3f,0x56,0x23,0x51,0x58,0x59,0x4e,0xf5,0x57,0x60,0xe6,0x9d,0xf8,0xf7,0xed,0x9d,0x81,0x14,0x68,0xbe,0xaf,0x19,0xe5,0xb5,0x9b,0x5f,0xe4,0x51,0x44,0x4b,0x23,0x42 +.byte 0xdd,0x92,0x1a,0xe5,0x7e,0xef,0x77,0xbe,0x88,0x77,0x1e,0x8a,0xbd,0x2a,0x77,0xb1,0x0d,0x1b,0xe3,0x8a,0x7f,0x15,0x71,0x93,0xc9,0x5f,0x78,0x2d,0x77,0x9b,0x0c,0xad,0x76,0x3c,0x6b,0xe2,0x15,0x8e,0xe1,0x5e,0x1d,0x90,0xa5,0xd6,0xc7,0x55,0x5d,0x52,0xf7,0xcc,0x82,0x9b,0xdc,0x1d,0x80,0xa4,0xc7,0xbe,0x7c,0x4f,0xda,0x81,0x91,0x78 +.byte 0x88,0x0e,0x31,0xde,0x87,0x4c,0xdc,0x84,0x9a,0x65,0x89,0xfa,0x22,0x3e,0xde,0x3b,0x7f,0x7f,0x9b,0x3f,0x3e,0xda,0x13,0x31,0x59,0x7b,0x08,0x48,0x39,0x37,0xfd,0x1a,0x4f,0xa3,0x12,0xba,0xe5,0xd6,0xfa,0xa3,0x59,0x0b,0x3b,0x7d,0xde,0xc0,0x51,0xce,0x92,0x6b,0x3d,0x4b,0xd2,0xa4,0x68,0xc2,0x32,0x2d,0x01,0xbd,0x66,0x98,0x8f,0xa0 +.byte 0x86,0xfb,0x08,0x36,0xa9,0xd4,0x3b,0x7b,0x01,0x2d,0xaa,0x8c,0x64,0x19,0xa6,0x62,0x24,0x92,0x5e,0xc5,0x02,0x17,0x8e,0xf0,0x88,0xe9,0xd1,0x8b,0x69,0xda,0xed,0x9c,0x60,0x32,0xab,0xc0,0xbc,0x84,0x64,0x6e,0x32,0xb2,0xcd,0x24,0xf6,0xb2,0x9d,0xf5,0xf5,0x71,0xe2,0x01,0xbc,0x77,0x6a,0x5b,0x26,0x56,0xf7,0x04,0x84,0xff,0x7c,0xa4 +.byte 0xe8,0xa8,0x82,0x6c,0x40,0x24,0x93,0x3c,0x6e,0x7d,0x0d,0x22,0xd0,0xe4,0xef,0xc4,0x4e,0x26,0x66,0x61,0x75,0xe9,0x06,0x69,0x06,0xfd,0x97,0x68,0x96,0x67,0xec,0x96,0x09,0x73,0xe4,0x0a,0x3e,0xaa,0xb8,0x25,0x77,0x00,0x91,0x7a,0x2e,0xc8,0x81,0x75,0x78,0xb7,0xa5,0x27,0x55,0xf2,0xcf,0x9a,0xab,0xab,0x51,0x0a,0x65,0x47,0xbf,0x10 +.byte 0xd2,0x19,0x78,0x6b,0x35,0xf4,0xef,0x12,0x2b,0x5f,0x0c,0x28,0x7c,0xe8,0x64,0x55,0x2f,0x26,0x85,0x91,0x7a,0x9d,0x48,0x76,0x12,0x14,0x2d,0x4a,0x8a,0xd6,0xfa,0x7b,0xf9,0xc7,0x24,0x45,0xf6,0xbd,0x47,0xab,0xc6,0x4b,0x9e,0x39,0x77,0x57,0x04,0xa8,0x4d,0x43,0x99,0x5c,0xb1,0x3d,0xc2,0x4e,0xc5,0x17,0x66,0xc4,0xb6,0xdd,0x92,0x80 +.byte 0x85,0x3b,0x07,0x63,0x16,0x5f,0x67,0x76,0x9b,0xb5,0x8e,0xca,0x97,0xbb,0xf4,0x20,0xd0,0x4d,0x7b,0xd0,0xa3,0x74,0x6f,0x8a,0x68,0xc7,0x31,0x78,0x1b,0x72,0x45,0xa4,0xc4,0xf8,0xf8,0x26,0xa8,0x4d,0x08,0x2f,0x7b,0x3d,0xa0,0x2a,0xb5,0x65,0x27,0xc2,0x36,0x13,0x2d,0x8d,0x83,0xeb,0xf4,0x08,0x26,0x41,0x8b,0x32,0xf3,0x09,0x70,0x70 +.byte 0x5d,0x8a,0xcc,0xb8,0xe9,0xf7,0x08,0xdf,0x5f,0x4a,0xb8,0x8a,0xb7,0x1b,0xad,0xe2,0xc3,0x39,0x59,0xe0,0x7f,0xd0,0x66,0x7b,0x99,0x5a,0xde,0x52,0xe2,0x1f,0x47,0xc2,0x63,0x74,0x7a,0xa5,0x88,0xc3,0x24,0x70,0x4a,0x7d,0xdd,0xa4,0xe6,0xf8,0xfd,0x5c,0xfa,0x8c,0x4c,0x0f,0x52,0x95,0xf3,0x2c,0x76,0x47,0x7a,0xe8,0xdb,0xe0,0x9b,0x49 +.byte 0x88,0x5b,0x87,0x5a,0xd1,0x07,0x24,0x06,0x83,0x3b,0x25,0x23,0xe7,0xaa,0x79,0xef,0x74,0x02,0x12,0xfe,0x47,0x5c,0x77,0x73,0xf7,0x2e,0x4b,0x58,0x3b,0x60,0x7b,0x91,0x2f,0x0d,0xb4,0x6d,0x00,0x80,0x19,0xaa,0x88,0xbc,0xb2,0x7b,0xd9,0xb7,0xdd,0x32,0x47,0x62,0xf5,0x0f,0x46,0x95,0x4c,0x6c,0x01,0x67,0xfb,0xe4,0x2b,0xac,0x95,0x84 +.byte 0x25,0x0a,0xe5,0x4c,0x2d,0x4a,0x6e,0x77,0xfd,0xeb,0xe1,0x53,0xc9,0x2e,0x70,0x01,0x32,0x05,0x6d,0xc5,0xc9,0x5d,0x90,0xca,0x56,0xd1,0xd8,0x40,0x2a,0x51,0x4d,0x95,0xc3,0x57,0x8b,0xdd,0x62,0x9c,0x69,0xd1,0x03,0x89,0x95,0x38,0x2c,0xc1,0x6d,0x41,0xf2,0xc3,0xa2,0x9c,0x43,0xea,0xf1,0x02,0x00,0x56,0x46,0xbb,0x87,0x35,0x40,0x0e +.byte 0x18,0x51,0x29,0x39,0xbb,0x6d,0x15,0xf2,0xcd,0x54,0x23,0x95,0x69,0xdc,0x0a,0xb2,0x26,0xd9,0x25,0xe1,0xf1,0x07,0x7b,0x5e,0xc3,0x30,0x68,0x5f,0x2a,0xce,0x91,0x92,0x03,0x0c,0x62,0x11,0x43,0x80,0xe5,0x12,0xec,0xe3,0x4f,0x90,0xfe,0x38,0x6e,0xe9,0x7e,0x94,0x83,0x26,0x59,0x3f,0x3f,0x81,0xc6,0x94,0x98,0x09,0x80,0xff,0x01,0x44 +.byte 0xff,0x77,0x6a,0x4c,0x76,0x91,0xd9,0x12,0x59,0x9a,0x00,0x7c,0x87,0x06,0x17,0xf7,0x12,0xc7,0xee,0x04,0xd5,0x8d,0x68,0xc5,0x8d,0x80,0x10,0xcc,0x14,0x45,0xe8,0xd7,0x43,0x10,0x01,0x9e,0x61,0xc2,0xc0,0x66,0xfe,0xcf,0x5f,0x9f,0xcb,0xa3,0xf8,0xc7,0x07,0x41,0xe3,0xf2,0xda,0x6e,0x01,0x76,0xc6,0x49,0x49,0x01,0xc7,0xcf,0x6a,0x20 +.byte 0x71,0xc5,0xf0,0xb1,0xa0,0xc9,0xed,0xec,0x66,0x71,0x93,0xf5,0xc0,0x27,0x42,0xed,0xd5,0x6f,0x20,0xe1,0x86,0x3e,0xd0,0x5d,0x94,0x17,0x43,0xb4,0x98,0x0d,0x8a,0x31,0x6c,0x59,0xa9,0x0b,0xb3,0xa4,0x0b,0x46,0x0b,0xa8,0x79,0x62,0x3a,0x3d,0xbf,0xef,0x94,0xd3,0x31,0xf2,0xa1,0x55,0xe8,0x92,0x44,0x37,0x62,0x82,0x1b,0x60,0x87,0x67 +.byte 0x85,0x78,0xd5,0x84,0x73,0xa4,0xea,0x56,0x08,0x78,0x68,0x7f,0xfb,0x15,0x20,0x64,0xeb,0x6c,0xf7,0x5e,0xc0,0x79,0x83,0x59,0x7b,0xed,0x2d,0xa9,0x37,0x46,0xf3,0x62,0xb1,0xa1,0x2b,0x48,0x58,0xd9,0x0c,0x03,0xf7,0xf3,0x47,0xeb,0xd7,0x03,0x9b,0x85,0xd3,0xd7,0xd7,0x7e,0xfb,0x1a,0x25,0x83,0xda,0x06,0xa0,0x04,0x0d,0x6b,0x90,0x29 +.byte 0x2a,0xfc,0xcd,0x96,0xe9,0x17,0x4f,0xdd,0x2c,0x90,0xdf,0xf1,0xe3,0x08,0x0a,0xb8,0x0c,0x59,0x2a,0x83,0x62,0x94,0x00,0xd3,0x80,0x1a,0x31,0xd7,0x17,0x70,0xc7,0xa2,0x20,0x17,0x65,0x88,0xae,0x11,0x25,0xc9,0xba,0x76,0xa7,0x61,0x60,0xd1,0x59,0x50,0x22,0xdd,0xaa,0xcf,0x9d,0xc1,0x36,0x7d,0xf9,0x7b,0x69,0xc0,0x98,0xba,0x40,0xd5 +.byte 0xd6,0x46,0x93,0x92,0x7d,0x37,0x3f,0x3a,0x04,0x9a,0x84,0xaf,0x8e,0x61,0x04,0x26,0x54,0x33,0x84,0xc0,0xac,0x21,0x51,0xd7,0x9a,0x93,0x6e,0xf2,0x09,0x87,0xc5,0x35,0xa8,0x96,0xb0,0x64,0x90,0x35,0x52,0xed,0x0e,0xbc,0xdb,0xa6,0x06,0x3e,0xe7,0xea,0x57,0x4b,0xd7,0xc5,0x1c,0x76,0x3d,0x0d,0xc3,0x1f,0x8e,0x4f,0x12,0xdb,0x3a,0x21 +.byte 0x2a,0x69,0xc2,0x94,0xda,0x4c,0x91,0xcc,0xa8,0x36,0x89,0xd7,0x78,0xa8,0x74,0x79,0x63,0x92,0xeb,0x39,0x3b,0x84,0x8c,0xe5,0xc6,0x26,0xf0,0xef,0xcc,0xc1,0x72,0x4b,0x8e,0xcd,0xe4,0xd9,0x00,0x80,0xbc,0xdf,0xe2,0x61,0x53,0x04,0x81,0xb0,0x13,0xc5,0x6c,0x77,0x74,0xa3,0x0c,0x5b,0xef,0xef,0xea,0xc7,0x5b,0xeb,0xbf,0xee,0x54,0xd7 +.byte 0x7a,0x69,0x6e,0x39,0xc2,0xed,0x08,0x44,0x82,0x08,0x16,0x8b,0xf1,0x74,0x5f,0xeb,0x60,0xd5,0x46,0x63,0x80,0x39,0xe9,0x91,0x0a,0x17,0x8b,0xd4,0x09,0xdc,0xa6,0xab,0x6a,0xbc,0xf8,0xe9,0x09,0x19,0xc1,0x83,0x9f,0xdf,0xad,0x6c,0x31,0x94,0xb9,0xc5,0x77,0x83,0xd1,0xd8,0x76,0xeb,0x12,0x3c,0x00,0x31,0xea,0xac,0x97,0x39,0x16,0xd5 +.byte 0x81,0xfa,0x6d,0x10,0x5b,0x3e,0x20,0xe1,0x88,0x5c,0x4b,0xf3,0x04,0xd4,0xc3,0xb9,0xec,0xe5,0xb0,0x13,0xf5,0x09,0x5c,0xe8,0x27,0xe2,0xde,0x9b,0xac,0x2e,0xf2,0xe5,0x2c,0x33,0x4b,0x4f,0xec,0xc7,0x08,0xf9,0xc2,0xd3,0x1b,0x4d,0x81,0x69,0x14,0xa1,0xc5,0x0f,0xb2,0x57,0x8b,0xcc,0xca,0x3b,0xc9,0x9c,0x1f,0xee,0x06,0x4d,0xc7,0x62 +.byte 0xcb,0x8f,0x49,0x81,0xfb,0xa5,0x68,0x81,0x36,0x38,0x33,0x6b,0x9e,0x58,0xd4,0x24,0x67,0xf1,0x30,0xd6,0x08,0x61,0x5a,0x7f,0x2e,0x4e,0xf1,0xd6,0x64,0x75,0x72,0xb0,0xdf,0xcd,0xae,0x04,0x41,0xbd,0x04,0x2c,0x96,0x36,0x34,0x32,0xec,0xbd,0xd0,0xbf,0x8e,0xe8,0x47,0xe3,0x22,0xdd,0x79,0x53,0xcc,0x6a,0x25,0xf1,0x5e,0x63,0x09,0x98 +.byte 0xc5,0x6d,0x0a,0xe3,0x30,0xd6,0x52,0x70,0x21,0xb2,0xef,0x15,0x66,0x4a,0x2d,0x2b,0x5c,0xcb,0x39,0x1b,0x91,0x10,0xa6,0x02,0x22,0xd0,0xcc,0x32,0x50,0x5c,0x70,0x72,0xd1,0x03,0xb3,0x2d,0x2e,0x33,0xed,0xae,0x7a,0x07,0x3f,0x70,0x38,0x35,0xfc,0xcf,0xdb,0xfe,0x7b,0x26,0xd9,0x38,0x1e,0x52,0x07,0x2f,0x72,0x81,0xcc,0xd3,0x21,0x00 +.byte 0x63,0x48,0x38,0x44,0xb8,0x35,0xf2,0x4f,0xe5,0x33,0x8c,0xb3,0x07,0x0c,0xac,0x3d,0x73,0xe8,0xe3,0xb3,0x43,0xc5,0xb4,0x32,0xf4,0x41,0xdf,0x7b,0x06,0x3a,0xb8,0x67,0x17,0xc5,0xec,0x46,0x30,0xc0,0xa4,0x29,0x40,0xe4,0x8a,0xa3,0x14,0x84,0xa6,0x84,0xc7,0x5d,0x4b,0x57,0x37,0x9c,0x42,0xe6,0xa4,0x20,0xf7,0x5d,0xef,0x21,0xe2,0x80 +.byte 0x54,0x6d,0xf5,0xb5,0xbe,0xa3,0x95,0xcf,0x98,0xf8,0x38,0x46,0xa2,0x90,0x57,0x09,0x8f,0xb0,0x6d,0x01,0x5f,0x95,0x5a,0x78,0xf6,0xfd,0x01,0x0f,0xfd,0xa5,0xe2,0xcf,0x54,0xa3,0x2b,0xc1,0x30,0xbe,0x6d,0x1a,0xd3,0xdb,0x5a,0x17,0x43,0x46,0x93,0x81,0x0c,0x85,0x04,0x13,0xda,0xb4,0xde,0x81,0x48,0x5c,0xbc,0x42,0x9e,0x6d,0x6c,0x82 +.byte 0xff,0xa5,0x51,0xb1,0xd3,0xd2,0x3d,0x82,0x82,0xb4,0x96,0xb1,0x38,0x5d,0xc9,0x55,0xcb,0x9f,0xe5,0x47,0xd4,0x52,0x0f,0x76,0x54,0xec,0x39,0xb6,0x40,0xc3,0xc5,0xaa,0xc2,0x30,0x02,0xa0,0x68,0xc3,0x22,0x63,0x5a,0x8c,0x62,0x6d,0x40,0xc5,0xde,0x06,0x29,0x44,0x5d,0x2b,0x18,0x0a,0xa5,0x43,0x47,0xfe,0x5f,0x0f,0x63,0xa4,0x3c,0xa1 +.byte 0x62,0xcb,0x70,0x1d,0xf8,0x0e,0xc9,0xbe,0x27,0x0e,0x87,0x81,0x69,0x4c,0xea,0xbe,0xf9,0x9b,0xda,0xb6,0x9b,0xd0,0xdd,0xa0,0x1e,0x60,0x38,0x88,0x85,0x25,0x53,0xee,0x2c,0x77,0x53,0x82,0xb0,0x88,0x19,0x87,0x2a,0x77,0x7b,0x37,0x4b,0x4c,0xf4,0x96,0x5f,0x73,0xa1,0xbb,0x5c,0xfc,0x7e,0xbb,0xed,0x6f,0xb7,0x6f,0x9d,0x55,0xde,0xd3 +.byte 0xac,0xb9,0x8e,0x36,0x0f,0x3d,0xea,0x87,0xcd,0x19,0x33,0x1d,0xa8,0xee,0xfc,0xcd,0xe5,0x53,0x7b,0xdf,0x37,0x49,0x2d,0x73,0xf5,0x36,0xdd,0x42,0xc6,0x88,0x0d,0xf5,0xf2,0xba,0x2e,0x81,0xed,0x88,0x27,0x8d,0xe5,0x3f,0x83,0x5e,0xde,0x63,0x8f,0x67,0x2b,0x85,0xf3,0x2a,0x9b,0x26,0x3e,0x2b,0xe2,0x29,0xc5,0x5e,0x21,0x04,0xfe,0x5b +.byte 0xb9,0xd8,0xa7,0x7b,0xdf,0xcf,0x61,0xd6,0xaf,0x9b,0x17,0xcb,0xaf,0x8f,0x71,0xb3,0xc2,0x9d,0x9a,0x55,0x1d,0x3e,0x1d,0x17,0x25,0xc8,0x44,0x71,0x29,0x2f,0xc8,0x01,0x3b,0xe4,0xc4,0x2e,0xcc,0x3b,0xdb,0x34,0xbb,0xc0,0xcc,0xb6,0x07,0xe3,0x86,0x4c,0x62,0x02,0xe8,0xc3,0x11,0x85,0x6c,0x18,0x80,0xa3,0xbd,0x02,0x30,0x68,0x36,0xa3 +.byte 0xb6,0xc6,0xbd,0x82,0x43,0x40,0xed,0xa1,0xcf,0xc5,0xce,0xe4,0x27,0x8a,0xeb,0x8c,0x59,0xea,0x4a,0x81,0xd9,0x35,0x87,0x7d,0x6d,0xb2,0x8f,0x67,0x37,0x1f,0x11,0x60,0x0d,0xed,0x34,0xd5,0xa0,0x7b,0x46,0x71,0x68,0x19,0x69,0xd3,0x65,0x1d,0x47,0xf1,0x7e,0x16,0xd8,0xec,0xbb,0x52,0xc3,0x7b,0x62,0x5a,0xb3,0x60,0x67,0x2e,0xfd,0x57 +.byte 0xf2,0xfb,0x3d,0x63,0xe6,0x82,0x20,0xff,0x31,0x90,0x1d,0x5e,0x4f,0x04,0x9a,0xf8,0xb2,0x0c,0x84,0xff,0x7d,0xe2,0xec,0x4b,0x09,0xbb,0xdf,0xae,0xc5,0xaf,0xcb,0x8b,0xb5,0x5d,0xa8,0x53,0x78,0xf9,0xb9,0x43,0x71,0xa6,0xc2,0x10,0xfa,0xad,0xda,0xba,0x46,0x13,0x72,0x97,0xef,0x6f,0xe3,0x4f,0x5f,0xf9,0xec,0x25,0xdb,0xcd,0xca,0x33 +.byte 0x7e,0x50,0x73,0x5b,0xd0,0x9f,0xea,0xd5,0xd9,0x29,0xe8,0x1b,0xc1,0xf8,0x40,0xbf,0x50,0xdb,0x8e,0x39,0x0b,0xb7,0x6c,0xf1,0x34,0x0b,0x1f,0x88,0x27,0x4b,0xea,0x1d,0xb2,0x36,0x07,0x4b,0x22,0xa9,0xd0,0xf8,0xf2,0x13,0x8e,0x97,0x9d,0xd9,0x53,0xd3,0xdc,0x63,0x40,0x11,0xc7,0x74,0x9e,0xd9,0x83,0x01,0xae,0x36,0xcb,0x35,0x9a,0x0c +.byte 0xb5,0x15,0x0a,0xf5,0x41,0xa5,0x6c,0x72,0x40,0x80,0xf0,0x15,0xc0,0x80,0x23,0x0b,0xab,0x98,0xfc,0xab,0x81,0xe0,0x8b,0x61,0x91,0x18,0xd2,0x23,0x71,0xed,0x32,0x80,0x26,0x86,0x96,0xe9,0x90,0x5e,0x43,0xd2,0x89,0x8f,0x89,0x57,0x73,0xca,0xe1,0x42,0xa9,0xa9,0xed,0xdd,0xc5,0x9f,0xf7,0x00,0x0d,0xa3,0xe5,0xc8,0x6f,0x0c,0x14,0xa4 +.byte 0x9d,0x5a,0x14,0xaf,0x96,0x3a,0xb2,0x64,0xa7,0xac,0x20,0xa9,0x01,0x4c,0xec,0x64,0xc6,0x9b,0xfd,0x04,0xc5,0x2e,0xe7,0xdd,0xa5,0x8e,0xe7,0xe7,0x76,0x53,0x59,0x95,0x14,0x07,0xed,0xe9,0x96,0xd0,0x2d,0xc8,0x9d,0xa2,0x11,0xe3,0x02,0x20,0x68,0x09,0x25,0x69,0x07,0x88,0xdb,0x26,0x36,0xf5,0x8e,0xc3,0xf0,0x70,0x8c,0xeb,0xe6,0xcd +.byte 0xad,0xf3,0x49,0x6e,0x8a,0x54,0xa6,0xdd,0x97,0x8e,0x37,0x28,0x3a,0x6d,0xc4,0xdd,0x99,0x85,0xf7,0x96,0x63,0xb4,0xa2,0xdf,0xff,0x81,0x17,0xa1,0x22,0xb1,0x43,0x5b,0x29,0xdb,0x92,0x91,0xc9,0xc6,0x8d,0x29,0x1d,0x6e,0xe3,0x44,0x3e,0xe4,0x20,0xd5,0xf4,0x4a,0xfa,0xae,0xf6,0x2c,0xff,0x80,0xc9,0xce,0x7f,0x13,0x1e,0xd7,0x24,0xa2 +.byte 0xb3,0x90,0xb8,0x20,0x18,0xe5,0x6c,0x0e,0xf5,0xc6,0x26,0xd6,0xe9,0xe8,0x55,0xe4,0x3f,0x49,0x13,0xe2,0xca,0xef,0x9b,0xc0,0x8f,0x24,0x50,0x37,0xef,0x21,0xff,0x79,0xb7,0x5d,0x86,0x03,0xfb,0x85,0x75,0x74,0xbf,0xc5,0x3a,0x30,0xcc,0x00,0xc3,0x0d,0x4f,0x91,0xd6,0x31,0x19,0xd6,0xcd,0x0e,0x1c,0x53,0x88,0x75,0xb8,0xf9,0x68,0x7a +.byte 0xa4,0x3e,0x8d,0xed,0xba,0x05,0xb4,0x6c,0xe0,0x45,0x9c,0x41,0x34,0x24,0x82,0xaf,0x9a,0xcf,0x9e,0xd2,0x27,0x5c,0x7f,0xb3,0xcb,0xe5,0xad,0xb4,0x8e,0x74,0x9d,0xe4,0xba,0x55,0xb3,0xd3,0x32,0xbc,0x62,0x11,0xb3,0xa4,0x82,0xf0,0xd8,0xfc,0x79,0x03,0x70,0xae,0x7f,0x7f,0xc8,0x50,0xb5,0xbe,0x47,0x14,0x31,0xd7,0x16,0x65,0x52,0x3b +.byte 0xbb,0x42,0x38,0x23,0x77,0x4d,0x38,0x0b,0x0a,0x61,0x94,0xac,0xa3,0xc9,0xd7,0x99,0x4f,0x34,0x3a,0x88,0xe8,0x1d,0x0b,0x97,0x48,0x6d,0x5c,0x61,0x4c,0x3f,0xc2,0x7c,0x6c,0x63,0x00,0xdd,0x59,0xae,0xcd,0x17,0x0a,0x21,0x27,0x98,0x15,0x23,0x6d,0x84,0x7e,0x24,0xd4,0x7f,0x1b,0x3a,0x98,0x52,0xc3,0x60,0x33,0xd6,0xc1,0xfe,0x68,0xa8 +.byte 0x49,0x3d,0x7e,0x53,0xee,0x0d,0xed,0x89,0x9a,0x9a,0xe6,0xa1,0x47,0xc7,0xba,0xf3,0x73,0x5b,0xef,0x33,0x51,0x8c,0x1f,0x84,0xa6,0xef,0x77,0x94,0x2d,0xd6,0xda,0x8f,0x85,0x8c,0xd3,0xb6,0x02,0x68,0x9e,0x57,0xb6,0xd9,0x1a,0x8c,0xb5,0xf4,0x61,0x39,0x29,0xb5,0xb7,0x0d,0x0d,0xa6,0x81,0x87,0x54,0xc0,0xca,0x67,0x09,0xca,0x20,0xf3 +.byte 0x37,0x7e,0x03,0x3e,0x31,0x8c,0x51,0x89,0x06,0x81,0xf6,0x7b,0x8b,0xe3,0x4f,0xd0,0xb8,0x0c,0x34,0x7c,0xd6,0xfc,0x25,0xf8,0x00,0xa6,0x10,0x15,0x0d,0xeb,0x22,0x72,0x03,0x79,0x1c,0x84,0x1d,0x3d,0x10,0xaf,0x43,0x6d,0xd7,0xed,0x10,0x2c,0x14,0x26,0xd4,0xa1,0xee,0x6c,0x7f,0x52,0xe4,0x83,0xcc,0x5f,0x1a,0x4b,0xd0,0xc8,0xfb,0x27 +.byte 0x17,0x2c,0xf6,0x90,0x02,0xb4,0xb0,0x63,0x7c,0x14,0xec,0x9e,0x08,0x60,0xec,0x45,0x85,0xc6,0x76,0x42,0x4f,0x1c,0x5f,0x48,0x7f,0x87,0xef,0x8c,0x04,0x23,0x3c,0xda,0x39,0xbc,0xec,0x09,0xda,0xeb,0x9b,0x72,0x7a,0xb4,0x20,0x1c,0xb2,0xdd,0x2e,0x63,0x72,0xd7,0xb1,0xfe,0x5b,0x21,0x28,0xfb,0xeb,0x45,0x31,0x89,0xe5,0x3e,0xa0,0x85 +.byte 0xa6,0x96,0xdb,0x42,0xd5,0xb4,0x27,0x78,0x10,0xa0,0xcb,0x69,0x68,0x1e,0x76,0xed,0xbc,0x3c,0xa1,0x04,0x10,0x81,0x2a,0x4f,0x52,0x78,0x1e,0xae,0x5a,0x47,0x69,0x81,0xee,0xd3,0x14,0x1a,0x68,0x19,0x75,0x92,0x72,0x47,0x61,0x70,0xcf,0x96,0x35,0xa6,0xbb,0x00,0xaf,0x3e,0x90,0x86,0x22,0x9b,0x72,0x8a,0xa1,0x05,0xe2,0xfb,0xdc,0x30 +.byte 0xd5,0xdd,0x46,0x1f,0xf6,0x33,0x43,0xd1,0x59,0xc4,0x93,0x89,0x36,0x6a,0x7b,0x76,0xa7,0x40,0x6c,0xb1,0x9c,0xce,0x3a,0x8c,0xb6,0xd5,0xd1,0x0a,0x78,0xf6,0x08,0xfb,0xf5,0x9c,0xee,0x74,0x0d,0x39,0x51,0x6d,0x0e,0xa6,0xe9,0x22,0xd8,0x30,0xdf,0x16,0xf7,0xe3,0xbd,0xbb,0xe6,0x45,0xb8,0x9c,0xb5,0x49,0xf0,0xe8,0x7c,0xce,0x25,0xf8 +.byte 0x46,0xc0,0x59,0xc2,0xbc,0xdd,0xea,0x3e,0xeb,0x2e,0xf5,0xfd,0xd9,0x05,0x8a,0x2f,0xa3,0xa4,0x63,0xa6,0x50,0x08,0xce,0x2a,0x69,0xe7,0x58,0x57,0xa1,0xb2,0x44,0x41,0x04,0xfc,0x61,0xb1,0xb8,0x19,0x27,0x14,0x71,0x2f,0x55,0x64,0x28,0xa0,0xcc,0x47,0x0c,0xd4,0xed,0xfd,0x07,0x99,0xc6,0x9e,0xdc,0x5f,0x19,0x03,0x1a,0x00,0xda,0xf6 +.byte 0x2c,0x95,0xb0,0xd2,0xaa,0xfb,0xbc,0x1a,0xf3,0x62,0xaf,0x9c,0x38,0xde,0x61,0x30,0xd5,0x56,0x82,0x4b,0xf6,0xeb,0x34,0xc0,0xdc,0x51,0x97,0x89,0x80,0x47,0x9d,0x2a,0xae,0x0e,0x92,0x48,0xd2,0x9d,0x5a,0x67,0xef,0x33,0xa3,0xbe,0xdd,0x80,0x64,0x9c,0xc1,0xaf,0xf9,0x1a,0x4b,0x55,0x67,0x88,0x37,0x37,0xff,0x98,0xe3,0x9e,0xa9,0x4e +.byte 0x1f,0xa1,0x32,0x70,0xa3,0xbb,0xdc,0x6e,0xb3,0x6d,0xfe,0x8f,0x74,0x89,0xed,0xe1,0x13,0x3c,0x8f,0x08,0x75,0x84,0x84,0xee,0xac,0xcc,0xa5,0x47,0x9f,0x3e,0xb9,0xed,0x26,0x20,0xf7,0x7b,0xfb,0x8a,0x48,0x58,0x51,0x24,0xf9,0xeb,0x66,0x6d,0xd6,0x83,0x24,0xff,0x9f,0x0d,0x38,0x9c,0xf9,0x24,0x99,0x12,0x49,0xb6,0xdd,0xce,0x44,0xe7 +.byte 0x31,0x3d,0x4b,0x23,0x8a,0xd5,0x62,0xa2,0xdb,0x78,0x56,0x3a,0x62,0xc8,0x59,0x5f,0xcc,0x58,0x76,0x19,0x5d,0x48,0x4a,0xc2,0x87,0x21,0xc3,0x3d,0x3a,0x38,0xbd,0x20,0xfd,0xc3,0xa6,0xab,0x32,0xb8,0xc8,0xd1,0x5c,0xa5,0xb4,0x64,0x60,0xd2,0x87,0xb7,0xe9,0xc2,0x2b,0xb2,0x75,0x04,0xf4,0x6e,0x96,0x99,0x5d,0x08,0xff,0xa3,0x45,0x8a +.byte 0xad,0x7c,0xee,0x94,0x4e,0x45,0x86,0xad,0x0a,0x7a,0x5c,0x8f,0xff,0x28,0xb3,0x3c,0xf8,0x5e,0xb3,0x1e,0x5c,0xe0,0x22,0xf7,0x4e,0xe4,0xdf,0x1f,0xd2,0xa2,0x37,0x4a,0x87,0xa6,0x16,0x80,0x0c,0xc3,0x75,0x18,0xe4,0x76,0x8f,0xc3,0x1b,0xee,0xb1,0xe4,0x4b,0xeb,0x6f,0x15,0x48,0x60,0xaf,0x8e,0x0e,0xeb,0xbe,0x26,0xa3,0xbd,0x2a,0xb5 +.byte 0x6d,0x8b,0xd1,0xa1,0x0f,0x8e,0xaa,0xaa,0xb8,0x8d,0x84,0xe7,0x65,0x40,0x60,0x3d,0x59,0xb7,0x1c,0xef,0x08,0x0e,0x6f,0x21,0xb4,0xe6,0x10,0xda,0x59,0x9a,0x0f,0xe6,0xba,0xfd,0xed,0x7f,0xc1,0xe3,0x7a,0xb7,0x21,0x5d,0xcf,0x1c,0xbd,0xd2,0x59,0xc0,0x31,0xa5,0x8a,0x39,0x86,0x9e,0x7e,0x6a,0xcb,0x87,0x6f,0x01,0xba,0xa4,0x06,0x6b +.byte 0x3b,0x5d,0x68,0x85,0x11,0xd2,0x2a,0x3c,0x8e,0x3a,0x8c,0x8b,0x59,0xa0,0x4a,0xfb,0x76,0x85,0xe6,0x47,0xc3,0xf4,0xc4,0xe6,0xcc,0x7b,0xff,0x71,0x03,0xd1,0xc2,0x01,0xe4,0x5e,0x49,0x31,0xa6,0x0e,0x17,0x9b,0x42,0xdc,0x75,0xd6,0xfe,0x09,0x0b,0x6d,0x21,0x46,0xfe,0x40,0xcd,0x7c,0xdb,0xca,0xc9,0xba,0x64,0x83,0xd3,0xf7,0x0b,0xad +.byte 0xff,0xfd,0xe3,0xd9,0x49,0x7f,0x5d,0x48,0xaa,0xac,0xe5,0x74,0x2a,0x14,0x6f,0x64,0x21,0x81,0x09,0xcd,0x2d,0x19,0xf5,0x56,0x85,0xa8,0xec,0x98,0x65,0x46,0x99,0xec,0xbe,0xe3,0x86,0xd3,0x41,0x8b,0xe4,0x76,0x9b,0x5b,0x98,0x33,0x9e,0xdb,0xc9,0xde,0x89,0xfa,0x60,0x58,0xa8,0x2f,0x7a,0xca,0x30,0x91,0xc8,0x26,0x14,0x9c,0xd6,0x6d +.byte 0xc2,0x3c,0xca,0xe0,0x9a,0x13,0x72,0x63,0x5e,0x20,0xfd,0xa0,0xca,0xb2,0xed,0x37,0xc5,0xd4,0x4e,0xec,0x1f,0x74,0x25,0x37,0xe2,0xbe,0xb1,0x7f,0x52,0x26,0x28,0x4f,0x02,0xe5,0x6a,0x27,0xf3,0xc4,0x9c,0x69,0x09,0xac,0xff,0x77,0x9c,0xa4,0x1d,0xe7,0xa1,0x7c,0x37,0x70,0x3b,0x3c,0xc4,0x16,0x8f,0x5d,0xe5,0x05,0xa9,0x2c,0x91,0x2e +.byte 0x87,0xb0,0xa9,0x2e,0x32,0x73,0x5c,0x15,0x1e,0xbe,0x01,0xc9,0xd8,0x2e,0x26,0xf4,0x05,0x2d,0xe0,0xc0,0x38,0x81,0x61,0xf4,0x37,0x08,0xa0,0xc0,0x28,0x0a,0xb6,0xd4,0xcc,0x2c,0xc6,0xd4,0xda,0x48,0x49,0xcf,0x76,0x91,0x23,0x51,0x91,0xe7,0x50,0x94,0xae,0xb7,0x15,0x26,0xaa,0x82,0xd0,0x97,0xe8,0x5e,0xaa,0xfc,0xaa,0x60,0x62,0x81 +.byte 0x80,0xfd,0xfd,0xaf,0x65,0xcc,0x29,0x27,0x95,0xad,0x56,0xb9,0x85,0x66,0x49,0x62,0xb3,0x1a,0xf4,0x54,0xc7,0x5d,0x7f,0x73,0xe0,0xd2,0xc8,0x18,0x95,0x62,0x2f,0x5c,0x96,0xfb,0x63,0x15,0x46,0x07,0x5f,0x3e,0x52,0x18,0xf8,0x5d,0x45,0x0b,0xb6,0xf7,0xc5,0x3d,0x16,0xaa,0x0b,0x8f,0x9d,0x16,0xc8,0x93,0x13,0xd2,0xba,0x7a,0x52,0x1a +.byte 0x7a,0x73,0xc4,0xca,0xfb,0x04,0xaf,0x6f,0x3e,0xfa,0xff,0x29,0x09,0xe2,0x74,0x35,0xc1,0xfc,0x21,0xcf,0x5f,0xf7,0x82,0x55,0x75,0x27,0xc9,0x91,0xc5,0xbf,0xe6,0x68,0xb6,0x0f,0x10,0x0e,0x91,0x30,0xb7,0x05,0xca,0x59,0x4a,0x7f,0xb0,0xf6,0xaf,0xf1,0x5d,0xc9,0xc5,0x06,0xc5,0xf4,0xe1,0x75,0x16,0x9a,0x2c,0xc0,0x3f,0xc1,0x98,0x91 +.byte 0xb7,0xe6,0xb1,0xf2,0xf9,0xfa,0x6d,0x27,0x98,0x33,0x8b,0x73,0x7a,0x57,0x12,0x6f,0x80,0x11,0x28,0x17,0x7d,0xf1,0x26,0xaa,0x05,0xf1,0x6e,0x86,0x98,0xe7,0xf6,0x9f,0x9c,0x06,0x8f,0xec,0xd7,0x2d,0xb0,0x83,0xdf,0x23,0x80,0x34,0xd3,0xd7,0xf7,0xd5,0x0d,0x52,0x18,0xcd,0xc7,0xe7,0x15,0xc9,0x1b,0xae,0x58,0xcf,0xc5,0xdd,0x25,0x2a +.byte 0xff,0xa5,0xf3,0x6d,0x20,0xfd,0xda,0xfd,0x78,0x30,0x14,0x1f,0xb3,0x47,0xe3,0x2d,0x54,0x87,0xdc,0x30,0xbe,0x41,0xc0,0x48,0x52,0x82,0x49,0x78,0xad,0xfd,0x24,0xad,0xd6,0xc1,0x14,0x1e,0xa0,0xc1,0x3d,0x82,0x59,0x01,0x9b,0xc3,0xf4,0xf7,0x26,0xce,0x92,0x50,0x13,0x47,0xe0,0xf3,0xfa,0xd9,0x61,0x19,0x80,0x12,0xee,0x73,0x45,0x5b +.byte 0x34,0xfc,0xb2,0x84,0xb2,0x3f,0xdc,0x77,0x8e,0x2d,0xb3,0x62,0xb9,0x03,0x2d,0xb6,0x2a,0x17,0xcd,0xfb,0x54,0xc2,0x5e,0xb9,0xcf,0xd6,0x05,0xe2,0xac,0x3f,0xce,0x50,0x0f,0xa1,0x3e,0x67,0x68,0x46,0x0c,0xab,0xa1,0xdc,0x2a,0x26,0x1f,0x22,0x1b,0xa7,0xc9,0x3b,0x6c,0x97,0x5d,0x5c,0x7d,0x1a,0x46,0x4a,0x99,0x92,0x85,0x87,0x35,0x6c +.byte 0x78,0x9d,0xb0,0x39,0xd6,0x3b,0x52,0x60,0xb4,0xba,0xcc,0x2e,0xe9,0xe1,0x91,0x51,0xc1,0x52,0xc7,0x5d,0x84,0x95,0x54,0x25,0xdd,0xcd,0x40,0x35,0xa1,0xc8,0x7e,0xff,0x82,0x55,0x9f,0x64,0xef,0xa7,0xc1,0x79,0x57,0xc7,0x44,0xa8,0x1c,0x06,0xaa,0x2a,0x05,0x65,0x6c,0xdc,0x90,0x7d,0x2e,0x53,0x3c,0x56,0xe1,0x30,0xdf,0xcb,0x75,0x3d +.byte 0x36,0x88,0xfd,0x72,0x2d,0xc7,0x8e,0x2f,0x11,0x5a,0x2e,0xa9,0xd6,0x37,0x4b,0x31,0x4e,0x6e,0xa0,0x4a,0xd9,0xa9,0x48,0x18,0x50,0xb1,0x28,0xf6,0x74,0x03,0x44,0xa7,0x06,0x55,0x86,0x1a,0x1b,0x07,0x79,0xc4,0x25,0xba,0x5d,0xce,0xa2,0x96,0x7d,0x62,0xa7,0x21,0xf0,0xa7,0xc2,0x91,0x03,0x38,0x37,0x0b,0x20,0x40,0x88,0x7b,0x28,0xf4 +.byte 0xf3,0xc2,0xb0,0x4b,0xf6,0xef,0x2f,0xd9,0xb5,0x81,0x17,0x95,0x42,0x98,0x7f,0x18,0xd4,0x7e,0xa1,0x85,0xbf,0x62,0xdc,0x40,0xe4,0xd3,0xcc,0x78,0x01,0xec,0x12,0xcc,0x04,0x5b,0xfe,0xdb,0x39,0x7c,0x1e,0x56,0x7c,0x72,0x57,0xb9,0xdf,0x9d,0x43,0xd4,0xe3,0x1f,0xbf,0x69,0xfb,0x43,0x23,0xd8,0x75,0x81,0xe8,0x39,0x0f,0xe4,0xe9,0x51 +.byte 0xea,0xb7,0xa7,0xc6,0x17,0xc6,0x75,0x4c,0xa8,0x17,0x41,0x1c,0x55,0x8e,0x8d,0xf3,0x64,0xbc,0xc3,0x33,0xa7,0xc1,0xbe,0xa2,0x89,0x75,0xd6,0xda,0xad,0x44,0xd5,0xdd,0x18,0xe2,0xfc,0x1d,0xa1,0xbc,0x1a,0xb8,0x40,0x1a,0x4f,0x44,0x4b,0x56,0xe9,0xf4,0xa8,0x16,0xe6,0xc9,0x40,0x90,0x9b,0x49,0xae,0x62,0x12,0x3d,0x50,0x2e,0x7b,0x60 +.byte 0x6f,0x04,0x01,0x2c,0x83,0x2a,0xd2,0x92,0x63,0xa2,0xe2,0x39,0x9a,0xc4,0x1e,0x5a,0x53,0x3f,0x4d,0x69,0xfa,0x0a,0x22,0x13,0x80,0xa4,0x6e,0xfb,0x09,0xcb,0x35,0xd7,0x12,0xa4,0xcd,0xfc,0x0b,0x06,0xa6,0x5e,0xc6,0x4a,0x22,0x56,0x5d,0x7f,0x70,0xd0,0xf8,0xe6,0x96,0x77,0xce,0xd9,0x69,0x6c,0x06,0xac,0xaa,0x94,0x6d,0x57,0x1b,0x28 +.byte 0xb4,0x07,0x50,0x19,0xd1,0x86,0xba,0xe6,0xe6,0x31,0x74,0x1d,0x3d,0xe8,0xe2,0x7b,0xfe,0xc9,0x41,0x89,0x20,0x5b,0x6a,0xc0,0x18,0x16,0xee,0x35,0xfa,0x56,0x35,0x3e,0x53,0x99,0xfb,0x8d,0xae,0x75,0x4f,0xc5,0x8d,0xff,0x23,0xd5,0x42,0xf4,0x81,0x5c,0x8b,0x71,0x7a,0x22,0xb0,0x6b,0x45,0x86,0xa6,0xc6,0xdb,0xa6,0x83,0x01,0x28,0xde +.byte 0x38,0xaa,0x6e,0xf8,0x5a,0xf2,0xcc,0x3c,0xc5,0x65,0x78,0x37,0xe8,0x8a,0x59,0xf3,0xfe,0x8b,0xcd,0xf6,0x31,0x46,0xdc,0x72,0x19,0xf7,0x73,0xac,0x5c,0xf1,0xe3,0xfd,0x85,0x51,0xec,0x92,0x3a,0xf3,0xd7,0xb2,0x95,0x53,0x79,0x48,0xd3,0x29,0x84,0xec,0xc5,0x0a,0x71,0x15,0x52,0x69,0x6a,0xe1,0xab,0x69,0x94,0xc2,0x51,0xdf,0x27,0xd8 +.byte 0xb1,0x05,0xc4,0x12,0xea,0x1e,0xda,0x6e,0xf2,0xf5,0x8a,0xa8,0x72,0x74,0x5a,0xe5,0x45,0x5b,0x5f,0xf9,0xb0,0x56,0x5c,0x85,0xf7,0x63,0x8d,0x1d,0xbf,0xe9,0x7c,0x97,0xe9,0x37,0xb3,0x5b,0x4b,0x57,0xfc,0xf4,0x58,0x84,0x26,0x55,0x07,0xc7,0x0a,0xfe,0x5a,0x58,0xd0,0xd8,0x19,0xf4,0x02,0xad,0x2c,0x4e,0xbd,0xe1,0x07,0x48,0x3b,0xc4 +.byte 0xd6,0x23,0x3a,0x63,0xc3,0xf5,0x17,0x46,0x03,0xa4,0x9a,0x10,0xf9,0xac,0x70,0x9c,0x13,0x10,0x94,0xda,0x17,0xc5,0xbb,0x87,0x0f,0x9b,0x4f,0x54,0x55,0x6b,0x57,0x2d,0x12,0x0b,0xa7,0x9c,0x77,0x6d,0x67,0xb0,0x03,0xdf,0xc6,0xa2,0x76,0x96,0x0c,0xac,0x30,0xbc,0xa2,0x55,0x23,0x01,0xae,0x51,0x50,0xd4,0xab,0xd0,0xee,0x75,0xf1,0x96 +.byte 0x75,0xf5,0x2e,0xae,0x52,0x31,0x0b,0x0a,0x8a,0xdb,0x4c,0x4d,0x4c,0x80,0xfc,0xd7,0x68,0x05,0x54,0x47,0xa5,0xc4,0xb1,0x63,0x87,0x43,0x1b,0xe1,0x0b,0x4f,0xff,0x0c,0x02,0xf7,0x00,0xd4,0x8d,0x6e,0xa1,0x21,0x91,0x62,0xec,0x55,0xd5,0x72,0x70,0x59,0x7a,0xa4,0x0e,0x78,0x7a,0x87,0x1f,0x71,0x35,0x3b,0xf7,0x1f,0x66,0x8c,0x90,0xf9 +.byte 0x6d,0x1f,0x74,0x47,0x41,0xf5,0x21,0x98,0x0d,0x42,0x61,0x21,0x0b,0x62,0x59,0xc7,0x5e,0x58,0x37,0xfb,0xee,0xbb,0xa0,0x45,0xa8,0x84,0xae,0x41,0x29,0xc9,0x88,0x64,0x69,0x75,0xc1,0x5f,0x63,0x7c,0x00,0x1c,0x35,0x61,0x9e,0xad,0x19,0xd7,0xd8,0xf1,0x64,0x57,0x10,0x87,0x73,0xa8,0x8b,0x39,0x9b,0x1c,0x1a,0xc2,0x1b,0x01,0x1a,0x41 +.byte 0x26,0x58,0x93,0x8f,0xed,0xf9,0xe7,0xfe,0xcc,0x27,0x1b,0x6b,0xb8,0x28,0x5a,0x0b,0x04,0xa0,0x94,0x23,0x4b,0x21,0x5f,0xb3,0xc9,0xb6,0x7b,0x36,0x5a,0x67,0x6b,0xd2,0xc2,0x53,0x97,0x5d,0xa5,0x43,0xd3,0x79,0x83,0xe2,0x3b,0xe0,0xaf,0x5f,0xbd,0xf3,0xb0,0xfc,0x04,0x95,0x06,0x17,0x0c,0xe2,0x68,0xe8,0xf3,0x90,0xc7,0x2b,0x7b,0xcc +.byte 0xaa,0xce,0xf5,0x0b,0x3c,0x3f,0x10,0xa7,0x31,0x9d,0xf0,0x1e,0x3e,0x74,0x57,0xbd,0x87,0xe7,0x37,0xd0,0x37,0x09,0xae,0x03,0x96,0xb1,0xad,0x8f,0x2d,0x72,0xdc,0x0f,0xdf,0xd9,0xfb,0xcc,0xb8,0x48,0x62,0xf7,0xad,0x05,0x4d,0xc6,0xe5,0x92,0xe3,0x95,0xa0,0x74,0x7a,0xa6,0x84,0x13,0x68,0x17,0xaa,0x8f,0x40,0x2a,0x8d,0x2b,0x66,0xdc +.byte 0xf8,0xf6,0x6d,0x7c,0x7e,0x40,0x22,0x05,0x16,0x20,0xbc,0xe5,0xc2,0x87,0xe2,0xd5,0xbd,0x47,0xd5,0x69,0x95,0x12,0x25,0x1c,0xaa,0x9d,0xb5,0x73,0x08,0xaf,0xfb,0x46,0xa5,0x11,0x2c,0x93,0xc6,0xfc,0xc0,0x5e,0x0e,0x99,0x1c,0x80,0x5f,0xe5,0xc8,0x52,0x73,0x35,0x4d,0xbc,0x70,0xeb,0x40,0xc9,0x47,0x8a,0x8f,0x19,0xd9,0xa9,0xec,0x4b +.byte 0x88,0x53,0x56,0x08,0x4a,0xa2,0x32,0x1f,0xe2,0xbb,0x68,0x35,0xfd,0xf2,0x0e,0x0f,0x7f,0xc8,0xf1,0x59,0xac,0x97,0x8f,0x84,0x69,0xb6,0xb9,0x5f,0x84,0xe9,0xf2,0xf9,0x09,0xf6,0xf1,0x31,0xd7,0x1a,0xa8,0x25,0x32,0x5f,0xb1,0xa7,0x84,0x15,0xfa,0x07,0xa8,0x53,0xce,0x2a,0x26,0xe0,0x4d,0x07,0x4f,0x45,0x63,0x76,0xfd,0xe3,0xb4,0x4e +.byte 0x81,0x5e,0xe6,0x01,0x9c,0xf5,0x82,0x2d,0x71,0x0f,0x98,0xb4,0x72,0x06,0xbc,0x89,0x89,0x60,0x5f,0xd9,0x92,0xcf,0xb9,0x41,0xe3,0x13,0xaa,0xe4,0x80,0xb5,0x75,0xf4,0x9a,0x1b,0xc2,0xa3,0xa4,0xa9,0x0f,0x15,0xdc,0x26,0xdd,0x20,0x10,0x27,0xbd,0x06,0x77,0x12,0xa5,0xb3,0xde,0x9f,0xbf,0xc4,0xb6,0x1d,0x76,0xdc,0x16,0x00,0x2e,0xe2 +.byte 0x00,0x4d,0xb3,0x62,0x57,0x73,0x1e,0x90,0xe2,0xaa,0x4c,0x47,0xdf,0x6b,0x2d,0x66,0x2f,0x82,0x55,0x91,0x26,0x33,0xb9,0x3a,0xc7,0xf1,0x0a,0xda,0x9b,0x6b,0x05,0x82,0x0f,0x0e,0x30,0x74,0x0b,0xea,0x0f,0x49,0x55,0x3b,0xe7,0x42,0x48,0xca,0x82,0x3e,0x8c,0xbc,0xe2,0x88,0x43,0x44,0x0d,0x37,0x9b,0xd1,0xfc,0xf1,0x45,0x46,0x0e,0xe1 +.byte 0xec,0x91,0x39,0x96,0x7d,0xbc,0xd5,0xb1,0x11,0x55,0x54,0x49,0x4f,0x18,0xed,0xec,0x58,0xdb,0xb3,0x7d,0x64,0x8d,0xfc,0x65,0x1f,0xf0,0xe0,0xc0,0x41,0xc0,0x19,0xeb,0x16,0x16,0x71,0x36,0x88,0xcf,0x75,0x3d,0x9c,0xe6,0xa0,0x84,0x54,0x26,0x64,0x95,0x9a,0xe1,0x0b,0x51,0xcf,0x9a,0x55,0x60,0x4d,0x9d,0x1d,0x37,0x71,0xa8,0x94,0x0a +.byte 0x20,0xeb,0xf2,0x91,0x14,0xfc,0x12,0xb0,0x1e,0xe3,0x5e,0x3a,0xbb,0x22,0xde,0x20,0xb1,0x58,0xef,0x0b,0xb1,0xc2,0x2f,0xea,0xd8,0xdb,0x1d,0x3a,0x67,0x7b,0xbd,0x26,0xfa,0x4a,0x3c,0x3d,0xbd,0x87,0x4c,0xba,0x57,0xdf,0xfb,0x1d,0xf7,0x26,0x5f,0x52,0x4e,0xdd,0x9b,0x38,0x62,0xed,0x48,0xc1,0xae,0x7f,0xa8,0x13,0x05,0x09,0xff,0xc0 +.byte 0xd3,0x49,0x75,0x1f,0x6a,0xe0,0x79,0x94,0xc1,0xe9,0xe3,0xf5,0x33,0x40,0xd4,0x6b,0xfe,0x4d,0x6e,0x84,0xb9,0x20,0x68,0x2b,0x6c,0xb3,0xf1,0xb1,0x1c,0xfd,0x93,0x14,0x7f,0x35,0x9b,0xd5,0x07,0x15,0x87,0x56,0xb9,0x45,0x22,0x64,0x73,0xdb,0x34,0x35,0xca,0x15,0x4e,0xa2,0xa2,0xe2,0x7a,0x6e,0x14,0x46,0xf5,0xf1,0x70,0xd3,0x3a,0x2e +.byte 0x38,0x9d,0xf6,0xc6,0x29,0xd5,0x7f,0xc7,0x77,0x2c,0x33,0x55,0x1c,0xc2,0xf1,0xaf,0x8e,0x4d,0x1b,0x22,0x36,0x35,0x93,0x47,0xa5,0x59,0xb4,0x94,0x0f,0x2d,0x66,0x24,0x6f,0x57,0xa4,0x95,0xf3,0xd7,0xf3,0x59,0x9d,0xc0,0xda,0xa7,0xf7,0xf2,0x8d,0x93,0xc9,0x90,0x91,0x9e,0x12,0x3f,0x34,0x01,0x90,0x8b,0x13,0x09,0x3d,0x2f,0xa8,0x31 +.byte 0xfa,0x39,0x4a,0x7d,0x0d,0x34,0xa3,0xf1,0x75,0xdb,0xa2,0xd2,0x5c,0xf1,0x72,0xfd,0x7f,0x7b,0x15,0x92,0xf0,0x71,0xd6,0xa0,0x74,0x53,0x61,0x67,0xa4,0x8b,0x72,0x3a,0x66,0x0a,0xce,0xc9,0x1c,0x5b,0x4d,0xaa,0x0a,0x3a,0x91,0x0a,0xbb,0xef,0x6e,0x8d,0x00,0xc0,0xa1,0x89,0xa9,0xbd,0x5a,0x2d,0xf8,0x7c,0x1f,0xb2,0x5a,0x73,0x33,0xe7 +.byte 0xb3,0xfd,0xd4,0xe3,0x81,0x69,0x30,0xc1,0xf8,0x97,0x7b,0xf3,0x63,0xaa,0xd5,0x5a,0x98,0x95,0xb3,0x65,0x2d,0xf9,0x68,0x2e,0x2c,0x26,0xe6,0x77,0x8f,0x76,0x7a,0x02,0xc7,0x50,0x28,0x40,0xcf,0x44,0x66,0x18,0x54,0x52,0xef,0x79,0x26,0xc2,0x76,0x5b,0x71,0x92,0x49,0xba,0xe1,0xd7,0xf2,0xdd,0x57,0xe0,0x78,0x6e,0xb6,0xdd,0x0d,0x20 +.byte 0x85,0xf9,0x34,0x9e,0x65,0x6b,0x9f,0x41,0x24,0xe2,0xb1,0x2a,0xef,0x8b,0xd2,0x19,0x81,0x73,0x56,0x5a,0x84,0xd3,0x46,0xf8,0x74,0xe3,0x1f,0x3d,0xd9,0x16,0x86,0x38,0xf6,0x7c,0x04,0xab,0x9a,0x64,0x0e,0x48,0x06,0x4c,0x61,0xcd,0x2d,0x4d,0xef,0x6f,0xd6,0x7d,0x31,0x1c,0x56,0x65,0xc4,0xf1,0xa7,0x15,0xac,0xa4,0xe2,0x8b,0x83,0x5e +.byte 0x64,0x36,0x2e,0x77,0x94,0x2e,0x2e,0xa3,0x62,0xcf,0x6e,0x7a,0x6d,0x39,0xaf,0xf7,0x96,0x88,0x31,0x14,0x58,0x46,0x30,0x0c,0x36,0x3a,0x4c,0x53,0xe0,0xa7,0x24,0x76,0x84,0x0f,0xfb,0x7e,0x55,0xa0,0x0f,0x63,0xfc,0xd6,0x1f,0x58,0x68,0xb5,0xcc,0x77,0x4f,0x16,0x91,0xa7,0xfd,0x62,0xb3,0x88,0x13,0x7c,0xcb,0x63,0x6d,0xe4,0x38,0x4c +.byte 0x6e,0x3b,0xf7,0xe3,0x8d,0x52,0x84,0x61,0x19,0x12,0x51,0xbe,0xed,0x32,0x3d,0x77,0xdd,0xa1,0xc3,0x59,0x65,0x79,0xa1,0x6b,0xbc,0x65,0x6c,0xe3,0x7e,0x60,0x49,0xbd,0xcf,0x6f,0x61,0x97,0x98,0xbe,0x74,0x38,0xd1,0x09,0xc1,0x59,0xe5,0x7f,0xfe,0xbf,0xfd,0x60,0x1b,0x96,0x00,0x46,0x56,0x4d,0x81,0x4c,0x70,0x59,0x39,0x66,0x13,0x58 +.byte 0xe7,0x62,0x3a,0xfc,0x1b,0xe5,0xf9,0x03,0xd4,0x4b,0xab,0x1d,0x56,0x22,0x4a,0x09,0xa5,0xdd,0xac,0x39,0xbe,0x27,0x39,0xb3,0xe8,0xad,0xe0,0x07,0x86,0x10,0xce,0xa9,0x4e,0x8b,0x47,0x8d,0xb8,0x63,0x2f,0x61,0x1a,0x8b,0xd4,0xd3,0xfe,0x73,0x82,0x5a,0xd6,0xa9,0x46,0x56,0xa7,0x81,0xe9,0xda,0xb9,0x17,0xa7,0xc8,0x0f,0x24,0x16,0x6a +.byte 0x12,0xfe,0xc3,0x65,0x85,0x77,0xab,0x89,0x44,0x1b,0xa3,0x8b,0xfd,0x07,0xf4,0x77,0xaa,0xe1,0x71,0x33,0x74,0x93,0xdc,0x90,0x53,0x39,0x47,0x8c,0xea,0x18,0xe1,0x6a,0xed,0x8c,0x56,0x08,0x2f,0xa1,0x1f,0x22,0xf2,0xc0,0x12,0xcd,0xb7,0xdf,0xb6,0x3c,0xd6,0x22,0x6c,0x5b,0x00,0x0f,0xdb,0x66,0x5b,0x54,0x35,0x48,0x37,0x8c,0x79,0x74 +.byte 0xd1,0xb0,0x15,0x01,0x22,0x3a,0x7c,0x17,0x8c,0x20,0x06,0x9b,0x13,0x6e,0xee,0xbf,0xb4,0xac,0x01,0x61,0xb9,0x28,0x65,0x8e,0x53,0x12,0x4f,0xe0,0x5f,0xfc,0xdb,0x40,0x6c,0xa2,0x19,0x64,0x49,0x7a,0xc7,0xc5,0xc8,0x53,0x6e,0xd5,0x68,0xe1,0x61,0xe5,0x87,0xc2,0x99,0x59,0x4c,0x27,0xc8,0xd0,0xd0,0x10,0xce,0x9f,0x09,0xff,0xf5,0xa8 +.byte 0xf8,0x79,0xf6,0x0f,0x73,0xda,0x8a,0x36,0x8e,0x48,0x7e,0xbd,0x98,0x76,0x57,0xfa,0x5c,0xec,0xa5,0x3d,0x30,0xfe,0xa3,0xe5,0x27,0x87,0xcf,0x26,0xfe,0x61,0xe4,0xed,0xd1,0xfb,0xfc,0x91,0x5d,0xb6,0x70,0x2c,0x2c,0x59,0x14,0xd5,0x1d,0x9a,0xb9,0x2c,0xef,0x24,0x7b,0x10,0x8d,0x99,0x63,0xaa,0x82,0xf0,0x1c,0xe8,0xa0,0x00,0xa5,0xa7 +.byte 0xf8,0xc0,0x35,0x9e,0x12,0x18,0xaf,0x42,0x9d,0xe5,0x2b,0x72,0x6c,0x31,0xd8,0x8f,0x6c,0xde,0x2e,0x37,0xa6,0x73,0x06,0xe7,0x90,0x43,0x79,0x99,0x64,0xd1,0x17,0xa1,0x43,0x6d,0xd4,0x90,0x50,0xf2,0xcc,0x0b,0x73,0x49,0x9e,0x14,0x7c,0x49,0x92,0x05,0x0e,0x8c,0xda,0xb7,0x18,0xf0,0xcc,0xea,0xe4,0x32,0x58,0xc7,0xbd,0x8e,0xca,0x35 +.byte 0x52,0x9f,0xec,0x5d,0xa0,0x6c,0x83,0x61,0x07,0x74,0x37,0x4a,0x10,0xa0,0x98,0x83,0x3a,0x65,0x17,0x63,0xd0,0x22,0x96,0xb5,0xed,0xbb,0xbb,0x1c,0x18,0x8a,0x49,0x3d,0x0f,0xcc,0x24,0xb3,0x9b,0xb6,0x23,0x2e,0x9d,0x97,0xe7,0x31,0xf8,0x36,0x6d,0x7b,0xa1,0xf1,0x02,0xde,0x7c,0xad,0x77,0x5d,0x85,0x7c,0x39,0x61,0xc7,0xd7,0x3f,0x70 +.byte 0x1c,0xe1,0x0e,0x49,0xf4,0xcd,0xab,0xfd,0x4d,0x2f,0xc7,0xb7,0x53,0xfc,0xed,0xeb,0x41,0x2a,0x80,0x40,0xf3,0x47,0xf8,0x15,0xa0,0x4c,0x8b,0x34,0xf6,0x6a,0xb8,0x30,0x09,0x4d,0xe6,0x60,0xb7,0x24,0x6b,0x4c,0x26,0xdf,0x83,0x37,0xc7,0x96,0xba,0x35,0xda,0x29,0x4e,0xca,0x52,0xf7,0x41,0xd3,0x98,0x27,0xb2,0x9e,0xec,0xcc,0x12,0xdc +.byte 0x77,0xfd,0x11,0xbd,0xbd,0xbb,0x5e,0x0c,0x37,0x29,0xd2,0x4f,0x7d,0x5c,0x97,0xad,0x72,0x93,0x4a,0xfa,0x17,0x07,0x07,0x26,0xee,0xa7,0x29,0x2e,0xdb,0xf6,0x60,0x65,0x2d,0x85,0xbe,0x27,0x4d,0xf7,0x2b,0xb4,0x81,0xf5,0x3a,0x1d,0xae,0x25,0x8b,0x60,0xc2,0x75,0x3a,0xfd,0xf9,0x4d,0x90,0x7a,0x8a,0x3a,0xf6,0xa9,0xf0,0x11,0xd2,0xb9 +.byte 0xdb,0x23,0x40,0x9d,0x33,0xc3,0xbf,0x60,0x95,0x9c,0x6f,0xa9,0x82,0x42,0xe5,0x67,0x52,0x36,0xea,0x68,0x64,0x24,0x85,0x46,0x7e,0x2a,0x1a,0x6a,0x4b,0xa8,0xb0,0xa0,0x9c,0xb8,0x4a,0xb6,0x2e,0xb2,0x6b,0xf4,0x63,0x9f,0x54,0xb5,0x6f,0x1b,0xf5,0x71,0x7e,0xf8,0xef,0xb2,0x92,0xe2,0xcf,0x65,0xb4,0x02,0x9b,0x75,0x4b,0xf9,0x6b,0xa1 +.byte 0x24,0x3b,0xea,0x7f,0x31,0x08,0xd4,0xdc,0xab,0x12,0xc0,0xca,0x64,0xee,0xfa,0x61,0x1c,0x0f,0x24,0xc3,0x8c,0xbd,0xc8,0xd2,0x42,0xf7,0x1f,0x2e,0xd3,0xd1,0x51,0x86,0xfb,0xa2,0x95,0xc5,0x8c,0x5b,0x61,0x14,0xc9,0xe4,0x07,0xa1,0xf7,0x39,0x11,0x40,0x68,0xd6,0xe2,0x38,0x96,0x6f,0x99,0xf1,0xd2,0xfb,0x8e,0xb8,0x3d,0xf2,0x8a,0x4e +.byte 0x3e,0x54,0xd9,0x0e,0xd1,0xc9,0x31,0x04,0xa4,0xee,0xbe,0x51,0xcf,0x5f,0xd1,0xc8,0x13,0x96,0x9d,0x9b,0xdf,0x32,0xa9,0x38,0x8f,0xbc,0x7e,0x22,0x1a,0x52,0x5f,0x14,0x61,0xeb,0x78,0xf4,0x01,0xe9,0x5c,0x18,0x1c,0xb5,0xe1,0x80,0x06,0x3e,0x8e,0x72,0x33,0xf9,0xaa,0x49,0xec,0x5b,0x7a,0x04,0xf2,0x9b,0x48,0x8a,0x58,0x14,0x4b,0x7e +.byte 0x4d,0x26,0x0b,0xe0,0xf0,0x69,0xa3,0x36,0x75,0x3e,0x73,0xec,0x53,0x20,0x35,0x8e,0xfa,0x40,0xf0,0xcd,0x70,0xe1,0xe4,0x64,0x89,0x14,0x55,0xd7,0x20,0xe8,0xbd,0xc2,0x85,0xa8,0x4d,0x51,0x96,0x27,0x54,0x50,0xc7,0xa1,0x9c,0x35,0x52,0x1f,0x8b,0x6f,0xa2,0x62,0x36,0x94,0x02,0xb1,0x01,0xc6,0x4e,0x53,0x83,0x65,0x98,0x25,0x6d,0x26 +.byte 0x6d,0xef,0x4e,0x7a,0xe0,0x56,0x6a,0x6c,0x23,0xe8,0xa6,0x97,0xc1,0xf2,0xb1,0x2d,0x03,0x29,0xef,0xa0,0x6d,0x86,0x8d,0x5a,0x00,0x83,0x14,0xed,0xd4,0x1e,0x79,0xc4,0xb4,0x42,0xfd,0x53,0xaa,0xab,0xd7,0xa3,0xf9,0x7d,0x15,0x26,0xab,0x81,0xc4,0x7a,0x96,0x14,0x94,0x71,0xe1,0x7f,0xc1,0x67,0x5f,0x5f,0x11,0xb4,0x72,0x03,0xf8,0x9b +.byte 0x2f,0x82,0xa3,0x4e,0xda,0xfd,0x2a,0x31,0xf1,0x74,0x6d,0x96,0x7a,0x9c,0xf9,0x01,0xd9,0x55,0x8e,0x52,0xe4,0xae,0x22,0x14,0x7b,0xc0,0x5a,0xc4,0x31,0x23,0x9a,0x2e,0x9d,0x86,0x86,0xd5,0x66,0xc8,0x8b,0xdb,0x49,0x5f,0xca,0x57,0x51,0x50,0x75,0x3f,0xeb,0xb1,0xe5,0x84,0x42,0x8f,0x0f,0xca,0x86,0xcf,0xb0,0x17,0x06,0x06,0x46,0x8c +.byte 0x4a,0x84,0xde,0x28,0x84,0x24,0x7f,0x33,0x48,0xe8,0x89,0x87,0x1f,0x02,0x07,0x4f,0x36,0xa9,0xdc,0x8a,0x42,0xb6,0xc7,0x9c,0x47,0xd4,0xd4,0x2d,0xc0,0x17,0xb0,0xe6,0x23,0xb7,0xae,0x0d,0x9f,0x38,0x0a,0xdf,0x7f,0x73,0xbf,0x93,0x19,0x05,0x23,0xbf,0xc0,0x53,0x2d,0xcd,0x3e,0x73,0x01,0x78,0xa7,0xdc,0x6c,0x85,0x1d,0x25,0xc5,0x54 +.byte 0x68,0x95,0xc1,0x20,0x65,0xd9,0x01,0x85,0x7d,0xc9,0xba,0x63,0x43,0x7a,0x23,0xbb,0x95,0x3a,0x76,0x2d,0x75,0x1e,0xac,0x66,0x3e,0x20,0x30,0x8d,0x37,0x64,0x3c,0xc7,0x6f,0x36,0xb8,0x34,0x60,0xd2,0xb4,0x54,0x07,0x52,0x6c,0xfa,0x04,0xfe,0x2b,0x71,0x03,0x03,0x97,0xfc,0x4a,0xf9,0x4d,0x44,0x1a,0xf9,0xd7,0x4b,0xe5,0xe1,0xf9,0xb9 +.byte 0x41,0xa0,0x5b,0xa2,0x69,0x48,0xba,0xeb,0xcc,0x4e,0x55,0x4b,0xbd,0x41,0x09,0xa8,0x90,0x5c,0xc6,0xe3,0x20,0x0c,0x8f,0xfc,0x7e,0x0e,0x4f,0x3d,0x47,0x65,0x40,0x1e,0x79,0x9a,0xe0,0x8f,0x8f,0xe9,0xcb,0xaa,0x04,0xb8,0xd9,0x91,0x30,0x2a,0x4c,0x17,0x44,0xc0,0x03,0x4c,0x37,0xd3,0xdb,0x20,0xe5,0x8e,0x70,0x87,0x57,0x4f,0x8a,0xcf +.byte 0xee,0x64,0xbc,0xef,0x0f,0x9e,0xcf,0x95,0x5e,0x11,0x4f,0x7a,0x35,0x53,0x8c,0x85,0x6a,0xff,0x72,0x1b,0x35,0x51,0x89,0xf8,0x94,0x65,0x97,0xec,0xfe,0xbd,0x00,0x29,0x3d,0xe8,0x96,0x23,0xa4,0xe3,0xcf,0x81,0xb2,0x8f,0x73,0x4c,0x05,0xc3,0xcc,0x37,0x22,0x97,0xa0,0xda,0x49,0xb2,0xbd,0x07,0x2b,0x26,0xa0,0x6f,0x6b,0x1f,0xa6,0x15 +.byte 0xe3,0x6e,0x12,0xa4,0x51,0x1b,0x72,0x22,0x08,0xfe,0xf7,0x93,0x1a,0x9f,0x62,0x12,0xd4,0x11,0x1f,0xd1,0x80,0xeb,0xa4,0xb1,0xf4,0x37,0x3b,0x60,0xd8,0x2b,0x53,0xae,0x69,0xf8,0x48,0x38,0xf4,0x20,0x28,0xe1,0xfb,0x6a,0xec,0x6e,0x11,0x2e,0x2c,0x59,0x62,0x23,0x8a,0x82,0xc4,0x33,0x7b,0xdc,0x33,0x99,0x41,0x29,0x4f,0xa1,0x6e,0x3a +.byte 0x48,0x13,0x1c,0x1f,0xa3,0x1f,0xd2,0x02,0x79,0xe1,0xe4,0xb9,0x99,0xa4,0x50,0xea,0x53,0x96,0x4e,0x82,0x7c,0xee,0x65,0x07,0x26,0x87,0xf9,0x9d,0x45,0x17,0x37,0x61,0x7e,0x5f,0xb9,0xd2,0x55,0x3c,0x45,0xf7,0xec,0x33,0x08,0xa3,0x41,0x24,0x8f,0xb2,0x75,0x41,0xb6,0xa2,0x21,0xfe,0x94,0x7e,0x1e,0xe6,0x03,0x6e,0xf4,0xeb,0x23,0x59 +.byte 0x51,0x25,0x99,0x19,0x6d,0xf7,0xe3,0x22,0xd8,0x41,0x0f,0xd5,0xaf,0x0d,0xc6,0x3f,0x8e,0x36,0xee,0x90,0x23,0x67,0x03,0xcb,0xe3,0xaf,0xc4,0xf8,0x22,0x1f,0xd8,0x3e,0x94,0xdf,0x13,0xc9,0x4f,0x17,0x22,0x8c,0x93,0x6b,0x3f,0x60,0x1a,0xbd,0xfa,0x9f,0xe6,0x43,0x45,0xe1,0x0a,0x95,0x21,0x06,0x52,0xbd,0x58,0x56,0x84,0x56,0x36,0xf3 +.byte 0x55,0x58,0x46,0x62,0x6c,0xb3,0xa0,0x29,0x5a,0xfc,0xb4,0x87,0x5f,0x89,0xa5,0xab,0x6d,0x5a,0x44,0xc5,0xc8,0x50,0x83,0xe1,0x41,0xd4,0x97,0x6c,0x08,0xb1,0x43,0x33,0x0d,0x3a,0x8b,0x31,0xa1,0xae,0x77,0x71,0xb7,0x67,0x65,0xd7,0xa7,0xc9,0x6c,0x4a,0x9b,0x80,0xd5,0xbf,0xae,0x0f,0x9b,0xce,0x1a,0xa3,0x26,0xc6,0x19,0xa1,0x8d,0x12 +.byte 0xd9,0x09,0xae,0xac,0x9f,0x4b,0xab,0xaf,0xf6,0xc5,0x9e,0x26,0xe6,0x23,0xcb,0x3e,0x60,0x1e,0x3d,0xa1,0xec,0x59,0xca,0xf1,0x87,0x0e,0xaf,0x47,0x5f,0xab,0x17,0x99,0xbd,0x87,0x1c,0x1d,0x00,0xd6,0xb2,0x59,0x56,0xdd,0x49,0x20,0xb5,0x91,0xf8,0x0c,0xf1,0x80,0xc6,0x37,0x92,0xd7,0x2c,0x02,0x0d,0x47,0x1b,0x1b,0x6b,0x3f,0x60,0xd0 +.byte 0x21,0x9b,0x49,0x47,0x3c,0xaa,0x83,0x44,0x1b,0x92,0x8e,0xec,0x63,0x40,0xd6,0x9a,0x48,0x7c,0x5e,0x97,0xe4,0xf0,0x84,0x36,0x30,0x11,0x0b,0x7c,0x79,0x3b,0xff,0xdf,0x77,0xf6,0xc9,0xdb,0x49,0xdd,0x2a,0xe7,0xca,0x9a,0x5b,0xef,0xd4,0x84,0xe2,0x44,0x8b,0xef,0x4e,0x0d,0x13,0xd6,0xbb,0xba,0x29,0x02,0xae,0xfc,0x55,0x24,0xfa,0x4b +.byte 0x7d,0x71,0xc9,0xde,0x71,0x36,0xbc,0xac,0x31,0x5c,0xf8,0x20,0xdd,0xb8,0xae,0x03,0xd3,0xb0,0xdc,0x27,0x7f,0xc5,0xff,0xda,0x8a,0x36,0x2d,0x8f,0xae,0xbd,0xf8,0x92,0x28,0x8e,0x0c,0xc3,0xaf,0x4e,0x33,0xf0,0x71,0xdb,0xad,0x4d,0xc1,0xef,0x52,0x1c,0x84,0xdc,0x0d,0xf3,0xab,0xb9,0x0b,0xe0,0x18,0xa5,0x06,0xdc,0x78,0x41,0x73,0x35 +.byte 0x95,0x37,0x84,0xba,0xc1,0x4e,0x0a,0xe4,0x4d,0x05,0xfe,0x9d,0x74,0x68,0x4a,0x35,0xf0,0x15,0xaa,0x7b,0xfe,0x08,0x47,0xb2,0x84,0x65,0x1d,0x0d,0x9f,0xe7,0xe0,0x04,0xf9,0x1c,0xac,0x66,0xb3,0x75,0x96,0x8f,0x25,0xb6,0x29,0x53,0x52,0x50,0x7a,0x50,0xd1,0x89,0xc7,0x05,0xfb,0x3a,0xb0,0xfa,0x6b,0x96,0x9d,0xfc,0xb0,0xcd,0x68,0x21 +.byte 0x61,0xf6,0x65,0x64,0xa7,0xc6,0x56,0xbd,0xf0,0x9b,0x4a,0x9a,0xe2,0x8c,0xd8,0x88,0x70,0x82,0x0c,0x87,0x51,0x77,0x23,0xd8,0xd8,0xf8,0x4a,0xfe,0xf4,0x6d,0x3f,0x2a,0x36,0x0c,0x67,0x85,0x43,0x13,0x83,0xd5,0xe9,0x32,0xff,0x8c,0xec,0xd4,0x7f,0xd2,0x32,0x4d,0x4e,0xec,0x76,0x55,0xf9,0x0d,0xb7,0x57,0x6c,0xc4,0xd6,0x22,0xd3,0x6e +.byte 0x71,0x23,0x68,0x45,0x03,0x37,0x27,0x3d,0x56,0x89,0xbb,0x7c,0xf1,0xa8,0x09,0xd6,0xb2,0xc5,0xe6,0xf6,0x72,0x77,0x3e,0xb0,0x8a,0x3d,0x17,0xbd,0xd5,0x0d,0xdb,0x62,0xa7,0x07,0x66,0x35,0x19,0x12,0xff,0xcf,0xdd,0xb3,0x09,0xa3,0x58,0x5b,0x0d,0x87,0x76,0x33,0x28,0x98,0x91,0x48,0xac,0xa1,0x22,0x9f,0xda,0x36,0x03,0x8a,0xc1,0x5e +.byte 0x6c,0x2e,0x42,0x8e,0x1a,0x7d,0x75,0x69,0xb2,0xcf,0xb0,0x14,0x80,0xa8,0x91,0xc2,0xbc,0x24,0x8f,0x25,0x9a,0x9e,0xa3,0x4d,0x46,0x55,0x53,0x05,0x0c,0xf8,0xdb,0xe0,0xee,0xe4,0x32,0xff,0x39,0x74,0x9a,0xa8,0xf7,0xa4,0x6e,0x5b,0x9a,0x89,0x33,0x40,0xf4,0xce,0x54,0x4a,0x18,0xdb,0x11,0xe4,0x83,0x69,0x52,0xef,0x12,0xc6,0x13,0x6e +.byte 0x2a,0x14,0xb9,0x8e,0x38,0x8d,0x6b,0xef,0x02,0xc8,0x66,0xf0,0x78,0xaa,0xa6,0x04,0xa3,0xa5,0x1d,0xdb,0xac,0x02,0x23,0x4c,0x2a,0xa5,0xbf,0x66,0xa4,0x47,0xa9,0x8e,0x50,0xd2,0xf8,0xf5,0x0d,0x0f,0xc9,0x07,0xd8,0x1a,0x94,0x84,0xcf,0xb3,0x56,0x53,0x5f,0x83,0x1d,0x30,0xb6,0x94,0x36,0xf4,0x16,0x72,0x8c,0x6d,0x49,0xe4,0x6d,0x93 +.byte 0xb1,0xa1,0x97,0x70,0x75,0x47,0x3a,0x7e,0xa6,0x39,0x1d,0xf5,0xcc,0x37,0xaa,0x90,0x53,0xe1,0x9b,0xcb,0x9a,0x97,0x7d,0x18,0x4a,0x3c,0x1f,0x05,0xf4,0xe3,0x6f,0x7a,0x19,0x84,0xbc,0x68,0xa4,0x6e,0x5a,0xb5,0x7a,0x51,0xda,0xf5,0x75,0x1e,0xfe,0xb0,0x73,0x43,0x39,0x98,0xb7,0x1e,0x17,0x36,0x35,0x15,0x64,0x90,0xb6,0x83,0x43,0x8f +.byte 0xcd,0xb6,0x8c,0xc4,0xe4,0xee,0x0e,0x1c,0xbd,0x3a,0xe6,0x6e,0x44,0x73,0x88,0x30,0xa0,0xf0,0x97,0xf5,0x5e,0x12,0xea,0xd9,0xd7,0xb5,0xc5,0x1d,0xc7,0xc8,0x55,0xbb,0x2c,0x64,0x43,0x50,0x15,0x71,0x02,0xd3,0xf9,0xb4,0xe7,0x2f,0x0f,0x98,0x9e,0x87,0x40,0x2a,0x61,0x06,0x44,0xc2,0x47,0xaf,0x44,0x4f,0xdd,0xa3,0xb0,0xb2,0x8d,0x8c +.byte 0x83,0x96,0xd3,0x2a,0x38,0xdf,0x87,0x5d,0x1c,0x64,0xc8,0x4f,0x3c,0x41,0xc7,0xf8,0x64,0x58,0xa6,0x9b,0xcb,0xcd,0x77,0xdb,0x38,0xe7,0x30,0xb6,0x91,0x88,0xd8,0x9d,0x29,0x71,0x12,0x9e,0xdf,0x20,0xd9,0x14,0xa3,0xa0,0xbd,0x0a,0x99,0x67,0x0a,0xe1,0xe9,0xba,0xd0,0x1b,0xba,0xc8,0x8d,0x76,0x10,0xe8,0x30,0xa1,0x93,0xf4,0x95,0x6a +.byte 0x12,0xd5,0x95,0x31,0x7f,0xdb,0x33,0xfc,0xbf,0x7a,0xbe,0xe4,0xfa,0x50,0x1b,0x24,0x75,0x9b,0xf8,0x81,0x34,0xc8,0xfb,0xda,0x3c,0x6f,0x3b,0x9a,0xb2,0x6f,0x94,0x0c,0xd9,0xc3,0x05,0xd6,0x96,0x10,0x27,0xdb,0xd6,0x88,0x72,0xe4,0x8f,0xfc,0xd3,0x52,0xf8,0x63,0xb2,0xce,0xf1,0x2a,0xbc,0x1c,0x23,0x9d,0xfb,0x27,0xdd,0x8d,0xe4,0xcc +.byte 0x63,0xcf,0xad,0xe6,0xe9,0x4f,0xb8,0x8a,0x20,0x47,0x75,0x73,0x3f,0x27,0x07,0x5d,0x8c,0x8c,0x6e,0x7a,0x91,0xe2,0xf6,0xd5,0x70,0xd8,0x00,0xe5,0x0f,0xde,0x78,0xd8,0xb4,0xd3,0x18,0x5a,0x24,0x43,0x91,0x0c,0xbe,0x8b,0x1b,0x88,0x48,0x7e,0x94,0x05,0xd0,0xec,0xd2,0x71,0x26,0xc7,0x70,0xeb,0x8a,0x83,0x01,0x52,0xdb,0xe5,0x76,0x31 +.byte 0x19,0x14,0x13,0x90,0x5b,0x5a,0x94,0x89,0xe2,0x4e,0x2d,0x17,0xf6,0xbc,0x67,0xee,0x51,0xd4,0x00,0x83,0xe5,0x18,0xa5,0x54,0x6c,0xd2,0x7a,0x1f,0xdb,0x6f,0xed,0x7f,0x07,0xbb,0x9f,0x3a,0xc2,0x8c,0x04,0xf9,0x9a,0x55,0xe3,0x70,0xf3,0x36,0xfd,0x44,0x05,0xd9,0xf3,0xe1,0x87,0x2c,0x29,0xec,0x30,0x8b,0xb7,0xde,0x27,0xa4,0xcd,0xdf +.byte 0x64,0x0b,0x62,0xdf,0x34,0xa0,0xf5,0xa1,0x69,0xc9,0x0b,0x00,0x81,0xf4,0x03,0x5e,0xef,0xb8,0x26,0x49,0x71,0x5e,0xcd,0x76,0xa2,0x38,0x25,0x1f,0x92,0xc3,0xbf,0xdb,0xb3,0x29,0x37,0x06,0xc5,0xc2,0x3b,0xd8,0xbd,0x55,0xf2,0x7f,0xd5,0xd5,0x34,0x32,0xf1,0xa0,0x92,0x9b,0x1c,0xee,0x6f,0x48,0x40,0x6b,0xd1,0x45,0x09,0x3f,0xaf,0xdc +.byte 0xe1,0xac,0x75,0x9a,0x33,0xf7,0x50,0x4f,0x2c,0x3c,0x30,0x69,0x69,0x84,0xcb,0xe9,0xca,0xdf,0x8d,0x02,0x5d,0x30,0x71,0x99,0x7b,0xd5,0xb2,0x55,0xdd,0x9c,0x2f,0xae,0x11,0x41,0x01,0x6b,0xf7,0x95,0xe3,0xda,0xe3,0xcc,0xa4,0x17,0xd0,0x50,0xf9,0x4c,0x31,0x2b,0x4e,0xf7,0x49,0xbb,0x75,0x8f,0x28,0x19,0x9f,0x89,0x7b,0x78,0x80,0x41 +.byte 0x50,0x5a,0x5c,0x1e,0x82,0x93,0x9f,0x4f,0x61,0x96,0x29,0x0c,0x25,0xb3,0xe6,0xff,0x86,0x90,0x78,0x09,0x04,0xf9,0x2a,0x3d,0xa1,0xd5,0x68,0xa8,0x0d,0xd9,0x41,0x01,0xdc,0x41,0x01,0xff,0x20,0xc0,0x63,0x0b,0x4d,0xd5,0x80,0x78,0x82,0x05,0x51,0x62,0x09,0xf9,0x11,0xbd,0xde,0xc0,0x7d,0x3f,0xf2,0x30,0xfb,0x41,0x68,0x39,0xb0,0xc2 +.byte 0x2e,0x33,0x4e,0xa7,0x85,0x01,0x6b,0xd1,0xf9,0x78,0xef,0xe9,0x7c,0x0e,0xaf,0x13,0x1a,0xf5,0x97,0xde,0xf0,0xbb,0x67,0xf9,0x9b,0xab,0xee,0x86,0x73,0x9b,0x23,0x6c,0x56,0x0d,0xa0,0xda,0x4c,0xff,0x2b,0xc5,0x92,0xdb,0xee,0xbd,0xba,0x3a,0x54,0x21,0xc0,0x5c,0xfe,0x21,0xf1,0xbd,0xac,0xaf,0xa3,0x7a,0x52,0x62,0x15,0x8b,0x8f,0xb5 +.byte 0x82,0xc6,0x1a,0xfb,0x22,0xbc,0xa2,0x05,0x42,0xfe,0xb4,0x12,0x6b,0xad,0xa9,0x76,0xb7,0x6b,0x1c,0xd8,0x34,0x5c,0x7d,0xd5,0xa9,0x0d,0x91,0xf6,0xc1,0x47,0x69,0xbc,0x43,0x8f,0xb7,0xfc,0x84,0x2e,0xa0,0x8e,0x3f,0x52,0x3b,0xbd,0x1f,0x28,0x6b,0xc8,0x13,0x37,0xd6,0x44,0xe9,0x8d,0x08,0x92,0x96,0xe5,0x2c,0x57,0x34,0x59,0x21,0x04 +.byte 0xa8,0xaa,0x56,0x25,0xa4,0xc8,0xae,0x68,0x17,0x9e,0xa4,0xf4,0x42,0x64,0x57,0x4b,0x54,0x85,0x8a,0xd1,0x09,0x09,0x25,0x18,0x05,0xb0,0x09,0x9d,0xd9,0x75,0x21,0xd3,0x75,0x31,0xf8,0x35,0x46,0xc8,0xd4,0x47,0x9d,0x87,0xeb,0x40,0x95,0x19,0x24,0x7c,0x6e,0xe9,0xd5,0x14,0xaa,0xc3,0xbe,0x22,0x18,0xc1,0xa0,0x5f,0x34,0x98,0xc2,0x4d +.byte 0x3f,0xa6,0x09,0x57,0x1b,0x75,0xc6,0x89,0xee,0xf0,0xbd,0xbc,0x1a,0xd3,0xea,0x6e,0x82,0x06,0x90,0x4f,0xbb,0x61,0xac,0xbb,0x3e,0x8c,0x94,0xea,0x69,0x58,0x26,0x2e,0x17,0x78,0xad,0x14,0xa4,0x79,0x14,0xbd,0xc1,0x78,0xf9,0xbb,0x11,0x7e,0x8d,0xbf,0x3e,0xc8,0xc5,0x69,0xd7,0x5a,0x4c,0x4b,0x86,0x25,0x4c,0xe9,0x3a,0xc2,0xd9,0xf8 +.byte 0xbf,0x5e,0x46,0x4f,0xca,0xba,0x25,0x58,0x73,0x82,0x02,0x8a,0x41,0x9e,0x2d,0xa9,0x08,0xb4,0x60,0x2a,0x11,0x2c,0x2f,0x3d,0x5e,0x68,0xd8,0xa9,0x2e,0x1c,0xfa,0xdc,0xda,0xfb,0xfb,0xf3,0xb2,0x66,0xd3,0x57,0xe6,0x09,0xeb,0xe5,0xf4,0xed,0x2d,0xb7,0x3a,0xce,0x69,0x2d,0xb4,0x79,0x1a,0x99,0x9d,0xc8,0x99,0x9f,0x9b,0x78,0xd4,0x8a +.byte 0x73,0xd5,0x89,0x9f,0xda,0xdf,0xd0,0xca,0x6b,0x63,0x5a,0x1e,0xe0,0x2f,0x01,0xa4,0xd0,0x62,0xc0,0x5f,0x4e,0xd9,0xd3,0x47,0xe4,0x68,0x73,0x8c,0x87,0x50,0x91,0xec,0x8e,0x0b,0xa7,0xf0,0x4c,0x32,0x19,0xaa,0x00,0xbd,0xe4,0x20,0xab,0x5c,0x00,0xdb,0x18,0xc0,0xff,0xc1,0xc0,0x8f,0xa2,0x8c,0x47,0x91,0x86,0xde,0xa9,0x09,0xb5,0x86 +.byte 0xcc,0x1d,0x7f,0x4b,0x7d,0x16,0xf6,0x21,0xd0,0xf8,0xaa,0x16,0x20,0xa9,0xac,0x3e,0xef,0x56,0xee,0x0e,0x1d,0xd6,0x44,0x7d,0xa9,0x84,0x41,0x8d,0x69,0x69,0x92,0x74,0x87,0x3b,0x8a,0xbf,0x40,0x29,0x45,0xf9,0xa8,0x52,0x8c,0x99,0x95,0xe7,0x6a,0xcd,0x3f,0x74,0x2d,0xde,0x82,0x47,0x41,0xa6,0xd9,0x5a,0x30,0x6c,0x20,0x98,0x3f,0xfb +.byte 0x66,0x08,0x73,0x68,0xe1,0xcd,0xfd,0x3c,0x4f,0x33,0x6b,0x42,0xa4,0xab,0x78,0x22,0xb5,0xd9,0x6f,0x99,0xcb,0x85,0x6a,0x14,0xb9,0xd3,0x0f,0xfb,0xd7,0x07,0x7b,0xbe,0x6a,0xd9,0xba,0xde,0x98,0xac,0xd8,0xe5,0x40,0xcd,0x59,0x7f,0x88,0x3c,0x4e,0xfa,0xfe,0xbe,0x48,0x21,0xb5,0x40,0xd5,0xc8,0x1e,0x8a,0x56,0xd9,0xec,0x25,0xad,0x5e +.byte 0x31,0xf3,0xf2,0x3d,0x0b,0x56,0xb5,0x20,0x08,0xd3,0x02,0x81,0x93,0x29,0x3d,0xbd,0x0a,0x9c,0x26,0x74,0xdb,0x6b,0x7e,0xd1,0x4a,0x1a,0x1c,0x47,0x49,0x34,0xba,0x08,0x7a,0x6a,0xb3,0xd6,0x3b,0xd0,0x28,0x50,0xa1,0xd8,0x17,0x85,0x61,0xab,0x24,0x22,0xda,0xc8,0xb4,0x1b,0x07,0x2e,0x67,0x77,0x84,0xdc,0x6f,0xfd,0x51,0xa5,0xe8,0x34 +.byte 0x63,0xbd,0xae,0xae,0xc7,0x84,0x1d,0x60,0xc8,0x8f,0xde,0x22,0xfd,0x85,0xb4,0x12,0xb4,0x04,0x5b,0xe7,0xb5,0x58,0xf8,0x56,0x66,0xa3,0xb7,0x1e,0x54,0xd0,0xdb,0x12,0xaa,0x9c,0x89,0x5b,0xfa,0xf4,0xe7,0xe2,0xf4,0x9c,0x08,0xa8,0xbe,0x6b,0xe3,0xce,0x6a,0x88,0xb5,0x74,0xb9,0x49,0xaa,0x7b,0xcd,0xbc,0x17,0x81,0x61,0xe2,0x28,0x6f +.byte 0x4b,0xe8,0xa4,0x55,0xc5,0x1e,0x69,0x21,0x8f,0xfd,0xa8,0xd0,0xb9,0x6f,0x1b,0xfe,0x8c,0x5e,0xf9,0x7d,0xd9,0xc2,0xbe,0x0f,0x6f,0xbd,0xa7,0x94,0x10,0x4e,0xe0,0x5a,0xbb,0xa3,0x40,0x9a,0x5a,0xad,0x10,0x97,0x92,0x3b,0xbd,0xa7,0x75,0x77,0xc6,0xa6,0xde,0x42,0x00,0x3b,0xf7,0xe4,0xf4,0xd7,0xdd,0xaa,0x31,0x1e,0x64,0xae,0x17,0x0a +.byte 0x25,0xa0,0x94,0x5f,0x3c,0xbc,0x3d,0x00,0x00,0xd3,0xba,0x7b,0x98,0x81,0xe1,0xdf,0xba,0x60,0x08,0x2a,0xe5,0x66,0x08,0x3e,0xfa,0x81,0x0a,0x89,0x4e,0xe5,0x3b,0xc3,0xdf,0x21,0x9b,0x54,0xa3,0xb3,0xc3,0xc1,0xce,0xb4,0xaa,0x06,0xee,0x2e,0x34,0x55,0xcc,0x8b,0x0f,0xcd,0x1d,0x1b,0xd9,0x9e,0x59,0xf0,0x93,0xc9,0xba,0x35,0x5c,0x99 +.byte 0xf6,0x86,0x9e,0xe9,0xf8,0x84,0x80,0x05,0x76,0x6f,0x8b,0x38,0xb6,0xe0,0xdf,0x0c,0xb3,0xc7,0x6e,0x62,0x53,0xe4,0x69,0x0a,0xc1,0xcf,0x5b,0x84,0x75,0x78,0x56,0x35,0xa5,0x26,0xc6,0xae,0x76,0x2e,0xc8,0x29,0x8d,0x16,0xd1,0x4f,0x27,0x36,0x22,0x41,0x31,0xfb,0xbe,0xd0,0xf9,0x0a,0x06,0xbf,0x59,0x6e,0x06,0x20,0x0d,0x52,0x66,0x63 +.byte 0x38,0x2a,0xb6,0x15,0x0f,0x51,0x14,0x0b,0xd1,0x63,0x40,0x2a,0xfe,0x88,0x51,0x53,0x5d,0x82,0x4e,0x1b,0x91,0x30,0x7a,0x09,0xec,0xb6,0x53,0x10,0x87,0xba,0x34,0x1f,0x8a,0xf7,0x85,0x31,0x77,0x76,0xba,0x55,0x07,0x6b,0x80,0x5d,0x14,0x23,0x50,0xef,0x07,0x91,0xc5,0x71,0x3a,0x55,0x44,0x9d,0xbf,0xe6,0xab,0xde,0x7c,0xdd,0xe0,0xcb +.byte 0xcc,0xc1,0x78,0xb4,0x8c,0xd1,0x35,0x73,0x80,0x9c,0x44,0xff,0xf8,0x8a,0xaa,0x9a,0x94,0xcf,0xc9,0x51,0xfc,0xa5,0x3d,0x86,0xd6,0x67,0x71,0x1b,0xdb,0x83,0xb2,0x67,0xb0,0x17,0xce,0x13,0x1b,0x7a,0x84,0xc8,0xaf,0x69,0x7e,0xf0,0xab,0xc5,0x8c,0x37,0x12,0x43,0x33,0x5f,0xaa,0xde,0xcf,0x4c,0x73,0x7f,0x6b,0x80,0x18,0x27,0x72,0x62 +.byte 0xe8,0x3d,0x1c,0x94,0x91,0xfa,0x33,0xef,0x13,0x94,0x7f,0xb6,0x53,0xe3,0xd7,0x73,0x05,0x3e,0xe8,0x45,0xde,0x1e,0x1d,0xa4,0x41,0x11,0x0a,0x7f,0x62,0x6e,0x9f,0x9f,0xec,0xe9,0x87,0xe0,0x5d,0xbb,0xbc,0x0b,0x37,0xa2,0xf3,0x68,0x8a,0x24,0xec,0x98,0xe5,0x5d,0xbf,0xa1,0x60,0x2b,0xc2,0x74,0x4b,0x8b,0x85,0x44,0x28,0x02,0xd5,0xb9 +.byte 0xae,0x00,0x37,0x1e,0x0b,0x46,0xe6,0x40,0xf1,0xdc,0xa0,0xfc,0xae,0x04,0x7f,0xb6,0x46,0xa3,0x22,0x79,0x92,0xda,0x89,0xa0,0x38,0xf0,0xa2,0x4a,0x76,0x79,0x0c,0x46,0x4d,0xa9,0xe6,0x75,0xff,0x01,0xb3,0xe4,0x13,0xc2,0x53,0xe9,0x6d,0x1f,0xdd,0x88,0xcf,0x10,0xf5,0x16,0xef,0x05,0x59,0x51,0x15,0x49,0x17,0xda,0xff,0x0e,0xb3,0xb9 +.byte 0xae,0x79,0xc6,0xb1,0x94,0x08,0x09,0x30,0x9f,0x2a,0xfd,0x55,0xc0,0x41,0x8c,0xe5,0x0e,0xee,0xc2,0xa0,0x05,0x36,0x66,0x8d,0x9a,0xcc,0xc9,0xeb,0x1d,0x34,0xc0,0x1a,0x29,0xc2,0xcd,0xb7,0x25,0xd3,0x83,0xf8,0x1e,0xa0,0xf4,0x50,0xd4,0x08,0x0d,0xcb,0x6a,0x2f,0xa5,0x8b,0x30,0x94,0x89,0xea,0x94,0x6c,0x00,0x7e,0x7f,0xb5,0x4d,0x61 +.byte 0xa7,0x9d,0x94,0xcc,0x14,0x8f,0x75,0x1f,0xef,0x2b,0xbe,0x37,0xdd,0x19,0x41,0x2e,0x90,0x36,0x27,0xa5,0xa9,0x6c,0x75,0x8c,0x2d,0xe3,0x97,0x74,0x91,0xf3,0xb8,0xcb,0xcb,0x74,0xba,0xf0,0x57,0x70,0x89,0xee,0x4d,0xc5,0xfe,0x3e,0x60,0xe3,0x5b,0x28,0x36,0x91,0x6f,0xcd,0x6c,0x33,0xb6,0x44,0x0c,0xce,0x81,0xe4,0xdb,0x84,0xbe,0x4e +.byte 0xef,0xb8,0x75,0xf7,0x8b,0xb0,0xb7,0x0d,0x00,0x13,0x54,0x39,0xfd,0x9e,0x86,0x5c,0x59,0xd0,0x84,0x0f,0x97,0xc0,0xf8,0xfa,0x4a,0xcf,0x57,0xb8,0x24,0xf0,0xa8,0x40,0x70,0x9d,0xc4,0xe5,0xc7,0xc9,0xcb,0xb6,0xf4,0x0b,0xb5,0xcc,0xe0,0x90,0x2b,0x42,0x81,0xd6,0x59,0x2e,0x11,0xbd,0xe8,0xf5,0xef,0xa8,0x2b,0xdb,0x93,0x62,0x1e,0xef +.byte 0x3a,0x5f,0xf5,0x47,0x15,0x1f,0x03,0x6f,0x40,0x85,0xff,0x50,0x89,0x2e,0x72,0x8f,0x5c,0x0d,0x61,0x84,0x8d,0x8a,0x8f,0x2a,0x47,0x7c,0x97,0xfe,0x8a,0x97,0x6c,0xd5,0x1c,0x97,0xfa,0x59,0xbe,0x2c,0x0f,0x4d,0x85,0x7f,0x18,0xe3,0xea,0xe8,0xde,0x5a,0xf3,0x67,0xe1,0x71,0x7e,0x81,0xa3,0x74,0x0d,0xf4,0x3d,0x5a,0xec,0xc1,0xcf,0x6f +.byte 0x08,0x0f,0x5a,0x63,0x72,0x0b,0x46,0x5d,0x38,0x80,0xea,0xb7,0x12,0x5d,0xce,0x37,0x26,0xaa,0xd3,0x0d,0x93,0x4a,0x34,0x20,0xd5,0x51,0x54,0x1c,0x5e,0x53,0xa9,0xed,0x26,0x3c,0x29,0xaf,0xbe,0x73,0x34,0xa5,0xc3,0xbf,0x8c,0x8a,0xc3,0x30,0x89,0xaf,0xa9,0x2d,0x28,0x35,0x7d,0x6b,0x84,0x23,0x22,0xee,0x8c,0x82,0x04,0xbd,0x26,0x52 +.byte 0x26,0x73,0x76,0x05,0x35,0x0c,0xec,0xf7,0x54,0xb2,0x17,0x68,0xe9,0x68,0x67,0xbb,0x0d,0x98,0x19,0x32,0xa7,0xdb,0xf9,0xef,0x42,0xe7,0xc2,0xe2,0x39,0x9c,0xae,0xbb,0xdb,0x91,0x28,0x82,0x88,0x23,0x61,0x50,0x6d,0x61,0x39,0x73,0xf8,0x6a,0xee,0xf3,0xa9,0x2c,0x78,0x0d,0x5a,0xed,0xb1,0x08,0x8f,0x24,0xe5,0xb7,0xa4,0xdf,0x65,0x9a +.byte 0x72,0x3a,0x39,0x9c,0xf4,0x43,0xdc,0x8a,0xa3,0x3d,0xb5,0x1e,0x7b,0xe5,0x83,0x11,0x07,0xab,0x62,0x7e,0xac,0xab,0x52,0x94,0x0b,0xaf,0xdf,0x54,0x18,0xf1,0xc0,0x9f,0x1c,0x33,0x02,0xd9,0x62,0xc3,0xcc,0xaf,0x32,0x09,0x35,0x77,0xad,0x72,0xd6,0xb5,0x2d,0xaf,0xf9,0x39,0xfb,0x95,0xbb,0xf9,0x84,0x80,0x84,0xc8,0xc6,0x6d,0xb5,0x79 +.byte 0x25,0xf4,0x6c,0x71,0x26,0xda,0x74,0x86,0xad,0x52,0x47,0x8b,0x46,0x32,0xf6,0x2c,0x89,0xdb,0x93,0x1f,0x46,0x83,0x91,0x19,0xd2,0x0c,0x29,0x97,0x5f,0xa9,0x2b,0x87,0x0c,0x87,0x89,0xe6,0x63,0xa1,0x36,0xfb,0xfa,0xb4,0xb8,0x8e,0x5f,0xe9,0x8f,0x62,0xd2,0x81,0x1d,0x7b,0xc6,0x14,0x37,0x56,0x73,0x64,0x3d,0x0a,0xfd,0xe5,0x94,0x01 +.byte 0x09,0xc8,0x0d,0xa8,0x92,0xda,0x43,0xc4,0x41,0xca,0x3c,0x27,0x2c,0xbb,0xc4,0xb2,0x77,0x13,0xa6,0xb0,0x0e,0x97,0x6a,0xb2,0x83,0xe5,0x5e,0xa3,0xc0,0xe8,0x5e,0x0b,0xe6,0x00,0x04,0x6c,0x1b,0xac,0x84,0xab,0xd3,0xac,0x5f,0x39,0xc2,0xf8,0xfd,0x66,0xf7,0x97,0xd7,0xb9,0x6b,0xd8,0x2a,0x49,0xf7,0x67,0xd8,0xd5,0xa4,0x89,0x57,0xa6 +.byte 0x8f,0x7c,0xcf,0xaf,0xfe,0x3c,0x92,0xc8,0x23,0x2c,0x26,0x83,0x86,0x16,0x97,0x34,0x71,0x3e,0x82,0x2b,0xc7,0x75,0x5a,0x59,0xb3,0x44,0xdd,0x4e,0xd4,0x6d,0x1b,0x9f,0x3c,0x35,0xc4,0xe4,0xf2,0x95,0xb6,0x90,0x95,0xa7,0xc4,0x03,0x10,0x7d,0x3d,0xeb,0x74,0x29,0xaa,0x0c,0xd3,0x27,0xcd,0x3a,0x85,0x3c,0x88,0xd5,0x9a,0x46,0x84,0x8e +.byte 0x36,0xde,0xe3,0x6a,0x27,0xbf,0xc3,0xd0,0x3e,0xa3,0x0e,0x62,0x1f,0xdf,0x4c,0x02,0xa7,0x11,0x91,0xb0,0x6b,0x50,0xc1,0xe0,0x18,0x5a,0xc0,0x10,0xc7,0x1c,0xb6,0x36,0xac,0xe7,0x7d,0xad,0x34,0x63,0x4f,0x17,0xcc,0x41,0x30,0xec,0xd7,0x14,0xb9,0xfe,0x07,0x5c,0x3d,0xbe,0x08,0x77,0x5b,0xdf,0xa3,0x20,0x56,0x55,0xa2,0x8a,0xe7,0x0d +.byte 0xf6,0xfc,0x91,0x37,0xb8,0x92,0x6c,0xd9,0x5c,0xb0,0xc2,0xf7,0xc0,0x38,0xfa,0x54,0xc6,0xa1,0xd3,0x4d,0xae,0x49,0x0d,0xd1,0xc0,0xef,0xbe,0x27,0xce,0x23,0x8e,0xf2,0x9b,0x68,0x02,0x67,0x8f,0x53,0x9d,0xf6,0x23,0x57,0x85,0xdd,0x8d,0xd7,0xcb,0x47,0xf1,0xd8,0x17,0xd8,0x46,0x72,0x28,0x4b,0xac,0x94,0xd3,0x5d,0x53,0x4f,0x06,0x19 +.byte 0xc6,0x0e,0x0b,0x9f,0x58,0xc6,0x3f,0xea,0x4e,0x83,0x5e,0xd3,0xcc,0x44,0x55,0xa3,0xc7,0x24,0x19,0xea,0x1b,0x18,0xc1,0x18,0x5f,0x21,0x67,0x73,0x32,0x4e,0x31,0x69,0x05,0x40,0x79,0x7c,0x05,0x13,0xdd,0x50,0xea,0xfa,0xc2,0x26,0xe2,0x33,0xff,0x34,0x0d,0xda,0x77,0x27,0xe0,0xe7,0xa6,0x7b,0x8e,0xcd,0xdb,0x92,0x48,0x3a,0x2d,0x52 +.byte 0xf5,0x59,0xca,0xc7,0x47,0xda,0xb7,0xc7,0x8c,0x37,0x5e,0x29,0x30,0xf5,0x57,0x74,0x8b,0x10,0xcb,0x20,0x31,0x4b,0x12,0xe3,0x84,0xd2,0xb2,0xc3,0xd0,0xe3,0x94,0x18,0xa2,0xdc,0x8f,0x4d,0xc3,0x0a,0x43,0x07,0x2c,0x6b,0x41,0x64,0xc0,0x35,0x8f,0x37,0x9b,0xd7,0x78,0xab,0xd0,0xdc,0x1f,0x77,0x55,0xab,0x71,0xc8,0x99,0x98,0x00,0x29 +.byte 0x1c,0xab,0x3c,0x5f,0x82,0x96,0xc2,0xc8,0x9b,0xd4,0x68,0x3f,0x3d,0xe6,0x5a,0x4c,0x1c,0x7b,0x51,0xa3,0x79,0xe8,0x0e,0x8a,0x78,0xdc,0x98,0x63,0x80,0x74,0x32,0x9d,0x7c,0x3a,0x79,0x54,0xa7,0x4c,0xa4,0x4e,0xfc,0xa5,0x8a,0xa4,0x19,0xce,0x84,0xbb,0x8a,0xb9,0x93,0x4a,0x2d,0x82,0x5d,0x1d,0xf8,0x2f,0x85,0xb3,0x90,0x32,0x61,0x6d +.byte 0x13,0x33,0xac,0xbc,0x5d,0x3a,0x54,0x45,0x04,0x50,0x30,0x30,0xc7,0x58,0xbe,0xed,0xdd,0xa1,0xae,0x6d,0xe5,0xde,0xed,0x63,0x9f,0xd4,0x2b,0x8d,0x1f,0x69,0xde,0xda,0x55,0x3f,0x3b,0xe7,0xc8,0x73,0xc0,0x68,0x18,0x6a,0xb3,0xfb,0xce,0xaf,0x46,0x0a,0xcc,0x81,0xa8,0x96,0x6d,0xb6,0xa4,0x74,0xf3,0x8c,0x95,0x2d,0xa1,0xfe,0x09,0xb8 +.byte 0xdb,0x3c,0xcd,0xdc,0x5b,0x0e,0x2d,0xff,0x89,0x8a,0xfd,0x7a,0xe9,0x69,0x0b,0xdd,0x4e,0x9b,0x94,0x64,0xe4,0xb6,0x5d,0x69,0xef,0x9c,0xf6,0xe6,0x44,0x73,0xd5,0x86,0x47,0x63,0x77,0x3e,0x74,0xaa,0xf3,0x6b,0x1f,0x37,0xbf,0xef,0xa2,0xff,0x86,0x61,0x78,0xc4,0xb5,0xbd,0x5a,0x43,0x49,0x80,0x16,0xf2,0x4c,0xec,0x1e,0x07,0x0f,0x41 +.byte 0x60,0x6f,0x3a,0xd2,0xab,0x85,0xc0,0x5c,0xfc,0x9f,0x48,0xad,0x5e,0xe0,0x7d,0x66,0x8e,0x46,0xf1,0xc3,0xb0,0xbc,0x5e,0x3b,0x10,0x7c,0xfc,0xa3,0x27,0xbd,0x8f,0xae,0xd9,0x61,0x39,0xbf,0xca,0x27,0xbb,0xe7,0xda,0x59,0xa8,0x63,0x38,0x16,0xd9,0xb5,0xa6,0xd9,0x1c,0x2b,0xa1,0x42,0xec,0x50,0xd7,0x63,0x09,0x22,0xe0,0x0c,0xb8,0xec +.byte 0x12,0x9b,0xdb,0x8a,0xd3,0x02,0xcf,0x32,0xa9,0x88,0xa4,0x31,0xc8,0xa9,0xf4,0x03,0xf2,0x9d,0xe1,0x41,0xf0,0x0f,0x23,0x65,0xa8,0x99,0x55,0x87,0xf2,0x17,0x66,0xf0,0x94,0xe8,0xe9,0xb6,0xfd,0x10,0xb9,0x55,0xf4,0xda,0x06,0x7a,0xbe,0xe2,0xd3,0xfa,0xb8,0xf7,0x85,0xdf,0xee,0x39,0xdc,0x0f,0xda,0x87,0xf5,0x66,0xd8,0x1b,0x5c,0x0c +.byte 0x13,0xe8,0xa2,0xcd,0xdf,0x47,0x33,0xd7,0xf4,0x5c,0x79,0xc7,0xf4,0x68,0xe4,0x2d,0xa1,0xde,0x5c,0x06,0x1c,0x85,0xf1,0x2a,0xf9,0x73,0x44,0xbc,0xd3,0x57,0x4f,0x0f,0xcd,0xcc,0x40,0xeb,0x9d,0x35,0x8e,0xdf,0x1d,0x4a,0x61,0xd0,0x66,0xb5,0x16,0xce,0x45,0xc0,0xbf,0x01,0xe3,0xb2,0x51,0xba,0x53,0x18,0x2a,0xff,0x19,0xea,0x41,0xa2 +.byte 0xac,0x0b,0x50,0xd3,0xc1,0x6a,0x9c,0xb0,0x34,0x6f,0xa0,0xcb,0xc7,0xc6,0x79,0x5d,0x17,0x3a,0x4c,0xa3,0x16,0xdc,0xac,0x10,0xf0,0x24,0xad,0x9a,0x5b,0xa9,0x7e,0x45,0xcd,0xe9,0xad,0x87,0x04,0xbc,0x2a,0x05,0x59,0xd1,0xdb,0x86,0x22,0x40,0xdf,0xb1,0xff,0x8d,0x3c,0xf8,0x6a,0xf3,0xcb,0x60,0xf9,0x35,0xa6,0x42,0x81,0xcb,0x0f,0x7c +.byte 0xf7,0x24,0x3b,0x0c,0x94,0x32,0xd9,0xec,0xcf,0xd1,0x31,0x3e,0x3e,0xeb,0xa9,0xf2,0x1f,0x2d,0xa7,0x89,0xf7,0x67,0x7d,0x90,0x9d,0x40,0xf2,0xdb,0x07,0x8f,0xb8,0x6f,0xfd,0x78,0x6e,0xd0,0x9e,0xd5,0x7d,0xb0,0x7d,0x65,0xdc,0x6e,0x50,0xec,0x7a,0x5c,0x2c,0x3e,0x6f,0x64,0xa3,0x10,0x34,0xf7,0x71,0xc8,0x82,0xb6,0x96,0xb8,0xb1,0x2a +.byte 0xb4,0x03,0x95,0x75,0x90,0xac,0x6c,0x81,0x17,0x97,0x06,0xd0,0xb8,0xc5,0x98,0xc5,0x9e,0x46,0x07,0x13,0x02,0x9e,0x47,0x69,0xba,0x85,0x2d,0x09,0x86,0x50,0xe4,0x76,0xb1,0xa2,0xbe,0x8b,0x91,0x6b,0x3b,0x76,0xa3,0xb7,0xf5,0x7f,0xfe,0xf1,0xa4,0xf3,0xc3,0x53,0x64,0xef,0x97,0x86,0x96,0x8b,0xc4,0xae,0x06,0x8b,0xe8,0x3c,0xdc,0xff +.byte 0xfa,0xad,0xcb,0xcb,0x53,0x15,0xf2,0xcc,0x9f,0x48,0xf9,0x57,0x6a,0xcd,0xb2,0xee,0x46,0xc0,0xbf,0x82,0x58,0x60,0xda,0x2f,0xbd,0xde,0xc7,0x41,0xcb,0xf1,0x38,0x56,0x9d,0x38,0x38,0x3d,0xea,0x5e,0x38,0xf1,0xd0,0x02,0x35,0xee,0x4c,0x2f,0x1d,0x19,0xbd,0x08,0x01,0xc3,0x8f,0x75,0xe2,0xf3,0x93,0xbb,0x76,0x6b,0xd7,0x87,0x76,0x7f +.byte 0x3b,0x29,0x08,0x9f,0x3a,0xa5,0x44,0x96,0x5a,0xb3,0x78,0xa9,0xbe,0xf7,0x5d,0xda,0x06,0x37,0x98,0x5d,0xbe,0x6e,0xec,0x58,0x53,0xd1,0xa5,0xd7,0x7a,0x16,0xb1,0x59,0x98,0x42,0x37,0x76,0x1b,0xd6,0x2e,0xa7,0xdc,0x45,0xa6,0x9c,0x9c,0x99,0x24,0x0e,0x22,0xae,0x94,0x65,0xeb,0x4e,0x64,0xc3,0xb0,0xac,0x19,0x41,0xf1,0x62,0x65,0xb2 +.byte 0x35,0xf5,0x2f,0xdb,0xd2,0xf0,0x78,0x19,0x35,0x04,0x6f,0x9c,0xf4,0xaf,0x81,0x68,0x4f,0x8b,0x85,0xfa,0x31,0x23,0x06,0xeb,0x37,0x86,0x43,0x51,0xb3,0xd2,0x2a,0xd7,0xd5,0xa9,0x33,0xba,0xfd,0xb5,0x0e,0x6d,0x9a,0x91,0xf9,0xe7,0x27,0xb7,0xff,0xe6,0xe7,0x34,0xc5,0x1a,0xa3,0x45,0x3b,0x71,0x34,0x87,0x7e,0xe7,0xab,0x74,0xc5,0xff +.byte 0xeb,0x23,0x8f,0x3f,0x5d,0x1c,0x91,0x47,0xeb,0x3e,0x5f,0x5a,0xa6,0x5a,0xde,0xa9,0x5f,0xf4,0x8f,0x95,0xc6,0x25,0x3c,0xd5,0xaf,0xfd,0x4d,0x33,0x68,0xe1,0xa3,0x51,0x1b,0x07,0xad,0xb9,0xec,0xf1,0x50,0x51,0xbf,0xeb,0xe8,0x58,0x2a,0x50,0x0e,0x9d,0xc2,0x8a,0x83,0x8c,0xb0,0xb8,0xde,0x1d,0x7b,0x0f,0xff,0xfc,0xfc,0x31,0xe5,0x62 +.byte 0x40,0xc8,0x28,0x30,0x31,0xc9,0x82,0xab,0xbe,0x50,0xe5,0xfe,0x1f,0x49,0x17,0xf9,0xea,0x23,0xc7,0x6d,0x8d,0x63,0xc3,0x70,0x40,0x32,0x0b,0x48,0x7a,0xd9,0x03,0x52,0x1b,0xf4,0x90,0xd6,0x6d,0xd2,0xfc,0xec,0x24,0x7f,0x21,0x2e,0xd4,0xb5,0x60,0x44,0xd9,0x83,0xb0,0x3e,0x75,0x8a,0x6a,0x09,0xab,0xa8,0x4f,0x48,0x3c,0x2b,0x89,0x30 +.byte 0x29,0xdb,0x1a,0x8e,0x68,0xe4,0x89,0xed,0x10,0xe8,0x46,0xa7,0xf9,0x5f,0x7d,0x42,0xe0,0x8d,0xbc,0x3d,0x4d,0xd8,0x06,0x4a,0xf9,0xbb,0x97,0xa7,0xdb,0x24,0x0b,0xfc,0x49,0x92,0x5d,0x80,0xf8,0xed,0x57,0xc7,0x1e,0x82,0xed,0x41,0xb8,0xfd,0x71,0xb9,0xa5,0x11,0x52,0xdd,0x1e,0xa4,0xf1,0x02,0xc7,0x54,0x7c,0xdc,0x37,0x9f,0xfe,0x37 +.byte 0xe8,0xa5,0xcf,0xb0,0x3d,0x25,0x3f,0x24,0xfe,0xf2,0x63,0x97,0x3c,0x13,0xdc,0x31,0x78,0x07,0xf1,0x8e,0xee,0xc6,0x00,0xf8,0xfd,0x84,0x53,0x4d,0x92,0xa1,0xef,0xd0,0xb1,0x12,0x0a,0x12,0x91,0xeb,0x52,0xdd,0x6e,0x15,0x98,0xd2,0xe1,0x53,0x7a,0x0e,0x02,0x83,0xd3,0xd1,0xde,0x72,0x6e,0x5b,0x4b,0x8d,0x40,0xe3,0x2d,0x22,0x59,0x9d +.byte 0xee,0xbe,0x43,0x18,0x62,0x8c,0x77,0x18,0x91,0xf5,0x9e,0xbc,0x3e,0x8b,0x77,0xb6,0xdb,0x5c,0xcb,0xcd,0xdb,0x36,0xea,0xf5,0x1d,0x9b,0xa7,0x13,0xef,0xda,0xd0,0xe8,0xd8,0xb2,0x4c,0xc6,0x19,0x3d,0x77,0x2d,0x0d,0xad,0xe4,0x32,0x24,0xe9,0xd4,0x7f,0x72,0x1d,0xc6,0x6e,0x83,0x7d,0xb8,0x62,0x64,0x9d,0x9a,0xd7,0x13,0x93,0x92,0xf1 +.byte 0x37,0x98,0xcf,0x44,0x66,0xab,0xd1,0x61,0x6c,0x08,0xa7,0x41,0x4e,0x37,0xc1,0x67,0xfb,0x7c,0x22,0x8f,0xbd,0x93,0xb2,0x09,0x13,0xa0,0x48,0x60,0xaf,0xda,0x73,0x2b,0xa3,0x2a,0xf3,0x4d,0x8e,0x22,0x5b,0x7a,0x32,0xe6,0xca,0xff,0x0e,0xa1,0x0a,0x15,0x33,0x31,0x50,0x71,0x1c,0x85,0x26,0x9b,0x19,0xf2,0xe3,0x69,0x4e,0x2d,0xff,0x79 +.byte 0x80,0xfe,0x2c,0x2f,0x7a,0x49,0x95,0xf3,0x0e,0x78,0xb1,0x0c,0x1c,0x45,0x59,0x68,0x2a,0x37,0xf2,0x48,0x6f,0xd9,0x32,0xf7,0xfc,0xdc,0xbe,0xe3,0xdd,0x61,0x17,0xc0,0x08,0x9d,0xbc,0x2d,0x8d,0x24,0x1c,0xbb,0x53,0xbe,0x37,0x59,0x30,0x87,0xa0,0x14,0xf5,0x08,0xcf,0xd1,0xcc,0x84,0xa7,0x0f,0x69,0xe0,0x77,0x8c,0x0d,0xdc,0x82,0xe5 +.byte 0x88,0x9a,0x58,0x05,0xe3,0x4f,0xdd,0x55,0x1e,0x6e,0x90,0xd5,0x3c,0xa6,0xa6,0x10,0x24,0xe5,0x58,0x97,0xdc,0x31,0x87,0x39,0xdc,0x3a,0xe6,0x24,0x64,0x23,0x45,0xd8,0x01,0x1b,0xf6,0x38,0x68,0x9e,0x62,0x53,0x00,0x97,0x71,0x04,0xb5,0x3b,0x54,0xdb,0xb5,0xcb,0x30,0x91,0x14,0xce,0x94,0xd5,0xe0,0x96,0x70,0x99,0xa5,0xed,0x69,0x32 +.byte 0xc7,0xb7,0x14,0xff,0xc0,0xde,0x19,0x5d,0x31,0xdb,0xa7,0xc0,0x7a,0x94,0xec,0x60,0xfc,0x52,0x71,0x69,0x9b,0xd8,0xbe,0x97,0x0b,0xb5,0x70,0xa7,0x47,0x11,0x37,0x84,0xda,0x3c,0x23,0xfe,0xf2,0x53,0xad,0x55,0x71,0x1e,0x70,0x9b,0x7b,0x61,0x97,0xf8,0x71,0xc4,0xad,0x72,0x98,0x43,0x0c,0x33,0x30,0x2c,0xb2,0xd6,0x21,0x8d,0xbb,0x1b +.byte 0x85,0x82,0x24,0x14,0x85,0x95,0x88,0xff,0x3f,0x8c,0x88,0x96,0xa0,0xf8,0xd7,0x36,0x78,0x37,0x6d,0x92,0x09,0x04,0x76,0x27,0xb9,0xd5,0xea,0x0f,0x07,0x9f,0xe1,0x49,0x0e,0xd1,0x9c,0x46,0xcd,0x2b,0x7a,0x57,0xb6,0x56,0x39,0xe5,0x59,0x6b,0x1b,0x39,0xbf,0x15,0x3b,0x56,0xf5,0xc2,0x08,0x96,0xf5,0x63,0x4c,0x31,0x33,0x65,0x8b,0x74 +.byte 0x4e,0xde,0xa8,0x20,0xe0,0x7c,0x27,0xee,0x91,0x74,0xe8,0x24,0xb3,0xcf,0xa3,0xd4,0xf1,0xb9,0x18,0x43,0x05,0x5d,0x13,0x36,0x82,0xd1,0xbf,0x16,0x89,0x48,0x83,0xf0,0xcc,0x5c,0xbb,0x75,0x7e,0x71,0xc0,0x73,0xd1,0xf5,0x00,0x38,0x7f,0x10,0x98,0xd6,0xb9,0x14,0xea,0xd3,0x3f,0x0f,0xe3,0x61,0x1a,0x5e,0x21,0xd0,0x11,0x58,0x68,0x47 +.byte 0xf2,0xe5,0xe9,0x65,0x9a,0xc1,0xf4,0xa0,0x98,0x8e,0x9f,0x7f,0xbe,0x7e,0xd0,0xb6,0x88,0x4e,0xce,0xc1,0x8b,0xd4,0xd3,0x93,0xb7,0xd8,0xf3,0x0b,0xf3,0x73,0xc9,0x08,0x2f,0xcf,0xd8,0xbd,0xa6,0x1d,0x7c,0xfa,0x44,0x82,0x9f,0x03,0xca,0x56,0x3b,0xbf,0x4d,0x1e,0xbc,0x06,0xc2,0x37,0xfb,0xde,0xd3,0xa9,0xe3,0xae,0x61,0xef,0x26,0x7d +.byte 0xbd,0x2f,0xee,0x2d,0xe1,0x65,0x71,0x77,0xab,0x9c,0x96,0x4f,0x00,0xe2,0xde,0xd7,0x05,0x54,0x00,0xb6,0xaf,0x12,0x0c,0x79,0x1a,0xed,0x20,0x72,0xc7,0x3b,0x3a,0x10,0x15,0x74,0xff,0xbd,0xf8,0xaa,0x8f,0x3a,0x83,0x39,0x24,0xfa,0x53,0x2d,0xc3,0x61,0xfc,0x12,0x6b,0x54,0x33,0xbf,0x83,0xc9,0x59,0x00,0xf0,0xdc,0xa8,0x64,0xbc,0xb5 +.byte 0xc3,0x96,0x60,0x3e,0x7b,0xe2,0x08,0x19,0x92,0x17,0x80,0x9b,0x0c,0x09,0x49,0x68,0x8b,0x15,0xe3,0xce,0x0c,0xfa,0x0c,0x8b,0xf0,0xdc,0x58,0xb0,0x7b,0x82,0x85,0xd2,0x56,0x1c,0xfb,0xb5,0xd0,0x0e,0x0a,0x55,0x61,0xda,0xd8,0x20,0xc1,0x79,0x70,0x3c,0x69,0x8e,0x49,0x5f,0x1c,0xdb,0x22,0xb8,0xdd,0x4c,0x4f,0xca,0xe9,0x0f,0x9a,0x4e +.byte 0xff,0x56,0xbc,0xcf,0x72,0x09,0xa6,0x41,0x38,0xf0,0x7d,0xe7,0x45,0x0a,0x71,0x2c,0x92,0xdd,0x21,0x17,0xb2,0x3b,0x31,0x3c,0x91,0x11,0x69,0x29,0x50,0x31,0xe6,0xa6,0x10,0xc7,0x35,0xe8,0x44,0xec,0x74,0xa3,0x7e,0xb6,0x34,0xe5,0xb7,0xba,0xdf,0x5b,0x2f,0x85,0x02,0x6c,0xb0,0x71,0xb1,0x43,0xff,0x0e,0x47,0x04,0x63,0x4d,0x5b,0x81 +.byte 0x81,0x28,0x8b,0x84,0x79,0xad,0x2a,0x45,0x00,0x1c,0x0c,0x9f,0xef,0x35,0xbb,0x6d,0xc5,0x6a,0x6b,0xef,0x2b,0xae,0x78,0x66,0x05,0x7a,0x61,0x4c,0xe9,0x5e,0xf7,0x95,0x66,0x7e,0x1a,0xa7,0xdf,0x4c,0x4d,0x7c,0x66,0xa5,0x38,0x84,0x86,0x8d,0x66,0xcc,0x7f,0x32,0xb2,0x9c,0xc5,0x0d,0x3d,0xb7,0xb1,0xa6,0xc5,0x80,0x68,0xaf,0x79,0x81 +.byte 0x15,0x8f,0xec,0x50,0x5c,0x1b,0x57,0x31,0xd2,0xb9,0x16,0x66,0xf8,0x16,0xfd,0xcd,0xc7,0xa8,0x84,0x6f,0x35,0xea,0x3f,0xa4,0x72,0x8d,0xad,0xf4,0xd1,0x14,0x46,0xcc,0x06,0xed,0x71,0x39,0x07,0x99,0x28,0xc8,0xf9,0xc4,0xc2,0xec,0xde,0xb8,0x92,0xae,0xc5,0xf8,0xb2,0x49,0xc9,0x32,0x58,0xec,0x9f,0xb0,0x59,0xaf,0x49,0xef,0xe8,0x0d +.byte 0x4c,0x56,0x8d,0xf7,0x57,0xb0,0x09,0xbe,0xc2,0x6a,0x62,0xc4,0x87,0xf3,0x20,0x07,0xc9,0xe3,0x3b,0x31,0xcc,0x8d,0xcf,0x5d,0x18,0x00,0x2a,0x9f,0xde,0x80,0x1a,0x7e,0x95,0x93,0xd1,0xbd,0xe6,0xd4,0x69,0x37,0x96,0xbb,0x70,0xc5,0x3c,0x87,0x8f,0xff,0x95,0x97,0xfe,0x95,0x56,0x7b,0xba,0x03,0x3d,0x29,0x0f,0xdb,0xd0,0x65,0x4f,0xf8 +.byte 0xa8,0xf3,0x42,0x09,0xb5,0x81,0x34,0xc6,0xa9,0x60,0xb9,0xef,0x3e,0x9d,0xc5,0x42,0x1e,0x79,0x5d,0x2b,0xf2,0x46,0x0d,0xeb,0x88,0x84,0x8f,0xad,0x60,0x69,0x57,0x49,0x33,0xb4,0xdd,0xfe,0x10,0x65,0x65,0x51,0xaf,0x68,0xa0,0xce,0xbd,0xe1,0x6e,0x03,0xe1,0x5f,0xba,0x3f,0x36,0xca,0xed,0x20,0x95,0xfa,0xff,0x3c,0x65,0xa8,0xb1,0x6b +.byte 0xc5,0x91,0xa0,0xd5,0x36,0x38,0x1c,0x38,0xe9,0x1d,0x1b,0x67,0x4c,0x17,0xd3,0x29,0x92,0xa2,0x27,0x76,0x3d,0xe2,0x26,0x37,0x2a,0x2c,0xf6,0xee,0x64,0x40,0x8a,0x1c,0x2b,0xc1,0xd3,0x28,0xd0,0xcf,0x2d,0xc2,0x45,0xf4,0x37,0x5a,0x63,0xfb,0x18,0x67,0x01,0x0a,0xe8,0xe2,0x41,0xf7,0x15,0x47,0xa7,0xe9,0xc8,0x05,0xbc,0xc7,0x8f,0xf0 +.byte 0xc3,0xc5,0x9a,0x4e,0x0d,0x7b,0xf0,0x20,0x8c,0x21,0x49,0x99,0x0d,0xf7,0x34,0x84,0x35,0xfb,0x11,0x33,0xd6,0x46,0x14,0x3c,0xf1,0xb3,0x37,0xac,0x75,0x63,0xe7,0x1a,0x19,0xa4,0x49,0xf2,0x58,0x1d,0x56,0x55,0x64,0x46,0x25,0xff,0x7d,0x90,0x34,0x21,0x5d,0x00,0xa1,0xa8,0xaa,0xe0,0x93,0xe7,0xda,0x11,0x34,0x1d,0xa3,0x0c,0x67,0xae +.byte 0xf5,0x60,0x72,0x14,0xdf,0x08,0xf6,0x72,0x3e,0x48,0x41,0x3d,0x00,0x58,0xfb,0x0c,0x15,0x80,0x2d,0xd9,0x72,0x47,0xa6,0x20,0x6a,0x74,0x9e,0x06,0xb9,0xac,0x68,0x3a,0xe7,0xf1,0x19,0xb8,0x0b,0x66,0x07,0x4d,0xa0,0xb5,0xab,0xea,0x70,0xa1,0xdf,0x41,0x76,0x85,0x18,0x5b,0x6f,0x78,0x5a,0x5d,0x08,0xe0,0x1b,0xd8,0x06,0x73,0x1e,0x16 +.byte 0xcb,0xdb,0x02,0xf8,0x96,0x64,0x65,0xc5,0xc1,0x52,0xd4,0xd8,0xb3,0x1e,0xd4,0x09,0xfd,0xa7,0x30,0x41,0x5a,0xce,0x53,0x4d,0x11,0xc8,0xdd,0x13,0x50,0xd5,0x2e,0xa0,0xe6,0x48,0x49,0x31,0x4b,0x1d,0xce,0xfc,0x42,0xed,0x8f,0xc8,0xb3,0x0a,0xae,0x1d,0x4c,0x1e,0x4f,0x39,0xa4,0x37,0xc8,0x54,0xdf,0x40,0xa6,0x42,0x61,0x7d,0x34,0xd4 +.byte 0x75,0x0a,0x9f,0xf0,0x33,0x54,0xf3,0xc4,0xdc,0x4e,0x2f,0x81,0xc2,0x20,0xaa,0x4f,0xa0,0xae,0xa6,0xb8,0x50,0xf8,0x45,0xf1,0xf2,0xd1,0xd2,0xcf,0xc8,0xf0,0xf4,0x54,0x37,0xdc,0xfb,0x13,0xdf,0x38,0xc2,0x3f,0xe0,0x59,0xb5,0x9a,0x0f,0x27,0x87,0xd4,0xd3,0xdc,0xfd,0xda,0x1d,0xfa,0xdd,0x12,0xe0,0x7f,0x34,0x01,0xde,0x28,0xf5,0x0e +.byte 0xff,0x59,0xc7,0xbd,0x6a,0xe4,0x0c,0x85,0x7b,0x87,0xf9,0xd7,0xe2,0xed,0xb2,0xf7,0xb7,0x13,0xfb,0xfc,0x4d,0x25,0x52,0xfd,0x23,0x6b,0x10,0xd0,0x80,0xd8,0xbd,0xbd,0xf0,0x87,0xfc,0x38,0x85,0x83,0x20,0x5f,0x7c,0x26,0x14,0x93,0xd3,0xe1,0xdc,0xa4,0xda,0xa7,0xf9,0xfd,0x6c,0x9a,0x2b,0x75,0x82,0xf1,0x9f,0x1b,0x0c,0x43,0xd4,0x2d +.byte 0x5b,0x0c,0x54,0x7e,0x61,0x24,0x8e,0x50,0x25,0xd8,0x54,0xfd,0x30,0xec,0x4c,0xa8,0xb6,0xf0,0x35,0x67,0xf7,0xe4,0x3c,0xfd,0xc8,0x40,0xf4,0x2d,0xc5,0x4d,0xc3,0x29,0xc2,0x88,0x60,0xab,0xd9,0x2a,0xe8,0x31,0xcc,0x0c,0x9f,0x97,0xa8,0x2e,0xaa,0xa5,0xb6,0xee,0x3c,0x71,0xa9,0xff,0x90,0xb4,0x43,0x2e,0x16,0x80,0x8c,0xfe,0xb5,0x7a +.byte 0x40,0x58,0xd5,0x98,0x7e,0xca,0xaf,0x95,0xee,0x00,0x26,0x8d,0x5b,0xba,0x33,0xee,0x35,0xb5,0x9b,0xf8,0x08,0x1e,0x15,0x2d,0x01,0xb1,0x83,0xa6,0x57,0x58,0xd1,0xf3,0xa4,0xf1,0x3a,0x00,0xf4,0x40,0xee,0x35,0x3a,0x20,0xc2,0x13,0x1e,0xda,0x32,0xc2,0x35,0x74,0x29,0xce,0x51,0x3f,0xec,0xb2,0xd7,0x23,0xa7,0xc6,0xef,0x70,0xb9,0x88 +.byte 0x6f,0xa8,0xf5,0x5b,0xff,0xc5,0xf5,0xb4,0x3b,0x12,0x75,0x20,0xbf,0x61,0x8a,0xb1,0xae,0x01,0x9b,0x17,0xf4,0xf3,0x2d,0xfb,0x44,0xe8,0xac,0x29,0x81,0xc2,0x6d,0x50,0x05,0x11,0xd9,0x43,0xf8,0xc7,0x58,0x5d,0xbc,0x2d,0xc0,0x83,0xd2,0x81,0x41,0x1c,0x46,0x62,0x60,0x6e,0x65,0x52,0x4b,0x1c,0x88,0x72,0x1b,0x0e,0x8e,0x7d,0xa2,0xb5 +.byte 0x4e,0x28,0x32,0xf2,0xb1,0xfa,0xf1,0x4b,0xc5,0x85,0x95,0x2c,0x08,0x78,0x85,0x68,0xe5,0x20,0x23,0x8b,0xc4,0xf5,0xb2,0xdb,0xc1,0xdd,0xe5,0x69,0xa4,0x97,0xa9,0x6c,0x2e,0x3a,0x25,0x1c,0x24,0x54,0x97,0x3e,0x8d,0x61,0x61,0xa3,0x60,0xf5,0xd2,0x4e,0x90,0x25,0x06,0x09,0x31,0x7b,0x96,0xce,0xcc,0xb7,0xbc,0x63,0x9f,0x04,0x7d,0xec +.byte 0xa1,0x4a,0x65,0xd3,0x26,0xe1,0xbf,0xf9,0x88,0xea,0x5c,0x5d,0xfe,0xe9,0x60,0x77,0xbd,0xf2,0xa0,0x11,0x91,0x24,0xca,0xa1,0x0d,0x05,0x7b,0xe2,0x7d,0x22,0x2e,0xd2,0xc9,0x4b,0x78,0xce,0x0c,0x7b,0x49,0xaf,0xd6,0x59,0x5f,0xb4,0xbd,0x2e,0x4a,0x22,0xcb,0x5d,0x1c,0xd5,0xde,0xea,0x86,0x74,0xd5,0x15,0x52,0x59,0xfc,0x3d,0x7b,0x1c +.byte 0x3f,0x14,0xec,0xf2,0xc8,0x3c,0x88,0xbf,0x89,0xd5,0x23,0xc3,0x94,0x3c,0x28,0x04,0x91,0x6c,0x36,0x35,0x4b,0x75,0xf8,0xdc,0xf3,0xff,0xba,0x8c,0xa4,0xc7,0x85,0xc5,0x1a,0x30,0x4b,0x7c,0xc5,0x2f,0xb9,0x2a,0x14,0xaa,0x65,0xe3,0x92,0xdc,0xe1,0xed,0x3f,0xb6,0xff,0x0e,0x74,0xe0,0xb3,0xc9,0x4b,0xd1,0x96,0xfc,0x49,0x72,0xbe,0xb0 +.byte 0xc8,0x4a,0xd5,0xf0,0xb3,0x58,0x29,0x35,0x97,0xd4,0x5c,0xc7,0x0b,0x27,0x1d,0x14,0xdb,0xb7,0x5c,0x7e,0x6d,0xc1,0x56,0xa9,0x80,0x72,0x7d,0x75,0xc2,0x2f,0x07,0x28,0xb4,0xff,0xef,0xa7,0x34,0xed,0x31,0x44,0x85,0xe6,0xc3,0xa4,0x5f,0xe2,0xe8,0xab,0xd1,0x59,0xe7,0x32,0x20,0xd1,0xcc,0xef,0x6f,0xe1,0x10,0x89,0x6c,0x0c,0xf3,0x5f +.byte 0xe8,0xc7,0x1c,0x3b,0xeb,0x3e,0xa5,0x53,0x2d,0x48,0x64,0x92,0xa0,0xec,0xf3,0x75,0x5b,0x5b,0xe2,0x83,0x87,0x04,0xa7,0xd8,0x1b,0x44,0xfb,0x42,0xee,0xd8,0xf2,0x98,0xff,0x30,0xc8,0x09,0xf8,0x1a,0x95,0x46,0x2d,0xe7,0x43,0x10,0x90,0xf4,0x2c,0x8f,0x0b,0x60,0x6d,0xeb,0xbf,0x19,0xc1,0x9d,0x5c,0xc0,0xff,0xb1,0x86,0xbc,0x01,0x73 +.byte 0x35,0x1f,0xd8,0xf4,0xa1,0xd4,0x7f,0x2d,0x1b,0xf9,0xa6,0x78,0x1a,0x2e,0x2c,0xe2,0xcc,0x8b,0x5f,0xbb,0xb9,0x80,0x31,0x32,0xa5,0x5d,0x70,0x59,0xae,0xe3,0xac,0xab,0xde,0x38,0x09,0x07,0x57,0x5f,0xbf,0xe8,0xa0,0xb8,0xd0,0x03,0xac,0x02,0x0d,0x7f,0x7e,0x0c,0xd2,0xcf,0x46,0x01,0x07,0x9f,0x16,0xf6,0x2b,0x94,0xaf,0xae,0x66,0x09 +.byte 0xca,0x4c,0x5f,0x37,0x53,0xa6,0x50,0x82,0x3a,0x0a,0x7b,0xb3,0x52,0x2e,0x0f,0xe4,0x64,0xab,0x40,0x21,0x2d,0xb7,0x20,0x9b,0xe3,0x2f,0xec,0x2b,0xb3,0x31,0x60,0x51,0x2e,0xb6,0x68,0xac,0xae,0xee,0x2d,0x28,0x5b,0xe0,0xa7,0x85,0xab,0x95,0xba,0x53,0x8c,0xc0,0xf8,0x16,0x8f,0x42,0x01,0xef,0x00,0x32,0x44,0x8e,0x41,0xc9,0x05,0x5b +.byte 0xe0,0x3f,0xe1,0xd8,0xd4,0x97,0x8e,0xa0,0x14,0x84,0xce,0x5c,0xef,0xbe,0xa4,0xae,0x18,0x91,0xd9,0x48,0x9b,0xc3,0x7a,0x8f,0xfb,0xb3,0x3e,0xa9,0x87,0x74,0x84,0xd2,0xc6,0x7c,0xc9,0xce,0x01,0xa5,0xcc,0xff,0x5a,0xe8,0x94,0x98,0x54,0x2a,0x6e,0xd9,0x58,0x75,0xd4,0xdd,0x6c,0x7d,0x83,0x32,0xc9,0x4e,0x35,0x2c,0x51,0x26,0x68,0x1f +.byte 0x95,0x20,0x82,0x54,0x0a,0xad,0x5e,0xe2,0xba,0xf9,0xa3,0x54,0x24,0x93,0x4a,0x62,0xff,0x28,0x05,0xd2,0x22,0x62,0x82,0xd4,0x2d,0xe2,0xec,0x66,0xc5,0xee,0x63,0xd0,0xf6,0x93,0xa8,0x37,0xbf,0xdd,0xe0,0x95,0x0b,0x19,0xa1,0x9d,0x9a,0xf8,0x94,0x1a,0x3a,0x50,0x9e,0x66,0x75,0x8c,0x25,0xbd,0x18,0xb0,0x58,0x76,0x7f,0x2d,0x3d,0x06 +.byte 0x02,0xb3,0xcf,0xa3,0x14,0x6e,0xe7,0xc8,0xcd,0xe6,0xbe,0xae,0x92,0xd6,0xa2,0xfe,0x12,0xf0,0xdf,0x9f,0x9e,0xad,0x77,0x77,0xfb,0xfc,0x36,0xb7,0x82,0x9c,0xf1,0x51,0xc2,0x58,0xa0,0xf3,0xa0,0xd6,0x6e,0x64,0x28,0xac,0x09,0x8f,0x7b,0xef,0x19,0x87,0x76,0xb9,0x4e,0xca,0x1f,0x05,0xb6,0x00,0x4a,0x14,0x83,0xaf,0xff,0xd9,0xa1,0xc6 +.byte 0x0f,0x98,0x3a,0xcf,0x85,0x18,0xea,0xa6,0x9a,0x1e,0xae,0x7c,0xaa,0xae,0xef,0x89,0x5e,0x14,0x5d,0x2f,0x73,0x8f,0xd1,0xf0,0x77,0xcd,0x45,0x92,0x7f,0xee,0xb9,0x7c,0xc2,0x3c,0xff,0x56,0x56,0xa5,0xa5,0x49,0xe4,0x20,0xd6,0xa2,0xb6,0xe4,0xfc,0x86,0x53,0xce,0x9e,0x2b,0x7b,0xcb,0xcf,0x6a,0xd5,0x62,0xb7,0x34,0x0e,0x39,0xe2,0xaa +.byte 0x1c,0x24,0x30,0x71,0x94,0xb3,0x57,0xd8,0xe8,0xd4,0xc5,0x4f,0x33,0x2c,0x73,0x7e,0x48,0xba,0xb3,0x55,0x84,0x6d,0x10,0xcf,0x8f,0xf2,0xb6,0xdb,0x4e,0xcf,0x49,0x08,0xf6,0x5a,0x3c,0x7e,0xef,0x3f,0x5c,0x11,0x09,0xfe,0x26,0xfb,0xff,0x30,0xcb,0x81,0x12,0xea,0x1e,0xa9,0x6e,0xf8,0xea,0x4f,0x92,0x2c,0x23,0x99,0x35,0xa5,0x59,0xca +.byte 0x1d,0x66,0x72,0xad,0x5b,0x7c,0xb3,0x4a,0x7c,0x76,0x4c,0xf6,0xc1,0xec,0x68,0x5f,0x2c,0x17,0xbe,0x92,0xe1,0xa1,0xee,0x40,0x24,0x25,0x6b,0xc5,0x0b,0x6f,0x06,0xc0,0x05,0x8c,0x23,0x24,0x76,0xea,0xe9,0xb9,0xa1,0x3d,0x59,0x15,0xe7,0x65,0x47,0x5a,0x75,0x9b,0xc8,0x7b,0x86,0x97,0xf4,0x4a,0xa3,0xec,0x54,0x0e,0x66,0xef,0xda,0x41 +.byte 0xb8,0x3b,0xa6,0x86,0x63,0xe1,0x4e,0x89,0x92,0x40,0xf4,0x8b,0x32,0x47,0x3b,0x4b,0xb4,0xe6,0xd8,0x4b,0x1c,0xac,0x03,0xab,0xde,0x2e,0x63,0x96,0x3f,0x27,0xa1,0x32,0x11,0x35,0x24,0x6a,0xe9,0x0b,0x73,0x61,0x4e,0xd8,0xdc,0x91,0x98,0x01,0x8a,0x0d,0x61,0xec,0x39,0xbe,0x3b,0xb9,0x78,0x77,0xea,0xaa,0xa2,0x12,0x20,0x92,0x98,0x16 +.byte 0x27,0x3b,0xd1,0xfa,0x59,0xef,0x81,0x38,0x9f,0x42,0xe8,0xb4,0xab,0x4f,0x26,0x9a,0xe7,0x0b,0x05,0x03,0xfa,0xe1,0xe1,0x3d,0x45,0xac,0x7d,0x40,0xcc,0x2f,0xf2,0xb0,0x33,0x42,0x14,0xbd,0x91,0x3e,0xe1,0xb7,0x17,0x25,0xc3,0x92,0xcb,0x9e,0x44,0x1e,0x13,0x93,0x98,0x1f,0x96,0x64,0x3a,0xaa,0x53,0x9a,0x18,0xc0,0x34,0x3c,0x47,0x94 +.byte 0x14,0x70,0x67,0x76,0x2a,0x82,0xd3,0x6a,0x18,0x13,0xe7,0x01,0x8d,0x97,0x52,0x51,0x8e,0x08,0xde,0x44,0xb0,0x74,0x07,0x58,0x35,0xc2,0x29,0xb5,0xd7,0x00,0x46,0x31,0x34,0xd7,0x1f,0xdd,0xaa,0x5c,0x27,0xc7,0x37,0x71,0xe8,0xbe,0xad,0x89,0xf1,0xb2,0xd1,0x46,0x33,0x0c,0x2f,0x26,0x21,0x5e,0xc9,0xda,0x25,0xcd,0xd0,0x17,0x23,0x87 +.byte 0x15,0xc2,0xa0,0x1a,0x9f,0x6e,0xfb,0x63,0xe9,0x69,0xdf,0x79,0x18,0x33,0x2f,0x47,0xca,0x54,0x23,0x7e,0x4f,0x6e,0x38,0x06,0x99,0xfb,0xcd,0x22,0xdb,0x4b,0x3f,0x8a,0x05,0x2e,0x5c,0x56,0x65,0xb7,0xab,0x57,0x8b,0xdd,0x28,0xab,0x7e,0x77,0x32,0x0f,0xc6,0x3c,0xf3,0xde,0x43,0xb0,0x13,0x3b,0xbd,0x28,0x3a,0x8b,0xd5,0x6b,0x1d,0x5d +.byte 0x20,0x1a,0x5f,0xa6,0x01,0xed,0x88,0x7f,0x87,0x55,0x38,0xc2,0x0d,0x03,0x6c,0x41,0x6a,0x43,0xdf,0x09,0xf3,0x58,0x69,0x13,0xa1,0xd6,0x39,0x0c,0x8e,0x8f,0x40,0x67,0xe8,0x0e,0x9b,0x9b,0x42,0x30,0xd7,0xae,0x04,0x75,0x66,0xfb,0x4a,0xa7,0xe0,0xe9,0xea,0x6d,0x28,0x4f,0xc0,0x5c,0xd4,0xd4,0xb7,0x60,0x5a,0x35,0xc1,0xe8,0x5f,0xc3 +.byte 0x4f,0x7a,0x5d,0x8d,0xc2,0x29,0x6e,0x36,0x50,0x5b,0x82,0x63,0xf2,0xda,0x8d,0x02,0x61,0x09,0x69,0x0a,0x47,0x9d,0x58,0xf3,0xf6,0xe0,0xc0,0x09,0xd9,0x3b,0x8d,0xf5,0xba,0xf6,0xc4,0xf0,0x65,0x89,0x7b,0xdd,0x93,0x6b,0x6e,0x21,0xa1,0x2a,0x66,0xe0,0x8f,0x62,0xb0,0x49,0x60,0xa3,0x48,0x42,0x62,0xcc,0x26,0x1f,0x59,0x3a,0x7b,0xa7 +.byte 0x82,0x10,0x5f,0xc6,0xf8,0xa2,0xc0,0x07,0x7b,0x26,0x26,0x11,0xe2,0x5b,0xb8,0x86,0xb7,0x66,0xcf,0x0a,0xcc,0x6f,0xe8,0x02,0x22,0x4c,0x13,0x75,0xdc,0x68,0xf0,0x7c,0x0c,0x46,0x9a,0xa2,0x4c,0xf5,0x50,0x3f,0xf9,0xbc,0x01,0xb1,0xa1,0x28,0x90,0x07,0x6b,0x17,0x69,0x89,0x7b,0xe5,0x0a,0xf7,0x7b,0xe1,0x94,0x30,0xfc,0xd3,0x8d,0xd3 +.byte 0x99,0x37,0x91,0xd5,0xdf,0x59,0x2a,0x4f,0xfe,0x6c,0x37,0x4b,0x78,0x2c,0xa9,0x28,0x6a,0x5c,0xd6,0xe1,0x0b,0xad,0xae,0x62,0x7c,0x09,0xb8,0x90,0x3f,0x29,0x37,0x7b,0x79,0xee,0x55,0x02,0x05,0xef,0x28,0xa2,0xc7,0x07,0x2b,0xe6,0xab,0x87,0x9d,0x8f,0x4c,0x0f,0xc1,0x75,0x5d,0x88,0x7f,0x26,0xe0,0x1e,0xf8,0x3f,0xb5,0x2a,0x6c,0xe6 +.byte 0x7f,0x85,0xae,0x55,0x7b,0x58,0x34,0x4c,0x81,0x05,0x21,0xa1,0x5e,0xd7,0xb6,0x20,0x6e,0xf9,0x60,0x15,0xa4,0xb2,0x8f,0x68,0xd2,0x23,0x9f,0xbf,0xfa,0x6a,0xcb,0x87,0x7d,0x41,0x4a,0xae,0x28,0x4f,0x9e,0xbb,0x69,0x1c,0x37,0xb2,0xc9,0xd2,0x21,0xa1,0x2b,0x6b,0x5d,0xff,0xd6,0xdb,0x8f,0x21,0xd9,0x17,0xd6,0xe6,0x74,0xf2,0x20,0x0e +.byte 0x06,0xb5,0x0c,0xdc,0x74,0x4e,0x93,0xcb,0x27,0xc7,0x4b,0xf3,0xef,0x46,0xa8,0xf0,0x58,0x1c,0xa0,0x65,0x09,0x84,0xc7,0x2e,0xba,0x51,0xd9,0xd4,0x53,0x20,0xc7,0x20,0x85,0x93,0x2b,0xf3,0x42,0x93,0x7b,0x22,0x1c,0x8d,0x22,0x76,0xcf,0xde,0x6a,0xa1,0x76,0xea,0x65,0x20,0x2f,0x2e,0xdb,0x85,0xdd,0x73,0x43,0xf8,0xe0,0xe3,0x3a,0xe5 +.byte 0x02,0x57,0x96,0x54,0xbc,0xaf,0xa4,0xd5,0xda,0x9d,0x9d,0x8b,0x85,0x01,0x7c,0x72,0x03,0xfe,0x39,0x46,0xab,0x04,0xcc,0x62,0x71,0xf5,0xa5,0x67,0xd7,0xfc,0xc0,0xb6,0x95,0x74,0xdf,0x1c,0xfe,0x1c,0x5b,0x25,0xae,0x42,0x75,0x00,0x71,0x3c,0xec,0xfc,0x3c,0x7b,0x0f,0xec,0x44,0xc7,0xec,0x9b,0x86,0xf5,0x3d,0x47,0x15,0xf0,0x25,0xba +.byte 0x43,0xc8,0x68,0x15,0x4f,0xeb,0x35,0x76,0x2d,0x04,0xb7,0x9b,0xb8,0xa7,0x0d,0xb3,0xb4,0xf2,0x93,0x85,0xb1,0xb8,0x81,0x7c,0xd6,0x5f,0xbd,0xc2,0xcc,0xf4,0x0e,0x98,0x2c,0x06,0x54,0x2f,0x5e,0x49,0x94,0x93,0x78,0xa0,0x0a,0x33,0x2e,0x3f,0xb2,0xa7,0x81,0xed,0xe9,0xb6,0xb5,0x86,0x4b,0xa5,0xc0,0x51,0x30,0x9d,0xe2,0x9f,0xc2,0x56 +.byte 0x92,0x6b,0x96,0xca,0xcb,0x65,0x5c,0x0e,0xf4,0x91,0x2b,0x89,0xf4,0x27,0x55,0x26,0xd7,0x7b,0x00,0x19,0x1f,0x67,0x4e,0x43,0x24,0x81,0x05,0xb7,0xc6,0x41,0x1a,0x39,0x3d,0x40,0x3e,0x8a,0x03,0x94,0x63,0x1b,0xb1,0x87,0xb6,0xe1,0x52,0xd0,0xe8,0xbb,0x0e,0x37,0x72,0xe5,0xde,0x86,0xc0,0xdf,0x5b,0xc2,0xc6,0x0a,0x67,0xa7,0x4c,0x03 +.byte 0xb6,0xd8,0x7f,0x1d,0xb3,0xe3,0x84,0xb7,0x5c,0x04,0x15,0xe0,0xd0,0xae,0x44,0xac,0x39,0xa5,0xa2,0x86,0xc8,0xad,0x27,0xa0,0x36,0xa1,0x6e,0xaa,0x87,0x7a,0x43,0xae,0xa0,0x45,0x1a,0xac,0x04,0xe2,0x55,0xf2,0x9a,0x97,0x67,0xfb,0x01,0x8f,0xb8,0x80,0x9c,0x27,0x1d,0xbe,0xa3,0xf1,0x6d,0x66,0xf2,0x1a,0x99,0x99,0xf6,0xa5,0xba,0x58 +.byte 0x28,0x58,0xb5,0x44,0x5b,0x38,0x4a,0x3f,0x37,0x85,0x7e,0x36,0x8e,0x16,0xb9,0x1e,0x0b,0xbf,0x7d,0x0a,0x0c,0x83,0x53,0x0d,0xcc,0x37,0xe1,0x42,0xbb,0x0d,0xfc,0x01,0x25,0x10,0xbe,0xb5,0x83,0x2f,0xa5,0x42,0x98,0xbc,0xd6,0x50,0x75,0xda,0x32,0x2b,0x3f,0xd6,0xc1,0x1a,0xe7,0x0b,0x80,0x07,0x6f,0xfe,0x77,0x9e,0xe9,0x1e,0x45,0x65 +.byte 0x68,0x92,0x34,0x8b,0xce,0xf3,0xcd,0x94,0x17,0xe0,0x41,0x92,0x96,0xb5,0xd1,0x98,0xd1,0x25,0xd1,0x3d,0x76,0x88,0x86,0xb1,0x01,0x80,0xc7,0xde,0x60,0x20,0xb8,0x03,0xe7,0x3f,0x44,0x39,0xb1,0xb8,0x19,0x53,0x5a,0xc6,0xa0,0x18,0x8e,0x0e,0xb6,0xfd,0x7e,0xe7,0x7e,0x8a,0xeb,0x4c,0x35,0x4a,0x0f,0x52,0x81,0x68,0x12,0xe4,0x46,0x2e +.byte 0x20,0xb4,0x41,0x59,0xb3,0x16,0x02,0x9f,0xdb,0xe8,0xea,0xfd,0xe3,0x5d,0x14,0xd0,0x97,0x52,0x66,0xcb,0xb4,0x48,0xa3,0x05,0xab,0x73,0x8e,0x2c,0x46,0xc2,0x94,0xd5,0xc8,0x57,0xc4,0x13,0xa4,0x0b,0x7c,0x34,0xbf,0xb4,0x07,0x28,0x92,0xe2,0x1d,0x00,0xa6,0xf0,0xb0,0xbf,0xdd,0x5d,0x20,0x05,0x9f,0x53,0xcf,0x07,0xf7,0xe8,0x79,0x04 +.byte 0x57,0xd1,0xac,0x9c,0xdd,0xae,0xcd,0x8b,0x04,0x0a,0x2d,0x0a,0x0f,0x21,0x09,0xc8,0x0d,0xfa,0x23,0x26,0xe3,0xdb,0x84,0xc8,0x8e,0x9c,0x96,0x93,0x4f,0xcc,0x2f,0x96,0xed,0x04,0x91,0x0d,0xc7,0xbb,0x27,0xa3,0x6b,0x9d,0xe2,0x15,0x83,0x31,0x78,0xb5,0xb9,0x6d,0xb1,0x6c,0xa2,0x3e,0xf5,0x45,0x77,0xf4,0x96,0x3a,0xe6,0x10,0x08,0xfd +.byte 0x23,0xcc,0xda,0x27,0x73,0x67,0xbb,0x8b,0x59,0xe2,0xcf,0xda,0x57,0xf9,0x17,0xeb,0xeb,0x98,0x39,0x48,0xbf,0x3d,0x5b,0x7b,0xc2,0x11,0x4b,0xd6,0xb6,0x8a,0x14,0xb3,0xf5,0xc3,0x18,0xff,0xde,0x62,0x98,0x4a,0x1d,0x6b,0x4e,0x00,0x4f,0x7d,0x2f,0x67,0xf4,0x22,0x1e,0xdb,0x69,0xd5,0x87,0xfd,0xee,0x97,0x56,0xd4,0x00,0x0c,0x9e,0x22 +.byte 0x11,0xda,0x8e,0x3b,0x91,0xad,0xf1,0xb6,0x0a,0xba,0xe7,0xc6,0x14,0x0e,0xc4,0x85,0x5f,0x7d,0x69,0x7d,0x73,0x9c,0x83,0x6a,0x69,0xef,0x10,0xb0,0xe6,0x33,0x32,0x0f,0xd8,0x54,0xa4,0x9d,0x39,0xaf,0xfc,0x6d,0x4f,0xeb,0x34,0x89,0x2e,0xb0,0xa1,0xcd,0xe1,0x5b,0xab,0xe1,0xff,0x82,0x85,0x6b,0x5e,0xa9,0x9e,0x43,0x02,0x0d,0x38,0x33 +.byte 0xe1,0xbc,0xa4,0x77,0x8a,0x5e,0x54,0xa8,0xcf,0xc9,0x76,0xcb,0x73,0x21,0x1f,0xa7,0x1e,0x5c,0x0a,0xd6,0xa2,0x36,0x6f,0x07,0xa1,0x6b,0x0d,0x5a,0x21,0x3a,0xc3,0xc0,0xcd,0x9d,0xed,0x83,0x96,0x89,0xaa,0x55,0x56,0xfd,0x0a,0x97,0x3a,0x50,0xfd,0x95,0x3f,0xb7,0xfa,0x87,0x7d,0xa6,0x5d,0x12,0x65,0x3f,0x61,0x4f,0x86,0xdd,0x58,0x64 +.byte 0xd7,0xde,0xd6,0xb9,0x68,0x87,0xde,0xba,0x96,0xf5,0x1c,0xec,0x8e,0x81,0xfc,0xca,0x77,0xe2,0x85,0x11,0x93,0xc7,0xf2,0x0f,0x77,0xbb,0x7c,0xed,0x20,0x7a,0xe3,0xc5,0x76,0xff,0x04,0xc7,0xe6,0x7a,0xa1,0xfe,0x58,0x52,0x1b,0xec,0x27,0xbb,0xd4,0x27,0x7c,0xc7,0x4a,0xfb,0x07,0x62,0x99,0x36,0xff,0x6e,0x71,0x2f,0xbd,0x25,0xff,0x8d +.byte 0x97,0x14,0x56,0x23,0x7f,0x13,0x89,0x10,0xd8,0x29,0x1f,0x91,0x56,0x52,0x85,0xa7,0xd3,0x04,0xc9,0xe2,0x09,0xa2,0x0f,0xaa,0x28,0xb1,0x79,0xf9,0x08,0xf4,0x14,0x57,0xc4,0x54,0xd7,0x69,0xb0,0x37,0xf0,0x80,0x90,0xce,0x75,0x81,0xe7,0x75,0x0f,0x7f,0x71,0x58,0x3b,0x78,0x53,0x9b,0x4a,0x5e,0xcc,0x23,0x04,0x9e,0x0c,0xd7,0xd8,0x69 +.byte 0x90,0xdf,0x36,0x99,0x90,0xd3,0xfa,0x35,0xf7,0x13,0x64,0xb0,0xc0,0x70,0x0c,0xd4,0x87,0xc0,0xca,0xd8,0xca,0x8a,0xc3,0x9a,0xfa,0x73,0x34,0x18,0xe9,0x3a,0x85,0x42,0xc5,0xe1,0xaa,0xb5,0x87,0xac,0x43,0x9c,0xfa,0x7e,0x05,0x35,0xed,0x7e,0x0d,0x38,0x82,0x17,0x7f,0x22,0xa2,0x3d,0xd3,0x0d,0xd1,0xff,0x0a,0x68,0x52,0xd2,0x17,0x59 +.byte 0xaa,0x57,0xbd,0xd3,0xea,0x0c,0xe8,0xb0,0x22,0x13,0x59,0x42,0x46,0x34,0x58,0xa9,0x16,0xc5,0x9f,0x88,0x8f,0x75,0x02,0xbf,0x63,0xda,0x28,0xba,0x9a,0xcf,0xbb,0x73,0x58,0xb1,0x13,0xf2,0x68,0xd8,0x6b,0xfd,0x49,0x50,0xcf,0x09,0xea,0x6a,0xff,0x20,0x39,0xc5,0xae,0x70,0x79,0xea,0xec,0x9d,0x09,0xf8,0x51,0x1f,0xfd,0x01,0xd5,0x9f +.byte 0xec,0x29,0x36,0xfc,0x39,0xb4,0x4c,0x1f,0xe6,0xb4,0xcc,0x97,0x21,0xe5,0x19,0xe9,0x7a,0x60,0x6d,0x39,0x3c,0x31,0xd4,0x43,0x76,0xba,0x10,0xd9,0x3f,0x75,0x7a,0xa6,0x1d,0x02,0x88,0x3d,0xa5,0x9f,0x91,0x61,0x4e,0x32,0xec,0xf5,0xd3,0xe4,0x65,0xf7,0x0e,0x3b,0x8a,0x8f,0x22,0x31,0x71,0x8f,0xf1,0x5f,0x7b,0x04,0x88,0xf9,0x88,0x67 +.byte 0x14,0x85,0x74,0x9e,0x54,0x0b,0xed,0x7a,0x48,0xcd,0xcf,0xd2,0x05,0x38,0xd5,0x58,0xa2,0xaf,0x6a,0x28,0x21,0xfd,0x38,0x4e,0x83,0x06,0x15,0x60,0xfb,0x89,0x2a,0x72,0xfe,0x75,0xc7,0xa4,0xae,0xe4,0x5b,0xbb,0xde,0x54,0xde,0x77,0xbb,0x9d,0xd2,0x07,0x05,0x61,0x53,0x65,0x31,0xd4,0x3a,0x8a,0x7d,0x9d,0x30,0x09,0x25,0x28,0x72,0x19 +.byte 0xe4,0xae,0x1d,0xbf,0xa7,0xef,0x75,0xd0,0xe3,0xdc,0x0b,0xd1,0x17,0x9c,0xc6,0xdf,0x65,0x9a,0x7c,0x9d,0x0b,0x9a,0x3d,0x8f,0xb0,0xf5,0x51,0x46,0x6b,0x12,0x0d,0xe6,0xa9,0x3a,0xb5,0xe9,0x52,0x85,0xa5,0x25,0x1f,0xc9,0x8b,0xff,0xe3,0x37,0x25,0x97,0xd8,0x91,0x17,0xed,0xcf,0x2a,0x6d,0x4f,0xef,0x74,0x5e,0x92,0xa2,0x2d,0x84,0xa6 +.byte 0x09,0xc4,0xfc,0x36,0x95,0x54,0x25,0x9e,0xeb,0xd9,0xea,0x5a,0x01,0x0c,0x54,0xdb,0x82,0x01,0xed,0x0b,0xf7,0x9f,0x0d,0x8f,0x2e,0xee,0x7c,0x6e,0xb3,0xe7,0xe8,0x04,0xef,0x8d,0x5e,0xfe,0x3d,0x96,0x3a,0x65,0xd3,0xb2,0x11,0x75,0x1c,0x6f,0x2a,0xd3,0x26,0x1f,0x5f,0x35,0x02,0x0b,0x9f,0x38,0x5b,0xa5,0x3a,0x90,0x3e,0x03,0x9f,0x50 +.byte 0xf2,0xd7,0xe4,0x3c,0xd3,0x28,0x67,0x0a,0x5a,0xe8,0x59,0x6f,0x38,0x8f,0x8b,0x0d,0xe4,0x1c,0xfc,0x6e,0x07,0x69,0x7b,0xfb,0x04,0x30,0xe7,0xa6,0x13,0xfb,0x33,0xa0,0x52,0x6a,0xec,0x64,0xad,0x90,0xbd,0xba,0x15,0x12,0x48,0xed,0xd1,0x94,0x2d,0xe7,0x19,0x28,0x5e,0x7a,0x94,0xf4,0x79,0xd7,0x79,0xc9,0xf6,0x16,0xb4,0x88,0xee,0x15 +.byte 0xa2,0x68,0xe3,0x1d,0xd0,0xd2,0x63,0x78,0x7c,0xb3,0x30,0xac,0x63,0x7a,0x36,0xc5,0x50,0xbf,0x57,0xf6,0xfe,0x4e,0x43,0x4e,0xf9,0xc4,0xa2,0x2a,0xa7,0xa4,0x2c,0x18,0xb9,0x43,0x7b,0xe8,0xf6,0x14,0x4f,0x07,0x6e,0x65,0x9a,0xdd,0x10,0x2a,0x4c,0xa4,0x58,0x86,0x19,0xad,0x6d,0x5e,0x30,0xfb,0x5f,0xb6,0x9f,0x2a,0xac,0x90,0x0d,0xae +.byte 0xf9,0xab,0xc1,0x33,0xd3,0x73,0x1d,0x46,0xe5,0xc8,0x1e,0x1d,0x61,0xf1,0xda,0x53,0x3e,0x61,0xf0,0x9a,0xe4,0xb7,0x04,0xe9,0x5e,0xf6,0x11,0xa6,0x56,0x39,0xed,0xfb,0x06,0xd0,0x92,0xb9,0xb8,0xb5,0x3b,0x39,0xec,0xa5,0xc0,0xb1,0x7e,0x7e,0xfb,0x89,0x86,0xa8,0x70,0x47,0xa5,0x60,0x8c,0xf8,0x47,0x31,0x04,0x54,0x29,0xf3,0xa2,0x79 +.byte 0xac,0x24,0xda,0x33,0x6c,0x1c,0x34,0xc2,0xa0,0x96,0x27,0xbb,0x31,0xbf,0xc1,0xd9,0xc8,0x35,0xbc,0xb3,0x13,0x8a,0xb6,0x25,0x92,0xdc,0xcc,0x3b,0x8a,0x65,0xf3,0xf9,0xd1,0x2a,0xcd,0xb0,0xf4,0xd7,0x44,0xa0,0x27,0xfc,0x0e,0x69,0x46,0x0b,0x56,0x5b,0x58,0x40,0xd9,0xc4,0x37,0x9b,0x4d,0xa1,0x45,0xd8,0xab,0x4d,0x02,0x31,0x4f,0x93 +.byte 0x56,0xd0,0x26,0x99,0x1c,0xc7,0x2b,0xc2,0x80,0xb4,0xbd,0x6e,0xfe,0xa1,0xf7,0x8f,0x13,0x74,0x2c,0xa8,0x63,0xb1,0x3d,0x6d,0x32,0x4a,0x80,0x6a,0x7f,0xcf,0x6c,0x51,0xa9,0x21,0x34,0x4e,0x13,0x19,0x8f,0x33,0xfc,0x06,0x46,0x05,0xf0,0xcf,0xf1,0xce,0x20,0xe0,0x40,0xf2,0x0a,0xd0,0xf6,0xcc,0xcc,0xc2,0xc7,0x07,0x2e,0x9e,0x0a,0x1e +.byte 0x53,0x59,0xbb,0xe3,0x02,0xc8,0x20,0x9f,0x3c,0xe6,0xec,0xf7,0x8a,0x6d,0x3c,0x0f,0xb3,0x14,0x66,0x5c,0x51,0xbe,0x82,0xc2,0x0b,0x10,0x63,0xa9,0xd4,0x7f,0x12,0x88,0x13,0x81,0x8a,0x06,0x8a,0x7f,0xc8,0x89,0xe7,0xbd,0xce,0x51,0xdc,0x93,0x03,0x07,0x6f,0x8c,0xe6,0xcc,0x0d,0x45,0xa8,0xfc,0x02,0xe2,0x3e,0xa7,0xc8,0x83,0x77,0x98 +.byte 0x91,0x4e,0x1f,0x8d,0xed,0xa5,0x38,0x54,0x0e,0x4e,0x53,0x1c,0x0c,0x47,0x11,0x59,0x54,0x15,0xb5,0x47,0xb0,0x21,0xa1,0x3d,0xaa,0xef,0xee,0x9e,0x26,0x3c,0x39,0x75,0xff,0x1a,0x8c,0xbb,0x1a,0x49,0x62,0x21,0x76,0xe8,0x3d,0x10,0x55,0xf5,0x5a,0x44,0xf0,0xb3,0x81,0xd0,0x35,0x96,0x95,0x63,0xf7,0x50,0xb1,0xa0,0xf0,0x29,0x97,0xc9 +.byte 0x27,0x73,0xd8,0x29,0xef,0x74,0xd2,0x6d,0xf4,0xfb,0x72,0xa9,0x4f,0x12,0xd5,0xfd,0xc9,0xba,0xf0,0xbd,0xfd,0x5e,0x5c,0xfa,0x53,0xe3,0x96,0xab,0x57,0xc3,0xb6,0xe8,0x0e,0x43,0xe4,0x77,0x97,0x04,0x69,0xff,0x72,0xd0,0xd8,0xab,0xb9,0x19,0x25,0x89,0xf7,0xbb,0x01,0x03,0xf2,0xc6,0x8d,0xd5,0x86,0xe3,0xfe,0x9c,0xff,0x78,0xd7,0xfc +.byte 0xda,0xd4,0x69,0x8e,0xd6,0x31,0xfb,0x15,0xd3,0x38,0xfd,0x53,0xe2,0x4e,0xce,0xcc,0xfe,0x17,0xc5,0x88,0x92,0x28,0x98,0xb7,0xcf,0x7b,0x53,0x7b,0x96,0x14,0xaf,0xeb,0x5b,0x2d,0x16,0x41,0xcc,0x7b,0x65,0xe1,0x73,0x81,0x4e,0x8f,0xc3,0xad,0xe1,0x3f,0x0c,0xa7,0xbe,0x38,0xed,0x02,0x67,0xf5,0xfa,0x1d,0xb0,0xd5,0x4c,0xe1,0xd8,0x62 +.byte 0xc9,0xb5,0xf8,0x84,0xc4,0x51,0x57,0x14,0x11,0xf8,0x7d,0x1d,0xe7,0x81,0x85,0x61,0xa9,0x9f,0xc8,0x45,0xb9,0x2d,0x8a,0xc9,0xa3,0xfe,0x5a,0xf9,0xe0,0x1c,0x80,0xd8,0x77,0xaa,0x85,0xca,0x93,0x9a,0x2e,0x10,0x03,0x71,0x3d,0xb1,0x2a,0x64,0x2e,0xad,0x64,0xba,0x5c,0xaa,0x8a,0xc2,0x2a,0x80,0x28,0x2e,0xf9,0x93,0xe1,0x71,0x72,0xae +.byte 0xda,0xd8,0x4f,0x4c,0xec,0xb5,0xe3,0x05,0x10,0x5f,0x4c,0xe6,0xe1,0xf4,0x07,0x63,0x75,0x6f,0xc5,0xf9,0xcd,0xfc,0xfc,0x35,0x2f,0xe4,0xca,0x4b,0xfc,0xc3,0x20,0x8b,0x5c,0x4a,0x3c,0xf8,0x92,0xca,0x2b,0xb0,0xce,0xd9,0x4b,0xf0,0x44,0xcb,0x4e,0x83,0xf3,0x9d,0xb0,0xd4,0xab,0xba,0x2a,0x76,0xaa,0x87,0xcd,0xa2,0xd1,0x3f,0xa0,0xb9 +.byte 0xdb,0x7e,0x67,0x2d,0x92,0x4c,0xeb,0x3c,0xa6,0x8c,0x62,0x80,0x18,0x78,0x2b,0x9d,0x8f,0x5e,0xc3,0xa5,0x3b,0x10,0xb3,0x8a,0x3b,0x00,0x96,0xb2,0xab,0xce,0x8d,0xff,0x3c,0xee,0xeb,0x4f,0xfb,0xab,0x96,0x38,0x4c,0x15,0x6e,0x7c,0xf3,0x31,0x5f,0x8f,0x99,0x88,0x52,0x48,0x8b,0x71,0x1b,0x31,0x3f,0x7c,0xe4,0xae,0x9c,0x7b,0xeb,0x64 +.byte 0xe3,0x80,0xd4,0x56,0x9a,0x6a,0xd9,0xca,0xc5,0xf0,0x86,0xe7,0xda,0x80,0x8f,0x17,0x61,0xca,0x24,0x0b,0xb6,0xf9,0x24,0xc5,0x7a,0x28,0x42,0x32,0x7f,0x2b,0xde,0x44,0x30,0xed,0x69,0x63,0x07,0x3f,0xca,0x7b,0x02,0xea,0x6e,0xef,0x27,0x1d,0x76,0x32,0xc2,0x81,0x3d,0x03,0x9a,0xe7,0x0d,0x28,0x07,0x03,0x0c,0x65,0x73,0x58,0x26,0xc6 +.byte 0xfe,0xcc,0x33,0x7f,0x33,0xad,0xea,0x81,0x05,0xcc,0x61,0x1e,0x78,0x69,0x70,0xc9,0x1f,0x6e,0x4f,0xb8,0x19,0x42,0x03,0x03,0x9d,0x56,0x87,0x0e,0x9a,0x32,0x3a,0xba,0xb9,0x11,0x66,0x9f,0x4d,0xd1,0xb0,0x11,0xbf,0x46,0xfc,0xcf,0xe5,0xef,0xf1,0x61,0xeb,0xad,0x31,0x7c,0x0d,0x66,0x0d,0xa9,0x1f,0xe4,0xf9,0x80,0x9e,0xae,0x9e,0x34 +.byte 0x1e,0x95,0x6c,0xa2,0x77,0x69,0x84,0x77,0xb7,0xe8,0xca,0x1f,0xea,0xc1,0x34,0xe6,0x0d,0x4f,0xba,0x77,0x2b,0x8c,0xbe,0xff,0xc4,0x06,0xa3,0xb6,0x1a,0xbe,0x55,0x99,0x57,0x6f,0x54,0x24,0x93,0x7a,0x0d,0x52,0xd6,0xbb,0xd2,0x9c,0xd5,0x76,0x6a,0x22,0x66,0xdc,0x43,0x9a,0x7b,0x1b,0x11,0x80,0x02,0x0c,0x8f,0xc6,0xc6,0x02,0x42,0x29 +.byte 0x00,0xc4,0xb2,0xa1,0x6a,0x7f,0xa9,0x60,0x8d,0x41,0x4f,0xd3,0xde,0x33,0x5a,0x44,0x31,0xb0,0xdc,0xc0,0x0c,0x31,0x03,0x96,0x71,0x0a,0xce,0xe3,0x0b,0xc7,0xe3,0x5d,0xe0,0x88,0x4b,0xfd,0x4c,0x1a,0xce,0xaa,0x89,0xc6,0x99,0xa8,0xd3,0x1e,0xe9,0x6c,0x2a,0xbd,0x26,0x81,0x03,0x6a,0xf2,0xf2,0x0f,0x1e,0x9d,0x8a,0x59,0x45,0xbf,0x6d +.byte 0xb7,0xc8,0xec,0x77,0xb0,0x70,0x1a,0x31,0x21,0xeb,0x25,0x12,0xff,0x13,0x33,0x6b,0x47,0x34,0xd8,0x66,0x11,0x8a,0xc9,0x93,0x5b,0x2c,0x55,0x42,0xb2,0x9b,0x60,0xc6,0xba,0xab,0x12,0x12,0x5d,0x0a,0xd4,0x54,0x79,0x17,0x6d,0x31,0x7d,0x4f,0xf2,0x94,0x16,0x65,0x62,0x38,0x76,0x3a,0x7d,0x55,0x05,0xd9,0x17,0x45,0x62,0xb4,0x1d,0x31 +.byte 0x34,0x40,0xd3,0x8e,0xf9,0x29,0x4d,0x3f,0x93,0x9a,0x2e,0xa4,0x75,0x66,0xf6,0x62,0x8f,0xf9,0x8d,0x79,0x4b,0x51,0x7e,0xfb,0xeb,0x9a,0x86,0x96,0x01,0x79,0xbe,0xe4,0x42,0xb3,0xc8,0x28,0x9e,0xed,0xa8,0xb6,0x6d,0xd3,0x31,0xed,0x30,0x9e,0x6a,0x5b,0x02,0x4b,0xbd,0xb3,0xf2,0xf0,0x9d,0x50,0x09,0x40,0x71,0xfe,0x4b,0x91,0xc9,0xd6 +.byte 0x07,0x87,0x9e,0xdb,0xa9,0xcd,0x0b,0x95,0x18,0x5a,0x55,0x10,0xaa,0xe1,0x70,0xe9,0x2e,0xc2,0x31,0x6b,0x48,0x84,0x2f,0xe5,0x7b,0xdd,0x4c,0x03,0xed,0xb6,0xb6,0x64,0x24,0x38,0x7a,0x5a,0x15,0x35,0x9d,0x66,0x08,0x4d,0xa6,0x3c,0x96,0x1a,0xcd,0x02,0x61,0x40,0xde,0xac,0xc3,0x15,0x8c,0xca,0xe6,0x62,0xe9,0x61,0x68,0xf6,0x60,0xd3 +.byte 0x7e,0x5f,0x44,0xcf,0x09,0x01,0x60,0xc2,0xb1,0xfc,0x2f,0x41,0x4c,0xc1,0x06,0x72,0xcc,0xde,0x25,0xe0,0x8c,0x34,0xb8,0xe0,0xb2,0xeb,0x05,0x5d,0x9e,0x7e,0xf7,0x1e,0x24,0xcd,0x1b,0x14,0x3f,0x1b,0x13,0xc0,0x64,0x38,0x43,0x95,0xba,0x7b,0x61,0xa0,0xdc,0xe0,0xf5,0x80,0x13,0xa1,0xc5,0x48,0x92,0xc5,0xd5,0xd0,0x87,0x0c,0x73,0xae +.byte 0xe2,0xb3,0xe8,0x70,0x4a,0x7e,0xa0,0x13,0xc3,0xc6,0x9c,0x77,0x51,0xca,0x88,0xcf,0xe0,0x1e,0xff,0x6c,0xe2,0xc3,0x33,0xce,0x7f,0x3e,0x7d,0xd5,0x37,0x23,0x09,0xb7,0xbd,0xb7,0xec,0x9a,0x29,0xd6,0x4f,0xea,0x79,0x24,0x4c,0x09,0x74,0x9c,0x97,0x3b,0x08,0x1f,0x82,0xcc,0xae,0xc4,0x3f,0xcf,0xc6,0xcb,0xaf,0x8c,0x89,0x15,0x79,0xeb +.byte 0x88,0xb9,0x03,0xab,0xc6,0xf8,0x6e,0x54,0xde,0x50,0x6e,0xcf,0x8a,0x4b,0x3f,0x64,0xd0,0xcb,0x69,0xc2,0xe3,0x40,0x4a,0x94,0xe2,0x04,0xfa,0x9b,0x4a,0xf6,0x2b,0x93,0x0c,0x0e,0xf8,0x68,0xbc,0x6e,0x6c,0xe6,0xd9,0xb6,0x04,0x40,0xf4,0x60,0xbc,0xc1,0x1e,0x67,0x1f,0xce,0x5c,0x4d,0xba,0x78,0xa8,0xf5,0x96,0x00,0xb9,0x61,0x82,0x65 +.byte 0xb2,0x1d,0x42,0xb8,0x88,0x66,0x43,0xd9,0xfe,0xe0,0x86,0xef,0x5d,0x4d,0xcc,0xeb,0x57,0x9a,0x2b,0x27,0xf2,0xcf,0x68,0xc3,0x05,0x92,0x4d,0x4d,0xb7,0x46,0x7e,0xfd,0xb7,0x4a,0x4d,0x6f,0xac,0xc8,0x8d,0xf2,0xcd,0x52,0xcf,0x91,0x77,0x2d,0x68,0x06,0x7a,0xc9,0xf3,0x17,0xc6,0x8f,0x8f,0xb5,0x8f,0x74,0xfa,0x90,0xcc,0xfc,0xaf,0x4e +.byte 0xd2,0x29,0xd9,0x57,0x71,0xe9,0x52,0xd8,0x50,0xfa,0x4d,0x13,0x7c,0x42,0x15,0x22,0x65,0x26,0x08,0xda,0xaa,0x53,0xcf,0xeb,0xd1,0x87,0xd5,0x7c,0x4e,0x66,0x1c,0x7d,0xc9,0x03,0x59,0xf8,0x09,0x3e,0x1b,0x94,0x4c,0x39,0x56,0xeb,0xfd,0xb6,0xd0,0xf9,0x76,0x8b,0x5d,0x6e,0x44,0x15,0xcf,0x27,0x7f,0x69,0x9a,0x00,0x96,0xbe,0x80,0x5e +.byte 0xbb,0x5a,0x05,0xea,0x15,0xdd,0x44,0x69,0x9e,0x64,0xcd,0xba,0xf2,0x6f,0x67,0x10,0xc5,0xa1,0x75,0x85,0x5f,0xdc,0x61,0x43,0x34,0xc3,0x52,0x06,0xd4,0xe9,0x9f,0xdf,0xd4,0xa6,0x96,0xac,0xb1,0x21,0xdd,0x20,0x46,0x20,0x89,0x5f,0x0e,0x9d,0xa8,0xc7,0x75,0x3a,0x54,0x9e,0x7c,0x3a,0xd5,0xb2,0x68,0x77,0x06,0x1b,0x1c,0xbd,0xb3,0x02 +.byte 0xb5,0xdd,0x87,0x55,0x6b,0x00,0x9f,0x2c,0x30,0xb7,0x4e,0xc3,0x67,0x38,0x37,0x61,0x81,0x68,0xcb,0x14,0x81,0x27,0xd7,0x38,0x18,0x81,0x68,0x45,0xca,0xf4,0xaa,0xae,0x58,0x9e,0xf8,0xbe,0xe9,0x1e,0x05,0x19,0xf0,0xea,0x89,0xf8,0xa1,0x9c,0x7b,0x63,0xc1,0xcd,0x81,0xc8,0x95,0x56,0x81,0x81,0x29,0xb0,0x4d,0xbf,0xe6,0x8d,0xa3,0xb3 +.byte 0xfa,0xae,0x13,0xc8,0xca,0x4d,0x5c,0x5e,0xd9,0x17,0xf8,0x87,0xdb,0x5b,0xe2,0xd9,0xba,0xe3,0xe8,0xdb,0xcb,0x74,0x36,0x7e,0x0e,0x3a,0x94,0x6a,0xe9,0x9e,0x50,0x8e,0xf4,0xd4,0x15,0xb7,0x50,0x60,0x3f,0x14,0x72,0x41,0x9d,0x51,0x63,0x8c,0x31,0x95,0xf2,0xbc,0x14,0xc7,0x64,0x2c,0xee,0x0b,0xe6,0xde,0xf6,0x33,0x85,0x65,0x00,0x54 +.byte 0x54,0x84,0x85,0x94,0x87,0xa0,0xc3,0x95,0x4e,0x74,0xcb,0x2d,0x82,0x9e,0x46,0x7f,0xf5,0x64,0x60,0xfe,0x1a,0x37,0xee,0xa7,0xb6,0x85,0xb5,0x4e,0x30,0x11,0x39,0x4b,0xe9,0x57,0x18,0x3a,0x2c,0x6b,0xb9,0x8e,0x5a,0x54,0xa9,0x31,0xf7,0xe1,0xe0,0xc7,0x52,0xfe,0x76,0x9b,0xc6,0xfe,0xde,0xe0,0xe9,0xf9,0xf6,0x10,0xda,0xef,0x72,0x24 +.byte 0x9c,0xbe,0x4a,0xba,0x58,0x21,0x1b,0xe3,0x1d,0x80,0x10,0x76,0x70,0xde,0x8f,0xf3,0x07,0x93,0x01,0xe0,0xb4,0xd9,0x7d,0x60,0x0d,0x08,0x07,0xa4,0x6d,0x9b,0x2b,0x8c,0x9a,0x58,0x65,0x5e,0x29,0xf1,0x24,0xb2,0x31,0xfb,0xb7,0xad,0xf0,0x50,0x8e,0x25,0x1b,0x75,0xc5,0x82,0x88,0x8c,0x68,0x14,0x2c,0x28,0xa2,0xb6,0x93,0x14,0xe3,0x28 +.byte 0xd0,0x95,0x6f,0x79,0x91,0x03,0x75,0x82,0x5c,0x20,0x46,0x0d,0x53,0x40,0x2c,0x88,0x62,0xa4,0x8c,0xd5,0xf1,0xc1,0xbf,0xde,0x57,0x91,0xb2,0xa6,0x66,0x29,0xf0,0x6b,0xb8,0x5e,0x78,0x5f,0xd1,0x76,0x98,0xf2,0x56,0xc2,0x5f,0x48,0x1f,0xa6,0x98,0xb0,0x87,0x53,0x13,0x1d,0x1a,0xa7,0xdf,0xa5,0xea,0x37,0x12,0x6d,0x64,0x53,0xdc,0x04 +.byte 0x2d,0xb9,0xeb,0x78,0x89,0x7b,0x70,0xd2,0x6d,0x45,0x8d,0x45,0x50,0x57,0xc7,0xb2,0xaf,0xdd,0x72,0x0f,0x9f,0x1b,0x29,0x61,0x68,0xb5,0x4a,0xd4,0xe9,0xd7,0x10,0xe7,0xcd,0xe8,0x22,0xd3,0x54,0x0c,0x0b,0x32,0x77,0x7d,0x3e,0xed,0x6e,0x79,0x4b,0x7b,0x99,0x1f,0x9e,0xbe,0xe7,0x12,0x7c,0x94,0x36,0x1c,0x20,0x8a,0xd0,0xab,0xda,0x95 +.byte 0xf6,0x4f,0xbe,0x6f,0x44,0x0b,0xa3,0x7b,0x4d,0x00,0xf6,0xdf,0x6f,0xc8,0x50,0x9e,0x3e,0x0c,0x1e,0xfe,0xb8,0x39,0x9f,0x83,0x4f,0xb3,0x1f,0x7e,0x53,0x54,0x64,0x04,0xa3,0xf7,0x79,0x01,0x71,0xce,0x18,0x0d,0x47,0x4e,0xae,0x88,0x6a,0xe7,0x26,0x4e,0x59,0xee,0x3a,0x03,0xc2,0x4d,0x0c,0x29,0xf0,0x96,0x9d,0xc0,0xa3,0xb3,0x82,0xf9 +.byte 0xc4,0xf8,0x8b,0xae,0x68,0x47,0x39,0xdc,0x10,0xd7,0x09,0xb4,0x86,0x87,0xfa,0x7e,0x0c,0xe4,0xee,0x3a,0x35,0x1a,0x0e,0x95,0x88,0xce,0xe7,0x9e,0xcc,0xa5,0x58,0x98,0x48,0xbd,0x9c,0x27,0xe6,0xb9,0xf7,0xca,0x66,0xee,0x54,0x87,0xd0,0x6d,0xab,0x31,0x1a,0x57,0x33,0x8b,0x89,0xa0,0xc0,0x18,0x9a,0x87,0x5e,0x58,0x02,0xe5,0x50,0x47 +.byte 0x0f,0x60,0x53,0x9d,0x99,0xe4,0x0a,0xfa,0x4a,0xc3,0x77,0x4b,0x4d,0x4e,0x0c,0xbb,0x68,0xd9,0xb3,0xd3,0x59,0x78,0xdf,0x65,0x97,0x6e,0x22,0x5b,0x24,0x26,0xf9,0x2a,0x14,0x73,0xa7,0xec,0x65,0xfc,0xdf,0x7d,0x35,0x0d,0x44,0x1b,0x4b,0xad,0x6b,0x8f,0x0e,0xa3,0x3b,0x6b,0x40,0xb3,0xe3,0xd9,0x41,0xba,0xbf,0x95,0xbb,0x6e,0x91,0xf6 +.byte 0x63,0xb3,0xde,0xdb,0xc2,0x6f,0xfe,0x00,0xf1,0x53,0x96,0x37,0xa4,0x27,0x48,0x3e,0xf9,0x32,0x23,0x90,0x90,0xe0,0x01,0xde,0x08,0xad,0xc4,0x6c,0x25,0x7a,0x7f,0x2f,0xb7,0xb7,0xc6,0xaf,0xeb,0x91,0x9c,0xa2,0x9c,0xf7,0x7f,0x9f,0x74,0x9b,0x7d,0x54,0x66,0xf9,0xe0,0x73,0xb4,0x15,0x2b,0xaa,0x71,0x50,0xd0,0x74,0x5d,0xcd,0x1c,0x09 +.byte 0x4c,0x80,0xcc,0xdc,0x10,0xd9,0x96,0xb3,0xdc,0x09,0x73,0x1f,0x36,0x4c,0x1b,0x86,0x25,0x13,0x7c,0xd2,0xc6,0x9d,0x5a,0xce,0xd6,0x22,0x97,0x66,0x7b,0x7b,0x84,0xba,0x69,0xd2,0x87,0x9b,0x08,0xda,0x77,0x66,0x90,0xbc,0x7c,0x3c,0x5d,0x43,0x92,0x5f,0x05,0xfb,0x23,0x46,0x88,0xf7,0xa4,0x10,0xbd,0x7d,0x00,0x29,0x2d,0xa5,0x6a,0xab +.byte 0xcc,0xdd,0xcf,0x1e,0x2b,0x9b,0x5f,0xa9,0x94,0x14,0x99,0x6e,0x3b,0x41,0x52,0x61,0x16,0x17,0x44,0xcf,0x5b,0x34,0x5c,0x27,0x29,0x4a,0xc3,0xba,0x9a,0x0c,0x20,0x17,0x2b,0x92,0xd9,0xf1,0x76,0x51,0xd8,0xa5,0x4a,0x4b,0x4a,0x0b,0xe4,0x6b,0x93,0x61,0xc7,0xb3,0x23,0x7a,0x24,0xfa,0x5e,0xee,0x80,0x10,0x65,0x44,0xa5,0xed,0x72,0xd9 +.byte 0x8a,0x06,0x2a,0x86,0xa9,0x26,0x50,0xa1,0xb2,0xb2,0x8b,0x7b,0x4a,0x29,0xf1,0x18,0xef,0xff,0x61,0xf1,0xa1,0x48,0x0f,0x84,0x8c,0xef,0xd8,0x02,0x65,0x44,0x11,0xf2,0xe1,0xba,0x98,0x03,0xbe,0x5a,0x5d,0xb8,0x0a,0x88,0xd8,0x4a,0x49,0x4c,0x70,0xa6,0x98,0x81,0x36,0x56,0x92,0xde,0xcb,0xaf,0x33,0xf5,0x1c,0x0a,0xce,0x7a,0xc0,0xff +.byte 0x24,0x54,0xd3,0x9a,0x0f,0x82,0x76,0xe5,0x0e,0x82,0xb4,0xfe,0xc2,0xac,0xe4,0xba,0xa3,0x4c,0x8a,0x0d,0xa7,0x3e,0x2b,0x71,0x73,0x5f,0xd2,0x35,0xd3,0xae,0xc0,0x3e,0x6f,0x67,0x98,0x51,0xa6,0xdf,0xb2,0xf4,0xd2,0xc1,0x43,0xe2,0x0a,0x7c,0xa0,0xb6,0xff,0xfc,0xc0,0x88,0xe5,0x34,0x20,0x79,0x50,0xc3,0x06,0x5b,0x20,0x9f,0x05,0x33 +.byte 0x22,0x30,0xaf,0xc4,0xc3,0x17,0x09,0xbb,0x30,0x0f,0x42,0xb7,0xc1,0xe0,0x4c,0x71,0xc5,0xf7,0x96,0xb4,0xd4,0x0f,0x44,0x47,0xa3,0x06,0x17,0xbd,0x0f,0x7c,0xc6,0x53,0x07,0x34,0x9a,0x9a,0x2f,0x3f,0x01,0xea,0xdf,0x1c,0x06,0x33,0x15,0x9c,0x5a,0xe3,0x33,0x29,0xce,0x40,0x4b,0xb1,0x99,0xe0,0x80,0x6e,0x0c,0xa1,0x4c,0x34,0x01,0x21 +.byte 0x12,0xbe,0x67,0x26,0xe6,0xdb,0xab,0x8d,0x45,0xdd,0x12,0x60,0x02,0x1a,0xdd,0x85,0xd6,0x33,0x78,0x23,0xe1,0x58,0x2a,0x46,0xf0,0xc2,0x4d,0x71,0x59,0x5b,0x8d,0x65,0xa7,0x97,0xf4,0x71,0x88,0x7d,0x60,0xe0,0x2d,0x2d,0x09,0x2f,0x26,0x15,0xa7,0xbf,0x30,0x0b,0x99,0x08,0xd7,0x85,0xfc,0x0c,0x19,0x31,0xde,0x5e,0x55,0x91,0x13,0x45 +.byte 0x3a,0x6d,0xd0,0x61,0x02,0x81,0xa0,0x42,0x7d,0xd8,0x7d,0x41,0x11,0xd2,0x25,0xb7,0x15,0xa1,0x16,0x3e,0x70,0x77,0x1b,0x80,0xb7,0xf1,0x24,0x8e,0x70,0x8d,0x73,0x6d,0xba,0xf1,0x46,0x32,0x60,0xe4,0xc8,0x4d,0x69,0xc8,0x10,0xf8,0x2d,0x53,0xe1,0x81,0x96,0x20,0x9d,0x59,0x74,0xae,0x93,0x92,0x44,0x5a,0x09,0x79,0x20,0xcb,0xff,0xb2 +.byte 0x08,0x7a,0x81,0xee,0x98,0x83,0x0b,0xa4,0x15,0xb0,0xaa,0x55,0xb0,0xb5,0x60,0x09,0x21,0xeb,0xe2,0x9b,0x57,0x41,0xb9,0xb4,0xd9,0xbe,0x7d,0x60,0x5d,0x25,0xde,0x9f,0x9e,0x5b,0x7c,0xee,0xeb,0x87,0x54,0x6a,0xc3,0xcf,0xec,0x57,0xce,0x97,0x2e,0x47,0x84,0x4c,0x15,0xf4,0xf5,0xe9,0xd4,0x45,0x23,0x20,0xf0,0x0f,0xda,0x97,0xc2,0xb9 +.byte 0xb2,0xe2,0x44,0xea,0xbd,0x95,0x73,0xcc,0x94,0x03,0x0b,0x97,0xeb,0x03,0xc1,0x51,0xc8,0x14,0xa6,0x7d,0x18,0x30,0xa1,0xda,0xa3,0xcd,0x78,0x67,0xb0,0xc1,0x6c,0x88,0xdd,0xd6,0x52,0x4b,0x85,0x1d,0x4a,0xaa,0x44,0xec,0x3b,0xff,0x00,0xd8,0x9e,0x18,0xf8,0xac,0x4f,0x73,0x6d,0xc7,0x4b,0x59,0x15,0x85,0x87,0x02,0xd8,0xf1,0xe6,0xfb +.byte 0x66,0x57,0xcf,0x06,0x84,0x50,0xc5,0x67,0x94,0xc6,0x96,0xb2,0x1a,0x37,0x06,0x3d,0x21,0xf2,0x1e,0xb4,0xe7,0xcb,0x36,0x8b,0xa3,0xe3,0x84,0xa0,0x9a,0x31,0xdb,0x87,0xf9,0xb0,0xef,0x06,0xfe,0xb0,0x8a,0x32,0x53,0xb4,0x41,0x79,0x6b,0xf7,0x7c,0xf7,0x9c,0xc1,0xea,0x61,0xf3,0x75,0xac,0x1f,0x92,0x75,0x44,0x58,0x9a,0x20,0xa4,0x20 +.byte 0xe3,0x19,0x1c,0x0d,0x27,0xe5,0x2e,0xbd,0x14,0xcb,0x40,0x3f,0x1c,0x19,0x7c,0xf9,0x92,0x13,0x1a,0x71,0x87,0xaf,0x77,0x0f,0x50,0x92,0x06,0x75,0x2d,0x75,0xe0,0x2e,0x37,0x54,0xcd,0xac,0xcb,0xca,0x7c,0x0e,0x66,0x53,0x10,0x50,0x70,0x9a,0xa4,0x79,0x76,0x87,0x71,0x4a,0x55,0xd4,0xa3,0x83,0xb3,0x04,0xed,0xa9,0xd6,0x84,0x7d,0x1a +.byte 0x64,0x5d,0xf7,0x4f,0x55,0x97,0x5e,0x26,0x9c,0x03,0x42,0x0a,0x16,0xd3,0xdf,0xc8,0x07,0xb8,0xb3,0xe9,0xac,0xa9,0x99,0x83,0x32,0x5b,0x83,0xde,0x7f,0x2b,0x70,0xca,0x15,0x09,0x33,0x0e,0x28,0xc9,0x89,0xc6,0xa6,0x47,0xd1,0x56,0x04,0x40,0x5d,0xd2,0x17,0x1d,0x32,0x21,0x6d,0xb2,0xc7,0x89,0x14,0x98,0xc6,0x58,0xc4,0xca,0xda,0x0f +.byte 0x32,0xdd,0xe1,0xe1,0x9a,0x25,0x09,0x31,0x16,0xf1,0x48,0x40,0x1c,0xc2,0xf9,0xd0,0xba,0xec,0x07,0x94,0xea,0x17,0xcf,0x6e,0xbc,0xfd,0x70,0xb4,0xbb,0x40,0xae,0xc3,0xae,0xf7,0x56,0xf5,0x13,0x55,0xfb,0x4b,0x81,0x5d,0xab,0xf2,0x3f,0xd7,0xa7,0xe6,0xcf,0x17,0xef,0x1f,0x71,0x1b,0x92,0x67,0xd3,0xd2,0xed,0x89,0x14,0x8f,0x8d,0x83 +.byte 0xef,0x7f,0xca,0x65,0x6d,0x79,0x13,0x5f,0x6e,0xf9,0x5d,0x9a,0x68,0x54,0x71,0x5c,0x9d,0x03,0x7c,0x73,0x7a,0xc2,0x17,0x9b,0x5a,0x7d,0x45,0x24,0x0c,0x41,0x13,0xe4,0xcb,0xdb,0x7b,0xc6,0xfb,0x93,0x48,0xca,0xd3,0x01,0x68,0x3f,0x36,0xc0,0x4b,0x1d,0xfa,0x9f,0x25,0x0e,0xcc,0xd0,0xf7,0xa0,0x7a,0x14,0xac,0xd7,0x6e,0x00,0x9f,0xf1 +.byte 0xc0,0xdc,0xfc,0x3b,0xd9,0xbf,0x68,0xfd,0x65,0x34,0x66,0x18,0xe5,0x02,0x9a,0x2d,0xff,0xaa,0xf7,0x73,0x58,0x21,0xe3,0xff,0x23,0x0f,0x63,0x1f,0xf3,0x8b,0x08,0xc7,0x00,0x46,0xe7,0xef,0x85,0x5f,0x7f,0xd9,0x5f,0xc2,0x36,0xe2,0xb6,0xa3,0x00,0xcb,0xff,0xe0,0x22,0x28,0x8c,0xb1,0xb1,0x17,0x91,0x4a,0x4a,0xc8,0x77,0x5a,0xa9,0xb2 +.byte 0x6e,0xb7,0xf0,0x4f,0x70,0x34,0x7f,0x87,0x2a,0x0c,0xcb,0x16,0x24,0x9b,0x41,0xb2,0x3e,0x0a,0xc1,0x33,0xf3,0xbb,0x48,0x17,0x2f,0xe6,0xfc,0xf4,0x27,0xc0,0xdb,0x58,0x24,0x9b,0x99,0x43,0x25,0xfb,0xd3,0xcf,0x1c,0x5a,0x5f,0xbe,0x28,0x3a,0x84,0x51,0x19,0xc3,0x53,0x6b,0xc8,0x73,0x44,0x6e,0x3d,0x7e,0x01,0x37,0xc2,0x2b,0xf7,0xa8 +.byte 0x1f,0x8e,0xd8,0x02,0x5a,0xae,0x56,0x81,0x2b,0x46,0x1b,0x7d,0xca,0x27,0x1f,0x48,0x99,0x24,0x54,0x59,0x08,0xfd,0xb7,0xdf,0x0a,0x77,0xef,0x4e,0x89,0x21,0x71,0x71,0x3f,0x8c,0xd7,0x52,0x89,0x7a,0x0d,0x68,0x09,0xc8,0x88,0x9c,0x0c,0x60,0xca,0x77,0x96,0xeb,0x05,0xeb,0xeb,0x60,0x5b,0x68,0x51,0x2c,0xcb,0x8f,0xca,0x3b,0x18,0x39 +.byte 0x28,0x8f,0xda,0x17,0x9b,0x53,0x71,0x26,0xa9,0x19,0xfb,0x1e,0x4a,0xd0,0x14,0x93,0x1c,0xee,0xe1,0x21,0xea,0xb3,0x16,0x47,0xaf,0x50,0xe5,0xe5,0xd3,0x21,0x8c,0x67,0x46,0x5d,0x97,0x19,0xda,0x6e,0xd9,0x70,0x7d,0x9f,0xd6,0x25,0xd0,0xfb,0x01,0x62,0x0a,0x9e,0x49,0x3d,0x33,0x0d,0x35,0xe5,0xae,0xfd,0xeb,0xb5,0x9b,0xd8,0xc1,0x2a +.byte 0xee,0x4d,0xf2,0xfc,0x16,0x51,0xab,0x58,0x7a,0x9e,0x5c,0xca,0x0a,0x92,0xbb,0xbb,0xa8,0x5b,0xfb,0xf9,0x33,0x67,0x0e,0x13,0x4c,0x83,0x3a,0x25,0x84,0x23,0xe1,0x41,0xfb,0xf1,0x42,0xc1,0x8d,0x58,0x0c,0x5e,0x75,0x09,0x34,0x58,0x96,0x32,0x54,0xb6,0xd8,0xaa,0x48,0xc1,0xed,0xc0,0x92,0x5a,0xec,0xeb,0xb1,0x75,0x59,0xf6,0x35,0xf5 +.byte 0xfd,0x7d,0x96,0x9b,0x83,0x38,0x31,0x10,0xa4,0xd7,0xfb,0x28,0xf0,0xc9,0xe4,0x33,0x5d,0x66,0x81,0x9c,0x31,0x9a,0xe9,0x9a,0x5e,0x70,0xf7,0x61,0xf9,0x93,0xaf,0x2b,0xbd,0x78,0x9e,0xdc,0x61,0xe0,0xa9,0xd1,0xa0,0x8e,0x3a,0x5f,0xb1,0x71,0xe7,0x9e,0xfd,0x81,0xee,0xf0,0xd6,0x63,0xec,0x4a,0xca,0x30,0xaf,0xb6,0x2d,0xaa,0x2d,0xa1 +.byte 0x5a,0x38,0xb5,0xc6,0x3f,0x5f,0x63,0x48,0xd3,0x18,0xeb,0xe3,0x36,0xca,0x91,0x86,0x4b,0x6f,0x57,0x66,0x47,0x2f,0xce,0xe4,0x44,0x26,0xe4,0xfd,0x8c,0xde,0x74,0xdc,0x17,0x0e,0x7d,0x6a,0xcf,0x89,0x0e,0x7f,0x09,0x65,0xf8,0xeb,0x58,0x00,0x3d,0xc5,0x1b,0x14,0xc5,0xca,0xca,0x28,0xbc,0xb7,0x63,0x6f,0x3b,0xa4,0x62,0x23,0x0e,0xd5 +.byte 0x04,0x76,0x0c,0xe8,0xea,0x64,0x10,0x3a,0x76,0x03,0xd6,0xea,0x69,0x52,0x14,0xa7,0x5e,0x40,0x7e,0x14,0xdb,0x7f,0xbf,0xe8,0xf6,0xf0,0xdd,0x5e,0xac,0x55,0x44,0xfb,0x28,0xf3,0x16,0xcb,0xed,0x8f,0x10,0x01,0x91,0xac,0x2c,0x27,0x46,0x0c,0x51,0xd6,0xf6,0x30,0xa3,0x34,0xd0,0x5e,0x93,0xe8,0x4e,0xc0,0xb4,0x9b,0xc1,0xe8,0x20,0x7d +.byte 0xb7,0x68,0xdd,0xf1,0xc4,0x60,0x20,0x97,0xdd,0x5c,0x7c,0x9b,0xea,0xc0,0x22,0x84,0x2c,0x65,0x78,0xbd,0x18,0xa1,0x62,0x7e,0x06,0x49,0x96,0xde,0xd1,0x89,0x06,0x0d,0x35,0xa0,0xcc,0x22,0xd3,0xf5,0xa6,0x4b,0xb6,0xca,0x43,0x34,0x5a,0x3d,0x39,0x95,0x0b,0x95,0xbe,0xdc,0xe6,0x61,0x72,0xbe,0x2f,0x19,0x1c,0xe8,0x22,0x5e,0x18,0xc9 +.byte 0x59,0x4a,0x08,0xa3,0x85,0x5c,0x06,0x36,0x00,0x2e,0x84,0x3e,0x3e,0x07,0x5b,0xfa,0xda,0xbb,0xbb,0x57,0x20,0x6f,0x1b,0x8d,0xe5,0xc5,0xdb,0x8d,0x23,0x1a,0xfc,0x67,0xa9,0xc8,0xea,0xe1,0x54,0xbb,0x8a,0x8a,0x0b,0xa6,0x02,0x35,0xd6,0xd5,0x4d,0xff,0x09,0x79,0x31,0x9a,0xc2,0xad,0xa7,0x66,0xb5,0x3c,0xbd,0xb7,0xcb,0x17,0x30,0x4b +.byte 0x56,0xf5,0xd2,0x51,0x90,0xbb,0x47,0x00,0xc0,0xf3,0x8b,0xd7,0x10,0x33,0x6d,0xe8,0xe4,0xcf,0xd6,0xbf,0x35,0x75,0x8d,0x40,0x55,0xd7,0x5d,0xb0,0x40,0xf6,0x95,0xfb,0x1a,0x97,0x24,0xb8,0xc1,0x91,0x5f,0x66,0x6c,0xc7,0xdb,0x16,0xba,0xb8,0x07,0xf8,0xf8,0x91,0xb2,0x8c,0x26,0xb9,0xa2,0x59,0xb0,0xde,0x49,0x63,0xcc,0x7c,0x4c,0x48 +.byte 0xb5,0xe4,0xf9,0x81,0x28,0x48,0x9f,0xa0,0xa4,0xf8,0x0d,0xcc,0x7b,0xf3,0xce,0x08,0x85,0x73,0x4a,0x64,0xfc,0xa8,0xc0,0xae,0x7a,0xbf,0xa5,0x3f,0x45,0xaf,0xe7,0x7f,0x41,0x61,0x34,0x08,0x6e,0x09,0x0d,0x9d,0xea,0x90,0xbe,0x62,0x7c,0x38,0x92,0xa7,0x63,0xfa,0x03,0x80,0x10,0xc4,0x53,0x46,0x0b,0x44,0x88,0xea,0x50,0xb6,0x82,0xf8 +.byte 0x0b,0x2d,0x93,0x63,0x82,0x80,0x2b,0x61,0x3e,0x17,0xd1,0xd8,0x6c,0xb1,0xb4,0xbd,0xfd,0xad,0x1c,0x10,0x30,0xc1,0x78,0xd4,0x5f,0x21,0x49,0x54,0x7a,0x08,0x2b,0x25,0x3b,0xc9,0xb7,0x0a,0xf2,0x37,0x83,0xc0,0x43,0x73,0xee,0xd6,0x8b,0x92,0x15,0xde,0xfe,0x14,0xf1,0xfb,0x8b,0x4a,0x85,0x8d,0x78,0xe6,0x36,0x1a,0xbb,0x32,0x6c,0xdd +.byte 0x43,0x76,0xad,0x68,0x90,0x08,0xd2,0xbd,0x24,0x41,0xd4,0x93,0x17,0xa8,0x9f,0xeb,0x33,0x25,0x1f,0x1a,0xfd,0x45,0x20,0xc1,0x47,0xf1,0x25,0x09,0x89,0x14,0x9e,0x4c,0x88,0xa4,0x1c,0xb8,0xba,0x84,0xd5,0x7d,0x73,0xb2,0x9c,0x48,0x9f,0x84,0x31,0xd3,0x2c,0xe1,0x94,0x61,0x3e,0x5f,0x37,0x25,0xc7,0xb7,0x2d,0xc3,0xa9,0xaf,0xcc,0x0e +.byte 0xe6,0xc7,0x9a,0xa7,0x06,0xe3,0x41,0xb8,0xa6,0xa8,0x9a,0xe7,0x76,0xef,0x83,0x5a,0x80,0xa4,0xe3,0x0c,0x04,0xa2,0x0b,0x91,0x33,0x34,0x17,0xa4,0x02,0x2d,0x12,0x84,0x67,0x85,0x6b,0xc0,0x3a,0x0d,0x16,0xf2,0x66,0x04,0x71,0xe9,0xec,0xa6,0xbb,0x58,0x42,0x92,0x70,0xf5,0x0d,0x52,0xcd,0x1e,0x2d,0xd4,0x28,0x0f,0x68,0x35,0xd9,0xa4 +.byte 0x40,0x09,0x30,0xe9,0xbb,0xaf,0x77,0x63,0x4f,0xba,0x56,0x97,0xe8,0x92,0xcc,0xba,0xdb,0xe4,0xe0,0xdf,0x19,0x21,0x71,0x23,0x3d,0xd0,0xb1,0x25,0xd3,0xf8,0x53,0x01,0x30,0x9a,0xea,0x84,0x1b,0x18,0x68,0x4a,0xb9,0x9e,0x60,0xc4,0xfc,0xf7,0x56,0xb7,0x49,0xe1,0x50,0x38,0x7d,0x3d,0x87,0xa2,0xad,0x38,0x5c,0x0c,0x53,0x21,0xa0,0x56 +.byte 0x3a,0x94,0xd7,0xa8,0x23,0x96,0xa9,0x66,0x4e,0x88,0xae,0x4b,0x6e,0xcb,0xc6,0xa6,0xdb,0x1f,0x2e,0xae,0xe7,0x24,0xe2,0x1e,0xf7,0x3a,0x14,0x48,0x5e,0xfa,0x90,0x0a,0x84,0xa6,0x1c,0xaa,0x60,0xc0,0x2c,0x69,0xe8,0x36,0xb3,0xee,0x55,0x2a,0xf7,0x90,0xa1,0x92,0x4f,0x29,0x1e,0x49,0x6e,0x73,0x22,0x1f,0x8b,0x0c,0xb6,0xf4,0x3c,0xbf +.byte 0x82,0x47,0x49,0xc3,0x94,0x0e,0xcf,0x9b,0x86,0x88,0xc2,0xd0,0xd7,0xa7,0x43,0xfb,0x89,0x4b,0xbd,0x5d,0x4c,0x6b,0x7a,0xc7,0x74,0x1b,0xfb,0x48,0x12,0x68,0x61,0x91,0xf9,0xf3,0xb6,0x7f,0x4f,0x72,0x89,0xf0,0x72,0x46,0xf7,0x6f,0x84,0xd1,0x38,0x6d,0xd9,0x1b,0xa5,0xd1,0xe2,0x29,0xe0,0xa6,0xbf,0x1c,0xbd,0xfb,0xdd,0xdc,0xa5,0xae +.byte 0x7a,0x9c,0xd0,0xc3,0xfa,0x6f,0x72,0xa3,0xa2,0x8b,0x87,0x0d,0x9a,0x6a,0xfc,0x53,0x9a,0x08,0x61,0x86,0x67,0x2a,0x90,0x6a,0x09,0x20,0x8e,0xde,0x32,0x35,0x34,0x75,0xc0,0xa8,0xab,0x1b,0xc4,0x7c,0xc8,0xd9,0x90,0xcf,0x32,0x27,0x6c,0x68,0xf9,0x18,0x14,0x05,0x57,0x39,0xc6,0x9e,0x5e,0x38,0x07,0xdb,0x81,0xb4,0xa4,0x54,0x06,0xd6 +.byte 0x79,0x78,0x0e,0xc8,0xb9,0x56,0xda,0x08,0x2e,0x77,0x26,0xcc,0xf7,0xa5,0x2d,0xd8,0x91,0xa6,0xfc,0x25,0x0e,0x91,0xdd,0x3c,0xa8,0x14,0x7a,0x95,0x05,0x5b,0x15,0x7d,0x1d,0x9b,0x3c,0x8c,0xfd,0xdc,0xa5,0xcd,0xec,0xea,0x7a,0x2b,0x7e,0x79,0x21,0x54,0xea,0x7f,0x52,0xb4,0xbb,0x4f,0x07,0x95,0x39,0x4a,0xaf,0x2e,0xb4,0x1e,0x9e,0xc6 +.byte 0x0a,0x07,0x58,0xd4,0xa5,0x44,0x73,0xa8,0x84,0x26,0x67,0xb8,0x0f,0xc7,0x6b,0xa7,0x28,0xf6,0x05,0x91,0x3e,0x22,0xcd,0xd7,0xf5,0xfc,0xae,0x22,0x42,0x96,0x3b,0x57,0x91,0xce,0x44,0xd0,0xfd,0xc3,0x4c,0x8b,0x8b,0x67,0xfe,0x03,0x86,0x92,0x34,0xf7,0xf9,0x53,0xb3,0xdf,0x36,0xcf,0x16,0x1c,0x68,0x36,0x17,0x1f,0x41,0x56,0x1d,0xda +.byte 0x90,0xb3,0xab,0x03,0x97,0x88,0x23,0x65,0x89,0x72,0xe3,0x6d,0x8e,0x37,0x5d,0xee,0x89,0x81,0x11,0x27,0x8b,0xf0,0x9b,0xef,0xa2,0x34,0x45,0xcc,0x41,0xcf,0x2a,0x88,0x70,0xe4,0x78,0xfc,0xe1,0xb5,0x51,0x70,0x84,0x64,0xd1,0x10,0x71,0x5d,0xa4,0xb4,0x6d,0xb5,0x98,0x6e,0xcc,0x9a,0x62,0x14,0x30,0xce,0x1a,0xff,0x49,0xd6,0xaa,0xcc +.byte 0xe1,0x99,0x42,0xb1,0xfe,0x77,0x8a,0x2d,0xdb,0xc0,0x0d,0x50,0x53,0x0d,0x92,0xe5,0x2b,0xd0,0x78,0x83,0x08,0x4a,0x0c,0x1d,0x5b,0x03,0x22,0x65,0x3d,0x9e,0xdb,0xcf,0x01,0x61,0xf7,0x6d,0x2b,0x99,0xef,0xba,0x80,0x50,0xda,0xda,0x2d,0xbf,0x00,0xdf,0x6f,0xec,0x95,0xbc,0x5b,0x4e,0xda,0x83,0xe4,0x5d,0xf0,0xa7,0x1b,0x27,0xf1,0x76 +.byte 0x04,0x5d,0x3d,0x2c,0x12,0x15,0xad,0xef,0x47,0xdc,0x22,0x9b,0xc2,0x80,0x91,0xf3,0xbf,0x16,0xe9,0xd3,0x35,0x94,0x4b,0xfd,0xa3,0xa1,0xee,0x98,0xad,0x99,0xea,0x07,0xe1,0x0f,0xa7,0xbd,0x0b,0xfb,0xc0,0xd5,0xb0,0x49,0x37,0xc6,0x5f,0xe7,0x18,0xc1,0x60,0xe9,0x1d,0x5e,0x0e,0xea,0x73,0xf2,0xa1,0x75,0x7e,0x39,0x51,0x07,0x1e,0xcb +.byte 0x2a,0x5b,0x26,0x75,0xbe,0x02,0x5e,0xde,0x6c,0x37,0xb1,0x3c,0x1f,0x25,0x65,0x7d,0x9e,0x5d,0xa1,0x0b,0x98,0x27,0x53,0xb9,0xbb,0xc2,0x3e,0x8d,0x2d,0x5e,0x5c,0xbf,0xed,0x66,0xe8,0xd1,0x7d,0xaa,0xef,0xca,0x0e,0xd0,0x78,0x2b,0x89,0x07,0x76,0xb6,0xc3,0x92,0x42,0x3a,0x84,0x1d,0x81,0xc1,0xe8,0x1a,0xb8,0xe6,0xf1,0x43,0xcc,0x7a +.byte 0x59,0x4d,0x9f,0x00,0xfe,0x6a,0xe5,0x42,0x71,0x3c,0xcb,0xc8,0x45,0x18,0xf0,0xf2,0x81,0x9d,0x5a,0xb7,0x8d,0xbe,0x31,0xcb,0x7d,0xca,0xb7,0x19,0x57,0xb1,0x61,0x36,0x90,0x42,0xe2,0xc3,0xf5,0xa5,0x4b,0xc3,0xd4,0xe7,0x6c,0xb6,0x0c,0x06,0x19,0x4b,0x54,0x8f,0x2d,0xdc,0xc5,0x2b,0xff,0x1c,0x61,0x29,0xda,0x95,0x4f,0xa1,0x21,0x25 +.byte 0x24,0xbe,0xc7,0x34,0x2f,0xbf,0x33,0x6d,0x82,0x8f,0xf1,0xa9,0x97,0x5a,0x49,0x7f,0x60,0x00,0xf2,0x3e,0x7b,0x64,0xdf,0xc8,0xd3,0x5f,0x6e,0x1f,0xfb,0x71,0x80,0xf3,0x55,0x42,0xbe,0x32,0x7b,0xa9,0xeb,0xf6,0x31,0xe2,0xf0,0xd1,0xe9,0xbe,0x96,0x0e,0xb3,0xdf,0x3e,0xb2,0x2c,0xc3,0xce,0xbd,0xe7,0xfe,0x1c,0xed,0x2c,0x0b,0xaa,0x32 +.byte 0x76,0x82,0xb4,0x6b,0x18,0xa7,0x68,0x19,0xb7,0x27,0x21,0x4c,0xb0,0x22,0x98,0x58,0xd5,0x90,0x80,0xab,0xa1,0xfe,0x83,0xc5,0x66,0xf6,0x3e,0xa2,0xa9,0x6f,0x73,0xce,0x7f,0x0c,0xe6,0xde,0xee,0xb0,0xe6,0x2a,0xcc,0xcc,0xb0,0x53,0x8c,0xce,0xc8,0xdc,0xea,0x83,0xb4,0x0e,0x69,0x8d,0x90,0x86,0xaa,0xe3,0x3b,0xfb,0x88,0xe2,0xe8,0x27 +.byte 0x65,0x36,0x07,0xb3,0x91,0x0e,0x5a,0x6b,0x9f,0x0f,0xbd,0x81,0xb3,0x54,0x65,0x71,0xa4,0x2c,0x8e,0xda,0x47,0x04,0xce,0xfe,0x00,0x52,0xf1,0xdf,0x82,0x27,0x70,0x2a,0xb1,0x79,0x2f,0x27,0x7f,0xae,0x9e,0x5c,0x36,0xec,0xa0,0x2a,0xf3,0x74,0x78,0x01,0x17,0x74,0x2a,0x21,0x4f,0xb8,0xd2,0xe4,0xfe,0x5b,0x06,0x14,0xa5,0xb1,0xb1,0xff +.byte 0xee,0x79,0xf7,0x18,0xb9,0x31,0xa4,0x63,0x47,0x1c,0xdf,0x38,0x04,0x2d,0x18,0xca,0x14,0xf8,0x2f,0xec,0x0d,0x58,0xad,0xbb,0xf4,0x45,0x11,0x0e,0xfa,0x17,0x4c,0x5e,0xd4,0xa6,0xde,0xe4,0x13,0x44,0x2c,0xb9,0xfd,0xcd,0x41,0xe7,0xf9,0xda,0xbc,0x28,0x8f,0x0c,0x41,0x4d,0xa7,0x0d,0xf5,0x96,0xd7,0x8f,0x10,0x96,0xfb,0x75,0x75,0x86 +.byte 0xc9,0x6e,0x23,0x92,0x71,0x69,0x7b,0x94,0x61,0x1c,0x3f,0xcf,0x66,0x34,0x62,0x68,0x5d,0xee,0x7b,0x34,0x5d,0x2a,0x39,0xbb,0x6a,0x34,0xea,0x6e,0xe3,0xe9,0xdb,0xe4,0x34,0x6e,0x29,0x0b,0x21,0x38,0xe7,0x5b,0x79,0x37,0x54,0xf0,0xed,0xaa,0x07,0x2b,0x21,0x29,0x67,0xfe,0x7d,0xa5,0x99,0x0e,0x5d,0x05,0xe7,0x61,0x6e,0xd1,0x4a,0x15 +.byte 0x4a,0x56,0xb1,0x13,0x49,0x8c,0xf4,0x4f,0xd7,0xe9,0x68,0xae,0x09,0x37,0xd3,0x96,0x21,0xe8,0x1f,0x9f,0xa9,0xc6,0x54,0x57,0x63,0x09,0x1e,0x71,0xf2,0x48,0x9e,0x50,0xbb,0xb3,0xf1,0x4e,0x2d,0x1d,0x79,0x69,0x0a,0xa2,0xa9,0xdd,0x1b,0x55,0x62,0x6b,0x0d,0xcc,0x9c,0xb1,0x5e,0xc8,0x4c,0x4f,0x62,0x3c,0xc4,0xa3,0xb4,0xe4,0x34,0xec +.byte 0x9d,0x0c,0x1b,0x46,0x60,0x68,0xd5,0x04,0xd7,0x1b,0x3c,0x7a,0x98,0x0c,0xd9,0x87,0x2b,0x4f,0x97,0x5b,0x56,0x65,0xb0,0x06,0x6e,0x9e,0x06,0x37,0x0e,0xd2,0xa1,0x52,0xf5,0xaa,0x2b,0xec,0xbd,0x0f,0xb6,0xba,0x48,0x63,0x57,0x51,0xe3,0x00,0x53,0xf5,0x77,0xb2,0xa4,0xb1,0x44,0x01,0x3e,0xcf,0xe9,0x2a,0x7a,0xf5,0x19,0x5e,0x43,0x36 +.byte 0xe0,0x38,0x41,0xbc,0xda,0xb5,0xd0,0x69,0xdf,0xd2,0x04,0xd4,0xf8,0x38,0x37,0x1c,0x90,0x30,0xf2,0x3d,0x03,0xe4,0x3f,0x84,0x2c,0x9a,0xa4,0x8a,0x00,0x4e,0x49,0x24,0x62,0x06,0xb4,0x9d,0x33,0x8a,0x8e,0xd2,0xbd,0x1b,0xa1,0x83,0x0b,0xa5,0xa2,0x5c,0xcf,0xb1,0x65,0x85,0x92,0x1f,0xb0,0x2e,0x3b,0xb2,0xf3,0x80,0xff,0x9d,0x41,0x4d +.byte 0xcd,0x25,0x09,0x02,0x85,0xb3,0xa8,0x49,0x12,0x10,0xe7,0x5c,0x94,0x13,0x4b,0x52,0x53,0x35,0x9c,0xbc,0x7a,0xad,0x04,0x19,0x54,0x8a,0xbc,0x42,0x73,0xf1,0x0a,0x22,0x75,0xbf,0x3b,0x12,0xa8,0xa4,0x47,0x5c,0x95,0x48,0x60,0x71,0x5c,0x9a,0x39,0x5c,0xdb,0x44,0xe8,0x74,0x92,0x3e,0x2b,0x3b,0x1b,0xb7,0x21,0x98,0xe1,0x87,0x32,0xaf +.byte 0x4a,0xe3,0xda,0x4a,0x46,0xde,0x15,0x4c,0xdc,0xc6,0x60,0xe6,0xd7,0x92,0x29,0x05,0x21,0x22,0x9b,0xaf,0xc4,0xd7,0x6a,0xea,0x2c,0x82,0x5d,0xc7,0x81,0xe2,0x67,0x85,0xd2,0x16,0x6f,0x83,0xa8,0x82,0x5f,0x8f,0xf5,0x3a,0x50,0xba,0x04,0xcb,0x76,0x4d,0x80,0x16,0x12,0x72,0xa8,0x6c,0xac,0x78,0xf1,0x8c,0x93,0xab,0xe0,0xb5,0xdc,0xd1 +.byte 0xa5,0x40,0x0e,0x50,0x88,0xd2,0x9d,0x56,0xf6,0xa0,0xd4,0x45,0xcf,0xef,0x16,0x1a,0xa4,0xaa,0x91,0x5c,0xa3,0x8f,0x84,0xf8,0x3e,0x30,0x1f,0x5f,0x55,0xf9,0xd3,0x3d,0xb8,0x64,0xbb,0x3c,0x91,0xe4,0x0d,0xa5,0x43,0x14,0x75,0xe7,0xec,0x8c,0x12,0x56,0x34,0xb0,0xa9,0xae,0x93,0x91,0x34,0xfc,0x78,0xa3,0x81,0x51,0x45,0x7d,0x9f,0x7d +.byte 0x5e,0xc7,0x5e,0x51,0x17,0xfa,0x02,0x5d,0xb2,0xf7,0x79,0x4b,0x49,0xd2,0x1b,0x6f,0xfd,0x9e,0xff,0x75,0x74,0xf0,0x26,0x7e,0xd7,0x65,0xb0,0xf3,0x0a,0x0c,0xd2,0xa2,0x26,0x98,0x03,0x26,0xb5,0x67,0xc4,0xc0,0xed,0x80,0xd4,0x20,0xf6,0x7e,0x17,0x54,0xeb,0xde,0xc3,0x86,0x51,0xda,0xf7,0xe5,0xc7,0xfe,0xfc,0x71,0x83,0x80,0xbe,0xde +.byte 0x4b,0xda,0x83,0x76,0x63,0x04,0x03,0xdd,0xe0,0xe0,0x4e,0xb6,0x32,0xd5,0xd0,0xce,0xd7,0xaa,0xcd,0x5f,0x64,0xa6,0xd8,0x9e,0xc5,0x97,0x30,0xad,0xf1,0x82,0x8f,0x7c,0x18,0xec,0x30,0x1d,0x2d,0xb6,0xdb,0x33,0x65,0xed,0xe2,0x24,0xd8,0xba,0x0a,0x1f,0x79,0x2a,0x1c,0xe1,0x4e,0x04,0xa6,0x74,0x74,0x37,0x42,0x94,0xc4,0x99,0x0e,0xf8 +.byte 0x3f,0xf3,0xff,0xeb,0x7f,0x95,0x9c,0x47,0x56,0x68,0x6a,0x0d,0x6e,0x66,0x71,0x3b,0x51,0xd5,0x12,0x7e,0x59,0x39,0x43,0xb5,0x53,0xd3,0x1d,0xa2,0xe9,0xa1,0xc8,0x8d,0xf2,0x8e,0xa1,0x9c,0x36,0xdd,0xda,0xd3,0x61,0xd8,0xe9,0x76,0x5e,0xcb,0x0a,0x52,0xc8,0x5a,0x25,0x00,0x21,0xea,0x6a,0x96,0xde,0x02,0x76,0x02,0x63,0x73,0x28,0x63 +.byte 0x46,0x37,0xe1,0x75,0x2f,0x42,0x8f,0xee,0x2c,0x84,0x82,0x43,0x43,0x2d,0xa9,0x13,0x50,0x46,0x54,0xed,0x76,0xbd,0x10,0x1c,0x9b,0xa1,0x42,0x97,0x68,0xca,0x84,0x2e,0x1d,0x6f,0x86,0x67,0xaf,0xb7,0x20,0xc1,0x7c,0xab,0x70,0x20,0xa1,0x79,0x71,0xe4,0xb7,0x45,0x8a,0x04,0xd3,0x70,0x10,0xa8,0x28,0xc3,0x56,0xff,0x43,0x36,0x13,0x88 +.byte 0xb6,0x2d,0xfd,0x7f,0xbc,0xc9,0x1d,0x11,0x9a,0x7c,0xd0,0xfc,0x11,0xac,0x54,0xd5,0xc3,0x03,0xd1,0xe3,0x9e,0xff,0x03,0xdb,0xd9,0xd8,0x77,0x96,0x08,0xf4,0x1b,0xd9,0xfa,0x70,0xed,0xab,0x53,0x78,0xca,0x28,0xa7,0x29,0x49,0x45,0x37,0x10,0x8f,0x61,0x7d,0x11,0x99,0x2e,0xe8,0x5d,0x45,0x3a,0xe7,0xd2,0x6c,0xb6,0x03,0xc4,0x6d,0xaa +.byte 0x52,0x60,0x8c,0xc6,0x9c,0x17,0xba,0xf6,0x3b,0xd4,0x4b,0x26,0x63,0x92,0x8c,0xb9,0x6a,0xf2,0x26,0x91,0x9d,0x8d,0x99,0x39,0x26,0x7d,0xb5,0x4f,0x4c,0xc6,0x0e,0x2e,0xe1,0xc6,0xcb,0x98,0x93,0x71,0x9b,0xaa,0x01,0x40,0x70,0x93,0x2a,0xe8,0x27,0xc5,0x20,0xa7,0xd2,0x06,0x8b,0xb0,0x29,0xcd,0x4f,0x2c,0x5a,0xde,0x35,0xc7,0x2a,0x8e +.byte 0xa7,0xae,0x02,0xfa,0x8e,0x4d,0xf3,0x77,0x67,0xe0,0xcb,0x84,0x69,0xc6,0x05,0xe4,0x84,0xe3,0x6e,0x02,0x6c,0x3b,0x93,0x30,0x3e,0x89,0x2c,0xc7,0xa5,0x7e,0xaa,0x58,0x59,0x25,0xf6,0xff,0x56,0x9a,0x4a,0x70,0xbf,0x88,0x20,0x8d,0x51,0x5e,0x08,0x13,0x26,0x2c,0x5d,0x88,0x13,0x3e,0x32,0x7a,0xf6,0x17,0x5c,0xdb,0xc4,0xcd,0x5a,0x16 +.byte 0x65,0xe4,0x34,0xeb,0x21,0x6d,0xb9,0x30,0x5d,0xc0,0xa2,0xea,0x4f,0x63,0x0e,0xbe,0x32,0x91,0x89,0x6f,0x96,0x40,0xf3,0x5f,0xa3,0xf2,0x15,0xc3,0x3c,0x3c,0xb8,0x2f,0x0d,0xc2,0xcd,0x4e,0xa0,0xa5,0xf6,0x78,0x40,0x0b,0x90,0x11,0x52,0xff,0x8f,0x7f,0x6a,0x0c,0xd6,0x3b,0x64,0x80,0x47,0xfa,0x70,0xbe,0x01,0xdc,0xdf,0x5b,0x75,0x7c +.byte 0xca,0x66,0xf0,0x2a,0x53,0x89,0x55,0x87,0xf8,0xec,0xd1,0x18,0x22,0x0c,0xd5,0x0e,0xc8,0x1c,0xbc,0x1e,0x66,0x14,0x44,0x10,0x3c,0xd4,0x2e,0xca,0x0b,0xd8,0x3f,0x81,0xd8,0x9f,0x81,0xf6,0x62,0x23,0xe4,0xc7,0x0d,0xb0,0x1b,0x00,0xd8,0xf4,0x1a,0xdd,0x9b,0xa1,0x74,0xeb,0xf0,0x65,0x5c,0x82,0x00,0x17,0xa6,0x68,0x29,0xd5,0xa4,0x64 +.byte 0xd3,0x15,0x90,0xd0,0x91,0x17,0xfc,0xd2,0xd7,0xad,0x4b,0xd8,0x41,0x03,0x51,0xfd,0x61,0xac,0x34,0xd4,0xff,0xaa,0xb1,0x64,0x6c,0x79,0x78,0xf7,0x6b,0x18,0x03,0x2b,0x6b,0x9a,0xd7,0xce,0x55,0x6e,0xdd,0xab,0x2e,0xbc,0x27,0x3a,0x8c,0xa5,0x8d,0xf0,0x55,0x81,0x0c,0x6e,0x8d,0xd8,0xd2,0x24,0x5e,0x2e,0x56,0xa8,0x1e,0x9c,0x98,0x88 +.byte 0xd3,0xbe,0x90,0x56,0x70,0xe5,0xcc,0x49,0x2a,0x13,0x98,0x99,0xbd,0xc9,0x9f,0x53,0x85,0x07,0xbe,0x54,0xa7,0x4c,0xd6,0x96,0x7d,0x8f,0x24,0x79,0x67,0xb2,0x62,0x4c,0x6a,0xc1,0x6c,0xb7,0xdc,0xe9,0x21,0xe3,0x27,0xc7,0x53,0xff,0xe7,0xd1,0xea,0x60,0xa8,0x56,0x08,0x5c,0x29,0x0a,0x04,0x0c,0xda,0x7a,0x70,0x8c,0x3d,0x55,0x3f,0xcf +.byte 0x9e,0xea,0x74,0x8b,0xbc,0xf0,0xf1,0x3a,0x86,0x22,0xe5,0x54,0xa7,0x70,0xc2,0xcd,0xb8,0x9f,0x4e,0x9f,0x48,0xa8,0xc0,0x82,0x0d,0x73,0x8b,0x3c,0xfc,0x20,0xf4,0xbe,0x79,0xde,0x8e,0x3c,0x26,0x85,0xde,0x74,0xd1,0xe3,0xd5,0x8f,0x39,0x71,0x46,0x8c,0xbd,0x68,0x28,0x2d,0x36,0x0d,0x66,0xc1,0x0b,0x96,0x3e,0x11,0x2e,0x44,0x17,0xd5 +.byte 0xfe,0x0d,0x70,0x84,0x96,0x20,0x34,0x2f,0xbe,0xf0,0xf5,0x9b,0xb4,0x5a,0xa9,0x50,0x6a,0xda,0xdb,0x69,0xea,0xef,0xa9,0xaa,0x06,0xc0,0x68,0xa4,0x61,0x1b,0x4b,0xf8,0x0b,0x56,0x91,0xc8,0x6f,0x39,0x15,0xe2,0xcc,0xbf,0x2b,0x36,0x96,0x0c,0x84,0xfb,0x3d,0x4b,0x09,0xe3,0xc2,0x4b,0x05,0x5e,0xfa,0x30,0x75,0xc5,0x54,0xa5,0xbd,0x45 +.byte 0x1e,0x14,0x72,0xd6,0xfd,0xe0,0x8f,0x7b,0x46,0x9b,0x11,0x07,0x27,0x03,0xe1,0x2d,0xcc,0x0a,0x01,0x49,0x61,0xc4,0x61,0x78,0x06,0x5f,0xaa,0x01,0x5b,0x68,0xd7,0x29,0xb4,0x9e,0xd3,0xaf,0xc7,0x45,0xf0,0x23,0xaf,0x28,0xcd,0x96,0x23,0x61,0xb2,0xb4,0x21,0x96,0x5d,0x91,0x3e,0x71,0xb5,0x41,0xf1,0x29,0xf4,0x5b,0x45,0x77,0x16,0x00 +.byte 0x9d,0x39,0x2a,0x1c,0x38,0x6d,0x36,0x97,0x98,0x4c,0x84,0xfc,0xf5,0xf1,0x59,0x7a,0x8c,0x21,0xfb,0xbc,0x9b,0x0c,0x8d,0x60,0xb6,0xc4,0xe3,0x4b,0x33,0x4f,0x04,0x4c,0x27,0xd2,0xa0,0xe1,0x71,0x0b,0x6d,0x40,0x8d,0xba,0xb3,0x11,0x9b,0x07,0x97,0x82,0x01,0x47,0xaa,0x2a,0xd4,0xcc,0x02,0xd3,0x86,0x86,0xb5,0xd7,0x5d,0xbc,0xd0,0x0f +.byte 0x97,0x5c,0xe5,0xac,0xc6,0x53,0xb3,0x39,0x09,0x68,0x2e,0xcc,0xf3,0x43,0xba,0xed,0x15,0x90,0xbe,0x9d,0xeb,0xa4,0xfb,0x4a,0x20,0xcf,0x10,0xb9,0x47,0x99,0xb0,0x89,0x26,0xb9,0xbd,0x4b,0xf6,0xa5,0xbd,0x2f,0xad,0x1a,0x75,0xe8,0xff,0xc6,0x6b,0x6a,0x31,0xbe,0xec,0xd2,0xc4,0x39,0x9e,0x3b,0x05,0x3f,0x24,0xba,0xf1,0x4d,0x0c,0x0c +.byte 0x05,0x60,0x60,0x22,0x0c,0x1b,0x0b,0x6c,0x80,0xd5,0xe8,0x8f,0x81,0xee,0x80,0x41,0x4a,0x69,0x47,0xc6,0x4c,0xeb,0xf6,0x2b,0x91,0x7c,0x9f,0x22,0x74,0x7b,0x43,0x95,0x56,0x55,0xba,0x85,0x23,0xb3,0xc3,0xee,0x6a,0xcc,0x49,0x2c,0x6c,0x86,0x6d,0x60,0x5d,0x84,0x0c,0x3c,0x88,0x61,0x58,0x1d,0xfc,0x00,0x2c,0x84,0x49,0x4d,0x95,0x75 +.byte 0xc0,0x03,0x02,0x59,0xc0,0xe9,0x84,0xea,0xce,0x3f,0x8b,0x76,0xbf,0x19,0xaa,0x13,0x1b,0x8d,0x9f,0xb2,0xeb,0xb3,0x02,0x87,0xee,0xfe,0x73,0xdb,0xc4,0x19,0x27,0xaf,0x15,0x8d,0xf4,0x58,0x97,0x43,0xb9,0x45,0x32,0x5f,0x24,0x2d,0x08,0xfe,0xec,0xf2,0xf1,0x34,0x99,0x7a,0x66,0x44,0x3d,0xd4,0xf7,0x82,0xcf,0xca,0x6f,0x53,0x9f,0x0a +.byte 0x74,0x79,0x9b,0x45,0x5b,0x07,0x92,0x35,0xc6,0xf4,0xd1,0x90,0x2b,0x62,0xec,0x93,0x7b,0x05,0x90,0x75,0xb7,0xb6,0xd9,0x6c,0x30,0xdd,0x9b,0x2a,0x32,0xb1,0xba,0xab,0x1a,0x6c,0x2b,0xd8,0xfb,0x39,0x8e,0x80,0x98,0x6c,0xd0,0xb3,0xf3,0x76,0xe2,0xe6,0x5e,0xee,0xd0,0x29,0xd7,0x57,0x8f,0xc3,0x13,0xcb,0x45,0x90,0x3e,0xa2,0x54,0x88 +.byte 0xd5,0x50,0xd3,0x75,0xed,0x2d,0xa6,0x50,0x11,0x6b,0xb0,0xb6,0xf0,0x1d,0xc9,0x3d,0x1d,0x2a,0xda,0x5e,0x43,0x44,0xf4,0xef,0x3e,0xc7,0xa9,0xe0,0x6d,0x3c,0x38,0xbf,0x84,0x72,0xaf,0xea,0x60,0x15,0x03,0x14,0x77,0xb7,0xb3,0x15,0x4c,0xbc,0xbf,0x55,0x86,0x24,0x73,0x97,0x22,0x9d,0x59,0xa0,0x39,0x76,0x38,0xd1,0x1f,0x25,0xb0,0x64 +.byte 0xf3,0x10,0x67,0xf2,0x7c,0x11,0xf2,0xce,0xbe,0xaf,0x5e,0x2e,0xc5,0xc1,0x01,0xfa,0x80,0xf9,0x87,0xfc,0x5c,0xfd,0x66,0x50,0x01,0xc2,0x00,0x92,0x84,0x0f,0xdc,0xfc,0x10,0xa5,0x6e,0x45,0xf5,0xff,0x58,0x78,0x45,0x5e,0x50,0xbe,0xe3,0xc7,0x25,0x1e,0xdf,0x7f,0x68,0x6f,0xa5,0xb8,0xf8,0x69,0x89,0x5a,0x55,0x65,0xf4,0x96,0xe5,0x7a +.byte 0xa6,0x89,0x69,0x8d,0xdd,0x4f,0x24,0x5a,0x29,0x92,0x1e,0xca,0x74,0x65,0x7f,0xb8,0x32,0x75,0xb5,0x7b,0x15,0xea,0xeb,0xcc,0xf1,0x23,0x69,0xc7,0x58,0x1c,0x3a,0xaa,0x27,0x0a,0x11,0x79,0xcf,0xc9,0xb6,0xbd,0x9d,0x56,0x47,0x36,0x6b,0x7f,0x82,0xb5,0xa7,0x9f,0x79,0x72,0x16,0xba,0x50,0xef,0x37,0x68,0xdf,0xe0,0xd8,0x0c,0x16,0xcc +.byte 0x50,0x6c,0x25,0x63,0xc2,0xd6,0x7b,0xef,0xd9,0xa1,0xef,0x62,0x81,0x97,0x51,0x49,0x69,0xe3,0x13,0x6c,0x1a,0xd0,0x64,0x1b,0x3e,0x48,0x25,0x5b,0x34,0xe9,0xee,0x41,0x34,0xfb,0x8e,0x9d,0x3c,0xbc,0xc8,0xcf,0xe7,0xf8,0x72,0x21,0x0f,0x95,0xde,0x57,0xd7,0x2f,0x80,0x97,0xbd,0x8f,0x2c,0xde,0x19,0xa3,0xba,0x5c,0x92,0xa3,0x75,0x83 +.byte 0xe3,0xc9,0x33,0x3f,0x8f,0x09,0xfa,0x0b,0x60,0x0a,0x2f,0xb3,0x45,0x9d,0x8e,0x9d,0xa3,0x66,0x2d,0xda,0x37,0xe0,0x21,0x52,0x74,0x9d,0x59,0xa4,0x9e,0xea,0x15,0x22,0xb0,0xbf,0x3c,0xd4,0x59,0xef,0x27,0x60,0xf7,0xbf,0x5d,0x1d,0x36,0x9a,0xa5,0xfb,0x53,0x90,0x40,0x83,0x3a,0x20,0x3d,0x6b,0x47,0xbc,0xc3,0xe6,0x07,0xfe,0xd0,0x8e +.byte 0x40,0x42,0x65,0x2b,0x27,0xba,0x69,0x61,0x03,0x36,0x58,0x35,0x7e,0x82,0x53,0xb5,0xe2,0x25,0x31,0xc3,0x77,0xc1,0x91,0x13,0xa4,0x92,0x52,0xea,0x9f,0x43,0x44,0x6b,0x43,0xe9,0x11,0xd4,0x3d,0x53,0xba,0x6b,0x96,0xb5,0x96,0x29,0xa3,0x2a,0x0a,0xf2,0xb5,0x0c,0x5d,0x62,0x37,0xe0,0xd6,0xa2,0xbf,0xcd,0xf9,0x58,0x7f,0xa2,0xfd,0x54 +.byte 0x6a,0xa1,0x90,0xa5,0x61,0x9e,0xa6,0xc2,0xb9,0x80,0x7a,0xb8,0xaf,0x60,0x68,0xa7,0x27,0x77,0x41,0x03,0x4e,0xc1,0x96,0x46,0x23,0x1b,0xff,0xa1,0x37,0x28,0x33,0x27,0xc2,0x99,0xf7,0xcb,0x7f,0x1a,0xfb,0x41,0xc3,0x59,0x11,0xf8,0x39,0x50,0xbd,0x90,0x61,0x4a,0x67,0x4a,0x07,0x5f,0xb1,0x07,0x66,0x0b,0x52,0xad,0x90,0xc2,0xd7,0x4e +.byte 0x42,0x9e,0xcc,0x5c,0xeb,0xf2,0xdc,0xaa,0x52,0xcf,0x0e,0x7d,0xae,0x3e,0x1a,0x2c,0x9e,0x79,0xfb,0x29,0x10,0x29,0x61,0xa4,0x93,0x9d,0xa9,0xe9,0x71,0xc5,0xf7,0x07,0x13,0xe9,0xbd,0x2e,0x2d,0x0c,0xd6,0xaf,0x54,0x48,0x58,0xc2,0x91,0x37,0xf4,0x61,0x3a,0x96,0x81,0xdc,0x82,0x02,0xff,0xc9,0xf7,0xf7,0x9f,0x9f,0x28,0xd1,0xb1,0xe3 +.byte 0x2b,0x3d,0x85,0xef,0x15,0x82,0x3b,0x9a,0x17,0xee,0x7f,0xd3,0xa5,0x7c,0x41,0x27,0xc9,0x4c,0xe9,0x7a,0x30,0x9f,0xc5,0x34,0xaf,0xc8,0x1c,0x8a,0x7c,0xa6,0xf4,0xdc,0xa6,0xdb,0x68,0xc1,0xa1,0x13,0xb0,0x54,0x49,0x25,0x43,0xc0,0xd4,0x93,0xd6,0x70,0x53,0x3e,0x5f,0xd5,0x42,0x6e,0x78,0xb8,0x15,0x07,0x6a,0x91,0xe8,0xf1,0x2f,0xcf +.byte 0x07,0x84,0x25,0xb3,0x20,0xb9,0x35,0x25,0xbb,0x26,0x96,0x02,0x25,0xd5,0x83,0x23,0x71,0x6d,0x62,0xa7,0x99,0x73,0x63,0x2a,0x51,0x25,0x34,0x3d,0x51,0x95,0xc7,0x9b,0x01,0x0a,0xab,0x11,0xb2,0x32,0xcd,0xe3,0xef,0x63,0xa4,0x6d,0xdb,0x7b,0xf6,0x5f,0xc5,0xf3,0xe5,0x8c,0x6b,0x0a,0x04,0x33,0x53,0x0d,0xf6,0x13,0x8c,0xb8,0xc7,0xba +.byte 0xc2,0xf0,0xd4,0xa7,0x1a,0xce,0x7c,0x54,0x72,0x2b,0x89,0xf4,0x05,0x5c,0x30,0x42,0xe5,0x58,0x65,0x3a,0x2e,0xf9,0x40,0xab,0x2b,0xf9,0xc3,0x99,0x40,0x3c,0xb1,0x7b,0x2c,0xdc,0xfe,0x41,0x21,0x71,0x00,0x75,0xbd,0xea,0xf3,0x84,0x88,0x6b,0x9c,0xe2,0x80,0x2f,0xad,0x9f,0x9d,0x0a,0xdf,0xb5,0x38,0x61,0x89,0xfb,0x67,0x45,0x9c,0x39 +.byte 0xf9,0x84,0x54,0xc4,0xd6,0x6f,0x00,0x39,0x90,0x82,0xfa,0xce,0xae,0xe8,0xaf,0xa4,0x97,0x3a,0xfe,0x71,0xaf,0x5e,0x00,0xd1,0x9e,0x33,0x41,0x63,0xca,0xa5,0x5a,0x8b,0x09,0x2a,0x26,0xef,0x96,0xb7,0x5d,0xc4,0x92,0xfa,0x51,0xdb,0x1d,0x63,0x5f,0x7c,0x94,0x53,0x84,0xed,0xa3,0x99,0x07,0x9f,0xdc,0x55,0xb3,0x31,0x67,0x1a,0x63,0x05 +.byte 0xec,0x36,0x79,0x57,0xf8,0x39,0xc3,0xdd,0xd5,0x6a,0x21,0xfc,0x54,0xe6,0x28,0xc4,0xf1,0xd2,0xce,0x02,0x43,0x50,0x30,0x15,0x4d,0x3c,0xd0,0x1c,0xf6,0x7e,0xd0,0xa4,0x86,0xe7,0xf5,0xc2,0x06,0xc5,0xc4,0xa8,0xe2,0xd3,0xc7,0xcf,0xbd,0xab,0x9f,0xe3,0x42,0xc4,0xcd,0x65,0xfa,0xd3,0xcd,0xdf,0x55,0xc4,0xce,0x6e,0xe8,0xfc,0x96,0x0f +.byte 0xe2,0x92,0xca,0xde,0x37,0x7c,0xc9,0x80,0x4a,0x54,0xe9,0xfd,0x3c,0x4b,0x81,0xb8,0xd9,0x1a,0xf1,0x91,0x5d,0x9d,0xef,0x3e,0xd1,0x78,0xe2,0x1e,0x0e,0x09,0x62,0xdd,0xc6,0xb9,0xde,0x29,0xba,0xb0,0x62,0x49,0x53,0xb6,0x8d,0x9f,0xbf,0x4d,0x77,0xa4,0xd1,0x0b,0xf0,0x31,0x2e,0xe5,0x71,0x2e,0x18,0xa4,0xa7,0xcb,0xa6,0x30,0x24,0x11 +.byte 0x8d,0x16,0x21,0x71,0x6a,0x19,0xde,0x3c,0x5a,0x00,0xa6,0xe2,0x43,0x98,0xe8,0x83,0x10,0x76,0xef,0xca,0x67,0x61,0x80,0x98,0x48,0x06,0xa9,0xcd,0x13,0xa6,0x1e,0x5b,0x2b,0xef,0xb7,0x3a,0x24,0xf7,0x10,0x8d,0xc2,0xaa,0x9c,0x78,0x0d,0xd1,0x54,0xb1,0x4e,0x5a,0x21,0xc2,0xb4,0x11,0x15,0xdb,0xb3,0x9c,0xe4,0xf1,0xfc,0xa5,0x66,0x0c +.byte 0x56,0x34,0x05,0x14,0x88,0x2c,0xfc,0x3f,0x97,0x30,0xd5,0xd0,0xba,0xa3,0xf1,0x47,0xc0,0xf1,0x59,0x3c,0xda,0x1a,0xc1,0x90,0xae,0x4b,0x26,0xd3,0x5f,0xc9,0x8f,0x62,0x56,0x9c,0x64,0xec,0xda,0x63,0x37,0xa1,0xa2,0x87,0x74,0xcb,0xcc,0x27,0xcb,0x2a,0x97,0x57,0xa3,0xb9,0xac,0xe2,0xbd,0x97,0x93,0x21,0xb9,0x8b,0x82,0xa1,0xe7,0x76 +.byte 0xc1,0x49,0xd6,0xb2,0x52,0x7b,0xd6,0xbb,0x31,0x0f,0x87,0xc0,0xaa,0x91,0x70,0x19,0x76,0xa5,0xea,0xf0,0x87,0x47,0x50,0xc1,0xff,0xf7,0xa6,0x6c,0x65,0xff,0xdf,0x83,0x5c,0x54,0xf0,0xb1,0x18,0xe0,0x13,0x58,0x74,0xc0,0x67,0x0e,0xb8,0xdc,0x59,0x6c,0x19,0xf4,0xee,0x3a,0x07,0x63,0x68,0x1d,0x62,0x60,0xb5,0x71,0xce,0x21,0x61,0x8c +.byte 0xa5,0x74,0x9b,0x77,0x8e,0x15,0x20,0x18,0x19,0x96,0xf6,0xfa,0xd2,0x6c,0x03,0xcb,0xcb,0x8c,0x91,0x0d,0x29,0x91,0x70,0xc5,0x96,0x60,0x18,0xad,0x65,0x66,0x43,0xf9,0x13,0x97,0xe3,0xe3,0xcb,0xbf,0x68,0x0b,0xb2,0x87,0x9c,0xfa,0x96,0x48,0x14,0xef,0x6e,0xbd,0x45,0xb9,0x2f,0xbb,0x80,0x80,0xc5,0xf6,0x22,0x41,0x9a,0xec,0xdd,0x41 +.byte 0xfc,0xf3,0x0d,0x8e,0x2e,0x3c,0xda,0xef,0x2c,0xbd,0xbc,0x0e,0x88,0xd2,0x97,0x3d,0x40,0x37,0xa6,0xde,0x1d,0x00,0xeb,0x39,0xea,0x44,0xee,0x8a,0x2f,0x77,0xea,0xea,0x1d,0x90,0xd1,0xec,0xe4,0x31,0x0c,0xde,0x6f,0x55,0x17,0x5c,0x1e,0x19,0x91,0xac,0x36,0x00,0x26,0x17,0xa6,0xcd,0x8b,0xe2,0x72,0x6f,0x8f,0x3c,0xc6,0x76,0x6e,0x3d +.byte 0x4e,0x93,0xb3,0x8b,0xad,0x24,0x17,0x39,0xc0,0xfe,0xba,0x90,0xc5,0xbd,0x4b,0xe4,0xae,0xac,0xf6,0x55,0x72,0x3e,0xf0,0x12,0x32,0x5a,0xdd,0x8a,0x3f,0x67,0xb6,0xdf,0xf6,0x11,0x02,0xf5,0x84,0xcc,0x7d,0x36,0xe7,0x1b,0xf0,0x9a,0x52,0xbe,0xf3,0x06,0xd6,0xdb,0x02,0xd4,0x80,0x0b,0xcd,0xf0,0xfe,0xec,0x86,0x3f,0x89,0x34,0xcb,0x88 +.byte 0x34,0x28,0x57,0x00,0x33,0xeb,0x4f,0xfa,0xdb,0xd8,0x09,0xd9,0x56,0x53,0xc1,0x02,0xc0,0xa8,0x4c,0xdc,0xfd,0x26,0xb3,0x55,0x1d,0x47,0x0d,0x68,0x50,0xb8,0xa3,0xb4,0xf1,0x31,0xfa,0x16,0x33,0x94,0x40,0x95,0x53,0x9c,0x9f,0x5b,0x25,0x47,0xb1,0x27,0xbc,0x38,0x7d,0x23,0x01,0x7f,0x70,0x7a,0x61,0x0e,0x46,0x5c,0xcc,0xd7,0xcc,0x15 +.byte 0x15,0x0a,0xed,0x4c,0x99,0x66,0x3a,0xc3,0xc1,0x9a,0x7a,0x38,0x6a,0x0c,0xde,0x13,0x67,0x65,0xfc,0x06,0x99,0x7c,0xa5,0x90,0x8a,0x90,0x58,0xce,0xf3,0x23,0x76,0xfc,0x03,0xfb,0xb3,0x36,0x54,0xa9,0x33,0x35,0xfe,0xe3,0x3d,0x53,0x7e,0xe0,0xae,0xcf,0xc0,0xa2,0xe1,0x28,0xb9,0x97,0x96,0x87,0x90,0xa1,0x13,0xd0,0x1d,0x5b,0x43,0xf1 +.byte 0xa5,0xfa,0x81,0x83,0xe7,0x7b,0xa1,0x5f,0x9f,0xf5,0xd3,0xb6,0x80,0x8b,0x91,0xed,0x31,0x14,0x05,0x78,0x85,0x9d,0xea,0x59,0x69,0xa5,0x29,0xc5,0xf1,0xd7,0x9d,0xa3,0x8b,0x9d,0xe0,0x8d,0xc3,0x4e,0x2d,0xfa,0x1c,0x6c,0xd2,0xd7,0xcb,0xda,0x86,0x5d,0xb3,0x1a,0xb4,0x12,0xe3,0xa8,0xd7,0xe1,0x84,0xce,0x0e,0x06,0xd0,0x9e,0xf0,0xb1 +.byte 0x5b,0x2f,0x77,0x10,0x6f,0x41,0x2f,0x5b,0x48,0x43,0xf3,0xef,0xdb,0x09,0xdb,0x01,0x89,0xfc,0x7a,0x4a,0xc0,0x96,0x33,0xdf,0xbe,0x49,0x85,0xa7,0x88,0x93,0x05,0xf2,0x15,0x12,0x85,0x04,0x20,0x7d,0x8c,0xe2,0x0a,0xea,0xfe,0xed,0xbf,0x98,0xdb,0x9d,0x1f,0xaf,0x0f,0xbf,0xf7,0x12,0x4f,0x69,0x4e,0x87,0x09,0xf0,0xae,0x2a,0x4d,0x4c +.byte 0xbf,0xaa,0x08,0x2c,0x78,0x2d,0xbe,0xb9,0xf5,0x3c,0x4c,0xcd,0x75,0x93,0xc3,0x3c,0xc2,0x86,0x47,0xca,0xc1,0x9c,0x1c,0xe5,0x0d,0x8d,0x36,0x9c,0x44,0x40,0x89,0xfa,0x17,0x57,0x08,0xd4,0x22,0x9a,0x5b,0x94,0xbf,0x39,0xcd,0xbe,0xf7,0xd1,0xcd,0x35,0x74,0xdf,0xfa,0x5d,0x00,0xaa,0xaa,0x82,0x6d,0x9b,0xf8,0x69,0x51,0x9c,0xaa,0xaa +.byte 0xc8,0x2c,0xa2,0x68,0x57,0x3c,0x5f,0x10,0xa2,0x7b,0xee,0xc9,0x97,0x8d,0x5c,0x41,0x08,0x0d,0x30,0xd5,0x2b,0x5f,0x8d,0xdd,0xdc,0x2c,0xa8,0x52,0x6e,0xea,0x61,0x77,0xca,0x75,0xc3,0x56,0x6e,0x17,0x51,0x0e,0x00,0xb6,0x18,0xa0,0xe5,0x9d,0x49,0x4e,0x20,0x78,0x1e,0x5f,0x3e,0xec,0xc3,0x4a,0x41,0xf3,0xfe,0x89,0x64,0xac,0x4c,0x4d +.byte 0xa8,0x73,0x4f,0x31,0xc4,0xe2,0x62,0x69,0x2b,0x40,0xdf,0xef,0xed,0xf0,0x62,0x4e,0xc3,0x65,0xcc,0xcb,0xef,0xc1,0x28,0x61,0x71,0xac,0xa5,0x89,0x52,0x7b,0x32,0x59,0xc2,0x16,0x1a,0x63,0x18,0xb0,0xd8,0xe4,0x28,0x92,0xff,0x45,0xc1,0x24,0x56,0x86,0x66,0x23,0x7a,0xff,0xf7,0x33,0x30,0xdc,0xd1,0x7d,0xaf,0x68,0x10,0x4b,0xde,0x3e +.byte 0x4a,0x70,0xbe,0x31,0x1a,0x37,0x28,0xee,0xe0,0xba,0x65,0x8b,0x7d,0xea,0x07,0xce,0xf2,0x51,0x3d,0xcb,0xb2,0x33,0xd8,0xf3,0xa4,0xa0,0xcd,0x53,0x76,0xf9,0x46,0x5b,0x82,0xf9,0x9d,0x0e,0x29,0x5b,0xcf,0x76,0xd4,0x5c,0x47,0xf1,0x98,0x02,0x5a,0x16,0x18,0xf2,0x61,0x6d,0x3e,0x64,0x7f,0xbe,0x13,0x18,0xc2,0x45,0xd2,0x87,0x17,0xff +.byte 0xf1,0x01,0x0b,0x5d,0x21,0x0d,0x73,0x9a,0xeb,0x82,0xc4,0x9a,0xb3,0xe4,0x31,0x44,0x58,0xa2,0xfd,0x76,0xf6,0xbe,0x6f,0x75,0xcc,0xbb,0xe3,0xa2,0xa9,0x78,0x0f,0x4b,0x1d,0x47,0x2d,0x32,0x2c,0x45,0x5e,0xcd,0x8f,0x13,0xe2,0x9a,0x9d,0xa2,0xce,0x73,0x54,0x20,0xc0,0x44,0x1c,0x26,0xde,0x0d,0x72,0xb2,0xfa,0x4d,0x32,0x35,0xac,0x69 +.byte 0x4d,0x16,0x4a,0xd5,0x51,0x33,0xc1,0xe0,0x90,0x9c,0x93,0x66,0xed,0x16,0xac,0x7e,0x79,0x2b,0x0f,0xb4,0x42,0xaf,0x80,0x22,0x80,0x07,0x7d,0x72,0xe4,0xb3,0x3a,0x2c,0xb8,0x68,0x14,0x4d,0x31,0x5f,0xbb,0xac,0x43,0x3b,0x28,0xd6,0x81,0x81,0x26,0xe5,0xc4,0x67,0x7c,0x4a,0x42,0xc4,0x1a,0x59,0x04,0x2d,0xb8,0x26,0xfc,0x4e,0xc7,0xfc +.byte 0x11,0x61,0xe3,0x4b,0x2c,0x3f,0xdb,0x43,0xe4,0x24,0xb4,0xd1,0xc0,0xc0,0x01,0xe1,0xeb,0x84,0x0b,0x6d,0x93,0x83,0x07,0x9f,0x01,0xb8,0x9d,0xe5,0x7e,0x4d,0xa2,0x05,0x3e,0xf2,0x40,0x59,0x88,0xc8,0x8c,0x62,0x44,0x95,0x20,0x96,0x28,0xa9,0x3f,0x7c,0xed,0x85,0x03,0x65,0x49,0xf7,0x94,0x3d,0x51,0xe2,0x8e,0x21,0x19,0x7b,0x55,0x5f +.byte 0x55,0x70,0xf8,0xf0,0xce,0xd9,0x1a,0x10,0xbb,0xfe,0x65,0x72,0x8a,0x5b,0x6c,0x27,0xd3,0x57,0x61,0x07,0x7b,0x85,0xd6,0x21,0xd2,0x07,0x81,0xaa,0x17,0x73,0xb5,0xef,0x2d,0x84,0x7b,0x8f,0xe0,0xb3,0x9e,0x9f,0x31,0x82,0x33,0x07,0x14,0x84,0x79,0x18,0xc4,0xec,0x20,0xb5,0xec,0x21,0x4b,0x51,0x78,0x96,0xc6,0xe7,0xf0,0x6a,0x7a,0xb5 +.byte 0xe5,0xc2,0xef,0x24,0x4c,0x57,0xb6,0xf5,0xee,0xe5,0x69,0x2b,0x73,0x9e,0x66,0x91,0x9d,0xd4,0x24,0x58,0x4b,0x72,0x68,0xf6,0x62,0xb4,0x0c,0xe3,0xbd,0x1f,0x0b,0x42,0x6c,0xf9,0x6e,0x6a,0x64,0x64,0x69,0xa5,0x6d,0xe7,0x38,0x9f,0xb2,0x65,0x35,0x6b,0xd9,0x20,0x84,0xe4,0x5f,0x8b,0xfd,0x58,0xab,0x5f,0xe1,0x4c,0xf7,0xd7,0xf5,0xe7 +.byte 0xae,0xe8,0xc1,0x68,0xfe,0x0c,0xb1,0xe2,0xe4,0xca,0xf0,0xf1,0x20,0xbc,0xf9,0x99,0xef,0x4e,0x63,0xca,0x89,0xe4,0x7c,0x17,0x49,0x40,0x47,0xce,0x67,0x8e,0xbd,0xd0,0x96,0x8b,0x5a,0x0d,0x2f,0xd0,0x8f,0x4f,0x42,0x06,0x01,0x8e,0x47,0x35,0x13,0x9e,0xd1,0x24,0x85,0xe4,0x17,0x59,0xe8,0x1c,0xb3,0x25,0x53,0xf9,0xb4,0x96,0xb1,0x33 +.byte 0x97,0xb2,0x60,0xc7,0xb3,0x48,0xa2,0xfc,0x7f,0x86,0x94,0x2a,0xd3,0x94,0xfe,0x6d,0xa6,0x7a,0xa1,0xe1,0x96,0x5b,0xe8,0xe4,0x91,0xfb,0xf3,0x2c,0x84,0xb4,0x2f,0xbe,0xc9,0xdd,0x1c,0x9f,0x72,0x12,0xcb,0xbd,0x22,0x07,0xc4,0xec,0x05,0xe8,0x32,0x47,0x21,0x27,0xf6,0xc1,0x36,0x59,0x25,0x6c,0xbe,0xb9,0x3e,0xd4,0x1b,0x59,0x11,0x27 +.byte 0x6b,0xa3,0x64,0x71,0x98,0xeb,0x21,0x65,0xc0,0x4c,0x30,0xbd,0x51,0x2b,0xc3,0xfb,0xb1,0x33,0x56,0x1e,0xf0,0x92,0x0f,0x4b,0x63,0x3a,0x9c,0xfb,0xd1,0xac,0x8c,0xf0,0x3e,0xb7,0x0b,0xd2,0x52,0x62,0xd8,0x37,0x9a,0xef,0x79,0xdc,0xcb,0x87,0x1e,0x3d,0x9d,0x91,0x12,0xba,0x78,0x8a,0x11,0x57,0x96,0x44,0x8e,0x2b,0xd2,0xe3,0x4d,0x27 +.byte 0xec,0xba,0xef,0x1c,0x04,0x8d,0x56,0x56,0x11,0x74,0xc0,0xcc,0x1f,0x3d,0x7a,0xad,0x79,0x49,0x59,0xa3,0x71,0xe0,0xf5,0x89,0x89,0x8f,0xcf,0x1e,0x63,0x77,0x91,0x91,0xf1,0x0c,0x1c,0xcc,0x77,0x00,0xd7,0x28,0x9f,0x68,0xbc,0xb6,0x9d,0x33,0x43,0xb2,0x4a,0x72,0x3e,0x57,0x26,0xd0,0x00,0x93,0xc9,0x4c,0xc9,0x53,0x52,0xd9,0xe2,0x31 +.byte 0xc5,0x7f,0xf6,0xb6,0xc2,0x10,0x51,0x67,0xae,0x63,0x35,0x74,0xcc,0xd4,0x05,0xb3,0x08,0x23,0x35,0x37,0x8e,0xf1,0xbb,0x1d,0x56,0xff,0x62,0xa2,0x13,0x7b,0x01,0x75,0x6d,0xb3,0x92,0x51,0xdc,0x6e,0x08,0x76,0x25,0x52,0xbf,0x9a,0xea,0x89,0x0f,0x96,0xcc,0x79,0xd4,0x72,0xcf,0x65,0x79,0x4e,0x40,0xa3,0xae,0x67,0x0c,0x82,0x85,0x05 +.byte 0xfd,0x43,0x84,0x17,0x24,0x79,0xa9,0xa7,0x7f,0x24,0x76,0x57,0x66,0x11,0xd5,0x33,0x30,0x42,0x5b,0x5f,0x7c,0x04,0x4b,0x45,0xc3,0x69,0x20,0x02,0x92,0xe3,0x6a,0x06,0x8f,0xdf,0x30,0xf6,0x17,0x8f,0xc6,0x8c,0x5e,0x42,0xf3,0x59,0x7a,0x3a,0x55,0x3a,0xc1,0x96,0xd5,0x67,0x3d,0xab,0x32,0xee,0xf0,0x08,0x28,0x73,0xb0,0x11,0x1a,0x92 +.byte 0x4d,0xcc,0x0c,0x86,0xb2,0xa1,0xbf,0x9f,0xcd,0xc7,0x1c,0xbc,0xee,0x39,0x77,0x75,0xfc,0xe6,0x3b,0x62,0xf2,0xaf,0xd5,0xb6,0x77,0x2d,0x86,0x38,0x13,0x00,0xdb,0x71,0x4a,0x87,0x03,0x6d,0x99,0x28,0xf8,0x6a,0x23,0x2e,0xe2,0xb8,0x9c,0x18,0x02,0x00,0x9e,0x5b,0xf0,0x6f,0x9b,0x32,0xdc,0x6b,0x61,0xeb,0xeb,0xe9,0xfc,0xee,0x44,0xbc +.byte 0x4a,0x88,0x04,0xc0,0x10,0xc8,0x65,0x6c,0xa4,0xae,0x9a,0x36,0xb6,0x68,0xd5,0xbf,0x6d,0xe3,0x6f,0x5d,0xad,0xd6,0xf9,0xc8,0x06,0x36,0x25,0x64,0xc9,0x5b,0x71,0x7f,0xbf,0xe3,0x56,0x31,0x2a,0x93,0x47,0x46,0x39,0x91,0x80,0xc5,0xdd,0xdd,0xa1,0x25,0x85,0xd9,0x05,0x49,0x4f,0x1b,0xeb,0x2f,0x6e,0xd9,0xe4,0x65,0x3d,0xcd,0xbd,0x47 +.byte 0x37,0x27,0xb0,0xd1,0x9b,0xa4,0x89,0xd5,0xa0,0x0f,0x8b,0xc5,0xfd,0x91,0xa8,0x86,0x22,0x65,0xf1,0xe1,0x1e,0xb6,0xf7,0x50,0xe6,0x1e,0xf0,0x2b,0x9d,0x02,0xc9,0xe8,0x2a,0xb8,0x9b,0x89,0x28,0x25,0x43,0xcf,0x23,0x08,0xe2,0xa7,0x70,0x31,0x89,0xab,0x5b,0xd9,0x2e,0xa9,0xe4,0xe9,0x1d,0x63,0x7f,0xc6,0xc1,0xfb,0x63,0x45,0x9c,0xf1 +.byte 0xd4,0xc3,0x56,0xb6,0xad,0xb3,0x00,0xce,0x12,0x9e,0x63,0x33,0x25,0xd3,0xb2,0xee,0xa7,0x6b,0xa1,0xfd,0x20,0xa3,0xb2,0x07,0x1a,0x9d,0xed,0xe0,0x1d,0x70,0x5b,0x9f,0xc0,0xbc,0x83,0x09,0x94,0x47,0x8c,0x05,0xef,0x73,0x96,0x31,0xc7,0x35,0xc2,0x2c,0x00,0x2a,0x68,0xd1,0xc4,0xb3,0x3d,0x84,0x44,0x8c,0x93,0xfd,0x64,0x00,0x77,0x46 +.byte 0x18,0xac,0x83,0x9d,0xe5,0xe5,0x46,0x61,0x37,0x72,0x9f,0x0e,0x76,0x55,0xf7,0xca,0x36,0x57,0x24,0x16,0xfc,0x11,0x27,0xaa,0x44,0xa4,0xb0,0x58,0x41,0x46,0x94,0xc7,0x3b,0x9c,0xa3,0xe4,0x89,0xd9,0xdb,0x7b,0x64,0x69,0x84,0x9f,0xc8,0x09,0x6f,0xf7,0xf0,0x58,0x10,0x56,0x9f,0x26,0xf0,0x74,0x0c,0x76,0xcb,0x9d,0x45,0x3d,0xe7,0x94 +.byte 0x54,0xa3,0x84,0x08,0xb5,0x9c,0xff,0xdb,0xba,0x62,0x5e,0x87,0x0d,0x11,0x5d,0x96,0x06,0xd6,0xec,0xf4,0x3e,0x9d,0x66,0xbd,0xc4,0x64,0xed,0x03,0xe0,0xad,0x3f,0x4e,0xb4,0xef,0x16,0xdd,0xee,0xd6,0x00,0x27,0x62,0x74,0x0a,0xe0,0x68,0x72,0x4c,0x6d,0x62,0x15,0x87,0x6a,0xf0,0x25,0x9f,0x33,0x1d,0x92,0x3b,0xa3,0xa4,0xf1,0x81,0xdf +.byte 0xa8,0xed,0xaf,0xa5,0x8d,0x19,0x20,0x72,0x03,0x91,0xf0,0x34,0x60,0x70,0xbe,0xaa,0xdf,0xaa,0x24,0x1a,0x1f,0x1a,0x8d,0xb0,0x7b,0xef,0x10,0x43,0x69,0x24,0x74,0xf2,0x72,0x71,0xa1,0x8f,0x85,0x75,0x3e,0x8c,0xf6,0x0e,0x88,0xe2,0x1d,0x5c,0xb8,0xf1,0xc4,0x8a,0x21,0x76,0x20,0x50,0x3f,0xb3,0x8b,0x9f,0xa4,0x45,0x9e,0x07,0x60,0x22 +.byte 0x2c,0xa6,0xb1,0xc2,0xd2,0xcb,0xc6,0xd8,0xe9,0x94,0x66,0xfb,0x10,0x73,0x92,0x25,0x7e,0x31,0x42,0xf4,0x4a,0x75,0xac,0x78,0x43,0xcb,0xc0,0xc9,0xb0,0xaf,0xb4,0x22,0x8f,0x51,0x36,0x0f,0x5a,0xb8,0xbb,0x44,0x03,0x09,0xd0,0xf9,0x04,0xc8,0x73,0x8e,0xa1,0x76,0x27,0xde,0x72,0xf4,0x3a,0x79,0x63,0x85,0x32,0x09,0xad,0x12,0xe4,0xd7 +.byte 0x8f,0x8e,0x24,0x03,0x4f,0xde,0x39,0xac,0x81,0xe8,0x64,0x09,0x17,0xd7,0x99,0xe6,0x62,0xb7,0x53,0x20,0x9f,0xb9,0x3a,0xb9,0xb1,0x81,0xfa,0x6e,0x33,0xe7,0x4a,0xca,0xd7,0xa7,0xfa,0x7a,0xbf,0x0b,0x0a,0x99,0x3c,0xc7,0xbd,0xef,0xc7,0x90,0xda,0x62,0x30,0xc6,0x94,0x94,0x6b,0xee,0xbd,0xb7,0x0d,0x86,0xc5,0xb1,0x9a,0xb9,0x86,0x34 +.byte 0xc2,0x81,0x2b,0x09,0x7a,0x88,0x09,0x65,0xcf,0x51,0x78,0x19,0x1d,0x5a,0x62,0x2f,0xb3,0x43,0x8d,0xf5,0x9d,0x26,0x2f,0x4a,0x27,0x96,0x22,0x1b,0x4c,0xc8,0xd9,0x73,0x4b,0x32,0x01,0x11,0x7b,0x59,0x85,0xda,0x50,0x92,0x17,0x45,0xd4,0x1f,0xcf,0x98,0xf6,0x2c,0x69,0xba,0x43,0x22,0xdc,0x36,0x31,0xfb,0x1e,0xe8,0x54,0x24,0x0f,0x24 +.byte 0x4c,0xcd,0xbe,0xdb,0xd8,0x23,0x69,0xe2,0x97,0xf5,0x66,0xb2,0x66,0x6c,0xf2,0x90,0xd0,0x15,0x14,0x9a,0x47,0x65,0x97,0xb0,0xf2,0x3e,0x35,0x09,0xd2,0x3d,0x01,0x9c,0xb3,0xfd,0xf3,0x32,0x46,0x4e,0x11,0xab,0x88,0x9e,0x04,0x6d,0xf0,0xe1,0x9d,0x48,0x01,0x24,0xc3,0x87,0xdf,0x58,0xb6,0x6d,0x6d,0x4f,0xb9,0x1b,0x13,0xee,0x03,0x5b +.byte 0x75,0x39,0x28,0x31,0x90,0x70,0x49,0x10,0x71,0x87,0x76,0x30,0xac,0x88,0xb0,0xf6,0x6c,0xaf,0x5b,0xf4,0xf3,0xe7,0x25,0x75,0x8c,0xa3,0xf4,0xa7,0xd8,0x94,0x78,0xc8,0x77,0xc1,0x48,0x6c,0x62,0xf6,0x2c,0xb5,0x41,0x59,0xf6,0xd3,0xae,0x1b,0x55,0xed,0xdf,0xd1,0x59,0x63,0x76,0x03,0x65,0xd3,0xd0,0xcd,0xb6,0x5b,0x8f,0x1a,0x78,0x88 +.byte 0x78,0x07,0x14,0x3f,0xc3,0xd4,0x1c,0x69,0xd8,0x15,0x25,0xca,0x76,0x15,0x24,0x7d,0xed,0x69,0x2a,0xb5,0x04,0xd2,0x3b,0xbd,0x7a,0xb2,0xae,0x04,0x51,0x85,0x2b,0x1b,0xb0,0x3f,0x6d,0xbc,0xa0,0xc7,0x19,0x40,0xab,0x75,0x51,0x4b,0xa8,0x5a,0xd7,0xb5,0xc7,0xa8,0xfc,0x4a,0xcf,0xa9,0x9c,0xe6,0x2e,0x35,0x51,0x3b,0x05,0x41,0x43,0x7c +.byte 0x1f,0x2e,0x16,0x5d,0x2f,0xa8,0xe9,0xce,0x6d,0x06,0xa7,0x5a,0xed,0x07,0x39,0xe4,0x7e,0xc3,0x01,0x2d,0x97,0xe4,0xc1,0x89,0x2c,0xb4,0xb1,0xb5,0x7f,0x0a,0xe2,0x9f,0x82,0x36,0xee,0x9b,0x76,0xbc,0x9d,0x37,0xdf,0x5e,0x81,0x95,0x9b,0x2b,0xc4,0x58,0x20,0x6a,0xd2,0xc7,0xb6,0x82,0xe6,0xa2,0x52,0x73,0x4a,0xaf,0x37,0x5a,0xf6,0x6b +.byte 0xc4,0x2b,0x53,0x4e,0xca,0x44,0x17,0x9f,0x1c,0xeb,0x4d,0xf2,0xd1,0xb0,0x35,0xaa,0xc3,0xfe,0x77,0x34,0x2a,0x4a,0xe8,0x85,0x96,0x2f,0xa4,0x7d,0xdf,0xd0,0x6a,0x4a,0x0c,0x9b,0xd9,0x6a,0x00,0x92,0xb4,0xb1,0x9f,0xc3,0x56,0xee,0xcb,0xa5,0x3a,0x37,0x68,0xc8,0x7c,0x1e,0xa8,0x0a,0x3d,0xbc,0xd1,0xd0,0xd7,0x8b,0x32,0x34,0x20,0xfc +.byte 0xd3,0x9e,0xf5,0x18,0x3a,0xb9,0x87,0xae,0xde,0x6c,0xc0,0x7d,0xbd,0x20,0x00,0xe5,0x7b,0xcb,0xf9,0x7d,0x70,0x9a,0x10,0x45,0xc9,0x33,0x13,0x9d,0x2c,0x16,0x67,0xe6,0x36,0x38,0xcf,0xa2,0xf1,0xad,0xec,0x48,0x7f,0x9b,0x2a,0xdc,0x13,0xe2,0xee,0xef,0xf2,0x5c,0x3f,0x52,0x3a,0x72,0x79,0x9b,0xba,0x50,0xb2,0x2b,0xfb,0x97,0x8e,0xe6 +.byte 0x27,0x39,0x63,0x72,0x05,0x11,0x7d,0x2e,0xa8,0x44,0x08,0xf7,0xf3,0x26,0xe5,0xe4,0x6c,0x98,0x7b,0xb1,0x42,0x6d,0x74,0xd4,0x3b,0xfa,0x35,0xfa,0x0a,0xac,0x5e,0x9e,0x8f,0xc7,0x07,0xc5,0x50,0x25,0xfd,0xbf,0x13,0x52,0x3d,0xf1,0x18,0x1e,0x19,0x8c,0xf3,0x8b,0x4d,0xc8,0xfb,0x76,0xa4,0xe3,0x3f,0xb2,0x47,0x9c,0x50,0x97,0x32,0x65 +.byte 0x9e,0x42,0x81,0x21,0xd1,0x92,0xd2,0x81,0x4a,0x93,0x68,0xa2,0xc1,0x76,0xc8,0x40,0xce,0xfe,0x4e,0xc5,0xa7,0xb2,0x77,0x9f,0xc8,0xe5,0x41,0xb1,0xda,0x15,0xf6,0xfa,0x21,0x3f,0x11,0x5c,0xc6,0x62,0xda,0x01,0x7f,0x0f,0x9f,0x9e,0x98,0xfe,0x38,0x53,0x6c,0x7f,0xba,0x8b,0x55,0x01,0x36,0x33,0x41,0x5e,0xa9,0x78,0xbf,0x2e,0x60,0x4f +.byte 0xcb,0xe9,0x27,0x09,0x8c,0x01,0x2d,0x82,0x7d,0x3f,0xaf,0x8f,0x1e,0x37,0x79,0x35,0xfb,0xce,0x83,0xc5,0xf8,0xc5,0x54,0xfd,0x50,0xec,0x31,0xd1,0xb5,0x8a,0x4d,0x37,0xf6,0x7f,0x0e,0xbe,0x35,0xdd,0xa8,0x9e,0x5e,0xb9,0x3c,0xf4,0x2b,0xd2,0x97,0x56,0xd0,0x28,0xcb,0x60,0x27,0xcf,0x27,0x68,0x8a,0xa1,0xbf,0x9f,0xa3,0x45,0x4a,0x44 +.byte 0x71,0xe2,0xb2,0x9c,0x69,0x0b,0x18,0x69,0xcf,0x03,0xcc,0xc3,0x93,0xe0,0xf5,0xb7,0x4e,0xa4,0xdc,0x96,0xe0,0x2e,0xf8,0x3b,0xc6,0x67,0x30,0x06,0x5e,0xb9,0xb9,0x7d,0xaf,0x97,0x38,0x9a,0xf4,0x22,0x20,0x5a,0x9e,0x83,0x26,0x3c,0xcc,0x93,0x84,0x20,0x15,0x2e,0x85,0x23,0x17,0x1d,0x28,0xb4,0xe2,0x8f,0x2d,0x22,0x99,0x66,0xfd,0x6a +.byte 0xa8,0xe6,0xb7,0x19,0x18,0xec,0xbd,0x54,0xc2,0xcc,0xb7,0xb4,0x6b,0x10,0xdd,0xb5,0xe3,0x3b,0xb7,0x77,0xbf,0x66,0x65,0x82,0x6a,0xc6,0x0d,0x26,0xe6,0xe8,0xe1,0x96,0xe4,0x0b,0x3c,0xe3,0xf2,0xfb,0xd6,0x91,0x5d,0xb6,0x08,0x15,0x67,0x10,0xfa,0xf8,0xdc,0x72,0x84,0xca,0x48,0x29,0x75,0x98,0x62,0x30,0x43,0xa9,0xf1,0xde,0x58,0xb5 +.byte 0x6e,0x67,0x53,0x62,0x0d,0x06,0xa8,0x97,0x35,0x04,0x02,0x34,0x3f,0xd7,0x77,0x38,0xed,0x51,0x32,0x7c,0x6f,0x25,0x94,0x04,0x30,0xa5,0xfc,0xf1,0xb0,0x65,0x77,0x16,0xec,0xb0,0xf9,0x6d,0xaf,0xbc,0x75,0x6e,0x29,0x44,0x20,0x86,0x36,0xbe,0x22,0xe0,0xe1,0xc4,0x0c,0x97,0x10,0x45,0x3e,0x06,0xc3,0xee,0xa5,0x1f,0x97,0xc7,0xde,0xdb +.byte 0xf1,0x05,0xe3,0xb7,0x24,0xc5,0xa5,0xca,0x4e,0x8e,0x9e,0x44,0x7e,0x98,0xb1,0x3c,0xe9,0xa6,0xe5,0xa6,0x08,0xcb,0x08,0xd7,0xf6,0x38,0x37,0xa4,0x46,0xd1,0xdc,0x53,0x6f,0x6c,0x3f,0xca,0xa1,0x9b,0x7c,0xa6,0x44,0xd4,0x08,0x33,0xd2,0xf8,0x32,0xd2,0x4f,0x60,0x75,0x0f,0x49,0xf1,0x70,0x52,0x56,0x16,0x5b,0x3e,0x34,0x0e,0xe4,0x94 +.byte 0xc3,0xa9,0xd4,0x1c,0x9e,0xa4,0x10,0xce,0xc1,0x69,0x5b,0x3a,0xc9,0xd5,0xab,0x98,0x81,0x78,0x42,0x7e,0xf2,0x76,0x10,0xad,0x97,0x85,0x98,0x2f,0xe2,0x3f,0xb1,0x1d,0xc0,0x4d,0xa4,0x0b,0x54,0x7e,0x19,0x16,0x0a,0x71,0x74,0x37,0xfd,0x67,0x23,0x86,0xb2,0x3b,0x1e,0x49,0x92,0x92,0x1b,0x5f,0x65,0x56,0x76,0x6d,0x97,0x3b,0x91,0xc0 +.byte 0x5a,0x7e,0xf1,0x5b,0xe9,0x83,0xb9,0x67,0x2f,0xe1,0x0c,0xcf,0xe9,0x51,0x26,0x45,0x03,0x06,0x63,0xa4,0xb2,0x06,0xe0,0x8e,0xa3,0xbf,0xf5,0x7c,0x19,0xdf,0xfe,0x38,0x28,0x98,0xa1,0x23,0x16,0x69,0xc4,0x9f,0x20,0xe4,0x42,0x27,0x4e,0x7b,0xc9,0x42,0x5e,0xd2,0xb9,0xbf,0x33,0x03,0xbb,0x96,0x6d,0x80,0x65,0x90,0x3b,0x82,0x5b,0x68 +.byte 0x46,0x4f,0xe3,0xe0,0x0e,0xc5,0x90,0x91,0x80,0xf8,0xf4,0x9c,0xfe,0x03,0xaf,0x31,0x44,0xb7,0xfc,0x1f,0x65,0xc8,0x65,0x68,0xcc,0x27,0xb4,0x0d,0x81,0x14,0x9e,0x52,0xab,0xdd,0x71,0xf6,0xd9,0xcf,0x29,0x04,0xcd,0xae,0x6f,0xd6,0x41,0xb5,0xfd,0x1d,0x0f,0xbf,0x71,0xc2,0x60,0x98,0xb9,0xc0,0x6e,0x8a,0x2c,0x7d,0xec,0x31,0xa5,0xea +.byte 0x1a,0xb1,0xe4,0xc2,0x36,0xcb,0xf0,0xf4,0x3f,0x1d,0x03,0x01,0xcd,0xac,0xd0,0x9d,0x2e,0xa3,0xc4,0x54,0x49,0x75,0x90,0xac,0x7e,0x1e,0xc3,0x90,0xab,0x55,0xb0,0x34,0x0d,0xd6,0x99,0xb5,0x40,0xda,0xdd,0x30,0x57,0x61,0x15,0xec,0x8f,0x8c,0xc7,0xda,0xfc,0xf5,0x0a,0x86,0xd8,0x6b,0x0f,0x6e,0x09,0xb8,0x50,0x2a,0xea,0x51,0x84,0x33 +.byte 0x7a,0x97,0x0c,0x56,0x61,0x2c,0xd9,0x83,0xb9,0xb1,0x53,0x31,0x72,0x20,0x79,0x85,0x7f,0xdc,0xb8,0xfe,0xfa,0x9a,0xd4,0x6a,0x3c,0xc7,0xcc,0x75,0x20,0xba,0x9c,0xb9,0x1a,0xff,0x9c,0xbe,0xfd,0x87,0xb4,0xd7,0xe8,0x5e,0x22,0x6a,0x1b,0x91,0x52,0x6a,0x58,0xbc,0xf4,0xde,0xcc,0x18,0x37,0x0e,0xf5,0x22,0x91,0xd2,0x4f,0x08,0x91,0x62 +.byte 0x1c,0xb7,0xa0,0x7e,0x66,0x97,0xda,0xa0,0x3c,0xc8,0xe8,0xdc,0x61,0xa4,0x64,0x8b,0x0a,0x43,0x90,0x0c,0x78,0xd9,0x96,0x8a,0xb0,0x17,0x0f,0x32,0x17,0x11,0x82,0x69,0x9d,0x7c,0xa9,0xfd,0x9b,0xe3,0xeb,0x0d,0x44,0x1d,0xcb,0xf6,0xee,0x26,0x6b,0xd5,0x4c,0x49,0x69,0x18,0xd7,0xf3,0x63,0xd9,0x7e,0x83,0xdd,0xa3,0x2d,0xdf,0x88,0x10 +.byte 0xd1,0x5c,0xb0,0x7e,0x44,0xfe,0x64,0x39,0x33,0x05,0x04,0x54,0x74,0x4d,0xd5,0xbc,0xdf,0x19,0x52,0x81,0x60,0x92,0xc5,0x4e,0xa4,0xff,0xf0,0xa2,0xfd,0x88,0x96,0xde,0xb4,0x8d,0x58,0x06,0xfb,0x96,0x6f,0x0e,0xb0,0x4a,0x2b,0xed,0x15,0xa7,0xfb,0x9f,0xf2,0x30,0xc4,0xce,0x02,0x4d,0x83,0xb8,0x5d,0x10,0x60,0xb8,0xbc,0x05,0xa2,0xd4 +.byte 0xf1,0xae,0x46,0x56,0xb9,0xac,0x68,0x79,0x41,0x90,0xee,0x79,0xda,0x3a,0x91,0x7a,0xf6,0xdb,0xe3,0xea,0x91,0x48,0x77,0x4a,0xa3,0xab,0x9c,0x99,0x49,0x1f,0xc9,0xcd,0xe7,0x2e,0xe3,0xe7,0x78,0x6d,0x07,0x1b,0xc6,0x08,0x48,0xd8,0x20,0xff,0x19,0x8a,0x73,0x1d,0xc6,0xa1,0xd4,0x95,0x33,0xf7,0x45,0xab,0xea,0x05,0x3e,0xdf,0xde,0x68 +.byte 0xb2,0xb6,0xef,0x71,0xb4,0xd1,0x09,0x4b,0x43,0x16,0x35,0x1a,0xb6,0xcb,0x78,0x63,0xca,0x9e,0x9a,0xe3,0x86,0xb2,0x8e,0x7b,0x68,0x89,0xa7,0x5c,0xd3,0x06,0x21,0x88,0x94,0xde,0xa1,0xb1,0x3a,0xe8,0xb7,0xfa,0x58,0xc5,0xc8,0x01,0xfa,0x56,0xe4,0x0e,0x6b,0xeb,0x5d,0x67,0xf4,0x63,0xd4,0x44,0xe2,0xe7,0x42,0xfe,0x09,0x58,0xdf,0xd9 +.byte 0x1d,0xb7,0x14,0x91,0xac,0x88,0x49,0xf6,0x7c,0x03,0x92,0x11,0xb4,0x66,0x68,0x6c,0x94,0x2a,0x22,0xaf,0xa6,0xb1,0x29,0x2a,0xae,0xdd,0xa8,0x65,0xe4,0xa9,0x39,0x00,0x1e,0xca,0x17,0x99,0xba,0xd6,0xf2,0x20,0x21,0xbf,0x1a,0xab,0xca,0x7c,0x92,0x22,0xee,0x3c,0x0c,0xc6,0x63,0xcc,0x86,0xfe,0xc0,0x8f,0xac,0x18,0x4e,0x2b,0xa5,0x2e +.byte 0x46,0x57,0x8a,0xbf,0xdc,0xd1,0xd2,0x2c,0x5b,0xe2,0x96,0x81,0xca,0x41,0xb5,0x17,0x38,0x4a,0xa4,0xd2,0x0e,0xac,0x5d,0xe9,0x44,0x63,0x1b,0xb8,0x81,0xd6,0x69,0x1c,0x99,0xc5,0xdb,0xdd,0x18,0xc1,0x6d,0x28,0x7d,0x36,0x52,0x82,0xaa,0x1a,0x10,0x01,0x9d,0xf1,0x7b,0x09,0x69,0x56,0xb1,0x31,0xa3,0x54,0x3c,0x56,0xf9,0x82,0x8c,0x06 +.byte 0x5a,0x32,0x2d,0xc0,0x7c,0x7e,0x91,0x6d,0x73,0x7b,0x7c,0x45,0x0b,0x2c,0x2a,0x4f,0x3c,0xea,0x6b,0x2b,0x84,0x76,0xab,0x8d,0x4c,0x5c,0x64,0xa3,0x97,0x9f,0x56,0x20,0x05,0xf9,0xc2,0x20,0xf3,0xd0,0x6a,0x7f,0x7d,0x12,0xfc,0x20,0x52,0x5d,0xff,0x92,0xaf,0x4e,0x7f,0x8f,0x2f,0xd0,0x73,0x06,0x23,0x09,0xce,0x11,0xc0,0x1b,0x48,0x7d +.byte 0x11,0x51,0x06,0x0e,0x05,0x95,0xca,0x42,0x71,0x87,0xa3,0xa3,0xc1,0x27,0xf8,0xb1,0x24,0x92,0x38,0x95,0xf6,0x8f,0x3b,0x70,0x74,0x19,0x9b,0x08,0xb3,0x49,0xe9,0x57,0xd4,0xce,0x5b,0xdd,0xab,0x95,0x26,0xe9,0x70,0x21,0xef,0x16,0xdd,0x36,0x89,0xe5,0x9e,0xaf,0xc5,0x28,0x0c,0xd3,0x67,0x64,0xbc,0xfb,0x18,0x17,0x15,0x1e,0xa7,0xb7 +.byte 0x72,0x3d,0xfd,0x10,0x5c,0xa2,0xc1,0xbf,0x62,0x79,0x2b,0xa7,0xb9,0x1f,0x73,0xe6,0x11,0xd8,0xbc,0x74,0x6c,0x45,0x95,0xef,0xa2,0xda,0x90,0xc3,0x00,0x00,0xbb,0xc7,0x28,0x36,0x82,0xd4,0x5e,0x5c,0x11,0xea,0x7c,0xf6,0x79,0x66,0xff,0x93,0x77,0x49,0x05,0xc9,0xc1,0x8d,0x5c,0xf6,0xff,0xb9,0xf9,0xcd,0xb3,0x01,0x83,0x83,0x43,0x2d +.byte 0xa1,0x90,0x73,0xc9,0x32,0xae,0xdb,0xd0,0xf3,0x61,0x63,0x72,0x06,0xde,0x21,0x7b,0x3b,0x2d,0xec,0xd3,0x1d,0xfe,0xbd,0x6e,0xd8,0xe3,0x39,0xe0,0xa1,0x9f,0x67,0xaf,0xab,0x79,0xbc,0x59,0xf9,0xa7,0xdf,0x28,0x75,0xea,0x34,0x6b,0x25,0xde,0x49,0x1b,0x07,0x95,0x19,0x47,0x86,0x46,0x7b,0x68,0x30,0x70,0xec,0x9c,0x05,0xb6,0xc9,0x00 +.byte 0x68,0x10,0x4b,0xc4,0xe5,0xf1,0x67,0x3f,0xd4,0x3c,0xd6,0x49,0x98,0x71,0x23,0xff,0x07,0x6e,0x01,0x01,0x08,0x08,0x3d,0x8a,0xa1,0x71,0xdf,0x25,0x1a,0xef,0x60,0x86,0x6d,0x1c,0xd9,0x90,0x29,0x95,0xf2,0x4c,0x96,0xd3,0x17,0xe8,0x96,0x32,0x25,0x8c,0x65,0x38,0xbc,0x44,0x6a,0x5a,0xef,0x5a,0x72,0x12,0x43,0x2b,0xaf,0xc3,0xdc,0xb3 +.byte 0x6c,0x9f,0x57,0x61,0x2f,0x12,0x3f,0x72,0x16,0x4f,0x34,0xe3,0xb5,0xca,0x72,0xca,0x1c,0xdb,0xd2,0x8d,0x70,0x1f,0x19,0x75,0xb3,0x1b,0xdf,0xdb,0xb3,0xbf,0x6c,0x9a,0x70,0x64,0xa8,0xac,0x30,0x2d,0x4b,0x30,0xf5,0x4f,0x12,0x19,0xbd,0x65,0x25,0x70,0x33,0xe1,0x6f,0x18,0xdf,0x17,0xec,0xa3,0x80,0x51,0x6e,0xbb,0x33,0xa5,0xa8,0x58 +.byte 0x95,0x3c,0xab,0x86,0xd1,0x33,0xbe,0x55,0x04,0x8c,0x20,0x0d,0xfc,0x1a,0xa9,0x9d,0xb1,0x16,0x42,0x56,0x20,0xcc,0xa6,0x73,0xa0,0x85,0x3d,0xbf,0x1e,0xe0,0x01,0x51,0xd2,0xd7,0x2e,0x9d,0xd8,0x3c,0xea,0x03,0xf9,0x9a,0xbf,0x19,0x17,0x04,0x99,0xaf,0x8b,0xfc,0x9c,0x86,0xdf,0x58,0x78,0xfc,0x54,0x0d,0xac,0x26,0x27,0x2f,0x2e,0xbc +.byte 0xdd,0x4a,0xd5,0x6f,0x7c,0xd8,0x93,0xe3,0x51,0x9e,0xcc,0xc8,0xd2,0xfe,0x68,0xfb,0x5b,0x22,0xda,0xef,0x76,0xb9,0xc3,0xdd,0x13,0x52,0x24,0xb6,0x23,0x1f,0x69,0x22,0xb6,0xf5,0x86,0xff,0x2e,0x6e,0xd0,0xe0,0x21,0xbc,0x31,0x81,0xb5,0xc5,0xdb,0x36,0x58,0x44,0xe7,0xb8,0xf7,0xfd,0xd3,0x34,0xee,0xab,0xe6,0x99,0xf2,0x84,0x86,0x9b +.byte 0x67,0x45,0x08,0x07,0x66,0xae,0x6a,0x55,0xa2,0x74,0x46,0xda,0x02,0x82,0x67,0x93,0x60,0x64,0x5d,0x1f,0xac,0xe7,0x36,0xb6,0xcd,0x31,0x28,0x78,0x93,0xcd,0x54,0xe9,0x42,0xbb,0xb4,0xb3,0x15,0x72,0x12,0x31,0x85,0x15,0x68,0x3a,0x31,0x35,0xd6,0xc9,0x0d,0x3f,0xa0,0x4b,0x36,0x03,0xda,0xfd,0x7a,0xd6,0xce,0x0c,0xf5,0x14,0x23,0x71 +.byte 0x47,0x85,0x64,0xe7,0xe7,0x8b,0x8e,0x25,0x03,0x32,0x5f,0xa9,0x3b,0xdb,0x2b,0x27,0x7c,0x02,0xfb,0x79,0xd7,0x7a,0x76,0x75,0x69,0xfd,0x74,0x24,0xd2,0x72,0x8c,0xdd,0xc5,0xa1,0x45,0x90,0x50,0x65,0x95,0x41,0xae,0x7e,0x5c,0x83,0x3e,0x24,0x3c,0x02,0xa9,0x37,0x49,0x36,0x63,0x2f,0x18,0x92,0x3a,0x8a,0xe5,0x2a,0x6a,0x5c,0xa7,0x3e +.byte 0x98,0x24,0xfd,0xd9,0x3b,0x2d,0x4c,0xe2,0x8e,0x05,0x5b,0xdd,0x47,0x0f,0x19,0x5a,0x62,0x94,0xd6,0x6e,0x45,0xd8,0x99,0x43,0x78,0xa0,0xb1,0xdf,0x68,0x8a,0x56,0xa8,0xfb,0x2e,0x52,0x4e,0xfa,0x21,0xec,0x62,0x14,0xf5,0x90,0xdb,0x8c,0x02,0xa7,0xff,0x29,0x22,0xb8,0x40,0x87,0x58,0xda,0x4e,0xfd,0xab,0xeb,0xa2,0x40,0xce,0xfc,0x58 +.byte 0x46,0x37,0x3f,0x04,0x4e,0x36,0x76,0x44,0x3c,0xfc,0x54,0xb8,0x6f,0x4b,0x66,0x6a,0x4a,0x78,0x8f,0x33,0x86,0x07,0xe4,0x3c,0xb5,0x0f,0x86,0x2e,0x21,0x7e,0x44,0xce,0x18,0x77,0xe0,0xcc,0xd7,0x7f,0xc9,0xac,0xb7,0x2b,0x94,0xb5,0x91,0xcd,0x2c,0xfa,0xc7,0x98,0xbd,0xb0,0x2a,0x85,0x77,0xcf,0x82,0xd9,0xae,0x76,0x33,0x34,0xc0,0x9d +.byte 0x3a,0xbc,0x27,0xbc,0x97,0x25,0xf4,0xf1,0x43,0x53,0xac,0xf6,0xde,0xf5,0x1f,0xa6,0x6a,0xd5,0xe3,0x11,0x32,0x49,0x46,0x5b,0x56,0x68,0x07,0xdb,0x03,0xad,0xc2,0x35,0x16,0x8f,0x01,0xcc,0x8a,0xd2,0x0c,0x6b,0xb2,0x62,0x73,0x99,0xb5,0x74,0xf1,0x4b,0x2e,0xbc,0x8e,0xed,0xc0,0x55,0x56,0x40,0xae,0x24,0xf2,0x7e,0x1f,0xba,0x9d,0xc4 +.byte 0xd1,0x69,0xd3,0xba,0x21,0x83,0xf5,0xc4,0xbf,0x78,0x96,0x74,0xa1,0xd8,0x8c,0x35,0xba,0x9f,0xa0,0x0f,0xb5,0x6a,0xb2,0x72,0x52,0xfa,0x02,0x71,0xbb,0x79,0x61,0xbd,0xa9,0xee,0x22,0x7c,0xc5,0xac,0x6b,0x52,0x67,0xab,0xc4,0xd2,0x8d,0x26,0x1c,0x2b,0xaf,0x0c,0xa4,0xce,0xb5,0x11,0x99,0x4d,0x22,0x69,0x68,0xe0,0xc6,0x3e,0x84,0x3d +.byte 0xeb,0xad,0xc9,0x5b,0xb5,0xb4,0xba,0x06,0x9b,0x0a,0xb2,0x54,0x89,0xf2,0xb0,0x5f,0x41,0xb4,0x8b,0x21,0x31,0x29,0x94,0x52,0x1e,0xa7,0xc4,0xc2,0x97,0xb9,0x74,0x95,0xa3,0x30,0xfb,0x02,0x77,0x01,0x4f,0x32,0x03,0x34,0x8f,0x51,0x2d,0x10,0x61,0xee,0xc5,0x2f,0x89,0x42,0x3c,0xbe,0xed,0x66,0xa6,0x7a,0x10,0xc6,0x06,0x7e,0xb2,0x3d +.byte 0xf2,0xc9,0xd1,0x08,0x97,0x6c,0x6f,0x6d,0x06,0x9d,0x72,0xd0,0x5e,0x79,0x3b,0xa5,0xa5,0xd0,0xdc,0xc6,0xda,0x73,0xd2,0xf3,0x0a,0xfd,0x94,0xc2,0x9c,0x4b,0x85,0x38,0x8d,0xb2,0xfb,0x29,0xdd,0x90,0xc2,0xb7,0x8f,0x2c,0x52,0xa2,0x32,0x5e,0xa1,0x0f,0x62,0x38,0x58,0xfa,0x46,0x4e,0x87,0x4b,0xcf,0xc5,0xe9,0xfc,0xf2,0x97,0x62,0xdd +.byte 0x92,0xd2,0x41,0x7b,0xa2,0x2a,0xae,0x6e,0x4d,0xbc,0xef,0x43,0x18,0x6e,0xbb,0xe5,0x06,0x45,0x53,0xa1,0x00,0xef,0xf5,0x4b,0xad,0xbd,0xa5,0x2c,0x77,0x0a,0x37,0x04,0x22,0x95,0xeb,0x7b,0xc1,0x3c,0x20,0x0a,0x44,0xdf,0xa2,0x23,0xc9,0xfc,0x85,0xf3,0x5b,0x9b,0x0f,0x40,0x2a,0xe3,0xc7,0x5a,0xa1,0xf6,0xe4,0x39,0x2a,0xfe,0xd7,0xe7 +.byte 0x33,0xd8,0xbc,0xd6,0x1f,0xef,0xac,0xa9,0x3f,0x2d,0x55,0xb0,0x85,0x74,0xef,0xeb,0xcd,0x9b,0x23,0xa3,0xe6,0x19,0xde,0xea,0x7c,0x9c,0x83,0x48,0x4b,0x12,0xfd,0xe3,0xcb,0x1b,0x70,0x2d,0x9f,0x2c,0x13,0x82,0x87,0x68,0xca,0x60,0x5e,0xc0,0x2e,0x60,0xde,0xf2,0x6b,0x78,0x0a,0x63,0xaa,0x9c,0x9b,0x61,0x63,0xc7,0x0c,0x98,0x92,0x68 +.byte 0xc7,0x44,0x00,0x6a,0x76,0x43,0xa0,0x61,0x7c,0x37,0x62,0x1a,0xd4,0x9b,0x58,0x59,0xe5,0xae,0x78,0x79,0x80,0xf0,0x75,0x68,0x9e,0xab,0x02,0xb8,0x00,0xc5,0x33,0x0d,0xea,0xb1,0x91,0x0f,0x17,0x57,0x96,0x23,0x8d,0x36,0x4d,0x89,0x94,0x42,0xc9,0x61,0x6e,0xf6,0x9f,0x37,0xee,0xa5,0x4b,0x3d,0x06,0x08,0xee,0x9a,0x7c,0x73,0xa9,0x58 +.byte 0xcd,0xcb,0x78,0xa9,0x3d,0x5c,0x11,0x0e,0x5a,0xd9,0xb0,0x7b,0xc4,0x3e,0x83,0xdc,0xe2,0x11,0xe9,0x6d,0x8a,0x8b,0x24,0x28,0x1d,0x7e,0x45,0x1b,0x05,0x5a,0x6b,0x97,0x1c,0x25,0x15,0x84,0x5c,0x3f,0x95,0x44,0xd5,0x4f,0x3c,0x4b,0x52,0xb1,0x0b,0x6a,0xb3,0xae,0x4e,0x1b,0x12,0xcf,0x16,0x78,0xd7,0xcb,0x32,0x43,0x39,0x88,0xf4,0x5e +.byte 0x26,0x29,0xe7,0x93,0x08,0x19,0x14,0x88,0x8f,0x54,0x91,0x13,0xb6,0x57,0xd1,0x87,0xd4,0x9d,0xf7,0xec,0x9b,0x22,0x6b,0x91,0x79,0x9d,0x6c,0x32,0x47,0x4a,0x79,0x55,0x7d,0xac,0x87,0x98,0x59,0x97,0xa5,0x71,0xbc,0xbf,0x1b,0xf0,0x6f,0xbb,0x81,0x8e,0xc2,0xef,0x7c,0x63,0x2f,0x80,0x37,0xb6,0xc5,0xae,0x59,0x5e,0x57,0x5e,0x1f,0x3a +.byte 0xe5,0x6b,0x6b,0x5e,0xdb,0x8e,0xd2,0x87,0xf7,0x94,0x7b,0x11,0x0e,0x4b,0xa6,0x9f,0x49,0xc6,0x68,0xc7,0x52,0x5f,0x28,0x87,0x33,0x84,0x52,0x5f,0xc8,0x5f,0x81,0x85,0x10,0xe8,0x92,0xce,0x13,0x6c,0x01,0x28,0x5e,0x59,0x8f,0xbb,0xa9,0x9c,0xdc,0x85,0xd3,0x73,0xa0,0x5a,0xbf,0x5b,0x04,0x80,0x99,0x90,0xc8,0x16,0x44,0x0d,0x09,0x01 +.byte 0xcd,0x24,0xe7,0x59,0xe7,0x42,0xe0,0xdd,0x01,0x93,0x1f,0x9e,0x1f,0x36,0xdb,0xcd,0x49,0xdb,0xea,0xa9,0x63,0x71,0xb9,0x2c,0xcd,0xca,0x1a,0x64,0xe1,0x95,0xbe,0xe1,0x64,0x2e,0xc7,0x59,0x15,0x61,0xe1,0xf9,0x45,0x0f,0x2a,0x3a,0x85,0xf8,0x7c,0x06,0xae,0x53,0x84,0xd2,0xe7,0xee,0x8b,0xbf,0x7a,0x72,0xa3,0x57,0xf1,0xc2,0x12,0x40 +.byte 0x9c,0x93,0xe1,0x04,0x81,0xde,0xc6,0xa8,0xae,0x4f,0x5c,0x31,0x93,0xc7,0x11,0x1d,0x89,0x70,0x85,0xd5,0x6f,0xab,0x58,0x1f,0x3f,0x76,0x45,0x7e,0x19,0xd0,0x6c,0xc1,0x41,0xa9,0x64,0x0a,0x79,0xb5,0xe0,0x9e,0xbc,0x4f,0x10,0x0c,0xac,0xfc,0x54,0xad,0xcf,0xb8,0xd0,0xfd,0x9b,0xed,0xea,0x54,0x05,0xbf,0x4f,0x91,0xbd,0x16,0x4a,0x57 +.byte 0xa9,0xda,0x38,0xb9,0x40,0x0d,0x63,0x68,0x83,0x7d,0xec,0x1c,0xe6,0x7f,0x9c,0xec,0x16,0x4e,0x0b,0xd0,0x91,0xb4,0x2c,0x04,0x65,0xb8,0x12,0xdf,0x3f,0xff,0x6a,0x08,0x4e,0x65,0xdf,0x09,0xa5,0xea,0xb1,0xac,0xa9,0x67,0xd2,0xbb,0x73,0x51,0xd2,0x37,0x72,0xfc,0x3f,0x69,0xe2,0x3f,0x01,0x94,0x3a,0xf7,0x23,0x0e,0x5d,0x23,0x44,0x82 +.byte 0xc7,0x38,0x35,0x9f,0xfa,0x13,0x15,0x47,0x0d,0x18,0xab,0x02,0x39,0x6e,0xb2,0x7c,0x29,0x11,0x9a,0x5a,0x01,0x2d,0xb2,0x10,0xea,0x9d,0xb7,0x37,0x4b,0xf2,0x2b,0x76,0x22,0xf7,0xaf,0x8a,0x5f,0x1d,0x6b,0xb2,0x13,0x9e,0x84,0xf5,0xbc,0x6e,0xad,0x66,0x5c,0x1b,0x5d,0x12,0xb0,0xe1,0x48,0x94,0x83,0xa0,0x26,0x54,0xd2,0xfd,0x3c,0x8d +.byte 0x81,0xac,0x31,0x9a,0x15,0xc6,0xd8,0xd5,0x07,0x1b,0x21,0x3f,0x04,0x40,0x3a,0x60,0x80,0x5f,0x1f,0x42,0x3e,0xd7,0x2b,0x7a,0x5f,0x71,0x93,0xb4,0x9d,0xf0,0x8b,0x5e,0xf1,0xc6,0x19,0x0a,0xa9,0x43,0xac,0xb2,0xc1,0x73,0x0d,0x44,0x6a,0x92,0x22,0xd0,0xda,0x40,0x14,0x7d,0x88,0xd1,0x5e,0x10,0xc9,0xa4,0x4d,0xd8,0xe0,0x7d,0x74,0x1b +.byte 0x2b,0xcb,0x50,0x24,0xbd,0x50,0x4a,0xe4,0xed,0x0e,0xe8,0xc0,0x5b,0x50,0x6d,0xf5,0x68,0x59,0xd1,0xc3,0x6f,0x32,0x86,0x29,0xe0,0x32,0x3f,0x05,0x86,0xa2,0x7f,0x93,0xd8,0xb7,0x02,0x68,0xb3,0x16,0xaa,0x0c,0xd3,0x4d,0xec,0x9a,0x66,0x06,0x7c,0x74,0x35,0x6f,0xde,0x8b,0xd9,0xdb,0x79,0x0a,0x15,0x84,0xc4,0x63,0xba,0x42,0xa2,0x3c +.byte 0x29,0xc8,0x65,0xdc,0x06,0x60,0x0a,0x08,0x4e,0x80,0x33,0x5c,0xfa,0x4b,0x91,0xdb,0xf6,0x57,0xd6,0x25,0x7d,0x70,0x80,0x09,0xb2,0x27,0xdb,0x80,0x4c,0xa7,0xe8,0x35,0xf5,0x18,0x2d,0x10,0x62,0x22,0xf9,0xb1,0x22,0xf3,0x9b,0x74,0xa0,0xc5,0x25,0xd3,0x44,0xc9,0x27,0x7c,0xba,0x01,0xfe,0x32,0x23,0xf7,0x90,0x90,0xbc,0x0d,0xad,0x9e +.byte 0x22,0x77,0xc5,0xfb,0xf2,0x0e,0xda,0xe5,0x7c,0xb4,0xbb,0xed,0xd4,0xfd,0xb0,0xfb,0x4a,0x4c,0x2a,0x32,0x2d,0x81,0xcd,0xef,0x74,0x3c,0x6a,0x9a,0x0c,0x95,0x58,0x25,0xd0,0x3a,0xb4,0x84,0x8f,0xa5,0xef,0xad,0x91,0xd7,0x2d,0xae,0x61,0xaf,0x9d,0x3f,0x03,0xa8,0xab,0xa4,0x66,0xd4,0x73,0x3a,0x84,0x0d,0x4c,0x6a,0xca,0xbd,0x0c,0x3c +.byte 0xdc,0x1d,0x37,0xea,0xe6,0x5a,0x7f,0x15,0xbe,0x9d,0xc7,0xce,0xbd,0x46,0x97,0xd3,0x07,0x19,0x82,0xaf,0x58,0x39,0x39,0x95,0x5d,0x4b,0x8e,0x1b,0xe9,0xf1,0xf6,0xa9,0xb3,0xfc,0xe6,0xe0,0x68,0x2c,0xbb,0xfa,0xd9,0x9b,0xc1,0x69,0xf3,0x5a,0x8f,0x67,0xd5,0x9c,0x11,0x1e,0x02,0x20,0x20,0xfe,0x4b,0xc9,0x8b,0x62,0x17,0x9a,0xfa,0x47 +.byte 0x7f,0xa2,0x8b,0xc1,0x3b,0x02,0x78,0x38,0xff,0xce,0xe1,0x54,0x40,0x3f,0x27,0x5c,0x9d,0xdd,0x56,0x38,0x48,0xea,0x39,0xbe,0xa0,0x76,0x43,0x82,0xef,0x74,0x50,0xdf,0xda,0x4c,0xca,0x47,0x46,0x7e,0xc5,0xff,0xce,0x66,0xdf,0xeb,0x5b,0x6e,0x45,0x77,0x19,0xac,0x01,0x1f,0x20,0xa1,0xad,0x01,0x5f,0x87,0x3e,0x3a,0xd0,0x83,0x13,0x17 +.byte 0x53,0x40,0xfe,0x26,0x99,0x42,0xfa,0x54,0xa8,0x82,0x79,0xa7,0x44,0xd0,0x9e,0x59,0x64,0x77,0xec,0x70,0x0e,0xcd,0xb9,0xb1,0xc2,0xe2,0x39,0x93,0xb7,0xd1,0xd5,0x67,0x9f,0xb0,0x5b,0xd9,0x50,0x8b,0x17,0xec,0xbc,0x83,0x64,0x35,0xaa,0x43,0x3f,0x4c,0x8c,0x56,0x83,0x76,0xa2,0x72,0x30,0xe7,0xe8,0x9f,0x88,0x35,0x8e,0x8d,0x11,0x31 +.byte 0x8e,0xb5,0x71,0x75,0x31,0xc8,0x28,0x15,0x50,0xe6,0x0a,0x00,0x4d,0x75,0x51,0x7c,0x33,0x14,0x96,0xff,0xe8,0xf3,0xa0,0xb1,0x9c,0xeb,0x9d,0x8a,0x45,0xcf,0x62,0x82,0xeb,0xce,0xea,0xa5,0xb9,0x10,0x83,0x54,0x79,0xf8,0xcf,0x67,0x82,0x1d,0xea,0xce,0x86,0xcf,0xc3,0x94,0xf0,0xe8,0xf4,0x80,0x8b,0x84,0x96,0x06,0x2e,0xe4,0x58,0x21 +.byte 0x98,0x42,0x1a,0xb7,0x8c,0x5d,0x30,0x15,0x83,0xe8,0x17,0xd4,0xb8,0x7b,0x90,0x57,0x35,0x72,0x6d,0x1b,0x7c,0xc0,0x88,0x0a,0xa2,0xea,0xcd,0x58,0xcc,0xf1,0xb4,0x8b,0xcd,0x66,0x3c,0xa5,0xb0,0xd4,0xc9,0xcc,0x42,0x1d,0xef,0x3b,0x42,0x22,0x9b,0xfb,0x45,0x24,0xcc,0x66,0xd7,0x67,0x73,0xb2,0x12,0x03,0xf6,0xa3,0x06,0x61,0xe2,0xab +.byte 0x91,0x8e,0x33,0x0b,0x9f,0x6a,0x80,0x5e,0x0f,0x68,0x41,0x5a,0x7e,0xd8,0xe2,0x32,0x50,0xc2,0x88,0x60,0xca,0xe3,0x23,0x86,0xff,0xdc,0x0c,0x19,0xbb,0xba,0x01,0xa3,0x41,0x89,0xf0,0x79,0x55,0x79,0xa6,0xa4,0x66,0x7b,0x46,0xde,0xac,0xae,0xb1,0xde,0xe1,0x1e,0x8d,0x62,0xc1,0xd6,0xeb,0x39,0x2f,0x1d,0x50,0x27,0x53,0xc9,0xea,0xb6 +.byte 0xd3,0x91,0x9b,0xdd,0xc1,0x68,0x8c,0xb6,0xe1,0x5e,0x9f,0xea,0xbe,0x98,0x88,0xeb,0xa8,0x77,0xf6,0x69,0x64,0xab,0x99,0xf3,0x7a,0x08,0xff,0x8c,0xa6,0x17,0x1b,0x2e,0x6e,0xcc,0xd8,0x33,0x30,0xef,0x5a,0x86,0x07,0x49,0xa5,0x13,0x08,0xbc,0xd6,0x88,0x7e,0x19,0xe0,0x1c,0x23,0xa9,0xe5,0x0a,0xa7,0xaf,0x8a,0xe9,0x81,0x3f,0xd8,0x99 +.byte 0xa6,0x01,0x6b,0xec,0x14,0x08,0x90,0xb1,0x76,0x16,0x3a,0xcb,0x34,0x0b,0x91,0x26,0xe9,0xec,0xe5,0xbc,0xd6,0xdc,0xf0,0xa9,0xfd,0xf2,0xe9,0xcc,0xa1,0x9d,0x7f,0x32,0x0d,0x0a,0x2a,0x92,0xff,0xc4,0x38,0xf8,0x9e,0x31,0x78,0x47,0xbf,0x3f,0x27,0x71,0xe1,0x7a,0x33,0x48,0x91,0xe8,0x8e,0x1a,0x66,0xcf,0xa1,0x61,0xc2,0x62,0x30,0x7c +.byte 0x69,0x35,0x21,0x67,0x9b,0xa7,0x1c,0x72,0x06,0xd8,0x28,0x94,0x6e,0x6d,0xf0,0x22,0x85,0xb4,0x6c,0x89,0xe8,0x2e,0x3a,0xc5,0xdc,0xe3,0xe3,0x0c,0x8a,0xba,0x1c,0x57,0x86,0xef,0x55,0x6a,0x24,0x59,0x5e,0x6e,0x47,0xb8,0xad,0xc5,0x10,0xff,0xbe,0x2d,0x93,0x09,0xfe,0x17,0x03,0x16,0x4d,0x4a,0x9a,0x15,0x38,0x94,0x38,0x18,0x45,0xa7 +.byte 0xcf,0xe4,0x16,0xd3,0x26,0x72,0x49,0xe7,0x89,0x9a,0xb4,0xc7,0x78,0xc3,0x18,0x3b,0xc8,0x08,0x9d,0x66,0x0f,0x48,0xc8,0x23,0x91,0x57,0x61,0xf1,0xf3,0x01,0x3e,0x0a,0xa3,0x4c,0x6c,0x34,0x5b,0x98,0x40,0x47,0x42,0xc1,0xeb,0x58,0x58,0xff,0x1f,0x4b,0x5f,0xf1,0x29,0x2e,0x7e,0x76,0x15,0x56,0x17,0x9c,0xe7,0x55,0x09,0x22,0x0a,0xa2 +.byte 0xd8,0xbf,0xd9,0x44,0x49,0xa9,0x24,0xd7,0x4f,0x12,0x04,0xa2,0x18,0x1c,0xdc,0x54,0xc0,0x22,0x27,0x3c,0xeb,0x1f,0x02,0xae,0xb3,0x33,0xb2,0xa2,0x84,0x23,0x76,0xc6,0x2b,0x94,0x53,0xae,0x7b,0xee,0xbb,0x81,0x64,0x8a,0x3f,0xe0,0x75,0x6b,0x2c,0xd5,0x60,0xad,0x49,0x0c,0xf8,0x65,0x64,0x1a,0x83,0xc7,0xb9,0xd9,0x01,0x5b,0xde,0xb0 +.byte 0x76,0x9b,0x1c,0x0d,0x89,0x2d,0xd5,0x09,0xc7,0xa9,0xbb,0x0a,0x54,0x5c,0xd4,0x5b,0xbf,0xbc,0x5e,0x00,0x29,0x0b,0x30,0x19,0x73,0x66,0xfd,0x3f,0xdb,0xd4,0x1b,0xd4,0xc0,0x27,0xde,0x49,0x90,0x5f,0x65,0x87,0x3c,0xc4,0x43,0xd0,0x49,0x76,0x64,0x39,0x88,0xd7,0x0e,0xfc,0x27,0x52,0xb1,0x8d,0xd0,0x27,0x29,0x84,0xe3,0x49,0xb9,0x0c +.byte 0x2d,0x4e,0x73,0x95,0x57,0xa8,0x07,0xa0,0xe1,0x5b,0x5a,0xb6,0xbc,0xa1,0x7f,0xfd,0x4b,0x9c,0x4d,0x7d,0x0c,0x5c,0x4c,0x4b,0x42,0x70,0xc3,0x0a,0xc1,0x89,0x12,0xb5,0x46,0x04,0x3c,0x56,0x25,0xc6,0x8f,0x49,0x7d,0x3b,0xf1,0xcd,0xfc,0xb8,0xa6,0x66,0xb1,0xc2,0xa3,0xa7,0x98,0x93,0x0e,0xdb,0xcd,0xce,0xdf,0x7f,0x68,0x5e,0xea,0xf2 +.byte 0x85,0x61,0x8f,0xd6,0x23,0xb4,0x5f,0x2f,0xf8,0x78,0x47,0x15,0x59,0x2d,0xca,0x35,0x0f,0xf5,0x91,0x74,0x3b,0x32,0xe1,0xcf,0x54,0x1b,0xf4,0x9d,0xdb,0x20,0x5e,0xf8,0x71,0x10,0xa3,0x31,0xf1,0xb8,0x98,0x8d,0x76,0x70,0xce,0x4c,0xed,0xd3,0x81,0x6b,0xd5,0x8d,0x73,0x5f,0x8c,0x66,0x7c,0x87,0x73,0xfa,0x20,0xbe,0xcd,0xba,0x41,0x88 +.byte 0x46,0xc3,0x38,0xc0,0xd9,0x08,0x79,0x30,0xda,0x7f,0x2a,0xc0,0x72,0x47,0xb0,0xc9,0x41,0x68,0xb1,0xe8,0xb4,0x86,0xcb,0x5d,0xb0,0x5b,0x7a,0x26,0xfd,0xf2,0x1b,0x4e,0x1f,0x4c,0x6a,0x8a,0x84,0xd4,0x07,0x2f,0xf4,0x06,0x73,0x3d,0x1c,0x55,0x04,0x6a,0xa5,0x8a,0xbb,0xaa,0x8a,0x8d,0x8f,0x05,0xcc,0x63,0x04,0xe0,0xc6,0x6f,0x6b,0xf8 +.byte 0x24,0x56,0xbb,0x9d,0xa9,0xe5,0x4c,0xac,0x9d,0xbe,0xfd,0x70,0x9d,0x1f,0x98,0xc4,0xfc,0xdb,0x3c,0x45,0xe7,0xbb,0xea,0x51,0xb6,0x56,0xe0,0x2c,0xb2,0x77,0x1b,0x80,0x9b,0x43,0xa7,0xb2,0x9a,0x40,0x8f,0xdb,0x2d,0x51,0x7b,0x2c,0x89,0xfd,0x14,0xf5,0x77,0xbf,0x40,0x3d,0x32,0xe0,0x10,0x32,0xcd,0xc4,0x3f,0xe2,0xe8,0xb4,0xdf,0xc2 +.byte 0x43,0x7a,0x0b,0x17,0x72,0xa1,0x0e,0xd6,0x66,0x35,0x8f,0xf4,0x21,0xf1,0xe3,0x46,0x13,0xd7,0xcd,0xc7,0x7b,0xb4,0x9b,0x39,0x1e,0x33,0x3c,0x18,0x15,0x7a,0xea,0x77,0xc5,0x57,0x4d,0xf9,0x35,0x8a,0xc1,0xb5,0x78,0x5d,0xc3,0x3e,0xd5,0xfd,0xb5,0x50,0xee,0x44,0x24,0xa2,0x55,0xb6,0xd8,0x3d,0x5d,0x75,0x2a,0x26,0x37,0xe7,0x85,0xb3 +.byte 0xff,0x70,0x5d,0x99,0x8d,0x99,0xba,0x9d,0x09,0x97,0xf2,0x67,0xe5,0xa3,0x86,0x06,0x21,0xb4,0x03,0x9b,0x63,0x76,0x1f,0xf8,0x09,0xd8,0x4e,0x22,0xcb,0x48,0xcf,0x79,0x72,0xc9,0x3f,0x84,0x5e,0xb8,0x39,0x87,0x27,0x92,0x1e,0x59,0xdf,0xc2,0xe6,0xd2,0xc4,0x5f,0xad,0x6e,0x9c,0xa4,0xec,0xd5,0x7d,0xf6,0x2b,0x9b,0x93,0x56,0xcd,0xa3 +.byte 0xc5,0xfa,0x82,0x39,0x46,0x29,0x57,0x43,0x08,0xe2,0xe1,0x3e,0x80,0x3b,0x8e,0x08,0xe5,0xc5,0xfe,0x05,0x17,0xaf,0xe0,0xf0,0xb7,0x5b,0x34,0x33,0x59,0xfa,0x93,0xbf,0x6a,0xb3,0x6c,0xbc,0x99,0x62,0x34,0x2c,0xf2,0x3b,0x62,0xf2,0x1c,0x48,0x07,0xc9,0x60,0x03,0xa5,0xe1,0x66,0x8d,0x84,0x36,0xc7,0xf9,0xc6,0x3b,0xa9,0xee,0x0f,0x48 +.byte 0xff,0xff,0xad,0x95,0x21,0xb5,0x12,0x63,0x7d,0x0f,0x0d,0x09,0x63,0x51,0x64,0x69,0xb4,0x95,0xd3,0x25,0xf0,0x3b,0x6d,0xc4,0xdd,0x8c,0x80,0x0d,0x3b,0xd2,0x4b,0xe0,0x67,0xcb,0xcd,0x7d,0x2e,0xbd,0x61,0x4b,0x0c,0x32,0x1f,0xfd,0xd2,0x31,0xed,0xa8,0xaa,0x98,0xf4,0x85,0x21,0xbc,0x08,0x14,0x2f,0xbb,0xbf,0x01,0xba,0x24,0x5e,0x5c +.byte 0xf3,0x72,0xed,0x05,0xec,0xf3,0xd1,0x9b,0xb0,0x63,0x8a,0x14,0xd1,0x9e,0xae,0x9b,0xce,0x4d,0x6c,0xb6,0x7a,0x78,0x9e,0x1d,0xcd,0x1e,0x50,0x66,0x26,0x70,0x74,0x2b,0x43,0x6a,0xc7,0xd7,0xe9,0xa2,0xcf,0xf3,0x09,0x9a,0x81,0x80,0x04,0xb8,0x5a,0x4f,0x2e,0x10,0x35,0xb2,0xb0,0xc6,0x40,0x97,0xa5,0x6a,0x24,0x5a,0x6b,0x97,0xc7,0xc0 +.byte 0x24,0x50,0x8d,0x65,0x21,0x25,0xce,0xb9,0x19,0xfc,0x40,0x08,0xcf,0xfd,0x1c,0xc4,0x30,0xd4,0x06,0x70,0xac,0x8a,0x3c,0x3f,0xfc,0xc3,0xeb,0xdd,0x43,0x56,0x4a,0xf6,0x50,0x92,0x9d,0xce,0x9c,0xea,0x15,0xdd,0x7c,0x5e,0x40,0xf5,0x7e,0x41,0x70,0xdd,0xc7,0x62,0x21,0x5a,0x20,0xc8,0x71,0x10,0x97,0xd5,0x12,0xfa,0x31,0x96,0xfb,0x38 +.byte 0x17,0x66,0x73,0x32,0x7a,0x93,0xf0,0x82,0xb9,0xf1,0x24,0xc5,0x64,0x0b,0xa9,0x24,0x4a,0x47,0xac,0xfb,0xf1,0x55,0xd7,0xb3,0x9a,0x64,0x63,0x0b,0x2e,0x13,0x9e,0x1a,0xee,0x21,0xd0,0x70,0x5c,0x0c,0x25,0xe7,0x38,0x23,0xd7,0x2f,0x6a,0x20,0x59,0xef,0x70,0xb2,0x8e,0xb4,0x15,0xee,0x6f,0x70,0xd0,0x75,0x19,0x9d,0x42,0xa7,0x17,0xad +.byte 0x99,0xaa,0x0d,0xa3,0x87,0x3d,0xf1,0x7b,0x0e,0xfa,0x62,0x9a,0x20,0x64,0x17,0x64,0x07,0xc2,0x84,0x13,0xb2,0x59,0x81,0x66,0x45,0xab,0x47,0x6d,0xfc,0x7b,0x60,0x05,0xac,0x30,0xb2,0x86,0x7e,0x34,0x6b,0xaf,0x37,0x00,0xa6,0x47,0x4c,0xb9,0x10,0xbd,0x9e,0xce,0x47,0x9e,0xc2,0x0e,0xfd,0x47,0xfa,0xd8,0x08,0xd1,0xc2,0xaa,0x6d,0x8c +.byte 0x91,0x2c,0x18,0x32,0x52,0x84,0x47,0x71,0x3b,0xc9,0xa1,0xf5,0xfc,0x90,0xb8,0x79,0xbf,0xe5,0x59,0x1b,0x91,0x22,0xcb,0xd3,0x87,0x7e,0xd4,0xb5,0x33,0xb2,0xfc,0x7c,0xee,0x22,0xfb,0xe8,0xb0,0x3c,0xa7,0x8b,0x05,0xd7,0x7f,0x17,0x52,0xbe,0xb6,0xe0,0x1e,0x47,0xce,0xfd,0x79,0xdf,0x16,0x5f,0x01,0x70,0x0c,0x47,0x5a,0x01,0x96,0x08 +.byte 0x3e,0x9b,0xc4,0xb2,0x58,0x73,0xc4,0x38,0xd6,0xf2,0x1b,0x0a,0x2c,0xb9,0x2a,0x96,0xb5,0x89,0x2d,0x33,0xdf,0xa4,0x5f,0x24,0x1b,0x79,0x0e,0xb6,0x9f,0xec,0x46,0xd3,0x27,0x4a,0xc1,0x26,0x94,0x95,0x41,0xd5,0xb3,0x84,0x74,0x62,0x47,0xc5,0x4d,0xb4,0xe2,0xe7,0xdb,0xc3,0xc3,0x7b,0x33,0x2a,0xbf,0x69,0xf6,0x5e,0xdc,0xfe,0xa4,0x81 +.byte 0x91,0xf3,0xa8,0x26,0x82,0x44,0x37,0xea,0xe1,0x20,0xff,0x52,0x33,0x5b,0x0b,0x6f,0xf8,0x33,0x4e,0x02,0x4d,0x38,0x93,0xcd,0xc0,0xfc,0x73,0x1a,0xf9,0xf6,0x9f,0x53,0xfc,0xf7,0xe2,0x4b,0x25,0xdd,0xa7,0x4d,0x1e,0x5c,0x17,0xc3,0xa0,0x41,0x1d,0x67,0x45,0xff,0xcb,0x41,0x49,0xc4,0x18,0x68,0x7e,0x7f,0xb6,0x6f,0xdb,0xbc,0x73,0x2f +.byte 0xc7,0x9a,0x46,0x8c,0x0b,0x57,0xa3,0xd3,0x0a,0x34,0xb7,0x27,0x67,0xbb,0xe1,0x64,0xa7,0x7e,0x79,0xac,0x4f,0x09,0x54,0x9b,0x43,0x5e,0x9a,0x33,0x02,0x45,0xdc,0x85,0x0b,0x59,0x8d,0x78,0xe8,0xd8,0xb5,0xd3,0x31,0x9d,0x2a,0x60,0x5b,0x91,0xed,0xf1,0xf1,0x37,0x3f,0xdb,0xda,0xd6,0xd1,0x8f,0x14,0x7e,0xe1,0xfc,0x92,0x60,0xa5,0x33 +.byte 0x86,0xef,0x29,0xbf,0x94,0x84,0x2b,0x24,0x20,0xb4,0x5e,0x23,0x34,0x08,0x63,0xc9,0xe6,0x80,0xa0,0x27,0x27,0x2f,0xab,0xc0,0x52,0x44,0x66,0x29,0x32,0x2e,0x91,0x96,0x02,0x1c,0x3b,0xb4,0x6e,0x33,0x49,0x5b,0x60,0x6f,0x14,0x93,0x65,0x0d,0x97,0x01,0xfb,0xf9,0x42,0x74,0xb6,0x21,0xf7,0xc2,0x5d,0xbf,0x91,0x2b,0xf5,0xb1,0x4e,0xe2 +.byte 0xd6,0x24,0x57,0x41,0x7a,0xcb,0xdd,0xb6,0x96,0x8b,0xfc,0x42,0x19,0x21,0x7f,0x41,0x32,0x3d,0x69,0x9b,0xee,0xda,0x97,0x45,0x26,0x71,0x0d,0x12,0xf0,0x20,0x7f,0x44,0x0f,0x4c,0xd2,0xd3,0x34,0x93,0xc7,0xe5,0xe7,0x83,0x62,0x13,0x0b,0x7d,0xc6,0xe4,0xd2,0xae,0x53,0x2e,0xd1,0x18,0x81,0xd0,0x81,0xf6,0xc0,0x98,0xaf,0x1d,0xb2,0x8a +.byte 0xcb,0xd3,0xde,0x1d,0x53,0x71,0x92,0x0e,0x4b,0x8c,0x7c,0x8e,0x65,0xf6,0xe2,0xc2,0x5a,0x4f,0x8c,0x59,0x0f,0x35,0x5e,0xe4,0x43,0x50,0xab,0xb7,0xdd,0xfc,0x66,0xf9,0xb1,0x9b,0x6b,0x1b,0xaf,0x2e,0x85,0xe6,0x3e,0x4c,0xa2,0xd4,0x55,0x47,0xb9,0x66,0x66,0x7b,0xa3,0xb2,0xd5,0x8a,0x8e,0x88,0x0e,0xfb,0x4e,0xad,0xf4,0x39,0xd2,0xd6 +.byte 0x39,0xef,0xe0,0xee,0x0f,0xf3,0x94,0x47,0xa7,0x32,0x24,0x9a,0xb0,0x82,0x08,0x67,0x00,0x3f,0xe6,0x95,0x76,0x84,0x0a,0x5c,0xb7,0x74,0xc1,0x64,0x5e,0x7c,0xba,0x0b,0x2e,0x6f,0x26,0xc3,0x20,0x2e,0x95,0xc1,0xf0,0x8c,0x55,0x4a,0x45,0x26,0xe6,0xf3,0x55,0x78,0xbd,0xd4,0xdb,0x07,0xbd,0xff,0x61,0x51,0xde,0x7f,0xdb,0x56,0x73,0x6b +.byte 0x9c,0xa4,0xb0,0x72,0xa7,0xd0,0x93,0x4d,0x1d,0x3a,0x92,0x78,0xde,0x77,0x65,0xe8,0x07,0x41,0x92,0xc1,0xbb,0x69,0x79,0x20,0x43,0xab,0x21,0x2e,0x6d,0xdf,0x43,0xeb,0x73,0x49,0x12,0x1f,0x53,0x75,0x01,0xed,0xce,0xf4,0x05,0x05,0x2b,0xc7,0x2a,0x65,0x29,0xe8,0xcf,0x5b,0xf0,0xc1,0x5b,0xd8,0xa8,0xac,0xbb,0xe3,0xac,0x29,0x0a,0x90 +.byte 0x79,0x2f,0x5b,0x92,0x14,0xf2,0xc7,0x2d,0xe5,0x33,0x6e,0x5e,0x31,0xe2,0xab,0xdf,0x21,0x71,0x4a,0x44,0xaa,0xc6,0xe9,0xb8,0x51,0x1d,0xe2,0xf3,0x07,0x19,0xa1,0x98,0x9e,0x8a,0xed,0xe4,0x9e,0x52,0x16,0x1f,0x2f,0xd3,0x4c,0x97,0x1e,0x38,0x49,0x84,0x2e,0x45,0xb5,0x4b,0x4f,0xfe,0xdb,0x25,0x3e,0xa9,0x6e,0x7d,0x60,0x3b,0xa7,0x7e +.byte 0xda,0x32,0x1a,0xd6,0x04,0xbe,0x0c,0x92,0x4e,0x6d,0x85,0xf9,0x9c,0x26,0x9a,0x88,0xf5,0x50,0x95,0x7b,0x9e,0x43,0x07,0x97,0xd4,0xdb,0xa0,0x6e,0x30,0x5d,0x44,0xa9,0x41,0xc2,0xdf,0xdf,0x37,0x35,0xc4,0x85,0x83,0x08,0xea,0x22,0xfa,0xae,0xdd,0x95,0xe5,0x35,0x47,0x23,0x86,0x27,0xfa,0x71,0x88,0xa0,0x12,0x00,0xe0,0xa7,0xd1,0x1b +.byte 0x5e,0x78,0x6f,0x38,0x30,0xa9,0x80,0x75,0xd7,0x61,0xcc,0xfd,0x33,0xd2,0xb8,0xf8,0xd7,0x12,0xf5,0x03,0xf9,0x53,0x6d,0x3b,0x6b,0xff,0x24,0x0a,0x3b,0xe8,0x2a,0xe9,0xae,0xb7,0xc3,0xe3,0x0f,0x26,0x71,0x55,0xc5,0x03,0x60,0xf4,0x47,0x01,0xa3,0x69,0xb2,0x98,0x75,0x5b,0x90,0x4a,0xf9,0x61,0x49,0xd6,0xc4,0xdb,0xab,0x04,0x0c,0x47 +.byte 0x1e,0x31,0x75,0xfa,0xa2,0xc5,0xfa,0x66,0x0c,0x4a,0x93,0xa0,0xea,0x56,0xf9,0x49,0xd4,0xc7,0xcc,0x2c,0xe5,0xdc,0xab,0x61,0x8e,0x0c,0xf3,0x2f,0xb5,0x9f,0x36,0xa1,0x05,0xab,0xb6,0xbc,0x4a,0x6d,0x97,0xe7,0x19,0xe5,0xfe,0x92,0xa5,0x94,0xd5,0xc0,0xf5,0x31,0xf6,0x8a,0xf7,0x24,0x62,0xdd,0x56,0x12,0x84,0xf5,0xc6,0xa0,0x37,0xa3 +.byte 0xfc,0xbd,0x16,0x2a,0xa6,0x36,0x8e,0xd4,0x29,0xfe,0xc4,0xc5,0xcb,0xdd,0xdd,0x8b,0x7e,0xa6,0x9d,0x08,0x28,0x10,0x6b,0xff,0xd7,0x79,0x48,0x35,0x2f,0xbe,0x34,0x9a,0xfb,0xd0,0x7d,0x5c,0xad,0xf0,0xde,0x96,0xea,0x2d,0xc5,0x8b,0xa9,0x7a,0x8b,0xbe,0x97,0xde,0x7a,0x95,0xc7,0x95,0xd9,0x86,0xde,0x3c,0x8d,0x15,0x8e,0x45,0x69,0x27 +.byte 0xd4,0x27,0xa8,0xe3,0xa9,0x1e,0xa0,0x95,0x74,0xf1,0x8b,0xbe,0x3b,0xff,0xa3,0xf6,0x23,0x78,0xd9,0xbd,0xc2,0x44,0x3a,0x93,0xb5,0xa6,0x87,0x7c,0x65,0xd1,0xd8,0xd5,0x43,0x2a,0xb2,0xc8,0x65,0x86,0x83,0x06,0xf7,0x33,0x88,0x3b,0xc0,0x2c,0xb3,0x3b,0x23,0xa3,0x67,0x15,0x49,0x09,0x02,0xbb,0x11,0x08,0xe3,0x37,0x9a,0x9b,0x67,0x8e +.byte 0x63,0xc3,0x8b,0xff,0x21,0xa6,0xbe,0x3b,0xa6,0x57,0xc1,0x56,0x2a,0x02,0xdb,0x24,0x50,0x4a,0x4f,0x60,0x49,0x03,0xcf,0xba,0x55,0x1c,0x64,0xfe,0x0c,0x58,0xb4,0xb0,0x89,0x91,0xd5,0xbc,0xbc,0x85,0xe6,0x96,0x32,0x89,0x1f,0xa0,0x48,0xd1,0x6e,0xa7,0x03,0x86,0x8a,0xf2,0x5f,0xc3,0x5a,0x57,0x8a,0xa3,0x4a,0x61,0x90,0x18,0xb2,0x0d +.byte 0xc7,0x94,0xb9,0x3e,0x40,0x8b,0x1d,0x54,0xd0,0x4c,0xe7,0x2a,0xd5,0x85,0xa7,0x93,0x07,0x10,0x58,0xc4,0x8a,0x18,0x0a,0x49,0x30,0x87,0x93,0x0e,0xcf,0xc7,0x95,0x9f,0xd1,0x3f,0x9b,0x06,0xe3,0xf9,0x4f,0x16,0x58,0x04,0xb4,0xf0,0xf0,0xf3,0x3a,0xab,0x4a,0x35,0xf1,0xec,0x23,0x15,0x0c,0x24,0xba,0x90,0xdc,0xd1,0xfe,0x47,0xca,0xb2 +.byte 0x95,0x33,0x30,0x45,0xba,0x18,0x15,0xec,0x58,0x36,0x02,0xdf,0x28,0x09,0x74,0x4b,0x09,0x01,0x24,0x0f,0x00,0x7b,0xb3,0x65,0x45,0x42,0x63,0x15,0xf8,0x50,0x8b,0x4f,0x28,0x73,0x03,0x3a,0x31,0xe5,0x0d,0x56,0x8f,0x6b,0x4b,0x9e,0xda,0x71,0xee,0x68,0xba,0x85,0x81,0x3d,0x5d,0x74,0x5e,0xda,0x60,0x87,0xf4,0x5a,0x38,0xad,0xc5,0x3f +.byte 0xb5,0x15,0x02,0x59,0x1c,0xd2,0x93,0x66,0x54,0x65,0xf1,0xe7,0x9b,0xf0,0x30,0x2d,0x9e,0xba,0xc5,0x86,0xf4,0xf6,0xc7,0x92,0x73,0x12,0x3b,0x28,0x21,0x1b,0x3d,0x84,0xc0,0x1a,0x7d,0x35,0x8b,0xd4,0x35,0x39,0x35,0xa6,0x51,0xd9,0x19,0x8b,0x92,0xa3,0xea,0x8c,0x7e,0x25,0x05,0x1f,0x1d,0x8f,0x4d,0xba,0xdf,0x20,0x8c,0x8d,0xe2,0xac +.byte 0xdd,0x3d,0xf1,0x04,0x3f,0x77,0x4b,0x8f,0x39,0x7d,0x01,0xb7,0x71,0x4b,0x7b,0xe1,0x6f,0xd4,0x28,0x1a,0x57,0x96,0x4d,0xe2,0x84,0xf6,0x64,0x10,0xbb,0x0f,0xbc,0xe0,0x19,0xed,0x92,0x9e,0x60,0x15,0x78,0xd1,0x30,0xc0,0x53,0x4b,0x94,0xca,0x4b,0x5a,0x44,0x8b,0xa9,0xda,0x2f,0x08,0x70,0x94,0xe4,0x54,0xe1,0x28,0x6e,0xdd,0x34,0x56 +.byte 0x54,0xb0,0xd4,0x87,0x00,0x72,0x1e,0x46,0x10,0x3a,0x27,0x5d,0xc6,0xb5,0x72,0x20,0x2b,0xbe,0x17,0x01,0xbb,0x04,0x11,0x16,0x7d,0xbf,0x91,0xd3,0x7b,0x44,0x58,0x13,0x2a,0x9c,0xda,0x9d,0x26,0x46,0xf5,0x5f,0x51,0xef,0x6c,0xf6,0x36,0xdb,0xb7,0x21,0xde,0xdb,0x87,0xa0,0xd8,0x60,0x24,0x86,0x6d,0x64,0x85,0x9e,0x94,0xd9,0x21,0x0d +.byte 0xed,0xda,0x33,0xea,0x3c,0xdf,0x74,0xe3,0xa5,0xc7,0xc7,0x9e,0xe5,0xb1,0x29,0xdf,0xfa,0x20,0x25,0xcd,0x13,0x08,0xee,0xe6,0xba,0xf1,0x62,0x39,0xcf,0xe3,0x29,0xb8,0xaa,0x65,0x43,0x8a,0x48,0xb5,0xb5,0x70,0x35,0x66,0x42,0xf4,0x32,0x70,0x0b,0x0c,0xa7,0x46,0x79,0xdf,0xb2,0x80,0x13,0x72,0x7a,0xeb,0xf9,0x52,0xcb,0xb8,0x9f,0x4b +.byte 0x4f,0x29,0x2b,0xb3,0x94,0x02,0x0a,0xe1,0x20,0xe5,0x91,0x15,0x6a,0xa1,0x0c,0x71,0x96,0x77,0x01,0x80,0xf7,0x51,0x0b,0xaf,0x54,0x9b,0x3c,0x7b,0x91,0xd2,0xbd,0xaf,0x13,0xa5,0x32,0x17,0x7c,0xca,0xd0,0x22,0xd5,0xe5,0x83,0x44,0x24,0x5c,0xcc,0x24,0x31,0xcd,0x81,0x4e,0x96,0xcd,0x60,0x9f,0x7a,0xe7,0x2e,0x89,0x16,0xd5,0x66,0x6b +.byte 0xac,0x31,0x11,0x7c,0x76,0xc6,0xde,0xbe,0x46,0x55,0x20,0xdf,0x9d,0x2c,0x33,0xa5,0x80,0x76,0xb1,0xc9,0x1c,0x84,0x17,0x4d,0x15,0xe6,0x6d,0xce,0xed,0xea,0xc7,0xe6,0xff,0x01,0x10,0x60,0x26,0xf7,0x63,0x5f,0x91,0x89,0x7e,0xc1,0x7c,0x76,0x67,0x7b,0x7e,0xfa,0x28,0xa0,0xa7,0x82,0x1b,0x28,0x82,0x6a,0x4f,0x78,0x61,0x48,0xbf,0x13 +.byte 0x0b,0x71,0x0c,0xad,0xee,0xd7,0xf8,0xcc,0x0f,0x77,0x74,0x7d,0x2b,0x8a,0x09,0xd8,0x47,0xa0,0xfc,0x45,0x40,0x24,0xf3,0xce,0xdb,0x81,0xa1,0x50,0x9e,0x0a,0xd0,0x58,0xf7,0xaf,0xf1,0x09,0x12,0xa8,0x24,0xb2,0x34,0x99,0x67,0x17,0x53,0x1f,0x9d,0x09,0x7b,0xcb,0x83,0x6e,0x6a,0x0b,0xbf,0x8f,0x6e,0x3d,0xdb,0x29,0xe5,0xd0,0x06,0xdb +.byte 0xb8,0xf2,0xf3,0x43,0x4e,0xa7,0xf3,0x73,0x93,0xe8,0xab,0x2f,0xc8,0x75,0xce,0x62,0xda,0x74,0x39,0x57,0xe4,0xe4,0xb1,0x41,0x8f,0x9d,0xda,0x43,0xb4,0x2c,0x4b,0xd5,0x1c,0x10,0xf0,0x29,0x6b,0x94,0x15,0x04,0x3c,0xd3,0x45,0x73,0x29,0xb3,0x60,0x87,0x93,0xdb,0xbf,0x60,0x4e,0xdf,0x4d,0xbb,0xde,0xb2,0x57,0x67,0x14,0x0d,0x0b,0x60 +.byte 0x63,0xd5,0xc6,0x81,0x82,0xd6,0x0c,0xe6,0x4c,0x43,0x13,0x02,0x74,0x56,0x20,0x6b,0x21,0x28,0xe6,0xe2,0x0b,0xc1,0x7a,0xc3,0x08,0x60,0x82,0xe0,0x4f,0xbf,0x1e,0x3f,0xf0,0xa9,0xb2,0x2e,0x0c,0xbf,0xd6,0x03,0x1d,0x0d,0xd6,0x1c,0x36,0xb5,0xb2,0x14,0x56,0x21,0xc2,0xe0,0x1e,0xff,0xee,0x8a,0x70,0xae,0x3f,0x1e,0xe5,0xac,0x05,0x46 +.byte 0x6b,0x81,0x32,0xce,0x50,0xbb,0x82,0x66,0x32,0x93,0x46,0xf7,0xee,0x77,0x1c,0x9a,0x2f,0x31,0x60,0xa2,0x09,0x7c,0x14,0xd9,0x81,0xe9,0x19,0x27,0x31,0x5e,0xa0,0x98,0x71,0x42,0x2f,0x30,0x71,0xd6,0x31,0x94,0xe0,0x61,0xed,0x50,0x66,0xfa,0xba,0x12,0x5e,0xc6,0xc8,0x67,0xe5,0x8e,0xfd,0x34,0xa9,0xeb,0xde,0x25,0x43,0xbf,0xe7,0xb5 +.byte 0x16,0xf5,0x62,0x66,0x5d,0x0b,0x13,0x9a,0xd4,0x8c,0x2b,0x8f,0xe6,0x91,0x33,0xcb,0xa0,0x70,0x48,0x3e,0x22,0x7d,0xe4,0xf3,0x75,0xc9,0x49,0x82,0x50,0xc9,0x90,0x04,0x32,0xab,0x99,0x6e,0xf1,0xf0,0x0b,0x60,0x80,0x35,0x25,0x45,0x88,0xe9,0x82,0x06,0xe1,0xbb,0x85,0x11,0x40,0xf8,0x0e,0xbd,0x19,0x7a,0xdd,0x78,0xf9,0xc2,0x46,0xe4 +.byte 0xb5,0x27,0xfb,0xb6,0xba,0xbc,0x7d,0xb8,0x27,0xe7,0xbf,0xfe,0x8e,0xfe,0x7e,0x83,0x63,0x43,0x92,0x26,0xf0,0xbb,0xde,0xb6,0x93,0x4f,0x55,0x0c,0x07,0x99,0x3c,0x98,0xa1,0x8c,0x73,0xc1,0x4c,0x9a,0x09,0xa8,0xea,0x16,0x0b,0x49,0x2a,0x43,0xee,0x90,0x61,0x6f,0x09,0x1b,0xc3,0x2d,0x62,0x4b,0xfc,0x90,0xa1,0x8e,0x84,0x2e,0x90,0x8d +.byte 0x5f,0x80,0xff,0x6a,0x3c,0x61,0x0f,0xf2,0xac,0x70,0x20,0xc1,0xf2,0x85,0xcf,0x94,0xc8,0x94,0xe7,0xa0,0x04,0xdf,0xaf,0xef,0x26,0xd2,0xbc,0x07,0x70,0xc1,0x48,0xd6,0x87,0xd6,0xbe,0xea,0x95,0x6a,0xce,0xa2,0x48,0xac,0x46,0x46,0xb1,0x74,0x70,0x96,0x6c,0x26,0x58,0x75,0x9d,0x84,0xd7,0xd9,0x17,0x9a,0x46,0xe9,0xd7,0x3d,0xde,0xfd +.byte 0x7e,0xf4,0xd8,0x7e,0xf8,0x8f,0x1c,0xb5,0xfb,0xe9,0xc4,0xca,0xba,0x52,0x5f,0x17,0xee,0x75,0x7d,0x1d,0x50,0x16,0x9f,0x16,0x1e,0x00,0x8b,0xc1,0x2f,0xab,0x73,0x65,0x88,0x7b,0x80,0xa6,0x71,0xb7,0xfb,0xb0,0xda,0xd1,0x96,0x18,0x5c,0x48,0x6e,0x18,0x45,0x59,0x45,0xef,0x5c,0x65,0x35,0x99,0x5e,0xb9,0xd4,0x1a,0x07,0x7d,0x1e,0xa6 +.byte 0x69,0x42,0x9d,0xfa,0xec,0x02,0xdc,0xc4,0x19,0x6b,0x9c,0xb1,0x5e,0xa3,0xb4,0x6d,0xb4,0xa6,0x25,0xa8,0xe4,0x3f,0x3d,0x6e,0x2c,0x95,0xf7,0xcd,0xa5,0x4e,0x32,0xca,0x7e,0xe0,0x7b,0x11,0xf9,0x0a,0xe1,0x61,0x41,0x60,0xec,0xb3,0xb1,0x92,0x89,0x33,0x17,0xe9,0xaf,0x70,0x7f,0x1c,0x07,0xb5,0x24,0x3a,0x37,0x84,0x38,0xf5,0xb6,0x11 +.byte 0xfc,0x0c,0x12,0xc1,0xfc,0xa9,0x82,0x67,0x4d,0x17,0xe8,0xea,0xd0,0x62,0x17,0xb2,0x9c,0x59,0x01,0x87,0xfb,0x54,0x8e,0xa7,0xa5,0x85,0xa9,0x8a,0xec,0xfe,0x29,0xc0,0x73,0xc6,0xa0,0xbf,0x66,0x9a,0xc5,0xf8,0xee,0xa4,0xcb,0x09,0x44,0x74,0xfe,0x32,0xf5,0x42,0xea,0xf0,0xa6,0xec,0x74,0xea,0x14,0x5c,0x43,0x51,0xfa,0x3a,0x48,0x1e +.byte 0xa0,0x2e,0x59,0x2e,0xdb,0x3a,0x19,0xfe,0x1f,0x95,0x25,0xee,0x27,0x2b,0x99,0xb4,0xe1,0xd0,0xe6,0x33,0x91,0xa1,0xaf,0x30,0xa0,0x89,0x00,0x3c,0x13,0x31,0x18,0x70,0x90,0x42,0x55,0x0a,0xc9,0xc5,0x0c,0x43,0xa5,0xee,0xd6,0x90,0x07,0xae,0xc4,0x8c,0xdc,0xe4,0x07,0xbb,0x61,0x70,0xd1,0x10,0xe4,0x68,0x96,0x70,0x78,0xab,0xe9,0x3a +.byte 0x6e,0xc7,0x75,0x93,0xa0,0xba,0xff,0x6a,0x2d,0x57,0xaa,0x93,0x09,0xc3,0x6b,0x81,0xf3,0xde,0xc2,0xee,0xac,0x86,0x0a,0xfb,0xad,0xdb,0x6f,0x2a,0xa0,0x15,0x7b,0x96,0x77,0x38,0xf8,0x86,0x51,0x33,0x7a,0x6f,0x1c,0xf8,0xd5,0x15,0xcd,0x76,0x7f,0x37,0x68,0x82,0xdf,0xab,0xc3,0xdb,0xbe,0xeb,0x2b,0xa8,0x34,0x72,0x20,0x34,0xfb,0x12 +.byte 0x64,0x17,0x05,0x64,0xc0,0xa1,0xca,0xd3,0xac,0x27,0xc2,0x68,0x28,0x40,0x42,0xe2,0x0a,0xdd,0xd7,0xd6,0xf6,0x92,0x95,0x3c,0x10,0x17,0x4e,0xef,0x75,0xae,0x98,0x2d,0x10,0xc8,0xa8,0xac,0x15,0xf7,0x5b,0x81,0xc1,0xdf,0x5e,0xbe,0x88,0x49,0xe3,0xd1,0x88,0x1c,0xcb,0xce,0x20,0x01,0x12,0x60,0x57,0x0b,0xf6,0x32,0x57,0xaf,0x59,0xef +.byte 0xc9,0xe7,0xbf,0x62,0xf3,0xb6,0xe6,0x5c,0xee,0x36,0x7e,0x11,0x90,0xd1,0xeb,0xfa,0x62,0x0b,0xc6,0xf3,0x1a,0xd5,0x8b,0x95,0xec,0xb4,0x38,0xfe,0x45,0xb0,0xb5,0xff,0x84,0x0a,0x27,0x3a,0xa2,0x5a,0x2a,0xc9,0xa4,0xc0,0x11,0xc6,0x61,0x13,0xb7,0x53,0xa3,0x47,0x45,0x6d,0xc6,0xa9,0x00,0xd1,0x40,0xf4,0x77,0xac,0xb3,0xd3,0x26,0x99 +.byte 0xf1,0x36,0x59,0x28,0xb4,0xd0,0xdd,0x0e,0xed,0x53,0x33,0x45,0x71,0x9c,0x5c,0x11,0x27,0x2c,0x2f,0x10,0x9e,0x5b,0x8a,0x5b,0xc5,0x1f,0x36,0xc9,0x2a,0xba,0xc7,0xa5,0x31,0xd7,0x9f,0x2b,0x0a,0x09,0xcb,0x7c,0x4f,0xa2,0xdc,0xc5,0x64,0x0d,0xe6,0xfe,0xb0,0x9d,0x3b,0xf0,0xa7,0x19,0x8c,0x84,0x21,0x6b,0x9e,0x1c,0xb5,0x7b,0x66,0x77 +.byte 0xd0,0x85,0xb4,0x22,0x93,0x6e,0x84,0x29,0x9b,0x60,0x90,0x37,0x9d,0x8c,0x94,0x95,0x95,0x3b,0xf1,0x2d,0x56,0x5b,0x53,0x60,0x2d,0xe5,0x7f,0x80,0x71,0x56,0xa7,0x6e,0x66,0x76,0x1f,0xaa,0x0d,0xba,0xfb,0x0e,0xcf,0x20,0x68,0x74,0x2b,0x99,0x13,0xe1,0xa8,0x33,0xc9,0xf6,0xbc,0xd3,0xf4,0x46,0x01,0x02,0x85,0x27,0xf4,0x20,0x97,0xa3 +.byte 0xba,0xbc,0x47,0x30,0x48,0xed,0x60,0xe6,0xca,0xbf,0x76,0x8c,0x2c,0x6a,0x43,0x32,0xfd,0x90,0x04,0x95,0xc2,0x42,0xcb,0xca,0xc4,0x33,0xe1,0xd3,0x23,0x92,0xa1,0xde,0x09,0x38,0xce,0x00,0x93,0xb3,0xed,0x82,0x8e,0xfb,0xce,0x4c,0x9a,0x10,0x6e,0xce,0x4a,0x37,0x05,0x75,0x37,0x58,0xc3,0x8e,0x57,0x50,0xa0,0x7d,0x80,0x2d,0x51,0xea +.byte 0x08,0xcd,0x1b,0xd2,0x81,0x85,0x19,0xc1,0xe8,0xce,0x31,0x18,0xcf,0x54,0x37,0x96,0x77,0x3d,0x64,0xfb,0xc2,0xa9,0xdb,0xb8,0x37,0x03,0x83,0x34,0x3c,0x25,0x6a,0x22,0x33,0xfa,0x27,0x70,0xc7,0x0a,0x27,0x12,0x1e,0xb3,0xd0,0x59,0x6f,0xa3,0xc5,0x73,0x95,0x4c,0x1f,0xf1,0x3c,0xb3,0xc2,0xa2,0xc6,0x45,0x17,0x53,0xa8,0xfc,0x00,0xff +.byte 0x77,0x40,0x28,0xd2,0x53,0x90,0x92,0xe9,0x86,0x6c,0xa5,0x40,0xce,0xbc,0x79,0x6f,0x8f,0x12,0xef,0x1b,0x38,0x1f,0xb3,0x24,0xf0,0x75,0x17,0x20,0x9e,0x03,0x9c,0x2b,0x51,0x57,0x93,0x44,0xce,0x74,0xc9,0x12,0xe7,0xcb,0x2f,0x5e,0x1b,0x95,0xf2,0x4d,0x2e,0x51,0x8d,0x52,0xd5,0x21,0xe3,0x1b,0x33,0xe7,0xf2,0x18,0x61,0xa2,0x53,0xdb +.byte 0x73,0xaa,0x6a,0x6c,0xf9,0xf4,0xef,0x3d,0x40,0xa3,0x00,0x80,0x82,0xed,0xe6,0x66,0xd1,0xd6,0xe9,0x93,0xd8,0x92,0xfa,0xdf,0xf9,0x9c,0x7a,0xfb,0x2b,0xc7,0xa7,0x73,0x67,0x2b,0xed,0x76,0xb1,0x52,0xaa,0xcf,0x34,0x84,0xa1,0x6d,0x56,0x85,0xef,0xcb,0xbc,0xa3,0xc6,0xf3,0x5a,0x88,0x04,0xd5,0xd8,0xf1,0x7b,0xf8,0x11,0x6f,0xa0,0x44 +.byte 0xa5,0x0f,0x76,0xed,0xd7,0x98,0xe3,0xda,0xb8,0x1b,0xc7,0xe6,0x89,0x08,0x19,0x1f,0xf8,0xe3,0x32,0x32,0xa5,0x3c,0x71,0x9f,0x11,0xde,0x50,0x29,0xb0,0x54,0x7e,0x3b,0x5e,0xeb,0xf7,0xab,0xa8,0xa0,0x35,0x96,0xc7,0xc5,0xea,0x60,0xc0,0x37,0xca,0x61,0x55,0x96,0xac,0xb4,0xd0,0x29,0x9a,0x1a,0x3f,0x9e,0xf5,0xf5,0x3d,0xed,0xc5,0x7c +.byte 0x2c,0x9d,0x67,0xf8,0x4d,0x82,0x6e,0x2a,0x9a,0xfc,0x5f,0xdc,0x02,0xb0,0x3d,0xa5,0x1c,0x08,0x5d,0x4a,0xaa,0xd0,0x38,0xfb,0xbc,0xbb,0x7f,0x37,0xfb,0xec,0xc0,0x62,0x79,0xaa,0xde,0xfd,0x23,0x9c,0x4c,0x4a,0xe1,0x48,0x40,0x36,0xc0,0x0a,0x6f,0x43,0xb7,0xad,0x4c,0xf6,0x56,0xb5,0x44,0xf4,0x72,0xcd,0x13,0x10,0xea,0x0d,0x24,0xc1 +.byte 0xa9,0x36,0x3b,0x36,0xf2,0x6e,0xf9,0x0a,0x67,0xcd,0x02,0x67,0xb3,0x5c,0x63,0x3a,0x7c,0xc1,0x3b,0xf2,0x1d,0x3d,0xf1,0xff,0xbf,0xf7,0x97,0x9f,0x30,0x1f,0xaa,0xd8,0xdb,0x53,0x9b,0x0a,0xbd,0x38,0xd8,0xb6,0xf1,0x4a,0x78,0x1a,0xc2,0x46,0xd2,0x0c,0xa8,0xcd,0x7b,0x39,0xc7,0x42,0x55,0xc8,0x3e,0x02,0x1d,0xf4,0xad,0x55,0x01,0x6a +.byte 0x11,0x2d,0xfa,0x67,0x48,0xae,0x45,0x31,0x9b,0x09,0x7d,0xd9,0xdd,0xaf,0x5c,0xd5,0x40,0x51,0x2a,0xa1,0x0f,0xb3,0x6e,0xc2,0x94,0xfe,0xde,0x70,0xaf,0x6c,0xea,0x5f,0x7d,0x3c,0x72,0x85,0x86,0x24,0x20,0x0a,0x7a,0xe7,0x69,0x32,0x66,0x7d,0x34,0x13,0x60,0x62,0xc7,0x68,0x32,0xde,0x34,0x30,0x36,0xc8,0x8e,0xb7,0x13,0x66,0xf1,0xce +.byte 0x5f,0x7a,0x3a,0xfe,0x62,0xd6,0x72,0xb6,0x1b,0x80,0x43,0x8a,0x3e,0x13,0x15,0xe4,0x1c,0x7b,0x08,0x70,0x0b,0x6e,0xb3,0xfe,0x07,0x91,0x23,0x21,0x57,0x48,0xc6,0xa9,0xa3,0xa8,0xc7,0x19,0x89,0x8a,0x49,0x12,0x25,0x88,0xd2,0x11,0xa5,0xa8,0x9e,0x0e,0xa7,0x71,0xfe,0xaf,0x88,0xee,0xa7,0x1c,0x3b,0x27,0x27,0x7e,0x79,0x92,0xed,0x77 +.byte 0x74,0x65,0xbd,0x46,0x41,0x25,0xd9,0x8b,0x21,0x73,0x9f,0xaa,0x35,0xa0,0x22,0xb3,0xc8,0x71,0x28,0x72,0xd2,0xcb,0xf4,0x2a,0x06,0x0a,0x63,0x96,0x55,0x2e,0x83,0x0b,0xe8,0x07,0x99,0x9d,0x59,0xde,0xde,0x62,0xbd,0xb4,0x3e,0x70,0x15,0xed,0x95,0xa8,0x2f,0xb7,0xa2,0xb6,0x65,0x56,0x9d,0xe5,0x81,0xa0,0x05,0x5b,0xce,0x00,0xd4,0xb9 +.byte 0x28,0x5a,0xc1,0x9a,0x74,0xc6,0xd7,0x27,0xdd,0x7c,0xbe,0xe8,0x0d,0x47,0xfc,0x81,0x05,0x6b,0x4f,0x68,0xc7,0xcc,0x5d,0xd5,0x66,0x83,0x34,0x72,0x35,0xab,0x39,0x64,0x19,0x67,0xbd,0xff,0x15,0x44,0x20,0x18,0x2a,0xaf,0xbc,0x58,0x94,0xdb,0x18,0x50,0x55,0x11,0x6a,0xc4,0x1d,0xee,0xe2,0xe0,0x75,0x73,0xf1,0xa1,0x83,0xf4,0xcb,0x40 +.byte 0x96,0xf4,0x77,0x45,0x61,0x8b,0x1a,0x8c,0x0c,0xfc,0xd2,0x7e,0x0b,0x1e,0x18,0xd2,0x95,0xa5,0x4c,0x5b,0xd6,0x9d,0x40,0x8b,0xc0,0x51,0xe8,0x2d,0xe5,0x16,0xbf,0xd7,0x98,0x8a,0xa0,0x46,0x1f,0xc4,0xe9,0x12,0x31,0x40,0xc5,0x2d,0x59,0xf8,0x9b,0x5f,0xe3,0x3a,0x10,0xdf,0xda,0x72,0x9e,0xab,0x13,0x7b,0x8f,0xc8,0x52,0x9f,0x58,0x45 +.byte 0x7a,0xe6,0x3a,0xbb,0xdd,0x1d,0xc7,0x3b,0xc4,0x26,0xdc,0x99,0x29,0xf2,0x74,0x16,0x84,0xe9,0x8a,0x86,0xc0,0x1e,0x49,0x96,0x2f,0x5c,0x2a,0x49,0x71,0x88,0xe6,0x82,0xb2,0x18,0x88,0xc1,0x86,0xcb,0x26,0x3c,0xa5,0x50,0x31,0x22,0x9a,0x8f,0x45,0x2b,0xde,0xf0,0x86,0x8e,0x13,0x86,0xc4,0x4a,0x9b,0x35,0x27,0x93,0x0b,0x13,0xc8,0xef +.byte 0x96,0x74,0x97,0x85,0x09,0xc0,0xa0,0x32,0xfe,0xc3,0xe3,0x92,0x2e,0xe8,0x54,0xbd,0xc2,0x23,0xeb,0x4b,0x02,0xf5,0x5a,0x0b,0x0d,0x58,0x50,0x45,0xe7,0x01,0xd4,0x17,0x00,0xdb,0x0d,0xd4,0x2e,0xa0,0xde,0x38,0xf4,0xb1,0x1e,0xd0,0xf0,0xa3,0x6b,0x21,0x0c,0xbd,0xae,0x84,0x7e,0x42,0x36,0x4f,0x2e,0x46,0xae,0x23,0x91,0xb9,0x06,0xac +.byte 0x86,0x7f,0x29,0xca,0xfb,0xe9,0xde,0xdb,0x90,0xfe,0x6f,0xbc,0xdb,0x3c,0x48,0x3d,0x6e,0x06,0x68,0x49,0xbb,0x43,0x8d,0x9d,0xc4,0x5f,0x45,0xcb,0x77,0x28,0xe0,0x35,0xd1,0xb4,0x25,0xb2,0x45,0x6d,0xb4,0x89,0x53,0x26,0x33,0x98,0x83,0x45,0x9d,0xf5,0xad,0xf9,0xa7,0x59,0xb6,0x6e,0xa8,0x25,0xa5,0xef,0xee,0xf6,0x6a,0xd5,0x6c,0x60 +.byte 0x9a,0xea,0x78,0x9e,0xe4,0xa2,0x29,0x0b,0x70,0xb3,0x6e,0x3a,0xfd,0x07,0xc7,0x7f,0x1b,0x07,0xc7,0xca,0x1b,0xb8,0x08,0xe1,0xc9,0x94,0xb2,0x62,0x7c,0x04,0x96,0xa6,0xda,0x65,0x28,0xfd,0xf9,0x70,0x22,0xb7,0x21,0xd3,0xa6,0x38,0x0f,0x1e,0x88,0x7e,0x73,0xec,0x04,0x99,0x8b,0x23,0x91,0x13,0xe6,0x4f,0x74,0x81,0xcc,0x1f,0xdd,0xaf +.byte 0x58,0xc4,0x80,0x00,0x4d,0x1d,0xbe,0x84,0x7d,0xfe,0x85,0xe7,0x77,0x20,0x3c,0x65,0x4e,0x0e,0x2e,0x5d,0xc1,0xd9,0xcb,0xf7,0xbb,0xc8,0x8d,0xbf,0x16,0xa8,0x1e,0x63,0xf5,0x10,0x5e,0xa5,0x9c,0x63,0xb6,0x9a,0xeb,0x98,0xa8,0xb1,0x59,0x82,0x66,0x51,0xae,0x3c,0xfc,0xa8,0x11,0x92,0xf4,0x45,0x88,0x7c,0x03,0x6f,0xe6,0x87,0xe4,0xa8 +.byte 0x79,0xbf,0xb3,0x0d,0xd6,0x0b,0x8d,0xa3,0x16,0x2a,0xfb,0x79,0xb9,0xe7,0xdb,0xa7,0xdb,0x94,0xd3,0xe6,0x3a,0xdd,0xe9,0x5f,0x30,0x7d,0x68,0x90,0x35,0xfd,0x18,0x91,0x8e,0xc5,0x12,0xd6,0xf9,0x98,0xa0,0x5b,0xcd,0x81,0x76,0x84,0x08,0xd0,0xab,0x59,0x2d,0x3b,0x8a,0xf9,0xd9,0x95,0xde,0x8b,0xbb,0x92,0xef,0x35,0xc3,0x3e,0x46,0x73 +.byte 0xf3,0x3b,0x09,0xbf,0x22,0x2b,0x9c,0x0f,0x70,0x9a,0x16,0x0e,0x4b,0xa7,0x1a,0x96,0x98,0xb7,0x5a,0x40,0x06,0x81,0xf4,0xac,0xa6,0xe6,0xab,0xf2,0xda,0x87,0x18,0x61,0xcb,0xc1,0x67,0xbd,0x2f,0x6f,0x06,0x21,0xaf,0x73,0x98,0xe1,0x3f,0x7a,0x17,0x7f,0x44,0xcb,0x1d,0xdd,0x60,0xb3,0x2c,0x58,0x20,0x8a,0x04,0x74,0x56,0x9b,0x26,0x51 +.byte 0x61,0xb0,0x07,0x50,0x53,0x83,0x31,0x42,0x59,0xb3,0x33,0xfa,0xfe,0xbc,0xad,0x7f,0x99,0x9b,0x86,0xf1,0xaa,0x85,0xf1,0xbb,0xc0,0x0c,0x91,0x8d,0x1a,0x0f,0x8f,0x9f,0xfe,0x62,0x2b,0x35,0xae,0xcc,0x8c,0x09,0xe3,0x29,0x96,0xd1,0xbe,0x7f,0x25,0xd6,0x03,0xf0,0x4c,0x53,0xad,0x5b,0x56,0x66,0x68,0x9a,0xa3,0xc4,0x07,0x71,0xde,0x49 +.byte 0x82,0xbb,0xf7,0x9a,0x2b,0x96,0xcf,0x50,0xf6,0x00,0xf7,0x0b,0x27,0xdd,0xf5,0xf6,0xc5,0xc8,0xbd,0x2a,0xa2,0x06,0x2c,0x42,0x3f,0xa0,0xf8,0xcc,0x1d,0x64,0xcf,0xbc,0xb4,0xc4,0x63,0xde,0x6b,0xd3,0xb4,0x61,0xdf,0xbd,0x73,0x50,0x34,0xc3,0x20,0x45,0x06,0x73,0x9b,0xf0,0xfb,0xa6,0x2b,0xec,0x92,0x32,0xa9,0x1f,0x4f,0x1e,0x38,0x78 +.byte 0x2a,0xd2,0x7c,0x1d,0x89,0xf9,0x70,0xbc,0xef,0x09,0x77,0xd3,0x6a,0x56,0xa1,0x8b,0x4b,0x23,0x1b,0xb1,0x2f,0xec,0x84,0xe5,0x59,0xc5,0x20,0x23,0xbc,0x3f,0x0a,0x43,0x97,0x1c,0x5e,0xf7,0xee,0xfe,0x0b,0x2a,0x42,0x08,0x2a,0x39,0x91,0xce,0x8a,0x33,0x9f,0x63,0x77,0x6d,0xf6,0xf3,0x0e,0x1d,0xb3,0xfb,0xcf,0x2f,0x7f,0x95,0xc2,0x71 +.byte 0x1c,0xa0,0x0b,0xc6,0xb8,0xde,0x4d,0xd8,0xcc,0x4c,0x4f,0xaf,0x07,0x87,0x6d,0x3b,0xab,0x95,0xab,0xa1,0x6a,0x50,0x9f,0x7c,0x35,0xb6,0x65,0xdd,0xe3,0x06,0xe5,0xb3,0x42,0x5f,0x4d,0xe5,0x3e,0xfa,0x6c,0xdf,0x19,0x58,0xd1,0xf6,0xc6,0x94,0x1c,0xce,0x30,0x90,0xd3,0xeb,0xa3,0x7c,0xe5,0x3f,0x57,0x99,0x2e,0x22,0x0a,0x94,0x2f,0xfe +.byte 0x39,0x16,0xe6,0xfa,0xd0,0xb5,0xf9,0xb4,0x88,0x61,0xa4,0xa8,0xc3,0xb8,0xb7,0x52,0xaf,0x90,0xc1,0xe0,0x19,0x78,0x04,0x2b,0x71,0x04,0x03,0x2f,0x63,0xbe,0x40,0xf5,0x82,0x3b,0x1b,0x6b,0xde,0x6d,0x1e,0x86,0x87,0x82,0xc3,0x31,0x97,0x20,0xdd,0xdd,0xce,0x61,0x64,0x99,0xf6,0xbe,0xbf,0xec,0x37,0x54,0x8b,0x92,0x29,0xda,0xc5,0x7b +.byte 0x4d,0xc5,0xaf,0xb8,0x4e,0x4b,0x4a,0x2b,0x35,0x30,0xf5,0x19,0x9e,0x32,0xd8,0x2e,0xc1,0x19,0xfe,0xd1,0x61,0xb0,0xaa,0x05,0x58,0x15,0xd9,0x0e,0x4e,0xca,0x4e,0x10,0x83,0xe6,0xe6,0x57,0xe8,0x8d,0x13,0xb4,0x6f,0x85,0x59,0xf2,0x83,0xc8,0x37,0xaa,0xa2,0xe5,0xc8,0x77,0x06,0x82,0x21,0x5d,0x84,0x58,0x67,0x9b,0xcc,0x9c,0xfc,0x1b +.byte 0x28,0x2f,0xac,0xc8,0x96,0x91,0x26,0x46,0x42,0x2b,0x68,0x57,0xb0,0x79,0x1e,0xb1,0x9b,0x92,0x2c,0xeb,0x67,0x00,0xd4,0x26,0x7d,0xca,0x45,0x97,0x55,0xea,0x2a,0x20,0x70,0x7c,0x20,0x14,0x38,0x40,0x3d,0x4f,0xf5,0x3a,0x1f,0x0a,0xe3,0x9a,0x48,0xcc,0xb2,0x7d,0xee,0x5b,0x48,0x90,0x0d,0x12,0x77,0xd8,0xd3,0xb6,0xd7,0x66,0x9e,0x48 +.byte 0xbb,0x92,0xc1,0x7c,0x4e,0x90,0x4d,0xd5,0x96,0x99,0xea,0x86,0x2d,0xb9,0x5a,0x50,0x05,0xc2,0x6b,0xa7,0x0c,0x43,0x44,0x22,0x09,0xb9,0xc0,0x56,0x47,0x5f,0xdf,0xaf,0x6b,0x91,0xe2,0xd7,0x45,0x77,0x17,0x7a,0x71,0x6d,0x27,0x93,0xe2,0xc6,0x10,0x2f,0xc8,0x3b,0x75,0x78,0x11,0xae,0x07,0xe6,0xba,0x64,0xd4,0x06,0xfa,0xf9,0x1d,0x74 +.byte 0x9e,0x4f,0x6d,0x02,0xfc,0x40,0x80,0x9a,0x2e,0xd4,0x15,0x32,0x15,0xe8,0x97,0x0a,0xd4,0x65,0x6a,0x87,0xd3,0x66,0x4b,0xb8,0x66,0x84,0x8e,0xb9,0x4b,0xa7,0xcf,0x58,0x13,0x66,0x3a,0x4e,0xa5,0x76,0x17,0x13,0x92,0x79,0x42,0x67,0x6d,0xb6,0x65,0xec,0xc8,0xb5,0x5f,0x17,0x2a,0x2d,0x4b,0x19,0xe9,0x00,0x6e,0x38,0xaf,0xe9,0x06,0xb6 +.byte 0xe8,0x99,0x69,0x8a,0x74,0xe7,0x7e,0x70,0x69,0x4b,0xbc,0xce,0x5d,0x61,0x94,0x1b,0x47,0x41,0x38,0x5f,0x2e,0xcf,0x2b,0xe1,0xcd,0xa3,0x98,0x71,0xf7,0x09,0x65,0xfe,0x5f,0x62,0x4b,0x9e,0x91,0x88,0x35,0xa2,0x66,0x02,0x1d,0xc9,0x93,0x0c,0x19,0x50,0x4b,0x95,0x71,0x79,0xdd,0x74,0xe1,0xda,0x5a,0xb7,0x38,0x70,0x61,0x18,0x3f,0x68 +.byte 0x08,0x34,0xd8,0xfe,0xbb,0xd1,0xbf,0x57,0xed,0xc2,0x52,0x6d,0x54,0x3e,0xcb,0x0c,0x32,0xc7,0x09,0xa9,0x31,0x10,0xe8,0xbd,0x70,0xe3,0x0e,0xe9,0x4f,0x7a,0xd6,0x42,0x45,0x2e,0x1b,0x3c,0x0d,0x15,0x6d,0xb4,0xad,0xe9,0xc5,0xa2,0x12,0x77,0x34,0x43,0x20,0x95,0xc1,0xb7,0x51,0x72,0xed,0x78,0xa0,0xae,0x3c,0xae,0xb4,0xd4,0xda,0x58 +.byte 0x83,0x62,0xa9,0xc6,0x01,0x3d,0x14,0x19,0x07,0x00,0x3c,0x82,0x16,0x7e,0x8a,0x91,0x78,0xa1,0x65,0x0b,0x5b,0x3a,0x40,0x72,0xe5,0xf0,0xd4,0x82,0x04,0xe4,0x01,0xf1,0x84,0x87,0x96,0x26,0x91,0x66,0x77,0xf7,0x59,0xd6,0xc2,0xca,0x29,0x3b,0x68,0x2a,0x27,0x99,0x64,0x86,0xc2,0x96,0xbf,0x11,0x3c,0xa8,0x0c,0xf7,0x86,0xb8,0xc1,0x40 +.byte 0x15,0x1a,0x84,0xe3,0x93,0x23,0x73,0xa9,0x8b,0xbd,0xb4,0x8a,0xe4,0xf1,0xa5,0x8f,0x56,0xa3,0xdc,0x77,0xbd,0x7d,0x15,0x74,0x2b,0x18,0x92,0x56,0x45,0xbc,0xaf,0xf2,0x55,0xce,0x9d,0xc2,0xab,0x39,0x90,0xec,0x78,0x3f,0xa5,0x14,0xeb,0x40,0x2f,0x01,0xca,0xeb,0xad,0x73,0x85,0xbc,0xe1,0x91,0xaa,0x77,0xa9,0x6c,0x02,0x66,0x6a,0x65 +.byte 0x63,0x6c,0x50,0x62,0x83,0x83,0xef,0x16,0x4f,0x21,0xfd,0x28,0x8e,0x52,0x66,0x5b,0x6f,0x8f,0xbe,0x8d,0x17,0xb9,0xd5,0x99,0xf7,0x39,0xd1,0xbc,0xa2,0x43,0xd7,0x0a,0x80,0xea,0x42,0xf8,0x38,0x53,0x95,0x07,0x6f,0xb7,0x7c,0xc1,0x16,0x88,0xc8,0xb7,0x59,0xde,0x76,0x51,0x2f,0x92,0xd0,0x40,0xfd,0xd9,0x2d,0xca,0x9e,0x8d,0x28,0xae +.byte 0x48,0xc1,0x0a,0xe0,0x76,0x9c,0x02,0x0b,0xc5,0xd1,0xf9,0x83,0x90,0x86,0xa4,0xeb,0x5c,0x64,0x65,0xf8,0x98,0x38,0xc5,0xce,0xef,0x6f,0xc3,0x88,0xb6,0x2f,0x8a,0x40,0x55,0x52,0x47,0x06,0x75,0x16,0x46,0x9c,0xff,0x3c,0x68,0x97,0xc3,0xfb,0x10,0x11,0x7b,0xba,0x04,0xcc,0xad,0xba,0xcf,0xf0,0xae,0xba,0xe6,0x59,0x9c,0xf5,0x27,0xeb +.byte 0xdd,0x5c,0x86,0x25,0xa1,0xb6,0xb8,0x1c,0x94,0x98,0xa5,0x79,0x82,0x4e,0xdf,0x09,0x3f,0x2f,0x8a,0x4e,0x1b,0x5a,0xab,0xd4,0xe6,0x21,0xb3,0x02,0x19,0x39,0xa9,0x2e,0x0e,0xae,0x86,0x30,0xc7,0xa0,0x00,0xed,0x72,0xdc,0x71,0x77,0x42,0x76,0x54,0x68,0xb2,0x8d,0x5d,0xc3,0x5c,0x86,0xf8,0xb1,0x6c,0x67,0xdf,0x24,0x40,0x6a,0x2b,0x1d +.byte 0xbc,0x0d,0x25,0x7d,0x9e,0x1c,0xbd,0x18,0x85,0xda,0x7a,0x86,0x5e,0xed,0x10,0x80,0x83,0xa6,0xef,0x1e,0x93,0xac,0xce,0xe6,0x32,0x35,0xdf,0xb8,0xc7,0x9b,0xf0,0x0f,0x9d,0x37,0xbd,0xd9,0x58,0x33,0x19,0xa1,0x23,0x51,0x5f,0xa7,0x5a,0x99,0x7e,0x2a,0xfd,0x85,0x3c,0x26,0xad,0xcc,0x7e,0x07,0x32,0x7b,0x24,0x5a,0x6b,0x4b,0x71,0x4e +.byte 0xca,0x8b,0xc4,0x03,0x26,0x76,0x02,0x68,0x0d,0xa1,0x09,0xe0,0x2e,0xa4,0x82,0x88,0x05,0x5a,0xc4,0xcb,0x31,0x9d,0x56,0xda,0x0d,0x00,0x04,0xbc,0x07,0xca,0x1f,0xdf,0x9e,0x44,0xed,0x36,0xbd,0xa0,0x22,0xff,0x78,0xd1,0xcb,0x62,0xe0,0x0d,0x2e,0xdc,0x2e,0x36,0x28,0x8e,0xd3,0xa9,0xe0,0x38,0xd4,0xc5,0x2b,0xee,0xaf,0xa4,0x08,0x7d +.byte 0xed,0x2c,0x8a,0xf5,0x86,0x5e,0xed,0x2a,0x0d,0xbf,0xe6,0xfb,0x6f,0xc4,0x02,0x75,0x36,0xe5,0x7b,0xe9,0x4a,0xb3,0xf1,0xf4,0x86,0x6c,0x9a,0x6e,0xaa,0x7a,0xbe,0x4b,0xd6,0xf2,0x6b,0xcb,0x78,0x6f,0xf9,0x42,0x1a,0x19,0x7b,0x7e,0xba,0x59,0x02,0x8b,0xe3,0x5c,0x44,0xa4,0x84,0xa8,0x4a,0x67,0x93,0xee,0xc4,0x17,0x07,0x26,0xfe,0x86 +.byte 0xf1,0xc6,0xba,0xbf,0xc4,0x3d,0x33,0x41,0x4d,0xc4,0xf0,0xa8,0x6d,0xe1,0x06,0x16,0x2d,0xc9,0x5d,0x2a,0xf5,0x4a,0xc6,0xd2,0x8c,0x98,0x55,0xe8,0x8d,0xd0,0x31,0x5f,0xc7,0x05,0xd1,0xca,0xd2,0x72,0xe6,0xd0,0xcb,0x62,0x79,0xac,0x60,0x59,0x94,0x59,0x48,0x9e,0x91,0x17,0xa7,0xa0,0xac,0x4a,0xe5,0x08,0xe5,0x52,0xa4,0xd4,0x83,0x8c +.byte 0x83,0x57,0xe7,0xe5,0xfc,0x9b,0x43,0x78,0xc8,0x7e,0x94,0xc4,0x35,0x3e,0xac,0x4a,0x8d,0x60,0x80,0xdc,0x72,0xe3,0x15,0x09,0x2a,0xbd,0xcc,0x9a,0xe4,0x1a,0x18,0xa8,0xf1,0x29,0x9b,0xca,0x58,0x0b,0x6d,0x7b,0x33,0x91,0x05,0x27,0x6a,0x48,0xbe,0xac,0x08,0xa5,0x2a,0x64,0xf5,0xae,0x2a,0x90,0xf1,0x2d,0x3f,0xa8,0xff,0x17,0x92,0xc4 +.byte 0xec,0x3a,0x09,0xbf,0xae,0xd3,0xe2,0x1c,0x3c,0xc8,0x6f,0x91,0x72,0x99,0xe3,0x82,0x30,0x4f,0x40,0x5c,0x0c,0x8d,0xfd,0xbe,0x10,0xbc,0xce,0x1e,0x0a,0x09,0xbf,0xde,0xdc,0x72,0x7e,0x4c,0xbc,0xec,0x34,0xe2,0x96,0x8a,0xc6,0xee,0x19,0x6c,0xa8,0xf1,0xa5,0xb2,0x71,0x88,0x13,0xe8,0x11,0xda,0x3b,0x77,0x10,0x9c,0x9f,0x74,0x49,0x21 +.byte 0x16,0xcf,0x6f,0x05,0xc5,0xc1,0x4d,0xfe,0xe7,0x4d,0x67,0xe8,0x12,0x14,0xf7,0xaf,0x66,0x8d,0x55,0x34,0x00,0x18,0x10,0x6e,0x6a,0xd2,0x4c,0xd9,0xd3,0x15,0x40,0xbf,0xce,0x7b,0x10,0x69,0xbd,0x15,0x0e,0x60,0x2b,0x76,0x50,0x80,0x92,0x02,0x3c,0x0f,0xea,0x47,0x03,0xd9,0xf6,0x2c,0x00,0xde,0x29,0xb9,0x2e,0xf6,0x80,0x10,0x81,0x28 +.byte 0x6f,0x41,0xfc,0x88,0x65,0xe9,0xb5,0xd4,0x78,0x53,0xff,0x04,0xc4,0xdd,0xd7,0x35,0x34,0x59,0x85,0x33,0x01,0x33,0x67,0xe1,0x4e,0xc2,0xac,0xe6,0x24,0x24,0xb6,0x83,0x48,0x08,0x0c,0x73,0xe5,0x9c,0x98,0xe4,0x4c,0x3c,0x1f,0x6e,0x77,0xea,0x8c,0x76,0x23,0xbb,0x41,0x5e,0xc1,0x8a,0xba,0x3e,0xe5,0x3e,0x86,0x89,0xab,0x32,0x65,0x1b +.byte 0x00,0x92,0x56,0xe0,0x62,0xc1,0x8f,0xeb,0x15,0x7f,0x86,0xdf,0xa2,0xc2,0x8d,0xf5,0xb5,0x88,0x72,0x8c,0xba,0x92,0x30,0x53,0x58,0x3e,0x0b,0xe6,0x4f,0xd4,0xef,0x34,0xab,0xbb,0x61,0xe0,0x31,0x3c,0xe7,0xb2,0x5f,0x64,0xcb,0x52,0xc7,0x1d,0x95,0x96,0xd2,0x8c,0x87,0x34,0x92,0xf2,0xad,0xd9,0x78,0x1d,0xa1,0x67,0x58,0xfa,0xfb,0x06 +.byte 0xc8,0x7f,0x9e,0xf7,0x02,0x12,0xd9,0x8c,0x68,0xbc,0x2b,0xd3,0xe1,0x0e,0x1e,0xbd,0x33,0x7a,0xfd,0x03,0x41,0xb9,0x72,0x2e,0x63,0xfe,0xb1,0x39,0xc3,0x0f,0xa0,0xa9,0x76,0x4f,0x7b,0xab,0xae,0xda,0x22,0xec,0x83,0x32,0xb0,0xec,0xd1,0xfd,0xc2,0x28,0x1e,0x42,0x29,0x31,0xd5,0xb3,0x33,0xcd,0x13,0x1d,0x9f,0xac,0x73,0x27,0xf7,0xea +.byte 0xc6,0x66,0xd2,0x32,0x91,0x60,0x35,0xf4,0x28,0x34,0x43,0x6a,0x74,0x8c,0x05,0x2a,0x84,0x34,0xfd,0x84,0xa5,0xcb,0x1d,0x2b,0x41,0x28,0xa6,0x19,0xed,0xcd,0xad,0xea,0x6e,0xf7,0x14,0x18,0xac,0x56,0x9a,0xf5,0xaa,0x7d,0x4e,0x8a,0x99,0xd1,0xda,0x41,0xaf,0xe8,0xfc,0xef,0x66,0x88,0xd0,0xed,0xfd,0xae,0x2a,0x85,0xc0,0x60,0xa2,0x30 +.byte 0x5d,0x1b,0x48,0xf6,0x3e,0xcf,0x56,0xdf,0x53,0xdc,0x2d,0xf5,0xfd,0x7f,0x2a,0x2a,0x4d,0x4f,0x11,0xcc,0xea,0x72,0xdb,0xb9,0xeb,0x92,0x0e,0x9f,0xc1,0x26,0xe9,0xbf,0x25,0x6a,0x27,0xe1,0x63,0x9b,0xdd,0x62,0x38,0xad,0xd3,0xb2,0x75,0x62,0x45,0xbf,0xbf,0xf4,0xe2,0xd6,0x97,0xe9,0xeb,0xeb,0x98,0xab,0x73,0xdc,0x8a,0xde,0xaa,0x3b +.byte 0x69,0xfd,0x61,0x6f,0xbb,0xfc,0x28,0xc0,0xff,0x37,0x2e,0xeb,0x31,0x59,0x57,0xfb,0xd3,0x0e,0xed,0x01,0x66,0x50,0x63,0x53,0xa2,0xd1,0x24,0x8c,0xc8,0x8d,0x80,0x03,0x2a,0x1e,0x11,0x3a,0xb9,0x6c,0xf4,0x5f,0x58,0xa2,0xd6,0x58,0x6b,0x85,0x61,0xd1,0xe7,0xdc,0x90,0x07,0x34,0x6e,0xb9,0x0b,0x0d,0xcb,0xd5,0xe3,0xc6,0x9d,0xb8,0x51 +.byte 0x37,0x61,0xd0,0x6c,0x2e,0xed,0xe0,0xbc,0x55,0x74,0x63,0x1b,0x42,0x17,0x6a,0x9c,0x91,0x1b,0x96,0x76,0xc8,0xe4,0x2b,0x2e,0x90,0xd9,0xe5,0x3f,0x56,0x1b,0x2f,0x93,0x81,0x86,0x2a,0xb4,0xdf,0x93,0xcb,0xfa,0x01,0x85,0xd9,0x26,0x46,0x46,0x97,0x2a,0x2e,0xb3,0x91,0xe4,0xcf,0xd9,0x01,0x5a,0x37,0xa6,0xca,0x5e,0xed,0xa9,0x94,0x35 +.byte 0x2c,0x69,0x5b,0x1e,0xf8,0x38,0x61,0x41,0x10,0xf6,0xe9,0x6e,0x96,0xee,0xe6,0x5f,0x78,0x14,0x93,0x12,0xd2,0x57,0xe5,0xf4,0x58,0x46,0xca,0xc8,0x75,0x59,0xbd,0xd0,0xe4,0x70,0x35,0xa5,0x4a,0xfd,0x54,0xe2,0x91,0x76,0x0e,0xe6,0xe3,0xbb,0x31,0x65,0x4b,0x18,0xa8,0xb4,0xfa,0xa6,0x7d,0x7a,0xa9,0x47,0x3d,0x2b,0x2e,0x66,0xac,0x5b +.byte 0x3e,0x5e,0x8c,0x27,0x0c,0x33,0x04,0x03,0x4e,0x5f,0xcd,0x6b,0x9c,0xaa,0x13,0x83,0x38,0xe9,0x38,0xcf,0x03,0x70,0x5a,0x0f,0x18,0xf5,0xec,0x64,0xf3,0x0c,0xe8,0xb1,0xa9,0x07,0x70,0xf7,0xde,0x0c,0x35,0xf5,0xe2,0xcd,0xed,0xe6,0x4d,0xac,0x5c,0x4d,0x3e,0x03,0x96,0x90,0x7b,0x4c,0x3e,0x18,0x42,0xc0,0xa7,0x23,0x12,0x8e,0x54,0xc1 +.byte 0xa1,0x2f,0x82,0x13,0xe6,0x1f,0x74,0xae,0x7b,0x4a,0xa4,0xbb,0xdc,0xc0,0x68,0x0f,0x83,0xbc,0xda,0xce,0xa2,0xe7,0xbe,0x18,0xcd,0x8b,0x35,0x05,0xa3,0x4b,0x6f,0xf0,0x53,0x12,0x42,0x2f,0x3c,0x09,0x87,0xb7,0xe3,0x36,0x29,0xe1,0xa2,0xb6,0x60,0x05,0xb9,0x66,0x80,0xe9,0xec,0x40,0x2a,0x55,0x78,0x5f,0x1c,0x5f,0xc3,0xc7,0x49,0x69 +.byte 0x87,0x97,0x5f,0xa5,0x31,0xa8,0x83,0x66,0x5a,0xd7,0xaf,0xf0,0x15,0xf3,0x01,0x62,0x9a,0x88,0x76,0x0f,0xb3,0xdf,0xf1,0xc6,0x34,0xc3,0xac,0x68,0x60,0x9a,0x91,0x03,0x13,0xea,0x0e,0x36,0x9c,0xf5,0x51,0xb7,0x0c,0xa4,0xeb,0xf0,0x41,0x85,0x54,0x05,0xed,0x7a,0xc2,0xba,0x3b,0xb8,0x1c,0x41,0x0d,0xbb,0xad,0x16,0x7e,0x64,0x4f,0x88 +.byte 0x7a,0x17,0xae,0x76,0x55,0x78,0x93,0xe8,0x99,0xa1,0x70,0x1f,0xf6,0x8a,0xb9,0xeb,0x41,0xb9,0x08,0xb8,0x9d,0x78,0x57,0xa1,0xe1,0x23,0xa0,0x03,0xd3,0x16,0xbc,0x16,0x24,0xed,0xc5,0x12,0x16,0x0a,0x8a,0x23,0x11,0x22,0xc2,0xfe,0x49,0x9d,0x3d,0x10,0x3d,0x4b,0xeb,0xab,0xcb,0x21,0x9d,0x9d,0xb1,0x64,0x87,0xe5,0x4d,0xb9,0xe7,0x10 +.byte 0x05,0xa0,0x55,0x2f,0xdf,0x53,0x5e,0x03,0xec,0x7e,0xe4,0x1f,0x9b,0x16,0x0c,0xfc,0xd9,0xf9,0x66,0x39,0x93,0x9e,0x49,0x34,0x97,0xd6,0xa5,0x56,0x00,0xf1,0xaf,0x08,0xeb,0x58,0xcf,0x87,0x02,0xc4,0xf1,0x24,0xe8,0x29,0x83,0xc9,0x5d,0x56,0x68,0xa2,0xaa,0xba,0xb3,0x86,0x23,0x59,0x8d,0x32,0x96,0x4a,0xbb,0xe9,0xf2,0x53,0xb2,0x87 +.byte 0x4a,0xf5,0xdc,0x23,0xd4,0x2f,0x36,0x70,0xb5,0x1d,0xee,0x47,0x51,0x6c,0x35,0x2a,0xad,0x35,0x74,0x1b,0x98,0xb5,0x33,0x2c,0x6d,0x4c,0xf8,0x39,0x07,0x92,0x6c,0xc7,0x65,0x10,0x64,0xcd,0x53,0xa3,0xcb,0xcc,0xe4,0xb2,0x46,0xb3,0xb7,0x44,0x01,0x92,0x44,0x12,0x23,0x25,0x3e,0x00,0xe3,0xeb,0x5f,0xe5,0x76,0x48,0x4e,0x4a,0x7f,0x36 +.byte 0xf0,0x0b,0x5e,0xc0,0x97,0x0d,0xc8,0xcf,0xd5,0xb8,0xc0,0x11,0x8d,0xb9,0x1e,0x31,0x0f,0x84,0x36,0x2e,0xe0,0x42,0xe6,0x02,0x9d,0xa4,0xdb,0xa2,0x76,0xfd,0xa1,0x95,0xe0,0x49,0xe6,0xf1,0xd2,0xae,0x27,0x6b,0x11,0x05,0x47,0xb0,0xaa,0x61,0x01,0xd4,0xe6,0xcd,0x9d,0x7e,0x33,0x5d,0xec,0x22,0x96,0x59,0xb7,0xc5,0x50,0x83,0xa4,0x66 +.byte 0x56,0xc7,0x43,0xa6,0xf7,0x5d,0xb2,0x45,0xc0,0x96,0xa0,0x5b,0xb8,0xed,0xae,0x29,0xb3,0x7d,0xbd,0x01,0xde,0xc0,0xe7,0xcc,0xe9,0x55,0x32,0x32,0xbf,0xdd,0x03,0x1b,0xb0,0x4e,0xff,0x53,0x1f,0x4b,0xc6,0xec,0x16,0x9d,0x5b,0x78,0x74,0xc4,0x75,0x51,0x8a,0x1c,0xae,0x6b,0xcd,0x9c,0x77,0x47,0xbf,0xd1,0x38,0x3e,0x9e,0xc0,0xad,0x16 +.byte 0xb7,0x15,0x6b,0xdc,0xad,0xe9,0x13,0xbc,0x48,0xc1,0xaf,0x69,0xce,0xc4,0xcc,0x9b,0x73,0xf9,0xd5,0x7c,0xab,0xf0,0xf1,0x9b,0xea,0xc6,0x0b,0x19,0x47,0x42,0xc1,0xa0,0x02,0x64,0x17,0xce,0x88,0x4f,0x16,0xa6,0xed,0xdb,0xfe,0x61,0xd3,0xd6,0xc0,0x11,0x30,0x16,0xd2,0x45,0xb3,0x7e,0x52,0xd0,0x94,0x77,0xf0,0x0e,0xbf,0x16,0xc0,0x4a +.byte 0x2a,0x5c,0xac,0x55,0x57,0xb1,0x41,0xb6,0xa3,0x68,0x8c,0x0a,0x66,0x15,0xb4,0xf5,0xd9,0x9a,0xa9,0x68,0xf2,0xbc,0x06,0xc5,0x7c,0xd1,0x18,0x55,0x9a,0x2d,0x94,0x2e,0x04,0x4b,0x7d,0x3c,0xb1,0xe3,0x03,0x7a,0xa7,0xe3,0xe5,0x63,0x49,0x7c,0x3f,0x0a,0xc5,0xbd,0xd3,0x0f,0x04,0xfd,0x99,0xf7,0xe6,0x05,0x35,0x66,0x17,0x05,0x85,0x3b +.byte 0x98,0x92,0x11,0x26,0xe2,0x21,0x52,0x1b,0x54,0x08,0xc8,0xf0,0x4e,0x75,0x22,0x3f,0xe8,0xb6,0x35,0xa4,0x02,0x52,0x70,0xc2,0xce,0x5a,0x00,0xe2,0xe2,0x92,0x8c,0x97,0xa7,0x1d,0x42,0x52,0x8b,0xf1,0x81,0xa7,0xce,0x60,0x46,0xbe,0xf0,0x1d,0x34,0xdf,0x73,0x2a,0xd6,0x9a,0x2d,0xf9,0xe3,0x91,0x05,0xe4,0x1f,0x31,0x11,0x30,0xb0,0xff +.byte 0x8f,0x61,0x74,0xf4,0xef,0xcd,0xf6,0xa4,0x9a,0xd2,0x5e,0xba,0x27,0xe8,0x78,0x38,0xfc,0x75,0xff,0x3b,0x6c,0xde,0x4a,0x46,0x47,0x8e,0x97,0x28,0xe4,0x23,0xe0,0x10,0x07,0xca,0xcb,0x6d,0xed,0x29,0xc0,0xee,0x98,0x96,0x7c,0x90,0x1f,0x89,0x12,0x0f,0xd5,0x28,0xcf,0x6e,0x4b,0x9b,0x2d,0xb3,0xcd,0x97,0xb8,0xeb,0x58,0x23,0x26,0xb1 +.byte 0xb4,0x95,0x11,0x1e,0xee,0x00,0xde,0x24,0x28,0xa6,0x3f,0x15,0xa2,0x9a,0xcb,0x9d,0xe3,0x04,0x5d,0xc3,0x60,0x97,0x14,0x2c,0x84,0x2b,0x69,0x9c,0x2a,0xbf,0x08,0xba,0xc4,0x38,0x36,0xaa,0x89,0x11,0x32,0x63,0x01,0xa2,0x44,0x5f,0x50,0xf0,0x5b,0x11,0x15,0xc8,0x80,0xc9,0xa6,0xe7,0x5d,0x70,0xa8,0x34,0x42,0x97,0x2a,0x60,0x99,0x20 +.byte 0xa6,0x60,0xc0,0x70,0x8d,0x2f,0x3f,0x8a,0x14,0x80,0x8a,0xbe,0x05,0xb3,0x50,0x16,0xaf,0x32,0xb4,0x35,0x3e,0x1d,0x31,0x42,0xdd,0x50,0xeb,0x04,0x82,0x4c,0x83,0x3d,0x8f,0xb6,0x1e,0xc2,0xa9,0xd2,0x30,0xba,0x33,0xdb,0x97,0x6d,0x2d,0x97,0x59,0x33,0xc0,0xf8,0xa5,0x59,0xc5,0x44,0x9c,0xf1,0x06,0xc4,0xf2,0x31,0x3e,0xff,0xb8,0x12 +.byte 0x00,0x4d,0x6c,0x2d,0xa1,0xc7,0x83,0xea,0x55,0x93,0x0e,0x89,0x76,0xbf,0x56,0x2a,0x99,0x62,0x54,0xad,0x2c,0xe8,0xf0,0xf9,0x70,0x18,0xa5,0x2b,0x24,0xac,0x59,0xc9,0x84,0xe3,0x1a,0x9d,0xa0,0xdb,0x1b,0x7f,0xd5,0x7e,0xb5,0xe0,0x86,0x36,0xc5,0x71,0x6a,0xab,0xdb,0xa5,0x84,0xf1,0x9e,0x9e,0xf6,0x1b,0xab,0x47,0x94,0x38,0x8e,0x5d +.byte 0x55,0xb4,0xf5,0xc3,0x59,0xc2,0x2c,0x6d,0x9d,0x28,0x7d,0x33,0xcd,0xc7,0xd6,0xdf,0x10,0xda,0x7c,0xd0,0x6c,0x91,0x88,0xd6,0x6b,0xe7,0x72,0x75,0x18,0xb1,0x87,0xe4,0xbb,0x10,0xe0,0xa3,0x0f,0xea,0x65,0x0a,0x70,0xc8,0xee,0x52,0x05,0x0a,0x27,0x39,0x66,0xda,0xd6,0xa6,0xfe,0x97,0x24,0x09,0x9d,0x20,0x76,0x4e,0x97,0x9d,0xa9,0x9f +.byte 0x76,0x20,0x27,0x57,0x5b,0xf4,0x76,0x1a,0x4b,0xcf,0x13,0x6c,0x9e,0x63,0x53,0x97,0xca,0x10,0xd6,0x90,0x7d,0xfc,0xe3,0x03,0x2c,0x6c,0x79,0x93,0x1a,0xae,0x0f,0x43,0xdb,0x75,0xde,0x56,0xa6,0x69,0x93,0xce,0x2d,0x94,0x56,0x77,0x90,0x19,0x71,0x7f,0x7a,0x99,0xbd,0x9c,0x79,0x62,0x00,0x49,0x3a,0x62,0x49,0x4b,0x92,0x65,0x8b,0xe2 +.byte 0xa8,0x3d,0xa5,0x89,0x23,0xac,0xea,0xf1,0xbf,0x38,0x84,0xd7,0xe2,0x65,0xb6,0xc7,0xbc,0x02,0x11,0xfd,0xe3,0x4c,0x57,0x38,0xd4,0x36,0x54,0xe8,0xbb,0x63,0x17,0xe9,0xda,0x82,0x50,0xf1,0x8c,0x34,0x4d,0x75,0x2a,0x64,0x49,0xaf,0x98,0xc3,0x1d,0xad,0x31,0xf3,0x90,0x23,0x39,0xf5,0xb5,0xf4,0x37,0x88,0x67,0x12,0x5d,0xfc,0xee,0xe5 +.byte 0x44,0x52,0x2c,0x78,0xb1,0x90,0xc1,0xc2,0x77,0x6e,0x31,0x3e,0xa0,0x36,0x87,0xb0,0xc6,0x6c,0x94,0xc2,0x43,0x4a,0x7b,0xa2,0x73,0xe7,0xa0,0xc3,0x4c,0xaf,0x4f,0xa6,0x92,0x1c,0x9a,0x6d,0xee,0xe8,0x4d,0xe1,0xe0,0xc7,0x67,0xcf,0xcf,0x7d,0x7f,0x0f,0x07,0x0d,0x6c,0x06,0x06,0xc2,0xc9,0x28,0xfc,0x8d,0xcd,0x23,0x01,0x97,0x5b,0x4d +.byte 0x1c,0xdb,0x34,0x51,0x6e,0xe2,0x56,0x24,0xd7,0xbd,0x12,0xc4,0x2f,0xb4,0x3b,0x02,0xaa,0x47,0xda,0x61,0xf6,0xca,0x44,0xa8,0x02,0xbf,0xbc,0x58,0xfb,0xa2,0xff,0xf3,0x54,0x59,0x5f,0xd7,0xa0,0x7c,0x83,0xa6,0xef,0xeb,0x71,0x51,0x74,0xa1,0x27,0x10,0x97,0x13,0x1f,0x42,0x91,0xdd,0xa8,0xf8,0xc7,0x60,0x90,0xca,0x2e,0xc8,0xaf,0x9f +.byte 0x65,0x1f,0x24,0x0a,0x30,0x5f,0xb9,0x4c,0xfb,0xcb,0xa3,0x96,0x5e,0xad,0xab,0xac,0x09,0x91,0xf5,0x96,0x1f,0xe0,0x96,0x14,0xc5,0xa0,0x26,0xa1,0xf1,0x91,0x80,0x38,0x7f,0x38,0xdc,0x98,0x96,0x20,0x46,0x50,0x20,0xd2,0x20,0xce,0x79,0xd5,0x81,0x60,0x97,0xb2,0xb0,0xeb,0x58,0x75,0x3c,0x99,0xf0,0xe0,0xfd,0xfc,0x90,0xc5,0xd1,0x3d +.byte 0x68,0x07,0xfd,0xa1,0x3f,0xeb,0x47,0xd0,0x58,0xe3,0xfa,0xbe,0xbf,0x20,0xdf,0x66,0x08,0x91,0xa4,0x5c,0x52,0x3e,0xdf,0x5c,0xb8,0xee,0xca,0xa6,0x89,0x06,0x97,0xb4,0x8d,0x60,0x35,0xb1,0xff,0x1e,0x39,0xf2,0x67,0xbc,0x71,0xee,0xeb,0x48,0x94,0x19,0x1a,0xee,0xc5,0xe2,0x7e,0x0d,0xf1,0xca,0xe8,0x2c,0xb0,0xaa,0x02,0x58,0x23,0x23 +.byte 0xce,0x37,0x5e,0xcb,0x58,0x40,0x2e,0x1a,0xa6,0x09,0x11,0x95,0xc4,0x6f,0x10,0xb0,0x15,0x22,0x48,0x67,0x74,0x6c,0x2f,0x4f,0x4a,0xb4,0x01,0xe5,0xa3,0x77,0xab,0xad,0xa4,0x04,0x22,0x71,0x58,0x4a,0x71,0xb1,0xe8,0xdf,0x43,0x18,0x0e,0x95,0x7c,0x8c,0x23,0x3a,0xf3,0x9c,0x20,0x60,0x20,0x69,0x51,0x28,0x7e,0x13,0x67,0x5c,0x7d,0x35 +.byte 0xfa,0x1b,0x04,0x8b,0xcf,0x42,0x6e,0x15,0x55,0xcd,0x04,0xdb,0x73,0xdb,0x47,0x5f,0x83,0x6e,0xd1,0x5a,0x15,0xa2,0xbb,0xf7,0xbb,0x84,0x58,0xce,0x75,0xe8,0xd2,0x92,0xd5,0xb7,0x76,0xf2,0x94,0x67,0x27,0x5f,0x32,0x91,0x3a,0xaf,0xd4,0x31,0xf8,0x92,0xce,0x63,0xb7,0x45,0x27,0xb4,0xb8,0x7a,0x1e,0x4e,0xde,0xcb,0xc8,0x5e,0xd3,0xbb +.byte 0x52,0x91,0xd5,0x72,0xad,0x98,0xec,0x07,0xa1,0x56,0xb4,0x8e,0x04,0xfa,0x48,0x3f,0x17,0x07,0xf7,0xef,0x92,0x61,0x69,0xaf,0xdd,0xfc,0x76,0x03,0xe2,0xe9,0xe2,0xbe,0x5c,0xf2,0x8a,0xc5,0x99,0x51,0x7f,0xa4,0xf1,0xac,0x16,0xec,0x16,0xf5,0xb8,0x95,0x88,0x87,0xdb,0x27,0x2e,0x63,0x12,0x31,0x7d,0x6b,0x2b,0xa0,0x9b,0xb5,0xf9,0x82 +.byte 0x42,0x04,0x94,0xee,0x60,0x6e,0x4e,0x54,0x9b,0xfd,0xeb,0x01,0x3a,0xad,0x42,0xeb,0x08,0x3c,0x6a,0xa3,0xf2,0x46,0xfb,0x18,0x59,0x2c,0xa3,0x0b,0x22,0x1d,0x5d,0x47,0xa6,0x8c,0x06,0x9c,0xa1,0xcc,0x20,0x67,0xbd,0xf0,0x5b,0x94,0x9f,0xc6,0x10,0x8c,0xc8,0x15,0x52,0xe3,0x19,0xa1,0x89,0xfd,0x99,0xad,0x4f,0x10,0x51,0x0a,0xe4,0x4b +.byte 0x02,0x7b,0x0d,0x73,0x2d,0xae,0xa4,0x68,0x1d,0xb6,0xcf,0x58,0x67,0xc0,0xd0,0xca,0x11,0x34,0x31,0x9e,0xa3,0xbc,0x12,0x28,0x1e,0x8e,0x5a,0x63,0xf5,0xda,0xf2,0x36,0x94,0x63,0x2c,0x39,0x3d,0xf9,0x80,0x9f,0xbf,0x8d,0xef,0x1f,0x15,0xc8,0xdb,0x62,0x58,0x7d,0xdc,0x0a,0x7f,0x87,0xaf,0x6d,0x2e,0xac,0x92,0x4f,0x51,0xdf,0x5e,0x75 +.byte 0x5e,0x0f,0x7c,0x51,0x49,0x88,0x0f,0x7b,0x49,0xa5,0x7c,0x41,0x4e,0x2a,0x0f,0xd0,0x0f,0x78,0xeb,0x42,0xfc,0x07,0x8a,0x8b,0x4e,0x3e,0xf2,0x42,0xc5,0x21,0x01,0x66,0xe2,0x50,0xf6,0x3d,0x28,0x1e,0xbf,0xdc,0x71,0x7f,0xc5,0x6e,0xc1,0xab,0x1a,0x33,0x49,0xdd,0xa2,0xb9,0x52,0xbe,0x93,0x97,0x97,0x7a,0xf0,0x22,0xa8,0xc5,0x01,0xc6 +.byte 0x76,0x6f,0xb6,0x2c,0x09,0x80,0x62,0x5b,0x84,0x05,0x7f,0x79,0x28,0x04,0x67,0xa2,0x0f,0xfc,0xbb,0x17,0xe2,0x85,0xe3,0xa0,0xf3,0x44,0x47,0x96,0x68,0x80,0xb2,0xbf,0xba,0x63,0x53,0x38,0x6c,0x3b,0xcd,0x3c,0xa4,0x10,0x48,0x80,0xd8,0x49,0x5a,0xf0,0x5c,0x38,0x02,0x02,0x5b,0xf2,0x77,0xa4,0xfd,0x16,0xfd,0x13,0xc8,0x8b,0x9b,0xcd +.byte 0xe1,0x8d,0x70,0xb6,0x3d,0x24,0x65,0xda,0x1a,0x42,0x6f,0x90,0x64,0x9a,0x9b,0xda,0x54,0x44,0xc0,0xe0,0xd7,0xfb,0x73,0x10,0x3c,0xcf,0xa6,0x04,0x99,0xd9,0x45,0xe5,0x74,0xfe,0xdf,0x81,0xac,0xc8,0x30,0xe5,0x66,0x45,0x02,0xca,0xcd,0xd7,0xe6,0x7b,0x0d,0xda,0xe1,0xa0,0xa1,0xa1,0x87,0x34,0x63,0x0b,0xa7,0x82,0x39,0x83,0xba,0x18 +.byte 0x0b,0x16,0x35,0x11,0x53,0x8d,0xbe,0x7d,0xa8,0x7e,0x3f,0xf4,0x71,0xc9,0x37,0x6f,0x1a,0xd9,0x3f,0x8e,0xc4,0xc1,0xd3,0x80,0xdf,0xee,0x0e,0x6b,0x23,0xf7,0xbc,0x42,0x93,0x7a,0x36,0x6f,0x03,0x24,0xb4,0x9c,0x62,0xa0,0xed,0xed,0x0b,0x66,0xa8,0x25,0xe6,0x1a,0xd4,0x13,0xd1,0x16,0x14,0x2b,0x90,0x7d,0x2e,0xa4,0xda,0xb2,0xf9,0x33 +.byte 0x54,0xf9,0x0a,0x04,0x27,0x03,0x14,0xd2,0xd7,0xe2,0xc1,0xaa,0xb6,0xe8,0xe5,0x4c,0xf2,0xdb,0x4c,0xc8,0xb3,0xa4,0xeb,0xbf,0x12,0x5c,0x9d,0x65,0xaa,0x9a,0x66,0x77,0x42,0xb4,0xd5,0x5b,0x1f,0x3b,0xd7,0x91,0x89,0x57,0x2f,0xd0,0x86,0x99,0xb2,0xc8,0xc1,0x31,0xde,0x33,0x43,0x36,0x81,0xdb,0x97,0x7b,0x17,0x3b,0xa5,0x99,0xdb,0x63 +.byte 0x2b,0x48,0x4c,0xa6,0x5c,0x6c,0xd8,0xc9,0x6e,0x72,0x39,0xbe,0x6e,0x55,0x7e,0x9d,0xb7,0x20,0x8d,0x8f,0x81,0x20,0x78,0xae,0xc6,0x1d,0xe0,0x2d,0xb1,0xe7,0x64,0xbb,0xd4,0xc8,0x08,0x61,0x14,0x29,0x08,0xbc,0x1a,0xeb,0xfa,0x64,0x33,0x91,0x7d,0x91,0x41,0x65,0x8e,0x4c,0x0c,0xb2,0x79,0xc3,0x01,0x68,0xfc,0xd6,0xbb,0x50,0xcc,0x07 +.byte 0xa5,0xf6,0x2c,0x5e,0x10,0xd6,0xa3,0x62,0x18,0xec,0xa2,0xf2,0x6b,0xad,0xcd,0x02,0x01,0x75,0xbb,0x36,0x27,0x56,0x0f,0x55,0x03,0xe0,0x57,0xe1,0x72,0xeb,0x66,0x00,0x21,0xff,0x9a,0xbc,0xc1,0x1e,0x2c,0x93,0xe6,0x4d,0x93,0x28,0x10,0x7d,0x67,0x6c,0xf1,0xa4,0xe6,0x3a,0xa6,0x30,0xc8,0x50,0x1d,0x8b,0x6e,0x7b,0x76,0x98,0x14,0x4e +.byte 0xed,0x84,0x67,0x2a,0x5f,0xac,0x0b,0x7b,0x47,0x40,0xb3,0x2d,0x7a,0xc1,0x23,0xdc,0x62,0xf8,0x8e,0x90,0x77,0xd4,0xf9,0x00,0x4b,0x67,0x04,0x72,0xf8,0xc9,0x2c,0x2d,0x0e,0x3c,0x3c,0xf3,0xfc,0xa8,0xe2,0x49,0xa4,0x00,0x82,0x98,0x72,0xa9,0xec,0xea,0xbd,0x3a,0x4e,0xd7,0x32,0xf1,0x11,0xf0,0x0d,0x9e,0xa2,0xe8,0xfe,0xcc,0x67,0xec +.byte 0xfc,0xd6,0xfe,0x83,0x5e,0x7c,0x2b,0xb3,0x42,0xf4,0x2d,0x9a,0xbe,0x20,0xd1,0x81,0x62,0xe9,0x59,0x19,0x28,0xdf,0x97,0x10,0x54,0xf7,0xde,0x60,0x51,0x6a,0xce,0x32,0x03,0x75,0x5c,0x25,0x25,0x82,0x9c,0x07,0xf7,0x2d,0xa8,0x1b,0x9f,0xd3,0x32,0x46,0x25,0x1f,0xb1,0xc5,0xbb,0x28,0x14,0x3e,0xed,0xa8,0x83,0x20,0xf4,0x9c,0x75,0xf4 +.byte 0xe6,0xc4,0x2d,0x05,0x88,0x31,0xfd,0x48,0xca,0x6c,0x7f,0xab,0xb4,0x77,0x93,0x1d,0x87,0xc3,0x4e,0xb8,0xad,0xb4,0x3d,0x37,0x7a,0xd2,0x77,0xff,0xc2,0xcb,0x9c,0xc7,0xbf,0x02,0x02,0x70,0xc9,0x9f,0x77,0x8a,0x7d,0xa7,0x9a,0x10,0xd1,0x0e,0xb7,0xec,0x61,0xee,0x77,0x24,0xe9,0x3d,0xcd,0x12,0xca,0xee,0x50,0xb0,0x27,0x5d,0xe5,0xac +.byte 0xa3,0x92,0xc7,0xd0,0x23,0x54,0xb1,0xe5,0x50,0xc3,0x15,0xd7,0x66,0x32,0x38,0x34,0xb1,0x59,0x1b,0xc3,0x59,0xe8,0xad,0x59,0x90,0x58,0x6e,0x02,0x40,0xb1,0x51,0x65,0x78,0x25,0x26,0x01,0xdd,0xcf,0x04,0xa2,0xfe,0xc3,0xbb,0x80,0x1c,0xb0,0x4e,0x9c,0x49,0x48,0xa3,0xe2,0xcc,0x81,0xc5,0xa8,0xd4,0xd5,0xe4,0xab,0x39,0xe7,0xe8,0x97 +.byte 0xc7,0x51,0xb4,0x5e,0x3f,0xe6,0xa7,0xcc,0x45,0x18,0xa2,0x6a,0xb3,0xa8,0x0b,0x7d,0xce,0x1a,0x97,0x4a,0x67,0xe1,0x3c,0x7c,0x4e,0xad,0x90,0xcf,0x2a,0x8f,0xb8,0xb6,0x96,0xaa,0x9a,0xc3,0x73,0xe6,0x71,0xdb,0x11,0x9b,0xd9,0xd9,0xfe,0xba,0x4a,0xf0,0x77,0xa4,0x15,0xb5,0xca,0xe1,0xb4,0x16,0x06,0x46,0xdf,0xc5,0x49,0x07,0x66,0xb3 +.byte 0xf5,0x30,0xe3,0xfb,0x44,0xac,0x80,0x3a,0x21,0xd9,0x5b,0x22,0x54,0x3a,0xae,0xbe,0xbd,0xf0,0x99,0x8d,0xb5,0x2a,0xf7,0xc9,0xf2,0xd3,0xfb,0x07,0x7c,0xd7,0x75,0x30,0x2a,0xcd,0x80,0xa8,0x2a,0x6a,0xb9,0x47,0xe2,0xa1,0xb0,0x76,0x6a,0x0f,0x9f,0x4a,0x56,0x3e,0xde,0xb3,0x89,0x12,0x25,0x63,0x1a,0x9d,0xea,0x64,0x08,0xc5,0x78,0xa7 +.byte 0x53,0xce,0xf8,0xb2,0xe5,0x97,0x3a,0xeb,0xd1,0x92,0xe1,0x4d,0xe0,0xf5,0x93,0x39,0x73,0xad,0x67,0xc9,0x0e,0x6b,0x16,0x4a,0x00,0xaa,0xb4,0xe6,0xa6,0xa5,0x67,0x95,0x90,0x04,0x5e,0x4d,0xc3,0x7f,0x6b,0xa1,0x50,0xb0,0x3b,0x72,0x0d,0xb3,0xec,0x9a,0x18,0x92,0x65,0x0c,0x2d,0x0f,0x94,0xd6,0x0f,0x95,0xba,0x4b,0xe6,0xc3,0x07,0x22 +.byte 0x0d,0x40,0xd4,0x0d,0x97,0x44,0xba,0x54,0x8c,0xf8,0x97,0x52,0x1f,0xa7,0xb2,0xe8,0x1b,0x0a,0xd5,0xde,0xff,0x1b,0x33,0x60,0x6a,0x28,0x68,0x36,0xb9,0x5a,0x3e,0x43,0x84,0x9a,0xb1,0x3d,0x3d,0xdb,0x1b,0xa2,0xc5,0x0e,0x2d,0xb5,0x5a,0xa5,0x36,0xe7,0xbf,0x7e,0xc3,0x76,0xad,0x1e,0xb5,0x49,0xc2,0xd5,0xa2,0x69,0x97,0x45,0x43,0x3e +.byte 0xeb,0xcd,0xdf,0x4f,0xab,0xb3,0xe8,0x49,0xaa,0x9c,0x9c,0x58,0x1e,0xc8,0x1c,0x79,0xe9,0x16,0x1d,0xfe,0x54,0xac,0x55,0x18,0x10,0x73,0x97,0xdc,0xbe,0x45,0x63,0xfb,0x48,0x41,0x88,0xb4,0x0b,0x3a,0x1d,0x65,0x40,0x1b,0x10,0x66,0xeb,0xbe,0xed,0xc7,0x6c,0xd5,0x0c,0x19,0x85,0x23,0xb1,0x38,0xb3,0x4b,0xcd,0xc7,0xc5,0x06,0x18,0x40 +.byte 0xbd,0xef,0x9f,0x2e,0x3a,0x71,0x33,0x05,0x30,0x71,0xca,0xe9,0x7a,0x2c,0xe7,0x83,0x4e,0x3d,0x4b,0xc8,0xc7,0xcb,0x74,0x9c,0xa2,0xc7,0xbb,0x8c,0x44,0x0d,0xd8,0xb3,0x01,0x7c,0xdf,0x79,0xee,0x47,0xcb,0x91,0x6f,0xc3,0xfd,0x0f,0xfb,0xf8,0x6b,0x9b,0x00,0xaf,0xf6,0x69,0x82,0xa5,0x58,0x54,0x22,0x7f,0x4b,0xee,0xa7,0x03,0xdb,0xb6 +.byte 0x5f,0x12,0xe1,0x04,0x43,0x17,0xec,0xd4,0xdd,0x39,0x28,0xfa,0xa3,0x09,0x5e,0x14,0xaf,0x6b,0xfe,0x0c,0x65,0x01,0x13,0x75,0x3d,0xe7,0x6d,0xd9,0xda,0x1d,0x13,0xc1,0x56,0x40,0x50,0x95,0x65,0x8f,0xad,0x51,0x3f,0x13,0x05,0x2f,0x83,0xcd,0xca,0x8b,0x75,0xa2,0x39,0x61,0xde,0xd7,0x36,0xf9,0x1d,0x43,0x5b,0xc4,0x9a,0xc9,0xfc,0xa8 +.byte 0xf4,0x76,0x90,0x91,0xe8,0x52,0x5b,0x84,0xe7,0xc9,0x8e,0x7d,0x84,0xba,0xb1,0x32,0x12,0xce,0x06,0x9e,0x98,0x83,0x1f,0x7f,0x31,0xd7,0xf0,0x8a,0xa2,0xca,0xae,0xb3,0x50,0x51,0x93,0xfb,0x2f,0x43,0x0a,0xee,0x06,0x85,0xec,0xb8,0xf1,0x73,0xb1,0x65,0x37,0x05,0x8e,0x68,0xf7,0x7a,0xff,0xe7,0x17,0x08,0x5e,0x19,0x75,0x3d,0xf9,0x5e +.byte 0xd5,0x25,0xf6,0x3b,0x99,0xb9,0x96,0x42,0x7a,0x37,0x8f,0x0d,0xde,0x22,0x83,0x89,0xf0,0x77,0x1f,0x22,0x42,0xc7,0xb5,0x70,0xcb,0xfd,0xf0,0xa9,0x87,0x8e,0x1f,0x01,0x9a,0x26,0xa6,0x8c,0x41,0xb9,0x12,0xd6,0xf2,0x5b,0xe5,0xfd,0xdc,0x74,0xbd,0xa1,0xc8,0xf7,0x3b,0x8c,0xe1,0x1d,0x42,0xb4,0x07,0x24,0x18,0x84,0x94,0x8a,0xce,0x00 +.byte 0xbd,0xd7,0xb0,0xfd,0x8f,0x0a,0xd3,0x75,0xa4,0xe8,0xfc,0x09,0xa9,0xa3,0x57,0x68,0x79,0x0e,0xef,0x37,0x46,0xd5,0x3b,0x8c,0x0d,0x67,0xbc,0x2c,0x5d,0x3e,0xf7,0xcc,0x9c,0x9e,0x81,0x62,0xc8,0xec,0x38,0x20,0x07,0x66,0xe4,0x83,0x15,0x13,0x3b,0x47,0x23,0xd9,0x46,0xaf,0x65,0xe1,0x40,0x2d,0x14,0x84,0x72,0xc1,0xbf,0xbe,0x81,0xc4 +.byte 0xcb,0x04,0x16,0x5e,0x2f,0x60,0x3a,0x8e,0x1a,0xd3,0xa2,0x00,0x25,0x6c,0xb7,0xdb,0x0d,0x20,0x99,0xb8,0x45,0x54,0xbf,0xc4,0x52,0x52,0x92,0x7d,0xcd,0xa1,0x9a,0x12,0x5e,0x27,0xe9,0xcf,0x79,0x9d,0xa8,0x6c,0xcd,0x37,0x20,0x08,0x09,0xc6,0x94,0x53,0x00,0x04,0xf5,0x3b,0xea,0x00,0x1b,0xc3,0x02,0xff,0xbc,0x18,0x1f,0xb7,0xf7,0x26 +.byte 0xe8,0x8b,0xc4,0x5f,0xf7,0xbe,0x9b,0xb3,0xba,0xae,0xbd,0x9c,0x3f,0x95,0xf7,0xcd,0x2b,0x40,0xf4,0x1c,0x6f,0xd7,0x52,0xe1,0xa7,0xdc,0x79,0xa4,0x88,0xff,0xfc,0xcf,0xfb,0xbb,0xe6,0xef,0xb6,0x31,0xac,0x24,0xa7,0x40,0xea,0x76,0xa2,0x34,0x6c,0xb1,0xfb,0x96,0x6b,0xfa,0xdd,0x60,0x70,0x73,0xb8,0xfd,0x66,0x3d,0xf9,0x63,0xc9,0x04 +.byte 0x70,0x20,0x35,0xca,0x04,0xb8,0xb3,0x4f,0x24,0x64,0x54,0xc2,0xd9,0x4d,0x8b,0xad,0x07,0xad,0xc5,0xb9,0x84,0xac,0x7c,0x65,0x4b,0x98,0x1d,0x09,0x23,0x95,0x5c,0x85,0x26,0xe5,0x8e,0xec,0xeb,0xc3,0xd5,0x15,0x9c,0x37,0x4e,0xf3,0x3c,0x97,0x92,0x75,0x99,0x48,0x48,0x52,0x4b,0x7b,0x93,0x54,0xd7,0x4f,0x7f,0xe5,0x51,0xdc,0x74,0x85 +.byte 0x9a,0xae,0xbd,0xf8,0xe6,0xe8,0x3f,0x1b,0xee,0x8b,0xf4,0xd8,0x5c,0x6c,0x46,0x6e,0x1d,0xaf,0x67,0x27,0x9a,0x39,0x4e,0x6b,0x99,0xcc,0xc0,0x66,0x54,0xbf,0x60,0xf6,0x24,0x64,0xfd,0x16,0xbf,0x56,0xb2,0x07,0x87,0x46,0xa6,0xef,0x40,0x67,0x78,0x2f,0x78,0x49,0x81,0x25,0xbd,0xa1,0xcf,0x78,0x68,0x25,0x8e,0x93,0x0a,0x4b,0xe1,0x92 +.byte 0x33,0x9c,0x13,0x70,0xd4,0xdf,0x74,0x34,0x8f,0x21,0xb9,0x51,0xd7,0x74,0xa9,0x02,0x6e,0xdd,0xb2,0xb4,0x6e,0x2a,0x95,0xdb,0xe4,0xaf,0x17,0xf5,0x9b,0xa5,0xc1,0x72,0x36,0x35,0x02,0x37,0x1c,0x38,0xaa,0x81,0x76,0xc6,0x1c,0xc3,0x2c,0xc5,0x45,0xaf,0x03,0xea,0xe6,0x14,0x51,0x44,0x84,0x9e,0x32,0xfe,0x4b,0x47,0xe9,0xb4,0x12,0x96 +.byte 0x13,0x6f,0x4c,0xed,0xe4,0xb0,0x79,0x7b,0xe5,0xc0,0x37,0x87,0x78,0x28,0x42,0xf7,0xd4,0xde,0xfc,0xd2,0x23,0x11,0x09,0xa5,0x11,0xc3,0xc4,0xf5,0xe0,0x2b,0x47,0x01,0x63,0xf2,0x85,0x1f,0x45,0x28,0xae,0xd3,0x29,0x04,0x1a,0x4b,0x83,0xab,0xf2,0x35,0x3a,0x40,0x2c,0x8d,0xb3,0xc7,0x47,0x0d,0xd1,0x3c,0xd0,0x1c,0x6b,0x5d,0x9b,0x4e +.byte 0xdf,0x36,0x8d,0xc6,0x54,0x9e,0x61,0x51,0xf1,0xd2,0xa4,0x39,0xad,0x4a,0x14,0xa1,0x0b,0xd3,0xae,0x91,0x1a,0x29,0xeb,0xc5,0x75,0x88,0x13,0x1e,0x96,0xdd,0x6f,0x86,0x92,0xaa,0x37,0x16,0x95,0x86,0xbc,0xb1,0x35,0xbf,0x5f,0x75,0x40,0x46,0xe1,0x6f,0x2f,0x33,0x2d,0x13,0x35,0xef,0xca,0x09,0x04,0xe4,0x42,0xef,0x69,0x66,0xda,0xa6 +.byte 0x01,0xda,0x09,0xfd,0xb1,0x40,0x8d,0xaa,0xdd,0x08,0x0d,0xf5,0xf1,0xd6,0xc6,0x11,0x3b,0xbd,0xd3,0x04,0x70,0x76,0xaf,0xec,0x9b,0xcc,0x6a,0x1d,0xeb,0x95,0x4a,0x01,0x0a,0x03,0x62,0x00,0x32,0xb3,0xe0,0xd1,0x36,0xb6,0xeb,0xde,0x4b,0x5f,0x35,0x79,0x07,0x4a,0x0d,0xa1,0x8c,0xde,0x6b,0xd2,0xca,0x71,0x64,0x73,0xf7,0x9c,0x1d,0x95 +.byte 0x5c,0xdc,0xb9,0x4f,0x00,0x2e,0x86,0x3d,0x81,0x7b,0x05,0xa5,0x9e,0x03,0xa3,0x62,0xcf,0x22,0x78,0x0b,0xfe,0x09,0x3e,0x62,0x93,0x19,0x6e,0x47,0x7d,0x92,0x4a,0x0b,0xae,0xcb,0x37,0x4d,0x5a,0x3a,0x7a,0x68,0xde,0xb2,0x7e,0xd7,0xda,0x5c,0x45,0xd2,0x0f,0x1d,0x03,0xbc,0xed,0xd8,0xe5,0x2e,0x26,0x10,0x82,0x46,0x5a,0xe0,0x13,0x32 +.byte 0xf8,0xb9,0x18,0x8c,0xbd,0xb4,0xb3,0x8c,0x2f,0xb0,0x5d,0x0b,0xf3,0x8f,0x5a,0xda,0x8b,0xda,0x39,0xfe,0xe6,0x66,0x95,0x3f,0xfe,0x49,0x89,0xbf,0x43,0x36,0x77,0xc7,0x6d,0xea,0x92,0x5c,0x71,0xa6,0x29,0x50,0xb0,0x2f,0xed,0x89,0x9f,0x2c,0xd6,0x6b,0xfa,0xbe,0x62,0x9f,0x62,0xc7,0xe3,0x2e,0xd4,0xf2,0x2c,0x9c,0x98,0x37,0x38,0x5e +.byte 0x81,0x6c,0x9e,0xcc,0xff,0x0f,0xfa,0xfa,0xe8,0xdd,0x2e,0x2d,0xb5,0x92,0x44,0x5e,0x2f,0xe1,0xd0,0x6c,0xc3,0xb9,0x11,0x95,0x70,0x4b,0x01,0xa0,0xc1,0x5e,0xe8,0x1d,0x40,0x16,0x9b,0x6e,0x29,0x1b,0x13,0xb9,0xda,0x39,0xbd,0x40,0x42,0xe2,0x06,0x35,0x57,0x2f,0xa8,0xf5,0xa7,0x00,0x60,0x07,0x26,0x21,0x6b,0xe6,0x23,0xa2,0x2a,0x70 +.byte 0xeb,0x85,0xcb,0xa9,0x73,0x31,0x62,0xf7,0xb0,0x90,0xd7,0x26,0xc1,0xd3,0xd7,0xcc,0x15,0x72,0x86,0xa6,0x0f,0x4a,0x24,0x14,0x5d,0xcd,0xbe,0xad,0x7d,0xf0,0x05,0x39,0x0c,0x10,0xbe,0x11,0x9a,0x36,0x9f,0x60,0x41,0xc6,0x7c,0xab,0x54,0x8a,0xac,0xc4,0xea,0xbd,0x43,0xeb,0x19,0x5a,0x8d,0x05,0xd1,0x83,0x58,0x92,0xb8,0xc6,0x75,0x56 +.byte 0x2c,0x58,0xb8,0x2d,0xe1,0x42,0xb4,0x0b,0xc9,0x97,0x79,0xb8,0x62,0xd0,0x15,0xd1,0x5d,0x0d,0x57,0x83,0xe4,0xba,0x73,0xa2,0x27,0xb8,0x56,0x64,0x28,0xaf,0xd2,0x58,0xe3,0xe6,0x12,0x01,0x6e,0x6a,0xfb,0x81,0x57,0xcd,0x32,0xc2,0x42,0x2a,0xe2,0x51,0x4a,0x4c,0xf8,0x69,0x0e,0xc0,0xe6,0x9f,0xf4,0x46,0x4b,0x60,0xcc,0x41,0x03,0xa4 +.byte 0x14,0xf0,0x15,0xb5,0xe5,0x39,0xfd,0x69,0xee,0xce,0x23,0x3a,0x50,0x66,0xdb,0xf4,0xe4,0x31,0x23,0xe9,0x06,0x93,0xdd,0x38,0xbc,0x2d,0xb9,0xf2,0x64,0x39,0x2f,0x1b,0xa9,0x71,0x0c,0x68,0xf7,0xb0,0x5b,0x74,0xe5,0x08,0xc6,0x5d,0xbe,0xb8,0xf7,0x40,0x0e,0xb4,0xe6,0x76,0x0c,0x14,0x8f,0x9d,0x25,0x95,0x6c,0x05,0x78,0x68,0x8a,0xa6 +.byte 0x80,0x24,0x8a,0x0b,0x6a,0xd7,0xfc,0xec,0x36,0xba,0x57,0xdd,0x49,0x82,0x3c,0x5f,0x9d,0xf4,0x57,0xac,0x16,0x99,0xed,0x73,0xa6,0xb0,0x2c,0x23,0xdb,0xf8,0x45,0x22,0xf4,0x82,0x16,0xc4,0x68,0x2f,0xe7,0x8c,0x85,0x6e,0x3c,0x43,0xdd,0x3d,0xea,0x90,0xeb,0xf4,0xef,0xf1,0x36,0x48,0x15,0x29,0x07,0x96,0x51,0xb5,0x78,0xa1,0xa3,0x59 +.byte 0x18,0x4d,0x11,0x5d,0x5e,0x67,0x69,0x28,0x29,0xcb,0xeb,0xbc,0x8f,0x17,0x12,0x57,0xaf,0xda,0xb5,0x86,0xef,0x59,0xdf,0xb1,0x6b,0x6a,0x33,0x66,0x67,0xd1,0x42,0xee,0xec,0x65,0xf2,0xeb,0x97,0x17,0x4e,0x01,0x3f,0x4d,0xb4,0x06,0x8e,0xf9,0xa8,0x79,0xb6,0xf1,0x67,0x8b,0xff,0x0b,0x5f,0x93,0x70,0x76,0x54,0xae,0x7b,0x0d,0x4a,0xbc +.byte 0xf7,0xdc,0x11,0x64,0xb3,0x6a,0xd1,0x69,0x45,0x1b,0x57,0xfc,0xb5,0xfe,0x86,0xb2,0xd6,0xde,0x82,0x23,0x86,0x6b,0x21,0x78,0x8b,0x2e,0x96,0xf8,0x04,0x8b,0xba,0x15,0xae,0x33,0x91,0x27,0x88,0xe3,0xc1,0xe7,0xf8,0xc3,0xa6,0xb6,0x73,0xec,0x84,0x95,0x22,0x45,0x58,0xb1,0x50,0x99,0xde,0x8a,0x37,0x41,0x9f,0xb8,0x27,0xd6,0xd8,0xaa +.byte 0x0f,0x0e,0xac,0xe4,0xd0,0x38,0xcf,0x2f,0x03,0x6f,0x3d,0x8a,0xd7,0x51,0xd6,0xf3,0x17,0x76,0xb5,0x0f,0xc5,0xf8,0xa7,0x0a,0x91,0xaa,0x8d,0xbc,0x15,0xd6,0x46,0xb9,0xdc,0x18,0x47,0x9c,0xd9,0x13,0xa5,0xb1,0xb5,0x45,0x2f,0x03,0x32,0x5c,0x8b,0xac,0x42,0x5b,0xd9,0x1a,0x41,0x1e,0x27,0xf9,0x92,0x72,0xc1,0xc7,0xc1,0x50,0x25,0x22 +.byte 0x7a,0x00,0x41,0x1f,0x2d,0x28,0xaf,0x41,0x96,0x8e,0x97,0x3b,0x36,0x80,0x16,0xe6,0x51,0x8f,0x07,0x13,0xd9,0x81,0x79,0x94,0x92,0xaa,0xb9,0xb6,0x39,0xf2,0x4d,0x24,0x6b,0x77,0x25,0x7e,0x47,0x6c,0xc7,0x62,0x3d,0x96,0x21,0xac,0x1a,0xf0,0x5f,0x5d,0x5a,0x7e,0x17,0xdd,0x47,0xd5,0x19,0x0a,0x85,0x3e,0xd5,0x6b,0x52,0x12,0xe2,0xbc +.byte 0x43,0x79,0x28,0x1d,0x72,0xcc,0xa6,0x6c,0xea,0x9b,0xe9,0x04,0x34,0x2c,0x41,0x3a,0x64,0xe8,0xcb,0x12,0xfa,0xd5,0x45,0xad,0xe8,0x3e,0xa2,0x5c,0xb8,0x83,0x52,0xdb,0x0c,0x98,0x24,0x76,0xd2,0x00,0x62,0xff,0xac,0xd7,0x11,0xee,0xcf,0xfb,0xdd,0x65,0xd2,0x75,0xb0,0x25,0x4e,0x76,0x3f,0xa2,0x1a,0xae,0xee,0xc1,0x59,0x1b,0x0c,0x42 +.byte 0x70,0x42,0x06,0x00,0x64,0x31,0xe0,0xce,0x3a,0x91,0x5e,0x9d,0x56,0x83,0xab,0xa7,0x73,0xc2,0x15,0x29,0xba,0xf9,0x1d,0xc8,0x4b,0xc6,0x3a,0x9e,0xab,0xd7,0xfd,0x17,0x8d,0x80,0xf0,0xa1,0x8a,0x5a,0x7a,0x80,0xd8,0x1f,0xa9,0x5b,0xec,0x68,0x99,0x3a,0x66,0xcc,0x5a,0xdf,0x5f,0xe9,0xd5,0x6a,0xf2,0x2c,0x7e,0xf8,0xa7,0xdf,0x0c,0x59 +.byte 0xbd,0x85,0xf0,0xc9,0x91,0x44,0x9c,0x86,0x24,0x60,0xfb,0xe9,0xff,0x3c,0xa7,0xa7,0x6d,0x4b,0x17,0xb3,0x24,0x99,0x14,0xbc,0x64,0xd0,0x41,0xaa,0xcd,0x26,0xd3,0xa3,0x51,0xeb,0x25,0x1d,0xb2,0x7d,0xf1,0xf3,0xf3,0xf0,0x3a,0xe0,0xb5,0xa9,0x24,0xc3,0x78,0x4a,0xef,0x9b,0x34,0x93,0xf8,0x0c,0x71,0x10,0x5b,0xf0,0xe7,0x08,0x4d,0x5f +.byte 0x74,0xbf,0x18,0x8b,0x48,0x8d,0xd7,0x23,0x81,0xed,0xa2,0x29,0xa9,0xdb,0x91,0xf6,0x61,0x7c,0xca,0x1e,0xe0,0xa7,0x21,0x9d,0xfc,0x04,0x3a,0x87,0xbb,0xf9,0xa4,0x3b,0xbb,0xc4,0x89,0xa1,0x7f,0xdc,0x83,0xfa,0x5e,0x0f,0xcf,0xdf,0xf6,0x41,0xd3,0xa3,0x76,0x76,0x44,0x3e,0x01,0xee,0xce,0xf6,0xc3,0xb9,0x49,0x43,0x6e,0xee,0x09,0x4c +.byte 0x87,0xe6,0xa3,0xf5,0xa0,0x8d,0x99,0xb3,0x3b,0xd6,0xeb,0x27,0xf9,0x34,0x68,0xc8,0x04,0x80,0xb2,0x4d,0xb6,0xde,0x98,0x81,0xe0,0xec,0xc9,0x06,0xde,0x86,0xee,0xf0,0x87,0xb8,0x67,0x0e,0xce,0xf8,0xc5,0xb1,0xd2,0xe1,0xe3,0x53,0x1d,0xbe,0x6c,0xdd,0x5e,0x83,0x02,0xf5,0xc8,0xda,0xcf,0x3c,0xcb,0x88,0x2c,0xca,0x65,0x65,0x9e,0x71 +.byte 0x4e,0xf2,0x98,0x96,0xb2,0x54,0xb4,0x96,0xdc,0x84,0xb5,0x39,0x74,0x9b,0x61,0xcf,0x52,0xef,0xb3,0x0c,0x62,0xc9,0x92,0xe1,0xe5,0x6f,0x2f,0x0c,0x61,0x0d,0x6f,0xfd,0xd8,0x84,0x25,0xba,0x20,0x59,0x00,0xf5,0xa9,0xf1,0x77,0x6e,0x9a,0x3d,0x93,0x69,0xde,0xaf,0x9a,0xe6,0xe3,0xfd,0xb9,0xd3,0x04,0x82,0x18,0xa1,0x5b,0x9b,0xe0,0x29 +.byte 0x4c,0x64,0xf5,0x95,0x57,0x25,0xd3,0x04,0x8b,0x4a,0xe9,0x57,0x6f,0xd1,0x8c,0x40,0x73,0x49,0x32,0x93,0x3f,0x26,0xb4,0x6b,0xd3,0xd4,0x90,0xb7,0xe1,0xaf,0xa0,0x9a,0xc0,0x86,0xb7,0x5e,0xec,0x29,0xaa,0x03,0x4e,0x56,0xb5,0xcd,0x46,0x7d,0xe0,0x26,0x3d,0x5f,0xd3,0x55,0x86,0x68,0x4a,0xc5,0x42,0x5d,0x60,0x3a,0x39,0x6f,0x45,0xb9 +.byte 0x6a,0xea,0xf4,0x05,0xc8,0x24,0xf8,0xcd,0xe5,0xeb,0xca,0x3a,0xe7,0xb4,0x59,0x83,0x5a,0xa5,0x1d,0xe4,0x6a,0xaa,0x35,0x00,0x42,0x32,0xa5,0x6c,0x3e,0xc1,0xc2,0xc4,0x9d,0x2e,0x43,0x57,0x79,0x52,0xf6,0x1e,0x02,0xb8,0x9b,0xcd,0xf0,0x3d,0x57,0xa3,0x6f,0xf7,0x12,0x54,0x6c,0x63,0x0d,0xb2,0xba,0xff,0xa1,0xf6,0xf5,0xdf,0xa5,0xed +.byte 0xda,0xdf,0x56,0x72,0x1e,0xc5,0x3f,0xad,0xd0,0xf9,0x38,0x94,0x51,0xe3,0xa4,0xb4,0xbf,0xd5,0x24,0x2a,0x90,0xfe,0xd4,0x34,0x6c,0xa8,0xc8,0x1c,0x9a,0xaf,0xac,0xff,0x5b,0x67,0x44,0x4c,0x4d,0xa7,0x59,0x2c,0x9f,0x67,0x07,0x25,0xe1,0x7f,0x4e,0x4a,0xaa,0x8f,0x5d,0xd1,0x26,0x0d,0x73,0x9b,0x69,0x5d,0xdf,0xb2,0xa5,0x89,0xbb,0x82 +.byte 0x0b,0x09,0xf3,0x11,0x76,0x5d,0x2d,0xad,0xc3,0xc1,0x15,0xbc,0xaf,0xa2,0xe6,0xd5,0xb0,0x6d,0x80,0xa6,0xda,0xfa,0x3b,0x9c,0xaf,0xff,0x98,0x40,0x83,0x3a,0xe1,0xb8,0x98,0x0e,0x97,0x00,0x89,0xfb,0x37,0xcb,0x81,0x36,0x34,0x33,0xbb,0x5c,0xd0,0x51,0x37,0xd6,0xb5,0x6c,0x3a,0x61,0x0a,0x27,0x23,0x96,0xa9,0x79,0x8d,0xf0,0xbe,0x31 +.byte 0xba,0xdc,0x89,0x4e,0x88,0x98,0xe4,0x10,0x15,0x8a,0xe1,0xae,0xe8,0x6d,0xa4,0x61,0x56,0x14,0x84,0x59,0x64,0xc2,0xaa,0xd8,0xfd,0x19,0xfc,0x17,0xf1,0xfc,0x6d,0x17,0xcb,0xea,0x7a,0x47,0x00,0x75,0x17,0xf3,0x62,0xfe,0x3a,0xbc,0x28,0x1a,0x0e,0x88,0x48,0x63,0x4a,0xcb,0x20,0x46,0xa4,0x75,0xf8,0xf1,0x7a,0xd6,0x92,0x7f,0x92,0xfa +.byte 0x91,0x95,0x2f,0xbc,0x5b,0x42,0xf1,0x55,0xaf,0x91,0xa2,0x3b,0x29,0x5c,0xc8,0x5e,0x97,0x91,0xa2,0x2e,0xd2,0xa8,0x1c,0xf6,0x16,0xc5,0x15,0xf2,0x42,0xb3,0x41,0x59,0x52,0x8d,0x94,0x52,0xc4,0xc6,0x2c,0xdd,0x6f,0x01,0xea,0x62,0x42,0x83,0x7e,0x2e,0xf8,0xb8,0xc1,0xf3,0x71,0xd1,0x11,0x14,0x7a,0x3d,0xcd,0xec,0xe0,0x79,0x8b,0xbd +.byte 0x28,0x12,0x60,0xf0,0x66,0xf1,0x1c,0x1c,0x19,0x07,0x8c,0x26,0xff,0xcc,0x72,0x9a,0xbd,0x12,0xe6,0x2b,0x2b,0xb1,0x32,0x04,0x98,0x92,0xd9,0x24,0x97,0x59,0x46,0xc6,0x11,0xe1,0x31,0x14,0x46,0x27,0x96,0xb1,0x06,0x81,0xd5,0xe8,0xff,0x45,0x3d,0x3c,0x04,0x9a,0xd8,0x0b,0x1f,0x41,0x03,0xba,0x1b,0x3e,0x4e,0xd5,0x7d,0x48,0x00,0x68 +.byte 0xb3,0xe8,0xe0,0xc8,0x3c,0xcf,0xdc,0xbe,0x29,0x90,0x64,0x51,0x18,0xdc,0xcd,0x87,0xcb,0xa8,0x3d,0xf8,0xb4,0x73,0x11,0xdc,0x7a,0xcb,0xa4,0x81,0x9e,0x3a,0x72,0xde,0x18,0x36,0x86,0x15,0x91,0xbc,0xeb,0x7f,0xe2,0xfb,0x6b,0xf1,0x5a,0x3d,0x05,0x50,0xeb,0xcf,0xd2,0xcc,0xf2,0x62,0xb1,0x32,0x46,0x14,0x95,0x4e,0xdf,0x73,0x64,0x61 +.byte 0x5f,0x3d,0xbf,0x52,0x3e,0xa7,0x55,0x01,0x9a,0xd8,0x01,0xef,0xf7,0x60,0x6f,0x83,0x43,0x6b,0x4c,0xa2,0xc8,0x04,0x34,0x70,0x70,0xa1,0x99,0xc9,0xa7,0x54,0x1e,0x87,0x99,0xb3,0xec,0xfe,0xe9,0x2d,0x39,0xef,0x6f,0x4d,0x8c,0xf2,0x4b,0xd2,0x12,0x5d,0xb6,0xa7,0x0b,0x04,0x3b,0x69,0xdd,0x9a,0x18,0x2d,0xd9,0x22,0x00,0x38,0x15,0x9a +.byte 0x6e,0x6c,0x0c,0x84,0x32,0x32,0xb2,0xf9,0x61,0xef,0x74,0x35,0xec,0xcc,0xd7,0xbc,0x9d,0xe9,0xcd,0xe3,0xa0,0xa5,0x15,0x0a,0xfe,0x1f,0x37,0x35,0x2b,0x7c,0x42,0x50,0x81,0x67,0x52,0xb7,0xa7,0x9e,0x8f,0xda,0x64,0xc0,0xc0,0xc3,0x93,0xc7,0x9d,0x41,0xb8,0x4b,0x69,0x80,0x13,0x88,0x8a,0x07,0xf9,0x47,0xad,0xc9,0x4f,0x3d,0xc7,0xba +.byte 0xd2,0xf2,0x7a,0xa0,0x38,0xbe,0xe1,0xfa,0x83,0xda,0x79,0x29,0x7f,0x4c,0xfa,0x0e,0x9b,0x59,0x1e,0x89,0x76,0x05,0x60,0x84,0x13,0x63,0x11,0x14,0x20,0xa9,0x2b,0xd0,0xc3,0x58,0xcc,0x73,0x3e,0x2c,0xa8,0xa7,0xa5,0xd0,0x2f,0x03,0xfc,0xa9,0x5d,0xdd,0xcd,0x40,0x91,0x90,0x1f,0xda,0x0a,0x73,0x58,0xd8,0x84,0x05,0x45,0x01,0x84,0x52 +.byte 0x8b,0x9b,0x17,0x98,0xa8,0xc4,0xc3,0xb5,0x94,0xd5,0x32,0x86,0xe9,0x10,0xe5,0xa5,0x99,0x8d,0x57,0x3e,0x32,0x25,0xfa,0xb4,0x5c,0x3a,0x5f,0xa6,0x2d,0x7d,0x4e,0xd3,0x7b,0xee,0x41,0x23,0x5e,0xc2,0xc9,0x91,0xf4,0x21,0xe0,0x4f,0x0d,0x87,0x30,0x53,0xf1,0x0e,0x63,0xe8,0x5b,0x3d,0xee,0x4a,0xc8,0x78,0x38,0xa2,0xa4,0xe8,0x72,0x41 +.byte 0xf1,0x37,0x30,0xe3,0x3d,0x93,0xc6,0x4b,0x10,0x0d,0xf6,0x20,0x15,0x0a,0x77,0x41,0xd5,0x7d,0xcb,0xf9,0xda,0x3b,0x17,0xa6,0xf1,0xe4,0x56,0xd4,0x65,0x7b,0x33,0xe4,0xef,0x34,0xfb,0x8c,0x9f,0x87,0x86,0xfc,0xce,0x90,0x60,0x77,0x57,0xc0,0xe4,0x37,0x2c,0xdf,0x41,0x95,0x85,0x89,0x4e,0x77,0x3f,0xa0,0xc7,0x55,0x4c,0x3f,0xa8,0x10 +.byte 0xd2,0x87,0x7e,0xd2,0x97,0xa1,0x6c,0xe7,0xec,0xaa,0xf6,0x93,0x13,0x2e,0x10,0xed,0x5b,0x7a,0xed,0x53,0xb4,0x55,0xaa,0xb4,0x67,0x78,0x07,0x5f,0xc2,0xd2,0xf1,0x7b,0x98,0xf0,0x82,0xf6,0x7c,0xb2,0xd4,0xa8,0xc2,0x53,0x39,0x21,0x7f,0xa0,0x76,0x37,0x1a,0x69,0xb3,0x49,0xd4,0xc3,0xd1,0xcb,0x31,0x76,0xec,0xaf,0x75,0x66,0x31,0x65 +.byte 0xeb,0x44,0x63,0xa0,0x13,0xf5,0x9e,0x67,0x40,0x41,0x76,0xce,0xd3,0xd6,0x91,0xb1,0x3a,0x07,0xff,0x38,0x1e,0xaf,0x55,0x57,0x55,0xd1,0x94,0x63,0xd3,0x81,0x16,0x59,0x68,0x01,0xe8,0x6d,0x7d,0x7a,0xa1,0x39,0xb9,0xa2,0xba,0x79,0x9d,0x69,0x00,0x13,0x59,0x2f,0x3d,0xef,0x10,0xe7,0x3c,0x02,0x7d,0xa3,0xa8,0xee,0x31,0x1a,0xad,0xa6 +.byte 0xdb,0x1b,0xe3,0x4a,0xdd,0x60,0xfb,0x4e,0xa6,0x49,0xbb,0xea,0x34,0x5d,0x21,0xac,0x83,0xa4,0xb5,0x23,0x8e,0x69,0xb3,0x25,0x14,0x8d,0xc2,0x89,0x8d,0xcf,0x38,0x46,0x18,0xb6,0x0c,0xce,0x45,0x22,0xeb,0xb5,0xb2,0xed,0xe5,0x0f,0x35,0x8f,0xdd,0xa1,0x15,0xd6,0x50,0x5b,0xe1,0x04,0xa7,0x32,0xc0,0xc9,0x03,0x56,0xc2,0x33,0xe8,0x16 +.byte 0x1c,0xd4,0x7a,0xfd,0x6b,0x4d,0x04,0xc0,0x9e,0xf8,0x32,0x9f,0x52,0x24,0xac,0xc5,0xb0,0xa1,0x63,0x77,0xc9,0x14,0xaf,0x46,0x60,0x67,0x52,0x81,0xbb,0x3f,0xf5,0x7f,0xad,0xef,0x7c,0x3a,0x71,0xc1,0x1e,0xea,0x4a,0xe0,0xd7,0xdd,0x31,0xf2,0x4b,0xdf,0x53,0x8a,0xc9,0x59,0x7a,0xb2,0x6f,0x7e,0xc0,0x00,0xa4,0x0d,0x09,0x9c,0xf7,0x22 +.byte 0x22,0xa9,0x37,0xde,0x3b,0xe1,0x74,0x85,0xcf,0xc5,0xb7,0x7b,0x0a,0xfd,0x6b,0xfa,0x98,0x49,0xa9,0x7f,0x52,0x23,0x0e,0xc0,0x4a,0xb3,0x81,0xa6,0x96,0x46,0x24,0xe7,0x01,0xd1,0xf2,0xac,0x31,0xb2,0x5e,0x61,0xe3,0xab,0xf8,0x1b,0x28,0xca,0xa2,0x78,0x3c,0xdf,0x8a,0xc1,0x17,0x46,0x9d,0xbd,0x69,0x31,0x41,0x8b,0xc1,0xc8,0xaa,0x68 +.byte 0xd5,0x35,0x65,0x49,0xfe,0xc6,0xa4,0x99,0xcc,0x62,0x4b,0x81,0x1c,0x21,0xa4,0xd8,0xe3,0xb3,0xe9,0x7c,0xf8,0x33,0x2f,0x21,0xa5,0x88,0xf2,0x8e,0x7d,0xee,0x00,0x00,0x62,0xcf,0x07,0x37,0x00,0x68,0x6c,0xb5,0x2d,0xc6,0x1b,0xcc,0x86,0x71,0xf0,0x4f,0x68,0xaf,0x0c,0x9a,0x25,0x69,0x71,0x2d,0xb5,0x87,0x90,0x02,0xd3,0xfc,0xbb,0x63 +.byte 0xa9,0xf1,0x13,0x4f,0xda,0x71,0x69,0x5c,0x0b,0xfd,0x3f,0x6c,0x2f,0x0b,0x4f,0x07,0x72,0x2d,0x2f,0x77,0xcb,0xa4,0xe4,0xbd,0x30,0xc7,0xe4,0xd9,0xf9,0x5d,0x2f,0x65,0xe4,0x41,0x5c,0xbc,0x03,0xa2,0x01,0xf9,0xfa,0x06,0x14,0x52,0x08,0x44,0x67,0x75,0x4e,0xbd,0x66,0x4a,0x26,0x3a,0x49,0xc4,0xba,0x02,0xb3,0x8e,0xa2,0x42,0xe7,0x92 +.byte 0x03,0x6d,0x61,0x10,0x73,0xd0,0x6f,0xe1,0x6e,0x67,0xff,0xb0,0x29,0x62,0x70,0x3c,0xeb,0x80,0xed,0x11,0x06,0xd6,0x18,0x60,0xe1,0x3d,0x21,0xa9,0xe9,0xd2,0x92,0x00,0x9e,0x13,0xf2,0x5d,0x38,0x71,0xdf,0xf3,0x5f,0x8a,0x90,0x45,0xf0,0x47,0x1f,0x0b,0x2d,0x12,0xf7,0x10,0x07,0x6a,0x52,0xe8,0xe2,0x26,0x9b,0x4b,0x7a,0x5f,0x97,0xb6 +.byte 0xf1,0x6d,0x47,0x3a,0x1e,0xc8,0x1d,0x78,0x5b,0x0a,0xb8,0x03,0xb1,0xe1,0xe7,0xc8,0xf0,0xe7,0x00,0xac,0xfc,0xd7,0x4a,0xde,0xaa,0xcd,0x0f,0xaf,0xf7,0x56,0x8e,0xed,0xfb,0xbe,0x7e,0xfe,0x62,0x75,0x7a,0x07,0x96,0xff,0xc3,0x21,0x35,0x71,0xb9,0x73,0x41,0xc2,0xb0,0xa8,0x6a,0x65,0x48,0xc4,0x50,0x31,0xe2,0xba,0xf4,0xe9,0x6c,0x03 +.byte 0x26,0x2c,0x77,0xfe,0x1a,0xd5,0x96,0xf6,0x6d,0xe4,0x14,0xfc,0xe2,0x1d,0x20,0x0c,0x14,0xa2,0x39,0x63,0xe5,0x16,0xef,0x6a,0xeb,0xe1,0x69,0xb8,0x67,0xa0,0x91,0xc1,0x8f,0xed,0xff,0xdf,0x26,0x1f,0xc3,0xb7,0x5d,0xe9,0xd2,0x72,0xe2,0x54,0x27,0x46,0x4f,0x33,0x25,0x59,0xaf,0xfa,0x87,0x4b,0x5a,0xda,0x7d,0x15,0x71,0x5d,0xb4,0x8d +.byte 0x95,0xb6,0x09,0x5b,0x8b,0xeb,0xe6,0xba,0xc8,0x2f,0x8f,0x9e,0xa8,0xab,0x6a,0xa6,0x26,0xb6,0xf5,0x80,0xd0,0x7d,0xe7,0x4c,0x18,0x5a,0x72,0x8f,0x3e,0x90,0xe5,0xa1,0x16,0x33,0x66,0xc3,0x7b,0xf6,0xb6,0xdd,0x15,0x94,0x6d,0xca,0x8b,0xd7,0xa5,0x05,0xfb,0x5f,0x4e,0x94,0x6a,0xcc,0x54,0xed,0xeb,0xc0,0xb1,0xe1,0xc9,0x7f,0xc4,0x90 +.byte 0x2f,0x50,0x34,0x81,0x3c,0x83,0x47,0x3c,0x5a,0xb2,0x33,0x63,0xb6,0xa7,0xfb,0x59,0x70,0x87,0xea,0x7f,0x30,0x22,0xb4,0x54,0x48,0xfb,0x40,0xd2,0x7b,0xc9,0x49,0x80,0x18,0x27,0xc2,0x75,0x09,0x06,0x0a,0x83,0x1e,0x7a,0xf1,0x97,0xa1,0xc2,0x34,0x3f,0x6d,0xd6,0x2d,0xfe,0x5d,0x8b,0xfd,0x64,0x5d,0x6f,0x7f,0xbf,0x4e,0x01,0xb7,0x46 +.byte 0xfb,0xf7,0xd5,0x6f,0x5f,0x74,0xc8,0xca,0x9a,0x2e,0x74,0x08,0xe9,0x3d,0x8b,0xfd,0x97,0x38,0x72,0x67,0xbb,0x8a,0x34,0xee,0xf5,0x3a,0x2b,0x5e,0x64,0x64,0x06,0x7c,0x60,0x0f,0x7a,0x88,0x45,0x1b,0x69,0x90,0xb8,0xb0,0x4d,0x71,0x80,0x77,0xa8,0xaa,0x9f,0xd3,0xc6,0xfb,0xb8,0x12,0x1e,0x0c,0xf4,0x94,0x67,0x44,0xdc,0xb1,0x95,0x0e +.byte 0x51,0xd1,0x06,0x69,0x92,0xbf,0xe6,0x67,0xe3,0xcd,0x0b,0x87,0x03,0x12,0x2e,0xa7,0x23,0x72,0x13,0xe9,0x89,0xcf,0x15,0x43,0xc0,0xa7,0x68,0xbd,0xce,0xec,0x28,0xb6,0x85,0x36,0xbe,0x52,0x5d,0x57,0xfa,0x7d,0x72,0xd1,0x4b,0x88,0xc9,0x64,0xbc,0x7a,0x18,0xe5,0x0e,0xab,0x19,0x81,0xee,0x11,0xbe,0xe0,0x68,0x44,0x81,0x49,0x3f,0xd8 +.byte 0x12,0xd1,0x8b,0xc1,0xe0,0x51,0xf7,0xc3,0x64,0xa7,0xc5,0x61,0x9b,0x32,0x6d,0xf0,0x6c,0xa6,0xaf,0xf9,0x4a,0xdf,0x94,0xaf,0xc8,0xf2,0x86,0xb1,0x4e,0x2e,0xa9,0xb4,0x35,0x82,0x15,0x8a,0x58,0xf3,0x03,0x2f,0x78,0x07,0x8f,0xb9,0x16,0x7c,0x42,0xfa,0x36,0xaa,0xa5,0x66,0x62,0x44,0xca,0xa6,0x55,0x95,0x27,0xdb,0x48,0xea,0x0a,0x1d +.byte 0x5a,0xae,0x5c,0xad,0x99,0xfe,0x00,0xf1,0xb9,0x94,0xda,0x09,0x48,0x52,0x9d,0xfc,0xb4,0xb2,0x80,0x19,0x16,0xf8,0xcd,0x68,0x10,0xec,0x1c,0x16,0x3f,0xbb,0x42,0xb4,0x10,0xe3,0xdb,0xaa,0xe4,0x3f,0x2e,0x8e,0xb5,0xce,0xba,0x8f,0xf2,0xb5,0x76,0x98,0x15,0xa7,0x77,0x4b,0x1c,0x30,0xb7,0x6f,0xc9,0xa9,0xa4,0x64,0x59,0xab,0x3a,0x43 +.byte 0x74,0x33,0xab,0xe1,0x3e,0x5e,0x79,0x1c,0xa5,0xb4,0x87,0xe1,0xcb,0xea,0x0e,0x02,0x4b,0x01,0x84,0xbc,0xdc,0x75,0xf4,0x2c,0x2b,0x8d,0xc8,0x5f,0xb5,0xba,0x6b,0xb2,0x4a,0x7c,0xe7,0xaa,0x61,0xa5,0x0c,0xf8,0x02,0x73,0xec,0x11,0x13,0x6b,0x31,0x07,0xaa,0x79,0x78,0x86,0x01,0x77,0x5e,0xa3,0x09,0xd1,0xec,0xaf,0x7d,0xb7,0x65,0xa9 +.byte 0xd8,0x99,0xd2,0xd7,0x6d,0x32,0x97,0x0f,0x0e,0x51,0x0d,0x69,0x81,0x7a,0x94,0x48,0x31,0xe1,0xff,0x26,0x4d,0x30,0x49,0x93,0xfb,0x6e,0xdb,0xea,0xaf,0xcb,0xb4,0xa9,0xc9,0x9f,0xeb,0xca,0x52,0x36,0x26,0xac,0x47,0xda,0x02,0x3d,0xd0,0x93,0x8b,0x61,0x78,0x26,0x54,0x32,0xe8,0x14,0xac,0xf3,0xd2,0x46,0x04,0x12,0x89,0x9f,0xf6,0x11 +.byte 0xf5,0x64,0x83,0x66,0x00,0x50,0x55,0x05,0xb5,0xf6,0x58,0x9f,0xbf,0x4b,0x95,0xf1,0x7f,0x0b,0xb4,0xf7,0x63,0xea,0x6f,0xf7,0xb0,0x20,0x53,0xfe,0x95,0xbc,0xc4,0xe2,0xff,0x75,0xbd,0xab,0x73,0x68,0x44,0x18,0xf7,0x6b,0x04,0x46,0xde,0x6c,0x65,0xb2,0x22,0x4e,0x25,0x8e,0xba,0x7c,0x3a,0x6f,0x80,0x99,0xb4,0xe7,0xf9,0x97,0x68,0x40 +.byte 0xa9,0x96,0xfc,0x6b,0xcf,0x08,0x75,0xe4,0xda,0x6f,0xaf,0x71,0x4f,0x31,0x62,0x31,0x18,0xbf,0xb9,0xa0,0xcc,0x9e,0xa7,0xa2,0x27,0x2a,0xb8,0x6b,0xc0,0x93,0xf5,0x1f,0x41,0x25,0xa7,0x4d,0x9f,0xb4,0x12,0x5c,0x27,0x38,0x5d,0x80,0x88,0xa3,0xb8,0xb2,0xc3,0xd2,0xfb,0x1d,0xba,0x7b,0xac,0x51,0x0b,0x71,0x58,0x3f,0xe5,0xfa,0x36,0xb8 +.byte 0xc7,0x90,0x46,0xd0,0x5a,0x94,0xf0,0x7d,0x6e,0x6c,0x4c,0xb1,0xfa,0xdb,0x97,0x1e,0x19,0xf2,0x1f,0x4e,0x05,0x25,0x0e,0xbd,0x47,0x94,0x2a,0xd3,0x1a,0xbe,0x4a,0x04,0xaa,0x57,0x02,0xc9,0x42,0xc1,0x74,0xcd,0xe1,0x78,0x8b,0xff,0xc1,0xc6,0x17,0x4e,0x71,0xc4,0x2c,0x00,0x23,0x56,0x57,0x1f,0x47,0xd8,0x93,0x80,0xc1,0xc5,0x7b,0xd9 +.byte 0x25,0x30,0xac,0x72,0x37,0x00,0xd2,0xbc,0xc7,0x33,0x73,0xf9,0x14,0x86,0x7c,0xb0,0x28,0x14,0x5d,0xbf,0xbd,0x98,0x1c,0x00,0x05,0x19,0x2b,0x0a,0x55,0xad,0xb4,0x06,0x28,0x58,0x03,0xa1,0xe6,0x27,0xa3,0x32,0x5f,0x41,0xd5,0x6a,0x0b,0xbc,0x0f,0xaa,0xf5,0xc1,0xa7,0x09,0x2f,0x86,0xda,0x56,0xb0,0x04,0x49,0xd4,0x20,0xc6,0xa2,0x6c +.byte 0x27,0x56,0x4e,0xcd,0x22,0x46,0xac,0x0f,0xd3,0x99,0x69,0x83,0xc4,0xae,0x9f,0x88,0xed,0x9c,0xba,0xfb,0xf3,0x66,0xc7,0x3d,0x65,0x55,0xd0,0xe3,0x04,0x03,0x6a,0x02,0x5c,0xbf,0x9f,0x23,0x34,0x79,0xe1,0xbe,0x7d,0xad,0xb4,0xc7,0x9e,0x4d,0x80,0x73,0x6d,0xe5,0x37,0x03,0xac,0xa3,0xf4,0x93,0xad,0x1e,0xf3,0xcd,0xb8,0xe2,0xeb,0x30 +.byte 0xc7,0x50,0xfe,0x0a,0x63,0x5e,0x0f,0xc9,0xd0,0x06,0x58,0xc1,0x6e,0x65,0x54,0x54,0x5d,0xaf,0xf1,0xe8,0x3e,0x95,0xe3,0x70,0x40,0x8e,0xb8,0x4d,0x76,0xda,0xa8,0xe8,0x9e,0x88,0xd8,0xaf,0x67,0x83,0x3b,0x77,0x65,0x58,0x00,0xbb,0xf7,0xe9,0x52,0xf0,0xba,0x0d,0x0a,0x59,0x28,0xe4,0xa7,0xfb,0x06,0xe5,0x34,0xbe,0xcf,0x10,0x7c,0x73 +.byte 0xa8,0xf3,0xa2,0x93,0x96,0x9e,0x4f,0x9b,0x3c,0xd1,0x9f,0x64,0x5b,0x8c,0xc1,0x89,0x66,0x67,0x13,0x52,0xb2,0xaa,0x6b,0x8e,0xea,0x97,0x27,0x20,0x2e,0x64,0xec,0xf0,0x72,0xc9,0x54,0x8a,0xed,0x78,0x3a,0xd7,0x4f,0xc2,0xba,0xc3,0xb8,0x64,0x7f,0xe4,0x5f,0x3d,0xf7,0xe5,0xd9,0xf1,0x8d,0xb1,0xd2,0xf6,0xcc,0x34,0xd8,0x7d,0x16,0xca +.byte 0x47,0xaf,0x85,0xe5,0x4a,0x57,0xb9,0x5a,0x9e,0xff,0xb8,0x83,0xec,0x7c,0xb8,0x07,0xf5,0xd3,0x31,0x31,0x2b,0xf0,0x40,0x46,0xc3,0x63,0x27,0xe4,0xb0,0x3b,0x84,0x0d,0x50,0x05,0x80,0x0c,0xfa,0x8b,0x0e,0x33,0x6b,0x10,0xd4,0xf5,0x4f,0x8b,0x2d,0x9e,0xc5,0x01,0x92,0x52,0x62,0x1a,0x89,0x1e,0xca,0x48,0xc3,0xd6,0xfa,0xd2,0x94,0x7c +.byte 0x77,0x6e,0xa7,0xeb,0xd7,0x4f,0xe8,0xc8,0xc2,0x71,0xb2,0x9e,0x86,0x30,0x18,0xfd,0x4c,0x56,0x4c,0xd0,0xa4,0x84,0x37,0x02,0x02,0x6a,0x8d,0x57,0x6b,0xc2,0x06,0xd1,0x8a,0xdb,0xa0,0xcc,0x31,0xf9,0xcf,0xbf,0xf2,0x29,0x7c,0x26,0xac,0x1f,0x03,0x20,0x26,0x76,0x03,0x6f,0xa5,0xb5,0x33,0xfb,0x02,0xe8,0xf6,0xe9,0x5e,0xb1,0x36,0x7c +.byte 0x96,0x56,0xb1,0x98,0x2d,0x9c,0x38,0x9b,0xd4,0x56,0x28,0xcc,0xdb,0x08,0xd3,0x42,0x00,0x35,0x24,0xd9,0x74,0xa2,0x0d,0x55,0x21,0x06,0xb7,0xf9,0x6a,0xa0,0x81,0xc1,0x2d,0xb6,0x67,0x91,0x92,0x24,0x36,0xfd,0x2e,0xd8,0xc0,0xcb,0xc8,0x87,0x1a,0x41,0x11,0x70,0xbf,0xd2,0xe7,0x82,0x10,0x74,0xdf,0x65,0x46,0x19,0x6b,0xb4,0x89,0xeb +.byte 0x9e,0xcf,0x79,0x35,0xba,0x25,0x75,0x32,0x64,0x6a,0xfb,0xaf,0xe5,0xed,0x85,0x98,0x34,0x75,0x31,0x40,0xbb,0xd8,0xe3,0xf5,0xa7,0xa2,0x9a,0x9e,0xcd,0xc4,0xf8,0xd8,0x15,0x6c,0x64,0x0c,0x6c,0x16,0x60,0xe9,0x40,0xf4,0x7a,0x14,0x37,0x7b,0x45,0x9b,0x0e,0x29,0x7a,0x1a,0x88,0x10,0xb9,0x2b,0xee,0x13,0xbd,0x8a,0xde,0x7a,0xe9,0x30 +.byte 0xe8,0x39,0x77,0x74,0xf5,0x2f,0xe3,0x10,0x19,0x89,0x28,0x21,0x3a,0x68,0x38,0xb4,0x4d,0x20,0x8d,0x7d,0xec,0x3f,0xf7,0x61,0xbf,0x53,0x32,0x3b,0xb8,0x6a,0xc9,0x58,0xeb,0xd4,0x33,0x0e,0xee,0xc7,0xb9,0x5e,0x3d,0x17,0x7e,0x36,0xa2,0xa6,0x94,0xb1,0x56,0xb6,0x8e,0x94,0x05,0x50,0x69,0x52,0x4f,0x31,0xe5,0x97,0x18,0xde,0x8f,0xb7 +.byte 0xff,0x2e,0x6f,0x1b,0x6a,0xda,0xfd,0xa1,0xd1,0x9a,0x4e,0x6a,0x1b,0x46,0x71,0x52,0x76,0x66,0xf9,0x70,0x8d,0x7d,0x97,0xb0,0xc3,0x8d,0xbc,0x35,0x26,0xe8,0x0b,0x80,0xc7,0x58,0x19,0x22,0x70,0x33,0x06,0xeb,0xcf,0x26,0x22,0xe0,0x97,0x91,0xbf,0xd6,0x94,0x05,0xe1,0x84,0xe2,0x31,0x66,0x57,0xc7,0x1e,0x36,0x30,0x50,0xaf,0x72,0xb3 +.byte 0x31,0xad,0x84,0xcc,0xb5,0x76,0x03,0xe1,0x56,0x97,0x87,0x36,0xf5,0xaa,0x97,0x99,0x38,0xa5,0xf5,0xb7,0x42,0x86,0x3b,0x2f,0x8a,0xb9,0x8e,0x6a,0x0b,0xe0,0xca,0xbc,0x4c,0x6c,0xc1,0x3f,0xbe,0x45,0xef,0xd2,0x57,0xcd,0x29,0xfb,0xfb,0xa5,0x79,0xf2,0xb1,0xbb,0x4b,0x55,0x26,0x2f,0x5c,0x84,0x5e,0x6a,0xc6,0xa9,0xd5,0x23,0xe4,0xd1 +.byte 0xe5,0xf0,0xbc,0x50,0x6a,0x2a,0xaf,0xa2,0x7c,0xcc,0x36,0x95,0xf9,0x5c,0x04,0x6d,0x04,0x31,0xbe,0x1d,0xb2,0x50,0x97,0x8f,0xdf,0x8a,0xed,0x4e,0x4e,0x0a,0x0b,0xfc,0xfc,0x1d,0xa9,0x6a,0x76,0x6a,0x33,0xd7,0x0a,0xcf,0xd5,0xdd,0xc6,0x62,0xe5,0x59,0x02,0xba,0x9c,0x43,0x32,0x8a,0x0e,0x47,0x91,0x00,0x07,0x47,0x93,0xc4,0xad,0x29 +.byte 0x33,0x57,0x15,0x45,0x44,0xb9,0xf3,0xc4,0xe6,0xd2,0xb9,0x3a,0x44,0x16,0x32,0x8d,0x57,0x78,0xac,0xf5,0xdb,0xa2,0x93,0x97,0x64,0x08,0x9b,0x66,0x4b,0xa0,0x64,0xab,0xa0,0xd6,0x0e,0x2c,0xa1,0x25,0x16,0x5c,0x6f,0x82,0xff,0x8e,0x89,0xfb,0xca,0x03,0xa6,0xf8,0xa1,0xf6,0x87,0x02,0x5c,0x90,0xcb,0x33,0xa0,0xc0,0x90,0xc2,0x1f,0xdd +.byte 0x5c,0x50,0x93,0xf2,0x8b,0x87,0xa1,0x73,0xda,0x5f,0xa3,0x20,0xd4,0xe7,0x45,0xd7,0xea,0x4b,0x5d,0xd6,0x80,0xfc,0x2d,0xdc,0x45,0x6a,0xf6,0xaf,0xd4,0x7a,0x91,0x64,0x15,0x17,0xbf,0xc7,0x58,0x54,0x7c,0x08,0x42,0x4f,0x8d,0xab,0x9b,0xd0,0x1d,0x57,0x71,0x50,0xa7,0xe3,0xb4,0xf2,0x14,0x0c,0xd7,0x2f,0x7c,0x8b,0x17,0x61,0x98,0xfa +.byte 0x19,0x34,0xb9,0x65,0xc5,0x5c,0xfe,0xa3,0x80,0x6f,0x99,0xec,0xfa,0x06,0x22,0x71,0xa9,0x10,0x2a,0xcf,0x12,0xb3,0x17,0xe5,0x59,0x3a,0xaa,0xcb,0x55,0x5f,0x45,0x9d,0xe9,0x29,0x56,0x34,0x11,0x62,0x6e,0x0a,0x95,0x12,0x5d,0xd4,0xa2,0x28,0x05,0xf1,0x0f,0x2d,0xa0,0x1e,0xe1,0x2b,0x42,0x6c,0xf0,0xe6,0x47,0xe0,0xb2,0xbd,0x89,0x20 +.byte 0x5e,0x24,0x05,0xec,0xf1,0x33,0xfc,0xa9,0x2f,0xef,0x3a,0x1f,0xfe,0x39,0xfe,0x01,0x09,0x0a,0x2a,0xe0,0x96,0x1e,0xde,0xad,0x96,0xaa,0x48,0xeb,0x8a,0xe6,0x54,0xbb,0x5d,0x7a,0xbe,0x4a,0xbf,0x96,0xf6,0x15,0x7a,0x70,0x6f,0xee,0xe7,0xf5,0x53,0xaf,0xe1,0xbb,0xaf,0x58,0x51,0xd4,0xa0,0xc6,0x44,0x03,0x47,0x33,0xce,0x58,0x62,0xd3 +.byte 0x93,0x21,0xa5,0xa5,0xb4,0xef,0x1d,0x93,0xcc,0x8c,0xf7,0x14,0xe3,0xec,0x40,0x52,0x47,0xe6,0xbc,0xe6,0x85,0x69,0xd0,0x15,0xad,0x24,0x21,0x4f,0x26,0x01,0x60,0x0f,0x0f,0xcb,0x7e,0x14,0x01,0xe1,0x90,0x11,0x06,0x17,0x38,0x2d,0xd8,0x26,0xe2,0x7c,0xd6,0xef,0xe0,0x59,0xf0,0x8c,0x2a,0xbd,0xba,0xe5,0x8b,0x07,0x56,0xd3,0x35,0xb3 +.byte 0x64,0x83,0x9e,0xb9,0xb9,0xeb,0x88,0x03,0xff,0x14,0xf3,0x8b,0x14,0xd3,0xa4,0xac,0x08,0xd9,0x75,0xf6,0x2c,0x9d,0x7f,0xc8,0x9d,0x11,0x3b,0xd1,0x71,0x14,0x4b,0x2a,0x6d,0x20,0x83,0x32,0x35,0x7e,0x1f,0x20,0xa6,0x69,0xbf,0xcf,0x22,0xd9,0xa2,0x57,0x4b,0x66,0xb1,0x9f,0x5a,0xa8,0xaa,0xb8,0x11,0x1d,0x45,0x28,0xac,0x86,0x09,0x37 +.byte 0xe9,0x1f,0xef,0xb4,0xe0,0x6f,0x75,0xad,0xe5,0xd8,0x25,0x06,0x19,0xb4,0xa8,0x07,0x78,0x79,0x43,0x63,0x40,0x26,0xbd,0x28,0x50,0x2d,0x29,0x26,0xf9,0xfc,0x5c,0x71,0x8f,0xfd,0x62,0x12,0x7c,0xd0,0x67,0xb3,0x65,0xef,0x31,0xc0,0x99,0xc1,0x54,0xfc,0x32,0x6e,0x25,0x56,0x77,0x6e,0xc1,0x6b,0x11,0x50,0x7c,0xa1,0x0b,0x97,0x8a,0xfe +.byte 0x0f,0x5b,0x16,0x93,0x83,0xe0,0xd8,0xb7,0xbf,0xa8,0x90,0x6d,0xd6,0x8b,0x4b,0xd9,0x17,0xbb,0xe8,0xd9,0xbb,0x5f,0x39,0x4a,0x33,0x7c,0xb3,0x12,0x99,0x1e,0xfc,0xb2,0x05,0x91,0x67,0xdf,0x8d,0x0b,0x55,0xfb,0xd1,0x8d,0x0c,0x9b,0x80,0x81,0xee,0x8c,0x05,0xe2,0x16,0x30,0xad,0x1f,0x88,0x04,0x75,0xc1,0xe5,0xec,0x32,0xf8,0xa0,0x5b +.byte 0x21,0xf6,0xd8,0x13,0x26,0xe4,0xa1,0x32,0xa8,0x93,0x91,0x5d,0x33,0x45,0x83,0x72,0x52,0x59,0x23,0x84,0xf6,0x7b,0xe2,0x90,0x20,0xc6,0x40,0x33,0xa9,0x94,0xcd,0xb9,0xab,0xe4,0x44,0x0b,0x06,0xbb,0x4c,0x2c,0x2a,0x5e,0x4d,0x57,0xb7,0xe0,0xb8,0x86,0x74,0xab,0xea,0x37,0x1c,0xa0,0xa6,0x21,0x33,0xc7,0xf5,0x24,0x7d,0x14,0xc8,0x8b +.byte 0x9d,0x8f,0x31,0x23,0x29,0x9d,0x11,0x42,0x07,0xe8,0x2c,0xec,0x7d,0x70,0x8d,0xb5,0xa4,0xca,0x33,0x30,0x03,0x75,0x17,0xa1,0x10,0xe7,0x6b,0x87,0xf9,0x0b,0xef,0x43,0xef,0xf8,0x24,0xc2,0xf1,0x7a,0x1a,0x70,0x7e,0x2f,0xd4,0xeb,0x97,0x40,0xa6,0xe6,0x2d,0xc1,0xd8,0x3b,0xee,0xa4,0xda,0xd3,0x50,0x41,0x18,0xbf,0xad,0x66,0x02,0x85 +.byte 0x60,0x14,0xcf,0xce,0x50,0x88,0x5e,0xb6,0x73,0x11,0xbb,0x6a,0xca,0xb1,0x46,0x8e,0xbb,0x58,0x2c,0x63,0x61,0x20,0xec,0xc9,0x98,0x0c,0xdb,0x5c,0xe5,0x47,0xb5,0x89,0xe9,0x14,0xc8,0xbc,0x35,0xf2,0xa7,0x2d,0x84,0xcc,0x61,0xc8,0xb6,0x9d,0xeb,0xcb,0x8b,0x73,0x90,0x6d,0x06,0xc9,0x42,0xcf,0xd2,0x15,0x80,0x2d,0x39,0xeb,0x71,0x83 +.byte 0x27,0x0d,0x85,0xf9,0xa3,0xce,0xef,0x29,0x3b,0x10,0xb7,0xe9,0xd0,0x86,0x6e,0x88,0x1e,0x3b,0xdd,0xaf,0x52,0xde,0xa2,0xa4,0x13,0x3c,0x1f,0xcb,0x84,0x74,0x12,0x04,0x91,0x40,0xb8,0x1b,0x15,0xfd,0xdb,0xe8,0x74,0xcc,0x4d,0x41,0xb5,0x5a,0x92,0xd3,0x71,0xf7,0x57,0xa5,0xf7,0x18,0x5a,0x57,0x36,0xde,0x8f,0xb2,0x81,0x59,0xc8,0x5c +.byte 0x22,0xcf,0xdc,0x7d,0xff,0x83,0xf2,0xad,0x8c,0x7b,0xd5,0x04,0xc4,0xb9,0x79,0x4a,0x12,0xa7,0xb1,0x7e,0x57,0xa5,0x6b,0x56,0x8a,0x11,0x96,0x57,0xde,0x35,0xdd,0xef,0x9b,0x03,0x41,0xde,0x61,0x5b,0x73,0x8c,0x6a,0x0c,0x6f,0xae,0x45,0x4b,0x56,0x4d,0xbe,0x8a,0x3f,0xdb,0x79,0x58,0x88,0xad,0xcb,0xfa,0x66,0x06,0x0e,0x74,0x21,0x1d +.byte 0xe1,0x94,0xd7,0x06,0xea,0x60,0xe2,0x7d,0x70,0xcf,0xa9,0x4f,0xe6,0x9b,0xba,0x19,0x71,0x69,0x94,0x66,0x5a,0xb8,0x49,0x0c,0xd1,0x9a,0xc4,0x5f,0xa7,0xf4,0x9e,0x3d,0x9e,0xc2,0xd8,0x0e,0xd2,0x6d,0xc6,0xc8,0x99,0xc3,0x5e,0x3b,0xb9,0xd8,0x48,0xc0,0x38,0x48,0x95,0x89,0xff,0x7e,0x1d,0x80,0x53,0xac,0x7b,0xd7,0xfc,0x6f,0x5d,0x25 +.byte 0x2f,0xcf,0x15,0xdb,0x1a,0x64,0xc1,0x16,0x91,0x65,0x84,0x99,0x0a,0xc1,0xbf,0x4d,0x11,0xa5,0x55,0x55,0x35,0x93,0x6f,0x47,0xf1,0x75,0xb8,0xb6,0x11,0x9d,0x6e,0x3b,0xd1,0x11,0x20,0xa2,0xa2,0x5c,0x33,0x85,0x09,0xb8,0x13,0xc9,0xdd,0xf2,0xd4,0x32,0x37,0xf2,0xef,0x47,0xfa,0x25,0x1a,0xcc,0xdf,0xf4,0xe4,0x2c,0x2c,0x7f,0x23,0xb6 +.byte 0xa8,0xd4,0x6a,0xd4,0xb4,0x06,0x2e,0xb0,0xaa,0xa1,0x18,0x8a,0x5c,0xc6,0xb2,0x4c,0x71,0x92,0x4a,0xdc,0x81,0x20,0x51,0x8d,0x3f,0x71,0x7d,0x8c,0x25,0x79,0x07,0x14,0xa9,0x7a,0x8b,0xda,0x00,0xfc,0x51,0xdb,0xa0,0x50,0x2b,0x15,0x39,0xf6,0xad,0xdc,0x9e,0x22,0x93,0x2f,0x43,0xd8,0x5c,0xa2,0x5e,0xfa,0x70,0x8c,0xe0,0x6b,0x0e,0x93 +.byte 0x6c,0x89,0xfe,0x22,0x4c,0xec,0xb0,0x7e,0xc1,0x06,0x69,0xf7,0x2f,0x3e,0xe5,0xa4,0x45,0x53,0xab,0x9c,0xf5,0x40,0x05,0x53,0x64,0xc6,0xa7,0xf9,0xc4,0xd6,0x89,0xd9,0x47,0x72,0x8e,0x42,0xf9,0x64,0x12,0xeb,0xd9,0x25,0xdc,0x4c,0xc6,0xea,0x9c,0x4b,0x93,0xb4,0xa2,0xa6,0xae,0x95,0xc1,0x84,0x75,0xc9,0x22,0xe3,0x22,0x81,0x31,0xd1 +.byte 0xfd,0x2e,0x91,0x4a,0xc3,0x00,0xa6,0x57,0xbb,0x89,0x9f,0x2d,0xc3,0x2e,0x1f,0xa2,0x47,0xc4,0xa3,0xcd,0x2b,0xc2,0x29,0xaf,0x89,0xce,0x2e,0x87,0x8e,0xd8,0xfc,0xee,0xab,0x8a,0xbd,0x2f,0xee,0xcf,0x94,0xe0,0x74,0x70,0x86,0x00,0x42,0x11,0x8b,0x6c,0x81,0xd4,0x82,0xf2,0x29,0x3e,0x9c,0x68,0x71,0xaa,0x20,0x0a,0x51,0x5d,0x80,0x4c +.byte 0xca,0x04,0x23,0x23,0xe2,0x69,0xb3,0xf5,0x65,0x98,0x19,0xee,0xa9,0x4d,0xd8,0xe0,0x06,0x4b,0x17,0xed,0xfa,0xf2,0xe3,0xd3,0x69,0x48,0xe4,0x4e,0xc0,0x5a,0x16,0x90,0xdb,0xb6,0x32,0x6e,0x6b,0xd7,0x7a,0xb6,0xd4,0x82,0xe4,0xcc,0x31,0x31,0x5c,0x18,0x84,0xef,0x75,0x9f,0xda,0xf6,0x62,0x2d,0x96,0x4d,0xa1,0x3c,0xb5,0x4a,0xbb,0xbf +.byte 0x9d,0xb3,0x33,0x00,0xc1,0x73,0xc5,0xb2,0xeb,0x85,0x74,0xb0,0x68,0xed,0x16,0x66,0x71,0xc9,0x7e,0x6f,0x74,0xa6,0xe7,0xed,0xf0,0xfa,0xab,0x41,0xdd,0x10,0xf9,0xff,0x4c,0xb6,0x4f,0x15,0xe3,0x77,0x31,0x17,0x5c,0x5a,0xef,0xb2,0xa9,0x44,0xbe,0x97,0xa9,0x75,0x5a,0xb7,0xe0,0x16,0x17,0x37,0x1b,0x71,0x03,0xb9,0xaa,0x7b,0x7b,0x52 +.byte 0x46,0x58,0x6b,0x9b,0x87,0x27,0xa6,0x8a,0x0e,0x84,0x03,0x45,0x95,0x04,0xf1,0x7e,0xb6,0xf6,0x79,0xd5,0x66,0x6d,0x50,0x8c,0x5a,0x67,0xe0,0xdd,0x69,0xd8,0x92,0x75,0x15,0xcb,0xa5,0x05,0xfe,0x7a,0xc1,0xd6,0x11,0x57,0x10,0xa3,0xc3,0xb6,0xe9,0xe3,0x97,0xa5,0x46,0xc9,0xe9,0x9b,0x68,0xb6,0x55,0x0b,0xf2,0x17,0x9d,0x0e,0x7f,0xd9 +.byte 0x26,0x0c,0x01,0xff,0x95,0xe1,0x05,0xb7,0xbf,0x0d,0x77,0x12,0x96,0x03,0x71,0x01,0xc9,0x98,0xb4,0x44,0x94,0xc0,0xad,0x3d,0xfc,0x6f,0xe5,0x0c,0xa4,0x65,0xd7,0xe7,0x76,0x7c,0xb8,0xa0,0x0a,0xcd,0xe8,0x01,0x26,0x8e,0x94,0xec,0x94,0x65,0x86,0xee,0x4d,0x3b,0xc5,0xb5,0x2e,0x51,0xb7,0xa9,0x68,0xcd,0x14,0x90,0xd8,0x36,0xfb,0x52 +.byte 0x04,0x52,0xb4,0xca,0x9b,0xbf,0xc6,0x94,0x28,0xc5,0x7e,0x27,0x73,0xae,0x6d,0xba,0xe7,0x56,0xce,0x2e,0x00,0xeb,0x36,0x19,0xd7,0x4f,0x20,0x5e,0xfd,0x0f,0xd4,0x4c,0x02,0xaf,0xdb,0x74,0xef,0xf0,0x73,0x1e,0x2a,0x1a,0xe7,0x3a,0xe0,0xa5,0x89,0xcf,0x1a,0x66,0xbd,0x72,0x65,0xb4,0xf4,0x86,0x33,0x44,0xee,0x35,0xf6,0x09,0xbe,0x13 +.byte 0x96,0x84,0x04,0x95,0x3f,0x35,0xbb,0x01,0x2c,0x78,0x25,0xe8,0x1e,0x46,0xdb,0xd9,0xb1,0xe8,0xfb,0x2b,0xa8,0x59,0x72,0x5f,0x91,0xd3,0x7c,0x21,0x95,0xa9,0x50,0xa2,0x45,0x6f,0x48,0x0c,0xf2,0x51,0x10,0x3c,0xcd,0xea,0xeb,0x5d,0xc7,0xf9,0x0e,0xae,0x1a,0x02,0x05,0x15,0x12,0x10,0xc0,0x35,0x12,0x97,0xcd,0x5b,0x61,0x4f,0xd1,0xd3 +.byte 0x5b,0xec,0x2b,0xa0,0x20,0x03,0x2b,0xf3,0xe6,0x71,0x23,0xca,0x1d,0x48,0x64,0x3f,0x7e,0x52,0x8b,0xf9,0x96,0x33,0x31,0xbc,0xbd,0x73,0x2f,0xa6,0x80,0xb8,0x0b,0x3a,0xd7,0xf8,0x05,0xf0,0x06,0xc7,0xa5,0xce,0x6a,0x6a,0x62,0xae,0x06,0x93,0xa4,0x5f,0x0b,0x5d,0x4d,0xb8,0xa4,0xfa,0x2e,0xfc,0xb6,0x58,0x8c,0x2a,0x46,0xa4,0x55,0x1f +.byte 0x9b,0x9b,0x13,0xdd,0x17,0x2a,0x3d,0x04,0x51,0xb6,0xbe,0x9c,0xca,0xf3,0x23,0xb6,0x7b,0x7a,0x92,0xb7,0x2f,0xf9,0x69,0x9a,0xee,0xb3,0xa1,0x60,0x56,0xcf,0x9d,0xab,0xfe,0x86,0x7a,0x41,0x94,0x15,0xbe,0xa3,0xa5,0x85,0x09,0xfb,0x7b,0x89,0xbd,0xc3,0x09,0x10,0xa6,0xfc,0x41,0x8e,0x57,0x27,0xdc,0x58,0xf4,0x01,0x7c,0x31,0x5e,0xca +.byte 0xaf,0x31,0x2f,0x98,0x8b,0xbe,0x19,0x16,0xa1,0x81,0x7e,0xb3,0xa9,0xc5,0x15,0xd2,0xad,0x51,0xa1,0x73,0x56,0xd3,0x6a,0x15,0x35,0xe3,0xb1,0xdb,0x83,0x4c,0xe2,0x85,0x8c,0x03,0x12,0xc4,0x64,0x69,0xc0,0x23,0x16,0x7b,0x68,0x46,0x44,0x22,0x84,0xa6,0xb5,0xe4,0x90,0x91,0xc1,0xdd,0x25,0x7c,0x54,0x0e,0xce,0x5b,0x11,0xe4,0x50,0x1c +.byte 0x3c,0x0d,0xc7,0xc1,0x0c,0x10,0x2d,0x8b,0xb7,0xde,0xe2,0x4f,0x7e,0x22,0x53,0xfc,0x07,0x55,0x19,0x14,0x3b,0x33,0xf5,0xf3,0xd8,0x7b,0x5e,0x40,0xa2,0x81,0x6d,0x40,0x0d,0x20,0x36,0x4b,0xa1,0x34,0x34,0xac,0x43,0x59,0xb5,0xb1,0x90,0x8b,0x48,0xcf,0x15,0x57,0x17,0x0e,0xd0,0xbf,0x28,0xcd,0xa4,0x77,0x4d,0xae,0x09,0x4c,0x67,0x51 +.byte 0x18,0xaa,0xb4,0xc9,0x35,0x41,0x0b,0x34,0x4d,0xb3,0xef,0x3f,0x46,0x97,0x6e,0xae,0x75,0xd7,0x6a,0x2b,0x22,0x9c,0xef,0x8e,0xaf,0x72,0xb0,0x14,0x90,0xbd,0x11,0x90,0xde,0x9a,0x02,0x8c,0x20,0xf5,0xc7,0x33,0x4d,0x94,0x88,0x9a,0x6c,0x18,0xb4,0xc0,0xa9,0x94,0x07,0x9a,0x4b,0x10,0x8f,0xe8,0x25,0xcd,0x9b,0xf5,0xfa,0x91,0x8a,0xc0 +.byte 0x93,0x61,0x1c,0x00,0xd1,0x34,0x9a,0x29,0xa3,0x35,0x38,0xe4,0xa7,0x9f,0xb6,0x88,0x0f,0xad,0x88,0x96,0xa0,0x73,0xe7,0x10,0xea,0x36,0xe8,0x88,0x6c,0x7f,0x03,0xbc,0xfe,0xe0,0xb2,0x4b,0x24,0x98,0xf6,0x73,0x6f,0xab,0x00,0x1e,0x26,0x83,0x0d,0x86,0x5b,0xa6,0x51,0x8f,0x5f,0xa9,0x8f,0xf4,0xa0,0x51,0xff,0xe0,0x64,0x09,0x95,0xfb +.byte 0x56,0x53,0x18,0x61,0xea,0xc5,0x33,0xe8,0x6f,0x8a,0x07,0x97,0x1a,0x6c,0xb5,0xf8,0x73,0xae,0xe4,0x4e,0x6d,0xb2,0x83,0x20,0xfa,0xfd,0x79,0xa6,0x6c,0xaa,0x9b,0x7b,0x2c,0xfe,0x63,0x73,0xbc,0x87,0xd4,0x56,0xd1,0xb1,0xf1,0x0f,0x72,0x2c,0x2f,0xf0,0xf0,0x53,0xe2,0x6c,0x19,0x0d,0x9c,0xad,0xc8,0x0a,0x62,0x72,0xcb,0xc3,0x12,0x90 +.byte 0x4c,0x26,0xe3,0xa0,0x07,0x35,0xee,0xaf,0x81,0x35,0x07,0xa9,0x31,0xa0,0x59,0xc8,0x40,0xa5,0x45,0xb6,0x6d,0x3e,0xa2,0x5f,0x6a,0x79,0x74,0x65,0xa1,0xe3,0x1c,0xca,0xae,0xcc,0xa6,0xb6,0x0a,0x12,0x99,0x8e,0xc3,0xef,0x43,0xcf,0x42,0x92,0xa4,0x12,0xa3,0x8b,0x97,0x7d,0x6f,0xe0,0x35,0xed,0xac,0x69,0xae,0x8c,0xe1,0x32,0x11,0xa4 +.byte 0xe0,0x76,0x7f,0x75,0x92,0xda,0xfe,0x94,0x33,0xeb,0xe1,0xa4,0x3c,0x95,0x7c,0xc6,0xbc,0x3d,0xf2,0x39,0xa1,0x29,0x39,0x24,0x09,0xd4,0x52,0x68,0xfb,0x80,0xd0,0xd4,0x57,0xc6,0x4c,0xa5,0xa6,0x90,0xa6,0x61,0x15,0x2f,0xd3,0x35,0x36,0xf5,0x16,0xb3,0x65,0x0a,0xc4,0xcb,0x7f,0x73,0xe4,0xba,0x9a,0xd8,0x8b,0xc3,0x01,0xa0,0x08,0x57 +.byte 0x9e,0x26,0x54,0xbc,0x55,0xd1,0x5f,0xaa,0xb5,0x0d,0x42,0x75,0x04,0x76,0x8c,0xef,0xcf,0x64,0x3a,0x2e,0x4c,0x78,0xe5,0x37,0x8d,0x55,0xec,0xc1,0x7b,0xce,0x5f,0x5f,0x43,0x8b,0xdd,0x46,0x43,0xf5,0xa8,0x41,0xa6,0x82,0x1b,0x12,0xcb,0xcb,0x6d,0xa1,0x6c,0xb6,0x79,0x46,0x12,0x89,0x12,0x61,0xd6,0x4f,0xf9,0x43,0x2d,0x27,0xa9,0x61 +.byte 0x2e,0x2a,0x29,0x1b,0x6d,0xad,0x32,0x0b,0x6c,0x7c,0xf4,0xb8,0x98,0x91,0xbb,0x78,0xda,0x85,0xe8,0xfb,0x4e,0x11,0xc4,0x2a,0x07,0x54,0xa0,0x67,0x73,0x1b,0xa4,0x60,0x15,0x5c,0x83,0xbf,0x3f,0xd9,0x61,0x30,0x02,0xbb,0xa6,0x67,0xcd,0x0c,0xd1,0xb4,0x11,0x7e,0xca,0xf4,0x1e,0xed,0x83,0x34,0x66,0x54,0x23,0x39,0x36,0x8c,0xa0,0xc6 +.byte 0xef,0xad,0xa1,0x95,0x04,0x20,0x46,0x42,0xa8,0x99,0xd2,0x98,0xc6,0x0a,0x92,0x11,0xd1,0x84,0x4a,0xbf,0x25,0xe5,0xcf,0x78,0x98,0x81,0x80,0xaa,0x31,0x0a,0xa4,0xfb,0xef,0x35,0xfa,0xa4,0xac,0x5f,0x01,0x6b,0xb7,0x8e,0x86,0xc1,0x46,0x97,0x88,0xe2,0xaa,0x3b,0x1f,0xb5,0xf8,0xa9,0x90,0xf0,0x45,0x6d,0xdd,0xa3,0xdd,0xd8,0xef,0x36 +.byte 0x6f,0x87,0x55,0xf6,0x96,0xcd,0x88,0x43,0x03,0x97,0x82,0xea,0x5a,0x1c,0xa1,0x1a,0x7b,0x1b,0xa7,0xfc,0xaa,0x86,0xb4,0x71,0xde,0x0d,0x0a,0x52,0x98,0xd2,0x65,0x5d,0xa4,0xea,0x91,0xc9,0xe4,0x8b,0xd0,0xdb,0x85,0xe3,0x86,0x85,0x50,0xe1,0x41,0x1f,0x48,0x97,0x64,0xec,0x34,0xe4,0x54,0x42,0xf4,0x01,0xed,0x6f,0x4d,0xe3,0x1f,0x86 +.byte 0x14,0xbc,0x01,0x9c,0x7f,0x02,0x0c,0x65,0x94,0xd2,0x90,0x2c,0x1b,0xab,0x41,0x88,0xad,0x58,0xb5,0x71,0xd3,0xd6,0xe1,0x3f,0xf3,0x3c,0xb6,0xab,0x22,0x08,0x17,0xc7,0xf5,0x7e,0x34,0x56,0xae,0x1d,0x1e,0x7e,0xdb,0x24,0xe2,0xc2,0x38,0xf3,0x4d,0x46,0xe4,0x45,0xcb,0xb7,0x2f,0x0f,0x96,0x72,0x7e,0x31,0x89,0x17,0x9c,0xed,0x85,0xb9 +.byte 0xc8,0x8f,0x65,0x93,0xfb,0xb8,0x9e,0x41,0xa2,0xc1,0xcf,0xdb,0xe2,0x4c,0x26,0x4a,0xc7,0x2a,0x72,0xf6,0x28,0xbc,0x18,0x22,0xde,0xa1,0xfa,0x46,0xbe,0x95,0xc8,0xe2,0x19,0xbb,0x20,0x7b,0xd5,0xf8,0x34,0x15,0xaa,0xec,0xe2,0x9e,0xa9,0x3d,0xa1,0xd9,0xaa,0xc9,0x18,0x39,0x07,0x5c,0x81,0x61,0xe7,0x00,0xc5,0x57,0x3e,0xca,0x4d,0x89 +.byte 0x33,0x02,0xa6,0xc8,0x15,0xb7,0x24,0xdd,0x5c,0x55,0x56,0x11,0x5c,0x17,0x1b,0xda,0xc6,0xd5,0x46,0x6e,0x9f,0x70,0xe7,0x1e,0x41,0xee,0x91,0x1a,0xa0,0xad,0x35,0x64,0xdf,0x4a,0x18,0x03,0xa7,0xa8,0x88,0x8f,0x65,0xbc,0x76,0x34,0x08,0xab,0x50,0xc6,0xd3,0x08,0x7c,0xc1,0x4f,0x77,0xcd,0x1a,0xc6,0xed,0x35,0xea,0x4e,0x8a,0x6a,0x38 +.byte 0xa3,0xa3,0xd8,0xa9,0xa2,0x68,0xa7,0xd8,0xe0,0xc8,0x3f,0xfe,0xe7,0x73,0xc6,0x6b,0xd8,0x0c,0xd5,0x8f,0x81,0xe7,0x37,0x08,0x93,0x28,0x73,0xef,0xc4,0x91,0x52,0xa5,0x30,0xff,0x47,0x95,0x02,0x0d,0x8c,0xfd,0xc9,0x28,0x60,0xa9,0xad,0x30,0x00,0xcc,0x3a,0x00,0xbb,0x25,0xab,0xd0,0xf8,0x25,0x46,0x20,0xc0,0x67,0x9b,0xd6,0x10,0xa6 +.byte 0x84,0x6f,0x66,0x60,0x66,0x75,0xb6,0xfb,0x39,0x3a,0x9f,0x7d,0x32,0x7f,0x12,0x6f,0x8c,0xed,0x79,0x40,0x47,0xa3,0x27,0x17,0xa8,0xa4,0x02,0x93,0xb9,0x32,0x03,0x34,0x06,0x76,0x71,0x40,0x90,0x2b,0xe7,0xd0,0x3f,0x59,0xa7,0xfb,0x3a,0x7b,0xc8,0xa5,0x86,0x21,0x0d,0xf6,0xc6,0x49,0x07,0x56,0xe9,0xfc,0xac,0x61,0x30,0xa5,0x7e,0x90 +.byte 0x10,0xc8,0xdb,0x15,0x2b,0x75,0x27,0x77,0x51,0x42,0xcf,0x50,0xe8,0x6c,0x0b,0xb7,0x17,0x1a,0x89,0x7d,0xfe,0xd2,0x75,0xfa,0xb7,0xe5,0x68,0x10,0x1c,0x27,0x85,0x8b,0x52,0x7d,0x87,0x57,0x50,0x77,0x25,0x9d,0xcc,0x08,0x6a,0xad,0x63,0xf8,0x8e,0xe0,0x21,0x62,0x56,0x48,0x29,0xed,0x81,0x1d,0x6b,0x60,0x55,0x78,0x6a,0xce,0xd6,0x79 +.byte 0xe1,0x66,0x18,0x9f,0x71,0xf7,0x0c,0xec,0x35,0x53,0xef,0x39,0xfe,0x57,0x71,0xc0,0x49,0x4b,0x55,0xe8,0x3d,0x9b,0xe3,0x9a,0xbb,0xf8,0x61,0x31,0xa1,0x94,0x94,0x8a,0xb1,0xd2,0x0f,0x01,0xe0,0xd4,0x26,0xa0,0x59,0x70,0xd0,0x5e,0xb8,0x6f,0x63,0x7b,0x71,0x49,0xe1,0x98,0xfb,0xdb,0x22,0x26,0x18,0x16,0x31,0x08,0x90,0x32,0xd5,0x7a +.byte 0xc0,0xd8,0xeb,0xae,0x93,0x3d,0x46,0xeb,0x0e,0xdd,0x08,0xa2,0xde,0x4e,0xc1,0x88,0x26,0xc2,0xf8,0xc6,0x5e,0x8a,0x9b,0x0d,0x9f,0x2b,0xcf,0x4e,0x13,0x43,0x4a,0x65,0xf6,0x47,0x1a,0x0a,0xae,0xf9,0x9f,0x7c,0xc5,0x18,0x65,0x09,0xcb,0x85,0x7d,0x33,0x36,0x43,0x19,0x99,0x20,0xa2,0x64,0xb2,0xf5,0x20,0xd2,0x74,0xc6,0x2c,0x29,0x46 +.byte 0xde,0xa7,0x4a,0x7f,0x3b,0x05,0x3e,0x11,0xb6,0xc1,0x98,0xfb,0xf5,0x9d,0x93,0x95,0x76,0x11,0x80,0x41,0x44,0xd3,0x2f,0xf4,0xfd,0x92,0x1e,0xd7,0xa7,0x5f,0x02,0x4a,0xbc,0xb7,0x96,0x33,0xc0,0x0d,0x2d,0x97,0xb8,0xd4,0x67,0x7a,0x4c,0x74,0x93,0xa7,0x8d,0x68,0x78,0xed,0xc8,0xc9,0x02,0x6e,0xae,0x10,0x97,0x7c,0x56,0x11,0x2a,0x29 +.byte 0x87,0x5c,0x21,0xec,0x75,0x9c,0x17,0x17,0x8d,0x45,0x08,0x31,0x36,0x64,0xc0,0xf7,0x95,0xb6,0x72,0xcf,0xac,0xd8,0x52,0x02,0x6f,0x3b,0x14,0x34,0x30,0xcc,0x39,0x7c,0xe4,0x1f,0x38,0x23,0xcf,0x1f,0xb7,0x7e,0x92,0x66,0xf7,0xda,0x9f,0x27,0xbb,0x83,0x45,0x71,0x67,0x63,0x6c,0x85,0x64,0x34,0xa8,0x93,0x5a,0x13,0x0c,0xff,0x8b,0x3a +.byte 0x2a,0x10,0x1d,0xb6,0x43,0xef,0x57,0xf3,0xf0,0x29,0x2e,0x59,0x72,0x2e,0xc3,0xb6,0xd3,0xd0,0xdd,0x17,0x19,0x82,0x49,0x05,0xd4,0xfc,0xd6,0x2e,0x5d,0xd7,0x0c,0xb6,0x18,0xd5,0x08,0xbb,0xe5,0x3b,0x2e,0x85,0x62,0xc0,0x1e,0xa3,0xb8,0x92,0x21,0x06,0xfa,0xf1,0x2d,0xab,0x62,0x67,0x62,0xee,0x13,0x7f,0x07,0xb6,0x24,0x64,0x94,0x4f +.byte 0x69,0xb9,0x7a,0xdc,0x23,0x5e,0x19,0x96,0xc5,0x4d,0xcb,0xee,0x2d,0x4a,0x7d,0x1d,0xd2,0x72,0x18,0x8f,0x43,0x8f,0x76,0xbf,0x30,0xd8,0xf1,0xfe,0x9c,0xe7,0x63,0x38,0xff,0x1a,0x3f,0x40,0xbd,0x73,0x66,0xf7,0xa9,0xd9,0x17,0x4a,0x8a,0x79,0x04,0x0e,0x20,0xe1,0x39,0x49,0xd9,0x30,0x9c,0x52,0xf9,0x14,0x8f,0xdc,0x9d,0x52,0xd5,0x34 +.byte 0xaa,0x58,0xfe,0x5d,0x68,0xcb,0xab,0x3b,0x3c,0x9e,0x25,0xde,0x6d,0xdd,0x58,0x0d,0x1b,0x99,0xa9,0xcc,0x26,0x4e,0xc0,0x3c,0x8b,0x1e,0xaa,0x52,0x3d,0x4d,0xb8,0x27,0xc1,0xd1,0xa2,0xaa,0x78,0xb9,0xee,0x5f,0x26,0x46,0x5f,0x41,0x0d,0xe1,0x70,0x7d,0xcd,0x3f,0x4a,0xca,0xb2,0xca,0x2f,0x36,0x1f,0x68,0xe6,0x66,0x8a,0xf6,0xe3,0x94 +.byte 0xe5,0xab,0x90,0xeb,0x2f,0xe8,0xb2,0x6c,0xa9,0x69,0xd2,0xe0,0x5f,0x4a,0x65,0xa8,0x6b,0xc1,0xfb,0x03,0x51,0x17,0x3b,0xf8,0xe0,0x67,0xc3,0x5a,0xe8,0x18,0xdf,0xc1,0xf8,0x7f,0x44,0x68,0x4a,0x01,0xbe,0xf8,0xa5,0x7a,0xb9,0x3b,0x0f,0x05,0x8e,0x4b,0x28,0x14,0x61,0x2f,0x2e,0xc7,0xf2,0x96,0xc7,0x60,0x99,0xc4,0xbf,0xe8,0x37,0x98 +.byte 0x00,0x34,0xf7,0x5a,0xd7,0x6f,0x90,0xc4,0x19,0xb5,0x07,0xd1,0x76,0x6e,0x65,0xcc,0xf6,0x51,0x88,0x5c,0x81,0x91,0xa8,0x4d,0xb7,0x33,0x53,0xb6,0x93,0x42,0x52,0x82,0xfa,0x2b,0xca,0xa0,0xbd,0xf3,0x09,0x2b,0x0f,0x09,0x02,0xdd,0x29,0x5f,0xa6,0x49,0x7b,0x97,0xe8,0x96,0xbf,0x6f,0x76,0xb7,0xa2,0x76,0x58,0xda,0x1d,0xb2,0xdb,0x6d +.byte 0x9d,0x3b,0x32,0x6e,0x9c,0xea,0x45,0xfd,0x33,0xeb,0x41,0x91,0x91,0x52,0x2b,0x68,0xa3,0xf3,0xc6,0x92,0x43,0x13,0x49,0x8a,0x10,0xb1,0x2f,0x9a,0x0f,0xe1,0x94,0x21,0x18,0x76,0x87,0xaf,0x50,0xe4,0x71,0x5d,0x0a,0xba,0x75,0xaa,0x17,0xf5,0x37,0xf2,0x84,0x9b,0x29,0xdf,0x44,0x60,0xd0,0xac,0xcf,0x25,0x87,0x66,0x64,0x1f,0x0d,0xba +.byte 0xb3,0xdb,0x14,0xb6,0x1f,0x00,0x70,0x98,0x83,0x1d,0x9e,0xbd,0xf9,0x17,0xf4,0x57,0xae,0xa8,0xae,0x7b,0xa7,0xde,0x1f,0x31,0xc6,0x29,0xb2,0xf7,0xef,0x36,0x31,0xe7,0x50,0x33,0x69,0x4e,0x8c,0xb5,0xe4,0xdd,0x74,0x87,0xc8,0xf5,0x22,0x1b,0x4b,0xec,0xc4,0xe1,0x5a,0x7d,0x5a,0xe8,0xb9,0x2f,0xf4,0xd1,0x83,0xa2,0xb7,0x97,0xe0,0x1e +.byte 0xf7,0x3a,0x74,0xef,0x5f,0xb3,0x30,0xce,0xfa,0x23,0xd5,0x98,0x56,0x19,0x24,0xb5,0xc7,0x60,0x8b,0x03,0x8e,0xe7,0xdf,0x2c,0x36,0x4c,0x3b,0x3b,0x84,0x45,0x97,0x40,0x29,0x30,0x98,0xc3,0xc0,0xa2,0xf0,0xdf,0x69,0x47,0x95,0x26,0xdb,0x6c,0xcc,0xff,0x2d,0x32,0xaa,0xa7,0xb8,0x6b,0x24,0xec,0xff,0x94,0x4d,0x36,0xdd,0x7b,0x4d,0xc5 +.byte 0x8d,0xe2,0x3c,0x14,0x5a,0x37,0x75,0x1f,0xd6,0x98,0x7d,0xd3,0xdc,0xb0,0x24,0x69,0xe7,0x65,0x60,0x2a,0xe7,0x00,0x5b,0x68,0x99,0xa0,0x9e,0x10,0xf0,0x5c,0xa8,0x39,0x85,0x59,0xde,0xe4,0x46,0xf3,0xde,0xda,0xc0,0xb1,0xd2,0xf1,0xd2,0x05,0xd5,0xd4,0x2c,0x2e,0x7e,0x44,0x5c,0x52,0x80,0x85,0xbb,0x54,0x97,0xb6,0xad,0x6d,0x57,0x49 +.byte 0xed,0x67,0xaf,0x27,0xb4,0x5b,0xce,0x0f,0x3c,0x58,0xa2,0x24,0x22,0xa2,0xcb,0xfc,0x4e,0x8e,0xc2,0x3c,0x32,0xc6,0x07,0xc4,0xc6,0xc0,0x50,0xc3,0xe3,0x1b,0x96,0x76,0x62,0xf9,0xea,0x5e,0xdc,0xc5,0x96,0xe8,0xaa,0x20,0x26,0xac,0x44,0xfb,0xf2,0x16,0x72,0x72,0x4c,0x5c,0xee,0x51,0x07,0xb0,0x74,0xf6,0xde,0xd7,0x5d,0x73,0xf4,0xe9 +.byte 0x0d,0x29,0x06,0x5f,0xca,0xe2,0xbb,0xa4,0x3e,0xdc,0xf7,0x74,0x99,0x53,0x7a,0x52,0x60,0x46,0xaa,0xf0,0x34,0x97,0x0c,0x81,0x5b,0xd8,0x95,0x52,0x76,0x55,0xcb,0xc4,0x6d,0x50,0x26,0x3f,0x7e,0xc2,0x93,0x6e,0x14,0x0c,0xd7,0x49,0x5f,0x52,0x8f,0x34,0x49,0xb4,0xe7,0x12,0xfe,0xae,0xd1,0xfa,0xfc,0xc5,0x80,0x38,0x26,0x9c,0xf1,0x81 +.byte 0x01,0x58,0x15,0x99,0x29,0x8d,0x1b,0x2d,0x74,0xca,0xf1,0xf4,0xfa,0xcd,0xae,0xfa,0xa9,0x1d,0xbb,0xf1,0x55,0x2e,0x69,0x46,0x6e,0xe4,0x91,0xa3,0x48,0xb5,0xaa,0xb3,0x85,0xab,0x14,0xd2,0x84,0x8c,0xb1,0xb6,0x0c,0xa5,0x4a,0x90,0xed,0x6e,0xdf,0x1e,0x15,0x36,0x7b,0xa3,0x59,0xd6,0x8d,0x7d,0x7b,0x12,0x7c,0x9a,0x40,0x8a,0x28,0xde +.byte 0xb5,0xbc,0xc4,0x52,0x96,0xfb,0x62,0x1f,0xc9,0xe0,0xc9,0x1d,0xc7,0xc4,0xcb,0x8a,0x96,0x21,0x42,0x7c,0x0a,0xdd,0x42,0x74,0xcf,0xc4,0x57,0x8f,0x28,0x0a,0x7c,0x4f,0x49,0x5a,0xc6,0x21,0xb2,0xd4,0xd0,0x61,0xa5,0x35,0xbd,0x4a,0x0c,0x16,0x68,0x1f,0xe3,0xff,0x3f,0x72,0xf0,0x1d,0x50,0x26,0x48,0x91,0x27,0x1b,0x2b,0x0d,0x8b,0xf2 +.byte 0xa0,0xc0,0xa0,0x5d,0xdb,0xcf,0x71,0x41,0x83,0x00,0xb9,0x3c,0xe0,0x4a,0x96,0x43,0xf8,0x64,0x0f,0x42,0xc5,0x75,0xec,0x26,0x62,0x99,0x13,0xeb,0xf9,0xa6,0x86,0xe4,0xc9,0xaf,0x3c,0x2c,0xc9,0x4f,0x89,0xf4,0xc0,0x46,0x99,0xb8,0xd1,0x9e,0x7b,0xb7,0x41,0x0a,0x5f,0x40,0x98,0x65,0x29,0xdd,0x60,0x6b,0x27,0xbf,0x66,0x08,0x32,0xc2 +.byte 0xcf,0xea,0x91,0x44,0x45,0x49,0x1c,0xb4,0x16,0x7f,0x11,0x1a,0x8c,0xb4,0x59,0x54,0xc6,0xcf,0x40,0xd2,0xe9,0xc1,0x54,0x9c,0xe2,0x6e,0xd5,0xfe,0xfb,0x4a,0xa3,0x98,0x63,0xef,0x86,0xe0,0x63,0x30,0x32,0x5a,0xbd,0xd4,0x7c,0xe8,0xbe,0xf1,0xed,0xa2,0x19,0x98,0xc8,0x34,0x65,0x4c,0xef,0x1a,0xb3,0xbc,0x87,0xbe,0x6b,0x75,0x2c,0xe5 +.byte 0x54,0xcc,0xe5,0x69,0xb2,0xc8,0xdb,0x57,0xf8,0xa7,0x82,0x07,0xf7,0x20,0x95,0x7f,0x6d,0x7b,0x33,0x66,0x67,0xa1,0x38,0x0e,0x9c,0x3b,0x22,0xab,0xc1,0xd3,0xed,0x87,0x32,0xfb,0x4a,0x5d,0xad,0x3a,0xe1,0x90,0xa6,0xe3,0x4d,0x6b,0x00,0xe4,0x5c,0x66,0x59,0x90,0x63,0x24,0x5b,0xe1,0x3b,0x69,0xb6,0xc9,0x05,0x83,0x3a,0x7b,0xf4,0xa5 +.byte 0xc8,0x47,0xf9,0x8e,0xab,0x92,0xbd,0xd3,0x41,0xc7,0x61,0xf4,0xce,0x30,0xdb,0xae,0x27,0x69,0x0f,0xcc,0x69,0x50,0xe8,0x18,0xf2,0x39,0x04,0x5a,0x29,0x12,0x61,0x46,0x5c,0x1b,0x2e,0x15,0x9c,0xfa,0x73,0x50,0xe3,0x51,0xda,0x4d,0x88,0x25,0xb2,0xff,0x55,0x27,0xce,0x86,0xca,0xe6,0x2a,0xb8,0x0c,0xa7,0xd0,0x06,0xbf,0x70,0xb5,0x6b +.byte 0x80,0x44,0x65,0x5d,0x23,0xfa,0x0d,0x74,0x5c,0xfc,0xc7,0x86,0x5e,0x23,0x8a,0xf1,0xff,0x80,0xf0,0x19,0xaa,0x98,0xae,0x56,0xcf,0x12,0x74,0x6c,0x70,0xb2,0x39,0xbe,0x66,0x71,0xee,0xe3,0x43,0x3b,0xfa,0x79,0xa9,0x7e,0x69,0x6a,0x19,0x42,0xd5,0x0e,0x1e,0x92,0xfe,0x8a,0x0f,0xca,0x74,0xf2,0x68,0x71,0xf5,0xcb,0x05,0x94,0xc1,0x06 +.byte 0x1b,0xae,0x55,0xe9,0x16,0x03,0xa9,0x97,0xad,0x49,0xaf,0x88,0x8c,0x26,0x33,0x4d,0x46,0x75,0xb3,0x9c,0xee,0x70,0xe1,0x57,0x43,0xeb,0x59,0xff,0x77,0x89,0x8a,0x77,0x3f,0x7e,0xe6,0xbe,0xa2,0x05,0xb1,0xe3,0x41,0x5e,0xc7,0xd4,0x14,0xda,0xc0,0x84,0xd0,0x05,0x50,0xdd,0x62,0xdb,0x4c,0x3b,0x16,0xb0,0xe0,0xf5,0x2b,0xf1,0x83,0xea +.byte 0x7b,0x89,0xbb,0xde,0x57,0xdb,0xc0,0xb9,0x7d,0xdf,0x53,0x0f,0x6c,0xc5,0x5a,0x0b,0x36,0xeb,0xa3,0xc3,0xe6,0xc5,0x80,0x98,0xf3,0x87,0x29,0x97,0xc9,0x2e,0xd6,0x3b,0x43,0x2a,0x36,0x3b,0xba,0x43,0x85,0xf5,0x0d,0x18,0x2e,0x78,0x43,0xae,0xa4,0x24,0x6d,0xdc,0xab,0x05,0x94,0x09,0x94,0x27,0x17,0xef,0xbc,0x7e,0x52,0xa4,0x80,0xda +.byte 0x28,0xf5,0xc3,0x20,0x99,0xbb,0x5d,0xb6,0x7e,0x0e,0x59,0x3b,0x5e,0x1d,0x1b,0x4f,0xd1,0x91,0xe4,0xe4,0xc7,0x35,0xc7,0x2e,0xc1,0xba,0x60,0x05,0xa4,0xd5,0xca,0x5f,0x09,0xbf,0x79,0x06,0xcb,0xa7,0x32,0x7c,0xf4,0xdc,0xa8,0xb3,0x8b,0x26,0x59,0x6d,0xcb,0x74,0x37,0x56,0x51,0x96,0x0b,0x44,0xf1,0x95,0x16,0xe3,0x9b,0x9b,0x3b,0xb3 +.byte 0xea,0x6a,0x1b,0x76,0x99,0x69,0xd6,0x5b,0x10,0x5a,0x91,0x23,0xb5,0xc3,0xf9,0x6a,0xba,0xc4,0xe6,0x18,0x28,0x50,0x9d,0x09,0x14,0xbe,0xed,0x73,0xd2,0x51,0xff,0xf8,0x14,0x2b,0x8b,0xdd,0x2a,0x1a,0x8e,0x48,0xae,0xd8,0xdf,0xb9,0x5b,0xcb,0x8f,0xc2,0x8c,0xd6,0xb3,0xfb,0x40,0x2f,0xb0,0x6c,0x9a,0xea,0xd0,0x14,0x8c,0xc5,0xc7,0xc7 +.byte 0xf8,0xf5,0x4f,0xe2,0xd7,0x41,0xcd,0xb6,0x34,0x3e,0x81,0x19,0x09,0xa2,0x51,0xb4,0x60,0xfb,0xf2,0x6c,0xe6,0xae,0x68,0x47,0xb9,0x93,0x7b,0xc9,0xe7,0x00,0xc4,0xa7,0xf2,0xef,0x8b,0xd8,0xfc,0x9f,0xe5,0x6d,0x48,0xe2,0x6c,0x32,0x73,0x5c,0x30,0x7c,0x12,0x13,0xca,0xc3,0x31,0xc3,0xa2,0xb4,0xf7,0x23,0xc4,0xd0,0x47,0x39,0x93,0xc8 +.byte 0xa0,0x7b,0xb4,0x09,0x3f,0xe8,0x15,0x15,0x9c,0xa7,0xe6,0xa8,0xbe,0xba,0x60,0xf9,0x28,0x88,0x66,0x7b,0x62,0x32,0x17,0x18,0x68,0x87,0x53,0xf5,0xbc,0xf5,0x77,0x17,0xa1,0x3f,0x62,0xd1,0x10,0x0a,0x54,0x96,0x9c,0x31,0xc3,0xb7,0x1d,0xaf,0xc7,0xb3,0x27,0x9e,0x46,0xfe,0x7e,0x9b,0x88,0xf2,0x9e,0x6e,0x19,0x0f,0xb1,0x88,0xe4,0x08 +.byte 0x76,0x7c,0x77,0x46,0x09,0xa7,0x9e,0xf4,0xd9,0xbf,0x67,0xe8,0x9d,0x6a,0x75,0xa7,0xf5,0xee,0x29,0xba,0x84,0xa0,0x44,0x46,0x35,0x4c,0x22,0xef,0xb3,0xea,0xb0,0xf2,0xd6,0x78,0x20,0x97,0x28,0x5c,0x7e,0x90,0x06,0x80,0x19,0x63,0xa4,0x8a,0xef,0x0a,0xea,0x88,0xa9,0xa2,0xae,0x23,0x2e,0x40,0xce,0xc5,0xc2,0xbf,0xfe,0x5a,0x8f,0x14 +.byte 0xb8,0x66,0x1a,0x2d,0xdb,0x43,0x39,0xbd,0xe7,0x7b,0xbc,0x41,0x58,0x74,0x56,0xd1,0xe7,0xd0,0xba,0x24,0xd2,0x41,0xbf,0xd0,0x4e,0x97,0x38,0x8f,0x6b,0x6f,0xe2,0x7d,0x6d,0x32,0x94,0x43,0xa7,0x66,0xf7,0x90,0x21,0xe0,0xdd,0x19,0x48,0x72,0xc1,0xa5,0xbc,0x9c,0xe2,0xdd,0x2c,0x6e,0x50,0x45,0x2c,0xa0,0x95,0xcb,0x1d,0x2c,0x1d,0xa6 +.byte 0xbe,0x9c,0xd4,0x6c,0x07,0x2e,0x5e,0xc8,0xc1,0x05,0x61,0x7d,0x44,0x28,0xe6,0xad,0xf0,0x9d,0x2d,0x3d,0xce,0x90,0x7d,0x79,0x2e,0xf3,0x08,0xbe,0x7a,0xa9,0x58,0x04,0xa7,0x39,0x05,0xdd,0xb4,0x87,0x6c,0x7b,0xd5,0xb3,0x2d,0x6b,0x43,0xf4,0x37,0xd9,0x6f,0x5c,0xa2,0x23,0x92,0x53,0xb9,0xd7,0x1b,0x2d,0x5d,0xcd,0x6d,0x3f,0xef,0xc8 +.byte 0x66,0x91,0x10,0x1b,0xc5,0x24,0x50,0x87,0x70,0x93,0x03,0x3f,0x7b,0x40,0xc8,0x0c,0x9b,0xec,0x3d,0x82,0x27,0x96,0x2a,0xbe,0xca,0xaf,0x1b,0xbf,0xef,0x14,0x0c,0xdc,0xa6,0xc7,0x48,0x18,0xce,0x8e,0x43,0x58,0x97,0xb3,0x5e,0xd6,0xc9,0x70,0x65,0xd0,0x0e,0x17,0xac,0xa0,0x6b,0xc9,0x55,0x30,0x12,0x7c,0xbe,0xe5,0x46,0xfc,0xd8,0x3f +.byte 0x0e,0xd7,0x96,0x16,0x32,0x8e,0xb7,0x2d,0x07,0xd1,0x26,0x98,0x70,0x4c,0xb1,0x6f,0x92,0x32,0x75,0x4f,0x57,0x6b,0x78,0xe0,0xc5,0x9b,0xf0,0x08,0x59,0x0b,0xfa,0x2d,0x79,0xbe,0xde,0x44,0x3d,0x65,0x77,0x27,0x3b,0xd9,0xea,0x55,0x79,0x22,0xe8,0xf7,0x62,0xb1,0xe3,0x32,0x4e,0x03,0x17,0x65,0xd3,0x5d,0xee,0xa0,0x9b,0xc2,0xbd,0x9f +.byte 0xcd,0xdc,0xde,0xd7,0x6c,0x95,0x7a,0xf1,0x09,0x4c,0x14,0xb9,0x37,0x1d,0xd0,0xdd,0x4b,0x2e,0x93,0x0b,0xfa,0x08,0x40,0x01,0x36,0xdf,0x89,0x46,0xa6,0xbb,0x19,0xd9,0x4f,0xf9,0xe1,0x7b,0x03,0xc9,0xef,0x01,0x25,0xe9,0x6d,0x95,0x84,0x7f,0xf8,0x8e,0x02,0xfd,0x6f,0x30,0xed,0x1b,0x98,0xd0,0xb3,0xdd,0x92,0x65,0x46,0x49,0x61,0xde +.byte 0x76,0xf5,0x4b,0x29,0x03,0x6f,0x79,0xee,0xbe,0x7a,0x07,0x6e,0xa8,0x29,0xb8,0x03,0xb4,0x6c,0x50,0x1f,0x4a,0xa2,0xaf,0xbd,0xde,0x18,0x72,0x90,0xa2,0x12,0xa9,0x59,0x7b,0xf6,0x96,0x2d,0xda,0x3d,0x90,0xba,0x7c,0x79,0x3e,0x6e,0xef,0x94,0x37,0xe2,0xef,0x6b,0x2a,0x74,0x6b,0x52,0xa0,0xc2,0x1e,0xa1,0x24,0x59,0x84,0xeb,0xdc,0xd0 +.byte 0x34,0x60,0xa8,0x81,0xaf,0xdd,0x57,0xc2,0xa6,0x02,0x7f,0xcf,0x9e,0x64,0x28,0x18,0x7c,0x95,0x98,0x90,0x7a,0x76,0x3f,0x78,0x16,0x2c,0xe0,0xa7,0xdf,0x0d,0x4d,0x5e,0xcc,0x0d,0x73,0x12,0x26,0xd7,0xe9,0x32,0x3e,0xa1,0xa9,0xde,0x29,0xb2,0x3b,0x6f,0x3b,0x6e,0x12,0x0c,0x10,0x34,0x86,0xf2,0xa0,0xd4,0x9c,0xf6,0x14,0x5a,0x41,0x06 +.byte 0x31,0xb1,0xe4,0x31,0x52,0xf4,0xcb,0xe3,0x39,0xcd,0x0b,0xc2,0xca,0x90,0xba,0xb3,0x21,0xbf,0x94,0x13,0x75,0x3b,0x0e,0x0a,0xc0,0x05,0x35,0xe6,0x28,0x74,0x63,0xc5,0x34,0x44,0xd8,0x9a,0x0e,0xec,0xb3,0x1b,0x30,0x58,0xfc,0xa0,0xc4,0xd1,0x26,0x50,0x6b,0x22,0x88,0xfc,0xad,0xa9,0xb4,0x3e,0x36,0xb6,0xb1,0x6d,0x62,0x7e,0x60,0x8f +.byte 0xf5,0x17,0x65,0x1c,0xf6,0x51,0x4d,0x89,0x4a,0x7e,0x5d,0x23,0x3b,0x83,0x1f,0xa6,0xc8,0xd2,0x1a,0x90,0xd3,0x53,0xfc,0x48,0x64,0x94,0x6e,0x1c,0x72,0xef,0x5d,0xd4,0x23,0xa2,0x3a,0x93,0xe4,0x29,0x33,0x8a,0xbd,0xe5,0x17,0xc2,0xe9,0x18,0x6a,0x81,0x1e,0x5b,0x03,0x41,0x45,0x35,0x14,0xe7,0xc8,0x45,0x5c,0x37,0x69,0x77,0x62,0xf8 +.byte 0xd7,0xec,0x9d,0x62,0x2e,0xfa,0x43,0x3a,0xdc,0x8b,0x86,0x86,0x1b,0x31,0x71,0x0e,0x92,0x59,0xf7,0xef,0x96,0xfd,0x04,0x1e,0x1d,0x74,0x7d,0x08,0x06,0x21,0x54,0x39,0xd3,0x9f,0x30,0xa1,0x19,0x7f,0xc8,0x19,0x16,0xd1,0x21,0x2a,0xf3,0x21,0xce,0x19,0x1a,0xde,0x70,0x1b,0x87,0x05,0x9e,0xe8,0xf3,0xfd,0x1d,0xaa,0x61,0x6c,0xfb,0xdf +.byte 0x50,0x9a,0xa0,0x32,0x4e,0xe4,0x68,0xda,0x0e,0x2f,0x2a,0x70,0xe1,0x51,0x66,0xb4,0x2d,0x5b,0xb6,0x32,0x3f,0xcb,0xc0,0xaf,0x01,0x03,0xcd,0xd6,0xb8,0x4e,0x3d,0x24,0x17,0xe2,0x30,0x3b,0xa4,0x08,0x0e,0x6a,0xcf,0xbe,0xc2,0x5c,0x79,0x5d,0x25,0xe2,0xae,0xa7,0x7f,0x42,0xff,0xa9,0xa5,0x05,0xbf,0xf4,0x92,0x30,0xaa,0x1d,0x96,0x7a +.byte 0x49,0xbc,0x1c,0xaa,0x5c,0x8d,0xe8,0xf3,0xd3,0x1a,0x67,0x7f,0x47,0x09,0x90,0x35,0x82,0x4e,0xcc,0x2e,0x50,0xfe,0x2c,0xb9,0x29,0x39,0xff,0x49,0x8f,0x7e,0x89,0x8d,0x4a,0x15,0xd1,0xd6,0x83,0xdb,0x25,0xac,0xc1,0x81,0x23,0x70,0x3f,0xb9,0xce,0x7f,0x03,0x46,0xa8,0x39,0xab,0xff,0x71,0xc9,0x7b,0x3c,0xb3,0x5e,0x9f,0xfe,0x8a,0x0a +.byte 0x39,0xad,0x6a,0xc1,0x8e,0x5a,0xa8,0x71,0xb7,0x01,0x25,0x28,0x15,0xd9,0x0a,0xae,0xc1,0xf9,0x23,0x1c,0xc1,0xe8,0x86,0x1d,0xb8,0x71,0x6e,0xa2,0xa4,0x67,0x22,0x4d,0x0e,0xd2,0xaa,0x70,0x26,0x23,0xfc,0x15,0xed,0x67,0x11,0x87,0x69,0x6f,0xc6,0x4c,0xe1,0x4b,0x04,0x86,0xe9,0x56,0x40,0xea,0x07,0xb1,0x6f,0xe9,0x8f,0xdd,0x2f,0xce +.byte 0x8d,0xca,0x0a,0x58,0x01,0x44,0x2c,0x74,0xd0,0x14,0x07,0x9a,0xb7,0x5a,0xc1,0xea,0xa9,0xdd,0xa4,0x94,0x84,0xc2,0x11,0xa5,0xe2,0x00,0xd8,0xfc,0x77,0xb9,0x5e,0xe6,0x72,0xef,0xc5,0x38,0xe0,0x90,0x11,0x16,0xfd,0xa7,0x77,0xbd,0x4c,0x1d,0xeb,0x32,0x54,0xdb,0x2a,0x43,0xa1,0x87,0xbb,0x2e,0x79,0x22,0x4d,0xb3,0xdf,0x1a,0xee,0x75 +.byte 0xb0,0xdd,0xf2,0x09,0x05,0xf4,0x6a,0x3c,0x86,0xc6,0xe7,0x60,0x2a,0xee,0xb6,0x55,0xae,0xdc,0xce,0xf8,0xe4,0xd7,0xdf,0x72,0x42,0x91,0x6d,0xc4,0xd8,0x60,0xf1,0xe8,0x06,0x71,0x38,0xa3,0x03,0x3e,0x1b,0x14,0x47,0x74,0x93,0xb5,0x61,0x28,0xde,0x23,0x8f,0xbe,0x88,0x5e,0xdf,0x87,0x47,0xd4,0x5f,0x91,0x40,0xeb,0x02,0xda,0x27,0x3b +.byte 0x65,0x9f,0xd8,0xf1,0x78,0x7f,0xba,0x9b,0x35,0xb3,0x10,0xaf,0x7f,0x51,0x37,0xa5,0x63,0x64,0x1f,0xf1,0xc3,0x1b,0x9e,0xe4,0xdd,0x93,0x8c,0x3a,0x98,0x20,0x9a,0x75,0x22,0x7b,0x48,0x0a,0x9d,0x55,0xed,0x07,0x1a,0x79,0x3b,0x98,0xe3,0x16,0x9b,0x16,0x2c,0xb2,0x03,0xc1,0xf5,0x6c,0xac,0x00,0x6a,0xb6,0xc1,0xc2,0x49,0x4d,0x9d,0xf5 +.byte 0x0e,0x7b,0x60,0x09,0xcc,0xa7,0x35,0xbb,0x70,0x34,0x18,0x49,0x2c,0xf1,0x41,0x4f,0xce,0x68,0x03,0x60,0x14,0xa7,0x2e,0x59,0x0f,0xa2,0xc4,0x2f,0x33,0xf0,0xb6,0xa4,0x31,0x75,0xdc,0xb4,0x88,0xe4,0xe3,0x0e,0x4b,0x3f,0x58,0xd0,0xa4,0xea,0x9a,0xef,0x47,0xb7,0xf7,0x20,0x71,0x52,0xd3,0x8a,0x1c,0xd9,0x2d,0x88,0x05,0x03,0x8a,0x1c +.byte 0x3d,0x69,0xf0,0x39,0xf0,0x25,0xad,0x95,0xd4,0x47,0x3c,0xbb,0xfa,0x48,0xd7,0x8e,0xf5,0xdc,0x33,0x43,0x0a,0xbb,0xf0,0xd3,0xb1,0xc3,0x94,0x81,0xcd,0x22,0x79,0xdc,0xd0,0x92,0x8b,0xd3,0xc3,0xac,0x73,0x72,0x83,0xaa,0xa2,0x52,0x13,0x27,0x0e,0xc5,0x8c,0xa5,0x69,0x21,0x6e,0x9c,0x9d,0x9b,0xeb,0x7a,0x19,0xfe,0xb6,0xdb,0x4e,0xc1 +.byte 0xa6,0xec,0x42,0xb0,0x86,0x69,0x60,0xde,0x36,0x11,0x6a,0x86,0xd7,0xbf,0x15,0x48,0xa2,0x73,0x8f,0x68,0xde,0xd6,0xb2,0x6d,0xe0,0xc5,0x1f,0x1f,0xd5,0xc5,0xef,0xce,0xa1,0x90,0x5c,0xe6,0x6c,0x15,0x73,0xa7,0xcc,0x2d,0xe8,0xcf,0x4c,0xc8,0x17,0x3c,0xfa,0x5e,0xdb,0x4f,0x54,0xf3,0xa3,0xff,0x50,0x3e,0x42,0x60,0x0d,0xf3,0xf7,0xbb +.byte 0xc6,0xf5,0xe7,0x63,0x50,0x49,0xc1,0x94,0x60,0x68,0xbd,0x62,0xc0,0x81,0x80,0x16,0xfd,0x65,0xfb,0x2e,0x23,0x67,0xb3,0xb6,0xf8,0x95,0xfa,0x00,0x3f,0x1d,0x10,0x16,0xd5,0xd9,0x66,0xf8,0x25,0xb4,0xce,0xf2,0x2e,0x4f,0xa2,0x21,0x14,0xbd,0x2c,0x63,0xec,0x44,0x57,0x07,0x87,0x3c,0x2f,0x22,0xcf,0x48,0xd3,0x20,0x51,0xfc,0x5d,0xd5 +.byte 0x9f,0x67,0x9c,0xaf,0xe3,0x89,0x36,0xc5,0xfa,0x7c,0xca,0x07,0xdc,0x56,0x2a,0x4e,0xa5,0x76,0xe6,0x09,0x99,0xfb,0xb7,0xba,0xaa,0x0b,0x9c,0xe2,0x0f,0x73,0xab,0x9b,0xbe,0x6f,0x50,0xe3,0xf7,0x28,0x32,0xf2,0xab,0x86,0xa3,0x89,0x3a,0xea,0xd7,0x52,0x52,0x6e,0xed,0x1b,0x94,0xf0,0x59,0x9d,0xbb,0x7a,0x88,0x6f,0xbf,0xaf,0x6a,0x87 +.byte 0x47,0x34,0x7f,0xf4,0x8b,0x0d,0x33,0x12,0x2b,0x67,0x6b,0xc9,0x1d,0x18,0x23,0x2e,0x54,0xee,0x07,0x28,0xbd,0x9d,0xa1,0xaf,0x85,0x7a,0x0f,0xe5,0x5d,0xf7,0x8b,0xca,0xd9,0x3d,0x8f,0x4f,0xcc,0xce,0xc3,0x6e,0x3a,0x40,0x08,0xd2,0x14,0xf0,0x28,0x9b,0xc0,0x4a,0x7a,0x3c,0xc2,0xed,0xe0,0x20,0x04,0xf5,0xf9,0xee,0xb8,0x35,0x94,0xbc +.byte 0x53,0x46,0xf2,0x1a,0xab,0xe9,0xde,0xd8,0x27,0x67,0x0d,0x63,0x2a,0x7b,0x3a,0x38,0x91,0xbc,0x48,0x2c,0x38,0x09,0xa0,0xe3,0x66,0xe3,0xeb,0xb9,0x02,0x2d,0x80,0x87,0x81,0x4f,0x5c,0x1c,0xfd,0x2b,0x0f,0x99,0x37,0x3a,0xfa,0x0f,0x8e,0x8c,0x87,0x76,0x72,0xd3,0xcf,0xc8,0x1e,0x8a,0x3b,0x97,0xa0,0xe6,0x32,0x66,0x3c,0x55,0x2c,0xfb +.byte 0xa9,0x41,0xfd,0xf9,0xd4,0x50,0xe0,0x5b,0x03,0xb7,0x1e,0x49,0xfa,0x59,0xeb,0x55,0xb1,0x21,0xd0,0x52,0xeb,0xe6,0x0f,0x21,0x81,0x4f,0x82,0x9a,0x8f,0x67,0x3d,0x0d,0x1d,0x11,0x1f,0x70,0x59,0x09,0x87,0x99,0xe5,0xf2,0x89,0xa6,0x56,0x8d,0x52,0x55,0xa8,0x91,0x5d,0x51,0x48,0xec,0x66,0x05,0xd6,0x18,0xd1,0x61,0x02,0x5a,0x80,0xcc +.byte 0xee,0xf3,0x3b,0x8e,0x73,0x2a,0xb1,0x22,0xda,0x1d,0xca,0xb2,0xd6,0x7f,0xd7,0x7d,0xaf,0x23,0x8d,0xff,0x24,0x8e,0x5e,0x38,0x29,0x23,0x1f,0xbc,0xfd,0xe4,0x3d,0xcd,0x66,0xe3,0xe1,0x0f,0x85,0xe3,0xda,0x34,0xc6,0xba,0x60,0x5f,0xaf,0x32,0x79,0x34,0xc0,0x01,0x93,0xae,0x1e,0x72,0x7f,0xd2,0x32,0xa1,0xdc,0x0b,0xca,0xee,0x5a,0x7a +.byte 0x09,0x98,0x2a,0x46,0x0a,0xe7,0xfd,0x0f,0x76,0xa0,0x3b,0x2b,0x3d,0xe5,0xcd,0x04,0xa2,0x5e,0x9b,0xba,0x4a,0xd5,0x0a,0xce,0x94,0x77,0xbb,0x24,0xa4,0x12,0xbc,0x24,0xb6,0x60,0x40,0x62,0xd2,0x70,0x0e,0x3f,0x62,0x72,0x2f,0xa1,0xc9,0x12,0x03,0x0f,0x39,0x57,0x77,0x7c,0x5c,0x31,0x13,0xcb,0x8c,0x2c,0x84,0xfd,0x7b,0x6f,0x60,0xbb +.byte 0x1a,0x0b,0x65,0x8c,0xc1,0xe6,0x4b,0x60,0x8c,0xe7,0x3e,0x94,0x2a,0xcc,0x70,0x9f,0xd0,0xfd,0x00,0x0e,0x36,0xb2,0xf1,0x62,0x78,0x6a,0xc8,0x9b,0xbe,0x8b,0x54,0xa7,0xad,0xee,0x3e,0x8e,0x1c,0x23,0xbe,0xa2,0x73,0x43,0xbe,0x15,0x32,0x84,0xdd,0x22,0x75,0xd5,0x9a,0xfb,0x93,0x38,0x55,0x2f,0xa4,0x34,0x4c,0x33,0xc3,0xd7,0x7c,0x9f +.byte 0x42,0x2f,0x9f,0xf6,0x27,0x90,0x15,0x6b,0x14,0x4f,0xbc,0x4b,0x07,0x42,0x24,0x98,0xa6,0xc4,0x4c,0x2f,0x22,0xd9,0x80,0x99,0x97,0x6b,0x7d,0xe8,0x2b,0x31,0x37,0xfe,0xd1,0x8b,0xbd,0xbf,0x08,0x4a,0x56,0x3d,0xff,0xb5,0x12,0x6d,0xc4,0xcf,0xbc,0x75,0xe9,0xe6,0x6f,0x1a,0x30,0x34,0x5b,0x2c,0x1d,0x8f,0x85,0xa0,0xe8,0xfd,0xfd,0xe2 +.byte 0xe7,0x13,0x73,0xcd,0x63,0x63,0x90,0xa5,0xa4,0x3f,0x91,0x65,0x77,0xd4,0xed,0x0c,0x1d,0x06,0x95,0x93,0x74,0x85,0xec,0x31,0xde,0xc9,0xb9,0x2e,0x7c,0x6d,0x2c,0x0d,0x15,0xb7,0x6b,0x0c,0xd2,0xe8,0xa8,0xcb,0x90,0x5c,0x11,0x53,0xc5,0x9d,0x54,0xf4,0x90,0xf7,0xc8,0x17,0x65,0xc0,0x3f,0xea,0xf6,0x28,0x8e,0xf0,0x1c,0x51,0xcc,0xfd +.byte 0x99,0x67,0x3d,0xa5,0x82,0x1f,0xb3,0x75,0x08,0x27,0x85,0xa9,0x7b,0x54,0x91,0x6e,0x80,0x9a,0xdb,0x6c,0x17,0x4a,0x36,0x73,0x0e,0x61,0x2e,0x01,0xae,0x32,0xf8,0x54,0xdb,0xcf,0x24,0xa5,0x13,0xb1,0x7e,0x0b,0xf5,0xe7,0x0e,0x27,0x9a,0xef,0x01,0x0b,0x34,0x4f,0x91,0xc2,0x93,0xe0,0xe6,0x14,0x64,0xf8,0x7b,0x41,0x37,0x22,0x39,0xad +.byte 0xf4,0xa9,0x3b,0xfb,0x7e,0x2b,0xd8,0x2b,0x0f,0x7e,0x40,0x55,0x5a,0x48,0x61,0x2f,0x95,0x5e,0x5c,0x25,0xe5,0x06,0x89,0x17,0x23,0xb6,0x1b,0x38,0x2e,0x7b,0x45,0xa5,0x11,0x0a,0x8d,0xd3,0x8d,0xb6,0x8d,0x47,0xc5,0x4f,0x8f,0x8b,0xe2,0x03,0x85,0xa1,0x5a,0xa2,0x8d,0xca,0x4d,0xef,0xc9,0xde,0x7d,0x06,0xa1,0x3f,0x21,0xb9,0x38,0x7b +.byte 0x91,0xf7,0x5c,0x9f,0x97,0xe3,0xeb,0x5d,0xea,0x5e,0xc1,0xa5,0x30,0xb0,0x7f,0xe0,0x4c,0xef,0xe5,0xe3,0xa0,0x2d,0x23,0xb6,0x08,0x21,0xe6,0x67,0x35,0x82,0x07,0x59,0x02,0xd4,0x68,0xa5,0xf1,0x42,0x70,0xb4,0x5e,0x54,0xed,0x1e,0x99,0xb2,0x55,0xf1,0x69,0x2e,0x7c,0xaa,0x6c,0x5e,0xd4,0xfa,0x16,0xa7,0x1f,0xdb,0x46,0x70,0x65,0x26 +.byte 0x98,0xf1,0xb6,0x42,0xb3,0x48,0x99,0x7c,0x07,0xbe,0x2b,0xee,0xb4,0xc1,0xf0,0xb7,0x47,0xf8,0xcf,0xe4,0x8d,0x34,0xa6,0xe5,0x17,0x9a,0xb7,0x2c,0x2e,0x03,0x30,0xfd,0xfb,0x42,0xe7,0xa1,0xe0,0x34,0x49,0x64,0xd8,0x0c,0xd5,0xb8,0x77,0x9f,0x0e,0xe2,0x73,0x0d,0x20,0x0c,0x21,0x07,0xaf,0x0f,0x93,0x94,0xd6,0xdc,0xe3,0xac,0x8d,0x8e +.byte 0xae,0x87,0xbd,0x2c,0x19,0x66,0xef,0x90,0x4a,0xd9,0xb0,0xf6,0xac,0x3a,0xe2,0xb5,0x2e,0xb4,0x63,0x91,0xf1,0x8b,0xac,0xce,0x51,0xc2,0xe0,0x02,0x7d,0xf8,0xab,0xe4,0xd6,0x85,0xd6,0xbb,0xd7,0x72,0xd0,0x5f,0x4e,0x90,0x09,0xcc,0x51,0xee,0x5b,0xad,0xb2,0xf6,0x16,0x37,0x09,0xa8,0xfc,0x74,0xa5,0x2e,0x26,0x27,0xff,0x53,0xd4,0x45 +.byte 0x82,0xb1,0xb6,0x16,0x65,0xc6,0xbb,0x54,0x0b,0x89,0xa1,0x0e,0x09,0x7c,0xc9,0xc9,0x48,0xa7,0x51,0x78,0x1d,0x3a,0x30,0xc5,0xe7,0x02,0x9e,0x91,0xd6,0x39,0xc8,0x35,0xf0,0x33,0xab,0xf6,0x0f,0xf9,0xce,0xef,0x26,0x46,0x48,0x56,0xbc,0x45,0x44,0xe2,0xd7,0xfc,0xdf,0xb2,0x95,0x20,0x07,0xeb,0x47,0x1c,0xde,0x88,0x5e,0x08,0xee,0xa1 +.byte 0x56,0x9a,0x5d,0x8f,0x35,0xc5,0xb3,0xd3,0x7d,0xe3,0x25,0x82,0xcc,0xcb,0xad,0xd8,0xef,0x83,0x76,0x08,0x55,0x9e,0xf4,0x00,0x1f,0x92,0x24,0x0e,0xf6,0x96,0x98,0x34,0x10,0x10,0x93,0x27,0x3b,0x96,0xbd,0x75,0x45,0x9d,0xad,0xc1,0x79,0xa7,0x09,0x68,0x0a,0xbc,0x14,0xe9,0x62,0xf6,0x5e,0x4e,0x6d,0xfb,0xf2,0x25,0x20,0x8b,0x53,0xa6 +.byte 0xc2,0x31,0x71,0xaa,0xfa,0xa2,0x1c,0xa1,0xb3,0xa2,0xd7,0x22,0x5a,0x72,0x61,0x5c,0x30,0x75,0xcc,0x82,0xb0,0xd0,0x07,0x8c,0x95,0x11,0x57,0xa4,0xe2,0x42,0xf3,0x3d,0x87,0x56,0x45,0x38,0xd6,0x1b,0x2b,0x26,0x11,0x99,0xce,0xcc,0x2e,0x96,0x1b,0xa1,0x06,0xa1,0xa9,0x65,0xe1,0x1f,0x53,0xb6,0x1e,0x5c,0x44,0x40,0xa2,0xf2,0x03,0xe7 +.byte 0x39,0x24,0x59,0x5f,0xdd,0x30,0xf0,0x78,0x9f,0x34,0xf1,0xd3,0x5d,0x9a,0xdd,0xf9,0x02,0x16,0x4b,0xfa,0x8d,0xab,0x2f,0x96,0xdb,0x67,0xf6,0x1e,0x7a,0xf8,0xd8,0xe6,0x71,0xdc,0x1a,0xbf,0x44,0xd2,0xbd,0xb3,0x6d,0x47,0x69,0xe0,0x14,0xef,0xe5,0x5e,0x0a,0xe9,0x1a,0x8b,0x3f,0x67,0x1e,0x1c,0x37,0x86,0x25,0x02,0x52,0x3f,0xf5,0xde +.byte 0xe0,0xbe,0x1d,0x61,0x44,0x3d,0xd2,0xe9,0x26,0x3d,0x4b,0xa4,0xb1,0xb9,0x62,0xc5,0x70,0xfb,0x1d,0xaf,0xe6,0x19,0x97,0x0f,0x6e,0x6d,0x4e,0xdf,0x5f,0xc9,0xb2,0xb0,0xb9,0x4b,0x72,0xc7,0x60,0x5d,0xf8,0x7d,0x3b,0xd8,0x74,0x29,0xf2,0x56,0x25,0xd9,0xd9,0x12,0x3a,0x50,0x01,0x54,0xd3,0x0e,0x4c,0xbd,0xc9,0xf5,0x66,0xc4,0x4b,0xa2 +.byte 0x68,0x31,0xb1,0x9d,0x47,0xd8,0x28,0xce,0x6b,0xe4,0x5f,0x78,0x75,0x22,0x7d,0x44,0x08,0x71,0xfb,0xd8,0xa0,0x6e,0xd1,0xbd,0x64,0x4e,0x00,0x99,0xf7,0x85,0xad,0x31,0xde,0x5c,0x4c,0x7c,0xc3,0x89,0x49,0x9f,0xea,0x22,0x86,0xa0,0x48,0x48,0xcf,0x47,0xfb,0x68,0x04,0x4c,0x05,0x62,0x57,0x60,0x9b,0xa0,0x37,0x41,0x77,0xe4,0x7d,0x3e +.byte 0x36,0xda,0xd5,0xfd,0x68,0x47,0x8c,0x68,0x61,0x4c,0xea,0x38,0x20,0xa5,0xe4,0x12,0x6e,0xd5,0x14,0x37,0x01,0xcf,0xbd,0xdd,0x55,0x97,0xb4,0x30,0xf0,0x65,0x15,0xee,0x1f,0xc8,0x5b,0x07,0x82,0xae,0x43,0xad,0x11,0xda,0x0e,0x61,0x23,0x0a,0x5f,0x52,0xf9,0x9d,0xc5,0x98,0x4e,0xaf,0x77,0x21,0xc8,0x9f,0x6d,0x25,0x94,0x4f,0x91,0x1a +.byte 0xb4,0x2d,0xe3,0x15,0xe5,0xe6,0x25,0xb8,0x8e,0xd8,0x33,0xe3,0x05,0x01,0x7b,0x6b,0xa8,0x39,0x44,0x4b,0x58,0x3c,0x17,0x53,0x17,0x5c,0xbc,0xd5,0xcd,0xd4,0x29,0xe7,0x17,0x7a,0x69,0xa6,0x75,0x8e,0x0a,0x00,0x41,0xbe,0xb4,0x8d,0x79,0x1d,0xac,0x2a,0x0f,0x9b,0x7b,0x5a,0xe8,0x17,0xe2,0xb3,0x1d,0x03,0xde,0x5a,0x7c,0x31,0x18,0x8c +.byte 0x1c,0xf9,0x19,0x7b,0x37,0x1f,0x53,0x77,0xce,0x1f,0xad,0xb6,0x0d,0x21,0xe1,0xb0,0xf9,0x42,0x52,0x99,0x02,0xa8,0x58,0xab,0x94,0xf8,0x9f,0x99,0x2d,0x1e,0x68,0x4f,0x5a,0x91,0x2b,0xdf,0xe8,0xe6,0x34,0xb6,0x80,0x9b,0xb1,0x0e,0x87,0xec,0x29,0x17,0x4d,0x98,0x2d,0x40,0xd0,0xf7,0xca,0x55,0x9d,0x56,0x19,0xd5,0x7c,0x4e,0x2e,0x75 +.byte 0x5d,0xe7,0x3e,0xed,0x47,0xdc,0xb1,0x04,0xe5,0x61,0x0f,0xe7,0xc4,0x16,0x71,0xf4,0xf8,0x8a,0xf1,0xfc,0xd5,0xdb,0xeb,0x0b,0x82,0x0f,0xfe,0x64,0xa2,0xb0,0x53,0xab,0xf5,0x01,0xc2,0x8f,0xa0,0x4d,0x5d,0x1b,0x54,0x32,0x48,0xca,0x8a,0x42,0x59,0x4a,0x85,0x68,0x75,0xd1,0x1b,0x03,0x11,0xfe,0x28,0xd7,0xd5,0x37,0x81,0x7a,0xfb,0x84 +.byte 0xfd,0xa8,0x98,0x54,0xf7,0x81,0xb0,0x2d,0x2d,0x5d,0x95,0x0a,0x5b,0x80,0x13,0x95,0xad,0x8f,0x88,0xaa,0x38,0x7e,0xbc,0x88,0xc2,0xf6,0xa6,0x1e,0x6d,0x78,0xc9,0x4f,0xa9,0xb3,0xaa,0x23,0x0c,0x62,0x19,0x6f,0x26,0x5d,0xca,0x36,0x23,0xf8,0xd1,0x76,0x80,0x32,0x59,0xa0,0x47,0x86,0xee,0xc9,0x0f,0x1d,0x37,0xd9,0xc9,0x4e,0x65,0x22 +.byte 0x17,0x95,0x88,0x85,0xb3,0x8a,0x5d,0xb9,0xe6,0x3b,0x6c,0x02,0x81,0x61,0xe0,0xab,0x19,0x6c,0x9a,0x29,0x33,0xf1,0x7b,0x0c,0x22,0x16,0x0c,0xd6,0xfa,0xc2,0x84,0xe5,0x74,0x9e,0x8e,0xf8,0xdb,0x44,0x68,0xa0,0x58,0x52,0x9f,0xad,0xe6,0x2b,0x23,0x70,0xf3,0x6e,0xdc,0xf1,0x2d,0xa5,0xc2,0x7f,0xef,0x5f,0x58,0xc2,0x96,0x66,0x67,0x4b +.byte 0x7c,0xe0,0xd7,0x96,0xda,0xf7,0xd7,0x7a,0x7d,0xb4,0x4f,0x48,0xbd,0x87,0x6b,0xf4,0xbd,0xd1,0x45,0xdc,0xba,0x4f,0xd2,0x00,0x7f,0xde,0x3c,0x57,0xd7,0x3b,0x5b,0xa9,0xf3,0x17,0x76,0x47,0x0c,0xcf,0x48,0x07,0xa8,0xc3,0x30,0x60,0xc6,0x98,0x20,0x29,0xba,0x5f,0x76,0x6d,0x63,0x5f,0x87,0x7e,0x36,0xbc,0xa3,0xe4,0xd6,0x6a,0x55,0x73 +.byte 0x8b,0x8b,0x62,0x40,0xc5,0x7e,0xa3,0x33,0x04,0xce,0xe2,0x9d,0x9f,0x67,0x1c,0xf0,0xa1,0x78,0xd2,0x0b,0x58,0xc1,0x2e,0xec,0x78,0x0a,0xc9,0x0b,0x1d,0xfb,0xcc,0x72,0xd8,0xe4,0x15,0xcb,0x09,0x8b,0xd9,0x33,0xa9,0xb6,0x24,0x7e,0x59,0x48,0xbf,0xda,0xdb,0x5c,0x99,0xd1,0x92,0x1b,0xb6,0xf6,0x75,0x78,0x53,0x69,0x89,0x27,0x6b,0x3c +.byte 0xfb,0xd2,0xa7,0xeb,0xc5,0xf7,0xea,0x8b,0x38,0x59,0x8e,0x02,0xc7,0x6e,0x96,0x8a,0x85,0x1c,0x91,0x1b,0x97,0x97,0x9e,0xa7,0x9d,0x10,0xa4,0x4a,0x6e,0xa8,0x51,0x05,0xbe,0x5f,0x9a,0x5b,0x94,0xf2,0x2c,0xa1,0x1e,0x33,0xc5,0xe8,0x92,0xb8,0xd2,0xfa,0x27,0x07,0x12,0xa1,0xdc,0x24,0x43,0x28,0x06,0xe5,0x43,0x57,0x8f,0x66,0x72,0x2f +.byte 0x26,0xf7,0xea,0xa1,0xcf,0x57,0xd6,0xa6,0xf7,0x37,0x1d,0x6e,0xd9,0xde,0x1a,0x8c,0xf5,0x01,0x76,0xc3,0x56,0x40,0x57,0x3d,0x4a,0x14,0x04,0xf2,0xfc,0xba,0x3b,0x60,0xf1,0x88,0x1e,0x16,0x08,0x99,0x90,0xfe,0x27,0xaa,0x04,0x53,0xd8,0x7e,0x0c,0x58,0x6a,0xd9,0x5a,0xe4,0x11,0xd4,0xcc,0x48,0xbe,0x03,0x08,0xbc,0x61,0x47,0xdd,0xde +.byte 0x5f,0x03,0xc7,0x8f,0x9c,0x08,0x93,0xe3,0xaa,0xee,0x9c,0xe3,0xc6,0x06,0x78,0xda,0x0a,0xdd,0xb0,0xc3,0xf3,0x0b,0xe5,0xa0,0x5f,0x1e,0x3e,0xb3,0x15,0x7f,0xf1,0xf4,0x38,0xb2,0xed,0xf2,0xa6,0x8b,0x1d,0x78,0xb6,0x03,0x19,0xcd,0x17,0xb4,0x18,0x17,0x49,0x61,0x17,0xbd,0xbe,0x4b,0x04,0x00,0xce,0x4b,0xcc,0x47,0x61,0x76,0x85,0xdc +.byte 0x2b,0x85,0x48,0x82,0xf4,0x9b,0xb4,0x62,0x53,0xc7,0x06,0x50,0xf2,0x3e,0xba,0x6d,0xf2,0x19,0x0f,0x7f,0x84,0xce,0xa6,0x4d,0x96,0x97,0x94,0x12,0xb6,0xd0,0xd6,0xa4,0xc1,0xcc,0x14,0x54,0xf6,0x7a,0xf1,0x94,0x62,0xa1,0xc7,0x22,0x9b,0x0d,0x0e,0x69,0xcf,0x38,0x5c,0xda,0x9f,0xc0,0xfa,0x93,0x81,0x24,0xce,0x9f,0xf3,0xc2,0x66,0xad +.byte 0x06,0x21,0xf2,0x48,0x6c,0x4a,0x0d,0xb8,0x41,0x86,0xaf,0xb7,0x6c,0x65,0xcb,0x83,0xd8,0x75,0x11,0x60,0xfa,0x06,0xe5,0xd2,0x11,0x87,0x29,0xb8,0x41,0xcb,0x17,0xb5,0xbd,0xbd,0xf9,0xd5,0xbc,0x89,0xb6,0x60,0x65,0x59,0xbb,0x38,0x9d,0x70,0xf9,0x81,0x6b,0xe6,0x12,0x80,0x08,0x73,0x9f,0xfb,0x2f,0x72,0x4e,0x18,0xff,0x65,0xab,0xa6 +.byte 0xaa,0x78,0xf1,0xa4,0xe9,0x1a,0x7d,0xa5,0xdd,0x91,0x77,0xa9,0xa3,0xf3,0xe3,0xe5,0x5a,0xa2,0x0d,0x3a,0x2a,0x4a,0x11,0x9a,0x8d,0xc3,0x00,0x6e,0xd4,0x4f,0xb9,0xe7,0x39,0x78,0x89,0x64,0xb2,0xc8,0xfd,0x1f,0xe6,0xa9,0x54,0x17,0x83,0x3f,0xeb,0x97,0x77,0xac,0xc8,0xba,0x0e,0x77,0x02,0xb0,0x29,0xbe,0x51,0x62,0xef,0xa5,0xd5,0xab +.byte 0x79,0x98,0xab,0x7a,0x1e,0x13,0xe8,0x87,0x4f,0x61,0xa3,0x37,0xdf,0xe6,0xda,0xb9,0xf5,0x69,0xf7,0x7a,0xee,0xd6,0x5f,0x6a,0xb3,0x95,0x55,0x59,0xd1,0x6c,0x5b,0xd5,0xba,0x8b,0x74,0x85,0xbf,0x1e,0xe5,0xb3,0x24,0x28,0x4b,0xc8,0x4a,0xec,0xa1,0x1d,0xda,0x99,0x3f,0xdf,0xfc,0xe6,0x2e,0x1b,0xa4,0xba,0x1a,0x03,0x89,0xb7,0x93,0x4e +.byte 0xaf,0x40,0xb0,0x7e,0x3f,0x34,0x0d,0x94,0x75,0x8c,0x8a,0xfb,0x88,0xcd,0xd3,0xc2,0x61,0x95,0x63,0x51,0xaa,0x78,0x1f,0x24,0x95,0x5a,0xb5,0x98,0x9a,0xd4,0xb8,0x34,0xe1,0x47,0x1c,0x68,0x0f,0x08,0xf1,0x69,0xe6,0xd4,0xaf,0x23,0xf6,0x32,0x71,0x51,0x01,0xa9,0xf2,0xa1,0x45,0x0b,0x75,0x82,0x09,0xe4,0x9c,0x2a,0x1d,0x0b,0xd6,0xd2 +.byte 0x26,0xe8,0x30,0x44,0xdf,0xa3,0x2b,0x97,0x11,0xc7,0xe7,0x47,0xfd,0xc7,0xbf,0x59,0xf3,0x28,0x32,0x46,0xc0,0xc4,0x7a,0x96,0x08,0x0d,0x2c,0xa1,0x82,0x6c,0x0a,0x33,0x82,0x55,0xd7,0xcf,0x3e,0x08,0xbb,0x22,0x15,0x96,0x12,0x66,0xd2,0xae,0x21,0x3a,0x54,0x6a,0xe0,0x33,0x0c,0xa4,0x96,0x4b,0x5d,0xf2,0x86,0xb9,0x70,0xe4,0x65,0x45 +.byte 0xe4,0x2f,0xa7,0xb4,0xc1,0xd5,0x9a,0x02,0xa1,0x5b,0x4e,0x58,0xca,0xf8,0x63,0xae,0x45,0x1c,0xf4,0xa7,0xc8,0xa5,0x84,0x23,0x87,0xcb,0x3e,0x88,0xca,0xe9,0xa9,0x49,0xc5,0xc6,0x63,0x37,0x99,0xe0,0x27,0x03,0x96,0x7b,0x73,0x8c,0x36,0xde,0x89,0x80,0x30,0x2c,0x00,0x94,0x0b,0xfb,0x1f,0x39,0xe0,0xed,0xb6,0x31,0x21,0x90,0xfe,0xa4 +.byte 0xee,0xa5,0xe5,0x7b,0x9a,0x11,0x41,0x51,0xab,0x89,0x54,0xe0,0x8d,0x5f,0x10,0x1b,0x76,0x27,0x77,0x3d,0xb0,0x58,0x86,0x7b,0xb7,0x45,0xfb,0xd0,0x81,0xa8,0xcd,0xc0,0xc8,0x5f,0xfb,0xfe,0x8c,0x0a,0x3d,0x5d,0x61,0x4b,0x9b,0x32,0x75,0x66,0xa9,0xac,0x32,0x35,0xe9,0x1a,0xdf,0x06,0x8d,0x13,0x5d,0x40,0xcb,0x7d,0x50,0x3e,0x54,0xab +.byte 0x04,0xbc,0x83,0x32,0x8f,0xf5,0x93,0x1d,0x9b,0x5a,0xe1,0x19,0x70,0x4a,0xba,0xfc,0x4c,0x6a,0xf3,0xd6,0xd1,0xfd,0x48,0xd0,0x7c,0xa4,0xab,0x0b,0xb6,0x5f,0xe1,0x31,0xce,0x99,0x10,0x98,0xfc,0x6e,0x1c,0xaa,0x9c,0x34,0xa2,0x55,0xdc,0xe0,0x81,0x1b,0x9e,0xff,0x75,0x2e,0x25,0xe9,0x2c,0x20,0x83,0xf6,0x66,0xf9,0x63,0x31,0xfe,0xa7 +.byte 0xbf,0x4d,0xfd,0xff,0x0b,0x93,0x84,0xd4,0xb4,0x72,0x13,0x38,0x90,0x75,0xc9,0xff,0x61,0x4b,0xf9,0x55,0x62,0x58,0xf0,0x60,0xce,0x2d,0xec,0x94,0x06,0x0a,0xde,0x48,0xc0,0x46,0x89,0xfb,0x5c,0xf7,0x9f,0x37,0xad,0xd2,0xff,0xbe,0xfb,0x81,0x21,0xe0,0x20,0x43,0x88,0xad,0x40,0x47,0x7a,0xa9,0x30,0x88,0x10,0x16,0x41,0xf8,0x25,0xe0 +.byte 0x8f,0xc2,0xe3,0x9f,0x48,0xd3,0xfe,0x61,0x70,0xb9,0xa1,0x9e,0xaa,0xa6,0x73,0xcf,0xc3,0xd6,0xab,0x69,0x65,0x4a,0x3c,0xec,0x28,0x02,0x63,0x62,0xa1,0xb6,0xa3,0xd5,0x8c,0x9e,0x11,0x81,0x98,0x12,0x4f,0xec,0xb6,0xe5,0x3a,0x96,0xa1,0x11,0x13,0x77,0x5f,0x0f,0x19,0x40,0x14,0x28,0xcc,0xf1,0x3e,0x19,0x1d,0x78,0x31,0xac,0x5c,0xce +.byte 0xd7,0x29,0xfa,0x02,0x3b,0x29,0xd8,0x3a,0x37,0xcb,0x94,0xb2,0x38,0xc7,0x7f,0x3a,0x46,0xd2,0xb7,0xfe,0xfb,0x54,0x7c,0x01,0xa2,0x9b,0x53,0x57,0x04,0x73,0x4e,0x06,0x90,0xe5,0x78,0x0a,0x45,0x67,0x12,0x83,0xd7,0x31,0x59,0xa4,0x76,0xaa,0x7c,0xde,0x72,0x92,0x11,0x94,0x4c,0x6a,0xe4,0x35,0x35,0x3a,0x2e,0xef,0x7c,0xc1,0x91,0x76 +.byte 0xd0,0xfe,0x84,0xd1,0xa1,0xf9,0x03,0xc3,0xba,0x09,0xbb,0x2c,0xe2,0xb5,0x06,0x7e,0x23,0xb7,0xe0,0xc1,0xd3,0xfd,0x55,0x01,0xf3,0xba,0xc5,0x1b,0xf8,0x02,0x60,0x92,0x0a,0x93,0x1c,0xc4,0x19,0x03,0x88,0xf5,0x45,0xe5,0x8f,0x7d,0xce,0x2c,0x87,0x2e,0xf6,0x55,0x8c,0xf9,0xb0,0xd2,0x72,0x2d,0x93,0x6d,0x28,0x6e,0x8e,0x3a,0xed,0x68 +.byte 0x02,0xda,0x80,0xd0,0x71,0x4a,0x8f,0x06,0x59,0x38,0x89,0x81,0xcb,0x1a,0x74,0x1e,0x62,0xa3,0xa5,0xb8,0x85,0xc3,0xd2,0x04,0x3d,0x3b,0x93,0x36,0x0c,0x12,0x55,0xfb,0x7b,0xc8,0xa3,0x25,0xa7,0x93,0xb0,0x3e,0x49,0x86,0xbf,0x76,0x8f,0xc4,0x4c,0xfe,0xce,0x4a,0xf6,0x2f,0x15,0x33,0x06,0x3a,0x35,0x49,0xe7,0x08,0xff,0x99,0xac,0xf6 +.byte 0x20,0x6d,0xab,0xb2,0x05,0xa9,0xe4,0x06,0x57,0x9c,0xf4,0x76,0x8c,0x82,0x64,0xd5,0x67,0xe0,0xad,0xe1,0x69,0xdc,0x9e,0x2c,0x59,0x92,0x3a,0xc8,0xc1,0x0a,0x61,0x89,0x45,0x9f,0x8b,0xf8,0x64,0x0a,0x5a,0x75,0x55,0x37,0x24,0xe1,0x42,0x43,0x7c,0x9c,0xcd,0x4e,0x9e,0x19,0xfb,0xd9,0x15,0x29,0x30,0x52,0x33,0xf3,0xc8,0x88,0xdb,0xaa +.byte 0x07,0x27,0xfb,0x2b,0x0c,0xc0,0xa1,0x5f,0x51,0xf1,0x54,0xf8,0x90,0x0a,0x35,0x07,0x6e,0x9c,0x64,0xd8,0x4f,0x2d,0xb3,0x61,0xbc,0x18,0x1f,0x22,0x84,0x94,0x4b,0x85,0xfc,0x4a,0xf9,0xe5,0xfc,0xdd,0x7a,0x07,0xa2,0xbb,0xbe,0x7e,0x1f,0x4e,0xf9,0x29,0xb8,0xde,0x56,0xe9,0x04,0xc1,0xc2,0xb6,0xa8,0xc7,0xb6,0x83,0xf2,0x85,0x3d,0x35 +.byte 0xe3,0xeb,0x2f,0x2f,0x3c,0x1a,0x3a,0xf1,0x61,0x1f,0xe8,0xf0,0xce,0xa2,0x29,0xda,0x3f,0x38,0xf5,0x82,0x7a,0xb8,0x55,0xf1,0x1a,0x6e,0x5b,0x5c,0xd0,0xc8,0xc8,0x3a,0xe2,0xaf,0xb4,0x6f,0xba,0xe4,0x03,0x78,0x5f,0x47,0x4b,0xaf,0xfe,0x2a,0x7e,0x27,0xba,0x17,0xb4,0x92,0x27,0x70,0x13,0xd9,0xbb,0x6b,0x1c,0x9a,0x3e,0x29,0x85,0x9a +.byte 0xb7,0x64,0x5b,0x6d,0x7b,0xec,0xb2,0x26,0x3a,0x4b,0xb7,0x17,0xaf,0xb5,0xa1,0xbc,0x4d,0x67,0x4c,0x86,0xd1,0x53,0x2e,0x5d,0x64,0xe8,0x55,0xd9,0xbb,0xae,0xc1,0x55,0x41,0x99,0x8e,0x4d,0xed,0x3d,0x9e,0xea,0xe3,0xf2,0x76,0x45,0x6d,0xaa,0xbb,0x89,0x0b,0xc0,0x13,0xfe,0x99,0x2c,0xb0,0xd2,0xa9,0xeb,0x58,0x57,0x4d,0x88,0x2e,0x04 +.byte 0x4f,0x7a,0x76,0xaa,0x3a,0xa6,0x08,0x93,0x42,0x74,0x2f,0x3a,0x35,0xb0,0x36,0xcc,0x77,0xec,0x54,0x41,0x2e,0x81,0xf6,0x9f,0xf3,0xe7,0x23,0xc0,0x3f,0xa4,0x52,0x83,0x38,0xe2,0x12,0xed,0xdb,0x23,0xa0,0x0b,0xbf,0x61,0x98,0x89,0xb0,0xa4,0x3d,0xa9,0x6a,0x73,0xa1,0x99,0xc9,0x9e,0x68,0x45,0x37,0x4b,0x6c,0x87,0xfb,0x93,0xf2,0xaa +.byte 0xe8,0x1d,0x53,0x6c,0x4b,0xda,0xc5,0x6f,0xaa,0xde,0x99,0xd2,0xba,0x7c,0x27,0xc2,0x4e,0xd5,0x5b,0xc8,0x13,0x9e,0xa2,0x10,0x6a,0xbb,0x39,0xf9,0xa7,0x55,0x0a,0x65,0x88,0x3c,0x9b,0xff,0x83,0x4e,0xf7,0x9c,0x99,0x69,0xbd,0x64,0x0d,0xd1,0xc0,0xb0,0x43,0xd6,0x63,0x50,0x13,0x68,0x8d,0xd1,0x7e,0x56,0x93,0xb5,0x8e,0x8f,0x12,0xe5 +.byte 0x37,0x96,0x21,0x64,0xd5,0x0b,0xf6,0x27,0xf8,0xaa,0x34,0x8e,0xc4,0x2b,0x7b,0x6a,0x7c,0x89,0x4e,0x15,0x15,0x3d,0x17,0x93,0xd4,0x99,0xfe,0x97,0x95,0x20,0x85,0xcc,0xd4,0xcd,0x73,0x67,0x80,0x22,0x06,0xed,0x5e,0xce,0x90,0x59,0x01,0x31,0x24,0x17,0x37,0x4a,0x63,0x96,0xc2,0xf3,0xe0,0x21,0x0a,0x3b,0x9f,0x94,0xad,0xd6,0xa4,0xa9 +.byte 0xa2,0x54,0x0d,0x2a,0xb3,0x5c,0xfa,0xbe,0xeb,0x21,0xd6,0x13,0x22,0xa5,0x95,0x5e,0x25,0x72,0xf9,0x18,0x1f,0x50,0x64,0x04,0x5b,0xe8,0x0e,0x1f,0x6c,0xe1,0x4e,0xf5,0x7f,0xf0,0x13,0x4f,0xda,0x75,0xab,0x5a,0x98,0xd3,0x07,0x32,0x96,0x2a,0xc7,0x1e,0x0f,0x14,0xdb,0x96,0x5f,0xac,0xc1,0xef,0x5b,0x2d,0xd6,0x6d,0x13,0x01,0xd9,0x04 +.byte 0x9c,0xcd,0xe5,0x5e,0xbe,0x3a,0x47,0x14,0x09,0xbe,0x11,0xad,0x87,0x3f,0x0e,0xe1,0xcb,0x97,0xd0,0x6e,0x1f,0x49,0x07,0xd1,0x8c,0x2b,0xe0,0xf0,0xb2,0xaa,0x8b,0x70,0x18,0x7f,0x29,0xcc,0xc4,0x23,0x66,0x48,0xc4,0xb5,0x5e,0xf1,0x10,0xd7,0x1d,0x2a,0xba,0xe4,0x12,0x64,0x1d,0xf5,0x03,0x35,0x71,0x57,0x5d,0xf4,0xa4,0xb5,0x99,0x0b +.byte 0x4c,0x80,0x65,0x07,0x2f,0xbc,0xf7,0x28,0x8b,0xc0,0x8f,0x84,0x63,0x7e,0xf5,0x01,0x23,0x8c,0xaf,0x71,0x35,0xd4,0xe1,0x70,0xc7,0xef,0x1f,0x66,0xa9,0x34,0x57,0xaa,0x9a,0xbb,0x80,0x43,0x15,0x96,0xc4,0x03,0xd9,0xae,0xbe,0x89,0x1c,0xa1,0x9f,0x65,0x61,0xe5,0x90,0x9f,0xa6,0xf4,0x3b,0xde,0xa1,0xd1,0xf1,0xf9,0x2d,0xd7,0xa7,0x7e +.byte 0x3d,0x42,0x3d,0x1b,0x99,0xed,0x49,0x2e,0x92,0x6b,0x47,0x0e,0x0b,0x90,0x56,0xe0,0x1b,0x6b,0xfe,0x97,0xfe,0x9b,0xa2,0x50,0xcc,0xbf,0xea,0xae,0xe8,0xf0,0xc4,0xe5,0x81,0x20,0x4a,0xb0,0xf7,0xa5,0x23,0x24,0xf6,0x3f,0x9e,0x9c,0xcc,0xce,0xe4,0x95,0x49,0xea,0x66,0x4a,0x35,0x31,0xf3,0x03,0xc3,0x08,0xf9,0x5f,0x95,0x4c,0xbc,0x84 +.byte 0x13,0xbe,0x7f,0x35,0xbb,0xd7,0x35,0x3c,0xfb,0x05,0x43,0x95,0xbf,0x87,0xf2,0xc3,0x2d,0xef,0x13,0x1d,0x65,0x17,0x82,0x75,0x3d,0x67,0x51,0xcd,0x6e,0x42,0x5f,0x49,0x53,0x8b,0xaf,0x34,0x7d,0xa8,0xc1,0x45,0xcd,0x3d,0x29,0x00,0xa3,0xf3,0xbb,0x44,0x00,0x05,0x57,0xa5,0xeb,0xfd,0x98,0xa6,0xae,0xc6,0xc4,0x6c,0x6d,0x7d,0xf6,0x3e +.byte 0x82,0x1d,0x12,0xe7,0xcd,0xd2,0xd5,0xfe,0x41,0xf8,0xa4,0xb3,0x6a,0x04,0x13,0x28,0x10,0x40,0x27,0xc9,0x43,0x74,0xcf,0xaf,0x9b,0x60,0x17,0x43,0x8f,0xd7,0xb7,0x56,0x72,0xf3,0x48,0x0a,0xe6,0x36,0xf2,0x3f,0x51,0xf9,0x6e,0xc8,0xa3,0x04,0x8c,0x01,0x86,0x6e,0x83,0x27,0xe2,0xba,0xf2,0x8f,0x8f,0xa1,0x39,0xe7,0x17,0xdd,0x06,0x10 +.byte 0x0c,0x7f,0xfa,0x22,0x5d,0x88,0x35,0xc6,0xcd,0x60,0xa2,0xf0,0xfd,0xc9,0xed,0x85,0xac,0x88,0xfd,0x7d,0xc0,0x77,0x1b,0x80,0x3d,0x21,0x1e,0x8e,0x4d,0xdb,0x20,0xe2,0x38,0xad,0xd4,0xb5,0x2b,0x2b,0x31,0xbc,0x7b,0x02,0xa2,0x25,0x50,0xc0,0x01,0x20,0x76,0x6f,0x98,0x0b,0x3d,0x46,0xed,0xbb,0x2b,0x39,0x74,0x30,0xce,0x3e,0x6d,0x91 +.byte 0xa1,0x89,0x83,0xde,0x69,0x93,0x1a,0x14,0xa1,0xb0,0xaa,0x80,0xb0,0x1c,0x02,0x3f,0x13,0x9a,0x15,0x7f,0xb4,0x02,0x8f,0x30,0x0b,0xee,0xd9,0x72,0xcb,0x74,0x95,0x4a,0x39,0xb3,0x4e,0x78,0x12,0xb1,0x77,0x89,0xc0,0xaf,0x17,0xfd,0xc1,0x68,0x65,0xd1,0x08,0xae,0x56,0x5c,0xe0,0xe7,0x6f,0xb3,0x1e,0x10,0xce,0xd8,0xdf,0xee,0x67,0xad +.byte 0xd8,0x08,0xe0,0x79,0x36,0xe4,0x57,0x1c,0x45,0x22,0xa7,0x44,0xa8,0x12,0x37,0x92,0x85,0x9f,0x3a,0x48,0xd0,0xfd,0xb3,0x40,0x20,0x10,0xed,0x11,0xe0,0x9a,0xa6,0x09,0x5b,0xe9,0x21,0x95,0xe1,0x45,0x19,0x39,0xcc,0x85,0x5f,0xa5,0x6b,0x46,0x37,0xe1,0xa1,0x17,0x3f,0xb6,0xe9,0xb0,0x81,0x25,0xf6,0xd1,0xb8,0x22,0x5a,0x27,0x48,0x83 +.byte 0x01,0x36,0xd4,0xb8,0xc0,0x9f,0x37,0x52,0x22,0xd2,0x69,0x7b,0x3d,0xfb,0x31,0xc1,0xa3,0xb4,0xa1,0x1d,0x0e,0x24,0x9a,0xda,0x02,0x15,0x4b,0x46,0x24,0x0e,0xb1,0x79,0xc2,0x5b,0x01,0x60,0x4a,0x24,0x8a,0xbb,0x70,0xaa,0xf4,0x45,0xc1,0x0d,0x04,0x26,0x3f,0x74,0xbd,0xdd,0x33,0xaa,0xd6,0x62,0x56,0xb1,0xe7,0x2d,0x7b,0x66,0xa2,0x40 +.byte 0xb4,0xe4,0xbd,0x8e,0x35,0xba,0xf1,0x2f,0x59,0xa7,0x01,0x6d,0x5a,0xa7,0xa6,0x3b,0x82,0xa3,0xb4,0x54,0x51,0x33,0x6b,0xfb,0x78,0x4a,0x74,0x88,0x7f,0x55,0xea,0x08,0x8e,0x19,0x78,0xbc,0x80,0x19,0x2f,0x41,0x97,0x20,0xa0,0x9e,0xbf,0x44,0xae,0x2e,0x26,0x66,0xe3,0x25,0xa0,0x92,0xa9,0xbe,0x8c,0x0d,0x96,0xec,0x93,0x99,0xe2,0xe7 +.byte 0x81,0xd5,0x10,0x62,0x3a,0x97,0x38,0x51,0x36,0x11,0x00,0xe0,0xc1,0x3a,0xc5,0xd4,0xa5,0x19,0xf4,0x82,0x66,0x0c,0xf9,0xb3,0x04,0x3e,0x57,0xc3,0x43,0xab,0xc6,0x52,0x95,0x8f,0xd3,0xf1,0xde,0xd9,0x57,0x6d,0x32,0x4f,0xc7,0x8c,0x1b,0x7a,0x53,0x6a,0xcf,0x56,0xea,0x61,0xb4,0xe5,0x64,0x2d,0x02,0x26,0x5b,0xcf,0x1c,0xc7,0x37,0xc3 +.byte 0x41,0xd2,0x1b,0x6c,0x5b,0x47,0xb8,0x73,0x89,0xfe,0x0e,0x7a,0x35,0x05,0xfc,0xea,0x6a,0x34,0x74,0x69,0xf0,0x12,0x29,0xa9,0x33,0xce,0x93,0x15,0xa0,0x68,0xb3,0x46,0x43,0xdb,0x8d,0xfa,0xef,0x93,0x66,0x72,0x18,0xae,0xe4,0xab,0xf4,0x8a,0xd1,0xb5,0x42,0xbd,0x2d,0xda,0xcb,0xf6,0x44,0x25,0xb1,0x01,0x8a,0xff,0xd5,0x34,0x16,0xec +.byte 0x7e,0x38,0x7b,0x50,0x41,0x61,0xf9,0xdf,0x4c,0x3e,0x02,0xd6,0xc3,0xce,0x19,0x9f,0x12,0x45,0x0c,0x99,0xb1,0xd9,0xeb,0xb9,0xe3,0xd5,0xb6,0x2b,0x25,0x8c,0x0b,0x04,0xf8,0x8d,0x41,0x41,0x3d,0x39,0x1b,0x7f,0x88,0xa7,0x8f,0x61,0x30,0xfe,0x67,0x75,0x35,0xd1,0x41,0x90,0xda,0x73,0x80,0xcf,0xc9,0xf6,0x44,0x00,0x67,0xcd,0xca,0xaf +.byte 0x6d,0x84,0x39,0x9a,0xb2,0xbb,0xfc,0xac,0x9b,0xb2,0x95,0x2f,0xc9,0x06,0x3a,0xa4,0x7b,0x9a,0x25,0xc6,0xe5,0xdb,0x7a,0xc6,0x8b,0x84,0x6a,0xb7,0x1e,0x22,0xaa,0x10,0x96,0xd3,0x55,0x50,0xa2,0x02,0x04,0x69,0x92,0xd7,0x6b,0x1f,0x9b,0x45,0x07,0x71,0xda,0xdc,0x76,0xc5,0xb8,0x34,0xa2,0x32,0x33,0x16,0x2e,0xb0,0x2a,0x90,0x43,0x40 +.byte 0x92,0x77,0x74,0x4e,0xdc,0xb4,0xe2,0x7d,0xc1,0x57,0xaf,0xf4,0x2c,0x20,0x65,0x77,0x88,0xc9,0x6e,0x69,0x38,0xc8,0x19,0x95,0x32,0x54,0x59,0x7f,0x37,0xd7,0x3c,0x07,0x05,0x87,0x2b,0xf9,0x58,0x74,0xc7,0x61,0x13,0x3d,0xc2,0xd9,0xec,0x3b,0x36,0x9f,0x8e,0xae,0x52,0xdd,0x5c,0xaa,0x29,0x6b,0x31,0x34,0x48,0x61,0x34,0x62,0x56,0xce +.byte 0x25,0xa8,0xc0,0x62,0xf5,0x35,0x58,0x4d,0x8e,0x61,0xd4,0xae,0x25,0x50,0xee,0x45,0xdd,0x14,0x7d,0x46,0x81,0x47,0xc3,0x3f,0x3f,0x81,0xdb,0x9a,0x59,0x56,0x4f,0x45,0xed,0x9c,0xe2,0xfc,0x96,0xff,0x5d,0x37,0x70,0xad,0xd2,0xeb,0xd9,0x2d,0x2a,0xaf,0xb9,0x16,0x4a,0x79,0x5d,0x76,0xb5,0x8f,0x74,0x19,0x6f,0x74,0x7d,0x4a,0xee,0x83 +.byte 0xa5,0x81,0xf3,0xd5,0xa0,0x43,0x5e,0x46,0xba,0xbe,0x49,0xa8,0xce,0x72,0x36,0x32,0xcd,0x8c,0x9b,0xa0,0xf9,0x5d,0xb7,0xb9,0xc7,0x8c,0xb2,0x59,0xb4,0x44,0xc1,0x90,0x53,0x92,0xd2,0xa8,0x4c,0xf9,0x35,0x40,0x32,0xd1,0xf0,0x2f,0xcb,0x6a,0x0b,0xe0,0xbe,0x34,0xc9,0x82,0x18,0x8d,0xfb,0xfc,0x50,0x8d,0x67,0xd5,0x86,0xd4,0xf1,0xb1 +.byte 0xaa,0x2f,0x9c,0xbc,0x52,0xbb,0x9f,0x17,0x1c,0x74,0x1d,0xdf,0x2d,0x1a,0x94,0x43,0x9b,0x80,0xb9,0x48,0xa3,0xaf,0x4b,0x30,0x0d,0xd9,0x3f,0x11,0x48,0x79,0x60,0xcc,0x25,0x6a,0xdb,0x8a,0xda,0xab,0xda,0x09,0x7c,0x9c,0x4a,0xaf,0xf9,0x0d,0xfb,0x7a,0x92,0x61,0xa5,0x17,0xf8,0x79,0x1b,0x00,0x52,0x56,0x5e,0x27,0x22,0x37,0xf4,0xbe +.byte 0x52,0x36,0xd3,0xdc,0x9a,0x33,0xf5,0x44,0x0e,0x53,0x0b,0xf6,0x9b,0xb0,0xb6,0x11,0xe4,0xd5,0x45,0x2e,0xdc,0xdb,0x46,0x18,0x9a,0x90,0x8b,0xcc,0xfe,0xc6,0x94,0x4f,0x97,0xb9,0x42,0xb6,0xd3,0x8f,0x7c,0x20,0xd1,0xa8,0xe6,0x85,0xce,0x65,0xeb,0x95,0x38,0x11,0x5c,0x1a,0x9d,0x34,0x25,0xc2,0xf0,0x33,0xbb,0x2c,0xc9,0x8d,0x0a,0x7a +.byte 0xb1,0x90,0x9f,0x24,0xed,0x35,0x3c,0x7e,0x71,0x82,0x12,0x3a,0x79,0x29,0xc8,0xa7,0x3e,0xa2,0x4e,0x50,0x03,0x94,0x7a,0x94,0xb7,0x2b,0x61,0x95,0x3d,0x5e,0x60,0x1c,0x68,0x51,0x82,0x73,0xe0,0x4a,0x2a,0x48,0x26,0xda,0xa3,0x53,0x8c,0x83,0xba,0x9f,0x95,0x37,0x5e,0x68,0x54,0x19,0x21,0xf8,0x31,0xaf,0x6b,0xfc,0x3a,0x3e,0xe3,0x3f +.byte 0xdb,0x16,0xb5,0x7e,0x13,0xf8,0xfd,0x7f,0x36,0xd6,0x8e,0x33,0xaa,0xe9,0xa4,0xa7,0xfd,0xf0,0x32,0xa6,0xdf,0xfa,0x22,0x7d,0xff,0x2a,0xe6,0x0d,0x6f,0xe2,0x21,0x54,0x6c,0x1a,0x99,0x17,0x56,0xad,0xce,0x39,0x6b,0x1a,0xe8,0x27,0x13,0x12,0x9c,0x4b,0x84,0x69,0x73,0xde,0x44,0x14,0xb2,0x7c,0x44,0x54,0x91,0x4f,0xeb,0x83,0xec,0x04 +.byte 0x73,0x85,0xb1,0xa8,0x44,0x72,0xa7,0x77,0xaf,0x0c,0xe0,0x52,0x65,0x04,0xe7,0x2a,0xee,0x0c,0x20,0x83,0x32,0x34,0x17,0x00,0x61,0xf9,0xf5,0x42,0x03,0xa4,0xb8,0x02,0x6f,0xb2,0xd3,0x65,0x51,0x2a,0x8e,0xdf,0x28,0x78,0x8a,0x8a,0x00,0xfb,0x24,0xd6,0xd5,0x86,0xaa,0xfb,0x86,0x93,0x5d,0x11,0xa4,0xf3,0xfd,0x36,0x18,0xf3,0x61,0xea +.byte 0x33,0xa8,0x0c,0xf0,0xb4,0x68,0xee,0xd3,0xe3,0x4f,0x22,0x24,0xde,0x1f,0x29,0x84,0x8b,0x5b,0x73,0x15,0xd6,0x62,0xa3,0x71,0x7d,0xf0,0x65,0x36,0xca,0x68,0x8a,0x6d,0x61,0x9c,0x0d,0x53,0xdd,0xf4,0x12,0xb3,0x5f,0xf0,0xb1,0x86,0xd6,0xe2,0xd6,0x80,0x4a,0x01,0x09,0x99,0x65,0xdb,0xae,0xe6,0xfc,0x68,0x5b,0xf9,0x10,0x99,0x8b,0x9f +.byte 0x08,0x52,0x09,0xae,0x59,0x4d,0x6c,0xf9,0x91,0x2b,0x57,0xea,0xf0,0xa3,0xdb,0xb8,0x99,0x29,0x2f,0xab,0x95,0x01,0x7d,0xec,0xd8,0x77,0x73,0x75,0x4f,0x88,0x44,0x69,0x76,0xc9,0x3c,0xf0,0x2d,0x7b,0x0d,0xbe,0xd4,0x88,0x0d,0xbc,0xa0,0x52,0xf4,0x2a,0xd1,0x62,0x2a,0xa9,0xe2,0x41,0x2f,0x52,0xce,0x96,0x7d,0x65,0x9b,0x74,0x82,0xde +.byte 0x43,0x4d,0xf8,0x8e,0x77,0x1c,0x18,0xf5,0x7e,0xab,0x94,0x3e,0xe7,0x90,0x2b,0xa1,0x16,0x00,0x7f,0x9c,0x9d,0x86,0xd1,0x74,0x7e,0xf7,0xbd,0x5a,0xa7,0x2f,0x0f,0xb0,0x5c,0xfc,0xfb,0x59,0x00,0xf3,0x84,0x09,0x77,0x66,0x17,0xf6,0x5d,0x0e,0xe2,0xe2,0xd4,0xb3,0x9e,0x79,0x88,0x66,0xa5,0x8e,0x30,0xae,0xca,0x7e,0x2b,0x32,0xa2,0x89 +.byte 0xe9,0x7e,0x59,0x21,0xd5,0x99,0xc7,0x10,0xa8,0x6f,0x95,0x8d,0x84,0xb4,0xcf,0x61,0xe7,0x5c,0x09,0xf3,0xbc,0xeb,0xf6,0x0c,0x84,0x1a,0x8d,0x13,0xf8,0x49,0x22,0xeb,0x09,0x55,0xef,0x56,0x12,0x21,0xcb,0x61,0x87,0xbf,0xef,0x43,0x5b,0x82,0xa8,0xc2,0xa2,0x5e,0xad,0x54,0x9a,0xcc,0x95,0xa2,0x01,0x05,0xb2,0xbb,0x26,0xa8,0xfd,0x6b +.byte 0x66,0x95,0x9c,0x0b,0x7b,0x23,0x32,0xff,0xdd,0x6c,0x18,0x1e,0x77,0x01,0x3c,0x82,0xaa,0x97,0x28,0x0f,0x93,0xa5,0x6c,0x85,0xe5,0x94,0x40,0xe0,0xa3,0x01,0x57,0x56,0x43,0x40,0xdd,0xa9,0xaf,0x21,0x79,0x10,0x8b,0xff,0x4b,0x51,0xe4,0xa2,0xe5,0xd7,0x0c,0xe2,0x9e,0x1e,0x38,0xdb,0x64,0xe1,0xb1,0x5b,0xe5,0x40,0xab,0xf6,0x05,0xd2 +.byte 0xba,0x85,0x78,0x61,0x2d,0x2e,0x07,0x06,0x6d,0x86,0x59,0xaa,0xd9,0x2c,0xfb,0x83,0x34,0xd0,0x2d,0x1d,0xad,0x5f,0xe4,0xac,0x05,0x46,0x3a,0x7b,0xd9,0xef,0x9f,0x2b,0x0c,0x18,0x21,0xf1,0x24,0x8a,0xb4,0x6e,0xd2,0x98,0x75,0x08,0x96,0x0c,0x7b,0x41,0xb7,0xf7,0x1f,0xcd,0xa8,0x1f,0x44,0xb1,0xed,0xdc,0x0e,0xcb,0x94,0xa0,0xb8,0x62 +.byte 0x67,0xdc,0x24,0xde,0x9e,0xe9,0x89,0xcd,0x92,0x7c,0x91,0x15,0xff,0xbd,0xfd,0xee,0xf8,0x29,0xd7,0xf9,0xe8,0x51,0xe7,0xc8,0x21,0xc5,0x20,0xe4,0xb8,0xa6,0xdb,0xfb,0x09,0x65,0x1c,0x3b,0x9e,0x39,0x44,0xcf,0xf5,0xc2,0x7b,0xf3,0x14,0x7d,0x69,0xf2,0xd0,0x97,0x63,0xf1,0xa7,0x81,0x56,0xfb,0xdf,0x4d,0x83,0x55,0x4f,0xde,0x50,0x7d +.byte 0xfe,0xb0,0xc0,0xc8,0x3b,0x3d,0x78,0x74,0x58,0x74,0x5e,0xfc,0xb7,0x0d,0x9a,0x26,0x3b,0x39,0xb6,0xf7,0xe0,0xe4,0x12,0x3c,0xd6,0x88,0x1c,0x9b,0x51,0x89,0xe7,0x53,0xcd,0x24,0x2e,0x34,0xa2,0xee,0xfa,0x5a,0x87,0xe5,0x7e,0xd5,0xf2,0x2f,0x15,0x99,0x57,0x5d,0x31,0x02,0xf8,0x08,0x38,0xea,0x8c,0x30,0x21,0xb0,0xff,0x94,0x51,0xcf +.byte 0x23,0xb7,0x02,0x5d,0xa3,0x75,0x7f,0x9d,0x66,0x49,0xe5,0xbe,0xc7,0x06,0x5e,0x1d,0xc9,0xe2,0x82,0x8a,0xc4,0x17,0x83,0x7e,0x65,0x6d,0x85,0x26,0x66,0xc0,0xf4,0xa5,0x1c,0x6e,0xba,0x32,0xfa,0x41,0x7b,0x2b,0x64,0x98,0x58,0x8c,0xce,0x2f,0xf3,0x56,0xf0,0x67,0xef,0x73,0x79,0xc4,0xc2,0x07,0xd7,0x85,0x1d,0x75,0x38,0x1e,0x15,0x82 +.byte 0x9d,0xf3,0xdd,0x3a,0x72,0xa3,0x23,0x0e,0x4a,0x1a,0x3a,0x97,0xc8,0xf1,0xf1,0x58,0x5d,0x1f,0xae,0x6d,0xc8,0x03,0xe0,0x7b,0x0f,0xf5,0x6f,0x35,0x41,0x8d,0xd5,0x03,0x85,0xdd,0xeb,0x3d,0x73,0xb1,0x93,0x35,0xc0,0x0f,0xfb,0x42,0xd4,0xf1,0x6b,0x35,0xe2,0x96,0xc5,0xd9,0xf2,0x69,0xbb,0x70,0x5e,0xf0,0x0c,0xe6,0xb5,0x81,0x94,0xc9 +.byte 0x29,0xa1,0x34,0x89,0xd9,0x9c,0x49,0x01,0x37,0x56,0x16,0x30,0x47,0x6f,0xe4,0x7c,0x5b,0xdd,0xfb,0x80,0x7f,0x0c,0x38,0x53,0x3d,0x57,0xf7,0xc4,0x80,0xf9,0x12,0x3a,0x9f,0xf9,0xb0,0xb6,0x94,0x6d,0xde,0x41,0x4e,0x30,0xac,0x1f,0x25,0x34,0xa0,0x95,0xe8,0x00,0x86,0x32,0x40,0xbb,0xc1,0x49,0x2d,0x07,0x49,0xb8,0x5f,0xcd,0x1b,0xd3 +.byte 0x0e,0x0c,0x54,0x0f,0xe4,0x20,0xe5,0xa1,0xed,0x98,0x65,0x5a,0xe7,0xce,0x68,0x9c,0x4c,0x48,0x03,0x9c,0x5b,0x68,0x4b,0x75,0x71,0x11,0x40,0x69,0xca,0x9a,0x3a,0xb2,0x3d,0x35,0x2c,0x70,0x35,0x8b,0x80,0x53,0x86,0x30,0x7d,0x4c,0xe9,0xc0,0x30,0x60,0xd0,0x06,0xbe,0xc2,0xad,0x39,0xcc,0xb2,0xec,0x90,0xcc,0xbd,0x7c,0xb5,0x57,0x20 +.byte 0x34,0x2e,0xfc,0xce,0xff,0xe3,0xd9,0xac,0xb8,0x62,0x6b,0x45,0x22,0x34,0xdf,0x8e,0x4b,0xf1,0x80,0x28,0x8d,0x0f,0xd5,0x3b,0x61,0x3e,0x91,0xa1,0xb1,0x85,0x27,0x78,0x88,0xbc,0xc4,0xb1,0xa1,0xbe,0x4f,0xc3,0xfd,0x1f,0xb9,0x30,0x31,0x2f,0xc1,0x9d,0xa3,0xb6,0x29,0xa4,0x60,0x82,0x73,0x93,0x74,0xea,0x97,0x67,0xf2,0xa3,0x97,0x50 +.byte 0x2f,0x9f,0x7b,0x23,0x18,0xb6,0xb4,0xee,0x15,0xa0,0xa4,0x07,0x1a,0xe9,0xb6,0x63,0x7e,0x88,0x40,0x57,0x86,0x79,0x6b,0x75,0xbe,0x57,0x8f,0xfe,0x0d,0xdf,0x4c,0x7f,0x39,0x9a,0x97,0xa6,0x87,0xc5,0xfd,0x52,0x77,0x36,0xc9,0x66,0x63,0xcf,0xc7,0x34,0x3b,0xf4,0x7a,0x12,0x56,0xf0,0xbc,0x7a,0x1a,0xa2,0xa2,0x51,0xb8,0xc1,0x70,0x81 +.byte 0xcf,0x1d,0xb5,0xe2,0x82,0xbb,0xfc,0xa3,0x80,0x18,0xf8,0x4b,0x76,0x9c,0xdf,0x9d,0x6c,0xf1,0xd8,0x2a,0xab,0x0c,0x12,0x02,0x29,0x09,0xfd,0x28,0xfb,0x57,0x38,0x05,0x2c,0xc5,0x67,0xd1,0xaa,0xbc,0x98,0xe6,0x22,0x78,0x06,0x4f,0x69,0x6a,0x63,0x1a,0x13,0x0b,0xa5,0xd2,0x61,0xc7,0x45,0x5b,0x21,0xab,0xbf,0x7b,0x7f,0x8c,0x2c,0xba +.byte 0x93,0x9f,0x41,0x67,0xc4,0x5f,0x53,0xac,0x90,0x05,0x86,0xb5,0x80,0x1f,0x5b,0x35,0x4f,0x92,0xf5,0xa8,0x5f,0xfb,0x56,0xdd,0x2d,0x9b,0xea,0xcb,0x0f,0x98,0x3c,0x4e,0xf1,0xa5,0x2c,0x37,0x70,0xe3,0x5c,0xaf,0x96,0x36,0xa8,0x2a,0xec,0xe0,0x2c,0x00,0xcd,0xaf,0x03,0x1d,0x05,0x2f,0x8c,0xe7,0xfe,0x4d,0xe9,0x97,0x6d,0xe1,0xf9,0x23 +.byte 0x60,0x08,0xea,0xfb,0x27,0xc8,0xf9,0xdf,0x49,0xfe,0xd9,0x48,0x35,0x6b,0x43,0xc5,0x19,0x90,0xb1,0xf1,0xee,0x84,0x7a,0x57,0xfa,0xa5,0xd6,0xd8,0xc9,0xf0,0x8a,0xe7,0x13,0x84,0xfc,0x28,0x54,0xae,0x99,0xfd,0x91,0xbe,0x91,0x27,0x98,0x28,0xdc,0xd7,0x2e,0xc1,0x21,0xcb,0x31,0xf8,0x47,0xe6,0x77,0x6d,0xee,0x7b,0x12,0xe4,0x9e,0x9d +.byte 0x07,0x46,0xa9,0x15,0x0b,0x3c,0xbe,0xc7,0x2d,0xe5,0xd6,0x25,0x4c,0xea,0x61,0xdc,0x18,0xb2,0x9d,0xb0,0x9a,0xff,0xa3,0x5f,0x2b,0xab,0x52,0x7d,0x1b,0xc3,0xa3,0x41,0x8f,0x5a,0x29,0xbd,0xc4,0x56,0x54,0x43,0x2d,0x61,0x07,0xed,0xd1,0x81,0x45,0xdb,0x61,0x0f,0xda,0xea,0xa6,0x1e,0xf9,0x9c,0xc0,0x8c,0xc4,0x8e,0xc7,0xca,0x38,0xe2 +.byte 0x45,0xde,0xdc,0xc5,0xc6,0xb0,0x43,0x17,0x8b,0xb1,0x58,0xd1,0x10,0x8e,0xa5,0x17,0x37,0x85,0xca,0x61,0x67,0x5c,0xd0,0x72,0x22,0x6b,0xd3,0x3b,0x53,0xbc,0xfb,0xe1,0x1e,0xa4,0x1b,0xd3,0xc3,0x8a,0x50,0x03,0x39,0xf5,0x36,0xdf,0x51,0x2e,0x05,0x4a,0xa8,0xdb,0x91,0x87,0xae,0xfe,0x3f,0x5c,0x35,0x5e,0xf9,0x8f,0x43,0x9e,0x92,0x36 +.byte 0x91,0x27,0x90,0xe8,0x7c,0xcc,0xc4,0x9c,0x13,0xbb,0x61,0x40,0xec,0x4f,0x49,0xcf,0x04,0x38,0x77,0x3b,0xb5,0xf8,0x69,0x8d,0xbb,0xb2,0x30,0x32,0x42,0x4d,0x7d,0x6c,0x56,0xdc,0xf4,0x8f,0xfc,0xb8,0x53,0xc5,0x11,0x17,0x23,0x94,0xf9,0x6d,0x6f,0xee,0xee,0x31,0xbf,0xce,0x11,0x8b,0x9e,0xd7,0xa5,0x09,0x36,0x89,0x72,0x25,0x18,0x1f +.byte 0x13,0xa7,0xdf,0xc5,0x91,0x7e,0xd6,0x2b,0xb8,0x08,0x9c,0x12,0x83,0x21,0x97,0x3d,0xad,0xac,0x1c,0x54,0xf3,0x65,0x04,0x2f,0x09,0xd1,0xd2,0xe5,0xce,0x24,0xb1,0xd9,0xe4,0x38,0x1f,0xb4,0xce,0xea,0x27,0x7f,0x5f,0x16,0x52,0xa4,0x2f,0x2f,0xaf,0x91,0xec,0x7a,0x21,0xf7,0xa1,0x38,0x78,0x78,0xc5,0xa9,0x94,0x63,0x87,0xf8,0x95,0x9e +.byte 0xf9,0x82,0x98,0x6d,0x9d,0x48,0x80,0xaa,0x7a,0x36,0xf9,0x5f,0xfb,0x39,0x3d,0xae,0xbc,0xcd,0xfc,0x67,0x46,0x07,0x7e,0xdf,0xef,0xff,0x8d,0x67,0xe7,0xd9,0x60,0x90,0x7b,0x49,0x10,0x65,0x3a,0x60,0x87,0x7a,0xed,0x9a,0x44,0x48,0x81,0xcc,0xad,0xe4,0x6a,0x62,0xf8,0x02,0x6f,0x41,0x8a,0x8d,0x44,0x28,0x1a,0xb8,0x52,0x60,0x4b,0x3f +.byte 0xfc,0xdd,0x33,0xad,0x14,0xb1,0x34,0x63,0x1f,0xdc,0xeb,0x9a,0x3f,0x99,0x82,0x28,0x36,0x6f,0x8e,0xd7,0x39,0x2e,0xc0,0x37,0xfb,0xad,0x57,0x6c,0x82,0x1a,0xc6,0xe4,0x4b,0xca,0x00,0x68,0x57,0x34,0xf0,0x57,0x6a,0xcb,0x50,0x5d,0x8d,0xfa,0xcd,0x89,0x41,0x91,0x23,0x98,0x1f,0x4f,0x18,0xb6,0xd2,0x9d,0xde,0x2f,0x5c,0xe6,0x08,0x76 +.byte 0x97,0xba,0x24,0x4e,0x84,0xd7,0xeb,0x80,0xde,0xec,0xee,0x51,0x5a,0x0e,0x5f,0xb7,0x37,0xda,0xa5,0x94,0x2b,0x6d,0x73,0xb7,0x6c,0x22,0x95,0x3a,0xaa,0x5c,0x6f,0x89,0x90,0xec,0xb3,0x31,0x00,0x37,0x28,0x18,0xbb,0x98,0x23,0xfc,0x3e,0x21,0x7c,0xaa,0x44,0x54,0x7b,0xe6,0xa0,0x17,0x58,0xef,0x11,0x3f,0x48,0xb8,0xa8,0x15,0x4a,0x92 +.byte 0xa9,0x39,0xe2,0xa6,0x38,0x03,0xa6,0xd3,0x79,0x8b,0x38,0x06,0xaf,0x4b,0xd4,0xab,0x0a,0x13,0xff,0x2d,0xfa,0xab,0x4b,0x64,0x9e,0xb0,0x3d,0xba,0x18,0x01,0xfd,0xc3,0x6a,0x6f,0x21,0x9c,0xf5,0x2f,0xab,0x2d,0x42,0x12,0xc9,0x72,0xde,0x83,0x42,0x6a,0xf0,0xd4,0x96,0x73,0xf1,0x93,0xa3,0x2d,0x9b,0xb4,0x94,0x51,0x0c,0x6e,0x8e,0xf0 +.byte 0x5e,0xbf,0x98,0xbf,0x08,0x0f,0xd8,0x6c,0x65,0x4e,0xb5,0x47,0xeb,0x7c,0x1b,0x73,0xe0,0xe6,0x2c,0x03,0xd2,0x2a,0x32,0xff,0xa7,0x03,0x6d,0x38,0x47,0x56,0x4b,0x25,0x0b,0x39,0x73,0x87,0x4b,0xa5,0x12,0x79,0x79,0xf3,0x88,0x37,0xe2,0x4f,0xb8,0xbf,0x70,0x0e,0xf7,0x8c,0xe6,0xa3,0xbc,0x35,0x10,0xcd,0x72,0x56,0xd6,0x83,0xc1,0x0b +.byte 0x5b,0xf3,0xa8,0x74,0xc7,0xb9,0x84,0xc8,0x6c,0xff,0x66,0xad,0x95,0x6f,0xbc,0x82,0x84,0x2a,0x11,0x40,0xf9,0xa8,0x3f,0x05,0xf9,0xab,0x19,0x55,0xce,0x80,0x90,0x65,0x49,0x3d,0xe1,0x54,0x2c,0x1a,0xdb,0xf3,0xaa,0x2f,0xeb,0xf5,0x10,0x1f,0x8c,0x35,0x46,0x68,0xb1,0x4c,0x52,0xe7,0xe9,0x58,0x78,0x33,0xfd,0xc6,0x13,0x0e,0x69,0xae +.byte 0xf4,0x1a,0x8a,0x77,0x8f,0xcc,0x98,0x74,0x88,0x20,0x84,0x5b,0x83,0x54,0xa9,0xee,0xc2,0x0f,0x8a,0x46,0xb1,0xc7,0xfb,0xfd,0xf2,0x2c,0xaf,0xfa,0x72,0x34,0x7a,0x79,0x50,0x10,0xc6,0x04,0xfd,0x0a,0x1e,0x4a,0xb5,0xf5,0xe7,0x4d,0x98,0x80,0x5d,0x0b,0x81,0x23,0xc3,0x6e,0xbf,0xc8,0xcd,0x35,0x96,0x5a,0x58,0xec,0xef,0x6a,0x8d,0x48 +.byte 0xda,0x48,0xbb,0x8f,0xcc,0x1f,0x86,0xff,0x7a,0x27,0xef,0xe6,0xb7,0xc7,0x2a,0x47,0x8d,0x6c,0x4a,0xc6,0x0a,0x32,0x67,0x1d,0x2f,0x83,0x3d,0x46,0x41,0x46,0x1c,0x75,0x7b,0x29,0x89,0xa2,0x65,0x9b,0x53,0x3d,0xd9,0x90,0x83,0xce,0xab,0x07,0xbb,0x46,0x61,0xb1,0x54,0xbd,0xc9,0x98,0xf7,0x96,0x76,0x03,0xdc,0x1f,0x1b,0xf2,0x5c,0x07 +.byte 0xdd,0x24,0x94,0x72,0x1e,0x94,0xb1,0x14,0x0b,0x40,0x77,0xde,0x3d,0x3f,0x1c,0xf0,0x8f,0xa4,0xcb,0x34,0xb5,0x2b,0x72,0x53,0x78,0xf3,0x3f,0x8e,0x47,0x30,0xb2,0x7e,0x73,0x3f,0x9a,0xef,0x19,0xb1,0xef,0x82,0x99,0xd4,0x17,0x60,0x94,0xf6,0x15,0x75,0x50,0x1f,0xb3,0xdd,0xae,0x1f,0xf8,0x63,0x9a,0x30,0x2c,0xf0,0xdd,0xbf,0x49,0x70 +.byte 0xd7,0x86,0x4a,0x5c,0x46,0x10,0x48,0x46,0x02,0x18,0xa4,0x39,0xb6,0x75,0x11,0x21,0xae,0x62,0x64,0xd8,0x85,0xc8,0xda,0xd2,0xd6,0x69,0xcc,0x37,0x57,0x49,0x73,0x1a,0x10,0x7b,0xd7,0x58,0xdd,0x0b,0xf3,0x16,0xe7,0x62,0x2c,0x32,0x92,0x0e,0x70,0x6f,0x77,0x74,0x0d,0xff,0xc2,0x8d,0x3b,0x3f,0x29,0x28,0x8f,0x88,0xb8,0x02,0x5b,0x3a +.byte 0x8b,0x65,0x89,0x92,0x2f,0xc7,0x30,0x73,0xc3,0x20,0xbc,0xa4,0xe4,0x5e,0xea,0xf8,0x21,0xb6,0xc5,0x47,0x56,0x35,0x8f,0xf6,0xd5,0xdd,0x77,0x1d,0xdf,0xd0,0x27,0xa3,0x04,0xb9,0xd0,0xc4,0x28,0x16,0xa5,0xaf,0x47,0x55,0x85,0x93,0x38,0xf4,0xac,0x13,0x30,0x7d,0x77,0x1f,0x3d,0xd5,0xd7,0x22,0xbe,0xe2,0x4e,0x6d,0x4b,0x0e,0xbe,0x1d +.byte 0x43,0x79,0x34,0x95,0x6f,0x38,0xa1,0xb3,0xa0,0xed,0xf6,0x17,0xf4,0x24,0x70,0x26,0x18,0x3e,0x1c,0xde,0xdc,0xa9,0x67,0x12,0xd3,0xc8,0xd7,0x70,0x13,0xa5,0xb3,0x25,0xe1,0x0a,0xe9,0xf6,0x4e,0x56,0x82,0x17,0xdc,0xbc,0x96,0x2f,0x59,0x03,0x9b,0xf4,0xc3,0x66,0xd2,0x90,0x95,0x1d,0xe0,0x99,0xfb,0xd8,0xa8,0x14,0xc7,0xa6,0x12,0x6b +.byte 0x08,0x6a,0xc8,0x0f,0x34,0x2a,0xb6,0xc4,0x9a,0xcd,0x61,0xf7,0x61,0xa3,0x59,0x29,0x11,0x30,0x76,0xb5,0x97,0xbc,0x2f,0x87,0xd8,0x12,0xb3,0x1d,0x99,0x8d,0x5d,0x57,0x0c,0xda,0xb0,0x9f,0x51,0x1a,0xb5,0xc6,0x94,0xc3,0xe9,0x5a,0x72,0x0c,0x37,0x76,0xb6,0x3c,0x00,0x02,0x69,0xad,0x8e,0x66,0x8b,0x5c,0x13,0x48,0xb7,0x9e,0xc5,0x7e +.byte 0xe0,0x35,0x07,0xd2,0x04,0x9c,0x35,0x95,0x8b,0x55,0x87,0x03,0x32,0x36,0xeb,0x11,0x88,0x54,0x8d,0x3e,0x88,0x46,0xc2,0xfe,0x24,0xa4,0x4b,0x92,0x19,0x44,0x6c,0xc9,0x69,0x32,0x22,0x95,0x5b,0xda,0x58,0xa4,0x00,0x33,0x83,0x2d,0xa4,0x17,0x2e,0x00,0x4d,0x9a,0x7d,0xef,0x04,0xa8,0x8b,0xf2,0x7c,0xb9,0xdb,0x54,0xcf,0x63,0x14,0x52 +.byte 0x5b,0x79,0xf6,0x89,0x5c,0xfa,0x8a,0x85,0x88,0x7f,0xca,0xed,0xfb,0x62,0xbc,0x1d,0x0d,0x90,0x51,0x27,0x45,0x74,0xa0,0x55,0xfc,0x60,0xea,0xef,0x6e,0x40,0xeb,0x0b,0x61,0x45,0x44,0xee,0xb6,0x20,0x4c,0xe1,0x08,0x62,0x29,0xdd,0xd0,0xa1,0xd5,0x7f,0x42,0xb9,0x0f,0x12,0xef,0xfb,0x13,0xa2,0xf1,0x85,0xaa,0x56,0x18,0x6c,0x70,0x7a +.byte 0x4d,0x52,0x76,0xce,0xa9,0xed,0x0a,0xcc,0x55,0xf0,0x01,0x99,0x44,0xe9,0xc4,0x74,0x33,0x2a,0xce,0x53,0xf3,0x4f,0x8f,0x1c,0x67,0x39,0x2b,0x0e,0x46,0xe2,0x49,0x06,0x52,0xbf,0xc4,0x3f,0x93,0x84,0x46,0x0a,0x9b,0xcb,0x1d,0xa5,0x66,0x9c,0x3e,0x3d,0xd1,0x92,0xda,0xe2,0x11,0x5b,0x89,0x7a,0xc4,0x33,0xba,0xa9,0x19,0xfd,0x3c,0xe3 +.byte 0xf0,0xa0,0x9b,0x83,0x50,0xce,0xa9,0x62,0xe3,0x85,0xc6,0xc4,0xe5,0x22,0xbb,0x1a,0x8e,0x04,0xb5,0x4d,0xca,0x18,0x7d,0xb0,0x99,0x50,0x78,0x88,0x69,0x43,0xe0,0xfd,0x90,0xa6,0xbf,0xdc,0xe3,0x03,0xf2,0x5d,0xa1,0xa2,0x88,0xc7,0xab,0xa9,0xc2,0xda,0x3f,0xff,0x79,0xa6,0x07,0xfd,0xc4,0xb1,0xfb,0x47,0x3d,0x75,0x82,0x26,0x52,0x85 +.byte 0x3f,0xf9,0xc9,0x85,0x46,0x24,0xe9,0x0f,0x96,0x8c,0xbb,0x02,0x83,0x60,0x69,0x49,0x8c,0x38,0xd1,0x4e,0xd0,0x63,0x2c,0xb6,0x12,0xb2,0x8e,0x4b,0xd3,0xe3,0xdf,0x20,0x00,0x99,0xf1,0x06,0x93,0xbf,0x27,0x42,0x8b,0xe3,0x8d,0x4c,0x3b,0x05,0x62,0x64,0x21,0xb1,0xfe,0xce,0x08,0xd2,0x23,0x69,0x11,0x74,0x31,0x3a,0x90,0x10,0x07,0x1a +.byte 0xd5,0xf5,0xc2,0x09,0x61,0x67,0x65,0x99,0x3a,0xf3,0x9e,0x4a,0xd8,0xa1,0xb2,0x50,0xf4,0x07,0xf0,0x7b,0x89,0x6d,0x4d,0x6a,0xd4,0x54,0xb9,0x3c,0xd5,0x4e,0x1c,0x12,0x0f,0x19,0x92,0x97,0x21,0x65,0x83,0x33,0x20,0x92,0x95,0xd4,0x0e,0x78,0xf4,0x92,0x16,0x36,0xd8,0x1b,0xd8,0xbf,0x41,0xe4,0xfb,0xb9,0x81,0x26,0x72,0x7e,0x1b,0x58 +.byte 0x05,0x45,0x97,0x66,0xf2,0x23,0x16,0xca,0x4e,0x95,0xc2,0x6c,0x60,0x84,0x5f,0x77,0x82,0x44,0x0e,0xf7,0x30,0xaa,0x51,0xa9,0x85,0x8b,0x03,0xfc,0x3d,0x6d,0x66,0x91,0x37,0xa5,0x1c,0xf8,0xcf,0x9d,0xd8,0xcd,0x8c,0xa1,0x29,0xbd,0xb5,0x4f,0x47,0xba,0xd1,0x55,0x3b,0x4e,0xc9,0xce,0x4c,0xcf,0x2e,0x19,0xa0,0x95,0xe6,0xcb,0x36,0x97 +.byte 0x3e,0x23,0xbe,0x09,0xfd,0x38,0x47,0x00,0x03,0xec,0x49,0xbb,0x49,0x1f,0x45,0x84,0x0f,0x1e,0x74,0xab,0xc9,0x07,0x00,0x04,0x70,0xe9,0xbd,0x61,0xb1,0x92,0xee,0x67,0x9a,0x5e,0x90,0xdc,0xe7,0x99,0x36,0xd0,0x58,0x15,0xe5,0x15,0xa2,0x1d,0x61,0x18,0x39,0x5f,0x6c,0xc7,0xbe,0xd0,0x23,0x1e,0x41,0xc8,0xaa,0x8e,0xbf,0xb8,0xdb,0x90 +.byte 0x8c,0x60,0x07,0x1e,0xe9,0x6c,0xe4,0xde,0xec,0x73,0x34,0x94,0x54,0xa4,0x6b,0x49,0xcf,0x87,0xb5,0x88,0x98,0xe6,0x2c,0xce,0xb7,0x76,0xa5,0x29,0xf1,0x29,0x50,0xc5,0x9e,0x13,0xe4,0x61,0x6a,0x54,0xb2,0x26,0xfa,0xfa,0x4a,0x41,0x3b,0x0a,0xf5,0x9a,0x60,0xbb,0xfc,0x1e,0x5d,0x21,0x7e,0x91,0x51,0xd6,0x5e,0x92,0xf9,0x21,0x80,0xa8 +.byte 0x35,0xc0,0xbb,0x7a,0xeb,0x75,0xb4,0xa3,0xd3,0x8d,0xaf,0x07,0x53,0x65,0x36,0x11,0xf9,0xb6,0x69,0x29,0x1e,0x5d,0x8f,0x57,0x5d,0xed,0x42,0xf9,0xd5,0xf6,0xc3,0x1e,0x29,0xc4,0x49,0x04,0xe4,0xfb,0xbf,0x9b,0x4a,0x7b,0xdd,0x57,0x51,0xfe,0xc4,0xd1,0xd9,0xe9,0x8f,0x94,0x78,0xbc,0x5c,0xeb,0xb6,0xbc,0x51,0xb0,0x82,0x87,0x47,0xb4 +.byte 0xf7,0xf9,0x02,0xd7,0xac,0x23,0xc0,0xe5,0x9a,0xc3,0x2f,0xd2,0xb8,0xb2,0x62,0xb9,0xdb,0x49,0x85,0x77,0x92,0xa6,0xe5,0x24,0x43,0x4d,0x0d,0x67,0x94,0x01,0x29,0xd6,0x2e,0xee,0xd9,0x2e,0x97,0x0e,0x20,0x7f,0x84,0x19,0x3c,0x3a,0x6f,0xa5,0xb0,0x8b,0x8f,0x8d,0x96,0xbb,0x76,0x61,0x97,0xc2,0x65,0x83,0xd8,0xda,0xab,0x42,0xfa,0xe5 +.byte 0x1e,0x42,0x93,0xa7,0x66,0x03,0x06,0x3b,0xbe,0xb8,0xae,0x71,0xee,0xdb,0x5d,0xdf,0x40,0x64,0x17,0x17,0x2e,0x03,0xca,0x37,0x2a,0x71,0x92,0x0a,0x01,0xa3,0x0f,0x0b,0x09,0xf2,0x0e,0x4b,0x4d,0x18,0xf3,0xc4,0xf2,0x51,0x7b,0x53,0x30,0xab,0x24,0xa2,0x47,0x38,0xc9,0x2c,0xdf,0x0d,0x32,0x3e,0x3f,0x57,0x2d,0xfc,0x44,0x19,0x64,0x8b +.byte 0xe9,0x9a,0xc2,0xf2,0xf6,0x2d,0x30,0x0c,0x0f,0xc3,0xc3,0xfe,0xc2,0xd1,0xbc,0xe0,0xbf,0xaf,0xeb,0x40,0x64,0x28,0xe2,0xd9,0x3c,0x7e,0x24,0x94,0x8f,0xe8,0x54,0x8b,0x26,0x6b,0xe1,0x4e,0x44,0x5a,0x7d,0x7b,0x12,0x36,0x2c,0x12,0xad,0x26,0xbc,0xa7,0xa3,0x2b,0x25,0xb9,0xde,0xe6,0x64,0x2d,0xab,0x7f,0x15,0x22,0x51,0x26,0x1c,0x15 +.byte 0x5d,0x13,0x18,0x93,0xc1,0x19,0x65,0xca,0xf3,0x8b,0xe0,0xcf,0x8c,0x43,0xe9,0xfd,0xa1,0xbd,0xe9,0xde,0x78,0x26,0xcb,0x7c,0xdc,0x68,0x06,0x98,0xf6,0x90,0x44,0x40,0xf0,0x5e,0xe1,0x16,0xf5,0x5d,0x4d,0x9b,0x85,0xe6,0x26,0xbd,0xab,0xcc,0x46,0x62,0x18,0x51,0xd5,0x3c,0x9f,0x6e,0xfa,0xe7,0x94,0xfc,0xc2,0x1a,0x9d,0x63,0x2c,0xdc +.byte 0xc3,0x89,0x67,0x94,0x37,0x58,0x0d,0x13,0xb8,0xdf,0x41,0x3d,0x70,0x78,0x1e,0x61,0x75,0x77,0xcc,0xbf,0x5f,0xa8,0xd3,0x89,0xcc,0xd3,0x40,0x4e,0x65,0xbd,0xce,0x3c,0xf0,0x5a,0x8f,0xe2,0xe1,0x24,0xaa,0xed,0x0f,0xd1,0x03,0x0d,0xf5,0x36,0x98,0xcd,0xa5,0x77,0x40,0x24,0x0a,0x82,0x68,0x79,0x82,0x38,0x68,0x6f,0x2b,0x0b,0xce,0x0f +.byte 0xcd,0x0f,0xba,0xdb,0xb5,0x22,0x38,0xd2,0xb0,0x9f,0x0f,0x08,0x0d,0xd8,0x5e,0xa7,0xd0,0xa9,0x39,0x66,0x4c,0x46,0xce,0x2a,0xc3,0x67,0x8c,0x91,0xdc,0xf1,0xc0,0x3a,0x58,0x50,0x1f,0xb0,0xa4,0x4d,0xbf,0x99,0x57,0xcf,0xae,0xb2,0xaf,0x6a,0x42,0xd2,0x7f,0x85,0x8c,0x40,0xc6,0x9a,0x93,0x57,0x54,0xf5,0xb4,0x83,0x59,0xb5,0x19,0x52 +.byte 0x7c,0x8b,0x76,0xee,0x35,0x90,0xbf,0xbe,0x65,0x58,0x3b,0x25,0x52,0x18,0xd8,0x7f,0x1f,0xe6,0x70,0xce,0x56,0x1a,0x45,0xa0,0x81,0xee,0x95,0x6f,0x55,0x43,0xaa,0x6e,0x87,0xa9,0xab,0x7d,0xe9,0xa1,0xa3,0x63,0xe7,0x1b,0x6b,0xa6,0x2c,0xe5,0x4a,0xb2,0x1e,0x73,0x5e,0xb5,0xae,0x83,0xe6,0x54,0x0b,0xc5,0x6b,0xb6,0xc4,0x73,0x62,0x1a +.byte 0xbf,0x1a,0x65,0xa2,0x5e,0x3a,0x45,0xd9,0xba,0x5b,0xef,0xf7,0x13,0x0c,0x7c,0x68,0xa1,0x98,0x71,0xb7,0x39,0x7c,0xbc,0x69,0xdb,0xd4,0xac,0x3f,0x82,0x63,0x9b,0x71,0x25,0x3a,0x06,0x73,0x60,0x71,0xc3,0x30,0xd3,0x96,0x02,0x4b,0x46,0xbd,0xd4,0x6e,0xc6,0x29,0xcc,0xd0,0xe1,0x0b,0x66,0x62,0xea,0x29,0xc7,0xcf,0x35,0x9e,0x2f,0x1f +.byte 0xa0,0xfc,0x8c,0x4a,0x83,0x8e,0x3b,0xf5,0x7a,0x6f,0x52,0xaf,0x99,0x9c,0x86,0xab,0xe5,0x1b,0x82,0xb3,0x18,0x35,0x77,0x9b,0xa3,0x94,0xc8,0x39,0x30,0x3f,0xad,0xa9,0x0f,0x93,0xb8,0xc8,0xed,0x04,0xf2,0x0b,0x9a,0xb1,0xd1,0xc9,0x9e,0x40,0x4f,0x71,0x21,0x63,0x2a,0x05,0x26,0x53,0xa3,0x3f,0x43,0xe4,0xf8,0x7c,0x2f,0xa3,0x5a,0x6e +.byte 0xc1,0x40,0xa8,0x4d,0xbc,0x03,0xae,0xe9,0x36,0xb6,0x37,0xdc,0x5f,0xef,0xb0,0x35,0x33,0xdf,0x33,0x71,0xaf,0x80,0xf2,0x69,0xd9,0xb5,0xfc,0xff,0xd2,0x5b,0x6a,0xeb,0xdc,0xe0,0x26,0x43,0x38,0x7b,0x24,0xb2,0x79,0x53,0x52,0x57,0xc4,0x1f,0x6d,0xc9,0x50,0xf2,0x63,0x9d,0xc1,0x22,0x5f,0x11,0x82,0x38,0xdb,0xd3,0xb4,0x1d,0x10,0x72 +.byte 0x9e,0x4d,0x03,0x30,0xba,0x5e,0xe9,0x8c,0x21,0x12,0xe6,0x3a,0xd6,0x4c,0x18,0xa4,0x27,0xc9,0xf5,0x50,0xbd,0xbe,0xf0,0x86,0xd8,0x00,0x56,0xf0,0x10,0x81,0xec,0xeb,0xfc,0x5b,0x29,0x88,0xff,0x73,0x60,0x6b,0xf5,0x8c,0x0b,0x30,0x04,0x53,0x85,0x61,0x0c,0xfc,0xff,0x8f,0x21,0xd2,0xa1,0xcb,0xf7,0x90,0x53,0x3b,0xf4,0xf0,0x2c,0x7d +.byte 0xb6,0x84,0xe7,0x4c,0x88,0xea,0x4f,0xdf,0xff,0x0f,0x5d,0x0f,0xd3,0x2d,0x4f,0x7e,0xdc,0xd1,0x22,0x71,0x0d,0xae,0xa8,0xcf,0x05,0x7b,0xfc,0xfe,0x87,0x40,0xa5,0xe8,0xfd,0x3f,0xdb,0x2f,0x00,0x21,0xb9,0x70,0x02,0x2c,0x96,0x24,0xaf,0x35,0xe2,0x87,0xcb,0x50,0xcf,0x7e,0xfa,0xaf,0x39,0x82,0x0c,0xd5,0xa6,0x3f,0x9c,0x77,0x60,0x16 +.byte 0xbf,0x42,0xcc,0x97,0xd1,0x19,0x0d,0x8a,0x50,0x98,0x7d,0x19,0x7b,0x40,0x1c,0x22,0xde,0x50,0x90,0x32,0x9a,0x3d,0x07,0x35,0xc0,0x48,0x4c,0x0a,0xcd,0x91,0xab,0xf7,0xf3,0x06,0x77,0x80,0x96,0x7b,0x59,0x33,0xe6,0xbf,0x93,0xb8,0x59,0xd0,0x3a,0x1f,0xcc,0xe7,0x1d,0xd4,0xb5,0x58,0xee,0xe7,0x95,0xfa,0x75,0xdb,0x37,0x74,0xb0,0x7d +.byte 0x4d,0xee,0xef,0x20,0x13,0xe5,0x82,0x07,0x8e,0xdd,0x57,0x75,0x33,0x56,0xc4,0x80,0xb0,0x06,0x9f,0x6b,0x72,0x31,0xcf,0xac,0x5f,0x96,0x13,0xeb,0xf4,0x34,0xb6,0x6b,0x55,0xef,0x55,0x26,0x4e,0xdb,0x6c,0x2f,0x64,0x29,0x91,0x3c,0x6d,0x29,0xd2,0x94,0xbd,0x2c,0x99,0xb9,0x97,0x76,0xee,0x7d,0xfd,0xb2,0x8d,0x14,0x4f,0x09,0x81,0xb3 +.byte 0x68,0x3e,0x79,0x28,0x56,0x50,0x3f,0x86,0x4c,0x95,0x6c,0xad,0xf6,0xc5,0x43,0x25,0xea,0xbc,0xe2,0xba,0x77,0x18,0xc6,0x82,0x65,0x73,0x38,0x90,0x9d,0xc9,0x57,0xcd,0xa2,0x7c,0xd3,0x26,0x59,0x44,0xd9,0x79,0xae,0xdd,0x6f,0xe9,0xdc,0x16,0x73,0xba,0x05,0x8a,0x40,0x9f,0xe7,0xcf,0x29,0xa4,0xdf,0x49,0x7f,0x1d,0x73,0xc7,0x8b,0x8d +.byte 0xad,0xb5,0x3d,0x1b,0x64,0xb1,0x8f,0x78,0x06,0xbe,0xaa,0x2c,0x08,0x73,0xc7,0x2c,0xdc,0xd8,0x3f,0x9f,0x1b,0xd2,0xe1,0x4f,0x9d,0x87,0xb8,0xa9,0xdc,0xef,0xbc,0x31,0x9f,0xf7,0x84,0x09,0xe7,0xbc,0xec,0x2a,0xcb,0x3b,0x3a,0x30,0xe2,0x5b,0xbc,0xcd,0xa8,0xdb,0x46,0x80,0xec,0xaa,0x06,0x8e,0xd8,0x6c,0x35,0x65,0x52,0xb8,0xc3,0xf9 +.byte 0x97,0x68,0x06,0x2d,0x3e,0x91,0x71,0x44,0x6e,0x01,0x51,0x10,0x5b,0x74,0xb9,0x3f,0xd7,0xf9,0x5c,0x98,0xe6,0xf8,0x98,0x32,0x26,0x9b,0x5e,0x9c,0x88,0xfb,0xaa,0x70,0xd2,0x2e,0xc2,0xf6,0x02,0x92,0x33,0x55,0x92,0xba,0xfb,0x0e,0x0b,0x08,0xdf,0x5d,0xdd,0x47,0x28,0xae,0x32,0xb3,0x27,0x8d,0xd4,0x18,0x43,0x64,0xc4,0x7f,0x60,0x62 +.byte 0xd9,0x63,0xd1,0x28,0xc9,0x75,0x3b,0x44,0xb4,0x8e,0x2a,0x93,0xf9,0x4c,0x4f,0x7e,0x6b,0x98,0xc9,0x1a,0x82,0x51,0x9a,0xb2,0x80,0x70,0x2e,0xff,0x19,0x66,0x1b,0xb6,0xbc,0x15,0x8e,0xe6,0x0f,0x8e,0x04,0x10,0x94,0x44,0x6c,0x32,0x4b,0x61,0xbc,0x4a,0x16,0x7b,0x25,0x2a,0x27,0x96,0xa9,0xa9,0x61,0x10,0xc1,0x46,0xdd,0xf5,0xe3,0xe8 +.byte 0x1f,0x5b,0xa0,0x77,0xe1,0x42,0x9a,0xd4,0x04,0x33,0x68,0x72,0x1c,0x44,0x29,0xce,0x98,0xe0,0xc7,0x3a,0x9e,0x3c,0xb9,0xb4,0x29,0xef,0x57,0xee,0x8c,0x8f,0x7c,0xe6,0xe1,0x43,0x6e,0x45,0x0e,0xdd,0x4e,0x11,0x4b,0x28,0x69,0xde,0xb8,0xfa,0x32,0xbe,0xc6,0x4f,0x11,0x99,0xe5,0xe3,0xe2,0x1f,0x03,0xbe,0x4a,0xad,0x60,0x68,0xc8,0x13 +.byte 0x80,0x4e,0xb6,0xc0,0xc5,0xc7,0x97,0x5c,0x0b,0x0e,0x64,0x43,0x78,0x70,0x95,0x91,0x8e,0x36,0x6b,0xad,0x57,0xc7,0x1e,0x9c,0x54,0xc9,0x89,0xf0,0x13,0xde,0x0a,0xbe,0xc0,0xa9,0x35,0x77,0x0a,0x01,0x7f,0x98,0x51,0x82,0x92,0x14,0xe0,0x9a,0x08,0xa3,0x0c,0x6c,0x67,0xf2,0x05,0xaa,0xa9,0x4e,0xce,0x3b,0xb1,0xb6,0x8c,0x82,0x5d,0x11 +.byte 0xf2,0xe5,0xd7,0xda,0x3a,0x65,0xa0,0xe3,0xa4,0x09,0x01,0x1c,0xb2,0x08,0x90,0x94,0xb5,0x51,0x56,0x24,0x22,0xfd,0x12,0xad,0x7a,0x75,0xcf,0x0f,0x0f,0x23,0xc3,0xa6,0x1f,0xf8,0x39,0xbc,0x2f,0x18,0x53,0x14,0xef,0xdf,0x90,0x6a,0x50,0x2b,0x8c,0x8b,0xa8,0xd4,0x8c,0x59,0x8f,0xd8,0x81,0x86,0x57,0xc1,0xd1,0xfb,0xe7,0xa6,0x20,0x6e +.byte 0x7c,0xbf,0xce,0xe3,0xce,0x28,0x35,0x7c,0x8e,0x1a,0x66,0xea,0x7d,0x81,0x09,0xdb,0xa8,0x64,0xba,0x3c,0x07,0x3f,0x23,0xd3,0x05,0x97,0x4c,0x92,0xc2,0xa4,0xe8,0x6c,0xfb,0xa0,0x9d,0x8b,0x4d,0xcb,0x3a,0x96,0xe7,0x04,0x0f,0x48,0x87,0x2c,0xdd,0x51,0xf3,0x46,0x7e,0x61,0x89,0xbe,0xb8,0xb0,0x9e,0x9c,0xc4,0x37,0x55,0xe6,0x4f,0x78 +.byte 0x7e,0xb0,0x59,0x42,0xca,0xba,0x4a,0xb2,0x50,0xbd,0x16,0x68,0x99,0x42,0xb4,0x8b,0x60,0x3d,0x54,0x41,0x17,0x11,0x39,0x42,0x5d,0x41,0xec,0xc2,0x53,0x82,0x7c,0x32,0xc9,0xd1,0x34,0x49,0xd8,0x4f,0x29,0x21,0xeb,0x97,0x98,0x4c,0xeb,0x21,0xce,0x50,0xd6,0x53,0xd9,0xf1,0x6e,0x26,0xfa,0xe4,0x71,0x34,0xd8,0x38,0xac,0x39,0x4f,0x02 +.byte 0x36,0x93,0xf2,0x08,0x88,0xdc,0x24,0xdd,0x1f,0xf5,0xe9,0x7f,0x83,0xa0,0xa4,0x6b,0xc5,0xef,0x8e,0x82,0xf9,0x92,0xbc,0x82,0x3f,0xce,0x86,0xa6,0x34,0xf8,0x16,0xa7,0xdb,0x97,0xca,0x54,0x43,0xd8,0xfc,0x31,0xde,0x73,0xd0,0x79,0x1a,0xac,0x61,0x15,0xbd,0x38,0x64,0x3b,0xc6,0xb5,0x95,0xeb,0x2e,0x68,0xe4,0x1d,0x6b,0x18,0xab,0x88 +.byte 0xb0,0x96,0x51,0x8c,0xbe,0x41,0x63,0xd6,0x9a,0x21,0x60,0xe8,0x26,0x37,0xb3,0x10,0x76,0x46,0x31,0x90,0xb0,0x9f,0x17,0xab,0x0f,0x93,0xcc,0x12,0x78,0xee,0x17,0x1c,0xd8,0xc7,0x76,0x0a,0x5a,0xb4,0x8b,0xb1,0x67,0x11,0xde,0x48,0x14,0x8a,0x2a,0xc7,0x71,0x46,0x94,0x15,0x29,0x44,0x9e,0x35,0x03,0x10,0xf7,0x51,0x8a,0xaa,0x9c,0x4a +.byte 0x9a,0x44,0xd5,0xc7,0x37,0x9d,0xb4,0xad,0x41,0xd0,0xda,0xd2,0x1a,0xf9,0x93,0xee,0x28,0x32,0x65,0x0b,0x9c,0x12,0xe3,0xad,0x9f,0x82,0xeb,0x3f,0x03,0xe7,0x6a,0x58,0x83,0x3f,0xbe,0x9f,0x27,0xd3,0xd6,0xe2,0x45,0xbf,0x90,0xe2,0x12,0x61,0x0b,0x57,0xd7,0x06,0x72,0x39,0x2c,0x3e,0x65,0xb2,0xf4,0xf7,0x54,0xef,0x32,0x99,0x44,0x0d +.byte 0xf0,0x5c,0xde,0x4c,0x2e,0x22,0xcd,0x3c,0x25,0x02,0xa5,0x0d,0x79,0x16,0xb0,0x51,0x3f,0x3c,0x84,0x56,0xfa,0x00,0xae,0x7a,0x36,0x45,0x3a,0xcc,0x1d,0x66,0xff,0xf4,0x49,0xce,0xb5,0x5c,0x51,0xf4,0x3e,0x07,0xf2,0x83,0x84,0x4d,0x4e,0xb7,0xce,0x03,0x7b,0x23,0x63,0xdf,0x64,0xa2,0x55,0x92,0xf9,0x2e,0xa5,0x21,0x89,0x29,0x42,0x48 +.byte 0x36,0xc5,0xab,0xd6,0x82,0xe3,0xff,0x45,0xfc,0x61,0xa6,0x4f,0xb9,0x51,0xba,0xd5,0x03,0xa9,0x0b,0xe7,0x73,0x83,0x97,0x1d,0xb2,0xc6,0x75,0xa0,0x52,0x99,0xfc,0x1b,0x27,0x7a,0x10,0xc1,0xed,0x70,0x21,0x4b,0x93,0xa4,0x20,0xed,0x16,0x76,0x97,0x82,0xab,0x21,0xfe,0xa4,0x3f,0xd9,0xbd,0x9c,0x2f,0x19,0x42,0xbc,0xb3,0x4f,0x44,0xf3 +.byte 0x9e,0xd0,0xe7,0xc9,0x7e,0x31,0xaa,0xbc,0x4b,0xba,0x73,0xe1,0xc3,0xbf,0x5d,0xa2,0xd8,0xb7,0xb6,0xfc,0x0a,0x32,0xb9,0xff,0x80,0xb6,0x2a,0x8b,0xea,0x81,0xa0,0xeb,0x1e,0x9e,0x69,0xdd,0xbe,0xc1,0x8a,0x5d,0xfb,0x66,0x21,0x98,0x5c,0x6f,0xd8,0xb4,0xcf,0x8a,0x1a,0x4b,0xde,0xa2,0x20,0xe8,0x5a,0x5a,0xee,0x14,0x09,0xcb,0x63,0x1c +.byte 0x14,0x7d,0x9b,0x47,0xf8,0xfa,0xda,0xb7,0x0e,0xc6,0xbd,0xb2,0x13,0xb8,0x10,0xe2,0x71,0x04,0x36,0x78,0x6d,0x3a,0x8b,0x45,0xd3,0x05,0xec,0x8a,0x2d,0xfa,0x85,0x7c,0xdd,0x75,0xb3,0x2d,0xd1,0xae,0xfc,0xdd,0x02,0x2e,0xcc,0x43,0xc5,0xed,0xe4,0x3f,0xee,0x2c,0xd7,0x37,0x81,0x3a,0x44,0xe6,0xed,0x8c,0x9d,0x9d,0xfa,0xb5,0xdc,0xde +.byte 0xb2,0x7c,0x51,0x58,0xa4,0x21,0xac,0xe2,0x79,0x96,0x90,0xe2,0x0b,0xbf,0x51,0x66,0x77,0x02,0xff,0x67,0x0a,0x70,0x1f,0x04,0x6c,0xb0,0x5b,0x2d,0x26,0x23,0x5a,0x85,0x73,0x66,0x6e,0x7c,0xb3,0xeb,0x36,0x73,0x0f,0xcd,0xb2,0x07,0xee,0x78,0xd1,0xbd,0x5e,0xfa,0x31,0xf6,0x82,0x67,0x94,0xaa,0xff,0xef,0xd2,0x23,0xfc,0x82,0xaa,0xe2 +.byte 0xef,0xc3,0x74,0x79,0x6c,0xe9,0x3f,0x8d,0xe1,0x1b,0xc8,0xb4,0xff,0x15,0xf4,0x60,0xe8,0x84,0x3f,0xaa,0xc6,0x53,0x51,0x1a,0x9b,0x04,0x9b,0xab,0xc5,0xee,0x9a,0x98,0x80,0x89,0x8d,0x5b,0xef,0x0a,0x69,0x71,0xd2,0xf3,0x49,0xc1,0xc1,0x87,0xb3,0x18,0x4b,0x82,0x02,0x87,0xb0,0xf1,0x76,0x4b,0x3e,0xad,0x95,0x51,0xb1,0x64,0xb1,0x03 +.byte 0x5b,0xd2,0x10,0x7b,0x4e,0xd4,0x08,0xf8,0xfd,0xea,0xf0,0xc7,0x16,0x43,0x86,0xa6,0xdb,0xcd,0x75,0xce,0xa9,0xfd,0xa8,0x7c,0x51,0xf7,0xa5,0x29,0x6f,0x0d,0xee,0x66,0x8f,0xc6,0xcd,0x9e,0x3f,0x00,0x24,0x21,0xca,0x69,0x79,0x27,0x03,0x62,0xdf,0xad,0xb9,0x8c,0xd8,0x08,0x88,0x0d,0x0c,0xa1,0x29,0xf9,0xba,0x92,0xb5,0xdd,0xb8,0x1a +.byte 0xbb,0xab,0x44,0xb2,0xda,0x1b,0x8b,0xc1,0x3c,0x61,0x9f,0x7a,0x8b,0x89,0x99,0x09,0xc3,0xb4,0xe4,0x24,0xf5,0x3b,0x36,0xa6,0x61,0x0a,0xec,0x2a,0x1c,0x92,0x7c,0xb1,0x7c,0xd8,0x0b,0x98,0x48,0x8d,0x52,0xa2,0x57,0xc1,0x28,0x89,0xbb,0x60,0x5c,0x58,0x62,0x41,0x1c,0xd6,0xfb,0x69,0x09,0x93,0x90,0x31,0xc4,0x72,0x71,0xf0,0x4f,0xcf +.byte 0x10,0xbb,0xb7,0x6c,0x3b,0x53,0xa3,0x0b,0xff,0x44,0x4c,0x37,0xd5,0x26,0x83,0x7e,0x5c,0xb9,0xa5,0xe8,0x8b,0xc4,0x15,0xf6,0xc7,0xd1,0x39,0x67,0x01,0xb7,0xca,0xa7,0x71,0xa8,0x04,0x95,0x0f,0xfc,0x0a,0x9e,0x52,0xb2,0xfb,0x48,0x47,0xb6,0xa5,0x14,0xc2,0x4f,0xa8,0xd5,0x0f,0x10,0x76,0x39,0x23,0x74,0x2e,0xe5,0x17,0xcb,0xad,0x8a +.byte 0x4a,0x25,0xc8,0x9b,0x25,0x94,0x34,0xbc,0x4b,0x2f,0xdc,0x0a,0xcd,0xc1,0x02,0x72,0x7d,0xa0,0x10,0xa7,0x32,0x68,0xe8,0xd5,0x23,0xe8,0xc9,0xbc,0x05,0x05,0x1e,0xac,0x55,0x45,0xfb,0x42,0x2f,0x0f,0x51,0x8d,0x31,0xb1,0xbc,0x10,0xa1,0x03,0xc3,0x6f,0x35,0x08,0xa5,0x2f,0x91,0x4e,0x43,0x6b,0x62,0x3b,0x00,0x4c,0xd0,0xb8,0x33,0xbc +.byte 0xca,0x57,0xb8,0x1b,0xb4,0x52,0x1a,0xa7,0x03,0x78,0xa0,0x4f,0xda,0x86,0xb9,0xd8,0xc6,0x69,0xe6,0x61,0x2e,0x62,0x96,0x60,0x0d,0x76,0xdc,0x5d,0x0e,0xa8,0xf3,0x86,0xde,0xcf,0x39,0x34,0xc7,0x69,0xed,0xcb,0x9a,0xf5,0xc3,0xce,0x6d,0xa5,0x7f,0xae,0x73,0xb9,0xa6,0xbf,0x88,0x93,0x2b,0x0e,0x8b,0x4b,0xa5,0xeb,0x62,0xc6,0x1a,0xc7 +.byte 0x63,0x63,0x58,0x62,0x37,0xc6,0xbc,0x00,0x72,0xac,0x3d,0x7c,0x22,0xa5,0x59,0xf1,0x6e,0x60,0x45,0x3e,0x99,0x76,0x40,0x82,0xa7,0x52,0xf3,0x48,0x8e,0x4a,0xa3,0xe1,0x3b,0xea,0x77,0xa7,0x7d,0x13,0xe7,0xc4,0xc6,0xa6,0x6e,0xda,0xe8,0x50,0xc8,0x39,0x30,0xab,0x8a,0xe1,0x08,0xa9,0xe3,0xbd,0x8d,0xbd,0x83,0x3c,0xbc,0x6c,0x92,0xed +.byte 0xf1,0xa9,0xd3,0x50,0xf2,0x29,0x8b,0x39,0x46,0xaf,0x08,0x7e,0x00,0x64,0x2f,0xa8,0x18,0xab,0x7e,0x07,0xd3,0x63,0x2a,0xd3,0xd3,0xbb,0xf9,0xdd,0x2b,0xec,0x70,0x35,0x1a,0x94,0x6b,0x87,0xe4,0x1a,0x0a,0x44,0x46,0x08,0xa6,0xce,0x1b,0xf7,0xd7,0x20,0x87,0x1a,0x96,0x6c,0xbe,0xdf,0x73,0x3b,0xc9,0xaf,0x89,0x1c,0x2f,0x47,0xe9,0xd8 +.byte 0x03,0xa6,0x03,0x6c,0x73,0xa9,0x65,0x20,0x36,0xea,0x6f,0xe7,0x96,0x7c,0x01,0x87,0xb0,0x21,0xba,0xb4,0xed,0x1f,0x81,0x65,0x97,0x36,0xda,0x68,0x80,0x64,0x99,0xe6,0xda,0x95,0x04,0xdf,0x5d,0xfd,0x86,0xd1,0xfd,0xfa,0x1c,0xd7,0x89,0xbf,0xe6,0x99,0x6c,0xf5,0x01,0x56,0x20,0x88,0x79,0xa7,0x8d,0x88,0x82,0xe5,0x32,0x38,0xe0,0xf0 +.byte 0x98,0x63,0xa9,0xab,0xeb,0x09,0x8d,0xaf,0x3f,0xa8,0x57,0x98,0xde,0xc8,0x9c,0x8d,0x1d,0x18,0xc5,0xa8,0x82,0x51,0x9b,0x6f,0xc6,0xb8,0x09,0xd3,0xea,0xd4,0xe3,0xac,0xd1,0x0e,0x88,0xda,0xdf,0x38,0x53,0x14,0x87,0x28,0x6f,0x13,0x35,0xdb,0xfe,0xa1,0xe7,0x43,0xb5,0x02,0x46,0x08,0x1a,0x31,0x0d,0x9e,0x3d,0x3b,0xbf,0xbb,0x82,0x9c +.byte 0x09,0xf3,0xd9,0x22,0x0a,0x82,0x07,0xd3,0xe8,0x19,0x6e,0x21,0xd2,0xa2,0xa8,0x14,0xbc,0x42,0xb6,0xeb,0x8c,0x40,0x9b,0xb2,0xa9,0x17,0xad,0x2c,0x19,0xaa,0x4b,0x22,0xf9,0x4e,0xde,0x8f,0xbe,0x78,0x9b,0xab,0xb9,0xfa,0xb1,0x3e,0x68,0x86,0x1a,0x4a,0x61,0xba,0x63,0x51,0x25,0x11,0x59,0xd0,0xb7,0x0c,0xb7,0xcc,0x45,0x05,0x6d,0x5a +.byte 0xe2,0xd7,0x10,0x80,0x19,0xd3,0xa9,0xab,0xb6,0x9f,0x53,0x7a,0xaa,0x19,0x74,0x01,0xc9,0xd6,0x45,0x42,0x2c,0xe5,0xc0,0xcf,0x62,0xe6,0x95,0x6f,0x4c,0x90,0x50,0x97,0x61,0x83,0x73,0xd0,0xc2,0xd5,0xf0,0x05,0xca,0xe9,0x6f,0x67,0xa9,0x51,0xb8,0xb4,0x9d,0x30,0x8e,0xe3,0x29,0xf9,0x3b,0x3d,0x17,0x25,0xad,0xbb,0xb0,0x34,0x68,0x29 +.byte 0x06,0xad,0x0e,0xdf,0x41,0xa6,0xf1,0xa6,0x25,0xc4,0xf0,0x0d,0x57,0x84,0x34,0x2c,0x3b,0xb1,0x41,0xd6,0x83,0x00,0x3a,0x91,0x98,0x8e,0xd0,0x59,0x0b,0x2d,0xc9,0x65,0x03,0x91,0xcb,0x03,0x97,0x57,0xde,0x11,0x8b,0x4b,0x1b,0x85,0x0b,0xb6,0x68,0x25,0x3c,0x1a,0x04,0x7d,0xd5,0x2b,0x16,0x69,0x1f,0x64,0x8b,0x47,0x60,0x17,0xaa,0x68 +.byte 0x45,0xf2,0x0b,0xf8,0xa2,0x27,0xf8,0x47,0x86,0x41,0x94,0x3f,0x92,0xc3,0x02,0xab,0x80,0x2b,0x0e,0x3c,0xd0,0x13,0x59,0x08,0xfc,0x13,0x33,0x52,0xbb,0x2d,0x6b,0x22,0xa2,0x8b,0x9f,0x7c,0x8e,0x40,0x35,0xa4,0xc7,0x45,0xb7,0xf8,0x10,0x22,0x95,0xc5,0x48,0xc1,0x50,0x4d,0x4a,0x36,0xe1,0xec,0x1e,0x07,0xf7,0x68,0x63,0xcb,0x13,0x03 +.byte 0x70,0x63,0xb1,0x9b,0xf3,0x60,0x01,0x6e,0x63,0x5c,0x4d,0x2c,0x5c,0x5c,0x58,0x8b,0xbb,0x6e,0xd1,0x69,0xdd,0x19,0xfe,0xfb,0xd6,0xdc,0x68,0x97,0x9c,0x46,0x0d,0xdd,0x4d,0xbd,0x52,0xe4,0xd9,0xc2,0x03,0x4e,0x4c,0xe2,0x66,0x6b,0x4d,0xbe,0x6b,0xf3,0xd6,0xbe,0x2d,0xba,0xdd,0x1b,0x4f,0x60,0x02,0x74,0xa1,0xf0,0xd0,0xfa,0x23,0x33 +.byte 0x29,0x7e,0x00,0x09,0x47,0x15,0xa8,0xd8,0xdb,0xb8,0xe1,0x20,0xd5,0xe2,0x91,0xd0,0xe8,0xfa,0xa1,0x0d,0x80,0xbd,0x7d,0x62,0x9d,0xf2,0xbc,0x03,0xa1,0x44,0x9f,0x8d,0x3d,0xe3,0xb4,0xec,0x32,0xd9,0x66,0xb0,0xc7,0x75,0x11,0xaa,0xab,0xb7,0x84,0x1d,0x5b,0x4f,0x25,0x5c,0x53,0xed,0xbb,0x6d,0x06,0x1f,0x12,0x5f,0xc0,0xeb,0x55,0x3e +.byte 0xd0,0x5b,0x4d,0x07,0xf7,0x84,0x12,0xbc,0xc8,0xd4,0xf4,0x69,0xdb,0x71,0x8a,0x00,0x58,0xf5,0x84,0xff,0xc3,0xbc,0x13,0x6e,0x5f,0xac,0xd6,0x72,0x1b,0x2d,0xbb,0x27,0xfd,0x8d,0xcc,0x59,0x79,0xb9,0x63,0xe8,0x0a,0xf3,0x7f,0xa4,0x9f,0x4c,0x35,0x9a,0xdc,0xff,0x11,0x42,0xf3,0x1c,0x86,0xd0,0x22,0x7e,0x81,0x79,0x04,0x93,0x5c,0xf2 +.byte 0xab,0xdf,0xb7,0x1d,0x84,0xbd,0xde,0xfb,0xd2,0x75,0x43,0xb8,0x19,0x63,0x97,0xfe,0x0e,0x91,0x9d,0x38,0x50,0xc5,0x7a,0xd6,0x51,0xd4,0xfc,0x8d,0xec,0xd5,0xe2,0x07,0xce,0x21,0x03,0x02,0xa1,0x61,0x8d,0xf1,0xf5,0x1f,0xb3,0xaf,0x9f,0x13,0xd8,0x81,0xd2,0xf7,0xe9,0xe2,0x62,0x49,0xca,0x1c,0x15,0x07,0x39,0xe6,0x01,0xec,0x6c,0x7d +.byte 0x3b,0xf1,0x52,0xda,0xf2,0x97,0x55,0xef,0x6f,0x88,0x82,0x0e,0xe6,0xf4,0x3e,0x33,0xf6,0x61,0x6d,0xef,0xbf,0xa8,0x9a,0x91,0x2f,0xb3,0xd2,0x3d,0xaa,0x7a,0x4e,0x80,0xe1,0x04,0xbe,0xc7,0xf8,0xc3,0xc9,0xd8,0xa2,0x01,0x5d,0x30,0xae,0x6d,0x39,0x52,0x60,0x9d,0x07,0xd5,0xa2,0x86,0xf0,0x88,0x00,0xec,0x18,0x11,0x2d,0x69,0x86,0xa9 +.byte 0x5a,0x73,0xda,0x4e,0x4c,0xdb,0xb8,0x02,0xad,0x53,0xec,0x20,0x0f,0x35,0xe0,0x4f,0x6e,0xd5,0x04,0xcc,0xa0,0xf5,0x8c,0x7d,0x31,0x04,0xa4,0xcf,0xf0,0x27,0xd2,0xb6,0x7d,0x8c,0x26,0x5f,0x19,0xba,0x79,0x80,0xec,0x6d,0xfe,0xaf,0xc1,0x3a,0xc2,0x3d,0x14,0x3c,0xa0,0xc5,0x77,0xf4,0x96,0x56,0x51,0x8b,0x7c,0x7e,0xe5,0x23,0x5d,0x46 +.byte 0x1b,0x2e,0x28,0xc0,0x80,0x6b,0x6a,0x85,0x6c,0xcf,0xaa,0x28,0xf3,0x83,0x2d,0x42,0x6f,0xf3,0x5e,0x5d,0xa2,0x7b,0xba,0x5c,0x12,0xb0,0xda,0xa0,0xeb,0xdf,0xad,0x1d,0x4c,0x54,0xcf,0xad,0x02,0x68,0xcd,0xfe,0x5c,0x5b,0x65,0x6d,0xa5,0xcc,0xd3,0xed,0x32,0x74,0x6c,0x58,0x83,0x3a,0xc1,0x71,0xbf,0xb5,0xa2,0xbd,0x10,0xe5,0x46,0xc5 +.byte 0x00,0x82,0xb1,0xeb,0x6f,0x73,0xf9,0x12,0x23,0xe4,0xda,0xff,0xa3,0xc4,0x9c,0xf1,0xcc,0x0e,0x1a,0x7a,0x10,0x62,0x8f,0xa5,0xb2,0x35,0x51,0x67,0xb5,0x95,0xbe,0x4c,0x81,0x53,0xfc,0xdd,0x27,0x26,0x97,0x42,0x01,0xec,0x08,0x91,0xb8,0xf0,0xaf,0x57,0x54,0x73,0x52,0x8f,0xde,0xca,0xed,0x1b,0xca,0x8d,0x97,0x1e,0xdc,0xe7,0xfa,0x68 +.byte 0xaf,0x37,0xb0,0x62,0xa3,0x9f,0xbc,0xac,0x9f,0x28,0x1e,0xb7,0xaa,0xb0,0x91,0xe4,0x95,0xad,0xf9,0xe5,0xd4,0xcc,0x23,0x0f,0x4a,0x2d,0xdd,0xea,0x64,0xd1,0x04,0x3c,0xd0,0xca,0xfe,0xd3,0x19,0x9d,0x28,0xa5,0x1c,0xff,0x3e,0xae,0xe9,0xfb,0x12,0x03,0x6d,0xcf,0xbc,0x5f,0x27,0xce,0x1a,0xb9,0xc0,0x31,0x88,0x6e,0x2e,0xaf,0x35,0x5f +.byte 0xf0,0xce,0x92,0xf8,0x6f,0xd6,0x67,0x1c,0xc6,0x5c,0xee,0x59,0xaa,0xd6,0x8c,0xa8,0x13,0xe6,0xf7,0xe2,0x82,0x2f,0x82,0x1e,0x4c,0x0d,0xab,0x3e,0xdb,0x4d,0xc5,0x90,0x32,0xe4,0xf0,0x74,0xc1,0x92,0x1b,0xdd,0xf3,0xa7,0xf6,0x6b,0x01,0x9d,0x8d,0x78,0x3d,0x5a,0x46,0x74,0x16,0x93,0x44,0xca,0xbe,0x31,0xea,0xb4,0x65,0xcd,0xe6,0xdd +.byte 0x56,0x9d,0x63,0x48,0xf0,0xf3,0x15,0x91,0x6c,0x27,0xf9,0xf7,0x3b,0x9f,0x04,0x6d,0x4d,0x1d,0xf1,0x7c,0xd1,0x81,0x06,0xef,0x04,0x47,0x98,0x5d,0x21,0xf4,0xe0,0xa0,0x13,0xaf,0x1d,0xb0,0xd5,0x45,0x64,0x92,0x46,0x99,0xff,0xb4,0xbf,0x36,0x01,0x2d,0x23,0x6a,0xc4,0x6b,0x3f,0x91,0x10,0x03,0xaf,0x6e,0x79,0x86,0xdb,0x15,0xde,0xfa +.byte 0x0d,0x71,0x04,0x16,0x12,0x31,0x9b,0x69,0xb9,0xe0,0xe7,0x4e,0xfd,0x0e,0xd5,0x71,0xa0,0xc7,0xd7,0x46,0xdb,0xda,0xbd,0xcd,0xdc,0x77,0xe5,0x71,0x9d,0xa1,0xf4,0x02,0x10,0xc6,0x27,0x76,0x4e,0xa6,0x35,0xe6,0x9e,0xda,0xbe,0xd8,0xc0,0x21,0x15,0xd4,0xcc,0xd5,0x4b,0xdf,0x38,0xc5,0x15,0x4b,0xfa,0x4e,0x83,0xf4,0x27,0xdb,0x8a,0xb1 +.byte 0x0e,0x1f,0xc9,0x3c,0x1c,0x36,0x35,0x54,0x8b,0x54,0xf8,0x31,0x1e,0x0e,0x1c,0x4e,0x44,0x29,0x90,0xad,0x28,0x85,0xb4,0x72,0x2d,0x1b,0x8b,0x26,0x2f,0xb6,0xc2,0x14,0x0e,0x81,0xd0,0x37,0x29,0x5c,0x0f,0xdc,0x21,0x62,0x10,0x7a,0xeb,0xa3,0x6e,0xd4,0x5b,0xb4,0x13,0x2e,0xd6,0x8f,0xd9,0x57,0x0d,0x9b,0xfd,0x1e,0x66,0xb7,0x6e,0xac +.byte 0x88,0xb9,0x75,0x60,0x62,0x83,0x72,0x96,0xc6,0x2e,0xdc,0xfe,0x88,0xee,0x07,0x9a,0x62,0x19,0xde,0xf1,0xa5,0xfb,0xcc,0xdb,0x4a,0xeb,0x16,0x60,0x34,0x46,0xfc,0xf2,0x6d,0xee,0xfc,0xa0,0x3a,0xb1,0x11,0x03,0x8b,0xae,0x26,0xef,0x86,0x91,0x20,0x7a,0x19,0x35,0xd6,0x12,0xfc,0x73,0x5a,0xb3,0x13,0xf8,0x65,0x04,0xec,0x35,0xee,0xf8 +.byte 0x70,0xb2,0x0b,0xe1,0xfc,0x16,0x35,0xec,0x6b,0xdd,0x8b,0xdc,0x0d,0xe8,0x91,0xcf,0x18,0xff,0x44,0x1d,0xd9,0x29,0xae,0x33,0x83,0xfe,0x8d,0xe6,0x70,0xbb,0x77,0x48,0xaa,0xe6,0xbc,0x51,0xa7,0x25,0x01,0xcf,0x88,0xc4,0x8b,0xfc,0xb1,0x71,0x01,0xc7,0xfc,0xd6,0x96,0x63,0xee,0x2d,0x04,0x1d,0x80,0x24,0xd0,0x80,0x03,0xd9,0x18,0x96 +.byte 0xec,0x6a,0x98,0xed,0x6e,0x9a,0xe0,0x42,0x5a,0x9d,0xec,0xed,0x46,0x3c,0xb5,0xf0,0xd6,0x88,0x92,0x89,0x38,0x5f,0xd6,0xba,0xfd,0x32,0x31,0x81,0xe9,0xf1,0x56,0x89,0xa3,0x56,0xa6,0x03,0x00,0x60,0xe1,0xa8,0x59,0xdb,0xbe,0x72,0x39,0x6c,0x08,0x4d,0x26,0x57,0xa6,0xf6,0x13,0x7d,0x4a,0x2f,0x64,0xb8,0xa7,0x23,0x2c,0xa4,0x4a,0xad +.byte 0xcf,0xa1,0xa2,0x32,0xbb,0xd1,0x98,0x02,0xe4,0x1a,0x41,0x26,0x23,0xba,0xa2,0x17,0x62,0xaa,0xa6,0xc7,0x74,0x9d,0xea,0xc7,0xa0,0x08,0x0a,0x1a,0x4e,0x71,0xd9,0x45,0xf7,0xe8,0x57,0x79,0x12,0xd0,0x38,0x2f,0xdb,0xbd,0x5a,0x84,0xe1,0xb2,0x62,0x7e,0x56,0xb3,0x50,0x2a,0xa0,0x32,0x1f,0x86,0x71,0xc4,0xa5,0xba,0x93,0x5b,0x22,0x97 +.byte 0xf4,0xe5,0x44,0x27,0x6b,0x06,0x84,0x55,0x19,0x45,0x12,0x75,0x4b,0xf0,0x76,0x6d,0x3c,0x0a,0x17,0xc2,0x9d,0x96,0x72,0xe7,0x5e,0x79,0x84,0x0a,0x39,0x64,0x09,0x6e,0x7e,0xd7,0x77,0x40,0x75,0x2c,0xbd,0x98,0xae,0x3e,0x34,0x08,0x4d,0xda,0x2c,0xcf,0x0c,0xa2,0x8c,0x40,0xfa,0x34,0x43,0x15,0xed,0x4f,0x69,0xa6,0xef,0x2d,0x3c,0x55 +.byte 0x7a,0xe1,0x67,0xd1,0x0a,0x89,0xe0,0x2d,0x02,0x35,0x57,0xc8,0x9a,0x4b,0xc4,0x46,0xa7,0x57,0x03,0x89,0x7d,0x3f,0x70,0x47,0x03,0x06,0xd9,0x81,0x1f,0x8d,0x7e,0x36,0x9b,0xfd,0xad,0x20,0x9d,0x5a,0x29,0xe9,0x40,0x6a,0xb8,0x07,0x6b,0xc7,0x2b,0x58,0xd2,0x1d,0xef,0x88,0xa5,0xfb,0x3b,0xd6,0x9f,0xfd,0x89,0x0e,0x50,0xd4,0xbc,0x89 +.byte 0x3f,0x3c,0x6c,0x50,0xc6,0xe3,0x8b,0x7e,0x34,0x8b,0x26,0x99,0x2a,0xfa,0xa5,0x19,0x53,0xb5,0x5e,0xfd,0x94,0xe8,0x33,0xb2,0x6d,0x9c,0x3c,0x0c,0x14,0x90,0xc4,0xa2,0x4a,0x3a,0xca,0x07,0x72,0x46,0x37,0xfc,0x02,0x5d,0xf4,0x97,0xca,0x8e,0xc6,0xc4,0x63,0xda,0x5c,0x89,0xc3,0x6c,0xb1,0x1a,0xf5,0x2a,0xbc,0x2e,0xe3,0xcd,0x2f,0xe2 +.byte 0x91,0x16,0xf9,0x94,0x0e,0x1b,0xe6,0x01,0x73,0x61,0x1e,0xcf,0x5e,0x21,0x70,0xcb,0x5b,0x87,0xc1,0x46,0x39,0x59,0xa6,0x74,0x82,0x7f,0xa2,0x6c,0x4a,0x50,0x5f,0xbd,0x1c,0x1a,0x65,0x80,0x01,0x44,0x19,0xcf,0xcd,0xef,0x3d,0x5e,0x1b,0x71,0x82,0x4f,0x8b,0xc1,0xa0,0x9a,0x77,0xee,0xac,0x06,0xdc,0x6a,0xa0,0x34,0x50,0xa4,0xe0,0xda +.byte 0x3d,0xa0,0xf7,0x9a,0xb8,0xd5,0x59,0xe0,0x7f,0x05,0x04,0xd5,0x32,0x8c,0x49,0xf5,0x0a,0x0e,0x99,0x83,0xf5,0x47,0x2b,0x7c,0x7b,0x65,0x25,0x02,0xc4,0x88,0xbb,0x6a,0x4f,0x89,0x31,0x60,0xc2,0x47,0x8b,0x22,0xfc,0x4a,0xde,0xb3,0xb9,0xed,0xb8,0xdf,0xd7,0xd5,0x09,0x98,0xcc,0x5f,0xaf,0xbb,0x02,0xc3,0x62,0x62,0xee,0x99,0x42,0x1b +.byte 0xbe,0x5b,0xa8,0x5c,0x40,0x03,0x86,0x29,0x29,0x06,0x0b,0x53,0x46,0x29,0x03,0x3b,0x11,0x64,0xf1,0x09,0xca,0x69,0x69,0xfa,0xcc,0x85,0x23,0x14,0x1b,0xfd,0x65,0xb9,0xf5,0x6b,0xbb,0x2a,0x9d,0x6e,0x64,0x1a,0xe1,0x37,0x39,0xd4,0x85,0x40,0xa3,0xf9,0x04,0xec,0x9e,0x3b,0x74,0x97,0xa4,0x64,0x8a,0x48,0xb2,0x62,0xc1,0x1c,0xed,0x67 +.byte 0x6f,0x23,0xae,0x0f,0x64,0x2e,0xe5,0x92,0xb6,0xb5,0x71,0x24,0xc0,0x60,0x9a,0x10,0x23,0x6b,0x4a,0x22,0xe9,0x0a,0xaa,0x09,0x62,0x39,0xe0,0x40,0xee,0x13,0x27,0x14,0x73,0xeb,0x75,0x7b,0x4a,0xe1,0x42,0x65,0x37,0xae,0x80,0x08,0x26,0xf9,0x53,0x98,0x58,0xdd,0xf5,0xed,0x26,0x37,0x37,0x85,0xb5,0x88,0x91,0x05,0x2d,0x04,0xa6,0xd5 +.byte 0xa6,0x98,0xb0,0x0e,0x4b,0x4c,0x53,0x76,0x79,0xad,0x82,0xc5,0x16,0xba,0xd8,0x20,0x5f,0x4c,0x1d,0x69,0xa0,0xe0,0xe9,0xbc,0xb8,0x5c,0x10,0x4a,0x0a,0xd3,0x52,0x9c,0x2e,0x1b,0x6c,0xf7,0x43,0x83,0x6f,0xa9,0xcc,0x00,0xed,0x16,0x4c,0xc3,0x24,0x79,0x59,0x68,0xfb,0xf9,0xf6,0xb0,0xb4,0x01,0xc2,0xdd,0xf7,0xe5,0x3b,0x60,0x48,0x49 +.byte 0x32,0x48,0x05,0xa8,0x62,0xa3,0x03,0x9f,0x3d,0x91,0xdb,0x84,0x64,0x6f,0x1e,0x50,0x8e,0xdf,0x1a,0xa0,0xb1,0xf4,0x34,0x7c,0xe6,0xb7,0x7c,0x14,0xa1,0x65,0x1a,0xb4,0xdb,0x67,0x78,0xb1,0x88,0x3c,0xc2,0x5e,0x0e,0xea,0x32,0x15,0xc7,0xda,0xe4,0x9a,0x44,0xde,0x61,0x90,0x3b,0x97,0x11,0x5b,0x6d,0xa5,0x9a,0x2f,0x1b,0x8b,0xd7,0xdd +.byte 0x73,0xe4,0xc3,0x19,0x5d,0x68,0xcf,0x0e,0xe4,0x69,0xa5,0xeb,0x50,0x6f,0x79,0xff,0x91,0xc6,0x95,0x83,0xe8,0x72,0x6a,0x01,0x49,0x2b,0xcf,0x8f,0x93,0x1e,0xef,0x31,0x17,0x8f,0xa8,0x2b,0x5f,0x4b,0x79,0x8b,0xe5,0x6c,0xb7,0x61,0xd5,0x9e,0xe0,0xd4,0x25,0xc3,0x93,0x31,0x8f,0x66,0x6c,0x48,0x30,0x65,0xf4,0xd7,0xde,0x64,0xee,0xbd +.byte 0xbd,0xad,0x32,0xfc,0xf3,0xd8,0x7c,0x85,0x7c,0x24,0x40,0xb6,0xd4,0xe0,0x4b,0xc0,0xab,0xcc,0xeb,0x77,0x7c,0xb7,0x33,0x3c,0x90,0x04,0xaf,0x85,0xaa,0xb4,0xaa,0x90,0x67,0x29,0xd9,0x85,0x6a,0x34,0xf4,0xc4,0x6c,0xbc,0xb4,0x86,0x54,0x83,0xd5,0x5e,0xf3,0xdd,0x1a,0x56,0x5e,0xa5,0xd8,0x06,0xc0,0xa7,0x27,0xd4,0x0d,0x5b,0x08,0xf4 +.byte 0xb4,0x15,0xf9,0xb4,0x56,0x1c,0x80,0x98,0xc9,0xcd,0xf0,0x38,0x18,0xbe,0x99,0xec,0x7e,0x0c,0x3d,0xc1,0x98,0x26,0x9d,0x50,0xe4,0x00,0xcf,0x0f,0x0b,0x77,0x86,0x31,0x55,0x38,0xa4,0x31,0x50,0x51,0x64,0x88,0x81,0x05,0x32,0x99,0x38,0xd1,0x62,0x20,0x8e,0xf0,0x29,0x31,0xf5,0x79,0xbb,0x1e,0x0f,0xba,0x51,0x94,0xa9,0x54,0xcd,0x43 +.byte 0xce,0xe5,0x2c,0x29,0xa5,0x51,0x23,0x97,0x5d,0x36,0xff,0x51,0x5c,0x66,0xb7,0x62,0x1b,0x5f,0xd7,0x2f,0x19,0x07,0xff,0x0a,0xfc,0xf6,0x6e,0xb5,0xfd,0xa9,0x92,0x40,0xd3,0xe6,0x99,0x15,0x6f,0x1e,0x91,0xad,0x1f,0x4d,0x1c,0xe2,0xd9,0xcf,0x01,0x71,0xec,0x1a,0xa3,0xba,0x48,0x40,0xfd,0x18,0xb1,0x24,0x2b,0xd2,0x37,0xb5,0x74,0xdd +.byte 0x7e,0xf6,0x18,0xb4,0x7b,0x0e,0x7d,0x65,0x46,0x7b,0xe3,0x51,0x03,0xae,0xe1,0xd0,0x74,0xc6,0xc9,0xda,0x0e,0x79,0x6f,0xf5,0x62,0xc0,0x7e,0x76,0x3e,0x13,0x8b,0xe0,0x4c,0xfa,0x7e,0xe1,0xa2,0xee,0x9d,0x3f,0x91,0x9d,0x21,0xdd,0xc2,0xd0,0xa5,0x1d,0x17,0xd6,0xdc,0xeb,0xa3,0xc0,0x71,0xa0,0xfe,0xf0,0xaf,0x31,0xdc,0xa3,0xd4,0x21 +.byte 0x4a,0x32,0x1d,0x54,0x25,0x3b,0xc8,0x8f,0x68,0xcd,0x99,0xce,0x76,0x39,0x42,0xd8,0xca,0xf2,0x46,0x72,0xfe,0x52,0xc2,0x90,0x83,0xed,0xa0,0x6d,0x1b,0xf5,0xb1,0x09,0xae,0x2b,0x34,0x4f,0xd3,0x78,0x19,0x7f,0xad,0x8d,0x50,0x26,0x9c,0x36,0xa3,0xb5,0x3d,0x0b,0xa6,0x87,0x65,0xa0,0xdb,0x88,0x20,0xff,0xb6,0xfd,0xc5,0xbd,0x0a,0x28 +.byte 0xc8,0x9c,0x42,0x7f,0x24,0x58,0xe9,0x07,0x53,0x4b,0x9a,0x2a,0x1e,0x7b,0x90,0x97,0x78,0x74,0x80,0x5d,0xe5,0x6e,0xae,0x15,0x68,0xd4,0x2a,0x3a,0xd3,0x00,0x4f,0x4b,0xff,0x8f,0x1e,0x8f,0x9f,0x75,0xe5,0xea,0x9d,0xb9,0xed,0x8f,0xa9,0x2b,0x70,0xa8,0xcb,0x08,0x85,0xd3,0x8f,0x5d,0xc7,0x49,0x66,0xcc,0xa8,0x6d,0xbd,0x01,0x93,0xd5 +.byte 0xe6,0x75,0x2e,0x25,0x07,0x59,0x86,0x3f,0x44,0x8b,0x0b,0xb5,0x38,0xd5,0xbd,0xcf,0x48,0x8a,0xf7,0x71,0xd6,0x6b,0x2e,0x93,0x3d,0x0b,0xc0,0x75,0xee,0xa8,0x5d,0x9c,0x3d,0xa5,0xdb,0xc5,0x8d,0xac,0xda,0xf4,0xcd,0x5f,0x24,0xfe,0x86,0x14,0x44,0x65,0x3f,0x89,0x7f,0xd3,0x61,0x48,0xb0,0x43,0xf0,0x1e,0xde,0xbc,0xb7,0x51,0x0f,0xfc +.byte 0x32,0xf2,0x04,0xe2,0x4b,0xcb,0xbb,0x63,0x7d,0x5b,0x9a,0xb1,0x91,0x57,0x89,0xdc,0xed,0xde,0x91,0x2d,0xdd,0x42,0xc8,0x3c,0xb0,0xd7,0xa5,0xbc,0xa7,0x33,0x14,0x32,0xaf,0xf7,0xe9,0x25,0xd2,0x1a,0x64,0xf7,0x1b,0xab,0x0e,0xbc,0x50,0xbc,0x85,0x44,0xe0,0xa6,0xf1,0x4a,0x32,0x2f,0x30,0x27,0x48,0x4f,0xfc,0x8a,0x5a,0x78,0xe7,0x16 +.byte 0x55,0xcf,0xca,0x15,0xa8,0xa8,0xa2,0xef,0x9a,0x16,0x02,0xf4,0xb0,0x44,0xfd,0xc4,0x51,0x01,0x4f,0x1d,0x9d,0x09,0x62,0x42,0xe9,0x8b,0x18,0xa4,0x65,0xef,0x8b,0xfe,0x71,0x9f,0x4b,0x47,0x48,0x41,0x73,0x5c,0x0c,0x52,0x7d,0x79,0xbc,0x93,0x2a,0xaa,0x81,0x99,0x21,0xa5,0x9e,0xac,0xcd,0x57,0x51,0x50,0xbc,0xc9,0x96,0xaf,0xdf,0x1a +.byte 0x8f,0xee,0x36,0x05,0x20,0x32,0xe8,0x51,0x94,0x72,0x12,0xa3,0x17,0x25,0x7f,0x0a,0x3e,0xcc,0x22,0xcf,0x05,0xb2,0x2b,0xaa,0x36,0x01,0xdf,0xd4,0x4e,0xe1,0x02,0x43,0x4e,0xac,0x50,0x64,0xcd,0x2f,0xc2,0xa9,0xb0,0xf2,0xf2,0x4c,0xdf,0x16,0xa6,0x54,0xf7,0xbf,0x1a,0x69,0xeb,0xa1,0x5a,0xc7,0xcf,0x46,0x2d,0xc2,0x3a,0x7f,0x4a,0x14 +.byte 0x22,0x15,0x46,0x46,0x2d,0xc1,0x98,0xf7,0x0b,0xf3,0x27,0xfc,0x78,0x67,0x05,0xd8,0xe0,0xf6,0xb8,0xb6,0x0b,0xdb,0x4d,0x6b,0x7e,0x9b,0xbf,0x5c,0x15,0x97,0x49,0x9f,0x6f,0x11,0x6c,0x6e,0x1d,0x1e,0x65,0x5b,0xb9,0x60,0x8f,0xa3,0xa9,0x99,0x17,0x92,0xb8,0x65,0x25,0xc4,0xef,0xea,0xa6,0xc0,0x57,0xa9,0x4c,0x78,0xe3,0xd6,0xf2,0x19 +.byte 0x9c,0x86,0x9e,0x45,0x3e,0xfd,0x21,0x4c,0x2a,0x56,0x7c,0x23,0xf2,0x22,0xa1,0x81,0xdb,0xe6,0xfa,0x85,0x19,0x3b,0x1d,0x61,0xb3,0x21,0xb5,0x64,0x1d,0x07,0x66,0xd2,0xe5,0x9c,0xb0,0x76,0x9d,0xc9,0x02,0x6a,0x8d,0xd5,0x84,0xd5,0xa7,0x7c,0x70,0x64,0x46,0xd6,0xff,0xc7,0x9f,0x2f,0xed,0xc1,0x5a,0xcb,0x56,0x12,0x31,0x9d,0xff,0x66 +.byte 0x9a,0xf8,0x50,0xc6,0x54,0xfd,0x8d,0x49,0x32,0x8c,0xdd,0x8c,0xbe,0x30,0x79,0xaf,0x1a,0xd5,0x28,0x1d,0x03,0x87,0x12,0x60,0x7a,0xcc,0xe6,0xe8,0x4e,0x21,0x5d,0xa3,0x06,0xfb,0xdf,0xf6,0x31,0xd6,0x10,0x3e,0xec,0x23,0x69,0xc7,0x7b,0xf6,0x78,0xa6,0xd1,0x8a,0x48,0xd9,0xdc,0x35,0x1f,0xd4,0xd5,0xf2,0xe1,0xa2,0x13,0x8a,0xec,0x12 +.byte 0xa7,0xf1,0x5d,0xb2,0xc3,0x6b,0x72,0xd4,0xea,0x4f,0x21,0xff,0x68,0x51,0x51,0xd9,0xd7,0x2f,0x28,0xd7,0xdf,0xbc,0x35,0x4f,0x49,0x7e,0xe7,0x21,0x82,0xd7,0x0c,0x7c,0xf4,0x86,0x86,0x62,0xcd,0xf5,0x23,0x77,0xc1,0x14,0x8a,0xc4,0x2a,0x82,0x74,0x0e,0x90,0x93,0xd5,0x5a,0xc0,0x57,0x93,0x1a,0xe1,0x1c,0x13,0x17,0x72,0xc3,0xa6,0x54 +.byte 0xc4,0xe2,0xfc,0xd3,0xa0,0xce,0x08,0x87,0x9e,0x2a,0xaf,0xa7,0xbb,0x2d,0xaf,0xc0,0x38,0x97,0xc8,0x6d,0xb8,0x7b,0x75,0xc5,0xf2,0x79,0x62,0xdc,0x7c,0xa9,0xfd,0x19,0xa2,0xb1,0xee,0xdf,0x90,0x18,0x5a,0xdb,0x3c,0xba,0x0d,0x84,0xd6,0xaf,0x15,0xee,0xb6,0xa5,0x78,0x38,0x87,0xdf,0x42,0xd6,0xd1,0xa2,0xe9,0xe0,0xa6,0xf2,0x4e,0xa4 +.byte 0xed,0xa5,0xf6,0x66,0x7f,0x99,0xbc,0xfb,0x4b,0x37,0xca,0x5a,0xb3,0x29,0x8e,0x80,0x30,0x8b,0x74,0x7b,0xac,0x61,0xfb,0xca,0x62,0xfe,0x24,0xc4,0x6e,0xac,0x66,0x97,0xaa,0x9a,0x99,0xe6,0xa8,0xa4,0xd8,0x62,0x58,0x7c,0xd1,0xeb,0xee,0xc8,0x08,0xa0,0x54,0xde,0xb1,0xef,0x57,0x2c,0xb6,0x2c,0x78,0x22,0x10,0xbb,0xfe,0x4b,0x77,0xa5 +.byte 0x5a,0xed,0xbb,0xf8,0x97,0x96,0x20,0xa9,0x8c,0x78,0xb5,0xb9,0x55,0xc9,0xaf,0xb9,0xa1,0x1f,0x13,0x52,0xf9,0xbb,0xaa,0x98,0x01,0x57,0xa6,0x88,0xaa,0x5c,0xf0,0x62,0x5b,0x3e,0xe1,0x5f,0xf4,0x98,0x95,0x8b,0x8f,0x48,0xd6,0xd5,0x8b,0xc2,0x1d,0x45,0x7d,0xe2,0x03,0x66,0x84,0xfc,0xbd,0x8e,0x95,0x9f,0x58,0x99,0x7b,0x4c,0xb6,0xe5 +.byte 0xe2,0xf9,0x2e,0x92,0x58,0xca,0xa9,0x24,0x9c,0x7c,0x46,0xdf,0xea,0xb4,0x6e,0x0e,0xa5,0x9c,0x14,0xbf,0x25,0x5b,0x39,0x4a,0xaf,0x31,0xaa,0xd1,0x2c,0xe6,0x06,0x3d,0xc4,0x60,0xc7,0xcd,0x49,0x8d,0xe1,0x50,0x55,0xe4,0x72,0x68,0xed,0x43,0xb8,0x85,0xa3,0xc3,0xf1,0xf5,0xd1,0xcf,0xcb,0x57,0xac,0x04,0x16,0x22,0xe4,0xfc,0x4a,0x13 +.byte 0x60,0x3f,0x09,0xa4,0xf2,0x9b,0x34,0xeb,0x0c,0x10,0x57,0xc3,0x3f,0x15,0xb5,0x1b,0x6a,0xb3,0x7d,0x37,0x02,0x4c,0x0f,0x6f,0x8b,0x4d,0x5d,0x57,0x7d,0xbf,0x00,0x8a,0x74,0xb4,0x4c,0x5f,0x90,0x27,0x76,0x09,0x8c,0x18,0x3f,0x26,0x3a,0x09,0x06,0xdd,0x8b,0xff,0x0e,0xa4,0xae,0xef,0x0c,0x81,0xf2,0xf3,0x1f,0xe0,0x33,0x33,0x37,0xc6 +.byte 0xc3,0xfb,0x14,0xdd,0xa1,0x16,0x84,0x80,0xcb,0x37,0xe7,0x97,0x6d,0x21,0xa7,0x71,0x19,0x2b,0x2d,0x30,0xf5,0x89,0x2d,0x23,0x98,0xfc,0x60,0x64,0x4a,0x26,0x65,0x4a,0xef,0x12,0x59,0xa3,0x8c,0xd9,0xbd,0xdc,0xb7,0x67,0xc9,0x8d,0x51,0x72,0x56,0x6a,0xe5,0x59,0xa2,0x53,0x4f,0xb6,0x53,0xff,0xb0,0xd4,0x06,0x7f,0x79,0x23,0xf9,0xcb +.byte 0xbf,0x9a,0x93,0xde,0x88,0x33,0x58,0x70,0xa7,0xcc,0x07,0xb1,0x44,0xb9,0x99,0x1f,0x0d,0xb9,0xc9,0x18,0xdc,0x3e,0x50,0x22,0xfb,0x4e,0x86,0x0d,0xc0,0xe7,0x7f,0xc6,0xa1,0x52,0x0d,0x8d,0x37,0xe6,0xaf,0xe3,0x13,0xbe,0xa6,0xf9,0x59,0x39,0x0f,0x17,0x66,0xce,0xb1,0x7d,0x7f,0x19,0x1a,0xf8,0x30,0x3a,0xa5,0x72,0x33,0xa4,0x03,0xb6 +.byte 0xb6,0x9b,0xde,0x7a,0x7a,0x62,0x3d,0x85,0x98,0x8e,0x5d,0x8a,0xca,0x03,0xc8,0x2c,0xae,0xf0,0xf7,0x43,0x3f,0x53,0xb2,0xbb,0x1d,0xd0,0xd4,0xa7,0xa9,0x48,0xfa,0x46,0x5e,0x44,0x35,0x50,0x55,0xdc,0xd5,0x30,0xf9,0x94,0xe6,0x5f,0x4a,0x72,0xc2,0x77,0x59,0x68,0x93,0x49,0xb8,0xba,0xb4,0x67,0xd8,0x27,0xda,0x6a,0x97,0x8b,0x37,0x7e +.byte 0xe9,0x59,0x89,0xc7,0x5e,0xd9,0x32,0xe2,0xaa,0xd1,0xe9,0x2b,0x23,0xca,0x9d,0x89,0x7a,0xf5,0xe4,0xfb,0x29,0xcc,0x88,0xfb,0x82,0x0f,0xbf,0x47,0x54,0xca,0x2b,0x4b,0xd8,0x47,0x7f,0x65,0x38,0x5a,0xb3,0xe8,0x0b,0xd7,0xe1,0x8b,0x89,0x57,0x32,0xdb,0xa3,0x85,0xba,0xf9,0xbc,0x52,0x92,0x20,0x10,0x66,0x54,0x81,0xe1,0x49,0x3f,0xe1 +.byte 0x8c,0x2e,0x0b,0x3b,0xe7,0x49,0xb4,0x60,0x5a,0x20,0x33,0xc4,0x4e,0x81,0xef,0x96,0xda,0x73,0x90,0x2b,0xb4,0x86,0xa1,0x5c,0xcd,0xa0,0xc7,0xf3,0x06,0x0d,0x2a,0x5a,0x41,0x96,0xf5,0x40,0x1b,0x0a,0x3a,0xb7,0x38,0xe1,0xbb,0xe3,0x42,0xf9,0x52,0xe5,0x98,0xe2,0x17,0xd4,0xb0,0x09,0x73,0x75,0xc1,0x00,0x18,0x0f,0xa7,0x0b,0x58,0xc1 +.byte 0x78,0x5c,0x0c,0x05,0xd8,0xfb,0xc5,0xfd,0x5c,0x66,0xbe,0x54,0x68,0xd1,0x16,0x54,0xfb,0xc5,0x97,0xd7,0x03,0x82,0x47,0xbb,0x47,0xea,0x9e,0x8b,0x90,0x07,0xb2,0xd2,0x06,0x14,0x79,0xeb,0xb6,0xe1,0x10,0x55,0xa9,0x13,0xea,0x65,0x7a,0xd0,0xe5,0x66,0x5d,0xe7,0x7b,0x10,0x5f,0x7c,0x25,0x7d,0x4e,0x77,0xb3,0x19,0x02,0xb1,0x45,0x1c +.byte 0x1a,0x51,0x24,0x72,0xd4,0xaa,0x03,0x0c,0x37,0x2a,0x78,0x81,0x05,0xca,0x73,0xb9,0xb5,0xd8,0xf5,0x25,0x2b,0x30,0x59,0x00,0x66,0xbd,0x6c,0x38,0xa2,0xc3,0xfb,0x43,0x85,0x6d,0xab,0xca,0xd8,0x73,0xa8,0x76,0xda,0x6e,0x00,0x19,0xd0,0xb9,0x1e,0x9b,0x33,0xe4,0x57,0x68,0xf4,0xb8,0x35,0x44,0xe6,0x74,0xd2,0x33,0x64,0xa1,0x41,0xa6 +.byte 0x5a,0xf6,0x8e,0x29,0xb5,0xa6,0x21,0x8e,0xc4,0x0c,0x0c,0x16,0x81,0x08,0xef,0x0a,0x41,0x08,0x34,0xc7,0xe1,0xd8,0xa8,0x68,0xb1,0xf3,0x9a,0x7a,0xaa,0x90,0xc0,0x77,0x32,0x70,0x50,0x5c,0x92,0xfc,0x38,0x31,0xaf,0x3e,0xd8,0xd8,0x4b,0x90,0x99,0xc4,0x17,0xde,0xa6,0xb5,0x29,0xc0,0x82,0x45,0x20,0x08,0x0c,0x4f,0x76,0x36,0x56,0x7e +.byte 0x07,0x17,0x42,0x78,0xa1,0x2d,0x62,0x48,0x81,0x57,0xc4,0xcf,0xf4,0x89,0x34,0x78,0x10,0xe6,0x98,0x78,0xb0,0x69,0x15,0x06,0xdb,0x2b,0xbb,0x8b,0xa5,0x72,0x50,0x24,0xae,0x6b,0x33,0x49,0x7b,0x9d,0x69,0x74,0xc8,0x7c,0xca,0x7a,0x31,0x39,0x0d,0x72,0x78,0xc1,0x6b,0x97,0x50,0x97,0xea,0x90,0xab,0xe7,0xdf,0x29,0x2e,0xf7,0x6e,0x49 +.byte 0x95,0xab,0xbd,0xea,0x1f,0xd4,0x93,0x4d,0x30,0x6b,0x6d,0xb0,0x86,0x38,0x2c,0xc8,0x77,0x2c,0xb5,0xb5,0x5c,0xd9,0xbb,0xe9,0x7d,0xb2,0xb7,0x6b,0xd1,0x1c,0xd3,0xd0,0x66,0x51,0x63,0x8c,0xf3,0x13,0xad,0xcf,0xeb,0x82,0x12,0x1a,0x6d,0xf5,0x75,0x66,0xa2,0x55,0x30,0x64,0x1d,0x68,0x46,0x50,0x5a,0x93,0xf1,0xc2,0x13,0x68,0x95,0x55 +.byte 0x51,0xe0,0x56,0x3a,0x96,0x86,0x8e,0xfb,0x5f,0x3b,0x1f,0x49,0x9c,0x3d,0xe5,0xf2,0x8c,0x3f,0xd6,0x6d,0x17,0xc7,0x18,0x59,0x1a,0x8a,0x72,0xa8,0xb3,0x39,0xda,0xc4,0xfa,0xc5,0xca,0xdf,0x48,0x48,0xd1,0xd2,0xba,0x14,0x5d,0x28,0x3b,0x4c,0xb3,0xcb,0x8d,0x1b,0x91,0x46,0x6b,0x2d,0x21,0x21,0x99,0x98,0x6d,0xcc,0x6b,0x8e,0x91,0x1d +.byte 0x42,0xc2,0x72,0x1a,0xc6,0xd2,0xaf,0xed,0x10,0xff,0x1e,0xa5,0xae,0x16,0xc0,0x05,0xdf,0x37,0xe2,0x1e,0x2e,0x15,0x21,0x0c,0x33,0x6f,0xfd,0xed,0x3f,0x7e,0xd7,0x69,0xfb,0x76,0x79,0x65,0xe9,0xd9,0x8d,0xf6,0xc0,0x6c,0xf7,0x15,0x7f,0x04,0xd7,0x71,0xcc,0xaa,0x85,0x73,0x23,0xf1,0xc8,0x62,0xd0,0x8e,0x01,0x35,0xff,0x4f,0x4f,0x13 +.byte 0xe6,0x28,0xf1,0xc1,0x7a,0x04,0xc0,0x7b,0x75,0xac,0x1c,0x55,0xb4,0x7c,0x00,0xb9,0xe0,0x14,0x67,0xb6,0xc5,0x69,0x62,0x0b,0xe6,0xb5,0x46,0x86,0x6f,0x09,0xdf,0x84,0x2c,0xa8,0x30,0x89,0x5b,0x24,0x47,0xfa,0x43,0x24,0xd5,0x07,0xf7,0xba,0xab,0x1b,0xfd,0x60,0xad,0x89,0x5f,0x60,0x87,0x78,0x48,0xbb,0xc0,0x63,0xf4,0x27,0x86,0x33 +.byte 0xf4,0x49,0x64,0x4c,0x5c,0x94,0x9a,0xb8,0x0f,0x45,0xe2,0x92,0x7d,0x9a,0x86,0xdb,0xb7,0x05,0xe8,0xd7,0x64,0x44,0xfa,0x74,0x60,0x72,0x89,0x13,0x8f,0x2e,0x96,0x33,0xa9,0x12,0x4a,0x62,0x6b,0xc3,0xcb,0x55,0xd3,0xef,0x17,0x11,0x82,0x4a,0x51,0x77,0xbf,0x63,0xa0,0x21,0xfc,0xbc,0x0c,0x6f,0x9a,0xfd,0xde,0xbe,0x9f,0x2e,0x50,0xd5 +.byte 0x32,0xa4,0xf0,0x1b,0xed,0xfa,0xbf,0xcd,0xc9,0xd8,0xf8,0x06,0xf2,0x17,0x8a,0x92,0x18,0xb8,0xc3,0xe5,0xbf,0xc2,0xf4,0x77,0xb9,0x71,0xfb,0x60,0x6e,0xe7,0xad,0xe4,0x7d,0xd4,0x59,0xa9,0xbd,0x21,0xd5,0x03,0x69,0xb5,0xf1,0xce,0xb5,0x88,0xd9,0x1d,0xc7,0xb3,0x14,0xa6,0xb1,0x30,0x8d,0xaa,0xcd,0xe5,0x50,0xc5,0x0d,0x4b,0x6d,0xde +.byte 0x17,0x4d,0xd2,0x93,0xf3,0xc2,0x8d,0x59,0xf1,0xd0,0x2f,0xb5,0x62,0x18,0x81,0x07,0xb3,0xfb,0x08,0xb3,0xa8,0x15,0xe0,0x9a,0x4c,0xa5,0x24,0xcd,0x47,0x69,0xf9,0xf7,0xda,0xa9,0xff,0xe1,0xe2,0x43,0xe3,0x69,0xf1,0x26,0xac,0xc6,0x42,0xf2,0x32,0x42,0xfb,0x7c,0xa2,0x94,0xc6,0xaa,0xd9,0x05,0x29,0xc6,0x3d,0x45,0x44,0x1d,0x52,0x7e +.byte 0x48,0x47,0x93,0x34,0x08,0xa0,0x93,0xc2,0x5e,0x9b,0x22,0xc1,0x2a,0xaa,0xfe,0xa2,0x26,0x00,0xa8,0xbb,0xd0,0x58,0xfd,0x5a,0x09,0x4f,0xa1,0x0c,0xff,0x66,0xcc,0x88,0x3a,0x69,0x9a,0x12,0xb6,0x05,0x6e,0xdf,0x54,0x5d,0xe7,0x03,0x8e,0x95,0x86,0x68,0x83,0x83,0x6f,0x04,0x0b,0x9c,0x05,0x05,0x77,0x14,0x83,0x47,0x98,0x5f,0x22,0xaf +.byte 0xa8,0xfd,0xf3,0xe7,0x73,0xec,0xef,0xd7,0x57,0xd9,0xef,0xe7,0x1b,0x18,0x24,0x09,0xd9,0x14,0xf9,0x60,0xba,0x05,0x0f,0x8f,0x33,0x48,0xb1,0x06,0x41,0x2e,0x95,0x3d,0xf5,0xcf,0x14,0x50,0x5d,0xb6,0x93,0xeb,0xd5,0xf8,0x9f,0x7c,0x8f,0x23,0x35,0x39,0x30,0xc8,0xf6,0x74,0x07,0xc4,0x4c,0xcf,0xe1,0xdb,0x3e,0x9f,0x0a,0xfd,0x48,0x9e +.byte 0x56,0xe4,0xa7,0xa3,0x07,0x06,0x18,0xbb,0x50,0x75,0x33,0x48,0xb9,0xa1,0x4e,0x63,0x65,0xd3,0xf4,0x40,0xc3,0x2d,0x52,0x9a,0xad,0x56,0x7f,0xff,0xb0,0x46,0x24,0xa1,0x78,0x5f,0xb6,0xa8,0x72,0x28,0xb3,0x6c,0x61,0x6e,0xa0,0xfc,0xcb,0xe8,0xfe,0x07,0x28,0x97,0x1c,0xda,0x76,0xc7,0x98,0x2f,0x00,0x1d,0xf2,0x17,0xbe,0x48,0x3f,0xd3 +.byte 0xc7,0xbe,0x89,0x89,0xe1,0x96,0x75,0x1e,0xee,0xf9,0x78,0x67,0xbf,0x12,0x1e,0xe2,0x14,0xbf,0xd4,0xfd,0x49,0xaa,0xbf,0xc6,0xb8,0x4f,0x84,0xcd,0x5d,0x3c,0x45,0xb3,0xb0,0x14,0x6f,0x2d,0x6f,0x35,0xfa,0x60,0x7f,0x64,0x40,0xc8,0xde,0xa8,0x2b,0x56,0x75,0x74,0xc9,0xe1,0x2c,0xe2,0x2f,0xc2,0x3e,0xba,0xa3,0x20,0xd8,0xa3,0xbc,0x69 +.byte 0x9d,0x1c,0xcf,0x5e,0xe3,0xc0,0x66,0x72,0xce,0x22,0x96,0xad,0x47,0xc9,0x5b,0xac,0x45,0xdc,0x4f,0x8e,0xf6,0xa6,0x2e,0x4a,0x1e,0x01,0xe4,0xb7,0x83,0x68,0x92,0x2b,0x98,0xdf,0x22,0x0f,0xd9,0x4f,0x6f,0x72,0x37,0x56,0xfa,0x1b,0xbb,0x5a,0x4d,0xd8,0x5b,0xc6,0x65,0xf8,0xd4,0x4e,0xa5,0xc0,0x0f,0x2d,0xc2,0x38,0xa4,0x6c,0x33,0x2f +.byte 0x7a,0x52,0x14,0xbb,0xfb,0xb3,0xf2,0xa9,0xbf,0xa0,0xad,0xcb,0x8c,0x81,0x47,0x26,0xe9,0xfb,0xc1,0x8e,0xc6,0xe5,0x39,0x48,0xa5,0xb3,0xbc,0xb2,0xe4,0xac,0xf9,0x49,0xbb,0x34,0x2b,0xc4,0x4d,0x06,0xe4,0xd6,0x0b,0xdd,0x55,0x36,0xe6,0xaf,0x64,0xea,0x84,0xf2,0xa5,0x68,0xe3,0x4e,0x4c,0x77,0x46,0x6c,0x17,0x6e,0x08,0x99,0x96,0x1b +.byte 0xb5,0x44,0x3b,0x94,0x2d,0x0f,0xcd,0x90,0x17,0x8f,0x80,0xcb,0xc2,0x30,0xbe,0xe1,0x36,0xdc,0x1e,0x48,0xe3,0x2c,0xe5,0xc9,0xbc,0xbd,0xff,0x3f,0x95,0x59,0x35,0x58,0x2f,0x9c,0xa6,0x1c,0x45,0xa7,0x61,0xde,0xf2,0x9c,0xa3,0x04,0x0f,0xa0,0x93,0xaf,0x69,0x2b,0x0d,0x1c,0xfc,0xff,0x97,0x1c,0x69,0x7e,0x30,0x06,0x88,0x01,0xa4,0xf1 +.byte 0x32,0x36,0xed,0x56,0x89,0xff,0xa9,0x63,0x3a,0x17,0x91,0xc5,0xba,0x6e,0x38,0x84,0xb1,0xaf,0x28,0xac,0x8a,0xb2,0x60,0xbe,0x1b,0x0a,0xd8,0x05,0x22,0x25,0x56,0xbe,0x75,0x47,0x59,0xcf,0x8c,0x2e,0xb3,0xc3,0x5f,0x06,0x81,0x65,0x39,0x78,0xed,0xe3,0xc9,0x5a,0x99,0x01,0xae,0xfb,0xf6,0xed,0x55,0xf5,0xbd,0x2f,0x93,0xf1,0x62,0x6a +.byte 0x54,0x4f,0xe1,0x9f,0x0a,0x23,0x83,0xbc,0xc2,0xba,0xb4,0x6f,0xd9,0x88,0xc5,0x06,0x7a,0x83,0xd5,0xdb,0xeb,0x49,0x48,0xd6,0xc9,0x45,0xa2,0xd0,0xc4,0x06,0xd9,0x01,0xec,0x2d,0x6d,0xc1,0x95,0x69,0x22,0xd0,0xae,0x88,0x75,0x8b,0xd2,0x02,0x98,0x83,0xd9,0x10,0x27,0x8d,0x68,0x97,0x5e,0x6b,0xdd,0x51,0xbb,0x92,0x38,0xa8,0x12,0xde +.byte 0x0f,0xa4,0x1e,0x2e,0xec,0xd5,0x73,0x55,0x5f,0x46,0x6a,0x0f,0xc9,0x50,0x0d,0xb3,0x55,0x20,0xe0,0x01,0xef,0x92,0x29,0x04,0x38,0x60,0xbd,0xc7,0x0b,0x1e,0x94,0x10,0x37,0xb7,0x02,0x94,0xbc,0xde,0xdb,0xb3,0xe3,0x1e,0xd5,0xe2,0xa8,0xed,0x46,0xe8,0xd4,0x8a,0x6c,0x93,0x4e,0xb7,0x73,0xa6,0x20,0x86,0xd2,0x82,0x2f,0x78,0x80,0x34 +.byte 0x44,0x79,0x84,0x2e,0x54,0xd0,0x30,0xa8,0x06,0x0c,0xcf,0x78,0xb4,0xd7,0xe2,0xc9,0x6e,0xfb,0x37,0x47,0x8f,0xe5,0x9f,0xf8,0xca,0x58,0x9c,0xb6,0x8b,0xbe,0xf4,0x3a,0xfe,0x75,0xec,0x1b,0x22,0xfd,0x93,0x92,0x07,0x09,0xcd,0xe6,0x2f,0xe6,0x51,0x0f,0x19,0x43,0x9c,0x6a,0x32,0x38,0x7d,0xf0,0x0c,0x78,0x81,0xb7,0x5c,0xbe,0x3c,0xf4 +.byte 0xc0,0x12,0x57,0x51,0x8a,0x69,0x84,0x0d,0x1e,0x0a,0xed,0x75,0xde,0x9e,0x31,0x8a,0x9b,0x18,0x82,0x01,0x5a,0xee,0x0e,0x33,0x3c,0x8c,0x95,0xb1,0x0b,0x05,0x3b,0xb2,0x85,0xab,0xaf,0x47,0xa2,0x03,0xb6,0xbb,0xda,0xf5,0xc8,0xbe,0x0e,0x4d,0xf8,0x84,0xe4,0xfb,0xd4,0x54,0x44,0x72,0xe5,0x30,0x57,0xa3,0xb6,0x47,0x8f,0xd3,0x32,0xc2 +.byte 0x83,0x07,0x4f,0x17,0x20,0x88,0xa1,0x0b,0xb3,0xef,0x4b,0x27,0x60,0xe0,0x9d,0xec,0xc2,0xdf,0xaf,0x2e,0x74,0xae,0xa4,0x2b,0x59,0x94,0x75,0xbe,0x54,0xf5,0x18,0x62,0xd9,0xe2,0x35,0xee,0x37,0x2e,0xdf,0x48,0xf8,0x80,0x32,0xcb,0xf1,0x83,0x78,0x03,0x68,0x06,0xd7,0x82,0xc6,0x76,0x2a,0x10,0x2a,0xdb,0x73,0xe6,0x65,0x24,0x9f,0x73 +.byte 0x1f,0x55,0x55,0xb6,0x10,0x65,0x80,0x70,0x5a,0x8e,0x8a,0xc8,0x4c,0xca,0x74,0x47,0x63,0x3f,0xee,0x49,0xc3,0x86,0x0f,0x66,0x56,0x08,0xee,0x9f,0xf5,0x5a,0x89,0x4c,0xb4,0x97,0x6e,0x75,0x61,0xc0,0xa7,0x92,0xa8,0x38,0x99,0x08,0x01,0x12,0x82,0x77,0x80,0x20,0x9d,0x62,0x46,0x92,0xdd,0x39,0x4d,0xcf,0xc0,0x8a,0x3e,0x30,0x9a,0xfa +.byte 0x28,0xe8,0xd8,0xf8,0x07,0x0d,0xab,0x4c,0xd4,0x02,0x4c,0xd7,0xc3,0x16,0x89,0x24,0x84,0x52,0x7c,0xa4,0x1b,0x54,0x7f,0xc4,0x74,0x4f,0x88,0x0a,0x14,0x03,0xd9,0x1a,0x48,0xff,0x2c,0xfb,0xbf,0x33,0xf1,0xf8,0x0e,0xdd,0xc4,0x98,0xf2,0xbd,0x32,0x99,0x03,0x8e,0x56,0xc1,0x84,0x5d,0xa6,0xd7,0x21,0xf2,0x43,0xfb,0x3b,0xf5,0x6a,0x75 +.byte 0x20,0xfb,0x08,0x7b,0x66,0x15,0x47,0x31,0xb6,0xb6,0x7a,0xc9,0xe6,0xf5,0xd6,0x0a,0x14,0xb3,0x68,0x0a,0x32,0x13,0xb5,0xe6,0x56,0xbd,0xa5,0x24,0xe2,0xa3,0x7b,0x3d,0x01,0x23,0xed,0x08,0x09,0xb5,0xdb,0x7c,0xa9,0x4b,0x23,0xdb,0xa2,0x25,0x0c,0xc6,0xa4,0x0d,0xbb,0x1a,0x5d,0x1b,0x42,0x0b,0x86,0x72,0xc3,0xca,0x5b,0x14,0x04,0xa3 +.byte 0xd7,0x01,0xe7,0x17,0x78,0xd0,0x54,0xde,0xd4,0x76,0x3d,0xe1,0x7d,0x26,0x3e,0xb4,0x71,0x42,0x84,0x36,0x58,0x78,0x22,0x32,0x26,0x0e,0xc8,0x99,0x05,0xe3,0x4a,0xa6,0x5a,0x1a,0x06,0x0a,0x88,0x47,0x51,0x5c,0xa8,0x72,0x70,0x0c,0x62,0x5f,0xf3,0x1e,0x02,0x50,0x20,0xc6,0x5c,0x50,0x30,0x1f,0x4e,0x5a,0x3a,0x02,0xc9,0xca,0x3f,0xa4 +.byte 0xf1,0x66,0x05,0xf3,0x19,0xe5,0xaa,0xdb,0x75,0x51,0xc1,0xb8,0x94,0xfa,0x2d,0xb6,0x8b,0x42,0xdc,0x9a,0xa3,0x13,0xeb,0x95,0x8d,0xf0,0x65,0x87,0xc9,0xa1,0x43,0xb4,0xfe,0x76,0xf4,0xc8,0xbb,0x19,0x96,0x84,0x9d,0x2f,0x92,0xe8,0x22,0x9a,0xf0,0xd5,0xf4,0xc4,0x8d,0x19,0x59,0x21,0xbf,0x15,0xfd,0xa6,0xc4,0xde,0x77,0x58,0xae,0x93 +.byte 0xb3,0xff,0x44,0x49,0x6e,0x37,0x94,0x04,0xd2,0x96,0xe9,0x80,0xd8,0xe3,0x93,0xd8,0xb4,0x7f,0x5f,0xcf,0xe5,0x9d,0x51,0x92,0xac,0x5d,0x9f,0x23,0x3a,0x3e,0xdf,0x96,0x68,0x9a,0x46,0x9b,0x1a,0x06,0x44,0x54,0xc4,0x2e,0x19,0x0f,0x50,0xee,0x73,0xda,0x39,0x7e,0xec,0xcb,0x1d,0x39,0xf7,0x9f,0xbc,0xe0,0x6d,0x49,0x56,0xf8,0xa7,0x24 +.byte 0x70,0xab,0xe1,0xc3,0x82,0x99,0x0a,0x4d,0x64,0x41,0x37,0xab,0x92,0x76,0xeb,0x6a,0x2a,0xa5,0xab,0x75,0xd7,0xe3,0x6a,0x72,0x4a,0x2b,0x57,0x02,0xc7,0xbe,0xd5,0x35,0xce,0xdf,0xee,0xf1,0xc6,0xe6,0x69,0xb7,0x76,0x99,0x22,0xb0,0xb9,0xe1,0x18,0x91,0x9a,0x35,0xd9,0x3a,0x19,0xc7,0x77,0xf2,0x2d,0xae,0x04,0x2e,0xb7,0x35,0x97,0xa5 +.byte 0xc6,0x97,0x4e,0x5d,0xbe,0xa9,0x35,0x2b,0x53,0x1a,0x6b,0x4e,0xa8,0xa6,0x22,0x48,0x2c,0x81,0x25,0xac,0x30,0x89,0x7b,0xb3,0x38,0x34,0x42,0x0b,0xa5,0x5f,0x02,0xe8,0xee,0x12,0x9b,0xce,0xe7,0x10,0xf9,0x65,0xb6,0xc5,0x74,0x06,0xef,0xc8,0x95,0xb3,0x40,0x30,0xec,0x1f,0x8e,0xeb,0x93,0x31,0x91,0x5a,0x2f,0xc2,0x90,0x85,0xaa,0x4c +.byte 0x51,0xc4,0xd0,0x3e,0xc8,0xc9,0x61,0x46,0x96,0xd4,0x60,0x56,0x7d,0x91,0xc4,0x24,0x76,0xfb,0x09,0x08,0x48,0x2f,0x4a,0x73,0x90,0x8e,0x9d,0xb2,0x38,0xa8,0x95,0x3e,0x6d,0x10,0x57,0x91,0x8d,0x55,0x62,0x1f,0x21,0xc7,0x01,0x15,0xb0,0x71,0x0b,0x26,0xbc,0x10,0x33,0x3e,0x79,0x37,0x64,0x85,0x98,0x42,0x21,0xcc,0xff,0x51,0x9a,0xc2 +.byte 0xe0,0x51,0xc3,0xff,0xf2,0x14,0x3d,0xe8,0x89,0x12,0xe7,0xcd,0x58,0x2f,0x87,0xfb,0x4a,0x50,0x6c,0x4d,0xdf,0x6f,0x64,0x9c,0x64,0x93,0x49,0x89,0xb6,0x0d,0x10,0x3f,0x13,0x9d,0x9a,0x35,0xf1,0xc0,0xe7,0xf0,0x9b,0xe8,0x39,0xd3,0x32,0xb2,0x23,0x67,0x77,0xdb,0xbc,0x0d,0x19,0x77,0x7a,0xbe,0x54,0x56,0x64,0xec,0xb6,0x2e,0x03,0xc5 +.byte 0x35,0xda,0xf1,0xc7,0x7d,0x0c,0x5a,0x32,0xec,0x86,0xdf,0xdb,0x94,0x73,0x4e,0xe3,0x45,0xf6,0xb2,0x63,0xc4,0xb7,0x80,0x59,0x4b,0x82,0x0b,0x61,0xa0,0xd5,0x43,0x18,0x78,0x35,0x93,0xde,0x46,0xa3,0xa2,0xd5,0xa2,0x71,0xec,0x3e,0xee,0x7a,0x89,0x7f,0xe9,0x70,0xff,0xad,0xae,0xa3,0x64,0xde,0x61,0xea,0x71,0xc2,0x37,0x98,0x8a,0x33 +.byte 0xd1,0x5f,0x03,0x08,0x23,0x24,0xc7,0x6c,0x62,0x24,0x6d,0x3f,0x44,0x8e,0x7c,0x9f,0x64,0x87,0xa5,0x79,0x0b,0x16,0x7e,0x4e,0xc0,0x0e,0xb8,0x77,0x56,0x9c,0xa5,0x7d,0x2d,0x5d,0x7d,0x81,0x13,0x2c,0x08,0xd5,0x83,0x84,0x38,0xfe,0x50,0x6f,0xa7,0x30,0x1f,0x06,0xee,0xab,0x13,0xc2,0x19,0xe6,0xcf,0x7b,0x85,0xfc,0x31,0x5b,0xdf,0xb8 +.byte 0x0e,0xe8,0x72,0xba,0x97,0x03,0x25,0xbc,0xad,0x74,0x7c,0xe1,0x59,0xf7,0x08,0xc1,0xe3,0x2d,0xb1,0x05,0xe7,0x1f,0xb9,0x0f,0x09,0xcd,0xe6,0x4f,0x5a,0xf6,0xcc,0xea,0xc7,0x92,0x35,0xf5,0xbc,0x3f,0xef,0xc9,0x2b,0xb4,0xd7,0x66,0x50,0xaa,0x80,0xb9,0xaf,0x5d,0x02,0x9c,0x77,0xdf,0xc0,0xc7,0xe2,0xbf,0x7d,0xff,0x69,0x63,0x3e,0x7c +.byte 0x91,0x94,0xae,0xa4,0x0a,0x25,0xa3,0x1f,0xf3,0xc6,0x88,0xda,0x82,0xac,0xbc,0x1f,0x8d,0x53,0xd6,0xfd,0x2b,0x5c,0x33,0x6d,0x03,0x68,0x92,0x38,0x07,0xeb,0x85,0x7f,0x55,0x89,0x17,0x58,0x7f,0xc7,0xb4,0x7a,0xff,0x15,0xe5,0xe0,0xea,0xce,0xac,0x3f,0x0f,0x09,0x25,0xfa,0x80,0xe3,0x07,0x89,0x4e,0xbf,0x7e,0xc2,0x42,0xf1,0x18,0x78 +.byte 0x05,0xe3,0x6a,0x2e,0xf7,0x2e,0xe5,0xbf,0x63,0x9e,0x48,0x69,0xe6,0x3c,0x4b,0x12,0x73,0x58,0xde,0x0c,0x73,0x27,0x9a,0x95,0xfa,0x51,0x8c,0xbb,0x74,0x31,0x53,0x4e,0x9a,0x13,0xda,0x49,0xf0,0x8b,0xb4,0xcd,0xc1,0xe9,0xaf,0xd6,0x59,0x59,0xa8,0x24,0x94,0xd9,0x4b,0xf8,0x20,0x79,0xa0,0x79,0x01,0x08,0x84,0x9b,0x04,0xe7,0xda,0x06 +.byte 0x22,0x3e,0x85,0x23,0x0c,0xa9,0xe5,0xcd,0xd3,0xc4,0x27,0x8c,0x4e,0x75,0xe4,0x60,0xb5,0xe9,0xc5,0xb7,0xb1,0x3a,0x84,0x68,0x40,0x3e,0x36,0x1b,0x9a,0x64,0x50,0x45,0x6f,0xc6,0x58,0x70,0x46,0x1a,0xca,0xf6,0x81,0x02,0xa8,0x17,0x4d,0x92,0x0d,0xae,0x88,0x1a,0xbd,0x52,0xc0,0x32,0xb1,0x2d,0x2d,0x12,0x9c,0x29,0xfa,0xa6,0x70,0x5f +.byte 0xe7,0x0b,0xd5,0x5d,0xa5,0x49,0x9e,0x9e,0x5b,0x55,0xbc,0xce,0x5b,0xb4,0xef,0x3f,0xe4,0x7c,0x50,0xef,0x58,0xf5,0xfe,0xcc,0xf6,0xd0,0xf1,0x3a,0x0b,0xf2,0x3e,0x1c,0xce,0x22,0x7e,0x88,0x1c,0x8f,0x9a,0x69,0x76,0xa9,0xf0,0x18,0xa8,0x76,0x7f,0x0c,0xa6,0xfd,0x67,0x43,0xc7,0x43,0x67,0x98,0x6e,0x37,0xd4,0x82,0x29,0x62,0xa6,0xcf +.byte 0x2b,0x7c,0xee,0x14,0x4d,0x2d,0x1a,0xfc,0xc6,0xaf,0x5b,0xea,0x8a,0xa8,0x9a,0x3b,0xab,0x7d,0x76,0x15,0x50,0xe8,0x95,0x31,0xc8,0x5d,0x5d,0x19,0x68,0x07,0xf5,0xb0,0x29,0x5f,0x79,0x4f,0x0d,0x2b,0xba,0x1d,0xd2,0xf2,0x83,0x50,0x89,0x0b,0x96,0x16,0xde,0x7c,0x04,0xea,0x9c,0x75,0x97,0x7e,0xd7,0x2c,0xee,0x82,0x7c,0xbf,0x0b,0x71 +.byte 0x05,0x59,0xd7,0x11,0x70,0x8e,0x41,0x62,0x91,0x38,0x3a,0x69,0x3f,0x3d,0xde,0x8e,0x03,0x0a,0xea,0xfb,0xea,0x36,0xf0,0x5c,0xb6,0xdf,0x9a,0x66,0x9e,0x64,0x43,0xaf,0xb7,0x83,0xd1,0xef,0x7c,0xb6,0x9b,0x40,0xd8,0x0f,0x0e,0x0b,0xa7,0xd0,0x98,0xca,0x8e,0x3b,0xed,0xb7,0xa5,0x19,0xca,0x67,0x30,0x87,0x17,0x0e,0xc4,0xe1,0xaa,0x6e +.byte 0xdb,0x67,0xbd,0xf5,0xed,0x10,0x68,0xb1,0x43,0x73,0xaa,0x99,0x1a,0x83,0x0d,0x1a,0x5a,0x8b,0xc8,0xff,0xe9,0xe0,0x1c,0x15,0xda,0xb0,0x99,0x90,0xce,0x1f,0xfd,0x17,0xd2,0xfa,0x8f,0x3a,0xe8,0x1b,0xd3,0x96,0x2a,0x0d,0xa9,0x4d,0x6d,0x77,0x53,0xe8,0x8f,0xc7,0x6b,0xb4,0x3b,0x6d,0x0c,0x8e,0x35,0x67,0x09,0x6e,0x43,0x36,0x52,0x3e +.byte 0x0e,0xf6,0x4f,0x16,0x40,0x45,0x7f,0xab,0x39,0xf2,0x23,0xfb,0x4e,0xea,0x6e,0xcf,0xa0,0xb6,0xec,0x6d,0x93,0x1b,0x6f,0x9f,0xd6,0xce,0xcd,0x1e,0x90,0x5c,0x7d,0x61,0xc4,0xae,0x02,0xb2,0x7a,0xb2,0x25,0x59,0xac,0x0a,0xcb,0xc6,0x28,0xa2,0x9c,0x7b,0x4b,0x05,0x5a,0x23,0x55,0xc8,0x9a,0x72,0xe6,0x3b,0x91,0xa2,0x9b,0x12,0x1c,0x1f +.byte 0x4b,0x85,0x42,0x9d,0x73,0xf9,0x50,0x3e,0x12,0xc4,0x51,0xb4,0xe1,0x2a,0x08,0xfc,0xf9,0xc8,0x5a,0x53,0x79,0xcc,0xd1,0x24,0x4c,0xc1,0xf6,0xe7,0x10,0x9d,0xe6,0xce,0xcc,0xc7,0x04,0xf8,0x7a,0xd4,0x2f,0x0a,0x97,0x32,0xaf,0x38,0x77,0x97,0x78,0xc8,0xa9,0x9a,0xca,0x65,0xee,0x2b,0x07,0x0e,0xb1,0xaa,0x3c,0xee,0x03,0x85,0xf7,0x09 +.byte 0xd1,0x03,0xe5,0x4f,0x8a,0x6b,0xba,0x83,0xd2,0x6a,0x05,0xe6,0x4e,0x59,0x21,0x26,0xcc,0x8d,0x4a,0x91,0x21,0x6b,0xe5,0x7a,0x83,0xed,0x4e,0x95,0x4b,0x16,0x98,0x3f,0x2d,0x51,0xc5,0x67,0x56,0x58,0xc9,0xc3,0x32,0xff,0x91,0x9d,0x7f,0x6d,0xc7,0x8a,0x40,0x58,0x56,0x35,0xca,0xc1,0xa9,0x07,0xe2,0xc6,0xe1,0x8f,0x7b,0x7c,0x68,0x4e +.byte 0xde,0x19,0xc8,0x9c,0x41,0x65,0x74,0x33,0xb5,0x5b,0xf7,0x47,0x91,0x51,0x41,0x56,0x54,0xaa,0x8e,0xa5,0x1f,0xdb,0x50,0xa4,0x97,0x7a,0xea,0x86,0x2e,0xfd,0xdd,0x64,0x23,0x6e,0x44,0x28,0xfb,0xae,0xe8,0xc2,0x38,0x96,0x56,0x2e,0xd8,0x7e,0x3a,0xc8,0xc6,0x7f,0x20,0x15,0xad,0x9f,0xfa,0x5c,0x55,0xf5,0xe1,0x9a,0x07,0x84,0x5b,0x81 +.byte 0x39,0x4b,0x70,0xc3,0xfd,0x2b,0xc5,0xb7,0x47,0x36,0x74,0x5a,0x85,0xaa,0x45,0x94,0x8e,0xbe,0x7f,0x6c,0x45,0xf5,0x02,0x4e,0x5f,0x16,0x04,0x7e,0xfa,0xb8,0xa9,0x38,0xc4,0xd9,0xca,0x5f,0x7a,0xe3,0x96,0x78,0x82,0xa0,0xac,0xef,0xc4,0x2a,0xb5,0xf4,0x7d,0x28,0x8c,0x25,0xba,0x4e,0xd5,0xd5,0xd1,0x24,0xc6,0x05,0xb2,0x18,0x2d,0x66 +.byte 0xea,0xe3,0x42,0x79,0x33,0x9e,0x70,0x3a,0x1b,0x5a,0x8e,0xcb,0x03,0xa8,0x43,0xf3,0xd5,0x66,0x41,0x10,0xd7,0x09,0xf0,0x28,0xe5,0x25,0xe6,0xac,0x9a,0xe6,0x34,0x36,0xfb,0xc4,0xa6,0x9a,0xd0,0x24,0x4d,0x18,0xf9,0xd1,0x8e,0xca,0x92,0x83,0x0f,0x55,0x54,0x6d,0x72,0x81,0x81,0xdb,0x72,0x1f,0xd6,0x32,0xb9,0x32,0x45,0x84,0x9c,0x66 +.byte 0x68,0x7e,0xab,0xb3,0xca,0xf5,0x4f,0xdd,0xb4,0xee,0xbb,0x05,0x70,0xbe,0x4f,0xd1,0x27,0x01,0xcc,0x7c,0x4f,0x47,0x55,0xce,0x91,0x73,0x6f,0xff,0x8d,0xfc,0x0c,0x4c,0xaa,0xfc,0xce,0x9f,0xf3,0x4a,0x46,0x92,0x89,0x84,0x8f,0x4d,0x94,0x37,0xda,0xe3,0x11,0x0d,0x63,0x60,0xcb,0x40,0x8f,0xe8,0x0f,0xf9,0xa1,0x89,0x64,0x44,0x45,0x74 +.byte 0xc5,0xa2,0x73,0x33,0x08,0xa2,0x59,0xb0,0xeb,0x7b,0x7b,0xa7,0x28,0x4c,0x13,0x6a,0x04,0x15,0x14,0xd0,0x3e,0x5e,0xec,0xe1,0x3f,0xe5,0x93,0x06,0x6b,0x60,0x50,0x1c,0x90,0xc0,0x5c,0xea,0x7e,0x58,0xf1,0xed,0xba,0x43,0x0b,0x84,0xf7,0xa4,0xbd,0x4c,0xed,0x88,0x5b,0xae,0xa2,0x0a,0xf6,0x06,0xfd,0x43,0x63,0xfe,0x8a,0x03,0x21,0x8b +.byte 0x27,0xc6,0xef,0xa3,0xa9,0x3a,0xc1,0x8b,0x65,0x62,0x25,0x85,0xaa,0x2f,0xff,0x22,0x96,0xb7,0x5c,0x82,0xde,0x21,0x4e,0x0d,0x8d,0xd9,0x7f,0x97,0x79,0x95,0x6c,0xe6,0xfd,0xb1,0x7c,0x84,0xc8,0x73,0xbc,0x50,0x2f,0x87,0x03,0x56,0xcf,0xea,0x7f,0xed,0x17,0x7d,0xf7,0x61,0x6b,0x6f,0x5b,0xd3,0xe4,0x83,0xbd,0x8b,0xd3,0x8e,0x51,0x57 +.byte 0x3d,0xcc,0xe4,0x09,0xb9,0x73,0x1f,0xb4,0x47,0x5e,0xf2,0x10,0x3e,0xf4,0x9c,0x86,0x02,0xdf,0x3e,0x75,0x1c,0x9b,0xb5,0x0f,0x31,0xc6,0xbb,0x00,0xb4,0x8a,0x1a,0xe5,0x0d,0x9c,0x3e,0x93,0x61,0x5a,0x61,0x86,0x12,0x64,0xaa,0xfd,0xa2,0x6e,0x8f,0xcc,0xcd,0x60,0xa1,0xad,0x6d,0xdc,0xa2,0x7b,0x5a,0xe0,0xee,0x27,0x5d,0xc5,0xfe,0x1f +.byte 0x7b,0x9f,0x33,0xf1,0xee,0x2a,0x58,0x39,0x56,0x14,0x4f,0x2f,0x11,0x26,0x6b,0x56,0x7c,0x75,0xb7,0xc3,0xa7,0xf6,0x54,0xd8,0xa7,0xbb,0x73,0xb5,0xa5,0x83,0x1e,0x65,0x7e,0xa7,0x85,0x74,0xa4,0x04,0x0e,0x26,0x01,0x88,0xbc,0x8b,0x98,0x0c,0x9b,0x74,0x22,0x44,0x16,0x16,0xed,0x94,0x81,0x81,0x13,0x26,0xc9,0x27,0xa9,0xa7,0xe0,0x45 +.byte 0x69,0x6e,0x33,0xcc,0xa3,0x15,0x10,0x99,0x84,0x06,0x95,0x00,0xbb,0xc6,0x8e,0x4e,0x37,0x1b,0x23,0xb2,0xf7,0x4d,0xd7,0x24,0x68,0x6b,0xaa,0x2e,0x57,0x8d,0xd6,0x4e,0xa2,0x69,0xd8,0x8d,0x84,0xb2,0x85,0x91,0x30,0xbf,0x41,0xab,0xcf,0x5c,0xa6,0x51,0x1e,0xf5,0x79,0x5a,0x20,0xfa,0x3d,0x0a,0xc5,0xd7,0x3f,0xa6,0xcc,0xf6,0x9b,0x76 +.byte 0xe0,0xec,0x9e,0x0b,0x23,0xe4,0x74,0x36,0x14,0x6f,0x24,0x9d,0xe7,0xb2,0x41,0xd7,0x68,0x37,0x67,0xdc,0x01,0xb1,0x20,0xf9,0x8b,0x0b,0xf5,0xa7,0x95,0x78,0xa0,0x6c,0x4b,0xc0,0x44,0x92,0x4a,0x75,0x0f,0x61,0xde,0xc3,0xc2,0x3d,0x17,0xa0,0x4d,0x57,0x8b,0x11,0x35,0xbd,0x49,0x87,0x05,0xba,0x5d,0x1f,0x76,0xd4,0x0f,0xb0,0x5b,0x5f +.byte 0xb7,0xf8,0xcf,0x12,0x54,0x19,0x9a,0x49,0x6a,0x42,0xad,0x93,0x85,0x0b,0xe7,0x8c,0x30,0x59,0x82,0x82,0x2d,0xd9,0x89,0xf5,0x8c,0x39,0x9c,0xf5,0xcd,0x25,0x22,0x74,0xcf,0x56,0xa2,0x15,0x40,0xa6,0xa8,0xfc,0xdc,0x85,0x9e,0xab,0xd6,0x94,0x5d,0xd6,0x73,0x07,0xed,0x7b,0x76,0x11,0x67,0xf5,0x52,0xac,0x1a,0x69,0x1f,0x4a,0xa2,0xaa +.byte 0x4d,0x11,0xe0,0xc4,0x4c,0x6e,0x9e,0x8e,0x13,0x46,0x0b,0x95,0x40,0x53,0x35,0x53,0x58,0x7f,0x81,0x5f,0x17,0xd7,0x5e,0x53,0x86,0xf3,0x1b,0x70,0xf1,0x95,0x8f,0xf6,0xd4,0x6f,0x55,0x92,0xa2,0x38,0xd3,0x43,0x6c,0x7e,0xa2,0x21,0x5b,0x18,0x11,0xdd,0x03,0x52,0xe6,0xe5,0xc0,0xc5,0x4e,0x8e,0xda,0xdb,0x91,0xcf,0xf7,0x75,0xc2,0x33 +.byte 0x69,0xd1,0xd1,0x29,0x9d,0x51,0x79,0x91,0xe4,0x58,0x05,0xa5,0xf6,0x54,0x16,0x3e,0x42,0xf3,0xc4,0x1f,0x88,0x94,0xfc,0x6b,0x53,0xb1,0xd5,0x17,0xe6,0xab,0x77,0x33,0x8a,0xd0,0x93,0x74,0x02,0xe0,0x81,0x5e,0xbe,0x2f,0x4d,0xcd,0x25,0x0b,0xd0,0x06,0xd8,0xc9,0xf9,0xcf,0x8e,0xf8,0xc3,0xe2,0x33,0x60,0xe5,0xfa,0x89,0x68,0xf8,0xb7 +.byte 0xef,0x9d,0xfc,0x9d,0x76,0x13,0x2d,0x9d,0x18,0x7d,0x05,0xb4,0xa7,0xa3,0x8a,0x91,0xe0,0x73,0x65,0x89,0xb4,0xc1,0x53,0x7c,0xdc,0xf2,0xab,0x39,0x94,0xc7,0x3d,0xf8,0x1c,0x8f,0x49,0x37,0xee,0xc1,0x19,0x84,0x15,0x3b,0x36,0xb2,0xc2,0xe1,0x16,0xe2,0xfb,0xde,0x1f,0x0e,0xa4,0xea,0x59,0x67,0x2d,0xea,0x47,0xe5,0x2c,0xd1,0xb5,0xa9 +.byte 0xbd,0x5c,0x92,0x34,0x8b,0xc5,0xab,0x4f,0x2b,0x6b,0xc4,0x8b,0xdb,0xbb,0xcb,0x86,0x34,0x35,0xa0,0x5c,0x29,0x1a,0x8b,0xce,0xdc,0xd7,0x46,0x2b,0x20,0x9d,0xea,0xa8,0x97,0x68,0x37,0x56,0x03,0x7d,0x4f,0xb6,0xfc,0x30,0x82,0x68,0xb4,0x56,0xf3,0xbe,0x58,0xcc,0x20,0xc1,0x53,0x9f,0xbb,0x0b,0x2b,0x6e,0xa0,0x2d,0xc0,0x61,0x02,0x0b +.byte 0xf9,0x0e,0x55,0xb8,0xb8,0x23,0x6e,0x50,0xc0,0x36,0xb8,0xf6,0x5e,0xb3,0xa7,0x8f,0xf8,0x7f,0xd0,0x5d,0x0a,0xc4,0x2b,0xa9,0xd3,0x76,0xcf,0x4d,0x27,0xda,0xac,0xf3,0xb0,0xca,0x00,0xa0,0x94,0x12,0x20,0x89,0x22,0xa9,0x89,0xe4,0x23,0x71,0xe0,0xdb,0xec,0xb0,0xa9,0x2e,0x45,0xf6,0x8d,0x1e,0x4b,0x0e,0xc7,0xf8,0x40,0xd6,0xf4,0x2f +.byte 0x80,0x3e,0xf8,0xfb,0xcf,0x7b,0x54,0xb5,0xbd,0x55,0xf2,0x37,0x46,0x9f,0x32,0x45,0x87,0xa3,0x6a,0x51,0x25,0x43,0x54,0xa2,0x92,0xc6,0xbe,0xa4,0x33,0x54,0x82,0xc7,0xf1,0xe4,0x52,0xf9,0x09,0xac,0xc3,0xb1,0x25,0x86,0xc7,0x89,0x83,0x2c,0xf6,0x35,0x9e,0xd1,0xd8,0xb1,0x71,0xed,0xfa,0xae,0x09,0x83,0xb3,0xf0,0xde,0x24,0xed,0x3c +.byte 0xc6,0x60,0xe8,0x15,0x49,0x93,0x29,0x82,0xbf,0x1d,0x23,0x17,0x11,0xea,0xa7,0x53,0x83,0xa5,0xc1,0x9e,0x02,0x17,0x08,0x99,0xa6,0x72,0xaf,0x82,0x3f,0x0b,0x69,0xca,0xb8,0x72,0xa9,0x31,0x71,0x20,0x32,0x57,0x89,0x9b,0x16,0x92,0x54,0xc0,0x99,0x6d,0xa4,0xbf,0x5a,0xb5,0x53,0xa7,0x4c,0x69,0xd8,0xf7,0xe7,0x4c,0xc0,0x76,0xb6,0x35 +.byte 0xdd,0xe7,0xb2,0xd9,0x1c,0xd5,0xf7,0x39,0x32,0x44,0x48,0x02,0x85,0x69,0x02,0xad,0xe6,0xfc,0xbb,0x07,0x9e,0x7f,0xee,0x6d,0x07,0x12,0x21,0xeb,0x67,0x4d,0x74,0x90,0x8f,0x79,0x51,0x9d,0x8a,0x63,0x24,0xab,0x6f,0x8f,0x73,0xd3,0x91,0x68,0x15,0xa9,0x6a,0x84,0x92,0xc2,0xd4,0x4d,0xa8,0xe1,0x4f,0xa2,0x1e,0x34,0xa3,0x9a,0x04,0xf2 +.byte 0xfc,0xc4,0xe7,0xd0,0x52,0xc4,0x49,0x51,0x8e,0x7d,0xaa,0x74,0xaa,0x08,0xbe,0x08,0xf6,0xe4,0xc1,0x61,0xff,0x2e,0x9c,0x17,0x61,0xb6,0x01,0x44,0x18,0xe8,0x5e,0xa9,0xfb,0x02,0x21,0xbb,0x08,0x5c,0xe0,0xd3,0x0c,0x98,0xc5,0x93,0x2a,0x1c,0x69,0xf3,0xe8,0x8b,0x36,0xa0,0x9d,0x1e,0xda,0x18,0x14,0x06,0x7f,0x75,0x3d,0x42,0x92,0x5a +.byte 0xb9,0xb7,0xc0,0xc0,0xb0,0xc5,0xa9,0xb2,0x67,0x24,0xc2,0x28,0x29,0xcb,0x78,0x8e,0xf3,0xd1,0x37,0x63,0xca,0xc8,0x9a,0x1b,0x38,0xa5,0x9f,0x0e,0x0d,0x26,0x5b,0xfe,0x2f,0xdf,0x4f,0xb9,0x21,0x8c,0xc8,0xe0,0x9f,0x71,0xb9,0xc3,0x6c,0xd8,0xd3,0x2f,0xe4,0x3c,0x67,0x35,0x45,0x74,0x7f,0xcb,0x13,0xda,0x64,0x47,0xff,0x6f,0x05,0xf0 +.byte 0x87,0x8d,0x0d,0x1f,0x10,0x47,0x0e,0xf6,0x9d,0x89,0x6d,0x79,0x04,0x77,0x8a,0x6c,0xeb,0x7d,0x9b,0xd7,0x65,0x82,0xa8,0x95,0xa2,0x8c,0x02,0x91,0x0d,0xf2,0xe8,0x65,0x60,0x0d,0xb6,0x1d,0xf4,0xf3,0x41,0x75,0x33,0x21,0x13,0x22,0x93,0x01,0x2f,0x11,0xe7,0xed,0x45,0x56,0x90,0xec,0x0b,0x99,0x8e,0x84,0xc8,0x76,0x31,0x1d,0xb9,0xcb +.byte 0x87,0x3f,0x5f,0x39,0xeb,0xe8,0x9e,0x5e,0x96,0x9e,0x42,0x64,0xf3,0xef,0x00,0x1f,0x2a,0x6c,0x18,0x67,0xbd,0xdd,0xf9,0x65,0x11,0x1b,0x9c,0xd7,0xf3,0x3d,0xb2,0x6f,0x88,0xf7,0xd2,0x26,0x06,0xef,0xc8,0x23,0x3f,0x46,0x5d,0xf0,0x96,0x40,0xb1,0xdd,0xad,0xe4,0xee,0xb6,0xc2,0x67,0x18,0x46,0x67,0xc4,0xa5,0x7e,0x3e,0xce,0x72,0x47 +.byte 0xca,0xc3,0xa7,0x94,0x56,0xe2,0x23,0x03,0xcf,0xd0,0x18,0x55,0x30,0xe3,0x14,0x00,0xda,0x0f,0xaa,0x7f,0x20,0xaf,0x3b,0x24,0x43,0x7a,0xaa,0xd4,0x12,0x42,0x10,0xe4,0x44,0x8a,0x7f,0xf1,0x74,0x9d,0xe0,0x28,0x60,0xce,0xdd,0x04,0x96,0x03,0x80,0xcb,0xaa,0xa9,0xb5,0xc7,0xb4,0xbb,0xc7,0x9a,0x93,0xd8,0xff,0x3b,0x8f,0x1f,0xb7,0xce +.byte 0xed,0xbc,0xde,0x9f,0x9e,0x56,0x96,0x65,0xba,0xe7,0x89,0x03,0xb2,0xbd,0xfe,0xa7,0x02,0xeb,0x33,0x9a,0x8b,0x5b,0x36,0x64,0x17,0x9f,0xd2,0xe4,0x75,0xb5,0xfb,0x21,0x03,0xa4,0xe7,0xb4,0x49,0x72,0xfd,0xf3,0x1e,0x5f,0xdb,0xe5,0x6c,0x92,0x51,0xe7,0x91,0x55,0xb7,0x82,0x18,0x05,0xc3,0x2c,0xf1,0x23,0x61,0x36,0xad,0x80,0x1b,0xde +.byte 0xe1,0x51,0x4e,0x51,0xa1,0xf6,0x5a,0xb9,0x03,0x48,0xa7,0x12,0x88,0x63,0x30,0xff,0x48,0xfc,0x92,0x30,0x9a,0xca,0x08,0x1b,0x64,0xa9,0x74,0x2a,0x64,0x42,0x7d,0xa9,0xa4,0x9d,0xcb,0x59,0x71,0x53,0xc1,0xa8,0xa6,0xb5,0x47,0xf9,0x87,0xb5,0x41,0x58,0x92,0x14,0xf7,0xbd,0x10,0x45,0x37,0x20,0x1d,0x5b,0x42,0x04,0xed,0x69,0x4c,0xa5 +.byte 0xdc,0x2a,0x58,0xba,0x00,0x1e,0x05,0x9c,0x3c,0xbf,0x65,0x76,0xd1,0x11,0xe0,0x15,0x22,0xb0,0x2a,0x53,0x32,0x0f,0x6e,0x08,0x4e,0x27,0xc2,0x71,0x14,0x20,0xee,0xb0,0x0b,0x60,0xef,0x54,0xae,0x2c,0xe0,0x1d,0x30,0xac,0x0d,0x3a,0x93,0x15,0x0a,0xe7,0x14,0xf3,0x1a,0x67,0xb1,0x43,0x85,0xbd,0x06,0x53,0xab,0x6d,0x5d,0xe7,0xe3,0x82 +.byte 0xb8,0x39,0x35,0x10,0x87,0xe7,0x90,0x4d,0x9c,0x6f,0x83,0xad,0xa2,0x43,0x7a,0x5d,0xc1,0x8a,0x39,0xa3,0xa6,0xda,0x48,0x5c,0x9b,0xe1,0x0d,0x69,0xfc,0x87,0x18,0xdd,0x34,0x9a,0xb4,0x9c,0x04,0x0d,0x49,0x18,0x3e,0x38,0xd8,0x01,0x67,0xb1,0x7f,0x6b,0xb5,0xfe,0x58,0x1c,0x64,0x11,0x10,0x6b,0xc1,0xca,0x56,0xe3,0x12,0x8c,0xb4,0xac +.byte 0x03,0xbd,0xc1,0x54,0xbe,0x5c,0x70,0x6f,0xdd,0x73,0xa3,0x84,0xcd,0x0b,0x1b,0xbf,0x05,0xac,0x27,0x11,0xe8,0x5f,0xc3,0xb9,0x68,0xc2,0xe9,0x3f,0x5a,0x9b,0x28,0xca,0x65,0x5e,0x66,0x4e,0x50,0xa9,0x81,0xb1,0x10,0xc1,0x2c,0xa5,0x62,0xc8,0x52,0x07,0xa5,0xa1,0x99,0x16,0x7b,0x08,0xa4,0x1e,0xf4,0x50,0x8f,0xb2,0x42,0xa5,0x19,0xa2 +.byte 0x34,0x91,0xcf,0xa7,0x5e,0x73,0x6b,0xc2,0xa3,0x4d,0xdd,0x7c,0x26,0x46,0x34,0xe6,0x5d,0x54,0x52,0xe3,0x1e,0xc1,0x10,0x36,0x7c,0xc9,0xd2,0x1e,0xca,0xeb,0x80,0xc5,0x3c,0x04,0xf6,0xb7,0x09,0xd4,0x3e,0x67,0xc3,0xf6,0x6b,0xd4,0x60,0x00,0xc9,0x68,0x17,0x39,0xbc,0xcd,0x14,0x32,0xfc,0x33,0xa4,0xb0,0x6f,0x12,0x6b,0x5f,0xe2,0x15 +.byte 0x1c,0x9a,0x15,0x4f,0x0b,0x7d,0x4c,0xa0,0x89,0x40,0xb3,0x0e,0x84,0x90,0xb3,0xc6,0x3e,0xa5,0x0b,0x81,0x66,0x14,0x5f,0x8d,0xe0,0xbf,0xf7,0x9d,0xa4,0x4e,0x69,0xd5,0xac,0x0f,0x6c,0x29,0x94,0x8f,0x3b,0x4b,0xed,0x5b,0x6e,0xe1,0x58,0x5d,0x32,0x19,0xe6,0xbd,0xfb,0xd5,0xb7,0x0f,0x72,0x0e,0x5b,0x14,0xd3,0xf3,0x09,0xa8,0xea,0xf7 +.byte 0x98,0x2f,0x42,0x07,0x8e,0x72,0x27,0x53,0x8d,0x0b,0xea,0x74,0x38,0xbc,0xaf,0xb8,0x76,0x65,0x97,0xda,0xa7,0x06,0x37,0x29,0x09,0xbe,0xaa,0xe6,0xf7,0xb6,0xb1,0x5f,0x71,0x1f,0x5d,0x14,0x47,0xdf,0x20,0xa3,0x94,0x93,0x7d,0x21,0xe6,0x22,0x7e,0x38,0x1a,0x26,0x83,0xc7,0x32,0xdf,0x58,0xcd,0xab,0x67,0xae,0x94,0xa5,0x68,0xcb,0xe3 +.byte 0x51,0x70,0xc0,0xc4,0x41,0x9f,0xca,0x05,0xc9,0x51,0x2a,0x8e,0x53,0x89,0x3f,0x52,0x6b,0x29,0x64,0xa8,0xb8,0xdf,0x02,0xb1,0x41,0x4e,0x36,0x42,0x32,0xa8,0xc0,0x91,0xf0,0x69,0x69,0x55,0x99,0xb7,0x78,0x4f,0x79,0x5b,0xc5,0xab,0xc6,0xed,0x15,0x88,0x6b,0x94,0x0a,0xdd,0xea,0x47,0xf9,0x0e,0xb8,0x89,0x15,0x68,0x3e,0xc0,0x50,0xf8 +.byte 0xa1,0x2d,0x2a,0x11,0x8a,0xc5,0xb0,0x09,0x4f,0x7d,0x90,0x5f,0x49,0x35,0xe9,0xdd,0xfc,0xac,0xea,0x1b,0x20,0xad,0xd2,0xe6,0xb6,0xbf,0x3c,0x0e,0x7b,0xdf,0x2f,0x55,0x58,0x0e,0x25,0x53,0x62,0xd3,0x73,0xb8,0x3e,0x12,0x91,0xcb,0x23,0xf2,0xc0,0x5d,0x74,0x2b,0x51,0xcc,0xa2,0xb1,0x5a,0xd2,0xf4,0x9b,0xc9,0xa5,0x83,0x2b,0x5a,0x8a +.byte 0x0b,0xe9,0x09,0x59,0xb5,0x44,0xc9,0x55,0xcc,0xbd,0xb6,0x69,0x66,0x9a,0x0c,0x15,0xae,0x76,0x35,0xbe,0xe9,0x37,0x70,0x9e,0xdc,0x97,0x5a,0x82,0x97,0xf6,0x1a,0x45,0xd7,0x27,0xfe,0x1f,0xc3,0x7c,0x3a,0x52,0x85,0x12,0x73,0x8a,0x8e,0x07,0xec,0x1f,0x59,0x3f,0xb0,0x32,0x07,0x92,0x3e,0x81,0xe0,0x7a,0x9a,0xc9,0x91,0xca,0x84,0xf1 +.byte 0xe1,0x32,0x57,0x0a,0x3c,0x9a,0x20,0xa8,0xbe,0x84,0x91,0x44,0x66,0x81,0xdd,0x12,0xa8,0x46,0x15,0x18,0xfc,0xae,0x5e,0x9a,0xf3,0xd9,0xb9,0x6a,0xbb,0x90,0x1c,0x61,0x7f,0x61,0x2c,0xa7,0x12,0x1e,0x05,0xee,0x0c,0x66,0x9e,0xc2,0xc8,0xb9,0xe0,0xc9,0xc4,0xb9,0xee,0x3a,0x6f,0x97,0x2a,0x5e,0xcb,0xd9,0xff,0xd1,0x37,0x5e,0xa0,0x03 +.byte 0x70,0xc1,0x2f,0x15,0xf9,0xf7,0x90,0xbe,0x23,0xe7,0x7c,0x90,0x4b,0xe4,0x5a,0x01,0x65,0x27,0x2d,0x4b,0xd3,0xa8,0x8c,0x1d,0x2d,0x5d,0x48,0xac,0x6b,0x59,0xc9,0x78,0xb2,0xee,0xda,0x6e,0xa8,0x68,0x08,0x99,0x22,0x25,0xfe,0xc2,0xb8,0x83,0xa8,0x08,0xbb,0x6e,0x64,0xae,0x2e,0xbb,0x93,0xaf,0xdc,0xeb,0xa3,0x11,0xa7,0x5d,0x3f,0x22 +.byte 0xf1,0x95,0x27,0xf6,0xd6,0xa6,0xc3,0x56,0x0a,0xd0,0x17,0x43,0x35,0xd2,0xe7,0xa4,0x8f,0x6c,0x1c,0xc4,0x4d,0xa7,0x3b,0xb8,0x7f,0x0c,0xa0,0xd6,0x56,0x82,0xf4,0x16,0x96,0xcd,0xcf,0x6f,0x78,0xec,0xbb,0xb2,0xdb,0x67,0xcf,0x78,0x0c,0x22,0x1d,0x72,0x21,0x8e,0x40,0x85,0xa5,0x07,0x3b,0x0e,0xfa,0x44,0xb0,0xfe,0xbf,0x54,0x80,0x41 +.byte 0xdc,0xa7,0xc7,0xdb,0xaa,0x04,0x42,0x0d,0x42,0x03,0x17,0xc8,0x57,0xd7,0x08,0x34,0x37,0xf5,0x9a,0x90,0x30,0x43,0x54,0x5b,0x58,0x50,0x4e,0xc4,0x56,0x57,0xff,0xf0,0x05,0x82,0xca,0x2e,0x20,0xb0,0xbd,0xd0,0x00,0x7d,0x60,0x3f,0xdb,0x9c,0x08,0x7e,0x21,0x63,0xbc,0x89,0xbf,0xcb,0xcc,0x36,0xb5,0x36,0x41,0xb4,0x9c,0x5c,0x9d,0xa6 +.byte 0x74,0xa4,0x4f,0x6a,0xcb,0x63,0x51,0xb1,0x92,0xa0,0x03,0x9b,0x88,0x03,0xd5,0x82,0x30,0xfb,0x69,0x49,0x20,0xb0,0x37,0x50,0xe4,0x02,0x9e,0x11,0x09,0x20,0x1a,0x41,0x8d,0xdd,0xa0,0x18,0xb4,0x74,0x04,0x1e,0x3a,0xea,0xb4,0x28,0x01,0x7f,0x0b,0x73,0x27,0x5f,0x76,0x2e,0x71,0xfa,0x50,0x1b,0x43,0x8d,0x0d,0x6c,0x87,0xc3,0x10,0x7b +.byte 0x42,0x7d,0x17,0xa6,0x00,0x5b,0x83,0x6c,0x7b,0x7f,0x72,0xd8,0x90,0x4d,0x7f,0x54,0x72,0x17,0x21,0xe4,0x45,0x74,0x20,0x53,0x30,0x46,0x90,0xbf,0x2f,0xac,0x01,0xbd,0x40,0xa9,0xc5,0xbe,0xbd,0x9b,0x59,0x62,0x03,0x30,0x80,0xe3,0x8e,0x23,0x7b,0x2d,0x63,0x4f,0x30,0xe3,0xb8,0x56,0x87,0x57,0x43,0xdc,0x6a,0x3c,0x13,0xed,0x93,0xc9 +.byte 0x1a,0x1b,0xea,0x38,0x67,0x33,0x7f,0x11,0x5c,0x96,0x20,0x4d,0xf6,0x82,0x51,0x45,0xca,0x20,0xfd,0x59,0xef,0x4c,0xb4,0xb0,0xb2,0x0f,0xdb,0x4c,0x00,0x7a,0x18,0x58,0xb0,0xd3,0x65,0x73,0x42,0xe5,0x05,0x76,0xd7,0xa2,0x1e,0x9f,0x59,0xc0,0xd0,0x76,0x29,0x1b,0x12,0x29,0x9b,0xe4,0x7d,0x45,0x13,0xb4,0x57,0xf2,0x0b,0xd1,0xb5,0x60 +.byte 0x6d,0x15,0x0b,0xca,0x5e,0xe4,0x80,0xda,0x56,0x95,0x41,0x18,0x54,0xa7,0xad,0x40,0xe5,0xd7,0xa7,0x3e,0xf7,0x73,0x40,0x70,0xb3,0x23,0xdb,0x22,0x62,0xc7,0x44,0xfb,0x64,0x18,0x18,0x05,0x84,0x07,0x68,0x06,0x7f,0xb9,0xc3,0xf9,0x55,0xe2,0x0d,0x37,0x51,0x34,0xc3,0x55,0x3c,0x29,0x5d,0x1d,0x27,0x77,0xd3,0xe1,0x6a,0x60,0x9f,0x10 +.byte 0xef,0xb1,0x93,0xbf,0x2a,0xb7,0xe8,0x42,0x4d,0xfd,0xa9,0xa9,0x2f,0xb6,0x07,0x5b,0xe8,0xf7,0xd7,0x10,0x47,0x71,0x56,0xba,0x11,0x11,0x32,0xc4,0x22,0xf4,0x12,0x6f,0xc3,0xef,0x81,0xc5,0x82,0xb4,0x1b,0x99,0xbb,0x1a,0x63,0x6b,0x3a,0x70,0x4f,0xec,0x2c,0xf9,0xde,0x1a,0x2e,0x62,0x27,0x1c,0x81,0x21,0x30,0x08,0x30,0xf6,0xf5,0xc1 +.byte 0x6d,0x0b,0xeb,0x34,0xd9,0x3a,0xa2,0xa2,0xc6,0x17,0x60,0x85,0x65,0x43,0xd6,0x3d,0x71,0xac,0xc2,0xaf,0x2b,0x9e,0x62,0xf2,0x08,0x47,0x6f,0x42,0xa8,0x21,0xad,0x42,0x98,0xa0,0xef,0xdf,0xd8,0xda,0x10,0xad,0xf7,0xe5,0xf9,0x22,0x89,0x44,0xbf,0x86,0x86,0x2b,0x02,0xd1,0x9e,0x8f,0xb7,0x10,0x63,0xb1,0xcc,0x40,0x6b,0xa3,0x8e,0x09 +.byte 0xb8,0xe3,0x77,0x3c,0xde,0x36,0x7a,0xb7,0x78,0x4f,0x99,0x5d,0x9a,0x9e,0x19,0x2d,0xb5,0xd9,0x9c,0x95,0x1f,0xa1,0xcc,0x61,0x31,0x1c,0x96,0xe5,0xca,0xeb,0x26,0x34,0xa4,0x63,0x5c,0x7c,0x0f,0x23,0xd1,0xe1,0x09,0xf4,0xab,0xf6,0x73,0x2f,0x8a,0x62,0xf0,0xd3,0x8c,0x44,0xe5,0xe9,0x9d,0x58,0x71,0xfa,0xf5,0x39,0xa5,0x6f,0xf7,0x04 +.byte 0x43,0x0a,0x78,0x54,0xfb,0xa7,0x66,0x57,0x1f,0x61,0xd6,0xda,0xff,0x4f,0x32,0x9d,0x80,0x6b,0x77,0xed,0xda,0xaf,0xbc,0x9e,0xea,0x77,0x04,0xf3,0x47,0x96,0xd1,0x44,0x8e,0xca,0xfe,0xb0,0xa3,0xa6,0x1d,0x8d,0xa4,0xb5,0x8c,0x35,0x28,0xf3,0xaa,0xab,0x28,0x1e,0xc9,0x94,0x12,0x07,0xc6,0xea,0x23,0xf9,0x69,0xc3,0x14,0x27,0xcc,0x55 +.byte 0x27,0x0b,0x27,0x64,0x23,0x38,0x05,0xd9,0xb4,0xf7,0x00,0xf3,0x02,0xae,0xc8,0x5a,0xbd,0x2f,0x20,0xd5,0x45,0xa6,0x09,0x6f,0x1a,0x09,0xb7,0xe7,0x6f,0xf6,0xa6,0x6f,0xc7,0x03,0x4e,0xa3,0x72,0xb5,0xfc,0x17,0xcf,0x1e,0x64,0x8b,0xc4,0xa2,0xba,0x83,0x0e,0x2a,0x11,0xba,0x71,0xe0,0x1c,0x9f,0x70,0x6e,0xf4,0xd9,0x47,0x31,0xf7,0xaf +.byte 0xf7,0x1a,0xe7,0xc1,0xe9,0x66,0xa4,0x48,0xd4,0x25,0x8b,0xf7,0x6f,0x33,0x72,0xff,0x93,0x2e,0xcd,0xc7,0xae,0x3b,0x71,0x3f,0x84,0x7f,0xe6,0xb5,0x58,0x4f,0x95,0x34,0xe7,0x89,0x10,0xd3,0x2b,0x5c,0x30,0x9b,0xd3,0xef,0x98,0xf3,0x33,0x0e,0x6d,0x5f,0x7e,0xba,0x55,0x7a,0xb6,0xf3,0xb6,0xcd,0xa8,0x10,0x68,0x85,0x6f,0xea,0x54,0xc3 +.byte 0x66,0x51,0x5a,0xfc,0x11,0x83,0x9e,0x68,0x95,0xdb,0xec,0x74,0xf0,0x86,0x4a,0x90,0x24,0x66,0xf2,0x61,0x40,0x2e,0x3b,0x53,0xea,0xc1,0x3e,0x1c,0x69,0xaf,0x5f,0x04,0xb5,0xbd,0x3d,0x44,0x1c,0xc6,0x49,0x65,0xf6,0x78,0xfd,0x69,0x49,0x95,0x96,0xa1,0xa0,0xa9,0x78,0x1a,0xf6,0x0f,0xe9,0x52,0x93,0x9c,0x96,0x6c,0x5e,0x67,0x63,0x2d +.byte 0x18,0x22,0x2a,0xcc,0x7f,0x2f,0xd3,0x72,0x82,0x98,0xae,0xb0,0x2b,0xa6,0x96,0x41,0x25,0x47,0x3c,0x92,0xc5,0x0f,0x2c,0xd4,0x43,0x09,0x0b,0x94,0x73,0x73,0x29,0xc2,0x8a,0xa3,0xcc,0x8d,0xed,0x40,0x6d,0x40,0x18,0x7c,0x32,0x1e,0xe1,0x4e,0x26,0xa7,0xa4,0xd5,0xcb,0xfa,0x90,0xba,0xb2,0x04,0x1d,0x5d,0xbe,0x32,0x6c,0x71,0x09,0x51 +.byte 0xdb,0xe3,0xb0,0xe1,0x34,0x74,0xa3,0x2b,0xf2,0xcb,0x9e,0xc0,0xae,0x88,0x40,0x90,0xb6,0x22,0xc8,0xac,0xff,0x45,0xc6,0xfa,0xce,0x0f,0x03,0x9d,0xc0,0xb2,0x2e,0xdb,0x1e,0x6c,0xa5,0xbe,0xb5,0xb3,0xaa,0xd5,0x2d,0x06,0x4d,0x29,0xa3,0xbe,0x25,0x5f,0x21,0x42,0x8d,0x27,0xaa,0x6f,0x59,0x88,0x61,0x4d,0x72,0x9f,0x64,0xfc,0x07,0xaf +.byte 0xeb,0x02,0x5e,0xb9,0x1f,0xfe,0x1a,0x67,0x10,0x35,0xe9,0x9f,0x5f,0x9c,0x8d,0x4a,0xb3,0x10,0x99,0x8d,0x5b,0x9c,0x8b,0x8a,0x0c,0x02,0x8b,0x44,0x1a,0xaa,0xe7,0x14,0x05,0x3d,0x9e,0x62,0xfc,0x76,0x49,0x56,0x46,0xae,0xcc,0x0e,0x47,0x58,0x4d,0x94,0x33,0x4d,0x23,0x24,0x44,0x52,0x2e,0x18,0xf7,0x53,0x6b,0x24,0x67,0xb8,0x88,0x46 +.byte 0x70,0xc8,0xcb,0x60,0xac,0x70,0x85,0xdd,0x00,0xa1,0x5d,0xbb,0x94,0x07,0x0a,0xb6,0x1c,0x88,0x59,0xa7,0x88,0x7e,0x1e,0xc9,0x1d,0x7c,0xa0,0x1c,0xad,0xe4,0xa5,0x36,0xa5,0x35,0xe8,0xda,0x27,0x15,0xbc,0x7b,0x1e,0x8a,0x33,0x74,0x4b,0xc1,0xc7,0x9d,0xa9,0x21,0x98,0x02,0xe5,0xf4,0x8b,0x8e,0x2d,0x64,0x81,0xea,0xa6,0xbe,0xe2,0x05 +.byte 0x16,0xba,0xac,0x75,0x79,0xa4,0xc0,0xd3,0x9d,0xe0,0x25,0x63,0x22,0xb3,0x9c,0xee,0x04,0x8f,0x60,0xab,0x52,0x43,0x05,0x16,0xd4,0xb3,0x88,0xe8,0x68,0xc3,0x81,0x94,0xc4,0xee,0x13,0xaf,0xdd,0x36,0x23,0xe6,0x78,0xc9,0xf6,0x42,0xf0,0xf7,0x89,0x64,0x79,0x13,0xe8,0xed,0x50,0x03,0x16,0x78,0x6d,0xf4,0xdf,0x85,0x2e,0x4e,0x8f,0x2c +.byte 0x5b,0xfe,0x4c,0xf2,0x49,0xde,0xf2,0xa4,0x96,0xe0,0x8a,0x25,0xc8,0x6d,0x22,0xff,0xab,0xfc,0x18,0xe8,0x7f,0xd5,0xc1,0x7e,0x44,0x8e,0x21,0xb4,0xc8,0x79,0xc0,0x55,0xaa,0xb7,0x28,0xa1,0x3a,0xbd,0xc2,0x1d,0xf8,0x87,0xf9,0x35,0x30,0x25,0xb2,0xaa,0x8f,0x3c,0x0d,0x64,0xf2,0xd1,0xa0,0x51,0xbf,0x9b,0x9a,0x9a,0x9c,0x18,0x43,0xea +.byte 0xd2,0x54,0x50,0xe0,0xca,0x1a,0x29,0x16,0x9f,0x49,0x47,0x56,0x65,0x21,0x0f,0xb0,0x53,0x41,0xe3,0xec,0xe0,0x15,0xcb,0xd0,0x61,0x05,0x67,0xd6,0x02,0x1a,0x31,0x80,0xa4,0x9f,0xf5,0x9b,0x28,0xcd,0x43,0xd5,0x70,0x05,0x67,0xe8,0x76,0xb7,0x99,0x98,0x0a,0xd6,0x27,0xe9,0xfb,0x62,0xff,0x66,0x47,0xf7,0xbe,0x5e,0x35,0xa0,0x3b,0x56 +.byte 0x58,0x78,0x9b,0x9c,0x5b,0x9f,0xf5,0x6b,0x1a,0x6a,0xfd,0x8e,0xe3,0xd9,0xa2,0x8b,0x2e,0xef,0xc7,0xd3,0x74,0xb1,0xea,0x6a,0x03,0x8b,0xe2,0x78,0xbe,0xf1,0x75,0x7f,0x02,0x03,0xbc,0xd3,0x15,0x2c,0x87,0x01,0x95,0xa6,0x87,0x2d,0xf8,0x63,0xfe,0x33,0x8f,0xc5,0xc9,0x0a,0x06,0x79,0x93,0x46,0xd7,0x0b,0x61,0x06,0x68,0xae,0x9b,0x46 +.byte 0x6f,0x9e,0x1b,0x21,0x58,0xc1,0x72,0xa9,0x05,0xa7,0xaa,0x88,0xee,0xed,0x8d,0x7f,0x55,0x3b,0xb8,0xb8,0xf8,0x42,0x26,0x4a,0x78,0xe3,0x17,0xe8,0xac,0xb3,0xdb,0x9b,0x90,0x7d,0x8d,0x65,0x00,0x39,0x40,0xc2,0xe2,0x9c,0xc6,0x16,0x35,0x54,0x64,0x09,0xc8,0xc7,0x08,0x77,0x90,0x9d,0xb4,0xd4,0xe1,0x36,0xd4,0x5e,0x63,0xb0,0xba,0x81 +.byte 0x0c,0x4e,0x24,0x20,0xc0,0x7f,0xfc,0x02,0x3d,0x83,0x60,0x8a,0xf5,0xff,0x87,0x60,0x9c,0xd5,0xc0,0x94,0x64,0xe2,0x3f,0xeb,0x9a,0xe5,0xb6,0x50,0x13,0x36,0xf4,0x96,0x5d,0xf4,0xb5,0xab,0xa4,0x28,0x17,0x38,0x7f,0xca,0xf7,0x0c,0xcf,0xae,0xf8,0xef,0x41,0x6d,0x9c,0xa1,0x53,0x33,0xcb,0x8d,0x21,0xab,0x3a,0x8c,0x72,0x8d,0xf3,0xf2 +.byte 0x05,0x69,0xf5,0xe8,0x6b,0x5b,0x42,0x85,0xb1,0x2e,0x6f,0xf8,0x62,0x00,0x1c,0x48,0x6c,0x85,0x72,0x93,0x34,0x67,0x80,0xe7,0x2a,0xfe,0xcf,0x54,0xc6,0x94,0xf2,0x5a,0x48,0xab,0x40,0x52,0x66,0x7d,0x7a,0x75,0x68,0x77,0xfd,0xb2,0xdd,0xb1,0xdb,0x72,0x50,0x31,0x53,0x24,0xbd,0xb0,0x6e,0x1f,0xbd,0xa6,0x90,0x67,0x07,0x1d,0x31,0xf3 +.byte 0x8c,0x82,0xf7,0x53,0x85,0x54,0x64,0x7c,0x76,0x7b,0x5f,0xaa,0xe0,0xe0,0x36,0xa4,0x13,0xb3,0x0b,0x99,0x09,0xfe,0xed,0xbb,0x81,0x4b,0xb3,0x16,0x45,0x2e,0x3a,0xfe,0x60,0x9c,0xdc,0xcb,0x00,0x5a,0x41,0xc4,0x80,0x3c,0x9d,0x15,0x05,0xfa,0x5e,0x37,0x64,0x89,0x9c,0x2d,0xb8,0xf7,0xbc,0x35,0x8c,0x49,0xfe,0x0a,0x43,0x1a,0x59,0xaf +.byte 0x1e,0x50,0x08,0x0f,0x2d,0xb8,0x5d,0x63,0x7f,0x95,0x6a,0xe6,0xad,0x88,0xc3,0xac,0x05,0x14,0x44,0xb0,0x70,0x83,0x5f,0x94,0x45,0x3d,0xe5,0xbd,0xb8,0x92,0x28,0x20,0xd5,0xa0,0x83,0xd2,0xe2,0x41,0x71,0x27,0x29,0x1b,0x2a,0x3a,0x08,0xca,0x75,0xec,0x16,0x4a,0xcf,0x39,0xed,0xbe,0x2a,0x26,0x9b,0xa3,0x26,0xc6,0x89,0xf2,0xc6,0x8d +.byte 0x49,0x3a,0xfe,0xda,0x16,0x54,0x55,0x7e,0x7f,0x65,0x65,0xd2,0x16,0xdd,0xe2,0xa3,0x86,0x7a,0x69,0x82,0x99,0x58,0x45,0x16,0x4c,0x69,0xff,0x72,0xf2,0xbc,0xbb,0xdd,0xe1,0xb4,0x56,0xcf,0xc0,0x84,0xd6,0x2c,0xd8,0xce,0xf4,0x67,0xd8,0x1d,0xb7,0x77,0x6d,0x96,0xf4,0x28,0x7a,0x33,0x03,0x97,0x72,0x37,0xd9,0x35,0xcf,0x20,0x28,0xc2 +.byte 0xc4,0xea,0xf9,0x99,0x89,0xe0,0xcc,0x3d,0xec,0x2c,0xbf,0x06,0x78,0x91,0x1b,0x55,0x1b,0x51,0x9b,0xbe,0xf7,0x4a,0xf8,0x9f,0x46,0xab,0xee,0x5d,0x4e,0x29,0x36,0xf3,0xb9,0xa7,0x85,0x9b,0xf7,0xa1,0x9e,0x2a,0xbb,0xb3,0x0a,0x61,0xb5,0x0f,0x79,0xf4,0xe2,0xd2,0x2c,0x15,0xf7,0x4f,0xca,0xa9,0x46,0x25,0x1c,0xdc,0xfa,0x0f,0x9e,0xfa +.byte 0xf5,0xb8,0x54,0x7a,0xe3,0x98,0x3c,0x3b,0x85,0xf8,0xb3,0x7c,0x70,0x40,0x86,0x2a,0x66,0xd1,0x4d,0x83,0x38,0xc2,0x24,0x8e,0x30,0xc0,0x9e,0x54,0x4c,0x7a,0x62,0x9a,0x55,0x8e,0x11,0x02,0xef,0x30,0x08,0x5c,0xf3,0x57,0xa7,0xbe,0x32,0x04,0xab,0xb1,0x3a,0x51,0x6e,0xcd,0x6f,0xc1,0xd8,0xd0,0x7d,0x4f,0x1b,0xa9,0x1e,0x12,0x92,0x94 +.byte 0xd7,0x40,0xa9,0x99,0x70,0x06,0xcb,0x46,0xa5,0xe0,0x77,0xbe,0x6d,0x48,0xab,0x67,0x4e,0xa7,0x0e,0xfe,0x1f,0x53,0x24,0xbc,0x89,0xcb,0x70,0xac,0x05,0xa2,0xf4,0xa3,0x44,0xde,0xcb,0x18,0x95,0x78,0x70,0x0f,0x69,0xf0,0x5e,0xbd,0xe7,0xfc,0xd3,0x17,0x3e,0x18,0xb0,0x2f,0xa6,0xfe,0x82,0x81,0xe7,0x74,0x44,0xfb,0x43,0x5e,0xda,0xf4 +.byte 0xfb,0xfe,0x5c,0xb4,0x3c,0x1d,0xea,0x0d,0x2d,0xdb,0xee,0x1f,0xc5,0xbd,0xb2,0xa0,0x52,0x76,0x9e,0xad,0xfa,0x19,0x37,0xb0,0x15,0x53,0x82,0x25,0x86,0xd9,0xce,0x99,0x84,0x67,0x5f,0x57,0xb2,0x6f,0x99,0xa4,0x56,0xb5,0x01,0x4f,0xdf,0xa2,0xca,0x8c,0x23,0x51,0xd3,0xc7,0x72,0x9b,0x90,0x72,0x29,0x0c,0xca,0x86,0xff,0xc3,0xd9,0x9e +.byte 0x87,0xe4,0x8d,0xc6,0xac,0xba,0xfb,0x73,0xa9,0xcd,0x5d,0x16,0xfc,0x12,0xea,0x30,0xd5,0x7d,0x7b,0x16,0xa6,0x2c,0xeb,0x3c,0x3e,0x46,0x7c,0xee,0x03,0xd6,0x7a,0xe8,0x88,0x1c,0x17,0xa9,0x08,0xe9,0xd5,0x38,0x59,0x54,0x0b,0xb0,0x77,0x1b,0x76,0x09,0x53,0xca,0x38,0x12,0xd1,0xb5,0x2c,0xe3,0xd6,0xa0,0xca,0x9f,0x65,0x56,0xea,0x95 +.byte 0xab,0xc1,0xf4,0x98,0xaf,0x1a,0xe7,0x2b,0x1e,0x8d,0x75,0x43,0x43,0x9f,0x42,0x5c,0x2c,0xa5,0xd7,0x9a,0xcd,0xc2,0xab,0xd9,0x1f,0x1f,0xde,0x8a,0x3e,0xf8,0x0f,0x56,0x8a,0x01,0xde,0x47,0x41,0xd8,0xa0,0xc8,0x32,0x4d,0xa3,0x75,0x80,0x87,0xb1,0x1e,0x05,0x06,0x5e,0x2c,0x9a,0x7b,0xd3,0x22,0xe0,0x53,0x8f,0x4f,0x35,0x5f,0x46,0x3a +.byte 0xb2,0xfe,0x62,0x44,0x54,0x38,0xe0,0x03,0x5e,0xda,0xcb,0x86,0xdf,0xda,0x67,0x66,0x40,0x27,0x97,0xf0,0xc2,0xbd,0xce,0xce,0x37,0xeb,0x47,0xe2,0x56,0x7e,0x54,0xe9,0x51,0xda,0xec,0xd5,0xe6,0xc1,0x69,0x6e,0x4c,0x3d,0x92,0xdc,0xa0,0x51,0xe2,0x2b,0xb8,0x96,0xb6,0xce,0xdf,0x35,0xdb,0xd0,0xd4,0x42,0xe3,0x94,0x89,0x09,0x1b,0xb4 +.byte 0xe2,0x8f,0xfb,0x23,0x62,0x35,0x56,0xc7,0x94,0x40,0xd7,0x2d,0xdb,0x80,0xc9,0xbd,0x4d,0xe3,0x14,0x30,0x44,0x43,0xad,0xeb,0x3d,0x89,0xe9,0x61,0xd7,0x80,0x15,0x59,0xcd,0xda,0x38,0x11,0x3b,0x84,0x14,0x85,0xef,0x55,0xf2,0x01,0x2c,0xed,0x74,0xf5,0x71,0x75,0x0c,0x52,0x0c,0x41,0x86,0xbe,0x84,0xc5,0x89,0x8b,0xa5,0x6d,0xc3,0xfa +.byte 0x2b,0xe5,0xe7,0xe8,0xdd,0xf9,0xe8,0x27,0x08,0x5d,0xdf,0x61,0xdc,0xb2,0xe0,0x8c,0xe8,0xda,0xa8,0x68,0x22,0x51,0x6b,0xdf,0xd0,0x92,0x87,0x6a,0x43,0xff,0xd1,0x9d,0x9a,0x4c,0x03,0xdf,0x3e,0xc1,0x31,0x33,0x6e,0x2a,0x55,0xc1,0x58,0x59,0x69,0x66,0x05,0xd1,0xa7,0xa1,0x3b,0x98,0x1d,0x44,0x74,0xc7,0x7e,0xc0,0x07,0xd9,0x9c,0x87 +.byte 0x5f,0xc3,0x44,0x25,0x7b,0x96,0xbc,0x20,0x5d,0x14,0x08,0x34,0xe9,0xad,0x34,0xa3,0xc3,0x95,0x1a,0xc1,0xd1,0x37,0x43,0x49,0x66,0xff,0x39,0x70,0x27,0xa0,0x2b,0x39,0x9d,0x1b,0x78,0x52,0x55,0x77,0x30,0xe8,0x72,0x65,0x8a,0xc8,0xa4,0xe6,0xb7,0xd6,0x66,0x82,0xa7,0x1d,0xde,0x3e,0xc2,0x23,0x5a,0x8b,0x51,0xe4,0x44,0x03,0xf3,0x89 +.byte 0x10,0xb0,0x9a,0x09,0x5d,0xe3,0xe9,0x4a,0x0b,0xe3,0x86,0x58,0xf8,0xe3,0x1a,0x3f,0x7f,0x42,0xa5,0xd7,0xb0,0x24,0xb7,0xbc,0x1d,0x40,0xe7,0x2f,0x42,0x8c,0xa8,0x3c,0x33,0xee,0x9f,0xaf,0xd1,0x51,0x8e,0x34,0x82,0xc5,0x16,0xef,0xb1,0xa6,0xa8,0x0e,0xae,0xe6,0xc3,0x2f,0xb3,0x06,0xd4,0x4c,0xec,0xee,0x9e,0xff,0x88,0x82,0x4b,0xb8 +.byte 0xc5,0xef,0x94,0xe2,0x68,0x48,0x23,0xa2,0xc8,0xe4,0xdb,0x33,0xf9,0xee,0x73,0xc2,0xe6,0xa1,0x64,0xf9,0xf6,0xab,0x5a,0xdc,0xa5,0xb3,0xd8,0xae,0xf4,0x1f,0x47,0xfe,0xa0,0xee,0xf5,0xee,0x41,0x30,0xa6,0xbe,0x34,0x2c,0x1a,0x24,0x8a,0x80,0xb1,0x79,0x7e,0x2c,0xc0,0x65,0x68,0x46,0xae,0x0a,0x01,0x77,0xce,0xa2,0x5f,0xc3,0x00,0x8f +.byte 0xd4,0x0f,0xbe,0xbf,0x81,0x20,0x4e,0xb8,0x21,0x5f,0xfa,0xb2,0xf2,0x02,0x83,0x41,0xa8,0xf1,0xe8,0x2c,0x7e,0x0e,0xe6,0xf0,0x6e,0xd5,0x7b,0xcb,0x4e,0xed,0x06,0xc4,0x18,0xfb,0x0e,0x0d,0x8e,0x22,0x8a,0x40,0x4d,0x66,0xa5,0x0c,0x74,0xf3,0x9e,0xd9,0x90,0xf8,0x71,0xe4,0x92,0x05,0x3d,0x2d,0xa0,0xed,0x42,0x88,0x18,0x9a,0xc7,0xe4 +.byte 0x41,0x5d,0xde,0x44,0x2e,0x26,0x30,0xfe,0x51,0xa8,0x91,0xa3,0xa6,0xfd,0x3e,0x04,0x7f,0x3a,0xa9,0x1c,0x21,0x98,0xab,0xaa,0x39,0x9d,0xe4,0x51,0x75,0xeb,0x90,0x6b,0xab,0x11,0x89,0xa9,0x22,0xa8,0xc5,0x92,0x16,0x51,0xe1,0x77,0x09,0x53,0x7f,0xb6,0x80,0x4b,0xf5,0xf5,0xa2,0x0e,0x36,0x24,0x7f,0xe7,0xcc,0x67,0xfb,0x2c,0x6e,0xc2 +.byte 0x16,0x47,0x41,0xc2,0x77,0xf4,0xcf,0x49,0x37,0x17,0x67,0x34,0x14,0x92,0x7d,0x0f,0x14,0xe8,0x4b,0x4c,0xc3,0xbb,0x78,0xf7,0xa0,0x59,0xbe,0x06,0x10,0x38,0xe6,0x2c,0x08,0x15,0xba,0xc6,0x49,0x38,0x9a,0x91,0x2b,0x4d,0x82,0x42,0x0e,0xe4,0x02,0xef,0x2b,0xa2,0x06,0xcc,0x3a,0x3c,0xb9,0xc5,0xb5,0x71,0x1e,0x17,0x5d,0x65,0x35,0x91 +.byte 0x89,0x54,0x97,0xa8,0x7b,0x02,0x24,0xf9,0xdb,0xb5,0x52,0xf7,0xd0,0xa0,0x42,0x48,0x01,0xf4,0x47,0x7c,0x84,0x7c,0x8a,0xb4,0xf4,0x30,0xec,0xb9,0x21,0x44,0x87,0xb2,0x96,0xa4,0x3b,0x0d,0x93,0x26,0x09,0xc8,0xfa,0x28,0x6f,0x09,0xb7,0x03,0x85,0x66,0x21,0x2d,0xf1,0xaa,0x3f,0x0b,0x59,0x15,0xfe,0x8b,0x2b,0xe0,0x81,0x38,0x63,0x70 +.byte 0x09,0x37,0x38,0x62,0x04,0x8e,0x3f,0x23,0x65,0xf8,0xf7,0xc0,0x30,0xb8,0x04,0xb4,0x17,0xd7,0x21,0xcc,0x8b,0x31,0xd3,0x7b,0x11,0xea,0xc5,0x51,0x01,0x93,0x5f,0xe3,0xf3,0x1e,0x0d,0x41,0x52,0x2a,0xfd,0x27,0x02,0x00,0x58,0x0d,0x1f,0x16,0xd7,0x50,0x09,0xea,0x3f,0x9f,0x72,0xae,0x7a,0x79,0x4b,0x69,0x61,0xfc,0xac,0x5c,0x4d,0x6a +.byte 0x65,0x5d,0xa5,0x67,0x76,0xe4,0x24,0x3f,0xa0,0x6f,0xf6,0x60,0xd2,0x70,0x8e,0x2e,0xbe,0xf9,0x8b,0xab,0x22,0xc8,0x9c,0x5b,0x26,0xc5,0x75,0xeb,0x96,0xa2,0x4f,0xdf,0x6c,0x05,0x9a,0x15,0xef,0xbf,0x3e,0x35,0x6d,0x8d,0x48,0xa4,0x33,0xc2,0xe8,0x3b,0x89,0xe4,0x0c,0xb2,0x9a,0xc6,0x89,0x52,0xba,0xc7,0x2a,0xa5,0xfb,0xe5,0xde,0x06 +.byte 0xbd,0xc3,0x4f,0xe8,0xa9,0x9d,0x36,0xa5,0xcc,0x90,0xcd,0x68,0x49,0x52,0x6e,0x9a,0x85,0xd4,0x1b,0xe5,0x3f,0x54,0xc8,0xb4,0x7a,0x76,0xbf,0xa8,0xf4,0x25,0x05,0xeb,0x43,0x0c,0x2b,0x1c,0x59,0x5b,0x51,0x7f,0xd5,0x13,0x54,0x37,0x44,0x37,0x2f,0x79,0x1c,0x1f,0x18,0x57,0x60,0xab,0xf7,0xcc,0x5d,0xd5,0xdd,0x69,0xab,0x7f,0xc7,0x9d +.byte 0x7f,0xd7,0x6a,0xdc,0x34,0x3d,0x6e,0x2c,0x1e,0xb8,0x74,0xef,0xec,0x14,0x83,0x98,0x20,0x85,0x8a,0x95,0x93,0x26,0xed,0xbb,0x7d,0xfe,0x63,0xaa,0x20,0xbb,0x40,0x7b,0x35,0x1d,0xe5,0x64,0xc0,0x64,0x83,0x90,0x59,0xb4,0xae,0xf7,0xfe,0x14,0xb2,0xaa,0x72,0xf7,0x34,0x61,0xe0,0x61,0x06,0xb3,0xdc,0x09,0x5f,0xe1,0x57,0x65,0x83,0x8a +.byte 0x6d,0x46,0x54,0x8f,0xbf,0x38,0x12,0xf5,0xa3,0xfc,0x7b,0x90,0x4f,0x30,0xed,0xc1,0xab,0xb2,0x6e,0xee,0x7c,0x5e,0x35,0x70,0x80,0xb0,0xae,0x93,0xdc,0x4e,0x8f,0x6c,0x37,0xef,0xc9,0x4c,0x3a,0x41,0x14,0x91,0x99,0x0d,0x48,0xbe,0x5e,0x9b,0xc5,0xa6,0x4d,0x07,0x0d,0xd5,0xe6,0x5d,0x26,0x6b,0xa0,0xf3,0xb2,0x28,0x15,0x57,0xdb,0x7b +.byte 0x8e,0x6b,0x88,0xc3,0x81,0xb6,0x16,0xd1,0x3c,0xd0,0x2d,0x5a,0x23,0x35,0x8e,0xb0,0x8b,0x5c,0x99,0x6a,0x7a,0x55,0xb1,0xf9,0x45,0x97,0x94,0x05,0x6e,0x58,0xd4,0x53,0x8d,0x73,0x43,0x02,0x68,0xdf,0x7c,0x37,0x1a,0x6b,0x71,0x04,0xa0,0x31,0x77,0xbc,0xe0,0x16,0x5a,0x2a,0x9a,0xb2,0x40,0xe4,0xbb,0xd0,0xfd,0x35,0xcb,0x7f,0xf4,0x13 +.byte 0x0f,0xb5,0x93,0x9a,0x7d,0x50,0xf8,0xfe,0x56,0x34,0x83,0x20,0xce,0x3d,0x02,0x2e,0x0b,0x95,0x76,0x88,0x47,0x8c,0x75,0x51,0x14,0x52,0x49,0xbc,0xed,0x66,0x0e,0x81,0x65,0x5e,0x64,0xfb,0x45,0x59,0x3d,0x2b,0xd6,0x3a,0xc6,0xfd,0x50,0xe4,0xeb,0x0c,0x68,0x38,0x0f,0xdd,0xa2,0xdc,0xaa,0x26,0xf5,0x7b,0x40,0x6a,0x90,0xf8,0x08,0x2c +.byte 0xe8,0x8f,0x8e,0xc1,0xf2,0x6b,0x87,0xeb,0x7a,0x02,0x9e,0x26,0x3e,0x6b,0xb9,0x71,0x2e,0x6f,0x26,0x20,0xa9,0xc0,0x7c,0xe5,0x6c,0x6b,0xd4,0xc4,0x7b,0x54,0x8e,0x4a,0x7a,0xef,0xfc,0x03,0x02,0x1d,0x6a,0x16,0x99,0x35,0x12,0x49,0xba,0x86,0x37,0x7a,0xb0,0x8d,0x58,0x6f,0x1c,0xba,0xa9,0x5d,0x93,0xdf,0x98,0x50,0x7e,0xea,0x0a,0x88 +.byte 0x1a,0xd4,0x63,0x91,0x23,0x43,0x43,0x17,0x2e,0xe6,0x04,0x95,0x96,0xa8,0x2b,0xb4,0x9e,0x91,0x6c,0x13,0x52,0x8c,0xbf,0x7d,0x50,0xfc,0x79,0xef,0xa1,0x3e,0x90,0xba,0xac,0xd1,0x0d,0xb0,0x4d,0xd5,0x7a,0xc7,0xbd,0x82,0xb7,0x03,0x9c,0x0b,0xbc,0xa7,0x3c,0x05,0x8f,0xbd,0x0d,0x7f,0x80,0xeb,0xe9,0xbd,0x8f,0xdc,0xcd,0x86,0x23,0x26 +.byte 0xb0,0xa4,0xdc,0x63,0xef,0xad,0x61,0x53,0x7e,0x23,0x34,0x0d,0xd9,0x75,0x7c,0xa7,0x57,0xba,0x28,0x0c,0x82,0x7f,0x68,0xe5,0x24,0xdc,0x23,0x99,0xcd,0x6f,0x03,0x59,0x4f,0x35,0x47,0xc4,0x11,0xc0,0x0c,0x2b,0x16,0x94,0xb8,0x28,0xf2,0x0a,0x91,0x2e,0x1c,0xde,0x75,0x50,0x52,0x00,0x0a,0x92,0x80,0xca,0x39,0x3a,0xdf,0x16,0xb7,0xe2 +.byte 0xbd,0x98,0x7b,0x70,0x48,0x85,0x6d,0x48,0xa0,0x1b,0x0a,0xbb,0xa8,0xb6,0xca,0x9c,0x4e,0xda,0x0a,0x17,0x0b,0x30,0xf5,0xa2,0x9b,0x5a,0x89,0xf4,0x53,0x89,0x38,0x34,0x2b,0x7d,0x14,0x04,0x44,0xa3,0x8f,0x70,0x29,0xa5,0x3e,0xdd,0x5a,0x61,0xa1,0x04,0xac,0xd8,0xd3,0xec,0x42,0xc4,0xd9,0x2c,0x13,0x80,0xf8,0xc9,0xec,0x54,0xa7,0xa0 +.byte 0xe6,0x37,0x04,0x38,0x5f,0x1e,0x0b,0xfb,0x38,0x06,0xb9,0xe2,0x05,0x12,0x12,0xa2,0x28,0xff,0x12,0xae,0x44,0xd8,0x0d,0x2c,0x5a,0x8f,0xfb,0x1d,0x98,0x69,0x85,0x69,0x99,0xc0,0x63,0xc5,0x88,0xa7,0x2d,0x56,0x76,0x32,0x23,0x4c,0xf7,0x29,0xd6,0x3e,0x45,0xfa,0xd7,0x61,0xf4,0x9a,0xa6,0x9e,0x4a,0xe7,0xe7,0xf9,0xbf,0x1f,0x09,0x82 +.byte 0xbe,0x36,0xa0,0xdd,0x91,0x47,0x3b,0xbc,0x52,0xf2,0xc2,0x04,0x96,0x85,0xb6,0x93,0xac,0x99,0x94,0xbe,0xfd,0xe6,0x53,0x9f,0x75,0xab,0x38,0xdd,0x81,0xc0,0x79,0x25,0xcd,0x73,0x72,0x5b,0x4d,0xc0,0xba,0xa9,0x18,0xaa,0x76,0x51,0x15,0xef,0xb9,0x22,0xdd,0x5f,0x22,0x62,0x6c,0x36,0xf6,0xc0,0x72,0x34,0x01,0x7a,0xaf,0xe2,0x87,0x1b +.byte 0x5f,0x33,0x9c,0xd5,0xe2,0x81,0x03,0xbe,0x4e,0xac,0xcc,0x17,0xc5,0xc6,0xf8,0x0f,0x24,0xe0,0x26,0x56,0x8a,0x20,0x2e,0xe4,0x05,0xc8,0x0f,0x89,0x24,0x0e,0xd4,0xb7,0x07,0xd1,0x99,0x8c,0x55,0xfd,0x75,0xc1,0xdb,0xaa,0xd1,0xd2,0xa6,0xf2,0xf0,0x3c,0xae,0x62,0x0e,0x1f,0xaa,0xc9,0xa5,0x16,0x09,0x2c,0xc0,0x61,0x55,0x72,0x70,0x63 +.byte 0x22,0xb6,0x41,0xa5,0x08,0x34,0x6a,0x1b,0xfc,0x42,0x81,0xe7,0x25,0x98,0xcf,0xba,0x18,0xb0,0x36,0x90,0x72,0x65,0x75,0xf3,0x57,0x68,0xd0,0x86,0xe4,0xaf,0x33,0xb6,0x2b,0xef,0x96,0x97,0x17,0x42,0x6b,0x8e,0x19,0xaa,0x4b,0x9d,0xc7,0x73,0x34,0x5f,0x41,0x24,0x12,0xfb,0x66,0xa2,0x1e,0x91,0x41,0xc2,0x78,0x08,0x66,0xc4,0xb2,0x86 +.byte 0x67,0x70,0xe6,0x96,0x76,0x8d,0xa4,0x69,0x6f,0xe5,0x35,0x8b,0x20,0x3d,0x6a,0xcb,0x65,0x7b,0x82,0x7b,0xf6,0x2d,0xd8,0xd0,0xda,0x69,0x8b,0xcd,0xdf,0x15,0xf6,0x3a,0x2c,0xfe,0xc7,0x84,0x20,0x11,0xcc,0x18,0x4f,0xc7,0x2e,0x1c,0x46,0x41,0x6b,0x91,0x79,0xa0,0xbb,0xf4,0x48,0xd7,0x0c,0x9a,0x88,0x01,0xda,0xa1,0xd1,0x8f,0x27,0x49 +.byte 0x9d,0xa0,0x3f,0x5a,0xc2,0xf7,0x26,0x9b,0xe5,0xff,0xa4,0xcb,0x86,0x32,0xb3,0x3c,0xd5,0xe5,0x7c,0xbb,0x5e,0xfe,0x3d,0xcf,0x60,0x1c,0x16,0x8e,0x0c,0xc4,0xa9,0xf2,0xb2,0x42,0x1d,0x13,0xb0,0xa8,0xff,0x90,0xbc,0xd9,0x9a,0x6d,0x78,0x7a,0x46,0x1a,0xa8,0x35,0x4e,0xa4,0x79,0xd5,0xb4,0x36,0x47,0x62,0x3c,0x0e,0x23,0x56,0xca,0xa2 +.byte 0x60,0xe6,0xca,0xf6,0xc3,0xd6,0x7c,0x5d,0x54,0x9c,0x0c,0xfa,0x9a,0x0f,0x3a,0x8c,0x64,0x52,0xdb,0x62,0x5e,0x93,0x82,0xef,0x9e,0x8d,0x30,0xa5,0xe7,0x3d,0x52,0x11,0xd4,0x93,0xb1,0x77,0x8f,0xee,0x54,0x9c,0x80,0x47,0xa9,0x21,0xa8,0xf7,0x16,0x4b,0xbb,0xab,0x75,0x52,0xed,0x0c,0x85,0xf8,0x04,0xf4,0x80,0x08,0x4a,0xb5,0x2d,0x2d +.byte 0xd8,0x98,0x57,0x24,0xd5,0xc8,0x77,0xa0,0xd8,0xb5,0xb1,0x83,0x92,0xb4,0xc7,0x42,0x36,0xd1,0xa5,0xd6,0xbd,0x89,0xc6,0x76,0x31,0x92,0x31,0x67,0x2c,0xa4,0xb2,0x2b,0xcf,0x94,0x20,0x6a,0x17,0x63,0xb9,0x76,0xac,0x9c,0x1c,0x95,0x3e,0x57,0xf8,0x87,0x0d,0xef,0x36,0xcd,0x87,0xd1,0x58,0x2c,0x9a,0x5e,0x54,0x0e,0xac,0x97,0xbd,0x15 +.byte 0xc4,0xdb,0xea,0xd3,0x21,0x05,0x2d,0x78,0xce,0x4c,0x60,0xf3,0xf8,0xeb,0xd9,0x19,0x89,0xb0,0x83,0xc0,0xe4,0x42,0x08,0x5c,0x1a,0x1c,0x53,0xf3,0x1e,0x5a,0x28,0x92,0x0d,0x32,0xbe,0x4a,0x9a,0x70,0x78,0x93,0xc1,0x66,0x81,0xda,0xe7,0x3d,0x05,0xc5,0xaa,0xdc,0x51,0x6b,0xaf,0x67,0x4d,0x18,0xfe,0x29,0xe0,0xfa,0x5c,0xe5,0x9a,0x18 +.byte 0x7f,0x8f,0xaa,0x21,0xa5,0xd0,0x8b,0x62,0x32,0x6b,0x93,0x02,0x19,0x62,0xd3,0xd6,0x74,0xea,0x83,0xdb,0x6c,0x57,0xe3,0x1f,0x1f,0x90,0xd0,0x22,0xf7,0x9a,0x4a,0x14,0xf4,0x8a,0xb3,0x86,0xa5,0x4c,0x1e,0xdf,0x49,0xa5,0x78,0x30,0x5e,0xf0,0x9a,0x69,0x0d,0xaa,0xe9,0x47,0x01,0xae,0x51,0xcf,0x32,0x4c,0xec,0x03,0x08,0xe7,0xcb,0x35 +.byte 0x59,0xd2,0x48,0xd4,0xfa,0x6a,0x45,0x6b,0x66,0x1f,0xb8,0x1e,0x45,0x85,0xef,0x14,0x25,0x34,0x48,0x50,0x59,0xf3,0x76,0x09,0x32,0xf5,0xe4,0xa8,0x98,0xb0,0x9a,0x70,0xec,0x0a,0x17,0x87,0xcf,0x6d,0x96,0x7d,0x50,0x5e,0x3a,0xff,0x57,0xa7,0xaf,0x04,0x0d,0xdc,0xcc,0xad,0xe3,0x09,0xd3,0x92,0xab,0xd8,0x3a,0x61,0x1f,0x9c,0xc4,0x36 +.byte 0x3b,0xf3,0xf6,0x87,0x43,0xea,0xc8,0xff,0x29,0x19,0x9e,0x87,0x44,0xc7,0xe5,0x5c,0x43,0x30,0x9a,0xb2,0xd8,0x47,0x4a,0x87,0xcc,0xc7,0x8e,0x99,0x32,0xdd,0x3c,0x37,0xda,0xa0,0x39,0x04,0x55,0xca,0xcf,0x2f,0xce,0x8b,0x22,0x35,0x2c,0x29,0x89,0xef,0x5c,0x05,0x82,0x55,0xf3,0x8d,0x64,0x7f,0x69,0xf7,0x3d,0x43,0x27,0xf3,0x4c,0xd7 +.byte 0x43,0x89,0x47,0xd5,0x0b,0x01,0x1b,0x17,0x6c,0x7e,0x63,0x18,0x87,0x8b,0x8f,0x20,0x0d,0xa4,0x1e,0xa5,0x3b,0xf1,0x5c,0xe5,0xc8,0x23,0xd4,0xee,0x79,0x3e,0xd1,0xbc,0x83,0x30,0x03,0x64,0x80,0x7e,0xda,0x13,0x7c,0x52,0x88,0xc1,0x7c,0xa7,0x8a,0x5d,0x8d,0x7b,0x57,0x4e,0x59,0x97,0x83,0x52,0x03,0x04,0x6b,0xd2,0xf3,0xff,0x1c,0x4e +.byte 0x3b,0xae,0x70,0x61,0x3b,0x8b,0xaf,0x56,0x3d,0x28,0x73,0x24,0x39,0x4b,0xb8,0x6e,0x89,0x28,0xe6,0xc8,0x5c,0xe9,0xf8,0xec,0x8f,0xf7,0x75,0x1a,0x13,0xc1,0x8e,0x53,0x4e,0xe5,0xef,0x37,0xce,0xa1,0x54,0xca,0xcc,0xf5,0x01,0x29,0x2a,0x8f,0x00,0x1c,0xde,0xcd,0x5e,0x24,0x0b,0xa5,0x94,0x0c,0x8a,0xab,0x54,0x1e,0x80,0x2a,0x0d,0x84 +.byte 0x38,0x4c,0x17,0xea,0x84,0x07,0x9c,0xbd,0x85,0xd8,0x1b,0x57,0x6a,0xde,0xb3,0x86,0xa3,0xf8,0x6d,0x03,0x3e,0xf1,0x37,0xae,0x7d,0x02,0x33,0xc5,0x7b,0xf6,0x64,0xdb,0x3e,0xb0,0x48,0xda,0x49,0xec,0x89,0xb4,0x83,0xff,0xe1,0x6f,0x9a,0x7e,0x0a,0xda,0x6e,0xec,0x70,0x0b,0x51,0xac,0x82,0xac,0xb8,0xce,0x16,0xe7,0x47,0xab,0xe8,0xc7 +.byte 0x56,0xd1,0xab,0x73,0x72,0x5c,0xe7,0x9e,0xb8,0x77,0xa7,0xc1,0x47,0x9c,0x4e,0x16,0x68,0xce,0x21,0x23,0x2d,0x6c,0xcf,0x79,0xd6,0xd4,0xdf,0x74,0x30,0xb8,0x0f,0x60,0xea,0xbf,0x39,0x77,0x45,0xdc,0xaf,0x25,0xbd,0xc5,0x8d,0x0b,0x44,0x21,0xc1,0xc1,0x2e,0x54,0x2a,0x32,0x6c,0xea,0x51,0xe0,0x7d,0xa8,0x09,0x94,0x2f,0x4e,0xfe,0x27 +.byte 0xe8,0x63,0xfb,0x71,0xca,0x01,0x7d,0xc9,0x70,0xd8,0xe4,0x82,0xbf,0x3f,0xea,0x64,0x5e,0xa9,0x84,0x1d,0x2c,0xfd,0x8a,0x7d,0x33,0x73,0x5c,0x82,0xbe,0x9e,0x46,0xfc,0x39,0x5e,0x38,0x2a,0x20,0xd9,0xa9,0x20,0x46,0x23,0xc1,0x8b,0x0a,0x9c,0x42,0xb6,0x50,0x9f,0xc8,0x7d,0x4a,0x85,0x98,0xed,0x92,0x13,0xd3,0xd6,0xe6,0x6d,0x50,0x6e +.byte 0x93,0x63,0x41,0xa3,0x63,0x97,0x52,0xe3,0xaf,0x09,0xe1,0x40,0x12,0x41,0xed,0xb3,0xc5,0xb8,0x9f,0xc1,0xf2,0xd2,0xe6,0x16,0x94,0x97,0xdb,0xae,0xdb,0xd4,0x1f,0x5a,0x2f,0xf1,0xb1,0x22,0xf6,0x60,0xa4,0x0e,0xd8,0x2f,0xf7,0xf7,0x3f,0x6c,0x7d,0x73,0xe3,0x1d,0x99,0x04,0x7f,0x4f,0x70,0x2a,0x8c,0x43,0x80,0xa3,0xd0,0x25,0x75,0xd8 +.byte 0xb6,0xc8,0x90,0xa2,0x26,0xee,0xba,0xc5,0x1a,0xdc,0x1f,0x81,0x65,0x54,0xc6,0x57,0x6e,0xa2,0x03,0x32,0xf5,0x14,0xb2,0xdd,0x4d,0x21,0xaa,0xb9,0x78,0x4f,0x76,0xab,0xbe,0xfe,0x5d,0xc6,0xaf,0xed,0x6f,0xf9,0xaa,0x31,0x21,0x08,0xa4,0x6e,0xfb,0x78,0xdc,0xed,0x0c,0x05,0xff,0x1e,0x60,0x38,0x60,0x94,0xa9,0x92,0xa7,0x07,0x6e,0x6f +.byte 0x6d,0x89,0x8a,0x73,0xfb,0xaf,0x01,0x34,0x7d,0x7d,0x33,0x76,0xff,0x1f,0x6b,0x79,0x5e,0xff,0x50,0x14,0x80,0x7d,0x55,0x0e,0x2d,0xc3,0x77,0x85,0x30,0x20,0xf6,0xc8,0xc7,0xb7,0x73,0x1b,0xd1,0x87,0x69,0x44,0xeb,0x02,0x5e,0x45,0x66,0x6f,0x28,0x00,0x1f,0xf8,0x58,0x93,0xe5,0x21,0xbc,0x19,0x8d,0x72,0x19,0xaa,0x9a,0xbb,0xc6,0x47 +.byte 0xe6,0x0b,0xe4,0x76,0x13,0xc7,0xc4,0x1b,0x9d,0x85,0xba,0x17,0xb6,0x30,0x2a,0xdb,0x7c,0x36,0xd7,0xd8,0x8b,0x9c,0x99,0x92,0x64,0x03,0x4f,0xd4,0x1f,0x04,0x2e,0x45,0x34,0x55,0x92,0x99,0x77,0xb8,0x45,0xce,0x59,0x22,0x3c,0x6e,0xe5,0x18,0xb0,0x83,0x42,0x42,0x75,0x1c,0x34,0x0f,0x2e,0x59,0x06,0x94,0x17,0xea,0xc3,0xdb,0x0b,0x2f +.byte 0x44,0x97,0x54,0xe8,0x76,0xd3,0x25,0x24,0xe9,0x21,0x4f,0xd7,0x01,0x7d,0xbe,0x90,0x8a,0x0a,0x7d,0x4e,0x91,0x5f,0x4c,0x32,0x83,0x42,0x55,0x95,0x3c,0x7a,0x3e,0x46,0x8a,0x5d,0x0c,0x05,0xcd,0x0b,0xf6,0x3e,0x4d,0xf3,0x55,0xea,0x42,0x3e,0x19,0x0e,0xda,0xd4,0x22,0x88,0xe2,0x29,0x06,0x9e,0xea,0x1c,0x27,0x96,0x7f,0x3a,0x8a,0x28 +.byte 0x2f,0x7d,0xa2,0x65,0x37,0xae,0xb6,0x6a,0x59,0x41,0x19,0x73,0x91,0x64,0x77,0x4e,0x5a,0x1a,0x85,0x9f,0xc5,0xb0,0x85,0xc1,0x96,0x47,0x69,0x9c,0x36,0x70,0x36,0xa3,0x2e,0x1a,0x7d,0x11,0x59,0x55,0xec,0x4c,0x49,0xa1,0x86,0x3c,0x3d,0x24,0xb8,0x7a,0x84,0xca,0x4c,0x3f,0x7e,0x81,0x95,0x39,0x41,0xfe,0xc4,0x74,0xe5,0x89,0x7e,0xdc +.byte 0x86,0xd2,0xdb,0x8b,0xb8,0xa2,0xbb,0x15,0x64,0x89,0xf9,0x00,0x7d,0x56,0xec,0x8b,0xc8,0x05,0xcd,0x76,0x6c,0xcb,0xaf,0x7e,0xd2,0xdd,0x67,0xb3,0x99,0x16,0x63,0xf2,0x6d,0x49,0x7d,0xeb,0x67,0x24,0x98,0xf1,0x28,0xa3,0xb2,0x14,0xfc,0x95,0xf6,0x55,0xa0,0xb5,0x8c,0x26,0x2f,0xc6,0x08,0x49,0x57,0x4c,0x20,0xbc,0x48,0xab,0x24,0xef +.byte 0xe9,0xab,0x6b,0x77,0x4d,0x3b,0x61,0x84,0x68,0x67,0x72,0xc2,0xcf,0xab,0x8e,0xac,0x39,0xec,0x43,0x03,0xbb,0x4f,0x32,0x7d,0x7d,0x51,0x69,0x30,0xee,0x4f,0xd0,0xb9,0xa5,0x22,0xdd,0x47,0x06,0xad,0xac,0x62,0x20,0xff,0x7b,0x8c,0x90,0x91,0xb3,0xd8,0x89,0xd3,0xea,0x81,0xdc,0xca,0x31,0xc3,0x65,0xca,0x4c,0x50,0x0a,0x85,0xf7,0xaf +.byte 0xe3,0x67,0x57,0x53,0x1d,0x4e,0x42,0x17,0x2d,0x14,0x80,0x29,0x09,0x2b,0x48,0x45,0x43,0xb9,0xad,0x1f,0xb7,0x2d,0xab,0xfa,0x6a,0x1b,0x3c,0x7d,0x76,0xd7,0x36,0x20,0xb0,0xd3,0xc0,0x5e,0xc7,0x20,0x06,0x0c,0xa9,0x6a,0xb2,0x67,0xad,0x91,0x49,0xfc,0x4d,0xb2,0x15,0x61,0x61,0xfa,0x33,0x6c,0x94,0x92,0x58,0xef,0x46,0x82,0x9c,0x04 +.byte 0x52,0x21,0x28,0x08,0xb4,0xa9,0xd4,0x2e,0xd9,0x8c,0x93,0xd0,0xd8,0x4f,0x33,0x1d,0x0b,0x7e,0x07,0x12,0x40,0x64,0x3d,0xa2,0x8f,0xa3,0x96,0x45,0x0e,0xfc,0x9b,0x55,0x5f,0x3c,0xa2,0x57,0x3e,0x51,0x40,0x69,0xdc,0x7a,0x51,0xd2,0x3b,0x79,0x2f,0xd2,0x01,0x18,0xbf,0xd5,0xd2,0xd1,0x0e,0x08,0xcf,0xac,0x07,0x4d,0xd1,0x92,0xc7,0xca +.byte 0x92,0x75,0x0b,0x80,0x29,0xf1,0x46,0x24,0xba,0x47,0x6b,0x4a,0x64,0xfb,0x31,0x69,0xe9,0x40,0x0d,0x69,0x50,0xd0,0xdf,0xf8,0xcb,0x6a,0xe8,0xd4,0xc2,0xbd,0x0b,0x23,0x00,0xe0,0x29,0x0a,0x0a,0x8e,0x19,0xec,0xa9,0x14,0xe4,0x5d,0x4c,0x30,0xc9,0x85,0x42,0xd6,0x9f,0x83,0x8f,0x2a,0x5b,0x22,0x37,0xe4,0x71,0x3b,0x19,0x86,0xd4,0xda +.byte 0xb5,0x81,0x8e,0x84,0x57,0xcd,0x13,0x64,0xc3,0x23,0xfd,0x91,0x8a,0xe4,0xb9,0x32,0x12,0x17,0x02,0xa6,0x8d,0xec,0x44,0x9d,0xa5,0x7c,0x96,0x14,0xd1,0xd5,0x93,0x02,0x0c,0x9d,0xfc,0x26,0xa0,0xd2,0x41,0xaa,0x75,0xe8,0x82,0x6f,0x47,0x1d,0xe8,0xcf,0x94,0xe3,0x35,0xa9,0x76,0x1e,0xdb,0x92,0x5f,0x32,0x49,0xf4,0xd5,0x59,0x9c,0x4e +.byte 0xf7,0x89,0xda,0x23,0x7f,0x46,0x0e,0xfc,0xaf,0x1c,0x6f,0xcc,0x59,0xa5,0x43,0x04,0xbf,0x55,0xab,0x7d,0x36,0xa3,0xa5,0x03,0x7f,0xdf,0x33,0x6c,0x6d,0xd0,0x53,0xaa,0xef,0x54,0xc1,0x62,0xa0,0xd6,0x3a,0x67,0x87,0xe3,0x76,0x17,0x45,0xbe,0x7f,0x55,0xc8,0x8b,0xe8,0x1c,0xa8,0xe6,0xa6,0xb2,0xbf,0xe5,0x45,0xc0,0x88,0x22,0x36,0xa0 +.byte 0xec,0x21,0xdc,0x3e,0x6b,0xd2,0xc7,0xdf,0x5b,0xa4,0x32,0x28,0xca,0x23,0xe1,0x50,0x55,0x72,0x59,0x28,0x1c,0xf7,0x93,0x91,0x07,0x3c,0x4e,0x81,0x20,0x58,0x9b,0x07,0x38,0x37,0x68,0x2c,0x29,0xba,0x20,0x11,0xa9,0xa0,0x29,0x65,0x57,0xb1,0xe3,0xb1,0xfb,0xe2,0x70,0xee,0x1f,0xcd,0xf5,0x61,0xea,0x7a,0x08,0xb4,0x1e,0xfe,0xe7,0x4d +.byte 0x32,0xa0,0xfd,0xb4,0x52,0xa1,0x4b,0x67,0xba,0x5e,0x90,0xe7,0x56,0xec,0x06,0x03,0xb6,0xe6,0xc6,0x98,0xa1,0x41,0xf4,0xaf,0xde,0xe2,0x67,0xef,0xaa,0x05,0x97,0xc5,0x80,0x32,0xd0,0x43,0xc2,0x02,0x7a,0xcc,0x4c,0xdd,0xe9,0x1e,0xd0,0x4f,0xad,0xf3,0x4b,0x2c,0x5e,0xb8,0xd8,0x84,0xc2,0x43,0xc7,0xa9,0x86,0x4d,0x10,0xae,0xb7,0xe3 +.byte 0x5c,0xd5,0x2a,0xba,0x3b,0xd3,0x7b,0x5d,0xc8,0xe0,0x67,0x87,0xbe,0xbf,0x71,0x4e,0x22,0x68,0x12,0x53,0x95,0x73,0x5c,0x30,0x7b,0x2b,0xfd,0xc1,0x3c,0xfc,0xc4,0x0f,0xdd,0x5b,0x3e,0x1b,0x72,0x71,0xa6,0xe3,0x1f,0x2d,0x51,0xe2,0x61,0x3d,0xa0,0x60,0xc2,0x6b,0x41,0x8f,0x94,0x83,0x29,0xa3,0xb6,0xa7,0xc7,0x11,0x8f,0x1c,0xb5,0x19 +.byte 0x66,0x44,0xc7,0x05,0x58,0x83,0x28,0x69,0x0c,0xb6,0x65,0xe5,0x93,0x1c,0xb1,0xf6,0xf9,0xea,0xda,0x84,0x26,0x8e,0xa2,0xbb,0x9b,0x55,0xd3,0xbc,0x42,0x56,0x8f,0xce,0x6e,0x74,0x40,0xf2,0x02,0xa6,0x22,0x22,0x6e,0x20,0x0e,0x4b,0x8b,0x15,0xa5,0x04,0xf0,0xe0,0x7b,0x27,0x0a,0x38,0xe3,0x99,0x04,0xd0,0x5b,0x64,0xd2,0x04,0x92,0x61 +.byte 0x57,0x74,0xbc,0x1e,0x98,0x01,0x4b,0x2f,0x46,0x56,0x1c,0xeb,0x49,0x2d,0x66,0xac,0x85,0x96,0x48,0xfd,0xa1,0xf0,0xf5,0xc0,0xdb,0x7a,0xf2,0x0b,0x57,0x86,0xac,0x4c,0x6a,0x02,0x97,0x13,0xef,0x08,0xf6,0x18,0xe1,0x5c,0xb3,0x18,0x3d,0x70,0xc0,0x76,0x5e,0xd0,0xb8,0x44,0x32,0x25,0x75,0x62,0xa2,0x80,0x78,0x8c,0xc4,0x2a,0x84,0xbc +.byte 0x51,0xd4,0xee,0x44,0x48,0xe5,0xc4,0x48,0xbf,0xc0,0x27,0xc1,0x77,0x25,0xf5,0x59,0x6b,0x60,0xae,0xa5,0x42,0xfe,0xc3,0x06,0x91,0xe3,0xdb,0xa9,0x4b,0xe2,0x73,0x95,0x1f,0xf6,0xb6,0x66,0x71,0x63,0xb3,0x14,0x4a,0x3d,0x36,0x84,0xbe,0x2a,0x7c,0x7c,0xba,0x0e,0x8d,0x9a,0x73,0x52,0x21,0x89,0x02,0x8f,0x94,0xa5,0x9a,0x11,0x2e,0x6e +.byte 0x78,0xf7,0x07,0xf8,0xb1,0x42,0x96,0x06,0x78,0xf0,0x53,0x86,0xec,0x2b,0x1f,0xa7,0x84,0x79,0x37,0xc7,0x61,0x83,0x8e,0x62,0x65,0x49,0xdd,0xfe,0xee,0x97,0x70,0xa2,0x73,0xb5,0x85,0xaf,0x10,0xed,0xb8,0x74,0xec,0x42,0xd0,0x14,0x47,0xa6,0x90,0x7c,0x07,0x22,0xb4,0x4e,0xfc,0x12,0xa1,0x9d,0xd4,0x73,0x8f,0x6a,0x55,0xf8,0x56,0x25 +.byte 0xdb,0x9b,0xe8,0x10,0x87,0x7a,0x4b,0x42,0x9c,0xbb,0x6e,0xf1,0xd7,0x1d,0xf4,0x07,0x31,0x9c,0x94,0x3a,0xb6,0xad,0x4b,0xf4,0x57,0x3d,0x2f,0xba,0x23,0x36,0x34,0x52,0x62,0xf7,0x64,0xc7,0x47,0xeb,0x41,0xad,0x07,0xfb,0x3e,0x08,0x74,0x92,0x58,0x0f,0x73,0xe2,0x53,0x35,0xda,0xae,0x64,0x3c,0x47,0x89,0xaf,0xce,0x59,0x35,0x75,0x8b +.byte 0x50,0xee,0xbf,0xbe,0xd1,0xf4,0x2f,0x11,0xa3,0xfe,0xce,0xfd,0x15,0x0d,0x32,0x17,0x00,0xfb,0xad,0x02,0x70,0x5c,0xeb,0x59,0xfb,0x87,0xe5,0xed,0x0e,0xde,0x97,0xe7,0x75,0xb6,0xdc,0xe9,0xb0,0x08,0x26,0x0e,0x11,0xd4,0x4f,0xc4,0x92,0x71,0x7c,0x63,0xef,0xc0,0x14,0x64,0xe1,0x0f,0x7e,0xe6,0xcb,0x5b,0x4c,0xd4,0x16,0x8b,0x7b,0x8b +.byte 0x2f,0x2a,0x77,0xef,0xd3,0xdf,0x56,0xc0,0x5a,0x94,0x72,0xd5,0x36,0x12,0xfa,0x25,0xd7,0x77,0x52,0xdd,0xea,0x11,0x2f,0x6b,0x16,0x6e,0xe3,0xa2,0x84,0xba,0x55,0xc2,0xb0,0xe2,0x3b,0x53,0xb6,0xa4,0xc6,0xa5,0x3f,0x1b,0xb3,0x38,0xc0,0x2f,0x1a,0x80,0xe0,0xa4,0x60,0x49,0x8c,0xe3,0x23,0x5f,0x59,0xfd,0x2a,0x0f,0xe8,0x4c,0xaf,0xd7 +.byte 0x36,0xc7,0x25,0x21,0xad,0x41,0x54,0x27,0x95,0x15,0x42,0xbc,0xb3,0x77,0x4e,0x97,0xf4,0x3c,0x54,0xcc,0x19,0x63,0x62,0x67,0x97,0x5a,0xd0,0x59,0xfb,0xce,0xcd,0xe1,0x3c,0xb6,0xc9,0x49,0xc4,0xff,0xde,0xf9,0x89,0x87,0x9c,0xdf,0x4e,0x8c,0x9d,0xe5,0xbd,0x0d,0x0c,0x6e,0x93,0xfd,0xea,0x90,0xf2,0x80,0x7e,0x00,0x9a,0x06,0x02,0x87 +.byte 0xae,0xca,0xf4,0x46,0xbb,0xb5,0x52,0xee,0x18,0xb0,0xf1,0x61,0xcb,0xe1,0x65,0x9c,0x0b,0xfb,0xe6,0x3b,0xeb,0x3a,0x1a,0x22,0x41,0x0b,0x99,0xa4,0x8e,0x01,0x5e,0x7c,0x4e,0x1a,0xaa,0xab,0xd3,0x8b,0x99,0x7f,0xba,0x6b,0xec,0xe7,0x3a,0xd6,0x55,0x46,0x20,0x1b,0x10,0x39,0x06,0xcc,0x90,0xc1,0x6a,0xa5,0x27,0x7c,0xca,0xa5,0x58,0x07 +.byte 0xd7,0xaf,0x6d,0x12,0xa6,0x68,0xc7,0x0e,0x19,0x53,0x44,0x22,0x85,0xbb,0x72,0x9c,0x4d,0xfb,0xeb,0x94,0x3a,0xa0,0x64,0xf5,0x25,0xe8,0xee,0x7a,0x3b,0x71,0x0e,0xbb,0x40,0xa2,0xb3,0xc9,0x6b,0x14,0x0f,0xc3,0x75,0xac,0x1b,0x5c,0xf1,0x34,0x51,0xcb,0xeb,0x5f,0x40,0x0f,0x82,0xe9,0xd2,0x6d,0x95,0x88,0x84,0xea,0xe9,0xe3,0xa0,0xe9 +.byte 0xef,0x3b,0x33,0xfe,0x32,0x52,0x93,0xce,0x95,0x4b,0x64,0x3c,0x97,0x76,0x91,0xd8,0xce,0xb5,0xc2,0xda,0x58,0x23,0x27,0xe2,0x3d,0xbe,0xf6,0x31,0x79,0x73,0x0e,0x31,0xd7,0xa3,0xaa,0xac,0xcf,0x31,0x1e,0x75,0x58,0x14,0x21,0x52,0x1c,0x3e,0x4f,0x2a,0x2b,0x9a,0x22,0xbc,0x42,0x68,0x5b,0x83,0xc2,0x8c,0xd4,0xe8,0xd9,0x02,0x0d,0x13 +.byte 0x2f,0x08,0xd3,0x11,0xb7,0x4b,0x84,0x67,0x43,0xda,0x20,0xdb,0x89,0xd5,0x9e,0x14,0x54,0x3d,0x49,0xda,0xac,0x3f,0x8f,0xf5,0x17,0xfe,0xb8,0x5f,0xc3,0x20,0x38,0x27,0x21,0x32,0xbf,0xf3,0x9b,0x2c,0x0b,0x9b,0xeb,0x64,0x87,0xf7,0x9d,0xed,0x15,0x05,0x21,0x69,0xcf,0x2d,0xf8,0xfb,0xf2,0x81,0x51,0x08,0xc7,0x18,0x81,0xdf,0xed,0xa4 +.byte 0x70,0xb3,0x07,0xfa,0x00,0xd5,0x65,0xb9,0x5a,0x82,0x67,0x6f,0x10,0xfc,0x46,0x05,0x9a,0x85,0x64,0x14,0x60,0x64,0x4d,0x1f,0x13,0x57,0xbb,0x7c,0x4a,0x10,0x84,0x8c,0x57,0x36,0x13,0x22,0x00,0x04,0x2d,0xcf,0x27,0x3d,0xf4,0x27,0x3e,0x32,0xb3,0x87,0xda,0x82,0xaa,0xad,0xd7,0xa7,0xc5,0x3c,0x45,0xec,0x28,0x82,0x79,0x95,0x8f,0x56 +.byte 0x50,0x5f,0xc2,0x15,0xab,0x18,0x58,0x4f,0x69,0x46,0xce,0x29,0x33,0x42,0x53,0xe9,0xea,0xe5,0xa8,0x5b,0x90,0xc4,0xf4,0xbf,0x8a,0x20,0x62,0xad,0xa5,0xea,0x6a,0x4e,0xb4,0x20,0x2d,0xca,0x90,0xdf,0xbd,0xab,0x5b,0xc3,0x33,0x7c,0x53,0x1f,0xf5,0x2e,0xc0,0xbf,0x19,0xe1,0xa1,0x5a,0x63,0xf3,0x13,0x4d,0x6e,0xef,0x4f,0x3a,0x94,0x18 +.byte 0xbe,0x79,0xdb,0xbf,0xc2,0x2c,0xb3,0x36,0x59,0xab,0x21,0x1d,0x98,0x60,0x70,0xdd,0x95,0x51,0x19,0x07,0xd6,0x68,0x0e,0x2a,0xd4,0x4c,0x30,0x18,0x1c,0xe4,0xe1,0x89,0x15,0x25,0xea,0x27,0xcf,0x51,0x56,0xc9,0xa9,0xa7,0x31,0x08,0x17,0xfb,0xfc,0xf6,0x0c,0x5d,0xf1,0x7c,0x36,0xcb,0xad,0xef,0x29,0xf5,0x2e,0x23,0x09,0xcf,0x31,0x6f +.byte 0x74,0x12,0xd2,0xc2,0xc7,0x19,0xa5,0x6e,0x20,0x09,0x67,0xdc,0x41,0x69,0xbe,0x15,0xd6,0xeb,0x7b,0xba,0x63,0xae,0x65,0xd8,0x67,0xec,0x6e,0xcc,0x1d,0x04,0x08,0xfb,0x7c,0x34,0x1d,0x5f,0x1e,0x51,0x1c,0x30,0x72,0xd3,0x0c,0x48,0x60,0x3d,0x52,0xae,0xe6,0x78,0x44,0x6d,0xb8,0x40,0x08,0xb7,0x7a,0xa9,0xfc,0xa0,0x86,0xff,0x32,0xd6 +.byte 0x5a,0x31,0x4e,0xe2,0x65,0xab,0xb0,0x84,0xb6,0x74,0x3e,0xa6,0x67,0x7c,0xa2,0x0f,0x23,0x22,0xab,0x72,0x7e,0xeb,0x45,0xa9,0x2a,0xb4,0xd3,0xcc,0x27,0x5c,0x12,0xdb,0x14,0x68,0x73,0x0f,0x36,0xbf,0x9f,0x14,0x12,0xe9,0xef,0x04,0x2a,0x63,0x41,0x4b,0x04,0x9b,0x4c,0xc4,0xb2,0xb9,0x1c,0xc0,0xb8,0xcc,0x23,0x61,0xc4,0xed,0x27,0x1e +.byte 0x1d,0x97,0x3d,0x40,0x4c,0x1f,0xeb,0x6e,0xc4,0xfb,0x5c,0x2d,0xf5,0xf1,0xbb,0x05,0x47,0xa2,0x1a,0x9c,0x2b,0x8f,0xce,0x98,0x09,0x6b,0x86,0x22,0xf8,0x3a,0xae,0xf3,0xb4,0x66,0x2f,0xdb,0x20,0xa5,0xc6,0xb6,0x35,0xb5,0x5a,0x68,0xb5,0x37,0x2c,0xab,0x13,0x3d,0x2d,0xcb,0x38,0xed,0x3c,0x7a,0x1f,0x26,0x08,0x58,0x94,0x52,0x30,0xec +.byte 0x06,0x9f,0x90,0x97,0x4d,0x90,0x49,0x23,0xaf,0x00,0x90,0x6b,0x96,0x37,0x02,0x4c,0x35,0xc0,0x3e,0x66,0x2c,0x52,0xbc,0x75,0x28,0xd7,0x8f,0x25,0xbe,0x91,0x10,0x22,0x67,0xbf,0x4a,0x4d,0x62,0xc4,0xe9,0xda,0xe2,0x79,0xcc,0x76,0xeb,0x99,0x87,0xac,0x39,0x7d,0xf6,0x5a,0x37,0x85,0x30,0x33,0x65,0x3f,0xd9,0xd6,0x17,0xf8,0xf0,0x86 +.byte 0xee,0x5c,0x2f,0xb0,0xb3,0x4f,0x83,0x6c,0x4a,0x8f,0xfc,0x80,0x91,0xaf,0x4b,0x21,0x9c,0x9b,0x44,0x3c,0xed,0x67,0xfb,0xa3,0x31,0x7f,0xd4,0x73,0x72,0xb9,0xc1,0x31,0x96,0x47,0x8e,0x99,0x8e,0x62,0x1a,0xfd,0xc7,0x9d,0x2f,0x4c,0xda,0xe5,0xae,0x17,0xb6,0x40,0x5f,0x9e,0xa8,0xf2,0xcc,0xd7,0xd5,0x40,0x33,0x88,0x57,0x63,0x9b,0xde +.byte 0x82,0x71,0x68,0xfe,0xaf,0x29,0x6c,0xc1,0x2c,0x2f,0x02,0x42,0xd7,0xa5,0x28,0x05,0xca,0xa0,0xb6,0x8c,0x43,0x90,0x05,0xe2,0x1c,0xb7,0x76,0x79,0x39,0xd3,0x23,0xe1,0xe7,0xbb,0x19,0x65,0x1a,0xb4,0xbb,0x5a,0xcf,0x43,0x70,0x26,0x1a,0x2f,0x61,0x78,0x75,0x08,0xb0,0x88,0xe5,0x4a,0x46,0x0a,0xfc,0xcb,0x46,0x18,0xb0,0x8d,0x9b,0xeb +.byte 0xf5,0xe1,0x83,0x04,0x84,0x4f,0xd6,0xa0,0x4f,0xb2,0x4c,0x44,0x08,0xde,0xd6,0x82,0xb5,0x9a,0x45,0x15,0xb8,0x21,0xc7,0xf5,0xe2,0xfd,0x02,0x27,0x18,0x13,0x24,0x18,0x01,0xd1,0x2a,0xff,0x63,0xf2,0xa4,0x97,0xc8,0x4b,0x3b,0xae,0x49,0x47,0x54,0xe8,0x75,0xe7,0x16,0x77,0x22,0x10,0x7b,0x3c,0xf0,0xdb,0x49,0x6e,0xd6,0x55,0x9d,0x43 +.byte 0x6f,0x6e,0x2d,0x97,0xea,0x16,0x2e,0x0c,0x85,0x89,0x67,0xe1,0x7b,0x38,0xa6,0x2b,0x89,0xf0,0xcd,0x90,0xcd,0xba,0x9a,0x70,0xa9,0xe3,0xff,0xe0,0xbd,0x15,0x3e,0x4b,0x13,0x62,0x7b,0x59,0x64,0x18,0x96,0xe9,0x6a,0xf3,0x69,0x2d,0x2d,0x25,0xe7,0x91,0xd3,0xbc,0x74,0x58,0x66,0x2f,0x5e,0x8b,0x52,0xf6,0x91,0x24,0xa8,0x6f,0xa5,0xce +.byte 0xa1,0x4e,0x3b,0xe9,0xc5,0x30,0x7e,0xa5,0xc7,0xe2,0xb3,0x71,0x3b,0x25,0xb9,0x5f,0xe5,0x9c,0xf8,0x46,0x23,0xc5,0xa2,0xc1,0x1f,0x3f,0x43,0xa6,0xaa,0xf1,0x36,0x27,0xc6,0xa8,0xed,0x0d,0x50,0x71,0xf1,0x38,0x27,0xb7,0x16,0x43,0x7c,0x7f,0x77,0x5b,0x25,0x59,0xb7,0x08,0x0d,0xc8,0x84,0xe4,0xc2,0x03,0x95,0xe5,0xf3,0x0a,0x9c,0x1f +.byte 0xde,0x98,0x7c,0xa9,0xe2,0x70,0x9e,0xde,0xf6,0x80,0xd0,0xf8,0x86,0x4a,0x7a,0x0d,0x16,0xaa,0xde,0xba,0x02,0x30,0x8a,0xe6,0x03,0x0f,0xa1,0xf1,0xe8,0xd6,0xf8,0xce,0x7b,0xba,0x74,0xa8,0x25,0xb0,0x49,0x22,0xa6,0x81,0x7e,0x71,0xc5,0x97,0x9e,0xa8,0x46,0xa7,0xe9,0x8b,0x7c,0x7c,0x4c,0xc5,0x3c,0x93,0x08,0xb9,0x8b,0x3c,0x33,0xd6 +.byte 0xc4,0x37,0xc8,0x05,0xe7,0xfe,0xc2,0x7c,0x02,0xe6,0xda,0x09,0x52,0x2c,0xc6,0xa8,0x6e,0x44,0x7e,0x55,0xf0,0x32,0x10,0xcb,0x1e,0xa7,0x77,0x8d,0xc7,0xfe,0xb5,0xf6,0x3b,0x49,0xf2,0xfb,0xe0,0x41,0x98,0xd3,0x17,0xa6,0x5d,0x3f,0x4c,0x95,0xb0,0x02,0x8d,0xab,0x36,0xb7,0xa0,0x92,0x40,0x5e,0x15,0xfb,0xa9,0xb4,0xa3,0x04,0x8b,0x6b +.byte 0x81,0x44,0x59,0x22,0x10,0xcb,0xc5,0x52,0x3f,0x78,0x70,0x00,0xe2,0xa2,0xf7,0x76,0x62,0x72,0x06,0x8b,0xbb,0x56,0x0f,0x8c,0x67,0x2f,0x52,0x3f,0x3b,0xdc,0x15,0x79,0x55,0x89,0x6c,0x61,0x23,0xcc,0x6b,0x41,0x77,0xe5,0xc4,0x90,0x51,0xc3,0x87,0x22,0x1e,0x89,0xf5,0x5b,0x41,0xd7,0x34,0x22,0x3c,0xbd,0x29,0xaa,0x54,0xed,0x5a,0x90 +.byte 0x17,0x24,0xba,0x7a,0x46,0x5f,0x54,0x33,0x56,0x7e,0x2d,0x03,0x59,0xcb,0xbb,0x7a,0xce,0xbb,0x8d,0xf7,0xb6,0x38,0x00,0x18,0x6a,0xa1,0x6c,0xdf,0x42,0x49,0x4d,0x9b,0x4f,0xd6,0x85,0x54,0x1f,0xad,0x17,0xdd,0x66,0x0e,0x7c,0x30,0x86,0x82,0x1c,0x5a,0x81,0x08,0x55,0x51,0x5b,0x06,0x54,0x52,0x3e,0x8b,0x6e,0x72,0x92,0xd2,0x05,0x5d +.byte 0xe4,0xe8,0x0e,0x62,0x1d,0xec,0xb1,0x7f,0x42,0x05,0xd5,0xd3,0x60,0xd4,0xdc,0xa4,0x48,0xc0,0xf0,0x89,0xef,0x5b,0xae,0x5f,0xcd,0xf0,0x62,0xaa,0x3e,0xd5,0x1a,0xbe,0xe3,0x08,0xd5,0xe8,0x00,0x21,0x8c,0x0b,0x0c,0x8e,0x24,0xac,0xb2,0xea,0x44,0x9f,0xce,0x53,0x45,0x9a,0x85,0x67,0x99,0x85,0xea,0x92,0xa7,0x1d,0x86,0xb4,0x3b,0x22 +.byte 0xa2,0xcd,0x35,0x65,0xb5,0xa6,0xdb,0x6d,0x48,0xd1,0xa4,0x76,0x0c,0x00,0x30,0x62,0x86,0x06,0xda,0xa8,0xfe,0xec,0x70,0x87,0x4a,0xe8,0x2e,0x4d,0xe3,0x94,0x0b,0xdf,0x81,0xcd,0xfe,0x23,0x79,0x2c,0x2b,0xae,0xf7,0x75,0x49,0x47,0x24,0x46,0x09,0x10,0x62,0x39,0x3b,0x50,0xf1,0xfa,0xf7,0x5f,0xe4,0x7c,0xa5,0xc0,0x25,0x9e,0x20,0x4d +.byte 0xc8,0x6b,0x93,0xc5,0x4a,0x6b,0x62,0xb8,0x3b,0xe5,0x0d,0x92,0x70,0x26,0xa5,0x2b,0xd0,0x9f,0x03,0x8b,0xd3,0x1a,0xc4,0xb0,0xa3,0xc7,0xf4,0x35,0xe5,0x1d,0xe0,0xaa,0x43,0xab,0x64,0x10,0x2b,0xa4,0x09,0x42,0xee,0xba,0xb7,0xbf,0xfd,0xa6,0xff,0x76,0xe5,0x12,0xd6,0x50,0x9a,0x26,0x6b,0x3a,0xd3,0xe6,0x7d,0x3e,0x0e,0x9b,0x95,0xd7 +.byte 0xbf,0xb6,0x7e,0xfb,0x3c,0x24,0xa4,0x26,0x98,0x88,0x81,0xf4,0x56,0xa4,0xf7,0xe8,0x87,0x15,0x5e,0x9f,0x84,0xdd,0x04,0x66,0x43,0xd8,0x76,0xc2,0xa3,0xfd,0x4b,0x58,0x09,0x06,0xa6,0x60,0x5c,0x3f,0x75,0x80,0xd7,0xc4,0x29,0xf9,0x0b,0x1e,0x4d,0xe5,0x26,0xf6,0xae,0x7a,0xc1,0x05,0xf3,0xf1,0x6c,0xee,0xed,0x56,0x0b,0x51,0x66,0xbe +.byte 0x99,0xec,0x9c,0xc2,0x97,0xe2,0xed,0x09,0x1d,0xa8,0x18,0xaa,0x1c,0x9e,0x20,0x62,0xb1,0x80,0x68,0x3e,0x28,0x1f,0x4f,0x50,0x0e,0x41,0xaf,0x17,0x44,0x79,0x16,0xca,0x17,0xe9,0x13,0x66,0x0a,0x04,0x68,0x41,0xe2,0x1d,0xc7,0x00,0x1e,0x66,0xa3,0x6c,0x2d,0x52,0x8c,0x0b,0x7c,0x03,0x48,0x73,0x3b,0xa9,0x84,0xe5,0x31,0x12,0x0f,0xe8 +.byte 0x1e,0x58,0x4d,0xd0,0x1b,0xb7,0xcf,0x75,0xd5,0x2c,0xca,0x33,0x17,0x95,0x9c,0x30,0xc7,0x7f,0xe9,0xde,0xae,0x19,0x72,0x00,0x2a,0xf5,0xde,0x93,0x3f,0xf5,0x44,0xe5,0xf8,0xc7,0xeb,0x1a,0x5d,0x5b,0x11,0x30,0x09,0xf5,0x49,0x66,0x70,0x1a,0xd5,0xe6,0xfc,0xe6,0x59,0x3d,0x17,0x6c,0xb5,0x0c,0xdf,0x1e,0x9c,0x48,0xd1,0xde,0x12,0xd6 +.byte 0xc8,0x48,0xc8,0x73,0x6d,0xfc,0xec,0x07,0xce,0x02,0xe5,0xb3,0x18,0xb9,0x55,0x4d,0x64,0x07,0xf3,0xaa,0x3c,0xf1,0x71,0x22,0x31,0xbb,0x74,0x2c,0x9f,0x7b,0x68,0x9d,0x80,0x49,0x32,0x48,0x9b,0x54,0xf3,0x74,0x37,0xac,0x4e,0xb2,0x96,0xdf,0x9d,0xeb,0x43,0xe0,0xd0,0xa0,0xe3,0x77,0xbd,0x8b,0x92,0x95,0x9d,0x63,0x8d,0xa8,0x23,0x07 +.byte 0xb0,0xcb,0x9d,0x8d,0x3f,0xe2,0xd5,0x81,0x6a,0xe5,0xc2,0xfe,0xda,0x1c,0x25,0x25,0x5b,0xa8,0xad,0x06,0xec,0x0d,0x4b,0x68,0xc3,0x45,0x81,0x38,0xb0,0x22,0x71,0xa4,0x2b,0xf3,0xa6,0x05,0xae,0x0c,0x48,0x94,0x0d,0x3d,0x48,0x51,0x76,0xdf,0x79,0x66,0x0e,0x28,0xc0,0xc1,0x6f,0xc8,0x8f,0xf7,0x7d,0x37,0x06,0xa2,0x8a,0x3a,0x6b,0xab +.byte 0xe0,0x55,0x8e,0xec,0x89,0xe2,0xca,0xc4,0x01,0x03,0x5d,0xa1,0x84,0x21,0x44,0xbb,0x6b,0x36,0x63,0x57,0x4f,0x54,0x88,0x81,0xbe,0xf8,0x53,0xf7,0x57,0xee,0x30,0x85,0x03,0x11,0x86,0xff,0xe4,0xd6,0xc4,0xf0,0x3c,0xcf,0xfd,0x38,0xd8,0xcb,0xd0,0x96,0x03,0xf2,0xc7,0xfa,0x18,0xc8,0x1b,0xe6,0x77,0x3c,0x61,0xa9,0x14,0xdb,0xb4,0x5c +.byte 0x2d,0xee,0xd7,0xe8,0xc4,0x0c,0x69,0x0c,0x55,0xe2,0x99,0x4b,0xc4,0x89,0xc8,0xee,0x48,0x0e,0x16,0xd7,0xa4,0x78,0x25,0xda,0xd3,0xa8,0xac,0x89,0x66,0x67,0x0d,0x51,0x21,0x0e,0x91,0xfb,0xb5,0xab,0x33,0xcb,0x3e,0xc7,0x0f,0x03,0x22,0x51,0x71,0x03,0xa0,0x3c,0xa9,0x35,0xcb,0x40,0xa7,0xbe,0xe7,0xc3,0x51,0x43,0xd8,0x9a,0x24,0xb7 +.byte 0x7e,0xfb,0x26,0x8d,0xa5,0x1a,0x6b,0xe7,0x97,0xe4,0xdd,0xc0,0x3e,0x98,0x67,0x55,0x79,0x56,0xb9,0x7e,0x25,0x4c,0x5c,0x5a,0x47,0x0a,0xce,0xb6,0x4d,0x2c,0x69,0x73,0xaa,0xf0,0x12,0xbb,0x9d,0xe1,0x60,0xc4,0x5b,0x10,0x32,0x6d,0x89,0x54,0xb1,0xfe,0x36,0xbe,0xb2,0x60,0x9a,0x91,0x73,0x9c,0x32,0x61,0xad,0x9a,0xf7,0x56,0x5f,0x5a +.byte 0x54,0xaf,0xb2,0x0c,0x5b,0x1a,0xe6,0x98,0x94,0xed,0x69,0x0b,0x8d,0x06,0x87,0xc9,0x20,0xdc,0x92,0x2d,0x5e,0xba,0xbb,0x15,0xef,0xc1,0x07,0x18,0x44,0x3f,0xf4,0x48,0x3e,0x7b,0xa4,0x9e,0x14,0x6b,0x97,0xdd,0x68,0x33,0x18,0xdd,0x47,0x08,0xa6,0x3b,0x8d,0x79,0x58,0x92,0xd9,0xda,0x82,0x34,0xa7,0x99,0xbc,0x43,0xa3,0x0a,0x7e,0x85 +.byte 0x0b,0xab,0x0e,0xc2,0x94,0x22,0x2d,0x05,0x99,0x9d,0x5c,0xc7,0xb2,0x7b,0x18,0x3e,0xb2,0xdd,0x47,0xb3,0xd7,0xcf,0x19,0xc7,0x55,0x5e,0x64,0xd8,0x7b,0xb4,0xf6,0x11,0x72,0xed,0xbd,0xfc,0xd8,0xe9,0x9f,0xcd,0x9a,0xeb,0xb2,0x6c,0x04,0xb9,0x88,0xf7,0x60,0x68,0xc3,0xf2,0xfd,0xa0,0x8c,0x82,0xc5,0xf7,0x5d,0xc3,0x9a,0x1e,0x49,0x27 +.byte 0x69,0x35,0xb0,0x8f,0xe9,0xb3,0xe4,0x09,0xd8,0x1a,0x73,0x9e,0x56,0x41,0xfa,0xe0,0x94,0x9e,0x0e,0x65,0xe6,0x5b,0xe2,0x12,0x39,0xca,0x86,0x0c,0xae,0xee,0x24,0x58,0xfd,0x85,0x09,0x7a,0xad,0x54,0xde,0xda,0x06,0x73,0x7d,0x11,0x7e,0x91,0x44,0xf3,0x4b,0x61,0xce,0x8a,0xff,0x76,0x92,0x2e,0x43,0x52,0xcf,0x63,0x3f,0xc4,0x1f,0x7f +.byte 0x4d,0x67,0x21,0xed,0xd7,0x88,0xdb,0x36,0x56,0x11,0xb2,0x3b,0xee,0x5f,0x2d,0x5f,0x17,0x98,0xa1,0xd5,0xcc,0x82,0xfd,0xc2,0x56,0x69,0xaa,0x68,0x86,0xaf,0x48,0x77,0xba,0xe9,0xd9,0x42,0xcd,0xaa,0xe3,0xad,0x2b,0x17,0xef,0xd3,0x54,0xc5,0x4e,0x31,0x0b,0x14,0xb7,0x73,0xc1,0x6f,0xc3,0x06,0x41,0x1a,0x11,0x19,0x9f,0xe9,0x9f,0x61 +.byte 0x4f,0x13,0x9b,0x3e,0xcd,0x7c,0xd6,0x2a,0xb3,0x87,0x84,0x58,0x58,0x10,0x1f,0xa0,0x2e,0x5c,0x15,0x8b,0x5e,0x37,0xd4,0x22,0x93,0xd9,0x67,0xe1,0xa8,0x35,0xe2,0x95,0xd8,0x4c,0x2c,0x65,0xc9,0x21,0xaf,0xf9,0xdd,0x3d,0x2c,0x0e,0x0c,0xcc,0x6b,0xad,0xb3,0x6d,0xd2,0x3e,0x65,0x8e,0x82,0x70,0x41,0xd6,0xaa,0x97,0xab,0x38,0x78,0xe4 +.byte 0x62,0x7c,0x5f,0x22,0xa3,0x1e,0xf2,0x6c,0xfe,0x3c,0xa9,0xb5,0x57,0xcd,0x96,0x11,0xd0,0x8b,0xcf,0x6d,0x06,0xcf,0x7c,0xda,0x1d,0xe4,0x22,0x5c,0x5d,0x9f,0xa8,0x24,0x55,0x45,0x93,0xc6,0xeb,0xfc,0xb5,0x71,0x5a,0x1d,0x52,0x40,0x95,0xc7,0x76,0x32,0xfb,0x2b,0x0c,0x7d,0x64,0xfa,0x5b,0x5e,0x7a,0x3b,0x0b,0xa0,0x99,0x5d,0x19,0x16 +.byte 0xe4,0x8e,0xae,0x49,0xee,0xc5,0xb2,0x24,0xd7,0x0b,0xa4,0x20,0xa6,0x74,0xc4,0x36,0x1d,0x43,0x25,0xd6,0x71,0x54,0x69,0x79,0xea,0xa3,0xd5,0xe9,0x75,0x53,0xcf,0x99,0x4e,0x3b,0xc0,0x52,0x28,0x80,0xe5,0x07,0x65,0x83,0xb3,0x24,0xfe,0x13,0x92,0xd6,0x18,0xf7,0xa3,0xeb,0x9e,0xf0,0xd5,0x69,0x93,0x79,0xda,0xb7,0x2e,0xe2,0x01,0xdd +.byte 0x9a,0xc3,0x7b,0x3b,0x17,0x88,0xe5,0xe9,0x9b,0x46,0x5c,0x5f,0x0e,0x1e,0x80,0x9b,0x11,0x1f,0xa4,0x08,0x90,0x14,0x08,0xb4,0x73,0x32,0x72,0xbe,0x43,0x4f,0x70,0x90,0xe7,0x80,0xdd,0xfd,0xa7,0xea,0x13,0xd9,0x5d,0xae,0x93,0x24,0x2b,0x1e,0xc7,0xf4,0x81,0xbb,0x5f,0xb0,0xb9,0xe4,0x35,0x39,0xf4,0x9a,0x49,0xb5,0xc0,0x47,0x18,0xc3 +.byte 0xcc,0xbe,0x26,0x36,0x44,0x2d,0x65,0x24,0xa3,0x09,0xde,0x69,0x3b,0xb8,0xdc,0x52,0x98,0x2e,0x38,0x5f,0xf7,0xb1,0x84,0xdd,0xea,0xe2,0xe5,0xec,0x96,0x31,0xb1,0x93,0xc0,0x5b,0xc4,0x87,0x4a,0x51,0x58,0x2d,0xea,0x47,0xab,0xfd,0xd3,0x76,0xf1,0xbc,0x52,0xa7,0x94,0x6c,0x74,0x1e,0x84,0x07,0x1f,0x5c,0x18,0xb9,0x06,0x37,0xf0,0xfb +.byte 0xbd,0x5d,0xaf,0xa8,0x06,0xc9,0x86,0xf0,0xd1,0x78,0x84,0x95,0x01,0xdd,0x70,0x9d,0x71,0x51,0xb7,0x80,0x69,0xbe,0xe8,0xfb,0x8f,0x43,0x72,0xd9,0xa9,0xf1,0x90,0xbb,0xf1,0xb5,0xc0,0x75,0x93,0x4e,0x14,0xc5,0x14,0x77,0x59,0xf8,0xe5,0x81,0x11,0x25,0x48,0x51,0x46,0x2a,0x69,0x59,0x92,0xe7,0xa7,0x39,0x96,0xad,0x67,0x30,0xaa,0xb2 +.byte 0x5d,0x95,0x94,0x83,0x83,0x93,0xf3,0x52,0x81,0x1c,0x27,0x78,0x1d,0x19,0x35,0x6e,0x8f,0x16,0xe5,0x3b,0xce,0x80,0x2a,0x3a,0x89,0xb7,0x51,0xfc,0x34,0x24,0xa2,0x61,0x95,0x9e,0xd4,0x69,0xa1,0x2f,0x49,0x16,0x2d,0x12,0x05,0xfe,0x69,0x62,0x12,0xa4,0x2c,0x04,0x7b,0xce,0x3f,0x34,0xc4,0x48,0x1a,0xe6,0x64,0x4b,0x8a,0xbf,0x68,0xdd +.byte 0x54,0x15,0xd3,0x25,0x49,0xdd,0xed,0x5e,0x2c,0x0e,0x25,0xbe,0x77,0xcf,0x94,0xf4,0xe9,0xf3,0xcc,0xe6,0x94,0xf9,0xb2,0x5d,0x24,0x53,0x63,0xbb,0x66,0x8d,0x73,0xef,0x79,0x5c,0x95,0x1a,0x64,0xc3,0xfd,0xc0,0xd3,0x71,0xf4,0x79,0x19,0x79,0xa5,0x30,0xf8,0x2c,0x28,0xc2,0xc2,0x9d,0x12,0x50,0x95,0x38,0xec,0xd5,0xc6,0x28,0x94,0xaa +.byte 0x83,0x66,0x3b,0xe3,0x51,0xc7,0x6a,0x75,0x2a,0x9b,0xb9,0xb0,0xa2,0xe1,0xfd,0xaf,0x58,0xd2,0x4b,0xf4,0x22,0xef,0x77,0x1e,0xa0,0x00,0xd7,0x9e,0x20,0x63,0x87,0x1d,0x98,0xab,0x0e,0x57,0x31,0x4b,0xda,0x90,0x3a,0xe6,0x6e,0x5e,0xd4,0x17,0x06,0x83,0x4f,0x90,0x33,0x1c,0xe5,0xea,0xf7,0x8d,0x95,0xa2,0x1e,0x7d,0x27,0x15,0x49,0x68 +.byte 0x3a,0x54,0xe3,0x1e,0x60,0x72,0x42,0xa6,0x8c,0x5b,0x63,0x1d,0x7d,0xb1,0xe2,0x7e,0x8b,0x19,0xf4,0x25,0x6c,0x77,0x64,0x15,0x5e,0x4c,0xfa,0x35,0x68,0xd2,0x54,0x11,0x5a,0xac,0x85,0xb0,0xb3,0xe8,0xa8,0x70,0x36,0xa8,0xe5,0x04,0xd1,0x82,0xdc,0x62,0x63,0xe6,0x3f,0x86,0x46,0x77,0x08,0x6b,0xa8,0x09,0xd0,0x56,0x09,0x87,0x9c,0x65 +.byte 0x8e,0x53,0xae,0xa6,0x2b,0x59,0x23,0xca,0xe9,0xc7,0xc4,0xb5,0xb9,0xca,0x20,0xf6,0xcc,0x62,0xfd,0xb5,0x66,0x66,0x86,0x99,0xb2,0x5a,0xeb,0xac,0xff,0x22,0xf4,0x94,0x9c,0x6d,0xc9,0xce,0xf3,0x8d,0x26,0x7f,0x06,0x40,0x71,0x8b,0x3e,0x5c,0x3e,0xe6,0x11,0x64,0x91,0x79,0xbe,0x66,0x80,0xd2,0xf6,0x2d,0x28,0x4b,0x6c,0x8d,0x9c,0x5b +.byte 0x1e,0xd1,0x15,0xb0,0xdf,0xfb,0x57,0xaf,0x4a,0xab,0xde,0x12,0xe9,0xb8,0x41,0x3d,0xc3,0xff,0xb2,0xc1,0x86,0xb0,0x06,0x5b,0xaf,0xa4,0x30,0x62,0xd0,0xd8,0x91,0x36,0x28,0xc1,0xc2,0xef,0x60,0x5d,0x42,0x04,0xd5,0x6b,0x10,0xa9,0x6c,0x88,0x5c,0x56,0x59,0x4a,0x87,0xdc,0x7c,0x41,0x03,0xb3,0x7c,0x35,0x8c,0x52,0x0e,0xc1,0xd5,0xdf +.byte 0x9b,0x8a,0x2e,0xc2,0x6b,0x06,0x7f,0xb4,0x93,0xc9,0x52,0xd0,0xc5,0x57,0x78,0x9e,0xf9,0x08,0x36,0xbc,0x4b,0xc1,0xbd,0x71,0x35,0xf8,0x73,0xae,0x9c,0xbc,0xf1,0xd1,0xba,0xe3,0x7f,0x49,0x9b,0x9b,0xb3,0xe2,0x7d,0x7d,0x18,0x6d,0x0d,0x96,0xe3,0x50,0x28,0xf2,0x7c,0x7a,0x71,0x27,0x33,0x3c,0xd3,0xeb,0x3d,0x5a,0x79,0xb5,0x69,0xed +.byte 0x40,0x38,0xbe,0xc9,0xad,0x11,0x7b,0x9d,0xe6,0x71,0xc8,0x89,0x54,0x51,0xf0,0x8f,0xdc,0xad,0x96,0xc3,0x04,0x60,0x5f,0x6d,0xa0,0x37,0xba,0x1c,0x69,0xca,0x42,0x26,0xeb,0x31,0x34,0x8d,0xae,0x25,0xe2,0x29,0x8d,0x19,0x9f,0xfa,0x75,0x91,0x4b,0x51,0xcd,0x76,0xd6,0x8f,0xa2,0x40,0x79,0xc3,0xbb,0x61,0xaf,0xc4,0x69,0xf5,0x8b,0x8a +.byte 0xb6,0x2c,0x25,0xb9,0x3c,0x8e,0x13,0xa4,0x0f,0x52,0x72,0x11,0x4b,0x89,0x63,0x01,0x05,0x54,0xd5,0x0d,0x5f,0x91,0x59,0x84,0x64,0xac,0xf7,0x9c,0xa3,0x48,0x31,0x4a,0x2e,0xea,0xf8,0xf8,0x0e,0xf0,0xd9,0x4d,0x06,0x60,0x11,0x4a,0x72,0x6f,0x93,0x93,0x85,0xf0,0x20,0x55,0x8b,0x37,0xf1,0x29,0x92,0x2d,0x1f,0xa1,0x6c,0x7c,0x90,0x4f +.byte 0xdb,0x78,0xcc,0x6c,0xb2,0x14,0x85,0x07,0x34,0xc8,0x98,0x18,0x52,0x2d,0x6b,0x13,0x63,0xc5,0x31,0x20,0x8e,0xa9,0x88,0x6b,0xb3,0x3f,0x1a,0x68,0x2f,0xf9,0xf3,0x97,0x29,0x68,0x22,0x89,0xb0,0x45,0xc4,0xf4,0x1f,0x31,0xba,0x97,0x14,0x59,0xae,0x05,0xe0,0x99,0x5b,0x29,0xcf,0xe3,0xf0,0x2a,0x0c,0xca,0x5f,0xc1,0xe7,0xe7,0x11,0x48 +.byte 0x73,0xc0,0x86,0x0b,0x59,0xc2,0x8a,0xfa,0x44,0x51,0x1c,0x84,0xdf,0x2f,0x4d,0xab,0xca,0xea,0xe1,0x48,0x9a,0xa1,0x86,0x60,0x47,0x7a,0x86,0x30,0x6a,0xba,0xbe,0x6a,0x9b,0x34,0xf4,0x52,0x0e,0xae,0x7f,0xbd,0xe0,0xf4,0x5f,0xfd,0xbc,0x57,0x02,0x95,0x6f,0xad,0x78,0x2e,0xa7,0x46,0x1c,0x2d,0x98,0x40,0xb7,0xfa,0xb5,0x08,0xee,0xb5 +.byte 0x25,0x51,0xaa,0x1a,0x14,0x41,0x48,0xe0,0x8f,0xe7,0x2f,0xfc,0xfd,0x47,0x10,0x55,0x90,0x02,0xeb,0x7f,0x0d,0x40,0xa8,0x4b,0x82,0xdc,0xab,0x43,0x35,0x62,0xa1,0x1d,0x5a,0xb0,0xc0,0x93,0x75,0x3d,0x68,0xd9,0xf8,0x31,0x22,0xfd,0x30,0xda,0xea,0xea,0x7c,0x30,0xf8,0x6f,0x75,0x5f,0x07,0x39,0xfe,0x69,0x93,0x73,0x22,0xa2,0x72,0xed +.byte 0x39,0x2f,0x00,0x5c,0xc3,0x14,0x86,0x90,0xda,0xc9,0x09,0x43,0x80,0x85,0x22,0x98,0xb0,0x4e,0x05,0x47,0x8f,0xc7,0xba,0x2e,0x4c,0x8f,0x57,0x8a,0xe9,0xb0,0x97,0x3b,0x51,0x12,0xcb,0x88,0xfd,0x5e,0x7f,0xa6,0xc6,0x00,0xd0,0x3a,0x3a,0x70,0x9e,0x56,0x28,0xa0,0x08,0x76,0x58,0x57,0x4a,0x0f,0xff,0x31,0x44,0x08,0x6c,0x23,0x79,0xad +.byte 0x35,0x95,0xc5,0xc8,0x26,0x0f,0xb3,0x17,0x04,0x1d,0xde,0x16,0x5d,0xb8,0x71,0x76,0x89,0x0b,0xd6,0xd8,0x9d,0xa1,0xdf,0xcb,0xb5,0x1c,0x86,0xc3,0x15,0x8d,0xaa,0x25,0x82,0xbf,0x6b,0x06,0xfb,0x1b,0xf5,0x11,0xaa,0x14,0x0e,0x67,0x7f,0xbd,0x46,0x21,0x8f,0x6d,0xbd,0x63,0xe6,0x14,0x05,0xa2,0xee,0x56,0xee,0xe6,0x37,0xf9,0xc0,0x2f +.byte 0xc9,0xe0,0x8e,0xdb,0xf7,0xf6,0xcb,0x83,0x79,0xcc,0xe3,0xf6,0x30,0x9d,0x56,0x31,0x40,0xd2,0x50,0x25,0xb6,0x89,0x16,0x97,0x65,0xd8,0x8d,0x1a,0xa5,0xf4,0x47,0xfc,0x4c,0x73,0x07,0x42,0x9c,0x8f,0x7f,0x10,0xb4,0x96,0x33,0x1e,0xe2,0xff,0x0c,0x33,0x35,0xbc,0x37,0x01,0x2b,0x67,0xda,0xca,0xcf,0x87,0xa2,0x38,0x71,0x6b,0xf4,0xcf +.byte 0xa6,0xc6,0x6a,0x90,0x5c,0xa0,0x8b,0x66,0x44,0xc7,0xc2,0x05,0x24,0xee,0x53,0x99,0xf3,0x07,0x78,0xb0,0x17,0xf8,0x11,0xf9,0x52,0x20,0x41,0xc5,0xdb,0x4e,0x92,0xd3,0xeb,0xd2,0x86,0xea,0x9b,0xc3,0x4c,0x1b,0x75,0xcd,0x15,0x0c,0xe0,0x28,0xe9,0xe1,0x99,0x98,0x96,0x33,0x06,0xea,0xa8,0x4e,0xde,0xc1,0x1c,0xfe,0x6c,0xca,0xac,0x6d +.byte 0xc4,0x3a,0x7d,0xd2,0x41,0xf5,0xb3,0x7d,0x1c,0x28,0x93,0x72,0xf8,0x08,0xc1,0x71,0x72,0x4c,0x41,0x68,0x38,0x80,0x2e,0x4b,0xa6,0xc5,0xc7,0xb4,0x24,0x29,0xd0,0xce,0xb2,0x3d,0xc4,0x60,0x5b,0xeb,0x2d,0x80,0x13,0xee,0x95,0x41,0xfe,0x49,0x6d,0x89,0xc0,0x7a,0x61,0x51,0x3f,0xbb,0x24,0x7c,0x64,0x5e,0x9f,0xf7,0x60,0x88,0x95,0xe8 +.byte 0x60,0xc5,0xf6,0xc3,0xc3,0xd4,0x43,0xce,0xf9,0x4e,0x35,0xf2,0xfa,0xb0,0x2b,0xe3,0xfe,0xb8,0x88,0x19,0xf2,0x89,0xc0,0xb5,0x00,0x61,0xc8,0xe5,0xaa,0xde,0x18,0xb4,0xd4,0x21,0xbe,0xcc,0x61,0xc7,0xc9,0xfe,0x22,0xcc,0x65,0xf6,0x79,0xe8,0x4d,0x1c,0x30,0x31,0x7a,0xd4,0xbc,0x98,0x2d,0x72,0x5e,0x5c,0x4f,0x7e,0x52,0x9c,0x95,0x20 +.byte 0x29,0xa4,0x0b,0xf7,0xb2,0x7d,0xcc,0xc3,0x8c,0x94,0xb0,0x09,0xf4,0x6f,0x59,0x63,0x91,0x2a,0x06,0x80,0x09,0x01,0x3c,0x73,0x83,0x42,0xa1,0x5c,0x0f,0x42,0xf4,0x74,0x3c,0x24,0x8c,0xbe,0x91,0x73,0xdf,0xf1,0xea,0x21,0xbd,0xc9,0x36,0x17,0xca,0x81,0x28,0xd9,0x4a,0xc4,0x2e,0xdf,0x4c,0x4f,0xbd,0x1e,0xbc,0xe9,0x32,0x12,0xd3,0x8f +.byte 0x48,0x9b,0x4f,0x49,0x23,0x54,0x15,0x15,0x14,0x8b,0x18,0x64,0x7d,0x08,0x7f,0xc4,0x56,0x01,0x94,0x4e,0x50,0xe8,0xf2,0x4a,0xb5,0x3c,0xa0,0xb5,0xaf,0x55,0x70,0x44,0x41,0x5c,0xe6,0x61,0x5a,0xbb,0xf2,0xe6,0xc9,0x05,0x33,0x45,0x8f,0xbc,0xe5,0x59,0x7f,0x66,0xc5,0x61,0x4d,0x1b,0xc7,0xee,0x45,0x7d,0x57,0x8f,0x6c,0x9d,0x8b,0x87 +.byte 0x98,0xa8,0x58,0xac,0x4a,0x31,0x79,0xd6,0x26,0x08,0x2f,0x28,0x3f,0x31,0x77,0xad,0xff,0xe1,0x9d,0xa8,0xf7,0xe0,0x76,0x66,0x48,0x00,0x52,0xe8,0x9a,0xb2,0x47,0x5e,0x0a,0x87,0x86,0xaf,0xf6,0x7d,0x46,0x78,0x66,0x68,0xf7,0x68,0x0c,0x6f,0x5c,0xd7,0x09,0xc0,0xd7,0x90,0x98,0xe2,0x5c,0x07,0xe9,0xd1,0x58,0x48,0x57,0x9f,0x48,0x99 +.byte 0x87,0xdf,0x06,0xc1,0x35,0x0f,0xd8,0xb0,0xa9,0xfa,0xdc,0x31,0x76,0xd1,0xad,0x47,0x80,0xe4,0x74,0xe0,0xda,0x4b,0x77,0x8b,0x71,0xab,0x9a,0x8e,0xd7,0x6b,0x91,0xb1,0xdb,0x78,0xd2,0x86,0xf7,0x61,0x1b,0xdc,0x34,0x57,0x32,0x51,0xee,0xd3,0xff,0xb2,0x6c,0x6a,0x79,0x90,0x9c,0x1f,0x6b,0xe7,0x43,0x20,0x05,0x4f,0x66,0x83,0xd0,0x56 +.byte 0xe1,0x21,0x63,0xf4,0xd6,0x96,0x91,0xcb,0x51,0x3c,0x13,0x88,0x97,0x26,0x88,0xda,0x7c,0xd4,0x0d,0xcb,0xdf,0xc2,0x7d,0xcd,0x2c,0x0e,0x28,0x23,0x21,0x5f,0xbe,0x5d,0x62,0x58,0x6c,0xa7,0x45,0xae,0x1f,0xac,0x35,0x53,0xdb,0x2c,0xa6,0x71,0xe4,0x11,0x5e,0x59,0xbe,0xd5,0x20,0x2a,0xc4,0xcd,0x4c,0x1b,0xe0,0x38,0xef,0x02,0x0c,0x5f +.byte 0x5a,0x1b,0xf9,0x1e,0x32,0x63,0xd7,0xa6,0x0f,0x1d,0x98,0xd5,0x3a,0x0f,0xf6,0xcc,0xfc,0xd6,0xb4,0x87,0xc5,0x76,0xd8,0x3e,0x72,0xb0,0x20,0xfe,0xb3,0xfc,0x48,0x4c,0xd1,0x71,0xcd,0x13,0xef,0xe8,0x40,0xd9,0x0d,0xf6,0x1d,0x5b,0xa4,0x26,0x56,0x8c,0x66,0xcb,0x18,0x5a,0x5f,0x86,0x43,0x2c,0xa4,0x1e,0x00,0x3f,0x09,0xbf,0x8e,0x61 +.byte 0xad,0x2a,0x44,0x97,0x35,0xb2,0xf3,0x50,0x5f,0xfa,0x01,0x74,0xbf,0x70,0x46,0x38,0xf1,0x15,0xaa,0x04,0xfe,0xe9,0x3f,0x43,0x2f,0x53,0xcb,0xea,0x5c,0x04,0x8e,0xe6,0x43,0xeb,0xc0,0xd9,0xbf,0x4a,0xc1,0xbc,0xf9,0x11,0xd5,0x33,0xdc,0x41,0x8e,0xfe,0x5e,0xf3,0x8c,0x80,0x47,0x46,0x01,0x9e,0xa9,0x2c,0x2d,0xd2,0x90,0x7f,0xce,0x7c +.byte 0x59,0x78,0xaa,0xbb,0x96,0x52,0x0a,0xf3,0x18,0x1f,0x0b,0x41,0xc1,0xd5,0x12,0x14,0x1a,0xe1,0x4e,0xac,0xf8,0x2a,0x56,0xfe,0x66,0x34,0x21,0xdf,0x1f,0x6a,0x02,0x85,0xd2,0x38,0xc0,0x39,0x5c,0xa7,0x3f,0xcc,0x2b,0x6f,0x69,0xe7,0xa7,0x0a,0x36,0xf1,0xa9,0x77,0x59,0x2c,0x44,0x8b,0x72,0xc9,0xc2,0x74,0x32,0x48,0x76,0x19,0x1e,0x49 +.byte 0x10,0xe6,0x46,0xdf,0x82,0x9b,0xad,0x4e,0x40,0x20,0xd7,0xd3,0xf5,0x5c,0xbc,0x25,0x94,0xd1,0x68,0xaf,0x29,0xc5,0xcd,0x1b,0x86,0x4b,0x88,0x21,0x6e,0xeb,0x06,0x14,0xb5,0x15,0xe7,0x26,0x01,0x05,0x4e,0x3a,0x2a,0x24,0xbe,0xf2,0x64,0x6e,0xf4,0x9c,0x60,0xf8,0xd4,0xfd,0x4b,0xc0,0x0e,0x68,0x0d,0x19,0x26,0x87,0xa5,0xbf,0xe1,0x16 +.byte 0xf0,0x27,0x58,0xa8,0x3a,0xed,0x27,0x5b,0x73,0x4f,0x19,0x40,0x58,0x36,0xf6,0xfd,0x60,0x37,0x09,0x74,0x3c,0xb9,0x76,0x9a,0x32,0xfd,0x98,0x79,0x53,0xb3,0xea,0x3a,0x98,0x21,0xf9,0xb2,0x97,0xe4,0x00,0xb6,0xed,0x67,0xc4,0x76,0x8f,0x1e,0x4d,0xc8,0x2e,0xf4,0x54,0xd9,0x09,0xd7,0xcb,0xa0,0x91,0x1e,0x5a,0x60,0x53,0xbc,0x3e,0x35 +.byte 0x69,0xa6,0xca,0xf3,0xce,0x41,0x84,0x71,0xee,0xf3,0x75,0xd4,0x7a,0x71,0x36,0x62,0xe3,0x08,0xae,0x40,0x05,0xde,0x01,0x34,0x92,0x5f,0x71,0xa9,0x08,0xb3,0x43,0xcd,0xe7,0x2f,0x42,0x7e,0x9c,0x1e,0xfe,0x9a,0x40,0x99,0x58,0x31,0xd9,0x8d,0x5d,0xda,0x75,0x14,0x3f,0xae,0x45,0x27,0x85,0x47,0x7d,0x41,0x0e,0x94,0x20,0xee,0x11,0xd0 +.byte 0x1e,0xcd,0x00,0x56,0xb7,0x59,0xe6,0x58,0xab,0x2c,0xa6,0x44,0x14,0x8c,0xff,0x49,0x7b,0xe5,0xf7,0x93,0xd5,0x78,0x1a,0xe0,0x16,0xd8,0x24,0x08,0x1e,0x70,0xce,0x1a,0x84,0x87,0x6b,0xe5,0xf2,0x43,0x5f,0xb3,0x34,0xaa,0x85,0x3e,0x9e,0x2e,0x86,0x22,0x74,0xe2,0x1a,0x87,0xfb,0x1b,0x6c,0x08,0x8c,0x43,0xb4,0x85,0x75,0x2c,0x13,0xc2 +.byte 0x18,0x94,0xe8,0x0d,0x09,0xd5,0x8f,0xd4,0xca,0x50,0x93,0x9f,0xa3,0x9f,0x3b,0x3c,0x54,0x68,0xa9,0xb1,0xdd,0x0a,0x0b,0xe2,0x15,0x92,0x9c,0x6f,0xfa,0x45,0x6f,0x0a,0xb4,0x6b,0xcb,0xdc,0xa4,0xf3,0xf0,0xa6,0x1c,0x8a,0x60,0x42,0x35,0xa8,0xe3,0xdf,0xc8,0xdc,0xbb,0xbe,0x95,0xa7,0xac,0x08,0x08,0xbc,0x56,0x1a,0xa4,0xc2,0xd2,0x53 +.byte 0xfa,0xb2,0x89,0x4f,0xb8,0xe4,0xb9,0x90,0x95,0x91,0x2f,0x0f,0x93,0xa9,0x8c,0xc6,0xf8,0x01,0x34,0x08,0xe6,0x8c,0x58,0x43,0x57,0x40,0xf9,0x78,0x83,0xea,0x92,0x70,0xa8,0xa5,0xc8,0x9e,0xf8,0xc6,0x39,0x4c,0xb4,0xe9,0xbb,0xdf,0xd2,0x52,0x43,0x6b,0x6c,0x8b,0x2c,0x47,0xd7,0x11,0x42,0x3d,0xc7,0x3f,0xce,0xd1,0xd9,0x28,0x5b,0xce +.byte 0xec,0xb6,0x31,0x3a,0xc9,0xad,0x0c,0x93,0x82,0x2b,0xf6,0xdc,0xd4,0xcd,0x80,0xe1,0x75,0x45,0xeb,0x3b,0xbf,0x12,0x42,0xeb,0x71,0xc1,0x8b,0x27,0xd5,0xcb,0xd9,0xb6,0xe8,0xe9,0xc6,0x79,0xff,0x38,0x88,0x87,0x72,0xf2,0x71,0x4a,0x44,0x55,0x0f,0x9c,0x93,0xcf,0x15,0x18,0x44,0x62,0x2a,0xc5,0x0a,0x80,0x69,0x91,0x6e,0x4b,0x30,0x4e +.byte 0x3f,0x2f,0xb5,0x65,0x9e,0x65,0x07,0x36,0x9b,0xba,0x5f,0x81,0xd9,0x60,0xbe,0x1f,0xf5,0x98,0x20,0xf9,0x9e,0x53,0xf7,0x5d,0x57,0x7f,0x22,0xaf,0x8e,0x82,0x9e,0x0f,0x33,0x74,0x37,0x26,0x61,0x67,0xf6,0xfd,0x2c,0xab,0xd8,0x18,0x1d,0x10,0x48,0x7a,0x1d,0xed,0xbb,0x57,0x83,0xf9,0x82,0xf5,0xe3,0xf9,0x98,0x5c,0xc0,0x3e,0xee,0x38 +.byte 0x0a,0x57,0x10,0x22,0xc4,0xe8,0x1d,0xe3,0x46,0xa3,0x81,0x5e,0x92,0xba,0xcc,0x53,0x48,0x85,0x33,0x58,0xa2,0x3e,0xea,0x0a,0xfb,0x72,0x5c,0xcd,0xd9,0xa4,0x3f,0x56,0x99,0x35,0x92,0x6c,0xe8,0xf2,0x59,0x0f,0xc8,0x6a,0x21,0xb2,0x9f,0xa2,0xf6,0xf3,0x1b,0xec,0x38,0x95,0xed,0xef,0x00,0x09,0x16,0x6e,0xf7,0xf8,0x1a,0xef,0x0d,0x2b +.byte 0xef,0x83,0x8a,0xc2,0x22,0x3d,0x50,0xa3,0x70,0x52,0xe8,0xad,0x11,0x44,0x83,0x80,0xfe,0x88,0x7e,0x40,0x02,0x8f,0x4a,0x5d,0xd3,0x28,0x66,0x75,0x5a,0xf2,0x38,0xb5,0xdc,0x54,0xa8,0xb3,0xaa,0x76,0xdb,0x73,0xe0,0xd1,0xd7,0x51,0x20,0x8c,0x38,0x18,0x46,0x25,0x2e,0x0d,0x5b,0x61,0x9d,0x36,0x9a,0x14,0xfb,0xc8,0x4e,0x5a,0xba,0xa1 +.byte 0x98,0x34,0xfd,0x05,0x2c,0x87,0x58,0x8d,0xe3,0x5d,0x79,0x5a,0x45,0xff,0x75,0x25,0x98,0xbd,0xe4,0x9d,0x1a,0x70,0x79,0xaa,0x44,0x1a,0x10,0x7f,0xfb,0xe9,0x30,0x81,0xc7,0xa2,0x81,0x41,0x49,0x41,0x4e,0x42,0x5f,0x8a,0x9b,0x10,0xe2,0xdc,0xd9,0xdf,0xbd,0x61,0x29,0x72,0xa5,0x39,0xb7,0xf6,0x9f,0x4e,0x98,0xb8,0x04,0xae,0xd7,0xda +.byte 0x9a,0x9f,0x08,0xb8,0x2c,0x40,0x14,0x6d,0x01,0xb7,0x86,0x58,0x55,0x42,0xe5,0xdb,0x5f,0x4a,0xef,0xd8,0xed,0xdf,0x3b,0x24,0x1c,0xe4,0xb1,0x73,0xd1,0xce,0x29,0x96,0xde,0x8e,0xf3,0x1d,0x8d,0x75,0x57,0xd3,0x9a,0xf8,0xff,0x1a,0x4c,0x0c,0x47,0x82,0x83,0x73,0x34,0x43,0x55,0xfa,0xf2,0xd4,0x38,0xed,0xde,0x6d,0x24,0x55,0x90,0x06 +.byte 0xd6,0x03,0x52,0x28,0xc7,0x38,0x4a,0x16,0x95,0x4d,0xf4,0x46,0x56,0xf7,0x63,0x1f,0xe4,0xa9,0x51,0xc6,0x0b,0x85,0x42,0x40,0x8e,0x49,0x1e,0xc2,0xab,0xeb,0xda,0x99,0x26,0xf6,0x6e,0x00,0x8f,0x26,0x82,0xef,0x03,0xb0,0xd4,0xdb,0x54,0x46,0xdf,0xdc,0x23,0xaf,0xa8,0x6a,0x9f,0xb7,0xf9,0x41,0x07,0x5e,0x2d,0xcf,0x85,0xfd,0x9c,0x46 +.byte 0x30,0xb9,0x14,0xca,0xe2,0x30,0x12,0x06,0x88,0x08,0x05,0x2c,0x9a,0x4b,0x52,0x98,0xa9,0x99,0xd7,0xca,0xb5,0x1e,0x60,0x44,0xd9,0x5c,0x19,0x42,0xbe,0xa5,0x04,0xfd,0x7a,0xfc,0xb9,0xdf,0xd6,0xe3,0x6d,0x02,0xe3,0x96,0xf6,0xae,0xf3,0x78,0x1d,0x90,0x6d,0x86,0x17,0xf7,0xb7,0x6b,0x1d,0x52,0x32,0x5b,0xc0,0x31,0xaf,0x09,0x90,0x5e +.byte 0x81,0x75,0x17,0x47,0x6b,0x5e,0x9a,0x40,0xa5,0xa8,0x84,0x60,0xdc,0xdb,0xd2,0x89,0xcd,0xb2,0x72,0xf4,0x74,0xda,0x5d,0x34,0xf8,0xc6,0x1b,0x26,0x3e,0x8b,0xc7,0x73,0xf9,0x0c,0x93,0xf4,0x40,0x02,0xe0,0xed,0xe5,0xa0,0xae,0x91,0x03,0x85,0xa8,0x2f,0xe2,0x72,0xfe,0x17,0x7d,0x2b,0xa6,0x39,0x10,0x80,0x4c,0x58,0xaa,0xd8,0x22,0x7d +.byte 0x2f,0xbf,0x0c,0x40,0x48,0xfa,0xbe,0x40,0x4c,0x32,0x96,0x69,0xa5,0xab,0x0b,0x1e,0x33,0x9b,0xcf,0xe6,0x4e,0x2b,0x41,0x5a,0x21,0x23,0xa1,0xbb,0xd3,0xd6,0xd1,0xfd,0xbd,0x55,0xfc,0x92,0x92,0xcb,0x4b,0x72,0x39,0x8b,0xeb,0x72,0xdd,0xf7,0x77,0x43,0x52,0x2f,0x99,0x14,0x6e,0x41,0xce,0x1d,0x57,0x2c,0x09,0xd2,0x18,0xec,0x1b,0x89 +.byte 0xa0,0xe9,0xfe,0x1e,0x41,0xda,0x0f,0x76,0x02,0x38,0xec,0x9a,0x30,0xb7,0x5a,0x54,0x70,0xbc,0xe8,0xfa,0x06,0xd0,0x80,0xfb,0x27,0xd2,0xd8,0x00,0x80,0x65,0x9d,0x23,0xfd,0xad,0x26,0xb8,0xdc,0x09,0x4f,0xfb,0x52,0xcd,0xe4,0x41,0x68,0xca,0xdd,0xbc,0x2a,0x62,0xeb,0xa6,0x32,0x71,0xb0,0x08,0xb6,0x9f,0x3e,0x74,0xfe,0xb0,0xd4,0x9d +.byte 0x9e,0x6c,0x50,0x96,0x8a,0xde,0xd6,0xe9,0xde,0x2c,0xa6,0xf0,0x9f,0x67,0x00,0x50,0x0a,0x8c,0xe5,0xc2,0x37,0xcc,0xf0,0x53,0xeb,0x72,0xf2,0x87,0x77,0xee,0x80,0xe8,0xb2,0xa1,0x13,0x52,0x70,0xe6,0x8f,0x70,0x17,0x90,0x60,0xcb,0xac,0xb2,0x72,0xef,0xd9,0xb5,0xc3,0x68,0x57,0xdf,0x2d,0xcb,0x5a,0x35,0xf9,0x2e,0xfb,0xef,0x6e,0x77 +.byte 0x5d,0x21,0x37,0x4b,0x36,0x9b,0x3f,0x03,0x65,0xc9,0x84,0xb1,0x12,0x99,0xd1,0x6b,0x00,0x71,0x37,0xc7,0x57,0x82,0x44,0x7f,0xe1,0x81,0x24,0x70,0x96,0xd5,0x27,0xba,0x36,0xf7,0x25,0xc6,0x1c,0x7c,0x1b,0xdb,0xa3,0x6a,0x3e,0xb9,0x69,0x78,0xf7,0x51,0x46,0xe2,0x74,0xd3,0xfc,0xef,0x58,0x63,0x53,0x1d,0xd7,0xd0,0x8a,0x6a,0xd3,0xb0 +.byte 0xb9,0xbb,0xba,0x43,0xbf,0x8b,0x6b,0x04,0xd2,0xb1,0xe8,0xd1,0x72,0x3f,0xdc,0x2b,0x01,0xa6,0x2f,0x9c,0x7d,0x65,0xa1,0x9f,0x9b,0x4d,0x70,0x26,0x11,0x4c,0xb2,0xe1,0x01,0x0e,0x78,0xf2,0x32,0x87,0x2d,0x8e,0x95,0x02,0x76,0xca,0xe5,0x71,0x5f,0x36,0x35,0xb9,0xbb,0xc3,0xdf,0xf3,0x1e,0x1a,0x7a,0xe4,0x2c,0xdf,0x64,0x5d,0x96,0x12 +.byte 0xea,0x5c,0x14,0x73,0xa0,0xf1,0xbc,0xa9,0x6e,0x30,0x8a,0x47,0xf0,0x4b,0x9b,0x4c,0xc5,0xb0,0xbe,0x15,0x32,0x1b,0xde,0x0c,0x39,0x6a,0x6d,0x4e,0x3b,0x69,0x4c,0xb4,0x1f,0x56,0xf0,0xa1,0xb1,0x8c,0x29,0x5c,0x87,0x54,0xf2,0x5b,0x51,0x03,0x20,0x70,0x90,0x38,0x66,0x07,0xcc,0xd7,0xde,0x96,0x40,0x82,0xee,0xb5,0x87,0x2a,0x86,0xec +.byte 0x66,0x09,0xb7,0x4a,0xfe,0x4e,0x92,0x89,0x07,0xde,0x35,0xc4,0x6e,0x91,0x25,0xfd,0x18,0xfa,0xd9,0x8f,0xa7,0xa6,0xa7,0x6b,0x32,0xba,0xd3,0x1c,0x90,0xb9,0x8a,0x6c,0x9f,0x3f,0xb5,0x16,0x81,0x81,0xee,0xd7,0x55,0xc1,0x41,0x62,0xfd,0xe9,0x4c,0x5d,0xd7,0x70,0xdd,0xc6,0x4a,0x2b,0x42,0x77,0xe7,0x74,0xed,0x02,0x80,0x0d,0x7c,0x73 +.byte 0x8e,0xf0,0xd3,0xb0,0x20,0xbb,0xc8,0x82,0x06,0xdd,0x56,0x64,0xcb,0x9c,0xda,0xa1,0xa9,0x92,0xbc,0x8c,0x65,0x03,0xcd,0x68,0x87,0xa2,0x94,0x41,0x3c,0x36,0x96,0x1f,0xa4,0xd2,0x6d,0x5d,0x9f,0x2d,0x0c,0xf9,0x8a,0x82,0x19,0x93,0x47,0x62,0x71,0x8e,0x59,0xaa,0xf1,0x87,0xe0,0xb8,0xab,0x10,0x7f,0x4e,0xa8,0xa3,0xe2,0x32,0x58,0xb0 +.byte 0xcf,0x12,0xc0,0xf8,0x94,0x4a,0x61,0x36,0xdc,0x2d,0xb5,0x91,0xf9,0x0f,0x7d,0x91,0xd3,0xc7,0x03,0x8a,0xae,0x5c,0x22,0x8c,0x60,0x30,0xf4,0x71,0x51,0x00,0xf5,0x5d,0xe9,0x37,0x6c,0xae,0x64,0xff,0x45,0x35,0x4b,0x47,0x08,0xca,0xda,0x7b,0xe9,0xef,0xcb,0x27,0xcb,0x7e,0x3c,0xa6,0xd2,0x38,0x54,0x74,0xc3,0x7c,0xf8,0x71,0xb7,0x47 +.byte 0xe9,0xe0,0x43,0x03,0x3b,0x41,0x57,0xc3,0xda,0xa1,0xcb,0x64,0xb1,0x31,0x0d,0x12,0x45,0x3a,0xa0,0xad,0x6b,0xc7,0x26,0x62,0x50,0xcf,0x94,0x5a,0x30,0x8d,0xf6,0x91,0x49,0x9e,0xd5,0x84,0x0e,0x0c,0xe3,0x47,0x08,0x7f,0xa1,0x54,0x78,0x1b,0xa8,0x2c,0xbc,0x12,0x4f,0x7e,0x53,0x1b,0xca,0xfb,0x09,0x35,0xe0,0x9c,0x15,0xea,0xf6,0x3e +.byte 0xb2,0x20,0x9e,0x2c,0x81,0x6f,0xa4,0xb5,0x6b,0x04,0x6d,0xd1,0x90,0x66,0x46,0xdc,0x4b,0x71,0x7e,0x4b,0x3f,0xd6,0xe1,0xa8,0xc0,0xa7,0x45,0x85,0xe3,0x98,0x30,0xda,0x23,0x68,0x55,0xd8,0x96,0xb1,0xcc,0xeb,0xe1,0x95,0x0b,0x20,0xf3,0x4c,0xf2,0xc5,0xfa,0x0e,0xca,0xf5,0xc9,0xb3,0xd7,0xb4,0x1b,0x9f,0xef,0x82,0x56,0x4c,0xc5,0xa5 +.byte 0x21,0xda,0xcc,0x19,0x69,0x68,0xcb,0x37,0xb2,0x0c,0x73,0xb1,0x13,0x61,0x6b,0xca,0xda,0xfc,0xf7,0x1c,0xbc,0xd1,0x72,0x56,0xb8,0x7d,0xa1,0xef,0xc4,0x32,0x38,0xa3,0xdb,0x8b,0x2d,0x0a,0xce,0xcb,0x86,0x51,0x60,0xd2,0x47,0xf0,0x97,0x58,0xd8,0xa5,0x12,0x77,0xfc,0x32,0x04,0x29,0x61,0xfc,0xab,0xc2,0x42,0x86,0xd9,0x57,0x80,0xad +.byte 0x00,0xf0,0x9a,0x2a,0xac,0x52,0x27,0xd6,0xf8,0xd6,0x38,0xc8,0xfc,0xc1,0xab,0x4f,0x41,0xbf,0x8e,0x60,0x20,0xeb,0x24,0x36,0xd8,0xd8,0x25,0x6f,0xc8,0x5d,0x6b,0x00,0xdd,0x7a,0xe2,0x37,0xe4,0x13,0xd0,0xaa,0x5c,0x56,0x32,0x98,0x00,0x4b,0x8a,0x81,0xb1,0xfa,0xe8,0xf3,0xfa,0x0d,0xbb,0x66,0x6e,0x24,0xfd,0x3c,0x50,0x63,0x3a,0xf1 +.byte 0x72,0x63,0x18,0x71,0x6d,0xee,0x6f,0xf1,0x0e,0x1f,0x9e,0x9d,0x87,0x12,0x5c,0xdf,0x1d,0x9e,0xc0,0x0b,0x39,0x0e,0xd6,0x56,0x79,0x30,0xcb,0x07,0x7b,0x88,0xa5,0xbe,0xfd,0xd4,0x49,0xcc,0x92,0x6a,0xcc,0x78,0x1e,0xaf,0xee,0x89,0xc8,0x51,0x08,0x98,0x14,0x20,0xe5,0x52,0x93,0x18,0x6f,0xbb,0xdc,0xb2,0x68,0x14,0xd1,0xdb,0xe8,0x56 +.byte 0x24,0xd0,0x34,0xab,0xa6,0xfa,0xfe,0x72,0x5a,0xe3,0xe1,0x87,0x0d,0xf4,0xfa,0xa6,0xa6,0x6c,0xb6,0xcb,0xf8,0xfc,0x59,0xac,0xd9,0xb0,0xcd,0x15,0xa4,0x37,0x73,0x6e,0x70,0xc9,0x74,0xef,0x87,0x78,0x61,0xc2,0xd0,0x52,0x51,0xa9,0x2c,0xdb,0x9d,0xd9,0x3d,0xac,0xcd,0x52,0x39,0x69,0x2d,0x2a,0x4f,0xf3,0xb2,0x69,0xb9,0x01,0x3c,0x57 +.byte 0xeb,0x1b,0x0e,0x87,0xe9,0x42,0x58,0x83,0x6b,0xbc,0x72,0xc8,0x46,0x32,0x42,0x17,0x6a,0x19,0xa0,0xb3,0xf1,0x1c,0x96,0x9c,0x11,0x09,0x8b,0xc1,0x9e,0xe9,0x7f,0x18,0x8e,0xca,0xea,0x24,0x1b,0xce,0x12,0x57,0x1d,0x34,0xbe,0x60,0x60,0x2c,0xd8,0xa0,0x61,0x73,0xd6,0xf8,0xaf,0x15,0x26,0x84,0xd7,0xec,0xc0,0xbe,0x7e,0xa1,0xa8,0xba +.byte 0x2b,0xcc,0x20,0x67,0x6e,0xea,0x48,0x79,0x23,0xea,0x14,0x36,0x85,0x0a,0x56,0x3a,0xcd,0x5b,0x51,0xa4,0xf5,0x92,0x49,0xc2,0x55,0x62,0xed,0x88,0xde,0xd0,0x0c,0x01,0x36,0xb9,0x2e,0x94,0x80,0x75,0x8a,0x21,0x0a,0x07,0x45,0x68,0xd8,0x9d,0x49,0x7b,0xa7,0xb2,0x84,0xfa,0x3c,0xc4,0xd5,0x59,0xf9,0xc3,0xff,0xcf,0xe4,0x5f,0xea,0xbb +.byte 0x0f,0xae,0x7d,0x96,0xd3,0xe9,0x38,0xd1,0xb1,0x02,0xf6,0x4b,0x95,0x43,0x1c,0x69,0xa6,0x99,0xf5,0xdb,0x46,0x62,0xea,0x69,0x5a,0x08,0x2d,0x01,0x11,0xed,0x70,0x03,0x60,0x54,0xba,0x32,0x2c,0x0e,0x44,0x1f,0x8d,0xee,0x2e,0x39,0xab,0xc0,0xd4,0x88,0x11,0xef,0x07,0x3a,0x47,0xb9,0x6e,0x0c,0x22,0x9a,0xf3,0x89,0x01,0xfb,0xb8,0x2d +.byte 0x52,0xa0,0x42,0x4c,0xb3,0x9e,0xf5,0x4b,0x0c,0x78,0x0a,0x3b,0x29,0xae,0x4a,0xc0,0xb2,0xa3,0xc0,0x0d,0x38,0x07,0x49,0x9c,0xda,0x7c,0x48,0x81,0xba,0x53,0x0d,0x0d,0x78,0x8c,0xac,0x9b,0x3d,0x1f,0xaa,0xc1,0x32,0x54,0xca,0x54,0xe1,0xef,0x46,0x82,0x61,0xd0,0x88,0x04,0x53,0xb0,0x34,0xc2,0x23,0x9a,0x90,0xe3,0x73,0x9c,0x0d,0x46 +.byte 0x61,0xe5,0xc0,0x42,0x87,0x4a,0x3b,0x3a,0xf9,0xab,0xbe,0x4c,0xba,0x2f,0x88,0x03,0x6b,0x52,0x25,0x8c,0x9b,0xc0,0x13,0xb6,0x80,0x09,0x85,0x97,0x64,0x6d,0x65,0xcd,0x18,0x42,0x00,0xdf,0x76,0x4d,0x67,0xbf,0x04,0x7a,0x5f,0x7e,0x3a,0x5c,0x6f,0x1d,0x12,0x5b,0xbe,0xd2,0xc8,0xe5,0x09,0x45,0x4d,0xae,0xed,0xd8,0x77,0xc5,0x6f,0xb6 +.byte 0x43,0x09,0xe2,0xee,0xc9,0x5a,0x76,0xc5,0xeb,0xdd,0x96,0x23,0xb9,0xe5,0xfc,0xf2,0x3c,0xe1,0x67,0x5f,0x1b,0x10,0x39,0x47,0x67,0x8b,0x48,0x32,0xd0,0xbc,0xa0,0xa8,0x3e,0xc3,0x30,0x21,0x18,0x54,0x49,0xfe,0x8a,0x14,0x7a,0xe5,0x6e,0xbe,0x70,0xec,0xf6,0x97,0xa0,0xa4,0xf4,0xdd,0xaf,0xf2,0xde,0x50,0x1a,0x68,0xb9,0x1a,0x4b,0x37 +.byte 0xf8,0x29,0x16,0x4f,0x8c,0xa5,0x9e,0xd2,0x72,0x7f,0xf6,0x6b,0x7d,0xac,0xe4,0x17,0x93,0x39,0x8f,0xd9,0xdf,0x50,0x1f,0xce,0xf5,0x58,0xdd,0xcd,0xc2,0xb9,0x64,0xfc,0xad,0x8a,0x3c,0x2e,0x52,0x58,0x91,0x3b,0x78,0xb4,0xfd,0x4a,0x3b,0x13,0x5d,0x20,0xd5,0xdf,0xe7,0x52,0x3d,0x4c,0x2f,0x02,0x30,0xfc,0x24,0x17,0x99,0x6e,0x4b,0xfe +.byte 0x1d,0xf0,0xe6,0x86,0x32,0x37,0xb5,0xd5,0x09,0xa3,0xa5,0x3b,0xc1,0x88,0x9f,0x01,0x57,0x12,0x03,0x1d,0x60,0xd8,0x57,0xba,0xc6,0xfc,0xda,0xab,0x02,0xbe,0xab,0x89,0xf9,0x08,0x63,0xbd,0x42,0x11,0xf7,0xbf,0xd3,0x45,0x2b,0xa5,0x34,0x91,0x18,0xb9,0xb3,0x79,0xb4,0x15,0xa1,0x01,0x1a,0xf9,0x74,0x91,0x08,0x94,0xb2,0xf3,0xb2,0xca +.byte 0x0a,0x3a,0x4f,0x42,0x8a,0x16,0xf7,0x9e,0xbf,0x27,0x72,0x7b,0xff,0xd3,0xb9,0x4e,0xf5,0x8e,0x68,0xb5,0x91,0x23,0xef,0xeb,0x5d,0x7d,0xd8,0xc9,0xda,0x07,0x33,0xc9,0x1c,0x4a,0x7a,0xf2,0x72,0x64,0xb3,0x35,0x2e,0x54,0xec,0xc4,0xd9,0xee,0xea,0xda,0xfe,0x8b,0x1c,0x21,0x93,0x52,0x95,0x7c,0x2d,0xfe,0x56,0x05,0xdd,0x57,0x37,0xf2 +.byte 0x54,0x1c,0xe2,0x6c,0xc0,0xaa,0x71,0x67,0xdd,0x73,0x43,0x17,0x3e,0x76,0xdb,0x60,0xb4,0x66,0x62,0xc7,0x74,0x08,0x91,0x1f,0xd5,0x4c,0xa9,0xd0,0x34,0x33,0xea,0xb0,0x2c,0x0a,0x88,0xda,0xf7,0xca,0x91,0xf6,0x5f,0x9e,0x72,0xf6,0x18,0xf9,0x19,0x9d,0x84,0xf8,0x4c,0xe1,0xeb,0x45,0x29,0xaa,0xf2,0xa6,0xfd,0x64,0xf9,0x0b,0xfe,0x09 +.byte 0x1c,0xc2,0xde,0x19,0xdd,0x0f,0x02,0x16,0x65,0x70,0x33,0xd4,0x32,0x67,0x7b,0xc4,0xbb,0x11,0x60,0x4f,0xc3,0x4d,0x29,0x23,0x7e,0x84,0x58,0x51,0x43,0x7e,0x25,0x4f,0x3d,0xd4,0xe0,0x20,0x79,0xfd,0xce,0x59,0x49,0xf8,0xd1,0x53,0xca,0x2d,0x66,0xec,0xe5,0x7f,0xc8,0x14,0x06,0xc1,0x96,0x40,0xf2,0x61,0xa7,0x1b,0xf9,0x5e,0x97,0xfe +.byte 0x62,0x57,0x05,0xcc,0x6f,0x26,0x4b,0xa6,0x40,0x33,0x72,0x20,0xd3,0x1e,0x2b,0xb2,0x60,0xe7,0x56,0xda,0x87,0xd3,0xb4,0x5a,0x73,0x04,0xc9,0xc2,0x68,0xe3,0x18,0x74,0xd9,0x46,0x74,0x31,0xf4,0xf4,0xab,0xc4,0x0a,0xbc,0x66,0x4e,0x23,0x5f,0x92,0x7c,0x0a,0x81,0xdd,0xcc,0x79,0xee,0xb3,0x3d,0xc0,0x91,0x81,0xd0,0x79,0x39,0xd2,0x69 +.byte 0x5d,0xdc,0xc1,0x5c,0x61,0xb9,0x5e,0x87,0x32,0x73,0x70,0xd0,0xa8,0x7d,0xb5,0xd0,0xfc,0xf4,0xb6,0x55,0x9f,0x1f,0x8a,0xec,0xf4,0xb0,0x47,0xeb,0x3b,0x68,0x80,0x0b,0x79,0xd0,0x71,0x99,0xb1,0xd0,0xed,0x1f,0x9f,0x6c,0x2d,0x9d,0xae,0x1c,0x62,0x3b,0xec,0x3e,0x2f,0xb4,0x6f,0xbb,0x2e,0x1e,0xa9,0x7c,0xe8,0x5d,0x14,0x7d,0x0d,0x17 +.byte 0x6d,0x9c,0x54,0xce,0x64,0x93,0x8e,0x3b,0xa4,0xa9,0xfb,0xd9,0x44,0x06,0xbb,0xb8,0x7f,0xdf,0xd3,0xc2,0xa2,0xcf,0x5a,0xa2,0xa7,0xbb,0xb5,0x08,0xe2,0x67,0xdf,0x0e,0x4e,0xc6,0xcf,0x0a,0x79,0x1e,0xa5,0x60,0x1a,0x81,0xb1,0x8e,0x1b,0x27,0x7f,0x8d,0x28,0x50,0xa7,0x4a,0xe4,0x4b,0x61,0x6b,0xa9,0xfa,0xaf,0x82,0x83,0xfb,0x1f,0x2e +.byte 0xfa,0xce,0x18,0x0e,0x32,0x5f,0x5a,0xcf,0xac,0xaf,0x22,0x30,0x16,0xd7,0x97,0x99,0x0d,0xb8,0x92,0xa5,0x1d,0x44,0xb2,0xa5,0xc7,0x74,0xd2,0x81,0x8d,0x5c,0x38,0xda,0x9f,0x76,0xcb,0x47,0x6c,0xb7,0x08,0xd9,0xc1,0x52,0xd0,0x64,0x0a,0xf9,0xdd,0x3e,0xe8,0x99,0x15,0x4d,0xcb,0x7b,0x25,0x53,0x8c,0x13,0xb1,0xbf,0xb7,0xca,0x2d,0xce +.byte 0x71,0x48,0xee,0x5b,0x3a,0x01,0x5b,0xfd,0x22,0xfa,0x6f,0x17,0xcb,0x52,0xcc,0x0a,0x2b,0xbb,0x6d,0xce,0x2d,0x00,0xf5,0x9e,0x0d,0x58,0xf1,0xf4,0xa4,0x9f,0x13,0xf9,0x68,0x15,0xd7,0x02,0x41,0x6c,0x19,0x6b,0x66,0x9a,0x74,0xee,0xb4,0xb3,0xc7,0xec,0x60,0x19,0xbd,0xbb,0x97,0x22,0x7c,0x4e,0xe6,0xc6,0x00,0x03,0xa5,0x36,0x52,0xec +.byte 0x21,0xcf,0xc8,0xda,0x2c,0x14,0xa9,0xd8,0x75,0xab,0xea,0x05,0x8c,0x24,0x28,0x63,0xbd,0x58,0x35,0xd7,0x95,0xcb,0x14,0x89,0x04,0x99,0x7e,0x67,0x0d,0x07,0x35,0xdb,0x17,0x7c,0x72,0x2d,0xbc,0x89,0x9b,0xb4,0x16,0x21,0x2f,0x90,0xe8,0x8f,0xeb,0xc3,0x8d,0x86,0x0d,0x92,0xf6,0x4b,0x80,0x36,0x96,0x6b,0xd8,0x95,0x7b,0xad,0xe8,0xbf +.byte 0x77,0x9e,0xf4,0x93,0xcd,0xa5,0x06,0xbc,0x38,0xf2,0x57,0x25,0x54,0xfa,0x8e,0x19,0x8e,0x25,0x8e,0x3c,0x28,0xaa,0xf2,0x02,0x30,0xd4,0x47,0x89,0x36,0xb9,0xb7,0x01,0x5f,0x0c,0xd1,0x8d,0x93,0x7e,0xf0,0xf0,0xff,0x2f,0x8f,0xb5,0x97,0xa7,0x02,0xe8,0x9b,0xf2,0x51,0xe6,0x51,0x62,0xa5,0x27,0x26,0xc6,0x7a,0x39,0x7a,0xa9,0xaf,0x1e +.byte 0x03,0xd5,0x25,0xbe,0x3b,0x19,0x46,0xc4,0xdd,0xd6,0x5e,0x6a,0x18,0xc0,0x41,0x5f,0x53,0x89,0xd3,0x16,0xfb,0x3a,0x10,0xce,0x0d,0x8c,0x04,0x4c,0xcf,0xab,0xb9,0x0d,0x6c,0x45,0x6c,0x29,0xed,0x77,0x37,0x1f,0xd8,0x10,0x8a,0xfe,0x07,0xbd,0x7e,0xd7,0xa6,0x6b,0x80,0xde,0x3e,0x2c,0xa8,0xb1,0x38,0xcc,0xab,0x10,0x69,0x8f,0x58,0x3d +.byte 0x12,0xc7,0x9c,0xc1,0x0a,0xeb,0x3d,0x5e,0xf1,0x65,0xc6,0x09,0xcb,0x4b,0x09,0x24,0xa7,0x56,0x1d,0x1d,0x4c,0xd7,0x06,0xbd,0xe2,0x72,0x70,0xae,0x7e,0xe9,0xaa,0x97,0x6d,0xec,0xcb,0x55,0x0b,0x5d,0x45,0x3a,0x25,0x3d,0x52,0x0f,0x48,0x2f,0xe4,0xd0,0x5e,0x85,0x87,0xb6,0xa7,0x70,0x2f,0x9c,0x19,0x89,0x95,0x45,0x76,0x00,0xfe,0x27 +.byte 0xff,0xf8,0x73,0x59,0xba,0x98,0x92,0x4e,0x76,0x1a,0x90,0x1d,0xbc,0x1b,0xae,0x44,0xb6,0x63,0x86,0x4c,0x3c,0x8a,0x8f,0x3e,0x03,0x95,0x50,0x30,0xd8,0x0f,0x7f,0x6f,0xb6,0xe9,0xbe,0x2e,0xc9,0x55,0xe7,0x73,0xd6,0x77,0xdc,0xbc,0x67,0x54,0x31,0x47,0x30,0x46,0xe1,0xa4,0xf8,0xf3,0x90,0x4f,0x68,0x5a,0x52,0xe2,0xe7,0xdb,0xd9,0xfd +.byte 0xf6,0x36,0x2a,0xc1,0xdb,0x35,0x82,0x69,0xff,0xf9,0xea,0x53,0xff,0xcd,0x21,0x2c,0x26,0x79,0xd6,0x8c,0x74,0xe7,0x9e,0x85,0x1a,0x04,0xf5,0xed,0x89,0x16,0xf5,0xd7,0xf1,0x89,0xf1,0xb3,0x5b,0x47,0x42,0xcb,0x92,0x2e,0x70,0xf6,0x3e,0xfc,0x20,0x87,0x70,0xec,0x30,0x16,0xcc,0x88,0x64,0x13,0x58,0xf1,0x0d,0x17,0x90,0xc4,0xdb,0x07 +.byte 0xf5,0xe3,0x34,0x31,0x10,0x9c,0xa4,0x6a,0x4a,0xe6,0x6c,0x80,0x49,0x07,0x23,0x21,0xd6,0xf1,0xcb,0x4a,0xd1,0xb5,0xb7,0x63,0x94,0x4c,0x0a,0xce,0x90,0xf2,0x63,0x31,0x4f,0x96,0x6c,0x5d,0x3e,0xaa,0x10,0x20,0xd6,0xb6,0xbe,0xfa,0x3f,0x83,0xbc,0xa8,0x08,0x38,0xec,0x38,0xe4,0xe9,0xf5,0xb3,0x8e,0x32,0x31,0xcd,0x7c,0x08,0x98,0xf6 +.byte 0x0f,0x8a,0x8f,0xc1,0xd8,0x9e,0x05,0xb6,0x74,0x11,0x94,0xef,0x4f,0x8f,0xa1,0xc6,0x8c,0xdb,0xc3,0x27,0x4e,0xa3,0x30,0x94,0xf5,0xe8,0x2a,0x18,0x0a,0x51,0x9b,0x79,0xb2,0x1f,0xc3,0xa0,0x26,0xa9,0xf5,0xc4,0x9e,0x39,0xda,0x6a,0x53,0x8f,0x8c,0x4c,0x54,0x50,0x81,0xa0,0x0a,0xd3,0x7c,0x99,0x91,0xc7,0x3e,0x56,0x7d,0x53,0x8c,0x3c +.byte 0x51,0x44,0xa5,0x22,0x9d,0xd2,0x9b,0x13,0xcf,0xb8,0x0c,0xb8,0xd4,0xaa,0xb4,0xaa,0x8d,0xab,0x7c,0x06,0xca,0xbb,0x85,0xac,0x01,0xee,0xef,0xe7,0x74,0xd5,0x0d,0x64,0x91,0x1c,0xde,0x6c,0x05,0x37,0x1e,0x23,0x05,0x7e,0x38,0xdc,0x17,0xaf,0xa7,0x95,0x85,0x1f,0xaf,0xc8,0xe1,0xc2,0xda,0xda,0xf1,0x14,0x56,0x66,0x68,0x70,0x36,0x38 +.byte 0x7b,0xb8,0x22,0x9f,0xc4,0xeb,0x5d,0x76,0x97,0xc5,0xa3,0xb9,0x06,0x86,0x4f,0x20,0xab,0x7d,0xce,0x7d,0x78,0x59,0xc5,0x1f,0x73,0x81,0xf6,0x6d,0xb4,0xcc,0x10,0xc5,0x4d,0xe3,0x81,0xaf,0xbc,0x37,0x42,0x28,0x5f,0x51,0x1e,0xaa,0xc7,0x81,0x20,0xc3,0x89,0x35,0xf1,0x74,0x3a,0xe8,0x04,0x24,0xef,0x8b,0x70,0xe1,0x74,0xdf,0x87,0xd5 +.byte 0x3c,0x32,0x32,0x7d,0x03,0xd7,0xda,0x6d,0x8b,0x25,0x8d,0x11,0xa3,0xc2,0x27,0xdc,0xa3,0xfc,0xdf,0x70,0xa4,0x41,0xad,0xda,0xce,0x12,0x45,0x14,0xa1,0x96,0x16,0xd8,0x54,0x89,0x9e,0x78,0x7f,0x23,0x12,0xd1,0x15,0x08,0x7f,0xbd,0xf0,0x9a,0xf1,0x5b,0x07,0xd5,0xbc,0xab,0xab,0x15,0xae,0xda,0xf1,0x26,0x12,0x4e,0xd6,0x6c,0x35,0xc1 +.byte 0x6e,0x27,0x4d,0xa8,0x71,0x51,0x1e,0xae,0xa8,0x35,0x26,0x06,0x18,0x03,0xd8,0xae,0x9e,0x8b,0x07,0x30,0x10,0xfb,0x47,0x05,0x02,0xcc,0x0a,0xbd,0x57,0x43,0x15,0x0a,0x7a,0xb5,0x30,0x0b,0xa6,0x3c,0xa8,0xc9,0xf5,0x68,0xe1,0xfb,0xd1,0xe0,0xe7,0x44,0x6c,0xb4,0x44,0xb6,0xd1,0x2b,0x30,0x5e,0x17,0x89,0x40,0xcc,0x10,0x8f,0x97,0x8a +.byte 0xf3,0xf4,0x52,0x55,0xc4,0x8e,0x46,0xe5,0x24,0x0b,0x2a,0x5d,0x84,0xc1,0x4e,0xa8,0x5a,0x53,0xa8,0xce,0xc6,0x3f,0xa2,0xaa,0x3a,0x8f,0x51,0xed,0x4c,0xa6,0x34,0x6a,0x8c,0x18,0x9b,0x36,0x49,0x40,0x34,0xa3,0xe4,0xd8,0x3c,0x8a,0xfc,0x41,0xc9,0x35,0xfe,0x6e,0x3e,0x29,0xbc,0x04,0x61,0xaf,0x04,0x03,0x43,0x79,0xb5,0x77,0x27,0x25 +.byte 0xbe,0x85,0xc9,0x56,0xa4,0x17,0xc4,0x27,0x3d,0x53,0x1b,0x49,0x86,0xb2,0xb6,0x52,0x62,0x12,0x5d,0xe9,0x47,0x6f,0x65,0x78,0xf8,0x95,0x63,0xbc,0x73,0x6d,0xa6,0xb9,0xcd,0x17,0x39,0x56,0xb0,0xab,0x3a,0x15,0x5f,0x9a,0x98,0xfb,0xcd,0x51,0x4a,0x35,0x21,0xaf,0x07,0x4a,0x3d,0xfd,0x39,0x11,0x42,0xed,0xfc,0x7e,0x10,0x24,0xa5,0x0c +.byte 0xb2,0x4f,0x27,0xe4,0x78,0x32,0xfe,0xfc,0x8e,0x46,0x68,0xbb,0x2e,0x85,0x87,0x0f,0x01,0xde,0x1c,0x02,0xdd,0x82,0xa0,0x9e,0x30,0x31,0x8d,0x86,0x36,0x33,0xa6,0x59,0x16,0x78,0xae,0x1f,0x1d,0x27,0x0b,0x29,0x42,0x16,0x93,0x3b,0xe6,0xfb,0x8d,0xd5,0x48,0x42,0x61,0x39,0x5b,0xf7,0xea,0xd0,0x6f,0x67,0xd9,0x03,0x72,0xed,0x54,0xe1 +.byte 0xab,0x3f,0xa0,0xdc,0x4b,0x19,0xe6,0xe3,0xfe,0x5f,0x65,0x64,0x4c,0xa9,0x5c,0x52,0x36,0xb3,0x65,0x28,0x3e,0xe5,0x07,0x50,0xed,0xec,0x2f,0xc9,0xff,0x47,0x27,0xf6,0xfe,0xb8,0x60,0x60,0x52,0xe5,0xec,0x3c,0x4f,0x69,0x9f,0xaa,0x06,0x8a,0x99,0x9f,0xac,0xfc,0x0a,0x6f,0x8a,0xa4,0x0e,0x5c,0x58,0xb4,0x09,0xba,0x93,0x95,0x94,0x12 +.byte 0x9b,0x23,0x4f,0x93,0x28,0x6d,0xd0,0x76,0xfd,0xc9,0x87,0x3b,0xf1,0x8c,0x7d,0x56,0x84,0x5a,0x04,0x08,0x30,0xf7,0xf6,0x52,0x15,0xba,0xd6,0x7a,0x39,0x8c,0x5a,0xbf,0xeb,0x02,0x6d,0x31,0x30,0x92,0xbc,0xe2,0x07,0x21,0x16,0x96,0x70,0x66,0x00,0xe0,0x04,0xc5,0xa8,0xe4,0x08,0x6d,0x08,0x69,0x35,0xe2,0xb1,0x83,0x03,0x37,0xca,0xff +.byte 0x06,0x37,0x80,0xd5,0x1a,0xc5,0x31,0xfc,0x9a,0xb0,0x8a,0x4b,0x58,0xf3,0x00,0x4e,0xa4,0xfe,0x9e,0xe0,0x60,0xc7,0x3d,0x2c,0x52,0xb5,0x39,0xf0,0xa4,0x88,0x39,0x37,0xa5,0x26,0x8a,0xa3,0xe6,0x31,0xce,0xf3,0xa1,0x54,0x73,0xe7,0x69,0x38,0xef,0xa2,0xab,0x52,0x50,0x1a,0x45,0xcc,0x29,0x9c,0xb6,0xf4,0xde,0xc2,0xfe,0x7a,0x26,0xf7 +.byte 0x7a,0x6e,0x07,0xb6,0xd8,0x3f,0x77,0x60,0x35,0xae,0x6a,0x90,0xd6,0xb8,0x37,0xed,0x73,0x59,0x54,0xd9,0x0c,0x87,0x0e,0x81,0xef,0x69,0xc7,0xd4,0x8f,0x00,0x74,0x57,0x12,0xcf,0xa1,0x76,0xe8,0x45,0xf5,0x9a,0x4f,0xe2,0x5d,0x8a,0x89,0xb1,0x8b,0xea,0x9c,0x0a,0x1e,0x00,0x61,0x3b,0x66,0xbd,0xb5,0xd6,0xff,0xa3,0xff,0x52,0xc2,0x35 +.byte 0x81,0x05,0x08,0x2b,0xf9,0x52,0xda,0x74,0xd1,0x76,0x13,0xba,0x28,0x4c,0xb1,0xb1,0x82,0x5b,0x4e,0x79,0x39,0x22,0xf9,0x96,0x91,0x07,0x4f,0xf9,0xf2,0x25,0x25,0xb1,0x3e,0xda,0x07,0x5c,0x01,0x7b,0xfa,0x3e,0x95,0x92,0x1d,0xf8,0x44,0x06,0xc1,0xed,0x64,0x74,0x14,0x84,0x25,0xee,0x75,0xaf,0xe3,0x7c,0xd3,0xbe,0x7a,0x51,0x6b,0x80 +.byte 0x20,0x43,0x20,0x10,0x5f,0xf5,0xfc,0xd5,0xe8,0x06,0x43,0xad,0x10,0x6b,0x67,0x48,0xca,0xca,0x6e,0x3e,0x1c,0xdf,0x8f,0x7a,0x65,0xc8,0x5d,0xba,0x3b,0x67,0xeb,0x1f,0xc4,0x37,0xad,0xef,0x73,0x9e,0x18,0x8e,0xc1,0x99,0xaf,0x75,0xd3,0x91,0x73,0xc3,0x3a,0xb2,0xfe,0xff,0x30,0x81,0xc4,0x4f,0x37,0x37,0x23,0x96,0x17,0xf1,0xa2,0x9b +.byte 0x55,0x6e,0xd6,0xb3,0xc4,0x98,0xa3,0x32,0xb6,0xff,0x86,0x87,0x77,0xf4,0xad,0x16,0x3e,0xf0,0x24,0x01,0xb4,0x8e,0x1e,0x0f,0x10,0xa4,0x2e,0xe4,0x79,0xe6,0x88,0xe7,0x09,0x58,0x5e,0x97,0xad,0x0d,0x72,0x05,0xbf,0x2f,0x3f,0x99,0xee,0x8a,0x84,0xc3,0x62,0x43,0x52,0x6d,0xab,0x66,0xcf,0x9f,0x4e,0xf2,0x0d,0x13,0x15,0x49,0x84,0x5e +.byte 0x6c,0x8d,0x2d,0xef,0x53,0x16,0xa0,0x63,0xbe,0x05,0xb8,0x9b,0x23,0xca,0xca,0xb8,0xdd,0xbc,0x96,0x68,0x35,0x43,0x63,0x30,0x8e,0xaf,0x53,0x98,0xe2,0x76,0xe8,0x89,0x00,0x29,0x11,0x70,0xd5,0x94,0xbd,0x78,0xff,0xf6,0x88,0x4a,0x3d,0x99,0xd9,0x7e,0xdf,0xa8,0x33,0x92,0xa2,0xc0,0x32,0x42,0x73,0x08,0xd4,0x55,0x5d,0x18,0x93,0xca +.byte 0x7e,0x33,0xe3,0x51,0xc7,0xb7,0x24,0x62,0x69,0xf4,0xab,0x36,0xe3,0x22,0x10,0x9b,0xe0,0xbd,0x48,0x65,0x30,0x9c,0xfe,0xeb,0x3f,0x7f,0x22,0x67,0xcc,0x87,0x5a,0x71,0xb0,0xd1,0x19,0x82,0x1c,0xb2,0xf1,0x73,0xd2,0xd6,0x3f,0xef,0xe3,0x2f,0x25,0xf3,0x8b,0x21,0x4e,0xbf,0x0e,0xc1,0xd2,0x8a,0xbb,0x04,0xde,0xcf,0xd1,0x77,0xba,0xaa +.byte 0xc7,0x41,0x68,0xce,0xc4,0x64,0xf9,0x3a,0x2f,0x1c,0x0b,0x22,0xf8,0x60,0x09,0x76,0x31,0x88,0x62,0x3a,0xf3,0x49,0xe6,0xda,0x4b,0xd3,0xf3,0x35,0xaa,0x56,0x4c,0x2f,0x7f,0x03,0x3e,0xf8,0xcb,0x5e,0xed,0x37,0xa1,0x29,0xe8,0x20,0xf5,0x4a,0x32,0x73,0x30,0xfd,0xd1,0xf6,0xb4,0xa1,0x30,0x87,0xcb,0x21,0x63,0xf5,0x3a,0xad,0x05,0x1a +.byte 0x34,0xf5,0x32,0xf6,0x02,0xf3,0x10,0x52,0xfd,0x86,0x37,0x1f,0x5d,0xe4,0x2e,0x31,0xcb,0xb8,0x4c,0xeb,0xdd,0xea,0x01,0x0d,0x94,0x13,0xa8,0x8f,0xf0,0x52,0x4e,0x0d,0x4f,0xd1,0x24,0xeb,0x0f,0x2b,0xb1,0xaa,0xc5,0xc8,0x52,0xb9,0xbe,0x21,0x48,0x2a,0x53,0x98,0xe4,0x00,0x72,0x64,0xdb,0x44,0x48,0x36,0x60,0xe7,0x81,0xdc,0x25,0x85 +.byte 0x4d,0xaf,0xa8,0x0d,0xfb,0x07,0x76,0x4f,0x6a,0x30,0x3c,0x7c,0x3b,0x36,0xa9,0xf8,0xae,0x81,0x03,0xe9,0x19,0xdf,0xdb,0xd9,0x7f,0x59,0xe0,0xd7,0x50,0x14,0x9f,0x67,0x3d,0xc7,0xdf,0xa8,0x44,0x86,0x29,0x81,0x65,0x44,0x9e,0x37,0x27,0xdd,0x2f,0x33,0x59,0xf7,0xaa,0x17,0x34,0x8c,0x1c,0xa7,0x8e,0x06,0x46,0xf1,0x43,0x87,0xa9,0xb7 +.byte 0x85,0xec,0x92,0x0d,0xdd,0x78,0x55,0x99,0xfb,0x1c,0x66,0x85,0x0d,0x59,0x31,0x00,0xbc,0xd9,0x9b,0xbb,0xfb,0xfc,0xb2,0x36,0x3c,0x34,0x8f,0x4a,0xb6,0x74,0x9c,0x32,0x6f,0x69,0x6c,0x3e,0x68,0x7e,0xec,0xeb,0x58,0x6a,0xf5,0xa2,0xbb,0x04,0x68,0xdb,0x8c,0xf0,0x04,0xba,0xf7,0xf7,0x50,0xd0,0x60,0xba,0x45,0x73,0x0f,0x2c,0x2f,0x97 +.byte 0x58,0xcc,0xa2,0xbe,0xfe,0x5e,0xf9,0x44,0x03,0x8b,0x99,0x56,0xb0,0x4f,0xe1,0xd0,0xa5,0x9f,0xd1,0xfc,0x95,0x44,0x4b,0x01,0x24,0xc0,0x4c,0x91,0xc1,0xb5,0x99,0xe7,0x5f,0x2f,0xcf,0x5d,0x4f,0x64,0x6e,0x54,0x51,0x0c,0x35,0x5f,0xa8,0x7b,0x27,0xa0,0x7d,0xb1,0x90,0xc2,0xdd,0x50,0xef,0x09,0x6f,0xed,0x25,0x6b,0xf5,0x6f,0xc1,0x97 +.byte 0xea,0xd5,0x49,0xf5,0x40,0x60,0xc3,0xbb,0x0d,0x82,0x15,0xa5,0xf7,0xfe,0xa1,0x20,0x13,0x9e,0xbb,0x43,0x58,0xba,0xd2,0xe8,0x89,0xaa,0xfc,0xe0,0x47,0x6b,0xac,0x91,0x8b,0xeb,0x4f,0xf5,0xda,0xf5,0xc8,0x11,0x64,0x7c,0x8d,0x43,0x92,0xf2,0x84,0xeb,0xfb,0x5c,0x1b,0x6b,0x68,0x8e,0x3c,0x66,0xb2,0xd1,0x8e,0x67,0x44,0xbf,0x69,0x3b +.byte 0xb9,0x41,0x78,0x8d,0xc8,0x7b,0x81,0x61,0x70,0x6e,0xe2,0xfc,0xd2,0x96,0x31,0x31,0x2f,0x27,0x90,0xf2,0xc4,0xed,0xbd,0xb5,0x0e,0x91,0x7d,0xd0,0xec,0x3c,0xe9,0xcf,0xf2,0x07,0xac,0x54,0x44,0x9a,0x24,0x41,0xcb,0x2a,0x86,0x30,0x18,0xba,0x65,0x59,0x41,0x00,0x59,0xbf,0x3d,0x01,0x8a,0x51,0xe5,0xd2,0x90,0x8c,0x7d,0xd7,0xad,0x71 +.byte 0xdc,0x45,0x62,0x95,0xf9,0x9f,0xe8,0x55,0x6d,0x48,0x22,0x32,0xcb,0x9a,0x55,0x65,0xe5,0xdf,0xee,0x22,0x99,0x91,0xd7,0xed,0x33,0x04,0x72,0xc7,0xc5,0xb2,0x56,0x5e,0x8f,0x38,0x4b,0xd0,0x61,0x4b,0x4b,0x04,0x4c,0x4c,0x2b,0x23,0x00,0xd4,0x5c,0xdd,0x84,0x8d,0x73,0xf4,0xf7,0xef,0xd5,0xdb,0x2b,0xec,0x54,0x86,0x37,0x01,0x64,0x56 +.byte 0xef,0x73,0x9f,0xb4,0xb6,0xd2,0xf4,0x33,0x93,0xbd,0xd7,0xd9,0x6e,0x8f,0x60,0x85,0xbc,0xa6,0x16,0x3f,0x3f,0xc3,0xd7,0xfc,0xb6,0x82,0xf0,0xe5,0x1e,0x2c,0x51,0x48,0x27,0x50,0x3e,0xdb,0xe6,0x86,0x3b,0xa1,0xfa,0x09,0x39,0x04,0x6f,0xb1,0x85,0xbd,0xda,0x4d,0x2f,0xd1,0x40,0x6f,0x2e,0x2b,0xf2,0x9a,0x4d,0x8e,0xb2,0xc5,0x6e,0x21 +.byte 0xf9,0xdd,0xc9,0x2e,0x81,0x18,0x7b,0x88,0xb9,0x86,0x36,0xe5,0xb2,0xdd,0x19,0xb4,0x7f,0x5d,0xc0,0x20,0x34,0xdc,0x63,0x7d,0x8c,0x80,0x0f,0xe6,0x85,0x14,0xbb,0x87,0x6c,0x3e,0x39,0x53,0x60,0x3d,0xc5,0x46,0x11,0xa3,0x96,0x60,0x6f,0xe9,0xfe,0x59,0xcc,0xed,0x4d,0xdb,0xa3,0xa1,0xf1,0x71,0x0b,0xb0,0x1f,0x89,0x4c,0x32,0x59,0xa5 +.byte 0x7d,0xf7,0x3e,0x5b,0xca,0xa4,0xe1,0xc3,0x50,0xac,0xdf,0x00,0xad,0x45,0x59,0x9e,0x23,0x5f,0x52,0xbd,0x36,0x78,0x55,0xcf,0x90,0x91,0x41,0x14,0xdb,0x76,0x3a,0x43,0x39,0x89,0xe1,0x93,0xc8,0x66,0x91,0xc7,0x42,0x06,0x6f,0xbb,0x35,0x1e,0x07,0x52,0x5a,0xe4,0x41,0x9f,0x65,0xe0,0xdc,0x49,0x8c,0xd3,0x5f,0x16,0x21,0xc9,0xb8,0x8a +.byte 0xc2,0x56,0x91,0xcb,0x18,0x6b,0x38,0x7b,0x3a,0xeb,0x91,0x3c,0x0d,0x6a,0x1f,0xd6,0xc6,0xd7,0x56,0x8d,0xd3,0x76,0x1c,0x9d,0xed,0x3d,0xb6,0x92,0x71,0x6e,0x73,0xc6,0xb8,0xa2,0x1c,0x25,0xb9,0x3c,0xd4,0x41,0xf7,0x8f,0x39,0x60,0xe6,0x27,0xf2,0xc6,0x5f,0x56,0x08,0x7c,0xd3,0x16,0x9d,0x06,0xc0,0xca,0x3d,0xc6,0x61,0xb0,0x21,0x51 +.byte 0x6d,0xca,0x82,0x59,0xe6,0xbb,0x99,0xa2,0x4f,0xfc,0x71,0x66,0x2b,0x4e,0x40,0x62,0x97,0x34,0x73,0x4a,0xe5,0xf0,0x4f,0x4c,0x36,0x4c,0xdb,0x03,0xa9,0x87,0x29,0x21,0x5d,0x91,0x5b,0x89,0xb8,0x3d,0x65,0xc7,0x58,0x0a,0x81,0xb5,0x3e,0x22,0xa1,0x57,0x95,0xbe,0x60,0xf5,0xeb,0xb3,0x49,0xdf,0xd9,0xa2,0x31,0x36,0x5f,0xb2,0xa6,0xf6 +.byte 0x66,0x88,0x88,0x8e,0xa3,0x2c,0xac,0x5e,0xa1,0x33,0x16,0x64,0x08,0x47,0xc8,0xbc,0xc2,0xe9,0xdb,0x73,0x57,0x50,0xd4,0x24,0x01,0x26,0x26,0x04,0x4f,0x8a,0xc0,0x7a,0x97,0x14,0xf2,0xd0,0xbe,0x03,0xea,0x8a,0x25,0xcb,0x98,0xe7,0xbd,0x67,0xff,0x32,0xfd,0x8a,0x7d,0x11,0xe1,0xb2,0x91,0xb5,0xa0,0xb6,0x3c,0x2c,0xb3,0x6e,0x35,0x61 +.byte 0x86,0xbc,0x37,0x15,0xf8,0x3b,0x0d,0x84,0x83,0x69,0x76,0xb0,0xaa,0x8f,0x4f,0xca,0xba,0x54,0xfe,0x42,0xc8,0xba,0x9a,0xd5,0x53,0x69,0x67,0x29,0x23,0x3a,0x6a,0x75,0x97,0xb4,0x29,0x2e,0x62,0xe3,0x95,0x82,0xb3,0xa0,0xa1,0xb7,0xdf,0xc2,0x66,0x4d,0xdd,0x0d,0xda,0xda,0xc2,0x42,0xe0,0x69,0xb1,0xab,0x3c,0x44,0x39,0x11,0x3b,0x0a +.byte 0xd6,0x96,0x2c,0x36,0xb0,0xa0,0xed,0x3d,0x0c,0x63,0x8b,0x90,0xe4,0xb9,0x5f,0x4c,0x27,0x70,0x87,0xb3,0x54,0xe2,0x36,0x74,0x6f,0x3e,0x22,0xb1,0x3b,0x1b,0xba,0xdb,0x1c,0xbd,0x9c,0x6d,0x84,0xbd,0x33,0xfb,0xc0,0x98,0x4c,0xcf,0x7a,0xe8,0x41,0xdb,0x32,0x1f,0xb7,0x64,0x19,0xdb,0x87,0xe7,0xf9,0x52,0x40,0x8c,0xc6,0x89,0x98,0x15 +.byte 0x69,0xde,0xfa,0x29,0x9a,0x0f,0xaf,0xb0,0xad,0x71,0x35,0xab,0xab,0x34,0xe0,0xf4,0x03,0x24,0x6f,0x94,0x38,0x87,0xba,0x68,0xd5,0x1f,0x58,0x88,0x3e,0x12,0x20,0x57,0x43,0xde,0xd0,0xbc,0xaa,0x31,0x8f,0xbc,0x88,0xa0,0xdf,0x5a,0xcc,0xd1,0xba,0x9c,0x18,0x80,0x4e,0x8f,0x68,0x91,0x9c,0x57,0x3b,0x5a,0x62,0xc7,0x29,0x3e,0x49,0xc7 +.byte 0x23,0x26,0xfd,0x9e,0xd0,0xb0,0x4f,0xd4,0xb2,0xa9,0xa8,0x4c,0x66,0x54,0x52,0x75,0x6b,0xbf,0x63,0x76,0x49,0x3b,0xa3,0xb2,0x8f,0x87,0x9d,0xb4,0x8f,0x07,0x3c,0x8e,0xae,0xe1,0x0e,0x9a,0x86,0x90,0x58,0x73,0x8a,0xb3,0xa9,0xab,0xe6,0x27,0xd7,0x70,0x94,0x77,0x12,0xdc,0x71,0xdf,0xcf,0xba,0xdd,0x85,0xfe,0x28,0xaa,0xcd,0xcc,0xe8 +.byte 0x5f,0xd4,0xd8,0x45,0x6f,0x20,0xa8,0x5e,0x40,0x91,0x3b,0xd7,0x59,0x92,0xb8,0x7d,0x2b,0x8b,0x38,0xbd,0xfe,0x7b,0xae,0x5c,0xee,0x47,0x9b,0x20,0xb7,0xf3,0xad,0x75,0xa9,0xe1,0x96,0xc8,0xb2,0x30,0xfe,0x0c,0x36,0xa2,0x02,0xf4,0x3b,0x30,0xfd,0x91,0xfa,0x5f,0xd6,0x18,0x1a,0xcb,0xd2,0x26,0xbb,0x67,0xbe,0x1c,0x99,0xa5,0x4f,0x57 +.byte 0x40,0xb5,0xed,0xd6,0x84,0xfd,0x6b,0x00,0xc8,0xe7,0x18,0x1a,0x9f,0xf7,0x3b,0xd1,0xcc,0x12,0xeb,0x9d,0x61,0xf0,0x8d,0x64,0x08,0x93,0x61,0xc4,0x3e,0xdb,0xda,0x15,0xb1,0xd6,0x2c,0x84,0x2a,0xd8,0xd2,0xa1,0x66,0x4e,0xc9,0xd6,0xbf,0x7e,0xb6,0x22,0xfa,0x35,0x5e,0xdc,0xc0,0x31,0x02,0xb8,0x17,0x46,0x9e,0x67,0xd3,0x6a,0x8f,0x33 +.byte 0x85,0xc3,0xfe,0x36,0xbc,0x6f,0x18,0x8a,0xef,0x47,0xf1,0xf2,0x6e,0x15,0x6c,0xb1,0x4a,0x4b,0x13,0x84,0xd5,0x1b,0xf9,0xa2,0x69,0xcd,0xc7,0x49,0xce,0x36,0x8e,0xe5,0xd5,0x35,0x05,0x7c,0x7f,0xc6,0x15,0x29,0x2e,0x64,0xa6,0x91,0x9d,0xe5,0x9d,0x90,0xe7,0x26,0xec,0x75,0x19,0x58,0x57,0xf2,0x19,0x7b,0x24,0x7d,0x19,0xd3,0x72,0x69 +.byte 0xaa,0xa2,0x8c,0xe3,0x3d,0x38,0xb9,0xf0,0x5b,0xe9,0x3b,0xaa,0x96,0xef,0x2c,0xfc,0xf5,0x13,0xa6,0xa9,0x57,0x8c,0xa9,0x3a,0xc1,0xf0,0x2d,0x57,0x06,0x08,0xe3,0x9c,0xfe,0x82,0x8a,0x6a,0x79,0x5b,0xef,0x2b,0x81,0x83,0x01,0x53,0xac,0xdc,0x79,0x93,0x9b,0x23,0xd4,0xae,0x17,0x6f,0x62,0xaa,0x33,0x41,0xa6,0x31,0x1c,0x7b,0x46,0x2b +.byte 0x17,0xd3,0x6f,0x66,0x73,0x54,0xee,0xa1,0x08,0xee,0x8f,0x0f,0x0e,0x53,0xa7,0x49,0x17,0xdb,0x35,0xaf,0x4e,0x94,0x87,0x8e,0xff,0xf4,0x2b,0x29,0x01,0x45,0xa3,0x0a,0xd9,0x13,0x38,0x09,0x46,0x2c,0x56,0x97,0xd7,0xee,0x24,0x43,0xd1,0x20,0xed,0x38,0xde,0x52,0x13,0x38,0x06,0xd3,0x97,0xc7,0x48,0x8b,0x72,0x0a,0xc5,0xca,0x75,0x2c +.byte 0x04,0x9e,0xee,0x14,0xe7,0xda,0x59,0xc2,0x54,0x7a,0x72,0x55,0x35,0x00,0x93,0xb7,0xb9,0x81,0x01,0x46,0xae,0x43,0x81,0x34,0xd7,0xb4,0x7a,0xfc,0xfc,0x98,0x2b,0x29,0xe5,0x5e,0x9d,0x8e,0xef,0xd4,0x44,0x9d,0x9a,0xbe,0xdb,0x83,0x33,0x18,0x9e,0xbd,0x0f,0x34,0x4d,0xd9,0x34,0xe0,0x2c,0x1f,0x10,0xaa,0x06,0x5e,0x54,0x51,0x72,0xec +.byte 0xbf,0x6b,0x3e,0xb9,0xdd,0x37,0xc3,0xe1,0xbe,0xbe,0x1d,0x86,0xde,0x12,0xca,0x82,0xc5,0xe5,0x47,0xf8,0xbe,0xef,0xb6,0x79,0xd5,0x3c,0x69,0x0a,0x35,0x3e,0xd3,0xf8,0xaf,0x5b,0x8e,0x69,0xff,0xb2,0xf7,0x91,0xc2,0x70,0x22,0x97,0x1c,0x5c,0x56,0x25,0x5a,0xcf,0x31,0x7a,0x37,0xce,0xc7,0xf2,0x98,0xdc,0xb5,0x58,0x71,0x5a,0x60,0xe2 +.byte 0xfe,0x4f,0xf3,0xe2,0x2a,0xca,0x22,0x3e,0x07,0xc2,0xea,0x23,0xc8,0x04,0x97,0x7f,0xca,0xf6,0xf8,0x12,0x06,0x88,0x81,0xee,0xb7,0xdd,0x56,0x9e,0x0f,0x36,0xd3,0x09,0xa8,0x74,0x4d,0x8b,0x8f,0x31,0x64,0xbe,0x9d,0x7b,0x68,0x50,0xc8,0x64,0x40,0x3b,0x0c,0x04,0xb9,0x4b,0x9e,0xff,0x7e,0x5d,0xd8,0x57,0xa0,0xe5,0x6d,0xc2,0x37,0xe7 +.byte 0xd1,0xd9,0x96,0xaa,0x16,0x3e,0xa2,0x9d,0x32,0xe7,0x1e,0x11,0x6e,0x41,0xe2,0xa0,0xe1,0x6f,0x32,0x6d,0xd5,0x38,0x0c,0x27,0x27,0xa9,0xc2,0x04,0xc6,0xe7,0x8d,0x7d,0x7b,0x30,0xbe,0x54,0x6b,0x82,0x37,0x39,0x53,0x54,0xc9,0xac,0xcb,0xd1,0x31,0x79,0xd4,0x7b,0x85,0x07,0xf4,0xf4,0x5d,0x33,0xc7,0x91,0x4e,0xe5,0x13,0x78,0x09,0x42 +.byte 0x29,0x48,0xaf,0x82,0xb1,0x88,0xd4,0xd3,0x57,0x50,0x38,0xa7,0x66,0x41,0x63,0x34,0x2a,0x3c,0x5e,0x8f,0xc4,0xc1,0x00,0xa1,0x22,0xbe,0x5e,0x64,0xb0,0x60,0x9b,0x42,0x9d,0xc6,0x59,0x5c,0xcc,0x29,0x6f,0x64,0x5b,0x5c,0x0f,0xb2,0xae,0x21,0x0c,0x9a,0x6a,0x19,0xb9,0xa6,0x32,0xf8,0xdc,0x82,0xea,0xba,0x27,0xcf,0x42,0xd3,0xde,0x78 +.byte 0xfe,0x9c,0xa5,0x36,0xb6,0x24,0xb6,0x0d,0x5b,0x67,0x6c,0xf5,0x16,0xbf,0x67,0x54,0x4f,0xe4,0x83,0x29,0x75,0x42,0x9a,0xbb,0xd5,0xe7,0x01,0x1f,0xbd,0x80,0x1a,0x7a,0xb6,0xe1,0x2b,0x5d,0x71,0x93,0x00,0xad,0xf6,0x11,0x8d,0x67,0xdc,0x9c,0x8f,0xf0,0x09,0x3f,0xf9,0xa4,0xd6,0xe0,0xdd,0x95,0xea,0xfb,0x71,0x76,0x21,0x31,0x6d,0x48 +.byte 0x0a,0x27,0xa8,0xa6,0x3a,0x7f,0x42,0x6b,0x7e,0xd7,0x6e,0xd5,0x42,0x97,0xad,0x55,0xae,0x26,0x3c,0xde,0x3f,0xaf,0xfd,0x1d,0x6d,0xd3,0xeb,0x84,0xad,0x6d,0xd1,0x4a,0x85,0x1a,0xf7,0x99,0xa4,0xd0,0x48,0xfb,0xf6,0xfe,0xc6,0xea,0x61,0x77,0xe2,0x56,0x87,0xc1,0x36,0x44,0xb4,0xe3,0xd7,0xd9,0x6d,0x3e,0x1b,0xf4,0x72,0x3e,0xfe,0xa5 +.byte 0x47,0xf8,0x3f,0x1a,0x6e,0x43,0xf5,0x67,0xfe,0x90,0x96,0x9b,0x52,0xde,0xab,0xfb,0x45,0x7d,0x93,0xea,0xc3,0x40,0xe1,0x5f,0xcd,0xad,0x3b,0xe9,0x4e,0x36,0xc5,0x38,0xf4,0x66,0xde,0x4b,0xc8,0x2a,0xc3,0xa2,0x3a,0x2a,0xf1,0xd1,0xe8,0x01,0x07,0x37,0xca,0x42,0xbf,0x4f,0xd8,0xc5,0x50,0x93,0x1a,0x01,0x1d,0x51,0x41,0x6e,0xbf,0x68 +.byte 0x93,0x2e,0xdc,0x41,0x23,0xf3,0x13,0xe7,0x09,0xfa,0x39,0x6d,0xee,0x41,0x49,0xbb,0x78,0x04,0xcf,0xc9,0xbb,0x11,0xaa,0x57,0xb5,0x3e,0x4c,0x3a,0x77,0xb7,0x0b,0x38,0x34,0x48,0xd0,0x99,0x20,0x55,0xcd,0x43,0x2f,0x68,0x66,0xb0,0xe6,0x75,0x41,0xe4,0xae,0xfd,0x96,0xe8,0x01,0x4c,0x0b,0x5c,0xbc,0x4f,0x45,0x70,0x08,0x9e,0xf7,0x68 +.byte 0x9e,0xbb,0xe5,0x39,0x20,0x3f,0xbe,0xd3,0xe3,0x95,0xba,0x98,0xd5,0x12,0x2e,0x87,0xd4,0xf4,0x12,0xa2,0xcb,0xd4,0x51,0x53,0x93,0x67,0x06,0xf1,0x21,0x0e,0x92,0x8f,0x9f,0x9e,0x6c,0x16,0xa4,0x2c,0x6d,0xb0,0xd0,0xe1,0x87,0x2f,0x09,0x2c,0x8f,0x4b,0x89,0x1f,0xab,0x66,0xf1,0xcd,0x6e,0x67,0xaf,0x07,0x99,0x18,0x1b,0xda,0xc8,0x65 +.byte 0x81,0xa3,0x37,0x8a,0xad,0xe4,0x1d,0xfd,0x82,0xa0,0xf1,0xe1,0x1e,0x8d,0x0b,0xf7,0x07,0x7c,0xb3,0x10,0xc8,0x5a,0xa9,0xcc,0xc8,0xd0,0x2e,0x5a,0x71,0x45,0x4c,0x30,0xf0,0x10,0xe0,0xf6,0x0d,0x0d,0x11,0xb4,0x83,0x40,0x75,0xee,0xb9,0x24,0x04,0xe3,0xba,0xb3,0xd3,0x00,0x57,0x71,0x98,0xf0,0x4b,0x35,0x8d,0xd8,0x71,0xa0,0xcc,0xaf +.byte 0x46,0x54,0x67,0x65,0x70,0x0b,0x9c,0x61,0xf8,0xd4,0xb2,0x35,0xfd,0xcf,0x2b,0x3a,0x48,0x5b,0x03,0x86,0xd8,0x13,0x48,0x8a,0x55,0xa5,0x4d,0xef,0x42,0x41,0xbb,0x6a,0x8c,0x92,0x46,0x87,0x82,0x09,0x43,0xf3,0x94,0x1d,0x23,0x36,0xfe,0x6f,0xb8,0x9f,0xfa,0xf9,0x92,0x27,0x3c,0xcc,0x47,0x89,0x5c,0x7f,0x81,0x42,0x74,0x12,0x14,0xff +.byte 0x98,0x63,0xc0,0xfb,0x70,0xff,0xc7,0x65,0x5a,0xc3,0xb9,0x74,0x1b,0x71,0x3c,0x2c,0x47,0x79,0x07,0xb9,0x3c,0xc2,0x5f,0x48,0x4f,0xbd,0xaf,0x03,0x05,0x57,0xa9,0x84,0x33,0xc8,0x0d,0xd5,0xac,0x42,0xdb,0x4b,0x57,0x46,0x41,0xf0,0xe4,0x08,0x0d,0xf3,0x43,0x41,0xa5,0x14,0xb7,0xcd,0x64,0x23,0xc9,0xfe,0xff,0x12,0x97,0xc6,0x2f,0x8d +.byte 0x9e,0xf2,0x1d,0x33,0x26,0x3c,0x57,0x17,0xe1,0x7b,0x92,0x3f,0xb6,0xf4,0xd9,0xf8,0xe0,0x37,0xe6,0x18,0x7d,0xa7,0x8a,0x1e,0xe8,0xd8,0x56,0xa6,0x63,0xdf,0xa3,0x99,0x16,0x74,0x48,0x01,0xaf,0x95,0x55,0x40,0xce,0xa8,0x0d,0x30,0x01,0x09,0x40,0xc9,0x9d,0x3d,0xdf,0x4e,0x00,0xe0,0x2a,0xe6,0xdb,0xa2,0x79,0x42,0x57,0xd0,0x3d,0x81 +.byte 0x7f,0x67,0x3a,0xa9,0x63,0xb3,0xd4,0x60,0xa7,0xab,0x54,0x46,0xb0,0xbe,0xb0,0x83,0x72,0xec,0x47,0x0f,0xc7,0xd1,0xed,0x16,0x96,0xbc,0xa5,0x62,0x38,0xdb,0x88,0x2b,0x25,0x26,0x27,0x56,0x7f,0x46,0x39,0xe8,0x4e,0xc0,0x6c,0x62,0xf8,0x80,0x68,0x56,0x8a,0x93,0x51,0x95,0x77,0xe3,0x11,0x7b,0xaf,0xc4,0xcf,0x34,0x5a,0xd5,0x26,0xfc +.byte 0xa2,0x18,0xb0,0xc0,0xa5,0x8b,0x25,0x70,0x40,0x70,0x29,0xc3,0xda,0x80,0x3d,0xe2,0x59,0x49,0x7f,0xdd,0x62,0x6e,0x5a,0xe6,0x27,0x73,0xce,0xb6,0x32,0x37,0x5f,0x73,0x12,0x2b,0x34,0x84,0xff,0x85,0xe3,0xb5,0x93,0x41,0x47,0xc5,0xf5,0x0e,0x21,0xfb,0x24,0x0f,0xdf,0x7b,0xb4,0x29,0x7f,0x67,0x2a,0x38,0x79,0xf0,0x54,0x8a,0x94,0x68 +.byte 0xe2,0x0b,0xb0,0xd4,0xb2,0xa4,0xe4,0xfb,0x3b,0xe6,0xe7,0x59,0x41,0xbd,0xed,0x62,0xce,0x50,0x1a,0x47,0x92,0x92,0x8d,0x80,0xa6,0x05,0x7a,0xb0,0xce,0x48,0x9c,0xb0,0x64,0xea,0xe0,0xa5,0x77,0xff,0xc1,0x82,0x99,0x7b,0xfb,0x74,0x53,0xfa,0x41,0x9a,0x2c,0xb4,0xbb,0xd2,0x26,0xa1,0x80,0x68,0x17,0xaa,0x8f,0x14,0x52,0xb6,0x5d,0xe0 +.byte 0x69,0x5b,0x31,0xc5,0xf5,0x32,0x0d,0xff,0xa4,0x7b,0x28,0x38,0x9b,0x61,0xfc,0xd0,0x92,0xb8,0x6e,0x23,0x8a,0xf3,0xc7,0x85,0x11,0xb8,0xd0,0x19,0xaf,0xca,0xa7,0xb4,0xcc,0xeb,0x5d,0xf6,0xa1,0x1c,0x56,0xdf,0x78,0x7a,0xe3,0x6a,0xa4,0x07,0x71,0xce,0xf1,0xb2,0xd5,0x38,0x3c,0xfa,0xf7,0x7a,0xbf,0x4b,0x43,0xa6,0xb3,0x4d,0xff,0x82 +.byte 0x96,0x46,0xb5,0xec,0xda,0xb4,0x5e,0x35,0x78,0xeb,0x4a,0x7e,0xc5,0x7b,0x05,0xd4,0xdd,0xf7,0xb7,0xf3,0xf0,0x04,0x26,0x7e,0x5e,0xc1,0x23,0xca,0x7f,0x14,0x27,0xac,0xda,0xe7,0xdb,0x31,0x05,0x9d,0xd4,0xda,0x20,0xc7,0x6d,0x9a,0x47,0x14,0x38,0xbd,0x7c,0xfe,0xbe,0x8d,0x42,0x7c,0xba,0x36,0xe2,0x2c,0x26,0xd2,0x46,0xa5,0x6b,0xbd +.byte 0x6a,0x75,0x6b,0x52,0x8c,0x10,0xc6,0x0e,0x76,0x60,0x46,0xcc,0x93,0x54,0xc4,0x6e,0xc7,0x70,0x5b,0xb4,0x81,0x51,0x56,0x03,0x22,0x33,0x21,0xe4,0x36,0xee,0x01,0xc3,0x0d,0x17,0x23,0x15,0xae,0x79,0xbc,0xe6,0x13,0x0f,0xfc,0x77,0xa2,0x06,0xed,0x76,0x4a,0xf7,0x2d,0x99,0xc8,0x5c,0xfd,0xac,0xd0,0x11,0xe8,0xfa,0x55,0x17,0x56,0x63 +.byte 0x3e,0xd5,0x23,0x71,0xf8,0xe9,0x1f,0x62,0x95,0xae,0x7c,0x2d,0xcd,0xb8,0x6e,0xb0,0xfe,0xf3,0xd0,0xba,0x72,0x8e,0xe3,0x95,0x82,0x00,0x85,0xdb,0x25,0xe4,0xf2,0xaa,0xbc,0x8d,0xb9,0x4d,0x69,0xa4,0xcd,0x39,0x52,0x9e,0x10,0xae,0x90,0xf0,0x74,0x2f,0xc6,0x5e,0x01,0x99,0x03,0xd5,0x88,0x59,0xfd,0x1b,0x80,0x56,0x0a,0x04,0x27,0xd9 +.byte 0x04,0x51,0xb0,0xb7,0x7a,0x65,0x79,0xa8,0xe2,0x6d,0x7f,0xb2,0xba,0x37,0x40,0xa0,0xbb,0xaf,0x15,0x46,0x23,0x5f,0x22,0xd0,0x2c,0x6c,0x7a,0x58,0x76,0x6f,0xb8,0x19,0xfe,0xb5,0x3d,0xf0,0x77,0x00,0x6b,0x4c,0x83,0x36,0x90,0xe6,0x57,0x29,0x6e,0x27,0x76,0xd4,0x7d,0x9a,0x6a,0xf1,0xf6,0x1b,0x1a,0x45,0xf5,0xf6,0x2d,0xb8,0x30,0x33 +.byte 0x65,0x51,0x37,0x26,0xbc,0xf7,0xb7,0xf9,0x56,0x05,0x6b,0xd4,0xd6,0x00,0x1d,0x13,0x15,0x45,0x24,0x0d,0x28,0x69,0xc6,0x50,0xe1,0x48,0x48,0x34,0x69,0x31,0x3c,0x58,0x71,0xd6,0x4a,0xd9,0xda,0x0d,0x28,0xbd,0xe9,0x5d,0x5d,0x8a,0x6e,0x71,0xc0,0x8b,0x7a,0xba,0x17,0x8e,0x82,0xcb,0xe9,0x95,0xc4,0x43,0x37,0xd0,0x58,0xed,0xec,0x77 +.byte 0x1e,0x22,0xf0,0xf0,0x7c,0x9d,0xeb,0x64,0x30,0x7b,0xb2,0x7b,0x86,0xdb,0xef,0x92,0x79,0xd9,0x9c,0x1c,0x1a,0xf6,0x98,0x26,0x18,0xa2,0x83,0x45,0x08,0xd4,0x1d,0x84,0xd4,0x28,0x6d,0x1f,0xb5,0x1f,0xab,0x97,0xc9,0x0d,0x1f,0x83,0x34,0x18,0xa3,0x20,0x63,0x60,0x6c,0xf3,0xd8,0xb2,0x0a,0xd9,0x35,0xa6,0xce,0x44,0x50,0xc6,0xf3,0x91 +.byte 0xe3,0x95,0x89,0x49,0x99,0x32,0x1d,0xf2,0x54,0x39,0x09,0xca,0xd1,0xc4,0x7f,0xa1,0x1d,0xce,0x94,0x67,0xf1,0x88,0x04,0x29,0xcb,0x5d,0xf7,0xfa,0xcd,0x69,0x16,0x17,0x05,0xc3,0x93,0x45,0xbf,0xd3,0x74,0x63,0xdc,0xe2,0x84,0xab,0x27,0x60,0x56,0x61,0x72,0x5d,0xdf,0xb4,0xa4,0x0f,0xb0,0x21,0x82,0x9b,0x73,0x0a,0x11,0x22,0x2d,0x65 +.byte 0xa2,0xff,0x29,0x8a,0x19,0x28,0x4f,0x4f,0xdd,0x64,0x0a,0x48,0x35,0x70,0x30,0x9f,0x41,0x4d,0x0c,0x7b,0xa6,0xcb,0x63,0x83,0xd1,0x79,0xfa,0x5f,0xc9,0x9b,0x6e,0x09,0x12,0x87,0xcd,0x1e,0x39,0xd6,0x40,0x08,0x0f,0xfd,0x79,0xc8,0xcb,0x77,0x8f,0x7a,0x52,0x42,0xc0,0xb2,0xc8,0xa0,0x2a,0xff,0xbc,0x60,0x13,0xbc,0x41,0x4a,0xc6,0x8b +.byte 0x08,0xb0,0x9f,0x75,0x87,0xa1,0x75,0x42,0x4b,0x3a,0xf7,0xf7,0x84,0x39,0xa5,0x88,0x25,0x2d,0x4f,0x73,0x4e,0x30,0x27,0x92,0xea,0x93,0x70,0x5c,0xb5,0xeb,0xb0,0x10,0xda,0x0f,0xaa,0xb3,0x3f,0xb5,0x55,0x64,0x65,0xae,0xb5,0xf8,0x0a,0xe4,0x9f,0x86,0x02,0x6f,0x63,0x8a,0x0b,0x6b,0x82,0x85,0x3c,0x6a,0xdf,0x68,0x4c,0x1e,0xe9,0x5c +.byte 0xd0,0x99,0xe5,0x0c,0xfc,0x63,0xfb,0xce,0x2d,0x63,0xd5,0x7d,0x8a,0x7d,0x14,0x22,0xbd,0x71,0x5e,0x79,0x3f,0x44,0x95,0xe5,0x6c,0x58,0x94,0x84,0x41,0x65,0x52,0x94,0x50,0xec,0xd3,0x2a,0x16,0x88,0xdb,0x71,0xb9,0xe4,0xb6,0xbf,0xc5,0x3c,0x48,0x37,0x62,0x32,0x79,0xbe,0x1d,0xdb,0xc9,0x79,0x37,0x40,0x65,0x20,0x62,0x45,0xb4,0xda +.byte 0x24,0xef,0x33,0xf1,0x05,0x49,0xef,0x36,0x17,0x17,0x0f,0xdc,0x65,0xb4,0xdc,0x57,0xc3,0xc6,0x82,0x57,0x08,0xf2,0x20,0x57,0x5c,0x25,0x0e,0x46,0x75,0xa7,0x4f,0x9e,0xa4,0x00,0xf7,0x79,0xb9,0x0a,0xef,0x4f,0x50,0x79,0xf8,0x59,0x01,0xf2,0x74,0x9f,0x16,0x27,0xa5,0xc1,0x32,0xcc,0x58,0xa7,0x40,0xa1,0xa1,0x26,0x80,0x00,0xb5,0x64 +.byte 0x0a,0xd8,0x53,0x1f,0x72,0xf7,0x60,0xf7,0x0a,0xaa,0xdf,0x31,0x95,0xff,0xfc,0xb4,0xca,0xbc,0xf8,0x2a,0x33,0x20,0x04,0x16,0x1a,0xe7,0xeb,0x22,0xd1,0x25,0xa6,0x03,0xc9,0x9e,0x9e,0xca,0x7a,0x46,0x7c,0xcb,0x8a,0x63,0x4a,0xf0,0x1b,0xd0,0x34,0xc3,0xbb,0x89,0xcf,0x16,0x38,0xcb,0xe0,0xce,0xd5,0x0b,0xfd,0x4e,0xbc,0xce,0xba,0x28 +.byte 0x68,0x00,0x2a,0x31,0x52,0xe6,0xaf,0x81,0x3c,0x12,0x09,0x2f,0x11,0x0d,0x96,0xc7,0x07,0x42,0xd6,0xa4,0x2e,0xc1,0xa5,0x82,0xa5,0xbe,0xb3,0x67,0x7a,0x38,0xf0,0x5e,0xd8,0xff,0x09,0xf6,0xab,0x6b,0x5d,0xec,0x2b,0x9f,0xf4,0xe6,0xcc,0x9b,0x71,0x72,0xd1,0xcf,0x29,0x10,0xe6,0xe3,0x27,0x1c,0x41,0xc8,0x21,0xdf,0x55,0x27,0xa6,0x73 +.byte 0xb7,0x45,0xa1,0x09,0x66,0x2f,0x08,0x26,0xf1,0x50,0xe0,0xec,0x9d,0xf2,0x08,0xf3,0x49,0x56,0x50,0xe0,0xba,0x73,0x3a,0x93,0xf5,0xab,0x64,0xb6,0x50,0xf4,0xfa,0xce,0x8d,0x79,0x0b,0xad,0x73,0xf2,0x8c,0x1e,0xe4,0xdd,0x24,0x38,0x1a,0xde,0x77,0x99,0xb8,0x92,0xca,0xc0,0xc0,0xbc,0x3d,0x01,0x6f,0x93,0x3a,0x6e,0xc5,0x28,0x6e,0x24 +.byte 0x9c,0xf9,0xd9,0xcb,0x4b,0xbe,0x9e,0xda,0x0d,0x10,0xfb,0x9d,0x15,0xfe,0x28,0xdc,0xd9,0x09,0x72,0xd3,0x9f,0x6d,0x77,0x14,0x84,0x86,0x56,0x10,0xdc,0x8e,0x6a,0xa7,0x62,0xf0,0x0b,0x65,0x2c,0xa2,0xd1,0x7f,0xae,0x32,0xfa,0x9b,0x46,0x0f,0x12,0x08,0x22,0x8c,0x87,0x15,0x4b,0xc4,0x6d,0x85,0xfb,0x69,0xfe,0xce,0xfb,0xb4,0x3e,0x7b +.byte 0xcf,0x88,0xa7,0x97,0x52,0x56,0xd0,0x9f,0xb4,0x33,0xf9,0x08,0xd2,0x28,0x46,0x5e,0xc4,0xec,0x22,0xc6,0x1e,0x7b,0x34,0x99,0x0c,0x5b,0x04,0x19,0xe2,0xca,0x09,0x11,0x50,0x45,0xcc,0xb2,0x90,0x25,0x51,0x68,0xc9,0x20,0x6c,0x99,0x2e,0xdb,0x5b,0x07,0x91,0xb2,0x69,0xbf,0x3c,0x05,0x50,0xfb,0x21,0x33,0x4f,0x6e,0x18,0x19,0xd5,0xff +.byte 0xce,0x9d,0xb5,0x7f,0xd4,0xd5,0x8f,0x41,0x26,0x1f,0xa1,0x4c,0x34,0xd3,0x98,0x08,0x5d,0xb5,0x56,0xa7,0x04,0x63,0x76,0x7d,0xae,0xee,0xea,0xbf,0x69,0x8d,0xff,0xa1,0x62,0x86,0x19,0x7b,0xe5,0x08,0x7a,0xe5,0x9e,0xe5,0x44,0xca,0x24,0xde,0x00,0x43,0xc7,0xcd,0xc8,0x5b,0x21,0x00,0xb9,0x56,0x3f,0xba,0xef,0xcd,0xc4,0xe0,0xd7,0x90 +.byte 0xa7,0xe1,0xf9,0x83,0x2c,0x1d,0x8d,0xc3,0x1b,0xa2,0xab,0xcd,0x7d,0xbc,0xd1,0x2b,0xf8,0x30,0x9e,0xb6,0x95,0xe0,0xd1,0xe6,0x81,0x89,0xa7,0xda,0xf0,0x54,0xc1,0xcb,0x3a,0x85,0x85,0xb5,0x03,0xb4,0x8c,0x7d,0x98,0x16,0xa8,0x83,0x29,0xbb,0x1c,0x1d,0xe1,0x7e,0x0e,0xb5,0x04,0xba,0xbf,0x89,0x30,0x3c,0x44,0xa2,0xc5,0xbf,0xf1,0x70 +.byte 0xdb,0xf3,0x13,0xf4,0x44,0xac,0x63,0xc4,0x9c,0x93,0xa9,0x13,0x1b,0xf1,0xcc,0x16,0x66,0xdf,0x56,0x10,0x88,0x0c,0x76,0xab,0x43,0xcb,0x75,0xf8,0x4f,0x04,0x26,0x95,0x4c,0x6d,0x55,0xc8,0xbd,0xf8,0x94,0x0f,0xca,0x29,0x2b,0xcd,0xce,0x05,0x1e,0xea,0xae,0x02,0x01,0x8b,0x60,0x6a,0x6a,0x03,0x14,0xe5,0xa7,0xdf,0x9e,0x9f,0x94,0x92 +.byte 0x41,0x2c,0xf0,0x1a,0xa7,0xc2,0xc1,0xfc,0x11,0xf3,0x00,0xe1,0xfc,0x7a,0x97,0xc0,0xe1,0x81,0x90,0x3f,0xea,0x1e,0x7f,0xf8,0xb0,0xd8,0x4c,0x2d,0xdc,0x83,0xfa,0x27,0x8b,0xf2,0xef,0x3b,0x3a,0x44,0xdc,0xa5,0xa9,0xd5,0x24,0x5f,0xb1,0xdd,0x1d,0x3f,0x03,0x76,0x3b,0x92,0x0d,0xb4,0x84,0xa4,0x5b,0xef,0x9f,0x89,0x9d,0xef,0xff,0xcf +.byte 0xc2,0x28,0x3b,0x9d,0xd2,0x28,0x75,0x3e,0xdc,0x14,0x79,0x7c,0x0c,0xaa,0x6c,0xf2,0x05,0x9d,0x27,0x01,0x15,0x19,0x60,0x48,0x5a,0x7d,0x04,0x27,0x2d,0x82,0x92,0x3e,0x0b,0x62,0xd7,0x5a,0xfb,0x72,0xfb,0xdd,0x43,0xfa,0xf4,0x6f,0x16,0xd2,0x8f,0x8f,0x21,0xdc,0x81,0x48,0x7a,0xe8,0x39,0xd5,0xdf,0x54,0x0f,0xe1,0xbe,0x65,0xc9,0x49 +.byte 0x98,0xb1,0xff,0x8d,0x52,0x31,0x6a,0xcd,0x5e,0x83,0x17,0x41,0x93,0xcd,0x23,0x76,0x18,0xe9,0x82,0x71,0x15,0xb7,0xd8,0xde,0x0d,0x57,0x8b,0x90,0xe6,0xf4,0x57,0xc1,0xfd,0x3d,0x0d,0x6a,0xae,0xd1,0xd6,0x02,0x3e,0xb9,0x82,0xb2,0x82,0x80,0x48,0xa4,0x14,0x29,0x80,0x55,0x1d,0xaf,0x3e,0xf8,0x7e,0x36,0x5f,0x77,0x4c,0x73,0x6c,0x35 +.byte 0xd2,0x7c,0x36,0xca,0x2f,0xec,0x1e,0x3f,0x74,0xee,0xa5,0xe7,0x7d,0xce,0x81,0xf1,0xd5,0xc1,0xb3,0xaf,0x90,0x2c,0xc6,0x5b,0x81,0x37,0x85,0x98,0x78,0x3c,0x4f,0x2a,0x55,0xea,0x06,0x30,0x77,0x73,0x97,0x39,0x75,0xcf,0x4a,0x9b,0x55,0xb8,0x64,0x5c,0x86,0xfd,0x26,0x3e,0x8d,0x68,0xd2,0x70,0xe8,0xd7,0x99,0x57,0x6f,0x96,0x47,0x6d +.byte 0xa7,0x1a,0x0e,0x85,0xcd,0x00,0xa5,0x3e,0x11,0xec,0x76,0xd2,0x47,0x26,0x71,0xda,0x5c,0xf4,0xb1,0xd5,0x23,0xe1,0x62,0x71,0x43,0x30,0xa7,0x95,0xf6,0xc1,0xcf,0x8a,0x1b,0x75,0x53,0x39,0x6d,0x9d,0x18,0x7c,0xe3,0x48,0x27,0x33,0x1c,0x38,0x45,0xdf,0x75,0x22,0x05,0x6d,0x81,0x5d,0xfc,0xeb,0x0e,0x05,0x26,0x45,0x81,0x9f,0xce,0x0f +.byte 0xc9,0xdd,0x95,0x11,0x04,0x47,0x40,0xa4,0x07,0x3b,0x52,0x92,0xe0,0x91,0xdb,0xdd,0x3c,0x9f,0xd3,0xa1,0xb7,0xf9,0xeb,0xd6,0x6d,0x64,0x88,0xe9,0xf5,0x4e,0x98,0x8e,0x7b,0xd3,0xec,0xc0,0x22,0xe0,0xf2,0x14,0xf2,0x20,0xa2,0xa3,0xb3,0x0d,0x75,0x1a,0xbb,0xde,0x4a,0x41,0x04,0x43,0x0d,0xd9,0xd0,0x1d,0x73,0xc8,0x67,0x8e,0x58,0xe5 +.byte 0x4b,0x28,0x4d,0x8f,0x2f,0xab,0x1a,0x4a,0xfc,0x7c,0xd1,0x27,0x3e,0x4a,0x10,0x6a,0x5f,0x55,0x3a,0xf7,0x63,0x14,0xe9,0xad,0xb4,0x95,0xef,0x3d,0x5c,0xc3,0x7d,0xe4,0xb7,0x15,0xd7,0x0b,0x68,0xf0,0x23,0xa8,0xd4,0x8e,0x27,0xf6,0x55,0x11,0xbc,0xc0,0xff,0x3e,0x2c,0x24,0x59,0xb7,0xb7,0xb5,0x0b,0xd2,0x99,0xa5,0xd5,0xe2,0x24,0x33 +.byte 0x21,0xb8,0x96,0x48,0x18,0x94,0xb5,0xb2,0x50,0x5e,0x04,0x24,0x86,0x17,0x62,0x1e,0xc9,0xf8,0x22,0x6a,0xd0,0xec,0xc5,0xbc,0x90,0xf7,0x55,0xcf,0x3f,0x4c,0x7c,0xf7,0x51,0x19,0x95,0xa4,0x81,0x38,0x0c,0xa5,0x58,0x22,0xf3,0x10,0x05,0x05,0x44,0xbf,0x7e,0x2a,0xbd,0x5f,0x79,0x56,0x08,0xd5,0x68,0xea,0x85,0xa1,0xeb,0x0b,0xe1,0xd4 +.byte 0xfd,0x3a,0x38,0xd2,0x5a,0x49,0x17,0x9a,0x58,0x8f,0x52,0xf5,0xf4,0x7b,0x1f,0x58,0xa8,0xc0,0x1c,0x46,0x38,0xa6,0xe4,0x7d,0xcc,0x88,0x97,0x10,0x2b,0x5e,0x61,0xf5,0x73,0x7d,0x79,0x1b,0x53,0xf1,0xac,0xb4,0x3f,0xbd,0x9d,0xb6,0xc2,0x57,0xd5,0x84,0x4d,0x60,0xd6,0x45,0x56,0xa1,0x36,0x28,0xf5,0x74,0xc6,0x29,0xd7,0xc9,0x63,0x5e +.byte 0x7c,0x97,0x46,0xde,0x56,0x3f,0xd8,0x8e,0x75,0x29,0x87,0xe7,0xd1,0x24,0x78,0x26,0xdc,0x17,0x97,0xc9,0xf0,0x8e,0x95,0xbc,0xe5,0xfe,0xe3,0x3a,0x75,0x70,0x52,0xa9,0x31,0x97,0x79,0x3a,0xc2,0x53,0x6a,0x73,0xe2,0x76,0xf8,0x85,0xe6,0x0d,0x85,0x9b,0xfc,0x72,0x08,0x2a,0xa5,0x8e,0x42,0xb2,0x7c,0x8d,0x8b,0x28,0x4b,0xf5,0xcb,0x66 +.byte 0x80,0x46,0xb3,0x87,0xdf,0x38,0xa7,0x08,0xc8,0xea,0x85,0x0e,0x6f,0x13,0xe0,0x57,0x99,0xc6,0xb8,0xed,0x9c,0xb0,0xa9,0x89,0xd7,0xc5,0xa9,0x71,0xfd,0x8a,0x21,0xb1,0xec,0xc8,0x65,0x78,0x72,0xc6,0x77,0x69,0xd4,0x0b,0x47,0x4d,0x79,0x93,0xcf,0x2a,0x34,0xf1,0x1b,0x0e,0x6f,0x0d,0xd1,0xbb,0xe7,0xd7,0xb5,0x6f,0x57,0x01,0xd4,0xcd +.byte 0x56,0xbe,0xf0,0xd9,0xe2,0x8e,0x0e,0xb8,0x3d,0xdb,0xf6,0x97,0x39,0x0b,0x3e,0xe2,0xb2,0xa3,0x93,0x0b,0x74,0xe5,0x6a,0x21,0x04,0x29,0x5a,0x3e,0x07,0x9c,0x11,0x4e,0xfe,0x01,0x6e,0x96,0x1e,0x8f,0xe0,0xfe,0x24,0x24,0x7e,0x04,0x2f,0x65,0xf4,0xe2,0x1f,0x36,0x56,0x43,0x3a,0x6c,0xeb,0xd7,0x20,0x13,0x71,0x45,0x6a,0xe8,0xc6,0xfa +.byte 0xba,0x26,0x6f,0x7d,0x9a,0x62,0x76,0x34,0x7d,0xed,0x47,0x71,0xd1,0x0e,0x5b,0x04,0x39,0xd6,0xc0,0xe5,0xa5,0xd8,0xf5,0x73,0xf9,0xf4,0xc2,0x2a,0x54,0x25,0x67,0xdf,0x83,0xa3,0xcd,0xfd,0x1e,0x46,0x87,0x06,0x17,0x6d,0x78,0x8e,0x0c,0x7b,0x08,0x06,0x1b,0xd9,0x5d,0x3d,0x03,0x40,0xbc,0xe7,0x02,0xc4,0xe0,0xe0,0x49,0xb2,0x6c,0x6f +.byte 0x97,0x76,0x0f,0xc7,0x14,0xd8,0x7c,0xc0,0xad,0x8a,0xbb,0xbc,0x2a,0x7e,0x68,0x46,0xcd,0xa7,0x26,0x16,0x77,0x1b,0x89,0x38,0xd8,0x2a,0x69,0x43,0xc4,0xaa,0x0d,0xf6,0xd1,0x65,0xda,0x41,0x75,0x77,0xcd,0xf7,0xd2,0x38,0x9c,0xdb,0x81,0x17,0x27,0x2f,0xba,0x2e,0xa5,0xb5,0xbe,0x05,0xe8,0xdd,0x5f,0xa9,0xad,0xbe,0xb2,0x0e,0x0b,0x69 +.byte 0xb6,0x8d,0xd2,0xf2,0xde,0x76,0x32,0x26,0xd9,0x06,0x1d,0x42,0x26,0x8c,0xf7,0xca,0x4c,0xe1,0x59,0x82,0x6c,0xea,0x96,0x70,0x39,0xb8,0x0d,0xf3,0x67,0x9d,0x5e,0x94,0x99,0x77,0xf2,0x0a,0x9a,0xde,0xa5,0xd2,0xe1,0xaa,0x91,0x85,0xc7,0x0f,0x92,0x35,0x04,0xd3,0x7a,0x13,0xfa,0xf2,0x86,0x5a,0x38,0xd1,0x7f,0x10,0xd8,0x30,0x0e,0x33 +.byte 0xe3,0xa0,0x8a,0xad,0x4f,0x6c,0x24,0xdd,0x9d,0x1c,0x4e,0xff,0x4c,0xfc,0x74,0x01,0xab,0x08,0x6c,0xe6,0x4c,0x78,0x75,0xc9,0x67,0x83,0x1f,0x75,0x22,0xb0,0x7c,0x44,0xa0,0xa1,0xee,0x4e,0xf6,0x3e,0xd3,0x35,0x70,0xbe,0x36,0x1e,0x90,0xa6,0xaa,0x64,0x67,0x7f,0x52,0x84,0xd9,0x27,0xab,0x37,0x30,0x68,0x46,0xcc,0x0e,0x57,0x58,0x6f +.byte 0xdb,0xb2,0x5f,0x24,0xf7,0xeb,0x97,0xea,0x64,0xec,0x6c,0x1e,0xe1,0xc4,0x72,0xfb,0x00,0xa7,0x62,0xa0,0x59,0xb9,0x17,0x8a,0x33,0x32,0x59,0xb8,0xbe,0x84,0xd4,0x62,0xb7,0xf6,0x35,0xd4,0xf1,0x1c,0xdb,0x7e,0xa6,0xbc,0x2c,0x54,0x3c,0xf5,0x63,0x4a,0x22,0x26,0x58,0xa0,0x35,0x98,0xa7,0x32,0xb2,0xa0,0x2b,0xd5,0xfa,0x2f,0x9b,0xb4 +.byte 0xea,0xd6,0x58,0x61,0xb2,0x24,0x45,0x46,0x1e,0xac,0x79,0xa4,0xf7,0xc1,0x13,0x2f,0xf5,0x6b,0xfa,0x70,0x50,0x2b,0x83,0xee,0x7c,0xc1,0x55,0x27,0x7b,0x4f,0xa6,0x0a,0x72,0x26,0x82,0xcd,0x4d,0xe2,0xe8,0x45,0xe6,0xd7,0x39,0x7e,0xed,0x35,0xdf,0x9e,0xb1,0x41,0x55,0xa2,0x5d,0x68,0x4b,0x0b,0xd1,0x73,0x5a,0x2b,0x81,0x35,0x28,0xfc +.byte 0x64,0x08,0xd7,0xc4,0x9f,0x30,0x77,0x3d,0x9d,0x80,0x15,0x67,0x9a,0x84,0xe4,0x34,0xea,0x8c,0xf7,0x73,0x9e,0x33,0xb4,0x09,0x33,0xbd,0xd8,0x82,0x43,0x7d,0xc5,0x1f,0x0e,0x7b,0xa0,0x53,0x59,0x20,0x12,0x57,0xed,0xda,0xc7,0x19,0x8e,0x62,0xe4,0x09,0xc1,0x4b,0x20,0x32,0x9e,0x18,0x11,0x1c,0x42,0x49,0x62,0x76,0xa8,0x83,0x72,0x11 +.byte 0x45,0xe7,0xb5,0x60,0xa7,0xc0,0x07,0xbd,0xb4,0x7c,0xc6,0x5c,0x03,0x34,0xa3,0x85,0x47,0x24,0x75,0xd2,0xab,0x46,0xbb,0xc7,0x0d,0xcd,0x40,0xe2,0x5e,0x5b,0xa7,0x98,0x67,0xe4,0xe2,0x02,0xe9,0xdc,0xd7,0xc2,0xaf,0x90,0x43,0x94,0xfe,0xf3,0x53,0xc1,0x10,0x28,0xa7,0x90,0xba,0x73,0x57,0x0c,0x4d,0x6d,0xbd,0xda,0x81,0xd5,0x90,0xce +.byte 0x02,0x40,0xb3,0xf0,0xec,0x50,0x82,0xc9,0xfb,0xf1,0x22,0x6d,0xc8,0xd2,0x7b,0xed,0x0b,0x43,0x7e,0x0b,0x60,0x9b,0x69,0x9e,0x58,0x26,0xc3,0x9f,0x6b,0xd0,0x31,0xeb,0xb7,0x0a,0xf3,0x9a,0x9a,0xf5,0x72,0xcf,0x29,0xc8,0x19,0x08,0x4d,0x67,0xd5,0xa1,0x8f,0x68,0x0e,0xee,0x59,0x14,0xf8,0x86,0xc0,0x08,0x5a,0x56,0xfe,0x6a,0xb7,0xac +.byte 0x78,0x8d,0x77,0x39,0x5e,0xb1,0x01,0x4d,0x31,0x81,0x56,0xdc,0x5b,0x10,0xda,0x4d,0xd2,0xfd,0xfc,0xa3,0xe3,0xaa,0x46,0x29,0x1a,0xea,0x9c,0x47,0x1b,0xd0,0xa6,0x84,0x1f,0x71,0x1a,0xd3,0x35,0x59,0x7f,0xef,0xf7,0x81,0x39,0x7a,0x9f,0x4a,0x01,0x4d,0x46,0xcf,0xa4,0x6a,0x9c,0x7e,0x07,0x8b,0x98,0x17,0x49,0x5c,0x46,0xac,0xc8,0xfd +.byte 0x1c,0xaf,0x91,0x30,0x0c,0x36,0x63,0xef,0x69,0xd3,0x47,0xf4,0x76,0xc1,0xf7,0x40,0x03,0x98,0x9e,0xcb,0x61,0x65,0x46,0x45,0x1c,0x1b,0xfd,0x13,0x36,0xe9,0x19,0xbf,0x2b,0x59,0x51,0xe8,0x04,0x44,0xe3,0xc2,0x4b,0x66,0x78,0x69,0x66,0xa3,0x1a,0xe5,0x2a,0xad,0xf8,0xc5,0x0f,0xb7,0x3e,0xe8,0xab,0xe0,0xe4,0xd9,0xc2,0xb8,0x61,0x5b +.byte 0xef,0x6b,0x4d,0x5f,0xb8,0xdc,0x06,0xa5,0xce,0x08,0x5b,0x1f,0xf4,0x29,0x4d,0x0a,0x3e,0xb3,0x60,0xf4,0x63,0x3c,0x70,0x5d,0x02,0x9c,0x55,0x5e,0x5e,0xd1,0x9b,0xed,0x20,0x75,0x54,0xa1,0x8e,0xae,0xce,0x5a,0xb2,0x2d,0xe4,0xc3,0x9b,0x7d,0x72,0xce,0x7c,0x0c,0xa9,0x99,0xa4,0x12,0xaa,0x31,0xe9,0x61,0x47,0x8a,0x41,0x93,0xd5,0x69 +.byte 0xc5,0xf3,0x9f,0xf4,0x97,0x69,0x64,0x6f,0xf9,0x5b,0xbf,0x58,0xf6,0x3b,0x3e,0xd6,0x93,0x94,0x89,0xcc,0xc0,0x25,0x7d,0xf8,0x40,0x9e,0xb2,0xc8,0x75,0x9d,0x4d,0xf0,0x5f,0xa5,0x3d,0x38,0x67,0xea,0x8d,0x1b,0x60,0x5e,0xfe,0xa8,0x26,0xb9,0xed,0xc0,0xe9,0xc8,0xec,0xb1,0x77,0x0f,0xf2,0xaa,0x77,0x2a,0xcd,0xa8,0x70,0xb7,0xda,0x60 +.byte 0x49,0xb3,0x01,0x95,0xc8,0xac,0x71,0x6a,0xd0,0x49,0x67,0x2a,0x04,0xfc,0x55,0x38,0x08,0x37,0xd9,0x21,0x37,0xce,0x41,0xaf,0x7c,0x33,0xdd,0xcd,0xe0,0x92,0x27,0x38,0x63,0x77,0xea,0x86,0x04,0x99,0x4e,0x61,0x8b,0x8f,0xfe,0x4e,0xc1,0x16,0x6c,0x89,0xac,0x1f,0x0b,0x67,0x75,0x49,0xf4,0xdb,0x6d,0xd3,0xb8,0x1d,0x9c,0xb2,0xe6,0x98 +.byte 0x81,0xae,0x3f,0xe0,0xdd,0xda,0xfa,0x4c,0x8b,0x30,0x18,0x88,0xa1,0x1d,0xa1,0x18,0xb8,0x28,0xc2,0x04,0x6a,0x80,0x02,0x5a,0xe6,0x04,0x85,0xfa,0x54,0x38,0x45,0x64,0xe1,0x50,0x4a,0x38,0x4c,0x85,0xf7,0x00,0x0c,0xd3,0x16,0xcb,0xfa,0x38,0xb4,0x1b,0x6a,0x95,0x3d,0xc3,0x24,0x79,0x0e,0x3e,0x81,0xe6,0xc3,0xd9,0xdb,0x05,0x19,0x7c +.byte 0xb4,0x4d,0xef,0x71,0x22,0x53,0x97,0x8a,0xc9,0xe3,0x69,0x20,0x5b,0x83,0xb1,0x44,0xd7,0xd1,0x1e,0x87,0xa7,0xbf,0xe4,0x84,0x68,0x9c,0x77,0xfe,0x83,0xdb,0x7a,0x53,0xa8,0x53,0x1f,0xc7,0xd1,0x6a,0x26,0x87,0x71,0x06,0x23,0xa7,0xe0,0x18,0x5d,0xfa,0x8c,0xa7,0x24,0xee,0xf6,0x74,0xab,0x17,0xd3,0x46,0x33,0xe9,0xc3,0xcd,0xa6,0xaf +.byte 0xcf,0xa1,0x60,0x75,0x7b,0x77,0xc3,0x58,0xa2,0xe8,0x87,0x7b,0x4b,0x57,0xb1,0x96,0xc1,0x91,0x6d,0xbf,0x71,0xb3,0xbf,0xe2,0x62,0x86,0x72,0xa9,0x01,0x64,0x62,0x32,0x33,0xc8,0xa4,0x26,0x7d,0xfa,0x0d,0xd4,0xd8,0xc3,0xaa,0xc0,0xc8,0x7c,0x51,0xe8,0x10,0x08,0x6f,0xf6,0xc1,0x46,0x89,0xc4,0xd2,0x00,0x1d,0x14,0x05,0x89,0x64,0x52 +.byte 0xcd,0x1f,0x97,0x0b,0x1d,0x94,0xbe,0x9d,0xa0,0x6b,0x03,0x9b,0x83,0x87,0x38,0x0f,0x65,0xdd,0x6a,0xaf,0xf1,0x22,0x74,0x7e,0x11,0xa0,0xdf,0x1e,0x95,0xef,0x1a,0xdc,0x8b,0x29,0x4a,0xbe,0xfd,0x2f,0xc7,0x48,0x94,0x3f,0xb9,0x8c,0x8e,0xe1,0x0c,0x54,0xa6,0x2f,0xa5,0x2b,0x71,0xdd,0x16,0x68,0x91,0x35,0xd0,0x22,0x48,0x1f,0xf2,0xe2 +.byte 0xe8,0x57,0x83,0xd7,0x49,0x43,0xfd,0xf9,0x77,0xb5,0xfa,0x70,0x19,0xeb,0xae,0xf6,0x31,0xfe,0xd6,0x81,0x6c,0xcc,0x14,0x28,0xa6,0x9f,0x74,0x56,0xc5,0xf6,0x51,0xba,0xc8,0xbd,0x32,0x80,0x5f,0xdb,0x28,0x3f,0x4a,0x55,0x01,0xe1,0x39,0xf5,0x9c,0xda,0xb3,0x42,0xee,0x43,0x17,0xc3,0xc7,0xf5,0xd1,0xda,0xd2,0x2e,0x56,0xcf,0x77,0x0e +.byte 0xdd,0x72,0xcf,0xe5,0xab,0xfb,0xd6,0xa2,0x6c,0x03,0xa6,0x77,0x25,0xf8,0x2a,0x8c,0xfa,0x6f,0x45,0x79,0x59,0x84,0x92,0xd1,0x00,0x58,0xc7,0xb8,0x95,0x4d,0xc8,0x49,0xad,0xe0,0x1e,0x64,0x47,0x00,0xfb,0x93,0x7f,0x3e,0xf1,0x65,0x70,0x47,0x64,0xbb,0x36,0x63,0xe3,0x09,0xcb,0xdb,0x5a,0xd1,0x72,0x83,0xfd,0x15,0x91,0xa2,0x03,0x81 +.byte 0x04,0x98,0x45,0x0f,0x7f,0x23,0x48,0x6c,0xb1,0x2d,0xd0,0x2c,0x61,0x52,0x1b,0x4a,0x52,0x08,0x92,0xe1,0x7a,0xf1,0x8c,0x1f,0x1f,0xdf,0x1c,0xfd,0xd9,0x46,0x99,0x71,0x05,0x58,0x71,0x82,0x5c,0x05,0xa0,0xb2,0x6a,0x50,0xd2,0x6e,0x35,0xf4,0x6c,0xfb,0x50,0x99,0xb3,0xc1,0x2b,0x05,0xaf,0x02,0xe5,0x18,0xfa,0x74,0x09,0xcc,0xa5,0x2c +.byte 0x26,0xfd,0xc5,0xe7,0x2c,0x96,0x0f,0xa4,0x7c,0x88,0xc6,0x7f,0xf9,0x74,0x9d,0x1c,0xe5,0xd2,0x27,0xf0,0xae,0x5b,0x4c,0xbf,0x0a,0x99,0x2e,0xaa,0x54,0xba,0x0d,0x75,0xd9,0x48,0x76,0xf3,0xe9,0xd9,0x01,0xbe,0xaa,0x97,0x09,0xfe,0xb2,0x4a,0xcb,0x55,0xd0,0xe1,0x58,0xec,0x31,0x0c,0xd9,0xdf,0xd9,0x01,0xf9,0x3c,0x28,0x40,0x91,0xbb +.byte 0x4d,0x2d,0x88,0x60,0x31,0xc7,0xc9,0x1d,0xaf,0x22,0x44,0x21,0x05,0x06,0xdd,0x07,0x60,0x29,0x7d,0x49,0x30,0x9d,0x35,0x1d,0x9f,0x37,0xbd,0x32,0xb2,0x21,0xa6,0x4f,0x89,0xd8,0xe6,0x85,0x44,0xcf,0x13,0x12,0x4f,0x5f,0x50,0x71,0x01,0x39,0xff,0x6e,0xa0,0x07,0xff,0xf0,0xa6,0x3b,0x39,0x59,0x17,0xae,0x93,0xb2,0x86,0xcc,0xe5,0x59 +.byte 0x5a,0xf2,0x82,0x62,0xc6,0x8d,0x13,0x2f,0x6b,0x92,0x28,0xbe,0xd1,0xc0,0xf6,0xc9,0xe1,0xd6,0x98,0x94,0x65,0xd4,0x2a,0xdb,0x37,0xb1,0xd3,0x83,0xf2,0xaa,0xa5,0x00,0xf9,0x08,0xe6,0x22,0x38,0x30,0xb6,0x49,0x8d,0x9d,0x1c,0xa4,0xf7,0xdb,0x3c,0x6f,0x75,0x08,0xa0,0xda,0xe9,0xc0,0x01,0x54,0x09,0x68,0xc6,0x7c,0x5b,0x4d,0x88,0x71 +.byte 0xa7,0x2f,0xb3,0x50,0x18,0x4a,0xfb,0x55,0x29,0xf2,0x56,0x1d,0x4c,0x12,0x22,0x1c,0x54,0xd2,0x63,0x67,0xfa,0xe9,0x5b,0x74,0x3b,0x38,0xf6,0xa0,0x85,0x63,0x1c,0x41,0x6a,0x6d,0x71,0x1d,0xb1,0x39,0x28,0x88,0x96,0x9b,0x9c,0x50,0x9e,0x57,0x4e,0xf5,0xa7,0xf4,0x17,0xc6,0xca,0x42,0x84,0x83,0xca,0xa4,0x28,0x72,0x08,0x74,0x62,0xe1 +.byte 0xf0,0x73,0xc5,0x86,0x6c,0x76,0x9d,0xd3,0xa6,0xb8,0x5d,0x73,0x1b,0x02,0xe2,0x69,0x8b,0x59,0xd6,0x6a,0x53,0xe9,0x13,0x88,0x41,0x95,0xe9,0x97,0x5f,0x07,0x62,0xa5,0x21,0x97,0x7e,0x5e,0xc2,0x2c,0xc7,0xaf,0x0a,0xdb,0x9e,0x4f,0x44,0x4b,0xd6,0x3d,0xc0,0x24,0x38,0x50,0x47,0x98,0xa3,0xfc,0xda,0xfc,0xae,0x0e,0x2b,0x9b,0x53,0x0f +.byte 0x6b,0xb1,0x2f,0xd5,0xd7,0x68,0xc9,0xab,0xb9,0xff,0x7f,0x54,0xd6,0x2f,0x88,0xbc,0x5e,0x6a,0x22,0x49,0x0f,0x98,0xbe,0x1f,0xef,0x3e,0xcc,0xa2,0x72,0x6b,0x16,0xbe,0xe8,0x5f,0x0e,0x36,0xa2,0x68,0xe0,0x65,0xd9,0x7c,0xdc,0x8c,0x6a,0x66,0xf0,0x6a,0xfc,0x2b,0x85,0x28,0x2a,0x1a,0xfc,0x92,0x64,0x3d,0x38,0x5b,0xc1,0x0c,0x68,0x45 +.byte 0x94,0x85,0x58,0x82,0x99,0xfc,0x20,0xdd,0x62,0xae,0xed,0x35,0x7c,0x02,0x16,0x9b,0x00,0x8a,0x44,0x02,0x80,0x00,0xca,0x7d,0x95,0x03,0x5d,0xa6,0xec,0xe1,0x0c,0x50,0x34,0x61,0x55,0xee,0xb5,0x11,0xff,0xc3,0xaa,0xf2,0xbc,0xa3,0xa9,0xc7,0x6b,0x16,0xab,0x56,0x7b,0x55,0x54,0x95,0x88,0x15,0x15,0x6a,0x2c,0x97,0xd7,0x7c,0x26,0x65 +.byte 0xaf,0x8d,0xd1,0x05,0x57,0xb2,0x63,0xd1,0x22,0xf7,0x7d,0x77,0x54,0x6c,0x87,0x03,0x1f,0x0e,0x2b,0xae,0xa6,0xa4,0xb5,0xd6,0x95,0x34,0xd0,0x62,0x4e,0xfb,0xcb,0xee,0x01,0xc1,0xf7,0x36,0x94,0xa6,0x54,0x94,0x90,0x0e,0x45,0x9c,0x95,0x89,0x96,0x88,0x32,0x90,0x27,0x48,0xc5,0x96,0xf0,0x7e,0x7f,0x69,0x99,0xdf,0x7b,0xfb,0x2b,0x7b +.byte 0x38,0x10,0x6b,0xd1,0x1a,0xfb,0xf2,0xcd,0x2d,0x8b,0x47,0x21,0xca,0x92,0x64,0x28,0xd1,0x53,0x1d,0xed,0xa7,0x7d,0xa4,0x88,0xab,0xd0,0xfe,0x9b,0x2b,0xf8,0x48,0x94,0x8d,0xd5,0xfa,0x5c,0xef,0x12,0x43,0xdf,0xb6,0x5b,0x83,0x43,0xf3,0xf7,0x1d,0x6f,0x3e,0x44,0xe6,0x20,0xd8,0xbc,0x4a,0x9a,0xed,0xa0,0x79,0x66,0x8d,0x23,0xca,0x35 +.byte 0x15,0x87,0x11,0x50,0xa4,0x40,0x6e,0xfa,0xf7,0xaf,0xa2,0xb7,0x3b,0x9b,0x8b,0x44,0x19,0x90,0xb3,0x47,0x92,0x08,0x2f,0x0c,0xe2,0x95,0x5d,0x80,0xb5,0x93,0x5e,0x1c,0xb5,0xce,0x52,0x0b,0x12,0xc1,0x72,0x2e,0x66,0x8c,0xd1,0x13,0x94,0x36,0xf7,0x17,0xe3,0xad,0x69,0xc9,0x2d,0x21,0x64,0xcd,0x8f,0x2d,0x8f,0x0c,0x85,0xa5,0x23,0x8b +.byte 0x6c,0x00,0x13,0xf7,0x6a,0xb4,0x68,0x1a,0xcc,0xc4,0x03,0x5b,0xd6,0x7b,0x5b,0x34,0x90,0x34,0x3e,0x0a,0x07,0x19,0x81,0x99,0xe9,0xd2,0xa8,0x73,0x2c,0xa2,0xcf,0xdf,0x29,0x69,0xbf,0xec,0xdd,0xa5,0xd3,0x16,0xb0,0xd2,0x9c,0x2f,0xeb,0x70,0x50,0x20,0x3c,0x22,0x1a,0x5b,0x55,0x79,0x76,0x0f,0x1f,0xd0,0x34,0xa9,0x55,0xad,0x75,0x75 +.byte 0x7f,0xa7,0x9b,0xa7,0x3d,0x5d,0x73,0xce,0x91,0xf6,0x9b,0xcd,0xa5,0xee,0x48,0x44,0xba,0xd5,0xad,0xbe,0x1e,0xc6,0xd2,0x8b,0x05,0x21,0x20,0xb5,0x7d,0x78,0x88,0x10,0x20,0x85,0x90,0x8f,0x47,0x74,0x68,0xe6,0x32,0x2a,0x13,0x7a,0xb3,0x5d,0xfe,0x24,0x97,0xd1,0x65,0x55,0x60,0xb3,0x88,0xfb,0x59,0xc9,0x29,0x70,0xf1,0x45,0xbd,0xbe +.byte 0x4d,0x01,0x4e,0x5e,0x5f,0x99,0x52,0xf8,0x5f,0x38,0xcf,0xa8,0x5d,0x69,0x54,0x87,0x72,0x41,0xca,0xc4,0x63,0xc1,0x52,0x58,0x66,0x8b,0xda,0x8b,0x61,0xd1,0xab,0x7d,0x8d,0xfe,0x51,0x8d,0xf6,0xd0,0x21,0x4d,0x0b,0xc5,0xea,0x74,0xcd,0x21,0x93,0x4a,0x91,0xe5,0x3f,0xce,0x35,0x3b,0x3f,0xc0,0xab,0xa4,0x23,0x76,0xd1,0x8c,0xa7,0xbe +.byte 0x15,0xab,0x8e,0xd7,0x0d,0x86,0xac,0xc3,0x06,0xff,0x33,0xf2,0x41,0x6f,0x69,0x58,0x49,0xd1,0x73,0xcf,0x5e,0x4e,0x1e,0x46,0x12,0xfa,0x30,0x0d,0x4b,0xb1,0xfb,0xc6,0xe6,0x0d,0xcd,0x8d,0xca,0x34,0x28,0x5a,0xed,0x85,0x55,0x31,0xee,0xba,0xbf,0xa4,0x6f,0x9c,0x7d,0xeb,0x4b,0x1b,0x73,0xea,0x4e,0xb9,0x62,0x5d,0xac,0xe3,0x53,0xdf +.byte 0x27,0x87,0x2f,0x39,0xca,0x5b,0xd6,0x72,0xcf,0x95,0xc6,0x2a,0xa5,0x3f,0x57,0xfd,0xdc,0xa9,0x4a,0x86,0x0f,0xcd,0xd5,0xea,0xfe,0x85,0xeb,0x9b,0x84,0xc6,0xf7,0xba,0xc2,0x37,0xbc,0x18,0x85,0x49,0xa6,0x7f,0xd9,0x3e,0xfb,0xf0,0x0c,0x39,0xe3,0x1c,0x06,0xfe,0xb6,0x49,0xa3,0x8b,0x72,0x2b,0x39,0xa1,0x48,0xfd,0x1f,0xfe,0xa4,0xf7 +.byte 0xcc,0x7a,0xef,0x64,0xa0,0x0d,0xeb,0x78,0x71,0x8c,0xd6,0x59,0x7c,0xf4,0xaa,0x81,0x7a,0x89,0xe6,0x22,0xc9,0x57,0xe8,0x13,0x9c,0xca,0xc4,0x6f,0xb5,0xbf,0x08,0x31,0x93,0x56,0x2a,0x82,0x00,0x95,0xdc,0x4b,0xfd,0x9b,0xc7,0x8b,0x31,0x72,0xa0,0xff,0xbe,0xb4,0xd6,0x07,0x16,0x0a,0x4a,0x0a,0x96,0x02,0x83,0x53,0x2a,0x4d,0x33,0x72 +.byte 0x1f,0x20,0x20,0xc3,0x63,0xee,0x4e,0x05,0x90,0x7d,0x21,0xd0,0xf1,0xda,0xde,0x0d,0x4a,0x59,0xb9,0xca,0x81,0xe3,0x1f,0x83,0x19,0xdc,0x09,0x03,0x5f,0xaa,0xee,0xbc,0x5a,0xfa,0xc6,0x4d,0x3d,0xfe,0xfe,0xf3,0xdb,0xc3,0x77,0x31,0x74,0xb4,0x94,0xb5,0x09,0xb1,0xb5,0x13,0x47,0x2e,0x4f,0x3b,0x38,0x83,0xf5,0xfc,0xe9,0xcc,0x45,0xea +.byte 0x5b,0x88,0x21,0xba,0x53,0xc5,0xf6,0xd4,0x63,0xc5,0x37,0x1d,0xa1,0x42,0x2e,0x9c,0x9a,0x50,0x2c,0xfe,0xdb,0xf6,0x31,0x36,0x5f,0x9d,0xed,0x63,0x42,0x20,0xdd,0x27,0xe5,0x34,0x3c,0x0f,0x06,0x8b,0x8f,0x32,0xb6,0x47,0xce,0x07,0xcb,0x27,0xc1,0xb7,0xfe,0xb2,0x69,0x81,0x79,0x20,0xd7,0x47,0xbb,0xab,0x61,0x5f,0x09,0x99,0xdf,0x9f +.byte 0xde,0x59,0x33,0x75,0xd1,0xcc,0xfe,0x92,0x79,0x1f,0x2d,0x59,0x88,0xef,0x4b,0x80,0x0c,0x38,0xa3,0xb1,0xef,0xae,0x53,0x84,0x2f,0xbd,0xd3,0x0c,0xcf,0xd5,0xf7,0xb7,0x6f,0xa7,0x22,0x1f,0xf1,0x56,0x76,0x0c,0x78,0x52,0xa3,0xc0,0xd0,0x2f,0xbc,0xdf,0x29,0x0d,0xa8,0x54,0x0d,0x2b,0x65,0x1b,0x7f,0xeb,0x21,0x22,0xaf,0x10,0xc1,0xd6 +.byte 0x30,0xa8,0x2f,0xb1,0x25,0xbf,0xdc,0xee,0xe9,0x35,0x40,0x69,0xa0,0xa0,0x27,0x85,0x2e,0x18,0xc1,0x36,0x24,0xc5,0x96,0x9a,0x85,0x3f,0xbb,0xfd,0xf5,0x02,0xa2,0xa1,0x92,0x3c,0x16,0x48,0x9f,0xc5,0x00,0x7c,0x7b,0xaf,0x31,0xba,0x68,0x0e,0x58,0x88,0xf4,0x10,0xb9,0xa6,0xe0,0x46,0x2a,0xb8,0x8d,0xc7,0x8e,0xad,0x7c,0xec,0xd2,0x74 +.byte 0x92,0xfe,0x1b,0xd0,0x73,0x79,0x0b,0x4e,0xcc,0x2d,0x5c,0xe7,0x80,0x2d,0x21,0x1c,0x97,0xfc,0x2a,0xc9,0x9c,0x07,0x10,0x64,0x8b,0xf7,0xf5,0x1c,0x54,0xb6,0x6c,0x73,0x1c,0x50,0xd3,0x1a,0x2a,0x63,0xcb,0xba,0xd3,0x95,0xe2,0xa6,0xc3,0xca,0x45,0xfd,0x5e,0x1b,0xbb,0x6b,0x4d,0xb3,0xf7,0xfd,0xaa,0xf9,0x73,0xb8,0x74,0x4d,0x36,0x7e +.byte 0xcc,0xaa,0x1e,0xf3,0x20,0x68,0xa5,0x0c,0x03,0xe3,0xbe,0xee,0x82,0x03,0x8d,0x10,0xa6,0xf6,0x6c,0x73,0xc2,0x9d,0x74,0xba,0x57,0x17,0xd7,0xfa,0x85,0xf5,0x1e,0x3d,0xf8,0xc7,0x80,0xef,0xcd,0xf0,0xf4,0x46,0xfc,0x07,0xb5,0xc4,0x5f,0xd2,0x04,0x6a,0x90,0xf5,0x76,0xb6,0xf9,0x73,0x22,0xa6,0x09,0x2f,0xbf,0xb5,0x93,0x9a,0x95,0x05 +.byte 0x95,0xaa,0xf9,0x8c,0x71,0xd6,0xc6,0xd9,0x72,0x50,0xf6,0x58,0x77,0x09,0x47,0x97,0x21,0x42,0xf0,0x30,0x5c,0x3c,0xec,0x60,0x67,0xdf,0x5e,0xd2,0xed,0x0f,0xab,0x25,0x11,0xbb,0xf8,0x34,0x1e,0xbd,0x7f,0xc6,0x52,0x19,0xf5,0x53,0x28,0x46,0x75,0x93,0xce,0xc2,0x0b,0xdf,0xfd,0xa5,0xf1,0xb0,0xa2,0x0b,0x97,0xb5,0x76,0xb4,0x8a,0x2b +.byte 0x82,0x55,0x23,0x29,0xc2,0xd3,0x32,0x94,0x2f,0xf0,0xe6,0x77,0x2c,0xe4,0x6a,0x7f,0xd7,0xee,0x84,0xfb,0xba,0xb8,0x4b,0xae,0x13,0x34,0xbd,0xa8,0x12,0x7a,0x3c,0x28,0x40,0x74,0x5d,0x9a,0x11,0x1a,0xe9,0x74,0x31,0x28,0x3d,0x3d,0x64,0xb7,0x54,0xa0,0x51,0x0d,0xed,0x97,0x94,0x56,0x7a,0x48,0x8e,0x36,0xc9,0xae,0x5f,0xc6,0x79,0x45 +.byte 0x4f,0x07,0xdd,0x13,0x52,0x8b,0xfc,0x3b,0x73,0x44,0x68,0x64,0x51,0x0d,0x95,0x6f,0x0f,0x94,0xba,0xf8,0x40,0x64,0x51,0x43,0x49,0x63,0xc1,0xbd,0xf3,0x39,0x7f,0x6e,0x6f,0x45,0xeb,0xd2,0x33,0x44,0x2d,0x10,0xb4,0x68,0xcb,0xcb,0x8c,0x84,0xc5,0xd4,0x63,0x1d,0x23,0x85,0x30,0x4d,0x6c,0xfc,0xc9,0xa4,0x8c,0xd2,0x42,0x69,0x2f,0x17 +.byte 0x86,0xf0,0x17,0xd0,0xb2,0xaa,0xfd,0x62,0xcb,0xb4,0xfd,0xba,0x29,0xf8,0x85,0x45,0x84,0x9d,0xae,0xf8,0x9c,0x8f,0x64,0xd5,0xb8,0xb6,0xa9,0x64,0xf9,0x39,0x86,0x68,0x29,0xac,0x32,0x87,0x84,0x6c,0xb0,0x09,0xd2,0xdd,0xf2,0xec,0xa1,0x3a,0xfd,0x11,0x37,0x54,0x67,0x29,0x62,0x25,0x62,0xe8,0x6a,0x4b,0x5e,0xde,0x9a,0xf0,0x97,0x73 +.byte 0x66,0x69,0x2a,0x21,0xbe,0x95,0x86,0xca,0xf9,0x17,0xe9,0x4b,0x23,0x83,0x1e,0x8c,0x37,0x47,0x91,0x03,0x3f,0x9f,0xb8,0x60,0x2c,0xdd,0x82,0xbd,0x2a,0xc3,0xe7,0x30,0x8f,0x91,0x2b,0xa4,0x23,0x01,0x03,0xb2,0x8b,0xbd,0xd2,0x1d,0x16,0xf7,0x6a,0x86,0xa8,0xe4,0x54,0x6f,0x9c,0x47,0xa5,0x0f,0xbe,0x94,0x56,0xfa,0x18,0x69,0xbe,0x92 +.byte 0xe9,0xf8,0x24,0x4d,0x65,0x42,0x81,0x1f,0x85,0x52,0xb7,0xc9,0x49,0xde,0xa5,0x4c,0x8f,0x0d,0x5f,0x12,0x68,0x68,0x35,0xce,0x29,0x22,0x5c,0x55,0x3e,0xbd,0xce,0xf2,0x2a,0xec,0x7e,0xe1,0x29,0x0a,0x88,0xf3,0x5e,0xeb,0x27,0xe5,0x52,0xee,0x72,0x37,0xba,0xff,0x82,0x97,0xa9,0x5d,0x77,0x6f,0xb9,0xc3,0xa7,0x73,0xba,0x7f,0x2f,0x7a +.byte 0x19,0x32,0x87,0x56,0xa2,0x89,0xb2,0xb4,0x48,0xbe,0x2e,0x30,0x89,0x0a,0x8f,0x75,0x25,0x25,0x5c,0x46,0xe8,0x02,0x45,0xcb,0x03,0xd1,0xa3,0xeb,0x70,0x71,0x08,0x1c,0x46,0xf1,0x2c,0x43,0xe2,0x44,0x30,0x6a,0x61,0x31,0x45,0x3e,0xbb,0x47,0x33,0x24,0x25,0x13,0xeb,0xf7,0x24,0x66,0x15,0x4c,0xf3,0x07,0x2f,0xff,0xdc,0x37,0x0f,0x71 +.byte 0x85,0xc8,0x56,0xa7,0x2a,0x22,0x87,0x8b,0xae,0x35,0x31,0x29,0x96,0xf0,0x81,0xfb,0x2c,0xbf,0x44,0x69,0x69,0x9a,0x77,0xfd,0xc0,0x2b,0x42,0x16,0x67,0xd6,0xbd,0xd0,0xf1,0xb9,0x40,0x8f,0xd2,0x9a,0x1b,0x2c,0x64,0x78,0x6b,0xda,0x37,0x26,0xae,0x4c,0xee,0x36,0xaf,0x84,0x61,0xe4,0x93,0x22,0x64,0xaf,0xee,0x6d,0x69,0x5c,0xe5,0x85 +.byte 0xd8,0xcc,0xcf,0xf3,0xe8,0x05,0xcd,0xd2,0x09,0x66,0xaf,0xbb,0xc4,0x79,0xb2,0xa7,0xa5,0x09,0xd9,0xf5,0xa2,0x83,0x4f,0xd5,0xf5,0xf3,0x7d,0x7a,0xab,0x94,0x83,0xb3,0x15,0xfb,0x0d,0x1a,0x1d,0x77,0xc5,0x63,0x0b,0x54,0xde,0xa8,0x0d,0xc4,0x16,0xe3,0x89,0xeb,0xa3,0x1b,0xd4,0x77,0x13,0xe3,0x55,0x98,0x15,0xab,0x3b,0x32,0xc8,0xd4 +.byte 0x0c,0x91,0x80,0x57,0xf7,0x1e,0x24,0xd0,0x56,0x78,0x29,0xd2,0x03,0xe7,0xc4,0xd2,0x09,0xca,0xee,0x9b,0x60,0x5f,0xa1,0xfd,0xaa,0x85,0x4b,0x68,0x35,0xa4,0x3b,0xef,0x29,0xb8,0x49,0x85,0xee,0xbb,0x39,0xc0,0xc6,0x99,0x97,0xc6,0x86,0x6c,0x27,0xf9,0x1a,0x19,0x6e,0x7c,0xae,0x75,0x41,0x0d,0x08,0x1e,0xf0,0xb4,0xc3,0x9e,0xdb,0x40 +.byte 0x86,0x94,0x9d,0x90,0x09,0x3f,0xdc,0xb9,0xfc,0x59,0x41,0xc5,0x5b,0x89,0x97,0x49,0x4a,0x1a,0x06,0x68,0x83,0xd8,0x7e,0x09,0x51,0xe1,0x86,0xd8,0x88,0xbe,0x8a,0x36,0x48,0xb3,0x83,0x7b,0x57,0xdd,0x8f,0x18,0x67,0x4a,0x7d,0x68,0xab,0xb9,0x05,0xf0,0xe4,0x27,0x4e,0x33,0x44,0xa7,0x13,0x04,0x94,0xc5,0x57,0xaf,0x36,0x03,0xe8,0x09 +.byte 0x36,0x5b,0xe8,0x92,0xad,0x0a,0x79,0x02,0x24,0x43,0x62,0xc7,0xa5,0xce,0x7c,0xac,0x6d,0x0a,0xf2,0x83,0x33,0x05,0x3b,0x6f,0x9d,0xda,0x96,0x9f,0x8b,0x79,0x3e,0x6c,0xd6,0xba,0x7f,0xea,0x84,0xd8,0x23,0xb6,0x92,0xc3,0x9c,0x7f,0x0d,0xcb,0x7b,0x9f,0xbd,0xc2,0xf5,0x6f,0x71,0x67,0x5f,0x0b,0xd1,0x73,0xb5,0x8c,0x46,0x07,0xcd,0xd8 +.byte 0xee,0x28,0xcf,0x8f,0x8e,0x5c,0xde,0x14,0x78,0xc7,0x60,0xd5,0xf4,0x49,0x97,0x46,0x5f,0x49,0x4a,0xb4,0x8f,0xc9,0xd1,0x52,0x34,0x01,0x29,0xa1,0x46,0x55,0xf8,0x29,0x53,0xbb,0x32,0x1e,0x4b,0x89,0x96,0x53,0x0b,0xf2,0x16,0xf9,0xa7,0x70,0x93,0x59,0x78,0xc0,0x77,0x78,0x9f,0x6c,0xb3,0x0e,0x3f,0x6f,0x40,0x09,0x1d,0xd6,0x66,0x4e +.byte 0xe8,0xb0,0xa1,0x14,0x65,0xc8,0xc7,0x3f,0xd2,0xf0,0x1f,0xfd,0x51,0xe0,0x29,0xd6,0x39,0x26,0x60,0xfe,0x62,0xc2,0xe4,0x45,0x6d,0x01,0xdb,0xd3,0x7c,0xdf,0x48,0x10,0x2f,0xf2,0x8e,0x6c,0xc6,0x58,0xc3,0x7d,0x26,0xb1,0x9d,0x52,0x02,0x2a,0x5f,0x2b,0x57,0xca,0x84,0x9d,0x74,0x31,0x01,0x0f,0xda,0x3d,0x7c,0xbb,0xdc,0x71,0x82,0x8b +.byte 0x42,0xaf,0x49,0x9e,0x2c,0xe8,0xdc,0xa1,0xfb,0x23,0x6d,0xdb,0xdc,0x36,0x01,0xc9,0xb3,0x93,0xd4,0x2e,0x8b,0xd1,0xe4,0xed,0x1b,0xd0,0x4c,0xeb,0xaf,0x96,0x57,0xde,0xee,0x90,0xf4,0xa7,0x58,0x46,0x8a,0xd4,0xa9,0x44,0xe0,0xb3,0x13,0x96,0xb2,0x8a,0xb0,0xd3,0xbe,0x71,0x38,0xb7,0x35,0xa9,0xa8,0x48,0x37,0xa3,0x11,0x0e,0x61,0x36 +.byte 0x6c,0xaf,0x6c,0xf2,0x3f,0xd6,0x55,0xb3,0xa5,0xe0,0xaf,0x18,0x6a,0xf5,0x78,0xb5,0x7c,0xc7,0x48,0x24,0x6c,0xea,0x1e,0x7f,0x52,0xb4,0xe8,0x72,0x46,0xd2,0xbd,0x1c,0x9e,0xe6,0x5b,0x3e,0x9c,0x6c,0x6c,0x6b,0x45,0x0c,0x3a,0xb7,0x67,0x3c,0x8e,0x77,0x77,0xbf,0x50,0xb6,0x30,0x6e,0xe1,0x28,0x0d,0x2a,0x85,0x44,0xf8,0xbb,0xf1,0x14 +.byte 0x89,0xaa,0xc2,0x27,0xf5,0x8e,0xa1,0xd3,0x07,0xba,0xe8,0x03,0xcf,0x27,0x1c,0xa6,0xc4,0x63,0x70,0x40,0xe7,0xca,0x1e,0x05,0xb7,0xb7,0xdc,0xc0,0x07,0x4c,0x0d,0x21,0x12,0x60,0x02,0xe3,0x86,0x65,0xe7,0x1c,0x42,0x86,0xdd,0xdb,0x7f,0x26,0x60,0x01,0x3d,0xd8,0x18,0xcd,0x7a,0x9f,0xf8,0xb2,0xf6,0x6d,0xd3,0xe0,0x57,0x1f,0x80,0x30 +.byte 0x2d,0x5e,0x71,0xdf,0x4d,0x7f,0xcd,0x63,0x77,0x19,0x5e,0x2d,0xd5,0xb5,0xfa,0xa9,0x26,0x02,0xb9,0x62,0x2b,0x57,0x80,0x0a,0xe9,0xbc,0xa4,0x3b,0xa7,0xf1,0xf3,0x77,0x2b,0x6b,0x41,0x5e,0xf7,0xe8,0x66,0x23,0x63,0xac,0xcd,0x58,0xfc,0xa9,0x97,0x6b,0x5a,0x1e,0xe5,0x7d,0xfd,0xb1,0x42,0x7f,0x99,0xdd,0x60,0xaf,0x39,0x46,0x36,0xdd +.byte 0xc2,0x70,0x83,0x53,0xd1,0xc3,0x69,0xc8,0x90,0x0e,0x2b,0x34,0xb2,0x0c,0xb9,0x7a,0xb8,0x6b,0x7c,0xc2,0xf3,0xae,0x41,0x24,0xb8,0x94,0x5f,0xdd,0xce,0xda,0x95,0xda,0x49,0x81,0xb6,0xf8,0xa9,0x8e,0xb3,0x79,0xf8,0x55,0xf9,0xcf,0x8c,0x24,0x99,0xfc,0x6b,0x15,0x0f,0x39,0xac,0xd0,0x3e,0x89,0x9d,0xc2,0x46,0x8c,0x99,0x45,0xfd,0xce +.byte 0x13,0x4c,0x9c,0xc8,0x80,0x87,0x8f,0x7b,0x28,0xe3,0x5e,0x2b,0xe3,0x89,0x7e,0x13,0x52,0x52,0xe9,0x3a,0xed,0x33,0xe7,0x28,0xc7,0x7a,0x48,0x8d,0x0e,0xee,0x24,0xc4,0x61,0x04,0x3c,0xd4,0x7e,0xf3,0x30,0x22,0x07,0x58,0xae,0x02,0xc5,0xd1,0x7d,0x04,0x18,0xca,0xd6,0x04,0xd4,0xc5,0xa4,0xff,0x8d,0x0d,0x68,0xd4,0x1a,0x3a,0x72,0x6f +.byte 0x41,0x1e,0xda,0xc0,0x97,0x7c,0x55,0x2c,0x13,0x20,0x9a,0x07,0x35,0xcc,0xc5,0x83,0xee,0x41,0x77,0x51,0x28,0x07,0xe0,0x81,0xe3,0x9b,0x1f,0xdb,0x73,0x5c,0x8d,0x82,0xa2,0x8b,0xf4,0x92,0x4f,0x70,0xa8,0x6a,0xcf,0xbf,0xcf,0x0b,0x71,0xbc,0xeb,0x81,0xb4,0xc9,0x65,0xe7,0x43,0xef,0x25,0x45,0x27,0xea,0xcd,0x60,0x68,0xcd,0x2d,0x7a +.byte 0xfd,0x88,0x6d,0x06,0xd5,0x92,0x32,0xc3,0x18,0x88,0x64,0xa7,0xde,0x39,0xeb,0x0b,0x5c,0x9c,0xf6,0xf6,0x93,0x90,0x24,0x0c,0x9e,0x0b,0x89,0x1c,0xcb,0xc8,0x96,0x72,0x17,0xae,0x46,0x61,0x69,0x6e,0xbe,0x6c,0xf1,0xa4,0xa4,0x50,0xa9,0x2a,0x47,0xd7,0x80,0xe4,0x72,0xd2,0x3f,0x1a,0xdd,0x82,0xdc,0x12,0x66,0x10,0x26,0x15,0x80,0x56 +.byte 0x4d,0xbe,0x02,0xae,0xe1,0x24,0x8a,0x41,0x52,0xc8,0x5d,0x8d,0x62,0x85,0xbe,0x7c,0x35,0xdd,0x88,0xd3,0xf5,0xf7,0x9b,0xf1,0x5a,0x4e,0x70,0x48,0x31,0x5a,0xaa,0x96,0x1e,0xf8,0x73,0xb4,0x0f,0xb2,0x82,0xf4,0x13,0xac,0xba,0x3b,0x12,0x36,0x1e,0x23,0xbf,0x09,0x8a,0x1c,0x96,0x47,0x56,0x2d,0x16,0x24,0xc3,0x23,0x65,0xe2,0x99,0xd0 +.byte 0xf0,0xa0,0x2c,0x64,0x35,0xad,0x16,0x34,0x67,0x52,0xbc,0x8f,0x17,0x90,0xf9,0xc7,0x4f,0x64,0x6c,0x75,0x3f,0xd7,0x48,0xa4,0x6b,0x43,0xe6,0x2e,0x7a,0xe3,0x79,0xe8,0x47,0x51,0xe9,0x52,0x36,0x30,0xa4,0x24,0x89,0x00,0xd5,0x77,0xbd,0x34,0x2e,0xa9,0x74,0x02,0x25,0xc0,0x0c,0x10,0x31,0xf0,0xa7,0xcb,0x01,0xed,0x43,0x70,0x15,0xe6 +.byte 0xda,0x01,0xb4,0x7a,0x13,0xbc,0xf1,0x57,0x34,0xb1,0xb7,0xb3,0x26,0x18,0x5f,0x42,0x6b,0xcb,0x78,0x25,0x48,0xe9,0xe6,0xe8,0xf5,0x45,0xa2,0x61,0x97,0x10,0xa5,0x7e,0x7a,0x48,0xf3,0x23,0xa5,0x88,0xc0,0xc4,0xc7,0x3b,0x5c,0x0c,0xfc,0xe0,0xf4,0x68,0x64,0xc6,0x9f,0xd9,0x17,0xcb,0xe5,0xba,0x4a,0xa4,0xe0,0x27,0xf8,0x2b,0x4e,0x67 +.byte 0x13,0xab,0xd2,0xce,0xbc,0x8d,0xdf,0x6e,0x49,0xaf,0x72,0x8a,0x51,0xa1,0x78,0x38,0x0a,0x58,0x2e,0x72,0xec,0x94,0x70,0x8d,0xdf,0x0b,0x5a,0x52,0x81,0xb1,0x9b,0xda,0x2c,0xd2,0x85,0xbb,0x8f,0xb0,0x99,0x64,0x24,0xbe,0x03,0xd9,0x92,0x8d,0x29,0xf3,0x41,0x9c,0xd6,0xef,0xef,0xb2,0x5c,0x22,0x90,0xff,0x27,0x4d,0xb3,0x91,0x72,0x9f +.byte 0x42,0xca,0x66,0xc5,0x66,0xb7,0x50,0x3e,0x83,0x6f,0x2d,0xe3,0x7b,0x2a,0xc4,0x5a,0x93,0x92,0x80,0xdb,0x1a,0xdd,0xef,0xfd,0x96,0xcb,0x6a,0xd8,0x4a,0xc5,0x6e,0x36,0x4a,0xe4,0x10,0x15,0xb3,0x12,0xb4,0xd9,0x9e,0x37,0x48,0x96,0xcb,0xe5,0x3a,0x4f,0x57,0xa6,0x46,0x2f,0xd3,0x06,0xb8,0x61,0x1c,0x17,0x3a,0xb8,0xad,0x40,0x50,0x57 +.byte 0x10,0xd9,0xd0,0xe9,0x1b,0xe3,0x18,0x8c,0xc4,0xfa,0x08,0x8d,0x82,0x3c,0x22,0x22,0x1b,0x97,0x64,0xa6,0x8b,0x7c,0x70,0x2b,0xa0,0xd8,0x4c,0x64,0xcf,0xbc,0x49,0x78,0xcb,0x92,0x0f,0xe1,0x60,0x12,0x4e,0x92,0x0d,0xaf,0xa4,0x1f,0xe0,0x2a,0xa5,0x69,0xc6,0xa1,0x91,0x5c,0xdd,0xb8,0xae,0xfa,0xc5,0xb9,0x18,0x31,0x81,0x32,0x6e,0x97 +.byte 0x44,0x2a,0xda,0x58,0xcd,0x9e,0x0d,0x57,0xe0,0xe3,0x5f,0x7b,0x04,0xd8,0xc8,0x68,0xf5,0xa2,0xac,0x0c,0x29,0xf0,0x7e,0xff,0x32,0xfb,0x53,0x1a,0xc2,0xe3,0xae,0xa5,0xe4,0x9c,0x50,0xaf,0xf4,0xde,0x0b,0xdd,0x4d,0xfa,0x65,0x3c,0xbe,0x3c,0xb8,0xda,0x88,0xd9,0x6c,0x55,0x58,0xe1,0x4d,0x00,0xa8,0x1e,0xe2,0x3a,0x9c,0x53,0x9b,0xca +.byte 0xb7,0x5d,0x3a,0x83,0xe0,0xbb,0x95,0xc4,0xd5,0x45,0x48,0xdc,0x12,0xab,0x24,0xfc,0x5d,0x91,0xe1,0xc8,0x0a,0x5c,0x10,0xc4,0xc9,0xaf,0xb6,0x54,0x80,0xfd,0xa0,0x70,0xb9,0xab,0xdf,0x34,0x9f,0x5c,0xff,0xde,0x8e,0xa0,0x0b,0x21,0xcf,0x28,0xc4,0xdf,0x67,0xb5,0xc0,0x20,0x49,0x0c,0x7e,0xe6,0xf7,0x41,0x6b,0x75,0xd9,0x1d,0x3b,0x49 +.byte 0xb7,0x4f,0x01,0xd1,0x20,0x62,0x15,0x1e,0x9f,0x16,0xb0,0xbd,0x30,0x09,0x05,0x00,0x0f,0x25,0x5a,0x37,0xe9,0xa6,0xc6,0xef,0xe5,0x39,0x2b,0xd7,0x6b,0xc5,0x96,0xd2,0xad,0x46,0xaf,0xd3,0xc0,0xfd,0xea,0xff,0x4c,0xaa,0x44,0x48,0x9a,0xdb,0x99,0x44,0x3f,0x4a,0xf0,0x3f,0x81,0x75,0xf2,0x79,0x31,0x3c,0xed,0x56,0xc6,0xf0,0xf1,0x8c +.byte 0xdb,0x1d,0x6c,0x6c,0xcc,0xfb,0xc2,0x30,0xf6,0x24,0x14,0x69,0xc4,0x89,0x4d,0xd0,0x10,0x77,0x37,0x00,0xe8,0xc9,0xf2,0x32,0xf1,0x43,0x8b,0xe1,0x09,0xc4,0x59,0x17,0xf9,0x20,0x2b,0x01,0x76,0x20,0xb8,0x03,0x84,0xf6,0xd7,0x2e,0xef,0x20,0xa6,0xfa,0x8b,0x74,0x7f,0x4a,0x14,0x33,0xad,0xac,0x45,0x66,0x18,0x2b,0x6b,0xd2,0xb8,0x20 +.byte 0x1a,0xff,0xca,0x25,0x69,0xfd,0xba,0x4b,0x5b,0x9c,0x38,0x35,0x4c,0x30,0xa2,0x24,0x3d,0xbb,0xd4,0xf3,0x67,0x24,0xa5,0x93,0xc6,0xf5,0xb2,0xb4,0xa5,0x04,0x53,0xb6,0xe4,0xc7,0xdc,0xf1,0xe5,0x43,0xb7,0x73,0xaa,0xab,0x5c,0xea,0xcb,0xf1,0xeb,0x5b,0x04,0x7a,0xff,0x0f,0x5e,0xb4,0xd3,0x2a,0x39,0x50,0x1b,0x54,0x1f,0x32,0xd7,0x7c +.byte 0xea,0x3f,0xee,0xa5,0xc8,0x46,0x48,0x7e,0x75,0x60,0x7a,0x42,0x42,0xd3,0x15,0x07,0x69,0x46,0x1c,0xe2,0x21,0x31,0x94,0x31,0x24,0x9e,0x39,0xab,0x7a,0xf9,0xc2,0x0b,0x2d,0x6b,0x55,0xa3,0x36,0xb2,0x65,0xf2,0x17,0x08,0xde,0x15,0x83,0x07,0x36,0x12,0x54,0x8f,0x0b,0x23,0xa8,0x7e,0xb5,0x57,0x1c,0x9e,0x29,0xd7,0xd4,0x9b,0xc1,0xf6 +.byte 0x94,0x23,0xf3,0x92,0xbf,0xba,0xc8,0xf5,0x78,0x3e,0x67,0x48,0x14,0x3b,0xd4,0xe9,0x8f,0x78,0xc1,0x4b,0x9a,0x59,0x08,0xaa,0x50,0xf4,0x9d,0xc4,0xc3,0x2c,0xbc,0x56,0x2c,0x13,0x30,0x75,0xfb,0xed,0x48,0xab,0x90,0xec,0x64,0x18,0xb5,0xd5,0xb5,0x7f,0xc1,0x7f,0x83,0xf2,0xdb,0xae,0xde,0xf5,0xb5,0x29,0x03,0xbe,0x80,0xb1,0x5d,0x97 +.byte 0xd3,0x7a,0xa4,0xd0,0xe0,0xce,0x04,0xda,0xaa,0x82,0x19,0xc9,0x02,0xb7,0x1c,0xe1,0x66,0xd9,0x3e,0x86,0x6d,0xb5,0xd1,0x35,0x63,0x8e,0x4b,0xc6,0x58,0x41,0xf9,0xb7,0xba,0xf3,0x06,0x91,0xb7,0xa2,0xfb,0xb5,0x5f,0x53,0xf3,0xe0,0xc1,0xf6,0x91,0x66,0xc7,0x93,0x3a,0x0a,0x72,0xb1,0xed,0x36,0x9d,0xde,0x21,0xdd,0x7d,0x0a,0x7b,0x35 +.byte 0x1f,0xc3,0x56,0xde,0xbb,0xcb,0xb2,0x0a,0xb6,0x84,0xce,0xa1,0xc6,0x1a,0x46,0x2f,0x9f,0x48,0xd5,0x98,0x73,0xa4,0xbd,0xbd,0xa3,0xe9,0xc9,0xc4,0x64,0x89,0xb7,0x9c,0x97,0x7c,0x2f,0x88,0x22,0xe4,0x4b,0x71,0x3d,0x2a,0x47,0xee,0xf8,0xfe,0xe0,0xf7,0x03,0x14,0xe6,0x7c,0x9e,0x57,0xbb,0x8e,0xf5,0xea,0x63,0xfc,0x5b,0x18,0x3b,0xa2 +.byte 0xa1,0x4a,0x28,0x82,0x37,0x77,0x5b,0xc4,0xd3,0xc1,0xf2,0x87,0x13,0x2b,0x2a,0xc8,0xac,0x70,0xe1,0x82,0x38,0x9c,0x12,0xa0,0xc4,0x9e,0x6b,0xac,0x33,0x8a,0xe9,0x31,0x6f,0xa1,0x76,0x94,0x48,0xcf,0xbc,0x78,0x22,0x82,0x6a,0xb0,0xb9,0x49,0x71,0xdb,0xde,0x8b,0x90,0x09,0x82,0x4d,0x79,0x17,0xe8,0xcf,0xd8,0x50,0xc3,0x08,0x07,0x81 +.byte 0x5f,0x9a,0x72,0xce,0x0a,0xe4,0x29,0xc9,0xdd,0x95,0x67,0x58,0xa1,0x14,0xec,0xcf,0x2f,0x29,0xcf,0xce,0xb3,0x35,0x54,0x77,0x67,0x56,0xec,0x95,0x68,0xee,0xbf,0x9c,0x9f,0x74,0x78,0x12,0xd5,0x30,0x83,0x28,0xd5,0x36,0x96,0x57,0xa0,0x8d,0x1c,0x99,0x19,0x04,0xaf,0x25,0xe5,0x71,0x83,0x88,0xb0,0x74,0x38,0xdd,0x8a,0xff,0x39,0x7a +.byte 0xfd,0x34,0x8f,0x9c,0x67,0xa8,0xc8,0x6f,0x13,0x5d,0xf2,0x5b,0x22,0xd3,0x8e,0x63,0x51,0x58,0x9b,0xfc,0xaa,0x89,0x65,0x4e,0x36,0xc4,0xa7,0xef,0x98,0xf9,0xaf,0xcd,0x35,0x8c,0x16,0xbc,0x70,0x4f,0xcd,0x71,0x2a,0xf4,0x13,0xb3,0x3d,0xa3,0x92,0x71,0x45,0xe5,0x9a,0x45,0xbd,0xc5,0x1d,0x82,0x60,0x3a,0x97,0xf3,0x0f,0x96,0x21,0x3d +.byte 0xe5,0x6e,0xfb,0x9d,0x9b,0xeb,0x15,0xc2,0xa6,0x73,0x76,0xf2,0xcd,0xec,0xfd,0x0f,0xf4,0x3f,0x46,0xc9,0x9c,0x73,0xa1,0x21,0x08,0xdc,0x31,0x00,0xaa,0x95,0x07,0xf0,0x3d,0x51,0x57,0xfa,0x6b,0xc3,0x8e,0xe9,0xa4,0x65,0xdc,0xff,0x57,0xb9,0x1f,0x4f,0xc6,0x6d,0x03,0x00,0xa7,0x19,0xb8,0x24,0xb5,0x3d,0x87,0xcb,0x84,0xb7,0xf5,0xfe +.byte 0x51,0x16,0x5b,0xc7,0xed,0x4b,0xff,0xa3,0x66,0x17,0x93,0x60,0x69,0x84,0x8c,0x95,0x74,0xa7,0x30,0x2d,0x09,0xf7,0x4e,0x0e,0x2f,0x99,0xda,0x46,0x34,0x0f,0x93,0x90,0x97,0x4c,0xa6,0x25,0x15,0xb8,0x6f,0x1d,0xd5,0xe1,0xc1,0x39,0x50,0xfd,0xd5,0x79,0x4f,0x04,0x2f,0x76,0x50,0x3f,0x67,0x56,0xad,0x02,0x82,0x30,0x1a,0xaa,0x6e,0xe2 +.byte 0x05,0x6a,0x93,0xb7,0xbe,0xde,0x84,0xce,0xd8,0x53,0xed,0xad,0x95,0xab,0x45,0x1f,0x4c,0x3b,0x22,0x36,0x27,0x45,0x19,0xa4,0x7f,0x12,0x20,0x6c,0x9d,0xeb,0xd2,0xfe,0xd6,0x7d,0x25,0xf9,0xe3,0x64,0x77,0x56,0x89,0x12,0x57,0x80,0xd5,0x40,0xbb,0x2a,0xcc,0xac,0x34,0x8e,0x87,0xfd,0x58,0xc3,0xbd,0x92,0x48,0xd8,0x7f,0xc4,0x39,0x6a +.byte 0x4e,0x1c,0x50,0x93,0xef,0xae,0x81,0x93,0x50,0x95,0x6e,0x46,0x7c,0xf5,0x27,0x44,0x6c,0x21,0x06,0x49,0x89,0x7e,0xf4,0xfa,0x08,0xa5,0xbc,0x0a,0xbd,0xb6,0x7b,0x55,0xac,0x87,0x19,0x33,0xfa,0xab,0xf3,0x15,0xc9,0x1b,0x83,0xf2,0x41,0xf1,0x26,0x6f,0xdf,0x15,0x60,0xdb,0xa6,0x03,0x43,0x3e,0x34,0x7a,0xa9,0xb1,0x38,0x57,0xe4,0x09 +.byte 0x1a,0x4a,0xd8,0x6e,0x28,0xee,0x7d,0x74,0x54,0x03,0xb3,0x29,0x24,0xb3,0xf0,0xc6,0x20,0x7c,0x47,0x01,0x66,0x36,0x7a,0x14,0x18,0x09,0xd6,0xaa,0xa6,0x82,0x5b,0xe4,0x0a,0xf9,0x41,0x52,0x3b,0x56,0xa2,0xf8,0xa2,0xa1,0x2b,0xe0,0x0d,0x1f,0x5b,0xe4,0x0e,0xe1,0x94,0x84,0x6f,0xed,0x2e,0x11,0xfa,0x4a,0xbd,0x41,0xf4,0x3c,0x8c,0x7e +.byte 0x94,0x46,0xec,0x79,0x81,0xb0,0x36,0xfd,0x9c,0x73,0x0f,0x84,0x1a,0x59,0x4e,0x1b,0xd5,0xd1,0x0d,0xff,0xfd,0xb7,0xfb,0x73,0x35,0x8a,0x66,0xed,0xf3,0xee,0x6d,0xf7,0x86,0x0a,0xb9,0xc0,0xf1,0xa3,0xb7,0x32,0x49,0x01,0xe8,0xcd,0xfe,0x82,0x7b,0xf6,0x46,0xd8,0x73,0x47,0x8b,0x7b,0x6e,0x31,0x92,0x0f,0x4b,0x16,0x11,0x86,0x1d,0x02 +.byte 0x5d,0x12,0x79,0x59,0xdc,0x8c,0xaa,0x1b,0xc1,0x75,0x63,0xb2,0xd6,0xbf,0x19,0xb0,0x81,0x70,0x34,0x12,0xd2,0x09,0xbe,0x6d,0xa1,0x31,0x77,0xd2,0x9b,0x59,0xdc,0xcb,0x67,0xb5,0x14,0xcd,0x37,0x31,0x2c,0xa6,0x17,0x58,0x2b,0x24,0xfc,0x2a,0x9e,0x8f,0x38,0x38,0x7a,0x80,0xda,0x8b,0x54,0x1d,0xc9,0x99,0xc7,0x1f,0x98,0x7a,0x1f,0x32 +.byte 0x23,0x1c,0xb5,0x6e,0x53,0xd3,0x61,0xe7,0x78,0x19,0x6c,0xd5,0x2f,0x85,0xde,0xd1,0x67,0x6b,0x9b,0xa1,0x09,0x87,0x5e,0x89,0x5e,0x89,0x21,0x36,0xf2,0x94,0xc1,0xfd,0x6c,0x4e,0xd9,0x6b,0xd2,0xb1,0x1b,0x48,0x37,0x9a,0x7b,0xc9,0x52,0xfd,0xe2,0x6d,0x07,0x19,0xf2,0xa5,0x69,0xdc,0x0b,0x52,0x8f,0xb3,0x87,0x03,0x1a,0xd8,0x43,0x20 +.byte 0x68,0xcf,0x08,0xcc,0xce,0x37,0xf6,0x96,0x7f,0x03,0x62,0xb2,0xce,0x6a,0xfb,0x22,0x54,0xd6,0xfc,0x84,0x5c,0xf5,0x55,0x32,0x36,0x77,0x1d,0x15,0x6a,0x2c,0x3a,0x01,0x34,0xff,0x5b,0x7f,0x3f,0xab,0x97,0x8f,0xbd,0x1d,0x07,0xb9,0x47,0xb1,0xcc,0xc0,0xdf,0x17,0x38,0x54,0x07,0xc0,0x1b,0xb9,0xa2,0x29,0xa6,0x25,0x73,0x32,0x4d,0x5e +.byte 0x51,0x60,0xb3,0x27,0xe5,0xb6,0xdb,0x56,0x81,0x95,0x03,0x7e,0xca,0xc6,0x15,0x8f,0x48,0xd4,0xac,0x71,0x41,0xdc,0x9c,0x86,0x5d,0xd8,0x90,0x90,0x54,0xdd,0x3d,0xf3,0xa8,0xbb,0xe5,0x55,0x69,0x26,0xdf,0xd1,0x8e,0x75,0x2a,0xe4,0xfe,0xe0,0x80,0x1d,0x6b,0xd2,0x8a,0x06,0x49,0x4e,0x60,0xf8,0xbd,0x3d,0x99,0x27,0x80,0x27,0x42,0x66 +.byte 0x01,0x32,0xe1,0x9e,0xa6,0xde,0x7b,0x14,0xa4,0x49,0x68,0x70,0xbe,0xa4,0xe1,0x44,0x2e,0xce,0xa3,0xe9,0x1d,0x7a,0xbd,0xf1,0xe4,0x25,0x11,0x47,0xd8,0xaa,0x32,0x34,0xf8,0xca,0x3d,0xec,0xf3,0x5d,0x8a,0x55,0xe7,0xd4,0x7c,0xfb,0xcf,0xe7,0xa6,0x13,0xaa,0x16,0x5f,0xaa,0x02,0x19,0xdd,0xf1,0xf8,0x5c,0xb2,0x1e,0x68,0x9a,0x21,0x93 +.byte 0xd1,0x38,0x31,0xbb,0x26,0x76,0x44,0xf8,0x84,0x3b,0xf5,0xd1,0x52,0xbe,0x1b,0x8e,0x4d,0xa0,0xb4,0x4a,0x5a,0x7e,0x89,0xe5,0x36,0xb0,0x76,0x77,0xc5,0xc2,0x22,0x73,0xc2,0x19,0x12,0x7f,0xdf,0x9c,0xb8,0xc0,0xf5,0x0e,0xd5,0xa3,0x55,0xae,0x61,0xf8,0xf1,0x6b,0x79,0xc8,0x2e,0xbc,0xa5,0xef,0xd4,0xb1,0x84,0x0c,0x15,0xc4,0xed,0xb3 +.byte 0x18,0x29,0xd6,0x31,0x83,0x79,0x30,0x1a,0x8f,0xf0,0x3b,0xe9,0xd1,0xf2,0x1d,0xec,0xcb,0xe8,0xc5,0x1c,0xb5,0xcb,0x8e,0x01,0xd1,0xb2,0x86,0x43,0x33,0x95,0x70,0x7e,0x75,0xa9,0xa1,0xe7,0xcb,0xd9,0xf4,0xd3,0xe1,0xe2,0xe9,0x46,0x21,0x20,0x3b,0xe9,0x48,0x1c,0x3f,0x93,0x57,0x31,0xeb,0x15,0x9c,0xa7,0xa6,0xcb,0xb5,0xb7,0xa7,0x24 +.byte 0xbe,0x66,0x4c,0x92,0x7c,0xe8,0x8e,0x3f,0x9c,0xa9,0xd7,0xad,0x73,0x68,0x19,0x19,0xd4,0xb5,0x57,0x82,0xdc,0x67,0x3c,0xec,0xac,0x06,0xec,0x86,0x9b,0x65,0xff,0xbb,0xc3,0x90,0x48,0xdb,0x52,0xcc,0xa4,0xf5,0xdf,0x2c,0xc5,0x5a,0xe3,0x30,0xed,0xad,0x37,0x40,0x8c,0xaa,0x32,0x4f,0x94,0x1e,0x14,0x59,0x48,0x1d,0xd3,0xaf,0x80,0xe7 +.byte 0xcf,0x6b,0xa7,0x70,0xe7,0x98,0x22,0x4b,0x40,0x02,0x0c,0x29,0x09,0x0a,0x53,0xf7,0xd4,0xeb,0xbb,0x75,0xb4,0x30,0x1c,0x67,0xea,0xd2,0xb5,0x40,0xfe,0x57,0x2c,0x3c,0x44,0x8d,0x8d,0x02,0x78,0xf0,0x76,0x8f,0x92,0xab,0xb4,0xc9,0xc0,0x2f,0xf5,0xde,0xa7,0x09,0x14,0xf1,0xe5,0x34,0xeb,0x86,0xfa,0xcf,0xcc,0x85,0x1c,0x9c,0xa6,0xe1 +.byte 0x72,0x9e,0xc1,0xe4,0x74,0xc4,0x96,0x5d,0xf4,0x4b,0x23,0x4f,0xa5,0x32,0xff,0x38,0x21,0x8f,0x43,0xe5,0x96,0x20,0x3c,0x78,0xb8,0xb4,0xcd,0x29,0x62,0x84,0x59,0xb5,0xb4,0x57,0x07,0xa8,0x79,0x77,0x21,0xf4,0x82,0xa7,0xb1,0x36,0xee,0x16,0x8e,0xb5,0x9a,0xf7,0x03,0xac,0x64,0x03,0x20,0x48,0x24,0xbc,0xbb,0xec,0x50,0xed,0xa1,0xf3 +.byte 0x67,0xd9,0x34,0xe1,0x0c,0x0b,0xc3,0xd0,0x46,0x0b,0x55,0x85,0x59,0x3c,0xb4,0x7d,0xd0,0xc2,0xe7,0x95,0x24,0x1f,0x53,0x76,0xf1,0x81,0x4a,0x61,0x6a,0x2e,0x3b,0x3f,0x92,0x14,0x7c,0xe0,0x33,0x7f,0xb4,0x85,0x92,0x78,0x0c,0x0b,0xe7,0xbd,0x7a,0x08,0x31,0x7d,0x47,0x3b,0xfa,0xdd,0x90,0x9e,0xf0,0xa9,0xd1,0xa7,0x7c,0x2a,0x37,0xb1 +.byte 0x23,0x71,0x34,0xa0,0x63,0xfb,0x9e,0x8f,0x39,0x00,0xa0,0x09,0xd4,0x1f,0xf4,0xba,0x2d,0xc1,0xac,0x6c,0x94,0x18,0x56,0x3e,0x89,0x92,0x63,0x10,0x5e,0xfe,0x76,0xec,0x4e,0xb6,0x5d,0x59,0xf9,0x94,0x46,0x4f,0xda,0xd5,0x3e,0x6c,0x48,0x49,0x7e,0x7c,0x77,0xe7,0x7e,0x22,0x31,0xb5,0x9d,0x15,0xd3,0x08,0x24,0xdb,0x67,0x98,0x6b,0xfc +.byte 0x45,0x54,0x85,0x29,0x9a,0x47,0xa5,0x60,0xe2,0x46,0x36,0x45,0x16,0x54,0xd6,0xb1,0x5c,0x38,0x45,0xf8,0x43,0x28,0x58,0x81,0xc9,0x57,0x10,0xda,0x3b,0xfc,0x3e,0xe4,0xf4,0xb2,0x16,0xb6,0x16,0x1d,0xa4,0x68,0xa6,0xe0,0x36,0xdb,0xe2,0x19,0x1c,0xce,0x9f,0x94,0xa9,0x94,0xad,0x20,0xcb,0x17,0xd0,0x92,0x37,0x75,0x88,0x0d,0xaf,0xdf +.byte 0x98,0x6d,0x19,0x9e,0x8e,0x61,0xe4,0x8c,0xfc,0x27,0x27,0x6a,0xa7,0xa4,0x66,0x7f,0x08,0x03,0xef,0x5c,0x4a,0xb7,0x89,0xa1,0xae,0xe8,0x70,0x3f,0x13,0x27,0x0a,0x7d,0x5d,0x5e,0x2b,0x69,0xb5,0x98,0x1f,0x25,0x1e,0x41,0xff,0x46,0x5a,0x25,0x1f,0xb4,0x90,0x8e,0x81,0x91,0x19,0x63,0x10,0xd4,0xa9,0xdf,0x3b,0xae,0xe6,0x63,0x1a,0xdc +.byte 0x09,0x5f,0xac,0xaa,0xb8,0x6b,0xbd,0x6a,0x90,0x70,0xce,0x2c,0x63,0x6d,0x48,0x78,0xca,0xc1,0x59,0x94,0xe2,0xc7,0x89,0x17,0x73,0xfa,0x73,0x34,0xb7,0xd3,0x9c,0x4e,0xd8,0xac,0x18,0x80,0x25,0xbf,0xbe,0x75,0x0a,0x9a,0x05,0x5e,0x54,0xcb,0xba,0xab,0xca,0x7f,0x96,0xf7,0x26,0x8c,0x82,0xe0,0x23,0xa5,0x86,0xb5,0xdf,0x31,0xd0,0x2f +.byte 0xe3,0x66,0x96,0x83,0xd2,0x04,0x43,0x8a,0x28,0x59,0x49,0xdc,0x11,0x38,0xd9,0x5f,0xc2,0x31,0xaa,0xa8,0x1a,0xff,0x57,0xf1,0x84,0x18,0x28,0xe8,0x04,0xae,0x98,0xa4,0x17,0xc4,0x35,0x75,0xf5,0x37,0xf5,0x27,0x3e,0x7e,0x32,0xa4,0xcb,0xd4,0x43,0x59,0x02,0x63,0x7b,0x7c,0x9d,0xa7,0x61,0x12,0xf7,0xdc,0x12,0xe0,0x07,0xac,0x96,0xf3 +.byte 0x71,0x43,0xe5,0x30,0xe0,0x4c,0x51,0x2a,0x19,0xf5,0x79,0x59,0x5a,0xc5,0x74,0xfa,0x54,0x18,0xb4,0xb1,0xfb,0x4b,0x9b,0xf8,0xe4,0xa4,0x63,0x25,0xc3,0x84,0xeb,0x2e,0xa1,0xf8,0xf8,0x7b,0x25,0x6a,0x7d,0x14,0x38,0x06,0xeb,0xae,0x9f,0xa5,0x80,0x9a,0x8a,0xb6,0x46,0x95,0xdf,0x52,0x11,0xd4,0x30,0xcc,0x11,0x8f,0x4a,0x5e,0x56,0x26 +.byte 0x60,0x3d,0x5f,0x0b,0x04,0x94,0xcd,0xca,0x1d,0x6b,0x83,0x51,0x83,0x8d,0xf8,0x33,0x4a,0x91,0x00,0xa4,0xf5,0x44,0x5b,0xad,0xa0,0x4a,0x72,0xaf,0xe6,0x4a,0x0d,0x1e,0x9f,0x18,0x6b,0xb4,0xdf,0x85,0x61,0x2a,0x3b,0xe1,0x4c,0xaa,0xc3,0x17,0xef,0x51,0x9f,0xae,0xb5,0xca,0xaa,0x6c,0xd9,0xa1,0xf5,0xa3,0x6f,0x1c,0xca,0xb3,0x37,0xda +.byte 0x27,0xea,0xcb,0xb7,0x36,0xb2,0x11,0xda,0x9f,0x07,0x78,0xaa,0x6c,0xad,0x63,0x9b,0x49,0x6b,0xfe,0x1f,0x93,0x82,0x73,0xc9,0xc8,0xf6,0x68,0x54,0x50,0x77,0xba,0x78,0xc7,0x82,0xee,0xbd,0x97,0x66,0xb9,0x22,0x49,0x0d,0x7a,0x1f,0x0f,0x4e,0xe5,0x02,0x8b,0xa6,0x1b,0x11,0xfc,0xa6,0x37,0x2a,0x5c,0x66,0xaf,0xac,0xa5,0x9f,0xbf,0x26 +.byte 0x98,0x9b,0x25,0x44,0x48,0x09,0xe6,0x76,0xb9,0x08,0xf1,0x37,0xcf,0x86,0xc9,0xdf,0xa8,0xf3,0x88,0x2f,0xc1,0x33,0x15,0x95,0x59,0xf7,0x9b,0xf2,0x48,0x76,0xcb,0xd0,0x31,0xe4,0x27,0x74,0x2d,0x6e,0xd2,0xc3,0x29,0xea,0xef,0xff,0x4e,0x3d,0xda,0x3e,0xef,0x94,0x94,0x40,0xcd,0x93,0xcf,0xb8,0x56,0x29,0xf8,0x20,0x20,0xa3,0x66,0x83 +.byte 0xba,0xc8,0x4f,0xe6,0x22,0x96,0xb5,0xb2,0x44,0x75,0x55,0x98,0xed,0x11,0xd0,0x58,0x50,0x26,0xf1,0x4a,0xf6,0x80,0x5c,0x17,0x92,0xba,0xc2,0xd6,0x68,0xd4,0x7a,0x4f,0xdf,0x16,0x97,0xbd,0xad,0xd7,0x1b,0x0c,0xe5,0x23,0xa9,0xaa,0xf4,0x1c,0x8d,0xec,0xbf,0xf0,0xb5,0xaa,0x49,0xfd,0xf1,0x31,0x9b,0xf9,0xe9,0x21,0xa1,0x20,0xab,0xbe +.byte 0x56,0x8c,0xf2,0x85,0xdc,0x1f,0xea,0x25,0xce,0xf5,0x6c,0x18,0x7d,0xc4,0x1a,0x01,0x08,0x01,0xed,0x02,0xa8,0xac,0x7f,0x74,0x2c,0xd7,0x28,0x25,0x6e,0x68,0x19,0x38,0x8d,0x20,0x51,0x8f,0x38,0x8b,0x03,0x36,0xae,0x50,0x35,0x28,0x65,0x7e,0x15,0x2a,0x80,0x2c,0xae,0xcd,0xb3,0xb6,0x91,0xf1,0x8c,0xf2,0x8c,0xc5,0xce,0x3e,0x3a,0x97 +.byte 0x5a,0xff,0xe1,0x37,0x13,0xf7,0x6b,0x07,0xb2,0xaa,0xaa,0x57,0x18,0xb7,0xb2,0x19,0x52,0xbf,0x59,0x0b,0x6f,0xba,0x56,0x54,0x14,0xac,0x21,0xfd,0x7d,0x03,0x4b,0x0b,0x39,0x54,0xba,0xf9,0xba,0x73,0xcd,0x67,0x13,0x30,0xca,0x19,0x80,0x4f,0x18,0xb4,0x75,0x2a,0xec,0x78,0xa7,0xd0,0x5c,0x53,0xe2,0x43,0x2c,0x08,0x5f,0x5c,0xe6,0x60 +.byte 0xde,0x04,0xf6,0x75,0xca,0x35,0x3b,0xf6,0x68,0x53,0x60,0xc0,0xed,0xb0,0x15,0xa1,0xa4,0x89,0x23,0x34,0x49,0x35,0xd2,0x78,0x4b,0x8f,0x7c,0x8d,0x59,0x22,0x9f,0xad,0x72,0x47,0x5b,0xde,0xf2,0x09,0x08,0xa0,0x8d,0x5f,0x4d,0xc3,0xd1,0x83,0x17,0xbc,0x39,0x8e,0xa5,0x53,0xaa,0xe3,0x31,0x03,0x93,0x14,0xb4,0x57,0xf0,0xdf,0x54,0x1d +.byte 0x79,0x4d,0x21,0x1a,0x8f,0x3f,0x6e,0x07,0x41,0xcc,0x2d,0x94,0x55,0x4e,0x50,0xfd,0xac,0xe3,0xef,0xa7,0x50,0x3b,0x3c,0xda,0x32,0x25,0xee,0xd9,0x01,0x37,0x8e,0xb3,0x23,0xc5,0x5e,0x12,0x88,0x6d,0xd5,0x41,0xfd,0x3f,0xfa,0x75,0xb8,0xcb,0x82,0x10,0x81,0x38,0x1b,0x10,0x2d,0x2c,0x6b,0x62,0xa1,0x7c,0xd1,0x75,0xd8,0x8c,0x0c,0x2f +.byte 0xe8,0x97,0xff,0x18,0xb3,0x12,0xa2,0xef,0x6c,0xc5,0x79,0x9f,0x64,0xf3,0xc7,0xdc,0xdb,0x54,0xa4,0x25,0xc7,0x30,0xfb,0x6c,0x5a,0x50,0x24,0xf9,0xb6,0xc9,0xe7,0xda,0x78,0xcc,0x1b,0x5e,0xf3,0xe7,0x32,0xd8,0x36,0x47,0x10,0xe5,0x2c,0xeb,0xea,0xf7,0x25,0x30,0x93,0x64,0x88,0xc8,0x59,0xf8,0x5c,0x02,0x43,0x4c,0x23,0x8e,0x1c,0x42 +.byte 0xe4,0x36,0x39,0xbf,0xba,0x8b,0xe3,0x53,0x01,0x32,0x0d,0x89,0xc2,0xea,0x35,0x94,0xf1,0x0d,0x29,0x45,0x08,0x07,0x15,0xcb,0xd7,0x3e,0x4d,0x9f,0x04,0xd8,0x18,0x8a,0x56,0xa3,0xb1,0x1c,0x46,0x19,0x8b,0xd0,0x51,0x30,0xf3,0xca,0x52,0x2a,0x16,0xc4,0x90,0xc1,0x00,0x50,0x87,0x8b,0x4c,0x71,0x61,0x48,0x69,0xb2,0xf1,0x33,0xaa,0x79 +.byte 0x81,0x8b,0x36,0x33,0x19,0x41,0x6b,0xc1,0x91,0x40,0xf2,0xcc,0x1d,0x83,0x09,0xab,0xcc,0x6f,0x6c,0x54,0x91,0x62,0x80,0xac,0xe6,0x1f,0xcd,0x5d,0x05,0x2b,0xe5,0xac,0xbc,0xd6,0x1b,0x8b,0xef,0x95,0xa0,0xf3,0xfe,0x8e,0x4d,0x32,0x77,0xe8,0x02,0x8f,0x44,0xad,0xc4,0x40,0xc3,0x99,0x68,0x81,0x47,0x15,0xbd,0x3b,0x8f,0x0b,0x9b,0x3a +.byte 0xb3,0x9d,0x8f,0x3d,0x86,0xd1,0x89,0x5f,0x67,0x19,0x33,0x2d,0x18,0x64,0x0e,0x3a,0x13,0xa4,0xe9,0xb4,0xc9,0x90,0x09,0x6a,0xcb,0x5d,0x0d,0x83,0x13,0x04,0x29,0xe5,0xa5,0xf4,0x00,0x56,0xf4,0x80,0x96,0x33,0x93,0xe4,0x9b,0xc4,0x6e,0x38,0xbf,0x0a,0xe0,0xee,0x8c,0x89,0x5d,0x60,0x36,0x7e,0x69,0xc2,0xc7,0x28,0x6f,0x2b,0x97,0xfb +.byte 0xb3,0x5b,0x82,0xe8,0x9a,0x36,0x44,0xd7,0x1f,0x9b,0x1b,0xd0,0x14,0xe4,0xd4,0x0d,0x35,0xcd,0xee,0x88,0x50,0x37,0x5c,0x88,0x09,0xa5,0x16,0x4d,0xe1,0xbc,0xe8,0x79,0x8f,0xa9,0x18,0xb8,0x43,0xb4,0xd7,0x32,0xcd,0x26,0xdd,0x78,0x29,0x59,0xad,0x29,0xe3,0xe0,0xe7,0xcf,0x16,0x03,0xc6,0x8a,0xb6,0xa2,0x09,0x9a,0x6e,0x90,0x7b,0x0c +.byte 0x9d,0x20,0xb6,0xc4,0x28,0x3f,0x44,0x06,0xa9,0x45,0x72,0x27,0xa7,0x56,0x3f,0x07,0xff,0x13,0xd9,0x80,0xda,0xbd,0x25,0xad,0xd3,0x74,0x2c,0xd8,0xd2,0x93,0xa5,0xda,0xbc,0x5f,0xa5,0xde,0xb7,0x3a,0xf0,0xd2,0x17,0xb1,0xc3,0x70,0x2a,0x85,0xde,0xf0,0x97,0x7b,0x96,0xb2,0x0e,0x45,0x7f,0x63,0xd4,0x94,0xd8,0x78,0x05,0xcf,0xea,0xb3 +.byte 0xfb,0x7a,0x79,0xb5,0x91,0x53,0xb8,0x8c,0xa2,0x03,0xf4,0xc3,0xed,0xf0,0xab,0x33,0x5c,0x6e,0xcd,0xbd,0x73,0xe3,0xe9,0xd0,0x83,0x2a,0x2a,0x68,0x32,0xf1,0x69,0x4f,0xd0,0x8b,0xe8,0xa1,0x7d,0x5b,0x0f,0x69,0xc2,0x33,0xbf,0xc1,0x54,0x29,0x47,0xed,0x9f,0xdb,0x35,0x0a,0x3d,0x2b,0x9d,0x8b,0x91,0xb6,0xe0,0xbc,0x53,0xba,0xb7,0xcd +.byte 0x2c,0xd9,0xeb,0x81,0xa0,0x2e,0x14,0x6e,0xdc,0xe1,0x90,0x36,0x14,0x9d,0xa8,0x8b,0x6b,0x1b,0xac,0x4c,0x09,0x8b,0x1a,0x87,0xf4,0x66,0xf6,0xfb,0x62,0x92,0x13,0xcf,0xb2,0x96,0xf0,0xc9,0x8b,0x12,0x99,0xf1,0x16,0xae,0x5c,0x27,0x24,0xa8,0xfd,0xb3,0x4c,0xc2,0xe6,0x3f,0xd2,0xc6,0x0c,0xf2,0x65,0x4e,0xdf,0xf1,0x06,0xb8,0x99,0xc4 +.byte 0x3a,0x35,0xba,0xed,0x18,0x3e,0xfa,0x03,0x51,0x8d,0x45,0x68,0x12,0x7b,0xb6,0xac,0x63,0x99,0x47,0xee,0x6f,0x8b,0xcb,0xc1,0x0a,0xf9,0x23,0xf0,0x05,0xe1,0x03,0x4a,0xb5,0xe0,0x65,0x71,0xc8,0x64,0x7e,0x0d,0x39,0xe7,0x96,0xdb,0x34,0x63,0x2e,0x1a,0x27,0x85,0x52,0x63,0x8e,0x44,0xfb,0x61,0xca,0x79,0xe5,0x91,0x99,0x83,0x2d,0xe0 +.byte 0x26,0x04,0xad,0x43,0x26,0xf2,0x7e,0x56,0xae,0x35,0x6a,0xfb,0xec,0xc6,0x27,0xe4,0x3a,0xa3,0x6b,0x63,0x72,0xba,0x98,0x03,0x9f,0x2a,0x4c,0xb1,0x33,0x22,0x9d,0x53,0xf6,0x00,0xa3,0x1e,0x32,0xcb,0xbe,0xe0,0xc2,0xf8,0x71,0xcd,0x3f,0xe3,0x4d,0x83,0xf2,0x9f,0x1c,0x91,0x35,0x97,0x52,0x95,0xba,0x24,0x04,0x04,0xca,0x32,0x6d,0xd7 +.byte 0x4b,0xd4,0x9e,0x8b,0x73,0x42,0xfb,0x9f,0xfc,0x93,0xea,0xc2,0x41,0x56,0xa9,0xe5,0xdd,0xd0,0x37,0x8a,0xe2,0x92,0x9f,0x45,0x4f,0xd8,0xef,0xe6,0x6f,0x58,0x41,0x5f,0x7b,0xe7,0x0f,0x32,0xce,0x06,0x02,0x7f,0xe2,0x37,0x87,0xb7,0x35,0x72,0x68,0x87,0xc9,0x35,0xa8,0x51,0xce,0xd8,0xde,0xc3,0x8c,0xb4,0xab,0xf4,0xa7,0x3b,0xcd,0xc8 +.byte 0x0a,0x56,0x5b,0x48,0xb1,0xa4,0x27,0xa8,0x9e,0x3e,0x04,0xbc,0xb3,0x63,0x3e,0xd5,0xf7,0xae,0xec,0x0c,0x6e,0x4a,0x73,0xb6,0xed,0x66,0xea,0xc1,0x7a,0xc4,0xaa,0x21,0x27,0x62,0xef,0x3d,0x1d,0x51,0x8b,0x63,0xe6,0xe2,0x8a,0xed,0x7a,0x4b,0x90,0xc3,0x9f,0x91,0xb4,0x8f,0x78,0x65,0x9c,0xdd,0x0a,0x7a,0x50,0x36,0x33,0x30,0x3b,0xb4 +.byte 0xdf,0x67,0xbd,0xfd,0x71,0xfc,0x40,0x49,0xaa,0x01,0xdf,0x68,0x67,0x73,0x31,0x2c,0x98,0x2f,0x8c,0x9e,0x2d,0xce,0x4a,0x71,0xbc,0x6f,0x90,0x1d,0xc0,0x37,0x07,0x30,0x0c,0xa3,0x04,0xfb,0xd1,0xd0,0x0e,0xcb,0xdc,0x94,0x06,0x7f,0x83,0xe5,0x45,0x47,0xd0,0x71,0x06,0x94,0x23,0x7c,0x03,0x80,0x46,0xa5,0x10,0x08,0xd1,0xdb,0xfb,0x9d +.byte 0xd4,0x05,0x01,0x5e,0x66,0x4d,0xf9,0x32,0x9b,0x5b,0xfe,0x7a,0x60,0x63,0x77,0x9a,0x31,0x34,0xe5,0x9a,0x82,0x2d,0x2b,0xb7,0xe0,0x04,0x8f,0x86,0xf3,0xb2,0x16,0x86,0x50,0x37,0x9d,0x80,0xe7,0x62,0xdf,0x77,0xda,0xf4,0xfc,0xb7,0x42,0x9d,0xac,0xcb,0x11,0xff,0x0c,0x6f,0x4e,0x16,0x0c,0x59,0x04,0x05,0x8f,0x88,0x64,0x37,0xe6,0x6c +.byte 0xee,0x64,0x58,0x79,0x60,0xd4,0x2f,0xb7,0x90,0x59,0xfb,0x82,0x3b,0x20,0x2e,0x2b,0xba,0x15,0xfb,0xf7,0x5b,0x1d,0x81,0x8a,0x8a,0x8f,0xe3,0x39,0x92,0x34,0xfc,0x3a,0x67,0xce,0xb6,0xa0,0x9b,0x56,0x78,0x96,0x4d,0x32,0xbf,0x9c,0x83,0x9e,0x19,0x66,0x20,0x42,0xb2,0x78,0x62,0x42,0xdd,0xdf,0x98,0xab,0x0c,0x3d,0x41,0xb5,0x74,0xc1 +.byte 0x2d,0xf0,0x02,0x58,0x6e,0xb3,0x4d,0x7b,0x41,0x1c,0xf1,0x09,0xc1,0xbb,0x84,0x67,0xf8,0x24,0x77,0x32,0xcd,0x7a,0x63,0x87,0x0d,0xf2,0xc5,0xaf,0xe4,0xb5,0xc6,0x3b,0xad,0x66,0x5e,0xae,0x90,0xc2,0x24,0x27,0x7a,0x0b,0xed,0x1b,0x86,0x5d,0x02,0x19,0x85,0x78,0xc8,0xb1,0xce,0xe7,0xc9,0x5c,0xce,0x43,0x58,0xac,0x1c,0x4e,0xcd,0xb8 +.byte 0x3a,0xb8,0x7a,0xf3,0x79,0x4b,0x97,0xcf,0xbe,0x88,0x24,0xd0,0x9a,0x5a,0x55,0x43,0x0c,0x48,0xa2,0x7f,0xaf,0x4b,0xd8,0x16,0x02,0xfb,0xe6,0x0c,0x6b,0x85,0xb4,0xb8,0x5e,0x40,0x60,0x5d,0x93,0x51,0xc6,0x32,0xb9,0x4a,0x23,0x96,0x71,0xeb,0xe8,0xe8,0x01,0x1e,0x85,0xb0,0x47,0xde,0x86,0x15,0x52,0x3a,0xb2,0xd3,0x86,0x4b,0x78,0x09 +.byte 0x9c,0x6e,0x9d,0xd9,0xef,0xe8,0x64,0x2d,0x2a,0xec,0x21,0x5a,0x60,0xa5,0xe4,0x26,0xbb,0x79,0x0c,0xdb,0x48,0xd6,0x4b,0x5c,0x5b,0xe3,0x34,0xc9,0x96,0xf0,0xcb,0x68,0x8a,0x2d,0xee,0xa3,0x37,0x34,0x5f,0x3e,0x65,0x40,0xce,0xe1,0xc8,0x2e,0x11,0xca,0x42,0x51,0x53,0x72,0x3d,0xa9,0x68,0x54,0xb4,0xd8,0xd7,0x72,0x84,0x8d,0xcd,0x6d +.byte 0x1f,0x0e,0x0c,0x0f,0x32,0x3a,0x7d,0xdd,0xc1,0xd3,0xe7,0x2d,0x1f,0x52,0x8b,0x73,0x86,0x70,0x2a,0xcb,0x71,0x37,0xa1,0xab,0xe3,0x94,0x5a,0xd7,0x9d,0x68,0xc1,0x6e,0x5d,0x72,0x25,0x81,0xe8,0x45,0xad,0x6c,0xf8,0xdb,0x9b,0x70,0x31,0xb9,0xf0,0x4f,0x23,0xd7,0x03,0xc8,0x87,0x43,0x51,0x7a,0x55,0xfe,0x6f,0x2d,0x40,0xbc,0xfe,0xdf +.byte 0xe6,0x21,0x4b,0x4d,0xc6,0x02,0x48,0xe7,0x7a,0x2a,0xef,0x91,0xdf,0xbc,0x98,0x91,0x6f,0x59,0xc4,0x47,0x77,0x2e,0x45,0x45,0x23,0x47,0x5d,0xf8,0x50,0x41,0x84,0x75,0x8a,0xe7,0x4d,0xfb,0xeb,0x58,0x00,0xcf,0x42,0xca,0x02,0x05,0xc7,0xfa,0x11,0xfb,0x6e,0x90,0x7d,0x53,0xa0,0x19,0x23,0x24,0x8f,0x89,0x17,0x40,0xbe,0x11,0xfb,0xd9 +.byte 0x04,0xf8,0x84,0xeb,0x90,0x7c,0x84,0x45,0x9c,0x53,0x45,0x5e,0x45,0x51,0x55,0xfc,0xf1,0x6b,0x02,0x24,0xfd,0x95,0x4a,0x40,0x80,0xdc,0xa6,0x94,0x15,0x2c,0x1d,0x85,0xa0,0x07,0x8d,0xf8,0xf2,0x95,0x0c,0xa0,0x4e,0x5a,0x5b,0x29,0x09,0xcc,0xf3,0x4e,0x8e,0xea,0xe8,0x26,0xb8,0xbe,0xb2,0x6f,0x76,0x6f,0xa4,0xe5,0x6a,0x50,0xcf,0xc8 +.byte 0x7d,0xb6,0x1e,0x9d,0x90,0x6b,0xde,0xe2,0x55,0x49,0x97,0x00,0xa5,0xc5,0x1f,0x1c,0x41,0x66,0xe7,0x6b,0x20,0xb2,0x1e,0xc7,0xb3,0xd4,0xa9,0x75,0xbb,0x83,0x24,0xd0,0xdf,0xbd,0xba,0x2c,0x2f,0xa4,0x03,0x1d,0x17,0xc5,0x74,0xc2,0x6a,0x20,0x71,0x18,0xd1,0xc5,0xb0,0x78,0xfe,0xda,0x55,0xd2,0x43,0x2a,0xd8,0x88,0x74,0x75,0x86,0x07 +.byte 0xe9,0x8b,0x0d,0x0f,0xe5,0x8d,0xe8,0x3d,0xf4,0x93,0xde,0x4c,0x97,0x98,0xe2,0x9b,0x22,0xde,0x13,0x18,0x8b,0xc5,0xe1,0x6f,0x6d,0xb4,0x19,0x46,0xff,0xbd,0xa6,0x2e,0xe6,0x48,0xcd,0x66,0x22,0x7d,0xf4,0x0e,0xeb,0x74,0x25,0x5c,0x90,0x0e,0x26,0xce,0x17,0xe9,0xdb,0x30,0xb9,0x25,0x99,0x96,0x46,0x3a,0x78,0xa3,0x76,0x2d,0x9e,0x42 +.byte 0x06,0x8a,0x1e,0x62,0x46,0xa4,0xd0,0x1d,0xe2,0x4c,0x3c,0xb4,0x4c,0xc0,0xd1,0xf7,0x05,0x5b,0xe4,0xd4,0x71,0x73,0x31,0xfc,0x98,0x2a,0x55,0xb0,0x78,0x92,0x59,0x8b,0x25,0x97,0x15,0xf2,0xf9,0x57,0x8b,0x7c,0xd4,0xc4,0x47,0x2f,0x10,0x3b,0x76,0xde,0x5f,0xb1,0xdf,0xdc,0xb0,0x15,0xd5,0x4a,0xd2,0x54,0xad,0x5e,0x32,0xf4,0x5a,0x1a +.byte 0x8d,0xe8,0xa0,0x4a,0x4e,0x04,0xdc,0xdd,0xd2,0x57,0xe5,0x24,0x4b,0x93,0x51,0xef,0xd4,0xba,0x3f,0x77,0xfc,0x0a,0x5c,0x7d,0x6e,0xa7,0x86,0xe5,0x88,0xd1,0xac,0x74,0x46,0x9a,0x39,0xb6,0x98,0x3d,0xae,0x89,0x4e,0xea,0x8d,0xdc,0xc7,0xb9,0x0c,0xd7,0xa6,0x06,0x4d,0x28,0x2b,0x51,0x2b,0xdb,0x30,0x4a,0x91,0x1c,0x40,0x89,0xe4,0xba +.byte 0x72,0xd5,0xed,0x16,0x66,0xb8,0xef,0x81,0xd9,0x51,0xf8,0x1b,0xff,0xab,0x8b,0x52,0xb8,0xf3,0x11,0xb3,0xe5,0x04,0x5a,0xb0,0x60,0xa3,0x35,0x12,0x6a,0xa0,0x75,0x5c,0x21,0xa9,0x5a,0xe8,0xd3,0xd7,0x8a,0x1f,0xe0,0x9b,0xb7,0x1e,0x7d,0xbe,0x81,0xaa,0x56,0x5a,0xd8,0x2d,0x7e,0x0c,0x60,0xb2,0x68,0x26,0x6d,0xaa,0x8b,0xcc,0x11,0x40 +.byte 0x25,0xea,0xc9,0x94,0xfb,0x3b,0x9b,0xa7,0x3a,0xde,0xd9,0xfe,0x6b,0x4b,0xfc,0x3f,0xbf,0xdd,0x51,0x9b,0xa1,0xca,0x2f,0xed,0x33,0xd8,0x3d,0x92,0xa4,0x1d,0xee,0xb2,0x47,0xd0,0x72,0x6a,0x96,0x33,0x0f,0xdd,0x0a,0xd9,0xbd,0x86,0xdb,0x25,0x53,0x0e,0x3c,0x31,0xad,0x05,0xb9,0x24,0x13,0x00,0xdf,0xc2,0x7c,0x3d,0x03,0x9b,0xf6,0x6d +.byte 0x93,0xd9,0xdf,0x73,0xf8,0x1c,0x98,0xe2,0x77,0x46,0x46,0xdc,0x07,0xe6,0xbb,0xc1,0xa7,0xb6,0xbe,0x21,0x07,0xae,0xdb,0xca,0x69,0x2d,0x8a,0x2b,0x59,0x27,0xe0,0x7c,0xf0,0xf1,0x34,0x69,0x97,0x44,0xba,0xbb,0x48,0x9f,0xd9,0xd8,0x16,0x1a,0xef,0x11,0x68,0xb6,0xaf,0x3a,0x10,0xc6,0x7c,0xd1,0x12,0xc7,0x89,0x47,0xe3,0xd1,0x24,0xc6 +.byte 0x44,0x9f,0x7e,0x6a,0x66,0x43,0x48,0xd6,0x9f,0x7b,0xf0,0x1f,0xd2,0x5f,0x2b,0xa7,0x13,0x6a,0x7c,0x70,0x08,0x38,0xb0,0x00,0xbc,0x7c,0xd3,0x01,0x9b,0xf6,0x29,0xd3,0x9c,0xa4,0x11,0x90,0xe4,0x9f,0x04,0xd6,0x21,0xec,0xfd,0xcb,0xb8,0xe6,0xb6,0x49,0x2b,0xfa,0x4b,0x90,0x9e,0xc6,0x0c,0x87,0xff,0x5e,0x2e,0xcc,0xf8,0x09,0x70,0x52 +.byte 0x42,0xec,0x88,0xac,0x1e,0x76,0x2b,0xeb,0xfc,0xb3,0x65,0x81,0x34,0xb1,0x06,0x90,0xde,0xb2,0xc4,0xd3,0xfd,0xd4,0x9c,0x78,0x1a,0x5c,0x8f,0x65,0x0a,0xbd,0x88,0xe5,0x95,0x06,0xb5,0x94,0xe5,0xbf,0x90,0x31,0xbb,0xcb,0xce,0x19,0x51,0x25,0x4a,0x47,0x35,0x26,0x93,0xdb,0xe2,0x93,0x36,0x47,0x7d,0xdd,0x4e,0xd5,0xeb,0xdd,0x63,0x1c +.byte 0xbc,0x2d,0x75,0xdb,0xd4,0xfa,0x60,0x4b,0x51,0x45,0x32,0x0f,0x01,0xf9,0x73,0x9b,0xd8,0xbc,0xee,0xaa,0x7d,0x2e,0xfe,0xbf,0x9d,0x45,0xae,0xe2,0x01,0xe3,0xbf,0x58,0xdc,0xc0,0xb8,0xe8,0x44,0x16,0x3b,0xd8,0xaa,0x3b,0x13,0xca,0xfb,0x5f,0x8d,0xb3,0x2a,0x83,0x66,0x49,0xae,0x54,0x02,0x4e,0xd8,0x68,0xee,0x21,0x1a,0xbb,0xf4,0xf7 +.byte 0xdf,0xf1,0x51,0x7b,0x62,0xa8,0xb2,0xdc,0x4b,0xd4,0x04,0xd2,0x05,0x49,0xdd,0xa4,0x75,0xe6,0x64,0x82,0xe7,0x25,0x55,0x60,0x2c,0x9f,0x8a,0x7a,0x11,0xe9,0xf2,0x72,0xfe,0x89,0xe1,0xaf,0xca,0x0c,0xb9,0xf5,0xcc,0xcf,0x07,0xef,0x8f,0xbb,0xef,0x53,0x1e,0xe2,0xfb,0x98,0xe8,0x05,0xab,0x4e,0x7e,0x38,0x56,0x24,0xd5,0x74,0x1c,0x95 +.byte 0x1a,0x0e,0x62,0x92,0x80,0x16,0x45,0x78,0x2f,0xb1,0xe1,0x83,0x24,0x2b,0x16,0x5c,0x05,0x52,0x17,0xe9,0xe8,0x9e,0x5d,0x63,0x8f,0x77,0xc4,0x89,0x22,0x76,0x43,0x31,0xfd,0x09,0xc0,0x51,0x70,0x57,0x2d,0x51,0x91,0xe5,0x61,0x3f,0x77,0xff,0x17,0xfc,0xa6,0x19,0x9d,0x82,0x46,0x11,0x0c,0x77,0x19,0x2a,0xf5,0x19,0xb4,0x3d,0xa6,0xd4 +.byte 0x8b,0x07,0x4b,0xc6,0xa3,0x1e,0x8c,0xf5,0xe8,0x2d,0xe7,0xcc,0xa1,0x38,0x57,0x66,0x76,0x1d,0xdd,0xe3,0xb9,0x0a,0x1e,0x2c,0xad,0x09,0x07,0x26,0xff,0x7a,0xc0,0xb0,0x51,0x71,0x44,0x6d,0x2c,0x39,0x3d,0xa6,0x14,0x4e,0x74,0x2c,0x54,0x3d,0xfa,0xdc,0x2e,0x0c,0xc4,0x88,0x32,0xda,0xb0,0x9d,0xf4,0x2c,0x0a,0x1b,0xb7,0xb4,0x78,0x6f +.byte 0x1b,0x6a,0x21,0x03,0x4e,0xe0,0x87,0xa0,0x1c,0xd8,0xe6,0x0c,0x97,0x47,0xde,0x98,0x81,0x3d,0x39,0x93,0x3d,0xcb,0x29,0xa3,0x93,0x8d,0x27,0x5d,0x29,0xb5,0x85,0xc4,0x32,0xd8,0xdc,0x19,0xb1,0x63,0xdc,0x76,0x32,0xc3,0x52,0x9a,0xfd,0x3d,0xff,0xf9,0x94,0x55,0x72,0xbb,0x4d,0xe2,0x42,0xd2,0xf7,0xb2,0xac,0xac,0x5d,0x50,0x95,0xda +.byte 0x3a,0x87,0xb6,0x0f,0x27,0x72,0x34,0xe7,0xe8,0x9f,0xc7,0xba,0xca,0x8d,0xf3,0xb9,0xa1,0xdd,0xd7,0xa5,0x70,0x3b,0xcc,0x72,0x0e,0x9d,0x85,0x75,0x01,0x11,0xe1,0xc2,0xca,0xcb,0x40,0x3a,0x31,0xf2,0x5d,0x0c,0x63,0xc8,0xbf,0x38,0xde,0x09,0x3b,0x32,0xaa,0x6c,0x07,0xd2,0x2b,0x3b,0x94,0x37,0xd0,0xd9,0xe0,0x4c,0x25,0xa3,0x22,0x64 +.byte 0x05,0xcc,0x69,0x9e,0x73,0xd4,0x46,0x2c,0x73,0x23,0xd0,0x6f,0x09,0xff,0x8b,0xef,0x7a,0x08,0x3e,0xa2,0xa7,0x9d,0xf5,0xc9,0x40,0xd1,0x06,0xd6,0xe3,0x89,0xa5,0xcc,0x9f,0x40,0x67,0x80,0x11,0xec,0x5d,0x23,0x19,0xf3,0x66,0xaf,0x06,0xcc,0xe4,0xb6,0x5e,0x20,0xf7,0x19,0xce,0x1a,0xb6,0x86,0x0d,0x39,0x1d,0xc8,0x0a,0xdb,0x50,0x52 +.byte 0x7e,0x3b,0x96,0x9f,0x05,0xdd,0xd8,0xdf,0x40,0xdf,0xe4,0x66,0x14,0x4d,0x4e,0xb3,0x9f,0x86,0x7b,0xc2,0x99,0xc3,0x8f,0xb9,0xe7,0xc3,0x50,0xa4,0xab,0xb8,0x8e,0xc5,0x28,0xce,0x8b,0x51,0xcb,0xad,0xd8,0x1a,0x23,0x7d,0x12,0xc2,0xaf,0x1a,0x93,0x4c,0x57,0xe9,0x59,0x6a,0x03,0x65,0x81,0x07,0x40,0x84,0x92,0x9d,0x22,0x8a,0x3d,0x27 +.byte 0x39,0x05,0xdd,0xf7,0x20,0xad,0xc2,0x03,0x27,0x87,0x8e,0xc1,0x23,0xad,0xe5,0x59,0x16,0xe7,0xde,0xe4,0x44,0x6b,0x06,0xb5,0x1d,0xaf,0xda,0x08,0x4a,0xfa,0x75,0x1a,0x0b,0x35,0xe8,0x6e,0x29,0xd3,0x79,0x19,0x80,0xb9,0x5f,0x36,0xec,0x43,0x25,0x3c,0xbc,0xcf,0x70,0x0c,0xc7,0x2c,0xbc,0x2e,0x72,0x40,0x73,0x98,0x11,0xc9,0x72,0x9f +.byte 0xd9,0x95,0x9f,0x8d,0x4a,0x52,0xbb,0x89,0x30,0x5b,0xa2,0x7e,0x0c,0x21,0x11,0xda,0x4e,0xa1,0x7c,0xc1,0x0f,0x95,0x1b,0x5b,0x2e,0xbd,0xae,0x8a,0x56,0x82,0x8f,0x84,0x43,0xdf,0x24,0xac,0x99,0xaa,0x8a,0xaf,0x82,0x33,0xf7,0x0a,0xbf,0x5e,0xfd,0xf2,0x91,0xf0,0xe1,0x5d,0x4e,0xa5,0x16,0x6e,0xb4,0x39,0x8b,0x99,0x32,0x6b,0xc8,0x16 +.byte 0xc1,0x84,0x10,0xc2,0x74,0x54,0xfc,0x02,0x71,0x44,0xfc,0x52,0xfa,0xc2,0x3c,0x8d,0xf7,0x8b,0x1e,0xcc,0x5e,0x43,0x66,0x29,0x29,0x93,0xe7,0xf6,0x9f,0xa8,0xa3,0x35,0xc9,0xde,0xb0,0xbe,0x4d,0xdf,0x8c,0x61,0x5a,0x6b,0x16,0x88,0x33,0x65,0x47,0x98,0xd2,0xf8,0x71,0x09,0x9f,0x00,0xb6,0x9e,0x21,0x37,0x2a,0x0b,0xb4,0x74,0x6b,0x0e +.byte 0x6e,0x4d,0x14,0x45,0x6c,0x1b,0xa8,0x4c,0xa7,0xc6,0xc3,0x36,0x6e,0x9e,0x63,0x5a,0x36,0x76,0x04,0x06,0x7f,0xdd,0x74,0x24,0x19,0xd8,0xb7,0xbc,0x6c,0x52,0x82,0x67,0x6b,0xd5,0xcb,0x81,0xdf,0xd7,0xe4,0xdd,0x14,0x33,0x71,0xcf,0x6b,0x7f,0xaf,0x66,0x27,0x8a,0x70,0xb8,0x45,0xae,0x8c,0x1a,0x65,0xd3,0x16,0x5c,0x05,0x65,0xd0,0xfb +.byte 0x07,0xe3,0x98,0xa9,0x94,0x27,0x6c,0xac,0xfc,0xee,0x1b,0x35,0x43,0xd6,0x3b,0x41,0x1c,0x86,0xc0,0x4f,0xf3,0x63,0xf4,0xba,0x4d,0xdf,0x6a,0xda,0xcf,0xb5,0x9f,0x69,0x3f,0x3d,0x0c,0x80,0x79,0x02,0x34,0x4a,0x9a,0xfd,0xb6,0xea,0x0b,0x61,0x32,0x67,0x2d,0x6a,0x6b,0xcb,0xcf,0xa6,0xee,0x6a,0x93,0x11,0x00,0xb8,0x6e,0x27,0x88,0x62 +.byte 0xf7,0x4c,0x7b,0xe1,0x13,0xe1,0x47,0xaf,0x96,0x24,0x3b,0x46,0x8c,0xf4,0xbe,0x13,0xed,0x65,0xe1,0xf2,0x36,0x2d,0xa4,0x6d,0x5e,0xa6,0x93,0xfb,0x64,0x0e,0xbd,0x50,0xdc,0x29,0x4f,0x90,0x8e,0xe1,0x7f,0x5e,0x47,0x08,0x9b,0x1c,0xb7,0xce,0x06,0x80,0x52,0xc0,0xb5,0x82,0x77,0x49,0x3c,0xe0,0x70,0x1f,0x84,0x75,0x9e,0x19,0xb2,0x83 +.byte 0xda,0x40,0xf8,0xd7,0x27,0x1e,0xbc,0x39,0xb5,0x1d,0x25,0x75,0x63,0x7d,0x85,0x2f,0x09,0x07,0xe9,0x73,0x8e,0x2b,0xb8,0x9a,0xbe,0xd6,0x90,0x91,0x6e,0xdb,0x7c,0x9d,0x9b,0x43,0x1d,0x21,0x88,0x76,0xb0,0xaa,0x7b,0x68,0xe4,0xa7,0x92,0x64,0xe4,0x1f,0xff,0x53,0x1d,0xf7,0xc0,0x44,0x5c,0x0a,0x1e,0xcd,0xa7,0x6e,0x41,0x1c,0x8c,0x7d +.byte 0x66,0xa7,0xf6,0xfc,0xa9,0x0d,0x3f,0x9c,0xfb,0x15,0x87,0x14,0x20,0x43,0x1b,0x05,0xf5,0xea,0x5c,0x07,0x61,0xb3,0x0e,0x7c,0x52,0x57,0x1c,0x09,0x33,0xb4,0xd8,0x3d,0x9d,0x17,0xee,0x86,0x25,0xdc,0x6b,0xcd,0x58,0xb7,0x18,0xbd,0x85,0x39,0x0b,0xb9,0xb8,0x35,0x3a,0x86,0xbb,0x88,0xb5,0x5e,0x4b,0x0a,0x7e,0x9c,0x02,0xb5,0x45,0xe5 +.byte 0xc7,0x38,0x56,0x1e,0xe4,0xe7,0xf7,0x88,0xac,0x75,0x9a,0x97,0xa8,0x15,0xb6,0x2d,0xcf,0x2a,0x59,0x65,0x0e,0x00,0x9f,0x8e,0xa9,0x94,0x23,0x1c,0x40,0xe4,0xb9,0x6b,0xcf,0xf0,0x53,0x7f,0x98,0xd1,0xa7,0x72,0xd7,0xe3,0x22,0xfd,0x5f,0x3d,0x3f,0xd6,0x21,0xb4,0x84,0x0c,0x1b,0x1d,0x00,0x2d,0x8f,0x72,0x22,0x2d,0x2c,0x8c,0x54,0x46 +.byte 0xe5,0x53,0xca,0x66,0x67,0x5e,0xb3,0x62,0x6f,0xaf,0x33,0x81,0xc1,0xf6,0x77,0x92,0x3e,0xdb,0x74,0x68,0x93,0xca,0x38,0xf8,0x18,0x50,0xef,0xe4,0xc9,0x45,0x40,0xc9,0xf0,0xc5,0x7a,0x4b,0xf2,0xd8,0xca,0x72,0x62,0x5f,0x67,0x10,0x10,0xcc,0xff,0x1a,0xc7,0x9c,0x3a,0x7f,0xca,0x11,0x67,0x3e,0xca,0xa6,0x9c,0x48,0x15,0xaf,0x68,0xb7 +.byte 0x2b,0xa7,0xa2,0x68,0x7b,0x40,0xb2,0xe3,0x27,0x18,0x7e,0x94,0x4c,0xca,0x0e,0x5b,0x3a,0x30,0xcb,0xc3,0x72,0x31,0x6b,0xe6,0x3e,0xa7,0x09,0x3e,0xf2,0x53,0xda,0x7d,0x6f,0x55,0x08,0xd2,0x26,0xc3,0x07,0x52,0x38,0x90,0x04,0xc6,0x3c,0xb6,0xb5,0x2a,0x7b,0x38,0x07,0x9e,0xb4,0xa5,0x48,0x36,0xf5,0x5e,0xac,0xa8,0x97,0x4e,0x37,0xc2 +.byte 0xee,0x12,0x88,0x28,0xd0,0x7d,0xd1,0xae,0xc0,0xc7,0x84,0x69,0x25,0x79,0x9a,0x8a,0x16,0x49,0x50,0x72,0x69,0x1a,0x02,0xc9,0xfe,0xd5,0x2c,0x40,0xc6,0xc8,0x8b,0x7d,0xe3,0xab,0x89,0xe3,0x78,0xf1,0xe9,0xbd,0x3c,0xbd,0x02,0x96,0xfe,0x0c,0x5c,0xc4,0x9e,0x89,0x3a,0x4b,0xe9,0xcd,0x41,0x1c,0x59,0x71,0x52,0xb0,0xc9,0x36,0xf1,0x80 +.byte 0xab,0x5e,0xbc,0xf1,0x20,0x99,0xc0,0xab,0x0c,0x59,0x43,0xc2,0xcd,0x09,0xa6,0x30,0x91,0xfa,0x12,0x23,0xbe,0x18,0x24,0xa6,0xbf,0x55,0x4c,0xe8,0x22,0xff,0x01,0xbd,0xde,0x2c,0x72,0x3c,0x0a,0x36,0xd5,0x7e,0xed,0x6a,0xe3,0x63,0x14,0x60,0xa3,0x0a,0x6f,0x04,0x90,0x64,0xc1,0xd1,0x78,0x54,0xae,0x19,0x74,0xe2,0xea,0xec,0x86,0x22 +.byte 0xc7,0xdb,0xf6,0x48,0x0e,0x75,0x43,0x04,0xf7,0x62,0xe6,0xa9,0x46,0x65,0xcc,0xa5,0xa4,0x1a,0xb2,0x94,0x7b,0x7a,0x8c,0x9a,0x80,0x62,0x32,0x17,0x80,0xc3,0xc6,0x54,0x0e,0x4e,0xe3,0x46,0x74,0xa8,0xae,0xcd,0xd0,0xc1,0x19,0x84,0x61,0xb4,0x1d,0x18,0x4d,0x80,0xf1,0x70,0x40,0xbe,0xa2,0xa3,0x38,0xcc,0x21,0x1c,0x2f,0x72,0x85,0x72 +.byte 0x0a,0xa1,0x0d,0xa3,0xdc,0xa2,0xf4,0x64,0x84,0x3c,0x43,0x6d,0xfb,0x45,0x11,0xf9,0x40,0xdc,0x25,0x85,0x80,0x41,0x84,0xa7,0x06,0x2e,0x79,0xbf,0x0c,0xa7,0x8f,0x17,0xea,0xa2,0xc4,0x6f,0xd8,0xc6,0x9e,0xab,0xdc,0x45,0x6f,0xaa,0xda,0xe9,0xe6,0x84,0xf0,0x5f,0x8a,0x90,0x99,0x33,0x9b,0xcf,0x03,0xe6,0xce,0x19,0x0c,0xad,0x2f,0xad +.byte 0x81,0xb8,0x17,0xff,0x6b,0xff,0xc8,0x14,0xa6,0xf4,0x37,0x55,0xdc,0xbb,0x09,0x3c,0x3c,0xe7,0x29,0x95,0x23,0x5c,0x58,0x92,0x2e,0x95,0xe8,0x3b,0x8b,0x81,0x2d,0xfd,0x58,0x8a,0x1f,0xdf,0xf1,0x54,0xa3,0xd0,0x01,0xaa,0x3d,0x32,0x61,0xe5,0x8e,0x62,0xa7,0xf6,0x3b,0x2d,0x0e,0xff,0xf4,0xe9,0x08,0xe7,0xef,0x3a,0x63,0x10,0x34,0x49 +.byte 0x14,0xe1,0x88,0xd0,0xb2,0x1d,0xb7,0x31,0xc9,0xa4,0x48,0xa8,0xaf,0x64,0x29,0xab,0x1f,0x14,0x13,0xa7,0xb8,0xb8,0xa4,0x24,0x1d,0xf9,0xb6,0x3e,0x62,0xa6,0x5e,0x10,0xcb,0x44,0x5c,0x9d,0x2c,0x58,0x3a,0x36,0xa3,0x81,0x9f,0xa9,0xa4,0xa1,0x06,0x1d,0xbf,0x97,0x03,0x88,0xf2,0xf4,0x81,0x3e,0x1b,0x35,0xea,0xd0,0xb6,0x96,0xa1,0xf7 +.byte 0x1e,0x49,0xb7,0xe8,0x23,0x6f,0x05,0x7c,0x9f,0xc4,0x53,0xb1,0x63,0xdc,0x07,0xbb,0xd6,0x57,0x85,0x4d,0x77,0x33,0x21,0xbf,0x77,0xfe,0xfe,0x34,0x52,0x02,0xe7,0xe4,0x87,0x11,0xa0,0xfd,0x11,0x4a,0x34,0x36,0x88,0x69,0xdf,0x77,0xfd,0x83,0x71,0xa8,0x68,0xed,0x49,0x39,0xb4,0x06,0x32,0x48,0xf1,0xd2,0x4e,0x61,0x47,0x65,0x26,0x87 +.byte 0xba,0x2b,0x2e,0xf4,0x12,0xfc,0xd0,0x84,0x81,0xa1,0x59,0xdc,0xe3,0x13,0x51,0x9e,0xea,0x57,0x56,0x3b,0x7c,0x71,0x6b,0xff,0xe9,0xf8,0xec,0x3e,0xe7,0xbe,0x65,0x47,0xe1,0x6f,0x8f,0x7c,0x3a,0x77,0xdb,0x75,0x4a,0x43,0x43,0x39,0x37,0xb2,0x68,0x16,0x72,0xdb,0x49,0xf7,0x13,0x3c,0x09,0x93,0xef,0xc1,0x2a,0x99,0xff,0xc7,0xdb,0xd9 +.byte 0x80,0xd2,0xfe,0x7c,0x39,0x50,0x21,0xdc,0x1d,0xae,0x9b,0xfc,0xd4,0x5f,0x56,0xae,0x6a,0xd9,0x35,0xa1,0x2b,0xd6,0x53,0x90,0xe8,0x8c,0x31,0x73,0x0f,0xa3,0x9e,0xa1,0x2f,0x76,0xa8,0x72,0x4d,0x5e,0x58,0xca,0x9f,0x8f,0xdf,0xf0,0xf9,0x6a,0x54,0xb1,0x5f,0x39,0x03,0x7a,0x26,0x06,0x71,0x74,0x6f,0x42,0xee,0x63,0x76,0x13,0xb9,0xed +.byte 0x74,0xad,0xf9,0xe0,0xa7,0x35,0x9c,0x18,0xe0,0xf7,0xc5,0xb2,0x27,0x14,0x0f,0xd7,0xaa,0x17,0x1c,0x8f,0x50,0xc8,0xb0,0xc2,0x63,0xff,0x38,0x65,0x87,0x69,0xb3,0xd5,0x3f,0xb4,0xf2,0xe8,0x8b,0x7b,0x24,0xdc,0x1f,0x62,0x2f,0x0a,0xd7,0x2d,0x0f,0x6f,0x48,0x1d,0xf0,0x3c,0xb1,0xb4,0x10,0x8d,0xc6,0x5c,0x79,0x30,0xde,0x20,0x9e,0x7b +.byte 0xf1,0xa5,0x73,0x38,0x05,0x1b,0x13,0x78,0xb1,0x02,0x2f,0x32,0x2a,0x07,0x59,0xa4,0xfc,0x88,0x08,0x0c,0xff,0x42,0x72,0x6a,0xb0,0x8a,0xc9,0x3d,0xdb,0x04,0x90,0xdd,0x0b,0xbc,0x3a,0x4e,0xfa,0xd4,0x57,0xd8,0x2f,0x7b,0xcb,0xd9,0x6a,0xe7,0xfd,0x32,0x17,0x99,0x20,0x64,0x1e,0x76,0x07,0xb9,0xa3,0x58,0x7f,0x79,0xda,0x0c,0xe0,0xec +.byte 0x30,0xbf,0xa4,0x85,0x0a,0x39,0xc0,0xe9,0xf7,0xbe,0xd1,0xa7,0x94,0x1f,0xa6,0x6d,0xe8,0xc5,0x1b,0x04,0x27,0xf4,0xdc,0xc2,0x4d,0x9a,0x0e,0x9b,0xe8,0xec,0x56,0x99,0x90,0x5f,0x8b,0x28,0x0a,0x92,0xaf,0x0b,0xa1,0xd2,0x85,0x86,0x26,0xc7,0x8a,0x01,0xa4,0x08,0x29,0x32,0x7d,0x3d,0xa5,0x74,0x9c,0x90,0x63,0x83,0x1f,0xd4,0xee,0x98 +.byte 0xf5,0x14,0xff,0x39,0xeb,0xbf,0x40,0xa4,0xc9,0x70,0x4f,0x81,0x03,0x19,0xef,0xf5,0xdf,0xf7,0x00,0x75,0xcb,0x2e,0x81,0x41,0xc5,0xda,0xfb,0x67,0x6a,0xf0,0xa3,0xd3,0x5a,0x60,0xaf,0x72,0x27,0x3e,0xad,0x37,0x3e,0x3d,0xe6,0x85,0x4c,0xa1,0xb0,0xe9,0xab,0xc5,0xd3,0x8b,0x04,0x0d,0x64,0x7f,0xa2,0xb9,0x6d,0x6d,0x28,0xf8,0x4b,0x43 +.byte 0x78,0x51,0xf4,0x84,0xf1,0x3c,0x67,0xd8,0xdd,0xd7,0x0b,0x67,0xc3,0xd9,0x95,0x7b,0xfc,0x7d,0xc4,0x33,0x05,0x90,0xec,0x0a,0x98,0xfb,0x6b,0x0d,0xe9,0x8c,0x74,0x94,0x20,0xf8,0xcb,0xca,0xb6,0x72,0x07,0x7c,0xef,0xfa,0xd0,0x3f,0x51,0xc5,0x6e,0xf8,0x3f,0x37,0xe3,0xfe,0xb9,0x9a,0x9c,0xb3,0xf6,0x96,0x4e,0x65,0x77,0x21,0xcf,0xaf +.byte 0xe7,0x20,0x06,0xc2,0x93,0xc5,0x2e,0xc0,0x7f,0xe5,0x0a,0x42,0xad,0x89,0x64,0x6e,0x95,0xbf,0x95,0x1d,0x24,0x47,0xf8,0xd5,0xec,0x7c,0x1f,0x98,0x67,0x9c,0x5f,0x6e,0xaf,0x74,0x95,0x65,0x4c,0xb6,0xe0,0xd3,0xb7,0x5b,0xc7,0x76,0xe6,0x87,0x19,0xf5,0xc7,0xb0,0x2d,0xe0,0x8b,0xaf,0x6d,0x3c,0x31,0x6e,0x84,0xc8,0x86,0x51,0xff,0x29 +.byte 0x2a,0x1f,0xea,0xd4,0x2d,0x1a,0x8f,0x04,0xb4,0xc0,0x6a,0x93,0xc2,0xc5,0xe7,0x98,0x8c,0xc7,0xff,0xbf,0xb8,0x8e,0x5b,0x29,0x5b,0xa6,0x87,0xc7,0x02,0x88,0x51,0x29,0x66,0xd8,0xf3,0x68,0x38,0xd4,0xa6,0xbd,0xa2,0x5c,0x1b,0xb7,0x13,0xd7,0x64,0xed,0x68,0x21,0x88,0x2b,0x59,0xba,0x95,0x84,0xda,0xce,0x61,0x3b,0x51,0x04,0x3e,0xc2 +.byte 0xdd,0xec,0x0c,0x6b,0xbe,0x35,0x51,0x63,0x29,0x40,0xcb,0xa5,0x62,0xe4,0x27,0x35,0x15,0x1f,0x7c,0x8b,0xe5,0xd0,0x2e,0xde,0x8c,0x3d,0xa0,0xd2,0xbe,0x51,0x3d,0x65,0xed,0x94,0x8b,0x8c,0x00,0xda,0x0e,0x78,0x4d,0x25,0xef,0x8e,0x3c,0x55,0x77,0xeb,0x58,0x06,0x7d,0xd1,0xfc,0x73,0xad,0x76,0x0a,0x81,0xbe,0xda,0x50,0x30,0xf3,0xfd +.byte 0x58,0x25,0x0a,0x4b,0x1b,0x1e,0x0b,0xd0,0x9b,0xbc,0xb9,0x31,0x26,0xbc,0x4c,0x7b,0x05,0xd7,0x5c,0xe4,0x7a,0xdd,0xff,0x04,0xac,0x5d,0xcb,0xfd,0x91,0x34,0x68,0x26,0x1e,0xb4,0x86,0xcc,0xe3,0x90,0xaf,0x6a,0x65,0xda,0x6b,0x3e,0xec,0x44,0x90,0x72,0x7a,0x34,0xfc,0x7b,0x65,0x83,0x34,0x93,0xbc,0x85,0x50,0xdf,0x03,0x89,0x35,0xb8 +.byte 0x6a,0x39,0xd3,0xb6,0x38,0x66,0x5b,0xa7,0x9e,0x93,0xa2,0x3b,0xb6,0xe7,0xee,0x1e,0x5c,0xd6,0xa8,0xd9,0x1f,0xf7,0xd1,0x0a,0x2f,0x87,0x63,0xf4,0xf9,0x8c,0xd4,0x7c,0x02,0xaf,0x7e,0xb6,0xc7,0xfc,0xc9,0x4d,0x35,0x0c,0x8c,0x3c,0x13,0x9d,0xe6,0xd7,0x2e,0x4b,0x91,0xcc,0x88,0xdb,0xfc,0x68,0x3a,0xd1,0x15,0x07,0x16,0x66,0x11,0x9b +.byte 0x66,0x9f,0x3f,0x37,0xae,0x11,0xba,0x5f,0xc7,0x3a,0x1a,0x49,0xbc,0x14,0x21,0x75,0xdc,0xcc,0xbb,0x5c,0xed,0xdc,0x8b,0x21,0x9a,0x8f,0x5f,0x91,0x6a,0x9b,0x26,0x33,0x64,0x45,0xa0,0xdf,0xc4,0xa1,0x32,0xc4,0x4c,0xc2,0x42,0x1b,0x59,0x37,0x1f,0xdb,0x01,0x6d,0xed,0xd8,0x05,0x5b,0x90,0x59,0x32,0x45,0x50,0x5d,0xf1,0x34,0xc4,0xb7 +.byte 0x52,0x97,0xbb,0x42,0x12,0xf1,0xa5,0x76,0xe4,0x1a,0xbc,0x4a,0x64,0xd3,0x08,0xac,0xe1,0x49,0x70,0x61,0xc8,0xcf,0xb1,0xd3,0xc4,0x7f,0x38,0x31,0x6b,0xd3,0xe1,0xe1,0xe9,0x5b,0xaa,0x7a,0xec,0x26,0x81,0x44,0xd3,0xb9,0x63,0xea,0x37,0x98,0x15,0x41,0xf1,0xa1,0x72,0x87,0xcc,0x3b,0x6a,0x27,0x9b,0x85,0xa8,0x7b,0xb6,0x25,0xf9,0xd4 +.byte 0x84,0x3e,0x66,0x12,0xce,0x24,0xee,0x22,0x51,0x73,0x7e,0xba,0x1e,0x95,0x64,0xc5,0xbf,0x4e,0x4f,0x73,0xc1,0xc3,0x98,0xb9,0x6b,0x90,0x1f,0x39,0xfc,0x03,0x55,0x76,0x8c,0x57,0xea,0xe8,0xc1,0x25,0x09,0x69,0xc0,0xe8,0x54,0x91,0xc1,0x7c,0x52,0x8e,0x82,0x6d,0xf2,0x0e,0x3f,0xa9,0x98,0x04,0x40,0xda,0x1c,0xc0,0xbb,0x42,0xf0,0x7d +.byte 0xed,0x78,0xb0,0x4f,0x94,0xba,0x0d,0xbf,0x60,0xbe,0x09,0x67,0x42,0xc5,0x41,0x4c,0x80,0x8d,0x30,0x10,0xa9,0xd2,0x07,0x8c,0xa8,0x40,0xc6,0xe2,0x08,0x42,0x7f,0x99,0xad,0xc5,0x66,0x1f,0xfd,0xd2,0xc5,0x79,0x77,0x9b,0x60,0x7d,0x25,0x2d,0x69,0x14,0x94,0xa5,0xf0,0x0a,0x14,0xb6,0xf9,0xbe,0x3a,0x4a,0x3d,0xc6,0x45,0x2e,0x27,0x4a +.byte 0xd1,0x1d,0xcf,0x08,0xee,0x93,0x3c,0xb5,0x8a,0xee,0xdd,0xf3,0x33,0xa6,0x35,0x9d,0xd8,0xb4,0x68,0xc5,0x98,0x09,0x78,0xcc,0xb3,0xeb,0x0f,0xcd,0x25,0xf8,0x17,0x9c,0x45,0x77,0xc7,0x06,0x40,0x44,0x90,0xec,0x6a,0xd9,0xf5,0x05,0xd4,0x88,0x17,0x47,0xeb,0x29,0x85,0x32,0x76,0x7b,0xa4,0xe3,0x65,0x30,0x50,0x9a,0x99,0x26,0x91,0x60 +.byte 0xb0,0xb8,0xe5,0x8d,0x35,0x9e,0x9a,0x13,0x65,0x82,0xb2,0x4b,0xf1,0xed,0x1f,0xb7,0xb4,0xc0,0x03,0xe6,0x1d,0x2b,0xaa,0x1e,0x01,0x92,0x0b,0xcb,0x34,0x77,0x80,0x94,0xc2,0x4e,0x3b,0x73,0xd8,0x2e,0xd8,0x95,0x33,0x05,0x65,0xa2,0x99,0x29,0x7a,0xd1,0xb3,0xed,0x5a,0x8d,0x4d,0x6a,0x6d,0x69,0x2b,0x5a,0xa1,0x3a,0xc0,0x81,0x96,0xf1 +.byte 0xc2,0xa7,0x4e,0x07,0x90,0x04,0x99,0x70,0xea,0x1a,0x3a,0x26,0xb5,0xed,0x92,0xbd,0x57,0x80,0x11,0x06,0xf2,0xb4,0x05,0x69,0x7a,0xbf,0x27,0xa1,0xbd,0xdb,0x09,0xe5,0xb3,0x2d,0x86,0x41,0xcc,0x5d,0x68,0x37,0x9e,0x98,0xa5,0x4a,0x20,0x8a,0x5f,0x54,0xae,0x4f,0x73,0xd0,0x22,0x18,0x8d,0x2b,0x91,0xcb,0xbb,0x83,0x1e,0x04,0x93,0xc8 +.byte 0xc3,0x89,0x35,0xfd,0xda,0xeb,0x52,0x53,0x9f,0xdc,0x33,0xf0,0xe0,0x99,0x19,0x11,0xeb,0x55,0xd3,0x3c,0x5f,0xca,0x29,0x52,0xe7,0x6b,0xd1,0xad,0xeb,0xed,0x8e,0x68,0x82,0x91,0x85,0x81,0x68,0x70,0x78,0x61,0x1e,0x0c,0x09,0x3a,0x82,0xdc,0xdb,0x26,0x66,0x1c,0xa3,0x80,0x99,0x23,0x8a,0x45,0xd7,0xb8,0x10,0x97,0x80,0x70,0x49,0x78 +.byte 0xa9,0x4c,0xf0,0xec,0xcc,0x05,0xd0,0x6a,0x6a,0x1a,0xa0,0xf7,0xde,0x78,0xc6,0x42,0xbe,0xbd,0xa0,0x24,0x1d,0x3f,0xdd,0xfb,0x92,0xc2,0xbd,0xd6,0x5c,0x25,0x74,0x3d,0x2b,0xb8,0x60,0x67,0xdb,0x70,0x1e,0xe8,0x9f,0xcd,0xb4,0x82,0x90,0x9e,0x2a,0x94,0xa5,0xa2,0xd4,0xd2,0x24,0xa7,0xca,0xbf,0xe1,0x8b,0xab,0xf3,0xd2,0x7c,0xa6,0xc8 +.byte 0xe6,0xaf,0xef,0xe3,0x86,0xb1,0x42,0x1d,0xc6,0xa2,0x37,0x9b,0x26,0x46,0x0b,0xfd,0xee,0x88,0xa4,0xf1,0xa8,0x72,0xaf,0xda,0x30,0x56,0x22,0xd3,0x1b,0x31,0x76,0xd7,0x03,0xef,0xf3,0x98,0x16,0x4d,0x36,0x57,0x1b,0xd5,0x90,0xb8,0x67,0x50,0x7f,0x22,0xa8,0xdc,0x9c,0xf1,0x6e,0xa4,0x65,0x45,0xf0,0x73,0xd8,0x7e,0x41,0xb0,0x68,0x52 +.byte 0x00,0x0a,0xda,0x99,0x6c,0x84,0xce,0xf0,0x73,0x65,0x93,0x52,0xc8,0x4b,0xb4,0x72,0xda,0x2c,0xa1,0x47,0xb5,0xe3,0x00,0x63,0xc0,0x4e,0x84,0x16,0x00,0xe6,0x1f,0xbd,0xba,0x49,0xcb,0xd3,0x7d,0xd2,0xeb,0x4a,0xb2,0xd5,0xb2,0x53,0x96,0xfb,0x04,0x73,0xc0,0x09,0x31,0xf3,0xf2,0xc0,0xd3,0xa6,0xe1,0xea,0xe1,0x58,0xbe,0x90,0xc9,0xfb +.byte 0x6e,0x13,0x69,0xbe,0x17,0xd4,0x16,0x5b,0xcb,0xf4,0x93,0x0a,0x38,0x46,0xea,0x64,0xad,0xb0,0x0d,0xc0,0x3b,0xfc,0xe3,0xd4,0x20,0x75,0x0c,0x3e,0x71,0x1b,0x5f,0xde,0xff,0xd6,0xfa,0x6f,0xe4,0x10,0xb0,0x14,0x05,0xaa,0x05,0x70,0x5e,0xbd,0x58,0x9f,0x3c,0x9d,0x4f,0xa7,0x5a,0x65,0x57,0x02,0x05,0x44,0xe0,0x95,0x9d,0xa2,0x60,0x06 +.byte 0xcb,0xfd,0x91,0x8e,0x7f,0xce,0xa1,0x80,0x94,0xbb,0x88,0xf2,0xa6,0xe7,0x83,0xf9,0x38,0x8f,0x09,0x8e,0xe4,0xa9,0xc2,0xc7,0x84,0x9d,0x25,0x09,0x52,0x8b,0x32,0xaa,0x3b,0xde,0xb6,0x82,0x9f,0x6d,0xc4,0xdf,0x11,0xf7,0x72,0x1a,0xe4,0x00,0x51,0x41,0x01,0xba,0x21,0xea,0x0a,0xda,0xf2,0xbb,0x66,0xae,0x51,0x2b,0xb0,0x6d,0x1d,0xe8 +.byte 0x4b,0x1e,0x42,0x68,0x3a,0xed,0xe6,0x59,0x13,0x42,0x07,0x54,0xae,0x2e,0x15,0x93,0xd7,0xff,0xad,0x49,0x09,0x41,0x52,0x6b,0x3b,0x9c,0x41,0x43,0x0d,0xed,0xed,0x6f,0xb8,0xe9,0x0d,0xcc,0xde,0x0d,0xaa,0x91,0xef,0x89,0x2f,0x2d,0x94,0xd0,0x03,0x2b,0x51,0x7f,0x85,0x9b,0x7b,0x08,0xc8,0xb6,0xe2,0x82,0x22,0xa9,0x57,0x71,0xf2,0xae +.byte 0x08,0xfa,0x6c,0xd8,0xca,0x78,0x42,0x98,0x23,0xfd,0x38,0x4b,0x6c,0xd3,0x9f,0xc6,0xa3,0xb2,0xc1,0x8c,0x4a,0xa3,0xcd,0x9f,0x56,0xe7,0xc2,0x06,0xd7,0xc5,0xc2,0xd9,0x98,0x57,0xc8,0x5a,0xaa,0xf4,0xaa,0x44,0x02,0x83,0x11,0x1e,0xf6,0x64,0x8d,0xf7,0x3b,0x86,0x3c,0x04,0x53,0x5f,0x62,0xc8,0x7a,0x0e,0x1c,0x4f,0xa8,0xe3,0x5c,0xe8 +.byte 0x64,0xf7,0xe3,0x5d,0xea,0xb5,0x2d,0xdb,0x7b,0x0e,0xdb,0x91,0x34,0xd5,0x87,0x4f,0xe6,0x73,0xee,0x3d,0x79,0x7c,0x67,0x48,0xb5,0xbb,0x42,0x96,0x0d,0x9d,0xbd,0x68,0x98,0xe5,0x59,0x51,0x16,0x45,0x15,0xac,0x80,0x41,0xae,0x45,0xdb,0xe4,0x2a,0x44,0x0d,0xe4,0x25,0xc7,0xd3,0x06,0xf7,0x98,0x15,0xe1,0xc5,0x9b,0x34,0x0e,0x87,0xb8 +.byte 0x90,0x1b,0x24,0x84,0x06,0x24,0xb0,0x80,0xbe,0x03,0xa0,0x95,0x10,0x1e,0x72,0xde,0x0f,0xd4,0x15,0x7b,0xa0,0xf5,0x42,0xc3,0x6f,0x10,0xe9,0x76,0x44,0xe3,0xa9,0xb7,0xef,0xf6,0xc2,0x80,0xe2,0x0c,0x2d,0xad,0xe0,0xb9,0x45,0xca,0x67,0x6f,0xb6,0xc5,0xc0,0x8d,0x25,0xee,0x50,0xeb,0x51,0xc6,0x87,0x87,0x61,0x3a,0x75,0x95,0x41,0x47 +.byte 0x26,0xfd,0x35,0xf6,0x46,0xf4,0xe9,0x42,0xc6,0xef,0x37,0x97,0xb3,0x0a,0x1d,0xc8,0xdf,0x07,0x24,0xb1,0x0d,0x07,0x43,0x67,0x7d,0x81,0x09,0x58,0xdd,0xf6,0xcf,0xf1,0x47,0x42,0xbd,0x3c,0xa3,0xd7,0xe8,0x73,0xf9,0x5b,0xff,0x2c,0xcd,0xe6,0xd1,0xe9,0x47,0x6d,0x19,0x9b,0x6a,0x63,0x69,0xf4,0x4a,0xdf,0x69,0xab,0xa9,0xb7,0xe5,0x8d +.byte 0x1c,0x44,0x52,0x0c,0x7e,0xa1,0xfe,0x9d,0xd5,0xa4,0x71,0x62,0x0b,0x3c,0xf6,0xd2,0xd3,0xe9,0x70,0x09,0x68,0xf7,0xd6,0x0a,0x00,0x61,0xf1,0xf3,0xd0,0x41,0x4a,0x14,0xc6,0xf5,0x49,0xb1,0xde,0x10,0xd3,0x20,0x8b,0xfe,0x78,0x6a,0x87,0x79,0x15,0xd3,0x43,0x00,0xbe,0x71,0x40,0xaa,0xca,0x1a,0x64,0xe3,0x96,0x34,0x2f,0xea,0x0c,0x11 +.byte 0x41,0x21,0xf8,0xa7,0x65,0x9b,0x75,0xe2,0x1e,0x6f,0x5e,0xe0,0x68,0x42,0xca,0xd3,0x19,0x35,0xe8,0x88,0x0f,0x05,0xa3,0xb1,0x73,0xea,0x53,0x79,0x40,0x24,0x00,0x86,0x20,0xbb,0x25,0x58,0x89,0x6b,0xde,0xd6,0xd0,0x36,0xbb,0x33,0x30,0x59,0x4b,0x30,0x92,0xac,0xe5,0x95,0x94,0x22,0xab,0xc1,0x10,0x35,0x9c,0xa1,0x20,0x11,0x5d,0x4f +.byte 0x57,0x5c,0x9c,0xb8,0x3a,0xdc,0x97,0xa5,0xf3,0x0b,0xf5,0x96,0xe7,0xef,0x90,0x72,0x01,0x52,0x70,0x5a,0xf0,0xd9,0x7e,0x59,0x05,0x8c,0xd1,0x45,0x47,0xbf,0x16,0x15,0xa2,0xc9,0xdd,0xe7,0x5f,0x4b,0x94,0x5f,0xe6,0xf9,0x78,0xbb,0x8f,0xf9,0x79,0x9f,0x5e,0xd7,0x1f,0x0b,0xef,0x8d,0xfe,0x75,0xd4,0x8a,0x12,0x28,0xa5,0xf9,0x6e,0x14 +.byte 0x3c,0x52,0x80,0x57,0xc6,0x96,0xae,0x67,0x27,0xc1,0x1c,0xb6,0xd6,0x1c,0x74,0x8c,0x6f,0xc7,0x71,0x3e,0xd5,0x73,0xf2,0x3e,0x02,0x15,0x67,0x18,0xb8,0x5b,0x61,0x9e,0xfa,0x7e,0xba,0x00,0xe9,0xd9,0x51,0x91,0x63,0x7e,0xf7,0xab,0xc0,0xc6,0xee,0x66,0xdd,0x66,0x88,0x7a,0x8a,0xc5,0xc2,0x08,0x45,0x62,0xde,0xe1,0xfb,0x35,0x65,0x34 +.byte 0x00,0x9e,0x1d,0x25,0xdf,0x69,0xb6,0xe3,0xfe,0xbb,0x13,0xac,0xd3,0x13,0xb2,0x64,0x5a,0xf3,0x47,0xf1,0x36,0x55,0x5f,0x1b,0x87,0xea,0x5d,0x5c,0xfd,0x8a,0x68,0x69,0x8a,0x00,0x9f,0x83,0xbe,0x79,0x7d,0x01,0x9e,0xf2,0xb2,0x5d,0x56,0xe0,0xe6,0x49,0xe5,0xe1,0x76,0x57,0x7a,0x85,0xac,0x94,0x16,0xe3,0x68,0x05,0x14,0xb5,0x33,0x54 +.byte 0x64,0x5a,0xbe,0xa3,0x04,0x90,0x5c,0x1c,0xf8,0x97,0x16,0x36,0xce,0x76,0xe7,0xf0,0xaf,0x8a,0xea,0x65,0xa8,0x15,0x5b,0x1e,0x0a,0x91,0xad,0x62,0x62,0x67,0xb4,0xf0,0x94,0x1f,0x64,0x50,0xa8,0xc0,0x6b,0x38,0x80,0xd7,0x53,0xbb,0x70,0xbd,0x54,0x01,0xb0,0xa5,0xbc,0x00,0xe0,0xd6,0x23,0x37,0xe6,0x9f,0x0f,0x2f,0x96,0x21,0xc2,0x90 +.byte 0x55,0x26,0x55,0xa4,0xcd,0x3e,0x54,0x6b,0xa6,0xb0,0x2c,0xf2,0xd4,0xcc,0x6a,0x44,0xea,0x18,0x61,0xc5,0x1a,0x8e,0x60,0x64,0xf4,0x5f,0x21,0x36,0x01,0x5d,0x9f,0xc4,0x2c,0x67,0x1c,0x48,0x94,0x16,0xae,0xa8,0x13,0x5c,0xee,0x18,0x88,0x61,0xe4,0x54,0x6b,0xa2,0xe8,0x7f,0xf0,0x15,0xc3,0xce,0xbc,0x5b,0x91,0x25,0x7b,0x1d,0xd3,0x9f +.byte 0x13,0x1b,0x01,0x5d,0x43,0xe8,0xa1,0x77,0x5a,0x87,0x79,0x8b,0xd5,0x69,0xf7,0xdf,0x66,0xa2,0x84,0x0c,0x66,0xac,0x15,0x65,0xbf,0x74,0xc0,0xd2,0x78,0x6a,0x3a,0x9c,0x98,0x62,0x04,0x41,0x95,0xb2,0x23,0x59,0xc6,0xb0,0xc5,0x22,0xc0,0xfa,0xaa,0xc8,0x94,0x73,0x91,0x5b,0x64,0x1b,0x74,0xbe,0xcb,0xa1,0x81,0xb1,0xc1,0x26,0xa1,0x94 +.byte 0x55,0x04,0xb3,0x9c,0x80,0xb7,0x00,0x6f,0x36,0xc7,0x7f,0x6d,0x97,0xea,0xf3,0xf5,0x55,0xc5,0xfe,0x61,0xd9,0xb1,0x6d,0x8c,0xa1,0x02,0x08,0xb3,0x41,0xe6,0xe6,0x57,0xc6,0xff,0x6e,0x47,0xa4,0x22,0x2e,0x2d,0x21,0x53,0xbe,0xe3,0xbe,0x15,0xec,0x23,0x9d,0x87,0xe0,0x2e,0xcc,0x6c,0xd0,0xc7,0xb7,0x3d,0xa4,0x07,0x5f,0x69,0x4e,0x2b +.byte 0x07,0x69,0x4f,0xc5,0xa3,0x66,0x52,0x91,0x8f,0xa4,0x48,0xb9,0x40,0x76,0xd9,0xcb,0x6e,0x1a,0x35,0x9e,0x50,0x9f,0xd1,0x78,0xb2,0xb8,0x0d,0xa8,0xf8,0x6e,0x07,0xa5,0x3a,0xdf,0x3c,0x32,0xa6,0x10,0xbd,0x73,0x2f,0x07,0x45,0x66,0x0f,0x61,0xce,0xc2,0x08,0x19,0x98,0x33,0x4b,0x59,0x81,0xb5,0x78,0x4f,0x46,0x88,0xae,0x29,0xf8,0xf5 +.byte 0xc2,0x29,0x6f,0x8f,0xe5,0x8f,0xb0,0x53,0xc8,0x7a,0x48,0xda,0x6f,0x7e,0x8a,0x69,0x68,0xab,0xba,0xd9,0x20,0x0f,0x96,0x69,0x41,0xa6,0x92,0x94,0x8e,0x0f,0x86,0xdf,0x8d,0x70,0xaf,0xfe,0xf1,0x20,0x50,0x01,0xff,0xca,0x30,0x24,0x67,0x4a,0x04,0xa2,0xde,0x06,0xdc,0x26,0x1e,0x17,0xbc,0x52,0x9a,0x62,0x72,0xc1,0xd8,0xd7,0xe0,0xed +.byte 0xcf,0x4b,0x13,0x80,0x9a,0xbf,0x72,0x4f,0xf4,0x24,0x26,0xcd,0xe0,0x21,0x99,0x7b,0x5c,0x4f,0xbf,0x5c,0x41,0x08,0x8b,0x17,0x69,0x62,0x60,0x2c,0x74,0xb0,0x2d,0x22,0x7e,0x25,0x95,0x6a,0x84,0x0f,0x45,0x8f,0x9a,0x92,0xa1,0xcd,0xa5,0x50,0xf0,0x52,0x7f,0x60,0xd8,0x91,0xe1,0x17,0xe1,0x66,0x8f,0xd3,0x1f,0x41,0x7f,0x6f,0xf1,0x72 +.byte 0xa3,0xb6,0x12,0x62,0x46,0x16,0xea,0x26,0x9e,0xda,0x61,0x13,0x0b,0x17,0xf7,0xe1,0xec,0xc0,0x38,0xfe,0x40,0x31,0x6b,0x38,0x2a,0x4b,0xa5,0x8e,0xfb,0x99,0x60,0xd6,0x4a,0xbd,0xfb,0x75,0x2b,0x41,0xd4,0x33,0x5d,0x35,0xfe,0x2d,0xfc,0x1a,0xac,0x02,0xb3,0xf0,0xa2,0x6d,0xfa,0x8b,0x12,0x99,0xdd,0x54,0xf2,0x1c,0x35,0xd3,0x60,0x5a +.byte 0xdb,0x65,0xa7,0x58,0x1b,0x82,0xb4,0xf6,0x49,0x77,0xf2,0xea,0xa3,0xa9,0x57,0x94,0xb7,0x6e,0x19,0xda,0x7e,0xa5,0x70,0xb8,0xff,0x39,0x81,0x7d,0xfa,0xea,0xd6,0xc6,0x12,0x84,0x0a,0x8a,0x16,0xde,0x99,0xa6,0xe7,0xe0,0x77,0x76,0xb8,0xa3,0x6f,0xfb,0xb4,0x8f,0xc3,0xbd,0x90,0xd8,0x2a,0x04,0xed,0x42,0x91,0x9b,0x84,0x40,0x2d,0x01 +.byte 0x94,0xdb,0xbb,0x58,0x25,0xed,0xa3,0xdd,0xaa,0x0c,0xce,0x25,0x12,0xcd,0x11,0xbf,0xd0,0x57,0xe9,0x51,0x74,0xa7,0x45,0x6c,0x58,0xe7,0x4d,0x43,0xc6,0xd0,0x09,0x93,0x2d,0xe0,0xe3,0xae,0x7b,0x8f,0x53,0xa0,0x80,0xa1,0xef,0xcb,0xf5,0xfe,0x38,0x4d,0x31,0xa2,0x5c,0xd3,0x4a,0x66,0x1a,0x5c,0x07,0xbe,0x25,0xba,0x30,0xb6,0x00,0x27 +.byte 0x52,0xb9,0x1f,0xa3,0xed,0xd7,0x31,0x33,0x4a,0xf6,0x3f,0xed,0x75,0xe7,0xa4,0xf4,0xdf,0x97,0xc1,0x78,0x90,0x9b,0x4b,0xbd,0x06,0xc6,0x72,0x5c,0xdf,0x57,0x60,0xbe,0xbc,0x88,0x02,0xb6,0x5a,0x65,0xea,0x3a,0x3a,0x74,0x03,0xc8,0x66,0xef,0xf0,0x63,0xc7,0x9d,0x58,0x8e,0xa1,0xb2,0x25,0x4f,0xc4,0x14,0x5f,0x80,0x78,0x08,0x06,0x21 +.byte 0x50,0x34,0x01,0x2b,0x15,0xf4,0x7d,0x1f,0x1f,0x32,0x36,0x0a,0x52,0x1f,0x50,0xa2,0x50,0xbc,0x9a,0xdf,0x4e,0x84,0x49,0x2d,0x08,0xaa,0x46,0xc0,0x0e,0xcf,0x27,0x17,0x91,0x78,0x8c,0xb9,0x72,0xc5,0x8e,0x25,0x85,0x11,0xff,0x2f,0x4a,0x71,0x7c,0x14,0xfe,0x86,0xfe,0xb4,0x3a,0xd0,0x67,0xfd,0xaa,0x9b,0xee,0x89,0x66,0x03,0x59,0x4e +.byte 0x1c,0x96,0xaf,0x2b,0x8d,0x4d,0x6f,0xf6,0x72,0xc6,0x13,0xc7,0x14,0xce,0x19,0x0c,0x0b,0xa3,0x01,0x12,0x7c,0x8e,0x10,0xb8,0x63,0x41,0x57,0xb9,0xfe,0x6e,0x3e,0xda,0x20,0xfb,0x92,0x08,0x7d,0x66,0x31,0x9d,0x4f,0xdb,0x14,0xf4,0xb6,0xb8,0xea,0xee,0x54,0x0f,0xaf,0xc1,0x99,0xf0,0x8f,0x55,0x44,0x20,0x44,0xd0,0xa6,0x98,0xa3,0xa8 +.byte 0x8b,0x8e,0x26,0x03,0xec,0x2d,0x50,0x4f,0xb0,0x8d,0xd0,0xf2,0x96,0xcc,0x18,0xa9,0xb1,0x0f,0x79,0xe3,0x9f,0x08,0xb3,0x53,0x0b,0x9c,0x9f,0x22,0xdb,0x45,0x57,0xd6,0xaa,0x3b,0x6a,0xcb,0xdc,0xc9,0xda,0x57,0x75,0x65,0x0a,0xc1,0x17,0xb3,0x97,0xa9,0x07,0x40,0x20,0xfb,0x72,0x2d,0xc6,0x37,0x1e,0x44,0xb7,0x7e,0x0b,0x38,0xcc,0xfc +.byte 0xa0,0xed,0x48,0xa9,0x9b,0x87,0xbc,0x71,0x0f,0x8b,0xda,0x4f,0x09,0x27,0x1e,0x3d,0x9c,0x03,0x62,0x81,0xa8,0x7c,0x7b,0x8a,0x14,0xa7,0x22,0x69,0xa8,0xba,0x0e,0xcc,0x1f,0x2b,0xb3,0x0f,0x7d,0xce,0x3f,0xec,0xb5,0x9d,0xe0,0x3a,0x67,0x56,0x08,0x5d,0x03,0x8b,0x71,0x01,0x44,0x11,0x1b,0x7b,0xcf,0xcc,0x2e,0xfc,0xa5,0x52,0x9b,0xeb +.byte 0x1e,0x8a,0xa1,0x86,0x64,0xcf,0x32,0x03,0x6b,0x3e,0x29,0xe7,0x9a,0x16,0x7e,0xe2,0x21,0x2f,0x5f,0xe2,0x86,0x7f,0xf8,0x22,0x36,0x10,0x99,0xc8,0x27,0x43,0xa1,0xb9,0xf4,0xb4,0xb8,0xe1,0xa3,0x1d,0x80,0x9c,0x81,0x92,0xef,0x1f,0x28,0x54,0x51,0xf3,0x62,0x9c,0x7a,0x24,0xd4,0x5a,0xdc,0x38,0x4f,0xa5,0x57,0xdd,0x4d,0xa1,0x52,0xf3 +.byte 0xd3,0x9d,0xa1,0x93,0x5e,0xbe,0x9b,0xd1,0x2a,0x52,0xf1,0xbb,0xa5,0x3f,0x3a,0x94,0x7c,0x7d,0x41,0x61,0x36,0x14,0x25,0x5f,0xab,0xef,0x32,0xf3,0x0f,0x6c,0xc5,0xf5,0x5f,0xe5,0x88,0x51,0x17,0x60,0x8b,0xd5,0xa6,0xea,0x8b,0x21,0xec,0x1a,0xa7,0x69,0xa0,0x59,0xf9,0xeb,0x51,0x94,0x70,0x2b,0x96,0x2e,0x71,0xa9,0x8c,0x12,0x15,0xce +.byte 0x7d,0x59,0x6b,0xf2,0xca,0x2c,0xbd,0x85,0xfb,0x23,0xab,0xcb,0x89,0x89,0xda,0x28,0x49,0x7e,0xfc,0x90,0x2a,0x9a,0x3d,0x6d,0x24,0x57,0xba,0xd9,0x30,0xe0,0x10,0x04,0xb1,0x7f,0x8a,0xcf,0xc8,0x27,0x63,0xd6,0xbd,0xea,0xef,0x90,0x6f,0xc2,0xfc,0x78,0xfd,0xc4,0x5b,0x45,0x0c,0x41,0x8a,0x53,0x5b,0xbc,0x62,0x32,0x86,0x7f,0x19,0xb7 +.byte 0x8b,0x03,0x50,0xed,0xca,0x8e,0x8b,0xa0,0xe3,0xc2,0x0e,0x81,0xe5,0x8a,0xe8,0xf1,0x6a,0x0b,0x1a,0xa7,0xb6,0xed,0x74,0x23,0x34,0xad,0x5b,0xd8,0xf7,0x17,0x8d,0xa5,0x05,0xf3,0x00,0x4a,0xad,0x7e,0x91,0xc9,0x6b,0x13,0xff,0x76,0x78,0xf0,0xd1,0xf4,0x99,0x43,0x73,0xd9,0xba,0x59,0xbe,0xb5,0xa3,0xbd,0x5e,0xc5,0xd3,0x88,0x06,0x9c +.byte 0x86,0x32,0xb4,0xd5,0x30,0x77,0x78,0x8e,0xd5,0x6a,0x1d,0xeb,0xfd,0x6b,0xe6,0xf8,0x4b,0xe8,0xf3,0xba,0xbb,0x86,0x8e,0xe6,0x63,0x83,0x92,0x23,0x05,0x58,0x2e,0x61,0xdd,0x38,0xad,0x8d,0x19,0x7d,0xfa,0x7c,0x3e,0xc8,0x9f,0xae,0xea,0x6d,0x12,0xf0,0xa4,0x08,0xed,0x12,0x0c,0x97,0x87,0x58,0xd8,0xbc,0x3f,0xde,0x7c,0xee,0x0c,0xc0 +.byte 0xa2,0x2e,0xf0,0x25,0x6d,0xf3,0x30,0x23,0xa7,0xc2,0xc8,0x09,0x67,0x01,0xe1,0x25,0x26,0x46,0x38,0xf5,0x5e,0x55,0x8b,0xd6,0x43,0x6a,0xb8,0xe4,0xdf,0x0f,0x5d,0x6c,0xc3,0xb2,0x56,0x38,0xda,0xbc,0xbf,0x5e,0x85,0x8c,0xd5,0x2a,0x6a,0xe2,0xff,0x4f,0x36,0xf7,0x52,0x2c,0xe2,0xae,0x65,0x65,0xd1,0xfc,0xd3,0xc6,0xf7,0x26,0xa6,0xd0 +.byte 0x0b,0xc8,0xf0,0x68,0x5d,0x07,0x89,0x06,0xb3,0xfb,0x39,0x1d,0xd8,0xd8,0xd7,0x53,0xd0,0xc9,0x76,0x56,0xc0,0xd3,0xf5,0x66,0x80,0x5b,0xff,0x4a,0xdf,0xae,0x52,0x86,0x54,0x24,0x53,0xcf,0xcf,0xd2,0x89,0xde,0x71,0x62,0x9c,0x31,0xa5,0x3d,0x62,0x07,0xa1,0x33,0x49,0xbb,0x06,0x88,0xd8,0xa1,0xdd,0x0e,0x47,0x8d,0x72,0x00,0x2d,0x51 +.byte 0xa3,0x35,0x6e,0xb6,0x1f,0xbf,0xe5,0x42,0x68,0x6f,0x62,0xfa,0xf3,0x12,0xa9,0x1a,0xbd,0xe8,0xa4,0xf1,0x6d,0x07,0xe7,0x70,0x87,0x44,0xb7,0x3d,0xea,0xdc,0x3a,0x24,0xbd,0xa0,0x9b,0xb8,0xc5,0xa8,0xd9,0x06,0xde,0x02,0x68,0x7e,0xd5,0x2d,0x3b,0x5f,0x12,0x31,0x72,0x35,0x77,0xf6,0x10,0x6e,0x81,0x7d,0x3c,0xac,0x95,0x5b,0xbe,0x90 +.byte 0x74,0xf3,0x3e,0x9b,0x07,0x54,0x97,0xe3,0x1d,0xcf,0xe2,0xc5,0x80,0x6b,0x5f,0x0b,0x96,0x00,0x0f,0x0e,0x53,0x36,0x76,0x6e,0x99,0x0c,0x32,0xa2,0xc9,0xaa,0xa0,0xa1,0xb7,0xee,0x9d,0xd6,0x46,0xe7,0x2d,0x10,0x7a,0xf2,0x22,0x50,0x52,0xbf,0xec,0xcc,0xbc,0x0d,0x81,0x55,0x2d,0xac,0x2e,0xf7,0x99,0xbe,0x68,0x09,0xb0,0x11,0xc3,0xc8 +.byte 0xca,0x63,0xa7,0xc2,0x0f,0x37,0x2a,0x9e,0x85,0x79,0x6b,0x44,0xc1,0x4f,0xb9,0xd6,0x6c,0x56,0x0e,0x59,0x33,0xc3,0x00,0x53,0xe2,0xf4,0x30,0x90,0x4e,0x4b,0x09,0x4d,0x6f,0x9a,0x9e,0xb9,0x8d,0x0b,0xa1,0x80,0xfd,0xfb,0xde,0x74,0x49,0x53,0x04,0x3a,0x35,0xcb,0x45,0xe2,0x67,0x2c,0x4d,0x6e,0x39,0x7b,0xbd,0x68,0xaa,0x93,0x1e,0xee +.byte 0x1e,0x35,0xae,0x1e,0xf2,0xe7,0xb1,0x80,0x92,0x45,0x27,0x85,0xd0,0xc7,0x26,0x17,0x54,0x30,0xba,0x0c,0x8e,0x48,0xf3,0x08,0x51,0xa6,0x41,0x70,0xba,0x5b,0x90,0x69,0x7c,0x64,0x1d,0x61,0xb5,0x23,0x4a,0xef,0x97,0xe4,0x9a,0xd0,0xff,0x47,0x7a,0x93,0x1a,0x28,0xb3,0x8a,0x32,0x29,0xf8,0xe9,0x08,0xc3,0xf3,0x24,0xd7,0x2e,0x18,0x6d +.byte 0x99,0x40,0x77,0x43,0x9f,0x98,0xe4,0xe5,0x3a,0x34,0x9d,0x46,0x52,0x9f,0x84,0x79,0x8c,0x70,0xbc,0x88,0x30,0xaf,0x87,0x69,0x57,0x6e,0xde,0x2e,0xfe,0x0f,0x3b,0x8d,0xc8,0x95,0xcf,0x69,0x78,0xff,0xa1,0xb1,0x81,0x49,0x1e,0x45,0xc0,0x83,0x1b,0xa3,0x5a,0xee,0x3e,0x9a,0x15,0x7c,0xf0,0xa2,0xfd,0x04,0x22,0x55,0x2d,0x74,0x61,0x29 +.byte 0x0e,0x4f,0x31,0xdb,0x35,0x99,0x37,0xb7,0x7d,0x11,0xde,0x87,0x4f,0x84,0xeb,0x6c,0x14,0xcc,0xbb,0x71,0x47,0xab,0x5b,0x61,0x51,0xeb,0xa1,0xc1,0x5f,0xe4,0x5c,0x3c,0xab,0x04,0xf1,0x60,0x50,0xe1,0xd0,0x58,0xdf,0x42,0xed,0x73,0x5f,0x31,0xdf,0x8d,0xb8,0xb8,0xdc,0x4e,0x2f,0xe3,0x7f,0x89,0x9e,0x62,0xc9,0xef,0xfd,0x60,0xae,0x58 +.byte 0xa9,0xa5,0x8b,0xa8,0x3b,0xd8,0x5f,0xd4,0x09,0xff,0x61,0x8c,0x25,0xde,0x84,0x7f,0x35,0xc9,0x5c,0x2b,0xe8,0x46,0xe4,0x1c,0xbd,0x77,0x51,0x31,0x55,0x3d,0xb4,0x35,0xf3,0xdc,0xa5,0x55,0xd3,0xe3,0x24,0xf9,0x41,0xe2,0xf0,0xbd,0xf5,0xff,0x81,0x87,0x64,0xc9,0xe7,0x69,0x29,0x86,0xaf,0x98,0x33,0x33,0x62,0x9c,0x7b,0x16,0xbb,0xfe +.byte 0x0b,0xa7,0x92,0xa5,0x7b,0x81,0xbc,0x50,0x88,0xf6,0xe7,0xfc,0x73,0xd6,0x37,0x43,0x09,0xa5,0xc6,0xd6,0x4d,0x28,0xb5,0xaa,0x53,0x52,0x8c,0x2c,0x06,0x64,0x6c,0x21,0x6b,0xe7,0x67,0x4a,0xa5,0xcc,0xa1,0x32,0xf0,0xd9,0x78,0xb9,0xc3,0xdb,0x41,0xee,0x10,0x11,0x81,0x04,0x03,0x73,0x48,0xc6,0x3e,0x60,0x6d,0x82,0xef,0xe2,0xa8,0xe8 +.byte 0xd7,0xda,0xd9,0xb5,0x34,0x42,0xc8,0x1c,0xa7,0xa4,0x8e,0x88,0x2e,0xbc,0x96,0x0a,0xfc,0x40,0x36,0x80,0xdf,0x60,0xe9,0x03,0x02,0x0c,0x51,0xf7,0x7d,0x01,0xd2,0x21,0x38,0x44,0x4b,0x34,0x80,0xbf,0x5e,0xc1,0x86,0xf2,0x35,0xeb,0xa8,0x21,0x15,0x74,0x7c,0x99,0x55,0x64,0xf4,0x48,0xd6,0xd1,0x47,0x1f,0x4d,0xbf,0x0c,0x20,0x5d,0x86 +.byte 0xb9,0xab,0x4e,0xc8,0x86,0x08,0x71,0x1d,0x13,0xf6,0xd3,0x17,0xac,0x61,0x10,0x5d,0x2a,0xb4,0x48,0xa1,0xb9,0x79,0x5a,0x09,0x3a,0x65,0x4c,0xbd,0x97,0xbe,0x48,0xc6,0x66,0xd8,0xce,0x0c,0x19,0xb5,0x44,0x02,0xfa,0xb7,0xa8,0x3f,0x9b,0x86,0xec,0xd1,0xef,0x1d,0x7d,0xb3,0x82,0x5c,0x92,0x48,0x02,0x2c,0x56,0x0f,0xff,0xf7,0x19,0x74 +.byte 0xc2,0x38,0x24,0x8d,0xb2,0x87,0xb6,0xeb,0x49,0x50,0x6a,0x33,0x74,0x4e,0x2a,0xcb,0xf4,0x13,0x2c,0xfa,0x3b,0x0e,0x3d,0x98,0x3e,0x33,0xd9,0x55,0xfa,0xb9,0x74,0xb8,0x6f,0xc1,0xd8,0xfd,0x8f,0xff,0xb9,0x1a,0x17,0xf8,0xb6,0x21,0xc4,0x9d,0x47,0x5e,0x84,0xf6,0xe5,0xbf,0x93,0x98,0xac,0x8f,0x68,0x85,0xf8,0xe8,0x79,0x7f,0x6f,0x0d +.byte 0x62,0x2c,0xaa,0x1e,0xe4,0xab,0x73,0xf8,0x6f,0x02,0xda,0x6b,0x3c,0x14,0x2e,0xc9,0xdb,0xb0,0x4e,0x39,0xb5,0xcf,0x05,0xae,0x9c,0x63,0x2f,0x6a,0x25,0x61,0x9d,0x40,0xeb,0x7e,0xd8,0x97,0x97,0x33,0x67,0x5c,0x78,0x84,0x68,0xc2,0x7a,0x26,0x58,0xe3,0x6c,0x0a,0x2e,0x6a,0x82,0xd6,0x43,0xed,0x79,0xa5,0x8d,0x4e,0x7c,0xf7,0x80,0x01 +.byte 0xe7,0x02,0x5e,0x3a,0xf7,0x8a,0x4a,0x85,0xe9,0x98,0x1e,0x69,0x33,0xf3,0x54,0x96,0x79,0xc8,0x03,0x0a,0x9f,0x0c,0x5d,0x66,0x44,0x88,0x3c,0xd7,0x9e,0xd1,0xde,0x01,0xfd,0x5e,0xa5,0x6a,0x82,0x00,0x36,0xe6,0x12,0xe3,0x62,0x46,0x45,0x69,0xfb,0x4f,0x44,0x8e,0xe5,0x8d,0x21,0x57,0x6a,0x61,0x8e,0x56,0xcb,0x5b,0x2c,0x5f,0x65,0x41 +.byte 0x2c,0xad,0xf2,0x98,0x34,0xbb,0x06,0x0d,0x8a,0x3c,0x34,0x0d,0xa3,0xe2,0x6e,0x86,0xfa,0xa9,0xfb,0x6f,0xbb,0x32,0xd6,0x0d,0x76,0x6b,0x77,0xf3,0x83,0x41,0xc0,0x80,0x63,0x55,0x47,0xb8,0x13,0x6b,0x99,0x96,0x08,0x9b,0xc0,0x82,0xae,0x49,0x4a,0x51,0x63,0x74,0xf2,0xec,0xfa,0x0d,0xbc,0x3a,0xde,0xf5,0x4b,0x4f,0x08,0x41,0x23,0x88 +.byte 0x14,0x88,0x6a,0x3a,0xf0,0x5f,0x0c,0x45,0x7f,0x65,0x7a,0x67,0xd8,0x17,0xed,0x04,0x47,0x60,0x0e,0x74,0x8f,0xfd,0x48,0xda,0xcd,0xe9,0xfe,0xf5,0x6f,0x43,0xcd,0xa5,0x05,0xa2,0x2e,0x78,0x5b,0xff,0xb8,0x6f,0x2e,0xfd,0x3e,0x4b,0xef,0xcf,0xe0,0x06,0x57,0x28,0xf4,0x2e,0x3b,0xb5,0x9e,0x3c,0xbd,0x63,0xa6,0x78,0x8e,0xd5,0xb8,0x81 +.byte 0x4e,0xf0,0xbf,0x14,0x65,0xc8,0x00,0x9f,0x0e,0x25,0x6a,0x7a,0x63,0x58,0xe4,0xe7,0xa9,0x82,0x16,0xc9,0x86,0x20,0x94,0x71,0x5b,0x9f,0x9b,0xc3,0xc5,0x32,0xb0,0x6c,0x2b,0x8c,0x54,0x67,0x36,0x94,0xb1,0x47,0x33,0xfd,0x9f,0x7c,0x7f,0x7e,0x08,0x51,0x1f,0x7e,0xbf,0x09,0x57,0xf3,0xaa,0x77,0x94,0xf3,0x20,0x1b,0x95,0xf6,0x04,0xb2 +.byte 0x09,0x9d,0xe2,0xbb,0x4d,0xfe,0x6b,0x99,0x06,0x58,0x40,0x84,0x90,0xfa,0x0e,0x9b,0x58,0x6d,0x02,0xbe,0x53,0x73,0xd1,0xc9,0xc7,0x31,0x2a,0x4a,0x12,0x2c,0xb6,0x1c,0xfb,0x49,0xc6,0x1a,0x93,0x33,0x1f,0x29,0x8b,0x94,0xe9,0x20,0xa7,0xe6,0x20,0xe6,0xbf,0xcd,0x5c,0xb6,0x52,0x42,0xf0,0x9c,0x6c,0x21,0x61,0x10,0xe7,0x0e,0x9f,0x33 +.byte 0x5f,0xc8,0xd0,0x20,0xe0,0x3e,0xc5,0x7a,0x10,0xf1,0xe5,0x19,0x52,0xcd,0xe1,0xa8,0x62,0x43,0x20,0x79,0xc3,0xac,0x93,0x27,0x02,0x8e,0x21,0x06,0xb9,0x66,0xd9,0xc8,0x40,0xe0,0xd1,0xf0,0x64,0x81,0xa6,0xc4,0x87,0x85,0x2b,0x92,0x1c,0xd6,0x48,0x85,0xb1,0xbe,0x78,0xf3,0x89,0xa2,0xf0,0xe5,0x39,0xac,0xbf,0x59,0x5d,0xf8,0x4f,0x74 +.byte 0x44,0x85,0x98,0x03,0x81,0x4b,0x7e,0x6f,0x5c,0xa1,0x11,0xd2,0xfd,0x30,0x7f,0xcd,0xd0,0xe2,0xcc,0xd4,0x80,0x16,0x46,0xa6,0x64,0x8b,0x9e,0xfc,0x2a,0x1a,0x65,0x5c,0x90,0x82,0xf9,0x23,0x48,0x11,0xf6,0xf2,0x50,0x3f,0xed,0x44,0xf2,0x9a,0x5a,0xca,0x1c,0x9a,0xd2,0x71,0x1b,0xd6,0x4c,0x51,0xf6,0x89,0x6f,0x65,0xe4,0x97,0x41,0x47 +.byte 0x1b,0x86,0xbd,0x83,0xa0,0xfe,0xac,0x16,0xe8,0xab,0x28,0x96,0x2f,0xa2,0x12,0x5f,0x7c,0xb3,0x18,0x2b,0x05,0x51,0x49,0xba,0xb4,0x1f,0x1e,0xe6,0x8a,0x82,0xca,0x33,0x7d,0xe6,0x8c,0x95,0xba,0x08,0x60,0x47,0x6d,0x79,0xac,0x0f,0xba,0x46,0xff,0xed,0xe0,0x34,0x03,0xfe,0xa7,0x85,0xe5,0x61,0xe3,0xe4,0x6c,0x5c,0x1b,0x9d,0x8a,0x54 +.byte 0x17,0xaf,0x08,0x4c,0x44,0x7f,0xb7,0xb0,0x6a,0x3a,0xff,0xb7,0xf6,0x10,0xc4,0x8f,0x31,0xd6,0x1a,0x25,0x27,0x35,0xca,0x87,0xa9,0x61,0x0b,0x35,0x96,0x89,0x0f,0x1a,0xbd,0x1e,0xf6,0xee,0xaa,0x95,0x16,0xe4,0x38,0x7b,0xb2,0xbe,0xea,0xc9,0x5a,0xcd,0x3b,0xb8,0x9e,0xd7,0x20,0xcd,0x3f,0x90,0xaa,0x8b,0x2a,0x42,0xed,0xab,0xc1,0x53 +.byte 0x83,0xc7,0xb8,0x3f,0xa1,0xb9,0xf4,0xf4,0xb0,0xe0,0x1f,0xb0,0xeb,0xa9,0x81,0x9f,0x31,0x67,0x1e,0x6c,0x96,0x9f,0x09,0xea,0x04,0xfe,0x37,0x22,0x87,0x60,0xb9,0x91,0x8f,0xa9,0x11,0xa3,0x68,0x5e,0x29,0x21,0x41,0xa3,0x02,0x08,0x82,0xd0,0x2b,0x66,0x6d,0x3c,0x46,0xc7,0x23,0x09,0x86,0x7f,0x53,0x11,0x3e,0x83,0x52,0x0a,0x4a,0xe4 +.byte 0x93,0xc6,0xc1,0x96,0x17,0x94,0x51,0x17,0x69,0xea,0x72,0xb8,0x85,0xde,0x7e,0x13,0x4a,0x08,0x26,0xae,0x31,0x19,0x0f,0x6f,0x48,0xa1,0xf2,0x57,0xa2,0x01,0x8e,0x84,0xee,0x63,0x23,0xc0,0x97,0x84,0xa2,0xf5,0x3f,0xeb,0x30,0x9e,0xdd,0xd2,0x43,0x24,0xa2,0x57,0xb7,0x57,0x86,0x26,0xa3,0xe6,0x6e,0xf2,0xcd,0xfb,0x7b,0x34,0x74,0x53 +.byte 0x07,0x95,0x51,0xb7,0xfd,0xf3,0xd1,0x83,0xbd,0x25,0xd6,0x2c,0x69,0x73,0x02,0x8e,0x76,0x19,0xea,0xb0,0x83,0x60,0x8c,0x53,0x9d,0x77,0x86,0x1e,0x65,0xc7,0x57,0x31,0x29,0xd9,0xa9,0x3a,0xb2,0x0d,0xd8,0xf4,0xf9,0x48,0x49,0xfb,0x3c,0x40,0x3d,0x1b,0xc4,0x8b,0x94,0x0e,0x50,0x7f,0xd5,0x39,0x5e,0x57,0x86,0xd1,0xba,0x0c,0x38,0x10 +.byte 0x01,0x5f,0x44,0xf3,0xe5,0xb0,0xf8,0xae,0x17,0xdf,0xd2,0xb3,0x10,0xc5,0x3b,0xfd,0xd9,0x68,0x90,0x9c,0x6c,0x26,0xdf,0x12,0x50,0xfa,0xbf,0x8b,0xce,0x68,0x80,0x8c,0x04,0x60,0xbf,0x34,0x81,0xbd,0x29,0xa3,0xa2,0xe4,0xe0,0x2d,0x25,0xb2,0xff,0x9f,0xd1,0x20,0x07,0xd5,0x8c,0x19,0xfa,0x3f,0x47,0xec,0xc1,0x8d,0xc9,0x36,0xf8,0x51 +.byte 0x4c,0xaa,0x40,0xe3,0x6a,0x21,0xd5,0xe6,0xa6,0xcf,0x8c,0xd9,0x10,0x47,0x66,0xfd,0x32,0x48,0x36,0x8f,0x14,0xed,0x09,0x80,0x50,0x27,0xaa,0xd5,0x1f,0x69,0xb8,0xe4,0x96,0x27,0x56,0x78,0xd6,0xd5,0x2d,0xf0,0x4f,0x14,0x30,0x17,0x9e,0x5b,0x69,0x8c,0x7c,0x1c,0x97,0x38,0x65,0x77,0x75,0x49,0xac,0x4b,0x06,0xda,0x74,0x11,0x86,0xbc +.byte 0xad,0x01,0xf2,0x03,0x29,0x5d,0xa7,0x74,0xd3,0x44,0xae,0x1d,0xbf,0xf9,0xc5,0x5b,0x83,0x8c,0xd6,0x84,0x8a,0x8e,0xe9,0xa6,0x08,0xf4,0x88,0x13,0xcb,0x16,0x45,0x13,0x9c,0xc7,0x75,0xa9,0xa7,0x55,0x04,0x91,0xd6,0xe9,0xd4,0xe5,0x65,0xa0,0x3a,0x53,0xa0,0xfc,0x62,0xce,0x91,0x01,0xb4,0x06,0x8b,0x10,0x79,0x6f,0x2c,0xd6,0x0a,0xa2 +.byte 0x31,0x8f,0x75,0x32,0x0e,0xfa,0x0d,0xec,0xfd,0x71,0x7f,0x74,0x97,0x30,0xe9,0xee,0x9f,0x04,0x21,0xb5,0xc9,0xd1,0x52,0x2a,0x0f,0x18,0xbe,0x3e,0xbb,0x98,0xaf,0x59,0x9b,0x85,0x79,0x5e,0x52,0x93,0x1c,0x42,0x67,0x67,0x6b,0xd5,0x41,0xaf,0xba,0x09,0x3a,0xb4,0x0e,0x97,0x22,0xe6,0xbb,0xe1,0x27,0xa1,0xf9,0xf0,0xcd,0xa2,0x3d,0xdb +.byte 0x81,0x2f,0x65,0x90,0xb7,0xe5,0xe5,0xce,0x1d,0x3b,0xfe,0x34,0x57,0xcd,0x3a,0xbd,0x19,0x59,0x23,0x12,0xf1,0xb6,0xf2,0xf7,0xc1,0xf5,0x1d,0x0b,0x46,0x8f,0x16,0x6a,0x81,0xfe,0xc1,0x97,0x8d,0x69,0x55,0x60,0xdd,0xf0,0x61,0xe9,0x22,0x30,0x72,0x1a,0x24,0x30,0xd7,0xbc,0x1c,0xfa,0x02,0x55,0xfc,0xb9,0x4b,0x0a,0xe4,0x90,0x90,0x3a +.byte 0xe3,0xce,0xd4,0xa0,0x7d,0x21,0x5a,0xf7,0x79,0x6e,0x03,0x4f,0x4e,0x93,0xad,0xc4,0x8e,0x9d,0x9f,0x8a,0x39,0x59,0x20,0xc1,0x5d,0x6a,0x4d,0x8f,0x69,0x78,0xea,0xba,0xde,0xc0,0x87,0xb2,0xf2,0x20,0xd6,0x7a,0x9c,0xf9,0x09,0x03,0x2a,0x4d,0xb9,0x10,0xfc,0xe5,0x05,0x90,0xed,0x45,0x4f,0x5f,0x7c,0x5d,0xfa,0xe6,0x0d,0x07,0xae,0xcc +.byte 0x21,0xc8,0x1c,0x7a,0xfb,0x1d,0xb9,0xe3,0x69,0xa1,0xb7,0x5f,0xb5,0x6a,0xb9,0x58,0x9d,0xcd,0x99,0xf8,0x38,0xbb,0xa0,0xfe,0xf8,0x41,0x51,0x72,0xce,0x76,0x89,0x59,0xa2,0xab,0xef,0xea,0xab,0x79,0xbc,0xda,0x73,0xdb,0x18,0xda,0x60,0x1b,0xc4,0xb7,0x4f,0xb3,0x86,0x21,0x2a,0xc3,0xec,0x7f,0x0e,0x89,0x16,0x0e,0xd2,0xbd,0xea,0x0e +.byte 0xcf,0xc1,0x4b,0x2c,0x97,0x69,0xce,0xd3,0x94,0xad,0x81,0xe9,0x70,0xf4,0xf8,0xe5,0x77,0xe6,0x92,0xe0,0x23,0x38,0xd3,0xc1,0xdd,0x2e,0x58,0x77,0xc5,0xc3,0x29,0x34,0x66,0x48,0xf9,0x75,0x3c,0x8a,0x6a,0xb8,0xbf,0xf8,0xba,0xf0,0xb9,0xa1,0x81,0x0b,0xa1,0xaa,0x17,0x34,0x1a,0xbb,0xa3,0xa2,0xba,0x21,0x45,0xc0,0x1d,0x57,0x11,0x4d +.byte 0x9b,0xd4,0x64,0x84,0xd7,0x0b,0xd6,0xfb,0x72,0x2c,0xdb,0xc3,0xe6,0x24,0xa9,0xf3,0x30,0x9f,0x21,0x05,0x1e,0xcc,0x48,0x58,0xed,0xfd,0xb2,0x34,0xe3,0xf7,0x7e,0x56,0xee,0xdf,0xa4,0xbb,0xb1,0xcc,0x7f,0x81,0x40,0xe9,0xdf,0x3f,0x82,0xc4,0x0d,0x14,0x9b,0x3b,0x80,0x15,0x24,0x6e,0xa4,0xce,0xfa,0x28,0xa7,0x7f,0x89,0xfb,0xc6,0x83 +.byte 0xe8,0x2a,0x70,0xfb,0x9c,0x75,0xb8,0xfd,0xec,0xbc,0xbb,0xf5,0xef,0x0a,0xa5,0x77,0x0b,0x38,0xa0,0x63,0xa5,0x71,0x12,0xc9,0xaa,0xc3,0xf9,0x72,0x30,0x45,0x4e,0x19,0x44,0x2d,0x09,0xf4,0xf1,0xa8,0xe8,0xde,0x58,0x87,0x70,0xa8,0x91,0x86,0xef,0x5d,0x02,0x90,0x55,0x63,0x99,0xde,0xd7,0xb7,0x5f,0x07,0x01,0xdf,0xb1,0xe5,0x55,0xf5 +.byte 0x87,0x69,0xd2,0x7a,0x71,0xbc,0x0e,0x4b,0x8b,0x98,0xf7,0xf6,0x0a,0x01,0xbb,0x9f,0x1b,0x15,0xb6,0x76,0xe0,0xc0,0x4b,0x5d,0x08,0xba,0xba,0x73,0x3f,0x36,0x5a,0x29,0xd7,0x7c,0xc2,0x87,0x03,0x75,0xff,0x26,0x21,0xae,0xbe,0x66,0x70,0xa2,0x99,0x11,0x35,0x49,0x78,0x7b,0x3a,0xfe,0x94,0xf7,0x37,0xe0,0x69,0x56,0x39,0xf7,0x3f,0x71 +.byte 0x39,0x74,0x75,0x32,0x1f,0xfb,0x3a,0x87,0x07,0xab,0xf1,0xed,0xe3,0xe2,0xbf,0x3f,0xb1,0x73,0x11,0xc9,0x34,0x4b,0xb1,0x1e,0x62,0x4e,0xc1,0x8a,0xae,0xcc,0xc7,0xb3,0xa7,0x70,0x01,0x73,0xad,0xb3,0xc3,0x59,0x70,0x14,0x31,0x94,0x9f,0x6b,0x18,0x11,0x50,0x52,0xc9,0xf0,0xf8,0x12,0x9d,0x7c,0x90,0x64,0x9d,0xd9,0x41,0xa6,0x45,0xe3 +.byte 0xc9,0x25,0x73,0xe7,0x48,0x9d,0xdc,0xe0,0x2c,0x71,0xd3,0x68,0xc5,0xab,0xac,0xe3,0x16,0x95,0xe3,0xa5,0xae,0x2f,0x57,0x60,0x4b,0x11,0x90,0xaa,0xe7,0x48,0xca,0xc7,0xde,0x2e,0x56,0x10,0x8e,0xc3,0x0a,0x7d,0x66,0xf1,0xc3,0xf7,0x2d,0xdd,0xfa,0x5e,0xb2,0xcb,0x99,0x4d,0xaa,0x4e,0x91,0xc1,0x94,0x60,0x27,0x33,0x82,0xa6,0x2a,0xba +.byte 0x05,0x32,0x33,0x0a,0x30,0x47,0xb0,0xac,0x68,0x7d,0xef,0x25,0x09,0xcf,0x51,0xf4,0x06,0x28,0x14,0xb2,0xb4,0x1f,0xaf,0x37,0xdc,0x70,0x88,0x4d,0xb9,0xfc,0x2d,0x61,0x25,0x13,0x1f,0x32,0x48,0x6d,0xeb,0x46,0x05,0x66,0x44,0xa1,0xec,0xce,0xe9,0x51,0xa9,0xba,0xf8,0xde,0x95,0x1b,0x20,0xe1,0x21,0x75,0x4b,0x25,0x7f,0x3c,0x16,0xf7 +.byte 0xe2,0xbe,0xeb,0xca,0x2b,0x77,0x92,0x16,0x32,0xe2,0x74,0x21,0x52,0x3f,0x08,0xba,0x41,0xb0,0xd3,0xd2,0xf7,0xf3,0x29,0xb6,0x10,0xfa,0xa5,0x29,0x35,0x29,0x21,0x0d,0xec,0xba,0x5a,0xf3,0x63,0x0f,0x9d,0xbc,0x42,0x02,0x46,0xe9,0x07,0x4a,0x9a,0xe8,0xd3,0x78,0x92,0xa2,0xe5,0x03,0xec,0xd4,0xe2,0xc8,0x8f,0x92,0x4a,0xae,0xbc,0xd7 +.byte 0xdf,0x4b,0x07,0x22,0x47,0xbd,0xb4,0xb5,0xa0,0x7e,0xfb,0x21,0x40,0x62,0xb1,0x6c,0x07,0x00,0x64,0xf6,0xb2,0x75,0x5c,0x29,0x84,0xff,0x38,0x0c,0xc8,0x08,0x38,0x92,0xf9,0xad,0xd7,0xcc,0xc3,0x1c,0x03,0x80,0x49,0x39,0x1c,0xdb,0xae,0x60,0x87,0x8a,0x5c,0xe9,0x17,0xbd,0x2b,0x0f,0xa5,0xa1,0xf9,0x0d,0x4b,0x8c,0x4d,0x39,0xda,0x15 +.byte 0x8c,0xc4,0x69,0xaf,0x2b,0xb0,0xa1,0xfd,0xd9,0x65,0x3c,0x87,0x4b,0xf2,0x5a,0xd7,0xd8,0xb9,0xef,0x78,0x67,0x30,0x4c,0x6c,0x92,0xc5,0x1e,0x15,0xf8,0xd9,0x74,0x1b,0x54,0x0c,0x10,0x1b,0xb5,0x11,0x13,0xd6,0xb4,0xc0,0x53,0x03,0x2c,0x4b,0xee,0xac,0xf9,0x87,0x17,0x51,0x35,0xb8,0x1a,0xdc,0x16,0x61,0x5b,0xe9,0x5a,0x43,0x94,0x42 +.byte 0x8f,0x68,0xbd,0xb6,0x52,0x00,0x63,0xa3,0x52,0x6e,0x5d,0x8e,0xe9,0x4f,0xf5,0x69,0xd8,0x4f,0xf5,0x5c,0x89,0x7e,0x1c,0xb9,0xdc,0x7b,0x92,0x8a,0x2b,0xfc,0xb8,0xad,0xbb,0xff,0x61,0x2e,0xc0,0xdc,0xfb,0x2f,0x78,0x2a,0x50,0x32,0x9b,0x4c,0xfd,0x9e,0xab,0x80,0x5c,0x7d,0xc8,0x6b,0xb3,0x2d,0x0a,0xfe,0x43,0xa2,0x10,0x10,0x79,0xbc +.byte 0x8c,0xa0,0x86,0x09,0x8c,0x8b,0x28,0xf3,0x8a,0xc9,0xeb,0xcb,0xb5,0x0e,0x56,0x19,0xae,0xe0,0xa1,0x22,0x72,0xc5,0xad,0x01,0x12,0x69,0xb6,0x52,0xb8,0xdd,0x36,0x25,0x21,0xae,0x73,0x06,0xc1,0xe0,0x23,0x20,0xe1,0x8e,0xe4,0x99,0xcd,0x86,0xca,0xf5,0x93,0x0e,0x6b,0xb8,0xba,0x18,0x4a,0x36,0xed,0xd0,0x37,0xc8,0xc7,0x8a,0xb2,0x63 +.byte 0x2e,0xa4,0x22,0x76,0x6f,0xf7,0xdd,0x81,0xd6,0x6f,0xcd,0xb9,0x65,0xf0,0x95,0x77,0xae,0xca,0x54,0x62,0xce,0x5d,0x47,0x9e,0x10,0x89,0xb9,0xfa,0x72,0x0a,0xef,0x24,0x17,0x45,0xb0,0xb0,0xc7,0x51,0x85,0xa1,0xb1,0x6a,0xd2,0xea,0x48,0xe2,0x6a,0x03,0x2a,0xdf,0xa8,0x0e,0x62,0xa2,0x1e,0xe2,0xa7,0x20,0x57,0xbd,0x73,0xeb,0xef,0x86 +.byte 0xc9,0xd4,0xfa,0x96,0xfe,0xfa,0xb3,0xc6,0xbf,0x7a,0x16,0xa2,0x43,0x73,0x56,0x71,0x78,0x32,0x3b,0xc1,0xd8,0x26,0xbf,0xde,0x39,0x5d,0xbd,0x3b,0xff,0xd7,0x4f,0xa0,0x67,0xa6,0x09,0x9a,0x81,0xfd,0xec,0x34,0x73,0xcd,0x90,0x15,0x8b,0x3e,0x2d,0x6f,0x7d,0xcc,0xf5,0x20,0x15,0x07,0xa8,0x2f,0xa5,0x5b,0x2b,0x4f,0xb8,0x2f,0x14,0x6c +.byte 0x52,0x78,0xbd,0x92,0x98,0xda,0x69,0x19,0x58,0x4c,0x76,0xe4,0x20,0xb2,0x48,0xa4,0x9f,0x2f,0x4c,0x9b,0x45,0x7f,0x7d,0x1c,0x46,0xe9,0x1e,0x43,0x26,0x49,0x39,0xb6,0x42,0x3a,0x4c,0x59,0x95,0x6b,0x28,0xd5,0xbe,0xa7,0x2e,0xd0,0x0c,0x00,0xa0,0x67,0x06,0x4e,0xee,0xae,0x7f,0xc2,0xb5,0x12,0x46,0x3f,0xb4,0x35,0x16,0x2a,0xda,0xbf +.byte 0x41,0x34,0xbe,0x30,0x2a,0x0f,0x7b,0x60,0xa6,0x8b,0xcd,0xae,0x7a,0x8c,0xd6,0x97,0xab,0x06,0x1e,0x14,0x87,0x45,0xa3,0x3c,0x9c,0xc4,0xa0,0x1d,0xee,0xf0,0xca,0xb8,0xa6,0x8d,0x37,0x92,0xad,0xbc,0xe6,0x1f,0x65,0x75,0xd3,0xbc,0x72,0x66,0xe2,0xff,0xbc,0x19,0x93,0xae,0xee,0xd0,0x63,0x6d,0x97,0x6f,0x57,0xf3,0x77,0xcd,0xe3,0x57 +.byte 0x3f,0x00,0xc8,0xe1,0x63,0x83,0x15,0x84,0xc6,0x08,0xdb,0x03,0xc9,0x27,0x47,0x4c,0x17,0x12,0x40,0x6e,0xac,0x74,0x6f,0x3c,0x22,0x57,0x36,0x29,0xbb,0x6a,0xc7,0x5a,0xfe,0x60,0x1c,0x0f,0x32,0x95,0x1b,0xf2,0x3c,0xed,0x04,0x87,0x4c,0x48,0xc7,0x63,0x79,0x24,0xb3,0x12,0xbf,0x55,0x3b,0x32,0xbf,0x52,0x4e,0x1e,0xc1,0x1f,0xf2,0xfd +.byte 0xe6,0xb8,0x56,0x38,0x0e,0xd2,0x75,0x3d,0x41,0x99,0x0c,0x7a,0x12,0x3f,0xa7,0x3a,0x79,0xa0,0xd7,0x6f,0x47,0x97,0x7e,0x9e,0xf6,0xfe,0x29,0xc0,0x16,0x34,0x38,0x80,0x2f,0xde,0x65,0x79,0xc9,0xfd,0xa0,0x84,0xc3,0x39,0xbc,0x0b,0xbe,0x18,0xba,0x0d,0xe3,0x35,0x11,0xba,0x9f,0xde,0x5d,0x0c,0xae,0x8e,0x0c,0x0f,0x66,0x9c,0xe6,0xfc +.byte 0x3d,0xdb,0x46,0xf1,0x84,0x57,0x62,0xb0,0x00,0xd4,0x8c,0xaa,0x93,0xeb,0xf7,0xa7,0x8e,0x82,0xba,0x89,0x67,0xbb,0x38,0xb0,0xb6,0x13,0x0c,0x96,0x22,0x9c,0x6a,0x86,0xea,0x83,0xad,0x5f,0x7b,0x3a,0x28,0xd8,0x53,0x90,0x2d,0xab,0xc9,0xbe,0x99,0xfb,0x68,0x42,0x27,0xf6,0xe3,0x5a,0xaf,0xf3,0xd6,0xee,0xb6,0xa2,0xe0,0x32,0x3c,0x1d +.byte 0xd4,0x3c,0x2b,0x58,0xc2,0x4f,0x3d,0x20,0x39,0xdb,0x80,0x89,0x20,0x20,0x7b,0xe6,0x1d,0xd0,0xa2,0x1a,0xd4,0x88,0xc9,0xe0,0xb9,0xf6,0xb2,0xa1,0xcd,0xf2,0x67,0x60,0x44,0xd8,0xce,0x6a,0xe2,0x52,0xc3,0xf3,0x61,0xa3,0x14,0x58,0xd6,0xe5,0x43,0x4a,0x8d,0xcc,0x4f,0xf8,0x17,0xdd,0xd2,0x5d,0xd5,0x5a,0x86,0x8e,0xc4,0x74,0xdc,0x1b +.byte 0xad,0xca,0x63,0x75,0xf0,0x43,0x41,0x16,0x02,0x49,0x6a,0x3a,0xe3,0xb9,0xa9,0xdc,0xfb,0x99,0xbc,0x60,0x0d,0xdb,0xa0,0xcf,0x27,0xaa,0xd5,0xc5,0x42,0x0b,0x02,0x00,0x43,0xaf,0xb5,0x4f,0xe1,0x88,0xa1,0x9d,0xca,0xfb,0x9f,0x1f,0x08,0x9c,0x66,0x23,0xca,0x4b,0x88,0xb4,0x40,0xdc,0xd3,0xd3,0x1a,0x64,0xe3,0x9b,0x43,0xea,0x20,0x90 +.byte 0x30,0x2e,0xc4,0x75,0xc5,0x52,0xc5,0x7c,0x0e,0x35,0x56,0xf5,0x1f,0x50,0x2b,0xf6,0x28,0x93,0x6f,0xde,0x10,0xc6,0x49,0x2b,0x77,0xb1,0x6d,0xce,0xfd,0x37,0xd4,0x8d,0x11,0xed,0x88,0x1e,0xca,0x68,0x0c,0x4e,0x38,0x7f,0x0f,0xab,0x6f,0x8d,0x1c,0x7d,0xd4,0x7d,0xd8,0xa9,0x5c,0x24,0x5a,0x7d,0xf4,0x5b,0xb6,0xb7,0x28,0xc7,0x93,0xd6 +.byte 0xa9,0xe5,0xac,0x62,0x16,0x9c,0x4e,0x5c,0x24,0xa0,0x2a,0x76,0xce,0x7d,0x5c,0x4b,0xbe,0xbc,0x83,0x5c,0x9a,0xc8,0x06,0x7b,0x1e,0xac,0x98,0x67,0x17,0x32,0x94,0xda,0xd1,0x8b,0x58,0xad,0x8e,0x26,0x03,0x81,0x7c,0x48,0xd1,0x83,0x03,0xba,0x6c,0x51,0xe9,0x25,0x82,0xd2,0xb9,0x7f,0xd8,0x33,0x3f,0x77,0x29,0x45,0x41,0xa9,0x17,0x3d +.byte 0x62,0xc6,0xd2,0xfb,0xd1,0x24,0xc7,0xee,0x10,0xc0,0x64,0xc3,0x46,0xc6,0x2b,0xe8,0x9c,0xc8,0x99,0x23,0x77,0xa9,0xb5,0x12,0xc4,0x53,0xde,0xbc,0x20,0xb2,0xc4,0x12,0xdb,0xc2,0x0b,0x63,0x70,0x6a,0x41,0x31,0x65,0x48,0xa0,0xfc,0xbc,0xd6,0x3f,0x55,0x18,0x17,0x65,0x35,0x58,0xe3,0x33,0xac,0xaf,0xca,0xb2,0x51,0xc1,0xcc,0x60,0x38 +.byte 0x94,0x8f,0x13,0xb8,0xcc,0x8c,0xc4,0x12,0xea,0xd5,0x39,0xd3,0x46,0x55,0x17,0x27,0x7a,0x07,0x01,0x02,0x74,0xa6,0xe7,0xc8,0xa7,0xd0,0x76,0xc8,0x5e,0x57,0x50,0xc5,0x19,0xf1,0x95,0xa3,0x52,0x10,0xa3,0x1e,0xcd,0xb1,0x05,0x64,0xe5,0x69,0xd9,0x5e,0xfc,0x71,0xef,0xe1,0xf6,0xb3,0xa7,0xf7,0xf9,0x71,0xfd,0xbb,0x5b,0x2b,0x7a,0xd2 +.byte 0x72,0x7c,0xc7,0x73,0x89,0xf7,0xe2,0x0b,0xcd,0x05,0x4f,0x0c,0x10,0xed,0xcc,0xda,0xb6,0x81,0x19,0xe6,0x2b,0x06,0x66,0xef,0xc5,0xfd,0xd5,0xc6,0x66,0x20,0x86,0x2a,0x4f,0x05,0x49,0xf1,0x54,0x4a,0x6e,0x1d,0xcd,0xad,0x18,0xeb,0x6c,0x58,0xd6,0x75,0x3e,0x62,0x48,0xab,0xea,0x1f,0x7f,0x05,0x45,0x6e,0x75,0x2a,0x5e,0x97,0x5b,0xde +.byte 0x5a,0x99,0x42,0xc1,0x62,0xab,0xc7,0x01,0x4d,0xac,0xd6,0xdc,0xc9,0x71,0x24,0xd1,0x33,0xe2,0x4b,0x1f,0x09,0x04,0x1f,0x0d,0x42,0x45,0xcf,0x7c,0xa0,0xee,0x48,0xfd,0x8b,0x1f,0xaa,0x50,0x48,0x6d,0x8e,0x34,0x76,0x09,0x23,0x8a,0x40,0x0d,0x5d,0xc1,0x2a,0xba,0x5f,0x9c,0x86,0xfb,0x37,0xdf,0x24,0xff,0x27,0x88,0xbf,0xf6,0xa4,0xc3 +.byte 0xf0,0xd3,0x02,0xa8,0x7c,0x6d,0xc4,0xc5,0x14,0xc3,0x64,0x28,0xa8,0x05,0x33,0xc2,0xda,0x12,0xfc,0xbe,0x0d,0x8e,0xf4,0xf5,0x48,0x5a,0x8e,0x8a,0xd2,0x50,0x7c,0xc0,0xbc,0xde,0xdb,0x9a,0xf6,0xa0,0x92,0x8d,0x19,0xbc,0x5a,0xdc,0xbf,0xfb,0x13,0x8f,0x41,0x09,0xba,0xd9,0x0b,0x91,0x7a,0xdb,0x92,0x10,0xac,0xf2,0xb5,0x76,0xb5,0x7d +.byte 0x80,0x04,0xd6,0xec,0x98,0x09,0x5f,0x63,0x0d,0x58,0x00,0x8a,0x07,0x76,0xfa,0xe6,0x6e,0xdf,0xbf,0x73,0xe5,0xc9,0xe5,0x12,0x44,0x58,0xf9,0x2e,0xb1,0xe6,0x2c,0xf5,0x0d,0x94,0xa9,0x51,0x0d,0x01,0x03,0xab,0x79,0xf9,0xee,0x7e,0x10,0x4b,0xcb,0x20,0xbb,0x01,0x19,0xd6,0x12,0xd1,0xac,0x96,0xe9,0x0e,0xde,0xbf,0x7e,0x80,0xf6,0x58 +.byte 0xc9,0xec,0xaf,0xf7,0x2d,0x98,0xbc,0x2b,0xb1,0xf1,0x34,0x94,0x39,0x8e,0xbc,0x13,0x13,0x41,0x8f,0xf3,0x4e,0x4e,0x6b,0x2a,0xaa,0xea,0x70,0x5c,0xf8,0x42,0xf7,0xbc,0xfd,0xbd,0x6f,0x62,0x1b,0xcb,0xb9,0x39,0xdc,0x6a,0x47,0x81,0xaf,0xff,0x5b,0x7e,0x80,0xb9,0xbf,0xfa,0x15,0x7e,0xd1,0xc3,0xb2,0x80,0x99,0xbd,0xb9,0x30,0x8d,0xb5 +.byte 0x43,0x6b,0x7a,0x31,0xaf,0x45,0xf7,0xdd,0x21,0x8f,0x54,0xb1,0xf6,0x2d,0x7d,0x96,0x63,0x4a,0x93,0x98,0x37,0x7f,0x48,0x02,0x4b,0x0f,0x71,0xe4,0x70,0xce,0x66,0x6a,0x36,0xde,0x58,0x84,0x69,0xd6,0xbd,0x1a,0x9a,0x8b,0xc5,0xda,0x97,0xc5,0xe1,0x4e,0xec,0x9b,0x7a,0x65,0xe0,0xa5,0xdd,0x39,0x3c,0x9f,0xfd,0x45,0x17,0x4c,0x2f,0xb4 +.byte 0xb1,0xb1,0x42,0xe8,0x88,0x75,0x9f,0xb4,0xc1,0xdf,0x44,0xf9,0x4f,0x9a,0xf7,0x3d,0x35,0xc5,0x32,0xbe,0x43,0xd0,0x0d,0x71,0x4e,0x21,0xbf,0x31,0x99,0x73,0x5a,0x84,0x45,0x2e,0x00,0x8b,0x42,0x2b,0x14,0x86,0x51,0xcb,0xa0,0x98,0xa9,0x68,0x8d,0xdb,0x58,0x3d,0x73,0x9d,0xf9,0x2d,0x86,0x76,0x62,0xcb,0x93,0x29,0x48,0x92,0x38,0xfb +.byte 0xeb,0x1d,0xda,0xc3,0x10,0x1f,0x32,0x68,0xee,0xcb,0xb7,0x8a,0xcb,0xcb,0xe0,0x37,0x31,0xe8,0xad,0x7b,0x4a,0x29,0x2c,0x10,0x9e,0xdf,0x86,0xeb,0x13,0x0c,0xab,0xa4,0x30,0x36,0xf0,0xe0,0xac,0x14,0x41,0xa4,0xf4,0xf8,0x44,0x95,0xe8,0x8f,0x28,0xc2,0x35,0x0a,0x44,0x61,0xc7,0x60,0xc5,0x3b,0xc4,0x1d,0x67,0xfd,0xac,0x0b,0x2e,0x49 +.byte 0x62,0xea,0x17,0x3c,0xf5,0x4b,0xbe,0xba,0xba,0x42,0x02,0x0d,0x13,0xf1,0x15,0xff,0x2e,0x47,0x46,0xd1,0x27,0x64,0xb7,0x35,0x28,0x31,0xb5,0xde,0x1e,0xf9,0x26,0x6c,0x04,0x3c,0x0e,0x06,0x9d,0x4d,0xc7,0x1c,0x97,0x67,0x2c,0x6d,0x36,0x0d,0x4c,0x61,0x08,0xe9,0xbd,0x04,0x1d,0x8d,0xfb,0x0c,0x03,0x3d,0xb4,0x40,0xd5,0x1b,0x69,0x3b +.byte 0x68,0xcf,0x46,0x27,0xcf,0xb3,0xda,0x1e,0xdc,0x85,0x6f,0x4f,0x6b,0x09,0x9d,0xe9,0x6c,0x73,0x40,0x27,0xc9,0x8b,0x12,0x97,0xea,0x34,0xd7,0x51,0x32,0x90,0x4e,0xd7,0x91,0x41,0x3a,0xee,0xbc,0x97,0xb0,0x4a,0x39,0xdb,0xe3,0xe5,0x12,0x73,0xbf,0x5d,0x68,0xe0,0xc6,0x7c,0x6f,0x0d,0x14,0x1c,0xaa,0xde,0x29,0xb7,0xc7,0xa5,0x90,0x62 +.byte 0xe9,0xc5,0x75,0x16,0xe6,0xc0,0x9d,0xc5,0xb8,0xd6,0xfa,0xb0,0x72,0xb7,0x27,0xa6,0xa8,0x3f,0xbf,0x18,0x8b,0xaa,0x94,0xb3,0x47,0x50,0x2f,0x1c,0x49,0xab,0x46,0x38,0x7f,0x3e,0xf3,0xf1,0xb8,0xb3,0x44,0xaa,0x1f,0x76,0xb4,0x67,0xff,0xcf,0x7c,0x4b,0xa9,0xe1,0x62,0x93,0x4d,0x3e,0x96,0xdb,0x56,0xf6,0x26,0x5d,0x95,0x4c,0xfa,0x5f +.byte 0x06,0x2b,0x5c,0x33,0x2d,0xf8,0xfa,0x68,0x8a,0xed,0x28,0x2a,0x6e,0x95,0x86,0x59,0x71,0xef,0x86,0x47,0x60,0xec,0x35,0x79,0xa9,0x98,0x2d,0x6e,0x20,0x26,0x3a,0x21,0xec,0x59,0x15,0x65,0xcd,0xb9,0x91,0x19,0x6e,0x74,0x89,0x3b,0x10,0x00,0xab,0x8a,0x45,0x23,0x20,0x94,0x03,0x02,0x77,0xb7,0xcf,0x9c,0x71,0x18,0x0c,0x5b,0x40,0x62 +.byte 0x3b,0x8f,0xc9,0xf6,0x4c,0x8f,0x60,0x66,0x05,0x87,0x05,0x90,0xd4,0x08,0x76,0xd7,0xa3,0xb6,0x37,0xa8,0x83,0x05,0xb2,0x48,0xe9,0x24,0xc4,0xfb,0x79,0xa1,0xce,0xac,0x29,0x13,0x4e,0x72,0xdf,0xad,0x9e,0x5b,0xcd,0x9c,0x39,0x1d,0x3e,0x57,0x9d,0xf2,0x96,0x13,0xa4,0x79,0x4c,0x76,0x40,0x03,0xb3,0x18,0xcf,0xd7,0x45,0x2a,0x2d,0x07 +.byte 0xe5,0x2e,0xb7,0x74,0xda,0x94,0xea,0x32,0x74,0xb0,0xca,0xf4,0xd1,0x09,0x97,0x3c,0x69,0x17,0xf6,0x5b,0x13,0x7b,0xb8,0xb1,0xd9,0x0e,0x12,0x44,0x29,0xea,0x26,0xd8,0xaa,0x9d,0x26,0x87,0x0c,0x89,0x4e,0xec,0x29,0x48,0x43,0x66,0x21,0x0b,0xab,0xce,0x40,0x57,0x4c,0xa7,0xdd,0x56,0xde,0xac,0x5c,0x62,0xea,0xc4,0x54,0x4a,0xe0,0x8d +.byte 0x54,0xc8,0x65,0x44,0xcc,0x6f,0x2a,0xcd,0x0e,0xb3,0xad,0xa3,0x30,0xd1,0xb7,0x19,0x70,0x51,0xd3,0x9a,0xcf,0xe5,0x42,0x6c,0xa1,0xc1,0x0f,0xe2,0xda,0x86,0xb4,0x51,0x50,0x62,0xdc,0x51,0x3f,0xd2,0xff,0xde,0x7f,0x38,0x5a,0xff,0x2d,0x21,0x1d,0x59,0xb9,0xdd,0xde,0x83,0x13,0xb0,0x25,0xf5,0xbb,0x11,0x47,0x4a,0xaf,0x81,0x15,0xa0 +.byte 0x39,0x5b,0x30,0x17,0x2b,0xbf,0x5a,0x03,0x60,0xb6,0xbb,0x86,0x9f,0x50,0x45,0x15,0x0b,0xba,0x42,0xf4,0x3d,0x05,0x62,0xcd,0x9b,0x8c,0xcf,0x93,0x5c,0x33,0x6c,0xea,0x4b,0xd0,0x1d,0x91,0x3e,0xbf,0xa4,0x9d,0x7c,0x2c,0x87,0x9c,0x42,0x9f,0x03,0x98,0x03,0x1b,0x98,0x66,0x4f,0x8f,0x29,0x12,0xc5,0xb5,0xec,0x81,0xf8,0xb2,0x5e,0x44 +.byte 0x4f,0xb0,0x31,0xe4,0x2a,0x73,0x83,0xac,0x5a,0x3f,0xfa,0xcf,0x8b,0x7c,0xa3,0xf1,0x01,0x14,0xa1,0xca,0x60,0x8d,0x6a,0x6c,0x04,0x31,0xcc,0xba,0x12,0xe0,0x4e,0xaf,0x01,0x8d,0xf5,0x60,0x23,0x79,0x8a,0x80,0xcc,0x32,0x31,0x69,0x83,0xb6,0x83,0xaa,0xd9,0x3b,0x86,0x4a,0xd8,0x10,0x28,0x09,0x82,0x36,0xee,0x6a,0xc0,0x80,0x3f,0xfd +.byte 0xb1,0xd2,0xde,0x34,0xf9,0x4c,0x87,0x5b,0xdd,0xd0,0xb6,0x2d,0x99,0x69,0xd3,0x2c,0xb7,0x0b,0xfc,0x16,0x88,0x7b,0x80,0x21,0xbc,0x30,0x7b,0x56,0xe5,0x7b,0x41,0x43,0x4d,0xaf,0x40,0x5e,0x74,0x14,0x17,0x66,0x32,0xd6,0x81,0x53,0x94,0x35,0xf0,0x0f,0x4f,0x99,0x54,0x9a,0x38,0xc0,0x2a,0xa9,0xd3,0x53,0xdd,0x9a,0xc5,0x29,0x18,0x62 +.byte 0xf6,0x93,0xa3,0x02,0xf0,0x13,0xcb,0xcb,0xcc,0x64,0x0b,0x00,0xf4,0x43,0x03,0x26,0xe6,0x2f,0x39,0xa1,0x83,0xea,0x94,0x2f,0xde,0x61,0xbd,0xe1,0xbe,0x08,0xf8,0xd4,0x01,0x6e,0x61,0x98,0x01,0x39,0x4b,0x93,0x39,0x38,0x34,0x58,0x24,0xc1,0xf5,0x03,0x05,0x15,0x9c,0xf0,0x30,0x20,0x24,0xd4,0x7e,0x73,0xb2,0x60,0x06,0x3b,0xd3,0xb7 +.byte 0x2c,0x47,0x17,0xc4,0x79,0x4e,0x45,0x0b,0x89,0xf0,0xfc,0x42,0xa0,0x0d,0x80,0xd2,0x44,0x36,0x70,0xaa,0x9e,0x72,0x85,0xa8,0xc8,0x1d,0x35,0x28,0xc3,0x5a,0x72,0x4c,0x06,0x6d,0xf4,0xae,0x54,0x86,0x9a,0x32,0x3c,0xa5,0x06,0x63,0xc1,0x37,0xbb,0xaf,0xa6,0xae,0xce,0x94,0xea,0x9c,0x4a,0x9e,0x56,0xb1,0xc3,0x84,0x84,0xef,0x3d,0xe9 +.byte 0x24,0xf4,0xbf,0xc3,0xf6,0x45,0x74,0x4e,0xbb,0x86,0xd3,0x7f,0xab,0x19,0xe3,0x63,0x67,0x81,0xb6,0x18,0xc8,0x78,0x8e,0xf8,0x83,0x5f,0xfb,0x2e,0x49,0x97,0x2b,0x34,0xbb,0x76,0x2e,0x93,0xec,0xe9,0x7f,0x4d,0x7e,0x52,0x0c,0x92,0xbc,0x6d,0x3a,0x34,0x9b,0x5e,0x61,0x6f,0xea,0x45,0xe7,0x5c,0x34,0x6b,0xcb,0xc0,0x31,0x61,0x64,0x9d +.byte 0xad,0x7f,0x98,0xca,0xfe,0x3d,0xad,0xf7,0x21,0xf6,0x4c,0x2a,0x21,0x07,0x80,0x25,0xa2,0xea,0x26,0x85,0xc3,0xb1,0x74,0x04,0x7f,0xd1,0x1c,0x1b,0xa5,0x7e,0x96,0x45,0xfe,0x6f,0xa6,0x34,0xdf,0x94,0x1f,0x7e,0xfb,0xcf,0xfd,0x29,0xeb,0x3a,0xb0,0xfc,0xb6,0xd5,0x80,0x8b,0x37,0x71,0xfb,0x70,0x19,0x30,0xc4,0x6f,0xa0,0x5b,0xae,0x5b +.byte 0x75,0x51,0x98,0x89,0x9e,0xf0,0xf5,0x79,0xaf,0x1c,0x07,0xb6,0x5e,0xcf,0x34,0x70,0x0f,0x0b,0xbc,0x0a,0xa6,0x40,0xc7,0xf8,0xe4,0xef,0xe6,0xb7,0x94,0x6e,0x98,0x75,0x22,0x73,0x5c,0xca,0xcc,0xfb,0x09,0x2f,0x9c,0xfe,0x49,0x0f,0xd3,0x65,0xfe,0xd4,0xf0,0x9b,0xeb,0x8c,0xd7,0x8c,0xff,0x4b,0x18,0x3e,0xf3,0x9d,0x3f,0xf5,0x83,0xd6 +.byte 0x1d,0x3d,0x23,0x79,0x0f,0xae,0x17,0x62,0x33,0x07,0xc3,0xac,0x98,0x07,0x72,0x9b,0xd9,0x26,0x5c,0x1a,0x9d,0xf1,0x35,0x92,0xf9,0x38,0x17,0xf8,0xee,0x26,0xf9,0x64,0xfc,0x5e,0x8b,0x80,0xce,0xdb,0x64,0xf7,0xde,0x20,0x19,0x5c,0x26,0xf6,0x23,0xd6,0x99,0x8e,0x75,0x77,0x3d,0x17,0x0f,0xea,0x31,0x5a,0x65,0x32,0x1b,0x78,0x78,0xe4 +.byte 0xfe,0x76,0xf8,0xa7,0x81,0x34,0xf1,0x2a,0x13,0x22,0xe4,0x8a,0xe1,0x42,0x5a,0x3f,0x44,0x22,0xeb,0x7e,0xcd,0x20,0xcd,0xf7,0x44,0x1a,0x87,0xb9,0x7a,0x0e,0xf8,0xcb,0xb5,0x0a,0x1f,0x6a,0xe6,0x0b,0x70,0x59,0x38,0xa3,0x6b,0x64,0x7b,0x61,0xfe,0xbd,0xa4,0xb7,0x89,0x7a,0x28,0x70,0xfe,0x9d,0x64,0x2c,0xe9,0xc4,0xc9,0x2f,0xc8,0x3e +.byte 0xfa,0x70,0xce,0x21,0x9b,0xa8,0x10,0x6a,0x16,0xdd,0x28,0xce,0x4e,0xd4,0x6c,0x8c,0x47,0x83,0x13,0x8b,0xec,0x1c,0x76,0xdc,0x4d,0x81,0x25,0x08,0xd8,0xf9,0xde,0x66,0x1d,0xe2,0xf3,0xe7,0xdc,0x3e,0x3c,0x6b,0x98,0x25,0x55,0x88,0xe8,0xda,0x7f,0x16,0xe5,0x7d,0xad,0x8a,0x36,0x00,0xf0,0x68,0xc5,0xe4,0xfc,0xe9,0xe3,0x54,0xeb,0x4c +.byte 0xd1,0xff,0x07,0x1a,0x5c,0x5e,0xd4,0xb1,0xff,0x7d,0xfc,0x5b,0x34,0x42,0x95,0x89,0x01,0x24,0x8e,0x30,0xec,0xfe,0x67,0xf8,0xe2,0xaa,0xd5,0x6a,0x9f,0xe3,0xc3,0xa5,0x53,0x7f,0xd3,0xf4,0x98,0xa5,0x47,0x11,0xad,0xac,0xea,0xba,0x20,0x34,0x03,0x65,0x8c,0xec,0xb6,0xa3,0x2b,0xf6,0x93,0xe1,0xc8,0xad,0x34,0x30,0x8f,0x0e,0x3b,0xf6 +.byte 0x63,0xc6,0x58,0xc3,0xe8,0xa3,0x85,0xf8,0x24,0x8e,0x21,0xb9,0x36,0x7c,0xe0,0x11,0x64,0x31,0x6a,0x6a,0xa2,0xad,0xd3,0x94,0xbb,0x13,0x5b,0xb4,0xe9,0xee,0x09,0xdc,0xfe,0xb2,0xad,0xa8,0x43,0x02,0xba,0x85,0x1f,0x56,0xcb,0xb5,0x95,0x32,0xcc,0x7e,0xe0,0x00,0xde,0xfa,0x3f,0x91,0x71,0xde,0x21,0x19,0xff,0xc9,0x97,0x43,0x95,0xd8 +.byte 0x0d,0xc2,0x8a,0xde,0xcc,0x34,0x48,0xf4,0x35,0x41,0xb8,0x56,0x52,0xce,0x06,0xb3,0xcf,0xd4,0xae,0x7a,0xcb,0xe9,0xed,0x37,0xd6,0x76,0xa0,0x77,0x04,0xfb,0xb7,0x41,0x25,0x38,0xe1,0xd1,0xb5,0xde,0x21,0xe0,0x64,0xd8,0x83,0x13,0x7b,0x4b,0xb8,0xc9,0x12,0x02,0x51,0x56,0x52,0xe9,0x1c,0x49,0x48,0x83,0xd0,0x99,0x73,0x60,0x4a,0x4c +.byte 0x7d,0x8d,0x43,0xf9,0x06,0xa4,0xbb,0x0e,0xb6,0xdd,0x5f,0xc7,0x5e,0x35,0xcb,0xa0,0xc1,0x66,0x4a,0xe3,0x4a,0xa9,0xec,0xa4,0x5a,0xd7,0xd6,0xea,0xa5,0x20,0xa6,0xc3,0x1b,0xc0,0xa8,0xd1,0xf1,0x08,0x05,0xab,0x40,0x14,0x35,0xf2,0xdd,0x0f,0xc5,0xda,0xb3,0xa6,0xb1,0x07,0x36,0x17,0x5d,0xe9,0x96,0x23,0x96,0x46,0xd4,0xa7,0x71,0x64 +.byte 0x13,0x72,0x4e,0x83,0xe0,0x65,0x40,0x41,0xaf,0xb6,0x5b,0x00,0xa2,0xab,0x09,0x7f,0xa5,0xd5,0xc2,0xd9,0xc0,0x68,0x2a,0x44,0xdc,0x43,0x37,0x81,0xb8,0x88,0x4c,0x85,0x1b,0xb1,0x83,0xb2,0x56,0xa3,0x91,0x0f,0xa6,0x70,0x3f,0xbd,0xe9,0xda,0x40,0x9b,0xf5,0x9e,0x53,0xed,0x5f,0x84,0x70,0xd2,0x4c,0x1c,0xb6,0x87,0xd6,0xbb,0x3b,0xec +.byte 0xe5,0x35,0x1b,0x2c,0x9b,0xf1,0xe5,0xf8,0x0e,0x07,0x98,0xcc,0x58,0x38,0x57,0x74,0xdb,0x0e,0x08,0xd9,0x56,0xe8,0x08,0x63,0x3d,0x94,0x4a,0xdc,0x59,0xfc,0x3d,0xc1,0xa4,0x36,0xc3,0xe8,0xbe,0x4b,0xd7,0x47,0x69,0x33,0xb8,0x72,0x30,0x59,0x28,0x4e,0xf1,0xc1,0x25,0xa3,0xa4,0xe3,0x12,0xcf,0x31,0xf6,0xf8,0xae,0x31,0x06,0x76,0x92 +.byte 0x64,0x87,0x8e,0xb0,0x9f,0x1d,0xf4,0x56,0x73,0xc5,0x5d,0xbb,0x80,0x0d,0x19,0x3f,0x56,0x8c,0xe4,0xd6,0x8a,0x9a,0x62,0x26,0x4e,0x8a,0x21,0x7d,0x72,0x34,0x87,0xb6,0x7e,0x49,0xdc,0xfd,0x27,0x95,0xba,0x25,0xdd,0xf4,0x58,0x2b,0x11,0x3f,0xd1,0xd7,0x13,0x1d,0xb0,0xec,0xe2,0x55,0x5e,0x72,0xea,0x36,0xc9,0xd8,0x61,0xc0,0xee,0xc4 +.byte 0x9f,0x35,0x7e,0x73,0xd3,0xf6,0xd7,0x6a,0xce,0xd6,0xd2,0x80,0xe6,0x10,0x4b,0x65,0x18,0x6f,0xab,0xd3,0x41,0xbb,0x39,0x36,0x95,0x84,0x3c,0x99,0x9a,0xfd,0xf0,0xa3,0x46,0xdf,0x48,0x7c,0xd5,0x57,0x9d,0x10,0x59,0xca,0x70,0xc4,0xb5,0xbe,0x47,0x9e,0xca,0x2b,0x49,0x54,0xbb,0x34,0x8e,0x39,0xf4,0xf8,0x8c,0xa5,0xa1,0xab,0xf6,0x51 +.byte 0xd8,0x22,0x9a,0xd5,0xc2,0x12,0xf8,0x26,0xc6,0x19,0x2a,0xa6,0x6e,0xab,0xd3,0xac,0xd1,0x21,0x97,0x67,0x3e,0x39,0x90,0x5c,0x37,0x65,0x7b,0x06,0x54,0x1a,0xb8,0x2a,0x56,0x02,0xa3,0x92,0xee,0xf3,0x38,0x53,0x25,0x4d,0x5d,0x0a,0x37,0x9e,0xbb,0xf4,0xb2,0x13,0x77,0xbb,0x93,0xa9,0x85,0xf2,0x15,0xfd,0x71,0x17,0x00,0x89,0xe7,0x7b +.byte 0xa9,0xdc,0x10,0xd9,0xc7,0x44,0xa5,0x7b,0x3f,0x2f,0x1e,0x6d,0xa7,0xfe,0x0c,0x0e,0x83,0x3e,0x38,0x27,0xa7,0x4e,0x85,0x3c,0x84,0xfe,0x95,0x48,0x85,0x09,0x75,0x62,0x1d,0xa4,0x64,0x54,0xed,0x89,0xd5,0x28,0x62,0x52,0x18,0xef,0xf0,0x57,0x05,0x30,0xf0,0xce,0x87,0x05,0x0d,0x81,0xe8,0x2a,0x3c,0x8c,0x22,0xe1,0x4b,0x32,0x42,0x9d +.byte 0x02,0xc5,0xe4,0x6a,0xa4,0x4d,0x9b,0xc4,0x82,0x47,0xdc,0x61,0xbd,0x82,0x01,0xcd,0x5e,0x64,0x9f,0x4c,0xe3,0x31,0xe9,0x48,0x53,0x85,0x07,0xc7,0x47,0x49,0x35,0xd8,0x6a,0xab,0x4f,0x73,0x3f,0xd3,0xde,0x87,0x29,0xac,0xbc,0x35,0x0a,0xb4,0x74,0xc2,0xa7,0x0b,0xb1,0x93,0x92,0x29,0x3b,0x3e,0xa8,0xde,0x12,0x49,0x75,0xda,0x16,0x27 +.byte 0x52,0x2f,0x93,0x23,0xd6,0xf7,0x10,0xfe,0x1e,0x93,0x97,0x06,0x9d,0xef,0x4f,0xe4,0x3d,0x5d,0xde,0x30,0x70,0x3d,0x78,0x3a,0x30,0x00,0x9b,0x77,0x12,0x90,0x62,0xda,0x32,0x9b,0x6a,0x47,0xd7,0x0f,0xee,0x75,0x18,0xdd,0x4d,0x8a,0xe2,0x35,0x5b,0x60,0xb8,0xf9,0xa4,0x6c,0x93,0x3e,0x47,0x23,0xed,0x7a,0xe2,0x58,0x42,0xd6,0x3f,0x90 +.byte 0xc0,0x12,0x38,0x8b,0x70,0xe0,0xf8,0x1a,0xb5,0x8d,0xe1,0x39,0xdf,0x93,0x25,0x72,0x2e,0xa9,0x3f,0x58,0x12,0x40,0xc4,0x92,0x46,0x08,0xf0,0x64,0xdd,0x34,0x42,0xfe,0x74,0x35,0x0c,0xda,0xef,0x06,0x0b,0x33,0x59,0xd9,0xee,0x4c,0xf9,0x02,0x3a,0x93,0x40,0xa3,0x99,0x0e,0x64,0x11,0x2f,0x52,0x9d,0x28,0x4d,0xe8,0x45,0xd0,0x22,0xd7 +.byte 0x8f,0xd6,0x28,0x8c,0x0e,0x18,0x87,0x24,0xf9,0x88,0xd2,0xc0,0xe8,0xd4,0x9d,0xa2,0x5a,0x79,0x83,0x37,0x18,0x84,0x12,0xca,0xc7,0x10,0xd5,0x5a,0xa8,0xe5,0xa8,0xe7,0x79,0xb6,0x2c,0xb3,0x90,0x6c,0xc5,0xa4,0x99,0x1b,0x85,0x29,0x78,0x0b,0x09,0x77,0x05,0xf4,0x23,0x79,0x5c,0x91,0xf3,0xe0,0xe4,0x6f,0x82,0x33,0x4e,0xa2,0x2e,0xa2 +.byte 0x65,0x79,0xad,0x98,0x36,0x34,0x72,0x97,0xd7,0x39,0x89,0x5e,0x82,0x9f,0x4c,0xe2,0xea,0x51,0x85,0x62,0x0c,0x39,0xf6,0xdc,0xc6,0x80,0x48,0xcf,0x98,0x93,0x64,0x7d,0xf9,0x63,0xf4,0xf5,0x18,0x2a,0xb6,0x04,0xb7,0x44,0xc4,0x60,0xc0,0xcf,0x3d,0x88,0xa8,0xb6,0x81,0xa3,0x99,0x2a,0xf0,0x1a,0x8d,0x76,0x20,0x1d,0xcc,0x10,0x50,0x58 +.byte 0x09,0xf9,0xda,0x65,0x60,0xc3,0xb1,0xc1,0xc0,0x4d,0x62,0x52,0x22,0x45,0x32,0xbc,0x11,0x93,0x15,0xb6,0x25,0x8f,0x65,0xa0,0x4c,0x88,0xc9,0x83,0xe1,0x5c,0xbb,0xfb,0x1a,0xab,0xdb,0x35,0x40,0x66,0xc0,0x2f,0xdc,0xf5,0x92,0x08,0x4c,0xc7,0xb8,0x49,0x05,0xe0,0xe1,0x61,0x2b,0xde,0xc7,0x6a,0x04,0x05,0x4d,0x9f,0xe9,0x59,0x22,0x56 +.byte 0x63,0x77,0x9d,0xe3,0x1e,0x36,0xdf,0x87,0x4a,0xeb,0xba,0x42,0x3d,0x1b,0xa5,0xd0,0xc5,0x44,0x07,0xbe,0x37,0x37,0x70,0x10,0x2d,0x02,0x9b,0xf6,0x52,0xf3,0x54,0x6d,0x50,0xdb,0xdb,0x57,0x01,0x0b,0x9b,0xd5,0x99,0x99,0x69,0x9b,0x10,0x76,0x48,0xea,0x28,0x27,0x06,0x30,0x63,0x3b,0xdf,0x06,0x30,0x37,0x28,0x75,0xcf,0x9c,0xe7,0x52 +.byte 0x43,0xe2,0xd5,0x7b,0xfa,0x88,0x98,0x9c,0x3e,0x27,0x30,0x21,0xcc,0x11,0x71,0x14,0x24,0x04,0x1a,0x8c,0xe9,0xfe,0x2f,0x9d,0xec,0xb1,0x10,0x33,0x05,0x31,0x01,0x1b,0xde,0x6b,0x30,0x20,0x6d,0xf4,0x7c,0xbf,0x41,0x04,0x5f,0xb9,0x9c,0x24,0x63,0x74,0x98,0x3e,0x60,0xc7,0xf1,0xb1,0xc6,0x94,0xf3,0x6f,0x95,0x24,0xdf,0x97,0xd5,0xc7 +.byte 0x50,0x19,0xaf,0xa5,0xae,0x51,0xde,0x6d,0x44,0x0c,0x90,0x72,0x11,0x82,0x04,0xf9,0xda,0x17,0xd8,0xf3,0x03,0xf2,0x03,0x3f,0x65,0x7f,0xd7,0x66,0x84,0x9a,0x02,0x90,0x2b,0x65,0x00,0xd9,0x9c,0xfb,0xaa,0xe2,0xde,0x5f,0x1e,0x19,0x1e,0x6d,0x20,0x1e,0x01,0xf1,0xca,0x7b,0x90,0x06,0x96,0x1d,0x7a,0x34,0x0c,0x66,0x57,0xd7,0x61,0x1f +.byte 0x74,0x03,0xcb,0xae,0xea,0xaf,0x65,0x8e,0x32,0xbe,0xb8,0xe6,0xd8,0x6d,0xf7,0x51,0x6d,0xec,0x7e,0xc6,0x9d,0x20,0x01,0xbf,0xd7,0xbc,0xcb,0x34,0x7c,0xe5,0x1f,0x92,0x72,0x2f,0x6f,0xa3,0x1f,0xe8,0x4d,0x7e,0xa5,0x85,0x3b,0xed,0xc7,0x25,0x53,0xe3,0x77,0x90,0x1f,0xda,0xb7,0x48,0x7d,0xbe,0x20,0x48,0x9f,0xb4,0x05,0x5d,0x41,0xc5 +.byte 0x48,0xd0,0xc9,0x83,0xbe,0xf8,0xd8,0x6b,0x0d,0x26,0x66,0x2e,0xef,0x6b,0x13,0x58,0x6b,0x5f,0x0e,0x8b,0x4e,0x57,0xb2,0x6b,0x3d,0x4d,0xcd,0xcb,0x9a,0x9b,0xda,0x4d,0x7f,0xea,0x17,0x06,0x7f,0xcd,0xaf,0x18,0xda,0x3d,0xf0,0x30,0x2e,0xbb,0xc2,0x1d,0xcf,0xde,0xf7,0xee,0xda,0xd6,0x3d,0x75,0xcf,0x19,0xcf,0xfc,0xdf,0x7a,0xb6,0x1f +.byte 0x89,0xf5,0x0c,0xe9,0xd5,0xf1,0xd0,0x40,0xbd,0xae,0xb5,0x16,0xf6,0x05,0x1e,0xba,0xcd,0x18,0x80,0x4a,0xb3,0x87,0x93,0x6b,0x19,0xfc,0x47,0xa8,0x45,0x4b,0x75,0xe8,0x06,0xc0,0xbd,0x86,0xf7,0xcf,0x2c,0x39,0xc6,0x0b,0x3f,0x32,0xcd,0x1c,0x02,0xec,0x4b,0xd5,0x90,0x84,0xaf,0xc9,0x5c,0x9e,0x64,0x82,0x13,0x81,0x05,0x03,0xe4,0xed +.byte 0x48,0x23,0xc3,0x53,0x2c,0x5a,0x22,0x0a,0x27,0x7e,0x55,0x79,0xdc,0x46,0xf5,0x4b,0x04,0xcc,0x43,0x87,0x6c,0xb5,0xa4,0x2d,0x78,0x70,0x02,0x43,0x0e,0x76,0x62,0x99,0x86,0x40,0x2a,0xe4,0x62,0xe6,0xee,0x4e,0x03,0x64,0x83,0x9c,0x38,0x6d,0x62,0xa6,0x85,0xb8,0xce,0xd7,0xf8,0xcb,0x78,0x00,0x7a,0x48,0x72,0x75,0x4e,0x9c,0x6f,0x0c +.byte 0x61,0xc7,0x93,0x4e,0x6d,0x65,0xa3,0x1b,0x17,0x84,0xc6,0xd2,0x29,0xc3,0x4d,0xe3,0x14,0x21,0x5f,0x9e,0xa9,0x28,0x11,0xf3,0xb2,0xe8,0xe7,0x60,0x9e,0x24,0xab,0x88,0x9c,0x9c,0x5e,0x17,0xe4,0xe1,0xa7,0x74,0xb4,0x82,0xd5,0xaa,0x92,0x08,0xa7,0xa2,0x04,0x6f,0x77,0x14,0x54,0x44,0x5d,0x13,0x10,0xa2,0x40,0x1d,0xf0,0x44,0x16,0x17 +.byte 0xda,0x8c,0x80,0x83,0x2b,0x19,0xb8,0xab,0xf2,0xb8,0xb1,0x92,0xb5,0xc5,0x05,0x3e,0xd2,0x1a,0xfc,0xfd,0x21,0xa6,0xb2,0xbd,0x89,0xee,0x9c,0x3c,0x90,0xd9,0xf1,0xd2,0xe8,0xc3,0x21,0xb9,0x0e,0x0c,0x98,0xbc,0x5e,0xa1,0x0d,0x89,0xfe,0x0f,0x3c,0x45,0xea,0xe1,0x6e,0x06,0x59,0xff,0x79,0xf4,0x7e,0xf4,0x82,0xc0,0x6b,0xd9,0x53,0x30 +.byte 0x98,0xed,0x8d,0x6f,0x3d,0x0e,0xfb,0x42,0x66,0xab,0x41,0xa8,0x4a,0xef,0x73,0xa4,0x54,0x99,0x4f,0xb6,0x65,0x44,0xf9,0xd9,0x3c,0x6b,0x59,0x36,0xb0,0xe3,0x7c,0x4a,0x85,0x80,0x6c,0x77,0x6f,0x34,0x4e,0x9e,0x54,0xfd,0x0c,0x25,0x72,0xc3,0x5a,0xb6,0x3b,0xad,0x2b,0xd5,0x29,0x55,0x31,0xab,0x62,0xe4,0x15,0xed,0xef,0x16,0xef,0x43 +.byte 0xd5,0xdd,0x3d,0x64,0x8c,0x13,0xbc,0xcd,0x4d,0xfb,0x4f,0x86,0x3b,0x73,0x1e,0xc4,0xe8,0x54,0xb4,0xcc,0x49,0xba,0x4f,0x81,0xcd,0xe8,0x30,0x92,0x4b,0x57,0xd1,0x7c,0x0c,0x65,0x7d,0xe1,0x59,0xc6,0x8c,0x7d,0xad,0xd5,0xcf,0x6c,0xc4,0x9d,0xc5,0x3f,0x23,0x1f,0xb0,0x6d,0x1c,0x07,0xbf,0x38,0xc9,0x16,0xdc,0x5b,0x51,0xa1,0xdb,0x8f +.byte 0xf8,0x25,0xc6,0x4d,0xc0,0x4d,0xa1,0x02,0xd9,0xd3,0xb5,0x63,0xda,0xe1,0x91,0x60,0x71,0x39,0x46,0x1a,0x13,0xe0,0xf2,0xca,0xcc,0xd3,0xbb,0x6b,0xd0,0x64,0xaa,0x0e,0xc0,0x89,0xa3,0xc6,0x14,0x56,0xe4,0x44,0x97,0xa9,0xcc,0x17,0x68,0xe6,0xfc,0xe5,0xfd,0xf0,0xa6,0x69,0xcd,0xac,0x20,0xc7,0xeb,0x53,0x1b,0x4f,0xdd,0xd3,0xb0,0xed +.byte 0x30,0x4e,0x36,0x73,0x63,0xef,0x51,0x3e,0x9a,0x3e,0x41,0x2b,0x9c,0xda,0x67,0x96,0x46,0x33,0xe3,0x3f,0x87,0x01,0xd8,0xc5,0x26,0x80,0xe4,0x7e,0xf4,0x78,0x8c,0x2b,0x81,0x2a,0x01,0x7c,0xe3,0xfc,0x8d,0x6b,0xdc,0x84,0xb9,0xff,0x43,0x37,0x57,0xce,0x3f,0x5e,0x63,0xd3,0xbe,0xb6,0x4a,0x31,0xbf,0xb8,0x74,0x64,0x9c,0xf3,0xc5,0x8a +.byte 0xae,0xe8,0x5f,0x68,0xcf,0xce,0xff,0x3f,0xc5,0xb5,0xfd,0x13,0x08,0x11,0x9d,0x1a,0x0f,0x06,0x08,0x4d,0x7c,0xf9,0xd4,0x20,0xdf,0x82,0xf9,0x86,0xfc,0xf3,0x67,0xa0,0x14,0x99,0xe5,0x47,0xf0,0x02,0x7b,0x16,0xca,0xcf,0xb9,0x0f,0x68,0x08,0x5d,0x1d,0x65,0xee,0x23,0x56,0xeb,0x11,0x5b,0xca,0xf1,0xa7,0xad,0x50,0xb2,0xd1,0x37,0x65 +.byte 0xe9,0x7e,0xf6,0xe9,0x64,0x42,0x49,0x80,0x40,0x17,0xe3,0x43,0x00,0xda,0xe1,0x7a,0x1c,0xb3,0xde,0xd9,0xf7,0x33,0xeb,0xb3,0xb8,0xf5,0x40,0x1b,0xcd,0x71,0x97,0x30,0xf9,0x9c,0x4d,0xac,0x7e,0x8e,0xd9,0x36,0x92,0x39,0xb5,0x56,0x0f,0x4f,0xbf,0x58,0xb8,0xba,0xc3,0xbd,0x79,0xb0,0xd7,0x6c,0x45,0x49,0xe2,0xde,0x94,0x04,0x9d,0x3e +.byte 0x91,0x0a,0xb2,0x9b,0x90,0x57,0x2e,0x69,0xa4,0x4f,0x61,0xbf,0xdb,0xfb,0xe3,0xe9,0x81,0x26,0xe0,0x48,0x90,0x8c,0x32,0x95,0x8d,0x38,0xec,0x8e,0xa7,0x5e,0xc3,0x36,0xc6,0xd1,0xbc,0x9a,0xb3,0xba,0xdb,0x2c,0xe4,0xa0,0x50,0x74,0xef,0x98,0x48,0x14,0xc9,0x38,0x4d,0xa9,0x48,0x13,0xd4,0x08,0x60,0xfd,0xcf,0x5e,0xf2,0xcd,0xc7,0xeb +.byte 0xaf,0x88,0x32,0x30,0x6f,0x19,0x01,0xec,0x87,0xae,0x6d,0x63,0xa3,0xa7,0x7b,0xcd,0x53,0xa7,0xf2,0xf2,0x9f,0x43,0xcb,0x0a,0x3f,0x8c,0xd2,0x55,0x8d,0xa7,0x95,0xcf,0x5b,0xae,0x64,0x23,0xda,0xb4,0xbd,0x32,0x34,0x95,0x8a,0x03,0xe7,0x6e,0xef,0x3f,0xb4,0xcf,0xc6,0x8a,0x2f,0xc6,0x59,0x99,0xdf,0xad,0x3c,0x15,0xed,0x83,0x0b,0x59 +.byte 0x8b,0xcd,0x0d,0xa6,0xcf,0x3a,0xc3,0xdb,0xc3,0x01,0xa9,0x32,0x38,0x45,0x5c,0xc8,0x56,0x81,0xef,0x21,0x7f,0x52,0xc4,0xb5,0x48,0x97,0x6a,0x60,0x75,0x3a,0x1a,0xd3,0xb0,0x60,0x9a,0x83,0x61,0xad,0x3b,0x4b,0x65,0xaa,0x9e,0x77,0x47,0x6f,0x3b,0x48,0xb0,0xc6,0x36,0x9a,0x59,0x5e,0x26,0xc4,0xb9,0xed,0x04,0xf3,0xc7,0x09,0x33,0xda +.byte 0x81,0x63,0xa6,0x5d,0xe1,0x54,0x6b,0x04,0x17,0x2b,0xb9,0x2f,0xbd,0x55,0xdb,0xa1,0x69,0x00,0xcd,0xba,0xfa,0x36,0xaa,0x47,0x5a,0x7c,0xf4,0x1f,0x53,0x94,0x95,0x2f,0xf8,0x2a,0x4b,0xa8,0xcc,0x73,0xab,0xfd,0x25,0xb2,0x4e,0xd6,0x62,0x90,0x8c,0x8f,0x02,0xe4,0xdc,0x22,0x79,0x04,0x34,0x9b,0x54,0x5c,0x54,0xca,0x9b,0x8a,0xf8,0x05 +.byte 0xd1,0xb0,0x9e,0x8f,0xa3,0x0b,0x53,0xa8,0x6f,0x1b,0x2e,0xf2,0x71,0x78,0x28,0xce,0xa9,0xdb,0x4c,0x5b,0x83,0xfe,0xaa,0xff,0x99,0x2f,0x03,0x14,0xb2,0xe0,0x5f,0xaa,0x65,0x15,0x1f,0xd2,0x31,0x95,0x70,0x3c,0x8b,0x55,0x8e,0x87,0xed,0xbb,0x0c,0x91,0x87,0xaa,0xbe,0x49,0xdb,0x18,0x7b,0x1d,0x26,0xa7,0xdf,0x00,0xff,0x73,0x70,0x2e +.byte 0x10,0xaf,0x46,0xea,0x7f,0xca,0xfa,0x09,0x13,0x02,0xac,0x3f,0xa0,0x02,0xa6,0x67,0xb7,0xec,0x18,0x73,0x91,0x25,0xa0,0x28,0xe3,0xd8,0xfa,0x11,0x6d,0x34,0x79,0x1d,0xe4,0x8f,0x7c,0x73,0x66,0x77,0x3e,0x43,0x23,0xb0,0xee,0x84,0xb5,0x75,0xc9,0x23,0x87,0x6a,0x4f,0x59,0x3d,0xb5,0xf1,0xd6,0x06,0xf8,0xa6,0x5d,0x0c,0x24,0xed,0x94 +.byte 0xd7,0xa8,0x31,0x37,0x10,0x60,0xb6,0x03,0x33,0x27,0x38,0xdd,0xd3,0x74,0x02,0xa3,0xa6,0x01,0x94,0xa9,0x56,0x11,0x23,0x0e,0xdb,0xfd,0x25,0x92,0xa8,0xfb,0x79,0xc8,0x8e,0x0e,0x10,0x1f,0xca,0x95,0xf6,0xad,0x28,0xe7,0xaa,0x2b,0xf1,0x40,0xf6,0xef,0x7b,0x40,0x28,0x57,0xbb,0x4c,0xac,0x0b,0x8b,0xb3,0xe3,0xec,0x53,0xf2,0x15,0x61 +.byte 0x2e,0x91,0xdf,0x91,0xfb,0x55,0xb6,0x7f,0x6c,0xfc,0xb7,0x4b,0x91,0xdc,0xf7,0xe5,0x91,0xd8,0x70,0x92,0x94,0xea,0x3f,0x62,0x98,0x14,0xc3,0x43,0x34,0x02,0x87,0xc7,0xca,0x60,0x4a,0xfb,0x50,0xe4,0xa9,0x92,0x10,0x04,0x7c,0x55,0xd3,0x9a,0x89,0xba,0x8e,0x6f,0x02,0xd6,0xc7,0x6f,0x91,0xb5,0x87,0xb9,0x0e,0xbe,0xe4,0x9f,0x01,0x0b +.byte 0x20,0x60,0xc8,0x16,0xe6,0x23,0x1d,0x5f,0x4d,0x82,0xf4,0x42,0x25,0xe6,0x05,0xe3,0x5b,0xbb,0xd1,0xb0,0xad,0x0b,0x05,0x71,0x3a,0x7b,0xee,0x0e,0xe1,0xe4,0x08,0x9f,0xda,0xdf,0x59,0x57,0x4f,0x05,0x5a,0x51,0x9a,0x60,0xfd,0x85,0x21,0xd1,0x0a,0x3b,0x0a,0x15,0x61,0x28,0x98,0x0a,0x8f,0x1e,0x33,0x15,0xb3,0x5f,0xf3,0xbb,0x89,0x22 +.byte 0x0c,0xaf,0x91,0xce,0x44,0xb1,0x54,0xd0,0x80,0x86,0x43,0xa1,0xb9,0x07,0xde,0xab,0x1f,0x9b,0xae,0xef,0x07,0xf2,0x40,0x33,0x31,0x4d,0xf9,0x45,0x97,0xf6,0xcc,0xe5,0x3c,0x49,0xcd,0x83,0x6e,0x38,0x81,0xab,0x40,0x18,0xda,0xf6,0xfe,0xe7,0x96,0xd1,0x17,0x98,0xae,0xec,0xe9,0x93,0x37,0xbc,0x0b,0xa8,0x12,0xe7,0x65,0xca,0x27,0x37 +.byte 0x6a,0x74,0x81,0xf1,0xe0,0x6c,0x0d,0xba,0x86,0x48,0x94,0xd0,0x72,0xd5,0x4d,0x71,0xcf,0xa8,0x5e,0xd1,0x97,0xd1,0xed,0xf0,0xd3,0xe4,0xe3,0x41,0xc9,0x8f,0xfc,0x89,0xe8,0xbf,0x96,0x8b,0x86,0xb0,0x97,0x79,0x95,0xdf,0x69,0x56,0x6d,0x61,0x0a,0x37,0xcb,0x36,0xe1,0x95,0x88,0xf5,0xf0,0xe2,0x5c,0xb2,0x44,0x73,0xda,0x83,0xa7,0xdc +.byte 0x8b,0x35,0x3e,0xc1,0xd5,0x88,0x17,0x3b,0xeb,0xcf,0x36,0x9c,0xef,0x40,0xb2,0x72,0xde,0x4f,0x16,0x6c,0x8c,0x9d,0x15,0xce,0x7d,0x0d,0xc3,0x2f,0xea,0xab,0x50,0xdf,0x02,0xe0,0x24,0xcc,0xf4,0xa7,0x25,0xba,0x85,0x0d,0x62,0x9a,0x39,0xc7,0x5a,0xd1,0x9a,0xd1,0xa7,0x45,0x5f,0xc2,0x44,0xf5,0xa9,0x8d,0xd8,0xbc,0xd3,0xc8,0x75,0x0d +.byte 0x06,0xc6,0x4b,0x24,0xc6,0xe5,0x72,0xf7,0xd5,0x87,0xca,0x3c,0xc0,0x1c,0x18,0xa9,0x40,0xc6,0x7b,0xe5,0x4c,0xe6,0xb7,0x01,0x57,0xc1,0xcf,0x63,0x83,0x58,0x63,0x47,0xcf,0xa4,0xd3,0xf6,0x1d,0x2c,0xbf,0x17,0xe6,0x0a,0x7b,0x2d,0xa9,0x34,0x23,0xfc,0x1f,0x06,0x31,0x47,0x7b,0x31,0x34,0x8c,0x3c,0x15,0x9b,0xac,0xfd,0x38,0xe6,0xa3 +.byte 0x9e,0xa7,0xdf,0xa6,0x37,0x61,0xfd,0x85,0xb8,0x2e,0x67,0x73,0x7f,0x60,0x12,0x8b,0x62,0xb0,0x38,0xd0,0xaa,0xc4,0xad,0x3b,0xa9,0x04,0x66,0xdd,0xbb,0x9c,0xb1,0x95,0xe1,0x9c,0x0a,0x72,0x80,0x12,0xaa,0xa8,0x0c,0x3f,0x90,0x20,0x33,0xb4,0x76,0xdd,0x26,0xfe,0x1e,0x8f,0x6a,0x2d,0xea,0x4a,0xdc,0x28,0x47,0x66,0x36,0x5b,0x50,0x60 +.byte 0x7e,0x3e,0x93,0xf3,0xe9,0x37,0x31,0x3b,0x43,0x46,0x85,0xb3,0xa9,0xb2,0x14,0x95,0x96,0x49,0xf9,0x2a,0xe7,0x9e,0x3a,0x3e,0xd8,0x12,0xf7,0xbc,0x43,0x8c,0x35,0x31,0x44,0x08,0x7f,0x25,0x39,0x86,0x98,0x6a,0xe8,0xe3,0x2e,0x73,0x2d,0x3b,0xac,0x2d,0x75,0x4c,0xc8,0xca,0x21,0x2d,0x96,0x9b,0x4f,0x56,0xff,0x2d,0xc2,0xe2,0x98,0x3d +.byte 0xe2,0x3f,0xee,0x10,0xb7,0xc3,0x3d,0xa8,0x50,0x88,0x7f,0xd5,0x4e,0xbd,0xc7,0x9d,0xdc,0x01,0x49,0x27,0xf2,0xae,0xea,0x93,0x72,0xdf,0x00,0xcd,0xe6,0xa1,0xdd,0xd1,0x18,0xeb,0xa7,0xe1,0x4a,0x7b,0x38,0x72,0x73,0x29,0x46,0xa3,0xb3,0x25,0x23,0x6d,0x26,0xab,0x86,0xdc,0x67,0x52,0xe5,0x4a,0x5e,0x8f,0x16,0x67,0x8a,0x28,0x13,0xba +.byte 0x44,0x42,0xb5,0x21,0x9f,0x30,0x66,0x7f,0xc9,0x87,0x40,0xcb,0x75,0x58,0x2e,0xcd,0x09,0xb9,0x8a,0x84,0xa3,0xbd,0x63,0x53,0x75,0x2f,0x77,0x8b,0x7e,0x19,0x31,0x33,0x3b,0x9a,0xfb,0x86,0x39,0xa6,0xd9,0xeb,0x9b,0x43,0xc6,0xd9,0xc2,0x10,0xab,0x42,0xe5,0xc6,0x4a,0xe6,0x3e,0xde,0x9d,0xac,0x8e,0x95,0xf0,0xdb,0x48,0x95,0xc2,0x87 +.byte 0x6b,0x7f,0xde,0x09,0xdb,0xed,0x49,0x19,0x73,0x2d,0xa4,0x5c,0xdf,0xfa,0x2e,0x15,0xd0,0xb6,0x46,0x32,0xc9,0x7f,0x7e,0x01,0xd3,0x25,0x45,0x0e,0x5b,0x0d,0xf0,0x67,0xe3,0xd9,0xdf,0x4f,0x3b,0x6f,0xb3,0x15,0xc5,0x6b,0x91,0x75,0xa2,0xaf,0x42,0x3a,0x14,0x50,0xd9,0x4f,0x19,0x65,0x12,0x83,0x5d,0x8f,0x8a,0x01,0x0b,0x89,0xcc,0x7f +.byte 0x1a,0xde,0x5b,0x44,0x34,0x98,0x0f,0x8e,0x5a,0x5e,0x03,0x41,0x3e,0x66,0x9b,0x16,0xf5,0x91,0x7c,0xb0,0xc1,0xbf,0xa2,0x10,0x0b,0x60,0x3a,0x63,0x0c,0xcf,0xd8,0x49,0xdb,0x42,0x88,0x1f,0x36,0x8e,0x15,0xdb,0x5d,0x3f,0xe7,0xf1,0x9a,0x73,0x2b,0x74,0x0c,0xd5,0x09,0xab,0x01,0x2e,0x52,0x6f,0x03,0xf6,0xc9,0x0b,0xeb,0xa5,0xce,0x2e +.byte 0x1c,0x02,0x35,0xca,0xce,0xfe,0x4b,0xad,0x67,0x21,0xf8,0x44,0xea,0x70,0xf2,0x3d,0xfc,0x43,0x77,0x05,0x26,0xbe,0xaf,0x99,0xab,0x41,0xd4,0xcc,0x53,0x33,0x33,0xcd,0xb4,0x2d,0x76,0xfb,0xae,0x0c,0xac,0xc1,0xd0,0x42,0xfb,0x45,0x4a,0x6e,0x55,0xd2,0x93,0xef,0xb9,0x06,0xbc,0x38,0xce,0x94,0xc2,0x01,0xdf,0x27,0xc8,0x47,0xff,0x74 +.byte 0xfb,0x84,0xc5,0xa2,0x78,0x1f,0x4f,0x73,0x12,0xec,0x2d,0x82,0x5b,0xeb,0x3c,0xb6,0x1c,0x5a,0x29,0x9c,0xba,0x9e,0xa4,0x85,0x94,0x84,0x68,0x01,0xd7,0xb1,0x27,0x84,0x4a,0x7d,0x62,0x9c,0x32,0x12,0x89,0xd8,0x66,0xb5,0xe9,0x07,0xf4,0x5f,0x6b,0x0e,0x90,0x87,0xe5,0xc1,0x8b,0xaf,0x8f,0xf7,0xca,0x54,0xe0,0xc6,0x5f,0xa5,0xec,0xd1 +.byte 0xdc,0xdc,0x17,0x9e,0xca,0x4b,0x72,0x72,0x03,0x96,0x62,0xaa,0xc1,0xfe,0x23,0x7e,0xd2,0x06,0x61,0xb6,0xc9,0x0d,0x7e,0xbf,0x72,0x1c,0x66,0x46,0x0b,0x31,0x96,0x81,0x11,0x3d,0xac,0x5e,0xd0,0x35,0xaf,0xac,0x4c,0x74,0xce,0xf9,0x9c,0x64,0x3d,0xe5,0x9d,0xfe,0xc7,0x05,0x09,0xe1,0x70,0xc5,0x37,0xd5,0x4e,0xd8,0x7d,0xdb,0xfa,0x1c +.byte 0x28,0xfc,0x10,0x2a,0xe8,0x62,0x18,0x09,0x97,0xe0,0x98,0x2e,0x9f,0x1d,0x18,0xff,0x22,0xe9,0x5d,0x37,0xd2,0x74,0xf1,0x81,0x08,0x8a,0x55,0xc0,0x40,0x0f,0x70,0xbe,0x82,0x23,0x78,0x35,0xc8,0xf8,0x59,0x6e,0x0d,0x2e,0xd5,0xe7,0xf5,0x2e,0xbd,0xcd,0x1a,0xcf,0x76,0x43,0x1f,0xca,0x15,0x6c,0x4a,0xb7,0xc7,0xb9,0xaf,0x68,0xd7,0x31 +.byte 0x1e,0x0c,0x9c,0x78,0x74,0x66,0x80,0xc6,0x74,0xbe,0x86,0x59,0x0c,0x12,0xdc,0xf3,0x1b,0xaf,0x63,0x74,0xce,0x1e,0xac,0xf0,0x65,0xa0,0xab,0x7f,0x96,0x08,0x32,0xb2,0xca,0x9c,0xfb,0x9d,0x66,0x63,0x76,0xf9,0x69,0x08,0x6e,0xd3,0x46,0xde,0xdf,0x54,0x06,0x0d,0x25,0x81,0xd9,0x5a,0x45,0xeb,0xe5,0xc0,0xf6,0x86,0x0f,0xe9,0x27,0x7c +.byte 0xdc,0x52,0x28,0xb5,0xd0,0x7d,0x07,0xc1,0xb6,0x9b,0xdc,0xea,0xd3,0x2a,0xba,0xb0,0xd5,0xa3,0xd8,0x25,0x07,0x9c,0x6c,0xd6,0x16,0xa5,0x93,0x43,0x52,0xa7,0x5c,0x2b,0xe2,0xfa,0x8e,0x6e,0xaa,0x04,0x84,0x63,0x80,0x0f,0x90,0x10,0x41,0x1c,0xf6,0x67,0xea,0x39,0xb0,0x16,0xfc,0x6f,0x85,0x28,0x8c,0x8e,0xfb,0x79,0x39,0xdf,0xf6,0x6e +.byte 0x57,0xa1,0xaa,0xf1,0x0b,0x99,0xde,0xad,0x69,0xe2,0xf4,0x74,0x8e,0x8c,0x2d,0x20,0xdb,0xf3,0x2d,0xc2,0x75,0xe7,0xd6,0xc8,0x9d,0x46,0x3b,0x8b,0x8b,0x18,0xd8,0x41,0xfd,0xc2,0x7d,0xec,0x66,0x78,0xe7,0xbe,0xee,0x2b,0x07,0xd8,0x7e,0x13,0x61,0x7e,0xab,0x7d,0x2b,0x3f,0x83,0x96,0xf5,0xab,0x0b,0x20,0xd2,0x5b,0xb0,0xeb,0xf7,0x1b +.byte 0xac,0x1a,0x16,0x46,0x21,0x90,0xdb,0x67,0x66,0x42,0xe2,0x54,0x34,0xae,0x34,0xae,0x21,0x33,0x8c,0x48,0x19,0xdb,0x1f,0xa8,0x25,0x76,0xe0,0x03,0x1c,0x35,0x8d,0xd3,0xab,0x6b,0x93,0xf3,0xad,0x7d,0x3c,0x76,0x1d,0xaa,0x43,0x80,0x0f,0x5f,0x20,0xd9,0xf0,0xff,0x8b,0xf4,0xdb,0xbc,0xf2,0xff,0xf2,0x8a,0xfc,0xf5,0x0e,0x4e,0xd9,0xb0 +.byte 0xd6,0xb3,0x86,0x5b,0x3e,0x10,0x87,0x50,0xf1,0xd2,0x8f,0x8d,0xa4,0x39,0x85,0xf5,0x90,0xd6,0x53,0x69,0x40,0x42,0xc1,0xc3,0x7c,0xc1,0x3e,0x97,0xb4,0x08,0x49,0x93,0x4e,0x4c,0x67,0xd9,0x2e,0x05,0x70,0x04,0x98,0x0a,0xed,0xd0,0xff,0x0c,0x13,0xe4,0xde,0x75,0x81,0x24,0xb1,0x27,0x79,0xeb,0x80,0x68,0x52,0x50,0x66,0x77,0x4f,0xf6 +.byte 0x64,0x2f,0x85,0x9e,0xc1,0xbf,0x9f,0x0e,0x31,0x9a,0x36,0x24,0xcd,0xa8,0xe8,0xce,0x41,0x86,0xd1,0x02,0x96,0xdc,0x1a,0xa0,0x48,0xca,0x61,0xd5,0x87,0xdb,0x0a,0xeb,0x69,0x95,0xca,0xf8,0xe5,0xa0,0x5b,0x91,0x8f,0xb9,0x59,0x5f,0x68,0x60,0x58,0xc5,0xe0,0xc7,0x02,0x68,0xa5,0x67,0x1e,0xfc,0xa9,0x27,0x9f,0x83,0x4c,0x05,0x60,0xee +.byte 0xcb,0x79,0x31,0x73,0x36,0xf4,0x39,0x44,0xdb,0xea,0x62,0x89,0x97,0x69,0xd1,0x0d,0xf6,0x27,0xcf,0x47,0xfe,0x3d,0x5c,0xe9,0x92,0x54,0x0a,0x66,0xaf,0x82,0xb1,0x49,0x87,0x3f,0xa2,0x95,0x91,0x0e,0x72,0x1e,0x7b,0xde,0x32,0x31,0x51,0x40,0x24,0x4f,0x30,0x59,0x7d,0x97,0x28,0x30,0x7e,0x93,0xcd,0x1e,0x16,0xef,0xe1,0xb5,0xa8,0xff +.byte 0x3a,0xd0,0x62,0x94,0x8b,0x72,0xe7,0x97,0x8f,0x2f,0x58,0x3e,0x62,0x43,0x6b,0x28,0x05,0xc9,0x0d,0xf0,0x09,0xbd,0x12,0x3b,0xd8,0x15,0xd3,0x7c,0x97,0x96,0x5a,0xf4,0x9f,0x8d,0x25,0xb7,0xc5,0x66,0xf7,0xf7,0x5f,0x7e,0xca,0x2f,0xcd,0x9a,0xf2,0xa3,0x9b,0x4f,0x6f,0xc3,0xd9,0x64,0x38,0xda,0x87,0x97,0x8a,0x49,0x2d,0x80,0x16,0x73 +.byte 0x88,0x62,0xd2,0xdf,0x4f,0xf7,0x79,0xc0,0x83,0xeb,0x2b,0x66,0x5a,0x21,0x3a,0xa2,0x2a,0xed,0x8c,0xe7,0x91,0x6d,0x56,0x18,0xfc,0x59,0x68,0xea,0x9f,0x5c,0x3c,0xd5,0x0f,0x64,0x70,0x89,0x22,0x83,0xed,0xfa,0xc9,0x21,0x68,0x3c,0x69,0xb8,0x3e,0x89,0xb5,0x9d,0x8b,0xc8,0xf7,0x57,0x17,0x27,0x90,0x12,0xa7,0xd2,0x4d,0x2c,0x30,0x64 +.byte 0x42,0xbe,0xa6,0x49,0x4e,0xa3,0x3b,0xdb,0xdb,0x64,0x0e,0x89,0x66,0x87,0x72,0x90,0x86,0x1d,0x0b,0x61,0x32,0x47,0x3d,0x55,0x81,0xb2,0x50,0x5a,0x76,0x6c,0xa3,0x46,0x12,0x1b,0xaf,0x6e,0xbf,0xfd,0x98,0x2f,0xb7,0xd2,0x31,0x92,0xb5,0x26,0x1a,0x3d,0xfa,0x5d,0xc0,0x24,0x44,0xd2,0x6b,0x1c,0x81,0xf5,0x5d,0x50,0xb0,0x33,0x18,0xe0 +.byte 0xc5,0xb3,0x6b,0xf4,0xfd,0xde,0xf7,0x2f,0x69,0x1d,0x5a,0xfe,0x03,0x6d,0xca,0xad,0x29,0xe0,0x6e,0x70,0xcd,0xe3,0x6d,0x38,0xef,0xf1,0x3a,0x76,0x2b,0x2c,0xb6,0xcd,0xff,0xeb,0xbc,0xe7,0xd9,0x40,0xbe,0x23,0x61,0x20,0xd5,0xb8,0x66,0x77,0x65,0xc9,0x33,0xf5,0x75,0x8e,0x15,0x98,0x3f,0xb1,0x4a,0xb8,0x1c,0x47,0x73,0x45,0x0f,0x73 +.byte 0x2a,0xa1,0xb7,0x73,0x76,0x94,0x16,0x45,0xcf,0xd6,0x8f,0xe3,0x62,0x8a,0x42,0xfd,0xe3,0x1e,0xe0,0x7d,0xb5,0x99,0xbd,0x1c,0xf2,0x60,0xb2,0x72,0xa8,0x4b,0x19,0xd6,0xd0,0xdb,0x0b,0x1f,0xc9,0x68,0xc0,0xf3,0x65,0x04,0x50,0x41,0xf0,0xb3,0x0e,0x0a,0x9d,0x7f,0x0b,0x1f,0xeb,0x5b,0x4c,0x58,0x6a,0xf2,0x02,0x95,0xd2,0xf3,0xac,0xe5 +.byte 0x69,0x81,0xb1,0x3f,0x08,0xfc,0xba,0xcb,0x36,0xcd,0x54,0x28,0xac,0x65,0xd8,0x81,0xab,0xc1,0x6a,0x51,0x97,0x21,0xe4,0xc6,0xaf,0xd8,0x76,0x76,0xa4,0xc4,0xd0,0x58,0x63,0xdf,0x32,0xf5,0x04,0xfb,0x11,0xeb,0x76,0x39,0xda,0x55,0xf4,0x7e,0x1c,0x7b,0x04,0x07,0x4d,0x5a,0xeb,0x74,0x0a,0x57,0xcf,0x10,0xf6,0x0e,0x73,0x02,0x25,0x67 +.byte 0x4f,0x8f,0x37,0x75,0x8f,0x44,0x2a,0x1a,0x6d,0x05,0xda,0xe0,0xa0,0xaa,0xd2,0x78,0xaa,0x7e,0x76,0x0a,0xde,0x2a,0x54,0xae,0x1e,0x39,0xcc,0x3c,0x1c,0xa6,0xd5,0x8a,0xca,0xb4,0xcc,0x76,0xb9,0x30,0xd2,0xe2,0x46,0x31,0xb6,0x51,0xcf,0xe2,0x24,0x77,0xc9,0x9b,0x57,0x3c,0xa3,0x84,0x60,0x59,0x28,0x5f,0x23,0x74,0x17,0x79,0x42,0xbe +.byte 0x60,0x3f,0x09,0x6a,0x43,0x8e,0x40,0x25,0x79,0xb5,0xbb,0xbb,0x72,0x50,0xad,0x4f,0xaa,0xa2,0xd4,0xb2,0xc6,0x7d,0x50,0x7b,0x98,0x59,0x22,0x06,0x7d,0x2c,0x35,0xdd,0x44,0x34,0x9c,0x28,0x98,0xf3,0xe5,0xd0,0x7e,0x09,0xbe,0xc4,0x00,0x72,0xd5,0xa6,0x3b,0x0e,0xb1,0x18,0x91,0x0a,0x4d,0x5d,0xe2,0x0a,0x98,0x79,0x30,0x9b,0xaa,0x38 +.byte 0x03,0x2b,0x6c,0xb2,0x8e,0x0a,0x1d,0x30,0x59,0x8a,0xe8,0x6c,0x6d,0xb5,0xd4,0x91,0xc5,0x28,0x1d,0x5e,0x49,0xe0,0xfc,0x26,0x7f,0x40,0xc0,0x6a,0x81,0x0d,0xb9,0xc6,0x05,0xc6,0x18,0x82,0x70,0xf6,0xea,0x0e,0xb4,0x85,0xba,0x5d,0xfa,0xfd,0xe3,0xd6,0x08,0x7c,0x3d,0x99,0x03,0xd4,0xdc,0x9b,0x50,0x12,0xc8,0xbd,0x8c,0x47,0x67,0x28 +.byte 0x83,0x97,0xca,0xef,0xc3,0x1c,0x2b,0x6e,0x3b,0xf7,0xca,0x7a,0x68,0x6e,0x39,0x25,0x58,0xf7,0xa4,0x11,0x9d,0x8d,0x49,0x29,0xd6,0x6e,0x0b,0x0a,0xcf,0xa7,0x04,0x14,0x6f,0xc4,0x4c,0x36,0x1a,0x16,0x3e,0x8f,0x99,0x69,0x94,0x1d,0xa8,0x66,0x93,0xeb,0x1d,0x82,0xfd,0x3f,0x84,0xb0,0x9d,0xa4,0xe1,0xb0,0xd4,0x9d,0xb2,0x60,0x20,0xfb +.byte 0xd3,0xa0,0xdc,0x79,0x83,0xb0,0xfc,0x50,0x18,0x57,0xe1,0xeb,0x44,0x25,0x05,0xab,0x27,0xfb,0x5f,0x83,0xcd,0x51,0xd0,0x3b,0x80,0x4a,0xce,0xbf,0xe9,0xfe,0x46,0xd2,0x5f,0xea,0x8c,0x89,0x48,0xc8,0x65,0xdd,0x2a,0xa4,0xda,0x54,0xc2,0x37,0x7e,0xd7,0xff,0x80,0x5b,0xf0,0xc3,0x40,0x44,0x40,0x72,0x63,0x23,0xc6,0x9a,0x48,0xf3,0x4b +.byte 0x91,0x64,0x26,0xfc,0xf3,0xa0,0xb9,0x06,0x0c,0x88,0xbb,0xc0,0x93,0x73,0x63,0xf6,0x9c,0x0d,0xe2,0xf6,0xee,0xe0,0x51,0xfd,0xae,0x4d,0x21,0xb9,0x6b,0x7d,0x1e,0x34,0xa0,0x4d,0xe4,0x25,0x30,0xe6,0x81,0x2e,0x32,0xef,0xb9,0x9e,0xaf,0xa0,0x22,0xe0,0x67,0xe6,0x07,0x55,0x3a,0xed,0xef,0x4f,0x87,0x2f,0x44,0xd2,0xef,0xc1,0xfb,0xc4 +.byte 0x7b,0x27,0x20,0x44,0xd2,0xd6,0xf9,0xf3,0x67,0xc1,0xbf,0xaa,0xd5,0x9c,0xd9,0x2c,0xd5,0xf1,0x42,0x2d,0xec,0x39,0xb5,0xc1,0x18,0xed,0x6c,0x47,0x80,0xf8,0x6f,0x66,0x10,0xee,0x1d,0xd6,0x79,0x01,0x4e,0x2a,0xd0,0x83,0xa7,0x9d,0x1d,0x81,0xce,0xf5,0x6f,0x26,0x86,0xd2,0xd7,0x56,0x15,0x65,0x48,0x4c,0xf1,0xf9,0x21,0x77,0xd1,0x84 +.byte 0x22,0xce,0x4d,0x8d,0x83,0xda,0x8c,0x50,0x56,0xc8,0x3b,0xc5,0xb6,0xcf,0x3e,0x0d,0x50,0xe5,0x9d,0x6c,0xb5,0x2a,0x5a,0x58,0x28,0xf5,0x0a,0x05,0xf3,0x0e,0x40,0x8e,0xb6,0xb4,0xdf,0x11,0x1b,0x34,0x81,0xc5,0x0e,0x09,0xa6,0xfc,0x46,0x14,0x02,0x78,0x94,0xbb,0x63,0x9d,0x3e,0x25,0x2c,0xc8,0x1b,0x5c,0xef,0x64,0x77,0x0c,0x04,0x40 +.byte 0xe1,0x45,0x85,0xf8,0x07,0xbf,0x14,0x65,0xe9,0xfc,0xba,0xe4,0x9c,0xa7,0x91,0x56,0x2a,0x3a,0x8e,0x33,0xae,0x56,0x04,0x9d,0x35,0xbc,0xad,0x64,0x0e,0x99,0x8e,0xb5,0x84,0x72,0xcf,0xcc,0x81,0x14,0x11,0x9e,0xe6,0xac,0x0d,0x41,0x43,0x4e,0x2a,0x0d,0xda,0x98,0x42,0xfa,0x8c,0x21,0x79,0x93,0xa3,0xdf,0x84,0x88,0x76,0x14,0x5b,0xb9 +.byte 0xff,0xe1,0xab,0x94,0xc3,0xcd,0x10,0x69,0xee,0x53,0xea,0xfe,0xfb,0xaa,0x43,0x8f,0xdd,0x55,0x88,0x34,0x5d,0x55,0x0f,0x42,0x4d,0x1d,0x93,0xce,0x96,0x67,0xf8,0x33,0xc7,0xca,0x34,0x11,0x28,0xb2,0xed,0x0f,0x00,0x40,0x84,0xee,0x51,0x26,0x6e,0x7b,0x2d,0x77,0xeb,0x18,0xb8,0x9a,0xad,0x28,0xb6,0x6c,0x5e,0xde,0x10,0x4c,0x29,0x1d +.byte 0x79,0x3c,0x2e,0x1c,0xf0,0xc8,0xb3,0xee,0x19,0x7a,0x10,0xe1,0xe3,0x05,0x1e,0x63,0xe9,0x00,0xd7,0xfe,0x83,0xe7,0x54,0xff,0x65,0x9a,0x27,0xa3,0x86,0x72,0x5c,0xb6,0xef,0xf5,0x84,0x68,0x1e,0xae,0xe6,0xf8,0x66,0x9c,0x1b,0x86,0xab,0xfa,0x1a,0xe3,0xb8,0x97,0x16,0xb1,0xb7,0x42,0xfa,0x85,0xa3,0x3a,0x0d,0x21,0xd2,0x35,0xb1,0x89 +.byte 0xf0,0x4f,0x1a,0x1d,0x45,0x34,0x2f,0x31,0x12,0x8c,0x19,0xe7,0x4b,0x14,0xa7,0xcf,0x0f,0xf9,0xcd,0x77,0x40,0xbe,0x09,0xeb,0xc3,0x3e,0x4a,0x37,0x55,0xab,0xbb,0x9c,0xe5,0x22,0x56,0x8a,0x66,0xfa,0xb1,0xff,0x73,0x29,0x52,0xb1,0x89,0xf7,0xab,0xa6,0x58,0x53,0x97,0xfd,0x44,0xda,0xbd,0x0b,0x1f,0xc8,0x88,0x01,0xcc,0x5e,0xf7,0x05 +.byte 0xbd,0xf7,0x0a,0x4d,0xcb,0xef,0xbf,0xd9,0x8e,0x15,0xc3,0x40,0xb9,0xc9,0x14,0xe5,0x05,0x3c,0x20,0x67,0xfe,0xdc,0xa6,0xb8,0x92,0xbd,0xf5,0x33,0xb5,0x77,0x11,0x28,0x47,0x21,0x28,0x18,0x61,0xf8,0x1c,0xdb,0x65,0xad,0x89,0x0d,0x98,0x79,0xca,0x2b,0xa3,0x4f,0x16,0xa6,0xb3,0xb9,0xcc,0x47,0x5b,0x13,0x96,0x2e,0x39,0x78,0x24,0xc5 +.byte 0xf9,0xf5,0xae,0xdc,0x34,0x3c,0xf7,0x48,0x0d,0x75,0xaf,0x51,0x75,0x48,0xbe,0x4d,0x73,0x89,0x5a,0xfc,0xd7,0x51,0xd3,0x93,0xa8,0xbc,0xc3,0xa6,0x6b,0x63,0xc1,0xc3,0x7b,0x48,0xf1,0x57,0xe4,0xb4,0xce,0x5f,0x18,0xae,0xdc,0x61,0x99,0xaa,0x7e,0x49,0xd6,0xb5,0x2c,0x62,0xb8,0x8c,0x4a,0x94,0xc1,0xc2,0x13,0x23,0xdc,0x7c,0x48,0xc2 +.byte 0xaa,0xc4,0xd9,0xc0,0x09,0x11,0x6e,0x35,0x07,0x14,0x77,0x7e,0xeb,0x87,0x00,0x05,0x30,0xec,0xb2,0xc6,0xde,0x6e,0x42,0x0b,0x2a,0xb6,0xca,0xb1,0xdc,0x69,0x57,0x1b,0xad,0x52,0xa8,0x22,0x1e,0xb5,0x2b,0xb5,0x8e,0x39,0x4b,0xbf,0x38,0xf4,0xb2,0xf5,0xa1,0x9c,0x7b,0x7f,0x6c,0x14,0x48,0x37,0xa9,0xf9,0xcd,0x85,0x50,0x53,0xb0,0xc1 +.byte 0x15,0x28,0x19,0x3b,0xb1,0x04,0x44,0x93,0x7a,0x16,0x76,0x69,0xa1,0x5c,0x67,0xcc,0x8d,0x02,0x56,0xcd,0xd9,0x91,0x49,0x8c,0x1b,0xc9,0x89,0x98,0x09,0x2e,0x5b,0xf8,0x7c,0xe6,0x0f,0x46,0xb0,0xcc,0xe5,0x75,0x63,0xaf,0x40,0xd5,0xa3,0x45,0x4a,0x76,0x67,0x1d,0x81,0xc2,0x25,0x85,0x7f,0x52,0xc5,0xf8,0x6d,0xd9,0xb6,0xa8,0xa4,0x96 +.byte 0x63,0xcc,0x15,0xc5,0xec,0x40,0x0e,0x08,0xf7,0x6f,0x85,0xa5,0xe7,0x2e,0xbe,0x3f,0xf4,0xc8,0x74,0xc7,0xed,0x86,0x85,0xc0,0x44,0x9e,0x80,0xc8,0x89,0xdc,0x16,0x47,0xb1,0x68,0x0e,0x65,0x66,0x0f,0xbc,0x33,0xb1,0x78,0x1e,0x5e,0xd7,0xde,0x97,0x96,0xb8,0x74,0x5c,0x90,0x7a,0xed,0x36,0xf4,0x10,0x91,0x5a,0x42,0x92,0x81,0x11,0x73 +.byte 0x3e,0xf1,0x5e,0xfb,0xc2,0x38,0xe6,0xe5,0x41,0xce,0x96,0xed,0x44,0x14,0x9c,0xc0,0x1f,0x83,0x5f,0xdd,0x50,0x87,0x90,0x86,0x50,0x61,0x87,0x99,0x7c,0x64,0x2d,0x50,0x17,0xa3,0xb0,0x7e,0x69,0xd3,0x86,0xb4,0x7c,0xe7,0x15,0x34,0x9e,0x3b,0x17,0xc0,0x2d,0x08,0x60,0x8b,0xae,0xec,0xa2,0xf6,0xf1,0xa4,0xbc,0x7b,0xc2,0x75,0x91,0x13 +.byte 0xf6,0xd0,0x71,0xf0,0x3c,0x9c,0x51,0xb3,0x33,0x53,0x57,0x47,0x8b,0x47,0xb0,0x0b,0x95,0x9a,0x39,0x70,0x63,0x91,0xcc,0xd8,0xd0,0x23,0x32,0xc0,0xb6,0x0f,0x91,0x30,0x29,0x45,0xf1,0xfc,0xa1,0x83,0x10,0x9a,0xa4,0x05,0x05,0x9f,0x33,0xbd,0xaf,0x16,0x3e,0x53,0x39,0xb1,0x4b,0x76,0x55,0x3e,0x6f,0x47,0x23,0x59,0x4c,0xbb,0x82,0x31 +.byte 0x19,0xe2,0xb1,0x49,0x20,0x91,0x2d,0xb0,0xfe,0xa6,0xae,0x7f,0x6e,0xd1,0x5b,0xb9,0x84,0x18,0x0f,0x68,0xc6,0x56,0x8a,0x22,0x81,0x3f,0x38,0x42,0x7a,0x31,0xa1,0xc1,0xf7,0x10,0x6a,0xc3,0xb1,0xaf,0x19,0xad,0x06,0x3a,0x53,0x9d,0x44,0x9f,0xe7,0x25,0xac,0x59,0x06,0xb9,0xd2,0xf6,0xce,0xb6,0x1e,0x4d,0x65,0x2e,0x05,0xb4,0x14,0x91 +.byte 0xfb,0x5b,0x26,0xd0,0xee,0xfa,0x45,0x5b,0x0c,0xd5,0x5c,0x1f,0x0c,0xe0,0xf6,0x50,0x78,0x77,0x7e,0x83,0x04,0xec,0x3b,0x53,0x28,0x97,0x56,0x61,0xeb,0xa0,0x78,0xe5,0xc0,0xb2,0x3c,0xcd,0x6f,0x4b,0xda,0x11,0x00,0x93,0x49,0x9f,0x03,0x22,0x39,0x3a,0xc8,0xef,0x01,0x91,0x12,0x36,0x15,0x0c,0x47,0xd5,0x8b,0x77,0x5e,0x5f,0x91,0x4b +.byte 0x44,0x98,0xa0,0xa0,0x46,0x0f,0x17,0xef,0xf9,0x52,0x0b,0x92,0xc1,0xe0,0xfc,0x63,0x9b,0x6d,0xe2,0xde,0x88,0x89,0x32,0x89,0x93,0x44,0x6d,0x69,0xe7,0x26,0xfd,0x77,0xc0,0x18,0x58,0xdb,0x74,0xec,0x04,0x0c,0x60,0x51,0x74,0xca,0x49,0x3e,0x4f,0x5f,0xaa,0x53,0xf2,0xc1,0xcb,0x89,0x1f,0x69,0xaa,0xbb,0x97,0x17,0x04,0x49,0x5e,0x44 +.byte 0xf3,0xf3,0xc4,0x98,0x9d,0x49,0x1e,0xb0,0x27,0x7d,0xff,0x54,0xa5,0xed,0xbe,0xb0,0x52,0xf6,0x00,0x87,0x67,0x2d,0x28,0xdb,0x09,0x4e,0xa2,0xee,0x4f,0x81,0xeb,0xa1,0xca,0x2b,0x07,0x2f,0x54,0x6d,0x5a,0x2e,0x13,0xa4,0xd0,0xac,0x21,0x7c,0x44,0xc0,0x98,0xac,0xe4,0x6e,0x94,0xd1,0x5b,0x5e,0xd6,0xf1,0x3c,0x45,0x88,0xe1,0xbd,0x58 +.byte 0xf1,0xc7,0xba,0x36,0x2c,0x15,0xb9,0xf4,0xa3,0xea,0x73,0xb4,0x91,0x53,0xd8,0x18,0x86,0x23,0x87,0x0b,0x7a,0x4a,0x2d,0x2d,0x3d,0x73,0xcb,0x05,0x11,0x4c,0x19,0x26,0xf2,0x05,0x89,0xc8,0x29,0x26,0xa7,0xe4,0xcb,0x43,0xd0,0xf6,0xbc,0x76,0xbd,0x9a,0x17,0x4a,0xf1,0x39,0xe3,0xde,0x05,0x10,0x8a,0xd3,0x11,0x53,0x61,0xef,0x33,0xd9 +.byte 0x65,0x0d,0x99,0x0b,0x39,0xa4,0x1b,0x4f,0x0b,0xa5,0xf1,0x37,0xa3,0x4f,0x54,0xa7,0x29,0xc1,0xae,0x88,0x5c,0x13,0x2f,0xb2,0xbf,0xcf,0x1b,0x0d,0xa0,0x68,0x21,0xe2,0x20,0x3f,0x02,0x9f,0x08,0x39,0xc6,0x20,0x2d,0x08,0x01,0x5d,0xf1,0x47,0xde,0x88,0xad,0x49,0x09,0xf7,0x1a,0x0c,0xa7,0x29,0x91,0xe5,0xfc,0xc5,0xde,0xd7,0x92,0x3f +.byte 0xe5,0x0c,0x91,0xea,0x24,0xfb,0x02,0x9a,0x13,0x3a,0x61,0x01,0x9d,0x7e,0x9d,0x11,0xf8,0xbd,0xe0,0x05,0xbb,0x13,0xf0,0x00,0x67,0x90,0x6f,0x80,0xe7,0x2e,0xfc,0xe0,0xea,0x8a,0x9d,0x2c,0x13,0x57,0x4c,0x78,0x1c,0x44,0xe2,0xa6,0x62,0x01,0x46,0xf8,0xbe,0xf4,0x51,0x32,0x15,0xd4,0x3c,0x7d,0x3b,0xcc,0xfd,0xc3,0x46,0x43,0xf1,0xfa +.byte 0x9e,0xee,0xad,0x47,0x8f,0x32,0x31,0x94,0x70,0x92,0xea,0x45,0xe3,0x63,0xd6,0x28,0x23,0xa5,0xdf,0x61,0xee,0x19,0x1a,0x5e,0xb0,0xe7,0x17,0xab,0xac,0xb4,0x03,0xed,0xf6,0x9e,0xba,0xdf,0x52,0x88,0xb7,0xca,0x7c,0x27,0xcd,0x7b,0xf8,0x1e,0x54,0x4b,0xe6,0xa3,0x91,0xf7,0xeb,0x22,0x65,0x95,0x13,0xe1,0xac,0xb6,0x22,0x80,0xe3,0xeb +.byte 0xf9,0xde,0xf1,0xb7,0x6a,0xfd,0xc7,0xb8,0x9b,0x9c,0x49,0x4f,0x84,0x7f,0x68,0x93,0x6c,0x3c,0xea,0xb1,0x8a,0xeb,0x23,0xca,0x2d,0x5e,0x29,0xb5,0x52,0x49,0x98,0x12,0x3f,0xed,0xf0,0xb7,0xbc,0x22,0x14,0x73,0x92,0x84,0x1b,0x3e,0x2f,0xed,0x24,0x1e,0x62,0xcc,0x09,0xe8,0x7c,0x5a,0x08,0xd4,0xc6,0xd9,0xd1,0x55,0x66,0x18,0x2c,0x6a +.byte 0x99,0xc3,0x0e,0x1e,0x7b,0xb7,0xd4,0xbd,0x0e,0x1f,0x22,0x85,0x09,0x2c,0xcf,0xff,0x79,0x9f,0x93,0xbe,0xec,0xed,0x63,0xb7,0x97,0xbb,0xeb,0xd6,0x70,0x76,0xa9,0x4f,0xb7,0x9a,0x60,0x5b,0x50,0xdf,0x85,0x46,0x69,0xa0,0x9a,0x86,0xe3,0xe2,0x13,0x2b,0x8c,0x0f,0x3b,0xab,0xa8,0xce,0xa3,0xb0,0x78,0x72,0x40,0xfb,0xd1,0x26,0x72,0xc1 +.byte 0x91,0x25,0x7b,0x29,0xde,0xcf,0x99,0xf3,0x8e,0x87,0x39,0x81,0x04,0xad,0x3b,0x11,0x6a,0xda,0x00,0xdd,0xe9,0x41,0xc1,0xd8,0xcc,0xf9,0x59,0xac,0x9b,0xb1,0x64,0x6f,0xb8,0xf4,0x9f,0x20,0xde,0x67,0x09,0x1b,0xdf,0x11,0xa5,0x94,0x56,0xab,0x76,0xba,0xc5,0xda,0x6c,0x86,0xe6,0xa4,0x73,0x59,0xa9,0xe3,0x68,0xb9,0xc0,0x50,0x1b,0x55 +.byte 0x21,0x9e,0xea,0x8d,0xcc,0x5d,0xee,0x88,0xe1,0x18,0x7c,0xcd,0x8f,0xff,0x18,0xbd,0x13,0xea,0x95,0xc4,0x8e,0xd3,0x92,0xfe,0x3d,0xda,0x6f,0xa5,0xbc,0xa0,0x77,0x5a,0x1d,0x61,0xff,0x7b,0x77,0xc4,0x06,0x25,0xc5,0xa7,0x76,0x36,0x55,0xe7,0xc0,0xf0,0x46,0x7e,0xca,0xe7,0xc1,0xe8,0x88,0x65,0xff,0xa7,0xb6,0x9c,0x83,0x1d,0x2e,0x6e +.byte 0xd6,0xd3,0x07,0x22,0x65,0x79,0x4f,0x3c,0x0a,0x5c,0x4f,0x95,0xb3,0x14,0x37,0x9b,0x0b,0x97,0x69,0xd9,0x5b,0x37,0x09,0xc3,0x70,0x5b,0x4f,0x11,0xcb,0xce,0xc0,0x06,0xf2,0xb9,0x32,0xdd,0x24,0x7b,0x8c,0xe6,0x0c,0x91,0x3b,0xa8,0xb0,0x82,0x56,0x4d,0xde,0xa0,0x5c,0x0b,0x5b,0x70,0x53,0x64,0x9d,0xab,0xbb,0x51,0x6b,0x8c,0x8f,0xe5 +.byte 0x1f,0xc0,0xb8,0xfe,0x1b,0xf6,0x24,0x26,0x62,0xcb,0x78,0x84,0x90,0x76,0x67,0x30,0x18,0x37,0xa9,0xca,0xb7,0x0d,0xac,0x17,0x86,0xb1,0x87,0x59,0x18,0xc3,0x9e,0x62,0x1b,0xb1,0x04,0x52,0xfc,0x7c,0x86,0xa0,0x37,0xb9,0x8b,0x7a,0x85,0x79,0x21,0xe0,0x0f,0x87,0x28,0x91,0xd0,0xe5,0x24,0x63,0x5c,0x7c,0xe8,0x47,0xfa,0x42,0x55,0xe9 +.byte 0x66,0xad,0xdf,0xc3,0x43,0x90,0x47,0x83,0x24,0x09,0x54,0x5f,0x14,0x27,0x53,0xb3,0x22,0x15,0x52,0x84,0x2f,0x61,0x8c,0x01,0x9e,0x34,0x61,0x3f,0x76,0x44,0x1c,0xca,0x79,0x2c,0x40,0x4e,0xa0,0x36,0x11,0xe0,0x23,0x0f,0xa7,0x78,0xf9,0xf9,0x2a,0x2c,0x98,0x5c,0xa9,0x2d,0x66,0xb9,0x87,0x43,0xd5,0xbc,0x64,0xe5,0x52,0x2f,0x1d,0xdc +.byte 0x1d,0xf4,0xb3,0x18,0x6b,0xd1,0x3b,0x8b,0xa3,0x47,0x65,0x62,0xcc,0xca,0x5f,0x00,0xbb,0x78,0x9d,0x35,0xd4,0x79,0x45,0x33,0xc7,0xa8,0x29,0x96,0x98,0xa4,0x23,0x2c,0x23,0x7f,0x5a,0x1d,0x09,0xb4,0xcf,0xac,0x54,0xcd,0x27,0xda,0x88,0x21,0xe2,0xb4,0x85,0xdc,0xc9,0x4a,0x6b,0xc4,0xfa,0x48,0xc5,0x91,0xc1,0x53,0x4b,0xa1,0x7a,0x9c +.byte 0x8a,0x7d,0x35,0x52,0xf1,0x58,0x9d,0x20,0x36,0xc2,0x78,0xdb,0x37,0xf8,0xa4,0x2f,0x50,0x98,0xb0,0x34,0x51,0x66,0x93,0xcf,0xe7,0xf0,0x06,0xf1,0xcd,0x0e,0x4f,0x33,0xcc,0x9b,0x73,0x3b,0xc9,0x51,0x63,0x6d,0x29,0x6b,0xf4,0x9d,0x2c,0x76,0x59,0xcd,0xfc,0x11,0x35,0x52,0xbd,0x3b,0x2e,0x7d,0x8a,0x0d,0xb0,0xbb,0x90,0x9b,0x9c,0xac +.byte 0x1c,0x80,0x89,0xd6,0x6f,0xaf,0xea,0x89,0x38,0x74,0xef,0x83,0x82,0x91,0xf7,0x74,0x96,0x30,0x40,0xe2,0x18,0x2b,0xb4,0xf6,0x15,0xf0,0x8e,0x63,0xe1,0x82,0x55,0x7b,0x65,0x70,0x33,0x14,0xef,0x7a,0x7c,0x2d,0xa9,0x17,0x1b,0x53,0x1e,0xf8,0x98,0x1b,0xbe,0xc8,0x00,0xf5,0xbf,0x79,0xe7,0x8e,0xf2,0xdb,0x59,0x0d,0x46,0xab,0x43,0xd0 +.byte 0xe4,0xa0,0xeb,0x29,0x6a,0x8b,0xc1,0x99,0xa6,0xcc,0x8e,0xe5,0xde,0x67,0xdf,0x49,0x09,0x62,0x8d,0x4b,0xa1,0x1c,0x3b,0x01,0xe2,0x95,0x65,0x10,0xa5,0x91,0xd0,0x48,0x35,0x96,0xcf,0xe4,0x51,0xd2,0x7f,0x93,0x49,0xab,0x1a,0xba,0x08,0x33,0x54,0x34,0xd7,0x00,0xc9,0xa0,0x07,0x03,0xc7,0x8a,0x65,0xa2,0x84,0x60,0xcd,0xaa,0xa2,0x46 +.byte 0x8c,0x67,0xd9,0xc1,0xe7,0x58,0xc5,0x1d,0xc0,0xb3,0xc6,0xb2,0x2a,0xfb,0x70,0x04,0xa2,0x25,0x7f,0x75,0x3c,0xd5,0x8e,0x9c,0x33,0xa2,0xdc,0x20,0x4c,0x26,0x5b,0xbe,0xd9,0x00,0x5d,0xa2,0xbd,0x42,0xbd,0x0d,0xd6,0x52,0x79,0xb5,0x67,0xf6,0x27,0x62,0xc8,0x64,0x05,0xc5,0x0f,0xae,0xe1,0x78,0x39,0xd1,0xb5,0x28,0xe9,0xd4,0x2a,0xaa +.byte 0xd4,0xc4,0x3e,0x43,0x27,0x83,0xfa,0xdb,0x46,0x73,0x20,0xcd,0x2c,0xba,0x33,0xb4,0x77,0x10,0x32,0x3d,0x8e,0x56,0x88,0x81,0xe1,0x4c,0x8b,0x46,0x60,0xcb,0xb7,0x67,0xd7,0x7b,0xc2,0x47,0x7d,0xd8,0x2d,0x4c,0x09,0x9f,0x07,0x8e,0x34,0x45,0xf4,0x50,0x69,0xfd,0x35,0x0a,0x09,0x9e,0xac,0x49,0x5f,0xdf,0x72,0x84,0x97,0x93,0x30,0x2c +.byte 0xc6,0x20,0x6f,0xb5,0x18,0x03,0xb6,0x30,0x23,0xc8,0xcd,0xa1,0x43,0xbd,0xbb,0x6f,0xde,0xb3,0xcb,0x1c,0xdd,0x41,0x71,0xfa,0x37,0xa7,0xa9,0x57,0x5a,0xf7,0xee,0xcd,0xb1,0xc1,0xb6,0x78,0x1c,0xe3,0xde,0x5c,0x02,0xc8,0xce,0xb7,0x8e,0x72,0xce,0xfd,0x79,0xcf,0x1a,0xef,0xcb,0x5b,0x5d,0x3c,0x1d,0xc8,0x1e,0x9f,0x67,0x26,0x86,0xd3 +.byte 0x3b,0x98,0x49,0x04,0xcd,0x1b,0x48,0x7c,0xa6,0xbe,0x37,0x0b,0x19,0xb1,0xb7,0x8a,0x74,0x0a,0xd9,0x4f,0x7b,0xbb,0x8e,0xc6,0x9b,0xdd,0xbc,0x61,0xfd,0xdd,0x86,0x7e,0x70,0x2e,0xe4,0x94,0xb4,0x62,0x47,0x6b,0x7c,0x92,0x41,0xda,0x05,0xdc,0xaf,0x5c,0x93,0xbc,0x7d,0xad,0xce,0x44,0x9e,0x27,0x1c,0x74,0x30,0x01,0xf2,0x8a,0x22,0xce +.byte 0x88,0x61,0xf5,0xb8,0xe2,0xf0,0xca,0x14,0x21,0x53,0xd3,0xbe,0x95,0x8f,0x52,0x10,0x21,0xc5,0x25,0x16,0xa1,0x4f,0xef,0x9a,0x6f,0xce,0xe9,0xee,0x06,0xa8,0x32,0xa4,0xac,0xee,0xd8,0x95,0x0b,0x65,0x10,0xbc,0xb3,0x15,0x48,0xf9,0x96,0xee,0xde,0x5d,0xf6,0x38,0x5f,0x32,0x70,0xd1,0x29,0xa8,0x1d,0xdc,0xf4,0x34,0x2d,0x0c,0x93,0x48 +.byte 0x8c,0x40,0xed,0x35,0x41,0xfe,0x4b,0xab,0x20,0x7d,0x95,0x74,0x02,0xe5,0x71,0x76,0x7e,0x59,0x35,0xb3,0xd7,0x43,0x1f,0xd4,0xe6,0x02,0x86,0xba,0x4f,0x53,0xd9,0xc3,0x7d,0x7f,0x3d,0xb6,0xd8,0x92,0x07,0x89,0x99,0x46,0xf8,0x09,0xcd,0x19,0x43,0x93,0xa7,0xc1,0xb2,0x5d,0xec,0xbf,0x09,0xf4,0xba,0xfc,0xf7,0xf1,0xa7,0x2e,0xfe,0x71 +.byte 0x04,0x58,0xab,0x16,0xd7,0xc0,0xf7,0x03,0xd4,0xc4,0xb9,0xe4,0xd8,0xfc,0x5b,0x66,0xa6,0xb3,0x6a,0x94,0x0e,0xba,0x8c,0x54,0x5c,0x8c,0x02,0x0a,0x33,0xcb,0xde,0x1c,0xad,0x6d,0xef,0x48,0x05,0xa6,0xca,0x9a,0x27,0xd6,0x1c,0xc3,0xea,0x3a,0x46,0x20,0xec,0x72,0xc4,0x94,0x89,0x7e,0xba,0xa9,0x2f,0xe5,0xec,0x1a,0xe4,0x50,0x54,0xeb +.byte 0xd9,0x5a,0x08,0xc5,0x84,0xc1,0x9a,0xdf,0xb0,0xd4,0x9a,0x6d,0xa2,0x93,0x52,0xd2,0x4d,0x69,0x88,0xc8,0x40,0x2d,0x26,0xbd,0x7a,0x37,0x04,0x21,0xe1,0x9d,0xc9,0xed,0xda,0x7a,0x4c,0x11,0x49,0x14,0x42,0xa1,0xdb,0x6e,0xed,0x1b,0x37,0xbf,0x09,0xac,0x35,0xda,0x80,0xf6,0x75,0xd4,0x32,0x54,0xb5,0x18,0xe8,0x79,0x25,0xc4,0x95,0xe8 +.byte 0x74,0xcf,0x6d,0xac,0x34,0x1f,0xea,0xd4,0x2e,0xd1,0x77,0x5e,0x90,0x8f,0x12,0x51,0xbb,0x3c,0xdf,0xe6,0xf4,0x49,0x8c,0x0f,0x9a,0x8e,0xe3,0x96,0xbd,0xba,0xe6,0x47,0x4b,0x50,0xc7,0xa9,0x29,0xea,0x09,0x5d,0xef,0x3c,0x91,0x48,0xc6,0x37,0xfd,0xac,0x7b,0xe5,0x04,0x25,0x93,0x0b,0xe3,0xce,0x32,0x46,0x38,0x81,0x97,0x57,0xbe,0x1f +.byte 0x3c,0x61,0x2d,0xd1,0x4e,0xca,0xbb,0x44,0xc6,0xfd,0xdf,0xdd,0x11,0xbf,0xbf,0xa8,0xc0,0x32,0x67,0xc1,0x2e,0xd7,0xbe,0x3c,0xe3,0xcb,0x57,0xa5,0x6d,0xbb,0x8e,0x0f,0x69,0x22,0x42,0xef,0x53,0x0f,0xce,0x09,0x6a,0xda,0xbf,0xd6,0xed,0x61,0x67,0x82,0x83,0x13,0x63,0x97,0x7d,0x1a,0xad,0x34,0x77,0x37,0xa6,0xe0,0x89,0xaa,0xd4,0xb6 +.byte 0x8f,0x93,0xff,0xb8,0x8f,0x63,0x14,0xfd,0x17,0xff,0xe5,0x7c,0x83,0x23,0xaa,0xe0,0xb9,0xd9,0x94,0x3a,0x1a,0xe7,0xa5,0xbd,0xa6,0x2b,0xd3,0x49,0xca,0xeb,0x7d,0x87,0x1d,0x54,0x16,0x93,0xec,0x14,0x8b,0x77,0x3c,0xb4,0xbe,0x33,0x76,0x5e,0xcb,0x33,0x27,0xd3,0x20,0xd6,0xed,0x0c,0x66,0xb8,0xe0,0x00,0xa6,0x76,0xcd,0x8b,0xb4,0xef +.byte 0x11,0xbc,0xe5,0x59,0xcf,0x1d,0xf5,0x15,0x58,0x4a,0xe1,0xfd,0x87,0x8c,0x7b,0xb9,0xa4,0x42,0x5a,0xed,0x51,0x7e,0x8d,0xa6,0x19,0xaa,0xc4,0xa6,0x14,0x74,0x45,0xb1,0xda,0x87,0x0f,0xd7,0xe7,0x66,0x3b,0xcd,0x04,0x02,0x14,0x20,0x41,0x15,0x4c,0x33,0x79,0x80,0x7d,0xd4,0x44,0x2c,0xab,0x6c,0xf4,0xa8,0xd4,0x31,0x43,0x7b,0xa7,0xc7 +.byte 0x65,0x0e,0x32,0xc8,0xc8,0x6d,0xf5,0x65,0x1b,0x26,0xf1,0xe4,0x68,0x15,0x88,0x1b,0x00,0x60,0x23,0x31,0xd7,0x4b,0x57,0xda,0xf1,0x19,0xa9,0xd9,0xaf,0xe6,0xa9,0x1e,0x2c,0x0d,0x23,0xe4,0x5b,0xcb,0x43,0x38,0xf0,0x93,0xd3,0xfb,0x6a,0x9b,0x83,0x30,0x55,0x96,0x9f,0x53,0x06,0x3f,0xaf,0x40,0x69,0xef,0x9a,0x47,0x6b,0xba,0x7c,0x10 +.byte 0x10,0x44,0x89,0xfa,0xb9,0x9e,0x70,0xed,0x25,0x59,0x68,0xae,0x9b,0x17,0xcf,0x80,0x6f,0x34,0xb8,0x07,0x40,0xe5,0x27,0x6d,0xcd,0x46,0x2c,0x36,0x90,0xf3,0x83,0x74,0x68,0x35,0xf2,0x05,0xa8,0xdf,0x4e,0x34,0xc5,0xb4,0xeb,0x5a,0x7d,0xe6,0x10,0x8a,0x23,0x54,0xeb,0x9b,0x27,0xf2,0x07,0xee,0xf9,0x05,0xc2,0x5a,0x88,0xbd,0x49,0x2e +.byte 0x1b,0x00,0x31,0x68,0x4a,0xc9,0x3a,0xc5,0x93,0x82,0xa8,0x39,0xba,0x55,0xcd,0xc1,0xda,0x49,0xc2,0x4c,0xf4,0x93,0x00,0xcf,0x61,0xa4,0xbb,0x8c,0x64,0x33,0x90,0x14,0x6d,0x1d,0xad,0x75,0x97,0xd9,0x1d,0xfb,0x27,0x67,0x43,0x04,0xdc,0x4e,0xdf,0x0e,0x0c,0x7e,0x1c,0x89,0xfe,0x31,0xb7,0x9b,0x07,0x5e,0x99,0x08,0x22,0xef,0x6e,0x4d +.byte 0x8b,0xd6,0x27,0xe6,0x24,0x1a,0x28,0xb0,0x22,0xa5,0x69,0x17,0x82,0x46,0xe3,0x90,0xe8,0x04,0xae,0x90,0x66,0x14,0xec,0xa2,0x1b,0x7e,0x09,0x13,0x32,0x9d,0xec,0x8b,0x51,0x5f,0xa8,0x96,0x8f,0x4c,0xc6,0xbd,0x5c,0x70,0x29,0x21,0xac,0xe9,0x6e,0xb0,0x0c,0x61,0x50,0xba,0xcc,0x55,0x71,0xda,0x2a,0x92,0x86,0x0c,0xff,0xaf,0x7a,0xcf +.byte 0xaf,0x2a,0xbd,0xd6,0x15,0xa4,0x4c,0x2e,0x76,0x0d,0xcf,0x10,0x11,0x4a,0xd1,0x89,0xdd,0x46,0x5f,0x6b,0x5a,0x02,0x05,0x49,0x6f,0x98,0x6a,0xa7,0x8a,0x66,0x87,0x59,0x23,0xb5,0x3f,0x2e,0x95,0x73,0xfe,0x48,0xe9,0x0d,0x17,0xa6,0xa5,0x4e,0x40,0x98,0x79,0x40,0x1a,0x10,0x1d,0x84,0xdd,0x6f,0x17,0xa7,0xb7,0xfb,0x49,0xbd,0x54,0x97 +.byte 0x0f,0x42,0x25,0x95,0x83,0xf0,0x97,0xe7,0x4c,0x24,0xb5,0xe8,0x23,0x0a,0xd6,0xbf,0xef,0x2c,0x03,0x4f,0x87,0x59,0xe8,0x80,0x87,0xcc,0x51,0x1b,0x94,0xd8,0x60,0xe7,0x10,0x4d,0x01,0xfd,0x83,0xf2,0xd8,0x8d,0x1b,0x33,0xbf,0xaf,0x36,0x41,0x47,0x51,0xe0,0x45,0x2a,0x05,0x5f,0xe1,0x92,0xf8,0xa5,0x15,0x46,0x35,0xd8,0x9b,0xe0,0xff +.byte 0xee,0xa6,0x4e,0x7d,0xfd,0x96,0xa5,0x75,0xdf,0x7e,0xb0,0x7d,0x14,0x73,0xdd,0xbe,0x17,0x6d,0xdd,0xec,0xac,0x9a,0x92,0x68,0xe3,0x44,0x16,0x63,0x22,0xa8,0x15,0x58,0x8c,0x11,0x23,0x46,0x18,0xae,0x47,0x39,0x87,0xc7,0x4c,0x30,0x09,0xce,0xe5,0xc4,0xd8,0x82,0xc6,0xc6,0x3d,0x31,0xf6,0x0f,0xb5,0x69,0x61,0x63,0x88,0xd6,0xb8,0xda +.byte 0x89,0x29,0x87,0x69,0x6e,0x3f,0x55,0x2f,0xbc,0x91,0x91,0x43,0x7d,0xb3,0x7b,0x99,0x5a,0x5a,0xb0,0x7d,0x90,0xa7,0xe7,0x30,0x0d,0x32,0xb2,0x43,0x43,0x78,0x59,0x6e,0xbb,0xd7,0x76,0xd4,0x5b,0x4d,0xc4,0xa9,0x99,0xdd,0xd3,0xce,0x3d,0x13,0x41,0x38,0x33,0xed,0xb8,0x76,0x1a,0xbb,0xfd,0x26,0xcd,0x69,0x89,0x22,0x16,0x9a,0x21,0x35 +.byte 0x38,0x77,0x14,0x10,0x42,0x17,0x1f,0xa1,0xbf,0x55,0xb4,0x51,0x62,0x15,0xac,0xd0,0xa2,0x71,0xe4,0x32,0x89,0x33,0x8b,0x74,0xc6,0x61,0x38,0xd0,0xfe,0x28,0x69,0xe6,0x88,0x1b,0x11,0x7e,0x46,0x39,0xba,0x24,0xdd,0x1f,0x61,0xf4,0x74,0xad,0x58,0x94,0xa9,0x3e,0xc7,0x2a,0x9e,0xc0,0xe1,0x1c,0xee,0x21,0xab,0x3e,0x65,0x0c,0xe8,0xd8 +.byte 0x71,0x52,0xf3,0x6c,0x64,0x53,0x75,0x17,0x87,0x55,0x14,0x42,0x25,0x7f,0xe7,0x0d,0x89,0x1b,0x77,0x26,0xc4,0xaa,0xcc,0x91,0x47,0xe5,0x54,0xae,0x1a,0x0d,0x04,0x99,0xeb,0x56,0xd8,0xb4,0x6d,0xeb,0xec,0x2f,0x6c,0xc5,0x8e,0x76,0xe1,0xa0,0xa7,0x42,0x06,0xc9,0xc3,0x03,0xee,0xa9,0x9b,0x1e,0xfc,0x11,0xf5,0x2f,0x2b,0x14,0xb8,0x9f +.byte 0x87,0x61,0x9b,0xc7,0x38,0x0e,0x58,0xf1,0xd4,0x36,0xca,0x82,0x85,0x9c,0xde,0xec,0xd3,0x1e,0x29,0x4e,0x70,0x9e,0x9a,0xe0,0x8b,0x6f,0xfe,0xd0,0xe9,0x95,0x51,0xcf,0x36,0x31,0x9c,0xff,0x63,0xc6,0x04,0x8e,0x61,0xc2,0xcb,0x3a,0xfa,0xd0,0xd7,0x29,0xbd,0xe7,0x8a,0x2b,0x8e,0xa0,0xac,0x58,0x93,0xb3,0x52,0xca,0x80,0x17,0xd2,0x2d +.byte 0x93,0x5f,0xe0,0x8a,0x47,0x3c,0x67,0x95,0x64,0x91,0xa4,0x76,0xa4,0x5f,0xfa,0x93,0x4d,0xc7,0x6e,0x5d,0x23,0x9f,0xe1,0x4a,0x16,0xff,0xa5,0xf0,0x94,0xa8,0x02,0xcc,0x9a,0x84,0xd5,0x9d,0xb6,0xe5,0x7c,0x76,0x3f,0xc9,0xfd,0xdc,0x8e,0x59,0x9a,0x22,0x18,0x3c,0xe6,0x90,0x85,0x10,0x73,0x2d,0x65,0xa7,0xa7,0xe1,0xeb,0xc5,0x05,0x24 +.byte 0x1e,0x0b,0x31,0x19,0xb5,0xb0,0x8d,0xc0,0xb5,0x04,0xfe,0x9d,0xfa,0xf7,0xcd,0x71,0x29,0x40,0x19,0x23,0xed,0x2c,0xdb,0x89,0x89,0x8d,0x69,0x22,0x4c,0x9c,0xa7,0xf7,0xb1,0x56,0x87,0xa3,0x44,0xa9,0xa3,0x16,0x28,0xce,0x94,0x40,0x6f,0x71,0x77,0x0e,0x6d,0xe9,0x78,0xa2,0x2a,0x17,0x45,0x03,0xeb,0x1e,0xf1,0xfa,0x56,0x3e,0xa7,0x6b +.byte 0x08,0x06,0x6a,0xcb,0x8f,0x5e,0x0f,0xd3,0x6e,0x4b,0x21,0x31,0x73,0x50,0x94,0x56,0xf9,0xb9,0xc7,0x38,0x69,0xe8,0x09,0x3f,0x03,0xb3,0xb5,0xe8,0x2a,0x5e,0xf6,0xad,0xae,0x6f,0xab,0x6a,0x49,0xdd,0x93,0x6d,0xfb,0x8b,0xde,0xea,0x8b,0xb0,0xa1,0x44,0xf0,0xb3,0xf6,0xaa,0xe3,0xc8,0x04,0x87,0x9f,0x8b,0xee,0xab,0x13,0x1d,0x2d,0xeb +.byte 0x09,0x62,0x21,0x49,0x5f,0xb6,0x95,0xab,0xc4,0xee,0x69,0xfb,0x31,0xff,0xbf,0x1a,0xa6,0x4c,0x67,0x66,0x84,0xe6,0x0c,0xb7,0xb2,0x3e,0x3f,0xa4,0xb3,0x52,0xde,0x15,0xc9,0xa7,0xa9,0xb5,0x0d,0xe5,0x0b,0x99,0xa6,0xb6,0x8f,0x69,0xc5,0x6d,0x6c,0xbb,0x83,0x89,0x4e,0xfc,0x49,0x79,0x4d,0x46,0x31,0xa0,0x09,0x5f,0x5d,0xd0,0x5b,0x80 +.byte 0xa1,0xf4,0x36,0x48,0x97,0x6a,0xfd,0x34,0xcb,0x20,0xa8,0x01,0x25,0x04,0xe7,0x13,0x12,0x87,0x66,0x27,0x96,0x36,0xba,0x92,0xbd,0xda,0x94,0x11,0xef,0x90,0xbd,0xbc,0x9e,0xf9,0x63,0xb3,0xa6,0xc1,0xbb,0x46,0xe8,0x86,0x3f,0x2d,0xf9,0x11,0x3a,0x23,0xa8,0x7a,0x33,0x41,0x3e,0x2e,0x5d,0xde,0xc0,0xd2,0x23,0xca,0x41,0xa0,0xb9,0x70 +.byte 0x6d,0x31,0xf3,0x89,0x87,0x9b,0x72,0xd9,0x15,0x4d,0x8b,0x51,0xdd,0x56,0xa1,0xb4,0x68,0x52,0x65,0x81,0x12,0x46,0xea,0x24,0xb4,0x34,0xcc,0xa0,0xdb,0x7d,0x96,0xd9,0x8e,0x64,0x61,0x10,0x7c,0x2a,0x00,0x4d,0x82,0x61,0x54,0xa4,0x70,0x3d,0x9c,0xa5,0x0b,0xd2,0x08,0x71,0xa8,0x94,0xb1,0xb4,0x30,0x61,0x59,0x9f,0x72,0x61,0x56,0x2d +.byte 0xa3,0xf4,0x9d,0x1c,0xfc,0x49,0x9d,0x39,0x27,0xcb,0x54,0xb2,0xce,0x3c,0xb6,0x76,0xe5,0x8e,0xa5,0xe7,0x08,0xd4,0xc7,0x2c,0xa6,0x28,0xc8,0x3e,0x22,0x14,0x06,0x75,0x68,0x0d,0x6b,0xb5,0xa3,0x68,0x14,0x17,0xfe,0xb8,0xcc,0x26,0x5b,0x9d,0x0b,0xcc,0x3e,0xd7,0x6c,0xe0,0xec,0x5e,0x1e,0x1e,0xb8,0x9a,0xbe,0x91,0xb5,0xa6,0xb5,0x83 +.byte 0x28,0xc2,0x35,0x65,0xd3,0xde,0xdd,0x71,0x29,0x13,0xc1,0xee,0x78,0x22,0x34,0x0b,0x77,0x3a,0x48,0x98,0x26,0x43,0xc2,0xce,0x03,0xe8,0x75,0xf8,0x8a,0xdf,0x6a,0xb0,0xb4,0x8c,0x11,0x8c,0xe5,0x95,0x96,0x17,0xfb,0x06,0x5e,0x8f,0x36,0x10,0xc5,0x04,0x43,0x1b,0xed,0xd3,0xad,0xd4,0xa4,0xe0,0x17,0x85,0xed,0x9b,0xd8,0xae,0x98,0x46 +.byte 0x58,0x57,0x0e,0x46,0xea,0x3f,0x07,0x6d,0x0e,0x46,0xda,0x2f,0x68,0x2b,0xd6,0xe7,0x0d,0x4b,0xbe,0x32,0xee,0x10,0x73,0x18,0x7d,0x6b,0x2d,0x04,0x27,0x72,0xb1,0xe1,0xbf,0x89,0xaa,0x4d,0x1a,0xfc,0xbd,0xf2,0xc3,0x9f,0xf0,0x01,0x85,0x62,0x09,0x4d,0x08,0x2c,0x57,0x9a,0x7b,0xad,0x0b,0x79,0xff,0x14,0xa1,0x45,0xde,0x21,0x8f,0xe2 +.byte 0x93,0xd0,0x35,0x26,0xc3,0xbc,0x8c,0xb7,0x57,0x6a,0xdf,0x98,0xa7,0x75,0xc6,0xf6,0x4b,0x5f,0x91,0x6e,0x71,0x3a,0x5c,0x5f,0x57,0x63,0x34,0x87,0xf8,0x20,0x6a,0xa1,0xbf,0xf8,0xca,0x8e,0xf9,0xa9,0x10,0x8b,0xab,0x0b,0xc2,0xcc,0x71,0x89,0x7c,0xef,0x70,0x3a,0xb0,0xf6,0x90,0xcc,0x6b,0x2c,0xcc,0x8b,0x2a,0x21,0x78,0x23,0xa0,0x71 +.byte 0x8c,0x7b,0xc1,0x0f,0x27,0x72,0x40,0xe4,0x9e,0x35,0xf3,0x0a,0xc0,0x7e,0x7f,0xe5,0x9b,0xdb,0x93,0x49,0x08,0xc3,0x6b,0xb7,0xea,0xea,0xd4,0x5a,0x96,0x97,0x3c,0xdf,0xc7,0x02,0x39,0x9f,0xa3,0xca,0xdd,0x62,0xf3,0x68,0xc7,0xae,0x37,0xc1,0x35,0x73,0xb2,0x5d,0x99,0xe4,0xae,0x27,0x55,0x5e,0x6a,0xae,0x6f,0x1a,0x95,0x51,0xb1,0x3b +.byte 0xd7,0xb4,0x4d,0x3d,0x88,0x54,0x01,0xbe,0x2c,0x12,0x17,0x29,0x4f,0xf3,0xed,0x5a,0x1f,0xa9,0xf0,0x67,0xbd,0x7c,0xad,0xe5,0x58,0x52,0xd4,0xd1,0xfe,0x1e,0x1b,0xd6,0xce,0x7c,0xc3,0xa2,0xa9,0x72,0x9b,0x6a,0xe5,0xf9,0x39,0x22,0xaa,0x7f,0x2e,0xa2,0x53,0x75,0xf0,0x99,0x2e,0x36,0x86,0x83,0x10,0x63,0xd7,0xac,0xa3,0x52,0xa6,0x23 +.byte 0x80,0x46,0xe4,0xa9,0x07,0x79,0xe1,0x61,0x75,0xbf,0x08,0x31,0x6c,0xdd,0xe1,0x30,0xd0,0x35,0xc2,0xbd,0x30,0xb8,0x85,0xf3,0xd2,0x2c,0x90,0x7a,0xf0,0xd3,0x80,0xe5,0xf1,0xc2,0x58,0x3d,0xf7,0x3c,0xbc,0xff,0x03,0x4d,0xf7,0xad,0x2f,0xa6,0xfe,0x73,0xde,0xa8,0x60,0xd7,0x89,0x4a,0xcf,0x3d,0xf3,0xab,0x62,0xfa,0x9d,0x46,0xad,0xd0 +.byte 0x97,0x6f,0x89,0x84,0x16,0x9b,0x84,0xb2,0x6c,0x63,0x6d,0x29,0xee,0x8e,0x97,0x3c,0x48,0x19,0x92,0x62,0xdc,0x1d,0x35,0x9d,0xec,0x01,0x00,0x64,0xbf,0x4d,0x8b,0xa3,0x13,0x48,0x9f,0xb4,0x01,0x0d,0xb1,0xc4,0xf2,0xf2,0x6a,0x84,0x1a,0x07,0x3c,0x46,0xa6,0xb5,0x41,0x9a,0x32,0x7e,0xc3,0x4f,0x87,0x95,0x71,0x7a,0xbf,0x74,0xf8,0x0b +.byte 0xfb,0xa5,0xde,0xa8,0x35,0xf1,0xcb,0x04,0x8d,0x8b,0xd3,0xb0,0xc8,0x1d,0x6c,0xaf,0xb4,0x21,0x79,0x1c,0x34,0x71,0x2f,0xf5,0xc4,0xbe,0xad,0xbc,0xaf,0x2f,0x54,0x81,0xd9,0xf8,0xff,0x59,0xf9,0x4e,0x62,0x9f,0x7d,0x7c,0xe9,0xdc,0x67,0xae,0xa3,0x32,0x4b,0xf7,0x4e,0x53,0x4c,0x55,0x7d,0xc5,0xdd,0xd4,0x5d,0x93,0xb8,0x98,0x3e,0xd3 +.byte 0x15,0x65,0x52,0x78,0x5a,0xd2,0x21,0x84,0x5d,0x28,0xaf,0x44,0x7d,0x18,0xf8,0xdd,0x5c,0xc3,0x6e,0xc8,0x05,0x05,0x30,0xd0,0x82,0xf8,0x00,0x0f,0x3d,0x5c,0x62,0x7e,0xa6,0xd5,0x7b,0x9f,0xb1,0x44,0xb7,0x0d,0x22,0x81,0xe1,0x4a,0x2b,0x79,0x7e,0x39,0x4d,0x8a,0x9a,0xfd,0x94,0x0c,0xf7,0x23,0x10,0x99,0xd2,0xd2,0x8b,0x98,0xe5,0x9d +.byte 0xb0,0xbf,0xcf,0x06,0x08,0x80,0x32,0x69,0xfd,0x81,0x5f,0xb3,0x66,0x11,0x63,0xeb,0x30,0x1d,0xcd,0x5b,0x5b,0xec,0x0c,0xca,0x30,0x37,0xa0,0x82,0x79,0x75,0x87,0xc1,0xfa,0x5b,0x38,0x4b,0xe3,0xea,0x46,0x49,0x36,0x92,0x92,0xf0,0xc9,0x15,0xa5,0xec,0x9e,0x21,0xb6,0x9f,0xb4,0x6d,0xf6,0xef,0x5c,0x2f,0x7d,0xa4,0xb3,0x25,0xfb,0x13 +.byte 0x40,0xe1,0xa0,0x20,0x4a,0x3a,0xe2,0x3e,0xf5,0xe0,0x68,0x61,0x11,0x9a,0xfb,0x1e,0xe8,0x1b,0xe0,0x17,0x9c,0x8a,0xe5,0x53,0x74,0xdd,0xec,0xc6,0x03,0xc6,0xd0,0x9b,0xc2,0x0b,0x77,0x4c,0x36,0x2b,0xac,0x4e,0x4d,0xd2,0x26,0x70,0x39,0x96,0xb4,0x11,0x1a,0x5b,0xcc,0x3f,0xb9,0xcf,0x0d,0x04,0x55,0x05,0x00,0x66,0x8f,0xa9,0xec,0x31 +.byte 0xe5,0x47,0x4c,0x9b,0xb7,0x6e,0xa5,0xe7,0x9e,0x70,0xf4,0x02,0x2a,0x3c,0xa2,0x03,0x04,0x30,0x9e,0x3f,0x7c,0xaa,0x0a,0x8f,0x55,0x61,0xca,0x50,0x35,0xe6,0xa4,0x24,0x61,0x26,0x31,0x9e,0x9e,0x77,0x0d,0x15,0x3a,0xc0,0x88,0x32,0xb5,0xbb,0x3d,0x3e,0x59,0x25,0x52,0x81,0x2e,0x4b,0xc6,0x5d,0x9f,0x87,0x0f,0x1f,0x5e,0xec,0xdd,0xbe +.byte 0x32,0x6c,0x71,0xef,0xd2,0x9c,0xfd,0x70,0xc8,0xf6,0x1f,0xb9,0xc9,0xdd,0x4d,0x39,0x61,0x92,0xbd,0x0c,0x48,0x63,0x4b,0xd2,0x2b,0x8c,0x4b,0x35,0xb1,0x8e,0x04,0x44,0x3c,0xe1,0xde,0xfd,0x6e,0xde,0xeb,0x94,0x51,0xea,0x36,0x7b,0xc6,0x87,0x15,0x34,0x68,0xa0,0xb8,0x94,0xb6,0x56,0x33,0xf4,0xab,0x84,0xed,0x1c,0x36,0x91,0xa7,0x1b +.byte 0x03,0xca,0x48,0x64,0x16,0x5b,0x4b,0x69,0x47,0xae,0xd7,0xc9,0xcf,0x74,0xd2,0xbd,0x60,0x04,0x7c,0x66,0xe9,0x12,0x92,0x40,0x78,0x23,0x0b,0x5b,0xa0,0xda,0xf7,0xe4,0x9a,0xad,0x9c,0x31,0xe7,0xaa,0xad,0x5a,0xc3,0x45,0x00,0x6c,0xd3,0x4d,0x93,0xdf,0xb6,0x68,0x11,0x3f,0x2a,0xbc,0x9a,0x8d,0xeb,0x0f,0xb5,0xa9,0x8e,0xa5,0x2c,0x99 +.byte 0x94,0x8d,0x21,0xa9,0x41,0x6b,0x11,0x2e,0x02,0x21,0xd8,0xc1,0xbc,0xf0,0x2a,0x87,0xae,0x35,0xa9,0x78,0x5c,0x43,0xb8,0xb7,0x63,0x2d,0x09,0x31,0xae,0x6f,0xfc,0x39,0x7b,0x18,0xc3,0xce,0xe3,0xfa,0x51,0x70,0xc7,0x6b,0x5e,0xc3,0xce,0xc8,0xa2,0x3a,0x66,0x9e,0xfe,0x45,0xb4,0xa2,0xaf,0x81,0x03,0x74,0xbf,0x0c,0x65,0x4c,0x30,0x27 +.byte 0xd5,0x34,0x29,0x2d,0x83,0xa8,0xb9,0x1d,0xf8,0x12,0x09,0x51,0xdd,0x0e,0x66,0x95,0xf3,0x94,0xaa,0x83,0x3a,0x6f,0x8a,0x7c,0x3a,0x29,0x82,0xbb,0x80,0xa1,0x37,0x8c,0x79,0xf4,0x4a,0xa8,0xe4,0x17,0x72,0x77,0xee,0xc4,0xaa,0x25,0xd3,0x8f,0x2e,0xaf,0xb9,0xb2,0x3c,0xa6,0xd5,0x72,0x97,0x07,0x23,0x38,0xae,0x9e,0x22,0x08,0x85,0x70 +.byte 0xfa,0xff,0x38,0xe6,0x96,0x9f,0x2c,0x11,0x14,0x16,0x9a,0xfa,0x5a,0x7b,0x05,0x31,0x3e,0x20,0xbf,0x4d,0x87,0xaa,0xba,0x94,0xcd,0xdb,0xeb,0xec,0x29,0x58,0x4e,0x43,0x12,0xe8,0xf9,0x01,0x50,0xc8,0x51,0x7a,0x61,0x12,0xe9,0xed,0xc2,0xd6,0x2e,0xd3,0xed,0x54,0x72,0xf7,0x1b,0x0c,0x8c,0xb4,0x65,0xea,0x22,0x31,0x22,0xeb,0xcd,0x53 +.byte 0x66,0xf1,0xa5,0x34,0xe9,0x81,0x74,0xcb,0xb5,0x6b,0x45,0x71,0x69,0x6d,0x84,0xe8,0xc6,0x86,0xc9,0xdd,0x0c,0xa4,0x30,0x12,0x08,0x42,0x10,0x6b,0xcd,0x65,0x6c,0xfd,0x9c,0xde,0x77,0x3c,0x32,0x09,0xef,0x99,0x27,0x0e,0x4a,0x72,0x03,0x8d,0xb5,0x68,0xa0,0x67,0xf7,0xc2,0xae,0xb8,0xce,0x41,0x70,0x4e,0xdd,0x13,0xcb,0x3f,0x05,0x4e +.byte 0xf4,0xbc,0x88,0x98,0x2f,0x42,0x4e,0x5f,0x3e,0xcb,0x2c,0xd3,0x2f,0xb8,0x92,0xbb,0xd8,0x95,0xc8,0xaf,0xa9,0x44,0x8b,0xf0,0x2f,0x81,0xd4,0xe7,0x06,0x19,0xf7,0xa7,0x0a,0x73,0x3e,0x30,0xd9,0x00,0xe4,0x2d,0x76,0xb1,0x0d,0xfa,0x12,0x1f,0xbe,0x59,0x4f,0xf7,0xc8,0x5b,0xab,0xd7,0x16,0x3d,0x7e,0x97,0x9e,0xec,0xf8,0xcb,0x31,0x2e +.byte 0xe0,0x41,0x0b,0x00,0xa6,0x6d,0xe9,0x5e,0xd5,0x4a,0xc5,0xbf,0x1c,0xcc,0xa5,0x71,0x94,0x29,0x3d,0x17,0x43,0x27,0x63,0xc4,0xc7,0x8f,0x1b,0xb7,0x5f,0xcf,0xdf,0x8e,0x6a,0x69,0x87,0xc1,0x29,0xab,0x7b,0x8d,0xdf,0x07,0x95,0x50,0xa3,0x1c,0x8e,0xdc,0x7f,0x8a,0x21,0x37,0x1e,0x26,0xa7,0x67,0x28,0xb2,0xc8,0x23,0x5a,0x1d,0x94,0x46 +.byte 0x1b,0x3e,0x72,0x87,0x73,0x08,0xe2,0x3b,0x46,0x51,0xbe,0x5b,0xa9,0x72,0xb9,0xf8,0x45,0x6d,0x0c,0x89,0x80,0x0d,0x7a,0xfb,0x4c,0x3f,0x7f,0x3d,0x29,0xff,0xef,0xb2,0xec,0x23,0xc2,0x26,0xcf,0x8c,0x2e,0x28,0xbf,0xc5,0x68,0x47,0xd9,0x49,0x95,0xf1,0x67,0x7e,0x3a,0x48,0xe2,0x43,0x5c,0xc8,0x95,0x5b,0xb2,0xf3,0x22,0xc9,0x73,0x91 +.byte 0xb5,0x78,0x96,0x1b,0x9a,0x75,0x5f,0xb2,0x6b,0x8c,0x66,0x8c,0x8e,0xc1,0xe1,0xde,0xd6,0x64,0x31,0xe1,0x7b,0x12,0xd2,0x85,0x8f,0x52,0x68,0xec,0x80,0x26,0x3d,0xcc,0x9b,0xe3,0x57,0xbe,0x19,0x42,0xb9,0xdd,0x7d,0x2b,0x5b,0x6d,0x1b,0x9e,0x96,0xd7,0x75,0x83,0x82,0x3c,0x3e,0x5f,0xf8,0xa9,0x36,0xbe,0x14,0xc7,0xce,0x9d,0x05,0x7e +.byte 0xd7,0x38,0x37,0x35,0xc9,0x37,0x8b,0x9f,0xc6,0x2d,0xff,0x00,0x41,0xff,0x1b,0x09,0xea,0xd2,0xb0,0x04,0x48,0xff,0xfc,0xb5,0x67,0x54,0x39,0x3d,0x23,0x68,0x0b,0x7d,0x97,0xf3,0x65,0x20,0xa2,0xf8,0x33,0x96,0xd1,0xf4,0xc7,0xba,0x6f,0x00,0x95,0x36,0xf6,0x33,0xd1,0x8d,0xde,0xee,0x1e,0xfa,0x60,0x8e,0x5e,0x4c,0x70,0xbb,0x53,0x79 +.byte 0xc9,0x9a,0xdf,0x3c,0x53,0xe4,0x35,0x87,0xc3,0xe6,0x8e,0x0e,0x1a,0xd0,0xf8,0x57,0x2b,0x33,0x51,0x4d,0x7d,0x43,0x17,0x3e,0x6f,0x0e,0xca,0x86,0xb2,0xc6,0x09,0xf3,0x2f,0xc1,0x5f,0x0e,0x9a,0x5e,0x7d,0x9d,0xf7,0xff,0x09,0x46,0xe5,0x30,0x91,0x61,0x93,0xb5,0x2f,0xc5,0x7f,0x09,0x0b,0x55,0x94,0x17,0x25,0x19,0x9b,0xa9,0x0e,0x68 +.byte 0x71,0x18,0x1b,0x4b,0x1b,0xa3,0x75,0x90,0x56,0x96,0x5e,0x33,0x71,0xf2,0x06,0x69,0x07,0x04,0xcb,0x8c,0x79,0x9b,0xa5,0x17,0xd8,0xd8,0x77,0xc7,0xca,0x95,0x58,0x12,0xec,0xdd,0x41,0xc9,0x12,0x16,0x9a,0xc4,0xf0,0x27,0x7a,0x8e,0xeb,0x19,0x79,0x27,0x7b,0x2e,0x55,0x96,0x57,0x19,0xbe,0x55,0x8c,0x7f,0x97,0x90,0x80,0x40,0x5d,0x5a +.byte 0xf6,0x07,0xd6,0xb4,0xc5,0xe8,0x0e,0x54,0xde,0x78,0x23,0xca,0x39,0x90,0x42,0xb6,0x8b,0x14,0x22,0x06,0x71,0x77,0xd5,0xf7,0x8d,0x05,0x9d,0xbf,0xfe,0x38,0x91,0xba,0x79,0x85,0x30,0x47,0x25,0xf0,0xa2,0x72,0x55,0x94,0x2a,0x8a,0xc8,0x28,0xc8,0xa9,0x23,0xab,0xf0,0x4e,0x49,0x2f,0x58,0x53,0x35,0xd1,0xb6,0x16,0x81,0xc2,0x25,0x18 +.byte 0xd9,0x71,0x91,0xc4,0x81,0x3e,0xf4,0xd7,0x87,0x9e,0x57,0x78,0xf7,0x7d,0x4b,0xb2,0xfd,0x91,0x9f,0xa8,0x0e,0x77,0xb3,0xc7,0xe5,0x6a,0x95,0x17,0xc3,0xf4,0xcb,0x7f,0x96,0xc1,0xa8,0xee,0x6a,0x0f,0x1f,0x5d,0x20,0x28,0x93,0xe5,0xf3,0x13,0x46,0x53,0x47,0x9f,0x98,0xc6,0xf5,0x29,0x69,0xb9,0x83,0x36,0x03,0xa1,0x9a,0xb4,0xa9,0x4e +.byte 0xd6,0xda,0x25,0xe2,0x5b,0xbb,0x95,0xdf,0x0f,0x37,0x0b,0x02,0x51,0x03,0xd1,0x0e,0x84,0xef,0xdd,0x85,0xdd,0xae,0x10,0x32,0x65,0x03,0x65,0xf0,0x8e,0x0c,0x69,0x90,0x35,0x26,0x36,0xe8,0x05,0x46,0xe6,0xce,0x52,0x4d,0xb5,0x93,0x9f,0xe3,0xe5,0xb0,0x43,0x57,0x32,0x5d,0xca,0xd4,0xc9,0x89,0x2e,0x5b,0x03,0x8a,0x82,0x78,0x21,0x6b +.byte 0x41,0xa9,0x0a,0x9f,0xe0,0x50,0xec,0x72,0x01,0x67,0xe7,0x1c,0x92,0xe3,0xe4,0x83,0x4d,0x4b,0xcf,0x01,0x37,0x2f,0x34,0x86,0xcf,0x36,0xf7,0x3a,0x57,0xa3,0x89,0x73,0x0f,0x9c,0x06,0x82,0x75,0x7a,0x4b,0xd8,0x44,0x40,0xf2,0xc5,0xc4,0x22,0xa6,0x99,0x1b,0x73,0x2f,0xad,0x09,0xe9,0x84,0x6f,0xc3,0xca,0x72,0x3a,0x8a,0x55,0x55,0x0a +.byte 0xcd,0x33,0x51,0xef,0x5b,0x36,0x77,0x6c,0xb4,0x4a,0xae,0xdd,0xbd,0xec,0x65,0x99,0x43,0xd6,0x8a,0x16,0xba,0x89,0x4d,0x0c,0x11,0xb4,0x0d,0x5d,0x3e,0x76,0xcb,0x48,0x9d,0x31,0x40,0x71,0xe2,0xe4,0xa9,0xd9,0x6e,0x3c,0x3d,0xd1,0x6e,0xaf,0xb9,0x28,0x71,0x5a,0x07,0x6f,0xab,0xdb,0xf8,0x4f,0x11,0xbc,0xe0,0x14,0x01,0x43,0x4d,0xe2 +.byte 0xad,0x5d,0x2a,0xb2,0x58,0x66,0x05,0x50,0x66,0xf6,0x2f,0x66,0x11,0xd1,0xd7,0x05,0x85,0xb0,0x7f,0xa8,0x89,0xbd,0x41,0xda,0x35,0x1e,0xbb,0xff,0x70,0x1a,0xe8,0x65,0x96,0xe9,0x50,0x18,0x7f,0x4c,0xb2,0xe2,0x95,0x26,0xf6,0x37,0x09,0x8c,0x8d,0x7b,0x02,0xb0,0x7f,0x32,0xb5,0x70,0x22,0xd6,0x83,0x0b,0x85,0x25,0x00,0xc5,0x55,0x3f +.byte 0xfa,0x7a,0xc9,0xaf,0x87,0xc1,0x1c,0x11,0x96,0x71,0x18,0xd8,0xdb,0xab,0x86,0x57,0x0a,0x16,0x23,0x32,0x40,0xd3,0xaf,0x17,0x55,0xe3,0xe7,0x01,0x65,0x1f,0x87,0xda,0xb5,0x46,0x67,0x18,0x34,0xcc,0x28,0x77,0xc3,0x12,0x62,0x6c,0x8b,0x8a,0x11,0x7a,0x5a,0xd1,0xdf,0xb3,0x13,0x6b,0x29,0xce,0xf8,0x03,0xba,0xad,0x7c,0x14,0x60,0x42 +.byte 0x17,0xf6,0x7b,0x0c,0xb7,0x5f,0xd6,0xc1,0xb5,0xa5,0x2b,0xb1,0x9f,0x6c,0x65,0x29,0xe5,0xf4,0x84,0x85,0x11,0x82,0xf1,0x4c,0xcd,0xff,0x99,0x29,0x53,0x7b,0x43,0x04,0x60,0xc4,0x6c,0x01,0x5c,0xcb,0x33,0x4f,0xdb,0xc4,0xad,0x8c,0xea,0xff,0xd6,0xcd,0x8e,0x85,0x6e,0x54,0xd5,0x18,0x63,0x84,0x78,0xea,0xff,0x08,0x95,0xdc,0x2a,0x07 +.byte 0xac,0xea,0x44,0x79,0x52,0x07,0xf3,0xf1,0x03,0x7f,0x71,0x53,0xd8,0x85,0xdb,0x70,0xde,0x5e,0xd5,0x9a,0x18,0x9f,0xcc,0x3f,0xc0,0xc0,0x49,0x82,0x70,0x09,0xce,0x29,0x04,0x0a,0x19,0x81,0xd9,0x81,0x22,0x71,0x48,0x8e,0x79,0x08,0x1c,0xb4,0xc8,0x7e,0x60,0x43,0x4a,0xe3,0xd5,0x6b,0x09,0x5c,0x01,0x6e,0x20,0x9e,0xd2,0xaf,0x80,0xb7 +.byte 0xa2,0x0a,0x5b,0x26,0x08,0x32,0x73,0xbc,0xc6,0xfd,0x06,0xaa,0x2e,0x55,0xa0,0x5b,0xa9,0x3c,0x85,0xb2,0x04,0xdc,0x9a,0x94,0x02,0x93,0x96,0x6b,0x3e,0xc3,0x5e,0x37,0x9b,0x6f,0xef,0xb9,0x65,0x52,0x42,0x1c,0xa7,0x84,0x09,0x0c,0x49,0x3a,0x95,0x06,0x94,0xd7,0xc7,0x40,0xf5,0xf1,0x69,0x41,0xfb,0xf8,0x57,0xb5,0x1e,0x0c,0xf3,0xd9 +.byte 0xb1,0x2e,0x58,0x33,0xbe,0xb1,0x3d,0x61,0xc6,0xca,0x01,0xe5,0xda,0x60,0x8f,0x87,0xf7,0x9a,0xb5,0x92,0xb4,0x8c,0x2a,0xaf,0xd4,0x1e,0x9c,0x97,0x39,0x83,0x99,0x4a,0x07,0x54,0x75,0x7d,0xde,0x72,0x06,0xc1,0x8f,0xb4,0xde,0x12,0x43,0xf2,0x62,0xae,0xe7,0xec,0xfe,0xb2,0xe5,0x63,0x35,0xb7,0xee,0xaa,0xf0,0x09,0xb8,0x61,0xf2,0x42 +.byte 0x28,0x87,0xd7,0x47,0xa8,0xfc,0x51,0x85,0x6f,0xa2,0xb1,0xa6,0x82,0xd6,0x0e,0x1b,0x3f,0xea,0xa1,0xe1,0x91,0xc9,0xd2,0x5b,0x3e,0xff,0x18,0x39,0x14,0xe0,0x44,0xda,0x3d,0xd8,0xca,0xdb,0xd9,0xbf,0x3f,0xa4,0xdb,0x99,0x2e,0x31,0x32,0x7c,0xf4,0x61,0x2f,0xa1,0xf9,0xa9,0xbe,0x26,0x94,0xea,0xb4,0xe3,0x25,0x8d,0x93,0x3b,0xa1,0x7e +.byte 0x1e,0x99,0x87,0x6c,0xaf,0x14,0x54,0xd0,0xc0,0x37,0x39,0x76,0x3c,0x07,0x2e,0xce,0x98,0x25,0x81,0xe4,0x01,0x0c,0x07,0x79,0x4e,0xcd,0x82,0x44,0x83,0x04,0x07,0xa6,0x52,0xb7,0x96,0x7c,0x43,0x12,0xe1,0xc5,0x12,0x18,0x25,0x47,0xe4,0x19,0x6d,0x26,0x1e,0x55,0x66,0xca,0x28,0x4c,0xfa,0xd2,0xd9,0xcc,0x7e,0xad,0x9f,0x2a,0x2f,0xc6 +.byte 0x6c,0x77,0xaa,0x0f,0x5b,0xeb,0x15,0x97,0x62,0x52,0x3c,0x6f,0x4b,0xf3,0xcc,0x80,0x7b,0x1f,0x1d,0x58,0xf8,0xfe,0xc1,0x8c,0x3b,0xe3,0xd7,0x05,0xc3,0xd6,0xa9,0xda,0xcf,0x85,0x1c,0x68,0xd6,0x6d,0x2b,0x06,0x30,0x5f,0x58,0x39,0xea,0xfa,0x99,0xaa,0x04,0x10,0x05,0xaf,0xb0,0xf7,0x32,0x60,0x8d,0xe4,0xd1,0x40,0x32,0xd6,0xa3,0xf2 +.byte 0xba,0x5a,0x79,0x58,0x92,0x75,0xf0,0x3a,0xce,0xb2,0xee,0x66,0x3e,0xe3,0xbe,0x4d,0x53,0x9d,0xbb,0xdb,0x45,0xf0,0x09,0xeb,0xd5,0x83,0x39,0x20,0x06,0xa9,0x44,0x35,0xeb,0x6d,0x9b,0xd9,0xa4,0xda,0x4b,0x9d,0xde,0x3d,0x26,0xa2,0x2d,0xcf,0x8e,0x3e,0xbc,0xb4,0x8c,0x3a,0xbf,0x56,0x7c,0x48,0x50,0xb5,0xc5,0xbe,0x84,0x5e,0x63,0x82 +.byte 0x5f,0x87,0x77,0x4a,0xa7,0xf6,0x66,0x07,0x42,0x6a,0xb0,0xcf,0x19,0xaf,0x6c,0x16,0x85,0x78,0x88,0x3b,0xa5,0xbc,0x42,0xd2,0x4c,0xdf,0x51,0x3b,0xc4,0x0e,0xf5,0xc5,0x70,0x57,0x40,0xf6,0xed,0xd2,0x37,0x3e,0x14,0x0c,0x31,0xda,0x94,0x87,0x6b,0xd9,0x8c,0x15,0x41,0xa9,0xc0,0x2a,0x61,0xd3,0x52,0xe0,0xb6,0x0a,0x83,0x6b,0x75,0x1b +.byte 0x1e,0xd1,0x7f,0x26,0x19,0x34,0x9b,0x70,0xc9,0xba,0xdc,0xa2,0x03,0x6d,0xc7,0xac,0xbd,0x2c,0x63,0x8a,0x7b,0xb1,0x62,0x51,0xc1,0x1d,0x54,0x0d,0x34,0x0e,0xfb,0xa6,0xb8,0x9d,0x79,0x4f,0xc3,0xaa,0x8d,0xa0,0xcc,0x80,0x96,0x86,0x37,0xd6,0x80,0x9c,0x3d,0x91,0xd0,0xe7,0xe2,0xb4,0x00,0xba,0x86,0xe9,0xeb,0x86,0xea,0x84,0x78,0x81 +.byte 0x20,0x29,0x28,0x02,0x4d,0xd8,0x1b,0x5e,0x4f,0x41,0xfc,0x13,0x3e,0x4c,0x7f,0x64,0x55,0x35,0x41,0x0d,0x74,0xc5,0x6a,0x7c,0x37,0x82,0x41,0xbd,0x67,0x39,0xd9,0x83,0xfa,0x7f,0x8c,0xe1,0x9f,0x23,0x0d,0xe4,0x1d,0x40,0xe6,0x6e,0x94,0x5d,0xec,0x77,0xf7,0x5e,0xb4,0xa1,0x03,0xfb,0xa0,0x0e,0xba,0xf8,0x28,0x50,0x3c,0x38,0x47,0xf7 +.byte 0xed,0x2d,0xe5,0x0b,0xa8,0x7a,0xbd,0xbf,0x7e,0x38,0xc0,0x60,0xe7,0x7e,0xb1,0x03,0xef,0x4a,0x8c,0xc7,0x98,0xf1,0x94,0xf6,0xa0,0x50,0xb2,0x0b,0x7c,0x66,0x0a,0x62,0x10,0x24,0xb0,0xa1,0x69,0x02,0x33,0x79,0xbf,0xd0,0xb5,0xcb,0x17,0x20,0x55,0x02,0x70,0x44,0x5b,0xac,0x20,0x35,0xea,0x05,0x2d,0x68,0x51,0xe7,0x5f,0x1b,0xcd,0x4c +.byte 0x33,0x4d,0x04,0x21,0xfd,0x06,0x67,0x82,0x60,0x98,0x1f,0x79,0xf4,0x28,0xe0,0xa8,0x18,0xeb,0xf5,0x86,0x58,0xe6,0x9f,0xb5,0x29,0x0f,0xe8,0x37,0xeb,0x09,0xf4,0xc6,0x08,0xf2,0xde,0x4d,0x96,0x48,0x62,0x36,0x63,0x10,0x3f,0x63,0xeb,0x44,0x84,0xc8,0xf5,0x74,0x19,0x03,0x50,0xf7,0x7c,0xd2,0x06,0x20,0x6e,0x9b,0xa2,0x37,0xb0,0x68 +.byte 0x78,0x31,0xb6,0x05,0xfa,0xc9,0xcd,0x1d,0x4c,0xbd,0x33,0xb7,0xf3,0x93,0x38,0x7d,0x5f,0x00,0x85,0x5b,0x10,0x7f,0xc4,0x3f,0x3e,0xfe,0x62,0xca,0x51,0x83,0x95,0xcf,0x00,0x65,0x83,0x0e,0xd3,0x78,0xd0,0x51,0xcb,0x70,0x34,0x42,0xc6,0x3a,0x04,0xb9,0x10,0x92,0xe0,0x09,0x06,0xb0,0x66,0x9b,0x37,0x02,0x8d,0x0d,0x3e,0x2f,0xc5,0x17 +.byte 0x6a,0x87,0x7d,0x48,0xa4,0xcc,0x55,0x20,0x7b,0x77,0x07,0xcf,0x44,0x2f,0x88,0x8a,0xcc,0xf2,0x5d,0xa6,0x3e,0x5f,0xda,0xe2,0xde,0xd2,0x7f,0x7f,0xb7,0x90,0x53,0x64,0x6b,0x79,0x42,0x52,0x69,0xc6,0xd6,0xaa,0x9f,0xf9,0x19,0xbe,0x65,0x10,0x99,0x49,0xaf,0x36,0x49,0x1b,0x8a,0x3d,0x7f,0xdb,0xa2,0x1a,0xb5,0xd6,0x34,0x51,0xc8,0xc8 +.byte 0x06,0xca,0xf6,0xb8,0x76,0xa8,0x9d,0x43,0xae,0xf0,0x51,0xe5,0x9a,0x42,0xa2,0x83,0xed,0x20,0x8d,0xe8,0x1c,0xca,0x15,0x4e,0x37,0x3f,0xd8,0x06,0xa0,0xe1,0xf8,0x05,0xfd,0x42,0xf3,0x7a,0x96,0x44,0x36,0x02,0xca,0x11,0x2a,0xc3,0x24,0x58,0xdd,0x85,0x55,0xb2,0xe5,0x1d,0x92,0xc2,0x2d,0x5f,0x7c,0xb5,0x02,0x37,0x7c,0x07,0x35,0x25 +.byte 0x2b,0x33,0x80,0xe2,0xd4,0xfd,0xc7,0xa7,0x19,0x7e,0xba,0x36,0xaf,0xa0,0x4e,0xab,0x8b,0x28,0x4f,0x3b,0x92,0x72,0x42,0x49,0xaa,0x3b,0x08,0x0f,0x1e,0xff,0x2d,0xbf,0x9c,0x48,0x16,0x72,0xbe,0x28,0x05,0x8b,0x3a,0x20,0x6b,0x38,0x43,0xa2,0x35,0xea,0xf7,0x4e,0x50,0xa0,0x43,0x40,0x5c,0xbf,0xe5,0x75,0x13,0x4c,0x36,0x61,0xa1,0x5d +.byte 0x46,0xd7,0x7a,0x94,0x06,0x2f,0x63,0x32,0x9c,0x6e,0x54,0x18,0x31,0x79,0xf2,0x83,0xcf,0xb4,0x47,0x40,0xe5,0x9a,0xd6,0x99,0x12,0xb3,0x61,0x3d,0x0f,0x5e,0xc8,0x95,0xa3,0x5f,0xc3,0xd5,0x6b,0x6e,0xa0,0xf2,0x2f,0xeb,0x66,0xd0,0x68,0x67,0x10,0x85,0x64,0x27,0xd8,0xb8,0x68,0x00,0x36,0xa5,0xab,0x3e,0xe1,0x43,0x65,0x81,0x2d,0xb9 +.byte 0x0f,0x87,0xfe,0xa1,0x52,0xe9,0x8d,0x82,0x3a,0xd1,0x10,0x52,0x34,0x48,0x7c,0x1c,0xc6,0xd0,0xfe,0xa0,0x1a,0x92,0x07,0x88,0x57,0x9e,0xd7,0x5e,0x9f,0xc8,0xb0,0x93,0x73,0x03,0x28,0x36,0x8c,0x25,0x8c,0x0f,0x4e,0x0f,0x5b,0x26,0x58,0xed,0x5c,0x33,0x75,0x20,0x08,0x11,0x47,0xe1,0x47,0x85,0x47,0xeb,0x54,0xbf,0x58,0xe3,0xd4,0x5b +.byte 0xf9,0xc6,0x5e,0x42,0x58,0xe6,0xaf,0x79,0x66,0x3c,0xa5,0xa3,0x30,0x33,0xe3,0xbe,0x21,0x4b,0x42,0x98,0x6e,0x44,0xd7,0x68,0xc0,0xff,0xbe,0x7f,0xc5,0xb3,0x4f,0x4a,0x93,0xb0,0x11,0x88,0xcf,0x36,0xb2,0x03,0xbe,0x30,0x52,0x71,0x20,0x0d,0x16,0xc5,0xbb,0xf5,0x92,0x12,0x67,0x6a,0x35,0x66,0x00,0x09,0xd7,0xc6,0x67,0xb0,0x6a,0x04 +.byte 0x19,0x3e,0xbf,0xe2,0x82,0x74,0x78,0x2f,0x77,0x44,0xdc,0xad,0x0f,0x66,0x2a,0x23,0x62,0x2c,0x5a,0x4e,0x3a,0x82,0x2a,0x75,0x16,0x0d,0x74,0x64,0x35,0x53,0xc5,0xf6,0xda,0x36,0x44,0xba,0xe2,0xfa,0x1e,0xc2,0xcf,0x29,0x01,0x36,0x66,0xc3,0xca,0x40,0xf7,0xc4,0xba,0x67,0xac,0xf6,0x17,0xcc,0xa3,0x96,0x2d,0x08,0x5f,0x0a,0xea,0x5e +.byte 0x97,0xdc,0xc8,0xf9,0x59,0x24,0x6e,0xc5,0x0b,0x02,0xb9,0x1a,0xde,0xac,0x60,0x1d,0xaf,0x9f,0x5a,0x6f,0xe1,0xa6,0xdf,0x75,0xc5,0x9b,0xb7,0xde,0xa4,0xf7,0xf6,0xa4,0xdc,0xb6,0x96,0x08,0xde,0x2a,0x0e,0xb3,0x9d,0xf5,0x75,0x7d,0x7e,0x96,0x91,0x79,0xd4,0xa7,0x30,0x97,0x3a,0xbd,0x7c,0xe0,0xc5,0x87,0x24,0xb0,0x65,0xb7,0x58,0x00 +.byte 0xd9,0x0e,0x97,0xa6,0xa4,0x6a,0xe8,0x0a,0xac,0xac,0x9f,0x3a,0xe3,0x2a,0x9a,0x43,0x41,0x92,0x6e,0x0e,0xc4,0x63,0xc3,0x18,0xb6,0xe1,0xef,0x3d,0xe8,0x0b,0xb0,0x9f,0x2e,0x19,0xa0,0x98,0x98,0x34,0xf8,0x86,0x6d,0xc5,0x8c,0x41,0x26,0xb7,0xf2,0x1d,0xd4,0x72,0x39,0xeb,0x79,0x06,0xaf,0x53,0xaa,0x34,0x80,0x53,0xf8,0x1b,0xf4,0x53 +.byte 0x19,0xfa,0x16,0x8b,0x39,0xea,0x63,0x7f,0x38,0xc4,0x66,0x1d,0xd1,0x90,0xe4,0x2f,0x20,0x43,0x0d,0x5f,0x98,0xcc,0xae,0xef,0x86,0xc8,0xe5,0xf6,0xd2,0xa5,0x49,0xd0,0x3f,0xb5,0x7e,0x42,0xb5,0x6e,0x5e,0x13,0xa5,0xb4,0x71,0x2c,0x5d,0x57,0x24,0x06,0xd2,0x29,0x7c,0x4c,0x90,0xb6,0xea,0xdb,0x62,0xa4,0x2c,0x6c,0x38,0x57,0x97,0xbd +.byte 0xfd,0x41,0x6e,0x26,0xc1,0xe1,0x6b,0xbb,0xf0,0xe7,0x71,0xf1,0xcf,0x6a,0x7f,0xfa,0xe7,0xfb,0x17,0xe7,0x81,0x19,0x9a,0xf2,0xf6,0x86,0x22,0x4f,0x62,0x59,0xd6,0xc2,0x33,0xbd,0x11,0xe7,0x07,0x3a,0xfe,0x74,0x0d,0xf8,0xd9,0xdb,0xbd,0x05,0xf4,0xf4,0xb1,0x41,0xc9,0xb3,0xf8,0x6a,0x7b,0x98,0x08,0x6c,0xce,0x4c,0x28,0xbf,0x8c,0x77 +.byte 0x68,0xdc,0xee,0xf7,0x11,0xde,0xfc,0x5a,0x58,0x4f,0xf4,0x74,0x9d,0x5b,0x78,0xc3,0x78,0xe5,0x5e,0x26,0x83,0x40,0x17,0x80,0x2a,0x02,0xa4,0xf1,0x0f,0xa0,0xc8,0x22,0xe6,0x09,0x3a,0x52,0x74,0xf0,0xb9,0xb9,0x60,0xaf,0x20,0xa6,0x7e,0x88,0xf4,0xc2,0x38,0xa2,0x21,0x73,0xa9,0x18,0x3f,0x7a,0x04,0x7b,0xc4,0xcd,0x68,0xd9,0x83,0xa4 +.byte 0x8e,0x54,0x0d,0xbc,0xee,0x8b,0x39,0x93,0x66,0xa2,0xd6,0x76,0x4a,0xb2,0x33,0x4f,0x61,0x53,0xde,0x3b,0xff,0x47,0xcb,0x87,0xd9,0x21,0xd0,0x82,0x64,0x54,0xdf,0xf2,0x67,0x62,0x40,0x33,0xc7,0x0d,0xea,0x98,0xaa,0x95,0xfb,0xa9,0x0e,0x90,0xa5,0xd9,0x54,0x81,0x86,0xad,0x9e,0xa4,0x4d,0x36,0xe1,0x77,0xf2,0xe3,0x0a,0x54,0x1a,0x57 +.byte 0x9d,0x62,0x5e,0x0e,0x00,0xc8,0xa6,0x1e,0xf3,0x43,0xe6,0x20,0x0d,0x6a,0x8e,0x90,0x1d,0x4d,0xac,0x2f,0x9f,0x1c,0xb7,0x30,0xec,0x5c,0x99,0x78,0x6f,0x3b,0xe7,0xe0,0x28,0xb9,0x97,0xc5,0x6a,0xf2,0x17,0xc2,0x11,0xac,0x1a,0xe2,0xca,0x57,0x49,0x64,0xc8,0xc7,0x66,0x43,0x8d,0xc8,0xa7,0x0e,0xfc,0xcf,0x05,0x2f,0xae,0x4b,0xfe,0xe4 +.byte 0xbe,0x9c,0xe7,0xe6,0xa8,0x36,0x49,0x0d,0x9c,0x60,0x39,0x0c,0xfd,0x41,0x5b,0xc7,0xa4,0xa5,0x30,0x89,0xe5,0x10,0xf6,0xea,0xf8,0x2c,0xf2,0x3e,0xb1,0x96,0x81,0xa7,0x32,0x8b,0x39,0x14,0x15,0x36,0xfc,0x55,0x3c,0x22,0xcf,0xa3,0x98,0x90,0x68,0x13,0xd8,0x3f,0xf2,0x53,0x19,0x3e,0x9a,0x0c,0x1f,0xc6,0x29,0x43,0x46,0x23,0x58,0xea +.byte 0x49,0x49,0x15,0x46,0x8e,0x63,0x30,0x1f,0x3e,0x2a,0xa0,0x18,0xfd,0x28,0xc5,0x32,0x77,0x75,0xac,0x6e,0x5d,0x39,0xa9,0x44,0xce,0xfe,0x39,0xa6,0xec,0xde,0x69,0xde,0xfa,0xc8,0x40,0x44,0x34,0x29,0x15,0x19,0xa7,0xbe,0xd6,0x5b,0xfd,0x1f,0x7b,0xb9,0x88,0xf1,0x14,0xcf,0x42,0xc5,0xa7,0xa7,0x0e,0x6b,0x6e,0x86,0xb2,0x7c,0x23,0x8e +.byte 0xf6,0xae,0xde,0x3c,0xd7,0x26,0x5e,0xde,0x31,0x94,0xc1,0x19,0x65,0x55,0x03,0x73,0xba,0xdc,0x69,0x95,0x9c,0x9d,0x8e,0x59,0xd8,0x51,0x61,0x9f,0x8f,0xf4,0x29,0x43,0x4b,0x6a,0x75,0xb3,0x4b,0x9d,0xcc,0x46,0xd2,0x6e,0x00,0x49,0x4f,0xf0,0xac,0x80,0x55,0xc0,0x0c,0xbf,0x18,0x52,0x75,0x76,0x3b,0xac,0x92,0x83,0x69,0x1b,0xb4,0x15 +.byte 0xe5,0x9e,0xde,0x10,0x30,0x30,0x0e,0x85,0xc7,0xf9,0xae,0xbc,0x9e,0xaf,0x4b,0xee,0x27,0x6b,0xa5,0x6d,0xe4,0x8e,0xed,0xdd,0x95,0xaa,0x85,0xe2,0xf5,0x38,0x15,0x50,0xd3,0xcd,0x2c,0x88,0x6c,0x2b,0x14,0x37,0x74,0x2d,0x6d,0x30,0xec,0x96,0x78,0xae,0x80,0xb3,0xd9,0x84,0xc1,0xd6,0x71,0x90,0xe4,0x8d,0x3a,0x7c,0x9c,0xc4,0xf5,0xa0 +.byte 0x20,0x7e,0xa2,0x0e,0x75,0x7c,0x25,0x7a,0x7e,0x2b,0x2e,0xdb,0x12,0x23,0x73,0x6a,0x8e,0xe3,0xd7,0x47,0x94,0xfb,0xcc,0xe4,0x5a,0x8c,0xfb,0xdc,0x46,0xb3,0x4a,0x42,0x15,0xe0,0xaf,0x6e,0x81,0x72,0x72,0x04,0x52,0x09,0xc5,0x8b,0x6e,0xdd,0x7d,0xff,0x27,0xa8,0xc1,0x94,0xb5,0x33,0x59,0xc2,0x7d,0x59,0x6c,0x3c,0xaa,0xd9,0xd8,0x05 +.byte 0x43,0x7e,0x8a,0x47,0xdd,0x76,0x36,0xe3,0x05,0x49,0xd1,0x8f,0xdf,0x45,0x46,0x63,0xff,0x17,0xb4,0x52,0xc8,0xee,0x4d,0xf5,0x74,0x65,0xc6,0xca,0x19,0xfd,0xb9,0x51,0xc8,0xc9,0x96,0xd4,0x06,0xd4,0x09,0x1e,0xab,0x6d,0x1b,0x26,0x61,0x80,0x5b,0xa8,0xcb,0x62,0x92,0x5a,0x1a,0x8e,0xa4,0xb7,0x25,0x19,0x96,0x63,0xd5,0xc3,0xc9,0xdc +.byte 0x04,0x83,0x62,0x31,0xe3,0x76,0x00,0x4d,0xf8,0xb3,0x98,0xae,0x4d,0x1a,0x38,0xe3,0xa1,0x27,0x52,0x87,0xbe,0x2c,0x93,0x45,0xd1,0xab,0x56,0xc6,0xf5,0xbc,0xb5,0xe6,0x9c,0xe1,0x1b,0x37,0x42,0x08,0xe7,0x71,0xb5,0xa4,0x67,0xf9,0x48,0xd4,0xc4,0x10,0x25,0x53,0x9c,0x03,0xfc,0x6d,0x5e,0x62,0x5e,0x6d,0x56,0xbc,0x78,0x11,0x0a,0x6d +.byte 0x1b,0x7a,0xdc,0x62,0xb5,0x58,0x86,0x15,0x71,0xff,0x11,0x33,0x94,0x2b,0xa6,0xc7,0x68,0xd5,0x68,0xda,0x5b,0xd5,0xb7,0x38,0x6c,0x1c,0xf4,0x07,0x39,0xef,0x1f,0x72,0x0a,0xb3,0x12,0x13,0x25,0x86,0xd3,0xf8,0x9f,0xb5,0x40,0x58,0xe7,0x5e,0x9f,0xa0,0xbc,0xd7,0xab,0x4f,0xf3,0x94,0xcf,0x0f,0x5a,0x4c,0x98,0xb4,0x70,0x35,0x62,0xee +.byte 0x33,0x24,0x72,0x31,0xd4,0x06,0xd9,0xb4,0x1c,0x1e,0x0f,0xa7,0x48,0xc7,0x75,0x45,0x40,0x02,0xd0,0x60,0x32,0x29,0x4d,0x61,0x7a,0xee,0x65,0x35,0x2b,0xe5,0x50,0xac,0x82,0xdb,0xf7,0x9c,0x8f,0x82,0xe4,0xf0,0xbd,0xdb,0x00,0x3d,0x3a,0x3d,0xa2,0xc3,0x2d,0x0e,0x51,0x20,0xdb,0xdb,0x8d,0x15,0x03,0xbd,0xcb,0xcb,0x24,0x81,0xc5,0xdb +.byte 0x05,0x39,0x48,0xb8,0x3c,0x93,0x35,0x10,0xef,0x19,0xba,0x09,0x9e,0xff,0xf9,0x3f,0x0c,0xdc,0x96,0x98,0x32,0x26,0x76,0xe7,0xfa,0xaa,0xdf,0xdc,0xb9,0x15,0x44,0x42,0x9a,0x8c,0x6c,0x88,0xea,0x43,0x63,0xb5,0x79,0xb6,0x50,0x30,0x78,0xea,0x70,0xba,0x33,0x36,0x8f,0x8c,0xe5,0x78,0xfd,0xbc,0xc0,0xbd,0xde,0x3a,0x3d,0xe6,0xe6,0x57 +.byte 0x0f,0x29,0xf2,0x82,0x05,0xf2,0x5c,0xfd,0x33,0xc1,0xb2,0x2e,0xc2,0xc0,0x42,0xa2,0xc8,0xa5,0xf9,0x70,0x05,0xff,0x7b,0x8d,0xb9,0x68,0xc3,0xf6,0x74,0x00,0xcd,0x9d,0x70,0xfa,0x62,0x34,0xe5,0x05,0xe8,0x5f,0x53,0x9b,0x69,0x01,0x86,0xb9,0x1d,0x68,0x80,0x89,0x51,0x52,0x0d,0xe8,0x28,0xa1,0xdd,0x62,0x2b,0xf3,0x53,0x74,0xaa,0x98 +.byte 0xdb,0x7e,0x74,0x44,0xeb,0x25,0xe7,0xde,0xc4,0x29,0x14,0x11,0x7b,0xc6,0xef,0x14,0xe4,0x04,0xd0,0xf4,0x11,0xca,0xdc,0xdc,0xe6,0x3f,0x9a,0xc9,0xe2,0x0e,0x67,0x30,0x78,0x65,0x94,0x5a,0xa1,0x24,0xd6,0x90,0x2f,0x1c,0x13,0x46,0xf5,0xb5,0xf9,0x74,0x56,0x3e,0xd5,0x1b,0x09,0xb3,0x04,0xbe,0x89,0x00,0xbd,0xe0,0xba,0x13,0x05,0xd1 +.byte 0x98,0xa7,0x93,0x09,0xc5,0x96,0x46,0xb5,0x5a,0x05,0xac,0x1e,0x66,0x03,0xf0,0xaa,0x3d,0xc2,0x54,0xa3,0xc4,0x2b,0x0d,0xa3,0xe4,0x92,0xd6,0xd0,0x44,0xa6,0x37,0x30,0xa5,0xac,0xc2,0xc8,0x58,0x2a,0x2c,0x18,0x68,0x8d,0x9b,0x4f,0x99,0xd0,0x55,0x41,0xf4,0x84,0x3c,0x69,0xda,0x3c,0x6d,0x43,0xb3,0x85,0x15,0x1f,0xdb,0x58,0x0b,0x71 +.byte 0x33,0x24,0xbb,0x21,0x43,0x19,0x16,0xeb,0x83,0xde,0xe5,0xb7,0x68,0x9e,0xb9,0xd9,0xf6,0x2e,0xae,0xdd,0x88,0x2c,0x18,0xd7,0xc3,0x72,0x8b,0xbe,0xaf,0x8d,0xfd,0xcd,0x2f,0x8e,0x3e,0x2b,0xa4,0x20,0x11,0x9d,0x00,0x4f,0xea,0xf0,0xaa,0x2d,0xf3,0x9d,0xfd,0x11,0x7b,0xac,0x2c,0x66,0x74,0x03,0xe5,0xcc,0x70,0x9f,0xfb,0xb7,0x5a,0x16 +.byte 0xc3,0x05,0x61,0x7c,0x8c,0x73,0xcc,0x9c,0x6a,0x2f,0xee,0xae,0x85,0xc9,0x51,0x91,0x13,0xa4,0x09,0x82,0x4d,0x62,0x09,0x24,0x25,0x35,0x1f,0x82,0x88,0xbb,0xdd,0x16,0x5e,0x8d,0x98,0x5f,0x07,0x49,0x32,0x96,0xb7,0xee,0x85,0xb0,0x7b,0xfd,0xf5,0x35,0x4b,0xa9,0xd4,0xee,0xf2,0x37,0xd1,0xfe,0x62,0xf5,0x52,0x13,0xb4,0xb2,0xce,0xc4 +.byte 0xe0,0x09,0x78,0x48,0xd5,0xc6,0x5d,0x36,0x1b,0x90,0x3a,0x6a,0x3c,0x21,0x50,0xf0,0x0a,0xe9,0x46,0x24,0x45,0xc1,0x5e,0x76,0xa3,0xf9,0x70,0xb8,0x62,0x4d,0x0e,0x92,0x87,0x4a,0x6a,0xf9,0x46,0x91,0x64,0xfe,0x7f,0x53,0x24,0x7e,0xc7,0x3e,0xb0,0x37,0x1a,0xc8,0xd6,0x33,0x0b,0x5f,0xa5,0x30,0x03,0x0e,0x85,0x3d,0x7b,0xc1,0xa1,0x18 +.byte 0xb3,0x8c,0xfe,0xca,0x3e,0x71,0xd8,0x92,0x46,0x49,0x60,0x54,0xd9,0x7b,0xf7,0xc3,0x99,0x2f,0xb5,0x79,0xcc,0x32,0x40,0x7d,0x3d,0x0b,0xc6,0x6f,0x04,0xd9,0xf1,0xdd,0x64,0xf5,0xc4,0x60,0x14,0x04,0x5c,0x3a,0xa4,0xda,0xdc,0xad,0x8f,0xc2,0x44,0x37,0x96,0x63,0x00,0xf7,0xb1,0xc0,0x7c,0x8c,0x12,0xb5,0x3a,0xec,0xc0,0x16,0xd8,0x24 +.byte 0xe9,0xc0,0xc4,0xfa,0xb1,0x85,0x5b,0xe3,0x62,0x24,0xa1,0x75,0x92,0x82,0x04,0x59,0x10,0x50,0x4b,0x51,0x51,0x3e,0x39,0xba,0x6d,0xa0,0x65,0x2d,0xfc,0x23,0x1c,0x9d,0x69,0x22,0xe7,0x15,0xfa,0xba,0x76,0xbf,0x53,0x62,0xb0,0x0d,0x0d,0x5d,0x55,0x00,0xbc,0x58,0x01,0xed,0x37,0x53,0xb9,0xa6,0x0d,0x71,0xab,0xec,0x42,0xbf,0x3b,0x52 +.byte 0xfd,0xae,0xe9,0x6d,0x65,0x07,0xf3,0xd9,0x32,0x66,0xc1,0x66,0x1a,0x18,0x73,0x86,0x01,0xaf,0x1d,0xd1,0xd0,0xcf,0xb1,0xea,0x54,0x23,0xdf,0xf2,0x4d,0x7d,0xc7,0xfe,0xfe,0x7d,0x1d,0x2c,0x1b,0xb6,0xa7,0x7a,0x9e,0x90,0x3a,0x3b,0xb0,0x6c,0xb0,0xd2,0xd1,0xd0,0x6a,0x94,0x4c,0x84,0x1c,0x45,0xae,0xda,0x16,0xa9,0x2e,0x63,0x19,0x26 +.byte 0xf6,0x74,0xd3,0x6f,0x9b,0x9c,0x0c,0xb8,0x85,0x9f,0xeb,0x99,0xbc,0xab,0xff,0xc3,0x75,0x86,0xe5,0x3a,0xa0,0xf9,0xfc,0x6b,0x3d,0x5a,0xad,0x46,0x7f,0x17,0x0e,0x94,0xb7,0xa4,0x43,0x61,0x54,0x76,0x29,0x78,0xe4,0x41,0x91,0xbe,0xa5,0x36,0x39,0xdf,0xdc,0xcc,0x8e,0x42,0x40,0x08,0x51,0x26,0xb0,0x53,0x5d,0xb4,0x7a,0x18,0x8e,0xb3 +.byte 0xae,0xf2,0xe0,0xef,0x63,0x51,0x3a,0xbe,0x4c,0x2d,0xce,0xc7,0xe2,0x1b,0xc2,0x40,0xf3,0x82,0x61,0xf0,0x1b,0x05,0xdd,0x1e,0xae,0xed,0x87,0x2c,0xe5,0xad,0xc7,0xec,0xb5,0x63,0xf7,0x3a,0xf9,0xb7,0xd8,0x4e,0xa7,0xef,0xac,0x6d,0x9c,0x27,0xd9,0xcc,0x66,0xf4,0x75,0x40,0x94,0x8b,0x78,0x4f,0x61,0x4f,0x31,0x49,0x5c,0x96,0x72,0x58 +.byte 0xcf,0x55,0xb2,0x66,0x16,0x29,0x27,0x24,0x39,0xc3,0x64,0xb1,0xdf,0x69,0x87,0x85,0x46,0xe3,0xd0,0x82,0x53,0x1a,0xc2,0xf1,0x3a,0xab,0xdf,0xe5,0x29,0x17,0xdd,0xfe,0xbf,0xf9,0x3d,0x7a,0xfb,0xe7,0x74,0x49,0xa9,0xef,0x61,0x93,0x4c,0xfa,0x30,0xea,0x65,0xa7,0x61,0x32,0x88,0x74,0x12,0xc1,0x91,0xf1,0xc2,0x1f,0x38,0x6a,0xfd,0x0d +.byte 0xc8,0x6f,0x87,0xe6,0x15,0x55,0x26,0x13,0x86,0x13,0xb9,0x01,0x98,0x34,0x1c,0x2d,0x1d,0x30,0xae,0x7d,0x8e,0x07,0x7d,0x4d,0xe9,0xfd,0x58,0x18,0xc3,0xa6,0x8e,0x87,0x98,0x33,0xcc,0x80,0xd7,0x70,0x07,0x6a,0x4a,0x97,0xef,0x56,0xf3,0x9d,0xf9,0xef,0x6f,0xa8,0x71,0x7f,0x61,0x07,0x1d,0x9d,0x51,0x06,0x86,0x4a,0x35,0x9e,0xab,0x2c +.byte 0x66,0x8d,0x61,0x62,0xbd,0xed,0x6c,0x76,0x7c,0x67,0xe0,0xe1,0x6e,0x90,0x74,0xb1,0xa6,0x26,0x0d,0x01,0x1f,0xe9,0xb4,0x30,0x9a,0x7e,0x37,0xd1,0xea,0x97,0x9a,0x0f,0x9e,0x8d,0x52,0xd4,0x96,0x36,0x5b,0x6f,0x40,0xbb,0x9e,0x44,0xb4,0x6e,0xee,0x15,0x70,0xef,0x66,0x81,0xf5,0xb4,0xe7,0x69,0xb0,0x40,0x44,0xdc,0x70,0x1e,0x4d,0x3c +.byte 0x9b,0x19,0x2a,0x97,0xbd,0xb2,0xd2,0x9b,0x98,0xac,0x36,0xf1,0x05,0x48,0xdc,0x5d,0x21,0xfb,0x17,0xe3,0x9c,0x3c,0xbf,0xfd,0x1d,0x39,0x1e,0x5b,0x2a,0xa2,0xb3,0x7d,0x4f,0xdf,0x3a,0x41,0x7a,0x31,0x01,0xc2,0xe5,0xd0,0x06,0x50,0x29,0x05,0xce,0xb8,0x28,0xb7,0xdd,0x83,0xc8,0xaa,0x39,0x78,0xc7,0x7d,0x9e,0xcd,0x9a,0x07,0x71,0x7e +.byte 0x20,0x92,0x82,0xce,0x49,0x90,0xce,0xef,0x53,0xa7,0x48,0x2a,0x69,0x86,0xa1,0x5e,0x35,0xe8,0x7d,0x10,0xb8,0x5e,0xa6,0x9a,0x69,0x6f,0x32,0x75,0xf3,0x4a,0xee,0x9c,0x06,0x5c,0xdd,0x84,0x7e,0x38,0x00,0x67,0x39,0x42,0xed,0x72,0xda,0xe3,0x6b,0x5a,0xf4,0xc9,0x80,0x3e,0x0e,0xda,0x39,0xfa,0x83,0x2c,0x60,0x69,0x87,0x85,0x05,0xfc +.byte 0xf4,0x2b,0xd4,0x0a,0xad,0x86,0xca,0xd5,0xf0,0x92,0x1f,0x43,0x3c,0x0e,0xac,0x99,0xf3,0x67,0xa3,0x41,0x6d,0xb9,0x29,0x70,0x57,0x62,0x9f,0x45,0x91,0x72,0xe5,0x53,0xcc,0x89,0x80,0x3f,0xbc,0x1c,0x66,0x21,0xdd,0x90,0x2b,0xa4,0xca,0x2f,0xf0,0x0f,0x9f,0xd0,0xe9,0x28,0xe2,0xd9,0x36,0xaf,0xf9,0x01,0x81,0xce,0xb4,0xe7,0x71,0xfd +.byte 0x92,0xf8,0x56,0x2e,0xc3,0xc8,0x8b,0x54,0xc8,0xc7,0x40,0x79,0x27,0x06,0x18,0x4a,0x7b,0x88,0x3f,0xd6,0x4f,0xd4,0x66,0x1e,0x1f,0x9a,0x14,0x1a,0x0a,0x98,0xc7,0xd6,0x25,0x83,0x37,0x8a,0x5d,0xb2,0x88,0x39,0x68,0x7b,0x1f,0x4e,0x0a,0xed,0x11,0x1a,0x77,0x9b,0xcb,0xb6,0x7d,0x5c,0x36,0xac,0x07,0x07,0x9f,0x05,0xcf,0x90,0x8f,0x3f +.byte 0x4b,0xc5,0xf9,0x42,0x90,0xb4,0x42,0x26,0xa1,0x2c,0x66,0xc6,0xb8,0x98,0x80,0x8a,0xbb,0x9b,0x41,0xe4,0x44,0x8c,0x5e,0x56,0x33,0xe3,0xba,0xcf,0x31,0x8e,0x28,0xd7,0xc5,0xd1,0x3b,0x68,0x47,0x10,0xae,0xda,0xc3,0xbd,0x20,0xe7,0xac,0xe2,0xe1,0xe0,0x7a,0x4b,0x83,0xb1,0xab,0x72,0xf4,0xc4,0xe7,0x0d,0x02,0xaf,0x5b,0x74,0xac,0xda +.byte 0x9d,0xce,0x26,0x1f,0x79,0x05,0x67,0x7e,0xc4,0x98,0x3f,0xde,0xa6,0xf3,0xfe,0x59,0x65,0x88,0xfb,0x14,0x3a,0x43,0x91,0x04,0x1a,0x78,0x7e,0x08,0xba,0x55,0x50,0xc7,0x65,0xd3,0x8e,0xda,0x0a,0xee,0x8e,0x11,0xa9,0xf6,0x9e,0xd3,0x23,0x97,0x05,0x0c,0x98,0x2a,0x36,0x25,0xec,0x5e,0x0b,0xf9,0x31,0x80,0x00,0x8a,0x70,0xf1,0xaa,0x7c +.byte 0x73,0x02,0x98,0x8d,0x42,0x27,0x53,0xf1,0x83,0x37,0xd0,0x2d,0xfa,0xc7,0x4b,0xa5,0xb3,0xc9,0xb8,0xd4,0x56,0x94,0x5a,0x17,0x2e,0x9d,0x1b,0x46,0xaa,0xb6,0xd9,0x2a,0x3a,0x6c,0xaf,0x24,0x59,0xfd,0x08,0xc5,0xca,0x0c,0x79,0x3f,0xe7,0x91,0x8d,0x9d,0x59,0x91,0xd8,0x5f,0xda,0x6d,0x35,0x7b,0x52,0x47,0x35,0xf9,0x81,0x86,0x2c,0xee +.byte 0x1a,0x14,0xc5,0x1f,0xb6,0x85,0xb5,0x74,0xe9,0xb7,0x4f,0xde,0xcd,0x93,0x2d,0xf3,0x10,0xbe,0x34,0xfa,0xca,0x15,0x9f,0x02,0x9d,0x19,0x72,0x7c,0xd6,0xfd,0x81,0x43,0x49,0xb5,0x2b,0x52,0x31,0xd6,0x2c,0x28,0x2e,0x83,0x6d,0xd3,0x0f,0x6e,0x03,0x65,0xf0,0x8a,0xdd,0x0a,0xec,0x58,0x10,0x45,0x5d,0xac,0xda,0xf5,0x32,0x5d,0x18,0x26 +.byte 0xcc,0x2e,0xcf,0xd3,0x41,0x2d,0x1d,0xba,0xdf,0xd8,0x96,0x8f,0x18,0x0f,0xa7,0xec,0x8e,0x6e,0x84,0x2c,0xd6,0x1f,0x4e,0x76,0xfe,0xf3,0x14,0x27,0x4b,0x5b,0x3d,0x7c,0x1c,0x59,0x46,0x97,0x1b,0x59,0x5a,0x2d,0x57,0x80,0x17,0x98,0x7d,0x92,0x5d,0x2f,0x98,0x53,0x10,0x59,0x8e,0x7f,0x55,0x64,0x15,0x62,0x2c,0x16,0x0b,0x8d,0x48,0x54 +.byte 0xaf,0x96,0x17,0xa9,0x8e,0x2c,0xcf,0x41,0x8c,0x8a,0x37,0x55,0xe4,0xf9,0x20,0x3b,0x21,0x5c,0x86,0x8d,0x3f,0xa6,0x5e,0x43,0xf3,0x3b,0xf7,0x7c,0x27,0x88,0x8e,0xa5,0x15,0xca,0x0e,0x9e,0x85,0x30,0x17,0x0d,0xcf,0xf0,0x82,0x87,0xd6,0xe8,0xd2,0xad,0xe9,0x4d,0x3f,0xc9,0x58,0x19,0xf9,0x99,0x4d,0xf9,0x6b,0x1b,0xd3,0xf9,0xdd,0x52 +.byte 0xd1,0x3c,0x64,0x46,0xfd,0x4f,0x2e,0x63,0x39,0xd8,0xe4,0xeb,0xfc,0x07,0xf1,0xa5,0xff,0x84,0xa8,0x92,0xfe,0xbc,0xc5,0x36,0x91,0x2b,0xec,0x2c,0xad,0xf0,0xac,0xc5,0xb0,0xad,0x8a,0x0d,0x6a,0xd9,0x29,0x7a,0xb0,0x87,0x0c,0xaf,0xda,0x75,0x84,0x25,0xbe,0xee,0x0d,0xfd,0x4c,0xf5,0x2d,0x46,0xe9,0x17,0xb9,0x9d,0x3d,0x4b,0x8f,0x3a +.byte 0xe9,0x49,0xb6,0x32,0x99,0x27,0xe2,0x4d,0xff,0x2f,0x2e,0xd5,0x69,0x52,0x56,0x20,0x0a,0xbf,0x62,0x14,0x34,0xfb,0xbf,0x95,0xe8,0xfe,0xb1,0x9f,0x43,0x30,0x02,0x03,0x9e,0xa8,0xe2,0x68,0x64,0xdd,0x37,0xfc,0xb9,0x0f,0x85,0x8c,0x36,0x45,0xdb,0x7c,0x8b,0x97,0x50,0xc3,0x75,0xa1,0xcf,0xf4,0xc2,0x46,0xd8,0xa1,0x8c,0xab,0x8d,0x3a +.byte 0xde,0xe7,0x9e,0xd2,0x1e,0x2d,0x8b,0xe4,0x31,0xe3,0x12,0x3f,0x9f,0x0b,0x2c,0x95,0x75,0x8d,0xf1,0x24,0xb9,0xdf,0x1e,0x64,0x35,0x45,0x2a,0xc2,0xf9,0x96,0x5d,0x10,0x64,0x32,0xae,0xe9,0xf8,0x71,0xd4,0x2d,0x6b,0xc6,0xde,0x08,0x1e,0x5d,0x51,0xf1,0xe7,0xfd,0x3c,0x22,0x43,0x59,0x82,0x83,0x13,0x75,0x36,0xef,0x81,0xe4,0xcf,0xa8 +.byte 0xb8,0x30,0x16,0x44,0xae,0x55,0x06,0xdd,0xb9,0x60,0x3f,0x75,0xc6,0xd1,0x73,0xa9,0xea,0xc9,0x64,0x2b,0x8a,0xde,0x44,0x4b,0x3d,0xc3,0x31,0x12,0x84,0x9a,0xe3,0xda,0x24,0x82,0x99,0x00,0x6d,0x8e,0xb8,0x26,0x82,0xa6,0xc2,0x37,0x6c,0x2a,0x1d,0xcf,0x6d,0x18,0xc7,0xee,0x27,0xca,0xe7,0xad,0x95,0xed,0x7d,0xe0,0xe0,0x6f,0x45,0xc3 +.byte 0x8a,0x2f,0x08,0x49,0x7e,0x09,0x9e,0xc1,0xb7,0x1e,0x8f,0x57,0x61,0xf8,0x3e,0xea,0xd7,0x47,0xfb,0xd0,0xda,0xaa,0x04,0xf9,0x06,0xbb,0xa3,0x80,0x68,0x89,0xb0,0x7f,0x18,0xf3,0xd2,0xeb,0xee,0x48,0x30,0x6a,0x24,0xc8,0x71,0x43,0xc3,0x50,0xcc,0x85,0x68,0xf5,0xca,0x44,0x34,0x43,0xaa,0x2e,0x4f,0x02,0x1b,0x23,0x4f,0xe9,0x07,0x02 +.byte 0xa2,0xfa,0x24,0x57,0x70,0x4e,0x1a,0x78,0x03,0xa2,0xdd,0x53,0x50,0x82,0x05,0xb1,0x0f,0xcb,0x9e,0x2e,0x58,0x04,0x62,0xc8,0xac,0x71,0x31,0x56,0x0f,0xc7,0x70,0x32,0x53,0xda,0x51,0xc3,0x15,0x78,0x82,0xb6,0xe8,0x6e,0x32,0xeb,0x39,0xab,0xba,0x67,0xcc,0xbc,0x99,0x58,0x88,0xc4,0x60,0x0d,0x0b,0xc1,0xfa,0x6f,0x40,0x85,0x04,0xdf +.byte 0x5f,0x17,0x69,0xf1,0xbd,0x44,0x97,0xc8,0x62,0x19,0x49,0x1f,0x23,0xcb,0x3d,0x17,0x04,0xf2,0xbd,0x58,0x15,0xa6,0x37,0x3a,0x3f,0x77,0x98,0x32,0x40,0x8a,0x72,0xf0,0x41,0x0b,0xad,0x88,0xba,0xd3,0xae,0xdc,0x3b,0x9a,0x37,0x89,0xa5,0x09,0xe5,0xbb,0xf2,0xf8,0x5d,0xa5,0xed,0xe8,0x39,0x7b,0xed,0x2b,0x90,0xd6,0x6c,0xd3,0xfa,0x69 +.byte 0xa7,0xca,0x09,0x83,0x15,0x8d,0xd8,0xe3,0x81,0x03,0x4e,0x2d,0xd8,0x96,0x3b,0x4b,0x18,0x91,0xac,0x5f,0x22,0xe6,0x9d,0x4b,0x09,0xaf,0xf0,0xdf,0x16,0xa2,0xf1,0x2c,0xd9,0x35,0x8a,0x6e,0x85,0x7a,0xbc,0xc7,0x10,0xd1,0x5f,0x8a,0x53,0x9c,0x8e,0xbc,0x8c,0x15,0xb3,0x8a,0xb0,0x0b,0x74,0x40,0x2a,0x5f,0x46,0x71,0x1c,0x0b,0xee,0x08 +.byte 0xae,0x17,0x26,0x1e,0xcf,0xbf,0x3d,0xa0,0x5e,0x3a,0xdb,0x39,0x6b,0x4a,0x82,0x53,0x02,0xf4,0xa2,0x15,0x5c,0xb6,0xdb,0x20,0x30,0xa2,0x7d,0xcb,0x9a,0xf7,0x88,0x69,0xb5,0xc8,0xe6,0xcd,0x9e,0xa4,0xaf,0x27,0x0e,0x61,0x41,0xcd,0x8e,0x71,0x83,0x11,0xce,0x5e,0x6c,0xaf,0xa4,0x50,0x81,0xb6,0xf2,0x36,0x05,0xbb,0x36,0x4e,0x4a,0x1b +.byte 0x09,0x9f,0xca,0x1b,0x12,0xb0,0x01,0xc0,0xbf,0x7e,0x3f,0x81,0x60,0x9f,0xfd,0x56,0x81,0x54,0x99,0x2b,0x7f,0x1e,0xb1,0xbf,0xd4,0xb7,0xe1,0x7c,0x71,0xf9,0x00,0x72,0x5f,0x10,0xab,0x60,0x03,0x9d,0x13,0xf1,0xba,0x48,0x93,0x1c,0x1d,0x11,0x04,0x40,0xf6,0xde,0x3b,0xef,0x6c,0x47,0xb3,0x0d,0xcf,0x53,0xbd,0x45,0x7e,0xd7,0x8c,0x34 +.byte 0xd0,0xcb,0x85,0x4b,0x1e,0xd1,0xc5,0xfd,0x5b,0x1a,0x18,0x8a,0x27,0xe3,0x16,0x3c,0x25,0x12,0xf2,0xf1,0xa1,0x40,0x53,0x68,0x27,0x2c,0x81,0x0e,0x20,0x12,0xe3,0xde,0xe2,0x9f,0x08,0x75,0xc0,0x25,0x79,0xf0,0xc4,0xaa,0x10,0xad,0x41,0x3f,0x0b,0xc7,0xb2,0xe0,0x50,0xde,0xec,0x24,0x09,0xeb,0xb5,0xd3,0xbc,0xd3,0xdf,0x44,0x6d,0xc8 +.byte 0xf1,0x79,0xf8,0x33,0xb7,0x75,0x09,0x18,0x04,0x59,0x0f,0x15,0x5e,0xf9,0xca,0xe0,0xa9,0x2a,0xe1,0x1b,0xf0,0x49,0x5f,0xca,0xa3,0x80,0xd5,0x9b,0x1e,0xc1,0x1f,0x98,0x18,0x0a,0x24,0xc3,0x3f,0xfb,0x43,0xfd,0xa3,0x01,0x59,0x50,0xea,0x21,0xe0,0x92,0xfd,0xe1,0xd5,0xe4,0x38,0x24,0x88,0xf3,0xb0,0xc9,0x79,0xfd,0x4e,0xd3,0x3e,0xbf +.byte 0xc6,0xb8,0x9e,0x7f,0xab,0x65,0x79,0xd9,0xb9,0x83,0x38,0xe1,0xf7,0xd0,0x37,0x04,0xb3,0x0c,0x48,0x82,0x74,0xe1,0x0c,0x80,0x13,0x59,0xc4,0x72,0xf9,0x2d,0x88,0x06,0x46,0x08,0x7a,0x6b,0xb4,0xfc,0x5f,0x63,0x31,0x2f,0x4f,0xfd,0x4b,0x1f,0x8e,0x21,0x3c,0x67,0x83,0xdd,0xa9,0x65,0x68,0xc6,0xd0,0xb8,0x1d,0xcd,0x60,0xc5,0xb9,0x3b +.byte 0xea,0xe9,0xc7,0xa5,0x1a,0x98,0x8a,0x87,0xb7,0x73,0x29,0x3a,0x6a,0x3a,0x75,0xbf,0xa4,0x79,0x64,0xcb,0x94,0x68,0x93,0x56,0x55,0x1e,0xd5,0x61,0xda,0x87,0xe1,0x28,0xf0,0xa5,0x64,0x9a,0xd7,0xa0,0x91,0xfd,0x46,0x20,0x6c,0x87,0x1f,0xe8,0x9e,0x7e,0x95,0xc4,0x60,0xdb,0xf4,0xe2,0x3e,0xb2,0x6a,0x4a,0xe7,0x46,0x3f,0xca,0xf3,0x72 +.byte 0xb5,0xe8,0x06,0x3a,0x1b,0xeb,0xcb,0x81,0x46,0x44,0xf6,0x97,0xa0,0x79,0xe4,0xa4,0x8a,0xba,0x5e,0x1b,0x6d,0xf4,0xcf,0x7c,0x12,0x7a,0xec,0xdd,0xf6,0xc8,0xab,0x5f,0x30,0xb3,0xf9,0x8e,0x31,0xfd,0x51,0x95,0x8b,0xa1,0xe9,0xe8,0x2d,0xec,0x86,0x12,0x4a,0xf8,0x8b,0xa5,0xdd,0xb2,0xe4,0xad,0xdd,0xcb,0xf5,0xcd,0x9c,0x9f,0x0a,0x42 +.byte 0x5f,0x83,0x9d,0xa6,0x4f,0xbe,0x11,0x75,0x3c,0xde,0x67,0x6b,0x95,0xcd,0xcf,0xdc,0xfd,0x1f,0x1a,0x14,0x01,0x27,0x68,0xaf,0x9b,0x82,0xd6,0xae,0x29,0x8a,0x1f,0xc8,0xf1,0x1f,0xb8,0xa9,0xa2,0x1d,0x81,0xbb,0x19,0xda,0x06,0xe3,0x34,0x7b,0xce,0x99,0x3c,0x5b,0x0c,0x9b,0x8b,0x35,0xc0,0x6c,0x88,0xef,0xeb,0x9f,0x64,0xe3,0xc3,0xbf +.byte 0x37,0xd7,0xf6,0xdf,0xad,0x28,0xf4,0xd7,0x19,0xb0,0xf2,0xa7,0xd4,0x71,0xbc,0xd3,0xa3,0x09,0x5c,0x1a,0x45,0x30,0x2d,0x53,0xa5,0x19,0x2f,0xb0,0x5d,0xae,0x04,0x28,0xe6,0x16,0x3e,0x75,0x9f,0xcc,0x76,0xc4,0xc2,0xa0,0xfb,0xff,0xdd,0x4c,0xa3,0x8b,0xad,0x05,0x73,0x26,0xf0,0xef,0x48,0xd5,0x25,0x22,0x90,0x78,0x21,0xfd,0xc6,0x23 +.byte 0x14,0xbc,0xed,0x13,0x29,0x76,0x17,0xa6,0x93,0x09,0x6e,0xa7,0x42,0xdd,0x11,0x9e,0x05,0xa3,0xb7,0x48,0x84,0x85,0xf8,0x4e,0xed,0x3d,0xdb,0xfc,0x68,0xd2,0xec,0xec,0x69,0x2b,0x60,0x38,0xd1,0x99,0x44,0xf9,0x60,0xd3,0x5a,0x9e,0xe4,0x26,0x9d,0x12,0xf8,0x6a,0x53,0xde,0x76,0x78,0xa7,0x68,0xb0,0xb4,0xdc,0x33,0x7b,0x8a,0x73,0xa0 +.byte 0xa5,0x5f,0x8f,0x81,0x0e,0x51,0x06,0x13,0x6b,0x56,0x16,0x91,0x1f,0xf5,0x6b,0x68,0xe6,0x8b,0x69,0xda,0x0a,0x9c,0xb1,0x74,0x8f,0x1c,0xb3,0xbf,0x52,0x59,0xaa,0xb1,0xb6,0x3a,0x81,0xc2,0x04,0x54,0x12,0x46,0xa2,0xd5,0x21,0xdf,0xe0,0x57,0x1f,0xe8,0x36,0x56,0x87,0xbf,0xcb,0x7d,0x06,0x6c,0xd5,0xc9,0x4e,0xca,0x47,0x47,0x11,0x91 +.byte 0x7a,0x14,0x13,0x5d,0x5d,0x46,0xd5,0x3a,0xe4,0xa4,0x4d,0x99,0x3a,0x54,0x99,0x62,0xb4,0x70,0xa0,0xf5,0x8a,0xda,0x05,0x75,0xf1,0xa5,0xa1,0x5d,0x9d,0xc4,0x7f,0x83,0x8a,0x5b,0x09,0x54,0x0e,0x69,0x28,0xef,0x66,0xfb,0xe4,0xc4,0xe4,0xc4,0xda,0xb0,0xda,0xe2,0x19,0x33,0x3c,0x76,0xa0,0x35,0xdc,0x31,0x4e,0x40,0xfe,0xb8,0x20,0x26 +.byte 0x8f,0x6f,0x7d,0x02,0x54,0x86,0x1d,0xca,0xa6,0x10,0xa6,0x89,0x87,0x3a,0x5a,0xd5,0x3d,0x0f,0xb5,0x81,0x7d,0xab,0xb6,0xc6,0x36,0x87,0xce,0xd7,0xe4,0xc3,0x9e,0xc2,0x9c,0xf6,0x75,0xd5,0x9a,0x69,0xd2,0x13,0x89,0x5a,0xe9,0x29,0xc9,0xf5,0x6e,0xcc,0x05,0x87,0x0a,0x61,0x49,0xd7,0xa5,0x76,0xd0,0xaf,0x96,0xe0,0x2f,0x91,0xf4,0x45 +.byte 0x70,0x5a,0xdc,0x9f,0x07,0x7f,0x86,0x02,0xa4,0x83,0x8d,0x4a,0x6d,0xfc,0x1b,0xd8,0x9b,0xc2,0x42,0x4f,0xcb,0xdf,0xcb,0xe0,0x55,0xb4,0x8f,0xf7,0x27,0x73,0xd9,0x7e,0xf8,0x3a,0x5c,0x4f,0x29,0x64,0xd8,0x39,0xfa,0xf2,0xc4,0x6b,0xeb,0x55,0xc3,0x13,0x22,0x15,0xdf,0xc5,0x91,0x6d,0xd7,0xf3,0x11,0x34,0x08,0xce,0xe5,0xbd,0x16,0x14 +.byte 0x60,0x14,0x8a,0xed,0x4d,0x38,0x98,0x15,0x5d,0xee,0x70,0xff,0x05,0xd2,0x74,0x3a,0x5f,0x78,0x1a,0x70,0x61,0x2a,0x42,0x4a,0xf3,0x15,0x6f,0x9e,0x33,0xca,0xb8,0x46,0x22,0x64,0xd6,0x24,0xe8,0x10,0x1a,0x89,0xab,0x74,0xdf,0x56,0x35,0x41,0x57,0xe1,0xd9,0x4b,0x67,0x60,0x89,0x6f,0xbf,0x73,0xac,0x6b,0xf9,0x78,0x3f,0xbc,0xf3,0x2a +.byte 0xb5,0x8c,0x1f,0xda,0xe7,0xe2,0xac,0x60,0xbf,0x41,0x96,0xbb,0xd5,0x35,0x9c,0x56,0xe7,0xfd,0x95,0xc7,0x4d,0x32,0xa1,0x07,0x34,0xbc,0x99,0xca,0xcc,0x42,0x71,0xfb,0xec,0x5c,0x1e,0xf9,0x8b,0xde,0x43,0x65,0x84,0x16,0x52,0x0a,0x5e,0x92,0x20,0xd8,0x26,0x4b,0x97,0x71,0xde,0xd2,0x1f,0x2e,0xd1,0xb2,0xb6,0x29,0x6a,0x6d,0x41,0x00 +.byte 0x20,0x3d,0x03,0xf8,0x43,0x7b,0x57,0x87,0x4e,0xf1,0x8e,0x6f,0xd3,0xf4,0x6c,0x6c,0x29,0xf6,0x99,0xe3,0xd3,0x1d,0xd3,0x26,0x21,0x3b,0x02,0xa2,0xc1,0x06,0xcf,0x31,0xec,0x7f,0xc6,0x80,0xbc,0xab,0x86,0x01,0xff,0x11,0x8a,0x24,0xfd,0x1b,0x41,0x49,0xd4,0xbe,0x15,0x34,0x82,0xc5,0x02,0x51,0x67,0x5c,0x41,0x8e,0xbf,0x94,0x12,0x15 +.byte 0x64,0xea,0x00,0x0c,0x51,0x40,0x57,0x66,0x1e,0x6d,0x3e,0x41,0x8e,0x84,0xdf,0x71,0xb8,0xd7,0xfa,0x12,0x17,0x22,0x17,0x05,0xdc,0x82,0xfd,0x7c,0x5e,0xfa,0x62,0x23,0xa8,0xbe,0x14,0xdc,0x84,0x42,0xf0,0x90,0xc5,0xb0,0x68,0xbe,0x64,0x74,0xc3,0xa5,0xd1,0x10,0xcf,0xe3,0xd1,0x09,0x98,0x3b,0xb9,0x19,0xf2,0x9b,0x5d,0x90,0x99,0x3d +.byte 0x30,0x67,0x55,0x34,0x50,0x78,0x3b,0xd2,0x70,0xb1,0xd2,0x91,0x4e,0xfa,0x98,0x7d,0x93,0xad,0x7f,0xb1,0x89,0xb0,0x61,0x4c,0x95,0x3f,0x51,0x95,0xd7,0xc6,0x87,0x7a,0xc5,0x53,0xb6,0x6d,0x61,0xec,0xbe,0x40,0x1f,0xa5,0x7f,0x73,0x4a,0x78,0xd2,0x58,0x1e,0x41,0x8e,0x9a,0x08,0x49,0xce,0x39,0x52,0xf9,0xd1,0xcd,0x41,0xb6,0x39,0x99 +.byte 0xfa,0xfb,0x1c,0x38,0xe1,0xe5,0xe1,0xd6,0x16,0x0f,0xc8,0x12,0x0b,0x88,0xdc,0x00,0xd4,0x7b,0x24,0x69,0x16,0x27,0x37,0xa3,0xd5,0x39,0x27,0x34,0xda,0x23,0x24,0x50,0x13,0xd8,0x02,0x48,0x14,0xd7,0xc9,0x28,0x1b,0xba,0x66,0xa8,0xc8,0x9a,0x7b,0xed,0x92,0x5b,0x78,0x46,0x79,0x5a,0xd1,0xf2,0x75,0xf0,0x98,0xd3,0x9f,0x4c,0x72,0x51 +.byte 0xed,0xe5,0xce,0x83,0xac,0xe1,0xc8,0x2b,0x7f,0x77,0x6a,0x70,0xdd,0x80,0x88,0x62,0x58,0x94,0x15,0x72,0x53,0x34,0x48,0x17,0xb2,0xe8,0x4a,0xab,0x2d,0x4e,0xef,0x93,0xb7,0xba,0xd1,0x1c,0x53,0x69,0xd5,0xac,0xa1,0x61,0x7c,0x44,0xec,0x81,0x72,0xcc,0xe8,0x6f,0x5d,0x67,0x1f,0x65,0x9a,0x34,0xf5,0x95,0x89,0x1c,0x2e,0x54,0x42,0xc0 +.byte 0x85,0x79,0xb0,0xfa,0x44,0x0d,0x28,0xc4,0x20,0x2f,0x2e,0x85,0x73,0xfb,0xf6,0x44,0x0e,0xbc,0xab,0x4f,0x42,0x5c,0xdb,0x1f,0x11,0x6f,0x9a,0x23,0x75,0x70,0x78,0x1a,0xd2,0xb8,0x83,0x72,0xf5,0xf6,0x40,0x48,0x3f,0xc8,0xd5,0xe3,0x2c,0x08,0x5c,0x0c,0x2a,0xb0,0x8e,0x69,0xe6,0xdf,0x4b,0x4a,0x95,0x9c,0x4c,0x5e,0x09,0x24,0xc3,0xd0 +.byte 0x4c,0x20,0x0c,0x9a,0xce,0x95,0x53,0x6a,0x7b,0x54,0x0a,0x7e,0x73,0xa7,0x95,0xe7,0x7c,0x67,0x9d,0x05,0xbc,0x26,0x3a,0xa1,0x43,0x99,0x7a,0xee,0x04,0xcf,0x94,0x02,0x36,0x26,0xb3,0x81,0x74,0x22,0xee,0x1e,0x9e,0xe2,0x82,0xd4,0xe0,0xca,0xf2,0xec,0xd2,0x9e,0xf8,0x3f,0x9f,0xc4,0x5b,0xe8,0xfc,0xbd,0x93,0xaa,0xc3,0x2f,0xce,0xf2 +.byte 0x32,0xa9,0x23,0xf3,0xe1,0x06,0xae,0x7d,0x87,0xe9,0xe7,0xe0,0xc1,0x7c,0x74,0x9c,0xdf,0x86,0x6d,0x5c,0x8a,0x51,0x45,0x9d,0x43,0x49,0x87,0x45,0x75,0xfb,0x40,0x55,0xab,0x9a,0x52,0xf1,0x32,0x5e,0xde,0x8b,0x52,0x50,0x9f,0xb8,0x7a,0xe5,0x1c,0x40,0x4f,0xc7,0xb1,0x29,0x90,0xcc,0x98,0x99,0xa0,0x4e,0x1c,0x43,0x6e,0x91,0x61,0x9c +.byte 0xf7,0xa7,0xf7,0x43,0x89,0x15,0x8c,0x56,0x22,0x9d,0x66,0xac,0x71,0x19,0xdc,0xb9,0xf8,0xd3,0xaf,0x2e,0xd7,0x7b,0xc3,0xe4,0x25,0x0d,0x2c,0xaf,0x15,0x8c,0xea,0x2b,0xdb,0x8c,0x71,0xff,0x55,0x29,0x11,0x35,0x11,0xef,0xb0,0x97,0xb2,0x95,0xab,0xeb,0x4a,0x40,0x1c,0x92,0xc4,0x13,0x36,0x74,0x53,0x78,0x51,0x6c,0xca,0x37,0xcb,0xda +.byte 0x5e,0x6b,0x8c,0x69,0xc5,0xd0,0xf9,0xdb,0xbe,0xd9,0x30,0x42,0x16,0xcf,0x40,0x63,0x87,0x10,0x28,0x7d,0xae,0xa9,0x8c,0x14,0x99,0xe1,0x4f,0x11,0x98,0x7e,0xe9,0x14,0x9c,0x2e,0xe2,0xed,0x20,0x15,0x7c,0xb5,0xf4,0xc9,0x16,0x30,0x8d,0x7c,0x61,0x45,0xf4,0x23,0xf5,0xdb,0x81,0x8f,0x6b,0x41,0xaf,0xa9,0xf8,0x51,0xbe,0xc4,0x5d,0x8c +.byte 0xda,0x5e,0x07,0x62,0x7c,0xc6,0xd1,0xae,0x91,0x5e,0x05,0xa8,0xc6,0xc5,0xfc,0xb7,0x12,0x2e,0x7f,0x85,0xef,0xbd,0x2b,0x56,0x57,0x32,0xad,0x3d,0x97,0x5b,0x26,0xcf,0xd3,0xe7,0x48,0x4e,0x9b,0x15,0x98,0x77,0xb4,0x3e,0xf1,0x3e,0x1c,0x21,0xb0,0x98,0xe2,0x69,0xee,0xd8,0x29,0x10,0x93,0xd5,0xc9,0x71,0x8f,0x28,0xbd,0xe3,0xd9,0x54 +.byte 0xf3,0x72,0xb6,0x85,0xe9,0x2b,0xdc,0x96,0x52,0x53,0x5c,0x61,0x54,0x96,0x4a,0xf5,0x3f,0xee,0x53,0xc3,0x63,0xc9,0x67,0x14,0xdf,0x3a,0xfe,0x46,0x8a,0xa6,0xec,0x06,0x0c,0xea,0xb8,0x82,0x49,0xb5,0xed,0x94,0xf2,0xac,0x76,0xd5,0x87,0x79,0x15,0x4f,0xa1,0x34,0x90,0x8e,0x7b,0x02,0xf7,0x02,0xb0,0x07,0xa5,0x7c,0x6b,0xc2,0x34,0x84 +.byte 0xd4,0xaa,0xbf,0x32,0x81,0xf7,0xed,0x1f,0x61,0xd7,0x6e,0x40,0xa0,0xdc,0x4c,0xb5,0xb7,0x36,0x3a,0x87,0x09,0x82,0xd5,0x5a,0xc8,0x1f,0xe6,0x77,0xa6,0xaa,0xcf,0x3c,0x7b,0x23,0x46,0x58,0x95,0x7f,0x84,0xba,0x4a,0x05,0x0b,0x36,0xdb,0x58,0xf9,0xa4,0x2b,0x24,0xd4,0x8a,0xbc,0xb2,0xb7,0x04,0xac,0x64,0x0e,0x88,0x25,0x9a,0x69,0xe7 +.byte 0x87,0x70,0x0b,0xa6,0x43,0xe9,0xb2,0xbb,0x4e,0x4c,0x10,0x19,0x44,0x4d,0x12,0x4c,0x58,0x2a,0x49,0xe2,0x01,0xd2,0x65,0x23,0xee,0xe9,0xca,0x0b,0xa1,0x28,0x02,0x8d,0xcf,0x37,0x06,0xbc,0x5d,0x35,0xba,0xec,0x97,0x95,0xcc,0xfe,0x7b,0xc9,0x1c,0x0d,0x89,0x4e,0xe1,0x8d,0x9b,0x5e,0x5b,0xb9,0x6c,0x24,0x73,0x9a,0x62,0xd7,0xc5,0xfa +.byte 0x54,0xeb,0x05,0x22,0xd9,0xe7,0xc4,0x68,0x88,0x20,0x43,0xd9,0x14,0x47,0xd7,0xa5,0xd0,0xce,0x10,0x77,0xe8,0x5c,0x85,0x39,0x99,0x3f,0x72,0x88,0x4f,0x22,0x15,0x87,0xa0,0xa3,0x47,0x10,0x81,0x64,0xff,0x94,0x77,0x5d,0xce,0x6d,0xd8,0x29,0xb1,0x9c,0x8e,0xce,0xa8,0x39,0x4f,0xfc,0x36,0x3c,0x50,0xb2,0xf1,0x08,0x66,0x1a,0xf0,0x22 +.byte 0x65,0x1f,0x4d,0x17,0xd3,0x63,0x10,0x64,0xd1,0xc6,0x5a,0x3e,0x82,0x72,0x0c,0x48,0x5e,0x07,0x9c,0x07,0xa0,0x40,0x60,0xab,0x74,0x9a,0x00,0xdf,0xd7,0x7d,0xd4,0x11,0x4e,0xce,0x5a,0xaf,0x12,0x4f,0xe7,0x12,0x36,0x1a,0x12,0x11,0x16,0xb7,0xad,0x4b,0x28,0x84,0x7b,0xd8,0x30,0x0d,0x85,0xb8,0x76,0xde,0xa3,0x78,0x8c,0xb7,0x7c,0xbc +.byte 0x97,0x33,0x53,0x95,0xf8,0x14,0x5f,0xf8,0x0d,0xc1,0x6b,0x79,0xa2,0x42,0x49,0xab,0xae,0x8e,0x78,0xf3,0x51,0x01,0xcc,0x20,0x36,0x80,0xbd,0x32,0x0b,0x1b,0xd2,0xcd,0x27,0x52,0x69,0x1b,0x4a,0x37,0xba,0x31,0xe4,0xc2,0x03,0x8d,0x00,0x48,0x4b,0xcd,0x39,0x2e,0xec,0x94,0x2e,0xe0,0x81,0xfd,0x94,0xd9,0x86,0x39,0x23,0x87,0x3c,0x2f +.byte 0x25,0xe1,0x5b,0x22,0xe0,0x2e,0x37,0x6d,0x9b,0x97,0x9c,0x94,0x37,0x01,0x26,0xb8,0xb1,0x73,0x7c,0xfc,0x0a,0x64,0xe7,0x54,0xf1,0x0f,0x71,0xa1,0xd6,0xc7,0xc8,0xb4,0x86,0x2d,0xfe,0x30,0x8b,0xca,0xb2,0x18,0x21,0xc0,0xc7,0x7d,0x60,0xcf,0x2e,0x25,0xb0,0xa4,0x1a,0x28,0x19,0xa9,0xa9,0x15,0x32,0x5e,0x21,0x89,0x3a,0x99,0x5f,0x50 +.byte 0x86,0x37,0x3b,0x10,0xb8,0xa5,0xad,0x8e,0xbf,0xfc,0x8c,0x85,0xf1,0x76,0x5c,0xe7,0x4d,0xac,0xe7,0x21,0xb3,0x45,0x87,0x3b,0x05,0xc8,0x41,0xf4,0x99,0x83,0x28,0x40,0x6b,0x30,0x37,0x31,0xd2,0xb3,0xdd,0x43,0x3b,0x3f,0xec,0x50,0x58,0x7d,0x20,0xc6,0xb2,0xa9,0x3c,0x22,0x38,0xea,0x16,0x32,0x01,0xc4,0xb0,0x9f,0x7d,0x12,0x91,0x82 +.byte 0x0c,0xd8,0x36,0xfc,0xa4,0xec,0x06,0xb2,0xc2,0xce,0x9b,0xa4,0x53,0x71,0x77,0xdd,0xc3,0xfc,0x34,0x6f,0xd9,0x5c,0xfc,0x36,0xdd,0x63,0x19,0x06,0xfb,0x3c,0xf3,0x3f,0x82,0x28,0x6d,0x00,0xf9,0xfd,0x8d,0x6b,0x79,0x06,0x8a,0xe7,0x6f,0xcc,0x39,0x12,0x80,0x71,0xcb,0x71,0xb3,0xb6,0xa4,0xa8,0xbe,0x61,0x9d,0x1f,0x48,0xa2,0x15,0xa1 +.byte 0xb5,0xf5,0x16,0x70,0xc5,0x39,0xce,0x43,0xa3,0x09,0xe5,0xf4,0x8b,0x77,0x18,0x5e,0xa0,0x77,0xa3,0xa4,0x17,0x2c,0x3e,0x50,0x73,0x2f,0xaa,0x5d,0x58,0x5e,0xdc,0xec,0xaf,0xca,0x6e,0x57,0x80,0xa3,0xd5,0x94,0x30,0x7c,0x11,0x75,0xc4,0xbb,0x9d,0x18,0xc1,0x5a,0x58,0xc7,0x04,0x56,0xb1,0x3a,0x21,0x55,0x02,0xea,0xad,0x58,0x19,0x72 +.byte 0xdc,0x7d,0x0e,0x41,0x62,0x1b,0x5c,0x48,0x97,0x3f,0xed,0xd7,0x4e,0x30,0x1f,0xf5,0xde,0xc5,0x23,0xf2,0xd7,0x22,0xde,0x2f,0x3e,0x80,0x06,0x81,0xf6,0x24,0xb7,0x91,0x09,0x56,0x91,0x00,0x1a,0xea,0xaa,0xa6,0xc2,0x8b,0xc9,0x78,0xd7,0xde,0xf6,0x87,0xb1,0x04,0xcc,0xbb,0xc1,0xc6,0x48,0x43,0xc8,0x03,0xb2,0xdd,0x70,0xc0,0xe3,0xf5 +.byte 0xc0,0xf5,0x13,0xd5,0x11,0x41,0x7f,0x1a,0xdc,0x48,0xf5,0xd6,0x1b,0x0a,0x84,0xd2,0x84,0xcd,0x10,0x4f,0x0a,0xd7,0xcb,0x41,0x61,0x1c,0xcc,0x5c,0xa9,0xbd,0x6e,0x6a,0xf3,0x81,0xd8,0xaa,0x3a,0xff,0x39,0x90,0x8e,0x33,0xe6,0x58,0x13,0x5f,0xec,0x58,0x74,0x35,0xe0,0x06,0x38,0x0f,0xd0,0xbf,0x8d,0xf7,0x26,0x99,0xea,0xdd,0xfb,0xdf +.byte 0x5b,0xcc,0xf1,0x3d,0x9b,0x84,0x8b,0x5b,0xe8,0xc4,0xc6,0x3e,0x0a,0x55,0xec,0x73,0xf7,0x70,0xb1,0xc8,0xfa,0xf8,0xd6,0x72,0x2c,0x6d,0x8d,0xc1,0xa3,0xb2,0x9a,0xe7,0x80,0x6d,0x09,0xa6,0x76,0x06,0x71,0xf9,0x95,0x9a,0xa9,0x2f,0x4b,0x7c,0xad,0x64,0x01,0x01,0x91,0xe4,0x87,0x1d,0xe1,0x46,0xf5,0x4a,0x96,0xc6,0x58,0xd9,0xe0,0xa9 +.byte 0x2f,0x80,0x1e,0xd6,0xe9,0xa6,0xeb,0xfe,0x5a,0xb6,0xd3,0xe8,0x76,0xd2,0x51,0xc6,0x68,0x34,0xc9,0xed,0x76,0x29,0x7e,0x63,0xb1,0x09,0xdf,0x23,0x47,0x41,0x2f,0x70,0x46,0x4d,0xbb,0x36,0xc8,0x84,0xe9,0x58,0x20,0x6b,0x04,0xb2,0xa4,0x1c,0x4d,0xe0,0xa5,0xa2,0x59,0xc9,0xed,0x63,0x25,0x5f,0x3f,0x24,0x18,0x59,0x29,0xe3,0x79,0xbd +.byte 0x35,0x50,0xee,0x81,0x59,0xff,0xd4,0x0e,0x62,0xd3,0x52,0x30,0x81,0xa2,0xe6,0x9e,0xc3,0xc9,0x7a,0x10,0x57,0x36,0x27,0xb7,0x3c,0x61,0x38,0x89,0x70,0xa0,0xc5,0xdf,0x78,0x05,0xa5,0x81,0xe2,0x8a,0x93,0xda,0x7c,0xaf,0xbf,0x6d,0x42,0x09,0x1b,0x43,0x9d,0xf9,0x26,0x87,0xc3,0x84,0x6c,0xb7,0x25,0x31,0x50,0x00,0xd8,0x13,0xc0,0xc0 +.byte 0x6c,0x21,0x82,0x6d,0xf9,0x2f,0xef,0x40,0xe8,0xf8,0xae,0x4d,0x9e,0x1d,0x4a,0xda,0xa0,0x0d,0x77,0x36,0x8b,0xed,0xaf,0x6e,0x2a,0x3d,0xa8,0x36,0xe4,0xff,0x37,0xc2,0xa3,0x11,0x5e,0x68,0x58,0xa8,0xa3,0x19,0xf3,0xc1,0x33,0xea,0x39,0x49,0xfe,0x51,0x87,0xb6,0x31,0x6a,0x61,0x47,0xe7,0xb1,0x46,0xde,0x5a,0xf7,0x93,0x06,0xa7,0x72 +.byte 0xa9,0x2e,0x9e,0x2e,0xc9,0x7f,0xe1,0xb2,0x86,0xb4,0xc9,0xff,0x3b,0xf7,0xaf,0xef,0x91,0x47,0xc2,0xfa,0x42,0x0a,0x4e,0xbb,0x10,0x0d,0xea,0xa4,0x11,0x54,0xa9,0x53,0xde,0xc4,0x01,0xde,0xc7,0x2d,0x1f,0x18,0x40,0x79,0xd1,0x44,0x7d,0x51,0x1d,0xf6,0xdc,0x6f,0xad,0xa2,0x5d,0xd9,0xbe,0x5d,0x11,0x57,0xb7,0x68,0x0d,0x96,0xad,0xb3 +.byte 0x32,0xf7,0x99,0xcc,0x0e,0x03,0xa2,0x79,0x9b,0x63,0xce,0xee,0xf9,0x0c,0xfd,0xfa,0x9a,0x82,0xc9,0x43,0xd3,0xd5,0x23,0xfa,0xac,0x75,0xbe,0x61,0x85,0x18,0xb6,0x75,0x72,0x8d,0x17,0xdd,0xde,0x3f,0x6d,0xb4,0xe8,0x47,0x09,0xe1,0xa7,0xe0,0x4c,0xce,0x93,0x7b,0xc3,0xa3,0x3f,0xc0,0x81,0x21,0x6f,0xe8,0xce,0x68,0x61,0xde,0x1a,0x58 +.byte 0x48,0x7f,0xb4,0xae,0xfd,0x7c,0x80,0x63,0x43,0x5a,0xfc,0xf9,0xf9,0x4d,0xb4,0x8c,0x85,0x27,0x12,0x4f,0x7d,0xe8,0x69,0xc3,0x7d,0x57,0x63,0x0d,0x5f,0xd2,0x85,0x4e,0x0c,0x9a,0x0d,0x1c,0x4d,0xdf,0x3f,0x9a,0x16,0x2f,0x34,0x43,0xc3,0xf0,0xf1,0x16,0x16,0xd2,0x9f,0x2e,0x78,0xd8,0x3c,0x63,0xa0,0x7e,0x02,0x8e,0x65,0xd2,0xb0,0x61 +.byte 0xb0,0x1d,0x7a,0x8f,0xf7,0x30,0x45,0x05,0xf7,0x15,0xc3,0x69,0x24,0x98,0xc3,0x74,0x20,0x16,0x09,0x57,0x39,0x16,0x68,0x23,0x33,0x62,0x4c,0xf5,0xd6,0x34,0xe3,0xad,0x7a,0x14,0x64,0x8c,0x2b,0x48,0x96,0xf9,0x85,0x39,0x19,0x73,0x27,0x04,0xa6,0x55,0x66,0x15,0x8c,0xf1,0x47,0xcd,0x53,0xaf,0x31,0x3a,0xd9,0xfa,0xf9,0xac,0xbd,0xb8 +.byte 0x27,0xe0,0xaa,0xa5,0x62,0x85,0x9f,0xbb,0x4e,0xaf,0xa5,0x72,0x42,0x98,0xa6,0x7f,0xa1,0xb6,0xac,0x17,0xc2,0x2c,0xf3,0xd6,0xc0,0x14,0x4b,0xb3,0x86,0x88,0x89,0x81,0x83,0x7d,0x9d,0xf7,0xe3,0xe4,0x27,0xba,0xa8,0x03,0xb4,0xe3,0x97,0x74,0x1c,0x0d,0xab,0xb4,0x6e,0xc6,0x9e,0x58,0xdd,0x15,0x95,0x2f,0xa6,0xd6,0xaa,0x5a,0x96,0x71 +.byte 0x69,0xca,0xe0,0x5f,0xd2,0x3c,0x66,0x1b,0x58,0x25,0xd6,0xec,0xc0,0x46,0x3e,0x56,0xd0,0xe1,0x36,0x44,0x56,0xc0,0xf2,0x15,0x48,0x9e,0x07,0xce,0x5d,0xb9,0xd4,0x4e,0xcc,0x31,0x26,0xaa,0xdb,0x6a,0x87,0x98,0x0e,0x37,0xfc,0xc5,0x91,0x28,0x1b,0xf8,0x70,0xbf,0x30,0x71,0xbe,0xa0,0x81,0x1e,0x30,0x33,0x37,0x37,0xc8,0x07,0x08,0x9b +.byte 0x8f,0xe4,0x27,0x9f,0x90,0x67,0xb4,0x96,0x08,0xd7,0x30,0x9e,0xa6,0x53,0x39,0xd1,0x9b,0xde,0x02,0x35,0xf3,0xb1,0x19,0x7b,0xd2,0x28,0x5a,0xc3,0x1f,0x69,0x0e,0x48,0xbf,0xa3,0xb4,0x55,0xd1,0x10,0x3d,0x30,0x71,0xc6,0x82,0x2d,0xb8,0x6f,0xe6,0x99,0x6b,0xef,0x9f,0x86,0xed,0x93,0x13,0xb6,0xb0,0x87,0x91,0x77,0x4a,0x00,0xe4,0x5f +.byte 0x4c,0x7d,0x41,0x3b,0xc9,0xda,0x99,0x6b,0xff,0xec,0xef,0x05,0x3c,0xc6,0x0d,0xec,0x68,0x12,0x44,0x31,0xac,0xc9,0x0b,0x9c,0xf5,0xea,0xed,0xda,0x88,0xec,0x6e,0x6e,0x73,0xda,0x85,0x52,0x69,0xa1,0x13,0x52,0xcf,0xc3,0x4d,0x95,0x88,0xec,0x1f,0x53,0x81,0x6f,0xac,0x53,0x60,0x48,0x20,0x9a,0x4d,0x88,0x2c,0x4b,0xb0,0x69,0x5f,0x07 +.byte 0xf9,0xa7,0x2c,0x9a,0x13,0x91,0x86,0xa2,0x98,0x20,0xa9,0x80,0x1e,0xaa,0x8e,0xbc,0x3c,0x3d,0x51,0x34,0x3d,0x5b,0x80,0xe4,0x39,0xfe,0xc8,0xb1,0x6d,0xfe,0x36,0x9d,0x9b,0xde,0x22,0x39,0x41,0xe9,0xff,0xda,0x67,0x67,0xd4,0xeb,0x60,0x44,0xd5,0xc1,0x74,0xcd,0xa0,0x98,0x06,0x34,0x76,0xf8,0xe5,0x0d,0xc8,0x52,0xca,0x83,0xd2,0xdd +.byte 0xf2,0x12,0x36,0x7d,0x3e,0x7f,0xbd,0xa6,0xd8,0x1e,0xc0,0x9d,0x67,0x2a,0x33,0x87,0x86,0x79,0x7a,0x70,0x3a,0x63,0x0b,0x74,0x77,0x89,0xce,0x8f,0x5a,0x3b,0xf3,0x2e,0x52,0x4d,0x1d,0xc6,0xc3,0xc8,0x69,0x98,0xdc,0x81,0x45,0x99,0xfd,0xcd,0x6b,0x6d,0x05,0x33,0x40,0xde,0xb3,0xbd,0x4a,0x27,0xc2,0x9e,0x8b,0xf1,0x4c,0xac,0x92,0x82 +.byte 0x55,0x04,0x79,0xe7,0x28,0x74,0x5b,0x70,0xdc,0xc0,0x4f,0x0c,0xcf,0x3a,0x7f,0x08,0xcc,0x2e,0x1d,0xfd,0x8d,0xd9,0x5c,0xe2,0xa7,0x98,0xc1,0xe8,0x4b,0x96,0xbe,0x27,0xd6,0xfd,0x0a,0x59,0x30,0x33,0x85,0x41,0xc5,0x63,0xab,0xe7,0xda,0x26,0xbd,0xce,0xe7,0x9d,0x50,0xd7,0x2d,0x67,0x7a,0xa1,0x05,0x2b,0x74,0x60,0x5e,0x6c,0x04,0x2b +.byte 0xba,0xe6,0x2d,0x25,0xc9,0x00,0xd0,0xf0,0xa5,0x4f,0x22,0x59,0x34,0xb8,0x43,0x6b,0xb7,0x67,0x25,0x99,0xff,0x75,0x17,0xb1,0x13,0x7e,0x34,0x1d,0x42,0xa3,0x6b,0xb5,0x9d,0xfe,0xa1,0x71,0x0d,0x90,0x81,0x58,0xfc,0xc7,0x85,0xe6,0xbd,0xc2,0xcc,0xc9,0xc9,0x23,0x6e,0xd6,0xbe,0x4a,0x61,0xd4,0xf5,0x9e,0x37,0x6a,0xb1,0x8b,0x91,0x59 +.byte 0xe1,0x3e,0xac,0x87,0x54,0xa6,0xf9,0xf5,0x90,0xd2,0x7c,0xba,0x4b,0x37,0x33,0x1b,0x88,0x5e,0xbd,0x78,0x3f,0xed,0x43,0x40,0x4f,0x16,0x59,0x29,0xbc,0x27,0x98,0x87,0xfe,0x62,0x56,0x93,0x21,0x0a,0xca,0xc1,0x21,0x99,0xb3,0x32,0xbb,0x5a,0x79,0x40,0xab,0xea,0x00,0xf8,0xe9,0x90,0x0d,0x59,0xbd,0x6e,0x7f,0x74,0x01,0x50,0x67,0x3a +.byte 0x8e,0x24,0x1d,0x6c,0xc8,0xd6,0x93,0xca,0x71,0x95,0xec,0xac,0x78,0xe9,0x1f,0x38,0x0d,0xa2,0xe5,0x32,0x90,0xa2,0xaf,0xef,0x15,0x06,0xd6,0x52,0xa4,0xd2,0x94,0x0f,0xbd,0x86,0x81,0x82,0x12,0x9b,0x3a,0xc4,0x0b,0xdf,0x8a,0x5f,0xc6,0x3b,0xb4,0x13,0x9b,0xeb,0xed,0x2d,0x06,0x46,0xa3,0xbe,0xbb,0xe1,0xe1,0x93,0xa1,0xab,0x46,0xf3 +.byte 0xd0,0xd9,0xce,0xb6,0xfb,0xd0,0xd5,0xb6,0xde,0x0c,0xed,0x90,0x18,0x6c,0x1e,0x46,0xb0,0x36,0xa7,0xf1,0x29,0xbe,0x9a,0xa0,0xcf,0xed,0xd6,0xaf,0xb8,0x89,0x9b,0x83,0xa8,0xa0,0x8d,0x26,0xaf,0x8f,0x48,0x66,0xfc,0x22,0x1a,0xc0,0xcf,0xf8,0x90,0x57,0x7e,0x25,0x5f,0xe4,0x0c,0x68,0xd2,0xaa,0x59,0x09,0x2f,0x6d,0x3f,0x80,0x8d,0xe0 +.byte 0xfa,0x25,0xb0,0xe0,0x85,0xe9,0x13,0x39,0x3d,0x1f,0xed,0xd1,0x94,0x9b,0xb5,0xc2,0x65,0xda,0xec,0x7a,0x1f,0x2f,0xe2,0x0a,0x42,0x09,0xbd,0x79,0x7d,0xcb,0xb8,0x4a,0x02,0x2b,0x72,0xaf,0x33,0x85,0x72,0x1b,0x18,0x0c,0xa3,0xec,0x39,0x0e,0x30,0x21,0x41,0xf8,0x2e,0xc7,0x8e,0x5c,0x4c,0xda,0x22,0x49,0x8c,0xa7,0xfb,0x89,0x76,0x2e +.byte 0x45,0x90,0x6c,0xeb,0x70,0x78,0x6d,0x6e,0xee,0x12,0x6c,0xb9,0xb9,0x8d,0xe7,0xf3,0x4d,0x86,0xc4,0x58,0x49,0x55,0xa6,0x86,0xaf,0x39,0x03,0x21,0xfa,0xa7,0xdd,0x51,0x80,0x79,0x6d,0x5b,0xa5,0x58,0x0f,0xfd,0x57,0xb3,0x83,0xe6,0x0d,0x25,0xec,0x55,0xdc,0x0a,0x6f,0xbc,0x7d,0xfd,0x94,0x16,0xdd,0x60,0x9f,0x2a,0x4b,0x6c,0x82,0x03 +.byte 0x4b,0x44,0xbb,0x84,0xdc,0xcb,0x97,0x8e,0x58,0xe7,0xc1,0x79,0xa9,0xf3,0x53,0x78,0x1f,0xf1,0x3e,0xdd,0x94,0x24,0x6d,0xb1,0xd2,0x99,0xbc,0xa1,0xbe,0x7d,0xdd,0xff,0xa8,0x5d,0xd2,0xc2,0xba,0xad,0x60,0x6b,0x40,0x5d,0x7b,0x99,0xd2,0xea,0x45,0x66,0x80,0x6c,0x47,0xf2,0xeb,0x94,0xb8,0xe8,0xe8,0xa0,0x46,0x05,0xe1,0x4f,0x40,0x23 +.byte 0x34,0xdf,0x91,0x63,0xae,0xc9,0xe7,0x32,0x20,0x9a,0x95,0x1e,0xcd,0x5a,0x60,0xe1,0x3d,0xe0,0xf1,0x16,0x3d,0x6e,0x8b,0x96,0x23,0xe0,0xaa,0x1d,0x1a,0xde,0xed,0xc6,0x63,0xb5,0x46,0x8b,0x78,0x71,0x9a,0x14,0x88,0x79,0x61,0x68,0x6b,0xcf,0x80,0xd8,0x9c,0xaa,0xfb,0xb1,0xc0,0xf3,0x39,0x07,0x26,0x56,0x80,0xba,0x9d,0xf5,0xe7,0x95 +.byte 0x99,0xac,0x90,0xea,0xe7,0xe1,0xc9,0x0d,0x40,0x94,0x83,0x58,0xd2,0xc3,0x2b,0xce,0x1e,0xae,0x2a,0xa6,0xfa,0xc7,0x89,0x44,0xcb,0xe2,0x9e,0x74,0x33,0xaa,0x70,0xe5,0x28,0x3a,0x51,0x74,0x53,0xe2,0xfb,0x7c,0x47,0x76,0x22,0xdf,0x46,0xa6,0x01,0x17,0xef,0x88,0x43,0x46,0x3f,0x1a,0x26,0x0c,0xad,0xf4,0x31,0x55,0xf2,0xe7,0xc9,0x35 +.byte 0x6f,0x7c,0x0c,0x5c,0xfd,0x43,0xa4,0x6c,0x6c,0x74,0xf0,0xa4,0xec,0x1d,0x83,0x97,0xc1,0x6c,0x9c,0xd7,0x97,0x90,0x7c,0x07,0x88,0xc0,0xb4,0x79,0x2c,0x7a,0x9c,0x93,0xa2,0x15,0x6c,0xd2,0xa9,0x45,0xa5,0xc1,0x16,0xfe,0x72,0xf4,0x01,0x32,0xe4,0x51,0xdd,0xdb,0x50,0xe3,0x61,0x4e,0x29,0x1e,0x27,0x10,0xe9,0x5e,0x30,0x2b,0x30,0x27 +.byte 0x99,0xff,0x92,0x23,0x04,0x8d,0x28,0x68,0x28,0xd3,0x0f,0xec,0xbb,0xf9,0xfb,0x44,0x1c,0xaa,0x8b,0x38,0x95,0x67,0x1e,0xf5,0x42,0xc9,0xec,0x05,0xeb,0x94,0xe5,0x1c,0x8a,0x2a,0xef,0x3b,0x74,0x46,0x89,0x4f,0xd5,0x6f,0xa0,0xe5,0x74,0xae,0x24,0x8d,0x81,0xae,0x9d,0x3c,0x3e,0x3d,0x41,0x54,0x8f,0xd9,0xc2,0x98,0xf4,0x84,0xeb,0x30 +.byte 0x6a,0x06,0x67,0x11,0x2d,0xb0,0x55,0x70,0x26,0xdf,0x19,0x5f,0x81,0xe9,0x39,0x69,0x3a,0xd6,0x09,0xa4,0x40,0x22,0x1f,0x5c,0xbf,0xd5,0xa6,0xea,0x69,0x99,0x0d,0xea,0x70,0xed,0xfe,0x3a,0xba,0x23,0x8b,0xab,0x08,0xfe,0xfb,0xe9,0x1a,0x88,0x80,0x13,0x45,0x9c,0xca,0x2e,0xda,0x4a,0xc8,0x5d,0x15,0x52,0x87,0x36,0x9b,0x87,0x8a,0x76 +.byte 0x5d,0x31,0x24,0x4a,0xcb,0xf5,0xd3,0xd3,0xc1,0xec,0xde,0x1e,0x48,0x99,0xd5,0xcb,0x93,0xf7,0xca,0x2d,0xa4,0x66,0x5e,0xa4,0xcf,0xc6,0x15,0x20,0x10,0xb1,0xe2,0x8e,0xb9,0x44,0xa7,0xc3,0x54,0x14,0x86,0x08,0xb7,0x89,0x52,0xd5,0x72,0xc5,0x62,0x4d,0x82,0x96,0x23,0xcf,0x6e,0x52,0x3a,0x92,0x53,0x48,0xa2,0xa5,0x9d,0xa4,0xcc,0x32 +.byte 0x45,0x5a,0xdf,0xe2,0xbe,0xce,0x28,0xc8,0xb1,0xb7,0x0f,0x6a,0x38,0x28,0x14,0x66,0x55,0x7a,0xab,0x35,0x56,0xd0,0xc7,0xe5,0xa1,0x8a,0x84,0xf7,0xc5,0xa9,0xdb,0x2a,0x45,0xe9,0x34,0x2d,0xf2,0xed,0x2b,0xa9,0x9e,0x49,0x1b,0x23,0x10,0xeb,0x0e,0x01,0x46,0x6f,0x7a,0x50,0x09,0x5f,0xc3,0xb6,0x1e,0x2f,0x1a,0x3e,0x89,0x32,0xaa,0x5a +.byte 0xaa,0xef,0x23,0x45,0xdc,0xb5,0x7e,0x5f,0x87,0x77,0xde,0x50,0xab,0xbf,0x9e,0x62,0xa8,0xe0,0xf0,0xc8,0x4a,0xf1,0x4e,0xaf,0xe4,0x50,0x8a,0xfe,0xc9,0x68,0xdd,0x19,0x1d,0xc6,0x54,0xe5,0x38,0x0a,0x6f,0x36,0xe4,0x85,0xe8,0xab,0xc4,0x06,0xef,0x07,0x29,0xce,0xea,0x9d,0x2e,0x22,0x97,0x18,0x7e,0x59,0x89,0x92,0x31,0xc5,0x87,0x50 +.byte 0xa8,0x23,0x22,0x58,0x47,0x27,0x1c,0x89,0x5f,0xec,0x94,0x1d,0xb2,0xc8,0x61,0x1e,0x0a,0x80,0xd3,0xe9,0xbf,0x65,0xb9,0x66,0x32,0x56,0xde,0xd2,0x13,0xee,0xea,0xc4,0xc9,0xbf,0x4c,0xb7,0xa4,0x1c,0xc0,0xbf,0xcf,0xa4,0x58,0x1f,0x98,0x1d,0x25,0x4e,0x51,0xd9,0xbe,0x89,0x32,0xdb,0x7a,0xa6,0x39,0xa9,0xbf,0xed,0x65,0x6b,0x92,0xc4 +.byte 0x8d,0xcd,0x63,0x18,0x65,0x44,0x95,0xcf,0x17,0x72,0x8f,0x27,0x79,0x83,0xda,0xe3,0xe7,0xd9,0xca,0x57,0xff,0xa3,0x15,0xbf,0xb6,0xd8,0xc2,0x8c,0xe8,0xdb,0x8c,0xdc,0x54,0x6a,0xc8,0x57,0x6e,0x24,0xc3,0x3c,0x1f,0x33,0xdd,0x68,0xbd,0x7a,0xa3,0xbc,0xa9,0x9a,0xe8,0xfc,0x97,0xa5,0xbe,0x59,0xfb,0x77,0xcd,0x22,0xc6,0x3d,0x95,0x21 +.byte 0xcb,0xf7,0x8d,0xc1,0x77,0xc6,0xe0,0x06,0xb2,0xdb,0xec,0x54,0x19,0xad,0x02,0x25,0xe0,0x0f,0xda,0x4c,0xa5,0xf2,0x47,0x3f,0xc9,0xa0,0x91,0x21,0x39,0xe9,0x74,0x2a,0x9a,0xc1,0x57,0x86,0x3c,0x32,0x27,0x4c,0xc2,0x2d,0x50,0xbd,0x7a,0x04,0x9c,0x45,0x0d,0x7e,0x06,0x1d,0x3e,0xc1,0x6f,0x06,0x7f,0xd4,0x71,0xd3,0x5c,0x66,0x74,0xa7 +.byte 0x33,0x75,0x64,0xa8,0x7d,0xc0,0x23,0xda,0xb0,0x6d,0x12,0xbe,0x83,0x98,0xe7,0x65,0x38,0x4d,0x39,0xc3,0xd7,0x33,0xfb,0x58,0x64,0xfc,0xde,0xd7,0xbf,0x9e,0xdb,0xcc,0x7a,0x35,0xac,0xdf,0x13,0x08,0xbc,0x0a,0x55,0x82,0x5f,0xc3,0x74,0xc5,0xb2,0xdb,0x89,0xdc,0x9c,0x60,0xfa,0x02,0x1c,0xba,0x5b,0x7e,0x0f,0xb1,0x0f,0xad,0x43,0xe1 +.byte 0xe1,0xbe,0x1e,0x06,0x05,0x0f,0x39,0x80,0x3d,0x7d,0xbe,0x8f,0x38,0x25,0x46,0x5e,0xea,0x47,0x36,0x65,0x4c,0x3c,0x6c,0xd6,0xaa,0x46,0xaa,0xb0,0x95,0x1d,0xff,0x67,0x6c,0x70,0x9d,0xec,0x3d,0x3d,0x4c,0x2f,0xd9,0x2b,0xb0,0xbd,0x8c,0x6a,0xca,0xac,0x0c,0x53,0xa1,0xda,0xd8,0xc1,0x3c,0xaa,0xcc,0x50,0x85,0x41,0xa1,0xa7,0xe9,0x7f +.byte 0xf7,0xa8,0x28,0xb1,0x5f,0xd6,0x77,0xc9,0xb5,0xae,0x33,0xa7,0x2d,0x16,0xe0,0x13,0xe8,0xd4,0xf9,0x4e,0x62,0x2e,0xc2,0x9a,0xf3,0x83,0xe0,0x45,0x43,0x68,0x40,0x5a,0x56,0xf3,0x31,0xc8,0x5b,0x46,0x0b,0x38,0x1f,0xa5,0xff,0xe6,0xa1,0x81,0xc0,0x91,0xe5,0x5a,0x63,0x8f,0x47,0x9a,0xe7,0x26,0x0d,0x78,0x8d,0x11,0x7d,0xc8,0xd4,0x9f +.byte 0xc1,0xf7,0x8f,0x93,0xfa,0x2f,0xb5,0xfd,0x6d,0xa4,0x34,0xcf,0x3c,0x6c,0xf6,0x64,0xae,0x5c,0x60,0xa2,0xb4,0xcc,0x18,0x3e,0x08,0x8e,0x36,0x88,0xab,0xc3,0xea,0x53,0x4f,0x1c,0x9e,0xe6,0xef,0x2d,0x9c,0x78,0x4a,0x3a,0x5a,0x60,0x8e,0xf7,0xeb,0x0b,0x36,0xb1,0xbb,0x59,0xe2,0x5e,0x64,0x60,0xe5,0xd6,0x3d,0x2a,0xe1,0x1b,0x03,0x40 +.byte 0x8d,0xde,0x2e,0xd0,0x76,0x0a,0x6b,0x63,0x2a,0x53,0x2d,0x39,0xe0,0x53,0xee,0x7d,0xc4,0x8a,0x39,0xc5,0xda,0xfc,0x31,0x7e,0xa2,0x1b,0x11,0x1d,0x8a,0x8e,0x66,0xf4,0x00,0x17,0xd3,0x78,0x1b,0x94,0xad,0xcf,0xdd,0x56,0xce,0xaf,0xf6,0x34,0xe4,0xb6,0x47,0xe0,0xda,0x1b,0x36,0x4f,0x86,0x26,0xc1,0x65,0xec,0x85,0x8c,0xa9,0xfe,0x96 +.byte 0x75,0x0d,0xe3,0xeb,0x9a,0xa6,0x3f,0xb3,0x10,0x03,0x85,0x24,0xf2,0xb5,0xcd,0x69,0x7d,0xba,0xa2,0x5c,0x8a,0x6d,0x45,0xf4,0xc8,0x4f,0x69,0x8e,0xd4,0x69,0x82,0x42,0xfd,0x00,0x59,0xfd,0x20,0x7a,0x63,0x58,0x56,0x30,0x21,0x73,0xbd,0xd4,0x49,0x84,0x3f,0x51,0x0e,0xfb,0xd3,0xfc,0x93,0x17,0x7f,0x23,0x75,0x25,0xea,0x78,0x79,0xf7 +.byte 0xec,0x22,0xef,0x86,0x91,0x0a,0x90,0x10,0x71,0x3b,0xb8,0x8e,0xb7,0xc9,0xd1,0x26,0x98,0x7d,0x1a,0xab,0x74,0x3e,0x5f,0x10,0xa8,0x47,0xdf,0xc9,0x0a,0x03,0xbb,0xe2,0xbb,0x34,0xbe,0x87,0x1a,0x3e,0x13,0x4b,0xd5,0xdd,0x53,0xb7,0x65,0xb4,0x16,0x38,0xd3,0xfd,0x01,0xde,0xe8,0xba,0x1d,0x33,0x5b,0x7b,0x9b,0x9f,0xfb,0xe7,0x8d,0x82 +.byte 0x21,0x78,0x9e,0xb2,0xf5,0x16,0x37,0x88,0x47,0x9d,0x1a,0x2c,0xfe,0x6a,0xac,0xde,0x3e,0xc4,0xa8,0xed,0x64,0x46,0xdd,0x05,0x07,0x60,0xef,0x99,0x96,0xf0,0x84,0x27,0x38,0x58,0xe5,0xc0,0x53,0x7d,0x07,0xe3,0xa5,0x31,0xb5,0x8a,0xe7,0x50,0x94,0xbb,0x29,0xf9,0x58,0x13,0x91,0x5b,0x54,0x77,0xf6,0x91,0xb8,0x75,0x05,0x3d,0x70,0x3e +.byte 0x07,0x95,0x7d,0x37,0xbd,0x1d,0x29,0x4d,0x33,0x07,0x13,0x2b,0x54,0x70,0x9c,0x31,0xf1,0xcd,0x2d,0x28,0x09,0x43,0x90,0x24,0x8c,0x82,0xb0,0x08,0x71,0x08,0x97,0x7e,0x1a,0xbc,0x82,0xd8,0x31,0x0a,0x13,0xe9,0x22,0xf0,0x8d,0x2b,0x91,0xe5,0x2e,0x34,0x56,0x97,0x86,0xc9,0xbd,0x45,0x1e,0x32,0x03,0xcb,0xa1,0x29,0x00,0x81,0xd4,0x6e +.byte 0x5d,0xbc,0x0f,0x01,0x8d,0x5c,0xb9,0x80,0xcc,0xfe,0x0d,0xa3,0xef,0x8e,0x85,0x59,0x37,0xf7,0x64,0xa7,0xe5,0x2a,0xd5,0x44,0xee,0x91,0xcf,0x6c,0xf5,0x0a,0x9b,0xc7,0xdf,0xb6,0x02,0x2d,0xa4,0xf1,0x22,0x2a,0x97,0xfe,0x1d,0xb7,0x4c,0xc7,0x4f,0x2f,0x0b,0x38,0xd2,0xbf,0xfe,0xe3,0x94,0x55,0xae,0x85,0x0c,0x34,0x59,0x67,0x23,0x7b +.byte 0x4a,0x87,0xd9,0xd2,0xca,0xd5,0x38,0xd2,0x9d,0x05,0x2e,0xd8,0xe3,0x26,0x51,0xa4,0x14,0x66,0xfb,0x38,0x40,0x18,0x3b,0xda,0x43,0x85,0xc9,0xf5,0xf4,0xe7,0x22,0x82,0x45,0xa1,0xdf,0x98,0xa0,0xab,0x5f,0x7a,0x50,0x84,0x75,0x7a,0x70,0xa6,0x3b,0x04,0x20,0xed,0xa8,0x68,0x6d,0x3f,0x43,0xf8,0xb8,0xac,0xc7,0x32,0xa0,0xff,0x47,0xd5 +.byte 0xb3,0x92,0x6a,0x15,0x5a,0xf1,0x7c,0x32,0x30,0xda,0x1e,0x5d,0xab,0xcc,0xd0,0x3a,0xdc,0xcf,0x70,0xd8,0x4d,0xa3,0x50,0xac,0x50,0x42,0x53,0xc6,0xe0,0x3a,0x26,0xdc,0x77,0x30,0x31,0x59,0xa1,0xfc,0x4d,0x48,0x00,0x0d,0xe0,0x66,0xb3,0x9b,0xd3,0x38,0x45,0xbb,0x0c,0x57,0xc5,0x78,0xee,0x8c,0x96,0xea,0xa2,0x16,0xa3,0x12,0xb1,0x06 +.byte 0xd0,0x2a,0x70,0xf7,0xce,0x42,0xae,0x17,0x64,0xbf,0x13,0xa0,0xe9,0x62,0x57,0x1d,0x55,0x78,0xfa,0x72,0x19,0x58,0x15,0xea,0xe5,0xdf,0x72,0x0e,0xc6,0xd3,0xb4,0x3d,0x60,0xee,0x32,0x2a,0xce,0xdc,0xad,0xd0,0x34,0xe6,0xb4,0xcf,0xce,0x5a,0x4a,0x9f,0xaf,0x01,0xb3,0x2a,0xed,0x46,0xa0,0xad,0xaa,0x62,0x8b,0xa4,0xf7,0x4b,0xce,0x32 +.byte 0x35,0x29,0x1e,0x7a,0xda,0x74,0xf8,0xe5,0xda,0x52,0x66,0xaf,0x3d,0x1a,0xff,0x42,0xc0,0xcc,0xb1,0x32,0x36,0x10,0x44,0x34,0x6a,0x16,0xc2,0x5b,0x9a,0x35,0x3f,0xd2,0x29,0xc5,0x76,0x3c,0x24,0xc7,0x2b,0x92,0xae,0xe0,0xe2,0x04,0x6c,0x3b,0x97,0xda,0xfd,0x49,0x43,0x6d,0x35,0xf5,0xc3,0xc1,0x93,0xf8,0x2f,0x25,0xef,0x3e,0xd8,0xf2 +.byte 0xc0,0xb3,0xb5,0x71,0x01,0xe0,0x07,0x11,0xd5,0xf1,0xd3,0x54,0x59,0x93,0x77,0x2e,0x77,0xdc,0x57,0xd7,0x9b,0x0a,0xe2,0xde,0x29,0x04,0x81,0xa1,0x81,0x6f,0x94,0x86,0x39,0xd7,0x29,0x69,0x3f,0xfa,0xe4,0x02,0x01,0x85,0x04,0x21,0xd3,0x17,0xf5,0x68,0x85,0x6e,0x74,0x15,0x56,0xe6,0x5e,0x12,0x1c,0x0d,0x2f,0x7a,0x8d,0xe1,0xc8,0x47 +.byte 0x7b,0xdc,0x35,0x64,0xf1,0x00,0xc0,0x7b,0xd8,0x2c,0x8c,0x60,0x10,0x53,0x11,0x2c,0x5c,0xa2,0xb6,0x05,0xa3,0xcd,0x14,0xb6,0xd0,0x36,0xe9,0x74,0x78,0xc3,0x84,0x6b,0x51,0xa9,0xf9,0xf1,0x05,0xe2,0xd4,0xa3,0x57,0xec,0xb1,0x5e,0xd5,0x75,0x64,0xe3,0xb0,0xf9,0x8f,0x88,0x60,0xdf,0x8e,0x75,0xf9,0x32,0xfc,0x58,0x5b,0x4b,0x17,0xdb +.byte 0x41,0x04,0x6f,0x17,0x7a,0xf8,0xd0,0x47,0x8e,0xeb,0xd1,0xf9,0xa6,0xa8,0x52,0x7e,0x07,0x6b,0x5b,0x4d,0xb9,0xda,0x91,0x40,0x51,0x25,0x67,0x4b,0xf1,0x95,0x12,0x07,0xa9,0xa5,0x33,0x96,0x92,0x5e,0xb4,0x0e,0xf0,0x85,0x2e,0x70,0xd8,0xaf,0xae,0x9a,0x3d,0x0c,0xb0,0xee,0xe1,0x80,0x5a,0xb9,0x17,0xe6,0x00,0xa8,0x82,0xd0,0x9b,0xf5 +.byte 0xe3,0xa0,0x12,0xc4,0x15,0xd6,0x5e,0x57,0x5c,0xd2,0xb9,0xa7,0x8e,0xfd,0x09,0xc3,0xd2,0x66,0xfd,0x86,0xb4,0xdc,0xa3,0xc2,0xfe,0x16,0x86,0xc4,0x98,0xa3,0x2e,0x4c,0xc9,0x2c,0xd6,0x87,0x83,0x1b,0x6f,0xe2,0x44,0xd6,0x72,0x94,0x1d,0xba,0xaf,0x34,0x1f,0xf2,0x40,0x40,0x33,0x24,0x63,0xc1,0x26,0xef,0xbc,0x0f,0x3b,0x3c,0x65,0x2b +.byte 0xa7,0xc7,0xdf,0x96,0x67,0xab,0x92,0x0e,0x04,0x8c,0x82,0x9e,0xbe,0x52,0x61,0x40,0xdf,0x77,0x00,0xc5,0x01,0x9a,0xe9,0xde,0xe1,0xe2,0x45,0xb8,0xed,0x94,0xd5,0xf0,0x28,0x29,0xef,0x0d,0x91,0x07,0x9b,0xfe,0x69,0x78,0x26,0xd7,0xf9,0x51,0xf1,0x9c,0xf2,0xbb,0x83,0x2d,0x79,0x1e,0xff,0x97,0x13,0xdc,0x28,0x93,0x26,0x7c,0x54,0x52 +.byte 0xc0,0x92,0xeb,0x4a,0xa2,0xe3,0x01,0xfc,0x07,0xb9,0x26,0x11,0x03,0xe0,0x19,0xa8,0x9c,0xff,0x3a,0x95,0x26,0x3a,0x17,0xf1,0x7d,0x6a,0x6a,0xb2,0xb5,0x5a,0x07,0x43,0x2b,0xb7,0xdd,0x19,0x14,0xe0,0x05,0x91,0xc5,0xee,0x49,0x35,0x7b,0x1a,0x2d,0x34,0xda,0xa2,0x45,0x7e,0x0d,0x64,0x98,0xb6,0x2e,0x47,0xaa,0x6c,0x73,0x66,0x55,0x01 +.byte 0x27,0xb0,0xa9,0x13,0xa6,0xe0,0x74,0x38,0xb3,0x97,0xfe,0xaf,0xdc,0xc0,0x6a,0x4f,0xd8,0xdb,0x07,0x62,0x61,0x05,0xbb,0xa0,0xa8,0xc5,0xb3,0x89,0x13,0xbb,0x09,0x01,0x6f,0x09,0xcb,0x47,0x62,0x46,0xf0,0x4b,0xf0,0xb7,0x7c,0x39,0x8d,0xe5,0x7b,0x64,0x49,0x32,0x93,0x1e,0x94,0x0a,0x98,0xe0,0xca,0xc6,0x67,0x5b,0xdf,0x88,0x0a,0x26 +.byte 0x83,0x77,0xc3,0xd0,0x11,0x66,0x3d,0x25,0x91,0x61,0x80,0xfc,0x9c,0x50,0xfb,0xe8,0x81,0x6f,0xd8,0xfa,0x77,0x78,0x4c,0x2b,0x44,0xd0,0x92,0x52,0xa4,0x50,0x50,0x7e,0xa2,0xb9,0xe7,0x79,0x33,0x95,0xfe,0x29,0x1c,0x1d,0x43,0x9d,0xa7,0x12,0xfe,0xa1,0x45,0xf4,0xd9,0x1c,0x7e,0x5a,0x67,0x99,0x7f,0x22,0x7c,0xa3,0xb1,0x2d,0xb7,0x1d +.byte 0x6b,0xf6,0xb4,0x94,0xf2,0xd1,0x5c,0x28,0x56,0xe9,0x4f,0x21,0x81,0x96,0x37,0x7c,0x25,0x74,0x0f,0xf9,0xc5,0xf5,0xc6,0xe8,0x8f,0xbb,0xfb,0xe4,0xaf,0x23,0xac,0x4c,0x20,0x35,0x7d,0xb4,0x4a,0xde,0x90,0xec,0x16,0x30,0x95,0x1b,0x79,0xf6,0x77,0xfe,0x80,0x10,0xba,0xd2,0x49,0xda,0xca,0x9e,0x6b,0x63,0x2f,0x24,0x38,0xf9,0xee,0x20 +.byte 0x38,0x5c,0xeb,0xf5,0xbc,0x07,0x7a,0xeb,0xde,0xc4,0x97,0xcf,0x48,0x9b,0x80,0x40,0xfa,0x81,0xf5,0x24,0xa7,0xf3,0xf7,0x16,0xe9,0xba,0xae,0x9f,0xde,0xa1,0x00,0x34,0x74,0x36,0x9f,0x47,0xce,0xcf,0x35,0xdb,0x30,0x7e,0x72,0x81,0xc5,0xe1,0x59,0x07,0x3e,0xc7,0x5b,0x7b,0xd3,0xc6,0xeb,0x4e,0x71,0x9c,0xeb,0x41,0x37,0xd9,0x9e,0x34 +.byte 0x0b,0xc1,0x9c,0xf7,0xfd,0x56,0xb0,0xd6,0xa6,0xe4,0x1d,0xdf,0x43,0xc6,0xf3,0x26,0x0f,0x01,0x07,0x29,0x57,0x9c,0x8f,0xe1,0x31,0xc9,0xa6,0x98,0x0f,0x0e,0x27,0xfd,0xa0,0x59,0xdf,0x92,0x7b,0x0a,0x4c,0x42,0x4b,0x03,0x98,0x2a,0xea,0xcb,0xd8,0x0f,0x6d,0x19,0x0b,0x22,0x69,0x8b,0xaa,0x3b,0xc8,0x41,0x66,0x81,0xc3,0xaa,0x64,0x6d +.byte 0x44,0xdd,0xb9,0xe2,0xc4,0x47,0x6d,0xdf,0x61,0xe0,0xf3,0x26,0x40,0x23,0x2f,0xf9,0x2a,0xb3,0xfa,0xe2,0xe8,0x36,0xc0,0xd9,0x89,0xb0,0x05,0x47,0x36,0x20,0x3b,0x03,0x0c,0xd1,0x46,0x9b,0xc9,0x65,0xfa,0x14,0xba,0x68,0x49,0xfc,0x2a,0xb9,0x04,0x47,0xbb,0x64,0xe1,0x7f,0x5a,0xd3,0x70,0x19,0x0f,0x14,0x09,0xc0,0xbe,0xc3,0x9b,0x2f +.byte 0xd1,0x05,0x90,0x56,0x09,0x47,0xb3,0xc5,0x08,0x6f,0x89,0x59,0x8c,0xf3,0xd4,0x1c,0xaf,0x68,0x00,0x32,0x58,0xe2,0x66,0x55,0xe2,0xc3,0x46,0x73,0xfd,0x4b,0x63,0xc5,0xdd,0x48,0xa8,0x14,0xe9,0x07,0x94,0x8f,0x51,0x6e,0x2d,0x7c,0x62,0x97,0x73,0xa5,0x42,0x7d,0xad,0x43,0xcb,0x65,0x56,0xf0,0x23,0x28,0x72,0xdb,0x1f,0xcf,0x34,0x9a +.byte 0x62,0x06,0x8d,0xc9,0x86,0x40,0x6d,0xee,0x58,0x72,0x02,0xbb,0xce,0x33,0x6a,0xe4,0xcb,0x46,0x25,0xda,0x2f,0x8d,0xc9,0x8e,0xfe,0xcf,0xbb,0xfc,0xb0,0xe8,0xec,0xf2,0xf9,0xff,0x5d,0x70,0x9e,0x2e,0x22,0x0e,0x9a,0x4d,0xb8,0x26,0x7a,0x48,0x3f,0xba,0x5c,0xcd,0x10,0xf4,0x6d,0x89,0x3d,0x5d,0x87,0xd4,0x69,0xb8,0x4a,0x20,0xc6,0xf8 +.byte 0x03,0x6c,0x60,0x1e,0x9c,0xc6,0xe3,0x39,0x9b,0xa1,0x16,0x64,0xed,0xc6,0xd7,0x54,0xfd,0x8d,0xa0,0x2f,0xcf,0xc6,0xde,0x43,0xe4,0xc5,0xb7,0xd6,0x00,0xaf,0x95,0x7a,0xc6,0xde,0x26,0x59,0x39,0xb0,0x12,0x6b,0xe1,0x3c,0xa9,0x09,0xb6,0x15,0xb0,0x62,0xad,0xa9,0x11,0x4f,0x86,0xde,0xc6,0xe8,0x32,0x46,0x78,0xeb,0x60,0x81,0x6b,0x8f +.byte 0xac,0x80,0xbf,0xa4,0xc4,0xb7,0x5f,0x3b,0x2f,0xf8,0xe4,0x05,0xcf,0xbf,0xa3,0x14,0x6f,0x16,0xbc,0x6c,0x4e,0x31,0xd7,0x79,0x09,0xcf,0x9c,0x58,0xa3,0x0b,0x1a,0x31,0x4b,0xda,0xcb,0x11,0x35,0xb1,0xf5,0xbb,0xfb,0x00,0x46,0x6d,0x70,0x5e,0x4a,0x85,0x19,0xdf,0xb5,0xd0,0x03,0x2e,0x5d,0x01,0x95,0x4e,0x5a,0x59,0x99,0x24,0xac,0x3f +.byte 0x2d,0x64,0xaf,0xef,0x40,0x16,0x2a,0xcc,0x6a,0x6c,0x0f,0xe3,0x45,0x15,0x74,0x3d,0xea,0xdb,0xa7,0x3f,0xd2,0x50,0x4d,0xc7,0xc6,0x19,0x36,0x84,0xf4,0xbd,0x09,0xff,0xe7,0xf3,0xc0,0xa5,0x34,0x49,0x8a,0xfe,0x83,0xcd,0xe4,0x80,0x7d,0xe3,0xff,0xc9,0x8a,0xb9,0xd6,0x34,0x01,0xd1,0x47,0x16,0x5e,0x7c,0x16,0xf5,0x7c,0xf8,0xb5,0x53 +.byte 0x26,0x84,0x89,0x73,0xf3,0x7f,0x9c,0xb0,0x2f,0x07,0x9e,0xf2,0x12,0xdf,0xba,0xc0,0x15,0xd0,0x3a,0x59,0x9d,0xde,0x67,0x5e,0x1c,0x2b,0x4b,0x84,0xb8,0x89,0xfb,0x62,0x90,0xe9,0x89,0xd9,0xdb,0xb7,0x21,0x4a,0x9f,0xbd,0xc0,0x02,0x01,0xda,0xb3,0x4c,0x9d,0xfb,0x46,0xa1,0xd0,0x3c,0xf5,0x27,0x6f,0x70,0xb5,0xa9,0x74,0xdc,0xa0,0x76 +.byte 0xb7,0x3a,0x53,0x18,0xdd,0x80,0x5e,0x43,0xb5,0x35,0xe4,0x0e,0x26,0x27,0x0a,0xab,0xe8,0x4d,0x2e,0x89,0x20,0xc3,0xff,0xe4,0x7f,0x03,0x2c,0x5f,0x25,0xc7,0x70,0x53,0x27,0x4c,0xc8,0xb9,0xb1,0x81,0x10,0x7a,0xa2,0x65,0xe4,0x0b,0x65,0x8e,0x3d,0x2f,0x96,0xa0,0xa5,0x7b,0x4f,0x09,0xe9,0x9d,0x10,0x06,0xf7,0x18,0xad,0x2d,0x7f,0xb8 +.byte 0x8f,0x08,0xa7,0x2c,0xda,0x82,0xbe,0x5c,0xd6,0x1d,0xb6,0xe2,0x9b,0xa2,0xfc,0x18,0x8c,0x8d,0xf7,0x81,0xf4,0xc6,0x1e,0xcb,0xe5,0x73,0xa6,0x74,0x06,0x20,0xf3,0xa9,0xcb,0x80,0x01,0x55,0x7e,0xc0,0x6a,0x1f,0x5a,0x5b,0xb1,0x56,0x5d,0xd8,0x2a,0xd5,0xf5,0x57,0xe8,0x48,0x6c,0xfb,0x9e,0x93,0xa7,0x0e,0x13,0x2b,0x68,0xc5,0x6b,0x17 +.byte 0x43,0xb0,0x58,0x04,0x65,0x3d,0x46,0x57,0xa7,0x3d,0x99,0xb8,0xa1,0x48,0x17,0x44,0x67,0x2a,0x0d,0x44,0x87,0x9f,0x63,0xd7,0x92,0x56,0x7b,0xab,0xd3,0x6a,0xbd,0x4f,0xc0,0xc3,0xd2,0xee,0xd1,0x3d,0xd1,0x18,0x2e,0x6a,0xf5,0x3b,0x67,0xa0,0x0a,0xf3,0x11,0x49,0xc5,0x4b,0xef,0xcf,0x00,0xfd,0x22,0x8f,0xa0,0x9c,0x99,0x32,0x2f,0x58 +.byte 0xf9,0x97,0x98,0x13,0x4a,0x88,0x50,0xcc,0x58,0x1e,0x27,0x02,0x34,0x7d,0xec,0xf6,0x88,0x3a,0x74,0xb5,0x34,0x6d,0x6f,0x52,0x2d,0x20,0x02,0x70,0x22,0x27,0xdf,0x7a,0xff,0x30,0x36,0x66,0x1a,0xa0,0x51,0xc3,0x75,0x9a,0x06,0xe5,0x3f,0x6c,0x74,0x0d,0x15,0xa2,0xb6,0xe5,0xcd,0x55,0x4d,0xea,0x65,0x8f,0xbb,0xb2,0xd4,0x95,0x73,0xa4 +.byte 0xcd,0xb9,0xc8,0x82,0x60,0x49,0xe9,0x36,0xc9,0xb1,0xe9,0xcb,0x52,0xae,0xa7,0x7a,0x64,0xab,0x75,0x84,0x03,0x4b,0x37,0xf7,0x07,0x75,0xf7,0x1c,0x32,0x19,0xb6,0x8b,0xca,0x7c,0x43,0x15,0xe8,0xec,0x57,0x89,0x1d,0xe2,0xa0,0x80,0xc5,0xb6,0x02,0x29,0xfd,0xda,0xe0,0x14,0x93,0xb4,0xb3,0x44,0x2e,0x17,0x2f,0xed,0x3b,0x38,0x6e,0x8f +.byte 0xe0,0x3d,0xc6,0x77,0xe9,0xa7,0x76,0xcb,0x98,0x2d,0x08,0x61,0xcf,0x1b,0x25,0x3f,0xfb,0x1d,0x99,0xb1,0x5a,0x3c,0x53,0x96,0x4e,0x09,0x11,0xf6,0x5b,0x09,0x31,0xe1,0xad,0xb0,0xaf,0x7b,0xec,0xf9,0xa8,0x68,0xb7,0x93,0x57,0xf7,0x17,0x77,0x87,0x2b,0xdb,0x00,0x28,0xc6,0x48,0xac,0xff,0xcd,0x26,0x4a,0x8a,0x76,0x9a,0x2a,0x1d,0x37 +.byte 0x4c,0x70,0x4f,0xf6,0x52,0xe3,0x7a,0x78,0x94,0x5b,0x0b,0x50,0xb4,0x48,0x03,0xcd,0x78,0xd0,0x5d,0x89,0x6d,0x76,0xaf,0x9d,0x67,0xc3,0x75,0x6f,0x6a,0x2d,0xe2,0xb7,0x58,0x51,0x10,0x0d,0xef,0xa0,0x1a,0x74,0x28,0x3a,0x97,0x19,0x4f,0x3c,0x8a,0x86,0x3d,0xe4,0x66,0x3d,0x57,0xb4,0x66,0xb3,0x0b,0x4f,0x57,0x57,0x34,0x2e,0xc7,0x0c +.byte 0x11,0xdf,0x3c,0xb4,0x9f,0xe1,0xd5,0x27,0x41,0x08,0xec,0xca,0x18,0x88,0x48,0x5e,0x88,0x55,0x89,0x71,0xe6,0xa5,0x90,0x7c,0x3b,0xe5,0xf3,0x2a,0xd7,0xf5,0x0b,0x3d,0xbb,0x47,0xad,0xd7,0x78,0x41,0xa8,0xef,0xd4,0x36,0x31,0xd1,0xe4,0x9c,0x87,0x9e,0xb1,0x11,0x0e,0xff,0x8f,0x4d,0x79,0x65,0xc4,0x83,0x75,0x33,0xc9,0x89,0xe2,0xc3 +.byte 0x41,0x68,0x11,0xe7,0xe4,0x58,0xb9,0xf1,0xee,0x06,0x48,0x4d,0xc3,0xc7,0x76,0x60,0x42,0x94,0x8f,0x0d,0xb9,0x53,0x46,0x78,0x06,0x97,0x94,0x36,0xf4,0x3e,0xf3,0xdd,0x5b,0x46,0xe1,0x9d,0x3f,0x9e,0x78,0x00,0x9e,0xe7,0xcb,0x9e,0xc8,0x30,0x87,0x4a,0x52,0x91,0xd5,0xe2,0xa3,0x65,0x98,0xb2,0xc9,0x6c,0xfb,0x4e,0x54,0x5a,0x9f,0x57 +.byte 0x2c,0x4a,0x76,0xe4,0x97,0x88,0xd5,0x6a,0x0e,0x6c,0x7c,0xef,0x78,0x2a,0x7c,0x26,0xa3,0x25,0xf6,0x33,0x82,0x46,0x6d,0x91,0x0d,0xe4,0x83,0xec,0xf1,0x24,0xf8,0x0a,0x34,0xec,0xfc,0x7e,0x47,0xda,0x9a,0x17,0x1b,0x33,0xd0,0xf1,0x70,0xe4,0x0b,0xc7,0x70,0x58,0x1d,0x76,0x20,0x89,0xce,0x4f,0xd1,0xcb,0x3b,0x26,0xd1,0x98,0xd9,0x51 +.byte 0xb1,0xd0,0xaa,0x4a,0xd5,0x10,0xf2,0xae,0xaa,0x14,0xa7,0x72,0x99,0x3d,0xc8,0xbf,0xfb,0xec,0x6a,0x14,0xdd,0x97,0x7b,0x2f,0x16,0x96,0x0f,0x41,0xb8,0x33,0x15,0x1b,0xa2,0x6a,0x7e,0x64,0x0d,0xab,0xe7,0x62,0xf5,0x6c,0x56,0x69,0x09,0x46,0x32,0x24,0x60,0x4e,0x21,0xc7,0x5b,0xee,0x0a,0xe2,0x94,0x7c,0x20,0xe2,0x06,0xa0,0xa2,0x36 +.byte 0xa0,0x7d,0xb5,0x37,0x2a,0xee,0x20,0x25,0x4c,0xba,0x9a,0x06,0x4c,0x07,0x9b,0xea,0x55,0xac,0x2a,0xf7,0xb9,0x5c,0x23,0xac,0x43,0xda,0x9d,0xad,0x76,0xe2,0x5f,0xe0,0x27,0xaf,0x0a,0x5e,0x3d,0x54,0x84,0xfc,0x19,0x75,0x8c,0x62,0x4d,0x37,0x17,0x1a,0x90,0x55,0xb8,0x7e,0xa1,0xad,0x31,0x1a,0xc0,0x91,0x96,0x51,0xa9,0x5f,0xbb,0xb9 +.byte 0x95,0xbf,0xe2,0xd5,0x7e,0x31,0xba,0xc4,0x1e,0x63,0x98,0xd3,0xe2,0x7d,0x87,0xa5,0x46,0xe3,0xae,0xe1,0xe8,0x4e,0x74,0x29,0x0e,0x4b,0x10,0xa8,0x7f,0x3a,0xe5,0x60,0x0f,0x49,0x6a,0xcd,0x3d,0x5a,0x8e,0xf1,0x48,0xd0,0x80,0x7b,0xa3,0x7f,0x06,0x47,0x2b,0x60,0xf2,0x17,0xc3,0xe1,0x26,0x1e,0xb7,0x0f,0x2b,0x7c,0xc7,0xb8,0x3a,0x4f +.byte 0xad,0x05,0x97,0x88,0x93,0x82,0x8e,0x06,0x77,0x44,0xd1,0x65,0xfd,0x18,0x48,0xd6,0x88,0xcd,0x5c,0xbd,0xe4,0xaa,0xea,0xf1,0xed,0x16,0x5f,0xb3,0x58,0xe2,0x69,0x82,0xbe,0x9e,0xfc,0xcb,0xf6,0x17,0xa9,0x70,0xeb,0x08,0xd7,0x06,0x86,0xf6,0x5a,0x43,0x68,0x7b,0xcf,0xa3,0xfa,0x26,0x5e,0xe5,0x42,0xd3,0x5a,0xc8,0x1c,0x3b,0x8d,0x2d +.byte 0xf1,0x45,0xb0,0x97,0x90,0x0b,0xe7,0x2d,0xab,0xd7,0xd8,0x8a,0x16,0xf9,0x5f,0xa6,0xcf,0xc5,0x60,0x2c,0x34,0x5a,0x2e,0x2b,0xb9,0xb4,0x9c,0xa7,0x09,0x77,0xd2,0x3f,0x8c,0xf3,0xf6,0xf7,0xe0,0x27,0x79,0xc3,0x4e,0x61,0x7d,0x09,0x50,0x05,0x01,0x35,0x1b,0x33,0x54,0x6f,0x90,0x9a,0x19,0xcd,0x86,0x45,0x23,0xcd,0x6f,0x1b,0x62,0xc5 +.byte 0xce,0x4e,0x8e,0xff,0xe7,0x12,0x32,0x85,0x9a,0xc4,0x11,0x83,0xcf,0x78,0xd7,0x41,0x99,0x64,0x20,0xa6,0x69,0xdd,0xe3,0x53,0x98,0x6b,0xc7,0x98,0x51,0xc5,0xf8,0x3e,0xa3,0x5f,0x0d,0x78,0x2f,0xa7,0x05,0xff,0xe5,0x3a,0x0f,0x7c,0x09,0x58,0x3f,0xaa,0x0d,0x9a,0x9d,0x8d,0xe7,0xbf,0x6b,0x7d,0xfe,0x3a,0x4f,0x5c,0x50,0xb2,0xe7,0xc5 +.byte 0xa5,0x13,0xde,0xc8,0xe8,0x59,0xac,0xb0,0xdd,0xc0,0x81,0xa7,0x0b,0x78,0x32,0x23,0x76,0x85,0x11,0xef,0xe3,0x88,0x6f,0x7f,0xa9,0x09,0x7b,0x0c,0x6f,0x34,0xb2,0x67,0x5e,0xd6,0x11,0xad,0xd7,0x3b,0xf2,0xbb,0x66,0x5b,0xde,0x22,0xfc,0x55,0x26,0xa1,0x89,0x80,0x2e,0xb8,0xf3,0x3c,0xf8,0x1e,0xba,0x99,0x1c,0x24,0x33,0xb4,0xe6,0x17 +.byte 0x2b,0x9c,0x80,0xe5,0x9b,0x58,0x54,0x70,0xcd,0x15,0x81,0xcd,0x51,0x48,0x75,0x24,0x27,0xf5,0x30,0x79,0xc1,0x16,0xff,0x89,0x70,0x12,0x74,0x07,0x9d,0x39,0xf2,0x9c,0xc6,0x89,0x8d,0x94,0x41,0x01,0x04,0xf5,0x16,0x99,0xf3,0xf0,0xd1,0xf5,0x6d,0xd3,0x11,0x19,0x29,0x36,0xfb,0x41,0xf9,0x32,0xb9,0x0f,0x13,0xaf,0xac,0xfb,0x30,0x75 +.byte 0x62,0x8c,0x04,0x5b,0xf1,0xce,0x52,0x9b,0xbe,0x8c,0xf9,0x86,0x5d,0x7d,0xc1,0x8e,0x41,0x76,0x42,0x63,0xd7,0x74,0x8e,0x2c,0x46,0xa1,0x0a,0x51,0xb5,0xec,0xe9,0x91,0x56,0xbc,0xdc,0x32,0xfc,0x10,0xb5,0xca,0x5b,0x4b,0x72,0x99,0x07,0xff,0x01,0x11,0x2c,0xa4,0x60,0xf5,0x6b,0xd4,0xa8,0x96,0x21,0xee,0xbe,0x14,0x8f,0x69,0x99,0xdc +.byte 0x43,0x7f,0x13,0x3d,0x17,0x1e,0xa3,0x1b,0x21,0x23,0x26,0x7e,0xff,0x80,0x6b,0x66,0x3e,0xb2,0x48,0x1a,0x77,0x3c,0x50,0xe2,0xca,0x4d,0xc6,0xdb,0xfd,0xd1,0x23,0xcc,0xcb,0x01,0x25,0xc0,0x62,0x8d,0xe5,0x9c,0xb7,0x13,0x97,0xf5,0x49,0x01,0x19,0x45,0x45,0x83,0x17,0xff,0x8e,0x94,0x8c,0xb0,0xc0,0xaf,0x46,0x62,0x0e,0x62,0xb7,0x8c +.byte 0xd5,0xcf,0xb9,0x82,0x6e,0x8a,0xb9,0x22,0xbc,0x30,0xf9,0x65,0xc2,0x7f,0xce,0x6b,0x4d,0xad,0x87,0xcb,0x23,0xab,0x57,0x36,0x6a,0xb7,0x8c,0x63,0x17,0x60,0x13,0xa1,0x1f,0x3d,0xa4,0xd4,0xab,0x5d,0x97,0xc7,0x18,0xaf,0xf8,0xae,0x13,0x64,0x2a,0x19,0x34,0xe2,0x28,0x28,0x4f,0x32,0x2a,0xd8,0x43,0x79,0xaf,0x1e,0x56,0xfc,0x97,0x51 +.byte 0x67,0x8c,0x63,0x80,0x32,0x63,0x71,0x5c,0x78,0x00,0xeb,0xfd,0xa2,0x96,0x58,0x21,0x36,0x13,0x02,0xe5,0xa4,0xb7,0xcd,0x5a,0x30,0xa0,0x5b,0x7b,0x23,0xa4,0xcc,0x54,0x64,0x6f,0x6d,0x9b,0xaf,0xea,0x49,0x69,0x9e,0x2f,0x51,0x5c,0xe7,0xa3,0xa3,0xb8,0xac,0xed,0x47,0x23,0x7a,0x37,0x38,0xe3,0x15,0x98,0x6f,0x50,0x6c,0x8d,0xa7,0xe6 +.byte 0xa8,0x39,0xcc,0x63,0x08,0xeb,0x8f,0x8c,0xfd,0x83,0xaa,0x34,0x75,0x19,0xc0,0xf4,0xd6,0x25,0x18,0x94,0x9d,0xa1,0x7e,0xc8,0x6b,0x19,0x76,0xc0,0x8d,0xaf,0x51,0xe5,0x7c,0x8a,0x98,0x17,0x80,0x90,0xc0,0xb6,0xed,0x5c,0x8f,0x33,0x56,0xba,0xce,0xbe,0x83,0x87,0x5d,0x51,0x2e,0x64,0x84,0xa6,0x9d,0x49,0x27,0x5b,0x92,0xe0,0xe7,0xac +.byte 0x37,0x3d,0x22,0x5e,0x25,0xe7,0xca,0x2f,0x5d,0x2f,0xa0,0xd5,0xcb,0xe9,0xac,0x84,0x5b,0x19,0x72,0x1c,0x2c,0x0a,0xd1,0xb7,0x73,0x24,0x8a,0x0f,0xe0,0x07,0xd8,0x49,0x4d,0x23,0x1b,0xac,0xb8,0xd1,0x42,0xd4,0xdf,0xf8,0x4d,0x85,0xa2,0x37,0x30,0x46,0x38,0x88,0x55,0x1d,0xea,0x37,0x54,0x8c,0x43,0xb0,0xed,0x01,0x53,0x75,0xe6,0xf7 +.byte 0x9b,0xe6,0x10,0x91,0x6e,0x80,0x11,0xf9,0x96,0x29,0x4f,0x08,0x77,0x2b,0x7e,0xdb,0x5b,0x14,0xbd,0x77,0x37,0xe8,0x36,0x07,0x4a,0xe4,0xd8,0xa2,0x4e,0x38,0xea,0xeb,0xc2,0xd6,0x43,0x59,0x20,0x0c,0x12,0x31,0x6c,0x27,0xc5,0x7b,0xfc,0xfc,0x54,0x94,0x1d,0x5f,0x82,0x73,0xd7,0x1f,0x43,0x3a,0x73,0xc4,0xf3,0xb3,0xbb,0x53,0xfe,0x22 +.byte 0xc0,0xa4,0x7e,0x2b,0x84,0x1b,0xef,0x6d,0x83,0x9d,0xb3,0x8b,0x2a,0x6c,0xea,0x1e,0xfa,0x77,0x01,0x35,0xd2,0x5b,0xc4,0xd3,0xe7,0x1e,0xca,0x73,0x8b,0xb9,0x1f,0xfb,0x67,0xf2,0xdd,0x03,0xe6,0xca,0xfe,0x3b,0x61,0xd7,0xb5,0x96,0xe0,0x85,0xc2,0x23,0xa7,0xea,0x38,0xbf,0x6e,0x29,0x9e,0x8e,0x18,0xd4,0xbf,0x16,0x73,0xf9,0x18,0xef +.byte 0xc9,0xaf,0x6c,0xe2,0xdc,0xa4,0x58,0x9c,0xf5,0x6d,0x4a,0xc8,0xb4,0x8f,0x16,0x02,0xb7,0x65,0xd3,0x32,0x3b,0x83,0xfe,0xf3,0xc7,0xba,0x68,0xf4,0x95,0xa4,0xf6,0x33,0x57,0x43,0xbe,0xae,0x83,0xa9,0xe4,0x0d,0x0b,0x23,0xaa,0xbc,0x15,0x53,0x18,0x4d,0xb4,0x35,0xe3,0x8e,0x86,0xfe,0xe4,0x98,0x5d,0x63,0x23,0xce,0x44,0xea,0x4d,0x64 +.byte 0x86,0xf8,0x06,0x8f,0xc0,0x73,0xa6,0x6d,0x04,0x53,0x47,0x95,0x0f,0x6d,0x6c,0x01,0x1c,0x3f,0x7b,0x83,0xe4,0xc2,0x40,0xb8,0x97,0x26,0x9e,0x35,0xb0,0x76,0xee,0xe4,0xc7,0xd8,0xaa,0x22,0x83,0x96,0xe1,0x34,0x7b,0x78,0x31,0xee,0xd3,0x9a,0x50,0xd4,0x05,0xfd,0xd6,0x15,0xca,0x83,0x2f,0x49,0xfd,0x00,0x23,0x82,0x39,0xac,0x46,0x7a +.byte 0xe4,0xb5,0xcc,0xee,0xbb,0xaa,0x98,0x82,0xb5,0x27,0x45,0xd5,0x96,0x6e,0x89,0x01,0x1e,0x30,0xe4,0x1c,0x3a,0x65,0xcc,0x9f,0xda,0x38,0xf0,0x4c,0x68,0xfa,0xe5,0xf2,0xe2,0xce,0x34,0xc2,0x15,0xfd,0x21,0xf6,0xe2,0x33,0xbd,0xef,0xfd,0x49,0x15,0xdc,0x38,0x3b,0x24,0xba,0x3a,0x80,0x35,0x60,0xbe,0x50,0x17,0x38,0x3e,0xe2,0x96,0x84 +.byte 0x01,0x41,0x6c,0xb2,0x0b,0xc6,0xff,0xce,0xb3,0x37,0xa2,0x46,0x27,0x33,0x8e,0x04,0x44,0x8a,0x7c,0x64,0x0e,0xbc,0xed,0x74,0x4f,0x40,0x58,0xf4,0x8c,0xf8,0xd9,0x92,0xa9,0x0b,0x18,0x7c,0x93,0x95,0xca,0xa7,0x3e,0x1d,0xad,0x68,0x80,0xd9,0xdb,0x81,0x78,0x50,0x37,0x49,0xbc,0x64,0xc2,0x52,0x5c,0x70,0x7e,0x0a,0x26,0x7e,0xc6,0xbf +.byte 0xd2,0x7f,0x05,0x55,0x7a,0x5a,0x3e,0x9e,0xe3,0x8b,0xf5,0x95,0x2b,0xd8,0xb4,0xb8,0xc6,0x5d,0x91,0xb8,0xc7,0x7c,0xe1,0x75,0xf2,0x43,0x6b,0x73,0xb7,0xb1,0x10,0xf2,0xa7,0x1e,0xab,0xaf,0xc9,0xc0,0x3b,0xab,0xbe,0xf7,0x4a,0x43,0x9c,0xca,0x3d,0x00,0x5b,0x02,0xf8,0xa2,0x4f,0x57,0x81,0xb0,0xde,0x1e,0xd1,0x60,0xbe,0x6c,0x0d,0xe6 +.byte 0xcd,0x51,0xb6,0xc7,0x00,0x52,0x37,0x4f,0xfc,0xee,0xe2,0x43,0x5c,0x61,0x76,0xed,0x80,0x72,0x38,0x26,0x94,0xfe,0x28,0x06,0xfb,0x62,0xa6,0x21,0x9b,0x53,0x60,0x1b,0xf0,0x56,0xae,0xba,0x6b,0x52,0x27,0x2a,0xd5,0xed,0x11,0x92,0xa2,0xe2,0xab,0xdd,0x05,0x38,0x38,0xae,0xeb,0x72,0xcb,0x6c,0xa5,0x2a,0x73,0xc5,0xfc,0xb0,0x36,0x83 +.byte 0xd6,0xe6,0xda,0x6b,0x38,0x72,0x5e,0x8d,0xaf,0x11,0x5f,0x5b,0x89,0x58,0x21,0x36,0xf6,0x7d,0x42,0x48,0xdc,0xce,0xaa,0x94,0xf0,0xc3,0xc5,0x2c,0x08,0x2a,0x36,0x35,0x25,0x95,0xc4,0x11,0x09,0xea,0x7a,0xbc,0x2e,0xc6,0x0a,0x5b,0x4f,0x86,0xeb,0xc2,0x38,0x71,0x48,0x8c,0x63,0x79,0x3b,0xe4,0xba,0x14,0x44,0x31,0x28,0x4f,0x9d,0xb4 +.byte 0x26,0xa6,0x3b,0xea,0x3f,0xcb,0x30,0x6c,0x02,0x13,0xdb,0x4c,0x9c,0x76,0xc8,0xd8,0x01,0x52,0x3d,0x2f,0x51,0x70,0x15,0x91,0xec,0x8f,0x80,0xed,0x88,0xb7,0xfa,0x91,0x2c,0x10,0xcd,0x3b,0x92,0x85,0xe7,0xe8,0x11,0xfa,0x50,0x15,0xe2,0xdf,0xf7,0xbe,0xa4,0x2d,0x13,0x75,0xa6,0x00,0x25,0x8d,0xe1,0xb6,0x9b,0xbb,0x64,0xfb,0x5c,0xde +.byte 0x97,0xcc,0x00,0x51,0xd6,0xac,0x67,0xc3,0x91,0x1e,0x56,0x36,0x2b,0x43,0xed,0x8c,0x67,0x7b,0xf6,0x54,0x6f,0x91,0x44,0x28,0x93,0x60,0xac,0xca,0xb9,0x91,0x7e,0xeb,0x49,0xd8,0xfc,0x12,0x6c,0x40,0x9d,0x0a,0x4d,0xb4,0xab,0xe6,0xad,0x5b,0x8e,0x2d,0x3e,0x53,0xa1,0x88,0xf7,0x41,0x71,0xa7,0xff,0x05,0x46,0x04,0x34,0x1f,0x12,0x89 +.byte 0x92,0xc1,0xf9,0x26,0x16,0x23,0xb6,0x59,0x82,0xdc,0xa7,0xb8,0xa4,0x8a,0x0f,0x1d,0x7d,0x8f,0x44,0xe8,0x4f,0x70,0xbb,0xdb,0x8d,0xe6,0x7e,0x9d,0xd9,0x44,0x10,0x41,0x6c,0x3f,0xb7,0xe8,0x6f,0x39,0x93,0xe1,0xde,0xb8,0x6c,0xba,0x99,0x95,0xb7,0xc8,0xb2,0x2a,0xcd,0x81,0x53,0xc3,0xb5,0x2a,0x8a,0xd6,0x62,0x1e,0x74,0x4d,0xde,0xfa +.byte 0xff,0x7b,0xed,0x11,0x1e,0x44,0x3e,0x93,0x1c,0xae,0x7c,0x5c,0xed,0x52,0x75,0x5e,0x0a,0xf3,0x95,0xce,0x47,0x86,0x1b,0x7f,0x17,0x09,0x12,0xcc,0x08,0xca,0x16,0x11,0xf1,0xa1,0x39,0x78,0x89,0x5c,0x11,0x25,0xc7,0x39,0x5f,0x97,0x74,0xbc,0xa9,0x2a,0x25,0x5d,0xdd,0x93,0x0d,0x8c,0x74,0x07,0x1e,0xd9,0x9f,0xc1,0x38,0x9c,0xbf,0xe0 +.byte 0x42,0xad,0xb2,0xe7,0xb1,0x84,0x82,0xb4,0x56,0xbe,0x3c,0x42,0xb0,0xce,0x2c,0x94,0xb7,0xe6,0x78,0xc8,0x04,0x06,0x58,0x15,0x3e,0xdc,0xf6,0x9a,0x58,0xc3,0xe3,0x85,0x16,0xc8,0x84,0xba,0x8f,0xbc,0x94,0xa7,0x44,0x04,0x29,0xc4,0xd8,0xec,0x63,0xc4,0x47,0x58,0x22,0x02,0x08,0x20,0x44,0x39,0x52,0xa5,0x33,0xfe,0x1c,0x30,0x27,0x92 +.byte 0xbf,0x42,0x44,0x4c,0x3f,0x3d,0x00,0x7b,0x21,0xef,0xbb,0x25,0x75,0x4c,0xb2,0xe7,0x66,0xc9,0xc1,0xfb,0x1e,0x13,0x04,0xd0,0xcb,0x69,0x51,0x9d,0x9a,0xb0,0xb0,0xec,0xb0,0x12,0x24,0x84,0x57,0x9f,0xef,0xb4,0x19,0x50,0xa6,0xf5,0x03,0xa3,0x93,0x0f,0x77,0xaf,0xe0,0x4c,0xa5,0xd3,0xb0,0xd8,0x5e,0xc3,0x78,0x94,0xd5,0x6e,0x48,0x58 +.byte 0x7a,0x93,0xb1,0x62,0x60,0xea,0xa1,0xba,0x7a,0x86,0x6e,0x87,0xe9,0x97,0xe0,0x7c,0x1e,0xb6,0x63,0x94,0x76,0x5f,0x9c,0x95,0x65,0x00,0xd4,0x14,0x0e,0x4c,0x87,0xe7,0xcd,0x9e,0xb1,0xe2,0x13,0x1b,0xb1,0x8a,0x83,0xaa,0xaa,0x34,0xcd,0xb2,0xf6,0x7f,0x12,0xb0,0x79,0xff,0x1e,0x04,0xc8,0x9a,0xfc,0x41,0x88,0xbb,0x28,0x42,0xeb,0x45 +.byte 0x47,0x8b,0xcb,0x57,0x03,0xcd,0xe5,0x9a,0x84,0xea,0x0a,0xb5,0x0c,0xb8,0x30,0x33,0xd6,0xde,0x66,0xa8,0x57,0xf9,0x76,0x4f,0x0f,0x8f,0x53,0x56,0x57,0x91,0xd4,0x55,0xf5,0x78,0xde,0xa6,0xa2,0x59,0xc8,0xb0,0xf2,0xb9,0xfa,0x6d,0x4a,0x70,0x86,0x3d,0x24,0x1b,0xc6,0xb8,0x06,0xf5,0xea,0x09,0x63,0x9b,0x1e,0x61,0x18,0x85,0xba,0x08 +.byte 0x20,0xaa,0x33,0x66,0xcf,0xa7,0xff,0xf5,0x30,0xfe,0xf8,0x39,0xd3,0x88,0x9a,0x5b,0x3f,0x55,0xa6,0x00,0x4c,0x57,0x0d,0xd1,0xa4,0x0c,0xe7,0x8a,0x95,0xd8,0x64,0xc7,0x93,0x51,0x84,0xa6,0x41,0x2c,0xfc,0xb0,0xfb,0x99,0x9a,0xcd,0x2c,0x62,0x3a,0xca,0x43,0x15,0xf2,0x5a,0x22,0x25,0xa4,0x91,0xa3,0x7c,0x42,0x69,0xc1,0x67,0xe3,0xf5 +.byte 0xd4,0x92,0x54,0xbd,0xb3,0x57,0xe5,0x19,0xca,0x1b,0x9c,0x19,0x79,0x9d,0xbf,0x89,0xfc,0xaa,0x72,0xcd,0xcb,0xc5,0xbc,0xdd,0x0c,0x7c,0x31,0x42,0xb0,0xc2,0x76,0xe5,0x8b,0x9b,0x7c,0x92,0x13,0x20,0x5c,0xdc,0x94,0xfc,0xa1,0x90,0x34,0x27,0x88,0x9f,0xe5,0x97,0x5f,0xc3,0xa3,0x83,0xca,0x8b,0xf8,0xac,0x36,0x33,0x47,0xc6,0x20,0x2f +.byte 0x04,0x2d,0x13,0xc1,0x3c,0x07,0x6e,0xf0,0xe2,0x3d,0x32,0x5c,0x50,0x41,0xf2,0x92,0x3f,0x25,0x2c,0x80,0x34,0xa5,0x90,0x2b,0x97,0x6e,0xd1,0xa2,0xa6,0xf4,0x4a,0xe0,0x20,0xd9,0xb9,0x2b,0x66,0xe5,0x06,0x73,0x97,0xfe,0x80,0x70,0x28,0xf9,0xb6,0xae,0x93,0x27,0x7a,0x65,0xff,0x23,0xc1,0x78,0x18,0x92,0xc9,0x0b,0x05,0x82,0x93,0xbc +.byte 0x73,0x3f,0x98,0xe9,0xa0,0x6d,0x20,0x8d,0x13,0xb1,0xf0,0x7e,0xe4,0x07,0x21,0x7d,0x6d,0xea,0x03,0x59,0xf8,0x29,0xc0,0xc8,0x7d,0xce,0xd1,0xf8,0x67,0x82,0x7f,0x84,0xe8,0x77,0xa9,0x9c,0xa2,0x34,0xdf,0xa9,0xac,0xec,0x6d,0x54,0xe5,0x0f,0xcb,0xdb,0x86,0xbc,0x01,0x44,0x91,0x3b,0xc8,0x85,0x4e,0x1d,0xe4,0x74,0x19,0xc6,0x39,0x2e +.byte 0xdf,0xf2,0x8f,0x3a,0x7f,0xe3,0x1e,0x55,0x45,0xcb,0x7e,0xde,0xcd,0xa6,0x1c,0xef,0x20,0xf7,0x07,0x31,0x94,0x9a,0x3d,0x04,0xd7,0x5e,0x65,0x20,0x6a,0x4d,0x31,0x1e,0x6f,0x89,0x40,0x45,0x1f,0x37,0xc1,0x7e,0x07,0xd5,0xa6,0x38,0x4a,0xf1,0x39,0xae,0x72,0x26,0x60,0xb0,0xb5,0xc7,0xd3,0x9a,0xaf,0x57,0x12,0xe9,0x34,0x28,0x8b,0xaf +.byte 0xd8,0x62,0x24,0x58,0xe2,0xcd,0xa2,0x9e,0x74,0x23,0x2d,0x52,0xc7,0x09,0xe5,0xb5,0xf5,0xc1,0xd3,0xa3,0x19,0xe5,0x1d,0x8d,0x0c,0xdf,0x13,0x8d,0xa4,0xa7,0xc1,0x41,0xea,0x9e,0x6d,0x61,0xd4,0xa4,0x74,0xe5,0xf8,0x5f,0x9e,0xfd,0x6d,0xf6,0x6e,0x87,0x0f,0xb5,0xa3,0x82,0xac,0x64,0xb4,0xda,0x07,0x49,0x51,0xc2,0xfd,0xcb,0x55,0xa3 +.byte 0x59,0x34,0xdf,0xa1,0xd6,0x90,0x62,0x43,0x1a,0xf9,0xae,0x85,0x5c,0x11,0x40,0xb2,0xbe,0xa5,0x03,0x04,0x4f,0xec,0x2c,0x58,0x2d,0xe9,0xda,0xcf,0xaa,0x2f,0xcf,0x60,0xc3,0x2c,0x6c,0x81,0x4d,0xf2,0x71,0x41,0xe4,0xae,0x4c,0xfa,0x8e,0x05,0x10,0xff,0x40,0xfa,0xea,0x96,0x78,0x6e,0xfc,0x35,0x35,0xec,0x84,0xf6,0x1d,0x24,0x60,0xcd +.byte 0x96,0x21,0x21,0xa7,0x32,0x90,0x3d,0x51,0x72,0x13,0xa4,0x9b,0x7e,0x94,0x3a,0x9d,0x97,0xf6,0x68,0xd8,0x08,0x42,0x54,0x7a,0xbb,0x9a,0x95,0x83,0xac,0xb8,0xb4,0x68,0xe3,0x31,0xdb,0xe2,0x32,0x8b,0x7d,0x57,0x62,0x1d,0x61,0x81,0xa1,0x36,0x7a,0x25,0x00,0x72,0x24,0x4c,0xa7,0x96,0x3b,0xa5,0x82,0xba,0x8e,0x89,0x1e,0x1b,0x8e,0xf4 +.byte 0xab,0x91,0x85,0x7a,0x32,0x4a,0x47,0x9f,0xce,0xd2,0x51,0x77,0xcd,0xc9,0x02,0x54,0xf2,0x7b,0xcb,0xb8,0x83,0xe0,0xe0,0x1b,0x4a,0xa2,0xe0,0xd9,0x15,0xb6,0x02,0x19,0x75,0xa6,0xba,0xa6,0x98,0xd9,0x61,0x74,0xc6,0x48,0xa5,0x59,0x3d,0xc8,0x47,0xc9,0xe8,0x6b,0xbb,0x6d,0xcf,0x0e,0x8d,0x6b,0x58,0x8b,0x7d,0x4e,0x0b,0x3d,0x67,0xc4 +.byte 0x8e,0x78,0x59,0x40,0x88,0x82,0x33,0x27,0x2c,0xfe,0x2a,0x6c,0xe4,0x80,0xee,0x5a,0xd4,0x5f,0xc8,0xf7,0x82,0x02,0x67,0xfd,0xcb,0x55,0x3e,0xd8,0x41,0xb3,0xce,0x93,0xfe,0xe7,0x56,0xf5,0x63,0xba,0xfa,0x2e,0x79,0xfc,0x11,0x5d,0xb0,0xc6,0x32,0x54,0xed,0x71,0x9b,0x15,0xce,0x62,0x09,0xd4,0x28,0x7f,0x7b,0xa1,0x50,0x5b,0x46,0x24 +.byte 0x0e,0x40,0xa2,0xe2,0x7d,0x93,0xa6,0x2b,0x0b,0x9b,0x40,0x25,0xc9,0xca,0x7a,0x01,0x8b,0x7d,0x68,0xeb,0xd7,0x84,0xc1,0x9d,0xf9,0xfb,0xd0,0x1a,0xec,0xef,0x6b,0x4c,0x78,0x31,0x62,0x8e,0x9d,0xdc,0x78,0x8f,0xcb,0xf8,0xf9,0x41,0xdc,0x9f,0x6d,0x0a,0x27,0x67,0xce,0xbd,0xeb,0x87,0xb3,0x26,0xf3,0x51,0xe1,0xd6,0xd1,0x57,0x46,0xfe +.byte 0x21,0xb9,0x88,0x7c,0xdd,0xa2,0x49,0x71,0x24,0xfb,0xc4,0xc0,0x6a,0x6b,0x05,0x7f,0x80,0xb0,0x09,0x3b,0x9e,0x6c,0x59,0x31,0x3e,0xac,0x7a,0x2e,0x5c,0x04,0x03,0xa3,0x6e,0xf5,0x66,0xee,0xc2,0x9b,0x65,0x88,0x06,0xbf,0xf5,0xe3,0x23,0x73,0x38,0x88,0x99,0xf1,0x64,0x68,0xdf,0x7d,0x04,0x06,0x72,0x92,0x0b,0x62,0x5d,0x12,0x1e,0x4e +.byte 0xff,0x60,0x35,0xe3,0x0f,0xd9,0x8c,0xac,0x38,0x5b,0x91,0xc1,0x51,0xbb,0xa5,0x19,0x7d,0xfb,0x79,0xfa,0x42,0x3b,0xaa,0xf8,0xd3,0x0f,0xc3,0xf2,0xb2,0x68,0x91,0xae,0x28,0x83,0x4f,0x75,0xbd,0x20,0x5f,0x20,0xba,0xc2,0x75,0x85,0x74,0x23,0xf3,0x36,0x33,0x99,0x9c,0x64,0x4c,0xd1,0x5d,0xbd,0x06,0x46,0xbd,0x49,0xf0,0x86,0xc0,0xcb +.byte 0x1b,0xbd,0xec,0x98,0x5b,0xb1,0x80,0xba,0x12,0x42,0x22,0x09,0x9a,0x62,0x3c,0xa8,0x33,0xbf,0xce,0x92,0xd4,0x07,0xef,0x34,0x33,0x8f,0x67,0x1d,0x25,0x60,0xeb,0xd3,0xe4,0x31,0x63,0xa8,0xab,0xe3,0xab,0x70,0x50,0xd8,0x44,0x9f,0x39,0x51,0xd2,0xb9,0x4b,0x16,0xe4,0xfa,0xc5,0x47,0xf3,0xae,0xb5,0xfe,0x7d,0x5d,0x43,0x28,0xa6,0x3d +.byte 0xcf,0x71,0x23,0x6d,0x8e,0xd7,0x74,0xa4,0x86,0x9f,0x92,0x86,0x3c,0x1e,0x51,0xd4,0xe0,0xe6,0xd5,0xc4,0x53,0x3c,0x96,0x55,0xb9,0xac,0x63,0x5b,0xee,0x5a,0x03,0x84,0xb9,0x43,0x2c,0x0f,0x6d,0xbb,0xb5,0xca,0xf0,0x4f,0x3e,0x8b,0x3b,0x14,0x01,0x0e,0x81,0x0d,0xe6,0x62,0xa9,0x34,0x4e,0x03,0xc9,0x85,0x9f,0xc8,0x4f,0x52,0x3f,0x84 +.byte 0x1b,0xab,0x7e,0xaf,0x93,0x22,0xe2,0x0d,0x41,0x79,0x50,0xb2,0x17,0xa7,0x9a,0x80,0xd5,0x65,0x40,0x3b,0x56,0x9b,0xc9,0x00,0xcf,0x03,0xf1,0xff,0xcd,0x72,0x27,0xdb,0x74,0x94,0x70,0x02,0xdc,0x3a,0xee,0x00,0xcc,0x08,0x0a,0xab,0x40,0x87,0x24,0xaf,0x7d,0x67,0x18,0xd0,0x7c,0xeb,0x91,0x1f,0x7e,0x9e,0x41,0x7b,0x39,0xf2,0xfe,0xaf +.byte 0xb7,0x6c,0x58,0xe0,0xdb,0xf7,0xf1,0x23,0x0b,0x98,0x08,0xfa,0xde,0xfa,0xf9,0x24,0x23,0xd1,0x7f,0x69,0xd3,0xb1,0x82,0x68,0x03,0x06,0x86,0x7a,0xf4,0x90,0x8d,0xa5,0xbd,0xbe,0x14,0x2f,0xa2,0x5e,0xaf,0x5c,0x1e,0x07,0x68,0x19,0x5a,0xd3,0x53,0x7d,0xe8,0x13,0x6b,0xe3,0x02,0x49,0x0d,0xd2,0x96,0x56,0xae,0x67,0x8a,0x27,0x61,0xa0 +.byte 0x60,0x20,0x2c,0xb4,0x5d,0xdf,0xc3,0x24,0x50,0xa9,0xbc,0x3d,0x5c,0xf3,0x2e,0xb6,0xba,0x71,0xf0,0x04,0x43,0x84,0x4d,0x80,0xe9,0xa5,0xdd,0xb3,0x1e,0x5e,0x56,0x32,0x1a,0xd4,0xe3,0x10,0x57,0x35,0xa8,0xf1,0xe5,0x96,0xc1,0x27,0xef,0xcc,0x21,0x71,0x10,0xd1,0x07,0x7e,0xb3,0xab,0x95,0x64,0x86,0xaf,0xc9,0x15,0xe6,0x98,0x5e,0xb1 +.byte 0xbd,0xde,0x99,0x38,0xfc,0x8d,0xb2,0x5a,0xa4,0x44,0x5b,0x74,0x31,0x31,0x07,0x93,0xf5,0x86,0x78,0xc5,0x82,0x26,0xfc,0x95,0x1f,0x33,0xd8,0xfe,0x70,0x42,0x2a,0xa7,0x3a,0xb1,0xb2,0x63,0xd6,0x5b,0x54,0x9c,0x54,0x45,0x4f,0x1b,0x4a,0xc2,0xb4,0x0e,0x99,0x48,0xde,0x8d,0xa6,0x5d,0xd3,0xdc,0x31,0xa4,0x2b,0x0d,0x44,0x6e,0x1a,0x10 +.byte 0x3f,0x6c,0xa0,0xab,0xcb,0xb4,0xf6,0x18,0xba,0x11,0xd4,0xd4,0x70,0xc4,0xab,0x04,0x4c,0xe7,0xe9,0x53,0xe5,0xd9,0xe7,0xeb,0x21,0xa2,0x2c,0xc4,0xc6,0xc3,0xe7,0x73,0xd9,0xd3,0x84,0xb0,0x12,0x94,0x3b,0xfd,0xd9,0x32,0xba,0xe3,0x37,0xc1,0xb9,0x4d,0xea,0x3e,0x3d,0x31,0x4e,0xa0,0xe7,0x73,0x9d,0x4e,0x26,0xd1,0xdf,0xe6,0x26,0xcd +.byte 0xd7,0x17,0xd7,0x28,0x2c,0x04,0xe9,0x55,0xd5,0x70,0xaf,0xab,0xc1,0x07,0xbc,0xc4,0xd2,0x89,0xdc,0x22,0x59,0x19,0x0e,0xd8,0x8b,0xdd,0x46,0x7f,0xe4,0xad,0xa5,0x70,0xd7,0x18,0x51,0x30,0xd7,0xbc,0x26,0x45,0xe7,0xea,0xce,0xc7,0xf2,0xca,0xb1,0x9c,0x57,0x1e,0x10,0x5f,0x44,0x8d,0x3d,0xe8,0x55,0xa1,0x22,0x68,0x97,0xe8,0x03,0x9c +.byte 0x8b,0x63,0x81,0xd9,0xcd,0x4c,0x6c,0xe3,0x68,0xc9,0x35,0xee,0x94,0x13,0x25,0x0b,0x12,0x61,0xbd,0xee,0x6f,0xc7,0xe8,0xb5,0x01,0x7a,0x9e,0xd0,0x5a,0x46,0xc6,0x19,0x1b,0xc2,0xf1,0x2d,0xaa,0x53,0x29,0xcf,0x23,0x1a,0x4d,0x94,0x0a,0x50,0x64,0xf5,0x3b,0x52,0x55,0xac,0xa5,0x21,0x15,0x47,0xd9,0x14,0x8c,0x7f,0x4d,0x79,0x6b,0xc1 +.byte 0x43,0x0a,0xf2,0x42,0xd2,0xb0,0x95,0x19,0x99,0xdd,0x1d,0x8e,0x84,0x8c,0x7e,0x59,0x69,0x93,0x86,0xae,0xf1,0x67,0x35,0x55,0x7c,0x5b,0x38,0x11,0x56,0xec,0x6c,0xbb,0xe8,0xc0,0x54,0xec,0x5f,0x65,0x13,0xe3,0x86,0xa0,0xb1,0xc1,0x5e,0x34,0x4f,0xdd,0x4d,0x00,0xc6,0x29,0x05,0x78,0x64,0x8c,0x19,0xb0,0xfc,0x8a,0xb2,0xc7,0x86,0x57 +.byte 0xa2,0xdd,0xed,0x43,0xc1,0x7f,0xab,0x89,0x19,0xe8,0xa6,0xf5,0x7a,0x15,0xfe,0xd5,0x4f,0x53,0xde,0x78,0x42,0x76,0xf7,0x8a,0x54,0xe8,0x37,0xfd,0xee,0x82,0x20,0xd5,0xe2,0x32,0xb9,0x32,0x67,0xc7,0xff,0xdc,0xf0,0x40,0x07,0x28,0x55,0x16,0x56,0x84,0xe9,0x17,0x25,0x17,0x8e,0x10,0xef,0x9f,0xed,0x33,0x83,0x6d,0x9e,0x87,0x82,0xb8 +.byte 0xa9,0x6b,0xcb,0xe5,0x04,0xfb,0x87,0x51,0x05,0x1a,0x64,0x64,0x51,0x34,0xa3,0x61,0x4a,0xe3,0xa6,0x35,0xa5,0xc9,0xe3,0xde,0xb0,0xcf,0x5f,0x68,0x49,0xbc,0x98,0xf9,0x0b,0x82,0xde,0xb1,0xf9,0x77,0x16,0x7c,0x1f,0x80,0x0c,0xfc,0xbb,0x6d,0x8e,0x92,0x93,0x00,0xc2,0xa5,0xbe,0xde,0x55,0x09,0x9d,0x83,0xa5,0x6c,0x0a,0xb5,0xc4,0x53 +.byte 0xde,0xbc,0x07,0xca,0x0f,0x43,0xea,0x50,0x25,0xee,0x51,0x3b,0xfb,0x7a,0xcf,0x31,0x8a,0x19,0x1c,0xa2,0x2d,0x72,0x79,0x81,0xc6,0xb8,0xe6,0xe1,0xd8,0x3e,0x0f,0xc0,0xae,0x73,0x40,0x30,0x15,0xaa,0xe3,0x72,0xc3,0x36,0xc1,0x42,0x11,0xc5,0x3f,0xf5,0x69,0x78,0xea,0x95,0x54,0x36,0xe8,0x7e,0x9c,0xad,0xbd,0xcd,0x19,0xfe,0x4a,0x04 +.byte 0xb4,0x54,0x14,0x98,0x58,0x6f,0x06,0x8f,0x8c,0x95,0xa8,0xc9,0xe8,0xc4,0x2b,0x03,0xaa,0x42,0x75,0x74,0xa2,0x63,0xdb,0xca,0xd1,0xf0,0x60,0xc3,0x63,0x84,0xfb,0xd7,0x5a,0x7b,0xca,0x45,0x8d,0x14,0xdc,0xf8,0x71,0x40,0x71,0xbb,0xa1,0x1a,0xd3,0x8c,0xfb,0xf6,0xf7,0xfc,0x82,0x72,0x50,0xc9,0xe3,0xc5,0xe2,0xb1,0x57,0xb1,0x24,0x3e +.byte 0x11,0x4d,0x96,0x1c,0x3a,0xe1,0xb6,0xb7,0x0e,0x55,0x35,0x6c,0xd8,0x2b,0xe3,0x78,0xcd,0xac,0x8f,0x24,0x70,0xc6,0x35,0x5b,0x6e,0x75,0x7a,0xf1,0x7d,0x87,0x53,0xcf,0x0a,0x24,0xb6,0x6a,0xfd,0xef,0x90,0x07,0xcf,0xde,0x30,0xbc,0x8c,0xec,0xda,0x6f,0x45,0xad,0x92,0xb6,0x8d,0x6b,0xb8,0x8e,0xdc,0xe5,0xbf,0x57,0x67,0x5e,0x2f,0x4d +.byte 0x5d,0xee,0x38,0x0a,0xaf,0xeb,0x62,0x84,0x2b,0x4c,0x30,0x7b,0x91,0x99,0x40,0x6f,0x09,0x2b,0x36,0xcd,0x04,0xeb,0x7c,0x8d,0xa5,0xbd,0xd6,0xb0,0xfc,0x27,0xcf,0x6b,0xdd,0xe1,0x94,0xbc,0x21,0xc6,0xc9,0x55,0x24,0xd4,0xa1,0x6f,0x1e,0xa2,0x81,0x31,0x22,0xb7,0x75,0x9e,0xa7,0x01,0x26,0x01,0x6c,0x12,0x91,0x02,0x87,0x40,0x5c,0x91 +.byte 0x1f,0x0c,0x55,0x07,0x12,0xa7,0x48,0xdd,0xed,0xb6,0xfe,0x38,0x05,0xbc,0xe1,0x2e,0x3b,0x89,0x4f,0x98,0x65,0x22,0x93,0xda,0x09,0x9f,0x04,0x90,0x66,0x81,0xd1,0x56,0x27,0x8b,0x26,0x99,0xbe,0x93,0x08,0xf1,0xfb,0x80,0x5b,0xaa,0xc4,0x96,0x88,0x93,0xb6,0x01,0xae,0xf6,0x69,0xaa,0x6f,0x4d,0xde,0x2f,0xc7,0x24,0xbf,0xe9,0xb8,0xeb +.byte 0xcd,0xb2,0x0a,0x50,0x5c,0xd2,0x0b,0xfc,0x57,0x3b,0x96,0xf8,0xd9,0xbe,0xd2,0xb5,0x16,0xac,0x7c,0xe4,0x2f,0x46,0x93,0x86,0x48,0x91,0xfa,0xae,0xca,0x05,0x9e,0xfe,0x6e,0xae,0xa5,0x58,0x94,0xc0,0x58,0x1e,0xc5,0x69,0x28,0xe0,0x99,0x12,0x83,0xcf,0x35,0xe4,0x72,0x7d,0x4e,0x8b,0x66,0x56,0xb3,0xa6,0x2a,0x72,0x06,0x03,0x45,0xd1 +.byte 0x95,0xc9,0x93,0xb7,0xf4,0x8a,0x83,0xce,0x17,0x8b,0xf0,0x8e,0x8f,0x4a,0x68,0x55,0xd8,0xfc,0x54,0x8d,0xb5,0x62,0x17,0xa8,0xe6,0x18,0x03,0x53,0x04,0xb8,0xbe,0xd2,0xd0,0x7a,0x84,0xe1,0x39,0x31,0xc5,0x74,0xf2,0x64,0x1c,0x3b,0xd5,0x52,0x9b,0x81,0x8a,0x8f,0x36,0xc8,0xab,0x3d,0xe1,0xa8,0x2a,0xf2,0x84,0x9a,0xca,0x0c,0xcf,0xc9 +.byte 0x45,0x54,0x06,0xe8,0xd2,0x62,0x61,0x4d,0xeb,0x0b,0x38,0x4e,0x43,0x59,0x85,0x3a,0xe4,0xa3,0x25,0x15,0xc2,0xb5,0x7b,0x5e,0x2f,0xe6,0xc1,0x5d,0x2a,0xb7,0x57,0xb8,0x7e,0x61,0x51,0xc3,0x81,0x53,0x45,0x8a,0x6e,0x4c,0x89,0x84,0x2a,0x6b,0xca,0x15,0xff,0x97,0xfc,0x1f,0x8a,0x44,0xbd,0xcd,0x5e,0x32,0x6b,0x5f,0x78,0x7b,0xdf,0xdd +.byte 0x9d,0x2f,0x21,0xf2,0x14,0x40,0x5f,0x5a,0xd5,0x21,0x27,0x3d,0x0b,0x9f,0x9f,0xb0,0x8e,0xab,0x9e,0x68,0x96,0x02,0xfd,0x4d,0xcc,0x03,0xf0,0x03,0xfb,0x4c,0xac,0xfa,0x00,0x3b,0xea,0x1a,0x53,0x80,0x77,0xec,0x53,0xc3,0x3c,0x6c,0xf8,0xa5,0x3e,0x52,0x34,0xd4,0xa1,0x52,0xb8,0xd6,0x19,0x8c,0xdf,0x85,0x27,0x61,0x22,0xe7,0x43,0xeb +.byte 0x85,0xc0,0xbe,0x58,0xe6,0x60,0x81,0x4c,0xc6,0xbb,0xc0,0xbf,0x63,0x39,0x9d,0xad,0x2e,0xa8,0x2a,0x83,0x3d,0xfa,0xdb,0x0b,0x98,0x16,0x78,0x18,0x43,0xc7,0x17,0x82,0xb8,0xec,0x32,0x45,0x75,0x0c,0xc1,0x4c,0x84,0xbf,0xce,0x83,0x3b,0xb4,0x91,0xf4,0x0d,0x5d,0x83,0xf6,0xd6,0x10,0xab,0xc6,0x26,0x9b,0x68,0x59,0xec,0x48,0x4b,0x1d +.byte 0x35,0x2a,0x5b,0x23,0x83,0x22,0x8e,0x7d,0xfa,0xce,0xde,0xb1,0xd9,0x78,0xf6,0x9e,0x08,0xba,0xfb,0xda,0xf2,0x04,0xc5,0x2a,0xac,0xbf,0xb4,0x04,0x05,0x1f,0x0b,0xeb,0xe8,0x2a,0x3c,0x3f,0x4f,0xb6,0xc8,0x6b,0x97,0x5a,0x9e,0xdb,0x4b,0x3c,0x93,0xc1,0x20,0x1c,0x62,0x91,0x74,0x76,0x49,0x92,0xc2,0xd8,0x0d,0xd8,0xfe,0xb5,0x68,0x77 +.byte 0x48,0x9f,0xbe,0xe0,0x78,0x20,0xe7,0xa4,0x3d,0x3e,0xa1,0x4c,0xc7,0xeb,0xd3,0x30,0xd3,0xf0,0x65,0xcf,0x18,0x3c,0xf8,0x25,0xc2,0x99,0xf4,0xec,0xef,0xdd,0xef,0xf3,0x6b,0x28,0x00,0xaa,0xfd,0x76,0xec,0x19,0x67,0xd6,0x79,0xa6,0x01,0x6e,0x20,0x3a,0x7f,0xd4,0xd0,0x05,0xb4,0xea,0xd4,0xde,0x11,0x06,0x44,0x4a,0x6f,0x15,0x2f,0x62 +.byte 0x9a,0xaa,0xeb,0xaf,0xb5,0xb5,0x46,0xb2,0x28,0x2e,0x74,0x26,0x06,0x91,0xeb,0x15,0xef,0xd4,0xfd,0xc7,0x1b,0x65,0x25,0x01,0x24,0xd2,0x44,0x05,0x18,0x1c,0x71,0x36,0x58,0xc4,0x37,0xfe,0x22,0x29,0xc0,0x2f,0xd2,0x4e,0xeb,0x43,0xb9,0xf9,0x4e,0x87,0xd7,0x92,0x77,0xa8,0x4f,0xa5,0x6e,0x5c,0x4d,0x3a,0xe9,0x16,0x62,0x30,0x51,0xbb +.byte 0x32,0xd8,0x0d,0x86,0x20,0xbf,0x68,0x0f,0x3e,0xef,0x8b,0x0d,0xc5,0xa6,0x94,0x81,0xe9,0x6f,0x85,0xf5,0x22,0x6e,0x9e,0x0a,0x56,0xa3,0x43,0x79,0x50,0xd9,0x45,0x5f,0x5a,0x3f,0x53,0x53,0xb7,0xfe,0xb6,0x1c,0x63,0xab,0x7c,0xed,0x2f,0xc4,0x2b,0xa8,0x53,0xfb,0xad,0x46,0xf0,0x63,0xca,0x7a,0x6e,0xce,0xf4,0xb9,0x34,0xd0,0x9a,0xc8 +.byte 0x0d,0xd2,0x32,0xce,0x26,0x3f,0xcd,0xd9,0xbc,0xa9,0x46,0x65,0x45,0xfe,0x45,0xeb,0x0d,0xab,0xe6,0x31,0xb6,0xb9,0x41,0x53,0x7d,0x55,0xc3,0xfb,0x10,0x46,0x37,0x77,0x1f,0x15,0xf0,0x5f,0xcb,0x8f,0xea,0xc5,0xc0,0xb8,0xc6,0xb1,0x3a,0x06,0x42,0xec,0x38,0xec,0x06,0xd1,0x37,0x3b,0xe1,0x8d,0xad,0xc2,0xce,0x96,0x0b,0xf0,0xab,0xde +.byte 0x9c,0x3c,0x09,0xef,0x59,0xcd,0x67,0xa7,0x6e,0x0e,0xc7,0xee,0x51,0x6d,0x90,0x40,0x0e,0xdf,0xb1,0x13,0xe3,0x0c,0xb6,0xe8,0xcb,0xf5,0x57,0x50,0xeb,0xdf,0x09,0x45,0x72,0x40,0xff,0xdc,0x5c,0x51,0x42,0x47,0xb2,0x9e,0xca,0xf3,0x1b,0x06,0xb1,0x3e,0x04,0x55,0x96,0x63,0x24,0x16,0xdb,0x3e,0xab,0x98,0x33,0x70,0x6f,0xfd,0x8f,0x7b +.byte 0x56,0xb0,0x7f,0x28,0x26,0xc4,0x2a,0x9e,0xf5,0xa7,0xba,0x61,0x75,0xa4,0xb1,0x25,0x60,0xe5,0x9c,0x7e,0xb4,0xaa,0x04,0xa1,0x33,0x5a,0x8d,0x88,0x1d,0xc4,0x38,0x58,0x28,0x23,0xc7,0xac,0x20,0xf8,0xaa,0x18,0xf8,0xc7,0x27,0x05,0x07,0xf7,0x12,0xfe,0xe1,0xa5,0x99,0xaa,0x55,0x79,0x72,0xc4,0x14,0x08,0x14,0x4a,0xfb,0xf7,0x66,0x81 +.byte 0x6e,0xed,0x81,0x12,0x5f,0xb6,0x08,0x00,0x37,0xf9,0xdc,0xdf,0x4d,0xcb,0xfa,0xc6,0xf3,0xc2,0x17,0x17,0x52,0x39,0x7b,0xa0,0x3e,0x25,0xc9,0x48,0xd8,0xa6,0x1b,0x8b,0xdb,0xf8,0x74,0xac,0x6b,0x16,0xec,0xa6,0x4a,0x1e,0x7e,0x5c,0x50,0xbf,0x81,0xef,0x3c,0x7d,0x9d,0x21,0x38,0xa9,0x26,0x3c,0x30,0x7a,0xfb,0xab,0xd8,0x6a,0x0a,0xaa +.byte 0xbb,0x6e,0x91,0x92,0x7c,0x04,0x02,0x0e,0xa2,0x71,0xc7,0xde,0x7d,0x42,0xaf,0xe5,0x92,0xc1,0xb9,0xd7,0x52,0xaa,0x32,0xea,0x39,0x84,0x17,0x40,0xb0,0x83,0x18,0xff,0x46,0xb8,0x59,0xd9,0xa3,0xce,0x82,0x7e,0x65,0x54,0xe0,0xa4,0x6d,0x8a,0xbc,0x6a,0x65,0xb2,0xd5,0x96,0x5b,0x1c,0x9a,0x32,0x72,0xf7,0x81,0x57,0xcd,0xb3,0x22,0xc5 +.byte 0x7d,0x20,0x24,0xea,0xbe,0x51,0x4c,0xb3,0x48,0x36,0x4f,0x73,0xf4,0x3f,0x07,0x92,0x01,0xe2,0x1e,0x78,0x3f,0x8e,0x1f,0x35,0x1a,0xf1,0xe1,0x14,0xd1,0xe7,0xd9,0xfd,0xd8,0xf7,0x20,0xc2,0xf3,0x7a,0x59,0xc9,0x1d,0x13,0x41,0x01,0xf6,0x77,0x69,0xfb,0x0f,0xc7,0xe4,0x58,0x04,0xce,0xe8,0x73,0x87,0x2f,0xef,0xe6,0x36,0x38,0xc7,0x91 +.byte 0x2d,0x17,0xb5,0x56,0x68,0xb1,0x9f,0xbf,0x2e,0x4b,0xe7,0x09,0x7b,0x35,0x33,0x5a,0x6c,0xc1,0x6f,0xb3,0xac,0x6c,0x1e,0xfe,0xc0,0xc9,0xd8,0x77,0xf5,0xcb,0x5e,0xcc,0xd1,0x2f,0xdd,0x23,0x8b,0x3b,0xb5,0x43,0x96,0x1f,0xa9,0xe4,0x84,0x41,0x92,0xe9,0x68,0x47,0x50,0xf7,0xd4,0x85,0x22,0xa1,0x43,0xaa,0xde,0xf7,0xea,0xe0,0x54,0xaa +.byte 0x0d,0xe6,0xa5,0xb8,0x7e,0xec,0x13,0x9a,0x1e,0x6c,0x10,0x9d,0xa8,0xfb,0x97,0xde,0x24,0xda,0x33,0xbb,0xab,0x17,0x7a,0xb4,0x72,0xaf,0xed,0xc9,0xa4,0x62,0x65,0x0c,0x99,0x3d,0x74,0x7f,0xff,0x59,0xa9,0x8e,0x37,0xb9,0x10,0x30,0x26,0x3f,0x2f,0xfc,0x1e,0xe2,0xc6,0xb8,0xff,0x41,0xb3,0x35,0x3f,0x41,0xf4,0x47,0xbc,0x76,0xc6,0x77 +.byte 0x0f,0xf8,0xff,0xb8,0xd2,0x34,0x40,0xac,0x43,0xcb,0xcf,0x1f,0x57,0xaa,0x1a,0xa7,0xe1,0x4a,0x69,0xd7,0x05,0xa7,0x9d,0xff,0x13,0x43,0x91,0xe3,0x09,0x1c,0xb2,0xb2,0x82,0x06,0xa3,0x3c,0x35,0x85,0x9e,0xd0,0xcf,0x1c,0xb9,0x13,0x09,0x7d,0x3d,0x17,0x0f,0xf8,0x2f,0x61,0x97,0x7e,0x02,0xe0,0x78,0x07,0x69,0x8c,0x91,0xbe,0x96,0x92 +.byte 0x4a,0x03,0xa7,0x31,0x5f,0x6c,0xfe,0x55,0xb2,0x17,0xe8,0x4c,0x64,0x48,0x18,0xde,0x4f,0x5a,0xce,0xd2,0xcb,0x83,0x4d,0x1b,0x2a,0x1f,0xce,0x85,0xf7,0xdc,0x74,0x8c,0x42,0xc6,0x5a,0x3a,0x51,0x22,0x79,0x70,0xa0,0xe0,0x29,0x2a,0x73,0xe4,0x53,0xb4,0x47,0x5f,0x54,0xa8,0x65,0xe4,0x89,0x78,0xf9,0xb9,0x5f,0x5f,0x9d,0xa8,0xf7,0x82 +.byte 0x4e,0x34,0x60,0xfc,0xe3,0x88,0x65,0x73,0x99,0x1f,0x53,0xed,0xe8,0xf0,0xf4,0x5a,0x0a,0x49,0x42,0x6e,0x02,0x3f,0xa8,0x63,0x21,0x02,0x2e,0x8f,0x33,0xba,0x0e,0x10,0xd3,0x4c,0x1a,0x8b,0xf5,0x84,0x8e,0x2b,0x37,0x12,0x23,0x77,0x02,0x45,0xc7,0xc3,0x79,0x06,0xc2,0x8c,0xaa,0x32,0x53,0x7c,0x19,0xa2,0x92,0x7e,0x47,0x40,0x8f,0xae +.byte 0x8a,0x64,0x51,0x67,0xe1,0xc1,0xc3,0xd2,0x14,0x1d,0x63,0x0c,0x80,0x04,0x30,0x3d,0xee,0x58,0x44,0xe4,0x14,0x63,0xfc,0x95,0x05,0x3e,0xc1,0x8d,0xd3,0xcb,0x5d,0xc1,0x8e,0xf9,0xd7,0xe5,0x9d,0x97,0xef,0x8a,0xaa,0x50,0x31,0xa3,0x01,0x3a,0xb2,0x8d,0x63,0xb6,0xe7,0x34,0xec,0xa1,0x7a,0xff,0x57,0x95,0xbb,0x1d,0xbe,0x0c,0xa5,0x91 +.byte 0x92,0x08,0x06,0x1c,0x67,0x03,0x2e,0xee,0xf6,0x6f,0xa0,0xb7,0x9a,0x7c,0xe3,0x6a,0x8e,0xd8,0x50,0xc1,0xd6,0xa1,0x8d,0xe9,0x66,0x9a,0x1f,0x62,0x15,0x04,0x93,0x74,0xe8,0x04,0x0d,0x27,0x55,0x2b,0x07,0xb1,0xbd,0x69,0xe4,0xc1,0x34,0x8e,0xe7,0xfb,0xa0,0x3f,0x40,0x31,0x47,0xba,0xcb,0x80,0x88,0xf7,0x4f,0x46,0x05,0x31,0xaf,0x23 +.byte 0xdf,0x93,0x09,0x0a,0x15,0xc9,0x95,0x74,0x52,0x72,0xf4,0xbf,0x0d,0x07,0xb6,0xcc,0x4b,0x40,0x12,0xf3,0x87,0xea,0x29,0xd8,0x29,0x31,0x23,0xac,0x29,0x1a,0x89,0x83,0x5b,0x33,0x4b,0x6b,0x69,0xbe,0xb6,0x15,0x7e,0xfd,0xf2,0x95,0xc4,0xbe,0xeb,0xee,0x59,0x01,0x2a,0xce,0xca,0x80,0xda,0xf8,0x1a,0x01,0x23,0xf7,0xa1,0x4f,0xf5,0x83 +.byte 0x5e,0x16,0xd9,0x12,0xa9,0x4e,0xcb,0x59,0x23,0x4f,0x40,0xd7,0xbf,0xaf,0x76,0xf0,0x50,0x31,0x27,0x3a,0x8b,0x1d,0x9b,0xb1,0x1c,0x41,0xb0,0xed,0xe6,0xf3,0xa8,0x5f,0x6b,0x58,0x54,0x92,0xaf,0xcc,0x44,0x5c,0xea,0xdb,0x09,0xc5,0x26,0x5e,0xbe,0x46,0xbd,0x72,0x49,0x5a,0x4e,0x65,0x7e,0x75,0xcf,0xfc,0xf6,0xd0,0x3c,0x4a,0x7e,0xd6 +.byte 0x8e,0x8e,0xb4,0x19,0x45,0x75,0xbf,0xc3,0x5e,0x46,0xff,0xc9,0x46,0x65,0x8d,0x31,0x01,0x5e,0x1c,0x13,0x93,0x56,0x6f,0x28,0xec,0xf3,0x77,0xfa,0x6e,0xb9,0x0e,0xb6,0x8e,0x0e,0x38,0xf8,0x28,0x64,0xa2,0xa1,0x42,0x9a,0xb4,0xf3,0x14,0x8d,0x17,0x80,0x05,0x82,0x7c,0xf1,0xea,0x8b,0x4b,0x62,0xa0,0xde,0xf6,0xd7,0x36,0xb0,0x70,0x8d +.byte 0x03,0xf6,0xc8,0x2a,0x9e,0xc0,0xbb,0x2f,0xcb,0xef,0x35,0xf7,0x16,0xcd,0xd6,0xd6,0x90,0xd7,0x5d,0x61,0x00,0x33,0x9f,0xd8,0xd1,0xda,0x17,0x67,0x90,0xd1,0xf8,0x59,0xcb,0xf1,0x76,0xc2,0xbe,0x1f,0x5d,0x0d,0xb2,0x02,0xbd,0x19,0x9f,0x5a,0xa0,0x91,0xac,0x51,0xb5,0xf5,0x0a,0x64,0x67,0xf2,0x49,0x30,0x6c,0x57,0x83,0xda,0x90,0xf1 +.byte 0xc6,0xc7,0xe6,0x05,0x13,0x30,0x52,0xfd,0x2a,0x47,0xea,0xae,0xd3,0xed,0xe4,0x64,0x1f,0x6c,0xb1,0xdf,0xca,0x20,0x97,0x2a,0xc8,0xdc,0x00,0x0e,0x5b,0x59,0xc8,0x16,0x95,0x68,0x9a,0x2e,0x44,0xab,0xf6,0x93,0x7c,0x8f,0x66,0x4f,0x07,0x42,0x3f,0xa5,0x81,0xe7,0xab,0x59,0xbb,0xae,0xb1,0x3e,0x9a,0x25,0xf1,0xde,0xac,0x4c,0x1d,0x7a +.byte 0x54,0xb9,0xa9,0x59,0xaf,0xb0,0xab,0xaf,0x6b,0x76,0x66,0x1e,0xbe,0x1a,0xc1,0x61,0x1b,0x81,0x6b,0xe8,0xe4,0x73,0x6a,0x87,0xe9,0x39,0xcb,0x2c,0xab,0x64,0x36,0x9a,0x11,0x46,0xec,0x9f,0x30,0xb6,0x2c,0x14,0xe0,0xec,0xbe,0x33,0xde,0x60,0xc6,0x00,0x29,0x3c,0x55,0xda,0xfc,0x64,0xff,0xaa,0xbf,0x99,0x58,0xe2,0xe3,0xec,0xde,0xca +.byte 0xd1,0x3d,0xd2,0xad,0xaa,0xca,0x36,0x8f,0x93,0xa2,0xdd,0xde,0xaa,0x49,0x7f,0xdd,0x39,0x91,0xa0,0x7b,0x33,0xdf,0x36,0xcd,0xc3,0x3a,0xbc,0x53,0xf0,0x07,0x99,0x78,0x4e,0x63,0x47,0x79,0xbf,0x21,0xfc,0x05,0x47,0x69,0xec,0xee,0xf4,0x21,0x97,0x94,0x0c,0x7a,0x9f,0xa6,0xeb,0x5b,0x23,0xed,0x9d,0xc1,0xe1,0x5e,0x10,0xca,0xe0,0x84 +.byte 0x5a,0xdd,0xf6,0xae,0xd8,0x23,0x98,0xea,0x6c,0x43,0x77,0x41,0xf3,0x84,0x5a,0xe8,0xda,0xb3,0x11,0x0e,0x19,0x33,0xe9,0xf9,0x7a,0x90,0x07,0x68,0xf1,0xe4,0x52,0x0c,0x03,0x67,0xb9,0x42,0x41,0x24,0xa3,0x61,0x67,0x75,0xc9,0xb5,0xdd,0x10,0xf1,0x20,0x93,0x54,0xdb,0x0d,0xc7,0x0d,0x25,0x3e,0xda,0xb3,0xe7,0xce,0x97,0x7e,0xdb,0x1a +.byte 0x8f,0x92,0xff,0xe3,0x44,0x2d,0x6b,0xdb,0xe0,0x69,0x8b,0x16,0xce,0xe8,0xc7,0x93,0xf1,0x19,0xb9,0xd3,0x41,0x45,0x8d,0x95,0xb3,0x03,0xb2,0x66,0x96,0x95,0x91,0x33,0x1c,0xee,0xde,0xd7,0x9d,0xab,0x32,0x2f,0xb8,0x3c,0x7a,0x44,0x8f,0xa6,0xca,0x02,0x03,0x2f,0xa8,0x44,0x85,0x0e,0xf5,0x27,0x90,0x84,0xd9,0x80,0x06,0xf4,0x4f,0xc7 +.byte 0x21,0xc5,0x92,0xa4,0x2d,0x08,0x42,0x4c,0xa7,0x84,0xfa,0x7e,0x2b,0x66,0xfb,0x7c,0x81,0xea,0x5c,0x7d,0xdd,0x86,0xf1,0xf5,0x04,0xef,0xf2,0x50,0x12,0x72,0x42,0x22,0x23,0x74,0x7f,0xe7,0xed,0xd9,0xce,0x78,0x10,0x83,0x37,0xd0,0x81,0x97,0x4a,0xac,0xc2,0xe5,0x13,0x91,0x83,0xe2,0x6e,0xff,0x5a,0x0b,0xc3,0x4d,0xc1,0x3e,0x97,0x16 +.byte 0x96,0x69,0x39,0x9e,0x1d,0x6b,0x16,0x82,0xa2,0x94,0x0d,0x50,0xdd,0xa3,0xda,0x9d,0xda,0x3f,0x46,0xce,0x6c,0xd0,0xdf,0x6e,0x1b,0x17,0x47,0x51,0x74,0x6f,0xe9,0xa4,0x6b,0xae,0xd2,0x6e,0x5b,0xc0,0x26,0xc6,0x0b,0x84,0xb1,0x39,0xcf,0x9e,0x7c,0x18,0x52,0xd7,0x8f,0x33,0xae,0x3d,0xaf,0x3d,0x1a,0xba,0x3f,0x09,0x76,0x22,0x1d,0xf3 +.byte 0x42,0x14,0x4f,0x06,0xc7,0x33,0xc1,0x2d,0x58,0x1b,0x4c,0xc0,0x3a,0x29,0xa6,0x5e,0x19,0x26,0xdf,0x36,0x18,0xa9,0xc5,0xe9,0xd3,0xb1,0xae,0x86,0xa8,0x7f,0xd9,0xb4,0x18,0xef,0x9c,0x46,0xb6,0xf2,0xb2,0xb6,0x6e,0xe2,0xf8,0x5f,0x27,0xea,0x76,0xd3,0x40,0x68,0x94,0x66,0x8a,0xf5,0x9f,0xee,0x0c,0xe5,0xae,0xb6,0xba,0x87,0x42,0x40 +.byte 0xc9,0x83,0xac,0xb4,0x2c,0xec,0x74,0xb7,0x55,0x17,0x0b,0x1e,0x45,0x1a,0x87,0x9d,0x52,0xce,0xb7,0x58,0x2f,0x45,0xc7,0x7d,0xf3,0xd3,0x11,0x2e,0xf4,0xd8,0xc0,0xb8,0xc3,0x31,0x45,0x68,0x40,0xe8,0x8a,0x33,0x20,0x9a,0x06,0xa8,0x18,0x53,0xb2,0x73,0xa1,0x57,0xac,0x8f,0x56,0xeb,0x8e,0xa4,0xfc,0xd6,0x76,0x7e,0x81,0x62,0x2c,0x17 +.byte 0x49,0xb4,0xcc,0x15,0x66,0xcb,0xa2,0x3c,0x29,0xf0,0x73,0x0e,0x9a,0x34,0x16,0x6d,0x43,0x62,0x20,0x89,0x14,0xae,0x8b,0x5d,0x61,0x54,0xa1,0x82,0x49,0x73,0xb9,0x2b,0x48,0xd4,0xe3,0x21,0x37,0x5e,0x4d,0xbf,0xd0,0x72,0xa4,0x23,0xdb,0x7c,0xd9,0x45,0x77,0x8a,0x24,0x23,0x56,0xcd,0x84,0x80,0x44,0x12,0xce,0x99,0x39,0xbd,0x77,0xff +.byte 0x8c,0x62,0x8d,0x56,0x77,0x24,0x40,0x11,0x22,0xab,0x28,0xd6,0x75,0x2b,0xbb,0xc1,0x51,0xd6,0x5e,0x61,0x1c,0xe9,0xac,0x36,0x99,0x52,0x44,0xa5,0x20,0xdb,0xe0,0x12,0x9a,0x45,0x8f,0x7f,0x47,0xf9,0xa3,0x91,0x18,0x2b,0x51,0x9a,0x9f,0x3f,0x7d,0x36,0xde,0x71,0xae,0xca,0x62,0x62,0x16,0xda,0x19,0x9c,0x84,0xce,0xde,0x93,0x22,0xde +.byte 0xaf,0xe7,0x91,0x09,0xe8,0xf0,0x0e,0x07,0x71,0xdf,0x48,0xcd,0x8a,0x77,0x19,0x3c,0xd6,0xef,0x8e,0xe0,0x49,0xdf,0xcb,0xd6,0x34,0x78,0x7f,0x42,0xc2,0x6e,0x7a,0x50,0x53,0xee,0xbf,0x73,0x4b,0xd4,0x4f,0x06,0x18,0x26,0x67,0x51,0x54,0xa3,0x40,0xe6,0xb3,0x61,0x4b,0xfd,0xee,0x62,0x00,0x44,0x6c,0x0d,0x8b,0x2f,0x4d,0x06,0x17,0x41 +.byte 0xee,0x8b,0xde,0x1f,0x80,0x36,0x58,0x3e,0x0a,0x53,0x0a,0x83,0xf9,0xba,0xbd,0x91,0x6a,0x20,0x32,0x42,0x6c,0x85,0xdc,0x84,0xfd,0xce,0x57,0xbe,0xf8,0xa5,0x2c,0x7e,0xf9,0x1b,0x07,0xf4,0x32,0x13,0x32,0x79,0xdc,0x91,0xfc,0xc0,0x18,0xe6,0x1e,0xb2,0x67,0x9d,0x08,0xd2,0x89,0xa2,0xb1,0xbf,0x37,0xe1,0x3f,0x9e,0xb5,0x17,0xf7,0x2f +.byte 0x9a,0x4f,0x3c,0xea,0x5d,0x48,0x56,0x48,0x35,0x17,0xe9,0x5a,0x99,0xa7,0x2e,0x25,0x4f,0x96,0xa6,0x3d,0x3c,0xf8,0xdc,0xe7,0xe5,0x98,0x46,0xf7,0x10,0x16,0x4f,0xb0,0x7b,0x48,0x06,0xbb,0x9a,0x5a,0xad,0x32,0x49,0x92,0x39,0xb2,0xfe,0x01,0x1a,0x5e,0xcc,0xf7,0x0d,0x65,0x1c,0xf5,0x3d,0xb3,0x40,0x28,0x06,0x6e,0xbb,0x74,0x2a,0x95 +.byte 0xe9,0x62,0x2a,0xe2,0x19,0x38,0xc6,0x0d,0x46,0x30,0x6d,0x90,0xa5,0x68,0x4d,0x89,0xf0,0xf4,0xaf,0x52,0x11,0x8a,0x47,0x65,0xc0,0x6d,0xee,0xde,0xbc,0xed,0xf2,0x94,0xf3,0xfb,0xfd,0x2f,0xea,0xd5,0x36,0x89,0x8a,0x22,0xb8,0x75,0x3c,0xda,0x8d,0x3f,0x71,0xe5,0x50,0xb8,0xef,0xfc,0xa1,0x34,0x4a,0xb0,0x56,0x64,0xaf,0x28,0x0c,0x7a +.byte 0x28,0x3e,0xc8,0x83,0xc2,0xbb,0x89,0xc4,0x29,0x7f,0xc9,0xe7,0x4e,0xcb,0xdc,0x8f,0xe8,0xa4,0xdc,0x0d,0xcc,0xa0,0x16,0xda,0xa9,0x34,0x61,0xec,0x64,0xa7,0xf4,0x47,0xe9,0xee,0xbf,0xc6,0x4b,0xc5,0x01,0x65,0xe4,0xe0,0x12,0xd6,0x27,0xda,0x30,0xb5,0x60,0x72,0xe1,0xee,0x38,0x23,0x6c,0x9d,0xbb,0x83,0x01,0x4b,0x26,0x9a,0x68,0xb3 +.byte 0x89,0xb3,0xe0,0x10,0x22,0x58,0xef,0x2d,0xd4,0x86,0xab,0xab,0xc4,0xd8,0x9c,0x56,0xe8,0x54,0x40,0x86,0x11,0xd2,0x6b,0xc0,0xaf,0xfc,0x4a,0xef,0x24,0x38,0x79,0x32,0x54,0x26,0x8b,0x7e,0x02,0xad,0x86,0x9d,0x40,0x65,0x28,0x28,0xa3,0xa6,0xe4,0x07,0x29,0x3a,0xbb,0x81,0xed,0x17,0x54,0x51,0x35,0xc6,0x88,0x9c,0x63,0x7e,0x73,0x02 +.byte 0x28,0x13,0x4b,0x33,0xc0,0x68,0xbc,0xae,0x8c,0x59,0xd4,0x84,0x1d,0x41,0x86,0x5a,0xf6,0x14,0x50,0x13,0x88,0xca,0xc8,0xb8,0xfc,0x61,0xeb,0xe6,0x69,0x70,0x4a,0xa5,0xa5,0x36,0x4b,0xac,0xca,0x00,0x28,0xae,0xb0,0x03,0xef,0xe3,0x92,0xad,0x97,0x32,0x05,0x8c,0x93,0x95,0x45,0xd5,0x75,0x66,0x11,0xd3,0x6f,0x7f,0x5f,0x35,0x44,0xb7 +.byte 0xd7,0x34,0xcf,0x8c,0x4a,0x61,0x68,0x63,0x3f,0x92,0x54,0x01,0x3c,0x25,0x2d,0x6f,0x4a,0x2d,0x55,0xff,0x3f,0x86,0x85,0x9f,0xc2,0xa1,0xde,0x6b,0xbf,0x7e,0xb4,0x7c,0xc1,0x80,0x73,0xf5,0x3b,0x85,0xae,0x36,0x1a,0xdf,0x00,0x52,0xb7,0x70,0xa9,0x42,0x79,0xd2,0x26,0xf8,0x3b,0xeb,0x9f,0x2e,0x15,0x33,0xc8,0x85,0x2d,0x63,0xb2,0x89 +.byte 0x24,0x8e,0xfd,0xe6,0xdf,0x01,0x80,0x8b,0x27,0xe3,0x7e,0x17,0xc2,0x4e,0x26,0xa2,0xe1,0x95,0x81,0x3a,0xdd,0x2a,0xf4,0x75,0x21,0x64,0x11,0x04,0x5e,0x00,0x39,0xf0,0x08,0x68,0x67,0x09,0xa8,0x9b,0xbe,0xb7,0x62,0x0e,0xa8,0x69,0xcd,0x4e,0xaf,0xc8,0x4f,0x92,0x3d,0x8e,0x35,0x60,0x70,0xb3,0xda,0x2f,0x38,0x80,0x6f,0x5e,0xcc,0x3b +.byte 0x6e,0x05,0x26,0x14,0x9d,0x36,0x72,0x7d,0x09,0xb8,0xb7,0xa1,0xf7,0x5f,0xb3,0xe1,0xd6,0xc5,0x54,0x4e,0x80,0x4d,0x06,0x8f,0x84,0xbb,0xb6,0x65,0x87,0x2c,0x19,0x4a,0x74,0x3c,0x34,0x62,0x32,0xad,0x4c,0x06,0xa3,0xbb,0xfb,0x4f,0x4f,0x9d,0x91,0x84,0x63,0x75,0x34,0xcc,0x6b,0x00,0xa1,0x5a,0x63,0x03,0x8d,0x1e,0xdb,0xa4,0x0c,0xe6 +.byte 0x3d,0xd1,0x94,0x77,0xd8,0x77,0x8c,0x39,0x48,0x78,0xb1,0xb5,0xa2,0x41,0xd0,0x6d,0x27,0x20,0x4a,0x41,0x88,0xa5,0x78,0x3f,0x51,0x72,0x8c,0x80,0xe7,0x37,0x81,0x8b,0x06,0x46,0x58,0xab,0x23,0x85,0x47,0x89,0x39,0xf9,0x14,0xfe,0xbf,0x07,0x7c,0x47,0x8e,0xcc,0xd7,0x08,0xfe,0x5d,0xee,0xf9,0x94,0xa2,0x83,0x81,0x8a,0xfd,0x0f,0x9a +.byte 0xa7,0xe4,0x59,0xad,0xe6,0x1f,0xed,0x5d,0xe4,0x20,0xd6,0x2f,0xa7,0xd3,0xcf,0x5b,0x18,0x6d,0x24,0x79,0x66,0xd9,0xaa,0x44,0xfa,0x8d,0x74,0x60,0xcc,0x7e,0xbf,0x4f,0x0e,0xe3,0x9c,0xa5,0xe4,0xff,0x14,0x05,0xff,0x24,0x62,0x94,0x00,0x7a,0x58,0xe5,0x0b,0x3b,0xe8,0xee,0xe1,0x4d,0x4e,0x34,0x26,0xba,0x70,0x10,0x5e,0x14,0x4f,0xa5 +.byte 0x7a,0x9e,0x7b,0x28,0x99,0xbe,0x94,0x4a,0xcb,0x8d,0x65,0x60,0xa0,0x6e,0xc7,0xbc,0x51,0xba,0xb5,0x07,0x97,0x25,0x42,0xb7,0x2c,0x0e,0x9b,0xfc,0xfb,0x35,0x6f,0x74,0x10,0xce,0x25,0xdb,0xa9,0x7c,0x11,0x61,0x43,0xf9,0x19,0xbf,0xe2,0x21,0xa3,0x57,0x3c,0x41,0x0a,0x15,0x4e,0x7f,0x6b,0x38,0xb6,0x73,0x41,0xa2,0x4e,0x8e,0xb9,0x44 +.byte 0xee,0x2a,0x2e,0x0a,0x9e,0x85,0xf1,0x6e,0x93,0x72,0x42,0x50,0x55,0xe1,0xc6,0x18,0x11,0x92,0xf7,0xbf,0x05,0xd8,0xb6,0xbc,0x2b,0xd5,0xe0,0xd3,0x9b,0x64,0xc4,0xdd,0xb0,0xb3,0x46,0xd8,0xfb,0x73,0xea,0xed,0x06,0x96,0x16,0x9e,0xf6,0xc6,0xe8,0xbe,0xae,0x00,0x2f,0x5a,0xf4,0x1f,0xb5,0x28,0x7c,0x75,0x76,0x68,0x74,0xa2,0x57,0x0e +.byte 0x6c,0xfa,0x2d,0xbe,0x34,0xf1,0xc9,0x2b,0x83,0x58,0xe7,0x2a,0x87,0xdb,0x47,0xae,0xc7,0xc2,0x78,0x50,0xed,0x20,0xdf,0x30,0x38,0xdd,0x84,0xa9,0x6b,0x00,0xb1,0x7b,0xbb,0x69,0xd3,0xbe,0xed,0x3d,0x99,0x6e,0x39,0x42,0x75,0x8a,0x6c,0x7c,0xa5,0xcf,0xc9,0xcf,0x11,0x14,0xb3,0xaf,0x72,0x00,0x3b,0x58,0xdd,0x2a,0xe1,0x44,0xa7,0x51 +.byte 0x15,0x05,0x1b,0x18,0x49,0x07,0x90,0x4c,0xbc,0x99,0x88,0x64,0xf6,0x14,0x0b,0x99,0xc0,0x84,0xc9,0x06,0x32,0xf0,0xec,0x19,0x8d,0x4a,0xb8,0xdb,0x32,0xb4,0x5e,0xc9,0x0c,0x24,0xf0,0xad,0xdc,0xf4,0x32,0x3b,0xf6,0x68,0x28,0x4a,0xa5,0x5b,0xb7,0xd5,0x00,0x35,0xf8,0x56,0x03,0xa3,0x86,0xa0,0x8a,0x1b,0x53,0xb5,0x58,0x73,0x8c,0xf9 +.byte 0x2b,0xd8,0xcb,0x88,0xe7,0x7e,0x79,0x68,0x13,0x5d,0x7d,0x23,0xc4,0xec,0x9c,0xf4,0x95,0x97,0xbf,0xb2,0xd9,0xdf,0x38,0xe8,0xa2,0x79,0xf7,0xe8,0x36,0x80,0x59,0x3f,0x58,0x2f,0xf7,0xf9,0x32,0x73,0xdd,0xd6,0x9e,0x20,0x1a,0x29,0xab,0xc1,0x77,0x14,0x71,0x3c,0xde,0x90,0xe9,0xea,0xdb,0x78,0x14,0xa3,0x89,0x43,0xf1,0x42,0x43,0x3f +.byte 0xe7,0x67,0x32,0x3d,0x65,0xdc,0xa4,0x79,0x8f,0x81,0xa5,0xb0,0x94,0x0f,0x96,0xf5,0x82,0xcc,0x47,0xc1,0x29,0x39,0x70,0x7a,0xf3,0x49,0xf5,0x09,0x43,0x50,0x56,0xd6,0xea,0xc4,0x35,0xa5,0xa2,0x8a,0xbe,0xc0,0xe3,0xfe,0x4c,0xa2,0x83,0x09,0xab,0x72,0x8a,0x96,0x7c,0x01,0x70,0xb2,0xd5,0x62,0xb7,0x67,0x59,0x36,0xcf,0x56,0x2d,0x14 +.byte 0xc2,0x69,0x49,0x52,0x4e,0x7c,0x45,0x4b,0xef,0xcd,0x79,0xcd,0xe6,0xa6,0xd0,0xbe,0x10,0x1e,0x18,0xca,0xe7,0x8d,0x65,0xb1,0x17,0xc7,0x2c,0xc8,0x2a,0x5b,0xe8,0x08,0x11,0x15,0xea,0xa9,0x43,0x7b,0x70,0x04,0x0c,0xc8,0xca,0x67,0x18,0x18,0x12,0x16,0xc2,0xd3,0xf2,0x0a,0xc7,0x01,0xa9,0x97,0x61,0xf6,0xa7,0x44,0x9a,0xb3,0x67,0xdc +.byte 0x07,0x63,0x02,0x02,0x2e,0x58,0x80,0xa9,0x95,0xa0,0x8e,0x86,0xb6,0xf6,0x14,0x13,0x0a,0xea,0xf1,0x6d,0xd9,0x98,0x37,0x12,0xdb,0x67,0x1b,0x13,0x8e,0xd1,0xfa,0x2f,0x98,0x53,0x3c,0xd7,0x56,0x55,0x42,0x2f,0x64,0x59,0xd5,0xb7,0x6e,0xa8,0x6c,0xc2,0x40,0x11,0xb5,0xa1,0xc0,0x5c,0x45,0x87,0x91,0xb1,0x1c,0x4e,0xa9,0xf6,0x72,0x57 +.byte 0x50,0x8e,0xc5,0xfc,0x64,0x59,0x52,0x82,0xb0,0x75,0xc3,0x98,0xff,0x32,0xce,0xa4,0x39,0xb8,0xa4,0x61,0xb4,0x53,0x3f,0xc7,0x80,0x35,0x48,0xaf,0xa8,0x67,0xfe,0xa1,0x1d,0x3c,0x95,0xb5,0x63,0x1c,0x3a,0x2c,0x68,0xfa,0x98,0x8b,0xa7,0x19,0x29,0x79,0xe4,0x9b,0xff,0x8f,0x15,0x9c,0x65,0x60,0xd2,0xa9,0x4f,0xd5,0xb2,0x57,0xff,0x32 +.byte 0x4c,0x96,0x82,0x6b,0x09,0x6c,0x74,0x55,0x00,0x5c,0x68,0x68,0xd5,0x9b,0xd4,0xdf,0x3d,0x2d,0xb9,0x0b,0xf5,0x2c,0x87,0x35,0x2a,0xc0,0xc0,0xc9,0xd7,0xa1,0x76,0x30,0x82,0x46,0xd8,0x24,0x6e,0x27,0x02,0x71,0x57,0x5c,0x43,0xf2,0x54,0xd6,0xea,0xd7,0x67,0x7d,0xac,0x76,0x91,0xf1,0x26,0x6e,0xaf,0x87,0x05,0x06,0x48,0x57,0xbd,0x67 +.byte 0x1d,0xd7,0x07,0xcd,0x41,0x02,0x49,0x6c,0x8c,0xe1,0xe3,0x00,0x78,0xbe,0x28,0x84,0x16,0x44,0xb1,0x0d,0x6d,0x40,0xfe,0xab,0x7e,0xf6,0x6b,0xff,0xfa,0xe1,0xc7,0x9d,0x56,0x62,0xf1,0x68,0xba,0x76,0x34,0x8f,0x54,0x20,0x49,0xf5,0xa2,0x54,0x52,0xca,0x42,0xed,0x4f,0x9b,0xdf,0xcf,0xfb,0xf6,0xee,0x12,0x29,0x43,0x8f,0xf9,0xfd,0xf4 +.byte 0x8a,0xbf,0xae,0x50,0xf2,0x8f,0x46,0xa2,0x97,0x3b,0x2d,0xfb,0x84,0x98,0x61,0xae,0xba,0x36,0x25,0x30,0x8b,0xdc,0xd3,0x08,0x8e,0x7e,0xfa,0x91,0xac,0x4b,0x29,0x6d,0x0c,0x81,0x0f,0xc7,0xc8,0xc4,0x5c,0x48,0x68,0xa7,0x83,0xf3,0x6a,0xc8,0x0d,0x3a,0x9b,0x46,0xb9,0xe1,0x31,0xac,0x3c,0x12,0xa2,0xae,0x74,0xb8,0x91,0xed,0x63,0xba +.byte 0x40,0xb8,0x57,0x58,0x1f,0x1d,0x1a,0x2d,0x98,0x60,0xe8,0xe1,0x84,0x16,0xe5,0xf0,0x1e,0x35,0x58,0x31,0xc3,0x0c,0x49,0x6e,0x13,0x2c,0xac,0x14,0xc2,0xde,0x5f,0x62,0xe5,0x37,0x5b,0x1d,0x71,0x8b,0xc3,0x3d,0xd8,0xaf,0x3d,0x0a,0xef,0x80,0x3c,0x9a,0x4b,0x0a,0x3f,0x0e,0x8f,0x90,0x8f,0x73,0x2e,0xff,0x8e,0x8e,0x87,0xf8,0x46,0x52 +.byte 0xed,0x7d,0x76,0xf3,0xff,0xaf,0x5e,0x62,0x87,0x16,0x9c,0xa6,0x12,0x39,0x13,0xc3,0x62,0x4b,0xd2,0x21,0xa2,0x43,0xfa,0x4c,0x5d,0x75,0x61,0x64,0x5b,0x23,0xcd,0x76,0x86,0x81,0xd6,0xa6,0x25,0xe1,0xc1,0xc6,0x04,0x5e,0x65,0xfe,0x89,0x0e,0x67,0x02,0xeb,0xb9,0x26,0x88,0x81,0x97,0x1e,0x62,0x4e,0xf4,0x4e,0x0d,0xef,0xac,0xcf,0xd7 +.byte 0xc5,0x9b,0x9d,0x3a,0xa2,0x71,0xd7,0xd4,0x72,0xa6,0x66,0x90,0xe2,0xf7,0xb7,0xec,0xe4,0xca,0x9f,0xd1,0xd8,0x5a,0x65,0xff,0x39,0x65,0x78,0x47,0x1c,0x64,0xab,0x1a,0x35,0x2e,0xe2,0xf7,0x67,0xa4,0x7f,0xd5,0xea,0x04,0xee,0x4d,0xf6,0x29,0xe4,0xcd,0x1b,0xcf,0x0a,0xef,0xa1,0x14,0x90,0x0e,0xed,0x1a,0x10,0x63,0xa0,0x56,0x11,0x05 +.byte 0x57,0x94,0x3a,0x11,0xff,0xe0,0xc7,0x33,0x19,0x67,0xd7,0xd0,0xcc,0x76,0x52,0x5d,0x9e,0x10,0xe7,0xd6,0xaa,0x13,0xe8,0x8d,0xa5,0x60,0x66,0x98,0x26,0x11,0x66,0x0f,0x2d,0x4d,0xec,0x28,0x93,0x17,0x3a,0x6f,0x99,0x70,0x00,0x2b,0x66,0xb3,0x49,0x69,0x3c,0x3b,0x03,0xb8,0xc0,0x9b,0x1c,0x96,0xd9,0xd1,0xe1,0x6d,0x8f,0x45,0xce,0x22 +.byte 0xcf,0x48,0x61,0x85,0x10,0x1b,0x3f,0x2b,0x74,0x48,0x61,0x68,0x63,0xe3,0xa3,0x83,0xe2,0xcc,0xa0,0x6d,0x82,0x8b,0xe5,0x42,0xab,0xa7,0x62,0x6c,0x05,0xb4,0x7b,0x65,0xf5,0xd8,0x0b,0x7d,0x61,0xd6,0x5c,0xf0,0xc0,0x03,0x0c,0x51,0xec,0x06,0xad,0x79,0x8c,0x62,0x0c,0xf5,0x8e,0xcb,0x97,0x62,0xf9,0x3e,0x39,0x8d,0x3c,0x2e,0xd1,0xc0 +.byte 0x5f,0x98,0xea,0xb5,0x26,0x19,0xf5,0x93,0xbb,0xf8,0xd4,0xd5,0x35,0xee,0x1f,0xf8,0x71,0x81,0x0e,0xe6,0xe9,0xf3,0x2c,0x80,0xa8,0x15,0x35,0x1e,0xda,0x07,0x41,0x39,0x8a,0x19,0x1f,0x70,0x99,0xbe,0x3d,0x5c,0x1f,0xf6,0x72,0x85,0x73,0xea,0xb5,0x61,0xbb,0x77,0xaa,0xef,0xc7,0x2c,0xed,0x1e,0xa6,0xfd,0xc9,0xde,0xa9,0x82,0xba,0x19 +.byte 0x04,0x17,0xf7,0xa1,0x59,0x5c,0x7d,0x8d,0xe7,0x1c,0x89,0x7f,0xe1,0x02,0xd3,0xb0,0x46,0x6c,0xcf,0xde,0xf0,0x0b,0x00,0x43,0x8d,0xd6,0xe6,0xf7,0xc8,0x83,0x20,0x77,0x8b,0x9f,0x14,0xea,0x2b,0xb2,0xd2,0x41,0xfd,0x96,0x7c,0x0d,0x05,0xb9,0x5a,0xa0,0x83,0x50,0xde,0x0e,0xc6,0xa6,0x29,0x55,0x12,0x8e,0x2f,0x0a,0x5c,0xcd,0xae,0x92 +.byte 0x76,0x84,0xc9,0x8a,0x81,0xe5,0x3e,0xf0,0xe6,0x5b,0xe4,0x21,0xfb,0x4c,0xb6,0x0a,0x7b,0x7f,0x7e,0xab,0xdc,0x15,0x44,0xf8,0xeb,0x23,0x21,0x31,0xef,0x98,0xec,0x84,0x69,0x34,0x29,0x99,0x03,0x8a,0x12,0x8e,0x28,0xdd,0x00,0x6a,0xa3,0xe7,0x08,0x17,0x35,0x2a,0x42,0x8a,0xcb,0x4a,0x7b,0x1c,0xd2,0x74,0x4f,0x6a,0x8c,0x85,0x1c,0xd6 +.byte 0x05,0x3a,0xfd,0xdf,0x1c,0xa5,0x59,0xbb,0xdb,0xe3,0xa7,0x59,0xb1,0x67,0x3d,0xa4,0x71,0x4d,0x6c,0x99,0xe0,0xa7,0x8c,0xfa,0x96,0x1f,0x8d,0x0c,0xa7,0xc8,0xce,0xa3,0xbf,0x4d,0xc7,0xa9,0xb7,0xfd,0x04,0x58,0xcd,0xd7,0x20,0xb1,0xb9,0xf5,0x06,0x70,0x1b,0xdd,0xf4,0x1c,0xdc,0x32,0xa0,0x90,0x0d,0xb2,0x91,0x14,0x05,0xa2,0xf7,0xb7 +.byte 0xb6,0xd2,0xf1,0x30,0x75,0xcc,0x78,0x0d,0x56,0x70,0x64,0x02,0xe7,0x83,0x97,0x65,0x63,0x4b,0x64,0xff,0x8b,0x62,0xc9,0xa4,0x6e,0x96,0xbf,0xd3,0xeb,0x74,0xc5,0x1f,0xdb,0x1c,0xf3,0xca,0x54,0x7d,0x8d,0xd9,0xec,0x18,0xd8,0x99,0xd1,0xa5,0x70,0x8a,0xc5,0xdc,0xa0,0xcb,0xb7,0x52,0xe3,0xe6,0x88,0x0c,0x5a,0x42,0xde,0xe6,0xd8,0xc4 +.byte 0x39,0xe5,0x6c,0x0b,0xd4,0xa5,0x9b,0x51,0xa2,0x3d,0xc5,0xc7,0x17,0x17,0xb8,0xd8,0x09,0xad,0xeb,0x67,0x47,0xe0,0x88,0xef,0x1d,0x22,0x18,0x25,0xdc,0x32,0xb2,0xf7,0x47,0xc5,0xb3,0x0b,0x57,0x01,0x67,0xac,0xc3,0x9e,0xb0,0xa8,0xd7,0xce,0xb2,0xcd,0xea,0x3b,0x61,0xbb,0x24,0xad,0x91,0x7b,0xa2,0x9a,0xb3,0x63,0x56,0xe2,0x9d,0x69 +.byte 0x9e,0xd7,0x5f,0x5f,0x47,0x9f,0xae,0xf6,0x09,0xb1,0x9e,0x22,0x35,0xaa,0x55,0x0b,0xfc,0x70,0x96,0xfd,0x53,0x8a,0x37,0xaf,0x2d,0xa2,0xc5,0x49,0x5b,0x1e,0x32,0x47,0x9d,0xc3,0xb4,0x46,0xf3,0x54,0xdb,0x3f,0xb9,0x69,0x9e,0x8b,0xad,0x11,0xb2,0x68,0xe8,0x27,0x0d,0xca,0x33,0x1c,0x86,0xb2,0x2c,0xaa,0xc2,0x15,0xf9,0x6e,0xed,0x30 +.byte 0x71,0x08,0xeb,0x93,0x1d,0x16,0xc5,0x34,0x73,0x65,0x7a,0x19,0x2b,0xa7,0x3d,0xe6,0x88,0xb5,0x0f,0xa0,0x92,0x91,0x22,0x9d,0x01,0xf3,0xf4,0x57,0x9f,0xd9,0x23,0x1b,0xbd,0xd7,0xd5,0x11,0xc9,0x24,0xf6,0x36,0x30,0x30,0x69,0x95,0x17,0x48,0xf9,0x76,0x71,0xef,0xef,0xc0,0x00,0x9c,0x7d,0x87,0xdc,0xdc,0x1a,0x32,0x82,0x7a,0x13,0xc2 +.byte 0x9f,0x53,0xc2,0x7d,0x4d,0xbf,0xbe,0xf5,0x9d,0xc8,0x81,0x5b,0x81,0xe9,0x38,0xb6,0xa5,0x40,0xa5,0xd4,0x6f,0x0c,0xea,0xf1,0x52,0x59,0x37,0x3b,0xc2,0xb2,0x5f,0x10,0xdf,0x22,0xf7,0x77,0xe8,0x66,0xb0,0x97,0x91,0x5f,0xc2,0x18,0x8d,0x17,0x40,0xd1,0x6d,0xde,0x6e,0xf0,0x6c,0x1f,0x4e,0x9b,0x15,0x83,0x9b,0x70,0x21,0x2b,0x98,0x46 +.byte 0xbf,0xa5,0x82,0xac,0x63,0xac,0xd7,0x52,0xec,0x2c,0xf2,0xe4,0xe0,0x2a,0xbf,0x7e,0xa2,0xd2,0x9d,0x0d,0xf2,0x9b,0x79,0x5f,0x22,0xb0,0x6d,0x22,0x2e,0xed,0xe2,0x4f,0x73,0xc5,0x89,0xcc,0x4a,0xaa,0x9a,0x7e,0xab,0x95,0x25,0xa7,0x9d,0xf4,0xc2,0xe8,0x42,0x6e,0xd3,0xf9,0x25,0x54,0xb9,0x1f,0xa9,0x16,0x9c,0x22,0x7a,0xf0,0xa6,0xac +.byte 0x8b,0x9d,0xe6,0xe3,0x93,0x4e,0x65,0x3a,0x39,0x3e,0xf5,0x41,0x38,0x02,0xb7,0x37,0xd4,0xdc,0xea,0xc5,0x53,0x0e,0x52,0x85,0x96,0xc0,0xa7,0x21,0xbf,0xe7,0xca,0x12,0x1c,0x59,0x33,0xe4,0xd5,0x70,0x6b,0x25,0x54,0x24,0x58,0x48,0x1b,0x65,0x6e,0x7e,0xe6,0x84,0x39,0x38,0xbc,0xdf,0x96,0xbc,0x39,0xdf,0x8f,0x36,0x9e,0x3a,0xda,0x02 +.byte 0x86,0xe2,0x9f,0xb7,0x3a,0xd0,0xdb,0xc2,0x5d,0xb0,0xde,0x31,0x73,0x43,0xe5,0x4b,0x6a,0xa1,0x6d,0xaa,0xca,0x34,0xfa,0xa9,0xaf,0xec,0x05,0x2a,0xdb,0x82,0xa1,0xdc,0xdc,0x3d,0xb5,0x92,0x42,0x28,0xdc,0x93,0xec,0xab,0x9b,0x75,0xae,0x7c,0xbf,0x9b,0x25,0x01,0xb1,0xc8,0x3b,0x47,0xb6,0xfd,0x11,0x6f,0x4b,0xaa,0x6f,0xdf,0x1f,0x15 +.byte 0xc2,0xf3,0x87,0x4a,0xaf,0xf7,0x41,0x64,0x5a,0x19,0xa0,0xc4,0x4f,0x58,0xe8,0x19,0xe0,0x84,0x44,0xc7,0x65,0x0c,0xf1,0xff,0xcb,0x73,0xb2,0xac,0x25,0x28,0xe1,0xd4,0x03,0x16,0x3c,0x1c,0x24,0x3a,0xfc,0x2b,0x7e,0xcb,0xa3,0xba,0xb7,0x78,0x87,0xbe,0x95,0x06,0x27,0xb8,0x16,0x72,0xe4,0x24,0xa6,0x5d,0xe7,0x5e,0x93,0xa9,0x96,0xfd +.byte 0x01,0x1d,0xb8,0x7c,0x85,0x3c,0xe3,0xc9,0x56,0x68,0xcd,0xd9,0x79,0x97,0x50,0x39,0xfe,0x96,0x93,0x50,0xae,0xde,0xcd,0x8d,0xa0,0x38,0x31,0xba,0xca,0x21,0xff,0x19,0xea,0x44,0x95,0x4d,0xba,0xae,0xe2,0x62,0xd2,0x82,0x60,0x0c,0xb9,0x10,0x40,0x9a,0xaf,0x9b,0x17,0xcd,0xf3,0x26,0xec,0x38,0x13,0x18,0xd3,0xf2,0xd2,0x11,0xa6,0xc3 +.byte 0x3c,0x3b,0xe8,0xa0,0x49,0xba,0x4e,0x07,0xec,0x44,0x75,0x1c,0xc9,0x2f,0x68,0x64,0x02,0x1d,0x14,0x35,0x80,0xd8,0xa8,0x53,0xde,0x44,0x65,0x72,0x37,0x28,0x61,0x5f,0xa1,0x58,0xea,0x17,0xb3,0x89,0x25,0xf7,0xcb,0x87,0xe6,0x43,0xc5,0xc3,0xf3,0xd1,0xf5,0x1f,0x18,0xe9,0xd1,0x05,0xd9,0x85,0x38,0xf0,0x5e,0x26,0x35,0xf2,0x72,0x92 +.byte 0x34,0x2f,0xea,0xdd,0x7b,0x64,0xac,0x1d,0x78,0x41,0x56,0x83,0x7d,0x83,0x83,0x59,0xbe,0x9f,0x81,0x90,0x00,0x1f,0x04,0xd8,0xd8,0x8e,0xd9,0xeb,0x12,0x16,0x96,0x81,0x61,0x96,0xe8,0x7b,0x36,0x7b,0x26,0x9b,0x43,0x1e,0x0e,0xc2,0x59,0xdf,0x8f,0xb4,0x91,0x74,0x2e,0x1e,0x6d,0x20,0x70,0xe7,0x3c,0x39,0xe3,0xa8,0x62,0x66,0x32,0x63 +.byte 0x7d,0x89,0xb6,0xad,0x69,0x38,0x2c,0x21,0xe5,0x02,0xcc,0x93,0x8a,0x65,0x71,0x65,0x02,0x5c,0xeb,0xc9,0x70,0xf3,0x81,0xce,0x65,0x37,0x22,0xb7,0x47,0x3c,0xd6,0x3d,0x29,0x65,0x29,0xba,0xf9,0xae,0xd9,0x1f,0xd7,0x38,0x88,0x95,0xa9,0x66,0xa8,0x77,0x75,0x4a,0xf9,0x2e,0xd9,0x63,0x75,0x80,0x90,0x82,0x39,0x8b,0x21,0x58,0xf4,0x2e +.byte 0x2d,0x1f,0x7f,0xcb,0x33,0xdb,0x9b,0x9b,0x31,0x21,0x4e,0x6e,0xdb,0x0f,0x1f,0x69,0x22,0x97,0x69,0xd7,0x7f,0x2e,0xd7,0xce,0x6c,0xe4,0xc0,0xe7,0x27,0x82,0xe6,0x8a,0xf8,0xae,0x46,0x2d,0x5a,0x45,0x82,0xce,0xb6,0x49,0x84,0x15,0x4a,0x54,0xa6,0x76,0xf3,0x29,0x28,0xc0,0x05,0x82,0xae,0x7d,0x85,0x41,0xb0,0x87,0x67,0x44,0x37,0x46 +.byte 0x3e,0x47,0xbc,0x00,0x7c,0x05,0xd3,0xdc,0x9a,0x31,0x49,0xf8,0x48,0x99,0x57,0x4a,0x2b,0xe7,0xcf,0xb2,0xa7,0xf0,0xcf,0xc7,0xf5,0xfd,0x73,0x59,0xf1,0xe4,0x86,0xb5,0x5d,0xce,0x6d,0xbf,0xc6,0xe5,0xa9,0xca,0x75,0xe9,0x69,0xe6,0x09,0xab,0x66,0x17,0x09,0xe9,0xbc,0x14,0xd8,0x6f,0xe9,0xc2,0x87,0x39,0x2f,0x87,0x1e,0xb8,0x16,0x08 +.byte 0x10,0xee,0x1c,0x2f,0x47,0x7d,0xa3,0x5b,0x1f,0x1f,0x5d,0x95,0xd0,0xa4,0xbb,0x08,0xc2,0x47,0xab,0x46,0x3c,0xbb,0xbe,0x3a,0x64,0x82,0x40,0x08,0x75,0x03,0x02,0x6e,0x6a,0xab,0x6b,0xd4,0x90,0xa7,0x28,0x7a,0xb4,0x8b,0x1f,0x6b,0xcc,0x16,0x30,0x16,0xf5,0xc6,0xd8,0x4a,0xed,0xc9,0xc7,0xac,0x0f,0x75,0x1b,0x13,0xe3,0x45,0x6d,0x22 +.byte 0x7e,0x3d,0x59,0x55,0x87,0x8d,0x04,0xee,0x85,0xac,0x98,0x0c,0x52,0x5b,0xe6,0x92,0x04,0x31,0xdf,0x7c,0x44,0x4d,0x06,0xbe,0xb2,0x5a,0x95,0xef,0x29,0x75,0x9b,0xb2,0xe7,0xb8,0x83,0x18,0x82,0x23,0x4e,0x66,0xe5,0xdd,0x47,0xa1,0x6b,0x33,0x4e,0x9c,0x13,0x0e,0x0a,0x8a,0x5c,0xba,0x7b,0x2f,0x6c,0x72,0x78,0x86,0xd2,0xf8,0xbd,0x1b +.byte 0x4b,0x9e,0xe0,0x99,0x46,0x7f,0x24,0x0f,0x1b,0xda,0x85,0x87,0xe9,0xda,0x96,0x25,0xc6,0x81,0x77,0x8b,0x56,0xae,0x7a,0x9c,0x47,0x34,0xe1,0xac,0xf2,0xba,0x52,0x95,0xf8,0x56,0x26,0x66,0xf0,0x53,0xcc,0xc4,0x6f,0x46,0x94,0x10,0x22,0x69,0xb1,0x93,0x7b,0x51,0xb7,0xb8,0xdd,0x42,0x67,0x51,0x6d,0x9c,0xb2,0xbd,0xdb,0xdd,0x19,0xa2 +.byte 0x25,0x13,0xfe,0x42,0xca,0x36,0xeb,0xce,0x15,0x41,0xe7,0x35,0xce,0xa8,0x45,0x56,0x58,0x9f,0x46,0xcf,0x11,0xe7,0xcc,0x40,0x54,0xe4,0x85,0x0d,0x73,0x36,0x7e,0xae,0x38,0x8c,0x56,0xab,0xf0,0x5f,0x5c,0xff,0x14,0x9b,0x46,0x1b,0x35,0xbd,0x03,0x0e,0x2f,0x9e,0xde,0xd8,0x82,0xfe,0xa0,0x09,0xb4,0xb4,0xbd,0x58,0xc0,0xe2,0x01,0xb1 +.byte 0xca,0x5c,0x3d,0xc3,0x18,0x5e,0xc1,0xee,0x61,0x60,0x00,0xca,0x1e,0xf3,0x71,0xd8,0x15,0x37,0xf0,0x2e,0x13,0xa0,0xf7,0xac,0x73,0x4b,0xfb,0x6a,0x27,0x6b,0xde,0x69,0x3d,0x19,0x36,0x4b,0x63,0x55,0xae,0xd1,0x2b,0x66,0x69,0x0d,0x64,0xa7,0x86,0xfd,0x3a,0xb8,0xe6,0x87,0xaa,0x32,0x5f,0xbc,0xa7,0x67,0xde,0x7a,0xe0,0xdd,0xff,0x57 +.byte 0x2c,0xc9,0x25,0x92,0x03,0x91,0xa8,0x0e,0x39,0xe4,0x9a,0xdf,0x21,0x29,0xc7,0xbc,0x93,0x01,0x2a,0x02,0xd8,0xaf,0xbc,0x20,0x57,0xc7,0x37,0x77,0xa7,0xad,0x5e,0x15,0x20,0xcf,0x4a,0x3c,0x22,0x1b,0x92,0xa9,0x05,0x91,0x70,0xb3,0x88,0x4e,0x97,0x58,0xf7,0x33,0x1a,0x05,0x33,0x57,0xdc,0xbb,0x2a,0xba,0xd0,0x22,0xac,0x40,0xbe,0x60 +.byte 0xa2,0x89,0xe6,0x6c,0xf3,0x5d,0xef,0x58,0xb4,0x7c,0x4a,0x28,0xb8,0x16,0xd2,0xe0,0x49,0xf5,0xe8,0xaf,0x84,0x39,0xae,0x1e,0xa2,0x34,0x67,0x42,0x26,0x31,0x93,0x87,0x7a,0xd5,0xde,0x79,0xdb,0x4c,0x7e,0xcf,0x1f,0xef,0x9a,0x4c,0xb9,0x70,0xe2,0x72,0x9b,0xcd,0x30,0xe5,0xf1,0x84,0x44,0x5a,0xff,0x36,0xa2,0x37,0xe7,0x49,0x78,0x63 +.byte 0xbe,0xe0,0x90,0xdf,0xef,0x9e,0xf3,0x55,0x9e,0x8a,0x51,0xe8,0xa3,0x32,0x2d,0xed,0xc8,0x99,0xf6,0x92,0xf9,0x62,0x74,0xa7,0x8d,0xcf,0xa5,0x09,0xb3,0x43,0xb9,0x18,0x70,0x59,0x4f,0xd2,0x7f,0x7e,0xce,0x1e,0x7d,0xe8,0xa9,0xb7,0x29,0x0f,0x86,0x8a,0xac,0x22,0x41,0x98,0xb2,0xc3,0x48,0x3b,0x60,0xcb,0x7b,0x1d,0xc3,0x5e,0x19,0x5b +.byte 0x31,0x57,0x12,0x09,0x41,0x54,0xf8,0x01,0x70,0x02,0x03,0x8a,0x6e,0x8e,0x5b,0x23,0xf3,0xd4,0x13,0xbf,0x51,0xba,0xf9,0x2d,0x6c,0xb9,0xb3,0x90,0xd0,0xa3,0x76,0xfb,0xef,0x85,0x17,0x8b,0x2c,0x05,0xa3,0x06,0x0a,0xaa,0xdd,0xbf,0xd4,0xcc,0xe4,0x96,0x19,0x7f,0x51,0xf6,0x7e,0xa1,0x2c,0x14,0x1c,0x21,0x99,0x28,0x3a,0x0e,0x36,0x1b +.byte 0xf1,0xd7,0x3e,0x29,0x94,0xa6,0x03,0xf7,0xe5,0x6f,0x1b,0x56,0xc8,0xfb,0x2d,0x4f,0x12,0x2b,0xc7,0x3a,0xec,0x5e,0xc8,0x88,0x1b,0xd8,0x65,0x21,0x04,0x0e,0xe2,0x95,0x6d,0x62,0xea,0xeb,0xee,0xbe,0x47,0x0a,0x90,0x26,0xe3,0x85,0xd7,0x1d,0xb5,0xd5,0x56,0x8b,0xc0,0x2f,0x7f,0x01,0xc8,0xac,0x90,0xc3,0x2d,0x10,0xf2,0x11,0x30,0x0c +.byte 0xa9,0x4d,0x13,0xde,0x65,0x6d,0x34,0x68,0x5d,0xad,0x3f,0x7a,0x56,0x3a,0x1f,0xb9,0xd6,0x7b,0x8f,0xe8,0x42,0x2a,0x16,0xb6,0x3f,0xf2,0x4f,0x14,0x8e,0x8e,0x29,0x88,0x68,0x1b,0x10,0x80,0x80,0x47,0x36,0xaa,0x82,0xf5,0xa8,0x97,0xc4,0xcb,0xc2,0xef,0xaa,0x9f,0xdc,0x96,0x4f,0x1f,0xaf,0x39,0x71,0x55,0x8f,0x3c,0xbf,0x26,0x91,0x46 +.byte 0x38,0x59,0xa7,0xd1,0xb5,0x87,0xd6,0x81,0x71,0x17,0x83,0x05,0x40,0x9c,0xf3,0x33,0x4b,0x09,0x06,0xb1,0x69,0xfb,0x43,0x1f,0xef,0x9a,0xfe,0xc3,0x4e,0x4e,0x25,0xe1,0x3a,0xfb,0xf9,0xc9,0x97,0xe2,0x1c,0xa1,0x9a,0x06,0x6e,0xbb,0x16,0x4a,0x9f,0xf4,0x87,0x31,0x38,0x78,0xae,0x77,0x4c,0x42,0x28,0xc4,0x63,0xc0,0x49,0x37,0x4f,0xf9 +.byte 0xeb,0x31,0x0d,0x3e,0x0c,0x8a,0xb7,0x17,0xa7,0x90,0x26,0xc2,0xea,0xa5,0x9d,0xe4,0x4d,0xc6,0x3a,0x33,0x2d,0x47,0x42,0x8c,0xeb,0x50,0xea,0xfe,0x74,0x43,0x06,0xcd,0xa5,0xb1,0x49,0xf0,0x98,0x91,0x25,0xf4,0x8d,0x06,0xd1,0xeb,0x56,0x2c,0xf9,0xc4,0x84,0x02,0x9e,0xf2,0x3a,0xfe,0xb4,0x39,0xce,0xee,0x85,0xb6,0x64,0x6c,0xbc,0x1f +.byte 0xe6,0x86,0x00,0xc3,0xa9,0xb4,0x53,0xdf,0x2d,0x7c,0xc6,0xde,0x2e,0x79,0x25,0x5c,0xbb,0xe5,0xbe,0x33,0xe9,0x58,0x49,0x35,0xbe,0xae,0xbc,0x06,0xdc,0x48,0x9d,0xc3,0x08,0x6f,0xe8,0xb8,0x48,0x67,0xea,0x1c,0x05,0xb4,0xf7,0xe3,0xcc,0xc1,0xb3,0xa8,0x61,0xcb,0xa8,0xf6,0x12,0x52,0x68,0x06,0x36,0x2b,0x15,0x43,0xc9,0x98,0xfe,0xe5 +.byte 0x43,0x11,0x0d,0xc3,0x37,0x38,0x7a,0xcb,0x98,0x14,0xc1,0xaf,0x29,0x36,0x35,0x63,0x74,0x98,0xcf,0x0f,0x44,0xe4,0x6e,0xf7,0x3f,0x6e,0x15,0xe8,0xe9,0x93,0x7b,0x96,0x1b,0x84,0xe7,0x8b,0x83,0x30,0xa1,0xdc,0xc3,0xb8,0x18,0x2f,0xc5,0x34,0xd1,0xa5,0xb9,0xee,0x4a,0x04,0xbf,0x26,0x63,0x29,0xba,0x90,0xb5,0x7c,0x83,0x2b,0x1f,0xe8 +.byte 0x5c,0x9f,0x23,0x40,0x7f,0x9c,0x2f,0x76,0x96,0xd6,0xd5,0x13,0xda,0x5c,0x81,0xa4,0x60,0x60,0xbd,0x5e,0xb3,0xd2,0x2c,0xaa,0x48,0x04,0x74,0x31,0x5d,0xbd,0x46,0xd8,0x8d,0x3f,0x62,0x2d,0x1e,0x17,0x97,0x08,0x71,0x06,0x1b,0x96,0x1b,0xd5,0x80,0xa6,0x41,0x06,0x10,0x6e,0x36,0xd4,0xfb,0x36,0x6d,0x96,0xb8,0x86,0x22,0x34,0xda,0x7e +.byte 0x6c,0x5f,0x3b,0x95,0x35,0x1b,0x42,0x3c,0xf2,0x9d,0xe3,0xe9,0x3f,0x44,0xd5,0x4c,0x60,0x55,0xae,0xbe,0x4f,0xf2,0xb3,0x84,0xa1,0x79,0xdf,0x86,0xf0,0x8f,0xad,0xa5,0xa3,0x4a,0xea,0x5d,0x68,0x34,0x17,0x4c,0xb7,0xd8,0x6f,0x67,0x22,0x85,0xe2,0x16,0xcf,0xba,0xee,0x92,0xeb,0x95,0x8e,0x67,0xb1,0xf0,0xbb,0xb0,0x34,0x2f,0x58,0x49 +.byte 0x56,0x3e,0x81,0x31,0xb6,0xc3,0x2c,0xee,0x2b,0x85,0x72,0xbc,0xe9,0x20,0xaa,0x4e,0x34,0xb9,0x8b,0x32,0x2f,0x9e,0xd7,0x98,0x63,0x9d,0xfd,0x3a,0xe9,0x30,0x49,0x23,0x4a,0xb4,0xcb,0xc5,0xe5,0x78,0xcd,0x22,0x90,0xce,0x9f,0x35,0x13,0xda,0x8f,0x14,0xdb,0x36,0x0f,0x66,0x87,0x62,0x50,0xde,0x52,0x15,0x10,0x67,0x8a,0x5c,0xdb,0x76 +.byte 0x51,0x7f,0x72,0x9b,0x8e,0x91,0x39,0xc8,0x3c,0x34,0x0f,0x3d,0x92,0x07,0xb8,0xef,0x2a,0x8b,0x59,0xbd,0x82,0xc1,0x5c,0x95,0x93,0x0d,0x3d,0x9b,0x51,0x53,0x38,0x6b,0xd0,0xe3,0x5b,0xbb,0xe5,0x6c,0xc0,0xb5,0x71,0xa8,0xd8,0x7d,0x5d,0xbd,0xfc,0x69,0xcf,0xcc,0xa1,0xcd,0x83,0x9d,0x8f,0x46,0x47,0xe7,0x36,0x19,0x9f,0x4d,0xda,0x9c +.byte 0xcb,0x2a,0x47,0x58,0x93,0xbb,0x64,0xa3,0x89,0x53,0xbf,0xc7,0xc2,0xe2,0x65,0x0f,0x4f,0x17,0xc6,0x4c,0x15,0xfe,0x4b,0x95,0xb2,0x79,0x4a,0xb8,0xf6,0xae,0xcc,0xba,0xc3,0x5d,0x18,0xb2,0x8e,0xd8,0x6b,0x43,0x1b,0x2f,0xe1,0x36,0xb2,0xa5,0x22,0xa0,0xc7,0xc0,0x26,0x8e,0x48,0x77,0x0c,0x14,0xdd,0xdc,0xde,0x71,0x98,0xce,0xdd,0x61 +.byte 0x85,0xd9,0x23,0x42,0x7f,0x85,0xc8,0x06,0x81,0x3e,0xa2,0x0f,0x1e,0x3e,0xcf,0x33,0xef,0x43,0x6a,0xc7,0xee,0x3f,0x91,0x68,0x32,0x89,0xd9,0xed,0xdf,0x45,0x33,0x10,0xbb,0xd5,0xef,0x1d,0x3c,0x1e,0x26,0x21,0x4d,0x1a,0x06,0x98,0x60,0x71,0x7f,0xce,0x45,0x4e,0xe3,0x3f,0xfa,0xff,0xcd,0xe2,0x92,0x82,0x2e,0x83,0x69,0x9c,0xc6,0x5c +.byte 0x6e,0xb6,0xec,0x28,0xdc,0x7b,0xdb,0xf3,0x02,0x3a,0xf7,0xad,0x9b,0x7a,0x73,0xb2,0x07,0x70,0x76,0x9d,0xa2,0x11,0xcf,0x89,0xea,0xaf,0x6a,0xd2,0x15,0xeb,0x5a,0x99,0x1a,0x17,0x1d,0xce,0xc0,0x7f,0x50,0x26,0x84,0x07,0xd7,0x7e,0x33,0x27,0x74,0x84,0x18,0x32,0x86,0x32,0x34,0x28,0xe8,0x45,0x21,0xb7,0x26,0x3b,0x11,0xbb,0x9a,0x8b +.byte 0x46,0x8e,0x27,0xf8,0x62,0xb5,0x98,0x6e,0x03,0xee,0x9e,0xcb,0xbc,0x74,0xbe,0x63,0x7a,0x86,0xe5,0x75,0xeb,0x7f,0x14,0xa6,0x96,0x76,0x5a,0x46,0xa9,0xda,0xf1,0x4e,0x0e,0x90,0x59,0x56,0x4a,0x48,0x2d,0x91,0xbe,0x78,0x5b,0xfb,0xf7,0xea,0xab,0x1c,0xc0,0x0c,0x5d,0xba,0xb4,0x7b,0xc7,0x21,0xb1,0xc9,0xa3,0x20,0xe6,0xae,0xee,0x0e +.byte 0xf0,0x3b,0x44,0xd6,0xaa,0x57,0x88,0x1f,0x76,0xc8,0x43,0x07,0x91,0x71,0xa5,0xcc,0x04,0x38,0x01,0x13,0xa6,0xea,0x18,0x48,0x8f,0x09,0x8d,0x37,0x8b,0x6f,0x35,0x36,0x51,0xc6,0x30,0xca,0x9e,0xe2,0xaf,0x0c,0x26,0x14,0xe3,0xbf,0xea,0x0e,0x14,0x88,0x97,0xcc,0xf6,0xc1,0x8f,0xad,0xef,0x2d,0xc1,0x0f,0xad,0x45,0x12,0x7a,0xe6,0x37 +.byte 0x97,0xcb,0x34,0x83,0xd8,0xef,0x34,0x2a,0xce,0xd0,0x21,0x8a,0x7d,0x87,0x7a,0x66,0xf7,0x1c,0xdf,0xa0,0x3f,0xa0,0xf6,0xb3,0x24,0xee,0x6e,0x21,0xe9,0xc3,0x73,0xe4,0xd9,0xc6,0xf6,0xf6,0xac,0x25,0xb7,0xb5,0x64,0x7f,0xcc,0x88,0x3e,0x98,0xe1,0xef,0xa9,0xd2,0x03,0x10,0x4b,0xa3,0xbc,0x3c,0x24,0xfc,0x41,0x36,0x30,0x2d,0xca,0x17 +.byte 0x35,0xd6,0x17,0xa2,0x2b,0x48,0xed,0xd3,0xd7,0x18,0x4f,0x45,0xe9,0x59,0x03,0x35,0xa0,0x80,0x75,0x17,0x48,0xd5,0xea,0x07,0x7a,0x6c,0x3f,0x7a,0x2c,0x02,0x0a,0x7f,0xb5,0x17,0xea,0xf4,0xf6,0xb5,0xf4,0x81,0xba,0x69,0x44,0x81,0x6b,0xff,0xb2,0x43,0xae,0x3d,0x37,0x81,0x91,0x3f,0x6a,0x70,0x35,0x2d,0x06,0x9d,0xa8,0xb5,0xb8,0xc7 +.byte 0x19,0x3a,0x5f,0x59,0x79,0x0b,0x62,0x23,0xa4,0x5b,0x46,0x7b,0x17,0x82,0x19,0x87,0xe8,0xdf,0x09,0xb7,0x50,0x7e,0x40,0xe3,0x71,0x2d,0x09,0xde,0x69,0x2e,0x6c,0x35,0x5c,0x44,0xae,0xb7,0x05,0xb8,0x7e,0xb4,0xe4,0x34,0x05,0x1f,0xd2,0x1f,0xe5,0x79,0x2a,0x15,0xf8,0x8f,0x02,0xc7,0xc8,0x1e,0xe6,0x12,0x83,0x08,0x9c,0x7a,0x2f,0xc6 +.byte 0xc9,0x15,0x0f,0x0f,0x0f,0xa9,0x53,0x16,0x19,0x5b,0x74,0x58,0x6c,0xac,0x21,0x72,0x7f,0xa1,0xae,0xbc,0x34,0x76,0xa6,0x9b,0xbe,0x0f,0x13,0x55,0x50,0x5a,0x8b,0x9e,0xb3,0xf3,0x9e,0x8b,0x61,0xbe,0xb4,0x09,0x71,0x61,0xf0,0xd6,0xaa,0x8c,0x0d,0x0c,0x66,0x31,0x88,0xe3,0x71,0x6a,0xb5,0xaa,0xc0,0x9b,0xce,0x0d,0x79,0x90,0xc1,0x0a +.byte 0xf9,0xfe,0x4d,0x49,0xd0,0x5a,0x63,0xf1,0xfc,0x47,0x71,0x9e,0xbb,0xd1,0x2c,0xef,0xfe,0x90,0x28,0x75,0x82,0xf6,0xa5,0x95,0xea,0x65,0xfa,0xe8,0x04,0xcd,0xb4,0xe1,0x0d,0xb2,0xac,0xd5,0x12,0xf5,0x17,0xbb,0x3b,0x2e,0x52,0x9e,0x7b,0xe7,0x8e,0x86,0x03,0xce,0x77,0x01,0xf0,0x4f,0xb5,0xf7,0xef,0x8b,0x37,0x5e,0x97,0x80,0xbb,0x2b +.byte 0xcf,0x9a,0x63,0x18,0xc5,0x0c,0xfb,0x3c,0x91,0x9c,0x37,0x90,0x76,0x71,0x62,0xbc,0x80,0x40,0x1a,0x74,0xb8,0x1b,0x61,0xb1,0x89,0x4d,0xf7,0x8d,0xd4,0x46,0xef,0x1f,0x3b,0xac,0xe8,0x41,0x62,0x8e,0xea,0x2b,0x56,0x22,0x25,0x37,0x70,0x53,0xcd,0x8f,0x57,0xfa,0xad,0x00,0xc5,0x0c,0x9e,0x57,0xde,0x50,0x07,0x8d,0x80,0xbf,0x22,0x5d +.byte 0x4a,0xbd,0x6a,0xcb,0xfc,0x6f,0xd1,0x56,0x8f,0xd5,0x34,0x8a,0xe6,0xe9,0xa0,0x00,0x06,0x12,0xd8,0xb1,0x49,0x0a,0xbb,0x87,0xe5,0xca,0x75,0x11,0x4c,0x85,0x60,0x77,0xc0,0x90,0x1c,0x14,0x38,0x38,0x3e,0x4f,0xff,0xbf,0xfc,0xa1,0xa1,0xe7,0xb0,0x5d,0xd8,0x1f,0x33,0x07,0x5f,0x04,0x4f,0xc7,0x93,0xc6,0xcc,0xe3,0x01,0xd0,0x43,0xe1 +.byte 0xd9,0x00,0xc5,0x9f,0x79,0xab,0xfc,0xe9,0x55,0x51,0x03,0x0c,0xe1,0x73,0xd6,0x09,0xe3,0xb9,0x76,0x72,0x77,0x4c,0x1b,0x7c,0x57,0x1e,0x7f,0x5f,0x02,0x83,0xa3,0xc6,0xde,0x23,0x85,0x76,0x1a,0xbf,0x48,0xc8,0x02,0xdb,0x31,0x30,0x95,0x85,0x68,0x8a,0xf6,0xe9,0x48,0x7f,0xc9,0x26,0xab,0x68,0x36,0x9f,0x1c,0xf0,0x90,0xbc,0x4a,0x68 +.byte 0x94,0xf8,0x7f,0xae,0xa9,0x3b,0x5b,0x63,0x9a,0xcd,0xe3,0xf0,0xac,0x9f,0x6f,0x78,0xa0,0x67,0x58,0xd8,0x2c,0x71,0x8a,0x14,0x31,0x07,0x95,0x0c,0x38,0xa4,0x53,0x33,0x60,0x23,0x21,0x87,0x6b,0x4f,0xf9,0xa8,0xb8,0xfc,0x8e,0xf1,0x3a,0x03,0x0b,0x03,0x02,0x33,0xbc,0x6a,0xb9,0x8e,0x41,0xc8,0x38,0xd8,0x83,0x30,0x6a,0x61,0x5c,0xcf +.byte 0x49,0xdd,0xd7,0xda,0x2c,0xaf,0xc4,0x68,0xad,0x07,0x9c,0xd4,0xaf,0x94,0x64,0xcf,0xe1,0x9b,0x37,0x50,0x65,0x03,0x20,0x3c,0x34,0x43,0xe9,0xb0,0x9b,0xba,0xb1,0x9a,0x3e,0x10,0x99,0x8f,0x93,0xb7,0x3d,0xac,0xbd,0xab,0xa8,0xfa,0x74,0x90,0xe1,0x38,0xe4,0xf3,0x47,0xfc,0xad,0x8b,0xb4,0x98,0xe4,0x65,0xe9,0xd9,0x8a,0x21,0x81,0x4f +.byte 0x0c,0xd7,0xb1,0x84,0xb9,0x69,0x68,0x64,0xa3,0x1f,0x25,0x84,0x5f,0xf7,0x3f,0xca,0x52,0xff,0xda,0xc9,0x3d,0x5e,0x8b,0x57,0xd3,0x9a,0x1d,0xb7,0xae,0x90,0xa4,0xc3,0x78,0x68,0xfd,0x80,0x3f,0xfd,0x5c,0x09,0x83,0x5d,0xc2,0x48,0xd8,0x84,0xeb,0x8a,0xfe,0xbe,0x30,0x12,0x79,0x54,0x5f,0x7f,0x6e,0x4b,0x8a,0x1e,0xcb,0xcd,0xed,0xb6 +.byte 0xe9,0x6d,0x8a,0x1f,0xdc,0xb1,0x46,0xab,0xdc,0x0d,0xbf,0xda,0xd9,0x39,0x3b,0xd2,0x81,0x00,0x83,0x77,0x32,0xf7,0xdf,0x0e,0x31,0x5d,0x1d,0x6c,0xa7,0x4e,0x54,0xa8,0xac,0x81,0x8c,0xb6,0xa5,0x89,0x02,0xd7,0x2e,0xfd,0x26,0xa3,0x9e,0xcf,0xdb,0x1f,0x5a,0xf3,0x54,0xac,0xe5,0xd0,0x1f,0x9b,0xa7,0xab,0x28,0xcc,0x66,0xd3,0xbc,0x4c +.byte 0x54,0x1a,0x54,0x73,0x78,0xde,0x08,0xd5,0xa5,0x08,0xdc,0x00,0x09,0xc5,0x37,0x61,0x1a,0x98,0x12,0x84,0x2d,0xff,0xc3,0x25,0x62,0x93,0x83,0x05,0x66,0x3d,0xfb,0x1d,0x54,0x08,0x8a,0x50,0x03,0xc4,0xc4,0x6e,0xfa,0x16,0x83,0xbb,0x27,0xf1,0xb7,0x31,0x92,0x64,0x76,0xbc,0xf0,0x44,0x62,0xe9,0x5e,0x15,0x94,0xdc,0xe9,0xf3,0xf8,0x20 +.byte 0x93,0x4d,0x11,0xa2,0xc8,0xde,0x83,0xe6,0x75,0x63,0xfe,0x13,0x75,0x0f,0x79,0xd1,0x3d,0x75,0xb7,0x43,0x62,0x57,0x8d,0x96,0x9c,0xa3,0xc4,0xb2,0x84,0x6a,0x14,0x6e,0x17,0x32,0x09,0x76,0x95,0xbb,0xd6,0xc1,0x2e,0xdc,0x8c,0x73,0xd7,0xad,0x5a,0x41,0x8b,0xb3,0x7e,0x8d,0x90,0xec,0xf5,0xa0,0x46,0x90,0x4c,0x52,0xec,0x97,0xc6,0x98 +.byte 0x7d,0x19,0x77,0xa0,0x99,0x85,0x11,0x26,0x77,0x26,0xf9,0xac,0xe3,0x81,0xcf,0x7d,0x22,0xc8,0x00,0x3d,0x5b,0xee,0xa5,0xf8,0x6d,0xfe,0x47,0xe4,0xef,0x60,0xcc,0xd0,0x33,0xf7,0x5b,0xed,0xbd,0x82,0xc9,0xa8,0x41,0xb8,0x47,0x34,0x9f,0x62,0xb2,0x67,0x62,0xb0,0x3a,0x27,0x95,0xe1,0x22,0x76,0x98,0x0f,0x35,0xaf,0xfc,0x4d,0xc7,0x92 +.byte 0x92,0x7e,0xaf,0x3b,0x3a,0x36,0x5e,0x5c,0xbf,0x43,0x02,0x66,0x5a,0x30,0x78,0x82,0x52,0x20,0x98,0xd6,0xa1,0xe9,0x9a,0x61,0x54,0x0b,0x74,0x85,0xb5,0x99,0x69,0x9f,0x9b,0x3b,0x2f,0x49,0xec,0xb3,0x18,0x0c,0x4a,0x53,0x20,0xd7,0x80,0x7b,0xd4,0x20,0x21,0x32,0x89,0x08,0x81,0x50,0x2b,0x16,0x8d,0xbb,0xe6,0xbb,0xc7,0x74,0x80,0x67 +.byte 0x47,0xf1,0x06,0x68,0x02,0x37,0x31,0x00,0x50,0x8b,0xe2,0x44,0x85,0x2e,0x39,0x54,0xda,0x26,0x7b,0xe1,0xb0,0x23,0xd7,0x0c,0x3c,0x3b,0x81,0x9b,0xa6,0xbe,0x24,0xfd,0x09,0x73,0xbe,0xc3,0x2f,0xa0,0x7b,0x85,0x5b,0x1b,0x55,0x4e,0x9e,0x38,0x80,0x61,0xd7,0xe8,0x9b,0xec,0x88,0x00,0x6a,0x64,0x1b,0xd5,0x65,0x20,0x2a,0x62,0x64,0xbc +.byte 0x21,0xca,0xce,0xc3,0xeb,0x2d,0x2b,0x5c,0x4d,0xb8,0x7c,0xb5,0xbe,0x98,0x0d,0x5b,0x88,0x23,0x60,0xff,0xbe,0x0a,0xb6,0xdd,0xdf,0x28,0xd5,0x2c,0xe5,0x9d,0xb5,0x29,0xea,0x6c,0x3a,0xf4,0x78,0x91,0xa3,0xb2,0xab,0x12,0xf9,0x90,0x96,0xc9,0xa4,0xfc,0x4d,0x28,0x2b,0x0c,0x28,0x8b,0xb7,0x8b,0x36,0xd6,0x80,0xbf,0x07,0x09,0xf9,0x62 +.byte 0x32,0xc0,0x50,0x60,0xd9,0x73,0xe3,0xbe,0xfa,0xa6,0x78,0x48,0x47,0xd7,0xb5,0x39,0xd8,0x04,0x6d,0x79,0x98,0x2e,0xd6,0x3a,0xe5,0xc9,0x01,0xd0,0x00,0x2e,0xd2,0x8b,0xd7,0x1f,0xf1,0xba,0xd4,0x0e,0x9f,0x9d,0xab,0xbf,0x2c,0xe1,0x75,0xf6,0x9c,0xc0,0xae,0x73,0x2b,0x58,0xcb,0x6d,0x46,0x6d,0x11,0xb7,0xce,0xc7,0xef,0x34,0x2c,0x11 +.byte 0x93,0x3c,0x17,0xd9,0x3e,0xad,0xc9,0x4c,0xb3,0xd0,0x0a,0xd0,0xfe,0xf3,0x9d,0xc5,0x43,0x03,0xa9,0x78,0x4a,0x42,0x7f,0xfb,0x75,0xd2,0x85,0xfb,0xe7,0xe6,0xa9,0x48,0x2f,0xa6,0xc3,0x16,0xe2,0x2a,0x9d,0x0d,0xcb,0x2e,0x8b,0x75,0xa8,0x14,0x3a,0x2e,0xb1,0xff,0x58,0x1d,0xa8,0xa6,0xc0,0xf6,0x17,0xda,0xc1,0xce,0xaf,0x08,0xa9,0xc2 +.byte 0xa3,0xc1,0xab,0xb6,0xe8,0x10,0x57,0x8a,0xce,0xc0,0x03,0x5c,0x53,0x5c,0x02,0x5d,0xcf,0x5c,0x65,0xc6,0x47,0x3c,0x62,0x0e,0xa3,0xfc,0xe2,0xae,0x10,0x55,0x4a,0xb4,0x27,0xe8,0x59,0x5e,0x45,0xa9,0xbb,0x21,0x10,0x91,0x46,0x1f,0x50,0x3b,0xc6,0x8c,0xa1,0x8a,0xee,0x5e,0x6e,0x32,0xe6,0x42,0x40,0x79,0x7f,0xbb,0xb3,0x5b,0x05,0xde +.byte 0xe0,0xf6,0x7f,0x3d,0x37,0xe6,0xc3,0x3b,0x40,0xc9,0xe0,0x42,0x36,0xd0,0x0e,0x13,0x32,0x3e,0x48,0xce,0xd8,0xa2,0xef,0xae,0x93,0x66,0x7d,0xde,0xb9,0xdd,0x60,0x15,0x53,0xf2,0xd9,0x90,0x3d,0x38,0x8c,0xa6,0x34,0x44,0xb5,0x6c,0x74,0x7d,0x9d,0xe7,0xd0,0xef,0x6c,0xd6,0xfe,0x9b,0x79,0x4e,0x79,0x5e,0x48,0xef,0x93,0xb2,0x81,0x0b +.byte 0x2b,0xee,0x83,0x69,0x3d,0x15,0x8c,0x27,0x69,0x6f,0xca,0xbf,0x75,0x29,0x37,0xc6,0xe6,0xca,0xb2,0x70,0xd0,0xaf,0xc8,0x5e,0x69,0xf1,0x6b,0x2d,0x0d,0xe7,0xe9,0xbf,0x07,0x52,0xe5,0xac,0x98,0xcf,0xcf,0xd6,0xdd,0x7c,0x2b,0xfc,0x8f,0xd2,0x5f,0x81,0x4b,0x1b,0x7b,0x2d,0x84,0xe2,0x69,0x96,0xcb,0xa2,0x59,0x10,0xba,0xda,0x51,0x11 +.byte 0xeb,0xc3,0x4f,0x10,0xbf,0x8e,0x5b,0xbb,0xa3,0x29,0xe9,0xd8,0x0e,0x71,0xa0,0x1b,0xff,0xee,0x36,0x8c,0x00,0x83,0x6b,0x32,0xfe,0x05,0xeb,0x89,0x8f,0xed,0x48,0x22,0xe1,0x76,0x0a,0xac,0xae,0x3c,0x24,0x54,0x84,0xc2,0x0f,0x79,0x33,0x2b,0x49,0x35,0x1c,0x84,0x5a,0xca,0x92,0x6c,0x1f,0x78,0x15,0x5a,0x36,0xad,0xd5,0x1d,0x9d,0x10 +.byte 0xc1,0x5f,0x7c,0x61,0x60,0xba,0x2e,0xe6,0x9b,0x34,0x02,0xe9,0x68,0x1c,0xfb,0xbf,0x02,0xdc,0x79,0x57,0x1c,0x0f,0xc8,0x8c,0x2a,0x66,0x2a,0x50,0xaa,0x81,0x4e,0x1f,0xa8,0x2d,0xe4,0x61,0xe8,0x43,0x84,0xcb,0xda,0x96,0xf9,0x4a,0xd0,0x8f,0xe1,0xd7,0xc4,0x05,0xf5,0x76,0xfa,0x47,0x7a,0x07,0x1a,0x77,0xbb,0x63,0xb3,0x3a,0x85,0x3b +.byte 0x0d,0x32,0x4f,0x14,0x15,0x02,0x5b,0x9c,0xbc,0xc2,0x12,0x90,0x0f,0x7b,0x94,0x27,0x5f,0x70,0x23,0xd8,0x5d,0x54,0xc4,0xca,0x6a,0x69,0x9e,0xd1,0xb3,0x2a,0x75,0x1a,0x07,0x9c,0x20,0xf6,0x76,0x22,0x4d,0x09,0x30,0x24,0x3f,0x3b,0xe5,0xcb,0x4b,0x5a,0x03,0x2d,0xe8,0xbe,0xed,0xf0,0xe3,0x91,0xf2,0x6c,0xb8,0x02,0x2d,0x6c,0x7a,0xa6 +.byte 0xc1,0x8e,0xa7,0xbb,0x73,0xdf,0x40,0xa5,0x60,0x91,0xbf,0xbe,0x28,0x0b,0x37,0x2e,0x5f,0x4b,0xcd,0x14,0x4d,0x2d,0xfc,0x5e,0x43,0xb5,0x78,0x8d,0xea,0xa0,0x86,0x54,0x4f,0xb6,0x25,0x40,0x39,0x3f,0x9c,0x7a,0x26,0x74,0x88,0x42,0x53,0xb0,0x3b,0x81,0x75,0x04,0x67,0x41,0x65,0x66,0x2c,0xdc,0xe9,0xf0,0xb3,0xab,0x2a,0xa5,0xf3,0xef +.byte 0xfa,0xc5,0x10,0x63,0xe2,0x70,0xb5,0x29,0x60,0x86,0x9e,0xb9,0x0b,0xe2,0xc4,0x05,0xa9,0x3c,0x1b,0x60,0x15,0x6b,0x2f,0x74,0x93,0x5e,0x70,0x9a,0x56,0x6a,0xc4,0x92,0x49,0xaa,0x95,0x51,0xc4,0xba,0xfd,0xf6,0x2d,0x36,0x3e,0x66,0xbd,0x74,0xbc,0x2e,0xb3,0xad,0xa1,0x41,0x50,0x33,0x79,0x84,0xac,0x21,0x7a,0xfc,0x3a,0x8e,0xdb,0xcc +.byte 0x27,0xf6,0x2c,0x5c,0x23,0x38,0x73,0xd5,0xaf,0xc9,0x2d,0x9c,0x18,0x58,0xdf,0x8f,0x89,0x9d,0xdd,0x00,0x3c,0x5f,0x23,0x00,0x6e,0x66,0x1d,0xf3,0x1c,0x40,0x9d,0x43,0xb0,0x74,0xf1,0x41,0xa5,0x77,0xcb,0x8d,0x5b,0x94,0x68,0x95,0xb6,0x0e,0xd4,0x4d,0x47,0x9b,0xd2,0xcd,0x9b,0x94,0xa4,0x28,0xf9,0xf0,0x3d,0xcf,0x89,0xb1,0xc3,0x73 +.byte 0x84,0x15,0xb6,0xc8,0x6b,0xf1,0xb1,0xdc,0x1b,0x1a,0x6f,0xb5,0x73,0x87,0x8b,0x63,0xbf,0x4b,0x25,0x9b,0xe4,0xdd,0x44,0xed,0xe7,0x0e,0x6f,0x03,0xae,0xa1,0x5e,0x1f,0x5f,0xa7,0xa4,0xed,0x69,0x7a,0x91,0x6d,0x55,0xac,0xce,0x18,0x32,0x17,0x78,0x49,0x9f,0x1e,0x9c,0xd2,0x7b,0x1f,0x74,0x60,0xa5,0x64,0xb1,0x99,0xe6,0xc5,0x0d,0x69 +.byte 0xfa,0xb2,0xd9,0x05,0x61,0x71,0xa4,0x6f,0xc2,0xb6,0x91,0x0e,0x6c,0xf2,0xa6,0x6c,0xea,0x8e,0x94,0x8b,0xac,0xa7,0xfe,0x70,0x8e,0x8d,0xc2,0x85,0xa6,0xa7,0x8e,0xe8,0xfa,0xbc,0xa1,0xaf,0x0e,0xa9,0x06,0xa4,0x9a,0xb0,0x23,0x93,0xbc,0x93,0x2d,0x97,0x42,0xe2,0x0d,0x3a,0x65,0xb4,0x60,0x5b,0xeb,0xa1,0x20,0x8a,0xdc,0x17,0x6b,0xc5 +.byte 0x19,0xc3,0x67,0xbf,0xae,0xf7,0xb9,0xb1,0x88,0x7f,0xe5,0x1b,0xc2,0x61,0x97,0xa0,0xd3,0x64,0x74,0x6b,0x7a,0x46,0x39,0x3f,0xc8,0xd3,0x53,0x79,0x74,0x4e,0x1e,0x63,0x91,0xc5,0x4a,0x70,0xb0,0x05,0x35,0x19,0xc2,0x26,0x54,0x44,0x3b,0xa9,0x12,0x40,0xd0,0x21,0x19,0xf3,0x8d,0xc7,0x2b,0x88,0x9a,0xec,0x41,0x8f,0x4f,0x23,0x19,0x1a +.byte 0xf3,0x1d,0x0a,0x88,0x0f,0xa7,0x02,0xd4,0x78,0x88,0xe6,0x43,0xb6,0x9e,0x07,0xdf,0x6a,0x1f,0x41,0xbb,0x3e,0xea,0x15,0xff,0x66,0x4c,0x7a,0x8b,0xee,0x27,0x47,0x81,0x81,0x95,0xa2,0x22,0xb4,0x9f,0x1c,0x09,0x1c,0xfc,0x0a,0xef,0x88,0x7f,0x59,0x60,0x91,0x6a,0xe4,0x92,0x8c,0x02,0x54,0xc9,0xee,0xc7,0x5e,0xd1,0xbf,0xc9,0x41,0xde +.byte 0x2f,0xa3,0x22,0x07,0x1d,0x8c,0xe1,0x04,0x59,0x94,0x75,0x3e,0xee,0x56,0x62,0x07,0x80,0x18,0x60,0x78,0x0e,0x55,0x06,0xec,0xe1,0xa5,0xf6,0x21,0x7e,0xf9,0x37,0xab,0x6a,0xed,0x07,0xcb,0xbf,0xa2,0xab,0x50,0xee,0x1f,0x2f,0x54,0x2b,0x82,0x93,0x59,0x03,0x35,0xd9,0xe8,0x2b,0xa6,0x03,0xc2,0xef,0x37,0x85,0xfc,0x89,0x06,0x30,0xe0 +.byte 0xc2,0x00,0xc4,0xaf,0x59,0xb6,0x31,0x52,0x37,0xa4,0x6c,0xdb,0x1b,0x20,0x87,0xf0,0xa4,0x15,0x4b,0xa8,0xd9,0x7e,0x1b,0x96,0x00,0x07,0xf4,0x86,0x07,0x14,0x55,0x70,0x37,0xe3,0xe3,0xf0,0xeb,0xd6,0xf1,0xe0,0xe9,0x6c,0xdf,0x3d,0xaf,0x86,0xb8,0x00,0x9b,0xdf,0xc6,0x5c,0xd2,0x53,0xcb,0xcf,0x63,0xcc,0x3e,0x6d,0x62,0xeb,0xe6,0x97 +.byte 0xd8,0x54,0xed,0x36,0xe4,0xed,0x69,0xaa,0x10,0x83,0xde,0x16,0xfd,0xcc,0xd6,0x24,0xb9,0x3c,0x4f,0x99,0x81,0xc2,0x23,0x16,0x91,0x5d,0x9f,0x46,0xa5,0xdd,0xb4,0x8a,0xe1,0x07,0x89,0x84,0x2e,0x62,0x48,0xf6,0x1a,0x17,0x7b,0xc8,0xf7,0xb4,0x3d,0x9e,0x82,0xe3,0xe3,0xcf,0x0b,0xd9,0x52,0x90,0x61,0xd8,0xdf,0x9e,0xc4,0xc7,0x7c,0xfa +.byte 0xcf,0x09,0xd2,0x94,0x86,0x37,0x94,0xaf,0x7e,0x0a,0x9d,0x16,0xee,0xad,0xfb,0xa2,0x9e,0x2d,0x2f,0xad,0xd5,0xc2,0xf9,0x91,0xf8,0x7e,0x2b,0xb8,0xb2,0x60,0x3c,0x0a,0x89,0x53,0x07,0x87,0x3b,0x83,0x70,0xee,0x71,0xa3,0x94,0x0b,0x77,0x50,0xeb,0xcc,0x23,0xf0,0xbe,0x95,0x51,0x54,0xd2,0xd6,0xd2,0x09,0xa5,0x19,0x3d,0x4e,0xec,0xe3 +.byte 0x88,0x71,0xa7,0xb1,0x10,0x03,0x7e,0xc4,0x92,0x2a,0xe7,0x99,0x75,0xff,0xae,0x10,0x3d,0xbb,0x33,0xc9,0x7f,0xc2,0xe6,0x3c,0xc4,0xe7,0xba,0x37,0xba,0x68,0x69,0x92,0x4a,0xfb,0x32,0x3b,0xb5,0xde,0xdb,0x91,0xd0,0x8e,0x77,0xf2,0x1e,0x2d,0x25,0xb4,0xa0,0x42,0xef,0x78,0x6c,0x75,0xcb,0xa0,0x73,0xdf,0xde,0xd8,0x26,0xfe,0xe3,0xf9 +.byte 0x74,0xe7,0xa0,0xd2,0xbd,0x6c,0x99,0x8d,0x07,0xf2,0xf8,0xff,0x36,0x2d,0x8e,0xda,0x5e,0x5c,0x47,0x06,0xf8,0x08,0x33,0x1d,0x93,0xcf,0xc3,0x1a,0x20,0x86,0xb6,0x8e,0x44,0x10,0xbc,0xba,0x89,0xfc,0xa3,0x57,0x92,0x2c,0x28,0xa1,0xd0,0xab,0xdc,0xba,0x0a,0x7e,0x9d,0xd2,0xfd,0x09,0xd3,0x87,0x6c,0x06,0x44,0x17,0x73,0xfe,0xc9,0x8b +.byte 0x52,0xd3,0x09,0x60,0x14,0x03,0xb1,0x79,0x4c,0x9c,0xc4,0xec,0x42,0x4c,0xd3,0x21,0xe5,0x34,0x21,0x38,0xdd,0x12,0x95,0xd4,0x20,0x50,0xef,0x5f,0x46,0x4f,0x37,0x65,0xd5,0xf1,0xb2,0x2c,0x6c,0x9a,0x06,0x28,0x77,0xbf,0xe3,0xec,0xec,0x2b,0xcb,0x2c,0x8b,0x62,0x2e,0x39,0xaa,0x28,0x0b,0x51,0x01,0xa5,0x02,0x06,0x66,0x4a,0x67,0x0c +.byte 0x96,0xa3,0x12,0x74,0x94,0x2c,0x0f,0x23,0xa3,0xea,0xda,0x1a,0x6d,0x54,0x30,0x33,0xc8,0x33,0x0a,0xfb,0x25,0x2a,0x8b,0x9a,0x87,0xd9,0x9d,0x37,0x4c,0x41,0x3b,0xe5,0x4a,0x81,0x92,0x40,0x38,0x18,0x82,0x13,0x54,0xde,0x56,0x11,0x63,0xf3,0x09,0x61,0x3b,0xdd,0x0c,0x71,0xe8,0x4f,0xc2,0x9a,0x77,0x2f,0xeb,0xf1,0x39,0x1c,0x10,0x0e +.byte 0x01,0xaf,0x92,0x34,0x9a,0xb6,0x7b,0x79,0x86,0x0c,0xf1,0x53,0xb6,0x59,0xbd,0x6d,0x79,0x6e,0x37,0x11,0x25,0x67,0x95,0x31,0x4f,0x43,0xdf,0xb7,0x4b,0x80,0x8d,0x07,0x3c,0x49,0x73,0x8a,0x72,0x61,0x02,0x0f,0x2f,0x13,0xed,0x91,0x10,0xf6,0x08,0xf3,0x50,0x4a,0xd4,0x36,0xcb,0x52,0xb3,0x3b,0xe6,0xef,0x85,0xe9,0xe0,0xad,0x0d,0x3d +.byte 0x84,0x07,0x70,0xdf,0x16,0x47,0xeb,0x26,0x19,0x27,0xaf,0x7a,0x9f,0x2f,0x2b,0x6d,0xbb,0x37,0x68,0x8e,0x19,0x46,0x5a,0x65,0x0d,0x0a,0x67,0xd8,0xe2,0xc2,0xcd,0x49,0xf6,0xc2,0x27,0xac,0x12,0xea,0x1f,0x81,0x60,0xac,0x8b,0x5d,0xcc,0x9a,0x5b,0xec,0xc3,0xcb,0x85,0x0d,0xef,0xa6,0xd5,0x33,0xb3,0x67,0x73,0x3f,0xc9,0x90,0x25,0x3e +.byte 0xe6,0x7c,0x41,0x59,0x83,0xf7,0x90,0x4a,0xbf,0x14,0x72,0x11,0xf2,0x3a,0x38,0x58,0x17,0xd8,0x3d,0x00,0xc6,0x42,0xf2,0xbc,0xfd,0x05,0x37,0x6d,0x11,0xb0,0xd7,0xb2,0xb7,0x73,0x69,0x80,0x47,0x30,0x64,0x13,0x8c,0x24,0xb2,0x42,0x12,0x8c,0xc0,0x8a,0x45,0x0b,0x71,0x23,0xeb,0xac,0x65,0xda,0x44,0x13,0x85,0x77,0xdf,0xb8,0x4b,0x69 +.byte 0xd4,0x8e,0x40,0x54,0x24,0xac,0xc8,0x62,0x36,0x51,0x20,0xaa,0xcd,0x5d,0xa5,0x73,0x2c,0x81,0x92,0x99,0x44,0x6b,0x04,0xac,0x8e,0xee,0x96,0x29,0xca,0xdc,0x2f,0xd1,0x13,0x5c,0x9e,0xc2,0x67,0x6a,0xaf,0xf6,0x3e,0xe2,0xa1,0x6d,0xda,0xbe,0x8a,0x55,0x50,0x27,0xee,0x6d,0xb8,0x35,0x5f,0xb4,0xa8,0x76,0xa1,0xe2,0x52,0x87,0xf6,0xfb +.byte 0xe2,0x16,0x1c,0x90,0x78,0xe4,0x17,0xb0,0xd9,0x56,0xf5,0xd3,0xa4,0xb0,0x3f,0xe9,0x01,0xf9,0xd0,0x67,0x2b,0xeb,0x1d,0x73,0x24,0x90,0x36,0x36,0x0d,0xcf,0xfb,0x3f,0xa1,0xa0,0x25,0x3b,0xf1,0x7f,0x9e,0x90,0xcf,0xb6,0xd0,0x83,0x90,0xcd,0x3f,0xff,0x5f,0xa3,0x33,0x95,0xd7,0xbe,0x78,0xfe,0xcc,0x9a,0xb9,0x64,0x88,0xb7,0xd9,0x5e +.byte 0x46,0x2d,0xf0,0xb1,0xa1,0x81,0x2b,0xab,0x80,0xf5,0x4d,0x3b,0xd8,0x53,0x64,0x8f,0xac,0x7a,0x03,0xb3,0x39,0x7a,0x85,0xef,0x61,0xb5,0x2c,0x8e,0xf4,0x27,0x07,0x9b,0x7b,0xc9,0x8b,0x1a,0xe4,0x4f,0xce,0x8b,0x35,0x32,0xac,0xcf,0x47,0xb8,0x2f,0x9e,0xe5,0x11,0x48,0xc1,0x07,0xea,0x0c,0xee,0x06,0xc6,0xa3,0x48,0xb6,0x1a,0xd8,0xb4 +.byte 0xa7,0xae,0x59,0x7d,0x9e,0x4e,0x66,0x7f,0xe9,0x02,0x40,0xdc,0x21,0x5e,0x74,0x2c,0x1d,0x29,0x22,0xca,0x97,0x4f,0xc8,0xc7,0xea,0x69,0x02,0x89,0xd1,0x43,0xff,0x83,0x89,0x58,0x66,0x92,0xbc,0x11,0xf6,0x02,0x8b,0xa8,0x34,0x8d,0xbe,0x3a,0x70,0xc3,0x10,0xe7,0xb5,0xc4,0xda,0xdb,0xc6,0x87,0xee,0xee,0xe0,0x48,0x62,0x80,0x8d,0xfc +.byte 0xaa,0xc7,0xce,0x1a,0xea,0xb9,0x1b,0x30,0x4a,0x48,0x9b,0xf4,0x58,0xff,0x5d,0x15,0xc8,0xf2,0x84,0x44,0xae,0x63,0xe8,0xb1,0xe0,0x2e,0x38,0x8e,0x47,0xf9,0x09,0xec,0xb9,0x94,0x18,0x37,0x68,0xef,0xbd,0xd5,0x67,0x72,0x01,0x9a,0x15,0xb9,0x7c,0x36,0xc0,0x22,0x80,0x12,0xb1,0x4e,0xab,0x3c,0xea,0x81,0xcf,0x70,0xf3,0xde,0x1f,0xd4 +.byte 0x67,0x94,0xfa,0xe1,0xf0,0xb6,0xd6,0x6b,0xc3,0xa2,0xbb,0x59,0x6b,0x9f,0x58,0x26,0x99,0x0c,0xdc,0xcd,0xb8,0xae,0x49,0xf0,0x8f,0xd3,0x0d,0xb7,0x4c,0x22,0xcf,0xb6,0x6c,0xa3,0x19,0x09,0x42,0x59,0x25,0xf8,0xdc,0xf3,0xc2,0x00,0xc3,0xc3,0xd3,0x9e,0x98,0xd3,0xa3,0xd0,0x96,0xfd,0x4f,0x15,0x57,0x5b,0xa7,0x08,0x3a,0x0e,0x3d,0xd2 +.byte 0x7d,0xa1,0xa0,0x94,0xc0,0x76,0x83,0xf6,0xc1,0xe8,0x7e,0xd3,0x97,0xc1,0xbf,0x38,0x74,0x9b,0xfb,0x35,0xeb,0xf7,0x34,0x20,0xea,0xda,0xd3,0xb1,0x2e,0x10,0x16,0x9c,0x09,0x1c,0x67,0x46,0xa2,0x05,0xf9,0x47,0xde,0x35,0x53,0x18,0x58,0xb0,0xbb,0x7a,0x88,0x58,0xc5,0x3e,0x98,0x29,0x43,0x98,0x07,0x76,0xa3,0xe1,0x95,0x92,0x21,0xe9 +.byte 0x06,0x17,0x15,0xe0,0x6b,0xd5,0x5a,0x6d,0x10,0xa6,0x08,0x92,0xa9,0xf5,0xcf,0x57,0x1a,0x28,0x5d,0x14,0x33,0x99,0xf9,0xa0,0xb3,0xeb,0xee,0xd4,0x6e,0x0b,0x5e,0xf7,0xe9,0xe3,0xc6,0x71,0x34,0x55,0xf3,0xde,0xd5,0xc2,0x52,0xc3,0x7b,0x06,0x87,0xef,0x26,0x81,0xc9,0xbd,0xaf,0x12,0x61,0x95,0x2b,0xa4,0x8e,0xe8,0x08,0x9a,0x13,0x48 +.byte 0x2e,0x84,0x98,0xf6,0x95,0x21,0x22,0xe5,0xcf,0x30,0x8d,0xaf,0x70,0x16,0x27,0x0c,0xcd,0x26,0x7f,0xe8,0xa0,0x35,0x0c,0x01,0x0e,0xdd,0x9d,0x2c,0x89,0x41,0x34,0xc4,0xa2,0xaa,0xf6,0x3f,0xca,0x3b,0x86,0xce,0xd7,0x4c,0xe3,0xb5,0x69,0xe9,0x41,0xbe,0x3c,0x9a,0x4c,0x1a,0xb3,0x88,0xea,0x78,0x12,0x4c,0x1b,0x79,0xc7,0xcd,0x32,0x72 +.byte 0xfa,0x3f,0x0b,0x73,0x1b,0xd9,0xec,0x85,0xd4,0x52,0x6c,0x91,0x2d,0xbe,0x76,0x8b,0xfd,0xb6,0x49,0xcf,0x67,0xd1,0x18,0x7b,0xae,0x86,0x47,0x47,0xfd,0xff,0x63,0xf2,0x88,0x1b,0x58,0xd5,0x30,0x69,0xf9,0x9a,0x03,0x52,0xae,0xe5,0xe2,0x55,0xbf,0x35,0x12,0xb0,0x84,0xa9,0xed,0xb6,0x8d,0x5f,0x6c,0xed,0x1a,0x00,0x7a,0xdc,0xf2,0x03 +.byte 0x9e,0xef,0x59,0x27,0x4c,0xf4,0x83,0xa2,0x36,0x3d,0x3d,0x8c,0x75,0x8c,0x37,0x68,0x93,0x0b,0x30,0x48,0xea,0x91,0x14,0x37,0x88,0x87,0x7f,0xe6,0xd8,0xbd,0x04,0x34,0x1e,0xe8,0x2a,0x41,0x48,0x5c,0x66,0xf9,0xc2,0xd1,0x56,0x25,0x29,0x45,0xfa,0x71,0xe1,0x59,0xa8,0x52,0x99,0x0b,0x92,0xe0,0x33,0x52,0x91,0xd6,0x5f,0x0a,0x70,0x83 +.byte 0x4f,0xa3,0x47,0x6e,0xfa,0x85,0x5e,0xb1,0x0a,0x1d,0xe7,0x35,0xc9,0x88,0x27,0xc9,0x8c,0x3e,0x7f,0x6d,0x34,0x1e,0x11,0x7b,0xcd,0xe7,0x09,0x82,0x3a,0xa1,0x46,0xc6,0x15,0xde,0x0b,0xde,0x35,0x71,0x92,0x5c,0x72,0x50,0x08,0x6b,0x62,0xa7,0xec,0xa2,0xca,0x53,0x6e,0x47,0x7d,0x50,0x32,0xa7,0x32,0x7b,0x49,0x0c,0x97,0xcc,0x98,0x8d +.byte 0xc3,0x29,0x72,0x1e,0x85,0x47,0x1b,0xa7,0x89,0x19,0x85,0xaa,0x3f,0x11,0x6a,0xea,0x61,0x84,0x07,0x9a,0xc8,0xb3,0x25,0xfe,0x72,0xca,0x83,0xa9,0xf0,0x9e,0x01,0xe4,0x9a,0xd6,0x1b,0x87,0xfc,0xd4,0x3a,0x04,0x34,0x8c,0x0b,0x46,0xbc,0xe9,0x3c,0x3f,0xd9,0x93,0xf1,0xca,0x41,0x0b,0xdb,0x28,0xe8,0x28,0x1b,0x84,0x36,0x16,0x84,0x22 +.byte 0x1e,0x1e,0x2b,0xb0,0xfb,0xa6,0xcc,0x95,0x31,0x46,0xd7,0xca,0xc2,0x8b,0xa3,0x3a,0xa5,0xb0,0xaf,0x52,0x66,0x53,0x39,0x5f,0x58,0xb5,0xdf,0x01,0x52,0x07,0xb4,0x82,0xdc,0xb7,0xf9,0x88,0xd8,0x77,0xf8,0x12,0x9d,0xe8,0x21,0xd7,0x0b,0x0f,0x57,0x90,0x40,0xb2,0x64,0x3f,0xce,0xa0,0xa3,0xfa,0x12,0x16,0xec,0x6d,0xcc,0xc7,0x2a,0x43 +.byte 0xc9,0xe7,0xb7,0x90,0x52,0x35,0x22,0x6d,0x46,0x99,0x1e,0x44,0x12,0xd6,0x0f,0xaf,0x5c,0x16,0xd3,0x7a,0xd6,0xb4,0xfe,0x20,0x26,0x11,0xe1,0xc6,0xa5,0x10,0xfd,0x9f,0x0c,0x47,0xae,0x32,0x08,0x15,0x8f,0xef,0xef,0x4c,0x83,0xbc,0xbf,0x6a,0xe5,0xf5,0x69,0x11,0x4d,0x7d,0x47,0x1f,0x10,0x58,0x61,0xb0,0x0d,0x98,0x67,0xc0,0x99,0x3a +.byte 0x2d,0x9a,0x5b,0xd5,0x37,0xe7,0xe5,0xd4,0x56,0x96,0x69,0xf8,0x53,0x7e,0x24,0x70,0x51,0x01,0x83,0x8d,0x49,0x01,0x32,0x7d,0x4f,0x41,0x92,0x54,0x9c,0x15,0xf1,0x3c,0x05,0x32,0x28,0x0d,0x0f,0x67,0xbe,0x65,0xfa,0x1b,0xa3,0xd0,0x28,0x18,0xb8,0x84,0xfe,0x6a,0x30,0xea,0xb9,0x00,0xb1,0x10,0x7c,0xa2,0x94,0x4f,0x86,0x18,0xdd,0xb4 +.byte 0x80,0x18,0x48,0x18,0xe1,0x56,0x70,0x7d,0x5c,0x3b,0xe5,0xd7,0x88,0x66,0x57,0xe3,0xe1,0x04,0x4c,0x68,0x5b,0x64,0x4d,0x0d,0x30,0x76,0x26,0xaa,0x84,0x0e,0xe0,0xed,0x53,0x62,0x20,0x33,0xaf,0x45,0x42,0x40,0x47,0x01,0x15,0xc9,0x0b,0x27,0x7c,0x68,0x4d,0x55,0xc4,0x6a,0x5f,0x96,0x9f,0x96,0x67,0xae,0x13,0x1c,0x84,0x52,0x33,0x41 +.byte 0x80,0xfc,0xae,0xb6,0xb1,0x8c,0xc3,0x19,0x80,0xa8,0x5f,0xe5,0x8c,0xd0,0xa8,0xb4,0x58,0xc9,0x48,0x29,0xab,0x11,0xd1,0x09,0xc6,0x20,0x98,0x4c,0xdb,0xa4,0x83,0x5c,0x26,0x51,0xce,0x80,0xe5,0xc4,0x9b,0xae,0xba,0x8e,0x99,0x4e,0xa4,0xff,0xdc,0x99,0x4c,0x02,0xa0,0x42,0x80,0xca,0xd7,0xea,0x6a,0x58,0x31,0xdb,0x16,0xd8,0x4d,0xab +.byte 0x03,0x2e,0x3a,0xdc,0xe9,0x07,0xfb,0xfb,0x5b,0x57,0x67,0x2a,0x7b,0xdc,0xc1,0x66,0xd1,0x31,0x3a,0x03,0x87,0xd8,0x66,0xda,0xa1,0x24,0x00,0x26,0xc0,0x26,0x78,0xf8,0x59,0x13,0x3f,0x34,0x08,0x35,0x45,0xbd,0x45,0x4f,0x89,0x65,0x97,0xdb,0xe6,0x1e,0x09,0x6e,0x23,0x2a,0xc4,0xf5,0x6a,0x74,0x28,0xb0,0xae,0x8c,0xfb,0x49,0x35,0x99 +.byte 0x06,0x30,0xc6,0xb2,0x8c,0xcd,0x8b,0x41,0xea,0xf2,0x04,0x18,0x29,0x25,0x1b,0x32,0x42,0x45,0xb5,0x92,0x42,0xb4,0x33,0xd2,0x90,0x31,0x08,0xcd,0x35,0x5d,0x50,0x64,0xa8,0x93,0xfd,0xa5,0xfd,0x32,0xbd,0xe8,0x13,0x1c,0x48,0x5c,0x14,0x70,0x03,0x92,0x0f,0x12,0x86,0xf6,0x6c,0xcd,0xc6,0xec,0xbf,0x8e,0x85,0x28,0x1d,0x1c,0x63,0x3f +.byte 0x81,0x93,0xd4,0x80,0x3c,0x29,0x0b,0x63,0xfe,0x87,0xa6,0x24,0xd6,0x3e,0x62,0xb6,0xd9,0xb0,0x58,0xf1,0x41,0x36,0xc7,0x47,0x8b,0xfd,0x4b,0x91,0x4e,0x5d,0x41,0x44,0xb0,0x65,0x3d,0x9e,0x3b,0x70,0x01,0xcc,0x7d,0x77,0xf0,0x23,0xd9,0xca,0x5f,0xda,0xa1,0x8c,0x71,0x11,0x91,0x7d,0x36,0xf5,0xc9,0xcd,0xf4,0x34,0x5f,0x69,0x57,0xd6 +.byte 0x33,0x4c,0xb2,0xe1,0x38,0x5f,0x86,0x3c,0x57,0x7b,0x2e,0x99,0x05,0x80,0x63,0xc4,0x77,0x69,0x06,0xc2,0x47,0x44,0xca,0x17,0x27,0x1d,0x55,0x34,0x02,0xd0,0x89,0x3a,0x3b,0x79,0xf0,0x86,0xd7,0x6b,0x01,0x9c,0xc7,0xa8,0xde,0xdb,0xdf,0x49,0xd1,0xb9,0x11,0xaf,0x7e,0x22,0x8b,0x5d,0xb5,0x0b,0xdc,0xd0,0x36,0xe6,0x9d,0x85,0x41,0x4a +.byte 0x35,0xf0,0xe1,0xcd,0xce,0x7b,0xd1,0xd6,0x00,0xdd,0xb6,0xe4,0x06,0x3e,0x66,0xe9,0x2b,0xa8,0x44,0x0d,0x18,0xd4,0xbc,0xfb,0x3c,0x58,0x6c,0x11,0xe9,0xdc,0x19,0x14,0x08,0x27,0x23,0x0c,0xd0,0xf9,0x97,0xaf,0x97,0x07,0x02,0x1a,0x5e,0xcd,0xae,0xd2,0x80,0x96,0x16,0x49,0xc3,0xfc,0xda,0x25,0x12,0x20,0xe1,0xc0,0x68,0x90,0x4b,0x30 +.byte 0x2d,0x06,0x53,0x2c,0x57,0x63,0x4a,0x7a,0xf6,0xc8,0x5a,0xb7,0x58,0x8c,0x13,0xfe,0x43,0xb3,0xf8,0x25,0x3e,0x7a,0x25,0x3e,0x1d,0x7f,0x8f,0x5e,0xdb,0xad,0x99,0x83,0xfc,0xd9,0x0a,0xdf,0xb5,0x19,0x1c,0x2c,0xf6,0xe8,0x06,0xbe,0xc0,0x9f,0x7e,0x0f,0x95,0xaa,0xac,0x09,0xdc,0x8c,0x37,0xcf,0x35,0x35,0x95,0x62,0xf1,0xff,0x96,0x1c +.byte 0x77,0xe9,0x53,0x7e,0x12,0x56,0x2d,0x4e,0x3e,0x1f,0xdb,0x1d,0x71,0x0e,0xdc,0xf7,0x65,0xb1,0x78,0x7f,0xe4,0xba,0xbf,0x7f,0x6c,0xcb,0x73,0xd3,0xe8,0xd9,0xce,0xfb,0xdb,0x48,0x87,0xe0,0x10,0x00,0x74,0xcb,0xdf,0x32,0xa8,0xdd,0x83,0x24,0x49,0xda,0x86,0x38,0x1c,0x2c,0x93,0x09,0x8a,0x26,0xbb,0x34,0x21,0x1d,0xac,0xb5,0x16,0xae +.byte 0xd8,0xcb,0x94,0x04,0xd6,0xbc,0xde,0x9c,0x70,0x28,0xa5,0x1a,0x15,0x5e,0x35,0xe4,0xe6,0x53,0xea,0x9c,0x3b,0x0c,0x36,0x3b,0x80,0x13,0x28,0x1d,0xc7,0x1a,0xa8,0x8e,0x9e,0x09,0xce,0x5d,0x50,0xd3,0xc7,0x6f,0x3a,0x75,0xa5,0x84,0x1c,0x08,0x66,0xe6,0x05,0xda,0x8b,0xf1,0x4b,0x5c,0xe2,0xc7,0x0f,0xa1,0xf1,0x47,0x02,0xf4,0xa7,0x24 +.byte 0xf3,0x0e,0x2c,0xa9,0xae,0x67,0xdf,0xce,0x30,0x88,0x4a,0x9a,0x39,0x4a,0x97,0x64,0xa8,0x30,0x53,0xf9,0x47,0x66,0x5c,0x19,0x1c,0xfb,0x2f,0x05,0x89,0x4f,0xfe,0x25,0xe7,0xed,0xed,0x17,0x5a,0x86,0xeb,0x25,0xee,0xe4,0x09,0x88,0x05,0x49,0x20,0x54,0x4b,0x7f,0x3e,0xb5,0x23,0x85,0xa9,0x66,0x61,0x73,0xe0,0x61,0x94,0xc6,0xe5,0x29 +.byte 0xb4,0xe1,0x6f,0xa4,0x4d,0x50,0x56,0x2e,0x30,0x75,0x51,0x5d,0xdd,0xa2,0x68,0x56,0x67,0xd8,0xec,0x2d,0x2a,0xfd,0x49,0xc5,0xbc,0xae,0x2f,0x6b,0xc7,0x8d,0x2e,0xca,0x91,0x35,0xe8,0xea,0x65,0xe9,0x9c,0x65,0xaf,0x8e,0xd5,0x16,0xdf,0xac,0x44,0x1e,0xb6,0x16,0xf0,0xb6,0x33,0x6a,0xe6,0x96,0x0f,0x85,0x2e,0xa1,0xaa,0x6a,0xe0,0x12 +.byte 0x0c,0xaa,0x7d,0xae,0xf7,0xe3,0xb2,0x4c,0x3c,0x10,0xc6,0x87,0x8e,0x87,0xfb,0xac,0xf7,0xd7,0x7a,0x2e,0x9a,0x7a,0xa7,0x4f,0xf0,0x75,0xce,0xbd,0xc3,0xe6,0x79,0x1d,0x56,0xab,0xff,0x56,0xfe,0x69,0xbd,0xcf,0x15,0x27,0x64,0x3c,0x83,0x1c,0x08,0xb0,0x91,0x60,0x67,0xe7,0x27,0x44,0x49,0x22,0x78,0xd5,0x1a,0xc8,0x3b,0x35,0x9b,0xa5 +.byte 0x53,0xce,0xde,0x04,0xd2,0x3e,0x67,0x48,0xaf,0x54,0xdf,0x9c,0xf7,0xb9,0xd4,0xe3,0xb6,0x85,0x02,0x68,0x21,0x10,0xdb,0xb5,0xca,0x11,0xa2,0x7c,0xcf,0x13,0x41,0x7a,0xfd,0xe9,0x0a,0x3c,0x53,0xd6,0x07,0xf2,0xdd,0xe2,0x7c,0x16,0xf0,0x44,0x3f,0x5d,0x34,0x09,0x7c,0x7b,0x21,0x8c,0x8e,0xdb,0x0d,0xc5,0x73,0xce,0x61,0xce,0x17,0x46 +.byte 0x6c,0x14,0x07,0xb5,0x70,0x80,0xf0,0x29,0x7c,0x13,0x41,0x2d,0x8e,0xdc,0x53,0xc2,0xbf,0xf0,0xc2,0xfb,0x59,0xa0,0x66,0x5f,0x25,0xda,0x17,0x5f,0xac,0xab,0x75,0x1b,0xc7,0x61,0x87,0x53,0x80,0x2e,0x11,0x4e,0x04,0x48,0xf9,0xee,0x54,0xe6,0x69,0x69,0x57,0xc2,0x46,0xd8,0xb3,0x2e,0x7b,0xc8,0xa5,0xd0,0xb2,0x5e,0xd4,0x6b,0x9b,0x1a +.byte 0xd6,0x79,0x9d,0x99,0xa6,0xbb,0x4d,0xca,0x74,0x2c,0x3d,0xd4,0x86,0xd0,0x64,0xd4,0x81,0x49,0x76,0x42,0xb8,0xf9,0x2c,0x52,0xe7,0x77,0x37,0x31,0xbb,0x2e,0x5b,0x38,0x81,0x01,0x2c,0x27,0x28,0xcb,0x0c,0xba,0xfa,0x8a,0x9a,0x45,0x51,0xa2,0xde,0xf2,0x7b,0xe6,0x65,0xec,0x5b,0x2d,0xe8,0x55,0x8e,0xb4,0x7f,0xf8,0x1a,0x66,0x3a,0x5f +.byte 0x06,0x10,0x15,0xb2,0x3d,0xb2,0x36,0x6e,0x9f,0x8e,0xe2,0x4c,0x78,0xe5,0x3a,0xac,0x21,0x16,0x20,0x30,0x0f,0x51,0x56,0xcb,0x53,0xca,0x70,0x3c,0xa2,0x3f,0x37,0x06,0x6c,0x70,0xec,0xf4,0x3d,0x7c,0x77,0xa0,0x61,0xc7,0x0e,0x26,0x9f,0x25,0xc0,0xf2,0x28,0xdb,0x57,0xbe,0xe6,0x4e,0x9c,0x4d,0x2e,0x48,0x50,0xc2,0xd4,0xfd,0x5e,0x52 +.byte 0x3f,0xd0,0x82,0xd1,0xd4,0x53,0xad,0x42,0x38,0xb1,0x02,0xd6,0xa0,0x34,0x7a,0xb4,0xb3,0xdd,0x91,0x12,0xf4,0x91,0xc9,0xa2,0x35,0x2d,0xdc,0x97,0xa1,0xdb,0x82,0xe7,0x92,0x99,0x66,0x13,0x99,0x20,0x95,0x1f,0x47,0x64,0x80,0x5e,0x5f,0x74,0x6b,0xa6,0xca,0x47,0x0b,0x24,0x72,0xa6,0x27,0xe7,0x56,0x61,0xa7,0x8e,0x62,0xa4,0xff,0x8e +.byte 0x29,0xf8,0x09,0xa4,0xbb,0x70,0x97,0x8a,0x39,0xe8,0x65,0xc8,0x52,0x23,0x9d,0xbf,0x10,0xe8,0x7d,0xbc,0x3c,0xc4,0x8b,0x1e,0x5c,0x75,0x94,0x24,0x62,0x3f,0x5b,0x2b,0x9a,0x08,0x00,0x78,0xfd,0x28,0x44,0x12,0x62,0x2a,0x6f,0x47,0x9d,0x57,0xb0,0x4e,0x3b,0xcd,0x01,0x7d,0x6e,0x62,0xe3,0x99,0x9c,0xae,0x6e,0xe2,0x70,0x7a,0x32,0xb4 +.byte 0xc1,0x19,0xb1,0x03,0x6b,0x92,0x89,0x4f,0x37,0xaf,0x36,0xee,0x5e,0x03,0x31,0x8c,0x41,0x27,0x17,0x21,0xdf,0xe4,0x34,0x97,0x8d,0xe7,0x41,0x47,0xf2,0x80,0x51,0x41,0x01,0xe4,0x0c,0x1a,0x09,0xfc,0x07,0xc3,0x94,0x07,0x6f,0xa7,0x6c,0xff,0x32,0x21,0xa5,0x01,0x8c,0xa2,0x88,0x3c,0xc8,0x57,0xe8,0x68,0x19,0x4a,0x46,0x7a,0x36,0xd2 +.byte 0x75,0x8e,0xc5,0xa4,0x84,0x91,0x13,0x7f,0xdd,0x2b,0x3c,0x2e,0xc4,0x92,0x29,0xb3,0x60,0x74,0xc8,0x81,0x58,0x0e,0xad,0x6a,0x9d,0xaa,0x81,0x49,0x26,0x0f,0xd4,0x2a,0x39,0xdd,0x4d,0x2b,0x13,0xdb,0x2e,0x72,0xe6,0x45,0x99,0xeb,0xe6,0xe5,0xd5,0x76,0xd4,0x19,0xd8,0xd7,0xa9,0x1f,0xce,0x7f,0xc4,0x1c,0x9e,0x6f,0x68,0x32,0xb1,0x26 +.byte 0xc4,0xb6,0x4e,0x9f,0xbf,0xdc,0xe0,0xde,0x54,0x9b,0xe0,0x04,0x03,0xae,0xc9,0xce,0x3a,0xcb,0x93,0xad,0xcc,0x1f,0x46,0xf6,0xbb,0xff,0x40,0x52,0x9c,0x64,0x97,0x5a,0x6f,0x8d,0x28,0x45,0x1c,0xf6,0x8b,0xcb,0xb9,0x38,0xb8,0x00,0xee,0xec,0xac,0x68,0x3f,0x50,0xcb,0x36,0x6e,0x97,0xfd,0xa5,0x1d,0x29,0x6e,0xfa,0x9f,0x4b,0x83,0xcd +.byte 0x0d,0x34,0xf3,0x1e,0x3f,0x0f,0x2e,0x89,0xeb,0xf7,0x8e,0x5f,0xe0,0x3b,0x39,0xd2,0xe8,0x87,0xe3,0xe7,0xe9,0xd0,0x1b,0x32,0x03,0x6b,0x3c,0x75,0x7d,0xe2,0x5c,0x3c,0x42,0xb4,0x46,0x69,0x0b,0xaf,0x0a,0x5d,0x1a,0x83,0x0b,0x0e,0x3c,0x5a,0x36,0xbd,0x5d,0xb6,0xad,0x4c,0xdd,0xf1,0x8d,0xbf,0x2b,0x70,0x8e,0xbc,0x92,0x95,0x1b,0x0f +.byte 0xed,0x3f,0xae,0x9e,0xa2,0x5a,0x50,0xe4,0xda,0xde,0x04,0x51,0x31,0xac,0xa4,0x0b,0x94,0xcc,0x14,0x87,0x59,0xa8,0x30,0x09,0xe6,0x46,0xb9,0x07,0x3e,0x1a,0xbf,0x5a,0x23,0x32,0xfb,0x60,0x63,0x24,0x25,0x12,0xf6,0x3e,0x2d,0xd0,0x8b,0x88,0x9b,0xe9,0x2d,0xab,0xf5,0xaf,0xba,0xbc,0xfe,0xab,0xb2,0x61,0x7a,0x7c,0xbb,0x28,0x6b,0x86 +.byte 0xe5,0xa2,0x9c,0x2c,0x5a,0x23,0x12,0x11,0xe5,0x72,0xe8,0x7b,0x6b,0x40,0xf1,0x91,0x37,0x3b,0x47,0x75,0x65,0xac,0x4d,0x22,0x59,0x75,0x13,0xb0,0x73,0xff,0x59,0xd1,0x1b,0xcc,0x05,0x1f,0xf2,0xc8,0x50,0x83,0xf1,0x28,0x38,0x0b,0xc3,0xa0,0x3b,0xe3,0x86,0xbb,0x9c,0x7e,0xc1,0xe9,0xcc,0xd9,0xb8,0x2b,0x05,0xf3,0x6f,0xc7,0x9d,0xaf +.byte 0x7b,0xb7,0x38,0x41,0xa3,0x50,0x8f,0x92,0xe0,0x63,0x35,0xb3,0x95,0x9f,0x80,0xf8,0x75,0xbb,0xf3,0x2b,0x0e,0xaf,0x32,0x6e,0xff,0xeb,0x79,0xca,0xbf,0x1c,0x4f,0x6c,0x9c,0x06,0xb2,0xeb,0x99,0x57,0x1f,0xf6,0x64,0x0b,0x81,0x57,0xba,0xf4,0x32,0x1e,0x77,0x37,0x55,0xb7,0xbc,0xba,0x70,0x0b,0x0d,0xdd,0x95,0x41,0xb5,0x17,0x5b,0x14 +.byte 0x10,0x9d,0x14,0x52,0x83,0x65,0x0a,0xf4,0x55,0xca,0xf8,0xbe,0xa6,0x3a,0xa0,0x6e,0xcc,0x83,0x84,0x65,0xb4,0x1c,0x7e,0x40,0xdd,0x32,0x36,0x5a,0x23,0x17,0x7d,0xb5,0xb9,0x38,0x48,0x5c,0x6f,0x23,0x54,0x0e,0x93,0x74,0x27,0x0f,0xfd,0x58,0xc1,0x97,0x26,0x78,0x9a,0xd3,0x85,0xc5,0xb2,0xb3,0x44,0xb7,0x36,0x85,0x69,0xde,0x3b,0xa1 +.byte 0x2b,0x11,0xef,0x75,0xfc,0xaa,0x92,0xf1,0xf1,0x72,0xa0,0x5f,0x33,0xf6,0x0b,0x72,0xdb,0xce,0x6c,0x2a,0x15,0x76,0x40,0xd4,0x85,0xff,0x96,0xe1,0x48,0xe1,0x27,0x8f,0x74,0xf3,0xfa,0xa1,0xb7,0x2a,0xb6,0x41,0x90,0x92,0x7e,0xfa,0xfc,0xad,0xa3,0x94,0x91,0x77,0xf1,0x8f,0xee,0xa2,0x64,0x47,0x01,0xb3,0x01,0x99,0x05,0xe7,0x31,0x4a +.byte 0xe8,0xd2,0x65,0x40,0x21,0xc4,0x83,0x8e,0xc9,0x89,0xda,0x16,0x7b,0xe0,0xcb,0xc0,0xc0,0x3d,0x37,0x18,0x66,0xe9,0x70,0x86,0x0b,0x6c,0xe8,0x65,0x44,0xce,0x3a,0xcd,0x84,0x1e,0xce,0x0e,0xe3,0xf9,0x77,0x12,0xfb,0xe6,0x92,0x8b,0x0d,0x7e,0x15,0x7a,0x34,0x94,0x2a,0xa7,0xc5,0x35,0xa4,0xfc,0xbe,0xa3,0x13,0x70,0xe4,0x6b,0x2f,0x71 +.byte 0x31,0xef,0xdb,0x79,0x44,0xf2,0x77,0xc7,0xc9,0x0d,0x1a,0x7b,0xff,0x34,0xf8,0xc9,0xe8,0xc9,0xc2,0xe0,0x0c,0x9e,0xd6,0xb4,0x7a,0xdb,0x1f,0x65,0xb8,0xd4,0x92,0xbf,0x7f,0x06,0x44,0xe3,0xb4,0xd8,0x14,0xe3,0x9b,0x49,0x81,0x12,0xec,0x7d,0x01,0xe2,0x50,0x2c,0x0e,0xfd,0x4b,0x84,0x3b,0x4d,0x89,0x1d,0x2e,0x4b,0xe9,0xda,0xa5,0x3f +.byte 0x19,0xc2,0x53,0x36,0x5d,0xd8,0xdc,0x6e,0xc3,0x48,0x8f,0x09,0xd5,0x95,0x4b,0x0c,0x7c,0x00,0x15,0x33,0x8e,0x1d,0x0c,0xdf,0x32,0x3b,0x93,0x1f,0xf5,0x49,0x4f,0xfd,0x8b,0x64,0xe7,0x96,0xaf,0x2f,0xc8,0xea,0xab,0x91,0x53,0x29,0xe3,0x31,0x0a,0x1c,0x6e,0xe0,0xbb,0x81,0x11,0x83,0xe0,0x07,0xfb,0x29,0x11,0x0f,0x0d,0x85,0xd4,0x61 +.byte 0x3c,0x75,0xbb,0x8a,0x23,0xb6,0xa0,0x7f,0xa4,0xbb,0x11,0xd4,0x75,0xde,0x27,0xe5,0xeb,0x11,0x5d,0x02,0xfe,0x5c,0x62,0x60,0x0f,0x6f,0x45,0x9b,0xfb,0xb7,0x32,0xa8,0x1c,0xd6,0xff,0x43,0x7b,0x53,0xee,0xa4,0x1f,0xf2,0xba,0xb6,0xb7,0xb7,0x39,0x18,0x85,0x79,0x77,0x27,0x30,0x26,0xe4,0xef,0xd1,0x39,0xc9,0xa2,0x0d,0x50,0xd7,0xef +.byte 0x9e,0xd8,0x8e,0xd2,0x74,0x1a,0x3f,0x99,0x24,0xf4,0x8b,0x4d,0x02,0x63,0x18,0x3a,0xaf,0x26,0xef,0xfc,0x1d,0xfe,0x46,0xc1,0x55,0xd7,0x92,0x65,0x2f,0xe7,0x4f,0x47,0xa8,0x2f,0x5d,0x47,0x67,0xeb,0x62,0x1d,0x69,0xa6,0x0e,0x51,0x1d,0x2c,0xed,0x6e,0x94,0xe9,0x48,0x4c,0x22,0xc2,0x93,0x79,0x6f,0x1b,0xc2,0x93,0x61,0x3d,0x8b,0xba +.byte 0xcb,0xe9,0x4a,0x88,0x5e,0x19,0x50,0x14,0xfe,0xda,0x3f,0x4d,0x47,0x54,0xfc,0x1c,0x09,0x77,0x37,0x30,0xfe,0x75,0x9f,0xdd,0xa4,0x74,0x04,0x04,0x88,0xe0,0xac,0x93,0x64,0x6f,0xbf,0x50,0xd8,0xf0,0xf7,0xa0,0xfa,0x98,0x49,0xfa,0xf7,0x6e,0xcf,0xa2,0xbf,0xb6,0x07,0x15,0x0e,0x4e,0x21,0x74,0x0a,0xa6,0xa3,0x67,0xce,0xf9,0x3b,0xd6 +.byte 0x4c,0xc8,0x43,0xe3,0x3b,0x3b,0x6a,0x86,0x62,0x3f,0x5a,0xf3,0x3f,0xf9,0xeb,0xbf,0xa3,0x2a,0x83,0x8a,0x70,0x8f,0x01,0x65,0x17,0x9a,0xa6,0x26,0x3b,0x09,0x06,0x22,0x19,0xed,0xd7,0x25,0x4b,0xd2,0x9a,0x30,0xfe,0x1c,0x82,0x68,0x16,0x04,0x0e,0x04,0x8f,0xc6,0x92,0xbe,0xe4,0x43,0x98,0x1d,0x3b,0x10,0x15,0x5b,0xef,0x4e,0x60,0x5e +.byte 0x6b,0xc9,0xde,0xb8,0x47,0x02,0x86,0x45,0x39,0x7a,0x1a,0xef,0x67,0x28,0xc5,0x40,0x73,0x2a,0xa7,0x12,0x9d,0x58,0x3a,0x34,0xc2,0xda,0x34,0xb0,0x48,0xd9,0x34,0xcd,0x18,0xe9,0x76,0x41,0x78,0x8f,0xe5,0xe8,0x3d,0xb2,0x01,0x3b,0x84,0xd1,0xca,0x5e,0x26,0x1d,0x8c,0xea,0xe1,0x46,0xa3,0xf9,0x11,0xac,0x0d,0x98,0x9f,0xd3,0x46,0x79 +.byte 0xff,0xad,0x99,0x32,0x63,0x96,0xbc,0x57,0x39,0x16,0xce,0x06,0x7e,0x63,0x78,0x7b,0x86,0x92,0x1a,0xe1,0x45,0xc0,0x73,0xe1,0xec,0xfc,0x88,0x8f,0xf8,0x36,0x0f,0x54,0x76,0x02,0x98,0x49,0x40,0xb9,0xef,0xd8,0x13,0x68,0xf5,0x1d,0x0a,0x98,0x65,0x21,0xc5,0x1a,0x22,0x4e,0x8e,0xad,0xa9,0x52,0x57,0xc4,0xc6,0xa8,0x48,0x01,0x7a,0x78 +.byte 0xc9,0xfc,0xdd,0xf3,0xc3,0x83,0xc0,0x06,0xb5,0x56,0x84,0xe2,0x0c,0x6b,0x80,0xd9,0x59,0xa1,0x3d,0xe3,0x56,0xf0,0xe3,0x3f,0x93,0x61,0xf7,0x8c,0x6b,0x40,0x65,0x6e,0x01,0xc2,0xa1,0xc1,0xb8,0x9b,0x15,0x6c,0xa1,0x18,0x4a,0x6c,0x8b,0x18,0x2d,0x8e,0x71,0x7a,0xa1,0x26,0xc1,0x4b,0xac,0x0c,0xca,0x08,0x33,0xef,0x35,0x33,0x63,0xeb +.byte 0x57,0x6e,0x7e,0x36,0xe0,0x31,0xad,0x10,0x76,0xb7,0x45,0xd9,0x3a,0x92,0x66,0x69,0x13,0x61,0x59,0x87,0xfd,0x6b,0xf1,0x46,0x0a,0x7a,0x3f,0x29,0x88,0x5b,0x7d,0xef,0x07,0x02,0xa8,0xa1,0xdc,0xd4,0x0e,0x77,0x8f,0x68,0x32,0xbd,0x8e,0xd6,0x0b,0xe4,0xd1,0x75,0xc1,0xb0,0x74,0x6c,0x0e,0xc3,0x46,0x79,0x36,0x3b,0x5f,0x0e,0xa0,0xad +.byte 0x28,0x8c,0xcb,0x01,0x8e,0x58,0x14,0x09,0xf1,0xd4,0x3b,0x2e,0xdc,0xbf,0x37,0x95,0x26,0xda,0xb6,0xcf,0xc8,0xa1,0xd4,0xec,0x72,0xf3,0x44,0xf5,0x4e,0x27,0x9b,0x2e,0x7c,0xfa,0x37,0x16,0x1d,0x7f,0x90,0x86,0xae,0x96,0x3b,0xe1,0xda,0xf7,0xc4,0x54,0x0b,0x51,0x7e,0x83,0xbe,0xed,0xd6,0x5f,0xd2,0x6d,0xbb,0xd3,0xc6,0x53,0x95,0x65 +.byte 0x3d,0x19,0xc2,0xc5,0xdf,0x47,0x00,0x2c,0x4b,0x2d,0xec,0x32,0xd5,0x28,0xb5,0x30,0xe0,0x79,0x15,0x2e,0xab,0x97,0xa8,0xcf,0xc5,0x40,0x98,0x30,0x22,0x9f,0xbc,0xdb,0x65,0x06,0xfc,0x58,0xe5,0x55,0x5b,0xe2,0xf8,0x6e,0xc6,0xfc,0xec,0x6c,0x14,0xd2,0xe3,0x9a,0x71,0x8a,0x61,0xea,0x39,0xc6,0x77,0x94,0xdf,0x7b,0x99,0x71,0xdd,0x18 +.byte 0xc6,0x03,0x2d,0x49,0xf6,0xc3,0xe8,0x2b,0x7e,0x3f,0x28,0xfc,0xc8,0xa1,0xb0,0x15,0x31,0x7e,0x83,0xb8,0x14,0x34,0x0e,0x7f,0xde,0x74,0x7b,0xbf,0xb7,0x8e,0xd9,0x31,0x90,0x16,0xb6,0x57,0x14,0x4a,0xc6,0x67,0x3d,0xb9,0x46,0x92,0xf2,0xf9,0x94,0x36,0x2b,0xd6,0x1f,0x84,0xa5,0x8c,0x0f,0xd9,0x8c,0x5f,0x97,0x7a,0x7b,0xff,0xc9,0xf5 +.byte 0x5e,0x13,0x5f,0x19,0x58,0xba,0xa6,0xe8,0x29,0xf4,0xb8,0x7e,0x98,0xb7,0xef,0x1b,0x00,0xe8,0x90,0x8f,0x86,0x4c,0xe0,0x51,0x13,0x8b,0xa1,0x37,0x40,0x38,0x51,0x2f,0x5a,0x9b,0x63,0x8f,0xce,0x9a,0x97,0x07,0x0d,0x8e,0xce,0xb1,0x66,0x89,0x78,0xca,0xa6,0x0c,0x20,0xc4,0xf1,0xe3,0xab,0xe2,0x1c,0x83,0x2b,0x46,0x97,0xe8,0x8f,0x94 +.byte 0xb4,0x71,0x40,0xde,0xa1,0x05,0x4b,0xed,0xbf,0x0c,0x46,0xe1,0x25,0xf1,0xd0,0x5a,0xdb,0x9c,0x2a,0x09,0x03,0x80,0x24,0xc1,0x22,0x02,0xa5,0xde,0xf6,0x4c,0xbc,0x93,0x37,0xa9,0x28,0xb3,0x92,0x19,0xa8,0x3f,0x71,0x90,0x62,0x78,0xaa,0x9a,0x0c,0xab,0x50,0xaf,0x89,0x2b,0xf1,0xf4,0x12,0xbd,0xc9,0xd5,0xee,0x64,0x8b,0x48,0x21,0xd6 +.byte 0xa1,0xa1,0xf2,0x68,0x4a,0xf8,0x06,0x3e,0x20,0x31,0x66,0xb7,0x2f,0x64,0x01,0x5a,0x46,0x14,0x85,0xfb,0xde,0x04,0xc3,0xe4,0xd6,0x25,0x14,0xa0,0xbe,0x4d,0x39,0xd8,0xe0,0x9b,0xb7,0x6b,0x00,0xe6,0x46,0xfb,0xcc,0xa8,0xad,0x67,0x12,0x2c,0x53,0x2c,0xb6,0x9f,0x6e,0xfe,0xbc,0xcc,0x2c,0xa8,0x09,0x17,0x00,0x8e,0xf1,0xf4,0x3e,0xa9 +.byte 0x92,0x4d,0x83,0xe6,0x3c,0xf0,0xd3,0x1c,0xaf,0x84,0x2c,0x59,0x7e,0xda,0x1e,0xfd,0x7d,0xf3,0xef,0x93,0x05,0x03,0xb0,0x76,0x69,0xb5,0x51,0xa8,0x65,0x8f,0x8a,0xf8,0x55,0x92,0x08,0xfe,0xbf,0xc1,0x95,0x98,0x58,0xb1,0xd3,0xb6,0x78,0x4f,0x2f,0x25,0xcb,0x9d,0x32,0x4f,0xa6,0xcc,0xf8,0x36,0xff,0x72,0xb3,0x93,0x3d,0xd8,0x0b,0xe6 +.byte 0xc6,0xf6,0xed,0xcc,0x2a,0xa5,0x44,0x6e,0xe2,0x2d,0x6e,0x02,0xb4,0x7c,0x24,0x7f,0x57,0x02,0x84,0x61,0x8e,0xbd,0x32,0x4e,0x41,0x92,0x01,0x1b,0x8b,0x1d,0xd1,0x1e,0x31,0xc1,0x4c,0x5b,0x0c,0xa7,0x48,0x52,0x67,0xc2,0xd9,0xdc,0x86,0x9d,0xbd,0x6c,0x19,0x95,0x00,0xf0,0xd4,0x47,0xaf,0xfe,0x5d,0xa5,0x81,0xbd,0x1b,0x42,0x62,0xce +.byte 0x18,0x1b,0xa3,0x6f,0xf5,0x0b,0xb7,0x6a,0x3d,0xe3,0xcc,0x41,0x27,0xcd,0x49,0x4b,0xe5,0x2b,0xc4,0x28,0xfa,0xbe,0xd5,0x7e,0xb7,0xac,0xab,0x64,0x3b,0xe3,0x87,0xb1,0x33,0x8b,0xa8,0xe5,0x75,0xce,0x61,0x57,0x89,0xad,0x5f,0x61,0xdd,0x7c,0x06,0x2a,0x3f,0x50,0xb8,0x7e,0xd2,0xfb,0x32,0x83,0x07,0xd4,0xc5,0x3f,0xad,0x64,0x59,0x1f +.byte 0x21,0x59,0x6f,0x1b,0xd7,0x40,0x89,0x28,0x18,0xac,0xca,0xee,0x92,0x1c,0x0d,0x88,0x98,0x7a,0x75,0x68,0xe0,0xe2,0x96,0xda,0x88,0xb3,0xc6,0x21,0x02,0x34,0xfa,0xae,0x0b,0x38,0xcf,0x1c,0x6c,0x7a,0xc9,0xd9,0x5f,0xf0,0x4c,0x73,0xfd,0xe6,0x14,0xf3,0x39,0xed,0xbc,0x28,0x2f,0xf8,0x79,0x02,0x39,0x05,0xf3,0x6a,0x88,0xd9,0x03,0xe2 +.byte 0xb9,0x65,0x81,0x3a,0x34,0x80,0x3f,0x17,0x37,0x1e,0xe8,0x7d,0x41,0x49,0xfb,0x70,0x5d,0x58,0x3a,0x71,0x7b,0x3e,0xd3,0x83,0x0b,0x1b,0x11,0xfc,0x53,0xce,0xc6,0xc4,0x39,0x55,0xbe,0xbe,0x32,0xa5,0x88,0xab,0xcd,0x38,0x78,0x3e,0x52,0xaf,0x64,0x42,0x10,0xc3,0x70,0x81,0x76,0xe9,0x7d,0x8e,0x46,0x41,0xca,0x2c,0x0c,0x4c,0x30,0xd3 +.byte 0xca,0x38,0xa3,0x97,0x2e,0x0f,0xa5,0x18,0x3b,0xaa,0x0f,0x00,0x75,0x35,0x9c,0xcd,0x28,0x83,0xd4,0xa7,0x7c,0xb9,0xcd,0xb5,0x55,0x29,0x4c,0x14,0xcd,0xfc,0x8f,0xaf,0x7d,0x69,0x4f,0xf7,0x0f,0xed,0x7c,0xa5,0x79,0x9d,0x36,0xbb,0x72,0xbc,0xf2,0x14,0xfd,0xf0,0x04,0x2a,0x89,0x1e,0xf7,0x80,0x4c,0x5e,0xb8,0xc1,0xdb,0xfa,0x3c,0x27 +.byte 0xbb,0x30,0x08,0x2b,0xd2,0xf8,0xdb,0xe0,0x8c,0x00,0xe4,0xca,0xa9,0xde,0xb0,0x14,0x5b,0xec,0x6b,0xe6,0x5c,0x90,0x17,0x02,0x59,0x5f,0x5f,0x51,0xf8,0x30,0x10,0x11,0xc4,0xdf,0x37,0x30,0x32,0xb1,0x4d,0x49,0xfe,0x82,0x87,0xd2,0x42,0xf5,0x38,0x76,0xf9,0xa5,0x28,0xfc,0x14,0xb2,0xe0,0x72,0x82,0xde,0xc8,0x47,0x9e,0x8f,0x8a,0xb5 +.byte 0x85,0x44,0x42,0x12,0xc6,0xc0,0xa5,0x60,0x5a,0x27,0xd0,0x36,0x14,0x7b,0x2a,0x83,0x98,0x92,0x08,0xe9,0x03,0xc9,0xc3,0xd3,0x36,0x97,0xba,0x5e,0xd5,0x51,0xcc,0x44,0xeb,0x81,0x76,0xae,0x28,0x94,0x0b,0xf6,0xc7,0xeb,0xae,0x61,0x6f,0x7b,0x34,0xb5,0x8c,0x5f,0x31,0xb6,0x23,0xe3,0xe7,0x4b,0x60,0xe6,0xba,0x8d,0x0e,0xd1,0xb2,0x37 +.byte 0x72,0x3d,0xc1,0x75,0x9b,0x5e,0xcb,0x0f,0xf9,0xe4,0xdb,0x82,0x4c,0xc4,0x37,0xef,0x9d,0xde,0x16,0x85,0xe9,0xc2,0x03,0xd8,0x5b,0xa1,0xff,0xfa,0xd4,0xd7,0x5c,0x34,0xb6,0x1e,0x25,0x96,0xf5,0x8b,0xc3,0xee,0x16,0x1f,0xf8,0x55,0x4e,0x1c,0x83,0x80,0x77,0x1d,0x4f,0xb6,0x95,0x1c,0x91,0x7d,0x50,0x25,0xf4,0x2a,0x5d,0x2e,0xc7,0x8a +.byte 0x14,0xf8,0xb9,0xbc,0xab,0x5b,0xcd,0x47,0xb5,0xaf,0x85,0xc0,0x34,0x27,0x7d,0x6a,0x8c,0x84,0x8a,0xae,0x68,0x60,0x0e,0xa1,0x45,0xf7,0x83,0x66,0x91,0x69,0x30,0xed,0x26,0x5e,0xf5,0x48,0x6b,0x20,0xb3,0x11,0x50,0xf7,0x70,0x9d,0x10,0x50,0x44,0x87,0xfe,0x96,0x5c,0xc6,0xa4,0xa4,0xed,0x5e,0x7f,0x3d,0x90,0x19,0xbe,0x31,0xa3,0xdd +.byte 0x44,0xbb,0x9b,0x51,0x5a,0x06,0x1d,0x2e,0xd7,0xef,0xd1,0x81,0xb6,0xec,0xc6,0x89,0xfb,0x13,0xc5,0x21,0xef,0x9a,0x1a,0x48,0xf2,0xf8,0xb3,0xa3,0xec,0x7f,0x85,0xc1,0xc6,0x8c,0x5f,0xa9,0x30,0x38,0x25,0x1e,0x8d,0xcf,0x18,0x24,0xef,0x5a,0x9a,0x14,0x31,0xc0,0x2c,0x88,0xa5,0x3f,0x50,0x8b,0xb1,0xda,0x5d,0x26,0xd9,0xd3,0x81,0xb1 +.byte 0xec,0xf0,0x42,0x88,0xd0,0x81,0x51,0xf9,0x1b,0xbc,0x43,0xa4,0x37,0xf1,0xd7,0x90,0x21,0x7e,0xa0,0x3e,0x63,0xfb,0x21,0xfa,0x12,0xfb,0xde,0xc7,0xbf,0xb3,0x58,0xe7,0x76,0x42,0x20,0x01,0x3d,0x66,0x80,0xf1,0xb8,0xaf,0xfa,0x7d,0x96,0x89,0x36,0x48,0x95,0xd9,0x6e,0x6d,0xe6,0x4f,0xff,0x2a,0x47,0x61,0xf2,0x04,0xb7,0x83,0x14,0xce +.byte 0x0a,0x3c,0x73,0x17,0x50,0x88,0x03,0x25,0x4a,0xe3,0x13,0x55,0x8b,0x7e,0x50,0x38,0xfc,0x14,0x0b,0x04,0x8e,0xa8,0x5b,0xd6,0x72,0x20,0x60,0xe9,0xaa,0x22,0x82,0x11,0xc6,0xc4,0xd7,0xb9,0xc8,0x0c,0x7e,0x05,0xfb,0x90,0xe4,0x9c,0x28,0x89,0x29,0x99,0x63,0x4d,0xec,0x7b,0x50,0xbd,0xd8,0xa3,0x5b,0x50,0x77,0x19,0x81,0x92,0xce,0x82 +.size ecp_nistz256_precomputed,.-ecp_nistz256_precomputed +.align 5 +.Lpoly: +.quad 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 +.LRR: // 2^512 mod P precomputed for NIST P256 polynomial +.quad 0x0000000000000003,0xfffffffbffffffff,0xfffffffffffffffe,0x00000004fffffffd +.Lone_mont: +.quad 0x0000000000000001,0xffffffff00000000,0xffffffffffffffff,0x00000000fffffffe +.Lone: +.quad 1,0,0,0 +.Lord: +.quad 0xf3b9cac2fc632551,0xbce6faada7179e84,0xffffffffffffffff,0xffffffff00000000 +.LordK: +.quad 0xccd1c8aaee00bc4f +.byte 69,67,80,95,78,73,83,84,90,50,53,54,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 + +// void ecp_nistz256_to_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_to_mont +.type ecp_nistz256_to_mont,%function +.align 6 +ecp_nistz256_to_mont: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldr x3,.LRR // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + ldr x12,.Lpoly+8 + ldr x13,.Lpoly+24 + adr x2,.LRR // &bp[0] + + bl __ecp_nistz256_mul_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_to_mont,.-ecp_nistz256_to_mont + +// void ecp_nistz256_from_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_from_mont +.type ecp_nistz256_from_mont,%function +.align 4 +ecp_nistz256_from_mont: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + mov x3,#1 // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + ldr x12,.Lpoly+8 + ldr x13,.Lpoly+24 + adr x2,.Lone // &bp[0] + + bl __ecp_nistz256_mul_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_from_mont,.-ecp_nistz256_from_mont + +// void ecp_nistz256_mul_mont(BN_ULONG x0[4],const BN_ULONG x1[4], +// const BN_ULONG x2[4]); +.globl ecp_nistz256_mul_mont +.type ecp_nistz256_mul_mont,%function +.align 4 +ecp_nistz256_mul_mont: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldr x3,[x2] // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + ldr x12,.Lpoly+8 + ldr x13,.Lpoly+24 + + bl __ecp_nistz256_mul_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont + +// void ecp_nistz256_sqr_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_sqr_mont +.type ecp_nistz256_sqr_mont,%function +.align 4 +ecp_nistz256_sqr_mont: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + ldr x12,.Lpoly+8 + ldr x13,.Lpoly+24 + + bl __ecp_nistz256_sqr_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont + +// void ecp_nistz256_add(BN_ULONG x0[4],const BN_ULONG x1[4], +// const BN_ULONG x2[4]); +.globl ecp_nistz256_add +.type ecp_nistz256_add,%function +.align 4 +ecp_nistz256_add: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ldp x14,x15,[x1] + ldp x8,x9,[x2] + ldp x16,x17,[x1,#16] + ldp x10,x11,[x2,#16] + ldr x12,.Lpoly+8 + ldr x13,.Lpoly+24 + + bl __ecp_nistz256_add + + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_add,.-ecp_nistz256_add + +// void ecp_nistz256_div_by_2(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_div_by_2 +.type ecp_nistz256_div_by_2,%function +.align 4 +ecp_nistz256_div_by_2: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ldp x14,x15,[x1] + ldp x16,x17,[x1,#16] + ldr x12,.Lpoly+8 + ldr x13,.Lpoly+24 + + bl __ecp_nistz256_div_by_2 + + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_div_by_2,.-ecp_nistz256_div_by_2 + +// void ecp_nistz256_mul_by_2(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_mul_by_2 +.type ecp_nistz256_mul_by_2,%function +.align 4 +ecp_nistz256_mul_by_2: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ldp x14,x15,[x1] + ldp x16,x17,[x1,#16] + ldr x12,.Lpoly+8 + ldr x13,.Lpoly+24 + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + + bl __ecp_nistz256_add // ret = a+a // 2*a + + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_mul_by_2,.-ecp_nistz256_mul_by_2 + +// void ecp_nistz256_mul_by_3(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_mul_by_3 +.type ecp_nistz256_mul_by_3,%function +.align 4 +ecp_nistz256_mul_by_3: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ldp x14,x15,[x1] + ldp x16,x17,[x1,#16] + ldr x12,.Lpoly+8 + ldr x13,.Lpoly+24 + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + mov x4,x14 + mov x5,x15 + mov x6,x16 + mov x7,x17 + + bl __ecp_nistz256_add // ret = a+a // 2*a + + mov x8,x4 + mov x9,x5 + mov x10,x6 + mov x11,x7 + + bl __ecp_nistz256_add // ret += a // 2*a+a=3*a + + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_mul_by_3,.-ecp_nistz256_mul_by_3 + +// void ecp_nistz256_sub(BN_ULONG x0[4],const BN_ULONG x1[4], +// const BN_ULONG x2[4]); +.globl ecp_nistz256_sub +.type ecp_nistz256_sub,%function +.align 4 +ecp_nistz256_sub: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ldp x14,x15,[x1] + ldp x16,x17,[x1,#16] + ldr x12,.Lpoly+8 + ldr x13,.Lpoly+24 + + bl __ecp_nistz256_sub_from + + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_sub,.-ecp_nistz256_sub + +// void ecp_nistz256_neg(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl ecp_nistz256_neg +.type ecp_nistz256_neg,%function +.align 4 +ecp_nistz256_neg: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + mov x2,x1 + mov x14,xzr // a = 0 + mov x15,xzr + mov x16,xzr + mov x17,xzr + ldr x12,.Lpoly+8 + ldr x13,.Lpoly+24 + + bl __ecp_nistz256_sub_from + + ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_neg,.-ecp_nistz256_neg + +// note that __ecp_nistz256_mul_mont expects a[0-3] input pre-loaded +// to x4-x7 and b[0] - to x3 +.type __ecp_nistz256_mul_mont,%function +.align 4 +__ecp_nistz256_mul_mont: + mul x14,x4,x3 // a[0]*b[0] + umulh x8,x4,x3 + + mul x15,x5,x3 // a[1]*b[0] + umulh x9,x5,x3 + + mul x16,x6,x3 // a[2]*b[0] + umulh x10,x6,x3 + + mul x17,x7,x3 // a[3]*b[0] + umulh x11,x7,x3 + ldr x3,[x2,#8] // b[1] + + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adc x19,xzr,x11 + mov x20,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + ldr x3,[x2,#8*(1+1)] // b[1+1] + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + ldr x3,[x2,#8*(2+1)] // b[2+1] + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + // last reduction + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + adcs x17,x19,x11 + adc x19,x20,xzr + + adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x19,xzr // did it borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret +.size __ecp_nistz256_mul_mont,.-__ecp_nistz256_mul_mont + +// note that __ecp_nistz256_sqr_mont expects a[0-3] input pre-loaded +// to x4-x7 +.type __ecp_nistz256_sqr_mont,%function +.align 4 +__ecp_nistz256_sqr_mont: + // | | | | | |a1*a0| | + // | | | | |a2*a0| | | + // | |a3*a2|a3*a0| | | | + // | | | |a2*a1| | | | + // | | |a3*a1| | | | | + // *| | | | | | | | 2| + // +|a3*a3|a2*a2|a1*a1|a0*a0| + // |--+--+--+--+--+--+--+--| + // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is , i.e. follow + // + // "can't overflow" below mark carrying into high part of + // multiplication result, which can't overflow, because it + // can never be all ones. + + mul x15,x5,x4 // a[1]*a[0] + umulh x9,x5,x4 + mul x16,x6,x4 // a[2]*a[0] + umulh x10,x6,x4 + mul x17,x7,x4 // a[3]*a[0] + umulh x19,x7,x4 + + adds x16,x16,x9 // accumulate high parts of multiplication + mul x8,x6,x5 // a[2]*a[1] + umulh x9,x6,x5 + adcs x17,x17,x10 + mul x10,x7,x5 // a[3]*a[1] + umulh x11,x7,x5 + adc x19,x19,xzr // can't overflow + + mul x20,x7,x6 // a[3]*a[2] + umulh x1,x7,x6 + + adds x9,x9,x10 // accumulate high parts of multiplication + mul x14,x4,x4 // a[0]*a[0] + adc x10,x11,xzr // can't overflow + + adds x17,x17,x8 // accumulate low parts of multiplication + umulh x4,x4,x4 + adcs x19,x19,x9 + mul x9,x5,x5 // a[1]*a[1] + adcs x20,x20,x10 + umulh x5,x5,x5 + adc x1,x1,xzr // can't overflow + + adds x15,x15,x15 // acc[1-6]*=2 + mul x10,x6,x6 // a[2]*a[2] + adcs x16,x16,x16 + umulh x6,x6,x6 + adcs x17,x17,x17 + mul x11,x7,x7 // a[3]*a[3] + adcs x19,x19,x19 + umulh x7,x7,x7 + adcs x20,x20,x20 + adcs x1,x1,x1 + adc x2,xzr,xzr + + adds x15,x15,x4 // +a[i]*a[i] + adcs x16,x16,x9 + adcs x17,x17,x5 + adcs x19,x19,x10 + adcs x20,x20,x6 + lsl x8,x14,#32 + adcs x1,x1,x11 + lsr x9,x14,#32 + adc x2,x2,x7 + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + adc x17,x11,xzr // can't overflow + + adds x14,x14,x19 // accumulate upper half + adcs x15,x15,x20 + adcs x16,x16,x1 + adcs x17,x17,x2 + adc x19,xzr,xzr + + adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x19,xzr // did it borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret +.size __ecp_nistz256_sqr_mont,.-__ecp_nistz256_sqr_mont + +// Note that __ecp_nistz256_add expects both input vectors pre-loaded to +// x4-x7 and x8-x11. This is done because it's used in multiple +// contexts, e.g. in multiplication by 2 and 3... +.type __ecp_nistz256_add,%function +.align 4 +__ecp_nistz256_add: + adds x14,x14,x8 // ret = a+b + adcs x15,x15,x9 + adcs x16,x16,x10 + adcs x17,x17,x11 + adc x1,xzr,xzr // zap x1 + + adds x8,x14,#1 // subs x8,x4,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x1,xzr // did subtraction borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret +.size __ecp_nistz256_add,.-__ecp_nistz256_add + +.type __ecp_nistz256_sub_from,%function +.align 4 +__ecp_nistz256_sub_from: + ldp x8,x9,[x2] + ldp x10,x11,[x2,#16] + subs x14,x14,x8 // ret = a-b + sbcs x15,x15,x9 + sbcs x16,x16,x10 + sbcs x17,x17,x11 + sbc x1,xzr,xzr // zap x1 + + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adc x11,x17,x13 + cmp x1,xzr // did subtraction borrow? + + csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret + csel x15,x15,x9,eq + csel x16,x16,x10,eq + stp x14,x15,[x0] + csel x17,x17,x11,eq + stp x16,x17,[x0,#16] + + ret +.size __ecp_nistz256_sub_from,.-__ecp_nistz256_sub_from + +.type __ecp_nistz256_sub_morf,%function +.align 4 +__ecp_nistz256_sub_morf: + ldp x8,x9,[x2] + ldp x10,x11,[x2,#16] + subs x14,x8,x14 // ret = b-a + sbcs x15,x9,x15 + sbcs x16,x10,x16 + sbcs x17,x11,x17 + sbc x1,xzr,xzr // zap x1 + + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adc x11,x17,x13 + cmp x1,xzr // did subtraction borrow? + + csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret + csel x15,x15,x9,eq + csel x16,x16,x10,eq + stp x14,x15,[x0] + csel x17,x17,x11,eq + stp x16,x17,[x0,#16] + + ret +.size __ecp_nistz256_sub_morf,.-__ecp_nistz256_sub_morf + +.type __ecp_nistz256_div_by_2,%function +.align 4 +__ecp_nistz256_div_by_2: + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = a+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adcs x11,x17,x13 + adc x1,xzr,xzr // zap x1 + tst x14,#1 // is a even? + + csel x14,x14,x8,eq // ret = even ? a : a+modulus + csel x15,x15,x9,eq + csel x16,x16,x10,eq + csel x17,x17,x11,eq + csel x1,xzr,x1,eq + + lsr x14,x14,#1 // ret >>= 1 + orr x14,x14,x15,lsl#63 + lsr x15,x15,#1 + orr x15,x15,x16,lsl#63 + lsr x16,x16,#1 + orr x16,x16,x17,lsl#63 + lsr x17,x17,#1 + stp x14,x15,[x0] + orr x17,x17,x1,lsl#63 + stp x16,x17,[x0,#16] + + ret +.size __ecp_nistz256_div_by_2,.-__ecp_nistz256_div_by_2 +.globl ecp_nistz256_point_double +.type ecp_nistz256_point_double,%function +.align 5 +ecp_nistz256_point_double: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + sub sp,sp,#32*4 + +.Ldouble_shortcut: + ldp x14,x15,[x1,#32] + mov x21,x0 + ldp x16,x17,[x1,#48] + mov x22,x1 + ldr x12,.Lpoly+8 + mov x8,x14 + ldr x13,.Lpoly+24 + mov x9,x15 + ldp x4,x5,[x22,#64] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[x22,#64+16] + add x0,sp,#0 + bl __ecp_nistz256_add // p256_mul_by_2(S, in_y); + + add x0,sp,#64 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Zsqr, in_z); + + ldp x8,x9,[x22] + ldp x10,x11,[x22,#16] + mov x4,x14 // put Zsqr aside for p256_sub + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x0,sp,#32 + bl __ecp_nistz256_add // p256_add(M, Zsqr, in_x); + + add x2,x22,#0 + mov x14,x4 // restore Zsqr + mov x15,x5 + ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont + mov x16,x6 + mov x17,x7 + ldp x6,x7,[sp,#0+16] + add x0,sp,#64 + bl __ecp_nistz256_sub_morf // p256_sub(Zsqr, in_x, Zsqr); + + add x0,sp,#0 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(S, S); + + ldr x3,[x22,#32] + ldp x4,x5,[x22,#64] + ldp x6,x7,[x22,#64+16] + add x2,x22,#32 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(tmp0, in_z, in_y); + + mov x8,x14 + mov x9,x15 + ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[sp,#0+16] + add x0,x21,#64 + bl __ecp_nistz256_add // p256_mul_by_2(res_z, tmp0); + + add x0,sp,#96 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(tmp0, S); + + ldr x3,[sp,#64] // forward load for p256_mul_mont + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x0,x21,#32 + bl __ecp_nistz256_div_by_2 // p256_div_by_2(res_y, tmp0); + + add x2,sp,#64 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(M, M, Zsqr); + + mov x8,x14 // duplicate M + mov x9,x15 + mov x10,x16 + mov x11,x17 + mov x4,x14 // put M aside + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x0,sp,#32 + bl __ecp_nistz256_add + mov x8,x4 // restore M + mov x9,x5 + ldr x3,[x22] // forward load for p256_mul_mont + mov x10,x6 + ldp x4,x5,[sp,#0] + mov x11,x7 + ldp x6,x7,[sp,#0+16] + bl __ecp_nistz256_add // p256_mul_by_3(M, M); + + add x2,x22,#0 + add x0,sp,#0 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, in_x); + + mov x8,x14 + mov x9,x15 + ldp x4,x5,[sp,#32] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[sp,#32+16] + add x0,sp,#96 + bl __ecp_nistz256_add // p256_mul_by_2(tmp0, S); + + add x0,x21,#0 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(res_x, M); + + add x2,sp,#96 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, tmp0); + + add x2,sp,#0 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(S, S, res_x); + + ldr x3,[sp,#32] + mov x4,x14 // copy S + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x2,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, M); + + add x2,x21,#32 + add x0,x21,#32 + bl __ecp_nistz256_sub_from // p256_sub(res_y, S, res_y); + + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_point_double,.-ecp_nistz256_point_double +.globl ecp_nistz256_point_add +.type ecp_nistz256_point_add,%function +.align 5 +ecp_nistz256_point_add: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#32*12 + + ldp x4,x5,[x2,#64] // in2_z + ldp x6,x7,[x2,#64+16] + mov x21,x0 + mov x22,x1 + mov x23,x2 + ldr x12,.Lpoly+8 + ldr x13,.Lpoly+24 + orr x8,x4,x5 + orr x10,x6,x7 + orr x25,x8,x10 + cmp x25,#0 + csetm x25,ne // ~in2infty + add x0,sp,#192 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z2sqr, in2_z); + + ldp x4,x5,[x22,#64] // in1_z + ldp x6,x7,[x22,#64+16] + orr x8,x4,x5 + orr x10,x6,x7 + orr x24,x8,x10 + cmp x24,#0 + csetm x24,ne // ~in1infty + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); + + ldr x3,[x23,#64] + ldp x4,x5,[sp,#192] + ldp x6,x7,[sp,#192+16] + add x2,x23,#64 + add x0,sp,#320 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S1, Z2sqr, in2_z); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,x22,#64 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); + + ldr x3,[x22,#32] + ldp x4,x5,[sp,#320] + ldp x6,x7,[sp,#320+16] + add x2,x22,#32 + add x0,sp,#320 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S1, S1, in1_y); + + ldr x3,[x23,#32] + ldp x4,x5,[sp,#352] + ldp x6,x7,[sp,#352+16] + add x2,x23,#32 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); + + add x2,sp,#320 + ldr x3,[sp,#192] // forward load for p256_mul_mont + ldp x4,x5,[x22] + ldp x6,x7,[x22,#16] + add x0,sp,#160 + bl __ecp_nistz256_sub_from // p256_sub(R, S2, S1); + + orr x14,x14,x15 // see if result is zero + orr x16,x16,x17 + orr x26,x14,x16 // ~is_equal(S1,S2) + + add x2,sp,#192 + add x0,sp,#256 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U1, in1_x, Z2sqr); + + ldr x3,[sp,#128] + ldp x4,x5,[x23] + ldp x6,x7,[x23,#16] + add x2,sp,#128 + add x0,sp,#288 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in2_x, Z1sqr); + + add x2,sp,#256 + ldp x4,x5,[sp,#160] // forward load for p256_sqr_mont + ldp x6,x7,[sp,#160+16] + add x0,sp,#96 + bl __ecp_nistz256_sub_from // p256_sub(H, U2, U1); + + orr x14,x14,x15 // see if result is zero + orr x16,x16,x17 + orr x14,x14,x16 // ~is_equal(U1,U2) + + mvn x27,x24 // -1/0 -> 0/-1 + mvn x28,x25 // -1/0 -> 0/-1 + orr x14,x14,x27 + orr x14,x14,x28 + orr x14,x14,x26 + cbnz x14,.Ladd_proceed // if(~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2)) + +.Ladd_double: + mov x1,x22 + mov x0,x21 + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + add sp,sp,#32*(12-4) // difference in stack frames + b .Ldouble_shortcut + +.align 4 +.Ladd_proceed: + add x0,sp,#192 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#96] + ldp x6,x7,[sp,#96+16] + add x2,x22,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); + + ldp x4,x5,[sp,#96] + ldp x6,x7,[sp,#96+16] + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); + + ldr x3,[x23,#64] + ldp x4,x5,[sp,#64] + ldp x6,x7,[sp,#64+16] + add x2,x23,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, res_z, in2_z); + + ldr x3,[sp,#96] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,sp,#96 + add x0,sp,#224 + bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); + + ldr x3,[sp,#128] + ldp x4,x5,[sp,#256] + ldp x6,x7,[sp,#256+16] + add x2,sp,#128 + add x0,sp,#288 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, U1, Hsqr); + + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + add x0,sp,#128 + bl __ecp_nistz256_add // p256_mul_by_2(Hsqr, U2); + + add x2,sp,#192 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); + + add x2,sp,#224 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); + + add x2,sp,#288 + ldr x3,[sp,#224] // forward load for p256_mul_mont + ldp x4,x5,[sp,#320] + ldp x6,x7,[sp,#320+16] + add x0,sp,#32 + bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); + + add x2,sp,#224 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S1, Hcub); + + ldr x3,[sp,#160] + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x2,sp,#160 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); + + add x2,sp,#352 + bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); + + ldp x4,x5,[sp,#0] // res + ldp x6,x7,[sp,#0+16] + ldp x8,x9,[x23] // in2 + ldp x10,x11,[x23,#16] + ldp x14,x15,[x22,#0] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#0+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+0+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+0+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#0+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#0+48] + stp x14,x15,[x21,#0] + stp x16,x17,[x21,#0+16] + ldp x14,x15,[x22,#32] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#32+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+32+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+32+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#32+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#32+48] + stp x14,x15,[x21,#32] + stp x16,x17,[x21,#32+16] + ldp x14,x15,[x22,#64] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#64+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + csel x14,x8,x14,ne + csel x15,x9,x15,ne + csel x16,x10,x16,ne + csel x17,x11,x17,ne + stp x14,x15,[x21,#64] + stp x16,x17,[x21,#64+16] + +.Ladd_done: + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_point_add,.-ecp_nistz256_point_add +.globl ecp_nistz256_point_add_affine +.type ecp_nistz256_point_add_affine,%function +.align 5 +ecp_nistz256_point_add_affine: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + sub sp,sp,#32*10 + + mov x21,x0 + mov x22,x1 + mov x23,x2 + ldr x12,.Lpoly+8 + ldr x13,.Lpoly+24 + + ldp x4,x5,[x1,#64] // in1_z + ldp x6,x7,[x1,#64+16] + orr x8,x4,x5 + orr x10,x6,x7 + orr x24,x8,x10 + cmp x24,#0 + csetm x24,ne // ~in1infty + + ldp x14,x15,[x2] // in2_x + ldp x16,x17,[x2,#16] + ldp x8,x9,[x2,#32] // in2_y + ldp x10,x11,[x2,#48] + orr x14,x14,x15 + orr x16,x16,x17 + orr x8,x8,x9 + orr x10,x10,x11 + orr x14,x14,x16 + orr x8,x8,x10 + orr x25,x14,x8 + cmp x25,#0 + csetm x25,ne // ~in2infty + + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); + + mov x4,x14 + mov x5,x15 + mov x6,x16 + mov x7,x17 + ldr x3,[x23] + add x2,x23,#0 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, Z1sqr, in2_x); + + add x2,x22,#0 + ldr x3,[x22,#64] // forward load for p256_mul_mont + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x0,sp,#160 + bl __ecp_nistz256_sub_from // p256_sub(H, U2, in1_x); + + add x2,x22,#64 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#160] + ldp x6,x7,[sp,#160+16] + add x2,x22,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); + + ldr x3,[x23,#32] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,x23,#32 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); + + add x2,x22,#32 + ldp x4,x5,[sp,#160] // forward load for p256_sqr_mont + ldp x6,x7,[sp,#160+16] + add x0,sp,#192 + bl __ecp_nistz256_sub_from // p256_sub(R, S2, in1_y); + + add x0,sp,#224 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); + + ldp x4,x5,[sp,#192] + ldp x6,x7,[sp,#192+16] + add x0,sp,#288 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); + + ldr x3,[sp,#160] + ldp x4,x5,[sp,#224] + ldp x6,x7,[sp,#224+16] + add x2,sp,#160 + add x0,sp,#256 + bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); + + ldr x3,[x22] + ldp x4,x5,[sp,#224] + ldp x6,x7,[sp,#224+16] + add x2,x22,#0 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in1_x, Hsqr); + + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + add x0,sp,#224 + bl __ecp_nistz256_add // p256_mul_by_2(Hsqr, U2); + + add x2,sp,#288 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); + + add x2,sp,#256 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); + + add x2,sp,#96 + ldr x3,[x22,#32] // forward load for p256_mul_mont + ldp x4,x5,[sp,#256] + ldp x6,x7,[sp,#256+16] + add x0,sp,#32 + bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); + + add x2,x22,#32 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, in1_y, Hcub); + + ldr x3,[sp,#192] + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x2,sp,#192 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); + + add x2,sp,#128 + bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); + + ldp x4,x5,[sp,#0] // res + ldp x6,x7,[sp,#0+16] + ldp x8,x9,[x23] // in2 + ldp x10,x11,[x23,#16] + ldp x14,x15,[x22,#0] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#0+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+0+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+0+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#0+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#0+48] + stp x14,x15,[x21,#0] + stp x16,x17,[x21,#0+16] + adr x23,.Lone_mont-64 + ldp x14,x15,[x22,#32] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#32+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+32+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+32+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#32+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#32+48] + stp x14,x15,[x21,#32] + stp x16,x17,[x21,#32+16] + ldp x14,x15,[x22,#64] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#64+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + csel x14,x8,x14,ne + csel x15,x9,x15,ne + csel x16,x10,x16,ne + csel x17,x11,x17,ne + stp x14,x15,[x21,#64] + stp x16,x17,[x21,#64+16] + + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x29,x30,[sp],#80 +.inst 0xd50323bf // autiasp + ret +.size ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_ord_mul_mont(uint64_t res[4], uint64_t a[4], +// uint64_t b[4]); +.globl ecp_nistz256_ord_mul_mont +.type ecp_nistz256_ord_mul_mont,%function +.align 4 +ecp_nistz256_ord_mul_mont: + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + adr x23,.Lord + ldr x3,[x2] // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + + ldp x12,x13,[x23,#0] + ldp x21,x22,[x23,#16] + ldr x23,[x23,#32] + + mul x14,x4,x3 // a[0]*b[0] + umulh x8,x4,x3 + + mul x15,x5,x3 // a[1]*b[0] + umulh x9,x5,x3 + + mul x16,x6,x3 // a[2]*b[0] + umulh x10,x6,x3 + + mul x17,x7,x3 // a[3]*b[0] + umulh x19,x7,x3 + + mul x24,x14,x23 + + adds x15,x15,x8 // accumulate high parts of multiplication + adcs x16,x16,x9 + adcs x17,x17,x10 + adc x19,x19,xzr + mov x20,xzr + ldr x3,[x2,#8*1] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + ldr x3,[x2,#8*2] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + ldr x3,[x2,#8*3] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + lsl x8,x24,#32 // last reduction + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + subs x8,x14,x12 // ret -= modulus + sbcs x9,x15,x13 + sbcs x10,x16,x21 + sbcs x11,x17,x22 + sbcs xzr,x19,xzr + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldr x29,[sp],#64 + ret +.size ecp_nistz256_ord_mul_mont,.-ecp_nistz256_ord_mul_mont + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_ord_sqr_mont(uint64_t res[4], uint64_t a[4], +// int rep); +.globl ecp_nistz256_ord_sqr_mont +.type ecp_nistz256_ord_sqr_mont,%function +.align 4 +ecp_nistz256_ord_sqr_mont: + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + adr x23,.Lord + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + + ldp x12,x13,[x23,#0] + ldp x21,x22,[x23,#16] + ldr x23,[x23,#32] + b .Loop_ord_sqr + +.align 4 +.Loop_ord_sqr: + sub x2,x2,#1 + //////////////////////////////////////////////////////////////// + // | | | | | |a1*a0| | + // | | | | |a2*a0| | | + // | |a3*a2|a3*a0| | | | + // | | | |a2*a1| | | | + // | | |a3*a1| | | | | + // *| | | | | | | | 2| + // +|a3*a3|a2*a2|a1*a1|a0*a0| + // |--+--+--+--+--+--+--+--| + // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is , i.e. follow + // + // "can't overflow" below mark carrying into high part of + // multiplication result, which can't overflow, because it + // can never be all ones. + + mul x15,x5,x4 // a[1]*a[0] + umulh x9,x5,x4 + mul x16,x6,x4 // a[2]*a[0] + umulh x10,x6,x4 + mul x17,x7,x4 // a[3]*a[0] + umulh x19,x7,x4 + + adds x16,x16,x9 // accumulate high parts of multiplication + mul x8,x6,x5 // a[2]*a[1] + umulh x9,x6,x5 + adcs x17,x17,x10 + mul x10,x7,x5 // a[3]*a[1] + umulh x11,x7,x5 + adc x19,x19,xzr // can't overflow + + mul x20,x7,x6 // a[3]*a[2] + umulh x1,x7,x6 + + adds x9,x9,x10 // accumulate high parts of multiplication + mul x14,x4,x4 // a[0]*a[0] + adc x10,x11,xzr // can't overflow + + adds x17,x17,x8 // accumulate low parts of multiplication + umulh x4,x4,x4 + adcs x19,x19,x9 + mul x9,x5,x5 // a[1]*a[1] + adcs x20,x20,x10 + umulh x5,x5,x5 + adc x1,x1,xzr // can't overflow + + adds x15,x15,x15 // acc[1-6]*=2 + mul x10,x6,x6 // a[2]*a[2] + adcs x16,x16,x16 + umulh x6,x6,x6 + adcs x17,x17,x17 + mul x11,x7,x7 // a[3]*a[3] + adcs x19,x19,x19 + umulh x7,x7,x7 + adcs x20,x20,x20 + adcs x1,x1,x1 + adc x3,xzr,xzr + + adds x15,x15,x4 // +a[i]*a[i] + mul x24,x14,x23 + adcs x16,x16,x9 + adcs x17,x17,x5 + adcs x19,x19,x10 + adcs x20,x20,x6 + adcs x1,x1,x11 + adc x3,x3,x7 + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adc x17,xzr,x24 // can't overflow + mul x11,x14,x23 + lsl x8,x24,#32 + subs x15,x15,x24 + lsr x9,x24,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x11 + mul x10,x13,x11 + umulh x24,x13,x11 + + adcs x10,x10,x9 + adc x24,x24,xzr + + adds x14,x15,x10 + adcs x15,x16,x24 + adcs x16,x17,x11 + adc x17,xzr,x11 // can't overflow + mul x24,x14,x23 + lsl x8,x11,#32 + subs x15,x15,x11 + lsr x9,x11,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adc x17,xzr,x24 // can't overflow + mul x11,x14,x23 + lsl x8,x24,#32 + subs x15,x15,x24 + lsr x9,x24,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x11 + mul x10,x13,x11 + umulh x24,x13,x11 + + adcs x10,x10,x9 + adc x24,x24,xzr + + adds x14,x15,x10 + adcs x15,x16,x24 + adcs x16,x17,x11 + adc x17,xzr,x11 // can't overflow + lsl x8,x11,#32 + subs x15,x15,x11 + lsr x9,x11,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + adds x14,x14,x19 // accumulate upper half + adcs x15,x15,x20 + adcs x16,x16,x1 + adcs x17,x17,x3 + adc x19,xzr,xzr + + subs x8,x14,x12 // ret -= modulus + sbcs x9,x15,x13 + sbcs x10,x16,x21 + sbcs x11,x17,x22 + sbcs xzr,x19,xzr + + csel x4,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x5,x15,x9,lo + csel x6,x16,x10,lo + csel x7,x17,x11,lo + + cbnz x2,.Loop_ord_sqr + + stp x4,x5,[x0] + stp x6,x7,[x0,#16] + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldr x29,[sp],#64 + ret +.size ecp_nistz256_ord_sqr_mont,.-ecp_nistz256_ord_sqr_mont +// void ecp_nistz256_scatter_w5(void *x0,const P256_POINT *x1, +// int x2); +.globl ecp_nistz256_scatter_w5 +.type ecp_nistz256_scatter_w5,%function +.align 4 +ecp_nistz256_scatter_w5: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + add x0,x0,x2,lsl#2 + + ldp x4,x5,[x1] // X + ldp x6,x7,[x1,#16] + str w4,[x0,#64*0-4] + lsr x4,x4,#32 + str w5,[x0,#64*1-4] + lsr x5,x5,#32 + str w6,[x0,#64*2-4] + lsr x6,x6,#32 + str w7,[x0,#64*3-4] + lsr x7,x7,#32 + str w4,[x0,#64*4-4] + str w5,[x0,#64*5-4] + str w6,[x0,#64*6-4] + str w7,[x0,#64*7-4] + add x0,x0,#64*8 + + ldp x4,x5,[x1,#32] // Y + ldp x6,x7,[x1,#48] + str w4,[x0,#64*0-4] + lsr x4,x4,#32 + str w5,[x0,#64*1-4] + lsr x5,x5,#32 + str w6,[x0,#64*2-4] + lsr x6,x6,#32 + str w7,[x0,#64*3-4] + lsr x7,x7,#32 + str w4,[x0,#64*4-4] + str w5,[x0,#64*5-4] + str w6,[x0,#64*6-4] + str w7,[x0,#64*7-4] + add x0,x0,#64*8 + + ldp x4,x5,[x1,#64] // Z + ldp x6,x7,[x1,#80] + str w4,[x0,#64*0-4] + lsr x4,x4,#32 + str w5,[x0,#64*1-4] + lsr x5,x5,#32 + str w6,[x0,#64*2-4] + lsr x6,x6,#32 + str w7,[x0,#64*3-4] + lsr x7,x7,#32 + str w4,[x0,#64*4-4] + str w5,[x0,#64*5-4] + str w6,[x0,#64*6-4] + str w7,[x0,#64*7-4] + + ldr x29,[sp],#16 + ret +.size ecp_nistz256_scatter_w5,.-ecp_nistz256_scatter_w5 + +// void ecp_nistz256_gather_w5(P256_POINT *x0,const void *x1, +// int x2); +.globl ecp_nistz256_gather_w5 +.type ecp_nistz256_gather_w5,%function +.align 4 +ecp_nistz256_gather_w5: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + cmp x2,xzr + csetm x3,ne + add x2,x2,x3 + add x1,x1,x2,lsl#2 + + ldr w4,[x1,#64*0] + ldr w5,[x1,#64*1] + ldr w6,[x1,#64*2] + ldr w7,[x1,#64*3] + ldr w8,[x1,#64*4] + ldr w9,[x1,#64*5] + ldr w10,[x1,#64*6] + ldr w11,[x1,#64*7] + add x1,x1,#64*8 + orr x4,x4,x8,lsl#32 + orr x5,x5,x9,lsl#32 + orr x6,x6,x10,lsl#32 + orr x7,x7,x11,lsl#32 + csel x4,x4,xzr,ne + csel x5,x5,xzr,ne + csel x6,x6,xzr,ne + csel x7,x7,xzr,ne + stp x4,x5,[x0] // X + stp x6,x7,[x0,#16] + + ldr w4,[x1,#64*0] + ldr w5,[x1,#64*1] + ldr w6,[x1,#64*2] + ldr w7,[x1,#64*3] + ldr w8,[x1,#64*4] + ldr w9,[x1,#64*5] + ldr w10,[x1,#64*6] + ldr w11,[x1,#64*7] + add x1,x1,#64*8 + orr x4,x4,x8,lsl#32 + orr x5,x5,x9,lsl#32 + orr x6,x6,x10,lsl#32 + orr x7,x7,x11,lsl#32 + csel x4,x4,xzr,ne + csel x5,x5,xzr,ne + csel x6,x6,xzr,ne + csel x7,x7,xzr,ne + stp x4,x5,[x0,#32] // Y + stp x6,x7,[x0,#48] + + ldr w4,[x1,#64*0] + ldr w5,[x1,#64*1] + ldr w6,[x1,#64*2] + ldr w7,[x1,#64*3] + ldr w8,[x1,#64*4] + ldr w9,[x1,#64*5] + ldr w10,[x1,#64*6] + ldr w11,[x1,#64*7] + orr x4,x4,x8,lsl#32 + orr x5,x5,x9,lsl#32 + orr x6,x6,x10,lsl#32 + orr x7,x7,x11,lsl#32 + csel x4,x4,xzr,ne + csel x5,x5,xzr,ne + csel x6,x6,xzr,ne + csel x7,x7,xzr,ne + stp x4,x5,[x0,#64] // Z + stp x6,x7,[x0,#80] + + ldr x29,[sp],#16 + ret +.size ecp_nistz256_gather_w5,.-ecp_nistz256_gather_w5 + +// void ecp_nistz256_scatter_w7(void *x0,const P256_POINT_AFFINE *x1, +// int x2); +.globl ecp_nistz256_scatter_w7 +.type ecp_nistz256_scatter_w7,%function +.align 4 +ecp_nistz256_scatter_w7: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + add x0,x0,x2 + mov x2,#64/8 +.Loop_scatter_w7: + ldr x3,[x1],#8 + subs x2,x2,#1 + prfm pstl1strm,[x0,#4096+64*0] + prfm pstl1strm,[x0,#4096+64*1] + prfm pstl1strm,[x0,#4096+64*2] + prfm pstl1strm,[x0,#4096+64*3] + prfm pstl1strm,[x0,#4096+64*4] + prfm pstl1strm,[x0,#4096+64*5] + prfm pstl1strm,[x0,#4096+64*6] + prfm pstl1strm,[x0,#4096+64*7] + strb w3,[x0,#64*0] + lsr x3,x3,#8 + strb w3,[x0,#64*1] + lsr x3,x3,#8 + strb w3,[x0,#64*2] + lsr x3,x3,#8 + strb w3,[x0,#64*3] + lsr x3,x3,#8 + strb w3,[x0,#64*4] + lsr x3,x3,#8 + strb w3,[x0,#64*5] + lsr x3,x3,#8 + strb w3,[x0,#64*6] + lsr x3,x3,#8 + strb w3,[x0,#64*7] + add x0,x0,#64*8 + b.ne .Loop_scatter_w7 + + ldr x29,[sp],#16 + ret +.size ecp_nistz256_scatter_w7,.-ecp_nistz256_scatter_w7 + +// void ecp_nistz256_gather_w7(P256_POINT_AFFINE *x0,const void *x1, +// int x2); +.globl ecp_nistz256_gather_w7 +.type ecp_nistz256_gather_w7,%function +.align 4 +ecp_nistz256_gather_w7: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + cmp x2,xzr + csetm x3,ne + add x2,x2,x3 + add x1,x1,x2 + mov x2,#64/8 + nop +.Loop_gather_w7: + ldrb w4,[x1,#64*0] + prfm pldl1strm,[x1,#4096+64*0] + subs x2,x2,#1 + ldrb w5,[x1,#64*1] + prfm pldl1strm,[x1,#4096+64*1] + ldrb w6,[x1,#64*2] + prfm pldl1strm,[x1,#4096+64*2] + ldrb w7,[x1,#64*3] + prfm pldl1strm,[x1,#4096+64*3] + ldrb w8,[x1,#64*4] + prfm pldl1strm,[x1,#4096+64*4] + ldrb w9,[x1,#64*5] + prfm pldl1strm,[x1,#4096+64*5] + ldrb w10,[x1,#64*6] + prfm pldl1strm,[x1,#4096+64*6] + ldrb w11,[x1,#64*7] + prfm pldl1strm,[x1,#4096+64*7] + add x1,x1,#64*8 + orr x4,x4,x5,lsl#8 + orr x6,x6,x7,lsl#8 + orr x8,x8,x9,lsl#8 + orr x4,x4,x6,lsl#16 + orr x10,x10,x11,lsl#8 + orr x4,x4,x8,lsl#32 + orr x4,x4,x10,lsl#48 + and x4,x4,x3 + str x4,[x0],#8 + b.ne .Loop_gather_w7 + + ldr x29,[sp],#16 + ret +.size ecp_nistz256_gather_w7,.-ecp_nistz256_gather_w7 diff --git a/vere/ext/openssl/gen/linux-aarch64/crypto/modes/ghashv8-armx.S b/vere/ext/openssl/gen/linux-aarch64/crypto/modes/ghashv8-armx.S new file mode 100644 index 0000000..17ba12c --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/crypto/modes/ghashv8-armx.S @@ -0,0 +1,552 @@ +#include "arm_arch.h" + +#if __ARM_MAX_ARCH__>=7 +.text +.arch armv8-a+crypto +.globl gcm_init_v8 +.type gcm_init_v8,%function +.align 4 +gcm_init_v8: + ld1 {v17.2d},[x1] //load input H + movi v19.16b,#0xe1 + shl v19.2d,v19.2d,#57 //0xc2.0 + ext v3.16b,v17.16b,v17.16b,#8 + ushr v18.2d,v19.2d,#63 + dup v17.4s,v17.s[1] + ext v16.16b,v18.16b,v19.16b,#8 //t0=0xc2....01 + ushr v18.2d,v3.2d,#63 + sshr v17.4s,v17.4s,#31 //broadcast carry bit + and v18.16b,v18.16b,v16.16b + shl v3.2d,v3.2d,#1 + ext v18.16b,v18.16b,v18.16b,#8 + and v16.16b,v16.16b,v17.16b + orr v3.16b,v3.16b,v18.16b //H<<<=1 + eor v20.16b,v3.16b,v16.16b //twisted H + st1 {v20.2d},[x0],#16 //store Htable[0] + + //calculate H^2 + ext v16.16b,v20.16b,v20.16b,#8 //Karatsuba pre-processing + pmull v0.1q,v20.1d,v20.1d + eor v16.16b,v16.16b,v20.16b + pmull2 v2.1q,v20.2d,v20.2d + pmull v1.1q,v16.1d,v16.1d + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase + + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v22.16b,v0.16b,v18.16b + + ext v17.16b,v22.16b,v22.16b,#8 //Karatsuba pre-processing + eor v17.16b,v17.16b,v22.16b + ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed + st1 {v21.2d,v22.2d},[x0],#32 //store Htable[1..2] + //calculate H^3 and H^4 + pmull v0.1q,v20.1d, v22.1d + pmull v5.1q,v22.1d,v22.1d + pmull2 v2.1q,v20.2d, v22.2d + pmull2 v7.1q,v22.2d,v22.2d + pmull v1.1q,v16.1d,v17.1d + pmull v6.1q,v17.1d,v17.1d + + ext v16.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + ext v17.16b,v5.16b,v7.16b,#8 + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v16.16b + eor v4.16b,v5.16b,v7.16b + eor v6.16b,v6.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase + eor v6.16b,v6.16b,v4.16b + pmull v4.1q,v5.1d,v19.1d + + ins v2.d[0],v1.d[1] + ins v7.d[0],v6.d[1] + ins v1.d[1],v0.d[0] + ins v6.d[1],v5.d[0] + eor v0.16b,v1.16b,v18.16b + eor v5.16b,v6.16b,v4.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase + ext v4.16b,v5.16b,v5.16b,#8 + pmull v0.1q,v0.1d,v19.1d + pmull v5.1q,v5.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v4.16b,v4.16b,v7.16b + eor v20.16b, v0.16b,v18.16b //H^3 + eor v22.16b,v5.16b,v4.16b //H^4 + + ext v16.16b,v20.16b, v20.16b,#8 //Karatsuba pre-processing + ext v17.16b,v22.16b,v22.16b,#8 + eor v16.16b,v16.16b,v20.16b + eor v17.16b,v17.16b,v22.16b + ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed + st1 {v20.2d,v21.2d,v22.2d},[x0] //store Htable[3..5] + ret +.size gcm_init_v8,.-gcm_init_v8 +.globl gcm_gmult_v8 +.type gcm_gmult_v8,%function +.align 4 +gcm_gmult_v8: + ld1 {v17.2d},[x0] //load Xi + movi v19.16b,#0xe1 + ld1 {v20.2d,v21.2d},[x1] //load twisted H, ... + shl v19.2d,v19.2d,#57 +#ifndef __ARMEB__ + rev64 v17.16b,v17.16b +#endif + ext v3.16b,v17.16b,v17.16b,#8 + + pmull v0.1q,v20.1d,v3.1d //H.lo·Xi.lo + eor v17.16b,v17.16b,v3.16b //Karatsuba pre-processing + pmull2 v2.1q,v20.2d,v3.2d //H.hi·Xi.hi + pmull v1.1q,v21.1d,v17.1d //(H.lo+H.hi)·(Xi.lo+Xi.hi) + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b +#endif + ext v0.16b,v0.16b,v0.16b,#8 + st1 {v0.2d},[x0] //write out Xi + + ret +.size gcm_gmult_v8,.-gcm_gmult_v8 +.globl gcm_ghash_v8 +.type gcm_ghash_v8,%function +.align 4 +gcm_ghash_v8: + cmp x3,#64 + b.hs .Lgcm_ghash_v8_4x + ld1 {v0.2d},[x0] //load [rotated] Xi + //"[rotated]" means that + //loaded value would have + //to be rotated in order to + //make it appear as in + //algorithm specification + subs x3,x3,#32 //see if x3 is 32 or larger + mov x12,#16 //x12 is used as post- + //increment for input pointer; + //as loop is modulo-scheduled + //x12 is zeroed just in time + //to preclude overstepping + //inp[len], which means that + //last block[s] are actually + //loaded twice, but last + //copy is not processed + ld1 {v20.2d,v21.2d},[x1],#32 //load twisted H, ..., H^2 + movi v19.16b,#0xe1 + ld1 {v22.2d},[x1] + csel x12,xzr,x12,eq //is it time to zero x12? + ext v0.16b,v0.16b,v0.16b,#8 //rotate Xi + ld1 {v16.2d},[x2],#16 //load [rotated] I[0] + shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant +#ifndef __ARMEB__ + rev64 v16.16b,v16.16b + rev64 v0.16b,v0.16b +#endif + ext v3.16b,v16.16b,v16.16b,#8 //rotate I[0] + b.lo .Lodd_tail_v8 //x3 was less than 32 + ld1 {v17.2d},[x2],x12 //load [rotated] I[1] +#ifndef __ARMEB__ + rev64 v17.16b,v17.16b +#endif + ext v7.16b,v17.16b,v17.16b,#8 + eor v3.16b,v3.16b,v0.16b //I[i]^=Xi + pmull v4.1q,v20.1d,v7.1d //H·Ii+1 + eor v17.16b,v17.16b,v7.16b //Karatsuba pre-processing + pmull2 v6.1q,v20.2d,v7.2d + b .Loop_mod2x_v8 + +.align 4 +.Loop_mod2x_v8: + ext v18.16b,v3.16b,v3.16b,#8 + subs x3,x3,#32 //is there more data? + pmull v0.1q,v22.1d,v3.1d //H^2.lo·Xi.lo + csel x12,xzr,x12,lo //is it time to zero x12? + + pmull v5.1q,v21.1d,v17.1d + eor v18.16b,v18.16b,v3.16b //Karatsuba pre-processing + pmull2 v2.1q,v22.2d,v3.2d //H^2.hi·Xi.hi + eor v0.16b,v0.16b,v4.16b //accumulate + pmull2 v1.1q,v21.2d,v18.2d //(H^2.lo+H^2.hi)·(Xi.lo+Xi.hi) + ld1 {v16.2d},[x2],x12 //load [rotated] I[i+2] + + eor v2.16b,v2.16b,v6.16b + csel x12,xzr,x12,eq //is it time to zero x12? + eor v1.16b,v1.16b,v5.16b + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v17.2d},[x2],x12 //load [rotated] I[i+3] +#ifndef __ARMEB__ + rev64 v16.16b,v16.16b +#endif + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + +#ifndef __ARMEB__ + rev64 v17.16b,v17.16b +#endif + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v7.16b,v17.16b,v17.16b,#8 + ext v3.16b,v16.16b,v16.16b,#8 + eor v0.16b,v1.16b,v18.16b + pmull v4.1q,v20.1d,v7.1d //H·Ii+1 + eor v3.16b,v3.16b,v2.16b //accumulate v3.16b early + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v3.16b,v3.16b,v18.16b + eor v17.16b,v17.16b,v7.16b //Karatsuba pre-processing + eor v3.16b,v3.16b,v0.16b + pmull2 v6.1q,v20.2d,v7.2d + b.hs .Loop_mod2x_v8 //there was at least 32 more bytes + + eor v2.16b,v2.16b,v18.16b + ext v3.16b,v16.16b,v16.16b,#8 //re-construct v3.16b + adds x3,x3,#32 //re-construct x3 + eor v0.16b,v0.16b,v2.16b //re-construct v0.16b + b.eq .Ldone_v8 //is x3 zero? +.Lodd_tail_v8: + ext v18.16b,v0.16b,v0.16b,#8 + eor v3.16b,v3.16b,v0.16b //inp^=Xi + eor v17.16b,v16.16b,v18.16b //v17.16b is rotated inp^Xi + + pmull v0.1q,v20.1d,v3.1d //H.lo·Xi.lo + eor v17.16b,v17.16b,v3.16b //Karatsuba pre-processing + pmull2 v2.1q,v20.2d,v3.2d //H.hi·Xi.hi + pmull v1.1q,v21.1d,v17.1d //(H.lo+H.hi)·(Xi.lo+Xi.hi) + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + +.Ldone_v8: +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b +#endif + ext v0.16b,v0.16b,v0.16b,#8 + st1 {v0.2d},[x0] //write out Xi + + ret +.size gcm_ghash_v8,.-gcm_ghash_v8 +.type gcm_ghash_v8_4x,%function +.align 4 +gcm_ghash_v8_4x: +.Lgcm_ghash_v8_4x: + ld1 {v0.2d},[x0] //load [rotated] Xi + ld1 {v20.2d,v21.2d,v22.2d},[x1],#48 //load twisted H, ..., H^2 + movi v19.16b,#0xe1 + ld1 {v26.2d,v27.2d,v28.2d},[x1] //load twisted H^3, ..., H^4 + shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant + + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + ext v25.16b,v7.16b,v7.16b,#8 + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + pmull2 v31.1q,v20.2d,v25.2d + pmull v30.1q,v21.1d,v7.1d + + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#128 + b.lo .Ltail4x + + b .Loop4x + +.align 4 +.Loop4x: + eor v16.16b,v4.16b,v0.16b + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 + ext v3.16b,v16.16b,v16.16b,#8 +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + ext v25.16b,v7.16b,v7.16b,#8 + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + ext v24.16b,v6.16b,v6.16b,#8 + eor v1.16b,v1.16b,v30.16b + ext v23.16b,v5.16b,v5.16b,#8 + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + eor v1.16b,v1.16b,v17.16b + pmull2 v31.1q,v20.2d,v25.2d + eor v1.16b,v1.16b,v18.16b + pmull v30.1q,v21.1d,v7.1d + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + eor v0.16b,v1.16b,v18.16b + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + eor v18.16b,v18.16b,v2.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v0.16b,v0.16b,v18.16b + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#64 + b.hs .Loop4x + +.Ltail4x: + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + + adds x3,x3,#64 + b.eq .Ldone4x + + cmp x3,#32 + b.lo .Lone + b.eq .Ltwo +.Lthree: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d,v6.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + pmull v29.1q,v20.1d,v24.1d //H·Ii+2 + eor v6.16b,v6.16b,v24.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + pmull2 v31.1q,v20.2d,v24.2d + pmull v30.1q,v21.1d,v6.1d + eor v0.16b,v0.16b,v18.16b + pmull v7.1q,v22.1d,v23.1d //H^2·Ii+1 + eor v5.16b,v5.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull2 v23.1q,v22.2d,v23.2d + eor v16.16b,v4.16b,v0.16b + pmull2 v5.1q,v21.2d,v5.2d + ext v3.16b,v16.16b,v16.16b,#8 + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + pmull v0.1q,v26.1d,v3.1d //H^3·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v26.2d,v3.2d + pmull v1.1q,v27.1d,v16.1d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b .Ldone4x + +.align 4 +.Ltwo: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull v29.1q,v20.1d,v23.1d //H·Ii+1 + eor v5.16b,v5.16b,v23.16b + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull2 v31.1q,v20.2d,v23.2d + pmull v30.1q,v21.1d,v5.1d + + pmull v0.1q,v22.1d,v3.1d //H^2·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v22.2d,v3.2d + pmull2 v1.1q,v21.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b .Ldone4x + +.align 4 +.Lone: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v20.1d,v3.1d + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v20.2d,v3.2d + pmull v1.1q,v21.1d,v16.1d + +.Ldone4x: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b +#endif + st1 {v0.2d},[x0] //write out Xi + + ret +.size gcm_ghash_v8_4x,.-gcm_ghash_v8_4x +.byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 +#endif diff --git a/vere/ext/openssl/gen/linux-aarch64/crypto/poly1305/poly1305-armv8.S b/vere/ext/openssl/gen/linux-aarch64/crypto/poly1305/poly1305-armv8.S new file mode 100644 index 0000000..62271b4 --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/crypto/poly1305/poly1305-armv8.S @@ -0,0 +1,870 @@ +#include "arm_arch.h" + +.text + +// forward "declarations" are required for Apple + +.hidden OPENSSL_armcap_P +.globl poly1305_init +.hidden poly1305_init +.globl poly1305_blocks +.hidden poly1305_blocks +.globl poly1305_emit +.hidden poly1305_emit + +.type poly1305_init,%function +.align 5 +poly1305_init: + cmp x1,xzr + stp xzr,xzr,[x0] // zero hash value + stp xzr,xzr,[x0,#16] // [along with is_base2_26] + + csel x0,xzr,x0,eq + b.eq .Lno_key + +#ifdef __ILP32__ + ldrsw x11,.LOPENSSL_armcap_P +#else + ldr x11,.LOPENSSL_armcap_P +#endif + adr x10,.LOPENSSL_armcap_P + + ldp x7,x8,[x1] // load key + mov x9,#0xfffffffc0fffffff + movk x9,#0x0fff,lsl#48 + ldr w17,[x10,x11] +#ifdef __ARMEB__ + rev x7,x7 // flip bytes + rev x8,x8 +#endif + and x7,x7,x9 // &=0ffffffc0fffffff + and x9,x9,#-4 + and x8,x8,x9 // &=0ffffffc0ffffffc + stp x7,x8,[x0,#32] // save key value + + tst w17,#ARMV7_NEON + + adr x12,poly1305_blocks + adr x7,poly1305_blocks_neon + adr x13,poly1305_emit + adr x8,poly1305_emit_neon + + csel x12,x12,x7,eq + csel x13,x13,x8,eq + +#ifdef __ILP32__ + stp w12,w13,[x2] +#else + stp x12,x13,[x2] +#endif + + mov x0,#1 +.Lno_key: + ret +.size poly1305_init,.-poly1305_init + +.type poly1305_blocks,%function +.align 5 +poly1305_blocks: + ands x2,x2,#-16 + b.eq .Lno_data + + ldp x4,x5,[x0] // load hash value + ldp x7,x8,[x0,#32] // load key value + ldr x6,[x0,#16] + add x9,x8,x8,lsr#2 // s1 = r1 + (r1 >> 2) + b .Loop + +.align 5 +.Loop: + ldp x10,x11,[x1],#16 // load input + sub x2,x2,#16 +#ifdef __ARMEB__ + rev x10,x10 + rev x11,x11 +#endif + adds x4,x4,x10 // accumulate input + adcs x5,x5,x11 + + mul x12,x4,x7 // h0*r0 + adc x6,x6,x3 + umulh x13,x4,x7 + + mul x10,x5,x9 // h1*5*r1 + umulh x11,x5,x9 + + adds x12,x12,x10 + mul x10,x4,x8 // h0*r1 + adc x13,x13,x11 + umulh x14,x4,x8 + + adds x13,x13,x10 + mul x10,x5,x7 // h1*r0 + adc x14,x14,xzr + umulh x11,x5,x7 + + adds x13,x13,x10 + mul x10,x6,x9 // h2*5*r1 + adc x14,x14,x11 + mul x11,x6,x7 // h2*r0 + + adds x13,x13,x10 + adc x14,x14,x11 + + and x10,x14,#-4 // final reduction + and x6,x14,#3 + add x10,x10,x14,lsr#2 + adds x4,x12,x10 + adcs x5,x13,xzr + adc x6,x6,xzr + + cbnz x2,.Loop + + stp x4,x5,[x0] // store hash value + str x6,[x0,#16] + +.Lno_data: + ret +.size poly1305_blocks,.-poly1305_blocks + +.type poly1305_emit,%function +.align 5 +poly1305_emit: + ldp x4,x5,[x0] // load hash base 2^64 + ldr x6,[x0,#16] + ldp x10,x11,[x2] // load nonce + + adds x12,x4,#5 // compare to modulus + adcs x13,x5,xzr + adc x14,x6,xzr + + tst x14,#-4 // see if it's carried/borrowed + + csel x4,x4,x12,eq + csel x5,x5,x13,eq + +#ifdef __ARMEB__ + ror x10,x10,#32 // flip nonce words + ror x11,x11,#32 +#endif + adds x4,x4,x10 // accumulate nonce + adc x5,x5,x11 +#ifdef __ARMEB__ + rev x4,x4 // flip output bytes + rev x5,x5 +#endif + stp x4,x5,[x1] // write result + + ret +.size poly1305_emit,.-poly1305_emit +.type poly1305_mult,%function +.align 5 +poly1305_mult: + mul x12,x4,x7 // h0*r0 + umulh x13,x4,x7 + + mul x10,x5,x9 // h1*5*r1 + umulh x11,x5,x9 + + adds x12,x12,x10 + mul x10,x4,x8 // h0*r1 + adc x13,x13,x11 + umulh x14,x4,x8 + + adds x13,x13,x10 + mul x10,x5,x7 // h1*r0 + adc x14,x14,xzr + umulh x11,x5,x7 + + adds x13,x13,x10 + mul x10,x6,x9 // h2*5*r1 + adc x14,x14,x11 + mul x11,x6,x7 // h2*r0 + + adds x13,x13,x10 + adc x14,x14,x11 + + and x10,x14,#-4 // final reduction + and x6,x14,#3 + add x10,x10,x14,lsr#2 + adds x4,x12,x10 + adcs x5,x13,xzr + adc x6,x6,xzr + + ret +.size poly1305_mult,.-poly1305_mult + +.type poly1305_splat,%function +.align 5 +poly1305_splat: + and x12,x4,#0x03ffffff // base 2^64 -> base 2^26 + ubfx x13,x4,#26,#26 + extr x14,x5,x4,#52 + and x14,x14,#0x03ffffff + ubfx x15,x5,#14,#26 + extr x16,x6,x5,#40 + + str w12,[x0,#16*0] // r0 + add w12,w13,w13,lsl#2 // r1*5 + str w13,[x0,#16*1] // r1 + add w13,w14,w14,lsl#2 // r2*5 + str w12,[x0,#16*2] // s1 + str w14,[x0,#16*3] // r2 + add w14,w15,w15,lsl#2 // r3*5 + str w13,[x0,#16*4] // s2 + str w15,[x0,#16*5] // r3 + add w15,w16,w16,lsl#2 // r4*5 + str w14,[x0,#16*6] // s3 + str w16,[x0,#16*7] // r4 + str w15,[x0,#16*8] // s4 + + ret +.size poly1305_splat,.-poly1305_splat + +.type poly1305_blocks_neon,%function +.align 5 +poly1305_blocks_neon: + ldr x17,[x0,#24] + cmp x2,#128 + b.hs .Lblocks_neon + cbz x17,poly1305_blocks + +.Lblocks_neon: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + + ands x2,x2,#-16 + b.eq .Lno_data_neon + + cbz x17,.Lbase2_64_neon + + ldp w10,w11,[x0] // load hash value base 2^26 + ldp w12,w13,[x0,#8] + ldr w14,[x0,#16] + + tst x2,#31 + b.eq .Leven_neon + + ldp x7,x8,[x0,#32] // load key value + + add x4,x10,x11,lsl#26 // base 2^26 -> base 2^64 + lsr x5,x12,#12 + adds x4,x4,x12,lsl#52 + add x5,x5,x13,lsl#14 + adc x5,x5,xzr + lsr x6,x14,#24 + adds x5,x5,x14,lsl#40 + adc x14,x6,xzr // can be partially reduced... + + ldp x12,x13,[x1],#16 // load input + sub x2,x2,#16 + add x9,x8,x8,lsr#2 // s1 = r1 + (r1 >> 2) + + and x10,x14,#-4 // ... so reduce + and x6,x14,#3 + add x10,x10,x14,lsr#2 + adds x4,x4,x10 + adcs x5,x5,xzr + adc x6,x6,xzr + +#ifdef __ARMEB__ + rev x12,x12 + rev x13,x13 +#endif + adds x4,x4,x12 // accumulate input + adcs x5,x5,x13 + adc x6,x6,x3 + + bl poly1305_mult + ldr x30,[sp,#8] + + cbz x3,.Lstore_base2_64_neon + + and x10,x4,#0x03ffffff // base 2^64 -> base 2^26 + ubfx x11,x4,#26,#26 + extr x12,x5,x4,#52 + and x12,x12,#0x03ffffff + ubfx x13,x5,#14,#26 + extr x14,x6,x5,#40 + + cbnz x2,.Leven_neon + + stp w10,w11,[x0] // store hash value base 2^26 + stp w12,w13,[x0,#8] + str w14,[x0,#16] + b .Lno_data_neon + +.align 4 +.Lstore_base2_64_neon: + stp x4,x5,[x0] // store hash value base 2^64 + stp x6,xzr,[x0,#16] // note that is_base2_26 is zeroed + b .Lno_data_neon + +.align 4 +.Lbase2_64_neon: + ldp x7,x8,[x0,#32] // load key value + + ldp x4,x5,[x0] // load hash value base 2^64 + ldr x6,[x0,#16] + + tst x2,#31 + b.eq .Linit_neon + + ldp x12,x13,[x1],#16 // load input + sub x2,x2,#16 + add x9,x8,x8,lsr#2 // s1 = r1 + (r1 >> 2) +#ifdef __ARMEB__ + rev x12,x12 + rev x13,x13 +#endif + adds x4,x4,x12 // accumulate input + adcs x5,x5,x13 + adc x6,x6,x3 + + bl poly1305_mult + +.Linit_neon: + and x10,x4,#0x03ffffff // base 2^64 -> base 2^26 + ubfx x11,x4,#26,#26 + extr x12,x5,x4,#52 + and x12,x12,#0x03ffffff + ubfx x13,x5,#14,#26 + extr x14,x6,x5,#40 + + stp d8,d9,[sp,#16] // meet ABI requirements + stp d10,d11,[sp,#32] + stp d12,d13,[sp,#48] + stp d14,d15,[sp,#64] + + fmov d24,x10 + fmov d25,x11 + fmov d26,x12 + fmov d27,x13 + fmov d28,x14 + + ////////////////////////////////// initialize r^n table + mov x4,x7 // r^1 + add x9,x8,x8,lsr#2 // s1 = r1 + (r1 >> 2) + mov x5,x8 + mov x6,xzr + add x0,x0,#48+12 + bl poly1305_splat + + bl poly1305_mult // r^2 + sub x0,x0,#4 + bl poly1305_splat + + bl poly1305_mult // r^3 + sub x0,x0,#4 + bl poly1305_splat + + bl poly1305_mult // r^4 + sub x0,x0,#4 + bl poly1305_splat + ldr x30,[sp,#8] + + add x16,x1,#32 + adr x17,.Lzeros + subs x2,x2,#64 + csel x16,x17,x16,lo + + mov x4,#1 + str x4,[x0,#-24] // set is_base2_26 + sub x0,x0,#48 // restore original x0 + b .Ldo_neon + +.align 4 +.Leven_neon: + add x16,x1,#32 + adr x17,.Lzeros + subs x2,x2,#64 + csel x16,x17,x16,lo + + stp d8,d9,[sp,#16] // meet ABI requirements + stp d10,d11,[sp,#32] + stp d12,d13,[sp,#48] + stp d14,d15,[sp,#64] + + fmov d24,x10 + fmov d25,x11 + fmov d26,x12 + fmov d27,x13 + fmov d28,x14 + +.Ldo_neon: + ldp x8,x12,[x16],#16 // inp[2:3] (or zero) + ldp x9,x13,[x16],#48 + + lsl x3,x3,#24 + add x15,x0,#48 + +#ifdef __ARMEB__ + rev x8,x8 + rev x12,x12 + rev x9,x9 + rev x13,x13 +#endif + and x4,x8,#0x03ffffff // base 2^64 -> base 2^26 + and x5,x9,#0x03ffffff + ubfx x6,x8,#26,#26 + ubfx x7,x9,#26,#26 + add x4,x4,x5,lsl#32 // bfi x4,x5,#32,#32 + extr x8,x12,x8,#52 + extr x9,x13,x9,#52 + add x6,x6,x7,lsl#32 // bfi x6,x7,#32,#32 + fmov d14,x4 + and x8,x8,#0x03ffffff + and x9,x9,#0x03ffffff + ubfx x10,x12,#14,#26 + ubfx x11,x13,#14,#26 + add x12,x3,x12,lsr#40 + add x13,x3,x13,lsr#40 + add x8,x8,x9,lsl#32 // bfi x8,x9,#32,#32 + fmov d15,x6 + add x10,x10,x11,lsl#32 // bfi x10,x11,#32,#32 + add x12,x12,x13,lsl#32 // bfi x12,x13,#32,#32 + fmov d16,x8 + fmov d17,x10 + fmov d18,x12 + + ldp x8,x12,[x1],#16 // inp[0:1] + ldp x9,x13,[x1],#48 + + ld1 {v0.4s,v1.4s,v2.4s,v3.4s},[x15],#64 + ld1 {v4.4s,v5.4s,v6.4s,v7.4s},[x15],#64 + ld1 {v8.4s},[x15] + +#ifdef __ARMEB__ + rev x8,x8 + rev x12,x12 + rev x9,x9 + rev x13,x13 +#endif + and x4,x8,#0x03ffffff // base 2^64 -> base 2^26 + and x5,x9,#0x03ffffff + ubfx x6,x8,#26,#26 + ubfx x7,x9,#26,#26 + add x4,x4,x5,lsl#32 // bfi x4,x5,#32,#32 + extr x8,x12,x8,#52 + extr x9,x13,x9,#52 + add x6,x6,x7,lsl#32 // bfi x6,x7,#32,#32 + fmov d9,x4 + and x8,x8,#0x03ffffff + and x9,x9,#0x03ffffff + ubfx x10,x12,#14,#26 + ubfx x11,x13,#14,#26 + add x12,x3,x12,lsr#40 + add x13,x3,x13,lsr#40 + add x8,x8,x9,lsl#32 // bfi x8,x9,#32,#32 + fmov d10,x6 + add x10,x10,x11,lsl#32 // bfi x10,x11,#32,#32 + add x12,x12,x13,lsl#32 // bfi x12,x13,#32,#32 + movi v31.2d,#-1 + fmov d11,x8 + fmov d12,x10 + fmov d13,x12 + ushr v31.2d,v31.2d,#38 + + b.ls .Lskip_loop + +.align 4 +.Loop_neon: + //////////////////////////////////////////////////////////////// + // ((inp[0]*r^4+inp[2]*r^2+inp[4])*r^4+inp[6]*r^2 + // ((inp[1]*r^4+inp[3]*r^2+inp[5])*r^3+inp[7]*r + // ___________________/ + // ((inp[0]*r^4+inp[2]*r^2+inp[4])*r^4+inp[6]*r^2+inp[8])*r^2 + // ((inp[1]*r^4+inp[3]*r^2+inp[5])*r^4+inp[7]*r^2+inp[9])*r + // ___________________/ ____________________/ + // + // Note that we start with inp[2:3]*r^2. This is because it + // doesn't depend on reduction in previous iteration. + //////////////////////////////////////////////////////////////// + // d4 = h0*r4 + h1*r3 + h2*r2 + h3*r1 + h4*r0 + // d3 = h0*r3 + h1*r2 + h2*r1 + h3*r0 + h4*5*r4 + // d2 = h0*r2 + h1*r1 + h2*r0 + h3*5*r4 + h4*5*r3 + // d1 = h0*r1 + h1*r0 + h2*5*r4 + h3*5*r3 + h4*5*r2 + // d0 = h0*r0 + h1*5*r4 + h2*5*r3 + h3*5*r2 + h4*5*r1 + + subs x2,x2,#64 + umull v23.2d,v14.2s,v7.s[2] + csel x16,x17,x16,lo + umull v22.2d,v14.2s,v5.s[2] + umull v21.2d,v14.2s,v3.s[2] + ldp x8,x12,[x16],#16 // inp[2:3] (or zero) + umull v20.2d,v14.2s,v1.s[2] + ldp x9,x13,[x16],#48 + umull v19.2d,v14.2s,v0.s[2] +#ifdef __ARMEB__ + rev x8,x8 + rev x12,x12 + rev x9,x9 + rev x13,x13 +#endif + + umlal v23.2d,v15.2s,v5.s[2] + and x4,x8,#0x03ffffff // base 2^64 -> base 2^26 + umlal v22.2d,v15.2s,v3.s[2] + and x5,x9,#0x03ffffff + umlal v21.2d,v15.2s,v1.s[2] + ubfx x6,x8,#26,#26 + umlal v20.2d,v15.2s,v0.s[2] + ubfx x7,x9,#26,#26 + umlal v19.2d,v15.2s,v8.s[2] + add x4,x4,x5,lsl#32 // bfi x4,x5,#32,#32 + + umlal v23.2d,v16.2s,v3.s[2] + extr x8,x12,x8,#52 + umlal v22.2d,v16.2s,v1.s[2] + extr x9,x13,x9,#52 + umlal v21.2d,v16.2s,v0.s[2] + add x6,x6,x7,lsl#32 // bfi x6,x7,#32,#32 + umlal v20.2d,v16.2s,v8.s[2] + fmov d14,x4 + umlal v19.2d,v16.2s,v6.s[2] + and x8,x8,#0x03ffffff + + umlal v23.2d,v17.2s,v1.s[2] + and x9,x9,#0x03ffffff + umlal v22.2d,v17.2s,v0.s[2] + ubfx x10,x12,#14,#26 + umlal v21.2d,v17.2s,v8.s[2] + ubfx x11,x13,#14,#26 + umlal v20.2d,v17.2s,v6.s[2] + add x8,x8,x9,lsl#32 // bfi x8,x9,#32,#32 + umlal v19.2d,v17.2s,v4.s[2] + fmov d15,x6 + + add v11.2s,v11.2s,v26.2s + add x12,x3,x12,lsr#40 + umlal v23.2d,v18.2s,v0.s[2] + add x13,x3,x13,lsr#40 + umlal v22.2d,v18.2s,v8.s[2] + add x10,x10,x11,lsl#32 // bfi x10,x11,#32,#32 + umlal v21.2d,v18.2s,v6.s[2] + add x12,x12,x13,lsl#32 // bfi x12,x13,#32,#32 + umlal v20.2d,v18.2s,v4.s[2] + fmov d16,x8 + umlal v19.2d,v18.2s,v2.s[2] + fmov d17,x10 + + //////////////////////////////////////////////////////////////// + // (hash+inp[0:1])*r^4 and accumulate + + add v9.2s,v9.2s,v24.2s + fmov d18,x12 + umlal v22.2d,v11.2s,v1.s[0] + ldp x8,x12,[x1],#16 // inp[0:1] + umlal v19.2d,v11.2s,v6.s[0] + ldp x9,x13,[x1],#48 + umlal v23.2d,v11.2s,v3.s[0] + umlal v20.2d,v11.2s,v8.s[0] + umlal v21.2d,v11.2s,v0.s[0] +#ifdef __ARMEB__ + rev x8,x8 + rev x12,x12 + rev x9,x9 + rev x13,x13 +#endif + + add v10.2s,v10.2s,v25.2s + umlal v22.2d,v9.2s,v5.s[0] + umlal v23.2d,v9.2s,v7.s[0] + and x4,x8,#0x03ffffff // base 2^64 -> base 2^26 + umlal v21.2d,v9.2s,v3.s[0] + and x5,x9,#0x03ffffff + umlal v19.2d,v9.2s,v0.s[0] + ubfx x6,x8,#26,#26 + umlal v20.2d,v9.2s,v1.s[0] + ubfx x7,x9,#26,#26 + + add v12.2s,v12.2s,v27.2s + add x4,x4,x5,lsl#32 // bfi x4,x5,#32,#32 + umlal v22.2d,v10.2s,v3.s[0] + extr x8,x12,x8,#52 + umlal v23.2d,v10.2s,v5.s[0] + extr x9,x13,x9,#52 + umlal v19.2d,v10.2s,v8.s[0] + add x6,x6,x7,lsl#32 // bfi x6,x7,#32,#32 + umlal v21.2d,v10.2s,v1.s[0] + fmov d9,x4 + umlal v20.2d,v10.2s,v0.s[0] + and x8,x8,#0x03ffffff + + add v13.2s,v13.2s,v28.2s + and x9,x9,#0x03ffffff + umlal v22.2d,v12.2s,v0.s[0] + ubfx x10,x12,#14,#26 + umlal v19.2d,v12.2s,v4.s[0] + ubfx x11,x13,#14,#26 + umlal v23.2d,v12.2s,v1.s[0] + add x8,x8,x9,lsl#32 // bfi x8,x9,#32,#32 + umlal v20.2d,v12.2s,v6.s[0] + fmov d10,x6 + umlal v21.2d,v12.2s,v8.s[0] + add x12,x3,x12,lsr#40 + + umlal v22.2d,v13.2s,v8.s[0] + add x13,x3,x13,lsr#40 + umlal v19.2d,v13.2s,v2.s[0] + add x10,x10,x11,lsl#32 // bfi x10,x11,#32,#32 + umlal v23.2d,v13.2s,v0.s[0] + add x12,x12,x13,lsl#32 // bfi x12,x13,#32,#32 + umlal v20.2d,v13.2s,v4.s[0] + fmov d11,x8 + umlal v21.2d,v13.2s,v6.s[0] + fmov d12,x10 + fmov d13,x12 + + ///////////////////////////////////////////////////////////////// + // lazy reduction as discussed in "NEON crypto" by D.J. Bernstein + // and P. Schwabe + // + // [see discussion in poly1305-armv4 module] + + ushr v29.2d,v22.2d,#26 + xtn v27.2s,v22.2d + ushr v30.2d,v19.2d,#26 + and v19.16b,v19.16b,v31.16b + add v23.2d,v23.2d,v29.2d // h3 -> h4 + bic v27.2s,#0xfc,lsl#24 // &=0x03ffffff + add v20.2d,v20.2d,v30.2d // h0 -> h1 + + ushr v29.2d,v23.2d,#26 + xtn v28.2s,v23.2d + ushr v30.2d,v20.2d,#26 + xtn v25.2s,v20.2d + bic v28.2s,#0xfc,lsl#24 + add v21.2d,v21.2d,v30.2d // h1 -> h2 + + add v19.2d,v19.2d,v29.2d + shl v29.2d,v29.2d,#2 + shrn v30.2s,v21.2d,#26 + xtn v26.2s,v21.2d + add v19.2d,v19.2d,v29.2d // h4 -> h0 + bic v25.2s,#0xfc,lsl#24 + add v27.2s,v27.2s,v30.2s // h2 -> h3 + bic v26.2s,#0xfc,lsl#24 + + shrn v29.2s,v19.2d,#26 + xtn v24.2s,v19.2d + ushr v30.2s,v27.2s,#26 + bic v27.2s,#0xfc,lsl#24 + bic v24.2s,#0xfc,lsl#24 + add v25.2s,v25.2s,v29.2s // h0 -> h1 + add v28.2s,v28.2s,v30.2s // h3 -> h4 + + b.hi .Loop_neon + +.Lskip_loop: + dup v16.2d,v16.d[0] + add v11.2s,v11.2s,v26.2s + + //////////////////////////////////////////////////////////////// + // multiply (inp[0:1]+hash) or inp[2:3] by r^2:r^1 + + adds x2,x2,#32 + b.ne .Long_tail + + dup v16.2d,v11.d[0] + add v14.2s,v9.2s,v24.2s + add v17.2s,v12.2s,v27.2s + add v15.2s,v10.2s,v25.2s + add v18.2s,v13.2s,v28.2s + +.Long_tail: + dup v14.2d,v14.d[0] + umull2 v19.2d,v16.4s,v6.4s + umull2 v22.2d,v16.4s,v1.4s + umull2 v23.2d,v16.4s,v3.4s + umull2 v21.2d,v16.4s,v0.4s + umull2 v20.2d,v16.4s,v8.4s + + dup v15.2d,v15.d[0] + umlal2 v19.2d,v14.4s,v0.4s + umlal2 v21.2d,v14.4s,v3.4s + umlal2 v22.2d,v14.4s,v5.4s + umlal2 v23.2d,v14.4s,v7.4s + umlal2 v20.2d,v14.4s,v1.4s + + dup v17.2d,v17.d[0] + umlal2 v19.2d,v15.4s,v8.4s + umlal2 v22.2d,v15.4s,v3.4s + umlal2 v21.2d,v15.4s,v1.4s + umlal2 v23.2d,v15.4s,v5.4s + umlal2 v20.2d,v15.4s,v0.4s + + dup v18.2d,v18.d[0] + umlal2 v22.2d,v17.4s,v0.4s + umlal2 v23.2d,v17.4s,v1.4s + umlal2 v19.2d,v17.4s,v4.4s + umlal2 v20.2d,v17.4s,v6.4s + umlal2 v21.2d,v17.4s,v8.4s + + umlal2 v22.2d,v18.4s,v8.4s + umlal2 v19.2d,v18.4s,v2.4s + umlal2 v23.2d,v18.4s,v0.4s + umlal2 v20.2d,v18.4s,v4.4s + umlal2 v21.2d,v18.4s,v6.4s + + b.eq .Lshort_tail + + //////////////////////////////////////////////////////////////// + // (hash+inp[0:1])*r^4:r^3 and accumulate + + add v9.2s,v9.2s,v24.2s + umlal v22.2d,v11.2s,v1.2s + umlal v19.2d,v11.2s,v6.2s + umlal v23.2d,v11.2s,v3.2s + umlal v20.2d,v11.2s,v8.2s + umlal v21.2d,v11.2s,v0.2s + + add v10.2s,v10.2s,v25.2s + umlal v22.2d,v9.2s,v5.2s + umlal v19.2d,v9.2s,v0.2s + umlal v23.2d,v9.2s,v7.2s + umlal v20.2d,v9.2s,v1.2s + umlal v21.2d,v9.2s,v3.2s + + add v12.2s,v12.2s,v27.2s + umlal v22.2d,v10.2s,v3.2s + umlal v19.2d,v10.2s,v8.2s + umlal v23.2d,v10.2s,v5.2s + umlal v20.2d,v10.2s,v0.2s + umlal v21.2d,v10.2s,v1.2s + + add v13.2s,v13.2s,v28.2s + umlal v22.2d,v12.2s,v0.2s + umlal v19.2d,v12.2s,v4.2s + umlal v23.2d,v12.2s,v1.2s + umlal v20.2d,v12.2s,v6.2s + umlal v21.2d,v12.2s,v8.2s + + umlal v22.2d,v13.2s,v8.2s + umlal v19.2d,v13.2s,v2.2s + umlal v23.2d,v13.2s,v0.2s + umlal v20.2d,v13.2s,v4.2s + umlal v21.2d,v13.2s,v6.2s + +.Lshort_tail: + //////////////////////////////////////////////////////////////// + // horizontal add + + addp v22.2d,v22.2d,v22.2d + ldp d8,d9,[sp,#16] // meet ABI requirements + addp v19.2d,v19.2d,v19.2d + ldp d10,d11,[sp,#32] + addp v23.2d,v23.2d,v23.2d + ldp d12,d13,[sp,#48] + addp v20.2d,v20.2d,v20.2d + ldp d14,d15,[sp,#64] + addp v21.2d,v21.2d,v21.2d + + //////////////////////////////////////////////////////////////// + // lazy reduction, but without narrowing + + ushr v29.2d,v22.2d,#26 + and v22.16b,v22.16b,v31.16b + ushr v30.2d,v19.2d,#26 + and v19.16b,v19.16b,v31.16b + + add v23.2d,v23.2d,v29.2d // h3 -> h4 + add v20.2d,v20.2d,v30.2d // h0 -> h1 + + ushr v29.2d,v23.2d,#26 + and v23.16b,v23.16b,v31.16b + ushr v30.2d,v20.2d,#26 + and v20.16b,v20.16b,v31.16b + add v21.2d,v21.2d,v30.2d // h1 -> h2 + + add v19.2d,v19.2d,v29.2d + shl v29.2d,v29.2d,#2 + ushr v30.2d,v21.2d,#26 + and v21.16b,v21.16b,v31.16b + add v19.2d,v19.2d,v29.2d // h4 -> h0 + add v22.2d,v22.2d,v30.2d // h2 -> h3 + + ushr v29.2d,v19.2d,#26 + and v19.16b,v19.16b,v31.16b + ushr v30.2d,v22.2d,#26 + and v22.16b,v22.16b,v31.16b + add v20.2d,v20.2d,v29.2d // h0 -> h1 + add v23.2d,v23.2d,v30.2d // h3 -> h4 + + //////////////////////////////////////////////////////////////// + // write the result, can be partially reduced + + st4 {v19.s,v20.s,v21.s,v22.s}[0],[x0],#16 + st1 {v23.s}[0],[x0] + +.Lno_data_neon: + ldr x29,[sp],#80 +.inst 0xd50323bf // autiasp + ret +.size poly1305_blocks_neon,.-poly1305_blocks_neon + +.type poly1305_emit_neon,%function +.align 5 +poly1305_emit_neon: + ldr x17,[x0,#24] + cbz x17,poly1305_emit + + ldp w10,w11,[x0] // load hash value base 2^26 + ldp w12,w13,[x0,#8] + ldr w14,[x0,#16] + + add x4,x10,x11,lsl#26 // base 2^26 -> base 2^64 + lsr x5,x12,#12 + adds x4,x4,x12,lsl#52 + add x5,x5,x13,lsl#14 + adc x5,x5,xzr + lsr x6,x14,#24 + adds x5,x5,x14,lsl#40 + adc x6,x6,xzr // can be partially reduced... + + ldp x10,x11,[x2] // load nonce + + and x12,x6,#-4 // ... so reduce + add x12,x12,x6,lsr#2 + and x6,x6,#3 + adds x4,x4,x12 + adcs x5,x5,xzr + adc x6,x6,xzr + + adds x12,x4,#5 // compare to modulus + adcs x13,x5,xzr + adc x14,x6,xzr + + tst x14,#-4 // see if it's carried/borrowed + + csel x4,x4,x12,eq + csel x5,x5,x13,eq + +#ifdef __ARMEB__ + ror x10,x10,#32 // flip nonce words + ror x11,x11,#32 +#endif + adds x4,x4,x10 // accumulate nonce + adc x5,x5,x11 +#ifdef __ARMEB__ + rev x4,x4 // flip output bytes + rev x5,x5 +#endif + stp x4,x5,[x1] // write result + + ret +.size poly1305_emit_neon,.-poly1305_emit_neon + +.align 5 +.Lzeros: +.long 0,0,0,0,0,0,0,0 +.LOPENSSL_armcap_P: +#ifdef __ILP32__ +.long OPENSSL_armcap_P-. +#else +.quad OPENSSL_armcap_P-. +#endif +.byte 80,111,108,121,49,51,48,53,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 diff --git a/vere/ext/openssl/gen/linux-aarch64/crypto/sha/keccak1600-armv8.S b/vere/ext/openssl/gen/linux-aarch64/crypto/sha/keccak1600-armv8.S new file mode 100644 index 0000000..d8bdc71 --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/crypto/sha/keccak1600-armv8.S @@ -0,0 +1,1095 @@ +.text + +.align 8 // strategic alignment and padding that allows to use + // address value as loop termination condition... +.quad 0,0,0,0,0,0,0,0 +.type iotas,%object +iotas: +.quad 0x0000000000000001 +.quad 0x0000000000008082 +.quad 0x800000000000808a +.quad 0x8000000080008000 +.quad 0x000000000000808b +.quad 0x0000000080000001 +.quad 0x8000000080008081 +.quad 0x8000000000008009 +.quad 0x000000000000008a +.quad 0x0000000000000088 +.quad 0x0000000080008009 +.quad 0x000000008000000a +.quad 0x000000008000808b +.quad 0x800000000000008b +.quad 0x8000000000008089 +.quad 0x8000000000008003 +.quad 0x8000000000008002 +.quad 0x8000000000000080 +.quad 0x000000000000800a +.quad 0x800000008000000a +.quad 0x8000000080008081 +.quad 0x8000000000008080 +.quad 0x0000000080000001 +.quad 0x8000000080008008 +.size iotas,.-iotas +.type KeccakF1600_int,%function +.align 5 +KeccakF1600_int: + adr x28,iotas +.inst 0xd503233f // paciasp + stp x28,x30,[sp,#16] // 32 bytes on top are mine + b .Loop +.align 4 +.Loop: + ////////////////////////////////////////// Theta + eor x26,x0,x5 + stp x4,x9,[sp,#0] // offload pair... + eor x27,x1,x6 + eor x28,x2,x7 + eor x30,x3,x8 + eor x4,x4,x9 + eor x26,x26,x10 + eor x27,x27,x11 + eor x28,x28,x12 + eor x30,x30,x13 + eor x4,x4,x14 + eor x26,x26,x15 + eor x27,x27,x16 + eor x28,x28,x17 + eor x30,x30,x25 + eor x4,x4,x19 + eor x26,x26,x20 + eor x28,x28,x22 + eor x27,x27,x21 + eor x30,x30,x23 + eor x4,x4,x24 + + eor x9,x26,x28,ror#63 + + eor x1,x1,x9 + eor x6,x6,x9 + eor x11,x11,x9 + eor x16,x16,x9 + eor x21,x21,x9 + + eor x9,x27,x30,ror#63 + eor x28,x28,x4,ror#63 + eor x30,x30,x26,ror#63 + eor x4,x4,x27,ror#63 + + eor x27, x2,x9 // mov x27,x2 + eor x7,x7,x9 + eor x12,x12,x9 + eor x17,x17,x9 + eor x22,x22,x9 + + eor x0,x0,x4 + eor x5,x5,x4 + eor x10,x10,x4 + eor x15,x15,x4 + eor x20,x20,x4 + ldp x4,x9,[sp,#0] // re-load offloaded data + eor x26, x3,x28 // mov x26,x3 + eor x8,x8,x28 + eor x13,x13,x28 + eor x25,x25,x28 + eor x23,x23,x28 + + eor x28, x4,x30 // mov x28,x4 + eor x9,x9,x30 + eor x14,x14,x30 + eor x19,x19,x30 + eor x24,x24,x30 + + ////////////////////////////////////////// Rho+Pi + mov x30,x1 + ror x1,x6,#64-44 + //mov x27,x2 + ror x2,x12,#64-43 + //mov x26,x3 + ror x3,x25,#64-21 + //mov x28,x4 + ror x4,x24,#64-14 + + ror x6,x9,#64-20 + ror x12,x13,#64-25 + ror x25,x17,#64-15 + ror x24,x21,#64-2 + + ror x9,x22,#64-61 + ror x13,x19,#64-8 + ror x17,x11,#64-10 + ror x21,x8,#64-55 + + ror x22,x14,#64-39 + ror x19,x23,#64-56 + ror x11,x7,#64-6 + ror x8,x16,#64-45 + + ror x14,x20,#64-18 + ror x23,x15,#64-41 + ror x7,x10,#64-3 + ror x16,x5,#64-36 + + ror x5,x26,#64-28 + ror x10,x30,#64-1 + ror x15,x28,#64-27 + ror x20,x27,#64-62 + + ////////////////////////////////////////// Chi+Iota + bic x26,x2,x1 + bic x27,x3,x2 + bic x28,x0,x4 + bic x30,x1,x0 + eor x0,x0,x26 + bic x26,x4,x3 + eor x1,x1,x27 + ldr x27,[sp,#16] + eor x3,x3,x28 + eor x4,x4,x30 + eor x2,x2,x26 + ldr x30,[x27],#8 // Iota[i++] + + bic x26,x7,x6 + tst x27,#255 // are we done? + str x27,[sp,#16] + bic x27,x8,x7 + bic x28,x5,x9 + eor x0,x0,x30 // A[0][0] ^= Iota + bic x30,x6,x5 + eor x5,x5,x26 + bic x26,x9,x8 + eor x6,x6,x27 + eor x8,x8,x28 + eor x9,x9,x30 + eor x7,x7,x26 + + bic x26,x12,x11 + bic x27,x13,x12 + bic x28,x10,x14 + bic x30,x11,x10 + eor x10,x10,x26 + bic x26,x14,x13 + eor x11,x11,x27 + eor x13,x13,x28 + eor x14,x14,x30 + eor x12,x12,x26 + + bic x26,x17,x16 + bic x27,x25,x17 + bic x28,x15,x19 + bic x30,x16,x15 + eor x15,x15,x26 + bic x26,x19,x25 + eor x16,x16,x27 + eor x25,x25,x28 + eor x19,x19,x30 + eor x17,x17,x26 + + bic x26,x22,x21 + bic x27,x23,x22 + bic x28,x20,x24 + bic x30,x21,x20 + eor x20,x20,x26 + bic x26,x24,x23 + eor x21,x21,x27 + eor x23,x23,x28 + eor x24,x24,x30 + eor x22,x22,x26 + + bne .Loop + + ldr x30,[sp,#24] +.inst 0xd50323bf // autiasp + ret +.size KeccakF1600_int,.-KeccakF1600_int + +.type KeccakF1600,%function +.align 5 +KeccakF1600: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#48 + + str x0,[sp,#32] // offload argument + mov x26,x0 + ldp x0,x1,[x0,#16*0] + ldp x2,x3,[x26,#16*1] + ldp x4,x5,[x26,#16*2] + ldp x6,x7,[x26,#16*3] + ldp x8,x9,[x26,#16*4] + ldp x10,x11,[x26,#16*5] + ldp x12,x13,[x26,#16*6] + ldp x14,x15,[x26,#16*7] + ldp x16,x17,[x26,#16*8] + ldp x25,x19,[x26,#16*9] + ldp x20,x21,[x26,#16*10] + ldp x22,x23,[x26,#16*11] + ldr x24,[x26,#16*12] + + bl KeccakF1600_int + + ldr x26,[sp,#32] + stp x0,x1,[x26,#16*0] + stp x2,x3,[x26,#16*1] + stp x4,x5,[x26,#16*2] + stp x6,x7,[x26,#16*3] + stp x8,x9,[x26,#16*4] + stp x10,x11,[x26,#16*5] + stp x12,x13,[x26,#16*6] + stp x14,x15,[x26,#16*7] + stp x16,x17,[x26,#16*8] + stp x25,x19,[x26,#16*9] + stp x20,x21,[x26,#16*10] + stp x22,x23,[x26,#16*11] + str x24,[x26,#16*12] + + ldp x19,x20,[x29,#16] + add sp,sp,#48 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#128 +.inst 0xd50323bf // autiasp + ret +.size KeccakF1600,.-KeccakF1600 + +.globl SHA3_absorb +.type SHA3_absorb,%function +.align 5 +SHA3_absorb: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#64 + + stp x0,x1,[sp,#32] // offload arguments + stp x2,x3,[sp,#48] + + mov x26,x0 // uint64_t A[5][5] + mov x27,x1 // const void *inp + mov x28,x2 // size_t len + mov x30,x3 // size_t bsz + ldp x0,x1,[x26,#16*0] + ldp x2,x3,[x26,#16*1] + ldp x4,x5,[x26,#16*2] + ldp x6,x7,[x26,#16*3] + ldp x8,x9,[x26,#16*4] + ldp x10,x11,[x26,#16*5] + ldp x12,x13,[x26,#16*6] + ldp x14,x15,[x26,#16*7] + ldp x16,x17,[x26,#16*8] + ldp x25,x19,[x26,#16*9] + ldp x20,x21,[x26,#16*10] + ldp x22,x23,[x26,#16*11] + ldr x24,[x26,#16*12] + b .Loop_absorb + +.align 4 +.Loop_absorb: + subs x26,x28,x30 // len - bsz + blo .Labsorbed + + str x26,[sp,#48] // save len - bsz + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x0,x0,x26 + cmp x30,#8*(0+2) + blo .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x1,x1,x26 + beq .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x2,x2,x26 + cmp x30,#8*(2+2) + blo .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x3,x3,x26 + beq .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x4,x4,x26 + cmp x30,#8*(4+2) + blo .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x5,x5,x26 + beq .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x6,x6,x26 + cmp x30,#8*(6+2) + blo .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x7,x7,x26 + beq .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x8,x8,x26 + cmp x30,#8*(8+2) + blo .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x9,x9,x26 + beq .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x10,x10,x26 + cmp x30,#8*(10+2) + blo .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x11,x11,x26 + beq .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x12,x12,x26 + cmp x30,#8*(12+2) + blo .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x13,x13,x26 + beq .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x14,x14,x26 + cmp x30,#8*(14+2) + blo .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x15,x15,x26 + beq .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x16,x16,x26 + cmp x30,#8*(16+2) + blo .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x17,x17,x26 + beq .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x25,x25,x26 + cmp x30,#8*(18+2) + blo .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x19,x19,x26 + beq .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x20,x20,x26 + cmp x30,#8*(20+2) + blo .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x21,x21,x26 + beq .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x22,x22,x26 + cmp x30,#8*(22+2) + blo .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x23,x23,x26 + beq .Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x24,x24,x26 + +.Lprocess_block: + str x27,[sp,#40] // save inp + + bl KeccakF1600_int + + ldr x27,[sp,#40] // restore arguments + ldp x28,x30,[sp,#48] + b .Loop_absorb + +.align 4 +.Labsorbed: + ldr x27,[sp,#32] + stp x0,x1,[x27,#16*0] + stp x2,x3,[x27,#16*1] + stp x4,x5,[x27,#16*2] + stp x6,x7,[x27,#16*3] + stp x8,x9,[x27,#16*4] + stp x10,x11,[x27,#16*5] + stp x12,x13,[x27,#16*6] + stp x14,x15,[x27,#16*7] + stp x16,x17,[x27,#16*8] + stp x25,x19,[x27,#16*9] + stp x20,x21,[x27,#16*10] + stp x22,x23,[x27,#16*11] + str x24,[x27,#16*12] + + mov x0,x28 // return value + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#128 +.inst 0xd50323bf // autiasp + ret +.size SHA3_absorb,.-SHA3_absorb +.globl SHA3_squeeze +.type SHA3_squeeze,%function +.align 5 +SHA3_squeeze: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-48]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + + mov x19,x0 // put aside arguments + mov x20,x1 + mov x21,x2 + mov x22,x3 + +.Loop_squeeze: + ldr x4,[x0],#8 + cmp x21,#8 + blo .Lsqueeze_tail +#ifdef __AARCH64EB__ + rev x4,x4 +#endif + str x4,[x20],#8 + subs x21,x21,#8 + beq .Lsqueeze_done + + subs x3,x3,#8 + bhi .Loop_squeeze + + mov x0,x19 + bl KeccakF1600 + mov x0,x19 + mov x3,x22 + b .Loop_squeeze + +.align 4 +.Lsqueeze_tail: + strb w4,[x20],#1 + lsr x4,x4,#8 + subs x21,x21,#1 + beq .Lsqueeze_done + strb w4,[x20],#1 + lsr x4,x4,#8 + subs x21,x21,#1 + beq .Lsqueeze_done + strb w4,[x20],#1 + lsr x4,x4,#8 + subs x21,x21,#1 + beq .Lsqueeze_done + strb w4,[x20],#1 + lsr x4,x4,#8 + subs x21,x21,#1 + beq .Lsqueeze_done + strb w4,[x20],#1 + lsr x4,x4,#8 + subs x21,x21,#1 + beq .Lsqueeze_done + strb w4,[x20],#1 + lsr x4,x4,#8 + subs x21,x21,#1 + beq .Lsqueeze_done + strb w4,[x20],#1 + +.Lsqueeze_done: + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x29,x30,[sp],#48 +.inst 0xd50323bf // autiasp + ret +.size SHA3_squeeze,.-SHA3_squeeze +.type KeccakF1600_ce,%function +.align 5 +KeccakF1600_ce: + mov x9,#12 + adr x10,iotas + b .Loop_ce +.align 4 +.Loop_ce: + ////////////////////////////////////////////////// Theta +.inst 0xce052819 //eor3 v25.16b,v0.16b,v5.16b,v10.16b +.inst 0xce062c3a //eor3 v26.16b,v1.16b,v6.16b,v11.16b +.inst 0xce07305b //eor3 v27.16b,v2.16b,v7.16b,v12.16b +.inst 0xce08347c //eor3 v28.16b,v3.16b,v8.16b,v13.16b +.inst 0xce09389d //eor3 v29.16b,v4.16b,v9.16b,v14.16b +.inst 0xce0f5339 //eor3 v25.16b,v25.16b, v15.16b,v20.16b +.inst 0xce10575a //eor3 v26.16b,v26.16b, v16.16b,v21.16b +.inst 0xce115b7b //eor3 v27.16b,v27.16b, v17.16b,v22.16b +.inst 0xce125f9c //eor3 v28.16b,v28.16b, v18.16b,v23.16b +.inst 0xce1363bd //eor3 v29.16b,v29.16b, v19.16b,v24.16b + +.inst 0xce7b8f3e //rax1 v30.16b,v25.16b,v27.16b // D[1] +.inst 0xce7c8f5f //rax1 v31.16b,v26.16b,v28.16b // D[2] +.inst 0xce7d8f7b //rax1 v27.16b,v27.16b,v29.16b // D[3] +.inst 0xce798f9c //rax1 v28.16b,v28.16b,v25.16b // D[4] +.inst 0xce7a8fbd //rax1 v29.16b,v29.16b,v26.16b // D[0] + + ////////////////////////////////////////////////// Theta+Rho+Pi +.inst 0xce9e50d9 //xar v25.16b, v6.16b,v30.16b,#64-44 // C[0]=A[0][1] +.inst 0xce9cb126 //xar v6.16b,v9.16b,v28.16b,#64-20 +.inst 0xce9f0ec9 //xar v9.16b,v22.16b,v31.16b,#64-61 +.inst 0xce9c65d6 //xar v22.16b,v14.16b,v28.16b,#64-39 +.inst 0xce9dba8e //xar v14.16b,v20.16b,v29.16b,#64-18 + +.inst 0xce9f0854 //xar v20.16b,v2.16b,v31.16b,#64-62 + +.inst 0xce9f5582 //xar v2.16b,v12.16b,v31.16b,#64-43 +.inst 0xce9b9dac //xar v12.16b,v13.16b,v27.16b,#64-25 +.inst 0xce9ce26d //xar v13.16b,v19.16b,v28.16b,#64-8 +.inst 0xce9b22f3 //xar v19.16b,v23.16b,v27.16b,#64-56 +.inst 0xce9d5df7 //xar v23.16b,v15.16b,v29.16b,#64-41 + +.inst 0xce9c948f //xar v15.16b,v4.16b,v28.16b,#64-27 + + eor v0.16b,v0.16b,v29.16b + ldr x11,[x10],#8 + +.inst 0xce9bae5a //xar v26.16b, v18.16b,v27.16b,#64-21 // C[1]=A[0][3] +.inst 0xce9fc632 //xar v18.16b,v17.16b,v31.16b,#64-15 +.inst 0xce9ed971 //xar v17.16b,v11.16b,v30.16b,#64-10 +.inst 0xce9fe8eb //xar v11.16b,v7.16b,v31.16b,#64-6 +.inst 0xce9df547 //xar v7.16b,v10.16b,v29.16b,#64-3 + +.inst 0xce9efc2a //xar v10.16b,v1.16b,v30.16b,#64-1 // * + +.inst 0xce9ccb04 //xar v4.16b,v24.16b,v28.16b,#64-14 +.inst 0xce9efab8 //xar v24.16b,v21.16b,v30.16b,#64-2 +.inst 0xce9b2515 //xar v21.16b,v8.16b,v27.16b,#64-55 +.inst 0xce9e4e08 //xar v8.16b,v16.16b,v30.16b,#64-45 +.inst 0xce9d70b0 //xar v16.16b,v5.16b,v29.16b,#64-36 + +.inst 0xce9b907b //xar v27.16b, v3.16b,v27.16b,#64-28 // C[2]=A[1][0] + + ////////////////////////////////////////////////// Chi+Iota + dup v31.2d,x11 // borrow C[6] +.inst 0xce22641c //bcax v28.16b, v0.16b,v2.16b,v25.16b // * +.inst 0xce3a0b21 //bcax v1.16b,v25.16b, v26.16b, v2.16b // * +.inst 0xce246842 //bcax v2.16b,v2.16b,v4.16b,v26.16b +.inst 0xce201343 //bcax v3.16b,v26.16b, v0.16b,v4.16b +.inst 0xce390084 //bcax v4.16b,v4.16b,v25.16b, v0.16b + +.inst 0xce271b65 //bcax v5.16b,v27.16b, v7.16b,v6.16b // * +.inst 0xce281cd9 //bcax v25.16b, v6.16b,v8.16b,v7.16b // * +.inst 0xce2920e7 //bcax v7.16b,v7.16b,v9.16b,v8.16b +.inst 0xce3b2508 //bcax v8.16b,v8.16b,v27.16b, v9.16b +.inst 0xce266d29 //bcax v9.16b,v9.16b,v6.16b,v27.16b + + eor v0.16b,v28.16b,v31.16b // Iota + +.inst 0xce2c2d5a //bcax v26.16b, v10.16b,v12.16b,v11.16b // * +.inst 0xce2d317b //bcax v27.16b, v11.16b,v13.16b,v12.16b // * +.inst 0xce2e358c //bcax v12.16b,v12.16b,v14.16b,v13.16b +.inst 0xce2a39ad //bcax v13.16b,v13.16b,v10.16b,v14.16b +.inst 0xce2b29ce //bcax v14.16b,v14.16b,v11.16b,v10.16b + +.inst 0xce3141fc //bcax v28.16b, v15.16b,v17.16b,v16.16b // * +.inst 0xce32461d //bcax v29.16b, v16.16b,v18.16b,v17.16b // * +.inst 0xce334a31 //bcax v17.16b,v17.16b,v19.16b,v18.16b +.inst 0xce2f4e52 //bcax v18.16b,v18.16b,v15.16b,v19.16b +.inst 0xce303e73 //bcax v19.16b,v19.16b,v16.16b,v15.16b + +.inst 0xce36569e //bcax v30.16b, v20.16b,v22.16b,v21.16b // * +.inst 0xce375abf //bcax v31.16b, v21.16b,v23.16b,v22.16b // * +.inst 0xce385ed6 //bcax v22.16b,v22.16b,v24.16b,v23.16b +.inst 0xce3462f7 //bcax v23.16b,v23.16b,v20.16b,v24.16b +.inst 0xce355318 //bcax v24.16b,v24.16b,v21.16b,v20.16b + ////////////////////////////////////////////////// Theta +.inst 0xce056806 //eor3 v6.16b,v0.16b,v5.16b,v26.16b +.inst 0xce196c2a //eor3 v10.16b,v1.16b,v25.16b,v27.16b +.inst 0xce07304b //eor3 v11.16b,v2.16b,v7.16b,v12.16b +.inst 0xce08346f //eor3 v15.16b,v3.16b,v8.16b,v13.16b +.inst 0xce093890 //eor3 v16.16b,v4.16b,v9.16b,v14.16b +.inst 0xce1c78c6 //eor3 v6.16b,v6.16b, v28.16b,v30.16b +.inst 0xce1d7d4a //eor3 v10.16b,v10.16b, v29.16b,v31.16b +.inst 0xce11596b //eor3 v11.16b,v11.16b, v17.16b,v22.16b +.inst 0xce125def //eor3 v15.16b,v15.16b, v18.16b,v23.16b +.inst 0xce136210 //eor3 v16.16b,v16.16b, v19.16b,v24.16b + +.inst 0xce6b8cd4 //rax1 v20.16b,v6.16b,v11.16b // D[1] +.inst 0xce6f8d55 //rax1 v21.16b,v10.16b,v15.16b // D[2] +.inst 0xce708d6b //rax1 v11.16b,v11.16b,v16.16b // D[3] +.inst 0xce668def //rax1 v15.16b,v15.16b,v6.16b // D[4] +.inst 0xce6a8e10 //rax1 v16.16b,v16.16b,v10.16b // D[0] + + ////////////////////////////////////////////////// Theta+Rho+Pi +.inst 0xce945326 //xar v6.16b, v25.16b,v20.16b,#64-44 // C[0]=A[0][1] +.inst 0xce8fb139 //xar v25.16b,v9.16b,v15.16b,#64-20 +.inst 0xce950ec9 //xar v9.16b,v22.16b,v21.16b,#64-61 +.inst 0xce8f65d6 //xar v22.16b,v14.16b,v15.16b,#64-39 +.inst 0xce90bbce //xar v14.16b,v30.16b,v16.16b,#64-18 + +.inst 0xce95085e //xar v30.16b,v2.16b,v21.16b,#64-62 + +.inst 0xce955582 //xar v2.16b,v12.16b,v21.16b,#64-43 +.inst 0xce8b9dac //xar v12.16b,v13.16b,v11.16b,#64-25 +.inst 0xce8fe26d //xar v13.16b,v19.16b,v15.16b,#64-8 +.inst 0xce8b22f3 //xar v19.16b,v23.16b,v11.16b,#64-56 +.inst 0xce905f97 //xar v23.16b,v28.16b,v16.16b,#64-41 + +.inst 0xce8f949c //xar v28.16b,v4.16b,v15.16b,#64-27 + + eor v0.16b,v0.16b,v16.16b + ldr x11,[x10],#8 + +.inst 0xce8bae4a //xar v10.16b, v18.16b,v11.16b,#64-21 // C[1]=A[0][3] +.inst 0xce95c632 //xar v18.16b,v17.16b,v21.16b,#64-15 +.inst 0xce94db71 //xar v17.16b,v27.16b,v20.16b,#64-10 +.inst 0xce95e8fb //xar v27.16b,v7.16b,v21.16b,#64-6 +.inst 0xce90f747 //xar v7.16b,v26.16b,v16.16b,#64-3 + +.inst 0xce94fc3a //xar v26.16b,v1.16b,v20.16b,#64-1 // * + +.inst 0xce8fcb04 //xar v4.16b,v24.16b,v15.16b,#64-14 +.inst 0xce94fbf8 //xar v24.16b,v31.16b,v20.16b,#64-2 +.inst 0xce8b251f //xar v31.16b,v8.16b,v11.16b,#64-55 +.inst 0xce944fa8 //xar v8.16b,v29.16b,v20.16b,#64-45 +.inst 0xce9070bd //xar v29.16b,v5.16b,v16.16b,#64-36 + +.inst 0xce8b906b //xar v11.16b, v3.16b,v11.16b,#64-28 // C[2]=A[1][0] + + ////////////////////////////////////////////////// Chi+Iota + dup v21.2d,x11 // borrow C[6] +.inst 0xce22180f //bcax v15.16b, v0.16b,v2.16b,v6.16b // * +.inst 0xce2a08c1 //bcax v1.16b,v6.16b, v10.16b, v2.16b // * +.inst 0xce242842 //bcax v2.16b,v2.16b,v4.16b,v10.16b +.inst 0xce201143 //bcax v3.16b,v10.16b, v0.16b,v4.16b +.inst 0xce260084 //bcax v4.16b,v4.16b,v6.16b, v0.16b + +.inst 0xce276565 //bcax v5.16b,v11.16b, v7.16b,v25.16b // * +.inst 0xce281f26 //bcax v6.16b, v25.16b,v8.16b,v7.16b // * +.inst 0xce2920e7 //bcax v7.16b,v7.16b,v9.16b,v8.16b +.inst 0xce2b2508 //bcax v8.16b,v8.16b,v11.16b, v9.16b +.inst 0xce392d29 //bcax v9.16b,v9.16b,v25.16b,v11.16b + + eor v0.16b,v15.16b,v21.16b // Iota + +.inst 0xce2c6f4a //bcax v10.16b, v26.16b,v12.16b,v27.16b // * +.inst 0xce2d336b //bcax v11.16b, v27.16b,v13.16b,v12.16b // * +.inst 0xce2e358c //bcax v12.16b,v12.16b,v14.16b,v13.16b +.inst 0xce3a39ad //bcax v13.16b,v13.16b,v26.16b,v14.16b +.inst 0xce3b69ce //bcax v14.16b,v14.16b,v27.16b,v26.16b + +.inst 0xce31778f //bcax v15.16b, v28.16b,v17.16b,v29.16b // * +.inst 0xce3247b0 //bcax v16.16b, v29.16b,v18.16b,v17.16b // * +.inst 0xce334a31 //bcax v17.16b,v17.16b,v19.16b,v18.16b +.inst 0xce3c4e52 //bcax v18.16b,v18.16b,v28.16b,v19.16b +.inst 0xce3d7273 //bcax v19.16b,v19.16b,v29.16b,v28.16b + +.inst 0xce367fd4 //bcax v20.16b, v30.16b,v22.16b,v31.16b // * +.inst 0xce375bf5 //bcax v21.16b, v31.16b,v23.16b,v22.16b // * +.inst 0xce385ed6 //bcax v22.16b,v22.16b,v24.16b,v23.16b +.inst 0xce3e62f7 //bcax v23.16b,v23.16b,v30.16b,v24.16b +.inst 0xce3f7b18 //bcax v24.16b,v24.16b,v31.16b,v30.16b + subs x9,x9,#1 + bne .Loop_ce + + ret +.size KeccakF1600_ce,.-KeccakF1600_ce + +.type KeccakF1600_cext,%function +.align 5 +KeccakF1600_cext: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + stp d8,d9,[sp,#16] // per ABI requirement + stp d10,d11,[sp,#32] + stp d12,d13,[sp,#48] + stp d14,d15,[sp,#64] + ldp d0,d1,[x0,#8*0] + ldp d2,d3,[x0,#8*2] + ldp d4,d5,[x0,#8*4] + ldp d6,d7,[x0,#8*6] + ldp d8,d9,[x0,#8*8] + ldp d10,d11,[x0,#8*10] + ldp d12,d13,[x0,#8*12] + ldp d14,d15,[x0,#8*14] + ldp d16,d17,[x0,#8*16] + ldp d18,d19,[x0,#8*18] + ldp d20,d21,[x0,#8*20] + ldp d22,d23,[x0,#8*22] + ldr d24,[x0,#8*24] + bl KeccakF1600_ce + ldr x30,[sp,#8] + stp d0,d1,[x0,#8*0] + stp d2,d3,[x0,#8*2] + stp d4,d5,[x0,#8*4] + stp d6,d7,[x0,#8*6] + stp d8,d9,[x0,#8*8] + stp d10,d11,[x0,#8*10] + stp d12,d13,[x0,#8*12] + stp d14,d15,[x0,#8*14] + stp d16,d17,[x0,#8*16] + stp d18,d19,[x0,#8*18] + stp d20,d21,[x0,#8*20] + stp d22,d23,[x0,#8*22] + str d24,[x0,#8*24] + + ldp d8,d9,[sp,#16] + ldp d10,d11,[sp,#32] + ldp d12,d13,[sp,#48] + ldp d14,d15,[sp,#64] + ldr x29,[sp],#80 +.inst 0xd50323bf // autiasp + ret +.size KeccakF1600_cext,.-KeccakF1600_cext +.globl SHA3_absorb_cext +.type SHA3_absorb_cext,%function +.align 5 +SHA3_absorb_cext: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + stp d8,d9,[sp,#16] // per ABI requirement + stp d10,d11,[sp,#32] + stp d12,d13,[sp,#48] + stp d14,d15,[sp,#64] + ldp d0,d1,[x0,#8*0] + ldp d2,d3,[x0,#8*2] + ldp d4,d5,[x0,#8*4] + ldp d6,d7,[x0,#8*6] + ldp d8,d9,[x0,#8*8] + ldp d10,d11,[x0,#8*10] + ldp d12,d13,[x0,#8*12] + ldp d14,d15,[x0,#8*14] + ldp d16,d17,[x0,#8*16] + ldp d18,d19,[x0,#8*18] + ldp d20,d21,[x0,#8*20] + ldp d22,d23,[x0,#8*22] + ldr d24,[x0,#8*24] + b .Loop_absorb_ce + +.align 4 +.Loop_absorb_ce: + subs x2,x2,x3 // len - bsz + blo .Labsorbed_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v0.16b,v0.16b,v31.16b + cmp x3,#8*(0+2) + blo .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v1.16b,v1.16b,v31.16b + beq .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v2.16b,v2.16b,v31.16b + cmp x3,#8*(2+2) + blo .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v3.16b,v3.16b,v31.16b + beq .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v4.16b,v4.16b,v31.16b + cmp x3,#8*(4+2) + blo .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v5.16b,v5.16b,v31.16b + beq .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v6.16b,v6.16b,v31.16b + cmp x3,#8*(6+2) + blo .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v7.16b,v7.16b,v31.16b + beq .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v8.16b,v8.16b,v31.16b + cmp x3,#8*(8+2) + blo .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v9.16b,v9.16b,v31.16b + beq .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v10.16b,v10.16b,v31.16b + cmp x3,#8*(10+2) + blo .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v11.16b,v11.16b,v31.16b + beq .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v12.16b,v12.16b,v31.16b + cmp x3,#8*(12+2) + blo .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v13.16b,v13.16b,v31.16b + beq .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v14.16b,v14.16b,v31.16b + cmp x3,#8*(14+2) + blo .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v15.16b,v15.16b,v31.16b + beq .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v16.16b,v16.16b,v31.16b + cmp x3,#8*(16+2) + blo .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v17.16b,v17.16b,v31.16b + beq .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v18.16b,v18.16b,v31.16b + cmp x3,#8*(18+2) + blo .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v19.16b,v19.16b,v31.16b + beq .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v20.16b,v20.16b,v31.16b + cmp x3,#8*(20+2) + blo .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v21.16b,v21.16b,v31.16b + beq .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v22.16b,v22.16b,v31.16b + cmp x3,#8*(22+2) + blo .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v23.16b,v23.16b,v31.16b + beq .Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v24.16b,v24.16b,v31.16b + +.Lprocess_block_ce: + + bl KeccakF1600_ce + + b .Loop_absorb_ce + +.align 4 +.Labsorbed_ce: + stp d0,d1,[x0,#8*0] + stp d2,d3,[x0,#8*2] + stp d4,d5,[x0,#8*4] + stp d6,d7,[x0,#8*6] + stp d8,d9,[x0,#8*8] + stp d10,d11,[x0,#8*10] + stp d12,d13,[x0,#8*12] + stp d14,d15,[x0,#8*14] + stp d16,d17,[x0,#8*16] + stp d18,d19,[x0,#8*18] + stp d20,d21,[x0,#8*20] + stp d22,d23,[x0,#8*22] + str d24,[x0,#8*24] + add x0,x2,x3 // return value + + ldp d8,d9,[sp,#16] + ldp d10,d11,[sp,#32] + ldp d12,d13,[sp,#48] + ldp d14,d15,[sp,#64] + ldp x29,x30,[sp],#80 +.inst 0xd50323bf // autiasp + ret +.size SHA3_absorb_cext,.-SHA3_absorb_cext +.globl SHA3_squeeze_cext +.type SHA3_squeeze_cext,%function +.align 5 +SHA3_squeeze_cext: +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + mov x9,x0 + mov x10,x3 + +.Loop_squeeze_ce: + ldr x4,[x9],#8 + cmp x2,#8 + blo .Lsqueeze_tail_ce +#ifdef __AARCH64EB__ + rev x4,x4 +#endif + str x4,[x1],#8 + beq .Lsqueeze_done_ce + + sub x2,x2,#8 + subs x10,x10,#8 + bhi .Loop_squeeze_ce + + bl KeccakF1600_cext + ldr x30,[sp,#8] + mov x9,x0 + mov x10,x3 + b .Loop_squeeze_ce + +.align 4 +.Lsqueeze_tail_ce: + strb w4,[x1],#1 + lsr x4,x4,#8 + subs x2,x2,#1 + beq .Lsqueeze_done_ce + strb w4,[x1],#1 + lsr x4,x4,#8 + subs x2,x2,#1 + beq .Lsqueeze_done_ce + strb w4,[x1],#1 + lsr x4,x4,#8 + subs x2,x2,#1 + beq .Lsqueeze_done_ce + strb w4,[x1],#1 + lsr x4,x4,#8 + subs x2,x2,#1 + beq .Lsqueeze_done_ce + strb w4,[x1],#1 + lsr x4,x4,#8 + subs x2,x2,#1 + beq .Lsqueeze_done_ce + strb w4,[x1],#1 + lsr x4,x4,#8 + subs x2,x2,#1 + beq .Lsqueeze_done_ce + strb w4,[x1],#1 + +.Lsqueeze_done_ce: + ldr x29,[sp],#16 +.inst 0xd50323bf // autiasp + ret +.size SHA3_squeeze_cext,.-SHA3_squeeze_cext +.byte 75,101,99,99,97,107,45,49,54,48,48,32,97,98,115,111,114,98,32,97,110,100,32,115,113,117,101,101,122,101,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 diff --git a/vere/ext/openssl/gen/linux-aarch64/crypto/sha/sha1-armv8.S b/vere/ext/openssl/gen/linux-aarch64/crypto/sha/sha1-armv8.S new file mode 100644 index 0000000..d64f46a --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/crypto/sha/sha1-armv8.S @@ -0,0 +1,1221 @@ +#include "arm_arch.h" + +.text + + +.hidden OPENSSL_armcap_P +.globl sha1_block_data_order +.type sha1_block_data_order,%function +.align 6 +sha1_block_data_order: +#ifdef __ILP32__ + ldrsw x16,.LOPENSSL_armcap_P +#else + ldr x16,.LOPENSSL_armcap_P +#endif + adr x17,.LOPENSSL_armcap_P + add x16,x16,x17 + ldr w16,[x16] + tst w16,#ARMV8_SHA1 + b.ne .Lv8_entry + + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + + ldp w20,w21,[x0] + ldp w22,w23,[x0,#8] + ldr w24,[x0,#16] + +.Loop: + ldr x3,[x1],#64 + movz w28,#0x7999 + sub x2,x2,#1 + movk w28,#0x5a82,lsl#16 +#ifdef __ARMEB__ + ror x3,x3,#32 +#else + rev32 x3,x3 +#endif + add w24,w24,w28 // warm it up + add w24,w24,w3 + lsr x4,x3,#32 + ldr x5,[x1,#-56] + bic w25,w23,w21 + and w26,w22,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + orr w25,w25,w26 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + add w23,w23,w4 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x5,x5,#32 +#else + rev32 x5,x5 +#endif + bic w25,w22,w20 + and w26,w21,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + orr w25,w25,w26 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + add w22,w22,w5 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + lsr x6,x5,#32 + ldr x7,[x1,#-48] + bic w25,w21,w24 + and w26,w20,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + orr w25,w25,w26 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + add w21,w21,w6 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x7,x7,#32 +#else + rev32 x7,x7 +#endif + bic w25,w20,w23 + and w26,w24,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + orr w25,w25,w26 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + add w20,w20,w7 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + lsr x8,x7,#32 + ldr x9,[x1,#-40] + bic w25,w24,w22 + and w26,w23,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + orr w25,w25,w26 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + add w24,w24,w8 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x9,x9,#32 +#else + rev32 x9,x9 +#endif + bic w25,w23,w21 + and w26,w22,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + orr w25,w25,w26 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + add w23,w23,w9 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + lsr x10,x9,#32 + ldr x11,[x1,#-32] + bic w25,w22,w20 + and w26,w21,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + orr w25,w25,w26 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + add w22,w22,w10 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x11,x11,#32 +#else + rev32 x11,x11 +#endif + bic w25,w21,w24 + and w26,w20,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + orr w25,w25,w26 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + add w21,w21,w11 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + lsr x12,x11,#32 + ldr x13,[x1,#-24] + bic w25,w20,w23 + and w26,w24,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + orr w25,w25,w26 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + add w20,w20,w12 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x13,x13,#32 +#else + rev32 x13,x13 +#endif + bic w25,w24,w22 + and w26,w23,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + orr w25,w25,w26 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + add w24,w24,w13 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + lsr x14,x13,#32 + ldr x15,[x1,#-16] + bic w25,w23,w21 + and w26,w22,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + orr w25,w25,w26 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + add w23,w23,w14 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x15,x15,#32 +#else + rev32 x15,x15 +#endif + bic w25,w22,w20 + and w26,w21,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + orr w25,w25,w26 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + add w22,w22,w15 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + lsr x16,x15,#32 + ldr x17,[x1,#-8] + bic w25,w21,w24 + and w26,w20,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + orr w25,w25,w26 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + add w21,w21,w16 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x17,x17,#32 +#else + rev32 x17,x17 +#endif + bic w25,w20,w23 + and w26,w24,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + orr w25,w25,w26 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + add w20,w20,w17 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + lsr x19,x17,#32 + eor w3,w3,w5 + bic w25,w24,w22 + and w26,w23,w22 + ror w27,w21,#27 + eor w3,w3,w11 + add w24,w24,w28 // future e+=K + orr w25,w25,w26 + add w20,w20,w27 // e+=rot(a,5) + eor w3,w3,w16 + ror w22,w22,#2 + add w24,w24,w19 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w3,w3,#31 + eor w4,w4,w6 + bic w25,w23,w21 + and w26,w22,w21 + ror w27,w20,#27 + eor w4,w4,w12 + add w23,w23,w28 // future e+=K + orr w25,w25,w26 + add w24,w24,w27 // e+=rot(a,5) + eor w4,w4,w17 + ror w21,w21,#2 + add w23,w23,w3 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w4,w4,#31 + eor w5,w5,w7 + bic w25,w22,w20 + and w26,w21,w20 + ror w27,w24,#27 + eor w5,w5,w13 + add w22,w22,w28 // future e+=K + orr w25,w25,w26 + add w23,w23,w27 // e+=rot(a,5) + eor w5,w5,w19 + ror w20,w20,#2 + add w22,w22,w4 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w5,w5,#31 + eor w6,w6,w8 + bic w25,w21,w24 + and w26,w20,w24 + ror w27,w23,#27 + eor w6,w6,w14 + add w21,w21,w28 // future e+=K + orr w25,w25,w26 + add w22,w22,w27 // e+=rot(a,5) + eor w6,w6,w3 + ror w24,w24,#2 + add w21,w21,w5 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w6,w6,#31 + eor w7,w7,w9 + bic w25,w20,w23 + and w26,w24,w23 + ror w27,w22,#27 + eor w7,w7,w15 + add w20,w20,w28 // future e+=K + orr w25,w25,w26 + add w21,w21,w27 // e+=rot(a,5) + eor w7,w7,w4 + ror w23,w23,#2 + add w20,w20,w6 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w7,w7,#31 + movz w28,#0xeba1 + movk w28,#0x6ed9,lsl#16 + eor w8,w8,w10 + bic w25,w24,w22 + and w26,w23,w22 + ror w27,w21,#27 + eor w8,w8,w16 + add w24,w24,w28 // future e+=K + orr w25,w25,w26 + add w20,w20,w27 // e+=rot(a,5) + eor w8,w8,w5 + ror w22,w22,#2 + add w24,w24,w7 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w8,w8,#31 + eor w9,w9,w11 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w9,w9,w17 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w9,w9,w6 + add w23,w23,w8 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w9,w9,#31 + eor w10,w10,w12 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w10,w10,w19 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w10,w10,w7 + add w22,w22,w9 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w10,w10,#31 + eor w11,w11,w13 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w11,w11,w3 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w11,w11,w8 + add w21,w21,w10 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w11,w11,#31 + eor w12,w12,w14 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w12,w12,w4 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w12,w12,w9 + add w20,w20,w11 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w12,w12,#31 + eor w13,w13,w15 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w13,w13,w5 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w13,w13,w10 + add w24,w24,w12 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w13,w13,#31 + eor w14,w14,w16 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w14,w14,w6 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w14,w14,w11 + add w23,w23,w13 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w14,w14,#31 + eor w15,w15,w17 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w15,w15,w7 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w15,w15,w12 + add w22,w22,w14 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w15,w15,#31 + eor w16,w16,w19 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w16,w16,w8 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w16,w16,w13 + add w21,w21,w15 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w16,w16,#31 + eor w17,w17,w3 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w17,w17,w9 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w17,w17,w14 + add w20,w20,w16 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w17,w17,#31 + eor w19,w19,w4 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w19,w19,w10 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w19,w19,w15 + add w24,w24,w17 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w19,w19,#31 + eor w3,w3,w5 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w3,w3,w11 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w3,w3,w16 + add w23,w23,w19 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w3,w3,#31 + eor w4,w4,w6 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w4,w4,w12 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w4,w4,w17 + add w22,w22,w3 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w4,w4,#31 + eor w5,w5,w7 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w5,w5,w13 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w5,w5,w19 + add w21,w21,w4 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w5,w5,#31 + eor w6,w6,w8 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w6,w6,w14 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w6,w6,w3 + add w20,w20,w5 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w6,w6,#31 + eor w7,w7,w9 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w7,w7,w15 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w7,w7,w4 + add w24,w24,w6 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w7,w7,#31 + eor w8,w8,w10 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w8,w8,w16 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w8,w8,w5 + add w23,w23,w7 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w8,w8,#31 + eor w9,w9,w11 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w9,w9,w17 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w9,w9,w6 + add w22,w22,w8 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w9,w9,#31 + eor w10,w10,w12 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w10,w10,w19 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w10,w10,w7 + add w21,w21,w9 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w10,w10,#31 + eor w11,w11,w13 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w11,w11,w3 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w11,w11,w8 + add w20,w20,w10 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w11,w11,#31 + movz w28,#0xbcdc + movk w28,#0x8f1b,lsl#16 + eor w12,w12,w14 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w12,w12,w4 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w12,w12,w9 + add w24,w24,w11 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w12,w12,#31 + orr w25,w21,w22 + and w26,w21,w22 + eor w13,w13,w15 + ror w27,w20,#27 + and w25,w25,w23 + add w23,w23,w28 // future e+=K + eor w13,w13,w5 + add w24,w24,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w21,w21,#2 + eor w13,w13,w10 + add w23,w23,w12 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w13,w13,#31 + orr w25,w20,w21 + and w26,w20,w21 + eor w14,w14,w16 + ror w27,w24,#27 + and w25,w25,w22 + add w22,w22,w28 // future e+=K + eor w14,w14,w6 + add w23,w23,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w20,w20,#2 + eor w14,w14,w11 + add w22,w22,w13 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w14,w14,#31 + orr w25,w24,w20 + and w26,w24,w20 + eor w15,w15,w17 + ror w27,w23,#27 + and w25,w25,w21 + add w21,w21,w28 // future e+=K + eor w15,w15,w7 + add w22,w22,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w24,w24,#2 + eor w15,w15,w12 + add w21,w21,w14 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w15,w15,#31 + orr w25,w23,w24 + and w26,w23,w24 + eor w16,w16,w19 + ror w27,w22,#27 + and w25,w25,w20 + add w20,w20,w28 // future e+=K + eor w16,w16,w8 + add w21,w21,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w23,w23,#2 + eor w16,w16,w13 + add w20,w20,w15 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w16,w16,#31 + orr w25,w22,w23 + and w26,w22,w23 + eor w17,w17,w3 + ror w27,w21,#27 + and w25,w25,w24 + add w24,w24,w28 // future e+=K + eor w17,w17,w9 + add w20,w20,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w22,w22,#2 + eor w17,w17,w14 + add w24,w24,w16 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w17,w17,#31 + orr w25,w21,w22 + and w26,w21,w22 + eor w19,w19,w4 + ror w27,w20,#27 + and w25,w25,w23 + add w23,w23,w28 // future e+=K + eor w19,w19,w10 + add w24,w24,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w21,w21,#2 + eor w19,w19,w15 + add w23,w23,w17 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w19,w19,#31 + orr w25,w20,w21 + and w26,w20,w21 + eor w3,w3,w5 + ror w27,w24,#27 + and w25,w25,w22 + add w22,w22,w28 // future e+=K + eor w3,w3,w11 + add w23,w23,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w20,w20,#2 + eor w3,w3,w16 + add w22,w22,w19 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w3,w3,#31 + orr w25,w24,w20 + and w26,w24,w20 + eor w4,w4,w6 + ror w27,w23,#27 + and w25,w25,w21 + add w21,w21,w28 // future e+=K + eor w4,w4,w12 + add w22,w22,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w24,w24,#2 + eor w4,w4,w17 + add w21,w21,w3 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w4,w4,#31 + orr w25,w23,w24 + and w26,w23,w24 + eor w5,w5,w7 + ror w27,w22,#27 + and w25,w25,w20 + add w20,w20,w28 // future e+=K + eor w5,w5,w13 + add w21,w21,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w23,w23,#2 + eor w5,w5,w19 + add w20,w20,w4 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w5,w5,#31 + orr w25,w22,w23 + and w26,w22,w23 + eor w6,w6,w8 + ror w27,w21,#27 + and w25,w25,w24 + add w24,w24,w28 // future e+=K + eor w6,w6,w14 + add w20,w20,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w22,w22,#2 + eor w6,w6,w3 + add w24,w24,w5 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w6,w6,#31 + orr w25,w21,w22 + and w26,w21,w22 + eor w7,w7,w9 + ror w27,w20,#27 + and w25,w25,w23 + add w23,w23,w28 // future e+=K + eor w7,w7,w15 + add w24,w24,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w21,w21,#2 + eor w7,w7,w4 + add w23,w23,w6 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w7,w7,#31 + orr w25,w20,w21 + and w26,w20,w21 + eor w8,w8,w10 + ror w27,w24,#27 + and w25,w25,w22 + add w22,w22,w28 // future e+=K + eor w8,w8,w16 + add w23,w23,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w20,w20,#2 + eor w8,w8,w5 + add w22,w22,w7 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w8,w8,#31 + orr w25,w24,w20 + and w26,w24,w20 + eor w9,w9,w11 + ror w27,w23,#27 + and w25,w25,w21 + add w21,w21,w28 // future e+=K + eor w9,w9,w17 + add w22,w22,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w24,w24,#2 + eor w9,w9,w6 + add w21,w21,w8 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w9,w9,#31 + orr w25,w23,w24 + and w26,w23,w24 + eor w10,w10,w12 + ror w27,w22,#27 + and w25,w25,w20 + add w20,w20,w28 // future e+=K + eor w10,w10,w19 + add w21,w21,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w23,w23,#2 + eor w10,w10,w7 + add w20,w20,w9 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w10,w10,#31 + orr w25,w22,w23 + and w26,w22,w23 + eor w11,w11,w13 + ror w27,w21,#27 + and w25,w25,w24 + add w24,w24,w28 // future e+=K + eor w11,w11,w3 + add w20,w20,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w22,w22,#2 + eor w11,w11,w8 + add w24,w24,w10 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w11,w11,#31 + orr w25,w21,w22 + and w26,w21,w22 + eor w12,w12,w14 + ror w27,w20,#27 + and w25,w25,w23 + add w23,w23,w28 // future e+=K + eor w12,w12,w4 + add w24,w24,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w21,w21,#2 + eor w12,w12,w9 + add w23,w23,w11 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w12,w12,#31 + orr w25,w20,w21 + and w26,w20,w21 + eor w13,w13,w15 + ror w27,w24,#27 + and w25,w25,w22 + add w22,w22,w28 // future e+=K + eor w13,w13,w5 + add w23,w23,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w20,w20,#2 + eor w13,w13,w10 + add w22,w22,w12 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w13,w13,#31 + orr w25,w24,w20 + and w26,w24,w20 + eor w14,w14,w16 + ror w27,w23,#27 + and w25,w25,w21 + add w21,w21,w28 // future e+=K + eor w14,w14,w6 + add w22,w22,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w24,w24,#2 + eor w14,w14,w11 + add w21,w21,w13 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w14,w14,#31 + orr w25,w23,w24 + and w26,w23,w24 + eor w15,w15,w17 + ror w27,w22,#27 + and w25,w25,w20 + add w20,w20,w28 // future e+=K + eor w15,w15,w7 + add w21,w21,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w23,w23,#2 + eor w15,w15,w12 + add w20,w20,w14 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w15,w15,#31 + movz w28,#0xc1d6 + movk w28,#0xca62,lsl#16 + orr w25,w22,w23 + and w26,w22,w23 + eor w16,w16,w19 + ror w27,w21,#27 + and w25,w25,w24 + add w24,w24,w28 // future e+=K + eor w16,w16,w8 + add w20,w20,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w22,w22,#2 + eor w16,w16,w13 + add w24,w24,w15 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w16,w16,#31 + eor w17,w17,w3 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w17,w17,w9 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w17,w17,w14 + add w23,w23,w16 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w17,w17,#31 + eor w19,w19,w4 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w19,w19,w10 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w19,w19,w15 + add w22,w22,w17 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w19,w19,#31 + eor w3,w3,w5 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w3,w3,w11 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w3,w3,w16 + add w21,w21,w19 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w3,w3,#31 + eor w4,w4,w6 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w4,w4,w12 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w4,w4,w17 + add w20,w20,w3 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w4,w4,#31 + eor w5,w5,w7 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w5,w5,w13 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w5,w5,w19 + add w24,w24,w4 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w5,w5,#31 + eor w6,w6,w8 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w6,w6,w14 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w6,w6,w3 + add w23,w23,w5 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w6,w6,#31 + eor w7,w7,w9 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w7,w7,w15 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w7,w7,w4 + add w22,w22,w6 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w7,w7,#31 + eor w8,w8,w10 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w8,w8,w16 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w8,w8,w5 + add w21,w21,w7 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w8,w8,#31 + eor w9,w9,w11 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w9,w9,w17 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w9,w9,w6 + add w20,w20,w8 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w9,w9,#31 + eor w10,w10,w12 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w10,w10,w19 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w10,w10,w7 + add w24,w24,w9 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w10,w10,#31 + eor w11,w11,w13 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w11,w11,w3 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w11,w11,w8 + add w23,w23,w10 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w11,w11,#31 + eor w12,w12,w14 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w12,w12,w4 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w12,w12,w9 + add w22,w22,w11 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w12,w12,#31 + eor w13,w13,w15 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w13,w13,w5 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w13,w13,w10 + add w21,w21,w12 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w13,w13,#31 + eor w14,w14,w16 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w14,w14,w6 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w14,w14,w11 + add w20,w20,w13 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w14,w14,#31 + eor w15,w15,w17 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w15,w15,w7 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w15,w15,w12 + add w24,w24,w14 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w15,w15,#31 + eor w16,w16,w19 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w16,w16,w8 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w16,w16,w13 + add w23,w23,w15 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w16,w16,#31 + eor w17,w17,w3 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w17,w17,w9 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w17,w17,w14 + add w22,w22,w16 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w17,w17,#31 + eor w19,w19,w4 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w19,w19,w10 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w19,w19,w15 + add w21,w21,w17 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w19,w19,#31 + ldp w4,w5,[x0] + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + add w20,w20,w19 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ldp w6,w7,[x0,#8] + eor w25,w24,w22 + ror w27,w21,#27 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + ldr w8,[x0,#16] + add w20,w20,w25 // e+=F(b,c,d) + add w21,w21,w5 + add w22,w22,w6 + add w20,w20,w4 + add w23,w23,w7 + add w24,w24,w8 + stp w20,w21,[x0] + stp w22,w23,[x0,#8] + str w24,[x0,#16] + cbnz x2,.Loop + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldp x25,x26,[sp,#64] + ldp x27,x28,[sp,#80] + ldr x29,[sp],#96 + ret +.size sha1_block_data_order,.-sha1_block_data_order +.type sha1_block_armv8,%function +.align 6 +sha1_block_armv8: +.Lv8_entry: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + adr x4,.Lconst + eor v1.16b,v1.16b,v1.16b + ld1 {v0.4s},[x0],#16 + ld1 {v1.s}[0],[x0] + sub x0,x0,#16 + ld1 {v16.4s,v17.4s,v18.4s,v19.4s},[x4] + +.Loop_hw: + ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64 + sub x2,x2,#1 + rev32 v4.16b,v4.16b + rev32 v5.16b,v5.16b + + add v20.4s,v16.4s,v4.4s + rev32 v6.16b,v6.16b + orr v22.16b,v0.16b,v0.16b // offload + + add v21.4s,v16.4s,v5.4s + rev32 v7.16b,v7.16b +.inst 0x5e280803 //sha1h v3.16b,v0.16b +.inst 0x5e140020 //sha1c v0.16b,v1.16b,v20.4s // 0 + add v20.4s,v16.4s,v6.4s +.inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b +.inst 0x5e280802 //sha1h v2.16b,v0.16b // 1 +.inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s + add v21.4s,v16.4s,v7.4s +.inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b +.inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b +.inst 0x5e280803 //sha1h v3.16b,v0.16b // 2 +.inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s + add v20.4s,v16.4s,v4.4s +.inst 0x5e281885 //sha1su1 v5.16b,v4.16b +.inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b +.inst 0x5e280802 //sha1h v2.16b,v0.16b // 3 +.inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s + add v21.4s,v17.4s,v5.4s +.inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b +.inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b +.inst 0x5e280803 //sha1h v3.16b,v0.16b // 4 +.inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s + add v20.4s,v17.4s,v6.4s +.inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b +.inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b +.inst 0x5e280802 //sha1h v2.16b,v0.16b // 5 +.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s + add v21.4s,v17.4s,v7.4s +.inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b +.inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b +.inst 0x5e280803 //sha1h v3.16b,v0.16b // 6 +.inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s + add v20.4s,v17.4s,v4.4s +.inst 0x5e281885 //sha1su1 v5.16b,v4.16b +.inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b +.inst 0x5e280802 //sha1h v2.16b,v0.16b // 7 +.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s + add v21.4s,v17.4s,v5.4s +.inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b +.inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b +.inst 0x5e280803 //sha1h v3.16b,v0.16b // 8 +.inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s + add v20.4s,v18.4s,v6.4s +.inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b +.inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b +.inst 0x5e280802 //sha1h v2.16b,v0.16b // 9 +.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s + add v21.4s,v18.4s,v7.4s +.inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b +.inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b +.inst 0x5e280803 //sha1h v3.16b,v0.16b // 10 +.inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s + add v20.4s,v18.4s,v4.4s +.inst 0x5e281885 //sha1su1 v5.16b,v4.16b +.inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b +.inst 0x5e280802 //sha1h v2.16b,v0.16b // 11 +.inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s + add v21.4s,v18.4s,v5.4s +.inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b +.inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b +.inst 0x5e280803 //sha1h v3.16b,v0.16b // 12 +.inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s + add v20.4s,v18.4s,v6.4s +.inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b +.inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b +.inst 0x5e280802 //sha1h v2.16b,v0.16b // 13 +.inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s + add v21.4s,v19.4s,v7.4s +.inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b +.inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b +.inst 0x5e280803 //sha1h v3.16b,v0.16b // 14 +.inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s + add v20.4s,v19.4s,v4.4s +.inst 0x5e281885 //sha1su1 v5.16b,v4.16b +.inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b +.inst 0x5e280802 //sha1h v2.16b,v0.16b // 15 +.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s + add v21.4s,v19.4s,v5.4s +.inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b +.inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b +.inst 0x5e280803 //sha1h v3.16b,v0.16b // 16 +.inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s + add v20.4s,v19.4s,v6.4s +.inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b +.inst 0x5e280802 //sha1h v2.16b,v0.16b // 17 +.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s + add v21.4s,v19.4s,v7.4s + +.inst 0x5e280803 //sha1h v3.16b,v0.16b // 18 +.inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s + +.inst 0x5e280802 //sha1h v2.16b,v0.16b // 19 +.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s + + add v1.4s,v1.4s,v2.4s + add v0.4s,v0.4s,v22.4s + + cbnz x2,.Loop_hw + + st1 {v0.4s},[x0],#16 + st1 {v1.s}[0],[x0] + + ldr x29,[sp],#16 + ret +.size sha1_block_armv8,.-sha1_block_armv8 +.align 6 +.Lconst: +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 //K_00_19 +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 //K_20_39 +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc //K_40_59 +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 //K_60_79 +.LOPENSSL_armcap_P: +#ifdef __ILP32__ +.long OPENSSL_armcap_P-. +#else +.quad OPENSSL_armcap_P-. +#endif +.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 diff --git a/vere/ext/openssl/gen/linux-aarch64/crypto/sha/sha256-armv8.S b/vere/ext/openssl/gen/linux-aarch64/crypto/sha/sha256-armv8.S new file mode 100644 index 0000000..52ca2ef --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/crypto/sha/sha256-armv8.S @@ -0,0 +1,2063 @@ +// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. +// +// Licensed under the OpenSSL license (the "License"). You may not use +// this file except in compliance with the License. You can obtain a copy +// in the file LICENSE in the source distribution or at +// https://www.openssl.org/source/license.html + +// ==================================================================== +// Written by Andy Polyakov for the OpenSSL +// project. The module is, however, dual licensed under OpenSSL and +// CRYPTOGAMS licenses depending on where you obtain it. For further +// details see http://www.openssl.org/~appro/cryptogams/. +// +// Permission to use under GPLv2 terms is granted. +// ==================================================================== +// +// SHA256/512 for ARMv8. +// +// Performance in cycles per processed byte and improvement coefficient +// over code generated with "default" compiler: +// +// SHA256-hw SHA256(*) SHA512 +// Apple A7 1.97 10.5 (+33%) 6.73 (-1%(**)) +// Cortex-A53 2.38 15.5 (+115%) 10.0 (+150%(***)) +// Cortex-A57 2.31 11.6 (+86%) 7.51 (+260%(***)) +// Denver 2.01 10.5 (+26%) 6.70 (+8%) +// X-Gene 20.0 (+100%) 12.8 (+300%(***)) +// Mongoose 2.36 13.0 (+50%) 8.36 (+33%) +// Kryo 1.92 17.4 (+30%) 11.2 (+8%) +// +// (*) Software SHA256 results are of lesser relevance, presented +// mostly for informational purposes. +// (**) The result is a trade-off: it's possible to improve it by +// 10% (or by 1 cycle per round), but at the cost of 20% loss +// on Cortex-A53 (or by 4 cycles per round). +// (***) Super-impressive coefficients over gcc-generated code are +// indication of some compiler "pathology", most notably code +// generated with -mgeneral-regs-only is significantly faster +// and the gap is only 40-90%. +// +// October 2016. +// +// Originally it was reckoned that it makes no sense to implement NEON +// version of SHA256 for 64-bit processors. This is because performance +// improvement on most wide-spread Cortex-A5x processors was observed +// to be marginal, same on Cortex-A53 and ~10% on A57. But then it was +// observed that 32-bit NEON SHA256 performs significantly better than +// 64-bit scalar version on *some* of the more recent processors. As +// result 64-bit NEON version of SHA256 was added to provide best +// all-round performance. For example it executes ~30% faster on X-Gene +// and Mongoose. [For reference, NEON version of SHA512 is bound to +// deliver much less improvement, likely *negative* on Cortex-A5x. +// Which is why NEON support is limited to SHA256.] + +#ifndef __KERNEL__ +# include "arm_arch.h" +#endif + +.text + + +.hidden OPENSSL_armcap_P +.globl sha256_block_data_order +.type sha256_block_data_order,%function +.align 6 +sha256_block_data_order: +#ifndef __KERNEL__ +# ifdef __ILP32__ + ldrsw x16,.LOPENSSL_armcap_P +# else + ldr x16,.LOPENSSL_armcap_P +# endif + adr x17,.LOPENSSL_armcap_P + add x16,x16,x17 + ldr w16,[x16] + tst w16,#ARMV8_SHA256 + b.ne .Lv8_entry + tst w16,#ARMV7_NEON + b.ne .Lneon_entry +#endif +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#4*4 + + ldp w20,w21,[x0] // load context + ldp w22,w23,[x0,#2*4] + ldp w24,w25,[x0,#4*4] + add x2,x1,x2,lsl#6 // end of input + ldp w26,w27,[x0,#6*4] + adr x30,.LK256 + stp x0,x2,[x29,#96] + +.Loop: + ldp w3,w4,[x1],#2*4 + ldr w19,[x30],#4 // *K++ + eor w28,w21,w22 // magic seed + str x1,[x29,#112] +#ifndef __AARCH64EB__ + rev w3,w3 // 0 +#endif + ror w16,w24,#6 + add w27,w27,w19 // h+=K[i] + eor w6,w24,w24,ror#14 + and w17,w25,w24 + bic w19,w26,w24 + add w27,w27,w3 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w20,w21 // a^b, b^c in next round + eor w16,w16,w6,ror#11 // Sigma1(e) + ror w6,w20,#2 + add w27,w27,w17 // h+=Ch(e,f,g) + eor w17,w20,w20,ror#9 + add w27,w27,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w23,w23,w27 // d+=h + eor w28,w28,w21 // Maj(a,b,c) + eor w17,w6,w17,ror#13 // Sigma0(a) + add w27,w27,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w27,w27,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w4,w4 // 1 +#endif + ldp w5,w6,[x1],#2*4 + add w27,w27,w17 // h+=Sigma0(a) + ror w16,w23,#6 + add w26,w26,w28 // h+=K[i] + eor w7,w23,w23,ror#14 + and w17,w24,w23 + bic w28,w25,w23 + add w26,w26,w4 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w27,w20 // a^b, b^c in next round + eor w16,w16,w7,ror#11 // Sigma1(e) + ror w7,w27,#2 + add w26,w26,w17 // h+=Ch(e,f,g) + eor w17,w27,w27,ror#9 + add w26,w26,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w22,w22,w26 // d+=h + eor w19,w19,w20 // Maj(a,b,c) + eor w17,w7,w17,ror#13 // Sigma0(a) + add w26,w26,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w26,w26,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w5,w5 // 2 +#endif + add w26,w26,w17 // h+=Sigma0(a) + ror w16,w22,#6 + add w25,w25,w19 // h+=K[i] + eor w8,w22,w22,ror#14 + and w17,w23,w22 + bic w19,w24,w22 + add w25,w25,w5 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w26,w27 // a^b, b^c in next round + eor w16,w16,w8,ror#11 // Sigma1(e) + ror w8,w26,#2 + add w25,w25,w17 // h+=Ch(e,f,g) + eor w17,w26,w26,ror#9 + add w25,w25,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w21,w21,w25 // d+=h + eor w28,w28,w27 // Maj(a,b,c) + eor w17,w8,w17,ror#13 // Sigma0(a) + add w25,w25,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w25,w25,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w6,w6 // 3 +#endif + ldp w7,w8,[x1],#2*4 + add w25,w25,w17 // h+=Sigma0(a) + ror w16,w21,#6 + add w24,w24,w28 // h+=K[i] + eor w9,w21,w21,ror#14 + and w17,w22,w21 + bic w28,w23,w21 + add w24,w24,w6 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w25,w26 // a^b, b^c in next round + eor w16,w16,w9,ror#11 // Sigma1(e) + ror w9,w25,#2 + add w24,w24,w17 // h+=Ch(e,f,g) + eor w17,w25,w25,ror#9 + add w24,w24,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w20,w20,w24 // d+=h + eor w19,w19,w26 // Maj(a,b,c) + eor w17,w9,w17,ror#13 // Sigma0(a) + add w24,w24,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w24,w24,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w7,w7 // 4 +#endif + add w24,w24,w17 // h+=Sigma0(a) + ror w16,w20,#6 + add w23,w23,w19 // h+=K[i] + eor w10,w20,w20,ror#14 + and w17,w21,w20 + bic w19,w22,w20 + add w23,w23,w7 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w24,w25 // a^b, b^c in next round + eor w16,w16,w10,ror#11 // Sigma1(e) + ror w10,w24,#2 + add w23,w23,w17 // h+=Ch(e,f,g) + eor w17,w24,w24,ror#9 + add w23,w23,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w27,w27,w23 // d+=h + eor w28,w28,w25 // Maj(a,b,c) + eor w17,w10,w17,ror#13 // Sigma0(a) + add w23,w23,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w23,w23,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w8,w8 // 5 +#endif + ldp w9,w10,[x1],#2*4 + add w23,w23,w17 // h+=Sigma0(a) + ror w16,w27,#6 + add w22,w22,w28 // h+=K[i] + eor w11,w27,w27,ror#14 + and w17,w20,w27 + bic w28,w21,w27 + add w22,w22,w8 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w23,w24 // a^b, b^c in next round + eor w16,w16,w11,ror#11 // Sigma1(e) + ror w11,w23,#2 + add w22,w22,w17 // h+=Ch(e,f,g) + eor w17,w23,w23,ror#9 + add w22,w22,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w26,w26,w22 // d+=h + eor w19,w19,w24 // Maj(a,b,c) + eor w17,w11,w17,ror#13 // Sigma0(a) + add w22,w22,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w22,w22,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w9,w9 // 6 +#endif + add w22,w22,w17 // h+=Sigma0(a) + ror w16,w26,#6 + add w21,w21,w19 // h+=K[i] + eor w12,w26,w26,ror#14 + and w17,w27,w26 + bic w19,w20,w26 + add w21,w21,w9 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w22,w23 // a^b, b^c in next round + eor w16,w16,w12,ror#11 // Sigma1(e) + ror w12,w22,#2 + add w21,w21,w17 // h+=Ch(e,f,g) + eor w17,w22,w22,ror#9 + add w21,w21,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w25,w25,w21 // d+=h + eor w28,w28,w23 // Maj(a,b,c) + eor w17,w12,w17,ror#13 // Sigma0(a) + add w21,w21,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w21,w21,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w10,w10 // 7 +#endif + ldp w11,w12,[x1],#2*4 + add w21,w21,w17 // h+=Sigma0(a) + ror w16,w25,#6 + add w20,w20,w28 // h+=K[i] + eor w13,w25,w25,ror#14 + and w17,w26,w25 + bic w28,w27,w25 + add w20,w20,w10 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w21,w22 // a^b, b^c in next round + eor w16,w16,w13,ror#11 // Sigma1(e) + ror w13,w21,#2 + add w20,w20,w17 // h+=Ch(e,f,g) + eor w17,w21,w21,ror#9 + add w20,w20,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w24,w24,w20 // d+=h + eor w19,w19,w22 // Maj(a,b,c) + eor w17,w13,w17,ror#13 // Sigma0(a) + add w20,w20,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w20,w20,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w11,w11 // 8 +#endif + add w20,w20,w17 // h+=Sigma0(a) + ror w16,w24,#6 + add w27,w27,w19 // h+=K[i] + eor w14,w24,w24,ror#14 + and w17,w25,w24 + bic w19,w26,w24 + add w27,w27,w11 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w20,w21 // a^b, b^c in next round + eor w16,w16,w14,ror#11 // Sigma1(e) + ror w14,w20,#2 + add w27,w27,w17 // h+=Ch(e,f,g) + eor w17,w20,w20,ror#9 + add w27,w27,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w23,w23,w27 // d+=h + eor w28,w28,w21 // Maj(a,b,c) + eor w17,w14,w17,ror#13 // Sigma0(a) + add w27,w27,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w27,w27,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w12,w12 // 9 +#endif + ldp w13,w14,[x1],#2*4 + add w27,w27,w17 // h+=Sigma0(a) + ror w16,w23,#6 + add w26,w26,w28 // h+=K[i] + eor w15,w23,w23,ror#14 + and w17,w24,w23 + bic w28,w25,w23 + add w26,w26,w12 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w27,w20 // a^b, b^c in next round + eor w16,w16,w15,ror#11 // Sigma1(e) + ror w15,w27,#2 + add w26,w26,w17 // h+=Ch(e,f,g) + eor w17,w27,w27,ror#9 + add w26,w26,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w22,w22,w26 // d+=h + eor w19,w19,w20 // Maj(a,b,c) + eor w17,w15,w17,ror#13 // Sigma0(a) + add w26,w26,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w26,w26,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w13,w13 // 10 +#endif + add w26,w26,w17 // h+=Sigma0(a) + ror w16,w22,#6 + add w25,w25,w19 // h+=K[i] + eor w0,w22,w22,ror#14 + and w17,w23,w22 + bic w19,w24,w22 + add w25,w25,w13 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w26,w27 // a^b, b^c in next round + eor w16,w16,w0,ror#11 // Sigma1(e) + ror w0,w26,#2 + add w25,w25,w17 // h+=Ch(e,f,g) + eor w17,w26,w26,ror#9 + add w25,w25,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w21,w21,w25 // d+=h + eor w28,w28,w27 // Maj(a,b,c) + eor w17,w0,w17,ror#13 // Sigma0(a) + add w25,w25,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w25,w25,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w14,w14 // 11 +#endif + ldp w15,w0,[x1],#2*4 + add w25,w25,w17 // h+=Sigma0(a) + str w6,[sp,#12] + ror w16,w21,#6 + add w24,w24,w28 // h+=K[i] + eor w6,w21,w21,ror#14 + and w17,w22,w21 + bic w28,w23,w21 + add w24,w24,w14 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w25,w26 // a^b, b^c in next round + eor w16,w16,w6,ror#11 // Sigma1(e) + ror w6,w25,#2 + add w24,w24,w17 // h+=Ch(e,f,g) + eor w17,w25,w25,ror#9 + add w24,w24,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w20,w20,w24 // d+=h + eor w19,w19,w26 // Maj(a,b,c) + eor w17,w6,w17,ror#13 // Sigma0(a) + add w24,w24,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w24,w24,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w15,w15 // 12 +#endif + add w24,w24,w17 // h+=Sigma0(a) + str w7,[sp,#0] + ror w16,w20,#6 + add w23,w23,w19 // h+=K[i] + eor w7,w20,w20,ror#14 + and w17,w21,w20 + bic w19,w22,w20 + add w23,w23,w15 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w24,w25 // a^b, b^c in next round + eor w16,w16,w7,ror#11 // Sigma1(e) + ror w7,w24,#2 + add w23,w23,w17 // h+=Ch(e,f,g) + eor w17,w24,w24,ror#9 + add w23,w23,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w27,w27,w23 // d+=h + eor w28,w28,w25 // Maj(a,b,c) + eor w17,w7,w17,ror#13 // Sigma0(a) + add w23,w23,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w23,w23,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w0,w0 // 13 +#endif + ldp w1,w2,[x1] + add w23,w23,w17 // h+=Sigma0(a) + str w8,[sp,#4] + ror w16,w27,#6 + add w22,w22,w28 // h+=K[i] + eor w8,w27,w27,ror#14 + and w17,w20,w27 + bic w28,w21,w27 + add w22,w22,w0 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w23,w24 // a^b, b^c in next round + eor w16,w16,w8,ror#11 // Sigma1(e) + ror w8,w23,#2 + add w22,w22,w17 // h+=Ch(e,f,g) + eor w17,w23,w23,ror#9 + add w22,w22,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w26,w26,w22 // d+=h + eor w19,w19,w24 // Maj(a,b,c) + eor w17,w8,w17,ror#13 // Sigma0(a) + add w22,w22,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w22,w22,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w1,w1 // 14 +#endif + ldr w6,[sp,#12] + add w22,w22,w17 // h+=Sigma0(a) + str w9,[sp,#8] + ror w16,w26,#6 + add w21,w21,w19 // h+=K[i] + eor w9,w26,w26,ror#14 + and w17,w27,w26 + bic w19,w20,w26 + add w21,w21,w1 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w22,w23 // a^b, b^c in next round + eor w16,w16,w9,ror#11 // Sigma1(e) + ror w9,w22,#2 + add w21,w21,w17 // h+=Ch(e,f,g) + eor w17,w22,w22,ror#9 + add w21,w21,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w25,w25,w21 // d+=h + eor w28,w28,w23 // Maj(a,b,c) + eor w17,w9,w17,ror#13 // Sigma0(a) + add w21,w21,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w21,w21,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w2,w2 // 15 +#endif + ldr w7,[sp,#0] + add w21,w21,w17 // h+=Sigma0(a) + str w10,[sp,#12] + ror w16,w25,#6 + add w20,w20,w28 // h+=K[i] + ror w9,w4,#7 + and w17,w26,w25 + ror w8,w1,#17 + bic w28,w27,w25 + ror w10,w21,#2 + add w20,w20,w2 // h+=X[i] + eor w16,w16,w25,ror#11 + eor w9,w9,w4,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w21,w22 // a^b, b^c in next round + eor w16,w16,w25,ror#25 // Sigma1(e) + eor w10,w10,w21,ror#13 + add w20,w20,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w8,w8,w1,ror#19 + eor w9,w9,w4,lsr#3 // sigma0(X[i+1]) + add w20,w20,w16 // h+=Sigma1(e) + eor w19,w19,w22 // Maj(a,b,c) + eor w17,w10,w21,ror#22 // Sigma0(a) + eor w8,w8,w1,lsr#10 // sigma1(X[i+14]) + add w3,w3,w12 + add w24,w24,w20 // d+=h + add w20,w20,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w3,w3,w9 + add w20,w20,w17 // h+=Sigma0(a) + add w3,w3,w8 +.Loop_16_xx: + ldr w8,[sp,#4] + str w11,[sp,#0] + ror w16,w24,#6 + add w27,w27,w19 // h+=K[i] + ror w10,w5,#7 + and w17,w25,w24 + ror w9,w2,#17 + bic w19,w26,w24 + ror w11,w20,#2 + add w27,w27,w3 // h+=X[i] + eor w16,w16,w24,ror#11 + eor w10,w10,w5,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w20,w21 // a^b, b^c in next round + eor w16,w16,w24,ror#25 // Sigma1(e) + eor w11,w11,w20,ror#13 + add w27,w27,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w9,w9,w2,ror#19 + eor w10,w10,w5,lsr#3 // sigma0(X[i+1]) + add w27,w27,w16 // h+=Sigma1(e) + eor w28,w28,w21 // Maj(a,b,c) + eor w17,w11,w20,ror#22 // Sigma0(a) + eor w9,w9,w2,lsr#10 // sigma1(X[i+14]) + add w4,w4,w13 + add w23,w23,w27 // d+=h + add w27,w27,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w4,w4,w10 + add w27,w27,w17 // h+=Sigma0(a) + add w4,w4,w9 + ldr w9,[sp,#8] + str w12,[sp,#4] + ror w16,w23,#6 + add w26,w26,w28 // h+=K[i] + ror w11,w6,#7 + and w17,w24,w23 + ror w10,w3,#17 + bic w28,w25,w23 + ror w12,w27,#2 + add w26,w26,w4 // h+=X[i] + eor w16,w16,w23,ror#11 + eor w11,w11,w6,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w27,w20 // a^b, b^c in next round + eor w16,w16,w23,ror#25 // Sigma1(e) + eor w12,w12,w27,ror#13 + add w26,w26,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w10,w10,w3,ror#19 + eor w11,w11,w6,lsr#3 // sigma0(X[i+1]) + add w26,w26,w16 // h+=Sigma1(e) + eor w19,w19,w20 // Maj(a,b,c) + eor w17,w12,w27,ror#22 // Sigma0(a) + eor w10,w10,w3,lsr#10 // sigma1(X[i+14]) + add w5,w5,w14 + add w22,w22,w26 // d+=h + add w26,w26,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w5,w5,w11 + add w26,w26,w17 // h+=Sigma0(a) + add w5,w5,w10 + ldr w10,[sp,#12] + str w13,[sp,#8] + ror w16,w22,#6 + add w25,w25,w19 // h+=K[i] + ror w12,w7,#7 + and w17,w23,w22 + ror w11,w4,#17 + bic w19,w24,w22 + ror w13,w26,#2 + add w25,w25,w5 // h+=X[i] + eor w16,w16,w22,ror#11 + eor w12,w12,w7,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w26,w27 // a^b, b^c in next round + eor w16,w16,w22,ror#25 // Sigma1(e) + eor w13,w13,w26,ror#13 + add w25,w25,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w11,w11,w4,ror#19 + eor w12,w12,w7,lsr#3 // sigma0(X[i+1]) + add w25,w25,w16 // h+=Sigma1(e) + eor w28,w28,w27 // Maj(a,b,c) + eor w17,w13,w26,ror#22 // Sigma0(a) + eor w11,w11,w4,lsr#10 // sigma1(X[i+14]) + add w6,w6,w15 + add w21,w21,w25 // d+=h + add w25,w25,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w6,w6,w12 + add w25,w25,w17 // h+=Sigma0(a) + add w6,w6,w11 + ldr w11,[sp,#0] + str w14,[sp,#12] + ror w16,w21,#6 + add w24,w24,w28 // h+=K[i] + ror w13,w8,#7 + and w17,w22,w21 + ror w12,w5,#17 + bic w28,w23,w21 + ror w14,w25,#2 + add w24,w24,w6 // h+=X[i] + eor w16,w16,w21,ror#11 + eor w13,w13,w8,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w25,w26 // a^b, b^c in next round + eor w16,w16,w21,ror#25 // Sigma1(e) + eor w14,w14,w25,ror#13 + add w24,w24,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w12,w12,w5,ror#19 + eor w13,w13,w8,lsr#3 // sigma0(X[i+1]) + add w24,w24,w16 // h+=Sigma1(e) + eor w19,w19,w26 // Maj(a,b,c) + eor w17,w14,w25,ror#22 // Sigma0(a) + eor w12,w12,w5,lsr#10 // sigma1(X[i+14]) + add w7,w7,w0 + add w20,w20,w24 // d+=h + add w24,w24,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w7,w7,w13 + add w24,w24,w17 // h+=Sigma0(a) + add w7,w7,w12 + ldr w12,[sp,#4] + str w15,[sp,#0] + ror w16,w20,#6 + add w23,w23,w19 // h+=K[i] + ror w14,w9,#7 + and w17,w21,w20 + ror w13,w6,#17 + bic w19,w22,w20 + ror w15,w24,#2 + add w23,w23,w7 // h+=X[i] + eor w16,w16,w20,ror#11 + eor w14,w14,w9,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w24,w25 // a^b, b^c in next round + eor w16,w16,w20,ror#25 // Sigma1(e) + eor w15,w15,w24,ror#13 + add w23,w23,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w13,w13,w6,ror#19 + eor w14,w14,w9,lsr#3 // sigma0(X[i+1]) + add w23,w23,w16 // h+=Sigma1(e) + eor w28,w28,w25 // Maj(a,b,c) + eor w17,w15,w24,ror#22 // Sigma0(a) + eor w13,w13,w6,lsr#10 // sigma1(X[i+14]) + add w8,w8,w1 + add w27,w27,w23 // d+=h + add w23,w23,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w8,w8,w14 + add w23,w23,w17 // h+=Sigma0(a) + add w8,w8,w13 + ldr w13,[sp,#8] + str w0,[sp,#4] + ror w16,w27,#6 + add w22,w22,w28 // h+=K[i] + ror w15,w10,#7 + and w17,w20,w27 + ror w14,w7,#17 + bic w28,w21,w27 + ror w0,w23,#2 + add w22,w22,w8 // h+=X[i] + eor w16,w16,w27,ror#11 + eor w15,w15,w10,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w23,w24 // a^b, b^c in next round + eor w16,w16,w27,ror#25 // Sigma1(e) + eor w0,w0,w23,ror#13 + add w22,w22,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w14,w14,w7,ror#19 + eor w15,w15,w10,lsr#3 // sigma0(X[i+1]) + add w22,w22,w16 // h+=Sigma1(e) + eor w19,w19,w24 // Maj(a,b,c) + eor w17,w0,w23,ror#22 // Sigma0(a) + eor w14,w14,w7,lsr#10 // sigma1(X[i+14]) + add w9,w9,w2 + add w26,w26,w22 // d+=h + add w22,w22,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w9,w9,w15 + add w22,w22,w17 // h+=Sigma0(a) + add w9,w9,w14 + ldr w14,[sp,#12] + str w1,[sp,#8] + ror w16,w26,#6 + add w21,w21,w19 // h+=K[i] + ror w0,w11,#7 + and w17,w27,w26 + ror w15,w8,#17 + bic w19,w20,w26 + ror w1,w22,#2 + add w21,w21,w9 // h+=X[i] + eor w16,w16,w26,ror#11 + eor w0,w0,w11,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w22,w23 // a^b, b^c in next round + eor w16,w16,w26,ror#25 // Sigma1(e) + eor w1,w1,w22,ror#13 + add w21,w21,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w15,w15,w8,ror#19 + eor w0,w0,w11,lsr#3 // sigma0(X[i+1]) + add w21,w21,w16 // h+=Sigma1(e) + eor w28,w28,w23 // Maj(a,b,c) + eor w17,w1,w22,ror#22 // Sigma0(a) + eor w15,w15,w8,lsr#10 // sigma1(X[i+14]) + add w10,w10,w3 + add w25,w25,w21 // d+=h + add w21,w21,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w10,w10,w0 + add w21,w21,w17 // h+=Sigma0(a) + add w10,w10,w15 + ldr w15,[sp,#0] + str w2,[sp,#12] + ror w16,w25,#6 + add w20,w20,w28 // h+=K[i] + ror w1,w12,#7 + and w17,w26,w25 + ror w0,w9,#17 + bic w28,w27,w25 + ror w2,w21,#2 + add w20,w20,w10 // h+=X[i] + eor w16,w16,w25,ror#11 + eor w1,w1,w12,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w21,w22 // a^b, b^c in next round + eor w16,w16,w25,ror#25 // Sigma1(e) + eor w2,w2,w21,ror#13 + add w20,w20,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w0,w0,w9,ror#19 + eor w1,w1,w12,lsr#3 // sigma0(X[i+1]) + add w20,w20,w16 // h+=Sigma1(e) + eor w19,w19,w22 // Maj(a,b,c) + eor w17,w2,w21,ror#22 // Sigma0(a) + eor w0,w0,w9,lsr#10 // sigma1(X[i+14]) + add w11,w11,w4 + add w24,w24,w20 // d+=h + add w20,w20,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w11,w11,w1 + add w20,w20,w17 // h+=Sigma0(a) + add w11,w11,w0 + ldr w0,[sp,#4] + str w3,[sp,#0] + ror w16,w24,#6 + add w27,w27,w19 // h+=K[i] + ror w2,w13,#7 + and w17,w25,w24 + ror w1,w10,#17 + bic w19,w26,w24 + ror w3,w20,#2 + add w27,w27,w11 // h+=X[i] + eor w16,w16,w24,ror#11 + eor w2,w2,w13,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w20,w21 // a^b, b^c in next round + eor w16,w16,w24,ror#25 // Sigma1(e) + eor w3,w3,w20,ror#13 + add w27,w27,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w1,w1,w10,ror#19 + eor w2,w2,w13,lsr#3 // sigma0(X[i+1]) + add w27,w27,w16 // h+=Sigma1(e) + eor w28,w28,w21 // Maj(a,b,c) + eor w17,w3,w20,ror#22 // Sigma0(a) + eor w1,w1,w10,lsr#10 // sigma1(X[i+14]) + add w12,w12,w5 + add w23,w23,w27 // d+=h + add w27,w27,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w12,w12,w2 + add w27,w27,w17 // h+=Sigma0(a) + add w12,w12,w1 + ldr w1,[sp,#8] + str w4,[sp,#4] + ror w16,w23,#6 + add w26,w26,w28 // h+=K[i] + ror w3,w14,#7 + and w17,w24,w23 + ror w2,w11,#17 + bic w28,w25,w23 + ror w4,w27,#2 + add w26,w26,w12 // h+=X[i] + eor w16,w16,w23,ror#11 + eor w3,w3,w14,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w27,w20 // a^b, b^c in next round + eor w16,w16,w23,ror#25 // Sigma1(e) + eor w4,w4,w27,ror#13 + add w26,w26,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w2,w2,w11,ror#19 + eor w3,w3,w14,lsr#3 // sigma0(X[i+1]) + add w26,w26,w16 // h+=Sigma1(e) + eor w19,w19,w20 // Maj(a,b,c) + eor w17,w4,w27,ror#22 // Sigma0(a) + eor w2,w2,w11,lsr#10 // sigma1(X[i+14]) + add w13,w13,w6 + add w22,w22,w26 // d+=h + add w26,w26,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w13,w13,w3 + add w26,w26,w17 // h+=Sigma0(a) + add w13,w13,w2 + ldr w2,[sp,#12] + str w5,[sp,#8] + ror w16,w22,#6 + add w25,w25,w19 // h+=K[i] + ror w4,w15,#7 + and w17,w23,w22 + ror w3,w12,#17 + bic w19,w24,w22 + ror w5,w26,#2 + add w25,w25,w13 // h+=X[i] + eor w16,w16,w22,ror#11 + eor w4,w4,w15,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w26,w27 // a^b, b^c in next round + eor w16,w16,w22,ror#25 // Sigma1(e) + eor w5,w5,w26,ror#13 + add w25,w25,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w3,w3,w12,ror#19 + eor w4,w4,w15,lsr#3 // sigma0(X[i+1]) + add w25,w25,w16 // h+=Sigma1(e) + eor w28,w28,w27 // Maj(a,b,c) + eor w17,w5,w26,ror#22 // Sigma0(a) + eor w3,w3,w12,lsr#10 // sigma1(X[i+14]) + add w14,w14,w7 + add w21,w21,w25 // d+=h + add w25,w25,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w14,w14,w4 + add w25,w25,w17 // h+=Sigma0(a) + add w14,w14,w3 + ldr w3,[sp,#0] + str w6,[sp,#12] + ror w16,w21,#6 + add w24,w24,w28 // h+=K[i] + ror w5,w0,#7 + and w17,w22,w21 + ror w4,w13,#17 + bic w28,w23,w21 + ror w6,w25,#2 + add w24,w24,w14 // h+=X[i] + eor w16,w16,w21,ror#11 + eor w5,w5,w0,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w25,w26 // a^b, b^c in next round + eor w16,w16,w21,ror#25 // Sigma1(e) + eor w6,w6,w25,ror#13 + add w24,w24,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w4,w4,w13,ror#19 + eor w5,w5,w0,lsr#3 // sigma0(X[i+1]) + add w24,w24,w16 // h+=Sigma1(e) + eor w19,w19,w26 // Maj(a,b,c) + eor w17,w6,w25,ror#22 // Sigma0(a) + eor w4,w4,w13,lsr#10 // sigma1(X[i+14]) + add w15,w15,w8 + add w20,w20,w24 // d+=h + add w24,w24,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w15,w15,w5 + add w24,w24,w17 // h+=Sigma0(a) + add w15,w15,w4 + ldr w4,[sp,#4] + str w7,[sp,#0] + ror w16,w20,#6 + add w23,w23,w19 // h+=K[i] + ror w6,w1,#7 + and w17,w21,w20 + ror w5,w14,#17 + bic w19,w22,w20 + ror w7,w24,#2 + add w23,w23,w15 // h+=X[i] + eor w16,w16,w20,ror#11 + eor w6,w6,w1,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w24,w25 // a^b, b^c in next round + eor w16,w16,w20,ror#25 // Sigma1(e) + eor w7,w7,w24,ror#13 + add w23,w23,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w5,w5,w14,ror#19 + eor w6,w6,w1,lsr#3 // sigma0(X[i+1]) + add w23,w23,w16 // h+=Sigma1(e) + eor w28,w28,w25 // Maj(a,b,c) + eor w17,w7,w24,ror#22 // Sigma0(a) + eor w5,w5,w14,lsr#10 // sigma1(X[i+14]) + add w0,w0,w9 + add w27,w27,w23 // d+=h + add w23,w23,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w0,w0,w6 + add w23,w23,w17 // h+=Sigma0(a) + add w0,w0,w5 + ldr w5,[sp,#8] + str w8,[sp,#4] + ror w16,w27,#6 + add w22,w22,w28 // h+=K[i] + ror w7,w2,#7 + and w17,w20,w27 + ror w6,w15,#17 + bic w28,w21,w27 + ror w8,w23,#2 + add w22,w22,w0 // h+=X[i] + eor w16,w16,w27,ror#11 + eor w7,w7,w2,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w23,w24 // a^b, b^c in next round + eor w16,w16,w27,ror#25 // Sigma1(e) + eor w8,w8,w23,ror#13 + add w22,w22,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w6,w6,w15,ror#19 + eor w7,w7,w2,lsr#3 // sigma0(X[i+1]) + add w22,w22,w16 // h+=Sigma1(e) + eor w19,w19,w24 // Maj(a,b,c) + eor w17,w8,w23,ror#22 // Sigma0(a) + eor w6,w6,w15,lsr#10 // sigma1(X[i+14]) + add w1,w1,w10 + add w26,w26,w22 // d+=h + add w22,w22,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w1,w1,w7 + add w22,w22,w17 // h+=Sigma0(a) + add w1,w1,w6 + ldr w6,[sp,#12] + str w9,[sp,#8] + ror w16,w26,#6 + add w21,w21,w19 // h+=K[i] + ror w8,w3,#7 + and w17,w27,w26 + ror w7,w0,#17 + bic w19,w20,w26 + ror w9,w22,#2 + add w21,w21,w1 // h+=X[i] + eor w16,w16,w26,ror#11 + eor w8,w8,w3,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w22,w23 // a^b, b^c in next round + eor w16,w16,w26,ror#25 // Sigma1(e) + eor w9,w9,w22,ror#13 + add w21,w21,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w7,w7,w0,ror#19 + eor w8,w8,w3,lsr#3 // sigma0(X[i+1]) + add w21,w21,w16 // h+=Sigma1(e) + eor w28,w28,w23 // Maj(a,b,c) + eor w17,w9,w22,ror#22 // Sigma0(a) + eor w7,w7,w0,lsr#10 // sigma1(X[i+14]) + add w2,w2,w11 + add w25,w25,w21 // d+=h + add w21,w21,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w2,w2,w8 + add w21,w21,w17 // h+=Sigma0(a) + add w2,w2,w7 + ldr w7,[sp,#0] + str w10,[sp,#12] + ror w16,w25,#6 + add w20,w20,w28 // h+=K[i] + ror w9,w4,#7 + and w17,w26,w25 + ror w8,w1,#17 + bic w28,w27,w25 + ror w10,w21,#2 + add w20,w20,w2 // h+=X[i] + eor w16,w16,w25,ror#11 + eor w9,w9,w4,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w21,w22 // a^b, b^c in next round + eor w16,w16,w25,ror#25 // Sigma1(e) + eor w10,w10,w21,ror#13 + add w20,w20,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w8,w8,w1,ror#19 + eor w9,w9,w4,lsr#3 // sigma0(X[i+1]) + add w20,w20,w16 // h+=Sigma1(e) + eor w19,w19,w22 // Maj(a,b,c) + eor w17,w10,w21,ror#22 // Sigma0(a) + eor w8,w8,w1,lsr#10 // sigma1(X[i+14]) + add w3,w3,w12 + add w24,w24,w20 // d+=h + add w20,w20,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w3,w3,w9 + add w20,w20,w17 // h+=Sigma0(a) + add w3,w3,w8 + cbnz w19,.Loop_16_xx + + ldp x0,x2,[x29,#96] + ldr x1,[x29,#112] + sub x30,x30,#260 // rewind + + ldp w3,w4,[x0] + ldp w5,w6,[x0,#2*4] + add x1,x1,#14*4 // advance input pointer + ldp w7,w8,[x0,#4*4] + add w20,w20,w3 + ldp w9,w10,[x0,#6*4] + add w21,w21,w4 + add w22,w22,w5 + add w23,w23,w6 + stp w20,w21,[x0] + add w24,w24,w7 + add w25,w25,w8 + stp w22,w23,[x0,#2*4] + add w26,w26,w9 + add w27,w27,w10 + cmp x1,x2 + stp w24,w25,[x0,#4*4] + stp w26,w27,[x0,#6*4] + b.ne .Loop + + ldp x19,x20,[x29,#16] + add sp,sp,#4*4 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#128 +.inst 0xd50323bf // autiasp + ret +.size sha256_block_data_order,.-sha256_block_data_order + +.align 6 +.type .LK256,%object +.LK256: +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 +.long 0 //terminator +.size .LK256,.-.LK256 +#ifndef __KERNEL__ +.align 3 +.LOPENSSL_armcap_P: +# ifdef __ILP32__ +.long OPENSSL_armcap_P-. +# else +.quad OPENSSL_armcap_P-. +# endif +#endif +.byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 +#ifndef __KERNEL__ +.type sha256_block_armv8,%function +.align 6 +sha256_block_armv8: +.Lv8_entry: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v0.4s,v1.4s},[x0] + adr x3,.LK256 + +.Loop_hw: + ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64 + sub x2,x2,#1 + ld1 {v16.4s},[x3],#16 + rev32 v4.16b,v4.16b + rev32 v5.16b,v5.16b + rev32 v6.16b,v6.16b + rev32 v7.16b,v7.16b + orr v18.16b,v0.16b,v0.16b // offload + orr v19.16b,v1.16b,v1.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v4.4s +.inst 0x5e2828a4 //sha256su0 v4.16b,v5.16b + orr v2.16b,v0.16b,v0.16b +.inst 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.inst 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.inst 0x5e0760c4 //sha256su1 v4.16b,v6.16b,v7.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v5.4s +.inst 0x5e2828c5 //sha256su0 v5.16b,v6.16b + orr v2.16b,v0.16b,v0.16b +.inst 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.inst 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.inst 0x5e0460e5 //sha256su1 v5.16b,v7.16b,v4.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v6.4s +.inst 0x5e2828e6 //sha256su0 v6.16b,v7.16b + orr v2.16b,v0.16b,v0.16b +.inst 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.inst 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.inst 0x5e056086 //sha256su1 v6.16b,v4.16b,v5.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v7.4s +.inst 0x5e282887 //sha256su0 v7.16b,v4.16b + orr v2.16b,v0.16b,v0.16b +.inst 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.inst 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.inst 0x5e0660a7 //sha256su1 v7.16b,v5.16b,v6.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v4.4s +.inst 0x5e2828a4 //sha256su0 v4.16b,v5.16b + orr v2.16b,v0.16b,v0.16b +.inst 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.inst 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.inst 0x5e0760c4 //sha256su1 v4.16b,v6.16b,v7.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v5.4s +.inst 0x5e2828c5 //sha256su0 v5.16b,v6.16b + orr v2.16b,v0.16b,v0.16b +.inst 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.inst 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.inst 0x5e0460e5 //sha256su1 v5.16b,v7.16b,v4.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v6.4s +.inst 0x5e2828e6 //sha256su0 v6.16b,v7.16b + orr v2.16b,v0.16b,v0.16b +.inst 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.inst 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.inst 0x5e056086 //sha256su1 v6.16b,v4.16b,v5.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v7.4s +.inst 0x5e282887 //sha256su0 v7.16b,v4.16b + orr v2.16b,v0.16b,v0.16b +.inst 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.inst 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.inst 0x5e0660a7 //sha256su1 v7.16b,v5.16b,v6.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v4.4s +.inst 0x5e2828a4 //sha256su0 v4.16b,v5.16b + orr v2.16b,v0.16b,v0.16b +.inst 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.inst 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.inst 0x5e0760c4 //sha256su1 v4.16b,v6.16b,v7.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v5.4s +.inst 0x5e2828c5 //sha256su0 v5.16b,v6.16b + orr v2.16b,v0.16b,v0.16b +.inst 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.inst 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.inst 0x5e0460e5 //sha256su1 v5.16b,v7.16b,v4.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v6.4s +.inst 0x5e2828e6 //sha256su0 v6.16b,v7.16b + orr v2.16b,v0.16b,v0.16b +.inst 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.inst 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.inst 0x5e056086 //sha256su1 v6.16b,v4.16b,v5.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v7.4s +.inst 0x5e282887 //sha256su0 v7.16b,v4.16b + orr v2.16b,v0.16b,v0.16b +.inst 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.inst 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.inst 0x5e0660a7 //sha256su1 v7.16b,v5.16b,v6.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v4.4s + orr v2.16b,v0.16b,v0.16b +.inst 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.inst 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s + + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v5.4s + orr v2.16b,v0.16b,v0.16b +.inst 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.inst 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s + + ld1 {v17.4s},[x3] + add v16.4s,v16.4s,v6.4s + sub x3,x3,#64*4-16 // rewind + orr v2.16b,v0.16b,v0.16b +.inst 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.inst 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s + + add v17.4s,v17.4s,v7.4s + orr v2.16b,v0.16b,v0.16b +.inst 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.inst 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s + + add v0.4s,v0.4s,v18.4s + add v1.4s,v1.4s,v19.4s + + cbnz x2,.Loop_hw + + st1 {v0.4s,v1.4s},[x0] + + ldr x29,[sp],#16 + ret +.size sha256_block_armv8,.-sha256_block_armv8 +#endif +#ifdef __KERNEL__ +.globl sha256_block_neon +#endif +.type sha256_block_neon,%function +.align 4 +sha256_block_neon: +.Lneon_entry: + stp x29, x30, [sp, #-16]! + mov x29, sp + sub sp,sp,#16*4 + + adr x16,.LK256 + add x2,x1,x2,lsl#6 // len to point at the end of inp + + ld1 {v0.16b},[x1], #16 + ld1 {v1.16b},[x1], #16 + ld1 {v2.16b},[x1], #16 + ld1 {v3.16b},[x1], #16 + ld1 {v4.4s},[x16], #16 + ld1 {v5.4s},[x16], #16 + ld1 {v6.4s},[x16], #16 + ld1 {v7.4s},[x16], #16 + rev32 v0.16b,v0.16b // yes, even on + rev32 v1.16b,v1.16b // big-endian + rev32 v2.16b,v2.16b + rev32 v3.16b,v3.16b + mov x17,sp + add v4.4s,v4.4s,v0.4s + add v5.4s,v5.4s,v1.4s + add v6.4s,v6.4s,v2.4s + st1 {v4.4s,v5.4s},[x17], #32 + add v7.4s,v7.4s,v3.4s + st1 {v6.4s,v7.4s},[x17] + sub x17,x17,#32 + + ldp w3,w4,[x0] + ldp w5,w6,[x0,#8] + ldp w7,w8,[x0,#16] + ldp w9,w10,[x0,#24] + ldr w12,[sp,#0] + mov w13,wzr + eor w14,w4,w5 + mov w15,wzr + b .L_00_48 + +.align 4 +.L_00_48: + ext v4.16b,v0.16b,v1.16b,#4 + add w10,w10,w12 + add w3,w3,w15 + and w12,w8,w7 + bic w15,w9,w7 + ext v7.16b,v2.16b,v3.16b,#4 + eor w11,w7,w7,ror#5 + add w3,w3,w13 + mov d19,v3.d[1] + orr w12,w12,w15 + eor w11,w11,w7,ror#19 + ushr v6.4s,v4.4s,#7 + eor w15,w3,w3,ror#11 + ushr v5.4s,v4.4s,#3 + add w10,w10,w12 + add v0.4s,v0.4s,v7.4s + ror w11,w11,#6 + sli v6.4s,v4.4s,#25 + eor w13,w3,w4 + eor w15,w15,w3,ror#20 + ushr v7.4s,v4.4s,#18 + add w10,w10,w11 + ldr w12,[sp,#4] + and w14,w14,w13 + eor v5.16b,v5.16b,v6.16b + ror w15,w15,#2 + add w6,w6,w10 + sli v7.4s,v4.4s,#14 + eor w14,w14,w4 + ushr v16.4s,v19.4s,#17 + add w9,w9,w12 + add w10,w10,w15 + and w12,w7,w6 + eor v5.16b,v5.16b,v7.16b + bic w15,w8,w6 + eor w11,w6,w6,ror#5 + sli v16.4s,v19.4s,#15 + add w10,w10,w14 + orr w12,w12,w15 + ushr v17.4s,v19.4s,#10 + eor w11,w11,w6,ror#19 + eor w15,w10,w10,ror#11 + ushr v7.4s,v19.4s,#19 + add w9,w9,w12 + ror w11,w11,#6 + add v0.4s,v0.4s,v5.4s + eor w14,w10,w3 + eor w15,w15,w10,ror#20 + sli v7.4s,v19.4s,#13 + add w9,w9,w11 + ldr w12,[sp,#8] + and w13,w13,w14 + eor v17.16b,v17.16b,v16.16b + ror w15,w15,#2 + add w5,w5,w9 + eor w13,w13,w3 + eor v17.16b,v17.16b,v7.16b + add w8,w8,w12 + add w9,w9,w15 + and w12,w6,w5 + add v0.4s,v0.4s,v17.4s + bic w15,w7,w5 + eor w11,w5,w5,ror#5 + add w9,w9,w13 + ushr v18.4s,v0.4s,#17 + orr w12,w12,w15 + ushr v19.4s,v0.4s,#10 + eor w11,w11,w5,ror#19 + eor w15,w9,w9,ror#11 + sli v18.4s,v0.4s,#15 + add w8,w8,w12 + ushr v17.4s,v0.4s,#19 + ror w11,w11,#6 + eor w13,w9,w10 + eor v19.16b,v19.16b,v18.16b + eor w15,w15,w9,ror#20 + add w8,w8,w11 + sli v17.4s,v0.4s,#13 + ldr w12,[sp,#12] + and w14,w14,w13 + ror w15,w15,#2 + ld1 {v4.4s},[x16], #16 + add w4,w4,w8 + eor v19.16b,v19.16b,v17.16b + eor w14,w14,w10 + eor v17.16b,v17.16b,v17.16b + add w7,w7,w12 + add w8,w8,w15 + and w12,w5,w4 + mov v17.d[1],v19.d[0] + bic w15,w6,w4 + eor w11,w4,w4,ror#5 + add w8,w8,w14 + add v0.4s,v0.4s,v17.4s + orr w12,w12,w15 + eor w11,w11,w4,ror#19 + eor w15,w8,w8,ror#11 + add v4.4s,v4.4s,v0.4s + add w7,w7,w12 + ror w11,w11,#6 + eor w14,w8,w9 + eor w15,w15,w8,ror#20 + add w7,w7,w11 + ldr w12,[sp,#16] + and w13,w13,w14 + ror w15,w15,#2 + add w3,w3,w7 + eor w13,w13,w9 + st1 {v4.4s},[x17], #16 + ext v4.16b,v1.16b,v2.16b,#4 + add w6,w6,w12 + add w7,w7,w15 + and w12,w4,w3 + bic w15,w5,w3 + ext v7.16b,v3.16b,v0.16b,#4 + eor w11,w3,w3,ror#5 + add w7,w7,w13 + mov d19,v0.d[1] + orr w12,w12,w15 + eor w11,w11,w3,ror#19 + ushr v6.4s,v4.4s,#7 + eor w15,w7,w7,ror#11 + ushr v5.4s,v4.4s,#3 + add w6,w6,w12 + add v1.4s,v1.4s,v7.4s + ror w11,w11,#6 + sli v6.4s,v4.4s,#25 + eor w13,w7,w8 + eor w15,w15,w7,ror#20 + ushr v7.4s,v4.4s,#18 + add w6,w6,w11 + ldr w12,[sp,#20] + and w14,w14,w13 + eor v5.16b,v5.16b,v6.16b + ror w15,w15,#2 + add w10,w10,w6 + sli v7.4s,v4.4s,#14 + eor w14,w14,w8 + ushr v16.4s,v19.4s,#17 + add w5,w5,w12 + add w6,w6,w15 + and w12,w3,w10 + eor v5.16b,v5.16b,v7.16b + bic w15,w4,w10 + eor w11,w10,w10,ror#5 + sli v16.4s,v19.4s,#15 + add w6,w6,w14 + orr w12,w12,w15 + ushr v17.4s,v19.4s,#10 + eor w11,w11,w10,ror#19 + eor w15,w6,w6,ror#11 + ushr v7.4s,v19.4s,#19 + add w5,w5,w12 + ror w11,w11,#6 + add v1.4s,v1.4s,v5.4s + eor w14,w6,w7 + eor w15,w15,w6,ror#20 + sli v7.4s,v19.4s,#13 + add w5,w5,w11 + ldr w12,[sp,#24] + and w13,w13,w14 + eor v17.16b,v17.16b,v16.16b + ror w15,w15,#2 + add w9,w9,w5 + eor w13,w13,w7 + eor v17.16b,v17.16b,v7.16b + add w4,w4,w12 + add w5,w5,w15 + and w12,w10,w9 + add v1.4s,v1.4s,v17.4s + bic w15,w3,w9 + eor w11,w9,w9,ror#5 + add w5,w5,w13 + ushr v18.4s,v1.4s,#17 + orr w12,w12,w15 + ushr v19.4s,v1.4s,#10 + eor w11,w11,w9,ror#19 + eor w15,w5,w5,ror#11 + sli v18.4s,v1.4s,#15 + add w4,w4,w12 + ushr v17.4s,v1.4s,#19 + ror w11,w11,#6 + eor w13,w5,w6 + eor v19.16b,v19.16b,v18.16b + eor w15,w15,w5,ror#20 + add w4,w4,w11 + sli v17.4s,v1.4s,#13 + ldr w12,[sp,#28] + and w14,w14,w13 + ror w15,w15,#2 + ld1 {v4.4s},[x16], #16 + add w8,w8,w4 + eor v19.16b,v19.16b,v17.16b + eor w14,w14,w6 + eor v17.16b,v17.16b,v17.16b + add w3,w3,w12 + add w4,w4,w15 + and w12,w9,w8 + mov v17.d[1],v19.d[0] + bic w15,w10,w8 + eor w11,w8,w8,ror#5 + add w4,w4,w14 + add v1.4s,v1.4s,v17.4s + orr w12,w12,w15 + eor w11,w11,w8,ror#19 + eor w15,w4,w4,ror#11 + add v4.4s,v4.4s,v1.4s + add w3,w3,w12 + ror w11,w11,#6 + eor w14,w4,w5 + eor w15,w15,w4,ror#20 + add w3,w3,w11 + ldr w12,[sp,#32] + and w13,w13,w14 + ror w15,w15,#2 + add w7,w7,w3 + eor w13,w13,w5 + st1 {v4.4s},[x17], #16 + ext v4.16b,v2.16b,v3.16b,#4 + add w10,w10,w12 + add w3,w3,w15 + and w12,w8,w7 + bic w15,w9,w7 + ext v7.16b,v0.16b,v1.16b,#4 + eor w11,w7,w7,ror#5 + add w3,w3,w13 + mov d19,v1.d[1] + orr w12,w12,w15 + eor w11,w11,w7,ror#19 + ushr v6.4s,v4.4s,#7 + eor w15,w3,w3,ror#11 + ushr v5.4s,v4.4s,#3 + add w10,w10,w12 + add v2.4s,v2.4s,v7.4s + ror w11,w11,#6 + sli v6.4s,v4.4s,#25 + eor w13,w3,w4 + eor w15,w15,w3,ror#20 + ushr v7.4s,v4.4s,#18 + add w10,w10,w11 + ldr w12,[sp,#36] + and w14,w14,w13 + eor v5.16b,v5.16b,v6.16b + ror w15,w15,#2 + add w6,w6,w10 + sli v7.4s,v4.4s,#14 + eor w14,w14,w4 + ushr v16.4s,v19.4s,#17 + add w9,w9,w12 + add w10,w10,w15 + and w12,w7,w6 + eor v5.16b,v5.16b,v7.16b + bic w15,w8,w6 + eor w11,w6,w6,ror#5 + sli v16.4s,v19.4s,#15 + add w10,w10,w14 + orr w12,w12,w15 + ushr v17.4s,v19.4s,#10 + eor w11,w11,w6,ror#19 + eor w15,w10,w10,ror#11 + ushr v7.4s,v19.4s,#19 + add w9,w9,w12 + ror w11,w11,#6 + add v2.4s,v2.4s,v5.4s + eor w14,w10,w3 + eor w15,w15,w10,ror#20 + sli v7.4s,v19.4s,#13 + add w9,w9,w11 + ldr w12,[sp,#40] + and w13,w13,w14 + eor v17.16b,v17.16b,v16.16b + ror w15,w15,#2 + add w5,w5,w9 + eor w13,w13,w3 + eor v17.16b,v17.16b,v7.16b + add w8,w8,w12 + add w9,w9,w15 + and w12,w6,w5 + add v2.4s,v2.4s,v17.4s + bic w15,w7,w5 + eor w11,w5,w5,ror#5 + add w9,w9,w13 + ushr v18.4s,v2.4s,#17 + orr w12,w12,w15 + ushr v19.4s,v2.4s,#10 + eor w11,w11,w5,ror#19 + eor w15,w9,w9,ror#11 + sli v18.4s,v2.4s,#15 + add w8,w8,w12 + ushr v17.4s,v2.4s,#19 + ror w11,w11,#6 + eor w13,w9,w10 + eor v19.16b,v19.16b,v18.16b + eor w15,w15,w9,ror#20 + add w8,w8,w11 + sli v17.4s,v2.4s,#13 + ldr w12,[sp,#44] + and w14,w14,w13 + ror w15,w15,#2 + ld1 {v4.4s},[x16], #16 + add w4,w4,w8 + eor v19.16b,v19.16b,v17.16b + eor w14,w14,w10 + eor v17.16b,v17.16b,v17.16b + add w7,w7,w12 + add w8,w8,w15 + and w12,w5,w4 + mov v17.d[1],v19.d[0] + bic w15,w6,w4 + eor w11,w4,w4,ror#5 + add w8,w8,w14 + add v2.4s,v2.4s,v17.4s + orr w12,w12,w15 + eor w11,w11,w4,ror#19 + eor w15,w8,w8,ror#11 + add v4.4s,v4.4s,v2.4s + add w7,w7,w12 + ror w11,w11,#6 + eor w14,w8,w9 + eor w15,w15,w8,ror#20 + add w7,w7,w11 + ldr w12,[sp,#48] + and w13,w13,w14 + ror w15,w15,#2 + add w3,w3,w7 + eor w13,w13,w9 + st1 {v4.4s},[x17], #16 + ext v4.16b,v3.16b,v0.16b,#4 + add w6,w6,w12 + add w7,w7,w15 + and w12,w4,w3 + bic w15,w5,w3 + ext v7.16b,v1.16b,v2.16b,#4 + eor w11,w3,w3,ror#5 + add w7,w7,w13 + mov d19,v2.d[1] + orr w12,w12,w15 + eor w11,w11,w3,ror#19 + ushr v6.4s,v4.4s,#7 + eor w15,w7,w7,ror#11 + ushr v5.4s,v4.4s,#3 + add w6,w6,w12 + add v3.4s,v3.4s,v7.4s + ror w11,w11,#6 + sli v6.4s,v4.4s,#25 + eor w13,w7,w8 + eor w15,w15,w7,ror#20 + ushr v7.4s,v4.4s,#18 + add w6,w6,w11 + ldr w12,[sp,#52] + and w14,w14,w13 + eor v5.16b,v5.16b,v6.16b + ror w15,w15,#2 + add w10,w10,w6 + sli v7.4s,v4.4s,#14 + eor w14,w14,w8 + ushr v16.4s,v19.4s,#17 + add w5,w5,w12 + add w6,w6,w15 + and w12,w3,w10 + eor v5.16b,v5.16b,v7.16b + bic w15,w4,w10 + eor w11,w10,w10,ror#5 + sli v16.4s,v19.4s,#15 + add w6,w6,w14 + orr w12,w12,w15 + ushr v17.4s,v19.4s,#10 + eor w11,w11,w10,ror#19 + eor w15,w6,w6,ror#11 + ushr v7.4s,v19.4s,#19 + add w5,w5,w12 + ror w11,w11,#6 + add v3.4s,v3.4s,v5.4s + eor w14,w6,w7 + eor w15,w15,w6,ror#20 + sli v7.4s,v19.4s,#13 + add w5,w5,w11 + ldr w12,[sp,#56] + and w13,w13,w14 + eor v17.16b,v17.16b,v16.16b + ror w15,w15,#2 + add w9,w9,w5 + eor w13,w13,w7 + eor v17.16b,v17.16b,v7.16b + add w4,w4,w12 + add w5,w5,w15 + and w12,w10,w9 + add v3.4s,v3.4s,v17.4s + bic w15,w3,w9 + eor w11,w9,w9,ror#5 + add w5,w5,w13 + ushr v18.4s,v3.4s,#17 + orr w12,w12,w15 + ushr v19.4s,v3.4s,#10 + eor w11,w11,w9,ror#19 + eor w15,w5,w5,ror#11 + sli v18.4s,v3.4s,#15 + add w4,w4,w12 + ushr v17.4s,v3.4s,#19 + ror w11,w11,#6 + eor w13,w5,w6 + eor v19.16b,v19.16b,v18.16b + eor w15,w15,w5,ror#20 + add w4,w4,w11 + sli v17.4s,v3.4s,#13 + ldr w12,[sp,#60] + and w14,w14,w13 + ror w15,w15,#2 + ld1 {v4.4s},[x16], #16 + add w8,w8,w4 + eor v19.16b,v19.16b,v17.16b + eor w14,w14,w6 + eor v17.16b,v17.16b,v17.16b + add w3,w3,w12 + add w4,w4,w15 + and w12,w9,w8 + mov v17.d[1],v19.d[0] + bic w15,w10,w8 + eor w11,w8,w8,ror#5 + add w4,w4,w14 + add v3.4s,v3.4s,v17.4s + orr w12,w12,w15 + eor w11,w11,w8,ror#19 + eor w15,w4,w4,ror#11 + add v4.4s,v4.4s,v3.4s + add w3,w3,w12 + ror w11,w11,#6 + eor w14,w4,w5 + eor w15,w15,w4,ror#20 + add w3,w3,w11 + ldr w12,[x16] + and w13,w13,w14 + ror w15,w15,#2 + add w7,w7,w3 + eor w13,w13,w5 + st1 {v4.4s},[x17], #16 + cmp w12,#0 // check for K256 terminator + ldr w12,[sp,#0] + sub x17,x17,#64 + bne .L_00_48 + + sub x16,x16,#256 // rewind x16 + cmp x1,x2 + mov x17, #64 + csel x17, x17, xzr, eq + sub x1,x1,x17 // avoid SEGV + mov x17,sp + add w10,w10,w12 + add w3,w3,w15 + and w12,w8,w7 + ld1 {v0.16b},[x1],#16 + bic w15,w9,w7 + eor w11,w7,w7,ror#5 + ld1 {v4.4s},[x16],#16 + add w3,w3,w13 + orr w12,w12,w15 + eor w11,w11,w7,ror#19 + eor w15,w3,w3,ror#11 + rev32 v0.16b,v0.16b + add w10,w10,w12 + ror w11,w11,#6 + eor w13,w3,w4 + eor w15,w15,w3,ror#20 + add v4.4s,v4.4s,v0.4s + add w10,w10,w11 + ldr w12,[sp,#4] + and w14,w14,w13 + ror w15,w15,#2 + add w6,w6,w10 + eor w14,w14,w4 + add w9,w9,w12 + add w10,w10,w15 + and w12,w7,w6 + bic w15,w8,w6 + eor w11,w6,w6,ror#5 + add w10,w10,w14 + orr w12,w12,w15 + eor w11,w11,w6,ror#19 + eor w15,w10,w10,ror#11 + add w9,w9,w12 + ror w11,w11,#6 + eor w14,w10,w3 + eor w15,w15,w10,ror#20 + add w9,w9,w11 + ldr w12,[sp,#8] + and w13,w13,w14 + ror w15,w15,#2 + add w5,w5,w9 + eor w13,w13,w3 + add w8,w8,w12 + add w9,w9,w15 + and w12,w6,w5 + bic w15,w7,w5 + eor w11,w5,w5,ror#5 + add w9,w9,w13 + orr w12,w12,w15 + eor w11,w11,w5,ror#19 + eor w15,w9,w9,ror#11 + add w8,w8,w12 + ror w11,w11,#6 + eor w13,w9,w10 + eor w15,w15,w9,ror#20 + add w8,w8,w11 + ldr w12,[sp,#12] + and w14,w14,w13 + ror w15,w15,#2 + add w4,w4,w8 + eor w14,w14,w10 + add w7,w7,w12 + add w8,w8,w15 + and w12,w5,w4 + bic w15,w6,w4 + eor w11,w4,w4,ror#5 + add w8,w8,w14 + orr w12,w12,w15 + eor w11,w11,w4,ror#19 + eor w15,w8,w8,ror#11 + add w7,w7,w12 + ror w11,w11,#6 + eor w14,w8,w9 + eor w15,w15,w8,ror#20 + add w7,w7,w11 + ldr w12,[sp,#16] + and w13,w13,w14 + ror w15,w15,#2 + add w3,w3,w7 + eor w13,w13,w9 + st1 {v4.4s},[x17], #16 + add w6,w6,w12 + add w7,w7,w15 + and w12,w4,w3 + ld1 {v1.16b},[x1],#16 + bic w15,w5,w3 + eor w11,w3,w3,ror#5 + ld1 {v4.4s},[x16],#16 + add w7,w7,w13 + orr w12,w12,w15 + eor w11,w11,w3,ror#19 + eor w15,w7,w7,ror#11 + rev32 v1.16b,v1.16b + add w6,w6,w12 + ror w11,w11,#6 + eor w13,w7,w8 + eor w15,w15,w7,ror#20 + add v4.4s,v4.4s,v1.4s + add w6,w6,w11 + ldr w12,[sp,#20] + and w14,w14,w13 + ror w15,w15,#2 + add w10,w10,w6 + eor w14,w14,w8 + add w5,w5,w12 + add w6,w6,w15 + and w12,w3,w10 + bic w15,w4,w10 + eor w11,w10,w10,ror#5 + add w6,w6,w14 + orr w12,w12,w15 + eor w11,w11,w10,ror#19 + eor w15,w6,w6,ror#11 + add w5,w5,w12 + ror w11,w11,#6 + eor w14,w6,w7 + eor w15,w15,w6,ror#20 + add w5,w5,w11 + ldr w12,[sp,#24] + and w13,w13,w14 + ror w15,w15,#2 + add w9,w9,w5 + eor w13,w13,w7 + add w4,w4,w12 + add w5,w5,w15 + and w12,w10,w9 + bic w15,w3,w9 + eor w11,w9,w9,ror#5 + add w5,w5,w13 + orr w12,w12,w15 + eor w11,w11,w9,ror#19 + eor w15,w5,w5,ror#11 + add w4,w4,w12 + ror w11,w11,#6 + eor w13,w5,w6 + eor w15,w15,w5,ror#20 + add w4,w4,w11 + ldr w12,[sp,#28] + and w14,w14,w13 + ror w15,w15,#2 + add w8,w8,w4 + eor w14,w14,w6 + add w3,w3,w12 + add w4,w4,w15 + and w12,w9,w8 + bic w15,w10,w8 + eor w11,w8,w8,ror#5 + add w4,w4,w14 + orr w12,w12,w15 + eor w11,w11,w8,ror#19 + eor w15,w4,w4,ror#11 + add w3,w3,w12 + ror w11,w11,#6 + eor w14,w4,w5 + eor w15,w15,w4,ror#20 + add w3,w3,w11 + ldr w12,[sp,#32] + and w13,w13,w14 + ror w15,w15,#2 + add w7,w7,w3 + eor w13,w13,w5 + st1 {v4.4s},[x17], #16 + add w10,w10,w12 + add w3,w3,w15 + and w12,w8,w7 + ld1 {v2.16b},[x1],#16 + bic w15,w9,w7 + eor w11,w7,w7,ror#5 + ld1 {v4.4s},[x16],#16 + add w3,w3,w13 + orr w12,w12,w15 + eor w11,w11,w7,ror#19 + eor w15,w3,w3,ror#11 + rev32 v2.16b,v2.16b + add w10,w10,w12 + ror w11,w11,#6 + eor w13,w3,w4 + eor w15,w15,w3,ror#20 + add v4.4s,v4.4s,v2.4s + add w10,w10,w11 + ldr w12,[sp,#36] + and w14,w14,w13 + ror w15,w15,#2 + add w6,w6,w10 + eor w14,w14,w4 + add w9,w9,w12 + add w10,w10,w15 + and w12,w7,w6 + bic w15,w8,w6 + eor w11,w6,w6,ror#5 + add w10,w10,w14 + orr w12,w12,w15 + eor w11,w11,w6,ror#19 + eor w15,w10,w10,ror#11 + add w9,w9,w12 + ror w11,w11,#6 + eor w14,w10,w3 + eor w15,w15,w10,ror#20 + add w9,w9,w11 + ldr w12,[sp,#40] + and w13,w13,w14 + ror w15,w15,#2 + add w5,w5,w9 + eor w13,w13,w3 + add w8,w8,w12 + add w9,w9,w15 + and w12,w6,w5 + bic w15,w7,w5 + eor w11,w5,w5,ror#5 + add w9,w9,w13 + orr w12,w12,w15 + eor w11,w11,w5,ror#19 + eor w15,w9,w9,ror#11 + add w8,w8,w12 + ror w11,w11,#6 + eor w13,w9,w10 + eor w15,w15,w9,ror#20 + add w8,w8,w11 + ldr w12,[sp,#44] + and w14,w14,w13 + ror w15,w15,#2 + add w4,w4,w8 + eor w14,w14,w10 + add w7,w7,w12 + add w8,w8,w15 + and w12,w5,w4 + bic w15,w6,w4 + eor w11,w4,w4,ror#5 + add w8,w8,w14 + orr w12,w12,w15 + eor w11,w11,w4,ror#19 + eor w15,w8,w8,ror#11 + add w7,w7,w12 + ror w11,w11,#6 + eor w14,w8,w9 + eor w15,w15,w8,ror#20 + add w7,w7,w11 + ldr w12,[sp,#48] + and w13,w13,w14 + ror w15,w15,#2 + add w3,w3,w7 + eor w13,w13,w9 + st1 {v4.4s},[x17], #16 + add w6,w6,w12 + add w7,w7,w15 + and w12,w4,w3 + ld1 {v3.16b},[x1],#16 + bic w15,w5,w3 + eor w11,w3,w3,ror#5 + ld1 {v4.4s},[x16],#16 + add w7,w7,w13 + orr w12,w12,w15 + eor w11,w11,w3,ror#19 + eor w15,w7,w7,ror#11 + rev32 v3.16b,v3.16b + add w6,w6,w12 + ror w11,w11,#6 + eor w13,w7,w8 + eor w15,w15,w7,ror#20 + add v4.4s,v4.4s,v3.4s + add w6,w6,w11 + ldr w12,[sp,#52] + and w14,w14,w13 + ror w15,w15,#2 + add w10,w10,w6 + eor w14,w14,w8 + add w5,w5,w12 + add w6,w6,w15 + and w12,w3,w10 + bic w15,w4,w10 + eor w11,w10,w10,ror#5 + add w6,w6,w14 + orr w12,w12,w15 + eor w11,w11,w10,ror#19 + eor w15,w6,w6,ror#11 + add w5,w5,w12 + ror w11,w11,#6 + eor w14,w6,w7 + eor w15,w15,w6,ror#20 + add w5,w5,w11 + ldr w12,[sp,#56] + and w13,w13,w14 + ror w15,w15,#2 + add w9,w9,w5 + eor w13,w13,w7 + add w4,w4,w12 + add w5,w5,w15 + and w12,w10,w9 + bic w15,w3,w9 + eor w11,w9,w9,ror#5 + add w5,w5,w13 + orr w12,w12,w15 + eor w11,w11,w9,ror#19 + eor w15,w5,w5,ror#11 + add w4,w4,w12 + ror w11,w11,#6 + eor w13,w5,w6 + eor w15,w15,w5,ror#20 + add w4,w4,w11 + ldr w12,[sp,#60] + and w14,w14,w13 + ror w15,w15,#2 + add w8,w8,w4 + eor w14,w14,w6 + add w3,w3,w12 + add w4,w4,w15 + and w12,w9,w8 + bic w15,w10,w8 + eor w11,w8,w8,ror#5 + add w4,w4,w14 + orr w12,w12,w15 + eor w11,w11,w8,ror#19 + eor w15,w4,w4,ror#11 + add w3,w3,w12 + ror w11,w11,#6 + eor w14,w4,w5 + eor w15,w15,w4,ror#20 + add w3,w3,w11 + and w13,w13,w14 + ror w15,w15,#2 + add w7,w7,w3 + eor w13,w13,w5 + st1 {v4.4s},[x17], #16 + add w3,w3,w15 // h+=Sigma0(a) from the past + ldp w11,w12,[x0,#0] + add w3,w3,w13 // h+=Maj(a,b,c) from the past + ldp w13,w14,[x0,#8] + add w3,w3,w11 // accumulate + add w4,w4,w12 + ldp w11,w12,[x0,#16] + add w5,w5,w13 + add w6,w6,w14 + ldp w13,w14,[x0,#24] + add w7,w7,w11 + add w8,w8,w12 + ldr w12,[sp,#0] + stp w3,w4,[x0,#0] + add w9,w9,w13 + mov w13,wzr + stp w5,w6,[x0,#8] + add w10,w10,w14 + stp w7,w8,[x0,#16] + eor w14,w4,w5 + stp w9,w10,[x0,#24] + mov w15,wzr + mov x17,sp + b.ne .L_00_48 + + ldr x29,[x29] + add sp,sp,#16*4+16 + ret +.size sha256_block_neon,.-sha256_block_neon diff --git a/vere/ext/openssl/gen/linux-aarch64/crypto/sha/sha512-armv8.S b/vere/ext/openssl/gen/linux-aarch64/crypto/sha/sha512-armv8.S new file mode 100644 index 0000000..31e4550 --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/crypto/sha/sha512-armv8.S @@ -0,0 +1,1618 @@ +// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. +// +// Licensed under the OpenSSL license (the "License"). You may not use +// this file except in compliance with the License. You can obtain a copy +// in the file LICENSE in the source distribution or at +// https://www.openssl.org/source/license.html + +// ==================================================================== +// Written by Andy Polyakov for the OpenSSL +// project. The module is, however, dual licensed under OpenSSL and +// CRYPTOGAMS licenses depending on where you obtain it. For further +// details see http://www.openssl.org/~appro/cryptogams/. +// +// Permission to use under GPLv2 terms is granted. +// ==================================================================== +// +// SHA256/512 for ARMv8. +// +// Performance in cycles per processed byte and improvement coefficient +// over code generated with "default" compiler: +// +// SHA256-hw SHA256(*) SHA512 +// Apple A7 1.97 10.5 (+33%) 6.73 (-1%(**)) +// Cortex-A53 2.38 15.5 (+115%) 10.0 (+150%(***)) +// Cortex-A57 2.31 11.6 (+86%) 7.51 (+260%(***)) +// Denver 2.01 10.5 (+26%) 6.70 (+8%) +// X-Gene 20.0 (+100%) 12.8 (+300%(***)) +// Mongoose 2.36 13.0 (+50%) 8.36 (+33%) +// Kryo 1.92 17.4 (+30%) 11.2 (+8%) +// +// (*) Software SHA256 results are of lesser relevance, presented +// mostly for informational purposes. +// (**) The result is a trade-off: it's possible to improve it by +// 10% (or by 1 cycle per round), but at the cost of 20% loss +// on Cortex-A53 (or by 4 cycles per round). +// (***) Super-impressive coefficients over gcc-generated code are +// indication of some compiler "pathology", most notably code +// generated with -mgeneral-regs-only is significantly faster +// and the gap is only 40-90%. +// +// October 2016. +// +// Originally it was reckoned that it makes no sense to implement NEON +// version of SHA256 for 64-bit processors. This is because performance +// improvement on most wide-spread Cortex-A5x processors was observed +// to be marginal, same on Cortex-A53 and ~10% on A57. But then it was +// observed that 32-bit NEON SHA256 performs significantly better than +// 64-bit scalar version on *some* of the more recent processors. As +// result 64-bit NEON version of SHA256 was added to provide best +// all-round performance. For example it executes ~30% faster on X-Gene +// and Mongoose. [For reference, NEON version of SHA512 is bound to +// deliver much less improvement, likely *negative* on Cortex-A5x. +// Which is why NEON support is limited to SHA256.] + +#ifndef __KERNEL__ +# include "arm_arch.h" +#endif + +.text + + +.hidden OPENSSL_armcap_P +.globl sha512_block_data_order +.type sha512_block_data_order,%function +.align 6 +sha512_block_data_order: +#ifndef __KERNEL__ +# ifdef __ILP32__ + ldrsw x16,.LOPENSSL_armcap_P +# else + ldr x16,.LOPENSSL_armcap_P +# endif + adr x17,.LOPENSSL_armcap_P + add x16,x16,x17 + ldr w16,[x16] + tst w16,#ARMV8_SHA512 + b.ne .Lv8_entry +#endif +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#4*8 + + ldp x20,x21,[x0] // load context + ldp x22,x23,[x0,#2*8] + ldp x24,x25,[x0,#4*8] + add x2,x1,x2,lsl#7 // end of input + ldp x26,x27,[x0,#6*8] + adr x30,.LK512 + stp x0,x2,[x29,#96] + +.Loop: + ldp x3,x4,[x1],#2*8 + ldr x19,[x30],#8 // *K++ + eor x28,x21,x22 // magic seed + str x1,[x29,#112] +#ifndef __AARCH64EB__ + rev x3,x3 // 0 +#endif + ror x16,x24,#14 + add x27,x27,x19 // h+=K[i] + eor x6,x24,x24,ror#23 + and x17,x25,x24 + bic x19,x26,x24 + add x27,x27,x3 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x20,x21 // a^b, b^c in next round + eor x16,x16,x6,ror#18 // Sigma1(e) + ror x6,x20,#28 + add x27,x27,x17 // h+=Ch(e,f,g) + eor x17,x20,x20,ror#5 + add x27,x27,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x23,x23,x27 // d+=h + eor x28,x28,x21 // Maj(a,b,c) + eor x17,x6,x17,ror#34 // Sigma0(a) + add x27,x27,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x27,x27,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x4,x4 // 1 +#endif + ldp x5,x6,[x1],#2*8 + add x27,x27,x17 // h+=Sigma0(a) + ror x16,x23,#14 + add x26,x26,x28 // h+=K[i] + eor x7,x23,x23,ror#23 + and x17,x24,x23 + bic x28,x25,x23 + add x26,x26,x4 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x27,x20 // a^b, b^c in next round + eor x16,x16,x7,ror#18 // Sigma1(e) + ror x7,x27,#28 + add x26,x26,x17 // h+=Ch(e,f,g) + eor x17,x27,x27,ror#5 + add x26,x26,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x22,x22,x26 // d+=h + eor x19,x19,x20 // Maj(a,b,c) + eor x17,x7,x17,ror#34 // Sigma0(a) + add x26,x26,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x26,x26,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x5,x5 // 2 +#endif + add x26,x26,x17 // h+=Sigma0(a) + ror x16,x22,#14 + add x25,x25,x19 // h+=K[i] + eor x8,x22,x22,ror#23 + and x17,x23,x22 + bic x19,x24,x22 + add x25,x25,x5 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x26,x27 // a^b, b^c in next round + eor x16,x16,x8,ror#18 // Sigma1(e) + ror x8,x26,#28 + add x25,x25,x17 // h+=Ch(e,f,g) + eor x17,x26,x26,ror#5 + add x25,x25,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x21,x21,x25 // d+=h + eor x28,x28,x27 // Maj(a,b,c) + eor x17,x8,x17,ror#34 // Sigma0(a) + add x25,x25,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x25,x25,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x6,x6 // 3 +#endif + ldp x7,x8,[x1],#2*8 + add x25,x25,x17 // h+=Sigma0(a) + ror x16,x21,#14 + add x24,x24,x28 // h+=K[i] + eor x9,x21,x21,ror#23 + and x17,x22,x21 + bic x28,x23,x21 + add x24,x24,x6 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x25,x26 // a^b, b^c in next round + eor x16,x16,x9,ror#18 // Sigma1(e) + ror x9,x25,#28 + add x24,x24,x17 // h+=Ch(e,f,g) + eor x17,x25,x25,ror#5 + add x24,x24,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x20,x20,x24 // d+=h + eor x19,x19,x26 // Maj(a,b,c) + eor x17,x9,x17,ror#34 // Sigma0(a) + add x24,x24,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x24,x24,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x7,x7 // 4 +#endif + add x24,x24,x17 // h+=Sigma0(a) + ror x16,x20,#14 + add x23,x23,x19 // h+=K[i] + eor x10,x20,x20,ror#23 + and x17,x21,x20 + bic x19,x22,x20 + add x23,x23,x7 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x24,x25 // a^b, b^c in next round + eor x16,x16,x10,ror#18 // Sigma1(e) + ror x10,x24,#28 + add x23,x23,x17 // h+=Ch(e,f,g) + eor x17,x24,x24,ror#5 + add x23,x23,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x27,x27,x23 // d+=h + eor x28,x28,x25 // Maj(a,b,c) + eor x17,x10,x17,ror#34 // Sigma0(a) + add x23,x23,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x23,x23,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x8,x8 // 5 +#endif + ldp x9,x10,[x1],#2*8 + add x23,x23,x17 // h+=Sigma0(a) + ror x16,x27,#14 + add x22,x22,x28 // h+=K[i] + eor x11,x27,x27,ror#23 + and x17,x20,x27 + bic x28,x21,x27 + add x22,x22,x8 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x23,x24 // a^b, b^c in next round + eor x16,x16,x11,ror#18 // Sigma1(e) + ror x11,x23,#28 + add x22,x22,x17 // h+=Ch(e,f,g) + eor x17,x23,x23,ror#5 + add x22,x22,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x26,x26,x22 // d+=h + eor x19,x19,x24 // Maj(a,b,c) + eor x17,x11,x17,ror#34 // Sigma0(a) + add x22,x22,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x22,x22,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x9,x9 // 6 +#endif + add x22,x22,x17 // h+=Sigma0(a) + ror x16,x26,#14 + add x21,x21,x19 // h+=K[i] + eor x12,x26,x26,ror#23 + and x17,x27,x26 + bic x19,x20,x26 + add x21,x21,x9 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x22,x23 // a^b, b^c in next round + eor x16,x16,x12,ror#18 // Sigma1(e) + ror x12,x22,#28 + add x21,x21,x17 // h+=Ch(e,f,g) + eor x17,x22,x22,ror#5 + add x21,x21,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x25,x25,x21 // d+=h + eor x28,x28,x23 // Maj(a,b,c) + eor x17,x12,x17,ror#34 // Sigma0(a) + add x21,x21,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x21,x21,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x10,x10 // 7 +#endif + ldp x11,x12,[x1],#2*8 + add x21,x21,x17 // h+=Sigma0(a) + ror x16,x25,#14 + add x20,x20,x28 // h+=K[i] + eor x13,x25,x25,ror#23 + and x17,x26,x25 + bic x28,x27,x25 + add x20,x20,x10 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x21,x22 // a^b, b^c in next round + eor x16,x16,x13,ror#18 // Sigma1(e) + ror x13,x21,#28 + add x20,x20,x17 // h+=Ch(e,f,g) + eor x17,x21,x21,ror#5 + add x20,x20,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x24,x24,x20 // d+=h + eor x19,x19,x22 // Maj(a,b,c) + eor x17,x13,x17,ror#34 // Sigma0(a) + add x20,x20,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x20,x20,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x11,x11 // 8 +#endif + add x20,x20,x17 // h+=Sigma0(a) + ror x16,x24,#14 + add x27,x27,x19 // h+=K[i] + eor x14,x24,x24,ror#23 + and x17,x25,x24 + bic x19,x26,x24 + add x27,x27,x11 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x20,x21 // a^b, b^c in next round + eor x16,x16,x14,ror#18 // Sigma1(e) + ror x14,x20,#28 + add x27,x27,x17 // h+=Ch(e,f,g) + eor x17,x20,x20,ror#5 + add x27,x27,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x23,x23,x27 // d+=h + eor x28,x28,x21 // Maj(a,b,c) + eor x17,x14,x17,ror#34 // Sigma0(a) + add x27,x27,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x27,x27,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x12,x12 // 9 +#endif + ldp x13,x14,[x1],#2*8 + add x27,x27,x17 // h+=Sigma0(a) + ror x16,x23,#14 + add x26,x26,x28 // h+=K[i] + eor x15,x23,x23,ror#23 + and x17,x24,x23 + bic x28,x25,x23 + add x26,x26,x12 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x27,x20 // a^b, b^c in next round + eor x16,x16,x15,ror#18 // Sigma1(e) + ror x15,x27,#28 + add x26,x26,x17 // h+=Ch(e,f,g) + eor x17,x27,x27,ror#5 + add x26,x26,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x22,x22,x26 // d+=h + eor x19,x19,x20 // Maj(a,b,c) + eor x17,x15,x17,ror#34 // Sigma0(a) + add x26,x26,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x26,x26,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x13,x13 // 10 +#endif + add x26,x26,x17 // h+=Sigma0(a) + ror x16,x22,#14 + add x25,x25,x19 // h+=K[i] + eor x0,x22,x22,ror#23 + and x17,x23,x22 + bic x19,x24,x22 + add x25,x25,x13 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x26,x27 // a^b, b^c in next round + eor x16,x16,x0,ror#18 // Sigma1(e) + ror x0,x26,#28 + add x25,x25,x17 // h+=Ch(e,f,g) + eor x17,x26,x26,ror#5 + add x25,x25,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x21,x21,x25 // d+=h + eor x28,x28,x27 // Maj(a,b,c) + eor x17,x0,x17,ror#34 // Sigma0(a) + add x25,x25,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x25,x25,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x14,x14 // 11 +#endif + ldp x15,x0,[x1],#2*8 + add x25,x25,x17 // h+=Sigma0(a) + str x6,[sp,#24] + ror x16,x21,#14 + add x24,x24,x28 // h+=K[i] + eor x6,x21,x21,ror#23 + and x17,x22,x21 + bic x28,x23,x21 + add x24,x24,x14 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x25,x26 // a^b, b^c in next round + eor x16,x16,x6,ror#18 // Sigma1(e) + ror x6,x25,#28 + add x24,x24,x17 // h+=Ch(e,f,g) + eor x17,x25,x25,ror#5 + add x24,x24,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x20,x20,x24 // d+=h + eor x19,x19,x26 // Maj(a,b,c) + eor x17,x6,x17,ror#34 // Sigma0(a) + add x24,x24,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x24,x24,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x15,x15 // 12 +#endif + add x24,x24,x17 // h+=Sigma0(a) + str x7,[sp,#0] + ror x16,x20,#14 + add x23,x23,x19 // h+=K[i] + eor x7,x20,x20,ror#23 + and x17,x21,x20 + bic x19,x22,x20 + add x23,x23,x15 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x24,x25 // a^b, b^c in next round + eor x16,x16,x7,ror#18 // Sigma1(e) + ror x7,x24,#28 + add x23,x23,x17 // h+=Ch(e,f,g) + eor x17,x24,x24,ror#5 + add x23,x23,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x27,x27,x23 // d+=h + eor x28,x28,x25 // Maj(a,b,c) + eor x17,x7,x17,ror#34 // Sigma0(a) + add x23,x23,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x23,x23,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x0,x0 // 13 +#endif + ldp x1,x2,[x1] + add x23,x23,x17 // h+=Sigma0(a) + str x8,[sp,#8] + ror x16,x27,#14 + add x22,x22,x28 // h+=K[i] + eor x8,x27,x27,ror#23 + and x17,x20,x27 + bic x28,x21,x27 + add x22,x22,x0 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x23,x24 // a^b, b^c in next round + eor x16,x16,x8,ror#18 // Sigma1(e) + ror x8,x23,#28 + add x22,x22,x17 // h+=Ch(e,f,g) + eor x17,x23,x23,ror#5 + add x22,x22,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x26,x26,x22 // d+=h + eor x19,x19,x24 // Maj(a,b,c) + eor x17,x8,x17,ror#34 // Sigma0(a) + add x22,x22,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x22,x22,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x1,x1 // 14 +#endif + ldr x6,[sp,#24] + add x22,x22,x17 // h+=Sigma0(a) + str x9,[sp,#16] + ror x16,x26,#14 + add x21,x21,x19 // h+=K[i] + eor x9,x26,x26,ror#23 + and x17,x27,x26 + bic x19,x20,x26 + add x21,x21,x1 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x22,x23 // a^b, b^c in next round + eor x16,x16,x9,ror#18 // Sigma1(e) + ror x9,x22,#28 + add x21,x21,x17 // h+=Ch(e,f,g) + eor x17,x22,x22,ror#5 + add x21,x21,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x25,x25,x21 // d+=h + eor x28,x28,x23 // Maj(a,b,c) + eor x17,x9,x17,ror#34 // Sigma0(a) + add x21,x21,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x21,x21,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x2,x2 // 15 +#endif + ldr x7,[sp,#0] + add x21,x21,x17 // h+=Sigma0(a) + str x10,[sp,#24] + ror x16,x25,#14 + add x20,x20,x28 // h+=K[i] + ror x9,x4,#1 + and x17,x26,x25 + ror x8,x1,#19 + bic x28,x27,x25 + ror x10,x21,#28 + add x20,x20,x2 // h+=X[i] + eor x16,x16,x25,ror#18 + eor x9,x9,x4,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x21,x22 // a^b, b^c in next round + eor x16,x16,x25,ror#41 // Sigma1(e) + eor x10,x10,x21,ror#34 + add x20,x20,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x8,x8,x1,ror#61 + eor x9,x9,x4,lsr#7 // sigma0(X[i+1]) + add x20,x20,x16 // h+=Sigma1(e) + eor x19,x19,x22 // Maj(a,b,c) + eor x17,x10,x21,ror#39 // Sigma0(a) + eor x8,x8,x1,lsr#6 // sigma1(X[i+14]) + add x3,x3,x12 + add x24,x24,x20 // d+=h + add x20,x20,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x3,x3,x9 + add x20,x20,x17 // h+=Sigma0(a) + add x3,x3,x8 +.Loop_16_xx: + ldr x8,[sp,#8] + str x11,[sp,#0] + ror x16,x24,#14 + add x27,x27,x19 // h+=K[i] + ror x10,x5,#1 + and x17,x25,x24 + ror x9,x2,#19 + bic x19,x26,x24 + ror x11,x20,#28 + add x27,x27,x3 // h+=X[i] + eor x16,x16,x24,ror#18 + eor x10,x10,x5,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x20,x21 // a^b, b^c in next round + eor x16,x16,x24,ror#41 // Sigma1(e) + eor x11,x11,x20,ror#34 + add x27,x27,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x9,x9,x2,ror#61 + eor x10,x10,x5,lsr#7 // sigma0(X[i+1]) + add x27,x27,x16 // h+=Sigma1(e) + eor x28,x28,x21 // Maj(a,b,c) + eor x17,x11,x20,ror#39 // Sigma0(a) + eor x9,x9,x2,lsr#6 // sigma1(X[i+14]) + add x4,x4,x13 + add x23,x23,x27 // d+=h + add x27,x27,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x4,x4,x10 + add x27,x27,x17 // h+=Sigma0(a) + add x4,x4,x9 + ldr x9,[sp,#16] + str x12,[sp,#8] + ror x16,x23,#14 + add x26,x26,x28 // h+=K[i] + ror x11,x6,#1 + and x17,x24,x23 + ror x10,x3,#19 + bic x28,x25,x23 + ror x12,x27,#28 + add x26,x26,x4 // h+=X[i] + eor x16,x16,x23,ror#18 + eor x11,x11,x6,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x27,x20 // a^b, b^c in next round + eor x16,x16,x23,ror#41 // Sigma1(e) + eor x12,x12,x27,ror#34 + add x26,x26,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x10,x10,x3,ror#61 + eor x11,x11,x6,lsr#7 // sigma0(X[i+1]) + add x26,x26,x16 // h+=Sigma1(e) + eor x19,x19,x20 // Maj(a,b,c) + eor x17,x12,x27,ror#39 // Sigma0(a) + eor x10,x10,x3,lsr#6 // sigma1(X[i+14]) + add x5,x5,x14 + add x22,x22,x26 // d+=h + add x26,x26,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x5,x5,x11 + add x26,x26,x17 // h+=Sigma0(a) + add x5,x5,x10 + ldr x10,[sp,#24] + str x13,[sp,#16] + ror x16,x22,#14 + add x25,x25,x19 // h+=K[i] + ror x12,x7,#1 + and x17,x23,x22 + ror x11,x4,#19 + bic x19,x24,x22 + ror x13,x26,#28 + add x25,x25,x5 // h+=X[i] + eor x16,x16,x22,ror#18 + eor x12,x12,x7,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x26,x27 // a^b, b^c in next round + eor x16,x16,x22,ror#41 // Sigma1(e) + eor x13,x13,x26,ror#34 + add x25,x25,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x11,x11,x4,ror#61 + eor x12,x12,x7,lsr#7 // sigma0(X[i+1]) + add x25,x25,x16 // h+=Sigma1(e) + eor x28,x28,x27 // Maj(a,b,c) + eor x17,x13,x26,ror#39 // Sigma0(a) + eor x11,x11,x4,lsr#6 // sigma1(X[i+14]) + add x6,x6,x15 + add x21,x21,x25 // d+=h + add x25,x25,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x6,x6,x12 + add x25,x25,x17 // h+=Sigma0(a) + add x6,x6,x11 + ldr x11,[sp,#0] + str x14,[sp,#24] + ror x16,x21,#14 + add x24,x24,x28 // h+=K[i] + ror x13,x8,#1 + and x17,x22,x21 + ror x12,x5,#19 + bic x28,x23,x21 + ror x14,x25,#28 + add x24,x24,x6 // h+=X[i] + eor x16,x16,x21,ror#18 + eor x13,x13,x8,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x25,x26 // a^b, b^c in next round + eor x16,x16,x21,ror#41 // Sigma1(e) + eor x14,x14,x25,ror#34 + add x24,x24,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x12,x12,x5,ror#61 + eor x13,x13,x8,lsr#7 // sigma0(X[i+1]) + add x24,x24,x16 // h+=Sigma1(e) + eor x19,x19,x26 // Maj(a,b,c) + eor x17,x14,x25,ror#39 // Sigma0(a) + eor x12,x12,x5,lsr#6 // sigma1(X[i+14]) + add x7,x7,x0 + add x20,x20,x24 // d+=h + add x24,x24,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x7,x7,x13 + add x24,x24,x17 // h+=Sigma0(a) + add x7,x7,x12 + ldr x12,[sp,#8] + str x15,[sp,#0] + ror x16,x20,#14 + add x23,x23,x19 // h+=K[i] + ror x14,x9,#1 + and x17,x21,x20 + ror x13,x6,#19 + bic x19,x22,x20 + ror x15,x24,#28 + add x23,x23,x7 // h+=X[i] + eor x16,x16,x20,ror#18 + eor x14,x14,x9,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x24,x25 // a^b, b^c in next round + eor x16,x16,x20,ror#41 // Sigma1(e) + eor x15,x15,x24,ror#34 + add x23,x23,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x13,x13,x6,ror#61 + eor x14,x14,x9,lsr#7 // sigma0(X[i+1]) + add x23,x23,x16 // h+=Sigma1(e) + eor x28,x28,x25 // Maj(a,b,c) + eor x17,x15,x24,ror#39 // Sigma0(a) + eor x13,x13,x6,lsr#6 // sigma1(X[i+14]) + add x8,x8,x1 + add x27,x27,x23 // d+=h + add x23,x23,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x8,x8,x14 + add x23,x23,x17 // h+=Sigma0(a) + add x8,x8,x13 + ldr x13,[sp,#16] + str x0,[sp,#8] + ror x16,x27,#14 + add x22,x22,x28 // h+=K[i] + ror x15,x10,#1 + and x17,x20,x27 + ror x14,x7,#19 + bic x28,x21,x27 + ror x0,x23,#28 + add x22,x22,x8 // h+=X[i] + eor x16,x16,x27,ror#18 + eor x15,x15,x10,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x23,x24 // a^b, b^c in next round + eor x16,x16,x27,ror#41 // Sigma1(e) + eor x0,x0,x23,ror#34 + add x22,x22,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x14,x14,x7,ror#61 + eor x15,x15,x10,lsr#7 // sigma0(X[i+1]) + add x22,x22,x16 // h+=Sigma1(e) + eor x19,x19,x24 // Maj(a,b,c) + eor x17,x0,x23,ror#39 // Sigma0(a) + eor x14,x14,x7,lsr#6 // sigma1(X[i+14]) + add x9,x9,x2 + add x26,x26,x22 // d+=h + add x22,x22,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x9,x9,x15 + add x22,x22,x17 // h+=Sigma0(a) + add x9,x9,x14 + ldr x14,[sp,#24] + str x1,[sp,#16] + ror x16,x26,#14 + add x21,x21,x19 // h+=K[i] + ror x0,x11,#1 + and x17,x27,x26 + ror x15,x8,#19 + bic x19,x20,x26 + ror x1,x22,#28 + add x21,x21,x9 // h+=X[i] + eor x16,x16,x26,ror#18 + eor x0,x0,x11,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x22,x23 // a^b, b^c in next round + eor x16,x16,x26,ror#41 // Sigma1(e) + eor x1,x1,x22,ror#34 + add x21,x21,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x15,x15,x8,ror#61 + eor x0,x0,x11,lsr#7 // sigma0(X[i+1]) + add x21,x21,x16 // h+=Sigma1(e) + eor x28,x28,x23 // Maj(a,b,c) + eor x17,x1,x22,ror#39 // Sigma0(a) + eor x15,x15,x8,lsr#6 // sigma1(X[i+14]) + add x10,x10,x3 + add x25,x25,x21 // d+=h + add x21,x21,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x10,x10,x0 + add x21,x21,x17 // h+=Sigma0(a) + add x10,x10,x15 + ldr x15,[sp,#0] + str x2,[sp,#24] + ror x16,x25,#14 + add x20,x20,x28 // h+=K[i] + ror x1,x12,#1 + and x17,x26,x25 + ror x0,x9,#19 + bic x28,x27,x25 + ror x2,x21,#28 + add x20,x20,x10 // h+=X[i] + eor x16,x16,x25,ror#18 + eor x1,x1,x12,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x21,x22 // a^b, b^c in next round + eor x16,x16,x25,ror#41 // Sigma1(e) + eor x2,x2,x21,ror#34 + add x20,x20,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x0,x0,x9,ror#61 + eor x1,x1,x12,lsr#7 // sigma0(X[i+1]) + add x20,x20,x16 // h+=Sigma1(e) + eor x19,x19,x22 // Maj(a,b,c) + eor x17,x2,x21,ror#39 // Sigma0(a) + eor x0,x0,x9,lsr#6 // sigma1(X[i+14]) + add x11,x11,x4 + add x24,x24,x20 // d+=h + add x20,x20,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x11,x11,x1 + add x20,x20,x17 // h+=Sigma0(a) + add x11,x11,x0 + ldr x0,[sp,#8] + str x3,[sp,#0] + ror x16,x24,#14 + add x27,x27,x19 // h+=K[i] + ror x2,x13,#1 + and x17,x25,x24 + ror x1,x10,#19 + bic x19,x26,x24 + ror x3,x20,#28 + add x27,x27,x11 // h+=X[i] + eor x16,x16,x24,ror#18 + eor x2,x2,x13,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x20,x21 // a^b, b^c in next round + eor x16,x16,x24,ror#41 // Sigma1(e) + eor x3,x3,x20,ror#34 + add x27,x27,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x1,x1,x10,ror#61 + eor x2,x2,x13,lsr#7 // sigma0(X[i+1]) + add x27,x27,x16 // h+=Sigma1(e) + eor x28,x28,x21 // Maj(a,b,c) + eor x17,x3,x20,ror#39 // Sigma0(a) + eor x1,x1,x10,lsr#6 // sigma1(X[i+14]) + add x12,x12,x5 + add x23,x23,x27 // d+=h + add x27,x27,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x12,x12,x2 + add x27,x27,x17 // h+=Sigma0(a) + add x12,x12,x1 + ldr x1,[sp,#16] + str x4,[sp,#8] + ror x16,x23,#14 + add x26,x26,x28 // h+=K[i] + ror x3,x14,#1 + and x17,x24,x23 + ror x2,x11,#19 + bic x28,x25,x23 + ror x4,x27,#28 + add x26,x26,x12 // h+=X[i] + eor x16,x16,x23,ror#18 + eor x3,x3,x14,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x27,x20 // a^b, b^c in next round + eor x16,x16,x23,ror#41 // Sigma1(e) + eor x4,x4,x27,ror#34 + add x26,x26,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x2,x2,x11,ror#61 + eor x3,x3,x14,lsr#7 // sigma0(X[i+1]) + add x26,x26,x16 // h+=Sigma1(e) + eor x19,x19,x20 // Maj(a,b,c) + eor x17,x4,x27,ror#39 // Sigma0(a) + eor x2,x2,x11,lsr#6 // sigma1(X[i+14]) + add x13,x13,x6 + add x22,x22,x26 // d+=h + add x26,x26,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x13,x13,x3 + add x26,x26,x17 // h+=Sigma0(a) + add x13,x13,x2 + ldr x2,[sp,#24] + str x5,[sp,#16] + ror x16,x22,#14 + add x25,x25,x19 // h+=K[i] + ror x4,x15,#1 + and x17,x23,x22 + ror x3,x12,#19 + bic x19,x24,x22 + ror x5,x26,#28 + add x25,x25,x13 // h+=X[i] + eor x16,x16,x22,ror#18 + eor x4,x4,x15,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x26,x27 // a^b, b^c in next round + eor x16,x16,x22,ror#41 // Sigma1(e) + eor x5,x5,x26,ror#34 + add x25,x25,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x3,x3,x12,ror#61 + eor x4,x4,x15,lsr#7 // sigma0(X[i+1]) + add x25,x25,x16 // h+=Sigma1(e) + eor x28,x28,x27 // Maj(a,b,c) + eor x17,x5,x26,ror#39 // Sigma0(a) + eor x3,x3,x12,lsr#6 // sigma1(X[i+14]) + add x14,x14,x7 + add x21,x21,x25 // d+=h + add x25,x25,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x14,x14,x4 + add x25,x25,x17 // h+=Sigma0(a) + add x14,x14,x3 + ldr x3,[sp,#0] + str x6,[sp,#24] + ror x16,x21,#14 + add x24,x24,x28 // h+=K[i] + ror x5,x0,#1 + and x17,x22,x21 + ror x4,x13,#19 + bic x28,x23,x21 + ror x6,x25,#28 + add x24,x24,x14 // h+=X[i] + eor x16,x16,x21,ror#18 + eor x5,x5,x0,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x25,x26 // a^b, b^c in next round + eor x16,x16,x21,ror#41 // Sigma1(e) + eor x6,x6,x25,ror#34 + add x24,x24,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x4,x4,x13,ror#61 + eor x5,x5,x0,lsr#7 // sigma0(X[i+1]) + add x24,x24,x16 // h+=Sigma1(e) + eor x19,x19,x26 // Maj(a,b,c) + eor x17,x6,x25,ror#39 // Sigma0(a) + eor x4,x4,x13,lsr#6 // sigma1(X[i+14]) + add x15,x15,x8 + add x20,x20,x24 // d+=h + add x24,x24,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x15,x15,x5 + add x24,x24,x17 // h+=Sigma0(a) + add x15,x15,x4 + ldr x4,[sp,#8] + str x7,[sp,#0] + ror x16,x20,#14 + add x23,x23,x19 // h+=K[i] + ror x6,x1,#1 + and x17,x21,x20 + ror x5,x14,#19 + bic x19,x22,x20 + ror x7,x24,#28 + add x23,x23,x15 // h+=X[i] + eor x16,x16,x20,ror#18 + eor x6,x6,x1,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x24,x25 // a^b, b^c in next round + eor x16,x16,x20,ror#41 // Sigma1(e) + eor x7,x7,x24,ror#34 + add x23,x23,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x5,x5,x14,ror#61 + eor x6,x6,x1,lsr#7 // sigma0(X[i+1]) + add x23,x23,x16 // h+=Sigma1(e) + eor x28,x28,x25 // Maj(a,b,c) + eor x17,x7,x24,ror#39 // Sigma0(a) + eor x5,x5,x14,lsr#6 // sigma1(X[i+14]) + add x0,x0,x9 + add x27,x27,x23 // d+=h + add x23,x23,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x0,x0,x6 + add x23,x23,x17 // h+=Sigma0(a) + add x0,x0,x5 + ldr x5,[sp,#16] + str x8,[sp,#8] + ror x16,x27,#14 + add x22,x22,x28 // h+=K[i] + ror x7,x2,#1 + and x17,x20,x27 + ror x6,x15,#19 + bic x28,x21,x27 + ror x8,x23,#28 + add x22,x22,x0 // h+=X[i] + eor x16,x16,x27,ror#18 + eor x7,x7,x2,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x23,x24 // a^b, b^c in next round + eor x16,x16,x27,ror#41 // Sigma1(e) + eor x8,x8,x23,ror#34 + add x22,x22,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x6,x6,x15,ror#61 + eor x7,x7,x2,lsr#7 // sigma0(X[i+1]) + add x22,x22,x16 // h+=Sigma1(e) + eor x19,x19,x24 // Maj(a,b,c) + eor x17,x8,x23,ror#39 // Sigma0(a) + eor x6,x6,x15,lsr#6 // sigma1(X[i+14]) + add x1,x1,x10 + add x26,x26,x22 // d+=h + add x22,x22,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x1,x1,x7 + add x22,x22,x17 // h+=Sigma0(a) + add x1,x1,x6 + ldr x6,[sp,#24] + str x9,[sp,#16] + ror x16,x26,#14 + add x21,x21,x19 // h+=K[i] + ror x8,x3,#1 + and x17,x27,x26 + ror x7,x0,#19 + bic x19,x20,x26 + ror x9,x22,#28 + add x21,x21,x1 // h+=X[i] + eor x16,x16,x26,ror#18 + eor x8,x8,x3,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x22,x23 // a^b, b^c in next round + eor x16,x16,x26,ror#41 // Sigma1(e) + eor x9,x9,x22,ror#34 + add x21,x21,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x7,x7,x0,ror#61 + eor x8,x8,x3,lsr#7 // sigma0(X[i+1]) + add x21,x21,x16 // h+=Sigma1(e) + eor x28,x28,x23 // Maj(a,b,c) + eor x17,x9,x22,ror#39 // Sigma0(a) + eor x7,x7,x0,lsr#6 // sigma1(X[i+14]) + add x2,x2,x11 + add x25,x25,x21 // d+=h + add x21,x21,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x2,x2,x8 + add x21,x21,x17 // h+=Sigma0(a) + add x2,x2,x7 + ldr x7,[sp,#0] + str x10,[sp,#24] + ror x16,x25,#14 + add x20,x20,x28 // h+=K[i] + ror x9,x4,#1 + and x17,x26,x25 + ror x8,x1,#19 + bic x28,x27,x25 + ror x10,x21,#28 + add x20,x20,x2 // h+=X[i] + eor x16,x16,x25,ror#18 + eor x9,x9,x4,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x21,x22 // a^b, b^c in next round + eor x16,x16,x25,ror#41 // Sigma1(e) + eor x10,x10,x21,ror#34 + add x20,x20,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x8,x8,x1,ror#61 + eor x9,x9,x4,lsr#7 // sigma0(X[i+1]) + add x20,x20,x16 // h+=Sigma1(e) + eor x19,x19,x22 // Maj(a,b,c) + eor x17,x10,x21,ror#39 // Sigma0(a) + eor x8,x8,x1,lsr#6 // sigma1(X[i+14]) + add x3,x3,x12 + add x24,x24,x20 // d+=h + add x20,x20,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x3,x3,x9 + add x20,x20,x17 // h+=Sigma0(a) + add x3,x3,x8 + cbnz x19,.Loop_16_xx + + ldp x0,x2,[x29,#96] + ldr x1,[x29,#112] + sub x30,x30,#648 // rewind + + ldp x3,x4,[x0] + ldp x5,x6,[x0,#2*8] + add x1,x1,#14*8 // advance input pointer + ldp x7,x8,[x0,#4*8] + add x20,x20,x3 + ldp x9,x10,[x0,#6*8] + add x21,x21,x4 + add x22,x22,x5 + add x23,x23,x6 + stp x20,x21,[x0] + add x24,x24,x7 + add x25,x25,x8 + stp x22,x23,[x0,#2*8] + add x26,x26,x9 + add x27,x27,x10 + cmp x1,x2 + stp x24,x25,[x0,#4*8] + stp x26,x27,[x0,#6*8] + b.ne .Loop + + ldp x19,x20,[x29,#16] + add sp,sp,#4*8 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#128 +.inst 0xd50323bf // autiasp + ret +.size sha512_block_data_order,.-sha512_block_data_order + +.align 6 +.type .LK512,%object +.LK512: +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0x06ca6351e003826f,0x142929670a0e6e70 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6 +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +.quad 0 // terminator +.size .LK512,.-.LK512 +#ifndef __KERNEL__ +.align 3 +.LOPENSSL_armcap_P: +# ifdef __ILP32__ +.long OPENSSL_armcap_P-. +# else +.quad OPENSSL_armcap_P-. +# endif +#endif +.byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 +#ifndef __KERNEL__ +.type sha512_block_armv8,%function +.align 6 +sha512_block_armv8: +.Lv8_entry: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v16.16b,v17.16b,v18.16b,v19.16b},[x1],#64 // load input + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + + ld1 {v0.2d,v1.2d,v2.2d,v3.2d},[x0] // load context + adr x3,.LK512 + + rev64 v16.16b,v16.16b + rev64 v17.16b,v17.16b + rev64 v18.16b,v18.16b + rev64 v19.16b,v19.16b + rev64 v20.16b,v20.16b + rev64 v21.16b,v21.16b + rev64 v22.16b,v22.16b + rev64 v23.16b,v23.16b + b .Loop_hw + +.align 4 +.Loop_hw: + ld1 {v24.2d},[x3],#16 + subs x2,x2,#1 + sub x4,x1,#128 + orr v26.16b,v0.16b,v0.16b // offload + orr v27.16b,v1.16b,v1.16b + orr v28.16b,v2.16b,v2.16b + orr v29.16b,v3.16b,v3.16b + csel x1,x1,x4,ne // conditional rewind + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.inst 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.inst 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.inst 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.inst 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.inst 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.inst 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.inst 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.inst 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.inst 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.inst 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.inst 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.inst 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.inst 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.inst 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.inst 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.inst 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.inst 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.inst 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.inst 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.inst 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v16.2d + ld1 {v16.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b + rev64 v16.16b,v16.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v17.2d + ld1 {v17.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b + rev64 v17.16b,v17.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v18.2d + ld1 {v18.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b + rev64 v18.16b,v18.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v19.2d + ld1 {v19.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b + rev64 v19.16b,v19.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.inst 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v20.2d + ld1 {v20.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b + rev64 v20.16b,v20.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.inst 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v21.2d + ld1 {v21.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b + rev64 v21.16b,v21.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.inst 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v22.2d + ld1 {v22.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b + rev64 v22.16b,v22.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + sub x3,x3,#80*8 // rewind + add v25.2d,v25.2d,v23.2d + ld1 {v23.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b + rev64 v23.16b,v23.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v0.2d,v0.2d,v26.2d // accumulate + add v1.2d,v1.2d,v27.2d + add v2.2d,v2.2d,v28.2d + add v3.2d,v3.2d,v29.2d + + cbnz x2,.Loop_hw + + st1 {v0.2d,v1.2d,v2.2d,v3.2d},[x0] // store context + + ldr x29,[sp],#16 + ret +.size sha512_block_armv8,.-sha512_block_armv8 +#endif diff --git a/vere/ext/openssl/gen/linux-aarch64/include/crypto/bn_conf.h b/vere/ext/openssl/gen/linux-aarch64/include/crypto/bn_conf.h new file mode 100644 index 0000000..5312ef5 --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/include/crypto/bn_conf.h @@ -0,0 +1,28 @@ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/bn_conf.h.in */ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_BN_CONF_H +# define OSSL_CRYPTO_BN_CONF_H + +/* + * The contents of this file are not used in the UEFI build, as + * both 32-bit and 64-bit builds are supported from a single run + * of the Configure script. + */ + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#define SIXTY_FOUR_BIT_LONG +#undef SIXTY_FOUR_BIT +#undef THIRTY_TWO_BIT + +#endif diff --git a/vere/ext/openssl/gen/linux-aarch64/include/crypto/buildinf.h b/vere/ext/openssl/gen/linux-aarch64/include/crypto/buildinf.h new file mode 100644 index 0000000..99e3de0 --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/include/crypto/buildinf.h @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by util/mkbuildinf.pl + * + * Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define PLATFORM "platform: linux-aarch64" +#define DATE "built on: Thu Sep 19 13:35:11 2024 UTC" + +/* + * Generate compiler_flags as an array of individual characters. This is a + * workaround for the situation where CFLAGS gets too long for a C90 string + * literal + */ +static const char compiler_flags[] = { + 'c','o','m','p','i','l','e','r',':',' ','g','c','c',' ','-','f', + 'P','I','C',' ','-','p','t','h','r','e','a','d',' ','-','W','a', + 'l','l',' ','-','O','3',' ','-','D','O','P','E','N','S','S','L', + '_','U','S','E','_','N','O','D','E','L','E','T','E',' ','-','D', + 'O','P','E','N','S','S','L','_','P','I','C',' ','-','D','O','P', + 'E','N','S','S','L','_','C','P','U','I','D','_','O','B','J',' ', + '-','D','O','P','E','N','S','S','L','_','B','N','_','A','S','M', + '_','M','O','N','T',' ','-','D','S','H','A','1','_','A','S','M', + ' ','-','D','S','H','A','2','5','6','_','A','S','M',' ','-','D', + 'S','H','A','5','1','2','_','A','S','M',' ','-','D','K','E','C', + 'C','A','K','1','6','0','0','_','A','S','M',' ','-','D','V','P', + 'A','E','S','_','A','S','M',' ','-','D','E','C','P','_','N','I', + 'S','T','Z','2','5','6','_','A','S','M',' ','-','D','P','O','L', + 'Y','1','3','0','5','_','A','S','M',' ','-','D','N','D','E','B', + 'U','G','\0' +}; diff --git a/vere/ext/openssl/gen/linux-aarch64/include/crypto/dso_conf.h b/vere/ext/openssl/gen/linux-aarch64/include/crypto/dso_conf.h new file mode 100644 index 0000000..4b1167c --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/include/crypto/dso_conf.h @@ -0,0 +1,17 @@ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/dso_conf.h.in */ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_DSO_CONF_H +# define OSSL_CRYPTO_DSO_CONF_H +# define DSO_DLFCN +# define HAVE_DLFCN_H +# define DSO_EXTENSION ".so" +#endif diff --git a/vere/ext/openssl/gen/linux-aarch64/include/openssl/opensslconf.h b/vere/ext/openssl/gen/linux-aarch64/include/openssl/opensslconf.h new file mode 100644 index 0000000..9ecdb8f --- /dev/null +++ b/vere/ext/openssl/gen/linux-aarch64/include/openssl/opensslconf.h @@ -0,0 +1,197 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +#endif +#ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +#endif +#ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#ifndef OPENSSL_FILE +# ifdef OPENSSL_NO_FILENAMES +# define OPENSSL_FILE "" +# define OPENSSL_LINE 0 +# else +# define OPENSSL_FILE __FILE__ +# define OPENSSL_LINE __LINE__ +# endif +#endif + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# define SIXTY_FOUR_BIT_LONG +# undef SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#define RC4_INT unsigned char + +#ifdef __cplusplus +} +#endif diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-mb-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-mb-x86_64.s new file mode 100644 index 0000000..f2b5662 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-mb-x86_64.s @@ -0,0 +1,1507 @@ +.text + + + +.globl aesni_multi_cbc_encrypt +.type aesni_multi_cbc_encrypt,@function +.align 32 +aesni_multi_cbc_encrypt: +.cfi_startproc + cmpl $2,%edx + jb .Lenc_non_avx + movl OPENSSL_ia32cap_P+4(%rip),%ecx + testl $268435456,%ecx + jnz _avx_cbc_enc_shortcut + jmp .Lenc_non_avx +.align 16 +.Lenc_non_avx: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + + + + + + + subq $48,%rsp + andq $-64,%rsp + movq %rax,16(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x10,0x06,0x23,0x08 + +.Lenc4x_body: + movdqu (%rsi),%xmm12 + leaq 120(%rsi),%rsi + leaq 80(%rdi),%rdi + +.Lenc4x_loop_grande: + movl %edx,24(%rsp) + xorl %edx,%edx + movl -64(%rdi),%ecx + movq -80(%rdi),%r8 + cmpl %edx,%ecx + movq -72(%rdi),%r12 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu -56(%rdi),%xmm2 + movl %ecx,32(%rsp) + cmovleq %rsp,%r8 + movl -24(%rdi),%ecx + movq -40(%rdi),%r9 + cmpl %edx,%ecx + movq -32(%rdi),%r13 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu -16(%rdi),%xmm3 + movl %ecx,36(%rsp) + cmovleq %rsp,%r9 + movl 16(%rdi),%ecx + movq 0(%rdi),%r10 + cmpl %edx,%ecx + movq 8(%rdi),%r14 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu 24(%rdi),%xmm4 + movl %ecx,40(%rsp) + cmovleq %rsp,%r10 + movl 56(%rdi),%ecx + movq 40(%rdi),%r11 + cmpl %edx,%ecx + movq 48(%rdi),%r15 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu 64(%rdi),%xmm5 + movl %ecx,44(%rsp) + cmovleq %rsp,%r11 + testl %edx,%edx + jz .Lenc4x_done + + movups 16-120(%rsi),%xmm1 + pxor %xmm12,%xmm2 + movups 32-120(%rsi),%xmm0 + pxor %xmm12,%xmm3 + movl 240-120(%rsi),%eax + pxor %xmm12,%xmm4 + movdqu (%r8),%xmm6 + pxor %xmm12,%xmm5 + movdqu (%r9),%xmm7 + pxor %xmm6,%xmm2 + movdqu (%r10),%xmm8 + pxor %xmm7,%xmm3 + movdqu (%r11),%xmm9 + pxor %xmm8,%xmm4 + pxor %xmm9,%xmm5 + movdqa 32(%rsp),%xmm10 + xorq %rbx,%rbx + jmp .Loop_enc4x + +.align 32 +.Loop_enc4x: + addq $16,%rbx + leaq 16(%rsp),%rbp + movl $1,%ecx + subq %rbx,%rbp + +.byte 102,15,56,220,209 + prefetcht0 31(%r8,%rbx,1) + prefetcht0 31(%r9,%rbx,1) +.byte 102,15,56,220,217 + prefetcht0 31(%r10,%rbx,1) + prefetcht0 31(%r10,%rbx,1) +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups 48-120(%rsi),%xmm1 + cmpl 32(%rsp),%ecx +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 + cmovgeq %rbp,%r8 + cmovgq %rbp,%r12 +.byte 102,15,56,220,232 + movups -56(%rsi),%xmm0 + cmpl 36(%rsp),%ecx +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 + cmovgeq %rbp,%r9 + cmovgq %rbp,%r13 +.byte 102,15,56,220,233 + movups -40(%rsi),%xmm1 + cmpl 40(%rsp),%ecx +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 + cmovgeq %rbp,%r10 + cmovgq %rbp,%r14 +.byte 102,15,56,220,232 + movups -24(%rsi),%xmm0 + cmpl 44(%rsp),%ecx +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 + cmovgeq %rbp,%r11 + cmovgq %rbp,%r15 +.byte 102,15,56,220,233 + movups -8(%rsi),%xmm1 + movdqa %xmm10,%xmm11 +.byte 102,15,56,220,208 + prefetcht0 15(%r12,%rbx,1) + prefetcht0 15(%r13,%rbx,1) +.byte 102,15,56,220,216 + prefetcht0 15(%r14,%rbx,1) + prefetcht0 15(%r15,%rbx,1) +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups 128-120(%rsi),%xmm0 + pxor %xmm12,%xmm12 + +.byte 102,15,56,220,209 + pcmpgtd %xmm12,%xmm11 + movdqu -120(%rsi),%xmm12 +.byte 102,15,56,220,217 + paddd %xmm11,%xmm10 + movdqa %xmm10,32(%rsp) +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups 144-120(%rsi),%xmm1 + + cmpl $11,%eax + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups 160-120(%rsi),%xmm0 + + jb .Lenc4x_tail + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups 176-120(%rsi),%xmm1 + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups 192-120(%rsi),%xmm0 + + je .Lenc4x_tail + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups 208-120(%rsi),%xmm1 + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups 224-120(%rsi),%xmm0 + jmp .Lenc4x_tail + +.align 32 +.Lenc4x_tail: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movdqu (%r8,%rbx,1),%xmm6 + movdqu 16-120(%rsi),%xmm1 + +.byte 102,15,56,221,208 + movdqu (%r9,%rbx,1),%xmm7 + pxor %xmm12,%xmm6 +.byte 102,15,56,221,216 + movdqu (%r10,%rbx,1),%xmm8 + pxor %xmm12,%xmm7 +.byte 102,15,56,221,224 + movdqu (%r11,%rbx,1),%xmm9 + pxor %xmm12,%xmm8 +.byte 102,15,56,221,232 + movdqu 32-120(%rsi),%xmm0 + pxor %xmm12,%xmm9 + + movups %xmm2,-16(%r12,%rbx,1) + pxor %xmm6,%xmm2 + movups %xmm3,-16(%r13,%rbx,1) + pxor %xmm7,%xmm3 + movups %xmm4,-16(%r14,%rbx,1) + pxor %xmm8,%xmm4 + movups %xmm5,-16(%r15,%rbx,1) + pxor %xmm9,%xmm5 + + decl %edx + jnz .Loop_enc4x + + movq 16(%rsp),%rax +.cfi_def_cfa %rax,8 + movl 24(%rsp),%edx + + + + + + + + + + + leaq 160(%rdi),%rdi + decl %edx + jnz .Lenc4x_loop_grande + +.Lenc4x_done: + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lenc4x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_multi_cbc_encrypt,.-aesni_multi_cbc_encrypt + +.globl aesni_multi_cbc_decrypt +.type aesni_multi_cbc_decrypt,@function +.align 32 +aesni_multi_cbc_decrypt: +.cfi_startproc + cmpl $2,%edx + jb .Ldec_non_avx + movl OPENSSL_ia32cap_P+4(%rip),%ecx + testl $268435456,%ecx + jnz _avx_cbc_dec_shortcut + jmp .Ldec_non_avx +.align 16 +.Ldec_non_avx: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + + + + + + + subq $48,%rsp + andq $-64,%rsp + movq %rax,16(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x10,0x06,0x23,0x08 + +.Ldec4x_body: + movdqu (%rsi),%xmm12 + leaq 120(%rsi),%rsi + leaq 80(%rdi),%rdi + +.Ldec4x_loop_grande: + movl %edx,24(%rsp) + xorl %edx,%edx + movl -64(%rdi),%ecx + movq -80(%rdi),%r8 + cmpl %edx,%ecx + movq -72(%rdi),%r12 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu -56(%rdi),%xmm6 + movl %ecx,32(%rsp) + cmovleq %rsp,%r8 + movl -24(%rdi),%ecx + movq -40(%rdi),%r9 + cmpl %edx,%ecx + movq -32(%rdi),%r13 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu -16(%rdi),%xmm7 + movl %ecx,36(%rsp) + cmovleq %rsp,%r9 + movl 16(%rdi),%ecx + movq 0(%rdi),%r10 + cmpl %edx,%ecx + movq 8(%rdi),%r14 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu 24(%rdi),%xmm8 + movl %ecx,40(%rsp) + cmovleq %rsp,%r10 + movl 56(%rdi),%ecx + movq 40(%rdi),%r11 + cmpl %edx,%ecx + movq 48(%rdi),%r15 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu 64(%rdi),%xmm9 + movl %ecx,44(%rsp) + cmovleq %rsp,%r11 + testl %edx,%edx + jz .Ldec4x_done + + movups 16-120(%rsi),%xmm1 + movups 32-120(%rsi),%xmm0 + movl 240-120(%rsi),%eax + movdqu (%r8),%xmm2 + movdqu (%r9),%xmm3 + pxor %xmm12,%xmm2 + movdqu (%r10),%xmm4 + pxor %xmm12,%xmm3 + movdqu (%r11),%xmm5 + pxor %xmm12,%xmm4 + pxor %xmm12,%xmm5 + movdqa 32(%rsp),%xmm10 + xorq %rbx,%rbx + jmp .Loop_dec4x + +.align 32 +.Loop_dec4x: + addq $16,%rbx + leaq 16(%rsp),%rbp + movl $1,%ecx + subq %rbx,%rbp + +.byte 102,15,56,222,209 + prefetcht0 31(%r8,%rbx,1) + prefetcht0 31(%r9,%rbx,1) +.byte 102,15,56,222,217 + prefetcht0 31(%r10,%rbx,1) + prefetcht0 31(%r11,%rbx,1) +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups 48-120(%rsi),%xmm1 + cmpl 32(%rsp),%ecx +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 + cmovgeq %rbp,%r8 + cmovgq %rbp,%r12 +.byte 102,15,56,222,232 + movups -56(%rsi),%xmm0 + cmpl 36(%rsp),%ecx +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 + cmovgeq %rbp,%r9 + cmovgq %rbp,%r13 +.byte 102,15,56,222,233 + movups -40(%rsi),%xmm1 + cmpl 40(%rsp),%ecx +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 + cmovgeq %rbp,%r10 + cmovgq %rbp,%r14 +.byte 102,15,56,222,232 + movups -24(%rsi),%xmm0 + cmpl 44(%rsp),%ecx +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 + cmovgeq %rbp,%r11 + cmovgq %rbp,%r15 +.byte 102,15,56,222,233 + movups -8(%rsi),%xmm1 + movdqa %xmm10,%xmm11 +.byte 102,15,56,222,208 + prefetcht0 15(%r12,%rbx,1) + prefetcht0 15(%r13,%rbx,1) +.byte 102,15,56,222,216 + prefetcht0 15(%r14,%rbx,1) + prefetcht0 15(%r15,%rbx,1) +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups 128-120(%rsi),%xmm0 + pxor %xmm12,%xmm12 + +.byte 102,15,56,222,209 + pcmpgtd %xmm12,%xmm11 + movdqu -120(%rsi),%xmm12 +.byte 102,15,56,222,217 + paddd %xmm11,%xmm10 + movdqa %xmm10,32(%rsp) +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups 144-120(%rsi),%xmm1 + + cmpl $11,%eax + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups 160-120(%rsi),%xmm0 + + jb .Ldec4x_tail + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups 176-120(%rsi),%xmm1 + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups 192-120(%rsi),%xmm0 + + je .Ldec4x_tail + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups 208-120(%rsi),%xmm1 + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups 224-120(%rsi),%xmm0 + jmp .Ldec4x_tail + +.align 32 +.Ldec4x_tail: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 + pxor %xmm0,%xmm6 + pxor %xmm0,%xmm7 +.byte 102,15,56,222,233 + movdqu 16-120(%rsi),%xmm1 + pxor %xmm0,%xmm8 + pxor %xmm0,%xmm9 + movdqu 32-120(%rsi),%xmm0 + +.byte 102,15,56,223,214 +.byte 102,15,56,223,223 + movdqu -16(%r8,%rbx,1),%xmm6 + movdqu -16(%r9,%rbx,1),%xmm7 +.byte 102,65,15,56,223,224 +.byte 102,65,15,56,223,233 + movdqu -16(%r10,%rbx,1),%xmm8 + movdqu -16(%r11,%rbx,1),%xmm9 + + movups %xmm2,-16(%r12,%rbx,1) + movdqu (%r8,%rbx,1),%xmm2 + movups %xmm3,-16(%r13,%rbx,1) + movdqu (%r9,%rbx,1),%xmm3 + pxor %xmm12,%xmm2 + movups %xmm4,-16(%r14,%rbx,1) + movdqu (%r10,%rbx,1),%xmm4 + pxor %xmm12,%xmm3 + movups %xmm5,-16(%r15,%rbx,1) + movdqu (%r11,%rbx,1),%xmm5 + pxor %xmm12,%xmm4 + pxor %xmm12,%xmm5 + + decl %edx + jnz .Loop_dec4x + + movq 16(%rsp),%rax +.cfi_def_cfa %rax,8 + movl 24(%rsp),%edx + + leaq 160(%rdi),%rdi + decl %edx + jnz .Ldec4x_loop_grande + +.Ldec4x_done: + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Ldec4x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_multi_cbc_decrypt,.-aesni_multi_cbc_decrypt +.type aesni_multi_cbc_encrypt_avx,@function +.align 32 +aesni_multi_cbc_encrypt_avx: +.cfi_startproc +_avx_cbc_enc_shortcut: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + + + + + + + + + subq $192,%rsp + andq $-128,%rsp + movq %rax,16(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x10,0x06,0x23,0x08 + +.Lenc8x_body: + vzeroupper + vmovdqu (%rsi),%xmm15 + leaq 120(%rsi),%rsi + leaq 160(%rdi),%rdi + shrl $1,%edx + +.Lenc8x_loop_grande: + + xorl %edx,%edx + movl -144(%rdi),%ecx + movq -160(%rdi),%r8 + cmpl %edx,%ecx + movq -152(%rdi),%rbx + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -136(%rdi),%xmm2 + movl %ecx,32(%rsp) + cmovleq %rsp,%r8 + subq %r8,%rbx + movq %rbx,64(%rsp) + movl -104(%rdi),%ecx + movq -120(%rdi),%r9 + cmpl %edx,%ecx + movq -112(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -96(%rdi),%xmm3 + movl %ecx,36(%rsp) + cmovleq %rsp,%r9 + subq %r9,%rbp + movq %rbp,72(%rsp) + movl -64(%rdi),%ecx + movq -80(%rdi),%r10 + cmpl %edx,%ecx + movq -72(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -56(%rdi),%xmm4 + movl %ecx,40(%rsp) + cmovleq %rsp,%r10 + subq %r10,%rbp + movq %rbp,80(%rsp) + movl -24(%rdi),%ecx + movq -40(%rdi),%r11 + cmpl %edx,%ecx + movq -32(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -16(%rdi),%xmm5 + movl %ecx,44(%rsp) + cmovleq %rsp,%r11 + subq %r11,%rbp + movq %rbp,88(%rsp) + movl 16(%rdi),%ecx + movq 0(%rdi),%r12 + cmpl %edx,%ecx + movq 8(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 24(%rdi),%xmm6 + movl %ecx,48(%rsp) + cmovleq %rsp,%r12 + subq %r12,%rbp + movq %rbp,96(%rsp) + movl 56(%rdi),%ecx + movq 40(%rdi),%r13 + cmpl %edx,%ecx + movq 48(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 64(%rdi),%xmm7 + movl %ecx,52(%rsp) + cmovleq %rsp,%r13 + subq %r13,%rbp + movq %rbp,104(%rsp) + movl 96(%rdi),%ecx + movq 80(%rdi),%r14 + cmpl %edx,%ecx + movq 88(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 104(%rdi),%xmm8 + movl %ecx,56(%rsp) + cmovleq %rsp,%r14 + subq %r14,%rbp + movq %rbp,112(%rsp) + movl 136(%rdi),%ecx + movq 120(%rdi),%r15 + cmpl %edx,%ecx + movq 128(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 144(%rdi),%xmm9 + movl %ecx,60(%rsp) + cmovleq %rsp,%r15 + subq %r15,%rbp + movq %rbp,120(%rsp) + testl %edx,%edx + jz .Lenc8x_done + + vmovups 16-120(%rsi),%xmm1 + vmovups 32-120(%rsi),%xmm0 + movl 240-120(%rsi),%eax + + vpxor (%r8),%xmm15,%xmm10 + leaq 128(%rsp),%rbp + vpxor (%r9),%xmm15,%xmm11 + vpxor (%r10),%xmm15,%xmm12 + vpxor (%r11),%xmm15,%xmm13 + vpxor %xmm10,%xmm2,%xmm2 + vpxor (%r12),%xmm15,%xmm10 + vpxor %xmm11,%xmm3,%xmm3 + vpxor (%r13),%xmm15,%xmm11 + vpxor %xmm12,%xmm4,%xmm4 + vpxor (%r14),%xmm15,%xmm12 + vpxor %xmm13,%xmm5,%xmm5 + vpxor (%r15),%xmm15,%xmm13 + vpxor %xmm10,%xmm6,%xmm6 + movl $1,%ecx + vpxor %xmm11,%xmm7,%xmm7 + vpxor %xmm12,%xmm8,%xmm8 + vpxor %xmm13,%xmm9,%xmm9 + jmp .Loop_enc8x + +.align 32 +.Loop_enc8x: + vaesenc %xmm1,%xmm2,%xmm2 + cmpl 32+0(%rsp),%ecx + vaesenc %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r8) + vaesenc %xmm1,%xmm4,%xmm4 + vaesenc %xmm1,%xmm5,%xmm5 + leaq (%r8,%rbx,1),%rbx + cmovgeq %rsp,%r8 + vaesenc %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm1,%xmm7,%xmm7 + subq %r8,%rbx + vaesenc %xmm1,%xmm8,%xmm8 + vpxor 16(%r8),%xmm15,%xmm10 + movq %rbx,64+0(%rsp) + vaesenc %xmm1,%xmm9,%xmm9 + vmovups -72(%rsi),%xmm1 + leaq 16(%r8,%rbx,1),%r8 + vmovdqu %xmm10,0(%rbp) + vaesenc %xmm0,%xmm2,%xmm2 + cmpl 32+4(%rsp),%ecx + movq 64+8(%rsp),%rbx + vaesenc %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r9) + vaesenc %xmm0,%xmm4,%xmm4 + vaesenc %xmm0,%xmm5,%xmm5 + leaq (%r9,%rbx,1),%rbx + cmovgeq %rsp,%r9 + vaesenc %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm0,%xmm7,%xmm7 + subq %r9,%rbx + vaesenc %xmm0,%xmm8,%xmm8 + vpxor 16(%r9),%xmm15,%xmm11 + movq %rbx,64+8(%rsp) + vaesenc %xmm0,%xmm9,%xmm9 + vmovups -56(%rsi),%xmm0 + leaq 16(%r9,%rbx,1),%r9 + vmovdqu %xmm11,16(%rbp) + vaesenc %xmm1,%xmm2,%xmm2 + cmpl 32+8(%rsp),%ecx + movq 64+16(%rsp),%rbx + vaesenc %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r10) + vaesenc %xmm1,%xmm4,%xmm4 + prefetcht0 15(%r8) + vaesenc %xmm1,%xmm5,%xmm5 + leaq (%r10,%rbx,1),%rbx + cmovgeq %rsp,%r10 + vaesenc %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm1,%xmm7,%xmm7 + subq %r10,%rbx + vaesenc %xmm1,%xmm8,%xmm8 + vpxor 16(%r10),%xmm15,%xmm12 + movq %rbx,64+16(%rsp) + vaesenc %xmm1,%xmm9,%xmm9 + vmovups -40(%rsi),%xmm1 + leaq 16(%r10,%rbx,1),%r10 + vmovdqu %xmm12,32(%rbp) + vaesenc %xmm0,%xmm2,%xmm2 + cmpl 32+12(%rsp),%ecx + movq 64+24(%rsp),%rbx + vaesenc %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r11) + vaesenc %xmm0,%xmm4,%xmm4 + prefetcht0 15(%r9) + vaesenc %xmm0,%xmm5,%xmm5 + leaq (%r11,%rbx,1),%rbx + cmovgeq %rsp,%r11 + vaesenc %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm0,%xmm7,%xmm7 + subq %r11,%rbx + vaesenc %xmm0,%xmm8,%xmm8 + vpxor 16(%r11),%xmm15,%xmm13 + movq %rbx,64+24(%rsp) + vaesenc %xmm0,%xmm9,%xmm9 + vmovups -24(%rsi),%xmm0 + leaq 16(%r11,%rbx,1),%r11 + vmovdqu %xmm13,48(%rbp) + vaesenc %xmm1,%xmm2,%xmm2 + cmpl 32+16(%rsp),%ecx + movq 64+32(%rsp),%rbx + vaesenc %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r12) + vaesenc %xmm1,%xmm4,%xmm4 + prefetcht0 15(%r10) + vaesenc %xmm1,%xmm5,%xmm5 + leaq (%r12,%rbx,1),%rbx + cmovgeq %rsp,%r12 + vaesenc %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm1,%xmm7,%xmm7 + subq %r12,%rbx + vaesenc %xmm1,%xmm8,%xmm8 + vpxor 16(%r12),%xmm15,%xmm10 + movq %rbx,64+32(%rsp) + vaesenc %xmm1,%xmm9,%xmm9 + vmovups -8(%rsi),%xmm1 + leaq 16(%r12,%rbx,1),%r12 + vaesenc %xmm0,%xmm2,%xmm2 + cmpl 32+20(%rsp),%ecx + movq 64+40(%rsp),%rbx + vaesenc %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r13) + vaesenc %xmm0,%xmm4,%xmm4 + prefetcht0 15(%r11) + vaesenc %xmm0,%xmm5,%xmm5 + leaq (%rbx,%r13,1),%rbx + cmovgeq %rsp,%r13 + vaesenc %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm0,%xmm7,%xmm7 + subq %r13,%rbx + vaesenc %xmm0,%xmm8,%xmm8 + vpxor 16(%r13),%xmm15,%xmm11 + movq %rbx,64+40(%rsp) + vaesenc %xmm0,%xmm9,%xmm9 + vmovups 8(%rsi),%xmm0 + leaq 16(%r13,%rbx,1),%r13 + vaesenc %xmm1,%xmm2,%xmm2 + cmpl 32+24(%rsp),%ecx + movq 64+48(%rsp),%rbx + vaesenc %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r14) + vaesenc %xmm1,%xmm4,%xmm4 + prefetcht0 15(%r12) + vaesenc %xmm1,%xmm5,%xmm5 + leaq (%r14,%rbx,1),%rbx + cmovgeq %rsp,%r14 + vaesenc %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm1,%xmm7,%xmm7 + subq %r14,%rbx + vaesenc %xmm1,%xmm8,%xmm8 + vpxor 16(%r14),%xmm15,%xmm12 + movq %rbx,64+48(%rsp) + vaesenc %xmm1,%xmm9,%xmm9 + vmovups 24(%rsi),%xmm1 + leaq 16(%r14,%rbx,1),%r14 + vaesenc %xmm0,%xmm2,%xmm2 + cmpl 32+28(%rsp),%ecx + movq 64+56(%rsp),%rbx + vaesenc %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r15) + vaesenc %xmm0,%xmm4,%xmm4 + prefetcht0 15(%r13) + vaesenc %xmm0,%xmm5,%xmm5 + leaq (%r15,%rbx,1),%rbx + cmovgeq %rsp,%r15 + vaesenc %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm0,%xmm7,%xmm7 + subq %r15,%rbx + vaesenc %xmm0,%xmm8,%xmm8 + vpxor 16(%r15),%xmm15,%xmm13 + movq %rbx,64+56(%rsp) + vaesenc %xmm0,%xmm9,%xmm9 + vmovups 40(%rsi),%xmm0 + leaq 16(%r15,%rbx,1),%r15 + vmovdqu 32(%rsp),%xmm14 + prefetcht0 15(%r14) + prefetcht0 15(%r15) + cmpl $11,%eax + jb .Lenc8x_tail + + vaesenc %xmm1,%xmm2,%xmm2 + vaesenc %xmm1,%xmm3,%xmm3 + vaesenc %xmm1,%xmm4,%xmm4 + vaesenc %xmm1,%xmm5,%xmm5 + vaesenc %xmm1,%xmm6,%xmm6 + vaesenc %xmm1,%xmm7,%xmm7 + vaesenc %xmm1,%xmm8,%xmm8 + vaesenc %xmm1,%xmm9,%xmm9 + vmovups 176-120(%rsi),%xmm1 + + vaesenc %xmm0,%xmm2,%xmm2 + vaesenc %xmm0,%xmm3,%xmm3 + vaesenc %xmm0,%xmm4,%xmm4 + vaesenc %xmm0,%xmm5,%xmm5 + vaesenc %xmm0,%xmm6,%xmm6 + vaesenc %xmm0,%xmm7,%xmm7 + vaesenc %xmm0,%xmm8,%xmm8 + vaesenc %xmm0,%xmm9,%xmm9 + vmovups 192-120(%rsi),%xmm0 + je .Lenc8x_tail + + vaesenc %xmm1,%xmm2,%xmm2 + vaesenc %xmm1,%xmm3,%xmm3 + vaesenc %xmm1,%xmm4,%xmm4 + vaesenc %xmm1,%xmm5,%xmm5 + vaesenc %xmm1,%xmm6,%xmm6 + vaesenc %xmm1,%xmm7,%xmm7 + vaesenc %xmm1,%xmm8,%xmm8 + vaesenc %xmm1,%xmm9,%xmm9 + vmovups 208-120(%rsi),%xmm1 + + vaesenc %xmm0,%xmm2,%xmm2 + vaesenc %xmm0,%xmm3,%xmm3 + vaesenc %xmm0,%xmm4,%xmm4 + vaesenc %xmm0,%xmm5,%xmm5 + vaesenc %xmm0,%xmm6,%xmm6 + vaesenc %xmm0,%xmm7,%xmm7 + vaesenc %xmm0,%xmm8,%xmm8 + vaesenc %xmm0,%xmm9,%xmm9 + vmovups 224-120(%rsi),%xmm0 + +.Lenc8x_tail: + vaesenc %xmm1,%xmm2,%xmm2 + vpxor %xmm15,%xmm15,%xmm15 + vaesenc %xmm1,%xmm3,%xmm3 + vaesenc %xmm1,%xmm4,%xmm4 + vpcmpgtd %xmm15,%xmm14,%xmm15 + vaesenc %xmm1,%xmm5,%xmm5 + vaesenc %xmm1,%xmm6,%xmm6 + vpaddd %xmm14,%xmm15,%xmm15 + vmovdqu 48(%rsp),%xmm14 + vaesenc %xmm1,%xmm7,%xmm7 + movq 64(%rsp),%rbx + vaesenc %xmm1,%xmm8,%xmm8 + vaesenc %xmm1,%xmm9,%xmm9 + vmovups 16-120(%rsi),%xmm1 + + vaesenclast %xmm0,%xmm2,%xmm2 + vmovdqa %xmm15,32(%rsp) + vpxor %xmm15,%xmm15,%xmm15 + vaesenclast %xmm0,%xmm3,%xmm3 + vaesenclast %xmm0,%xmm4,%xmm4 + vpcmpgtd %xmm15,%xmm14,%xmm15 + vaesenclast %xmm0,%xmm5,%xmm5 + vaesenclast %xmm0,%xmm6,%xmm6 + vpaddd %xmm15,%xmm14,%xmm14 + vmovdqu -120(%rsi),%xmm15 + vaesenclast %xmm0,%xmm7,%xmm7 + vaesenclast %xmm0,%xmm8,%xmm8 + vmovdqa %xmm14,48(%rsp) + vaesenclast %xmm0,%xmm9,%xmm9 + vmovups 32-120(%rsi),%xmm0 + + vmovups %xmm2,-16(%r8) + subq %rbx,%r8 + vpxor 0(%rbp),%xmm2,%xmm2 + vmovups %xmm3,-16(%r9) + subq 72(%rsp),%r9 + vpxor 16(%rbp),%xmm3,%xmm3 + vmovups %xmm4,-16(%r10) + subq 80(%rsp),%r10 + vpxor 32(%rbp),%xmm4,%xmm4 + vmovups %xmm5,-16(%r11) + subq 88(%rsp),%r11 + vpxor 48(%rbp),%xmm5,%xmm5 + vmovups %xmm6,-16(%r12) + subq 96(%rsp),%r12 + vpxor %xmm10,%xmm6,%xmm6 + vmovups %xmm7,-16(%r13) + subq 104(%rsp),%r13 + vpxor %xmm11,%xmm7,%xmm7 + vmovups %xmm8,-16(%r14) + subq 112(%rsp),%r14 + vpxor %xmm12,%xmm8,%xmm8 + vmovups %xmm9,-16(%r15) + subq 120(%rsp),%r15 + vpxor %xmm13,%xmm9,%xmm9 + + decl %edx + jnz .Loop_enc8x + + movq 16(%rsp),%rax +.cfi_def_cfa %rax,8 + + + + + +.Lenc8x_done: + vzeroupper + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lenc8x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_multi_cbc_encrypt_avx,.-aesni_multi_cbc_encrypt_avx + +.type aesni_multi_cbc_decrypt_avx,@function +.align 32 +aesni_multi_cbc_decrypt_avx: +.cfi_startproc +_avx_cbc_dec_shortcut: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + + + + + + + + + + subq $256,%rsp + andq $-256,%rsp + subq $192,%rsp + movq %rax,16(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x10,0x06,0x23,0x08 + +.Ldec8x_body: + vzeroupper + vmovdqu (%rsi),%xmm15 + leaq 120(%rsi),%rsi + leaq 160(%rdi),%rdi + shrl $1,%edx + +.Ldec8x_loop_grande: + + xorl %edx,%edx + movl -144(%rdi),%ecx + movq -160(%rdi),%r8 + cmpl %edx,%ecx + movq -152(%rdi),%rbx + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -136(%rdi),%xmm2 + movl %ecx,32(%rsp) + cmovleq %rsp,%r8 + subq %r8,%rbx + movq %rbx,64(%rsp) + vmovdqu %xmm2,192(%rsp) + movl -104(%rdi),%ecx + movq -120(%rdi),%r9 + cmpl %edx,%ecx + movq -112(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -96(%rdi),%xmm3 + movl %ecx,36(%rsp) + cmovleq %rsp,%r9 + subq %r9,%rbp + movq %rbp,72(%rsp) + vmovdqu %xmm3,208(%rsp) + movl -64(%rdi),%ecx + movq -80(%rdi),%r10 + cmpl %edx,%ecx + movq -72(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -56(%rdi),%xmm4 + movl %ecx,40(%rsp) + cmovleq %rsp,%r10 + subq %r10,%rbp + movq %rbp,80(%rsp) + vmovdqu %xmm4,224(%rsp) + movl -24(%rdi),%ecx + movq -40(%rdi),%r11 + cmpl %edx,%ecx + movq -32(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -16(%rdi),%xmm5 + movl %ecx,44(%rsp) + cmovleq %rsp,%r11 + subq %r11,%rbp + movq %rbp,88(%rsp) + vmovdqu %xmm5,240(%rsp) + movl 16(%rdi),%ecx + movq 0(%rdi),%r12 + cmpl %edx,%ecx + movq 8(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 24(%rdi),%xmm6 + movl %ecx,48(%rsp) + cmovleq %rsp,%r12 + subq %r12,%rbp + movq %rbp,96(%rsp) + vmovdqu %xmm6,256(%rsp) + movl 56(%rdi),%ecx + movq 40(%rdi),%r13 + cmpl %edx,%ecx + movq 48(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 64(%rdi),%xmm7 + movl %ecx,52(%rsp) + cmovleq %rsp,%r13 + subq %r13,%rbp + movq %rbp,104(%rsp) + vmovdqu %xmm7,272(%rsp) + movl 96(%rdi),%ecx + movq 80(%rdi),%r14 + cmpl %edx,%ecx + movq 88(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 104(%rdi),%xmm8 + movl %ecx,56(%rsp) + cmovleq %rsp,%r14 + subq %r14,%rbp + movq %rbp,112(%rsp) + vmovdqu %xmm8,288(%rsp) + movl 136(%rdi),%ecx + movq 120(%rdi),%r15 + cmpl %edx,%ecx + movq 128(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 144(%rdi),%xmm9 + movl %ecx,60(%rsp) + cmovleq %rsp,%r15 + subq %r15,%rbp + movq %rbp,120(%rsp) + vmovdqu %xmm9,304(%rsp) + testl %edx,%edx + jz .Ldec8x_done + + vmovups 16-120(%rsi),%xmm1 + vmovups 32-120(%rsi),%xmm0 + movl 240-120(%rsi),%eax + leaq 192+128(%rsp),%rbp + + vmovdqu (%r8),%xmm2 + vmovdqu (%r9),%xmm3 + vmovdqu (%r10),%xmm4 + vmovdqu (%r11),%xmm5 + vmovdqu (%r12),%xmm6 + vmovdqu (%r13),%xmm7 + vmovdqu (%r14),%xmm8 + vmovdqu (%r15),%xmm9 + vmovdqu %xmm2,0(%rbp) + vpxor %xmm15,%xmm2,%xmm2 + vmovdqu %xmm3,16(%rbp) + vpxor %xmm15,%xmm3,%xmm3 + vmovdqu %xmm4,32(%rbp) + vpxor %xmm15,%xmm4,%xmm4 + vmovdqu %xmm5,48(%rbp) + vpxor %xmm15,%xmm5,%xmm5 + vmovdqu %xmm6,64(%rbp) + vpxor %xmm15,%xmm6,%xmm6 + vmovdqu %xmm7,80(%rbp) + vpxor %xmm15,%xmm7,%xmm7 + vmovdqu %xmm8,96(%rbp) + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu %xmm9,112(%rbp) + vpxor %xmm15,%xmm9,%xmm9 + xorq $0x80,%rbp + movl $1,%ecx + jmp .Loop_dec8x + +.align 32 +.Loop_dec8x: + vaesdec %xmm1,%xmm2,%xmm2 + cmpl 32+0(%rsp),%ecx + vaesdec %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r8) + vaesdec %xmm1,%xmm4,%xmm4 + vaesdec %xmm1,%xmm5,%xmm5 + leaq (%r8,%rbx,1),%rbx + cmovgeq %rsp,%r8 + vaesdec %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm1,%xmm7,%xmm7 + subq %r8,%rbx + vaesdec %xmm1,%xmm8,%xmm8 + vmovdqu 16(%r8),%xmm10 + movq %rbx,64+0(%rsp) + vaesdec %xmm1,%xmm9,%xmm9 + vmovups -72(%rsi),%xmm1 + leaq 16(%r8,%rbx,1),%r8 + vmovdqu %xmm10,128(%rsp) + vaesdec %xmm0,%xmm2,%xmm2 + cmpl 32+4(%rsp),%ecx + movq 64+8(%rsp),%rbx + vaesdec %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r9) + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + leaq (%r9,%rbx,1),%rbx + cmovgeq %rsp,%r9 + vaesdec %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm0,%xmm7,%xmm7 + subq %r9,%rbx + vaesdec %xmm0,%xmm8,%xmm8 + vmovdqu 16(%r9),%xmm11 + movq %rbx,64+8(%rsp) + vaesdec %xmm0,%xmm9,%xmm9 + vmovups -56(%rsi),%xmm0 + leaq 16(%r9,%rbx,1),%r9 + vmovdqu %xmm11,144(%rsp) + vaesdec %xmm1,%xmm2,%xmm2 + cmpl 32+8(%rsp),%ecx + movq 64+16(%rsp),%rbx + vaesdec %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r10) + vaesdec %xmm1,%xmm4,%xmm4 + prefetcht0 15(%r8) + vaesdec %xmm1,%xmm5,%xmm5 + leaq (%r10,%rbx,1),%rbx + cmovgeq %rsp,%r10 + vaesdec %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm1,%xmm7,%xmm7 + subq %r10,%rbx + vaesdec %xmm1,%xmm8,%xmm8 + vmovdqu 16(%r10),%xmm12 + movq %rbx,64+16(%rsp) + vaesdec %xmm1,%xmm9,%xmm9 + vmovups -40(%rsi),%xmm1 + leaq 16(%r10,%rbx,1),%r10 + vmovdqu %xmm12,160(%rsp) + vaesdec %xmm0,%xmm2,%xmm2 + cmpl 32+12(%rsp),%ecx + movq 64+24(%rsp),%rbx + vaesdec %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r11) + vaesdec %xmm0,%xmm4,%xmm4 + prefetcht0 15(%r9) + vaesdec %xmm0,%xmm5,%xmm5 + leaq (%r11,%rbx,1),%rbx + cmovgeq %rsp,%r11 + vaesdec %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm0,%xmm7,%xmm7 + subq %r11,%rbx + vaesdec %xmm0,%xmm8,%xmm8 + vmovdqu 16(%r11),%xmm13 + movq %rbx,64+24(%rsp) + vaesdec %xmm0,%xmm9,%xmm9 + vmovups -24(%rsi),%xmm0 + leaq 16(%r11,%rbx,1),%r11 + vmovdqu %xmm13,176(%rsp) + vaesdec %xmm1,%xmm2,%xmm2 + cmpl 32+16(%rsp),%ecx + movq 64+32(%rsp),%rbx + vaesdec %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r12) + vaesdec %xmm1,%xmm4,%xmm4 + prefetcht0 15(%r10) + vaesdec %xmm1,%xmm5,%xmm5 + leaq (%r12,%rbx,1),%rbx + cmovgeq %rsp,%r12 + vaesdec %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm1,%xmm7,%xmm7 + subq %r12,%rbx + vaesdec %xmm1,%xmm8,%xmm8 + vmovdqu 16(%r12),%xmm10 + movq %rbx,64+32(%rsp) + vaesdec %xmm1,%xmm9,%xmm9 + vmovups -8(%rsi),%xmm1 + leaq 16(%r12,%rbx,1),%r12 + vaesdec %xmm0,%xmm2,%xmm2 + cmpl 32+20(%rsp),%ecx + movq 64+40(%rsp),%rbx + vaesdec %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r13) + vaesdec %xmm0,%xmm4,%xmm4 + prefetcht0 15(%r11) + vaesdec %xmm0,%xmm5,%xmm5 + leaq (%rbx,%r13,1),%rbx + cmovgeq %rsp,%r13 + vaesdec %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm0,%xmm7,%xmm7 + subq %r13,%rbx + vaesdec %xmm0,%xmm8,%xmm8 + vmovdqu 16(%r13),%xmm11 + movq %rbx,64+40(%rsp) + vaesdec %xmm0,%xmm9,%xmm9 + vmovups 8(%rsi),%xmm0 + leaq 16(%r13,%rbx,1),%r13 + vaesdec %xmm1,%xmm2,%xmm2 + cmpl 32+24(%rsp),%ecx + movq 64+48(%rsp),%rbx + vaesdec %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r14) + vaesdec %xmm1,%xmm4,%xmm4 + prefetcht0 15(%r12) + vaesdec %xmm1,%xmm5,%xmm5 + leaq (%r14,%rbx,1),%rbx + cmovgeq %rsp,%r14 + vaesdec %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm1,%xmm7,%xmm7 + subq %r14,%rbx + vaesdec %xmm1,%xmm8,%xmm8 + vmovdqu 16(%r14),%xmm12 + movq %rbx,64+48(%rsp) + vaesdec %xmm1,%xmm9,%xmm9 + vmovups 24(%rsi),%xmm1 + leaq 16(%r14,%rbx,1),%r14 + vaesdec %xmm0,%xmm2,%xmm2 + cmpl 32+28(%rsp),%ecx + movq 64+56(%rsp),%rbx + vaesdec %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r15) + vaesdec %xmm0,%xmm4,%xmm4 + prefetcht0 15(%r13) + vaesdec %xmm0,%xmm5,%xmm5 + leaq (%r15,%rbx,1),%rbx + cmovgeq %rsp,%r15 + vaesdec %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm0,%xmm7,%xmm7 + subq %r15,%rbx + vaesdec %xmm0,%xmm8,%xmm8 + vmovdqu 16(%r15),%xmm13 + movq %rbx,64+56(%rsp) + vaesdec %xmm0,%xmm9,%xmm9 + vmovups 40(%rsi),%xmm0 + leaq 16(%r15,%rbx,1),%r15 + vmovdqu 32(%rsp),%xmm14 + prefetcht0 15(%r14) + prefetcht0 15(%r15) + cmpl $11,%eax + jb .Ldec8x_tail + + vaesdec %xmm1,%xmm2,%xmm2 + vaesdec %xmm1,%xmm3,%xmm3 + vaesdec %xmm1,%xmm4,%xmm4 + vaesdec %xmm1,%xmm5,%xmm5 + vaesdec %xmm1,%xmm6,%xmm6 + vaesdec %xmm1,%xmm7,%xmm7 + vaesdec %xmm1,%xmm8,%xmm8 + vaesdec %xmm1,%xmm9,%xmm9 + vmovups 176-120(%rsi),%xmm1 + + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vaesdec %xmm0,%xmm8,%xmm8 + vaesdec %xmm0,%xmm9,%xmm9 + vmovups 192-120(%rsi),%xmm0 + je .Ldec8x_tail + + vaesdec %xmm1,%xmm2,%xmm2 + vaesdec %xmm1,%xmm3,%xmm3 + vaesdec %xmm1,%xmm4,%xmm4 + vaesdec %xmm1,%xmm5,%xmm5 + vaesdec %xmm1,%xmm6,%xmm6 + vaesdec %xmm1,%xmm7,%xmm7 + vaesdec %xmm1,%xmm8,%xmm8 + vaesdec %xmm1,%xmm9,%xmm9 + vmovups 208-120(%rsi),%xmm1 + + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vaesdec %xmm0,%xmm8,%xmm8 + vaesdec %xmm0,%xmm9,%xmm9 + vmovups 224-120(%rsi),%xmm0 + +.Ldec8x_tail: + vaesdec %xmm1,%xmm2,%xmm2 + vpxor %xmm15,%xmm15,%xmm15 + vaesdec %xmm1,%xmm3,%xmm3 + vaesdec %xmm1,%xmm4,%xmm4 + vpcmpgtd %xmm15,%xmm14,%xmm15 + vaesdec %xmm1,%xmm5,%xmm5 + vaesdec %xmm1,%xmm6,%xmm6 + vpaddd %xmm14,%xmm15,%xmm15 + vmovdqu 48(%rsp),%xmm14 + vaesdec %xmm1,%xmm7,%xmm7 + movq 64(%rsp),%rbx + vaesdec %xmm1,%xmm8,%xmm8 + vaesdec %xmm1,%xmm9,%xmm9 + vmovups 16-120(%rsi),%xmm1 + + vaesdeclast %xmm0,%xmm2,%xmm2 + vmovdqa %xmm15,32(%rsp) + vpxor %xmm15,%xmm15,%xmm15 + vaesdeclast %xmm0,%xmm3,%xmm3 + vpxor 0(%rbp),%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm4,%xmm4 + vpxor 16(%rbp),%xmm3,%xmm3 + vpcmpgtd %xmm15,%xmm14,%xmm15 + vaesdeclast %xmm0,%xmm5,%xmm5 + vpxor 32(%rbp),%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm6,%xmm6 + vpxor 48(%rbp),%xmm5,%xmm5 + vpaddd %xmm15,%xmm14,%xmm14 + vmovdqu -120(%rsi),%xmm15 + vaesdeclast %xmm0,%xmm7,%xmm7 + vpxor 64(%rbp),%xmm6,%xmm6 + vaesdeclast %xmm0,%xmm8,%xmm8 + vpxor 80(%rbp),%xmm7,%xmm7 + vmovdqa %xmm14,48(%rsp) + vaesdeclast %xmm0,%xmm9,%xmm9 + vpxor 96(%rbp),%xmm8,%xmm8 + vmovups 32-120(%rsi),%xmm0 + + vmovups %xmm2,-16(%r8) + subq %rbx,%r8 + vmovdqu 128+0(%rsp),%xmm2 + vpxor 112(%rbp),%xmm9,%xmm9 + vmovups %xmm3,-16(%r9) + subq 72(%rsp),%r9 + vmovdqu %xmm2,0(%rbp) + vpxor %xmm15,%xmm2,%xmm2 + vmovdqu 128+16(%rsp),%xmm3 + vmovups %xmm4,-16(%r10) + subq 80(%rsp),%r10 + vmovdqu %xmm3,16(%rbp) + vpxor %xmm15,%xmm3,%xmm3 + vmovdqu 128+32(%rsp),%xmm4 + vmovups %xmm5,-16(%r11) + subq 88(%rsp),%r11 + vmovdqu %xmm4,32(%rbp) + vpxor %xmm15,%xmm4,%xmm4 + vmovdqu 128+48(%rsp),%xmm5 + vmovups %xmm6,-16(%r12) + subq 96(%rsp),%r12 + vmovdqu %xmm5,48(%rbp) + vpxor %xmm15,%xmm5,%xmm5 + vmovdqu %xmm10,64(%rbp) + vpxor %xmm10,%xmm15,%xmm6 + vmovups %xmm7,-16(%r13) + subq 104(%rsp),%r13 + vmovdqu %xmm11,80(%rbp) + vpxor %xmm11,%xmm15,%xmm7 + vmovups %xmm8,-16(%r14) + subq 112(%rsp),%r14 + vmovdqu %xmm12,96(%rbp) + vpxor %xmm12,%xmm15,%xmm8 + vmovups %xmm9,-16(%r15) + subq 120(%rsp),%r15 + vmovdqu %xmm13,112(%rbp) + vpxor %xmm13,%xmm15,%xmm9 + + xorq $128,%rbp + decl %edx + jnz .Loop_dec8x + + movq 16(%rsp),%rax +.cfi_def_cfa %rax,8 + + + + + +.Ldec8x_done: + vzeroupper + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Ldec8x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_multi_cbc_decrypt_avx,.-aesni_multi_cbc_decrypt_avx diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-sha1-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-sha1-x86_64.s new file mode 100644 index 0000000..a38e21f --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-sha1-x86_64.s @@ -0,0 +1,3035 @@ +.text + + +.globl aesni_cbc_sha1_enc +.type aesni_cbc_sha1_enc,@function +.align 32 +aesni_cbc_sha1_enc: +.cfi_startproc + + movl OPENSSL_ia32cap_P+0(%rip),%r10d + movq OPENSSL_ia32cap_P+4(%rip),%r11 + btq $61,%r11 + jc aesni_cbc_sha1_enc_shaext + andl $268435456,%r11d + andl $1073741824,%r10d + orl %r11d,%r10d + cmpl $1342177280,%r10d + je aesni_cbc_sha1_enc_avx + jmp aesni_cbc_sha1_enc_ssse3 + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_cbc_sha1_enc,.-aesni_cbc_sha1_enc +.type aesni_cbc_sha1_enc_ssse3,@function +.align 32 +aesni_cbc_sha1_enc_ssse3: +.cfi_startproc + movq 8(%rsp),%r10 + + + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + leaq -104(%rsp),%rsp +.cfi_adjust_cfa_offset 104 + + + movq %rdi,%r12 + movq %rsi,%r13 + movq %rdx,%r14 + leaq 112(%rcx),%r15 + movdqu (%r8),%xmm2 + movq %r8,88(%rsp) + shlq $6,%r14 + subq %r12,%r13 + movl 240-112(%r15),%r8d + addq %r10,%r14 + + leaq K_XX_XX(%rip),%r11 + movl 0(%r9),%eax + movl 4(%r9),%ebx + movl 8(%r9),%ecx + movl 12(%r9),%edx + movl %ebx,%esi + movl 16(%r9),%ebp + movl %ecx,%edi + xorl %edx,%edi + andl %edi,%esi + + movdqa 64(%r11),%xmm3 + movdqa 0(%r11),%xmm13 + movdqu 0(%r10),%xmm4 + movdqu 16(%r10),%xmm5 + movdqu 32(%r10),%xmm6 + movdqu 48(%r10),%xmm7 +.byte 102,15,56,0,227 +.byte 102,15,56,0,235 +.byte 102,15,56,0,243 + addq $64,%r10 + paddd %xmm13,%xmm4 +.byte 102,15,56,0,251 + paddd %xmm13,%xmm5 + paddd %xmm13,%xmm6 + movdqa %xmm4,0(%rsp) + psubd %xmm13,%xmm4 + movdqa %xmm5,16(%rsp) + psubd %xmm13,%xmm5 + movdqa %xmm6,32(%rsp) + psubd %xmm13,%xmm6 + movups -112(%r15),%xmm15 + movups 16-112(%r15),%xmm0 + jmp .Loop_ssse3 +.align 32 +.Loop_ssse3: + rorl $2,%ebx + movups 0(%r12),%xmm14 + xorps %xmm15,%xmm14 + xorps %xmm14,%xmm2 + movups -80(%r15),%xmm1 +.byte 102,15,56,220,208 + pshufd $238,%xmm4,%xmm8 + xorl %edx,%esi + movdqa %xmm7,%xmm12 + paddd %xmm7,%xmm13 + movl %eax,%edi + addl 0(%rsp),%ebp + punpcklqdq %xmm5,%xmm8 + xorl %ecx,%ebx + roll $5,%eax + addl %esi,%ebp + psrldq $4,%xmm12 + andl %ebx,%edi + xorl %ecx,%ebx + pxor %xmm4,%xmm8 + addl %eax,%ebp + rorl $7,%eax + pxor %xmm6,%xmm12 + xorl %ecx,%edi + movl %ebp,%esi + addl 4(%rsp),%edx + pxor %xmm12,%xmm8 + xorl %ebx,%eax + roll $5,%ebp + movdqa %xmm13,48(%rsp) + addl %edi,%edx + movups -64(%r15),%xmm0 +.byte 102,15,56,220,209 + andl %eax,%esi + movdqa %xmm8,%xmm3 + xorl %ebx,%eax + addl %ebp,%edx + rorl $7,%ebp + movdqa %xmm8,%xmm12 + xorl %ebx,%esi + pslldq $12,%xmm3 + paddd %xmm8,%xmm8 + movl %edx,%edi + addl 8(%rsp),%ecx + psrld $31,%xmm12 + xorl %eax,%ebp + roll $5,%edx + addl %esi,%ecx + movdqa %xmm3,%xmm13 + andl %ebp,%edi + xorl %eax,%ebp + psrld $30,%xmm3 + addl %edx,%ecx + rorl $7,%edx + por %xmm12,%xmm8 + xorl %eax,%edi + movl %ecx,%esi + addl 12(%rsp),%ebx + movups -48(%r15),%xmm1 +.byte 102,15,56,220,208 + pslld $2,%xmm13 + pxor %xmm3,%xmm8 + xorl %ebp,%edx + movdqa 0(%r11),%xmm3 + roll $5,%ecx + addl %edi,%ebx + andl %edx,%esi + pxor %xmm13,%xmm8 + xorl %ebp,%edx + addl %ecx,%ebx + rorl $7,%ecx + pshufd $238,%xmm5,%xmm9 + xorl %ebp,%esi + movdqa %xmm8,%xmm13 + paddd %xmm8,%xmm3 + movl %ebx,%edi + addl 16(%rsp),%eax + punpcklqdq %xmm6,%xmm9 + xorl %edx,%ecx + roll $5,%ebx + addl %esi,%eax + psrldq $4,%xmm13 + andl %ecx,%edi + xorl %edx,%ecx + pxor %xmm5,%xmm9 + addl %ebx,%eax + rorl $7,%ebx + movups -32(%r15),%xmm0 +.byte 102,15,56,220,209 + pxor %xmm7,%xmm13 + xorl %edx,%edi + movl %eax,%esi + addl 20(%rsp),%ebp + pxor %xmm13,%xmm9 + xorl %ecx,%ebx + roll $5,%eax + movdqa %xmm3,0(%rsp) + addl %edi,%ebp + andl %ebx,%esi + movdqa %xmm9,%xmm12 + xorl %ecx,%ebx + addl %eax,%ebp + rorl $7,%eax + movdqa %xmm9,%xmm13 + xorl %ecx,%esi + pslldq $12,%xmm12 + paddd %xmm9,%xmm9 + movl %ebp,%edi + addl 24(%rsp),%edx + psrld $31,%xmm13 + xorl %ebx,%eax + roll $5,%ebp + addl %esi,%edx + movups -16(%r15),%xmm1 +.byte 102,15,56,220,208 + movdqa %xmm12,%xmm3 + andl %eax,%edi + xorl %ebx,%eax + psrld $30,%xmm12 + addl %ebp,%edx + rorl $7,%ebp + por %xmm13,%xmm9 + xorl %ebx,%edi + movl %edx,%esi + addl 28(%rsp),%ecx + pslld $2,%xmm3 + pxor %xmm12,%xmm9 + xorl %eax,%ebp + movdqa 16(%r11),%xmm12 + roll $5,%edx + addl %edi,%ecx + andl %ebp,%esi + pxor %xmm3,%xmm9 + xorl %eax,%ebp + addl %edx,%ecx + rorl $7,%edx + pshufd $238,%xmm6,%xmm10 + xorl %eax,%esi + movdqa %xmm9,%xmm3 + paddd %xmm9,%xmm12 + movl %ecx,%edi + addl 32(%rsp),%ebx + movups 0(%r15),%xmm0 +.byte 102,15,56,220,209 + punpcklqdq %xmm7,%xmm10 + xorl %ebp,%edx + roll $5,%ecx + addl %esi,%ebx + psrldq $4,%xmm3 + andl %edx,%edi + xorl %ebp,%edx + pxor %xmm6,%xmm10 + addl %ecx,%ebx + rorl $7,%ecx + pxor %xmm8,%xmm3 + xorl %ebp,%edi + movl %ebx,%esi + addl 36(%rsp),%eax + pxor %xmm3,%xmm10 + xorl %edx,%ecx + roll $5,%ebx + movdqa %xmm12,16(%rsp) + addl %edi,%eax + andl %ecx,%esi + movdqa %xmm10,%xmm13 + xorl %edx,%ecx + addl %ebx,%eax + rorl $7,%ebx + movups 16(%r15),%xmm1 +.byte 102,15,56,220,208 + movdqa %xmm10,%xmm3 + xorl %edx,%esi + pslldq $12,%xmm13 + paddd %xmm10,%xmm10 + movl %eax,%edi + addl 40(%rsp),%ebp + psrld $31,%xmm3 + xorl %ecx,%ebx + roll $5,%eax + addl %esi,%ebp + movdqa %xmm13,%xmm12 + andl %ebx,%edi + xorl %ecx,%ebx + psrld $30,%xmm13 + addl %eax,%ebp + rorl $7,%eax + por %xmm3,%xmm10 + xorl %ecx,%edi + movl %ebp,%esi + addl 44(%rsp),%edx + pslld $2,%xmm12 + pxor %xmm13,%xmm10 + xorl %ebx,%eax + movdqa 16(%r11),%xmm13 + roll $5,%ebp + addl %edi,%edx + movups 32(%r15),%xmm0 +.byte 102,15,56,220,209 + andl %eax,%esi + pxor %xmm12,%xmm10 + xorl %ebx,%eax + addl %ebp,%edx + rorl $7,%ebp + pshufd $238,%xmm7,%xmm11 + xorl %ebx,%esi + movdqa %xmm10,%xmm12 + paddd %xmm10,%xmm13 + movl %edx,%edi + addl 48(%rsp),%ecx + punpcklqdq %xmm8,%xmm11 + xorl %eax,%ebp + roll $5,%edx + addl %esi,%ecx + psrldq $4,%xmm12 + andl %ebp,%edi + xorl %eax,%ebp + pxor %xmm7,%xmm11 + addl %edx,%ecx + rorl $7,%edx + pxor %xmm9,%xmm12 + xorl %eax,%edi + movl %ecx,%esi + addl 52(%rsp),%ebx + movups 48(%r15),%xmm1 +.byte 102,15,56,220,208 + pxor %xmm12,%xmm11 + xorl %ebp,%edx + roll $5,%ecx + movdqa %xmm13,32(%rsp) + addl %edi,%ebx + andl %edx,%esi + movdqa %xmm11,%xmm3 + xorl %ebp,%edx + addl %ecx,%ebx + rorl $7,%ecx + movdqa %xmm11,%xmm12 + xorl %ebp,%esi + pslldq $12,%xmm3 + paddd %xmm11,%xmm11 + movl %ebx,%edi + addl 56(%rsp),%eax + psrld $31,%xmm12 + xorl %edx,%ecx + roll $5,%ebx + addl %esi,%eax + movdqa %xmm3,%xmm13 + andl %ecx,%edi + xorl %edx,%ecx + psrld $30,%xmm3 + addl %ebx,%eax + rorl $7,%ebx + cmpl $11,%r8d + jb .Laesenclast1 + movups 64(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 80(%r15),%xmm1 +.byte 102,15,56,220,208 + je .Laesenclast1 + movups 96(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 112(%r15),%xmm1 +.byte 102,15,56,220,208 +.Laesenclast1: +.byte 102,15,56,221,209 + movups 16-112(%r15),%xmm0 + por %xmm12,%xmm11 + xorl %edx,%edi + movl %eax,%esi + addl 60(%rsp),%ebp + pslld $2,%xmm13 + pxor %xmm3,%xmm11 + xorl %ecx,%ebx + movdqa 16(%r11),%xmm3 + roll $5,%eax + addl %edi,%ebp + andl %ebx,%esi + pxor %xmm13,%xmm11 + pshufd $238,%xmm10,%xmm13 + xorl %ecx,%ebx + addl %eax,%ebp + rorl $7,%eax + pxor %xmm8,%xmm4 + xorl %ecx,%esi + movl %ebp,%edi + addl 0(%rsp),%edx + punpcklqdq %xmm11,%xmm13 + xorl %ebx,%eax + roll $5,%ebp + pxor %xmm5,%xmm4 + addl %esi,%edx + movups 16(%r12),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm2,0(%r12,%r13,1) + xorps %xmm14,%xmm2 + movups -80(%r15),%xmm1 +.byte 102,15,56,220,208 + andl %eax,%edi + movdqa %xmm3,%xmm12 + xorl %ebx,%eax + paddd %xmm11,%xmm3 + addl %ebp,%edx + pxor %xmm13,%xmm4 + rorl $7,%ebp + xorl %ebx,%edi + movl %edx,%esi + addl 4(%rsp),%ecx + movdqa %xmm4,%xmm13 + xorl %eax,%ebp + roll $5,%edx + movdqa %xmm3,48(%rsp) + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + pslld $2,%xmm4 + addl %edx,%ecx + rorl $7,%edx + psrld $30,%xmm13 + xorl %eax,%esi + movl %ecx,%edi + addl 8(%rsp),%ebx + movups -64(%r15),%xmm0 +.byte 102,15,56,220,209 + por %xmm13,%xmm4 + xorl %ebp,%edx + roll $5,%ecx + pshufd $238,%xmm11,%xmm3 + addl %esi,%ebx + andl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 12(%rsp),%eax + xorl %ebp,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + rorl $7,%ecx + addl %ebx,%eax + pxor %xmm9,%xmm5 + addl 16(%rsp),%ebp + movups -48(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%esi + punpcklqdq %xmm4,%xmm3 + movl %eax,%edi + roll $5,%eax + pxor %xmm6,%xmm5 + addl %esi,%ebp + xorl %ecx,%edi + movdqa %xmm12,%xmm13 + rorl $7,%ebx + paddd %xmm4,%xmm12 + addl %eax,%ebp + pxor %xmm3,%xmm5 + addl 20(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + movdqa %xmm5,%xmm3 + addl %edi,%edx + xorl %ebx,%esi + movdqa %xmm12,0(%rsp) + rorl $7,%eax + addl %ebp,%edx + addl 24(%rsp),%ecx + pslld $2,%xmm5 + xorl %eax,%esi + movl %edx,%edi + psrld $30,%xmm3 + roll $5,%edx + addl %esi,%ecx + movups -32(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%edi + rorl $7,%ebp + por %xmm3,%xmm5 + addl %edx,%ecx + addl 28(%rsp),%ebx + pshufd $238,%xmm4,%xmm12 + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + addl %ecx,%ebx + pxor %xmm10,%xmm6 + addl 32(%rsp),%eax + xorl %edx,%esi + punpcklqdq %xmm5,%xmm12 + movl %ebx,%edi + roll $5,%ebx + pxor %xmm7,%xmm6 + addl %esi,%eax + xorl %edx,%edi + movdqa 32(%r11),%xmm3 + rorl $7,%ecx + paddd %xmm5,%xmm13 + addl %ebx,%eax + pxor %xmm12,%xmm6 + addl 36(%rsp),%ebp + movups -16(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + movdqa %xmm6,%xmm12 + addl %edi,%ebp + xorl %ecx,%esi + movdqa %xmm13,16(%rsp) + rorl $7,%ebx + addl %eax,%ebp + addl 40(%rsp),%edx + pslld $2,%xmm6 + xorl %ebx,%esi + movl %ebp,%edi + psrld $30,%xmm12 + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + por %xmm12,%xmm6 + addl %ebp,%edx + addl 44(%rsp),%ecx + pshufd $238,%xmm5,%xmm13 + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + addl %edi,%ecx + movups 0(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%esi + rorl $7,%ebp + addl %edx,%ecx + pxor %xmm11,%xmm7 + addl 48(%rsp),%ebx + xorl %ebp,%esi + punpcklqdq %xmm6,%xmm13 + movl %ecx,%edi + roll $5,%ecx + pxor %xmm8,%xmm7 + addl %esi,%ebx + xorl %ebp,%edi + movdqa %xmm3,%xmm12 + rorl $7,%edx + paddd %xmm6,%xmm3 + addl %ecx,%ebx + pxor %xmm13,%xmm7 + addl 52(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + movdqa %xmm7,%xmm13 + addl %edi,%eax + xorl %edx,%esi + movdqa %xmm3,32(%rsp) + rorl $7,%ecx + addl %ebx,%eax + addl 56(%rsp),%ebp + movups 16(%r15),%xmm1 +.byte 102,15,56,220,208 + pslld $2,%xmm7 + xorl %ecx,%esi + movl %eax,%edi + psrld $30,%xmm13 + roll $5,%eax + addl %esi,%ebp + xorl %ecx,%edi + rorl $7,%ebx + por %xmm13,%xmm7 + addl %eax,%ebp + addl 60(%rsp),%edx + pshufd $238,%xmm6,%xmm3 + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + addl %edi,%edx + xorl %ebx,%esi + rorl $7,%eax + addl %ebp,%edx + pxor %xmm4,%xmm8 + addl 0(%rsp),%ecx + xorl %eax,%esi + punpcklqdq %xmm7,%xmm3 + movl %edx,%edi + roll $5,%edx + pxor %xmm9,%xmm8 + addl %esi,%ecx + movups 32(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%edi + movdqa %xmm12,%xmm13 + rorl $7,%ebp + paddd %xmm7,%xmm12 + addl %edx,%ecx + pxor %xmm3,%xmm8 + addl 4(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + movdqa %xmm8,%xmm3 + addl %edi,%ebx + xorl %ebp,%esi + movdqa %xmm12,48(%rsp) + rorl $7,%edx + addl %ecx,%ebx + addl 8(%rsp),%eax + pslld $2,%xmm8 + xorl %edx,%esi + movl %ebx,%edi + psrld $30,%xmm3 + roll $5,%ebx + addl %esi,%eax + xorl %edx,%edi + rorl $7,%ecx + por %xmm3,%xmm8 + addl %ebx,%eax + addl 12(%rsp),%ebp + movups 48(%r15),%xmm1 +.byte 102,15,56,220,208 + pshufd $238,%xmm7,%xmm12 + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + pxor %xmm5,%xmm9 + addl 16(%rsp),%edx + xorl %ebx,%esi + punpcklqdq %xmm8,%xmm12 + movl %ebp,%edi + roll $5,%ebp + pxor %xmm10,%xmm9 + addl %esi,%edx + xorl %ebx,%edi + movdqa %xmm13,%xmm3 + rorl $7,%eax + paddd %xmm8,%xmm13 + addl %ebp,%edx + pxor %xmm12,%xmm9 + addl 20(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + movdqa %xmm9,%xmm12 + addl %edi,%ecx + cmpl $11,%r8d + jb .Laesenclast2 + movups 64(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 80(%r15),%xmm1 +.byte 102,15,56,220,208 + je .Laesenclast2 + movups 96(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 112(%r15),%xmm1 +.byte 102,15,56,220,208 +.Laesenclast2: +.byte 102,15,56,221,209 + movups 16-112(%r15),%xmm0 + xorl %eax,%esi + movdqa %xmm13,0(%rsp) + rorl $7,%ebp + addl %edx,%ecx + addl 24(%rsp),%ebx + pslld $2,%xmm9 + xorl %ebp,%esi + movl %ecx,%edi + psrld $30,%xmm12 + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + por %xmm12,%xmm9 + addl %ecx,%ebx + addl 28(%rsp),%eax + pshufd $238,%xmm8,%xmm13 + rorl $7,%ecx + movl %ebx,%esi + xorl %edx,%edi + roll $5,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + pxor %xmm6,%xmm10 + addl 32(%rsp),%ebp + movups 32(%r12),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm2,16(%r13,%r12,1) + xorps %xmm14,%xmm2 + movups -80(%r15),%xmm1 +.byte 102,15,56,220,208 + andl %ecx,%esi + xorl %edx,%ecx + rorl $7,%ebx + punpcklqdq %xmm9,%xmm13 + movl %eax,%edi + xorl %ecx,%esi + pxor %xmm11,%xmm10 + roll $5,%eax + addl %esi,%ebp + movdqa %xmm3,%xmm12 + xorl %ebx,%edi + paddd %xmm9,%xmm3 + xorl %ecx,%ebx + pxor %xmm13,%xmm10 + addl %eax,%ebp + addl 36(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + rorl $7,%eax + movdqa %xmm10,%xmm13 + movl %ebp,%esi + xorl %ebx,%edi + movdqa %xmm3,16(%rsp) + roll $5,%ebp + addl %edi,%edx + movups -64(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%esi + pslld $2,%xmm10 + xorl %ebx,%eax + addl %ebp,%edx + psrld $30,%xmm13 + addl 40(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + por %xmm13,%xmm10 + rorl $7,%ebp + movl %edx,%edi + xorl %eax,%esi + roll $5,%edx + pshufd $238,%xmm9,%xmm3 + addl %esi,%ecx + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 44(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + rorl $7,%edx + movups -48(%r15),%xmm1 +.byte 102,15,56,220,208 + movl %ecx,%esi + xorl %ebp,%edi + roll $5,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + pxor %xmm7,%xmm11 + addl 48(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + rorl $7,%ecx + punpcklqdq %xmm10,%xmm3 + movl %ebx,%edi + xorl %edx,%esi + pxor %xmm4,%xmm11 + roll $5,%ebx + addl %esi,%eax + movdqa 48(%r11),%xmm13 + xorl %ecx,%edi + paddd %xmm10,%xmm12 + xorl %edx,%ecx + pxor %xmm3,%xmm11 + addl %ebx,%eax + addl 52(%rsp),%ebp + movups -32(%r15),%xmm0 +.byte 102,15,56,220,209 + andl %ecx,%edi + xorl %edx,%ecx + rorl $7,%ebx + movdqa %xmm11,%xmm3 + movl %eax,%esi + xorl %ecx,%edi + movdqa %xmm12,32(%rsp) + roll $5,%eax + addl %edi,%ebp + xorl %ebx,%esi + pslld $2,%xmm11 + xorl %ecx,%ebx + addl %eax,%ebp + psrld $30,%xmm3 + addl 56(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + por %xmm3,%xmm11 + rorl $7,%eax + movl %ebp,%edi + xorl %ebx,%esi + roll $5,%ebp + pshufd $238,%xmm10,%xmm12 + addl %esi,%edx + movups -16(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 60(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + rorl $7,%ebp + movl %edx,%esi + xorl %eax,%edi + roll $5,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + pxor %xmm8,%xmm4 + addl 0(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + rorl $7,%edx + movups 0(%r15),%xmm0 +.byte 102,15,56,220,209 + punpcklqdq %xmm11,%xmm12 + movl %ecx,%edi + xorl %ebp,%esi + pxor %xmm5,%xmm4 + roll $5,%ecx + addl %esi,%ebx + movdqa %xmm13,%xmm3 + xorl %edx,%edi + paddd %xmm11,%xmm13 + xorl %ebp,%edx + pxor %xmm12,%xmm4 + addl %ecx,%ebx + addl 4(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + rorl $7,%ecx + movdqa %xmm4,%xmm12 + movl %ebx,%esi + xorl %edx,%edi + movdqa %xmm13,48(%rsp) + roll $5,%ebx + addl %edi,%eax + xorl %ecx,%esi + pslld $2,%xmm4 + xorl %edx,%ecx + addl %ebx,%eax + psrld $30,%xmm12 + addl 8(%rsp),%ebp + movups 16(%r15),%xmm1 +.byte 102,15,56,220,208 + andl %ecx,%esi + xorl %edx,%ecx + por %xmm12,%xmm4 + rorl $7,%ebx + movl %eax,%edi + xorl %ecx,%esi + roll $5,%eax + pshufd $238,%xmm11,%xmm13 + addl %esi,%ebp + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 12(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + rorl $7,%eax + movl %ebp,%esi + xorl %ebx,%edi + roll $5,%ebp + addl %edi,%edx + movups 32(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + pxor %xmm9,%xmm5 + addl 16(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + rorl $7,%ebp + punpcklqdq %xmm4,%xmm13 + movl %edx,%edi + xorl %eax,%esi + pxor %xmm6,%xmm5 + roll $5,%edx + addl %esi,%ecx + movdqa %xmm3,%xmm12 + xorl %ebp,%edi + paddd %xmm4,%xmm3 + xorl %eax,%ebp + pxor %xmm13,%xmm5 + addl %edx,%ecx + addl 20(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + rorl $7,%edx + movups 48(%r15),%xmm1 +.byte 102,15,56,220,208 + movdqa %xmm5,%xmm13 + movl %ecx,%esi + xorl %ebp,%edi + movdqa %xmm3,0(%rsp) + roll $5,%ecx + addl %edi,%ebx + xorl %edx,%esi + pslld $2,%xmm5 + xorl %ebp,%edx + addl %ecx,%ebx + psrld $30,%xmm13 + addl 24(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + por %xmm13,%xmm5 + rorl $7,%ecx + movl %ebx,%edi + xorl %edx,%esi + roll $5,%ebx + pshufd $238,%xmm4,%xmm3 + addl %esi,%eax + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 28(%rsp),%ebp + cmpl $11,%r8d + jb .Laesenclast3 + movups 64(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 80(%r15),%xmm1 +.byte 102,15,56,220,208 + je .Laesenclast3 + movups 96(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 112(%r15),%xmm1 +.byte 102,15,56,220,208 +.Laesenclast3: +.byte 102,15,56,221,209 + movups 16-112(%r15),%xmm0 + andl %ecx,%edi + xorl %edx,%ecx + rorl $7,%ebx + movl %eax,%esi + xorl %ecx,%edi + roll $5,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + pxor %xmm10,%xmm6 + addl 32(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + rorl $7,%eax + punpcklqdq %xmm5,%xmm3 + movl %ebp,%edi + xorl %ebx,%esi + pxor %xmm7,%xmm6 + roll $5,%ebp + addl %esi,%edx + movups 48(%r12),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm2,32(%r13,%r12,1) + xorps %xmm14,%xmm2 + movups -80(%r15),%xmm1 +.byte 102,15,56,220,208 + movdqa %xmm12,%xmm13 + xorl %eax,%edi + paddd %xmm5,%xmm12 + xorl %ebx,%eax + pxor %xmm3,%xmm6 + addl %ebp,%edx + addl 36(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + rorl $7,%ebp + movdqa %xmm6,%xmm3 + movl %edx,%esi + xorl %eax,%edi + movdqa %xmm12,16(%rsp) + roll $5,%edx + addl %edi,%ecx + xorl %ebp,%esi + pslld $2,%xmm6 + xorl %eax,%ebp + addl %edx,%ecx + psrld $30,%xmm3 + addl 40(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + por %xmm3,%xmm6 + rorl $7,%edx + movups -64(%r15),%xmm0 +.byte 102,15,56,220,209 + movl %ecx,%edi + xorl %ebp,%esi + roll $5,%ecx + pshufd $238,%xmm5,%xmm12 + addl %esi,%ebx + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 44(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + rorl $7,%ecx + movl %ebx,%esi + xorl %edx,%edi + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + addl %ebx,%eax + pxor %xmm11,%xmm7 + addl 48(%rsp),%ebp + movups -48(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%esi + punpcklqdq %xmm6,%xmm12 + movl %eax,%edi + roll $5,%eax + pxor %xmm8,%xmm7 + addl %esi,%ebp + xorl %ecx,%edi + movdqa %xmm13,%xmm3 + rorl $7,%ebx + paddd %xmm6,%xmm13 + addl %eax,%ebp + pxor %xmm12,%xmm7 + addl 52(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + movdqa %xmm7,%xmm12 + addl %edi,%edx + xorl %ebx,%esi + movdqa %xmm13,32(%rsp) + rorl $7,%eax + addl %ebp,%edx + addl 56(%rsp),%ecx + pslld $2,%xmm7 + xorl %eax,%esi + movl %edx,%edi + psrld $30,%xmm12 + roll $5,%edx + addl %esi,%ecx + movups -32(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%edi + rorl $7,%ebp + por %xmm12,%xmm7 + addl %edx,%ecx + addl 60(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + addl %ecx,%ebx + addl 0(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + roll $5,%ebx + paddd %xmm7,%xmm3 + addl %esi,%eax + xorl %edx,%edi + movdqa %xmm3,48(%rsp) + rorl $7,%ecx + addl %ebx,%eax + addl 4(%rsp),%ebp + movups -16(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + addl 8(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + addl %ebp,%edx + addl 12(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + addl %edi,%ecx + movups 0(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%esi + rorl $7,%ebp + addl %edx,%ecx + cmpq %r14,%r10 + je .Ldone_ssse3 + movdqa 64(%r11),%xmm3 + movdqa 0(%r11),%xmm13 + movdqu 0(%r10),%xmm4 + movdqu 16(%r10),%xmm5 + movdqu 32(%r10),%xmm6 + movdqu 48(%r10),%xmm7 +.byte 102,15,56,0,227 + addq $64,%r10 + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi +.byte 102,15,56,0,235 + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + paddd %xmm13,%xmm4 + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + movdqa %xmm4,0(%rsp) + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + rorl $7,%ecx + psubd %xmm13,%xmm4 + addl %ebx,%eax + addl 24(%rsp),%ebp + movups 16(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%esi + movl %eax,%edi + roll $5,%eax + addl %esi,%ebp + xorl %ecx,%edi + rorl $7,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + addl %edi,%edx + xorl %ebx,%esi + rorl $7,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi +.byte 102,15,56,0,243 + roll $5,%edx + addl %esi,%ecx + movups 32(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%edi + rorl $7,%ebp + paddd %xmm13,%xmm5 + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + movdqa %xmm5,16(%rsp) + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + psubd %xmm13,%xmm5 + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + roll $5,%ebx + addl %esi,%eax + xorl %edx,%edi + rorl $7,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + movups 48(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi +.byte 102,15,56,0,251 + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + paddd %xmm13,%xmm6 + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + movdqa %xmm6,32(%rsp) + roll $5,%edx + addl %edi,%ecx + cmpl $11,%r8d + jb .Laesenclast4 + movups 64(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 80(%r15),%xmm1 +.byte 102,15,56,220,208 + je .Laesenclast4 + movups 96(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 112(%r15),%xmm1 +.byte 102,15,56,220,208 +.Laesenclast4: +.byte 102,15,56,221,209 + movups 16-112(%r15),%xmm0 + xorl %eax,%esi + rorl $7,%ebp + psubd %xmm13,%xmm6 + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + rorl $7,%ecx + addl %ebx,%eax + movups %xmm2,48(%r13,%r12,1) + leaq 64(%r12),%r12 + + addl 0(%r9),%eax + addl 4(%r9),%esi + addl 8(%r9),%ecx + addl 12(%r9),%edx + movl %eax,0(%r9) + addl 16(%r9),%ebp + movl %esi,4(%r9) + movl %esi,%ebx + movl %ecx,8(%r9) + movl %ecx,%edi + movl %edx,12(%r9) + xorl %edx,%edi + movl %ebp,16(%r9) + andl %edi,%esi + jmp .Loop_ssse3 + +.Ldone_ssse3: + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + rorl $7,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + movups 16(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%esi + movl %eax,%edi + roll $5,%eax + addl %esi,%ebp + xorl %ecx,%edi + rorl $7,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + addl %edi,%edx + xorl %ebx,%esi + rorl $7,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + roll $5,%edx + addl %esi,%ecx + movups 32(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%edi + rorl $7,%ebp + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + roll $5,%ebx + addl %esi,%eax + xorl %edx,%edi + rorl $7,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + movups 48(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + addl %edi,%ecx + cmpl $11,%r8d + jb .Laesenclast5 + movups 64(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 80(%r15),%xmm1 +.byte 102,15,56,220,208 + je .Laesenclast5 + movups 96(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 112(%r15),%xmm1 +.byte 102,15,56,220,208 +.Laesenclast5: +.byte 102,15,56,221,209 + movups 16-112(%r15),%xmm0 + xorl %eax,%esi + rorl $7,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + rorl $7,%ecx + addl %ebx,%eax + movups %xmm2,48(%r13,%r12,1) + movq 88(%rsp),%r8 + + addl 0(%r9),%eax + addl 4(%r9),%esi + addl 8(%r9),%ecx + movl %eax,0(%r9) + addl 12(%r9),%edx + movl %esi,4(%r9) + addl 16(%r9),%ebp + movl %ecx,8(%r9) + movl %edx,12(%r9) + movl %ebp,16(%r9) + movups %xmm2,(%r8) + leaq 104(%rsp),%rsi +.cfi_def_cfa %rsi,56 + movq 0(%rsi),%r15 +.cfi_restore %r15 + movq 8(%rsi),%r14 +.cfi_restore %r14 + movq 16(%rsi),%r13 +.cfi_restore %r13 + movq 24(%rsi),%r12 +.cfi_restore %r12 + movq 32(%rsi),%rbp +.cfi_restore %rbp + movq 40(%rsi),%rbx +.cfi_restore %rbx + leaq 48(%rsi),%rsp +.cfi_def_cfa %rsp,8 +.Lepilogue_ssse3: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_cbc_sha1_enc_ssse3,.-aesni_cbc_sha1_enc_ssse3 +.type aesni_cbc_sha1_enc_avx,@function +.align 32 +aesni_cbc_sha1_enc_avx: +.cfi_startproc + movq 8(%rsp),%r10 + + + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + leaq -104(%rsp),%rsp +.cfi_adjust_cfa_offset 104 + + + vzeroall + movq %rdi,%r12 + movq %rsi,%r13 + movq %rdx,%r14 + leaq 112(%rcx),%r15 + vmovdqu (%r8),%xmm12 + movq %r8,88(%rsp) + shlq $6,%r14 + subq %r12,%r13 + movl 240-112(%r15),%r8d + addq %r10,%r14 + + leaq K_XX_XX(%rip),%r11 + movl 0(%r9),%eax + movl 4(%r9),%ebx + movl 8(%r9),%ecx + movl 12(%r9),%edx + movl %ebx,%esi + movl 16(%r9),%ebp + movl %ecx,%edi + xorl %edx,%edi + andl %edi,%esi + + vmovdqa 64(%r11),%xmm6 + vmovdqa 0(%r11),%xmm10 + vmovdqu 0(%r10),%xmm0 + vmovdqu 16(%r10),%xmm1 + vmovdqu 32(%r10),%xmm2 + vmovdqu 48(%r10),%xmm3 + vpshufb %xmm6,%xmm0,%xmm0 + addq $64,%r10 + vpshufb %xmm6,%xmm1,%xmm1 + vpshufb %xmm6,%xmm2,%xmm2 + vpshufb %xmm6,%xmm3,%xmm3 + vpaddd %xmm10,%xmm0,%xmm4 + vpaddd %xmm10,%xmm1,%xmm5 + vpaddd %xmm10,%xmm2,%xmm6 + vmovdqa %xmm4,0(%rsp) + vmovdqa %xmm5,16(%rsp) + vmovdqa %xmm6,32(%rsp) + vmovups -112(%r15),%xmm15 + vmovups 16-112(%r15),%xmm14 + jmp .Loop_avx +.align 32 +.Loop_avx: + shrdl $2,%ebx,%ebx + vmovdqu 0(%r12),%xmm13 + vpxor %xmm15,%xmm13,%xmm13 + vpxor %xmm13,%xmm12,%xmm12 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -80(%r15),%xmm15 + xorl %edx,%esi + vpalignr $8,%xmm0,%xmm1,%xmm4 + movl %eax,%edi + addl 0(%rsp),%ebp + vpaddd %xmm3,%xmm10,%xmm9 + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrldq $4,%xmm3,%xmm8 + addl %esi,%ebp + andl %ebx,%edi + vpxor %xmm0,%xmm4,%xmm4 + xorl %ecx,%ebx + addl %eax,%ebp + vpxor %xmm2,%xmm8,%xmm8 + shrdl $7,%eax,%eax + xorl %ecx,%edi + movl %ebp,%esi + addl 4(%rsp),%edx + vpxor %xmm8,%xmm4,%xmm4 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vmovdqa %xmm9,48(%rsp) + addl %edi,%edx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -64(%r15),%xmm14 + andl %eax,%esi + vpsrld $31,%xmm4,%xmm8 + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%esi + vpslldq $12,%xmm4,%xmm9 + vpaddd %xmm4,%xmm4,%xmm4 + movl %edx,%edi + addl 8(%rsp),%ecx + xorl %eax,%ebp + shldl $5,%edx,%edx + vpor %xmm8,%xmm4,%xmm4 + vpsrld $30,%xmm9,%xmm8 + addl %esi,%ecx + andl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + vpslld $2,%xmm9,%xmm9 + vpxor %xmm8,%xmm4,%xmm4 + shrdl $7,%edx,%edx + xorl %eax,%edi + movl %ecx,%esi + addl 12(%rsp),%ebx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -48(%r15),%xmm15 + vpxor %xmm9,%xmm4,%xmm4 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + addl %edi,%ebx + andl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %ebp,%esi + vpalignr $8,%xmm1,%xmm2,%xmm5 + movl %ebx,%edi + addl 16(%rsp),%eax + vpaddd %xmm4,%xmm10,%xmm9 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrldq $4,%xmm4,%xmm8 + addl %esi,%eax + andl %ecx,%edi + vpxor %xmm1,%xmm5,%xmm5 + xorl %edx,%ecx + addl %ebx,%eax + vpxor %xmm3,%xmm8,%xmm8 + shrdl $7,%ebx,%ebx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -32(%r15),%xmm14 + xorl %edx,%edi + movl %eax,%esi + addl 20(%rsp),%ebp + vpxor %xmm8,%xmm5,%xmm5 + xorl %ecx,%ebx + shldl $5,%eax,%eax + vmovdqa %xmm9,0(%rsp) + addl %edi,%ebp + andl %ebx,%esi + vpsrld $31,%xmm5,%xmm8 + xorl %ecx,%ebx + addl %eax,%ebp + shrdl $7,%eax,%eax + xorl %ecx,%esi + vpslldq $12,%xmm5,%xmm9 + vpaddd %xmm5,%xmm5,%xmm5 + movl %ebp,%edi + addl 24(%rsp),%edx + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vpor %xmm8,%xmm5,%xmm5 + vpsrld $30,%xmm9,%xmm8 + addl %esi,%edx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -16(%r15),%xmm15 + andl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + vpslld $2,%xmm9,%xmm9 + vpxor %xmm8,%xmm5,%xmm5 + shrdl $7,%ebp,%ebp + xorl %ebx,%edi + movl %edx,%esi + addl 28(%rsp),%ecx + vpxor %xmm9,%xmm5,%xmm5 + xorl %eax,%ebp + shldl $5,%edx,%edx + vmovdqa 16(%r11),%xmm10 + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + vpalignr $8,%xmm2,%xmm3,%xmm6 + movl %ecx,%edi + addl 32(%rsp),%ebx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 0(%r15),%xmm14 + vpaddd %xmm5,%xmm10,%xmm9 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + vpsrldq $4,%xmm5,%xmm8 + addl %esi,%ebx + andl %edx,%edi + vpxor %xmm2,%xmm6,%xmm6 + xorl %ebp,%edx + addl %ecx,%ebx + vpxor %xmm4,%xmm8,%xmm8 + shrdl $7,%ecx,%ecx + xorl %ebp,%edi + movl %ebx,%esi + addl 36(%rsp),%eax + vpxor %xmm8,%xmm6,%xmm6 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vmovdqa %xmm9,16(%rsp) + addl %edi,%eax + andl %ecx,%esi + vpsrld $31,%xmm6,%xmm8 + xorl %edx,%ecx + addl %ebx,%eax + shrdl $7,%ebx,%ebx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 16(%r15),%xmm15 + xorl %edx,%esi + vpslldq $12,%xmm6,%xmm9 + vpaddd %xmm6,%xmm6,%xmm6 + movl %eax,%edi + addl 40(%rsp),%ebp + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpor %xmm8,%xmm6,%xmm6 + vpsrld $30,%xmm9,%xmm8 + addl %esi,%ebp + andl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + vpslld $2,%xmm9,%xmm9 + vpxor %xmm8,%xmm6,%xmm6 + shrdl $7,%eax,%eax + xorl %ecx,%edi + movl %ebp,%esi + addl 44(%rsp),%edx + vpxor %xmm9,%xmm6,%xmm6 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + addl %edi,%edx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 32(%r15),%xmm14 + andl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%esi + vpalignr $8,%xmm3,%xmm4,%xmm7 + movl %edx,%edi + addl 48(%rsp),%ecx + vpaddd %xmm6,%xmm10,%xmm9 + xorl %eax,%ebp + shldl $5,%edx,%edx + vpsrldq $4,%xmm6,%xmm8 + addl %esi,%ecx + andl %ebp,%edi + vpxor %xmm3,%xmm7,%xmm7 + xorl %eax,%ebp + addl %edx,%ecx + vpxor %xmm5,%xmm8,%xmm8 + shrdl $7,%edx,%edx + xorl %eax,%edi + movl %ecx,%esi + addl 52(%rsp),%ebx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 48(%r15),%xmm15 + vpxor %xmm8,%xmm7,%xmm7 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + vmovdqa %xmm9,32(%rsp) + addl %edi,%ebx + andl %edx,%esi + vpsrld $31,%xmm7,%xmm8 + xorl %ebp,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %ebp,%esi + vpslldq $12,%xmm7,%xmm9 + vpaddd %xmm7,%xmm7,%xmm7 + movl %ebx,%edi + addl 56(%rsp),%eax + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpor %xmm8,%xmm7,%xmm7 + vpsrld $30,%xmm9,%xmm8 + addl %esi,%eax + andl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + vpslld $2,%xmm9,%xmm9 + vpxor %xmm8,%xmm7,%xmm7 + shrdl $7,%ebx,%ebx + cmpl $11,%r8d + jb .Lvaesenclast6 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 64(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 80(%r15),%xmm15 + je .Lvaesenclast6 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 96(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 112(%r15),%xmm15 +.Lvaesenclast6: + vaesenclast %xmm15,%xmm12,%xmm12 + vmovups -112(%r15),%xmm15 + vmovups 16-112(%r15),%xmm14 + xorl %edx,%edi + movl %eax,%esi + addl 60(%rsp),%ebp + vpxor %xmm9,%xmm7,%xmm7 + xorl %ecx,%ebx + shldl $5,%eax,%eax + addl %edi,%ebp + andl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm6,%xmm7,%xmm8 + vpxor %xmm4,%xmm0,%xmm0 + shrdl $7,%eax,%eax + xorl %ecx,%esi + movl %ebp,%edi + addl 0(%rsp),%edx + vpxor %xmm1,%xmm0,%xmm0 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vpaddd %xmm7,%xmm10,%xmm9 + addl %esi,%edx + vmovdqu 16(%r12),%xmm13 + vpxor %xmm15,%xmm13,%xmm13 + vmovups %xmm12,0(%r12,%r13,1) + vpxor %xmm13,%xmm12,%xmm12 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -80(%r15),%xmm15 + andl %eax,%edi + vpxor %xmm8,%xmm0,%xmm0 + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%edi + vpsrld $30,%xmm0,%xmm8 + vmovdqa %xmm9,48(%rsp) + movl %edx,%esi + addl 4(%rsp),%ecx + xorl %eax,%ebp + shldl $5,%edx,%edx + vpslld $2,%xmm0,%xmm0 + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + movl %ecx,%edi + addl 8(%rsp),%ebx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -64(%r15),%xmm14 + vpor %xmm8,%xmm0,%xmm0 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + addl %esi,%ebx + andl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 12(%rsp),%eax + xorl %ebp,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm7,%xmm0,%xmm8 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -48(%r15),%xmm15 + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + vpxor %xmm2,%xmm1,%xmm1 + addl %esi,%ebp + xorl %ecx,%edi + vpaddd %xmm0,%xmm10,%xmm9 + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpxor %xmm8,%xmm1,%xmm1 + addl 20(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + vpsrld $30,%xmm1,%xmm8 + vmovdqa %xmm9,0(%rsp) + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpslld $2,%xmm1,%xmm1 + addl 24(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -32(%r15),%xmm14 + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpor %xmm8,%xmm1,%xmm1 + addl 28(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpalignr $8,%xmm0,%xmm1,%xmm8 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + vpxor %xmm3,%xmm2,%xmm2 + addl %esi,%eax + xorl %edx,%edi + vpaddd %xmm1,%xmm10,%xmm9 + vmovdqa 32(%r11),%xmm10 + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpxor %xmm8,%xmm2,%xmm2 + addl 36(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -16(%r15),%xmm15 + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + vpsrld $30,%xmm2,%xmm8 + vmovdqa %xmm9,16(%rsp) + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpslld $2,%xmm2,%xmm2 + addl 40(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpor %xmm8,%xmm2,%xmm2 + addl 44(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 0(%r15),%xmm14 + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpalignr $8,%xmm1,%xmm2,%xmm8 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + vpxor %xmm4,%xmm3,%xmm3 + addl %esi,%ebx + xorl %ebp,%edi + vpaddd %xmm2,%xmm10,%xmm9 + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpxor %xmm8,%xmm3,%xmm3 + addl 52(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + vpsrld $30,%xmm3,%xmm8 + vmovdqa %xmm9,32(%rsp) + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpslld $2,%xmm3,%xmm3 + addl 56(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 16(%r15),%xmm15 + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpor %xmm8,%xmm3,%xmm3 + addl 60(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpalignr $8,%xmm2,%xmm3,%xmm8 + vpxor %xmm0,%xmm4,%xmm4 + addl 0(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + vpxor %xmm5,%xmm4,%xmm4 + addl %esi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 32(%r15),%xmm14 + xorl %eax,%edi + vpaddd %xmm3,%xmm10,%xmm9 + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpxor %xmm8,%xmm4,%xmm4 + addl 4(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + vpsrld $30,%xmm4,%xmm8 + vmovdqa %xmm9,48(%rsp) + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpslld $2,%xmm4,%xmm4 + addl 8(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpor %xmm8,%xmm4,%xmm4 + addl 12(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 48(%r15),%xmm15 + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm3,%xmm4,%xmm8 + vpxor %xmm1,%xmm5,%xmm5 + addl 16(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + vpxor %xmm6,%xmm5,%xmm5 + addl %esi,%edx + xorl %ebx,%edi + vpaddd %xmm4,%xmm10,%xmm9 + shrdl $7,%eax,%eax + addl %ebp,%edx + vpxor %xmm8,%xmm5,%xmm5 + addl 20(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + vpsrld $30,%xmm5,%xmm8 + vmovdqa %xmm9,0(%rsp) + addl %edi,%ecx + cmpl $11,%r8d + jb .Lvaesenclast7 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 64(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 80(%r15),%xmm15 + je .Lvaesenclast7 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 96(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 112(%r15),%xmm15 +.Lvaesenclast7: + vaesenclast %xmm15,%xmm12,%xmm12 + vmovups -112(%r15),%xmm15 + vmovups 16-112(%r15),%xmm14 + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpslld $2,%xmm5,%xmm5 + addl 24(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpor %xmm8,%xmm5,%xmm5 + addl 28(%rsp),%eax + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm4,%xmm5,%xmm8 + vpxor %xmm2,%xmm6,%xmm6 + addl 32(%rsp),%ebp + vmovdqu 32(%r12),%xmm13 + vpxor %xmm15,%xmm13,%xmm13 + vmovups %xmm12,16(%r13,%r12,1) + vpxor %xmm13,%xmm12,%xmm12 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -80(%r15),%xmm15 + andl %ecx,%esi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + vpxor %xmm7,%xmm6,%xmm6 + movl %eax,%edi + xorl %ecx,%esi + vpaddd %xmm5,%xmm10,%xmm9 + shldl $5,%eax,%eax + addl %esi,%ebp + vpxor %xmm8,%xmm6,%xmm6 + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 36(%rsp),%edx + vpsrld $30,%xmm6,%xmm8 + vmovdqa %xmm9,16(%rsp) + andl %ebx,%edi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%esi + vpslld $2,%xmm6,%xmm6 + xorl %ebx,%edi + shldl $5,%ebp,%ebp + addl %edi,%edx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -64(%r15),%xmm14 + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + addl 40(%rsp),%ecx + andl %eax,%esi + vpor %xmm8,%xmm6,%xmm6 + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%edi + xorl %eax,%esi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 44(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + shrdl $7,%edx,%edx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -48(%r15),%xmm15 + movl %ecx,%esi + xorl %ebp,%edi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + vpalignr $8,%xmm5,%xmm6,%xmm8 + vpxor %xmm3,%xmm7,%xmm7 + addl 48(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + vpxor %xmm0,%xmm7,%xmm7 + movl %ebx,%edi + xorl %edx,%esi + vpaddd %xmm6,%xmm10,%xmm9 + vmovdqa 48(%r11),%xmm10 + shldl $5,%ebx,%ebx + addl %esi,%eax + vpxor %xmm8,%xmm7,%xmm7 + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 52(%rsp),%ebp + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -32(%r15),%xmm14 + vpsrld $30,%xmm7,%xmm8 + vmovdqa %xmm9,32(%rsp) + andl %ecx,%edi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + vpslld $2,%xmm7,%xmm7 + xorl %ecx,%edi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + addl 56(%rsp),%edx + andl %ebx,%esi + vpor %xmm8,%xmm7,%xmm7 + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%edi + xorl %ebx,%esi + shldl $5,%ebp,%ebp + addl %esi,%edx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -16(%r15),%xmm15 + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 60(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%esi + xorl %eax,%edi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + vpalignr $8,%xmm6,%xmm7,%xmm8 + vpxor %xmm4,%xmm0,%xmm0 + addl 0(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + shrdl $7,%edx,%edx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 0(%r15),%xmm14 + vpxor %xmm1,%xmm0,%xmm0 + movl %ecx,%edi + xorl %ebp,%esi + vpaddd %xmm7,%xmm10,%xmm9 + shldl $5,%ecx,%ecx + addl %esi,%ebx + vpxor %xmm8,%xmm0,%xmm0 + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 4(%rsp),%eax + vpsrld $30,%xmm0,%xmm8 + vmovdqa %xmm9,48(%rsp) + andl %edx,%edi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + vpslld $2,%xmm0,%xmm0 + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + addl 8(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 16(%r15),%xmm15 + andl %ecx,%esi + vpor %xmm8,%xmm0,%xmm0 + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%edi + xorl %ecx,%esi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 12(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%esi + xorl %ebx,%edi + shldl $5,%ebp,%ebp + addl %edi,%edx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 32(%r15),%xmm14 + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + vpalignr $8,%xmm7,%xmm0,%xmm8 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + vpxor %xmm2,%xmm1,%xmm1 + movl %edx,%edi + xorl %eax,%esi + vpaddd %xmm0,%xmm10,%xmm9 + shldl $5,%edx,%edx + addl %esi,%ecx + vpxor %xmm8,%xmm1,%xmm1 + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 20(%rsp),%ebx + vpsrld $30,%xmm1,%xmm8 + vmovdqa %xmm9,0(%rsp) + andl %ebp,%edi + xorl %eax,%ebp + shrdl $7,%edx,%edx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 48(%r15),%xmm15 + movl %ecx,%esi + vpslld $2,%xmm1,%xmm1 + xorl %ebp,%edi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + addl 24(%rsp),%eax + andl %edx,%esi + vpor %xmm8,%xmm1,%xmm1 + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%edi + xorl %edx,%esi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 28(%rsp),%ebp + cmpl $11,%r8d + jb .Lvaesenclast8 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 64(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 80(%r15),%xmm15 + je .Lvaesenclast8 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 96(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 112(%r15),%xmm15 +.Lvaesenclast8: + vaesenclast %xmm15,%xmm12,%xmm12 + vmovups -112(%r15),%xmm15 + vmovups 16-112(%r15),%xmm14 + andl %ecx,%edi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + xorl %ecx,%edi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm0,%xmm1,%xmm8 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + vpxor %xmm3,%xmm2,%xmm2 + movl %ebp,%edi + xorl %ebx,%esi + vpaddd %xmm1,%xmm10,%xmm9 + shldl $5,%ebp,%ebp + addl %esi,%edx + vmovdqu 48(%r12),%xmm13 + vpxor %xmm15,%xmm13,%xmm13 + vmovups %xmm12,32(%r13,%r12,1) + vpxor %xmm13,%xmm12,%xmm12 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -80(%r15),%xmm15 + vpxor %xmm8,%xmm2,%xmm2 + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 36(%rsp),%ecx + vpsrld $30,%xmm2,%xmm8 + vmovdqa %xmm9,16(%rsp) + andl %eax,%edi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%esi + vpslld $2,%xmm2,%xmm2 + xorl %eax,%edi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + addl 40(%rsp),%ebx + andl %ebp,%esi + vpor %xmm8,%xmm2,%xmm2 + xorl %eax,%ebp + shrdl $7,%edx,%edx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -64(%r15),%xmm14 + movl %ecx,%edi + xorl %ebp,%esi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 44(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + addl %ebx,%eax + vpalignr $8,%xmm1,%xmm2,%xmm8 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -48(%r15),%xmm15 + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + vpxor %xmm4,%xmm3,%xmm3 + addl %esi,%ebp + xorl %ecx,%edi + vpaddd %xmm2,%xmm10,%xmm9 + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpxor %xmm8,%xmm3,%xmm3 + addl 52(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + vpsrld $30,%xmm3,%xmm8 + vmovdqa %xmm9,32(%rsp) + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpslld $2,%xmm3,%xmm3 + addl 56(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -32(%r15),%xmm14 + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpor %xmm8,%xmm3,%xmm3 + addl 60(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 0(%rsp),%eax + vpaddd %xmm3,%xmm10,%xmm9 + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + vmovdqa %xmm9,48(%rsp) + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 4(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -16(%r15),%xmm15 + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 8(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 12(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 0(%r15),%xmm14 + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + cmpq %r14,%r10 + je .Ldone_avx + vmovdqa 64(%r11),%xmm9 + vmovdqa 0(%r11),%xmm10 + vmovdqu 0(%r10),%xmm0 + vmovdqu 16(%r10),%xmm1 + vmovdqu 32(%r10),%xmm2 + vmovdqu 48(%r10),%xmm3 + vpshufb %xmm9,%xmm0,%xmm0 + addq $64,%r10 + addl 16(%rsp),%ebx + xorl %ebp,%esi + vpshufb %xmm9,%xmm1,%xmm1 + movl %ecx,%edi + shldl $5,%ecx,%ecx + vpaddd %xmm10,%xmm0,%xmm8 + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vmovdqa %xmm8,0(%rsp) + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 16(%r15),%xmm15 + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + vpshufb %xmm9,%xmm2,%xmm2 + movl %edx,%edi + shldl $5,%edx,%edx + vpaddd %xmm10,%xmm1,%xmm8 + addl %esi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 32(%r15),%xmm14 + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vmovdqa %xmm8,16(%rsp) + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 48(%r15),%xmm15 + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + vpshufb %xmm9,%xmm3,%xmm3 + movl %ebp,%edi + shldl $5,%ebp,%ebp + vpaddd %xmm10,%xmm2,%xmm8 + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + vmovdqa %xmm8,32(%rsp) + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + cmpl $11,%r8d + jb .Lvaesenclast9 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 64(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 80(%r15),%xmm15 + je .Lvaesenclast9 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 96(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 112(%r15),%xmm15 +.Lvaesenclast9: + vaesenclast %xmm15,%xmm12,%xmm12 + vmovups -112(%r15),%xmm15 + vmovups 16-112(%r15),%xmm14 + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vmovups %xmm12,48(%r13,%r12,1) + leaq 64(%r12),%r12 + + addl 0(%r9),%eax + addl 4(%r9),%esi + addl 8(%r9),%ecx + addl 12(%r9),%edx + movl %eax,0(%r9) + addl 16(%r9),%ebp + movl %esi,4(%r9) + movl %esi,%ebx + movl %ecx,8(%r9) + movl %ecx,%edi + movl %edx,12(%r9) + xorl %edx,%edi + movl %ebp,16(%r9) + andl %edi,%esi + jmp .Loop_avx + +.Ldone_avx: + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 16(%r15),%xmm15 + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 32(%r15),%xmm14 + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 48(%r15),%xmm15 + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + cmpl $11,%r8d + jb .Lvaesenclast10 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 64(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 80(%r15),%xmm15 + je .Lvaesenclast10 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 96(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 112(%r15),%xmm15 +.Lvaesenclast10: + vaesenclast %xmm15,%xmm12,%xmm12 + vmovups -112(%r15),%xmm15 + vmovups 16-112(%r15),%xmm14 + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vmovups %xmm12,48(%r13,%r12,1) + movq 88(%rsp),%r8 + + addl 0(%r9),%eax + addl 4(%r9),%esi + addl 8(%r9),%ecx + movl %eax,0(%r9) + addl 12(%r9),%edx + movl %esi,4(%r9) + addl 16(%r9),%ebp + movl %ecx,8(%r9) + movl %edx,12(%r9) + movl %ebp,16(%r9) + vmovups %xmm12,(%r8) + vzeroall + leaq 104(%rsp),%rsi +.cfi_def_cfa %rsi,56 + movq 0(%rsi),%r15 +.cfi_restore %r15 + movq 8(%rsi),%r14 +.cfi_restore %r14 + movq 16(%rsi),%r13 +.cfi_restore %r13 + movq 24(%rsi),%r12 +.cfi_restore %r12 + movq 32(%rsi),%rbp +.cfi_restore %rbp + movq 40(%rsi),%rbx +.cfi_restore %rbx + leaq 48(%rsi),%rsp +.cfi_def_cfa %rsp,8 +.Lepilogue_avx: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_cbc_sha1_enc_avx,.-aesni_cbc_sha1_enc_avx +.align 64 +K_XX_XX: +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 + +.byte 65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 64 +.type aesni_cbc_sha1_enc_shaext,@function +.align 32 +aesni_cbc_sha1_enc_shaext: +.cfi_startproc + movq 8(%rsp),%r10 + movdqu (%r9),%xmm8 + movd 16(%r9),%xmm9 + movdqa K_XX_XX+80(%rip),%xmm7 + + movl 240(%rcx),%r11d + subq %rdi,%rsi + movups (%rcx),%xmm15 + movups (%r8),%xmm2 + movups 16(%rcx),%xmm0 + leaq 112(%rcx),%rcx + + pshufd $27,%xmm8,%xmm8 + pshufd $27,%xmm9,%xmm9 + jmp .Loop_shaext + +.align 16 +.Loop_shaext: + movups 0(%rdi),%xmm14 + xorps %xmm15,%xmm14 + xorps %xmm14,%xmm2 + movups -80(%rcx),%xmm1 +.byte 102,15,56,220,208 + movdqu (%r10),%xmm3 + movdqa %xmm9,%xmm12 +.byte 102,15,56,0,223 + movdqu 16(%r10),%xmm4 + movdqa %xmm8,%xmm11 + movups -64(%rcx),%xmm0 +.byte 102,15,56,220,209 +.byte 102,15,56,0,231 + + paddd %xmm3,%xmm9 + movdqu 32(%r10),%xmm5 + leaq 64(%r10),%r10 + pxor %xmm12,%xmm3 + movups -48(%rcx),%xmm1 +.byte 102,15,56,220,208 + pxor %xmm12,%xmm3 + movdqa %xmm8,%xmm10 +.byte 102,15,56,0,239 +.byte 69,15,58,204,193,0 +.byte 68,15,56,200,212 + movups -32(%rcx),%xmm0 +.byte 102,15,56,220,209 +.byte 15,56,201,220 + movdqu -16(%r10),%xmm6 + movdqa %xmm8,%xmm9 +.byte 102,15,56,0,247 + movups -16(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 69,15,58,204,194,0 +.byte 68,15,56,200,205 + pxor %xmm5,%xmm3 +.byte 15,56,201,229 + movups 0(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,0 +.byte 68,15,56,200,214 + movups 16(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,222 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + movups 32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,0 +.byte 68,15,56,200,203 + movups 48(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,227 + pxor %xmm3,%xmm5 +.byte 15,56,201,243 + cmpl $11,%r11d + jb .Laesenclast11 + movups 64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 80(%rcx),%xmm1 +.byte 102,15,56,220,208 + je .Laesenclast11 + movups 96(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 112(%rcx),%xmm1 +.byte 102,15,56,220,208 +.Laesenclast11: +.byte 102,15,56,221,209 + movups 16-112(%rcx),%xmm0 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,0 +.byte 68,15,56,200,212 + movups 16(%rdi),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm2,0(%rsi,%rdi,1) + xorps %xmm14,%xmm2 + movups -80(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,236 + pxor %xmm4,%xmm6 +.byte 15,56,201,220 + movups -64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,1 +.byte 68,15,56,200,205 + movups -48(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,245 + pxor %xmm5,%xmm3 +.byte 15,56,201,229 + movups -32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,1 +.byte 68,15,56,200,214 + movups -16(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,222 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + movups 0(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,1 +.byte 68,15,56,200,203 + movups 16(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,227 + pxor %xmm3,%xmm5 +.byte 15,56,201,243 + movups 32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,1 +.byte 68,15,56,200,212 + movups 48(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,236 + pxor %xmm4,%xmm6 +.byte 15,56,201,220 + cmpl $11,%r11d + jb .Laesenclast12 + movups 64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 80(%rcx),%xmm1 +.byte 102,15,56,220,208 + je .Laesenclast12 + movups 96(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 112(%rcx),%xmm1 +.byte 102,15,56,220,208 +.Laesenclast12: +.byte 102,15,56,221,209 + movups 16-112(%rcx),%xmm0 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,1 +.byte 68,15,56,200,205 + movups 32(%rdi),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm2,16(%rsi,%rdi,1) + xorps %xmm14,%xmm2 + movups -80(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,245 + pxor %xmm5,%xmm3 +.byte 15,56,201,229 + movups -64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,2 +.byte 68,15,56,200,214 + movups -48(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,222 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + movups -32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,2 +.byte 68,15,56,200,203 + movups -16(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,227 + pxor %xmm3,%xmm5 +.byte 15,56,201,243 + movups 0(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,2 +.byte 68,15,56,200,212 + movups 16(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,236 + pxor %xmm4,%xmm6 +.byte 15,56,201,220 + movups 32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,2 +.byte 68,15,56,200,205 + movups 48(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,245 + pxor %xmm5,%xmm3 +.byte 15,56,201,229 + cmpl $11,%r11d + jb .Laesenclast13 + movups 64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 80(%rcx),%xmm1 +.byte 102,15,56,220,208 + je .Laesenclast13 + movups 96(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 112(%rcx),%xmm1 +.byte 102,15,56,220,208 +.Laesenclast13: +.byte 102,15,56,221,209 + movups 16-112(%rcx),%xmm0 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,2 +.byte 68,15,56,200,214 + movups 48(%rdi),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm2,32(%rsi,%rdi,1) + xorps %xmm14,%xmm2 + movups -80(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,222 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + movups -64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,3 +.byte 68,15,56,200,203 + movups -48(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,227 + pxor %xmm3,%xmm5 +.byte 15,56,201,243 + movups -32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,3 +.byte 68,15,56,200,212 +.byte 15,56,202,236 + pxor %xmm4,%xmm6 + movups -16(%rcx),%xmm1 +.byte 102,15,56,220,208 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,3 +.byte 68,15,56,200,205 +.byte 15,56,202,245 + movups 0(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm12,%xmm5 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,3 +.byte 68,15,56,200,214 + movups 16(%rcx),%xmm1 +.byte 102,15,56,220,208 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,3 +.byte 68,15,56,200,205 + movups 32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 48(%rcx),%xmm1 +.byte 102,15,56,220,208 + cmpl $11,%r11d + jb .Laesenclast14 + movups 64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 80(%rcx),%xmm1 +.byte 102,15,56,220,208 + je .Laesenclast14 + movups 96(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 112(%rcx),%xmm1 +.byte 102,15,56,220,208 +.Laesenclast14: +.byte 102,15,56,221,209 + movups 16-112(%rcx),%xmm0 + decq %rdx + + paddd %xmm11,%xmm8 + movups %xmm2,48(%rsi,%rdi,1) + leaq 64(%rdi),%rdi + jnz .Loop_shaext + + pshufd $27,%xmm8,%xmm8 + pshufd $27,%xmm9,%xmm9 + movups %xmm2,(%r8) + movdqu %xmm8,(%r9) + movd %xmm9,16(%r9) + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_cbc_sha1_enc_shaext,.-aesni_cbc_sha1_enc_shaext diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-sha256-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-sha256-x86_64.s new file mode 100644 index 0000000..3e56a82 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-sha256-x86_64.s @@ -0,0 +1,4435 @@ +.text + + +.globl aesni_cbc_sha256_enc +.type aesni_cbc_sha256_enc,@function +.align 16 +aesni_cbc_sha256_enc: +.cfi_startproc + leaq OPENSSL_ia32cap_P(%rip),%r11 + movl $1,%eax + cmpq $0,%rdi + je .Lprobe + movl 0(%r11),%eax + movq 4(%r11),%r10 + btq $61,%r10 + jc aesni_cbc_sha256_enc_shaext + movq %r10,%r11 + shrq $32,%r11 + + testl $2048,%r10d + jnz aesni_cbc_sha256_enc_xop + andl $296,%r11d + cmpl $296,%r11d + je aesni_cbc_sha256_enc_avx2 + andl $268435456,%r10d + jnz aesni_cbc_sha256_enc_avx + ud2 + xorl %eax,%eax + cmpq $0,%rdi + je .Lprobe + ud2 +.Lprobe: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_cbc_sha256_enc,.-aesni_cbc_sha256_enc + +.align 64 +.type K256,@object +K256: +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 + +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0,0,0,0, 0,0,0,0, -1,-1,-1,-1 +.long 0,0,0,0, 0,0,0,0 +.byte 65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54,32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 64 +.type aesni_cbc_sha256_enc_xop,@function +.align 64 +aesni_cbc_sha256_enc_xop: +.cfi_startproc +.Lxop_shortcut: + movq 8(%rsp),%r10 + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + subq $128,%rsp + andq $-64,%rsp + + shlq $6,%rdx + subq %rdi,%rsi + subq %rdi,%r10 + addq %rdi,%rdx + + + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + + movq %r8,64+32(%rsp) + movq %r9,64+40(%rsp) + movq %r10,64+48(%rsp) + movq %rax,120(%rsp) +.cfi_escape 0x0f,0x06,0x77,0xf8,0x00,0x06,0x23,0x08 +.Lprologue_xop: + vzeroall + + movq %rdi,%r12 + leaq 128(%rcx),%rdi + leaq K256+544(%rip),%r13 + movl 240-128(%rdi),%r14d + movq %r9,%r15 + movq %r10,%rsi + vmovdqu (%r8),%xmm8 + subq $9,%r14 + + movl 0(%r15),%eax + movl 4(%r15),%ebx + movl 8(%r15),%ecx + movl 12(%r15),%edx + movl 16(%r15),%r8d + movl 20(%r15),%r9d + movl 24(%r15),%r10d + movl 28(%r15),%r11d + + vmovdqa 0(%r13,%r14,8),%xmm14 + vmovdqa 16(%r13,%r14,8),%xmm13 + vmovdqa 32(%r13,%r14,8),%xmm12 + vmovdqu 0-128(%rdi),%xmm10 + jmp .Lloop_xop +.align 16 +.Lloop_xop: + vmovdqa K256+512(%rip),%xmm7 + vmovdqu 0(%rsi,%r12,1),%xmm0 + vmovdqu 16(%rsi,%r12,1),%xmm1 + vmovdqu 32(%rsi,%r12,1),%xmm2 + vmovdqu 48(%rsi,%r12,1),%xmm3 + vpshufb %xmm7,%xmm0,%xmm0 + leaq K256(%rip),%rbp + vpshufb %xmm7,%xmm1,%xmm1 + vpshufb %xmm7,%xmm2,%xmm2 + vpaddd 0(%rbp),%xmm0,%xmm4 + vpshufb %xmm7,%xmm3,%xmm3 + vpaddd 32(%rbp),%xmm1,%xmm5 + vpaddd 64(%rbp),%xmm2,%xmm6 + vpaddd 96(%rbp),%xmm3,%xmm7 + vmovdqa %xmm4,0(%rsp) + movl %eax,%r14d + vmovdqa %xmm5,16(%rsp) + movl %ebx,%esi + vmovdqa %xmm6,32(%rsp) + xorl %ecx,%esi + vmovdqa %xmm7,48(%rsp) + movl %r8d,%r13d + jmp .Lxop_00_47 + +.align 16 +.Lxop_00_47: + subq $-32*4,%rbp + vmovdqu (%r12),%xmm9 + movq %r12,64+0(%rsp) + vpalignr $4,%xmm0,%xmm1,%xmm4 + rorl $14,%r13d + movl %r14d,%eax + vpalignr $4,%xmm2,%xmm3,%xmm7 + movl %r9d,%r12d + xorl %r8d,%r13d +.byte 143,232,120,194,236,14 + rorl $9,%r14d + xorl %r10d,%r12d + vpsrld $3,%xmm4,%xmm4 + rorl $5,%r13d + xorl %eax,%r14d + vpaddd %xmm7,%xmm0,%xmm0 + andl %r8d,%r12d + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d +.byte 143,232,120,194,245,11 + rorl $11,%r14d + xorl %r10d,%r12d + vpxor %xmm5,%xmm4,%xmm4 + xorl %ebx,%r15d + rorl $6,%r13d + addl %r12d,%r11d + andl %r15d,%esi +.byte 143,232,120,194,251,13 + xorl %eax,%r14d + addl %r13d,%r11d + vpxor %xmm6,%xmm4,%xmm4 + xorl %ebx,%esi + addl %r11d,%edx + vpsrld $10,%xmm3,%xmm6 + rorl $2,%r14d + addl %esi,%r11d + vpaddd %xmm4,%xmm0,%xmm0 + movl %edx,%r13d + addl %r11d,%r14d +.byte 143,232,120,194,239,2 + rorl $14,%r13d + movl %r14d,%r11d + vpxor %xmm6,%xmm7,%xmm7 + movl %r8d,%r12d + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%r12d + vpxor %xmm5,%xmm7,%xmm7 + rorl $5,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + vpxor %xmm8,%xmm9,%xmm9 + xorl %edx,%r13d + vpsrldq $8,%xmm7,%xmm7 + addl 4(%rsp),%r10d + movl %r11d,%esi + rorl $11,%r14d + xorl %r9d,%r12d + vpaddd %xmm7,%xmm0,%xmm0 + xorl %eax,%esi + rorl $6,%r13d + addl %r12d,%r10d + andl %esi,%r15d +.byte 143,232,120,194,248,13 + xorl %r11d,%r14d + addl %r13d,%r10d + vpsrld $10,%xmm0,%xmm6 + xorl %eax,%r15d + addl %r10d,%ecx +.byte 143,232,120,194,239,2 + rorl $2,%r14d + addl %r15d,%r10d + vpxor %xmm6,%xmm7,%xmm7 + movl %ecx,%r13d + addl %r10d,%r14d + rorl $14,%r13d + movl %r14d,%r10d + vpxor %xmm5,%xmm7,%xmm7 + movl %edx,%r12d + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r12d + vpslldq $8,%xmm7,%xmm7 + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %ecx,%r13d + vpaddd %xmm7,%xmm0,%xmm0 + addl 8(%rsp),%r9d + movl %r10d,%r15d + rorl $11,%r14d + xorl %r8d,%r12d + vpaddd 0(%rbp),%xmm0,%xmm6 + xorl %r11d,%r15d + rorl $6,%r13d + addl %r12d,%r9d + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%esi + addl %r9d,%ebx + rorl $2,%r14d + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + rorl $14,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%esi + rorl $11,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + rorl $6,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + rorl $2,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,0(%rsp) + vpalignr $4,%xmm1,%xmm2,%xmm4 + rorl $14,%r13d + movl %r14d,%r8d + vpalignr $4,%xmm3,%xmm0,%xmm7 + movl %ebx,%r12d + xorl %eax,%r13d +.byte 143,232,120,194,236,14 + rorl $9,%r14d + xorl %ecx,%r12d + vpsrld $3,%xmm4,%xmm4 + rorl $5,%r13d + xorl %r8d,%r14d + vpaddd %xmm7,%xmm1,%xmm1 + andl %eax,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d +.byte 143,232,120,194,245,11 + rorl $11,%r14d + xorl %ecx,%r12d + vpxor %xmm5,%xmm4,%xmm4 + xorl %r9d,%r15d + rorl $6,%r13d + addl %r12d,%edx + andl %r15d,%esi +.byte 143,232,120,194,248,13 + xorl %r8d,%r14d + addl %r13d,%edx + vpxor %xmm6,%xmm4,%xmm4 + xorl %r9d,%esi + addl %edx,%r11d + vpsrld $10,%xmm0,%xmm6 + rorl $2,%r14d + addl %esi,%edx + vpaddd %xmm4,%xmm1,%xmm1 + movl %r11d,%r13d + addl %edx,%r14d +.byte 143,232,120,194,239,2 + rorl $14,%r13d + movl %r14d,%edx + vpxor %xmm6,%xmm7,%xmm7 + movl %eax,%r12d + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%r12d + vpxor %xmm5,%xmm7,%xmm7 + rorl $5,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r11d,%r13d + vpsrldq $8,%xmm7,%xmm7 + addl 20(%rsp),%ecx + movl %edx,%esi + rorl $11,%r14d + xorl %ebx,%r12d + vpaddd %xmm7,%xmm1,%xmm1 + xorl %r8d,%esi + rorl $6,%r13d + addl %r12d,%ecx + andl %esi,%r15d +.byte 143,232,120,194,249,13 + xorl %edx,%r14d + addl %r13d,%ecx + vpsrld $10,%xmm1,%xmm6 + xorl %r8d,%r15d + addl %ecx,%r10d +.byte 143,232,120,194,239,2 + rorl $2,%r14d + addl %r15d,%ecx + vpxor %xmm6,%xmm7,%xmm7 + movl %r10d,%r13d + addl %ecx,%r14d + rorl $14,%r13d + movl %r14d,%ecx + vpxor %xmm5,%xmm7,%xmm7 + movl %r11d,%r12d + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r12d + vpslldq $8,%xmm7,%xmm7 + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r10d,%r13d + vpaddd %xmm7,%xmm1,%xmm1 + addl 24(%rsp),%ebx + movl %ecx,%r15d + rorl $11,%r14d + xorl %eax,%r12d + vpaddd 32(%rbp),%xmm1,%xmm6 + xorl %edx,%r15d + rorl $6,%r13d + addl %r12d,%ebx + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%esi + addl %ebx,%r9d + rorl $2,%r14d + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + rorl $14,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%esi + rorl $11,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + rorl $6,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + rorl $2,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,16(%rsp) + vpalignr $4,%xmm2,%xmm3,%xmm4 + rorl $14,%r13d + movl %r14d,%eax + vpalignr $4,%xmm0,%xmm1,%xmm7 + movl %r9d,%r12d + xorl %r8d,%r13d +.byte 143,232,120,194,236,14 + rorl $9,%r14d + xorl %r10d,%r12d + vpsrld $3,%xmm4,%xmm4 + rorl $5,%r13d + xorl %eax,%r14d + vpaddd %xmm7,%xmm2,%xmm2 + andl %r8d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d +.byte 143,232,120,194,245,11 + rorl $11,%r14d + xorl %r10d,%r12d + vpxor %xmm5,%xmm4,%xmm4 + xorl %ebx,%r15d + rorl $6,%r13d + addl %r12d,%r11d + andl %r15d,%esi +.byte 143,232,120,194,249,13 + xorl %eax,%r14d + addl %r13d,%r11d + vpxor %xmm6,%xmm4,%xmm4 + xorl %ebx,%esi + addl %r11d,%edx + vpsrld $10,%xmm1,%xmm6 + rorl $2,%r14d + addl %esi,%r11d + vpaddd %xmm4,%xmm2,%xmm2 + movl %edx,%r13d + addl %r11d,%r14d +.byte 143,232,120,194,239,2 + rorl $14,%r13d + movl %r14d,%r11d + vpxor %xmm6,%xmm7,%xmm7 + movl %r8d,%r12d + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%r12d + vpxor %xmm5,%xmm7,%xmm7 + rorl $5,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %edx,%r13d + vpsrldq $8,%xmm7,%xmm7 + addl 36(%rsp),%r10d + movl %r11d,%esi + rorl $11,%r14d + xorl %r9d,%r12d + vpaddd %xmm7,%xmm2,%xmm2 + xorl %eax,%esi + rorl $6,%r13d + addl %r12d,%r10d + andl %esi,%r15d +.byte 143,232,120,194,250,13 + xorl %r11d,%r14d + addl %r13d,%r10d + vpsrld $10,%xmm2,%xmm6 + xorl %eax,%r15d + addl %r10d,%ecx +.byte 143,232,120,194,239,2 + rorl $2,%r14d + addl %r15d,%r10d + vpxor %xmm6,%xmm7,%xmm7 + movl %ecx,%r13d + addl %r10d,%r14d + rorl $14,%r13d + movl %r14d,%r10d + vpxor %xmm5,%xmm7,%xmm7 + movl %edx,%r12d + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r12d + vpslldq $8,%xmm7,%xmm7 + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %ecx,%r13d + vpaddd %xmm7,%xmm2,%xmm2 + addl 40(%rsp),%r9d + movl %r10d,%r15d + rorl $11,%r14d + xorl %r8d,%r12d + vpaddd 64(%rbp),%xmm2,%xmm6 + xorl %r11d,%r15d + rorl $6,%r13d + addl %r12d,%r9d + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%esi + addl %r9d,%ebx + rorl $2,%r14d + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + rorl $14,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%esi + rorl $11,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + rorl $6,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + rorl $2,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,32(%rsp) + vpalignr $4,%xmm3,%xmm0,%xmm4 + rorl $14,%r13d + movl %r14d,%r8d + vpalignr $4,%xmm1,%xmm2,%xmm7 + movl %ebx,%r12d + xorl %eax,%r13d +.byte 143,232,120,194,236,14 + rorl $9,%r14d + xorl %ecx,%r12d + vpsrld $3,%xmm4,%xmm4 + rorl $5,%r13d + xorl %r8d,%r14d + vpaddd %xmm7,%xmm3,%xmm3 + andl %eax,%r12d + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d +.byte 143,232,120,194,245,11 + rorl $11,%r14d + xorl %ecx,%r12d + vpxor %xmm5,%xmm4,%xmm4 + xorl %r9d,%r15d + rorl $6,%r13d + addl %r12d,%edx + andl %r15d,%esi +.byte 143,232,120,194,250,13 + xorl %r8d,%r14d + addl %r13d,%edx + vpxor %xmm6,%xmm4,%xmm4 + xorl %r9d,%esi + addl %edx,%r11d + vpsrld $10,%xmm2,%xmm6 + rorl $2,%r14d + addl %esi,%edx + vpaddd %xmm4,%xmm3,%xmm3 + movl %r11d,%r13d + addl %edx,%r14d +.byte 143,232,120,194,239,2 + rorl $14,%r13d + movl %r14d,%edx + vpxor %xmm6,%xmm7,%xmm7 + movl %eax,%r12d + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%r12d + vpxor %xmm5,%xmm7,%xmm7 + rorl $5,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r11d,%r13d + vpsrldq $8,%xmm7,%xmm7 + addl 52(%rsp),%ecx + movl %edx,%esi + rorl $11,%r14d + xorl %ebx,%r12d + vpaddd %xmm7,%xmm3,%xmm3 + xorl %r8d,%esi + rorl $6,%r13d + addl %r12d,%ecx + andl %esi,%r15d +.byte 143,232,120,194,251,13 + xorl %edx,%r14d + addl %r13d,%ecx + vpsrld $10,%xmm3,%xmm6 + xorl %r8d,%r15d + addl %ecx,%r10d +.byte 143,232,120,194,239,2 + rorl $2,%r14d + addl %r15d,%ecx + vpxor %xmm6,%xmm7,%xmm7 + movl %r10d,%r13d + addl %ecx,%r14d + rorl $14,%r13d + movl %r14d,%ecx + vpxor %xmm5,%xmm7,%xmm7 + movl %r11d,%r12d + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r12d + vpslldq $8,%xmm7,%xmm7 + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r10d,%r13d + vpaddd %xmm7,%xmm3,%xmm3 + addl 56(%rsp),%ebx + movl %ecx,%r15d + rorl $11,%r14d + xorl %eax,%r12d + vpaddd 96(%rbp),%xmm3,%xmm6 + xorl %edx,%r15d + rorl $6,%r13d + addl %r12d,%ebx + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%esi + addl %ebx,%r9d + rorl $2,%r14d + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + rorl $14,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%esi + rorl $11,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + rorl $6,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + rorl $2,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,48(%rsp) + movq 64+0(%rsp),%r12 + vpand %xmm14,%xmm11,%xmm11 + movq 64+8(%rsp),%r15 + vpor %xmm11,%xmm8,%xmm8 + vmovdqu %xmm8,(%r15,%r12,1) + leaq 16(%r12),%r12 + cmpb $0,131(%rbp) + jne .Lxop_00_47 + vmovdqu (%r12),%xmm9 + movq %r12,64+0(%rsp) + rorl $14,%r13d + movl %r14d,%eax + movl %r9d,%r12d + xorl %r8d,%r13d + rorl $9,%r14d + xorl %r10d,%r12d + rorl $5,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + rorl $11,%r14d + xorl %r10d,%r12d + xorl %ebx,%r15d + rorl $6,%r13d + addl %r12d,%r11d + andl %r15d,%esi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%esi + addl %r11d,%edx + rorl $2,%r14d + addl %esi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + rorl $14,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%r12d + rorl $5,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + vpxor %xmm8,%xmm9,%xmm9 + xorl %edx,%r13d + addl 4(%rsp),%r10d + movl %r11d,%esi + rorl $11,%r14d + xorl %r9d,%r12d + xorl %eax,%esi + rorl $6,%r13d + addl %r12d,%r10d + andl %esi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + addl %r10d,%ecx + rorl $2,%r14d + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + rorl $14,%r13d + movl %r14d,%r10d + movl %edx,%r12d + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r12d + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %ecx,%r13d + addl 8(%rsp),%r9d + movl %r10d,%r15d + rorl $11,%r14d + xorl %r8d,%r12d + xorl %r11d,%r15d + rorl $6,%r13d + addl %r12d,%r9d + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%esi + addl %r9d,%ebx + rorl $2,%r14d + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + rorl $14,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%esi + rorl $11,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + rorl $6,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + rorl $2,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + rorl $14,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + xorl %eax,%r13d + rorl $9,%r14d + xorl %ecx,%r12d + rorl $5,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + rorl $11,%r14d + xorl %ecx,%r12d + xorl %r9d,%r15d + rorl $6,%r13d + addl %r12d,%edx + andl %r15d,%esi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%esi + addl %edx,%r11d + rorl $2,%r14d + addl %esi,%edx + movl %r11d,%r13d + addl %edx,%r14d + rorl $14,%r13d + movl %r14d,%edx + movl %eax,%r12d + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%r12d + rorl $5,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r11d,%r13d + addl 20(%rsp),%ecx + movl %edx,%esi + rorl $11,%r14d + xorl %ebx,%r12d + xorl %r8d,%esi + rorl $6,%r13d + addl %r12d,%ecx + andl %esi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + addl %ecx,%r10d + rorl $2,%r14d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + rorl $14,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r12d + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r10d,%r13d + addl 24(%rsp),%ebx + movl %ecx,%r15d + rorl $11,%r14d + xorl %eax,%r12d + xorl %edx,%r15d + rorl $6,%r13d + addl %r12d,%ebx + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%esi + addl %ebx,%r9d + rorl $2,%r14d + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + rorl $14,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%esi + rorl $11,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + rorl $6,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + rorl $2,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + rorl $14,%r13d + movl %r14d,%eax + movl %r9d,%r12d + xorl %r8d,%r13d + rorl $9,%r14d + xorl %r10d,%r12d + rorl $5,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + rorl $11,%r14d + xorl %r10d,%r12d + xorl %ebx,%r15d + rorl $6,%r13d + addl %r12d,%r11d + andl %r15d,%esi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%esi + addl %r11d,%edx + rorl $2,%r14d + addl %esi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + rorl $14,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%r12d + rorl $5,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %edx,%r13d + addl 36(%rsp),%r10d + movl %r11d,%esi + rorl $11,%r14d + xorl %r9d,%r12d + xorl %eax,%esi + rorl $6,%r13d + addl %r12d,%r10d + andl %esi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + addl %r10d,%ecx + rorl $2,%r14d + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + rorl $14,%r13d + movl %r14d,%r10d + movl %edx,%r12d + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r12d + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %ecx,%r13d + addl 40(%rsp),%r9d + movl %r10d,%r15d + rorl $11,%r14d + xorl %r8d,%r12d + xorl %r11d,%r15d + rorl $6,%r13d + addl %r12d,%r9d + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%esi + addl %r9d,%ebx + rorl $2,%r14d + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + rorl $14,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%esi + rorl $11,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + rorl $6,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + rorl $2,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + rorl $14,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + xorl %eax,%r13d + rorl $9,%r14d + xorl %ecx,%r12d + rorl $5,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + rorl $11,%r14d + xorl %ecx,%r12d + xorl %r9d,%r15d + rorl $6,%r13d + addl %r12d,%edx + andl %r15d,%esi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%esi + addl %edx,%r11d + rorl $2,%r14d + addl %esi,%edx + movl %r11d,%r13d + addl %edx,%r14d + rorl $14,%r13d + movl %r14d,%edx + movl %eax,%r12d + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%r12d + rorl $5,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r11d,%r13d + addl 52(%rsp),%ecx + movl %edx,%esi + rorl $11,%r14d + xorl %ebx,%r12d + xorl %r8d,%esi + rorl $6,%r13d + addl %r12d,%ecx + andl %esi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + addl %ecx,%r10d + rorl $2,%r14d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + rorl $14,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r12d + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r10d,%r13d + addl 56(%rsp),%ebx + movl %ecx,%r15d + rorl $11,%r14d + xorl %eax,%r12d + xorl %edx,%r15d + rorl $6,%r13d + addl %r12d,%ebx + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%esi + addl %ebx,%r9d + rorl $2,%r14d + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + rorl $14,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%esi + rorl $11,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + rorl $6,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + rorl $2,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + movq 64+0(%rsp),%r12 + movq 64+8(%rsp),%r13 + movq 64+40(%rsp),%r15 + movq 64+48(%rsp),%rsi + + vpand %xmm14,%xmm11,%xmm11 + movl %r14d,%eax + vpor %xmm11,%xmm8,%xmm8 + vmovdqu %xmm8,(%r12,%r13,1) + leaq 16(%r12),%r12 + + addl 0(%r15),%eax + addl 4(%r15),%ebx + addl 8(%r15),%ecx + addl 12(%r15),%edx + addl 16(%r15),%r8d + addl 20(%r15),%r9d + addl 24(%r15),%r10d + addl 28(%r15),%r11d + + cmpq 64+16(%rsp),%r12 + + movl %eax,0(%r15) + movl %ebx,4(%r15) + movl %ecx,8(%r15) + movl %edx,12(%r15) + movl %r8d,16(%r15) + movl %r9d,20(%r15) + movl %r10d,24(%r15) + movl %r11d,28(%r15) + + jb .Lloop_xop + + movq 64+32(%rsp),%r8 + movq 120(%rsp),%rsi +.cfi_def_cfa %rsi,8 + vmovdqu %xmm8,(%r8) + vzeroall + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_xop: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_cbc_sha256_enc_xop,.-aesni_cbc_sha256_enc_xop +.type aesni_cbc_sha256_enc_avx,@function +.align 64 +aesni_cbc_sha256_enc_avx: +.cfi_startproc +.Lavx_shortcut: + movq 8(%rsp),%r10 + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + subq $128,%rsp + andq $-64,%rsp + + shlq $6,%rdx + subq %rdi,%rsi + subq %rdi,%r10 + addq %rdi,%rdx + + + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + + movq %r8,64+32(%rsp) + movq %r9,64+40(%rsp) + movq %r10,64+48(%rsp) + movq %rax,120(%rsp) +.cfi_escape 0x0f,0x06,0x77,0xf8,0x00,0x06,0x23,0x08 +.Lprologue_avx: + vzeroall + + movq %rdi,%r12 + leaq 128(%rcx),%rdi + leaq K256+544(%rip),%r13 + movl 240-128(%rdi),%r14d + movq %r9,%r15 + movq %r10,%rsi + vmovdqu (%r8),%xmm8 + subq $9,%r14 + + movl 0(%r15),%eax + movl 4(%r15),%ebx + movl 8(%r15),%ecx + movl 12(%r15),%edx + movl 16(%r15),%r8d + movl 20(%r15),%r9d + movl 24(%r15),%r10d + movl 28(%r15),%r11d + + vmovdqa 0(%r13,%r14,8),%xmm14 + vmovdqa 16(%r13,%r14,8),%xmm13 + vmovdqa 32(%r13,%r14,8),%xmm12 + vmovdqu 0-128(%rdi),%xmm10 + jmp .Lloop_avx +.align 16 +.Lloop_avx: + vmovdqa K256+512(%rip),%xmm7 + vmovdqu 0(%rsi,%r12,1),%xmm0 + vmovdqu 16(%rsi,%r12,1),%xmm1 + vmovdqu 32(%rsi,%r12,1),%xmm2 + vmovdqu 48(%rsi,%r12,1),%xmm3 + vpshufb %xmm7,%xmm0,%xmm0 + leaq K256(%rip),%rbp + vpshufb %xmm7,%xmm1,%xmm1 + vpshufb %xmm7,%xmm2,%xmm2 + vpaddd 0(%rbp),%xmm0,%xmm4 + vpshufb %xmm7,%xmm3,%xmm3 + vpaddd 32(%rbp),%xmm1,%xmm5 + vpaddd 64(%rbp),%xmm2,%xmm6 + vpaddd 96(%rbp),%xmm3,%xmm7 + vmovdqa %xmm4,0(%rsp) + movl %eax,%r14d + vmovdqa %xmm5,16(%rsp) + movl %ebx,%esi + vmovdqa %xmm6,32(%rsp) + xorl %ecx,%esi + vmovdqa %xmm7,48(%rsp) + movl %r8d,%r13d + jmp .Lavx_00_47 + +.align 16 +.Lavx_00_47: + subq $-32*4,%rbp + vmovdqu (%r12),%xmm9 + movq %r12,64+0(%rsp) + vpalignr $4,%xmm0,%xmm1,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + vpalignr $4,%xmm2,%xmm3,%xmm7 + xorl %r8d,%r13d + shrdl $9,%r14d,%r14d + xorl %r10d,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpaddd %xmm7,%xmm0,%xmm0 + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + vpsrld $3,%xmm4,%xmm7 + shrdl $11,%r14d,%r14d + xorl %r10d,%r12d + xorl %ebx,%r15d + vpslld $14,%xmm4,%xmm5 + shrdl $6,%r13d,%r13d + addl %r12d,%r11d + andl %r15d,%esi + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%esi + vpshufd $250,%xmm3,%xmm7 + addl %r11d,%edx + shrdl $2,%r14d,%r14d + addl %esi,%r11d + vpsrld $11,%xmm6,%xmm6 + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%r11d + movl %r8d,%r12d + xorl %edx,%r13d + vpslld $11,%xmm5,%xmm5 + shrdl $9,%r14d,%r14d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %r11d,%r14d + andl %edx,%r12d + vpxor %xmm8,%xmm9,%xmm9 + xorl %edx,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 4(%rsp),%r10d + movl %r11d,%esi + shrdl $11,%r14d,%r14d + vpxor %xmm5,%xmm4,%xmm4 + xorl %r9d,%r12d + xorl %eax,%esi + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + addl %r12d,%r10d + andl %esi,%r15d + xorl %r11d,%r14d + vpaddd %xmm4,%xmm0,%xmm0 + addl %r13d,%r10d + xorl %eax,%r15d + addl %r10d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + shrdl $2,%r14d,%r14d + addl %r15d,%r10d + movl %ecx,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + vpxor %xmm7,%xmm6,%xmm6 + movl %edx,%r12d + xorl %ecx,%r13d + shrdl $9,%r14d,%r14d + vpshufd $132,%xmm6,%xmm6 + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + vpsrldq $8,%xmm6,%xmm6 + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %ecx,%r13d + addl 8(%rsp),%r9d + vpaddd %xmm6,%xmm0,%xmm0 + movl %r10d,%r15d + shrdl $11,%r14d,%r14d + xorl %r8d,%r12d + vpshufd $80,%xmm0,%xmm7 + xorl %r11d,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%r9d + vpsrld $10,%xmm7,%xmm6 + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + vpsrlq $17,%xmm7,%xmm7 + xorl %r11d,%esi + addl %r9d,%ebx + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + vpsrlq $2,%xmm7,%xmm7 + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + vpxor %xmm7,%xmm6,%xmm6 + xorl %ebx,%r13d + shrdl $9,%r14d,%r14d + xorl %edx,%r12d + vpshufd $232,%xmm6,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vpslldq $8,%xmm6,%xmm6 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%esi + vpaddd %xmm6,%xmm0,%xmm0 + shrdl $11,%r14d,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + vpaddd 0(%rbp),%xmm0,%xmm6 + shrdl $6,%r13d,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + shrdl $2,%r14d,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,0(%rsp) + vpalignr $4,%xmm1,%xmm2,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + vpalignr $4,%xmm3,%xmm0,%xmm7 + xorl %eax,%r13d + shrdl $9,%r14d,%r14d + xorl %ecx,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpaddd %xmm7,%xmm1,%xmm1 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + vpsrld $3,%xmm4,%xmm7 + shrdl $11,%r14d,%r14d + xorl %ecx,%r12d + xorl %r9d,%r15d + vpslld $14,%xmm4,%xmm5 + shrdl $6,%r13d,%r13d + addl %r12d,%edx + andl %r15d,%esi + vpxor %xmm6,%xmm7,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%esi + vpshufd $250,%xmm0,%xmm7 + addl %edx,%r11d + shrdl $2,%r14d,%r14d + addl %esi,%edx + vpsrld $11,%xmm6,%xmm6 + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%edx + movl %eax,%r12d + xorl %r11d,%r13d + vpslld $11,%xmm5,%xmm5 + shrdl $9,%r14d,%r14d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %edx,%r14d + andl %r11d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r11d,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 20(%rsp),%ecx + movl %edx,%esi + shrdl $11,%r14d,%r14d + vpxor %xmm5,%xmm4,%xmm4 + xorl %ebx,%r12d + xorl %r8d,%esi + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + addl %r12d,%ecx + andl %esi,%r15d + xorl %edx,%r14d + vpaddd %xmm4,%xmm1,%xmm1 + addl %r13d,%ecx + xorl %r8d,%r15d + addl %ecx,%r10d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $2,%r14d,%r14d + addl %r15d,%ecx + movl %r10d,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + movl %r11d,%r12d + xorl %r10d,%r13d + shrdl $9,%r14d,%r14d + vpshufd $132,%xmm6,%xmm6 + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + vpsrldq $8,%xmm6,%xmm6 + andl %r10d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r10d,%r13d + addl 24(%rsp),%ebx + vpaddd %xmm6,%xmm1,%xmm1 + movl %ecx,%r15d + shrdl $11,%r14d,%r14d + xorl %eax,%r12d + vpshufd $80,%xmm1,%xmm7 + xorl %edx,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%ebx + vpsrld $10,%xmm7,%xmm6 + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + vpsrlq $17,%xmm7,%xmm7 + xorl %edx,%esi + addl %ebx,%r9d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + vpsrlq $2,%xmm7,%xmm7 + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + vpxor %xmm7,%xmm6,%xmm6 + xorl %r9d,%r13d + shrdl $9,%r14d,%r14d + xorl %r11d,%r12d + vpshufd $232,%xmm6,%xmm6 + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpslldq $8,%xmm6,%xmm6 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%esi + vpaddd %xmm6,%xmm1,%xmm1 + shrdl $11,%r14d,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + vpaddd 32(%rbp),%xmm1,%xmm6 + shrdl $6,%r13d,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + shrdl $2,%r14d,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,16(%rsp) + vpalignr $4,%xmm2,%xmm3,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + vpalignr $4,%xmm0,%xmm1,%xmm7 + xorl %r8d,%r13d + shrdl $9,%r14d,%r14d + xorl %r10d,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpaddd %xmm7,%xmm2,%xmm2 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + vpsrld $3,%xmm4,%xmm7 + shrdl $11,%r14d,%r14d + xorl %r10d,%r12d + xorl %ebx,%r15d + vpslld $14,%xmm4,%xmm5 + shrdl $6,%r13d,%r13d + addl %r12d,%r11d + andl %r15d,%esi + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%esi + vpshufd $250,%xmm1,%xmm7 + addl %r11d,%edx + shrdl $2,%r14d,%r14d + addl %esi,%r11d + vpsrld $11,%xmm6,%xmm6 + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%r11d + movl %r8d,%r12d + xorl %edx,%r13d + vpslld $11,%xmm5,%xmm5 + shrdl $9,%r14d,%r14d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %r11d,%r14d + andl %edx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %edx,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 36(%rsp),%r10d + movl %r11d,%esi + shrdl $11,%r14d,%r14d + vpxor %xmm5,%xmm4,%xmm4 + xorl %r9d,%r12d + xorl %eax,%esi + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + addl %r12d,%r10d + andl %esi,%r15d + xorl %r11d,%r14d + vpaddd %xmm4,%xmm2,%xmm2 + addl %r13d,%r10d + xorl %eax,%r15d + addl %r10d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + shrdl $2,%r14d,%r14d + addl %r15d,%r10d + movl %ecx,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + vpxor %xmm7,%xmm6,%xmm6 + movl %edx,%r12d + xorl %ecx,%r13d + shrdl $9,%r14d,%r14d + vpshufd $132,%xmm6,%xmm6 + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + vpsrldq $8,%xmm6,%xmm6 + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %ecx,%r13d + addl 40(%rsp),%r9d + vpaddd %xmm6,%xmm2,%xmm2 + movl %r10d,%r15d + shrdl $11,%r14d,%r14d + xorl %r8d,%r12d + vpshufd $80,%xmm2,%xmm7 + xorl %r11d,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%r9d + vpsrld $10,%xmm7,%xmm6 + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + vpsrlq $17,%xmm7,%xmm7 + xorl %r11d,%esi + addl %r9d,%ebx + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + vpsrlq $2,%xmm7,%xmm7 + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + vpxor %xmm7,%xmm6,%xmm6 + xorl %ebx,%r13d + shrdl $9,%r14d,%r14d + xorl %edx,%r12d + vpshufd $232,%xmm6,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vpslldq $8,%xmm6,%xmm6 + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%esi + vpaddd %xmm6,%xmm2,%xmm2 + shrdl $11,%r14d,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + vpaddd 64(%rbp),%xmm2,%xmm6 + shrdl $6,%r13d,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + shrdl $2,%r14d,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,32(%rsp) + vpalignr $4,%xmm3,%xmm0,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + vpalignr $4,%xmm1,%xmm2,%xmm7 + xorl %eax,%r13d + shrdl $9,%r14d,%r14d + xorl %ecx,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpaddd %xmm7,%xmm3,%xmm3 + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + vpsrld $3,%xmm4,%xmm7 + shrdl $11,%r14d,%r14d + xorl %ecx,%r12d + xorl %r9d,%r15d + vpslld $14,%xmm4,%xmm5 + shrdl $6,%r13d,%r13d + addl %r12d,%edx + andl %r15d,%esi + vpxor %xmm6,%xmm7,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%esi + vpshufd $250,%xmm2,%xmm7 + addl %edx,%r11d + shrdl $2,%r14d,%r14d + addl %esi,%edx + vpsrld $11,%xmm6,%xmm6 + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%edx + movl %eax,%r12d + xorl %r11d,%r13d + vpslld $11,%xmm5,%xmm5 + shrdl $9,%r14d,%r14d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %edx,%r14d + andl %r11d,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r11d,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 52(%rsp),%ecx + movl %edx,%esi + shrdl $11,%r14d,%r14d + vpxor %xmm5,%xmm4,%xmm4 + xorl %ebx,%r12d + xorl %r8d,%esi + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + addl %r12d,%ecx + andl %esi,%r15d + xorl %edx,%r14d + vpaddd %xmm4,%xmm3,%xmm3 + addl %r13d,%ecx + xorl %r8d,%r15d + addl %ecx,%r10d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $2,%r14d,%r14d + addl %r15d,%ecx + movl %r10d,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + movl %r11d,%r12d + xorl %r10d,%r13d + shrdl $9,%r14d,%r14d + vpshufd $132,%xmm6,%xmm6 + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + vpsrldq $8,%xmm6,%xmm6 + andl %r10d,%r12d + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r10d,%r13d + addl 56(%rsp),%ebx + vpaddd %xmm6,%xmm3,%xmm3 + movl %ecx,%r15d + shrdl $11,%r14d,%r14d + xorl %eax,%r12d + vpshufd $80,%xmm3,%xmm7 + xorl %edx,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%ebx + vpsrld $10,%xmm7,%xmm6 + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + vpsrlq $17,%xmm7,%xmm7 + xorl %edx,%esi + addl %ebx,%r9d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + vpsrlq $2,%xmm7,%xmm7 + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + vpxor %xmm7,%xmm6,%xmm6 + xorl %r9d,%r13d + shrdl $9,%r14d,%r14d + xorl %r11d,%r12d + vpshufd $232,%xmm6,%xmm6 + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpslldq $8,%xmm6,%xmm6 + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%esi + vpaddd %xmm6,%xmm3,%xmm3 + shrdl $11,%r14d,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + vpaddd 96(%rbp),%xmm3,%xmm6 + shrdl $6,%r13d,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + shrdl $2,%r14d,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,48(%rsp) + movq 64+0(%rsp),%r12 + vpand %xmm14,%xmm11,%xmm11 + movq 64+8(%rsp),%r15 + vpor %xmm11,%xmm8,%xmm8 + vmovdqu %xmm8,(%r15,%r12,1) + leaq 16(%r12),%r12 + cmpb $0,131(%rbp) + jne .Lavx_00_47 + vmovdqu (%r12),%xmm9 + movq %r12,64+0(%rsp) + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + xorl %r8d,%r13d + shrdl $9,%r14d,%r14d + xorl %r10d,%r12d + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + shrdl $11,%r14d,%r14d + xorl %r10d,%r12d + xorl %ebx,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%r11d + andl %r15d,%esi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%esi + addl %r11d,%edx + shrdl $2,%r14d,%r14d + addl %esi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + xorl %edx,%r13d + shrdl $9,%r14d,%r14d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + vpxor %xmm8,%xmm9,%xmm9 + xorl %edx,%r13d + addl 4(%rsp),%r10d + movl %r11d,%esi + shrdl $11,%r14d,%r14d + xorl %r9d,%r12d + xorl %eax,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%r10d + andl %esi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + addl %r10d,%ecx + shrdl $2,%r14d,%r14d + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + movl %edx,%r12d + xorl %ecx,%r13d + shrdl $9,%r14d,%r14d + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %ecx,%r13d + addl 8(%rsp),%r9d + movl %r10d,%r15d + shrdl $11,%r14d,%r14d + xorl %r8d,%r12d + xorl %r11d,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%r9d + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%esi + addl %r9d,%ebx + shrdl $2,%r14d,%r14d + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + xorl %ebx,%r13d + shrdl $9,%r14d,%r14d + xorl %edx,%r12d + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%esi + shrdl $11,%r14d,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + shrdl $2,%r14d,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + xorl %eax,%r13d + shrdl $9,%r14d,%r14d + xorl %ecx,%r12d + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + shrdl $11,%r14d,%r14d + xorl %ecx,%r12d + xorl %r9d,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%edx + andl %r15d,%esi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%esi + addl %edx,%r11d + shrdl $2,%r14d,%r14d + addl %esi,%edx + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%edx + movl %eax,%r12d + xorl %r11d,%r13d + shrdl $9,%r14d,%r14d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r11d,%r13d + addl 20(%rsp),%ecx + movl %edx,%esi + shrdl $11,%r14d,%r14d + xorl %ebx,%r12d + xorl %r8d,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%ecx + andl %esi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + addl %ecx,%r10d + shrdl $2,%r14d,%r14d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + xorl %r10d,%r13d + shrdl $9,%r14d,%r14d + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r10d,%r13d + addl 24(%rsp),%ebx + movl %ecx,%r15d + shrdl $11,%r14d,%r14d + xorl %eax,%r12d + xorl %edx,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%ebx + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%esi + addl %ebx,%r9d + shrdl $2,%r14d,%r14d + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + xorl %r9d,%r13d + shrdl $9,%r14d,%r14d + xorl %r11d,%r12d + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%esi + shrdl $11,%r14d,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + shrdl $2,%r14d,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + xorl %r8d,%r13d + shrdl $9,%r14d,%r14d + xorl %r10d,%r12d + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + shrdl $11,%r14d,%r14d + xorl %r10d,%r12d + xorl %ebx,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%r11d + andl %r15d,%esi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%esi + addl %r11d,%edx + shrdl $2,%r14d,%r14d + addl %esi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + xorl %edx,%r13d + shrdl $9,%r14d,%r14d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %edx,%r13d + addl 36(%rsp),%r10d + movl %r11d,%esi + shrdl $11,%r14d,%r14d + xorl %r9d,%r12d + xorl %eax,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%r10d + andl %esi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + addl %r10d,%ecx + shrdl $2,%r14d,%r14d + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + movl %edx,%r12d + xorl %ecx,%r13d + shrdl $9,%r14d,%r14d + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %ecx,%r13d + addl 40(%rsp),%r9d + movl %r10d,%r15d + shrdl $11,%r14d,%r14d + xorl %r8d,%r12d + xorl %r11d,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%r9d + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%esi + addl %r9d,%ebx + shrdl $2,%r14d,%r14d + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + xorl %ebx,%r13d + shrdl $9,%r14d,%r14d + xorl %edx,%r12d + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%esi + shrdl $11,%r14d,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + shrdl $2,%r14d,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + xorl %eax,%r13d + shrdl $9,%r14d,%r14d + xorl %ecx,%r12d + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + shrdl $11,%r14d,%r14d + xorl %ecx,%r12d + xorl %r9d,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%edx + andl %r15d,%esi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%esi + addl %edx,%r11d + shrdl $2,%r14d,%r14d + addl %esi,%edx + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%edx + movl %eax,%r12d + xorl %r11d,%r13d + shrdl $9,%r14d,%r14d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r11d,%r13d + addl 52(%rsp),%ecx + movl %edx,%esi + shrdl $11,%r14d,%r14d + xorl %ebx,%r12d + xorl %r8d,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%ecx + andl %esi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + addl %ecx,%r10d + shrdl $2,%r14d,%r14d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + xorl %r10d,%r13d + shrdl $9,%r14d,%r14d + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r10d,%r13d + addl 56(%rsp),%ebx + movl %ecx,%r15d + shrdl $11,%r14d,%r14d + xorl %eax,%r12d + xorl %edx,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%ebx + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%esi + addl %ebx,%r9d + shrdl $2,%r14d,%r14d + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + xorl %r9d,%r13d + shrdl $9,%r14d,%r14d + xorl %r11d,%r12d + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%esi + shrdl $11,%r14d,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + shrdl $2,%r14d,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + movq 64+0(%rsp),%r12 + movq 64+8(%rsp),%r13 + movq 64+40(%rsp),%r15 + movq 64+48(%rsp),%rsi + + vpand %xmm14,%xmm11,%xmm11 + movl %r14d,%eax + vpor %xmm11,%xmm8,%xmm8 + vmovdqu %xmm8,(%r12,%r13,1) + leaq 16(%r12),%r12 + + addl 0(%r15),%eax + addl 4(%r15),%ebx + addl 8(%r15),%ecx + addl 12(%r15),%edx + addl 16(%r15),%r8d + addl 20(%r15),%r9d + addl 24(%r15),%r10d + addl 28(%r15),%r11d + + cmpq 64+16(%rsp),%r12 + + movl %eax,0(%r15) + movl %ebx,4(%r15) + movl %ecx,8(%r15) + movl %edx,12(%r15) + movl %r8d,16(%r15) + movl %r9d,20(%r15) + movl %r10d,24(%r15) + movl %r11d,28(%r15) + jb .Lloop_avx + + movq 64+32(%rsp),%r8 + movq 120(%rsp),%rsi +.cfi_def_cfa %rsi,8 + vmovdqu %xmm8,(%r8) + vzeroall + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_avx: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_cbc_sha256_enc_avx,.-aesni_cbc_sha256_enc_avx +.type aesni_cbc_sha256_enc_avx2,@function +.align 64 +aesni_cbc_sha256_enc_avx2: +.cfi_startproc +.Lavx2_shortcut: + movq 8(%rsp),%r10 + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + subq $576,%rsp + andq $-1024,%rsp + addq $448,%rsp + + shlq $6,%rdx + subq %rdi,%rsi + subq %rdi,%r10 + addq %rdi,%rdx + + + + movq %rdx,64+16(%rsp) + + movq %r8,64+32(%rsp) + movq %r9,64+40(%rsp) + movq %r10,64+48(%rsp) + movq %rax,120(%rsp) +.cfi_escape 0x0f,0x06,0x77,0xf8,0x00,0x06,0x23,0x08 +.Lprologue_avx2: + vzeroall + + movq %rdi,%r13 + vpinsrq $1,%rsi,%xmm15,%xmm15 + leaq 128(%rcx),%rdi + leaq K256+544(%rip),%r12 + movl 240-128(%rdi),%r14d + movq %r9,%r15 + movq %r10,%rsi + vmovdqu (%r8),%xmm8 + leaq -9(%r14),%r14 + + vmovdqa 0(%r12,%r14,8),%xmm14 + vmovdqa 16(%r12,%r14,8),%xmm13 + vmovdqa 32(%r12,%r14,8),%xmm12 + + subq $-64,%r13 + movl 0(%r15),%eax + leaq (%rsi,%r13,1),%r12 + movl 4(%r15),%ebx + cmpq %rdx,%r13 + movl 8(%r15),%ecx + cmoveq %rsp,%r12 + movl 12(%r15),%edx + movl 16(%r15),%r8d + movl 20(%r15),%r9d + movl 24(%r15),%r10d + movl 28(%r15),%r11d + vmovdqu 0-128(%rdi),%xmm10 + jmp .Loop_avx2 +.align 16 +.Loop_avx2: + vmovdqa K256+512(%rip),%ymm7 + vmovdqu -64+0(%rsi,%r13,1),%xmm0 + vmovdqu -64+16(%rsi,%r13,1),%xmm1 + vmovdqu -64+32(%rsi,%r13,1),%xmm2 + vmovdqu -64+48(%rsi,%r13,1),%xmm3 + + vinserti128 $1,(%r12),%ymm0,%ymm0 + vinserti128 $1,16(%r12),%ymm1,%ymm1 + vpshufb %ymm7,%ymm0,%ymm0 + vinserti128 $1,32(%r12),%ymm2,%ymm2 + vpshufb %ymm7,%ymm1,%ymm1 + vinserti128 $1,48(%r12),%ymm3,%ymm3 + + leaq K256(%rip),%rbp + vpshufb %ymm7,%ymm2,%ymm2 + leaq -64(%r13),%r13 + vpaddd 0(%rbp),%ymm0,%ymm4 + vpshufb %ymm7,%ymm3,%ymm3 + vpaddd 32(%rbp),%ymm1,%ymm5 + vpaddd 64(%rbp),%ymm2,%ymm6 + vpaddd 96(%rbp),%ymm3,%ymm7 + vmovdqa %ymm4,0(%rsp) + xorl %r14d,%r14d + vmovdqa %ymm5,32(%rsp) + + movq 120(%rsp),%rsi +.cfi_def_cfa %rsi,8 + leaq -64(%rsp),%rsp + + + + movq %rsi,-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 + movl %ebx,%esi + vmovdqa %ymm6,0(%rsp) + xorl %ecx,%esi + vmovdqa %ymm7,32(%rsp) + movl %r9d,%r12d + subq $-32*4,%rbp + jmp .Lavx2_00_47 + +.align 16 +.Lavx2_00_47: + vmovdqu (%r13),%xmm9 + vpinsrq $0,%r13,%xmm15,%xmm15 + leaq -64(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x38,0x06,0x23,0x08 + + pushq 64-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x00,0x06,0x23,0x08 + leaq 8(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 + vpalignr $4,%ymm0,%ymm1,%ymm4 + addl 0+128(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + vpalignr $4,%ymm2,%ymm3,%ymm7 + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + vpsrld $7,%ymm4,%ymm6 + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + vpaddd %ymm7,%ymm0,%ymm0 + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%esi + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ebx,%esi + vpshufd $250,%ymm3,%ymm7 + xorl %r13d,%r14d + leal (%r11,%rsi,1),%r11d + movl %r8d,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 4+128(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%edx,%esi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + vpslld $11,%ymm5,%ymm5 + andnl %r9d,%edx,%r12d + xorl %esi,%r13d + rorxl $6,%edx,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%esi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%esi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + vpsrlq $17,%ymm7,%ymm7 + andl %esi,%r15d + vpxor %xmm8,%xmm9,%xmm9 + xorl %r12d,%r14d + xorl %eax,%r15d + vpaddd %ymm4,%ymm0,%ymm0 + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 8+128(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + vpxor %ymm7,%ymm6,%ymm6 + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + vpshufd $132,%ymm6,%ymm6 + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + vpsrldq $8,%ymm6,%ymm6 + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + vpaddd %ymm6,%ymm0,%ymm0 + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + vpshufd $80,%ymm0,%ymm7 + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r11d,%esi + vpsrld $10,%ymm7,%ymm6 + xorl %r13d,%r14d + leal (%r9,%rsi,1),%r9d + movl %ecx,%r12d + vpsrlq $17,%ymm7,%ymm7 + addl 12+128(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + vpxor %ymm7,%ymm6,%ymm6 + rorxl $11,%ebx,%esi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + vpsrlq $2,%ymm7,%ymm7 + andnl %edx,%ebx,%r12d + xorl %esi,%r13d + rorxl $6,%ebx,%r14d + vpxor %ymm7,%ymm6,%ymm6 + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%esi + vpshufd $232,%ymm6,%ymm6 + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%esi + vpslldq $8,%ymm6,%ymm6 + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + vpaddd %ymm6,%ymm0,%ymm0 + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r10d,%r15d + vpaddd 0(%rbp),%ymm0,%ymm6 + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + vmovdqa %ymm6,0(%rsp) + vpalignr $4,%ymm1,%ymm2,%ymm4 + addl 32+128(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + vpalignr $4,%ymm3,%ymm0,%ymm7 + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + vpsrld $7,%ymm4,%ymm6 + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + vpaddd %ymm7,%ymm1,%ymm1 + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r9d,%esi + vpshufd $250,%ymm0,%ymm7 + xorl %r13d,%r14d + leal (%rdx,%rsi,1),%edx + movl %eax,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 36+128(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%r11d,%esi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + vpslld $11,%ymm5,%ymm5 + andnl %ebx,%r11d,%r12d + xorl %esi,%r13d + rorxl $6,%r11d,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%esi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%esi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + vpsrlq $17,%ymm7,%ymm7 + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r8d,%r15d + vpaddd %ymm4,%ymm1,%ymm1 + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 40+128(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + vpxor %ymm7,%ymm6,%ymm6 + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + vpshufd $132,%ymm6,%ymm6 + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + vpsrldq $8,%ymm6,%ymm6 + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + vpaddd %ymm6,%ymm1,%ymm1 + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + vpshufd $80,%ymm1,%ymm7 + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %edx,%esi + vpsrld $10,%ymm7,%ymm6 + xorl %r13d,%r14d + leal (%rbx,%rsi,1),%ebx + movl %r10d,%r12d + vpsrlq $17,%ymm7,%ymm7 + addl 44+128(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + vpxor %ymm7,%ymm6,%ymm6 + rorxl $11,%r9d,%esi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + vpsrlq $2,%ymm7,%ymm7 + andnl %r11d,%r9d,%r12d + xorl %esi,%r13d + rorxl $6,%r9d,%r14d + vpxor %ymm7,%ymm6,%ymm6 + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%esi + vpshufd $232,%ymm6,%ymm6 + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%esi + vpslldq $8,%ymm6,%ymm6 + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + vpaddd %ymm6,%ymm1,%ymm1 + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ecx,%r15d + vpaddd 32(%rbp),%ymm1,%ymm6 + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + vmovdqa %ymm6,32(%rsp) + leaq -64(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x38,0x06,0x23,0x08 + + pushq 64-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x00,0x06,0x23,0x08 + leaq 8(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 + vpalignr $4,%ymm2,%ymm3,%ymm4 + addl 0+128(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + vpalignr $4,%ymm0,%ymm1,%ymm7 + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + vpsrld $7,%ymm4,%ymm6 + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + vpaddd %ymm7,%ymm2,%ymm2 + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ebx,%esi + vpshufd $250,%ymm1,%ymm7 + xorl %r13d,%r14d + leal (%r11,%rsi,1),%r11d + movl %r8d,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 4+128(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%edx,%esi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + vpslld $11,%ymm5,%ymm5 + andnl %r9d,%edx,%r12d + xorl %esi,%r13d + rorxl $6,%edx,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%esi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%esi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + vpsrlq $17,%ymm7,%ymm7 + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %eax,%r15d + vpaddd %ymm4,%ymm2,%ymm2 + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 8+128(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + vpxor %ymm7,%ymm6,%ymm6 + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + vpshufd $132,%ymm6,%ymm6 + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + vpsrldq $8,%ymm6,%ymm6 + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + vpaddd %ymm6,%ymm2,%ymm2 + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + vpshufd $80,%ymm2,%ymm7 + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r11d,%esi + vpsrld $10,%ymm7,%ymm6 + xorl %r13d,%r14d + leal (%r9,%rsi,1),%r9d + movl %ecx,%r12d + vpsrlq $17,%ymm7,%ymm7 + addl 12+128(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + vpxor %ymm7,%ymm6,%ymm6 + rorxl $11,%ebx,%esi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + vpsrlq $2,%ymm7,%ymm7 + andnl %edx,%ebx,%r12d + xorl %esi,%r13d + rorxl $6,%ebx,%r14d + vpxor %ymm7,%ymm6,%ymm6 + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%esi + vpshufd $232,%ymm6,%ymm6 + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%esi + vpslldq $8,%ymm6,%ymm6 + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + vpaddd %ymm6,%ymm2,%ymm2 + andl %esi,%r15d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r10d,%r15d + vpaddd 64(%rbp),%ymm2,%ymm6 + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + vmovdqa %ymm6,0(%rsp) + vpalignr $4,%ymm3,%ymm0,%ymm4 + addl 32+128(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + vpalignr $4,%ymm1,%ymm2,%ymm7 + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + vpsrld $7,%ymm4,%ymm6 + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + vpaddd %ymm7,%ymm3,%ymm3 + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%esi + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r9d,%esi + vpshufd $250,%ymm2,%ymm7 + xorl %r13d,%r14d + leal (%rdx,%rsi,1),%edx + movl %eax,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 36+128(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%r11d,%esi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + vpslld $11,%ymm5,%ymm5 + andnl %ebx,%r11d,%r12d + xorl %esi,%r13d + rorxl $6,%r11d,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%esi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%esi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + vpsrlq $17,%ymm7,%ymm7 + andl %esi,%r15d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r8d,%r15d + vpaddd %ymm4,%ymm3,%ymm3 + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 40+128(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + vpxor %ymm7,%ymm6,%ymm6 + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + vpshufd $132,%ymm6,%ymm6 + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + vpsrldq $8,%ymm6,%ymm6 + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + vpaddd %ymm6,%ymm3,%ymm3 + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + vpshufd $80,%ymm3,%ymm7 + andl %r15d,%esi + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %edx,%esi + vpsrld $10,%ymm7,%ymm6 + xorl %r13d,%r14d + leal (%rbx,%rsi,1),%ebx + movl %r10d,%r12d + vpsrlq $17,%ymm7,%ymm7 + addl 44+128(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + vpxor %ymm7,%ymm6,%ymm6 + rorxl $11,%r9d,%esi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + vpsrlq $2,%ymm7,%ymm7 + andnl %r11d,%r9d,%r12d + xorl %esi,%r13d + rorxl $6,%r9d,%r14d + vpxor %ymm7,%ymm6,%ymm6 + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%esi + vpshufd $232,%ymm6,%ymm6 + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%esi + vpslldq $8,%ymm6,%ymm6 + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + vpaddd %ymm6,%ymm3,%ymm3 + andl %esi,%r15d + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ecx,%r15d + vpaddd 96(%rbp),%ymm3,%ymm6 + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + vmovdqa %ymm6,32(%rsp) + vmovq %xmm15,%r13 + vpextrq $1,%xmm15,%r15 + vpand %xmm14,%xmm11,%xmm11 + vpor %xmm11,%xmm8,%xmm8 + vmovdqu %xmm8,(%r15,%r13,1) + leaq 16(%r13),%r13 + leaq 128(%rbp),%rbp + cmpb $0,3(%rbp) + jne .Lavx2_00_47 + vmovdqu (%r13),%xmm9 + vpinsrq $0,%r13,%xmm15,%xmm15 + addl 0+64(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%esi + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ebx,%esi + xorl %r13d,%r14d + leal (%r11,%rsi,1),%r11d + movl %r8d,%r12d + addl 4+64(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%esi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %esi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%esi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%esi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %esi,%r15d + vpxor %xmm8,%xmm9,%xmm9 + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8+64(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r11d,%esi + xorl %r13d,%r14d + leal (%r9,%rsi,1),%r9d + movl %ecx,%r12d + addl 12+64(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%esi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %esi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%esi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%esi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32+64(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r9d,%esi + xorl %r13d,%r14d + leal (%rdx,%rsi,1),%edx + movl %eax,%r12d + addl 36+64(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%esi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %esi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%esi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%esi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40+64(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %edx,%esi + xorl %r13d,%r14d + leal (%rbx,%rsi,1),%ebx + movl %r10d,%r12d + addl 44+64(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%esi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %esi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%esi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%esi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + addl 0(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ebx,%esi + xorl %r13d,%r14d + leal (%r11,%rsi,1),%r11d + movl %r8d,%r12d + addl 4(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%esi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %esi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%esi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%esi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r11d,%esi + xorl %r13d,%r14d + leal (%r9,%rsi,1),%r9d + movl %ecx,%r12d + addl 12(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%esi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %esi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%esi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%esi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %esi,%r15d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%esi + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r9d,%esi + xorl %r13d,%r14d + leal (%rdx,%rsi,1),%edx + movl %eax,%r12d + addl 36(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%esi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %esi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%esi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%esi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %esi,%r15d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%esi + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %edx,%esi + xorl %r13d,%r14d + leal (%rbx,%rsi,1),%ebx + movl %r10d,%r12d + addl 44(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%esi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %esi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%esi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%esi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %esi,%r15d + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + vpextrq $1,%xmm15,%r12 + vmovq %xmm15,%r13 + movq 552(%rsp),%r15 + addl %r14d,%eax + leaq 448(%rsp),%rbp + + vpand %xmm14,%xmm11,%xmm11 + vpor %xmm11,%xmm8,%xmm8 + vmovdqu %xmm8,(%r12,%r13,1) + leaq 16(%r13),%r13 + + addl 0(%r15),%eax + addl 4(%r15),%ebx + addl 8(%r15),%ecx + addl 12(%r15),%edx + addl 16(%r15),%r8d + addl 20(%r15),%r9d + addl 24(%r15),%r10d + addl 28(%r15),%r11d + + movl %eax,0(%r15) + movl %ebx,4(%r15) + movl %ecx,8(%r15) + movl %edx,12(%r15) + movl %r8d,16(%r15) + movl %r9d,20(%r15) + movl %r10d,24(%r15) + movl %r11d,28(%r15) + + cmpq 80(%rbp),%r13 + je .Ldone_avx2 + + xorl %r14d,%r14d + movl %ebx,%esi + movl %r9d,%r12d + xorl %ecx,%esi + jmp .Lower_avx2 +.align 16 +.Lower_avx2: + vmovdqu (%r13),%xmm9 + vpinsrq $0,%r13,%xmm15,%xmm15 + addl 0+16(%rbp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%esi + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ebx,%esi + xorl %r13d,%r14d + leal (%r11,%rsi,1),%r11d + movl %r8d,%r12d + addl 4+16(%rbp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%esi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %esi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%esi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%esi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %esi,%r15d + vpxor %xmm8,%xmm9,%xmm9 + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8+16(%rbp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r11d,%esi + xorl %r13d,%r14d + leal (%r9,%rsi,1),%r9d + movl %ecx,%r12d + addl 12+16(%rbp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%esi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %esi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%esi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%esi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32+16(%rbp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r9d,%esi + xorl %r13d,%r14d + leal (%rdx,%rsi,1),%edx + movl %eax,%r12d + addl 36+16(%rbp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%esi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %esi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%esi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%esi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40+16(%rbp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %edx,%esi + xorl %r13d,%r14d + leal (%rbx,%rsi,1),%ebx + movl %r10d,%r12d + addl 44+16(%rbp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%esi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %esi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%esi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%esi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + leaq -64(%rbp),%rbp + addl 0+16(%rbp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ebx,%esi + xorl %r13d,%r14d + leal (%r11,%rsi,1),%r11d + movl %r8d,%r12d + addl 4+16(%rbp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%esi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %esi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%esi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%esi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8+16(%rbp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r11d,%esi + xorl %r13d,%r14d + leal (%r9,%rsi,1),%r9d + movl %ecx,%r12d + addl 12+16(%rbp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%esi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %esi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%esi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%esi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %esi,%r15d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32+16(%rbp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%esi + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r9d,%esi + xorl %r13d,%r14d + leal (%rdx,%rsi,1),%edx + movl %eax,%r12d + addl 36+16(%rbp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%esi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %esi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%esi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%esi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %esi,%r15d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40+16(%rbp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%esi + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %edx,%esi + xorl %r13d,%r14d + leal (%rbx,%rsi,1),%ebx + movl %r10d,%r12d + addl 44+16(%rbp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%esi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %esi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%esi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%esi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %esi,%r15d + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + vmovq %xmm15,%r13 + vpextrq $1,%xmm15,%r15 + vpand %xmm14,%xmm11,%xmm11 + vpor %xmm11,%xmm8,%xmm8 + leaq -64(%rbp),%rbp + vmovdqu %xmm8,(%r15,%r13,1) + leaq 16(%r13),%r13 + cmpq %rsp,%rbp + jae .Lower_avx2 + + movq 552(%rsp),%r15 + leaq 64(%r13),%r13 + movq 560(%rsp),%rsi + addl %r14d,%eax + leaq 448(%rsp),%rsp + + addl 0(%r15),%eax + addl 4(%r15),%ebx + addl 8(%r15),%ecx + addl 12(%r15),%edx + addl 16(%r15),%r8d + addl 20(%r15),%r9d + addl 24(%r15),%r10d + leaq (%rsi,%r13,1),%r12 + addl 28(%r15),%r11d + + cmpq 64+16(%rsp),%r13 + + movl %eax,0(%r15) + cmoveq %rsp,%r12 + movl %ebx,4(%r15) + movl %ecx,8(%r15) + movl %edx,12(%r15) + movl %r8d,16(%r15) + movl %r9d,20(%r15) + movl %r10d,24(%r15) + movl %r11d,28(%r15) + + jbe .Loop_avx2 + leaq (%rsp),%rbp + + +.cfi_escape 0x0f,0x06,0x76,0xf8,0x00,0x06,0x23,0x08 + +.Ldone_avx2: + movq 64+32(%rbp),%r8 + movq 64+56(%rbp),%rsi +.cfi_def_cfa %rsi,8 + vmovdqu %xmm8,(%r8) + vzeroall + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_avx2: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_cbc_sha256_enc_avx2,.-aesni_cbc_sha256_enc_avx2 +.type aesni_cbc_sha256_enc_shaext,@function +.align 32 +aesni_cbc_sha256_enc_shaext: +.cfi_startproc + movq 8(%rsp),%r10 + leaq K256+128(%rip),%rax + movdqu (%r9),%xmm1 + movdqu 16(%r9),%xmm2 + movdqa 512-128(%rax),%xmm3 + + movl 240(%rcx),%r11d + subq %rdi,%rsi + movups (%rcx),%xmm15 + movups (%r8),%xmm6 + movups 16(%rcx),%xmm4 + leaq 112(%rcx),%rcx + + pshufd $0x1b,%xmm1,%xmm0 + pshufd $0xb1,%xmm1,%xmm1 + pshufd $0x1b,%xmm2,%xmm2 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,202,8 + punpcklqdq %xmm0,%xmm2 + + jmp .Loop_shaext + +.align 16 +.Loop_shaext: + movdqu (%r10),%xmm10 + movdqu 16(%r10),%xmm11 + movdqu 32(%r10),%xmm12 +.byte 102,68,15,56,0,211 + movdqu 48(%r10),%xmm13 + + movdqa 0-128(%rax),%xmm0 + paddd %xmm10,%xmm0 +.byte 102,68,15,56,0,219 + movdqa %xmm2,%xmm9 + movdqa %xmm1,%xmm8 + movups 0(%rdi),%xmm14 + xorps %xmm15,%xmm14 + xorps %xmm14,%xmm6 + movups -80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movups -64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,202 + + movdqa 32-128(%rax),%xmm0 + paddd %xmm11,%xmm0 +.byte 102,68,15,56,0,227 + leaq 64(%r10),%r10 + movups -48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movups -32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,202 + + movdqa 64-128(%rax),%xmm0 + paddd %xmm12,%xmm0 +.byte 102,68,15,56,0,235 +.byte 69,15,56,204,211 + movups -16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm13,%xmm3 +.byte 102,65,15,58,15,220,4 + paddd %xmm3,%xmm10 + movups 0(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,202 + + movdqa 96-128(%rax),%xmm0 + paddd %xmm13,%xmm0 +.byte 69,15,56,205,213 +.byte 69,15,56,204,220 + movups 16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movups 32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movdqa %xmm10,%xmm3 +.byte 102,65,15,58,15,221,4 + paddd %xmm3,%xmm11 +.byte 15,56,203,202 + movdqa 128-128(%rax),%xmm0 + paddd %xmm10,%xmm0 +.byte 69,15,56,205,218 +.byte 69,15,56,204,229 + movups 48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm11,%xmm3 +.byte 102,65,15,58,15,218,4 + paddd %xmm3,%xmm12 + cmpl $11,%r11d + jb .Laesenclast1 + movups 64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + je .Laesenclast1 + movups 96(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 112(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.Laesenclast1: + aesenclast %xmm5,%xmm6 + movups 16-112(%rcx),%xmm4 + nop +.byte 15,56,203,202 + movups 16(%rdi),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm6,0(%rsi,%rdi,1) + xorps %xmm14,%xmm6 + movups -80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + movdqa 160-128(%rax),%xmm0 + paddd %xmm11,%xmm0 +.byte 69,15,56,205,227 +.byte 69,15,56,204,234 + movups -64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm12,%xmm3 +.byte 102,65,15,58,15,219,4 + paddd %xmm3,%xmm13 + movups -48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 192-128(%rax),%xmm0 + paddd %xmm12,%xmm0 +.byte 69,15,56,205,236 +.byte 69,15,56,204,211 + movups -32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm13,%xmm3 +.byte 102,65,15,58,15,220,4 + paddd %xmm3,%xmm10 + movups -16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 224-128(%rax),%xmm0 + paddd %xmm13,%xmm0 +.byte 69,15,56,205,213 +.byte 69,15,56,204,220 + movups 0(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm10,%xmm3 +.byte 102,65,15,58,15,221,4 + paddd %xmm3,%xmm11 + movups 16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 256-128(%rax),%xmm0 + paddd %xmm10,%xmm0 +.byte 69,15,56,205,218 +.byte 69,15,56,204,229 + movups 32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm11,%xmm3 +.byte 102,65,15,58,15,218,4 + paddd %xmm3,%xmm12 + movups 48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + cmpl $11,%r11d + jb .Laesenclast2 + movups 64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + je .Laesenclast2 + movups 96(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 112(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.Laesenclast2: + aesenclast %xmm5,%xmm6 + movups 16-112(%rcx),%xmm4 + nop +.byte 15,56,203,202 + movups 32(%rdi),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm6,16(%rsi,%rdi,1) + xorps %xmm14,%xmm6 + movups -80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + movdqa 288-128(%rax),%xmm0 + paddd %xmm11,%xmm0 +.byte 69,15,56,205,227 +.byte 69,15,56,204,234 + movups -64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm12,%xmm3 +.byte 102,65,15,58,15,219,4 + paddd %xmm3,%xmm13 + movups -48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 320-128(%rax),%xmm0 + paddd %xmm12,%xmm0 +.byte 69,15,56,205,236 +.byte 69,15,56,204,211 + movups -32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm13,%xmm3 +.byte 102,65,15,58,15,220,4 + paddd %xmm3,%xmm10 + movups -16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 352-128(%rax),%xmm0 + paddd %xmm13,%xmm0 +.byte 69,15,56,205,213 +.byte 69,15,56,204,220 + movups 0(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm10,%xmm3 +.byte 102,65,15,58,15,221,4 + paddd %xmm3,%xmm11 + movups 16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 384-128(%rax),%xmm0 + paddd %xmm10,%xmm0 +.byte 69,15,56,205,218 +.byte 69,15,56,204,229 + movups 32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm11,%xmm3 +.byte 102,65,15,58,15,218,4 + paddd %xmm3,%xmm12 + movups 48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 416-128(%rax),%xmm0 + paddd %xmm11,%xmm0 +.byte 69,15,56,205,227 +.byte 69,15,56,204,234 + cmpl $11,%r11d + jb .Laesenclast3 + movups 64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + je .Laesenclast3 + movups 96(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 112(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.Laesenclast3: + aesenclast %xmm5,%xmm6 + movups 16-112(%rcx),%xmm4 + nop +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm12,%xmm3 +.byte 102,65,15,58,15,219,4 + paddd %xmm3,%xmm13 + movups 48(%rdi),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm6,32(%rsi,%rdi,1) + xorps %xmm14,%xmm6 + movups -80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + movups -64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,202 + + movdqa 448-128(%rax),%xmm0 + paddd %xmm12,%xmm0 +.byte 69,15,56,205,236 + movdqa %xmm7,%xmm3 + movups -48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movups -32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,202 + + movdqa 480-128(%rax),%xmm0 + paddd %xmm13,%xmm0 + movups -16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + movups 0(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movups 16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + + movups 32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + cmpl $11,%r11d + jb .Laesenclast4 + movups 64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + je .Laesenclast4 + movups 96(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 112(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.Laesenclast4: + aesenclast %xmm5,%xmm6 + movups 16-112(%rcx),%xmm4 + nop + + paddd %xmm9,%xmm2 + paddd %xmm8,%xmm1 + + decq %rdx + movups %xmm6,48(%rsi,%rdi,1) + leaq 64(%rdi),%rdi + jnz .Loop_shaext + + pshufd $0xb1,%xmm2,%xmm2 + pshufd $0x1b,%xmm1,%xmm3 + pshufd $0xb1,%xmm1,%xmm1 + punpckhqdq %xmm2,%xmm1 +.byte 102,15,58,15,211,8 + + movups %xmm6,(%r8) + movdqu %xmm1,(%r9) + movdqu %xmm2,16(%r9) + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_cbc_sha256_enc_shaext,.-aesni_cbc_sha256_enc_shaext diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-x86_64.s new file mode 100644 index 0000000..1a4b22e --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/aes/aesni-x86_64.s @@ -0,0 +1,4474 @@ +.text + +.globl aesni_encrypt +.type aesni_encrypt,@function +.align 16 +aesni_encrypt: +.cfi_startproc + movups (%rdi),%xmm2 + movl 240(%rdx),%eax + movups (%rdx),%xmm0 + movups 16(%rdx),%xmm1 + leaq 32(%rdx),%rdx + xorps %xmm0,%xmm2 +.Loop_enc1_1: +.byte 102,15,56,220,209 + decl %eax + movups (%rdx),%xmm1 + leaq 16(%rdx),%rdx + jnz .Loop_enc1_1 +.byte 102,15,56,221,209 + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_encrypt,.-aesni_encrypt + +.globl aesni_decrypt +.type aesni_decrypt,@function +.align 16 +aesni_decrypt: +.cfi_startproc + movups (%rdi),%xmm2 + movl 240(%rdx),%eax + movups (%rdx),%xmm0 + movups 16(%rdx),%xmm1 + leaq 32(%rdx),%rdx + xorps %xmm0,%xmm2 +.Loop_dec1_2: +.byte 102,15,56,222,209 + decl %eax + movups (%rdx),%xmm1 + leaq 16(%rdx),%rdx + jnz .Loop_dec1_2 +.byte 102,15,56,223,209 + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_decrypt, .-aesni_decrypt +.type _aesni_encrypt2,@function +.align 16 +_aesni_encrypt2: +.cfi_startproc + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + movups 32(%rcx),%xmm0 + leaq 32(%rcx,%rax,1),%rcx + negq %rax + addq $16,%rax + +.Lenc_loop2: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Lenc_loop2 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 + .byte 0xf3,0xc3 +.cfi_endproc +.size _aesni_encrypt2,.-_aesni_encrypt2 +.type _aesni_decrypt2,@function +.align 16 +_aesni_decrypt2: +.cfi_startproc + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + movups 32(%rcx),%xmm0 + leaq 32(%rcx,%rax,1),%rcx + negq %rax + addq $16,%rax + +.Ldec_loop2: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Ldec_loop2 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,223,208 +.byte 102,15,56,223,216 + .byte 0xf3,0xc3 +.cfi_endproc +.size _aesni_decrypt2,.-_aesni_decrypt2 +.type _aesni_encrypt3,@function +.align 16 +_aesni_encrypt3: +.cfi_startproc + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + xorps %xmm0,%xmm4 + movups 32(%rcx),%xmm0 + leaq 32(%rcx,%rax,1),%rcx + negq %rax + addq $16,%rax + +.Lenc_loop3: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Lenc_loop3 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 +.byte 102,15,56,221,224 + .byte 0xf3,0xc3 +.cfi_endproc +.size _aesni_encrypt3,.-_aesni_encrypt3 +.type _aesni_decrypt3,@function +.align 16 +_aesni_decrypt3: +.cfi_startproc + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + xorps %xmm0,%xmm4 + movups 32(%rcx),%xmm0 + leaq 32(%rcx,%rax,1),%rcx + negq %rax + addq $16,%rax + +.Ldec_loop3: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Ldec_loop3 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,223,208 +.byte 102,15,56,223,216 +.byte 102,15,56,223,224 + .byte 0xf3,0xc3 +.cfi_endproc +.size _aesni_decrypt3,.-_aesni_decrypt3 +.type _aesni_encrypt4,@function +.align 16 +_aesni_encrypt4: +.cfi_startproc + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + xorps %xmm0,%xmm4 + xorps %xmm0,%xmm5 + movups 32(%rcx),%xmm0 + leaq 32(%rcx,%rax,1),%rcx + negq %rax +.byte 0x0f,0x1f,0x00 + addq $16,%rax + +.Lenc_loop4: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Lenc_loop4 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 +.byte 102,15,56,221,224 +.byte 102,15,56,221,232 + .byte 0xf3,0xc3 +.cfi_endproc +.size _aesni_encrypt4,.-_aesni_encrypt4 +.type _aesni_decrypt4,@function +.align 16 +_aesni_decrypt4: +.cfi_startproc + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + xorps %xmm0,%xmm4 + xorps %xmm0,%xmm5 + movups 32(%rcx),%xmm0 + leaq 32(%rcx,%rax,1),%rcx + negq %rax +.byte 0x0f,0x1f,0x00 + addq $16,%rax + +.Ldec_loop4: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Ldec_loop4 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,223,208 +.byte 102,15,56,223,216 +.byte 102,15,56,223,224 +.byte 102,15,56,223,232 + .byte 0xf3,0xc3 +.cfi_endproc +.size _aesni_decrypt4,.-_aesni_decrypt4 +.type _aesni_encrypt6,@function +.align 16 +_aesni_encrypt6: +.cfi_startproc + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + pxor %xmm0,%xmm3 + pxor %xmm0,%xmm4 +.byte 102,15,56,220,209 + leaq 32(%rcx,%rax,1),%rcx + negq %rax +.byte 102,15,56,220,217 + pxor %xmm0,%xmm5 + pxor %xmm0,%xmm6 +.byte 102,15,56,220,225 + pxor %xmm0,%xmm7 + movups (%rcx,%rax,1),%xmm0 + addq $16,%rax + jmp .Lenc_loop6_enter +.align 16 +.Lenc_loop6: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.Lenc_loop6_enter: +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Lenc_loop6 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 +.byte 102,15,56,221,224 +.byte 102,15,56,221,232 +.byte 102,15,56,221,240 +.byte 102,15,56,221,248 + .byte 0xf3,0xc3 +.cfi_endproc +.size _aesni_encrypt6,.-_aesni_encrypt6 +.type _aesni_decrypt6,@function +.align 16 +_aesni_decrypt6: +.cfi_startproc + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + pxor %xmm0,%xmm3 + pxor %xmm0,%xmm4 +.byte 102,15,56,222,209 + leaq 32(%rcx,%rax,1),%rcx + negq %rax +.byte 102,15,56,222,217 + pxor %xmm0,%xmm5 + pxor %xmm0,%xmm6 +.byte 102,15,56,222,225 + pxor %xmm0,%xmm7 + movups (%rcx,%rax,1),%xmm0 + addq $16,%rax + jmp .Ldec_loop6_enter +.align 16 +.Ldec_loop6: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.Ldec_loop6_enter: +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Ldec_loop6 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,15,56,223,208 +.byte 102,15,56,223,216 +.byte 102,15,56,223,224 +.byte 102,15,56,223,232 +.byte 102,15,56,223,240 +.byte 102,15,56,223,248 + .byte 0xf3,0xc3 +.cfi_endproc +.size _aesni_decrypt6,.-_aesni_decrypt6 +.type _aesni_encrypt8,@function +.align 16 +_aesni_encrypt8: +.cfi_startproc + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + pxor %xmm0,%xmm4 + pxor %xmm0,%xmm5 + pxor %xmm0,%xmm6 + leaq 32(%rcx,%rax,1),%rcx + negq %rax +.byte 102,15,56,220,209 + pxor %xmm0,%xmm7 + pxor %xmm0,%xmm8 +.byte 102,15,56,220,217 + pxor %xmm0,%xmm9 + movups (%rcx,%rax,1),%xmm0 + addq $16,%rax + jmp .Lenc_loop8_inner +.align 16 +.Lenc_loop8: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.Lenc_loop8_inner: +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 +.Lenc_loop8_enter: + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Lenc_loop8 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 +.byte 102,15,56,221,224 +.byte 102,15,56,221,232 +.byte 102,15,56,221,240 +.byte 102,15,56,221,248 +.byte 102,68,15,56,221,192 +.byte 102,68,15,56,221,200 + .byte 0xf3,0xc3 +.cfi_endproc +.size _aesni_encrypt8,.-_aesni_encrypt8 +.type _aesni_decrypt8,@function +.align 16 +_aesni_decrypt8: +.cfi_startproc + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + pxor %xmm0,%xmm4 + pxor %xmm0,%xmm5 + pxor %xmm0,%xmm6 + leaq 32(%rcx,%rax,1),%rcx + negq %rax +.byte 102,15,56,222,209 + pxor %xmm0,%xmm7 + pxor %xmm0,%xmm8 +.byte 102,15,56,222,217 + pxor %xmm0,%xmm9 + movups (%rcx,%rax,1),%xmm0 + addq $16,%rax + jmp .Ldec_loop8_inner +.align 16 +.Ldec_loop8: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.Ldec_loop8_inner: +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 +.Ldec_loop8_enter: + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Ldec_loop8 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 +.byte 102,15,56,223,208 +.byte 102,15,56,223,216 +.byte 102,15,56,223,224 +.byte 102,15,56,223,232 +.byte 102,15,56,223,240 +.byte 102,15,56,223,248 +.byte 102,68,15,56,223,192 +.byte 102,68,15,56,223,200 + .byte 0xf3,0xc3 +.cfi_endproc +.size _aesni_decrypt8,.-_aesni_decrypt8 +.globl aesni_ecb_encrypt +.type aesni_ecb_encrypt,@function +.align 16 +aesni_ecb_encrypt: +.cfi_startproc + andq $-16,%rdx + jz .Lecb_ret + + movl 240(%rcx),%eax + movups (%rcx),%xmm0 + movq %rcx,%r11 + movl %eax,%r10d + testl %r8d,%r8d + jz .Lecb_decrypt + + cmpq $0x80,%rdx + jb .Lecb_enc_tail + + movdqu (%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqu 32(%rdi),%xmm4 + movdqu 48(%rdi),%xmm5 + movdqu 64(%rdi),%xmm6 + movdqu 80(%rdi),%xmm7 + movdqu 96(%rdi),%xmm8 + movdqu 112(%rdi),%xmm9 + leaq 128(%rdi),%rdi + subq $0x80,%rdx + jmp .Lecb_enc_loop8_enter +.align 16 +.Lecb_enc_loop8: + movups %xmm2,(%rsi) + movq %r11,%rcx + movdqu (%rdi),%xmm2 + movl %r10d,%eax + movups %xmm3,16(%rsi) + movdqu 16(%rdi),%xmm3 + movups %xmm4,32(%rsi) + movdqu 32(%rdi),%xmm4 + movups %xmm5,48(%rsi) + movdqu 48(%rdi),%xmm5 + movups %xmm6,64(%rsi) + movdqu 64(%rdi),%xmm6 + movups %xmm7,80(%rsi) + movdqu 80(%rdi),%xmm7 + movups %xmm8,96(%rsi) + movdqu 96(%rdi),%xmm8 + movups %xmm9,112(%rsi) + leaq 128(%rsi),%rsi + movdqu 112(%rdi),%xmm9 + leaq 128(%rdi),%rdi +.Lecb_enc_loop8_enter: + + call _aesni_encrypt8 + + subq $0x80,%rdx + jnc .Lecb_enc_loop8 + + movups %xmm2,(%rsi) + movq %r11,%rcx + movups %xmm3,16(%rsi) + movl %r10d,%eax + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + movups %xmm6,64(%rsi) + movups %xmm7,80(%rsi) + movups %xmm8,96(%rsi) + movups %xmm9,112(%rsi) + leaq 128(%rsi),%rsi + addq $0x80,%rdx + jz .Lecb_ret + +.Lecb_enc_tail: + movups (%rdi),%xmm2 + cmpq $0x20,%rdx + jb .Lecb_enc_one + movups 16(%rdi),%xmm3 + je .Lecb_enc_two + movups 32(%rdi),%xmm4 + cmpq $0x40,%rdx + jb .Lecb_enc_three + movups 48(%rdi),%xmm5 + je .Lecb_enc_four + movups 64(%rdi),%xmm6 + cmpq $0x60,%rdx + jb .Lecb_enc_five + movups 80(%rdi),%xmm7 + je .Lecb_enc_six + movdqu 96(%rdi),%xmm8 + xorps %xmm9,%xmm9 + call _aesni_encrypt8 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + movups %xmm6,64(%rsi) + movups %xmm7,80(%rsi) + movups %xmm8,96(%rsi) + jmp .Lecb_ret +.align 16 +.Lecb_enc_one: + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +.Loop_enc1_3: +.byte 102,15,56,220,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_enc1_3 +.byte 102,15,56,221,209 + movups %xmm2,(%rsi) + jmp .Lecb_ret +.align 16 +.Lecb_enc_two: + call _aesni_encrypt2 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + jmp .Lecb_ret +.align 16 +.Lecb_enc_three: + call _aesni_encrypt3 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + jmp .Lecb_ret +.align 16 +.Lecb_enc_four: + call _aesni_encrypt4 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + jmp .Lecb_ret +.align 16 +.Lecb_enc_five: + xorps %xmm7,%xmm7 + call _aesni_encrypt6 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + movups %xmm6,64(%rsi) + jmp .Lecb_ret +.align 16 +.Lecb_enc_six: + call _aesni_encrypt6 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + movups %xmm6,64(%rsi) + movups %xmm7,80(%rsi) + jmp .Lecb_ret + +.align 16 +.Lecb_decrypt: + cmpq $0x80,%rdx + jb .Lecb_dec_tail + + movdqu (%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqu 32(%rdi),%xmm4 + movdqu 48(%rdi),%xmm5 + movdqu 64(%rdi),%xmm6 + movdqu 80(%rdi),%xmm7 + movdqu 96(%rdi),%xmm8 + movdqu 112(%rdi),%xmm9 + leaq 128(%rdi),%rdi + subq $0x80,%rdx + jmp .Lecb_dec_loop8_enter +.align 16 +.Lecb_dec_loop8: + movups %xmm2,(%rsi) + movq %r11,%rcx + movdqu (%rdi),%xmm2 + movl %r10d,%eax + movups %xmm3,16(%rsi) + movdqu 16(%rdi),%xmm3 + movups %xmm4,32(%rsi) + movdqu 32(%rdi),%xmm4 + movups %xmm5,48(%rsi) + movdqu 48(%rdi),%xmm5 + movups %xmm6,64(%rsi) + movdqu 64(%rdi),%xmm6 + movups %xmm7,80(%rsi) + movdqu 80(%rdi),%xmm7 + movups %xmm8,96(%rsi) + movdqu 96(%rdi),%xmm8 + movups %xmm9,112(%rsi) + leaq 128(%rsi),%rsi + movdqu 112(%rdi),%xmm9 + leaq 128(%rdi),%rdi +.Lecb_dec_loop8_enter: + + call _aesni_decrypt8 + + movups (%r11),%xmm0 + subq $0x80,%rdx + jnc .Lecb_dec_loop8 + + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movq %r11,%rcx + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movl %r10d,%eax + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + movups %xmm6,64(%rsi) + pxor %xmm6,%xmm6 + movups %xmm7,80(%rsi) + pxor %xmm7,%xmm7 + movups %xmm8,96(%rsi) + pxor %xmm8,%xmm8 + movups %xmm9,112(%rsi) + pxor %xmm9,%xmm9 + leaq 128(%rsi),%rsi + addq $0x80,%rdx + jz .Lecb_ret + +.Lecb_dec_tail: + movups (%rdi),%xmm2 + cmpq $0x20,%rdx + jb .Lecb_dec_one + movups 16(%rdi),%xmm3 + je .Lecb_dec_two + movups 32(%rdi),%xmm4 + cmpq $0x40,%rdx + jb .Lecb_dec_three + movups 48(%rdi),%xmm5 + je .Lecb_dec_four + movups 64(%rdi),%xmm6 + cmpq $0x60,%rdx + jb .Lecb_dec_five + movups 80(%rdi),%xmm7 + je .Lecb_dec_six + movups 96(%rdi),%xmm8 + movups (%rcx),%xmm0 + xorps %xmm9,%xmm9 + call _aesni_decrypt8 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + movups %xmm6,64(%rsi) + pxor %xmm6,%xmm6 + movups %xmm7,80(%rsi) + pxor %xmm7,%xmm7 + movups %xmm8,96(%rsi) + pxor %xmm8,%xmm8 + pxor %xmm9,%xmm9 + jmp .Lecb_ret +.align 16 +.Lecb_dec_one: + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +.Loop_dec1_4: +.byte 102,15,56,222,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_dec1_4 +.byte 102,15,56,223,209 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + jmp .Lecb_ret +.align 16 +.Lecb_dec_two: + call _aesni_decrypt2 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + jmp .Lecb_ret +.align 16 +.Lecb_dec_three: + call _aesni_decrypt3 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + jmp .Lecb_ret +.align 16 +.Lecb_dec_four: + call _aesni_decrypt4 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + jmp .Lecb_ret +.align 16 +.Lecb_dec_five: + xorps %xmm7,%xmm7 + call _aesni_decrypt6 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + movups %xmm6,64(%rsi) + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + jmp .Lecb_ret +.align 16 +.Lecb_dec_six: + call _aesni_decrypt6 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + movups %xmm6,64(%rsi) + pxor %xmm6,%xmm6 + movups %xmm7,80(%rsi) + pxor %xmm7,%xmm7 + +.Lecb_ret: + xorps %xmm0,%xmm0 + pxor %xmm1,%xmm1 + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_ecb_encrypt,.-aesni_ecb_encrypt +.globl aesni_ccm64_encrypt_blocks +.type aesni_ccm64_encrypt_blocks,@function +.align 16 +aesni_ccm64_encrypt_blocks: +.cfi_startproc + movl 240(%rcx),%eax + movdqu (%r8),%xmm6 + movdqa .Lincrement64(%rip),%xmm9 + movdqa .Lbswap_mask(%rip),%xmm7 + + shll $4,%eax + movl $16,%r10d + leaq 0(%rcx),%r11 + movdqu (%r9),%xmm3 + movdqa %xmm6,%xmm2 + leaq 32(%rcx,%rax,1),%rcx +.byte 102,15,56,0,247 + subq %rax,%r10 + jmp .Lccm64_enc_outer +.align 16 +.Lccm64_enc_outer: + movups (%r11),%xmm0 + movq %r10,%rax + movups (%rdi),%xmm8 + + xorps %xmm0,%xmm2 + movups 16(%r11),%xmm1 + xorps %xmm8,%xmm0 + xorps %xmm0,%xmm3 + movups 32(%r11),%xmm0 + +.Lccm64_enc2_loop: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Lccm64_enc2_loop +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + paddq %xmm9,%xmm6 + decq %rdx +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 + + leaq 16(%rdi),%rdi + xorps %xmm2,%xmm8 + movdqa %xmm6,%xmm2 + movups %xmm8,(%rsi) +.byte 102,15,56,0,215 + leaq 16(%rsi),%rsi + jnz .Lccm64_enc_outer + + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + movups %xmm3,(%r9) + pxor %xmm3,%xmm3 + pxor %xmm8,%xmm8 + pxor %xmm6,%xmm6 + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_ccm64_encrypt_blocks,.-aesni_ccm64_encrypt_blocks +.globl aesni_ccm64_decrypt_blocks +.type aesni_ccm64_decrypt_blocks,@function +.align 16 +aesni_ccm64_decrypt_blocks: +.cfi_startproc + movl 240(%rcx),%eax + movups (%r8),%xmm6 + movdqu (%r9),%xmm3 + movdqa .Lincrement64(%rip),%xmm9 + movdqa .Lbswap_mask(%rip),%xmm7 + + movaps %xmm6,%xmm2 + movl %eax,%r10d + movq %rcx,%r11 +.byte 102,15,56,0,247 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +.Loop_enc1_5: +.byte 102,15,56,220,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_enc1_5 +.byte 102,15,56,221,209 + shll $4,%r10d + movl $16,%eax + movups (%rdi),%xmm8 + paddq %xmm9,%xmm6 + leaq 16(%rdi),%rdi + subq %r10,%rax + leaq 32(%r11,%r10,1),%rcx + movq %rax,%r10 + jmp .Lccm64_dec_outer +.align 16 +.Lccm64_dec_outer: + xorps %xmm2,%xmm8 + movdqa %xmm6,%xmm2 + movups %xmm8,(%rsi) + leaq 16(%rsi),%rsi +.byte 102,15,56,0,215 + + subq $1,%rdx + jz .Lccm64_dec_break + + movups (%r11),%xmm0 + movq %r10,%rax + movups 16(%r11),%xmm1 + xorps %xmm0,%xmm8 + xorps %xmm0,%xmm2 + xorps %xmm8,%xmm3 + movups 32(%r11),%xmm0 + jmp .Lccm64_dec2_loop +.align 16 +.Lccm64_dec2_loop: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Lccm64_dec2_loop + movups (%rdi),%xmm8 + paddq %xmm9,%xmm6 +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 + leaq 16(%rdi),%rdi + jmp .Lccm64_dec_outer + +.align 16 +.Lccm64_dec_break: + + movl 240(%r11),%eax + movups (%r11),%xmm0 + movups 16(%r11),%xmm1 + xorps %xmm0,%xmm8 + leaq 32(%r11),%r11 + xorps %xmm8,%xmm3 +.Loop_enc1_6: +.byte 102,15,56,220,217 + decl %eax + movups (%r11),%xmm1 + leaq 16(%r11),%r11 + jnz .Loop_enc1_6 +.byte 102,15,56,221,217 + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + movups %xmm3,(%r9) + pxor %xmm3,%xmm3 + pxor %xmm8,%xmm8 + pxor %xmm6,%xmm6 + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_ccm64_decrypt_blocks,.-aesni_ccm64_decrypt_blocks +.globl aesni_ctr32_encrypt_blocks +.type aesni_ctr32_encrypt_blocks,@function +.align 16 +aesni_ctr32_encrypt_blocks: +.cfi_startproc + cmpq $1,%rdx + jne .Lctr32_bulk + + + + movups (%r8),%xmm2 + movups (%rdi),%xmm3 + movl 240(%rcx),%edx + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +.Loop_enc1_7: +.byte 102,15,56,220,209 + decl %edx + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_enc1_7 +.byte 102,15,56,221,209 + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + xorps %xmm3,%xmm2 + pxor %xmm3,%xmm3 + movups %xmm2,(%rsi) + xorps %xmm2,%xmm2 + jmp .Lctr32_epilogue + +.align 16 +.Lctr32_bulk: + leaq (%rsp),%r11 +.cfi_def_cfa_register %r11 + pushq %rbp +.cfi_offset %rbp,-16 + subq $128,%rsp + andq $-16,%rsp + + + + + movdqu (%r8),%xmm2 + movdqu (%rcx),%xmm0 + movl 12(%r8),%r8d + pxor %xmm0,%xmm2 + movl 12(%rcx),%ebp + movdqa %xmm2,0(%rsp) + bswapl %r8d + movdqa %xmm2,%xmm3 + movdqa %xmm2,%xmm4 + movdqa %xmm2,%xmm5 + movdqa %xmm2,64(%rsp) + movdqa %xmm2,80(%rsp) + movdqa %xmm2,96(%rsp) + movq %rdx,%r10 + movdqa %xmm2,112(%rsp) + + leaq 1(%r8),%rax + leaq 2(%r8),%rdx + bswapl %eax + bswapl %edx + xorl %ebp,%eax + xorl %ebp,%edx +.byte 102,15,58,34,216,3 + leaq 3(%r8),%rax + movdqa %xmm3,16(%rsp) +.byte 102,15,58,34,226,3 + bswapl %eax + movq %r10,%rdx + leaq 4(%r8),%r10 + movdqa %xmm4,32(%rsp) + xorl %ebp,%eax + bswapl %r10d +.byte 102,15,58,34,232,3 + xorl %ebp,%r10d + movdqa %xmm5,48(%rsp) + leaq 5(%r8),%r9 + movl %r10d,64+12(%rsp) + bswapl %r9d + leaq 6(%r8),%r10 + movl 240(%rcx),%eax + xorl %ebp,%r9d + bswapl %r10d + movl %r9d,80+12(%rsp) + xorl %ebp,%r10d + leaq 7(%r8),%r9 + movl %r10d,96+12(%rsp) + bswapl %r9d + movl OPENSSL_ia32cap_P+4(%rip),%r10d + xorl %ebp,%r9d + andl $71303168,%r10d + movl %r9d,112+12(%rsp) + + movups 16(%rcx),%xmm1 + + movdqa 64(%rsp),%xmm6 + movdqa 80(%rsp),%xmm7 + + cmpq $8,%rdx + jb .Lctr32_tail + + subq $6,%rdx + cmpl $4194304,%r10d + je .Lctr32_6x + + leaq 128(%rcx),%rcx + subq $2,%rdx + jmp .Lctr32_loop8 + +.align 16 +.Lctr32_6x: + shll $4,%eax + movl $48,%r10d + bswapl %ebp + leaq 32(%rcx,%rax,1),%rcx + subq %rax,%r10 + jmp .Lctr32_loop6 + +.align 16 +.Lctr32_loop6: + addl $6,%r8d + movups -48(%rcx,%r10,1),%xmm0 +.byte 102,15,56,220,209 + movl %r8d,%eax + xorl %ebp,%eax +.byte 102,15,56,220,217 +.byte 0x0f,0x38,0xf1,0x44,0x24,12 + leal 1(%r8),%eax +.byte 102,15,56,220,225 + xorl %ebp,%eax +.byte 0x0f,0x38,0xf1,0x44,0x24,28 +.byte 102,15,56,220,233 + leal 2(%r8),%eax + xorl %ebp,%eax +.byte 102,15,56,220,241 +.byte 0x0f,0x38,0xf1,0x44,0x24,44 + leal 3(%r8),%eax +.byte 102,15,56,220,249 + movups -32(%rcx,%r10,1),%xmm1 + xorl %ebp,%eax + +.byte 102,15,56,220,208 +.byte 0x0f,0x38,0xf1,0x44,0x24,60 + leal 4(%r8),%eax +.byte 102,15,56,220,216 + xorl %ebp,%eax +.byte 0x0f,0x38,0xf1,0x44,0x24,76 +.byte 102,15,56,220,224 + leal 5(%r8),%eax + xorl %ebp,%eax +.byte 102,15,56,220,232 +.byte 0x0f,0x38,0xf1,0x44,0x24,92 + movq %r10,%rax +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 + movups -16(%rcx,%r10,1),%xmm0 + + call .Lenc_loop6 + + movdqu (%rdi),%xmm8 + movdqu 16(%rdi),%xmm9 + movdqu 32(%rdi),%xmm10 + movdqu 48(%rdi),%xmm11 + movdqu 64(%rdi),%xmm12 + movdqu 80(%rdi),%xmm13 + leaq 96(%rdi),%rdi + movups -64(%rcx,%r10,1),%xmm1 + pxor %xmm2,%xmm8 + movaps 0(%rsp),%xmm2 + pxor %xmm3,%xmm9 + movaps 16(%rsp),%xmm3 + pxor %xmm4,%xmm10 + movaps 32(%rsp),%xmm4 + pxor %xmm5,%xmm11 + movaps 48(%rsp),%xmm5 + pxor %xmm6,%xmm12 + movaps 64(%rsp),%xmm6 + pxor %xmm7,%xmm13 + movaps 80(%rsp),%xmm7 + movdqu %xmm8,(%rsi) + movdqu %xmm9,16(%rsi) + movdqu %xmm10,32(%rsi) + movdqu %xmm11,48(%rsi) + movdqu %xmm12,64(%rsi) + movdqu %xmm13,80(%rsi) + leaq 96(%rsi),%rsi + + subq $6,%rdx + jnc .Lctr32_loop6 + + addq $6,%rdx + jz .Lctr32_done + + leal -48(%r10),%eax + leaq -80(%rcx,%r10,1),%rcx + negl %eax + shrl $4,%eax + jmp .Lctr32_tail + +.align 32 +.Lctr32_loop8: + addl $8,%r8d + movdqa 96(%rsp),%xmm8 +.byte 102,15,56,220,209 + movl %r8d,%r9d + movdqa 112(%rsp),%xmm9 +.byte 102,15,56,220,217 + bswapl %r9d + movups 32-128(%rcx),%xmm0 +.byte 102,15,56,220,225 + xorl %ebp,%r9d + nop +.byte 102,15,56,220,233 + movl %r9d,0+12(%rsp) + leaq 1(%r8),%r9 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movups 48-128(%rcx),%xmm1 + bswapl %r9d +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 + xorl %ebp,%r9d +.byte 0x66,0x90 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movl %r9d,16+12(%rsp) + leaq 2(%r8),%r9 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups 64-128(%rcx),%xmm0 + bswapl %r9d +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + xorl %ebp,%r9d +.byte 0x66,0x90 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movl %r9d,32+12(%rsp) + leaq 3(%r8),%r9 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movups 80-128(%rcx),%xmm1 + bswapl %r9d +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 + xorl %ebp,%r9d +.byte 0x66,0x90 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movl %r9d,48+12(%rsp) + leaq 4(%r8),%r9 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups 96-128(%rcx),%xmm0 + bswapl %r9d +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + xorl %ebp,%r9d +.byte 0x66,0x90 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movl %r9d,64+12(%rsp) + leaq 5(%r8),%r9 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movups 112-128(%rcx),%xmm1 + bswapl %r9d +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 + xorl %ebp,%r9d +.byte 0x66,0x90 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movl %r9d,80+12(%rsp) + leaq 6(%r8),%r9 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups 128-128(%rcx),%xmm0 + bswapl %r9d +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + xorl %ebp,%r9d +.byte 0x66,0x90 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movl %r9d,96+12(%rsp) + leaq 7(%r8),%r9 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movups 144-128(%rcx),%xmm1 + bswapl %r9d +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 + xorl %ebp,%r9d + movdqu 0(%rdi),%xmm10 +.byte 102,15,56,220,232 + movl %r9d,112+12(%rsp) + cmpl $11,%eax +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups 160-128(%rcx),%xmm0 + + jb .Lctr32_enc_done + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movups 176-128(%rcx),%xmm1 + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups 192-128(%rcx),%xmm0 + je .Lctr32_enc_done + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movups 208-128(%rcx),%xmm1 + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups 224-128(%rcx),%xmm0 + jmp .Lctr32_enc_done + +.align 16 +.Lctr32_enc_done: + movdqu 16(%rdi),%xmm11 + pxor %xmm0,%xmm10 + movdqu 32(%rdi),%xmm12 + pxor %xmm0,%xmm11 + movdqu 48(%rdi),%xmm13 + pxor %xmm0,%xmm12 + movdqu 64(%rdi),%xmm14 + pxor %xmm0,%xmm13 + movdqu 80(%rdi),%xmm15 + pxor %xmm0,%xmm14 + pxor %xmm0,%xmm15 +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movdqu 96(%rdi),%xmm1 + leaq 128(%rdi),%rdi + +.byte 102,65,15,56,221,210 + pxor %xmm0,%xmm1 + movdqu 112-128(%rdi),%xmm10 +.byte 102,65,15,56,221,219 + pxor %xmm0,%xmm10 + movdqa 0(%rsp),%xmm11 +.byte 102,65,15,56,221,228 +.byte 102,65,15,56,221,237 + movdqa 16(%rsp),%xmm12 + movdqa 32(%rsp),%xmm13 +.byte 102,65,15,56,221,246 +.byte 102,65,15,56,221,255 + movdqa 48(%rsp),%xmm14 + movdqa 64(%rsp),%xmm15 +.byte 102,68,15,56,221,193 + movdqa 80(%rsp),%xmm0 + movups 16-128(%rcx),%xmm1 +.byte 102,69,15,56,221,202 + + movups %xmm2,(%rsi) + movdqa %xmm11,%xmm2 + movups %xmm3,16(%rsi) + movdqa %xmm12,%xmm3 + movups %xmm4,32(%rsi) + movdqa %xmm13,%xmm4 + movups %xmm5,48(%rsi) + movdqa %xmm14,%xmm5 + movups %xmm6,64(%rsi) + movdqa %xmm15,%xmm6 + movups %xmm7,80(%rsi) + movdqa %xmm0,%xmm7 + movups %xmm8,96(%rsi) + movups %xmm9,112(%rsi) + leaq 128(%rsi),%rsi + + subq $8,%rdx + jnc .Lctr32_loop8 + + addq $8,%rdx + jz .Lctr32_done + leaq -128(%rcx),%rcx + +.Lctr32_tail: + + + leaq 16(%rcx),%rcx + cmpq $4,%rdx + jb .Lctr32_loop3 + je .Lctr32_loop4 + + + shll $4,%eax + movdqa 96(%rsp),%xmm8 + pxor %xmm9,%xmm9 + + movups 16(%rcx),%xmm0 +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + leaq 32-16(%rcx,%rax,1),%rcx + negq %rax +.byte 102,15,56,220,225 + addq $16,%rax + movups (%rdi),%xmm10 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 + movups 16(%rdi),%xmm11 + movups 32(%rdi),%xmm12 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 + + call .Lenc_loop8_enter + + movdqu 48(%rdi),%xmm13 + pxor %xmm10,%xmm2 + movdqu 64(%rdi),%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm13,%xmm5 + movdqu %xmm4,32(%rsi) + pxor %xmm10,%xmm6 + movdqu %xmm5,48(%rsi) + movdqu %xmm6,64(%rsi) + cmpq $6,%rdx + jb .Lctr32_done + + movups 80(%rdi),%xmm11 + xorps %xmm11,%xmm7 + movups %xmm7,80(%rsi) + je .Lctr32_done + + movups 96(%rdi),%xmm12 + xorps %xmm12,%xmm8 + movups %xmm8,96(%rsi) + jmp .Lctr32_done + +.align 32 +.Lctr32_loop4: +.byte 102,15,56,220,209 + leaq 16(%rcx),%rcx + decl %eax +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups (%rcx),%xmm1 + jnz .Lctr32_loop4 +.byte 102,15,56,221,209 +.byte 102,15,56,221,217 + movups (%rdi),%xmm10 + movups 16(%rdi),%xmm11 +.byte 102,15,56,221,225 +.byte 102,15,56,221,233 + movups 32(%rdi),%xmm12 + movups 48(%rdi),%xmm13 + + xorps %xmm10,%xmm2 + movups %xmm2,(%rsi) + xorps %xmm11,%xmm3 + movups %xmm3,16(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm4,32(%rsi) + pxor %xmm13,%xmm5 + movdqu %xmm5,48(%rsi) + jmp .Lctr32_done + +.align 32 +.Lctr32_loop3: +.byte 102,15,56,220,209 + leaq 16(%rcx),%rcx + decl %eax +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 + movups (%rcx),%xmm1 + jnz .Lctr32_loop3 +.byte 102,15,56,221,209 +.byte 102,15,56,221,217 +.byte 102,15,56,221,225 + + movups (%rdi),%xmm10 + xorps %xmm10,%xmm2 + movups %xmm2,(%rsi) + cmpq $2,%rdx + jb .Lctr32_done + + movups 16(%rdi),%xmm11 + xorps %xmm11,%xmm3 + movups %xmm3,16(%rsi) + je .Lctr32_done + + movups 32(%rdi),%xmm12 + xorps %xmm12,%xmm4 + movups %xmm4,32(%rsi) + +.Lctr32_done: + xorps %xmm0,%xmm0 + xorl %ebp,%ebp + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + movaps %xmm0,0(%rsp) + pxor %xmm8,%xmm8 + movaps %xmm0,16(%rsp) + pxor %xmm9,%xmm9 + movaps %xmm0,32(%rsp) + pxor %xmm10,%xmm10 + movaps %xmm0,48(%rsp) + pxor %xmm11,%xmm11 + movaps %xmm0,64(%rsp) + pxor %xmm12,%xmm12 + movaps %xmm0,80(%rsp) + pxor %xmm13,%xmm13 + movaps %xmm0,96(%rsp) + pxor %xmm14,%xmm14 + movaps %xmm0,112(%rsp) + pxor %xmm15,%xmm15 + movq -8(%r11),%rbp +.cfi_restore %rbp + leaq (%r11),%rsp +.cfi_def_cfa_register %rsp +.Lctr32_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_ctr32_encrypt_blocks,.-aesni_ctr32_encrypt_blocks +.globl aesni_xts_encrypt +.type aesni_xts_encrypt,@function +.align 16 +aesni_xts_encrypt: +.cfi_startproc + leaq (%rsp),%r11 +.cfi_def_cfa_register %r11 + pushq %rbp +.cfi_offset %rbp,-16 + subq $112,%rsp + andq $-16,%rsp + movups (%r9),%xmm2 + movl 240(%r8),%eax + movl 240(%rcx),%r10d + movups (%r8),%xmm0 + movups 16(%r8),%xmm1 + leaq 32(%r8),%r8 + xorps %xmm0,%xmm2 +.Loop_enc1_8: +.byte 102,15,56,220,209 + decl %eax + movups (%r8),%xmm1 + leaq 16(%r8),%r8 + jnz .Loop_enc1_8 +.byte 102,15,56,221,209 + movups (%rcx),%xmm0 + movq %rcx,%rbp + movl %r10d,%eax + shll $4,%r10d + movq %rdx,%r9 + andq $-16,%rdx + + movups 16(%rcx,%r10,1),%xmm1 + + movdqa .Lxts_magic(%rip),%xmm8 + movdqa %xmm2,%xmm15 + pshufd $0x5f,%xmm2,%xmm9 + pxor %xmm0,%xmm1 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm10 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm10 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm11 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm11 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm12 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm12 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm13 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm13 + pxor %xmm14,%xmm15 + movdqa %xmm15,%xmm14 + psrad $31,%xmm9 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm9 + pxor %xmm0,%xmm14 + pxor %xmm9,%xmm15 + movaps %xmm1,96(%rsp) + + subq $96,%rdx + jc .Lxts_enc_short + + movl $16+96,%eax + leaq 32(%rbp,%r10,1),%rcx + subq %r10,%rax + movups 16(%rbp),%xmm1 + movq %rax,%r10 + leaq .Lxts_magic(%rip),%r8 + jmp .Lxts_enc_grandloop + +.align 32 +.Lxts_enc_grandloop: + movdqu 0(%rdi),%xmm2 + movdqa %xmm0,%xmm8 + movdqu 16(%rdi),%xmm3 + pxor %xmm10,%xmm2 + movdqu 32(%rdi),%xmm4 + pxor %xmm11,%xmm3 +.byte 102,15,56,220,209 + movdqu 48(%rdi),%xmm5 + pxor %xmm12,%xmm4 +.byte 102,15,56,220,217 + movdqu 64(%rdi),%xmm6 + pxor %xmm13,%xmm5 +.byte 102,15,56,220,225 + movdqu 80(%rdi),%xmm7 + pxor %xmm15,%xmm8 + movdqa 96(%rsp),%xmm9 + pxor %xmm14,%xmm6 +.byte 102,15,56,220,233 + movups 32(%rbp),%xmm0 + leaq 96(%rdi),%rdi + pxor %xmm8,%xmm7 + + pxor %xmm9,%xmm10 +.byte 102,15,56,220,241 + pxor %xmm9,%xmm11 + movdqa %xmm10,0(%rsp) +.byte 102,15,56,220,249 + movups 48(%rbp),%xmm1 + pxor %xmm9,%xmm12 + +.byte 102,15,56,220,208 + pxor %xmm9,%xmm13 + movdqa %xmm11,16(%rsp) +.byte 102,15,56,220,216 + pxor %xmm9,%xmm14 + movdqa %xmm12,32(%rsp) +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + pxor %xmm9,%xmm8 + movdqa %xmm14,64(%rsp) +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 + movups 64(%rbp),%xmm0 + movdqa %xmm8,80(%rsp) + pshufd $0x5f,%xmm15,%xmm9 + jmp .Lxts_enc_loop6 +.align 32 +.Lxts_enc_loop6: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 + movups -64(%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 + movups -80(%rcx,%rax,1),%xmm0 + jnz .Lxts_enc_loop6 + + movdqa (%r8),%xmm8 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 +.byte 102,15,56,220,209 + paddq %xmm15,%xmm15 + psrad $31,%xmm14 +.byte 102,15,56,220,217 + pand %xmm8,%xmm14 + movups (%rbp),%xmm10 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 + pxor %xmm14,%xmm15 + movaps %xmm10,%xmm11 +.byte 102,15,56,220,249 + movups -64(%rcx),%xmm1 + + movdqa %xmm9,%xmm14 +.byte 102,15,56,220,208 + paddd %xmm9,%xmm9 + pxor %xmm15,%xmm10 +.byte 102,15,56,220,216 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + pand %xmm8,%xmm14 + movaps %xmm11,%xmm12 +.byte 102,15,56,220,240 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 +.byte 102,15,56,220,248 + movups -48(%rcx),%xmm0 + + paddd %xmm9,%xmm9 +.byte 102,15,56,220,209 + pxor %xmm15,%xmm11 + psrad $31,%xmm14 +.byte 102,15,56,220,217 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movdqa %xmm13,48(%rsp) + pxor %xmm14,%xmm15 +.byte 102,15,56,220,241 + movaps %xmm12,%xmm13 + movdqa %xmm9,%xmm14 +.byte 102,15,56,220,249 + movups -32(%rcx),%xmm1 + + paddd %xmm9,%xmm9 +.byte 102,15,56,220,208 + pxor %xmm15,%xmm12 + psrad $31,%xmm14 +.byte 102,15,56,220,216 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 + pxor %xmm14,%xmm15 + movaps %xmm13,%xmm14 +.byte 102,15,56,220,248 + + movdqa %xmm9,%xmm0 + paddd %xmm9,%xmm9 +.byte 102,15,56,220,209 + pxor %xmm15,%xmm13 + psrad $31,%xmm0 +.byte 102,15,56,220,217 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm0 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + pxor %xmm0,%xmm15 + movups (%rbp),%xmm0 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 + movups 16(%rbp),%xmm1 + + pxor %xmm15,%xmm14 +.byte 102,15,56,221,84,36,0 + psrad $31,%xmm9 + paddq %xmm15,%xmm15 +.byte 102,15,56,221,92,36,16 +.byte 102,15,56,221,100,36,32 + pand %xmm8,%xmm9 + movq %r10,%rax +.byte 102,15,56,221,108,36,48 +.byte 102,15,56,221,116,36,64 +.byte 102,15,56,221,124,36,80 + pxor %xmm9,%xmm15 + + leaq 96(%rsi),%rsi + movups %xmm2,-96(%rsi) + movups %xmm3,-80(%rsi) + movups %xmm4,-64(%rsi) + movups %xmm5,-48(%rsi) + movups %xmm6,-32(%rsi) + movups %xmm7,-16(%rsi) + subq $96,%rdx + jnc .Lxts_enc_grandloop + + movl $16+96,%eax + subl %r10d,%eax + movq %rbp,%rcx + shrl $4,%eax + +.Lxts_enc_short: + + movl %eax,%r10d + pxor %xmm0,%xmm10 + addq $96,%rdx + jz .Lxts_enc_done + + pxor %xmm0,%xmm11 + cmpq $0x20,%rdx + jb .Lxts_enc_one + pxor %xmm0,%xmm12 + je .Lxts_enc_two + + pxor %xmm0,%xmm13 + cmpq $0x40,%rdx + jb .Lxts_enc_three + pxor %xmm0,%xmm14 + je .Lxts_enc_four + + movdqu (%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqu 32(%rdi),%xmm4 + pxor %xmm10,%xmm2 + movdqu 48(%rdi),%xmm5 + pxor %xmm11,%xmm3 + movdqu 64(%rdi),%xmm6 + leaq 80(%rdi),%rdi + pxor %xmm12,%xmm4 + pxor %xmm13,%xmm5 + pxor %xmm14,%xmm6 + pxor %xmm7,%xmm7 + + call _aesni_encrypt6 + + xorps %xmm10,%xmm2 + movdqa %xmm15,%xmm10 + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + movdqu %xmm2,(%rsi) + xorps %xmm13,%xmm5 + movdqu %xmm3,16(%rsi) + xorps %xmm14,%xmm6 + movdqu %xmm4,32(%rsi) + movdqu %xmm5,48(%rsi) + movdqu %xmm6,64(%rsi) + leaq 80(%rsi),%rsi + jmp .Lxts_enc_done + +.align 16 +.Lxts_enc_one: + movups (%rdi),%xmm2 + leaq 16(%rdi),%rdi + xorps %xmm10,%xmm2 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +.Loop_enc1_9: +.byte 102,15,56,220,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_enc1_9 +.byte 102,15,56,221,209 + xorps %xmm10,%xmm2 + movdqa %xmm11,%xmm10 + movups %xmm2,(%rsi) + leaq 16(%rsi),%rsi + jmp .Lxts_enc_done + +.align 16 +.Lxts_enc_two: + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 + leaq 32(%rdi),%rdi + xorps %xmm10,%xmm2 + xorps %xmm11,%xmm3 + + call _aesni_encrypt2 + + xorps %xmm10,%xmm2 + movdqa %xmm12,%xmm10 + xorps %xmm11,%xmm3 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + leaq 32(%rsi),%rsi + jmp .Lxts_enc_done + +.align 16 +.Lxts_enc_three: + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 + movups 32(%rdi),%xmm4 + leaq 48(%rdi),%rdi + xorps %xmm10,%xmm2 + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + + call _aesni_encrypt3 + + xorps %xmm10,%xmm2 + movdqa %xmm13,%xmm10 + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + leaq 48(%rsi),%rsi + jmp .Lxts_enc_done + +.align 16 +.Lxts_enc_four: + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 + movups 32(%rdi),%xmm4 + xorps %xmm10,%xmm2 + movups 48(%rdi),%xmm5 + leaq 64(%rdi),%rdi + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + xorps %xmm13,%xmm5 + + call _aesni_encrypt4 + + pxor %xmm10,%xmm2 + movdqa %xmm14,%xmm10 + pxor %xmm11,%xmm3 + pxor %xmm12,%xmm4 + movdqu %xmm2,(%rsi) + pxor %xmm13,%xmm5 + movdqu %xmm3,16(%rsi) + movdqu %xmm4,32(%rsi) + movdqu %xmm5,48(%rsi) + leaq 64(%rsi),%rsi + jmp .Lxts_enc_done + +.align 16 +.Lxts_enc_done: + andq $15,%r9 + jz .Lxts_enc_ret + movq %r9,%rdx + +.Lxts_enc_steal: + movzbl (%rdi),%eax + movzbl -16(%rsi),%ecx + leaq 1(%rdi),%rdi + movb %al,-16(%rsi) + movb %cl,0(%rsi) + leaq 1(%rsi),%rsi + subq $1,%rdx + jnz .Lxts_enc_steal + + subq %r9,%rsi + movq %rbp,%rcx + movl %r10d,%eax + + movups -16(%rsi),%xmm2 + xorps %xmm10,%xmm2 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +.Loop_enc1_10: +.byte 102,15,56,220,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_enc1_10 +.byte 102,15,56,221,209 + xorps %xmm10,%xmm2 + movups %xmm2,-16(%rsi) + +.Lxts_enc_ret: + xorps %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + movaps %xmm0,0(%rsp) + pxor %xmm8,%xmm8 + movaps %xmm0,16(%rsp) + pxor %xmm9,%xmm9 + movaps %xmm0,32(%rsp) + pxor %xmm10,%xmm10 + movaps %xmm0,48(%rsp) + pxor %xmm11,%xmm11 + movaps %xmm0,64(%rsp) + pxor %xmm12,%xmm12 + movaps %xmm0,80(%rsp) + pxor %xmm13,%xmm13 + movaps %xmm0,96(%rsp) + pxor %xmm14,%xmm14 + pxor %xmm15,%xmm15 + movq -8(%r11),%rbp +.cfi_restore %rbp + leaq (%r11),%rsp +.cfi_def_cfa_register %rsp +.Lxts_enc_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_xts_encrypt,.-aesni_xts_encrypt +.globl aesni_xts_decrypt +.type aesni_xts_decrypt,@function +.align 16 +aesni_xts_decrypt: +.cfi_startproc + leaq (%rsp),%r11 +.cfi_def_cfa_register %r11 + pushq %rbp +.cfi_offset %rbp,-16 + subq $112,%rsp + andq $-16,%rsp + movups (%r9),%xmm2 + movl 240(%r8),%eax + movl 240(%rcx),%r10d + movups (%r8),%xmm0 + movups 16(%r8),%xmm1 + leaq 32(%r8),%r8 + xorps %xmm0,%xmm2 +.Loop_enc1_11: +.byte 102,15,56,220,209 + decl %eax + movups (%r8),%xmm1 + leaq 16(%r8),%r8 + jnz .Loop_enc1_11 +.byte 102,15,56,221,209 + xorl %eax,%eax + testq $15,%rdx + setnz %al + shlq $4,%rax + subq %rax,%rdx + + movups (%rcx),%xmm0 + movq %rcx,%rbp + movl %r10d,%eax + shll $4,%r10d + movq %rdx,%r9 + andq $-16,%rdx + + movups 16(%rcx,%r10,1),%xmm1 + + movdqa .Lxts_magic(%rip),%xmm8 + movdqa %xmm2,%xmm15 + pshufd $0x5f,%xmm2,%xmm9 + pxor %xmm0,%xmm1 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm10 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm10 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm11 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm11 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm12 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm12 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm13 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm13 + pxor %xmm14,%xmm15 + movdqa %xmm15,%xmm14 + psrad $31,%xmm9 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm9 + pxor %xmm0,%xmm14 + pxor %xmm9,%xmm15 + movaps %xmm1,96(%rsp) + + subq $96,%rdx + jc .Lxts_dec_short + + movl $16+96,%eax + leaq 32(%rbp,%r10,1),%rcx + subq %r10,%rax + movups 16(%rbp),%xmm1 + movq %rax,%r10 + leaq .Lxts_magic(%rip),%r8 + jmp .Lxts_dec_grandloop + +.align 32 +.Lxts_dec_grandloop: + movdqu 0(%rdi),%xmm2 + movdqa %xmm0,%xmm8 + movdqu 16(%rdi),%xmm3 + pxor %xmm10,%xmm2 + movdqu 32(%rdi),%xmm4 + pxor %xmm11,%xmm3 +.byte 102,15,56,222,209 + movdqu 48(%rdi),%xmm5 + pxor %xmm12,%xmm4 +.byte 102,15,56,222,217 + movdqu 64(%rdi),%xmm6 + pxor %xmm13,%xmm5 +.byte 102,15,56,222,225 + movdqu 80(%rdi),%xmm7 + pxor %xmm15,%xmm8 + movdqa 96(%rsp),%xmm9 + pxor %xmm14,%xmm6 +.byte 102,15,56,222,233 + movups 32(%rbp),%xmm0 + leaq 96(%rdi),%rdi + pxor %xmm8,%xmm7 + + pxor %xmm9,%xmm10 +.byte 102,15,56,222,241 + pxor %xmm9,%xmm11 + movdqa %xmm10,0(%rsp) +.byte 102,15,56,222,249 + movups 48(%rbp),%xmm1 + pxor %xmm9,%xmm12 + +.byte 102,15,56,222,208 + pxor %xmm9,%xmm13 + movdqa %xmm11,16(%rsp) +.byte 102,15,56,222,216 + pxor %xmm9,%xmm14 + movdqa %xmm12,32(%rsp) +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + pxor %xmm9,%xmm8 + movdqa %xmm14,64(%rsp) +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 + movups 64(%rbp),%xmm0 + movdqa %xmm8,80(%rsp) + pshufd $0x5f,%xmm15,%xmm9 + jmp .Lxts_dec_loop6 +.align 32 +.Lxts_dec_loop6: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 + movups -64(%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 + movups -80(%rcx,%rax,1),%xmm0 + jnz .Lxts_dec_loop6 + + movdqa (%r8),%xmm8 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 +.byte 102,15,56,222,209 + paddq %xmm15,%xmm15 + psrad $31,%xmm14 +.byte 102,15,56,222,217 + pand %xmm8,%xmm14 + movups (%rbp),%xmm10 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 + pxor %xmm14,%xmm15 + movaps %xmm10,%xmm11 +.byte 102,15,56,222,249 + movups -64(%rcx),%xmm1 + + movdqa %xmm9,%xmm14 +.byte 102,15,56,222,208 + paddd %xmm9,%xmm9 + pxor %xmm15,%xmm10 +.byte 102,15,56,222,216 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + pand %xmm8,%xmm14 + movaps %xmm11,%xmm12 +.byte 102,15,56,222,240 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 +.byte 102,15,56,222,248 + movups -48(%rcx),%xmm0 + + paddd %xmm9,%xmm9 +.byte 102,15,56,222,209 + pxor %xmm15,%xmm11 + psrad $31,%xmm14 +.byte 102,15,56,222,217 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movdqa %xmm13,48(%rsp) + pxor %xmm14,%xmm15 +.byte 102,15,56,222,241 + movaps %xmm12,%xmm13 + movdqa %xmm9,%xmm14 +.byte 102,15,56,222,249 + movups -32(%rcx),%xmm1 + + paddd %xmm9,%xmm9 +.byte 102,15,56,222,208 + pxor %xmm15,%xmm12 + psrad $31,%xmm14 +.byte 102,15,56,222,216 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 + pxor %xmm14,%xmm15 + movaps %xmm13,%xmm14 +.byte 102,15,56,222,248 + + movdqa %xmm9,%xmm0 + paddd %xmm9,%xmm9 +.byte 102,15,56,222,209 + pxor %xmm15,%xmm13 + psrad $31,%xmm0 +.byte 102,15,56,222,217 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm0 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + pxor %xmm0,%xmm15 + movups (%rbp),%xmm0 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 + movups 16(%rbp),%xmm1 + + pxor %xmm15,%xmm14 +.byte 102,15,56,223,84,36,0 + psrad $31,%xmm9 + paddq %xmm15,%xmm15 +.byte 102,15,56,223,92,36,16 +.byte 102,15,56,223,100,36,32 + pand %xmm8,%xmm9 + movq %r10,%rax +.byte 102,15,56,223,108,36,48 +.byte 102,15,56,223,116,36,64 +.byte 102,15,56,223,124,36,80 + pxor %xmm9,%xmm15 + + leaq 96(%rsi),%rsi + movups %xmm2,-96(%rsi) + movups %xmm3,-80(%rsi) + movups %xmm4,-64(%rsi) + movups %xmm5,-48(%rsi) + movups %xmm6,-32(%rsi) + movups %xmm7,-16(%rsi) + subq $96,%rdx + jnc .Lxts_dec_grandloop + + movl $16+96,%eax + subl %r10d,%eax + movq %rbp,%rcx + shrl $4,%eax + +.Lxts_dec_short: + + movl %eax,%r10d + pxor %xmm0,%xmm10 + pxor %xmm0,%xmm11 + addq $96,%rdx + jz .Lxts_dec_done + + pxor %xmm0,%xmm12 + cmpq $0x20,%rdx + jb .Lxts_dec_one + pxor %xmm0,%xmm13 + je .Lxts_dec_two + + pxor %xmm0,%xmm14 + cmpq $0x40,%rdx + jb .Lxts_dec_three + je .Lxts_dec_four + + movdqu (%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqu 32(%rdi),%xmm4 + pxor %xmm10,%xmm2 + movdqu 48(%rdi),%xmm5 + pxor %xmm11,%xmm3 + movdqu 64(%rdi),%xmm6 + leaq 80(%rdi),%rdi + pxor %xmm12,%xmm4 + pxor %xmm13,%xmm5 + pxor %xmm14,%xmm6 + + call _aesni_decrypt6 + + xorps %xmm10,%xmm2 + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + movdqu %xmm2,(%rsi) + xorps %xmm13,%xmm5 + movdqu %xmm3,16(%rsi) + xorps %xmm14,%xmm6 + movdqu %xmm4,32(%rsi) + pxor %xmm14,%xmm14 + movdqu %xmm5,48(%rsi) + pcmpgtd %xmm15,%xmm14 + movdqu %xmm6,64(%rsi) + leaq 80(%rsi),%rsi + pshufd $0x13,%xmm14,%xmm11 + andq $15,%r9 + jz .Lxts_dec_ret + + movdqa %xmm15,%xmm10 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm11 + pxor %xmm15,%xmm11 + jmp .Lxts_dec_done2 + +.align 16 +.Lxts_dec_one: + movups (%rdi),%xmm2 + leaq 16(%rdi),%rdi + xorps %xmm10,%xmm2 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +.Loop_dec1_12: +.byte 102,15,56,222,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_dec1_12 +.byte 102,15,56,223,209 + xorps %xmm10,%xmm2 + movdqa %xmm11,%xmm10 + movups %xmm2,(%rsi) + movdqa %xmm12,%xmm11 + leaq 16(%rsi),%rsi + jmp .Lxts_dec_done + +.align 16 +.Lxts_dec_two: + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 + leaq 32(%rdi),%rdi + xorps %xmm10,%xmm2 + xorps %xmm11,%xmm3 + + call _aesni_decrypt2 + + xorps %xmm10,%xmm2 + movdqa %xmm12,%xmm10 + xorps %xmm11,%xmm3 + movdqa %xmm13,%xmm11 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + leaq 32(%rsi),%rsi + jmp .Lxts_dec_done + +.align 16 +.Lxts_dec_three: + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 + movups 32(%rdi),%xmm4 + leaq 48(%rdi),%rdi + xorps %xmm10,%xmm2 + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + + call _aesni_decrypt3 + + xorps %xmm10,%xmm2 + movdqa %xmm13,%xmm10 + xorps %xmm11,%xmm3 + movdqa %xmm14,%xmm11 + xorps %xmm12,%xmm4 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + leaq 48(%rsi),%rsi + jmp .Lxts_dec_done + +.align 16 +.Lxts_dec_four: + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 + movups 32(%rdi),%xmm4 + xorps %xmm10,%xmm2 + movups 48(%rdi),%xmm5 + leaq 64(%rdi),%rdi + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + xorps %xmm13,%xmm5 + + call _aesni_decrypt4 + + pxor %xmm10,%xmm2 + movdqa %xmm14,%xmm10 + pxor %xmm11,%xmm3 + movdqa %xmm15,%xmm11 + pxor %xmm12,%xmm4 + movdqu %xmm2,(%rsi) + pxor %xmm13,%xmm5 + movdqu %xmm3,16(%rsi) + movdqu %xmm4,32(%rsi) + movdqu %xmm5,48(%rsi) + leaq 64(%rsi),%rsi + jmp .Lxts_dec_done + +.align 16 +.Lxts_dec_done: + andq $15,%r9 + jz .Lxts_dec_ret +.Lxts_dec_done2: + movq %r9,%rdx + movq %rbp,%rcx + movl %r10d,%eax + + movups (%rdi),%xmm2 + xorps %xmm11,%xmm2 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +.Loop_dec1_13: +.byte 102,15,56,222,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_dec1_13 +.byte 102,15,56,223,209 + xorps %xmm11,%xmm2 + movups %xmm2,(%rsi) + +.Lxts_dec_steal: + movzbl 16(%rdi),%eax + movzbl (%rsi),%ecx + leaq 1(%rdi),%rdi + movb %al,(%rsi) + movb %cl,16(%rsi) + leaq 1(%rsi),%rsi + subq $1,%rdx + jnz .Lxts_dec_steal + + subq %r9,%rsi + movq %rbp,%rcx + movl %r10d,%eax + + movups (%rsi),%xmm2 + xorps %xmm10,%xmm2 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +.Loop_dec1_14: +.byte 102,15,56,222,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_dec1_14 +.byte 102,15,56,223,209 + xorps %xmm10,%xmm2 + movups %xmm2,(%rsi) + +.Lxts_dec_ret: + xorps %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + movaps %xmm0,0(%rsp) + pxor %xmm8,%xmm8 + movaps %xmm0,16(%rsp) + pxor %xmm9,%xmm9 + movaps %xmm0,32(%rsp) + pxor %xmm10,%xmm10 + movaps %xmm0,48(%rsp) + pxor %xmm11,%xmm11 + movaps %xmm0,64(%rsp) + pxor %xmm12,%xmm12 + movaps %xmm0,80(%rsp) + pxor %xmm13,%xmm13 + movaps %xmm0,96(%rsp) + pxor %xmm14,%xmm14 + pxor %xmm15,%xmm15 + movq -8(%r11),%rbp +.cfi_restore %rbp + leaq (%r11),%rsp +.cfi_def_cfa_register %rsp +.Lxts_dec_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_xts_decrypt,.-aesni_xts_decrypt +.globl aesni_ocb_encrypt +.type aesni_ocb_encrypt,@function +.align 32 +aesni_ocb_encrypt: +.cfi_startproc + leaq (%rsp),%rax + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + movq 8(%rax),%rbx + movq 8+8(%rax),%rbp + + movl 240(%rcx),%r10d + movq %rcx,%r11 + shll $4,%r10d + movups (%rcx),%xmm9 + movups 16(%rcx,%r10,1),%xmm1 + + movdqu (%r9),%xmm15 + pxor %xmm1,%xmm9 + pxor %xmm1,%xmm15 + + movl $16+32,%eax + leaq 32(%r11,%r10,1),%rcx + movups 16(%r11),%xmm1 + subq %r10,%rax + movq %rax,%r10 + + movdqu (%rbx),%xmm10 + movdqu (%rbp),%xmm8 + + testq $1,%r8 + jnz .Locb_enc_odd + + bsfq %r8,%r12 + addq $1,%r8 + shlq $4,%r12 + movdqu (%rbx,%r12,1),%xmm7 + movdqu (%rdi),%xmm2 + leaq 16(%rdi),%rdi + + call __ocb_encrypt1 + + movdqa %xmm7,%xmm15 + movups %xmm2,(%rsi) + leaq 16(%rsi),%rsi + subq $1,%rdx + jz .Locb_enc_done + +.Locb_enc_odd: + leaq 1(%r8),%r12 + leaq 3(%r8),%r13 + leaq 5(%r8),%r14 + leaq 6(%r8),%r8 + bsfq %r12,%r12 + bsfq %r13,%r13 + bsfq %r14,%r14 + shlq $4,%r12 + shlq $4,%r13 + shlq $4,%r14 + + subq $6,%rdx + jc .Locb_enc_short + jmp .Locb_enc_grandloop + +.align 32 +.Locb_enc_grandloop: + movdqu 0(%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqu 32(%rdi),%xmm4 + movdqu 48(%rdi),%xmm5 + movdqu 64(%rdi),%xmm6 + movdqu 80(%rdi),%xmm7 + leaq 96(%rdi),%rdi + + call __ocb_encrypt6 + + movups %xmm2,0(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + movups %xmm6,64(%rsi) + movups %xmm7,80(%rsi) + leaq 96(%rsi),%rsi + subq $6,%rdx + jnc .Locb_enc_grandloop + +.Locb_enc_short: + addq $6,%rdx + jz .Locb_enc_done + + movdqu 0(%rdi),%xmm2 + cmpq $2,%rdx + jb .Locb_enc_one + movdqu 16(%rdi),%xmm3 + je .Locb_enc_two + + movdqu 32(%rdi),%xmm4 + cmpq $4,%rdx + jb .Locb_enc_three + movdqu 48(%rdi),%xmm5 + je .Locb_enc_four + + movdqu 64(%rdi),%xmm6 + pxor %xmm7,%xmm7 + + call __ocb_encrypt6 + + movdqa %xmm14,%xmm15 + movups %xmm2,0(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + movups %xmm6,64(%rsi) + + jmp .Locb_enc_done + +.align 16 +.Locb_enc_one: + movdqa %xmm10,%xmm7 + + call __ocb_encrypt1 + + movdqa %xmm7,%xmm15 + movups %xmm2,0(%rsi) + jmp .Locb_enc_done + +.align 16 +.Locb_enc_two: + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + + call __ocb_encrypt4 + + movdqa %xmm11,%xmm15 + movups %xmm2,0(%rsi) + movups %xmm3,16(%rsi) + + jmp .Locb_enc_done + +.align 16 +.Locb_enc_three: + pxor %xmm5,%xmm5 + + call __ocb_encrypt4 + + movdqa %xmm12,%xmm15 + movups %xmm2,0(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + + jmp .Locb_enc_done + +.align 16 +.Locb_enc_four: + call __ocb_encrypt4 + + movdqa %xmm13,%xmm15 + movups %xmm2,0(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + +.Locb_enc_done: + pxor %xmm0,%xmm15 + movdqu %xmm8,(%rbp) + movdqu %xmm15,(%r9) + + xorps %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + pxor %xmm8,%xmm8 + pxor %xmm9,%xmm9 + pxor %xmm10,%xmm10 + pxor %xmm11,%xmm11 + pxor %xmm12,%xmm12 + pxor %xmm13,%xmm13 + pxor %xmm14,%xmm14 + pxor %xmm15,%xmm15 + leaq 40(%rsp),%rax +.cfi_def_cfa %rax,8 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Locb_enc_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_ocb_encrypt,.-aesni_ocb_encrypt + +.type __ocb_encrypt6,@function +.align 32 +__ocb_encrypt6: +.cfi_startproc + pxor %xmm9,%xmm15 + movdqu (%rbx,%r12,1),%xmm11 + movdqa %xmm10,%xmm12 + movdqu (%rbx,%r13,1),%xmm13 + movdqa %xmm10,%xmm14 + pxor %xmm15,%xmm10 + movdqu (%rbx,%r14,1),%xmm15 + pxor %xmm10,%xmm11 + pxor %xmm2,%xmm8 + pxor %xmm10,%xmm2 + pxor %xmm11,%xmm12 + pxor %xmm3,%xmm8 + pxor %xmm11,%xmm3 + pxor %xmm12,%xmm13 + pxor %xmm4,%xmm8 + pxor %xmm12,%xmm4 + pxor %xmm13,%xmm14 + pxor %xmm5,%xmm8 + pxor %xmm13,%xmm5 + pxor %xmm14,%xmm15 + pxor %xmm6,%xmm8 + pxor %xmm14,%xmm6 + pxor %xmm7,%xmm8 + pxor %xmm15,%xmm7 + movups 32(%r11),%xmm0 + + leaq 1(%r8),%r12 + leaq 3(%r8),%r13 + leaq 5(%r8),%r14 + addq $6,%r8 + pxor %xmm9,%xmm10 + bsfq %r12,%r12 + bsfq %r13,%r13 + bsfq %r14,%r14 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + pxor %xmm9,%xmm11 + pxor %xmm9,%xmm12 +.byte 102,15,56,220,241 + pxor %xmm9,%xmm13 + pxor %xmm9,%xmm14 +.byte 102,15,56,220,249 + movups 48(%r11),%xmm1 + pxor %xmm9,%xmm15 + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 + movups 64(%r11),%xmm0 + shlq $4,%r12 + shlq $4,%r13 + jmp .Locb_enc_loop6 + +.align 32 +.Locb_enc_loop6: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Locb_enc_loop6 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 + movups 16(%r11),%xmm1 + shlq $4,%r14 + +.byte 102,65,15,56,221,210 + movdqu (%rbx),%xmm10 + movq %r10,%rax +.byte 102,65,15,56,221,219 +.byte 102,65,15,56,221,228 +.byte 102,65,15,56,221,237 +.byte 102,65,15,56,221,246 +.byte 102,65,15,56,221,255 + .byte 0xf3,0xc3 +.cfi_endproc +.size __ocb_encrypt6,.-__ocb_encrypt6 + +.type __ocb_encrypt4,@function +.align 32 +__ocb_encrypt4: +.cfi_startproc + pxor %xmm9,%xmm15 + movdqu (%rbx,%r12,1),%xmm11 + movdqa %xmm10,%xmm12 + movdqu (%rbx,%r13,1),%xmm13 + pxor %xmm15,%xmm10 + pxor %xmm10,%xmm11 + pxor %xmm2,%xmm8 + pxor %xmm10,%xmm2 + pxor %xmm11,%xmm12 + pxor %xmm3,%xmm8 + pxor %xmm11,%xmm3 + pxor %xmm12,%xmm13 + pxor %xmm4,%xmm8 + pxor %xmm12,%xmm4 + pxor %xmm5,%xmm8 + pxor %xmm13,%xmm5 + movups 32(%r11),%xmm0 + + pxor %xmm9,%xmm10 + pxor %xmm9,%xmm11 + pxor %xmm9,%xmm12 + pxor %xmm9,%xmm13 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups 48(%r11),%xmm1 + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups 64(%r11),%xmm0 + jmp .Locb_enc_loop4 + +.align 32 +.Locb_enc_loop4: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Locb_enc_loop4 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups 16(%r11),%xmm1 + movq %r10,%rax + +.byte 102,65,15,56,221,210 +.byte 102,65,15,56,221,219 +.byte 102,65,15,56,221,228 +.byte 102,65,15,56,221,237 + .byte 0xf3,0xc3 +.cfi_endproc +.size __ocb_encrypt4,.-__ocb_encrypt4 + +.type __ocb_encrypt1,@function +.align 32 +__ocb_encrypt1: +.cfi_startproc + pxor %xmm15,%xmm7 + pxor %xmm9,%xmm7 + pxor %xmm2,%xmm8 + pxor %xmm7,%xmm2 + movups 32(%r11),%xmm0 + +.byte 102,15,56,220,209 + movups 48(%r11),%xmm1 + pxor %xmm9,%xmm7 + +.byte 102,15,56,220,208 + movups 64(%r11),%xmm0 + jmp .Locb_enc_loop1 + +.align 32 +.Locb_enc_loop1: +.byte 102,15,56,220,209 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,220,208 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Locb_enc_loop1 + +.byte 102,15,56,220,209 + movups 16(%r11),%xmm1 + movq %r10,%rax + +.byte 102,15,56,221,215 + .byte 0xf3,0xc3 +.cfi_endproc +.size __ocb_encrypt1,.-__ocb_encrypt1 + +.globl aesni_ocb_decrypt +.type aesni_ocb_decrypt,@function +.align 32 +aesni_ocb_decrypt: +.cfi_startproc + leaq (%rsp),%rax + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + movq 8(%rax),%rbx + movq 8+8(%rax),%rbp + + movl 240(%rcx),%r10d + movq %rcx,%r11 + shll $4,%r10d + movups (%rcx),%xmm9 + movups 16(%rcx,%r10,1),%xmm1 + + movdqu (%r9),%xmm15 + pxor %xmm1,%xmm9 + pxor %xmm1,%xmm15 + + movl $16+32,%eax + leaq 32(%r11,%r10,1),%rcx + movups 16(%r11),%xmm1 + subq %r10,%rax + movq %rax,%r10 + + movdqu (%rbx),%xmm10 + movdqu (%rbp),%xmm8 + + testq $1,%r8 + jnz .Locb_dec_odd + + bsfq %r8,%r12 + addq $1,%r8 + shlq $4,%r12 + movdqu (%rbx,%r12,1),%xmm7 + movdqu (%rdi),%xmm2 + leaq 16(%rdi),%rdi + + call __ocb_decrypt1 + + movdqa %xmm7,%xmm15 + movups %xmm2,(%rsi) + xorps %xmm2,%xmm8 + leaq 16(%rsi),%rsi + subq $1,%rdx + jz .Locb_dec_done + +.Locb_dec_odd: + leaq 1(%r8),%r12 + leaq 3(%r8),%r13 + leaq 5(%r8),%r14 + leaq 6(%r8),%r8 + bsfq %r12,%r12 + bsfq %r13,%r13 + bsfq %r14,%r14 + shlq $4,%r12 + shlq $4,%r13 + shlq $4,%r14 + + subq $6,%rdx + jc .Locb_dec_short + jmp .Locb_dec_grandloop + +.align 32 +.Locb_dec_grandloop: + movdqu 0(%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqu 32(%rdi),%xmm4 + movdqu 48(%rdi),%xmm5 + movdqu 64(%rdi),%xmm6 + movdqu 80(%rdi),%xmm7 + leaq 96(%rdi),%rdi + + call __ocb_decrypt6 + + movups %xmm2,0(%rsi) + pxor %xmm2,%xmm8 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm8 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm8 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm8 + movups %xmm6,64(%rsi) + pxor %xmm6,%xmm8 + movups %xmm7,80(%rsi) + pxor %xmm7,%xmm8 + leaq 96(%rsi),%rsi + subq $6,%rdx + jnc .Locb_dec_grandloop + +.Locb_dec_short: + addq $6,%rdx + jz .Locb_dec_done + + movdqu 0(%rdi),%xmm2 + cmpq $2,%rdx + jb .Locb_dec_one + movdqu 16(%rdi),%xmm3 + je .Locb_dec_two + + movdqu 32(%rdi),%xmm4 + cmpq $4,%rdx + jb .Locb_dec_three + movdqu 48(%rdi),%xmm5 + je .Locb_dec_four + + movdqu 64(%rdi),%xmm6 + pxor %xmm7,%xmm7 + + call __ocb_decrypt6 + + movdqa %xmm14,%xmm15 + movups %xmm2,0(%rsi) + pxor %xmm2,%xmm8 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm8 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm8 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm8 + movups %xmm6,64(%rsi) + pxor %xmm6,%xmm8 + + jmp .Locb_dec_done + +.align 16 +.Locb_dec_one: + movdqa %xmm10,%xmm7 + + call __ocb_decrypt1 + + movdqa %xmm7,%xmm15 + movups %xmm2,0(%rsi) + xorps %xmm2,%xmm8 + jmp .Locb_dec_done + +.align 16 +.Locb_dec_two: + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + + call __ocb_decrypt4 + + movdqa %xmm11,%xmm15 + movups %xmm2,0(%rsi) + xorps %xmm2,%xmm8 + movups %xmm3,16(%rsi) + xorps %xmm3,%xmm8 + + jmp .Locb_dec_done + +.align 16 +.Locb_dec_three: + pxor %xmm5,%xmm5 + + call __ocb_decrypt4 + + movdqa %xmm12,%xmm15 + movups %xmm2,0(%rsi) + xorps %xmm2,%xmm8 + movups %xmm3,16(%rsi) + xorps %xmm3,%xmm8 + movups %xmm4,32(%rsi) + xorps %xmm4,%xmm8 + + jmp .Locb_dec_done + +.align 16 +.Locb_dec_four: + call __ocb_decrypt4 + + movdqa %xmm13,%xmm15 + movups %xmm2,0(%rsi) + pxor %xmm2,%xmm8 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm8 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm8 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm8 + +.Locb_dec_done: + pxor %xmm0,%xmm15 + movdqu %xmm8,(%rbp) + movdqu %xmm15,(%r9) + + xorps %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + pxor %xmm8,%xmm8 + pxor %xmm9,%xmm9 + pxor %xmm10,%xmm10 + pxor %xmm11,%xmm11 + pxor %xmm12,%xmm12 + pxor %xmm13,%xmm13 + pxor %xmm14,%xmm14 + pxor %xmm15,%xmm15 + leaq 40(%rsp),%rax +.cfi_def_cfa %rax,8 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Locb_dec_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_ocb_decrypt,.-aesni_ocb_decrypt + +.type __ocb_decrypt6,@function +.align 32 +__ocb_decrypt6: +.cfi_startproc + pxor %xmm9,%xmm15 + movdqu (%rbx,%r12,1),%xmm11 + movdqa %xmm10,%xmm12 + movdqu (%rbx,%r13,1),%xmm13 + movdqa %xmm10,%xmm14 + pxor %xmm15,%xmm10 + movdqu (%rbx,%r14,1),%xmm15 + pxor %xmm10,%xmm11 + pxor %xmm10,%xmm2 + pxor %xmm11,%xmm12 + pxor %xmm11,%xmm3 + pxor %xmm12,%xmm13 + pxor %xmm12,%xmm4 + pxor %xmm13,%xmm14 + pxor %xmm13,%xmm5 + pxor %xmm14,%xmm15 + pxor %xmm14,%xmm6 + pxor %xmm15,%xmm7 + movups 32(%r11),%xmm0 + + leaq 1(%r8),%r12 + leaq 3(%r8),%r13 + leaq 5(%r8),%r14 + addq $6,%r8 + pxor %xmm9,%xmm10 + bsfq %r12,%r12 + bsfq %r13,%r13 + bsfq %r14,%r14 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + pxor %xmm9,%xmm11 + pxor %xmm9,%xmm12 +.byte 102,15,56,222,241 + pxor %xmm9,%xmm13 + pxor %xmm9,%xmm14 +.byte 102,15,56,222,249 + movups 48(%r11),%xmm1 + pxor %xmm9,%xmm15 + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 + movups 64(%r11),%xmm0 + shlq $4,%r12 + shlq $4,%r13 + jmp .Locb_dec_loop6 + +.align 32 +.Locb_dec_loop6: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Locb_dec_loop6 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 + movups 16(%r11),%xmm1 + shlq $4,%r14 + +.byte 102,65,15,56,223,210 + movdqu (%rbx),%xmm10 + movq %r10,%rax +.byte 102,65,15,56,223,219 +.byte 102,65,15,56,223,228 +.byte 102,65,15,56,223,237 +.byte 102,65,15,56,223,246 +.byte 102,65,15,56,223,255 + .byte 0xf3,0xc3 +.cfi_endproc +.size __ocb_decrypt6,.-__ocb_decrypt6 + +.type __ocb_decrypt4,@function +.align 32 +__ocb_decrypt4: +.cfi_startproc + pxor %xmm9,%xmm15 + movdqu (%rbx,%r12,1),%xmm11 + movdqa %xmm10,%xmm12 + movdqu (%rbx,%r13,1),%xmm13 + pxor %xmm15,%xmm10 + pxor %xmm10,%xmm11 + pxor %xmm10,%xmm2 + pxor %xmm11,%xmm12 + pxor %xmm11,%xmm3 + pxor %xmm12,%xmm13 + pxor %xmm12,%xmm4 + pxor %xmm13,%xmm5 + movups 32(%r11),%xmm0 + + pxor %xmm9,%xmm10 + pxor %xmm9,%xmm11 + pxor %xmm9,%xmm12 + pxor %xmm9,%xmm13 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups 48(%r11),%xmm1 + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups 64(%r11),%xmm0 + jmp .Locb_dec_loop4 + +.align 32 +.Locb_dec_loop4: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Locb_dec_loop4 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups 16(%r11),%xmm1 + movq %r10,%rax + +.byte 102,65,15,56,223,210 +.byte 102,65,15,56,223,219 +.byte 102,65,15,56,223,228 +.byte 102,65,15,56,223,237 + .byte 0xf3,0xc3 +.cfi_endproc +.size __ocb_decrypt4,.-__ocb_decrypt4 + +.type __ocb_decrypt1,@function +.align 32 +__ocb_decrypt1: +.cfi_startproc + pxor %xmm15,%xmm7 + pxor %xmm9,%xmm7 + pxor %xmm7,%xmm2 + movups 32(%r11),%xmm0 + +.byte 102,15,56,222,209 + movups 48(%r11),%xmm1 + pxor %xmm9,%xmm7 + +.byte 102,15,56,222,208 + movups 64(%r11),%xmm0 + jmp .Locb_dec_loop1 + +.align 32 +.Locb_dec_loop1: +.byte 102,15,56,222,209 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,222,208 + movups -16(%rcx,%rax,1),%xmm0 + jnz .Locb_dec_loop1 + +.byte 102,15,56,222,209 + movups 16(%r11),%xmm1 + movq %r10,%rax + +.byte 102,15,56,223,215 + .byte 0xf3,0xc3 +.cfi_endproc +.size __ocb_decrypt1,.-__ocb_decrypt1 +.globl aesni_cbc_encrypt +.type aesni_cbc_encrypt,@function +.align 16 +aesni_cbc_encrypt: +.cfi_startproc + testq %rdx,%rdx + jz .Lcbc_ret + + movl 240(%rcx),%r10d + movq %rcx,%r11 + testl %r9d,%r9d + jz .Lcbc_decrypt + + movups (%r8),%xmm2 + movl %r10d,%eax + cmpq $16,%rdx + jb .Lcbc_enc_tail + subq $16,%rdx + jmp .Lcbc_enc_loop +.align 16 +.Lcbc_enc_loop: + movups (%rdi),%xmm3 + leaq 16(%rdi),%rdi + + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm3 + leaq 32(%rcx),%rcx + xorps %xmm3,%xmm2 +.Loop_enc1_15: +.byte 102,15,56,220,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_enc1_15 +.byte 102,15,56,221,209 + movl %r10d,%eax + movq %r11,%rcx + movups %xmm2,0(%rsi) + leaq 16(%rsi),%rsi + subq $16,%rdx + jnc .Lcbc_enc_loop + addq $16,%rdx + jnz .Lcbc_enc_tail + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + movups %xmm2,(%r8) + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + jmp .Lcbc_ret + +.Lcbc_enc_tail: + movq %rdx,%rcx + xchgq %rdi,%rsi +.long 0x9066A4F3 + movl $16,%ecx + subq %rdx,%rcx + xorl %eax,%eax +.long 0x9066AAF3 + leaq -16(%rdi),%rdi + movl %r10d,%eax + movq %rdi,%rsi + movq %r11,%rcx + xorq %rdx,%rdx + jmp .Lcbc_enc_loop + +.align 16 +.Lcbc_decrypt: + cmpq $16,%rdx + jne .Lcbc_decrypt_bulk + + + + movdqu (%rdi),%xmm2 + movdqu (%r8),%xmm3 + movdqa %xmm2,%xmm4 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +.Loop_dec1_16: +.byte 102,15,56,222,209 + decl %r10d + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_dec1_16 +.byte 102,15,56,223,209 + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + movdqu %xmm4,(%r8) + xorps %xmm3,%xmm2 + pxor %xmm3,%xmm3 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + jmp .Lcbc_ret +.align 16 +.Lcbc_decrypt_bulk: + leaq (%rsp),%r11 +.cfi_def_cfa_register %r11 + pushq %rbp +.cfi_offset %rbp,-16 + subq $16,%rsp + andq $-16,%rsp + movq %rcx,%rbp + movups (%r8),%xmm10 + movl %r10d,%eax + cmpq $0x50,%rdx + jbe .Lcbc_dec_tail + + movups (%rcx),%xmm0 + movdqu 0(%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqa %xmm2,%xmm11 + movdqu 32(%rdi),%xmm4 + movdqa %xmm3,%xmm12 + movdqu 48(%rdi),%xmm5 + movdqa %xmm4,%xmm13 + movdqu 64(%rdi),%xmm6 + movdqa %xmm5,%xmm14 + movdqu 80(%rdi),%xmm7 + movdqa %xmm6,%xmm15 + movl OPENSSL_ia32cap_P+4(%rip),%r9d + cmpq $0x70,%rdx + jbe .Lcbc_dec_six_or_seven + + andl $71303168,%r9d + subq $0x50,%rdx + cmpl $4194304,%r9d + je .Lcbc_dec_loop6_enter + subq $0x20,%rdx + leaq 112(%rcx),%rcx + jmp .Lcbc_dec_loop8_enter +.align 16 +.Lcbc_dec_loop8: + movups %xmm9,(%rsi) + leaq 16(%rsi),%rsi +.Lcbc_dec_loop8_enter: + movdqu 96(%rdi),%xmm8 + pxor %xmm0,%xmm2 + movdqu 112(%rdi),%xmm9 + pxor %xmm0,%xmm3 + movups 16-112(%rcx),%xmm1 + pxor %xmm0,%xmm4 + movq $-1,%rbp + cmpq $0x70,%rdx + pxor %xmm0,%xmm5 + pxor %xmm0,%xmm6 + pxor %xmm0,%xmm7 + pxor %xmm0,%xmm8 + +.byte 102,15,56,222,209 + pxor %xmm0,%xmm9 + movups 32-112(%rcx),%xmm0 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 + adcq $0,%rbp + andq $128,%rbp +.byte 102,68,15,56,222,201 + addq %rdi,%rbp + movups 48-112(%rcx),%xmm1 +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups 64-112(%rcx),%xmm0 + nop +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 + movups 80-112(%rcx),%xmm1 + nop +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups 96-112(%rcx),%xmm0 + nop +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 + movups 112-112(%rcx),%xmm1 + nop +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups 128-112(%rcx),%xmm0 + nop +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 + movups 144-112(%rcx),%xmm1 + cmpl $11,%eax +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups 160-112(%rcx),%xmm0 + jb .Lcbc_dec_done +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 + movups 176-112(%rcx),%xmm1 + nop +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups 192-112(%rcx),%xmm0 + je .Lcbc_dec_done +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 + movups 208-112(%rcx),%xmm1 + nop +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups 224-112(%rcx),%xmm0 + jmp .Lcbc_dec_done +.align 16 +.Lcbc_dec_done: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 + pxor %xmm0,%xmm10 + pxor %xmm0,%xmm11 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + pxor %xmm0,%xmm12 + pxor %xmm0,%xmm13 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 + pxor %xmm0,%xmm14 + pxor %xmm0,%xmm15 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 + movdqu 80(%rdi),%xmm1 + +.byte 102,65,15,56,223,210 + movdqu 96(%rdi),%xmm10 + pxor %xmm0,%xmm1 +.byte 102,65,15,56,223,219 + pxor %xmm0,%xmm10 + movdqu 112(%rdi),%xmm0 +.byte 102,65,15,56,223,228 + leaq 128(%rdi),%rdi + movdqu 0(%rbp),%xmm11 +.byte 102,65,15,56,223,237 +.byte 102,65,15,56,223,246 + movdqu 16(%rbp),%xmm12 + movdqu 32(%rbp),%xmm13 +.byte 102,65,15,56,223,255 +.byte 102,68,15,56,223,193 + movdqu 48(%rbp),%xmm14 + movdqu 64(%rbp),%xmm15 +.byte 102,69,15,56,223,202 + movdqa %xmm0,%xmm10 + movdqu 80(%rbp),%xmm1 + movups -112(%rcx),%xmm0 + + movups %xmm2,(%rsi) + movdqa %xmm11,%xmm2 + movups %xmm3,16(%rsi) + movdqa %xmm12,%xmm3 + movups %xmm4,32(%rsi) + movdqa %xmm13,%xmm4 + movups %xmm5,48(%rsi) + movdqa %xmm14,%xmm5 + movups %xmm6,64(%rsi) + movdqa %xmm15,%xmm6 + movups %xmm7,80(%rsi) + movdqa %xmm1,%xmm7 + movups %xmm8,96(%rsi) + leaq 112(%rsi),%rsi + + subq $0x80,%rdx + ja .Lcbc_dec_loop8 + + movaps %xmm9,%xmm2 + leaq -112(%rcx),%rcx + addq $0x70,%rdx + jle .Lcbc_dec_clear_tail_collected + movups %xmm9,(%rsi) + leaq 16(%rsi),%rsi + cmpq $0x50,%rdx + jbe .Lcbc_dec_tail + + movaps %xmm11,%xmm2 +.Lcbc_dec_six_or_seven: + cmpq $0x60,%rdx + ja .Lcbc_dec_seven + + movaps %xmm7,%xmm8 + call _aesni_decrypt6 + pxor %xmm10,%xmm2 + movaps %xmm8,%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + pxor %xmm13,%xmm5 + movdqu %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + pxor %xmm14,%xmm6 + movdqu %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + pxor %xmm15,%xmm7 + movdqu %xmm6,64(%rsi) + pxor %xmm6,%xmm6 + leaq 80(%rsi),%rsi + movdqa %xmm7,%xmm2 + pxor %xmm7,%xmm7 + jmp .Lcbc_dec_tail_collected + +.align 16 +.Lcbc_dec_seven: + movups 96(%rdi),%xmm8 + xorps %xmm9,%xmm9 + call _aesni_decrypt8 + movups 80(%rdi),%xmm9 + pxor %xmm10,%xmm2 + movups 96(%rdi),%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + pxor %xmm13,%xmm5 + movdqu %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + pxor %xmm14,%xmm6 + movdqu %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + pxor %xmm15,%xmm7 + movdqu %xmm6,64(%rsi) + pxor %xmm6,%xmm6 + pxor %xmm9,%xmm8 + movdqu %xmm7,80(%rsi) + pxor %xmm7,%xmm7 + leaq 96(%rsi),%rsi + movdqa %xmm8,%xmm2 + pxor %xmm8,%xmm8 + pxor %xmm9,%xmm9 + jmp .Lcbc_dec_tail_collected + +.align 16 +.Lcbc_dec_loop6: + movups %xmm7,(%rsi) + leaq 16(%rsi),%rsi + movdqu 0(%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqa %xmm2,%xmm11 + movdqu 32(%rdi),%xmm4 + movdqa %xmm3,%xmm12 + movdqu 48(%rdi),%xmm5 + movdqa %xmm4,%xmm13 + movdqu 64(%rdi),%xmm6 + movdqa %xmm5,%xmm14 + movdqu 80(%rdi),%xmm7 + movdqa %xmm6,%xmm15 +.Lcbc_dec_loop6_enter: + leaq 96(%rdi),%rdi + movdqa %xmm7,%xmm8 + + call _aesni_decrypt6 + + pxor %xmm10,%xmm2 + movdqa %xmm8,%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm13,%xmm5 + movdqu %xmm4,32(%rsi) + pxor %xmm14,%xmm6 + movq %rbp,%rcx + movdqu %xmm5,48(%rsi) + pxor %xmm15,%xmm7 + movl %r10d,%eax + movdqu %xmm6,64(%rsi) + leaq 80(%rsi),%rsi + subq $0x60,%rdx + ja .Lcbc_dec_loop6 + + movdqa %xmm7,%xmm2 + addq $0x50,%rdx + jle .Lcbc_dec_clear_tail_collected + movups %xmm7,(%rsi) + leaq 16(%rsi),%rsi + +.Lcbc_dec_tail: + movups (%rdi),%xmm2 + subq $0x10,%rdx + jbe .Lcbc_dec_one + + movups 16(%rdi),%xmm3 + movaps %xmm2,%xmm11 + subq $0x10,%rdx + jbe .Lcbc_dec_two + + movups 32(%rdi),%xmm4 + movaps %xmm3,%xmm12 + subq $0x10,%rdx + jbe .Lcbc_dec_three + + movups 48(%rdi),%xmm5 + movaps %xmm4,%xmm13 + subq $0x10,%rdx + jbe .Lcbc_dec_four + + movups 64(%rdi),%xmm6 + movaps %xmm5,%xmm14 + movaps %xmm6,%xmm15 + xorps %xmm7,%xmm7 + call _aesni_decrypt6 + pxor %xmm10,%xmm2 + movaps %xmm15,%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + pxor %xmm13,%xmm5 + movdqu %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + pxor %xmm14,%xmm6 + movdqu %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + leaq 64(%rsi),%rsi + movdqa %xmm6,%xmm2 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + subq $0x10,%rdx + jmp .Lcbc_dec_tail_collected + +.align 16 +.Lcbc_dec_one: + movaps %xmm2,%xmm11 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +.Loop_dec1_17: +.byte 102,15,56,222,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz .Loop_dec1_17 +.byte 102,15,56,223,209 + xorps %xmm10,%xmm2 + movaps %xmm11,%xmm10 + jmp .Lcbc_dec_tail_collected +.align 16 +.Lcbc_dec_two: + movaps %xmm3,%xmm12 + call _aesni_decrypt2 + pxor %xmm10,%xmm2 + movaps %xmm12,%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + movdqa %xmm3,%xmm2 + pxor %xmm3,%xmm3 + leaq 16(%rsi),%rsi + jmp .Lcbc_dec_tail_collected +.align 16 +.Lcbc_dec_three: + movaps %xmm4,%xmm13 + call _aesni_decrypt3 + pxor %xmm10,%xmm2 + movaps %xmm13,%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movdqa %xmm4,%xmm2 + pxor %xmm4,%xmm4 + leaq 32(%rsi),%rsi + jmp .Lcbc_dec_tail_collected +.align 16 +.Lcbc_dec_four: + movaps %xmm5,%xmm14 + call _aesni_decrypt4 + pxor %xmm10,%xmm2 + movaps %xmm14,%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + pxor %xmm13,%xmm5 + movdqu %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + movdqa %xmm5,%xmm2 + pxor %xmm5,%xmm5 + leaq 48(%rsi),%rsi + jmp .Lcbc_dec_tail_collected + +.align 16 +.Lcbc_dec_clear_tail_collected: + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + pxor %xmm8,%xmm8 + pxor %xmm9,%xmm9 +.Lcbc_dec_tail_collected: + movups %xmm10,(%r8) + andq $15,%rdx + jnz .Lcbc_dec_tail_partial + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + jmp .Lcbc_dec_ret +.align 16 +.Lcbc_dec_tail_partial: + movaps %xmm2,(%rsp) + pxor %xmm2,%xmm2 + movq $16,%rcx + movq %rsi,%rdi + subq %rdx,%rcx + leaq (%rsp),%rsi +.long 0x9066A4F3 + movdqa %xmm2,(%rsp) + +.Lcbc_dec_ret: + xorps %xmm0,%xmm0 + pxor %xmm1,%xmm1 + movq -8(%r11),%rbp +.cfi_restore %rbp + leaq (%r11),%rsp +.cfi_def_cfa_register %rsp +.Lcbc_ret: + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_cbc_encrypt,.-aesni_cbc_encrypt +.globl aesni_set_decrypt_key +.type aesni_set_decrypt_key,@function +.align 16 +aesni_set_decrypt_key: +.cfi_startproc +.byte 0x48,0x83,0xEC,0x08 +.cfi_adjust_cfa_offset 8 + call __aesni_set_encrypt_key + shll $4,%esi + testl %eax,%eax + jnz .Ldec_key_ret + leaq 16(%rdx,%rsi,1),%rdi + + movups (%rdx),%xmm0 + movups (%rdi),%xmm1 + movups %xmm0,(%rdi) + movups %xmm1,(%rdx) + leaq 16(%rdx),%rdx + leaq -16(%rdi),%rdi + +.Ldec_key_inverse: + movups (%rdx),%xmm0 + movups (%rdi),%xmm1 +.byte 102,15,56,219,192 +.byte 102,15,56,219,201 + leaq 16(%rdx),%rdx + leaq -16(%rdi),%rdi + movups %xmm0,16(%rdi) + movups %xmm1,-16(%rdx) + cmpq %rdx,%rdi + ja .Ldec_key_inverse + + movups (%rdx),%xmm0 +.byte 102,15,56,219,192 + pxor %xmm1,%xmm1 + movups %xmm0,(%rdi) + pxor %xmm0,%xmm0 +.Ldec_key_ret: + addq $8,%rsp +.cfi_adjust_cfa_offset -8 + .byte 0xf3,0xc3 +.cfi_endproc +.LSEH_end_set_decrypt_key: +.size aesni_set_decrypt_key,.-aesni_set_decrypt_key +.globl aesni_set_encrypt_key +.type aesni_set_encrypt_key,@function +.align 16 +aesni_set_encrypt_key: +__aesni_set_encrypt_key: +.cfi_startproc +.byte 0x48,0x83,0xEC,0x08 +.cfi_adjust_cfa_offset 8 + movq $-1,%rax + testq %rdi,%rdi + jz .Lenc_key_ret + testq %rdx,%rdx + jz .Lenc_key_ret + + movl $268437504,%r10d + movups (%rdi),%xmm0 + xorps %xmm4,%xmm4 + andl OPENSSL_ia32cap_P+4(%rip),%r10d + leaq 16(%rdx),%rax + cmpl $256,%esi + je .L14rounds + cmpl $192,%esi + je .L12rounds + cmpl $128,%esi + jne .Lbad_keybits + +.L10rounds: + movl $9,%esi + cmpl $268435456,%r10d + je .L10rounds_alt + + movups %xmm0,(%rdx) +.byte 102,15,58,223,200,1 + call .Lkey_expansion_128_cold +.byte 102,15,58,223,200,2 + call .Lkey_expansion_128 +.byte 102,15,58,223,200,4 + call .Lkey_expansion_128 +.byte 102,15,58,223,200,8 + call .Lkey_expansion_128 +.byte 102,15,58,223,200,16 + call .Lkey_expansion_128 +.byte 102,15,58,223,200,32 + call .Lkey_expansion_128 +.byte 102,15,58,223,200,64 + call .Lkey_expansion_128 +.byte 102,15,58,223,200,128 + call .Lkey_expansion_128 +.byte 102,15,58,223,200,27 + call .Lkey_expansion_128 +.byte 102,15,58,223,200,54 + call .Lkey_expansion_128 + movups %xmm0,(%rax) + movl %esi,80(%rax) + xorl %eax,%eax + jmp .Lenc_key_ret + +.align 16 +.L10rounds_alt: + movdqa .Lkey_rotate(%rip),%xmm5 + movl $8,%r10d + movdqa .Lkey_rcon1(%rip),%xmm4 + movdqa %xmm0,%xmm2 + movdqu %xmm0,(%rdx) + jmp .Loop_key128 + +.align 16 +.Loop_key128: +.byte 102,15,56,0,197 +.byte 102,15,56,221,196 + pslld $1,%xmm4 + leaq 16(%rax),%rax + + movdqa %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm3,%xmm2 + + pxor %xmm2,%xmm0 + movdqu %xmm0,-16(%rax) + movdqa %xmm0,%xmm2 + + decl %r10d + jnz .Loop_key128 + + movdqa .Lkey_rcon1b(%rip),%xmm4 + +.byte 102,15,56,0,197 +.byte 102,15,56,221,196 + pslld $1,%xmm4 + + movdqa %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm3,%xmm2 + + pxor %xmm2,%xmm0 + movdqu %xmm0,(%rax) + + movdqa %xmm0,%xmm2 +.byte 102,15,56,0,197 +.byte 102,15,56,221,196 + + movdqa %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm3,%xmm2 + + pxor %xmm2,%xmm0 + movdqu %xmm0,16(%rax) + + movl %esi,96(%rax) + xorl %eax,%eax + jmp .Lenc_key_ret + +.align 16 +.L12rounds: + movq 16(%rdi),%xmm2 + movl $11,%esi + cmpl $268435456,%r10d + je .L12rounds_alt + + movups %xmm0,(%rdx) +.byte 102,15,58,223,202,1 + call .Lkey_expansion_192a_cold +.byte 102,15,58,223,202,2 + call .Lkey_expansion_192b +.byte 102,15,58,223,202,4 + call .Lkey_expansion_192a +.byte 102,15,58,223,202,8 + call .Lkey_expansion_192b +.byte 102,15,58,223,202,16 + call .Lkey_expansion_192a +.byte 102,15,58,223,202,32 + call .Lkey_expansion_192b +.byte 102,15,58,223,202,64 + call .Lkey_expansion_192a +.byte 102,15,58,223,202,128 + call .Lkey_expansion_192b + movups %xmm0,(%rax) + movl %esi,48(%rax) + xorq %rax,%rax + jmp .Lenc_key_ret + +.align 16 +.L12rounds_alt: + movdqa .Lkey_rotate192(%rip),%xmm5 + movdqa .Lkey_rcon1(%rip),%xmm4 + movl $8,%r10d + movdqu %xmm0,(%rdx) + jmp .Loop_key192 + +.align 16 +.Loop_key192: + movq %xmm2,0(%rax) + movdqa %xmm2,%xmm1 +.byte 102,15,56,0,213 +.byte 102,15,56,221,212 + pslld $1,%xmm4 + leaq 24(%rax),%rax + + movdqa %xmm0,%xmm3 + pslldq $4,%xmm0 + pxor %xmm0,%xmm3 + pslldq $4,%xmm0 + pxor %xmm0,%xmm3 + pslldq $4,%xmm0 + pxor %xmm3,%xmm0 + + pshufd $0xff,%xmm0,%xmm3 + pxor %xmm1,%xmm3 + pslldq $4,%xmm1 + pxor %xmm1,%xmm3 + + pxor %xmm2,%xmm0 + pxor %xmm3,%xmm2 + movdqu %xmm0,-16(%rax) + + decl %r10d + jnz .Loop_key192 + + movl %esi,32(%rax) + xorl %eax,%eax + jmp .Lenc_key_ret + +.align 16 +.L14rounds: + movups 16(%rdi),%xmm2 + movl $13,%esi + leaq 16(%rax),%rax + cmpl $268435456,%r10d + je .L14rounds_alt + + movups %xmm0,(%rdx) + movups %xmm2,16(%rdx) +.byte 102,15,58,223,202,1 + call .Lkey_expansion_256a_cold +.byte 102,15,58,223,200,1 + call .Lkey_expansion_256b +.byte 102,15,58,223,202,2 + call .Lkey_expansion_256a +.byte 102,15,58,223,200,2 + call .Lkey_expansion_256b +.byte 102,15,58,223,202,4 + call .Lkey_expansion_256a +.byte 102,15,58,223,200,4 + call .Lkey_expansion_256b +.byte 102,15,58,223,202,8 + call .Lkey_expansion_256a +.byte 102,15,58,223,200,8 + call .Lkey_expansion_256b +.byte 102,15,58,223,202,16 + call .Lkey_expansion_256a +.byte 102,15,58,223,200,16 + call .Lkey_expansion_256b +.byte 102,15,58,223,202,32 + call .Lkey_expansion_256a +.byte 102,15,58,223,200,32 + call .Lkey_expansion_256b +.byte 102,15,58,223,202,64 + call .Lkey_expansion_256a + movups %xmm0,(%rax) + movl %esi,16(%rax) + xorq %rax,%rax + jmp .Lenc_key_ret + +.align 16 +.L14rounds_alt: + movdqa .Lkey_rotate(%rip),%xmm5 + movdqa .Lkey_rcon1(%rip),%xmm4 + movl $7,%r10d + movdqu %xmm0,0(%rdx) + movdqa %xmm2,%xmm1 + movdqu %xmm2,16(%rdx) + jmp .Loop_key256 + +.align 16 +.Loop_key256: +.byte 102,15,56,0,213 +.byte 102,15,56,221,212 + + movdqa %xmm0,%xmm3 + pslldq $4,%xmm0 + pxor %xmm0,%xmm3 + pslldq $4,%xmm0 + pxor %xmm0,%xmm3 + pslldq $4,%xmm0 + pxor %xmm3,%xmm0 + pslld $1,%xmm4 + + pxor %xmm2,%xmm0 + movdqu %xmm0,(%rax) + + decl %r10d + jz .Ldone_key256 + + pshufd $0xff,%xmm0,%xmm2 + pxor %xmm3,%xmm3 +.byte 102,15,56,221,211 + + movdqa %xmm1,%xmm3 + pslldq $4,%xmm1 + pxor %xmm1,%xmm3 + pslldq $4,%xmm1 + pxor %xmm1,%xmm3 + pslldq $4,%xmm1 + pxor %xmm3,%xmm1 + + pxor %xmm1,%xmm2 + movdqu %xmm2,16(%rax) + leaq 32(%rax),%rax + movdqa %xmm2,%xmm1 + + jmp .Loop_key256 + +.Ldone_key256: + movl %esi,16(%rax) + xorl %eax,%eax + jmp .Lenc_key_ret + +.align 16 +.Lbad_keybits: + movq $-2,%rax +.Lenc_key_ret: + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + addq $8,%rsp +.cfi_adjust_cfa_offset -8 + .byte 0xf3,0xc3 +.LSEH_end_set_encrypt_key: + +.align 16 +.Lkey_expansion_128: + movups %xmm0,(%rax) + leaq 16(%rax),%rax +.Lkey_expansion_128_cold: + shufps $16,%xmm0,%xmm4 + xorps %xmm4,%xmm0 + shufps $140,%xmm0,%xmm4 + xorps %xmm4,%xmm0 + shufps $255,%xmm1,%xmm1 + xorps %xmm1,%xmm0 + .byte 0xf3,0xc3 + +.align 16 +.Lkey_expansion_192a: + movups %xmm0,(%rax) + leaq 16(%rax),%rax +.Lkey_expansion_192a_cold: + movaps %xmm2,%xmm5 +.Lkey_expansion_192b_warm: + shufps $16,%xmm0,%xmm4 + movdqa %xmm2,%xmm3 + xorps %xmm4,%xmm0 + shufps $140,%xmm0,%xmm4 + pslldq $4,%xmm3 + xorps %xmm4,%xmm0 + pshufd $85,%xmm1,%xmm1 + pxor %xmm3,%xmm2 + pxor %xmm1,%xmm0 + pshufd $255,%xmm0,%xmm3 + pxor %xmm3,%xmm2 + .byte 0xf3,0xc3 + +.align 16 +.Lkey_expansion_192b: + movaps %xmm0,%xmm3 + shufps $68,%xmm0,%xmm5 + movups %xmm5,(%rax) + shufps $78,%xmm2,%xmm3 + movups %xmm3,16(%rax) + leaq 32(%rax),%rax + jmp .Lkey_expansion_192b_warm + +.align 16 +.Lkey_expansion_256a: + movups %xmm2,(%rax) + leaq 16(%rax),%rax +.Lkey_expansion_256a_cold: + shufps $16,%xmm0,%xmm4 + xorps %xmm4,%xmm0 + shufps $140,%xmm0,%xmm4 + xorps %xmm4,%xmm0 + shufps $255,%xmm1,%xmm1 + xorps %xmm1,%xmm0 + .byte 0xf3,0xc3 + +.align 16 +.Lkey_expansion_256b: + movups %xmm0,(%rax) + leaq 16(%rax),%rax + + shufps $16,%xmm2,%xmm4 + xorps %xmm4,%xmm2 + shufps $140,%xmm2,%xmm4 + xorps %xmm4,%xmm2 + shufps $170,%xmm1,%xmm1 + xorps %xmm1,%xmm2 + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_set_encrypt_key,.-aesni_set_encrypt_key +.size __aesni_set_encrypt_key,.-__aesni_set_encrypt_key +.align 64 +.Lbswap_mask: +.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +.Lincrement32: +.long 6,6,6,0 +.Lincrement64: +.long 1,0,0,0 +.Lxts_magic: +.long 0x87,0,1,0 +.Lincrement1: +.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +.Lkey_rotate: +.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d +.Lkey_rotate192: +.long 0x04070605,0x04070605,0x04070605,0x04070605 +.Lkey_rcon1: +.long 1,1,1,1 +.Lkey_rcon1b: +.long 0x1b,0x1b,0x1b,0x1b + +.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 64 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/aes/vpaes-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/aes/vpaes-x86_64.s new file mode 100644 index 0000000..5bf0fb1 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/aes/vpaes-x86_64.s @@ -0,0 +1,853 @@ +.text + + + + + + + + + + + + + + + + +.type _vpaes_encrypt_core,@function +.align 16 +_vpaes_encrypt_core: +.cfi_startproc + movq %rdx,%r9 + movq $16,%r11 + movl 240(%rdx),%eax + movdqa %xmm9,%xmm1 + movdqa .Lk_ipt(%rip),%xmm2 + pandn %xmm0,%xmm1 + movdqu (%r9),%xmm5 + psrld $4,%xmm1 + pand %xmm9,%xmm0 +.byte 102,15,56,0,208 + movdqa .Lk_ipt+16(%rip),%xmm0 +.byte 102,15,56,0,193 + pxor %xmm5,%xmm2 + addq $16,%r9 + pxor %xmm2,%xmm0 + leaq .Lk_mc_backward(%rip),%r10 + jmp .Lenc_entry + +.align 16 +.Lenc_loop: + + movdqa %xmm13,%xmm4 + movdqa %xmm12,%xmm0 +.byte 102,15,56,0,226 +.byte 102,15,56,0,195 + pxor %xmm5,%xmm4 + movdqa %xmm15,%xmm5 + pxor %xmm4,%xmm0 + movdqa -64(%r11,%r10,1),%xmm1 +.byte 102,15,56,0,234 + movdqa (%r11,%r10,1),%xmm4 + movdqa %xmm14,%xmm2 +.byte 102,15,56,0,211 + movdqa %xmm0,%xmm3 + pxor %xmm5,%xmm2 +.byte 102,15,56,0,193 + addq $16,%r9 + pxor %xmm2,%xmm0 +.byte 102,15,56,0,220 + addq $16,%r11 + pxor %xmm0,%xmm3 +.byte 102,15,56,0,193 + andq $0x30,%r11 + subq $1,%rax + pxor %xmm3,%xmm0 + +.Lenc_entry: + + movdqa %xmm9,%xmm1 + movdqa %xmm11,%xmm5 + pandn %xmm0,%xmm1 + psrld $4,%xmm1 + pand %xmm9,%xmm0 +.byte 102,15,56,0,232 + movdqa %xmm10,%xmm3 + pxor %xmm1,%xmm0 +.byte 102,15,56,0,217 + movdqa %xmm10,%xmm4 + pxor %xmm5,%xmm3 +.byte 102,15,56,0,224 + movdqa %xmm10,%xmm2 + pxor %xmm5,%xmm4 +.byte 102,15,56,0,211 + movdqa %xmm10,%xmm3 + pxor %xmm0,%xmm2 +.byte 102,15,56,0,220 + movdqu (%r9),%xmm5 + pxor %xmm1,%xmm3 + jnz .Lenc_loop + + + movdqa -96(%r10),%xmm4 + movdqa -80(%r10),%xmm0 +.byte 102,15,56,0,226 + pxor %xmm5,%xmm4 +.byte 102,15,56,0,195 + movdqa 64(%r11,%r10,1),%xmm1 + pxor %xmm4,%xmm0 +.byte 102,15,56,0,193 + .byte 0xf3,0xc3 +.cfi_endproc +.size _vpaes_encrypt_core,.-_vpaes_encrypt_core + + + + + + +.type _vpaes_decrypt_core,@function +.align 16 +_vpaes_decrypt_core: +.cfi_startproc + movq %rdx,%r9 + movl 240(%rdx),%eax + movdqa %xmm9,%xmm1 + movdqa .Lk_dipt(%rip),%xmm2 + pandn %xmm0,%xmm1 + movq %rax,%r11 + psrld $4,%xmm1 + movdqu (%r9),%xmm5 + shlq $4,%r11 + pand %xmm9,%xmm0 +.byte 102,15,56,0,208 + movdqa .Lk_dipt+16(%rip),%xmm0 + xorq $0x30,%r11 + leaq .Lk_dsbd(%rip),%r10 +.byte 102,15,56,0,193 + andq $0x30,%r11 + pxor %xmm5,%xmm2 + movdqa .Lk_mc_forward+48(%rip),%xmm5 + pxor %xmm2,%xmm0 + addq $16,%r9 + addq %r10,%r11 + jmp .Ldec_entry + +.align 16 +.Ldec_loop: + + + + movdqa -32(%r10),%xmm4 + movdqa -16(%r10),%xmm1 +.byte 102,15,56,0,226 +.byte 102,15,56,0,203 + pxor %xmm4,%xmm0 + movdqa 0(%r10),%xmm4 + pxor %xmm1,%xmm0 + movdqa 16(%r10),%xmm1 + +.byte 102,15,56,0,226 +.byte 102,15,56,0,197 +.byte 102,15,56,0,203 + pxor %xmm4,%xmm0 + movdqa 32(%r10),%xmm4 + pxor %xmm1,%xmm0 + movdqa 48(%r10),%xmm1 + +.byte 102,15,56,0,226 +.byte 102,15,56,0,197 +.byte 102,15,56,0,203 + pxor %xmm4,%xmm0 + movdqa 64(%r10),%xmm4 + pxor %xmm1,%xmm0 + movdqa 80(%r10),%xmm1 + +.byte 102,15,56,0,226 +.byte 102,15,56,0,197 +.byte 102,15,56,0,203 + pxor %xmm4,%xmm0 + addq $16,%r9 +.byte 102,15,58,15,237,12 + pxor %xmm1,%xmm0 + subq $1,%rax + +.Ldec_entry: + + movdqa %xmm9,%xmm1 + pandn %xmm0,%xmm1 + movdqa %xmm11,%xmm2 + psrld $4,%xmm1 + pand %xmm9,%xmm0 +.byte 102,15,56,0,208 + movdqa %xmm10,%xmm3 + pxor %xmm1,%xmm0 +.byte 102,15,56,0,217 + movdqa %xmm10,%xmm4 + pxor %xmm2,%xmm3 +.byte 102,15,56,0,224 + pxor %xmm2,%xmm4 + movdqa %xmm10,%xmm2 +.byte 102,15,56,0,211 + movdqa %xmm10,%xmm3 + pxor %xmm0,%xmm2 +.byte 102,15,56,0,220 + movdqu (%r9),%xmm0 + pxor %xmm1,%xmm3 + jnz .Ldec_loop + + + movdqa 96(%r10),%xmm4 +.byte 102,15,56,0,226 + pxor %xmm0,%xmm4 + movdqa 112(%r10),%xmm0 + movdqa -352(%r11),%xmm2 +.byte 102,15,56,0,195 + pxor %xmm4,%xmm0 +.byte 102,15,56,0,194 + .byte 0xf3,0xc3 +.cfi_endproc +.size _vpaes_decrypt_core,.-_vpaes_decrypt_core + + + + + + +.type _vpaes_schedule_core,@function +.align 16 +_vpaes_schedule_core: +.cfi_startproc + + + + + + call _vpaes_preheat + movdqa .Lk_rcon(%rip),%xmm8 + movdqu (%rdi),%xmm0 + + + movdqa %xmm0,%xmm3 + leaq .Lk_ipt(%rip),%r11 + call _vpaes_schedule_transform + movdqa %xmm0,%xmm7 + + leaq .Lk_sr(%rip),%r10 + testq %rcx,%rcx + jnz .Lschedule_am_decrypting + + + movdqu %xmm0,(%rdx) + jmp .Lschedule_go + +.Lschedule_am_decrypting: + + movdqa (%r8,%r10,1),%xmm1 +.byte 102,15,56,0,217 + movdqu %xmm3,(%rdx) + xorq $0x30,%r8 + +.Lschedule_go: + cmpl $192,%esi + ja .Lschedule_256 + je .Lschedule_192 + + + + + + + + + + +.Lschedule_128: + movl $10,%esi + +.Loop_schedule_128: + call _vpaes_schedule_round + decq %rsi + jz .Lschedule_mangle_last + call _vpaes_schedule_mangle + jmp .Loop_schedule_128 + + + + + + + + + + + + + + + + +.align 16 +.Lschedule_192: + movdqu 8(%rdi),%xmm0 + call _vpaes_schedule_transform + movdqa %xmm0,%xmm6 + pxor %xmm4,%xmm4 + movhlps %xmm4,%xmm6 + movl $4,%esi + +.Loop_schedule_192: + call _vpaes_schedule_round +.byte 102,15,58,15,198,8 + call _vpaes_schedule_mangle + call _vpaes_schedule_192_smear + call _vpaes_schedule_mangle + call _vpaes_schedule_round + decq %rsi + jz .Lschedule_mangle_last + call _vpaes_schedule_mangle + call _vpaes_schedule_192_smear + jmp .Loop_schedule_192 + + + + + + + + + + + +.align 16 +.Lschedule_256: + movdqu 16(%rdi),%xmm0 + call _vpaes_schedule_transform + movl $7,%esi + +.Loop_schedule_256: + call _vpaes_schedule_mangle + movdqa %xmm0,%xmm6 + + + call _vpaes_schedule_round + decq %rsi + jz .Lschedule_mangle_last + call _vpaes_schedule_mangle + + + pshufd $0xFF,%xmm0,%xmm0 + movdqa %xmm7,%xmm5 + movdqa %xmm6,%xmm7 + call _vpaes_schedule_low_round + movdqa %xmm5,%xmm7 + + jmp .Loop_schedule_256 + + + + + + + + + + + + +.align 16 +.Lschedule_mangle_last: + + leaq .Lk_deskew(%rip),%r11 + testq %rcx,%rcx + jnz .Lschedule_mangle_last_dec + + + movdqa (%r8,%r10,1),%xmm1 +.byte 102,15,56,0,193 + leaq .Lk_opt(%rip),%r11 + addq $32,%rdx + +.Lschedule_mangle_last_dec: + addq $-16,%rdx + pxor .Lk_s63(%rip),%xmm0 + call _vpaes_schedule_transform + movdqu %xmm0,(%rdx) + + + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + .byte 0xf3,0xc3 +.cfi_endproc +.size _vpaes_schedule_core,.-_vpaes_schedule_core + + + + + + + + + + + + + + + +.type _vpaes_schedule_192_smear,@function +.align 16 +_vpaes_schedule_192_smear: +.cfi_startproc + pshufd $0x80,%xmm6,%xmm1 + pshufd $0xFE,%xmm7,%xmm0 + pxor %xmm1,%xmm6 + pxor %xmm1,%xmm1 + pxor %xmm0,%xmm6 + movdqa %xmm6,%xmm0 + movhlps %xmm1,%xmm6 + .byte 0xf3,0xc3 +.cfi_endproc +.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear + + + + + + + + + + + + + + + + + + + +.type _vpaes_schedule_round,@function +.align 16 +_vpaes_schedule_round: +.cfi_startproc + + pxor %xmm1,%xmm1 +.byte 102,65,15,58,15,200,15 +.byte 102,69,15,58,15,192,15 + pxor %xmm1,%xmm7 + + + pshufd $0xFF,%xmm0,%xmm0 +.byte 102,15,58,15,192,1 + + + + +_vpaes_schedule_low_round: + + movdqa %xmm7,%xmm1 + pslldq $4,%xmm7 + pxor %xmm1,%xmm7 + movdqa %xmm7,%xmm1 + pslldq $8,%xmm7 + pxor %xmm1,%xmm7 + pxor .Lk_s63(%rip),%xmm7 + + + movdqa %xmm9,%xmm1 + pandn %xmm0,%xmm1 + psrld $4,%xmm1 + pand %xmm9,%xmm0 + movdqa %xmm11,%xmm2 +.byte 102,15,56,0,208 + pxor %xmm1,%xmm0 + movdqa %xmm10,%xmm3 +.byte 102,15,56,0,217 + pxor %xmm2,%xmm3 + movdqa %xmm10,%xmm4 +.byte 102,15,56,0,224 + pxor %xmm2,%xmm4 + movdqa %xmm10,%xmm2 +.byte 102,15,56,0,211 + pxor %xmm0,%xmm2 + movdqa %xmm10,%xmm3 +.byte 102,15,56,0,220 + pxor %xmm1,%xmm3 + movdqa %xmm13,%xmm4 +.byte 102,15,56,0,226 + movdqa %xmm12,%xmm0 +.byte 102,15,56,0,195 + pxor %xmm4,%xmm0 + + + pxor %xmm7,%xmm0 + movdqa %xmm0,%xmm7 + .byte 0xf3,0xc3 +.cfi_endproc +.size _vpaes_schedule_round,.-_vpaes_schedule_round + + + + + + + + + + +.type _vpaes_schedule_transform,@function +.align 16 +_vpaes_schedule_transform: +.cfi_startproc + movdqa %xmm9,%xmm1 + pandn %xmm0,%xmm1 + psrld $4,%xmm1 + pand %xmm9,%xmm0 + movdqa (%r11),%xmm2 +.byte 102,15,56,0,208 + movdqa 16(%r11),%xmm0 +.byte 102,15,56,0,193 + pxor %xmm2,%xmm0 + .byte 0xf3,0xc3 +.cfi_endproc +.size _vpaes_schedule_transform,.-_vpaes_schedule_transform + + + + + + + + + + + + + + + + + + + + + + + + +.type _vpaes_schedule_mangle,@function +.align 16 +_vpaes_schedule_mangle: +.cfi_startproc + movdqa %xmm0,%xmm4 + movdqa .Lk_mc_forward(%rip),%xmm5 + testq %rcx,%rcx + jnz .Lschedule_mangle_dec + + + addq $16,%rdx + pxor .Lk_s63(%rip),%xmm4 +.byte 102,15,56,0,229 + movdqa %xmm4,%xmm3 +.byte 102,15,56,0,229 + pxor %xmm4,%xmm3 +.byte 102,15,56,0,229 + pxor %xmm4,%xmm3 + + jmp .Lschedule_mangle_both +.align 16 +.Lschedule_mangle_dec: + + leaq .Lk_dksd(%rip),%r11 + movdqa %xmm9,%xmm1 + pandn %xmm4,%xmm1 + psrld $4,%xmm1 + pand %xmm9,%xmm4 + + movdqa 0(%r11),%xmm2 +.byte 102,15,56,0,212 + movdqa 16(%r11),%xmm3 +.byte 102,15,56,0,217 + pxor %xmm2,%xmm3 +.byte 102,15,56,0,221 + + movdqa 32(%r11),%xmm2 +.byte 102,15,56,0,212 + pxor %xmm3,%xmm2 + movdqa 48(%r11),%xmm3 +.byte 102,15,56,0,217 + pxor %xmm2,%xmm3 +.byte 102,15,56,0,221 + + movdqa 64(%r11),%xmm2 +.byte 102,15,56,0,212 + pxor %xmm3,%xmm2 + movdqa 80(%r11),%xmm3 +.byte 102,15,56,0,217 + pxor %xmm2,%xmm3 +.byte 102,15,56,0,221 + + movdqa 96(%r11),%xmm2 +.byte 102,15,56,0,212 + pxor %xmm3,%xmm2 + movdqa 112(%r11),%xmm3 +.byte 102,15,56,0,217 + pxor %xmm2,%xmm3 + + addq $-16,%rdx + +.Lschedule_mangle_both: + movdqa (%r8,%r10,1),%xmm1 +.byte 102,15,56,0,217 + addq $-16,%r8 + andq $0x30,%r8 + movdqu %xmm3,(%rdx) + .byte 0xf3,0xc3 +.cfi_endproc +.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle + + + + +.globl vpaes_set_encrypt_key +.type vpaes_set_encrypt_key,@function +.align 16 +vpaes_set_encrypt_key: +.cfi_startproc + movl %esi,%eax + shrl $5,%eax + addl $5,%eax + movl %eax,240(%rdx) + + movl $0,%ecx + movl $0x30,%r8d + call _vpaes_schedule_core + xorl %eax,%eax + .byte 0xf3,0xc3 +.cfi_endproc +.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key + +.globl vpaes_set_decrypt_key +.type vpaes_set_decrypt_key,@function +.align 16 +vpaes_set_decrypt_key: +.cfi_startproc + movl %esi,%eax + shrl $5,%eax + addl $5,%eax + movl %eax,240(%rdx) + shll $4,%eax + leaq 16(%rdx,%rax,1),%rdx + + movl $1,%ecx + movl %esi,%r8d + shrl $1,%r8d + andl $32,%r8d + xorl $32,%r8d + call _vpaes_schedule_core + xorl %eax,%eax + .byte 0xf3,0xc3 +.cfi_endproc +.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key + +.globl vpaes_encrypt +.type vpaes_encrypt,@function +.align 16 +vpaes_encrypt: +.cfi_startproc + movdqu (%rdi),%xmm0 + call _vpaes_preheat + call _vpaes_encrypt_core + movdqu %xmm0,(%rsi) + .byte 0xf3,0xc3 +.cfi_endproc +.size vpaes_encrypt,.-vpaes_encrypt + +.globl vpaes_decrypt +.type vpaes_decrypt,@function +.align 16 +vpaes_decrypt: +.cfi_startproc + movdqu (%rdi),%xmm0 + call _vpaes_preheat + call _vpaes_decrypt_core + movdqu %xmm0,(%rsi) + .byte 0xf3,0xc3 +.cfi_endproc +.size vpaes_decrypt,.-vpaes_decrypt +.globl vpaes_cbc_encrypt +.type vpaes_cbc_encrypt,@function +.align 16 +vpaes_cbc_encrypt: +.cfi_startproc + xchgq %rcx,%rdx + subq $16,%rcx + jc .Lcbc_abort + movdqu (%r8),%xmm6 + subq %rdi,%rsi + call _vpaes_preheat + cmpl $0,%r9d + je .Lcbc_dec_loop + jmp .Lcbc_enc_loop +.align 16 +.Lcbc_enc_loop: + movdqu (%rdi),%xmm0 + pxor %xmm6,%xmm0 + call _vpaes_encrypt_core + movdqa %xmm0,%xmm6 + movdqu %xmm0,(%rsi,%rdi,1) + leaq 16(%rdi),%rdi + subq $16,%rcx + jnc .Lcbc_enc_loop + jmp .Lcbc_done +.align 16 +.Lcbc_dec_loop: + movdqu (%rdi),%xmm0 + movdqa %xmm0,%xmm7 + call _vpaes_decrypt_core + pxor %xmm6,%xmm0 + movdqa %xmm7,%xmm6 + movdqu %xmm0,(%rsi,%rdi,1) + leaq 16(%rdi),%rdi + subq $16,%rcx + jnc .Lcbc_dec_loop +.Lcbc_done: + movdqu %xmm6,(%r8) +.Lcbc_abort: + .byte 0xf3,0xc3 +.cfi_endproc +.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt + + + + + + +.type _vpaes_preheat,@function +.align 16 +_vpaes_preheat: +.cfi_startproc + leaq .Lk_s0F(%rip),%r10 + movdqa -32(%r10),%xmm10 + movdqa -16(%r10),%xmm11 + movdqa 0(%r10),%xmm9 + movdqa 48(%r10),%xmm13 + movdqa 64(%r10),%xmm12 + movdqa 80(%r10),%xmm15 + movdqa 96(%r10),%xmm14 + .byte 0xf3,0xc3 +.cfi_endproc +.size _vpaes_preheat,.-_vpaes_preheat + + + + + +.type _vpaes_consts,@object +.align 64 +_vpaes_consts: +.Lk_inv: +.quad 0x0E05060F0D080180, 0x040703090A0B0C02 +.quad 0x01040A060F0B0780, 0x030D0E0C02050809 + +.Lk_s0F: +.quad 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F + +.Lk_ipt: +.quad 0xC2B2E8985A2A7000, 0xCABAE09052227808 +.quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81 + +.Lk_sb1: +.quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544 +.quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF +.Lk_sb2: +.quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD +.quad 0x69EB88400AE12900, 0xC2A163C8AB82234A +.Lk_sbo: +.quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878 +.quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA + +.Lk_mc_forward: +.quad 0x0407060500030201, 0x0C0F0E0D080B0A09 +.quad 0x080B0A0904070605, 0x000302010C0F0E0D +.quad 0x0C0F0E0D080B0A09, 0x0407060500030201 +.quad 0x000302010C0F0E0D, 0x080B0A0904070605 + +.Lk_mc_backward: +.quad 0x0605040702010003, 0x0E0D0C0F0A09080B +.quad 0x020100030E0D0C0F, 0x0A09080B06050407 +.quad 0x0E0D0C0F0A09080B, 0x0605040702010003 +.quad 0x0A09080B06050407, 0x020100030E0D0C0F + +.Lk_sr: +.quad 0x0706050403020100, 0x0F0E0D0C0B0A0908 +.quad 0x030E09040F0A0500, 0x0B06010C07020D08 +.quad 0x0F060D040B020900, 0x070E050C030A0108 +.quad 0x0B0E0104070A0D00, 0x0306090C0F020508 + +.Lk_rcon: +.quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81 + +.Lk_s63: +.quad 0x5B5B5B5B5B5B5B5B, 0x5B5B5B5B5B5B5B5B + +.Lk_opt: +.quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808 +.quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0 + +.Lk_deskew: +.quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A +.quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77 + + + + + +.Lk_dksd: +.quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9 +.quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E +.Lk_dksb: +.quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99 +.quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8 +.Lk_dkse: +.quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086 +.quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487 +.Lk_dks9: +.quad 0xB6116FC87ED9A700, 0x4AED933482255BFC +.quad 0x4576516227143300, 0x8BB89FACE9DAFDCE + + + + + +.Lk_dipt: +.quad 0x0F505B040B545F00, 0x154A411E114E451A +.quad 0x86E383E660056500, 0x12771772F491F194 + +.Lk_dsb9: +.quad 0x851C03539A86D600, 0xCAD51F504F994CC9 +.quad 0xC03B1789ECD74900, 0x725E2C9EB2FBA565 +.Lk_dsbd: +.quad 0x7D57CCDFE6B1A200, 0xF56E9B13882A4439 +.quad 0x3CE2FAF724C6CB00, 0x2931180D15DEEFD3 +.Lk_dsbb: +.quad 0xD022649296B44200, 0x602646F6B0F2D404 +.quad 0xC19498A6CD596700, 0xF3FF0C3E3255AA6B +.Lk_dsbe: +.quad 0x46F2929626D4D000, 0x2242600464B4F6B0 +.quad 0x0C55A6CDFFAAC100, 0x9467F36B98593E32 +.Lk_dsbo: +.quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D +.quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C +.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 +.align 64 +.size _vpaes_consts,.-_vpaes_consts diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/bn/rsaz-avx2.s b/vere/ext/openssl/gen/linux-x86_64/crypto/bn/rsaz-avx2.s new file mode 100644 index 0000000..ebba040 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/bn/rsaz-avx2.s @@ -0,0 +1,1744 @@ +.text + +.globl rsaz_1024_sqr_avx2 +.type rsaz_1024_sqr_avx2,@function +.align 64 +rsaz_1024_sqr_avx2: +.cfi_startproc + leaq (%rsp),%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + vzeroupper + movq %rax,%rbp +.cfi_def_cfa_register %rbp + movq %rdx,%r13 + subq $832,%rsp + movq %r13,%r15 + subq $-128,%rdi + subq $-128,%rsi + subq $-128,%r13 + + andq $4095,%r15 + addq $320,%r15 + shrq $12,%r15 + vpxor %ymm9,%ymm9,%ymm9 + jz .Lsqr_1024_no_n_copy + + + + + + subq $320,%rsp + vmovdqu 0-128(%r13),%ymm0 + andq $-2048,%rsp + vmovdqu 32-128(%r13),%ymm1 + vmovdqu 64-128(%r13),%ymm2 + vmovdqu 96-128(%r13),%ymm3 + vmovdqu 128-128(%r13),%ymm4 + vmovdqu 160-128(%r13),%ymm5 + vmovdqu 192-128(%r13),%ymm6 + vmovdqu 224-128(%r13),%ymm7 + vmovdqu 256-128(%r13),%ymm8 + leaq 832+128(%rsp),%r13 + vmovdqu %ymm0,0-128(%r13) + vmovdqu %ymm1,32-128(%r13) + vmovdqu %ymm2,64-128(%r13) + vmovdqu %ymm3,96-128(%r13) + vmovdqu %ymm4,128-128(%r13) + vmovdqu %ymm5,160-128(%r13) + vmovdqu %ymm6,192-128(%r13) + vmovdqu %ymm7,224-128(%r13) + vmovdqu %ymm8,256-128(%r13) + vmovdqu %ymm9,288-128(%r13) + +.Lsqr_1024_no_n_copy: + andq $-1024,%rsp + + vmovdqu 32-128(%rsi),%ymm1 + vmovdqu 64-128(%rsi),%ymm2 + vmovdqu 96-128(%rsi),%ymm3 + vmovdqu 128-128(%rsi),%ymm4 + vmovdqu 160-128(%rsi),%ymm5 + vmovdqu 192-128(%rsi),%ymm6 + vmovdqu 224-128(%rsi),%ymm7 + vmovdqu 256-128(%rsi),%ymm8 + + leaq 192(%rsp),%rbx + vmovdqu .Land_mask(%rip),%ymm15 + jmp .LOOP_GRANDE_SQR_1024 + +.align 32 +.LOOP_GRANDE_SQR_1024: + leaq 576+128(%rsp),%r9 + leaq 448(%rsp),%r12 + + + + + vpaddq %ymm1,%ymm1,%ymm1 + vpbroadcastq 0-128(%rsi),%ymm10 + vpaddq %ymm2,%ymm2,%ymm2 + vmovdqa %ymm1,0-128(%r9) + vpaddq %ymm3,%ymm3,%ymm3 + vmovdqa %ymm2,32-128(%r9) + vpaddq %ymm4,%ymm4,%ymm4 + vmovdqa %ymm3,64-128(%r9) + vpaddq %ymm5,%ymm5,%ymm5 + vmovdqa %ymm4,96-128(%r9) + vpaddq %ymm6,%ymm6,%ymm6 + vmovdqa %ymm5,128-128(%r9) + vpaddq %ymm7,%ymm7,%ymm7 + vmovdqa %ymm6,160-128(%r9) + vpaddq %ymm8,%ymm8,%ymm8 + vmovdqa %ymm7,192-128(%r9) + vpxor %ymm9,%ymm9,%ymm9 + vmovdqa %ymm8,224-128(%r9) + + vpmuludq 0-128(%rsi),%ymm10,%ymm0 + vpbroadcastq 32-128(%rsi),%ymm11 + vmovdqu %ymm9,288-192(%rbx) + vpmuludq %ymm10,%ymm1,%ymm1 + vmovdqu %ymm9,320-448(%r12) + vpmuludq %ymm10,%ymm2,%ymm2 + vmovdqu %ymm9,352-448(%r12) + vpmuludq %ymm10,%ymm3,%ymm3 + vmovdqu %ymm9,384-448(%r12) + vpmuludq %ymm10,%ymm4,%ymm4 + vmovdqu %ymm9,416-448(%r12) + vpmuludq %ymm10,%ymm5,%ymm5 + vmovdqu %ymm9,448-448(%r12) + vpmuludq %ymm10,%ymm6,%ymm6 + vmovdqu %ymm9,480-448(%r12) + vpmuludq %ymm10,%ymm7,%ymm7 + vmovdqu %ymm9,512-448(%r12) + vpmuludq %ymm10,%ymm8,%ymm8 + vpbroadcastq 64-128(%rsi),%ymm10 + vmovdqu %ymm9,544-448(%r12) + + movq %rsi,%r15 + movl $4,%r14d + jmp .Lsqr_entry_1024 +.align 32 +.LOOP_SQR_1024: + vpbroadcastq 32-128(%r15),%ymm11 + vpmuludq 0-128(%rsi),%ymm10,%ymm0 + vpaddq 0-192(%rbx),%ymm0,%ymm0 + vpmuludq 0-128(%r9),%ymm10,%ymm1 + vpaddq 32-192(%rbx),%ymm1,%ymm1 + vpmuludq 32-128(%r9),%ymm10,%ymm2 + vpaddq 64-192(%rbx),%ymm2,%ymm2 + vpmuludq 64-128(%r9),%ymm10,%ymm3 + vpaddq 96-192(%rbx),%ymm3,%ymm3 + vpmuludq 96-128(%r9),%ymm10,%ymm4 + vpaddq 128-192(%rbx),%ymm4,%ymm4 + vpmuludq 128-128(%r9),%ymm10,%ymm5 + vpaddq 160-192(%rbx),%ymm5,%ymm5 + vpmuludq 160-128(%r9),%ymm10,%ymm6 + vpaddq 192-192(%rbx),%ymm6,%ymm6 + vpmuludq 192-128(%r9),%ymm10,%ymm7 + vpaddq 224-192(%rbx),%ymm7,%ymm7 + vpmuludq 224-128(%r9),%ymm10,%ymm8 + vpbroadcastq 64-128(%r15),%ymm10 + vpaddq 256-192(%rbx),%ymm8,%ymm8 +.Lsqr_entry_1024: + vmovdqu %ymm0,0-192(%rbx) + vmovdqu %ymm1,32-192(%rbx) + + vpmuludq 32-128(%rsi),%ymm11,%ymm12 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq 32-128(%r9),%ymm11,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpmuludq 64-128(%r9),%ymm11,%ymm13 + vpaddq %ymm13,%ymm4,%ymm4 + vpmuludq 96-128(%r9),%ymm11,%ymm12 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq 128-128(%r9),%ymm11,%ymm14 + vpaddq %ymm14,%ymm6,%ymm6 + vpmuludq 160-128(%r9),%ymm11,%ymm13 + vpaddq %ymm13,%ymm7,%ymm7 + vpmuludq 192-128(%r9),%ymm11,%ymm12 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq 224-128(%r9),%ymm11,%ymm0 + vpbroadcastq 96-128(%r15),%ymm11 + vpaddq 288-192(%rbx),%ymm0,%ymm0 + + vmovdqu %ymm2,64-192(%rbx) + vmovdqu %ymm3,96-192(%rbx) + + vpmuludq 64-128(%rsi),%ymm10,%ymm13 + vpaddq %ymm13,%ymm4,%ymm4 + vpmuludq 64-128(%r9),%ymm10,%ymm12 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq 96-128(%r9),%ymm10,%ymm14 + vpaddq %ymm14,%ymm6,%ymm6 + vpmuludq 128-128(%r9),%ymm10,%ymm13 + vpaddq %ymm13,%ymm7,%ymm7 + vpmuludq 160-128(%r9),%ymm10,%ymm12 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq 192-128(%r9),%ymm10,%ymm14 + vpaddq %ymm14,%ymm0,%ymm0 + vpmuludq 224-128(%r9),%ymm10,%ymm1 + vpbroadcastq 128-128(%r15),%ymm10 + vpaddq 320-448(%r12),%ymm1,%ymm1 + + vmovdqu %ymm4,128-192(%rbx) + vmovdqu %ymm5,160-192(%rbx) + + vpmuludq 96-128(%rsi),%ymm11,%ymm12 + vpaddq %ymm12,%ymm6,%ymm6 + vpmuludq 96-128(%r9),%ymm11,%ymm14 + vpaddq %ymm14,%ymm7,%ymm7 + vpmuludq 128-128(%r9),%ymm11,%ymm13 + vpaddq %ymm13,%ymm8,%ymm8 + vpmuludq 160-128(%r9),%ymm11,%ymm12 + vpaddq %ymm12,%ymm0,%ymm0 + vpmuludq 192-128(%r9),%ymm11,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpmuludq 224-128(%r9),%ymm11,%ymm2 + vpbroadcastq 160-128(%r15),%ymm11 + vpaddq 352-448(%r12),%ymm2,%ymm2 + + vmovdqu %ymm6,192-192(%rbx) + vmovdqu %ymm7,224-192(%rbx) + + vpmuludq 128-128(%rsi),%ymm10,%ymm12 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq 128-128(%r9),%ymm10,%ymm14 + vpaddq %ymm14,%ymm0,%ymm0 + vpmuludq 160-128(%r9),%ymm10,%ymm13 + vpaddq %ymm13,%ymm1,%ymm1 + vpmuludq 192-128(%r9),%ymm10,%ymm12 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq 224-128(%r9),%ymm10,%ymm3 + vpbroadcastq 192-128(%r15),%ymm10 + vpaddq 384-448(%r12),%ymm3,%ymm3 + + vmovdqu %ymm8,256-192(%rbx) + vmovdqu %ymm0,288-192(%rbx) + leaq 8(%rbx),%rbx + + vpmuludq 160-128(%rsi),%ymm11,%ymm13 + vpaddq %ymm13,%ymm1,%ymm1 + vpmuludq 160-128(%r9),%ymm11,%ymm12 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq 192-128(%r9),%ymm11,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpmuludq 224-128(%r9),%ymm11,%ymm4 + vpbroadcastq 224-128(%r15),%ymm11 + vpaddq 416-448(%r12),%ymm4,%ymm4 + + vmovdqu %ymm1,320-448(%r12) + vmovdqu %ymm2,352-448(%r12) + + vpmuludq 192-128(%rsi),%ymm10,%ymm12 + vpaddq %ymm12,%ymm3,%ymm3 + vpmuludq 192-128(%r9),%ymm10,%ymm14 + vpbroadcastq 256-128(%r15),%ymm0 + vpaddq %ymm14,%ymm4,%ymm4 + vpmuludq 224-128(%r9),%ymm10,%ymm5 + vpbroadcastq 0+8-128(%r15),%ymm10 + vpaddq 448-448(%r12),%ymm5,%ymm5 + + vmovdqu %ymm3,384-448(%r12) + vmovdqu %ymm4,416-448(%r12) + leaq 8(%r15),%r15 + + vpmuludq 224-128(%rsi),%ymm11,%ymm12 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq 224-128(%r9),%ymm11,%ymm6 + vpaddq 480-448(%r12),%ymm6,%ymm6 + + vpmuludq 256-128(%rsi),%ymm0,%ymm7 + vmovdqu %ymm5,448-448(%r12) + vpaddq 512-448(%r12),%ymm7,%ymm7 + vmovdqu %ymm6,480-448(%r12) + vmovdqu %ymm7,512-448(%r12) + leaq 8(%r12),%r12 + + decl %r14d + jnz .LOOP_SQR_1024 + + vmovdqu 256(%rsp),%ymm8 + vmovdqu 288(%rsp),%ymm1 + vmovdqu 320(%rsp),%ymm2 + leaq 192(%rsp),%rbx + + vpsrlq $29,%ymm8,%ymm14 + vpand %ymm15,%ymm8,%ymm8 + vpsrlq $29,%ymm1,%ymm11 + vpand %ymm15,%ymm1,%ymm1 + + vpermq $0x93,%ymm14,%ymm14 + vpxor %ymm9,%ymm9,%ymm9 + vpermq $0x93,%ymm11,%ymm11 + + vpblendd $3,%ymm9,%ymm14,%ymm10 + vpblendd $3,%ymm14,%ymm11,%ymm14 + vpaddq %ymm10,%ymm8,%ymm8 + vpblendd $3,%ymm11,%ymm9,%ymm11 + vpaddq %ymm14,%ymm1,%ymm1 + vpaddq %ymm11,%ymm2,%ymm2 + vmovdqu %ymm1,288-192(%rbx) + vmovdqu %ymm2,320-192(%rbx) + + movq (%rsp),%rax + movq 8(%rsp),%r10 + movq 16(%rsp),%r11 + movq 24(%rsp),%r12 + vmovdqu 32(%rsp),%ymm1 + vmovdqu 64-192(%rbx),%ymm2 + vmovdqu 96-192(%rbx),%ymm3 + vmovdqu 128-192(%rbx),%ymm4 + vmovdqu 160-192(%rbx),%ymm5 + vmovdqu 192-192(%rbx),%ymm6 + vmovdqu 224-192(%rbx),%ymm7 + + movq %rax,%r9 + imull %ecx,%eax + andl $0x1fffffff,%eax + vmovd %eax,%xmm12 + + movq %rax,%rdx + imulq -128(%r13),%rax + vpbroadcastq %xmm12,%ymm12 + addq %rax,%r9 + movq %rdx,%rax + imulq 8-128(%r13),%rax + shrq $29,%r9 + addq %rax,%r10 + movq %rdx,%rax + imulq 16-128(%r13),%rax + addq %r9,%r10 + addq %rax,%r11 + imulq 24-128(%r13),%rdx + addq %rdx,%r12 + + movq %r10,%rax + imull %ecx,%eax + andl $0x1fffffff,%eax + + movl $9,%r14d + jmp .LOOP_REDUCE_1024 + +.align 32 +.LOOP_REDUCE_1024: + vmovd %eax,%xmm13 + vpbroadcastq %xmm13,%ymm13 + + vpmuludq 32-128(%r13),%ymm12,%ymm10 + movq %rax,%rdx + imulq -128(%r13),%rax + vpaddq %ymm10,%ymm1,%ymm1 + addq %rax,%r10 + vpmuludq 64-128(%r13),%ymm12,%ymm14 + movq %rdx,%rax + imulq 8-128(%r13),%rax + vpaddq %ymm14,%ymm2,%ymm2 + vpmuludq 96-128(%r13),%ymm12,%ymm11 +.byte 0x67 + addq %rax,%r11 +.byte 0x67 + movq %rdx,%rax + imulq 16-128(%r13),%rax + shrq $29,%r10 + vpaddq %ymm11,%ymm3,%ymm3 + vpmuludq 128-128(%r13),%ymm12,%ymm10 + addq %rax,%r12 + addq %r10,%r11 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 160-128(%r13),%ymm12,%ymm14 + movq %r11,%rax + imull %ecx,%eax + vpaddq %ymm14,%ymm5,%ymm5 + vpmuludq 192-128(%r13),%ymm12,%ymm11 + andl $0x1fffffff,%eax + vpaddq %ymm11,%ymm6,%ymm6 + vpmuludq 224-128(%r13),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 256-128(%r13),%ymm12,%ymm14 + vmovd %eax,%xmm12 + + vpaddq %ymm14,%ymm8,%ymm8 + + vpbroadcastq %xmm12,%ymm12 + + vpmuludq 32-8-128(%r13),%ymm13,%ymm11 + vmovdqu 96-8-128(%r13),%ymm14 + movq %rax,%rdx + imulq -128(%r13),%rax + vpaddq %ymm11,%ymm1,%ymm1 + vpmuludq 64-8-128(%r13),%ymm13,%ymm10 + vmovdqu 128-8-128(%r13),%ymm11 + addq %rax,%r11 + movq %rdx,%rax + imulq 8-128(%r13),%rax + vpaddq %ymm10,%ymm2,%ymm2 + addq %r12,%rax + shrq $29,%r11 + vpmuludq %ymm13,%ymm14,%ymm14 + vmovdqu 160-8-128(%r13),%ymm10 + addq %r11,%rax + vpaddq %ymm14,%ymm3,%ymm3 + vpmuludq %ymm13,%ymm11,%ymm11 + vmovdqu 192-8-128(%r13),%ymm14 +.byte 0x67 + movq %rax,%r12 + imull %ecx,%eax + vpaddq %ymm11,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm10,%ymm10 +.byte 0xc4,0x41,0x7e,0x6f,0x9d,0x58,0x00,0x00,0x00 + andl $0x1fffffff,%eax + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm13,%ymm14,%ymm14 + vmovdqu 256-8-128(%r13),%ymm10 + vpaddq %ymm14,%ymm6,%ymm6 + vpmuludq %ymm13,%ymm11,%ymm11 + vmovdqu 288-8-128(%r13),%ymm9 + vmovd %eax,%xmm0 + imulq -128(%r13),%rax + vpaddq %ymm11,%ymm7,%ymm7 + vpmuludq %ymm13,%ymm10,%ymm10 + vmovdqu 32-16-128(%r13),%ymm14 + vpbroadcastq %xmm0,%ymm0 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm13,%ymm9,%ymm9 + vmovdqu 64-16-128(%r13),%ymm11 + addq %rax,%r12 + + vmovdqu 32-24-128(%r13),%ymm13 + vpmuludq %ymm12,%ymm14,%ymm14 + vmovdqu 96-16-128(%r13),%ymm10 + vpaddq %ymm14,%ymm1,%ymm1 + vpmuludq %ymm0,%ymm13,%ymm13 + vpmuludq %ymm12,%ymm11,%ymm11 +.byte 0xc4,0x41,0x7e,0x6f,0xb5,0xf0,0xff,0xff,0xff + vpaddq %ymm1,%ymm13,%ymm13 + vpaddq %ymm11,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm10,%ymm10 + vmovdqu 160-16-128(%r13),%ymm11 +.byte 0x67 + vmovq %xmm13,%rax + vmovdqu %ymm13,(%rsp) + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm12,%ymm14,%ymm14 + vmovdqu 192-16-128(%r13),%ymm10 + vpaddq %ymm14,%ymm4,%ymm4 + vpmuludq %ymm12,%ymm11,%ymm11 + vmovdqu 224-16-128(%r13),%ymm14 + vpaddq %ymm11,%ymm5,%ymm5 + vpmuludq %ymm12,%ymm10,%ymm10 + vmovdqu 256-16-128(%r13),%ymm11 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm12,%ymm14,%ymm14 + shrq $29,%r12 + vmovdqu 288-16-128(%r13),%ymm10 + addq %r12,%rax + vpaddq %ymm14,%ymm7,%ymm7 + vpmuludq %ymm12,%ymm11,%ymm11 + + movq %rax,%r9 + imull %ecx,%eax + vpaddq %ymm11,%ymm8,%ymm8 + vpmuludq %ymm12,%ymm10,%ymm10 + andl $0x1fffffff,%eax + vmovd %eax,%xmm12 + vmovdqu 96-24-128(%r13),%ymm11 +.byte 0x67 + vpaddq %ymm10,%ymm9,%ymm9 + vpbroadcastq %xmm12,%ymm12 + + vpmuludq 64-24-128(%r13),%ymm0,%ymm14 + vmovdqu 128-24-128(%r13),%ymm10 + movq %rax,%rdx + imulq -128(%r13),%rax + movq 8(%rsp),%r10 + vpaddq %ymm14,%ymm2,%ymm1 + vpmuludq %ymm0,%ymm11,%ymm11 + vmovdqu 160-24-128(%r13),%ymm14 + addq %rax,%r9 + movq %rdx,%rax + imulq 8-128(%r13),%rax +.byte 0x67 + shrq $29,%r9 + movq 16(%rsp),%r11 + vpaddq %ymm11,%ymm3,%ymm2 + vpmuludq %ymm0,%ymm10,%ymm10 + vmovdqu 192-24-128(%r13),%ymm11 + addq %rax,%r10 + movq %rdx,%rax + imulq 16-128(%r13),%rax + vpaddq %ymm10,%ymm4,%ymm3 + vpmuludq %ymm0,%ymm14,%ymm14 + vmovdqu 224-24-128(%r13),%ymm10 + imulq 24-128(%r13),%rdx + addq %rax,%r11 + leaq (%r9,%r10,1),%rax + vpaddq %ymm14,%ymm5,%ymm4 + vpmuludq %ymm0,%ymm11,%ymm11 + vmovdqu 256-24-128(%r13),%ymm14 + movq %rax,%r10 + imull %ecx,%eax + vpmuludq %ymm0,%ymm10,%ymm10 + vpaddq %ymm11,%ymm6,%ymm5 + vmovdqu 288-24-128(%r13),%ymm11 + andl $0x1fffffff,%eax + vpaddq %ymm10,%ymm7,%ymm6 + vpmuludq %ymm0,%ymm14,%ymm14 + addq 24(%rsp),%rdx + vpaddq %ymm14,%ymm8,%ymm7 + vpmuludq %ymm0,%ymm11,%ymm11 + vpaddq %ymm11,%ymm9,%ymm8 + vmovq %r12,%xmm9 + movq %rdx,%r12 + + decl %r14d + jnz .LOOP_REDUCE_1024 + leaq 448(%rsp),%r12 + vpaddq %ymm9,%ymm13,%ymm0 + vpxor %ymm9,%ymm9,%ymm9 + + vpaddq 288-192(%rbx),%ymm0,%ymm0 + vpaddq 320-448(%r12),%ymm1,%ymm1 + vpaddq 352-448(%r12),%ymm2,%ymm2 + vpaddq 384-448(%r12),%ymm3,%ymm3 + vpaddq 416-448(%r12),%ymm4,%ymm4 + vpaddq 448-448(%r12),%ymm5,%ymm5 + vpaddq 480-448(%r12),%ymm6,%ymm6 + vpaddq 512-448(%r12),%ymm7,%ymm7 + vpaddq 544-448(%r12),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm14 + vpand %ymm15,%ymm0,%ymm0 + vpsrlq $29,%ymm1,%ymm11 + vpand %ymm15,%ymm1,%ymm1 + vpsrlq $29,%ymm2,%ymm12 + vpermq $0x93,%ymm14,%ymm14 + vpand %ymm15,%ymm2,%ymm2 + vpsrlq $29,%ymm3,%ymm13 + vpermq $0x93,%ymm11,%ymm11 + vpand %ymm15,%ymm3,%ymm3 + vpermq $0x93,%ymm12,%ymm12 + + vpblendd $3,%ymm9,%ymm14,%ymm10 + vpermq $0x93,%ymm13,%ymm13 + vpblendd $3,%ymm14,%ymm11,%ymm14 + vpaddq %ymm10,%ymm0,%ymm0 + vpblendd $3,%ymm11,%ymm12,%ymm11 + vpaddq %ymm14,%ymm1,%ymm1 + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm11,%ymm2,%ymm2 + vpblendd $3,%ymm13,%ymm9,%ymm13 + vpaddq %ymm12,%ymm3,%ymm3 + vpaddq %ymm13,%ymm4,%ymm4 + + vpsrlq $29,%ymm0,%ymm14 + vpand %ymm15,%ymm0,%ymm0 + vpsrlq $29,%ymm1,%ymm11 + vpand %ymm15,%ymm1,%ymm1 + vpsrlq $29,%ymm2,%ymm12 + vpermq $0x93,%ymm14,%ymm14 + vpand %ymm15,%ymm2,%ymm2 + vpsrlq $29,%ymm3,%ymm13 + vpermq $0x93,%ymm11,%ymm11 + vpand %ymm15,%ymm3,%ymm3 + vpermq $0x93,%ymm12,%ymm12 + + vpblendd $3,%ymm9,%ymm14,%ymm10 + vpermq $0x93,%ymm13,%ymm13 + vpblendd $3,%ymm14,%ymm11,%ymm14 + vpaddq %ymm10,%ymm0,%ymm0 + vpblendd $3,%ymm11,%ymm12,%ymm11 + vpaddq %ymm14,%ymm1,%ymm1 + vmovdqu %ymm0,0-128(%rdi) + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm11,%ymm2,%ymm2 + vmovdqu %ymm1,32-128(%rdi) + vpblendd $3,%ymm13,%ymm9,%ymm13 + vpaddq %ymm12,%ymm3,%ymm3 + vmovdqu %ymm2,64-128(%rdi) + vpaddq %ymm13,%ymm4,%ymm4 + vmovdqu %ymm3,96-128(%rdi) + vpsrlq $29,%ymm4,%ymm14 + vpand %ymm15,%ymm4,%ymm4 + vpsrlq $29,%ymm5,%ymm11 + vpand %ymm15,%ymm5,%ymm5 + vpsrlq $29,%ymm6,%ymm12 + vpermq $0x93,%ymm14,%ymm14 + vpand %ymm15,%ymm6,%ymm6 + vpsrlq $29,%ymm7,%ymm13 + vpermq $0x93,%ymm11,%ymm11 + vpand %ymm15,%ymm7,%ymm7 + vpsrlq $29,%ymm8,%ymm0 + vpermq $0x93,%ymm12,%ymm12 + vpand %ymm15,%ymm8,%ymm8 + vpermq $0x93,%ymm13,%ymm13 + + vpblendd $3,%ymm9,%ymm14,%ymm10 + vpermq $0x93,%ymm0,%ymm0 + vpblendd $3,%ymm14,%ymm11,%ymm14 + vpaddq %ymm10,%ymm4,%ymm4 + vpblendd $3,%ymm11,%ymm12,%ymm11 + vpaddq %ymm14,%ymm5,%ymm5 + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm11,%ymm6,%ymm6 + vpblendd $3,%ymm13,%ymm0,%ymm13 + vpaddq %ymm12,%ymm7,%ymm7 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm4,%ymm14 + vpand %ymm15,%ymm4,%ymm4 + vpsrlq $29,%ymm5,%ymm11 + vpand %ymm15,%ymm5,%ymm5 + vpsrlq $29,%ymm6,%ymm12 + vpermq $0x93,%ymm14,%ymm14 + vpand %ymm15,%ymm6,%ymm6 + vpsrlq $29,%ymm7,%ymm13 + vpermq $0x93,%ymm11,%ymm11 + vpand %ymm15,%ymm7,%ymm7 + vpsrlq $29,%ymm8,%ymm0 + vpermq $0x93,%ymm12,%ymm12 + vpand %ymm15,%ymm8,%ymm8 + vpermq $0x93,%ymm13,%ymm13 + + vpblendd $3,%ymm9,%ymm14,%ymm10 + vpermq $0x93,%ymm0,%ymm0 + vpblendd $3,%ymm14,%ymm11,%ymm14 + vpaddq %ymm10,%ymm4,%ymm4 + vpblendd $3,%ymm11,%ymm12,%ymm11 + vpaddq %ymm14,%ymm5,%ymm5 + vmovdqu %ymm4,128-128(%rdi) + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm11,%ymm6,%ymm6 + vmovdqu %ymm5,160-128(%rdi) + vpblendd $3,%ymm13,%ymm0,%ymm13 + vpaddq %ymm12,%ymm7,%ymm7 + vmovdqu %ymm6,192-128(%rdi) + vpaddq %ymm13,%ymm8,%ymm8 + vmovdqu %ymm7,224-128(%rdi) + vmovdqu %ymm8,256-128(%rdi) + + movq %rdi,%rsi + decl %r8d + jne .LOOP_GRANDE_SQR_1024 + + vzeroall + movq %rbp,%rax +.cfi_def_cfa_register %rax + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lsqr_1024_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size rsaz_1024_sqr_avx2,.-rsaz_1024_sqr_avx2 +.globl rsaz_1024_mul_avx2 +.type rsaz_1024_mul_avx2,@function +.align 64 +rsaz_1024_mul_avx2: +.cfi_startproc + leaq (%rsp),%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + movq %rax,%rbp +.cfi_def_cfa_register %rbp + vzeroall + movq %rdx,%r13 + subq $64,%rsp + + + + + + +.byte 0x67,0x67 + movq %rsi,%r15 + andq $4095,%r15 + addq $320,%r15 + shrq $12,%r15 + movq %rsi,%r15 + cmovnzq %r13,%rsi + cmovnzq %r15,%r13 + + movq %rcx,%r15 + subq $-128,%rsi + subq $-128,%rcx + subq $-128,%rdi + + andq $4095,%r15 + addq $320,%r15 +.byte 0x67,0x67 + shrq $12,%r15 + jz .Lmul_1024_no_n_copy + + + + + + subq $320,%rsp + vmovdqu 0-128(%rcx),%ymm0 + andq $-512,%rsp + vmovdqu 32-128(%rcx),%ymm1 + vmovdqu 64-128(%rcx),%ymm2 + vmovdqu 96-128(%rcx),%ymm3 + vmovdqu 128-128(%rcx),%ymm4 + vmovdqu 160-128(%rcx),%ymm5 + vmovdqu 192-128(%rcx),%ymm6 + vmovdqu 224-128(%rcx),%ymm7 + vmovdqu 256-128(%rcx),%ymm8 + leaq 64+128(%rsp),%rcx + vmovdqu %ymm0,0-128(%rcx) + vpxor %ymm0,%ymm0,%ymm0 + vmovdqu %ymm1,32-128(%rcx) + vpxor %ymm1,%ymm1,%ymm1 + vmovdqu %ymm2,64-128(%rcx) + vpxor %ymm2,%ymm2,%ymm2 + vmovdqu %ymm3,96-128(%rcx) + vpxor %ymm3,%ymm3,%ymm3 + vmovdqu %ymm4,128-128(%rcx) + vpxor %ymm4,%ymm4,%ymm4 + vmovdqu %ymm5,160-128(%rcx) + vpxor %ymm5,%ymm5,%ymm5 + vmovdqu %ymm6,192-128(%rcx) + vpxor %ymm6,%ymm6,%ymm6 + vmovdqu %ymm7,224-128(%rcx) + vpxor %ymm7,%ymm7,%ymm7 + vmovdqu %ymm8,256-128(%rcx) + vmovdqa %ymm0,%ymm8 + vmovdqu %ymm9,288-128(%rcx) +.Lmul_1024_no_n_copy: + andq $-64,%rsp + + movq (%r13),%rbx + vpbroadcastq (%r13),%ymm10 + vmovdqu %ymm0,(%rsp) + xorq %r9,%r9 +.byte 0x67 + xorq %r10,%r10 + xorq %r11,%r11 + xorq %r12,%r12 + + vmovdqu .Land_mask(%rip),%ymm15 + movl $9,%r14d + vmovdqu %ymm9,288-128(%rdi) + jmp .Loop_mul_1024 + +.align 32 +.Loop_mul_1024: + vpsrlq $29,%ymm3,%ymm9 + movq %rbx,%rax + imulq -128(%rsi),%rax + addq %r9,%rax + movq %rbx,%r10 + imulq 8-128(%rsi),%r10 + addq 8(%rsp),%r10 + + movq %rax,%r9 + imull %r8d,%eax + andl $0x1fffffff,%eax + + movq %rbx,%r11 + imulq 16-128(%rsi),%r11 + addq 16(%rsp),%r11 + + movq %rbx,%r12 + imulq 24-128(%rsi),%r12 + addq 24(%rsp),%r12 + vpmuludq 32-128(%rsi),%ymm10,%ymm0 + vmovd %eax,%xmm11 + vpaddq %ymm0,%ymm1,%ymm1 + vpmuludq 64-128(%rsi),%ymm10,%ymm12 + vpbroadcastq %xmm11,%ymm11 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq 96-128(%rsi),%ymm10,%ymm13 + vpand %ymm15,%ymm3,%ymm3 + vpaddq %ymm13,%ymm3,%ymm3 + vpmuludq 128-128(%rsi),%ymm10,%ymm0 + vpaddq %ymm0,%ymm4,%ymm4 + vpmuludq 160-128(%rsi),%ymm10,%ymm12 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq 192-128(%rsi),%ymm10,%ymm13 + vpaddq %ymm13,%ymm6,%ymm6 + vpmuludq 224-128(%rsi),%ymm10,%ymm0 + vpermq $0x93,%ymm9,%ymm9 + vpaddq %ymm0,%ymm7,%ymm7 + vpmuludq 256-128(%rsi),%ymm10,%ymm12 + vpbroadcastq 8(%r13),%ymm10 + vpaddq %ymm12,%ymm8,%ymm8 + + movq %rax,%rdx + imulq -128(%rcx),%rax + addq %rax,%r9 + movq %rdx,%rax + imulq 8-128(%rcx),%rax + addq %rax,%r10 + movq %rdx,%rax + imulq 16-128(%rcx),%rax + addq %rax,%r11 + shrq $29,%r9 + imulq 24-128(%rcx),%rdx + addq %rdx,%r12 + addq %r9,%r10 + + vpmuludq 32-128(%rcx),%ymm11,%ymm13 + vmovq %xmm10,%rbx + vpaddq %ymm13,%ymm1,%ymm1 + vpmuludq 64-128(%rcx),%ymm11,%ymm0 + vpaddq %ymm0,%ymm2,%ymm2 + vpmuludq 96-128(%rcx),%ymm11,%ymm12 + vpaddq %ymm12,%ymm3,%ymm3 + vpmuludq 128-128(%rcx),%ymm11,%ymm13 + vpaddq %ymm13,%ymm4,%ymm4 + vpmuludq 160-128(%rcx),%ymm11,%ymm0 + vpaddq %ymm0,%ymm5,%ymm5 + vpmuludq 192-128(%rcx),%ymm11,%ymm12 + vpaddq %ymm12,%ymm6,%ymm6 + vpmuludq 224-128(%rcx),%ymm11,%ymm13 + vpblendd $3,%ymm14,%ymm9,%ymm12 + vpaddq %ymm13,%ymm7,%ymm7 + vpmuludq 256-128(%rcx),%ymm11,%ymm0 + vpaddq %ymm12,%ymm3,%ymm3 + vpaddq %ymm0,%ymm8,%ymm8 + + movq %rbx,%rax + imulq -128(%rsi),%rax + addq %rax,%r10 + vmovdqu -8+32-128(%rsi),%ymm12 + movq %rbx,%rax + imulq 8-128(%rsi),%rax + addq %rax,%r11 + vmovdqu -8+64-128(%rsi),%ymm13 + + movq %r10,%rax + vpblendd $0xfc,%ymm14,%ymm9,%ymm9 + imull %r8d,%eax + vpaddq %ymm9,%ymm4,%ymm4 + andl $0x1fffffff,%eax + + imulq 16-128(%rsi),%rbx + addq %rbx,%r12 + vpmuludq %ymm10,%ymm12,%ymm12 + vmovd %eax,%xmm11 + vmovdqu -8+96-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm1,%ymm1 + vpmuludq %ymm10,%ymm13,%ymm13 + vpbroadcastq %xmm11,%ymm11 + vmovdqu -8+128-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm2,%ymm2 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovdqu -8+160-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm3,%ymm3 + vpmuludq %ymm10,%ymm12,%ymm12 + vmovdqu -8+192-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm4,%ymm4 + vpmuludq %ymm10,%ymm13,%ymm13 + vmovdqu -8+224-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm5,%ymm5 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovdqu -8+256-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm6,%ymm6 + vpmuludq %ymm10,%ymm12,%ymm12 + vmovdqu -8+288-128(%rsi),%ymm9 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq %ymm10,%ymm13,%ymm13 + vpaddq %ymm13,%ymm8,%ymm8 + vpmuludq %ymm10,%ymm9,%ymm9 + vpbroadcastq 16(%r13),%ymm10 + + movq %rax,%rdx + imulq -128(%rcx),%rax + addq %rax,%r10 + vmovdqu -8+32-128(%rcx),%ymm0 + movq %rdx,%rax + imulq 8-128(%rcx),%rax + addq %rax,%r11 + vmovdqu -8+64-128(%rcx),%ymm12 + shrq $29,%r10 + imulq 16-128(%rcx),%rdx + addq %rdx,%r12 + addq %r10,%r11 + + vpmuludq %ymm11,%ymm0,%ymm0 + vmovq %xmm10,%rbx + vmovdqu -8+96-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm1,%ymm1 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu -8+128-128(%rcx),%ymm0 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -8+160-128(%rcx),%ymm12 + vpaddq %ymm13,%ymm3,%ymm3 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovdqu -8+192-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm4,%ymm4 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu -8+224-128(%rcx),%ymm0 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -8+256-128(%rcx),%ymm12 + vpaddq %ymm13,%ymm6,%ymm6 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovdqu -8+288-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm7,%ymm7 + vpmuludq %ymm11,%ymm12,%ymm12 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq %ymm11,%ymm13,%ymm13 + vpaddq %ymm13,%ymm9,%ymm9 + + vmovdqu -16+32-128(%rsi),%ymm0 + movq %rbx,%rax + imulq -128(%rsi),%rax + addq %r11,%rax + + vmovdqu -16+64-128(%rsi),%ymm12 + movq %rax,%r11 + imull %r8d,%eax + andl $0x1fffffff,%eax + + imulq 8-128(%rsi),%rbx + addq %rbx,%r12 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovd %eax,%xmm11 + vmovdqu -16+96-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm1,%ymm1 + vpmuludq %ymm10,%ymm12,%ymm12 + vpbroadcastq %xmm11,%ymm11 + vmovdqu -16+128-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq %ymm10,%ymm13,%ymm13 + vmovdqu -16+160-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm3,%ymm3 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovdqu -16+192-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm4,%ymm4 + vpmuludq %ymm10,%ymm12,%ymm12 + vmovdqu -16+224-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq %ymm10,%ymm13,%ymm13 + vmovdqu -16+256-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm6,%ymm6 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovdqu -16+288-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm7,%ymm7 + vpmuludq %ymm10,%ymm12,%ymm12 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq %ymm10,%ymm13,%ymm13 + vpbroadcastq 24(%r13),%ymm10 + vpaddq %ymm13,%ymm9,%ymm9 + + vmovdqu -16+32-128(%rcx),%ymm0 + movq %rax,%rdx + imulq -128(%rcx),%rax + addq %rax,%r11 + vmovdqu -16+64-128(%rcx),%ymm12 + imulq 8-128(%rcx),%rdx + addq %rdx,%r12 + shrq $29,%r11 + + vpmuludq %ymm11,%ymm0,%ymm0 + vmovq %xmm10,%rbx + vmovdqu -16+96-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm1,%ymm1 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu -16+128-128(%rcx),%ymm0 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -16+160-128(%rcx),%ymm12 + vpaddq %ymm13,%ymm3,%ymm3 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovdqu -16+192-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm4,%ymm4 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu -16+224-128(%rcx),%ymm0 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -16+256-128(%rcx),%ymm12 + vpaddq %ymm13,%ymm6,%ymm6 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovdqu -16+288-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm7,%ymm7 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu -24+32-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -24+64-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm9,%ymm9 + + addq %r11,%r12 + imulq -128(%rsi),%rbx + addq %rbx,%r12 + + movq %r12,%rax + imull %r8d,%eax + andl $0x1fffffff,%eax + + vpmuludq %ymm10,%ymm0,%ymm0 + vmovd %eax,%xmm11 + vmovdqu -24+96-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm1,%ymm1 + vpmuludq %ymm10,%ymm12,%ymm12 + vpbroadcastq %xmm11,%ymm11 + vmovdqu -24+128-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq %ymm10,%ymm13,%ymm13 + vmovdqu -24+160-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm3,%ymm3 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovdqu -24+192-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm4,%ymm4 + vpmuludq %ymm10,%ymm12,%ymm12 + vmovdqu -24+224-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq %ymm10,%ymm13,%ymm13 + vmovdqu -24+256-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm6,%ymm6 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovdqu -24+288-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm7,%ymm7 + vpmuludq %ymm10,%ymm12,%ymm12 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq %ymm10,%ymm13,%ymm13 + vpbroadcastq 32(%r13),%ymm10 + vpaddq %ymm13,%ymm9,%ymm9 + addq $32,%r13 + + vmovdqu -24+32-128(%rcx),%ymm0 + imulq -128(%rcx),%rax + addq %rax,%r12 + shrq $29,%r12 + + vmovdqu -24+64-128(%rcx),%ymm12 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovq %xmm10,%rbx + vmovdqu -24+96-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm1,%ymm0 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu %ymm0,(%rsp) + vpaddq %ymm12,%ymm2,%ymm1 + vmovdqu -24+128-128(%rcx),%ymm0 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -24+160-128(%rcx),%ymm12 + vpaddq %ymm13,%ymm3,%ymm2 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovdqu -24+192-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm4,%ymm3 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu -24+224-128(%rcx),%ymm0 + vpaddq %ymm12,%ymm5,%ymm4 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -24+256-128(%rcx),%ymm12 + vpaddq %ymm13,%ymm6,%ymm5 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovdqu -24+288-128(%rcx),%ymm13 + movq %r12,%r9 + vpaddq %ymm0,%ymm7,%ymm6 + vpmuludq %ymm11,%ymm12,%ymm12 + addq (%rsp),%r9 + vpaddq %ymm12,%ymm8,%ymm7 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovq %r12,%xmm12 + vpaddq %ymm13,%ymm9,%ymm8 + + decl %r14d + jnz .Loop_mul_1024 + vpaddq (%rsp),%ymm12,%ymm0 + + vpsrlq $29,%ymm0,%ymm12 + vpand %ymm15,%ymm0,%ymm0 + vpsrlq $29,%ymm1,%ymm13 + vpand %ymm15,%ymm1,%ymm1 + vpsrlq $29,%ymm2,%ymm10 + vpermq $0x93,%ymm12,%ymm12 + vpand %ymm15,%ymm2,%ymm2 + vpsrlq $29,%ymm3,%ymm11 + vpermq $0x93,%ymm13,%ymm13 + vpand %ymm15,%ymm3,%ymm3 + + vpblendd $3,%ymm14,%ymm12,%ymm9 + vpermq $0x93,%ymm10,%ymm10 + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpermq $0x93,%ymm11,%ymm11 + vpaddq %ymm9,%ymm0,%ymm0 + vpblendd $3,%ymm13,%ymm10,%ymm13 + vpaddq %ymm12,%ymm1,%ymm1 + vpblendd $3,%ymm10,%ymm11,%ymm10 + vpaddq %ymm13,%ymm2,%ymm2 + vpblendd $3,%ymm11,%ymm14,%ymm11 + vpaddq %ymm10,%ymm3,%ymm3 + vpaddq %ymm11,%ymm4,%ymm4 + + vpsrlq $29,%ymm0,%ymm12 + vpand %ymm15,%ymm0,%ymm0 + vpsrlq $29,%ymm1,%ymm13 + vpand %ymm15,%ymm1,%ymm1 + vpsrlq $29,%ymm2,%ymm10 + vpermq $0x93,%ymm12,%ymm12 + vpand %ymm15,%ymm2,%ymm2 + vpsrlq $29,%ymm3,%ymm11 + vpermq $0x93,%ymm13,%ymm13 + vpand %ymm15,%ymm3,%ymm3 + vpermq $0x93,%ymm10,%ymm10 + + vpblendd $3,%ymm14,%ymm12,%ymm9 + vpermq $0x93,%ymm11,%ymm11 + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm9,%ymm0,%ymm0 + vpblendd $3,%ymm13,%ymm10,%ymm13 + vpaddq %ymm12,%ymm1,%ymm1 + vpblendd $3,%ymm10,%ymm11,%ymm10 + vpaddq %ymm13,%ymm2,%ymm2 + vpblendd $3,%ymm11,%ymm14,%ymm11 + vpaddq %ymm10,%ymm3,%ymm3 + vpaddq %ymm11,%ymm4,%ymm4 + + vmovdqu %ymm0,0-128(%rdi) + vmovdqu %ymm1,32-128(%rdi) + vmovdqu %ymm2,64-128(%rdi) + vmovdqu %ymm3,96-128(%rdi) + vpsrlq $29,%ymm4,%ymm12 + vpand %ymm15,%ymm4,%ymm4 + vpsrlq $29,%ymm5,%ymm13 + vpand %ymm15,%ymm5,%ymm5 + vpsrlq $29,%ymm6,%ymm10 + vpermq $0x93,%ymm12,%ymm12 + vpand %ymm15,%ymm6,%ymm6 + vpsrlq $29,%ymm7,%ymm11 + vpermq $0x93,%ymm13,%ymm13 + vpand %ymm15,%ymm7,%ymm7 + vpsrlq $29,%ymm8,%ymm0 + vpermq $0x93,%ymm10,%ymm10 + vpand %ymm15,%ymm8,%ymm8 + vpermq $0x93,%ymm11,%ymm11 + + vpblendd $3,%ymm14,%ymm12,%ymm9 + vpermq $0x93,%ymm0,%ymm0 + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm9,%ymm4,%ymm4 + vpblendd $3,%ymm13,%ymm10,%ymm13 + vpaddq %ymm12,%ymm5,%ymm5 + vpblendd $3,%ymm10,%ymm11,%ymm10 + vpaddq %ymm13,%ymm6,%ymm6 + vpblendd $3,%ymm11,%ymm0,%ymm11 + vpaddq %ymm10,%ymm7,%ymm7 + vpaddq %ymm11,%ymm8,%ymm8 + + vpsrlq $29,%ymm4,%ymm12 + vpand %ymm15,%ymm4,%ymm4 + vpsrlq $29,%ymm5,%ymm13 + vpand %ymm15,%ymm5,%ymm5 + vpsrlq $29,%ymm6,%ymm10 + vpermq $0x93,%ymm12,%ymm12 + vpand %ymm15,%ymm6,%ymm6 + vpsrlq $29,%ymm7,%ymm11 + vpermq $0x93,%ymm13,%ymm13 + vpand %ymm15,%ymm7,%ymm7 + vpsrlq $29,%ymm8,%ymm0 + vpermq $0x93,%ymm10,%ymm10 + vpand %ymm15,%ymm8,%ymm8 + vpermq $0x93,%ymm11,%ymm11 + + vpblendd $3,%ymm14,%ymm12,%ymm9 + vpermq $0x93,%ymm0,%ymm0 + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm9,%ymm4,%ymm4 + vpblendd $3,%ymm13,%ymm10,%ymm13 + vpaddq %ymm12,%ymm5,%ymm5 + vpblendd $3,%ymm10,%ymm11,%ymm10 + vpaddq %ymm13,%ymm6,%ymm6 + vpblendd $3,%ymm11,%ymm0,%ymm11 + vpaddq %ymm10,%ymm7,%ymm7 + vpaddq %ymm11,%ymm8,%ymm8 + + vmovdqu %ymm4,128-128(%rdi) + vmovdqu %ymm5,160-128(%rdi) + vmovdqu %ymm6,192-128(%rdi) + vmovdqu %ymm7,224-128(%rdi) + vmovdqu %ymm8,256-128(%rdi) + vzeroupper + + movq %rbp,%rax +.cfi_def_cfa_register %rax + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lmul_1024_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size rsaz_1024_mul_avx2,.-rsaz_1024_mul_avx2 +.globl rsaz_1024_red2norm_avx2 +.type rsaz_1024_red2norm_avx2,@function +.align 32 +rsaz_1024_red2norm_avx2: +.cfi_startproc + subq $-128,%rsi + xorq %rax,%rax + movq -128(%rsi),%r8 + movq -120(%rsi),%r9 + movq -112(%rsi),%r10 + shlq $0,%r8 + shlq $29,%r9 + movq %r10,%r11 + shlq $58,%r10 + shrq $6,%r11 + addq %r8,%rax + addq %r9,%rax + addq %r10,%rax + adcq $0,%r11 + movq %rax,0(%rdi) + movq %r11,%rax + movq -104(%rsi),%r8 + movq -96(%rsi),%r9 + shlq $23,%r8 + movq %r9,%r10 + shlq $52,%r9 + shrq $12,%r10 + addq %r8,%rax + addq %r9,%rax + adcq $0,%r10 + movq %rax,8(%rdi) + movq %r10,%rax + movq -88(%rsi),%r11 + movq -80(%rsi),%r8 + shlq $17,%r11 + movq %r8,%r9 + shlq $46,%r8 + shrq $18,%r9 + addq %r11,%rax + addq %r8,%rax + adcq $0,%r9 + movq %rax,16(%rdi) + movq %r9,%rax + movq -72(%rsi),%r10 + movq -64(%rsi),%r11 + shlq $11,%r10 + movq %r11,%r8 + shlq $40,%r11 + shrq $24,%r8 + addq %r10,%rax + addq %r11,%rax + adcq $0,%r8 + movq %rax,24(%rdi) + movq %r8,%rax + movq -56(%rsi),%r9 + movq -48(%rsi),%r10 + movq -40(%rsi),%r11 + shlq $5,%r9 + shlq $34,%r10 + movq %r11,%r8 + shlq $63,%r11 + shrq $1,%r8 + addq %r9,%rax + addq %r10,%rax + addq %r11,%rax + adcq $0,%r8 + movq %rax,32(%rdi) + movq %r8,%rax + movq -32(%rsi),%r9 + movq -24(%rsi),%r10 + shlq $28,%r9 + movq %r10,%r11 + shlq $57,%r10 + shrq $7,%r11 + addq %r9,%rax + addq %r10,%rax + adcq $0,%r11 + movq %rax,40(%rdi) + movq %r11,%rax + movq -16(%rsi),%r8 + movq -8(%rsi),%r9 + shlq $22,%r8 + movq %r9,%r10 + shlq $51,%r9 + shrq $13,%r10 + addq %r8,%rax + addq %r9,%rax + adcq $0,%r10 + movq %rax,48(%rdi) + movq %r10,%rax + movq 0(%rsi),%r11 + movq 8(%rsi),%r8 + shlq $16,%r11 + movq %r8,%r9 + shlq $45,%r8 + shrq $19,%r9 + addq %r11,%rax + addq %r8,%rax + adcq $0,%r9 + movq %rax,56(%rdi) + movq %r9,%rax + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + shlq $10,%r10 + movq %r11,%r8 + shlq $39,%r11 + shrq $25,%r8 + addq %r10,%rax + addq %r11,%rax + adcq $0,%r8 + movq %rax,64(%rdi) + movq %r8,%rax + movq 32(%rsi),%r9 + movq 40(%rsi),%r10 + movq 48(%rsi),%r11 + shlq $4,%r9 + shlq $33,%r10 + movq %r11,%r8 + shlq $62,%r11 + shrq $2,%r8 + addq %r9,%rax + addq %r10,%rax + addq %r11,%rax + adcq $0,%r8 + movq %rax,72(%rdi) + movq %r8,%rax + movq 56(%rsi),%r9 + movq 64(%rsi),%r10 + shlq $27,%r9 + movq %r10,%r11 + shlq $56,%r10 + shrq $8,%r11 + addq %r9,%rax + addq %r10,%rax + adcq $0,%r11 + movq %rax,80(%rdi) + movq %r11,%rax + movq 72(%rsi),%r8 + movq 80(%rsi),%r9 + shlq $21,%r8 + movq %r9,%r10 + shlq $50,%r9 + shrq $14,%r10 + addq %r8,%rax + addq %r9,%rax + adcq $0,%r10 + movq %rax,88(%rdi) + movq %r10,%rax + movq 88(%rsi),%r11 + movq 96(%rsi),%r8 + shlq $15,%r11 + movq %r8,%r9 + shlq $44,%r8 + shrq $20,%r9 + addq %r11,%rax + addq %r8,%rax + adcq $0,%r9 + movq %rax,96(%rdi) + movq %r9,%rax + movq 104(%rsi),%r10 + movq 112(%rsi),%r11 + shlq $9,%r10 + movq %r11,%r8 + shlq $38,%r11 + shrq $26,%r8 + addq %r10,%rax + addq %r11,%rax + adcq $0,%r8 + movq %rax,104(%rdi) + movq %r8,%rax + movq 120(%rsi),%r9 + movq 128(%rsi),%r10 + movq 136(%rsi),%r11 + shlq $3,%r9 + shlq $32,%r10 + movq %r11,%r8 + shlq $61,%r11 + shrq $3,%r8 + addq %r9,%rax + addq %r10,%rax + addq %r11,%rax + adcq $0,%r8 + movq %rax,112(%rdi) + movq %r8,%rax + movq 144(%rsi),%r9 + movq 152(%rsi),%r10 + shlq $26,%r9 + movq %r10,%r11 + shlq $55,%r10 + shrq $9,%r11 + addq %r9,%rax + addq %r10,%rax + adcq $0,%r11 + movq %rax,120(%rdi) + movq %r11,%rax + .byte 0xf3,0xc3 +.cfi_endproc +.size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx2 + +.globl rsaz_1024_norm2red_avx2 +.type rsaz_1024_norm2red_avx2,@function +.align 32 +rsaz_1024_norm2red_avx2: +.cfi_startproc + subq $-128,%rdi + movq (%rsi),%r8 + movl $0x1fffffff,%eax + movq 8(%rsi),%r9 + movq %r8,%r11 + shrq $0,%r11 + andq %rax,%r11 + movq %r11,-128(%rdi) + movq %r8,%r10 + shrq $29,%r10 + andq %rax,%r10 + movq %r10,-120(%rdi) + shrdq $58,%r9,%r8 + andq %rax,%r8 + movq %r8,-112(%rdi) + movq 16(%rsi),%r10 + movq %r9,%r8 + shrq $23,%r8 + andq %rax,%r8 + movq %r8,-104(%rdi) + shrdq $52,%r10,%r9 + andq %rax,%r9 + movq %r9,-96(%rdi) + movq 24(%rsi),%r11 + movq %r10,%r9 + shrq $17,%r9 + andq %rax,%r9 + movq %r9,-88(%rdi) + shrdq $46,%r11,%r10 + andq %rax,%r10 + movq %r10,-80(%rdi) + movq 32(%rsi),%r8 + movq %r11,%r10 + shrq $11,%r10 + andq %rax,%r10 + movq %r10,-72(%rdi) + shrdq $40,%r8,%r11 + andq %rax,%r11 + movq %r11,-64(%rdi) + movq 40(%rsi),%r9 + movq %r8,%r11 + shrq $5,%r11 + andq %rax,%r11 + movq %r11,-56(%rdi) + movq %r8,%r10 + shrq $34,%r10 + andq %rax,%r10 + movq %r10,-48(%rdi) + shrdq $63,%r9,%r8 + andq %rax,%r8 + movq %r8,-40(%rdi) + movq 48(%rsi),%r10 + movq %r9,%r8 + shrq $28,%r8 + andq %rax,%r8 + movq %r8,-32(%rdi) + shrdq $57,%r10,%r9 + andq %rax,%r9 + movq %r9,-24(%rdi) + movq 56(%rsi),%r11 + movq %r10,%r9 + shrq $22,%r9 + andq %rax,%r9 + movq %r9,-16(%rdi) + shrdq $51,%r11,%r10 + andq %rax,%r10 + movq %r10,-8(%rdi) + movq 64(%rsi),%r8 + movq %r11,%r10 + shrq $16,%r10 + andq %rax,%r10 + movq %r10,0(%rdi) + shrdq $45,%r8,%r11 + andq %rax,%r11 + movq %r11,8(%rdi) + movq 72(%rsi),%r9 + movq %r8,%r11 + shrq $10,%r11 + andq %rax,%r11 + movq %r11,16(%rdi) + shrdq $39,%r9,%r8 + andq %rax,%r8 + movq %r8,24(%rdi) + movq 80(%rsi),%r10 + movq %r9,%r8 + shrq $4,%r8 + andq %rax,%r8 + movq %r8,32(%rdi) + movq %r9,%r11 + shrq $33,%r11 + andq %rax,%r11 + movq %r11,40(%rdi) + shrdq $62,%r10,%r9 + andq %rax,%r9 + movq %r9,48(%rdi) + movq 88(%rsi),%r11 + movq %r10,%r9 + shrq $27,%r9 + andq %rax,%r9 + movq %r9,56(%rdi) + shrdq $56,%r11,%r10 + andq %rax,%r10 + movq %r10,64(%rdi) + movq 96(%rsi),%r8 + movq %r11,%r10 + shrq $21,%r10 + andq %rax,%r10 + movq %r10,72(%rdi) + shrdq $50,%r8,%r11 + andq %rax,%r11 + movq %r11,80(%rdi) + movq 104(%rsi),%r9 + movq %r8,%r11 + shrq $15,%r11 + andq %rax,%r11 + movq %r11,88(%rdi) + shrdq $44,%r9,%r8 + andq %rax,%r8 + movq %r8,96(%rdi) + movq 112(%rsi),%r10 + movq %r9,%r8 + shrq $9,%r8 + andq %rax,%r8 + movq %r8,104(%rdi) + shrdq $38,%r10,%r9 + andq %rax,%r9 + movq %r9,112(%rdi) + movq 120(%rsi),%r11 + movq %r10,%r9 + shrq $3,%r9 + andq %rax,%r9 + movq %r9,120(%rdi) + movq %r10,%r8 + shrq $32,%r8 + andq %rax,%r8 + movq %r8,128(%rdi) + shrdq $61,%r11,%r10 + andq %rax,%r10 + movq %r10,136(%rdi) + xorq %r8,%r8 + movq %r11,%r10 + shrq $26,%r10 + andq %rax,%r10 + movq %r10,144(%rdi) + shrdq $55,%r8,%r11 + andq %rax,%r11 + movq %r11,152(%rdi) + movq %r8,160(%rdi) + movq %r8,168(%rdi) + movq %r8,176(%rdi) + movq %r8,184(%rdi) + .byte 0xf3,0xc3 +.cfi_endproc +.size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx2 +.globl rsaz_1024_scatter5_avx2 +.type rsaz_1024_scatter5_avx2,@function +.align 32 +rsaz_1024_scatter5_avx2: +.cfi_startproc + vzeroupper + vmovdqu .Lscatter_permd(%rip),%ymm5 + shll $4,%edx + leaq (%rdi,%rdx,1),%rdi + movl $9,%eax + jmp .Loop_scatter_1024 + +.align 32 +.Loop_scatter_1024: + vmovdqu (%rsi),%ymm0 + leaq 32(%rsi),%rsi + vpermd %ymm0,%ymm5,%ymm0 + vmovdqu %xmm0,(%rdi) + leaq 512(%rdi),%rdi + decl %eax + jnz .Loop_scatter_1024 + + vzeroupper + .byte 0xf3,0xc3 +.cfi_endproc +.size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx2 + +.globl rsaz_1024_gather5_avx2 +.type rsaz_1024_gather5_avx2,@function +.align 32 +rsaz_1024_gather5_avx2: +.cfi_startproc + vzeroupper + movq %rsp,%r11 +.cfi_def_cfa_register %r11 + leaq -256(%rsp),%rsp + andq $-32,%rsp + leaq .Linc(%rip),%r10 + leaq -128(%rsp),%rax + + vmovd %edx,%xmm4 + vmovdqa (%r10),%ymm0 + vmovdqa 32(%r10),%ymm1 + vmovdqa 64(%r10),%ymm5 + vpbroadcastd %xmm4,%ymm4 + + vpaddd %ymm5,%ymm0,%ymm2 + vpcmpeqd %ymm4,%ymm0,%ymm0 + vpaddd %ymm5,%ymm1,%ymm3 + vpcmpeqd %ymm4,%ymm1,%ymm1 + vmovdqa %ymm0,0+128(%rax) + vpaddd %ymm5,%ymm2,%ymm0 + vpcmpeqd %ymm4,%ymm2,%ymm2 + vmovdqa %ymm1,32+128(%rax) + vpaddd %ymm5,%ymm3,%ymm1 + vpcmpeqd %ymm4,%ymm3,%ymm3 + vmovdqa %ymm2,64+128(%rax) + vpaddd %ymm5,%ymm0,%ymm2 + vpcmpeqd %ymm4,%ymm0,%ymm0 + vmovdqa %ymm3,96+128(%rax) + vpaddd %ymm5,%ymm1,%ymm3 + vpcmpeqd %ymm4,%ymm1,%ymm1 + vmovdqa %ymm0,128+128(%rax) + vpaddd %ymm5,%ymm2,%ymm8 + vpcmpeqd %ymm4,%ymm2,%ymm2 + vmovdqa %ymm1,160+128(%rax) + vpaddd %ymm5,%ymm3,%ymm9 + vpcmpeqd %ymm4,%ymm3,%ymm3 + vmovdqa %ymm2,192+128(%rax) + vpaddd %ymm5,%ymm8,%ymm10 + vpcmpeqd %ymm4,%ymm8,%ymm8 + vmovdqa %ymm3,224+128(%rax) + vpaddd %ymm5,%ymm9,%ymm11 + vpcmpeqd %ymm4,%ymm9,%ymm9 + vpaddd %ymm5,%ymm10,%ymm12 + vpcmpeqd %ymm4,%ymm10,%ymm10 + vpaddd %ymm5,%ymm11,%ymm13 + vpcmpeqd %ymm4,%ymm11,%ymm11 + vpaddd %ymm5,%ymm12,%ymm14 + vpcmpeqd %ymm4,%ymm12,%ymm12 + vpaddd %ymm5,%ymm13,%ymm15 + vpcmpeqd %ymm4,%ymm13,%ymm13 + vpcmpeqd %ymm4,%ymm14,%ymm14 + vpcmpeqd %ymm4,%ymm15,%ymm15 + + vmovdqa -32(%r10),%ymm7 + leaq 128(%rsi),%rsi + movl $9,%edx + +.Loop_gather_1024: + vmovdqa 0-128(%rsi),%ymm0 + vmovdqa 32-128(%rsi),%ymm1 + vmovdqa 64-128(%rsi),%ymm2 + vmovdqa 96-128(%rsi),%ymm3 + vpand 0+128(%rax),%ymm0,%ymm0 + vpand 32+128(%rax),%ymm1,%ymm1 + vpand 64+128(%rax),%ymm2,%ymm2 + vpor %ymm0,%ymm1,%ymm4 + vpand 96+128(%rax),%ymm3,%ymm3 + vmovdqa 128-128(%rsi),%ymm0 + vmovdqa 160-128(%rsi),%ymm1 + vpor %ymm2,%ymm3,%ymm5 + vmovdqa 192-128(%rsi),%ymm2 + vmovdqa 224-128(%rsi),%ymm3 + vpand 128+128(%rax),%ymm0,%ymm0 + vpand 160+128(%rax),%ymm1,%ymm1 + vpand 192+128(%rax),%ymm2,%ymm2 + vpor %ymm0,%ymm4,%ymm4 + vpand 224+128(%rax),%ymm3,%ymm3 + vpand 256-128(%rsi),%ymm8,%ymm0 + vpor %ymm1,%ymm5,%ymm5 + vpand 288-128(%rsi),%ymm9,%ymm1 + vpor %ymm2,%ymm4,%ymm4 + vpand 320-128(%rsi),%ymm10,%ymm2 + vpor %ymm3,%ymm5,%ymm5 + vpand 352-128(%rsi),%ymm11,%ymm3 + vpor %ymm0,%ymm4,%ymm4 + vpand 384-128(%rsi),%ymm12,%ymm0 + vpor %ymm1,%ymm5,%ymm5 + vpand 416-128(%rsi),%ymm13,%ymm1 + vpor %ymm2,%ymm4,%ymm4 + vpand 448-128(%rsi),%ymm14,%ymm2 + vpor %ymm3,%ymm5,%ymm5 + vpand 480-128(%rsi),%ymm15,%ymm3 + leaq 512(%rsi),%rsi + vpor %ymm0,%ymm4,%ymm4 + vpor %ymm1,%ymm5,%ymm5 + vpor %ymm2,%ymm4,%ymm4 + vpor %ymm3,%ymm5,%ymm5 + + vpor %ymm5,%ymm4,%ymm4 + vextracti128 $1,%ymm4,%xmm5 + vpor %xmm4,%xmm5,%xmm5 + vpermd %ymm5,%ymm7,%ymm5 + vmovdqu %ymm5,(%rdi) + leaq 32(%rdi),%rdi + decl %edx + jnz .Loop_gather_1024 + + vpxor %ymm0,%ymm0,%ymm0 + vmovdqu %ymm0,(%rdi) + vzeroupper + leaq (%r11),%rsp +.cfi_def_cfa_register %rsp + .byte 0xf3,0xc3 +.cfi_endproc +.LSEH_end_rsaz_1024_gather5: +.size rsaz_1024_gather5_avx2,.-rsaz_1024_gather5_avx2 + +.globl rsaz_avx2_eligible +.type rsaz_avx2_eligible,@function +.align 32 +rsaz_avx2_eligible: + movl OPENSSL_ia32cap_P+8(%rip),%eax + movl $524544,%ecx + movl $0,%edx + andl %eax,%ecx + cmpl $524544,%ecx + cmovel %edx,%eax + andl $32,%eax + shrl $5,%eax + .byte 0xf3,0xc3 +.size rsaz_avx2_eligible,.-rsaz_avx2_eligible + +.align 64 +.Land_mask: +.quad 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff +.Lscatter_permd: +.long 0,2,4,6,7,7,7,7 +.Lgather_permd: +.long 0,7,1,7,2,7,3,7 +.Linc: +.long 0,0,0,0, 1,1,1,1 +.long 2,2,2,2, 3,3,3,3 +.long 4,4,4,4, 4,4,4,4 +.align 64 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/bn/rsaz-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/bn/rsaz-x86_64.s new file mode 100644 index 0000000..d5025b2 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/bn/rsaz-x86_64.s @@ -0,0 +1,2015 @@ +.text + + + +.globl rsaz_512_sqr +.type rsaz_512_sqr,@function +.align 32 +rsaz_512_sqr: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + + subq $128+24,%rsp +.cfi_adjust_cfa_offset 128+24 +.Lsqr_body: +.byte 102,72,15,110,202 + movq (%rsi),%rdx + movq 8(%rsi),%rax + movq %rcx,128(%rsp) + movl $0x80100,%r11d + andl OPENSSL_ia32cap_P+8(%rip),%r11d + cmpl $0x80100,%r11d + je .Loop_sqrx + jmp .Loop_sqr + +.align 32 +.Loop_sqr: + movl %r8d,128+8(%rsp) + + movq %rdx,%rbx + movq %rax,%rbp + mulq %rdx + movq %rax,%r8 + movq 16(%rsi),%rax + movq %rdx,%r9 + + mulq %rbx + addq %rax,%r9 + movq 24(%rsi),%rax + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r10 + movq 32(%rsi),%rax + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r11 + movq 40(%rsi),%rax + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r12 + movq 48(%rsi),%rax + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r13 + movq 56(%rsi),%rax + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + addq %rax,%r14 + movq %rbx,%rax + adcq $0,%rdx + + xorq %rcx,%rcx + addq %r8,%r8 + movq %rdx,%r15 + adcq $0,%rcx + + mulq %rax + addq %r8,%rdx + adcq $0,%rcx + + movq %rax,(%rsp) + movq %rdx,8(%rsp) + + + movq 16(%rsi),%rax + mulq %rbp + addq %rax,%r10 + movq 24(%rsi),%rax + movq %rdx,%rbx + adcq $0,%rbx + + mulq %rbp + addq %rax,%r11 + movq 32(%rsi),%rax + adcq $0,%rdx + addq %rbx,%r11 + movq %rdx,%rbx + adcq $0,%rbx + + mulq %rbp + addq %rax,%r12 + movq 40(%rsi),%rax + adcq $0,%rdx + addq %rbx,%r12 + movq %rdx,%rbx + adcq $0,%rbx + + mulq %rbp + addq %rax,%r13 + movq 48(%rsi),%rax + adcq $0,%rdx + addq %rbx,%r13 + movq %rdx,%rbx + adcq $0,%rbx + + mulq %rbp + addq %rax,%r14 + movq 56(%rsi),%rax + adcq $0,%rdx + addq %rbx,%r14 + movq %rdx,%rbx + adcq $0,%rbx + + mulq %rbp + addq %rax,%r15 + movq %rbp,%rax + adcq $0,%rdx + addq %rbx,%r15 + adcq $0,%rdx + + xorq %rbx,%rbx + addq %r9,%r9 + movq %rdx,%r8 + adcq %r10,%r10 + adcq $0,%rbx + + mulq %rax + + addq %rcx,%rax + movq 16(%rsi),%rbp + addq %rax,%r9 + movq 24(%rsi),%rax + adcq %rdx,%r10 + adcq $0,%rbx + + movq %r9,16(%rsp) + movq %r10,24(%rsp) + + + mulq %rbp + addq %rax,%r12 + movq 32(%rsi),%rax + movq %rdx,%rcx + adcq $0,%rcx + + mulq %rbp + addq %rax,%r13 + movq 40(%rsi),%rax + adcq $0,%rdx + addq %rcx,%r13 + movq %rdx,%rcx + adcq $0,%rcx + + mulq %rbp + addq %rax,%r14 + movq 48(%rsi),%rax + adcq $0,%rdx + addq %rcx,%r14 + movq %rdx,%rcx + adcq $0,%rcx + + mulq %rbp + addq %rax,%r15 + movq 56(%rsi),%rax + adcq $0,%rdx + addq %rcx,%r15 + movq %rdx,%rcx + adcq $0,%rcx + + mulq %rbp + addq %rax,%r8 + movq %rbp,%rax + adcq $0,%rdx + addq %rcx,%r8 + adcq $0,%rdx + + xorq %rcx,%rcx + addq %r11,%r11 + movq %rdx,%r9 + adcq %r12,%r12 + adcq $0,%rcx + + mulq %rax + + addq %rbx,%rax + movq 24(%rsi),%r10 + addq %rax,%r11 + movq 32(%rsi),%rax + adcq %rdx,%r12 + adcq $0,%rcx + + movq %r11,32(%rsp) + movq %r12,40(%rsp) + + + movq %rax,%r11 + mulq %r10 + addq %rax,%r14 + movq 40(%rsi),%rax + movq %rdx,%rbx + adcq $0,%rbx + + movq %rax,%r12 + mulq %r10 + addq %rax,%r15 + movq 48(%rsi),%rax + adcq $0,%rdx + addq %rbx,%r15 + movq %rdx,%rbx + adcq $0,%rbx + + movq %rax,%rbp + mulq %r10 + addq %rax,%r8 + movq 56(%rsi),%rax + adcq $0,%rdx + addq %rbx,%r8 + movq %rdx,%rbx + adcq $0,%rbx + + mulq %r10 + addq %rax,%r9 + movq %r10,%rax + adcq $0,%rdx + addq %rbx,%r9 + adcq $0,%rdx + + xorq %rbx,%rbx + addq %r13,%r13 + movq %rdx,%r10 + adcq %r14,%r14 + adcq $0,%rbx + + mulq %rax + + addq %rcx,%rax + addq %rax,%r13 + movq %r12,%rax + adcq %rdx,%r14 + adcq $0,%rbx + + movq %r13,48(%rsp) + movq %r14,56(%rsp) + + + mulq %r11 + addq %rax,%r8 + movq %rbp,%rax + movq %rdx,%rcx + adcq $0,%rcx + + mulq %r11 + addq %rax,%r9 + movq 56(%rsi),%rax + adcq $0,%rdx + addq %rcx,%r9 + movq %rdx,%rcx + adcq $0,%rcx + + movq %rax,%r14 + mulq %r11 + addq %rax,%r10 + movq %r11,%rax + adcq $0,%rdx + addq %rcx,%r10 + adcq $0,%rdx + + xorq %rcx,%rcx + addq %r15,%r15 + movq %rdx,%r11 + adcq %r8,%r8 + adcq $0,%rcx + + mulq %rax + + addq %rbx,%rax + addq %rax,%r15 + movq %rbp,%rax + adcq %rdx,%r8 + adcq $0,%rcx + + movq %r15,64(%rsp) + movq %r8,72(%rsp) + + + mulq %r12 + addq %rax,%r10 + movq %r14,%rax + movq %rdx,%rbx + adcq $0,%rbx + + mulq %r12 + addq %rax,%r11 + movq %r12,%rax + adcq $0,%rdx + addq %rbx,%r11 + adcq $0,%rdx + + xorq %rbx,%rbx + addq %r9,%r9 + movq %rdx,%r12 + adcq %r10,%r10 + adcq $0,%rbx + + mulq %rax + + addq %rcx,%rax + addq %rax,%r9 + movq %r14,%rax + adcq %rdx,%r10 + adcq $0,%rbx + + movq %r9,80(%rsp) + movq %r10,88(%rsp) + + + mulq %rbp + addq %rax,%r12 + movq %rbp,%rax + adcq $0,%rdx + + xorq %rcx,%rcx + addq %r11,%r11 + movq %rdx,%r13 + adcq %r12,%r12 + adcq $0,%rcx + + mulq %rax + + addq %rbx,%rax + addq %rax,%r11 + movq %r14,%rax + adcq %rdx,%r12 + adcq $0,%rcx + + movq %r11,96(%rsp) + movq %r12,104(%rsp) + + + xorq %rbx,%rbx + addq %r13,%r13 + adcq $0,%rbx + + mulq %rax + + addq %rcx,%rax + addq %r13,%rax + adcq %rbx,%rdx + + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 +.byte 102,72,15,126,205 + + movq %rax,112(%rsp) + movq %rdx,120(%rsp) + + call __rsaz_512_reduce + + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + adcq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + sbbq %rcx,%rcx + + call __rsaz_512_subtract + + movq %r8,%rdx + movq %r9,%rax + movl 128+8(%rsp),%r8d + movq %rdi,%rsi + + decl %r8d + jnz .Loop_sqr + jmp .Lsqr_tail + +.align 32 +.Loop_sqrx: + movl %r8d,128+8(%rsp) +.byte 102,72,15,110,199 + + mulxq %rax,%r8,%r9 + movq %rax,%rbx + + mulxq 16(%rsi),%rcx,%r10 + xorq %rbp,%rbp + + mulxq 24(%rsi),%rax,%r11 + adcxq %rcx,%r9 + +.byte 0xc4,0x62,0xf3,0xf6,0xa6,0x20,0x00,0x00,0x00 + adcxq %rax,%r10 + +.byte 0xc4,0x62,0xfb,0xf6,0xae,0x28,0x00,0x00,0x00 + adcxq %rcx,%r11 + + mulxq 48(%rsi),%rcx,%r14 + adcxq %rax,%r12 + adcxq %rcx,%r13 + + mulxq 56(%rsi),%rax,%r15 + adcxq %rax,%r14 + adcxq %rbp,%r15 + + mulxq %rdx,%rax,%rdi + movq %rbx,%rdx + xorq %rcx,%rcx + adoxq %r8,%r8 + adcxq %rdi,%r8 + adoxq %rbp,%rcx + adcxq %rbp,%rcx + + movq %rax,(%rsp) + movq %r8,8(%rsp) + + +.byte 0xc4,0xe2,0xfb,0xf6,0x9e,0x10,0x00,0x00,0x00 + adoxq %rax,%r10 + adcxq %rbx,%r11 + + mulxq 24(%rsi),%rdi,%r8 + adoxq %rdi,%r11 +.byte 0x66 + adcxq %r8,%r12 + + mulxq 32(%rsi),%rax,%rbx + adoxq %rax,%r12 + adcxq %rbx,%r13 + + mulxq 40(%rsi),%rdi,%r8 + adoxq %rdi,%r13 + adcxq %r8,%r14 + +.byte 0xc4,0xe2,0xfb,0xf6,0x9e,0x30,0x00,0x00,0x00 + adoxq %rax,%r14 + adcxq %rbx,%r15 + +.byte 0xc4,0x62,0xc3,0xf6,0x86,0x38,0x00,0x00,0x00 + adoxq %rdi,%r15 + adcxq %rbp,%r8 + mulxq %rdx,%rax,%rdi + adoxq %rbp,%r8 +.byte 0x48,0x8b,0x96,0x10,0x00,0x00,0x00 + + xorq %rbx,%rbx + adoxq %r9,%r9 + + adcxq %rcx,%rax + adoxq %r10,%r10 + adcxq %rax,%r9 + adoxq %rbp,%rbx + adcxq %rdi,%r10 + adcxq %rbp,%rbx + + movq %r9,16(%rsp) +.byte 0x4c,0x89,0x94,0x24,0x18,0x00,0x00,0x00 + + + mulxq 24(%rsi),%rdi,%r9 + adoxq %rdi,%r12 + adcxq %r9,%r13 + + mulxq 32(%rsi),%rax,%rcx + adoxq %rax,%r13 + adcxq %rcx,%r14 + +.byte 0xc4,0x62,0xc3,0xf6,0x8e,0x28,0x00,0x00,0x00 + adoxq %rdi,%r14 + adcxq %r9,%r15 + +.byte 0xc4,0xe2,0xfb,0xf6,0x8e,0x30,0x00,0x00,0x00 + adoxq %rax,%r15 + adcxq %rcx,%r8 + + mulxq 56(%rsi),%rdi,%r9 + adoxq %rdi,%r8 + adcxq %rbp,%r9 + mulxq %rdx,%rax,%rdi + adoxq %rbp,%r9 + movq 24(%rsi),%rdx + + xorq %rcx,%rcx + adoxq %r11,%r11 + + adcxq %rbx,%rax + adoxq %r12,%r12 + adcxq %rax,%r11 + adoxq %rbp,%rcx + adcxq %rdi,%r12 + adcxq %rbp,%rcx + + movq %r11,32(%rsp) + movq %r12,40(%rsp) + + + mulxq 32(%rsi),%rax,%rbx + adoxq %rax,%r14 + adcxq %rbx,%r15 + + mulxq 40(%rsi),%rdi,%r10 + adoxq %rdi,%r15 + adcxq %r10,%r8 + + mulxq 48(%rsi),%rax,%rbx + adoxq %rax,%r8 + adcxq %rbx,%r9 + + mulxq 56(%rsi),%rdi,%r10 + adoxq %rdi,%r9 + adcxq %rbp,%r10 + mulxq %rdx,%rax,%rdi + adoxq %rbp,%r10 + movq 32(%rsi),%rdx + + xorq %rbx,%rbx + adoxq %r13,%r13 + + adcxq %rcx,%rax + adoxq %r14,%r14 + adcxq %rax,%r13 + adoxq %rbp,%rbx + adcxq %rdi,%r14 + adcxq %rbp,%rbx + + movq %r13,48(%rsp) + movq %r14,56(%rsp) + + + mulxq 40(%rsi),%rdi,%r11 + adoxq %rdi,%r8 + adcxq %r11,%r9 + + mulxq 48(%rsi),%rax,%rcx + adoxq %rax,%r9 + adcxq %rcx,%r10 + + mulxq 56(%rsi),%rdi,%r11 + adoxq %rdi,%r10 + adcxq %rbp,%r11 + mulxq %rdx,%rax,%rdi + movq 40(%rsi),%rdx + adoxq %rbp,%r11 + + xorq %rcx,%rcx + adoxq %r15,%r15 + + adcxq %rbx,%rax + adoxq %r8,%r8 + adcxq %rax,%r15 + adoxq %rbp,%rcx + adcxq %rdi,%r8 + adcxq %rbp,%rcx + + movq %r15,64(%rsp) + movq %r8,72(%rsp) + + +.byte 0xc4,0xe2,0xfb,0xf6,0x9e,0x30,0x00,0x00,0x00 + adoxq %rax,%r10 + adcxq %rbx,%r11 + +.byte 0xc4,0x62,0xc3,0xf6,0xa6,0x38,0x00,0x00,0x00 + adoxq %rdi,%r11 + adcxq %rbp,%r12 + mulxq %rdx,%rax,%rdi + adoxq %rbp,%r12 + movq 48(%rsi),%rdx + + xorq %rbx,%rbx + adoxq %r9,%r9 + + adcxq %rcx,%rax + adoxq %r10,%r10 + adcxq %rax,%r9 + adcxq %rdi,%r10 + adoxq %rbp,%rbx + adcxq %rbp,%rbx + + movq %r9,80(%rsp) + movq %r10,88(%rsp) + + +.byte 0xc4,0x62,0xfb,0xf6,0xae,0x38,0x00,0x00,0x00 + adoxq %rax,%r12 + adoxq %rbp,%r13 + + mulxq %rdx,%rax,%rdi + xorq %rcx,%rcx + movq 56(%rsi),%rdx + adoxq %r11,%r11 + + adcxq %rbx,%rax + adoxq %r12,%r12 + adcxq %rax,%r11 + adoxq %rbp,%rcx + adcxq %rdi,%r12 + adcxq %rbp,%rcx + +.byte 0x4c,0x89,0x9c,0x24,0x60,0x00,0x00,0x00 +.byte 0x4c,0x89,0xa4,0x24,0x68,0x00,0x00,0x00 + + + mulxq %rdx,%rax,%rdx + xorq %rbx,%rbx + adoxq %r13,%r13 + + adcxq %rcx,%rax + adoxq %rbp,%rbx + adcxq %r13,%rax + adcxq %rdx,%rbx + +.byte 102,72,15,126,199 +.byte 102,72,15,126,205 + + movq 128(%rsp),%rdx + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + movq %rax,112(%rsp) + movq %rbx,120(%rsp) + + call __rsaz_512_reducex + + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + adcq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + sbbq %rcx,%rcx + + call __rsaz_512_subtract + + movq %r8,%rdx + movq %r9,%rax + movl 128+8(%rsp),%r8d + movq %rdi,%rsi + + decl %r8d + jnz .Loop_sqrx + +.Lsqr_tail: + + leaq 128+24+48(%rsp),%rax +.cfi_def_cfa %rax,8 + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lsqr_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size rsaz_512_sqr,.-rsaz_512_sqr +.globl rsaz_512_mul +.type rsaz_512_mul,@function +.align 32 +rsaz_512_mul: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + + subq $128+24,%rsp +.cfi_adjust_cfa_offset 128+24 +.Lmul_body: +.byte 102,72,15,110,199 +.byte 102,72,15,110,201 + movq %r8,128(%rsp) + movl $0x80100,%r11d + andl OPENSSL_ia32cap_P+8(%rip),%r11d + cmpl $0x80100,%r11d + je .Lmulx + movq (%rdx),%rbx + movq %rdx,%rbp + call __rsaz_512_mul + +.byte 102,72,15,126,199 +.byte 102,72,15,126,205 + + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + call __rsaz_512_reduce + jmp .Lmul_tail + +.align 32 +.Lmulx: + movq %rdx,%rbp + movq (%rdx),%rdx + call __rsaz_512_mulx + +.byte 102,72,15,126,199 +.byte 102,72,15,126,205 + + movq 128(%rsp),%rdx + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + call __rsaz_512_reducex +.Lmul_tail: + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + adcq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + sbbq %rcx,%rcx + + call __rsaz_512_subtract + + leaq 128+24+48(%rsp),%rax +.cfi_def_cfa %rax,8 + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lmul_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size rsaz_512_mul,.-rsaz_512_mul +.globl rsaz_512_mul_gather4 +.type rsaz_512_mul_gather4,@function +.align 32 +rsaz_512_mul_gather4: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + + subq $152,%rsp +.cfi_adjust_cfa_offset 152 +.Lmul_gather4_body: + movd %r9d,%xmm8 + movdqa .Linc+16(%rip),%xmm1 + movdqa .Linc(%rip),%xmm0 + + pshufd $0,%xmm8,%xmm8 + movdqa %xmm1,%xmm7 + movdqa %xmm1,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm8,%xmm0 + movdqa %xmm7,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm8,%xmm1 + movdqa %xmm7,%xmm4 + paddd %xmm2,%xmm3 + pcmpeqd %xmm8,%xmm2 + movdqa %xmm7,%xmm5 + paddd %xmm3,%xmm4 + pcmpeqd %xmm8,%xmm3 + movdqa %xmm7,%xmm6 + paddd %xmm4,%xmm5 + pcmpeqd %xmm8,%xmm4 + paddd %xmm5,%xmm6 + pcmpeqd %xmm8,%xmm5 + paddd %xmm6,%xmm7 + pcmpeqd %xmm8,%xmm6 + pcmpeqd %xmm8,%xmm7 + + movdqa 0(%rdx),%xmm8 + movdqa 16(%rdx),%xmm9 + movdqa 32(%rdx),%xmm10 + movdqa 48(%rdx),%xmm11 + pand %xmm0,%xmm8 + movdqa 64(%rdx),%xmm12 + pand %xmm1,%xmm9 + movdqa 80(%rdx),%xmm13 + pand %xmm2,%xmm10 + movdqa 96(%rdx),%xmm14 + pand %xmm3,%xmm11 + movdqa 112(%rdx),%xmm15 + leaq 128(%rdx),%rbp + pand %xmm4,%xmm12 + pand %xmm5,%xmm13 + pand %xmm6,%xmm14 + pand %xmm7,%xmm15 + por %xmm10,%xmm8 + por %xmm11,%xmm9 + por %xmm12,%xmm8 + por %xmm13,%xmm9 + por %xmm14,%xmm8 + por %xmm15,%xmm9 + + por %xmm9,%xmm8 + pshufd $0x4e,%xmm8,%xmm9 + por %xmm9,%xmm8 + movl $0x80100,%r11d + andl OPENSSL_ia32cap_P+8(%rip),%r11d + cmpl $0x80100,%r11d + je .Lmulx_gather +.byte 102,76,15,126,195 + + movq %r8,128(%rsp) + movq %rdi,128+8(%rsp) + movq %rcx,128+16(%rsp) + + movq (%rsi),%rax + movq 8(%rsi),%rcx + mulq %rbx + movq %rax,(%rsp) + movq %rcx,%rax + movq %rdx,%r8 + + mulq %rbx + addq %rax,%r8 + movq 16(%rsi),%rax + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r9 + movq 24(%rsi),%rax + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r10 + movq 32(%rsi),%rax + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r11 + movq 40(%rsi),%rax + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r12 + movq 48(%rsi),%rax + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r13 + movq 56(%rsi),%rax + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + addq %rax,%r14 + movq (%rsi),%rax + movq %rdx,%r15 + adcq $0,%r15 + + leaq 8(%rsp),%rdi + movl $7,%ecx + jmp .Loop_mul_gather + +.align 32 +.Loop_mul_gather: + movdqa 0(%rbp),%xmm8 + movdqa 16(%rbp),%xmm9 + movdqa 32(%rbp),%xmm10 + movdqa 48(%rbp),%xmm11 + pand %xmm0,%xmm8 + movdqa 64(%rbp),%xmm12 + pand %xmm1,%xmm9 + movdqa 80(%rbp),%xmm13 + pand %xmm2,%xmm10 + movdqa 96(%rbp),%xmm14 + pand %xmm3,%xmm11 + movdqa 112(%rbp),%xmm15 + leaq 128(%rbp),%rbp + pand %xmm4,%xmm12 + pand %xmm5,%xmm13 + pand %xmm6,%xmm14 + pand %xmm7,%xmm15 + por %xmm10,%xmm8 + por %xmm11,%xmm9 + por %xmm12,%xmm8 + por %xmm13,%xmm9 + por %xmm14,%xmm8 + por %xmm15,%xmm9 + + por %xmm9,%xmm8 + pshufd $0x4e,%xmm8,%xmm9 + por %xmm9,%xmm8 +.byte 102,76,15,126,195 + + mulq %rbx + addq %rax,%r8 + movq 8(%rsi),%rax + movq %r8,(%rdi) + movq %rdx,%r8 + adcq $0,%r8 + + mulq %rbx + addq %rax,%r9 + movq 16(%rsi),%rax + adcq $0,%rdx + addq %r9,%r8 + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r10 + movq 24(%rsi),%rax + adcq $0,%rdx + addq %r10,%r9 + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r11 + movq 32(%rsi),%rax + adcq $0,%rdx + addq %r11,%r10 + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r12 + movq 40(%rsi),%rax + adcq $0,%rdx + addq %r12,%r11 + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r13 + movq 48(%rsi),%rax + adcq $0,%rdx + addq %r13,%r12 + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r14 + movq 56(%rsi),%rax + adcq $0,%rdx + addq %r14,%r13 + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + addq %rax,%r15 + movq (%rsi),%rax + adcq $0,%rdx + addq %r15,%r14 + movq %rdx,%r15 + adcq $0,%r15 + + leaq 8(%rdi),%rdi + + decl %ecx + jnz .Loop_mul_gather + + movq %r8,(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + movq 128+8(%rsp),%rdi + movq 128+16(%rsp),%rbp + + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + call __rsaz_512_reduce + jmp .Lmul_gather_tail + +.align 32 +.Lmulx_gather: +.byte 102,76,15,126,194 + + movq %r8,128(%rsp) + movq %rdi,128+8(%rsp) + movq %rcx,128+16(%rsp) + + mulxq (%rsi),%rbx,%r8 + movq %rbx,(%rsp) + xorl %edi,%edi + + mulxq 8(%rsi),%rax,%r9 + + mulxq 16(%rsi),%rbx,%r10 + adcxq %rax,%r8 + + mulxq 24(%rsi),%rax,%r11 + adcxq %rbx,%r9 + + mulxq 32(%rsi),%rbx,%r12 + adcxq %rax,%r10 + + mulxq 40(%rsi),%rax,%r13 + adcxq %rbx,%r11 + + mulxq 48(%rsi),%rbx,%r14 + adcxq %rax,%r12 + + mulxq 56(%rsi),%rax,%r15 + adcxq %rbx,%r13 + adcxq %rax,%r14 +.byte 0x67 + movq %r8,%rbx + adcxq %rdi,%r15 + + movq $-7,%rcx + jmp .Loop_mulx_gather + +.align 32 +.Loop_mulx_gather: + movdqa 0(%rbp),%xmm8 + movdqa 16(%rbp),%xmm9 + movdqa 32(%rbp),%xmm10 + movdqa 48(%rbp),%xmm11 + pand %xmm0,%xmm8 + movdqa 64(%rbp),%xmm12 + pand %xmm1,%xmm9 + movdqa 80(%rbp),%xmm13 + pand %xmm2,%xmm10 + movdqa 96(%rbp),%xmm14 + pand %xmm3,%xmm11 + movdqa 112(%rbp),%xmm15 + leaq 128(%rbp),%rbp + pand %xmm4,%xmm12 + pand %xmm5,%xmm13 + pand %xmm6,%xmm14 + pand %xmm7,%xmm15 + por %xmm10,%xmm8 + por %xmm11,%xmm9 + por %xmm12,%xmm8 + por %xmm13,%xmm9 + por %xmm14,%xmm8 + por %xmm15,%xmm9 + + por %xmm9,%xmm8 + pshufd $0x4e,%xmm8,%xmm9 + por %xmm9,%xmm8 +.byte 102,76,15,126,194 + +.byte 0xc4,0x62,0xfb,0xf6,0x86,0x00,0x00,0x00,0x00 + adcxq %rax,%rbx + adoxq %r9,%r8 + + mulxq 8(%rsi),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rsi),%rax,%r10 + adcxq %rax,%r9 + adoxq %r11,%r10 + +.byte 0xc4,0x62,0xfb,0xf6,0x9e,0x18,0x00,0x00,0x00 + adcxq %rax,%r10 + adoxq %r12,%r11 + + mulxq 32(%rsi),%rax,%r12 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rsi),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + +.byte 0xc4,0x62,0xfb,0xf6,0xb6,0x30,0x00,0x00,0x00 + adcxq %rax,%r13 +.byte 0x67 + adoxq %r15,%r14 + + mulxq 56(%rsi),%rax,%r15 + movq %rbx,64(%rsp,%rcx,8) + adcxq %rax,%r14 + adoxq %rdi,%r15 + movq %r8,%rbx + adcxq %rdi,%r15 + + incq %rcx + jnz .Loop_mulx_gather + + movq %r8,64(%rsp) + movq %r9,64+8(%rsp) + movq %r10,64+16(%rsp) + movq %r11,64+24(%rsp) + movq %r12,64+32(%rsp) + movq %r13,64+40(%rsp) + movq %r14,64+48(%rsp) + movq %r15,64+56(%rsp) + + movq 128(%rsp),%rdx + movq 128+8(%rsp),%rdi + movq 128+16(%rsp),%rbp + + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + call __rsaz_512_reducex + +.Lmul_gather_tail: + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + adcq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + sbbq %rcx,%rcx + + call __rsaz_512_subtract + + leaq 128+24+48(%rsp),%rax +.cfi_def_cfa %rax,8 + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lmul_gather4_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size rsaz_512_mul_gather4,.-rsaz_512_mul_gather4 +.globl rsaz_512_mul_scatter4 +.type rsaz_512_mul_scatter4,@function +.align 32 +rsaz_512_mul_scatter4: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + + movl %r9d,%r9d + subq $128+24,%rsp +.cfi_adjust_cfa_offset 128+24 +.Lmul_scatter4_body: + leaq (%r8,%r9,8),%r8 +.byte 102,72,15,110,199 +.byte 102,72,15,110,202 +.byte 102,73,15,110,208 + movq %rcx,128(%rsp) + + movq %rdi,%rbp + movl $0x80100,%r11d + andl OPENSSL_ia32cap_P+8(%rip),%r11d + cmpl $0x80100,%r11d + je .Lmulx_scatter + movq (%rdi),%rbx + call __rsaz_512_mul + +.byte 102,72,15,126,199 +.byte 102,72,15,126,205 + + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + call __rsaz_512_reduce + jmp .Lmul_scatter_tail + +.align 32 +.Lmulx_scatter: + movq (%rdi),%rdx + call __rsaz_512_mulx + +.byte 102,72,15,126,199 +.byte 102,72,15,126,205 + + movq 128(%rsp),%rdx + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + call __rsaz_512_reducex + +.Lmul_scatter_tail: + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + adcq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 +.byte 102,72,15,126,214 + sbbq %rcx,%rcx + + call __rsaz_512_subtract + + movq %r8,0(%rsi) + movq %r9,128(%rsi) + movq %r10,256(%rsi) + movq %r11,384(%rsi) + movq %r12,512(%rsi) + movq %r13,640(%rsi) + movq %r14,768(%rsi) + movq %r15,896(%rsi) + + leaq 128+24+48(%rsp),%rax +.cfi_def_cfa %rax,8 + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lmul_scatter4_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size rsaz_512_mul_scatter4,.-rsaz_512_mul_scatter4 +.globl rsaz_512_mul_by_one +.type rsaz_512_mul_by_one,@function +.align 32 +rsaz_512_mul_by_one: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + + subq $128+24,%rsp +.cfi_adjust_cfa_offset 128+24 +.Lmul_by_one_body: + movl OPENSSL_ia32cap_P+8(%rip),%eax + movq %rdx,%rbp + movq %rcx,128(%rsp) + + movq (%rsi),%r8 + pxor %xmm0,%xmm0 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + movq 32(%rsi),%r12 + movq 40(%rsi),%r13 + movq 48(%rsi),%r14 + movq 56(%rsi),%r15 + + movdqa %xmm0,(%rsp) + movdqa %xmm0,16(%rsp) + movdqa %xmm0,32(%rsp) + movdqa %xmm0,48(%rsp) + movdqa %xmm0,64(%rsp) + movdqa %xmm0,80(%rsp) + movdqa %xmm0,96(%rsp) + andl $0x80100,%eax + cmpl $0x80100,%eax + je .Lby_one_callx + call __rsaz_512_reduce + jmp .Lby_one_tail +.align 32 +.Lby_one_callx: + movq 128(%rsp),%rdx + call __rsaz_512_reducex +.Lby_one_tail: + movq %r8,(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + leaq 128+24+48(%rsp),%rax +.cfi_def_cfa %rax,8 + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lmul_by_one_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size rsaz_512_mul_by_one,.-rsaz_512_mul_by_one +.type __rsaz_512_reduce,@function +.align 32 +__rsaz_512_reduce: +.cfi_startproc + movq %r8,%rbx + imulq 128+8(%rsp),%rbx + movq 0(%rbp),%rax + movl $8,%ecx + jmp .Lreduction_loop + +.align 32 +.Lreduction_loop: + mulq %rbx + movq 8(%rbp),%rax + negq %r8 + movq %rdx,%r8 + adcq $0,%r8 + + mulq %rbx + addq %rax,%r9 + movq 16(%rbp),%rax + adcq $0,%rdx + addq %r9,%r8 + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r10 + movq 24(%rbp),%rax + adcq $0,%rdx + addq %r10,%r9 + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r11 + movq 32(%rbp),%rax + adcq $0,%rdx + addq %r11,%r10 + movq 128+8(%rsp),%rsi + + + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbx + addq %rax,%r12 + movq 40(%rbp),%rax + adcq $0,%rdx + imulq %r8,%rsi + addq %r12,%r11 + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r13 + movq 48(%rbp),%rax + adcq $0,%rdx + addq %r13,%r12 + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r14 + movq 56(%rbp),%rax + adcq $0,%rdx + addq %r14,%r13 + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + movq %rsi,%rbx + addq %rax,%r15 + movq 0(%rbp),%rax + adcq $0,%rdx + addq %r15,%r14 + movq %rdx,%r15 + adcq $0,%r15 + + decl %ecx + jne .Lreduction_loop + + .byte 0xf3,0xc3 +.cfi_endproc +.size __rsaz_512_reduce,.-__rsaz_512_reduce +.type __rsaz_512_reducex,@function +.align 32 +__rsaz_512_reducex: +.cfi_startproc + + imulq %r8,%rdx + xorq %rsi,%rsi + movl $8,%ecx + jmp .Lreduction_loopx + +.align 32 +.Lreduction_loopx: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rbx,%rax + adoxq %r9,%r8 + + mulxq 8(%rbp),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rbx,%r10 + adcxq %rbx,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rbx,%r11 + adcxq %rbx,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x00 + movq %rdx,%rax + movq %r8,%rdx + adcxq %rbx,%r11 + adoxq %r13,%r12 + + mulxq 128+8(%rsp),%rbx,%rdx + movq %rax,%rdx + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + +.byte 0xc4,0x62,0xfb,0xf6,0xb5,0x30,0x00,0x00,0x00 + adcxq %rax,%r13 + adoxq %r15,%r14 + + mulxq 56(%rbp),%rax,%r15 + movq %rbx,%rdx + adcxq %rax,%r14 + adoxq %rsi,%r15 + adcxq %rsi,%r15 + + decl %ecx + jne .Lreduction_loopx + + .byte 0xf3,0xc3 +.cfi_endproc +.size __rsaz_512_reducex,.-__rsaz_512_reducex +.type __rsaz_512_subtract,@function +.align 32 +__rsaz_512_subtract: +.cfi_startproc + movq %r8,(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + movq 0(%rbp),%r8 + movq 8(%rbp),%r9 + negq %r8 + notq %r9 + andq %rcx,%r8 + movq 16(%rbp),%r10 + andq %rcx,%r9 + notq %r10 + movq 24(%rbp),%r11 + andq %rcx,%r10 + notq %r11 + movq 32(%rbp),%r12 + andq %rcx,%r11 + notq %r12 + movq 40(%rbp),%r13 + andq %rcx,%r12 + notq %r13 + movq 48(%rbp),%r14 + andq %rcx,%r13 + notq %r14 + movq 56(%rbp),%r15 + andq %rcx,%r14 + notq %r15 + andq %rcx,%r15 + + addq (%rdi),%r8 + adcq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + + movq %r8,(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __rsaz_512_subtract,.-__rsaz_512_subtract +.type __rsaz_512_mul,@function +.align 32 +__rsaz_512_mul: +.cfi_startproc + leaq 8(%rsp),%rdi + + movq (%rsi),%rax + mulq %rbx + movq %rax,(%rdi) + movq 8(%rsi),%rax + movq %rdx,%r8 + + mulq %rbx + addq %rax,%r8 + movq 16(%rsi),%rax + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r9 + movq 24(%rsi),%rax + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r10 + movq 32(%rsi),%rax + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r11 + movq 40(%rsi),%rax + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r12 + movq 48(%rsi),%rax + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r13 + movq 56(%rsi),%rax + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + addq %rax,%r14 + movq (%rsi),%rax + movq %rdx,%r15 + adcq $0,%r15 + + leaq 8(%rbp),%rbp + leaq 8(%rdi),%rdi + + movl $7,%ecx + jmp .Loop_mul + +.align 32 +.Loop_mul: + movq (%rbp),%rbx + mulq %rbx + addq %rax,%r8 + movq 8(%rsi),%rax + movq %r8,(%rdi) + movq %rdx,%r8 + adcq $0,%r8 + + mulq %rbx + addq %rax,%r9 + movq 16(%rsi),%rax + adcq $0,%rdx + addq %r9,%r8 + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r10 + movq 24(%rsi),%rax + adcq $0,%rdx + addq %r10,%r9 + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r11 + movq 32(%rsi),%rax + adcq $0,%rdx + addq %r11,%r10 + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r12 + movq 40(%rsi),%rax + adcq $0,%rdx + addq %r12,%r11 + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r13 + movq 48(%rsi),%rax + adcq $0,%rdx + addq %r13,%r12 + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r14 + movq 56(%rsi),%rax + adcq $0,%rdx + addq %r14,%r13 + movq %rdx,%r14 + leaq 8(%rbp),%rbp + adcq $0,%r14 + + mulq %rbx + addq %rax,%r15 + movq (%rsi),%rax + adcq $0,%rdx + addq %r15,%r14 + movq %rdx,%r15 + adcq $0,%r15 + + leaq 8(%rdi),%rdi + + decl %ecx + jnz .Loop_mul + + movq %r8,(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __rsaz_512_mul,.-__rsaz_512_mul +.type __rsaz_512_mulx,@function +.align 32 +__rsaz_512_mulx: +.cfi_startproc + mulxq (%rsi),%rbx,%r8 + movq $-6,%rcx + + mulxq 8(%rsi),%rax,%r9 + movq %rbx,8(%rsp) + + mulxq 16(%rsi),%rbx,%r10 + adcq %rax,%r8 + + mulxq 24(%rsi),%rax,%r11 + adcq %rbx,%r9 + + mulxq 32(%rsi),%rbx,%r12 + adcq %rax,%r10 + + mulxq 40(%rsi),%rax,%r13 + adcq %rbx,%r11 + + mulxq 48(%rsi),%rbx,%r14 + adcq %rax,%r12 + + mulxq 56(%rsi),%rax,%r15 + movq 8(%rbp),%rdx + adcq %rbx,%r13 + adcq %rax,%r14 + adcq $0,%r15 + + xorq %rdi,%rdi + jmp .Loop_mulx + +.align 32 +.Loop_mulx: + movq %r8,%rbx + mulxq (%rsi),%rax,%r8 + adcxq %rax,%rbx + adoxq %r9,%r8 + + mulxq 8(%rsi),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rsi),%rax,%r10 + adcxq %rax,%r9 + adoxq %r11,%r10 + + mulxq 24(%rsi),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + +.byte 0x3e,0xc4,0x62,0xfb,0xf6,0xa6,0x20,0x00,0x00,0x00 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rsi),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rsi),%rax,%r14 + adcxq %rax,%r13 + adoxq %r15,%r14 + + mulxq 56(%rsi),%rax,%r15 + movq 64(%rbp,%rcx,8),%rdx + movq %rbx,8+64-8(%rsp,%rcx,8) + adcxq %rax,%r14 + adoxq %rdi,%r15 + adcxq %rdi,%r15 + + incq %rcx + jnz .Loop_mulx + + movq %r8,%rbx + mulxq (%rsi),%rax,%r8 + adcxq %rax,%rbx + adoxq %r9,%r8 + +.byte 0xc4,0x62,0xfb,0xf6,0x8e,0x08,0x00,0x00,0x00 + adcxq %rax,%r8 + adoxq %r10,%r9 + +.byte 0xc4,0x62,0xfb,0xf6,0x96,0x10,0x00,0x00,0x00 + adcxq %rax,%r9 + adoxq %r11,%r10 + + mulxq 24(%rsi),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + + mulxq 32(%rsi),%rax,%r12 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rsi),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + +.byte 0xc4,0x62,0xfb,0xf6,0xb6,0x30,0x00,0x00,0x00 + adcxq %rax,%r13 + adoxq %r15,%r14 + +.byte 0xc4,0x62,0xfb,0xf6,0xbe,0x38,0x00,0x00,0x00 + adcxq %rax,%r14 + adoxq %rdi,%r15 + adcxq %rdi,%r15 + + movq %rbx,8+64-8(%rsp) + movq %r8,8+64(%rsp) + movq %r9,8+64+8(%rsp) + movq %r10,8+64+16(%rsp) + movq %r11,8+64+24(%rsp) + movq %r12,8+64+32(%rsp) + movq %r13,8+64+40(%rsp) + movq %r14,8+64+48(%rsp) + movq %r15,8+64+56(%rsp) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __rsaz_512_mulx,.-__rsaz_512_mulx +.globl rsaz_512_scatter4 +.type rsaz_512_scatter4,@function +.align 16 +rsaz_512_scatter4: +.cfi_startproc + leaq (%rdi,%rdx,8),%rdi + movl $8,%r9d + jmp .Loop_scatter +.align 16 +.Loop_scatter: + movq (%rsi),%rax + leaq 8(%rsi),%rsi + movq %rax,(%rdi) + leaq 128(%rdi),%rdi + decl %r9d + jnz .Loop_scatter + .byte 0xf3,0xc3 +.cfi_endproc +.size rsaz_512_scatter4,.-rsaz_512_scatter4 + +.globl rsaz_512_gather4 +.type rsaz_512_gather4,@function +.align 16 +rsaz_512_gather4: +.cfi_startproc + movd %edx,%xmm8 + movdqa .Linc+16(%rip),%xmm1 + movdqa .Linc(%rip),%xmm0 + + pshufd $0,%xmm8,%xmm8 + movdqa %xmm1,%xmm7 + movdqa %xmm1,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm8,%xmm0 + movdqa %xmm7,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm8,%xmm1 + movdqa %xmm7,%xmm4 + paddd %xmm2,%xmm3 + pcmpeqd %xmm8,%xmm2 + movdqa %xmm7,%xmm5 + paddd %xmm3,%xmm4 + pcmpeqd %xmm8,%xmm3 + movdqa %xmm7,%xmm6 + paddd %xmm4,%xmm5 + pcmpeqd %xmm8,%xmm4 + paddd %xmm5,%xmm6 + pcmpeqd %xmm8,%xmm5 + paddd %xmm6,%xmm7 + pcmpeqd %xmm8,%xmm6 + pcmpeqd %xmm8,%xmm7 + movl $8,%r9d + jmp .Loop_gather +.align 16 +.Loop_gather: + movdqa 0(%rsi),%xmm8 + movdqa 16(%rsi),%xmm9 + movdqa 32(%rsi),%xmm10 + movdqa 48(%rsi),%xmm11 + pand %xmm0,%xmm8 + movdqa 64(%rsi),%xmm12 + pand %xmm1,%xmm9 + movdqa 80(%rsi),%xmm13 + pand %xmm2,%xmm10 + movdqa 96(%rsi),%xmm14 + pand %xmm3,%xmm11 + movdqa 112(%rsi),%xmm15 + leaq 128(%rsi),%rsi + pand %xmm4,%xmm12 + pand %xmm5,%xmm13 + pand %xmm6,%xmm14 + pand %xmm7,%xmm15 + por %xmm10,%xmm8 + por %xmm11,%xmm9 + por %xmm12,%xmm8 + por %xmm13,%xmm9 + por %xmm14,%xmm8 + por %xmm15,%xmm9 + + por %xmm9,%xmm8 + pshufd $0x4e,%xmm8,%xmm9 + por %xmm9,%xmm8 + movq %xmm8,(%rdi) + leaq 8(%rdi),%rdi + decl %r9d + jnz .Loop_gather + .byte 0xf3,0xc3 +.LSEH_end_rsaz_512_gather4: +.cfi_endproc +.size rsaz_512_gather4,.-rsaz_512_gather4 + +.align 64 +.Linc: +.long 0,0, 1,1 +.long 2,2, 2,2 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/bn/x86_64-gf2m.s b/vere/ext/openssl/gen/linux-x86_64/crypto/bn/x86_64-gf2m.s new file mode 100644 index 0000000..0846c44 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/bn/x86_64-gf2m.s @@ -0,0 +1,311 @@ +.text + +.type _mul_1x1,@function +.align 16 +_mul_1x1: +.cfi_startproc + subq $128+8,%rsp +.cfi_adjust_cfa_offset 128+8 + movq $-1,%r9 + leaq (%rax,%rax,1),%rsi + shrq $3,%r9 + leaq (,%rax,4),%rdi + andq %rax,%r9 + leaq (,%rax,8),%r12 + sarq $63,%rax + leaq (%r9,%r9,1),%r10 + sarq $63,%rsi + leaq (,%r9,4),%r11 + andq %rbp,%rax + sarq $63,%rdi + movq %rax,%rdx + shlq $63,%rax + andq %rbp,%rsi + shrq $1,%rdx + movq %rsi,%rcx + shlq $62,%rsi + andq %rbp,%rdi + shrq $2,%rcx + xorq %rsi,%rax + movq %rdi,%rbx + shlq $61,%rdi + xorq %rcx,%rdx + shrq $3,%rbx + xorq %rdi,%rax + xorq %rbx,%rdx + + movq %r9,%r13 + movq $0,0(%rsp) + xorq %r10,%r13 + movq %r9,8(%rsp) + movq %r11,%r14 + movq %r10,16(%rsp) + xorq %r12,%r14 + movq %r13,24(%rsp) + + xorq %r11,%r9 + movq %r11,32(%rsp) + xorq %r11,%r10 + movq %r9,40(%rsp) + xorq %r11,%r13 + movq %r10,48(%rsp) + xorq %r14,%r9 + movq %r13,56(%rsp) + xorq %r14,%r10 + + movq %r12,64(%rsp) + xorq %r14,%r13 + movq %r9,72(%rsp) + xorq %r11,%r9 + movq %r10,80(%rsp) + xorq %r11,%r10 + movq %r13,88(%rsp) + + xorq %r11,%r13 + movq %r14,96(%rsp) + movq %r8,%rsi + movq %r9,104(%rsp) + andq %rbp,%rsi + movq %r10,112(%rsp) + shrq $4,%rbp + movq %r13,120(%rsp) + movq %r8,%rdi + andq %rbp,%rdi + shrq $4,%rbp + + movq (%rsp,%rsi,8),%xmm0 + movq %r8,%rsi + andq %rbp,%rsi + shrq $4,%rbp + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $4,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $60,%rbx + xorq %rcx,%rax + pslldq $1,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $12,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $52,%rbx + xorq %rcx,%rax + pslldq $2,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $20,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $44,%rbx + xorq %rcx,%rax + pslldq $3,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $28,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $36,%rbx + xorq %rcx,%rax + pslldq $4,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $36,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $28,%rbx + xorq %rcx,%rax + pslldq $5,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $44,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $20,%rbx + xorq %rcx,%rax + pslldq $6,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $52,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $12,%rbx + xorq %rcx,%rax + pslldq $7,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %rcx,%rbx + shlq $60,%rcx +.byte 102,72,15,126,198 + shrq $4,%rbx + xorq %rcx,%rax + psrldq $8,%xmm0 + xorq %rbx,%rdx +.byte 102,72,15,126,199 + xorq %rsi,%rax + xorq %rdi,%rdx + + addq $128+8,%rsp +.cfi_adjust_cfa_offset -128-8 + .byte 0xf3,0xc3 +.Lend_mul_1x1: +.cfi_endproc +.size _mul_1x1,.-_mul_1x1 + +.globl bn_GF2m_mul_2x2 +.type bn_GF2m_mul_2x2,@function +.align 16 +bn_GF2m_mul_2x2: +.cfi_startproc + movq %rsp,%rax + movq OPENSSL_ia32cap_P(%rip),%r10 + btq $33,%r10 + jnc .Lvanilla_mul_2x2 + +.byte 102,72,15,110,198 +.byte 102,72,15,110,201 +.byte 102,72,15,110,210 +.byte 102,73,15,110,216 + movdqa %xmm0,%xmm4 + movdqa %xmm1,%xmm5 +.byte 102,15,58,68,193,0 + pxor %xmm2,%xmm4 + pxor %xmm3,%xmm5 +.byte 102,15,58,68,211,0 +.byte 102,15,58,68,229,0 + xorps %xmm0,%xmm4 + xorps %xmm2,%xmm4 + movdqa %xmm4,%xmm5 + pslldq $8,%xmm4 + psrldq $8,%xmm5 + pxor %xmm4,%xmm2 + pxor %xmm5,%xmm0 + movdqu %xmm2,0(%rdi) + movdqu %xmm0,16(%rdi) + .byte 0xf3,0xc3 + +.align 16 +.Lvanilla_mul_2x2: + leaq -136(%rsp),%rsp +.cfi_adjust_cfa_offset 8*17 + movq %r14,80(%rsp) +.cfi_rel_offset %r14,8*10 + movq %r13,88(%rsp) +.cfi_rel_offset %r13,8*11 + movq %r12,96(%rsp) +.cfi_rel_offset %r12,8*12 + movq %rbp,104(%rsp) +.cfi_rel_offset %rbp,8*13 + movq %rbx,112(%rsp) +.cfi_rel_offset %rbx,8*14 +.Lbody_mul_2x2: + movq %rdi,32(%rsp) + movq %rsi,40(%rsp) + movq %rdx,48(%rsp) + movq %rcx,56(%rsp) + movq %r8,64(%rsp) + + movq $0xf,%r8 + movq %rsi,%rax + movq %rcx,%rbp + call _mul_1x1 + movq %rax,16(%rsp) + movq %rdx,24(%rsp) + + movq 48(%rsp),%rax + movq 64(%rsp),%rbp + call _mul_1x1 + movq %rax,0(%rsp) + movq %rdx,8(%rsp) + + movq 40(%rsp),%rax + movq 56(%rsp),%rbp + xorq 48(%rsp),%rax + xorq 64(%rsp),%rbp + call _mul_1x1 + movq 0(%rsp),%rbx + movq 8(%rsp),%rcx + movq 16(%rsp),%rdi + movq 24(%rsp),%rsi + movq 32(%rsp),%rbp + + xorq %rdx,%rax + xorq %rcx,%rdx + xorq %rbx,%rax + movq %rbx,0(%rbp) + xorq %rdi,%rdx + movq %rsi,24(%rbp) + xorq %rsi,%rax + xorq %rsi,%rdx + xorq %rdx,%rax + movq %rdx,16(%rbp) + movq %rax,8(%rbp) + + movq 80(%rsp),%r14 +.cfi_restore %r14 + movq 88(%rsp),%r13 +.cfi_restore %r13 + movq 96(%rsp),%r12 +.cfi_restore %r12 + movq 104(%rsp),%rbp +.cfi_restore %rbp + movq 112(%rsp),%rbx +.cfi_restore %rbx + leaq 136(%rsp),%rsp +.cfi_adjust_cfa_offset -8*17 +.Lepilogue_mul_2x2: + .byte 0xf3,0xc3 +.Lend_mul_2x2: +.cfi_endproc +.size bn_GF2m_mul_2x2,.-bn_GF2m_mul_2x2 +.byte 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 16 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/bn/x86_64-mont.s b/vere/ext/openssl/gen/linux-x86_64/crypto/bn/x86_64-mont.s new file mode 100644 index 0000000..414be6a --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/bn/x86_64-mont.s @@ -0,0 +1,1239 @@ +.text + + + +.globl bn_mul_mont +.type bn_mul_mont,@function +.align 16 +bn_mul_mont: +.cfi_startproc + movl %r9d,%r9d + movq %rsp,%rax +.cfi_def_cfa_register %rax + testl $3,%r9d + jnz .Lmul_enter + cmpl $8,%r9d + jb .Lmul_enter + movl OPENSSL_ia32cap_P+8(%rip),%r11d + cmpq %rsi,%rdx + jne .Lmul4x_enter + testl $7,%r9d + jz .Lsqr8x_enter + jmp .Lmul4x_enter + +.align 16 +.Lmul_enter: + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + + negq %r9 + movq %rsp,%r11 + leaq -16(%rsp,%r9,8),%r10 + negq %r9 + andq $-1024,%r10 + + + + + + + + + + subq %r10,%r11 + andq $-4096,%r11 + leaq (%r10,%r11,1),%rsp + movq (%rsp),%r11 + cmpq %r10,%rsp + ja .Lmul_page_walk + jmp .Lmul_page_walk_done + +.align 16 +.Lmul_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r11 + cmpq %r10,%rsp + ja .Lmul_page_walk +.Lmul_page_walk_done: + + movq %rax,8(%rsp,%r9,8) +.cfi_escape 0x0f,0x0a,0x77,0x08,0x79,0x00,0x38,0x1e,0x22,0x06,0x23,0x08 +.Lmul_body: + movq %rdx,%r12 + movq (%r8),%r8 + movq (%r12),%rbx + movq (%rsi),%rax + + xorq %r14,%r14 + xorq %r15,%r15 + + movq %r8,%rbp + mulq %rbx + movq %rax,%r10 + movq (%rcx),%rax + + imulq %r10,%rbp + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi),%rax + adcq $0,%rdx + movq %rdx,%r13 + + leaq 1(%r15),%r15 + jmp .L1st_enter + +.align 16 +.L1st: + addq %rax,%r13 + movq (%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r11,%r13 + movq %r10,%r11 + adcq $0,%rdx + movq %r13,-16(%rsp,%r15,8) + movq %rdx,%r13 + +.L1st_enter: + mulq %rbx + addq %rax,%r11 + movq (%rcx,%r15,8),%rax + adcq $0,%rdx + leaq 1(%r15),%r15 + movq %rdx,%r10 + + mulq %rbp + cmpq %r9,%r15 + jne .L1st + + addq %rax,%r13 + movq (%rsi),%rax + adcq $0,%rdx + addq %r11,%r13 + adcq $0,%rdx + movq %r13,-16(%rsp,%r15,8) + movq %rdx,%r13 + movq %r10,%r11 + + xorq %rdx,%rdx + addq %r11,%r13 + adcq $0,%rdx + movq %r13,-8(%rsp,%r9,8) + movq %rdx,(%rsp,%r9,8) + + leaq 1(%r14),%r14 + jmp .Louter +.align 16 +.Louter: + movq (%r12,%r14,8),%rbx + xorq %r15,%r15 + movq %r8,%rbp + movq (%rsp),%r10 + mulq %rbx + addq %rax,%r10 + movq (%rcx),%rax + adcq $0,%rdx + + imulq %r10,%rbp + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi),%rax + adcq $0,%rdx + movq 8(%rsp),%r10 + movq %rdx,%r13 + + leaq 1(%r15),%r15 + jmp .Linner_enter + +.align 16 +.Linner: + addq %rax,%r13 + movq (%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + movq (%rsp,%r15,8),%r10 + adcq $0,%rdx + movq %r13,-16(%rsp,%r15,8) + movq %rdx,%r13 + +.Linner_enter: + mulq %rbx + addq %rax,%r11 + movq (%rcx,%r15,8),%rax + adcq $0,%rdx + addq %r11,%r10 + movq %rdx,%r11 + adcq $0,%r11 + leaq 1(%r15),%r15 + + mulq %rbp + cmpq %r9,%r15 + jne .Linner + + addq %rax,%r13 + movq (%rsi),%rax + adcq $0,%rdx + addq %r10,%r13 + movq (%rsp,%r15,8),%r10 + adcq $0,%rdx + movq %r13,-16(%rsp,%r15,8) + movq %rdx,%r13 + + xorq %rdx,%rdx + addq %r11,%r13 + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-8(%rsp,%r9,8) + movq %rdx,(%rsp,%r9,8) + + leaq 1(%r14),%r14 + cmpq %r9,%r14 + jb .Louter + + xorq %r14,%r14 + movq (%rsp),%rax + movq %r9,%r15 + +.align 16 +.Lsub: sbbq (%rcx,%r14,8),%rax + movq %rax,(%rdi,%r14,8) + movq 8(%rsp,%r14,8),%rax + leaq 1(%r14),%r14 + decq %r15 + jnz .Lsub + + sbbq $0,%rax + movq $-1,%rbx + xorq %rax,%rbx + xorq %r14,%r14 + movq %r9,%r15 + +.Lcopy: + movq (%rdi,%r14,8),%rcx + movq (%rsp,%r14,8),%rdx + andq %rbx,%rcx + andq %rax,%rdx + movq %r9,(%rsp,%r14,8) + orq %rcx,%rdx + movq %rdx,(%rdi,%r14,8) + leaq 1(%r14),%r14 + subq $1,%r15 + jnz .Lcopy + + movq 8(%rsp,%r9,8),%rsi +.cfi_def_cfa %rsi,8 + movq $1,%rax + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lmul_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_mul_mont,.-bn_mul_mont +.type bn_mul4x_mont,@function +.align 16 +bn_mul4x_mont: +.cfi_startproc + movl %r9d,%r9d + movq %rsp,%rax +.cfi_def_cfa_register %rax +.Lmul4x_enter: + andl $0x80100,%r11d + cmpl $0x80100,%r11d + je .Lmulx4x_enter + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + + negq %r9 + movq %rsp,%r11 + leaq -32(%rsp,%r9,8),%r10 + negq %r9 + andq $-1024,%r10 + + subq %r10,%r11 + andq $-4096,%r11 + leaq (%r10,%r11,1),%rsp + movq (%rsp),%r11 + cmpq %r10,%rsp + ja .Lmul4x_page_walk + jmp .Lmul4x_page_walk_done + +.Lmul4x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r11 + cmpq %r10,%rsp + ja .Lmul4x_page_walk +.Lmul4x_page_walk_done: + + movq %rax,8(%rsp,%r9,8) +.cfi_escape 0x0f,0x0a,0x77,0x08,0x79,0x00,0x38,0x1e,0x22,0x06,0x23,0x08 +.Lmul4x_body: + movq %rdi,16(%rsp,%r9,8) + movq %rdx,%r12 + movq (%r8),%r8 + movq (%r12),%rbx + movq (%rsi),%rax + + xorq %r14,%r14 + xorq %r15,%r15 + + movq %r8,%rbp + mulq %rbx + movq %rax,%r10 + movq (%rcx),%rax + + imulq %r10,%rbp + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi),%rax + adcq $0,%rdx + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq 16(%rsi),%rax + adcq $0,%rdx + addq %r11,%rdi + leaq 4(%r15),%r15 + adcq $0,%rdx + movq %rdi,(%rsp) + movq %rdx,%r13 + jmp .L1st4x +.align 16 +.L1st4x: + mulq %rbx + addq %rax,%r10 + movq -16(%rcx,%r15,8),%rax + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-24(%rsp,%r15,8) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx,%r15,8),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-16(%rsp,%r15,8) + movq %rdx,%r13 + + mulq %rbx + addq %rax,%r10 + movq (%rcx,%r15,8),%rax + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq 8(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-8(%rsp,%r15,8) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx,%r15,8),%rax + adcq $0,%rdx + leaq 4(%r15),%r15 + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq -16(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-32(%rsp,%r15,8) + movq %rdx,%r13 + cmpq %r9,%r15 + jb .L1st4x + + mulq %rbx + addq %rax,%r10 + movq -16(%rcx,%r15,8),%rax + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-24(%rsp,%r15,8) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx,%r15,8),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-16(%rsp,%r15,8) + movq %rdx,%r13 + + xorq %rdi,%rdi + addq %r10,%r13 + adcq $0,%rdi + movq %r13,-8(%rsp,%r15,8) + movq %rdi,(%rsp,%r15,8) + + leaq 1(%r14),%r14 +.align 4 +.Louter4x: + movq (%r12,%r14,8),%rbx + xorq %r15,%r15 + movq (%rsp),%r10 + movq %r8,%rbp + mulq %rbx + addq %rax,%r10 + movq (%rcx),%rax + adcq $0,%rdx + + imulq %r10,%rbp + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi),%rax + adcq $0,%rdx + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx),%rax + adcq $0,%rdx + addq 8(%rsp),%r11 + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq 16(%rsi),%rax + adcq $0,%rdx + addq %r11,%rdi + leaq 4(%r15),%r15 + adcq $0,%rdx + movq %rdi,(%rsp) + movq %rdx,%r13 + jmp .Linner4x +.align 16 +.Linner4x: + mulq %rbx + addq %rax,%r10 + movq -16(%rcx,%r15,8),%rax + adcq $0,%rdx + addq -16(%rsp,%r15,8),%r10 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-24(%rsp,%r15,8) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx,%r15,8),%rax + adcq $0,%rdx + addq -8(%rsp,%r15,8),%r11 + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-16(%rsp,%r15,8) + movq %rdx,%r13 + + mulq %rbx + addq %rax,%r10 + movq (%rcx,%r15,8),%rax + adcq $0,%rdx + addq (%rsp,%r15,8),%r10 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq 8(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-8(%rsp,%r15,8) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx,%r15,8),%rax + adcq $0,%rdx + addq 8(%rsp,%r15,8),%r11 + adcq $0,%rdx + leaq 4(%r15),%r15 + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq -16(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-32(%rsp,%r15,8) + movq %rdx,%r13 + cmpq %r9,%r15 + jb .Linner4x + + mulq %rbx + addq %rax,%r10 + movq -16(%rcx,%r15,8),%rax + adcq $0,%rdx + addq -16(%rsp,%r15,8),%r10 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-24(%rsp,%r15,8) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx,%r15,8),%rax + adcq $0,%rdx + addq -8(%rsp,%r15,8),%r11 + adcq $0,%rdx + leaq 1(%r14),%r14 + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-16(%rsp,%r15,8) + movq %rdx,%r13 + + xorq %rdi,%rdi + addq %r10,%r13 + adcq $0,%rdi + addq (%rsp,%r9,8),%r13 + adcq $0,%rdi + movq %r13,-8(%rsp,%r15,8) + movq %rdi,(%rsp,%r15,8) + + cmpq %r9,%r14 + jb .Louter4x + movq 16(%rsp,%r9,8),%rdi + leaq -4(%r9),%r15 + movq 0(%rsp),%rax + movq 8(%rsp),%rdx + shrq $2,%r15 + leaq (%rsp),%rsi + xorq %r14,%r14 + + subq 0(%rcx),%rax + movq 16(%rsi),%rbx + movq 24(%rsi),%rbp + sbbq 8(%rcx),%rdx + +.Lsub4x: + movq %rax,0(%rdi,%r14,8) + movq %rdx,8(%rdi,%r14,8) + sbbq 16(%rcx,%r14,8),%rbx + movq 32(%rsi,%r14,8),%rax + movq 40(%rsi,%r14,8),%rdx + sbbq 24(%rcx,%r14,8),%rbp + movq %rbx,16(%rdi,%r14,8) + movq %rbp,24(%rdi,%r14,8) + sbbq 32(%rcx,%r14,8),%rax + movq 48(%rsi,%r14,8),%rbx + movq 56(%rsi,%r14,8),%rbp + sbbq 40(%rcx,%r14,8),%rdx + leaq 4(%r14),%r14 + decq %r15 + jnz .Lsub4x + + movq %rax,0(%rdi,%r14,8) + movq 32(%rsi,%r14,8),%rax + sbbq 16(%rcx,%r14,8),%rbx + movq %rdx,8(%rdi,%r14,8) + sbbq 24(%rcx,%r14,8),%rbp + movq %rbx,16(%rdi,%r14,8) + + sbbq $0,%rax + movq %rbp,24(%rdi,%r14,8) + pxor %xmm0,%xmm0 +.byte 102,72,15,110,224 + pcmpeqd %xmm5,%xmm5 + pshufd $0,%xmm4,%xmm4 + movq %r9,%r15 + pxor %xmm4,%xmm5 + shrq $2,%r15 + xorl %eax,%eax + + jmp .Lcopy4x +.align 16 +.Lcopy4x: + movdqa (%rsp,%rax,1),%xmm1 + movdqu (%rdi,%rax,1),%xmm2 + pand %xmm4,%xmm1 + pand %xmm5,%xmm2 + movdqa 16(%rsp,%rax,1),%xmm3 + movdqa %xmm0,(%rsp,%rax,1) + por %xmm2,%xmm1 + movdqu 16(%rdi,%rax,1),%xmm2 + movdqu %xmm1,(%rdi,%rax,1) + pand %xmm4,%xmm3 + pand %xmm5,%xmm2 + movdqa %xmm0,16(%rsp,%rax,1) + por %xmm2,%xmm3 + movdqu %xmm3,16(%rdi,%rax,1) + leaq 32(%rax),%rax + decq %r15 + jnz .Lcopy4x + movq 8(%rsp,%r9,8),%rsi +.cfi_def_cfa %rsi, 8 + movq $1,%rax + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lmul4x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_mul4x_mont,.-bn_mul4x_mont + + + +.type bn_sqr8x_mont,@function +.align 32 +bn_sqr8x_mont: +.cfi_startproc + movq %rsp,%rax +.cfi_def_cfa_register %rax +.Lsqr8x_enter: + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 +.Lsqr8x_prologue: + + movl %r9d,%r10d + shll $3,%r9d + shlq $3+2,%r10 + negq %r9 + + + + + + + leaq -64(%rsp,%r9,2),%r11 + movq %rsp,%rbp + movq (%r8),%r8 + subq %rsi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb .Lsqr8x_sp_alt + subq %r11,%rbp + leaq -64(%rbp,%r9,2),%rbp + jmp .Lsqr8x_sp_done + +.align 32 +.Lsqr8x_sp_alt: + leaq 4096-64(,%r9,2),%r10 + leaq -64(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +.Lsqr8x_sp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lsqr8x_page_walk + jmp .Lsqr8x_page_walk_done + +.align 16 +.Lsqr8x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lsqr8x_page_walk +.Lsqr8x_page_walk_done: + + movq %r9,%r10 + negq %r9 + + movq %r8,32(%rsp) + movq %rax,40(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 +.Lsqr8x_body: + +.byte 102,72,15,110,209 + pxor %xmm0,%xmm0 +.byte 102,72,15,110,207 +.byte 102,73,15,110,218 + movl OPENSSL_ia32cap_P+8(%rip),%eax + andl $0x80100,%eax + cmpl $0x80100,%eax + jne .Lsqr8x_nox + + call bn_sqrx8x_internal + + + + + leaq (%r8,%rcx,1),%rbx + movq %rcx,%r9 + movq %rcx,%rdx +.byte 102,72,15,126,207 + sarq $3+2,%rcx + jmp .Lsqr8x_sub + +.align 32 +.Lsqr8x_nox: + call bn_sqr8x_internal + + + + + leaq (%rdi,%r9,1),%rbx + movq %r9,%rcx + movq %r9,%rdx +.byte 102,72,15,126,207 + sarq $3+2,%rcx + jmp .Lsqr8x_sub + +.align 32 +.Lsqr8x_sub: + movq 0(%rbx),%r12 + movq 8(%rbx),%r13 + movq 16(%rbx),%r14 + movq 24(%rbx),%r15 + leaq 32(%rbx),%rbx + sbbq 0(%rbp),%r12 + sbbq 8(%rbp),%r13 + sbbq 16(%rbp),%r14 + sbbq 24(%rbp),%r15 + leaq 32(%rbp),%rbp + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r14,16(%rdi) + movq %r15,24(%rdi) + leaq 32(%rdi),%rdi + incq %rcx + jnz .Lsqr8x_sub + + sbbq $0,%rax + leaq (%rbx,%r9,1),%rbx + leaq (%rdi,%r9,1),%rdi + +.byte 102,72,15,110,200 + pxor %xmm0,%xmm0 + pshufd $0,%xmm1,%xmm1 + movq 40(%rsp),%rsi +.cfi_def_cfa %rsi,8 + jmp .Lsqr8x_cond_copy + +.align 32 +.Lsqr8x_cond_copy: + movdqa 0(%rbx),%xmm2 + movdqa 16(%rbx),%xmm3 + leaq 32(%rbx),%rbx + movdqu 0(%rdi),%xmm4 + movdqu 16(%rdi),%xmm5 + leaq 32(%rdi),%rdi + movdqa %xmm0,-32(%rbx) + movdqa %xmm0,-16(%rbx) + movdqa %xmm0,-32(%rbx,%rdx,1) + movdqa %xmm0,-16(%rbx,%rdx,1) + pcmpeqd %xmm1,%xmm0 + pand %xmm1,%xmm2 + pand %xmm1,%xmm3 + pand %xmm0,%xmm4 + pand %xmm0,%xmm5 + pxor %xmm0,%xmm0 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqu %xmm4,-32(%rdi) + movdqu %xmm5,-16(%rdi) + addq $32,%r9 + jnz .Lsqr8x_cond_copy + + movq $1,%rax + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lsqr8x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_sqr8x_mont,.-bn_sqr8x_mont +.type bn_mulx4x_mont,@function +.align 32 +bn_mulx4x_mont: +.cfi_startproc + movq %rsp,%rax +.cfi_def_cfa_register %rax +.Lmulx4x_enter: + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 +.Lmulx4x_prologue: + + shll $3,%r9d + xorq %r10,%r10 + subq %r9,%r10 + movq (%r8),%r8 + leaq -72(%rsp,%r10,1),%rbp + andq $-128,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lmulx4x_page_walk + jmp .Lmulx4x_page_walk_done + +.align 16 +.Lmulx4x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lmulx4x_page_walk +.Lmulx4x_page_walk_done: + + leaq (%rdx,%r9,1),%r10 + + + + + + + + + + + + + movq %r9,0(%rsp) + shrq $5,%r9 + movq %r10,16(%rsp) + subq $1,%r9 + movq %r8,24(%rsp) + movq %rdi,32(%rsp) + movq %rax,40(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 + movq %r9,48(%rsp) + jmp .Lmulx4x_body + +.align 32 +.Lmulx4x_body: + leaq 8(%rdx),%rdi + movq (%rdx),%rdx + leaq 64+32(%rsp),%rbx + movq %rdx,%r9 + + mulxq 0(%rsi),%r8,%rax + mulxq 8(%rsi),%r11,%r14 + addq %rax,%r11 + movq %rdi,8(%rsp) + mulxq 16(%rsi),%r12,%r13 + adcq %r14,%r12 + adcq $0,%r13 + + movq %r8,%rdi + imulq 24(%rsp),%r8 + xorq %rbp,%rbp + + mulxq 24(%rsi),%rax,%r14 + movq %r8,%rdx + leaq 32(%rsi),%rsi + adcxq %rax,%r13 + adcxq %rbp,%r14 + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%rdi + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 +.byte 0xc4,0x62,0xfb,0xf6,0xa1,0x10,0x00,0x00,0x00 + movq 48(%rsp),%rdi + movq %r10,-32(%rbx) + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-24(%rbx) + adcxq %rax,%r12 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r12,-16(%rbx) + + jmp .Lmulx4x_1st + +.align 32 +.Lmulx4x_1st: + adcxq %rbp,%r15 + mulxq 0(%rsi),%r10,%rax + adcxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 +.byte 0x67,0x67 + movq %r8,%rdx + adcxq %rax,%r13 + adcxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + movq %r11,-32(%rbx) + adoxq %r15,%r13 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r13,-16(%rbx) + + decq %rdi + jnz .Lmulx4x_1st + + movq 0(%rsp),%rax + movq 8(%rsp),%rdi + adcq %rbp,%r15 + addq %r15,%r14 + sbbq %r15,%r15 + movq %r14,-8(%rbx) + jmp .Lmulx4x_outer + +.align 32 +.Lmulx4x_outer: + movq (%rdi),%rdx + leaq 8(%rdi),%rdi + subq %rax,%rsi + movq %r15,(%rbx) + leaq 64+32(%rsp),%rbx + subq %rax,%rcx + + mulxq 0(%rsi),%r8,%r11 + xorl %ebp,%ebp + movq %rdx,%r9 + mulxq 8(%rsi),%r14,%r12 + adoxq -32(%rbx),%r8 + adcxq %r14,%r11 + mulxq 16(%rsi),%r15,%r13 + adoxq -24(%rbx),%r11 + adcxq %r15,%r12 + adoxq -16(%rbx),%r12 + adcxq %rbp,%r13 + adoxq %rbp,%r13 + + movq %rdi,8(%rsp) + movq %r8,%r15 + imulq 24(%rsp),%r8 + xorl %ebp,%ebp + + mulxq 24(%rsi),%rax,%r14 + movq %r8,%rdx + adcxq %rax,%r13 + adoxq -8(%rbx),%r13 + adcxq %rbp,%r14 + leaq 32(%rsi),%rsi + adoxq %rbp,%r14 + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%r15 + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + mulxq 16(%rcx),%rax,%r12 + movq %r10,-32(%rbx) + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-24(%rbx) + leaq 32(%rcx),%rcx + adcxq %rax,%r12 + adoxq %rbp,%r15 + movq 48(%rsp),%rdi + movq %r12,-16(%rbx) + + jmp .Lmulx4x_inner + +.align 32 +.Lmulx4x_inner: + mulxq 0(%rsi),%r10,%rax + adcxq %rbp,%r15 + adoxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq 0(%rbx),%r10 + adoxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq 8(%rbx),%r11 + adoxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 + movq %r8,%rdx + adcxq 16(%rbx),%r12 + adoxq %rax,%r13 + adcxq 24(%rbx),%r13 + adoxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + adcxq %rbp,%r14 + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + adoxq %r15,%r13 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-32(%rbx) + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r13,-16(%rbx) + + decq %rdi + jnz .Lmulx4x_inner + + movq 0(%rsp),%rax + movq 8(%rsp),%rdi + adcq %rbp,%r15 + subq 0(%rbx),%rbp + adcq %r15,%r14 + sbbq %r15,%r15 + movq %r14,-8(%rbx) + + cmpq 16(%rsp),%rdi + jne .Lmulx4x_outer + + leaq 64(%rsp),%rbx + subq %rax,%rcx + negq %r15 + movq %rax,%rdx + shrq $3+2,%rax + movq 32(%rsp),%rdi + jmp .Lmulx4x_sub + +.align 32 +.Lmulx4x_sub: + movq 0(%rbx),%r11 + movq 8(%rbx),%r12 + movq 16(%rbx),%r13 + movq 24(%rbx),%r14 + leaq 32(%rbx),%rbx + sbbq 0(%rcx),%r11 + sbbq 8(%rcx),%r12 + sbbq 16(%rcx),%r13 + sbbq 24(%rcx),%r14 + leaq 32(%rcx),%rcx + movq %r11,0(%rdi) + movq %r12,8(%rdi) + movq %r13,16(%rdi) + movq %r14,24(%rdi) + leaq 32(%rdi),%rdi + decq %rax + jnz .Lmulx4x_sub + + sbbq $0,%r15 + leaq 64(%rsp),%rbx + subq %rdx,%rdi + +.byte 102,73,15,110,207 + pxor %xmm0,%xmm0 + pshufd $0,%xmm1,%xmm1 + movq 40(%rsp),%rsi +.cfi_def_cfa %rsi,8 + jmp .Lmulx4x_cond_copy + +.align 32 +.Lmulx4x_cond_copy: + movdqa 0(%rbx),%xmm2 + movdqa 16(%rbx),%xmm3 + leaq 32(%rbx),%rbx + movdqu 0(%rdi),%xmm4 + movdqu 16(%rdi),%xmm5 + leaq 32(%rdi),%rdi + movdqa %xmm0,-32(%rbx) + movdqa %xmm0,-16(%rbx) + pcmpeqd %xmm1,%xmm0 + pand %xmm1,%xmm2 + pand %xmm1,%xmm3 + pand %xmm0,%xmm4 + pand %xmm0,%xmm5 + pxor %xmm0,%xmm0 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqu %xmm4,-32(%rdi) + movdqu %xmm5,-16(%rdi) + subq $32,%rdx + jnz .Lmulx4x_cond_copy + + movq %rdx,(%rbx) + + movq $1,%rax + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lmulx4x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_mulx4x_mont,.-bn_mulx4x_mont +.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 16 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/bn/x86_64-mont5.s b/vere/ext/openssl/gen/linux-x86_64/crypto/bn/x86_64-mont5.s new file mode 100644 index 0000000..3a3b874 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/bn/x86_64-mont5.s @@ -0,0 +1,3603 @@ +.text + + + +.globl bn_mul_mont_gather5 +.type bn_mul_mont_gather5,@function +.align 64 +bn_mul_mont_gather5: +.cfi_startproc + movl %r9d,%r9d + movq %rsp,%rax +.cfi_def_cfa_register %rax + testl $7,%r9d + jnz .Lmul_enter + movl OPENSSL_ia32cap_P+8(%rip),%r11d + jmp .Lmul4x_enter + +.align 16 +.Lmul_enter: + movd 8(%rsp),%xmm5 + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + + negq %r9 + movq %rsp,%r11 + leaq -280(%rsp,%r9,8),%r10 + negq %r9 + andq $-1024,%r10 + + + + + + + + + + subq %r10,%r11 + andq $-4096,%r11 + leaq (%r10,%r11,1),%rsp + movq (%rsp),%r11 + cmpq %r10,%rsp + ja .Lmul_page_walk + jmp .Lmul_page_walk_done + +.Lmul_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r11 + cmpq %r10,%rsp + ja .Lmul_page_walk +.Lmul_page_walk_done: + + leaq .Linc(%rip),%r10 + movq %rax,8(%rsp,%r9,8) +.cfi_escape 0x0f,0x0a,0x77,0x08,0x79,0x00,0x38,0x1e,0x22,0x06,0x23,0x08 +.Lmul_body: + + leaq 128(%rdx),%r12 + movdqa 0(%r10),%xmm0 + movdqa 16(%r10),%xmm1 + leaq 24-112(%rsp,%r9,8),%r10 + andq $-16,%r10 + + pshufd $0,%xmm5,%xmm5 + movdqa %xmm1,%xmm4 + movdqa %xmm1,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 +.byte 0x67 + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,112(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,128(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,144(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,160(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,176(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,192(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,208(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,224(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,240(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,256(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,272(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,288(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,304(%r10) + + paddd %xmm2,%xmm3 +.byte 0x67 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,320(%r10) + + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,336(%r10) + pand 64(%r12),%xmm0 + + pand 80(%r12),%xmm1 + pand 96(%r12),%xmm2 + movdqa %xmm3,352(%r10) + pand 112(%r12),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -128(%r12),%xmm4 + movdqa -112(%r12),%xmm5 + movdqa -96(%r12),%xmm2 + pand 112(%r10),%xmm4 + movdqa -80(%r12),%xmm3 + pand 128(%r10),%xmm5 + por %xmm4,%xmm0 + pand 144(%r10),%xmm2 + por %xmm5,%xmm1 + pand 160(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -64(%r12),%xmm4 + movdqa -48(%r12),%xmm5 + movdqa -32(%r12),%xmm2 + pand 176(%r10),%xmm4 + movdqa -16(%r12),%xmm3 + pand 192(%r10),%xmm5 + por %xmm4,%xmm0 + pand 208(%r10),%xmm2 + por %xmm5,%xmm1 + pand 224(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa 0(%r12),%xmm4 + movdqa 16(%r12),%xmm5 + movdqa 32(%r12),%xmm2 + pand 240(%r10),%xmm4 + movdqa 48(%r12),%xmm3 + pand 256(%r10),%xmm5 + por %xmm4,%xmm0 + pand 272(%r10),%xmm2 + por %xmm5,%xmm1 + pand 288(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + por %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 + por %xmm1,%xmm0 + leaq 256(%r12),%r12 +.byte 102,72,15,126,195 + + movq (%r8),%r8 + movq (%rsi),%rax + + xorq %r14,%r14 + xorq %r15,%r15 + + movq %r8,%rbp + mulq %rbx + movq %rax,%r10 + movq (%rcx),%rax + + imulq %r10,%rbp + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi),%rax + adcq $0,%rdx + movq %rdx,%r13 + + leaq 1(%r15),%r15 + jmp .L1st_enter + +.align 16 +.L1st: + addq %rax,%r13 + movq (%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r11,%r13 + movq %r10,%r11 + adcq $0,%rdx + movq %r13,-16(%rsp,%r15,8) + movq %rdx,%r13 + +.L1st_enter: + mulq %rbx + addq %rax,%r11 + movq (%rcx,%r15,8),%rax + adcq $0,%rdx + leaq 1(%r15),%r15 + movq %rdx,%r10 + + mulq %rbp + cmpq %r9,%r15 + jne .L1st + + + addq %rax,%r13 + adcq $0,%rdx + addq %r11,%r13 + adcq $0,%rdx + movq %r13,-16(%rsp,%r9,8) + movq %rdx,%r13 + movq %r10,%r11 + + xorq %rdx,%rdx + addq %r11,%r13 + adcq $0,%rdx + movq %r13,-8(%rsp,%r9,8) + movq %rdx,(%rsp,%r9,8) + + leaq 1(%r14),%r14 + jmp .Louter +.align 16 +.Louter: + leaq 24+128(%rsp,%r9,8),%rdx + andq $-16,%rdx + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + movdqa -128(%r12),%xmm0 + movdqa -112(%r12),%xmm1 + movdqa -96(%r12),%xmm2 + movdqa -80(%r12),%xmm3 + pand -128(%rdx),%xmm0 + pand -112(%rdx),%xmm1 + por %xmm0,%xmm4 + pand -96(%rdx),%xmm2 + por %xmm1,%xmm5 + pand -80(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa -64(%r12),%xmm0 + movdqa -48(%r12),%xmm1 + movdqa -32(%r12),%xmm2 + movdqa -16(%r12),%xmm3 + pand -64(%rdx),%xmm0 + pand -48(%rdx),%xmm1 + por %xmm0,%xmm4 + pand -32(%rdx),%xmm2 + por %xmm1,%xmm5 + pand -16(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 0(%r12),%xmm0 + movdqa 16(%r12),%xmm1 + movdqa 32(%r12),%xmm2 + movdqa 48(%r12),%xmm3 + pand 0(%rdx),%xmm0 + pand 16(%rdx),%xmm1 + por %xmm0,%xmm4 + pand 32(%rdx),%xmm2 + por %xmm1,%xmm5 + pand 48(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 64(%r12),%xmm0 + movdqa 80(%r12),%xmm1 + movdqa 96(%r12),%xmm2 + movdqa 112(%r12),%xmm3 + pand 64(%rdx),%xmm0 + pand 80(%rdx),%xmm1 + por %xmm0,%xmm4 + pand 96(%rdx),%xmm2 + por %xmm1,%xmm5 + pand 112(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 + por %xmm4,%xmm0 + leaq 256(%r12),%r12 + + movq (%rsi),%rax +.byte 102,72,15,126,195 + + xorq %r15,%r15 + movq %r8,%rbp + movq (%rsp),%r10 + + mulq %rbx + addq %rax,%r10 + movq (%rcx),%rax + adcq $0,%rdx + + imulq %r10,%rbp + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi),%rax + adcq $0,%rdx + movq 8(%rsp),%r10 + movq %rdx,%r13 + + leaq 1(%r15),%r15 + jmp .Linner_enter + +.align 16 +.Linner: + addq %rax,%r13 + movq (%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + movq (%rsp,%r15,8),%r10 + adcq $0,%rdx + movq %r13,-16(%rsp,%r15,8) + movq %rdx,%r13 + +.Linner_enter: + mulq %rbx + addq %rax,%r11 + movq (%rcx,%r15,8),%rax + adcq $0,%rdx + addq %r11,%r10 + movq %rdx,%r11 + adcq $0,%r11 + leaq 1(%r15),%r15 + + mulq %rbp + cmpq %r9,%r15 + jne .Linner + + addq %rax,%r13 + adcq $0,%rdx + addq %r10,%r13 + movq (%rsp,%r9,8),%r10 + adcq $0,%rdx + movq %r13,-16(%rsp,%r9,8) + movq %rdx,%r13 + + xorq %rdx,%rdx + addq %r11,%r13 + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-8(%rsp,%r9,8) + movq %rdx,(%rsp,%r9,8) + + leaq 1(%r14),%r14 + cmpq %r9,%r14 + jb .Louter + + xorq %r14,%r14 + movq (%rsp),%rax + leaq (%rsp),%rsi + movq %r9,%r15 + jmp .Lsub +.align 16 +.Lsub: sbbq (%rcx,%r14,8),%rax + movq %rax,(%rdi,%r14,8) + movq 8(%rsi,%r14,8),%rax + leaq 1(%r14),%r14 + decq %r15 + jnz .Lsub + + sbbq $0,%rax + movq $-1,%rbx + xorq %rax,%rbx + xorq %r14,%r14 + movq %r9,%r15 + +.Lcopy: + movq (%rdi,%r14,8),%rcx + movq (%rsp,%r14,8),%rdx + andq %rbx,%rcx + andq %rax,%rdx + movq %r14,(%rsp,%r14,8) + orq %rcx,%rdx + movq %rdx,(%rdi,%r14,8) + leaq 1(%r14),%r14 + subq $1,%r15 + jnz .Lcopy + + movq 8(%rsp,%r9,8),%rsi +.cfi_def_cfa %rsi,8 + movq $1,%rax + + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lmul_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_mul_mont_gather5,.-bn_mul_mont_gather5 +.type bn_mul4x_mont_gather5,@function +.align 32 +bn_mul4x_mont_gather5: +.cfi_startproc +.byte 0x67 + movq %rsp,%rax +.cfi_def_cfa_register %rax +.Lmul4x_enter: + andl $0x80108,%r11d + cmpl $0x80108,%r11d + je .Lmulx4x_enter + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 +.Lmul4x_prologue: + +.byte 0x67 + shll $3,%r9d + leaq (%r9,%r9,2),%r10 + negq %r9 + + + + + + + + + + + leaq -320(%rsp,%r9,2),%r11 + movq %rsp,%rbp + subq %rdi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb .Lmul4xsp_alt + subq %r11,%rbp + leaq -320(%rbp,%r9,2),%rbp + jmp .Lmul4xsp_done + +.align 32 +.Lmul4xsp_alt: + leaq 4096-320(,%r9,2),%r10 + leaq -320(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +.Lmul4xsp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lmul4x_page_walk + jmp .Lmul4x_page_walk_done + +.Lmul4x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lmul4x_page_walk +.Lmul4x_page_walk_done: + + negq %r9 + + movq %rax,40(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 +.Lmul4x_body: + + call mul4x_internal + + movq 40(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq $1,%rax + + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lmul4x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_mul4x_mont_gather5,.-bn_mul4x_mont_gather5 + +.type mul4x_internal,@function +.align 32 +mul4x_internal: +.cfi_startproc + shlq $5,%r9 + movd 8(%rax),%xmm5 + leaq .Linc(%rip),%rax + leaq 128(%rdx,%r9,1),%r13 + shrq $5,%r9 + movdqa 0(%rax),%xmm0 + movdqa 16(%rax),%xmm1 + leaq 88-112(%rsp,%r9,1),%r10 + leaq 128(%rdx),%r12 + + pshufd $0,%xmm5,%xmm5 + movdqa %xmm1,%xmm4 +.byte 0x67,0x67 + movdqa %xmm1,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 +.byte 0x67 + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,112(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,128(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,144(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,160(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,176(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,192(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,208(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,224(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,240(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,256(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,272(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,288(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,304(%r10) + + paddd %xmm2,%xmm3 +.byte 0x67 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,320(%r10) + + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,336(%r10) + pand 64(%r12),%xmm0 + + pand 80(%r12),%xmm1 + pand 96(%r12),%xmm2 + movdqa %xmm3,352(%r10) + pand 112(%r12),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -128(%r12),%xmm4 + movdqa -112(%r12),%xmm5 + movdqa -96(%r12),%xmm2 + pand 112(%r10),%xmm4 + movdqa -80(%r12),%xmm3 + pand 128(%r10),%xmm5 + por %xmm4,%xmm0 + pand 144(%r10),%xmm2 + por %xmm5,%xmm1 + pand 160(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -64(%r12),%xmm4 + movdqa -48(%r12),%xmm5 + movdqa -32(%r12),%xmm2 + pand 176(%r10),%xmm4 + movdqa -16(%r12),%xmm3 + pand 192(%r10),%xmm5 + por %xmm4,%xmm0 + pand 208(%r10),%xmm2 + por %xmm5,%xmm1 + pand 224(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa 0(%r12),%xmm4 + movdqa 16(%r12),%xmm5 + movdqa 32(%r12),%xmm2 + pand 240(%r10),%xmm4 + movdqa 48(%r12),%xmm3 + pand 256(%r10),%xmm5 + por %xmm4,%xmm0 + pand 272(%r10),%xmm2 + por %xmm5,%xmm1 + pand 288(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + por %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 + por %xmm1,%xmm0 + leaq 256(%r12),%r12 +.byte 102,72,15,126,195 + + movq %r13,16+8(%rsp) + movq %rdi,56+8(%rsp) + + movq (%r8),%r8 + movq (%rsi),%rax + leaq (%rsi,%r9,1),%rsi + negq %r9 + + movq %r8,%rbp + mulq %rbx + movq %rax,%r10 + movq (%rcx),%rax + + imulq %r10,%rbp + leaq 64+8(%rsp),%r14 + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi,%r9,1),%rax + adcq $0,%rdx + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq 16(%rsi,%r9,1),%rax + adcq $0,%rdx + addq %r11,%rdi + leaq 32(%r9),%r15 + leaq 32(%rcx),%rcx + adcq $0,%rdx + movq %rdi,(%r14) + movq %rdx,%r13 + jmp .L1st4x + +.align 32 +.L1st4x: + mulq %rbx + addq %rax,%r10 + movq -16(%rcx),%rax + leaq 32(%r14),%r14 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-24(%r14) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-16(%r14) + movq %rdx,%r13 + + mulq %rbx + addq %rax,%r10 + movq 0(%rcx),%rax + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq 8(%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-8(%r14) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq 16(%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r11,%rdi + leaq 32(%rcx),%rcx + adcq $0,%rdx + movq %rdi,(%r14) + movq %rdx,%r13 + + addq $32,%r15 + jnz .L1st4x + + mulq %rbx + addq %rax,%r10 + movq -16(%rcx),%rax + leaq 32(%r14),%r14 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-24(%r14) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi,%r9,1),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-16(%r14) + movq %rdx,%r13 + + leaq (%rcx,%r9,1),%rcx + + xorq %rdi,%rdi + addq %r10,%r13 + adcq $0,%rdi + movq %r13,-8(%r14) + + jmp .Louter4x + +.align 32 +.Louter4x: + leaq 16+128(%r14),%rdx + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + movdqa -128(%r12),%xmm0 + movdqa -112(%r12),%xmm1 + movdqa -96(%r12),%xmm2 + movdqa -80(%r12),%xmm3 + pand -128(%rdx),%xmm0 + pand -112(%rdx),%xmm1 + por %xmm0,%xmm4 + pand -96(%rdx),%xmm2 + por %xmm1,%xmm5 + pand -80(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa -64(%r12),%xmm0 + movdqa -48(%r12),%xmm1 + movdqa -32(%r12),%xmm2 + movdqa -16(%r12),%xmm3 + pand -64(%rdx),%xmm0 + pand -48(%rdx),%xmm1 + por %xmm0,%xmm4 + pand -32(%rdx),%xmm2 + por %xmm1,%xmm5 + pand -16(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 0(%r12),%xmm0 + movdqa 16(%r12),%xmm1 + movdqa 32(%r12),%xmm2 + movdqa 48(%r12),%xmm3 + pand 0(%rdx),%xmm0 + pand 16(%rdx),%xmm1 + por %xmm0,%xmm4 + pand 32(%rdx),%xmm2 + por %xmm1,%xmm5 + pand 48(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 64(%r12),%xmm0 + movdqa 80(%r12),%xmm1 + movdqa 96(%r12),%xmm2 + movdqa 112(%r12),%xmm3 + pand 64(%rdx),%xmm0 + pand 80(%rdx),%xmm1 + por %xmm0,%xmm4 + pand 96(%rdx),%xmm2 + por %xmm1,%xmm5 + pand 112(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 + por %xmm4,%xmm0 + leaq 256(%r12),%r12 +.byte 102,72,15,126,195 + + movq (%r14,%r9,1),%r10 + movq %r8,%rbp + mulq %rbx + addq %rax,%r10 + movq (%rcx),%rax + adcq $0,%rdx + + imulq %r10,%rbp + movq %rdx,%r11 + movq %rdi,(%r14) + + leaq (%r14,%r9,1),%r14 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi,%r9,1),%rax + adcq $0,%rdx + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx),%rax + adcq $0,%rdx + addq 8(%r14),%r11 + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq 16(%rsi,%r9,1),%rax + adcq $0,%rdx + addq %r11,%rdi + leaq 32(%r9),%r15 + leaq 32(%rcx),%rcx + adcq $0,%rdx + movq %rdx,%r13 + jmp .Linner4x + +.align 32 +.Linner4x: + mulq %rbx + addq %rax,%r10 + movq -16(%rcx),%rax + adcq $0,%rdx + addq 16(%r14),%r10 + leaq 32(%r14),%r14 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %rdi,-32(%r14) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx),%rax + adcq $0,%rdx + addq -8(%r14),%r11 + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %r13,-24(%r14) + movq %rdx,%r13 + + mulq %rbx + addq %rax,%r10 + movq 0(%rcx),%rax + adcq $0,%rdx + addq (%r14),%r10 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq 8(%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %rdi,-16(%r14) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx),%rax + adcq $0,%rdx + addq 8(%r14),%r11 + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq 16(%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r11,%rdi + leaq 32(%rcx),%rcx + adcq $0,%rdx + movq %r13,-8(%r14) + movq %rdx,%r13 + + addq $32,%r15 + jnz .Linner4x + + mulq %rbx + addq %rax,%r10 + movq -16(%rcx),%rax + adcq $0,%rdx + addq 16(%r14),%r10 + leaq 32(%r14),%r14 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %rdi,-32(%r14) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq %rbp,%rax + movq -8(%rcx),%rbp + adcq $0,%rdx + addq -8(%r14),%r11 + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi,%r9,1),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %r13,-24(%r14) + movq %rdx,%r13 + + movq %rdi,-16(%r14) + leaq (%rcx,%r9,1),%rcx + + xorq %rdi,%rdi + addq %r10,%r13 + adcq $0,%rdi + addq (%r14),%r13 + adcq $0,%rdi + movq %r13,-8(%r14) + + cmpq 16+8(%rsp),%r12 + jb .Louter4x + xorq %rax,%rax + subq %r13,%rbp + adcq %r15,%r15 + orq %r15,%rdi + subq %rdi,%rax + leaq (%r14,%r9,1),%rbx + movq (%rcx),%r12 + leaq (%rcx),%rbp + movq %r9,%rcx + sarq $3+2,%rcx + movq 56+8(%rsp),%rdi + decq %r12 + xorq %r10,%r10 + movq 8(%rbp),%r13 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 + jmp .Lsqr4x_sub_entry +.cfi_endproc +.size mul4x_internal,.-mul4x_internal +.globl bn_power5 +.type bn_power5,@function +.align 32 +bn_power5: +.cfi_startproc + movq %rsp,%rax +.cfi_def_cfa_register %rax + movl OPENSSL_ia32cap_P+8(%rip),%r11d + andl $0x80108,%r11d + cmpl $0x80108,%r11d + je .Lpowerx5_enter + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 +.Lpower5_prologue: + + shll $3,%r9d + leal (%r9,%r9,2),%r10d + negq %r9 + movq (%r8),%r8 + + + + + + + + + leaq -320(%rsp,%r9,2),%r11 + movq %rsp,%rbp + subq %rdi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb .Lpwr_sp_alt + subq %r11,%rbp + leaq -320(%rbp,%r9,2),%rbp + jmp .Lpwr_sp_done + +.align 32 +.Lpwr_sp_alt: + leaq 4096-320(,%r9,2),%r10 + leaq -320(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +.Lpwr_sp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lpwr_page_walk + jmp .Lpwr_page_walk_done + +.Lpwr_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lpwr_page_walk +.Lpwr_page_walk_done: + + movq %r9,%r10 + negq %r9 + + + + + + + + + + + movq %r8,32(%rsp) + movq %rax,40(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 +.Lpower5_body: +.byte 102,72,15,110,207 +.byte 102,72,15,110,209 +.byte 102,73,15,110,218 +.byte 102,72,15,110,226 + + call __bn_sqr8x_internal + call __bn_post4x_internal + call __bn_sqr8x_internal + call __bn_post4x_internal + call __bn_sqr8x_internal + call __bn_post4x_internal + call __bn_sqr8x_internal + call __bn_post4x_internal + call __bn_sqr8x_internal + call __bn_post4x_internal + +.byte 102,72,15,126,209 +.byte 102,72,15,126,226 + movq %rsi,%rdi + movq 40(%rsp),%rax + leaq 32(%rsp),%r8 + + call mul4x_internal + + movq 40(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq $1,%rax + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lpower5_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_power5,.-bn_power5 + +.globl bn_sqr8x_internal +.hidden bn_sqr8x_internal +.type bn_sqr8x_internal,@function +.align 32 +bn_sqr8x_internal: +__bn_sqr8x_internal: +.cfi_startproc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + leaq 32(%r10),%rbp + leaq (%rsi,%r9,1),%rsi + + movq %r9,%rcx + + + movq -32(%rsi,%rbp,1),%r14 + leaq 48+8(%rsp,%r9,2),%rdi + movq -24(%rsi,%rbp,1),%rax + leaq -32(%rdi,%rbp,1),%rdi + movq -16(%rsi,%rbp,1),%rbx + movq %rax,%r15 + + mulq %r14 + movq %rax,%r10 + movq %rbx,%rax + movq %rdx,%r11 + movq %r10,-24(%rdi,%rbp,1) + + mulq %r14 + addq %rax,%r11 + movq %rbx,%rax + adcq $0,%rdx + movq %r11,-16(%rdi,%rbp,1) + movq %rdx,%r10 + + + movq -8(%rsi,%rbp,1),%rbx + mulq %r15 + movq %rax,%r12 + movq %rbx,%rax + movq %rdx,%r13 + + leaq (%rbp),%rcx + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + movq %rdx,%r11 + adcq $0,%r11 + addq %r12,%r10 + adcq $0,%r11 + movq %r10,-8(%rdi,%rcx,1) + jmp .Lsqr4x_1st + +.align 32 +.Lsqr4x_1st: + movq (%rsi,%rcx,1),%rbx + mulq %r15 + addq %rax,%r13 + movq %rbx,%rax + movq %rdx,%r12 + adcq $0,%r12 + + mulq %r14 + addq %rax,%r11 + movq %rbx,%rax + movq 8(%rsi,%rcx,1),%rbx + movq %rdx,%r10 + adcq $0,%r10 + addq %r13,%r11 + adcq $0,%r10 + + + mulq %r15 + addq %rax,%r12 + movq %rbx,%rax + movq %r11,(%rdi,%rcx,1) + movq %rdx,%r13 + adcq $0,%r13 + + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + movq 16(%rsi,%rcx,1),%rbx + movq %rdx,%r11 + adcq $0,%r11 + addq %r12,%r10 + adcq $0,%r11 + + mulq %r15 + addq %rax,%r13 + movq %rbx,%rax + movq %r10,8(%rdi,%rcx,1) + movq %rdx,%r12 + adcq $0,%r12 + + mulq %r14 + addq %rax,%r11 + movq %rbx,%rax + movq 24(%rsi,%rcx,1),%rbx + movq %rdx,%r10 + adcq $0,%r10 + addq %r13,%r11 + adcq $0,%r10 + + + mulq %r15 + addq %rax,%r12 + movq %rbx,%rax + movq %r11,16(%rdi,%rcx,1) + movq %rdx,%r13 + adcq $0,%r13 + leaq 32(%rcx),%rcx + + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + movq %rdx,%r11 + adcq $0,%r11 + addq %r12,%r10 + adcq $0,%r11 + movq %r10,-8(%rdi,%rcx,1) + + cmpq $0,%rcx + jne .Lsqr4x_1st + + mulq %r15 + addq %rax,%r13 + leaq 16(%rbp),%rbp + adcq $0,%rdx + addq %r11,%r13 + adcq $0,%rdx + + movq %r13,(%rdi) + movq %rdx,%r12 + movq %rdx,8(%rdi) + jmp .Lsqr4x_outer + +.align 32 +.Lsqr4x_outer: + movq -32(%rsi,%rbp,1),%r14 + leaq 48+8(%rsp,%r9,2),%rdi + movq -24(%rsi,%rbp,1),%rax + leaq -32(%rdi,%rbp,1),%rdi + movq -16(%rsi,%rbp,1),%rbx + movq %rax,%r15 + + mulq %r14 + movq -24(%rdi,%rbp,1),%r10 + addq %rax,%r10 + movq %rbx,%rax + adcq $0,%rdx + movq %r10,-24(%rdi,%rbp,1) + movq %rdx,%r11 + + mulq %r14 + addq %rax,%r11 + movq %rbx,%rax + adcq $0,%rdx + addq -16(%rdi,%rbp,1),%r11 + movq %rdx,%r10 + adcq $0,%r10 + movq %r11,-16(%rdi,%rbp,1) + + xorq %r12,%r12 + + movq -8(%rsi,%rbp,1),%rbx + mulq %r15 + addq %rax,%r12 + movq %rbx,%rax + adcq $0,%rdx + addq -8(%rdi,%rbp,1),%r12 + movq %rdx,%r13 + adcq $0,%r13 + + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + adcq $0,%rdx + addq %r12,%r10 + movq %rdx,%r11 + adcq $0,%r11 + movq %r10,-8(%rdi,%rbp,1) + + leaq (%rbp),%rcx + jmp .Lsqr4x_inner + +.align 32 +.Lsqr4x_inner: + movq (%rsi,%rcx,1),%rbx + mulq %r15 + addq %rax,%r13 + movq %rbx,%rax + movq %rdx,%r12 + adcq $0,%r12 + addq (%rdi,%rcx,1),%r13 + adcq $0,%r12 + +.byte 0x67 + mulq %r14 + addq %rax,%r11 + movq %rbx,%rax + movq 8(%rsi,%rcx,1),%rbx + movq %rdx,%r10 + adcq $0,%r10 + addq %r13,%r11 + adcq $0,%r10 + + mulq %r15 + addq %rax,%r12 + movq %r11,(%rdi,%rcx,1) + movq %rbx,%rax + movq %rdx,%r13 + adcq $0,%r13 + addq 8(%rdi,%rcx,1),%r12 + leaq 16(%rcx),%rcx + adcq $0,%r13 + + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + adcq $0,%rdx + addq %r12,%r10 + movq %rdx,%r11 + adcq $0,%r11 + movq %r10,-8(%rdi,%rcx,1) + + cmpq $0,%rcx + jne .Lsqr4x_inner + +.byte 0x67 + mulq %r15 + addq %rax,%r13 + adcq $0,%rdx + addq %r11,%r13 + adcq $0,%rdx + + movq %r13,(%rdi) + movq %rdx,%r12 + movq %rdx,8(%rdi) + + addq $16,%rbp + jnz .Lsqr4x_outer + + + movq -32(%rsi),%r14 + leaq 48+8(%rsp,%r9,2),%rdi + movq -24(%rsi),%rax + leaq -32(%rdi,%rbp,1),%rdi + movq -16(%rsi),%rbx + movq %rax,%r15 + + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + movq %rdx,%r11 + adcq $0,%r11 + + mulq %r14 + addq %rax,%r11 + movq %rbx,%rax + movq %r10,-24(%rdi) + movq %rdx,%r10 + adcq $0,%r10 + addq %r13,%r11 + movq -8(%rsi),%rbx + adcq $0,%r10 + + mulq %r15 + addq %rax,%r12 + movq %rbx,%rax + movq %r11,-16(%rdi) + movq %rdx,%r13 + adcq $0,%r13 + + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + movq %rdx,%r11 + adcq $0,%r11 + addq %r12,%r10 + adcq $0,%r11 + movq %r10,-8(%rdi) + + mulq %r15 + addq %rax,%r13 + movq -16(%rsi),%rax + adcq $0,%rdx + addq %r11,%r13 + adcq $0,%rdx + + movq %r13,(%rdi) + movq %rdx,%r12 + movq %rdx,8(%rdi) + + mulq %rbx + addq $16,%rbp + xorq %r14,%r14 + subq %r9,%rbp + xorq %r15,%r15 + + addq %r12,%rax + adcq $0,%rdx + movq %rax,8(%rdi) + movq %rdx,16(%rdi) + movq %r15,24(%rdi) + + movq -16(%rsi,%rbp,1),%rax + leaq 48+8(%rsp),%rdi + xorq %r10,%r10 + movq 8(%rdi),%r11 + + leaq (%r14,%r10,2),%r12 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r13 + shrq $63,%r11 + orq %r10,%r13 + movq 16(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq 24(%rdi),%r11 + adcq %rax,%r12 + movq -8(%rsi,%rbp,1),%rax + movq %r12,(%rdi) + adcq %rdx,%r13 + + leaq (%r14,%r10,2),%rbx + movq %r13,8(%rdi) + sbbq %r15,%r15 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r8 + shrq $63,%r11 + orq %r10,%r8 + movq 32(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq 40(%rdi),%r11 + adcq %rax,%rbx + movq 0(%rsi,%rbp,1),%rax + movq %rbx,16(%rdi) + adcq %rdx,%r8 + leaq 16(%rbp),%rbp + movq %r8,24(%rdi) + sbbq %r15,%r15 + leaq 64(%rdi),%rdi + jmp .Lsqr4x_shift_n_add + +.align 32 +.Lsqr4x_shift_n_add: + leaq (%r14,%r10,2),%r12 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r13 + shrq $63,%r11 + orq %r10,%r13 + movq -16(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq -8(%rdi),%r11 + adcq %rax,%r12 + movq -8(%rsi,%rbp,1),%rax + movq %r12,-32(%rdi) + adcq %rdx,%r13 + + leaq (%r14,%r10,2),%rbx + movq %r13,-24(%rdi) + sbbq %r15,%r15 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r8 + shrq $63,%r11 + orq %r10,%r8 + movq 0(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq 8(%rdi),%r11 + adcq %rax,%rbx + movq 0(%rsi,%rbp,1),%rax + movq %rbx,-16(%rdi) + adcq %rdx,%r8 + + leaq (%r14,%r10,2),%r12 + movq %r8,-8(%rdi) + sbbq %r15,%r15 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r13 + shrq $63,%r11 + orq %r10,%r13 + movq 16(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq 24(%rdi),%r11 + adcq %rax,%r12 + movq 8(%rsi,%rbp,1),%rax + movq %r12,0(%rdi) + adcq %rdx,%r13 + + leaq (%r14,%r10,2),%rbx + movq %r13,8(%rdi) + sbbq %r15,%r15 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r8 + shrq $63,%r11 + orq %r10,%r8 + movq 32(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq 40(%rdi),%r11 + adcq %rax,%rbx + movq 16(%rsi,%rbp,1),%rax + movq %rbx,16(%rdi) + adcq %rdx,%r8 + movq %r8,24(%rdi) + sbbq %r15,%r15 + leaq 64(%rdi),%rdi + addq $32,%rbp + jnz .Lsqr4x_shift_n_add + + leaq (%r14,%r10,2),%r12 +.byte 0x67 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r13 + shrq $63,%r11 + orq %r10,%r13 + movq -16(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq -8(%rdi),%r11 + adcq %rax,%r12 + movq -8(%rsi),%rax + movq %r12,-32(%rdi) + adcq %rdx,%r13 + + leaq (%r14,%r10,2),%rbx + movq %r13,-24(%rdi) + sbbq %r15,%r15 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r8 + shrq $63,%r11 + orq %r10,%r8 + mulq %rax + negq %r15 + adcq %rax,%rbx + adcq %rdx,%r8 + movq %rbx,-16(%rdi) + movq %r8,-8(%rdi) +.byte 102,72,15,126,213 +__bn_sqr8x_reduction: + xorq %rax,%rax + leaq (%r9,%rbp,1),%rcx + leaq 48+8(%rsp,%r9,2),%rdx + movq %rcx,0+8(%rsp) + leaq 48+8(%rsp,%r9,1),%rdi + movq %rdx,8+8(%rsp) + negq %r9 + jmp .L8x_reduction_loop + +.align 32 +.L8x_reduction_loop: + leaq (%rdi,%r9,1),%rdi +.byte 0x66 + movq 0(%rdi),%rbx + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + movq 32(%rdi),%r12 + movq 40(%rdi),%r13 + movq 48(%rdi),%r14 + movq 56(%rdi),%r15 + movq %rax,(%rdx) + leaq 64(%rdi),%rdi + +.byte 0x67 + movq %rbx,%r8 + imulq 32+8(%rsp),%rbx + movq 0(%rbp),%rax + movl $8,%ecx + jmp .L8x_reduce + +.align 32 +.L8x_reduce: + mulq %rbx + movq 8(%rbp),%rax + negq %r8 + movq %rdx,%r8 + adcq $0,%r8 + + mulq %rbx + addq %rax,%r9 + movq 16(%rbp),%rax + adcq $0,%rdx + addq %r9,%r8 + movq %rbx,48-8+8(%rsp,%rcx,8) + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r10 + movq 24(%rbp),%rax + adcq $0,%rdx + addq %r10,%r9 + movq 32+8(%rsp),%rsi + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r11 + movq 32(%rbp),%rax + adcq $0,%rdx + imulq %r8,%rsi + addq %r11,%r10 + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r12 + movq 40(%rbp),%rax + adcq $0,%rdx + addq %r12,%r11 + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r13 + movq 48(%rbp),%rax + adcq $0,%rdx + addq %r13,%r12 + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r14 + movq 56(%rbp),%rax + adcq $0,%rdx + addq %r14,%r13 + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + movq %rsi,%rbx + addq %rax,%r15 + movq 0(%rbp),%rax + adcq $0,%rdx + addq %r15,%r14 + movq %rdx,%r15 + adcq $0,%r15 + + decl %ecx + jnz .L8x_reduce + + leaq 64(%rbp),%rbp + xorq %rax,%rax + movq 8+8(%rsp),%rdx + cmpq 0+8(%rsp),%rbp + jae .L8x_no_tail + +.byte 0x66 + addq 0(%rdi),%r8 + adcq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + sbbq %rsi,%rsi + + movq 48+56+8(%rsp),%rbx + movl $8,%ecx + movq 0(%rbp),%rax + jmp .L8x_tail + +.align 32 +.L8x_tail: + mulq %rbx + addq %rax,%r8 + movq 8(%rbp),%rax + movq %r8,(%rdi) + movq %rdx,%r8 + adcq $0,%r8 + + mulq %rbx + addq %rax,%r9 + movq 16(%rbp),%rax + adcq $0,%rdx + addq %r9,%r8 + leaq 8(%rdi),%rdi + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r10 + movq 24(%rbp),%rax + adcq $0,%rdx + addq %r10,%r9 + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r11 + movq 32(%rbp),%rax + adcq $0,%rdx + addq %r11,%r10 + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r12 + movq 40(%rbp),%rax + adcq $0,%rdx + addq %r12,%r11 + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r13 + movq 48(%rbp),%rax + adcq $0,%rdx + addq %r13,%r12 + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r14 + movq 56(%rbp),%rax + adcq $0,%rdx + addq %r14,%r13 + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + movq 48-16+8(%rsp,%rcx,8),%rbx + addq %rax,%r15 + adcq $0,%rdx + addq %r15,%r14 + movq 0(%rbp),%rax + movq %rdx,%r15 + adcq $0,%r15 + + decl %ecx + jnz .L8x_tail + + leaq 64(%rbp),%rbp + movq 8+8(%rsp),%rdx + cmpq 0+8(%rsp),%rbp + jae .L8x_tail_done + + movq 48+56+8(%rsp),%rbx + negq %rsi + movq 0(%rbp),%rax + adcq 0(%rdi),%r8 + adcq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + sbbq %rsi,%rsi + + movl $8,%ecx + jmp .L8x_tail + +.align 32 +.L8x_tail_done: + xorq %rax,%rax + addq (%rdx),%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + adcq $0,%r12 + adcq $0,%r13 + adcq $0,%r14 + adcq $0,%r15 + adcq $0,%rax + + negq %rsi +.L8x_no_tail: + adcq 0(%rdi),%r8 + adcq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + adcq $0,%rax + movq -8(%rbp),%rcx + xorq %rsi,%rsi + +.byte 102,72,15,126,213 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) +.byte 102,73,15,126,217 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + leaq 64(%rdi),%rdi + + cmpq %rdx,%rdi + jb .L8x_reduction_loop + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_sqr8x_internal,.-bn_sqr8x_internal +.type __bn_post4x_internal,@function +.align 32 +__bn_post4x_internal: +.cfi_startproc + movq 0(%rbp),%r12 + leaq (%rdi,%r9,1),%rbx + movq %r9,%rcx +.byte 102,72,15,126,207 + negq %rax +.byte 102,72,15,126,206 + sarq $3+2,%rcx + decq %r12 + xorq %r10,%r10 + movq 8(%rbp),%r13 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 + jmp .Lsqr4x_sub_entry + +.align 16 +.Lsqr4x_sub: + movq 0(%rbp),%r12 + movq 8(%rbp),%r13 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 +.Lsqr4x_sub_entry: + leaq 32(%rbp),%rbp + notq %r12 + notq %r13 + notq %r14 + notq %r15 + andq %rax,%r12 + andq %rax,%r13 + andq %rax,%r14 + andq %rax,%r15 + + negq %r10 + adcq 0(%rbx),%r12 + adcq 8(%rbx),%r13 + adcq 16(%rbx),%r14 + adcq 24(%rbx),%r15 + movq %r12,0(%rdi) + leaq 32(%rbx),%rbx + movq %r13,8(%rdi) + sbbq %r10,%r10 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + leaq 32(%rdi),%rdi + + incq %rcx + jnz .Lsqr4x_sub + + movq %r9,%r10 + negq %r9 + .byte 0xf3,0xc3 +.cfi_endproc +.size __bn_post4x_internal,.-__bn_post4x_internal +.type bn_mulx4x_mont_gather5,@function +.align 32 +bn_mulx4x_mont_gather5: +.cfi_startproc + movq %rsp,%rax +.cfi_def_cfa_register %rax +.Lmulx4x_enter: + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 +.Lmulx4x_prologue: + + shll $3,%r9d + leaq (%r9,%r9,2),%r10 + negq %r9 + movq (%r8),%r8 + + + + + + + + + + + leaq -320(%rsp,%r9,2),%r11 + movq %rsp,%rbp + subq %rdi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb .Lmulx4xsp_alt + subq %r11,%rbp + leaq -320(%rbp,%r9,2),%rbp + jmp .Lmulx4xsp_done + +.Lmulx4xsp_alt: + leaq 4096-320(,%r9,2),%r10 + leaq -320(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +.Lmulx4xsp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lmulx4x_page_walk + jmp .Lmulx4x_page_walk_done + +.Lmulx4x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lmulx4x_page_walk +.Lmulx4x_page_walk_done: + + + + + + + + + + + + + + movq %r8,32(%rsp) + movq %rax,40(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 +.Lmulx4x_body: + call mulx4x_internal + + movq 40(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq $1,%rax + + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lmulx4x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_mulx4x_mont_gather5,.-bn_mulx4x_mont_gather5 + +.type mulx4x_internal,@function +.align 32 +mulx4x_internal: +.cfi_startproc + movq %r9,8(%rsp) + movq %r9,%r10 + negq %r9 + shlq $5,%r9 + negq %r10 + leaq 128(%rdx,%r9,1),%r13 + shrq $5+5,%r9 + movd 8(%rax),%xmm5 + subq $1,%r9 + leaq .Linc(%rip),%rax + movq %r13,16+8(%rsp) + movq %r9,24+8(%rsp) + movq %rdi,56+8(%rsp) + movdqa 0(%rax),%xmm0 + movdqa 16(%rax),%xmm1 + leaq 88-112(%rsp,%r10,1),%r10 + leaq 128(%rdx),%rdi + + pshufd $0,%xmm5,%xmm5 + movdqa %xmm1,%xmm4 +.byte 0x67 + movdqa %xmm1,%xmm2 +.byte 0x67 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,112(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,128(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,144(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,160(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,176(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,192(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,208(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,224(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,240(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,256(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,272(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,288(%r10) + movdqa %xmm4,%xmm3 +.byte 0x67 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,304(%r10) + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,320(%r10) + + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,336(%r10) + + pand 64(%rdi),%xmm0 + pand 80(%rdi),%xmm1 + pand 96(%rdi),%xmm2 + movdqa %xmm3,352(%r10) + pand 112(%rdi),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -128(%rdi),%xmm4 + movdqa -112(%rdi),%xmm5 + movdqa -96(%rdi),%xmm2 + pand 112(%r10),%xmm4 + movdqa -80(%rdi),%xmm3 + pand 128(%r10),%xmm5 + por %xmm4,%xmm0 + pand 144(%r10),%xmm2 + por %xmm5,%xmm1 + pand 160(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -64(%rdi),%xmm4 + movdqa -48(%rdi),%xmm5 + movdqa -32(%rdi),%xmm2 + pand 176(%r10),%xmm4 + movdqa -16(%rdi),%xmm3 + pand 192(%r10),%xmm5 + por %xmm4,%xmm0 + pand 208(%r10),%xmm2 + por %xmm5,%xmm1 + pand 224(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa 0(%rdi),%xmm4 + movdqa 16(%rdi),%xmm5 + movdqa 32(%rdi),%xmm2 + pand 240(%r10),%xmm4 + movdqa 48(%rdi),%xmm3 + pand 256(%r10),%xmm5 + por %xmm4,%xmm0 + pand 272(%r10),%xmm2 + por %xmm5,%xmm1 + pand 288(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + pxor %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 + por %xmm1,%xmm0 + leaq 256(%rdi),%rdi +.byte 102,72,15,126,194 + leaq 64+32+8(%rsp),%rbx + + movq %rdx,%r9 + mulxq 0(%rsi),%r8,%rax + mulxq 8(%rsi),%r11,%r12 + addq %rax,%r11 + mulxq 16(%rsi),%rax,%r13 + adcq %rax,%r12 + adcq $0,%r13 + mulxq 24(%rsi),%rax,%r14 + + movq %r8,%r15 + imulq 32+8(%rsp),%r8 + xorq %rbp,%rbp + movq %r8,%rdx + + movq %rdi,8+8(%rsp) + + leaq 32(%rsi),%rsi + adcxq %rax,%r13 + adcxq %rbp,%r14 + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%r15 + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + mulxq 16(%rcx),%rax,%r12 + movq 24+8(%rsp),%rdi + movq %r10,-32(%rbx) + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-24(%rbx) + adcxq %rax,%r12 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r12,-16(%rbx) + jmp .Lmulx4x_1st + +.align 32 +.Lmulx4x_1st: + adcxq %rbp,%r15 + mulxq 0(%rsi),%r10,%rax + adcxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 +.byte 0x67,0x67 + movq %r8,%rdx + adcxq %rax,%r13 + adcxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + movq %r11,-32(%rbx) + adoxq %r15,%r13 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r13,-16(%rbx) + + decq %rdi + jnz .Lmulx4x_1st + + movq 8(%rsp),%rax + adcq %rbp,%r15 + leaq (%rsi,%rax,1),%rsi + addq %r15,%r14 + movq 8+8(%rsp),%rdi + adcq %rbp,%rbp + movq %r14,-8(%rbx) + jmp .Lmulx4x_outer + +.align 32 +.Lmulx4x_outer: + leaq 16-256(%rbx),%r10 + pxor %xmm4,%xmm4 +.byte 0x67,0x67 + pxor %xmm5,%xmm5 + movdqa -128(%rdi),%xmm0 + movdqa -112(%rdi),%xmm1 + movdqa -96(%rdi),%xmm2 + pand 256(%r10),%xmm0 + movdqa -80(%rdi),%xmm3 + pand 272(%r10),%xmm1 + por %xmm0,%xmm4 + pand 288(%r10),%xmm2 + por %xmm1,%xmm5 + pand 304(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa -64(%rdi),%xmm0 + movdqa -48(%rdi),%xmm1 + movdqa -32(%rdi),%xmm2 + pand 320(%r10),%xmm0 + movdqa -16(%rdi),%xmm3 + pand 336(%r10),%xmm1 + por %xmm0,%xmm4 + pand 352(%r10),%xmm2 + por %xmm1,%xmm5 + pand 368(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 0(%rdi),%xmm0 + movdqa 16(%rdi),%xmm1 + movdqa 32(%rdi),%xmm2 + pand 384(%r10),%xmm0 + movdqa 48(%rdi),%xmm3 + pand 400(%r10),%xmm1 + por %xmm0,%xmm4 + pand 416(%r10),%xmm2 + por %xmm1,%xmm5 + pand 432(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 64(%rdi),%xmm0 + movdqa 80(%rdi),%xmm1 + movdqa 96(%rdi),%xmm2 + pand 448(%r10),%xmm0 + movdqa 112(%rdi),%xmm3 + pand 464(%r10),%xmm1 + por %xmm0,%xmm4 + pand 480(%r10),%xmm2 + por %xmm1,%xmm5 + pand 496(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 + por %xmm4,%xmm0 + leaq 256(%rdi),%rdi +.byte 102,72,15,126,194 + + movq %rbp,(%rbx) + leaq 32(%rbx,%rax,1),%rbx + mulxq 0(%rsi),%r8,%r11 + xorq %rbp,%rbp + movq %rdx,%r9 + mulxq 8(%rsi),%r14,%r12 + adoxq -32(%rbx),%r8 + adcxq %r14,%r11 + mulxq 16(%rsi),%r15,%r13 + adoxq -24(%rbx),%r11 + adcxq %r15,%r12 + mulxq 24(%rsi),%rdx,%r14 + adoxq -16(%rbx),%r12 + adcxq %rdx,%r13 + leaq (%rcx,%rax,1),%rcx + leaq 32(%rsi),%rsi + adoxq -8(%rbx),%r13 + adcxq %rbp,%r14 + adoxq %rbp,%r14 + + movq %r8,%r15 + imulq 32+8(%rsp),%r8 + + movq %r8,%rdx + xorq %rbp,%rbp + movq %rdi,8+8(%rsp) + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%r15 + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + mulxq 16(%rcx),%rax,%r12 + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq 24+8(%rsp),%rdi + movq %r10,-32(%rbx) + adcxq %rax,%r12 + movq %r11,-24(%rbx) + adoxq %rbp,%r15 + movq %r12,-16(%rbx) + leaq 32(%rcx),%rcx + jmp .Lmulx4x_inner + +.align 32 +.Lmulx4x_inner: + mulxq 0(%rsi),%r10,%rax + adcxq %rbp,%r15 + adoxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq 0(%rbx),%r10 + adoxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq 8(%rbx),%r11 + adoxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 + movq %r8,%rdx + adcxq 16(%rbx),%r12 + adoxq %rax,%r13 + adcxq 24(%rbx),%r13 + adoxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + adcxq %rbp,%r14 + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + adoxq %r15,%r13 + movq %r11,-32(%rbx) + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + leaq 32(%rcx),%rcx + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + movq %r13,-16(%rbx) + + decq %rdi + jnz .Lmulx4x_inner + + movq 0+8(%rsp),%rax + adcq %rbp,%r15 + subq 0(%rbx),%rdi + movq 8+8(%rsp),%rdi + movq 16+8(%rsp),%r10 + adcq %r15,%r14 + leaq (%rsi,%rax,1),%rsi + adcq %rbp,%rbp + movq %r14,-8(%rbx) + + cmpq %r10,%rdi + jb .Lmulx4x_outer + + movq -8(%rcx),%r10 + movq %rbp,%r8 + movq (%rcx,%rax,1),%r12 + leaq (%rcx,%rax,1),%rbp + movq %rax,%rcx + leaq (%rbx,%rax,1),%rdi + xorl %eax,%eax + xorq %r15,%r15 + subq %r14,%r10 + adcq %r15,%r15 + orq %r15,%r8 + sarq $3+2,%rcx + subq %r8,%rax + movq 56+8(%rsp),%rdx + decq %r12 + movq 8(%rbp),%r13 + xorq %r8,%r8 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 + jmp .Lsqrx4x_sub_entry +.cfi_endproc +.size mulx4x_internal,.-mulx4x_internal +.type bn_powerx5,@function +.align 32 +bn_powerx5: +.cfi_startproc + movq %rsp,%rax +.cfi_def_cfa_register %rax +.Lpowerx5_enter: + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 +.Lpowerx5_prologue: + + shll $3,%r9d + leaq (%r9,%r9,2),%r10 + negq %r9 + movq (%r8),%r8 + + + + + + + + + leaq -320(%rsp,%r9,2),%r11 + movq %rsp,%rbp + subq %rdi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb .Lpwrx_sp_alt + subq %r11,%rbp + leaq -320(%rbp,%r9,2),%rbp + jmp .Lpwrx_sp_done + +.align 32 +.Lpwrx_sp_alt: + leaq 4096-320(,%r9,2),%r10 + leaq -320(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +.Lpwrx_sp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lpwrx_page_walk + jmp .Lpwrx_page_walk_done + +.Lpwrx_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lpwrx_page_walk +.Lpwrx_page_walk_done: + + movq %r9,%r10 + negq %r9 + + + + + + + + + + + + + pxor %xmm0,%xmm0 +.byte 102,72,15,110,207 +.byte 102,72,15,110,209 +.byte 102,73,15,110,218 +.byte 102,72,15,110,226 + movq %r8,32(%rsp) + movq %rax,40(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 +.Lpowerx5_body: + + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + + movq %r10,%r9 + movq %rsi,%rdi +.byte 102,72,15,126,209 +.byte 102,72,15,126,226 + movq 40(%rsp),%rax + + call mulx4x_internal + + movq 40(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq $1,%rax + + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lpowerx5_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_powerx5,.-bn_powerx5 + +.globl bn_sqrx8x_internal +.hidden bn_sqrx8x_internal +.type bn_sqrx8x_internal,@function +.align 32 +bn_sqrx8x_internal: +__bn_sqrx8x_internal: +.cfi_startproc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + leaq 48+8(%rsp),%rdi + leaq (%rsi,%r9,1),%rbp + movq %r9,0+8(%rsp) + movq %rbp,8+8(%rsp) + jmp .Lsqr8x_zero_start + +.align 32 +.byte 0x66,0x66,0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 +.Lsqrx8x_zero: +.byte 0x3e + movdqa %xmm0,0(%rdi) + movdqa %xmm0,16(%rdi) + movdqa %xmm0,32(%rdi) + movdqa %xmm0,48(%rdi) +.Lsqr8x_zero_start: + movdqa %xmm0,64(%rdi) + movdqa %xmm0,80(%rdi) + movdqa %xmm0,96(%rdi) + movdqa %xmm0,112(%rdi) + leaq 128(%rdi),%rdi + subq $64,%r9 + jnz .Lsqrx8x_zero + + movq 0(%rsi),%rdx + + xorq %r10,%r10 + xorq %r11,%r11 + xorq %r12,%r12 + xorq %r13,%r13 + xorq %r14,%r14 + xorq %r15,%r15 + leaq 48+8(%rsp),%rdi + xorq %rbp,%rbp + jmp .Lsqrx8x_outer_loop + +.align 32 +.Lsqrx8x_outer_loop: + mulxq 8(%rsi),%r8,%rax + adcxq %r9,%r8 + adoxq %rax,%r10 + mulxq 16(%rsi),%r9,%rax + adcxq %r10,%r9 + adoxq %rax,%r11 +.byte 0xc4,0xe2,0xab,0xf6,0x86,0x18,0x00,0x00,0x00 + adcxq %r11,%r10 + adoxq %rax,%r12 +.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x20,0x00,0x00,0x00 + adcxq %r12,%r11 + adoxq %rax,%r13 + mulxq 40(%rsi),%r12,%rax + adcxq %r13,%r12 + adoxq %rax,%r14 + mulxq 48(%rsi),%r13,%rax + adcxq %r14,%r13 + adoxq %r15,%rax + mulxq 56(%rsi),%r14,%r15 + movq 8(%rsi),%rdx + adcxq %rax,%r14 + adoxq %rbp,%r15 + adcq 64(%rdi),%r15 + movq %r8,8(%rdi) + movq %r9,16(%rdi) + sbbq %rcx,%rcx + xorq %rbp,%rbp + + + mulxq 16(%rsi),%r8,%rbx + mulxq 24(%rsi),%r9,%rax + adcxq %r10,%r8 + adoxq %rbx,%r9 + mulxq 32(%rsi),%r10,%rbx + adcxq %r11,%r9 + adoxq %rax,%r10 +.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x28,0x00,0x00,0x00 + adcxq %r12,%r10 + adoxq %rbx,%r11 +.byte 0xc4,0xe2,0x9b,0xf6,0x9e,0x30,0x00,0x00,0x00 + adcxq %r13,%r11 + adoxq %r14,%r12 +.byte 0xc4,0x62,0x93,0xf6,0xb6,0x38,0x00,0x00,0x00 + movq 16(%rsi),%rdx + adcxq %rax,%r12 + adoxq %rbx,%r13 + adcxq %r15,%r13 + adoxq %rbp,%r14 + adcxq %rbp,%r14 + + movq %r8,24(%rdi) + movq %r9,32(%rdi) + + mulxq 24(%rsi),%r8,%rbx + mulxq 32(%rsi),%r9,%rax + adcxq %r10,%r8 + adoxq %rbx,%r9 + mulxq 40(%rsi),%r10,%rbx + adcxq %r11,%r9 + adoxq %rax,%r10 +.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x30,0x00,0x00,0x00 + adcxq %r12,%r10 + adoxq %r13,%r11 +.byte 0xc4,0x62,0x9b,0xf6,0xae,0x38,0x00,0x00,0x00 +.byte 0x3e + movq 24(%rsi),%rdx + adcxq %rbx,%r11 + adoxq %rax,%r12 + adcxq %r14,%r12 + movq %r8,40(%rdi) + movq %r9,48(%rdi) + mulxq 32(%rsi),%r8,%rax + adoxq %rbp,%r13 + adcxq %rbp,%r13 + + mulxq 40(%rsi),%r9,%rbx + adcxq %r10,%r8 + adoxq %rax,%r9 + mulxq 48(%rsi),%r10,%rax + adcxq %r11,%r9 + adoxq %r12,%r10 + mulxq 56(%rsi),%r11,%r12 + movq 32(%rsi),%rdx + movq 40(%rsi),%r14 + adcxq %rbx,%r10 + adoxq %rax,%r11 + movq 48(%rsi),%r15 + adcxq %r13,%r11 + adoxq %rbp,%r12 + adcxq %rbp,%r12 + + movq %r8,56(%rdi) + movq %r9,64(%rdi) + + mulxq %r14,%r9,%rax + movq 56(%rsi),%r8 + adcxq %r10,%r9 + mulxq %r15,%r10,%rbx + adoxq %rax,%r10 + adcxq %r11,%r10 + mulxq %r8,%r11,%rax + movq %r14,%rdx + adoxq %rbx,%r11 + adcxq %r12,%r11 + + adcxq %rbp,%rax + + mulxq %r15,%r14,%rbx + mulxq %r8,%r12,%r13 + movq %r15,%rdx + leaq 64(%rsi),%rsi + adcxq %r14,%r11 + adoxq %rbx,%r12 + adcxq %rax,%r12 + adoxq %rbp,%r13 + +.byte 0x67,0x67 + mulxq %r8,%r8,%r14 + adcxq %r8,%r13 + adcxq %rbp,%r14 + + cmpq 8+8(%rsp),%rsi + je .Lsqrx8x_outer_break + + negq %rcx + movq $-8,%rcx + movq %rbp,%r15 + movq 64(%rdi),%r8 + adcxq 72(%rdi),%r9 + adcxq 80(%rdi),%r10 + adcxq 88(%rdi),%r11 + adcq 96(%rdi),%r12 + adcq 104(%rdi),%r13 + adcq 112(%rdi),%r14 + adcq 120(%rdi),%r15 + leaq (%rsi),%rbp + leaq 128(%rdi),%rdi + sbbq %rax,%rax + + movq -64(%rsi),%rdx + movq %rax,16+8(%rsp) + movq %rdi,24+8(%rsp) + + + xorl %eax,%eax + jmp .Lsqrx8x_loop + +.align 32 +.Lsqrx8x_loop: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rax,%rbx + adoxq %r9,%r8 + + mulxq 8(%rbp),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rax,%r10 + adcxq %rax,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rbp),%rax,%r14 + movq %rbx,(%rdi,%rcx,8) + movl $0,%ebx + adcxq %rax,%r13 + adoxq %r15,%r14 + +.byte 0xc4,0x62,0xfb,0xf6,0xbd,0x38,0x00,0x00,0x00 + movq 8(%rsi,%rcx,8),%rdx + adcxq %rax,%r14 + adoxq %rbx,%r15 + adcxq %rbx,%r15 + +.byte 0x67 + incq %rcx + jnz .Lsqrx8x_loop + + leaq 64(%rbp),%rbp + movq $-8,%rcx + cmpq 8+8(%rsp),%rbp + je .Lsqrx8x_break + + subq 16+8(%rsp),%rbx +.byte 0x66 + movq -64(%rsi),%rdx + adcxq 0(%rdi),%r8 + adcxq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + leaq 64(%rdi),%rdi +.byte 0x67 + sbbq %rax,%rax + xorl %ebx,%ebx + movq %rax,16+8(%rsp) + jmp .Lsqrx8x_loop + +.align 32 +.Lsqrx8x_break: + xorq %rbp,%rbp + subq 16+8(%rsp),%rbx + adcxq %rbp,%r8 + movq 24+8(%rsp),%rcx + adcxq %rbp,%r9 + movq 0(%rsi),%rdx + adcq $0,%r10 + movq %r8,0(%rdi) + adcq $0,%r11 + adcq $0,%r12 + adcq $0,%r13 + adcq $0,%r14 + adcq $0,%r15 + cmpq %rcx,%rdi + je .Lsqrx8x_outer_loop + + movq %r9,8(%rdi) + movq 8(%rcx),%r9 + movq %r10,16(%rdi) + movq 16(%rcx),%r10 + movq %r11,24(%rdi) + movq 24(%rcx),%r11 + movq %r12,32(%rdi) + movq 32(%rcx),%r12 + movq %r13,40(%rdi) + movq 40(%rcx),%r13 + movq %r14,48(%rdi) + movq 48(%rcx),%r14 + movq %r15,56(%rdi) + movq 56(%rcx),%r15 + movq %rcx,%rdi + jmp .Lsqrx8x_outer_loop + +.align 32 +.Lsqrx8x_outer_break: + movq %r9,72(%rdi) +.byte 102,72,15,126,217 + movq %r10,80(%rdi) + movq %r11,88(%rdi) + movq %r12,96(%rdi) + movq %r13,104(%rdi) + movq %r14,112(%rdi) + leaq 48+8(%rsp),%rdi + movq (%rsi,%rcx,1),%rdx + + movq 8(%rdi),%r11 + xorq %r10,%r10 + movq 0+8(%rsp),%r9 + adoxq %r11,%r11 + movq 16(%rdi),%r12 + movq 24(%rdi),%r13 + + +.align 32 +.Lsqrx4x_shift_n_add: + mulxq %rdx,%rax,%rbx + adoxq %r12,%r12 + adcxq %r10,%rax +.byte 0x48,0x8b,0x94,0x0e,0x08,0x00,0x00,0x00 +.byte 0x4c,0x8b,0x97,0x20,0x00,0x00,0x00 + adoxq %r13,%r13 + adcxq %r11,%rbx + movq 40(%rdi),%r11 + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + + mulxq %rdx,%rax,%rbx + adoxq %r10,%r10 + adcxq %r12,%rax + movq 16(%rsi,%rcx,1),%rdx + movq 48(%rdi),%r12 + adoxq %r11,%r11 + adcxq %r13,%rbx + movq 56(%rdi),%r13 + movq %rax,16(%rdi) + movq %rbx,24(%rdi) + + mulxq %rdx,%rax,%rbx + adoxq %r12,%r12 + adcxq %r10,%rax + movq 24(%rsi,%rcx,1),%rdx + leaq 32(%rcx),%rcx + movq 64(%rdi),%r10 + adoxq %r13,%r13 + adcxq %r11,%rbx + movq 72(%rdi),%r11 + movq %rax,32(%rdi) + movq %rbx,40(%rdi) + + mulxq %rdx,%rax,%rbx + adoxq %r10,%r10 + adcxq %r12,%rax + jrcxz .Lsqrx4x_shift_n_add_break +.byte 0x48,0x8b,0x94,0x0e,0x00,0x00,0x00,0x00 + adoxq %r11,%r11 + adcxq %r13,%rbx + movq 80(%rdi),%r12 + movq 88(%rdi),%r13 + movq %rax,48(%rdi) + movq %rbx,56(%rdi) + leaq 64(%rdi),%rdi + nop + jmp .Lsqrx4x_shift_n_add + +.align 32 +.Lsqrx4x_shift_n_add_break: + adcxq %r13,%rbx + movq %rax,48(%rdi) + movq %rbx,56(%rdi) + leaq 64(%rdi),%rdi +.byte 102,72,15,126,213 +__bn_sqrx8x_reduction: + xorl %eax,%eax + movq 32+8(%rsp),%rbx + movq 48+8(%rsp),%rdx + leaq -64(%rbp,%r9,1),%rcx + + movq %rcx,0+8(%rsp) + movq %rdi,8+8(%rsp) + + leaq 48+8(%rsp),%rdi + jmp .Lsqrx8x_reduction_loop + +.align 32 +.Lsqrx8x_reduction_loop: + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + movq 32(%rdi),%r12 + movq %rdx,%r8 + imulq %rbx,%rdx + movq 40(%rdi),%r13 + movq 48(%rdi),%r14 + movq 56(%rdi),%r15 + movq %rax,24+8(%rsp) + + leaq 64(%rdi),%rdi + xorq %rsi,%rsi + movq $-8,%rcx + jmp .Lsqrx8x_reduce + +.align 32 +.Lsqrx8x_reduce: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rbx,%rax + adoxq %r9,%r8 + + mulxq 8(%rbp),%rbx,%r9 + adcxq %rbx,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rbx,%r10 + adcxq %rbx,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rbx,%r11 + adcxq %rbx,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x00 + movq %rdx,%rax + movq %r8,%rdx + adcxq %rbx,%r11 + adoxq %r13,%r12 + + mulxq 32+8(%rsp),%rbx,%rdx + movq %rax,%rdx + movq %rax,64+48+8(%rsp,%rcx,8) + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rbp),%rax,%r14 + adcxq %rax,%r13 + adoxq %r15,%r14 + + mulxq 56(%rbp),%rax,%r15 + movq %rbx,%rdx + adcxq %rax,%r14 + adoxq %rsi,%r15 + adcxq %rsi,%r15 + +.byte 0x67,0x67,0x67 + incq %rcx + jnz .Lsqrx8x_reduce + + movq %rsi,%rax + cmpq 0+8(%rsp),%rbp + jae .Lsqrx8x_no_tail + + movq 48+8(%rsp),%rdx + addq 0(%rdi),%r8 + leaq 64(%rbp),%rbp + movq $-8,%rcx + adcxq 8(%rdi),%r9 + adcxq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + leaq 64(%rdi),%rdi + sbbq %rax,%rax + + xorq %rsi,%rsi + movq %rax,16+8(%rsp) + jmp .Lsqrx8x_tail + +.align 32 +.Lsqrx8x_tail: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rax,%rbx + adoxq %r9,%r8 + + mulxq 8(%rbp),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rax,%r10 + adcxq %rax,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rbp),%rax,%r14 + adcxq %rax,%r13 + adoxq %r15,%r14 + + mulxq 56(%rbp),%rax,%r15 + movq 72+48+8(%rsp,%rcx,8),%rdx + adcxq %rax,%r14 + adoxq %rsi,%r15 + movq %rbx,(%rdi,%rcx,8) + movq %r8,%rbx + adcxq %rsi,%r15 + + incq %rcx + jnz .Lsqrx8x_tail + + cmpq 0+8(%rsp),%rbp + jae .Lsqrx8x_tail_done + + subq 16+8(%rsp),%rsi + movq 48+8(%rsp),%rdx + leaq 64(%rbp),%rbp + adcq 0(%rdi),%r8 + adcq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + leaq 64(%rdi),%rdi + sbbq %rax,%rax + subq $8,%rcx + + xorq %rsi,%rsi + movq %rax,16+8(%rsp) + jmp .Lsqrx8x_tail + +.align 32 +.Lsqrx8x_tail_done: + xorq %rax,%rax + addq 24+8(%rsp),%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + adcq $0,%r12 + adcq $0,%r13 + adcq $0,%r14 + adcq $0,%r15 + adcq $0,%rax + + subq 16+8(%rsp),%rsi +.Lsqrx8x_no_tail: + adcq 0(%rdi),%r8 +.byte 102,72,15,126,217 + adcq 8(%rdi),%r9 + movq 56(%rbp),%rsi +.byte 102,72,15,126,213 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + adcq $0,%rax + + movq 32+8(%rsp),%rbx + movq 64(%rdi,%rcx,1),%rdx + + movq %r8,0(%rdi) + leaq 64(%rdi),%r8 + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + leaq 64(%rdi,%rcx,1),%rdi + cmpq 8+8(%rsp),%r8 + jb .Lsqrx8x_reduction_loop + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_sqrx8x_internal,.-bn_sqrx8x_internal +.align 32 +__bn_postx4x_internal: +.cfi_startproc + movq 0(%rbp),%r12 + movq %rcx,%r10 + movq %rcx,%r9 + negq %rax + sarq $3+2,%rcx + +.byte 102,72,15,126,202 +.byte 102,72,15,126,206 + decq %r12 + movq 8(%rbp),%r13 + xorq %r8,%r8 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 + jmp .Lsqrx4x_sub_entry + +.align 16 +.Lsqrx4x_sub: + movq 0(%rbp),%r12 + movq 8(%rbp),%r13 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 +.Lsqrx4x_sub_entry: + andnq %rax,%r12,%r12 + leaq 32(%rbp),%rbp + andnq %rax,%r13,%r13 + andnq %rax,%r14,%r14 + andnq %rax,%r15,%r15 + + negq %r8 + adcq 0(%rdi),%r12 + adcq 8(%rdi),%r13 + adcq 16(%rdi),%r14 + adcq 24(%rdi),%r15 + movq %r12,0(%rdx) + leaq 32(%rdi),%rdi + movq %r13,8(%rdx) + sbbq %r8,%r8 + movq %r14,16(%rdx) + movq %r15,24(%rdx) + leaq 32(%rdx),%rdx + + incq %rcx + jnz .Lsqrx4x_sub + + negq %r9 + + .byte 0xf3,0xc3 +.cfi_endproc +.size __bn_postx4x_internal,.-__bn_postx4x_internal +.globl bn_get_bits5 +.type bn_get_bits5,@function +.align 16 +bn_get_bits5: +.cfi_startproc + leaq 0(%rdi),%r10 + leaq 1(%rdi),%r11 + movl %esi,%ecx + shrl $4,%esi + andl $15,%ecx + leal -8(%rcx),%eax + cmpl $11,%ecx + cmovaq %r11,%r10 + cmoval %eax,%ecx + movzwl (%r10,%rsi,2),%eax + shrl %cl,%eax + andl $31,%eax + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_get_bits5,.-bn_get_bits5 + +.globl bn_scatter5 +.type bn_scatter5,@function +.align 16 +bn_scatter5: +.cfi_startproc + cmpl $0,%esi + jz .Lscatter_epilogue + leaq (%rdx,%rcx,8),%rdx +.Lscatter: + movq (%rdi),%rax + leaq 8(%rdi),%rdi + movq %rax,(%rdx) + leaq 256(%rdx),%rdx + subl $1,%esi + jnz .Lscatter +.Lscatter_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_scatter5,.-bn_scatter5 + +.globl bn_gather5 +.type bn_gather5,@function +.align 32 +bn_gather5: +.LSEH_begin_bn_gather5: +.cfi_startproc + +.byte 0x4c,0x8d,0x14,0x24 +.byte 0x48,0x81,0xec,0x08,0x01,0x00,0x00 + leaq .Linc(%rip),%rax + andq $-16,%rsp + + movd %ecx,%xmm5 + movdqa 0(%rax),%xmm0 + movdqa 16(%rax),%xmm1 + leaq 128(%rdx),%r11 + leaq 128(%rsp),%rax + + pshufd $0,%xmm5,%xmm5 + movdqa %xmm1,%xmm4 + movdqa %xmm1,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm4,%xmm3 + + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,-128(%rax) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,-112(%rax) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,-96(%rax) + movdqa %xmm4,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,-80(%rax) + movdqa %xmm4,%xmm3 + + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,-64(%rax) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,-48(%rax) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,-32(%rax) + movdqa %xmm4,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,-16(%rax) + movdqa %xmm4,%xmm3 + + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,0(%rax) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,16(%rax) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,32(%rax) + movdqa %xmm4,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,48(%rax) + movdqa %xmm4,%xmm3 + + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,64(%rax) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,80(%rax) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,96(%rax) + movdqa %xmm4,%xmm2 + movdqa %xmm3,112(%rax) + jmp .Lgather + +.align 32 +.Lgather: + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + movdqa -128(%r11),%xmm0 + movdqa -112(%r11),%xmm1 + movdqa -96(%r11),%xmm2 + pand -128(%rax),%xmm0 + movdqa -80(%r11),%xmm3 + pand -112(%rax),%xmm1 + por %xmm0,%xmm4 + pand -96(%rax),%xmm2 + por %xmm1,%xmm5 + pand -80(%rax),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa -64(%r11),%xmm0 + movdqa -48(%r11),%xmm1 + movdqa -32(%r11),%xmm2 + pand -64(%rax),%xmm0 + movdqa -16(%r11),%xmm3 + pand -48(%rax),%xmm1 + por %xmm0,%xmm4 + pand -32(%rax),%xmm2 + por %xmm1,%xmm5 + pand -16(%rax),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 0(%r11),%xmm0 + movdqa 16(%r11),%xmm1 + movdqa 32(%r11),%xmm2 + pand 0(%rax),%xmm0 + movdqa 48(%r11),%xmm3 + pand 16(%rax),%xmm1 + por %xmm0,%xmm4 + pand 32(%rax),%xmm2 + por %xmm1,%xmm5 + pand 48(%rax),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 64(%r11),%xmm0 + movdqa 80(%r11),%xmm1 + movdqa 96(%r11),%xmm2 + pand 64(%rax),%xmm0 + movdqa 112(%r11),%xmm3 + pand 80(%rax),%xmm1 + por %xmm0,%xmm4 + pand 96(%rax),%xmm2 + por %xmm1,%xmm5 + pand 112(%rax),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + por %xmm5,%xmm4 + leaq 256(%r11),%r11 + pshufd $0x4e,%xmm4,%xmm0 + por %xmm4,%xmm0 + movq %xmm0,(%rdi) + leaq 8(%rdi),%rdi + subl $1,%esi + jnz .Lgather + + leaq (%r10),%rsp + .byte 0xf3,0xc3 +.LSEH_end_bn_gather5: +.cfi_endproc +.size bn_gather5,.-bn_gather5 +.align 64 +.Linc: +.long 0,0, 1,1 +.long 2,2, 2,2 +.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115,99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/camellia/cmll-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/camellia/cmll-x86_64.s new file mode 100644 index 0000000..92056f8 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/camellia/cmll-x86_64.s @@ -0,0 +1,1924 @@ +.text + + +.globl Camellia_EncryptBlock +.type Camellia_EncryptBlock,@function +.align 16 +Camellia_EncryptBlock: +.cfi_startproc + movl $128,%eax + subl %edi,%eax + movl $3,%edi + adcl $0,%edi + jmp .Lenc_rounds +.cfi_endproc +.size Camellia_EncryptBlock,.-Camellia_EncryptBlock + +.globl Camellia_EncryptBlock_Rounds +.type Camellia_EncryptBlock_Rounds,@function +.align 16 +.Lenc_rounds: +Camellia_EncryptBlock_Rounds: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-32 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-40 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-48 +.Lenc_prologue: + + + movq %rcx,%r13 + movq %rdx,%r14 + + shll $6,%edi + leaq .LCamellia_SBOX(%rip),%rbp + leaq (%r14,%rdi,1),%r15 + + movl 0(%rsi),%r8d + movl 4(%rsi),%r9d + movl 8(%rsi),%r10d + bswapl %r8d + movl 12(%rsi),%r11d + bswapl %r9d + bswapl %r10d + bswapl %r11d + + call _x86_64_Camellia_encrypt + + bswapl %r8d + bswapl %r9d + bswapl %r10d + movl %r8d,0(%r13) + bswapl %r11d + movl %r9d,4(%r13) + movl %r10d,8(%r13) + movl %r11d,12(%r13) + + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%rbp +.cfi_restore %rbp + movq 32(%rsp),%rbx +.cfi_restore %rbx + leaq 40(%rsp),%rsp +.cfi_adjust_cfa_offset -40 +.Lenc_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size Camellia_EncryptBlock_Rounds,.-Camellia_EncryptBlock_Rounds + +.type _x86_64_Camellia_encrypt,@function +.align 16 +_x86_64_Camellia_encrypt: +.cfi_startproc + xorl 0(%r14),%r9d + xorl 4(%r14),%r8d + xorl 8(%r14),%r11d + xorl 12(%r14),%r10d +.align 16 +.Leloop: + movl 16(%r14),%ebx + movl 20(%r14),%eax + + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 24(%r14),%ebx + movl 28(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 32(%r14),%ebx + movl 36(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 40(%r14),%ebx + movl 44(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 48(%r14),%ebx + movl 52(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 56(%r14),%ebx + movl 60(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 64(%r14),%ebx + movl 68(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + leaq 64(%r14),%r14 + cmpq %r15,%r14 + movl 8(%r14),%edx + movl 12(%r14),%ecx + je .Ledone + + andl %r8d,%eax + orl %r11d,%edx + roll $1,%eax + xorl %edx,%r10d + xorl %eax,%r9d + andl %r10d,%ecx + orl %r9d,%ebx + roll $1,%ecx + xorl %ebx,%r8d + xorl %ecx,%r11d + jmp .Leloop + +.align 16 +.Ledone: + xorl %r10d,%eax + xorl %r11d,%ebx + xorl %r8d,%ecx + xorl %r9d,%edx + + movl %eax,%r8d + movl %ebx,%r9d + movl %ecx,%r10d + movl %edx,%r11d + +.byte 0xf3,0xc3 +.cfi_endproc +.size _x86_64_Camellia_encrypt,.-_x86_64_Camellia_encrypt + + +.globl Camellia_DecryptBlock +.type Camellia_DecryptBlock,@function +.align 16 +Camellia_DecryptBlock: +.cfi_startproc + movl $128,%eax + subl %edi,%eax + movl $3,%edi + adcl $0,%edi + jmp .Ldec_rounds +.cfi_endproc +.size Camellia_DecryptBlock,.-Camellia_DecryptBlock + +.globl Camellia_DecryptBlock_Rounds +.type Camellia_DecryptBlock_Rounds,@function +.align 16 +.Ldec_rounds: +Camellia_DecryptBlock_Rounds: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-32 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-40 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-48 +.Ldec_prologue: + + + movq %rcx,%r13 + movq %rdx,%r15 + + shll $6,%edi + leaq .LCamellia_SBOX(%rip),%rbp + leaq (%r15,%rdi,1),%r14 + + movl 0(%rsi),%r8d + movl 4(%rsi),%r9d + movl 8(%rsi),%r10d + bswapl %r8d + movl 12(%rsi),%r11d + bswapl %r9d + bswapl %r10d + bswapl %r11d + + call _x86_64_Camellia_decrypt + + bswapl %r8d + bswapl %r9d + bswapl %r10d + movl %r8d,0(%r13) + bswapl %r11d + movl %r9d,4(%r13) + movl %r10d,8(%r13) + movl %r11d,12(%r13) + + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%rbp +.cfi_restore %rbp + movq 32(%rsp),%rbx +.cfi_restore %rbx + leaq 40(%rsp),%rsp +.cfi_adjust_cfa_offset -40 +.Ldec_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size Camellia_DecryptBlock_Rounds,.-Camellia_DecryptBlock_Rounds + +.type _x86_64_Camellia_decrypt,@function +.align 16 +_x86_64_Camellia_decrypt: +.cfi_startproc + xorl 0(%r14),%r9d + xorl 4(%r14),%r8d + xorl 8(%r14),%r11d + xorl 12(%r14),%r10d +.align 16 +.Ldloop: + movl -8(%r14),%ebx + movl -4(%r14),%eax + + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl -16(%r14),%ebx + movl -12(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl -24(%r14),%ebx + movl -20(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl -32(%r14),%ebx + movl -28(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl -40(%r14),%ebx + movl -36(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl -48(%r14),%ebx + movl -44(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl -56(%r14),%ebx + movl -52(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + leaq -64(%r14),%r14 + cmpq %r15,%r14 + movl 0(%r14),%edx + movl 4(%r14),%ecx + je .Lddone + + andl %r8d,%eax + orl %r11d,%edx + roll $1,%eax + xorl %edx,%r10d + xorl %eax,%r9d + andl %r10d,%ecx + orl %r9d,%ebx + roll $1,%ecx + xorl %ebx,%r8d + xorl %ecx,%r11d + + jmp .Ldloop + +.align 16 +.Lddone: + xorl %r10d,%ecx + xorl %r11d,%edx + xorl %r8d,%eax + xorl %r9d,%ebx + + movl %ecx,%r8d + movl %edx,%r9d + movl %eax,%r10d + movl %ebx,%r11d + +.byte 0xf3,0xc3 +.cfi_endproc +.size _x86_64_Camellia_decrypt,.-_x86_64_Camellia_decrypt +.globl Camellia_Ekeygen +.type Camellia_Ekeygen,@function +.align 16 +Camellia_Ekeygen: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-32 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-40 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-48 +.Lkey_prologue: + + movl %edi,%r15d + movq %rdx,%r13 + + movl 0(%rsi),%r8d + movl 4(%rsi),%r9d + movl 8(%rsi),%r10d + movl 12(%rsi),%r11d + + bswapl %r8d + bswapl %r9d + bswapl %r10d + bswapl %r11d + movl %r9d,0(%r13) + movl %r8d,4(%r13) + movl %r11d,8(%r13) + movl %r10d,12(%r13) + cmpq $128,%r15 + je .L1st128 + + movl 16(%rsi),%r8d + movl 20(%rsi),%r9d + cmpq $192,%r15 + je .L1st192 + movl 24(%rsi),%r10d + movl 28(%rsi),%r11d + jmp .L1st256 +.L1st192: + movl %r8d,%r10d + movl %r9d,%r11d + notl %r10d + notl %r11d +.L1st256: + bswapl %r8d + bswapl %r9d + bswapl %r10d + bswapl %r11d + movl %r9d,32(%r13) + movl %r8d,36(%r13) + movl %r11d,40(%r13) + movl %r10d,44(%r13) + xorl 0(%r13),%r9d + xorl 4(%r13),%r8d + xorl 8(%r13),%r11d + xorl 12(%r13),%r10d + +.L1st128: + leaq .LCamellia_SIGMA(%rip),%r14 + leaq .LCamellia_SBOX(%rip),%rbp + + movl 0(%r14),%ebx + movl 4(%r14),%eax + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 8(%r14),%ebx + movl 12(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 16(%r14),%ebx + movl 20(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + xorl 0(%r13),%r9d + xorl 4(%r13),%r8d + xorl 8(%r13),%r11d + xorl 12(%r13),%r10d + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 24(%r14),%ebx + movl 28(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 32(%r14),%ebx + movl 36(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + cmpq $128,%r15 + jne .L2nd256 + + leaq 128(%r13),%r13 + shlq $32,%r8 + shlq $32,%r10 + orq %r9,%r8 + orq %r11,%r10 + movq -128(%r13),%rax + movq -120(%r13),%rbx + movq %r8,-112(%r13) + movq %r10,-104(%r13) + movq %rax,%r11 + shlq $15,%rax + movq %rbx,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%rax + shlq $15,%rbx + orq %r11,%rbx + movq %rax,-96(%r13) + movq %rbx,-88(%r13) + movq %r8,%r11 + shlq $15,%r8 + movq %r10,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%r8 + shlq $15,%r10 + orq %r11,%r10 + movq %r8,-80(%r13) + movq %r10,-72(%r13) + movq %r8,%r11 + shlq $15,%r8 + movq %r10,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%r8 + shlq $15,%r10 + orq %r11,%r10 + movq %r8,-64(%r13) + movq %r10,-56(%r13) + movq %rax,%r11 + shlq $30,%rax + movq %rbx,%r9 + shrq $34,%r9 + shrq $34,%r11 + orq %r9,%rax + shlq $30,%rbx + orq %r11,%rbx + movq %rax,-48(%r13) + movq %rbx,-40(%r13) + movq %r8,%r11 + shlq $15,%r8 + movq %r10,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%r8 + shlq $15,%r10 + orq %r11,%r10 + movq %r8,-32(%r13) + movq %rax,%r11 + shlq $15,%rax + movq %rbx,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%rax + shlq $15,%rbx + orq %r11,%rbx + movq %rbx,-24(%r13) + movq %r8,%r11 + shlq $15,%r8 + movq %r10,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%r8 + shlq $15,%r10 + orq %r11,%r10 + movq %r8,-16(%r13) + movq %r10,-8(%r13) + movq %rax,%r11 + shlq $17,%rax + movq %rbx,%r9 + shrq $47,%r9 + shrq $47,%r11 + orq %r9,%rax + shlq $17,%rbx + orq %r11,%rbx + movq %rax,0(%r13) + movq %rbx,8(%r13) + movq %rax,%r11 + shlq $17,%rax + movq %rbx,%r9 + shrq $47,%r9 + shrq $47,%r11 + orq %r9,%rax + shlq $17,%rbx + orq %r11,%rbx + movq %rax,16(%r13) + movq %rbx,24(%r13) + movq %r8,%r11 + shlq $34,%r8 + movq %r10,%r9 + shrq $30,%r9 + shrq $30,%r11 + orq %r9,%r8 + shlq $34,%r10 + orq %r11,%r10 + movq %r8,32(%r13) + movq %r10,40(%r13) + movq %rax,%r11 + shlq $17,%rax + movq %rbx,%r9 + shrq $47,%r9 + shrq $47,%r11 + orq %r9,%rax + shlq $17,%rbx + orq %r11,%rbx + movq %rax,48(%r13) + movq %rbx,56(%r13) + movq %r8,%r11 + shlq $17,%r8 + movq %r10,%r9 + shrq $47,%r9 + shrq $47,%r11 + orq %r9,%r8 + shlq $17,%r10 + orq %r11,%r10 + movq %r8,64(%r13) + movq %r10,72(%r13) + movl $3,%eax + jmp .Ldone +.align 16 +.L2nd256: + movl %r9d,48(%r13) + movl %r8d,52(%r13) + movl %r11d,56(%r13) + movl %r10d,60(%r13) + xorl 32(%r13),%r9d + xorl 36(%r13),%r8d + xorl 40(%r13),%r11d + xorl 44(%r13),%r10d + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 40(%r14),%ebx + movl 44(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 48(%r14),%ebx + movl 52(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + movq 0(%r13),%rax + movq 8(%r13),%rbx + movq 32(%r13),%rcx + movq 40(%r13),%rdx + movq 48(%r13),%r14 + movq 56(%r13),%r15 + leaq 128(%r13),%r13 + shlq $32,%r8 + shlq $32,%r10 + orq %r9,%r8 + orq %r11,%r10 + movq %r8,-112(%r13) + movq %r10,-104(%r13) + movq %rcx,%r11 + shlq $15,%rcx + movq %rdx,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%rcx + shlq $15,%rdx + orq %r11,%rdx + movq %rcx,-96(%r13) + movq %rdx,-88(%r13) + movq %r14,%r11 + shlq $15,%r14 + movq %r15,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%r14 + shlq $15,%r15 + orq %r11,%r15 + movq %r14,-80(%r13) + movq %r15,-72(%r13) + movq %rcx,%r11 + shlq $15,%rcx + movq %rdx,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%rcx + shlq $15,%rdx + orq %r11,%rdx + movq %rcx,-64(%r13) + movq %rdx,-56(%r13) + movq %r8,%r11 + shlq $30,%r8 + movq %r10,%r9 + shrq $34,%r9 + shrq $34,%r11 + orq %r9,%r8 + shlq $30,%r10 + orq %r11,%r10 + movq %r8,-48(%r13) + movq %r10,-40(%r13) + movq %rax,%r11 + shlq $45,%rax + movq %rbx,%r9 + shrq $19,%r9 + shrq $19,%r11 + orq %r9,%rax + shlq $45,%rbx + orq %r11,%rbx + movq %rax,-32(%r13) + movq %rbx,-24(%r13) + movq %r14,%r11 + shlq $30,%r14 + movq %r15,%r9 + shrq $34,%r9 + shrq $34,%r11 + orq %r9,%r14 + shlq $30,%r15 + orq %r11,%r15 + movq %r14,-16(%r13) + movq %r15,-8(%r13) + movq %rax,%r11 + shlq $15,%rax + movq %rbx,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%rax + shlq $15,%rbx + orq %r11,%rbx + movq %rax,0(%r13) + movq %rbx,8(%r13) + movq %rcx,%r11 + shlq $30,%rcx + movq %rdx,%r9 + shrq $34,%r9 + shrq $34,%r11 + orq %r9,%rcx + shlq $30,%rdx + orq %r11,%rdx + movq %rcx,16(%r13) + movq %rdx,24(%r13) + movq %r8,%r11 + shlq $30,%r8 + movq %r10,%r9 + shrq $34,%r9 + shrq $34,%r11 + orq %r9,%r8 + shlq $30,%r10 + orq %r11,%r10 + movq %r8,32(%r13) + movq %r10,40(%r13) + movq %rax,%r11 + shlq $17,%rax + movq %rbx,%r9 + shrq $47,%r9 + shrq $47,%r11 + orq %r9,%rax + shlq $17,%rbx + orq %r11,%rbx + movq %rax,48(%r13) + movq %rbx,56(%r13) + movq %r14,%r11 + shlq $32,%r14 + movq %r15,%r9 + shrq $32,%r9 + shrq $32,%r11 + orq %r9,%r14 + shlq $32,%r15 + orq %r11,%r15 + movq %r14,64(%r13) + movq %r15,72(%r13) + movq %rcx,%r11 + shlq $34,%rcx + movq %rdx,%r9 + shrq $30,%r9 + shrq $30,%r11 + orq %r9,%rcx + shlq $34,%rdx + orq %r11,%rdx + movq %rcx,80(%r13) + movq %rdx,88(%r13) + movq %r14,%r11 + shlq $17,%r14 + movq %r15,%r9 + shrq $47,%r9 + shrq $47,%r11 + orq %r9,%r14 + shlq $17,%r15 + orq %r11,%r15 + movq %r14,96(%r13) + movq %r15,104(%r13) + movq %rax,%r11 + shlq $34,%rax + movq %rbx,%r9 + shrq $30,%r9 + shrq $30,%r11 + orq %r9,%rax + shlq $34,%rbx + orq %r11,%rbx + movq %rax,112(%r13) + movq %rbx,120(%r13) + movq %r8,%r11 + shlq $51,%r8 + movq %r10,%r9 + shrq $13,%r9 + shrq $13,%r11 + orq %r9,%r8 + shlq $51,%r10 + orq %r11,%r10 + movq %r8,128(%r13) + movq %r10,136(%r13) + movl $4,%eax +.Ldone: + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%rbp +.cfi_restore %rbp + movq 32(%rsp),%rbx +.cfi_restore %rbx + leaq 40(%rsp),%rsp +.cfi_adjust_cfa_offset -40 +.Lkey_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size Camellia_Ekeygen,.-Camellia_Ekeygen +.align 64 +.LCamellia_SIGMA: +.long 0x3bcc908b, 0xa09e667f, 0x4caa73b2, 0xb67ae858 +.long 0xe94f82be, 0xc6ef372f, 0xf1d36f1c, 0x54ff53a5 +.long 0xde682d1d, 0x10e527fa, 0xb3e6c1fd, 0xb05688c2 +.long 0, 0, 0, 0 +.LCamellia_SBOX: +.long 0x70707000,0x70700070 +.long 0x82828200,0x2c2c002c +.long 0x2c2c2c00,0xb3b300b3 +.long 0xececec00,0xc0c000c0 +.long 0xb3b3b300,0xe4e400e4 +.long 0x27272700,0x57570057 +.long 0xc0c0c000,0xeaea00ea +.long 0xe5e5e500,0xaeae00ae +.long 0xe4e4e400,0x23230023 +.long 0x85858500,0x6b6b006b +.long 0x57575700,0x45450045 +.long 0x35353500,0xa5a500a5 +.long 0xeaeaea00,0xeded00ed +.long 0x0c0c0c00,0x4f4f004f +.long 0xaeaeae00,0x1d1d001d +.long 0x41414100,0x92920092 +.long 0x23232300,0x86860086 +.long 0xefefef00,0xafaf00af +.long 0x6b6b6b00,0x7c7c007c +.long 0x93939300,0x1f1f001f +.long 0x45454500,0x3e3e003e +.long 0x19191900,0xdcdc00dc +.long 0xa5a5a500,0x5e5e005e +.long 0x21212100,0x0b0b000b +.long 0xededed00,0xa6a600a6 +.long 0x0e0e0e00,0x39390039 +.long 0x4f4f4f00,0xd5d500d5 +.long 0x4e4e4e00,0x5d5d005d +.long 0x1d1d1d00,0xd9d900d9 +.long 0x65656500,0x5a5a005a +.long 0x92929200,0x51510051 +.long 0xbdbdbd00,0x6c6c006c +.long 0x86868600,0x8b8b008b +.long 0xb8b8b800,0x9a9a009a +.long 0xafafaf00,0xfbfb00fb +.long 0x8f8f8f00,0xb0b000b0 +.long 0x7c7c7c00,0x74740074 +.long 0xebebeb00,0x2b2b002b +.long 0x1f1f1f00,0xf0f000f0 +.long 0xcecece00,0x84840084 +.long 0x3e3e3e00,0xdfdf00df +.long 0x30303000,0xcbcb00cb +.long 0xdcdcdc00,0x34340034 +.long 0x5f5f5f00,0x76760076 +.long 0x5e5e5e00,0x6d6d006d +.long 0xc5c5c500,0xa9a900a9 +.long 0x0b0b0b00,0xd1d100d1 +.long 0x1a1a1a00,0x04040004 +.long 0xa6a6a600,0x14140014 +.long 0xe1e1e100,0x3a3a003a +.long 0x39393900,0xdede00de +.long 0xcacaca00,0x11110011 +.long 0xd5d5d500,0x32320032 +.long 0x47474700,0x9c9c009c +.long 0x5d5d5d00,0x53530053 +.long 0x3d3d3d00,0xf2f200f2 +.long 0xd9d9d900,0xfefe00fe +.long 0x01010100,0xcfcf00cf +.long 0x5a5a5a00,0xc3c300c3 +.long 0xd6d6d600,0x7a7a007a +.long 0x51515100,0x24240024 +.long 0x56565600,0xe8e800e8 +.long 0x6c6c6c00,0x60600060 +.long 0x4d4d4d00,0x69690069 +.long 0x8b8b8b00,0xaaaa00aa +.long 0x0d0d0d00,0xa0a000a0 +.long 0x9a9a9a00,0xa1a100a1 +.long 0x66666600,0x62620062 +.long 0xfbfbfb00,0x54540054 +.long 0xcccccc00,0x1e1e001e +.long 0xb0b0b000,0xe0e000e0 +.long 0x2d2d2d00,0x64640064 +.long 0x74747400,0x10100010 +.long 0x12121200,0x00000000 +.long 0x2b2b2b00,0xa3a300a3 +.long 0x20202000,0x75750075 +.long 0xf0f0f000,0x8a8a008a +.long 0xb1b1b100,0xe6e600e6 +.long 0x84848400,0x09090009 +.long 0x99999900,0xdddd00dd +.long 0xdfdfdf00,0x87870087 +.long 0x4c4c4c00,0x83830083 +.long 0xcbcbcb00,0xcdcd00cd +.long 0xc2c2c200,0x90900090 +.long 0x34343400,0x73730073 +.long 0x7e7e7e00,0xf6f600f6 +.long 0x76767600,0x9d9d009d +.long 0x05050500,0xbfbf00bf +.long 0x6d6d6d00,0x52520052 +.long 0xb7b7b700,0xd8d800d8 +.long 0xa9a9a900,0xc8c800c8 +.long 0x31313100,0xc6c600c6 +.long 0xd1d1d100,0x81810081 +.long 0x17171700,0x6f6f006f +.long 0x04040400,0x13130013 +.long 0xd7d7d700,0x63630063 +.long 0x14141400,0xe9e900e9 +.long 0x58585800,0xa7a700a7 +.long 0x3a3a3a00,0x9f9f009f +.long 0x61616100,0xbcbc00bc +.long 0xdedede00,0x29290029 +.long 0x1b1b1b00,0xf9f900f9 +.long 0x11111100,0x2f2f002f +.long 0x1c1c1c00,0xb4b400b4 +.long 0x32323200,0x78780078 +.long 0x0f0f0f00,0x06060006 +.long 0x9c9c9c00,0xe7e700e7 +.long 0x16161600,0x71710071 +.long 0x53535300,0xd4d400d4 +.long 0x18181800,0xabab00ab +.long 0xf2f2f200,0x88880088 +.long 0x22222200,0x8d8d008d +.long 0xfefefe00,0x72720072 +.long 0x44444400,0xb9b900b9 +.long 0xcfcfcf00,0xf8f800f8 +.long 0xb2b2b200,0xacac00ac +.long 0xc3c3c300,0x36360036 +.long 0xb5b5b500,0x2a2a002a +.long 0x7a7a7a00,0x3c3c003c +.long 0x91919100,0xf1f100f1 +.long 0x24242400,0x40400040 +.long 0x08080800,0xd3d300d3 +.long 0xe8e8e800,0xbbbb00bb +.long 0xa8a8a800,0x43430043 +.long 0x60606000,0x15150015 +.long 0xfcfcfc00,0xadad00ad +.long 0x69696900,0x77770077 +.long 0x50505000,0x80800080 +.long 0xaaaaaa00,0x82820082 +.long 0xd0d0d000,0xecec00ec +.long 0xa0a0a000,0x27270027 +.long 0x7d7d7d00,0xe5e500e5 +.long 0xa1a1a100,0x85850085 +.long 0x89898900,0x35350035 +.long 0x62626200,0x0c0c000c +.long 0x97979700,0x41410041 +.long 0x54545400,0xefef00ef +.long 0x5b5b5b00,0x93930093 +.long 0x1e1e1e00,0x19190019 +.long 0x95959500,0x21210021 +.long 0xe0e0e000,0x0e0e000e +.long 0xffffff00,0x4e4e004e +.long 0x64646400,0x65650065 +.long 0xd2d2d200,0xbdbd00bd +.long 0x10101000,0xb8b800b8 +.long 0xc4c4c400,0x8f8f008f +.long 0x00000000,0xebeb00eb +.long 0x48484800,0xcece00ce +.long 0xa3a3a300,0x30300030 +.long 0xf7f7f700,0x5f5f005f +.long 0x75757500,0xc5c500c5 +.long 0xdbdbdb00,0x1a1a001a +.long 0x8a8a8a00,0xe1e100e1 +.long 0x03030300,0xcaca00ca +.long 0xe6e6e600,0x47470047 +.long 0xdadada00,0x3d3d003d +.long 0x09090900,0x01010001 +.long 0x3f3f3f00,0xd6d600d6 +.long 0xdddddd00,0x56560056 +.long 0x94949400,0x4d4d004d +.long 0x87878700,0x0d0d000d +.long 0x5c5c5c00,0x66660066 +.long 0x83838300,0xcccc00cc +.long 0x02020200,0x2d2d002d +.long 0xcdcdcd00,0x12120012 +.long 0x4a4a4a00,0x20200020 +.long 0x90909000,0xb1b100b1 +.long 0x33333300,0x99990099 +.long 0x73737300,0x4c4c004c +.long 0x67676700,0xc2c200c2 +.long 0xf6f6f600,0x7e7e007e +.long 0xf3f3f300,0x05050005 +.long 0x9d9d9d00,0xb7b700b7 +.long 0x7f7f7f00,0x31310031 +.long 0xbfbfbf00,0x17170017 +.long 0xe2e2e200,0xd7d700d7 +.long 0x52525200,0x58580058 +.long 0x9b9b9b00,0x61610061 +.long 0xd8d8d800,0x1b1b001b +.long 0x26262600,0x1c1c001c +.long 0xc8c8c800,0x0f0f000f +.long 0x37373700,0x16160016 +.long 0xc6c6c600,0x18180018 +.long 0x3b3b3b00,0x22220022 +.long 0x81818100,0x44440044 +.long 0x96969600,0xb2b200b2 +.long 0x6f6f6f00,0xb5b500b5 +.long 0x4b4b4b00,0x91910091 +.long 0x13131300,0x08080008 +.long 0xbebebe00,0xa8a800a8 +.long 0x63636300,0xfcfc00fc +.long 0x2e2e2e00,0x50500050 +.long 0xe9e9e900,0xd0d000d0 +.long 0x79797900,0x7d7d007d +.long 0xa7a7a700,0x89890089 +.long 0x8c8c8c00,0x97970097 +.long 0x9f9f9f00,0x5b5b005b +.long 0x6e6e6e00,0x95950095 +.long 0xbcbcbc00,0xffff00ff +.long 0x8e8e8e00,0xd2d200d2 +.long 0x29292900,0xc4c400c4 +.long 0xf5f5f500,0x48480048 +.long 0xf9f9f900,0xf7f700f7 +.long 0xb6b6b600,0xdbdb00db +.long 0x2f2f2f00,0x03030003 +.long 0xfdfdfd00,0xdada00da +.long 0xb4b4b400,0x3f3f003f +.long 0x59595900,0x94940094 +.long 0x78787800,0x5c5c005c +.long 0x98989800,0x02020002 +.long 0x06060600,0x4a4a004a +.long 0x6a6a6a00,0x33330033 +.long 0xe7e7e700,0x67670067 +.long 0x46464600,0xf3f300f3 +.long 0x71717100,0x7f7f007f +.long 0xbababa00,0xe2e200e2 +.long 0xd4d4d400,0x9b9b009b +.long 0x25252500,0x26260026 +.long 0xababab00,0x37370037 +.long 0x42424200,0x3b3b003b +.long 0x88888800,0x96960096 +.long 0xa2a2a200,0x4b4b004b +.long 0x8d8d8d00,0xbebe00be +.long 0xfafafa00,0x2e2e002e +.long 0x72727200,0x79790079 +.long 0x07070700,0x8c8c008c +.long 0xb9b9b900,0x6e6e006e +.long 0x55555500,0x8e8e008e +.long 0xf8f8f800,0xf5f500f5 +.long 0xeeeeee00,0xb6b600b6 +.long 0xacacac00,0xfdfd00fd +.long 0x0a0a0a00,0x59590059 +.long 0x36363600,0x98980098 +.long 0x49494900,0x6a6a006a +.long 0x2a2a2a00,0x46460046 +.long 0x68686800,0xbaba00ba +.long 0x3c3c3c00,0x25250025 +.long 0x38383800,0x42420042 +.long 0xf1f1f100,0xa2a200a2 +.long 0xa4a4a400,0xfafa00fa +.long 0x40404000,0x07070007 +.long 0x28282800,0x55550055 +.long 0xd3d3d300,0xeeee00ee +.long 0x7b7b7b00,0x0a0a000a +.long 0xbbbbbb00,0x49490049 +.long 0xc9c9c900,0x68680068 +.long 0x43434300,0x38380038 +.long 0xc1c1c100,0xa4a400a4 +.long 0x15151500,0x28280028 +.long 0xe3e3e300,0x7b7b007b +.long 0xadadad00,0xc9c900c9 +.long 0xf4f4f400,0xc1c100c1 +.long 0x77777700,0xe3e300e3 +.long 0xc7c7c700,0xf4f400f4 +.long 0x80808000,0xc7c700c7 +.long 0x9e9e9e00,0x9e9e009e +.long 0x00e0e0e0,0x38003838 +.long 0x00050505,0x41004141 +.long 0x00585858,0x16001616 +.long 0x00d9d9d9,0x76007676 +.long 0x00676767,0xd900d9d9 +.long 0x004e4e4e,0x93009393 +.long 0x00818181,0x60006060 +.long 0x00cbcbcb,0xf200f2f2 +.long 0x00c9c9c9,0x72007272 +.long 0x000b0b0b,0xc200c2c2 +.long 0x00aeaeae,0xab00abab +.long 0x006a6a6a,0x9a009a9a +.long 0x00d5d5d5,0x75007575 +.long 0x00181818,0x06000606 +.long 0x005d5d5d,0x57005757 +.long 0x00828282,0xa000a0a0 +.long 0x00464646,0x91009191 +.long 0x00dfdfdf,0xf700f7f7 +.long 0x00d6d6d6,0xb500b5b5 +.long 0x00272727,0xc900c9c9 +.long 0x008a8a8a,0xa200a2a2 +.long 0x00323232,0x8c008c8c +.long 0x004b4b4b,0xd200d2d2 +.long 0x00424242,0x90009090 +.long 0x00dbdbdb,0xf600f6f6 +.long 0x001c1c1c,0x07000707 +.long 0x009e9e9e,0xa700a7a7 +.long 0x009c9c9c,0x27002727 +.long 0x003a3a3a,0x8e008e8e +.long 0x00cacaca,0xb200b2b2 +.long 0x00252525,0x49004949 +.long 0x007b7b7b,0xde00dede +.long 0x000d0d0d,0x43004343 +.long 0x00717171,0x5c005c5c +.long 0x005f5f5f,0xd700d7d7 +.long 0x001f1f1f,0xc700c7c7 +.long 0x00f8f8f8,0x3e003e3e +.long 0x00d7d7d7,0xf500f5f5 +.long 0x003e3e3e,0x8f008f8f +.long 0x009d9d9d,0x67006767 +.long 0x007c7c7c,0x1f001f1f +.long 0x00606060,0x18001818 +.long 0x00b9b9b9,0x6e006e6e +.long 0x00bebebe,0xaf00afaf +.long 0x00bcbcbc,0x2f002f2f +.long 0x008b8b8b,0xe200e2e2 +.long 0x00161616,0x85008585 +.long 0x00343434,0x0d000d0d +.long 0x004d4d4d,0x53005353 +.long 0x00c3c3c3,0xf000f0f0 +.long 0x00727272,0x9c009c9c +.long 0x00959595,0x65006565 +.long 0x00ababab,0xea00eaea +.long 0x008e8e8e,0xa300a3a3 +.long 0x00bababa,0xae00aeae +.long 0x007a7a7a,0x9e009e9e +.long 0x00b3b3b3,0xec00ecec +.long 0x00020202,0x80008080 +.long 0x00b4b4b4,0x2d002d2d +.long 0x00adadad,0x6b006b6b +.long 0x00a2a2a2,0xa800a8a8 +.long 0x00acacac,0x2b002b2b +.long 0x00d8d8d8,0x36003636 +.long 0x009a9a9a,0xa600a6a6 +.long 0x00171717,0xc500c5c5 +.long 0x001a1a1a,0x86008686 +.long 0x00353535,0x4d004d4d +.long 0x00cccccc,0x33003333 +.long 0x00f7f7f7,0xfd00fdfd +.long 0x00999999,0x66006666 +.long 0x00616161,0x58005858 +.long 0x005a5a5a,0x96009696 +.long 0x00e8e8e8,0x3a003a3a +.long 0x00242424,0x09000909 +.long 0x00565656,0x95009595 +.long 0x00404040,0x10001010 +.long 0x00e1e1e1,0x78007878 +.long 0x00636363,0xd800d8d8 +.long 0x00090909,0x42004242 +.long 0x00333333,0xcc00cccc +.long 0x00bfbfbf,0xef00efef +.long 0x00989898,0x26002626 +.long 0x00979797,0xe500e5e5 +.long 0x00858585,0x61006161 +.long 0x00686868,0x1a001a1a +.long 0x00fcfcfc,0x3f003f3f +.long 0x00ececec,0x3b003b3b +.long 0x000a0a0a,0x82008282 +.long 0x00dadada,0xb600b6b6 +.long 0x006f6f6f,0xdb00dbdb +.long 0x00535353,0xd400d4d4 +.long 0x00626262,0x98009898 +.long 0x00a3a3a3,0xe800e8e8 +.long 0x002e2e2e,0x8b008b8b +.long 0x00080808,0x02000202 +.long 0x00afafaf,0xeb00ebeb +.long 0x00282828,0x0a000a0a +.long 0x00b0b0b0,0x2c002c2c +.long 0x00747474,0x1d001d1d +.long 0x00c2c2c2,0xb000b0b0 +.long 0x00bdbdbd,0x6f006f6f +.long 0x00363636,0x8d008d8d +.long 0x00222222,0x88008888 +.long 0x00383838,0x0e000e0e +.long 0x00646464,0x19001919 +.long 0x001e1e1e,0x87008787 +.long 0x00393939,0x4e004e4e +.long 0x002c2c2c,0x0b000b0b +.long 0x00a6a6a6,0xa900a9a9 +.long 0x00303030,0x0c000c0c +.long 0x00e5e5e5,0x79007979 +.long 0x00444444,0x11001111 +.long 0x00fdfdfd,0x7f007f7f +.long 0x00888888,0x22002222 +.long 0x009f9f9f,0xe700e7e7 +.long 0x00656565,0x59005959 +.long 0x00878787,0xe100e1e1 +.long 0x006b6b6b,0xda00dada +.long 0x00f4f4f4,0x3d003d3d +.long 0x00232323,0xc800c8c8 +.long 0x00484848,0x12001212 +.long 0x00101010,0x04000404 +.long 0x00d1d1d1,0x74007474 +.long 0x00515151,0x54005454 +.long 0x00c0c0c0,0x30003030 +.long 0x00f9f9f9,0x7e007e7e +.long 0x00d2d2d2,0xb400b4b4 +.long 0x00a0a0a0,0x28002828 +.long 0x00555555,0x55005555 +.long 0x00a1a1a1,0x68006868 +.long 0x00414141,0x50005050 +.long 0x00fafafa,0xbe00bebe +.long 0x00434343,0xd000d0d0 +.long 0x00131313,0xc400c4c4 +.long 0x00c4c4c4,0x31003131 +.long 0x002f2f2f,0xcb00cbcb +.long 0x00a8a8a8,0x2a002a2a +.long 0x00b6b6b6,0xad00adad +.long 0x003c3c3c,0x0f000f0f +.long 0x002b2b2b,0xca00caca +.long 0x00c1c1c1,0x70007070 +.long 0x00ffffff,0xff00ffff +.long 0x00c8c8c8,0x32003232 +.long 0x00a5a5a5,0x69006969 +.long 0x00202020,0x08000808 +.long 0x00898989,0x62006262 +.long 0x00000000,0x00000000 +.long 0x00909090,0x24002424 +.long 0x00474747,0xd100d1d1 +.long 0x00efefef,0xfb00fbfb +.long 0x00eaeaea,0xba00baba +.long 0x00b7b7b7,0xed00eded +.long 0x00151515,0x45004545 +.long 0x00060606,0x81008181 +.long 0x00cdcdcd,0x73007373 +.long 0x00b5b5b5,0x6d006d6d +.long 0x00121212,0x84008484 +.long 0x007e7e7e,0x9f009f9f +.long 0x00bbbbbb,0xee00eeee +.long 0x00292929,0x4a004a4a +.long 0x000f0f0f,0xc300c3c3 +.long 0x00b8b8b8,0x2e002e2e +.long 0x00070707,0xc100c1c1 +.long 0x00040404,0x01000101 +.long 0x009b9b9b,0xe600e6e6 +.long 0x00949494,0x25002525 +.long 0x00212121,0x48004848 +.long 0x00666666,0x99009999 +.long 0x00e6e6e6,0xb900b9b9 +.long 0x00cecece,0xb300b3b3 +.long 0x00ededed,0x7b007b7b +.long 0x00e7e7e7,0xf900f9f9 +.long 0x003b3b3b,0xce00cece +.long 0x00fefefe,0xbf00bfbf +.long 0x007f7f7f,0xdf00dfdf +.long 0x00c5c5c5,0x71007171 +.long 0x00a4a4a4,0x29002929 +.long 0x00373737,0xcd00cdcd +.long 0x00b1b1b1,0x6c006c6c +.long 0x004c4c4c,0x13001313 +.long 0x00919191,0x64006464 +.long 0x006e6e6e,0x9b009b9b +.long 0x008d8d8d,0x63006363 +.long 0x00767676,0x9d009d9d +.long 0x00030303,0xc000c0c0 +.long 0x002d2d2d,0x4b004b4b +.long 0x00dedede,0xb700b7b7 +.long 0x00969696,0xa500a5a5 +.long 0x00262626,0x89008989 +.long 0x007d7d7d,0x5f005f5f +.long 0x00c6c6c6,0xb100b1b1 +.long 0x005c5c5c,0x17001717 +.long 0x00d3d3d3,0xf400f4f4 +.long 0x00f2f2f2,0xbc00bcbc +.long 0x004f4f4f,0xd300d3d3 +.long 0x00191919,0x46004646 +.long 0x003f3f3f,0xcf00cfcf +.long 0x00dcdcdc,0x37003737 +.long 0x00797979,0x5e005e5e +.long 0x001d1d1d,0x47004747 +.long 0x00525252,0x94009494 +.long 0x00ebebeb,0xfa00fafa +.long 0x00f3f3f3,0xfc00fcfc +.long 0x006d6d6d,0x5b005b5b +.long 0x005e5e5e,0x97009797 +.long 0x00fbfbfb,0xfe00fefe +.long 0x00696969,0x5a005a5a +.long 0x00b2b2b2,0xac00acac +.long 0x00f0f0f0,0x3c003c3c +.long 0x00313131,0x4c004c4c +.long 0x000c0c0c,0x03000303 +.long 0x00d4d4d4,0x35003535 +.long 0x00cfcfcf,0xf300f3f3 +.long 0x008c8c8c,0x23002323 +.long 0x00e2e2e2,0xb800b8b8 +.long 0x00757575,0x5d005d5d +.long 0x00a9a9a9,0x6a006a6a +.long 0x004a4a4a,0x92009292 +.long 0x00575757,0xd500d5d5 +.long 0x00848484,0x21002121 +.long 0x00111111,0x44004444 +.long 0x00454545,0x51005151 +.long 0x001b1b1b,0xc600c6c6 +.long 0x00f5f5f5,0x7d007d7d +.long 0x00e4e4e4,0x39003939 +.long 0x000e0e0e,0x83008383 +.long 0x00737373,0xdc00dcdc +.long 0x00aaaaaa,0xaa00aaaa +.long 0x00f1f1f1,0x7c007c7c +.long 0x00dddddd,0x77007777 +.long 0x00595959,0x56005656 +.long 0x00141414,0x05000505 +.long 0x006c6c6c,0x1b001b1b +.long 0x00929292,0xa400a4a4 +.long 0x00545454,0x15001515 +.long 0x00d0d0d0,0x34003434 +.long 0x00787878,0x1e001e1e +.long 0x00707070,0x1c001c1c +.long 0x00e3e3e3,0xf800f8f8 +.long 0x00494949,0x52005252 +.long 0x00808080,0x20002020 +.long 0x00505050,0x14001414 +.long 0x00a7a7a7,0xe900e9e9 +.long 0x00f6f6f6,0xbd00bdbd +.long 0x00777777,0xdd00dddd +.long 0x00939393,0xe400e4e4 +.long 0x00868686,0xa100a1a1 +.long 0x00838383,0xe000e0e0 +.long 0x002a2a2a,0x8a008a8a +.long 0x00c7c7c7,0xf100f1f1 +.long 0x005b5b5b,0xd600d6d6 +.long 0x00e9e9e9,0x7a007a7a +.long 0x00eeeeee,0xbb00bbbb +.long 0x008f8f8f,0xe300e3e3 +.long 0x00010101,0x40004040 +.long 0x003d3d3d,0x4f004f4f +.globl Camellia_cbc_encrypt +.type Camellia_cbc_encrypt,@function +.align 16 +Camellia_cbc_encrypt: +.cfi_startproc + cmpq $0,%rdx + je .Lcbc_abort + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lcbc_prologue: + + movq %rsp,%rbp +.cfi_def_cfa_register %rbp + subq $64,%rsp + andq $-64,%rsp + + + + leaq -64-63(%rcx),%r10 + subq %rsp,%r10 + negq %r10 + andq $0x3C0,%r10 + subq %r10,%rsp + + + movq %rdi,%r12 + movq %rsi,%r13 + movq %r8,%rbx + movq %rcx,%r14 + movl 272(%rcx),%r15d + + movq %r8,40(%rsp) + movq %rbp,48(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x30,0x06,0x23,0x38 + +.Lcbc_body: + leaq .LCamellia_SBOX(%rip),%rbp + + movl $32,%ecx +.align 4 +.Lcbc_prefetch_sbox: + movq 0(%rbp),%rax + movq 32(%rbp),%rsi + movq 64(%rbp),%rdi + movq 96(%rbp),%r11 + leaq 128(%rbp),%rbp + loop .Lcbc_prefetch_sbox + subq $4096,%rbp + shlq $6,%r15 + movq %rdx,%rcx + leaq (%r14,%r15,1),%r15 + + cmpl $0,%r9d + je .LCBC_DECRYPT + + andq $-16,%rdx + andq $15,%rcx + leaq (%r12,%rdx,1),%rdx + movq %r14,0(%rsp) + movq %rdx,8(%rsp) + movq %rcx,16(%rsp) + + cmpq %r12,%rdx + movl 0(%rbx),%r8d + movl 4(%rbx),%r9d + movl 8(%rbx),%r10d + movl 12(%rbx),%r11d + je .Lcbc_enc_tail + jmp .Lcbc_eloop + +.align 16 +.Lcbc_eloop: + xorl 0(%r12),%r8d + xorl 4(%r12),%r9d + xorl 8(%r12),%r10d + bswapl %r8d + xorl 12(%r12),%r11d + bswapl %r9d + bswapl %r10d + bswapl %r11d + + call _x86_64_Camellia_encrypt + + movq 0(%rsp),%r14 + bswapl %r8d + movq 8(%rsp),%rdx + bswapl %r9d + movq 16(%rsp),%rcx + bswapl %r10d + movl %r8d,0(%r13) + bswapl %r11d + movl %r9d,4(%r13) + movl %r10d,8(%r13) + leaq 16(%r12),%r12 + movl %r11d,12(%r13) + cmpq %rdx,%r12 + leaq 16(%r13),%r13 + jne .Lcbc_eloop + + cmpq $0,%rcx + jne .Lcbc_enc_tail + + movq 40(%rsp),%r13 + movl %r8d,0(%r13) + movl %r9d,4(%r13) + movl %r10d,8(%r13) + movl %r11d,12(%r13) + jmp .Lcbc_done + +.align 16 +.Lcbc_enc_tail: + xorq %rax,%rax + movq %rax,0+24(%rsp) + movq %rax,8+24(%rsp) + movq %rax,16(%rsp) + +.Lcbc_enc_pushf: + pushfq + cld + movq %r12,%rsi + leaq 8+24(%rsp),%rdi +.long 0x9066A4F3 + popfq +.Lcbc_enc_popf: + + leaq 24(%rsp),%r12 + leaq 16+24(%rsp),%rax + movq %rax,8(%rsp) + jmp .Lcbc_eloop + +.align 16 +.LCBC_DECRYPT: + xchgq %r14,%r15 + addq $15,%rdx + andq $15,%rcx + andq $-16,%rdx + movq %r14,0(%rsp) + leaq (%r12,%rdx,1),%rdx + movq %rdx,8(%rsp) + movq %rcx,16(%rsp) + + movq (%rbx),%rax + movq 8(%rbx),%rbx + jmp .Lcbc_dloop +.align 16 +.Lcbc_dloop: + movl 0(%r12),%r8d + movl 4(%r12),%r9d + movl 8(%r12),%r10d + bswapl %r8d + movl 12(%r12),%r11d + bswapl %r9d + movq %rax,0+24(%rsp) + bswapl %r10d + movq %rbx,8+24(%rsp) + bswapl %r11d + + call _x86_64_Camellia_decrypt + + movq 0(%rsp),%r14 + movq 8(%rsp),%rdx + movq 16(%rsp),%rcx + + bswapl %r8d + movq (%r12),%rax + bswapl %r9d + movq 8(%r12),%rbx + bswapl %r10d + xorl 0+24(%rsp),%r8d + bswapl %r11d + xorl 4+24(%rsp),%r9d + xorl 8+24(%rsp),%r10d + leaq 16(%r12),%r12 + xorl 12+24(%rsp),%r11d + cmpq %rdx,%r12 + je .Lcbc_ddone + + movl %r8d,0(%r13) + movl %r9d,4(%r13) + movl %r10d,8(%r13) + movl %r11d,12(%r13) + + leaq 16(%r13),%r13 + jmp .Lcbc_dloop + +.align 16 +.Lcbc_ddone: + movq 40(%rsp),%rdx + cmpq $0,%rcx + jne .Lcbc_dec_tail + + movl %r8d,0(%r13) + movl %r9d,4(%r13) + movl %r10d,8(%r13) + movl %r11d,12(%r13) + + movq %rax,(%rdx) + movq %rbx,8(%rdx) + jmp .Lcbc_done +.align 16 +.Lcbc_dec_tail: + movl %r8d,0+24(%rsp) + movl %r9d,4+24(%rsp) + movl %r10d,8+24(%rsp) + movl %r11d,12+24(%rsp) + +.Lcbc_dec_pushf: + pushfq + cld + leaq 8+24(%rsp),%rsi + leaq (%r13),%rdi +.long 0x9066A4F3 + popfq +.Lcbc_dec_popf: + + movq %rax,(%rdx) + movq %rbx,8(%rdx) + jmp .Lcbc_done + +.align 16 +.Lcbc_done: + movq 48(%rsp),%rcx +.cfi_def_cfa %rcx,56 + movq 0(%rcx),%r15 +.cfi_restore %r15 + movq 8(%rcx),%r14 +.cfi_restore %r14 + movq 16(%rcx),%r13 +.cfi_restore %r13 + movq 24(%rcx),%r12 +.cfi_restore %r12 + movq 32(%rcx),%rbp +.cfi_restore %rbp + movq 40(%rcx),%rbx +.cfi_restore %rbx + leaq 48(%rcx),%rsp +.cfi_def_cfa %rsp,8 +.Lcbc_abort: + .byte 0xf3,0xc3 +.cfi_endproc +.size Camellia_cbc_encrypt,.-Camellia_cbc_encrypt + +.byte 67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54,95,54,52,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/chacha/chacha-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/chacha/chacha-x86_64.s new file mode 100644 index 0000000..64bc213 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/chacha/chacha-x86_64.s @@ -0,0 +1,2193 @@ +.text + + + +.align 64 +.Lzero: +.long 0,0,0,0 +.Lone: +.long 1,0,0,0 +.Linc: +.long 0,1,2,3 +.Lfour: +.long 4,4,4,4 +.Lincy: +.long 0,2,4,6,1,3,5,7 +.Leight: +.long 8,8,8,8,8,8,8,8 +.Lrot16: +.byte 0x2,0x3,0x0,0x1, 0x6,0x7,0x4,0x5, 0xa,0xb,0x8,0x9, 0xe,0xf,0xc,0xd +.Lrot24: +.byte 0x3,0x0,0x1,0x2, 0x7,0x4,0x5,0x6, 0xb,0x8,0x9,0xa, 0xf,0xc,0xd,0xe +.Ltwoy: +.long 2,0,0,0, 2,0,0,0 +.align 64 +.Lzeroz: +.long 0,0,0,0, 1,0,0,0, 2,0,0,0, 3,0,0,0 +.Lfourz: +.long 4,0,0,0, 4,0,0,0, 4,0,0,0, 4,0,0,0 +.Lincz: +.long 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +.Lsixteen: +.long 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 +.Lsigma: +.byte 101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107,0 +.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.globl ChaCha20_ctr32 +.type ChaCha20_ctr32,@function +.align 64 +ChaCha20_ctr32: +.cfi_startproc + cmpq $0,%rdx + je .Lno_data + movq OPENSSL_ia32cap_P+4(%rip),%r10 + testl $512,%r10d + jnz .LChaCha20_ssse3 + + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $64+24,%rsp +.cfi_adjust_cfa_offset 64+24 +.Lctr32_body: + + + movdqu (%rcx),%xmm1 + movdqu 16(%rcx),%xmm2 + movdqu (%r8),%xmm3 + movdqa .Lone(%rip),%xmm4 + + + movdqa %xmm1,16(%rsp) + movdqa %xmm2,32(%rsp) + movdqa %xmm3,48(%rsp) + movq %rdx,%rbp + jmp .Loop_outer + +.align 32 +.Loop_outer: + movl $0x61707865,%eax + movl $0x3320646e,%ebx + movl $0x79622d32,%ecx + movl $0x6b206574,%edx + movl 16(%rsp),%r8d + movl 20(%rsp),%r9d + movl 24(%rsp),%r10d + movl 28(%rsp),%r11d + movd %xmm3,%r12d + movl 52(%rsp),%r13d + movl 56(%rsp),%r14d + movl 60(%rsp),%r15d + + movq %rbp,64+0(%rsp) + movl $10,%ebp + movq %rsi,64+8(%rsp) +.byte 102,72,15,126,214 + movq %rdi,64+16(%rsp) + movq %rsi,%rdi + shrq $32,%rdi + jmp .Loop + +.align 32 +.Loop: + addl %r8d,%eax + xorl %eax,%r12d + roll $16,%r12d + addl %r9d,%ebx + xorl %ebx,%r13d + roll $16,%r13d + addl %r12d,%esi + xorl %esi,%r8d + roll $12,%r8d + addl %r13d,%edi + xorl %edi,%r9d + roll $12,%r9d + addl %r8d,%eax + xorl %eax,%r12d + roll $8,%r12d + addl %r9d,%ebx + xorl %ebx,%r13d + roll $8,%r13d + addl %r12d,%esi + xorl %esi,%r8d + roll $7,%r8d + addl %r13d,%edi + xorl %edi,%r9d + roll $7,%r9d + movl %esi,32(%rsp) + movl %edi,36(%rsp) + movl 40(%rsp),%esi + movl 44(%rsp),%edi + addl %r10d,%ecx + xorl %ecx,%r14d + roll $16,%r14d + addl %r11d,%edx + xorl %edx,%r15d + roll $16,%r15d + addl %r14d,%esi + xorl %esi,%r10d + roll $12,%r10d + addl %r15d,%edi + xorl %edi,%r11d + roll $12,%r11d + addl %r10d,%ecx + xorl %ecx,%r14d + roll $8,%r14d + addl %r11d,%edx + xorl %edx,%r15d + roll $8,%r15d + addl %r14d,%esi + xorl %esi,%r10d + roll $7,%r10d + addl %r15d,%edi + xorl %edi,%r11d + roll $7,%r11d + addl %r9d,%eax + xorl %eax,%r15d + roll $16,%r15d + addl %r10d,%ebx + xorl %ebx,%r12d + roll $16,%r12d + addl %r15d,%esi + xorl %esi,%r9d + roll $12,%r9d + addl %r12d,%edi + xorl %edi,%r10d + roll $12,%r10d + addl %r9d,%eax + xorl %eax,%r15d + roll $8,%r15d + addl %r10d,%ebx + xorl %ebx,%r12d + roll $8,%r12d + addl %r15d,%esi + xorl %esi,%r9d + roll $7,%r9d + addl %r12d,%edi + xorl %edi,%r10d + roll $7,%r10d + movl %esi,40(%rsp) + movl %edi,44(%rsp) + movl 32(%rsp),%esi + movl 36(%rsp),%edi + addl %r11d,%ecx + xorl %ecx,%r13d + roll $16,%r13d + addl %r8d,%edx + xorl %edx,%r14d + roll $16,%r14d + addl %r13d,%esi + xorl %esi,%r11d + roll $12,%r11d + addl %r14d,%edi + xorl %edi,%r8d + roll $12,%r8d + addl %r11d,%ecx + xorl %ecx,%r13d + roll $8,%r13d + addl %r8d,%edx + xorl %edx,%r14d + roll $8,%r14d + addl %r13d,%esi + xorl %esi,%r11d + roll $7,%r11d + addl %r14d,%edi + xorl %edi,%r8d + roll $7,%r8d + decl %ebp + jnz .Loop + movl %edi,36(%rsp) + movl %esi,32(%rsp) + movq 64(%rsp),%rbp + movdqa %xmm2,%xmm1 + movq 64+8(%rsp),%rsi + paddd %xmm4,%xmm3 + movq 64+16(%rsp),%rdi + + addl $0x61707865,%eax + addl $0x3320646e,%ebx + addl $0x79622d32,%ecx + addl $0x6b206574,%edx + addl 16(%rsp),%r8d + addl 20(%rsp),%r9d + addl 24(%rsp),%r10d + addl 28(%rsp),%r11d + addl 48(%rsp),%r12d + addl 52(%rsp),%r13d + addl 56(%rsp),%r14d + addl 60(%rsp),%r15d + paddd 32(%rsp),%xmm1 + + cmpq $64,%rbp + jb .Ltail + + xorl 0(%rsi),%eax + xorl 4(%rsi),%ebx + xorl 8(%rsi),%ecx + xorl 12(%rsi),%edx + xorl 16(%rsi),%r8d + xorl 20(%rsi),%r9d + xorl 24(%rsi),%r10d + xorl 28(%rsi),%r11d + movdqu 32(%rsi),%xmm0 + xorl 48(%rsi),%r12d + xorl 52(%rsi),%r13d + xorl 56(%rsi),%r14d + xorl 60(%rsi),%r15d + leaq 64(%rsi),%rsi + pxor %xmm1,%xmm0 + + movdqa %xmm2,32(%rsp) + movd %xmm3,48(%rsp) + + movl %eax,0(%rdi) + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + movdqu %xmm0,32(%rdi) + movl %r12d,48(%rdi) + movl %r13d,52(%rdi) + movl %r14d,56(%rdi) + movl %r15d,60(%rdi) + leaq 64(%rdi),%rdi + + subq $64,%rbp + jnz .Loop_outer + + jmp .Ldone + +.align 16 +.Ltail: + movl %eax,0(%rsp) + movl %ebx,4(%rsp) + xorq %rbx,%rbx + movl %ecx,8(%rsp) + movl %edx,12(%rsp) + movl %r8d,16(%rsp) + movl %r9d,20(%rsp) + movl %r10d,24(%rsp) + movl %r11d,28(%rsp) + movdqa %xmm1,32(%rsp) + movl %r12d,48(%rsp) + movl %r13d,52(%rsp) + movl %r14d,56(%rsp) + movl %r15d,60(%rsp) + +.Loop_tail: + movzbl (%rsi,%rbx,1),%eax + movzbl (%rsp,%rbx,1),%edx + leaq 1(%rbx),%rbx + xorl %edx,%eax + movb %al,-1(%rdi,%rbx,1) + decq %rbp + jnz .Loop_tail + +.Ldone: + leaq 64+24+48(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lno_data: + .byte 0xf3,0xc3 +.cfi_endproc +.size ChaCha20_ctr32,.-ChaCha20_ctr32 +.type ChaCha20_ssse3,@function +.align 32 +ChaCha20_ssse3: +.cfi_startproc +.LChaCha20_ssse3: + movq %rsp,%r9 +.cfi_def_cfa_register %r9 + testl $2048,%r10d + jnz .LChaCha20_4xop + cmpq $128,%rdx + je .LChaCha20_128 + ja .LChaCha20_4x + +.Ldo_sse3_after_all: + subq $64+8,%rsp + movdqa .Lsigma(%rip),%xmm0 + movdqu (%rcx),%xmm1 + movdqu 16(%rcx),%xmm2 + movdqu (%r8),%xmm3 + movdqa .Lrot16(%rip),%xmm6 + movdqa .Lrot24(%rip),%xmm7 + + movdqa %xmm0,0(%rsp) + movdqa %xmm1,16(%rsp) + movdqa %xmm2,32(%rsp) + movdqa %xmm3,48(%rsp) + movq $10,%r8 + jmp .Loop_ssse3 + +.align 32 +.Loop_outer_ssse3: + movdqa .Lone(%rip),%xmm3 + movdqa 0(%rsp),%xmm0 + movdqa 16(%rsp),%xmm1 + movdqa 32(%rsp),%xmm2 + paddd 48(%rsp),%xmm3 + movq $10,%r8 + movdqa %xmm3,48(%rsp) + jmp .Loop_ssse3 + +.align 32 +.Loop_ssse3: + paddd %xmm1,%xmm0 + pxor %xmm0,%xmm3 +.byte 102,15,56,0,222 + paddd %xmm3,%xmm2 + pxor %xmm2,%xmm1 + movdqa %xmm1,%xmm4 + psrld $20,%xmm1 + pslld $12,%xmm4 + por %xmm4,%xmm1 + paddd %xmm1,%xmm0 + pxor %xmm0,%xmm3 +.byte 102,15,56,0,223 + paddd %xmm3,%xmm2 + pxor %xmm2,%xmm1 + movdqa %xmm1,%xmm4 + psrld $25,%xmm1 + pslld $7,%xmm4 + por %xmm4,%xmm1 + pshufd $78,%xmm2,%xmm2 + pshufd $57,%xmm1,%xmm1 + pshufd $147,%xmm3,%xmm3 + nop + paddd %xmm1,%xmm0 + pxor %xmm0,%xmm3 +.byte 102,15,56,0,222 + paddd %xmm3,%xmm2 + pxor %xmm2,%xmm1 + movdqa %xmm1,%xmm4 + psrld $20,%xmm1 + pslld $12,%xmm4 + por %xmm4,%xmm1 + paddd %xmm1,%xmm0 + pxor %xmm0,%xmm3 +.byte 102,15,56,0,223 + paddd %xmm3,%xmm2 + pxor %xmm2,%xmm1 + movdqa %xmm1,%xmm4 + psrld $25,%xmm1 + pslld $7,%xmm4 + por %xmm4,%xmm1 + pshufd $78,%xmm2,%xmm2 + pshufd $147,%xmm1,%xmm1 + pshufd $57,%xmm3,%xmm3 + decq %r8 + jnz .Loop_ssse3 + paddd 0(%rsp),%xmm0 + paddd 16(%rsp),%xmm1 + paddd 32(%rsp),%xmm2 + paddd 48(%rsp),%xmm3 + + cmpq $64,%rdx + jb .Ltail_ssse3 + + movdqu 0(%rsi),%xmm4 + movdqu 16(%rsi),%xmm5 + pxor %xmm4,%xmm0 + movdqu 32(%rsi),%xmm4 + pxor %xmm5,%xmm1 + movdqu 48(%rsi),%xmm5 + leaq 64(%rsi),%rsi + pxor %xmm4,%xmm2 + pxor %xmm5,%xmm3 + + movdqu %xmm0,0(%rdi) + movdqu %xmm1,16(%rdi) + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + leaq 64(%rdi),%rdi + + subq $64,%rdx + jnz .Loop_outer_ssse3 + + jmp .Ldone_ssse3 + +.align 16 +.Ltail_ssse3: + movdqa %xmm0,0(%rsp) + movdqa %xmm1,16(%rsp) + movdqa %xmm2,32(%rsp) + movdqa %xmm3,48(%rsp) + xorq %r8,%r8 + +.Loop_tail_ssse3: + movzbl (%rsi,%r8,1),%eax + movzbl (%rsp,%r8,1),%ecx + leaq 1(%r8),%r8 + xorl %ecx,%eax + movb %al,-1(%rdi,%r8,1) + decq %rdx + jnz .Loop_tail_ssse3 + +.Ldone_ssse3: + leaq (%r9),%rsp +.cfi_def_cfa_register %rsp +.Lssse3_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ChaCha20_ssse3,.-ChaCha20_ssse3 +.type ChaCha20_128,@function +.align 32 +ChaCha20_128: +.cfi_startproc +.LChaCha20_128: + movq %rsp,%r9 +.cfi_def_cfa_register %r9 + subq $64+8,%rsp + movdqa .Lsigma(%rip),%xmm8 + movdqu (%rcx),%xmm9 + movdqu 16(%rcx),%xmm2 + movdqu (%r8),%xmm3 + movdqa .Lone(%rip),%xmm1 + movdqa .Lrot16(%rip),%xmm6 + movdqa .Lrot24(%rip),%xmm7 + + movdqa %xmm8,%xmm10 + movdqa %xmm8,0(%rsp) + movdqa %xmm9,%xmm11 + movdqa %xmm9,16(%rsp) + movdqa %xmm2,%xmm0 + movdqa %xmm2,32(%rsp) + paddd %xmm3,%xmm1 + movdqa %xmm3,48(%rsp) + movq $10,%r8 + jmp .Loop_128 + +.align 32 +.Loop_128: + paddd %xmm9,%xmm8 + pxor %xmm8,%xmm3 + paddd %xmm11,%xmm10 + pxor %xmm10,%xmm1 +.byte 102,15,56,0,222 +.byte 102,15,56,0,206 + paddd %xmm3,%xmm2 + paddd %xmm1,%xmm0 + pxor %xmm2,%xmm9 + pxor %xmm0,%xmm11 + movdqa %xmm9,%xmm4 + psrld $20,%xmm9 + movdqa %xmm11,%xmm5 + pslld $12,%xmm4 + psrld $20,%xmm11 + por %xmm4,%xmm9 + pslld $12,%xmm5 + por %xmm5,%xmm11 + paddd %xmm9,%xmm8 + pxor %xmm8,%xmm3 + paddd %xmm11,%xmm10 + pxor %xmm10,%xmm1 +.byte 102,15,56,0,223 +.byte 102,15,56,0,207 + paddd %xmm3,%xmm2 + paddd %xmm1,%xmm0 + pxor %xmm2,%xmm9 + pxor %xmm0,%xmm11 + movdqa %xmm9,%xmm4 + psrld $25,%xmm9 + movdqa %xmm11,%xmm5 + pslld $7,%xmm4 + psrld $25,%xmm11 + por %xmm4,%xmm9 + pslld $7,%xmm5 + por %xmm5,%xmm11 + pshufd $78,%xmm2,%xmm2 + pshufd $57,%xmm9,%xmm9 + pshufd $147,%xmm3,%xmm3 + pshufd $78,%xmm0,%xmm0 + pshufd $57,%xmm11,%xmm11 + pshufd $147,%xmm1,%xmm1 + paddd %xmm9,%xmm8 + pxor %xmm8,%xmm3 + paddd %xmm11,%xmm10 + pxor %xmm10,%xmm1 +.byte 102,15,56,0,222 +.byte 102,15,56,0,206 + paddd %xmm3,%xmm2 + paddd %xmm1,%xmm0 + pxor %xmm2,%xmm9 + pxor %xmm0,%xmm11 + movdqa %xmm9,%xmm4 + psrld $20,%xmm9 + movdqa %xmm11,%xmm5 + pslld $12,%xmm4 + psrld $20,%xmm11 + por %xmm4,%xmm9 + pslld $12,%xmm5 + por %xmm5,%xmm11 + paddd %xmm9,%xmm8 + pxor %xmm8,%xmm3 + paddd %xmm11,%xmm10 + pxor %xmm10,%xmm1 +.byte 102,15,56,0,223 +.byte 102,15,56,0,207 + paddd %xmm3,%xmm2 + paddd %xmm1,%xmm0 + pxor %xmm2,%xmm9 + pxor %xmm0,%xmm11 + movdqa %xmm9,%xmm4 + psrld $25,%xmm9 + movdqa %xmm11,%xmm5 + pslld $7,%xmm4 + psrld $25,%xmm11 + por %xmm4,%xmm9 + pslld $7,%xmm5 + por %xmm5,%xmm11 + pshufd $78,%xmm2,%xmm2 + pshufd $147,%xmm9,%xmm9 + pshufd $57,%xmm3,%xmm3 + pshufd $78,%xmm0,%xmm0 + pshufd $147,%xmm11,%xmm11 + pshufd $57,%xmm1,%xmm1 + decq %r8 + jnz .Loop_128 + paddd 0(%rsp),%xmm8 + paddd 16(%rsp),%xmm9 + paddd 32(%rsp),%xmm2 + paddd 48(%rsp),%xmm3 + paddd .Lone(%rip),%xmm1 + paddd 0(%rsp),%xmm10 + paddd 16(%rsp),%xmm11 + paddd 32(%rsp),%xmm0 + paddd 48(%rsp),%xmm1 + + movdqu 0(%rsi),%xmm4 + movdqu 16(%rsi),%xmm5 + pxor %xmm4,%xmm8 + movdqu 32(%rsi),%xmm4 + pxor %xmm5,%xmm9 + movdqu 48(%rsi),%xmm5 + pxor %xmm4,%xmm2 + movdqu 64(%rsi),%xmm4 + pxor %xmm5,%xmm3 + movdqu 80(%rsi),%xmm5 + pxor %xmm4,%xmm10 + movdqu 96(%rsi),%xmm4 + pxor %xmm5,%xmm11 + movdqu 112(%rsi),%xmm5 + pxor %xmm4,%xmm0 + pxor %xmm5,%xmm1 + + movdqu %xmm8,0(%rdi) + movdqu %xmm9,16(%rdi) + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + movdqu %xmm10,64(%rdi) + movdqu %xmm11,80(%rdi) + movdqu %xmm0,96(%rdi) + movdqu %xmm1,112(%rdi) + leaq (%r9),%rsp +.cfi_def_cfa_register %rsp +.L128_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ChaCha20_128,.-ChaCha20_128 +.type ChaCha20_4x,@function +.align 32 +ChaCha20_4x: +.cfi_startproc +.LChaCha20_4x: + movq %rsp,%r9 +.cfi_def_cfa_register %r9 + movq %r10,%r11 + shrq $32,%r10 + testq $32,%r10 + jnz .LChaCha20_8x + cmpq $192,%rdx + ja .Lproceed4x + + andq $71303168,%r11 + cmpq $4194304,%r11 + je .Ldo_sse3_after_all + +.Lproceed4x: + subq $0x140+8,%rsp + movdqa .Lsigma(%rip),%xmm11 + movdqu (%rcx),%xmm15 + movdqu 16(%rcx),%xmm7 + movdqu (%r8),%xmm3 + leaq 256(%rsp),%rcx + leaq .Lrot16(%rip),%r10 + leaq .Lrot24(%rip),%r11 + + pshufd $0x00,%xmm11,%xmm8 + pshufd $0x55,%xmm11,%xmm9 + movdqa %xmm8,64(%rsp) + pshufd $0xaa,%xmm11,%xmm10 + movdqa %xmm9,80(%rsp) + pshufd $0xff,%xmm11,%xmm11 + movdqa %xmm10,96(%rsp) + movdqa %xmm11,112(%rsp) + + pshufd $0x00,%xmm15,%xmm12 + pshufd $0x55,%xmm15,%xmm13 + movdqa %xmm12,128-256(%rcx) + pshufd $0xaa,%xmm15,%xmm14 + movdqa %xmm13,144-256(%rcx) + pshufd $0xff,%xmm15,%xmm15 + movdqa %xmm14,160-256(%rcx) + movdqa %xmm15,176-256(%rcx) + + pshufd $0x00,%xmm7,%xmm4 + pshufd $0x55,%xmm7,%xmm5 + movdqa %xmm4,192-256(%rcx) + pshufd $0xaa,%xmm7,%xmm6 + movdqa %xmm5,208-256(%rcx) + pshufd $0xff,%xmm7,%xmm7 + movdqa %xmm6,224-256(%rcx) + movdqa %xmm7,240-256(%rcx) + + pshufd $0x00,%xmm3,%xmm0 + pshufd $0x55,%xmm3,%xmm1 + paddd .Linc(%rip),%xmm0 + pshufd $0xaa,%xmm3,%xmm2 + movdqa %xmm1,272-256(%rcx) + pshufd $0xff,%xmm3,%xmm3 + movdqa %xmm2,288-256(%rcx) + movdqa %xmm3,304-256(%rcx) + + jmp .Loop_enter4x + +.align 32 +.Loop_outer4x: + movdqa 64(%rsp),%xmm8 + movdqa 80(%rsp),%xmm9 + movdqa 96(%rsp),%xmm10 + movdqa 112(%rsp),%xmm11 + movdqa 128-256(%rcx),%xmm12 + movdqa 144-256(%rcx),%xmm13 + movdqa 160-256(%rcx),%xmm14 + movdqa 176-256(%rcx),%xmm15 + movdqa 192-256(%rcx),%xmm4 + movdqa 208-256(%rcx),%xmm5 + movdqa 224-256(%rcx),%xmm6 + movdqa 240-256(%rcx),%xmm7 + movdqa 256-256(%rcx),%xmm0 + movdqa 272-256(%rcx),%xmm1 + movdqa 288-256(%rcx),%xmm2 + movdqa 304-256(%rcx),%xmm3 + paddd .Lfour(%rip),%xmm0 + +.Loop_enter4x: + movdqa %xmm6,32(%rsp) + movdqa %xmm7,48(%rsp) + movdqa (%r10),%xmm7 + movl $10,%eax + movdqa %xmm0,256-256(%rcx) + jmp .Loop4x + +.align 32 +.Loop4x: + paddd %xmm12,%xmm8 + paddd %xmm13,%xmm9 + pxor %xmm8,%xmm0 + pxor %xmm9,%xmm1 +.byte 102,15,56,0,199 +.byte 102,15,56,0,207 + paddd %xmm0,%xmm4 + paddd %xmm1,%xmm5 + pxor %xmm4,%xmm12 + pxor %xmm5,%xmm13 + movdqa %xmm12,%xmm6 + pslld $12,%xmm12 + psrld $20,%xmm6 + movdqa %xmm13,%xmm7 + pslld $12,%xmm13 + por %xmm6,%xmm12 + psrld $20,%xmm7 + movdqa (%r11),%xmm6 + por %xmm7,%xmm13 + paddd %xmm12,%xmm8 + paddd %xmm13,%xmm9 + pxor %xmm8,%xmm0 + pxor %xmm9,%xmm1 +.byte 102,15,56,0,198 +.byte 102,15,56,0,206 + paddd %xmm0,%xmm4 + paddd %xmm1,%xmm5 + pxor %xmm4,%xmm12 + pxor %xmm5,%xmm13 + movdqa %xmm12,%xmm7 + pslld $7,%xmm12 + psrld $25,%xmm7 + movdqa %xmm13,%xmm6 + pslld $7,%xmm13 + por %xmm7,%xmm12 + psrld $25,%xmm6 + movdqa (%r10),%xmm7 + por %xmm6,%xmm13 + movdqa %xmm4,0(%rsp) + movdqa %xmm5,16(%rsp) + movdqa 32(%rsp),%xmm4 + movdqa 48(%rsp),%xmm5 + paddd %xmm14,%xmm10 + paddd %xmm15,%xmm11 + pxor %xmm10,%xmm2 + pxor %xmm11,%xmm3 +.byte 102,15,56,0,215 +.byte 102,15,56,0,223 + paddd %xmm2,%xmm4 + paddd %xmm3,%xmm5 + pxor %xmm4,%xmm14 + pxor %xmm5,%xmm15 + movdqa %xmm14,%xmm6 + pslld $12,%xmm14 + psrld $20,%xmm6 + movdqa %xmm15,%xmm7 + pslld $12,%xmm15 + por %xmm6,%xmm14 + psrld $20,%xmm7 + movdqa (%r11),%xmm6 + por %xmm7,%xmm15 + paddd %xmm14,%xmm10 + paddd %xmm15,%xmm11 + pxor %xmm10,%xmm2 + pxor %xmm11,%xmm3 +.byte 102,15,56,0,214 +.byte 102,15,56,0,222 + paddd %xmm2,%xmm4 + paddd %xmm3,%xmm5 + pxor %xmm4,%xmm14 + pxor %xmm5,%xmm15 + movdqa %xmm14,%xmm7 + pslld $7,%xmm14 + psrld $25,%xmm7 + movdqa %xmm15,%xmm6 + pslld $7,%xmm15 + por %xmm7,%xmm14 + psrld $25,%xmm6 + movdqa (%r10),%xmm7 + por %xmm6,%xmm15 + paddd %xmm13,%xmm8 + paddd %xmm14,%xmm9 + pxor %xmm8,%xmm3 + pxor %xmm9,%xmm0 +.byte 102,15,56,0,223 +.byte 102,15,56,0,199 + paddd %xmm3,%xmm4 + paddd %xmm0,%xmm5 + pxor %xmm4,%xmm13 + pxor %xmm5,%xmm14 + movdqa %xmm13,%xmm6 + pslld $12,%xmm13 + psrld $20,%xmm6 + movdqa %xmm14,%xmm7 + pslld $12,%xmm14 + por %xmm6,%xmm13 + psrld $20,%xmm7 + movdqa (%r11),%xmm6 + por %xmm7,%xmm14 + paddd %xmm13,%xmm8 + paddd %xmm14,%xmm9 + pxor %xmm8,%xmm3 + pxor %xmm9,%xmm0 +.byte 102,15,56,0,222 +.byte 102,15,56,0,198 + paddd %xmm3,%xmm4 + paddd %xmm0,%xmm5 + pxor %xmm4,%xmm13 + pxor %xmm5,%xmm14 + movdqa %xmm13,%xmm7 + pslld $7,%xmm13 + psrld $25,%xmm7 + movdqa %xmm14,%xmm6 + pslld $7,%xmm14 + por %xmm7,%xmm13 + psrld $25,%xmm6 + movdqa (%r10),%xmm7 + por %xmm6,%xmm14 + movdqa %xmm4,32(%rsp) + movdqa %xmm5,48(%rsp) + movdqa 0(%rsp),%xmm4 + movdqa 16(%rsp),%xmm5 + paddd %xmm15,%xmm10 + paddd %xmm12,%xmm11 + pxor %xmm10,%xmm1 + pxor %xmm11,%xmm2 +.byte 102,15,56,0,207 +.byte 102,15,56,0,215 + paddd %xmm1,%xmm4 + paddd %xmm2,%xmm5 + pxor %xmm4,%xmm15 + pxor %xmm5,%xmm12 + movdqa %xmm15,%xmm6 + pslld $12,%xmm15 + psrld $20,%xmm6 + movdqa %xmm12,%xmm7 + pslld $12,%xmm12 + por %xmm6,%xmm15 + psrld $20,%xmm7 + movdqa (%r11),%xmm6 + por %xmm7,%xmm12 + paddd %xmm15,%xmm10 + paddd %xmm12,%xmm11 + pxor %xmm10,%xmm1 + pxor %xmm11,%xmm2 +.byte 102,15,56,0,206 +.byte 102,15,56,0,214 + paddd %xmm1,%xmm4 + paddd %xmm2,%xmm5 + pxor %xmm4,%xmm15 + pxor %xmm5,%xmm12 + movdqa %xmm15,%xmm7 + pslld $7,%xmm15 + psrld $25,%xmm7 + movdqa %xmm12,%xmm6 + pslld $7,%xmm12 + por %xmm7,%xmm15 + psrld $25,%xmm6 + movdqa (%r10),%xmm7 + por %xmm6,%xmm12 + decl %eax + jnz .Loop4x + + paddd 64(%rsp),%xmm8 + paddd 80(%rsp),%xmm9 + paddd 96(%rsp),%xmm10 + paddd 112(%rsp),%xmm11 + + movdqa %xmm8,%xmm6 + punpckldq %xmm9,%xmm8 + movdqa %xmm10,%xmm7 + punpckldq %xmm11,%xmm10 + punpckhdq %xmm9,%xmm6 + punpckhdq %xmm11,%xmm7 + movdqa %xmm8,%xmm9 + punpcklqdq %xmm10,%xmm8 + movdqa %xmm6,%xmm11 + punpcklqdq %xmm7,%xmm6 + punpckhqdq %xmm10,%xmm9 + punpckhqdq %xmm7,%xmm11 + paddd 128-256(%rcx),%xmm12 + paddd 144-256(%rcx),%xmm13 + paddd 160-256(%rcx),%xmm14 + paddd 176-256(%rcx),%xmm15 + + movdqa %xmm8,0(%rsp) + movdqa %xmm9,16(%rsp) + movdqa 32(%rsp),%xmm8 + movdqa 48(%rsp),%xmm9 + + movdqa %xmm12,%xmm10 + punpckldq %xmm13,%xmm12 + movdqa %xmm14,%xmm7 + punpckldq %xmm15,%xmm14 + punpckhdq %xmm13,%xmm10 + punpckhdq %xmm15,%xmm7 + movdqa %xmm12,%xmm13 + punpcklqdq %xmm14,%xmm12 + movdqa %xmm10,%xmm15 + punpcklqdq %xmm7,%xmm10 + punpckhqdq %xmm14,%xmm13 + punpckhqdq %xmm7,%xmm15 + paddd 192-256(%rcx),%xmm4 + paddd 208-256(%rcx),%xmm5 + paddd 224-256(%rcx),%xmm8 + paddd 240-256(%rcx),%xmm9 + + movdqa %xmm6,32(%rsp) + movdqa %xmm11,48(%rsp) + + movdqa %xmm4,%xmm14 + punpckldq %xmm5,%xmm4 + movdqa %xmm8,%xmm7 + punpckldq %xmm9,%xmm8 + punpckhdq %xmm5,%xmm14 + punpckhdq %xmm9,%xmm7 + movdqa %xmm4,%xmm5 + punpcklqdq %xmm8,%xmm4 + movdqa %xmm14,%xmm9 + punpcklqdq %xmm7,%xmm14 + punpckhqdq %xmm8,%xmm5 + punpckhqdq %xmm7,%xmm9 + paddd 256-256(%rcx),%xmm0 + paddd 272-256(%rcx),%xmm1 + paddd 288-256(%rcx),%xmm2 + paddd 304-256(%rcx),%xmm3 + + movdqa %xmm0,%xmm8 + punpckldq %xmm1,%xmm0 + movdqa %xmm2,%xmm7 + punpckldq %xmm3,%xmm2 + punpckhdq %xmm1,%xmm8 + punpckhdq %xmm3,%xmm7 + movdqa %xmm0,%xmm1 + punpcklqdq %xmm2,%xmm0 + movdqa %xmm8,%xmm3 + punpcklqdq %xmm7,%xmm8 + punpckhqdq %xmm2,%xmm1 + punpckhqdq %xmm7,%xmm3 + cmpq $256,%rdx + jb .Ltail4x + + movdqu 0(%rsi),%xmm6 + movdqu 16(%rsi),%xmm11 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm7 + pxor 0(%rsp),%xmm6 + pxor %xmm12,%xmm11 + pxor %xmm4,%xmm2 + pxor %xmm0,%xmm7 + + movdqu %xmm6,0(%rdi) + movdqu 64(%rsi),%xmm6 + movdqu %xmm11,16(%rdi) + movdqu 80(%rsi),%xmm11 + movdqu %xmm2,32(%rdi) + movdqu 96(%rsi),%xmm2 + movdqu %xmm7,48(%rdi) + movdqu 112(%rsi),%xmm7 + leaq 128(%rsi),%rsi + pxor 16(%rsp),%xmm6 + pxor %xmm13,%xmm11 + pxor %xmm5,%xmm2 + pxor %xmm1,%xmm7 + + movdqu %xmm6,64(%rdi) + movdqu 0(%rsi),%xmm6 + movdqu %xmm11,80(%rdi) + movdqu 16(%rsi),%xmm11 + movdqu %xmm2,96(%rdi) + movdqu 32(%rsi),%xmm2 + movdqu %xmm7,112(%rdi) + leaq 128(%rdi),%rdi + movdqu 48(%rsi),%xmm7 + pxor 32(%rsp),%xmm6 + pxor %xmm10,%xmm11 + pxor %xmm14,%xmm2 + pxor %xmm8,%xmm7 + + movdqu %xmm6,0(%rdi) + movdqu 64(%rsi),%xmm6 + movdqu %xmm11,16(%rdi) + movdqu 80(%rsi),%xmm11 + movdqu %xmm2,32(%rdi) + movdqu 96(%rsi),%xmm2 + movdqu %xmm7,48(%rdi) + movdqu 112(%rsi),%xmm7 + leaq 128(%rsi),%rsi + pxor 48(%rsp),%xmm6 + pxor %xmm15,%xmm11 + pxor %xmm9,%xmm2 + pxor %xmm3,%xmm7 + movdqu %xmm6,64(%rdi) + movdqu %xmm11,80(%rdi) + movdqu %xmm2,96(%rdi) + movdqu %xmm7,112(%rdi) + leaq 128(%rdi),%rdi + + subq $256,%rdx + jnz .Loop_outer4x + + jmp .Ldone4x + +.Ltail4x: + cmpq $192,%rdx + jae .L192_or_more4x + cmpq $128,%rdx + jae .L128_or_more4x + cmpq $64,%rdx + jae .L64_or_more4x + + + xorq %r10,%r10 + + movdqa %xmm12,16(%rsp) + movdqa %xmm4,32(%rsp) + movdqa %xmm0,48(%rsp) + jmp .Loop_tail4x + +.align 32 +.L64_or_more4x: + movdqu 0(%rsi),%xmm6 + movdqu 16(%rsi),%xmm11 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm7 + pxor 0(%rsp),%xmm6 + pxor %xmm12,%xmm11 + pxor %xmm4,%xmm2 + pxor %xmm0,%xmm7 + movdqu %xmm6,0(%rdi) + movdqu %xmm11,16(%rdi) + movdqu %xmm2,32(%rdi) + movdqu %xmm7,48(%rdi) + je .Ldone4x + + movdqa 16(%rsp),%xmm6 + leaq 64(%rsi),%rsi + xorq %r10,%r10 + movdqa %xmm6,0(%rsp) + movdqa %xmm13,16(%rsp) + leaq 64(%rdi),%rdi + movdqa %xmm5,32(%rsp) + subq $64,%rdx + movdqa %xmm1,48(%rsp) + jmp .Loop_tail4x + +.align 32 +.L128_or_more4x: + movdqu 0(%rsi),%xmm6 + movdqu 16(%rsi),%xmm11 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm7 + pxor 0(%rsp),%xmm6 + pxor %xmm12,%xmm11 + pxor %xmm4,%xmm2 + pxor %xmm0,%xmm7 + + movdqu %xmm6,0(%rdi) + movdqu 64(%rsi),%xmm6 + movdqu %xmm11,16(%rdi) + movdqu 80(%rsi),%xmm11 + movdqu %xmm2,32(%rdi) + movdqu 96(%rsi),%xmm2 + movdqu %xmm7,48(%rdi) + movdqu 112(%rsi),%xmm7 + pxor 16(%rsp),%xmm6 + pxor %xmm13,%xmm11 + pxor %xmm5,%xmm2 + pxor %xmm1,%xmm7 + movdqu %xmm6,64(%rdi) + movdqu %xmm11,80(%rdi) + movdqu %xmm2,96(%rdi) + movdqu %xmm7,112(%rdi) + je .Ldone4x + + movdqa 32(%rsp),%xmm6 + leaq 128(%rsi),%rsi + xorq %r10,%r10 + movdqa %xmm6,0(%rsp) + movdqa %xmm10,16(%rsp) + leaq 128(%rdi),%rdi + movdqa %xmm14,32(%rsp) + subq $128,%rdx + movdqa %xmm8,48(%rsp) + jmp .Loop_tail4x + +.align 32 +.L192_or_more4x: + movdqu 0(%rsi),%xmm6 + movdqu 16(%rsi),%xmm11 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm7 + pxor 0(%rsp),%xmm6 + pxor %xmm12,%xmm11 + pxor %xmm4,%xmm2 + pxor %xmm0,%xmm7 + + movdqu %xmm6,0(%rdi) + movdqu 64(%rsi),%xmm6 + movdqu %xmm11,16(%rdi) + movdqu 80(%rsi),%xmm11 + movdqu %xmm2,32(%rdi) + movdqu 96(%rsi),%xmm2 + movdqu %xmm7,48(%rdi) + movdqu 112(%rsi),%xmm7 + leaq 128(%rsi),%rsi + pxor 16(%rsp),%xmm6 + pxor %xmm13,%xmm11 + pxor %xmm5,%xmm2 + pxor %xmm1,%xmm7 + + movdqu %xmm6,64(%rdi) + movdqu 0(%rsi),%xmm6 + movdqu %xmm11,80(%rdi) + movdqu 16(%rsi),%xmm11 + movdqu %xmm2,96(%rdi) + movdqu 32(%rsi),%xmm2 + movdqu %xmm7,112(%rdi) + leaq 128(%rdi),%rdi + movdqu 48(%rsi),%xmm7 + pxor 32(%rsp),%xmm6 + pxor %xmm10,%xmm11 + pxor %xmm14,%xmm2 + pxor %xmm8,%xmm7 + movdqu %xmm6,0(%rdi) + movdqu %xmm11,16(%rdi) + movdqu %xmm2,32(%rdi) + movdqu %xmm7,48(%rdi) + je .Ldone4x + + movdqa 48(%rsp),%xmm6 + leaq 64(%rsi),%rsi + xorq %r10,%r10 + movdqa %xmm6,0(%rsp) + movdqa %xmm15,16(%rsp) + leaq 64(%rdi),%rdi + movdqa %xmm9,32(%rsp) + subq $192,%rdx + movdqa %xmm3,48(%rsp) + +.Loop_tail4x: + movzbl (%rsi,%r10,1),%eax + movzbl (%rsp,%r10,1),%ecx + leaq 1(%r10),%r10 + xorl %ecx,%eax + movb %al,-1(%rdi,%r10,1) + decq %rdx + jnz .Loop_tail4x + +.Ldone4x: + leaq (%r9),%rsp +.cfi_def_cfa_register %rsp +.L4x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ChaCha20_4x,.-ChaCha20_4x +.type ChaCha20_4xop,@function +.align 32 +ChaCha20_4xop: +.cfi_startproc +.LChaCha20_4xop: + movq %rsp,%r9 +.cfi_def_cfa_register %r9 + subq $0x140+8,%rsp + vzeroupper + + vmovdqa .Lsigma(%rip),%xmm11 + vmovdqu (%rcx),%xmm3 + vmovdqu 16(%rcx),%xmm15 + vmovdqu (%r8),%xmm7 + leaq 256(%rsp),%rcx + + vpshufd $0x00,%xmm11,%xmm8 + vpshufd $0x55,%xmm11,%xmm9 + vmovdqa %xmm8,64(%rsp) + vpshufd $0xaa,%xmm11,%xmm10 + vmovdqa %xmm9,80(%rsp) + vpshufd $0xff,%xmm11,%xmm11 + vmovdqa %xmm10,96(%rsp) + vmovdqa %xmm11,112(%rsp) + + vpshufd $0x00,%xmm3,%xmm0 + vpshufd $0x55,%xmm3,%xmm1 + vmovdqa %xmm0,128-256(%rcx) + vpshufd $0xaa,%xmm3,%xmm2 + vmovdqa %xmm1,144-256(%rcx) + vpshufd $0xff,%xmm3,%xmm3 + vmovdqa %xmm2,160-256(%rcx) + vmovdqa %xmm3,176-256(%rcx) + + vpshufd $0x00,%xmm15,%xmm12 + vpshufd $0x55,%xmm15,%xmm13 + vmovdqa %xmm12,192-256(%rcx) + vpshufd $0xaa,%xmm15,%xmm14 + vmovdqa %xmm13,208-256(%rcx) + vpshufd $0xff,%xmm15,%xmm15 + vmovdqa %xmm14,224-256(%rcx) + vmovdqa %xmm15,240-256(%rcx) + + vpshufd $0x00,%xmm7,%xmm4 + vpshufd $0x55,%xmm7,%xmm5 + vpaddd .Linc(%rip),%xmm4,%xmm4 + vpshufd $0xaa,%xmm7,%xmm6 + vmovdqa %xmm5,272-256(%rcx) + vpshufd $0xff,%xmm7,%xmm7 + vmovdqa %xmm6,288-256(%rcx) + vmovdqa %xmm7,304-256(%rcx) + + jmp .Loop_enter4xop + +.align 32 +.Loop_outer4xop: + vmovdqa 64(%rsp),%xmm8 + vmovdqa 80(%rsp),%xmm9 + vmovdqa 96(%rsp),%xmm10 + vmovdqa 112(%rsp),%xmm11 + vmovdqa 128-256(%rcx),%xmm0 + vmovdqa 144-256(%rcx),%xmm1 + vmovdqa 160-256(%rcx),%xmm2 + vmovdqa 176-256(%rcx),%xmm3 + vmovdqa 192-256(%rcx),%xmm12 + vmovdqa 208-256(%rcx),%xmm13 + vmovdqa 224-256(%rcx),%xmm14 + vmovdqa 240-256(%rcx),%xmm15 + vmovdqa 256-256(%rcx),%xmm4 + vmovdqa 272-256(%rcx),%xmm5 + vmovdqa 288-256(%rcx),%xmm6 + vmovdqa 304-256(%rcx),%xmm7 + vpaddd .Lfour(%rip),%xmm4,%xmm4 + +.Loop_enter4xop: + movl $10,%eax + vmovdqa %xmm4,256-256(%rcx) + jmp .Loop4xop + +.align 32 +.Loop4xop: + vpaddd %xmm0,%xmm8,%xmm8 + vpaddd %xmm1,%xmm9,%xmm9 + vpaddd %xmm2,%xmm10,%xmm10 + vpaddd %xmm3,%xmm11,%xmm11 + vpxor %xmm4,%xmm8,%xmm4 + vpxor %xmm5,%xmm9,%xmm5 + vpxor %xmm6,%xmm10,%xmm6 + vpxor %xmm7,%xmm11,%xmm7 +.byte 143,232,120,194,228,16 +.byte 143,232,120,194,237,16 +.byte 143,232,120,194,246,16 +.byte 143,232,120,194,255,16 + vpaddd %xmm4,%xmm12,%xmm12 + vpaddd %xmm5,%xmm13,%xmm13 + vpaddd %xmm6,%xmm14,%xmm14 + vpaddd %xmm7,%xmm15,%xmm15 + vpxor %xmm0,%xmm12,%xmm0 + vpxor %xmm1,%xmm13,%xmm1 + vpxor %xmm14,%xmm2,%xmm2 + vpxor %xmm15,%xmm3,%xmm3 +.byte 143,232,120,194,192,12 +.byte 143,232,120,194,201,12 +.byte 143,232,120,194,210,12 +.byte 143,232,120,194,219,12 + vpaddd %xmm8,%xmm0,%xmm8 + vpaddd %xmm9,%xmm1,%xmm9 + vpaddd %xmm2,%xmm10,%xmm10 + vpaddd %xmm3,%xmm11,%xmm11 + vpxor %xmm4,%xmm8,%xmm4 + vpxor %xmm5,%xmm9,%xmm5 + vpxor %xmm6,%xmm10,%xmm6 + vpxor %xmm7,%xmm11,%xmm7 +.byte 143,232,120,194,228,8 +.byte 143,232,120,194,237,8 +.byte 143,232,120,194,246,8 +.byte 143,232,120,194,255,8 + vpaddd %xmm4,%xmm12,%xmm12 + vpaddd %xmm5,%xmm13,%xmm13 + vpaddd %xmm6,%xmm14,%xmm14 + vpaddd %xmm7,%xmm15,%xmm15 + vpxor %xmm0,%xmm12,%xmm0 + vpxor %xmm1,%xmm13,%xmm1 + vpxor %xmm14,%xmm2,%xmm2 + vpxor %xmm15,%xmm3,%xmm3 +.byte 143,232,120,194,192,7 +.byte 143,232,120,194,201,7 +.byte 143,232,120,194,210,7 +.byte 143,232,120,194,219,7 + vpaddd %xmm1,%xmm8,%xmm8 + vpaddd %xmm2,%xmm9,%xmm9 + vpaddd %xmm3,%xmm10,%xmm10 + vpaddd %xmm0,%xmm11,%xmm11 + vpxor %xmm7,%xmm8,%xmm7 + vpxor %xmm4,%xmm9,%xmm4 + vpxor %xmm5,%xmm10,%xmm5 + vpxor %xmm6,%xmm11,%xmm6 +.byte 143,232,120,194,255,16 +.byte 143,232,120,194,228,16 +.byte 143,232,120,194,237,16 +.byte 143,232,120,194,246,16 + vpaddd %xmm7,%xmm14,%xmm14 + vpaddd %xmm4,%xmm15,%xmm15 + vpaddd %xmm5,%xmm12,%xmm12 + vpaddd %xmm6,%xmm13,%xmm13 + vpxor %xmm1,%xmm14,%xmm1 + vpxor %xmm2,%xmm15,%xmm2 + vpxor %xmm12,%xmm3,%xmm3 + vpxor %xmm13,%xmm0,%xmm0 +.byte 143,232,120,194,201,12 +.byte 143,232,120,194,210,12 +.byte 143,232,120,194,219,12 +.byte 143,232,120,194,192,12 + vpaddd %xmm8,%xmm1,%xmm8 + vpaddd %xmm9,%xmm2,%xmm9 + vpaddd %xmm3,%xmm10,%xmm10 + vpaddd %xmm0,%xmm11,%xmm11 + vpxor %xmm7,%xmm8,%xmm7 + vpxor %xmm4,%xmm9,%xmm4 + vpxor %xmm5,%xmm10,%xmm5 + vpxor %xmm6,%xmm11,%xmm6 +.byte 143,232,120,194,255,8 +.byte 143,232,120,194,228,8 +.byte 143,232,120,194,237,8 +.byte 143,232,120,194,246,8 + vpaddd %xmm7,%xmm14,%xmm14 + vpaddd %xmm4,%xmm15,%xmm15 + vpaddd %xmm5,%xmm12,%xmm12 + vpaddd %xmm6,%xmm13,%xmm13 + vpxor %xmm1,%xmm14,%xmm1 + vpxor %xmm2,%xmm15,%xmm2 + vpxor %xmm12,%xmm3,%xmm3 + vpxor %xmm13,%xmm0,%xmm0 +.byte 143,232,120,194,201,7 +.byte 143,232,120,194,210,7 +.byte 143,232,120,194,219,7 +.byte 143,232,120,194,192,7 + decl %eax + jnz .Loop4xop + + vpaddd 64(%rsp),%xmm8,%xmm8 + vpaddd 80(%rsp),%xmm9,%xmm9 + vpaddd 96(%rsp),%xmm10,%xmm10 + vpaddd 112(%rsp),%xmm11,%xmm11 + + vmovdqa %xmm14,32(%rsp) + vmovdqa %xmm15,48(%rsp) + + vpunpckldq %xmm9,%xmm8,%xmm14 + vpunpckldq %xmm11,%xmm10,%xmm15 + vpunpckhdq %xmm9,%xmm8,%xmm8 + vpunpckhdq %xmm11,%xmm10,%xmm10 + vpunpcklqdq %xmm15,%xmm14,%xmm9 + vpunpckhqdq %xmm15,%xmm14,%xmm14 + vpunpcklqdq %xmm10,%xmm8,%xmm11 + vpunpckhqdq %xmm10,%xmm8,%xmm8 + vpaddd 128-256(%rcx),%xmm0,%xmm0 + vpaddd 144-256(%rcx),%xmm1,%xmm1 + vpaddd 160-256(%rcx),%xmm2,%xmm2 + vpaddd 176-256(%rcx),%xmm3,%xmm3 + + vmovdqa %xmm9,0(%rsp) + vmovdqa %xmm14,16(%rsp) + vmovdqa 32(%rsp),%xmm9 + vmovdqa 48(%rsp),%xmm14 + + vpunpckldq %xmm1,%xmm0,%xmm10 + vpunpckldq %xmm3,%xmm2,%xmm15 + vpunpckhdq %xmm1,%xmm0,%xmm0 + vpunpckhdq %xmm3,%xmm2,%xmm2 + vpunpcklqdq %xmm15,%xmm10,%xmm1 + vpunpckhqdq %xmm15,%xmm10,%xmm10 + vpunpcklqdq %xmm2,%xmm0,%xmm3 + vpunpckhqdq %xmm2,%xmm0,%xmm0 + vpaddd 192-256(%rcx),%xmm12,%xmm12 + vpaddd 208-256(%rcx),%xmm13,%xmm13 + vpaddd 224-256(%rcx),%xmm9,%xmm9 + vpaddd 240-256(%rcx),%xmm14,%xmm14 + + vpunpckldq %xmm13,%xmm12,%xmm2 + vpunpckldq %xmm14,%xmm9,%xmm15 + vpunpckhdq %xmm13,%xmm12,%xmm12 + vpunpckhdq %xmm14,%xmm9,%xmm9 + vpunpcklqdq %xmm15,%xmm2,%xmm13 + vpunpckhqdq %xmm15,%xmm2,%xmm2 + vpunpcklqdq %xmm9,%xmm12,%xmm14 + vpunpckhqdq %xmm9,%xmm12,%xmm12 + vpaddd 256-256(%rcx),%xmm4,%xmm4 + vpaddd 272-256(%rcx),%xmm5,%xmm5 + vpaddd 288-256(%rcx),%xmm6,%xmm6 + vpaddd 304-256(%rcx),%xmm7,%xmm7 + + vpunpckldq %xmm5,%xmm4,%xmm9 + vpunpckldq %xmm7,%xmm6,%xmm15 + vpunpckhdq %xmm5,%xmm4,%xmm4 + vpunpckhdq %xmm7,%xmm6,%xmm6 + vpunpcklqdq %xmm15,%xmm9,%xmm5 + vpunpckhqdq %xmm15,%xmm9,%xmm9 + vpunpcklqdq %xmm6,%xmm4,%xmm7 + vpunpckhqdq %xmm6,%xmm4,%xmm4 + vmovdqa 0(%rsp),%xmm6 + vmovdqa 16(%rsp),%xmm15 + + cmpq $256,%rdx + jb .Ltail4xop + + vpxor 0(%rsi),%xmm6,%xmm6 + vpxor 16(%rsi),%xmm1,%xmm1 + vpxor 32(%rsi),%xmm13,%xmm13 + vpxor 48(%rsi),%xmm5,%xmm5 + vpxor 64(%rsi),%xmm15,%xmm15 + vpxor 80(%rsi),%xmm10,%xmm10 + vpxor 96(%rsi),%xmm2,%xmm2 + vpxor 112(%rsi),%xmm9,%xmm9 + leaq 128(%rsi),%rsi + vpxor 0(%rsi),%xmm11,%xmm11 + vpxor 16(%rsi),%xmm3,%xmm3 + vpxor 32(%rsi),%xmm14,%xmm14 + vpxor 48(%rsi),%xmm7,%xmm7 + vpxor 64(%rsi),%xmm8,%xmm8 + vpxor 80(%rsi),%xmm0,%xmm0 + vpxor 96(%rsi),%xmm12,%xmm12 + vpxor 112(%rsi),%xmm4,%xmm4 + leaq 128(%rsi),%rsi + + vmovdqu %xmm6,0(%rdi) + vmovdqu %xmm1,16(%rdi) + vmovdqu %xmm13,32(%rdi) + vmovdqu %xmm5,48(%rdi) + vmovdqu %xmm15,64(%rdi) + vmovdqu %xmm10,80(%rdi) + vmovdqu %xmm2,96(%rdi) + vmovdqu %xmm9,112(%rdi) + leaq 128(%rdi),%rdi + vmovdqu %xmm11,0(%rdi) + vmovdqu %xmm3,16(%rdi) + vmovdqu %xmm14,32(%rdi) + vmovdqu %xmm7,48(%rdi) + vmovdqu %xmm8,64(%rdi) + vmovdqu %xmm0,80(%rdi) + vmovdqu %xmm12,96(%rdi) + vmovdqu %xmm4,112(%rdi) + leaq 128(%rdi),%rdi + + subq $256,%rdx + jnz .Loop_outer4xop + + jmp .Ldone4xop + +.align 32 +.Ltail4xop: + cmpq $192,%rdx + jae .L192_or_more4xop + cmpq $128,%rdx + jae .L128_or_more4xop + cmpq $64,%rdx + jae .L64_or_more4xop + + xorq %r10,%r10 + vmovdqa %xmm6,0(%rsp) + vmovdqa %xmm1,16(%rsp) + vmovdqa %xmm13,32(%rsp) + vmovdqa %xmm5,48(%rsp) + jmp .Loop_tail4xop + +.align 32 +.L64_or_more4xop: + vpxor 0(%rsi),%xmm6,%xmm6 + vpxor 16(%rsi),%xmm1,%xmm1 + vpxor 32(%rsi),%xmm13,%xmm13 + vpxor 48(%rsi),%xmm5,%xmm5 + vmovdqu %xmm6,0(%rdi) + vmovdqu %xmm1,16(%rdi) + vmovdqu %xmm13,32(%rdi) + vmovdqu %xmm5,48(%rdi) + je .Ldone4xop + + leaq 64(%rsi),%rsi + vmovdqa %xmm15,0(%rsp) + xorq %r10,%r10 + vmovdqa %xmm10,16(%rsp) + leaq 64(%rdi),%rdi + vmovdqa %xmm2,32(%rsp) + subq $64,%rdx + vmovdqa %xmm9,48(%rsp) + jmp .Loop_tail4xop + +.align 32 +.L128_or_more4xop: + vpxor 0(%rsi),%xmm6,%xmm6 + vpxor 16(%rsi),%xmm1,%xmm1 + vpxor 32(%rsi),%xmm13,%xmm13 + vpxor 48(%rsi),%xmm5,%xmm5 + vpxor 64(%rsi),%xmm15,%xmm15 + vpxor 80(%rsi),%xmm10,%xmm10 + vpxor 96(%rsi),%xmm2,%xmm2 + vpxor 112(%rsi),%xmm9,%xmm9 + + vmovdqu %xmm6,0(%rdi) + vmovdqu %xmm1,16(%rdi) + vmovdqu %xmm13,32(%rdi) + vmovdqu %xmm5,48(%rdi) + vmovdqu %xmm15,64(%rdi) + vmovdqu %xmm10,80(%rdi) + vmovdqu %xmm2,96(%rdi) + vmovdqu %xmm9,112(%rdi) + je .Ldone4xop + + leaq 128(%rsi),%rsi + vmovdqa %xmm11,0(%rsp) + xorq %r10,%r10 + vmovdqa %xmm3,16(%rsp) + leaq 128(%rdi),%rdi + vmovdqa %xmm14,32(%rsp) + subq $128,%rdx + vmovdqa %xmm7,48(%rsp) + jmp .Loop_tail4xop + +.align 32 +.L192_or_more4xop: + vpxor 0(%rsi),%xmm6,%xmm6 + vpxor 16(%rsi),%xmm1,%xmm1 + vpxor 32(%rsi),%xmm13,%xmm13 + vpxor 48(%rsi),%xmm5,%xmm5 + vpxor 64(%rsi),%xmm15,%xmm15 + vpxor 80(%rsi),%xmm10,%xmm10 + vpxor 96(%rsi),%xmm2,%xmm2 + vpxor 112(%rsi),%xmm9,%xmm9 + leaq 128(%rsi),%rsi + vpxor 0(%rsi),%xmm11,%xmm11 + vpxor 16(%rsi),%xmm3,%xmm3 + vpxor 32(%rsi),%xmm14,%xmm14 + vpxor 48(%rsi),%xmm7,%xmm7 + + vmovdqu %xmm6,0(%rdi) + vmovdqu %xmm1,16(%rdi) + vmovdqu %xmm13,32(%rdi) + vmovdqu %xmm5,48(%rdi) + vmovdqu %xmm15,64(%rdi) + vmovdqu %xmm10,80(%rdi) + vmovdqu %xmm2,96(%rdi) + vmovdqu %xmm9,112(%rdi) + leaq 128(%rdi),%rdi + vmovdqu %xmm11,0(%rdi) + vmovdqu %xmm3,16(%rdi) + vmovdqu %xmm14,32(%rdi) + vmovdqu %xmm7,48(%rdi) + je .Ldone4xop + + leaq 64(%rsi),%rsi + vmovdqa %xmm8,0(%rsp) + xorq %r10,%r10 + vmovdqa %xmm0,16(%rsp) + leaq 64(%rdi),%rdi + vmovdqa %xmm12,32(%rsp) + subq $192,%rdx + vmovdqa %xmm4,48(%rsp) + +.Loop_tail4xop: + movzbl (%rsi,%r10,1),%eax + movzbl (%rsp,%r10,1),%ecx + leaq 1(%r10),%r10 + xorl %ecx,%eax + movb %al,-1(%rdi,%r10,1) + decq %rdx + jnz .Loop_tail4xop + +.Ldone4xop: + vzeroupper + leaq (%r9),%rsp +.cfi_def_cfa_register %rsp +.L4xop_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ChaCha20_4xop,.-ChaCha20_4xop +.type ChaCha20_8x,@function +.align 32 +ChaCha20_8x: +.cfi_startproc +.LChaCha20_8x: + movq %rsp,%r9 +.cfi_def_cfa_register %r9 + subq $0x280+8,%rsp + andq $-32,%rsp + vzeroupper + + + + + + + + + + + vbroadcasti128 .Lsigma(%rip),%ymm11 + vbroadcasti128 (%rcx),%ymm3 + vbroadcasti128 16(%rcx),%ymm15 + vbroadcasti128 (%r8),%ymm7 + leaq 256(%rsp),%rcx + leaq 512(%rsp),%rax + leaq .Lrot16(%rip),%r10 + leaq .Lrot24(%rip),%r11 + + vpshufd $0x00,%ymm11,%ymm8 + vpshufd $0x55,%ymm11,%ymm9 + vmovdqa %ymm8,128-256(%rcx) + vpshufd $0xaa,%ymm11,%ymm10 + vmovdqa %ymm9,160-256(%rcx) + vpshufd $0xff,%ymm11,%ymm11 + vmovdqa %ymm10,192-256(%rcx) + vmovdqa %ymm11,224-256(%rcx) + + vpshufd $0x00,%ymm3,%ymm0 + vpshufd $0x55,%ymm3,%ymm1 + vmovdqa %ymm0,256-256(%rcx) + vpshufd $0xaa,%ymm3,%ymm2 + vmovdqa %ymm1,288-256(%rcx) + vpshufd $0xff,%ymm3,%ymm3 + vmovdqa %ymm2,320-256(%rcx) + vmovdqa %ymm3,352-256(%rcx) + + vpshufd $0x00,%ymm15,%ymm12 + vpshufd $0x55,%ymm15,%ymm13 + vmovdqa %ymm12,384-512(%rax) + vpshufd $0xaa,%ymm15,%ymm14 + vmovdqa %ymm13,416-512(%rax) + vpshufd $0xff,%ymm15,%ymm15 + vmovdqa %ymm14,448-512(%rax) + vmovdqa %ymm15,480-512(%rax) + + vpshufd $0x00,%ymm7,%ymm4 + vpshufd $0x55,%ymm7,%ymm5 + vpaddd .Lincy(%rip),%ymm4,%ymm4 + vpshufd $0xaa,%ymm7,%ymm6 + vmovdqa %ymm5,544-512(%rax) + vpshufd $0xff,%ymm7,%ymm7 + vmovdqa %ymm6,576-512(%rax) + vmovdqa %ymm7,608-512(%rax) + + jmp .Loop_enter8x + +.align 32 +.Loop_outer8x: + vmovdqa 128-256(%rcx),%ymm8 + vmovdqa 160-256(%rcx),%ymm9 + vmovdqa 192-256(%rcx),%ymm10 + vmovdqa 224-256(%rcx),%ymm11 + vmovdqa 256-256(%rcx),%ymm0 + vmovdqa 288-256(%rcx),%ymm1 + vmovdqa 320-256(%rcx),%ymm2 + vmovdqa 352-256(%rcx),%ymm3 + vmovdqa 384-512(%rax),%ymm12 + vmovdqa 416-512(%rax),%ymm13 + vmovdqa 448-512(%rax),%ymm14 + vmovdqa 480-512(%rax),%ymm15 + vmovdqa 512-512(%rax),%ymm4 + vmovdqa 544-512(%rax),%ymm5 + vmovdqa 576-512(%rax),%ymm6 + vmovdqa 608-512(%rax),%ymm7 + vpaddd .Leight(%rip),%ymm4,%ymm4 + +.Loop_enter8x: + vmovdqa %ymm14,64(%rsp) + vmovdqa %ymm15,96(%rsp) + vbroadcasti128 (%r10),%ymm15 + vmovdqa %ymm4,512-512(%rax) + movl $10,%eax + jmp .Loop8x + +.align 32 +.Loop8x: + vpaddd %ymm0,%ymm8,%ymm8 + vpxor %ymm4,%ymm8,%ymm4 + vpshufb %ymm15,%ymm4,%ymm4 + vpaddd %ymm1,%ymm9,%ymm9 + vpxor %ymm5,%ymm9,%ymm5 + vpshufb %ymm15,%ymm5,%ymm5 + vpaddd %ymm4,%ymm12,%ymm12 + vpxor %ymm0,%ymm12,%ymm0 + vpslld $12,%ymm0,%ymm14 + vpsrld $20,%ymm0,%ymm0 + vpor %ymm0,%ymm14,%ymm0 + vbroadcasti128 (%r11),%ymm14 + vpaddd %ymm5,%ymm13,%ymm13 + vpxor %ymm1,%ymm13,%ymm1 + vpslld $12,%ymm1,%ymm15 + vpsrld $20,%ymm1,%ymm1 + vpor %ymm1,%ymm15,%ymm1 + vpaddd %ymm0,%ymm8,%ymm8 + vpxor %ymm4,%ymm8,%ymm4 + vpshufb %ymm14,%ymm4,%ymm4 + vpaddd %ymm1,%ymm9,%ymm9 + vpxor %ymm5,%ymm9,%ymm5 + vpshufb %ymm14,%ymm5,%ymm5 + vpaddd %ymm4,%ymm12,%ymm12 + vpxor %ymm0,%ymm12,%ymm0 + vpslld $7,%ymm0,%ymm15 + vpsrld $25,%ymm0,%ymm0 + vpor %ymm0,%ymm15,%ymm0 + vbroadcasti128 (%r10),%ymm15 + vpaddd %ymm5,%ymm13,%ymm13 + vpxor %ymm1,%ymm13,%ymm1 + vpslld $7,%ymm1,%ymm14 + vpsrld $25,%ymm1,%ymm1 + vpor %ymm1,%ymm14,%ymm1 + vmovdqa %ymm12,0(%rsp) + vmovdqa %ymm13,32(%rsp) + vmovdqa 64(%rsp),%ymm12 + vmovdqa 96(%rsp),%ymm13 + vpaddd %ymm2,%ymm10,%ymm10 + vpxor %ymm6,%ymm10,%ymm6 + vpshufb %ymm15,%ymm6,%ymm6 + vpaddd %ymm3,%ymm11,%ymm11 + vpxor %ymm7,%ymm11,%ymm7 + vpshufb %ymm15,%ymm7,%ymm7 + vpaddd %ymm6,%ymm12,%ymm12 + vpxor %ymm2,%ymm12,%ymm2 + vpslld $12,%ymm2,%ymm14 + vpsrld $20,%ymm2,%ymm2 + vpor %ymm2,%ymm14,%ymm2 + vbroadcasti128 (%r11),%ymm14 + vpaddd %ymm7,%ymm13,%ymm13 + vpxor %ymm3,%ymm13,%ymm3 + vpslld $12,%ymm3,%ymm15 + vpsrld $20,%ymm3,%ymm3 + vpor %ymm3,%ymm15,%ymm3 + vpaddd %ymm2,%ymm10,%ymm10 + vpxor %ymm6,%ymm10,%ymm6 + vpshufb %ymm14,%ymm6,%ymm6 + vpaddd %ymm3,%ymm11,%ymm11 + vpxor %ymm7,%ymm11,%ymm7 + vpshufb %ymm14,%ymm7,%ymm7 + vpaddd %ymm6,%ymm12,%ymm12 + vpxor %ymm2,%ymm12,%ymm2 + vpslld $7,%ymm2,%ymm15 + vpsrld $25,%ymm2,%ymm2 + vpor %ymm2,%ymm15,%ymm2 + vbroadcasti128 (%r10),%ymm15 + vpaddd %ymm7,%ymm13,%ymm13 + vpxor %ymm3,%ymm13,%ymm3 + vpslld $7,%ymm3,%ymm14 + vpsrld $25,%ymm3,%ymm3 + vpor %ymm3,%ymm14,%ymm3 + vpaddd %ymm1,%ymm8,%ymm8 + vpxor %ymm7,%ymm8,%ymm7 + vpshufb %ymm15,%ymm7,%ymm7 + vpaddd %ymm2,%ymm9,%ymm9 + vpxor %ymm4,%ymm9,%ymm4 + vpshufb %ymm15,%ymm4,%ymm4 + vpaddd %ymm7,%ymm12,%ymm12 + vpxor %ymm1,%ymm12,%ymm1 + vpslld $12,%ymm1,%ymm14 + vpsrld $20,%ymm1,%ymm1 + vpor %ymm1,%ymm14,%ymm1 + vbroadcasti128 (%r11),%ymm14 + vpaddd %ymm4,%ymm13,%ymm13 + vpxor %ymm2,%ymm13,%ymm2 + vpslld $12,%ymm2,%ymm15 + vpsrld $20,%ymm2,%ymm2 + vpor %ymm2,%ymm15,%ymm2 + vpaddd %ymm1,%ymm8,%ymm8 + vpxor %ymm7,%ymm8,%ymm7 + vpshufb %ymm14,%ymm7,%ymm7 + vpaddd %ymm2,%ymm9,%ymm9 + vpxor %ymm4,%ymm9,%ymm4 + vpshufb %ymm14,%ymm4,%ymm4 + vpaddd %ymm7,%ymm12,%ymm12 + vpxor %ymm1,%ymm12,%ymm1 + vpslld $7,%ymm1,%ymm15 + vpsrld $25,%ymm1,%ymm1 + vpor %ymm1,%ymm15,%ymm1 + vbroadcasti128 (%r10),%ymm15 + vpaddd %ymm4,%ymm13,%ymm13 + vpxor %ymm2,%ymm13,%ymm2 + vpslld $7,%ymm2,%ymm14 + vpsrld $25,%ymm2,%ymm2 + vpor %ymm2,%ymm14,%ymm2 + vmovdqa %ymm12,64(%rsp) + vmovdqa %ymm13,96(%rsp) + vmovdqa 0(%rsp),%ymm12 + vmovdqa 32(%rsp),%ymm13 + vpaddd %ymm3,%ymm10,%ymm10 + vpxor %ymm5,%ymm10,%ymm5 + vpshufb %ymm15,%ymm5,%ymm5 + vpaddd %ymm0,%ymm11,%ymm11 + vpxor %ymm6,%ymm11,%ymm6 + vpshufb %ymm15,%ymm6,%ymm6 + vpaddd %ymm5,%ymm12,%ymm12 + vpxor %ymm3,%ymm12,%ymm3 + vpslld $12,%ymm3,%ymm14 + vpsrld $20,%ymm3,%ymm3 + vpor %ymm3,%ymm14,%ymm3 + vbroadcasti128 (%r11),%ymm14 + vpaddd %ymm6,%ymm13,%ymm13 + vpxor %ymm0,%ymm13,%ymm0 + vpslld $12,%ymm0,%ymm15 + vpsrld $20,%ymm0,%ymm0 + vpor %ymm0,%ymm15,%ymm0 + vpaddd %ymm3,%ymm10,%ymm10 + vpxor %ymm5,%ymm10,%ymm5 + vpshufb %ymm14,%ymm5,%ymm5 + vpaddd %ymm0,%ymm11,%ymm11 + vpxor %ymm6,%ymm11,%ymm6 + vpshufb %ymm14,%ymm6,%ymm6 + vpaddd %ymm5,%ymm12,%ymm12 + vpxor %ymm3,%ymm12,%ymm3 + vpslld $7,%ymm3,%ymm15 + vpsrld $25,%ymm3,%ymm3 + vpor %ymm3,%ymm15,%ymm3 + vbroadcasti128 (%r10),%ymm15 + vpaddd %ymm6,%ymm13,%ymm13 + vpxor %ymm0,%ymm13,%ymm0 + vpslld $7,%ymm0,%ymm14 + vpsrld $25,%ymm0,%ymm0 + vpor %ymm0,%ymm14,%ymm0 + decl %eax + jnz .Loop8x + + leaq 512(%rsp),%rax + vpaddd 128-256(%rcx),%ymm8,%ymm8 + vpaddd 160-256(%rcx),%ymm9,%ymm9 + vpaddd 192-256(%rcx),%ymm10,%ymm10 + vpaddd 224-256(%rcx),%ymm11,%ymm11 + + vpunpckldq %ymm9,%ymm8,%ymm14 + vpunpckldq %ymm11,%ymm10,%ymm15 + vpunpckhdq %ymm9,%ymm8,%ymm8 + vpunpckhdq %ymm11,%ymm10,%ymm10 + vpunpcklqdq %ymm15,%ymm14,%ymm9 + vpunpckhqdq %ymm15,%ymm14,%ymm14 + vpunpcklqdq %ymm10,%ymm8,%ymm11 + vpunpckhqdq %ymm10,%ymm8,%ymm8 + vpaddd 256-256(%rcx),%ymm0,%ymm0 + vpaddd 288-256(%rcx),%ymm1,%ymm1 + vpaddd 320-256(%rcx),%ymm2,%ymm2 + vpaddd 352-256(%rcx),%ymm3,%ymm3 + + vpunpckldq %ymm1,%ymm0,%ymm10 + vpunpckldq %ymm3,%ymm2,%ymm15 + vpunpckhdq %ymm1,%ymm0,%ymm0 + vpunpckhdq %ymm3,%ymm2,%ymm2 + vpunpcklqdq %ymm15,%ymm10,%ymm1 + vpunpckhqdq %ymm15,%ymm10,%ymm10 + vpunpcklqdq %ymm2,%ymm0,%ymm3 + vpunpckhqdq %ymm2,%ymm0,%ymm0 + vperm2i128 $0x20,%ymm1,%ymm9,%ymm15 + vperm2i128 $0x31,%ymm1,%ymm9,%ymm1 + vperm2i128 $0x20,%ymm10,%ymm14,%ymm9 + vperm2i128 $0x31,%ymm10,%ymm14,%ymm10 + vperm2i128 $0x20,%ymm3,%ymm11,%ymm14 + vperm2i128 $0x31,%ymm3,%ymm11,%ymm3 + vperm2i128 $0x20,%ymm0,%ymm8,%ymm11 + vperm2i128 $0x31,%ymm0,%ymm8,%ymm0 + vmovdqa %ymm15,0(%rsp) + vmovdqa %ymm9,32(%rsp) + vmovdqa 64(%rsp),%ymm15 + vmovdqa 96(%rsp),%ymm9 + + vpaddd 384-512(%rax),%ymm12,%ymm12 + vpaddd 416-512(%rax),%ymm13,%ymm13 + vpaddd 448-512(%rax),%ymm15,%ymm15 + vpaddd 480-512(%rax),%ymm9,%ymm9 + + vpunpckldq %ymm13,%ymm12,%ymm2 + vpunpckldq %ymm9,%ymm15,%ymm8 + vpunpckhdq %ymm13,%ymm12,%ymm12 + vpunpckhdq %ymm9,%ymm15,%ymm15 + vpunpcklqdq %ymm8,%ymm2,%ymm13 + vpunpckhqdq %ymm8,%ymm2,%ymm2 + vpunpcklqdq %ymm15,%ymm12,%ymm9 + vpunpckhqdq %ymm15,%ymm12,%ymm12 + vpaddd 512-512(%rax),%ymm4,%ymm4 + vpaddd 544-512(%rax),%ymm5,%ymm5 + vpaddd 576-512(%rax),%ymm6,%ymm6 + vpaddd 608-512(%rax),%ymm7,%ymm7 + + vpunpckldq %ymm5,%ymm4,%ymm15 + vpunpckldq %ymm7,%ymm6,%ymm8 + vpunpckhdq %ymm5,%ymm4,%ymm4 + vpunpckhdq %ymm7,%ymm6,%ymm6 + vpunpcklqdq %ymm8,%ymm15,%ymm5 + vpunpckhqdq %ymm8,%ymm15,%ymm15 + vpunpcklqdq %ymm6,%ymm4,%ymm7 + vpunpckhqdq %ymm6,%ymm4,%ymm4 + vperm2i128 $0x20,%ymm5,%ymm13,%ymm8 + vperm2i128 $0x31,%ymm5,%ymm13,%ymm5 + vperm2i128 $0x20,%ymm15,%ymm2,%ymm13 + vperm2i128 $0x31,%ymm15,%ymm2,%ymm15 + vperm2i128 $0x20,%ymm7,%ymm9,%ymm2 + vperm2i128 $0x31,%ymm7,%ymm9,%ymm7 + vperm2i128 $0x20,%ymm4,%ymm12,%ymm9 + vperm2i128 $0x31,%ymm4,%ymm12,%ymm4 + vmovdqa 0(%rsp),%ymm6 + vmovdqa 32(%rsp),%ymm12 + + cmpq $512,%rdx + jb .Ltail8x + + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + leaq 128(%rsi),%rsi + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + leaq 128(%rdi),%rdi + + vpxor 0(%rsi),%ymm12,%ymm12 + vpxor 32(%rsi),%ymm13,%ymm13 + vpxor 64(%rsi),%ymm10,%ymm10 + vpxor 96(%rsi),%ymm15,%ymm15 + leaq 128(%rsi),%rsi + vmovdqu %ymm12,0(%rdi) + vmovdqu %ymm13,32(%rdi) + vmovdqu %ymm10,64(%rdi) + vmovdqu %ymm15,96(%rdi) + leaq 128(%rdi),%rdi + + vpxor 0(%rsi),%ymm14,%ymm14 + vpxor 32(%rsi),%ymm2,%ymm2 + vpxor 64(%rsi),%ymm3,%ymm3 + vpxor 96(%rsi),%ymm7,%ymm7 + leaq 128(%rsi),%rsi + vmovdqu %ymm14,0(%rdi) + vmovdqu %ymm2,32(%rdi) + vmovdqu %ymm3,64(%rdi) + vmovdqu %ymm7,96(%rdi) + leaq 128(%rdi),%rdi + + vpxor 0(%rsi),%ymm11,%ymm11 + vpxor 32(%rsi),%ymm9,%ymm9 + vpxor 64(%rsi),%ymm0,%ymm0 + vpxor 96(%rsi),%ymm4,%ymm4 + leaq 128(%rsi),%rsi + vmovdqu %ymm11,0(%rdi) + vmovdqu %ymm9,32(%rdi) + vmovdqu %ymm0,64(%rdi) + vmovdqu %ymm4,96(%rdi) + leaq 128(%rdi),%rdi + + subq $512,%rdx + jnz .Loop_outer8x + + jmp .Ldone8x + +.Ltail8x: + cmpq $448,%rdx + jae .L448_or_more8x + cmpq $384,%rdx + jae .L384_or_more8x + cmpq $320,%rdx + jae .L320_or_more8x + cmpq $256,%rdx + jae .L256_or_more8x + cmpq $192,%rdx + jae .L192_or_more8x + cmpq $128,%rdx + jae .L128_or_more8x + cmpq $64,%rdx + jae .L64_or_more8x + + xorq %r10,%r10 + vmovdqa %ymm6,0(%rsp) + vmovdqa %ymm8,32(%rsp) + jmp .Loop_tail8x + +.align 32 +.L64_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + je .Ldone8x + + leaq 64(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm1,0(%rsp) + leaq 64(%rdi),%rdi + subq $64,%rdx + vmovdqa %ymm5,32(%rsp) + jmp .Loop_tail8x + +.align 32 +.L128_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + je .Ldone8x + + leaq 128(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm12,0(%rsp) + leaq 128(%rdi),%rdi + subq $128,%rdx + vmovdqa %ymm13,32(%rsp) + jmp .Loop_tail8x + +.align 32 +.L192_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + vpxor 128(%rsi),%ymm12,%ymm12 + vpxor 160(%rsi),%ymm13,%ymm13 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + vmovdqu %ymm12,128(%rdi) + vmovdqu %ymm13,160(%rdi) + je .Ldone8x + + leaq 192(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm10,0(%rsp) + leaq 192(%rdi),%rdi + subq $192,%rdx + vmovdqa %ymm15,32(%rsp) + jmp .Loop_tail8x + +.align 32 +.L256_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + vpxor 128(%rsi),%ymm12,%ymm12 + vpxor 160(%rsi),%ymm13,%ymm13 + vpxor 192(%rsi),%ymm10,%ymm10 + vpxor 224(%rsi),%ymm15,%ymm15 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + vmovdqu %ymm12,128(%rdi) + vmovdqu %ymm13,160(%rdi) + vmovdqu %ymm10,192(%rdi) + vmovdqu %ymm15,224(%rdi) + je .Ldone8x + + leaq 256(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm14,0(%rsp) + leaq 256(%rdi),%rdi + subq $256,%rdx + vmovdqa %ymm2,32(%rsp) + jmp .Loop_tail8x + +.align 32 +.L320_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + vpxor 128(%rsi),%ymm12,%ymm12 + vpxor 160(%rsi),%ymm13,%ymm13 + vpxor 192(%rsi),%ymm10,%ymm10 + vpxor 224(%rsi),%ymm15,%ymm15 + vpxor 256(%rsi),%ymm14,%ymm14 + vpxor 288(%rsi),%ymm2,%ymm2 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + vmovdqu %ymm12,128(%rdi) + vmovdqu %ymm13,160(%rdi) + vmovdqu %ymm10,192(%rdi) + vmovdqu %ymm15,224(%rdi) + vmovdqu %ymm14,256(%rdi) + vmovdqu %ymm2,288(%rdi) + je .Ldone8x + + leaq 320(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm3,0(%rsp) + leaq 320(%rdi),%rdi + subq $320,%rdx + vmovdqa %ymm7,32(%rsp) + jmp .Loop_tail8x + +.align 32 +.L384_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + vpxor 128(%rsi),%ymm12,%ymm12 + vpxor 160(%rsi),%ymm13,%ymm13 + vpxor 192(%rsi),%ymm10,%ymm10 + vpxor 224(%rsi),%ymm15,%ymm15 + vpxor 256(%rsi),%ymm14,%ymm14 + vpxor 288(%rsi),%ymm2,%ymm2 + vpxor 320(%rsi),%ymm3,%ymm3 + vpxor 352(%rsi),%ymm7,%ymm7 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + vmovdqu %ymm12,128(%rdi) + vmovdqu %ymm13,160(%rdi) + vmovdqu %ymm10,192(%rdi) + vmovdqu %ymm15,224(%rdi) + vmovdqu %ymm14,256(%rdi) + vmovdqu %ymm2,288(%rdi) + vmovdqu %ymm3,320(%rdi) + vmovdqu %ymm7,352(%rdi) + je .Ldone8x + + leaq 384(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm11,0(%rsp) + leaq 384(%rdi),%rdi + subq $384,%rdx + vmovdqa %ymm9,32(%rsp) + jmp .Loop_tail8x + +.align 32 +.L448_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + vpxor 128(%rsi),%ymm12,%ymm12 + vpxor 160(%rsi),%ymm13,%ymm13 + vpxor 192(%rsi),%ymm10,%ymm10 + vpxor 224(%rsi),%ymm15,%ymm15 + vpxor 256(%rsi),%ymm14,%ymm14 + vpxor 288(%rsi),%ymm2,%ymm2 + vpxor 320(%rsi),%ymm3,%ymm3 + vpxor 352(%rsi),%ymm7,%ymm7 + vpxor 384(%rsi),%ymm11,%ymm11 + vpxor 416(%rsi),%ymm9,%ymm9 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + vmovdqu %ymm12,128(%rdi) + vmovdqu %ymm13,160(%rdi) + vmovdqu %ymm10,192(%rdi) + vmovdqu %ymm15,224(%rdi) + vmovdqu %ymm14,256(%rdi) + vmovdqu %ymm2,288(%rdi) + vmovdqu %ymm3,320(%rdi) + vmovdqu %ymm7,352(%rdi) + vmovdqu %ymm11,384(%rdi) + vmovdqu %ymm9,416(%rdi) + je .Ldone8x + + leaq 448(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm0,0(%rsp) + leaq 448(%rdi),%rdi + subq $448,%rdx + vmovdqa %ymm4,32(%rsp) + +.Loop_tail8x: + movzbl (%rsi,%r10,1),%eax + movzbl (%rsp,%r10,1),%ecx + leaq 1(%r10),%r10 + xorl %ecx,%eax + movb %al,-1(%rdi,%r10,1) + decq %rdx + jnz .Loop_tail8x + +.Ldone8x: + vzeroall + leaq (%r9),%rsp +.cfi_def_cfa_register %rsp +.L8x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ChaCha20_8x,.-ChaCha20_8x diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/ec/ecp_nistz256-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/ec/ecp_nistz256-x86_64.s new file mode 100644 index 0000000..80569ca --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/ec/ecp_nistz256-x86_64.s @@ -0,0 +1,7343 @@ +.text +.globl ecp_nistz256_precomputed +.type ecp_nistz256_precomputed,@object +.align 4096 +ecp_nistz256_precomputed: +.long 0x18a9143c,0x79e730d4,0x5fedb601,0x75ba95fc,0x77622510,0x79fb732b,0xa53755c6,0x18905f76,0xce95560a,0xddf25357,0xba19e45c,0x8b4ab8e4,0xdd21f325,0xd2e88688,0x25885d85,0x8571ff18 +.long 0x10ddd64d,0x850046d4,0xa433827d,0xaa6ae3c1,0x8d1490d9,0x73220503,0x3dcf3a3b,0xf6bb32e4,0x61bee1a5,0x2f3648d3,0xeb236ff8,0x152cd7cb,0x92042dbe,0x19a8fb0e,0x0a5b8a3b,0x78c57751 +.long 0x4eebc127,0xffac3f90,0x087d81fb,0xb027f84a,0x87cbbc98,0x66ad77dd,0xb6ff747e,0x26936a3f,0xc983a7eb,0xb04c5c1f,0x0861fe1a,0x583e47ad,0x1a2ee98e,0x78820831,0xe587cc07,0xd5f06a29 +.long 0x46918dcc,0x74b0b50d,0xc623c173,0x4650a6ed,0xe8100af2,0x0cdaacac,0x41b0176b,0x577362f5,0xe4cbaba6,0x2d96f24c,0xfad6f447,0x17628471,0xe5ddd22e,0x6b6c36de,0x4c5ab863,0x84b14c39 +.long 0xc45c61f5,0xbe1b8aae,0x94b9537d,0x90ec649a,0xd076c20c,0x941cb5aa,0x890523c8,0xc9079605,0xe7ba4f10,0xeb309b4a,0xe5eb882b,0x73c568ef,0x7e7a1f68,0x3540a987,0x2dd1e916,0x73a076bb +.long 0x3e77664a,0x40394737,0x346cee3e,0x55ae744f,0x5b17a3ad,0xd50a961a,0x54213673,0x13074b59,0xd377e44b,0x93d36220,0xadff14b5,0x299c2b53,0xef639f11,0xf424d44c,0x4a07f75f,0xa4c9916d +.long 0xa0173b4f,0x0746354e,0xd23c00f7,0x2bd20213,0x0c23bb08,0xf43eaab5,0xc3123e03,0x13ba5119,0x3f5b9d4d,0x2847d030,0x5da67bdd,0x6742f2f2,0x77c94195,0xef933bdc,0x6e240867,0xeaedd915 +.long 0x9499a78f,0x27f14cd1,0x6f9b3455,0x462ab5c5,0xf02cfc6b,0x8f90f02a,0xb265230d,0xb763891e,0x532d4977,0xf59da3a9,0xcf9eba15,0x21e3327d,0xbe60bbf0,0x123c7b84,0x7706df76,0x56ec12f2 +.long 0x264e20e8,0x75c96e8f,0x59a7a841,0xabe6bfed,0x44c8eb00,0x2cc09c04,0xf0c4e16b,0xe05b3080,0xa45f3314,0x1eb7777a,0xce5d45e3,0x56af7bed,0x88b12f1a,0x2b6e019a,0xfd835f9b,0x086659cd +.long 0x9dc21ec8,0x2c18dbd1,0x0fcf8139,0x98f9868a,0x48250b49,0x737d2cd6,0x24b3428f,0xcc61c947,0x80dd9e76,0x0c2b4078,0x383fbe08,0xc43a8991,0x779be5d2,0x5f7d2d65,0xeb3b4ab5,0x78719a54 +.long 0x6245e404,0xea7d260a,0x6e7fdfe0,0x9de40795,0x8dac1ab5,0x1ff3a415,0x649c9073,0x3e7090f1,0x2b944e88,0x1a768561,0xe57f61c8,0x250f939e,0x1ead643d,0x0c0daa89,0xe125b88e,0x68930023 +.long 0xd2697768,0x04b71aa7,0xca345a33,0xabdedef5,0xee37385e,0x2409d29d,0xcb83e156,0x4ee1df77,0x1cbb5b43,0x0cac12d9,0xca895637,0x170ed2f6,0x8ade6d66,0x28228cfa,0x53238aca,0x7ff57c95 +.long 0x4b2ed709,0xccc42563,0x856fd30d,0x0e356769,0x559e9811,0xbcbcd43f,0x5395b759,0x738477ac,0xc00ee17f,0x35752b90,0x742ed2e3,0x68748390,0xbd1f5bc1,0x7cd06422,0xc9e7b797,0xfbc08769 +.long 0xb0cf664a,0xa242a35b,0x7f9707e3,0x126e48f7,0xc6832660,0x1717bf54,0xfd12c72e,0xfaae7332,0x995d586b,0x27b52db7,0x832237c2,0xbe29569e,0x2a65e7db,0xe8e4193e,0x2eaa1bbb,0x152706dc +.long 0xbc60055b,0x72bcd8b7,0x56e27e4b,0x03cc23ee,0xe4819370,0xee337424,0x0ad3da09,0xe2aa0e43,0x6383c45d,0x40b8524f,0x42a41b25,0xd7663554,0x778a4797,0x64efa6de,0x7079adf4,0x2042170a +.long 0x0bc6fb80,0x808b0b65,0x3ffe2e6b,0x5882e075,0x2c83f549,0xd5ef2f7c,0x9103b723,0x54d63c80,0x52a23f9b,0xf2f11bd6,0x4b0b6587,0x3670c319,0xb1580e9e,0x55c4623b,0x01efe220,0x64edf7b2 +.long 0xd53c5c9d,0x97091dcb,0xac0a177b,0xf17624b6,0x2cfe2dff,0xb0f13975,0x6c7a574e,0xc1a35c0a,0x93e79987,0x227d3146,0xe89cb80e,0x0575bf30,0x0d1883bb,0x2f4e247f,0x3274c3d0,0xebd51226 +.long 0x56ada97a,0x5f3e51c8,0x8f8b403e,0x4afc964d,0x412e2979,0xa6f247ab,0x6f80ebda,0x675abd1b,0x5e485a1d,0x66a2bd72,0x8f4f0b3c,0x4b2a5caf,0x1b847bba,0x2626927f,0x0502394d,0x6c6fc7d9 +.long 0xa5659ae8,0xfea912ba,0x25e1a16e,0x68363aba,0x752c41ac,0xb8842277,0x2897c3fc,0xfe545c28,0xdc4c696b,0x2d36e9e7,0xfba977c5,0x5806244a,0xe39508c1,0x85665e9b,0x6d12597b,0xf720ee25 +.long 0xd2337a31,0x8a979129,0x0f862bdc,0x5916868f,0x5dd283ba,0x048099d9,0xfe5bfb4e,0xe2d1eeb6,0x7884005d,0x82ef1c41,0xffffcbae,0xa2d4ec17,0x8aa95e66,0x9161c53f,0xc5fee0d0,0x5ee104e1 +.long 0xc135b208,0x562e4cec,0x4783f47d,0x74e1b265,0x5a3f3b30,0x6d2a506c,0xc16762fc,0xecead9f4,0xe286e5b9,0xf29dd4b2,0x83bb3c61,0x1b0fadc0,0x7fac29a4,0x7a75023e,0xc9477fa3,0xc086d5f1 +.long 0x2f6f3076,0x0fc61135,0xe3912a9a,0xc99ffa23,0xd2f8ba3d,0x6a0b0685,0xe93358a4,0xfdc777e8,0x35415f04,0x94a787bb,0x4d23fea4,0x640c2d6a,0x153a35b5,0x9de917da,0x5d5cd074,0x793e8d07 +.long 0x2de45068,0xf4f87653,0x9e2e1f6e,0x37c7a7e8,0xa3584069,0xd0825fa2,0x1727bf42,0xaf2cea7c,0x9e4785a9,0x0360a4fb,0x27299f4a,0xe5fda49c,0x71ac2f71,0x48068e13,0x9077666f,0x83d0687b +.long 0x15d02819,0x6d3883b2,0x40dd9a35,0x6d0d7550,0x1d2b469f,0x61d7cbf9,0x2efc3115,0xf97b232f,0xb24bcbc7,0xa551d750,0x88a1e356,0x11ea4949,0x93cb7501,0x7669f031,0xca737b8a,0x595dc55e +.long 0xd837879f,0xa4a319ac,0xed6b67b0,0x6fc1b49e,0x32f1f3af,0xe3959933,0x65432a2e,0x966742eb,0xb4966228,0x4b8dc9fe,0x43f43950,0x96cc6312,0xc9b731ee,0x12068859,0x56f79968,0x7b948dc3 +.long 0xed1f8008,0x61e4ad32,0xd8b17538,0xe6c9267a,0x857ff6fb,0x1ac7c5eb,0x55f2fb10,0x994baaa8,0x1d248018,0x84cf14e1,0x628ac508,0x5a39898b,0x5fa944f5,0x14fde97b,0xd12e5ac7,0xed178030 +.long 0x97e2feb4,0x042c2af4,0xaebf7313,0xd36a42d7,0x084ffdd7,0x49d2c9eb,0x2ef7c76a,0x9f8aa54b,0x09895e70,0x9200b7ba,0xddb7fb58,0x3bd0c66f,0x78eb4cbb,0x2d97d108,0xd84bde31,0x2d431068 +.long 0x172ccd1f,0x4b523eb7,0x30a6a892,0x7323cb28,0xcfe153eb,0x97082ec0,0xf2aadb97,0xe97f6b6a,0xd1a83da1,0x1d3d393e,0x804b2a68,0xa6a7f9c7,0x2d0cb71e,0x4a688b48,0x40585278,0xa9b4cc5f +.long 0xcb66e132,0x5e5db46a,0x0d925880,0xf1be963a,0x0317b9e2,0x944a7027,0x48603d48,0xe266f959,0x5c208899,0x98db6673,0xa2fb18a3,0x90472447,0x777c619f,0x8a966939,0x2a3be21b,0x3798142a +.long 0x3298b343,0xb4241cb1,0xb44f65a1,0xa3a14e49,0x3ac77acd,0xc5f4d6cd,0x52b6fc3c,0xd0288cb5,0x1c040abc,0xd5cc8c2f,0x06bf9b4a,0xb675511e,0x9b3aa441,0xd667da37,0x51601f72,0x460d45ce +.long 0x6755ff89,0xe2f73c69,0x473017e6,0xdd3cf7e7,0x3cf7600d,0x8ef5689d,0xb1fc87b4,0x948dc4f8,0x4ea53299,0xd9e9fe81,0x98eb6028,0x2d921ca2,0x0c9803fc,0xfaecedfd,0x4d7b4745,0xf38ae891 +.long 0xc5e3a3d8,0xd8c5fccf,0x4079dfbf,0xbefd904c,0xfead0197,0xbc6d6a58,0x695532a4,0x39227077,0xdbef42f5,0x09e23e6d,0x480a9908,0x7e449b64,0xad9a2e40,0x7b969c1a,0x9591c2a4,0x6231d792 +.long 0x0f664534,0x87151456,0x4b68f103,0x85ceae7c,0x65578ab9,0xac09c4ae,0xf044b10c,0x33ec6868,0x3a8ec1f1,0x6ac4832b,0x5847d5ef,0x5509d128,0x763f1574,0xf909604f,0xc32f63c4,0xb16c4303 +.long 0x7ca23cd3,0xb6ab2014,0xa391849d,0xcaa7a5c6,0x75678d94,0x5b0673a3,0xdd303e64,0xc982ddd4,0x5db6f971,0xfd7b000b,0x6f876f92,0xbba2cb1f,0x3c569426,0xc77332a3,0x570d74f8,0xa159100c +.long 0xdec67ef5,0xfd16847f,0x233e76b7,0x742ee464,0xefc2b4c8,0x0b8e4134,0x42a3e521,0xca640b86,0x8ceb6aa9,0x653a0190,0x547852d5,0x313c300c,0x6b237af7,0x24e4ab12,0x8bb47af8,0x2ba90162 +.long 0xa8219bb7,0x3d5e58d6,0x1b06c57f,0xc691d0bd,0xd257576e,0x0ae4cb10,0xd54a3dc3,0x3569656c,0x94cda03a,0xe5ebaebd,0x162bfe13,0x934e82d3,0xe251a0c6,0x450ac0ba,0xdd6da526,0x480b9e11 +.long 0x8cce08b5,0x00467bc5,0x7f178d55,0xb636458c,0xa677d806,0xc5748bae,0xdfa394eb,0x2763a387,0x7d3cebb6,0xa12b448a,0x6f20d850,0xe7adda3e,0x1558462c,0xf63ebce5,0x620088a8,0x58b36143 +.long 0x4d63c0ee,0x8a2cc3ca,0x0fe948ce,0x51233117,0x222ef33b,0x7463fd85,0x7c603d6c,0xadf0c7dc,0xfe7765e5,0x0ec32d3b,0xbf380409,0xccaab359,0x8e59319c,0xbdaa84d6,0x9c80c34d,0xd9a4c280 +.long 0xa059c142,0xa9d89488,0xff0b9346,0x6f5ae714,0x16fb3664,0x068f237d,0x363186ac,0x5853e4c4,0x63c52f98,0xe2d87d23,0x81828876,0x2ec4a766,0xe14e7b1c,0x47b864fa,0x69192408,0x0c0bc0e5 +.long 0xb82e9f3e,0xe4d7681d,0xdf25e13c,0x83200f0b,0x66f27280,0x8909984c,0x75f73227,0x462d7b00,0xf2651798,0xd90ba188,0x36ab1c34,0x74c6e18c,0x5ef54359,0xab256ea3,0xd1aa702f,0x03466612 +.long 0x2ed22e91,0x624d6049,0x6f072822,0x6fdfe0b5,0x39ce2271,0xeeca1115,0xdb01614f,0x98100a4f,0xa35c628f,0xb6b0daa2,0xc87e9a47,0xb6f94d2e,0x1d57d9ce,0xc6773259,0x03884a7b,0xf70bfeec +.long 0xed2bad01,0x5fb35ccf,0x1da6a5c7,0xa155cbe3,0x30a92f8f,0xc2e2594c,0x5bfafe43,0x649c89ce,0xe9ff257a,0xd158667d,0xf32c50ae,0x9b359611,0x906014cf,0x4b00b20b,0x89bc7d3d,0xf3a8cfe3 +.long 0x248a7d06,0x4ff23ffd,0x878873fa,0x80c5bfb4,0x05745981,0xb7d9ad90,0x3db01994,0x179c85db,0x61a6966c,0xba41b062,0xeadce5a8,0x4d82d052,0xa5e6a318,0x9e91cd3b,0x95b2dda0,0x47795f4f +.long 0xd55a897c,0xecfd7c1f,0xb29110fb,0x009194ab,0xe381d3b0,0x5f0e2046,0xa98dd291,0x5f3425f6,0x730d50da,0xbfa06687,0x4b083b7f,0x0423446c,0xd69d3417,0x397a247d,0x387ba42a,0xeb629f90 +.long 0xd5cd79bf,0x1ee426cc,0x946c6e18,0x0032940b,0x57477f58,0x1b1e8ae0,0x6d823278,0xe94f7d34,0x782ba21a,0xc747cb96,0xf72b33a5,0xc5254469,0xc7f80c81,0x772ef6de,0x2cd9e6b5,0xd73acbfe +.long 0x49ee90d9,0x4075b5b1,0xa06e9eba,0x785c339a,0xabf825e0,0xa1030d5b,0xa42931dc,0xcec684c3,0xc1586e63,0x42ab62c9,0x5ab43f2b,0x45431d66,0x55f7835d,0x57c8b2c0,0xc1b7f865,0x033da338 +.long 0xcaa76097,0x283c7513,0x36c83906,0x0a624fa9,0x715af2c7,0x6b20afec,0xeba78bfd,0x4b969974,0xd921d60e,0x220755cc,0x7baeca13,0x9b944e10,0x5ded93d4,0x04819d51,0x6dddfd27,0x9bbff86e +.long 0x77adc612,0x6b344130,0xbbd803a0,0xa7496529,0x6d8805bd,0x1a1baaa7,0x470343ad,0xc8403902,0x175adff1,0x39f59f66,0xb7d8c5b7,0x0b26d7fb,0x529d75e3,0xa875f5ce,0x41325cc2,0x85efc7e9 +.long 0x1ff6acd3,0x21950b42,0x53dc6909,0xffe70484,0x28766127,0xff4cd0b2,0x4fb7db2b,0xabdbe608,0x5e1109e8,0x837c9228,0xf4645b5a,0x26147d27,0xf7818ed8,0x4d78f592,0xf247fa36,0xd394077e +.long 0x488c171a,0x0fb9c2d0,0x13685278,0xa78bfbaa,0xd5b1fa6a,0xedfbe268,0x2b7eaba7,0x0dceb8db,0x9ae2b710,0xbf9e8089,0xa4449c96,0xefde7ae6,0xcc143a46,0x43b7716b,0xc3628c13,0xd7d34194 +.long 0x3b3f64c9,0x508cec1c,0x1e5edf3f,0xe20bc0ba,0x2f4318d4,0xda1deb85,0x5c3fa443,0xd20ebe0d,0x73241ea3,0x370b4ea7,0x5e1a5f65,0x61f1511c,0x82681c62,0x99a5e23d,0xa2f54c2d,0xd731e383 +.long 0x83445904,0x2692f36e,0xaf45f9c0,0x2e0ec469,0xc67528b7,0x905a3201,0xd0e5e542,0x88f77f34,0x5864687c,0xf67a8d29,0x22df3562,0x23b92eae,0x9bbec39e,0x5c27014b,0x9c0f0f8d,0x7ef2f226 +.long 0x546c4d8d,0x97359638,0x92f24679,0x5f9c3fc4,0xa8c8acd9,0x912e8bed,0x306634b0,0xec3a318d,0xc31cb264,0x80167f41,0x522113f2,0x3db82f6f,0xdcafe197,0xb155bcd2,0x43465283,0xfba1da59 +.long 0xb212cf53,0xa0425b8e,0xf8557c5f,0x4f2e512e,0x25c4d56c,0xc1286ff9,0xee26c851,0xbb8a0fea,0xe7d6107e,0xc28f70d2,0xe76265aa,0x7ee0c444,0x1d1936b1,0x3df277a4,0xea9595eb,0x1a556e3f +.long 0xe7305683,0x258bbbf9,0x07ef5be6,0x31eea5bf,0x46c814c1,0x0deb0e4a,0xa7b730dd,0x5cee8449,0xa0182bde,0xeab495c5,0x9e27a6b4,0xee759f87,0x80e518ca,0xc2cf6a68,0xf14cf3f4,0x25e8013f +.long 0x7e8d7a14,0x8fc44140,0x9556f36a,0xbb1ff3ca,0x14600044,0x6a844385,0x7451ae63,0xba3f0c4a,0x1f9af32a,0xdfcac25b,0xb1f2214b,0x01e0db86,0xa4b596ac,0x4e9a5bc2,0x026c2c08,0x83927681 +.long 0x7acaca28,0x3ec832e7,0xc7385b29,0x1bfeea57,0xfd1eaf38,0x068212e3,0x6acf8ccc,0xc1329830,0x2aac9e59,0xb909f2db,0xb661782a,0x5748060d,0xc79b7a01,0xc5ab2632,0x00017626,0xda44c6c6 +.long 0xa7ea82f0,0xf26c00e8,0xe4299aaf,0x99cac80d,0x7ed78be1,0xd66fe3b6,0x648d02cd,0x305f725f,0x623fb21b,0x33ed1bc4,0x7a6319ad,0xfa70533e,0xbe5ffb3e,0x17ab562d,0x56674741,0x06374994 +.long 0x5c46aa8e,0x69d44ed6,0xa8d063d1,0x2100d5d3,0xa2d17c36,0xcb9727ea,0x8add53b7,0x4c2bab1b,0x15426704,0xa084e90c,0xa837ebea,0x778afcd3,0x7ce477f8,0x6651f701,0x46fb7a8b,0xa0624998 +.long 0xed8a6e19,0xdc1e6828,0x4189d9c7,0x33fc2336,0x671c39bc,0x026f8fe2,0xbc6f9915,0xd40c4ccd,0xf80e75ca,0xafa135bb,0x22adff2c,0x12c651a0,0x4f51ad96,0xc40a04bd,0xbbe4e832,0x04820109 +.long 0x7f4c04cc,0x3667eb1a,0xa9404f84,0x59556621,0x7eceb50a,0x71cdf653,0x9b8335fa,0x994a44a6,0xdbeb9b69,0xd7faf819,0xeed4350d,0x473c5680,0xda44bba2,0xb6658466,0x872bdbf3,0x0d1bc780 +.long 0xa1962f91,0xe535f175,0xed58f5a7,0x6ed7e061,0x2089a233,0x177aa4c0,0xe539b413,0x0dbcb03a,0xbb32e38e,0xe3dc424e,0x6806701e,0x6472e5ef,0x814be9ee,0xdd47ff98,0x35ace009,0x6b60cfff +.long 0x9ff91fe5,0xb8d3d931,0xf0518eed,0x039c4800,0x9182cb26,0x95c37632,0x82fc568d,0x0763a434,0x383e76ba,0x707c04d5,0x824e8197,0xac98b930,0x91230de0,0x92bf7c8f,0x40959b70,0x90876a01 +.long 0x05968b80,0xdb6d96f3,0x089f73b9,0x380a0913,0xc2c61e01,0x7da70b83,0x569b38c7,0x95fb8394,0x80edfe2f,0x9a3c6512,0x8faeaf82,0x8f726bb9,0x78424bf8,0x8010a4a0,0x0e844970,0x29672044 +.long 0x7a2ad62a,0x63c5cb81,0xac62ff54,0x7ef2b6b9,0xb3ad9db5,0x3749bba4,0x46d5a617,0xad311f2c,0xc2ff3b6d,0xb77a8087,0x367834ff,0xb46feaf3,0x75d6b138,0xf8aa266d,0xec008188,0xfa38d320 +.long 0x696946fc,0x486d8ffa,0xb9cba56d,0x50fbc6d8,0x90f35a15,0x7e3d423e,0xc0dd962c,0x7c3da195,0x3cfd5d8b,0xe673fdb0,0x889dfca5,0x0704b7c2,0xf52305aa,0xf6ce581f,0x914d5e53,0x399d49eb +.long 0x6ec293cd,0x380a496d,0x8e7051f5,0x733dbda7,0xb849140a,0x037e388d,0x5946dbf6,0xee4b32b0,0xcae368d1,0xb1c4fda9,0xfdb0b2f3,0x5001a7b0,0x2e3ac46e,0x6df59374,0x39b3e656,0x4af675f2 +.long 0x39949296,0x44e38110,0x361db1b5,0x5b63827b,0x206eaff5,0x3e5323ed,0xc21f4290,0x942370d2,0xe0d985a1,0xf2caaf2e,0x7239846d,0x192cc64b,0xae6312f8,0x7c0b8f47,0x96620108,0x7dc61f91 +.long 0xc2da7de9,0xb830fb5b,0x0ff8d3be,0xd0e643df,0x188a9641,0x31ee77ba,0xbcf6d502,0x4e8aa3aa,0x9a49110f,0xf9fb6532,0x2dd6b220,0xd18317f6,0x52c3ea5a,0x7e3ced41,0x7d579c4a,0x0d296a14 +.long 0xed4c3717,0x35d6a53e,0x3d0ed2a3,0x9f8240cf,0xe5543aa5,0x8c0d4d05,0xdd33b4b4,0x45d5bbfb,0x137fd28e,0xfa04cc73,0xc73b3ffd,0x862ac6ef,0x31f51ef2,0x403ff9f5,0xbc73f5a2,0x34d5e0fc +.long 0x08913f4f,0xf2526820,0xeac93d95,0xea20ed61,0x6ca6b26c,0x51ed38b4,0xea4327b0,0x8662dcbc,0x725d2aaa,0x6daf295c,0x8e52dcda,0xbad2752f,0x0b17dacc,0x2210e721,0xd51e8232,0xa37f7912 +.long 0x44cc3add,0x4f7081e1,0x87be82cf,0xd5ffa1d6,0x0edd6472,0x89890b6c,0x3ed17863,0xada26e1a,0x63483caa,0x276f2715,0x2f6077fd,0xe6924cd9,0x0a466e3c,0x05a7fe98,0xb1902d1f,0xf1c794b0 +.long 0x82a8042c,0xe5213688,0xcd278298,0xd931cfaf,0xf597a740,0x069a0ae0,0xeb59107c,0x0adbb3f3,0x5eaa8eb8,0x983e951e,0x11b48e78,0xe663a8b5,0x8a03f2c5,0x1631cc0d,0x11e271e2,0x7577c11e +.long 0x08369a90,0x33b2385c,0x190eb4f8,0x2990c59b,0xc68eac80,0x819a6145,0x2ec4a014,0x7a786d62,0x20ac3a8d,0x33faadbe,0x5aba2d30,0x31a21781,0xdba4f565,0x209d2742,0x55aa0fbb,0xdb2ce9e3 +.long 0x168984df,0x8cef334b,0x33879638,0xe81dce17,0x263720f0,0xf6e6949c,0xf593cbec,0x5c56feaf,0xfde58c84,0x8bff5601,0x2eccb314,0x74e24117,0x4c9a8a78,0xbcf01b61,0x544c9868,0xa233e35e +.long 0x8bd7aff1,0xb3156bf3,0x1d81b146,0x1b5ee4cb,0xd628a915,0x7ba1ac41,0xfd89699e,0x8f3a8f9c,0xa0748be7,0x7329b9c9,0xa92e621f,0x1d391c95,0x4d10a837,0xe51e6b21,0x4947b435,0xd255f53a +.long 0xf1788ee3,0x07669e04,0xa86938a2,0xc14f27af,0xe93a01c0,0x8b47a334,0xd9366808,0xff627438,0xca2a5965,0x7a0985d8,0xd6e9b9b3,0x3d9a5542,0x4cf972e8,0xc23eb80b,0x4fdf72fd,0x5c1c33bb +.long 0x74a86108,0x0c4a58d4,0xee4c5d90,0xf8048a8f,0xe86d4c80,0xe3c7c924,0x056a1e60,0x28c889de,0xb214a040,0x57e2662e,0x37e10347,0xe8c48e98,0x80ac748a,0x87742862,0x186b06f2,0xf1c24022 +.long 0x5f74040a,0xac2dd4c3,0xfceac957,0x409aeb71,0x55c4ec23,0x4fbad782,0x8a7b76ec,0xb359ed61,0xed6f4a60,0x12744926,0x4b912de3,0xe21e8d7f,0xfc705a59,0xe2575a59,0xed2dbc0e,0x72f1d4de +.long 0xeb7926b8,0x3d2b24b9,0xcdbe5509,0xbff88cb3,0xe4dd640b,0xd0f399af,0x2f76ed45,0x3c5fe130,0x3764fb3d,0x6f3562f4,0x3151b62d,0x7b5af318,0xd79ce5f3,0xd5bd0bc7,0xec66890f,0xfdaf6b20 +.long 0x6063540c,0x735c67ec,0xe5f9cb8f,0x50b259c2,0x3f99c6ab,0xb8734f9a,0xa3a7bc85,0xf8cc13d5,0xc5217659,0x80c1b305,0x4ec12a54,0xfe5364d4,0x681345fe,0xbd87045e,0x582f897f,0x7f8efeb1 +.long 0xd5923359,0xe8cbf1e5,0x539b9fb0,0xdb0cea9d,0x49859b98,0x0c5b34cf,0xa4403cc6,0x5e583c56,0xd48185b7,0x11fc1a2d,0x6e521787,0xc93fbc7e,0x05105b8b,0x47e7a058,0xdb8260c8,0x7b4d4d58 +.long 0x46eb842a,0xe33930b0,0x7bdae56d,0x8e844a9a,0x13f7fdfc,0x34ef3a9e,0x636ca176,0xb3768f82,0x4e09e61c,0x2821f4e0,0xa0c7cddc,0x414dc3a1,0x54945fcd,0xd5379437,0xb3555ff1,0x151b6eef +.long 0x6339c083,0xb31bd613,0xdfb64701,0x39ff8155,0xe29604ab,0x7c3388d2,0xa6b10442,0x1e19084b,0xeccd47ef,0x17cf54c0,0x4a5dfb30,0x89693385,0x47daf9f6,0x69d023fb,0x7d91d959,0x9222840b +.long 0x803bac62,0x439108f5,0x379bd45f,0x0b7dd91d,0xca63c581,0xd651e827,0x509c104f,0x5c5d75f6,0x1f2dc308,0x7d5fc738,0xd98454be,0x20faa7bf,0xa517b031,0x95374bee,0x642692ac,0xf036b9b1 +.long 0x39842194,0xc5106109,0x49d05295,0xb7e2353e,0xefb42ee0,0xfc8c1d5c,0x08ce811c,0xe04884eb,0x7419f40e,0xf1f75d81,0xa995c241,0x5b0ac162,0xc4c55646,0x120921bb,0x8d33cf97,0x713520c2 +.long 0xe98c5100,0xb4a65a5c,0x2ddd0f5a,0x6cec871d,0x9ba2e78b,0x251f0b7f,0xce3a2a5f,0x224a8434,0x25f5c46f,0x26827f61,0x48545ec0,0x6a22bedc,0xb1bb5cdc,0x25ae5fa0,0xfcb9b98f,0xd693682f +.long 0x91e5d7d3,0x32027fe8,0x73a07678,0xf14b7d17,0xc0dfdd61,0xf88497b3,0x2a8c4f48,0xf7c2eec0,0x3756e621,0xaa5573f4,0x1825b948,0xc013a240,0x63878572,0x1c03b345,0x653a4184,0xa0472bea +.long 0x0ac69a80,0xf4222e27,0xf51e54f6,0x34096d25,0x8fffa591,0x00a648cb,0x69b6527f,0x4e87acdc,0xe285ccb4,0x0575e037,0x50ddcf52,0x188089e4,0x870ff719,0xaa96c9a8,0x1fc7e369,0x74a56cd8 +.long 0x1726931a,0x41d04ee2,0x3660ecfd,0x0bbbb2c8,0x24818e18,0xa6ef6de5,0xe7d57887,0xe421cc51,0xbea87be6,0xf127d208,0xb1cdd682,0x16a475d3,0x439b63f7,0x9db1b684,0xf0f113b6,0x5359b3db +.long 0x8bf06e31,0xdfccf1de,0xdd383901,0x1fdf8f44,0x5017e7d2,0x10775cad,0x58d11eef,0xdfc3a597,0xb1ecff10,0x6ec9c8a0,0x28400549,0xee6ed6cc,0x1b4f8d73,0xb5ad7bae,0xe00aaab9,0x61b4f11d +.long 0xd4eff2d7,0x7b32d69b,0x4288b60f,0x88ae6771,0x37a1e723,0x159461b4,0x570aae8c,0x1f3d4789,0x7f9871da,0x869118c0,0xf635e278,0x35fbda78,0xe1541dac,0x738f3641,0xc0dae45f,0x6794b13a +.long 0x09cc0917,0x065064ac,0xc68540fd,0x27c53729,0xef227671,0x0d2d4c8e,0xa1785a04,0xd23a9f80,0x52650359,0x98c59528,0x74a1acad,0xfa09ad01,0x0b55bf5c,0x082d5a29,0x419b8084,0xa40f1c67 +.long 0xdcc18770,0x3a5c752e,0x8825c3a5,0x4baf1f2f,0x21b153ed,0xebd63f74,0xb2f64723,0xa2383e47,0x2646d19a,0xe7bf620a,0x03c83ffd,0x56cb44ec,0x4f6be9f1,0xaf7267c9,0xc06bb5e9,0x8b2dfd7b +.long 0xa672c5c7,0xb87072f2,0x0d53c5e2,0xeacb11c8,0xff435932,0x22dac29d,0x4408693c,0x37bdb99d,0x2899c20f,0xf6e62fb6,0x447ece24,0x3535d512,0xff577ce3,0xfbdc6b88,0x190575f2,0x726693bd +.long 0xab4b35a2,0x6772b0e5,0xf5eeaacf,0x1d8b6001,0x795b9580,0x728f7ce4,0x41fb81da,0x4a20ed2a,0x4fec01e6,0x9f685cd4,0xa7ff50ad,0x3ed7ddcc,0x0c2d97fd,0x460fd264,0xeb82f4f9,0x3a241426 +.long 0x6a8ea820,0x17d1df2c,0xf22cc254,0xb2b50d3b,0xb7291426,0x03856cba,0x04f5ee39,0x87fd26ae,0x02bee4ba,0x9cb696cc,0x06820fd6,0x53121804,0x0212e985,0xa5dfc269,0x160f9a09,0x666f7ffa +.long 0xbccd9617,0xc503cd33,0xba7730a3,0x365dede4,0x5ddb0786,0x798c6355,0xfc9cd3bc,0xa6c3200e,0xe5e35efd,0x060ffb2c,0x5555a1c1,0x99a4e25b,0xf70b3751,0x11d95375,0x160e1bf6,0x0a57354a +.long 0xf8e4b065,0xecb3ae4b,0x2e53022b,0x07a834c4,0x8692ed96,0x1cd300b3,0x61ee14ec,0x16a6f792,0x6a8649ed,0x8f1063c6,0x869f3e14,0xfbcdfcfe,0x00a7b3ec,0x2cfb97c1,0x7130c2f1,0xcea49b3c +.long 0xe9d96488,0x462d044f,0x8182a0c1,0x4b53d52e,0x0391e9e9,0x84b6ddd3,0xb1741a09,0x80ab7b48,0x27d3317f,0xec0e15d4,0x1a64671e,0x8dfc1ddb,0xd49c5b92,0x93cc5d5f,0x3674a331,0xc995d53d +.long 0x090090ae,0x302e41ec,0xedb06830,0x2278a0cc,0xfbc99690,0x1d025932,0xb80d68da,0x0c32fbd2,0xf341a6c1,0xd79146da,0x1bef68a0,0xae0ba139,0x8d774b3a,0xc6b8a563,0x880ba4d7,0x1cf307bd +.long 0x19803511,0xc033bdc7,0x8888c3be,0xa9f97b3b,0x85c6d05e,0x3d68aebc,0x193919eb,0xc3b88a9d,0xc48b0ee3,0x2d300748,0x07a746c1,0x7506bc7c,0x6e6d57f3,0xfc48437c,0xcfeaa91a,0x5bd71587 +.long 0xc1bc5225,0xa4ed0408,0x2719226d,0xd0b946db,0x758d2d43,0x109ecd62,0x2751759b,0x75c8485a,0x9ce4177a,0xb0b75f49,0x79c10c3d,0x4fa61a1e,0xa167fcd7,0xc062d300,0x750f0fa8,0x4df3874c +.long 0x83dfedc9,0x29ae2cf9,0x8d87631a,0xf8437134,0x7429c8d2,0xaf571711,0x146d9272,0x18d15867,0x69769bb7,0x83053ecf,0xc479ab82,0xc55eb856,0x21b0f4b2,0x5ef7791c,0x3d491525,0xaa5956ba +.long 0x9fe20eba,0x407a96c2,0xe52a5ad3,0xf27168bb,0xbf1d9d89,0x43b60ab3,0x710e727a,0xe45c51ef,0x099b4221,0xdfca5276,0x2557a159,0x8dc6407c,0x91035895,0x0ead8335,0x9c55dc32,0x0a9db957 +.long 0xdf61bc76,0xe40736d3,0x3f778cdb,0x13a619c0,0xc56ea28f,0x6dd921a4,0x2fa647b4,0x76a52433,0xac5bdc5d,0x23591891,0xbac7dc01,0xff4a1a72,0x62df8453,0x9905e261,0xe63b265f,0x3ac045df +.long 0xad53dba7,0x8a3f341b,0x837b625a,0x8ec269cc,0x3ae31189,0xd71a2782,0x55e96120,0x8fb4f9a3,0xff9875cf,0x804af823,0x5d442a9b,0x23224f57,0xecc62679,0x1c4d3b9e,0xa0e7ddb1,0x91da22fb +.long 0x6c04a661,0xa370324d,0x5e376d17,0x9710d3b6,0x3044e357,0xed8c98f0,0x6422701c,0xc364ebbe,0x7733d61c,0x347f5d51,0xcea826c3,0xd55644b9,0x55a25548,0x80c6e0ad,0x844220a7,0x0aa7641d +.long 0x31810660,0x1438ec81,0xde4b4043,0x9dfa6507,0xcc3e0273,0x10b515d8,0x28d8cfb2,0x1b6066dd,0x9c9efebd,0xd3b04591,0xa21c1ff4,0x425d4bdf,0xd57607d3,0x5fe5af19,0x54481084,0xbbf773f7 +.long 0x94b03ed1,0x8435bd69,0x634cc546,0xd9ad1de3,0x00e420ca,0x2cf423fc,0xa03096dd,0xeed26d80,0xa4db09d2,0xd7f60be7,0x960622f7,0xf47f569d,0x7296c729,0xe5925fd7,0x26ca2715,0xeff2db26 +.long 0xb913e759,0xa6fcd014,0x8ff4de93,0x53da4786,0xc32068e1,0x14616d79,0xccdf352e,0xb187d664,0x1dc90b59,0xf7afb650,0x7daa1b26,0x8170e943,0x700c0a84,0xc8e3bdd8,0x6482bdfa,0x6e8d345f +.long 0xc5c5ea50,0x84cfbfa1,0x67960681,0xd3baf14c,0x0dd50942,0x26398403,0x4716a663,0xe4b7839c,0xe7de6dc0,0xd5f1f794,0x622aa7ce,0x5cd0f4d4,0x59acfeec,0x5295f3f1,0x953e0607,0x8d933552 +.long 0x776c5722,0xc7db8ec5,0x2b5f290c,0xdc467e62,0x4ff425a9,0xd4297e70,0x0cf7bb72,0x4be924c1,0xa1892131,0x0d5dc5ae,0xa705c992,0x8bf8a8e3,0x7a305ac5,0x73a0b064,0x9a8c77a8,0x00c9ca4e +.long 0x83774bdd,0x5dfee80f,0x85734485,0x63131602,0x914a69a9,0xa1b524ae,0xd4e300d7,0xebc2ffaf,0x7cfa46a5,0x52c93db7,0x21653b50,0x71e6161f,0xa4bc580a,0x3574fc57,0xe1bc1253,0xc09015dd +.long 0xd174d7aa,0x4b7b47b2,0xf3a15d04,0x4072d8e8,0xd6fa07ed,0xeeb7d47f,0xedbdafb1,0x6f2b9ff9,0x3760fe8a,0x18c51615,0xf06c6c13,0x7a96e6bf,0x0ea2d071,0x4d7a0410,0x0be2a5ce,0xa1914e9b +.long 0xd8a3c5cf,0x5726e357,0x2abb2b13,0x1197ecc3,0x31ae88dd,0x6c0d7f7f,0xfdbb3efe,0x15b20d1a,0x70584039,0xcd06aa26,0xa7dc9747,0x2277c969,0x7855d815,0xbca69587,0x5188b32a,0x899ea238 +.long 0x760c1c9d,0x37d9228b,0x9b5c18da,0xc7efbb11,0x19f6dbc5,0x7f0d1bc8,0x07e6905b,0x4875384b,0x3ba8cd86,0xc7c50baa,0xc2905de0,0xb0ce40fb,0x7a231952,0x70840673,0xcf43de26,0xa912a262 +.long 0xeb5b76c1,0x9c38ddcc,0x26fc0ab4,0x746f5285,0xd62c269f,0x52a63a50,0x99458621,0x60049c55,0x3c2f7c9e,0xe7f48f82,0x917d5cf3,0x6bd99043,0x8701f469,0xeb1317a8,0x9a449fe0,0xbd3fe2ed +.long 0x12ef3d36,0x421e79ca,0x3e7ea5de,0x9ee3c36c,0xcdff36f7,0xe48198b5,0xc6b82228,0xaff4f967,0xc47adb7e,0x15e19dd0,0x032e7dfa,0x45699b23,0x1fae026a,0x40680c8b,0x550dbf4d,0x5a347a48 +.long 0x3cef0d7d,0xe652533b,0x2bbb4381,0xd94f7b18,0x0e80f500,0x838752be,0x9e9c9bfb,0x8e6e2488,0x16caca6a,0xc9751697,0x38531ad9,0x866c49d8,0x7151ade1,0xc917e239,0x6037c407,0x2d016ec1 +.long 0x00eac3f9,0xa407ccc9,0xe2ed4748,0x835f6280,0x1cc98e0d,0xcc54c347,0xdcb572eb,0x0e969937,0x8f30c9cb,0x1b16c8e8,0x373c4661,0xa606ae75,0x35502cab,0x47aa689b,0x4d9bb64f,0xf89014ae +.long 0x31c71f7b,0x202f6a9c,0x296ffe5c,0x01f95aa3,0x53cec3a3,0x5fc06014,0x5f498a45,0xeb991237,0x5d91ba87,0xae9a935e,0x0b564a19,0xc6ac6281,0x3bd44e69,0x8a8fe81c,0x9dd11d45,0x7c8b467f +.long 0xea5b8e69,0xf772251f,0xc5b75fbc,0xaeecb3bd,0x887ff0e5,0x1aca3331,0x19f0a131,0xbe5d49ff,0xe5c8646f,0x582c13aa,0x20e19980,0xdbaa12e8,0xf7abbd94,0x8f40f31a,0x1dfc7663,0x1f13f5a8 +.long 0xaceb4fc0,0x5d81f1ee,0x5e6f0f42,0x36256002,0x751370c8,0x4b67d6d7,0x03e80589,0x2608b698,0x05268301,0xcfc0d2fc,0x40309212,0xa6943d39,0x1fd0e1c2,0x192a90c2,0x37f1dc76,0xb209f113 +.long 0x97bf1298,0xefcc5e06,0x219d639e,0xcbdb6730,0xb81e8c6f,0xd009c116,0x1a7ce2e5,0xa3ffdde3,0xa914d3ba,0xc53fbaaa,0x88df85ee,0x836d500f,0x66ee0751,0xd98dc71b,0x714516fd,0x5a3d7005 +.long 0x39eedbba,0x21d3634d,0x0455a46d,0x35cd2e68,0xf9d7eb0c,0xc8cafe65,0x00cefb3e,0xbda3ce9e,0x2c9cf7a4,0xddc17a60,0x7bcb8773,0x01572ee4,0x8c7548df,0xa92b2b01,0xa84600e3,0x732fd309 +.long 0x16543a40,0xe22109c7,0xfede3c6c,0x9acafd36,0x6824e614,0xfb206852,0xda25dca0,0x2a4544a9,0x91d60b06,0x25985262,0x28753545,0x281b7be9,0x90f13b27,0xec667b1a,0x940e2eb4,0x33a83aff +.long 0xd5d721d5,0x80009862,0x5bd3a182,0x0c3357a3,0x7aa2cda4,0x27f3a83b,0xf6f83085,0xb58ae74e,0x2e6dad6b,0x2a911a81,0xf43d6c5b,0xde286051,0xf996c4d8,0x4bdccc41,0x0ae1e24e,0xe7312ec0 +.long 0x6e6485b3,0xf8d112e7,0x771c52f8,0x4d3e24db,0x684a2f6d,0x48e3ee41,0x21d95551,0x7161957d,0xcdb12a6c,0x19631283,0x2e50e164,0xbf3fa882,0x3166cc73,0xf6254b63,0xaee8cc38,0x3aefa7ae +.long 0x3b36f9fd,0x79b0fe62,0xfde19fc0,0x26543b23,0x958482ef,0x136e64a0,0x9b095825,0x23f63771,0xb6a1142e,0x14cfd596,0x335aac0b,0x5ea6aac6,0xf3081dd5,0x86a0e8bd,0x003dc12a,0x5fb89d79 +.long 0xf72e34d4,0xf615c33a,0x110eec35,0x0bd9ea40,0xc1dea34e,0x1c12bc5b,0x49ae4699,0x686584c9,0x8c97b942,0x13ad95d3,0x4e5c7562,0x4609561a,0xf2737f89,0x9e94a4ae,0x371c78b6,0xf57594c6 +.long 0xe3779ee3,0x0f0165fc,0xbd495d9e,0xe00e7f9d,0x20284e7a,0x1fa4efa2,0x47ac6219,0x4564bade,0xc4708e8e,0x90e6312a,0xa71e9adf,0x4f5725fb,0x3d684b9f,0xe95f55ae,0x1e94b415,0x47f7ccb1 +.long 0x8d946581,0x7322851b,0xbdf4a012,0xf0d13133,0x6584dae0,0xa3510f69,0x3c9f6c6d,0x03a7c171,0xe475381a,0x5be97f38,0x85823334,0xca1ba422,0x0be17dda,0xf83cc5c7,0x0b918c0f,0x158b1494 +.long 0x522e6b69,0xda3a77e5,0xbbcd6c18,0x69c908c3,0xd924fd56,0x1f1b9e48,0xaa4bb3f7,0x37c64e36,0xee478d7d,0x5a4fdbdf,0x0193f7a0,0xba75c8bc,0x56cd16df,0x84bc1e84,0x46fad151,0x1fb08f08 +.long 0x842e9f30,0x8a7cabf9,0x5eab83af,0xa331d4bf,0x017f2a6a,0xd272cfba,0x83aba0e3,0x27560abc,0x0e3a6b75,0x94b83387,0x6b9f50f5,0x25c6aea2,0xb5fdf6d0,0x803d691d,0xe6333514,0x03b77509 +.long 0x61a341c1,0x36178903,0x0cfd6142,0x3604dc60,0x8533316c,0x022295eb,0x44af2922,0x3dbde4ac,0x1c7eef69,0x898afc5d,0xd14f4fa1,0x58896805,0x203c21ca,0x05002160,0x40ef730b,0x6f0d1f30 +.long 0x196224f8,0x8e8c44d4,0x374d079d,0x75a4ab95,0x7d48f123,0x79085ecc,0x1bf65ad8,0x56f04d31,0xbda602b2,0xe220bf1c,0xf9612c69,0x73ee1742,0x084fd06b,0x76008fc8,0xf11380d1,0x4000ef9f +.long 0x12cfe297,0x48201b4b,0x292f74e5,0x3eee129c,0xc9e874e8,0xe1fe114e,0x92c5fc41,0x899b055c,0x3a39c8cf,0x4e477a64,0x78963cc9,0x82f09efe,0xd333f863,0x6fd3fd8f,0xdc949c63,0x85132b2a +.long 0x516eb17b,0x7e06a3ab,0xd2c7372b,0x73bec06f,0xba896da6,0xe4f74f55,0x8e9eb40f,0xbb4afef8,0xe61d66b0,0x2d75bec8,0xef29300b,0x02bda4b4,0x026baa5a,0x8bbaa8de,0xa07f4440,0xff54befd +.long 0xbe7a2af3,0xbd9b8b1d,0x4fb74a72,0xec51caa9,0x63879697,0xb9937a4b,0xec2687d5,0x7c9a9d20,0x6ef5f014,0x1773e44f,0xe90c6900,0x8abcf412,0x8142161e,0x387bd022,0xfcb6ff2a,0x50393755 +.long 0xed6def63,0x9813fd56,0x7d53106c,0x53cf6482,0x431f7ac1,0x991a35bd,0x63e65faf,0xf1e274dd,0x44cc7880,0xf63ffa3c,0x7c256981,0x411a426b,0x93a420e0,0xb698b9fd,0xae53f8fe,0x89fdddc0 +.long 0x32398baa,0x766e0722,0x5cfca031,0x205fee42,0x7a029cf2,0xa49f5341,0x4023890d,0xa88c68b8,0x7337aaa8,0xbc275041,0x0eb384f4,0x9ed364ad,0x29aba92f,0xe0816f85,0x04e38a88,0x2e9e1941 +.long 0x3dafd2d5,0x57eef44a,0x97ed98d8,0x35d1fae5,0x2307f9b1,0x50628c09,0xd6cba5c6,0x09d84aae,0x88aaa691,0x67071bc7,0xafe6cb03,0x2dea57a9,0x3d78ac01,0xdfe11bb4,0x7fd7aa51,0x7286418c +.long 0x77f7195a,0xfabf7709,0xadeb838f,0x8ec86167,0xbb4f012d,0xea1285a8,0x9a3eab3f,0xd6883503,0x309004c2,0xee5d24f8,0x13ffe95e,0xa96e4b76,0xbd223ea4,0x0cdffe12,0xb6739a53,0x8f5c2ee5 +.long 0xdd968198,0x5cb4aaa5,0x72413a6c,0xfa131c52,0x9536d903,0x53d46a90,0x48606d8e,0xb270f0d3,0xa053a3bc,0x518c7564,0x1a86caef,0x088254b7,0x0ab5efd0,0xb3ba8cb4,0x4605945d,0x5c59900e +.long 0xa1887395,0xecace1dd,0x932a65de,0x40960f36,0x3aa95529,0x9611ff5c,0x7c1e5a36,0xc58215b0,0xf0e1a524,0xd48c9b58,0xf590dfb8,0xb406856b,0x9cd95662,0xc7605e04,0xa33ecf82,0x0dd036ee +.long 0xc33156b3,0xa50171ac,0x4a80172e,0xf09d24ea,0x76dc8eef,0x4e1f72c6,0x5e3d44ee,0xe60caadc,0x979b1d8f,0x006ef8a6,0x97788d26,0x60908a1c,0x266feec0,0x6e08f95b,0x22e8c94e,0x618427c2 +.long 0x59145a65,0x3d613339,0xfa406337,0xcd9bc368,0x2d8a52a0,0x82d11be3,0x97a1c590,0xf6877b27,0xf5cbdb25,0x837a819b,0xde090249,0x2a4fd1d8,0x74990e5f,0x622a7de7,0x7945511b,0x840fa5a0 +.long 0x6558842d,0x30b974be,0x17f3d0a6,0x70df8c64,0x7542e46d,0x7c803520,0xe4ecc823,0x7251fe7f,0x5e9aac9a,0xe59134cb,0xf0045d71,0x11bb0934,0xdbcb1d4e,0x53e5d9b5,0x92defc91,0x8d97a905 +.long 0x7946d3f9,0xfe289327,0x07472273,0xe132bd24,0x1eb6ae86,0xeeeb510c,0xf0595067,0x777708c5,0x1297029e,0x18e2c8cd,0xbbf9305e,0x2c61095c,0x6b85d6d9,0xe466c258,0xda1ea530,0x8ac06c36 +.long 0xa1304668,0xa365dc39,0x07f89606,0xe4a9c885,0xacc7228d,0x65a4898f,0x84ca8303,0x3e2347ff,0xea7d23a3,0xa5f6fb77,0x672a71cd,0x2fac257d,0x7e6a44d3,0x6908bef8,0x891d3d7a,0x8ff87566 +.long 0x6b0cf82e,0xe58e90b3,0x2615b5e7,0x6438d246,0x669c145a,0x07b1f8fc,0x36f1e1cb,0xb0d8b2da,0xd9184c4d,0x54d5dadb,0xf93d9976,0x3dbb18d5,0xd1147d47,0x0a3e0f56,0xa0a48609,0x2afa8c8d +.long 0xbc36742c,0x275353e8,0xeea0ed90,0x898f427e,0x3e477b00,0x26f4947e,0x308741e3,0x8ad8848a,0xd74a2a46,0x6c703c38,0x9ba17ba2,0x5e3e05a9,0x4ab9a9e4,0xc1fa6f66,0x3841d6ec,0x474a2d9a +.long 0x653ae326,0x871239ad,0xa74cbb43,0x14bcf72a,0x20d4c083,0x8737650e,0x110ed4af,0x3df86536,0xb53ca555,0xd2d86fe7,0xabd5d538,0x688cb00d,0x1ad38468,0xcf81bda3,0xf01167b6,0x7ccfe3cc +.long 0x6c4c1fe6,0xcf4f47e0,0x298bbb79,0x557e1f1a,0x30d45a14,0xf93b974f,0x0baf97c4,0x174a1d2d,0xc51fbf53,0x7a003b30,0xee68b225,0xd8940991,0x1c0f4173,0x5b0aa7b7,0xa20a7153,0x975797c9 +.long 0xe3533d77,0x26e08c07,0x2e341c99,0xd7222e6a,0x8d2dc4ed,0x9d60ec3d,0x7c476cf8,0xbdfe0d8f,0x1d056605,0x1fe59ab6,0x86a8551f,0xa9ea9df6,0x47fb8d8c,0x8489941e,0x4a7f1b10,0xfeb874eb +.long 0x7ee0d98f,0xfe5fea86,0xdbf61864,0x201ad34b,0x37c031d4,0x45d8fe47,0x795f0822,0xd5f49fae,0xc7f4a40c,0xdb0fb291,0x730ddd92,0x2e69d9c1,0x49d76987,0x754e1054,0x7662db87,0x8a24911d +.long 0x60a71676,0x61fc1810,0xf66a8ad1,0xe852d1a8,0x6417231e,0x172bbd65,0x3babb11f,0x0d6de7bd,0xc8e347f8,0x6fde6f88,0x9bd99cc3,0x1c587547,0x34076950,0x78e54ed0,0x796e83ba,0x97f0f334 +.long 0x4924867a,0xe4dbe1ce,0x60b84917,0xbd5f51b0,0x3cb09a79,0x37530040,0xff1743d8,0xdb3fe0f8,0x556fa9db,0xed7894d8,0x23412fbf,0xfa262169,0xba7b9291,0x563be0db,0x0c9fb234,0x6ca8b8c0 +.long 0xbd763802,0xed406aa9,0x65303da1,0xc21486a0,0xc7e62ec4,0x61ae291e,0xdf99333e,0x622a0492,0xbb7a8ee0,0x7fd80c9d,0x6c01aedb,0xdc2ed3bc,0x08be74ec,0x35c35a12,0x469f671f,0xd540cb1a +.long 0xcf84f6c7,0xd16ced4e,0x2d090f43,0x8561fb9c,0x6f239db4,0x7e693d79,0x77bd0d94,0xa736f928,0x2c1950ee,0x07b4d929,0x56dc11b3,0xda177543,0x7a6a878e,0xa5dfbbaa,0x4decb08a,0x1c70cb29 +.long 0x6f0f7c50,0xfba28c8b,0x854dcc6d,0xa8eba2b8,0x36b78642,0x5ff8e89a,0xf6873adf,0x070c1c8e,0x6484d2e4,0xbbd3c371,0x0d414129,0xfb78318f,0x6ad93b0b,0x2621a39c,0xa9e917f7,0x979d74c2 +.long 0x61fb0428,0xfc195647,0xbee624d4,0x4d78954a,0xb8ae86fd,0xb94896e0,0xc91c8b13,0x6667ac0c,0x43bcf832,0x9f180512,0xa0010137,0xfbadf8b7,0xb3ba8aa7,0xc69b4089,0xe687ce85,0xfac4bacd +.long 0x977eab40,0x9164088d,0x2760b390,0x51f4c5b6,0x340dd553,0xd238238f,0xdb1d31c9,0x358566c3,0x5068f5ff,0x3a5ad69e,0xdaff6b06,0xf31435fc,0xd6debff0,0xae549a5b,0x75e01331,0x59e5f0b7 +.long 0x98559acf,0x5d492fb8,0x4db79b50,0x96018c2e,0x609f66aa,0x55f4a48f,0x4900a14f,0x1943b3af,0x15a40d39,0xc22496df,0x4c20f7c5,0xb2a44684,0x3b98404c,0x76a35afa,0xff5d1b77,0xbec75725 +.long 0xbea06444,0xb67aa163,0xf724b6f2,0x27e95bb2,0xd238c8ab,0x3c20e3e9,0xddd6ae17,0x1213754e,0x716e0f74,0x8c431020,0xffc095c2,0x6679c82e,0xd0ac2932,0x2eb3adf4,0x01bb7a76,0x2cc970d3 +.long 0x740f0e66,0x70c71f2f,0x2b6b23cc,0x545c616b,0xb40a8bd7,0x4528cfcb,0x2ab27722,0xff839633,0x025ac99a,0x049127d9,0x2b63e33b,0xd314d4a0,0x28d84519,0xc8c310e7,0xb3bc84ba,0x0fcb8983 +.long 0x38634818,0x2cc52261,0xb44c2e0b,0x501814f4,0x54dfdba3,0xf7e181aa,0xe759718c,0xcfd58ff0,0xd3b507a8,0xf90cdb14,0xc50bdad8,0x57bd478e,0x50e5f9aa,0x29c197e2,0xe40bc855,0x4db6eef8 +.long 0xd1fc0654,0x2cc8f21a,0x81269d73,0xc71cc963,0x077f49f9,0xecfbb204,0xca56b793,0xdde92571,0xf97ad8f7,0x9abed6a3,0x924de3bd,0xe6c19d3f,0xa140a800,0x8dce92f4,0x1337af07,0x85f44d1e +.long 0x09d64c52,0x5953c08b,0xf5df9749,0xa1b5e49f,0x52735f7d,0x336a8fb8,0x9add676b,0xb332b6db,0xb4511aa4,0x558b88a0,0xdbd5cc55,0x09788752,0xd8cd52bd,0x16b43b9c,0xc2a2696b,0x7f0bc5a0 +.long 0xc11f61ef,0x146e12d4,0x3a83e79e,0x9ce10754,0x6cbfca15,0x08ec73d9,0x5b49653f,0x09ff29ad,0xe7da946e,0xe31b72bd,0xee80a4f2,0xebf9eb3b,0x17598ce4,0xd1aabd08,0x53f37e80,0x18b5fef4 +.long 0x5958cd79,0xd5d5cdd3,0x1d373114,0x3580a1b5,0xfa935726,0xa36e4c91,0xef20d760,0xa38c534d,0x2ff5845b,0x7088e40a,0xbd78177f,0xe5bb40bd,0x857f9920,0x4f06a7a8,0xe968f05d,0xe3cc3e50 +.long 0xe5682d26,0x1d68b7fe,0xaec7f87c,0x5206f76f,0x041951ab,0x41110530,0xd4b5a71a,0x58ec52c1,0x0f75cf9a,0xf3488f99,0xba82d0d5,0xf411951f,0x618895ab,0x27ee75be,0x6d8aab14,0xeae060d4 +.long 0x7fb54dc2,0x9ae1df73,0x25963649,0x1f3e391b,0xfe055081,0x242ec32a,0x8491c9bd,0x5bd450ef,0x981eb389,0x367efc67,0x3a0550d5,0xed7e1928,0xab3ce75c,0x362e776b,0x1f24c523,0xe890e308 +.long 0xfeccef76,0xb961b682,0x8bba6d92,0x8b8e11f5,0x2b2375c4,0x8f2ccc4c,0xe2f86cfa,0x0d7f7a52,0x9efe5633,0xfd94d30a,0x5451f934,0x2d8d246b,0x244e6a00,0x2234c6e3,0xddec8c50,0xde2b5b0d +.long 0xbf776f5b,0x2ce53c5a,0x60357b05,0x6f724071,0x71bf3f7a,0xb2593717,0x440c4a9f,0x87d2501c,0x87b05340,0x440552e1,0x21624c32,0xb7bf7cc8,0x22facddb,0x4155a6ce,0x889837ef,0x5a4228cb +.long 0xfd4fd671,0xef87d6d6,0xc2daa10e,0xa233687e,0x03c0eb96,0x75622244,0x8bf19be6,0x7632d184,0x40735ff4,0x05d0f8e9,0xc00931f1,0x3a3e6e13,0xdafe3f18,0x31ccde6a,0xcfe51207,0xf381366a +.long 0x60167d92,0x24c222a9,0x7529f18c,0x62f9d6f8,0x0353b114,0x412397c0,0xef808043,0x334d89dc,0x2a4383ce,0xd9ec63ba,0x5cf92ba0,0xcec8e937,0xc8be74c0,0xfb8b4288,0x105d4391,0x67d6912f +.long 0x1b913149,0x7b996c46,0x3a4e02da,0x36aae2ef,0x972de594,0xb68aa003,0x4ec6d545,0x284ec70d,0x61391d54,0xf3d2b2d0,0xfe114e92,0x69c5d5d6,0xb4482dff,0xbe0f00b5,0xf5bf33c5,0xe1596fa5 +.long 0x96a71cba,0x10595b56,0xfdcadeb7,0x944938b2,0xfccd8471,0xa282da4c,0x0d37bfe1,0x98ec05f3,0x0698304a,0xe171ce1b,0x21bdf79b,0x2d691444,0x1b21dec1,0xd0cd3b74,0x16a15f71,0x712ecd8b +.long 0x00fd56e1,0x8d4c00a7,0xf9527c18,0x02ec9692,0x4a3e42e1,0x21c44937,0x1392ae0a,0x9176fbab,0x44b7b618,0x8726f1ba,0xf1de491c,0xb4d7aae9,0x07b582c0,0xf91df7b9,0xef60aa3a,0x7e116c30 +.long 0x466265d7,0x99270f81,0x4df7adf0,0xb15b6fe2,0xf9738f7f,0xfe33b2d3,0xd6d70f95,0x48553ab9,0xc21e94db,0x2cc72ac8,0xbdc0bbee,0x795ac38d,0x2e40478f,0x0a1be449,0x052bde55,0x81bd3394 +.long 0x56b3c4f2,0x63c8dbe9,0x904177cc,0x017a99cf,0x4d010fc1,0x947bbddb,0xbb2c9b21,0xacf9b00b,0x47173611,0x2970bc8d,0xac7d756f,0x1a4cbe08,0x67d541a2,0x06d9f4aa,0x59c2cf44,0xa3e8b689 +.long 0x4d88f1dd,0xaad066da,0x7ad35dea,0xc604f165,0x4478ca67,0x7edc0720,0xba02ce06,0xa10dfae0,0xaf36f4e4,0xeceb1c76,0xaf3f8f48,0x994b2292,0x77c8a68c,0xbf9ed77b,0x51744c9d,0x74f544ea +.long 0x8113a757,0x82d05bb9,0x8a9885e4,0x4ef2d2b4,0x1aa7865f,0x1e332be5,0x290d1a52,0x22b76b18,0x44351683,0x308a2310,0xa3f22840,0x9d861896,0x841ed947,0x5959ddcd,0x154b73bf,0x0def0c94 +.long 0x4c7c15e0,0xf0105417,0x3a277c32,0x539bfb02,0xf9dccf5f,0xe699268e,0x0247a3bd,0x9f5796a5,0x4f157269,0x8b839de8,0x7a30196b,0xc825c1e5,0xdc8a5a91,0x6ef0aabc,0x498b7fe6,0xf4a8ce6c +.long 0x70cbac78,0x1cce35a7,0xf6b23958,0x83488e9b,0xd76cb011,0x0341a070,0xae1b2658,0xda6c9d06,0xdd648c52,0xb701fb30,0x52fb9fd1,0x994ca02c,0x6f563086,0x06933117,0x17856bab,0x3d2b8100 +.long 0x5963a46e,0xe89f48c8,0xa99e61c7,0x658ab875,0x4b8517b4,0x6e296f87,0xfc1bc656,0x36c4fcdc,0xa3906def,0xde5227a1,0x62418945,0x9fe95f57,0xfdd96cde,0x20c91e81,0xda4480de,0x5adbe47e +.long 0x396de2b6,0xa009370f,0xf0ecc7bd,0x98583d4b,0xe51d0672,0xf44f6b57,0x556b1984,0x03d6b078,0xb0b64912,0x27dbdd93,0x15687b09,0x9b3a3434,0x51ec20a9,0x0dba6461,0xff28187c,0xec93db7f +.long 0x66e48bdd,0x00ff8c24,0x11ccd78e,0x2514f2f9,0xe1250603,0xeba11f4f,0x243fa156,0x8a22cd41,0xb283e4c6,0xa4e58df4,0x8b39783f,0x78c29859,0xa5259809,0x5235aee2,0x0e0227dd,0xc16284b5 +.long 0x1338830d,0xa5f57916,0xd2123fca,0x6d4b8a6b,0xf9c546f8,0x236ea68a,0xfa608d36,0xc1d36873,0x8d436d13,0xcd76e495,0x8fb080af,0xd4d9c221,0xe8ad3fb5,0x665c1728,0xb3d572e0,0xcf1ebe4d +.long 0x584c5e20,0xa7a8746a,0xb9dc7035,0x267e4ea1,0xb9548c9b,0x593a15cf,0x4bd012f3,0x5e6e2135,0x8c8f936e,0xdf31cc6a,0xb5c241dc,0x8af84d04,0x345efb86,0x63990a6f,0xb9b962cb,0x6fef4e61 +.long 0x25722608,0xf6368f09,0x131cf5c6,0x131260db,0xfab4f7ac,0x40eb353b,0x37eee829,0x85c78880,0xc3bdf24e,0x4c1581ff,0xf5c3c5a8,0x5bff75cb,0xa14e6f40,0x35e8c83f,0x0295e0ca,0xb81d1c0f +.long 0xf43a730f,0xfcde7cc8,0x33ab590e,0xe89b6f3c,0xad03240b,0xc823f529,0x98bea5db,0x82b79afe,0x962fe5de,0x568f2856,0x60c591f3,0x0c590adb,0x4a28a858,0x1fc74a14,0xb3203f4c,0x3b662498 +.long 0x6c39765a,0x91e3cf0d,0xac3cca0b,0xa2db3acd,0xcb953b50,0x288f2f08,0xcf43cf1a,0x2414582c,0x60eee9a8,0x8dec8bbc,0x729aa042,0x54c79f02,0x6532f5d5,0xd81cd5ec,0xcf82e15f,0xa672303a +.long 0x719c0563,0x376aafa8,0xbc5fc79f,0xcd8ad2dc,0xcb750cd3,0x303fdb9f,0x4418b08e,0x14ff052f,0x3e2d6520,0xf75084cf,0x144ed509,0x7ebdf0f8,0xd3f25b98,0xf43bf0f2,0xa354d837,0x86ad71cf +.long 0x26f43572,0xb827fe92,0x5d824758,0xdfd3ab5b,0x539094c1,0x315dd23a,0x66623d68,0x85c0e37a,0x7be19ae0,0x575c7972,0xdf0d36b5,0x616a3396,0x26b1ff7e,0xa1ebb3c8,0x140ad453,0x635b9485 +.long 0xda430c0b,0x92bf3cda,0x3a96dac6,0x4702850e,0x15ac326a,0xc91cf0a5,0xab8c25e4,0x95de4f49,0xe265c17c,0xb01bad09,0x087b3881,0x24e45464,0xe1fac5ca,0xd43e583c,0x6ead97a6,0xe17cb318 +.long 0x74dcec46,0x6cc39243,0x54c2b73f,0x33cfc02d,0xf26cd99c,0x82917844,0xd1773f89,0x8819dd95,0x0871f427,0x09572aa6,0xf6f01c34,0x8e0cf365,0xbff1f5af,0x7fa52988,0xe75e8e50,0x4eb357ea +.long 0x868af75d,0xd9d0c8c4,0x45c8c7ea,0xd7325cff,0xcc81ecb0,0xab471996,0x611824ed,0xff5d55f3,0x1977a0ee,0xbe314541,0x722038c6,0x5085c4c5,0xf94bb495,0x2d5335bf,0xc8e2a082,0x894ad8a6 +.long 0xada35438,0x5c3e2341,0x049b8c4e,0xf4a9fc89,0x9f17cf34,0xbeeb355a,0x6c91fe10,0x3f311e0e,0x92ab9891,0xc2d20038,0x3e8ce9a9,0x257bdcc1,0x88c53bee,0x1b2d9789,0xcdba143a,0x927ce89a +.long 0x523db280,0xb0a32cca,0x50d43783,0x5c889f8a,0x4897d16f,0x503e04b3,0x08f5f2e8,0x8cdb6e78,0x179c8e74,0x6ab91cf0,0x48211d60,0xd8874e52,0xea851200,0xf948d4d5,0xe6f9840a,0x4076d41e +.long 0x47b517ea,0xc20e263c,0x30685e5e,0x79a448fd,0xf90631a0,0xe55f6f78,0xa79e6346,0x88a790b1,0x80969fe8,0x62160c7d,0x41491bb9,0x54f92fd4,0x5c957526,0xa6645c23,0xbea3ce7b,0xf44cc5ae +.long 0x8b1e68b7,0xf7628327,0x303f29d3,0xc731ad7a,0x57d03ecb,0xfe5a9ca9,0x41bc97a7,0x96c0d50c,0x9b4f7f24,0xc4669fe7,0x3d9967ef,0xfdd781d8,0x5d2c208d,0x7892c7c3,0xae545cb3,0x8bf64f7c +.long 0x467be912,0xc01f862c,0xc73d30cc,0xf4c85ee9,0x6ab83ec7,0x1fa6f4be,0x4e3e3cf9,0xa07a3c1c,0x0c00beb3,0x87f8ef45,0x000d4c3e,0x30e2c2b3,0xfe08bf5b,0x1aa00b94,0x9224ef52,0x32c133aa +.long 0x32e5685d,0x38df16bb,0x58e6f544,0x68a9e069,0xcdc5ebc6,0x495aaff7,0x378b135f,0xf894a645,0x09e27ecf,0xf316350a,0x58f7179d,0xeced201e,0xe97861ba,0x2eec273c,0xd693be2e,0x47ec2cae +.long 0xf68367ce,0xfa4c97c4,0xbe5a5755,0xe4f47d0b,0xb298a979,0x17de815d,0xc177dc7d,0xd7eca659,0x49ded0a3,0x20fdbb71,0xfb34d3c5,0x4cb2aad4,0x60858a33,0x2cf31d28,0xa24aa40f,0x3b6873ef +.long 0x2c11bb37,0x540234b2,0xed4c74a3,0x2d0366dd,0xeec5f25d,0xf9a968da,0x67b63142,0x36601068,0x68d7b6d4,0x07cd6d2c,0x0c842942,0xa8f74f09,0x7768b1ee,0xe2751404,0xfe62aee4,0x4b5f7e89 +.long 0x89070d26,0xc6a77177,0xdd1c8bc7,0xa1f28e4e,0x469e1f17,0xea5f4f06,0xfbdb78e0,0x78fc242a,0x8b0588f1,0xc9c7c592,0x1535921e,0xb6b7a0fd,0xbde5ae35,0xcc5bdb91,0x12ff1864,0xb42c485e +.long 0xdbab98aa,0xa1113e13,0xa17b1024,0xde9d469b,0xc0462d3a,0x23f48b37,0x7c5c078d,0x3752e537,0x15544eb9,0xe3a86add,0x80fba279,0xf013aea7,0xf22001b5,0x8b5bb76c,0xf02891ab,0xe617ba14 +.long 0x936219d3,0xd39182a6,0xae51cb19,0x5ce1f194,0xbf07a74c,0xc78f8598,0x22cbf1bc,0x6d7158f2,0xe300ce18,0x3b846b21,0x2d11275d,0x35fba630,0xa0239b9b,0x5fe25c36,0xdf05d940,0xd8beb35d +.long 0x1f7e320d,0x4db02bb0,0x6da320ea,0x0641c364,0x821389a3,0x6d95fa5d,0x8fcd8e3d,0x92699748,0xceb6c143,0x316fef17,0xd933762b,0x67fcb841,0x118b17f8,0xbb837e35,0x9fd24821,0x4b92552f +.long 0x46aca793,0xae6bc70e,0xe579311b,0x1cf0b0e4,0x5802f716,0x8dc631be,0xbddbee4d,0x099bdc6f,0x0caf8b05,0xcc352bb2,0x72d63df2,0xf74d505a,0x91c4f408,0xb9876d4b,0x9e229b2d,0x1ce18473 +.long 0x83abdb4a,0x49507597,0xdee84b18,0x850fbcb6,0x609e67dc,0x6325236e,0x9336c6d8,0x04d831d9,0xfa12d45d,0x8deaae3b,0x4746e246,0xe425f8ce,0x24f5f31e,0x8004c175,0xad62c3b7,0xaca16d8f +.long 0x9152f934,0x0dc15a6a,0xed0e12c1,0xf1235e5d,0xda477dac,0xc33c06ec,0xb2ea0006,0x76be8732,0x0c0cd313,0xcf3f7831,0xa614260d,0x3c524553,0xcab22d15,0x31a756f8,0x77827a20,0x03ee10d1 +.long 0x1994ef20,0xd1e059b2,0x638ae318,0x2a653b69,0x2f699010,0x70d5eb58,0x09f5f84a,0x279739f7,0x8b799336,0x5da4663c,0x203c37eb,0xfdfdf14d,0xa1dbfb2d,0x32d8a9dc,0x77d48f9b,0xab40cff0 +.long 0xd20b42d5,0xc018b383,0x9f78845f,0xf9a810ef,0xbdba9df0,0x40af3753,0x131dfdf9,0xb90bdcfc,0xf01ab782,0x18720591,0x6af12a88,0xc823f211,0x0dc14401,0xa51b80f3,0xfb2dfbe3,0xde248f77 +.long 0x0cafe751,0xef5a44e5,0xd4dcd221,0x73997c9c,0xde854024,0x32fd86d1,0xa09b84bb,0xd5b53adc,0xdcedd8d1,0x008d7a11,0x74b32c84,0x406bd1c8,0x05dde8b1,0x5d4472ff,0xfce2b32f,0x2e25f2cd +.long 0x29dfc254,0xbec0dd5e,0x2b98b267,0x4455fcf6,0xc72df2ad,0x0b4d43a5,0x48a75397,0xea70e6be,0x5820f3bf,0x2aad6169,0x9e37f68f,0xf410d2dd,0x7be5ac83,0x70fb7dba,0x36ec3eec,0x636bb645 +.long 0x9754e21c,0x27104ea3,0x8d63c373,0xbc87a3e6,0x4109db9a,0x483351d7,0x60134da7,0x0fa724e3,0xb0720b16,0x9ff44c29,0x06aceead,0x2dd0cf13,0xe26929a6,0x5942758c,0xb766a92b,0x96c5db92 +.long 0x5f18395e,0xcec7d4c0,0x1f80d032,0xd3f22744,0xcb86075b,0x7a68b37a,0xafef92db,0x074764dd,0x7bc7f389,0xded1e950,0xb9756460,0xc580c850,0x7da48157,0xaeeec2a4,0x82c587b3,0x3f0b4e7f +.long 0xa9f19c53,0x231c6de8,0x6974e34e,0x5717bd73,0xf1508fa9,0xd9e1d216,0xdadaa124,0x9f112361,0x823b7348,0x80145e31,0xac634069,0x4dd8f0d5,0x2297c258,0xe3d82fc7,0x9cee7431,0x276fcfee +.long 0x2bc0aea9,0x8eb61b5e,0xde329431,0x4f668fd5,0x38e4b87e,0x03a32ab1,0x73d0ef0b,0xe1374517,0x853ac983,0x1a46f7e6,0x68e78a57,0xc3bdf42e,0x2ea96dd1,0xacf20785,0xf1638460,0xa10649b9 +.long 0x879fbbed,0xf2369f0b,0xda9d1869,0x0ff0ae86,0x56766f45,0x5251d759,0x2be8d0fc,0x4984d8c0,0xd21008f0,0x7ecc95a6,0x3a1a1c49,0x29bd54a0,0xd26c50f3,0xab9828c5,0x51d0d251,0x32c0087c +.long 0x0c1cdb26,0x9bac3ce6,0x557ca205,0xcd94d947,0x9db1fdcd,0x1b1bd598,0xa3d8b149,0x0eda0108,0x56152fcc,0x95066610,0xe7192b33,0xc2f037e6,0xc92e05a4,0xdeffb41a,0xc2f6c62e,0x1105f6c2 +.long 0x8733913c,0x68e73500,0x3f3adc40,0xcce86163,0x38a278e9,0xf407a942,0x2ab21292,0xd13c1b9d,0x1c74cf5c,0x93ed7ec7,0xf1a4c1b4,0x8887dc48,0x4b3a11f1,0x3830ff30,0x58937cb6,0x358c5a3c +.long 0x89022829,0x027dc404,0x3b798f79,0x40e93977,0x38be6ead,0x90ad3337,0xf34c0a5d,0x9c23f6bc,0xfbffd8bb,0xd1711a35,0x1949d3dd,0x60fcfb49,0x7825d93a,0x09c8ef4b,0xa0a8c968,0x24233cff +.long 0xe6d982af,0x67ade46c,0xe7544d7c,0xebb6bf3e,0x3d8bd087,0xd6b9ba76,0x4dc61280,0x46fe382d,0xb5bdbd75,0xbd39a7e8,0xb8f228fe,0xab381331,0xce1c4300,0x0709a77c,0xf337ceac,0x6a247e56 +.long 0x636288be,0x8f34f21b,0xc8a7c305,0x9dfdca74,0xea919e04,0x6decfd1b,0x8e1991f8,0xcdf2688d,0xd0f8a67e,0xe607df44,0x0b58d010,0xd985df4b,0x0c24f8f4,0x57f834c5,0xa0bf01ae,0xe976ef56 +.long 0xa1c32373,0x536395ac,0x734c0a13,0x351027aa,0x5e6bd5bc,0xd2f1b5d6,0x223debed,0x2b539e24,0x0eaa1d71,0xd4994cec,0x661dcf65,0x2a83381d,0x7b54c740,0x5f1aed2f,0xd6dda5ee,0x0bea3fa5 +.long 0x36cc6134,0x9d4fb684,0xc0a443dd,0x8eb9bbf3,0x383b7d2a,0xfc500e2e,0x5b775257,0x7aad621c,0x0a8f7cc0,0x69284d74,0x07562d65,0xe820c2ce,0x499758ee,0xbf9531b9,0x6ee0cc2d,0x73e95ca5 +.long 0xfbaf50a5,0xf61790ab,0x684e0750,0xdf55e76b,0xf176b005,0xec516da7,0x7a2dddc7,0x575553bb,0x553afa73,0x37c87ca3,0x4d55c251,0x315f3ffc,0xaf3e5d35,0xe846442a,0x6495ff28,0x61b91149 +.long 0xfa326dc3,0x23cc95d3,0x18fc2cea,0x1df4da1f,0xd0a37d59,0x24bf9adc,0x320d6e1e,0xb6710053,0x618344d1,0x96f9667e,0xa06445af,0xcc7ce042,0xd68dbc3a,0xa02d8514,0x280b5a5b,0x4ea109e4 +.long 0xb40961bf,0x5741a7ac,0x6aa56bfa,0x4ada5937,0x02b765d1,0x7feb9145,0xe6ad1582,0x561e97be,0xda3982f5,0xbbc4a5b6,0xb546f468,0x0c2659ed,0x59612d20,0xb8e7e6aa,0xac19e8e0,0xd83dfe20 +.long 0xb835398c,0x8530c45f,0xb38a41c2,0x6106a8bf,0x35f5dcdb,0x21e8f9a6,0xcae498ed,0x39707137,0xd8249f00,0x70c23834,0xab2537a0,0x9f14b58f,0x5f61c0c2,0xd043c365,0x09a194a7,0xdc5926d6 +.long 0x8e77738a,0xddec0339,0xfba46426,0xd07a63ef,0xee7f6e86,0x2e58e79c,0xff32d241,0xe59b0459,0x20fa0338,0xc5ec84e5,0xeaff5ace,0x97939ac8,0xb4a38313,0x0310a4e3,0x8f9d9885,0x9115fba2 +.long 0x5fadf8c3,0x8dd710c2,0xce19c0e2,0x66be38a2,0x4cfe5022,0xd42a279c,0x0e24e1b8,0x597bb530,0xc153ca7f,0x3cde86b7,0x707d63bd,0xa8d30fb3,0xbd60d21e,0xac905f92,0x7b9a54ab,0x98e7ffb6 +.long 0xe9726a30,0xd7147df8,0xafce3533,0xb5e216ff,0x2ff1ec40,0xb550b799,0xa1e953fd,0x6b613b87,0x792d5610,0x87b88dba,0xa190fbe1,0x2ee1270a,0x2ef581da,0x02f4e2dc,0xeff82a95,0x016530e4 +.long 0x8fd6ee89,0xcbb93dfd,0x46848fff,0x16d3d986,0x1da47adf,0x600eff24,0x0ad47a71,0x1b9754a0,0x70c33b98,0x8f9266df,0xdf34186e,0xaadc87ae,0x4ad24132,0x0d2ce8e1,0x19946eba,0x8a47cbfc +.long 0x62b5f3af,0x47feeb66,0x0abb3734,0xcefab561,0x19f35cb1,0x449de60e,0x157f0eb9,0x39f8db14,0x3c61bfd6,0xffaecc5b,0x41216703,0xa5a4d41d,0x224e1cc2,0x7f8fabed,0x871ad953,0x0d5a8186 +.long 0xd22da9a9,0xf10774f7,0xcc8a9b0d,0x45b8a678,0xbdc32cff,0xd9c2e722,0x337202a5,0xbf71b5f5,0x69fc4db9,0x95c57f2f,0x765d01e1,0xb6dad34c,0xcb904635,0x7e0bd13f,0x763a588c,0x61751253 +.long 0x81af2c2d,0xd85c2997,0x81b9d7da,0xc0f7d9c4,0x08533e8d,0x838a34ae,0x311d8311,0x15c4cb08,0x8e121e14,0x97f83285,0x85000a5f,0xeea7dc1e,0x5d256274,0x0c6059b6,0xb95075c0,0xec9beace +.long 0x1df97828,0x173daad7,0xa8937877,0xbf851cb5,0x01646f3c,0xb083c594,0x50c6d352,0x3bad30cf,0x496bbcea,0xfeb2b202,0x18a1e8ba,0x3cf9fd4f,0x1c066029,0xd26de7ff,0x4e9ed4f8,0x39c81e9e +.long 0x7b390d35,0xd8be0cb9,0x964aab27,0x01df2bbd,0xc3ef64f8,0x3e8c1a65,0x716ed1dd,0x567291d1,0x5f5406d3,0x95499c6c,0x5ba8e23f,0x71fdda39,0xd5096ece,0xcfeb320e,0xca66dd16,0xbe7ba92b +.long 0xc6fb5a7d,0x4608d36b,0x6d2dd0e0,0xe3eea15a,0x8f97a36a,0x75b0a3eb,0x1c83de1e,0xf59814cc,0x1c33c23f,0x56c9c5b0,0x6faa4136,0xa96c1da4,0xde316551,0x46bf2074,0x1f756c8f,0x3b866e7b +.long 0x1495ed6b,0x727727d8,0xb682dce7,0xb2394243,0x758610f3,0x8ab8454e,0x857d72a4,0xc243ce84,0xdbbf370f,0x7b320d71,0x78e0f7ca,0xff9afa37,0xea7b523f,0x0119d1e0,0x058c7d42,0xb997f8cb +.long 0x37bbb184,0x285bcd2a,0xa45d1fa6,0x51dcec49,0xe29634cb,0x6ade3b64,0x26b86ef1,0x080c94a7,0x2283fbe3,0xba583db1,0x5a9315ed,0x902bddc8,0x86964bec,0x07c1ccb3,0xb6258301,0x78f4eacf +.long 0x56f90823,0x4bdf3a49,0x741d777b,0xba0f5080,0xf38bf760,0x091d71c3,0x9b625b02,0x9633d50f,0xb8c9de61,0x03ecb743,0x5de74720,0xb4751254,0x74ce1cb2,0x9f9defc9,0x00bd32ef,0x774a4f6a +.long 0x73848f22,0xaca385f7,0xf3f8558e,0x53dad716,0x93c471f9,0xab7b34b0,0x19644bc7,0xf530e069,0xdd59d31a,0x3d9fb1ff,0x08daa795,0x4382e0df,0xd5cc88d7,0x165c6f4b,0x4a18c900,0xeaa392d5 +.long 0x648024ee,0x94203c67,0x8c2fabcd,0x188763f2,0xbbaec835,0xa80f87ac,0xf29d8d54,0x632c96e0,0x4c00a95e,0x29b0a60e,0xe011e9fa,0x2ef17f40,0x15b77223,0xf6c0e1d1,0x14b04e32,0xaaec2c62 +.long 0x3d84e58c,0xd35688d8,0x958571db,0x2af5094c,0x760682a6,0x4fff7e19,0xe39a407c,0x4cb27077,0x4ff0e321,0x0f59c547,0x1b34c8ff,0x169f34a6,0x52bc1ba7,0x2bff1096,0x83583544,0xa25423b7 +.long 0x0ac8b782,0x5d55d5d5,0x2db3c892,0xff6622ec,0x6b8bb642,0x48fce741,0x69d7e3dc,0x31d6998c,0xcadcaed0,0xdbaf8004,0xd81d053c,0x801b0142,0x59630ec6,0x94b189fc,0xaf762c8e,0x120e9934 +.long 0xfdc6a404,0x53a29aa4,0xa1909948,0x19d8e01e,0xd7e89681,0x3cfcabf1,0x4e132d37,0x3321a50d,0xe9a86111,0xd0496863,0x06a3bc65,0x8c0cde61,0xfc9f8eef,0xaf866c49,0xff7f5141,0x2066350e +.long 0xe56ddfbd,0x4f8a4689,0xfe32983a,0xea1b0c07,0x873cb8cb,0x2b317462,0x2d93229f,0x658deddc,0x0f64ef58,0x65efaf4d,0x730cc7a8,0xfe43287d,0x3d047d70,0xaebc0c72,0xd92d26c9,0x92efa539 +.long 0x94b56526,0x06e78457,0x0961002d,0x415cb80f,0x76dcb10f,0x89e5c565,0xff9259fe,0x8bbb6982,0x9abc2668,0x4fe8795b,0x1e678fb1,0xb5d4f534,0x7b7da2b9,0x6601f3be,0xa13d6805,0x98da59e2 +.long 0x01799a52,0x190d8ea6,0xb86d2952,0xa20cec41,0x7fff2a7c,0x3062ffb2,0x79f19d37,0x741b32e5,0x4eb57d47,0xf80d8181,0x16aef06b,0x7a2d0ed4,0x1cecb588,0x09735fb0,0xc6061f5b,0x1641caaa +.long 0x20151427,0x7f99824f,0x92430206,0x206828b6,0xe1112357,0xaa9097d7,0x09e414ec,0xacf9a2f2,0x27915356,0xdbdac9da,0x001efee3,0x7e0734b7,0xd2b288e2,0x54fab5bb,0xf62dd09c,0x4c630fc4 +.long 0x1ac2703b,0x8537107a,0x6bc857b5,0xb49258d8,0xbcdaccd1,0x57df14de,0xc4ae8529,0x24ab68d7,0x734e59d0,0x7ed8b5d4,0xc495cc80,0x5f8740c8,0x291db9b3,0x84aedd5a,0x4fb995be,0x80b360f8 +.long 0x5fa067d1,0xae915f5d,0x9668960c,0x4134b57f,0xa48edaac,0xbd3656d6,0xfc1d7436,0xdac1e3e4,0xd81fbb26,0x674ff869,0xb26c33d4,0x449ed3ec,0xd94203e8,0x85138705,0xbeeb6f4a,0xccde538b +.long 0xa61a76fa,0x55d5c68d,0xca1554dc,0x598b441d,0x773b279c,0xd39923b9,0x36bf9efc,0x33331d3c,0x298de399,0x2d4c848e,0xa1a27f56,0xcfdb8e77,0x57b8ab70,0x94c855ea,0x6f7879ba,0xdcdb9dae +.long 0x019f2a59,0x7bdff8c2,0xcb4fbc74,0xb3ce5bb3,0x8a9173dd,0xea907f68,0x95a75439,0x6cd3d0d3,0xefed021c,0x92ecc4d6,0x6a77339a,0x09a9f9b0,0x7188c64a,0x87ca6b15,0x44899158,0x10c29968 +.long 0xed6e82ef,0x5859a229,0x65ebaf4e,0x16f338e3,0x5ead67ae,0x0cd31387,0x54ef0bb4,0x1c73d228,0x74a5c8c7,0x4cb55131,0x7f69ad6a,0x01cd2970,0xe966f87e,0xa04d00dd,0x0b7b0321,0xd96fe447 +.long 0x88fbd381,0x342ac06e,0x5c35a493,0x02cd4a84,0x54f1bbcd,0xe8fa89de,0x2575ed4c,0x341d6367,0xd238202b,0xebe357fb,0xa984ead9,0x600b4d1a,0x52436ea0,0xc35c9f44,0xa370751b,0x96fe0a39 +.long 0x7f636a38,0x4c4f0736,0x0e76d5cb,0x9f943fb7,0xa8b68b8b,0xb03510ba,0x9ed07a1f,0xc246780a,0x6d549fc2,0x3c051415,0x607781ca,0xc2953f31,0xd8d95413,0x955e2c69,0x7bd282e3,0xb300fadc +.long 0x87e9189f,0x81fe7b50,0xf42dda27,0xdb17375c,0xcf0a5904,0x22f7d896,0xebe348e6,0xa0e57c5a,0xf40e3c80,0xa61011d3,0x8db705c5,0xb1189321,0x50fedec3,0x4ed9309e,0x4d6d5c1d,0xdcf14a10 +.long 0x55691342,0x056c265b,0x91049dc7,0xe8e08504,0xc9bae20a,0x131329f5,0xd9dccdb4,0x96c8b3e8,0xfb4ee6b4,0x8c5ff838,0x41e8ccf0,0xfc5a9aeb,0xfae050c6,0x7417b764,0x00452080,0x0953c3d7 +.long 0x38dfe7e8,0x21372682,0x2bb79d4b,0xea417e15,0x76e7cf2d,0x59641f1c,0xea0bcfcc,0x271e3059,0x7253ecbd,0x624c7dfd,0x4fca6186,0x2f552e25,0x4d866e9c,0xcbf84ecd,0xf68d4610,0x73967709 +.long 0xc27901b4,0xa14b1163,0x899b8bf3,0xfd9236e0,0xcbc6da0a,0x42b091ec,0x5ad1d297,0xbb1dac6f,0xa91cf76e,0x80e61d53,0xd31f1ee7,0x4110a412,0x13efcf77,0x2d87c3ba,0xdf450d76,0x1f374bb4 +.long 0x0d188dab,0x5e78e2f2,0xf4b885ef,0xe3968ed0,0x7314570f,0x46c0568e,0x01170521,0x31616338,0x4f0c8afe,0x18e1e7e2,0xdeea78da,0x4caa75ff,0x7c5d8a51,0x82db67f2,0x6f505370,0x36a44d86 +.long 0x0333974f,0xd72c5bda,0x27a70146,0x5db516ae,0x210ef921,0x34705281,0x0c9c38e5,0xbff17a8f,0x12476da1,0x78f4814e,0x33c16980,0xc1e16613,0x424d4bca,0x9e5b386f,0xc85740de,0x4c274e87 +.long 0x6c2f5226,0xb6a9b88d,0x550d7ca8,0x14d1b944,0x1fc41709,0x580c85fc,0x54c6d519,0xc1da368b,0xd5113cf7,0x2b0785ce,0x5a34708f,0x0670f633,0x15cc3f88,0x46e23767,0x50c72c8f,0x1b480cfa +.long 0x4147519a,0x20288602,0x26b372f0,0xd0981eac,0xa785ebc8,0xa9d4a7ca,0xdbdf58e9,0xd953c50d,0xfd590f8f,0x9d6361cc,0x44e6c917,0x72e9626b,0x22eb64cf,0x7fd96110,0x9eb288f3,0x863ebb7e +.long 0x6aca8ee7,0x6e6ab761,0xd7b40358,0x97d10b39,0x1e5feb0d,0x1687d377,0x8265a27a,0xc83e50e4,0xc954b313,0x8f75a9fe,0x310d1f61,0xcc2e8f47,0x6557d0e0,0xf5ba81c5,0x3eaf6207,0x25f9680c +.long 0x4354080b,0xf95c6609,0x7bf2fe1c,0x5225bfa5,0x5c7d98fa,0xc5c004e2,0x019aaf60,0x3561bf1c,0xba151474,0x5e6f9f17,0xb04f6eca,0xdec2f934,0x269acb1e,0x64e368a1,0x0cdda493,0x1332d9e4 +.long 0xdf23de05,0x60d6cf69,0x009339a0,0x66d17da2,0x0a693923,0x9fcac985,0xed7c6a6d,0xbcf057fc,0xf0b5662c,0xc3c5c8c5,0xdcba4f24,0x25318dd8,0x082b69ff,0x60e8cb75,0x1e728c01,0x7c23b3ee +.long 0x097e4403,0x15e10a0a,0x19854665,0xcb3d0a86,0xd67d4826,0x88d8e211,0x0b9d2839,0xb39af66e,0xbd475ca8,0xa5f94588,0xc077b80b,0xe06b7966,0xda27c26c,0xfedb1485,0xfe0fd5e0,0xd290d33a +.long 0xf34fb0fa,0xa40bcc47,0x1fb1ab09,0xb4760cc8,0xa273bfe3,0x8fca0993,0xf70b213c,0x13e4fe07,0xfdb05163,0x3bcdb992,0x0c2b19b6,0x8c484b11,0xaaf2e3e2,0x1acb815f,0xb89ff1b4,0xc6905935 +.long 0x586e74e1,0xb2ad6f9d,0x67b80484,0x488883ad,0x369c3ddb,0x758aa2c7,0x9f9afd31,0x8ab74e69,0x5e21beb1,0x10fc2d28,0x318c42f9,0x3484518a,0x53cf40c3,0x377427dc,0x391bc1d9,0x9de0781a +.long 0x693807e1,0x8faee858,0x4e81ccc7,0xa3865327,0x6f835b84,0x02c30ff2,0x0d3d38d4,0xb604437b,0x5ca1823d,0xb3fc8a98,0x03be0324,0xb82f7ec9,0xcf684a33,0xee36d761,0x9f29bf7d,0x5a01df0e +.long 0x1306583d,0x686202f3,0x437c622e,0x05b10da0,0x076a7bc8,0xbf9aaa0f,0x8f8f4e43,0x25e94efb,0xfa3dc26d,0x8a35c9b7,0x96ff03c5,0xe0e5fb93,0xebc394ce,0xa77e3843,0x8361de60,0xcede6595 +.long 0xa1993545,0xd27c22f6,0x24d671ba,0xab01cc36,0xa169c28e,0x63fa2877,0x2eb08376,0x925ef904,0x53aa0b32,0x3b2fa3cf,0x71c49d7a,0xb27beb5b,0xd105e27f,0xb60e1834,0x4f68570d,0xd6089788 +.long 0xd6fbc2ac,0x23094ce0,0x815ff551,0x738037a1,0x6bef119c,0xda73b1bb,0xeef506ba,0xdcf6c430,0xe3ef104a,0x00e4fe7b,0x0a065628,0xebdd9a2c,0x8792043e,0x853a81c3,0xb3b59108,0x22ad6ece +.long 0x39cd297d,0x9fb813c0,0x05bda5d9,0x8ec7e16e,0x0d104b96,0x2834797c,0x7c511510,0xcc11a2e7,0x96ee6380,0x96ca5a53,0xcea38742,0x054c8655,0xd54dfa7d,0xb5946852,0x1f4ab207,0x97c422e7 +.long 0x0c22b540,0xbf907509,0xb7c267d4,0x2cde42aa,0x5ab0d693,0xba18f9ed,0x6e4660d9,0x3ba62aa6,0xab9ea96a,0xb24bf97b,0xe3b60e32,0x5d039642,0x7c4d9bd5,0x4e6a4506,0x7ed4a6a4,0x666c5b9e +.long 0x8edbd7cc,0xfa3fdcd9,0xc6ccd753,0x4660bb87,0x21e6b64f,0x9ae90820,0xb36bfb3f,0x8a56a713,0x5726d47f,0xabfce096,0x0b1a9a7f,0x9eed01b2,0x4eb74a37,0x30e9cad4,0x53e9666d,0x7b2524cc +.long 0x8f4b002f,0x6a29683b,0x41f4fc20,0xc2200d7a,0x3a338acc,0xcf3af47a,0xe7128975,0x6539a4fb,0xc33c7fcf,0xcec31c14,0xc7be322b,0x7eb6799b,0x6646f623,0x119ef4e9,0x54d7299b,0x7b7a26a5 +.long 0x403f46f2,0xcb37f08d,0x1a0ec0c7,0x94b8fc43,0xc332142f,0xbb8514e3,0xe80d2a7a,0xf3ed2c33,0xb639126c,0x8d2080af,0xe3553ade,0xf7b6be60,0x1c7e2b09,0x3950aa9f,0x6410f02b,0x847ff958 +.long 0x678a31b0,0x877b7cf5,0x3998b620,0xd50301ae,0xc00fb396,0x734257c5,0x04e672a6,0xf9fb18a0,0xe8758851,0xff8bd8eb,0x5d99ba44,0x1e64e4c6,0x7dfd93b7,0x4b8eaedf,0x04e76b8c,0xba2f2a98 +.long 0xe8053433,0x7d790cba,0x3d2c9585,0xc8e725a0,0xcdd8f5ed,0x58c5c476,0xefa9fe1d,0xd106b952,0x0eff13a9,0x3c5c775b,0xe057b930,0x242442ba,0xc9b70cbd,0xe9f458d4,0xa3cdb89a,0x69b71448 +.long 0x0e2ed742,0x41ee46f6,0x40067493,0x573f1045,0x9d54c304,0xb1e154ff,0x8d3a7502,0x2ad0436a,0x431a8121,0xee4aaa2d,0x886f11ed,0xcd38b3ab,0x034a0eb7,0x57d49ea6,0xf7e85e58,0xd2b773bd +.long 0x9b5c1f14,0x4a559ac4,0x3e54df2b,0xc444be1a,0xeda41891,0x13aad704,0x5eb5c788,0xcd927bec,0xe48c8a34,0xeb3c8516,0x4b546669,0x1b7ac812,0x594df8ec,0x1815f896,0x79227865,0x87c6a79c +.long 0x9b56ddbd,0xae02a2f0,0x8a2f1cf3,0x1339b5ac,0x839dff0d,0xf2b569c7,0xfee9a43d,0xb0b9e864,0x77bb064e,0x4ff8ca41,0xfd249f63,0x145a2812,0xf86f689a,0x3ab7beac,0x01d35f5e,0x9bafec27 +.long 0x4265aa91,0x28054c65,0x035efe42,0xa4b18304,0x9639dec7,0x6887b0e6,0x3d52aea5,0xf4b8f6ad,0x971a8a13,0xfb9293cc,0x4c934d07,0x3f159e5d,0x09acbc29,0x2c50e9b1,0x7154d129,0x08eb65e6 +.long 0x30b75c3e,0x4feff589,0x94491c93,0x0bb82fe2,0x89af62bb,0xd8ac377a,0x9685e49f,0xd7b51490,0x04497f19,0xabca9a7b,0x1a7ad13f,0x1b35ed0a,0x3ec86ed6,0x6b601e21,0xce0c76f1,0xda91fcb9 +.long 0xd7ab27e1,0x9e28507b,0x63945b7b,0x7c19a555,0xaafc9827,0x6b43f0a1,0x3aa55b91,0x443b4fbd,0x6962c88f,0x962b2e65,0xce0db0ca,0x139da8d4,0x1b8d6c4f,0xb93f05dd,0x180b9824,0x779cdff7 +.long 0xae57c7b7,0xbba23fdd,0x1b932522,0x345342f2,0x556d4aa3,0xfd9c80fe,0x6525bb61,0xa03907ba,0xff218933,0x38b010e1,0xaa52117b,0xc066b654,0x94f2e6ea,0x8e141920,0x0d32f2b2,0x66a27dca +.long 0x048b3717,0x69c7f993,0xb178ae1c,0xbf5a989a,0x564f1d6b,0x49fa9058,0xd31fde4e,0x27ec6e15,0x7276e7fc,0x4cce0373,0x89d6bf02,0x64086d79,0x4ccdd979,0x5a72f046,0x47775631,0x909c3566 +.long 0x75dd7125,0x1c07bc6b,0x87a0428d,0xb4c6bc97,0xfdeb6b9d,0x507ece52,0xb2c95432,0xfca56512,0xd0e8bd06,0x15d97181,0xc6bb46ea,0x384dd317,0x3952b624,0x5441ea20,0x4e7dc2fb,0xbcf70dee +.long 0x6628e8c3,0x372b016e,0xb60a7522,0x07a0d667,0x0a344ee2,0xcf05751b,0x118bdeec,0x0ec09a48,0xd83dce46,0x6e4b3d4e,0x99d2fc6e,0x43a6316d,0x56cf044c,0xa99d8989,0xae3e5fb7,0x7c7f4454 +.long 0xfbabbe92,0xb2e6b121,0xe1330076,0x281850fb,0x97890015,0x093581ec,0x75ff77f5,0x69b1dded,0xab105105,0x7cf0b18f,0xa89ccfef,0x953ced31,0xeb914009,0x3151f85f,0x88ed48ad,0x3c9f1b87 +.long 0x4a7eadcb,0xc9aba1a1,0x522e71cf,0x928e7501,0x3a2e4f83,0xeaede727,0x1ce3bbd3,0x467e10d1,0xb955dcf0,0xf3442ac3,0xd3d5e527,0xba96307d,0xfd77f474,0xf763a10e,0x6a6e1ff0,0x5d744bd0 +.long 0xa777899e,0xd287282a,0xd03f3cde,0xe20eda8f,0x50b07d31,0x6a7e75bb,0x6f379de4,0x0b7e2a94,0x19f593cf,0x31cb64ad,0x1e76ef1d,0x7b1a9e4f,0xb62d609c,0xe18c9c9d,0xe779a650,0x439bad6d +.long 0xe032f144,0x219d9066,0xe8b2ec6a,0x1db632b8,0xfda12f78,0xff0d0fd4,0x2a25d265,0x56fb4c2d,0x255a03f1,0x5f4e2ee1,0xe96af176,0x61cd6af2,0xd068bc97,0xe0317ba8,0x264b988e,0x927d6bab +.long 0xe90fb21e,0xa18f07e0,0xbba7fca1,0x00fd2b80,0x95cd67b5,0x20387f27,0xd39707f7,0x5b89a4e7,0x894407ce,0x8f83ad3f,0x6c226132,0xa0025b94,0xf906c13b,0xc79563c7,0x4e7bb025,0x5f548f31 +.long 0xeac6d113,0x2b4c6b8f,0x0e813c76,0xa67e3f9c,0x3fe1f4b9,0x3982717c,0x26d8050e,0x58865819,0xf7f06f20,0x99f3640c,0x2a66ebc2,0xdc610216,0x767a1e08,0x52f2c175,0x5999871b,0x05660e1a +.long 0x6d3c4693,0x6b0f1762,0x37ed7bea,0xf0e7d627,0xb75b226d,0xc51758c7,0x1f91613b,0x40a88628,0xbbb38ce0,0x889dbaa7,0xbddcad81,0xe0404b65,0x8bc9671f,0xfebccd3a,0xee1f5375,0xfbf9a357 +.long 0x28f33398,0x5dc169b0,0x72e90f65,0xb07ec11d,0xfaab1eb1,0xae7f3b4a,0x5f17538a,0xd970195e,0x0181e640,0x52b05cbe,0x2643313d,0xf5debd62,0x5df31f82,0x76148154,0x3a9e13c5,0x23e03b33 +.long 0x4fde0c1f,0xff758949,0xe5b6ec20,0xbf8a1abe,0x87e1db6c,0x702278fb,0x35ed658f,0xc447ad7a,0x03d0ccf2,0x48d4aa38,0x819a7c03,0x80acb338,0x6e17cecc,0x9bc7c89e,0x03be1d82,0x46736b8b +.long 0xc0432f96,0xd65d7b60,0xdeb5442f,0xddebe7a3,0x7dff69a2,0x79a25307,0x02cf3122,0x37a56d94,0xf2350d0a,0x8bab8aed,0x037b0d9a,0x13c3f276,0x44c65cae,0xc664957c,0xc2e71a88,0x88b44089 +.long 0x5cb02664,0xdb88e5a3,0x8686c72e,0x5d4c0bf1,0xa682d53e,0xea3d9b62,0x0b2ad431,0x9b605ef4,0xc69645d0,0x71bac202,0x6a1b66e7,0xa115f03a,0x158f4dc4,0xfe2c563a,0x4d12a78c,0xf715b3a0 +.long 0xd413213a,0x8f7f0a48,0xc04becdb,0x2035806d,0x5d8587f5,0xecd34a99,0x9f6d3a71,0x4d8c3079,0x8d95a8f6,0x1b2a2a67,0xf2110d0d,0xc58c9d7d,0xcf8fba3f,0xdeee81d5,0x0c7cdf68,0xa42be3c0 +.long 0xd43b5eaa,0x2126f742,0xdfa59b85,0x054a0766,0x126bfd45,0x9d0d5e36,0x384f8a8f,0xa1f8fbd7,0xd563fccc,0x317680f5,0xf280a928,0x48ca5055,0x27b578cf,0xe00b81b2,0x2994a514,0x10aad918 +.long 0xb7bdc953,0xd9e07b62,0x5bc086dd,0x9f0f6ff2,0x655eee77,0x09d1ccff,0x5bef7df1,0x45475f79,0x86f702cc,0x3faa28fa,0x0f021f07,0x92e60905,0x7f8fa8c6,0xe9e62968,0xf036ea2c,0xbd71419a +.long 0x6028da9a,0x171ee1cc,0xc251f573,0x5352fe1a,0x3fa997f4,0xf8ff236e,0xa5749d5f,0xd831b6c9,0xe350e2c2,0x7c872e1d,0x1e0ce403,0xc56240d9,0x6974f5cb,0xf9deb077,0x961c3728,0x7d50ba87 +.long 0x5a3a2518,0xd6f89426,0xc6303d43,0xcf817799,0x619e5696,0x510a0471,0x3a5e307b,0xab049ff6,0xfeb13ec7,0xe4cdf9b0,0x9d8ff90c,0xd5e97117,0x9afa96af,0xf6f64d06,0x9d2012a2,0x00d0bf5e +.long 0x358bcdc0,0xe63f301f,0x0a9d47f8,0x07689e99,0x4f43d43a,0x1f689e2f,0x90920904,0x4d542a16,0x9ca0a707,0xaea293d5,0x8ac68065,0xd061fe45,0x0090008c,0x1033bf1b,0xc08a6db6,0x29749558 +.long 0xc1d5d034,0x74b5fc59,0x67e215e0,0xf712e9f6,0x860200e6,0xfd520cbd,0x3ea22588,0x0229acb4,0xfff0c82e,0x9cd1e14c,0x59c69e73,0x87684b62,0x96ccb989,0xda85e61c,0xa3d06493,0x2d5dbb02 +.long 0xe86b173c,0xf22ad33a,0xa79ff0e3,0xe8e41ea5,0xdd0d0c10,0x01d2d725,0x032d28f9,0x31f39088,0x7829839e,0x7b3f71e1,0x4502ae58,0x0cf691b4,0xbefc6115,0xef658dbd,0xb3ab5314,0xa5cd6ee5 +.long 0x5f1d2347,0x206c8d7b,0x4cc2253a,0x794645ba,0x58389e08,0xd517d8ff,0x9f847288,0x4fa20dee,0xd797770a,0xeba072d8,0xbf429e26,0x7360c91d,0x80af8279,0x7200a3b3,0x82dadce3,0x6a1c9150 +.long 0xc35d8794,0x0ee6d3a7,0x0356bae5,0x042e6558,0x643322fd,0x9f59698d,0x50a61967,0x9379ae15,0xfcc9981e,0x64b9ae62,0x6d2934c6,0xaed3d631,0x5e4e65eb,0x2454b302,0xf9950428,0xab09f647 +.long 0x22248acc,0xb2083a12,0x3264e366,0x1f6ec0ef,0x5afdee28,0x5659b704,0xe6430bb5,0x7a823a40,0xe1900a79,0x24592a04,0xc9ee6576,0xcde09d4a,0x4b5ea54a,0x52b6463f,0xd3ca65a7,0x1efe9ed3 +.long 0x305406dd,0xe27a6dbe,0xdd5d1957,0x8eb7dc7f,0x387d4d8f,0xf54a6876,0xc7762de4,0x9c479409,0x99b30778,0xbe4d5b5d,0x6e793682,0x25380c56,0xdac740e3,0x602d37f3,0x1566e4ae,0x140deabe +.long 0xafd32acf,0x4481d067,0xe1f71ccf,0xd8f0fcca,0xb596f2da,0xd208dd0c,0x9aad93f9,0xd049d730,0x42ab580e,0xc79f263d,0x23f707b4,0x09411bb1,0x835e0eda,0x8cfde1ff,0x90f03402,0x72707490 +.long 0xc49a861e,0xeaee6126,0xe14f0d06,0x024f3b65,0xc69bfc17,0x51a3f1e8,0xa7686381,0xc3c3a8e9,0xb103d4c8,0x3400752c,0x9218b36b,0x02bc4613,0x7651504a,0xc67f75eb,0xd02aebfa,0xd6848b56 +.long 0xc30fa92b,0xbd9802e6,0x9a552784,0x5a70d96d,0x3f83169b,0x9085c4ea,0x06908228,0xfa9423bb,0xfe97a5b9,0x2ffebe12,0x71b99118,0x85da6049,0x63178846,0x9cbc2f7f,0x9153218e,0xfd96bc70 +.long 0x1782269b,0x958381db,0x2597e550,0xae34bf79,0x5f385153,0xbb5c6064,0xe3088048,0x6f0e96af,0x77884456,0xbf6a0215,0x69310ea7,0xb3b5688c,0x04fad2de,0x17c94295,0x17896d4d,0xe020f0e5 +.long 0x0976505f,0x730ba0ab,0x095e2ec5,0x567f6813,0x6331ab71,0x47062010,0x41d22b9f,0x72cfa977,0x8a2373da,0x33e55ead,0x7ba45a68,0xa8d0d5f4,0x03029d15,0xba1d8f9c,0xfc55b9f3,0x8f34f1cc +.long 0xbbe5a1a9,0xcca4428d,0x3126bd67,0x8187fd5f,0x48105826,0x0036973a,0xb8bd61a0,0xa39b6663,0x2d65a808,0x6d42deef,0x94636b19,0x4969044f,0xdd5d564c,0xf611ee47,0xd2873077,0x7b2f3a49 +.long 0x300eb294,0x94157d45,0x169c1494,0x2b2a656e,0xd3a47aa9,0xc000dd76,0xa6243ea4,0xa2864e4f,0xdb89842e,0x82716c47,0x61479fb7,0x12dfd7d7,0xe0b2f6dc,0x3b9a2c56,0xd7f85d67,0x46be862a +.long 0x0f82b214,0x03b0d8dd,0xf103cbc6,0x460c34f9,0x18d79e19,0xf32e5c03,0xa84117f8,0x8b8888ba,0xc0722677,0x8f3c37dc,0x1c1c0f27,0x10d21be9,0xe0f7a0c6,0xd47c8468,0xadecc0e0,0x9bf02213 +.long 0x42b48b99,0x0baa7d12,0x48424096,0x1bcb665d,0xebfb5cfb,0x8b847cd6,0x9ad4d10d,0x87c2ae56,0x0de36726,0xf1cbb122,0x3fdfbd21,0xe7043c68,0x4e79d460,0x4bd0826a,0x4bd1a2cb,0x11f5e598 +.long 0xb7fe7b6e,0x97554160,0x400a3fb2,0x7d16189a,0xe328ca1e,0xd73e9bea,0xe793d8cc,0x0dd04b97,0x506db8cc,0xa9c83c9b,0xcf38814c,0x5cd47aae,0xb64b45e6,0x26fc430d,0xd818ea84,0x079b5499 +.long 0xc1c24a3b,0xebb01102,0x1c161c1a,0xca24e568,0x36f00a4a,0x103eea69,0x76176c7b,0x9ad76ee8,0x538e0ff7,0x97451fc2,0x6604b3b0,0x94f89809,0x3249cfd7,0x6311436e,0x41224f69,0x27b4a7bd +.long 0xe0ac2941,0x03b5d21a,0xc2d31937,0x279b0254,0xcac992d0,0x3307c052,0xefa8b1f3,0x6aa7cb92,0x0d37c7a5,0x5a182580,0x342d5422,0x13380c37,0xd5d2ef92,0x92ac2d66,0x030c63c6,0x035a70c9 +.long 0x4ce4f152,0xc16025dd,0xf9df7c06,0x1f419a71,0x91e4bb14,0x6d5b2214,0x839fb4ce,0xfc43c6cc,0x925d6b2d,0x49f06591,0x62186598,0x4b37d9d3,0xd01b1629,0x8c54a971,0x51d50e05,0xe1a9c29f +.long 0x71ba1861,0x5109b785,0xd0c8f93d,0x48b22d5c,0x8633bb93,0xe8fa84a7,0x5aebbd08,0x53fba6ba,0xe5eea7d8,0x7ff27df3,0x68ca7158,0x521c8796,0xce6f1a05,0xb9d5133b,0xfd0ebee4,0x2d50cd53 +.long 0xc5a3ef16,0xc82115d6,0xba079221,0x993eff9d,0x4b5da81c,0xe4da2c5e,0x8033fd85,0x9a89dbdb,0x2b892891,0x60819ebf,0x5d14a4d5,0x53902b21,0xd7fda421,0x6ac35051,0x61c83284,0xcc6ab885 +.long 0xf74cff17,0x14eba133,0xecb813f2,0x240aaa03,0x6f665bee,0xcfbb6540,0xa425ad73,0x084b1fe4,0xd081f6a6,0x009d5d16,0xeef82c90,0x35304fe8,0xaa9eaa22,0xf20346d5,0xac1c91e3,0x0ada9f07 +.long 0x968a6144,0xa6e21678,0x07b31a1e,0x54c1f77c,0x5781fbe1,0xd6bb787e,0xe31f1c4a,0x61bd2ee0,0x781105fc,0xf25aa1e9,0x7b2f8e80,0x9cf2971f,0xcdff919b,0x26d15412,0x34bc896e,0x01db4ebe +.long 0xb40df1cf,0x7d9b3e23,0x94e971b4,0x59337373,0x669cf921,0xbf57bd14,0x0c1a1064,0x865daedf,0x83279125,0x3eb70bd3,0x34ecdaab,0xbc3d5b9f,0x5f755caf,0x91e3ed7e,0xd41e6f02,0x49699f54 +.long 0xd4a7a15b,0x185770e1,0xeaac87e7,0x08f3587a,0x473133ea,0x352018db,0x04fd30fc,0x674ce719,0x088b3e0e,0x7b8d9835,0x5d0d47a1,0x7a0356a9,0x6474a3c4,0x9d9e7659,0xff66966c,0x61ea48a7 +.long 0x0f3e4834,0x30417758,0x17a9afcb,0xfdbb21c2,0x2f9a67b3,0x756fa17f,0xa245c1a8,0x2a6b2421,0x4af02291,0x64be2794,0x2a5804fe,0xade465c6,0xa6f08fd7,0x8dffbd39,0xaa14403b,0xc4efa84c +.long 0x442b0f5c,0xa1b91b2a,0xcf997736,0xb748e317,0xcee90e16,0x8d1b62bf,0x0b2078c0,0x907ae271,0x0c9bcddd,0xdf31534b,0x39adce83,0x043fb054,0xd826846a,0x99031043,0xb144f393,0x61a9c0d6 +.long 0x47718427,0xdab48046,0x6e830f8b,0xdf17ff9b,0xe49a1347,0x408d7ee8,0x91c1d4ae,0x6ac71e23,0x1defd73c,0xc8cbb9fd,0xbbbbfec5,0x19840657,0x9e7ef8ea,0x39db1cb5,0x64105f30,0x78aa8296 +.long 0xa3738c29,0xa3d9b7f0,0xbc3250a3,0x0a2f235a,0x445e4caf,0x55e506f6,0x33475f7a,0x0974f73d,0x5ba2f5a8,0xd37dbba3,0x6af40066,0x542c6e63,0xc5d73e2c,0x26d99b53,0x6c3ca33e,0x06060d7d +.long 0x065fef4a,0xcdbef1c2,0xfd5b92e3,0x77e60f7d,0x26708350,0xd7c549f0,0x34f121bf,0x201b3ad0,0x0334fc14,0x5fcac2a1,0x344552f6,0x8a9a9e09,0x97653082,0x7dd8a1d3,0x79d4f289,0x5fc0738f +.long 0x17d2d8c3,0x787d244d,0x70830684,0xeffc6345,0xe4f73ae5,0x5ddb96dd,0x172549a5,0x8efb14b1,0x2245ae7a,0x6eb73eee,0xea11f13e,0xbca4061e,0x30b01f5d,0xb577421d,0x782e152c,0xaa688b24 +.long 0xbd3502ba,0x67608e71,0xb4de75a0,0x4ef41f24,0xfd6125e5,0xb08dde5e,0xa409543f,0xde484825,0x65cc2295,0x1f198d98,0x6e0edfa2,0x428a3771,0xadf35fc7,0x4f9697a2,0xf7cac3c7,0x01a43c79 +.long 0x0fd3659a,0xb05d7059,0xbb7f2d9a,0x8927f30c,0x8cf984d3,0x4023d1ac,0x02897a45,0x32125ed3,0x3d414205,0xfb572dad,0xe3fa82a9,0x73000ef2,0xf10a5581,0x4c0868e9,0x6b0b3ca5,0x5b61fc67 +.long 0x7cae440c,0xc1258d5b,0x402b7531,0x21c08b41,0xde932321,0xf61a8955,0x2d1408af,0x3568faf8,0x9ecf965b,0x71b15e99,0xe917276f,0xf14ed248,0x820cf9e2,0xc6f4caa1,0x18d83c7e,0x681b20b2 +.long 0xc6c01120,0x6cde738d,0xae70e0db,0x71db0813,0x74afe18c,0x95fc0644,0x129e2be7,0x34619053,0xdb2a3b15,0x80615cea,0xdb4c7073,0x0a49a19e,0x8fd2d367,0x0e1b84c8,0x033fb8aa,0xd74bf462 +.long 0x533ef217,0x889f6d65,0xc3ca2e87,0x7158c7e4,0xdc2b4167,0xfb670dfb,0x844c257f,0x75910a01,0xcf88577d,0xf336bf07,0xe45e2ace,0x22245250,0x7ca23d85,0x2ed92e8d,0x2b812f58,0x29f8be4c +.long 0x076fe12b,0xdd9ebaa7,0xae1537f9,0x3f2400cb,0x17bdfb46,0x1aa93528,0x67883b41,0xc0f98430,0x0170911d,0x5590ede1,0x34d4b17f,0x7562f5bb,0x1826b8d2,0xe1fa1df2,0x6bd80d59,0xb40b796a +.long 0x3467ba92,0xd65bf197,0xf70954b0,0x8c9b46db,0x0e78f15d,0x97c8a0f3,0x85a4c961,0xa8f3a69a,0x61e4ce9b,0x4242660f,0x6ea6790c,0xbf06aab3,0xec986416,0xc6706f8e,0x9a9fc225,0x9e56dec1 +.long 0x9a9898d9,0x527c46f4,0x5633cdef,0xd799e77b,0x7d9e4297,0x24eacc16,0x6b1cb734,0xabb61cea,0xf778443c,0xbee2e8a7,0x29de2fe6,0x3bb42bf1,0x3003bb6f,0xcbed86a1,0xd781cdf6,0xd3918e6c +.long 0x9a5103f1,0x4bee3271,0xf50eac06,0x5243efc6,0x6adcc119,0xb8e122cb,0xc0b80a08,0x1b7faa84,0x6dfcd08c,0x32c3d1bd,0x0be427de,0x129dec4e,0x1d263c83,0x98ab679c,0xcef64eff,0xafc83cb7 +.long 0x2fa6be76,0x85eb6088,0x1328cbfe,0x892585fb,0xcf618dda,0xc154d3ed,0x3abaf26e,0xc44f601b,0x2be1fdfd,0x7bf57d0b,0x21137fee,0xa833bd2d,0x2db591a8,0x9353af36,0x5562a056,0xc76f26dc +.long 0x3fdf5a51,0x1d87e47d,0x55c9cab0,0x7afb5f93,0x89e0586e,0x91bbf58f,0x0d843709,0x7c72c018,0x99b5c3dc,0xa9a5aafb,0x3844aeb0,0xa48a0f1d,0xb667e482,0x7178b7dd,0x6e23a59a,0x453985e9 +.long 0x01b25dd8,0x4a54c860,0xfb897c8a,0x0dd37f48,0x0ea90cd9,0x5f8aa610,0x16d5830d,0xc8892c68,0xef514ca5,0xeb4befc0,0xe72c9ee6,0x478eb679,0xdbc40d5f,0x9bca20da,0xdde4f64a,0xf015de21 +.long 0xeaf4b8a5,0xaa6a4de0,0x4bc60e32,0x68cfd9ca,0x7fd15e70,0x668a4b01,0xf27dc09d,0xd9f0694a,0xba708bcd,0xf6c3cad5,0x5bb95c2a,0x5cd2ba69,0x33c0a58f,0xaa28c1d3,0xabc77870,0x23e274e3 +.long 0xdfd20a4a,0x44c3692d,0x81a66653,0x091c5fd3,0x09a0757d,0x6c0bb691,0x667343ea,0x9072e8b9,0x80848bec,0x31d40eb0,0x79fd36cc,0x95bd480a,0x65ed43f5,0x01a77c61,0x2e0d40bf,0xafccd127 +.long 0x1cc1884b,0xeccfc82d,0x5d4753b4,0xc85ac201,0x658e099f,0xc7a6caac,0x04b27390,0xcf46369e,0x506467ea,0xe2e7d049,0x37cdeccc,0x481b63a2,0xed80143a,0x4029abd8,0xbcb00b88,0x28bfe3c7 +.long 0x0643d84a,0x3bec1009,0xabd11041,0x885f3668,0xf83a34d6,0xdb02432c,0x719ceebe,0x32f7b360,0xdad1fe7a,0xf06c7837,0x5441a0b0,0x60a157a9,0xe2d47550,0x704970e9,0x271b9020,0xcd2bd553 +.long 0x33e24a0b,0xff57f82f,0xf2565079,0x9cbee23f,0xeb5f5825,0x16353427,0xe948d662,0x276feec4,0xda10032b,0xd1b62bc6,0xf0e72a53,0x718351dd,0x2420e7ba,0x93452076,0x3a00118d,0x96368fff +.long 0x150a49e4,0x00ce2d26,0x3f04706b,0x0c28b636,0x58b196d0,0xbad65a46,0xec9f8b7c,0x6c8455fc,0x2d71867e,0xe90c895f,0xedf9f38c,0x5c0be31b,0xd8f6ec04,0x2a37a15e,0x8cd85251,0x239639e7 +.long 0x9c7c4c6b,0xd8975315,0xd7409af7,0x603aa3c0,0x007132fb,0xb8d53d0c,0xa6849238,0x68d12af7,0xbf5d9279,0xbe0607e7,0xaada74ce,0x9aa50055,0xba7e8ccb,0xe81079cb,0xa5f4ff5e,0x610c71d1 +.long 0x5aa07093,0x9e2ee1a7,0xa75da47c,0xca84004b,0x3de75401,0x074d3951,0xbb311592,0xf938f756,0x00a43421,0x96197618,0x07bc78c8,0x39a25362,0x0a171276,0x278f710a,0x8d1a8f08,0xb28446ea +.long 0xe3b6a661,0x184781bf,0xe6d279f7,0x7751cb1d,0xc59eb662,0xf8ff95d6,0x58d3dea7,0x186d90b7,0xdfb4f754,0x0e4bb6c1,0x2b2801dc,0x5c5cf56b,0x1f54564d,0xc561e452,0xf0dd7f13,0xb4fb8c60 +.long 0x33ff98c7,0xf8849630,0xcf17769c,0x9619fffa,0x1bfdd80a,0xf8090bf6,0x422cfe63,0x14d9a149,0x6f6df9ea,0xb354c360,0x218f17ea,0xdbcf770d,0x79eb3480,0x207db7c8,0x559b6a26,0x213dbda8 +.long 0x29fc81b3,0xac4c200b,0x171d87c1,0xebc3e09f,0x1481aa9e,0x91799530,0x92e114fa,0x051b92e1,0xecb5537f,0xdf8f92e9,0x290c7483,0x44b1b2cc,0x2adeb016,0xa711455a,0x81a10c2c,0x964b6856 +.long 0xcec03623,0x4f159d99,0xef3271ea,0x05532225,0xc5ee4849,0xb231bea3,0x7094f103,0x57a54f50,0x9598b352,0x3e2d421d,0x67412ab4,0xe865a49c,0x1cc3a912,0xd2998a25,0x0c74d65d,0x5d092808 +.long 0x4088567a,0x73f45908,0x1f214a61,0xeb6b280e,0xcaf0c13d,0x8c9adc34,0xf561fb80,0x39d12938,0xbc6edfb4,0xb2dc3a5e,0xfe4d210e,0x7485b1b1,0xe186ae72,0x062e0400,0x6eeb3b88,0x91e32d5c +.long 0x4be59224,0x6df574d7,0x716d55f3,0xebc88ccc,0xcad6ed33,0x26c2e6d0,0x0d3e8b10,0xc6e21e7d,0x5bcc36bb,0x2cc5840e,0x7da74f69,0x9292445e,0x4e5193a8,0x8be8d321,0x8df06413,0x3ec23629 +.long 0xb134defa,0xc7e9ae85,0x1bb2d475,0x6073b1d0,0x2863c00d,0xb9ad615e,0x525f4ac4,0x9e29493d,0x4e9acf4f,0xc32b1dea,0xa50db88d,0x3e1f01c8,0x04da916c,0xb05d70ea,0xd865803e,0x714b0d0a +.long 0x9920cb5e,0x4bd493fc,0x92c7a3ac,0x5b44b1f7,0xbcec9235,0xa2a77293,0xcd378553,0x5ee06e87,0xda621607,0xceff8173,0x99f5d290,0x2bb03e4c,0xa6f734ac,0x2945106a,0xd25c4732,0xb5056604 +.long 0xe079afee,0x5945920c,0x6789831f,0x686e17a0,0xb74a5ae5,0x5966bee8,0x1e258d46,0x38a673a2,0x83141c95,0xbd1cc1f2,0x0e96e486,0x3b2ecf4f,0x74e5fc78,0xcd3aa896,0x2482fa7a,0x415ec10c +.long 0x80503380,0x15234419,0xd314b392,0x513d917a,0x63caecae,0xb0b52f4e,0x2dc7780b,0x07bf22ad,0xe4306839,0xe761e8a1,0x5dd7feaa,0x1b3be962,0x74c778f1,0x4fe728de,0x5e0070f6,0xf1fa0bda +.long 0x6ec3f510,0x85205a31,0xd2980475,0x2c7e4a14,0x6f30ebfd,0xde3c19c0,0xd4b7e644,0xdb1c1f38,0x5dce364a,0xfe291a75,0x058f5be3,0xb7b22a3c,0x37fea38c,0x2cd2c302,0x2e17be17,0x2930967a +.long 0x0c061c65,0x87f009de,0xedc6ed44,0xcb014aac,0x3bafb1eb,0x49bd1cb4,0x282d3688,0x81bd8b5c,0xf01a17af,0x1cdab87e,0xe710063b,0x21f37ac4,0x42fc8193,0x5a6c5676,0x56a6015c,0xf4753e70 +.long 0xa15b0a44,0x020f795e,0x8958a958,0x8f37c8d7,0xa4b675b5,0x63b7e89b,0x0fc31aea,0xb4fb0c0c,0xa7ff1f2e,0xed95e639,0x619614fb,0x9880f5a3,0x947151ab,0xdeb6ff02,0xa868dcdb,0x5bc5118c +.long 0x4c20cea5,0xd8da2055,0x14c4d69a,0xcac2776e,0x622d599b,0xcccb22c1,0x68a9bb50,0xa4ddb653,0x1b4941b4,0x2c4ff151,0x6efba588,0xe1ff19b4,0xc48345e0,0x35034363,0x1e29dfc4,0x45542e3d +.long 0x349f7aed,0xf197cb91,0x8fca8420,0x3b2b5a00,0x23aaf6d8,0x7c175ee8,0x35af32b6,0x54dcf421,0x27d6561e,0x0ba14307,0xd175b1e2,0x879d5ee4,0x99807db5,0xc7c43673,0x9cd55bcd,0x77a54455 +.long 0x0105c072,0xe6c2ff13,0x8dda7da4,0x18f7a99f,0x0e2d35c1,0x4c301820,0xd9cc6c82,0x06a53ca0,0xf1aa1d9e,0xaa21cc1e,0x4a75b1e8,0x32414334,0x0ebe9fdc,0x2a6d1328,0x98a4755a,0x16bd173f +.long 0x2133ffd9,0xfbb9b245,0x830f1a20,0x39a8b2f1,0xd5a1f52a,0x484bc97d,0xa40eddf8,0xd6aebf56,0x76ccdac6,0x32257acb,0x1586ff27,0xaf4d36ec,0xf8de7dd1,0x8eaa8863,0x88647c16,0x0045d5cf +.long 0xc005979d,0xa6f3d574,0x6a40e350,0xc2072b42,0x8de2ecf9,0xfca5c156,0xa515344e,0xa8c8bf5b,0x114df14a,0x97aee555,0xfdc5ec6b,0xd4374a4d,0x2ca85418,0x754cc28f,0xd3c41f78,0x71cb9e27 +.long 0x03605c39,0x89105079,0xa142c96c,0xf0843d9e,0x16923684,0xf3744934,0xfa0a2893,0x732caa2f,0x61160170,0xb2e8c270,0x437fbaa3,0xc32788cc,0xa6eda3ac,0x39cd818e,0x9e2b2e07,0xe2e94239 +.long 0x0260e52a,0x6967d39b,0x90653325,0xd42585cc,0x21ca7954,0x0d9bd605,0x81ed57b3,0x4fa20877,0xe34a0bbe,0x60c1eff8,0x84f6ef64,0x56b0040c,0xb1af8483,0x28be2b24,0xf5531614,0xb2278163 +.long 0x5922ac1c,0x8df27545,0xa52b3f63,0xa7b3ef5c,0x71de57c4,0x8e77b214,0x834c008b,0x31682c10,0x4bd55d31,0xc76824f0,0x17b61c71,0xb6d1c086,0xc2a5089d,0x31db0903,0x184e5d3f,0x9c092172 +.long 0xc00cc638,0xdd7ced5b,0x61278fc2,0x1a2015eb,0x6a37f8d6,0x2e8e5288,0xe79933ad,0xc457786f,0x2c51211a,0xb3fe4cce,0x24c20498,0xad9b10b2,0xd28db5e5,0x90d87a4f,0x3aca2fc3,0x698cd105 +.long 0xe91b536d,0x4f112d07,0x9eba09d6,0xceb982f2,0x197c396f,0x3c157b2c,0x7b66eb24,0xe23c2d41,0x3f330d37,0x480c57d9,0x79108deb,0xb3a4c8a1,0xcb199ce5,0x702388de,0xb944a8d4,0x0b019211 +.long 0x840bb336,0x24f2a692,0xa669fa7b,0x7c353bdc,0xdec9c300,0xda20d6fc,0xa13a4f17,0x625fbe2f,0xdbc17328,0xa2b1b61a,0xa9515621,0x008965bf,0xc620ff46,0x49690939,0x8717e91c,0x182dd27d +.long 0xea6c3997,0x5ace5035,0xc2610bef,0x54259aaa,0x3c80dd39,0xef18bb3f,0x5fc3fa39,0x6910b95b,0x43e09aee,0xfce2f510,0xa7675665,0xced56c9f,0xd872db61,0x10e265ac,0xae9fce69,0x6982812e +.long 0xce800998,0x29be11c6,0xb90360d9,0x72bb1752,0x5a4ad590,0x2c193197,0x9fc1dbc0,0x2ba2f548,0xe490ebe0,0x7fe4eebb,0x7fae11c0,0x12a0a4cd,0xe903ba37,0x7197cf81,0xde1c6dd8,0xcf7d4aa8 +.long 0x3fd5684c,0x92af6bf4,0x80360aa1,0x2b26eecf,0x00546a82,0xbd960f30,0xf59ad8fe,0x407b3c43,0x249c82ba,0x86cae5fe,0x2463744c,0x9e0faec7,0x94916272,0x87f551e8,0x6ceb0615,0x033f9344 +.long 0x8be82e84,0x1e5eb0d1,0x7a582fef,0x89967f0e,0xa6e921fa,0xbcf687d5,0xd37a09ba,0xdfee4cf3,0xb493c465,0x94f06965,0x7635c030,0x638b9a1c,0x66f05e9f,0x76667864,0xc04da725,0xccaf6808 +.long 0x768fccfc,0xca2eb690,0xb835b362,0xf402d37d,0xe2fdfcce,0x0efac0d0,0xb638d990,0xefc9cdef,0xd1669a8b,0x2af12b72,0x5774ccbd,0x33c536bc,0xfb34870e,0x30b21909,0x7df25aca,0xc38fa2f7 +.long 0xbf81f3f5,0x74c5f02b,0xaf7e4581,0x0525a5ae,0x433c54ae,0x88d2aaba,0x806a56c5,0xed9775db,0xc0edb37d,0xd320738a,0x66cc1f51,0x25fdb6ee,0x10600d76,0xac661d17,0xbdd1ed76,0x931ec1f3 +.long 0x19ee43f1,0x65c11d62,0x60829d97,0x5cd57c3e,0x984be6e8,0xd26c91a3,0x8b0c53bd,0xf08d9309,0xc016e4ea,0x94bc9e5b,0x11d43d2b,0xd3916839,0x73701155,0x886c5ad7,0x20b00715,0xe0377626 +.long 0xaa80ba59,0x7f01c9ec,0x68538e51,0x3083411a,0xe88128af,0x970370f1,0x91dec14b,0x625cc3db,0x01ac3107,0xfef9666c,0xd5057ac3,0xb2a8d577,0x92be5df7,0xb0f26299,0x00353924,0xf579c8e5 +.long 0x1341ed7a,0xb8fa3d93,0xa7b59d49,0x4223272c,0x83b8c4a4,0x3dcb1947,0xed1302e4,0x4e413c01,0xe17e44ce,0x6d999127,0x33b3adfb,0xee86bf75,0x25aa96ca,0xf6902fe6,0xe5aae47d,0xb73540e4 +.long 0x1b4a158c,0x32801d7b,0x27e2a369,0xe571c99e,0x10d9f197,0x40cb76c0,0x3167c0ae,0xc308c289,0xeb7958f2,0xa6ef9dd3,0x300879b1,0xa7226dfc,0x7edf0636,0x6cd0b362,0x7bc37eed,0x4efbce6c +.long 0x8d699021,0x75f92a05,0x772566e3,0x586d4c79,0x761ad23a,0x378ca5f1,0x1465a8ac,0x650d86fc,0x842ba251,0x7a4ed457,0x42234933,0x6b65e3e6,0x31aad657,0xaf1543b7,0xcbfec369,0xa4cefe98 +.long 0x9f47befb,0xb587da90,0x41312d13,0x6562e9fb,0xeff1cefe,0xa691ea59,0x05fc4cf6,0xcc30477a,0x0b0ffd3d,0xa1632461,0x5b355956,0xa1f16f3b,0x4224ec24,0x5b148d53,0xf977012a,0xdc834e7b +.long 0xb2c69dbc,0x7bfc5e75,0x03c3da6c,0x3aa77a29,0xca910271,0xde0df03c,0x7806dc55,0xcbd5ca4a,0x6db476cb,0xe1ca5807,0x5f37a31e,0xfde15d62,0xf41af416,0xf49af520,0x7d342db5,0x96c5c5b1 +.long 0xeb4ceb9b,0x155c43b7,0x4e77371a,0x2e993010,0x675d43af,0x1d2987da,0x8599fd72,0xef2bc1c0,0x9342f6b2,0x96894b7b,0x7c8e71f0,0x201eadf2,0x4a1f3efc,0xf3479d9f,0x702a9704,0xe0f8a742 +.long 0xb3eba40c,0xeafd44b6,0xc1c1e0d0,0xf9739f29,0x619d505e,0x0091471a,0x9d7c263e,0xc15f9c96,0x83afbe33,0x5be47285,0x04f1e092,0xa3b6d6af,0x751a9d11,0xe76526b9,0x9a4ae4d2,0x2ec5b26d +.long 0x02f6fb8d,0xeb66f4d9,0x96912164,0x4063c561,0x80ef3000,0xeb7050c1,0xeaa5b3f0,0x288d1c33,0x07806fd8,0xe87c68d6,0x4bbbf50f,0xb2f7f9d5,0xac8d6627,0x25972f3a,0x10e8c13b,0xf8547774 +.long 0x872b4a60,0xcc50ef6c,0x4613521b,0xab2a34a4,0x983e15d1,0x39c5c190,0x59905512,0x61dde5df,0x9f2275f3,0xe417f621,0x451d894b,0x0750c8b6,0x78b0bdaa,0x75b04ab9,0x458589bd,0x3bfd9fd4 +.long 0xee9120b6,0xf1013e30,0x23a4743e,0x2b51af93,0x48d14d9e,0xea96ffae,0x698a1d32,0x71dc0dbe,0x0180cca4,0x914962d2,0xc3568963,0x1ae60677,0x437bc444,0x8cf227b1,0xc9962c7a,0xc650c83b +.long 0xfe7ccfc4,0x23c2c7dd,0x1b929d48,0xf925c89d,0x06783c33,0x4460f74b,0xa590475a,0xac2c8d49,0xb807bba0,0xfb40b407,0x69ff8f3a,0x9d1e362d,0xcbef64a4,0xa33e9681,0x332fb4b2,0x67ece5fa +.long 0x739f10e3,0x6900a99b,0xff525925,0xc3341ca9,0xa9e2d041,0xee18a626,0x29580ddd,0xa5a83685,0x9d7de3cd,0xf3470c81,0x2062cf9c,0xedf02586,0xc010edb0,0xf43522fa,0x13a4b1ae,0x30314135 +.long 0xdb22b94b,0xc792e02a,0xa1eaa45b,0x993d8ae9,0xcd1e1c63,0x8aad6cd3,0xc5ce688a,0x89529ca7,0xe572a253,0x2ccee3aa,0x02a21efb,0xe02b6438,0xc9430358,0xa7091b6e,0x9d7db504,0x06d1b1fa +.long 0xc4744733,0x58846d32,0x379f9e34,0x40517c71,0x130ef6ca,0x2f65655f,0xf1f3503f,0x526e4488,0x7ee4a976,0x8467bd17,0x921363d1,0x1d9dc913,0xb069e041,0xd8d24c33,0x2cdf7f51,0x5eb5da0a +.long 0x197b994f,0x1c0f3cb1,0x2843eae9,0x3c95a6c5,0xa6097ea5,0x7766ffc9,0xd723b867,0x7bea4093,0x4db378f9,0xb48e1f73,0xe37b77ac,0x70025b00,0xaf24ad46,0x943dc8e7,0x16d00a85,0xb98a15ac +.long 0x2743b004,0x3adc38ba,0x334415ee,0xb1c7f4f7,0x1e62d05a,0xea43df8f,0x9d76a3b6,0x32618905,0xa23a0f46,0x2fbd0bb5,0x6a01918c,0x5bc971db,0xb4743f94,0x7801d94a,0x676ae22b,0xb94df65e +.long 0xaf95894c,0xaafcbfab,0x276b2241,0x7b9bdc07,0x5bdda48b,0xeaf98362,0xa3fcb4df,0x5977faf2,0x052c4b5b,0xbed042ef,0x067591f0,0x9fe87f71,0x22f24ec7,0xc89c73ca,0xe64a9f1b,0x7d37fa9e +.long 0x15562627,0x2710841a,0xc243b034,0x2c01a613,0x2bc68609,0x1d135c56,0x8b03f1f6,0xc2ca1715,0x3eb81d82,0xc9966c2d,0x8f6df13e,0xc02abf4a,0x8f72b43b,0x77b34bd7,0x360c82b0,0xaff6218f +.long 0x8d55b9d2,0x0aa5726c,0x99e9bffb,0xdc0adbe9,0xefb9e72a,0x9097549c,0x9dfb3111,0x16755712,0xf26847f9,0xdd8bf984,0xdfb30cb7,0xbcb8e387,0x5171ef9c,0xc1fd32a7,0x389b363f,0x977f3fc7 +.long 0xf4babda0,0x116eaf2b,0xf7113c8e,0xfeab68bd,0xb7def526,0xd1e3f064,0xe0b3fa02,0x1ac30885,0x40142d9d,0x1c5a6e7b,0x30921c0b,0x839b5603,0x36a116a3,0x48f301fa,0xcfd9ee6d,0x380e1107 +.long 0x58854be1,0x7945ead8,0xcbd4d49d,0x4111c12e,0x3a29c2ef,0xece3b1ec,0x8d3616f5,0x6356d404,0x594d320e,0x9f0d6a8f,0xf651ccd2,0x0989316d,0x0f8fdde4,0x6c32117a,0xa26a9bbc,0x9abe5cc5 +.long 0x9723f671,0xcff560fb,0x7f3d593c,0x21b2a12d,0x24ba0696,0xe4cb18da,0xc3543384,0x186e2220,0x88312c29,0x722f64e0,0x17dc7752,0x94282a99,0x5a85ee89,0x62467bbf,0xf10076a0,0xf435c650 +.long 0x43b3a50b,0xc9ff1539,0x1a53efbc,0x7132130c,0xf7b0c5b7,0x31bfe063,0x4ea994cc,0xb0179a7d,0xc85f455b,0x12d064b3,0x8f6e0062,0x47259328,0xb875d6d9,0xf64e590b,0xad92bcc7,0x22dd6225 +.long 0xb9c3bd6d,0xb658038e,0xfbba27c8,0x00cdb0d6,0x1062c45d,0x0c681337,0x2d33407d,0xd8515b8c,0x8cbb5ecf,0xcb8f699e,0xc608d7d8,0x8c4347f8,0xbb3e00db,0x2c11850a,0xecb49d19,0x20a8dafd +.long 0x45ee2f40,0xbd781480,0x416b60cf,0x75e354af,0x8d49a8c4,0xde0b58a1,0xfa359536,0xe40e94e2,0x62accd76,0xbd4fa59f,0x8c762837,0x05cf466a,0x448c277b,0xb5abda99,0x48b13740,0x5a9e01bf +.long 0x326aad8d,0x9d457798,0xc396f7e7,0xbdef4954,0xc253e292,0x6fb274a2,0x1cfe53e7,0x2800bf0a,0x44438fd4,0x22426d31,0x5e259f9a,0xef233923,0x03f66264,0x4188503c,0x7f9fdfab,0x9e5e7f13 +.long 0x5fcc1aba,0x565eb76c,0x59b5bff8,0xea632548,0xaab6d3fa,0x5587c087,0x6ce39c1b,0x92b639ea,0x953b135c,0x0706e782,0x425268ef,0x7308912e,0x090e7469,0x599e92c7,0x9bc35e75,0x83b90f52 +.long 0x244975b3,0x4750b3d0,0x11965d72,0xf3a44358,0x9c8dc751,0x179c6774,0xd23d9ff0,0xff18cdfe,0x2028e247,0xc4013833,0xf3bfbc79,0x96e280e2,0xd0880a84,0xf60417bd,0x2a568151,0x263c9f3d +.long 0x2d2ce811,0x36be15b3,0xf8291d21,0x846dc0c2,0x789fcfdb,0x5cfa0ecb,0xd7535b9a,0x45a0beed,0x96d69af1,0xec8e9f07,0x599ab6dc,0x31a7c5b8,0xf9e2e09f,0xd36d45ef,0xdcee954b,0x3cf49ef1 +.long 0x086cff9b,0x6be34cf3,0x39a3360f,0x88dbd491,0x0dbfbd1d,0x1e96b8cc,0xcb7e2552,0xc1e5f7bf,0x28819d98,0x0547b214,0x7aea9dcb,0xc770dd9c,0x041d68c8,0xaef0d4c7,0x13cb9ba8,0xcc2b9818 +.long 0xfe86c607,0x7fc7bc76,0x502a9a95,0x6b7b9337,0xd14dab63,0x1948dc27,0xdae047be,0x249dd198,0xa981a202,0xe8356584,0x3a893387,0x3531dd18,0xc85c7209,0x1be11f90,0xe2a52b5a,0x93d2fe1e +.long 0xec6d6b97,0x8225bfe2,0xbd0aa5de,0x9cf6d6f4,0x54779f5f,0x911459cb,0x86aeb1f3,0x5649cddb,0x3f26ce5a,0x32133579,0x550f431e,0xc289a102,0x73b84c6f,0x559dcfda,0xee3ac4d7,0x84973819 +.long 0xf2606a82,0xb51e55e6,0x90f2fb57,0xe25f7061,0xb1a4e37c,0xacef6c2a,0x5dcf2706,0x864e359d,0x7ce57316,0x479e6b18,0x3a96b23d,0x2cab2500,0x8ef16df7,0xed489862,0xef3758b5,0x2056538c +.long 0xf15d3101,0xa7df865e,0x61b553d7,0x80c5533a,0x4ed14294,0x366e1997,0xb3c0bcd6,0x6620741f,0xedc45418,0x21d1d9c4,0xc1cc4a9d,0x005b859e,0xa1c462f0,0xdf01f630,0xf26820c7,0x15d06cf3 +.long 0x3484be47,0x9f7f24ee,0x4a0c902f,0x2ff33e96,0x5a0bc453,0x00bdf457,0x1aa238db,0x2378dfaf,0x856720f2,0x272420ec,0x96797291,0x2ad9d95b,0x768a1558,0xd1242cc6,0x5cc86aa8,0x2e287f8b +.long 0x990cecaa,0x796873d0,0x675d4080,0xade55f81,0x21f0cd84,0x2645eea3,0xb4e17d02,0x7a1efa0f,0x037cc061,0xf6858420,0xd5d43e12,0x682e05f0,0x27218710,0x59c36994,0x3f7cd2fc,0x85cbba4d +.long 0x7a3cd22a,0x726f9729,0x4a628397,0x9f8cd5dc,0xc23165ed,0x17b93ab9,0x122823d4,0xff5f5dbf,0x654a446d,0xc1e4e4b5,0x677257ba,0xd1a9496f,0xde766a56,0x6387ba94,0x521ec74a,0x23608bc8 +.long 0x6688c4d4,0x16a522d7,0x07373abd,0x9d6b4282,0xb42efaa3,0xa62f07ac,0xe3b90180,0xf73e00f7,0x49421c3e,0x36175fec,0x3dcf2678,0xc4e44f9b,0x7220f09f,0x76df436b,0x3aa8b6cf,0x172755fb +.long 0x446139cc,0xbab89d57,0x5fe0208f,0x0a0a6e02,0x11e5d399,0xcdbb63e2,0xa8977f0b,0x33ecaa12,0xf7c42664,0x59598b21,0xab65d08a,0xb3e91b32,0xf4502526,0x035822ee,0x720a82a9,0x1dcf0176 +.long 0x3d589e02,0x50f8598f,0xb1d63d2c,0xdf0478ff,0x1571cd07,0x8b8068bd,0xd79670cd,0x30c3aa4f,0x941ade7f,0x25e8fd4b,0x32790011,0x3d1debdc,0x3a3f9ff0,0x65b6dcbd,0x793de69c,0x282736a4 +.long 0xd41d3bd3,0xef69a0c3,0x07a26bde,0xb533b8c9,0xdb2edf9f,0xe2801d97,0xe1877af0,0xdc4a8269,0x3d590dbe,0x6c1c5851,0xee4e9357,0x84632f6b,0x79b33374,0xd36d36b7,0x9bbca2e6,0xb46833e3 +.long 0xf7fc0586,0x37893913,0x66bf4719,0x385315f7,0xb31855dc,0x72c56293,0x849061fe,0xd1416d4e,0x51047213,0xbeb3ab78,0xf040c996,0x447f6e61,0x638b1d0c,0xd06d310d,0xbad1522e,0xe28a413f +.long 0x82003f86,0x685a76cb,0x0bcdbca3,0x610d07f7,0x9ca4c455,0x6ff66021,0xcea10eec,0x7df39b87,0xe22db218,0xb9255f96,0x08a34c44,0x8cc6d9eb,0x859f9276,0xcd4ffb86,0x50d07335,0x8fa15eb2 +.long 0xcf2c24b5,0xdf553845,0x52f9c3ba,0x89f66a9f,0xe4a7ceb3,0x8f22b5b9,0x0e134686,0xaffef809,0x8eb8fac2,0x3e53e1c6,0x28aec98e,0x93c1e4eb,0x32a43bcb,0xb6b91ec5,0xb2d74a51,0x2dbfa947 +.long 0xca84bad7,0xe065d190,0xad58e65c,0xfb13919f,0xf1cb6e31,0x3c41718b,0x06d05c3f,0x688969f0,0x21264d45,0xd4f94ce7,0x7367532b,0xfdfb65e9,0x0945a39d,0x5b1be8b1,0x2b8baf3b,0x229f789c +.long 0x6f49f15d,0xd8f41f3e,0x907f0792,0x678ce828,0xfca6e867,0xc69ace82,0xd01dcc89,0x106451ae,0x19fc32d2,0x1bb4f7f0,0xb00c52d2,0x64633dfc,0xad9ea445,0x8f13549a,0xfb323705,0x99a3bf50 +.long 0x534d4dbc,0x0c9625a2,0xc2a2fea3,0x45b8f1d1,0xa530fc1a,0x76ec21a1,0x9e5bd734,0x4bac9c2a,0x7b4e3587,0x5996d76a,0x1182d9e3,0x0045cdee,0x1207f13d,0x1aee24b9,0x97345a41,0x66452e97 +.long 0x9f950cd0,0x16e5b054,0xd7fdd075,0x9cc72fb1,0x66249663,0x6edd61e7,0xf043cccb,0xde4caa4d,0x55c7ac17,0x11b1f57a,0x1a85e24d,0x779cbd44,0xe46081e7,0x78030f86,0x8e20f643,0xfd4a6032 +.long 0x0a750c0f,0xcc7a6488,0x4e548e83,0x39bacfe3,0x0c110f05,0x3d418c76,0xb1f11588,0x3e4daa4c,0x5ffc69ff,0x2733e7b5,0x92053127,0x46f147bc,0xd722df94,0x885b2434,0xe6fc6b7c,0x6a444f65 +.long 0xc3f16ea8,0x7a1a465a,0xb2f1d11c,0x115a461d,0x6c68a172,0x4767dd95,0xd13a4698,0x3392f2eb,0xe526cdc7,0xc7a99ccd,0x22292b81,0x8e537fdc,0xa6d39198,0x76d8cf69,0x2446852d,0xffc5ff43 +.long 0xa90567e6,0x97b14f7e,0xb6ae5cb7,0x513257b7,0x9f10903d,0x85454a3c,0x69bc3724,0xd8d2c9ad,0x6b29cb44,0x38da9324,0x77c8cbac,0xb540a21d,0x01918e42,0x9bbfe435,0x56c3614e,0xfffa707a +.long 0xd4e353b7,0x0ce4e3f1,0xef46b0a0,0x062d8a14,0x574b73fd,0x6408d5ab,0xd3273ffd,0xbc41d1c9,0x6be77800,0x3538e1e7,0xc5655031,0x71fe8b37,0x6b9b331a,0x1cd91621,0xbb388f73,0xad825d0b +.long 0x1cb76219,0x56c2e05b,0x71567e7e,0x0ec0bf91,0x61c4c910,0xe7076f86,0xbabc04d9,0xd67b085b,0x5e93a96a,0x9fb90459,0xfbdc249a,0x7526c1ea,0xecdd0bb7,0x0d44d367,0x9dc0d695,0x95399917 +.long 0x9e240d18,0x61360ee9,0xb4b94466,0x057cdcac,0x2fe5325c,0xe7667cd1,0x21974e3b,0x1fa297b5,0xdb083d76,0xfa4081e7,0xf206bd15,0x31993be6,0x14c19f8c,0x8949269b,0xa9d92357,0x21468d72 +.long 0xa4c506ec,0x2ccbc583,0xd1acfe97,0x957ed188,0x12f1aea2,0x8baed833,0x8325362d,0xef2a6cb4,0x8e195c43,0x130dde42,0x0e6050c6,0xc842025a,0x08686a5d,0x2da972a7,0xe508b4a8,0xb52999a1 +.long 0x10a5a8bd,0xd9f090b9,0x096864da,0xca91d249,0x3f67dbc1,0x8e6a93be,0xf5f4764c,0xacae6fba,0xd21411a0,0x1563c6e0,0xda0a4ad8,0x28fa787f,0x908c8030,0xd524491c,0x4c795f07,0x1257ba0e +.long 0xceca9754,0x83f49167,0x4b7939a0,0x426d2cf6,0x723fd0bf,0x2555e355,0xc4f144e2,0xa96e6d06,0x87880e61,0x4768a8dd,0xe508e4d5,0x15543815,0xb1b65e15,0x09d7e772,0xac302fa0,0x63439dd6 +.long 0xc14e35c2,0xb93f802f,0x4341333c,0x71735b7c,0x16d4f362,0x03a25104,0xbf433c8e,0x3f4d069b,0xf78f5a7c,0x0d83ae01,0x7c4eed07,0x50a8ffbe,0x76e10f83,0xc74f8906,0x9ddaf8e1,0x7d080966 +.long 0x698e04cc,0xb11df8e1,0x169005c8,0x877be203,0x4f3c6179,0x32749e8c,0x7853fc05,0x2dbc9d0a,0x9454d937,0x187d4f93,0xb4800e1b,0xe682ce9d,0x165e68e8,0xa9129ad8,0xbe7f785b,0x0fe29735 +.long 0x5b9e02b7,0x5303f40c,0x35ee04e8,0xa37c9692,0x34d6632b,0x5f46cc20,0x96ac545b,0x55ef72b2,0x7b91b062,0xabec5c1f,0xbb33e821,0x0a79e1c7,0x3a9f4117,0xbb04b428,0xfd2a475a,0x0de1f28f +.long 0x3a4434b4,0x31019ccf,0x1a7954dc,0xa3458111,0xe34972a7,0xa9dac80d,0x74f6b8dd,0xb043d054,0x11137b1a,0x021c319e,0xed5cc03f,0x00a754ce,0xcbea5ad4,0x0aa2c794,0x70c015b6,0x093e67f4 +.long 0xc97e3f6b,0x72cdfee9,0xb6da7461,0xc10bcab4,0xb59806b9,0x3b02d2fc,0xa1de6f47,0x85185e89,0x0eb6c4d4,0x39e6931f,0xd4fa5b04,0x4d4440bd,0x34be7eb8,0x5418786e,0x9d7259bc,0x6380e521 +.long 0xd598d710,0x20ac0351,0xcb3a4da4,0x272c4166,0xca71de1f,0xdb82fe1a,0xd8f54b0f,0x746e79f2,0x4b573e9b,0x6e7fc736,0xfd4b5040,0x75d03f46,0x0b98d87b,0x5c1cc36d,0x1f472da1,0x513ba3f1 +.long 0xabb177dd,0x79d0af26,0x7891d564,0xf82ab568,0x72232173,0x2b6768a9,0x8c1f6619,0xefbb3bb0,0xa6d18358,0xb29c11db,0xb0916d3a,0x519e2797,0x9188e290,0xd4dc18f0,0x98b0ca7f,0x648e86e3 +.long 0x983c38b5,0x859d3145,0x637abc8b,0xb14f176c,0xcaff7be6,0x2793fb9d,0x35a66a5a,0xebe5a55f,0x9f87dc59,0x7cec1dcd,0xfbdbf560,0x7c595cd3,0x26eb3257,0x5b543b22,0xc4c935fd,0x69080646 +.long 0x81e9ede3,0x7f2e4403,0xcaf6df0a,0x243c3894,0x1c073b11,0x7c605bb1,0xba6a4a62,0xcd06a541,0x49d4e2e5,0x29168949,0x4af66880,0x33649d07,0xe9a85035,0xbfc0c885,0xfc410f4b,0xb4e52113 +.long 0x78a6513b,0xdca3b706,0x9edb1943,0x92ea4a2a,0xdb6e2dd8,0x02642216,0x9fd57894,0x9b45d0b4,0xc69d11ae,0x114e70db,0x4c57595f,0x1477dd19,0xec77c272,0xbc2208b4,0xdb68f59c,0x95c5b4d7 +.long 0x42e532b7,0xb8c4fc63,0x9ae35290,0x386ba422,0xd201ecbc,0xfb5dda42,0xa0e38fd6,0x2353dc8b,0x68f7e978,0x9a0b85ea,0x2ad6d11f,0x96ec5682,0xe5f6886d,0x5e279d6c,0x3cb1914d,0xd3fe03cd +.long 0x7ea67c77,0xfe541fa4,0xe3ea810c,0x952bd2af,0x8d01d374,0x791fef56,0x0f11336e,0xa3a1c621,0xc7ec6d79,0x5ad0d5a9,0x3225c342,0xff7038af,0xbc69601b,0x003c6689,0x45e8747d,0x25059bc7 +.long 0xf2086fbf,0xfa4965b2,0x86916078,0xf6840ea6,0x70081d6c,0xd7ac7620,0xb5328645,0xe600da31,0x529b8a80,0x01916f63,0x2d7d6f3e,0xe80e4858,0xd664ca7c,0x29eb0fe8,0xe7b43b0c,0xf017637b +.long 0x76cb2566,0x9a75c806,0xb24892d9,0x8f76acb1,0x1f08fe45,0x7ae7b9cc,0x6a4907d8,0x19ef7329,0x5f228bf0,0x2db4ab71,0x817032d7,0xf3cdea39,0xdcabe3c0,0x0b1f482e,0xbb86325c,0x3baf76b4 +.long 0x10089465,0xd49065e0,0x8e77c596,0x3bab5d29,0x193dbd95,0x7636c3a6,0xb246e499,0xdef5d294,0x286b2475,0xb22c58b9,0xcd80862b,0xa0b93939,0xf0992388,0x3002c83a,0xeacbe14c,0x6de01f9b +.long 0xadd70482,0x6aac688e,0x7b4a4e8a,0x708de92a,0x758a6eef,0x75b6dd73,0x725b3c43,0xea4bf352,0x87912868,0x10041f2c,0xef09297a,0xb1b1be95,0xa9f3860a,0x19ae23c5,0x515dcf4b,0xc4f0f839 +.long 0x97f6306a,0x3c7ecca3,0x68a3a4b0,0x744c44ae,0xb3a1d8a2,0x69cd13a0,0x5256b578,0x7cad0a1e,0x33791d9e,0xea653fcd,0x74b2e05f,0x9cc2a05d,0xfd7affa2,0x73b391dc,0xb6b05442,0xddb7091e +.long 0x8538a5c6,0xc71e27bf,0x89abff17,0x195c63dd,0x1b71e3da,0xfd315285,0xfa680fa0,0x9cbdfda7,0x849d7eab,0x9db876ca,0x3c273271,0xebe2764b,0xf208dcea,0x663357e3,0x565b1b70,0x8c5bd833 +.long 0x9837fc0d,0xccc3b4f5,0xa79cf00f,0x9b641ba8,0xdfdf3990,0x7428243d,0x020786b1,0x83a594c4,0x526c4502,0xb712451a,0x6adb3f93,0x9d39438e,0xe9ff0ccd,0xfdb261e3,0xe07af4c3,0x80344e3c +.long 0x2fa4f126,0x75900d7c,0x5c99a232,0x08a3b865,0xdb25e0c3,0x2478b6bf,0x71db2edf,0x482cc2c2,0x5f321bb8,0x37df7e64,0x9a8005b4,0x8a93821b,0xcc8c1958,0x3fa2f10c,0x2c269d0a,0x0d332218 +.long 0xe246b0e6,0x20ab8119,0xd349fd17,0xb39781e4,0xb31aa100,0xd293231e,0xbb032168,0x4b779c97,0xc8470500,0x4b3f19e1,0x0c4c869d,0x45b7efe9,0xa1a6bbcc,0xdb84f38a,0xb2fddbc1,0x3b59cb15 +.long 0x3fd165e8,0xba5514df,0x061f8811,0x499fd6a9,0xbfef9f00,0x72cd1fe0,0x79ad7e8a,0x120a4bb9,0x5f4a5ac5,0xf2ffd095,0x95a7a2f0,0xcfd174f1,0x9d17baf1,0xd42301ba,0x77f22089,0xd2fa487a +.long 0xb1dc77e1,0x9cb09efe,0x21c99682,0xe9566939,0x6c6067bb,0x8c546901,0x61c24456,0xfd378574,0x81796b33,0x2b6a6cbe,0x58e87f8b,0x62d550f6,0x7f1b01b4,0x1b763e1c,0x1b1b5e12,0x4b93cfea +.long 0x1d531696,0xb9345238,0x88cdde69,0x57201c00,0x9a86afc7,0xdde92251,0xbd35cea8,0xe3043895,0x8555970d,0x7608c1e1,0x2535935e,0x8267dfa9,0x322ea38b,0xd4c60a57,0x804ef8b5,0xe0bf7977 +.long 0xc06fece4,0x1a0dab28,0x94e7b49d,0xd405991e,0x706dab28,0xc542b6d2,0xa91618fb,0xcb228da3,0x107d1cea,0x224e4164,0xd0f5d8f1,0xeb9fdab3,0x0d6e41cd,0xc02ba386,0x9b1f7146,0x676a72c5 +.long 0x4d6cb00b,0xffd6dd98,0xde2e8d7c,0xcef9c5ca,0x641c7936,0xa1bbf5d7,0xee8f772e,0x1b95b230,0xe8ac25b1,0xf765a92e,0x3a18b7c6,0xceb04cfc,0x0acc8966,0x27944cef,0x434c1004,0xcbb3c957 +.long 0xa43ff93c,0x9c9971a1,0xa1e358a9,0x5bc2db17,0xa8d9bc82,0x45b4862e,0x2201e052,0x70ebfbfb,0x92871591,0xafdf64c7,0xb42d0219,0xea5bcae6,0x2ad8f03c,0xde536c55,0xa76aa33c,0xcd6c3f4d +.long 0x0bca6de3,0xbeb5f623,0xb1e706fd,0xdd20dd99,0xac9059d4,0x90b3ff9d,0x7ccccc4e,0x2d7b2902,0xce98840f,0x8a090a59,0x8410680a,0xa5d947e0,0x923379a5,0x49ae346a,0xb28a3156,0x7dbc84f9 +.long 0x54a1aff2,0xfd40d916,0x3a78fb9b,0xabf318ba,0x3029f95e,0x50152ed8,0xc58ad7fa,0x9fc1dd77,0x13595c17,0x5fa57915,0x8f62b3a9,0xb9504668,0xff3055b0,0x907b5b24,0x9a84f125,0x2e995e35 +.long 0x7e9bbcfb,0x87dacf69,0xe86d96e3,0x95d0c1d6,0x2d95a75c,0x65726e3c,0xacd27f21,0x2c3c9001,0x6c973f57,0x1deab561,0xa5221643,0x108b7e2c,0xc4ef79d4,0x5fee9859,0x40d4b8c6,0xbd62b88a +.long 0x197c75d6,0xb4dd29c4,0xb7076feb,0x266a6df2,0x4bf2df11,0x9512d0ea,0x6b0cc9ec,0x1320c24f,0x01a59596,0x6bb1e0e1,0xeff9aaac,0x8317c5bb,0x385aa6c9,0x65bb405e,0x8f07988f,0x613439c1 +.long 0x16a66e91,0xd730049f,0xfa1b0e0d,0xe97f2820,0x304c28ea,0x4131e003,0x526bac62,0x820ab732,0x28714423,0xb2ac9ef9,0xadb10cb2,0x54ecfffa,0xf886a4cc,0x8781476e,0xdb2f8d49,0x4b2c87b5 +.long 0x0a44295d,0xe857cd20,0x58c6b044,0x707d7d21,0xf596757c,0xae8521f9,0x67b2b714,0x87448f03,0x5ebcd58d,0x13a9bc45,0x9122d3c1,0x79bcced9,0x9e076642,0x3c644247,0x2df4767d,0x0cf22778 +.long 0x71d444b6,0x5e61aee4,0xc5084a1d,0x211236bf,0x4fd3eaf6,0x7e15bc9a,0xab622bf5,0x68df2c34,0x59bf4f36,0x9e674f0f,0xd7f34d73,0xf883669b,0x31497b1d,0xc48ac1b8,0x5106703b,0x323b925d +.long 0x74082008,0x22156f42,0xc8482bcb,0xeffc521a,0x12173479,0x5c6831bf,0xc4739490,0xcaa2528f,0x8f1b3c4d,0x84d2102a,0x2d9bec0d,0xcf64dfc1,0x78a546ef,0x433febad,0x7b73cef1,0x1f621ec3 +.long 0x37338615,0x6aecd627,0x01d8edf6,0x162082ab,0x19e86b66,0x833a8119,0xd299b5db,0x6023a251,0xbbf04b89,0xf5bb0c3a,0xae749a44,0x6735eb69,0x4713de3b,0xd0e058c5,0x2c3d4ccd,0xfdf2593e +.long 0xfdd23667,0x1b8f414e,0xfa2015ee,0xdd52aaca,0xbd9625ff,0x3e31b517,0x8db5918c,0x5ec9322d,0xa96f5294,0xbc73ac85,0x61a0666a,0x82aa5bf3,0xbf08ac42,0x49755810,0x891cedfc,0xd21cdfd5 +.long 0x67f8be10,0x918cb57b,0x56ffa726,0x365d1a7c,0x6532de93,0x2435c504,0x2674cd02,0xc0fc5e10,0x9cbbb142,0x6e51fcf8,0xafc50692,0x1d436e5a,0x3fbcae22,0x766bffff,0xfd55d3b8,0x3148c2fd +.long 0x233222fa,0x52c7fdc9,0xe419fb6b,0x89ff1092,0x25254977,0x3cd6db99,0x1cf12ca7,0x2e85a161,0xdc810bc9,0xadd2547c,0x9d257c22,0xea3f458f,0x27d6b19b,0x642c1fbe,0x140481a6,0xed07e6b5 +.long 0x86d2e0f8,0x6ada1d42,0x0e8a9fd5,0xe5920122,0x708c1b49,0x02c936af,0x2b4bfaff,0x60f30fee,0x858e6a61,0x6637ad06,0x3fd374d0,0xce4c7767,0x7188defb,0x39d54b2d,0xf56a6b66,0xa8c9d250 +.long 0xb24fe1dc,0x58fc0f5e,0x6b73f24c,0x9eaf9dee,0x33650705,0xa90d588b,0xaf2ec729,0xde5b62c5,0xd3c2b36e,0x5c72cfae,0x034435da,0x868c19d5,0xe17ee145,0x88605f93,0x77a5d5b1,0xaa60c4ee +.long 0x3b60c472,0xbcf5bfd2,0xeb1d3049,0xaf4ef13c,0xe13895c9,0x373f44fc,0x0cbc9822,0xf29b382f,0x73efaef6,0x1bfcb853,0xa8c96f40,0xcf56ac9c,0x7a191e24,0xd7adf109,0xbf8a8dc2,0x98035f44 +.long 0x1e750c84,0xf40a71b9,0x5dc6c469,0xc57f7b0c,0x6fbc19c1,0x49a0e79c,0xa48ebdb8,0x6b0f5889,0xa07c4e9f,0x5d3fd084,0xab27de14,0xc3830111,0x33e08dcc,0x0e4929fe,0x40bb73a3,0xf4a5ad24 +.long 0x490f97ca,0xde86c2bf,0x67a1ce18,0x288f09c6,0x1844478d,0x364bb886,0xceedb040,0x7840fa42,0x5a631b37,0x1269fdd2,0xa47c8b7d,0x94761f1e,0x481c6266,0xfc0c2e17,0x3daa5fa7,0x85e16ea2 +.long 0x92491048,0xccd86033,0xf4d402d7,0x0c2f6963,0xdf6a865c,0x6336f7df,0xb5c02a87,0x0a2a463c,0xbf2f12ee,0xb0e29be7,0x66bad988,0xf0a22002,0x9123c1d7,0x27f87e03,0x328a8c98,0x21669c55 +.long 0x92f14529,0x186b9803,0x63954df3,0xd3d056cc,0x175a46f6,0x2f03fd58,0x11558558,0x63e34ebe,0x5b80cfa5,0xe13fedee,0xd401dbd1,0xe872a120,0xe8a9d667,0x52657616,0xe08d6693,0xbc8da4b6 +.long 0x1b703e75,0x370fb9bb,0xd4338363,0x6773b186,0xecef7bff,0x18dad378,0x995677da,0xaac787ed,0x0437164b,0x4801ea8b,0x73fe795e,0xf430ad20,0x8ee5eb73,0xb164154d,0x108f7c0e,0x0884ecd8 +.long 0x5f520698,0x0e6ec096,0x44f7b8d9,0x640631fe,0xa35a68b9,0x92fd34fc,0x4d40cf4e,0x9c5a4b66,0x80b6783d,0x949454bf,0x3a320a10,0x80e701fe,0x1a0a39b2,0x8d1a564a,0x320587db,0x1436d53d +.long 0x6556c362,0xf5096e6d,0xe2455d7e,0xbc23a3c0,0x807230f9,0x3a7aee54,0x22ae82fd,0x9ba1cfa6,0x99c5d706,0x833a057a,0x842315c9,0x8be85f4b,0x66a72f12,0xd083179a,0xcdcc73cd,0x2fc77d5d +.long 0x5616ee30,0x22b88a80,0xe7ab1083,0xfb09548f,0x511270cd,0x8ad6ab0d,0x6924d9ab,0x61f6c57a,0x90aecb08,0xa0f7bf72,0x0df784a4,0x849f87c9,0xcfaf1d03,0x27c79c15,0xc463face,0xbbf9f675 +.long 0x765ba543,0x91502c65,0x42ea60dd,0x18ce3cac,0x6e43ecb3,0xe5cee6ac,0x68f2aeeb,0x63e4e910,0xc85932ee,0x26234fa3,0x4c90c44d,0x96883e8b,0xa18a50f6,0x29b9e738,0x3f0420df,0xbfc62b2a +.long 0x6d3e1fa9,0xd22a7d90,0xfe05b8a3,0x17115618,0xbb2b9c01,0x2a0c9926,0xe07e76a2,0xc739fcc6,0x165e439a,0x540e9157,0x6a9063d8,0x06353a62,0x61e927a3,0x84d95594,0xe2e0be7f,0x013b9b26 +.long 0x973497f1,0x4feaec3b,0x093ebc2d,0x15c0f94e,0x33af0583,0x6af5f227,0xc61f3340,0x0c2af206,0x4457397c,0xd25dbdf1,0xcabcbae0,0x2e8ed017,0xc2815306,0xe3010938,0xe8c6cd68,0xbaa99337 +.long 0x3b0ec7de,0x08513182,0x58df05df,0x1e1b822b,0xa5c3b683,0x5c14842f,0x3eba34ce,0x98fe977e,0x0d5e8873,0xfd2316c2,0xbd0d427d,0xe48d839a,0x623fc961,0x495b2218,0xb46fba5e,0x24ee56e7 +.long 0x91e4de58,0x9184a55b,0xdfdea288,0xa7488ca5,0xa8dcc943,0xa723862e,0x849dc0fc,0x92d762b2,0x091ff4a9,0x3c444a12,0x0cada274,0x581113fa,0x30d8eae2,0xb9de0a45,0xdf6b41ea,0x5e0fcd85 +.long 0xc094dbb5,0x6233ea68,0xd968d410,0xb77d062e,0x58b3002d,0x3e719bbc,0x3dc49d58,0x68e7dd3d,0x013a5e58,0x8d825740,0x3c9e3c1b,0x21311747,0x7c99b6ab,0x0cb0a2a7,0xc2f888f2,0x5c48a3b3 +.long 0x991724f3,0xc7913e91,0x39cbd686,0x5eda799c,0x63d4fc1e,0xddb595c7,0xac4fed54,0x6b63b80b,0x7e5fb516,0x6ea0fc69,0xd0f1c964,0x737708ba,0x11a92ca5,0x9628745f,0x9a86967a,0x61f37958 +.long 0xaa665072,0x9af39b2c,0xefd324ef,0x78322fa4,0xc327bd31,0x3d153394,0x3129dab0,0x81d5f271,0xf48027f5,0xc72e0c42,0x8536e717,0xaa40cdbc,0x2d369d0f,0xf45a657a,0xea7f74e6,0xb03bbfc4 +.long 0x0d738ded,0x46a8c418,0xe0de5729,0x6f1a5bb0,0x8ba81675,0xf10230b9,0x112b33d4,0x32c6f30c,0xd8fffb62,0x7559129d,0xb459bf05,0x6a281b47,0xfa3b6776,0x77c1bd3a,0x7829973a,0x0709b380 +.long 0xa3326505,0x8c26b232,0xee1d41bf,0x38d69272,0xffe32afa,0x0459453e,0x7cb3ea87,0xce8143ad,0x7e6ab666,0x932ec1fa,0x22286264,0x6cd2d230,0x6736f8ed,0x459a46fe,0x9eca85bb,0x50bf0d00 +.long 0x877a21ec,0x0b825852,0x0f537a94,0x300414a7,0x21a9a6a2,0x3f1cba40,0x76943c00,0x50824eee,0xf83cba5d,0xa0dbfcec,0x93b4f3c0,0xf9538148,0x48f24dd7,0x61744162,0xe4fb09dd,0x5322d64d +.long 0x3d9325f3,0x57447384,0xf371cb84,0xa9bef2d0,0xa61e36c5,0x77d2188b,0xc602df72,0xbbd6a7d7,0x8f61bc0b,0xba3aa902,0x6ed0b6a1,0xf49085ed,0xae6e8298,0x8bc625d6,0xa2e9c01d,0x832b0b1d +.long 0xf1f0ced1,0xa337c447,0x9492dd2b,0x800cc793,0xbea08efa,0x4b93151d,0xde0a741e,0x820cf3f8,0x1c0f7d13,0xff1982dc,0x84dde6ca,0xef921960,0x45f96ee3,0x1ad7d972,0x29dea0c7,0x319c8dbe +.long 0x7b82b99b,0xd3ea3871,0x470eb624,0x75922d4d,0x3b95d466,0x8f66ec54,0xbee1e346,0x66e673cc,0xb5f2b89a,0x6afe67c4,0x290e5cd3,0x3de9c1e6,0x310a2ada,0x8c278bb6,0x0bdb323b,0x420fa384 +.long 0x0eb919b0,0x0ae1d63b,0xa74b9620,0xd74ee51d,0xa674290c,0x395458d0,0x4620a510,0x324c930f,0xfbac27d4,0x2d1f4d19,0x9bedeeac,0x4086e8ca,0x9b679ab8,0x0cdd211b,0x7090fec4,0x5970167d +.long 0xfaf1fc63,0x3420f2c9,0x328c8bb4,0x616d333a,0x57f1fe4a,0x7d65364c,0x55e5c73a,0x9343e877,0xe970e78c,0x5795176b,0x60533627,0xa36ccebf,0x09cdfc1b,0xfc7c7380,0xb3fec326,0xb39a2afe +.long 0x6224408a,0xb7ff1ba1,0x247cfc5e,0xcc856e92,0xc18bc493,0x01f102e7,0x2091c727,0x4613ab74,0xc420bf2b,0xaa25e89c,0x90337ec2,0x00a53176,0x7d025fc7,0xd2be9f43,0x6e6fe3dc,0x3316fb85 +.long 0x9ac50814,0x27520af5,0x9a8e4223,0xfdf95e78,0x56bec5a0,0xb7e7df2a,0xdf159e5d,0xf7022f7d,0xcac1fe8f,0x93eeeab1,0x37451168,0x8040188c,0xd967dce6,0x7ee8aa8a,0x3abc9299,0xfa0e79e7 +.long 0x2064cfd1,0x67332cfc,0xb0651934,0x339c31de,0x2a3bcbea,0x719b28d5,0x9d6ae5c6,0xee74c82b,0xbaf28ee6,0x0927d05e,0x9d719028,0x82cecf2c,0xddb30289,0x0b0d353e,0xfddb2e29,0xfe4bb977 +.long 0x640bfd9e,0xbb5bb990,0x82f62108,0xd226e277,0x02ffdd56,0x4bf00985,0x2ca1b1b5,0x7756758a,0x5285fe91,0xc32b62a3,0x8c9cd140,0xedbc546a,0xaf5cb008,0x1e47a013,0x073ce8f2,0xbca7e720 +.long 0x17a91cae,0xe10b2ab8,0x08e27f63,0xb89aab65,0xdba3ddf9,0x7b3074a7,0x330c2972,0x1c20ce09,0x5fcf7e33,0x6b9917b4,0x945ceb42,0xe6793743,0x5c633d19,0x18fc2215,0xc7485474,0xad1adb3c +.long 0x6424c49b,0x646f9679,0x67c241c9,0xf888dfe8,0x24f68b49,0xe12d4b93,0xa571df20,0x9a6b62d8,0x179483cb,0x81b4b26d,0x9511fae2,0x666f9632,0xd53aa51f,0xd281b3e4,0x7f3dbd16,0x7f96a765 +.long 0x074a30ce,0xa7f8b5bf,0x005a32e6,0xd7f52107,0x50237ed4,0x6f9e0907,0x8096fa2b,0x2f21da47,0xeec863a0,0xf3e19cb4,0x9527620a,0xd18f77fd,0x407c1cf8,0x9505c81c,0x1b6ec284,0x9998db4e +.long 0xc247d44d,0x7e3389e5,0x3f4f3d80,0x12507141,0x4a78a6c7,0xd4ba0110,0x767720be,0x312874a0,0x75944370,0xded059a6,0x3b2c0bdd,0xd6123d90,0x51c108e3,0xa56b717b,0x070623e9,0x9bb7940e +.long 0x84ac066c,0x794e2d59,0xe68c69a0,0xf5954a92,0x4fd99dcc,0x28c52458,0xb1012517,0x60e639fc,0x7de79248,0xc2e60125,0xf12fc6d7,0xe9ef6404,0x2a3b5d32,0x4c4f2808,0xc768eb8a,0x865ad32e +.long 0x13fb70b6,0xac02331b,0x95599b27,0x037b44c1,0x60bd082c,0x1a860fc4,0xc980cd01,0xa2e25745,0x1da0263e,0xee3387a8,0x2d10f3d6,0x931bfb95,0xa1f24a32,0x5b687270,0xca494b86,0xf140e65d +.long 0xb2f1ac7a,0x4f4ddf91,0x760fee27,0xf99eaabb,0x49c228e5,0x57f4008a,0x1cf713bb,0x090be440,0x5004f022,0xac91fbe4,0x569e1af6,0xd838c2c2,0x0f1daaa5,0xd6c7d20b,0x1bbb02c0,0xaa063ac1 +.long 0x59558a78,0x0938a422,0x8435da2f,0x5343c669,0x034410dc,0x96f67b18,0x84510804,0x7cc1e424,0x16dfbb7d,0x86a1543f,0x5b5bd592,0x921fa942,0xb33dd03c,0x9dcccb6e,0xb843f51e,0x8581ddd9 +.long 0x81d73c9e,0x54935fcb,0x0a5e97ab,0x6d07e979,0xcf3a6bab,0x4dc7b30a,0x170bee11,0x147ab1f3,0x9fafdee4,0x0aaf8e3d,0x538a8b95,0xfab3dbcb,0x6ef13871,0x405df4b3,0x088d5a49,0xf1f4e9cb +.long 0x66b33f1d,0x9bcd24d3,0x5ce445c0,0x3b97b820,0xba93ff61,0xe2926549,0x4dafe616,0xd9c341ce,0x16efb6f3,0xfb30a76e,0x605b953c,0xdf24b8ca,0xc2fffb9f,0x8bd52afe,0xe19d0b96,0xbbac5ff7 +.long 0x459afccd,0x43c01b87,0xb7432652,0x6bd45143,0x55b5d78e,0x84734530,0x1554ba7d,0x81088fdb,0x1e269375,0xada0a52c,0x2dc5ec10,0xf9f037c4,0x94bfbc11,0xc0660607,0xc9c40d2f,0xc0a630bb +.long 0xab64c31e,0x5efc797e,0x74507144,0xffdb1dab,0x1ca6790c,0xf6124287,0xe69bf1bf,0xe9609d81,0x00d24fc9,0xdb898595,0xe51fb417,0x9c750333,0xfef7bbde,0x51830a91,0x945f585c,0x0ce67dc8 +.long 0x4763eb50,0x9a730ed4,0xc1ab0d66,0x24a0e221,0x648748f3,0x643b6393,0x6d3c6291,0x1982daa1,0x8bbc5549,0x6f00a9f7,0x7f36384e,0x7a1783e1,0xde977f50,0xe8346323,0xb245502a,0x91ab688d +.long 0x6d0bdd66,0x331ab6b5,0x64b71229,0x0a6ef32e,0xfe7c352f,0x1028150e,0xce7b39d3,0x27e04350,0xc1070c82,0x2a3c8acd,0x80c9feef,0xfb2034d3,0x709f3729,0x2d729621,0x62cb4549,0x8df290bf +.long 0xfc2e4326,0x02f99f33,0x5eddf032,0x3b30076d,0x0c652fb5,0xbb21f8cf,0xed91cf7b,0x314fb49e,0x2f700750,0xa013eca5,0x712a4575,0x2b9e3c23,0xaf30fbb0,0xe5355557,0x7c77e771,0x1ada3516 +.long 0x7b135670,0x45f6ecb2,0x7cfc202e,0xe85d19df,0x58d1be9f,0x0f1b50c7,0xead2e344,0x5ebf2c0a,0xabc199c9,0x1531fe4e,0x56bab0ae,0xc7032592,0x6c1fec54,0x16ab2e48,0x04280188,0x0f87fda8 +.long 0x609e4a74,0xdc9f46fc,0xba667f91,0x2a44a143,0xb4d83436,0xbc3d8b95,0xc7bd2958,0xa01e4bd0,0x73483c90,0x7b182932,0xa7c7b598,0xa79c6aa1,0xeaaac07e,0xbf3983c6,0x96e0d4e6,0x8f18181e +.long 0x051af62b,0x8553d37c,0x0bf94496,0xe9a998eb,0xb0d59aa1,0xe0844f9f,0xe6afb813,0x983fd558,0x65d69804,0x9670c0ca,0x6ea5ff2d,0x732b22de,0x5fd8623b,0xd7640ba9,0xa6351782,0x9f619163 +.long 0xacee5043,0x0bfc27ee,0x2eb10f02,0xae419e73,0x8943fb05,0x19c028d1,0xff13aa2a,0x71f01cf7,0x8887a132,0x7790737e,0x66318410,0x67513309,0x7ddb795e,0x9819e8a3,0xdad100b2,0xfecb8ef5 +.long 0x3021926a,0x59f74a22,0x6f9b4c1c,0xb7c28a49,0x912ad0ab,0xed1a733f,0x01a5659c,0x42a910af,0x7bd68cab,0x3842c6e0,0x76d70ac8,0x2b57fa38,0x3c53aaeb,0x8a6707a8,0x65b4db18,0x62c1c510 +.long 0xb2d09dc7,0x8de2c1fb,0x266bd23b,0xc3dfed12,0xd5b27db6,0x927d039b,0x103243da,0x2fb2f0f1,0x80be7399,0xf855a07b,0x1f9f27a8,0xed9327ce,0x729bdef7,0xa0bd99c7,0x28250d88,0x2b67125e +.long 0x8670ced7,0x784b26e8,0xc31bd3b4,0xe3dfe41f,0xbcc85cbc,0x9e353a06,0x60178a9d,0x302e2909,0xa6eac16e,0x860abf11,0xaa2b3aac,0x76447000,0x850afdab,0x46ff9d19,0xfdb2d4c1,0x35bdd6a5 +.long 0x7e5c9ce9,0xe82594b0,0x20af346e,0x0f379e53,0xbc65ad4a,0x608b31e3,0x267c4826,0x710c6b12,0x71954cf1,0x51c966f9,0x0d0aa215,0xb1cec793,0x86bd23a8,0x1f155989,0xf9452e86,0xae2ff99c +.long 0x340ceaa2,0xd8dd953c,0x2e2e9333,0x26355275,0x8586f06d,0x15d4e5f9,0xf7cab546,0xd6bf94a8,0xb76a9af0,0x33c59a0a,0xba095af7,0x52740ab3,0x24389ca0,0xc444de8a,0x706da0cb,0xcc6f9863 +.long 0x6b2515cf,0xb5a741a7,0x9585c749,0x71c41601,0xe683de97,0x78350d4f,0x63d0b5f5,0x31d61524,0xfbce090b,0x7a0cc5e1,0xfbcb2a5b,0xaac927ed,0x20d84c35,0xe920de49,0x22b4de26,0x8c06a0b6 +.long 0xafe7ddf3,0xd34dd58b,0xc1e6e55b,0x55851fed,0x960696e7,0xd1395616,0x5f22705f,0x940304b2,0xb0a2a860,0x6f43f861,0x0e7cc981,0xcf121282,0x0ab64a96,0x12186212,0xb789383c,0x09215b9a +.long 0x37387c09,0x311eb305,0xf03ee760,0xc5832fce,0x32f7ea19,0x30358f58,0x91d53551,0xe01d3c34,0xda48ea80,0x1ca5ee41,0xcf4fa4c1,0x34e71e8e,0x7af1e1c7,0x312abd25,0x2153f4a5,0xe3afcdeb +.long 0x00235e9a,0x9d5c84d7,0x8c4c836f,0x0308d3f4,0x89332de5,0xc0a66b04,0x89e566ef,0x610dd399,0xd1ac1635,0xf8eea460,0x20a2c0df,0x84cbb3fb,0xe74a48c5,0x40afb488,0xd326b150,0x29738198 +.long 0xa6d74081,0x2a17747f,0x55a26214,0x60ea4c05,0x1f88c5fe,0x53514bb4,0x7e83426c,0xedd64567,0x96460b25,0xd5d6cbec,0x68dc115e,0xa12fd0ce,0x697840ea,0xc5bc3ed2,0xa6331e31,0x969876a8 +.long 0x472ff580,0x60c36217,0x4ad41393,0xf4229705,0xa03b8b92,0x4bd99ef0,0xc144f4f6,0x501c7317,0x18464945,0x159009b3,0x74c5c6be,0x6d5e594c,0x321a3660,0x2d587011,0x3898d022,0xd1e184b1 +.long 0x4c6a7e04,0x5ba04752,0x45550b65,0x47fa1e2b,0x48c0a9a5,0x9419daf0,0x7c243236,0x66362953,0x5cb12a88,0xcd0744b1,0x2b646188,0x561b6f9a,0x66c2c0c0,0x599415a5,0x0f83f09a,0xbe3f0859 +.long 0xb92041b8,0x9141c5be,0x26477d0d,0x01ae38c7,0xd12c7a94,0xca8b71f3,0x765c70db,0xfab5b31f,0x487443e9,0x76ae7492,0x990d1349,0x8595a310,0x7d460a37,0xf8dbeda8,0x1e45a38f,0x7f7ad082 +.long 0x1059705a,0xed1d4db6,0xe6b9c697,0xa3dd492a,0x6eb38bd5,0x4b92ee3a,0x67cc0bb7,0xbab2609d,0x6e70ee82,0x7fc4fe89,0x13e6b7e3,0xeff2c56e,0x34d26fca,0x9b18959e,0x889d6b45,0x2517ab66 +.long 0xbdefdd4f,0xf167b4e0,0xf366e401,0x69958465,0xa73bbec0,0x5aa368ab,0x7b240c21,0x12148709,0x18969006,0x378c3233,0xe1fe53d1,0xcb4d73ce,0x130c4361,0x5f50a80e,0x7ef5212b,0xd67f5951 +.long 0x9e70c72e,0xf145e21e,0x5566d2fb,0xb2e52e29,0x032397f5,0x44eaba4a,0x7e31a7de,0x5e56937b,0x456c61e1,0x68dcf517,0xa8b0a388,0xbc2e954a,0x60a8b755,0xe3552fa7,0x73ad0cde,0x03442dae +.long 0xceb26210,0x37ffe747,0x787baef9,0x983545e8,0x86a3de31,0x8b8c8535,0xfacd46db,0xc621dbcb,0x59266fbb,0x82e442e9,0x339d471c,0xa3514c37,0x62cdad96,0x3a11b771,0xecf9bdf0,0xf0cb3b3c +.long 0x478e2135,0x3fcbdbce,0xbda35342,0x7547b5cf,0x8a677af6,0xa97e81f1,0x28817987,0xc8c2bf83,0x45580985,0xdf07eaaf,0xc93b45cb,0xc68d1f05,0xc77b4cac,0x106aa2fe,0x04a7ae86,0x4c1d8afc +.long 0x9eb45ab2,0xdb41c3fd,0xd4b22e74,0x5b234b5b,0xf215958a,0xda253dec,0xa04edfa0,0x67e0606e,0xef751b11,0xabbbf070,0xf6f06dce,0xf352f175,0x6839f6b4,0xdfc4b6af,0x9959848e,0x53ddf9a8 +.long 0xc21520b0,0xda49c379,0xdbd5d1b6,0x90864ff0,0x5f49c7f7,0x2f055d23,0xa796b2d8,0xe51e4e6a,0x5c9dc340,0xc361a67f,0xbca7c620,0x5ad53c37,0x32c756d0,0xda1d6588,0x8bb67e13,0xad60d911 +.long 0x0eeec8c6,0xd6c47bdf,0x078a1821,0x4a27fec1,0xc3099524,0x081f7415,0x82cd8060,0x8effdf0b,0x65842df8,0xdb70ec1c,0xd319a901,0x8821b358,0xde42b529,0x72ee56ee,0x236e4286,0x5bb39592 +.long 0xfd6f7140,0xd1183316,0xbd8e81f7,0xf9fadb5b,0x5a02d962,0x701d5e0c,0x1b601324,0xfdee4dbf,0x35d7620e,0xbed17407,0xf48c0012,0x04e3c2c3,0x3455449a,0x9ee29da7,0x91a836c4,0x562cdef4 +.long 0x47701097,0x8f682a5f,0xff88d0c2,0x617125d8,0x57bb86dd,0x948fda24,0x289f7286,0x348abb8f,0x99d94bbd,0xeb10eab5,0x4684d160,0xd51ba28e,0x30c8f41a,0xabe0e51c,0x13254f4a,0x66588b45 +.long 0xfad097a5,0x147ebf01,0x610e815d,0x49883ea8,0x8a11de56,0xe44d60ba,0x827a7a6d,0xa970de6e,0x5e17fc19,0x2be41424,0x01214057,0xd833c657,0x363e723f,0x1375813b,0xe6a52e9b,0x6820bb88 +.long 0xd875d56a,0x7e7f6970,0x51fbf6bf,0xd6a0a9ac,0xa3083c12,0x54ba8790,0x6ae7eb64,0xebaeb23d,0xb99a907a,0xa8685c3a,0x026bf40b,0xf1e74550,0xc802cd9e,0x7b73a027,0x4fef4635,0x9a8a927c +.long 0x08191224,0xe1b6f60c,0xde4ec091,0xc4126ebb,0x4ae38d84,0xe1dff4dc,0x4f2ef985,0xde3f57db,0xd446a1dd,0x34964337,0x859e77f6,0x7bf217a0,0x8e1d13f5,0x8ff10527,0x74eeae27,0xa304ef03 +.long 0xd19dfa5a,0xfc6f5e47,0x7fad982b,0xdb007de3,0x613715f5,0x28205ad1,0x7889529e,0x251e6729,0x1ae98e78,0x72705184,0x271cac32,0xf818537d,0xb7f410f5,0xc8a15b7e,0x81f62393,0xc474356f +.long 0xc242316b,0x92dbdc5a,0xdbf4aff5,0xabe060ac,0x909a8ec6,0x6e8c38fe,0x6116cb94,0x43e514e5,0x07d784f9,0x2078fa38,0xf4b5b357,0x1161a880,0x13adea3d,0x5283ce79,0xcc6a910b,0x0756c3e6 +.long 0xaaa79697,0x60bcfe01,0x56391db1,0x04a73b29,0x189b45a0,0xdd8dad47,0x48d5b8d9,0xbfac0dd0,0x7d3d2ec2,0x34ab3af5,0x207bd3af,0x6fa2fc2d,0x66550ded,0x9ff40092,0x1fd5b913,0x719b3e87 +.long 0x6d17fbc7,0xa573a496,0x73d2b24e,0x0cd1a70a,0xb2676937,0x34e2c5ca,0xbf669f21,0xe7050b06,0x1ede9046,0xfbe948b6,0x97662659,0xa0530051,0xf10124c5,0x58cbd4ed,0xdd6c06c8,0xde2646e4 +.long 0x8cad38c0,0x332f8108,0x6bd68ae2,0x471b7e90,0x0d8e27a3,0x56ac3fb2,0x136b4b0d,0xb54660db,0xa6fd8de4,0x123a1e11,0xa37799ef,0x44dbffea,0xce6ac17c,0x4540b977,0xaf60acef,0x495173a8 +.long 0x391c2a82,0x9ebb284d,0x158308e8,0xbcdd4863,0x83f1edca,0x006f16ec,0x695dc6c8,0xa13e2c37,0x4a057a87,0x2ab756f0,0xa6b48f98,0xa8765500,0x68651c44,0x4252face,0xe1765e02,0xa52b540b +.long 0x16a0d2bb,0x4f922fc5,0x1a623499,0x0d5cc16c,0x57c62c8b,0x9241cf3a,0xfd1b667f,0x2f5e6961,0xf5a01797,0x5c15c70b,0x60956192,0x3d20b44d,0x071fdb52,0x04911b37,0x8d6f0f7b,0xf648f916 +.long 0xe60b7cf7,0x6dc1acaf,0x84a9d869,0x25860a50,0xe7ba8ac4,0x56fc6f09,0x6148d29e,0x828c5bd0,0xdc55ae5f,0xac6b435e,0xc0117411,0xa527f56c,0xfd24342c,0x94d5045e,0x70b67c0d,0x2c4c0a35 +.long 0xfac61d9a,0x027cc8b8,0xe3c6fe8a,0x7d25e062,0xe5bff503,0xe08805bf,0x6ff632f7,0x13271e6c,0x232f76a5,0x55dca6c0,0x701ef426,0x8957c32d,0xa10a5178,0xee728bcb,0xb62c5173,0x5ea60411 +.long 0xd0b8892b,0xfc4e964e,0x9301bb74,0x9ea17683,0xfcc48626,0x6265c5ae,0xbb3e9102,0xe60cf82e,0xd4df5531,0x57adf797,0x8deeefe2,0x235b59a1,0x3f306eb1,0x60adcf58,0x3d09492d,0x105c2753 +.long 0xb5def996,0x4090914b,0x233dd1e7,0x1cb69c83,0x9b3d5e76,0xc1e9c1d3,0xfccf6012,0x1f3338ed,0x2f5378a8,0xb1e95d0d,0x2f00cd21,0xacf4c2c7,0xeb5fe290,0x6e984240,0x248088ae,0xd66c038d +.long 0xf94d70cf,0x804d264a,0x7314bf7e,0xbdb802ef,0x4333ed02,0x8fb54de2,0x285635d9,0x740461e0,0x365e9383,0x4113b2c8,0x3fdef652,0xea762c83,0x47b956c1,0x4eec6e2e,0x65620fa4,0xa3d814be +.long 0xb4d8bc50,0x9ad5462b,0xa9195770,0x181c0b16,0x78412a68,0xebd4fe1c,0xc0dff48c,0xae0341bc,0x7003e866,0xb6bc45cf,0x8a24a41b,0xf11a6dea,0xd04c24c2,0x5407151a,0xda5b7b68,0x62c9d27d +.long 0x88cceff6,0x2e964235,0x8b07ed69,0x8594c54f,0xc84d0d0d,0x1578e73c,0xff532868,0x7b4e1055,0xb5ec995a,0xa348c0d5,0x14289a54,0xbf4b9d55,0x58fbd777,0x9ba155a6,0x1a84491d,0x186ed7a8 +.long 0x614c0900,0xd4992b30,0xbd00c24b,0xda98d121,0x7ec4bfa1,0x7f534dc8,0x37dc34bc,0x4a5ff674,0x1d7ea1d7,0x68c196b8,0x80a6d208,0x38cf2893,0xe3cbbd6e,0xfd56cd09,0x4205a5b6,0xec72e27e +.long 0xa44f77f7,0x15ea68f5,0xb43c52bc,0x7aa5f9fd,0x94f0e609,0x86ff676f,0x2e2d432b,0xa4cde963,0xeee470af,0x8cafa0c0,0x8a3f5ec8,0x84137d0e,0xfaa31231,0xebb40411,0x6f7f7ccf,0xa239c13f +.long 0xa8afd30b,0x32865719,0x8a826dce,0x86798328,0xc4a8fbe0,0xdf04e891,0xebf56ad3,0xbb6b6e1b,0x471f1ff0,0x0a695b11,0xbe15baf0,0xd76c3389,0xbe96c43e,0x018edb95,0x90794158,0xf2beaaf4 +.long 0xc3076a27,0x152db09e,0xe416545d,0x5e82908e,0x356d6f2e,0xa2c41272,0x31fd74e1,0xdc9c9642,0x519bf615,0x66ceb88d,0x05a2274e,0xe29ecd76,0xbf5e2fa0,0x3a0473c4,0x64284e67,0x6b6eb671 +.long 0xb88756dd,0xe8b97932,0xf17e3e61,0xed4e8652,0x3ee1c4a4,0xc2dd1499,0x597f8c0e,0xc0aaee17,0x6c168af3,0x15c4edb9,0xb39ae875,0x6563c7bf,0x20adb436,0xadfadb6f,0x9a042ac0,0xad55e8c9 +.long 0xb76da1f5,0x975a1ed8,0xa58acb94,0x10dfa466,0xac060282,0x8dd7f7e3,0x572a051e,0x6813e66a,0x350cb901,0xb4ccae1e,0x50cb7822,0xb653d656,0xdfab3b87,0x42484710,0x9b670fd0,0xcd7ee537 +.long 0x523b8bf6,0x0a50b12e,0x8f910c1b,0x8009eb5b,0x4a167588,0xf535af82,0xfb2a2abd,0x0f835f9c,0x2afceb62,0xf59b2931,0x169d383f,0xc797df2a,0x66ac02b0,0xeb3f5fb0,0xdaa2d0ca,0x029d4c6f +.long 0xafab4bc5,0xd4059bc1,0x56783247,0x833f5c6f,0x8d2d3605,0xb5346630,0xd34d8433,0x83387891,0xadd9419a,0xd973b30f,0xafe3fce8,0xbcca1099,0x0809aac6,0x08178315,0x540f0f11,0x01b7f21a +.long 0x909523c8,0x65c29219,0xa3a1c741,0xa62f648f,0x60c9e55a,0x88598d4f,0x0e4f347a,0xbce9141b,0x35f9b988,0x9af97d84,0x320475b6,0x0210da62,0x9191476c,0x3c076e22,0x44fc7834,0x7520dbd9 +.long 0xc1ab1bbd,0x6a6b2cfe,0xdc650938,0xef8a65be,0x805d7bc4,0x72855540,0xed11fdfd,0xda389396,0x74660876,0xa9d5bd36,0xb45dff35,0x11d67c54,0xa4f5da94,0x6af7d148,0xc0bbeb31,0xbb8d4c3f +.long 0xe0a1b12a,0x87a7ebd1,0x770ba95f,0x1e4ef88d,0xdc2ae9cb,0x8c33345c,0x01cc8403,0xcecf1276,0x1b39b80f,0x687c012e,0x35c33ba4,0xfd90d0ad,0x5c9661c2,0xa3ef5a67,0xe017429e,0x368fc88e +.long 0x196a2fa2,0xd30c6761,0xbd5b312e,0x931b9817,0x72f54a31,0xba01000c,0x66eaa541,0xa203d2c8,0x98939db3,0xf2abdee0,0x3e606c02,0xe37d6c2c,0x521ff643,0xf2921574,0xd7e2fca3,0x2781b3c4 +.long 0x7850ec06,0x664300b0,0x7d3a10cf,0xac5a38b9,0xe34ab39d,0x9233188d,0x5072cbb9,0xe77057e4,0xb59e78df,0xbcf0c042,0x1d97de52,0x4cfc91e8,0x3ee0ca4a,0x4661a26c,0xfb8507bc,0x5620a4c1 +.long 0x049f842c,0x4b44d4aa,0x1540e82b,0xceabc5d5,0x15c6f156,0x306710fd,0x63db1d72,0xbe5ae52b,0x334957f1,0x06f1e7e6,0x31144a70,0x57e388f0,0xdf96447b,0xfb69bb2f,0x73e38a12,0x0f78ebd3 +.long 0x2b7ce542,0xb8222605,0x7472bde1,0xe6d4ce99,0x09d2f4da,0x53e16ebe,0x53b92b2e,0x180ff42e,0x2c34a1c6,0xc59bcc02,0x422c46c2,0x3803d6f9,0x5c14a8a2,0x18aff74f,0x10a08b28,0x55aebf80 +.long 0x7135593f,0x66097d58,0x2be570cd,0x32e6eff7,0x2a8c860d,0x584e6a10,0xa2eb4163,0xcd185890,0x6d97e134,0x7ceae99d,0xdd8447ce,0xd42c6b70,0xb8c50273,0x59ddbb4a,0x3cf34e1e,0x03c612df +.long 0x04b6c5a0,0x84b9ca15,0x18f0e3a3,0x35216f39,0xbd986c00,0x3ec2d2bc,0xd19228fe,0x8bf546d9,0x4cd623c3,0xd1c655a4,0x502b8e5a,0x366ce718,0xeea0bfe7,0x2cfc84b4,0xcf443e8e,0xe01d5cee +.long 0x036520f8,0x8ec045d9,0x92d40e98,0xdfb3c3d1,0xcc559a04,0x0bac4cce,0x240ea6b1,0x35eccae5,0xf8a5a0ac,0x180b32db,0xeb699700,0x547972a5,0xca26bca0,0xa3765801,0xa647f25a,0x57e09d0e +.long 0x2fdd23cc,0xb956970e,0x5682e971,0xb80288bc,0x9ae86ebc,0xe6e6d91e,0x8c9f1939,0x0564c83f,0x39560368,0x551932a2,0x049c28e2,0xe893752b,0xa6a158c3,0x0b03cee5,0x04964263,0xe12d656b +.long 0x63e3bc1d,0x4b47554e,0x45044ff7,0xc719b6a2,0xe48daa07,0x4f24d30a,0xc8c1edc3,0xa3f37556,0x0700d360,0x9a47bf76,0x822ae4e2,0xbb1a1824,0x89f1fb4c,0x22e275a3,0x9968c5f5,0x72b1aa23 +.long 0xbe063f64,0xa75feaca,0xbce47a09,0x9b392f43,0x1ad07aca,0xd4241509,0x8d26cd0f,0x4b0c591b,0x92f1169a,0x2d42ddfd,0x4cbf2392,0x63aeb1ac,0x0691a2af,0x1de9e877,0xd98021da,0xebe79af7 +.long 0x40e50acf,0xcfdf2a4e,0xaf01d665,0xf0a98ad7,0x1831be1f,0xefb640bf,0x80e9ada0,0x6fe8bd2f,0x6cafbc91,0x94c103a1,0x8308e08c,0x170f8759,0x9780ff4f,0x5de2d2ab,0x45b201f2,0x666466bc +.long 0xf5b343bc,0x58af2010,0xf2f142fe,0x0f2e400a,0xa85f4bdf,0x3483bfde,0x03bfeaa9,0xf0b1d093,0xc7081603,0x2ea01b95,0x3dba1097,0xe943e4c9,0xb438f3a6,0x47be92ad,0xe5bf6636,0x00bb7742 +.long 0x824297b4,0x136b7083,0x5584455f,0x9d0e5580,0xf1c7d69e,0xab48cedc,0x2a256e76,0x53a9e481,0x65eb2413,0x0402b0e0,0x8fc407a7,0xdadbbb84,0x8d7f5492,0xa65cd5a4,0x74bae294,0x21d44293 +.long 0x3b5f1cc4,0x66917ce6,0xce872e62,0x37ae52ea,0x2905f244,0xbb087b72,0x1e6af74f,0x12077086,0x1058edea,0x4b644e49,0xb638ca1d,0x827510e3,0x6038591c,0x8cf2b704,0xfe635063,0xffc8b47a +.long 0x1b4d5e63,0x3ae220e6,0x9d961b4b,0xbd864742,0x9bd16bed,0x610c107e,0x1127147b,0x4270352a,0x64cfc50e,0x7d17ffe6,0x1e36cb42,0x50dee01a,0x35dc5f9a,0x068a7622,0xdf53f62c,0x9a08d536 +.long 0x6be5f7de,0x4ed71457,0xc2263c9e,0xd93006f8,0xcacacb36,0xe073694c,0x3ae118ab,0x2ff7a5b4,0xcd871236,0x3cce53f1,0xc2aa6d52,0xf156a39d,0xb198d76d,0x9cc5f271,0x81383d39,0xbc615b6f +.long 0xde3eee6b,0xa54538e8,0xab910d91,0x58c77538,0x58d278bd,0x31e5bdbc,0xb963acae,0x3cde4adf,0x5302169c,0xb1881fd2,0xa989ed8b,0x8ca60fa0,0xff96a0ee,0xa1999458,0xac6c283d,0xc1141f03 +.long 0x6dfafed3,0x7677408d,0x39661588,0x33a01653,0x0b726fa0,0x3c9c15ec,0x6c9b56da,0x090cfd93,0xa3c40af5,0xe34f4bae,0xd21129f1,0x3469eadb,0x1e207ce8,0xcc51674a,0xc83b1ef9,0x1e293b24 +.long 0x1e6c0bb4,0x17173d13,0x90776d35,0x19004695,0x6de6f922,0xe7980e34,0xf4dd9a22,0x873554cb,0xcbf18a51,0x0316c627,0x3032c081,0x4d93651b,0x3946834d,0x207f2771,0x30cdbf80,0x2c08d7b4 +.long 0x86df2a61,0x137a4fb4,0xecf7b4a2,0xa1ed9c07,0x7bd042ff,0xb2e460e2,0x5f62f5ec,0xb7f5e2fa,0xcc2423b7,0x7aa6ec6b,0xba63eea7,0x75ce0a7f,0xf250a6e1,0x67a45fb1,0xe53cdc9f,0x93bc919c +.long 0x871942df,0x9271f56f,0x7859ad66,0x2372ff6f,0x33cb1a78,0x5f4c2b96,0x5838aa83,0xe3e29101,0xe4e8110c,0xa7ed1611,0x330198ce,0x2a2d70d5,0x6720efe0,0xbdf132e8,0x66a471bf,0xe61a8962 +.long 0x825808bd,0x796d3a85,0x3fd6e902,0x51dc3cb7,0x916219d1,0x643c768a,0xa2ad7d32,0x36cd7685,0xb22922a4,0xe3db9d05,0xdba29660,0x6494c87e,0xbcd2ebc7,0xf0ac91df,0x45107f8d,0x4deb57a0 +.long 0xc3d12a73,0x42271f59,0xa5c2c51d,0x5f71687c,0x05797bcb,0xcb1f50c6,0xd6d34eb0,0x29ed0ed9,0x4683c2eb,0xe5fe5b47,0x97447c46,0x4956eeb5,0x71207167,0x5b163a43,0x0248c5ef,0x93fa2fed +.long 0x31f63950,0x67930af2,0x14caa2c9,0xa77797c1,0x27ac7e62,0x526e80ee,0x58b28aec,0xe1e6e626,0xb3c9fef0,0x636178b0,0x6d5f90be,0xaf7752e0,0xeece51cf,0x94ecaf18,0xca806e1f,0x2864d0ed +.long 0x97c69134,0x6de2e383,0xeb291293,0x5a42c316,0x6a60bae0,0xc7779219,0x6b7599d1,0xa24de346,0xb75d4941,0x49d374aa,0x2d501ff0,0x98900586,0xeb7974cf,0x9f16d40e,0xcdd8c115,0x1033860b +.long 0x2094cec3,0xb6c69ac8,0x403b770c,0x9976fb88,0x4859590d,0x1dea026c,0x8562d1fd,0xb6acbb46,0x44569d85,0x7cd6c461,0x97f0891d,0xc3190a36,0x48d5a17d,0xc6f53195,0xd749abc8,0x7d919966 +.long 0xdd1c8a20,0x65104837,0x2f683419,0x7e5410c8,0xbe94022e,0x958c3ca8,0x6145dac2,0x605c3197,0x01683d54,0x3fc07501,0x595b1234,0x1d7127c5,0x9481277f,0x10b8f87c,0xe65a1adb,0x677db2a8 +.long 0xddce3345,0xec2fccaa,0x012a4350,0x2a6811b7,0xac598bdc,0x96760ff1,0xd1bf4128,0x054d652a,0x92a21005,0x0a1151d4,0x33110fdf,0xad7f3971,0x1960100f,0x8c95928c,0x7bf03362,0x6c91c825 +.long 0xce309f06,0xc8c8b2a2,0xca27204b,0xfdb27b59,0x0848e32e,0xd223eaa5,0xe7bfaf1e,0xb93e4b2e,0x44aa3ded,0xc5308ae6,0xc015d573,0x317a666a,0x1a979707,0xc888ce23,0x0d5c4958,0xf141c1e6 +.long 0x61906373,0xb53b7de5,0xeb999595,0x858dbade,0xa59e5c36,0x8cbb47b2,0xdcf4e842,0x660318b3,0x12ba4b7a,0xbd161ccd,0xf8c8282a,0xf399daab,0xeeb2130d,0x1587633a,0xda38dd7d,0xa465311a +.long 0x64d3779b,0x5f75eec8,0xad64c171,0x3c5d0476,0x2a914428,0x87410371,0x90e2fc29,0x8096a891,0x23b3ebc2,0xd3d2ae9d,0xa580cfd6,0x90bdd6db,0xc5b01f6c,0x52dbb7f3,0xe102a2dc,0xe68eded4 +.long 0x99eb6df0,0x17785b77,0x7386b779,0x26c3cc51,0x6417a48e,0x345ed988,0x07d6ef31,0xe990b4e4,0x2586abba,0x0f456b7e,0x59c96e9a,0x239ca6a5,0xe2eb4206,0xe327459c,0xa002b90a,0x3a4c3313 +.long 0xf6a3f6fb,0x2a114806,0x85c251dd,0xad5cad2f,0xf5a784d3,0x92c1f613,0x349766d5,0xec7bfacf,0x3e23cb3b,0x04b3cd33,0xc5a64b2d,0x3979fe84,0x7e589106,0x192e2720,0xa15b527f,0xa60c43d1 +.long 0xbe7cf3a6,0x2dae9082,0xbc967274,0xcc86ba92,0xaea0a8a9,0xf28a2ce8,0x6ee988b3,0x404ca6d9,0x005921b8,0xfd7e9c5d,0x44e79bf9,0xf56297f1,0x0d75ddc2,0xa163b460,0xa1f2be87,0x30b23616 +.long 0xbfe50e2b,0x4b070d21,0xe1bfede1,0x7ef8cfd0,0x2aac4ae0,0xadba0011,0xb9ebd033,0x2a3e7d01,0xe38d9d1c,0x995277ec,0x9c5d2de3,0xb500249e,0xf13ca8c9,0x8912b820,0x877793af,0xc8798114 +.long 0xec3f1dec,0x19e6125d,0x911178da,0x07b1f040,0x904a6738,0xd93ededa,0x0bebedcd,0x55187a5a,0xeb329d41,0xf7d04722,0xf170b391,0xf449099e,0xca99f828,0xfd317a69,0x34a4976d,0x50c3db2b +.long 0x3757b392,0xe9ba7784,0xaa3ca05a,0x326caefd,0xf1e593d4,0x78e5293b,0x0d98fd13,0x7842a937,0x5f96b10d,0xe694bf96,0x06a8cd05,0x373a9df6,0xe8f0c7fc,0x997d1e51,0x63fd972e,0x1d019790 +.long 0x5499fb32,0x0064d858,0x77a8aeb7,0x7b67bad9,0x2d08eec5,0x1d3eb977,0xcbabae1d,0x5fc047a6,0xe54a64bb,0x0577d159,0xc43497e4,0x8862201b,0x2ce0608d,0xad6b4e28,0x0b167aac,0x8b687b7d +.long 0x8b2ecfa9,0x6ed4d367,0xa90c3c38,0x24dfe62d,0x3fe5c42b,0xa1862e10,0xd5732a9f,0x1ca73dca,0x76bb87ad,0x35f038b7,0xf242b81f,0x674976ab,0xb0fd90cd,0x4f2bde7e,0xa7fdf092,0x6efc172e +.long 0x92222f1f,0x3806b69b,0x6cf7ae70,0x5a2459ca,0xa85217ee,0x6789f69c,0xe3dc85ac,0x5f232b5e,0x48e9e516,0x660e3ec5,0x3197eb31,0x124b4e47,0xaafcca23,0x10a0cb13,0x8213224f,0x7bd63ba4 +.long 0x290a7f4f,0xaffad7cc,0x0286b461,0x6b409c9e,0xffa407af,0x58ab809f,0xc68ac073,0xc3122eed,0x4ef24d7e,0x17bf9e50,0x3e2a5811,0x5d929794,0x02902e01,0x519bc867,0x39c8a851,0x76bba5da +.long 0xda94951e,0xe9f9669c,0x66b8d418,0x4b6af58d,0x17d426a4,0xfa321074,0x9dde6027,0xc78e66a9,0x4a53b964,0x0516c083,0xff602330,0xfc659d38,0x58c5c897,0x0ab55e5c,0x838bc5df,0x985099b2 +.long 0xc52fc238,0x061d9efc,0x6ac1da3f,0x712b2728,0x9283fe08,0xfb658149,0xb8aaa2f7,0x4954ac94,0x7fb2e74f,0x85c0ada4,0xb89926b0,0xee8ba98e,0x23d1af5b,0xe4f9d37d,0xba9b015e,0x14ccdbf9 +.long 0x7bfe7178,0xb674481b,0x65405868,0x4e1debae,0xc48c867d,0x061b2821,0x513b30ea,0x69c15b35,0x36871088,0x3b4a1666,0x1220b1ff,0xe5e29f5d,0x233d9f4d,0x4b82bb35,0x18cdc675,0x4e076333 +.long 0xa3e6fced,0x0d53f5c7,0xf45fbdeb,0xe8cbbdd5,0x13339a70,0xf85c01df,0x142ceb81,0x0ff71880,0xbd70437a,0x4c4e8774,0xba0bda6a,0x5fb32891,0xf18bd26e,0x1cdbebd2,0x03a9d522,0x2f9526f1 +.long 0x92c4d684,0x40ce3051,0x7612efcd,0x8b04d725,0x6f9cae20,0xb9dcda36,0xf058856c,0x0edc4d24,0x85427900,0x64f2e6bf,0xdc09dfea,0x3de81295,0x379bf26c,0xd41b4487,0x6df135a9,0x50b62c6d +.long 0xc72dfe67,0xd4f8e3b4,0x90e19fdf,0xc416b0f6,0x4c13bd35,0x18b9098d,0x15b8cb9e,0xac11118a,0xf0062841,0xf598a318,0x89f356f4,0xbfe0602f,0x30177a0c,0x7ae3637e,0x61136537,0x34097747 +.long 0xd005832a,0x0db2fb5e,0x91042e4f,0x5f5efd3b,0xed70f8ca,0x8c4ffdc6,0xb52da9cc,0xe4645d0b,0xc9001d1f,0x9596f58b,0x4e117205,0x52c8f0bc,0xe398a084,0xfd4aa0d2,0x104f49de,0x815bfe3a +.long 0x23885e5f,0x97e5443f,0xe8433aab,0xf72f8f99,0xe4d4e604,0xbd00b154,0xe5e173ff,0xd0b35e6a,0x9164722d,0x57b2a048,0x88761ec8,0x3e3c665b,0x3da83832,0x6bdd1397,0x73dafe3b,0x3c8b1a1e +.long 0x54317cac,0x4497ace6,0x521771b3,0xbe600ab9,0xb0dfe8b8,0xb42e409e,0x3942310f,0x386a67d7,0x4431cc28,0x25548d8d,0x985dc524,0xa7cff142,0x93c4be32,0x4d60f5a1,0xd071c6e1,0x83ebd5c8 +.long 0xb1fd2b0b,0xba3a80a7,0x5bec33e8,0x9b3ad396,0x79743fb3,0xb3868d61,0xfdb462fa,0xcfd169fc,0x9ce0a6af,0xd3b499d7,0xe42d3ff8,0x55dc1cf1,0xc6c3e1b2,0x04fb9e6c,0x6f69a474,0x47e6961d +.long 0xe548b37b,0x54eb3acc,0x84d40549,0xb38e7542,0x7b341b4f,0x8c3daa51,0x690bf7fa,0x2f6928ec,0x86ce6c41,0x0496b323,0x10adadcd,0x01be1c55,0x4bb5faf9,0xc04e67e7,0xe15c9985,0x3cbaf678 +.long 0x50ca4247,0x8cd12145,0xe7dd30aa,0xba1aa47a,0xe58fee24,0x2f81ddf1,0xeec9b0e8,0x03452936,0x243aea96,0x8bdc3b81,0x15c3d0e5,0x9a2919af,0x10948361,0x9ea640ec,0x6e0bcccf,0x5ac86d5b +.long 0xc36cf440,0xf892d918,0xc939719c,0xaed3e837,0xc0218b64,0xb07b08d2,0xce9790dd,0x6f1bcbba,0x60919b8e,0x4a84d6ed,0x8ac1f9eb,0xd8900791,0x0dd5daef,0xf84941aa,0x67fd62c5,0xb22fe40a +.long 0x157f2db3,0x97e15ba2,0x8e28ca9c,0xbda2fc8f,0x37b9f454,0x5d050da4,0x2379d72e,0x3d57eb57,0xfb5ee997,0xe9b5eba2,0xe11538ca,0x01648ca2,0xf6327974,0x32bb76f6,0xff3f4bb7,0x338f14b8 +.long 0xd7ab9a2d,0x524d226a,0x7dfae958,0x9c00090d,0x8751d8c2,0x0ba5f539,0x3ab8262d,0x8afcbcdd,0xe99d043b,0x57392729,0xaebc943a,0xef51263b,0x20862935,0x9feace93,0xb06c817b,0x639efc03 +.long 0x66b4be7a,0x1fe054b3,0x84a37a1e,0x3f25a9de,0x78d75cd9,0xf39ef1ad,0x5062c1b5,0xd7b58f49,0xff563436,0x6f74f9a9,0xe8af51e7,0xf718ff29,0x15e97fec,0x5234d313,0x292f1c0a,0xb6a8e2b1 +.long 0x327720c1,0xa7f53aa8,0xba092cc8,0x956ca322,0x28746c4d,0x8f03d64a,0x66d0d392,0x51fe1782,0x3c832c80,0xd19b34db,0x6da2e3b4,0x60dccc5c,0x0a104ccc,0x245dd62e,0x620b21fd,0xa7ab1de1 +.long 0x3893d123,0xb293ae0b,0xb15ee71c,0xf7b75783,0x42a9468b,0x5aa3c614,0xdb15d744,0xd686123c,0xa7ab4116,0x8c616891,0xa4e6a459,0x6fcd72c8,0x77e5fad7,0xac219110,0x704fa46b,0xfb6a20e7 +.long 0x341d81dc,0xe839be7d,0x32148379,0xcddb6889,0xf7026ead,0xda6211a1,0xf4d1cc5e,0xf3b2575f,0xa7a73ae6,0x40cfc8f6,0x61d5b483,0x83879a5e,0x41a50ebc,0xc5acb1ed,0x3c07d8fa,0x59a60cc8 +.long 0xb1876262,0x1b73bdce,0x12af4ee9,0x2b0d79f0,0xd46e1d07,0x8bcf3b0b,0xe45d152f,0x17d6af9d,0x6d736451,0x73520461,0x56b0bf5a,0x43cbbd97,0xd5999b9d,0xb0833a5b,0xeb72e398,0x702614f0 +.long 0x59c3e9f8,0x0aadf01a,0xce6b3d16,0x40200e77,0xdeddafad,0xda22bdd3,0x310d72e1,0x76dedaf4,0x4bc2e88f,0x49ef807c,0x146dd5a5,0x6ba81291,0x7d8d59e9,0xa1a4077a,0x802db349,0x87b6a2e7 +.long 0x1b4e598e,0xd5679997,0x06fe4b1d,0xf499ef1f,0xfcb267c5,0x3978d3ae,0x235786d0,0xb582b557,0x1715cb07,0x32b3b2ca,0x8480241d,0x4c3de6a2,0xcb571ecd,0x63b5ffed,0xed2fe9a9,0xeaf53900 +.long 0xc3b81990,0xdec98d4a,0x9e0cc8fe,0x1cb83722,0xd2b427b9,0xfe0b0491,0xe983a66c,0x0f2386ac,0xb3291213,0x930c4d1e,0x59a62ae4,0xa2f82b2e,0xf93e89e3,0x77233853,0x11777c7f,0x7f8063ac +.long 0x59ad2877,0xff0eb567,0x9865c754,0x6f454642,0x236e9a84,0xe6fe701a,0x06e40fc3,0xc586ef16,0x24bafad9,0x3f62b6e0,0x64da906a,0xc8b42bd2,0xda3276a0,0xc98e1eb4,0x06cbf852,0x30d0e5fc +.long 0xe8b4dfd4,0x1b6b2ae1,0x8301cbac,0xd754d5c7,0x112a39ac,0x66097629,0x93ba4ab9,0xf86b5999,0x99f9d581,0x26c9dea7,0xc2fafeaa,0x0473b1a8,0x3b2505a5,0x1469af55,0xd6a43323,0x227d16d7 +.long 0xad3d97f9,0x3316f73c,0x1f137455,0x52bf3bb5,0x09954e7c,0x953eafeb,0xdd732411,0xa721dfed,0x141d4579,0xb4929821,0xaa3bd435,0x3411321c,0x17fa6015,0xafb355aa,0x18e42f0e,0xb4e7ef4a +.long 0x59371000,0x604ac97c,0x7f759c18,0xe1c48c70,0xa5db6b65,0x3f62ecc5,0x38a21495,0x0a78b173,0xbcc8ad94,0x6be1819d,0xd89c3400,0x70dc04f6,0xa6b4840a,0x462557b4,0x60bd21c0,0x544c6ade +.long 0x907a544b,0x6a00f24e,0x313da210,0xa7520dcb,0x11e4994b,0xfe939b75,0xbc275d70,0x918b6ba6,0x644be892,0xd3e5e0fc,0xfdaf6c42,0x707a9816,0xf15c13fe,0x60145567,0xe130a54a,0x4818ebaa +.long 0x58d2f767,0x28aad3ad,0xd7e7c773,0xdc5267fd,0xc3afcc98,0x4919cc88,0x2db8cd4b,0xaa2e6ab0,0xd0c63eaa,0xd46fec04,0x19ffa832,0xa1cb92c5,0xe43a631f,0x678dd178,0x3dc788b3,0xfb5ae1cd +.long 0x6e77de04,0x68b4fb90,0xf06dbb97,0x7992bcf0,0xc417c01d,0x896e6a13,0xb956be01,0x8d96332c,0x413aa2b9,0x902fc93a,0xfc98c8a5,0x99a4d915,0x565f1137,0x52c29407,0x21e4f281,0x4072690f +.long 0x02ff6072,0x36e607cf,0x8ad98cdc,0xa47d2ca9,0xf5f56609,0xbf471d1e,0xf264ada0,0xbcf86623,0xaa9e5cb6,0xb70c0687,0x17401c6c,0xc98124f2,0xd4a61435,0x8189635f,0xa9d98ea6,0xd28fb8af +.long 0x40c251f8,0xb9a67c2a,0xa2da44be,0x88cd5d87,0xe09b5423,0x437deb96,0x64287dc1,0x150467db,0xcdabb839,0xe161debb,0xf1839a3e,0xa79e9742,0x652d202b,0xbb8dd3c2,0xe9f97d96,0x7b3e67f7 +.long 0xb1cb6ac9,0x5aa5d78f,0xca1d0d45,0xffa13e8e,0x2ba5bf95,0x369295dd,0x39aff05e,0xd68bd1f8,0x26d783f2,0xaf0d86f9,0xfc3aafc1,0x543a59b3,0x7b7da97c,0x3fcf81d2,0xd25dee46,0xc990a056 +.long 0x519cce2c,0x3e6775b8,0xae13d863,0xfc9af71f,0x47c1605c,0x774a4a6f,0x2fd205e8,0x46ba4245,0xd3fd524d,0xa06feea4,0x6de1acc2,0x1e724641,0x334e2b42,0xf53816f1,0x922f0024,0x49e5918e +.long 0x65c7322d,0x439530b6,0xb3c1b3fb,0xcf12cc01,0x0172f685,0xc70b0186,0x1b58391d,0xb915ee22,0xa317db24,0x9afdf03b,0x17b8ffc4,0x87dec659,0xe4d3d050,0x7f46597b,0x006500e7,0x80a1c1ed +.long 0x78bf030e,0x84902a96,0x50560148,0xfb5e9c9a,0x63362426,0x6dae0a92,0xa9e30c40,0xdcaeecf4,0x518d0c6b,0xc0d887bb,0xcb985b9d,0x99181152,0xef7bc381,0xad186898,0x9ee46201,0x18168ffb +.long 0x2502753c,0x9a04cdaa,0x51407c41,0xbb279e26,0xf23564e5,0xeacb03aa,0x71e61016,0x18336582,0xeb809877,0x8684b8c4,0xea0e672e,0xb336e18d,0x34ee5867,0xefb601f0,0x1341cfd1,0x2733edbe +.long 0x26025c3c,0xb15e809a,0x9350df88,0xe6e981a6,0x8502fd8e,0x92376237,0x0c12be9b,0x4791f216,0x25f02425,0xb7256789,0x7a974443,0xec863194,0xfb41cc52,0x7c0ce882,0xf25c07f2,0xc266ff7e +.long 0x017025f3,0x3d4da8c3,0xfb9579b4,0xefcf628c,0x1f3716ec,0x5c4d0016,0x6801116e,0x9c27ebc4,0x1da1767e,0x5eba0ea1,0x47004c57,0xfe151452,0x8c2373b7,0x3ace6df6,0x5dbc37ac,0x75c3dffe +.long 0xddc925fc,0x3dc32a73,0x2f65ee0b,0xb679c841,0x451cbfeb,0x715a3295,0xf76e9a29,0xd9889768,0xb28ad247,0xec20ce7f,0x00894d79,0xe99146c4,0x9f5e3ea7,0x71457d7c,0x38030031,0x097b2662 +.long 0xcf9f82a8,0xdb7f6ae6,0x438f473a,0x319decb9,0x283856c3,0xa63ab386,0xb06a361b,0x13e3172f,0x7d5a006c,0x2959f8dc,0x75fba752,0x2dbc27c6,0x87c22c9e,0xc1227ab2,0x71a268b2,0x06f61f75 +.long 0x04779ce2,0x1b6bb971,0x0aadcb1d,0xaca83812,0xaeaab2d5,0x297ae0bc,0x5bfb9f13,0xa5c14ee7,0xf17a62c7,0xaa00c583,0x173759f6,0x39eb962c,0x86c9a88f,0x1eeba1d4,0xdf016c5e,0x0ab6c37a +.long 0xa28a0749,0xa2a147db,0xee519165,0x246c20d6,0xd3810715,0x5068d1b1,0x748160b9,0xb1e7018c,0xf380ff62,0x03f5b1fa,0xf3cb2c1e,0xef7fb1dd,0xfc91a7da,0xeab539a8,0xf3f9b561,0x83ddb707 +.long 0xfe7df7a4,0xc550e211,0x063f6f40,0xa7cd07f2,0x2976879c,0xb0de3635,0xe55741da,0xb5f83f85,0xf3d8ac3d,0x4ea9d25e,0x62819f02,0x6fe2066f,0xcef4a564,0x4ab2b9c2,0x5ffa2de3,0x1e155d96 +.long 0xc3a72d00,0x0eb0a19b,0x8513c31b,0x4037665b,0x04c64637,0x2fb2b6bf,0x08cdc639,0x45c34d6e,0xf01fd796,0x56f1e10f,0xfe3667b8,0x4dfb8101,0x9021d0c0,0xe0eda253,0x8a06c6ab,0x7a94e9ff +.long 0xbb9aa882,0x2d3bb0d9,0xec05fd10,0xea20e4e5,0x1a1ca64e,0xed7eeb5f,0xc6327cbd,0x2fa6b43c,0x3aa91121,0xb577e3cf,0x3a34079b,0x8c6bd5ea,0x60e02fc0,0xd7e5ba39,0x90141bf8,0xf16dd2c3 +.long 0x80101b98,0xb57276d9,0xb82f0f66,0x760883fd,0x4bc3eff3,0x89d7de75,0x5dc2ab40,0x03b60643,0xe05beeac,0xcd6e53df,0xbc3325cd,0xf2f1e862,0x774f03c3,0xdd0f7921,0x4552cc1b,0x97ca7221 +.long 0x1cd19f72,0x5a0d6afe,0xf183fbeb,0xa20915dc,0x832c403c,0x9fda4b40,0xbe425442,0x32738edd,0xb5eccf1a,0x469a1df6,0x28bbe1f0,0x4b5aff42,0x570dfc93,0x31359d7f,0xf0088628,0xa18be235 +.long 0xb00ed3a9,0xa5b30fba,0x73cdf8be,0x34c61374,0xabc56797,0x2c5c5f46,0xb82a8ae2,0x5cecf93d,0xa968fbf0,0x7d3dbe41,0x1a5c7f3d,0xd23d4583,0xc087a9c7,0xf28f69a0,0x474471ca,0xc2d75471 +.long 0x4eb732ec,0x36ec9f4a,0xb1ca6bed,0x6c943bbd,0xf2457892,0xd64535e1,0xf7e2ac06,0x8b84a8ea,0x2499dd5f,0xe0936cd3,0x0ed04e57,0x12053d7e,0xe4305d9d,0x4bdd0076,0x1f67f0a2,0x34a527b9 +.long 0x9cec46ea,0xe79a4af0,0x658b9bc7,0xb15347a1,0x35af2f75,0x6bd2796f,0x4051c435,0xac957990,0xc33a655d,0x2669dda3,0x88514aa3,0x5d503c2e,0x3753dd41,0xdfa11337,0x0b754f78,0x3f054673 +.long 0x496125bd,0xbf185677,0x3775006c,0xfb0023c8,0x3a037899,0xfa0f072f,0x0e4aea57,0x4222b6eb,0x7866d25a,0x3dde5e76,0x4837aa6f,0xb6eb04f8,0x2cf1cdb8,0x5315591a,0x2d4e683c,0x6dfb4f41 +.long 0x48ee1f3a,0x7e923ea4,0x05a2afd5,0x9604d9f7,0x40ea4948,0xbe1d4a33,0xb44cbd2f,0x5b45f1f4,0x4acc757e,0x5faf8376,0x63d68ff7,0xa7cf9ab8,0xdf0e404b,0x8ad62f69,0x12bdafdf,0xd65f33c2 +.long 0xa377b14e,0xc365de15,0x8e39f60c,0x6bf5463b,0x2ce68148,0x62030d2d,0xe6f843a8,0xd95867ef,0xef5ab017,0xd39a0244,0x4ab55d12,0x0bd2d8c1,0x41639169,0xc9503db3,0xf7660c8a,0x2d4e25b0 +.long 0xe224c5d7,0x760cb3b5,0x68616919,0xfa3baf8c,0x8d142552,0x9fbca113,0x7669ebf5,0x1ab18bf1,0x9bdf25dd,0x55e6f53e,0xcb6cd154,0x04cc0bf3,0x95e89080,0x595bef49,0x104a9ac1,0xfe9459a8 +.long 0xcce9bb32,0xad2d89ca,0xf7de8285,0xddea65e1,0xb351bd4b,0x62ed8c35,0x0c0e19a7,0x4150ff36,0x345f4e47,0x86e3c801,0x203a266c,0x3bf21f71,0x855b1f13,0x7ae110d4,0x07262517,0x5d6aaf6a +.long 0x813d28f1,0x1e0f12e1,0x7ad7a523,0x6000e11d,0xc744a17b,0xc7d8deef,0x14c05a00,0x1e990b48,0x93e976d5,0x68fddaee,0x46610d63,0x696241d1,0x893dda88,0xb204e7c3,0x6a3a6946,0x8bccfa65 +.long 0xc5cd1411,0xb59425b4,0xff3658b1,0x701b4042,0x4784cf93,0xe3e56bca,0x8fe68d60,0x27de5f15,0xf8d53f19,0x4ab9cfce,0xa40a730d,0xddb10311,0x4eee0a8a,0x6fa73cd1,0x5249719d,0xfd548748 +.long 0xa8123ef0,0x49d66316,0xe7f95438,0x73c32db4,0x0d9e7854,0x2e2ed209,0x9d9f0507,0xf98a9329,0x0c6aa20a,0xc5d33cf6,0x75279bb2,0x9a32ba14,0x774a7307,0x7e3202cb,0xe8c42dbd,0x64ed4bc4 +.long 0xd4caed0d,0xc20f1a06,0x171d22b3,0xb8021407,0xd13268d7,0xd426ca04,0x25f4d126,0x92377007,0x71f21a85,0x4204cbc3,0xf82369ba,0x18461b7a,0x3fc858f9,0xc0c07d31,0xe2bab569,0x5deb5a50 +.long 0xd5eea89e,0xd5959d46,0x08437f4b,0xfdff8424,0x3cfe254f,0xf21071e4,0x95468321,0x72417696,0x102cae3e,0x5d8288b9,0xf1965dff,0x2d143e3d,0xa078d847,0x00c9a376,0x26028731,0x6fc0da31 +.long 0xe45083a2,0xa2baeadf,0x5e5b4bcd,0x66bc7218,0xd04b8e7f,0x2c826442,0x6c4b586b,0xc19f5451,0x5b7eeed5,0x60182c49,0x7aa9dfa1,0xd9954ecd,0xc73884ad,0xa403a8ec,0x9bb39041,0x7fb17de2 +.long 0xabb020e8,0x694b64c5,0x19c4eec7,0x3d18c184,0x1c4793e5,0x9c4673ef,0x056092e6,0xc7b8aeb5,0xf0f8c16b,0x3aa1ca43,0xd679b2f6,0x224ed5ec,0x55a205c9,0x0d56eeaf,0x4b8e028b,0xbfe115ba +.long 0x3927f4fe,0x97e60849,0x759aa7c5,0xf91fbf94,0x6be90a51,0x985af769,0x78ccb823,0xc1277b78,0xe7a75952,0x395b656e,0x928da5f5,0x00df7de0,0x4ca4454f,0x09c23175,0x7aa2d3c1,0x4ec971f4 +.long 0xe75d9ccc,0x45c3c507,0x3dc90306,0x63b7be8a,0x5db44bdc,0x37e09c66,0x6841c6a2,0x50d60da1,0x08df1b12,0x6f9b65ee,0x7ff089df,0x38734879,0x3fe8013d,0x9c331a66,0x5f42fcc8,0x017f5de9 +.long 0xe8e57567,0x43077866,0xf9fcdb18,0xc9f781ce,0x9b12e174,0x38131dda,0x8a03752a,0x25d84aa3,0x4d0c0ce2,0x45e09e09,0x92bebba5,0x1564008b,0xa87284c7,0xf7e8ad31,0x97e7bbaa,0xb7c4b46c +.long 0x97acf4ec,0x3e22a7b3,0x5ea8b640,0x0426c400,0x4e969285,0x5e3295a6,0xa6a45670,0x22aabc59,0x5f5942bc,0xb929714c,0xfa3182ed,0x9a6168bd,0x104152ba,0x2216a665,0xb6926368,0x46908d03 +.long 0x5a1251fb,0xa9f5d874,0xc72725c7,0x967747a8,0x31ffe89e,0x195c33e5,0xe964935e,0x609d210f,0x2fe12227,0xcafd6ca8,0x0426469d,0xaf9b5b96,0x5693183c,0x2e9ee04c,0xc8146fef,0x1084a333 +.long 0xaed1d1f7,0x96649933,0x50563090,0x566eaff3,0xad2e39cf,0x345057f0,0x1f832124,0x148ff65b,0xcf94cf0d,0x042e89d4,0x520c58b3,0x319bec84,0x5361aa0d,0x2a267626,0x8fbc87ad,0xc86fa302 +.long 0x5c8b06d5,0xfc83d2ab,0xfe4eac46,0xb1a785a2,0x846f7779,0xb99315bc,0xef9ea505,0xcf31d816,0x15d7dc85,0x2391fe6a,0xb4016b33,0x2f132b04,0x181cb4c7,0x29547fe3,0x650155a1,0xdb66d8a6 +.long 0xadc1696f,0x6b66d7e1,0x0acd72d0,0x98ebe593,0xcc1b7435,0x65f24550,0xb4b9a5ec,0xce231393,0xdb067df9,0x234a22d4,0xcaff9b00,0x98dda095,0x6100c9c1,0x1bbc75a0,0x939cf695,0x1560a9c8 +.long 0x99e0925f,0xcf006d3e,0x6322375a,0x2dd74a96,0xb56af5ba,0xc58b446a,0xe0b9b4f1,0x50292683,0x1aeaffa3,0xe2c34cb4,0x9b9587c1,0x8b17203f,0xead1350c,0x6d559207,0xfb7f9604,0x2b66a215 +.long 0xfe51bf74,0x0850325e,0x5e460094,0x9c4f579e,0x76da2f25,0x5c87b92a,0x6febef33,0x889de4e0,0x646083ce,0x6900ec06,0xbfe12773,0xbe2a0335,0xc5344110,0xadd1da35,0xb802cd20,0x757568b7 +.long 0x00f7e6c8,0x75559779,0x0facd2f0,0x38e8b94f,0x03fde375,0xfea1f3af,0x75881dfc,0x5e11a1d8,0xc1e2f2ef,0xb3a6b02e,0xc605a6c5,0x193d2bbb,0x339a0b2d,0x325ffeee,0x9e0c8846,0x27b6a724 +.long 0xf1c367ca,0xe4050f1c,0xc90fbc7d,0x9bc85a9b,0xe1a11032,0xa373c4a2,0xad0393a9,0xb64232b7,0x167dad29,0xf5577eb0,0x94b78ab2,0x1604f301,0xe829348b,0x0baa94af,0x41654342,0x77fbd8dd +.long 0xb964e39a,0xdab50ea5,0xd0d3c76e,0xd4c29e3c,0x56d11964,0x80dae67c,0xe5ffcc2f,0x7307a8bf,0x91708c3b,0x65bbc1aa,0x28bf0eeb,0xa151e62c,0x6fa34db7,0x6cb53381,0xa29403a8,0x5139e05c +.long 0x94a7cd2e,0x6ff651b4,0x0699336c,0x5671ffd1,0x979a896a,0x6f5fd2cc,0xd8148cef,0x11e893a8,0x65cf7b10,0x988906a1,0xc50d8485,0x81b67178,0x8a35b3de,0x7c0deb35,0xc1d29799,0x423ac855 +.long 0xdac50b74,0xaf580d87,0x5869734c,0x28b2b89f,0x874e28fb,0x99a3b936,0x25f3f73a,0xbb2c9190,0x84a9d5b7,0x199f6918,0x7e770374,0x7ebe2325,0x0738efe2,0xf442e107,0xcf9082d2,0xcf9f3f56 +.long 0x09618708,0x719f69e1,0xc183f9b1,0xcc9e8364,0x366a21af,0xec203a95,0x068b141f,0x6aec5d6d,0x994f04e9,0xee2df78a,0x271245b0,0xb39ccae8,0x97e43f4f,0xb875a4a9,0xdb2cea98,0x507dfe11 +.long 0x489b03e9,0x4fbf81cb,0x6ec414fa,0xdb86ec5b,0xf51b3ae5,0xfad444f9,0x1914e3fe,0xca7d33d6,0x0ae6c4d0,0xa9c32f5c,0x73969568,0xa9ca1d1e,0x1aa7467e,0x98043c31,0xe21b5ac6,0xe832e75c +.long 0x5232123d,0x314b7aea,0x65ae86db,0x08307c8c,0xaa4668ed,0x06e7165c,0xb4d3ec39,0xb170458b,0xc19bb986,0x4d2e3ec6,0xae0304ed,0xc5f34846,0x6c9f9722,0x917695a0,0x4cab1c0a,0x6c7f7317 +.long 0x9d6d2e8b,0x6295940e,0x549f7c97,0xd318b8c1,0x97713885,0x22453204,0xa8a440fe,0x468d834b,0xbfba796e,0xd81fe5b2,0x6d71f116,0x152364db,0xb5b66e53,0xbb8c7c59,0x2641a192,0x0b12c61b +.long 0xfcf0a7fd,0x31f14802,0x5488b01e,0x42fd0789,0x9952b498,0x71d78d6d,0x07ac5201,0x8eb572d9,0x4d194a88,0xe0a2a44c,0xba017e66,0xd2b63fd9,0xf888aefc,0x78efc6c8,0x4a881a11,0xb76f6bda +.long 0xb46c2397,0x187f314b,0x5ded2819,0x004cf566,0x38764d34,0xa9ea5704,0x78084709,0xbba45217,0x1171121e,0x06474571,0xe7c9b671,0xad7b7eb1,0x730f7507,0xdacfbc40,0xc7ad7bd1,0x178cd8c6 +.long 0xb2a67238,0xbf0be101,0xaf9c14f2,0x3556d367,0xa5662075,0x104b7831,0x79d9e60a,0x58ca59bb,0xa569a73b,0x4bc45392,0x5698f6c9,0x517a52e8,0xaeadd755,0x85643da5,0x2a581b84,0x1aed0cd5 +.long 0x80af1372,0xb9b4ff84,0xf1ba5d1f,0x244c3113,0xf5f98d31,0x2a5dacbe,0x4375bc2a,0x2c3323e8,0x5594b1dd,0x17a3ab4a,0xceb4797e,0xa1928bfb,0xe4886a19,0xe83af245,0x72b5a74a,0x8979d546 +.long 0x19f9e967,0xa0f726bc,0xe8fbbf4e,0xd9d03152,0xb7707d40,0xcfd6f51d,0x63f6e6e0,0x633084d9,0x55667eaf,0xedcd9cdc,0x2e44d56f,0x73b7f92b,0x4e962b14,0xfb2e39b6,0xf671fcbf,0x7d408f6e +.long 0x164a89bb,0xcc634ddc,0x3ef3bd05,0x74a42bb2,0x428decbb,0x1280dbb2,0x402c8596,0x6103f6bb,0x355a5752,0xfa2bf581,0x00946674,0x562f96a8,0x6da0223b,0x4e4ca16d,0x28d3aa25,0xfe47819f +.long 0xf8dfcf8a,0x9eea3075,0x95669825,0xa284f0aa,0x867d3fd8,0xb3fca250,0x269d691e,0x20757b5f,0x93b8a5de,0xf2c24020,0xebc06da6,0xd3f93359,0xb2739c33,0x1178293e,0xbcd686e5,0xd2a3e770 +.long 0xcd941534,0xa76f49f4,0xe3c71c0e,0x0d37406b,0x3b97f7e3,0x172d9397,0xbd7fd0de,0xec17e239,0x6f496ba2,0xe3290551,0x36ad50e7,0x6a693172,0x83e7eff5,0xc4e539a2,0x18e1b4cf,0x752737e7 +.long 0x68af43ee,0xa2f7932c,0x703d00bd,0x5502468e,0x2fb061f5,0xe5dc978f,0x28c815ad,0xc9a1904a,0x470c56a4,0xd3af538d,0x193d8ced,0x159abc5f,0x20108ef3,0x2a37245f,0x223f7178,0xfa17081e +.long 0x10c8c0f5,0x27b0fb2b,0x40650547,0x2102c3ea,0x8ac3bfa7,0x594564df,0x509dad96,0x98102033,0xf1d18a13,0x6989643f,0xd7fc5af0,0x35eebd91,0xfaeaafd8,0x078d096a,0xdef3de98,0xb7a89341 +.long 0xecf2a73a,0x2a206e8d,0x8e551994,0x066a6397,0xb98d53a2,0x3a6a088a,0x2d1124aa,0x0ce7c67c,0x759a113c,0x48cec671,0x4f6f67fa,0xe3b373d3,0xfd36727b,0x5455d479,0xa13c0d81,0xe5a428ee +.long 0x1c86682b,0xb853dbc8,0xb8d02b2a,0xb78d2727,0x8ebc329a,0xaaf69bed,0x293b2148,0xdb6b40b3,0xb8c4961f,0xe42ea77d,0x20e5e0ab,0xb1a12f7c,0x79e8b05e,0xa0ec5274,0xfab60a80,0x68027391 +.long 0x16b1bd5e,0x6bfeea5f,0x4de30ad3,0xf957e420,0x6a353b9e,0xcbaf664e,0x26d14feb,0x5c873312,0xb65f57cb,0x4e87f98c,0x5e0cdd41,0xdb60a621,0xa6881440,0x67c16865,0x46ab52aa,0x1093ef1a +.long 0x3f4ece64,0xc095afb5,0x7604551a,0x6a6bb02e,0x0b26b8cd,0x55d44b4e,0xf971268a,0xe5f9a999,0x11a7de84,0xc08ec425,0xfda469dd,0x83568095,0x6c6c90a2,0x737bfba1,0xbe229831,0x1cb9c4a0 +.long 0xbb2eec64,0x93bccbba,0xda03adbe,0xa0c23b64,0xe0e86ac4,0x5f7aa00a,0xfc1401e6,0x470b941e,0x9df43574,0x5ad8d679,0x0f65d810,0x4ccfb8a9,0xaa7fbd81,0x1bce80e3,0x9508d20a,0x273291ad +.long 0x42a92806,0xf5c4b46b,0xa86ab44a,0x810684ec,0xca0bc9f8,0x4591640b,0x5c4b6054,0xb5efcdfc,0x6e9edd12,0x16fc8907,0xd4d792f9,0xe29d0b50,0x9b03116d,0xa45fd01c,0xc81765a4,0x85035235 +.long 0xb4b4b67c,0x1fe2a9b2,0xe8020604,0xc1d10df0,0xbc8058d8,0x9d64abfc,0x712a0fbb,0x8943b9b2,0x3b3def04,0x90eed914,0x4ce775ff,0x85ab3aa2,0x7bbc9040,0x605fd4ca,0xe2c75dfb,0x8b34a564 +.long 0x10358560,0x41ffc94a,0x9e5c28aa,0x2d8a5072,0x4cc7eb15,0xe915a0fc,0x8f6d0f5d,0xe9efab05,0xd19e9b91,0xdbab47a9,0x0276154c,0x8cfed745,0x2cfede0d,0x154357ae,0x19f5a4ef,0x520630df +.long 0xe382360f,0x25759f7c,0x88bf5857,0xb6db05c9,0x6c58d46c,0x2917d61d,0xfd20cb7a,0x14f8e491,0x11c20340,0xb68a727a,0xaf7ccbb6,0x0386f86f,0xfee09a20,0x5c8bc6cc,0xbb7eea35,0x7d76ff4a +.long 0xdb15be7a,0xa7bdebe7,0xd89f0302,0x67a08054,0xc1193364,0x56bf0ea9,0x62837ebe,0xc8244467,0x20d841b8,0x32bd8e8b,0xdbb8a54f,0x127a0548,0x63b20236,0x83dd4ca6,0x203491fa,0x87714718 +.long 0xaa8a5288,0x4dabcaaa,0xaf23a1c9,0x91cc0c8a,0x3f220e0c,0x34c72c6a,0x1232144a,0xbcc20bdf,0xa20ede1b,0x6e2f42da,0x74a00515,0xc441f00c,0x734b8c4b,0xbf46a5b6,0x7b56c9a4,0x57409503 +.long 0xe4585d45,0x9f735261,0x6734e642,0x9231faed,0xbe70ee6c,0x1158a176,0x7c3501bf,0x35f1068d,0xa2d26115,0x6beef900,0xef0afee3,0x649406f2,0xbc2420a1,0x3f43a60a,0xd5aee4ac,0x509002a7 +.long 0x3ff3571b,0xb46836a5,0x837927c1,0x24f98b78,0x4533c716,0x6254256a,0xd07ee196,0xf27abb0b,0x5c6d5bfd,0xd7cf64fc,0xf0cd7a77,0x6915c751,0x8798f534,0xd9f59012,0xf81d8b5f,0x772b0da8 +.long 0x2e03fa69,0x1244260c,0x3be1a374,0x36cf0e3a,0xef06b960,0x6e7c1633,0x671f90f6,0xa71a4c55,0x33c673db,0x7a941251,0x73e8c131,0xc0bea510,0xd4f6c734,0x61a8a699,0x341ed001,0x25e78c88 +.long 0x8e2f7d90,0x5c18acf8,0x77be32cd,0xfdbf33d7,0xd2eb5ee9,0x0a085cd7,0xb3201115,0x2d702cfb,0x85c88ce8,0xb6e0ebdb,0x1e01d617,0x23a3ce3c,0x567333ac,0x3041618e,0x157edb6b,0x9dd0fd8f +.long 0xb57872b8,0x27f74702,0x657d5fe1,0x2ef26b4f,0x57cf3d40,0x95426f0a,0x65a6067a,0x847e2ad1,0x09996a74,0xd474d9a0,0x2a26115c,0x16a56acd,0xd16f4d43,0x02a615c3,0xaadb85b7,0xcc3fc965 +.long 0xce07d1b0,0x386bda73,0x58ad4178,0xd82910c2,0xcd2617f4,0x124f82cf,0xef691770,0xcc2f5e8d,0xb8c30ccc,0x82702550,0x1a8e575a,0x7b856aea,0xb1ab9459,0xbb822fef,0xec24e38e,0x085928bc +.long 0xba8f4b4d,0x5d0402ec,0x00b4d58b,0xc07cd4ba,0x29227e7a,0x5d8dffd5,0x31bf386f,0x61d44d0c,0x135e6f4d,0xe486dc2b,0xe79410ef,0x680962eb,0xf10088b5,0xa61bd343,0xe2e28686,0x6aa76076 +.long 0x8fb98871,0x80463d11,0xbbc76aff,0xcb26f5c3,0xfbe03614,0xd4ab8edd,0xc0cf2dee,0xc8eb579b,0xc93bae41,0xcc004c15,0x3aeca3b2,0x46fbae5d,0x0f1e9ab1,0x671235cf,0x9ec285c1,0xadfba934 +.long 0xf216c980,0x88ded013,0xf79e0bc1,0xc8ac4fb8,0xfb97a237,0xa29b89c6,0x9922d8e7,0xb697b780,0xddb945b5,0x3142c639,0xe094c3a9,0x447b06c7,0x72266c90,0xcdcb3642,0xa9385046,0x633aad08 +.long 0xb57c6477,0xa36c936b,0xe94dbcc6,0x871f8b64,0xa591a67b,0x28d0fb62,0xc1d926f5,0x9d40e081,0xf2d84b5a,0x3111eaf6,0xa565b644,0x228993f9,0x2c83188b,0x0ccbf592,0x3df3e197,0xf87b30ab +.long 0x7642bca8,0xb8658b31,0x52800f17,0x1a032d7f,0x79bf9445,0x051dcae5,0x54a2e253,0xeba6b8ee,0xd4485692,0x5c8b9cad,0x8986e9be,0x84bda40e,0x2f0db448,0xd16d16a4,0xa14d4188,0x8ec80050 +.long 0x98fa7aaa,0xb2b26107,0xf073aa4e,0x41209ee4,0xf2d6b19b,0xf1570359,0xfc577caf,0xcbe6868c,0x32c04dd3,0x186c4bdc,0xcfeee397,0xa6c35fae,0xf086c0cf,0xb4a1b312,0xd9461fe2,0xe0a5ccc6 +.long 0x1536189f,0xc32278aa,0xba6df571,0x1126c55f,0xb194560e,0x0f71a602,0x324bd6e1,0x8b2d7405,0x3738be71,0x8481939e,0x1a4d97a9,0xb5090b1a,0xf05ba915,0x116c65a3,0xaae448aa,0x21863ad3 +.long 0xa7aae5d3,0xd24e2679,0x0de5c1c4,0x7076013d,0xbb05b629,0x2d50f8ba,0x6e66efbb,0x73c1abe2,0xf2488af7,0xefd4b422,0x663ba575,0xe4105d02,0x53a69457,0x7eb60a8b,0xc945973b,0x62210008 +.long 0x77a50ec6,0xfb255478,0x0a37a72c,0xbf0392f7,0x4be18e7a,0xa0a7a19c,0x25b1e0af,0x90d8ea16,0xef953f57,0x7582a293,0xbdc5465a,0x90a64d05,0xe2510717,0xca79c497,0x18cb641f,0x560dbb7c +.long 0x4b66abfb,0x1d8e3286,0x59030900,0xd26f52e5,0x5584941a,0x1ee3f643,0x569f5958,0x6d3b3730,0x4789dba5,0x9ff2a62f,0x72b5c9b7,0x91fcb815,0x6c8f9a0e,0xf446cb7d,0x39b7ecb5,0x48f625c1 +.long 0x1c6219b8,0xbabae801,0x28ac2f23,0xe7a562d9,0x26e20588,0xe1b48732,0x775af051,0x06ee1cad,0xfaff79f7,0xda29ae43,0x652ee9e0,0xc141a412,0x195f4bd0,0x1e127f6f,0x072f34f8,0x29c6ab4f +.long 0x30448112,0x7b7c1477,0xe4a38656,0x82b51af1,0x2f315010,0x2bf2028a,0x6ea88cd4,0xc9a4a01f,0x257e5818,0xf63e95d8,0xb4519b16,0xdd8efa10,0x0da910bf,0xed8973e0,0x5c0fe4a9,0xed49d077 +.long 0xb7caee1e,0xac3aac5e,0xa7f4da57,0x1033898d,0x5c6669b9,0x42145c0e,0xc1aa2aa0,0x42daa688,0x1a1d885a,0x629cc15c,0xf4b76817,0x25572ec0,0x9c8f8f28,0x8312e435,0x81965490,0x8107f8cd +.long 0x6fa6110c,0x516ff3a3,0xfb93561f,0x74fb1eb1,0x8457522b,0x6c0c9047,0x6bb8bdc6,0xcfd32104,0xcc80ad57,0x2d6884a2,0x86a9b637,0x7c27fc35,0xadf4e8cd,0x3461baed,0x617242f0,0x1d56251a +.long 0xc955bef4,0x0b80d209,0x06adb047,0xdf02cad2,0x5ec74fee,0xf0d7cb91,0x1111ba44,0xd2503375,0xdf53cb36,0x9671755e,0x3368551b,0x54dcb612,0xc8a025a4,0x66d69aac,0xe77ef445,0x6be946c6 +.long 0xa995e094,0x719946d1,0xe51e04d8,0x65e848f6,0x6a1e3113,0xe62f3300,0x501de503,0x1541c7c1,0xf4acfade,0x4daac9fa,0x44cd0b71,0x0e585897,0x0a51cd77,0x544fd869,0x0031016d,0x60fc20ed +.long 0xa4276867,0x58b404ec,0x34f34993,0x46f6c3cc,0xc636e5bd,0x477ca007,0x7c458b47,0x8018f5e5,0xe47b668f,0xa1202270,0xee14f203,0xcef48ccd,0x62ff9b4d,0x23f98bae,0xc589eddd,0x55acc035 +.long 0x64db4444,0x3fe712af,0xbecdd480,0x19e9d634,0xa930978a,0xe08bc047,0xa1280733,0x2dbf24ec,0x2cd706b2,0x3c0ae38c,0x359017b9,0x5b012a5b,0x72e0f5ae,0x3943c38c,0x57176fa3,0x786167ea +.long 0x594881dc,0xe5f9897d,0xcfb820c1,0x6b5efad8,0xd55018de,0xb2179093,0x0bac56ce,0x39ad7d32,0x2cfc0e81,0xb55122e0,0xf6d89daa,0x117c4661,0xcb64fa09,0x362d01e1,0x3e9c4ddd,0x6a309b4e +.long 0xabea49b1,0xfa979fb7,0x10e2c6c5,0xb4b1d27d,0x23afde7a,0xbd61c2c4,0x9786d358,0xeb6614f8,0x7f6f7459,0x4a5d816b,0x09360e7b,0xe431a44f,0xc309914c,0x8c27a032,0xcaede3d8,0xcea5d68a +.long 0x3a0a3f95,0x3668f665,0x7ceba27b,0x89369416,0xe4728fe9,0x89981fad,0x8a093562,0x7102c8a0,0x235d21c8,0xbb80310e,0xbefb7f7b,0x505e55d1,0x12958a67,0xa0a90811,0x4d851fef,0xd67e106a +.long 0x431dd80e,0xb84011a9,0x73306cd9,0xeb7c7cca,0xd1b3b730,0x20fadd29,0xfe37b3d3,0x83858b5b,0xb6251d5c,0xbf4cd193,0x1352d952,0x1cca1fd3,0x90fbc051,0xc66157a4,0x89b98636,0x7990a638 +.long 0x87dec0e1,0xe5aa692a,0xf7b39d00,0x010ded8d,0x54cfa0b5,0x7b1b80c8,0xa0f8ea28,0x66beb876,0x3476cd0e,0x50d7f531,0xb08d3949,0xa63d0e65,0x53479fc6,0x1a09eea9,0xf499e742,0x82ae9891 +.long 0x5ca7d866,0xab58b910,0x3adb3b34,0x582967e2,0xcceac0bc,0x89ae4447,0x7bf56af5,0x919c667c,0x60f5dcd7,0x9aec17b1,0xddcaadbc,0xec697b9f,0x463467f5,0x0b98f341,0xa967132f,0xb187f1f7 +.long 0x214aeb18,0x90fe7a1d,0x741432f7,0x1506af3c,0xe591a0c4,0xbb5565f9,0xb44f1bc3,0x10d41a77,0xa84bde96,0xa09d65e4,0xf20a6a1c,0x42f060d8,0xf27f9ce7,0x652a3bfd,0x3b3d739f,0xb6bdb65c +.long 0xec7fae9f,0xeb5ddcb6,0xefb66e5a,0x995f2714,0x69445d52,0xdee95d8e,0x09e27620,0x1b6c2d46,0x8129d716,0x32621c31,0x0958c1aa,0xb03909f1,0x1af4af63,0x8c468ef9,0xfba5cdf6,0x162c429f +.long 0x753b9371,0x2f682343,0x5f1f9cd7,0x29cab45a,0xb245db96,0x571623ab,0x3fd79999,0xc507db09,0xaf036c32,0x4e2ef652,0x05018e5c,0x86f0cc78,0xab8be350,0xc10a73d4,0x7e826327,0x6519b397 +.long 0x9c053df7,0xe8cb5eef,0xb300ea6f,0x8de25b37,0xc849cffb,0xdb03fa92,0xe84169bb,0x242e43a7,0xdd6f958e,0xe4fa51f4,0xf4445a8d,0x6925a77f,0xe90d8949,0xe6e72a50,0x2b1f6390,0xc66648e3 +.long 0x173e460c,0xb2ab1957,0x30704590,0x1bbbce75,0xdb1c7162,0xc0a90dbd,0x15cdd65d,0x505e399e,0x57797ab7,0x68434dcb,0x6a2ca8e8,0x60ad35ba,0xde3336c1,0x4bfdb1e0,0xd8b39015,0xbbef99eb +.long 0x1711ebec,0x6c3b96f3,0xce98fdc4,0x2da40f1f,0x57b4411f,0xb99774d3,0x15b65bb6,0x87c8bdf4,0xc2eef12d,0xda3a89e3,0x3c7471f3,0xde95bb9b,0xd812c594,0x600f225b,0x2b75a56b,0x54907c5d +.long 0x8db60e35,0xa93cc5f0,0xfa833319,0x743e3cd6,0xf81683c9,0x7dad5c41,0x9c34107e,0x70c1e7d9,0xa6be0907,0x0edc4a39,0x86d0b7d3,0x36d47035,0x272bfa60,0x8c76da03,0x0f08a414,0x0b4a07ea +.long 0x45c1dd53,0x699e4d29,0x231debb5,0xcadc5898,0xa77f00e0,0xdf49fcc7,0xa73e5a0e,0x93057bbf,0x027a4cd1,0x2f8b7ecd,0xc614011a,0x114734b3,0x67677c68,0xe7a01db7,0x7e273f4f,0x89d9be5e +.long 0x089808ef,0xd225cb2e,0xd59e4107,0xf1f7a27d,0x8211b9c9,0x53afc761,0xe6819159,0x0361bc67,0x7f071426,0x2a865d0b,0xe7072567,0x6a3c1810,0x0d6bcabd,0x3e3bca1e,0x408591bc,0xa1b02bc1 +.long 0x31fba239,0xe0deee59,0x98bd91d1,0xf47424d3,0x071a3c1d,0x0f8886f4,0xa819233b,0x3f7d41e8,0xcf6eb998,0x708623c2,0x609a287f,0x86bb49af,0x63c90762,0x942bb249,0x55a9654b,0x0ef6eea5 +.long 0x36f5defe,0x5f6d2d72,0x56f99176,0xfa9922dc,0xf78ce0c7,0x6c8c5ece,0xbe09b55e,0x7b44589d,0x9ea83770,0xe11b3bca,0x2ab71547,0xd7fa2c7f,0x2a1ddcc0,0x2a3dd6fa,0x5a7b7707,0x09acb430 +.long 0x649d4e57,0x4add4a2e,0x1917526e,0xcd53a2b0,0x20b44ac4,0xc5262330,0xbaa2c31d,0x4028746a,0x64291d4c,0x51318390,0xee5ad909,0xbf48f151,0x7b185681,0xcce57f59,0x4854d442,0x7c3ac1b0 +.long 0xc093c171,0x65587dc3,0x24f42b65,0xae7acb24,0x955996cb,0x5a338adb,0x6051f91b,0xc8e65675,0x28b8d0b1,0x66711fba,0xb6c10a90,0x15d74137,0x3a232a80,0x70cdd7eb,0x6191ed24,0xc9e2f07f +.long 0xf79588c0,0xa80d1db6,0xb55768cc,0xfa52fc69,0x7f54438a,0x0b4df1ae,0xf9b46a4f,0x0cadd1a7,0x1803dd6f,0xb40ea6b3,0x55eaae35,0x488e4fa5,0x382e4e16,0x9f047d55,0x2f6e0c98,0xc9b5b7e0 +.long 0x95762649,0x6b1bd2d3,0xc7aea3f6,0xa9604ee7,0x6dc6f896,0x3646ff27,0x2860bad1,0x9bf0e7f5,0x7cb44b92,0x2d92c821,0xaea9c182,0xa2f5ce63,0x9154a5fd,0xd0a2afb1,0x95801da6,0x482e474c +.long 0xb611c24b,0xc19972d0,0x60a8f351,0x1d468e65,0x7bcf6421,0xeb758069,0x88fbc491,0xec9dd0ee,0x956c2e32,0x5b59d2bf,0xdcddf94e,0x73dc6864,0xbcee7665,0xfd5e2321,0x5e9a06c4,0xa7b4f8ef +.long 0x7280f855,0xfba918dd,0x8baec688,0xbbaac260,0x33400f42,0xa3b3f00f,0x66f2e6e4,0x3d2dba29,0x98509375,0xb6f71a94,0xcea423cc,0x8f33031f,0x4807e6fb,0x009b8dd0,0x5cdb954c,0x5163cfe5 +.long 0xcf41c6e8,0x03cc8f17,0x037b925c,0xf1f03c2a,0x66d2427c,0xc39c19cc,0x7b6c18e4,0x823d24ba,0x901f0b4f,0x32ef9013,0xf8941c2e,0x684360f1,0x2c28092e,0x0ebaff52,0x256c932f,0x7891e4e3 +.long 0xac445e3d,0x51264319,0x8ea74381,0x553432e7,0x67e9c50a,0xe6eeaa69,0x62e628c7,0x27ced284,0x7a4afa57,0x3f96d375,0xe484c150,0xde0a14c3,0x38bd9923,0x364a24eb,0xe5177422,0x1df18da0 +.long 0xd8d38a9b,0x174e8f82,0xe7de1391,0x2e97c600,0xa1c175dd,0xc5709850,0x32ae5035,0x969041a0,0x76a2086b,0xcbfd533b,0xd7c2e8fe,0xd6bba71b,0x099dfb67,0xb2d58ee6,0x064a85d9,0x3a8b342d +.long 0x522f9be3,0x3bc07649,0xdf1f49a8,0x690c075b,0x3854ec42,0x80e1aee8,0x17689dc7,0x2a7dbf44,0x3faf4078,0xc004fc0e,0xdf11862c,0xb2f02e9e,0xa0a1b7b3,0xf10a5e0f,0x8936ec80,0x30aca623 +.long 0x02f40d9a,0xf83cbf05,0x2c318a4d,0x4681c468,0x0e9c2674,0x98575618,0x1847092e,0xbe79d046,0x78bd01e0,0xaf1e480a,0x72a51db9,0x6dd359e4,0xe3afbab6,0x62ce3821,0x17733199,0xc5cee5b6 +.long 0x6ffd9fbb,0xe08b30d4,0x36c610b7,0x6e5bc699,0x9ce262cf,0xf343cff2,0x68b914c1,0xca2e4e35,0x16de36c5,0x011d64c0,0x42e2b829,0xe0b10fdd,0x6685aaf8,0x78942981,0x230ede97,0xe7511708 +.long 0x3b922bf8,0x671ed8fc,0x4c29b133,0xe4d8c0a0,0x3b6e99c4,0x87eb1239,0x8793beba,0xaff3974c,0x2c18df9b,0x03749405,0x91007139,0xc5c3a293,0xe37a0b95,0x6a77234f,0xb661c96b,0x02c29a21 +.long 0x141ecf61,0xc3aaf1d6,0x3bb22f53,0x9195509e,0x22d51357,0x29597404,0x537bed60,0x1b083822,0xe07289f0,0xcd7d6e35,0x6dd86eff,0x1f94c48c,0xeb0f9cfa,0xc8bb1f82,0x1b2eb97d,0x9ee0b7e6 +.long 0x34d74e31,0x5a52fe2e,0x3bf79ab6,0xa352c310,0xabfeeb8f,0x97ff6c5a,0xf5c97305,0xbfbe8fef,0xa7904608,0xd6081ce6,0xc4fca249,0x1f812f3a,0xb9e5e200,0x9b24bc9a,0x38012ee8,0x91022c67 +.long 0x30a713a1,0xe83d9c5d,0x84ef0f93,0x4876e3f0,0xc1fbf928,0xc9777029,0xbce7d2a4,0xef7a6bb3,0xdfa2a659,0xb8067228,0xd877a48f,0xd5cd3398,0x025d0f3f,0xbea4fd8f,0x2eae7c2b,0xd67d2e35 +.long 0xcc5f4394,0x184de7d7,0x4536e142,0xb5551b5c,0xd34aa60a,0x2e89b212,0xf50051d5,0x14a96fea,0x0d12bb0b,0x4e21ef74,0x60b9677e,0xc522f020,0x2df7731d,0x8b12e467,0x7b326d31,0x39f80382 +.long 0x39024a94,0xdfb8630c,0x97319452,0xaacb96a8,0xeda3867c,0xd68a3961,0x77c4ffca,0x0c58e2b0,0x4da919fa,0x3d545d63,0xf15e2289,0xef79b69a,0x808bab10,0x54bc3d3d,0x45f82c37,0xc8ab3007 +.long 0x7c4a658a,0xc12738b6,0x40e72182,0xb3c47639,0x8798e44f,0x3b77be46,0x17a7f85f,0xdc047df2,0x5e59d92d,0x2439d4c5,0xe8e64d8d,0xcedca475,0x87ca9b16,0xa724cd0d,0xa5540dfe,0x35e4fd59 +.long 0xe4bcf6b1,0xf8c1ff18,0x295018fa,0x856d6285,0x3263c949,0x433f665c,0xa1f21409,0xa6a76dd6,0xcc7b4f79,0x17d32334,0x06720e4a,0xa1d03122,0x81d9bed5,0xadb6661d,0x11db15d1,0xf0d6fb02 +.long 0x1fb747d2,0x7fd11ad5,0x3033762b,0xab50f959,0xfbefaf5a,0x2a7e711b,0x3fef2bbf,0xc7393278,0x0df6f9be,0xe29fa244,0x71efd215,0x9092757b,0x4f3d6fd9,0xee60e311,0x0acfb78b,0x338542d4 +.long 0x38961a0f,0x44a23f08,0x986987ca,0x1426eade,0x4a863cc6,0x36e6ee2e,0x628b8b79,0x48059420,0x7396e1de,0x30303ad8,0x38c5aad1,0x5c8bdc48,0x5c8f5066,0x3e40e11f,0x8d246bbd,0xabd6e768 +.long 0x23330a01,0x68aa40bb,0xc34eafa0,0xd23f5ee4,0x5de02c21,0x3bbee315,0xd1d8dd06,0x18dd4397,0x122d7b44,0x3ba1939a,0xa33870d6,0xe6d3b40a,0x1c4fe3f8,0x8e620f70,0xd3a50cbf,0xf6bba1a5 +.long 0xcfc0aee0,0x4a78bde5,0xc08c50bd,0x847edc46,0xad63c9b2,0xbaa2439c,0x10fc2acb,0xceb4a728,0x26da033d,0xa419e40e,0x03e02683,0x6cc3889d,0xfdccf725,0x1cd28559,0x8d13d208,0x0fd7e0f1 +.long 0x1f0df9d4,0x01b9733b,0xa2b5e4f3,0x8cc2c5f3,0x3a304fd4,0x43053bfa,0x0a9f1aa7,0x8e87665c,0xd73dc965,0x087f29ec,0x3e9023db,0x15ace455,0x2bce28b4,0x2370e309,0xb6b1e84a,0xf9723442 +.long 0xb72d9f26,0xbeee662e,0xf0e47109,0xb19396de,0xe13289d0,0x85b1fa73,0x54e58e32,0x436cf77e,0xe990ef77,0x0ec833b3,0x1b11fc25,0x7373e3ed,0x0fc332ce,0xbe0eda87,0x8d7ea856,0xced04970 +.long 0x7e977ca0,0xf85ff785,0xdfdd5d2b,0xb66ee8da,0x905af461,0xf5e37950,0x966d487c,0x587b9090,0x32ba0127,0x6a198a1b,0x141615ac,0xa7720e07,0x996ef2f2,0xa23f3499,0x470bcb3d,0xef5f64b4 +.long 0x92b8c559,0xa526a962,0x69740a0f,0x0c14aac0,0xa6bdc0a5,0x0d41a9e3,0x9c48aef4,0x97d52106,0x3e7c253b,0xcf16bd30,0x47fdedc1,0xcc834b1a,0x373aab2e,0x7362c6e5,0xc5f590ff,0x264ed85e +.long 0x66d41870,0x7a46d9c0,0x4787ba09,0xa50c20b1,0xe3d44635,0x185e7e51,0x31e2d8dc,0xb3b3e080,0xa179e9d9,0xbed1e558,0x74a76781,0x2daa3f79,0x3a40864f,0x4372baf2,0x4fe75cb5,0x46900c54 +.long 0xf76765d0,0xb95f171e,0x95c87502,0x4ad726d2,0x4d7c99bd,0x2ec769da,0xc36cdfa8,0x5e2ddd19,0xa93e6dea,0xc22117fc,0x93771123,0xe8a2583b,0xfa08a3a2,0xbe2f6089,0x8f0e1112,0x4809d5ed +.long 0xda7a095e,0x3b414aa3,0x26f5aadd,0x9049acf1,0x6be8b84a,0x78d46a4d,0xb732b9b3,0xd66b1963,0xde6e9555,0x5c2ac2a0,0xb5bd8770,0xcf52d098,0x0fd28921,0x15a15fa6,0x8b27536d,0x56ccb81e +.long 0x9f4ccbb8,0x0f0d8ab8,0xdb221729,0xed5f44d2,0x00bed10c,0x43141988,0x1d735b8b,0xc94348a4,0x29ef8479,0x79f3e9c4,0x614c693f,0x4c13a4e3,0x8e143a14,0x32c9af56,0xe29ac5c4,0xbc517799 +.long 0x2774856f,0x05e17992,0x6c1bf55f,0x6e52fb05,0xe4f19e16,0xaeda4225,0xaf5ccb26,0x70f4728a,0xb2947f22,0x5d2118d1,0x281d6fb9,0xc827ea16,0x8cf0eabd,0x8412328d,0x03ef9dcf,0x45ee9fb2 +.long 0xbb937d63,0x8e700421,0xcc4b37a6,0xdf8ff2d5,0x5ced7b68,0xa4c0d5b2,0xc7308f59,0x6537c1ef,0x3b37f8e8,0x25ce6a26,0xdeebc6ce,0x170e9a9b,0x8728d72c,0xdd037952,0x850154bc,0x445b0e55 +.long 0x83a7337b,0x4b7d0e06,0xffecf249,0x1e3416d4,0x66a2b71f,0x24840eff,0xb37cc26d,0xd0d9a50a,0x6fe28ef7,0xe2198150,0x23324c7f,0x3cc5ef16,0x769b5263,0x220f3455,0xa10bf475,0xe2ade2f1 +.long 0x458d3671,0x28cd20fa,0x2dc4847b,0x1549722c,0x591941e3,0x6dd01e55,0x27128ccb,0x0e6fbcea,0x3bef0262,0xae1a1e6b,0x8f54e103,0xfa8c472c,0x72c052ec,0x7539c0a8,0x5a3490e9,0xd7b27369 +.long 0x71684349,0x143fe1f1,0x32e19b97,0x36b4722e,0x90980aff,0xdc059227,0x9e13d674,0x175c9c88,0x6e6bfdb1,0xa7de5b22,0xbedb4b46,0x5ea5b7b2,0xd34a6e44,0xd5570191,0xa24ff7e6,0xfcf60d2e +.long 0x677819e1,0x614a392d,0xaa5a29e8,0x7be74c7e,0x63c85f3f,0xab50fece,0x46cab337,0xaca2e2a9,0x122a6fe3,0x7f700388,0x882a04a8,0xdb69f703,0xcf7aed57,0x9a77935d,0x8d91c86f,0xdf16207c +.long 0x63ed9998,0x2fca49ab,0xa77ddf96,0xa3125c44,0x24344072,0x05dd8a86,0xfec3fb56,0xa023dda2,0x0c743032,0x421b41fc,0x5e438639,0x4f2120c1,0xc83c1b07,0xfb7cae51,0xcac2171a,0xb2370caa +.long 0x6cc820fb,0x2eb2d962,0xb85a44bf,0x59feee5c,0x5b6598f0,0x94620fca,0x7e314051,0x6b922cae,0x106bed4e,0xff8745ad,0xdfa1e9ab,0x546e71f5,0x1ec29487,0x935c1e48,0x4d936530,0x9509216c +.long 0x85c9a2db,0xc7ca3067,0x6be8606f,0xd6ae5152,0xe14c651d,0x09dbcae6,0x9bc32f96,0xc9536e23,0x34521b03,0xa90535a9,0x878756ff,0xf39c526c,0x8aedf03c,0x383172ec,0xefe0c034,0x20a8075e +.long 0x64026422,0xf22f9c62,0x24b9d076,0x8dd10780,0x3bef2950,0x944c742a,0x88a2b00b,0x55b9502e,0x86a09817,0xa59e14b4,0x47bb4071,0xa39dd3ac,0x3be0592f,0x55137f66,0xc9e63f5b,0x07fcafd4 +.long 0x346eb226,0x963652ee,0xec2facb7,0x7dfab085,0x691add26,0x273bf2b8,0xf2b46c44,0x30d74540,0xf2c2d065,0x05e8e73e,0xd42eeac9,0xff9b8a00,0x97209d22,0x2fcbd205,0xde14ea2c,0xeb740ffa +.long 0xa8aef518,0xc71ff913,0xfff4cfa2,0x7bfc74bb,0xb6b36048,0x1716680c,0x9ef79af1,0x121b2cce,0xa01eb3d3,0xbff3c836,0x5f79077b,0x50eb1c6a,0xa004bbcf,0xa48c32d6,0x7d64f61d,0x47a59316 +.long 0x93102016,0x6068147f,0x94d12576,0x12c5f654,0xc9bc6b91,0xefb071a7,0x6e23ea95,0x7c2da0c5,0xd4a1dd5d,0xf4fd45b6,0x9122b13c,0x3e7ad9b6,0xe6f57a48,0x342ca118,0x06f8288f,0x1c2e94a7 +.long 0x5a97d231,0x99e68f07,0x4d838758,0x7c80de97,0x05872727,0xbce0f5d0,0x19c4d016,0xbe5d95c2,0x9c2492ee,0x921d5cb1,0x404d6fb3,0x42192dc1,0x32f988d3,0x4c84dcd1,0xa17b8e85,0xde26d61f +.long 0x137c7408,0xc466dcb6,0x36a266da,0x9a38d7b6,0x83bebf1b,0x7ef5cb06,0x0fd014e3,0xe5cdcbbf,0xf65965a0,0x30aa376d,0xebb3e95e,0x60fe88c2,0x66ee6f20,0x33fd0b61,0x3f41f0a0,0x8827dcdb +.long 0x0c56c690,0xbf8a9d24,0xddb7641d,0x40265dad,0x3a6b662b,0x522b05bf,0xb1478c9b,0x466d1dfe,0x1484469b,0xaa616962,0x02df8f9f,0x0db60549,0x3cb8bf51,0xc37bca02,0x21371ce8,0x5effe346 +.long 0xff112c32,0xe8f65264,0x7b971fb2,0x8a9c736d,0x7b75080d,0xa4f19470,0x8839c59b,0xfc3f2c5a,0x5aeb49c2,0x1d6c777e,0xda1addfe,0xf3db034d,0x5535affc,0xd76fee5a,0xb92251fd,0x0853ac70 +.long 0x8b2a29d5,0x37e3d594,0x4de00ddb,0x28f1f457,0xf42c328b,0x8083c1b5,0xe493c73b,0xd8ef1d8f,0x41dc61bd,0x96fb6260,0x27ee2f8a,0xf74e8a9d,0x2c946a5d,0x7c605a80,0x3839ccfd,0xeed48d65 +.long 0x3a29467a,0x9894344f,0xc51eba6d,0xde81e949,0xa5e5c2f2,0xdaea066b,0x08c8c7b3,0x3fc8a614,0x06d0de9f,0x7adff88f,0x3b75ce0a,0xbbc11cf5,0xfbbc87d5,0x9fbb7acc,0x7badfde2,0xa1458e26 +.long 0xe039c256,0x1cb43668,0x7c17fd5d,0x5f26fb8b,0x79aa062b,0xeee426af,0xd78fbf04,0x072002d0,0xe84fb7e3,0x4c9ca237,0x0c82133d,0xb401d8a1,0x6d7e4181,0xaaa52592,0x73dbb152,0xe9430833 +.long 0xbe24319a,0xf92dda31,0xe095a8e7,0x03f7d28b,0x98782185,0xa52fe840,0x29c24dbc,0x276ddafe,0x1d7a64eb,0x80cd5496,0x7f1dbe42,0xe4360889,0x8438d2d5,0x2f81a877,0x85169036,0x7e4d52a8 +.long 0x1d59715d,0x19e3d5b1,0xd788983e,0xc7eaa762,0xabf1f248,0xe5a730b0,0xfae3fd83,0xfbab8084,0x53765b2f,0x65e50d21,0xfa127f3d,0xbdd4e083,0x397b1b10,0x9cf3c074,0xb1b59fd3,0x59f8090c +.long 0x615faa8f,0x7b15fd9d,0x968554ed,0x8fa1eb40,0x7aa44882,0x7bb4447e,0x029fff32,0x2bb2d0d1,0x6caa6d2f,0x075e2a64,0x22e7351b,0x8eb879de,0x9a506c62,0xbcd5624e,0xa87e24dc,0x218eaef0 +.long 0x44ddfa35,0x37e56847,0xdab3f747,0x9ccfc5c5,0x1ee96cf4,0x9ac1df3f,0x3b480b8f,0x0c0571a1,0x4b3a7b3c,0x2fbeb3d5,0x5dcdbb99,0x35c03669,0xb2415b3a,0x52a0f5dc,0x4413ed9a,0xd57759b4 +.long 0x3d30a2c5,0x1fe647d8,0xf78a81dc,0x0857f77e,0x131a4a9b,0x11d5a334,0x29d393f5,0xc0a94af9,0xdaa6ec1a,0xbc3a5c0b,0x88d2d7ed,0xba9fe493,0xbb614797,0xbb4335b4,0x72f83533,0x991c4d68 +.long 0xd2f01cb3,0x53258c28,0xd75db0b1,0x93d6eaa3,0xe87d0db4,0x419a2b0d,0xd8fe8493,0xa1e48f03,0xc508b23a,0xf747faf6,0x35d53549,0xf137571a,0xfcf9b838,0x9f5e58e2,0xa7fd3cf5,0xc7186cee +.long 0xe978a1d3,0x77b868ce,0x7ab92d04,0xe3a68b33,0x87a5b862,0x51029794,0x3a61d41d,0x5f0606c3,0x6f9326f1,0x2814be27,0xc6fe3c2e,0x2f521c14,0xacdf7351,0x17464d7d,0x777f7e44,0x10f5f9d3 +.long 0x269fb37d,0xce8e616b,0x7de62de5,0xaaf73804,0x4fdd4153,0xaba11175,0x3770b49b,0x515759ba,0xaa423a61,0x8b09ebf8,0xcd41fb92,0x592245a1,0x9b4c8936,0x1cba8ec1,0xaf36710e,0xa87e91e3 +.long 0x3d34a2e3,0x1fd84ce4,0xb43b5d61,0xee3759ce,0x619186c7,0x895bc78c,0xcbb9725a,0xf19c3809,0xde744b1f,0xc0be21aa,0x60f8056b,0xa7d222b0,0xb23efe11,0x74be6157,0x0cd68253,0x6fab2b4f +.long 0x4bf1d725,0xad33ea5f,0x4f6c950f,0x9c1d8ee2,0xa377af06,0x544ee78a,0x94a113e1,0x54f489bb,0x992fb7e8,0x8f11d634,0xa2a44347,0x0169a7aa,0x95020e00,0x1d49d4af,0xe08e120b,0x95945722 +.long 0xa4d32282,0xb6e33878,0x48020ae7,0xe36e029d,0x37a9b750,0xe05847fb,0xb29e3819,0xf876812c,0xd23a17f0,0x84ad138e,0xf0b3950e,0x6d7b4480,0x2fd67ae0,0xdfa8aef4,0x52333af6,0x8d3eea24 +.long 0xb15d5acc,0x0d052075,0xbd815bc4,0xc6d9c79f,0xdfa36cf2,0x8dcafd88,0x38aa9070,0x908ccbe2,0xba35afce,0x638722c4,0xfd6abf0b,0x5a3da8b0,0xc9c335c1,0x2dce252c,0x65aa799b,0x84e7f0de +.long 0xb99a72cb,0x2101a522,0x87618016,0x06de6e67,0xe6f3653e,0x5ff8c7cd,0xc7a6754a,0x0a821ab5,0x7cb0b5a2,0x7e3fa52b,0xc9048790,0xa7fb121c,0x06ce053a,0x1a725020,0x04e929b0,0xb490a31f +.long 0x62dd61ad,0xe17be47d,0x6be01371,0x781a961c,0xdae3cbba,0x1063bfd3,0x7f73c9ba,0x35647406,0x2736a129,0xf50e957b,0xed13f256,0xa6313702,0x3a19fcc5,0x9436ee65,0xe7a4c8b6,0xcf2bdb29 +.long 0xc5f95cd8,0xb06b1244,0xf4ab95f4,0xda8c8af0,0xb9e5836d,0x1bae59c2,0x3acffffc,0x07d51e7e,0xc2ccbcda,0x01e15e6a,0x8528c3e0,0x3bc1923f,0xa49fead4,0x43324577,0x2aa7a711,0x61a1b884 +.long 0x700230ef,0xf9a86e08,0xbd19adf8,0x0af585a1,0xf55ad8f2,0x7645f361,0x46c3614c,0x6e676223,0x4e774d3f,0x23cb257c,0xac102d1b,0x82a38513,0x7b126aa5,0x9bcddd88,0xeefd3ee4,0xe716998b +.long 0xfb167583,0x4239d571,0xd16c8f8a,0xdd011c78,0x69a27519,0x271c2895,0xd2d64b6a,0x9ce0a3b7,0xd5ec6738,0x8c977289,0x8840ef6b,0xa3b49f9a,0x9a453419,0x808c14c9,0x0cf0a2d5,0x5c00295b +.long 0x1d4bcc76,0x524414fb,0x459a88f1,0xb07691d2,0xf70d110f,0x77f43263,0xb7abf9f3,0x64ada5e0,0x5b544cf5,0xafd0f94e,0xfd2713fe,0xb4a13a15,0x250c74f4,0xb99b7d6e,0x20324e45,0x097f2f73 +.long 0xaffa8208,0x994b37d8,0xdc29aafc,0xc3c31b0b,0x7a3a607f,0x3da74651,0xfe6955d6,0xd8e1b8c1,0xc8418682,0x716e1815,0x7dc91d97,0x541d487f,0xc6996982,0x48a04669,0x83a6502e,0xf39cab15 +.long 0xe68db055,0x025801a0,0xba3338d5,0xf3569758,0xee2afa84,0xb0c8c0aa,0xfb6562d1,0x4f6985d3,0x132ed17a,0x351f1f15,0xc04365fe,0x510ed0b4,0xe5b1f066,0xa3f98138,0x32df03dc,0xbc9d95d6 +.long 0x19abd09e,0xa83ccf6e,0x4ff17edb,0x0b4097c1,0xd64a06ce,0x58a5c478,0x544a58fd,0x2ddcc3fd,0x9e8153b8,0xd449503d,0x7774179b,0x3324fd02,0xdbd9120c,0xaf5d47c8,0x34fa94db,0xeb860162 +.long 0x972f07f4,0x5817bdd1,0xd27bbceb,0xe5579e2e,0x5f11e5a6,0x86847a1f,0x7c3cf048,0xb39ed255,0xa2f62e55,0xe1076417,0x1bcf82a2,0x6b9ab38f,0x7aeb29f9,0x4bb7c319,0x17227a46,0xf6d17da3 +.long 0x0f968c00,0xab53ddbd,0x000c880b,0xa03da7ec,0x6a9ad24d,0x7b239624,0x01ec60d0,0x612c0401,0x109f5df1,0x70d10493,0x80af7550,0xfbda4030,0xc6b9a9b3,0x30b93f95,0x007d9418,0x0c74ec71 +.long 0x6edb951f,0x94175564,0x7f22c282,0x5f4a9d78,0xb38d1196,0xb7870895,0xa228ce7c,0xbc593df3,0x6af3641a,0xc78c5bd4,0x3d9b3dcc,0x7802200b,0x8be33304,0x0dc73f32,0x61ffb79a,0x847ed87d +.long 0x6d671192,0xf85c974e,0xde16f60f,0x1e14100a,0x95c38797,0x45cb0d5a,0x9b022da4,0x18923bba,0xbbe7e86e,0xef2be899,0x216067bf,0x4a1510ee,0x84d5ce3e,0xd98c8154,0xf92a2b90,0x1af777f0 +.long 0x4ef65724,0x9fbcb400,0x3c0ca6fe,0x3e04a4c9,0x55002994,0xfb3e2cb5,0x5363ecab,0x1f3a93c5,0x3923555b,0x1fe00efe,0x1e1751ea,0x744bedd9,0x6ab69357,0x3fb2db59,0xf5e6618b,0x8dbd7365 +.long 0xdf1ea40e,0x99d53099,0x57d61e64,0xb3f24a0b,0x596eb812,0xd088a198,0x5762940b,0x22c8361b,0xf9c0d95c,0x66f01f97,0x8e43cdae,0x88461172,0xb72b15c3,0x11599a7f,0x420d95cc,0x135a7536 +.long 0x5f7ae2f6,0x2dcdf0f7,0xd7fa6da2,0x15fc6e1d,0xd1d441b6,0x81ca829a,0x04a106b6,0x84c10cf8,0xa73fbbd0,0xa9b26c95,0x4d8f6ee8,0x7f24e0cb,0x1e25a043,0x48b45937,0x036f3dfe,0xf8a74fca +.long 0xc9f84296,0x1ed46585,0x3bc278b0,0x7fbaa8fb,0x6c4fcbd0,0xa8e96cd4,0x73b60a5f,0x940a1202,0x55a4aec8,0x34aae120,0xdbd742f0,0x550e9a74,0x228c68ab,0x794456d7,0xa4e25ec6,0x492f8868 +.long 0xb2d8f398,0x682915ad,0x5b84c953,0xf13b51cc,0x5bb917d6,0xcda90ab8,0x4ea3dee1,0x4b615560,0x0a52c1c8,0x578b4e85,0x20b75fc4,0xeab1a695,0xaa0bb3c6,0x60c14f3c,0xb8216094,0x220f448a +.long 0xb0e63d34,0x4fe7ee31,0xa9e54fab,0xf4600572,0xd5e7b5a4,0xc0493334,0x06d54831,0x8589fb92,0x6583553a,0xaa70f5cc,0xe25649e5,0x0879094a,0x10044652,0xcc904507,0x02541c4f,0xebb0696d +.long 0xb9718710,0x5a171fde,0xf374a9f5,0x38f1bed8,0xba39bdc1,0xc8c582e1,0x908cc0ce,0xfc457b0a,0x883841e2,0x9a187fd4,0x38725381,0x8ec25b39,0x96f84395,0x2553ed05,0x6f6c6897,0x095c7661 +.long 0x4bdc5610,0x917ac85c,0x179eb301,0xb2885fe4,0x8b78bdcc,0x5fc65547,0xe59e4699,0x4a9fc893,0x3ce299af,0xbb7ff0cd,0xadf38b20,0x195be9b3,0xd38ddb8f,0x6a929c87,0xb21a51b9,0x55fcc99c +.long 0x721a4593,0x2b695b4c,0x768eaac2,0xed1e9a15,0x7489f914,0xfb63d71c,0x78118910,0xf98ba31c,0x9b128eb4,0x80291373,0xd448af4a,0x7801214e,0x55418dd3,0xdbd2e22b,0xd3998242,0xeffb3c0d +.long 0xc7bf3827,0xdfa6077c,0x47f8238f,0xf2165bcb,0x8564d554,0xfe37cf68,0x0a81fb98,0xe5f825c4,0xffed4d6f,0x43cc4f67,0xb50a34b0,0xbc609578,0x5041faf1,0x8aa8fcf9,0x651773b6,0x5659f053 +.long 0x6044d63b,0xe87582c3,0x0cdb0ca0,0xa6089409,0xbfb2bcf6,0x8c993e0f,0x45985cfc,0xfc64a719,0x83dbedba,0x15c4da80,0x2be67df7,0x804ae112,0xa23defde,0xda4c9658,0x5156e0d3,0x12002ddd +.long 0x5dd21b96,0xe68eae89,0xcf44624d,0x8b99f28b,0x1ec8897a,0x0ae00808,0x6712f76e,0xdd0a9303,0x4e233de4,0x96237522,0x2b36a8a5,0x192445b1,0x023993d9,0xabf9ff74,0x2aad4a8f,0x21f37bf4 +.long 0xf8bd2bbd,0x340a4349,0x4868195d,0x1d902cd9,0xe5fdb6f1,0x3d27bbf1,0x124f9f1c,0x7a5ab088,0xf7a09e03,0xc466ab06,0x31f2c123,0x2f8a1977,0x041b6657,0xda355dc7,0x8ece2a7c,0xcb840d12 +.long 0x7db32675,0xb600ad9f,0x07a06f1b,0x78fea133,0xb31f6094,0x5d032269,0x83ec37aa,0x07753ef5,0x9c0bea78,0x03485aed,0xbc3f4524,0x41bb3989,0x697f726d,0x09403761,0xdf394820,0x6109beb3 +.long 0x3b6d1145,0x804111ea,0xa8582654,0xb6271ea9,0x24e66562,0x619615e6,0xd7b6ad9c,0xa2554945,0x99bfe35f,0xd9c4985e,0x7b51cdf6,0x9770ccc0,0x92881832,0x7c327013,0x286b26d1,0x8777d45f +.long 0xd847999d,0x9bbeda22,0xc3525d32,0x03aa33b6,0x28a959a1,0x4b7b96d4,0x31e5d234,0xbb3786e5,0x6961f247,0xaeb5d3ce,0x02f93d3f,0x20aa85af,0xd7a7ae4f,0x9cd1ad3d,0x781adaa8,0xbf6688f0 +.long 0x7469cead,0xb1b40e86,0x309fca48,0x1904c524,0x4b54bbc7,0x9b7312af,0x593affa2,0xbe24bf8f,0xbd98764b,0xbe5e0790,0xa26e299e,0xa0f45f17,0x6b8fe4c7,0x4af0d2c2,0x8ae8a3e6,0xef170db1 +.long 0x29e0ccc1,0x0e8d61a0,0x60ad36ca,0xcd53e87e,0xc8173822,0x328c6623,0xa496be55,0x7ee1767d,0x648945af,0x89f13259,0x25c8009c,0x9e45a5fd,0x1f61ab8c,0xaf2febd9,0x8a275385,0x43f6bc86 +.long 0xf2142e79,0x87792348,0xc6e6238a,0x17d89259,0x4a839d9b,0x7536d2f6,0x76a1fbdc,0x1f428fce,0x0db06dfe,0x1c109601,0x50a3a3cc,0xbfc16bc1,0x9b30f41b,0xf9cbd9ec,0x00138cce,0x5b5da0d6 +.long 0x56ef96a7,0xec1d0a48,0x982bf842,0xb47eb848,0xec3f700d,0x66deae32,0xaa1181e0,0x4e43c42c,0xd1a4aa2a,0xa1d72a31,0xc004f3ce,0x440d4668,0x45fe8a7a,0x0d6a2d3b,0xfb128365,0x820e52e2 +.long 0x25e51b09,0x29ac5fcf,0x2023d159,0x180cd2bf,0xa1ebf90e,0xa9892171,0x7c132181,0xf97c4c87,0xc03dbb7e,0x9f1dc724,0x018cbbe4,0xae043765,0x0767d153,0xfb0b2a36,0x249cbaeb,0xa8e2f4d6 +.long 0xd95ea168,0x172a5247,0x2970764a,0x1758fada,0x1d978169,0xac803a51,0xde77e01b,0x299cfe2e,0xb0a98927,0x652a1e17,0x20014495,0x2e26e1d1,0x7175b56a,0x7ae0af9f,0xd64b9f95,0xc2e22a80 +.long 0xd90a060a,0x4d0ff9fb,0xbaf38085,0x496a27db,0xda776bcf,0x32305401,0x725f209e,0xb8cdcef6,0x436a0bba,0x61ba0f37,0x76860049,0x263fa108,0xda3542cf,0x92beb98e,0xd5849538,0xa2d4d14a +.long 0x12e9a1bc,0x989b9d68,0x5f6e3268,0x61d9075c,0x99ace638,0x352c6aa9,0x920f43ff,0xde4e4a55,0xd673c017,0xe5e4144a,0x6f6e05ea,0x667417ae,0xdcd1bd56,0x613416ae,0x86693711,0x5eb36201 +.long 0x3a1aa914,0x2d7bc504,0x76dc5975,0x175a1299,0x3fc8125c,0xe900e0f2,0x11198875,0x569ef68c,0x63a113b4,0x9012db63,0x98835766,0xe3bd3f56,0x76412dea,0xa5c94a52,0xaa735e5c,0xad9e2a09 +.long 0x508b65e9,0x405a984c,0x6df1a0d1,0xbde4a1d1,0xdfba80da,0x1a9433a1,0x9440ad2e,0xe9192ff9,0x5099fe92,0x9f649696,0x0b27a54a,0x25ddb65c,0xc590da61,0x178279dd,0xfbde681a,0x5479a999 +.long 0x013fe162,0xd0e84e05,0x632d471b,0xbe11dc92,0xfc0e089f,0xdf0b0c45,0x4c144025,0x04fb15b0,0x13c99927,0xa61d5fc2,0x3de2eb35,0xa033e9e0,0xb8dacbb4,0xf8185d5c,0x8644549d,0x9a88e265 +.long 0x54671ff6,0xf717af62,0x5fa58603,0x4bd4241b,0xe67773c0,0x06fba40b,0x6a2847e9,0xc1d933d2,0x689e2c70,0xf4f5acf3,0x46bafd31,0x92aab0e7,0x3473f6e5,0x798d76aa,0x93141934,0xcc6641db +.long 0xd31e535e,0xcae27757,0x87c2ee11,0x04cc43b6,0x2e029ffa,0x8d1f9675,0xe4cc7a2c,0xc2150672,0x8d68b013,0x3b03c1e0,0xedf298f3,0xa9d6816f,0xa2804464,0x1bfbb529,0x5db22125,0x95a52fae +.long 0x0e1cb64e,0x55b32160,0x7e7fc9fe,0x004828f6,0x1bb0fb93,0x13394b82,0x35f1a920,0xb6293a2d,0xd145d2d9,0xde35ef21,0xbb8fa603,0xbe6225b3,0x32cf252d,0x00fc8f6b,0x117cf8c2,0xa28e52e6 +.long 0x4c371e6d,0x9d1dc89b,0x36ef0f28,0xcebe0675,0xa4292f81,0x5de05d09,0x353e3083,0xa8303593,0x7e37a9bb,0xa1715b0a,0x2b8faec3,0x8c56f61e,0x33c9b102,0x52507431,0xa44431f0,0x0130cefc +.long 0xbd865cfb,0x56039fa0,0xbc5f1dd7,0x4b03e578,0xbabe7224,0x40edf2e4,0x3a1988f6,0xc752496d,0x564beb6b,0xd1572d3b,0x39a1c608,0x0db1d110,0x16f60126,0x568d1934,0xf354af33,0x05ae9668 +.long 0xc92544f2,0x19de6d37,0xa35837d5,0xcc084353,0x1a514ece,0xcbb6869c,0x2e1d1066,0xb633e728,0x936c581c,0xf15dd69f,0x7439c4f9,0x96e7b8ce,0x2e448a5b,0x5e676f48,0xfd916bbb,0xb2ca7d5b +.long 0xf5024025,0xd55a2541,0xe4c2d937,0x47bc5769,0x0362189f,0x7d31b92a,0xef7816f9,0x83f3086e,0xb587579a,0xf9f46d94,0x30e76c5f,0xec2d22d8,0xb000ffcf,0x27d57461,0x364ffc2c,0xbb7e65f9 +.long 0x6652a220,0x7c7c9477,0xd696c981,0x61618f89,0x89effff3,0x5021701d,0x7c314163,0xf2c8ff8e,0x8efb4d3e,0x2da413ad,0xce176d95,0x937b5adf,0x2a67d51c,0x22867d34,0x18eb3ac9,0x262b9b10 +.long 0xc43ff28b,0x4e314fe4,0x6a664e7a,0x76476627,0xb7a565c2,0x3e90e40b,0xc1acf831,0x8588993a,0x8f938829,0xd7b501d6,0x3edd7d4c,0x996627ee,0x90cd34c7,0x37d44a62,0xf3833e8d,0xa8327499 +.long 0x4bf50353,0x2e18917d,0x556765fb,0x85dd726b,0x93d5ab66,0x54fe65d6,0x915c25fe,0x3ddbaced,0x12f22e85,0xa799d9a4,0x6d06f6bc,0xe2a24867,0x43ca1637,0xf4f1ee56,0x61ece30a,0xfda2828b +.long 0xa2dee7a6,0x758c1a3e,0x734b2284,0xdcde2f3c,0x4eaba6ad,0xaba445d2,0x76cee0a7,0x35aaf668,0xe5aa049a,0x7e0b04a9,0x91103e84,0xe74083ad,0x40afecc3,0xbeb183ce,0xea043f7a,0x6b89de9f +.long 0xfe67ba66,0x0e299d23,0x93cf2f34,0x91450760,0x97fcf913,0xf45b5ea9,0x8bd7ddda,0x5be00843,0xd53ff04d,0x358c3e05,0x5de91ef7,0xbf7ccdc3,0xb69ec1a0,0xad684dbf,0x801fd997,0x367e7cf2 +.long 0xb0dc8595,0x0ca1f3b7,0x9f1d9f2e,0x27de4608,0xbadd82a7,0x1af3bf39,0x65862448,0x79356a79,0xf5f9a052,0xc0602345,0x139a42f9,0x1a8b0f89,0x844d40fc,0xb53eee42,0x4e5b6368,0x93b0bfe5 +.long 0xc024789c,0x5434dd02,0x41b57bfc,0x90dca9ea,0x243398df,0x8aa898e2,0x894a94bb,0xf607c834,0xc2c99b76,0xbb07be97,0x18c29302,0x6576ba67,0xe703a88c,0x3d79efcc,0xb6a0d106,0xf259ced7 +.long 0xc8de610b,0x0f893a5d,0x67e223ce,0xe8c515fb,0x4ead6dc5,0x7774bfa6,0x925c728f,0x89d20f95,0x098583ce,0x7a1e0966,0x93f2a7d7,0xa2eedb94,0x4c304d4a,0x1b282097,0xc077282d,0x0842e3da +.long 0x3b9e2d7b,0xe4d972a3,0xc48218ff,0x7cc60b27,0x84149d91,0x8fc70838,0x2f461ecc,0x5c04346f,0x614650a9,0xebe9fdf2,0xc1f666ac,0x5e35b537,0x88babc83,0x645613d1,0xc5e1c93e,0x88cace3a +.long 0x3de92e23,0x209ca375,0x5fbbb6e3,0xccb03cc8,0xd7b1487e,0xccb90f03,0xc710941f,0xfa9c2a38,0x6724ceed,0x756c3823,0x192d0323,0x3a902258,0xea5e038e,0xb150e519,0xc7427591,0xdcba2865 +.long 0x78890732,0xe549237f,0x53fcb4d9,0xc443bef9,0xeb3480d6,0x9884d8a6,0x3048b186,0x8a35b6a1,0x65e9a90a,0xb4e44716,0x653006c0,0x45bf380d,0x4fe9ae3b,0x8f3f820d,0x979a3b71,0x244a35a0 +.long 0x74cd06ff,0xa1010e9d,0xaca3eeac,0x9c17c7df,0x8063aa2b,0x74c86cd3,0x734614ff,0x8595c4b3,0x990f62cc,0xa3de00ca,0xca0c3be5,0xd9bed213,0xdf8ce9f5,0x7886078a,0x5cd44444,0xddb27ce3 +.long 0x58926ddd,0xed374a66,0x908015b8,0x138b2d49,0xde1f7ab8,0x886c6579,0xc3020b7a,0x888b9aa0,0x3a96e355,0xd3ec034e,0xf30fbe9a,0xba65b0b8,0xff21367a,0x064c8e50,0x0b04b46e,0x1f508ea4 +.long 0x747c866c,0x98561a49,0x0518a062,0xbbb1e5fe,0xecdc3608,0x20ff4e8b,0x20184027,0x7f55cded,0xf38c85f0,0x8d73ec95,0x8bc3b8c3,0x5b589fdf,0x0f12b66f,0xbe95dd98,0x0e338e01,0xf5bd1a09 +.long 0x5e915918,0x65163ae5,0x86f8a46b,0x6158d6d9,0xeeebf99c,0x8466b538,0xbca477ef,0xca8761f6,0x9ebbc601,0xaf3449c2,0xe0c3ae2f,0xef3b0f41,0x5de63752,0xaa6c577d,0x64682a51,0xe9166601 +.long 0xfc15aa1e,0x5a3097be,0xb54b0745,0x40d12548,0x519a5f12,0x5bad4706,0xa439dee6,0xed03f717,0x4a02c499,0x0794bb6c,0xcffe71d2,0xf725083d,0x0f3adcaf,0x2cad7519,0x43729310,0x7f68ea1c +.long 0xb7ffd977,0xe747c8c7,0x80761a22,0xec104c35,0x5a3ffb83,0x8395ebaf,0xe4b63db7,0xfb3261f4,0xd883e544,0x53544960,0x8cc2eeb8,0x13520d70,0xd3d65f99,0x08f6337b,0x781cf95b,0x83997db2 +.long 0x0dbd2c01,0xce6ff106,0x1f9ce934,0x4f8eea6b,0x0e993921,0x546f7c4b,0x5e753fc7,0x6236a324,0xa16022e9,0x65a41f84,0x43d1dbb2,0x0c18d878,0x2d4cef9c,0x73c55640,0x70444c74,0xa0428108 +.long 0x9afdfb3c,0x68e4f15e,0x5bdfb6df,0x49a56143,0x5f823d97,0xa9bc1bd4,0xea111c2a,0xbceb5970,0xb269bbc4,0x366b455f,0xe9bc5d62,0x7cd85e1e,0x4f18b086,0xc743c41c,0x95294fb9,0xa4b40990 +.long 0x26ee8382,0x9c7c581d,0x359d638e,0xcf17dcc5,0xb728ae3d,0xee8273ab,0xf821f047,0x1d112926,0x50491a74,0x11498477,0xfde0dfb9,0x687fa761,0x7ea435ab,0x2c258022,0x91ce7e3f,0x6b8bdb94 +.long 0x3bf834aa,0x4c5b5dc9,0x4f6c7e4b,0x04371819,0x3736bcad,0xc284e00a,0x21ae8f8d,0x0d881118,0xf48c8e33,0xf9cf0f82,0xa1bf40db,0xa11fd075,0xdc2733e5,0xdceab0de,0x8e986bd7,0xc560a8b5 +.long 0x3929d097,0x48dd1fe2,0x92f188f1,0x3885b290,0xda6fcdac,0x0f2ae613,0xb662a46c,0x9054303e,0x0738042a,0xb6871e44,0xbdaf6449,0x98e6a977,0xd1c9df1b,0xd8bc0650,0x36e098f9,0xef3d6451 +.long 0xb6d72d28,0x03fbae82,0xf5d84080,0x77ca9db1,0xa58efc1c,0x8a112cff,0xc564cb4a,0x518d761c,0xf0d1b5ce,0x69b5740e,0xe9eb1785,0x717039cc,0x22f53382,0x3fe29f90,0x6bc7c95c,0x8e54ba56 +.long 0xf7f91d0f,0x9c806d8a,0xa82a5728,0x3b61b0f1,0x94d76754,0x4640032d,0x47d834c6,0x273eb5de,0x7b4e4d53,0x2988abf7,0xde401777,0xb7ce66bf,0x715071b3,0x9fba6b32,0xad3a1a98,0x82413c24 +.long 0xe0e8ad93,0x5b7fc8c4,0x5fab868d,0xb5679aee,0x2b3946f3,0xb1f9d2fa,0x5685b50a,0x458897dc,0x89d0caf3,0x1e98c930,0x78642e92,0x39564c5f,0x0dbdaf18,0x1b77729a,0x579e82e6,0xf9170722 +.long 0xe4515fa5,0x680c0317,0xfb0c790f,0xf85cff84,0x6d2e0765,0xc7a82aab,0x35c82b32,0x7446bca9,0x6d63184f,0x5de607aa,0x262803a6,0x7c1a46a8,0xaebe8035,0xd218313d,0xc73c51f8,0x92113ffd +.long 0x12e7e46c,0x4b38e083,0x56126bd5,0x69d0a37a,0x73c07e04,0xfb3f324b,0x8fda7267,0xa0c22f67,0x4d2c7d8f,0x8f2c0051,0xcbe2cae5,0xbc45ced3,0xa8f0f277,0xe1c6cf07,0x1eb99a98,0xbc392312 +.long 0x3cc8ac85,0x75537b7e,0xdd02753b,0x8d725f57,0xb737df2f,0xfd05ff64,0xf6d2531d,0x55fe8712,0x6ab6b01c,0x57ce04a9,0x7cd93724,0x69a02a89,0xcf86699b,0x4f82ac35,0x9cb4b232,0x8242d3ad +.long 0xd62105e5,0x713d0f65,0x2d29be61,0xbb222bfa,0x6cfbef09,0xf2f9a79e,0xd5d6782f,0xfc24d8d3,0xd4129967,0x5db77085,0xdc3c2a43,0xdb81c3cc,0x05d8d9a3,0x9d655fc0,0x54298026,0x3f5d057a +.long 0x88c54694,0x1157f56d,0x9b09573e,0xb26baba5,0x22adffd1,0x2cab03b0,0xdd69f383,0x60a412c8,0x54b25039,0xed76e98b,0x687e714d,0xd4ee67d3,0x7b00b594,0x87739648,0xc9ef709b,0xce419775 +.long 0x1c203a40,0x40f76f85,0xeafd8f91,0x30d352d6,0x95578dd2,0xaf196d3d,0x77cc3f3d,0xea4bb3d7,0xb98e782b,0x42a5bd03,0x0624920d,0xac958c40,0xfc56fcc8,0xb838134c,0x89572e5e,0x86ec4ccf +.long 0x9be47be0,0x69c43526,0xcb28fea1,0x323b7dd8,0x3a6c67e5,0xfa5538ba,0x1d378e46,0xef921d70,0x3c4b880e,0xf92961fc,0x98940a67,0x3f6f914e,0xfef0ff39,0xa990eb0a,0xf0eeff9c,0xa6c2920f +.long 0x51b8d9a3,0xca804166,0x0ffb0db1,0x42531bc9,0xaa82e7ce,0x72ce4718,0xdf574741,0x6e199913,0xd5d36946,0xd5f1b13d,0xf68f0194,0x8255dc65,0x8710d230,0xdc9df4cd,0x138c1988,0x3453c20f +.long 0x89a6ef01,0x9af98dc0,0x9857df85,0x4dbcc3f0,0x5c1ad924,0x34805601,0xd0493046,0x40448da5,0x4ee343e2,0xf629926d,0x90e8a301,0x6343f1bd,0x40815b3f,0xefc93491,0xde8f66fb,0xf882a423 +.long 0xe7db9f57,0x3a12d5f4,0x3c384c27,0x7dfba38a,0x6fc660b1,0x7a904bfd,0x2773b21c,0xeb6c5db3,0x1cdfe049,0xc350ee66,0x44540f29,0x9baac0ce,0xa5ec6aad,0xbc57b6ab,0x0a7c1baa,0x167ce8c3 +.long 0x53fb2b56,0xb23a03a5,0x4e057f78,0x6ce141e7,0x89e490d9,0x796525c3,0xa31a7e75,0x0bc95725,0x1220fd06,0x1ec56791,0x408b0bd6,0x716e3a3c,0xe8ebeba9,0x31cd6bf7,0xbee6b670,0xa7326ca6 +.long 0xcd090c43,0x3d9f851c,0xf12c3988,0x561e8f13,0x904b7be4,0x50490b6a,0x0410737b,0x61690ce1,0x0f009052,0x299e9a37,0xf026092e,0x258758f0,0xfdfcdc0f,0x9fa255f3,0xc0e1bcd2,0xdbc9fb1f +.long 0x24651840,0x35f9dd6e,0xa5c59abc,0xdca45a84,0xecca4938,0x103d396f,0xb97b3f29,0x4532da0a,0x1999a6bf,0xc4135ea5,0x5e6bf2ee,0x3aa9505a,0x3f5be093,0xf77cef06,0xa943152e,0x97d1a0f8 +.long 0x2e1c21dd,0x2cb0ebba,0x2c6797c4,0xf41b29fc,0xb300101f,0xc6e17321,0xd0d79a89,0x4422b0e9,0x92f1bfc4,0x49e4901c,0xe1e10ed9,0x06ab1f8f,0xdb2926b8,0x84d35577,0x356e8ec2,0xca349d39 +.long 0x343bf1a9,0x70b63d32,0x37d1a6b1,0x8fd3bd28,0x316865b4,0x0454879c,0xc458efa2,0xee959ff6,0x9706dc3f,0x0461dcf8,0x164e4b2e,0x737db0e2,0x2f8843c8,0x09262680,0x7745e6f6,0x54498bbc +.long 0xa29e24af,0x359473fa,0x70aa87a1,0xfcc3c454,0x00573ace,0xfd2c4bf5,0x28dd1965,0xb65b514e,0x2193e393,0xe46ae7cf,0xf5444d97,0x60e9a4e1,0x00ff38ed,0xe7594e96,0x0a0e0f02,0x43d84d2f +.long 0xee398a21,0x8b6db141,0xe3bcc5be,0xb88a56ae,0x373460ea,0x0a1aa52f,0x160bb19b,0x20da1a56,0x65bf0384,0xfb54999d,0x5d5a180e,0x71a14d24,0x21737b04,0xbc44db7b,0x01dd8e92,0xd84fcb18 +.long 0xfa44b479,0x80de937b,0x5c98fd4f,0x53505499,0x28f08727,0x1edb12ab,0xa5f3ef53,0x4c58b582,0x8327f246,0xbfb236d8,0x4d7df320,0xc3a3bfaa,0xb96024f2,0xecd96c59,0x7f4e0433,0xfc293a53 +.long 0x5acf6e10,0x5341352b,0xafe652c3,0xc50343fd,0x18577a7f,0x4af3792d,0xaf16823d,0xe1a4c617,0x33425d0a,0x9b26d0cd,0x9b7bc47f,0x306399ed,0x706bb20b,0x2a792f33,0x98111055,0x31219614 +.long 0x87f5d28b,0x864ec064,0x962277fd,0x11392d91,0xbb6aed5f,0xb5aa7942,0x47e799d9,0x080094dc,0x208ba19b,0x4afa588c,0x8512f284,0xd3e7570f,0x02f5799a,0xcbae64e6,0x514b9492,0xdeebe7ef +.long 0xe5c298ff,0x30300f98,0x3678361f,0x17f561be,0x98cb9a16,0xf52ff312,0x5562d490,0x6233c3bc,0x92e3a2cb,0x7bfa15a1,0xe6365119,0x961bcfd1,0x2c8c53b1,0x3bdd29bf,0x822844ba,0x739704df +.long 0x7e7b754b,0x7dacfb58,0xa806c9b9,0x23360791,0x23504452,0xe7eb88c9,0x852c1783,0x2983e996,0x958d881d,0xdd4ae529,0x262c7b3c,0x026bae03,0x960b52d1,0x3a6f9193,0x92696cfb,0xd0980f90 +.long 0xd5f30851,0x4c1f428c,0x2a4f6630,0x94dfed27,0xfc5d48a4,0x4df53772,0x933260ce,0xdd2d5a2f,0xd44cc7a5,0x574115bd,0xbd12533a,0x4ba6b20d,0x243057c9,0x30e93cb8,0x14de320e,0x794c486a +.long 0xf21496e4,0xe925d4ce,0xec696331,0xf951d198,0x3e8d812f,0x9810e2de,0x389294ab,0xd0a47259,0x0e3bab66,0x513ba2b5,0xabad306f,0x462caff5,0xaf04c49e,0xe2dc6d59,0xe0b84b0b,0x1aeb8750 +.long 0x2f7d0ca2,0xc034f12f,0xe06acf2f,0x6d2e8128,0x21facc2f,0x801f4f83,0xf40ef607,0xa1170c03,0x7805a99c,0xfe0a1d4f,0xcc26aba5,0xbde56a36,0x35531f40,0x5b1629d0,0x9afa6108,0xac212c2b +.long 0x15697be5,0x30a06bf3,0x2c63c7c1,0x6f0545dc,0x7ccdadaf,0x5d8cb842,0xac7015bb,0xd52e379b,0xf462c23e,0xc4f56147,0x46bc24b0,0xd44a4298,0xe2856d4f,0xbc73d23a,0x0832bcdf,0x61cedd8c +.long 0x99f241d7,0x60953556,0x001a349d,0xee4adbd7,0xaa89e491,0x0b35bf6a,0x136f7546,0x7f0076f4,0x9264da3d,0xd19a18ba,0x62a7a28b,0x6eb2d2cd,0x8761c971,0xcdba941f,0xa3be4a5d,0x1550518b +.long 0x57d0b70c,0xd0e8e2f0,0xcd133ba3,0xeea8612e,0x44416aec,0x814670f0,0x30775061,0x424db6c3,0x16213fd1,0xd96039d1,0x18a3478f,0xc61e7fa5,0xcb0c5021,0xa805bdcc,0x0cc616dd,0xbdd6f3a8 +.long 0x5d97f7e2,0x06009667,0xaf0bf4b6,0x31db0fc1,0x5491627a,0x23680ed4,0x7d741fb1,0xb99a3c66,0x36b1ff92,0xe9bb5f55,0x512b388d,0x29738577,0x50fcf263,0xdb8a2ce7,0x6c4f7b47,0x385346d4 +.long 0x31631f9e,0xbe86c5ef,0x03a57a29,0xbf91da21,0x7b23f821,0xc3b1f796,0x770db354,0x0f7d00d2,0xd8fe79da,0x8ffc6c3b,0xd525c996,0xcc5e8c40,0xcfff632a,0x4640991d,0x67112528,0x64d97e8c +.long 0x02f1cd1e,0xc232d973,0x1dd212a4,0xce87eacb,0xe69802f7,0x6e4c8c73,0x1fffddbd,0x12ef0290,0x1bcea6e2,0x941ec74e,0x3cb92cbb,0xd0b54024,0x7e8f9d05,0x809fb9d4,0xf2992aae,0x3bf16159 +.long 0xf8a7a838,0xad40f279,0x05615660,0x11aea631,0xa01f6fa1,0xbf52e6f1,0x3dc2aec9,0xef046995,0xd8080711,0x785dbec9,0x9fdedf76,0xe1aec60a,0xfa21c126,0xece797b5,0x05e52732,0xc66e898f +.long 0x08811fdb,0x39bb69c4,0x2fc7f082,0x8bfe1ef8,0x174f4138,0xc8e7a393,0xd58d1f98,0xfba8ad1d,0xbfd2fd5b,0xbc21d0ce,0x6ee60d61,0x0b839a82,0xafd22253,0xaacf7658,0xaae396b3,0xb526bed8 +.long 0x38564464,0xccc1bbc2,0x8c45bc73,0x9e3ff947,0x58188a78,0xcde9bca3,0xd73bf8f7,0x138b8ee0,0x4123c489,0x5c7e234c,0xfa643297,0x66e69368,0x39a15fa3,0x0629eeee,0xa9e2a927,0x95fab881 +.long 0xeafbb1e1,0xb2497007,0xe75b7a93,0xd75c9ce6,0xefb68d78,0x3558352d,0x223f6396,0xa2f26699,0xe469b17a,0xeb911ecf,0xe72d3ec2,0x62545779,0x82cb113f,0x8ea47de7,0x4e1fa98d,0xebe4b086 +.long 0x8cdfedb1,0xec2d5ed7,0xfe211a74,0xa535c077,0x11d244c5,0x9678109b,0xbe299a76,0xf17c8bfb,0xfb11fbc4,0xb651412e,0x94ab3f65,0xea0b5482,0x0cf78243,0xd8dffd95,0xce0361d4,0x2e719e57 +.long 0x304ddc5b,0x9007f085,0x4daba2ea,0x095e8c6d,0x3f9d28a9,0x5a33cdb4,0xe2283003,0x85b95cd8,0xb9744733,0xbcd6c819,0xfc7f5783,0x29c5f538,0xd59038e4,0x6c49b2fa,0x3bbe1018,0x68349cc1 +.long 0x21830ee5,0xcc490c1d,0xe9bfa297,0x36f9c4ee,0x48de1a94,0x58fd7294,0x4e8f2cdc,0xaadb13a8,0x81313dba,0x515eaaa0,0xc2152dd8,0xc76bb468,0xa653dbf8,0x357f8d75,0xb14ac143,0xe4d8c4d1 +.long 0xb055cb40,0xbdb8e675,0x977b5167,0x898f8e7b,0xb82fb863,0xecc65651,0x6d88f01f,0x56544814,0x263a75a9,0xb0928e95,0x1a22fcda,0xcfb6836f,0x3f3bd37c,0x651d14db,0xb6ad4664,0x1d3837fb +.long 0xff4f94ab,0x7c5fb538,0x6d7fb8f2,0x7243c712,0xa85c5287,0xef13d60c,0x4bb8dd1b,0x18cfb7c7,0x72908219,0x82f9bfe6,0x9d5144ab,0x35c4592b,0x9cf4b42f,0x52734f37,0x8c60ddc4,0x6bac55e7 +.long 0x94dea0f6,0xb5cd811e,0xe18cc1a3,0x259ecae4,0x15e660f8,0x6a0e836e,0x0e02bff2,0x6c639ea6,0x7e1026fd,0x8721b8cb,0x63261942,0x9e73b50b,0x77f01da3,0xb8c70974,0x8268f57f,0x1839e6a6 +.long 0x5150b805,0x571b9415,0xf92c7097,0x1892389e,0x4a084b95,0x8d69c18e,0xbe5b495c,0x7014c512,0x1b07523c,0x4780db36,0x2c1c64fa,0x2f6219ce,0x602c105a,0xc38b81b0,0x5dc8e360,0xab4f4f20 +.long 0xcf7d62d2,0x20d3c982,0x23ba8150,0x1f36e29d,0x92763f9e,0x48ae0bf0,0x1d3a7007,0x7a527e6b,0x581a85e3,0xb4a89097,0xdc158be5,0x1f1a520f,0x167d726e,0xf98db37d,0x1113e862,0x8802786e +.long 0x36f09ab0,0xefb2149e,0x4a10bb5b,0x03f163ca,0x06e20998,0xd0297045,0x1b5a3bab,0x56f0af00,0x70880e0d,0x7af4cfec,0xbe3d913f,0x7332a66f,0x7eceb4bd,0x32e6c84a,0x9c228f55,0xedc4a79a +.long 0xc55c4496,0xc37c7dd0,0x25bbabd2,0xa6a96357,0xadd7f363,0x5b7e63f2,0x2e73f1df,0x9dce3782,0xb2b91f71,0xe1e5a16a,0x5ba0163c,0xe4489823,0xf6e515ad,0xf2759c32,0x8615eecf,0xa5e2f1f8 +.long 0xabded551,0x74519be7,0xc8b74410,0x03d358b8,0x0e10d9a9,0x4d00b10b,0x28da52b7,0x6392b0b1,0x0b75c904,0x6744a298,0xa8f7f96c,0xc305b0ae,0x182cf932,0x042e421d,0x9e4636ca,0xf6fc5d50 +.long 0xd64cc78c,0x795847c9,0x9b6cb27b,0x6c50621b,0xdf8022ab,0x07099bf8,0xc04eda1d,0x48f862eb,0xe1603c16,0xd12732ed,0x5c9a9450,0x19a80e0f,0xb429b4fc,0xe2257f54,0x45460515,0x66d3b2c6 +.long 0x822e37be,0x6ca4f87e,0x253bda4e,0x73f237b4,0x41190aeb,0xf747f3a2,0x804cf284,0xf06fa36f,0xfc621c12,0x0a6bbb6e,0x40b80ec6,0x5d624b64,0x7ba556f3,0x4b072425,0x3e2d20a8,0x7fa0c354 +.long 0xe3229d41,0xe921fa31,0x94531bd4,0xa929c652,0xa6d38209,0x84156027,0x6bdb97bd,0xf3d69f73,0x16833631,0x8906d19a,0x03d51be3,0x68a34c2e,0x0e511cd8,0xcb59583b,0xfdc132a8,0x99ce6bfd +.long 0xffcdb463,0x3facdaaa,0x34a38b08,0x658bbc1a,0xf1a9078d,0x12a801f8,0x6ab855de,0x1567bcf9,0x3572359b,0xe08498e0,0x8659e68b,0xcf0353e5,0x7d23807c,0xbb86e9c8,0x2198e8a2,0xbc08728d +.long 0x453cadd6,0x8de2b7bc,0xbc0bc1f8,0x203900a7,0xa6abd3af,0xbcd86e47,0x8502effb,0x911cac12,0xec965469,0x2d550242,0x29e0017e,0x0e9f7692,0x65979885,0x633f078f,0x4cf751ef,0xfb87d449 +.long 0xfc25419a,0xe1790e4b,0x4bff3cfd,0x36467203,0x25b6e83f,0xc8db6386,0x6cad6fd2,0x6cc69f23,0x6bc68bb9,0x0219e45a,0x297f7334,0xe43d79b6,0x465dc97c,0x7d445368,0x2a0b949a,0x4b9eea32 +.long 0x6102d021,0x1b96c6ba,0x2f4461ea,0xeaafac78,0xc49f19a8,0xd4b85c41,0xcf538875,0x275c28e4,0xdd2e54e0,0x35451a9d,0x0605618b,0x6991adb5,0x7b36cd24,0x5b8b4bcd,0x56f37216,0x372a4f8c +.long 0xa6a5da60,0xc890bd73,0xdc4c9ff0,0x6f083da0,0xf0536e57,0xf4e14d94,0xaaec8243,0xf9ee1eda,0x8bdcf8e7,0x571241ec,0x0b041e26,0xa5db8271,0xe3fff040,0x9a0b9a99,0x7c271202,0xcaaf21dd +.long 0x4f0dd2e8,0xb4e2b2e1,0x0a377ac7,0xe77e7c4f,0x0d7a2198,0x69202c3f,0x28200eb8,0xf759b7ff,0xdcfe314e,0xc87526ed,0x53d5cf99,0xeb84c524,0x515138b6,0xb1b52ace,0x23fca3f4,0x5aa7ff8c +.long 0xb9791a26,0xff0b13c3,0xcdd58b16,0x960022da,0x57aad2de,0xdbd55c92,0xf30fe619,0x3baaaaa3,0x0d881efd,0x9a4b2346,0x46325e2a,0x506416c0,0x035c18d4,0x91381e76,0xf27817b0,0xb3bb68be +.long 0x5116f937,0x15bfb8bf,0xc1268943,0x7c64a586,0x8419a2c8,0x71e25cc3,0x8335f463,0x9fd6b0c4,0xe8ee0e0e,0x4bf0ba3c,0x298c21fa,0x6f6fba60,0xae66bee0,0x57d57b39,0x22672544,0x292d5130 +.long 0xbab093b3,0xf451105d,0x02839986,0x012f59b9,0x3474a89c,0x8a915802,0x2de03e97,0x048c919c,0x91071cd5,0xc476a2b5,0x034970a5,0x791ed89a,0xe1b7994b,0x89bd9042,0xa1057ffd,0x8eaf5179 +.long 0xd551ee10,0x6066e2a2,0x727e09a6,0x87a8f1d8,0x2c01148d,0x00d08bab,0x424f33fe,0x6da8e4f1,0xcf9a4e71,0x466d17f0,0x3bf5cb19,0xff502010,0xd062ecc0,0xdccf97d8,0x81d80ac4,0x80c0d9af +.long 0x033f2876,0xe87771d8,0x7d5cc3db,0xb0186ec6,0x3bc9bc1d,0x58e8bb80,0x6f6ef60e,0x4d1395cc,0x186244a0,0xa73c62d6,0x110a5b53,0x918e5f23,0x741b7eab,0xed4878ca,0xdbe03e51,0x3038d71a +.long 0xa93c3246,0x840204b7,0xa0b9b4cd,0x21ab6069,0xb1d64218,0xf5fa6e2b,0xf3d56191,0x1de6ad0e,0xff1929c7,0x570aaa88,0x640e87b5,0xc6df4c6b,0xc65f0ccc,0xde8a74f2,0xe6f6cc01,0x8b972fd5 +.long 0x0b846531,0x3fff36b6,0x10a5e475,0xba7e45e6,0x4145b6c5,0x84a1d10e,0x5e046d9d,0xf1f7f91a,0x44de90d7,0x0317a692,0xf199c15e,0x951a1d4a,0xc9d73deb,0x91f78046,0xfab8224f,0x74c82828 +.long 0xe7560b90,0xaa6778fc,0xa7e824ce,0xb4073e61,0xd642eba8,0xff0d693c,0x5dccef38,0x7ce2e57a,0x1df1ad46,0x89c2c789,0x098346fd,0x83a06922,0xda2fc177,0x2d715d72,0x85b6cf1d,0x7b6dd71d +.long 0x73fa9cb0,0xc60a6d0a,0x328bf5a9,0xedd3992e,0x832c8c82,0xc380ddd0,0xa2a0bf50,0xd182d410,0xd9a528db,0x7d9d7438,0xcaf53994,0xe8b1a0e9,0x0e19987c,0xddd6e5fe,0x190b059d,0xacb8df03 +.long 0x8300129f,0x53703a32,0x68c43bfd,0x1f637662,0x00e54051,0xbcbd1913,0x7bf5a8c5,0x812fcc62,0x29fb85da,0x3f969d5f,0x694759e8,0x72f4e00a,0x790726b7,0x426b6e52,0x3bdbb209,0x617bbc87 +.long 0x97aee317,0x511f8bb9,0xe81536a8,0x812a4096,0x3ac09b9b,0x137dfe59,0xba8c9a7a,0x0682238f,0xaeccb4bd,0x7072ead6,0x692ba633,0x6a34e9aa,0x6fff9d33,0xc82eaec2,0x1d4d2b62,0xfb753512 +.long 0x1d7aadab,0x1a0445ff,0xd5f6a67c,0x65d38260,0x91cfb26f,0x6e62fb08,0x5c7d91d6,0xef1e0fa5,0x33db72cd,0x47e7c7ba,0xfa7c74b2,0x017cbc09,0xf50a503c,0x3c931590,0x616baa42,0xcac54f60 +.long 0xb2369f0f,0x9b6cd380,0x23c76151,0x97d3a70d,0x9862a9c6,0x5f9dd6fc,0x12312f51,0x044c4ab2,0x834a2ddc,0x035ea0fd,0xcc7b826d,0x49e6b862,0x62fce490,0xb03d6883,0xb37e36e9,0x62f2497a +.long 0xc6458293,0x04b005b6,0xe8d10af7,0x36bb5276,0x8ee617b8,0xacf2dc13,0xb004b3d4,0x470d2d35,0xfeeb1b77,0x06790832,0x85657f9c,0x2bb75c39,0xc0f60004,0xd70bd4ed,0x219b018b,0xfe797ecc +.long 0x753aebcc,0x9b5bec2a,0xc939eca5,0xdaf9f3dc,0xd095ad09,0xd6bc6833,0xdaa4d2fc,0x98abdd51,0x8d168be5,0xd9840a31,0x2325a23c,0xcf7c10e0,0x7e6ecfaf,0xa5c02aa0,0xb5bfdf18,0x2462e7e6 +.long 0xa0cc3f12,0xab2d8a8b,0xbc672a29,0x68dd485d,0x596f2cd3,0x72039752,0xa0cf3d8d,0x5d3eea67,0xe6602671,0x810a1a81,0x14026c0c,0x8f144a40,0x76b50f85,0xbc753a6d,0x645cd4a4,0xc4dc21e8 +.long 0x521d0378,0xc5262dea,0x05011c6f,0x802b8e0e,0x0b4c19ea,0x1ba19cbb,0xebf0aaec,0x21db64b5,0x70342f9d,0x1f394ee9,0x1bc44a14,0x93a10aee,0x3efd0baa,0xa7eed31b,0x1d154e65,0x6e7c824e +.long 0x9966e7ee,0xee23fa81,0x05b7920d,0x64ec4aa8,0x2d90aad4,0x2d44462d,0xdf277ad5,0xf44dd195,0xbb46b6a1,0x8d6471f1,0xfd885090,0x1e65d313,0x13a977b4,0x33a800f5,0x0797e1ef,0xaca9d721 +.long 0xfcff6a17,0x9a5a85a0,0x1eca7cee,0x9970a3f3,0xc9504be3,0xbb9f0d6b,0xadd24ee2,0xe0c504be,0x77fcc2f4,0x7e09d956,0x65bb5fc4,0xef1a5227,0x8b9286aa,0x145d4fb1,0x6649028b,0x66fd0c5d +.long 0x1bf4581c,0x98857ceb,0xaca7b166,0xe635e186,0x659722ac,0x278ddd22,0x1db68007,0xa0903c4c,0x48f21402,0x366e4589,0xb96abda2,0x31b49c14,0xe0403190,0x329c4b09,0xd29f43fe,0x97197ca3 +.long 0x274983d8,0x8073dd1e,0x55717c8f,0xda1a3bde,0x0361f9d1,0xfd3d4da2,0x4c7de1ce,0x1332d081,0xaa6d0e10,0x9b7ef7a3,0xf54f1c4a,0x17db2e73,0x4cd35567,0xaf3dffae,0xe56f4e71,0xaaa2f406 +.long 0x7ace3fc7,0x8966759e,0x45a8d8c6,0x9594eacf,0x91834e0e,0x8de3bd8b,0x548c0421,0xafe4ca53,0xe6ee81c6,0xfdd7e856,0x6b891a3a,0x8f671beb,0xfae63829,0xf7a58f2b,0x9c11ac9f,0x9ab186fb +.long 0x10b5be76,0x8d6eb369,0xfb040bcd,0x046b7739,0xcb73de88,0xccb4529f,0xcf26be03,0x1df0fefc,0xbcfcd027,0xad7757a6,0xbb3165ca,0xa8786c75,0x7e99a4d9,0xe9db1e34,0xb06c504b,0x99ee86df +.long 0xc15c9f0a,0x5b7c2ddd,0x4295989e,0xdf87a734,0x03d08fda,0x59ece47c,0xad5fc702,0xb074d3dd,0x51a03776,0x20407903,0x2a608007,0x2bb1f77b,0xe1153185,0x25c58f4f,0x766e6447,0xe6df62f6 +.long 0xed51275a,0xefb3d1be,0x2f0f483f,0x5de47dc7,0x97c2bedf,0x7932d98e,0x0219f8a1,0xd5c11927,0xa73a294e,0x9d751200,0x9dc20172,0x5f88434a,0xa26f506a,0xd28d9fd3,0x9d1dcd48,0xa890cd31 +.long 0x70f4d3b4,0x0aebaec1,0x0ffc8d00,0xfd1a1369,0x57d57838,0xb9d9c240,0x68bac361,0x45929d26,0x25b15ca6,0x5a2cd060,0x6e474446,0x4b3c83e1,0xee1e5134,0x1aac7578,0xc91e2f41,0xa418f5d6 +.long 0x213ed68b,0x6936fc8a,0x510a5224,0x860ae7ed,0xdef09b53,0x63660335,0xcd79c98d,0x641b2897,0x01110f35,0x29bd38e1,0x648b1937,0x79c26f42,0x9d9164f4,0x64dae519,0x0265c273,0xd85a2310 +.long 0x4b07e2b1,0x7173dd5d,0x8d9ea221,0xd144c4cb,0x1105ab14,0xe8b04ea4,0xfe80d8f1,0x92dda542,0xcf03dce6,0xe9982fa8,0x1a22cffc,0x8b5ea965,0x3fad88c4,0xf7f4ea7f,0x6a5ba95c,0x62db773e +.long 0x93f24567,0xd20f02fb,0x315257ca,0xfd46c69a,0x8bcab987,0x0ac74cc7,0x5ceca2f5,0x46f31c01,0x888b219e,0x40aedb59,0xe1fccd02,0xe50ecc37,0x911f816c,0x1bcd9dad,0x8db9b00c,0x583cc1ec +.long 0xa483bf11,0xf3cd2e66,0xb1b2c169,0xfa08a6f5,0x4be9fa28,0xf375e245,0x5b6d011f,0x99a7ffec,0xc4ae62da,0x6a3ebddb,0x374aef5d,0x6cea00ae,0x9d4d05bc,0xab5fb98d,0xd560f252,0x7cba1423 +.long 0x208490de,0x49b2cc21,0xbcfb2879,0x1ca66ec3,0x1b6fb16f,0x7f1166b7,0x65fe5db3,0xfff63e08,0x8b2610be,0xb8345abe,0x39de3df4,0xb732ed80,0x211c32b4,0x0e24ed50,0x848ff27d,0xd10d8a69 +.long 0xed4de248,0xc1074398,0x10488927,0xd7cedace,0x85673e13,0xa4aa6bf8,0x6daf30af,0xb46bae91,0xfcef7ad8,0x07088472,0xd4b35e97,0x61151608,0xdde29986,0xbcfe8f26,0xd5a34c79,0xeb84c4c7 +.long 0x164e1214,0xc1eec55c,0xa147bb03,0x891be86d,0x0ba96835,0x9fab4d10,0xa5c1ae9f,0xbf01e9b8,0xb186ebc0,0x6b4de139,0x85b91bca,0xd5c74c26,0xc2d93854,0x5086a99c,0xa7a9dfbc,0xeed62a7b +.long 0x76b7618a,0x8778ed6f,0x03b66062,0xbff750a5,0xb65186db,0x4cb7be22,0xcc3a6d13,0x369dfbf0,0x7191a321,0xc7dab26c,0x40ed718e,0x9edac3f9,0xd0cfd183,0xbc142b36,0x7c991693,0xc8af82f6 +.long 0x97ce0b2a,0xb3d1e4d8,0xc3a55cdf,0xe6d7c87f,0x68b81afe,0x35846b95,0xd3c239d8,0x018d12af,0x01206e15,0x2b2c6208,0xa3b882c6,0xe0e42453,0xa50162d5,0x854470a3,0x7017a62a,0x08157478 +.long 0x820357c7,0x18bd3fb4,0x6f1458ad,0x992039ae,0x25b44aa1,0x9a1df3c5,0xed3d5281,0x2d780357,0xc77ad4d4,0x58cf7e4d,0xf9df4fc4,0xd49a7998,0x1d71205e,0x4465a8b5,0x649254aa,0xa0ee0ea6 +.long 0xab7bd771,0x4b5eeecf,0x35c262b9,0x6c873073,0x3c9d61e7,0xdc5bd648,0x321460d2,0x233d6d54,0xfc195bcc,0xd20c5626,0x04d78b63,0x25445958,0x17ec8ef3,0xe03fcb3d,0x46b8f781,0x54b690d1 +.long 0x21230646,0x82fa2c8a,0x084f418c,0xf51aabb9,0x1a30ba43,0xff4fbec1,0x743c9df7,0x6a5acf73,0xd635b4d5,0x1da2b357,0xecd5c1da,0xc3de68dd,0xd61af0dd,0xa689080b,0xd665bf99,0xdea5938a +.long 0xfe637294,0x0231d71a,0xa5a81cd8,0x01968aa6,0x048e63b5,0x11252d50,0x6ca007e9,0xc446bc52,0x96d6134b,0xef8c50a6,0x9e09a05c,0x9361fbf5,0xdca3291a,0xf17f85a6,0xff251a21,0xb178d548 +.long 0xa4df3915,0x87f6374b,0x2fd5d608,0x566ce1bf,0x7de35102,0x425cba4d,0x58c5d5e2,0x6b745f8f,0x63122edf,0x88402af6,0x3b989a89,0x3190f9ed,0xebba3156,0x4ad3d387,0xc7c469a5,0xef385ad9 +.long 0x3f642c29,0xb08281de,0x910ffb88,0x20be0888,0xd5292546,0xf353dd4a,0x8377a262,0x3f1627de,0xeefcd638,0xa5faa013,0x74cc77c3,0x8f3bf626,0xa348f55e,0x32618f65,0x9fefeb9e,0x5787c0dc +.long 0xd9a23e44,0xf1673aa2,0x4e10690d,0x88dfa993,0x2bf91108,0x1ced1b36,0x3af48649,0x9193ceca,0x2d738fc5,0xfb34327d,0x975fee6c,0x6697b037,0xc04079a5,0x2f485da0,0x2feaa1ac,0x2cdf5735 +.long 0xbd55659e,0x76944420,0x4376090c,0x7973e32b,0x163b591a,0x86bb4fe1,0xc196f0ca,0x10441aed,0x045ad915,0x3b431f4a,0xa4afacb1,0x6c11b437,0x71fdbbd8,0x30b0c7db,0xeda65acd,0xb642931f +.long 0x9c92b235,0x4baae6e8,0x6b3993a1,0xa73bbd0e,0x693dd031,0xd06d60ec,0x7156881c,0x03cab91b,0x1db3574b,0xd615862f,0x64bb061a,0x485b0185,0xa0181e06,0x27434988,0xc1c0c757,0x2cd61ad4 +.long 0x2ff9f403,0x3effed5a,0x62239029,0x8dc98d8b,0x1f17b70d,0x2206021e,0xbf510015,0xafbec0ca,0x80130dfa,0x9fed7164,0x8a02dcf5,0x306dc2b5,0xfeb10fc0,0x48f06620,0x5a57cf51,0x78d1e1d5 +.long 0x192ef710,0xadef8c5a,0x3b7431f9,0x88afbd4b,0x64250c9e,0x7e1f7407,0xb58bec07,0x6e31318d,0x24f89b4e,0xfd4fc4b8,0x48c36a2a,0x65a5dd88,0xf024baa7,0x4f1eccff,0xcba94650,0x22a21cf2 +.long 0x42a554f7,0x95d29dee,0x002ec4ba,0x828983a5,0x8badb73d,0x8112a1f7,0xa27c1839,0x79ea8897,0xd065fd83,0x8969a5a7,0xb262a0bc,0xf49af791,0xaf2b5127,0xfcdea8b6,0x564c2dbc,0x10e913e1 +.long 0xbc21ef51,0x51239d14,0x4ce57292,0xe51c3ceb,0x47bbcc3b,0x795ff068,0xbd7e11e6,0x86b46e1e,0x80041ef4,0x0ea6ba23,0x6262342e,0xd72fe505,0x31d294d4,0x8abc6dfd,0x1278c2c9,0xbbe017a2 +.long 0xb389328a,0xb1fcfa09,0xd01771b5,0x322fbc62,0x60b045bf,0x04c0d063,0x10e52d01,0xdb652edc,0x03ec6627,0x50ef932c,0xc1ee50e3,0xde1b3b2d,0xdc37a90d,0x5ab7bdc5,0x31e33a96,0xfea67213 +.long 0x4f2999aa,0x6482b5cb,0xb8cbf0dd,0x38476cc6,0x173405bb,0x93ebfacb,0xe52369ec,0x15cdafe7,0xd935b7db,0xd42d5ba4,0x1c99a4cd,0x648b6004,0xa3b5545b,0x785101bd,0x9dd67faf,0x4bf2c38a +.long 0x4442449c,0xb1aadc63,0x33ad4fb8,0xe0e9921a,0xaa686d82,0x5c552313,0x465d866c,0xdee635fa,0x18ee6e8a,0xbc3c224a,0xed42e02f,0xeed748a6,0xd474cd08,0xe70f930a,0xfff24adf,0x774ea6ec +.long 0xf3480d4a,0x03e2de1c,0xbc8acf1a,0xf0d8edc7,0x68295a9c,0xf23e3303,0xc546a97d,0xfadd5f68,0x96f8acb1,0x895597ad,0x671bdae2,0xbddd49d5,0x21dd43f4,0x16fcd528,0x6619141a,0xa5a45412 +.long 0xc360e25a,0x8ce9b6bf,0x075a1a78,0xe6425195,0x481732f4,0x9dc756a8,0x5432b57a,0x83c0440f,0xd720281f,0xc670b3f1,0xd135e051,0x2205910e,0xdb052be7,0xded14b0e,0xc568ea39,0x697b3d27 +.long 0xfb3ff9ed,0x2e599b9a,0x17f6515c,0x28c2e0ab,0x474da449,0x1cbee4fd,0x4f364452,0x071279a4,0x01fbe855,0x97abff66,0x5fda51c4,0x3ee394e8,0x67597c0b,0x190385f6,0xa27ee34b,0x6e9fccc6 +.long 0x14092ebb,0x0b89de93,0x428e240c,0xf17256bd,0x93d2f064,0xcf89a7f3,0xe1ed3b14,0x4f57841e,0xe708d855,0x4ee14405,0x03f1c3d0,0x856aae72,0xbdd7eed5,0xc8e5424f,0x73ab4270,0x3333e4ef +.long 0xdda492f8,0x3bc77ade,0x78297205,0xc11a3aea,0x34931b4c,0x5e89a3e7,0x9f5694bb,0x17512e2e,0x177bf8b6,0x5dc349f3,0x08c7ff3e,0x232ea4ba,0xf511145d,0x9c4f9d16,0x33b379c3,0xccf109a3 +.long 0xa1f25897,0xe75e7a88,0xa1b5d4d8,0x7ac6961f,0x08f3ed5c,0xe3e10773,0x0a892dfb,0x208a54ec,0x78660710,0xbe826e19,0x237df2c8,0x0cf70a97,0xed704da5,0x418a7340,0x08ca33fd,0xa3eeb9a9 +.long 0x169bca96,0x49d96233,0x2da6aafb,0x04d286d4,0xa0c2fa94,0xc09606ec,0x23ff0fb3,0x8869d0d5,0xd0150d65,0xa99937e5,0x240c14c9,0xa92e2503,0x108e2d49,0x656bf945,0xa2f59e2b,0x152a733a +.long 0x8434a920,0xb4323d58,0x622103c5,0xc0af8e93,0x938dbf9a,0x667518ef,0x83a9cdf2,0xa1843073,0x5447ab80,0x350a94aa,0xc75a3d61,0xe5e5a325,0x68411a9e,0x74ba507f,0x594f70c5,0x10581fc1 +.long 0x80eb24a9,0x60e28570,0x488e0cfd,0x7bedfb4d,0xc259cdb8,0x721ebbd7,0xbc6390a9,0x0b0da855,0xde314c70,0x2b4d04db,0x6c32e846,0xcdbf1fbc,0xb162fc9e,0x33833eab,0xb0dd3ab7,0x9939b48b +.long 0xcb0c9c8c,0x5aaa98a7,0x81c4375c,0x75105f30,0x5ef1c90f,0xceee5057,0xc23a17bf,0xb31e065f,0xd4b6d45a,0x5364d275,0x62ec8996,0xd363f3ad,0x4391c65b,0xb5d21239,0xebb41b47,0x84564765 +.long 0x37107c78,0x20d18ecc,0x570c2a66,0xacff3b6b,0x9bd0d845,0x22f975d9,0xba178fa0,0xef0a0c46,0x76b6028e,0x1a419651,0x248612d4,0xc49ec674,0x7338af55,0x5b6ac4f2,0x7bee5a36,0x06145e62 +.long 0xe75746b5,0x33e95d07,0xc40c78be,0x1c1e1f6d,0x222ff8e2,0x967833ef,0xb49180ad,0x4bedcf6a,0x3d7a4c8a,0x6b37e9c1,0x6ddfe760,0x2748887c,0xaa3a5bbc,0xf7055123,0x7bbb8e74,0x954ff225 +.long 0x97c3dfb9,0xc42b8ab1,0xcf168154,0x55a549b0,0xc1b50692,0xad6748e7,0x6fc5cbcb,0x2775780f,0xe1c9d7c8,0x4eab80b8,0x3fdbcd56,0x8c69dae1,0x9969eace,0x47e6b4fb,0xa705cb5a,0x002f1085 +.long 0x6d3fea55,0x4e23ca44,0xf4810568,0xb4ae9c86,0x2a62f27d,0x47bfb91b,0xd9bac28c,0x60deb4c9,0x7de6c34c,0xa892d894,0x4494587d,0x4ee68259,0x1a3f8a5b,0x914ee14e,0x28700385,0xbb113eaa +.long 0x2115b4c9,0x81ca03b9,0x8908cad1,0x7c163d38,0xaa18179a,0xc912a118,0x886e3081,0xe09ed750,0x26f516ca,0xa676e3fa,0x8e732f91,0x753cacf7,0x833da8b4,0x51592aea,0x4cbea8aa,0xc626f42f +.long 0xa7b56eaf,0xef9dc899,0x34ef7316,0x00c0e52c,0xfe818a86,0x5b1e4e24,0xc538be47,0x9d31e20d,0x3ed68974,0x22eb932d,0x7c4e87c4,0xe44bbc08,0x0dde9aef,0x4121086e,0x134f4345,0x8e6b9cff +.long 0x711b0eb9,0x96892c1f,0x780ab954,0xb905f2c8,0xa20792db,0xace26309,0x0684e126,0xec8ac9b3,0xb40a2447,0x486ad8b6,0x9fe3fb24,0x60121fc1,0x1a8e3b3f,0x5626fccf,0x6ad1f394,0x4e568622 +.long 0x196aa5a1,0xda7aae0d,0x1041b5fb,0xe0df8c77,0x26b318b7,0x451465d9,0x7ab136e9,0xc29b6e55,0x71148463,0x2c2ab48b,0x64454a76,0xb5738de3,0x5a03abe4,0x54ccf9a0,0x0427d58e,0x377c0296 +.long 0x2bb39c1f,0x73f5f0b9,0xe608d8c5,0x14373f2c,0x00fbb805,0xdcbfd314,0x83afdcfb,0xdf18fb20,0x42b3523f,0x81a57f42,0x87f650fb,0xe958532d,0x8b0a7d7c,0xaa8dc8b6,0x150166be,0x1b75dfb7 +.long 0x2d7d1413,0x90e4f7c9,0x9834f597,0x67e2d6b5,0xa808c3e8,0x4fd4f4f9,0xd5281ec1,0xaf8237e0,0x84687cee,0x25ab5fdc,0xa5b26c09,0xc5ded6b1,0xc8ea7650,0x8e4a5aec,0x14cc417f,0x23b73e5c +.long 0x3037bf52,0x2bfb4318,0x78c725d7,0xb61e6db5,0xbbb3e5d7,0x8efd4060,0xdbac488e,0x2e014701,0x360aa449,0xac75cf9a,0x79634d08,0xb70cfd05,0xfffb15ef,0xa591536d,0xd07c106c,0xb2c37582 +.long 0xf50225f9,0xb4293fdc,0xb0e12b03,0xc52e175c,0xd0a8bf64,0xf649c3ba,0xeb8ae3c6,0x745a8fef,0x58321bc3,0x30d7e5a3,0x0bc4df48,0xb1732be7,0xe9ea5058,0x1f217993,0x3e4fd745,0xf7a71cde +.long 0x894c5bbb,0x86cc533e,0x69d83082,0x6915c7d9,0x5815c244,0xa6aa2d05,0x49b22ce5,0xaeeee592,0x78135486,0x89e39d13,0x16b76f2f,0x3a275c1f,0xe036e8f5,0xdb6bcc1b,0x5e4709f5,0x4df69b21 +.long 0x2d0f39aa,0xa188b250,0x15a85947,0x622118bb,0xfde0f4fa,0x2ebf520f,0x4860e539,0xa40e9f29,0x22b57f0f,0x7b6a51eb,0x7e80644a,0x849a33b9,0x1cf095fe,0x50e5d16f,0xec55f002,0xd754b54e +.long 0x236f4a98,0x5cfbbb22,0x066800bb,0x0b0c59e9,0x5a9a7774,0x4ac69a8f,0xd6bec948,0x2b33f804,0x32e6c466,0xb3729295,0x4e599c73,0x68956d0f,0x155c31cc,0xa47a249f,0xe1ce284e,0x24d80f0d +.long 0x988baf01,0xcd821dfb,0xdbb16647,0xe6331a7d,0x094cb960,0x1eb8ad33,0xc91bbca5,0x593cca38,0x26567456,0x384aac8d,0xc04b6490,0x40fa0309,0xdab6c8f6,0x97834cd6,0x3f91e55f,0x68a7318d +.long 0xfc4d3157,0xa00fd04e,0x2bf3bdea,0xb56f8ab2,0x4fa57172,0x014f5648,0x450abdb3,0x948c5860,0x0ebd4f08,0x342b5df0,0x0e82938e,0x3e5168cd,0xb0df5dd0,0x7aedc1ce,0xe5732516,0x6bbbc6d9 +.long 0x605daaa6,0xc7bfd486,0xbb9a6c9e,0x46fd72b7,0xa124fb89,0xe4847fb1,0xa2d8ffbc,0x75959cbd,0xc8a588ee,0x42579f65,0xb80b499d,0x368c92e6,0x999a5df1,0xea4ef6cd,0x936fe604,0xaa73bb7f +.long 0x6457d188,0xf347a70d,0x8b7a388b,0x86eda86b,0x0ccd6013,0xb7cdff06,0xd0053fb2,0xbeb1b6c7,0x99240a9f,0x0b022387,0x776189b2,0x1bbb384f,0x9066193a,0x8695e71e,0x06ffac7e,0x2eb50097 +.long 0x4a7d2caa,0x0654a9c0,0xa5aaa290,0x6f3fb3d1,0xff476e8f,0x835db041,0xc42295e4,0x540b8b0b,0x05e214f5,0xa5c73ac9,0x56a0b638,0x9a74075a,0xce9e680b,0x2e4b1090,0x6b8d9afa,0x57a5b479 +.long 0x26bfe65c,0x0dca48e7,0x7290c307,0x097e391c,0x6669e72e,0x683c462e,0x062559ac,0xf505be1e,0xe3a3035a,0x5fbe3ea1,0x9cd50da8,0x6431ebf6,0x1f6407f2,0xfd169d5c,0x60fce6b8,0x8d838a95 +.long 0x650006f0,0x2a2bfa7f,0x50c0fbb2,0xdfd7dad3,0xccf9ad96,0x92452495,0xd95635f9,0x183bf494,0x4a7bd989,0x02d5df43,0xa5431095,0x505385cc,0xfd43f53e,0xdd98e67d,0x500c34a9,0xd61e1a6c +.long 0x4a8a3d62,0x5a4b46c6,0x247743d2,0x8469c4d0,0x88f7e433,0x2bb3a13d,0x01be5849,0x62b23a10,0xa63d1a4c,0xe83596b4,0x7d183f3e,0x454e7fea,0x17afb01c,0x643fce61,0x1c4c3638,0x4e65e5e6 +.long 0xef74c45b,0x41d85ea1,0xae328506,0x2cfbfa66,0x3ada7da9,0x98b078f5,0xec752fbb,0xd985fe37,0x5a0148b4,0xeece68fe,0x2d78136d,0x6f9a55c7,0xd2b729ce,0x232dccc4,0x90aafbc4,0xa27e0dfd +.long 0x12b4603e,0x96474452,0x6b706d14,0xa876c551,0x69a9d412,0xdf145fcf,0x2d479c34,0xe2ab75b7,0x1a23ff97,0x12df9a76,0x5d359d10,0xc6138992,0xfa835f22,0x6e51c7ae,0xc0fcc4d9,0x69a79cb1 +.long 0x594cc7e1,0xf57f350d,0x3350ab79,0x3079ca63,0x9aff594a,0x226fb614,0x6d59a62b,0x35afec02,0x06ed2c6e,0x9bee46f4,0x7d939a57,0x58da1735,0x8fd1797e,0x44c50402,0x5ccea6ca,0xd8853e7c +.long 0xa35fcd5f,0x4065508d,0x495ccaeb,0x8965df8c,0x12e1a962,0x0f2da850,0xc1cf1cc4,0xee471b94,0x0a08fb75,0xcef19bc8,0x81de3591,0x704958f5,0x3aef4f88,0x2867f8b2,0xea9f9a5f,0x8d749384 +.long 0x8c9049f4,0x1b385537,0x7b92d8b6,0x5be948f3,0xb6e2bd6b,0xd96f725d,0x958c454d,0x37a222bc,0x8809bf61,0xe7c61abb,0x1346f18d,0x46f07fbc,0xe87c0d1c,0xfb567a7a,0x7ef3d07a,0x84a461c8 +.long 0xd9278d98,0x0a5adce6,0x9dfc73e1,0x24d94813,0x054321c3,0x4f3528b6,0x692ea706,0x2e03fdde,0x47b533c0,0x10e60619,0x2ca3c055,0x1a8bc73f,0x1bb62b8f,0xae58d4b2,0x584a24e3,0xb2045a73 +.long 0xbd76e195,0x3ab3d5af,0x6938a810,0x478dd1ad,0x6ee3d5cb,0x6ffab393,0x22b361e4,0xdfb693db,0x51dbf1a7,0xf9694496,0x08a2e762,0xcab4b4ef,0xd39bba9a,0xe8c92f25,0xf1464d96,0x850e61bc +.long 0xdc09508b,0xb7e830e3,0x74317655,0xfaf6d2cf,0xdf690355,0x72606ceb,0xd0c3ded6,0x48bb92b3,0x5c7cf892,0x65b75484,0xd5d5f01f,0xf6cd7ac9,0x96401d69,0xc2c30a59,0xed921878,0x91268650 +.long 0xb78c558f,0x380bf913,0xc8afdaa9,0x43c0baeb,0x54f169d3,0x377f61d5,0xae5ff20b,0xf8da07e3,0xa8a90ea8,0xb676c49d,0x83a29b21,0x81c1ff2b,0x2ad8d276,0x383297ac,0xba89f982,0x3001122f +.long 0x6718e448,0xe1d794be,0x7c3e6e13,0x246c1482,0x5d26b5ef,0x56646ef8,0x88069cdd,0x80f5091e,0x724bdd38,0xc5992e2f,0x8471e8c7,0x02e915b4,0x0d0ff2a9,0x96ff320a,0x4384d1a0,0xbf886487 +.long 0xc93f72d6,0xbbe1e6a6,0xcad800ea,0xd5f75d12,0xe7acf117,0xfa40a09f,0x7581a355,0x32c8cdd5,0x7023c499,0x74221992,0x38ec3901,0xa8afe5d7,0xa90e83f0,0x5691afcb,0x0b8f8eac,0x41bcaa03 +.long 0x8d2668d5,0xe38b5ff9,0x7ad81965,0x0715281a,0x03c6ce11,0x1bc8fc7c,0x8b650436,0xcbbee6e2,0x0cdb9808,0x06b00fe8,0xfe3ed315,0x17d6e066,0x4d0b5018,0x2e9d38c6,0x844dcaef,0xab8bfd56 +.long 0x513aed8b,0x42894a59,0x314bd07a,0xf77f3b6d,0x8e42b582,0xbbdecb8f,0xd2390fe6,0xf10e2fa8,0x62a2f201,0xefb95022,0x50ee32b0,0x4d59ea50,0x6da789a8,0xd87f7728,0xf79492c4,0xcf98a2cf +.long 0x720943c2,0xf9577239,0x3990b9d0,0xba044cf5,0x95f2884a,0x5aa8e823,0x0278a0af,0x834de6ed,0x5f25bd12,0xc8e1ee9a,0x6f7ab271,0x9259ceaa,0x77d00b76,0x7e6d97a2,0xa437832a,0x5c0c6eea +.long 0x5606b81d,0x5232c20f,0x0d991ee5,0xabd7b375,0x8632d951,0x4d2bfe35,0x98ed9364,0x78f85146,0xf30c3282,0x951873f0,0xa789230b,0x0da8ac80,0x5398967f,0x3ac7789c,0xbdda0fb5,0xa69b8f7f +.long 0x6add8545,0xe5db7717,0x72c49b66,0x1b71cb66,0x68421d77,0xd8560739,0x83e3afea,0x03840fe8,0x1ec69977,0xb391dad5,0x307f6726,0xae243fb9,0xe8ca160c,0xc88ac87b,0x4ce355f4,0x5174cced +.long 0xe58ba37d,0x98a35966,0x7817335d,0xfdcc8da2,0x83fbc7bf,0x5b752830,0xd9c96984,0x68e419d4,0x02a40380,0x409a39f4,0x1fe977bc,0x88940faf,0x8f8edea6,0xc640a94b,0xed11547d,0x1e22cd17 +.long 0x59ffc3e2,0xe28568ce,0xc1dee4e7,0x60aa1b55,0x837cb363,0xc67497c8,0x105a2bf2,0x06fb438a,0x500d8e20,0x30357ec4,0x0670db10,0x1ad9095d,0xc73b7cfd,0x7f589a05,0x880d6d28,0xf544607d +.long 0xa20ef103,0x17ba93b1,0x6ba6577b,0xad859130,0x6fa214a0,0x65c91cf6,0x27990da5,0xd7d49c6c,0x20bb569d,0xecd9ec8d,0xeeffbc33,0xbd4b2502,0x6bed0467,0x2056ca5a,0x5b63728c,0x7916a1f7 +.long 0x53a4f566,0xd4f9497d,0x97b56810,0x89734664,0x0494a621,0xf8e1da74,0x8d011c68,0x82546a93,0xc61ac162,0x1f3acb19,0xabad0d3e,0x52f8fa9c,0xb4b7ea43,0x15356523,0xae608125,0x5a16ad61 +.long 0x4faed184,0xb0bcb87f,0x5029f45f,0x5f236b1d,0x0bc6b1fc,0xd42c7607,0x68aefce3,0xc644324e,0x5c5d8446,0x8e191d59,0x13ae1979,0xc0208077,0x3ba59cc7,0xadcaee55,0xa2cb81ba,0x20ed6d6b +.long 0xb6efcffc,0x0952ba19,0x97c0b87c,0x60f12d68,0x9caa30bc,0x4ee2c7c4,0x97fbff4e,0x767238b7,0x501b5d92,0xebc73921,0xc2a37737,0x3279e3df,0x6d197543,0x9fc12bc8,0x0a40db4e,0xfa94dc6f +.long 0x530ccbbd,0x7392b41a,0xea823525,0x87c82146,0x05d98d0c,0xa52f984c,0x5ef6974c,0x2ae57d73,0x3042a6dd,0x9377f7bf,0x19647a64,0xb1a007c0,0x0cca9767,0xfaa9079a,0xf68f72d5,0x3d81a25b +.long 0xff81578e,0x752067f8,0x9045447d,0x78622150,0x0505aa6f,0xc0c22fcf,0x6bed1c77,0x1030f0a6,0x1f0bd739,0x31f29f15,0xe6debe85,0x2d7989c7,0x8e677e98,0x5c070e72,0x06e81fd5,0x0a817bd3 +.long 0xb0f2ac95,0xc110d830,0xab20e64e,0x48d0995a,0x7729cd9a,0x0f3e00e1,0xdd556946,0x2a570c20,0x4e86214d,0x912dbcfd,0xcf615498,0x2d014ee2,0x3530d76e,0x55e2b1e6,0xfd0fd6d1,0xc5135ae4 +.long 0xd4f3049f,0x0066273a,0xe7087477,0xbb8e9893,0x14c6e5fd,0x2dba1ddb,0x51f57e6c,0xdba37886,0x5a72f2cf,0x5aaee0a6,0x7bea5642,0x1208bfbf,0x67872c37,0xf5c6aa3b,0x43f93224,0xd726e083 +.long 0x061f1658,0x1854daa5,0xdf0cd2b3,0xc0016df1,0x833d50de,0xc2a3f23e,0xbbbd3017,0x73b681d2,0x3ac343c0,0x2f046dc4,0x85716421,0x9c847e7d,0x0917eed4,0xe1e13c91,0x63a1b9c6,0x3fc9eebd +.long 0x7fe02299,0x0f816a72,0x294f3319,0x6335ccc2,0x4745c5be,0x3820179f,0x922f066e,0xe647b782,0x02cafb8a,0xc22e49de,0xfcc2eccc,0x299bc2ff,0x6e0e8282,0x9a8feea2,0xfe893205,0xa627278b +.long 0x7933e47b,0xa7e19733,0x2e766402,0xf4ff6b13,0x98440d9f,0xa4d8be0a,0x38938808,0x658f5c2f,0xc95b3b3e,0x90b75677,0x3137b6ff,0xfa044269,0x43c47c29,0x077b039b,0x8a6445b2,0xcca95dd3 +.long 0x2333fc4c,0x0b498ba4,0xf736a1b1,0x274f8e68,0x5f1d4b2e,0x6ca348fd,0xa8f10199,0x24d3be78,0xca14f530,0x8535f858,0x5b982e51,0xa6e7f163,0x36e1bf62,0x847c8512,0x03448418,0xf6a7c58e +.long 0xf9374ab6,0x583f3703,0x6e564145,0x864f9195,0x22526d50,0x33bc3f48,0x1262a496,0x9f323c80,0x3f046a9a,0xaa97a7ae,0xdf8a039a,0x70da183e,0x52aa0ba6,0x5b68f71c,0x21459c2d,0x9be0fe51 +.long 0xcbc613e5,0xc1e17eb6,0x497ea61c,0x33131d55,0xaf7eded5,0x2f69d39e,0xde6af11b,0x73c2f434,0xa4a375fa,0x4ca52493,0xb833c5c2,0x5f06787c,0x3e6e71cf,0x814e091f,0x8b746666,0x76451f57 +.long 0x694db7e0,0x80f9bdef,0xb9fcddc6,0xedca8787,0x03b8dce1,0x51981c34,0x70e10ba1,0x4274dcf1,0x6def6d1a,0xf72743b8,0xebdb1866,0xd25b1670,0x050c6f58,0xc4491e8c,0x87fbd7f5,0x2be2b2ab +.long 0xd111f8ec,0x3e0e5c9d,0xb7c4e760,0xbcc33f8d,0xbd392a51,0x702f9a91,0xc132e92d,0x7da4a795,0x0bb1151b,0x1a0b0ae3,0x02e32251,0x54febac8,0x694e9e78,0xea3a5082,0xe4fe40b8,0xe58ffec1 +.long 0xd1e0cf9e,0xf85592fc,0xc0e7b2e8,0xdea75f0d,0xc135584e,0xc04215cf,0x2f57092a,0x174fc727,0xeb930bea,0xe7277877,0x5eb02a5a,0x504caccb,0xf5241b9b,0xf9fe08f7,0x8d5ca954,0xe7fb62f4 +.long 0x29c4120b,0xfbb8349d,0xc0d0d915,0x9f94391f,0x5410ba51,0xc4074fa7,0x150a5911,0xa66adbf6,0x34bfca38,0xc164543c,0xb9e1ccfc,0xe0f27560,0xe820219c,0x99da0f53,0xc6b4997a,0xe8234498 +.long 0x9d4c5423,0xcfb88b76,0xb0521c49,0x9e56eb10,0xbe8700a1,0x418e0b5e,0xf93cb58a,0x00cbaad6,0xd92a5e67,0xe923fbde,0x1f347f11,0xca4979ac,0x6bc0585b,0x89162d85,0xac3c70e3,0xdd6254af +.long 0x516e19e4,0x7b23c513,0xc5c4d593,0x56e2e847,0x5ce71ef6,0x9f727d73,0xf79a44c5,0x5b6304a6,0x3ab7e433,0x6638a736,0xfe742f83,0x1adea470,0x5b7fc19f,0xe054b854,0xba1d0698,0xf935381a +.long 0x799e9a74,0x546eab2d,0xa949f729,0x96239e0e,0x7090055a,0xca274c6b,0x9020c9b0,0x835142c3,0xa2e8807f,0xa405667a,0x1aa3d39e,0x29f2c085,0x42fc72f5,0xcc555d64,0xfbeacb3c,0xe856e0e7 +.long 0x918e4936,0xb5504f9d,0xb2513982,0x65035ef6,0x6f4d9cb9,0x0553a0c2,0xbea85509,0x6cb10d56,0xa242da11,0x48d957b7,0x672b7268,0x16a4d3dd,0x8502a96b,0x3d7e637c,0x730d463b,0x27c7032b +.long 0xe4136a14,0xbdc02b18,0x678e32bf,0xbacf969d,0xdd9c3c03,0xc98d89a3,0x23becc4f,0x7b92420a,0xc64d565c,0xd4b41f78,0x10f28295,0x9f969d00,0xb13d051a,0xec7f7f76,0xa92da585,0x08945e1e +.long 0x5846426f,0x55366b7d,0x247d441d,0xe7d09e89,0x736fbf48,0x510b404d,0xe784bd7d,0x7fa003d0,0x17fd9596,0x25f7614f,0x35cb98db,0x49e0e0a1,0x2e83a76a,0x2c65957b,0xcddbe0f8,0x5d40da8d +.long 0x050bad24,0xf2b8c405,0xc2aa4823,0x8918426d,0xa38365a7,0x2aeab3dd,0x7c91b690,0x72031717,0x60a94120,0x8b00d699,0xe99eaeec,0x478a255d,0x6f60aafd,0xbf656a5f,0x5dee77b3,0xdfd7cb75 +.long 0xa595939d,0x37f68bb4,0x28740217,0x03556479,0x84ad7612,0x8e740e7c,0x9044695f,0xd89bc843,0x85a9184d,0xf7f3da5d,0x9fc0b074,0x562563bb,0xf88a888e,0x06d2e6aa,0x161fbe7c,0x612d8643 +.long 0xf64085e7,0x465edba7,0x29aa8511,0xb230f304,0xcda2d188,0x53388426,0x4b666649,0x90885735,0x652f54f6,0x6f02ff9a,0x5fae2bf0,0x65c82294,0x62f5eee3,0x7816ade0,0xfcc56d70,0xdcdbdf43 +.long 0x54530bb2,0x9fb3bba3,0xcb0869ea,0xbde3ef77,0x0b431163,0x89bc9046,0xe4819a35,0x4d03d7d2,0x43b6a782,0x33ae4f9e,0x9c88a686,0x216db307,0x00ffedd9,0x91dd88e0,0x12bd4840,0xb280da9f +.long 0x1635e741,0x32a7cb8a,0x78be02a7,0xfe14008a,0x1b7ae030,0x3fafb334,0x5add0ce9,0x7fd508e7,0xd607ad51,0x72c83219,0x8d40964a,0x0f229c0a,0x1c878da2,0x1be2c336,0xeab2ab86,0xe0c96742 +.long 0x3e538cd7,0x458f8691,0x8e08ad53,0xa7001f6c,0xbf5d15ff,0x52b8c6e6,0x011215dd,0x548234a4,0x3d5b4045,0xff5a9d2d,0x4a904190,0xb0ffeeb6,0x48607f8b,0x55a3aca4,0x30a0672a,0x8cbd665c +.long 0x42583068,0x87f834e0,0xf3f6e683,0x02da2aeb,0x05c12248,0x6b763e5d,0x65a8aefc,0x7230378f,0x71e8e5ca,0x93bd80b5,0xb3b62524,0x53ab041c,0x6c9c552e,0x1b860513,0xd5524e66,0xe84d402c +.long 0xf37f5937,0xa37f3573,0xd1e4fca5,0xeb0f6c7d,0xac8ab0fc,0x2965a554,0x274676ac,0x17fbf56c,0xacf7d720,0x2e2f6bd9,0x10224766,0x41fc8f88,0x85d53bef,0x517a14b3,0x7d76a7d1,0xdae327a5 +.long 0xc4818267,0x6ad0a065,0x37c1bbc1,0x33aa189b,0x27392a92,0x64970b52,0x2d1535ea,0x21699a1c,0xc2d7a7fd,0xcd20779c,0x99c83cf2,0xe3186059,0x72c0b8c7,0x9b69440b,0x7b9e0e4d,0xa81497d7 +.long 0x1f5f82dc,0x515d5c89,0x6361079e,0x9a7f67d7,0x11a35330,0xa8da81e3,0x4b18be1b,0xe44990c4,0xaf103e59,0xc7d5ed95,0x8dac9261,0xece8aba7,0x9394b8d3,0xbe82b099,0x16adfe83,0x6830f09a +.long 0x88172d01,0x250a29b4,0xcaff9e02,0x8b20bd65,0xe8a6329a,0xb8a7661e,0xd3fce920,0x4520304d,0x2b47f7ef,0xae45da1f,0x5bffc540,0xe07f5288,0x3464f874,0xf7997009,0xa6fa1f38,0x2244c2cd +.long 0x94d7d9b1,0x43c41ac1,0xc82e7f17,0x5bafdd82,0x5fda0fca,0xdf0614c1,0xa8ae37ad,0x74b043a7,0x9e71734c,0x3ba6afa1,0x9c450f2e,0x15d5437e,0x67e242b1,0x4a5883fe,0x2c1953c2,0x5143bdc2 +.long 0xfc5e8920,0x542b8b53,0x9a9cee08,0x363bf9a8,0xc3486e08,0x02375f10,0x8c5e70d2,0x2037543b,0x625640b4,0x7109bccc,0x8bc62c3b,0xcbc1051e,0x803f26ea,0xf8455fed,0xeb372424,0x6badceab +.long 0x6b53f5f9,0xa2a9ce7c,0x1b176d99,0x64246595,0xb95c081b,0xb1298d36,0x1d9a9ee6,0x53505bb8,0xf2ba70b0,0x3f6f9e61,0x8afad453,0xd07e16c9,0xe7eb4a6a,0x9f1694bb,0x3cb0bc8e,0xdfebced9 +.long 0x53868c8b,0x92d3dcdc,0x386107a6,0x174311a2,0x689b4e64,0x4109e07c,0x2df3dcb6,0x30e4587f,0x0811b3b2,0x841aea31,0x0cce43ea,0x6144d41d,0x2a9a7803,0x464c4581,0x3e158930,0xd03d371f +.long 0xb1f3390b,0xc676d7f2,0xa5b61272,0x9f7a1b8c,0xc2e127a9,0x4ebebfc9,0x5dd997bf,0x4602500c,0x4711230f,0x7f09771c,0x020f09c1,0x058eb37c,0xfee5e38b,0xab693d4b,0x4653cbc0,0x9289eb1f +.long 0xd51b9cf5,0xbecf46ab,0x9f0121af,0xd2aa9c02,0xe90dc274,0x36aaf7d2,0x48b95a3c,0x909e4ea0,0x6f32dbdb,0xe6b70496,0x8b030b3e,0x672188a0,0xcfb617e2,0xeeffe5b3,0x7c82709e,0x87e947de +.long 0x1770f5a7,0xa44d2b39,0x0e44eb82,0xe4d4d791,0x3f69712a,0x42e69d1e,0xac6a820e,0xbf11c4d6,0x42c4224c,0xb5e7f3e5,0x449d941c,0xd6b4e81c,0x5450e878,0x5d72bd16,0xee25ac54,0x6a61e28a +.long 0xe6f1cd95,0x33272094,0x0d18673f,0x7512f30d,0x5afc1464,0x32f7a4ca,0x6bbb977b,0x2f095656,0xa8226200,0x586f47ca,0x1ac07369,0x02c868ad,0xc613acbe,0x4ef2b845,0x0386054c,0x43d7563e +.long 0xab952578,0x54da9dc7,0x26e84d0b,0xb5423df2,0x9b872042,0xa8b64eeb,0x5990f6df,0xac205782,0x21f4c77a,0x4ff696eb,0xaab273af,0x1a79c3e4,0x9436b3f1,0x29bc922e,0xd6d9a27a,0xff807ef8 +.long 0x778f22a0,0x82acea3d,0x5b5e7469,0xfb10b2e8,0x2818ee7d,0xc0b16980,0xc91c1a2f,0x011afff4,0xad124418,0x95a6d126,0xe72e295f,0x31c081a5,0xf2f4db75,0x36bb283a,0x7acef462,0xd115540f +.long 0x33f6746c,0xc7f3a8f8,0xfea990ca,0x21e46f65,0xcaddb0a9,0x915fd5c5,0x78614555,0xbd41f016,0x426ffb58,0x346f4434,0x14dbc204,0x80559436,0x5a969b7f,0xf3dd20fe,0xe899a39a,0x9d59e956 +.long 0x8ad4cf4b,0xf1b0971c,0x2ffb8fb8,0x03448860,0x65340ba4,0xf071ac3c,0xb27fd758,0x408d0596,0x98c364b0,0xe7c78ea4,0x051e8ab5,0xa4aac4a5,0x485d9002,0xb9e1d560,0x88844455,0x9acd518a +.long 0xd06f56c0,0xe4ca688f,0xdf027972,0xa48af70d,0x5e9a609d,0x691f0f04,0xee61270e,0xa9dd82cd,0xa0ef18d3,0x8903ca63,0x3d6ca3bd,0x9fb7ee35,0xabf47d03,0xa7b4a09c,0x1c67de8e,0x4cdada01 +.long 0x9355a244,0x52003749,0x4f2151a9,0xe77fd2b6,0x66b4efcb,0x695d6cf6,0xda2cfe25,0xc5a0cacf,0xef811865,0x104efe5c,0x9ea5cc3d,0xf52813e8,0x40b58dbc,0x855683dc,0x175fcb11,0x0338ecde +.long 0x74921592,0xf9a05637,0xb9bb9d31,0xb4f1261d,0x4e9c5459,0x551429b7,0x6ea71f53,0xbe182e6f,0xdfc50573,0xd3a3b07c,0x62be8d44,0x9ba1afda,0x52ab65d3,0x9bcfd2cb,0xa9571802,0xdf11d547 +.long 0x02a2404a,0x099403ee,0x21088a71,0x497406f4,0x5004ae71,0x99479409,0xa812c362,0xbdb42078,0xd8828442,0x2b72a30f,0xfcb5ed1c,0x283add27,0x66a40015,0xf7c0e200,0x08b295ef,0x3e3be641 +.long 0xe038a675,0xac127dc1,0x8c5c6320,0x729deff3,0xa90d2c53,0xb7df8fd4,0x681e7cd3,0x9b74b0ec,0xdab407e5,0x5cb5a623,0x76b340c6,0xcdbd3615,0x7d28392c,0xa184415a,0xe96f7830,0xc184c1d8 +.long 0x81d3a80f,0xc3204f19,0xc8e02432,0xfde0c841,0x8149e0c1,0x78203b3e,0x08053a73,0x5904bdbb,0x101b6805,0x30fc1dd1,0x49aa6d49,0x43c223bc,0x7a174087,0x9ed67141,0xd5997008,0x311469a0 +.long 0x5e43fc61,0xb189b684,0xe0d3ab57,0xf3282375,0xb1181da8,0x4fa34b67,0x99ee52b8,0x621ed0b2,0xad990676,0x9b178de1,0x56d54065,0xd51de67b,0x7538c201,0x2a2c27c4,0x38a40f5c,0x33856ec8 +.long 0xbe6cdcde,0x2522fc15,0x9f0c6f89,0x1e603f33,0x103e30a6,0x7994edc3,0x220c853e,0x033a00db,0xf7bb7fd7,0xd3cfa409,0x462d18f6,0x70f8781e,0x687fe295,0xbbd82980,0x595669f3,0x6eef4c32 +.long 0x2f7e85c3,0x86a9303b,0x71988f9b,0x5fce4621,0xc138acb5,0x5b935bf6,0x25661212,0x30ea7d67,0xe51ab9a2,0xef1eb5f4,0xae067c78,0x0587c98a,0x77ca9ca6,0xb3ce1b3c,0x54b5f057,0x2a553d4d +.long 0x4da29ec2,0xc7898236,0xb9c57316,0xdbdd5d13,0x2cd80d47,0xc57d6e6b,0xfe9e7391,0x80b460cf,0xf963c31e,0x98648cab,0xcc4d32fd,0x67f9f633,0xfdf7c687,0x0af42a9d,0x0b015ea7,0x55f292a3 +.long 0xcd21ab3d,0x89e468b2,0xc393d392,0xe504f022,0xa5013af9,0xab21e1d4,0xc2c28acb,0xe3283f78,0x226bf99f,0xf38b35f6,0x0e291e69,0xe8354274,0xb20c162d,0x61673a15,0xb04fbdbe,0xc101dc75 +.long 0x255bd617,0x8323b4c2,0x6c2a9154,0x6c969693,0x62679387,0xc6e65860,0xb8c88e23,0x8e01db0c,0x893a5559,0x33c42873,0x47a3e149,0x7630f04b,0xddcf35f8,0xb5d80805,0x77dfe732,0x582ca080 +.long 0x0b1894a0,0x2c7156e1,0xd81c68c0,0x92034001,0xc8b115b5,0xed225d00,0x83b907f2,0x237f9c22,0x4470e2c0,0x0ea2f32f,0x58be4e95,0xb725f7c1,0xb1ae5463,0x0f1dcafa,0x1ba2fc04,0x59ed5187 +.long 0xd0115d4d,0xf6e0f316,0xd3691599,0x5180b12f,0x527f0a41,0x157e32c9,0xa8e0ecc0,0x7b0b081d,0xbf4f0dd0,0x6dbaaa8a,0x4d252696,0x99b289c7,0xdbf864fe,0x79b7755e,0x76cad3ab,0x6974e2b1 +.long 0x06ddd657,0x35dbbee2,0x2ff3a96d,0xe7cbdd11,0x076be758,0x88381968,0x08c91f5d,0x2d737e72,0x86ec3776,0x5f83ab62,0x945fa7a1,0x98aa649d,0x72ef0933,0xf477ec37,0x098c17b1,0x66f52b1e +.long 0xd803738b,0x9eec58fb,0xe4e86aa4,0x91aaade7,0xa5b51492,0x6b1ae617,0xbbc45974,0x63272121,0x862c5129,0x7e0e28f0,0x3321a4a0,0x0a8f79a9,0x5041c88f,0xe26d1664,0x53233e3a,0x0571b805 +.long 0xc9520711,0xd1b0ccde,0x3c8b84bf,0x55a9e4ed,0xa1fef314,0x9426bd39,0x6eb93f2b,0x4f5f638e,0x2bf9341b,0xba2a1ed3,0x4d42d5a9,0xd63c1321,0x316dc7c5,0xd2964a89,0xca511851,0xd1759606 +.long 0xf9e6ed35,0xd8a9201f,0x6736925a,0xb7b5ee45,0x99581af7,0x0a83fbbc,0x64eeb051,0x3076bc40,0x02dec312,0x5511c98c,0x238dcb78,0x270de898,0x539c08c9,0x2cf4cf9c,0x38d3b06e,0xa70cb65e +.long 0xcfe57bbd,0xb12ec10e,0x35a0c2b5,0x82c7b656,0x161c67bd,0xddc7d5cd,0xae3a32cc,0xe32e8985,0xd11a5529,0x7aba9444,0x2427fa1a,0xe964ed02,0x24a1770a,0x1528392d,0x12c72fcd,0xa152ce2c +.long 0x8ec07649,0x714553a4,0x459dd453,0x18b4c290,0x7b64b110,0xea32b714,0x2e6f07a2,0xb871bfa5,0x9e2e3c9b,0xb67112e5,0x44aa90f6,0xfbf250e5,0xbd539006,0xf77aedb8,0xd172a66f,0x3b0cdf9a +.long 0xf8c51187,0xedf69fea,0x741e4da7,0x05bb67ec,0x08114345,0x47df0f32,0xbb9792b1,0x56facb07,0x8f6229e4,0xf3e007e9,0x526fba0f,0x62d103f4,0xb0339d79,0x4f33bef7,0xb59bfec1,0x9841357b +.long 0xc34e6705,0xfa8dbb59,0x7fdaa84c,0xc3c7180b,0xa4108537,0xf95872fc,0x932a3e5a,0x8750cc3b,0xb7275d7d,0xb61cc69d,0x2e59b2e9,0xffa0168b,0x6ecbb493,0xca032abc,0x2c9082d8,0x1d86dbd3 +.long 0xe28ef5ba,0xae1e0b67,0xcb18e169,0x2c9a4699,0x1e6bbd20,0x0ecd0e33,0xaf5e81d2,0x571b360e,0x101c1d45,0xcd9fea58,0x18880452,0x6651788e,0x1f8dd446,0xa9972635,0xe37281d0,0x44bed022 +.long 0x33da525d,0x094b2b2d,0x13144fd8,0xf193678e,0xf4c1061d,0xb8ab5ba4,0xdccbe0f4,0x4343b5fa,0x63812713,0xa8702371,0xf7611d93,0x47bf6d2d,0xbd21e1d7,0x46729b8c,0xd629e77d,0x7484d4e0 +.long 0x60dbac1f,0x830e6eea,0xda06a2f7,0x23d8c484,0x50ca535b,0x896714b0,0xebd97a9b,0xdc8d3644,0xb12177b4,0x106ef9fa,0x534d5d9c,0xf79bf464,0xa6ab360b,0x2537a349,0xa00c744f,0xc7c54253 +.long 0xe5911a76,0xb3c7a047,0x647f1ee7,0x61ffa5c8,0x8f56ab42,0x15aed36f,0xa3ff9ac9,0x6a0d41b0,0xcc30d357,0x68f469f5,0x6b72be96,0xbe9adf81,0x903ad461,0x1cd926fe,0xcaca441b,0x7e89e38f +.long 0xfacf69d4,0xf0f82de5,0x4775344c,0x363b7e76,0xb2e36d04,0x6894f312,0x11d1c9a5,0x3c6cb4fe,0x4008e1f2,0x85d9c339,0x249f326c,0x5e9a85ea,0x678c5e06,0xdc35c60a,0x9f86fba9,0xc08b944f +.long 0x89f71f0f,0xde40c02c,0xff3da3c0,0xad8f3e31,0x42125ded,0x3ea5096b,0xa7379183,0x13879cbf,0x6b306a0b,0x6f4714a5,0x67646c5e,0x359c2ea6,0x07726368,0xfacf8943,0x65ff431e,0x07a58935 +.long 0x68754ab0,0x24d661d1,0x6f429a76,0x801fce1d,0xa58ce769,0xc068a85f,0x5d5eca2b,0xedc35c54,0xa3f660d1,0xea31276f,0xb8fc7167,0xa0184ebe,0x1d8db0ae,0x0f20f21a,0x56c35e12,0xd96d095f +.long 0xf8c2a25b,0xedf402b5,0x059204b6,0x1bb772b9,0x19b4e34c,0x50cbeae2,0x3fa0845a,0x93109d80,0x8ef59fb5,0x54f7ccf7,0x88070963,0x3b438fe2,0x31f3ba9b,0x9e28c659,0xead9da92,0x9cc31b46 +.long 0xb733aa5f,0x3c2f0ba9,0xf05af235,0xdece47cb,0xa2ac82a5,0xf8e3f715,0x2203f18a,0xc97ba641,0x09c11060,0xc3af5504,0x46af512d,0x56ea2c05,0xf3f28146,0xfac28daf,0x959ef494,0x87fab43a +.long 0xd4c5105f,0x09891641,0x6d7fbd65,0x1ae80f8e,0xbee6bdb0,0x9d67225f,0x7fc4d860,0x3b433b59,0x93e85638,0x44e66db6,0xe3e9862f,0xf7b59252,0x665c32ec,0xdb785157,0xae362f50,0x702fefd7 +.long 0x0fefb0c3,0x3754475d,0x46d7c35d,0xd48fb56b,0x363798a4,0xa070b633,0x8fdb98e6,0xae89f3d2,0x6363d14c,0x970b89c8,0x67abd27d,0x89817521,0x44d5a021,0x9bf7d474,0xcac72aee,0xb3083baf +.long 0xbe949a44,0x389741de,0x546a4fa5,0x638e9388,0xa0047bdc,0x3fe6419c,0xaaea57ca,0x7047f648,0x41fbab17,0x54e48a90,0x576bdba2,0xda8e0b28,0xc72afddc,0xe807eebc,0xf42577bf,0x07d3336d +.long 0xbfe20925,0x62a8c244,0x8fdce867,0x91c19ac3,0xdd387063,0x5a96a5d5,0x21d324f6,0x61d587d4,0xa37173ea,0xe87673a2,0x53778b65,0x23848008,0x05bab43e,0x10f8441e,0x4621efbe,0xfa11fe12 +.long 0x81685d7b,0x047b772e,0xbf34a976,0x23f27d81,0x915f48ef,0xc27608e2,0xa521d5c3,0x3b0b43fa,0x63ca7284,0x7613fb26,0x1d4db837,0x7f5729b4,0x583b526b,0x87b14898,0xbbadd3d1,0x00b732a6 +.long 0x2048e396,0x8e02f426,0x383d9de4,0x436b50b6,0x471e85ad,0xf78d3481,0xd005c8d6,0x8b01ea6a,0x97015c07,0xd3c7afee,0x4e3ba2ae,0x46cdf1a9,0x83d3a1d2,0x7a42e501,0xb541dff4,0xd54b5268 +.long 0x4e23e9bc,0x3f24cf30,0x126e3624,0x4387f816,0x3b0b6d61,0x26a46a03,0x8b2d777c,0xaf1bc845,0x527de79c,0x25c401ba,0x4261bbb6,0x0e1346d4,0x287b4bc7,0x4b96c44b,0x5254562f,0x658493c7 +.long 0xb8a24a20,0x23f949fe,0xf52ca53f,0x17ebfed1,0xbcfb4853,0x9b691bbe,0x6278a05d,0x5617ff6b,0xe3c99ebd,0x241b34c5,0x1784156a,0xfc64242e,0x695d67df,0x4206482f,0xee27c011,0xb967ce0e +.long 0x21c80b5d,0x65db3751,0xa31ecca0,0x2e7a563c,0x5238a07e,0xe56ffc4e,0x32ced854,0x3d6c2966,0xaf70b885,0xe99d7d1a,0x2d686459,0xafc3bad9,0x0cc8ba5b,0x9c78bf46,0x18955aa3,0x5a439519 +.long 0x5fe4e314,0xf8b517a8,0xfcb8906f,0xe60234d0,0xf2061b23,0xffe542ac,0x6b4cb59c,0x287e191f,0x09d877d8,0x21857ddc,0x14678941,0x1c23478c,0xb6e05ea4,0xbbf0c056,0xb01594fe,0x82da4b53 +.long 0xfadb8608,0xf7526791,0x7b74cdf6,0x049e832d,0xc2b90a34,0xa43581cc,0x9360b10c,0x73639eb8,0xe1e4a71b,0x4fba331f,0x8072f919,0x6ffd6b93,0x65679032,0x6e53271c,0xf14272ce,0x67206444 +.long 0xb2335834,0xc0f734a3,0x90ef6860,0x9526205a,0x04e2bb0d,0xcb8be717,0x02f383fa,0x2418871e,0x4082c157,0xd7177681,0x29c20073,0xcc914ad0,0xe587e728,0xf186c1eb,0x61bcd5fd,0x6fdb3c22 +.long 0xf2f9f8e9,0x30d014a6,0x4fec49d2,0x963ece23,0x9605a8d9,0x862025c5,0x19f8929a,0x39874445,0x12bf476a,0x01b6ff65,0x09cf7d91,0x598a64d8,0x93be56ca,0xd7ec7749,0xcbb33615,0x10899785 +.long 0x02eee3ad,0xb8a092fd,0x30145270,0xa86b3d35,0x8512b675,0x323d98c6,0x62ebb40f,0x4b8bc785,0x413f9cde,0x7d301f54,0x2bab5664,0xa5e4fb4f,0x1cbfec23,0x1d2b252d,0xe177120d,0xfcd576bb +.long 0x83731a34,0x04427d3e,0xed836e8e,0x2bb9028e,0xb612ca7c,0xb36acff8,0xd3d9c73a,0xb88fe5ef,0xedea4eb3,0xbe2a6bc6,0x488eec77,0x43b93133,0xb17106e1,0xf41ff566,0x654efa32,0x469e9172 +.long 0x41c23fa3,0xb4480f04,0xc1989a2e,0xb4712eb0,0x93a29ca7,0x3ccbba0f,0xd619428c,0x6e205c14,0xb3641686,0x90db7957,0x45ac8b4e,0x0432691d,0xf64e0350,0x07a759ac,0x9c972517,0x0514d89c +.long 0xa8e67fc3,0x1701147f,0xab2085be,0x9e2e0b8b,0xac284e57,0xd5651824,0x74893664,0x890d4325,0xc55e68a3,0x8a7c5e6e,0x4339c85a,0xbf12e90b,0xf922b655,0x31846b85,0x0bf4d700,0x9a54ce4d +.long 0xf1a14295,0xd7f4e83a,0xb285d4f9,0x916f955c,0x99ffdaba,0xe57bb0e0,0xeab0d152,0x28a43034,0xb8a9cef8,0x0a36ffa2,0xb9ec051a,0x5517407e,0xea68e672,0x9c796096,0xfb3c77fb,0x853db5fb +.long 0xe864a51a,0x21474ba9,0x6e8a1b8b,0x6c267699,0x94120a28,0x7c823626,0x8383a5db,0xe61e9a48,0x9f84216d,0x7dd75003,0xad43cd85,0xab020d07,0xda12c659,0x9437ae48,0xe65452ad,0x6449c2eb +.long 0x2cf9d7c1,0xcc7c4c1c,0xee95e5ab,0x1320886a,0xbeae170c,0xbb7b9056,0xdbc0d662,0xc8a5b250,0xc11d2303,0x4ed81432,0x1f03769f,0x7da66912,0x84539828,0x3ac7a5fd,0x3bccdd02,0x14dada94 +.long 0x7ef6b0d1,0x8b84c321,0x7c933f22,0x52a9477a,0xfd440b82,0x5ef6728a,0x6ce4bd5e,0x5c3bd859,0xf22c2d3e,0x918b80f5,0xb7bb6cc5,0x368d5040,0x2695a11c,0xb66142a1,0xeb19ea70,0x60ac583a +.long 0x0eab2437,0x317cbb98,0x5e2654c8,0x8cc08c55,0xe6d8307f,0xfe2d6520,0x57428993,0xe9f147f3,0xd2fd6cf1,0x5f9c7d14,0x2d4fcbb0,0xa3ecd064,0x8e7341f7,0xad83fef0,0x3a63115c,0x643f23a0 +.long 0xe65ab743,0xd38a78ab,0x35edc89c,0xbf7c75b1,0x530df568,0x3dd8752e,0xe308c682,0xf85c4a76,0xe68acf37,0x4c9955b2,0xab32af85,0xa544df3d,0xa25cf493,0x4b8ec3f5,0x1a622feb,0x4d8f2764 +.long 0xf0dcbc49,0x7bb4f7aa,0x70bbb45b,0x7de551f9,0x9f2ca2e5,0xcfd0f3e4,0x1f5c76ef,0xece58709,0x167d79ae,0x32920edd,0xfa7d7ec1,0x039df8a2,0xbb30af91,0xf46206c0,0x22676b59,0x1ff5e2f5 +.long 0x6ea51d66,0x11f4a039,0x807d7a26,0x506c1445,0x755a9b24,0x60da5705,0x1f1a319e,0x8fc8cc32,0x9433d67d,0x83642d4d,0x6a7dd296,0x7fa5cb8f,0x9b7bde07,0x576591db,0x419716fb,0x13173d25 +.long 0xd5b340ff,0xea30599d,0xb0fe76c5,0xfc6b5297,0xab8f5adc,0x1c6968c8,0x901c928d,0xf723c7f5,0x9773d402,0x4203c321,0x1b51dd47,0xdf7c6aa3,0x552be23c,0x3d49e37a,0x0b5a6e87,0x57febee8 +.long 0x7bd8e739,0xc5ecbee4,0xae63bf75,0x79d44994,0x38fb8923,0x168bd00f,0xd0533130,0x75d48ee4,0xdb5cdf33,0x554f77aa,0x3c696769,0x3396e896,0xd3fd674e,0x2fdddbf2,0x99d0e3e5,0xbbb8f6ee +.long 0xcbae2f70,0x51b90651,0x93aaa8eb,0xefc4bc05,0xdd1df499,0x8ecd8689,0x22f367a5,0x1aee99a8,0xae8274c5,0x95d485b9,0x7d30b39c,0x6c14d445,0xbcc1ef81,0xbafea90b,0xa459a2ed,0x7c5f317a +.long 0x4ef44227,0x01211075,0xdc20f496,0xa17bed6e,0x819853cd,0x0cdfe424,0xf71e2ce7,0x13793298,0xdbbe307b,0x3c1f3078,0x76ee9936,0x6dd1c20e,0x423caa20,0x23ee4b57,0x8efb840e,0x4ac3793b +.long 0xed1f8ca0,0x934438eb,0x4ebb25a2,0x3e546658,0xc069896f,0xc415af0e,0x9a5aa43d,0xc13eddb0,0xd49eb8f6,0x7a04204f,0xd74f1670,0xd0d5bdfc,0x56fc0558,0x3697e286,0x01cebade,0x10207371 +.long 0x0647a82b,0x5f87e690,0x8f40054f,0x908e0ed4,0x79853803,0xa9f633d4,0x4a28b252,0x8ed13c9a,0x1f460f64,0x3e2ef676,0x36d06336,0x53930b9b,0x8fc4979b,0x347073ac,0x5ecd5597,0x84380e0e +.long 0xc4fe3c39,0xe3b22c6b,0x6c7bebdf,0xba4a8153,0x25693459,0xf23ab6b7,0x14922b11,0x53bc3770,0x5afc60db,0x4645c8ab,0x20b9f2a3,0xaa022355,0xce0fc507,0x52a2954c,0x7ce1c2e7,0x8c2731bb +.long 0x18a0339d,0xf39608ab,0x3735436c,0xac7a658d,0xcd992b4f,0xb22c2b07,0xf40dcfd4,0x4e83daec,0x2f39ea3e,0x8a34c7be,0xb0a56d2e,0xef0c005f,0x6edd8038,0x62731f6a,0x4e3cb075,0x5721d740 +.long 0xfbeeee1b,0x1ea41511,0xef1d0c05,0xd1ef5e73,0x73c07d35,0x42feefd1,0x8a329493,0xe530a00a,0xf15ebfb0,0x5d55b7fe,0xd322491a,0x549de03c,0x745b3237,0xf7b5f602,0x1ab6e2b6,0x3632a3a2 +.long 0x0ef59f78,0x0d3bba89,0xc9e52b9a,0x0dfc6443,0x72631447,0x1dc79699,0xb3be20b1,0xef033917,0xb1383948,0x0c92735d,0xc0dd7d7d,0xc1fc29a2,0x403ed068,0x6485b697,0xaac93bdc,0x13bfaab3 +.long 0x0deeaf52,0x410dc6a9,0x4c641c15,0xb003fb02,0x5bc504c4,0x1384978c,0x864a6a77,0x37640487,0x222a77da,0x05991bc6,0x5e47eb11,0x62260a57,0xf21b432c,0xc7af6613,0xab4953e9,0x22f3acc9 +.long 0x8e41d155,0x52934922,0x3ac059ef,0x4d024568,0x4d884411,0xb0201755,0xa59a178f,0xce8055cf,0xf6204549,0xcd77d1af,0xc7066759,0xa0a00a3e,0x0272c229,0x471071ef,0xd3c4b6b0,0x009bcf6b +.long 0x22305177,0x2a2638a8,0x41645bbf,0xd51d59df,0xc0a7a3c0,0xa81142fd,0x4c7063ee,0xa17eca6d,0x60d9dcec,0x0bb887ed,0x20ad2455,0xd6d28e51,0xa67102ba,0xebed6308,0x8bffa408,0x042c3114 +.long 0x8aa68e30,0xfd099ac5,0x1483513e,0x7a6a3d7c,0xba2d8f0c,0xffcc6b75,0x1e78b954,0x54dacf96,0xa4a9af89,0xf645696f,0x06ac98ec,0x3a411940,0x22a67a20,0x41b8b3f6,0x99dec626,0x2d0b1e0f +.long 0x40be34e8,0x27c89192,0x91907f35,0xc7162b37,0xa956702b,0x90188ec1,0xdf93769c,0xca132f7d,0x0e2025b4,0x3ece44f9,0x0c62f14c,0x67aaec69,0x22e3cc11,0xad741418,0x7ff9a50e,0xcf9b75c3 +.long 0x4d348272,0x02fa2b16,0x9959d56d,0xbd99d61a,0x18762916,0xbc4f19db,0x49c1ac80,0xcc7cce50,0xd846bd83,0x4d59ebaa,0xa9202849,0x8775a9dc,0x6e1f4ca9,0x07ec4ae1,0xba893f11,0x27eb5875 +.long 0x662cc565,0x00284d51,0x0db4138d,0x82353a6b,0xaa32a594,0xd9c7aaaa,0xa5669c47,0xf5528b5e,0x2f23c5ff,0xf3220231,0x6affa3a1,0xe3e8147a,0x202ddda0,0xfb423d5c,0x6b871bd4,0x3d6414ac +.long 0xa51a168a,0x586f82e1,0x48ae5448,0xb712c671,0x76233eb8,0x9a2e4bd1,0x78811ca9,0x0188223a,0xf7c18de1,0x553c5e21,0xb27bb286,0x7682e451,0x0e51e929,0x3ed036b3,0xec9cb34f,0xf487211b +.long 0x0c24efc8,0x0d094277,0xbef737a4,0x0349fd04,0x514cdd28,0x6d1c9dd2,0x30da9521,0x29c135ff,0xf78b0b6f,0xea6e4508,0x678c143c,0x176f5dd2,0x4be21e65,0x08148418,0xe7df38c4,0x27f7525c +.long 0x748ab1a4,0x1fb70e09,0x5efe4433,0x9cba50a0,0x15f75af2,0x7846c7a6,0x5ee73ea8,0x2a7c2c57,0x3f0a449a,0x42e566a4,0xad90fc3d,0x45474c3b,0x8b61d057,0x7447be3d,0x3a4ec092,0x3e9d1cf1 +.long 0xf380a6e6,0x1603e453,0x9b1437c2,0x0b86e431,0xef29610a,0x7a4173f2,0xf03d57f7,0x8fa729a7,0x6c9c217e,0x3e186f6e,0x91919524,0xbe1d3079,0x153d4fb1,0x92a62a70,0xd68c2f71,0x32ed3e34 +.long 0x9eb1a8b7,0xd785027f,0xc5b22fe8,0xbc37eb77,0xb9d6a191,0x466b34f0,0x9a05f816,0x008a89af,0x7d42c10a,0x19b028fb,0x49b3f6b8,0x7fe8c92f,0xa5a0ade3,0x58907cc0,0x559d1a7c,0xb3154f51 +.long 0xd9790ed6,0x5066efb6,0xa6aa793b,0xa77a0cbc,0x223e042e,0x1a915f3c,0x69c5874b,0x1c5def04,0x73b6c1da,0x0e830078,0xfcd8557a,0x55cf85d2,0x0460f3b1,0x0f7c7c76,0x46e58063,0x87052acb +.long 0x907eae66,0x09212b80,0x4d721c89,0x3cb068e0,0xdd45ac1c,0xa87941ae,0x0daa0dbb,0xde8d5c0d,0xe3502e6e,0xda421fdc,0x4d89a084,0xc8944201,0xf0c24bfb,0x7307ba5e,0x20bde0ef,0xda212beb +.long 0xf82ce682,0xea2da24b,0x07f71fe4,0x058d3816,0x5ffad8de,0x35a02462,0xaadcefab,0xcd7b05dc,0x1d9f54ec,0xd442f8ed,0xb2d3b5ca,0x8be3d618,0xe06b2ce2,0xe2220ed0,0x1b0da4c0,0x82699a5f +.long 0x71c0c3a7,0x3ff106f5,0x0d34180c,0x8f580f5a,0x22d7d375,0x4ebb120e,0xe9513675,0x5e5782cc,0x99c82a70,0x2275580c,0x15ea8c4c,0xe8359fbf,0x7b415e70,0x53b48db8,0x100c6014,0xaacf2240 +.long 0xe4652f1d,0x9faaccf5,0xd56157b2,0xbd6fdd2a,0x6261ec50,0xa4f4fb1f,0x476bcd52,0x244e55ad,0x047d320b,0x881c9305,0x6181263f,0x1ca983d5,0x278fb8ee,0x354e9a44,0x396e4964,0xad2dbc0f +.long 0x9268b3de,0x723f3aa2,0xe6e0609a,0x0d1ca29a,0x6cf44252,0x794866aa,0x01af87ed,0x0b59f3e3,0x7f4a6c51,0xe234e5ff,0x61dc2f7e,0xa8768fd2,0x0a94d81f,0xdafc7332,0x06938ce1,0xd7f84282 +.long 0x0546063e,0xae0b3c0e,0x5d61abc6,0x7fbadcb2,0x369ac400,0xd5d7a2c9,0xae67d10c,0xa5978d09,0x4f85eaac,0x290f211e,0xfacac681,0xe61e2ad1,0x388384cd,0xae125225,0xccfde30f,0xa7fb68e9 +.long 0x3daed4c2,0x7a59b936,0x2606f789,0x80a9aa40,0xf6a6d90a,0xb40c1ea5,0x514d5885,0x948364d3,0x70985182,0x062ebc60,0x33310895,0xa6db5b0e,0xe329c2f5,0x64a12175,0x90ea237e,0xc5f25bd2 +.long 0x2d0a4c23,0x7915c524,0x6bb3cc52,0xeb5d26e4,0xc09e2c92,0x369a9116,0xcf182cf8,0x0c527f92,0x2aede0ac,0x9e591938,0x6cc34939,0xb2922208,0x99a34361,0x3c9d8962,0xc1905fe6,0x3c81836d +.long 0xa001ec5a,0x4bfeb57f,0xa0dc5dba,0xe993f5bb,0x724a1380,0x47884109,0x32fe9a04,0x8a0369ab,0x8c927db8,0xea068d60,0x94655741,0xbf5f37cf,0x04b6c7ea,0x47d402a2,0x6af259cb,0x4551c295 +.long 0xed77ee8b,0x698b71e7,0xf309d5c7,0xbddf7bd0,0x34e780ca,0x6201c22c,0x4c295ef4,0xab04f7d8,0x4313a8ce,0x1c947294,0x92ca4cfe,0xe532e4ac,0xd0a7a97a,0x89738f80,0xa580fd5b,0xec088c88 +.long 0x42ce9e51,0x612b1ecc,0xb25fdd2a,0x8f9840fd,0x01e7f839,0x3cda78c0,0xece05480,0x546b3d3a,0x80d30916,0x271719a9,0x584c20c4,0x45497107,0x5bc78608,0xaf8f9478,0x277e2a4c,0x28c7d484 +.long 0x88a2ffe4,0xfce01767,0x28e169a5,0xdc506a35,0x7af9c93a,0x0ea10861,0x03fa0e08,0x1ed24361,0xa3d694e7,0x96eaaa92,0xef50bc74,0xc0f43b4d,0x64114db4,0xce6aa58c,0x7c000fd4,0x8218e8ea +.long 0x185f8844,0xac815dfb,0x1557abfb,0xcd7e90cb,0xafbfecdf,0x23d16655,0x085cac4a,0x80f3271f,0xd0e62f47,0x7fc39aa7,0x460a48e5,0x88d519d1,0xd28f101e,0x59559ac4,0xca9ae816,0x7981d9e9 +.long 0x9ac38203,0x5c38652c,0x57657fe5,0x86eaf87f,0xe21f5416,0x568fc472,0xe7e597b5,0x2afff39c,0x256d4eab,0x3adbbb07,0x8285ab89,0x22598692,0x041caefe,0x35f8112a,0xa5064c8b,0x95df02e3 +.long 0xc7004bf3,0x4d63356e,0xdb83c7de,0x230a08f4,0x8709a7b7,0xca27b270,0xcb9abd2d,0x0d1c4cc4,0x7550fee8,0x8a0bc66e,0x9cf7247e,0x369cd4c7,0x92b5b7e7,0x75562e84,0x5802af7b,0x8fed0da0 +.long 0xe48fb889,0x6a7091c2,0x7b8a9d06,0x26882c13,0x1b82a0e2,0xa2498663,0x3518152d,0x844ed736,0xd86e27c7,0x282f476f,0x04afefdc,0xa04edaca,0x6119e34d,0x8b256ebc,0x0787d78b,0x56a413e9 +.long 0x5a74be50,0x82ee061d,0xdea16ff5,0xe41781c4,0x99bfc8a2,0xe0b0c81e,0x0b547e2d,0x624f4d69,0xbdcc9ae4,0x3a83545d,0x409b1e8e,0x2573dbb6,0xa6c93539,0x482960c4,0x5ae18798,0xf01059ad +.long 0x3112795f,0x715c9f97,0x984e6ee1,0xe8244437,0xecb66bcd,0x55cb4858,0xabaffbee,0x7c136735,0x5dbec38e,0x54661595,0x388ad153,0x51c0782c,0xc6e0952f,0x9ba4c53a,0x1b21dfa8,0x27e6782a +.long 0x4ed2dbc2,0x682f903d,0x7c3b2d83,0x0eba59c8,0x9c7e9335,0x8e9dc84d,0x0eb226d7,0x5f9b21b0,0xaf267bae,0xe33bd394,0xbe2e15ae,0xaa86cc25,0x6a8ec500,0x4f0bf67d,0xf9630658,0x5846aa44 +.long 0xe2c2bf15,0xfeb09740,0xa9e99704,0x627a2205,0xc2fbc565,0xec8d73d0,0xc20c8de8,0x223eed8f,0xa8363b49,0x1ee32583,0xc9c2b0a6,0x1a0b6cb9,0x90dbc85c,0x49f7c3d2,0x1ef4c1ac,0xa8dfbb97 +.long 0x65c7c2ab,0xafb34d4c,0xe2c5ea84,0x1d4610e7,0x973c4ab5,0x893f6d1b,0x945ba5c4,0xa3cdd7e9,0x064417ee,0x60514983,0xad6bdf2b,0x1459b23c,0x5cf726c3,0x23b2c341,0x32d6354a,0x3a829635 +.long 0xab192c18,0x294f901f,0x7030164f,0xec5fcbfe,0xe2246ba6,0xe2e2fcb7,0x221a1a0c,0x1e7c88b3,0xc92d88c5,0x72c7dd93,0x1106fb59,0x41c2148e,0xa0f60f14,0x547dd4f5,0x63960f31,0xed9b52b2 +.long 0xb0a5b358,0x6c8349eb,0x9e7e2ed6,0xb154c5c2,0xeda462db,0xcad5eccf,0x2de66b69,0xf2d6dbe4,0x8665e5b2,0x426aedf3,0x7b7f5723,0x488a8513,0x8bcbb386,0x15cc43b3,0xd791d879,0x27ad0af3 +.long 0x846e364f,0xc16c236e,0xdea50ca0,0x7f33527c,0x0926b86d,0xc4810775,0x0598e70c,0x6c2a3609,0xf024e924,0xa6755e52,0x9db4afca,0xe0fa07a4,0x66831790,0x15c3ce7d,0xa6cbb0d6,0x5b4ef350 +.long 0xb6205969,0x2c4aafc4,0xf6c7854f,0x42563f02,0x1d983b48,0x016aced5,0x99949755,0xfeb356d8,0xd1a39bd7,0x8c2a2c81,0xe6934ae9,0x8f44340f,0x447904da,0x148cf91c,0x0f51a926,0x7340185f +.long 0x7409ab46,0x2f8f00fb,0x80e289b2,0x057e78e6,0xa888e5d1,0x03e5022c,0x9dede4e2,0x3c87111a,0x7809460b,0x5b9b0e1c,0x71c9abc7,0xe751c852,0xc7cc1dc9,0x8b944e28,0x1d3cfa08,0x4f201ffa +.long 0x3e6721ce,0x02fc905c,0xd0b3674c,0xd52d70da,0x18810da4,0x5dc2e5ca,0x5c69dd99,0xa984b273,0x84de5ca4,0x63b92527,0xc852dec4,0x2f1c9872,0xc2e3de09,0x18b03593,0x9813dc2f,0x19d70b01 +.long 0xa6dc1d29,0x42806b2d,0xf871e144,0xd3030009,0xaaf49276,0xa1feb333,0xc70bc04b,0xb5583b9e,0x95695f20,0x1db0be78,0x89d012b5,0xfc841811,0x05f61643,0x6409f272,0xd5883128,0x40d34174 +.long 0x67419833,0xd79196f5,0x863b7b08,0x6059e252,0x1c56700c,0x84da1817,0xb28d3ec4,0x5758ee56,0x013b0ea6,0x7da2771d,0x54c5e9b9,0xfddf524b,0x24305d80,0x7df4faf8,0x3a97763f,0x58f5c1bf +.long 0x7c696042,0xa5af37f1,0x4a2538de,0xd4cba22c,0x9ea42600,0x211cb995,0x7b069889,0xcd105f41,0xddb81e74,0xb1e1cf19,0x5157b8ca,0x472f2d89,0xee9db885,0x086fb008,0x0f26d131,0x365cd570 +.long 0xa2be7053,0x284b02bb,0x7ab9a6d6,0xdcbbf7c6,0x20f7a530,0x4425559c,0x188767c8,0x961f2dfa,0x70dc80c4,0xe2fd9435,0xf0784120,0x104d6b63,0x53567122,0x7f592bc1,0xf688ad77,0xf6bc1246 +.long 0x0f15dde9,0x05214c05,0x0d5f2b82,0xa47a76a8,0x62e82b62,0xbb254d30,0x3ec955ee,0x11a05fe0,0x9d529b36,0x7eaff46e,0x8f9e3df6,0x55ab1301,0x99317698,0xc463e371,0xccda47ad,0xfd251438 +.long 0x23d695ea,0xca9c3547,0x16e589b5,0x48ce626e,0xb187d086,0x6b5b64c7,0xb2207948,0xd02e1794,0x7198111d,0x8b58e98f,0xdcf9c3cc,0x90ca6305,0xf34089b0,0x5691fe72,0xfc7c80ff,0x60941af1 +.long 0x22eb51e5,0xa09bc0a2,0xaa9cf09a,0xc0bb7244,0x80159f06,0x36a8077f,0xdddc560e,0x8b5c989e,0x512e1f43,0x19d2f316,0xad08ff62,0x02eac554,0x07d20b4e,0x012ab84c,0xd6d4e4e1,0x37d1e115 +.long 0xab7b19a8,0xb6443e1a,0xdef8cd45,0xf08d067e,0x685e03da,0x63adf3e9,0x4792b916,0xcf15a10e,0xb738a425,0xf44bcce5,0x9636b2fd,0xebe131d5,0x7850d605,0x94068841,0xb40d749d,0x09684eaa +.long 0x72ba075b,0x8c3c669c,0xba469015,0x89f78b55,0x3e9f8ba8,0x5706aade,0xb32d7ed7,0x6d8bd565,0x805f08d6,0x25f4e63b,0xc3bcc1b5,0x7f48200d,0xb025d847,0x4e801968,0x87cbe0a8,0x74afac04 +.long 0x7e63d690,0x43ed2c2b,0x0223cdb8,0xefb6bbf0,0x2884d3fe,0x4fec3cae,0xd75e25a4,0x065ecce6,0x69f79071,0x6c2294ce,0x044b8666,0x0d9a8e5f,0x17b69d8f,0x5009f238,0xc5dfdaf7,0x3c29f8fe +.long 0xebae68c4,0x9067528f,0x30c5ba21,0x5b385632,0x1fdd1aec,0x540df119,0xcfba4c78,0xcf37825b,0xbeb11454,0x77eff980,0x60c1b066,0x40a1a991,0xf889a1c7,0xe8018980,0x76c24be0,0xb9c52ae9 +.long 0x45650ef4,0x05fbbcce,0x8aa29ac7,0xae000f10,0x4f04c470,0x884b7172,0x19bb5c25,0x7cd4fde2,0xe8840869,0x6477b22a,0x5fbd0686,0xa8868859,0x1116dfba,0xf23cc02e,0xd87d7776,0x76cd563f +.long 0xa9d82abf,0xe2a37598,0xe6c170f5,0x5f188ccb,0x5066b087,0x81682200,0xc7155ada,0xda22c212,0xfbddb479,0x151e5d3a,0x6d715b99,0x4b606b84,0xf997cb2e,0x4a73b54b,0x3ecd8b66,0x9a1bfe43 +.long 0x2a67d48a,0x1c312809,0x031fa9e2,0xcd6a671e,0x0e43a34a,0xbec3312a,0x55ef47d3,0x1d935639,0x8fea73ea,0x5ea02489,0xa035afb2,0x8247b364,0x5265b54c,0xb58300a6,0x722c7148,0x3286662f +.long 0xb4ec4c20,0xb77fd76b,0x0f3fe3fd,0xf0a12fa7,0x41d8c7e8,0xf845bbf5,0x5ec10aa8,0xe4d969ca,0x43e232a3,0x4c0053b7,0x37f8a45a,0xdc7a3fac,0x20d81c8f,0x3c4261c5,0xb00eab00,0xfd4b3453 +.long 0xd36e3062,0x76d48f86,0xa143ff02,0x626c5277,0xaf76f42e,0x538174de,0x6407ceac,0x2267aa86,0x72e572d5,0xfad76351,0xba7330eb,0xab861af7,0x418d8657,0xa0a1c8c7,0x20289a52,0x988821cb +.long 0xcccc18ad,0x79732522,0xf1a6e027,0xaadf3f8d,0x17c2354d,0xf7382c93,0xd818b689,0x5ce1680c,0xd9ecbee9,0x359ebbfc,0x1cae62ac,0x4330689c,0xc51ac38a,0xb55ce5b4,0xfe238ee8,0x7921dfea +.long 0x271d1ca5,0x3972bef8,0xe8aabd18,0x3e423bc7,0x44a3e5e3,0x57b09f3f,0x7b444d66,0x5da886ae,0xa9964375,0x68206634,0x699cd0ff,0x356a2fa3,0xdba515e9,0xaf0faa24,0xb321d79a,0x536e1f5c +.long 0x5c04e4ea,0xd3b9913a,0xd6f11513,0xd549dcfe,0x79fd1d94,0xee227bf5,0xb43f2c67,0x9f35afee,0xf1314f53,0xd2638d24,0xcabcd822,0x62baf948,0x4ef48db0,0x5542de29,0xfc5f6bb2,0xb3eb6a04 +.long 0x1208e16a,0x23c110ae,0xf8363e24,0x1a4d15b5,0x164be00b,0x30716844,0xf6f4690d,0xa8e24824,0x90b170cf,0x548773a2,0x42f191f4,0xa1bef331,0x9247aa97,0x70f418d0,0x48be9147,0xea06028e +.long 0xdbfb894e,0xe13122f3,0xce274b18,0xbe9b79f6,0xca58aadf,0x85a49de5,0x11487351,0x24957758,0xbb939099,0x111def61,0x26d13694,0x1d6a974a,0xd3fc253b,0x4474b4ce,0x4c5db15e,0x3a1485e6 +.long 0x147c15b4,0xe79667b4,0x7bc61301,0xe34f553b,0x17094381,0x032b80f8,0x723eaa21,0x55d8bafd,0xf1c0e74e,0x5a987995,0xebba289c,0x5a9b292e,0xeb4c8251,0x413cd4b2,0xd162db0a,0x98b5d243 +.long 0x68342520,0xbb47bf66,0xbaa862d1,0x08d68949,0xe906abcd,0x11f349c7,0xed7bf00e,0x454ce985,0xb55b803b,0xacab5c9e,0x31e3c16d,0xb03468ea,0xd273bf12,0x5c24213d,0x71587887,0x211538eb +.long 0x731dea2d,0x198e4a2f,0x74ed7b2a,0xd5856cf2,0x13a664fe,0x86a632eb,0xbda41291,0x932cd909,0xc0c4ddc0,0x850e95d4,0x347fc2c9,0xc0f422f8,0x86076bcb,0xe68cbec4,0xcd6cd286,0xf9e7c0c0 +.long 0x0f5f27ca,0x65994ddb,0xa80d59ff,0xe85461fb,0x66601023,0xff05481a,0xfc9ebbfb,0xc665427a,0x7587fd52,0xb0571a69,0x8d49efce,0x935289f8,0xea420688,0x61becc60,0x13a786af,0xb22639d9 +.long 0x361ecf90,0x1a8e6220,0x25506463,0x001f23e0,0x0a5c2b79,0xe4ae9b5d,0xd8149db5,0xebc9cdad,0x934aa728,0xb33164a1,0xae9b60f3,0x750eb00e,0x9b9cfbfd,0x5a91615b,0xef45f7f6,0x97015cbf +.long 0xbf5151df,0xb462c4a5,0xb07118f2,0x21adcc41,0x043fa42c,0xd60c545b,0xe96be1ab,0xfc21aa54,0x4e51ea80,0xe84bc32f,0x259b5d8d,0x3dae45f0,0xc38f1b5e,0xbb73c7eb,0xe8ae617d,0xe405a74a +.long 0x9f1c56bd,0xbb1ae9c6,0x49f196a4,0x8c176b98,0x6875092b,0xc448f311,0x9f976033,0xb5afe3de,0x145813e5,0xa8dafd49,0xe2b34226,0x687fc4d9,0x4c7ff57f,0xf2dfc92d,0x401f1b46,0x004e3fc1 +.long 0x1430c9ab,0x5afddab6,0x2238e997,0x0bdd41d3,0x418042ae,0xf0947430,0xcdddc4cb,0x71f9adda,0xc52dd907,0x7090c016,0x29e2047f,0xd9bdf44d,0x1b1011a6,0xe6f1fe80,0xd9acdc78,0xb63accbc +.long 0x1272a95b,0xcfc7e235,0xa6276ac8,0x0c667717,0xe2d7eef7,0x3c0d3709,0x9a685b3e,0x5add2b06,0x14ea5d65,0x363ad32d,0x8d7dd506,0xf8e01f06,0x75b4aac6,0xc9ea2213,0x0d353466,0xed2a2bf9 +.long 0xe9d3a7c3,0x439d79b5,0x81b7f34b,0x8e0ee5a6,0x1dc4ba75,0xcf3dacf5,0xeb3310c7,0x1d3d1773,0x7747ae83,0xa8e67112,0x197d6b40,0x31f43160,0xcd961400,0x0521ccee,0xf6535768,0x67246f11 +.long 0xef0c3133,0x702fcc5a,0x7e16693b,0x247cc45d,0xc729b749,0xfd484e49,0xb218320f,0x522cef7d,0x59ab93b3,0xe56ef405,0x9f181071,0x225fba11,0x15330ed0,0x33bd6595,0x1ddb32f7,0xc4be69d5 +.long 0x0448087c,0x264c7668,0x71432dae,0xac30903f,0x00f9bf47,0x3851b266,0x6cdd6d03,0x400ed311,0xf8fd2424,0x045e79fe,0xfa6da98b,0xfdfd974a,0x0c1e673a,0x45c9f641,0x5b2c5168,0x76f2e733 +.long 0x2a601753,0x1adaebb5,0xc57c2d49,0xb286514c,0x1e0bfd24,0xd8769670,0x04478922,0x950c547e,0xe5d32bfe,0xd1d41969,0x750d6c3e,0x30bc1472,0xe0e27f3a,0x8f3679fe,0xa4a6ee0c,0x8f64a7dc +.long 0x633dfb1f,0x2fe59937,0x977f2547,0xea82c395,0x661ea646,0xcbdfdf1a,0xb9085451,0xc7ccc591,0x81761e13,0x82177962,0x9196885c,0xda57596f,0x28ffbd70,0xbc17e849,0x2671d36f,0x1e6e0a41 +.long 0x4152fcf5,0x61ae872c,0x9e77e754,0x441c87b0,0xa34dff09,0xd0799dd5,0x88a6b171,0x766b4e44,0x11f1c792,0xdc06a512,0x4be35c3e,0xea02ae93,0xe90c469e,0xe5ca4d6d,0x56e4ff5c,0x4df4368e +.long 0x4baef62e,0x7817acab,0xa85b91e8,0x9f5a2202,0x6ce57610,0x9666ebe6,0xf73bfe03,0x32ad31f3,0x25bcf4d6,0x628330a4,0x515056e6,0xea950593,0xe1332156,0x59811c89,0x8c11b2d7,0xc89cf1fe +.long 0x04e60cc0,0x75b63913,0x4625d375,0xce811e8d,0x2d26e562,0x030e43fc,0x608d36a0,0xfbb30b4b,0x48528118,0x634ff82c,0xcd285911,0x7c6fe085,0x99358f28,0x7f2830c0,0x665e6c09,0x2e60a95e +.long 0x9b785dbf,0x08407d3d,0xa759bce7,0x530889ab,0x52f61239,0xf228e0e6,0x6879be3c,0x2b6d1461,0x51a7bbf7,0xe6902c04,0x76f24a64,0x30ad99f0,0x98bc6da0,0x66d9317a,0xcb596ac0,0xf4f877f3 +.long 0x4c44f119,0xb05ff62d,0xe9b77416,0x4555f536,0x8caed63b,0xc7c0d059,0xc358b2a9,0x0cd2b7ce,0x46945fa3,0x3f33287b,0xd67c8791,0xf8785b20,0x9637bd08,0xc54a7a61,0x18be79d7,0x54d4598c +.long 0xc46d7ce1,0x889e5acb,0x8b085877,0x9a515bb7,0x0b7a5050,0xfac1a03d,0xf2926035,0x7d3e738a,0x2a6cb0eb,0x861cc2ce,0x8f7adc79,0x6f2e2955,0x33016376,0x61c4d451,0x5ad59090,0xd9fd2c80 +.long 0xb2b836a1,0xe5a83738,0x7c0d6622,0x855b41a0,0x7cc19af1,0x186fe317,0xfdd99acb,0x6465c1ff,0x6974b99e,0x46e5c23f,0xa2717cbe,0x75a7cf8b,0x062be658,0x4d2ebc3f,0x5f209c98,0x094b4447 +.long 0xb940cb5a,0x4af285ed,0x7cc82f10,0x6706d792,0x030526fa,0xc8c8776c,0xa0da9140,0xfa8e6f76,0x591ee4f0,0x77ea9d34,0x40274166,0x5f46e337,0xea671457,0x1bdf98bb,0x862a1fe2,0xd7c08b46 +.long 0x1c08ad63,0x46cc303c,0x4c845e7b,0x99543440,0x48f36bf7,0x1b8fbdb5,0x8c8273a7,0x5b82c392,0x928435d5,0x08f712c4,0x79330380,0x071cf0f1,0xa8da054a,0xc74c2d24,0x43c46b5c,0xcb0e7201 +.long 0xc0b7eff3,0x0ad7337a,0xc5e48b3c,0x8552225e,0x73f13a5f,0xe6f78b0c,0x82349cbe,0x5e70062e,0xe7073969,0x6b8d5048,0xc33cb3d2,0x392d2a29,0x4ecaa20f,0xee4f727c,0x2ccde707,0xa068c99e +.long 0xb87a2913,0xfcd5651f,0x3cc252f0,0xea3e3c15,0x3b6cd3e4,0x777d92df,0xc5a732e7,0x7a414143,0xa71ff493,0xa895951a,0xbbd37cf6,0xfe980c92,0xdecfeeff,0x45bd5e64,0xa44c43e9,0x910dc2a9 +.long 0xcca9f54d,0xcb403f26,0x9303f6db,0x928bbdfb,0xa9eee67c,0x3c37951e,0xf79961c3,0x3bd61a52,0x395c9a79,0x09a238e6,0x61eb352d,0x6940ca2d,0xc1875631,0x7d1e5c5e,0x1e1b20d1,0x1e19742c +.long 0x23fc2e6e,0x4633d908,0x08959149,0xa76e29a9,0x84ed7da5,0x61069d9c,0x5dbcad51,0x0baa11cf,0x961849da,0xd01eec64,0xaf3d8c28,0x93b75f1f,0x1ca2ee44,0x57bc4f9f,0x00e00558,0x5a26322d +.long 0x61a023ef,0x1888d658,0xb9e5246e,0x1d72aab4,0xe5563ec0,0xa9a26348,0xc3439a43,0xa0971963,0xadb9b5b7,0x567dd54b,0xc45a524b,0x73fac1a1,0xfe38e608,0x8fe97ef7,0x3f384f48,0x608748d2 +.long 0xc486094f,0xb0571794,0x8bf3a8d6,0x869254a3,0x310b0e25,0x148a8dd1,0x9aa3f7d8,0x99ab9f3f,0x6706c02e,0x0927c68a,0x69790e6c,0x22b5e76c,0x6c71376c,0x6c325260,0x09ef6657,0x53a57690 +.long 0xedffcf3a,0x8d63f852,0x3c0a6f55,0xb4d2ed04,0x12519b9e,0xdb3aa8de,0x1e0a569a,0x5d38e9c4,0x303747e2,0x871528bf,0xf5b5c18d,0xa208e77c,0xca6bf923,0x9d129c88,0xbf02839f,0xbcbf197f +.long 0x27323194,0x9b9bf030,0x339ca59d,0x3b055a8b,0x0f669520,0xb46b2312,0x497e5f24,0x19789f1f,0xaaf01801,0x9c499468,0x8b69d59c,0x72ee1190,0xacf4c079,0x8bd39595,0x8e0cd048,0x3ee11ece +.long 0x1ed66f18,0xebde86ec,0xd61fce43,0x225d906b,0xe8bed74d,0x5cab07d6,0x27855ab7,0x16e4617f,0xb2fbc3dd,0x6568aadd,0x8aeddf5b,0xedb5484f,0x6dcf2fad,0x878f20e8,0x615f5699,0x3516497c +.long 0xfa181e69,0xef0a3fec,0x30d69a98,0x9ea02f81,0x66eab95d,0xb2e9cf8e,0x24720021,0x520f2beb,0x1df84361,0x621c540a,0x71fa6d5d,0x12037721,0x0ff5f6ff,0x6e3c7b51,0xabb2bef3,0x817a069b +.long 0xb294cda6,0x83572fb6,0xb9039f34,0x6ce9bf75,0x095cbb21,0x20e012f0,0xd063f0da,0xa0aecc1b,0xf02909e5,0x57c21c3a,0x48ce9cdc,0xc7d59ecf,0x8ae336f8,0x2732b844,0x3f4f85f4,0x056e3723 +.long 0x89e800ca,0x8a10b531,0x145208fd,0x50fe0c17,0xb714ba37,0x9e43c0d3,0x34189acc,0x427d200e,0xe616e2c0,0x05dee24f,0xee1854c1,0x9c25f4c8,0x8f342a73,0x4d3222a5,0xa027c952,0x0807804f +.long 0x4f0d56f3,0xc222653a,0xca28b805,0x961e4047,0x4a73434b,0x2c03f8b0,0xab712a19,0x4c966787,0x864fee42,0xcc196c42,0x5b0ece5c,0xc1be93da,0xc131c159,0xa87d9f22,0xdce45655,0x2bb6d593 +.long 0xb809b7ce,0x22c49ec9,0xe2c72c2c,0x8a41486b,0xfea0bf36,0x813b9420,0xa66dac69,0xb3d36ee9,0x328cc987,0x6fddc08a,0x3a326461,0x0a3bcd2c,0xd810dbba,0x7103c49d,0x4b78a4c4,0xf9d81a28 +.long 0xe4d55941,0x3de865ad,0x30384087,0xdedafa5e,0x4ef18b9b,0x6f414abb,0xfaee5268,0x9ee9ea42,0x37a55a4a,0x260faa16,0x015f93b9,0xeb19a514,0x9e9c3598,0x51d7ebd2,0x1932178e,0x523fc56d +.long 0xb98fe684,0x501d070c,0x124a1458,0xd60fbe9a,0x92bc6b3f,0xa45761c8,0xfe6f27cb,0xf5384858,0xb59e763b,0x4b0271f7,0x5b5a8e5e,0x3d4606a9,0x05a48292,0x1eda5d9b,0xe6fec446,0xda7731d0 +.long 0x90d45871,0xa3e33693,0x06166d8d,0xe9764040,0x89a90403,0xb5c33682,0x72f1d637,0x4bd17983,0xd5d2c53a,0xa616679e,0xfdcf3b87,0x5ec4bcd8,0xb66a694e,0xae6d7613,0xe3fc27e5,0x7460fc76 +.long 0x95caabee,0x70469b82,0x889501e3,0xde024ca5,0x076ed265,0x6bdadc06,0x5a0ef8b2,0x0cb1236b,0x0972ebf9,0x4065ddbf,0x22aca432,0xf1dd3875,0x744aff76,0xa88b97cf,0xfe8e3d24,0xd1359afd +.long 0x91502cf3,0x52a3ba2b,0x084db75d,0x2c3832a8,0xde30b1c9,0x04a12ddd,0xe31fd60c,0x7802eabc,0xa37fddab,0x33707327,0xfaafa973,0x65d6f2ab,0x11e6f91a,0x3525c5b8,0x5f46530b,0x76aeb0c9 +.long 0x2f93a675,0xe8815ff6,0x05f48679,0xa6ec9684,0x358ae884,0x6dcbb556,0xe19e3873,0x0af61472,0xa5f696be,0x72334372,0x6f22fb70,0xc65e57ea,0x946cea90,0x268da30c,0x65681b2a,0x136a8a87 +.long 0x0f9f44d4,0xad5e81dc,0x2c46585a,0xf09a6960,0xc447d1b1,0xd1649164,0x879dc8b1,0x3b4b36c8,0x3b6b234c,0x20d4177b,0x1730d9d0,0x096a2505,0xef80531d,0x0611b9b8,0x64bb495d,0xba904b3b +.long 0x93a3147a,0x1192d9d4,0x9a565545,0x9f30a5dc,0x6ef07212,0x90b1f9cb,0x0d87fc13,0x29958546,0xc17db9ba,0xd3323eff,0xcb1644a8,0xcb18548c,0x4f49ffbc,0x18a306d4,0x4c2e8684,0x28d658f1 +.long 0xa99f8c71,0x44ba60cd,0x4bf742ff,0x67b7abdb,0x914b3f99,0x66310f9c,0xf412c161,0xae430a32,0x88ace52f,0x1e6776d3,0x52d7067d,0x4bc0fa24,0x8f07cd1b,0x03c286aa,0xa985b2c1,0x4cb8f38c +.long 0x8c3bff36,0x83ccbe80,0x5263e575,0x005a0bd2,0x259bdcd1,0x460d7dda,0xfa5cab6b,0x4a1c5642,0x9fe4fc88,0x2b7bdbb9,0xcc97bbb5,0x09418e28,0xa12321ae,0xd8274fb4,0x5c87b64e,0xb137007d +.long 0xc63c4962,0x80531fe1,0x981fdb25,0x50541e89,0xfd4c2b6b,0xdc1291a1,0xa6df4fca,0xc0693a17,0x0117f203,0xb2c4604e,0x0a99b8d0,0x245f1963,0xc6212c44,0xaedc20aa,0x520f52a8,0xb1ed4e56 +.long 0xf8547be3,0xfe48f575,0xa9e45f98,0x0a7033cd,0x18c50100,0x4b45d3a9,0xa61d41da,0xb2a6cd6a,0x57933c6b,0x60bbb4f5,0x2b0d7ffc,0xa7538ebd,0x8cd626b6,0x9ea3ab8d,0x3601625a,0x8273a484 +.long 0x0168e508,0x88859845,0x99a94abd,0x8cbc9bb2,0xfab0a671,0x713ac792,0x6c9ebffc,0xa3995b19,0x1239e152,0xe711668e,0xbbb8dff4,0x56892558,0xdbf17963,0x8bfc7dab,0xb3de1253,0x5b59fe5a +.long 0x34a9f7ae,0x7e3320eb,0xd751efe4,0xe5e8cf72,0xd9be2f37,0x7ea003bc,0xb6c08ef7,0xc0f551a0,0x038f6725,0x56606268,0x6d92d3b6,0x1dd38e35,0xc3cbd686,0x07dfce7c,0x651c5da8,0x4e549e04 +.long 0x08b19340,0x4058f93b,0xcac6d89d,0xc2fae6f4,0x8f159cc7,0x4bad8a8c,0xcb0b601c,0x0ddba4b3,0x1dd95f8c,0xda4fc7b5,0xcea5c255,0x1d163cd7,0x274a8c4c,0x30707d06,0x2802e9ce,0x79d9e008 +.long 0xe6ddd505,0x02a29ebf,0xb50bed1a,0x37064e74,0xa7327d57,0x3f6bae65,0xf83920bc,0x3846f5f1,0x60df1b9b,0x87c37491,0x2d1da29f,0x4cfb2895,0x4ed1743c,0x10a478ca,0x3edd47c6,0x390c6030 +.long 0x8c0a78de,0x8f3e5312,0x1e85df70,0xccd02bda,0xa61b6582,0xd6c75c03,0xfc0eebd1,0x0762921c,0xd85010c0,0xd34d0823,0x0044cf1f,0xd73aaacb,0xa3b5e78a,0xfb4159bb,0xe5826f3f,0x2287c7f7 +.long 0x580b1a01,0x4aeaf742,0x60423b79,0xf080415d,0xa7dea144,0xe12622cd,0x59d62472,0x49ea4996,0x571f3913,0xb42991ef,0xf5b25a8a,0x0610f214,0x30b79e8f,0x47adc585,0x07a065a2,0xf90e3df6 +.long 0x43e2e034,0x5d0a5deb,0x444024aa,0x53fb5a34,0x6b0c9f7f,0xa8628c68,0xac563656,0x9c69c29c,0xbace47b6,0x5a231feb,0x9ea5a2ec,0xbdce0289,0x9463853e,0x05da1fac,0x509e78aa,0x96812c52 +.long 0x57151692,0xd3fb5771,0xd98e1c44,0xeb2721f8,0x32399be1,0xc0506087,0xd979d8b8,0xda5a5511,0xc6f56780,0x737ed55d,0x0dc7a7f4,0xe20d3004,0xf5941a03,0x02ce7301,0xed30f83a,0x91ef5215 +.long 0x4092d85f,0x28727fc1,0x5c49e41a,0x72d223c6,0xba6a4d81,0xa7cf30a2,0xb030d87d,0x7c086209,0xfc588b09,0x04844c7d,0x5874bbb0,0x728cd499,0xe84c0495,0xcc1281ee,0xec31958f,0x0769b5ba +.long 0xf99c2471,0x665c228b,0x191eb110,0xf2d8a11b,0xd36d7024,0x4594f494,0xcdcb25a1,0x482ded8b,0xdadd4885,0xc958a9d8,0xf1d2b547,0x7004477e,0x2a0af550,0x0a45f6ef,0x2f8d6351,0x4fc739d6 +.long 0x786f08a9,0x75cdaf27,0x42c2737f,0x8700bb26,0x1c4e2670,0x855a7141,0x15076fef,0x810188c1,0xabcd3297,0xc251d0c9,0xf48108eb,0xae4c8967,0x18ceed30,0xbd146de7,0xc986bced,0xf9d4f07a +.long 0x83fa1e08,0x5ad98ed5,0xbeabd1fb,0x7780d33e,0x903b1196,0xe330513c,0xa47bc8c4,0xba11de9e,0x02c2d064,0x684334da,0xa48de23b,0x7ecf360d,0x0a9089d8,0x57a1b474,0xff36734c,0xf28fa439 +.long 0xea4570b3,0xf2a482cb,0xa5ebcee9,0xee65d68b,0xb9694cd5,0x988d0036,0x37885d32,0x53edd0e9,0xbeb9bc6d,0xe37e3307,0x9f5c6768,0xe9abb907,0x51f2160f,0x4396ccd5,0x47336da6,0x2500888c +.long 0x926fce43,0x383f9ed9,0x04da2930,0x809dd1c7,0x8a4cb227,0x30f6f596,0x73a56b38,0x0d700c7f,0xab64a065,0x1825ea33,0x1338df80,0xaab9b735,0x9b63f57f,0x1516100d,0x27a6a634,0x2574395a +.long 0x700a1acd,0xb5560fb6,0xfd999681,0xe823fd73,0x6cb4e1ba,0xda915d1f,0x6ebe00a3,0x0d030118,0x89fca8cd,0x744fb0c9,0xf9da0e0b,0x970d01db,0x7931d76f,0x0ad8c564,0xf659b96a,0xb15737bf +.long 0xa8b484e7,0xdc9933e8,0x7a26dec7,0xb2fdbdf9,0x9f1f0136,0x2349e9a4,0x70fddddb,0x7860368e,0xf9ad3e18,0xd93d2c1c,0x689f4e79,0x6d6c5f17,0xb24ff1b6,0x7a544d91,0xfe16cd8c,0x3e12a5eb +.long 0xa56b872f,0x543574e9,0xfcf68ea2,0xa1ad550c,0x3f560ef7,0x689e37d2,0xc9d47a8b,0x8c54b9ca,0x088ac342,0x46d40a4a,0x1576c6d0,0xec450c7c,0x1f9689e9,0xb589e31c,0xb8781718,0xdacf2602 +.long 0xc8cb6b42,0xa89237c6,0xb96ef381,0x1326fc93,0xb5f07825,0x55d56c6d,0x7449e22d,0xacba2eea,0x633c3000,0x74e0887a,0xd7cbcf71,0xcb6cd172,0xc36cf1be,0x309e81de,0x60ae399b,0x07a18a6d +.long 0x9edce57e,0xb36c2679,0xdf001d41,0x52b892f4,0x16a1f2c6,0xd884ae5d,0xefcc370a,0x9b329424,0xbd2e21df,0x3120daf2,0x02470a99,0x55298d2d,0xa05db32e,0x0b78af6c,0x601f5636,0x5c76a331 +.long 0xf8a4f29c,0xaae861ff,0xd68f8d49,0x70dc9240,0x81b1321c,0x960e649f,0x8792e4ce,0x3d2c801b,0x42521876,0xf479f772,0x416c79b1,0x0bed93bc,0x263e5bc9,0xa67fbc05,0x521db049,0x01e8e630 +.long 0xc6f3431e,0x76f26738,0xe3267541,0xe609cb02,0x818c877c,0xb10cff2d,0x786a13cb,0x1f0e75ce,0x1158544d,0xf4fdca64,0x6cb71ed0,0x5d777e89,0xa9aa4755,0x3c233737,0xe527ab40,0x7b453192 +.long 0x39f05ffe,0xdb59f688,0x6d82574e,0x8f4f4be0,0xee292d1b,0xcce3450c,0x61ccd086,0xaa448a12,0xf7914967,0xabce91b3,0x1908a5ed,0x4537f09b,0xf51042e7,0xa812421e,0xec0b3a34,0xfaf5cebc +.long 0x4ca6b39a,0x730ffd87,0x02efd342,0x70fb72ed,0xd75c8edb,0xeb4735f9,0xc278aa51,0xc11f2157,0xbf3bfebf,0xc459f635,0x6bd9601f,0x3a1ff0b4,0xc420cb73,0xc9d12823,0x3c2915a3,0x3e9af3e2 +.long 0xb41c3440,0xe0c82c72,0xe3039a5f,0x175239e5,0x558795a3,0xe1084b8a,0xd01e5c60,0x328d0a1d,0xd3788a04,0x0a495f2e,0x66c11a9f,0x25d8ff16,0x9ed692d6,0xf5155f05,0x4f425fe4,0x954fa107 +.long 0xe98aaa99,0xd16aabf2,0x96b0f88a,0x90cd8ba0,0xc154026a,0x957f4782,0x52af56d2,0x54ee0734,0x45b4147a,0xbcf89e54,0x9a52816c,0x3d102f21,0x39b62e77,0x6808517e,0x69169ad8,0x92e25421 +.long 0xbb608558,0xd721d871,0xf6d4ff9b,0x60e4ebae,0x41f2763e,0x0ba10819,0x51ee3247,0xca2e45be,0x2bfd7a5f,0x66d172ec,0x74d0b12d,0x528a8f2f,0xdabe70dc,0xe17f1e38,0x9f93983c,0x1d5d7316 +.long 0xdf423e31,0x51b2184a,0xaedb1a10,0xcb417291,0x625bcab9,0x2054ca93,0xa98998f0,0x54396860,0xa54ae57e,0x4e53f6c4,0xee648e9d,0x0ffeb590,0x6afaf6bc,0xfbbdaadc,0xaa3bfb8a,0xf88ae796 +.long 0xd2359ed9,0x209f1d44,0xf3544ce2,0xac68dd03,0xfd51e569,0xf378da47,0x2cc80097,0xe1abd860,0x343b6e3a,0x23ca18d9,0xb40a1bae,0x480797e8,0x533f3e67,0xd1f0c717,0x06e6cdfc,0x44896970 +.long 0x52a82e8d,0x8ca21055,0x78460cdc,0xb2caf785,0xe9037178,0x4c1b7b62,0xdb514b58,0xefc09d2c,0x9113be5c,0x5f2df9ee,0xb3f9271c,0x2fbda78f,0x8f83fc54,0xe09a81af,0x8afb5141,0x06b13866 +.long 0x43e3865d,0x38f6480f,0x1ddf47d9,0x72dd77a8,0x4c205ff7,0xf2a8e971,0x9d088ad8,0x46d449d8,0x185d706f,0x926619ea,0xc7dd7f62,0xe47e02eb,0x8cbc2031,0xe7f120a7,0x998d4ac9,0xc18bef00 +.long 0x6bdf22da,0x18f37a9c,0x90dc82df,0xefbc432f,0x5d703651,0xc52cef8e,0xd99881a5,0x82887ba0,0xb920ec1d,0x7cec9dda,0xec3e8d3b,0xd0d7e8c3,0x4ca88747,0x445bc395,0x9fd53535,0xedeaa2e0 +.long 0x6cc87475,0x461b1d93,0x6d2383bd,0xd92a52e2,0xd7903546,0xfabccb59,0x3d14b112,0x6111a761,0xb3d5f612,0x0ae584fe,0x60e828ec,0x5ea69b8d,0x54087030,0x6c078985,0xac4821fe,0x649cab04 +.long 0x8bdce214,0x25ecedcf,0x86af7361,0xb5622f72,0x7038b9e2,0x0e1227aa,0xac20fa77,0xd0efb273,0x79df975b,0x817ff88b,0x1999503e,0x856bf286,0x5038ec46,0xb4d5351f,0xfc42af6e,0x740a52c5 +.long 0x2cbb1a3f,0x2e38bb15,0x17a83429,0xc3eb99fe,0xdd66bb74,0xca4fcbf1,0xcde5e8fc,0x880784d6,0xb4e7a0be,0xddc84c1c,0xbd15a72f,0x8780510d,0x81ec30e1,0x44bcf1af,0x0a61073e,0x141e50a8 +.long 0x47be87ae,0x0d955718,0xf76a4372,0x68a61417,0xc607c3d3,0xf57e7e87,0x5252f332,0x043afaf8,0x1552a4d2,0xcc14e121,0xbb4d4ab4,0xb6dee692,0xa03816a4,0xb6ab74c8,0x6f394a29,0x84001ae4 +.long 0xd795fb45,0x5bed8344,0xb79f55a5,0x57326e7d,0x4accdffc,0xc9533ce0,0x3993fa04,0x53473caf,0xa13df4c8,0x7906eb93,0x97cbe46f,0xa73e51f6,0x0ae4ccf8,0xd1ab3ae1,0x8a5b3dbc,0x25614508 +.long 0x11a71b27,0x61eff962,0x6bb7fa39,0xdf71412b,0x2bd7f3ef,0xb31ba6b8,0x69180d29,0xb0b9c415,0x014cdde5,0xeec14552,0x227b4bbb,0x702c624b,0xd3e988f3,0x2b15e8c2,0xa4f7fd04,0xee3bcc6d +.long 0x42ac6c85,0x9d00822a,0x1df9f2b7,0x2db0cea6,0x42de1e58,0xd7cad2ab,0x2d6fbb61,0x346ed526,0x1a2faf09,0xb3962995,0x7c25612e,0x2fa8a580,0x7cf56490,0x30ae04da,0x0eea3961,0x75662908 +.long 0x3d080847,0x3609f5c5,0x5241d4f6,0xcb081d39,0x77961a63,0xb4fb3810,0x2abb66fc,0xc20c5984,0xf902f245,0x3d40aa7c,0x4e536b1e,0x9cb12736,0x99b3134f,0x5eda24da,0x5cd011af,0xafbd9c69 +.long 0xc7088c7d,0x9a16e30a,0x3207389f,0x5ab65710,0xe7407a53,0x1b09547f,0x4fdc6eab,0x2322f9d7,0x7430de4d,0xc0f2f22d,0xe68ca9a9,0x19382696,0x918e5868,0x17f1eff1,0x586f4204,0xe3b5b635 +.long 0x3fbc4341,0x146ef980,0x5b5eed4e,0x359f2c80,0x7482e41d,0x9f35744e,0xf3b224c2,0x9a9ac3ec,0x91fc50ae,0x9161a6fe,0xc613fa7c,0x89ccc66b,0xc732f15a,0x89268b14,0xb467ed03,0x7cd6f4e2 +.long 0xce56b40e,0xfbf79869,0xc02dde98,0xf93e094c,0xedee2cd7,0xefe0c3a8,0xb268fd42,0x90f3ffc0,0x08241aed,0x81a7fd56,0x00b1afe8,0x95ab7ad8,0x3e310d52,0x40127056,0x09d9fc43,0xd3ffdeb1 +.long 0xd11a8594,0xc8f85c91,0x31cf6db8,0x2e74d258,0x02b5dfd0,0x829c7ca3,0x69143c86,0xe389cfbe,0x941768d8,0xd01b6405,0x03bf825d,0x45103995,0x56cd17e2,0xcc4ee166,0xba037e79,0xbea3c283 +.long 0xd9a47520,0x4e1ac06e,0xaf852404,0xfbfe18aa,0x8087648a,0x5615f8e2,0xb9d150d9,0x7301e47e,0xb299b977,0x79f9f9dd,0xa5b78314,0x76697a7b,0x7d7c90e7,0x10d67468,0x937210b5,0x7afffe03 +.long 0x28c22cee,0x5aef3e4b,0x09fd55ae,0xefb0ecd8,0x0d2a5d6a,0x4cea7132,0x01db6357,0x9cfb5fa1,0xf36e1ac5,0x395e0b57,0x36cafb7d,0x008fa9ad,0x5308c4db,0x8f6cdf70,0x95ed2477,0x51527a37 +.long 0x5bd21311,0xba0dee30,0x909c90d7,0x6ed41b22,0x7c8696d3,0xc5f6b758,0x3ce83a80,0x0db8eaa8,0xb24b4b6f,0xd297fe37,0x522d1f0d,0xfe58afe8,0x8c98dbd9,0x97358736,0x9454a527,0x6bc226ca +.long 0xce53c2d0,0xa12b384e,0x5e4606da,0x779d897d,0x73ec12b0,0xa53e47b0,0x5756f1ad,0x462dbbba,0xcafe37b6,0x69fe09f2,0xecce2e17,0x273d1ebf,0x3cf607fd,0x8ac1d538,0x12e10c25,0x8035f7ff +.long 0x7e6c5520,0x854d34c7,0xdcb9ea58,0xc27df9ef,0xd686666d,0x405f2369,0x0417aa85,0x29d1febf,0x93470afe,0x9846819e,0xe2a27f9e,0x3e6a9669,0xe31e6504,0x24d008a2,0x9cb7680a,0xdba7cecf +.long 0x338d6e43,0xecaff541,0x4541d5cc,0x56f7dd73,0x96bc88ca,0xb5d426de,0x9ed3a2c3,0x48d94f6b,0x2ef8279c,0x6354a3bb,0x0b1867f2,0xd575465b,0x95225151,0xef99b0ff,0xf94500d8,0xf3e19d88 +.long 0xe32dd620,0x92a83268,0x627849a2,0x913ec99f,0x2c378882,0xedd8fdfa,0xee6f8cfe,0xaf96f33e,0xdc3fa8a5,0xc06737e5,0xb0b03a1d,0x236bb531,0x89f037b0,0x33e59f29,0xd9a12a53,0x13f9b5a7 +.long 0x51efb310,0x0d0df6ce,0x958df5be,0xcb5b2eb4,0x36158e59,0xd6459e29,0x1466e336,0x82aae2b9,0x411aa636,0xfb658a39,0xd4c0a933,0x7152ecc5,0x49f026b7,0xf10c758a,0xcb09311f,0xf4837f97 +.long 0xc753c45f,0xddfb02c4,0xf9c840fe,0x18ca81b6,0xb0f8a3e6,0x846fd09a,0xe7733dbc,0xb1162add,0x236e3ab6,0x7070ad20,0xb2a56326,0xf88cdaf5,0x997cbc7a,0x05fc8719,0x4b665272,0x442cd452 +.long 0xb71698f5,0x7807f364,0x9f7b605e,0x6ba418d2,0xa03b2cbb,0xfd20b00f,0xda54386f,0x883eca37,0xf3437f24,0xff0be43f,0xa48bb33c,0xe910b432,0x329df765,0x4963a128,0xbe2fe6f7,0xac1dd556 +.long 0x24a0a3fc,0x557610f9,0xe881c3f9,0x38e17bf4,0xed0dac99,0x6ba84faf,0x59eeb918,0xd4a222c3,0x13f542b6,0xc79c1dbe,0xe425d457,0x1fc65e0d,0x1debb779,0xeffb754f,0x9e08af60,0x638d8fd0 +.long 0x626332d5,0x994f523a,0x5561bb44,0x7bc38833,0x3d845ea2,0x005ed4b0,0xc2a1f08a,0xd39d3ee1,0xe7676b0d,0x6561fdd3,0xfb706017,0x620e35ff,0xf264f9a8,0x36ce424f,0xda2681f7,0xc4c3419f +.long 0x69beb6e8,0xfb6afd2f,0x6d700d03,0x3a50b993,0x0c83a14f,0xc840b2ad,0x54085bef,0x573207be,0x09fe7e5b,0x5af882e3,0x3b40a7e1,0x957678a4,0x543056e2,0x172d4bdd,0x0df13c0a,0x9c1b26b4 +.long 0xf405ff06,0x1c30861c,0x486e828b,0xebac86bd,0x636933fc,0xe791a971,0x7aeee947,0x50e7c2be,0xfa90d767,0xc3d4a095,0xe670ab7b,0xae60eb7b,0x397b056d,0x17633a64,0x105012aa,0x93a21f33 +.long 0xabb88643,0x663c370b,0x22e21599,0x91df36d7,0x8b761671,0x183ba835,0x728f3bf1,0x381eea1d,0x39966e6c,0xb9b2f1ba,0xe7295492,0x7c464a28,0x09b26b7f,0x0fd5f70a,0xfbe009df,0xa9aba1f9 +.long 0x369b87ad,0x857c1f22,0x32fca556,0x3c00e5d9,0x90b06466,0x1ad74cab,0x550faaf2,0xa7112386,0x6d9bd5f5,0x7435e198,0x59c3463f,0x2dcc7e38,0xca7bd4b2,0xdc7df748,0x9dec2f31,0x13cd4c08 +.long 0xe3237710,0x0d3b5df8,0xcbd2f7b0,0x0dadb26e,0xe4aa082b,0x9f5966ab,0x350e966e,0x666ec8de,0xee524216,0x1bfd1ed5,0x41dab0b6,0xcd93c59b,0xd186d6ba,0x658a8435,0x159d1195,0x1b7d34d2 +.long 0x22caf46b,0x5936e460,0x9a96fe4f,0x6a45dd8f,0xb98f474e,0xf7925434,0x0053ef15,0x41410412,0x41de97bf,0x71cf8d12,0xbd80bef4,0xb8547b61,0xc4db0037,0xb47d3970,0xfef20dff,0xf1bcd328 +.long 0x10caad67,0x31a92e09,0x5531a1e1,0x1f591960,0x5f4fc840,0x3bb852e0,0x93a72c6c,0x63e297ca,0x49abad67,0x3c2b0b2e,0xed3db0d9,0x6ec405fc,0x7fef1d40,0xdc14a530,0x280896fc,0xccd19846 +.long 0x9bb81648,0x00f83176,0x653120d0,0xd69eb485,0x4ccabc62,0xd17d75f4,0xb749fcb1,0x34a07f82,0xbbfb5554,0x2c3af787,0x62e283f8,0xb06ed4d0,0xa19213a0,0x5722889f,0xdcf3c7b4,0x162b085e +.long 0xe0dd3eca,0xbcaecb31,0xe52f13a5,0xc6237fbc,0x27bac297,0xcc2b6b03,0xb917f54a,0x2ae1cac5,0x7845ae4f,0x474807d4,0xce5972e0,0xfec7dd92,0x1d7915bb,0xc3bd2541,0xd94907ca,0x66f85dc4 +.long 0xbdbcf0ca,0xd981b888,0xdf279e9f,0xd75f5da6,0x7054e934,0x128bbf24,0x81db134b,0x3c6ff6e5,0x047d26e4,0x795b7cf4,0x5049ec37,0xf370f7b8,0xced945af,0xc6712d4d,0x095642bc,0xdf30b5ec +.long 0x4896246e,0x9b034c62,0xee90bbd1,0x5652c016,0x87fedb73,0xeb38636f,0x0135a613,0x5e32f847,0xcf933c83,0x0703b312,0x1a7f47e6,0xd05bb76e,0x949c2415,0x825e4f0c,0x7250d6f8,0x569e5622 +.long 0x6568013e,0xbbe9eb3a,0x22f243fc,0x8dbd203f,0xb342734a,0x9dbd7694,0x46afa984,0x8f6d12f8,0xc9eade29,0xb98610a2,0x47dd0f18,0xbab4f323,0x671c0d46,0x5779737b,0xd3e0a42a,0x10b6a7c6 +.long 0x3035b41c,0xfb19ddf3,0x99c45895,0xd336343f,0x54c857e5,0x61fe4938,0xae4e57d5,0xc4d506be,0xbbc33f75,0x3cd8c8cb,0x9262c77d,0x7281f08a,0xf11a2823,0x083f4ea6,0x9fba2e33,0x8895041e +.long 0x9c438edf,0xfcdfea49,0x91edba44,0x7678dcc3,0xe2ba50f0,0xf07b3b87,0x43948c1b,0xc13888ef,0x1140af42,0xc2135ad4,0x926ed1a7,0x8e5104f3,0x88f6695f,0xf24430cb,0x6d73c120,0x0ce0637b +.long 0xfe631e8f,0xb2db01e6,0xd7bdd24b,0x1c5563d7,0x369ad44f,0x8daea3ba,0x8187a9f9,0x000c81b6,0xaae1fd9a,0x5f48a951,0x8d5aed8a,0xe35626c7,0x0498c622,0x20952763,0x773aa504,0x76d17634 +.long 0xeb300f7a,0x36d90dda,0xedb5e801,0x9dcf7dfc,0x74d5244c,0x645cb268,0x348e3aa2,0xa127ee79,0x575f1dbb,0x488acc53,0x80e6161e,0x95037e85,0x292650d0,0x57e59283,0x14938216,0xabe67d99 +.long 0x3f8e1065,0x3c7f944b,0x330e8924,0xed908cb6,0x6f530136,0x08ee8fd5,0xd7ffc169,0x2227b7d5,0xb5cd6dd5,0x4f55c893,0xa62796e8,0x82225e11,0xcb18e12c,0x5c6cead1,0x84f5a51a,0x4381ae0c +.long 0x7fafa4c8,0x345913d3,0x0491aac0,0x3d918082,0x3e69264c,0x9347871f,0xb4f4f0cd,0xbea9dd3c,0x3eadd3e7,0xbda5d067,0x0573bcd8,0x0033c1b8,0x5da2486c,0x25589379,0x86abbee7,0xcb89ee5b +.long 0x22532e5d,0x8fe0a8f3,0x727dfc4c,0xb6410ff0,0x226726db,0x619b9d58,0x7a2b2dc7,0x5ec25669,0x4c3beb01,0xaf4d2e06,0x7acea556,0x852123d0,0xf783487a,0x0e9470fa,0x5664b3eb,0x75a7ea04 +.long 0x6798e4ba,0x4ad78f35,0xc7d0e091,0x9214e6e5,0xb1290403,0xc420b488,0xfc295749,0x64049e0a,0x3ae9841f,0x03ef5af1,0xb0b662a6,0xdbe4ca19,0xfa453458,0x46845c5f,0x10b66722,0xf8dabf19 +.long 0xcce2793b,0xb650f0aa,0xc5ec47c1,0x71db851e,0x3b234fa9,0x3eb78f3e,0xfc0106ce,0xb0c60f35,0x774eadbd,0x05427121,0xce323863,0x25367faf,0xcd086976,0x7541b5c9,0xdc507ad1,0x4ff069e2 +.long 0x8776e667,0x74145256,0xb23c6bb5,0x6e76142c,0x1b3a8a87,0xdbf30712,0x98450836,0x60e7363e,0xb7366d80,0x5741450e,0x4837dbdf,0xe4ee14ca,0x69d4316f,0xa765eb9b,0x8ef43825,0x04548dca +.long 0x5ae888eb,0x9c9f4e4c,0x56e9ac99,0x733abb51,0xba6ac029,0xdaad3c20,0x2ba3e38e,0x9b8dd3d3,0x0bc5d11a,0xa9bb4c92,0x9c5f88a3,0xf20127a7,0x161d3cb8,0x4f52b06e,0x6afaf0a6,0x26c1ff09 +.long 0x7189e71f,0x32670d2f,0x5ecf91e7,0xc6438748,0xdb757a21,0x15758e57,0x290a9ce5,0x427d09f8,0x38384a7a,0x846a308f,0xb0732b99,0xaac3acb4,0x17845819,0x9e941009,0xa7ce5e03,0x95cba111 +.long 0xb00009c4,0x6f3d4f7f,0x8ff28b5f,0xb8396c27,0x1c97975d,0xb1a9ae43,0xe5d9fed5,0x9d7ba8af,0x34f485b6,0x338cf09f,0x64122516,0xbc0ddacc,0x05d471fe,0xa450da12,0x628dd8c9,0x4c3a6250 +.long 0xd1295837,0x69c7d103,0x3807eb2f,0xa2893e50,0xbdb41491,0xd6e1e1de,0x5e138235,0xc630745b,0x48661ae1,0xc892109e,0xea2b2674,0x8d17e7eb,0xc328d6b5,0x00ec0f87,0xf079ff9e,0x6d858645 +.long 0x19115ead,0x6cdf243e,0x4bac4fcf,0x1ce1393e,0x9c29f25b,0x2c960ed0,0x9d388a05,0x59be4d8e,0xd0def72b,0x0d46e06c,0xe0342748,0xb923db5d,0x936d4a3d,0xf7d3aacd,0x0b0b099e,0x558519cc +.long 0x827097ef,0x3ea8ebf8,0xd054f55d,0x259353db,0x6d2ed089,0x84c89abc,0x8e096a7c,0x5c548b69,0x994b995d,0xd587f616,0xa5845601,0x4d1531f6,0x451fd9f0,0x792ab31e,0x65adf6ca,0xc8b57bb2 +.long 0x1cd5ad73,0x68440fcb,0x6144da4f,0xb9c860e6,0x8462beb8,0x2ab286aa,0xef46797f,0xcc6b8fff,0x20c8a471,0xac820da4,0x77ff7faf,0x69ae05a1,0xbfb5da77,0xb9163f39,0x2c73ab7a,0xbd03e590 +.long 0xb2940d9e,0x7e862b5e,0x4b9af564,0x3c663d86,0xbde3033d,0xd8309031,0xd42c5bc6,0x298231b2,0x552ad093,0x42090d2c,0xff854695,0xa4799d1c,0xd31f0d00,0x0a88b5d6,0xa2f26b46,0xf8b40825 +.long 0xf1bd7218,0xec29b1ed,0x4b24c86e,0xd491c53b,0x3395ea65,0xd2fe588f,0x4456ef15,0x6f3764f7,0xcdc34800,0xdb43116d,0xc1e33955,0xcdbcd456,0x74ab286b,0xefdb5540,0xd18c5d7c,0x948c7a51 +.long 0x7378058e,0xeb81aa37,0x04411154,0x41c746a1,0xfb828ac7,0xa10c73bc,0x9d972b29,0x6439be91,0x43a2fbad,0x4bf3b4b0,0x82b5e840,0x39e6dadf,0x6397bd4c,0x4f716408,0x7f1eeccb,0x0f7de568 +.long 0xd2ffbfc1,0x5865c5a1,0x4ccb6451,0xf74211fa,0xc0b32558,0x66368a88,0x9ad7812e,0x5b539dc2,0x2f3af6f6,0x579483d0,0x99934ece,0x52132078,0xdcc9e983,0x50b9650f,0xaee42b8a,0xca989ec9 +.long 0xd6f62f99,0x6a44c829,0x4c2a7c0c,0x8f06a309,0x98a0cb0a,0x4ea2b3a0,0xbeee8364,0x5c547b70,0x682afe11,0x461d40e1,0x7b41c0a8,0x9e0fc77a,0xe20d5d36,0x79e4aefd,0x32dd9f63,0x2916e520 +.long 0x3f883faf,0xf59e52e8,0x2b868d35,0x396f9639,0x4ca19881,0xc902a9df,0xdb2401a6,0x0fc96822,0x66f1c68d,0x41237587,0xfb476c0d,0x10fc6de3,0x841f5d90,0xf8b6b579,0xfa24f44a,0x2ba8446c +.long 0xef4a9975,0xa237b920,0x2330435f,0x60bb6004,0xcfb7e7b5,0xd6f4ab5a,0x83435391,0xb2ac5097,0xb0d1ea67,0xf036ee2f,0x74c56230,0xae779a6a,0xab838ae6,0x59bff8c8,0x9b38e6f0,0xcd83ca99 +.long 0xe33deed3,0xbb27bef5,0x001892a8,0xe6356f6f,0x7adfbd3e,0xbf3be6cc,0x33d1ac9d,0xaecbc81c,0xe6e861dc,0xe4feb909,0x53f5f801,0x90a247a4,0x27346e57,0x01c50acb,0x461acc1b,0xce29242e +.long 0x2f998a91,0x04dd214a,0xd4baf27b,0x271ee9b1,0xe8c26722,0x7e3027d1,0x1820dce5,0x21d1645c,0x7501779c,0x086f242c,0xfa0e8009,0xf0061407,0x60187129,0xf23ce477,0x0fde9bd0,0x05bbdedb +.long 0x25d98473,0x682f4832,0x5c658427,0xf207fe85,0x4166ffa1,0xb6fdd7ba,0x9eed799d,0x0c314056,0x4107e28f,0x0db8048f,0x41216840,0x74ed3871,0x56a3c06e,0x74489f8f,0x12777134,0x1e1c005b +.long 0xf37ec3c3,0xdb332a73,0xdd59eba0,0xc65259bd,0xdb4d3257,0x2291709c,0xbd389390,0x9a793b25,0xe43756f0,0xf39fe34b,0x9afb56c9,0x2f76bdce,0x61208b27,0x9f37867a,0x089972c3,0xea1d4307 +.long 0x8bdf623a,0x8c595330,0x8441fb7d,0x5f5accda,0x32ddfd95,0xfafa9418,0x0fde9be7,0x6ad40c5a,0xaeca8709,0x43faba89,0x2c248a9d,0xc64a7cf1,0x72637a76,0x16620252,0x22b8d1bb,0xaee1c791 +.long 0x21a843b2,0xf0f798fd,0x8d005cb1,0x56e4ed4d,0x1f0d8abe,0x355f7780,0x34522326,0x197b04cf,0xfd42c13f,0x41f9b31f,0xb40f933d,0x5ef7feb2,0x5d60bad4,0x27326f42,0x8c92cf89,0x027ecdb2 +.long 0x4e3352fe,0x04aae4d1,0x73591b90,0x08414d2f,0xb7da7d60,0x5ed6124e,0x4d13d4ec,0xb985b931,0x96bf36f9,0xa592d3ab,0xbbdf51df,0x012dbed5,0xdf6c177d,0xa57963c0,0x87ca29cf,0x010ec869 +.long 0xbf926dff,0xba1700f6,0xf4bf6bc2,0x7c9fdbd1,0x64da11f5,0xdc18dc8f,0xd938ae75,0xa6074b7a,0xe84f44a4,0x14270066,0xd27b954e,0x99998d38,0xb4f38e9a,0xc1be8ab2,0x15c01016,0x8bb55bbf +.long 0x0ea2ab30,0xf73472b4,0xf73d68dd,0xd365a340,0x19c2e1eb,0xc01a7168,0x34061719,0x32f49e37,0x01d8b4d6,0xb73c57f1,0x26b47700,0x03c8423c,0xa4d8826a,0x321d0bc8,0x4bc0e638,0x6004213c +.long 0xc1c06681,0xf78c64a1,0xef018e50,0x16e0a16f,0xdb42b2b3,0x31cbdf91,0xe0d36f58,0xf8f4ffce,0x4cc5e3e0,0xcdcc71cd,0xa129e3e0,0xd55c7cfa,0x0fb2cbf1,0xccdb6ba0,0xc4bce3cb,0x6aba0005 +.long 0xd232cfc4,0x501cdb30,0xd58a3cef,0x9ddcf12e,0x87e09149,0x02d2cf9c,0x2c976257,0xdc5d7ec7,0x0b50d7dd,0x6447986e,0x807f112a,0x88fdbaf7,0xb00ae9f6,0x58c9822a,0x6d3d27e0,0x6abfb950 +.long 0x8a429f4f,0xd0a74487,0xdb516609,0x0649712b,0xe769b5df,0xb826ba57,0x1fc7aaf2,0x82335df2,0x5c93d995,0x2389f067,0x68677be6,0x59ac367a,0x21d9951b,0xa77985ff,0x85011cce,0x038956fb +.long 0xbb734e37,0x608e48cb,0x2be5b26f,0xc08c0bf2,0xf9b1a0d9,0x17bbdd3b,0x10483319,0xeac7d898,0xbc1a6dea,0xc95c4baf,0x172aafdb,0xfdd0e2bf,0x8235c41a,0x40373cbc,0xfb6f41d5,0x14303f21 +.long 0x0408f237,0xba063621,0xecd2d1ed,0xcad3b09a,0x52abb6a2,0x4667855a,0xaa8b417b,0xba9157dc,0x4f013efb,0xfe7f3507,0xaa38c4a2,0x1b112c4b,0x9ba64345,0xa1406a60,0x6993c80b,0xe53cba33 +.long 0xded40d23,0x45466063,0x54908e25,0x3d5f1f4d,0x403c3c31,0x9ebefe62,0x0672a624,0x274ea0b5,0x451d1b71,0xff818d99,0x8f79cf79,0x80e82643,0x73ce37f5,0xa165df13,0xfe3a21fd,0xa744ef4f +.long 0xcf551396,0x73f1e7f5,0x868c676b,0xc616898e,0x8c442c36,0x671c28c7,0x5e0a317d,0xcfe5e558,0x7051f476,0x1242d818,0x14f03442,0x56fad2a6,0x0a44d0f6,0x262068bc,0xce6edf4e,0xdfa2cd6e +.long 0xd15d1517,0x0f43813a,0x377d44f5,0x61214cb2,0xc639b35f,0xd399aa29,0x54c51c19,0x42136d71,0x08417221,0x9774711b,0x52545a57,0x0a5546b3,0x1150582d,0x80624c41,0xfbc555bc,0x9ec5c418 +.long 0x771849f1,0x2c87dcad,0x01d7bf6f,0xb0c932c5,0x89116eb2,0x6aa5cd3e,0x51ca7bd3,0xd378c25a,0x9e6e3e31,0xc612a0da,0xb68ad5d0,0x0417a54d,0x22c6edb8,0x00451e4a,0xb42827ce,0x9fbfe019 +.long 0xba9384a2,0x2fa92505,0x64ad69c1,0x21b8596e,0x983b35a6,0x8f4fcc49,0x72754672,0xde093760,0xf7bffe6d,0x2f14ccc8,0x5d94263d,0x27566bff,0x2df3ec30,0xb5b4e9c6,0x3e6ea6ba,0x94f1d7d5 +.long 0xaaca5e9b,0x97b7851a,0x56713b97,0x518aa521,0x150a61f6,0x3357e8c7,0xec2c2b69,0x7842e7e2,0x6868a548,0x8dffaf65,0xe068fc81,0xd963bd82,0x65917733,0x64da5c8b,0x7b247328,0x927090ff +.long 0xd298c241,0x214bc9a7,0x56807cfd,0xe3b697ba,0x4564eadb,0xef1c7802,0xb48149c5,0xdde8cdcf,0x5a4d2604,0x946bf0a7,0x6c1538af,0x27154d7f,0xde5b1fcc,0x95cc9230,0x66864f82,0xd88519e9 +.long 0x7cb1282c,0xb828dd1a,0xbe46973a,0xa08d7626,0xe708d6b2,0x6baf8d40,0x4daeb3f3,0x72571fa1,0xf22dfd98,0x85b1732f,0x0087108d,0x87ab01a7,0x5988207a,0xaaaafea8,0x69f00755,0xccc832f8 +.long 0x36ff3bf0,0x964d950e,0xf0b34638,0x8ad20f6f,0xb5d7585f,0x4d9177b3,0xef3f019f,0xcf839760,0x8288c545,0x582fc5b3,0x13116bd1,0x2f8e4e9b,0x332120ef,0xf91e1b2f,0x2a17dd23,0xcf568724 +.long 0xca8d9d1a,0x488f1185,0xd987ded2,0xadf2c77d,0x60c46124,0x5f3039f0,0x71e095f4,0xe5d70b75,0x6260e70f,0x82d58650,0xf750d105,0x39d75ea7,0x75bac364,0x8cf3d0b1,0x21d01329,0xf3a7564d +.long 0x2f52d2a7,0x182f04cd,0xe2df565a,0x4fde149a,0xa79fb2f7,0xb80c5eec,0x22ddc897,0xab491d7b,0xc6312c7f,0x99d76c18,0x6aa41a57,0xca0d5f3d,0xd15363a0,0x71207325,0xbeb252c2,0xe82aa265 +.long 0xec3128c2,0x94ab4700,0x8e383f49,0x6c76d862,0xc03024eb,0xdc36b150,0x53daac69,0xfb439477,0x8dc79623,0xfc68764a,0xb440fbb2,0x5b86995d,0xccc5ee0d,0xd66879bf,0x95aa8bd3,0x05228942 +.long 0x1e6a75c1,0xb51a40a5,0x0ea7d817,0x24327c76,0x07774597,0x06630182,0x97fa7164,0xd6fdbec3,0x13c90f48,0x20c99dfb,0x686ef263,0xd6ac5273,0xfef64eeb,0xc6a50bdc,0x86fdfc32,0xcd87b281 +.long 0x3fcd3efc,0xb24aa43e,0xb8088e9a,0xdd26c034,0xbd3d46ea,0xa5ef4dc9,0x8a4c6a6f,0xa2f99d58,0x2f1da46c,0xddabd355,0x1afacdd1,0x72c3f8ce,0x92d40578,0xd90c4eee,0xca623b94,0xd28bb41f +.long 0x745edc11,0x50fc0711,0x3dc87558,0x9dd9ad7d,0xb49d1e64,0xce6931fb,0xc98bd0f9,0x6c77a0a2,0x6baf7cb1,0x62b9a629,0xccf72d22,0xcf065f91,0x79639071,0x7203cce9,0xf9cb732f,0x09ae4885 +.long 0xee8314f3,0x5e7c3bec,0xdbea298f,0x1c068aed,0x7c80acec,0x08d381f1,0xe330495b,0x03b56be8,0x9222882d,0xaeffb8f2,0xc4af8bf7,0x95ff38f6,0x1fc57d8c,0x50e32d35,0x17b444f0,0x6635be52 +.long 0xa5177900,0x04d15276,0xf6858752,0x4e1dbb47,0xc615796c,0x5b475622,0x691867bf,0xa6fa0387,0x2844c6d0,0xed7f5d56,0x03a2477d,0xc633cf9b,0x2d3721d6,0xf6be5c40,0xe9fd68e6,0xaf312eb7 +.long 0xe7417ce1,0x242792d2,0x970ee7f5,0xff42bc71,0x5c67a41e,0x1ff4dc6d,0x20882a58,0x77709b7b,0xbe217f2c,0x3554731d,0x5bb72177,0x2af2a8cd,0x591dd059,0x58eee769,0x4bba6477,0xbb2930c9 +.long 0x7d930cfc,0x863ee047,0x396fd1f4,0x4c262ad1,0x039af7e1,0xf4765bc8,0x5ba104f6,0x2519834b,0xd105f961,0x7cd61b4c,0xd63bca54,0xa5415da5,0x88a1f17c,0x778280a0,0x2329512c,0xc4968949 +.long 0xcecdaa7a,0x174a9126,0x0b13247b,0xfc8c7e0e,0x3484c1c4,0x29c110d2,0x831dfc3b,0xf8eb8757,0xc0067452,0x022f0212,0x7b9b926c,0x3f6f69ee,0xef42daf4,0x09032da0,0x83f80de4,0x79f00ade +.long 0x81236c97,0x6210db71,0x3ee0781f,0x74f7685b,0xa3e41372,0x4df7da7b,0xb1a1553e,0x2aae38b1,0xf6dd9d1b,0x1688e222,0x5b8b6487,0x57695448,0x4b2edeaa,0x478d2127,0x1e85956a,0xb2818fa5 +.long 0xf176f2c0,0x1e6addda,0xe2572658,0x01ca4604,0x85342ffb,0x0a404ded,0x441838d6,0x8cf60f96,0xc9071c4a,0x9bbc691c,0x34442803,0xfd588744,0x809c0d81,0x97101c85,0x8c456f7f,0xa7fb754c +.long 0xd51805e1,0xc95f3c5c,0xb299dca8,0xab4ccd39,0x47eaf500,0x3e03d20b,0xd7b80893,0xfa3165c1,0xe160e552,0x005e8b54,0x9019d11f,0xdc4972ba,0x0c9a4a7a,0x21a6972e,0x37840fd7,0xa52c258f +.long 0xc1e99d81,0xf8559ff4,0xa3c617c0,0x08e1a7d6,0x248c6ba7,0xb398fd43,0xd1283794,0x6ffedd91,0xd629d208,0x8a6a59d2,0x3490530e,0xa9d141d5,0x38505989,0x42f6fc18,0x479d94ee,0x09bf250d +.long 0xb3822790,0x223ad3b1,0x93b8971c,0x6c5926c0,0x75f7fa62,0x609efc7e,0x1ec2d989,0x45d66a6d,0x987d2792,0x4422d663,0x3eb31d2b,0x4a73caad,0xa32cb9e6,0xf06c2ac1,0x91aeba84,0xd9445c5f +.long 0xaf71013f,0x6af7a1d5,0x0bedc946,0xe68216e5,0xd27370a0,0xf4cba30b,0x870421cc,0x7981afbf,0x9449f0e1,0x02496a67,0x0a47edae,0x86cfc4be,0xb1feca22,0x3073c936,0x03f8f8fb,0xf5694612 +.long 0x901515ea,0xd063b723,0x749cf038,0x4c6c77a5,0xab9e5059,0x6361e360,0xa76a37c0,0x596cf171,0x6530ae7a,0x800f53fa,0x0792a7a6,0x0f5e631e,0xefdb81c9,0x5cc29c24,0x3f9c40ba,0xa269e868 +.long 0x2cb7191e,0xec14f9e1,0xe5b08ea6,0x78ea1bd8,0x46332bb9,0x3c65aa9b,0xbf80ce25,0x84cc22b3,0xd49d5bf1,0x0098e9e9,0x19087da4,0xcd4ec1c6,0xaef6e357,0x3c9d07c5,0x9f8f64b8,0x839a0268 +.long 0xc6d8607f,0xc5e9eb62,0x6aa995e4,0x759689f5,0xbbb48317,0x70464669,0xe402417d,0x921474bf,0x2a354c8c,0xcabe135b,0x812fa4b5,0xd51e52d2,0x53311fe8,0xec741096,0xb864514b,0x4f774535 +.long 0x5bde48f8,0xbcadd671,0x2189bc7d,0xc9703873,0xc709ee8a,0x5d45299e,0x845aaff8,0xd1287ee2,0xdb1dbf1f,0x7d1f8874,0x990c88d6,0xea46588b,0x84368313,0x60ba649a,0x60d543ae,0xd5fdcbce +.long 0x810d5ab0,0x90b46d43,0x04d7e5cc,0x6739d8f9,0x0d337c33,0x021c1a58,0x68e67c40,0x00a61162,0x379f0a1f,0x95ef413b,0xe9e2ab95,0xfe126605,0x2f5f199c,0x67578b85,0x2cb84913,0xf5c00329 +.long 0x37577dd8,0xf7956430,0x29c5fe88,0x83b82af4,0xcdbdc132,0x9c1bea26,0x9c04339e,0x589fa086,0xb13799df,0x033e9538,0xd295d034,0x85fa8b21,0xbd9ddcca,0xdf17f73f,0xddb66334,0xf32bd122 +.long 0x858b044c,0x55ef88a7,0x5aa9e397,0x1f0d69c2,0x40d85559,0x55fd9cc3,0x7785ddb2,0xc774df72,0xd3bd2e1c,0x5dcce9f6,0xa85dfed0,0xeb30da20,0xd3ed09c4,0x5ed7f5bb,0x82a9c1bd,0x7d42a35c +.long 0x9890272d,0xcf3de995,0x3e713a10,0x75f3432a,0xe28227b8,0x5e13479f,0xfefacdc8,0xb8561ea9,0x8332aafd,0xa6a297a0,0x73809b62,0x9b0d8bb5,0x0c63036f,0xd2fa1cfd,0xbd64bda8,0x7a16eb55 +.long 0x78e62ddc,0x3f5cf5f6,0x07fd752b,0x2267c454,0x5e437bbe,0x5e361b6b,0x8354e075,0x95c59501,0xf2b254d9,0xec725f85,0x2cb52b4e,0x844b617d,0xcf425fb5,0xed8554f5,0x2af9f312,0xab67703e +.long 0x3cf48283,0x4cc34ec1,0x9c8a705e,0xb09daa25,0x5b7d4f84,0xd1e9d0d0,0xdb38929d,0x4df6ef64,0xaa21ba46,0xe16b0763,0xa293f8fb,0xc6b1d178,0xd520aabf,0x0ff5b602,0xc339397a,0x94d671bd +.long 0x4f5792fa,0x7c7d98cf,0x11215261,0x7c5e0d67,0xa7c5a6d4,0x9b19a631,0x7a45274d,0xc8511a62,0xa5a60d99,0x0c16621c,0xcf5e48cb,0xf7fbab88,0xf7ddee08,0xab1e6ca2,0xe7867f3c,0x83bd08ce +.long 0x2ac13e27,0xf7e48e8a,0x4eb1a9f5,0x4494f6df,0x981f0a62,0xedbf84eb,0x536438f0,0x49badc32,0x004f7571,0x50bea541,0xdf1c94ee,0xbac67d10,0xb727bc31,0x253d73a1,0x30686e28,0xb3d01cf2 +.long 0x55fd0b8b,0x51b77b1b,0xfeec3173,0xa099d183,0x670e72b7,0x202b1fb7,0xa8e1635f,0xadc88b33,0xf989d905,0x34e8216a,0x29b58d01,0xc2e68d20,0x6fe55a93,0x11f81c92,0x8f296f40,0x15f1462a +.long 0xea3d62f2,0x1915d375,0x01c8977d,0xa17765a3,0xe47b26f6,0x7559710a,0x535077a5,0xe0bd29c8,0x08d84858,0x615f976d,0x69ced5c1,0x370dfe85,0xa734fa56,0xbbc7503c,0x91ac4574,0xfbb9f1ec +.long 0x060dd7ef,0x95d7ec53,0x6e657979,0xeef2dacd,0xe2a08235,0x54511af3,0x1f4aea3d,0x1e324aa4,0xe6e67671,0x550e7e71,0xbf52faf7,0xbccd5190,0x223cc62a,0xf880d316,0x2b32eb5d,0x0d402c7e +.long 0x306a5a3b,0xa40bc039,0x96783a1b,0x4e0a41fd,0x0253cdd4,0xa1e8d39a,0xc7388638,0x6480be26,0x2285f382,0xee365e1d,0xec0b5c36,0x188d8d8f,0x1f0f4d82,0x34ef1a48,0xa487d29a,0x1a8f43e1 +.long 0x77aefb3a,0x8168226d,0x1e72c253,0xf69a751e,0xe9594df1,0x8e04359a,0xd14c0467,0x475ffd7d,0x3844e95c,0xb5a2c2b1,0xdd12ef94,0x85caf647,0xf1063d00,0x1ecd2a9f,0x23843311,0x1dd2e229 +.long 0x73d17244,0x38f0e09d,0x8fc653f1,0x3ede7746,0xdc20e21c,0xae4459f5,0x6a8599ea,0x00db2ffa,0x30cfd905,0x11682c39,0xa5c112a6,0x4934d074,0x568bfe95,0xbdf063c5,0x016c441a,0x779a440a +.long 0x97d6fbdc,0x0c23f218,0xe0776aac,0xd3a5cd87,0xd712e8db,0xcee37f72,0x26f74e8d,0xfb28c70d,0xb61301a0,0xffe0c728,0xd3724354,0xa6282168,0x768ffedc,0x7ff4cb00,0x03b02de9,0xc51b3088 +.long 0x3902dda5,0xa5a8147c,0xfe6973b4,0x35d2f706,0xc257457e,0x5ac2efcf,0x8700611b,0x933f48d4,0x4912beb2,0xc365af88,0x162edf94,0x7f5a4de6,0x0c32f34b,0xc646ba7c,0xb2091074,0x632c6af3 +.long 0x753e43a9,0x58d4f2e3,0x24d4e23f,0x70e1d217,0xafede6a6,0xb24bf729,0x710c8b60,0x7f4a94d8,0x8d4faa6a,0xaad90a96,0xb066b690,0xd9ed0b32,0x78b6dbfd,0x52fcd37b,0x8bd2b431,0x0b64615e +.long 0xcfb9fad5,0x228e2048,0x240b76bd,0xbeaa386d,0x90dad7bc,0x2d6681c8,0x06d38f5e,0x3e553fc3,0x9d5f9750,0xf27cdb9b,0xd28c5b0e,0x3e85c52a,0x5247c39b,0x190795af,0xbddd6828,0x547831eb +.long 0x4a82f424,0xf327a227,0x7e47f89d,0x36919c78,0x43c7392c,0xe4783919,0x2316fefe,0xf101b9aa,0x1c5009d2,0xbcdc9e9c,0x9cd18345,0xfb55ea13,0xa3ce77c7,0xf5b5e231,0xd2f2cb3d,0xde6b4527 +.long 0x9bb26f5f,0x10f6a333,0x044d85b6,0x1e85db8e,0x94197e54,0xc3697a08,0xa7cb4ea8,0x65e18cc0,0xa471fe6e,0xa38c4f50,0x2f13439c,0xf031747a,0xc007318b,0x53c4a6ba,0x1deccb3d,0xa8da3ee5 +.long 0x558216b1,0x0555b31c,0x2f79e6c2,0x90c7810c,0xfe8eed3c,0x9b669f4d,0xe0fac126,0x70398ec8,0xf701b235,0xa96a449e,0xeb94f395,0x0ceecdb3,0xd0cb7431,0x285fc368,0x16a18c64,0x0d37bb52 +.long 0xb880d2dd,0x05110d38,0x65930d57,0xa60f177b,0xf36235f5,0x7da34a67,0x183816b9,0x47f5e17c,0xdb394af4,0xc7664b57,0x7036f789,0x39ba215d,0x2f27b472,0x46d2ca0e,0xf73a84b7,0xc42647ee +.long 0x64488f1d,0x44bc7545,0xf4cf85d5,0xaa922708,0x53e4df63,0x721a01d5,0x5db46ced,0x649c0c51,0x3cffcb6c,0x6bf0d64e,0x50f71d96,0xe3bf93fe,0xbcc194a0,0x75044558,0x6afdc554,0x16ae3372 +.long 0x5ca48f3f,0xbfc01adf,0xe22a9b84,0x64352f06,0xc1099e4a,0xcee54da1,0xfa1b89c0,0xbbda54e8,0x6f6e55fb,0x166a3df5,0x20176f88,0x1ca44a24,0xdfb7b5ff,0x936afd88,0x8611d4a0,0xe34c2437 +.long 0x86142103,0x7effbb75,0x1f34fc4d,0x6704ba1b,0x10c1b122,0x7c2a468f,0x8c6aace9,0x36b3a610,0x75a0d050,0xabfcc0a7,0x3ce33e32,0x066f9197,0x29fe09be,0xce905ef4,0xa8376351,0x89ee25ba +.long 0xfd29dc76,0x2a3ede22,0x36f17260,0x7fd32ed9,0x284b4126,0x0cadcf68,0xa7951fc8,0x63422f08,0x0807e199,0x562b24f4,0x22ad4490,0xfe9ce5d1,0x0db2b1b4,0xc2f51b10,0xe4541d0d,0xeb3613ff +.long 0x2680813b,0xbd2c4a05,0x561b08d6,0x527aa55d,0xa7205558,0xa9f8a40e,0x243d0bec,0xe3eea56f,0xa0ff58b3,0x7b853817,0x1a69e627,0xb67d3f65,0xa869b5d6,0x0b76bbb9,0x546723ed,0xa3afeb82 +.long 0x3e554892,0x5f24416d,0x430e2a45,0x8413b53d,0x9032a2a0,0x99c56aee,0xeec367b1,0x09432bf6,0xdaf0ecc1,0x552850c6,0x5bc92048,0x49ebce55,0x54811307,0xdfb66ba6,0x6f298597,0x1b84f797 +.long 0x8d1d7a0d,0x79590481,0x3a6fa556,0xd9fabe03,0xba9e5d35,0xa40f9c59,0xf6247577,0xcb1771c1,0xe9a6312b,0x542a47ca,0x552dd8c5,0xa34b3560,0x0d794716,0xfdf94de0,0x9c623094,0xd46124a9 +.long 0x68afe8b4,0x56b7435d,0x6c0d8ea1,0x27f20540,0x73186898,0x12b77e14,0x7479490f,0xdbc3dd46,0xc03b0c05,0x951a9842,0x7921bc96,0x8b1b3bb3,0x2b202e0a,0xa573b346,0x47254d56,0x77e4665d +.long 0xd23e3984,0x08b70dfc,0xebd14236,0xab86e8bc,0x57114ba7,0xaa3e07f8,0xab0ef4f2,0x5ac71689,0x0139d9af,0x88fca384,0x76644af0,0x72733f88,0x65d74f4a,0xf122f72a,0xa5626c7a,0x13931577 +.long 0x70f8d5a4,0xd5b5d9eb,0xd7bbb228,0x375adde7,0x0c1c0b32,0x31e88b86,0x173edbaa,0xd1f568c4,0x5459df02,0x1592fc83,0x0fcd9a7e,0x2beac0fb,0x1b473b0a,0xb0a6fdb8,0x0fe8fc48,0xe3224c6f +.long 0xe87edf5b,0x680bd00e,0x20e77cf5,0x30385f02,0x4d42d1b2,0xe9ab98c0,0xd3816d77,0x72d191d2,0x0917d9e5,0x1564daca,0x1f8fed7f,0x394eab59,0x7fbb3896,0xa209aa8d,0xbe6ac98e,0x5564f3b9 +.long 0xd73654ef,0xead21d05,0x13d78d74,0x68d1a9c4,0x6d4973a0,0x61e01708,0x46e6d32a,0x83da3500,0x68ae0118,0x6a3dfca4,0xd02da069,0xa1b9a4c9,0xebab8302,0x0b2ff9c7,0x944ba436,0x98af07c3 +.long 0x995f0f9f,0x85997326,0x71b58bc6,0x467fade0,0xbd625a2b,0x47e4495a,0x33c3b8cd,0xfdd2d01d,0xc693f9fa,0x2c38ae28,0x348f7999,0x48622329,0x2161f583,0x97bf738e,0x565e8cc9,0x15ee2fa7 +.long 0x5777e189,0xa1a5c845,0x456f2829,0xcc10bee0,0xda762bd5,0x8ad95c56,0xe9d91da8,0x152e2214,0x7cb23c74,0x975b0e72,0xa90c66df,0xfd5d7670,0x225ffc53,0xb5b5b8ad,0xfaded2ae,0xab6dff73 +.long 0x6f4cbe9d,0xebd56781,0x6a574bd7,0x0ed8b249,0x81a881fa,0x41c246fe,0xc3db9c70,0x91564805,0x5b862809,0xd7c12b08,0x55858d7b,0x1facd1f1,0xaf09e92a,0x7693747c,0x189a425f,0x3b69dcba +.long 0x967365ef,0x0be28e9f,0xe801f5c9,0x57300eb2,0xd583352f,0x93b8ac6a,0xcd05b2b7,0xa2cf1f89,0x4dcc40cc,0x7c0c9b74,0xada523fb,0xfee38c45,0x1099cc4d,0xb49a4dec,0x69f069c6,0x325c377f +.long 0x476cc9ff,0xe12458ce,0xc6d4cb63,0x580e0b6c,0x9072289b,0xd561c8b7,0xa619e6da,0x0377f264,0x88e591a5,0x26685362,0x7523ca2b,0xa453a7bd,0xc1df4533,0x8a9536d2,0xbe972f79,0xc8e50f2f +.long 0x6d3549cf,0xd433e50f,0xfacd665e,0x6f33696f,0xce11fcb4,0x695bfdac,0xaf7c9860,0x810ee252,0x7159bb2c,0x65450fe1,0x758b357b,0xf7dfbebe,0xd69fea72,0x2b057e74,0x92731745,0xd485717a +.long 0xee36860c,0x896c42e8,0x4113c22d,0xdaf04dfd,0x44104213,0x1adbb7b7,0x1fd394ea,0xe5fd5fa1,0x1a4e0551,0x68235d94,0x18d10151,0x6772cfbe,0x09984523,0x276071e3,0x5a56ba98,0xe4e879de +.long 0x285b9491,0xaaafafb0,0x1e4c705e,0x01a0be88,0x2ad9caab,0xff1d4f5d,0xc37a233f,0x6e349a4a,0x4a1c6a16,0xcf1c1246,0x29383260,0xd99e6b66,0x5f6d5471,0xea3d4366,0xff8cc89b,0x36974d04 +.long 0xcfe89d80,0xc26c49a1,0xda9c8371,0xb42c026d,0xdad066d2,0xca6c013a,0x56a4f3ee,0xfb8f7228,0xd850935b,0x08b579ec,0xd631e1b3,0x34c1a74c,0xac198534,0xcb5fe596,0xe1f24f25,0x39ff21f6 +.long 0x8f929057,0x27f29e14,0xc0c853df,0x7a64ae06,0x58e9c5ce,0x256cd183,0xded092a5,0x9d9cce82,0x6e93b7c7,0xcc6e5979,0x31bb9e27,0xe1e47092,0xaa9e29a0,0xb70b3083,0x3785e644,0xbf181a75 +.long 0x8ead09f7,0xf53f2c65,0x9780d14d,0x1335e1d5,0xcd1b66bc,0x69cc20e0,0xbbe0bfc8,0x9b670a37,0x28efbeed,0xce53dc81,0x8326a6e5,0x0c74e77c,0xb88e9a63,0x3604e0d2,0x13dc2248,0xbab38fca +.long 0x5c0a3f1e,0x8ed6e8c8,0x7c87c37f,0xbcad2492,0x9ee3b78d,0xfdfb62bb,0xcbceba46,0xeba8e477,0xeeaede4b,0x37d38cb0,0x7976deb6,0x0bc498e8,0x6b6147fb,0xb2944c04,0xf71f9609,0x8b123f35 +.long 0xde79dc24,0xa155dcc7,0x558f69cd,0xf1168a32,0x0d1850df,0xbac21595,0xb204c848,0x15c8295b,0x7d8184ff,0xf661aa36,0x30447bdb,0xc396228e,0xbde4a59e,0x11cd5143,0x6beab5e6,0xe3a26e3b +.long 0x1402b9d0,0xd3b3a13f,0x2c7bc863,0x573441c3,0x578c3e6e,0x4b301ec4,0x0adaf57e,0xc26fc9c4,0x7493cea3,0x96e71bfd,0x1af81456,0xd05d4b3f,0x6a8c608f,0xdaca2a8a,0x0725b276,0x53ef07f6 +.long 0x7824fc56,0x07a5fbd2,0x13289077,0x34675218,0xe0c48349,0x5bf69fd5,0xb6aa7875,0xa613ddd3,0x5450d866,0x7f78c19c,0x8f84a481,0x46f4409c,0x90fce239,0x9f1d1928,0xb2ce44b9,0x016c4168 +.long 0xc7435978,0xbae023f0,0x20e30e19,0xb152c888,0xe3fa6faf,0x9c241645,0x84823e60,0x735d95c1,0x03955317,0x03197573,0xf03b4995,0x0b4b02a9,0x70274600,0x076bf559,0xaaf57508,0x32c5cc53 +.long 0x60624129,0xe8af6d1f,0x9a5e2b5e,0xb7bc5d64,0x5f082d72,0x3814b048,0xce19677a,0x76f267f2,0xb36eed93,0x626c630f,0x3bf56803,0x55230cd7,0xce2736a0,0x78837949,0xaa6c55f1,0x0d792d60 +.long 0xd5c7c5d2,0x0318dbfd,0x072b342d,0xb38f8da7,0x7b8de38a,0x3569bddc,0xa1c94842,0xf25b5887,0x2946ad60,0xb2d5b284,0xe9d1707e,0x854f29ad,0x2c6a4509,0xaa5159dc,0x57189837,0x899f94c0 +.long 0xf4a55b03,0xcf6adc51,0x35e3b2d5,0x261762de,0x04827b51,0x4cc43012,0xc6021442,0xcd22a113,0x247c9569,0xce2fd61a,0xd152beca,0x59a50973,0x63a716d4,0x6c835a11,0x187dedcf,0xc26455ed +.long 0x49ce89e7,0x27f536e0,0xcc890cb5,0x18908539,0xd83c2aa1,0x308909ab,0x1ab73bd3,0xecd3142b,0xb3f5ab84,0x6a85bf59,0xf2bea4c6,0x3c320a68,0x6da4541f,0xad8dc538,0xb7c41186,0xeaf34eb0 +.long 0x977c97c4,0x1c780129,0xc57eb9fa,0x5ff9beeb,0xc822c478,0xa24d0524,0x461cd415,0xfd8eec2a,0xf027458c,0xfbde194e,0x1d1be115,0xb4ff5319,0x4866d6f4,0x63f874d9,0xb21ad0c9,0x35c75015 +.long 0x46ac49d2,0xa6b5c9d6,0x83137aa9,0x42c77c0b,0x68225a38,0x24d000fc,0x2fe1e907,0x0f63cfc8,0xc6441f95,0x22d1b01b,0xec8e448f,0x7d38f719,0x787fb1ba,0x9b33fa5f,0x190158df,0x94dcfda1 +.long 0x5f6d4a09,0xc47cb339,0xee52b826,0x6b4f355c,0xf51b930a,0x3d100f5d,0x9f668f69,0xf4512fac,0x206c4c74,0x546781d5,0xcb4d2e48,0xd021d4d4,0xca085c2d,0x494a54c2,0x520850a8,0xf1dbaca4 +.long 0x490a1aca,0x63c79326,0x41526b02,0xcb64dd9c,0xa2979258,0xbb772591,0x48d97846,0x3f582970,0x7c213ba7,0xd66b70d1,0xe8a0ced4,0xc28febb5,0xc10338c1,0x6b911831,0xbf0126f3,0x0d54e389 +.long 0x4af206ee,0x7048d460,0x77e97cb9,0x786c88f6,0xac64802e,0xd4375ae1,0xd53ec11c,0x469bcfe1,0x47062230,0xfc9b340d,0xc5b4a3ac,0xe743bb57,0x59ef45ac,0xfe00b4aa,0x59edf188,0x29a4ef23 +.long 0xb483689b,0x40242efe,0x513ac262,0x2575d3f6,0x0ca6db72,0xf30037c8,0x98864be2,0xc9fcce82,0x0149362d,0x84a112ff,0x1c4ae971,0x95e57582,0x945cf86c,0x1fa4b1a8,0x0b024a2f,0x4525a734 +.long 0x8f338360,0xe76c8b62,0x28edf32b,0x483ff593,0x298b1aec,0x67e8e90a,0x736d9a21,0x9caab338,0x66892709,0x5c09d2fd,0xb55a1d41,0x2496b4dc,0xe24a4394,0x93f5fb1a,0x6fa8f6c1,0x08c75049 +.long 0xc905d85f,0xcaead1c2,0x0733ae57,0xe9d7f790,0xf07cdd94,0x24c9a65c,0xa4b55931,0x7389359c,0x367e45f7,0xf58709b7,0xcb7e7adc,0x1f203067,0xc7b72818,0x82444bff,0xbaac8033,0x07303b35 +.long 0xd13b7ea1,0x1e1ee4e4,0xe0e74180,0xe6489b24,0x7e70ef70,0xa5f2c610,0xbdd10894,0xa1655412,0x7af4194e,0x555ebefb,0x8e89bd9c,0x533c1c3c,0x89895856,0x735b9b57,0x567f5c15,0x15fb3cd2 +.long 0x526f09fd,0x057fed45,0x8128240a,0xe8a4f10c,0xff2bfd8d,0x9332efc4,0xbd35aa31,0x214e77a0,0x14faa40e,0x32896d73,0x01e5f186,0x767867ec,0x17a1813e,0xc9adf8f1,0x54741795,0xcb6cda78 +.long 0x349d51aa,0xb7521b6d,0xe3c7b8e9,0xf56b5a9e,0x32a096df,0xc6f1e5c9,0xa3635024,0x083667c4,0x18087f2f,0x365ea135,0xd136e45d,0xf1b8eaac,0x73aec989,0xc8a0e484,0x142c9259,0xd75a324b +.long 0x01dae185,0xb7b4d001,0x9b7a94bc,0x45434e0b,0xfbd8cb0b,0xf54339af,0xe98ef49e,0xdcc4569e,0x09a51299,0x7789318a,0xb2b025d8,0x81b4d206,0xfae85792,0xf64aa418,0xacd7baf7,0x3e50258f +.long 0x2996864b,0xdce84cdb,0x1f485fa4,0xa2e67089,0x534c6a5a,0xb28b2bb6,0xc94b9d39,0x31a7ec6b,0xd6bc20da,0x1d217766,0x86761190,0x4acdb5ec,0x73701063,0x68726328,0x2128c29b,0x4d24ee7c +.long 0xa19fd868,0xc072ebd3,0xdb8ddd3b,0x612e481c,0x1a64d852,0xb4e1d754,0xc4c6c4ab,0x00ef95ac,0xaa0a6c46,0x1536d2ed,0x43774790,0x61294086,0x343fda10,0x54af25e8,0xfd25d6f2,0x9ff9d98d +.long 0x468b8835,0x0746af7c,0x730ecea7,0x977a31cb,0xc2cf4a81,0xa5096b80,0x6458c37a,0xaa986833,0xa6bd9d34,0x6af29bf3,0x33c5d854,0x6a62fe9b,0xb7133b5e,0x50e6c304,0x7d6e6848,0x04b60159 +.long 0x5579bea4,0x4cd296df,0x5ceedaf1,0x10e35ac8,0xe3bcc5b1,0x04c4c5fd,0x89412cf9,0x95f9ee8a,0x82b6eb0f,0x2c9459ee,0x95c2aadd,0x2e845765,0xd327fcfe,0x774a84ae,0x0368d476,0xd8c93722 +.long 0xf83e8a3b,0x0dbd5748,0x8d2495f3,0xa579aa96,0xae496e9b,0x535996a0,0xb7f9bcc2,0x07afbfe9,0x5b7bd293,0x3ac1dc6d,0x7022323d,0x3b592cff,0x9c0a3e76,0xba0deb98,0x4b197acb,0x18e78e9f +.long 0x296c36ef,0x211cde10,0x82c4da77,0x7ee89672,0xa57836da,0xb617d270,0x9cb7560b,0xf0cd9c31,0xe455fe90,0x01fdcbf7,0x7e7334f3,0x3fb53cbb,0x4e7de4ec,0x781e2ea4,0x0b384fd0,0x8adab3ad +.long 0x53d64829,0x129eee2f,0xa261492b,0x7a471e17,0xe4cb4a2c,0xe4f9adb9,0x97ba2c2d,0x3d359f6f,0x0aacd697,0x346c6786,0x75c2f8a8,0x92b444c3,0xd85df44e,0xc79fa117,0x398ddf31,0x56782372 +.long 0xbbbab3b8,0x60e690f2,0x8b04816b,0x4851f8ae,0x9c92e4d2,0xc72046ab,0x7cf3136b,0x518c74a1,0xf9877d4c,0xff4eb50a,0xa919cabb,0x14578d90,0xac5eb2b6,0x8218f8c4,0x542016e4,0xa3ccc547 +.long 0x327f8349,0x025bf48e,0xf43cb641,0xf3e97346,0x500f1085,0xdc2bafdf,0x2f063055,0x57167876,0x411925a6,0x5bd914b9,0xa1123de5,0x7c078d48,0x182b165d,0xee6bf835,0xba519727,0xb11b5e5b +.long 0x1eea7b85,0xe33ea76c,0x92d4f85e,0x2352b461,0xafe115bb,0xf101d334,0x889175a3,0xfabc1294,0x5233f925,0x7f6bcdc0,0xe77fec55,0xe0a802db,0x8069b659,0xbdb47b75,0xf98fbd74,0x1c5e12de +.long 0x4b8457ee,0x869c58c6,0x4f7ea9f7,0xa5360f69,0xf460b38f,0xe576c09f,0x22b7fb36,0x6b70d548,0x3bfae315,0x3fd237f1,0xcbdff369,0x33797852,0x25b516f9,0x97df25f5,0xba38ad2d,0x46f388f2 +.long 0x89d8ddbb,0x656c4658,0x70f38ee8,0x8830b26e,0xde1212b0,0x4320fd5c,0xe4a2edb2,0xc34f30cf,0x56ab64b8,0xabb131a3,0xd99c5d26,0x7f77f0cc,0xbf981d94,0x66856a37,0x738bd76e,0x19e76d09 +.long 0x96238f39,0xe76c8ac3,0xa830b366,0xc0a482be,0x0b4eb499,0xb7b8eaff,0x4bfb4865,0x8ecd83bc,0xa2f3776f,0x971b2cb7,0xf4b88adf,0xb42176a4,0xbe1fa446,0xb9617df5,0xcd031bd2,0x8b32d508 +.long 0x53b618c0,0x1c6bd47d,0x6a227923,0xc424f46c,0xdd92d964,0x7303ffde,0x71b5abf2,0xe9712878,0xf815561d,0x8f48a632,0xd3c055d1,0x85f48ff5,0x7525684f,0x222a1427,0x67360cc3,0xd0d841a0 +.long 0x0b9267c6,0x4245a926,0xcf07f863,0xc78913f1,0x4d0d9e24,0xaa844c8e,0x3d5f9017,0xa42ad522,0xa2c989d5,0xbd371749,0xe1f5e78e,0x928292df,0x0a1ea6da,0x493b383e,0x13aee529,0x5136fd8d +.long 0xf2c34a99,0x860c44b1,0xbf5855ac,0x3b00aca4,0xfaaf37be,0xabf6aaa0,0x2a53ec08,0x65f43682,0xa11b12e1,0x1d9a5801,0xe20ed475,0x78a7ab2c,0x9a41e0d5,0x0de1067e,0x305023ea,0x30473f5f +.long 0x169c7d97,0xdd3ae09d,0xcfaef9cd,0x5cd5baa4,0x65a44803,0x5cd7440b,0x47f364de,0xdc13966a,0x2b8357c1,0x077b2be8,0xe9d57c2a,0x0cb1b4c5,0x05ff363e,0x7a4ceb32,0xca35a9ef,0xf310fa4d +.long 0xf97f68c6,0xdbb7b352,0x0b02cf58,0x0c773b50,0x3c1f96d9,0xea2e4821,0xeee01815,0xffb357b0,0xe0f28039,0xb9c924cd,0x46a3fbe4,0x0b36c95a,0x5e46db6c,0x1faaaea4,0x1928aaff,0xcae575c3 +.long 0xa70dab86,0x7f671302,0x71c58cfc,0xfcbd12a9,0xbee0cb92,0xcbef9acf,0xf8c1b583,0x573da0b9,0x0d41d550,0x4752fcfe,0x2155cffe,0xe7eec0e3,0x545ae248,0x0fc39fcb,0x8065f44e,0x522cb8d1 +.long 0x70cbb96c,0x263c962a,0xbcd124a9,0xe034362a,0x3c2ae58d,0xf120db28,0xfef6d507,0xb9a38d49,0x1ff140fd,0xb1fd2a82,0x20aee7e0,0xbd162f30,0xcb251949,0x4e17a5d4,0x4f7e1c3d,0x2aebcb83 +.long 0x937b0527,0x608eb25f,0xeb7d9997,0xf42e1e47,0xb8a53a29,0xeba699c4,0xe091b536,0x1f921c71,0x5b26bbd5,0xcce29e7b,0x3b61a680,0x7a8ef5ed,0xba1f1c7e,0xe5ef8043,0x18158dda,0x16ea8217 +.long 0x599ff0f9,0x01778a2b,0x8104fc6b,0x68a923d7,0xda694ff3,0x5bfa44df,0xf7667f12,0x4f7199db,0xe46f2a79,0xc06d8ff6,0xe9f8131d,0x08b5dead,0xabb4ce7c,0x02519a59,0xb42aec3e,0xc4f710bc +.long 0x78bde41a,0x3d77b057,0xb4186b5a,0x6474bf80,0x88c65741,0x048b3f67,0x03c7c154,0xc64519de,0x0edfcc4f,0xdf073846,0x48f1aa6b,0x319aa737,0xca909f77,0x8b9f8a02,0x7580bfef,0x90258139 +.long 0xc0c22719,0xd8bfd3ca,0xc9ca151e,0xc60209e4,0xd9a1a69c,0x7a744ab5,0x14937f8f,0x6de5048b,0xe115ac04,0x171938d8,0x1c6b16d2,0x7df70940,0x7f8e94e7,0xa6aeb663,0x2a2cf094,0xc130388e +.long 0x77f54e6e,0x1850be84,0x65d60fe5,0x9f258a72,0x6c9146d6,0xff7ff0c0,0xe63a830b,0x039aaf90,0x9460342f,0x38f27a73,0x3f795f8a,0x4703148c,0x9681a97e,0x1bb5467b,0xecaeb594,0x00931ba5 +.long 0x786f337c,0xcdb6719d,0xe704397d,0xd9c01cd2,0x555c2fef,0x0f4a3f20,0x7c0af223,0x00452509,0x84db8e76,0x54a58047,0x93c8aa06,0x3bacf1aa,0xf7919422,0x11ca957c,0x78cdaa40,0x50641053 +.long 0x9f7144ae,0x7a303874,0x43d4acfd,0x170c963f,0x58ddd3ef,0x5e148149,0x9e72dba8,0xa7bde582,0x6fa68750,0x0769da8b,0x572e0249,0xfa64e532,0x2619ad31,0xfcaadf9d,0xa7b349cd,0x87882daa +.long 0x6c67a775,0x9f6eb731,0xefc5d0b1,0xcb10471a,0xe1b806b2,0xb433750c,0x57b1ae7e,0x19c5714d,0xed03fd3f,0xc0dc8b7b,0x31bc194e,0xdd03344f,0x8c6320b5,0xa66c52a7,0xd0b6fd93,0x8bc82ce3 +.long 0xb35f1341,0xf8e13501,0x25a43e42,0xe53156dd,0x4daeb85c,0xd3adf27e,0xbbeddeb5,0xb81d8379,0x2e435867,0x1b0b546e,0xeba5dd60,0x9020eb94,0x8210cb9d,0x37d91161,0x5c91f1cf,0x4c596b31 +.long 0x0e0b040d,0xb228a90f,0x45ff897f,0xbaf02d82,0x00fa6122,0x2aac79e6,0x8e36f557,0x24828817,0x113ec356,0xb9521d31,0x15eff1f8,0x9e48861e,0xe0d41715,0x2aa1d412,0x53f131b8,0x71f86203 +.long 0x3fd19408,0xf60da8da,0x278d9d99,0x4aa716dc,0xa8c51c90,0x394531f7,0xf59db51c,0xb560b0e8,0xfa34bdad,0xa28fc992,0x9cd4f8bd,0xf024fa14,0x23a9d0d3,0x5cf530f7,0xe28c9b56,0x615ca193 +.long 0x6f73c51e,0x6d2a483d,0xea0dc2dd,0xa4cb2412,0x1eb917ff,0x50663c41,0xeade299e,0x3d3a74cf,0x4a7a9202,0x29b3990f,0xa7b15c3d,0xa9bccf59,0xa5df9208,0x66a3ccdc,0x43f2f929,0x48027c14 +.long 0x40b557f0,0xd385377c,0xcd684660,0xe001c366,0xe2183a27,0x1b18ed6b,0x63210329,0x879738d8,0xbda94882,0xa687c74b,0xa684b299,0xd1bbcc48,0x863b3724,0xaf6f1112,0x2c8ce9f8,0x6943d1b4 +.long 0x098cafb4,0xe044a3bb,0x60d48caf,0x27ed2310,0x3a31b84d,0x542b5675,0xfcddbed7,0xcbf3dd50,0x41b1d830,0x25031f16,0xcb0c1e27,0xa7ec851d,0xb5ae75db,0xac1c8fe0,0x08c52120,0xb24c7557 +.long 0x1d4636c3,0x57f811dc,0x681a9939,0xf8436526,0x9c81adb3,0x1f6bc6d9,0x5b7d80d4,0x840f8ac3,0xf4387f1a,0x731a9811,0xb5156880,0x7c501cd3,0xdfe68867,0xa5ca4a07,0x5fcea120,0xf123d8f0 +.long 0xd607039e,0x1fbb0e71,0xcd3a4546,0x2b70e215,0x53324091,0x32d2f01d,0x180ab19b,0xb796ff08,0x3c57c4aa,0x32d87a86,0xb7c49a27,0x2aed9caf,0x31630d98,0x9fb35eac,0x5c3e20a3,0x338e8cdf +.long 0x66cde8db,0x80f16182,0x2d72fd36,0x4e159980,0x9b6e5072,0xd7b8f13b,0x3b7b5dc1,0xf5213907,0x8ce4396e,0x4d431f1d,0xa7ed2142,0x37a1a680,0xd01aaf6b,0xbf375696,0xe63aab66,0xaa1c0c54 +.long 0x4ed80940,0x3014368b,0x7a6fcedd,0x67e6d056,0xca97579f,0x7c208c49,0xa23597f6,0xfe3d7a81,0x7e096ae2,0x5e203202,0x24b39366,0xb1f3e1e7,0x2fdcdffc,0x26da26f3,0x6097be83,0x79422f1d +.long 0x9db3b381,0x263a2cfb,0xd4df0a4b,0x9c3a2dee,0x7d04e61f,0x728d06e9,0x42449325,0x8b1adfbc,0x7e053a1b,0x6ec1d939,0x66daf707,0xee2be5c7,0x810ac7ab,0x80ba1e14,0xf530f174,0xdd2ae778 +.long 0x205b9d8b,0x0435d97a,0x056756d4,0x6eb8f064,0xb6f8210e,0xd5e88a8b,0xec9fd9ea,0x070ef12d,0x3bcc876a,0x4d849505,0xa7404ce3,0x12a75338,0xb8a1db5e,0xd22b49e1,0x14bfa5ad,0xec1f2051 +.long 0xb6828f36,0xadbaeb79,0x01bd5b9e,0x9d7a0258,0x1e844b0c,0xeda01e0d,0x887edfc9,0x4b625175,0x9669b621,0x14109fdd,0xf6f87b98,0x88a2ca56,0x170df6bc,0xfe2eb788,0xffa473f9,0x0cea06f4 +.long 0xc4e83d33,0x43ed81b5,0x5efd488b,0xd9f35879,0x9deb4d0f,0x164a620f,0xac6a7394,0xc6927bdb,0x9f9e0f03,0x45c28df7,0xfcd7e1a9,0x2868661e,0xffa348f1,0x7cf4e8d0,0x398538e0,0x6bd4c284 +.long 0x289a8619,0x2618a091,0x6671b173,0xef796e60,0x9090c632,0x664e46e5,0x1e66f8fb,0xa38062d4,0x0573274e,0x6c744a20,0xa9271394,0xd07b67e4,0x6bdc0e20,0x391223b2,0xeb0a05a7,0xbe2d93f1 +.long 0x3f36d141,0xf23e2e53,0x4dfca442,0xe84bb3d4,0x6b7c023a,0xb804a48d,0x76431c3b,0x1e16a8fa,0xddd472e0,0x1b5452ad,0x0d1ee127,0x7d405ee7,0xffa27599,0x50fc6f1d,0xbf391b35,0x351ac53c +.long 0x4444896b,0x7efa14b8,0xf94027fb,0x64974d2f,0xde84487d,0xefdcd0e8,0x2b48989b,0x8c45b260,0xd8463487,0xa8fcbbc2,0x3fbc476c,0xd1b2b3f7,0xc8f443c0,0x21d005b7,0x40c0139c,0x518f2e67 +.long 0x06d75fc1,0x56036e8c,0x3249a89f,0x2dcf7bb7,0xe245e7dd,0x81dd1d3d,0xebd6e2a7,0xf578dc4b,0xdf2ce7a0,0x4c028903,0x9c39afac,0xaee36288,0x146404ab,0xdc847c31,0xa4e97818,0x6304c0d8 +.long 0xa91f6791,0xae51dca2,0x9baa9efc,0x2abe4190,0x559c7ac1,0xd9d2e2f4,0xfc9f773a,0xe82f4b51,0x4073e81c,0xa7713027,0xfbb596fc,0xc0276fac,0xa684f70c,0x1d819fc9,0xc9f7b1e0,0x29b47fdd +.long 0x459b1940,0x358de103,0x5b013e93,0xec881c59,0x49532ad3,0x51574c93,0xb37b46de,0x2db1d445,0xdf239fd8,0xc6445b87,0x151d24ee,0xc718af75,0xf43c6259,0xaea1c4a4,0x70be02f7,0x40c0e5d7 +.long 0x721b33f2,0x6a4590f4,0xfedf04ea,0x2124f1fb,0x9745efe7,0xf8e53cde,0x65f046d9,0xe7e10432,0xe4d0c7e6,0xc3fca28e,0x87253b1b,0x847e339a,0x3743e643,0x9b595348,0x4fd12fc5,0xcb6a0a0b +.long 0x27d02dcc,0xfb6836c3,0x7a68bcc2,0x5ad00982,0x005e912d,0x1b24b44c,0x811fdcfe,0xcc83d20f,0x666fba0c,0x36527ec1,0x14754635,0x69948197,0x556da9c2,0xfcdcb1a8,0x81a732b2,0xa5934267 +.long 0xa714181d,0xec1214ed,0x6067b341,0x609ac13b,0xa545df1f,0xff4b4c97,0x34d2076b,0xa1240501,0x1409ca97,0x6efa0c23,0x20638c43,0x254cc1a8,0xdcfb46cd,0xd4e363af,0x03942a27,0x62c2adc3 +.long 0x56e46483,0xc67b9df0,0x63736356,0xa55abb20,0xc551bc52,0xab93c098,0xb15fe64b,0x382b49f9,0x4dff8d47,0x9ec221ad,0x437df4d6,0x79caf615,0xbb456509,0x5f13dc64,0x191f0714,0xe4c589d9 +.long 0x3fd40e09,0x27b6a8ab,0x77313ea9,0xe455842e,0x1f55988b,0x8b51d1e2,0x062bbbfc,0x5716dd73,0x4e8bf3de,0x633c11e5,0x1b85be3b,0x9a0e77b6,0x0911cca6,0x56510729,0xefa6590f,0x27e76495 +.long 0x070d3aab,0xe4ac8b33,0x9a2cd5e5,0x2643672b,0x1cfc9173,0x52eff79b,0x90a7c13f,0x665ca49b,0xb3efb998,0x5a8dda59,0x052f1341,0x8a5b922d,0x3cf9a530,0xae9ebbab,0xf56da4d7,0x35986e7b +.long 0xff3513cc,0x3a636b5c,0x3198f7dd,0xbb0cf8ba,0x41f16f86,0xb8d40522,0xde13a7bf,0x760575d8,0x9f7aa181,0x36f74e16,0xf509ed1c,0x163a3ecf,0x3c40a491,0x6aead61f,0xdfe8fcaa,0x158c95fc +.long 0x13cda46f,0xa3991b6e,0x342faed0,0x79482415,0x666b5970,0xf3ba5bde,0xb26ab6dd,0x1d52e6bc,0x8608dd3d,0x768ba1e7,0xea076586,0x4930db2a,0xe7dc1afa,0xd9575714,0xf7c58817,0x1fc7bf7d +.long 0xd9eee96c,0x6b47accd,0xe58cec37,0x0ca277fb,0xe702c42a,0x113fe413,0xc47cbe51,0xdd1764ee,0x7b3ed739,0x041e7cde,0x5ce9e1c0,0x50cb7459,0x2925b212,0x35568513,0x001b081c,0x7cff95c4 +.long 0x8088b454,0x63ee4cbd,0x9a9e0c8a,0xdb7f32f7,0x6b2447cb,0xb377d418,0xd370219b,0xe3e982aa,0xc2a2a593,0x06ccc1e4,0x0773f24f,0x72c36865,0x95859423,0xa13b4da7,0x75040c8f,0x8bbf1d33 +.long 0xda50c991,0x726f0973,0x822d6ee2,0x48afcd5b,0x20fd7771,0xe5fc718b,0xfd0807a1,0xb9e8e77d,0x99a7703d,0x7f5e0f44,0x618e36f3,0x6972930e,0x23807bbe,0x2b7c77b8,0xcb27ff50,0xe5b82405 +.long 0xbd379062,0xba8b8be3,0x2dce4a92,0xd64b7a1d,0xb2952e37,0x040a73c5,0xd438aeca,0x0a9e252e,0xc39d3bcb,0xdd43956b,0xb32b2d63,0x1a31ca00,0x5c417a18,0xd67133b8,0x2ef442c8,0xd08e4790 +.long 0x255c0980,0x98cb1ae9,0x2b4a739f,0x4bd86381,0x1e4a45a1,0x5a5c31e1,0x9cb0db2f,0x1e5d55fe,0x8ff5cc29,0x74661b06,0x0eb8a4f4,0x026b389f,0x58848c24,0x536b21a4,0x81dc72b0,0x2e5bf8ec +.long 0xad886aac,0x03c187d0,0xb771b645,0x5c16878a,0xc74045ab,0xb07dfc6f,0x7800caed,0x2c6360bf,0xb9c972a3,0x24295bb5,0x7c9a6dba,0xc9e6f88e,0x92a79aa6,0x90ffbf24,0x41c26ac2,0xde29d50a +.long 0xd309cbe6,0x9f0af483,0xe0bced4f,0x5b020d8a,0xb38023e3,0x606e986d,0x1abc6933,0xad8f2c9d,0xe7400e93,0x19292e1d,0x52be5e4d,0xfe3e18a9,0x2e0680bf,0xe8e9771d,0xc54db063,0x8c5bec98 +.long 0x74a55d1f,0x2af9662a,0x046f66d8,0xe3fbf28f,0xd4dc4794,0xa3a72ab4,0x5c7c2dd8,0x09779f45,0xc3d19d8d,0xd893bdaf,0x57d6a6df,0xd5a75094,0x952e6255,0x8cf8fef9,0xda9a8aff,0x3da67cfb +.long 0x2c160dcd,0x4c23f62a,0x8f90eaef,0x34e6c5e3,0xa9a65d5a,0x35865519,0x8fd38a3d,0x07c48aae,0x50068527,0xb7e7aeda,0x1c90936a,0x2c09ef23,0xe879324c,0x31ecfeb6,0xfb0ec938,0xa0871f6b +.long 0xd84d835d,0xb1f0fb68,0x861dc1e6,0xc90caf39,0x7594f8d7,0x12e5b046,0x65012b92,0x26897ae2,0xa4d6755d,0xbcf68a08,0x0991fbda,0x403ee41c,0x3bbf17e8,0x733e343e,0x679b3d65,0xd2c7980d +.long 0xd2e11305,0x33056232,0xf3c07a6f,0x966be492,0xbb15509d,0x6a8878ff,0x0a9b59a4,0xff221101,0xabe30129,0x6c9f564a,0x336e64cf,0xc6f2c940,0x8b0c8022,0x0fe75262,0x6ae8db87,0xbe0267e9 +.long 0x93bc042b,0x22e192f1,0xb237c458,0xf085b534,0x832c4168,0xa0d192bd,0xbdf6271d,0x7a76e9e3,0xb88911b5,0x52a882fa,0xb4db0eb5,0xc85345e4,0x81a7c3ff,0xa3be02a6,0xf0ec0469,0x51889c8c +.long 0xa5e829e5,0x9d031369,0x1607aa41,0xcbb4c6fc,0x241d84c1,0x75ac59a6,0x8829e0ee,0xc043f2bf,0x8ea5e185,0x82a38f75,0xd87cbd9f,0x8bda40b9,0x2d8fc601,0x9e65e75e,0xa35690b3,0x3d515f74 +.long 0xda79e5ac,0x534acf4f,0x8630215f,0x68b83b3a,0xd085756e,0x5c748b2e,0xe5d37cb2,0xb0317258,0xc5ccc2c4,0x6735841a,0x3d9d5069,0x7d7dc96b,0xfd1754bd,0xa147e410,0xd399ddd5,0x65296e94 +.long 0xbc8fa5bc,0xf6b5b2d0,0x500c277b,0x8a5ead67,0xdfa08a5d,0x214625e6,0x959cf047,0x51fdfedc,0x289fca32,0x6bc9430b,0x9d9bdc3f,0xe36ff0cf,0x58ea0ede,0x2fe187cb,0x5a900b3f,0xed66af20 +.long 0x5fa9f4d6,0x00e0968b,0x37a362e7,0x2d4066ce,0xbd07e772,0xa99a9748,0x06a4f1d0,0x710989c0,0xce40cbd8,0xd5dedf35,0x1743293d,0xab55c5f0,0x8aa24e2c,0x766f1144,0x605fbcb4,0x94d874f8 +.long 0xa518001b,0xa365f0e8,0x9d04ef0f,0xee605eb6,0xba8d4d25,0x5a3915cd,0xb5113472,0x44c0e1b8,0x8b6740dc,0xcbb024e8,0xee1d4f0c,0x89087a53,0x1fc4e372,0xa88fa05c,0xaf8b3af2,0x8bf395cb +.long 0xdeb8568b,0x1e71c9a1,0x80fb3d32,0xa35daea0,0x2cf8fb81,0xe8b6f266,0x9490696a,0x6d51afe8,0x51803a19,0x81beac6e,0x86219080,0xe3d24b7f,0xdf6f463c,0x727cfd9d,0x72284ee8,0x8c6865ca +.long 0xb743f4ef,0x32c88b7d,0xe7d11dce,0x3793909b,0x2ff2ebe8,0xd398f922,0xe5e49796,0x2c70ca44,0xcb1131b1,0xdf4d9929,0x25888e79,0x7826f298,0xf1d8740a,0x4d3a112c,0x270afa8b,0x00384cb6 +.long 0x3ab48095,0xcb64125b,0x62d05106,0x3451c256,0xa4955845,0xd73d577d,0xbf9f4433,0x39570c16,0xadecf263,0xd7dfaad3,0xdc76e102,0xf1c3d8d1,0x54c6a836,0x5e774a58,0x3e92d47b,0xdad4b672 +.long 0xf0d796a0,0xbe7e990f,0xdf0e8b02,0x5fc62478,0x030c00ad,0x8aae8bf4,0x9004ba0f,0x3d2db93b,0xd85d5ddc,0xe48c8a79,0x6bb07f34,0xe907caa7,0xa39eaed5,0x58db343a,0xadaf5724,0x0ea6e007 +.long 0xd23233f3,0xe00df169,0x77cb637f,0x3e322796,0x1da0cf6c,0x1f897c0e,0x31d6bbdd,0xa651f5d8,0x1a230c76,0xdd61af19,0xcdaa5e4a,0xbd527272,0xd0abcd7e,0xca753636,0x370bd8dc,0x78bdd37c +.long 0x17cd93fe,0xc23916c2,0xdadce6e2,0x65b97a4d,0x174e42f8,0xe04ed4eb,0xbb21480a,0x1491ccaa,0x23196332,0x145a8280,0x587b479a,0x3c3862d7,0x01dcd0ed,0x9f4a88a3,0x3ea12f1f,0x4da2b7ef +.long 0xb126e48e,0xf8e7ae33,0xf494e237,0x404a0b32,0xc55acadb,0x9beac474,0xcbec9fd9,0x4ee5cf3b,0x7df3c8c3,0x336b33b9,0xb76808fd,0xbd905fe3,0xaa45c16a,0x8f436981,0x3dd27b62,0x255c5bfa +.long 0xc3dd9b4d,0x71965cbf,0xfc068a87,0xce23edbf,0x745b029b,0xb78d4725,0xcefdd9bd,0x74610713,0x1266bf52,0x7116f75f,0x18e49bb6,0x02046722,0x3d6f19e3,0xdf43df9f,0xe685cb2f,0xef1bc7d0 +.long 0x7078c432,0xcddb27c1,0xb77fedb7,0xe1961b9c,0xc2290570,0x1edc2f5c,0x19cbd886,0x2c3fefca,0xc2af389a,0xcf880a36,0xbda71cea,0x96c610fd,0x32aa8463,0xf03977a9,0x8586d90a,0x8eb7763f +.long 0x2a296e77,0x3f342454,0x42837a35,0xc8718683,0x6a09c731,0x7dc71090,0x51b816db,0x54778ffb,0xaf06defd,0x6b33bfec,0x8592b70b,0xfe3c105f,0x61da6114,0xf937fda4,0x4c266ad7,0x3c13e651 +.long 0x855938e8,0xe363a829,0x9de54b72,0x2eeb5d9e,0x20ccfab9,0xbeb93b0e,0x25e61a25,0x3dffbb5f,0x1acc093d,0x7f655e43,0x3964ce61,0x0cb6cc3d,0xe5e9b460,0x6ab283a1,0xa1c7e72d,0x55d787c5 +.long 0xdeadbf02,0x4d2efd47,0xac459068,0x11e80219,0x71f311f0,0x810c7626,0x4ab6ef53,0xfa17ef8d,0x93e43bff,0xaf47fd25,0x0be40632,0x5cb5ff3f,0x8ee61da3,0x54687106,0xb08afd0f,0x7764196e +.long 0xf0290a8f,0x831ab3ed,0xcb47c387,0xcae81966,0x184efb4f,0xaad7dece,0x4749110e,0xdcfc53b3,0x4cb632f9,0x6698f23c,0xb91f8067,0xc42a1ad6,0x6284180a,0xb116a81d,0xe901326f,0xebedf5f8 +.long 0x97e3e044,0xf2274c9f,0x11d09fc9,0x42018520,0xd18e6e23,0x56a65f17,0x352b683c,0x2ea61e2a,0x575eaa94,0x27d291bc,0xb8ff522d,0x9e7bc721,0xa7f04d6f,0x5f7268bf,0xaba41748,0x5868c73f +.long 0x7be0eead,0x9f85c2db,0xff719135,0x511e7842,0xc5ea90d7,0x5a06b1e9,0x26fab631,0x0c19e283,0xe9206c55,0x8af8f0cf,0x3553c06a,0x89389cb4,0xf65f8004,0x39dbed97,0xc508991d,0x0621b037 +.long 0x96e78cc4,0x1c52e635,0x0c06b4a8,0x5385c8b2,0xb0e87d03,0xd84ddfdb,0x934bafad,0xc49dfb66,0x59f70772,0x7071e170,0x3a1db56b,0x3a073a84,0x3b8af190,0x03494903,0xd32920f0,0x7d882de3 +.long 0xb2cf8940,0x91633f0a,0x6f948f51,0x72b0b178,0x782653c8,0x2d28dc30,0xdb903a05,0x88829849,0x6a19d2bb,0xb8095d0c,0x86f782cb,0x4b9e7f0c,0x2d907064,0x7af73988,0x8b32643c,0xd12be0fe +.long 0x0e165dc3,0x358ed23d,0x4e2378ce,0x3d47ce62,0xfeb8a087,0x7e2bb0b9,0xe29e10b9,0x3246e8ae,0x03ce2b4d,0x459f4ec7,0xbbc077cf,0xe9b4ca1b,0x0e9940c1,0x2613b4f2,0x047d1eb1,0xfc598bb9 +.long 0x45036099,0x9744c62b,0x167c65d8,0xa9dee742,0xdabe1943,0x0c511525,0x93c6c624,0xda110554,0x651a3be2,0xae00a52c,0x884449a6,0xcda5111d,0xff33bed1,0x063c06f4,0x0d3d76b4,0x73baaf9a +.long 0x7fc63668,0x52fb0c9d,0x0c039cde,0x6886c9dd,0x55b22351,0x602bd599,0x360c7c13,0xb00cab02,0x81b69442,0x8cb616bc,0xb55c3cee,0x41486700,0xf49ba278,0x71093281,0x64a50710,0xad956d9c +.long 0x638a7e81,0x9561f28b,0x5980ddc3,0x54155cdf,0xd26f247a,0xb2db4a96,0x4787d100,0x9d774e4e,0x078637d2,0x1a9e6e2e,0x5e0ae06a,0x1c363e2d,0xe9cfa354,0x7493483e,0x7f74b98d,0x76843cb3 +.long 0xd4b66947,0xbaca6591,0x04460a8c,0xb452ce98,0x43768f55,0x6830d246,0x7dff12df,0xf4197ed8,0x400dd0f7,0x6521b472,0x4b1e7093,0x59f5ca8f,0x080338ae,0x6feff11b,0xa29ca3c6,0x0ada31f6 +.long 0x94a2c215,0x24794eb6,0x05a57ab4,0xd83a43ab,0x2a6f89fe,0x264a543a,0xdd5ec7c2,0x2c2a3868,0x8439d9b2,0xd3373940,0x0acd1f11,0x715ea672,0xe7e6cc19,0x42c1d235,0xb990585c,0x81ce6e96 +.long 0xd809c7bd,0x04e5dfe0,0x8f1050ab,0xd7b2580c,0xd8a4176f,0x6d91ad78,0x4e2e897c,0x0af556ee,0x921de0ac,0x162a8b73,0x7ea78400,0x52ac9c22,0xefce2174,0xee2a4eea,0x6d637f79,0xbe61844e +.long 0x789a283b,0x0491f1bc,0x880836f4,0x72d3ac3d,0x88e5402d,0xaa1c5ea3,0xd5cc473d,0x1b192421,0x9dc84cac,0x5c0b9998,0x9c6e75b8,0xb0a8482d,0x3a191ce2,0x639961d0,0x6d837930,0xda3bc865 +.long 0x056e6f8f,0xca990653,0x64d133a7,0x84861c41,0x746abe40,0x8b403276,0xebf8e303,0xb7b4d51a,0x220a255d,0x05b43211,0x02419e6e,0xc997152c,0x630c2fea,0x76ff47b6,0x281fdade,0x50518677 +.long 0xcf902b0b,0x3283b8ba,0x37db303b,0x8d4b4eb5,0x755011bc,0xcc89f42d,0xdd09d19b,0xb43d74bb,0x8adba350,0x65746bc9,0xb51c1927,0x364eaf8c,0x10ad72ec,0x13c76596,0xf8d40c20,0x30045121 +.long 0xea7b979b,0x6d2d99b7,0xe6fb3bcd,0xcd78cd74,0x86cffbfe,0x11e45a9e,0x637024f6,0x78a61cf4,0x3d502295,0xd06bc872,0x458cb288,0xf1376854,0x342f8586,0xb9db26a1,0x4beee09e,0xf33effcf +.long 0xb30cfb3a,0xd7e0c4cd,0x6c9db4c8,0x6d09b8c1,0x07c8d9df,0x40ba1a42,0x1c52c66d,0x6fd495f7,0x275264da,0xfb0e169f,0xe57d8362,0x80c2b746,0x49ad7222,0xedd987f7,0x4398ec7b,0xfdc229af +.long 0x52666a58,0xb0d1ed84,0xe6a9c3c2,0x4bcb6e00,0x26906408,0x3c57411c,0x13556400,0xcfc20755,0x5294dba3,0xa08b1c50,0x8b7dd31e,0xa30ba286,0x991eca74,0xd70ba90e,0xe762c2b9,0x094e142c +.long 0x979f3925,0xb81d783e,0xaf4c89a7,0x1efd130a,0xfd1bf7fa,0x525c2144,0x1b265a9e,0x4b296904,0xb9db65b6,0xed8e9634,0x03599d8a,0x35c82e32,0x403563f3,0xdaa7a54f,0x022c38ab,0x9df088ad +.long 0xbb3fd30a,0xe5cfb066,0xeff0354e,0x429169da,0x3524e36c,0x809cf852,0x0155be1d,0x136f4fb3,0x1fbba712,0x4826af01,0x506ba1a1,0x6ef0f0b4,0x77aea73e,0xd9928b31,0x5eaa244e,0xe2bf6af2 +.long 0x4237b64b,0x8d084f12,0xe3ecfd07,0x688ebe99,0xf6845dd8,0x57b8a70c,0x5da4a325,0x808fc59c,0xa3585862,0xa9032b2b,0xedf29386,0xb66825d5,0x431ec29b,0xb5a5a8db,0x3a1e8dc8,0xbb143a98 +.long 0x12ae381b,0x35ee94ce,0x86ccda90,0x3a7f176c,0x4606eaca,0xc63a657e,0x43cd04df,0x9ae5a380,0xed251b46,0x9bec8d15,0xcaca5e64,0x1f5d6d30,0x9ff20f07,0x347b3b35,0xf7e4b286,0x4d65f034 +.long 0xf111661e,0x9e93ba24,0xb105eb04,0xedced484,0xf424b578,0x96dc9ba1,0xe83e9069,0xbf8f66b7,0xd7ed8216,0x872d4df4,0x8e2cbecf,0xbf07f377,0x98e73754,0x4281d899,0x8aab8708,0xfec85fbb +.long 0xa5ba5b0b,0x9a3c0dee,0x42d05299,0xe6a116ce,0xe9b02d42,0xae9775fe,0xa1545cb6,0x72b05200,0x31a3b4ea,0xbc506f7d,0x8bbd9b32,0xe5893078,0xe4b12a97,0xc8bc5f37,0x4a73b671,0x6b000c06 +.long 0x765fa7d0,0x13b5bf22,0x1d6a5370,0x59805bf0,0x4280db98,0x67a5e29d,0x776b1ce3,0x4f53916f,0x33ddf626,0x714ff61f,0xa085d103,0x4206238e,0xe5809ee3,0x1c50d4b7,0x85f8eb1d,0x999f450d +.long 0xe4c79e9b,0x658a6051,0xc66a9fea,0x1394cb73,0xc6be7b23,0x27f31ed5,0x5aa6f8fe,0xf4c88f36,0x4aaa499e,0x0fb0721f,0xe3fb2a6b,0x68b3a7d5,0x3a92851d,0xa788097d,0xe96f4913,0x060e7f8a +.long 0x1a3a93bc,0x82eebe73,0xa21adc1a,0x42bbf465,0xef030efd,0xc10b6fa4,0x87b097bb,0x247aa4c7,0xf60c77da,0x8b8dc632,0xc223523e,0x6ffbc26a,0x344579cf,0xa4f6ff11,0x980250f6,0x5825653c +.long 0xbc1aa2b9,0xb2dd097e,0x37a0333a,0x07889393,0x37a0db38,0x1cf55e71,0x792c1613,0x2648487f,0x3fcef261,0xdad01336,0x0eabf129,0x6239c81d,0x9d276be2,0x8ee761de,0x1eda6ad3,0x406a7a34 +.long 0x4a493b31,0x4bf367ba,0x9bf7f026,0x54f20a52,0x9795914b,0xb696e062,0x8bf236ac,0xcddab96d,0xed25ea13,0x4ff2c70a,0x81cbbbe7,0xfa1d09eb,0x468544c5,0x88fc8c87,0x696b3317,0x847a670d +.long 0x64bcb626,0xf133421e,0x26dee0b5,0xaea638c8,0xb310346c,0xd6e7680b,0xd5d4ced3,0xe06f4097,0x7512a30b,0x09961452,0xe589a59a,0xf3d867fd,0x52d0c180,0x2e73254f,0x333c74ac,0x9063d8a3 +.long 0xd314e7bc,0xeda6c595,0x467899ed,0x2ee7464b,0x0a1ed5d3,0x1cef423c,0x69cc7613,0x217e76ea,0xe7cda917,0x27ccce1f,0x8a893f16,0x12d8016b,0x9fc74f6b,0xbcd6de84,0xf3144e61,0xfa5817e2 +.long 0x0821ee4c,0x1f354164,0x0bc61992,0x1583eab4,0x1d72879f,0x7490caf6,0xf76ae7b2,0x998ad9f3,0xa41157f7,0x1e181950,0xe8da3a7e,0xa9d7e1e6,0x8426b95f,0x963784eb,0x542e2a10,0x0ee4ed6e +.long 0xac751e7b,0xb79d4cc5,0xfd4211bd,0x93f96472,0xc8de4fc6,0x8c72d3d2,0xdf44f064,0x7b69cbf5,0xf4bf94e1,0x3da90ca2,0xf12894e2,0x1a5325f8,0x7917d60b,0x0a437f6c,0x96c9cb5d,0x9be70486 +.long 0xe1dc5c05,0xb4d880bf,0xeebeeb57,0xd738adda,0xdf0fe6a3,0x6f0119d3,0x66eaaf5a,0x5c686e55,0xdfd0b7ec,0x9cb10b50,0x6a497c21,0xbdd0264b,0x8c546c96,0xfc093514,0x79dbf42a,0x58a947fa +.long 0x49ccd6d7,0xc0b48d4e,0x88bd5580,0xff8fb02c,0x07d473b2,0xc75235e9,0xa2188af3,0x4fab1ac5,0x97576ec0,0x030fa3bc,0x0b7e7d2f,0xe8c946e8,0x70305600,0x40a5c9cc,0xc8b013b4,0x6d8260a9 +.long 0x70bba85c,0x0368304f,0xa4a0d311,0xad090da1,0x2415eec1,0x7170e870,0x8461ea47,0xbfba35fe,0xc1e91938,0x6279019a,0x1afc415f,0xa47638f3,0xbcba0e0f,0x36c65cbb,0x034e2c48,0x02160efb +.long 0x615cd9e4,0xe6c51073,0xf1243c06,0x498ec047,0xb17b3d8c,0x3e5a8809,0x0cc565f1,0x5cd99e61,0x7851dafe,0x81e312df,0xa79061e2,0xf156f5ba,0x880c590e,0x80d62b71,0x0a39faa1,0xbec9746f +.long 0xc8ed1f7a,0x1d98a9c1,0xa81d5ff2,0x09e43bb5,0x0da0794a,0xd5f00f68,0x661aa836,0x412050d9,0x90747e40,0xa89f7c4e,0xb62a3686,0x6dc05ebb,0x308e3353,0xdf4de847,0x9fb53bb9,0x53868fbb +.long 0xcfdcf7dd,0x2b09d2c3,0x723fcab4,0x41a9fce3,0x07f57ca3,0x73d905f7,0xac8e1555,0x080f9fb1,0x9ba7a531,0x7c088e84,0xed9a147f,0x07d35586,0xaf48c336,0x602846ab,0x0ccf0e79,0x7320fd32 +.long 0xb18bd1ff,0xaa780798,0xafdd2905,0x52c2e300,0x434267cd,0xf27ea3d6,0x15605b5f,0x8b96d16d,0x4b45706b,0x7bb31049,0x743d25f8,0xe7f58b8e,0x87f30076,0xe9b5e45b,0x5d053d5a,0xd19448d6 +.long 0xd3210a04,0x1ecc8cb9,0xdafb5269,0x6bc7d463,0x67c3489f,0x3e59b10a,0x65641e1b,0x1769788c,0xbd6cb838,0x8a53b82d,0x236d5f22,0x7066d6e6,0x6908536e,0x03aa1c61,0x66ae9809,0xc971da0d +.long 0xc49a2fac,0x01b3a86b,0x3092e77a,0x3b8420c0,0x7d6fb556,0x02057300,0xbff40a87,0x6941b2a1,0x0658ff2a,0x140b6308,0x3424ab36,0x87804363,0x5751e299,0x0253bd51,0x449c3e3a,0xc75bcd76 +.long 0x7f8f875d,0x92eb4090,0x56c26bbf,0x9c9d754e,0x8110bbe7,0x158cea61,0x745f91ea,0x62a6b802,0xc6e7394b,0xa79c41aa,0xad57ef10,0x445b6a83,0x6ea6f40c,0x0c5277eb,0x88633365,0x319fe96b +.long 0x385f63cb,0x0b0fc61f,0x22bdd127,0x41250c84,0x09e942c2,0x67d153f1,0xc021ad5d,0x60920d08,0x724d81a5,0x229f5746,0x5bba3299,0xb7ffb892,0xde413032,0x518c51a1,0x3c2fd94c,0x2a9bfe77 +.long 0x3191f4fd,0xcbcde239,0xd3d6ada1,0x43093e16,0x58769606,0x184579f3,0xd236625c,0x2c94a8b3,0x5c437d8e,0x6922b9c0,0xd8d9f3c8,0x3d4ae423,0x2e7090a2,0xf72c31c1,0xd76a55bd,0x4ac3f5f3 +.long 0x6b6af991,0x342508fc,0x1b5cebbd,0x0d527100,0xdd440dd7,0xb84740d0,0x780162fd,0x748ef841,0xdfc6fafb,0xa8dbfe0e,0xf7300f27,0xeadfdf05,0xfeba4ec9,0x7d06555f,0x9e25fa97,0x12c56f83 +.long 0xd39b8c34,0x77f84203,0x3125eddb,0xed8b1be6,0xf6e39dc5,0x5bbf2441,0x6a5d678a,0xb00f6ee6,0x57d0ea99,0xba456ecf,0x17e06c43,0xdcae0f58,0x0f5b4baa,0x01643de4,0xd161b9be,0x2c324341 +.long 0xe126d468,0x80177f55,0x76748e09,0xed325f1f,0xcfa9bdc2,0x6116004a,0x3a9fb468,0x2d8607e6,0x6009d660,0x0e573e27,0x8d10c5a1,0x3a525d2e,0x3b9009a0,0xd26cb45c,0xde9d7448,0xb6b0cdc0 +.long 0xe1337c26,0x949c9976,0xd73d68e5,0x6faadebd,0xf1b768d9,0x9e158614,0x9cc4f069,0x22dfa557,0xbe93c6d6,0xccd6da17,0xa504f5b9,0x24866c61,0x8d694da1,0x2121353c,0x0140b8c6,0x1c6ca580 +.long 0xe964021e,0xc245ad8c,0x032b82b3,0xb83bffba,0x47ef9898,0xfaa220c6,0x982c948a,0x7e8d3ac6,0xbc2d124a,0x1faa2091,0x05b15ff4,0xbd54c3dd,0xc87c6fb7,0x386bf3ab,0xfdeb6f66,0xfb2b0563 +.long 0x5b45afb4,0x4e77c557,0xefb8912d,0xe9ded649,0x42f6e557,0x7ec9bbf5,0x62671f00,0x2570dfff,0x88e084bd,0x2b3bfb78,0xf37fe5b4,0xa024b238,0x95649aee,0x44e7dc04,0x5e7ec1d8,0x498ca255 +.long 0xaaa07e86,0x3bc766ea,0xf3608586,0x0db6facb,0xbdc259c8,0xbadd2549,0x041c649f,0x95af3c6e,0x02e30afb,0xb36a928c,0x008a88b8,0x9b5356ad,0xcf1d9e9d,0x4b67a5f1,0xa5d8d8ce,0xc6542e47 +.long 0x7adfb6cc,0x73061fe8,0x98678141,0xcc826fd3,0x3c80515a,0x00e758b1,0x41485083,0x6afe3247,0xb6ae8a75,0x0fcb08b9,0x4acf51e1,0xb8cf388d,0x6961b9d6,0x344a5560,0x6a97fd0c,0x1a6778b8 +.long 0xecc4c7e3,0xd840fdc1,0x16db68cc,0xde9fe47d,0xa3e216aa,0xe95f89de,0x9594a8be,0x84f1a6a4,0x5a7b162b,0x7ddc7d72,0xadc817a3,0xc5cfda19,0x78b58d46,0x80a5d350,0x82978f19,0x93365b13 +.long 0x26a1fc90,0x2e44d225,0x4d70705d,0x0d6d10d2,0xd70c45f4,0xd94b6b10,0xb216c079,0x0f201022,0x658fde41,0xcec966c5,0x7e27601d,0xa8d2bc7d,0xff230be7,0xbfcce3e1,0x0033ffb5,0x3394ff6b +.long 0x8132c9af,0xd890c509,0x361e7868,0xaac4b0eb,0xe82d15aa,0x5194ded3,0x23ae6b7d,0x4550bd2e,0xea5399d4,0x3fda318e,0x91638b80,0xd989bffa,0xa14aa12d,0x5ea124d0,0x3667b944,0x1fb1b899 +.long 0x44c44d6a,0x95ec7969,0x57e86137,0x91df144a,0x73adac44,0x915fd620,0x59a83801,0x8f01732d,0x3aa0a633,0xec579d25,0xc9d6d59c,0x06de5e7c,0xb1ef8010,0xc132f958,0xe65c1a02,0x29476f96 +.long 0xd34c3565,0x336a77c0,0x1b9f1e9e,0xef1105b2,0xf9e08002,0x63e6d08b,0xc613809e,0x9aff2f21,0x3a80e75d,0xb5754f85,0x6bbda681,0xde71853e,0x8197fd7a,0x86f041df,0x127817fa,0x8b332e08 +.long 0xb9c20cda,0x05d99be8,0xd5cd0c98,0x89f7aad5,0x5bb94183,0x7ef936fe,0xb05cd7f2,0x92ca0753,0x74a1e035,0x9d65db11,0x13eaea92,0x02628cc8,0x49e4fbf2,0xf2d9e242,0xe384f8b7,0x94fdfd9b +.long 0x63428c6b,0x65f56054,0x90b409a5,0x2f7205b2,0xff45ae11,0xf778bb78,0xc5ee53b2,0xa13045be,0x03ef77fe,0xe00a14ff,0xffef8bef,0x689cd59f,0x1e9ade22,0x3578f0ed,0x6268b6a8,0xe99f3ec0 +.long 0xea1b3c3e,0xa2057d91,0xb8823a4a,0x2d1a7053,0x2cca451e,0xabbb336a,0x2218bb5d,0xcd2466e3,0xc8cb762d,0x3ac1f42f,0x7690211f,0x7e312aae,0x45d07450,0xebb9bd73,0x46c2213f,0x207c4b82 +.long 0x375913ec,0x99d425c1,0x67908220,0x94e45e96,0xcd67dbf6,0xc08f3087,0xc0887056,0xa5670fbe,0x66f5b8fc,0x6717b64a,0x786fec28,0xd5a56aea,0xc0ff4952,0xa8c3f55f,0x457ac49b,0xa77fefae +.long 0x98379d44,0x29882d7c,0x509edc8a,0xd000bdfb,0xe66fe464,0xc6f95979,0xfa61bde0,0x504a6115,0xeffea31a,0x56b3b871,0xf0c21a54,0x2d3de26d,0x834753bf,0x21dbff31,0x69269d86,0xe67ecf49 +.long 0x151fe690,0x7a176952,0x7f2adb5f,0x03515804,0xd1b62a8d,0xee794b15,0xaae454e6,0xf004ceec,0xf0386fac,0x0897ea7c,0xd1fca751,0x3b62ff12,0x1b7a04ec,0x154181df,0xfb5847ec,0x2008e04a +.long 0x41dbd772,0xd147148e,0x22942654,0x2b419f73,0xe9c544f7,0x669f30d3,0xc8540149,0x52a2c223,0x634dfb02,0x5da9ee14,0xf47869f3,0x5f074ff0,0xa3933acc,0x74ee878d,0x4fe35ed1,0xe6510651 +.long 0xf1012e7a,0xb3eb9482,0xa8a566ae,0x51013cc0,0x47c00d3b,0xdd5e9243,0x946bb0e5,0x7fde089d,0xc731b4b3,0x030754fe,0x99fda062,0x12a136a4,0x5a1a35bc,0x7c1064b8,0x446c84ef,0xbf1f5763 +.long 0xa16d4b34,0xed29a56d,0xdca21c4f,0x7fba9d09,0x6d8de486,0x66d7ac00,0x73a2a5e1,0x60061987,0x9da28ff0,0x8b400f86,0x43c4599c,0x3133f708,0xee28cb0d,0x9911c9b8,0x8e0af61d,0xcd7e2874 +.long 0x72ed91fc,0x5a85f0f2,0x9cd4a373,0x85214f31,0x1925253c,0x881fe5be,0x91e8bc76,0xd8dc98e0,0x585cc3a2,0x7120affe,0x735bf97a,0x724952ed,0x3eb34581,0x5581e7dc,0xe52ee57d,0x5cbff4f2 +.long 0x87d8cc7b,0x8d320a0e,0xf1d280d0,0x9beaa7f3,0x9beec704,0x7a0b9571,0x5b7f0057,0x9126332e,0x8ed3bd6d,0x01fbc1b4,0xd945eb24,0x35bb2c12,0x9a8ae255,0x6404694e,0x8d6abfb3,0xb6092eec +.long 0xcc058865,0x4d76143f,0x6e249922,0x7b0a5af2,0x6a50d353,0x8aef9440,0x64f0e07a,0xe11e4bcc,0xa14a90fa,0x4472993a,0xba0c51d4,0x7706e20c,0x1532672d,0xf403292f,0x21829382,0x52573bfa +.long 0x3b5bdb83,0x6a7bb6a9,0xa4a72318,0x08da65c0,0x63eb065f,0xc58d22aa,0x1b15d685,0x1717596c,0xb266d88b,0x112df0d0,0x5941945a,0xf688ae97,0x7c292cac,0x487386e3,0x57d6985c,0x42f3b50d +.long 0x6a90fc34,0x6da4f998,0x65ca8a8d,0xc8f257d3,0x6951f762,0xc2feabca,0x74c323ac,0xe1bc81d0,0x251a2a12,0x1bc68f67,0xbe8a70dc,0x10d86587,0xf0f84d2e,0xd648af7f,0x6a43ac92,0xf0aa9ebc +.long 0x27596893,0x69e3be04,0x45bf452b,0xb6bb02a6,0xf4c698c8,0x0875c11a,0xbece3794,0x6652b5c7,0x4f5c0499,0x7b3755fd,0xb5532b38,0x6ea16558,0xa2e96ef7,0xd1c69889,0x61ed8f48,0x9c773c3a +.long 0x9b323abc,0x2b653a40,0xf0e1d791,0xe26605e1,0x4a87157a,0x45d41064,0xcbbce616,0x8f9a78b7,0xc407eddd,0xcf1e44aa,0xa35b964f,0x81ddd1d8,0xfd083999,0x473e339e,0x8e796802,0x6c94bdde +.long 0x8545d185,0x5a304ada,0x738bb8cb,0x82ae44ea,0xdf87e10e,0x628a35e3,0xa15b9fe3,0xd3624f3d,0x14be4254,0xcc44209b,0xbdbc2ea5,0x7d0efcbc,0x04c37bbe,0x1f603362,0x56a5852c,0x21f363f5 +.long 0xa8501550,0xa1503d1c,0xd8ab10bb,0x2251e0e1,0x6961c51c,0xde129c96,0x81910f68,0x1f7246a4,0x5f2591f2,0x2eb744ee,0x5e627157,0x3c47d33f,0x22f3bd68,0x4d6d62c9,0xcb8df856,0x6120a64b +.long 0x7b5d07df,0x3a9ac6c0,0x7ef39783,0xa92b9558,0xab3a9b4f,0xe128a134,0xb1252f05,0x41c18807,0x80ba9b1c,0xfc7ed089,0xc532a9dd,0xac8dc6de,0x55246809,0xbf829cef,0x5b4ee80f,0x101b784f +.long 0xb6f11603,0xc09945bb,0x41d2801e,0x57b09dbe,0xa97534a8,0xfba5202f,0xc17b9614,0x7fd8ae5f,0x78308435,0xa50ba666,0xd3868c4d,0x9572f77c,0x2dd7aab0,0x0cef7bfd,0x2c7c79ff,0xe7958e08 +.long 0x25346689,0x81262e42,0xb07c7004,0x716da290,0xb7950ee3,0x35f911ea,0x261d21b5,0x6fd72969,0x08b640d3,0x52389803,0x887f12a1,0x5b0026ee,0x742e9311,0x20e21660,0x5ff77ff7,0x0ef6d541 +.long 0xf9c41135,0x969127f0,0x68a64993,0xf21d60c9,0xe541875c,0x656e5d0c,0xa1d3c233,0xf1e0f84e,0x06002d60,0x9bcca359,0x06191552,0xbe2da60c,0x61181ec3,0x5da8bbae,0x65806f19,0x9f04b823 +.long 0xd4b79bb8,0xf1604a7d,0x52c878c8,0xaee806fb,0x8d47b8e8,0x34144f11,0x949f9054,0x72edf52b,0x2127015a,0xebfca84e,0x9cb7cef3,0x9051d0c0,0x296deec8,0x86e8fe58,0x41010d74,0x33b28188 +.long 0x171b445f,0x01079383,0x8131ad4c,0x9bcf21e3,0xc93987e8,0x8cdfe205,0xc92e8c8f,0xe63f4152,0x30add43d,0x729462a9,0xc980f05a,0x62ebb143,0x3b06e968,0x4f3954e5,0x242cf6b1,0xfe1d75ad +.long 0xaf8685c8,0x5f95c6c7,0x2f8f01aa,0xd4c1c8ce,0x2574692a,0xc44bbe32,0xd4a4a068,0xb8003478,0x2eca3cdb,0x7c8fc6e5,0xec04d399,0xea1db16b,0x8f2bc5cf,0xb05bc82e,0xf44793d2,0x763d517f +.long 0x08bd98d0,0x4451c1b8,0x6575f240,0x644b1cd4,0x7375d270,0x6907eb33,0xfa2286bd,0x56c8bebd,0xc4632b46,0xc713d2ac,0xafd60242,0x17da427a,0xc95c7546,0x313065b7,0xbf17a3de,0xf8239898 +.long 0x4c830320,0xf3b7963f,0x903203e3,0x842c7aa0,0xe7327afb,0xaf22ca0a,0x967609b6,0x38e13092,0x757558f1,0x73b8fb62,0xf7eca8c1,0x3cc3e831,0xf6331627,0xe4174474,0xc3c40234,0xa77989ca +.long 0x44a081e0,0xe5fd17a1,0xb70e296a,0xd797fb7d,0x481f719c,0x2b472b30,0xfe6f8c52,0x0e632a98,0xc5f0c284,0x89ccd116,0x2d987c62,0xf51088af,0x4c2de6cf,0x2a2bccda,0xf679f0f9,0x810f9efe +.long 0x7ffe4b3e,0xb0f394b9,0xe5fa5d21,0x0b691d21,0x9dfbbc75,0xb0bd7747,0xfaf78b00,0xd2830fda,0x52434f57,0xf78c249c,0x98096dab,0x4b1f7545,0x8ff8c0b3,0x73bf6f94,0x454e134c,0x34aef03d +.long 0xb7ac7ec5,0xf8d151f4,0xe50da7d5,0xd6ceb95a,0xdc3a0eb8,0xa1b492b0,0xb3dd2863,0x75157b69,0xc5413d62,0xe2c4c74e,0xbc5fc4c7,0xbe329ff7,0x60fa9dda,0x835a2aea,0x7445cb87,0xf117f5ad +.long 0xb0166f7a,0xae8317f4,0xceec74e6,0xfbd3e3f7,0xe0874bfd,0xfdb516ac,0xc681f3a3,0x3d846019,0x7c1620b0,0x0b12ee5c,0x2b63c501,0xba68b4dd,0x6668c51e,0xac03cd32,0x4e0bcb5b,0x2a6279f7 +.long 0x6ae85c10,0x17bd69b0,0x1dfdd3a6,0x72946979,0x2c078bec,0xd9a03268,0xbfd68a52,0x41c6a658,0x0e023900,0xcdea1024,0xb10d144d,0xbaeec121,0x058ab8dc,0x5a600e74,0xbb89ccdd,0x1333af21 +.long 0x3aaba1f1,0xdf25eae0,0x3b7144cf,0x2cada16e,0x71ab98bc,0x657ee27d,0x7a6fc96e,0x99088b4c,0x3549dbd4,0x05d5c0a0,0xf158c3ac,0x42cbdf8f,0x87edd685,0x3fb6b3b0,0x86f064d0,0x22071cf6 +.long 0xff2811e5,0xd2d6721f,0xfe7fae8c,0xdb81b703,0xd3f1f7bb,0x3cfb74ef,0x16cdeb5d,0x0cdbcd76,0x566a808c,0x4f39642a,0x340064d6,0x02b74454,0x0528fa6f,0xfabbadca,0xd3fc0bb6,0xe4c3074c +.long 0xb796d219,0xb32cb8b0,0x34741dd9,0xc3e95f4f,0x68edf6f5,0x87212125,0xa2b9cb8e,0x7a03aee4,0xf53a89aa,0x0cd3c376,0x948a28dc,0x0d8af9b1,0x902ab04f,0xcf86a3f4,0x7f42002d,0x8aacb62a +.long 0xf62ffd52,0x106985eb,0x5797bf10,0xe670b54e,0xc5e30aef,0x4b405209,0x4365b5e9,0x12c97a20,0x1fe32093,0x104646ce,0x3907a8c9,0x13cb4ff6,0xd46e726b,0x8b9f30d1,0xaba0f499,0xe1985e21 +.long 0x10a230cd,0xc573dea9,0xcd30f947,0x24f46a93,0xabe2010a,0xf2623fcf,0x73f00e4f,0x3f278cb2,0x50b920eb,0xed55c67d,0x8e760571,0xf1cb9a2d,0x0895b709,0x7c50d109,0x190d4369,0x4207cf07 +.long 0xc4127fe1,0x3b027e81,0x3ae9c566,0xa9f8b9ad,0xacbfbba5,0x5ab10851,0x569556f5,0xa747d648,0x2ba97bf7,0xcc172b5c,0xbcfa3324,0x15e0f77d,0x7686279d,0xa345b797,0xe38003d3,0x5a723480 +.long 0x8f5fcda8,0xfd8e139f,0xbdee5bfd,0xf3e558c4,0xe33f9f77,0xd76cbaf4,0x71771969,0x3a4c97a4,0xf6dce6a7,0xda27e84b,0x13e6c2d1,0xff373d96,0xd759a6e9,0xf115193c,0x63d2262c,0x3f9b7025 +.long 0x317cd062,0xd9764a31,0x199f8332,0x30779d8e,0x16b11b0b,0xd8074106,0x78aeaed8,0x7917ab9f,0x28fb1d8e,0xb67a9cbe,0x136eda33,0x2e313563,0xa371a86c,0x010b7069,0x6744e6b7,0x44d90fa2 +.long 0xd6b3e243,0x68190867,0x59048c48,0x9fe6cd9d,0x95731538,0xb900b028,0x32cae04f,0xa012062f,0x9399d082,0x8107c8bc,0x41df12e2,0x47e8c54a,0xb6ef3f73,0x14ba5117,0x81362f0b,0x22260bea +.long 0x1a18cc20,0x90ea261e,0x2321d636,0x2192999f,0xe311b6a0,0xef64d314,0x3b54a1f5,0xd7401e4c,0x6fbca2ba,0x19019983,0x8fbffc4b,0x46ad3293,0x3786bf40,0xa142d3f6,0xb67039fc,0xeb5cbc26 +.long 0x252bd479,0x9cb0ae6c,0x12b5848f,0x05e0f88a,0xa5c97663,0x78f6d2b2,0xc162225c,0x6f6e149b,0xde601a89,0xe602235c,0xf373be1f,0xd17bbe98,0xa8471827,0xcaf49a5b,0x18aaa116,0x7e1a0a85 +.long 0x270580c3,0x6c833196,0xf1c98a14,0x1e233839,0xae34e0a5,0x67b2f7b4,0xd8ce7289,0x47ac8745,0x100dd467,0x2b74779a,0x4ee50d09,0x274a4337,0x83608bc9,0x603dcf13,0xc89e8388,0xcd9da6c3 +.long 0x355116ac,0x2660199f,0xb6d18eed,0xcc38bb59,0x2f4bc071,0x3075f31f,0x265dc57e,0x9774457f,0xc6db88bb,0x06a6a9c8,0x4ec98e04,0x6429d07f,0x05ecaa8b,0x8d05e57b,0x7872ea7b,0x20f140b1 +.long 0xca494693,0xdf8c0f09,0xf252e909,0x48d3a020,0x57b14b12,0x4c5c29af,0xbf47ad1c,0x7e6fa37d,0x49a0c938,0x66e7b506,0x6be5f41f,0xb72c0d48,0xb2359412,0x6a6242b8,0x8e859480,0xcd35c774 +.long 0x87baa627,0x12536fea,0xf72aa680,0x58c1fec1,0x601e5dc9,0x6c29b637,0xde9e01b9,0x9e3c3c1c,0x2bcfe0b0,0xefc8127b,0x2a12f50d,0x35107102,0x4879b397,0x6ccd6cb1,0xf8a82f21,0xf792f804 +.long 0xa9b46402,0x509d4804,0xc10f0850,0xedddf85d,0x4b6208aa,0x928410dc,0x391012dc,0xf6229c46,0x7727b9b6,0xc5a7c41e,0xaa444842,0x289e4e4b,0xe9a947ea,0x049ba1d9,0x83c8debc,0x44f9e47f +.long 0x611f8b8e,0xfa77a1fe,0xf518f427,0xfd2e416a,0x114ebac3,0xc5fffa70,0x5d89697b,0xfe57c4e9,0xb1aaf613,0xfdd053ac,0xea585a45,0x31df210f,0x24985034,0x318cc10e,0x5f1d6130,0x1a38efd1 +.long 0x0b1e9e21,0xbf86f237,0x1dbe88aa,0xb258514d,0x90c1baf9,0x1e38a588,0xbdb9b692,0x2936a01e,0x6dd5b20c,0xd576de98,0x70f98ecf,0xb586bf71,0xc42d2fd7,0xcccf0f12,0xfb35bd7b,0x8717e61c +.long 0x35e6fc06,0x8b1e5722,0x0b3e13d5,0x3477728f,0xaa8a7372,0x150c294d,0x3bfa528a,0xc0291d43,0xcec5a196,0xc6c8bc67,0x5c2e8a7c,0xdeeb31e4,0xfb6e1c51,0xba93e244,0x2e28e156,0xb9f8b71b +.long 0x968a2ab9,0xce65a287,0x46bbcb1f,0xe3c5ce69,0xe7ae3f30,0xf8c835b9,0xff72b82b,0x16bbee26,0xfd42cd22,0x665e2017,0xf8b1d2a0,0x1e139970,0x79204932,0x125cda29,0x49c3bee5,0x7aee94a5 +.long 0x89821a66,0x68c70160,0x8f981669,0xf7c37678,0x48cc3645,0xd90829fc,0xd70addfc,0x346af049,0x370bf29c,0x2057b232,0x42e650ee,0xf90c73ce,0xa126ab90,0xe03386ea,0x975a087b,0x0e266e7e +.long 0x0fca65d9,0x80578eb9,0x16af45b8,0x7e2989ea,0xcac75a4e,0x7438212d,0x4fef36b8,0x38c7ca39,0xd402676a,0x8650c494,0xf72c7c48,0x26ab5a66,0xce3a464e,0x4e6cb426,0x2b72f841,0xf8f99896 +.long 0x1a335cc8,0x8c318491,0x6a5913e4,0x563459ba,0xc7b32919,0x1b920d61,0xa02425ad,0x805ab8b6,0x8d006086,0x2ac512da,0xbcf5c0fd,0x6ca4846a,0xac2138d7,0xafea51d8,0x344cd443,0xcb647545 +.long 0xbd7d9040,0x0429ee8f,0x819b9c96,0xee66a2de,0xdea7d744,0x54f9ec25,0x671721bb,0x2ffea642,0x114344ea,0x4f19dbd1,0xfd0dbc8b,0x04304536,0x29ec7f91,0x014b50aa,0xbb06014d,0xb5fc22fe +.long 0x1ee682e0,0x60d963a9,0xfe85c727,0xdf48abc0,0x2e707c2d,0x0cadba13,0xa645aeff,0xde608d3a,0xedafd883,0x05f1c28b,0xbd94de1f,0x3c362ede,0x13593e41,0x8dd0629d,0x766d6eaf,0x0a5e736f +.long 0xf68cf9d1,0xbfa92311,0xc1797556,0xa4f9ef87,0x5601c209,0x10d75a1f,0x09b07361,0x651c374c,0x88b5cead,0x49950b58,0x6fa9dbaa,0x0ef00058,0x4e15f33a,0xf51ddc26,0x2ef46140,0x1f8b5ca6 +.long 0xee9523f0,0x343ac0a3,0x975ea978,0xbb75eab2,0x107387f4,0x1bccf332,0x9ab0062e,0x790f9259,0x1e4f6a5f,0xf1a363ad,0x62519a50,0x06e08b84,0x7265f1ee,0x60915187,0x93ae985e,0x6a80ca34 +.long 0xaaba4864,0x81b29768,0x8d52a7d6,0xb13cabf2,0x8ead03f1,0xb5c36348,0x81c7c1c0,0xc932ad95,0xcae1e27b,0x5452708e,0x1b0df648,0x9dac4269,0xdfcdb8bc,0x233e3f0c,0xec540174,0xe6ceccdf +.long 0x95081181,0xbd0d845e,0x699355d5,0xcc8a7920,0xc3b375a8,0x111c0f6d,0xfd51e0dc,0xfd95bc6b,0x6888523a,0x4a106a26,0xcb01a06d,0x4d142bd6,0xadb9b397,0x79bfd289,0xe9863914,0x0bdbfb94 +.long 0x1660f6a6,0x29d8a229,0x551c042d,0x7f6abcd6,0x0ac3ffe8,0x13039deb,0xec8523fb,0xa01be628,0x0ca1c328,0x6ea34103,0xb903928e,0xc74114bd,0x9e9144b0,0x8aa4ff4e,0x7f9a4b17,0x7064091f +.long 0xe447f2c4,0xa3f4f521,0x604291f0,0x81b8da7a,0x7d5926de,0xd680bc46,0x34a1202f,0x84f21fd5,0x4e9df3d8,0x1d1e3181,0x39ab8d34,0x1ca4861a,0x5b19aa4a,0x809ddeec,0x4d329366,0x59f72f7e +.long 0x386d5087,0xa2f93f41,0xdd67d64f,0x40bf739c,0x66702158,0xb4494205,0x73b1e178,0xc33c65be,0x38ca6153,0xcdcd657c,0xdc791976,0x97f4519a,0xcd6e1f39,0xcc7c7f29,0x7e3c3932,0x38de9cfb +.long 0x7b793f85,0xe448eba3,0xf067e914,0xe9f8dbf9,0xf114ae87,0xc0390266,0xcd6a8e2a,0x39ed75a7,0x7ffba390,0xadb14848,0x6af9bc09,0x67f8cb8b,0x9c7476db,0x322c3848,0x52a538d6,0xa320fecf +.long 0xb2aced2b,0xe0493002,0x616bd430,0xdfba1809,0xc331be70,0x531c4644,0x90d2e450,0xbc04d32e,0x0f9f142d,0x1805a0d1,0x47ee5a23,0x2c44a0c5,0x3989b4e3,0x31875a43,0x0c063481,0x6b1949fd +.long 0xbe0f4492,0x2dfb9e08,0xe9d5e517,0x3ff0da03,0xf79466a8,0x03dbe9a1,0x15ea9932,0x0b87bcd0,0xab1f58ab,0xeb64fc83,0x817edc8a,0x6d9598da,0x1d3b67e5,0x699cff66,0x92635853,0x645c0f29 +.long 0xeabaf21c,0x253cdd82,0x2241659e,0x82b9602a,0x2d9f7091,0x2cae07ec,0x8b48cd9b,0xbe4c720c,0x6f08d6c9,0x6ce5bc03,0xaf10bf40,0x36e8a997,0x3e10ff12,0x83422d21,0xbcc12494,0x7b26d3eb +.long 0xc9469ad6,0xb240d2d0,0x30afa05b,0xc4a11b4d,0xdd6ba286,0x4b604ace,0x3ee2864c,0x18486600,0x8d9ce5be,0x5869d6ba,0xff4bfb0d,0x0d8f68c5,0x5700cf73,0xb69f210b,0x6d37c135,0x61f6653a +.long 0x5aff5a48,0xff3d432b,0x72ba3a69,0x0d81c4b9,0xfa1899ef,0xee879ae9,0x2d6acafd,0xbac7e2a0,0x1c664399,0xd6d93f6c,0x5bcb135d,0x4c288de1,0x9dab7cbf,0x83031dab,0x3abbf5f0,0xfe23feb0 +.long 0xcdedca85,0x9f1b2466,0x1a09538c,0x140bb710,0x5e11115d,0xac8ae851,0x6f03f59e,0x0d63ff67,0x7d234afb,0x755e5551,0x7e208fc1,0x61c2db4e,0xf28a4b5d,0xaa9859ce,0x34af030f,0xbdd6d4fc +.long 0x3be01cb1,0xd1c4a26d,0x243aa07c,0x9ba14ffc,0xb2503502,0xf95cd3a9,0x7d2a93ab,0xe379bc06,0xd4ca8d68,0x3efc18e9,0x80bb412a,0x083558ec,0x9645a968,0xd903b940,0x9ba6054f,0xa499f0b6 +.long 0xb8349abe,0x208b573c,0x30b4fc1c,0x3baab3e5,0xcb524990,0x87e978ba,0xccdf0e80,0x3524194e,0x7d4bcc42,0x62711725,0xb90109ba,0xe90a3d9b,0x1323e1e0,0x3b1bdd57,0x5eae1599,0xb78e9bd5 +.long 0x9e03d278,0x0794b746,0xd70e6297,0x80178605,0x99c97855,0x171792f8,0xf5a86b5c,0x11b393ee,0xd8884f27,0x48ef6582,0xbf19ba5f,0xbd44737a,0xa42062c6,0x8698de4c,0x61ce9c54,0x8975eb80 +.long 0xd7fe71f3,0xd50e57c7,0xbc97ce38,0x15342190,0x4df07b63,0x51bda2de,0x200eb87d,0xba12aeae,0xa9b4f8f6,0xabe135d2,0xfad6d99c,0x04619d65,0x7994937c,0x4a6683a7,0x6f94f09a,0x7a778c8b +.long 0x20a71b89,0x8c508623,0x1c229165,0x241a2aed,0xaaf83a99,0x352be595,0x1562bac8,0x9fbfee7f,0x5c4017e3,0xeaf658b9,0x15120b86,0x1dc7f9e0,0x4c034d6f,0xd84f13dd,0xeaea3038,0x283dd737 +.long 0xcd85d6a2,0x197f2609,0xfae60177,0x6ebbc345,0x4e12fede,0xb80f031b,0x07a2186b,0xde55d0c2,0x24dcdd5a,0x1fb3e37f,0x7ed191fb,0x8d602da5,0x76023e0d,0x108fb056,0x459c20c0,0x70178c71 +.long 0x3fe54cf0,0xfad5a386,0x02bbb475,0xa4a3ec4f,0x919d94d7,0x1aa5ec20,0xa81e4ab3,0x5d3b63b5,0x5ad3d2af,0x7fa733d8,0xd1ac7a37,0xfbc586dd,0x40779614,0x282925de,0xe74a242a,0xfe0ffffb +.long 0x906151e5,0x3f39e67f,0x55e10649,0xcea27f5f,0xc17cf7b7,0xdca1d4e1,0x2fe2362d,0x0c326d12,0x7dd35df3,0x05f7ac33,0xc396dbdf,0x0c3b7639,0x03b7db1c,0x0912f5ac,0x5c9ed4a9,0x9dea4b70 +.long 0xaae3f639,0x475e6e53,0xfc278bac,0xfaba0e7c,0x9490375f,0x16f9e221,0xa5a7ed0a,0xaebf9746,0xf41ad5d6,0x45f9af3f,0xb2e99224,0x03c4623c,0xb3cf56aa,0x82c5bb5c,0x34567ed3,0x64311819 +.long 0x8be489ac,0xec57f211,0xb9a1104b,0x2821895d,0x6064e007,0x610dc875,0x5b20d0fe,0x8e526f3f,0x5b645aee,0x6e71ca77,0x800e10ff,0x3d1dcb9f,0x189cf6de,0x36b51162,0x6bb17353,0x2c5a3e30 +.long 0x2a6c6fbf,0xc186cd3e,0x4bf97906,0xa74516fa,0x279d6901,0x5b4b8f4b,0x2b573743,0x0c4e57b4,0xb6e386b6,0x75fdb229,0x99deac27,0xb46793fd,0xcf712629,0xeeec47ea,0xcbc3b2dd,0xe965f3c4 +.long 0x425c6559,0x8dd1fb83,0x0af06fda,0x7fc00ee6,0x33d956df,0xe98c9225,0x4fbdc8a2,0x0f1ef335,0xb79b8ea2,0x2abb5145,0xbdbff288,0x40fd2945,0xd7185db7,0x6a814ac4,0xc084609a,0xc4329d6f +.long 0xed1be45d,0xc9ba7b52,0xe4cd2c74,0x891dd20d,0x824139b1,0x5a4d4a7f,0xb873c710,0x66c17716,0x2843c4e0,0x5e5bc141,0xb97eb5bf,0xd5ac4817,0x450c95c7,0xc0f8af54,0x318406c5,0xc91b3fa0 +.long 0xab9d97f8,0x360c340a,0x90a2d611,0xfb57bd07,0xa6a6f7e5,0x4339ae3c,0x2feb8a10,0x9c1fcd2a,0xc7ea7432,0x972bcca9,0x308076f6,0x1b0b924c,0x2a5b4ca5,0x80b2814a,0x61ef3b29,0x2f78f55b +.long 0xc18a414f,0xf838744a,0x903d0a86,0xc611eaae,0x2a453f55,0x94dabc16,0x14efb279,0xe6f2e3da,0x9320dc3c,0x5b7a6017,0x8df6b5a4,0x692e382f,0x2d40fa90,0x3f5e15e0,0x643dd318,0xc87883ae +.long 0x53544774,0x511053e4,0x3adba2bc,0x834d0ecc,0xbae371f5,0x4215d7f7,0x6c8663bc,0xfcfd57bf,0xd6901b1d,0xded2383d,0xb5587dc3,0x3b49fbb4,0x07625f62,0xfd44a08d,0x9de9b762,0x3ee4d65b +.long 0x0d63d1fa,0x64e5137d,0x02a9d89f,0x658fc052,0x50436309,0x48894874,0xd598da61,0xe9ae30f8,0x818baf91,0x2ed710d1,0x8b6a0c20,0xe27e9e06,0x1c1a6b44,0x1e28dcfb,0xd6ac57dc,0x883acb64 +.long 0xc2c6ff70,0x8735728d,0xc5dc2235,0x79d6122f,0x19e277f9,0x23f5d003,0xdded8cc7,0x7ee84e25,0x63cd880a,0x91a8afb0,0x3574af60,0x3f3ea7c6,0x02de7f42,0x0cfcdc84,0xb31aa152,0x62d0792f +.long 0x8a5807ce,0x8e1b4e43,0xe4109a7e,0xad283893,0xafd59dda,0xc30cc9cb,0x3d8d8093,0xf65f36c6,0xa60d32b2,0xdf31469e,0x3e8191c8,0xee93df4b,0x355bdeb5,0x9c1017c5,0x8616aa28,0xd2623185 +.long 0xdec31a21,0xb02c83f9,0x6ad9d573,0x988c8b23,0xa57be365,0x53e983ae,0x646f834e,0xe968734d,0x5da6309b,0x9137ea8f,0xc1f1ce16,0x10f3a624,0xca440921,0x782a9ea2,0x5b46f1b5,0xdf94739e +.long 0xcce85c9b,0x9f9be006,0xa4c7c2d3,0x360e70d6,0xaefa1e60,0x2cd5beea,0x8c3d2b6d,0x64cf63c0,0xe1cf6f90,0xfb107fa3,0xd5e044e6,0xb7e937c6,0xce34db9f,0x74e8ca78,0x3e210bd0,0x4f8b36c1 +.long 0x34a35ea8,0x1df165a4,0x4d4412f6,0x3418e0f7,0x518836c3,0x5af1f8af,0x130e1965,0x42ceef4d,0x543a1957,0x5560ca0b,0x886cb123,0xc33761e5,0xfe98ed30,0x66624b1f,0x1090997d,0xf772f4bf +.long 0x4885d410,0xf4e540bb,0x9ba5f8d7,0x7287f810,0xde98dfb1,0x22d0d865,0xbcfbb8a3,0x49ff51a1,0x6bc3012e,0xb6b6fa53,0x170d541d,0x3d31fd72,0x4b0f4966,0x8018724f,0x87dbde07,0x79e7399f +.long 0xf4f8b16a,0x56f8410e,0xc47b266a,0x97241afe,0x6d9c87c1,0x0a406b8e,0xcd42ab1b,0x803f3e02,0x04dbec69,0x7f0309a8,0x3bbad05f,0xa83b85f7,0xad8e197f,0xc6097273,0x5067adc1,0xc097440e +.long 0x3524ff16,0x730eafb6,0x823fc6ce,0xd7f9b51e,0x443e4ac0,0x27bd0d32,0x4d66f217,0x40c59ad9,0x17c387a4,0x6c33136f,0xeb86804d,0x5043b8d5,0x675a73c9,0x74970312,0xf16669b6,0x838fdb31 +.long 0x418e7ddd,0xc507b6dd,0x472f19d6,0x39888d93,0x0c27eb4d,0x7eae26be,0xfbabb884,0x17b53ed3,0x2b01ae4f,0xfc27021b,0xcf488682,0x88462e87,0x215e2d87,0xbee096ec,0xd242e29b,0xeb2fea9a +.long 0xb821fc28,0x5d985b5f,0xdc1e2ad2,0x89d2e197,0x9030ba62,0x55b566b8,0x4f41b1c6,0xe3fd41b5,0xb9a96d61,0xb738ac2e,0x369443f4,0x7f8567ca,0xf803a440,0x8698622d,0x8fe2f4dc,0x2b586236 +.long 0x56b95bce,0xbbcc00c7,0x616da680,0x5ec03906,0x72214252,0x79162ee6,0x86a892d2,0x43132b63,0x2f3263bf,0x4bdd3ff2,0x9cd0a142,0xd5b3733c,0x44415ccb,0x592eaa82,0x8d5474ea,0x663e8924 +.long 0x5236344e,0x8058a25e,0xbda76ee6,0x82e8df9d,0x11cc3d22,0xdcf6efd8,0x3b4ab529,0x00089cda,0xbd38a3db,0x91d3a071,0xef72b925,0x4ea97fc0,0xea3edf75,0x0c9fc15b,0xa4348ed3,0x5a6297cd +.long 0xce7c42d4,0x0d38ab35,0x82feab10,0x9fd493ef,0x82111b45,0x46056b6d,0x73efc5c3,0xda11dae1,0x5545a7fb,0xdc740278,0x40d507e6,0xbdb2601c,0x7066fa58,0x121dfeeb,0x39ae8c2a,0x214369a8 +.long 0x06e0956c,0x195709cb,0x010cd34b,0x4c9d254f,0x0471a532,0xf51e13f7,0x1e73054d,0xe19d6791,0xdb5c7be3,0xf702a628,0xb24dde05,0xc7141218,0xf29b2e2e,0xdc18233c,0x85342dba,0x3a6bd1e8 +.long 0xb311898c,0x3f747fa0,0xcd0eac65,0xe2a272e4,0xf914d0bc,0x4bba5851,0xc4a43ee3,0x7a1a9660,0xa1c8cde9,0xe5a367ce,0x7271abe3,0x9d958ba9,0x3d1615cd,0xf3ff7eb6,0xf5ae20b0,0xa2280dce +.long 0xcf640147,0x56dba5c1,0x5e83d118,0xea5a2e3d,0xda24c511,0x04cd6b6d,0xe854d214,0x1c0f4671,0x69565381,0x91a6b7a9,0xdecf1f5b,0xdc966240,0xfcf5d009,0x1b22d21c,0x9021dbd5,0x2a05f641 +.long 0xd4312483,0x8c0ed566,0x643e216f,0x5179a95d,0x17044493,0xcc185fec,0x54991a21,0xb3063339,0x0081a726,0xd801ecdb,0x4fa89bbb,0x0149b0c6,0x4391b6b9,0xafe9065a,0xd633f3a3,0xedc92786 +.long 0xae6a8e13,0xe408c24a,0x9f3897ab,0x85833fde,0xd81a0715,0x43800e7e,0xb44ffc5f,0xde08e346,0xcdeff2e0,0x7094184c,0x165eaed1,0x49f9387b,0x777c468a,0x635d6129,0x538c2dd8,0x8c0dcfd1 +.long 0x7a6a308b,0xd6d9d9e3,0x4c2767d3,0x62375830,0xf38cbeb6,0x874a8bc6,0xccb6fd9e,0xd94d3f1a,0xba21f248,0x92a9735b,0x6cd1efb0,0x272ad0e5,0x05b03284,0x7437b69c,0x6948c225,0xe7f04702 +.long 0xcba2ecec,0x8a56c04a,0xe3a73e41,0x0c181270,0x03e93725,0x6cb34e9d,0x496521a9,0xf77c8713,0xfa7f9f90,0x94569183,0x8c9707ad,0xf2e7aa4c,0x26c1c9a3,0xced2c9ba,0x40197507,0x9109fe96 +.long 0xe9adfe1c,0x9ae868a9,0x314e39bb,0x3984403d,0xf2fe378f,0xb5875720,0xba44a628,0x33f901e0,0x3652438c,0xea1125fe,0x9dd1f20b,0xae9ec4e6,0xbebf7fbd,0x1e740d9e,0x42dbe79c,0x6dbd3ddc +.long 0xedd36776,0x62082aec,0xe9859039,0xf612c478,0x032f7065,0xa493b201,0x4ff9b211,0xebd4d8f2,0xaac4cb32,0x3f23a0aa,0x15ed4005,0xea3aadb7,0xafa27e63,0xacf17ea4,0xc11fd66c,0x56125c1a +.long 0x3794f8dc,0x266344a4,0x483c5c36,0xdcca923a,0x3f9d10a0,0x2d6b6bbf,0x81d9bdf3,0xb320c5ca,0x47b50a95,0x620e28ff,0xcef03371,0x933e3b01,0x99100153,0xf081bf85,0xc3a8c8d6,0x183be9a0 +.long 0xd6bbe24d,0x4e3ddc5a,0x53843795,0xc6c74630,0x65ec2d4c,0x78193dd7,0xcd3c89b2,0xb8df26cc,0x5a483f8d,0x98dbe399,0x7dd3313a,0x72d8a957,0xab0bd375,0x65087294,0x7c259d16,0xfcd89248 +.long 0x7613aa81,0x8a9443d7,0x85fe6584,0x80100800,0x7fb10288,0x70fc4dbc,0xe86beee8,0xf58280d3,0x7c978c38,0x14fdd82f,0x0de44d7b,0xdf1204c1,0x4160252f,0xa08a1c84,0xc17646a5,0x591554ca +.long 0xa05bd525,0x214a37d6,0x07957b3c,0x48d5f09b,0xd7109bc9,0x0247cdcb,0x30599ce7,0x40f9e4bb,0xf46ad2ec,0xc325fa03,0xc3e3f9ee,0x00f766cf,0xd43a4577,0xab556668,0x3ee03b93,0x68d30a61 +.long 0x77b46a08,0x7ddc81ea,0xc7480699,0xcf5a6477,0x6633f683,0x43a8cb34,0x92363c60,0x1b867e6b,0x1f60558e,0x43921114,0x2f41450e,0xcdbcdd63,0xcc630e8b,0x7fc04601,0x97038b43,0xea7c66d5 +.long 0x04e99fd8,0x7259b8a5,0x4785549a,0x98a8dd12,0x840552e1,0x0e459a7c,0x4bb0909e,0xcdfcf4d0,0x53758da7,0x34a86db2,0xeac997e1,0xe643bb83,0x530c5b7e,0x96400bd7,0xb41c8b52,0x9f97af87 +.long 0xfbeee3f9,0x34fc8820,0x49091afd,0x93e53490,0x9a31f35c,0x764b9be5,0x57e3d924,0x71f37864,0x943aa75e,0x02fb34e0,0xab8ff6e4,0xa18c9c58,0x33cf0d19,0x080f31b1,0x083518a7,0x5c9682db +.long 0xb709c3de,0x873d4ca6,0x3575b8f0,0x64a84262,0x020154bb,0x6275da1f,0xd17cf1ab,0x97678caa,0x951a95c3,0x8779795f,0x50fccc08,0xdd35b163,0x33d8f031,0x32709627,0x498dd85c,0x3c5ab10a +.long 0x41dca566,0xb6c185c3,0xd8622aa3,0x7de7feda,0x901b6dfb,0x99e84d92,0x7c4ad288,0x30a02b0e,0x2fd3cf36,0xc7c81daa,0xdf89e59f,0xd1319547,0xcd496733,0xb2be8184,0x93d3412b,0xd5f449eb +.long 0x25fe531d,0x7ea41b1b,0x6a1d5646,0xf9797432,0x2bde501a,0x86067f72,0x0c85e89c,0xf91481c0,0xf8b05bc6,0xca8ee465,0x02e83cda,0x1844e1cf,0xb4dbe33b,0xca82114a,0x4eabfde2,0x0f9f8769 +.long 0x38b27fe2,0x4936b1c0,0xaba402df,0x63b6359b,0x656bdbab,0x40c0ea2f,0x6580c39c,0x9c992a89,0x2a60aed1,0x600e8f15,0xe0bf49df,0xeb089ca4,0x2d42d99a,0x9c233d7d,0x4c6bc2fa,0x648d3f95 +.long 0xe1add3f3,0xdcc383a8,0x4f64a348,0xf42c0c6a,0x0030dbdb,0x2abd176f,0x7d6c215e,0x4de501a3,0x4b9a64bc,0x4a107c1f,0x2496cd59,0xa77f0ad3,0x7688dffb,0xfb78ac62,0x67937d8e,0x7025a2ca +.long 0xd1a8f4e7,0xfde8b2d1,0x7354927c,0xf5b3da47,0xd9205735,0xe48606a3,0xe177b917,0xac477cc6,0xa883239a,0xfb1f73d2,0xcc8b8357,0xe12572f6,0xfb1f4f86,0x9d355e9c,0xd9f3ec6e,0x89b795f8 +.long 0xb54398dc,0x27be56f1,0x3fedeed5,0x1890efd7,0x9c6d0140,0x62f77f1f,0x596f0ee4,0x7ef0e314,0xcc61dab3,0x50ca6631,0xf4866e4f,0x4a39801d,0xae363b39,0x66c8d032,0x2ead66aa,0x22c591e5 +.long 0xde02a53e,0x954ba308,0xd389f357,0x2a6c060f,0xfbf40b66,0xe6cfcde8,0xc6340ce1,0x8e02fc56,0x73adb4ba,0xe4957795,0xa7b03805,0x7b86122c,0x0c8e6fa6,0x63f83512,0x057d7804,0x83660ea0 +.long 0x21ba473c,0xbad79105,0xded5389d,0xb6c50bee,0xaa7c9bc0,0xee2caf4d,0x8c4e98a7,0xd97b8de4,0xab3bbddb,0xa9f63e70,0x2597815a,0x3898aabf,0xac15b3d9,0x7659af89,0x703ce784,0xedf7725b +.long 0xe085116b,0x25470fab,0x87285310,0x04a43375,0xe2bfd52f,0x4e39187e,0x7d9ebc74,0x36166b44,0xfd4b322c,0x92ad433c,0xba79ab51,0x726aa817,0xc1db15eb,0xf96eacd8,0x0476be63,0xfaf71e91 +.long 0x641fad98,0xdd69a640,0x29622559,0xb7995918,0xde4199dc,0x03c6daa5,0xad545eb4,0x92cadc97,0x256534e4,0x1028238b,0x8595409a,0x73e80ce6,0xd05dc59b,0x690d4c66,0x981dee80,0xc95f7b8f +.long 0xd856ac25,0xf4337014,0xac524dca,0x441bd9dd,0x5f0499f5,0x640b3d85,0xd5fda182,0x39cf84a9,0xb2aa95a0,0x04e7b055,0x0ddf1860,0x29e33f0a,0x423f6b43,0x082e74b5,0x0aaa2b0f,0x217edeb9 +.long 0x83cbea55,0x58b83f35,0xbc185d70,0xc485ee4d,0x1e5f6992,0x833ff03b,0xcf0c0dd5,0xb5b9b9cc,0x4e9e8a50,0x7caaee8e,0x6269dafd,0x462e907b,0xfbe791c6,0x6ed5cee9,0xed430790,0x68ca3259 +.long 0x13b5ba88,0x2b72bdf2,0x35ef0ac4,0x60294c8a,0x19b99b08,0x9c3230ed,0x6c2589aa,0x560fff17,0xd6770374,0x552b8487,0x9a56f685,0xa373202d,0x45f175d9,0xd3e7f907,0xd080d810,0x3c2f315f +.long 0x7b9520e8,0x1130e9dd,0x0af037b5,0xc078f9e2,0x1e9c104c,0x38cd2ec7,0xc472fe92,0x0f684368,0x6247e7ef,0xd3f1b5ed,0x396dfe21,0xb32d33a9,0x4a9aa2c2,0x46f59cf4,0xff0f7e41,0x69cd5168 +.long 0x4b3234da,0x3f59da0f,0xb4579ebe,0xcf0b0235,0x6d2476c7,0x6d1cbb25,0x9dc30f08,0x4f0837e6,0x906f6e98,0x9a4075bb,0xc761e7d1,0x253bb434,0x6e73af10,0xde2e645f,0x0c5f131c,0xb89a4060 +.long 0xb8cc037f,0xd12840c5,0x7405bb47,0x3d093a5b,0x206348b8,0x6202c253,0xc55a3ca7,0xbf5d57fc,0x8c3bef48,0x89f6c90c,0x5a0a960a,0x23ac7623,0x552b42ab,0xdfbd3d6b,0x132061f6,0x3ef22458 +.long 0xc97e6516,0xd74e9bda,0xc230f49e,0x88779360,0x1e74ea49,0xa6ec1de3,0x3fb645a2,0x581dcee5,0x8f483f14,0xbaef2391,0xd137d13b,0x6d2dddfc,0xd2743a42,0x54cde50e,0xe4d97e67,0x89a34fc5 +.long 0x12e08ce5,0x13f1f5b3,0xa7f0b2ca,0xa80540b8,0x01982805,0x854bcf77,0x233bea04,0xb8653ffd,0x02b0b4c9,0x8e7b8787,0x9acb170a,0x2675261f,0x930c14e5,0x061a9d90,0xdef0abea,0xb59b30e0 +.long 0x0200ec7d,0x1dc19ea6,0x0bce132b,0xb6f4a3f9,0xf13e27e0,0xb8d5de90,0x1fade16f,0xbaee5ef0,0xe4c6cf38,0x6f406aaa,0xd1369815,0xab4cfe06,0xefd550c6,0x0dcffe87,0x75ff7d39,0x9d4f59c7 +.long 0x51deb6ad,0xb02553b1,0xb1877749,0x812399a4,0xca6006e1,0xce90f71f,0xb02b6e77,0xc32363a6,0xdc36c64d,0x02284fbe,0xa7e1ae61,0x86c81e31,0xb909d94a,0x2576c7e5,0x818b2bb0,0x8b6f7d02 +.long 0x56faa38a,0xeca3ed07,0x9305bb54,0xa3790e6c,0x7bc73061,0xd784eeda,0x6dd50614,0xbd56d369,0x229a8aa9,0xd6575949,0x4595ec28,0xdcca8f47,0x06ab4fe6,0x814305c1,0x24f43f16,0xc8c39768 +.long 0x523f2b36,0xe2a45f36,0x920d93bb,0x995c6493,0x90f1632b,0xf8afdab7,0x1c295954,0x79ebbecd,0x79592f48,0xc7bb3ddb,0x5f88e998,0x67216a7b,0xbc01193e,0xd91f098b,0xb1db83fc,0xf7d928a5 +.long 0xe991f600,0x55e38417,0x2981a934,0x2a91113e,0x06b13bde,0xcbc9d648,0x0755ff44,0xb011b6ac,0x045ec613,0x6f4cb518,0xc2f5930a,0x522d2d31,0x382e65de,0x5acae1af,0x27bc966f,0x57643067 +.long 0x1c7193f0,0x5e12705d,0x3be8858e,0xf0f32f47,0x96c6dfc7,0x785c3d7d,0xbf31795d,0xd75b4a20,0x342659d4,0x91acf17b,0x44f0378f,0xe596ea34,0xce52129d,0x4515708f,0x79f2f585,0x17387e1e +.long 0x49dee168,0x72cfd2e9,0x3e2af239,0x1ae05223,0x1d94066a,0x009e75be,0x38abf413,0x6cca31c7,0x9bc49908,0xb50bd61d,0xf5e2bc1e,0x4a9b4a8c,0x946f83ac,0xeb6cc5f7,0xebffab28,0x27da93fc +.long 0x4821c8c5,0xea314c96,0xa83c15f4,0x8de49ded,0x7af33004,0x7a64cf20,0xc9627e10,0x45f1bfeb,0x54b9df60,0x878b0626,0xa95c0b33,0x5e4fdc3c,0xc2035d8e,0xe54a37ca,0x80f20b8c,0x9087cda9 +.long 0x8319ade4,0x36f61c23,0xde8cfdf8,0x766f287a,0x346f3705,0x48821948,0x16e4f4a2,0x49a7b853,0x5cedadfd,0xb9b3f8a7,0x8db2a815,0x8f562815,0x01f68f95,0xc0b7d554,0x688a208e,0x12971e27 +.long 0xd0ff34fc,0xc9f8b696,0x1222718c,0x20824de2,0x0c95284d,0x7213cf9f,0xdc158240,0xe2ad741b,0x54043ccf,0x0ee3a6df,0xd84412b3,0x16ff479b,0xdfc98af0,0xf6c74ee0,0x52fcd2fb,0xa78a169f +.long 0x99c930e9,0xd8ae8746,0x49e117a5,0x1d33e858,0x6624759f,0x7581fcb4,0x5bedc01d,0xde50644f,0xcaf3155e,0xbeec5d00,0xbc73e75f,0x672d66ac,0x270b01db,0x86b9d8c6,0x50f55b79,0xd249ef83 +.long 0x73978fe3,0x6131d6d4,0x754b00a1,0xcc4e4542,0x57dfcfe9,0x4e05df05,0x51ef6bf0,0x94b29cdd,0x9bc7edf2,0xe4530cff,0xd3da65f3,0x8ac236fd,0xc8eb0b48,0x0faf7d5f,0x660eb039,0x4d2de14c +.long 0x60430e54,0xc006bba7,0xda3289ab,0x10a2d0d6,0xd7979c59,0x9c037a5d,0xa116d944,0x04d1f3d3,0x8a0983cd,0x9ff22473,0xc883cabb,0x28e25b38,0x47a58995,0xe968dba5,0x774eebdf,0x2c80b505 +.long 0x4a953beb,0xee763b71,0x1642e7f6,0x502e223f,0x61d5e722,0x6fe4b641,0xdbef5316,0x9d37c5b0,0xf8330bc7,0x0115ed70,0x75a72789,0x139850e6,0xffceccc2,0x27d7faec,0x4fd9f7f6,0x3016a860 +.long 0x4cd8f64c,0xc492ec64,0x279d7b51,0x58a2d790,0x1fc75256,0x0ced1fc5,0x8f433017,0x3e658aed,0x05da59eb,0x0b61942e,0x0ddc3722,0xba3d60a3,0x742e7f87,0x7c311cd1,0xf6b01b6e,0x6473ffee +.long 0x692ac542,0x8303604f,0x227b91d3,0xf079ffe1,0x15aaf9bd,0x19f63e63,0xf1f344fb,0xf99ee565,0xd6219199,0x8a1d661f,0xd48ce41c,0x8c883bc6,0x3c74d904,0x1065118f,0x0faf8b1b,0x713889ee +.long 0x81a1b3be,0x972b3f8f,0xce2764a0,0x4f3ce145,0x28c4f5f7,0xe2d0f1cc,0xc7f3985b,0xdeee0c0d,0xd39e25c3,0x7df4adc0,0xc467a080,0x40619820,0x61cf5a58,0x440ebc93,0x422ad600,0x527729a6 +.long 0xb1b76ba6,0xca6c0937,0x4d2026dc,0x1a2eab85,0x19d9ae0a,0xb1715e15,0xbac4a026,0xf1ad9199,0x07ea7b0e,0x35b3dfb8,0x3ed9eb89,0xedf5496f,0x2d6d08ab,0x8932e5ff,0x25bd2731,0xf314874e +.long 0x3f73f449,0xefb26a75,0x8d44fc79,0x1d1c94f8,0x3bc0dc4d,0x49f0fbc5,0x3698a0d0,0xb747ea0b,0x228d291e,0x5218c3fe,0x43c129d6,0x35b804b5,0xd1acc516,0xfac859b8,0x95d6e668,0x6c10697d +.long 0x0876fd4e,0xc38e438f,0x83d2f383,0x45f0c307,0xb10934cb,0x203cc2ec,0x2c9d46ee,0x6a8f2439,0x65ccde7b,0xf16b431b,0x27e76a6f,0x41e2cd18,0x4e3484d7,0xb9c8cf8f,0x8315244a,0x64426efd +.long 0xfc94dea3,0x1c0a8e44,0xdad6a0b0,0x34c8cdbf,0x04113cef,0x919c3840,0x15490ffa,0xfd32fba4,0x795dcfb7,0x58d190f6,0x83588baf,0xfef01b03,0xca1fc1c0,0x9e6d1d63,0xf0a41ac9,0x53173f96 +.long 0xba16f73b,0x2b1d402a,0x8cf9b9fc,0x2fb31014,0x446ef7bf,0x2d51e60e,0xb91e1745,0xc731021b,0x4fee99d4,0x9d3b4724,0xfac5c1ea,0x4bca48b6,0xbbea9af7,0x70f5f514,0x974c283a,0x751f55a5 +.long 0xcb452fdb,0x6e30251a,0x50f30650,0x31ee6965,0x933548d9,0xb0b3e508,0xf4b0ef5b,0xb8949a4f,0x3c88f3bd,0x208b8326,0xdb1d9989,0xab147c30,0x44d4df03,0xed6515fd,0xe72eb0c5,0x17a12f75 +.long 0x36cf69db,0x3b59796d,0x56670c18,0x1219eee9,0x7a070d8e,0xfe3341f7,0xa327f90c,0x9b70130b,0x0ae18e0e,0x36a32462,0x46c0a638,0x2021a623,0xc62eb0d4,0x251b5817,0x4c762293,0x87bfbcdf +.long 0xcdd61d64,0xf78ab505,0xc8c18857,0x8c7a53fc,0x16147515,0xa653ce6f,0xea7d52d5,0x9c923aa5,0x5c18871f,0xc24709cb,0x73b3cc74,0x7d53bec8,0xfdd1d4c4,0x59264aff,0x240da582,0x5555917e +.long 0x548f5a0e,0xcae8bbda,0x3bbfbbe1,0x1910eaba,0x7677afc3,0xae579685,0x73ff0b5c,0x49ea61f1,0x4f7c3922,0x78655478,0x20c68eef,0x95d337cd,0xdf779ab9,0x68f1e1e5,0xb5cf69a8,0x14b491b0 +.long 0x28e3fe89,0x7a6cbbe0,0xc5aac0eb,0xe7e1fee4,0x697e5140,0x7f47eda5,0xb454921f,0x4f450137,0x95cd8185,0xdb625f84,0xcdb2e583,0x74be0ba1,0xdd5e6de4,0xaee4fd7c,0xe8101739,0x4251437d +.long 0xac620366,0x686d72a0,0xb6d59344,0x4be3fb9c,0xa1eb75b9,0x6e8b44e7,0x91a5c10c,0x84e39da3,0xb38f0409,0x37cc1490,0x2c2ade82,0x02951943,0x1190a2d8,0x9b688783,0x231182ba,0x25627d14 +.long 0x658a6d87,0x6eb550aa,0xcf9c7325,0x1405aaa7,0x5c8748c9,0xd147142e,0x53ede0e0,0x7f637e4f,0x14ffad2c,0xf8ca2776,0xbafb6791,0xe58fb1bd,0xbf8f93fc,0x17158c23,0x0a4a4655,0x7f15b373 +.long 0xd842ca72,0x39d4add2,0x3ed96305,0xa71e4391,0x6700be14,0x5bb09cbe,0xd8befcf6,0x68d69d54,0x37183bcf,0xa45f5367,0x3370dff7,0x7152b7bb,0xbf12525b,0xcf887baa,0xd6d1e3cd,0xe7ac7bdd +.long 0x81fdad90,0x25914f78,0x0d2cf6ab,0xcf638f56,0xcc054de5,0xb90bc03f,0x18b06350,0x932811a7,0x9bbd11ff,0x2f00b330,0xb4044974,0x76108a6f,0xa851d266,0x801bb9e0,0xbf8990c1,0x0dd099be +.long 0xabe32986,0x58c5aaaa,0x50d59c27,0x0fe9dd2a,0x8d307305,0x84951ff4,0x86529b78,0x6c23f829,0x0b136a79,0x50bb2218,0x77a20996,0x7e2174de,0xc0bb4da6,0x6f00a4b9,0xefdde8da,0x89a25a17 +.long 0xc11ee01d,0xf728a27e,0xe5f10dfb,0xf900553a,0x02ec893c,0x189a83c8,0x23f66d77,0x3ca5bdc1,0x97eada9f,0x98781537,0x10256230,0x59c50ab3,0x323c69b3,0x346042d9,0x2c460449,0x1b715a6d +.long 0x6ae06e0b,0xa41dd476,0x9d42e25f,0xcdd7888e,0x56b25a20,0x0f395f74,0x8700e27e,0xeadfe0ae,0x69950093,0xb09d52a9,0x327f8d40,0x3525d9cb,0x67df886a,0xb8235a94,0x035faec2,0x77e4b0dd +.long 0x517d7061,0x115eb20a,0x6c2df683,0x77fe3433,0xcdc6fc67,0x6870ddc7,0x0b87de83,0xb1610588,0xd9c4ddbe,0x343584ca,0x3d754be2,0xb3164f1c,0xc1e6c894,0x0731ed3a,0x4f6b904c,0x26327dec +.long 0x97b5cd32,0x9d49c6de,0xb5eceecd,0x40835dae,0xd9ded7fe,0xc66350ed,0x7a678804,0x8aeebb5c,0x5b8ee9ec,0x51d42fb7,0x8e3ca118,0xd7a17bdd,0x2ef4400e,0x40d7511a,0x875a66f4,0xc48990ac +.long 0x2199e347,0x8de07d2a,0x2a39e051,0xbee75556,0x916e51dc,0x56918786,0x4a2d89ec,0xeb191313,0x37d341ed,0x6679610d,0x56d51c2b,0x434fbb41,0xd7492dba,0xe54b7ee7,0x59021493,0xaa33a79a +.long 0xe4bd6d3d,0x49fc5054,0x5ab551d0,0x09540f04,0x4942d3a6,0x8acc9085,0x2d28323b,0x231af02f,0x0992c163,0x93458cac,0x888e3bb4,0x1fef8e71,0xbe8c268c,0x27578da5,0xe805ec00,0xcc8be792 +.long 0xc61c3855,0x29267bae,0x58c1fd3b,0xebff429d,0x8c0b93b8,0x22d886c0,0x2ddb8953,0xca5e00b2,0xc3fed8b7,0xcf330117,0x819c01f6,0xd49ac6fa,0x3c0fbd54,0x6ddaa6bd,0x8049a2cf,0x91743068 +.long 0xaff2ef81,0xd67f981e,0x2818ae80,0xc3654d35,0x1b2aa892,0x81d05044,0x3d099328,0x2db067bf,0x703dcc97,0xe7c79e86,0xe133e215,0xe66f9b37,0xe39a7a5c,0xcdf119a6,0x876f1b61,0x47c60de3 +.long 0xd860f1b2,0x6e405939,0xf5ed4d4a,0x3e9a1dbc,0xc9b6bcbd,0x3f23619e,0x734e4497,0x5ee790cf,0x5bdaf9bb,0xf0a834b1,0x4ca295f0,0x02cedda7,0xcb8e378c,0x4619aa2b,0xcc987ea4,0xe5613244 +.long 0x76b23a50,0x0bc022cc,0x0a6c21ce,0x4a2793ad,0x89cac3f5,0x38328780,0xcba26d56,0x29176f1b,0x4f6f59eb,0x06296187,0x8bdc658e,0x86e9bca9,0x57e30402,0x2ca9c4d3,0x516a09bb,0x5438b216 +.long 0x7672765a,0x0a6a063c,0x0547b9bf,0x37a3ce64,0x98b1a633,0x42c099c8,0x05ee6961,0xb5ab800d,0x11a5acd6,0xf1963f59,0x46201063,0xbaee6157,0xa596210a,0x36d9a649,0x1ba7138c,0xaed04363 +.long 0xa4a82b76,0xcf817d1c,0xf3806be9,0x5586960e,0x09dc6bb5,0x7ab67c89,0x114fe7eb,0x52ace7a0,0xcbbc9b70,0xcd987618,0x604ca5e1,0x4f06fd5a,0x6dbde133,0x90af14ca,0x948a3264,0x1afe4322 +.long 0xc44b2c6c,0xa70d2ca6,0x0ef87dfe,0xab726799,0x2e696377,0x310f64dc,0x4c8126a0,0x49b42e68,0xcea0b176,0x0ea444c3,0xcb269182,0x53a8ddf7,0xbbba9dcb,0xf3e674eb,0xd8669d33,0x0d2878a8 +.long 0xd019b6a3,0x04b935d5,0x406f1e46,0xbb5cf88e,0x5b57c111,0xa1912d16,0x19ebfd78,0x9803fc21,0xc07764a9,0x4f231c9e,0xb75bd055,0xd93286ee,0x8ee6c9de,0x83a9457d,0x6087ec90,0x04695915 +.long 0x58d6cd46,0x14c6dd8a,0x8e6634d2,0x9cb633b5,0xf81bc328,0xc1305047,0x26a177e5,0x12ede0e2,0x065a6f4f,0x332cca62,0x67be487b,0xc3a47ecd,0x0f47ed1c,0x741eb187,0xe7598b14,0x99e66e58 +.long 0x63d0ff12,0x6f0544ca,0xb610a05f,0xe5efc784,0x7cad7b47,0xf72917b1,0xf2cac0c0,0x3ff6ea20,0xf21db8b7,0xcc23791b,0xd7d93565,0x7dac70b1,0x694bdaad,0x682cda1d,0x1023516d,0xeb88bb8c +.long 0xdfdbeb1b,0xc4c634b4,0xb4ee4dea,0x22f5ca72,0xe6524821,0x1045a368,0x052b18b2,0xed9e8a3f,0xb961f49a,0x9b7f2cb1,0x7b009670,0x7fee2ec1,0x22507a6d,0x350d8754,0x4db55f1d,0x561bd711 +.long 0x320bbcaf,0x4c189ccc,0xdf1de48c,0x568434cf,0x0fa8f128,0x6af1b00e,0x8907583c,0xf0ba9d02,0x32ff9f60,0x735a4004,0xc25dcf33,0x3dd8e4b6,0x42c74cef,0xf2230f16,0x013fa8ad,0xd8117623 +.long 0xf51fe76e,0x36822876,0x11d62589,0x8a6811cc,0x46225718,0xc3fc7e65,0xc82fdbcd,0xb7df2c9f,0xdd7b205b,0x3b1d4e52,0x47a2e414,0xb6959478,0xefa91148,0x05e4d793,0xfd2e9675,0xb47ed446 +.long 0x04c9d9bf,0x1a7098b9,0x1b793048,0x661e2881,0xb01ee461,0xb1a16966,0x2954746f,0xbc521308,0x2477de50,0xc909a0fc,0x7dbd51ef,0xd80bb41c,0x53294905,0xa85be7ec,0x83958f97,0x6d465b18 +.long 0xfb6840fd,0x16f6f330,0x3401e6c8,0xfaaeb214,0xccb5b4f8,0xaf83d30f,0x266dec4b,0x22885739,0x7bc467df,0x51b4367c,0xd842d27a,0x926562e3,0x0fea14a6,0xdfcb6614,0xf2734cd9,0xeb394dae +.long 0x11c0be98,0x3eeae5d2,0x814e8165,0xb1e6ed11,0xe52bce1c,0x191086bc,0xa75a04da,0x14b74cc6,0x8c060985,0x63cf1186,0x2dbd7f7c,0x071047de,0xce0942ca,0x4e433b8b,0xd8fec61d,0xecbac447 +.long 0xebf3232f,0x8f0ed0e2,0xc52a2edd,0xfff80f9e,0x75b55fdb,0xad9ab433,0xe42e0c11,0x73ca7820,0xe6251b46,0x6dace0a0,0x4c0d932d,0x89bc6b5c,0x095da19a,0x3438cd77,0x8d48bdfb,0x2f24a939 +.long 0x766561b7,0x99b47e46,0x0ed0322a,0x736600e6,0x638e1865,0x06a47cb1,0xcb136000,0x927c1c2d,0x0cc5df69,0x29542337,0x09d649a9,0x99b37c02,0x6aefdb27,0xc5f0043c,0x1be95c27,0x6cdd9987 +.long 0x390420d2,0x69850931,0x0983efa4,0x299c40ac,0xaf39aead,0x3a05e778,0x43a45193,0x84274408,0x91a711a0,0x6bcd0fb9,0x9f52ab17,0x461592c8,0xda3c6ed6,0xb49302b4,0x330d7067,0xc51fddc7 +.long 0xda50d531,0x94babeb6,0xa6a7b9da,0x521b840d,0x404bdc89,0x5305151e,0xd0d07449,0x1bcde201,0x3b76a59a,0xf427a78b,0x07791a1b,0xf84841ce,0xbf91ed1c,0xebd314be,0xbf172943,0x8e61d34c +.long 0x5541b892,0x1d5dc451,0xfc9d9e54,0xb186ee41,0xd5bf610d,0x9d9f345e,0xf6acca9f,0x3e7ba65d,0xa8369486,0x9dda787a,0x8eb5ba53,0x09f9dab7,0xd6481bc3,0x5afb2033,0xafa62104,0x76f4ce30 +.long 0xf4f066b5,0xa8fa00cf,0x461dafc2,0x89ab5143,0xa3389998,0x44339ed7,0xbc214903,0x2ff862f1,0xb05556e3,0x2c88f985,0x3467081e,0xcd96058e,0xedc637ea,0x7d6a4176,0x36a5acdc,0xe1743d09 +.long 0x7eb37726,0x66fd72e2,0x1481a037,0xf7fa264e,0x45f4aa79,0x9fbd3bde,0x767c3e22,0xed1e0147,0x82e7abe2,0x7621f979,0x45f633f8,0x19eedc72,0x6137bf3a,0xe69b155e,0x414ee94e,0xa0ad13ce +.long 0x1c0e651a,0x93e3d524,0x02ce227e,0xab1a6e2a,0x4ab27eca,0xe7af1797,0xbd444f39,0x245446de,0x56c07613,0x59e22a21,0xf4275498,0x43deafce,0x67fd0946,0x10834ccb,0x47406edf,0xa75841e5 +.long 0x7b0ac93d,0xebd6a677,0x78f5e0d7,0xa6e37b0d,0x76f5492b,0x2516c096,0x9ac05f3a,0x1e4bf888,0x4df0ba2b,0xcdb42ce0,0x5062341b,0x935d5cfd,0x82acac20,0x8a303333,0x5198b00e,0x429438c4 +.long 0x049d33fa,0x1d083bc9,0x946f67ff,0x58b82dda,0x67a1d6a3,0xac3e2db8,0x1798aac8,0x62e6bead,0xde46c58c,0xfc85980f,0x69c8d7be,0xa7f69379,0x837b35ec,0x23557927,0xe0790c0c,0x06a933d8 +.long 0x077ff55d,0x827c0e9b,0xbb26e680,0x53977798,0x1d9cb54f,0x59530874,0x4aac53ef,0xcca3f449,0xa07eda0f,0x11dc5c87,0xfd6400c8,0xc138bccf,0x13e5da72,0x549680d3,0x4540617e,0xc93eed82 +.long 0x4d0b75c0,0xfd3db157,0x6386075b,0x9716eb42,0x817b2c16,0x0639605c,0xf1e4f201,0x09915109,0x5cca6c3b,0x35c9a928,0x3505c900,0xb25f7d1a,0x630480c4,0xeb9f7d20,0x2a1a501c,0xc3c7b8c6 +.long 0x5a1f8e24,0x3f99183c,0x9dd255f0,0xfdb118fa,0xc27f62a6,0xb9b18b90,0x396ec191,0xe8f732f7,0x0be786ab,0x524a2d91,0x0ac5a0f5,0x5d32adef,0x9725f694,0x9b53d4d6,0x0510ba89,0x032a76c6 +.long 0xebeb1544,0x840391a3,0x3ed73ac3,0x44b7b88c,0x256cb8b3,0xd24bae7a,0xe394cb12,0x7ceb151a,0x5bc1e6a8,0xbd6b66d0,0x090f07bf,0xec70cecb,0x7d937589,0x270644ed,0x5f1dccfe,0xee9e1a3d +.long 0x745b98d2,0xb0d40a84,0x2556ed40,0xda429a21,0x85148cb9,0xf676eced,0xded18936,0x5a22d40c,0x70e8a4ce,0x3bc4b9e5,0x9eae0379,0xbfd1445b,0x1a0bd47e,0xf23f2c0c,0xe1845531,0xa9c0bb31 +.long 0x0a4c3f6b,0x9ddc4d60,0x2c15ef44,0xbdfaad79,0x7f484acc,0xce55a236,0x055b1f15,0x08653ca7,0x538873a3,0x2efa8724,0xace1c7e7,0x09299e5d,0xade332ba,0x07afab66,0x92dd71b7,0x9be1fdf6 +.long 0x5758b11c,0xa49b5d59,0xc8654f40,0x0b852893,0x52379447,0xb63ef6f4,0x105e690c,0xd4957d29,0x646559b0,0x7d484363,0x49788a8e,0xf4a8273c,0x34ce54a9,0xee406cb8,0xf86fda9b,0x1e1c260f +.long 0xcf6a4a81,0xe150e228,0x1b488772,0x1fa3b6a3,0xc5a9c15b,0x1e6ff110,0x8ad6aa47,0xc6133b91,0x9dffa978,0x8ac5d55c,0x5f3965f2,0xba1d1c1d,0x7732b52f,0xf969f4e0,0xa5172a07,0xfceecdb5 +.long 0x10f2b8f5,0xb0120a5f,0x5c4c2f63,0xc83a6cdf,0xf8f9c213,0x4d47a491,0xd3f1bbd5,0xd9e1cce5,0xaba7e372,0x0d91bc7c,0xdfd1a2db,0xfcdc74c8,0x374618e5,0x05efa800,0x15a7925e,0x11216969 +.long 0xf6021c5d,0xd4c89823,0xeff14423,0x880d5e84,0x6dcd1396,0x6523bc5a,0x113c978b,0xd1acfdfc,0xbbb66840,0xb0c164e8,0x72b58459,0xf7f4301e,0xa638e8ec,0xc29ad4a6,0x46b78699,0xf5ab8961 +.long 0x0e954750,0x9dbd7974,0x64f9d2c6,0x0121de88,0xd985232e,0x2e597b42,0x53451777,0x55b6c3c5,0x519cb9fb,0xbb53e547,0x8428600d,0xf134019f,0xe081791a,0x5a473176,0x35fb0c08,0x2f3e2263 +.long 0x73d273b0,0xb28c3017,0x7721ef9a,0xccd21076,0xb650dc39,0x054cc292,0x6188045e,0x662246de,0x6b83c0d1,0x904b52fa,0x97e9cd46,0xa72df267,0x899725e4,0x886b43cd,0xd849ff22,0x2b651688 +.long 0x02f34533,0x60479b79,0x0c77c148,0x5e354c14,0xa8537c78,0xb4bb7581,0xefe1495f,0x188043d7,0x8c1d5026,0x9ba12f42,0x93d4aaab,0x2e0c8a26,0xaa57c450,0xbdba7b8b,0x9bbdafef,0x140c9ad6 +.long 0x25ac0f18,0x2067aa42,0x04d1fbf3,0xf7b1295b,0xa4b04824,0x14829111,0x33bd5e91,0x2ce3f192,0x8f2e1b72,0x9c7a1d55,0x302aa243,0xfe932286,0xd4be9554,0x497ca7b4,0xe0547a6e,0xb8e821b8 +.long 0x67e573e0,0xfb2838be,0x4084c44b,0x05891db9,0x96c1c2c5,0x91311373,0xd958444b,0x6aebfa3f,0xe56e55c1,0xac9cdce9,0x2caa46d0,0x7148ced3,0xb61fe8eb,0x2e10c7ef,0xff97cf4d,0x9fd835da +.long 0x081e9387,0xa36da109,0x8c935828,0xfb9780d7,0xe540b015,0xd5940332,0xe0f466fa,0xc9d7b51b,0xd6d9f671,0xfaadcd41,0xb1a2ac17,0xba6c1e28,0xed201e5f,0x066a7833,0xf90f462b,0x19d99719 +.long 0x060b5f61,0xf431f462,0x7bd057c2,0xa56f46b4,0x47e1bf65,0x348dca6c,0x41bcf1ff,0x9a38783e,0xda710718,0x7a5d33a9,0x2e0aeaf6,0x5a779987,0x2d29d187,0xca87314d,0xc687d733,0xfa0edc3e +.long 0x6a31e09b,0x9df33621,0xc1350e35,0xde89e44d,0x4ca0cf52,0x29214871,0x0b88a538,0xdf379672,0x2591d61b,0xc92a510a,0x585b447b,0x79aa87d7,0xe5287f77,0xf67db604,0x5efe7a80,0x1697c8bf +.long 0xcb198ac7,0x1c894849,0x0f264665,0xa884a93d,0x9b200678,0x2da964ef,0x009834e6,0x3c351b87,0xe2c4b44b,0xafb2ef9f,0x3326790c,0x580f6c47,0x0b02264a,0xb8480521,0x42a194e2,0x8ba6f9e2 +.long 0x8fb54738,0xfc87975f,0x27c3ead3,0x35160788,0xb74a085a,0x834116d2,0xa62fe996,0x53c99a73,0x5b81c51b,0x87585be0,0xbe0852b7,0x925bafa8,0xa84d19a7,0x76a4fafd,0x585206d4,0x39a45982 +.long 0x5eb03c0e,0x499b6ab6,0x72bc3fde,0xf19b7954,0x6e3a80d2,0xa86b5b9c,0x6d42819f,0xe4377508,0xbb3ee8a3,0xc1663650,0xb132075f,0x75eb14fc,0x7ad834f6,0xa8ccc906,0xe6e92ffd,0xea6a2474 +.long 0x0f8d6758,0x9d72fd95,0x408c07dd,0xcb84e101,0xa5e23221,0xb9114bfd,0xe94e742c,0x358b5fe2,0x95f40e75,0x1c0577ec,0x3d73f3d6,0xf0155451,0xbd1b9b66,0x9d55cd67,0xaf8d63c7,0x63e86e78 +.long 0xd3c095f1,0x39d934ab,0xe4b76d71,0x04b261be,0xe73e6984,0x1d2e6970,0x5e5fcb11,0x879fb23b,0xdfd75490,0x11506c72,0x61bcf1c1,0x3a97d085,0xbf5e7007,0x43201d82,0x798232a7,0x7f0ac52f +.long 0x6eb564d4,0x2715cbc4,0x9e570e29,0x8d6c752c,0x9ef5fd5d,0xf80247c8,0xd53eb514,0xc3c66b46,0x0f87de56,0x9666b401,0xc6c603b5,0xce62c06f,0x7e4fc942,0xae7b4c60,0x663a9c19,0x38ac0b77 +.long 0x4b049136,0xcb4d20ee,0x356a4613,0x8b63bf12,0x70e08128,0x1221aef6,0x4acb6b16,0xe62d8c51,0x379e7896,0x71f64a67,0xcafd7fa5,0xb25237a2,0x3841ba6a,0xf077bd98,0x3cd16e7e,0xc4ac0244 +.long 0x21fea4ca,0x548ba869,0xf3dfdac1,0xd36d0817,0xf4685faf,0x09d8d71f,0xc52c459a,0x8eff66be,0x0b57235e,0x182faee7,0x0106712b,0xee3c39b1,0xc0fcdcb0,0x5107331f,0xa51054ba,0x669fb9dc +.long 0x319d7682,0xb25101fb,0x0a982fee,0xb0293129,0x0261b344,0x51c1c9b9,0xbfd371fa,0x0e008c5b,0x0278ca33,0xd866dd1c,0xe5aa53b1,0x666f76a6,0x6013a2cf,0xe5cfb779,0xa3521836,0x1d3a1aad +.long 0x73faa485,0xcedd2531,0xc0a76878,0xc8ee6c4f,0x2a11667d,0xddbccfc9,0x1c2f695a,0x1a418ea9,0x51f73971,0xdb11bd92,0xda2ed89f,0x3e4b3c82,0xe73e0319,0x9a44f3f4,0x303431af,0xd1e3de0f +.long 0x50f75f9c,0x3c5604ff,0x7e752b22,0x1d8eddf3,0x3c9a1118,0x0ef074dd,0xccb86d7b,0xd0ffc172,0x037d90f2,0xabd1ece3,0x6055856c,0xe3f307d6,0x7e4c6daf,0x422f9328,0x334879a0,0x902aac66 +.long 0x94cdfade,0xb6a1e7bf,0x7fc6d634,0x6c97e1ed,0xa2fb63f8,0x662ad24d,0xa5928405,0xf81be1b9,0xd14b4206,0x86d765e4,0x8fa0db65,0xbecc2e0e,0xb17fc76c,0xa28838e0,0xe37cf24e,0xe49a602a +.long 0x567193ec,0x76b4131a,0xe5f6e70b,0xaf3c305a,0x031eebdd,0x9587bd39,0x71bbe831,0x5709def8,0x0eb2b669,0x57059983,0x875b7029,0x4d80ce1b,0x0364ac16,0x838a7da8,0xbe1c83ab,0x2f431d23 +.long 0xf9294dd3,0xe56812a6,0x9b4b0d77,0xb448d01f,0x04e8305c,0xf3ae6061,0x94d8c63e,0x2bead645,0x84fd8b07,0x0a85434d,0xf7a9dee5,0x537b983f,0xef55bd85,0xedcc5f18,0x21c6cf8b,0x2041af62 +.long 0xb940c71e,0x8e52874c,0xdb5f4b3a,0x211935a9,0x301b1dc3,0x94350492,0x29958620,0x33d2646d,0xef911404,0x16b0d64b,0x9a3c5ef4,0x9d1f25ea,0x4a352c78,0x20f200eb,0x4bd0b428,0x43929f2c +.long 0xc7196e29,0xa5656667,0x9391be48,0x7992c2f0,0x9ee0cd6e,0xaaa97cbd,0x3dc8c9bf,0x51b0310c,0xdd9f22cb,0x237f8acf,0xb585d584,0xbb1d81a1,0x8c416388,0x8d5d85f5,0x42fe474f,0x0d6e5a5a +.long 0x38235d4e,0xe7812766,0x496e3298,0x1c62bd67,0x3f175bc8,0x8378660c,0x17afdd4d,0x4d04e189,0x85a8068c,0x32a81601,0x92b29a85,0xdb58e4e1,0xc70d8a3b,0xe8a65b86,0x98a0403b,0x5f0e6f4e +.long 0x69ed2370,0x08129684,0x0871ee26,0x34dc30bd,0x7c9c5b05,0x3a5ce948,0x43a90c87,0x7d487b80,0xdd0e7179,0x4089ba37,0xb4041811,0x45f80191,0x98747ba5,0x1c3e1058,0x6e1ae592,0x98c4e13a +.long 0xe82c9f9e,0xd44636e6,0xc33a1043,0x711db87c,0xaa8aec05,0x6f431263,0x2744a4aa,0x43ff120d,0xae77779b,0xd3bd892f,0x8cdc9f82,0xf0fe0cc9,0xf1c5b1bc,0xca5f7fe6,0x44929a72,0xcc63a682 +.long 0x09dbe19a,0xc7eaba0c,0x6b5c73c2,0x2f3585ad,0x0ae50c30,0x8ab8924b,0x638b30ba,0x17fcd27a,0x10b3d5a5,0xaf414d34,0x2a9accf1,0x09c107d2,0x946a6242,0x15dac49f,0xd707d642,0xaec3df2a +.long 0x3f894ae0,0x2c2492b7,0xb75f18ce,0xf59df3e5,0x8f53cad0,0x7cb740d2,0xc4f01294,0x3eb585fb,0x32c7f717,0x17da0c86,0xaf943f4c,0xeb8c795b,0xf67c51d2,0x4ee23fb5,0x68889949,0xef187575 +.long 0x0389168b,0xa6b4bdb2,0xea577d03,0xc4ecd258,0x55743082,0x3a63782b,0xc72f08cd,0x6f678f4c,0x65e58dd8,0x553511cf,0xd402c0cd,0xd53b4e3e,0xa037c14c,0x37de3e29,0xc05712aa,0x86b6c516 +.long 0xb38dff6f,0x2834da3e,0xea636be8,0xbe012c52,0x61dd37f8,0x292d238c,0x8f8142db,0x0e54523f,0x036a05d8,0xe31eb436,0x1e93c0ff,0x83e3cdff,0x50821ddf,0x3fd2fe0f,0xff9eb33b,0xc8e19b0d +.long 0xb569a5fe,0xc8cc943f,0xd4342d75,0xad0090d4,0xcaeca000,0x82090b4b,0x1bd410eb,0xca39687f,0x65959d77,0xe7bb0df7,0x9c964999,0x39d78218,0xb2415451,0xd87f62e8,0xbed76108,0xe5efb774 +.long 0xe822f0d0,0x3ea011a4,0x5a8704f8,0xbc647ad1,0x50c6820f,0xbb315b35,0xb7e76bec,0x863dec3d,0xf017bfc7,0x01ff5d3a,0x976b8229,0x20054439,0x0bbd0d3b,0x067fca37,0x7f5e3d0f,0xf63dde64 +.long 0x2a4c94e9,0x22dbefb3,0x96f8278a,0xafbff0fe,0x3503793d,0x80aea0b1,0x5f06cd29,0xb2238029,0x8ec3feca,0x65703e57,0x393e7053,0x06c38314,0x7c6734c4,0xa0b751eb,0xc59f0f1e,0xd2e8a435 +.long 0x5e9ca895,0x147d9052,0x972072df,0x2f4dd31e,0xe6c6755c,0xa16fda8e,0xcf196558,0xc66826ff,0x0cf43895,0x1f1a76a3,0x83c3097b,0xa9d604e0,0x66390e0e,0xe1908309,0xb3c85eff,0xa50bf753 +.long 0xf6a70251,0x0696bdde,0x3c6ab16a,0x548b801b,0xa4d08762,0x37fcf704,0xdff76c4e,0x090b3def,0x69cb9158,0x87e8cb89,0x995ece43,0x44a90744,0x0ad9fbf5,0xf85395f4,0x4fb0c82d,0x49b0f6c5 +.long 0xadf7cccf,0x75d9bc15,0xdfa1e1b0,0x81a3e5d6,0x249bc17e,0x8c39e444,0x8ea7fd43,0xf37dccb2,0x907fba12,0xda654873,0x4a372904,0x35daa6da,0x6283a6c5,0x0564cfc6,0x4a9395bf,0xd09fa4f6 +.long 0xaeb19a36,0x688e9ec9,0xc7bfbfb4,0xd913f1ce,0x61c2faa6,0x797b9a3c,0x6a0a9c12,0x2f979bec,0x359679ec,0xb5969d0f,0x079b0460,0xebcf523d,0x10fab870,0xfd6b0008,0x9373a39c,0x3f2edcda +.long 0x6f568431,0x0d64f9a7,0x02f8898c,0xf848c27c,0x260b5bd5,0xf418ade1,0x6973dee8,0xc1f3e323,0x26c185dd,0x46e9319c,0x546f0ac4,0x6d85b7d8,0x247f9d57,0x427965f2,0xb0035f48,0xb519b636 +.long 0xab87d59c,0x6b6163a9,0x39caaa11,0xff9f58c3,0x3177387b,0x4ac39cde,0x873e77f9,0x5f6557c2,0x36a83041,0x67504006,0x75ef196c,0x9b1c96ca,0xb08c7940,0xf34283de,0x1128c316,0x7ea09644 +.long 0x6aa39dff,0xb510b3b5,0x9f8e4d8c,0x59b43da2,0x9e4c4b9f,0xa8ce31fd,0xc1303c01,0x0e20be26,0xe8ee47c9,0x18187182,0x7db98101,0xd9687cdb,0xa1e14ff6,0x7a520e4d,0x8836d572,0x429808ba +.long 0x4944b663,0xa37ca60d,0xa3f91ae5,0xf901f7a9,0x9e36e3b1,0xe4e3e76e,0x29d93250,0x9aa219cf,0x056a2512,0x347fe275,0xde65d95c,0xa4d643d9,0x699fc3ed,0x9669d396,0xcf8c6bbe,0xb598dee2 +.long 0xdda9e5c6,0x682ac1e5,0xcaa9fc95,0x4e0d3c72,0x772bea44,0x17faaade,0xab0009c8,0x5ef8428c,0x460ff016,0xcc4ce47a,0x725281cb,0xda6d12bf,0x0223aad2,0x44c67848,0x36256e28,0x6e342afa +.long 0x93a37c04,0x1400bb0b,0xdd10bd96,0x62b1bc9b,0x0dac46b7,0x7251adeb,0x7be4ef51,0x7d33b92e,0xe61fa29a,0x28b2a94b,0x06422233,0x4b2be13f,0x330d8d37,0x36d6d062,0xb28ca005,0x5ef80e1e +.long 0x6d16768e,0x174d4699,0x628bf217,0x9fc4ff6a,0x154e490d,0x77705a94,0x8d2d997a,0x9d96dd28,0xce5d72c4,0x77e2d9d8,0xc11c714f,0x9d06c5a4,0x79e4a03e,0x02aa5136,0x030ff28b,0x1386b3c2 +.long 0xfb283f61,0xfe82e8a6,0xf3abc3fb,0x7df203e5,0x3a4d3622,0xeec7c351,0xdf762761,0xf7d17dbf,0x522055f0,0xc3956e44,0x8fa748db,0xde3012db,0xbf1dcc14,0xca9fcb63,0xbe4e2f3a,0xa56d9dcf +.long 0x8bcec9c2,0xb86186b6,0x680b9f06,0x7cf24df9,0xc0d29281,0xc46b45ea,0x07b10e12,0xfff42bc5,0x4d289427,0x12263c40,0xb4848ec4,0x3d5f1899,0xd040800c,0x11f97010,0x300feb20,0xb4c5f529 +.long 0xde94fdcb,0xcc543f8f,0xc7c2f05e,0xe96af739,0x882692e1,0xaa5e0036,0x950d4ae9,0x09c75b68,0xb5932a7a,0x62f63df2,0xde0979ad,0x2658252e,0xb5e69631,0x2a19343f,0x525b666b,0x718c7501 +.long 0xea40dc3a,0x26a42d69,0xaecc018f,0xdc84ad22,0x3270f04a,0x25c36c7b,0x50fa72ed,0x46ba6d47,0x93e58a8e,0x6c37d1c5,0x120c088c,0xa2394731,0xcb6e86da,0xc3be4263,0x7126d038,0x2c417d36 +.long 0x8b6f8efa,0x5b70f9c5,0x37718536,0x671a2faa,0xb539c92b,0xd3ced3c6,0xa31203c2,0xe56f1bd9,0x9ff3c8eb,0x8b096ec4,0x43491cea,0x2deae432,0x17943794,0x2465c6eb,0x20586843,0x5d267e66 +.long 0xb07159d0,0x9d3d116d,0xc1896210,0xae07a67f,0xbb961579,0x8fc84d87,0x1c1f8dd6,0x30009e49,0xe3132819,0x8a8caf22,0xf23ab4ff,0xcffa197c,0x205dd687,0x58103a44,0x0ded67a2,0x57b796c3 +.long 0xa1779ad7,0x0b9c3a6c,0x357c09c5,0xa33cfe2e,0x3db4a57e,0x2ea29315,0x8ebeb52e,0x91959695,0xe546c879,0x118db9a6,0x6295c8d6,0x8e996df4,0x55ec806b,0xdd990484,0x165c1035,0x24f291ca +.long 0x440e2229,0xcca523bb,0x73ef4d04,0x324673a2,0x3e11ec39,0xaf3adf34,0xdc5968d3,0x6136d7f1,0xb053a927,0x7a7b2899,0xae067ecd,0x3eaa2661,0x02779cd9,0x8549b9c8,0xc53385ea,0x061d7940 +.long 0xf06d18bd,0x3e0ba883,0xb2700843,0x4ba6de53,0x591a9e4d,0xb966b668,0x7f4fa0ed,0x93f67567,0x4347237b,0x5a02711b,0xe794608e,0xbc041e2f,0x70f73d8c,0x55af10f5,0xbb7564f7,0xd2d4d4f7 +.long 0xb3e93ce7,0xd7d27a89,0x5d3a2c1b,0xf7b5a875,0x255b218a,0xb29e68a0,0x8af76754,0xb533837e,0x579fab2e,0xd1b05a73,0xecd74385,0xb41055a1,0x445e9115,0xb2369274,0xf520274e,0x2972a7c4 +.long 0xf678e68a,0x6c08334e,0x99b057ed,0x4e4160f0,0x52ccb69a,0x3cfe11b8,0x21c8f772,0x2fd1823a,0x3298f055,0xdf7f072f,0xfec74a6e,0x8c0566f9,0x5bb4d041,0xe549e019,0x9208d850,0x7c3930ba +.long 0xaaa2902b,0xe07141fc,0xe4f69ad3,0x539ad799,0x813f9ffd,0xa6453f94,0x375bc2f7,0xc58d3c48,0x5dc64e96,0xb3326fad,0xb240e354,0x3aafcaa9,0xaca1e7a9,0x1d1b0903,0x1211b8a0,0x4ceb9767 +.long 0xe32a858e,0xeca83e49,0xae907bad,0x4c32892e,0x2eb9b494,0xd5b42ab6,0x1eabae1b,0x7fde3ee2,0xcaf54957,0x13b5ab09,0xe5f5d5d5,0xbfb028be,0x2003e2c0,0x928a0650,0x67476843,0x90793aac +.long 0xc81710a0,0x5e942e79,0x27ccadd4,0x557e4a36,0x4bcf6d0c,0x72a2bc56,0x26d7b80c,0x09ee5f43,0xd4292f19,0x6b70dbe9,0x63f16b18,0x56f74c26,0x35fbb42a,0xc23db0f7,0x6ae10040,0xb606bdf6 +.long 0x044573ac,0x1eb15d4d,0x556b0ba4,0x7dc3cf86,0xc60df6f7,0x97af9a33,0xa716ce8c,0x0b1ef85c,0xc96958be,0x2922f884,0x35690963,0x7c32fa94,0xeaa00061,0x2d7f667c,0x3547365c,0xeaaf7c17 +.long 0x87032d58,0x1eb4de46,0x5e2c79e0,0xc54f3d83,0x5d04ef23,0x07818df4,0x673d41b4,0x55faa9c8,0x89b95355,0xced64f6f,0xb7415c84,0x4860d2ea,0x050ebad3,0x5fdb9bd2,0x6685a5bf,0xdb53e0cc +.long 0x9feb6593,0xb830c031,0x6accff17,0xdd87f310,0x9f555c10,0x2303ebab,0x287e7065,0x94603695,0x2e83358c,0xf88311c3,0xeefb0178,0x508dd9b4,0x2dba8652,0x7ca23706,0x0047abe5,0x62aac5a3 +.long 0x8b1ea7b3,0x9a61d2a0,0xae8b1485,0xd495ab63,0x87052f99,0x38740f84,0xb2974eea,0x178ebe5b,0x5b36d17f,0x030bbcca,0xaaf86eea,0xb5e4cce3,0x68f8e9e0,0xb51a0220,0x09eb3e75,0xa4348796 +.long 0xeef1a752,0xbe592309,0x6f2aa1ed,0x5d7162d7,0x0f007dd2,0xaebfb5ed,0xc89edd22,0x255e14b2,0x0303b697,0xba85e072,0xf05720ff,0xc5d17e25,0x5128ebb6,0x02b58d6e,0xd754e113,0x2c80242d +.long 0xabfae1ca,0x919fca5f,0x1a21459b,0x937afaac,0x1f66a4d2,0x9e0ca91c,0x23ec1331,0x194cc7f3,0x8aa11690,0xad25143a,0x09b59e08,0xbe40ad8d,0xe750860a,0x37d60d9b,0xc6bf434c,0x6c53b008 +.long 0x1356eb80,0xb572415d,0x9578ded8,0xb8bf9da3,0x5e8fb38b,0x22658e36,0x5af8cb22,0x9b70ce22,0x829a8180,0x7c00018a,0xb81ed295,0x84329f93,0x5f3cea83,0x7c343ea2,0x67586536,0x38f8655f +.long 0x1d3ec517,0xa661a0d0,0x512321ae,0x98744652,0xeca92598,0x084ca591,0x1dcb3feb,0xa9bb9dc9,0x78b4c240,0x14c54355,0x610cafdc,0x5ed62a3b,0x1b38846b,0x07512f37,0xb0e38161,0x571bb70a +.long 0x2da705d2,0xb556b95b,0xb1a08f98,0x3ef8ada6,0xddecfbe5,0x85302ca7,0x943105cd,0x0e530573,0x21a9255d,0x60554d55,0xf2f3802a,0x63a32fa1,0xcd477875,0x35c8c5b0,0x6ad42da1,0x97f458ea +.long 0xeb6b242d,0x832d7080,0x3b71e246,0xd30bd023,0xbe31139d,0x7027991b,0x462e4e53,0x68797e91,0x6b4e185a,0x423fe20a,0x42d9b707,0x82f2c67e,0x4cf7811b,0x25c81768,0x045bb95d,0xbd53005e +.long 0x9d8e68fd,0xe5f649be,0x1b044320,0xdb0f0533,0xe0c33398,0xf6fde9b3,0x66c8cfae,0x92f4209b,0x1a739d4b,0xe9d1afcc,0xa28ab8de,0x09aea75f,0xeac6f1d0,0x14375fb5,0x708f7aa5,0x6420b560 +.long 0x6254dc41,0x9eae499c,0x7a837e7e,0x7e293924,0x090524a7,0x74aec08c,0x8d6f55f2,0xf82b9219,0x1402cec5,0x493c962e,0xfa2f30e7,0x9f17ca17,0xe9b879cb,0xbcd783e8,0x5a6f145f,0xea3d8c14 +.long 0x5e0dee6e,0xdede15e7,0xdc628aa2,0x74f24872,0x7861bb93,0xd3e9c4fe,0x6187b2e0,0x56d4822a,0xc59826f9,0xb66417cf,0x2408169e,0xca260969,0xc79ef885,0xedf69d06,0xdc7d138f,0x00031f8a +.long 0x0ebcf726,0x103c46e6,0x6231470e,0x4482b831,0x487c2109,0x6f6dfaca,0x62e666ef,0x2e0ace97,0x1f8d1f42,0x3246a9d3,0x574944d2,0x1b1e83f1,0xa57f334b,0x13dfa63a,0x9f025d81,0x0cf8daed +.long 0x00ee11c1,0x30d78ea8,0xb5e3dd75,0xeb053cd4,0xd58c43c5,0x9b65b13e,0xbd151663,0xc3ad49bd,0xb6427990,0x99fd8e41,0x707eae1e,0x12cf15bd,0x1aabb71e,0x29ad4f1b,0x07545d0e,0x5143e74d +.long 0xc88bdee1,0x30266336,0x5876767c,0x25f29306,0xc6731996,0x9c078571,0xed552951,0xc88690b2,0x852705b4,0x274f2c2d,0x4e09552d,0xb0bf8d44,0x986575d1,0x7628beeb,0x7f864651,0x407be238 +.long 0xa639fc6b,0x0e5e3049,0x86003625,0xe75c35d9,0x5dcc1646,0x0cf35bd8,0x6c26273a,0x8bcaced2,0xb5536742,0xe22ecf1d,0x1a9e068b,0x013dd897,0x8a7909c5,0x17f411cb,0x861dd506,0x5757ac98 +.long 0x1e935abb,0x85de1f0d,0x154de37a,0xdefd10b4,0x369cebb5,0xb8d9e392,0x761324be,0x54d5ef9b,0x74f17e26,0x4d6341ba,0x78c1dde4,0xc0a0e3c8,0x87d918fd,0xa6d77581,0x02ca3a13,0x66876015 +.long 0xf36658f0,0xc7313e9c,0x71f8057e,0xc433ef1c,0x1b6a835a,0x85326246,0x7c86394c,0xc8f05398,0xe983c4a1,0xff398cdf,0x03b7b931,0xbf5e8162,0xb7b9045b,0x93193c46,0xa4a6e46b,0x1e4ebf5d +.long 0x43a24fe7,0xf9942a60,0xffb3492b,0x29c1191e,0x902fde05,0x9f662449,0x6713c32d,0xc792a7ac,0xb737982c,0x2fd88ad8,0xa21e60e3,0x7e3a0319,0x7383591a,0x09b0de44,0x8310a456,0x6df141ee +.long 0xe6d6f471,0xaec1a039,0x1198d12e,0x14b2ba0f,0x3aeee5ac,0xebc1a160,0xe0b964ce,0x401f4836,0x4fd03f66,0x2ee43796,0xdd8f3f12,0x3fdb4e49,0x29380f18,0x6ef267f6,0x8da64d16,0x3e8e9670 +.long 0x207674f1,0xbc19180c,0x33ae8fdb,0x112e09a7,0x6aaeb71e,0x99667554,0xe101b1c7,0x79432af1,0xde2ddec6,0xd5eb558f,0x5357753f,0x81392d1f,0x3ae1158a,0xa7a76b97,0x4a899991,0x416fbbff +.long 0x0d4a9dcf,0x9e65fdfd,0x944ddf12,0x7bc29e48,0x3c856866,0xbc1a92d9,0x6e98dfe2,0x273c6905,0xcdfaa6b8,0x69fce418,0x5061c69f,0x606bd823,0x6af75e27,0x42d495a0,0x6d873a1f,0x8ed3d505 +.long 0x6ab25b6a,0xaf552841,0x2b1a4523,0xc6c0ffc7,0x21c99e03,0xab18827b,0x9034691b,0x060e8648,0x93c7f398,0x5207f90f,0x82f8d10b,0x9f4a96cb,0x3ad0f9e3,0xdd71cd79,0xfc3a54f5,0x84f435d2 +.long 0x8e33787f,0x4b03c55b,0xa6384673,0xef42f975,0x5051b9f0,0xff7304f7,0x741c87c2,0x18aca1dc,0x2d4bfe80,0x56f120a7,0x053e732c,0xfd823b3d,0x7537ca16,0x11bccfe4,0x1b5a996b,0xdf6c9c74 +.long 0x904fc3fa,0xee7332c7,0xc7e3636a,0x14a23f45,0xf091d9aa,0xc38659c3,0xb12d8540,0x4a995e5d,0xf3a5598a,0x20a53bec,0xb1eaa995,0x56534b17,0xbf04e03c,0x9ed3dca4,0xd8d56268,0x716c563a +.long 0x1d6178e7,0x27ba77a4,0x68a1ff8e,0xe4c80c40,0x0a13f63d,0x75011099,0xa61d46f3,0x7bf33521,0x10b365bb,0x0aff218e,0x0fd7ea75,0x81021804,0xa4b3a925,0x05a3fd8a,0x9b3db4e6,0xb829e75f +.long 0x4d53e5fb,0x6bdc75a5,0xd52717e3,0x04a5dc02,0xe9a42ec2,0x86af502f,0x2630e382,0x8867e8fb,0xbec9889b,0xbf845c6e,0xcb47c98d,0x54f491f2,0x790c2a12,0xa3091fba,0xc20f708b,0xd7f6fd78 +.long 0xacde5e17,0xa569ac30,0x6852b4d7,0xd0f996d0,0x4609ae54,0xe51d4bb5,0x0daed061,0x3fa37d17,0x34b8fb41,0x62a88684,0x9efb64f1,0x99a2acbd,0x6448e1f2,0xb75c1a5e,0x42b5a069,0xfa99951a +.long 0x2f3b26e7,0x6d956e89,0xda875247,0xf4709860,0x2482dda3,0x3ad15179,0x017d82f0,0xd64110e3,0xfad414e4,0x14928d2c,0x2ed02b24,0x2b155f58,0xcb821bf1,0x481a141b,0x4f81f5da,0x12e3c770 +.long 0x9fff8381,0xe49c5de5,0x5bbec894,0x11053232,0x454d88c4,0xa0d051cc,0x1f8e531b,0x4f6db89c,0xca563a44,0x34fe3fd6,0x58da8ab9,0x7f5c2215,0x9474f0a1,0x8445016d,0xcb7d8a0a,0x17d34d61 +.long 0x1c474019,0x8e9d3910,0xd52ceefb,0xcaff2629,0xc1622c2b,0xf9cf3e32,0xe9071a05,0xd4b95e3c,0x1594438c,0xfbbca61f,0x04aadedf,0x1eb6e6a6,0x68e14940,0x853027f4,0xdfabda9c,0x221d322a +.long 0xb7cb179a,0xed8ea9f6,0xb7934dcc,0xdc7b764d,0x5e09180d,0xfcb13940,0xb47dc2dd,0x6629a6bf,0x9f5a915e,0xbfc55e4e,0x6204441e,0xb1db9d37,0x930c5f53,0xf82d68cf,0xcbb605b1,0x17d3a142 +.long 0x308780f2,0xdd5944ea,0x3845f5e4,0xdc8de761,0x7624d7a3,0x6beaba7d,0x304df11e,0x1e709afd,0x02170456,0x95364376,0xc8f94b64,0xbf204b3a,0x5680ca68,0x4e53af7c,0xe0c67574,0x0526074a +.long 0xecd92af6,0x95d8cef8,0x6cd1745a,0xe6b9fa7a,0xa325c3e4,0x3d546d3d,0x9ae93aae,0x1f57691d,0x9d2e1a33,0xe891f3fe,0xac063d35,0xd430093f,0x5513a327,0xeda59b12,0x5536f18f,0xdc2134f3 +.long 0x5c210286,0xaa51fe2c,0x1cab658c,0x3f68aaee,0xf9357292,0x5a23a00b,0x7efdabed,0x9a626f39,0x199d78e3,0xfe2b3bf3,0x71bbc345,0xb7a2af77,0x1e59802c,0x3d19827a,0xb487a51c,0x823bbc15 +.long 0x99d0a422,0x856139f2,0xf456c6fb,0x9ac3df65,0x701f8bd6,0xaddf65c6,0x3758df87,0x149f321e,0x721b7eba,0xb1ecf714,0x31a3312a,0xe17df098,0xd5c4d581,0xdb2fd6ec,0x8fcea1b3,0xfd02996f +.long 0x7882f14f,0xe29fa63e,0x07c6cadc,0xc9f6dc35,0xb882bed0,0x46f22d6f,0xd118e52c,0x1a45755b,0x7c4608cf,0x9f2c7c27,0x568012c2,0x7ccbdf32,0x61729b0e,0xfcb0aedd,0xf7d75dbf,0x7ca2ca9e +.long 0x6f640f62,0xf58fecb1,0x39f51946,0xe274b92b,0x6288af44,0x7f4dfc04,0xeac329e5,0x0a91f32a,0xd6aaba31,0x43ad274b,0x0f6884f9,0x719a1640,0xdaf91e20,0x685d29f6,0x27e49d52,0x5ec1cc33 +.long 0x3b54a059,0x38f4de96,0xefbcfdb3,0x0e0015e5,0x4dbb8da6,0x177d23d9,0x97a617ad,0x98724aa2,0xfdb6558e,0x30f0885b,0xc7899a96,0xf9f7a28a,0x872dc112,0xd2ae8ac8,0x73c3c459,0xfa0642ca +.long 0xe7dfc8d6,0x15296981,0x1fb5b94a,0x67cd4450,0x0eddfd37,0x0ec71cf1,0x9a8eddc7,0xc7e5eeb3,0x81d95028,0x02ac8e3d,0x70b0e35d,0x0088f172,0xe1881fe3,0xec041fab,0xd99e7faa,0x62cf71b8 +.long 0xe0f222c2,0x5043dea7,0x72e65142,0x309d42ac,0x9216cd30,0x94fe9ddd,0x0f87feec,0xd6539c7d,0x432ac7d7,0x03c5a57c,0x327fda10,0x72692cf0,0x280698de,0xec28c85f,0x7ec283b1,0x2331fb46 +.long 0x2867e633,0xd34bfa32,0x0a9cc815,0x78709a82,0x875e2fa5,0xb7fe6964,0x9e98bfb5,0x25cc064f,0x493a65c5,0x9eb0151c,0x53182464,0x5fb5d941,0xf04618e2,0x69e6f130,0xf89c8ab6,0xa8ecec22 +.long 0xb96209bd,0xcd6ac88b,0xb3e1c9e0,0x65fa8cdb,0x4a8d8eac,0xa47d22f5,0x8d33f963,0x83895cdf,0xb56cd3d1,0xa8adca59,0xdaf38232,0x10c8350b,0xa5080a9f,0x2b161fb3,0x3af65b3a,0xbe7f5c64 +.long 0x97403a11,0x2c754039,0x121b96af,0x94626cf7,0x6a983ec2,0x431de7c4,0x52cc3df7,0x3780dd3a,0x2baf8e3b,0xe28a0e46,0x51d299ae,0xabe68aad,0x647a2408,0x603eb8f9,0x5c750981,0x14c61ed6 +.long 0xc53352e7,0x88b34414,0x1337d46e,0x5a34889c,0xf95f2bc8,0x612c1560,0xd4807a3a,0x8a3f8441,0x5224da68,0x680d9e97,0xc3eb00e9,0x60cd6e88,0x9a6bc375,0x3875a98e,0x4fd554c2,0xdc80f924 +.long 0x6ac77407,0x6c4b3415,0x25420681,0xa1e5ea8f,0x4607a458,0x541bfa14,0x96d7fbf9,0x5dbc7e7a,0x31590a47,0x646a851b,0x15ee6df8,0x039e85ba,0xd7b43fc0,0xd19fa231,0x299a0e04,0x84bc8be8 +.long 0xf20df03a,0x2b9d2936,0x8608d472,0x24054382,0x9149202a,0x76b6ba04,0x3670e7b7,0xb21c3831,0xd6fdee10,0xddd93059,0x78488e71,0x9da47ad3,0xa0fcfb25,0x99cc1dfd,0x64696954,0x42abde10 +.long 0x17eab9fe,0x14cc15fc,0xd3e70972,0xd6e863e4,0x6432112c,0x29a7765c,0x5b0774d8,0x88660001,0x2c088eae,0x3729175a,0x8230b8d4,0x13afbcae,0x915f4379,0x44768151,0xd8d22812,0xf086431a +.long 0xc298b974,0x37461955,0xf8711e04,0x905fb5f0,0xfe969d18,0x787abf3a,0x6f6a494e,0x392167c2,0x28c511da,0xfc7a0d2d,0xb66a262d,0xf127c7dc,0xfd63fdf0,0xf9c4bb95,0x3913ef46,0x90016589 +.long 0x11aa600d,0x74d2a73c,0x9fb5ab52,0x2f5379bd,0x7fb70068,0xe49e53a4,0x404aa9a7,0x68dd39e5,0x2ecaa9c3,0xb9b0cf57,0xe824826b,0xba0e103b,0x4631a3c4,0x60c2198b,0xfa8966a2,0xc5ff84ab +.long 0xac95aff8,0x2d6ebe22,0xb5a46d09,0x1c9bb6db,0x53ee4f8d,0x419062da,0xbb97efef,0x7b9042d0,0x830cf6bd,0x0f87f080,0x6ec8a6c6,0x4861d19a,0x202f01aa,0xd3a0daa1,0xf25afbd5,0xb0111674 +.long 0x1afb20d9,0x6d00d6cf,0x40671bc5,0x13695000,0x2485ea9b,0x913ab0dc,0x9eef61ac,0x1f2bed06,0x6d799e20,0x850c8217,0x3271c2de,0x93415f37,0x6c4f5910,0x5afb06e9,0xc4e9e421,0x688a52df +.long 0xe2a9a6db,0x30495ba3,0x58f9268b,0x4601303d,0x7eb0f04f,0xbe3b0dad,0x4456936d,0x4ea47250,0xd33fd3e7,0x8caf8798,0xeb433708,0x1ccd8a89,0x87fd50ad,0x9effe3e8,0x6b29c4df,0xbe240a56 +.long 0xca0e7ebd,0xec4ffd98,0xe748616e,0xf586783a,0xc77baa99,0xa5b00d8f,0xb4f34c9c,0x0acada29,0x0fe723ac,0x36dad67d,0x39c36c1e,0x1d8e53a5,0x1f4bea41,0xe4dd342d,0xebc9e4e0,0x64fd5e35 +.long 0x57908805,0x96f01f90,0x5ed480dd,0xb5b9ea3d,0x3efd2dd0,0x366c5dc2,0x6e9dfa27,0xed2fe305,0x6e9197e2,0x4575e892,0xab502a5d,0x11719c09,0xe81f213f,0x264c7bec,0x55f5c457,0x741b9241 +.long 0x49a5f4f4,0x78ac7b68,0x9fc45b7d,0xf91d70a2,0xb0f5f355,0x39b05544,0xeef930d9,0x11f06bce,0x038d05e1,0xdb84d25d,0xbacc1d51,0x04838ee5,0x9e8ee00b,0x9da3ce86,0xc36eda1f,0xc3412057 +.long 0x64d9c2f4,0xae80b913,0xa010a8ff,0x7468bac3,0x37359d41,0xdfd20037,0x15efeacc,0x1a0f5ab8,0x659d0ce0,0x7c25ad2f,0x6785cff1,0x4011bcbb,0x7e2192c7,0x128b9912,0x13ccb0e8,0xa549d8e1 +.long 0xc85438b1,0x805588d8,0xbc25cb27,0x5680332d,0x1a4bfdf4,0xdcd1bc96,0x706f6566,0x779ff428,0xf059987a,0x8bbee998,0xcc686de7,0xf6ce8cf2,0x953cfdb2,0xf8ad3c4a,0x2205da36,0xd1d426d9 +.long 0xc781a241,0xb3c0f13f,0xd75362a8,0x3e89360e,0xc8a91184,0xccd05863,0xefa8a7f4,0x9bd0c9b7,0x8a912a4b,0x97ee4d53,0xbcf518fd,0xde5e15f8,0xc467e1e0,0x6a055bf8,0x1587e256,0x10be4b4b +.long 0x668621c9,0xd90c14f2,0xab9c92c1,0xd5518f51,0xd6d47b3c,0x8e6a0100,0x66716175,0xcbe980dd,0xddd83683,0x500d3f10,0x99cac73c,0x3b6cb35d,0x6083d550,0x53730c8b,0xdf0a1987,0xcf159767 +.long 0x43ad73b3,0x84bfcf53,0x4f035a94,0x1b528c20,0x33eeac69,0x4294edf7,0x817f3240,0xb6283e83,0x0a5f25b1,0xc3fdc959,0x5844ee22,0xefaf8aa5,0xdbdde4de,0xde269ba5,0xc56133bf,0xe3347160 +.long 0x8d9ea9f8,0xc1184219,0xf3fc1ab5,0x090de5db,0x0bf22cda,0x404c37b1,0xf5618894,0x7de20ec8,0xecdaecab,0x754c588e,0x88342743,0x6ca4b0ed,0xf4a938ec,0x76f08bdd,0x91493ccb,0xd182de89 +.long 0xc8a4186a,0xd652c53e,0x946d8e33,0xb3e878db,0x5f37663c,0x088453c0,0xb407748b,0x5cd9daaa,0x586d5e72,0xa1f5197f,0xc443ca59,0x47500be8,0xe2652424,0x78ef35b2,0x6dd7767d,0x09c5d26f +.long 0xa74d3f7b,0x7175a79a,0xcf5ea459,0x0428fd8d,0xa5d1746d,0x511cb97c,0xe71d1278,0x36363939,0x10350bf4,0xcf2df955,0x60aae782,0xb3817439,0x3e688809,0xa748c0e4,0xd7a5a006,0x98021fbf +.long 0x0e367a98,0x9076a70c,0x0f62b7c2,0xbea1bc15,0x30fe0343,0x2645a68c,0x699dc14f,0xacaffa78,0x457bf9c4,0xf4469964,0x0d2ead83,0x0db6407b,0xb2c6f3eb,0x68d56cad,0xf376356c,0x3b512e73 +.long 0xfce10408,0xe43b0e1f,0x5a5e257d,0x89ddc003,0x0362e5b3,0xb0ae0d12,0xb0519161,0x07f983c7,0x5d5231e7,0xc2e94d15,0x0b4f9513,0xcff22aed,0x6ad0b0b5,0xb02588dd,0x11d0dcd5,0xb967d1ac +.long 0xcf777b6c,0x8dac6bc6,0x4c6d1959,0x0062bdbd,0x0ef5cc85,0x53da71b5,0x4006f14f,0x07012c7d,0xac47800d,0x4617f962,0xc102ed75,0x53365f2b,0x4ab8c9d3,0xb422efcb,0x34af31c9,0x195cb26b +.long 0x05f2c4ce,0x3a926e29,0x9856966c,0xbd2bdecb,0x85527015,0x5d16ab3a,0x4486c231,0x9f81609e,0xda350002,0xd8b96b2c,0xfa1b7d36,0xbd054690,0xe71d79bc,0xdc90ebf5,0x08964e4e,0xf241b6f9 +.long 0x2fe3cd4c,0x7c838643,0xb4bc633c,0xe0f33acb,0x3d139f1f,0xb4a9ecec,0xdc4a1f49,0x05ce69cd,0xf5f98aaf,0xa19d1b16,0x6f23e0ef,0x45bb71d6,0x46cdfdd3,0x33789fcd,0xcee040ca,0x9b8e2978 +.long 0xae0a6828,0x9c69b246,0x7078d5aa,0xba533d24,0x7bb4fbdb,0x7a2e42c0,0x7035385c,0xcfb4879a,0x3281705b,0x8c3dd30b,0x404fe081,0x7e361c6c,0x3f604edf,0x7b21649c,0xe52ffe47,0x5dbf6a3f +.long 0x4b54d9bf,0xc41b7c23,0x3511c3d9,0x1374e681,0xc1b2b758,0x1863bf16,0x1e9e6a96,0x90e78507,0x5d86f174,0xab4bf98d,0x85e96fe4,0xd74e0bd3,0xcac5d344,0x8afde39f,0xbd91b847,0x90946dbc +.long 0xfe1a838c,0xf5b42358,0x620ac9d8,0x05aae6c5,0xa1ce5a0b,0x8e193bd8,0x4dabfd72,0x8f710571,0x182caaac,0x8d8fdd48,0x040745cf,0x8c4aeefa,0xf3b93e6d,0x73c6c30a,0x16f42011,0x991241f3 +.long 0xe457a477,0xa0158eea,0xee6ddc05,0xd19857db,0x18c41671,0xb3265224,0x3c2c0d58,0x3ffdfc7e,0x26ee7cda,0x3a3a5254,0xdf02c3a8,0x341b0869,0x723bbfc8,0xa023bf42,0x14452691,0x3d15002a +.long 0x85edfa30,0x5ef7324c,0x87d4f3da,0x25976554,0xdcb50c86,0x352f5bc0,0x4832a96c,0x8f6927b0,0x55f2f94c,0xd08ee1ba,0x344b45fa,0x6a996f99,0xa8aa455d,0xe133cb8d,0x758dc1f7,0x5d0721ec +.long 0x79e5fb67,0x6ba7a920,0x70aa725e,0xe1331feb,0x7df5d837,0x5080ccf5,0x7ff72e21,0xe4cae01d,0x0412a77d,0xd9243ee6,0xdf449025,0x06ff7cac,0x23ef5a31,0xbe75f7cd,0x0ddef7a8,0xbc957822 +.long 0xb0ce1c55,0x8cf7230c,0x0bbfb607,0x5b534d05,0x0e16363b,0xee1ef113,0xb4999e82,0x27e0aa7a,0x79362c41,0xce1dac2d,0x91bb6cb0,0x67920c90,0x2223df24,0x1e648d63,0xe32e8f28,0x0f7d9eef +.long 0xfa833834,0x6943f39a,0xa6328562,0x22951722,0x4170fc10,0x81d63dd5,0xaecc2e6d,0x9f5fa58f,0xe77d9a3b,0xb66c8725,0x6384ebe0,0x11235cea,0x5845e24a,0x06a8c118,0xebd093b1,0x0137b286 +.long 0x44ace150,0xc589e1ce,0x4381e97c,0xe0f8d3d9,0x62c5a4b8,0x59e99b11,0xfd0ec9f9,0x90d262f7,0x283e13c9,0xfbc854c9,0xaedc7085,0x2d04fde7,0x47dcbecb,0x057d7765,0x9a76fa5f,0x8dbdf591 +.long 0x0de1e578,0xd0150695,0xe9f72bc6,0x2e1463e7,0x1b39eca5,0xffa68441,0x7c037f2f,0x673c8530,0x747f91da,0xd0d6a600,0xc9cb78e9,0xb08d43e1,0x27b5cef5,0x0fc0c644,0xa60a2fd6,0x5c1d160a +.long 0x28c8e13b,0xf98cae53,0xb2eddcd1,0x375f10c4,0x5cce06ad,0xd4eb8b7f,0x80a2e1ef,0xb4669f45,0x5bbd8699,0xd593f9d0,0xe7976d13,0x5528a4c9,0x1c7e28d3,0x3923e095,0x3f6bb577,0xb9293790 +.long 0xc42bd6d2,0xdb567d6a,0xbb1f96ae,0x6df86468,0x4843b28e,0x0efe5b1a,0x6379b240,0x961bbb05,0x70a6a26b,0xb6caf5f0,0x328e6e39,0x70686c0d,0x895fc8d3,0x80da06cf,0xb363fdc9,0x804d8810 +.long 0x207f1670,0xbe22877b,0x4e615291,0x9b0dd188,0x97a3c2bf,0x625ae8dc,0x439b86e8,0x08584ef7,0xdcd898ff,0xde7190a5,0x2058ee3d,0x26286c40,0x5f87b1c1,0x3db0b217,0x102a6db5,0xcc334771 +.long 0x2f770fb1,0xd99de954,0x4cd7535e,0x97c1c620,0x3f09cefc,0xd3b6c448,0x5a63b4f8,0xd725af15,0xc01e20ec,0x0c95d24f,0x9ae7121f,0xdfd37494,0xec77b7ec,0x7d6ddb72,0x0353a4ae,0xfe079d3b +.long 0x2e6ac8d2,0x3066e70a,0x106e5c05,0x9c6b5a43,0xede59b8c,0x52d3c6f5,0xfccec9ae,0x30d6a5c3,0x4fc0a9ef,0xedec7c22,0x95c16ced,0x190ff083,0x94de0fde,0xbe12ec8f,0x852d3433,0x0d131ab8 +.long 0x85701291,0x42ace07e,0x194061a8,0x94793ed9,0xd7f4a485,0x30e83ed6,0xf9eeff4d,0x9eec7269,0x0c9d8005,0x90acba59,0x1e79b9d1,0x5feca458,0x1d506a1e,0x8fbe5427,0x2439cfa7,0xa32b2c8e +.long 0x73dd0b4e,0x1671c173,0x44a054c6,0x37a28214,0x4e8b53f1,0x81760a1b,0xf9f93b9e,0xa6c04224,0xcf671e3c,0x18784b34,0xcda9b994,0x81bbecd2,0xb2ab3848,0x38831979,0xf2e03c2d,0xef54feb7 +.long 0xfb8088fa,0xcf197ca7,0x4ddc96c5,0x01427247,0x30777176,0xa2d2550a,0x4d0cf71d,0x53469898,0x3a2aaac6,0x6ce937b8,0x5af38d9b,0xe9f91dc3,0xc8bf2899,0x2598ad83,0xb5536c16,0x8e706ac9 +.long 0xf688dc98,0x40dc7495,0x124c4afc,0x26490cd7,0x1f18775c,0xe651ec84,0xb4fdaf4a,0x393ea6c3,0x7f338e0d,0x1e1f3343,0x6053e7b5,0x39fb832b,0x619e14d5,0x46e702da,0xcdeef6e0,0x859cacd1 +.long 0x4462007d,0x63b99ce7,0x4cb5f5b7,0xb8ab48a5,0xf55edde7,0x9ec673d2,0x8cfaefda,0xd1567f74,0x0887bcec,0x46381b6b,0xe178f3c2,0x694497ce,0x1e6266cb,0x5e6525e3,0x697d6413,0x5931de26 +.long 0x0e58d493,0x87f8df7c,0x58b73f12,0xb1ae5ed0,0xdea0c34d,0xc368f784,0x859a91a0,0x9bd0a120,0xcc863c68,0xb00d88b7,0x3d1f4d65,0x3a1cc11e,0x0aa85593,0xea38e0e7,0x7dc4aee8,0x37f13e98 +.long 0xbc947bad,0x10d38667,0x2a36ee2e,0x738e07ce,0xc577fcac,0xc93470cd,0x2782470d,0xdee1b616,0x2e793d12,0x36a25e67,0xe0f186da,0xd6aa6cae,0x80e07af7,0x474d0fd9,0xba8a5cd4,0xf7cdc47d +.long 0xab15247f,0x28af6d9d,0x493a537f,0x7c789c10,0x23a334e7,0x7ac9b110,0x12c9c277,0x0236ac09,0x1d7a5144,0xa7e5bd25,0xf13ec4ec,0x098b9c2a,0xd3f0abca,0x3639daca,0xa23960f9,0x642da81a +.long 0x4f7269b1,0x7d2e5c05,0xe287c385,0xfcf30777,0xf2a46f21,0x10edc84f,0x4f43fa36,0x35441757,0xfd703431,0xf1327899,0x16dd587a,0xa438d7a6,0xe9c8352d,0x65c34c57,0x5cc5a24e,0xa728edab +.long 0x42531689,0xaed78abc,0x010963ef,0x0a51a0e8,0xd717d9b3,0x5776fa0a,0x7dd3428b,0xf356c239,0x8d3a3dac,0x29903fff,0x3d94491f,0x409597fa,0xbf4a56a4,0x4cd7a5ff,0x8adab462,0xe5096474 +.long 0x5c3427b0,0xa97b5126,0xd282c9bd,0x6401405c,0x222c5c45,0x3629f8d7,0xe8d50aed,0xb1c02c16,0xd9635bc9,0xbea2ed75,0x6e24552f,0x226790c7,0x65f1d066,0x3c33f2a3,0x6dfccc2e,0x2a43463e +.long 0xdb483761,0x8cc3453a,0x65d5672b,0xe7cc6085,0xde3efc87,0x277ed6cb,0x69234eaf,0x19f2f368,0x5c0b800b,0x9aaf4317,0x8b6da6e2,0x1f1e7c89,0xb94ec75e,0x6cfb4715,0x453118c2,0xd590dd5f +.long 0x1f17a34c,0x14e49da1,0x235a1456,0x5420ab39,0x2f50363b,0xb7637241,0xc3fabb6e,0x7b15d623,0xe274e49c,0xa0ef40b1,0x96b1860a,0x5cf50744,0x66afe5a4,0xd6583fbf,0xf47e3e9a,0x44240510 +.long 0x11b2d595,0x99254343,0xeec8df57,0xf1367499,0x3e73dd05,0x3cb12c61,0x7dac102a,0xd248c033,0xa77739f5,0xcf154f13,0x23d2af42,0xbf4288cb,0x32e4a1cf,0xaa64c9b6,0xc8a208f3,0xee8c07a8 +.long 0x6fe8393f,0xe10d4999,0xe91f3a32,0x0f809a3f,0x802f63c8,0x61096d1c,0x57750d3d,0x289e1462,0x9889feea,0xed06167e,0xe0993909,0xd5c9c0e2,0x56508ac6,0x46fca0d8,0x4f1b8e83,0x91826047 +.long 0x9a4a2751,0x4f2c877a,0xcae6fead,0x71bd0072,0x06aa1941,0x38df8dcc,0x63beeaa8,0x5a074b4c,0xc1cec8ed,0xd6d65934,0xaabc03bd,0xa6ecb49e,0xde8a8415,0xaade91c2,0x691136e0,0xcfb0efdf +.long 0x23ab3495,0x11af45ee,0x0b77463d,0xa132df88,0x815d06f4,0x8923c15c,0x0d61a436,0xc3ceb3f5,0xe88fb1da,0xaf52291d,0x1da12179,0xea057974,0xd2fef720,0xb0d7218c,0x8e1d8845,0x6c0899c9 +.long 0x752ddad7,0x98157504,0xa1a68a97,0xd60bd74f,0xf658fb99,0x7047a3a9,0x5f8511e4,0x1f5d86d6,0x4b5a6d88,0xb8a4bc42,0x1abefa7d,0x69eb2c33,0x13c9c510,0x95bf39e8,0xd48aab43,0xf571960a +.long 0x704e23c6,0x7e8cfbcf,0x28aaa65b,0xc71b7d22,0x245e3c83,0xa041b2bd,0xd21854ff,0x69b98834,0x963bfeec,0x89d227a3,0xde7da7cb,0x99947aaa,0xee68a9b1,0x1d9ee9db,0x698ec368,0x0a08f003 +.long 0x78ef2487,0xe9ea4094,0x02cfec26,0xc8d2d415,0xb7dcf328,0xc52f9a6e,0x85b6a937,0x0ed489e3,0xbef3366e,0x9b94986b,0xedddddb8,0x0de59c70,0xeadddbe2,0xffdb748c,0x8266ea40,0x9b9784bb +.long 0x1a93507a,0x142b5502,0x8d3c06cf,0xb4cd1187,0x91ec3f40,0xdf70e76a,0x4e7553c2,0x484e81ad,0x272e9d6e,0x830f87b5,0xc6ff514a,0xea1c93e5,0xc4192a8e,0x67cc2adc,0x42f4535a,0xc77e27e2 +.long 0xd2b713c5,0x9cdbab36,0xcf7b0cd3,0x86274ea0,0x09af826b,0x784680f3,0x0c72dea3,0xbfcc837a,0xd6529b73,0xa8bdfe9d,0x63a88002,0x708aa228,0xc91d45b9,0x6c7a9a54,0xfd004f56,0xdf1a38bb +.long 0xb8bad853,0x2e8c9a26,0x3723eae7,0x2d52cea3,0x56ca2830,0x054d6d81,0x9a8dc411,0xa3317d14,0xfd4ddeda,0xa08662fe,0xb55d792b,0xed2a153a,0xbfc6e944,0x7035c16a,0x00171cf3,0xb6bc5834 +.long 0x83d102b6,0xe27152b3,0x0646b848,0xfe695a47,0x916e6d37,0xa5bb09d8,0x0d17015e,0xb4269d64,0x0a1d2285,0x8d8156a1,0x46d26d72,0xfeef6c51,0x4c5434a7,0x9dac57c8,0x59d39e31,0x0282e5be +.long 0x721c486d,0xedfff181,0xbc58824e,0x301baf10,0x00570031,0x8136a6aa,0x1cddde68,0x55aaf78c,0x59c63952,0x26829371,0x8bc25baf,0x3a3bd274,0xb7e52dc3,0xecdf8657,0xfd78e6c8,0x2dd8c087 +.long 0xf5531461,0x20553274,0x5d95499b,0x8b4a1281,0x1a80f9d2,0xe2c8763a,0x4ddec758,0xd1dbe32b,0x30c34169,0xaf12210d,0x78baa533,0xba74a953,0xa438f254,0x3d133c6e,0x201bef5b,0xa431531a +.long 0xf669d7ec,0x15295e22,0x357fb515,0xca374f64,0xeaa3fdb3,0x8a8406ff,0xdf3f2da8,0x106ae448,0x33c8e9a1,0x8f9b0a90,0x71ad5885,0x234645e2,0x1c0aed14,0x3d083224,0x7a942d46,0xf10a7d3e +.long 0x40d5c9be,0x7c11deee,0xba84ed98,0xb2bae7ff,0xaad58ddd,0x93e97139,0x3f6d1fa3,0x3d872796,0x8569ff13,0x483aca81,0x9a600f72,0x8b89a5fb,0xc06f2b86,0x4cbc27c3,0x63ad9c0b,0x22130713 +.long 0x48ac2840,0xb5358b1e,0xecba9477,0x18311294,0xa6946b43,0xda58f990,0x9ab41819,0x3098baf9,0x4198da52,0x66c4c158,0x146bfd1b,0xab4fc17c,0xbf36a908,0x2f0a4c3c,0x58cf7838,0x2ae9e34b +.long 0x3fa11b1f,0xf411529e,0x974af2b4,0x21e43677,0xc230793b,0x7c20958e,0x16e840f3,0x710ea885,0xc5dc67cf,0xfc0b21fc,0x88405718,0x08d51647,0xcfe49eb7,0xd955c21f,0x56dd4a1f,0x9722a5d5 +.long 0xc861baa5,0xc9ef50e2,0x9505ac3e,0xc0c21a5d,0x8b7c063f,0xaf6b9a33,0x2f4779c1,0xc6370339,0x638167c3,0x22df99c7,0x795db30c,0xfe6ffe76,0xa4854989,0x2b822d33,0x30563aa5,0xfef031dd +.long 0xd57c667f,0x16b09f82,0xcc0b76f1,0xc70312ce,0xc9118aec,0xbf04a9e6,0x3409d133,0x82fcb419,0xab45d44d,0x1a8ab385,0x617b83a3,0xfba07222,0x58e81b52,0xb05f50dd,0x21ce5aff,0x1d8db553 +.long 0xe344a873,0x3097b8d4,0xfe36d53e,0x7d8d116d,0x7875e750,0x6db22f58,0x43e144ea,0x2dc5e373,0xe799eb95,0xc05f32e6,0x6899e6ec,0xe9e5f4df,0x1fab23d5,0xbdc3bd68,0x73af60e6,0xb72b8ab7 +.long 0x2cecc84a,0x8db27ae0,0x7bdb871c,0x600016d8,0xd7c46f58,0x42a44b13,0xc3a77d39,0xb8919727,0xdafd6088,0xcfc6bbbd,0x6bd20d39,0x1a740146,0x98c41072,0x8c747abd,0xbdf68ea1,0x4c91e765 +.long 0x08819a78,0x7c95e5ca,0xc9587921,0xcf48b729,0xdebbcc7d,0x091c7c5f,0xf0e05149,0x6f287404,0x26cd44ec,0xf83b5ac2,0xcfea250e,0x88ae32a6,0x1d06ebc5,0x6ac5047a,0xd434f781,0xc7e550b4 +.long 0x5c727bd2,0x61ab1cf2,0x1cf915b0,0x2e4badb1,0xf69d3920,0x1b4dadec,0xf14c1dfe,0xe61b1ca6,0xbd6bd51f,0x90b479cc,0x8045ec30,0x8024e401,0x25ef0e62,0xcab29ca3,0x49e4ebc0,0x4f2e9416 +.long 0x0ccced58,0x45eb40ec,0x0da44f98,0x25cd4b9c,0x871812c6,0x43e06458,0x16cef651,0x99f80d55,0xce6dc153,0x571340c9,0xd8665521,0x138d5117,0x4e07014d,0xacdb45bc,0x84b60b91,0x2f34bb38 +.long 0x2ae8921e,0xf44a4fd2,0x892ba1e2,0xb039288e,0xb1c180b2,0x9da50174,0x1693dc87,0x6b70ab66,0xe7057481,0x7e9babc9,0x9c80dc41,0x4581ddef,0x51294682,0x0c890da9,0x3f4736e5,0x0b5629d3 +.long 0xb06f5b41,0x2340c79e,0x4e243469,0xa42e84ce,0x045a71a9,0xf9a20135,0xd27b6fb6,0xefbfb415,0x9d33cd6f,0x25ebea23,0xaa6c0af8,0x9caedb88,0xd9ce6f96,0x53dc7e9a,0x51e0b15a,0x3897f9fd +.long 0x8e5d788e,0xf51cb1f8,0xe1d490ee,0x1aec7ba8,0xcc58cb3c,0x265991e0,0x9fc3ad31,0x9f306e8c,0x5040a0ac,0x5fed006e,0xfb476f2e,0xca9d5043,0xbeea7a23,0xa19c06e8,0x0edabb63,0xd2865801 +.long 0x6967469a,0xdb92293f,0x8d8a8ed8,0x2894d839,0xbbc77122,0x87c9e406,0x2ea3a26a,0x8671c6f1,0xd7de9853,0xe42df8d6,0xb1f2bcc7,0x2e3ce346,0x899d50cf,0xda601dfc,0xfb1b598f,0xbfc913de +.long 0xe61f7908,0x81c4909f,0x9bbc7b29,0x192e304f,0xc104b338,0xc3ed8738,0x783f5d61,0xedbe9e47,0x2db30660,0x0c06e9be,0xc0eb7d8e,0xda3e613f,0x322e096e,0xd8fa3e97,0xd336e247,0xfebd91e8 +.long 0xdf655a49,0x8f13ccc4,0x5eb20210,0xa9e00dfc,0xc656b6ea,0x84631d0f,0xd8c0d947,0x93a058cd,0x67bd3448,0x6846904a,0xf394fd5c,0x4a3d4e1a,0xdb225f52,0xc102c1a5,0xfc4f5e9a,0xe3455bba +.long 0x4b9ad1ce,0x6b36985b,0x5bb7f793,0xa9818536,0x48b1a416,0x6c25e1d0,0x3c81bee7,0x1381dd53,0x7a4a7620,0xd2a30d61,0x39b8944c,0xc8412926,0x7a97c33a,0x3c1c6fbe,0x938664e7,0x941e541d +.long 0x4a34f239,0x417499e8,0xb90402d5,0x15fdb83c,0x433aa832,0xb75f46bf,0x63215db1,0xb61e15af,0xa127f89a,0xaabe59d4,0x07e816da,0x5d541e0c,0xa618b692,0xaaba0659,0x17266026,0x55327733 +.long 0x95f57552,0xaf53a0fc,0x6cacb0c9,0x32947650,0xc821be01,0x253ff58d,0xa06f1146,0xb0309531,0x05c2e54d,0x59bbbdf5,0x26e8dd22,0x158f27ad,0x397e1e53,0xcc5b7ffb,0x7fc1e50d,0xae03f65b +.long 0x9c95f0f9,0xa9784ebd,0x24640771,0x5ed9deb2,0x035561c4,0x31244af7,0x7ee857de,0x87332f3a,0x2b9e0d88,0x09e16e9e,0x56a06049,0x52d910f4,0xa9592f48,0x507ed477,0x2365d678,0x85cb917b +.long 0x4c8998d1,0xf8511c93,0x730ea58f,0x2186a3f1,0xb2029db0,0x50189626,0x02ceb75a,0x9137a6d9,0x748bc82c,0x2fe17f37,0x80469f8c,0x87c2e931,0xbf891aa2,0x850f71cd,0x75ec3d8d,0x0ca1b89b +.long 0x5e1cd3cd,0x516c43aa,0x9a887c28,0x89397808,0xddea1f9f,0x0059c699,0x8e6868f7,0x7737d6fa,0x60f1524b,0x6d93746a,0xba052aa7,0x36985e55,0xed923ea5,0x41b1d322,0x25852a11,0x3429759f +.long 0x092e9f41,0xbeca6ec3,0x62256bbd,0x3a238c66,0x70ad487d,0xd82958ea,0x65610d93,0x4ac8aaf9,0x5e4ccab0,0x3fa101b1,0x9de14bfb,0x9bf430f2,0x6531899d,0xa10f5cc6,0xea8ce17d,0x590005fb +.long 0x24544cb6,0xc437912f,0xd79ac2e3,0x9987b71a,0xc058a212,0x13e3d9dd,0xd2de9606,0x00075aac,0x6cac8369,0x80ab508b,0xf54f6c89,0x87842be7,0x6bc532a4,0xa7ad663d,0x78a91bc8,0x67813de7 +.long 0xc3427239,0x5dcb61ce,0xc56934d9,0x5f3c7cf0,0xe3191591,0xc079e0fb,0xb01aada7,0xe40896bd,0x0492d25f,0x8d466791,0xe7408276,0x8aeb30c9,0x9287aacc,0xe9437495,0x79fe03d4,0x23d4708d +.long 0xd0c05199,0x8cda9cf2,0xfae78454,0x502fbc22,0xf572a182,0xc0bda9df,0x6158b372,0x5f9b71b8,0x2b82dd07,0xe0f33a59,0x9523032e,0x76302735,0xc4505a32,0x7fe1a721,0xf796409f,0x7b6e3e82 +.long 0x35d0b34a,0xe3417bc0,0x8327c0a7,0x440b386b,0xac0362d1,0x8fb7262d,0xe0cdf943,0x2c41114c,0xad95a0b1,0x2ba5cef1,0x67d54362,0xc09b37a8,0x01e486c9,0x26d6cdd2,0x42ff9297,0x20477abf +.long 0x292a9287,0xa004dcb3,0x77b092c7,0xddc15cf6,0x806c0605,0x083a8464,0x3db997b0,0x4a68df70,0x05bf7dd0,0x9c134e45,0x8ccf7f8c,0xa4e63d39,0x41b5f8af,0xa6e6517f,0xad7bc1cc,0xaa8b9342 +.long 0x1e706ad9,0x126f35b5,0xc3a9ebdf,0xb99cebb4,0xbf608d90,0xa75389af,0xc6c89858,0x76113c4f,0x97e2b5aa,0x80de8eb0,0x63b91304,0x7e1022cc,0x6ccc066c,0x3bdab605,0xb2edf900,0x33cbb144 +.long 0x7af715d2,0xc4176471,0xd0134a96,0xe2f7f594,0xa41ec956,0x2c1873ef,0x77821304,0xe4e7b4f6,0x88d5374a,0xe5c8ff97,0x80823d5b,0x2b915e63,0xb2ee8fe2,0xea6bc755,0xe7112651,0x6657624c +.long 0xdace5aca,0x157af101,0x11a6a267,0xc4fdbcf2,0xc49c8609,0xdaddf340,0xe9604a65,0x97e49f52,0x937e2ad5,0x9be8e790,0x326e17f1,0x846e2508,0x0bbbc0dc,0x3f38007a,0xb11e16d6,0xcf03603f +.long 0x7442f1d5,0xd6f800e0,0x66e0e3ab,0x475607d1,0xb7c64047,0x82807f16,0xa749883d,0x8858e1e3,0x8231ee10,0x5859120b,0x638a1ece,0x1b80e7eb,0xc6aa73a4,0xcb72525a,0x844423ac,0xa7cdea3d +.long 0xf8ae7c38,0x5ed0c007,0x3d740192,0x6db07a5c,0x5fe36db3,0xbe5e9c2a,0x76e95046,0xd5b9d57a,0x8eba20f2,0x54ac32e7,0x71b9a352,0xef11ca8f,0xff98a658,0x305e373e,0x823eb667,0xffe5a100 +.long 0xe51732d2,0x57477b11,0x2538fc0e,0xdfd6eb28,0x3b39eec5,0x5c43b0cc,0xcb36cc57,0x6af12778,0x06c425ae,0x70b0852d,0x5c221b9b,0x6df92f8c,0xce826d9c,0x6c8d4f9e,0xb49359c3,0xf59aba7b +.long 0xda64309d,0x5c8ed8d5,0x91b30704,0x61a6de56,0x2f9b5808,0xd6b52f6a,0x98c958a7,0x0eee4194,0x771e4caa,0xcddd9aab,0x78bc21be,0x83965dfd,0xb3b504f5,0x02affce3,0x561c8291,0x30847a21 +.long 0x52bfda05,0xd2eb2cf1,0x6197b98c,0xe0e4c4e9,0xf8a1726f,0x1d35076c,0x2db11e3d,0x6c06085b,0x4463ba14,0x15c0c4d7,0x0030238c,0x9d292f83,0x3727536d,0x1311ee8b,0xbeaedc1e,0xfeea86ef +.long 0x66131e2e,0xb9d18cd3,0x80fe2682,0xf31d974f,0xe4160289,0xb6e49e0f,0x08e92799,0x7c48ec0b,0xd1989aa7,0x818111d8,0xebf926f9,0xb34fa0aa,0xa245474a,0xdb5fe2f5,0x3c7ca756,0xf80a6ebb +.long 0xafa05dd8,0xa7f96054,0xfcaf119e,0x26dfcf21,0x0564bb59,0xe20ef2e3,0x61cb02b8,0xef4dca50,0x65d30672,0xcda7838a,0xfd657e86,0x8b08d534,0x46d595c8,0x4c5b4395,0x425cb836,0x39b58725 +.long 0x3de9abe3,0x8ea61059,0x9cdc03be,0x40434881,0xcfedce8c,0x9b261245,0xcf5234a1,0x78c318b4,0xfde24c99,0x510bcf16,0xa2c2ff5d,0x2a77cb75,0x27960fb4,0x9c895c2b,0xb0eda42b,0xd30ce975 +.long 0x1a62cc26,0xfda85393,0x50c0e052,0x23c69b96,0xbfc633f3,0xa227df15,0x1bae7d48,0x2ac78848,0x187d073d,0x487878f9,0x967f807d,0x6c2be919,0x336e6d8f,0x765861d8,0xce528a43,0x88b8974c +.long 0xff57d051,0x09521177,0xfb6a1961,0x2ff38037,0xa3d76ad4,0xfc0aba74,0x25a7ec17,0x7c764803,0x48879bc8,0x7532d75f,0x58ce6bc1,0xea7eacc0,0x8e896c16,0xc82176b4,0x2c750fed,0x9a30e0b2 +.long 0x421d3aa4,0xc37e2c2e,0xe84fa840,0xf926407c,0x1454e41c,0x18abc03d,0x3f7af644,0x26605ecd,0xd6a5eabf,0x242341a6,0x216b668e,0x1edb84f4,0x04010102,0xd836edb8,0x945e1d8c,0x5b337ce7 +.long 0xc055dc14,0xd2075c77,0x81d89cdf,0x2a0ffa25,0x6ffdcbaf,0x8ce815ea,0xfb648867,0xa3428878,0x884655fb,0x277699cf,0x364d3e41,0xfa5b5bd6,0x441e1cb7,0x01f680c6,0xb70a7d67,0x3fd61e66 +.long 0xcc78cf66,0x666ba2dc,0x6fdbff77,0xb3018174,0x168d4668,0x8d4dd0db,0x1dab3a2a,0x259455d0,0xcde3acec,0xf58564c5,0x13adb276,0x77141925,0x8a303f65,0x527d725d,0xe6f38f7b,0x55deb6c9 +.long 0xb1fa70fb,0xfd5bb657,0xd8073a00,0xfa07f50f,0xbca02500,0xf72e3aa7,0x9975740d,0xf68f895d,0x5cae2a6a,0x30112060,0x02874842,0x01bd7218,0x7ce47bd3,0x3d423891,0x789544f6,0xa66663c1 +.long 0x3272d838,0x864d05d7,0xfa6295c5,0xe22924f9,0x6c2fda32,0x8189593f,0xb184b544,0x330d7189,0xbde1f714,0x79efa62c,0xe5cb1a63,0x35771c94,0x641c8332,0x2f4826b8,0xc8cee854,0x00a894fb +.long 0x36194d40,0xb4b9a39b,0x77612601,0xe857a7c5,0x4ecf2f58,0xf4209dd2,0x5a033487,0x82b9e66d,0xe4e8b9dd,0xc1e36934,0xa42377d7,0xd2372c9d,0x0e3ae43b,0x51dc94c7,0x04474f6f,0x4c57761e +.long 0x1058a318,0xdcdacd0a,0x78053a9a,0x369cf3f5,0x31c68de2,0xc6c3de50,0x3c4b6d9f,0x4653a576,0xaa4e5c97,0x1688dd5a,0xb7ab3c74,0x5be80aa1,0xbc65c283,0x70cefe7c,0x06867091,0x57f95f13 +.long 0x4415503b,0xa39114e2,0x4cbb17e9,0xc08ff7c6,0xd7dec966,0x1eff674d,0x53376f63,0x6d4690af,0xea74237b,0xff6fe32e,0xcd57508e,0xc436d17e,0xedcc40fe,0x15aa28e1,0x581bbb44,0x0d769c04 +.long 0x34eaacda,0xc240b6de,0x2ba0f1de,0xd9e116e8,0x79438e55,0xcbe45ec7,0x96f752d7,0x91787c9d,0xf129ac2f,0x897f532b,0x5a36e22c,0xd307b7c8,0x749fb8f3,0x91940675,0x157fdb28,0xd14f95d0 +.long 0x6ae55043,0xfe51d029,0x44a87de1,0x8931e98f,0x09e4fee2,0xe57f1cc6,0x4e072d92,0x0d063b67,0xed0e4316,0x70a998b9,0x306aca46,0xe74a736b,0x4fda97c7,0xecf0fbf2,0x3e178d93,0xa40f65cb +.long 0x16df4285,0x16253604,0xd0c56ae2,0xb0c9babb,0xcfc5cfc3,0x73032b19,0x09752056,0xe497e5c3,0x164bda96,0x12096bb4,0xa0b74da1,0x1ee42419,0x403826ba,0x8fc36243,0xdc09e660,0x0c8f0069 +.long 0xc27253c9,0x8667e981,0x92b36a45,0x05a6aefb,0x9cb7bb46,0xa62c4b36,0x11f7027b,0x8394f375,0x5f109d0f,0x747bc79c,0x5b8cc60a,0xcad88a76,0x58f09e68,0x80c5a66b,0xf6127eac,0xe753d451 +.long 0x5b0ec6f5,0xc44b74a1,0x5289b2b8,0x47989fe4,0x58d6fc73,0x745f8484,0xf61c70ab,0xec362a6f,0xb3a8ad41,0x070c98a7,0x7b63db51,0x73a20fc0,0xf44c35f4,0xed2c2173,0x9acc9dca,0x8a56149d +.long 0x9ac6e0f4,0x98f17881,0xa413b5ed,0x360fdeaf,0xa300b0fd,0x0625b8f4,0x5b3222d3,0xf1f4d76a,0x587f76b8,0x9d6f5109,0x2317fdb5,0x8b4ee08d,0x8c68b095,0x88089bb7,0x5808d9b9,0x95570e9a +.long 0x35d33ae7,0xa395c36f,0x50bb5a94,0x200ea123,0x0bafe84b,0x20c789bd,0x0919276a,0x243ef52d,0xe23ae233,0x3934c577,0xa460d1ec,0xb93807af,0xf8fa76a4,0xb72a53b1,0xc3ca4491,0xd8914cb0 +.long 0x3fb42622,0x2e128494,0x500907d5,0x3b2700ac,0x1a95ec63,0xf370fb09,0x31b6dfbd,0xf8f30be2,0x69e55f15,0xf2b2f8d2,0xcc1323e9,0x1fead851,0xd9e5eef6,0xfa366010,0xe316107e,0x64d487b0 +.long 0xd23ddc82,0x4c076b86,0x7e0143f0,0x03fd344c,0x317af2c5,0xa95362ff,0xe18b7a4f,0x0add3db7,0x8260e01b,0x9c673e3f,0x54a1cc91,0xfbeb49e5,0x92f2e433,0x91351bf2,0x851141eb,0xc755e7ec +.long 0x29607745,0xc9a95139,0xa26f2b28,0x0ca07420,0x4bc6f9dd,0xcb2790e7,0xadcaffc0,0x345bbb58,0xbe0f27a2,0xc65ea38c,0x641fcb56,0x67c24d7c,0xa9e2c757,0x2c25f0a7,0x16f16c49,0x93f5cdb0 +.long 0xc5ee30a1,0x2ca5a9d7,0xb909b729,0xd1593635,0xdadeff48,0x804ce9f3,0xb07c30c3,0xec464751,0x9e49af6a,0x89d65ff3,0x6f3d01bc,0xf2d6238a,0x0bced843,0x1095561e,0xc8a13fd8,0x51789e12 +.long 0x763231df,0xd633f929,0xe7cbddef,0x46df9f7d,0xcb265da8,0x01c889c0,0xaf4336d2,0xfce1ad10,0xfc6a0a7e,0x8d110df6,0x6da425dc,0xdd431b98,0x1834aabe,0xcdc4aeab,0x8439b7fc,0x84deb124 +.long 0x3c2a5998,0x8796f169,0x7947190d,0x9b9247b4,0x11597014,0x55b9d9a5,0x7b1566ee,0x7e9dd70d,0xcbcd5e64,0x94ad78f7,0x9bd4c032,0x0359ac17,0x7cc222ae,0x3b11baaf,0xba78e812,0xa6a6e284 +.long 0x24cea1a0,0x8392053f,0x33621491,0xc97bce4a,0x35399ee9,0x7eb1db34,0xece81ad1,0x473f78ef,0xf63d3d0d,0x41d72fe0,0xafab62fc,0xe620b880,0x93158383,0x92096bc9,0x8f896f6c,0x41a21357 +.long 0xc7dcfcab,0x1b5ee2fa,0x9546e007,0x650acfde,0xb1b02e07,0xc081b749,0xf9eca03d,0xda9e41a0,0x175a54ab,0x013ba727,0xea5d8d10,0xca0cd190,0x95fd96a9,0x85ea52c0,0xbc5c3940,0x2c591b9f +.long 0x2bad4d5f,0x6fb4d4e4,0xfef0059b,0xfa4c3590,0xf5122294,0x6a10218a,0xa85751d1,0x9a78a81a,0xa98e84e7,0x04f20579,0x4997e5b5,0xfe1242c0,0xca21e1e4,0xe77a273b,0x9411939d,0xfcc8b1ef +.long 0x92d0487a,0xe20ea302,0x294b91fe,0x1442dbec,0xbb6b0e8f,0x1f7a4afe,0x6889c318,0x1700ef74,0x70f1fc62,0xf5bbffc3,0x69c79cca,0x3b31d4b6,0xa7f6340d,0xe8bc2aab,0xa725e10a,0xb0b08ab4 +.long 0xae340050,0x44f05701,0x1cf0c569,0xba4b3016,0xfbe19a51,0x5aa29f83,0xb71d752e,0x1b9ed428,0xeb4819f5,0x1666e54e,0x9e18b75b,0x616cdfed,0x3ee27b0b,0x112ed5be,0x44c7de4d,0xfbf28319 +.long 0xe0e60d84,0xd685ec85,0x1db7ee78,0x68037e30,0x003c4d6e,0x5b65bdcd,0x93e29a6a,0x33e7363a,0x08d0756c,0x995b3a61,0x2faf134b,0xd727f85c,0x1d337823,0xfac6edf7,0x0439b8b4,0x99b9aa50 +.long 0xe2b4e075,0x722eb104,0x437c4926,0x49987295,0x46a9b82d,0xb1e4c0e4,0x57a006f5,0xd0cb3197,0xd7808c56,0xf3de0f7d,0x51f89772,0xb5c54d8f,0xadbd31aa,0x500a114a,0x295f6cab,0x9afaaaa6 +.long 0x04cf667a,0x94705e21,0x9d3935d7,0xfc2a811b,0x6d09267c,0x560b0280,0xf780e53b,0xf19ed119,0x067b6269,0xf0227c09,0x5caef599,0x967b8533,0x68efeebc,0x155b9243,0xc497bae6,0xcd6d34f5 +.long 0x6cceb370,0x1dd8d5d3,0xa78d7bf9,0x2aeac579,0x70b67a62,0x5d65017d,0x17c53f67,0x70c8e44f,0x86a34d09,0xd1fc0950,0xe7134907,0xe0fca256,0x80fdd315,0xe24fa29c,0xd87499ad,0x2c4acd03 +.long 0x3b5a9ba6,0xbaaf7517,0x12e51a51,0xb9cbe1f6,0x5e154897,0xd88edae3,0x77b66ca0,0xe4309c3c,0xf67f3746,0xf5555805,0xa36401ff,0x85fc37ba,0xd9499a53,0xdf86e2ca,0xecbc955b,0x6270b2a3 +.long 0x974ad33b,0xafae64f5,0xfe7b2df1,0x04d85977,0x4ab03f73,0x2a3db3ff,0x8702740a,0x0b87878a,0x5a061732,0x6d263f01,0xa32a1901,0xc25430ce,0xdb155018,0xf7ebab3d,0x63a9b78e,0x3a86f693 +.long 0xda9f3804,0x349ae368,0xa164349c,0x470f07fe,0x8562baa5,0xd52f4cc9,0x2b290df3,0xc74a9e86,0x43471a24,0xd3a1aa35,0xb8194511,0x239446be,0x81dcd44d,0xbec2dd00,0xc42ac82d,0xca3d7f0f +.long 0xfdaf4520,0x1f3db085,0x4549daf2,0xbb6d3e80,0x19ad5c42,0xf5969d8a,0xdbfd1511,0x7052b13d,0x682b9060,0x11890d1b,0xac34452c,0xa71d3883,0x783805b4,0xa438055b,0x4725b23e,0x43241277 +.long 0x4901bbed,0xf20cf96e,0xf432a2bb,0x6419c710,0xdfa9cd7d,0x57a0fbb9,0x00daa249,0x589111e4,0x7b60554e,0x19809a33,0xede283a4,0xea5f8887,0x503bfd35,0x2d713802,0x585d2a53,0x151bb0af +.long 0x43b30ca8,0x40b08f74,0xd9934583,0xe10b5bba,0xb51110ad,0xe8a546d6,0x28e0b6c5,0x1dd50e66,0xcff2b821,0x292e9d54,0x47281760,0x3882555d,0x3724d6e3,0x134838f8,0x22ddcda1,0xf2c679e0 +.long 0x6d2a5768,0x40ee8815,0x1c1e7e2d,0x7f227bd2,0xd04ff443,0x487ba134,0xc614e54b,0x76e2ff3d,0xa3177ec7,0x36b88d6f,0x2328fff5,0xbf731d51,0x49ba158e,0x758caea2,0x02938188,0x5ab8ff4c +.long 0x35edc56d,0x33e16056,0x7e940d79,0x5a69d349,0x03866dcb,0x6c4fd001,0x4893cdef,0x20a38f57,0xfac3a15b,0xfbf3e790,0x7a4f8e6b,0x6ed7ea2e,0xbc3aca86,0xa663eb4f,0x080d53f7,0x22061ea5 +.long 0xf546783f,0x2480dfe6,0x5a0a641e,0xd38bc6da,0x2ede8965,0xfb093cd1,0xacb455cf,0x89654db4,0x26e1adee,0x413cbf9a,0x373294d4,0x291f3764,0x648083fe,0x00797257,0x208cc341,0x25f504d3 +.long 0xc3a0ee43,0x635a8e5e,0x679898ff,0x70aaebca,0x5dc63d56,0x9ee9f547,0xffb34d00,0xce987966,0x5e26310a,0xf9f86b19,0x382a8ca8,0x9e435484,0xc2352fe4,0x253bcb81,0x4474b571,0xa4eac8b0 +.long 0xc1ad8cf8,0xc1b97512,0x99e0b697,0x193b4e9e,0x01e85df0,0x939d2716,0xcd44eafd,0x4fb265b3,0xe51e1ae2,0x321e7dcd,0xe3d8b096,0x8e3a8ca6,0x52604998,0x8de46cb0,0x39072aa7,0x91099ad8 +.long 0x93aa96b8,0x2617f91c,0x7fca2e13,0x0fc8716b,0x95328723,0xa7106f5e,0x262e6522,0xd1c9c40b,0x42b7c094,0xb9bafe86,0x1543c021,0x1873439d,0x5cbefd5d,0xe1baa5de,0x521e8aff,0xa363fc5e +.long 0xf862eaac,0xefe6320d,0x22c647dc,0x14419c63,0x4e46d428,0x0e06707c,0x4a178f8f,0xcb6c834f,0xd30f917c,0x0f993a45,0x9879afee,0xd4c4b049,0x70500063,0xb6142a1e,0xa5d9d605,0x7c9b41c3 +.long 0x2f8ba2c7,0xbc00fc2f,0x7c67aa28,0x0966eb2f,0x5a786972,0x13f7b516,0x8a2fbba0,0x3bfb7557,0x5a2b9620,0x131c4f23,0x6faf46be,0xbff3ed27,0x7e172323,0x9b4473d1,0x339f6246,0x421e8878 +.long 0x25a41632,0x0fa8587a,0xa35b6c93,0xc0814124,0x59ebb8db,0x2b18a9f5,0x76edb29c,0x264e3357,0xc87c51e2,0xaf245ccd,0x501e6214,0x16b3015b,0x0a3882ce,0xbb31c560,0xfec11e04,0x6961bb94 +.long 0xeff7a3a0,0x3b825b8d,0xb1df7326,0xbec33738,0x99604a1f,0x68ad747c,0x9a3bd499,0xd154c934,0x1cc7a906,0xac33506f,0x6c560e8f,0x73bb5392,0x263e3944,0x6428fcbe,0x1c387434,0xc11828d5 +.long 0x3e4b12ff,0x3cd04be1,0x2d88667c,0xc3aad9f9,0x248120cf,0xc52ddcf8,0x2a389532,0x985a892e,0x3bb85fa0,0xfbb4b21b,0x8dfc6269,0xf95375e0,0x7ee2acea,0xfb4fb06c,0x309c4d1f,0x6785426e +.long 0xd8ceb147,0x659b17c8,0xb70a5554,0x9b649eee,0xac6bc634,0x6b7fa0b5,0x1d6e732f,0xd99fe2c7,0x8d3abba2,0x30e6e762,0xa797b799,0x18fee6e7,0xc696464d,0x5c9d360d,0x27bfde12,0xe3baeb48 +.long 0xf23206d5,0x2bf5db47,0x1d260152,0x2f6d3420,0x3f8ff89a,0x17b87653,0x378fa458,0x5157c30c,0x2d4fb936,0x7517c5c5,0xe6518cdc,0xef22f7ac,0xbf847a64,0xdeb483e6,0x92e0fa89,0xf5084558 +.long 0xdf7304d4,0xab9659d8,0xff210e8e,0xb71bcf1b,0xd73fbd60,0xa9a2438b,0x5d11b4de,0x4595cd1f,0x4835859d,0x9c0d329a,0x7dbb6e56,0x4a0f0d2d,0xdf928a4e,0xc6038e5e,0x8f5ad154,0xc9429621 +.long 0xf23f2d92,0x91213462,0x60b94078,0x6cab71bd,0x176cde20,0x6bdd0a63,0xee4d54bc,0x54c9b20c,0x9f2ac02f,0x3cd2d8aa,0x206eedb0,0x03f8e617,0x93086434,0xc7f68e16,0x92dd3db9,0x831469c5 +.long 0x8f981354,0x8521df24,0x3588a259,0x587e23ec,0xd7a0992c,0xcbedf281,0x38961407,0x06930a55,0xbe5bbe21,0x09320deb,0x2491817f,0xa7ffa5b5,0x09065160,0xe6c8b4d9,0xfff6d2a9,0xac4f3992 +.long 0x3ae9c1bd,0x7aa7a158,0xe37ce240,0xe0af6d98,0x28ab38b4,0xe54342d9,0x0a1c98ca,0xe8b75007,0xe02358f2,0xefce86af,0xea921228,0x31b8b856,0x0a1c67fc,0x052a1912,0xe3aead59,0xb4069ea4 +.long 0x7fa03cb3,0x3232d6e2,0x0fdd7d88,0xdb938e5b,0x2ccbfc5d,0x04c1d2cd,0xaf3a580f,0xd2f45c12,0x7883e614,0x592620b5,0xbe7c5f26,0x5fd27e68,0x1567e1e3,0x139e45a9,0x44d8aaaf,0x2cc71d2d +.long 0xe36d0757,0x4a9090cd,0xd9a29382,0xf722d7b1,0x04b48ddf,0xfb7fb04c,0xebe16f43,0x628ad2a7,0x20226040,0xcd3fbfb5,0x5104b6c4,0x6c34ecb1,0xc903c188,0x30c0754e,0x2d23cab0,0xec336b08 +.long 0x1e206ee5,0x473d62a2,0x8c49a633,0xf1e27480,0xe9f6b2c3,0x87ab956c,0x62b606ea,0x61830b48,0xe78e815f,0x67cd6846,0x4c02082a,0xfe40139f,0x952ec365,0x52bbbfcb,0x6b9836ab,0x74c11642 +.long 0x558df019,0x9f51439e,0xac712b27,0x230da4ba,0x55185a24,0x518919e3,0x84b78f50,0x4dcefcdd,0xa47d4c5a,0xa7d90fb2,0xb30e009e,0x55ac9abf,0x74eed273,0xfd2fc359,0xdbea8faf,0xb72d824c +.long 0x4513e2ca,0xce721a74,0x38240b2c,0x0b418612,0xd5baa450,0x05199968,0x2b0e8c25,0xeb1757ed,0x3dfac6d5,0x6ebc3e28,0x48a237f5,0xb2431e2e,0x52f61499,0x2acb5e23,0xe06c936b,0x5558a2a7 +.long 0xcbb13d1b,0xd213f923,0x5bfb9bfe,0x98799f42,0x701144a9,0x1ae8ddc9,0x4c5595ee,0x0b8b3bb6,0x3ecebb21,0x0ea9ef2e,0x3671f9a7,0x17cb6c4b,0x726f1d1f,0x47ef464f,0x6943a276,0x171b9484 +.long 0x7ef0329c,0x51a4ae2d,0x91c4402a,0x08509222,0xafd45bbc,0x64a61d35,0x3035a851,0x38f096fe,0xa1dec027,0xc7468b74,0x4fc7dcba,0xe8cf10e7,0xf4a06353,0xea35ff40,0x8b77dd66,0x0b4c0dfa +.long 0xde7e5c19,0x779b8552,0xc1c0256c,0xfab28609,0xabd4743d,0x64f58eee,0x7b6cc93b,0x4e8ef838,0x4cb1bf3d,0xee650d26,0x73dedf61,0x4c1f9d09,0xbfb70ced,0xaef7c9d7,0x1641de1e,0x1ec0507e +.long 0xcde45079,0xcd7e5cc7,0x516ac9e4,0xde173c9a,0xc170315c,0x517a8494,0x91d8e8fb,0x438fd905,0xc7d9630b,0x5145c506,0xf47d4d75,0x6457a87b,0x0d9a80e8,0xd31646bf,0xcef3aabe,0x453add2b +.long 0xa607419d,0xc9941109,0xbb6bca80,0xfaa71e62,0x07c431f3,0x34158c13,0x992bc47a,0x594abebc,0xeb78399f,0x6dfea691,0x3f42cba4,0x48aafb35,0x077c04f0,0xedcd65af,0xe884491a,0x1a29a366 +.long 0x1c21f2bf,0x023a40e5,0xa5057aee,0xf99a513c,0xbcab072e,0xa3fe7e25,0x40e32bcf,0x8568d2e1,0xd3f69d9f,0x904594eb,0x07affab1,0x181a9733,0xb6e330f4,0xe4d68d76,0xc75a7fc1,0x87a6dafb +.long 0xef7d9289,0x549db2b5,0x197f015a,0x2480d4a8,0xc40493b6,0x61d5590b,0x6f780331,0x3a55b52e,0x309eadb0,0x40eb8115,0x92e5c625,0xdea7de5a,0xcc6a3d5a,0x64d631f0,0x93e8dd61,0x9d5e9d7c +.long 0x206d3ffc,0xf297bef5,0x7d808bd4,0x23d5e033,0xd24cf5ba,0x4a4f6912,0x09cdaa8a,0xe4d8163b,0xd3082e8e,0x0e0de9ef,0x0192f360,0x4fe1246c,0x4b8eee0a,0x1f900150,0xf1da391b,0x5219da81 +.long 0xf7ea25aa,0x7bf6a5c1,0xfbb07d5f,0xd165e6bf,0x89e78671,0xe3539361,0x2bac4219,0xa3fcac89,0xf0baa8ab,0xdfab6fd4,0xe2c1c2e5,0x5a4adac1,0x40d85849,0x6cd75e31,0x19b39181,0xce263fea +.long 0x07032c72,0xcb6803d3,0x790968c8,0x7f40d5ce,0xdce978f0,0xa6de86bd,0x368f751c,0x25547c4f,0x65fb2a9e,0xb1e685fd,0x1eb9179c,0xce69336f,0x12504442,0xb15d1c27,0xb911a06b,0xb7df465c +.long 0x315980cd,0xb8d804a3,0xfa3bebf7,0x693bc492,0x2253c504,0x3578aeee,0xcd2474a2,0x158de498,0xcfda8368,0x1331f5c7,0x78d7177e,0xd2d7bbb3,0xf3c1e46e,0xdf61133a,0xd30e7be8,0x5836ce7d +.long 0x94f834cb,0x83084f19,0x429ed782,0xd35653d4,0x59e58243,0xa542f16f,0x0470a22d,0xc2b52f65,0x18f23d96,0xe3b6221b,0x3f5252b4,0xcb05abac,0x87d61402,0xca00938b,0x411933e4,0x2f186cdd +.long 0x9a29a5c5,0xe042ece5,0x3b6c8402,0xb19b3c07,0x19d92684,0xc97667c7,0xebc66372,0xb5624622,0x3c04fa02,0x0cb96e65,0x8eaa39aa,0x83a7176c,0xeaa1633f,0x2033561d,0x4533df73,0x45a9d086 +.long 0x3dc090bc,0xe0542c1d,0xaa59c167,0x82c996ef,0x0ee7fc4d,0xe3f735e8,0x7c35db79,0x7b179393,0xf8c5dbfd,0xb6419e25,0x1f327b04,0x4d9d7a1e,0x298dfca8,0x979f6f9b,0x8de9366a,0xc7c5dff1 +.long 0x04c82bdd,0x1b7a588d,0xf8319dfd,0x68005534,0xd8eb9580,0xde8a55b5,0x8d5bca81,0x5ea886da,0x252a0b4d,0xe8530a01,0x35eaa0a1,0x1bffb4fe,0xd8e99563,0x2ad828b1,0x95f9cd87,0x7de96ef5 +.long 0xd77d970c,0x4abb2d0c,0xd33ef9cb,0x03cfb933,0x8b211fe9,0xb0547c01,0xa56ed1c6,0x2fe64809,0xc2ac98cc,0xcb7d5624,0x1a393e33,0x2a1372c0,0x29660521,0xc8d1ec1c,0xb37ac3e9,0xf3d31b04 +.long 0x5ece6e7c,0xa29ae9df,0x0facfb55,0x0603ac8f,0xdda233a5,0xcfe85b7a,0xbd75f0b8,0xe618919f,0x99bf1603,0xf555a3d2,0xf184255a,0x1f43afc9,0x319a3e02,0xdcdaf341,0x03903a39,0xd3b117ef +.long 0x65d1d131,0xe095da13,0xc37ad03e,0x86f16367,0x462cd8dd,0x5f37389e,0xd67a60e6,0xc103fa04,0xf4b478f0,0x57c34344,0xe117c98d,0xce91edd8,0x231fc12e,0x001777b0,0xb207bccb,0x11ae47f2 +.long 0x20f8a242,0xd983cf8d,0xf22e1ad8,0x7aff5b1d,0x7fc4feb3,0x68fd11d0,0xb0f1c3e1,0x5d53ae90,0xec041803,0x50fb7905,0x14404888,0x85e3c977,0xac628d8f,0x0e67faed,0x6668532c,0x2e865150 +.long 0x6a67a6b0,0x15acaaa4,0xb25cec41,0xf4cdee25,0xe4c6701e,0x49ee565a,0xfc7d63d8,0x2a04ca66,0xef0543fb,0xeb105018,0xd1b0d81d,0xf709a4f5,0x2915d333,0x5b906ee6,0x96f1f0ab,0xf4a87412 +.long 0x4d82f4c2,0xb6b82fa7,0x6804efb3,0x90725a60,0xadc3425e,0xbc82ec46,0x2787843e,0xb7b80581,0xdd1fc74c,0xdf46d91c,0xe783a6c4,0xdc1c62cb,0x1a04cbba,0x59d1b9f3,0x95e40764,0xd87f6f72 +.long 0x317f4a76,0x02b4cfc1,0x91036bce,0x8d2703eb,0xa5e72a56,0x98206cc6,0xcf53fb0f,0x57be9ed1,0xef0b17ac,0x09374571,0xd9181b38,0x74b2655e,0x89935d0e,0xc8f80ea8,0x91529936,0xc0d9e942 +.long 0x1e84e0e5,0x19686041,0xaea34c93,0xa5db84d3,0x7073a732,0xf9d5bb19,0x6bcfd7c0,0xb8d2fe56,0xf3eb82fa,0x45775f36,0xfdff8b58,0x8cb20ccc,0x8374c110,0x1659b65f,0x330c789a,0xb8b4a422 +.long 0x6fe8208b,0x75e3c3ea,0x286e78fe,0xbd74b9e4,0xd7d93a1a,0x0be2e81b,0xdd0a5aae,0x7ed06e27,0x6be8b800,0x721f5a58,0xd846db28,0x428299d1,0x5be88ed3,0x95cb8e6b,0x1c034e11,0xc3186b23 +.long 0x8977d99b,0xa6312c9e,0x83f531e7,0xbe944331,0x18d3b1d4,0x8232c0c2,0xe1247b73,0x617aae8b,0x282aec3b,0x40153fc4,0xf7b8f823,0xc6063d2f,0x3304f94c,0x68f10e58,0xee676346,0x31efae74 +.long 0x40a9b97c,0xbadb6c6d,0x4f666256,0x14702c63,0x5184b2e3,0xdeb954f1,0x94b6ca40,0x5184a526,0x003c32ea,0xfff05337,0x205974c7,0x5aa374dd,0x4b0dd71a,0x9a763854,0xdeb947ec,0x459cd27f +.long 0x459c2b92,0xa6e28161,0x75ee8ef5,0x2f020fa8,0x30b06310,0xb132ec2d,0xbc6a4530,0xc3e15899,0xaa3f451a,0xdc5f53fe,0xc2d9acac,0x3a3c7f23,0x6b27e58b,0x2ec2f892,0xd742799f,0x68466ee7 +.long 0x1fa26613,0x98324dd4,0xbdc29d63,0xa2dc6dab,0xd712d657,0xf9675faa,0x21fd8d15,0x813994be,0xfd4f7553,0x5ccbb722,0xf3a36b20,0x5135ff8b,0x69559df5,0x44be28af,0x9d41bf30,0x40b65bed +.long 0x3734e520,0xd98bf2a4,0x209bdcba,0x5e3abbe3,0xbc945b35,0x77c76553,0xc6ef14aa,0x5331c093,0x76b60c80,0x518ffe29,0x7ace16f8,0x2285593b,0xbe2b9784,0xab1f64cc,0xab2421b6,0xe8f2c0d9 +.long 0xc1df065c,0x617d7174,0x5f6578fa,0xafeeb5ab,0x263b54a8,0x16ff1329,0xc990dce3,0x45c55808,0xecc8c177,0x42eab6c0,0x5982ecaa,0x799ea9b5,0xb607ef8e,0xf65da244,0x32a3fc2c,0x8ab226ce +.long 0x7ea973dc,0x745741e5,0x20888f2e,0x5c00ca70,0x45fd9cf1,0x7cdce3cf,0x5507f872,0x8a741ef1,0x196b4cec,0x47c51c2f,0xc97ea618,0x70d08e43,0x15b18a2b,0x930da15c,0x2f610514,0x33b6c678 +.long 0x07ac9794,0xc662e4f8,0xba06cb79,0x1eccf050,0xe7d954e5,0x1ff08623,0x24cf71c3,0x6ef2c5fb,0x67978453,0xb2c063d2,0x1d654af8,0xa0cf3796,0x7ebdaa37,0x7cb242ea,0xb86747e0,0x206e0b10 +.long 0xd5ecfefc,0x481dae5f,0xc2bff8fc,0x07084fd8,0xea324596,0x8040a01a,0xd4de4036,0x4c646980,0xd65abfc3,0x9eb8ab4e,0x13541ec7,0xe01cb91f,0xfd695012,0x8f029adb,0x3c7569ec,0x9ae28483 +.long 0xa66d80a1,0xa5614c9e,0x75f5f911,0x680a3e44,0xceba4fc1,0x0c07b14d,0xa13071c1,0x891c285b,0x799ece3c,0xcac67ceb,0x41e07e27,0x29b910a9,0xf2e43123,0x66bdb409,0x7ac9ecbe,0x06f8b137 +.long 0x38547090,0x5981fafd,0x85e3415d,0x19ab8b9f,0xc7e31b27,0xfc28c194,0x6fbcbb42,0x843be0aa,0xa6db836c,0xf3b1ed43,0x01a45c05,0x2a1330e4,0x95c1a377,0x4f19f3c5,0x44b5ee33,0xa85f39d0 +.long 0x4ae52834,0x3da18e6d,0x7423dcb0,0x5a403b39,0xf2374aef,0xbb555e0a,0x1e8ca111,0x2ad599c4,0x014b3bf8,0x1b3a2fb9,0xf66d5007,0x73092684,0xc4340102,0x079f1426,0x8fddf4de,0x1827cf81 +.long 0xf10ff927,0xc83605f6,0x23739fc6,0xd3871451,0xcac1c2cc,0x6d163450,0xa2ec1ac5,0x6b521296,0x6e3cb4a5,0x0606c4f9,0x778abff7,0xe47d3f41,0xbe8e3a45,0x425a8d5e,0xa6102160,0x53ea9e97 +.long 0x39cbb688,0x477a106e,0xf3386d32,0x532401d2,0xb1b9b421,0x8e564f64,0x81dad33f,0xca9b8388,0x2093913e,0xb1422b4e,0x69bc8112,0x533d2f92,0xebe7b2c7,0x3fa017be,0xcaf197c6,0xb2767c4a +.long 0xaedbae9f,0xc925ff87,0x36880a54,0x7daf0eb9,0x9c4d0e71,0x9284ddf5,0x316f8cf5,0x1581cf93,0x3ac1f452,0x3eeca887,0xfb6aeffe,0xb417fce9,0xeefb8dc3,0xa5918046,0x02209400,0x73d318ac +.long 0x728693e5,0xe800400f,0x339927ed,0xe87d814b,0x57ea9910,0x93e94d3b,0x2245fb69,0xff8a35b6,0x7f200d34,0x043853d7,0x0f653ce1,0x470f1e68,0x59a06379,0x81ac05bd,0x03930c29,0xa14052c2 +.long 0x26bc2797,0x6b72fab5,0x99f16771,0x13670d16,0x1e3e48d1,0x00170052,0xb7adf678,0x978fe401,0xd41c5dd4,0x55ecfb92,0xc7b27da5,0x5ff8e247,0x013fb606,0xe7518272,0x2f547a3c,0x5768d7e5 +.long 0x60017a5f,0xbb24eaa3,0x9c64ce9b,0x6b18e6e4,0x103dde07,0xc225c655,0x7592f7ea,0xfc3672ae,0xd06283a1,0x9606ad77,0xe4d59d99,0x542fc650,0x2a40e7c2,0xabb57c49,0xa8db9f55,0xac948f13 +.long 0xb04465c3,0x6d4c9682,0x6468bd15,0xe3d062fa,0x5f318d7e,0xa51729ac,0x9eb6fc95,0x1fc87df6,0x0591f652,0x63d146a8,0x589621aa,0xa861b8f7,0xce31348c,0x59f5f15a,0x440da6da,0x8f663391 +.long 0xb591ffa3,0xcfa778ac,0x4cdfebce,0x027ca9c5,0x444ea6b3,0xbe8e05a5,0xa78d8254,0x8aab4e69,0xb474d6b8,0x2437f04f,0x045b3855,0x6597ffd4,0xca47ecaa,0xbb0aea4e,0x85c7ebfc,0x568aae83 +.long 0xc73b2383,0x0e966e64,0xd17d8762,0x49eb3447,0x8da05dab,0xde107821,0x016b7236,0x443d8baa,0xea7610d6,0x163b63a5,0xce1ca979,0xe47e4185,0x80baa132,0xae648b65,0x0e0d5b64,0xebf53de2 +.long 0xd3c8c1ca,0x8d3bfcb4,0x5d04b309,0x0d914ef3,0x3de7d395,0x55ef6415,0x26b850e8,0xbde1666f,0xd449ab19,0xdbe1ca6e,0xe89a2672,0x8902b322,0xdacb7a53,0xb1674b7e,0xf52523ff,0x8e9faf6e +.long 0x9a85788b,0x6ba535da,0xbd0626d4,0xd21f03ae,0xe873dc64,0x099f8c47,0x018ec97e,0xcda8564d,0xde92c68c,0x3e8d7a5c,0x73323cc4,0x78e035a1,0xf880ff7c,0x3ef26275,0x273eedaa,0xa4ee3dff +.long 0xaf4e18f8,0x58823507,0x0672f328,0x967ec9b5,0x559d3186,0x9ded19d9,0x6cdce39c,0x5e2ab3de,0x11c226df,0xabad6e4d,0x87723014,0xf9783f43,0x1a885719,0x9a49a0cf,0x90da9dbf,0xfc0c1a5a +.long 0x571d92ac,0x8bbaec49,0x4692517f,0x569e85fe,0xa14ea4af,0x8333b014,0x12e5c5ad,0x32f2a62f,0x06d89b85,0x98c2ce3a,0x2ff77a08,0xb90741aa,0x01f795a2,0x2530defc,0x84b3c199,0xd6e5ba0b +.long 0x12e4c936,0x7d8e8451,0xbd0be17b,0xae419f7d,0x22262bc9,0xa583fc8c,0x91bfe2bd,0x6b842ac7,0x440d6827,0x33cef4e9,0xef81fb14,0x5f69f4de,0x234fbb92,0xf16cf6f6,0xd9e7e158,0x76ae3fc3 +.long 0xe9740b33,0x4e89f6c2,0x4962d6a1,0x677bc85d,0x68d10d15,0x6c6d8a7f,0x0257b1cd,0x5f9a7224,0x4ad85961,0x7096b916,0xe657ab4a,0x5f8c47f7,0xf7461d7e,0xde57d7d0,0x80ce5ee2,0x7eb6094d +.long 0x34190547,0x0b1e1dfd,0xf05dd150,0x8a394f43,0x97df44e6,0x0a9eb24d,0x87675719,0x78ca06bf,0x6ffeec22,0x6f0b3462,0x36cdd8fb,0x9d91bcea,0xa105be47,0xac83363c,0x069710e3,0x81ba76c1 +.long 0x28c682c6,0x3d1b24cb,0x8612575b,0x27f25228,0xe8e66e98,0xb587c779,0x405eb1fe,0x7b0c03e9,0x15b548e7,0xfdf0d030,0x38b36af7,0xa8be76e0,0x4f310c40,0x4cdab04a,0xf47ecaec,0x6287223e +.long 0x8b399320,0x678e6055,0xc01e4646,0x61fe3fa6,0x03261a5e,0xc482866b,0x5c2f244a,0xdfcf45b8,0x2f684b43,0x8fab9a51,0xc7220a66,0xf796c654,0xf5afa58f,0x1d90707e,0x4fdbe0de,0x2c421d97 +.long 0xaf2ebc2f,0xc4f4cda3,0xcb4efe24,0xa0af843d,0x9ccd10b1,0x53b857c1,0x914d3e04,0xddc9d1eb,0x62771deb,0x7bdec8bb,0x91c5aa81,0x829277aa,0x832391ae,0x7af18dd6,0xc71a84ca,0x1740f316 +.long 0xeeaf8c49,0x8928e99a,0x6e24d728,0xee7aa73d,0xe72b156c,0x4c5007c2,0xed408a1d,0x5fcf57c5,0xb6057604,0x9f719e39,0xc2868bbf,0x7d343c01,0x7e103e2d,0x2cca254b,0xf131bea2,0xe6eb38a9 +.long 0x8be762b4,0xb33e624f,0x058e3413,0x2a9ee4d1,0x67d805fa,0x968e6369,0x7db8bfd7,0x9848949b,0xd23a8417,0x5308d7e5,0xf3e29da5,0x892f3b1d,0x3dee471f,0xc95c139e,0xd757e089,0x8631594d +.long 0xde918dcc,0xe0c82a3c,0x26fdcf4b,0x2e7b5994,0x32cb1b2d,0x82c50249,0x7657ae07,0xea613a9d,0xf1fdc9f7,0xc2eb5f6c,0x879fe682,0xb6eae8b8,0x591cbc7f,0x253dfee0,0x3e1290e6,0x000da713 +.long 0x1f095615,0x1083e2ea,0x14e68c33,0x0a28ad77,0x3d8818be,0x6bfc0252,0xf35850cd,0xb585113a,0x30df8aa1,0x7d935f0b,0x4ab7e3ac,0xaddda07c,0x552f00cb,0x92c34299,0x2909df6c,0xc33ed1de +.long 0x80e87766,0x22c2195d,0x9ddf4ac0,0x9e99e6d8,0x65e74934,0x09642e4e,0xff1ff241,0x2610ffa2,0x751c8159,0x4d1d47d4,0xaf3a9363,0x697b4985,0x87477c33,0x0318ca46,0x9441eff3,0xa90cb565 +.long 0x36f024cb,0x58bb3848,0x36016168,0x85be1f77,0xdc7e07f1,0x6c59587c,0xaf1d8f02,0x191be071,0xcca5e55c,0xbf169fa5,0xf7d04eac,0x3864ba3c,0x8d7d05db,0x915e367f,0xa6549e5d,0xb48a876d +.long 0x580e40a2,0xef89c656,0x728068bc,0xf194ed8c,0xa47990c9,0x74528045,0x5e1a4649,0xf53fc7d7,0x78593e7d,0xbec5ae9b,0x41db65d7,0x2cac4ee3,0x04a3d39b,0xa8c1eb24,0x03f8f3ef,0x53b7d634 +.long 0x3e07113c,0x2dc40d48,0x7d8b63ae,0x6e4a5d39,0x79684c2b,0x5582a94b,0x622da26c,0x932b33d4,0x0dbbf08d,0xf534f651,0x64c23a52,0x211d07c9,0xee5bdc9b,0x0eeece0f,0xf7015558,0xdf178168 +.long 0x0a712229,0xd4294635,0x09273f8c,0x93cbe448,0x8f13bc83,0x00b095ef,0x8798978c,0xbb741972,0x56dbe6e7,0x9d7309a2,0x5a5d39ec,0xe578ec56,0x851f9a31,0x3961151b,0xe5709eb4,0x2da7715d +.long 0x53dfabf0,0x867f3017,0xb8e39259,0x728d2078,0x815d9958,0x5c75a0cd,0x16603be1,0xf84867a6,0x70e35b1c,0xc865b13d,0x19b03e2c,0x02414468,0xac1f3121,0xe46041da,0x6f028a7c,0x7c9017ad +.long 0x0a482873,0xabc96de9,0xb77e54d4,0x4265d6b1,0xa57d88e7,0x68c38e79,0x9ce82de3,0xd461d766,0x64a7e489,0x817a9ec5,0xa0def5f2,0xcc5675cd,0x985d494e,0x9a00e785,0x1b03514a,0xc626833f +.long 0x83cdd60e,0xabe7905a,0xa1170184,0x50602fb5,0xb023642a,0x689886cd,0xa6e1fb00,0xd568d090,0x0259217f,0x5b1922c7,0xc43141e4,0x93831cd9,0x0c95f86e,0xdfca3587,0x568ae828,0xdec2057a +.long 0xf98a759a,0xc44ea599,0xf7c23c1d,0x55a0a7a2,0x94c4f687,0xd5ffb6e6,0x12848478,0x3563cce2,0xe7b1fbe1,0x812b3517,0x4f7338e0,0x8a7dc979,0x52d048db,0x211ecee9,0xc86ea3b8,0x2eea4056 +.long 0xba772b34,0xd8cb68a7,0x5f4e2541,0xe16ed341,0x0fec14db,0x9b32f6a6,0x391698be,0xeee376f7,0x83674c02,0xe9a7aa17,0x5843022a,0x65832f97,0x5ba4990f,0x29f3a8da,0xfb8e3216,0x79a59c3a +.long 0xbd19bb16,0x9cdc4d2e,0xb3262d86,0xc6c7cfd0,0x969c0b47,0xd4ce14d0,0x13e56128,0x1fa352b7,0x973db6d3,0x383d55b8,0xe8e5b7bf,0x71836850,0xe6bb571f,0xc7714596,0x2d5b2dd2,0x259df31f +.long 0x913cc16d,0x568f8925,0xe1a26f5a,0x18bc5b6d,0xf5f499ae,0xdfa413be,0xc3f0ae84,0xf8835dec,0x65a40ab0,0xb6e60bd8,0x194b377e,0x65596439,0x92084a69,0xbcd85625,0x4f23ede0,0x5ce433b9 +.long 0x6ad65143,0xe8e8f04f,0xd6e14af6,0x11511827,0x8295c0c7,0x3d390a10,0x621eba16,0x71e29ee4,0x63717b46,0xa588fc09,0xe06ad4a2,0x02be02fe,0x04c22b22,0x931558c6,0x12f3c849,0xbb4d4bd6 +.long 0x20efd662,0x54a4f496,0xc5952d14,0x92ba6d20,0xcc9784c2,0x2db8ea1e,0x4b353644,0x81cc10ca,0x4b4d7f6c,0x40b570ad,0x84a1dcd2,0x5c9f1d96,0x3147e797,0x01379f81,0x2bd499f5,0xe5c6097b +.long 0x328e5e20,0x40dcafa6,0x54815550,0xf7b5244a,0x47bfc978,0xb9a4f118,0xd25825b1,0x0ea0e79f,0x646c7ecf,0xa50f96eb,0x446dea9d,0xeb811493,0xdfabcf69,0x2af04677,0xc713f6e8,0xbe3a068f +.long 0x42e06189,0x860d523d,0x4e3aff13,0xbf077941,0xc1b20650,0x0b616dca,0x2131300d,0xe66dd6d1,0xff99abde,0xd4a0fd67,0xc7aac50d,0xc9903550,0x7c46b2d7,0x022ecf8b,0x3abf92af,0x3333b1e8 +.long 0x6c491c14,0x11cc113c,0x80dd3f88,0x05976688,0x29d932ed,0xf5b4d9e7,0xa2c38b6d,0xe982aad8,0x8be0dcf0,0x6f925347,0x65ca53f2,0x700080ae,0x443ca77f,0xd8131156,0xec51f984,0xe92d6942 +.long 0x85dfe9ae,0xd2a08af8,0x4d2a86ca,0xd825d9a5,0x39dff020,0x2c53988d,0x430cdc40,0xf38b135a,0x62a7150b,0x0c918ae0,0x0c340e9b,0xf31fd8de,0x4dbbf02e,0xafa0e7ae,0x5eba6239,0x5847fb2a +.long 0xdccbac8b,0x6b1647dc,0x06f485c8,0xb642aa78,0x7038ecdf,0x873f3765,0xfa49d3fe,0x2ce5e865,0xc98c4400,0xea223788,0xf1fa5279,0x8104a8cd,0x06becfd7,0xbcf7cc7a,0xc8f974ae,0x49424316 +.long 0x84d6365d,0xc0da65e7,0x8f759fb8,0xbcb7443f,0x7ae81930,0x35c712b1,0x4c6e08ab,0x80428dff,0xa4faf843,0xf19dafef,0xffa9855f,0xced8538d,0xbe3ac7ce,0x20ac409c,0x882da71e,0x358c1fb6 +.long 0xfd349961,0xafa9c0e5,0x8421c2fc,0x2b2cfa51,0xf3a28d38,0x2a80db17,0x5d138e7e,0xa8aba539,0x6e96eb8d,0x52012d1d,0xcbaf9622,0x65d8dea0,0xb264f56c,0x57735447,0x1b6c8da2,0xbeebef3f +.long 0xce785254,0xfc346d98,0xbb64a161,0xd50e8d72,0x49794add,0xc03567c7,0x752c7ef6,0x15a76065,0x961f23d6,0x59f3a222,0x73ecc0b0,0x378e4438,0x5a82fde4,0xc74be434,0xd8b9cf34,0xae509af2 +.long 0x577f44a1,0x4a61ee46,0xb611deeb,0xe09b748c,0xf5f7b884,0xc0481b2c,0x61acfa6b,0x35626678,0xbf8d21e6,0x37f4c518,0xb205a76d,0x22d96531,0x954073c0,0x37fb85e1,0x65b3a567,0xbceafe4f +.long 0xbe42a582,0xefecdef7,0x65046be6,0xd3fc6080,0x09e8dba9,0xc9af13c8,0x641491ff,0x1e6c9847,0xd30c31f7,0x3b574925,0xac2a2122,0xb7eb72ba,0xef0859e7,0x776a0dac,0x21900942,0x06fec314 +.long 0xf8c22049,0x2464bc10,0x875ebf69,0x9bfbcce7,0x4336326b,0xd7a88e2a,0x5bc2acfa,0xda05261c,0xeba7efc8,0xc29f5bdc,0x25dbbf2e,0x471237ca,0x2975f127,0xa72773f2,0x04d0b326,0xdc744e8e +.long 0xa56edb73,0x38a7ed16,0x2c007e70,0x64357e37,0x5080b400,0xa167d15b,0x23de4be1,0x07b41164,0x74c89883,0xb2d91e32,0x2882e7ed,0x3c162821,0x7503e482,0xad6b36ba,0x0ea34331,0x48434e8e +.long 0x2c7ae0b9,0x79f4f24f,0x1939b44a,0xc46fbf81,0x56595eb1,0x76fefae8,0xcd5f29c7,0x417b66ab,0xc5ceec20,0x5f2332b2,0xe1a1cae2,0xd69661ff,0x9b0286e6,0x5ede7e52,0xe276b993,0x9d062529 +.long 0x7e50122b,0x324794b0,0x4af07ca5,0xdd744f8b,0xd63fc97b,0x30a12f08,0x76626d9d,0x39650f1a,0x1fa38477,0x101b47f7,0xd4dc124f,0x3d815f19,0xb26eb58a,0x1569ae95,0x95fb1887,0xc3cde188 +.long 0xf9539a48,0x54e9f37b,0x7408c1a5,0xb0100e06,0xea580cbb,0x821d9811,0x86e50c56,0x8af52d35,0xdbbf698b,0xdfbd9d47,0x03dc1c73,0x2961a1ea,0xe76a5df8,0x203d38f8,0x6def707a,0x08a53a68 +.long 0x1bee45d4,0x26eefb48,0x3c688036,0xb3cee346,0xc42f2469,0x463c5315,0x81378162,0x19d84d2e,0x1c4d349f,0x22d7c3c5,0x163d59c5,0x65965844,0xb8abceae,0xcf198c56,0x628559d5,0x6fb1fb1b +.long 0x07bf8fe3,0x8bbffd06,0x3467734b,0x46259c58,0x35f7f0d3,0xd8953cea,0xd65b0ff1,0x1f0bece2,0xf3c72914,0xf7d5b4b3,0x3cb53389,0x29e8ea95,0x836b6d46,0x4a365626,0xea174fde,0xe849f910 +.long 0xf4737f21,0x7ec62fbb,0x6209f5ac,0xd8dba5ab,0xa5f9adbe,0x24b5d7a9,0xa61dc768,0x707d28f7,0xcaa999ea,0x7711460b,0x1c92e4cc,0xba7b174d,0x18d4bf2d,0x3c4bab66,0xeb8bd279,0xb8f0c980 +.long 0x324b4737,0x024bea9a,0x32a83bca,0xfba9e423,0xa232dced,0x6e635643,0x2571c8ba,0x99619367,0x54b7032b,0xe8c9f357,0x2442d54a,0xf936b3ba,0x8290c65a,0x2263f0f0,0xee2c7fdb,0x48989780 +.long 0x13d4f95e,0xadc5d55a,0xad9b8500,0x737cff85,0x8a73f43d,0x271c557b,0xe18bc476,0xbed617a4,0x7dfd8ab2,0x66245401,0x3a2870aa,0xae7b89ae,0x23a7e545,0x1b555f53,0xbe057e4c,0x6791e247 +.long 0x324fa34d,0x860136ad,0x4cbeae28,0xea111447,0xbedd3299,0x023a4270,0xc1c35c34,0x3d5c3a7f,0x8d0412d2,0xb0f6db67,0xfcdc6b9a,0xd92625e2,0x4e28a982,0x92ae5ccc,0x47a3ce7e,0xea251c36 +.long 0x790691bf,0x9d658932,0x06b736ae,0xed610589,0xc0d63b6e,0x712c2f04,0xc63d488f,0x5cf06fd5,0xd9588e41,0x97363fac,0x2b93257e,0x1f9bf762,0x667acace,0xa9d1ffc4,0x0a061ecf,0x1cf4a1aa +.long 0xdc1818d0,0x40e48a49,0xa3621ab0,0x0643ff39,0xe39ef639,0x5768640c,0x04d86854,0x1fc099ea,0xeccd28fd,0x9130b9c3,0x7eec54ab,0xd743cbd2,0xe5b475b6,0x052b146f,0x900a7d1f,0x058d9a82 +.long 0x91262b72,0x65e02292,0xbb0edf03,0x96f924f9,0xfe206842,0x5cfa59c8,0x5eafa720,0xf6037004,0x18d7dd96,0x5f30699e,0xcbab2495,0x381e8782,0xdd8be949,0x91669b46,0x26aae8ef,0xb40606f5 +.long 0xfc6751a4,0x2812b839,0xfba800ef,0x16196214,0x4c1a2875,0x4398d5ca,0x653d8349,0x720c00ee,0xd820007c,0xc2699eb0,0xa39b5825,0x880ee660,0x471f6984,0x70694694,0xe3dda99a,0xf7d16ea8 +.long 0xc0519a23,0x28d675b2,0x4f6952e3,0x9ebf94fe,0xa2294a8a,0xf28bb767,0xfe0af3f5,0x85512b4d,0x99b16a0d,0x18958ba8,0xba7548a7,0x95c2430c,0xa16be615,0xb30d1b10,0x85bfb74c,0xe3ebbb97 +.long 0x18549fdb,0xa3273cfe,0x4fcdb792,0xf6e200bf,0x83aba56c,0x54a76e18,0x89ef6aa2,0x73ec66f6,0xd1b9a305,0x8d17add7,0xb7ae1b9d,0xa959c5b9,0x6bcc094a,0x88643522,0xd7d429b9,0xcc5616c4 +.long 0xe6a33f7c,0xa6dada01,0x9d4e70ad,0xc6217a07,0x09c15b7c,0xd619a818,0x0e80c854,0xea06b329,0xa5f5e7b9,0x174811ce,0x787c65f4,0x66dfc310,0x3316ab54,0x4ea7bd69,0x1dcc0f70,0xc12c4acb +.long 0x1e407dd9,0xe4308d1a,0x91afa997,0xe8a3587c,0xab77b7a5,0xea296c12,0x673c0d52,0xb5ad49e4,0x7006085a,0x40f9b2b2,0x87bf6ec2,0xa88ff340,0x4e3066a6,0x978603b1,0xb5e486e2,0xb3f99fc2 +.long 0xb2e63645,0x07b53f5e,0x84c84232,0xbe57e547,0x7214d5cf,0xd779c216,0x029a3aca,0x617969cd,0x8a7017a0,0xd17668cd,0xbe9b7ee8,0x77b4d19a,0x9c161776,0x58fd0e93,0xd5968a72,0xa8c4f4ef +.long 0x67b3de77,0x296071cc,0x634f7905,0xae3c0b8e,0x8a7100c9,0x67e440c2,0xeb4b9b42,0xbb8c3c1b,0xc51b3583,0x6d71e8ea,0x9525e642,0x7591f5af,0x13f509f3,0xf73a2f7b,0x5619ac9b,0x618487aa +.long 0x9d61718a,0x3a72e5f7,0x7592d28c,0x00413bcc,0x963c35cf,0x7d9b11d3,0xb90a46ed,0x77623bcf,0xdcdd2a50,0xdeef273b,0x0601846e,0x4a741f9b,0x0ec6e929,0x33b89e51,0x8b7f22cd,0xcb02319f +.long 0x084bae24,0xbbe1500d,0x343d2693,0x2f0ae8d7,0x7cdef811,0xacffb5f2,0x263fb94f,0xaa0c030a,0xa0f442de,0x6eef0d61,0x27b139d3,0xf92e1817,0x0ad8bc28,0x1ae6deb7,0xc0514130,0xa89e38dc +.long 0xd2fdca23,0x81eeb865,0xcc8ef895,0x5a15ee08,0x01905614,0x768fa10a,0x880ee19b,0xeff5b8ef,0xcb1c8a0e,0xf0c0cabb,0xb8c838f9,0x2e1ee9cd,0x8a4a14c0,0x0587d8b8,0x2ff698e5,0xf6f27896 +.long 0x89ee6256,0xed38ef1c,0x6b353b45,0xf44ee1fe,0x70e903b3,0x9115c0c7,0x818f31df,0xc78ec0a1,0xb7dccbc6,0x6c003324,0x163bbc25,0xd96dd1f3,0x5cedd805,0x33aa82dd,0x7f7eb2f1,0x123aae4f +.long 0xa26262cd,0x1723fcf5,0x0060ebd5,0x1f7f4d5d,0xb2eaa3af,0xf19c5c01,0x9790accf,0x2ccb9b14,0x52324aa6,0x1f9c1cad,0x7247df54,0x63200526,0xbac96f82,0x5732fe42,0x01a1c384,0x52fe771f +.long 0xb1001684,0x546ca13d,0xa1709f75,0xb56b4eee,0xd5db8672,0x266545a9,0x1e8f3cfb,0xed971c90,0xe3a07b29,0x4e7d8691,0xe4b696b9,0x7570d9ec,0x7bc7e9ae,0xdc5fa067,0xc82c4844,0x68b44caf +.long 0xbf44da80,0x519d34b3,0x5ab32e66,0x283834f9,0x6278a000,0x6e608797,0x627312f6,0x1e62960e,0xe6901c55,0x9b87b27b,0x24fdbc1f,0x80e78538,0x2facc27d,0xbbbc0951,0xac143b5a,0x06394239 +.long 0x376c1944,0x35bb4a40,0x63da1511,0x7cb62694,0xb7148a3b,0xafd29161,0x4e2ea2ee,0xa6f9d9ed,0x880dd212,0x15dc2ca2,0xa61139a9,0x903c3813,0x6c0f8785,0x2aa7b46d,0x901c60ff,0x36ce2871 +.long 0xe10d9c12,0xc683b028,0x032f33d3,0x7573baa2,0x67a31b58,0x87a9b1f6,0xf4ffae12,0xfd3ed11a,0x0cb2748e,0x83dcaa9a,0x5d6fdf16,0x8239f018,0x72753941,0xba67b49c,0xc321cb36,0x2beec455 +.long 0x3f8b84ce,0x88015606,0x8d38c86f,0x76417083,0x598953dd,0x054f1ca7,0x4e8e7429,0xc939e110,0x5a914f2f,0x9b1ac2b3,0xe74b8f9c,0x39e35ed3,0x781b2fb0,0xd0debdb2,0x2d997ba2,0x1585638f +.long 0x9e2fce99,0x9c4b646e,0x1e80857f,0x68a21081,0x3643b52a,0x06d54e44,0x0d8eb843,0xde8d6d63,0x42146a0a,0x70321563,0x5eaa3622,0x8ba826f2,0x86138787,0x227a58bd,0x10281d37,0x43b6c03c +.long 0xb54dde39,0x6326afbb,0xdb6f2d5f,0x744e5e8a,0xcff158e1,0x48b2a99a,0xef87918f,0xa93c8fa0,0xde058c5c,0x2182f956,0x936f9e7a,0x216235d2,0xd2e31e67,0xace0c0db,0xf23ac3e7,0xc96449bf +.long 0x170693bd,0x7e9a2874,0xa45e6335,0xa28e14fd,0x56427344,0x5757f6b3,0xacf8edf9,0x822e4556,0xe6a285cd,0x2b7a6ee2,0xa9df3af0,0x5866f211,0xf845b844,0x40dde2dd,0x110e5e49,0x986c3726 +.long 0xf7172277,0x73680c2a,0x0cccb244,0x57b94f0f,0x2d438ca7,0xbdff7267,0xcf4663fd,0xbad1ce11,0xd8f71cae,0x9813ed9d,0x961fdaa6,0xf43272a6,0xbd6d1637,0xbeff0119,0x30361978,0xfebc4f91 +.long 0x2f41deff,0x02b37a95,0xe63b89b7,0x0e44a59a,0x143ff951,0x673257dc,0xd752baf4,0x19c02205,0xc4b7d692,0x46c23069,0xfd1502ac,0x2e6392c3,0x1b220846,0x6057b1a2,0x0c1b5b63,0xe51ff946 +.long 0x566c5c43,0x6e85cb51,0x3597f046,0xcff9c919,0x4994d94a,0x9354e90c,0x2147927d,0xe0a39332,0x0dc1eb2b,0x8427fac1,0x2ff319fa,0x88cfd8c2,0x01965274,0xe2d4e684,0x67aaa746,0xfa2e067d +.long 0x3e5f9f11,0xb6d92a7f,0xd6cb3b8e,0x9afe153a,0xddf800bd,0x4d1a6dd7,0xcaf17e19,0xf6c13cc0,0x325fc3ee,0x15f6c58e,0xa31dc3b2,0x71095400,0xafa3d3e7,0x168e7c07,0x94c7ae2d,0x3f8417a1 +.long 0x813b230d,0xec234772,0x17344427,0x634d0f5f,0xd77fc56a,0x11548ab1,0xce06af77,0x7fab1750,0x4f7c4f83,0xb62c10a7,0x220a67d9,0xa7d2edc4,0x921209a0,0x1c404170,0xface59f0,0x0b9815a0 +.long 0x319540c3,0x2842589b,0xa283d6f8,0x18490f59,0xdaae9fcb,0xa2731f84,0xc3683ba0,0x3db6d960,0x14611069,0xc85c63bb,0x0788bf05,0xb19436af,0x347460d2,0x905459df,0xe11a7db1,0x73f6e094 +.long 0xb6357f37,0xdc7f938e,0x2bd8aa62,0xc5d00f79,0x2ca979fc,0xc878dcb9,0xeb023a99,0x37e83ed9,0x1560bf3d,0x6b23e273,0x1d0fae61,0x1086e459,0x9a9414bd,0x78248316,0xf0ea9ea1,0x1b956bc0 +.long 0xc31b9c38,0x7b85bb91,0x48ef57b5,0x0c5aa90b,0xaf3bab6f,0xdedeb169,0x2d373685,0xe610ad73,0x02ba8e15,0xf13870df,0x8ca7f771,0x0337edb6,0xb62c036c,0xe4acf747,0xb6b94e81,0xd921d576 +.long 0x2c422f7a,0xdbc86439,0xed348898,0xfb635362,0xc45bfcd1,0x83084668,0x2b315e11,0xc357c9e3,0x5b2e5b8c,0xb173b540,0xe102b9a4,0x7e946931,0x7b0fb199,0x17c890eb,0xd61b662b,0xec225a83 +.long 0xee3c76cb,0xf306a3c8,0xd32a1f6e,0x3cf11623,0x6863e956,0xe6d5ab64,0x5c005c26,0x3b8a4cbe,0x9ce6bb27,0xdcd529a5,0x04d4b16f,0xc4afaa52,0x7923798d,0xb0624a26,0x6b307fab,0x85e56df6 +.long 0x2bf29698,0x0281893c,0xd7ce7603,0x91fc19a4,0xad9a558f,0x75a5dca3,0x4d50bf77,0x40ceb3fa,0xbc9ba369,0x1baf6060,0x597888c2,0x927e1037,0x86a34c07,0xd936bf19,0xc34ae980,0xd4cf10c1 +.long 0x859dd614,0x3a3e5334,0x18d0c8ee,0x9c475b5b,0x07cd51d5,0x63080d1f,0xb88b4326,0xc9c0d0a6,0xc234296f,0x1ac98691,0x94887fb6,0x2a0a83a4,0x0cea9cf2,0x56511427,0xa24802f5,0x5230a6e8 +.long 0x72e3d5c1,0xf7a2bf0f,0x4f21439e,0x37717446,0x9ce30334,0xfedcbf25,0x7ce202f9,0xe0030a78,0x1202e9ca,0x6f2d9ebf,0x75e6e591,0xe79dde6c,0xf1dac4f8,0xf52072af,0xbb9b404d,0x6c8d087e +.long 0xbce913af,0xad0fc73d,0x458a07cb,0x909e587b,0xd4f00c8a,0x1300da84,0xb54466ac,0x425cd048,0x90e9d8bf,0xb59cb9be,0x3e431b0e,0x991616db,0x531aecff,0xd3aa117a,0x59f4dc3b,0x91af92d3 +.long 0xe93fda29,0x9b1ec292,0xe97d91bc,0x76bb6c17,0xaface1e6,0x7509d95f,0xbe855ae3,0x3653fe47,0x0f680e75,0x73180b28,0xeeb6c26c,0x75eefd1b,0xb66d4236,0xa4cdf29f,0x6b5821d8,0x2d70a997 +.long 0x20445c36,0x7a3ee207,0x59877174,0x71d1ac82,0x949f73e9,0x0fc539f7,0x982e3081,0xd05cf3d7,0x7b1c7129,0x8758e20b,0x569e61f2,0xffadcc20,0x59544c2d,0xb05d3a2f,0x9fff5e53,0xbe16f5c1 +.long 0xaad58135,0x73cf65b8,0x037aa5be,0x622c2119,0x646fd6a0,0x79373b3f,0x0d3978cf,0x0e029db5,0x94fba037,0x8bdfc437,0x620797a6,0xaefbd687,0xbd30d38e,0x3fa5382b,0x585d7464,0x7627cfbf +.long 0x4e4ca463,0xb2330fef,0x3566cc63,0xbcef7287,0xcf780900,0xd161d2ca,0x5b54827d,0x135dc539,0x27bf1bc6,0x638f052e,0x07dfa06c,0x10a224f0,0x6d3321da,0xe973586d,0x26152c8f,0x8b0c5738 +.long 0x34606074,0x07ef4f2a,0xa0f7047a,0x80fe7fe8,0xe1a0e306,0x3d1a8152,0x88da5222,0x32cf43d8,0x5f02ffe6,0xbf89a95f,0x806ad3ea,0x3d9eb9a4,0x79c8e55e,0x012c17bb,0x99c81dac,0xfdcd1a74 +.long 0xb9556098,0x7043178b,0x801c3886,0x4090a1df,0x9b67b912,0x759800ff,0x232620c8,0x3e5c0304,0x70dceeca,0x4b9d3c4b,0x181f648e,0xbb2d3c15,0x6e33345c,0xf981d837,0x0cf2297a,0xb626289b +.long 0x8baebdcf,0x766ac659,0x75df01e5,0x1a28ae09,0x375876d8,0xb71283da,0x607b9800,0x4865a96d,0x237936b2,0x25dd1bcd,0x60417494,0x332f4f4b,0x370a2147,0xd0923d68,0xdc842203,0x497f5dfb +.long 0x32be5e0f,0x9dc74cbd,0x17a01375,0x7475bcb7,0x50d872b1,0x438477c9,0xffe1d63d,0xcec67879,0xd8578c70,0x9b006014,0x78bb6b8b,0xc9ad99a8,0x11fb3806,0x6799008e,0xcd44cab3,0xcfe81435 +.long 0x2f4fb344,0xa2ee1582,0x483fa6eb,0xb8823450,0x652c7749,0x622d323d,0xbeb0a15b,0xd8474a98,0x5d1c00d0,0xe43c154d,0x0e3e7aac,0x7fd581d9,0x2525ddf8,0x2b44c619,0xb8ae9739,0x67a033eb +.long 0x9ef2d2e4,0x113ffec1,0xd5a0ea7f,0x1bf6767e,0x03714c0a,0x57fff75e,0x0a23e9ee,0xa23c422e,0x540f83af,0xdd5f6b2d,0x55ea46a7,0xc2c2c27e,0x672a1208,0xeb6b4246,0xae634f7a,0xd13599f7 +.long 0xd7b32c6e,0xcf914b5c,0xeaf61814,0x61a5a640,0x208a1bbb,0x8dc3df8b,0xb6d79aa5,0xef627fd6,0xc4c86bc8,0x44232ffc,0x061539fe,0xe6f9231b,0x958b9533,0x1d04f25a,0x49e8c885,0x180cf934 +.long 0x9884aaf7,0x89689595,0x07b348a6,0xb1959be3,0x3c147c87,0x96250e57,0xdd0c61f8,0xae0efb3a,0xca8c325e,0xed00745e,0xecff3f70,0x3c911696,0x319ad41d,0x73acbc65,0xf0b1c7ef,0x7b01a020 +.long 0x63a1483f,0xea32b293,0x7a248f96,0x89eabe71,0x343157e5,0x9c6231d3,0xdf3c546d,0x93a375e5,0x6a2afe69,0xe76e9343,0xe166c88e,0xc4f89100,0x4f872093,0x248efd0d,0x8fe0ea61,0xae0eb3ea +.long 0x9d79046e,0xaf89790d,0x6cee0976,0x4d650f2d,0x43071eca,0xa3935d9a,0x283b0bfe,0x66fcd2c9,0x696605f1,0x0e665eb5,0xa54cd38d,0xe77e5d07,0x43d950cf,0x90ee050a,0xd32e69b5,0x86ddebda +.long 0xfddf7415,0x6ad94a3d,0x3f6e8d5a,0xf7fa1309,0xe9957f75,0xc4831d1d,0xd5817447,0x7de28501,0x9e2aeb6b,0x6f1d7078,0xf67a53c2,0xba2b9ff4,0xdf9defc3,0x36963767,0x0d38022c,0x479deed3 +.long 0x3a8631e8,0xd2edb89b,0x7a213746,0x8de855de,0xb00c5f11,0xb2056cb7,0x2c9b85e4,0xdeaefbd0,0xd150892d,0x03f39a8d,0x218b7985,0x37b84686,0xb7375f1a,0x36296dd8,0xb78e898e,0x472cd4b1 +.long 0xe9f05de9,0x15dff651,0x2ce98ba9,0xd4045069,0x9b38024c,0x8466a7ae,0xe5a6b5ef,0xb910e700,0xb3aa8f0d,0xae1c56ea,0x7eee74a6,0xbab2a507,0x4b4c4620,0x0dca11e2,0x4c47d1f4,0xfd896e2e +.long 0x308fbd93,0xeb45ae53,0x02c36fda,0x46cd5a2e,0xbaa48385,0x6a3d4e90,0x9dbe9960,0xdd55e62e,0x2a81ede7,0xa1406aa0,0xf9274ea7,0x6860dd14,0x80414f86,0xcfdcb0c2,0x22f94327,0xff410b10 +.long 0x49ad467b,0x5a33cc38,0x0a7335f1,0xefb48b6c,0xb153a360,0x14fb54a4,0xb52469cc,0x604aa9d2,0x754e48e9,0x5e9dc486,0x37471e8e,0x693cb455,0x8d3b37b6,0xfb2fd7cd,0xcf09ff07,0x63345e16 +.long 0x23a5d896,0x9910ba6b,0x7fe4364e,0x1fe19e35,0x9a33c677,0x6e1da8c3,0x29fd9fd0,0x15b4488b,0x1a1f22bf,0x1f439254,0xab8163e8,0x920a8a70,0x07e5658e,0x3fd1b249,0xb6ec839b,0xf2c4f79c +.long 0x4aa38d1b,0x1abbc3d0,0xb5d9510e,0x3b0db35c,0x3e60dec0,0x1754ac78,0xea099b33,0x53272fd7,0x07a8e107,0x5fb0494f,0x6a8191fa,0x4a89e137,0x3c4ad544,0xa113b7f6,0x6cb9897b,0x88a2e909 +.long 0xb44a3f84,0x17d55de3,0x17c6c690,0xacb2f344,0x10232390,0x32088168,0x6c733bf7,0xf2e8a61f,0x9c2d7652,0xa774aab6,0xed95c5bc,0xfb5307e3,0x4981f110,0xa05c73c2,0xa39458c9,0x1baae31c +.long 0xcbea62e7,0x1def185b,0xeaf63059,0xe8ac9eae,0x9921851c,0x098a8cfd,0x3abe2f5b,0xd959c3f1,0x20e40ae5,0xa4f19525,0x07a24aa1,0x320789e3,0x7392b2bc,0x259e6927,0x1918668b,0x58f6c667 +.long 0xc55d2d8b,0xce1db2bb,0xf4f6ca56,0x41d58bb7,0x8f877614,0x7650b680,0xf4c349ed,0x905e16ba,0xf661acac,0xed415140,0xcb2270af,0x3b8784f0,0x8a402cba,0x3bc280ac,0x0937921a,0xd53f7146 +.long 0xe5681e83,0xc03c8ee5,0xf6ac9e4a,0x62126105,0x936b1a38,0x9503a53f,0x782fecbd,0x3d45e2d4,0x76e8ae98,0x69a5c439,0xbfb4b00e,0xb53b2eeb,0x72386c89,0xf1674712,0x4268bce4,0x30ca34a2 +.long 0x78341730,0x7f1ed86c,0xb525e248,0x8ef5beb8,0xb74fbf38,0xbbc489fd,0x91a0b382,0x38a92a0e,0x22433ccf,0x7a77ba3f,0xa29f05a9,0xde8362d6,0x61189afc,0x7f6a30ea,0x59ef114f,0x693b5505 +.long 0xcd1797a1,0x50266bc0,0xf4b7af2d,0xea17b47e,0x3df9483e,0xd6c4025c,0xa37b18c9,0x8cbb9d9f,0x4d8424cf,0x91cbfd9c,0xab1c3506,0xdb7048f1,0x028206a3,0x9eaf641f,0x25bdf6ce,0xf986f3f9 +.long 0x224c08dc,0x262143b5,0x81b50c91,0x2bbb09b4,0xaca8c84f,0xc16ed709,0xb2850ca8,0xa6210d9d,0x09cb54d6,0x6d8df67a,0x500919a4,0x91eef6e0,0x0f132857,0x90f61381,0xf8d5028b,0x9acede47 +.long 0x90b771c3,0x844d1b71,0xba6426be,0x563b71e4,0xbdb802ff,0x2efa2e83,0xab5b4a41,0x3410cbab,0x30da84dd,0x555b2d26,0xee1cc29a,0xd0711ae9,0x2f547792,0xcf3e8c60,0xdc678b35,0x03d7d5de +.long 0xced806b8,0x071a2fa8,0x697f1478,0x222e6134,0xabfcdbbf,0xdc16fd5d,0x121b53b8,0x44912ebf,0x2496c27c,0xac943674,0x1ffc26b0,0x8ea3176c,0x13debf2c,0xb6e224ac,0xf372a832,0x524cc235 +.long 0x9f6f1b18,0xd706e1d8,0x44cce35b,0x2552f005,0xa88e31fc,0x8c8326c2,0xf9552047,0xb5468b2c,0x3ff90f2b,0xce683e88,0x2f0a5423,0x77947bdf,0xed56e328,0xd0a1b28b,0xc20134ac,0xaee35253 +.long 0x3567962f,0x7e98367d,0x8188bffb,0x379ed61f,0xfaf130a1,0x73bba348,0x904ed734,0x6c1f75e1,0x3b4a79fc,0x18956642,0x54ef4493,0xf20bc83d,0x9111eca1,0x836d425d,0x009a8dcf,0xe5b5c318 +.long 0x13221bc5,0x3360b25d,0x6b3eeaf7,0x707baad2,0x743a95a1,0xd7279ed8,0x969e809f,0x7450a875,0xe5d0338f,0x32b6bd53,0x2b883bbc,0x1e77f7af,0x1063ecd0,0x90da12cc,0xc315be47,0xe2697b58 +.long 0xda85d534,0x2771a5bd,0xff980eea,0x53e78c1f,0x900385e7,0xadf1cf84,0xc9387b62,0x7d3b14f6,0xcb8f2bd2,0x170e74b0,0x827fa993,0x2d50b486,0xf6f32bab,0xcdbe8c9a,0xc3b93ab8,0x55e906b0 +.long 0x8fe280d1,0x747f22fc,0xb2e114ab,0xcd8e0de5,0xe10b68b0,0x5ab7dbeb,0xa480d4b2,0x9dc63a9c,0x4be1495f,0x78d4bc3b,0x9359122d,0x25eb3db8,0x0809cbdc,0x3f8ac05b,0xd37c702f,0xbf4187bb +.long 0x1416a6a5,0x84cea069,0x43ef881c,0x8f860c79,0x38038a5d,0x41311f8a,0xfc612067,0xe78c2ec0,0x5ad73581,0x494d2e81,0x59604097,0xb4cc9e00,0xf3612cba,0xff558aec,0x9e36c39e,0x35beef7a +.long 0xdbcf41b9,0x1845c7cf,0xaea997c0,0x5703662a,0xe402f6d8,0x8b925afe,0x4dd72162,0xd0a1b1ae,0x03c41c4b,0x9f47b375,0x0391d042,0xa023829b,0x503b8b0a,0x5f5045c3,0x98c010e5,0x123c2688 +.long 0x36ba06ee,0x324ec0cc,0x3dd2cc0c,0xface3115,0xf333e91f,0xb364f3be,0x28e832b0,0xef8aff73,0x2d05841b,0x1e9bad04,0x356a21e2,0x42f0e3df,0x4add627e,0xa3270bcb,0xd322e711,0xb09a8158 +.long 0x0fee104a,0x86e326a1,0x3703f65d,0xad7788f8,0x47bc4833,0x7e765430,0x2b9b893a,0x6cee582b,0xe8f55a7b,0x9cd2a167,0xd9e4190d,0xefbee3c6,0xd40c2e9d,0x33ee7185,0xa380b548,0x844cc9c5 +.long 0x66926e04,0x323f8ecd,0x8110c1ba,0x0001e38f,0xfc6a7f07,0x8dbcac12,0x0cec0827,0xd65e1d58,0xbe76ca2d,0xd2cd4141,0xe892f33a,0x7895cf5c,0x367139d2,0x956d230d,0xd012c4c1,0xa91abd3e +.long 0x87eb36bf,0x34fa4883,0x914b8fb4,0xc5f07102,0xadb9c95f,0x90f0e579,0x28888195,0xfe6ea8cb,0xedfa9284,0x7b9b5065,0x2b8c8d65,0x6c510bd2,0xcbe8aafd,0xd7b8ebef,0x96b1da07,0xedb3af98 +.long 0x6295d426,0x28ff779d,0x3fa3ad7b,0x0c4f6ac7,0x8b8e2604,0xec44d054,0x8b0050e1,0x9b32a66d,0xf0476ce2,0x1f943366,0xa602c7b4,0x7554d953,0x524f2809,0xbe35aca6,0xfd4edbea,0xb6881229 +.long 0x508efb63,0xe8cd0c8f,0x6abcefc7,0x9eb5b5c8,0xb441ab4f,0xf5621f5f,0xb76a2b22,0x79e6c046,0xe37a1f69,0x74a4792c,0x03542b60,0xcbd252cb,0xb3c20bd3,0x785f65d5,0x4fabc60c,0x8dea6143 +.long 0xde673629,0x45e21446,0x703c2d21,0x57f7aa1e,0x98c868c7,0xa0e99b7f,0x8b641676,0x4e42f66d,0x91077896,0x602884dc,0xc2c9885b,0xa0d690cf,0x3b9a5187,0xfeb4da33,0x153c87ee,0x5f789598 +.long 0x52b16dba,0x2192dd47,0x3524c1b1,0xdeefc0e6,0xe4383693,0x465ea76e,0x361b8d98,0x79401711,0xf21a15cb,0xa5f9ace9,0xefee9aeb,0x73d26163,0xe677016c,0xcca844b3,0x57eaee06,0x6c122b07 +.long 0x15f09690,0xb782dce7,0x2dfc0fc9,0x508b9b12,0x65d89fc6,0x9015ab4b,0xd6d5bb0f,0x5e79dab7,0x6c775aa2,0x64f021f0,0x37c7eca1,0xdf09d8cc,0xef2fa506,0x9a761367,0x5b81eec6,0xed4ca476 +.long 0x10bbb8b5,0x262ede36,0x0641ada3,0x0737ce83,0xe9831ccc,0x4c94288a,0x8065e635,0x487fc1ce,0xb8bb3659,0xb13d7ab3,0x855e4120,0xdea5df3e,0x85eb0244,0xb9a18573,0xa7cfe0a3,0x1a1b8ea3 +.long 0x67b0867c,0x3b837119,0x9d364520,0x8d5e0d08,0xd930f0e3,0x52dccc1e,0xbf20bbaf,0xefbbcec7,0x0263ad10,0x99cffcab,0xfcd18f8a,0xd8199e6d,0xe9f10617,0x64e2773f,0x08704848,0x0079e8e1 +.long 0x8a342283,0x1169989f,0xa83012e6,0x8097799c,0x8a6a9001,0xece966cb,0x072ac7fc,0x93b3afef,0x2db3d5ba,0xe6893a2a,0x89bf4fdc,0x263dc462,0xe0396673,0x8852dfc9,0x3af362b6,0x7ac70895 +.long 0x5c2f342b,0xbb9cce4d,0xb52d7aae,0xbf80907a,0x2161bcd0,0x97f3d3cd,0x0962744d,0xb25b0834,0x6c3a1dda,0xc5b18ea5,0x06c92317,0xfe4ec7eb,0xad1c4afe,0xb787b890,0x0ede801a,0xdccd9a92 +.long 0xdb58da1f,0x9ac6ddda,0xb8cae6ee,0x22bbc12f,0x815c4a43,0xc6f8bced,0xf96480c7,0x8105a92c,0x7a859d51,0x0dc3dbf3,0x3041196b,0xe3ec7ce6,0x0d1067c9,0xd9f64b25,0x3d1f8dd8,0xf2321321 +.long 0x76497ee8,0x8b5c619c,0xc717370e,0x5d2b0ac6,0x4fcf68e1,0x98204cb6,0x62bc6792,0x0bdec211,0xa63b1011,0x6973ccef,0xe0de1ac5,0xf9e3fa97,0x3d0e0c8b,0x5efb693e,0xd2d4fcb4,0x037248e9 +.long 0x1ec34f9e,0x80802dc9,0x33810603,0xd8772d35,0x530cb4f3,0x3f06d66c,0xc475c129,0x7be5ed0d,0x31e82b10,0xcb9e3c19,0xc9ff6b4c,0xc63d2857,0x92a1b45e,0xb92118c6,0x7285bbca,0x0aec4414 +.long 0x1e29a3ef,0xfc189ae7,0x4c93302e,0xcbe906f0,0xceaae10e,0xd0107914,0xb68e19f8,0xb7a23f34,0xefd2119d,0xe9d875c2,0xfcadc9c8,0x03198c6e,0x4da17113,0x65591bf6,0x3d443038,0x3cf0bbf8 +.long 0x2b724759,0xae485bb7,0xb2d4c63a,0x945353e1,0xde7d6f2c,0x82159d07,0x4ec5b109,0x389caef3,0xdb65ef14,0x4a8ebb53,0xdd99de43,0x2dc2cb7e,0x83f2405f,0x816fa3ed,0xc14208a3,0x73429bb9 +.long 0xb01e6e27,0xb618d590,0xe180b2dc,0x047e2ccd,0x04aea4a9,0xd1b299b5,0x9fa403a4,0x412c9e1e,0x79407552,0x88d28a36,0xf332b8e3,0x49c50136,0xe668de19,0x3a1b6fcc,0x75122b97,0x178851bc +.long 0xfb85fa4c,0xb1e13752,0x383c8ce9,0xd61257ce,0xd2f74dae,0xd43da670,0xbf846bbb,0xa35aa23f,0x4421fc83,0x5e74235d,0xc363473b,0xf6df8ee0,0x3c4aa158,0x34d7f52a,0x9bc6d22e,0x50d05aab +.long 0xa64785f4,0x8c56e735,0x5f29cd07,0xbc56637b,0x3ee35067,0x53b2bb80,0xdc919270,0x50235a0f,0xf2c4aa65,0x191ab6d8,0x8396023b,0xc3475831,0xf0f805ba,0x80400ba5,0x5ec0f80f,0x8881065b +.long 0xcc1b5e83,0xc370e522,0x860b8bfb,0xde2d4ad1,0x67b256df,0xad364df0,0xe0138997,0x8f12502e,0x7783920a,0x503fa0dc,0xc0bc866a,0xe80014ad,0xd3064ba6,0x3f89b744,0xcba5dba5,0x03511dcd +.long 0x95a7b1a2,0x197dd46d,0x3c6341fb,0x9c4e7ad6,0x484c2ece,0x426eca29,0xde7f4f8a,0x9211e489,0xc78ef1f4,0x14997f6e,0x06574586,0x2b2c0910,0x1c3eede8,0x17286a6e,0x0f60e018,0x25f92e47 +.long 0x31890a36,0x805c5646,0x57feea5b,0x703ef600,0xaf3c3030,0x389f747c,0x54dd3739,0xe0e5daeb,0xc9c9f155,0xfe24a4c3,0xb5393962,0x7e4bf176,0xaf20bf29,0x37183de2,0xf95a8c3b,0x4a1bd7b5 +.long 0x46191d3d,0xa83b9699,0x7b87f257,0x281fc8dd,0x54107588,0xb18e2c13,0x9b2bafe8,0x6372def7,0x0d8972ca,0xdaf4bb48,0x56167a3f,0x3f2dd4b7,0x84310cf4,0x1eace32d,0xe42700aa,0xe3bcefaf +.long 0xd785e73d,0x5fe5691e,0x2ea60467,0xa5db5ab6,0xdfc6514a,0x02e23d41,0xe03c3665,0x35e8048e,0x1adaa0f8,0x3f8b118f,0x84ce1a5a,0x28ec3b45,0x2c6646b8,0xe8cacc6e,0xdbd0e40f,0x1343d185 +.long 0xcaaa358c,0xe5d7f844,0x9924182a,0x1a1db7e4,0x9c875d9a,0xd64cd42d,0x042eeec8,0xb37b515f,0x7b165fbe,0x4d4dd409,0xe206eff3,0xfc322ed9,0x59b7e17e,0x7dee4102,0x8236ca00,0x55a481c0 +.long 0xc23fc975,0x8c885312,0x05d6297b,0x15715806,0xf78edd39,0xa078868e,0x03c45e52,0x956b31e0,0xff7b33a6,0x470275d5,0x0c7e673f,0xc8d5dc3a,0x7e2f2598,0x419227b4,0x4c14a975,0x8b37b634 +.long 0x8b11888c,0xd0667ed6,0x803e25dc,0x5e0e8c3e,0xb987a24a,0x34e5d0dc,0xae920323,0x9f40ac3b,0x34e0f63a,0x5463de95,0x6b6328f9,0xa128bf92,0xda64f1b7,0x491ccd7c,0xc47bde35,0x7ef1ec27 +.long 0xa36a2737,0xa857240f,0x63621bc1,0x35dc1366,0xd4fb6897,0x7a3a6453,0xc929319d,0x80f1a439,0xf8cb0ba0,0xfc18274b,0x8078c5eb,0xb0b53766,0x1e01d0ef,0xfb0d4924,0x372ab09c,0x50d7c67d +.long 0x3aeac968,0xb4e370af,0xc4b63266,0xe4f7fee9,0xe3ac5664,0xb4acd4c2,0xceb38cbf,0xf8910bd2,0xc9c0726e,0x1c3ae50c,0xd97b40bf,0x15309569,0xfd5a5a1b,0x70884b7f,0xef8314cd,0x3890896a +.long 0xa5618c93,0x58e1515c,0x77d942d1,0xe665432b,0xb6f767a8,0xb32181bf,0x3a604110,0x753794e8,0xe8c0dbcc,0x09afeb7c,0x598673a3,0x31e02613,0x7d46db00,0x5d98e557,0x9d985b28,0xfc21fb8c +.long 0xb0843e0b,0xc9040116,0x69b04531,0x53b1b3a8,0x85d7d830,0xdd1649f0,0xcb7427e8,0xbb3bcc87,0xc93dce83,0x77261100,0xa1922a2a,0x7e79da61,0xf3149ce8,0x587a2b02,0xde92ec83,0x147e1384 +.long 0xaf077f30,0x484c83d3,0x0658b53a,0xea78f844,0x027aec53,0x912076c2,0x93c8177d,0xf34714e3,0xc2376c84,0x37ef5d15,0x3d1aa783,0x8315b659,0xef852a90,0x3a75c484,0x16086bd4,0x0ba0c58a +.long 0x529a6d48,0x29688d7a,0xc2f19203,0x9c7f250d,0x682e2df9,0x123042fb,0xad8121bc,0x2b7587e7,0xe0182a65,0x30fc0233,0xe3e1128a,0xb82ecf87,0x93fb098f,0x71682861,0x85e9e6a7,0x043e21ae +.long 0x66c834ea,0xab5b49d6,0x47414287,0x3be43e18,0x219a2a47,0xf40fb859,0xcc58df3c,0x0e6559e9,0x0c6615b4,0xfe1dfe8e,0x56459d70,0x14abc8fd,0x05de0386,0x7be0fa8e,0xe9035c7c,0x8e63ef68 +.long 0x53b31e91,0x116401b4,0x4436b4d8,0x0cba7ad4,0x107afd66,0x9151f9a0,0x1f0ee4c4,0xafaca8d0,0x9ee9761c,0x75fe5c1d,0xf0c0588f,0x3497a16b,0x0304804c,0x3ee2bebd,0xc2c990b9,0xa8fb9a60 +.long 0x39251114,0xd14d32fe,0xcac73366,0x36bf25bc,0xdba7495c,0xc9562c66,0x46ad348b,0x324d301b,0xd670407e,0x9f46620c,0xe3733a01,0x0ea8d4f1,0xb0c324e0,0xd396d532,0x03c317cd,0x5b211a0e +.long 0x5ffe7b37,0x090d7d20,0x1747d2da,0x3b7f3efb,0xb54fc519,0xa2cb525f,0xf66a971e,0x6e220932,0xb486d440,0xddc160df,0x3fe13465,0x7fcfec46,0x76e4c151,0x83da7e4e,0xd8d302b5,0xd6fa48a1 +.long 0x5872cd88,0xc6304f26,0x278b90a1,0x806c1d3c,0xcaf0bc1c,0x3553e725,0xbb9d8d5c,0xff59e603,0x7a0b85dd,0xa4550f32,0x93ecc217,0xdec5720a,0x69d62213,0x0b88b741,0x5b365955,0x7212f245 +.long 0xb5cae787,0x20764111,0x1dfd3124,0x13cb7f58,0x1175aefb,0x2dca77da,0xffaae775,0xeb75466b,0xdb6cff32,0x74d76f3b,0x61fcda9a,0x7440f37a,0xb525028b,0x1bb3ac92,0xa1975f29,0x20fbf8f7 +.long 0xdf83097f,0x982692e1,0x554b0800,0x28738f6c,0xa2ce2f2f,0xdc703717,0x40814194,0x7913b93c,0x1fe89636,0x04924593,0xf78834a6,0x7b98443f,0x5114a5a1,0x11c6ab01,0xffba5f4c,0x60deb383 +.long 0x01a982e6,0x4caa54c6,0x3491cd26,0x1dd35e11,0x7cbd6b05,0x973c315f,0x52494724,0xcab00775,0x6565e15a,0x04659b1f,0x8c8fb026,0xbf30f529,0xa8a0de37,0xfc21641b,0xfa5e5114,0xe9c7a366 +.long 0x52f03ad8,0xdb849ca5,0x024e35c0,0xc7e8dbe9,0xcfc3c789,0xa1a2bbac,0x9c26f262,0xbf733e7d,0xb8444823,0x882ffbf5,0x6bf8483b,0xb7224e88,0x65bef640,0x53023b8b,0xd4d5f8cd,0xaabfec91 +.long 0x079ea1bd,0xa40e1510,0xd05d5d26,0x1ad9addc,0x13e68d4f,0xdb3f2eab,0x640f803f,0x1cff1ae2,0xd4cee117,0xe0e7b749,0x4036d909,0x8e9f275b,0x8f4d4c38,0xce34e31d,0xd75130fc,0x22b37f69 +.long 0xb4014604,0x83e0f1fd,0x89415078,0xa8ce9919,0x41792efe,0x82375b75,0x97d4515b,0x4f59bf5c,0x923a277d,0xac4f324f,0x650f3406,0xd9bc9b7d,0x8a39bc51,0xc6fa87d1,0x5ccc108f,0x82588530 +.long 0x82e4c634,0x5ced3c9f,0x3a4464f8,0x8efb8314,0x7a1dca25,0xe706381b,0x5a2a412b,0x6cd15a3c,0xbfcd8fb5,0x9347a8fd,0x6e54cd22,0x31db2eef,0xf8d8932f,0xc4aeb11e,0x344411af,0x11e7c1ed +.long 0xdc9a151e,0x2653050c,0x3bb0a859,0x9edbfc08,0xfd5691e7,0x926c81c7,0x6f39019a,0x9c1b2342,0x7f8474b9,0x64a81c8b,0x01761819,0x90657c07,0x55e0375a,0x390b3331,0xb6ebc47d,0xc676c626 +.long 0xb7d6dee8,0x51623247,0x79659313,0x0948d927,0xe9ab35ed,0x99700161,0x8ddde408,0x06cc32b4,0x061ef338,0x6f2fd664,0xc202e9ed,0x1606fa02,0x929ba99b,0x55388bc1,0x1e81df69,0xc4428c5e +.long 0xf91b0b2a,0xce2028ae,0xf03dfd3f,0xce870a23,0x0affe8ed,0x66ec2c87,0x284d0c00,0xb205fb46,0x44cefa48,0xbf5dffe7,0xa19876d7,0xb6fc37a8,0x08b72863,0xbecfa84c,0x2576374f,0xd7205ff5 +.long 0x8887de41,0x80330d32,0x869ea534,0x5de0df0c,0x3c56ea17,0x13f42753,0x452b1a78,0xeb1f6069,0xe30ea15c,0x50474396,0xc1494125,0x575816a1,0xfe6bb38f,0xbe1ce55b,0x96ae30f7,0xb901a948 +.long 0xd8fc3548,0xe5af0f08,0xd73bfd08,0x5010b5d0,0x53fe655a,0x993d2880,0x1c1309fd,0x99f2630b,0xb4e3b76f,0xd8677baf,0xb840784b,0x14e51ddc,0xbf0092ce,0x326c750c,0xf528320f,0xc83d306b +.long 0x77d4715c,0xc4456715,0x6b703235,0xd30019f9,0xd669e986,0x207ccb2e,0xf6dbfc28,0x57c824af,0xd8f92a23,0xf0eb532f,0x9bb98fd2,0x4a557fd4,0xc1e6199a,0xa57acea7,0x8b94b1ed,0x0c663820 +.long 0xf83a9266,0x9b42be8f,0x0101bd45,0xc7741c97,0x07bd9ceb,0x95770c11,0x8b2e0744,0x1f50250a,0x1477b654,0xf762eec8,0x15efe59a,0xc65b900e,0x9546a897,0x88c96148,0xc30b4d7c,0x7e8025b3 +.long 0x12045cf9,0xae4065ef,0x9ccce8bd,0x6fcb2caf,0xf2cf6525,0x1fa0ba4e,0xcb72c312,0xf683125d,0xe312410e,0xa01da4ea,0x6cd8e830,0x67e28677,0x98fb3f07,0xabd95752,0xeef649a5,0x05f11e11 +.long 0x9d3472c2,0xba47faef,0xc77d1345,0x3adff697,0xdd15afee,0x4761fa04,0xb9e69462,0x64f1f61a,0x9bfb9093,0xfa691fab,0xa1133dfe,0x3df8ae8f,0x58cc710d,0xcd5f8967,0x16c7fe79,0xfbb88d50 +.long 0xe88c50d1,0x8e011b4c,0xa8771c4f,0x7532e807,0xe2278ee4,0x64c78a48,0x3845072a,0x0b283e83,0x49e69274,0x98a6f291,0x1868b21c,0xb96e9668,0xb1a8908e,0x38f0adc2,0x1feb829d,0x90afcff7 +.long 0x210b0856,0x9915a383,0xdef04889,0xa5a80602,0x7c64d509,0x800e9af9,0xb8996f6f,0x81382d0b,0x81927e27,0x490eba53,0x4af50182,0x46c63b32,0xd3ad62ce,0x784c5fd9,0xf8ae8736,0xe4fa1870 +.long 0xd7466b25,0x4ec9d0bc,0xdb235c65,0x84ddbe1a,0x163c1688,0x5e2645ee,0x00eba747,0x570bd00e,0x128bfa0f,0xfa51b629,0x6c1d3b68,0x92fce1bd,0xb66778b1,0x3e7361dc,0x5561d2bb,0x9c7d249d +.long 0x0bbc6229,0xa40b28bf,0xdfd91497,0x1c83c05e,0xf083df05,0x5f9f5154,0xeee66c9d,0xbac38b3c,0xec0dfcfd,0xf71db7e3,0x8b0a8416,0xf2ecda8e,0x7812aa66,0x52fddd86,0x4e6f4272,0x2896ef10 +.long 0x0fe9a745,0xff27186a,0x49ca70db,0x08249fcd,0x441cac49,0x7425a2e6,0xece5ff57,0xf4a0885a,0x7d7ead58,0x6e2cb731,0x1898d104,0xf96cf7d6,0x4f2c9a89,0xafe67c9d,0x1c7bf5bc,0x89895a50 +.long 0x573cecfa,0xdc7cb8e5,0xd15f03e6,0x66497eae,0x3f084420,0x6bc0de69,0xacd532b0,0x323b9b36,0x0115a3c1,0xcfed390a,0x2d65ca0e,0x9414c40b,0x2f530c78,0x641406bd,0x833438f2,0x29369a44 +.long 0x903fa271,0x996884f5,0xb9da921e,0xe6da0fd2,0x5db01e54,0xa6f2f269,0x6876214e,0x1ee3e9bd,0xe27a9497,0xa26e181c,0x8e215e04,0x36d254e4,0x252cabca,0x42f32a6c,0x80b57614,0x99481487 +.long 0x40d9cae1,0x4c4dfe69,0x11a10f09,0x05869580,0x3491b64b,0xca287b57,0x3fd4a53b,0x77862d5d,0x50349126,0xbf94856e,0x71c5268f,0x2be30bd1,0xcbb650a6,0x10393f19,0x778cf9fd,0x639531fe +.long 0xb2935359,0x02556a11,0xaf8c126e,0xda38aa96,0x0960167f,0x47dbe6c2,0x501901cd,0x37bbabb6,0x2c947778,0xb6e979e0,0x7a1a1dc6,0xd69a5175,0x9d9faf0c,0xc3ed5095,0x1d5fa5f0,0x4dd9c096 +.long 0x64f16ea8,0xa0c4304d,0x7e718623,0x8b1cac16,0x7c67f03e,0x0b576546,0xcbd88c01,0x559cf5ad,0x0e2af19a,0x074877bb,0xa1228c92,0x1f717ec1,0x326e8920,0x70bcb800,0x4f312804,0xec6e2c5c +.long 0x3fca4752,0x426aea7d,0x2211f62a,0xf12c0949,0x7be7b6b5,0x24beecd8,0x36d7a27d,0xb77eaf4c,0xfda78fd3,0x154c2781,0x264eeabe,0x848a83b0,0x4ffe2bc4,0x81287ef0,0xb6b6fc2a,0x7b6d88c6 +.long 0xce417d99,0x805fb947,0x8b916cc4,0x4b93dcc3,0x21273323,0x72e65bb3,0x6ea9886e,0xbcc1badd,0x4bc5ee85,0x0e223011,0xc18ee1e4,0xa561be74,0xa6bcf1f1,0x762fd2d4,0x95231489,0x50e6a5a4 +.long 0xa00b500b,0xca96001f,0x5d7dcdf5,0x5c098cfc,0x8c446a85,0xa64e2d2e,0x971f3c62,0xbae9bcf1,0x8435a2c5,0x4ec22683,0x4bad4643,0x8ceaed6c,0xccccf4e3,0xe9f8fb47,0x1ce3b21e,0xbd4f3fa4 +.long 0xa3db3292,0xd79fb110,0xb536c66a,0xe28a37da,0x8e49e6a9,0x279ce87b,0xfdcec8e3,0x70ccfe8d,0x3ba464b2,0x2193e4e0,0xaca9a398,0x0f39d60e,0xf82c12ab,0x7d7932af,0x91e7e0f7,0xd8ff50ed +.long 0xfa28a7e0,0xea961058,0x0bf5ec74,0xc726cf25,0xdb229666,0xe74d55c8,0xa57f5799,0x0bd9abbf,0x4dfc47b3,0x7479ef07,0x0c52f91d,0xd9c65fc3,0x36a8bde2,0x8e0283fe,0x7d4b7280,0xa32a8b5e +.long 0x12e83233,0x6a677c61,0xdcc9bf28,0x0fbb3512,0x0d780f61,0x562e8ea5,0x1dc4e89c,0x0db8b22b,0x89be0144,0x0a6fd1fb,0xca57113b,0x8c77d246,0xff09c91c,0x4639075d,0x5060824c,0x5b47b17f +.long 0x16287b52,0x58aea2b0,0xd0cd8eb0,0xa1343520,0xc5d58573,0x6148b4d0,0x291c68ae,0xdd2b6170,0x1da3b3b7,0xa61b3929,0x08c4ac10,0x5f946d79,0x7217d583,0x4105d4a5,0x25e6de5e,0x5061da3d +.long 0xec1b4991,0x3113940d,0x36f485ae,0xf12195e1,0x731a2ee0,0xa7507fb2,0x6e9e196e,0x95057a8e,0x2e130136,0xa3c2c911,0x33c60d15,0x97dfbb36,0xb300ee2b,0xcaf3c581,0xf4bac8b8,0x77f25d90 +.long 0x6d840cd6,0xdb1c4f98,0xe634288c,0x471d62c0,0xcec8a161,0x8ec2f85e,0xfa6f4ae2,0x41f37cbc,0x4b709985,0x6793a20f,0xefa8985b,0x7a7bd33b,0x938e6446,0x2c6a3fbd,0x2a8d47c1,0x19042619 +.long 0xcc36975f,0x16848667,0x9d5f1dfb,0x02acf168,0x613baa94,0x62d41ad4,0x9f684670,0xb56fbb92,0xe9e40569,0xce610d0d,0x35489fef,0x7b99c65f,0x3df18b97,0x0c88ad1b,0x5d0e9edb,0x81b7d9be +.long 0xc716cc0a,0xd85218c0,0x85691c49,0xf4b5ff90,0xce356ac6,0xa4fd666b,0x4b327a7a,0x17c72895,0xda6be7de,0xf93d5085,0x3301d34e,0xff71530e,0xd8f448e8,0x4cd96442,0x2ed18ffa,0x9283d331 +.long 0x2a849870,0x4d33dd99,0x41576335,0xa716964b,0x179be0e5,0xff5e3a9b,0x83b13632,0x5b9d6b1b,0xa52f313b,0x3b8bd7d4,0x637a4660,0xc9dd95a0,0x0b3e218f,0x30035962,0xc7b28a3c,0xce1481a3 +.long 0x43228d83,0xab41b43a,0x4ad63f99,0x24ae1c30,0x46a51229,0x8e525f1a,0xcd26d2b4,0x14af860f,0x3f714aa1,0xd6baef61,0xeb78795e,0xf51865ad,0xe6a9d694,0xd3e21fce,0x8a37b527,0x82ceb1dd +.size ecp_nistz256_precomputed,.-ecp_nistz256_precomputed +.text + + + +.align 64 +.Lpoly: +.quad 0xffffffffffffffff, 0x00000000ffffffff, 0x0000000000000000, 0xffffffff00000001 + + +.LRR: +.quad 0x0000000000000003, 0xfffffffbffffffff, 0xfffffffffffffffe, 0x00000004fffffffd + +.LOne: +.long 1,1,1,1,1,1,1,1 +.LTwo: +.long 2,2,2,2,2,2,2,2 +.LThree: +.long 3,3,3,3,3,3,3,3 +.LONE_mont: +.quad 0x0000000000000001, 0xffffffff00000000, 0xffffffffffffffff, 0x00000000fffffffe + + +.Lord: +.quad 0xf3b9cac2fc632551, 0xbce6faada7179e84, 0xffffffffffffffff, 0xffffffff00000000 +.LordK: +.quad 0xccd1c8aaee00bc4f + +.globl ecp_nistz256_mul_by_2 +.type ecp_nistz256_mul_by_2,@function +.align 64 +ecp_nistz256_mul_by_2: +.cfi_startproc + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-16 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-24 +.Lmul_by_2_body: + + movq 0(%rsi),%r8 + xorq %r13,%r13 + movq 8(%rsi),%r9 + addq %r8,%r8 + movq 16(%rsi),%r10 + adcq %r9,%r9 + movq 24(%rsi),%r11 + leaq .Lpoly(%rip),%rsi + movq %r8,%rax + adcq %r10,%r10 + adcq %r11,%r11 + movq %r9,%rdx + adcq $0,%r13 + + subq 0(%rsi),%r8 + movq %r10,%rcx + sbbq 8(%rsi),%r9 + sbbq 16(%rsi),%r10 + movq %r11,%r12 + sbbq 24(%rsi),%r11 + sbbq $0,%r13 + + cmovcq %rax,%r8 + cmovcq %rdx,%r9 + movq %r8,0(%rdi) + cmovcq %rcx,%r10 + movq %r9,8(%rdi) + cmovcq %r12,%r11 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 +.cfi_restore %r13 + movq 8(%rsp),%r12 +.cfi_restore %r12 + leaq 16(%rsp),%rsp +.cfi_adjust_cfa_offset -16 +.Lmul_by_2_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_mul_by_2,.-ecp_nistz256_mul_by_2 + + + +.globl ecp_nistz256_div_by_2 +.type ecp_nistz256_div_by_2,@function +.align 32 +ecp_nistz256_div_by_2: +.cfi_startproc + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-16 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-24 +.Ldiv_by_2_body: + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq %r8,%rax + movq 24(%rsi),%r11 + leaq .Lpoly(%rip),%rsi + + movq %r9,%rdx + xorq %r13,%r13 + addq 0(%rsi),%r8 + movq %r10,%rcx + adcq 8(%rsi),%r9 + adcq 16(%rsi),%r10 + movq %r11,%r12 + adcq 24(%rsi),%r11 + adcq $0,%r13 + xorq %rsi,%rsi + testq $1,%rax + + cmovzq %rax,%r8 + cmovzq %rdx,%r9 + cmovzq %rcx,%r10 + cmovzq %r12,%r11 + cmovzq %rsi,%r13 + + movq %r9,%rax + shrq $1,%r8 + shlq $63,%rax + movq %r10,%rdx + shrq $1,%r9 + orq %rax,%r8 + shlq $63,%rdx + movq %r11,%rcx + shrq $1,%r10 + orq %rdx,%r9 + shlq $63,%rcx + shrq $1,%r11 + shlq $63,%r13 + orq %rcx,%r10 + orq %r13,%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 +.cfi_restore %r13 + movq 8(%rsp),%r12 +.cfi_restore %r12 + leaq 16(%rsp),%rsp +.cfi_adjust_cfa_offset -16 +.Ldiv_by_2_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_div_by_2,.-ecp_nistz256_div_by_2 + + + +.globl ecp_nistz256_mul_by_3 +.type ecp_nistz256_mul_by_3,@function +.align 32 +ecp_nistz256_mul_by_3: +.cfi_startproc + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-16 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-24 +.Lmul_by_3_body: + + movq 0(%rsi),%r8 + xorq %r13,%r13 + movq 8(%rsi),%r9 + addq %r8,%r8 + movq 16(%rsi),%r10 + adcq %r9,%r9 + movq 24(%rsi),%r11 + movq %r8,%rax + adcq %r10,%r10 + adcq %r11,%r11 + movq %r9,%rdx + adcq $0,%r13 + + subq $-1,%r8 + movq %r10,%rcx + sbbq .Lpoly+8(%rip),%r9 + sbbq $0,%r10 + movq %r11,%r12 + sbbq .Lpoly+24(%rip),%r11 + sbbq $0,%r13 + + cmovcq %rax,%r8 + cmovcq %rdx,%r9 + cmovcq %rcx,%r10 + cmovcq %r12,%r11 + + xorq %r13,%r13 + addq 0(%rsi),%r8 + adcq 8(%rsi),%r9 + movq %r8,%rax + adcq 16(%rsi),%r10 + adcq 24(%rsi),%r11 + movq %r9,%rdx + adcq $0,%r13 + + subq $-1,%r8 + movq %r10,%rcx + sbbq .Lpoly+8(%rip),%r9 + sbbq $0,%r10 + movq %r11,%r12 + sbbq .Lpoly+24(%rip),%r11 + sbbq $0,%r13 + + cmovcq %rax,%r8 + cmovcq %rdx,%r9 + movq %r8,0(%rdi) + cmovcq %rcx,%r10 + movq %r9,8(%rdi) + cmovcq %r12,%r11 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 +.cfi_restore %r13 + movq 8(%rsp),%r12 +.cfi_restore %r12 + leaq 16(%rsp),%rsp +.cfi_adjust_cfa_offset -16 +.Lmul_by_3_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_mul_by_3,.-ecp_nistz256_mul_by_3 + + + +.globl ecp_nistz256_add +.type ecp_nistz256_add,@function +.align 32 +ecp_nistz256_add: +.cfi_startproc + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-16 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-24 +.Ladd_body: + + movq 0(%rsi),%r8 + xorq %r13,%r13 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + leaq .Lpoly(%rip),%rsi + + addq 0(%rdx),%r8 + adcq 8(%rdx),%r9 + movq %r8,%rax + adcq 16(%rdx),%r10 + adcq 24(%rdx),%r11 + movq %r9,%rdx + adcq $0,%r13 + + subq 0(%rsi),%r8 + movq %r10,%rcx + sbbq 8(%rsi),%r9 + sbbq 16(%rsi),%r10 + movq %r11,%r12 + sbbq 24(%rsi),%r11 + sbbq $0,%r13 + + cmovcq %rax,%r8 + cmovcq %rdx,%r9 + movq %r8,0(%rdi) + cmovcq %rcx,%r10 + movq %r9,8(%rdi) + cmovcq %r12,%r11 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 +.cfi_restore %r13 + movq 8(%rsp),%r12 +.cfi_restore %r12 + leaq 16(%rsp),%rsp +.cfi_adjust_cfa_offset -16 +.Ladd_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_add,.-ecp_nistz256_add + + + +.globl ecp_nistz256_sub +.type ecp_nistz256_sub,@function +.align 32 +ecp_nistz256_sub: +.cfi_startproc + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-16 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-24 +.Lsub_body: + + movq 0(%rsi),%r8 + xorq %r13,%r13 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + leaq .Lpoly(%rip),%rsi + + subq 0(%rdx),%r8 + sbbq 8(%rdx),%r9 + movq %r8,%rax + sbbq 16(%rdx),%r10 + sbbq 24(%rdx),%r11 + movq %r9,%rdx + sbbq $0,%r13 + + addq 0(%rsi),%r8 + movq %r10,%rcx + adcq 8(%rsi),%r9 + adcq 16(%rsi),%r10 + movq %r11,%r12 + adcq 24(%rsi),%r11 + testq %r13,%r13 + + cmovzq %rax,%r8 + cmovzq %rdx,%r9 + movq %r8,0(%rdi) + cmovzq %rcx,%r10 + movq %r9,8(%rdi) + cmovzq %r12,%r11 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 +.cfi_restore %r13 + movq 8(%rsp),%r12 +.cfi_restore %r12 + leaq 16(%rsp),%rsp +.cfi_adjust_cfa_offset -16 +.Lsub_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_sub,.-ecp_nistz256_sub + + + +.globl ecp_nistz256_neg +.type ecp_nistz256_neg,@function +.align 32 +ecp_nistz256_neg: +.cfi_startproc + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-16 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-24 +.Lneg_body: + + xorq %r8,%r8 + xorq %r9,%r9 + xorq %r10,%r10 + xorq %r11,%r11 + xorq %r13,%r13 + + subq 0(%rsi),%r8 + sbbq 8(%rsi),%r9 + sbbq 16(%rsi),%r10 + movq %r8,%rax + sbbq 24(%rsi),%r11 + leaq .Lpoly(%rip),%rsi + movq %r9,%rdx + sbbq $0,%r13 + + addq 0(%rsi),%r8 + movq %r10,%rcx + adcq 8(%rsi),%r9 + adcq 16(%rsi),%r10 + movq %r11,%r12 + adcq 24(%rsi),%r11 + testq %r13,%r13 + + cmovzq %rax,%r8 + cmovzq %rdx,%r9 + movq %r8,0(%rdi) + cmovzq %rcx,%r10 + movq %r9,8(%rdi) + cmovzq %r12,%r11 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 +.cfi_restore %r13 + movq 8(%rsp),%r12 +.cfi_restore %r12 + leaq 16(%rsp),%rsp +.cfi_adjust_cfa_offset -16 +.Lneg_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_neg,.-ecp_nistz256_neg + + + + + + +.globl ecp_nistz256_ord_mul_mont +.type ecp_nistz256_ord_mul_mont,@function +.align 32 +ecp_nistz256_ord_mul_mont: +.cfi_startproc + movl $0x80100,%ecx + andl OPENSSL_ia32cap_P+8(%rip),%ecx + cmpl $0x80100,%ecx + je .Lecp_nistz256_ord_mul_montx + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lord_mul_body: + + movq 0(%rdx),%rax + movq %rdx,%rbx + leaq .Lord(%rip),%r14 + movq .LordK(%rip),%r15 + + + movq %rax,%rcx + mulq 0(%rsi) + movq %rax,%r8 + movq %rcx,%rax + movq %rdx,%r9 + + mulq 8(%rsi) + addq %rax,%r9 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq 16(%rsi) + addq %rax,%r10 + movq %rcx,%rax + adcq $0,%rdx + + movq %r8,%r13 + imulq %r15,%r8 + + movq %rdx,%r11 + mulq 24(%rsi) + addq %rax,%r11 + movq %r8,%rax + adcq $0,%rdx + movq %rdx,%r12 + + + mulq 0(%r14) + movq %r8,%rbp + addq %rax,%r13 + movq %r8,%rax + adcq $0,%rdx + movq %rdx,%rcx + + subq %r8,%r10 + sbbq $0,%r8 + + mulq 8(%r14) + addq %rcx,%r9 + adcq $0,%rdx + addq %rax,%r9 + movq %rbp,%rax + adcq %rdx,%r10 + movq %rbp,%rdx + adcq $0,%r8 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r11 + movq 8(%rbx),%rax + sbbq %rdx,%rbp + + addq %r8,%r11 + adcq %rbp,%r12 + adcq $0,%r13 + + + movq %rax,%rcx + mulq 0(%rsi) + addq %rax,%r9 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq 8(%rsi) + addq %rbp,%r10 + adcq $0,%rdx + addq %rax,%r10 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq 16(%rsi) + addq %rbp,%r11 + adcq $0,%rdx + addq %rax,%r11 + movq %rcx,%rax + adcq $0,%rdx + + movq %r9,%rcx + imulq %r15,%r9 + + movq %rdx,%rbp + mulq 24(%rsi) + addq %rbp,%r12 + adcq $0,%rdx + xorq %r8,%r8 + addq %rax,%r12 + movq %r9,%rax + adcq %rdx,%r13 + adcq $0,%r8 + + + mulq 0(%r14) + movq %r9,%rbp + addq %rax,%rcx + movq %r9,%rax + adcq %rdx,%rcx + + subq %r9,%r11 + sbbq $0,%r9 + + mulq 8(%r14) + addq %rcx,%r10 + adcq $0,%rdx + addq %rax,%r10 + movq %rbp,%rax + adcq %rdx,%r11 + movq %rbp,%rdx + adcq $0,%r9 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r12 + movq 16(%rbx),%rax + sbbq %rdx,%rbp + + addq %r9,%r12 + adcq %rbp,%r13 + adcq $0,%r8 + + + movq %rax,%rcx + mulq 0(%rsi) + addq %rax,%r10 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq 8(%rsi) + addq %rbp,%r11 + adcq $0,%rdx + addq %rax,%r11 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq 16(%rsi) + addq %rbp,%r12 + adcq $0,%rdx + addq %rax,%r12 + movq %rcx,%rax + adcq $0,%rdx + + movq %r10,%rcx + imulq %r15,%r10 + + movq %rdx,%rbp + mulq 24(%rsi) + addq %rbp,%r13 + adcq $0,%rdx + xorq %r9,%r9 + addq %rax,%r13 + movq %r10,%rax + adcq %rdx,%r8 + adcq $0,%r9 + + + mulq 0(%r14) + movq %r10,%rbp + addq %rax,%rcx + movq %r10,%rax + adcq %rdx,%rcx + + subq %r10,%r12 + sbbq $0,%r10 + + mulq 8(%r14) + addq %rcx,%r11 + adcq $0,%rdx + addq %rax,%r11 + movq %rbp,%rax + adcq %rdx,%r12 + movq %rbp,%rdx + adcq $0,%r10 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r13 + movq 24(%rbx),%rax + sbbq %rdx,%rbp + + addq %r10,%r13 + adcq %rbp,%r8 + adcq $0,%r9 + + + movq %rax,%rcx + mulq 0(%rsi) + addq %rax,%r11 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq 8(%rsi) + addq %rbp,%r12 + adcq $0,%rdx + addq %rax,%r12 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq 16(%rsi) + addq %rbp,%r13 + adcq $0,%rdx + addq %rax,%r13 + movq %rcx,%rax + adcq $0,%rdx + + movq %r11,%rcx + imulq %r15,%r11 + + movq %rdx,%rbp + mulq 24(%rsi) + addq %rbp,%r8 + adcq $0,%rdx + xorq %r10,%r10 + addq %rax,%r8 + movq %r11,%rax + adcq %rdx,%r9 + adcq $0,%r10 + + + mulq 0(%r14) + movq %r11,%rbp + addq %rax,%rcx + movq %r11,%rax + adcq %rdx,%rcx + + subq %r11,%r13 + sbbq $0,%r11 + + mulq 8(%r14) + addq %rcx,%r12 + adcq $0,%rdx + addq %rax,%r12 + movq %rbp,%rax + adcq %rdx,%r13 + movq %rbp,%rdx + adcq $0,%r11 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r8 + sbbq %rdx,%rbp + + addq %r11,%r8 + adcq %rbp,%r9 + adcq $0,%r10 + + + movq %r12,%rsi + subq 0(%r14),%r12 + movq %r13,%r11 + sbbq 8(%r14),%r13 + movq %r8,%rcx + sbbq 16(%r14),%r8 + movq %r9,%rbp + sbbq 24(%r14),%r9 + sbbq $0,%r10 + + cmovcq %rsi,%r12 + cmovcq %r11,%r13 + cmovcq %rcx,%r8 + cmovcq %rbp,%r9 + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbx +.cfi_restore %rbx + movq 40(%rsp),%rbp +.cfi_restore %rbp + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lord_mul_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_ord_mul_mont,.-ecp_nistz256_ord_mul_mont + + + + + + + +.globl ecp_nistz256_ord_sqr_mont +.type ecp_nistz256_ord_sqr_mont,@function +.align 32 +ecp_nistz256_ord_sqr_mont: +.cfi_startproc + movl $0x80100,%ecx + andl OPENSSL_ia32cap_P+8(%rip),%ecx + cmpl $0x80100,%ecx + je .Lecp_nistz256_ord_sqr_montx + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lord_sqr_body: + + movq 0(%rsi),%r8 + movq 8(%rsi),%rax + movq 16(%rsi),%r14 + movq 24(%rsi),%r15 + leaq .Lord(%rip),%rsi + movq %rdx,%rbx + jmp .Loop_ord_sqr + +.align 32 +.Loop_ord_sqr: + + movq %rax,%rbp + mulq %r8 + movq %rax,%r9 +.byte 102,72,15,110,205 + movq %r14,%rax + movq %rdx,%r10 + + mulq %r8 + addq %rax,%r10 + movq %r15,%rax +.byte 102,73,15,110,214 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %r8 + addq %rax,%r11 + movq %r15,%rax +.byte 102,73,15,110,223 + adcq $0,%rdx + movq %rdx,%r12 + + + mulq %r14 + movq %rax,%r13 + movq %r14,%rax + movq %rdx,%r14 + + + mulq %rbp + addq %rax,%r11 + movq %r15,%rax + adcq $0,%rdx + movq %rdx,%r15 + + mulq %rbp + addq %rax,%r12 + adcq $0,%rdx + + addq %r15,%r12 + adcq %rdx,%r13 + adcq $0,%r14 + + + xorq %r15,%r15 + movq %r8,%rax + addq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + adcq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq $0,%r15 + + + mulq %rax + movq %rax,%r8 +.byte 102,72,15,126,200 + movq %rdx,%rbp + + mulq %rax + addq %rbp,%r9 + adcq %rax,%r10 +.byte 102,72,15,126,208 + adcq $0,%rdx + movq %rdx,%rbp + + mulq %rax + addq %rbp,%r11 + adcq %rax,%r12 +.byte 102,72,15,126,216 + adcq $0,%rdx + movq %rdx,%rbp + + movq %r8,%rcx + imulq 32(%rsi),%r8 + + mulq %rax + addq %rbp,%r13 + adcq %rax,%r14 + movq 0(%rsi),%rax + adcq %rdx,%r15 + + + mulq %r8 + movq %r8,%rbp + addq %rax,%rcx + movq 8(%rsi),%rax + adcq %rdx,%rcx + + subq %r8,%r10 + sbbq $0,%rbp + + mulq %r8 + addq %rcx,%r9 + adcq $0,%rdx + addq %rax,%r9 + movq %r8,%rax + adcq %rdx,%r10 + movq %r8,%rdx + adcq $0,%rbp + + movq %r9,%rcx + imulq 32(%rsi),%r9 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r11 + movq 0(%rsi),%rax + sbbq %rdx,%r8 + + addq %rbp,%r11 + adcq $0,%r8 + + + mulq %r9 + movq %r9,%rbp + addq %rax,%rcx + movq 8(%rsi),%rax + adcq %rdx,%rcx + + subq %r9,%r11 + sbbq $0,%rbp + + mulq %r9 + addq %rcx,%r10 + adcq $0,%rdx + addq %rax,%r10 + movq %r9,%rax + adcq %rdx,%r11 + movq %r9,%rdx + adcq $0,%rbp + + movq %r10,%rcx + imulq 32(%rsi),%r10 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r8 + movq 0(%rsi),%rax + sbbq %rdx,%r9 + + addq %rbp,%r8 + adcq $0,%r9 + + + mulq %r10 + movq %r10,%rbp + addq %rax,%rcx + movq 8(%rsi),%rax + adcq %rdx,%rcx + + subq %r10,%r8 + sbbq $0,%rbp + + mulq %r10 + addq %rcx,%r11 + adcq $0,%rdx + addq %rax,%r11 + movq %r10,%rax + adcq %rdx,%r8 + movq %r10,%rdx + adcq $0,%rbp + + movq %r11,%rcx + imulq 32(%rsi),%r11 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r9 + movq 0(%rsi),%rax + sbbq %rdx,%r10 + + addq %rbp,%r9 + adcq $0,%r10 + + + mulq %r11 + movq %r11,%rbp + addq %rax,%rcx + movq 8(%rsi),%rax + adcq %rdx,%rcx + + subq %r11,%r9 + sbbq $0,%rbp + + mulq %r11 + addq %rcx,%r8 + adcq $0,%rdx + addq %rax,%r8 + movq %r11,%rax + adcq %rdx,%r9 + movq %r11,%rdx + adcq $0,%rbp + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r10 + sbbq %rdx,%r11 + + addq %rbp,%r10 + adcq $0,%r11 + + + xorq %rdx,%rdx + addq %r12,%r8 + adcq %r13,%r9 + movq %r8,%r12 + adcq %r14,%r10 + adcq %r15,%r11 + movq %r9,%rax + adcq $0,%rdx + + + subq 0(%rsi),%r8 + movq %r10,%r14 + sbbq 8(%rsi),%r9 + sbbq 16(%rsi),%r10 + movq %r11,%r15 + sbbq 24(%rsi),%r11 + sbbq $0,%rdx + + cmovcq %r12,%r8 + cmovncq %r9,%rax + cmovncq %r10,%r14 + cmovncq %r11,%r15 + + decq %rbx + jnz .Loop_ord_sqr + + movq %r8,0(%rdi) + movq %rax,8(%rdi) + pxor %xmm1,%xmm1 + movq %r14,16(%rdi) + pxor %xmm2,%xmm2 + movq %r15,24(%rdi) + pxor %xmm3,%xmm3 + + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbx +.cfi_restore %rbx + movq 40(%rsp),%rbp +.cfi_restore %rbp + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lord_sqr_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_ord_sqr_mont,.-ecp_nistz256_ord_sqr_mont + +.type ecp_nistz256_ord_mul_montx,@function +.align 32 +ecp_nistz256_ord_mul_montx: +.cfi_startproc +.Lecp_nistz256_ord_mul_montx: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lord_mulx_body: + + movq %rdx,%rbx + movq 0(%rdx),%rdx + movq 0(%rsi),%r9 + movq 8(%rsi),%r10 + movq 16(%rsi),%r11 + movq 24(%rsi),%r12 + leaq -128(%rsi),%rsi + leaq .Lord-128(%rip),%r14 + movq .LordK(%rip),%r15 + + + mulxq %r9,%r8,%r9 + mulxq %r10,%rcx,%r10 + mulxq %r11,%rbp,%r11 + addq %rcx,%r9 + mulxq %r12,%rcx,%r12 + movq %r8,%rdx + mulxq %r15,%rdx,%rax + adcq %rbp,%r10 + adcq %rcx,%r11 + adcq $0,%r12 + + + xorq %r13,%r13 + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r8 + adoxq %rbp,%r9 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 24+128(%r14),%rcx,%rbp + movq 8(%rbx),%rdx + adcxq %rcx,%r11 + adoxq %rbp,%r12 + adcxq %r8,%r12 + adoxq %r8,%r13 + adcq $0,%r13 + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r9,%rdx + mulxq %r15,%rdx,%rax + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + adcxq %r8,%r13 + adoxq %r8,%r8 + adcq $0,%r8 + + + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 24+128(%r14),%rcx,%rbp + movq 16(%rbx),%rdx + adcxq %rcx,%r12 + adoxq %rbp,%r13 + adcxq %r9,%r13 + adoxq %r9,%r8 + adcq $0,%r8 + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r10,%rdx + mulxq %r15,%rdx,%rax + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + adcxq %r9,%r8 + adoxq %r9,%r9 + adcq $0,%r9 + + + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 24+128(%r14),%rcx,%rbp + movq 24(%rbx),%rdx + adcxq %rcx,%r13 + adoxq %rbp,%r8 + adcxq %r10,%r8 + adoxq %r10,%r9 + adcq $0,%r9 + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r11,%rdx + mulxq %r15,%rdx,%rax + adcxq %rcx,%r8 + adoxq %rbp,%r9 + + adcxq %r10,%r9 + adoxq %r10,%r10 + adcq $0,%r10 + + + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + mulxq 24+128(%r14),%rcx,%rbp + leaq 128(%r14),%r14 + movq %r12,%rbx + adcxq %rcx,%r8 + adoxq %rbp,%r9 + movq %r13,%rdx + adcxq %r11,%r9 + adoxq %r11,%r10 + adcq $0,%r10 + + + + movq %r8,%rcx + subq 0(%r14),%r12 + sbbq 8(%r14),%r13 + sbbq 16(%r14),%r8 + movq %r9,%rbp + sbbq 24(%r14),%r9 + sbbq $0,%r10 + + cmovcq %rbx,%r12 + cmovcq %rdx,%r13 + cmovcq %rcx,%r8 + cmovcq %rbp,%r9 + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbx +.cfi_restore %rbx + movq 40(%rsp),%rbp +.cfi_restore %rbp + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lord_mulx_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_ord_mul_montx,.-ecp_nistz256_ord_mul_montx + +.type ecp_nistz256_ord_sqr_montx,@function +.align 32 +ecp_nistz256_ord_sqr_montx: +.cfi_startproc +.Lecp_nistz256_ord_sqr_montx: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lord_sqrx_body: + + movq %rdx,%rbx + movq 0(%rsi),%rdx + movq 8(%rsi),%r14 + movq 16(%rsi),%r15 + movq 24(%rsi),%r8 + leaq .Lord(%rip),%rsi + jmp .Loop_ord_sqrx + +.align 32 +.Loop_ord_sqrx: + mulxq %r14,%r9,%r10 + mulxq %r15,%rcx,%r11 + movq %rdx,%rax +.byte 102,73,15,110,206 + mulxq %r8,%rbp,%r12 + movq %r14,%rdx + addq %rcx,%r10 +.byte 102,73,15,110,215 + adcq %rbp,%r11 + adcq $0,%r12 + xorq %r13,%r13 + + mulxq %r15,%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq %r8,%rcx,%rbp + movq %r15,%rdx + adcxq %rcx,%r12 + adoxq %rbp,%r13 + adcq $0,%r13 + + mulxq %r8,%rcx,%r14 + movq %rax,%rdx +.byte 102,73,15,110,216 + xorq %r15,%r15 + adcxq %r9,%r9 + adoxq %rcx,%r13 + adcxq %r10,%r10 + adoxq %r15,%r14 + + + mulxq %rdx,%r8,%rbp +.byte 102,72,15,126,202 + adcxq %r11,%r11 + adoxq %rbp,%r9 + adcxq %r12,%r12 + mulxq %rdx,%rcx,%rax +.byte 102,72,15,126,210 + adcxq %r13,%r13 + adoxq %rcx,%r10 + adcxq %r14,%r14 + mulxq %rdx,%rcx,%rbp +.byte 0x67 +.byte 102,72,15,126,218 + adoxq %rax,%r11 + adcxq %r15,%r15 + adoxq %rcx,%r12 + adoxq %rbp,%r13 + mulxq %rdx,%rcx,%rax + adoxq %rcx,%r14 + adoxq %rax,%r15 + + + movq %r8,%rdx + mulxq 32(%rsi),%rdx,%rcx + + xorq %rax,%rax + mulxq 0(%rsi),%rcx,%rbp + adcxq %rcx,%r8 + adoxq %rbp,%r9 + mulxq 8(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + mulxq 16(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + mulxq 24(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r8 + adcxq %rax,%r8 + + + movq %r9,%rdx + mulxq 32(%rsi),%rdx,%rcx + + mulxq 0(%rsi),%rcx,%rbp + adoxq %rcx,%r9 + adcxq %rbp,%r10 + mulxq 8(%rsi),%rcx,%rbp + adoxq %rcx,%r10 + adcxq %rbp,%r11 + mulxq 16(%rsi),%rcx,%rbp + adoxq %rcx,%r11 + adcxq %rbp,%r8 + mulxq 24(%rsi),%rcx,%rbp + adoxq %rcx,%r8 + adcxq %rbp,%r9 + adoxq %rax,%r9 + + + movq %r10,%rdx + mulxq 32(%rsi),%rdx,%rcx + + mulxq 0(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + mulxq 8(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r8 + mulxq 16(%rsi),%rcx,%rbp + adcxq %rcx,%r8 + adoxq %rbp,%r9 + mulxq 24(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + adcxq %rax,%r10 + + + movq %r11,%rdx + mulxq 32(%rsi),%rdx,%rcx + + mulxq 0(%rsi),%rcx,%rbp + adoxq %rcx,%r11 + adcxq %rbp,%r8 + mulxq 8(%rsi),%rcx,%rbp + adoxq %rcx,%r8 + adcxq %rbp,%r9 + mulxq 16(%rsi),%rcx,%rbp + adoxq %rcx,%r9 + adcxq %rbp,%r10 + mulxq 24(%rsi),%rcx,%rbp + adoxq %rcx,%r10 + adcxq %rbp,%r11 + adoxq %rax,%r11 + + + addq %r8,%r12 + adcq %r13,%r9 + movq %r12,%rdx + adcq %r14,%r10 + adcq %r15,%r11 + movq %r9,%r14 + adcq $0,%rax + + + subq 0(%rsi),%r12 + movq %r10,%r15 + sbbq 8(%rsi),%r9 + sbbq 16(%rsi),%r10 + movq %r11,%r8 + sbbq 24(%rsi),%r11 + sbbq $0,%rax + + cmovncq %r12,%rdx + cmovncq %r9,%r14 + cmovncq %r10,%r15 + cmovncq %r11,%r8 + + decq %rbx + jnz .Loop_ord_sqrx + + movq %rdx,0(%rdi) + movq %r14,8(%rdi) + pxor %xmm1,%xmm1 + movq %r15,16(%rdi) + pxor %xmm2,%xmm2 + movq %r8,24(%rdi) + pxor %xmm3,%xmm3 + + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbx +.cfi_restore %rbx + movq 40(%rsp),%rbp +.cfi_restore %rbp + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lord_sqrx_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_ord_sqr_montx,.-ecp_nistz256_ord_sqr_montx + + + + +.globl ecp_nistz256_to_mont +.type ecp_nistz256_to_mont,@function +.align 32 +ecp_nistz256_to_mont: +.cfi_startproc + movl $0x80100,%ecx + andl OPENSSL_ia32cap_P+8(%rip),%ecx + leaq .LRR(%rip),%rdx + jmp .Lmul_mont +.cfi_endproc +.size ecp_nistz256_to_mont,.-ecp_nistz256_to_mont + + + + + + + +.globl ecp_nistz256_mul_mont +.type ecp_nistz256_mul_mont,@function +.align 32 +ecp_nistz256_mul_mont: +.cfi_startproc + movl $0x80100,%ecx + andl OPENSSL_ia32cap_P+8(%rip),%ecx +.Lmul_mont: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lmul_body: + cmpl $0x80100,%ecx + je .Lmul_montx + movq %rdx,%rbx + movq 0(%rdx),%rax + movq 0(%rsi),%r9 + movq 8(%rsi),%r10 + movq 16(%rsi),%r11 + movq 24(%rsi),%r12 + + call __ecp_nistz256_mul_montq + jmp .Lmul_mont_done + +.align 32 +.Lmul_montx: + movq %rdx,%rbx + movq 0(%rdx),%rdx + movq 0(%rsi),%r9 + movq 8(%rsi),%r10 + movq 16(%rsi),%r11 + movq 24(%rsi),%r12 + leaq -128(%rsi),%rsi + + call __ecp_nistz256_mul_montx +.Lmul_mont_done: + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbx +.cfi_restore %rbx + movq 40(%rsp),%rbp +.cfi_restore %rbp + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lmul_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont + +.type __ecp_nistz256_mul_montq,@function +.align 32 +__ecp_nistz256_mul_montq: +.cfi_startproc + + + movq %rax,%rbp + mulq %r9 + movq .Lpoly+8(%rip),%r14 + movq %rax,%r8 + movq %rbp,%rax + movq %rdx,%r9 + + mulq %r10 + movq .Lpoly+24(%rip),%r15 + addq %rax,%r9 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %r11 + addq %rax,%r10 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%r11 + + mulq %r12 + addq %rax,%r11 + movq %r8,%rax + adcq $0,%rdx + xorq %r13,%r13 + movq %rdx,%r12 + + + + + + + + + + + movq %r8,%rbp + shlq $32,%r8 + mulq %r15 + shrq $32,%rbp + addq %r8,%r9 + adcq %rbp,%r10 + adcq %rax,%r11 + movq 8(%rbx),%rax + adcq %rdx,%r12 + adcq $0,%r13 + xorq %r8,%r8 + + + + movq %rax,%rbp + mulq 0(%rsi) + addq %rax,%r9 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 8(%rsi) + addq %rcx,%r10 + adcq $0,%rdx + addq %rax,%r10 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 16(%rsi) + addq %rcx,%r11 + adcq $0,%rdx + addq %rax,%r11 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 24(%rsi) + addq %rcx,%r12 + adcq $0,%rdx + addq %rax,%r12 + movq %r9,%rax + adcq %rdx,%r13 + adcq $0,%r8 + + + + movq %r9,%rbp + shlq $32,%r9 + mulq %r15 + shrq $32,%rbp + addq %r9,%r10 + adcq %rbp,%r11 + adcq %rax,%r12 + movq 16(%rbx),%rax + adcq %rdx,%r13 + adcq $0,%r8 + xorq %r9,%r9 + + + + movq %rax,%rbp + mulq 0(%rsi) + addq %rax,%r10 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 8(%rsi) + addq %rcx,%r11 + adcq $0,%rdx + addq %rax,%r11 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 16(%rsi) + addq %rcx,%r12 + adcq $0,%rdx + addq %rax,%r12 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 24(%rsi) + addq %rcx,%r13 + adcq $0,%rdx + addq %rax,%r13 + movq %r10,%rax + adcq %rdx,%r8 + adcq $0,%r9 + + + + movq %r10,%rbp + shlq $32,%r10 + mulq %r15 + shrq $32,%rbp + addq %r10,%r11 + adcq %rbp,%r12 + adcq %rax,%r13 + movq 24(%rbx),%rax + adcq %rdx,%r8 + adcq $0,%r9 + xorq %r10,%r10 + + + + movq %rax,%rbp + mulq 0(%rsi) + addq %rax,%r11 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 8(%rsi) + addq %rcx,%r12 + adcq $0,%rdx + addq %rax,%r12 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 16(%rsi) + addq %rcx,%r13 + adcq $0,%rdx + addq %rax,%r13 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 24(%rsi) + addq %rcx,%r8 + adcq $0,%rdx + addq %rax,%r8 + movq %r11,%rax + adcq %rdx,%r9 + adcq $0,%r10 + + + + movq %r11,%rbp + shlq $32,%r11 + mulq %r15 + shrq $32,%rbp + addq %r11,%r12 + adcq %rbp,%r13 + movq %r12,%rcx + adcq %rax,%r8 + adcq %rdx,%r9 + movq %r13,%rbp + adcq $0,%r10 + + + + subq $-1,%r12 + movq %r8,%rbx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%rdx + sbbq %r15,%r9 + sbbq $0,%r10 + + cmovcq %rcx,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rbx,%r8 + movq %r13,8(%rdi) + cmovcq %rdx,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __ecp_nistz256_mul_montq,.-__ecp_nistz256_mul_montq + + + + + + + + +.globl ecp_nistz256_sqr_mont +.type ecp_nistz256_sqr_mont,@function +.align 32 +ecp_nistz256_sqr_mont: +.cfi_startproc + movl $0x80100,%ecx + andl OPENSSL_ia32cap_P+8(%rip),%ecx + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lsqr_body: + cmpl $0x80100,%ecx + je .Lsqr_montx + movq 0(%rsi),%rax + movq 8(%rsi),%r14 + movq 16(%rsi),%r15 + movq 24(%rsi),%r8 + + call __ecp_nistz256_sqr_montq + jmp .Lsqr_mont_done + +.align 32 +.Lsqr_montx: + movq 0(%rsi),%rdx + movq 8(%rsi),%r14 + movq 16(%rsi),%r15 + movq 24(%rsi),%r8 + leaq -128(%rsi),%rsi + + call __ecp_nistz256_sqr_montx +.Lsqr_mont_done: + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbx +.cfi_restore %rbx + movq 40(%rsp),%rbp +.cfi_restore %rbp + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lsqr_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont + +.type __ecp_nistz256_sqr_montq,@function +.align 32 +__ecp_nistz256_sqr_montq: +.cfi_startproc + movq %rax,%r13 + mulq %r14 + movq %rax,%r9 + movq %r15,%rax + movq %rdx,%r10 + + mulq %r13 + addq %rax,%r10 + movq %r8,%rax + adcq $0,%rdx + movq %rdx,%r11 + + mulq %r13 + addq %rax,%r11 + movq %r15,%rax + adcq $0,%rdx + movq %rdx,%r12 + + + mulq %r14 + addq %rax,%r11 + movq %r8,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq %r14 + addq %rax,%r12 + movq %r8,%rax + adcq $0,%rdx + addq %rbp,%r12 + movq %rdx,%r13 + adcq $0,%r13 + + + mulq %r15 + xorq %r15,%r15 + addq %rax,%r13 + movq 0(%rsi),%rax + movq %rdx,%r14 + adcq $0,%r14 + + addq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + adcq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq $0,%r15 + + mulq %rax + movq %rax,%r8 + movq 8(%rsi),%rax + movq %rdx,%rcx + + mulq %rax + addq %rcx,%r9 + adcq %rax,%r10 + movq 16(%rsi),%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq %rax + addq %rcx,%r11 + adcq %rax,%r12 + movq 24(%rsi),%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq %rax + addq %rcx,%r13 + adcq %rax,%r14 + movq %r8,%rax + adcq %rdx,%r15 + + movq .Lpoly+8(%rip),%rsi + movq .Lpoly+24(%rip),%rbp + + + + + movq %r8,%rcx + shlq $32,%r8 + mulq %rbp + shrq $32,%rcx + addq %r8,%r9 + adcq %rcx,%r10 + adcq %rax,%r11 + movq %r9,%rax + adcq $0,%rdx + + + + movq %r9,%rcx + shlq $32,%r9 + movq %rdx,%r8 + mulq %rbp + shrq $32,%rcx + addq %r9,%r10 + adcq %rcx,%r11 + adcq %rax,%r8 + movq %r10,%rax + adcq $0,%rdx + + + + movq %r10,%rcx + shlq $32,%r10 + movq %rdx,%r9 + mulq %rbp + shrq $32,%rcx + addq %r10,%r11 + adcq %rcx,%r8 + adcq %rax,%r9 + movq %r11,%rax + adcq $0,%rdx + + + + movq %r11,%rcx + shlq $32,%r11 + movq %rdx,%r10 + mulq %rbp + shrq $32,%rcx + addq %r11,%r8 + adcq %rcx,%r9 + adcq %rax,%r10 + adcq $0,%rdx + xorq %r11,%r11 + + + + addq %r8,%r12 + adcq %r9,%r13 + movq %r12,%r8 + adcq %r10,%r14 + adcq %rdx,%r15 + movq %r13,%r9 + adcq $0,%r11 + + subq $-1,%r12 + movq %r14,%r10 + sbbq %rsi,%r13 + sbbq $0,%r14 + movq %r15,%rcx + sbbq %rbp,%r15 + sbbq $0,%r11 + + cmovcq %r8,%r12 + cmovcq %r9,%r13 + movq %r12,0(%rdi) + cmovcq %r10,%r14 + movq %r13,8(%rdi) + cmovcq %rcx,%r15 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __ecp_nistz256_sqr_montq,.-__ecp_nistz256_sqr_montq +.type __ecp_nistz256_mul_montx,@function +.align 32 +__ecp_nistz256_mul_montx: +.cfi_startproc + + + mulxq %r9,%r8,%r9 + mulxq %r10,%rcx,%r10 + movq $32,%r14 + xorq %r13,%r13 + mulxq %r11,%rbp,%r11 + movq .Lpoly+24(%rip),%r15 + adcq %rcx,%r9 + mulxq %r12,%rcx,%r12 + movq %r8,%rdx + adcq %rbp,%r10 + shlxq %r14,%r8,%rbp + adcq %rcx,%r11 + shrxq %r14,%r8,%rcx + adcq $0,%r12 + + + + addq %rbp,%r9 + adcq %rcx,%r10 + + mulxq %r15,%rcx,%rbp + movq 8(%rbx),%rdx + adcq %rcx,%r11 + adcq %rbp,%r12 + adcq $0,%r13 + xorq %r8,%r8 + + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r9,%rdx + adcxq %rcx,%r12 + shlxq %r14,%r9,%rcx + adoxq %rbp,%r13 + shrxq %r14,%r9,%rbp + + adcxq %r8,%r13 + adoxq %r8,%r8 + adcq $0,%r8 + + + + addq %rcx,%r10 + adcq %rbp,%r11 + + mulxq %r15,%rcx,%rbp + movq 16(%rbx),%rdx + adcq %rcx,%r12 + adcq %rbp,%r13 + adcq $0,%r8 + xorq %r9,%r9 + + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r10,%rdx + adcxq %rcx,%r13 + shlxq %r14,%r10,%rcx + adoxq %rbp,%r8 + shrxq %r14,%r10,%rbp + + adcxq %r9,%r8 + adoxq %r9,%r9 + adcq $0,%r9 + + + + addq %rcx,%r11 + adcq %rbp,%r12 + + mulxq %r15,%rcx,%rbp + movq 24(%rbx),%rdx + adcq %rcx,%r13 + adcq %rbp,%r8 + adcq $0,%r9 + xorq %r10,%r10 + + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r11,%rdx + adcxq %rcx,%r8 + shlxq %r14,%r11,%rcx + adoxq %rbp,%r9 + shrxq %r14,%r11,%rbp + + adcxq %r10,%r9 + adoxq %r10,%r10 + adcq $0,%r10 + + + + addq %rcx,%r12 + adcq %rbp,%r13 + + mulxq %r15,%rcx,%rbp + movq %r12,%rbx + movq .Lpoly+8(%rip),%r14 + adcq %rcx,%r8 + movq %r13,%rdx + adcq %rbp,%r9 + adcq $0,%r10 + + + + xorl %eax,%eax + movq %r8,%rcx + sbbq $-1,%r12 + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%rbp + sbbq %r15,%r9 + sbbq $0,%r10 + + cmovcq %rbx,%r12 + cmovcq %rdx,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %rbp,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __ecp_nistz256_mul_montx,.-__ecp_nistz256_mul_montx + +.type __ecp_nistz256_sqr_montx,@function +.align 32 +__ecp_nistz256_sqr_montx: +.cfi_startproc + mulxq %r14,%r9,%r10 + mulxq %r15,%rcx,%r11 + xorl %eax,%eax + adcq %rcx,%r10 + mulxq %r8,%rbp,%r12 + movq %r14,%rdx + adcq %rbp,%r11 + adcq $0,%r12 + xorq %r13,%r13 + + + mulxq %r15,%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq %r8,%rcx,%rbp + movq %r15,%rdx + adcxq %rcx,%r12 + adoxq %rbp,%r13 + adcq $0,%r13 + + + mulxq %r8,%rcx,%r14 + movq 0+128(%rsi),%rdx + xorq %r15,%r15 + adcxq %r9,%r9 + adoxq %rcx,%r13 + adcxq %r10,%r10 + adoxq %r15,%r14 + + mulxq %rdx,%r8,%rbp + movq 8+128(%rsi),%rdx + adcxq %r11,%r11 + adoxq %rbp,%r9 + adcxq %r12,%r12 + mulxq %rdx,%rcx,%rax + movq 16+128(%rsi),%rdx + adcxq %r13,%r13 + adoxq %rcx,%r10 + adcxq %r14,%r14 +.byte 0x67 + mulxq %rdx,%rcx,%rbp + movq 24+128(%rsi),%rdx + adoxq %rax,%r11 + adcxq %r15,%r15 + adoxq %rcx,%r12 + movq $32,%rsi + adoxq %rbp,%r13 +.byte 0x67,0x67 + mulxq %rdx,%rcx,%rax + movq .Lpoly+24(%rip),%rdx + adoxq %rcx,%r14 + shlxq %rsi,%r8,%rcx + adoxq %rax,%r15 + shrxq %rsi,%r8,%rax + movq %rdx,%rbp + + + addq %rcx,%r9 + adcq %rax,%r10 + + mulxq %r8,%rcx,%r8 + adcq %rcx,%r11 + shlxq %rsi,%r9,%rcx + adcq $0,%r8 + shrxq %rsi,%r9,%rax + + + addq %rcx,%r10 + adcq %rax,%r11 + + mulxq %r9,%rcx,%r9 + adcq %rcx,%r8 + shlxq %rsi,%r10,%rcx + adcq $0,%r9 + shrxq %rsi,%r10,%rax + + + addq %rcx,%r11 + adcq %rax,%r8 + + mulxq %r10,%rcx,%r10 + adcq %rcx,%r9 + shlxq %rsi,%r11,%rcx + adcq $0,%r10 + shrxq %rsi,%r11,%rax + + + addq %rcx,%r8 + adcq %rax,%r9 + + mulxq %r11,%rcx,%r11 + adcq %rcx,%r10 + adcq $0,%r11 + + xorq %rdx,%rdx + addq %r8,%r12 + movq .Lpoly+8(%rip),%rsi + adcq %r9,%r13 + movq %r12,%r8 + adcq %r10,%r14 + adcq %r11,%r15 + movq %r13,%r9 + adcq $0,%rdx + + subq $-1,%r12 + movq %r14,%r10 + sbbq %rsi,%r13 + sbbq $0,%r14 + movq %r15,%r11 + sbbq %rbp,%r15 + sbbq $0,%rdx + + cmovcq %r8,%r12 + cmovcq %r9,%r13 + movq %r12,0(%rdi) + cmovcq %r10,%r14 + movq %r13,8(%rdi) + cmovcq %r11,%r15 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __ecp_nistz256_sqr_montx,.-__ecp_nistz256_sqr_montx + + + + + + +.globl ecp_nistz256_from_mont +.type ecp_nistz256_from_mont,@function +.align 32 +ecp_nistz256_from_mont: +.cfi_startproc + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-16 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-24 +.Lfrom_body: + + movq 0(%rsi),%rax + movq .Lpoly+24(%rip),%r13 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + movq %rax,%r8 + movq .Lpoly+8(%rip),%r12 + + + + movq %rax,%rcx + shlq $32,%r8 + mulq %r13 + shrq $32,%rcx + addq %r8,%r9 + adcq %rcx,%r10 + adcq %rax,%r11 + movq %r9,%rax + adcq $0,%rdx + + + + movq %r9,%rcx + shlq $32,%r9 + movq %rdx,%r8 + mulq %r13 + shrq $32,%rcx + addq %r9,%r10 + adcq %rcx,%r11 + adcq %rax,%r8 + movq %r10,%rax + adcq $0,%rdx + + + + movq %r10,%rcx + shlq $32,%r10 + movq %rdx,%r9 + mulq %r13 + shrq $32,%rcx + addq %r10,%r11 + adcq %rcx,%r8 + adcq %rax,%r9 + movq %r11,%rax + adcq $0,%rdx + + + + movq %r11,%rcx + shlq $32,%r11 + movq %rdx,%r10 + mulq %r13 + shrq $32,%rcx + addq %r11,%r8 + adcq %rcx,%r9 + movq %r8,%rcx + adcq %rax,%r10 + movq %r9,%rsi + adcq $0,%rdx + + + + subq $-1,%r8 + movq %r10,%rax + sbbq %r12,%r9 + sbbq $0,%r10 + movq %rdx,%r11 + sbbq %r13,%rdx + sbbq %r13,%r13 + + cmovnzq %rcx,%r8 + cmovnzq %rsi,%r9 + movq %r8,0(%rdi) + cmovnzq %rax,%r10 + movq %r9,8(%rdi) + cmovzq %rdx,%r11 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 +.cfi_restore %r13 + movq 8(%rsp),%r12 +.cfi_restore %r12 + leaq 16(%rsp),%rsp +.cfi_adjust_cfa_offset -16 +.Lfrom_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_from_mont,.-ecp_nistz256_from_mont + + +.globl ecp_nistz256_scatter_w5 +.type ecp_nistz256_scatter_w5,@function +.align 32 +ecp_nistz256_scatter_w5: +.cfi_startproc + leal -3(%rdx,%rdx,2),%edx + movdqa 0(%rsi),%xmm0 + shll $5,%edx + movdqa 16(%rsi),%xmm1 + movdqa 32(%rsi),%xmm2 + movdqa 48(%rsi),%xmm3 + movdqa 64(%rsi),%xmm4 + movdqa 80(%rsi),%xmm5 + movdqa %xmm0,0(%rdi,%rdx,1) + movdqa %xmm1,16(%rdi,%rdx,1) + movdqa %xmm2,32(%rdi,%rdx,1) + movdqa %xmm3,48(%rdi,%rdx,1) + movdqa %xmm4,64(%rdi,%rdx,1) + movdqa %xmm5,80(%rdi,%rdx,1) + + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_scatter_w5,.-ecp_nistz256_scatter_w5 + + + +.globl ecp_nistz256_gather_w5 +.type ecp_nistz256_gather_w5,@function +.align 32 +ecp_nistz256_gather_w5: +.cfi_startproc + movl OPENSSL_ia32cap_P+8(%rip),%eax + testl $32,%eax + jnz .Lavx2_gather_w5 + movdqa .LOne(%rip),%xmm0 + movd %edx,%xmm1 + + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + + movdqa %xmm0,%xmm8 + pshufd $0,%xmm1,%xmm1 + + movq $16,%rax +.Lselect_loop_sse_w5: + + movdqa %xmm8,%xmm15 + paddd %xmm0,%xmm8 + pcmpeqd %xmm1,%xmm15 + + movdqa 0(%rsi),%xmm9 + movdqa 16(%rsi),%xmm10 + movdqa 32(%rsi),%xmm11 + movdqa 48(%rsi),%xmm12 + movdqa 64(%rsi),%xmm13 + movdqa 80(%rsi),%xmm14 + leaq 96(%rsi),%rsi + + pand %xmm15,%xmm9 + pand %xmm15,%xmm10 + por %xmm9,%xmm2 + pand %xmm15,%xmm11 + por %xmm10,%xmm3 + pand %xmm15,%xmm12 + por %xmm11,%xmm4 + pand %xmm15,%xmm13 + por %xmm12,%xmm5 + pand %xmm15,%xmm14 + por %xmm13,%xmm6 + por %xmm14,%xmm7 + + decq %rax + jnz .Lselect_loop_sse_w5 + + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + movdqu %xmm4,32(%rdi) + movdqu %xmm5,48(%rdi) + movdqu %xmm6,64(%rdi) + movdqu %xmm7,80(%rdi) + .byte 0xf3,0xc3 +.cfi_endproc +.LSEH_end_ecp_nistz256_gather_w5: +.size ecp_nistz256_gather_w5,.-ecp_nistz256_gather_w5 + + + +.globl ecp_nistz256_scatter_w7 +.type ecp_nistz256_scatter_w7,@function +.align 32 +ecp_nistz256_scatter_w7: +.cfi_startproc + movdqu 0(%rsi),%xmm0 + shll $6,%edx + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqa %xmm0,0(%rdi,%rdx,1) + movdqa %xmm1,16(%rdi,%rdx,1) + movdqa %xmm2,32(%rdi,%rdx,1) + movdqa %xmm3,48(%rdi,%rdx,1) + + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_scatter_w7,.-ecp_nistz256_scatter_w7 + + + +.globl ecp_nistz256_gather_w7 +.type ecp_nistz256_gather_w7,@function +.align 32 +ecp_nistz256_gather_w7: +.cfi_startproc + movl OPENSSL_ia32cap_P+8(%rip),%eax + testl $32,%eax + jnz .Lavx2_gather_w7 + movdqa .LOne(%rip),%xmm8 + movd %edx,%xmm1 + + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + + movdqa %xmm8,%xmm0 + pshufd $0,%xmm1,%xmm1 + movq $64,%rax + +.Lselect_loop_sse_w7: + movdqa %xmm8,%xmm15 + paddd %xmm0,%xmm8 + movdqa 0(%rsi),%xmm9 + movdqa 16(%rsi),%xmm10 + pcmpeqd %xmm1,%xmm15 + movdqa 32(%rsi),%xmm11 + movdqa 48(%rsi),%xmm12 + leaq 64(%rsi),%rsi + + pand %xmm15,%xmm9 + pand %xmm15,%xmm10 + por %xmm9,%xmm2 + pand %xmm15,%xmm11 + por %xmm10,%xmm3 + pand %xmm15,%xmm12 + por %xmm11,%xmm4 + prefetcht0 255(%rsi) + por %xmm12,%xmm5 + + decq %rax + jnz .Lselect_loop_sse_w7 + + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + movdqu %xmm4,32(%rdi) + movdqu %xmm5,48(%rdi) + .byte 0xf3,0xc3 +.cfi_endproc +.LSEH_end_ecp_nistz256_gather_w7: +.size ecp_nistz256_gather_w7,.-ecp_nistz256_gather_w7 + + +.type ecp_nistz256_avx2_gather_w5,@function +.align 32 +ecp_nistz256_avx2_gather_w5: +.cfi_startproc +.Lavx2_gather_w5: + vzeroupper + vmovdqa .LTwo(%rip),%ymm0 + + vpxor %ymm2,%ymm2,%ymm2 + vpxor %ymm3,%ymm3,%ymm3 + vpxor %ymm4,%ymm4,%ymm4 + + vmovdqa .LOne(%rip),%ymm5 + vmovdqa .LTwo(%rip),%ymm10 + + vmovd %edx,%xmm1 + vpermd %ymm1,%ymm2,%ymm1 + + movq $8,%rax +.Lselect_loop_avx2_w5: + + vmovdqa 0(%rsi),%ymm6 + vmovdqa 32(%rsi),%ymm7 + vmovdqa 64(%rsi),%ymm8 + + vmovdqa 96(%rsi),%ymm11 + vmovdqa 128(%rsi),%ymm12 + vmovdqa 160(%rsi),%ymm13 + + vpcmpeqd %ymm1,%ymm5,%ymm9 + vpcmpeqd %ymm1,%ymm10,%ymm14 + + vpaddd %ymm0,%ymm5,%ymm5 + vpaddd %ymm0,%ymm10,%ymm10 + leaq 192(%rsi),%rsi + + vpand %ymm9,%ymm6,%ymm6 + vpand %ymm9,%ymm7,%ymm7 + vpand %ymm9,%ymm8,%ymm8 + vpand %ymm14,%ymm11,%ymm11 + vpand %ymm14,%ymm12,%ymm12 + vpand %ymm14,%ymm13,%ymm13 + + vpxor %ymm6,%ymm2,%ymm2 + vpxor %ymm7,%ymm3,%ymm3 + vpxor %ymm8,%ymm4,%ymm4 + vpxor %ymm11,%ymm2,%ymm2 + vpxor %ymm12,%ymm3,%ymm3 + vpxor %ymm13,%ymm4,%ymm4 + + decq %rax + jnz .Lselect_loop_avx2_w5 + + vmovdqu %ymm2,0(%rdi) + vmovdqu %ymm3,32(%rdi) + vmovdqu %ymm4,64(%rdi) + vzeroupper + .byte 0xf3,0xc3 +.cfi_endproc +.LSEH_end_ecp_nistz256_avx2_gather_w5: +.size ecp_nistz256_avx2_gather_w5,.-ecp_nistz256_avx2_gather_w5 + + + +.globl ecp_nistz256_avx2_gather_w7 +.type ecp_nistz256_avx2_gather_w7,@function +.align 32 +ecp_nistz256_avx2_gather_w7: +.cfi_startproc +.Lavx2_gather_w7: + vzeroupper + vmovdqa .LThree(%rip),%ymm0 + + vpxor %ymm2,%ymm2,%ymm2 + vpxor %ymm3,%ymm3,%ymm3 + + vmovdqa .LOne(%rip),%ymm4 + vmovdqa .LTwo(%rip),%ymm8 + vmovdqa .LThree(%rip),%ymm12 + + vmovd %edx,%xmm1 + vpermd %ymm1,%ymm2,%ymm1 + + + movq $21,%rax +.Lselect_loop_avx2_w7: + + vmovdqa 0(%rsi),%ymm5 + vmovdqa 32(%rsi),%ymm6 + + vmovdqa 64(%rsi),%ymm9 + vmovdqa 96(%rsi),%ymm10 + + vmovdqa 128(%rsi),%ymm13 + vmovdqa 160(%rsi),%ymm14 + + vpcmpeqd %ymm1,%ymm4,%ymm7 + vpcmpeqd %ymm1,%ymm8,%ymm11 + vpcmpeqd %ymm1,%ymm12,%ymm15 + + vpaddd %ymm0,%ymm4,%ymm4 + vpaddd %ymm0,%ymm8,%ymm8 + vpaddd %ymm0,%ymm12,%ymm12 + leaq 192(%rsi),%rsi + + vpand %ymm7,%ymm5,%ymm5 + vpand %ymm7,%ymm6,%ymm6 + vpand %ymm11,%ymm9,%ymm9 + vpand %ymm11,%ymm10,%ymm10 + vpand %ymm15,%ymm13,%ymm13 + vpand %ymm15,%ymm14,%ymm14 + + vpxor %ymm5,%ymm2,%ymm2 + vpxor %ymm6,%ymm3,%ymm3 + vpxor %ymm9,%ymm2,%ymm2 + vpxor %ymm10,%ymm3,%ymm3 + vpxor %ymm13,%ymm2,%ymm2 + vpxor %ymm14,%ymm3,%ymm3 + + decq %rax + jnz .Lselect_loop_avx2_w7 + + + vmovdqa 0(%rsi),%ymm5 + vmovdqa 32(%rsi),%ymm6 + + vpcmpeqd %ymm1,%ymm4,%ymm7 + + vpand %ymm7,%ymm5,%ymm5 + vpand %ymm7,%ymm6,%ymm6 + + vpxor %ymm5,%ymm2,%ymm2 + vpxor %ymm6,%ymm3,%ymm3 + + vmovdqu %ymm2,0(%rdi) + vmovdqu %ymm3,32(%rdi) + vzeroupper + .byte 0xf3,0xc3 +.cfi_endproc +.LSEH_end_ecp_nistz256_avx2_gather_w7: +.size ecp_nistz256_avx2_gather_w7,.-ecp_nistz256_avx2_gather_w7 +.type __ecp_nistz256_add_toq,@function +.align 32 +__ecp_nistz256_add_toq: +.cfi_startproc + xorq %r11,%r11 + addq 0(%rbx),%r12 + adcq 8(%rbx),%r13 + movq %r12,%rax + adcq 16(%rbx),%r8 + adcq 24(%rbx),%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __ecp_nistz256_add_toq,.-__ecp_nistz256_add_toq + +.type __ecp_nistz256_sub_fromq,@function +.align 32 +__ecp_nistz256_sub_fromq: +.cfi_startproc + subq 0(%rbx),%r12 + sbbq 8(%rbx),%r13 + movq %r12,%rax + sbbq 16(%rbx),%r8 + sbbq 24(%rbx),%r9 + movq %r13,%rbp + sbbq %r11,%r11 + + addq $-1,%r12 + movq %r8,%rcx + adcq %r14,%r13 + adcq $0,%r8 + movq %r9,%r10 + adcq %r15,%r9 + testq %r11,%r11 + + cmovzq %rax,%r12 + cmovzq %rbp,%r13 + movq %r12,0(%rdi) + cmovzq %rcx,%r8 + movq %r13,8(%rdi) + cmovzq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __ecp_nistz256_sub_fromq,.-__ecp_nistz256_sub_fromq + +.type __ecp_nistz256_subq,@function +.align 32 +__ecp_nistz256_subq: +.cfi_startproc + subq %r12,%rax + sbbq %r13,%rbp + movq %rax,%r12 + sbbq %r8,%rcx + sbbq %r9,%r10 + movq %rbp,%r13 + sbbq %r11,%r11 + + addq $-1,%rax + movq %rcx,%r8 + adcq %r14,%rbp + adcq $0,%rcx + movq %r10,%r9 + adcq %r15,%r10 + testq %r11,%r11 + + cmovnzq %rax,%r12 + cmovnzq %rbp,%r13 + cmovnzq %rcx,%r8 + cmovnzq %r10,%r9 + + .byte 0xf3,0xc3 +.cfi_endproc +.size __ecp_nistz256_subq,.-__ecp_nistz256_subq + +.type __ecp_nistz256_mul_by_2q,@function +.align 32 +__ecp_nistz256_mul_by_2q: +.cfi_startproc + xorq %r11,%r11 + addq %r12,%r12 + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __ecp_nistz256_mul_by_2q,.-__ecp_nistz256_mul_by_2q +.globl ecp_nistz256_point_double +.type ecp_nistz256_point_double,@function +.align 32 +ecp_nistz256_point_double: +.cfi_startproc + movl $0x80100,%ecx + andl OPENSSL_ia32cap_P+8(%rip),%ecx + cmpl $0x80100,%ecx + je .Lpoint_doublex + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $160+8,%rsp +.cfi_adjust_cfa_offset 32*5+8 +.Lpoint_doubleq_body: + +.Lpoint_double_shortcutq: + movdqu 0(%rsi),%xmm0 + movq %rsi,%rbx + movdqu 16(%rsi),%xmm1 + movq 32+0(%rsi),%r12 + movq 32+8(%rsi),%r13 + movq 32+16(%rsi),%r8 + movq 32+24(%rsi),%r9 + movq .Lpoly+8(%rip),%r14 + movq .Lpoly+24(%rip),%r15 + movdqa %xmm0,96(%rsp) + movdqa %xmm1,96+16(%rsp) + leaq 32(%rdi),%r10 + leaq 64(%rdi),%r11 +.byte 102,72,15,110,199 +.byte 102,73,15,110,202 +.byte 102,73,15,110,211 + + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_by_2q + + movq 64+0(%rsi),%rax + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + leaq 64-0(%rsi),%rsi + leaq 64(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 0+0(%rsp),%rax + movq 8+0(%rsp),%r14 + leaq 0+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 + leaq 0(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 32(%rbx),%rax + movq 64+0(%rbx),%r9 + movq 64+8(%rbx),%r10 + movq 64+16(%rbx),%r11 + movq 64+24(%rbx),%r12 + leaq 64-0(%rbx),%rsi + leaq 32(%rbx),%rbx +.byte 102,72,15,126,215 + call __ecp_nistz256_mul_montq + call __ecp_nistz256_mul_by_2q + + movq 96+0(%rsp),%r12 + movq 96+8(%rsp),%r13 + leaq 64(%rsp),%rbx + movq 96+16(%rsp),%r8 + movq 96+24(%rsp),%r9 + leaq 32(%rsp),%rdi + call __ecp_nistz256_add_toq + + movq 96+0(%rsp),%r12 + movq 96+8(%rsp),%r13 + leaq 64(%rsp),%rbx + movq 96+16(%rsp),%r8 + movq 96+24(%rsp),%r9 + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + movq 0+0(%rsp),%rax + movq 8+0(%rsp),%r14 + leaq 0+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 +.byte 102,72,15,126,207 + call __ecp_nistz256_sqr_montq + xorq %r9,%r9 + movq %r12,%rax + addq $-1,%r12 + movq %r13,%r10 + adcq %rsi,%r13 + movq %r14,%rcx + adcq $0,%r14 + movq %r15,%r8 + adcq %rbp,%r15 + adcq $0,%r9 + xorq %rsi,%rsi + testq $1,%rax + + cmovzq %rax,%r12 + cmovzq %r10,%r13 + cmovzq %rcx,%r14 + cmovzq %r8,%r15 + cmovzq %rsi,%r9 + + movq %r13,%rax + shrq $1,%r12 + shlq $63,%rax + movq %r14,%r10 + shrq $1,%r13 + orq %rax,%r12 + shlq $63,%r10 + movq %r15,%rcx + shrq $1,%r14 + orq %r10,%r13 + shlq $63,%rcx + movq %r12,0(%rdi) + shrq $1,%r15 + movq %r13,8(%rdi) + shlq $63,%r9 + orq %rcx,%r14 + orq %r9,%r15 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + movq 64(%rsp),%rax + leaq 64(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_by_2q + + leaq 32(%rsp),%rbx + leaq 32(%rsp),%rdi + call __ecp_nistz256_add_toq + + movq 96(%rsp),%rax + leaq 96(%rsp),%rbx + movq 0+0(%rsp),%r9 + movq 8+0(%rsp),%r10 + leaq 0+0(%rsp),%rsi + movq 16+0(%rsp),%r11 + movq 24+0(%rsp),%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_by_2q + + movq 0+32(%rsp),%rax + movq 8+32(%rsp),%r14 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r15 + movq 24+32(%rsp),%r8 +.byte 102,72,15,126,199 + call __ecp_nistz256_sqr_montq + + leaq 128(%rsp),%rbx + movq %r14,%r8 + movq %r15,%r9 + movq %rsi,%r14 + movq %rbp,%r15 + call __ecp_nistz256_sub_fromq + + movq 0+0(%rsp),%rax + movq 0+8(%rsp),%rbp + movq 0+16(%rsp),%rcx + movq 0+24(%rsp),%r10 + leaq 0(%rsp),%rdi + call __ecp_nistz256_subq + + movq 32(%rsp),%rax + leaq 32(%rsp),%rbx + movq %r12,%r14 + xorl %ecx,%ecx + movq %r12,0+0(%rsp) + movq %r13,%r10 + movq %r13,0+8(%rsp) + cmovzq %r8,%r11 + movq %r8,0+16(%rsp) + leaq 0-0(%rsp),%rsi + cmovzq %r9,%r12 + movq %r9,0+24(%rsp) + movq %r14,%r9 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montq + +.byte 102,72,15,126,203 +.byte 102,72,15,126,207 + call __ecp_nistz256_sub_fromq + + leaq 160+56(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbx +.cfi_restore %rbx + movq -8(%rsi),%rbp +.cfi_restore %rbp + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lpoint_doubleq_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_point_double,.-ecp_nistz256_point_double +.globl ecp_nistz256_point_add +.type ecp_nistz256_point_add,@function +.align 32 +ecp_nistz256_point_add: +.cfi_startproc + movl $0x80100,%ecx + andl OPENSSL_ia32cap_P+8(%rip),%ecx + cmpl $0x80100,%ecx + je .Lpoint_addx + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $576+8,%rsp +.cfi_adjust_cfa_offset 32*18+8 +.Lpoint_addq_body: + + movdqu 0(%rsi),%xmm0 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqu 64(%rsi),%xmm4 + movdqu 80(%rsi),%xmm5 + movq %rsi,%rbx + movq %rdx,%rsi + movdqa %xmm0,384(%rsp) + movdqa %xmm1,384+16(%rsp) + movdqa %xmm2,416(%rsp) + movdqa %xmm3,416+16(%rsp) + movdqa %xmm4,448(%rsp) + movdqa %xmm5,448+16(%rsp) + por %xmm4,%xmm5 + + movdqu 0(%rsi),%xmm0 + pshufd $0xb1,%xmm5,%xmm3 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + por %xmm3,%xmm5 + movdqu 48(%rsi),%xmm3 + movq 64+0(%rsi),%rax + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + movdqa %xmm0,480(%rsp) + pshufd $0x1e,%xmm5,%xmm4 + movdqa %xmm1,480+16(%rsp) + movdqu 64(%rsi),%xmm0 + movdqu 80(%rsi),%xmm1 + movdqa %xmm2,512(%rsp) + movdqa %xmm3,512+16(%rsp) + por %xmm4,%xmm5 + pxor %xmm4,%xmm4 + por %xmm0,%xmm1 +.byte 102,72,15,110,199 + + leaq 64-0(%rsi),%rsi + movq %rax,544+0(%rsp) + movq %r14,544+8(%rsp) + movq %r15,544+16(%rsp) + movq %r8,544+24(%rsp) + leaq 96(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + pcmpeqd %xmm4,%xmm5 + pshufd $0xb1,%xmm1,%xmm4 + por %xmm1,%xmm4 + pshufd $0,%xmm5,%xmm5 + pshufd $0x1e,%xmm4,%xmm3 + por %xmm3,%xmm4 + pxor %xmm3,%xmm3 + pcmpeqd %xmm3,%xmm4 + pshufd $0,%xmm4,%xmm4 + movq 64+0(%rbx),%rax + movq 64+8(%rbx),%r14 + movq 64+16(%rbx),%r15 + movq 64+24(%rbx),%r8 +.byte 102,72,15,110,203 + + leaq 64-0(%rbx),%rsi + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 544(%rsp),%rax + leaq 544(%rsp),%rbx + movq 0+96(%rsp),%r9 + movq 8+96(%rsp),%r10 + leaq 0+96(%rsp),%rsi + movq 16+96(%rsp),%r11 + movq 24+96(%rsp),%r12 + leaq 224(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 448(%rsp),%rax + leaq 448(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 416(%rsp),%rax + leaq 416(%rsp),%rbx + movq 0+224(%rsp),%r9 + movq 8+224(%rsp),%r10 + leaq 0+224(%rsp),%rsi + movq 16+224(%rsp),%r11 + movq 24+224(%rsp),%r12 + leaq 224(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 512(%rsp),%rax + leaq 512(%rsp),%rbx + movq 0+256(%rsp),%r9 + movq 8+256(%rsp),%r10 + leaq 0+256(%rsp),%rsi + movq 16+256(%rsp),%r11 + movq 24+256(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 224(%rsp),%rbx + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + orq %r13,%r12 + movdqa %xmm4,%xmm2 + orq %r8,%r12 + orq %r9,%r12 + por %xmm5,%xmm2 +.byte 102,73,15,110,220 + + movq 384(%rsp),%rax + leaq 384(%rsp),%rbx + movq 0+96(%rsp),%r9 + movq 8+96(%rsp),%r10 + leaq 0+96(%rsp),%rsi + movq 16+96(%rsp),%r11 + movq 24+96(%rsp),%r12 + leaq 160(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 480(%rsp),%rax + leaq 480(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 192(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 160(%rsp),%rbx + leaq 0(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + orq %r13,%r12 + orq %r8,%r12 + orq %r9,%r12 + +.byte 102,73,15,126,208 +.byte 102,73,15,126,217 + + orq %r8,%r12 + orq %r9,%r12 + + +.byte 0x3e + jnz .Ladd_proceedq + +.Ladd_doubleq: +.byte 102,72,15,126,206 +.byte 102,72,15,126,199 + addq $416,%rsp +.cfi_adjust_cfa_offset -416 + jmp .Lpoint_double_shortcutq +.cfi_adjust_cfa_offset 416 + +.align 32 +.Ladd_proceedq: + movq 0+64(%rsp),%rax + movq 8+64(%rsp),%r14 + leaq 0+64(%rsp),%rsi + movq 16+64(%rsp),%r15 + movq 24+64(%rsp),%r8 + leaq 96(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 448(%rsp),%rax + leaq 448(%rsp),%rbx + movq 0+0(%rsp),%r9 + movq 8+0(%rsp),%r10 + leaq 0+0(%rsp),%rsi + movq 16+0(%rsp),%r11 + movq 24+0(%rsp),%r12 + leaq 352(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 0+0(%rsp),%rax + movq 8+0(%rsp),%r14 + leaq 0+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 544(%rsp),%rax + leaq 544(%rsp),%rbx + movq 0+352(%rsp),%r9 + movq 8+352(%rsp),%r10 + leaq 0+352(%rsp),%rsi + movq 16+352(%rsp),%r11 + movq 24+352(%rsp),%r12 + leaq 352(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 0(%rsp),%rax + leaq 0(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 160(%rsp),%rax + leaq 160(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 192(%rsp),%rdi + call __ecp_nistz256_mul_montq + + + + + xorq %r11,%r11 + addq %r12,%r12 + leaq 96(%rsp),%rsi + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + movq 0(%rsi),%rax + cmovcq %rbp,%r13 + movq 8(%rsi),%rbp + cmovcq %rcx,%r8 + movq 16(%rsi),%rcx + cmovcq %r10,%r9 + movq 24(%rsi),%r10 + + call __ecp_nistz256_subq + + leaq 128(%rsp),%rbx + leaq 288(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + movq 192+0(%rsp),%rax + movq 192+8(%rsp),%rbp + movq 192+16(%rsp),%rcx + movq 192+24(%rsp),%r10 + leaq 320(%rsp),%rdi + + call __ecp_nistz256_subq + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + movq 128(%rsp),%rax + leaq 128(%rsp),%rbx + movq 0+224(%rsp),%r9 + movq 8+224(%rsp),%r10 + leaq 0+224(%rsp),%rsi + movq 16+224(%rsp),%r11 + movq 24+224(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 320(%rsp),%rax + leaq 320(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq 0+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 320(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 256(%rsp),%rbx + leaq 320(%rsp),%rdi + call __ecp_nistz256_sub_fromq + +.byte 102,72,15,126,199 + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 352(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 352+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 544(%rsp),%xmm2 + pand 544+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 448(%rsp),%xmm2 + pand 448+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,64(%rdi) + movdqu %xmm3,80(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 288(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 288+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 480(%rsp),%xmm2 + pand 480+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 384(%rsp),%xmm2 + pand 384+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 320(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 320+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 512(%rsp),%xmm2 + pand 512+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 416(%rsp),%xmm2 + pand 416+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + +.Ladd_doneq: + leaq 576+56(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbx +.cfi_restore %rbx + movq -8(%rsi),%rbp +.cfi_restore %rbp + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lpoint_addq_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_point_add,.-ecp_nistz256_point_add +.globl ecp_nistz256_point_add_affine +.type ecp_nistz256_point_add_affine,@function +.align 32 +ecp_nistz256_point_add_affine: +.cfi_startproc + movl $0x80100,%ecx + andl OPENSSL_ia32cap_P+8(%rip),%ecx + cmpl $0x80100,%ecx + je .Lpoint_add_affinex + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $480+8,%rsp +.cfi_adjust_cfa_offset 32*15+8 +.Ladd_affineq_body: + + movdqu 0(%rsi),%xmm0 + movq %rdx,%rbx + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqu 64(%rsi),%xmm4 + movdqu 80(%rsi),%xmm5 + movq 64+0(%rsi),%rax + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + movdqa %xmm0,320(%rsp) + movdqa %xmm1,320+16(%rsp) + movdqa %xmm2,352(%rsp) + movdqa %xmm3,352+16(%rsp) + movdqa %xmm4,384(%rsp) + movdqa %xmm5,384+16(%rsp) + por %xmm4,%xmm5 + + movdqu 0(%rbx),%xmm0 + pshufd $0xb1,%xmm5,%xmm3 + movdqu 16(%rbx),%xmm1 + movdqu 32(%rbx),%xmm2 + por %xmm3,%xmm5 + movdqu 48(%rbx),%xmm3 + movdqa %xmm0,416(%rsp) + pshufd $0x1e,%xmm5,%xmm4 + movdqa %xmm1,416+16(%rsp) + por %xmm0,%xmm1 +.byte 102,72,15,110,199 + movdqa %xmm2,448(%rsp) + movdqa %xmm3,448+16(%rsp) + por %xmm2,%xmm3 + por %xmm4,%xmm5 + pxor %xmm4,%xmm4 + por %xmm1,%xmm3 + + leaq 64-0(%rsi),%rsi + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + pcmpeqd %xmm4,%xmm5 + pshufd $0xb1,%xmm3,%xmm4 + movq 0(%rbx),%rax + + movq %r12,%r9 + por %xmm3,%xmm4 + pshufd $0,%xmm5,%xmm5 + pshufd $0x1e,%xmm4,%xmm3 + movq %r13,%r10 + por %xmm3,%xmm4 + pxor %xmm3,%xmm3 + movq %r14,%r11 + pcmpeqd %xmm3,%xmm4 + pshufd $0,%xmm4,%xmm4 + + leaq 32-0(%rsp),%rsi + movq %r15,%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 320(%rsp),%rbx + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + movq 384(%rsp),%rax + leaq 384(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 384(%rsp),%rax + leaq 384(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq 0+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 288(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 448(%rsp),%rax + leaq 448(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 352(%rsp),%rbx + leaq 96(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + movq 0+64(%rsp),%rax + movq 8+64(%rsp),%r14 + leaq 0+64(%rsp),%rsi + movq 16+64(%rsp),%r15 + movq 24+64(%rsp),%r8 + leaq 128(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 0+96(%rsp),%rax + movq 8+96(%rsp),%r14 + leaq 0+96(%rsp),%rsi + movq 16+96(%rsp),%r15 + movq 24+96(%rsp),%r8 + leaq 192(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 128(%rsp),%rax + leaq 128(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq 0+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 160(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 320(%rsp),%rax + leaq 320(%rsp),%rbx + movq 0+128(%rsp),%r9 + movq 8+128(%rsp),%r10 + leaq 0+128(%rsp),%rsi + movq 16+128(%rsp),%r11 + movq 24+128(%rsp),%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montq + + + + + xorq %r11,%r11 + addq %r12,%r12 + leaq 192(%rsp),%rsi + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + movq 0(%rsi),%rax + cmovcq %rbp,%r13 + movq 8(%rsi),%rbp + cmovcq %rcx,%r8 + movq 16(%rsi),%rcx + cmovcq %r10,%r9 + movq 24(%rsi),%r10 + + call __ecp_nistz256_subq + + leaq 160(%rsp),%rbx + leaq 224(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + movq 0+0(%rsp),%rax + movq 0+8(%rsp),%rbp + movq 0+16(%rsp),%rcx + movq 0+24(%rsp),%r10 + leaq 64(%rsp),%rdi + + call __ecp_nistz256_subq + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + movq 352(%rsp),%rax + leaq 352(%rsp),%rbx + movq 0+160(%rsp),%r9 + movq 8+160(%rsp),%r10 + leaq 0+160(%rsp),%rsi + movq 16+160(%rsp),%r11 + movq 24+160(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 96(%rsp),%rax + leaq 96(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq 0+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 64(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 32(%rsp),%rbx + leaq 256(%rsp),%rdi + call __ecp_nistz256_sub_fromq + +.byte 102,72,15,126,199 + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 288(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 288+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand .LONE_mont(%rip),%xmm2 + pand .LONE_mont+16(%rip),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 384(%rsp),%xmm2 + pand 384+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,64(%rdi) + movdqu %xmm3,80(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 224(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 224+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 416(%rsp),%xmm2 + pand 416+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 320(%rsp),%xmm2 + pand 320+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 256(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 256+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 448(%rsp),%xmm2 + pand 448+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 352(%rsp),%xmm2 + pand 352+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + + leaq 480+56(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbx +.cfi_restore %rbx + movq -8(%rsi),%rbp +.cfi_restore %rbp + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Ladd_affineq_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine +.type __ecp_nistz256_add_tox,@function +.align 32 +__ecp_nistz256_add_tox: +.cfi_startproc + xorq %r11,%r11 + adcq 0(%rbx),%r12 + adcq 8(%rbx),%r13 + movq %r12,%rax + adcq 16(%rbx),%r8 + adcq 24(%rbx),%r9 + movq %r13,%rbp + adcq $0,%r11 + + xorq %r10,%r10 + sbbq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __ecp_nistz256_add_tox,.-__ecp_nistz256_add_tox + +.type __ecp_nistz256_sub_fromx,@function +.align 32 +__ecp_nistz256_sub_fromx: +.cfi_startproc + xorq %r11,%r11 + sbbq 0(%rbx),%r12 + sbbq 8(%rbx),%r13 + movq %r12,%rax + sbbq 16(%rbx),%r8 + sbbq 24(%rbx),%r9 + movq %r13,%rbp + sbbq $0,%r11 + + xorq %r10,%r10 + adcq $-1,%r12 + movq %r8,%rcx + adcq %r14,%r13 + adcq $0,%r8 + movq %r9,%r10 + adcq %r15,%r9 + + btq $0,%r11 + cmovncq %rax,%r12 + cmovncq %rbp,%r13 + movq %r12,0(%rdi) + cmovncq %rcx,%r8 + movq %r13,8(%rdi) + cmovncq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __ecp_nistz256_sub_fromx,.-__ecp_nistz256_sub_fromx + +.type __ecp_nistz256_subx,@function +.align 32 +__ecp_nistz256_subx: +.cfi_startproc + xorq %r11,%r11 + sbbq %r12,%rax + sbbq %r13,%rbp + movq %rax,%r12 + sbbq %r8,%rcx + sbbq %r9,%r10 + movq %rbp,%r13 + sbbq $0,%r11 + + xorq %r9,%r9 + adcq $-1,%rax + movq %rcx,%r8 + adcq %r14,%rbp + adcq $0,%rcx + movq %r10,%r9 + adcq %r15,%r10 + + btq $0,%r11 + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + cmovcq %rcx,%r8 + cmovcq %r10,%r9 + + .byte 0xf3,0xc3 +.cfi_endproc +.size __ecp_nistz256_subx,.-__ecp_nistz256_subx + +.type __ecp_nistz256_mul_by_2x,@function +.align 32 +__ecp_nistz256_mul_by_2x: +.cfi_startproc + xorq %r11,%r11 + adcq %r12,%r12 + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + xorq %r10,%r10 + sbbq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size __ecp_nistz256_mul_by_2x,.-__ecp_nistz256_mul_by_2x +.type ecp_nistz256_point_doublex,@function +.align 32 +ecp_nistz256_point_doublex: +.cfi_startproc +.Lpoint_doublex: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $160+8,%rsp +.cfi_adjust_cfa_offset 32*5+8 +.Lpoint_doublex_body: + +.Lpoint_double_shortcutx: + movdqu 0(%rsi),%xmm0 + movq %rsi,%rbx + movdqu 16(%rsi),%xmm1 + movq 32+0(%rsi),%r12 + movq 32+8(%rsi),%r13 + movq 32+16(%rsi),%r8 + movq 32+24(%rsi),%r9 + movq .Lpoly+8(%rip),%r14 + movq .Lpoly+24(%rip),%r15 + movdqa %xmm0,96(%rsp) + movdqa %xmm1,96+16(%rsp) + leaq 32(%rdi),%r10 + leaq 64(%rdi),%r11 +.byte 102,72,15,110,199 +.byte 102,73,15,110,202 +.byte 102,73,15,110,211 + + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_by_2x + + movq 64+0(%rsi),%rdx + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + leaq 64-128(%rsi),%rsi + leaq 64(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 0+0(%rsp),%rdx + movq 8+0(%rsp),%r14 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 + leaq 0(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 32(%rbx),%rdx + movq 64+0(%rbx),%r9 + movq 64+8(%rbx),%r10 + movq 64+16(%rbx),%r11 + movq 64+24(%rbx),%r12 + leaq 64-128(%rbx),%rsi + leaq 32(%rbx),%rbx +.byte 102,72,15,126,215 + call __ecp_nistz256_mul_montx + call __ecp_nistz256_mul_by_2x + + movq 96+0(%rsp),%r12 + movq 96+8(%rsp),%r13 + leaq 64(%rsp),%rbx + movq 96+16(%rsp),%r8 + movq 96+24(%rsp),%r9 + leaq 32(%rsp),%rdi + call __ecp_nistz256_add_tox + + movq 96+0(%rsp),%r12 + movq 96+8(%rsp),%r13 + leaq 64(%rsp),%rbx + movq 96+16(%rsp),%r8 + movq 96+24(%rsp),%r9 + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 0+0(%rsp),%rdx + movq 8+0(%rsp),%r14 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 +.byte 102,72,15,126,207 + call __ecp_nistz256_sqr_montx + xorq %r9,%r9 + movq %r12,%rax + addq $-1,%r12 + movq %r13,%r10 + adcq %rsi,%r13 + movq %r14,%rcx + adcq $0,%r14 + movq %r15,%r8 + adcq %rbp,%r15 + adcq $0,%r9 + xorq %rsi,%rsi + testq $1,%rax + + cmovzq %rax,%r12 + cmovzq %r10,%r13 + cmovzq %rcx,%r14 + cmovzq %r8,%r15 + cmovzq %rsi,%r9 + + movq %r13,%rax + shrq $1,%r12 + shlq $63,%rax + movq %r14,%r10 + shrq $1,%r13 + orq %rax,%r12 + shlq $63,%r10 + movq %r15,%rcx + shrq $1,%r14 + orq %r10,%r13 + shlq $63,%rcx + movq %r12,0(%rdi) + shrq $1,%r15 + movq %r13,8(%rdi) + shlq $63,%r9 + orq %rcx,%r14 + orq %r9,%r15 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + movq 64(%rsp),%rdx + leaq 64(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_by_2x + + leaq 32(%rsp),%rbx + leaq 32(%rsp),%rdi + call __ecp_nistz256_add_tox + + movq 96(%rsp),%rdx + leaq 96(%rsp),%rbx + movq 0+0(%rsp),%r9 + movq 8+0(%rsp),%r10 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r11 + movq 24+0(%rsp),%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_by_2x + + movq 0+32(%rsp),%rdx + movq 8+32(%rsp),%r14 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r15 + movq 24+32(%rsp),%r8 +.byte 102,72,15,126,199 + call __ecp_nistz256_sqr_montx + + leaq 128(%rsp),%rbx + movq %r14,%r8 + movq %r15,%r9 + movq %rsi,%r14 + movq %rbp,%r15 + call __ecp_nistz256_sub_fromx + + movq 0+0(%rsp),%rax + movq 0+8(%rsp),%rbp + movq 0+16(%rsp),%rcx + movq 0+24(%rsp),%r10 + leaq 0(%rsp),%rdi + call __ecp_nistz256_subx + + movq 32(%rsp),%rdx + leaq 32(%rsp),%rbx + movq %r12,%r14 + xorl %ecx,%ecx + movq %r12,0+0(%rsp) + movq %r13,%r10 + movq %r13,0+8(%rsp) + cmovzq %r8,%r11 + movq %r8,0+16(%rsp) + leaq 0-128(%rsp),%rsi + cmovzq %r9,%r12 + movq %r9,0+24(%rsp) + movq %r14,%r9 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + +.byte 102,72,15,126,203 +.byte 102,72,15,126,207 + call __ecp_nistz256_sub_fromx + + leaq 160+56(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbx +.cfi_restore %rbx + movq -8(%rsi),%rbp +.cfi_restore %rbp + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lpoint_doublex_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_point_doublex,.-ecp_nistz256_point_doublex +.type ecp_nistz256_point_addx,@function +.align 32 +ecp_nistz256_point_addx: +.cfi_startproc +.Lpoint_addx: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $576+8,%rsp +.cfi_adjust_cfa_offset 32*18+8 +.Lpoint_addx_body: + + movdqu 0(%rsi),%xmm0 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqu 64(%rsi),%xmm4 + movdqu 80(%rsi),%xmm5 + movq %rsi,%rbx + movq %rdx,%rsi + movdqa %xmm0,384(%rsp) + movdqa %xmm1,384+16(%rsp) + movdqa %xmm2,416(%rsp) + movdqa %xmm3,416+16(%rsp) + movdqa %xmm4,448(%rsp) + movdqa %xmm5,448+16(%rsp) + por %xmm4,%xmm5 + + movdqu 0(%rsi),%xmm0 + pshufd $0xb1,%xmm5,%xmm3 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + por %xmm3,%xmm5 + movdqu 48(%rsi),%xmm3 + movq 64+0(%rsi),%rdx + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + movdqa %xmm0,480(%rsp) + pshufd $0x1e,%xmm5,%xmm4 + movdqa %xmm1,480+16(%rsp) + movdqu 64(%rsi),%xmm0 + movdqu 80(%rsi),%xmm1 + movdqa %xmm2,512(%rsp) + movdqa %xmm3,512+16(%rsp) + por %xmm4,%xmm5 + pxor %xmm4,%xmm4 + por %xmm0,%xmm1 +.byte 102,72,15,110,199 + + leaq 64-128(%rsi),%rsi + movq %rdx,544+0(%rsp) + movq %r14,544+8(%rsp) + movq %r15,544+16(%rsp) + movq %r8,544+24(%rsp) + leaq 96(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + pcmpeqd %xmm4,%xmm5 + pshufd $0xb1,%xmm1,%xmm4 + por %xmm1,%xmm4 + pshufd $0,%xmm5,%xmm5 + pshufd $0x1e,%xmm4,%xmm3 + por %xmm3,%xmm4 + pxor %xmm3,%xmm3 + pcmpeqd %xmm3,%xmm4 + pshufd $0,%xmm4,%xmm4 + movq 64+0(%rbx),%rdx + movq 64+8(%rbx),%r14 + movq 64+16(%rbx),%r15 + movq 64+24(%rbx),%r8 +.byte 102,72,15,110,203 + + leaq 64-128(%rbx),%rsi + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 544(%rsp),%rdx + leaq 544(%rsp),%rbx + movq 0+96(%rsp),%r9 + movq 8+96(%rsp),%r10 + leaq -128+96(%rsp),%rsi + movq 16+96(%rsp),%r11 + movq 24+96(%rsp),%r12 + leaq 224(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 448(%rsp),%rdx + leaq 448(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 416(%rsp),%rdx + leaq 416(%rsp),%rbx + movq 0+224(%rsp),%r9 + movq 8+224(%rsp),%r10 + leaq -128+224(%rsp),%rsi + movq 16+224(%rsp),%r11 + movq 24+224(%rsp),%r12 + leaq 224(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 512(%rsp),%rdx + leaq 512(%rsp),%rbx + movq 0+256(%rsp),%r9 + movq 8+256(%rsp),%r10 + leaq -128+256(%rsp),%rsi + movq 16+256(%rsp),%r11 + movq 24+256(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 224(%rsp),%rbx + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + orq %r13,%r12 + movdqa %xmm4,%xmm2 + orq %r8,%r12 + orq %r9,%r12 + por %xmm5,%xmm2 +.byte 102,73,15,110,220 + + movq 384(%rsp),%rdx + leaq 384(%rsp),%rbx + movq 0+96(%rsp),%r9 + movq 8+96(%rsp),%r10 + leaq -128+96(%rsp),%rsi + movq 16+96(%rsp),%r11 + movq 24+96(%rsp),%r12 + leaq 160(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 480(%rsp),%rdx + leaq 480(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 192(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 160(%rsp),%rbx + leaq 0(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + orq %r13,%r12 + orq %r8,%r12 + orq %r9,%r12 + +.byte 102,73,15,126,208 +.byte 102,73,15,126,217 + + orq %r8,%r12 + orq %r9,%r12 + + +.byte 0x3e + jnz .Ladd_proceedx + +.Ladd_doublex: +.byte 102,72,15,126,206 +.byte 102,72,15,126,199 + addq $416,%rsp +.cfi_adjust_cfa_offset -416 + jmp .Lpoint_double_shortcutx +.cfi_adjust_cfa_offset 416 + +.align 32 +.Ladd_proceedx: + movq 0+64(%rsp),%rdx + movq 8+64(%rsp),%r14 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r15 + movq 24+64(%rsp),%r8 + leaq 96(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 448(%rsp),%rdx + leaq 448(%rsp),%rbx + movq 0+0(%rsp),%r9 + movq 8+0(%rsp),%r10 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r11 + movq 24+0(%rsp),%r12 + leaq 352(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 0+0(%rsp),%rdx + movq 8+0(%rsp),%r14 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 544(%rsp),%rdx + leaq 544(%rsp),%rbx + movq 0+352(%rsp),%r9 + movq 8+352(%rsp),%r10 + leaq -128+352(%rsp),%rsi + movq 16+352(%rsp),%r11 + movq 24+352(%rsp),%r12 + leaq 352(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 0(%rsp),%rdx + leaq 0(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 160(%rsp),%rdx + leaq 160(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 192(%rsp),%rdi + call __ecp_nistz256_mul_montx + + + + + xorq %r11,%r11 + addq %r12,%r12 + leaq 96(%rsp),%rsi + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + movq 0(%rsi),%rax + cmovcq %rbp,%r13 + movq 8(%rsi),%rbp + cmovcq %rcx,%r8 + movq 16(%rsi),%rcx + cmovcq %r10,%r9 + movq 24(%rsi),%r10 + + call __ecp_nistz256_subx + + leaq 128(%rsp),%rbx + leaq 288(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 192+0(%rsp),%rax + movq 192+8(%rsp),%rbp + movq 192+16(%rsp),%rcx + movq 192+24(%rsp),%r10 + leaq 320(%rsp),%rdi + + call __ecp_nistz256_subx + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + movq 128(%rsp),%rdx + leaq 128(%rsp),%rbx + movq 0+224(%rsp),%r9 + movq 8+224(%rsp),%r10 + leaq -128+224(%rsp),%rsi + movq 16+224(%rsp),%r11 + movq 24+224(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 320(%rsp),%rdx + leaq 320(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 320(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 256(%rsp),%rbx + leaq 320(%rsp),%rdi + call __ecp_nistz256_sub_fromx + +.byte 102,72,15,126,199 + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 352(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 352+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 544(%rsp),%xmm2 + pand 544+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 448(%rsp),%xmm2 + pand 448+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,64(%rdi) + movdqu %xmm3,80(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 288(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 288+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 480(%rsp),%xmm2 + pand 480+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 384(%rsp),%xmm2 + pand 384+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 320(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 320+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 512(%rsp),%xmm2 + pand 512+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 416(%rsp),%xmm2 + pand 416+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + +.Ladd_donex: + leaq 576+56(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbx +.cfi_restore %rbx + movq -8(%rsi),%rbp +.cfi_restore %rbp + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lpoint_addx_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_point_addx,.-ecp_nistz256_point_addx +.type ecp_nistz256_point_add_affinex,@function +.align 32 +ecp_nistz256_point_add_affinex: +.cfi_startproc +.Lpoint_add_affinex: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $480+8,%rsp +.cfi_adjust_cfa_offset 32*15+8 +.Ladd_affinex_body: + + movdqu 0(%rsi),%xmm0 + movq %rdx,%rbx + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqu 64(%rsi),%xmm4 + movdqu 80(%rsi),%xmm5 + movq 64+0(%rsi),%rdx + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + movdqa %xmm0,320(%rsp) + movdqa %xmm1,320+16(%rsp) + movdqa %xmm2,352(%rsp) + movdqa %xmm3,352+16(%rsp) + movdqa %xmm4,384(%rsp) + movdqa %xmm5,384+16(%rsp) + por %xmm4,%xmm5 + + movdqu 0(%rbx),%xmm0 + pshufd $0xb1,%xmm5,%xmm3 + movdqu 16(%rbx),%xmm1 + movdqu 32(%rbx),%xmm2 + por %xmm3,%xmm5 + movdqu 48(%rbx),%xmm3 + movdqa %xmm0,416(%rsp) + pshufd $0x1e,%xmm5,%xmm4 + movdqa %xmm1,416+16(%rsp) + por %xmm0,%xmm1 +.byte 102,72,15,110,199 + movdqa %xmm2,448(%rsp) + movdqa %xmm3,448+16(%rsp) + por %xmm2,%xmm3 + por %xmm4,%xmm5 + pxor %xmm4,%xmm4 + por %xmm1,%xmm3 + + leaq 64-128(%rsi),%rsi + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + pcmpeqd %xmm4,%xmm5 + pshufd $0xb1,%xmm3,%xmm4 + movq 0(%rbx),%rdx + + movq %r12,%r9 + por %xmm3,%xmm4 + pshufd $0,%xmm5,%xmm5 + pshufd $0x1e,%xmm4,%xmm3 + movq %r13,%r10 + por %xmm3,%xmm4 + pxor %xmm3,%xmm3 + movq %r14,%r11 + pcmpeqd %xmm3,%xmm4 + pshufd $0,%xmm4,%xmm4 + + leaq 32-128(%rsp),%rsi + movq %r15,%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 320(%rsp),%rbx + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 384(%rsp),%rdx + leaq 384(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 384(%rsp),%rdx + leaq 384(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 288(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 448(%rsp),%rdx + leaq 448(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 352(%rsp),%rbx + leaq 96(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 0+64(%rsp),%rdx + movq 8+64(%rsp),%r14 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r15 + movq 24+64(%rsp),%r8 + leaq 128(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 0+96(%rsp),%rdx + movq 8+96(%rsp),%r14 + leaq -128+96(%rsp),%rsi + movq 16+96(%rsp),%r15 + movq 24+96(%rsp),%r8 + leaq 192(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 128(%rsp),%rdx + leaq 128(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 160(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 320(%rsp),%rdx + leaq 320(%rsp),%rbx + movq 0+128(%rsp),%r9 + movq 8+128(%rsp),%r10 + leaq -128+128(%rsp),%rsi + movq 16+128(%rsp),%r11 + movq 24+128(%rsp),%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + + + + + xorq %r11,%r11 + addq %r12,%r12 + leaq 192(%rsp),%rsi + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + movq 0(%rsi),%rax + cmovcq %rbp,%r13 + movq 8(%rsi),%rbp + cmovcq %rcx,%r8 + movq 16(%rsi),%rcx + cmovcq %r10,%r9 + movq 24(%rsi),%r10 + + call __ecp_nistz256_subx + + leaq 160(%rsp),%rbx + leaq 224(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 0+0(%rsp),%rax + movq 0+8(%rsp),%rbp + movq 0+16(%rsp),%rcx + movq 0+24(%rsp),%r10 + leaq 64(%rsp),%rdi + + call __ecp_nistz256_subx + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + movq 352(%rsp),%rdx + leaq 352(%rsp),%rbx + movq 0+160(%rsp),%r9 + movq 8+160(%rsp),%r10 + leaq -128+160(%rsp),%rsi + movq 16+160(%rsp),%r11 + movq 24+160(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 96(%rsp),%rdx + leaq 96(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 64(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 32(%rsp),%rbx + leaq 256(%rsp),%rdi + call __ecp_nistz256_sub_fromx + +.byte 102,72,15,126,199 + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 288(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 288+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand .LONE_mont(%rip),%xmm2 + pand .LONE_mont+16(%rip),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 384(%rsp),%xmm2 + pand 384+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,64(%rdi) + movdqu %xmm3,80(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 224(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 224+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 416(%rsp),%xmm2 + pand 416+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 320(%rsp),%xmm2 + pand 320+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 256(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 256+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 448(%rsp),%xmm2 + pand 448+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 352(%rsp),%xmm2 + pand 352+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + + leaq 480+56(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbx +.cfi_restore %rbx + movq -8(%rsi),%rbp +.cfi_restore %rbp + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Ladd_affinex_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_point_add_affinex,.-ecp_nistz256_point_add_affinex diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/ec/x25519-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/ec/x25519-x86_64.s new file mode 100644 index 0000000..8fd319c --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/ec/x25519-x86_64.s @@ -0,0 +1,802 @@ +.text + +.globl x25519_fe51_mul +.type x25519_fe51_mul,@function +.align 32 +x25519_fe51_mul: +.cfi_startproc + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + leaq -40(%rsp),%rsp +.cfi_adjust_cfa_offset 40 +.Lfe51_mul_body: + + movq 0(%rsi),%rax + movq 0(%rdx),%r11 + movq 8(%rdx),%r12 + movq 16(%rdx),%r13 + movq 24(%rdx),%rbp + movq 32(%rdx),%r14 + + movq %rdi,32(%rsp) + movq %rax,%rdi + mulq %r11 + movq %r11,0(%rsp) + movq %rax,%rbx + movq %rdi,%rax + movq %rdx,%rcx + mulq %r12 + movq %r12,8(%rsp) + movq %rax,%r8 + movq %rdi,%rax + leaq (%r14,%r14,8),%r15 + movq %rdx,%r9 + mulq %r13 + movq %r13,16(%rsp) + movq %rax,%r10 + movq %rdi,%rax + leaq (%r14,%r15,2),%rdi + movq %rdx,%r11 + mulq %rbp + movq %rax,%r12 + movq 0(%rsi),%rax + movq %rdx,%r13 + mulq %r14 + movq %rax,%r14 + movq 8(%rsi),%rax + movq %rdx,%r15 + + mulq %rdi + addq %rax,%rbx + movq 16(%rsi),%rax + adcq %rdx,%rcx + mulq %rdi + addq %rax,%r8 + movq 24(%rsi),%rax + adcq %rdx,%r9 + mulq %rdi + addq %rax,%r10 + movq 32(%rsi),%rax + adcq %rdx,%r11 + mulq %rdi + imulq $19,%rbp,%rdi + addq %rax,%r12 + movq 8(%rsi),%rax + adcq %rdx,%r13 + mulq %rbp + movq 16(%rsp),%rbp + addq %rax,%r14 + movq 16(%rsi),%rax + adcq %rdx,%r15 + + mulq %rdi + addq %rax,%rbx + movq 24(%rsi),%rax + adcq %rdx,%rcx + mulq %rdi + addq %rax,%r8 + movq 32(%rsi),%rax + adcq %rdx,%r9 + mulq %rdi + imulq $19,%rbp,%rdi + addq %rax,%r10 + movq 8(%rsi),%rax + adcq %rdx,%r11 + mulq %rbp + addq %rax,%r12 + movq 16(%rsi),%rax + adcq %rdx,%r13 + mulq %rbp + movq 8(%rsp),%rbp + addq %rax,%r14 + movq 24(%rsi),%rax + adcq %rdx,%r15 + + mulq %rdi + addq %rax,%rbx + movq 32(%rsi),%rax + adcq %rdx,%rcx + mulq %rdi + addq %rax,%r8 + movq 8(%rsi),%rax + adcq %rdx,%r9 + mulq %rbp + imulq $19,%rbp,%rdi + addq %rax,%r10 + movq 16(%rsi),%rax + adcq %rdx,%r11 + mulq %rbp + addq %rax,%r12 + movq 24(%rsi),%rax + adcq %rdx,%r13 + mulq %rbp + movq 0(%rsp),%rbp + addq %rax,%r14 + movq 32(%rsi),%rax + adcq %rdx,%r15 + + mulq %rdi + addq %rax,%rbx + movq 8(%rsi),%rax + adcq %rdx,%rcx + mulq %rbp + addq %rax,%r8 + movq 16(%rsi),%rax + adcq %rdx,%r9 + mulq %rbp + addq %rax,%r10 + movq 24(%rsi),%rax + adcq %rdx,%r11 + mulq %rbp + addq %rax,%r12 + movq 32(%rsi),%rax + adcq %rdx,%r13 + mulq %rbp + addq %rax,%r14 + adcq %rdx,%r15 + + movq 32(%rsp),%rdi + jmp .Lreduce51 +.Lfe51_mul_epilogue: +.cfi_endproc +.size x25519_fe51_mul,.-x25519_fe51_mul + +.globl x25519_fe51_sqr +.type x25519_fe51_sqr,@function +.align 32 +x25519_fe51_sqr: +.cfi_startproc + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + leaq -40(%rsp),%rsp +.cfi_adjust_cfa_offset 40 +.Lfe51_sqr_body: + + movq 0(%rsi),%rax + movq 16(%rsi),%r15 + movq 32(%rsi),%rbp + + movq %rdi,32(%rsp) + leaq (%rax,%rax,1),%r14 + mulq %rax + movq %rax,%rbx + movq 8(%rsi),%rax + movq %rdx,%rcx + mulq %r14 + movq %rax,%r8 + movq %r15,%rax + movq %r15,0(%rsp) + movq %rdx,%r9 + mulq %r14 + movq %rax,%r10 + movq 24(%rsi),%rax + movq %rdx,%r11 + imulq $19,%rbp,%rdi + mulq %r14 + movq %rax,%r12 + movq %rbp,%rax + movq %rdx,%r13 + mulq %r14 + movq %rax,%r14 + movq %rbp,%rax + movq %rdx,%r15 + + mulq %rdi + addq %rax,%r12 + movq 8(%rsi),%rax + adcq %rdx,%r13 + + movq 24(%rsi),%rsi + leaq (%rax,%rax,1),%rbp + mulq %rax + addq %rax,%r10 + movq 0(%rsp),%rax + adcq %rdx,%r11 + mulq %rbp + addq %rax,%r12 + movq %rbp,%rax + adcq %rdx,%r13 + mulq %rsi + addq %rax,%r14 + movq %rbp,%rax + adcq %rdx,%r15 + imulq $19,%rsi,%rbp + mulq %rdi + addq %rax,%rbx + leaq (%rsi,%rsi,1),%rax + adcq %rdx,%rcx + + mulq %rdi + addq %rax,%r10 + movq %rsi,%rax + adcq %rdx,%r11 + mulq %rbp + addq %rax,%r8 + movq 0(%rsp),%rax + adcq %rdx,%r9 + + leaq (%rax,%rax,1),%rsi + mulq %rax + addq %rax,%r14 + movq %rbp,%rax + adcq %rdx,%r15 + mulq %rsi + addq %rax,%rbx + movq %rsi,%rax + adcq %rdx,%rcx + mulq %rdi + addq %rax,%r8 + adcq %rdx,%r9 + + movq 32(%rsp),%rdi + jmp .Lreduce51 + +.align 32 +.Lreduce51: + movq $0x7ffffffffffff,%rbp + + movq %r10,%rdx + shrq $51,%r10 + shlq $13,%r11 + andq %rbp,%rdx + orq %r10,%r11 + addq %r11,%r12 + adcq $0,%r13 + + movq %rbx,%rax + shrq $51,%rbx + shlq $13,%rcx + andq %rbp,%rax + orq %rbx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + + movq %r12,%rbx + shrq $51,%r12 + shlq $13,%r13 + andq %rbp,%rbx + orq %r12,%r13 + addq %r13,%r14 + adcq $0,%r15 + + movq %r8,%rcx + shrq $51,%r8 + shlq $13,%r9 + andq %rbp,%rcx + orq %r8,%r9 + addq %r9,%rdx + + movq %r14,%r10 + shrq $51,%r14 + shlq $13,%r15 + andq %rbp,%r10 + orq %r14,%r15 + + leaq (%r15,%r15,8),%r14 + leaq (%r15,%r14,2),%r15 + addq %r15,%rax + + movq %rdx,%r8 + andq %rbp,%rdx + shrq $51,%r8 + addq %r8,%rbx + + movq %rax,%r9 + andq %rbp,%rax + shrq $51,%r9 + addq %r9,%rcx + + movq %rax,0(%rdi) + movq %rcx,8(%rdi) + movq %rdx,16(%rdi) + movq %rbx,24(%rdi) + movq %r10,32(%rdi) + + movq 40(%rsp),%r15 +.cfi_restore %r15 + movq 48(%rsp),%r14 +.cfi_restore %r14 + movq 56(%rsp),%r13 +.cfi_restore %r13 + movq 64(%rsp),%r12 +.cfi_restore %r12 + movq 72(%rsp),%rbx +.cfi_restore %rbx + movq 80(%rsp),%rbp +.cfi_restore %rbp + leaq 88(%rsp),%rsp +.cfi_adjust_cfa_offset 88 +.Lfe51_sqr_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size x25519_fe51_sqr,.-x25519_fe51_sqr + +.globl x25519_fe51_mul121666 +.type x25519_fe51_mul121666,@function +.align 32 +x25519_fe51_mul121666: +.cfi_startproc + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + leaq -40(%rsp),%rsp +.cfi_adjust_cfa_offset 40 +.Lfe51_mul121666_body: + movl $121666,%eax + + mulq 0(%rsi) + movq %rax,%rbx + movl $121666,%eax + movq %rdx,%rcx + mulq 8(%rsi) + movq %rax,%r8 + movl $121666,%eax + movq %rdx,%r9 + mulq 16(%rsi) + movq %rax,%r10 + movl $121666,%eax + movq %rdx,%r11 + mulq 24(%rsi) + movq %rax,%r12 + movl $121666,%eax + movq %rdx,%r13 + mulq 32(%rsi) + movq %rax,%r14 + movq %rdx,%r15 + + jmp .Lreduce51 +.Lfe51_mul121666_epilogue: +.cfi_endproc +.size x25519_fe51_mul121666,.-x25519_fe51_mul121666 + +.globl x25519_fe64_eligible +.type x25519_fe64_eligible,@function +.align 32 +x25519_fe64_eligible: +.cfi_startproc + movl OPENSSL_ia32cap_P+8(%rip),%ecx + xorl %eax,%eax + andl $0x80100,%ecx + cmpl $0x80100,%ecx + cmovel %ecx,%eax + .byte 0xf3,0xc3 +.cfi_endproc +.size x25519_fe64_eligible,.-x25519_fe64_eligible + +.globl x25519_fe64_mul +.type x25519_fe64_mul,@function +.align 32 +x25519_fe64_mul: +.cfi_startproc + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + pushq %rdi +.cfi_adjust_cfa_offset 8 +.cfi_offset %rdi,-64 + leaq -16(%rsp),%rsp +.cfi_adjust_cfa_offset 16 +.Lfe64_mul_body: + + movq %rdx,%rax + movq 0(%rdx),%rbp + movq 0(%rsi),%rdx + movq 8(%rax),%rcx + movq 16(%rax),%r14 + movq 24(%rax),%r15 + + mulxq %rbp,%r8,%rax + xorl %edi,%edi + mulxq %rcx,%r9,%rbx + adcxq %rax,%r9 + mulxq %r14,%r10,%rax + adcxq %rbx,%r10 + mulxq %r15,%r11,%r12 + movq 8(%rsi),%rdx + adcxq %rax,%r11 + movq %r14,(%rsp) + adcxq %rdi,%r12 + + mulxq %rbp,%rax,%rbx + adoxq %rax,%r9 + adcxq %rbx,%r10 + mulxq %rcx,%rax,%rbx + adoxq %rax,%r10 + adcxq %rbx,%r11 + mulxq %r14,%rax,%rbx + adoxq %rax,%r11 + adcxq %rbx,%r12 + mulxq %r15,%rax,%r13 + movq 16(%rsi),%rdx + adoxq %rax,%r12 + adcxq %rdi,%r13 + adoxq %rdi,%r13 + + mulxq %rbp,%rax,%rbx + adcxq %rax,%r10 + adoxq %rbx,%r11 + mulxq %rcx,%rax,%rbx + adcxq %rax,%r11 + adoxq %rbx,%r12 + mulxq %r14,%rax,%rbx + adcxq %rax,%r12 + adoxq %rbx,%r13 + mulxq %r15,%rax,%r14 + movq 24(%rsi),%rdx + adcxq %rax,%r13 + adoxq %rdi,%r14 + adcxq %rdi,%r14 + + mulxq %rbp,%rax,%rbx + adoxq %rax,%r11 + adcxq %rbx,%r12 + mulxq %rcx,%rax,%rbx + adoxq %rax,%r12 + adcxq %rbx,%r13 + mulxq (%rsp),%rax,%rbx + adoxq %rax,%r13 + adcxq %rbx,%r14 + mulxq %r15,%rax,%r15 + movl $38,%edx + adoxq %rax,%r14 + adcxq %rdi,%r15 + adoxq %rdi,%r15 + + jmp .Lreduce64 +.Lfe64_mul_epilogue: +.cfi_endproc +.size x25519_fe64_mul,.-x25519_fe64_mul + +.globl x25519_fe64_sqr +.type x25519_fe64_sqr,@function +.align 32 +x25519_fe64_sqr: +.cfi_startproc + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + pushq %rdi +.cfi_adjust_cfa_offset 8 +.cfi_offset %rdi,-64 + leaq -16(%rsp),%rsp +.cfi_adjust_cfa_offset 16 +.Lfe64_sqr_body: + + movq 0(%rsi),%rdx + movq 8(%rsi),%rcx + movq 16(%rsi),%rbp + movq 24(%rsi),%rsi + + + mulxq %rdx,%r8,%r15 + mulxq %rcx,%r9,%rax + xorl %edi,%edi + mulxq %rbp,%r10,%rbx + adcxq %rax,%r10 + mulxq %rsi,%r11,%r12 + movq %rcx,%rdx + adcxq %rbx,%r11 + adcxq %rdi,%r12 + + + mulxq %rbp,%rax,%rbx + adoxq %rax,%r11 + adcxq %rbx,%r12 + mulxq %rsi,%rax,%r13 + movq %rbp,%rdx + adoxq %rax,%r12 + adcxq %rdi,%r13 + + + mulxq %rsi,%rax,%r14 + movq %rcx,%rdx + adoxq %rax,%r13 + adcxq %rdi,%r14 + adoxq %rdi,%r14 + + adcxq %r9,%r9 + adoxq %r15,%r9 + adcxq %r10,%r10 + mulxq %rdx,%rax,%rbx + movq %rbp,%rdx + adcxq %r11,%r11 + adoxq %rax,%r10 + adcxq %r12,%r12 + adoxq %rbx,%r11 + mulxq %rdx,%rax,%rbx + movq %rsi,%rdx + adcxq %r13,%r13 + adoxq %rax,%r12 + adcxq %r14,%r14 + adoxq %rbx,%r13 + mulxq %rdx,%rax,%r15 + movl $38,%edx + adoxq %rax,%r14 + adcxq %rdi,%r15 + adoxq %rdi,%r15 + jmp .Lreduce64 + +.align 32 +.Lreduce64: + mulxq %r12,%rax,%rbx + adcxq %rax,%r8 + adoxq %rbx,%r9 + mulxq %r13,%rax,%rbx + adcxq %rax,%r9 + adoxq %rbx,%r10 + mulxq %r14,%rax,%rbx + adcxq %rax,%r10 + adoxq %rbx,%r11 + mulxq %r15,%rax,%r12 + adcxq %rax,%r11 + adoxq %rdi,%r12 + adcxq %rdi,%r12 + + movq 16(%rsp),%rdi + imulq %rdx,%r12 + + addq %r12,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + sbbq %rax,%rax + andq $38,%rax + + addq %rax,%r8 + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r8,0(%rdi) + + movq 24(%rsp),%r15 +.cfi_restore %r15 + movq 32(%rsp),%r14 +.cfi_restore %r14 + movq 40(%rsp),%r13 +.cfi_restore %r13 + movq 48(%rsp),%r12 +.cfi_restore %r12 + movq 56(%rsp),%rbx +.cfi_restore %rbx + movq 64(%rsp),%rbp +.cfi_restore %rbp + leaq 72(%rsp),%rsp +.cfi_adjust_cfa_offset 88 +.Lfe64_sqr_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size x25519_fe64_sqr,.-x25519_fe64_sqr + +.globl x25519_fe64_mul121666 +.type x25519_fe64_mul121666,@function +.align 32 +x25519_fe64_mul121666: +.Lfe64_mul121666_body: +.cfi_startproc + movl $121666,%edx + mulxq 0(%rsi),%r8,%rcx + mulxq 8(%rsi),%r9,%rax + addq %rcx,%r9 + mulxq 16(%rsi),%r10,%rcx + adcq %rax,%r10 + mulxq 24(%rsi),%r11,%rax + adcq %rcx,%r11 + adcq $0,%rax + + imulq $38,%rax,%rax + + addq %rax,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + sbbq %rax,%rax + andq $38,%rax + + addq %rax,%r8 + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r8,0(%rdi) + +.Lfe64_mul121666_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size x25519_fe64_mul121666,.-x25519_fe64_mul121666 + +.globl x25519_fe64_add +.type x25519_fe64_add,@function +.align 32 +x25519_fe64_add: +.Lfe64_add_body: +.cfi_startproc + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + addq 0(%rdx),%r8 + adcq 8(%rdx),%r9 + adcq 16(%rdx),%r10 + adcq 24(%rdx),%r11 + + sbbq %rax,%rax + andq $38,%rax + + addq %rax,%r8 + adcq $0,%r9 + adcq $0,%r10 + movq %r9,8(%rdi) + adcq $0,%r11 + movq %r10,16(%rdi) + sbbq %rax,%rax + movq %r11,24(%rdi) + andq $38,%rax + + addq %rax,%r8 + movq %r8,0(%rdi) + +.Lfe64_add_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size x25519_fe64_add,.-x25519_fe64_add + +.globl x25519_fe64_sub +.type x25519_fe64_sub,@function +.align 32 +x25519_fe64_sub: +.Lfe64_sub_body: +.cfi_startproc + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + subq 0(%rdx),%r8 + sbbq 8(%rdx),%r9 + sbbq 16(%rdx),%r10 + sbbq 24(%rdx),%r11 + + sbbq %rax,%rax + andq $38,%rax + + subq %rax,%r8 + sbbq $0,%r9 + sbbq $0,%r10 + movq %r9,8(%rdi) + sbbq $0,%r11 + movq %r10,16(%rdi) + sbbq %rax,%rax + movq %r11,24(%rdi) + andq $38,%rax + + subq %rax,%r8 + movq %r8,0(%rdi) + +.Lfe64_sub_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size x25519_fe64_sub,.-x25519_fe64_sub + +.globl x25519_fe64_tobytes +.type x25519_fe64_tobytes,@function +.align 32 +x25519_fe64_tobytes: +.Lfe64_to_body: +.cfi_startproc + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + + leaq (%r11,%r11,1),%rax + sarq $63,%r11 + shrq $1,%rax + andq $19,%r11 + addq $19,%r11 + + addq %r11,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%rax + + leaq (%rax,%rax,1),%r11 + sarq $63,%rax + shrq $1,%r11 + notq %rax + andq $19,%rax + + subq %rax,%r8 + sbbq $0,%r9 + sbbq $0,%r10 + sbbq $0,%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + +.Lfe64_to_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size x25519_fe64_tobytes,.-x25519_fe64_tobytes +.byte 88,50,53,53,49,57,32,112,114,105,109,105,116,105,118,101,115,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/md5/md5-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/md5/md5-x86_64.s new file mode 100644 index 0000000..348ebe4 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/md5/md5-x86_64.s @@ -0,0 +1,683 @@ +.text +.align 16 + +.globl md5_block_asm_data_order +.type md5_block_asm_data_order,@function +md5_block_asm_data_order: +.cfi_startproc + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-40 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-48 +.Lprologue: + + + + + movq %rdi,%rbp + shlq $6,%rdx + leaq (%rsi,%rdx,1),%rdi + movl 0(%rbp),%eax + movl 4(%rbp),%ebx + movl 8(%rbp),%ecx + movl 12(%rbp),%edx + + + + + + + + cmpq %rdi,%rsi + je .Lend + + +.Lloop: + movl %eax,%r8d + movl %ebx,%r9d + movl %ecx,%r14d + movl %edx,%r15d + movl 0(%rsi),%r10d + movl %edx,%r11d + xorl %ecx,%r11d + leal -680876936(%rax,%r10,1),%eax + andl %ebx,%r11d + movl 4(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%eax + roll $7,%eax + movl %ecx,%r11d + addl %ebx,%eax + xorl %ebx,%r11d + leal -389564586(%rdx,%r10,1),%edx + andl %eax,%r11d + movl 8(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%edx + roll $12,%edx + movl %ebx,%r11d + addl %eax,%edx + xorl %eax,%r11d + leal 606105819(%rcx,%r10,1),%ecx + andl %edx,%r11d + movl 12(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%ecx + roll $17,%ecx + movl %eax,%r11d + addl %edx,%ecx + xorl %edx,%r11d + leal -1044525330(%rbx,%r10,1),%ebx + andl %ecx,%r11d + movl 16(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ebx + roll $22,%ebx + movl %edx,%r11d + addl %ecx,%ebx + xorl %ecx,%r11d + leal -176418897(%rax,%r10,1),%eax + andl %ebx,%r11d + movl 20(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%eax + roll $7,%eax + movl %ecx,%r11d + addl %ebx,%eax + xorl %ebx,%r11d + leal 1200080426(%rdx,%r10,1),%edx + andl %eax,%r11d + movl 24(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%edx + roll $12,%edx + movl %ebx,%r11d + addl %eax,%edx + xorl %eax,%r11d + leal -1473231341(%rcx,%r10,1),%ecx + andl %edx,%r11d + movl 28(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%ecx + roll $17,%ecx + movl %eax,%r11d + addl %edx,%ecx + xorl %edx,%r11d + leal -45705983(%rbx,%r10,1),%ebx + andl %ecx,%r11d + movl 32(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ebx + roll $22,%ebx + movl %edx,%r11d + addl %ecx,%ebx + xorl %ecx,%r11d + leal 1770035416(%rax,%r10,1),%eax + andl %ebx,%r11d + movl 36(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%eax + roll $7,%eax + movl %ecx,%r11d + addl %ebx,%eax + xorl %ebx,%r11d + leal -1958414417(%rdx,%r10,1),%edx + andl %eax,%r11d + movl 40(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%edx + roll $12,%edx + movl %ebx,%r11d + addl %eax,%edx + xorl %eax,%r11d + leal -42063(%rcx,%r10,1),%ecx + andl %edx,%r11d + movl 44(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%ecx + roll $17,%ecx + movl %eax,%r11d + addl %edx,%ecx + xorl %edx,%r11d + leal -1990404162(%rbx,%r10,1),%ebx + andl %ecx,%r11d + movl 48(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ebx + roll $22,%ebx + movl %edx,%r11d + addl %ecx,%ebx + xorl %ecx,%r11d + leal 1804603682(%rax,%r10,1),%eax + andl %ebx,%r11d + movl 52(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%eax + roll $7,%eax + movl %ecx,%r11d + addl %ebx,%eax + xorl %ebx,%r11d + leal -40341101(%rdx,%r10,1),%edx + andl %eax,%r11d + movl 56(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%edx + roll $12,%edx + movl %ebx,%r11d + addl %eax,%edx + xorl %eax,%r11d + leal -1502002290(%rcx,%r10,1),%ecx + andl %edx,%r11d + movl 60(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%ecx + roll $17,%ecx + movl %eax,%r11d + addl %edx,%ecx + xorl %edx,%r11d + leal 1236535329(%rbx,%r10,1),%ebx + andl %ecx,%r11d + movl 4(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ebx + roll $22,%ebx + movl %edx,%r11d + addl %ecx,%ebx + movl %edx,%r11d + movl %edx,%r12d + notl %r11d + andl %ebx,%r12d + leal -165796510(%rax,%r10,1),%eax + andl %ecx,%r11d + movl 24(%rsi),%r10d + orl %r11d,%r12d + movl %ecx,%r11d + addl %r12d,%eax + movl %ecx,%r12d + roll $5,%eax + addl %ebx,%eax + notl %r11d + andl %eax,%r12d + leal -1069501632(%rdx,%r10,1),%edx + andl %ebx,%r11d + movl 44(%rsi),%r10d + orl %r11d,%r12d + movl %ebx,%r11d + addl %r12d,%edx + movl %ebx,%r12d + roll $9,%edx + addl %eax,%edx + notl %r11d + andl %edx,%r12d + leal 643717713(%rcx,%r10,1),%ecx + andl %eax,%r11d + movl 0(%rsi),%r10d + orl %r11d,%r12d + movl %eax,%r11d + addl %r12d,%ecx + movl %eax,%r12d + roll $14,%ecx + addl %edx,%ecx + notl %r11d + andl %ecx,%r12d + leal -373897302(%rbx,%r10,1),%ebx + andl %edx,%r11d + movl 20(%rsi),%r10d + orl %r11d,%r12d + movl %edx,%r11d + addl %r12d,%ebx + movl %edx,%r12d + roll $20,%ebx + addl %ecx,%ebx + notl %r11d + andl %ebx,%r12d + leal -701558691(%rax,%r10,1),%eax + andl %ecx,%r11d + movl 40(%rsi),%r10d + orl %r11d,%r12d + movl %ecx,%r11d + addl %r12d,%eax + movl %ecx,%r12d + roll $5,%eax + addl %ebx,%eax + notl %r11d + andl %eax,%r12d + leal 38016083(%rdx,%r10,1),%edx + andl %ebx,%r11d + movl 60(%rsi),%r10d + orl %r11d,%r12d + movl %ebx,%r11d + addl %r12d,%edx + movl %ebx,%r12d + roll $9,%edx + addl %eax,%edx + notl %r11d + andl %edx,%r12d + leal -660478335(%rcx,%r10,1),%ecx + andl %eax,%r11d + movl 16(%rsi),%r10d + orl %r11d,%r12d + movl %eax,%r11d + addl %r12d,%ecx + movl %eax,%r12d + roll $14,%ecx + addl %edx,%ecx + notl %r11d + andl %ecx,%r12d + leal -405537848(%rbx,%r10,1),%ebx + andl %edx,%r11d + movl 36(%rsi),%r10d + orl %r11d,%r12d + movl %edx,%r11d + addl %r12d,%ebx + movl %edx,%r12d + roll $20,%ebx + addl %ecx,%ebx + notl %r11d + andl %ebx,%r12d + leal 568446438(%rax,%r10,1),%eax + andl %ecx,%r11d + movl 56(%rsi),%r10d + orl %r11d,%r12d + movl %ecx,%r11d + addl %r12d,%eax + movl %ecx,%r12d + roll $5,%eax + addl %ebx,%eax + notl %r11d + andl %eax,%r12d + leal -1019803690(%rdx,%r10,1),%edx + andl %ebx,%r11d + movl 12(%rsi),%r10d + orl %r11d,%r12d + movl %ebx,%r11d + addl %r12d,%edx + movl %ebx,%r12d + roll $9,%edx + addl %eax,%edx + notl %r11d + andl %edx,%r12d + leal -187363961(%rcx,%r10,1),%ecx + andl %eax,%r11d + movl 32(%rsi),%r10d + orl %r11d,%r12d + movl %eax,%r11d + addl %r12d,%ecx + movl %eax,%r12d + roll $14,%ecx + addl %edx,%ecx + notl %r11d + andl %ecx,%r12d + leal 1163531501(%rbx,%r10,1),%ebx + andl %edx,%r11d + movl 52(%rsi),%r10d + orl %r11d,%r12d + movl %edx,%r11d + addl %r12d,%ebx + movl %edx,%r12d + roll $20,%ebx + addl %ecx,%ebx + notl %r11d + andl %ebx,%r12d + leal -1444681467(%rax,%r10,1),%eax + andl %ecx,%r11d + movl 8(%rsi),%r10d + orl %r11d,%r12d + movl %ecx,%r11d + addl %r12d,%eax + movl %ecx,%r12d + roll $5,%eax + addl %ebx,%eax + notl %r11d + andl %eax,%r12d + leal -51403784(%rdx,%r10,1),%edx + andl %ebx,%r11d + movl 28(%rsi),%r10d + orl %r11d,%r12d + movl %ebx,%r11d + addl %r12d,%edx + movl %ebx,%r12d + roll $9,%edx + addl %eax,%edx + notl %r11d + andl %edx,%r12d + leal 1735328473(%rcx,%r10,1),%ecx + andl %eax,%r11d + movl 48(%rsi),%r10d + orl %r11d,%r12d + movl %eax,%r11d + addl %r12d,%ecx + movl %eax,%r12d + roll $14,%ecx + addl %edx,%ecx + notl %r11d + andl %ecx,%r12d + leal -1926607734(%rbx,%r10,1),%ebx + andl %edx,%r11d + movl 20(%rsi),%r10d + orl %r11d,%r12d + movl %edx,%r11d + addl %r12d,%ebx + movl %edx,%r12d + roll $20,%ebx + addl %ecx,%ebx + movl %ecx,%r11d + leal -378558(%rax,%r10,1),%eax + xorl %edx,%r11d + movl 32(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%eax + movl %ebx,%r11d + roll $4,%eax + addl %ebx,%eax + leal -2022574463(%rdx,%r10,1),%edx + xorl %ecx,%r11d + movl 44(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%edx + roll $11,%edx + movl %eax,%r11d + addl %eax,%edx + leal 1839030562(%rcx,%r10,1),%ecx + xorl %ebx,%r11d + movl 56(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ecx + movl %edx,%r11d + roll $16,%ecx + addl %edx,%ecx + leal -35309556(%rbx,%r10,1),%ebx + xorl %eax,%r11d + movl 4(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%ebx + roll $23,%ebx + movl %ecx,%r11d + addl %ecx,%ebx + leal -1530992060(%rax,%r10,1),%eax + xorl %edx,%r11d + movl 16(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%eax + movl %ebx,%r11d + roll $4,%eax + addl %ebx,%eax + leal 1272893353(%rdx,%r10,1),%edx + xorl %ecx,%r11d + movl 28(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%edx + roll $11,%edx + movl %eax,%r11d + addl %eax,%edx + leal -155497632(%rcx,%r10,1),%ecx + xorl %ebx,%r11d + movl 40(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ecx + movl %edx,%r11d + roll $16,%ecx + addl %edx,%ecx + leal -1094730640(%rbx,%r10,1),%ebx + xorl %eax,%r11d + movl 52(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%ebx + roll $23,%ebx + movl %ecx,%r11d + addl %ecx,%ebx + leal 681279174(%rax,%r10,1),%eax + xorl %edx,%r11d + movl 0(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%eax + movl %ebx,%r11d + roll $4,%eax + addl %ebx,%eax + leal -358537222(%rdx,%r10,1),%edx + xorl %ecx,%r11d + movl 12(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%edx + roll $11,%edx + movl %eax,%r11d + addl %eax,%edx + leal -722521979(%rcx,%r10,1),%ecx + xorl %ebx,%r11d + movl 24(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ecx + movl %edx,%r11d + roll $16,%ecx + addl %edx,%ecx + leal 76029189(%rbx,%r10,1),%ebx + xorl %eax,%r11d + movl 36(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%ebx + roll $23,%ebx + movl %ecx,%r11d + addl %ecx,%ebx + leal -640364487(%rax,%r10,1),%eax + xorl %edx,%r11d + movl 48(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%eax + movl %ebx,%r11d + roll $4,%eax + addl %ebx,%eax + leal -421815835(%rdx,%r10,1),%edx + xorl %ecx,%r11d + movl 60(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%edx + roll $11,%edx + movl %eax,%r11d + addl %eax,%edx + leal 530742520(%rcx,%r10,1),%ecx + xorl %ebx,%r11d + movl 8(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ecx + movl %edx,%r11d + roll $16,%ecx + addl %edx,%ecx + leal -995338651(%rbx,%r10,1),%ebx + xorl %eax,%r11d + movl 0(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%ebx + roll $23,%ebx + movl %ecx,%r11d + addl %ecx,%ebx + movl $0xffffffff,%r11d + xorl %edx,%r11d + leal -198630844(%rax,%r10,1),%eax + orl %ebx,%r11d + movl 28(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%eax + movl $0xffffffff,%r11d + roll $6,%eax + xorl %ecx,%r11d + addl %ebx,%eax + leal 1126891415(%rdx,%r10,1),%edx + orl %eax,%r11d + movl 56(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%edx + movl $0xffffffff,%r11d + roll $10,%edx + xorl %ebx,%r11d + addl %eax,%edx + leal -1416354905(%rcx,%r10,1),%ecx + orl %edx,%r11d + movl 20(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ecx + movl $0xffffffff,%r11d + roll $15,%ecx + xorl %eax,%r11d + addl %edx,%ecx + leal -57434055(%rbx,%r10,1),%ebx + orl %ecx,%r11d + movl 48(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ebx + movl $0xffffffff,%r11d + roll $21,%ebx + xorl %edx,%r11d + addl %ecx,%ebx + leal 1700485571(%rax,%r10,1),%eax + orl %ebx,%r11d + movl 12(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%eax + movl $0xffffffff,%r11d + roll $6,%eax + xorl %ecx,%r11d + addl %ebx,%eax + leal -1894986606(%rdx,%r10,1),%edx + orl %eax,%r11d + movl 40(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%edx + movl $0xffffffff,%r11d + roll $10,%edx + xorl %ebx,%r11d + addl %eax,%edx + leal -1051523(%rcx,%r10,1),%ecx + orl %edx,%r11d + movl 4(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ecx + movl $0xffffffff,%r11d + roll $15,%ecx + xorl %eax,%r11d + addl %edx,%ecx + leal -2054922799(%rbx,%r10,1),%ebx + orl %ecx,%r11d + movl 32(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ebx + movl $0xffffffff,%r11d + roll $21,%ebx + xorl %edx,%r11d + addl %ecx,%ebx + leal 1873313359(%rax,%r10,1),%eax + orl %ebx,%r11d + movl 60(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%eax + movl $0xffffffff,%r11d + roll $6,%eax + xorl %ecx,%r11d + addl %ebx,%eax + leal -30611744(%rdx,%r10,1),%edx + orl %eax,%r11d + movl 24(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%edx + movl $0xffffffff,%r11d + roll $10,%edx + xorl %ebx,%r11d + addl %eax,%edx + leal -1560198380(%rcx,%r10,1),%ecx + orl %edx,%r11d + movl 52(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ecx + movl $0xffffffff,%r11d + roll $15,%ecx + xorl %eax,%r11d + addl %edx,%ecx + leal 1309151649(%rbx,%r10,1),%ebx + orl %ecx,%r11d + movl 16(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ebx + movl $0xffffffff,%r11d + roll $21,%ebx + xorl %edx,%r11d + addl %ecx,%ebx + leal -145523070(%rax,%r10,1),%eax + orl %ebx,%r11d + movl 44(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%eax + movl $0xffffffff,%r11d + roll $6,%eax + xorl %ecx,%r11d + addl %ebx,%eax + leal -1120210379(%rdx,%r10,1),%edx + orl %eax,%r11d + movl 8(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%edx + movl $0xffffffff,%r11d + roll $10,%edx + xorl %ebx,%r11d + addl %eax,%edx + leal 718787259(%rcx,%r10,1),%ecx + orl %edx,%r11d + movl 36(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ecx + movl $0xffffffff,%r11d + roll $15,%ecx + xorl %eax,%r11d + addl %edx,%ecx + leal -343485551(%rbx,%r10,1),%ebx + orl %ecx,%r11d + movl 0(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ebx + movl $0xffffffff,%r11d + roll $21,%ebx + xorl %edx,%r11d + addl %ecx,%ebx + + addl %r8d,%eax + addl %r9d,%ebx + addl %r14d,%ecx + addl %r15d,%edx + + + addq $64,%rsi + cmpq %rdi,%rsi + jb .Lloop + + +.Lend: + movl %eax,0(%rbp) + movl %ebx,4(%rbp) + movl %ecx,8(%rbp) + movl %edx,12(%rbp) + + movq (%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r12 +.cfi_restore %r12 + movq 24(%rsp),%rbx +.cfi_restore %rbx + movq 32(%rsp),%rbp +.cfi_restore %rbp + addq $40,%rsp +.cfi_adjust_cfa_offset -40 +.Lepilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size md5_block_asm_data_order,.-md5_block_asm_data_order diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/modes/aesni-gcm-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/modes/aesni-gcm-x86_64.s new file mode 100644 index 0000000..bf508af --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/modes/aesni-gcm-x86_64.s @@ -0,0 +1,789 @@ +.text + +.type _aesni_ctr32_ghash_6x,@function +.align 32 +_aesni_ctr32_ghash_6x: +.cfi_startproc + vmovdqu 32(%r11),%xmm2 + subq $6,%rdx + vpxor %xmm4,%xmm4,%xmm4 + vmovdqu 0-128(%rcx),%xmm15 + vpaddb %xmm2,%xmm1,%xmm10 + vpaddb %xmm2,%xmm10,%xmm11 + vpaddb %xmm2,%xmm11,%xmm12 + vpaddb %xmm2,%xmm12,%xmm13 + vpaddb %xmm2,%xmm13,%xmm14 + vpxor %xmm15,%xmm1,%xmm9 + vmovdqu %xmm4,16+8(%rsp) + jmp .Loop6x + +.align 32 +.Loop6x: + addl $100663296,%ebx + jc .Lhandle_ctr32 + vmovdqu 0-32(%r9),%xmm3 + vpaddb %xmm2,%xmm14,%xmm1 + vpxor %xmm15,%xmm10,%xmm10 + vpxor %xmm15,%xmm11,%xmm11 + +.Lresume_ctr32: + vmovdqu %xmm1,(%r8) + vpclmulqdq $0x10,%xmm3,%xmm7,%xmm5 + vpxor %xmm15,%xmm12,%xmm12 + vmovups 16-128(%rcx),%xmm2 + vpclmulqdq $0x01,%xmm3,%xmm7,%xmm6 + xorq %r12,%r12 + cmpq %r14,%r15 + + vaesenc %xmm2,%xmm9,%xmm9 + vmovdqu 48+8(%rsp),%xmm0 + vpxor %xmm15,%xmm13,%xmm13 + vpclmulqdq $0x00,%xmm3,%xmm7,%xmm1 + vaesenc %xmm2,%xmm10,%xmm10 + vpxor %xmm15,%xmm14,%xmm14 + setnc %r12b + vpclmulqdq $0x11,%xmm3,%xmm7,%xmm7 + vaesenc %xmm2,%xmm11,%xmm11 + vmovdqu 16-32(%r9),%xmm3 + negq %r12 + vaesenc %xmm2,%xmm12,%xmm12 + vpxor %xmm5,%xmm6,%xmm6 + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm5 + vpxor %xmm4,%xmm8,%xmm8 + vaesenc %xmm2,%xmm13,%xmm13 + vpxor %xmm5,%xmm1,%xmm4 + andq $0x60,%r12 + vmovups 32-128(%rcx),%xmm15 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm1 + vaesenc %xmm2,%xmm14,%xmm14 + + vpclmulqdq $0x01,%xmm3,%xmm0,%xmm2 + leaq (%r14,%r12,1),%r14 + vaesenc %xmm15,%xmm9,%xmm9 + vpxor 16+8(%rsp),%xmm8,%xmm8 + vpclmulqdq $0x11,%xmm3,%xmm0,%xmm3 + vmovdqu 64+8(%rsp),%xmm0 + vaesenc %xmm15,%xmm10,%xmm10 + movbeq 88(%r14),%r13 + vaesenc %xmm15,%xmm11,%xmm11 + movbeq 80(%r14),%r12 + vaesenc %xmm15,%xmm12,%xmm12 + movq %r13,32+8(%rsp) + vaesenc %xmm15,%xmm13,%xmm13 + movq %r12,40+8(%rsp) + vmovdqu 48-32(%r9),%xmm5 + vaesenc %xmm15,%xmm14,%xmm14 + + vmovups 48-128(%rcx),%xmm15 + vpxor %xmm1,%xmm6,%xmm6 + vpclmulqdq $0x00,%xmm5,%xmm0,%xmm1 + vaesenc %xmm15,%xmm9,%xmm9 + vpxor %xmm2,%xmm6,%xmm6 + vpclmulqdq $0x10,%xmm5,%xmm0,%xmm2 + vaesenc %xmm15,%xmm10,%xmm10 + vpxor %xmm3,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm5,%xmm0,%xmm3 + vaesenc %xmm15,%xmm11,%xmm11 + vpclmulqdq $0x11,%xmm5,%xmm0,%xmm5 + vmovdqu 80+8(%rsp),%xmm0 + vaesenc %xmm15,%xmm12,%xmm12 + vaesenc %xmm15,%xmm13,%xmm13 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqu 64-32(%r9),%xmm1 + vaesenc %xmm15,%xmm14,%xmm14 + + vmovups 64-128(%rcx),%xmm15 + vpxor %xmm2,%xmm6,%xmm6 + vpclmulqdq $0x00,%xmm1,%xmm0,%xmm2 + vaesenc %xmm15,%xmm9,%xmm9 + vpxor %xmm3,%xmm6,%xmm6 + vpclmulqdq $0x10,%xmm1,%xmm0,%xmm3 + vaesenc %xmm15,%xmm10,%xmm10 + movbeq 72(%r14),%r13 + vpxor %xmm5,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm1,%xmm0,%xmm5 + vaesenc %xmm15,%xmm11,%xmm11 + movbeq 64(%r14),%r12 + vpclmulqdq $0x11,%xmm1,%xmm0,%xmm1 + vmovdqu 96+8(%rsp),%xmm0 + vaesenc %xmm15,%xmm12,%xmm12 + movq %r13,48+8(%rsp) + vaesenc %xmm15,%xmm13,%xmm13 + movq %r12,56+8(%rsp) + vpxor %xmm2,%xmm4,%xmm4 + vmovdqu 96-32(%r9),%xmm2 + vaesenc %xmm15,%xmm14,%xmm14 + + vmovups 80-128(%rcx),%xmm15 + vpxor %xmm3,%xmm6,%xmm6 + vpclmulqdq $0x00,%xmm2,%xmm0,%xmm3 + vaesenc %xmm15,%xmm9,%xmm9 + vpxor %xmm5,%xmm6,%xmm6 + vpclmulqdq $0x10,%xmm2,%xmm0,%xmm5 + vaesenc %xmm15,%xmm10,%xmm10 + movbeq 56(%r14),%r13 + vpxor %xmm1,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm2,%xmm0,%xmm1 + vpxor 112+8(%rsp),%xmm8,%xmm8 + vaesenc %xmm15,%xmm11,%xmm11 + movbeq 48(%r14),%r12 + vpclmulqdq $0x11,%xmm2,%xmm0,%xmm2 + vaesenc %xmm15,%xmm12,%xmm12 + movq %r13,64+8(%rsp) + vaesenc %xmm15,%xmm13,%xmm13 + movq %r12,72+8(%rsp) + vpxor %xmm3,%xmm4,%xmm4 + vmovdqu 112-32(%r9),%xmm3 + vaesenc %xmm15,%xmm14,%xmm14 + + vmovups 96-128(%rcx),%xmm15 + vpxor %xmm5,%xmm6,%xmm6 + vpclmulqdq $0x10,%xmm3,%xmm8,%xmm5 + vaesenc %xmm15,%xmm9,%xmm9 + vpxor %xmm1,%xmm6,%xmm6 + vpclmulqdq $0x01,%xmm3,%xmm8,%xmm1 + vaesenc %xmm15,%xmm10,%xmm10 + movbeq 40(%r14),%r13 + vpxor %xmm2,%xmm7,%xmm7 + vpclmulqdq $0x00,%xmm3,%xmm8,%xmm2 + vaesenc %xmm15,%xmm11,%xmm11 + movbeq 32(%r14),%r12 + vpclmulqdq $0x11,%xmm3,%xmm8,%xmm8 + vaesenc %xmm15,%xmm12,%xmm12 + movq %r13,80+8(%rsp) + vaesenc %xmm15,%xmm13,%xmm13 + movq %r12,88+8(%rsp) + vpxor %xmm5,%xmm6,%xmm6 + vaesenc %xmm15,%xmm14,%xmm14 + vpxor %xmm1,%xmm6,%xmm6 + + vmovups 112-128(%rcx),%xmm15 + vpslldq $8,%xmm6,%xmm5 + vpxor %xmm2,%xmm4,%xmm4 + vmovdqu 16(%r11),%xmm3 + + vaesenc %xmm15,%xmm9,%xmm9 + vpxor %xmm8,%xmm7,%xmm7 + vaesenc %xmm15,%xmm10,%xmm10 + vpxor %xmm5,%xmm4,%xmm4 + movbeq 24(%r14),%r13 + vaesenc %xmm15,%xmm11,%xmm11 + movbeq 16(%r14),%r12 + vpalignr $8,%xmm4,%xmm4,%xmm0 + vpclmulqdq $0x10,%xmm3,%xmm4,%xmm4 + movq %r13,96+8(%rsp) + vaesenc %xmm15,%xmm12,%xmm12 + movq %r12,104+8(%rsp) + vaesenc %xmm15,%xmm13,%xmm13 + vmovups 128-128(%rcx),%xmm1 + vaesenc %xmm15,%xmm14,%xmm14 + + vaesenc %xmm1,%xmm9,%xmm9 + vmovups 144-128(%rcx),%xmm15 + vaesenc %xmm1,%xmm10,%xmm10 + vpsrldq $8,%xmm6,%xmm6 + vaesenc %xmm1,%xmm11,%xmm11 + vpxor %xmm6,%xmm7,%xmm7 + vaesenc %xmm1,%xmm12,%xmm12 + vpxor %xmm0,%xmm4,%xmm4 + movbeq 8(%r14),%r13 + vaesenc %xmm1,%xmm13,%xmm13 + movbeq 0(%r14),%r12 + vaesenc %xmm1,%xmm14,%xmm14 + vmovups 160-128(%rcx),%xmm1 + cmpl $11,%ebp + jb .Lenc_tail + + vaesenc %xmm15,%xmm9,%xmm9 + vaesenc %xmm15,%xmm10,%xmm10 + vaesenc %xmm15,%xmm11,%xmm11 + vaesenc %xmm15,%xmm12,%xmm12 + vaesenc %xmm15,%xmm13,%xmm13 + vaesenc %xmm15,%xmm14,%xmm14 + + vaesenc %xmm1,%xmm9,%xmm9 + vaesenc %xmm1,%xmm10,%xmm10 + vaesenc %xmm1,%xmm11,%xmm11 + vaesenc %xmm1,%xmm12,%xmm12 + vaesenc %xmm1,%xmm13,%xmm13 + vmovups 176-128(%rcx),%xmm15 + vaesenc %xmm1,%xmm14,%xmm14 + vmovups 192-128(%rcx),%xmm1 + je .Lenc_tail + + vaesenc %xmm15,%xmm9,%xmm9 + vaesenc %xmm15,%xmm10,%xmm10 + vaesenc %xmm15,%xmm11,%xmm11 + vaesenc %xmm15,%xmm12,%xmm12 + vaesenc %xmm15,%xmm13,%xmm13 + vaesenc %xmm15,%xmm14,%xmm14 + + vaesenc %xmm1,%xmm9,%xmm9 + vaesenc %xmm1,%xmm10,%xmm10 + vaesenc %xmm1,%xmm11,%xmm11 + vaesenc %xmm1,%xmm12,%xmm12 + vaesenc %xmm1,%xmm13,%xmm13 + vmovups 208-128(%rcx),%xmm15 + vaesenc %xmm1,%xmm14,%xmm14 + vmovups 224-128(%rcx),%xmm1 + jmp .Lenc_tail + +.align 32 +.Lhandle_ctr32: + vmovdqu (%r11),%xmm0 + vpshufb %xmm0,%xmm1,%xmm6 + vmovdqu 48(%r11),%xmm5 + vpaddd 64(%r11),%xmm6,%xmm10 + vpaddd %xmm5,%xmm6,%xmm11 + vmovdqu 0-32(%r9),%xmm3 + vpaddd %xmm5,%xmm10,%xmm12 + vpshufb %xmm0,%xmm10,%xmm10 + vpaddd %xmm5,%xmm11,%xmm13 + vpshufb %xmm0,%xmm11,%xmm11 + vpxor %xmm15,%xmm10,%xmm10 + vpaddd %xmm5,%xmm12,%xmm14 + vpshufb %xmm0,%xmm12,%xmm12 + vpxor %xmm15,%xmm11,%xmm11 + vpaddd %xmm5,%xmm13,%xmm1 + vpshufb %xmm0,%xmm13,%xmm13 + vpshufb %xmm0,%xmm14,%xmm14 + vpshufb %xmm0,%xmm1,%xmm1 + jmp .Lresume_ctr32 + +.align 32 +.Lenc_tail: + vaesenc %xmm15,%xmm9,%xmm9 + vmovdqu %xmm7,16+8(%rsp) + vpalignr $8,%xmm4,%xmm4,%xmm8 + vaesenc %xmm15,%xmm10,%xmm10 + vpclmulqdq $0x10,%xmm3,%xmm4,%xmm4 + vpxor 0(%rdi),%xmm1,%xmm2 + vaesenc %xmm15,%xmm11,%xmm11 + vpxor 16(%rdi),%xmm1,%xmm0 + vaesenc %xmm15,%xmm12,%xmm12 + vpxor 32(%rdi),%xmm1,%xmm5 + vaesenc %xmm15,%xmm13,%xmm13 + vpxor 48(%rdi),%xmm1,%xmm6 + vaesenc %xmm15,%xmm14,%xmm14 + vpxor 64(%rdi),%xmm1,%xmm7 + vpxor 80(%rdi),%xmm1,%xmm3 + vmovdqu (%r8),%xmm1 + + vaesenclast %xmm2,%xmm9,%xmm9 + vmovdqu 32(%r11),%xmm2 + vaesenclast %xmm0,%xmm10,%xmm10 + vpaddb %xmm2,%xmm1,%xmm0 + movq %r13,112+8(%rsp) + leaq 96(%rdi),%rdi + vaesenclast %xmm5,%xmm11,%xmm11 + vpaddb %xmm2,%xmm0,%xmm5 + movq %r12,120+8(%rsp) + leaq 96(%rsi),%rsi + vmovdqu 0-128(%rcx),%xmm15 + vaesenclast %xmm6,%xmm12,%xmm12 + vpaddb %xmm2,%xmm5,%xmm6 + vaesenclast %xmm7,%xmm13,%xmm13 + vpaddb %xmm2,%xmm6,%xmm7 + vaesenclast %xmm3,%xmm14,%xmm14 + vpaddb %xmm2,%xmm7,%xmm3 + + addq $0x60,%r10 + subq $0x6,%rdx + jc .L6x_done + + vmovups %xmm9,-96(%rsi) + vpxor %xmm15,%xmm1,%xmm9 + vmovups %xmm10,-80(%rsi) + vmovdqa %xmm0,%xmm10 + vmovups %xmm11,-64(%rsi) + vmovdqa %xmm5,%xmm11 + vmovups %xmm12,-48(%rsi) + vmovdqa %xmm6,%xmm12 + vmovups %xmm13,-32(%rsi) + vmovdqa %xmm7,%xmm13 + vmovups %xmm14,-16(%rsi) + vmovdqa %xmm3,%xmm14 + vmovdqu 32+8(%rsp),%xmm7 + jmp .Loop6x + +.L6x_done: + vpxor 16+8(%rsp),%xmm8,%xmm8 + vpxor %xmm4,%xmm8,%xmm8 + + .byte 0xf3,0xc3 +.cfi_endproc +.size _aesni_ctr32_ghash_6x,.-_aesni_ctr32_ghash_6x +.globl aesni_gcm_decrypt +.type aesni_gcm_decrypt,@function +.align 32 +aesni_gcm_decrypt: +.cfi_startproc + xorq %r10,%r10 + cmpq $0x60,%rdx + jb .Lgcm_dec_abort + + leaq (%rsp),%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + vzeroupper + + vmovdqu (%r8),%xmm1 + addq $-128,%rsp + movl 12(%r8),%ebx + leaq .Lbswap_mask(%rip),%r11 + leaq -128(%rcx),%r14 + movq $0xf80,%r15 + vmovdqu (%r9),%xmm8 + andq $-128,%rsp + vmovdqu (%r11),%xmm0 + leaq 128(%rcx),%rcx + leaq 32+32(%r9),%r9 + movl 240-128(%rcx),%ebp + vpshufb %xmm0,%xmm8,%xmm8 + + andq %r15,%r14 + andq %rsp,%r15 + subq %r14,%r15 + jc .Ldec_no_key_aliasing + cmpq $768,%r15 + jnc .Ldec_no_key_aliasing + subq %r15,%rsp +.Ldec_no_key_aliasing: + + vmovdqu 80(%rdi),%xmm7 + leaq (%rdi),%r14 + vmovdqu 64(%rdi),%xmm4 + leaq -192(%rdi,%rdx,1),%r15 + vmovdqu 48(%rdi),%xmm5 + shrq $4,%rdx + xorq %r10,%r10 + vmovdqu 32(%rdi),%xmm6 + vpshufb %xmm0,%xmm7,%xmm7 + vmovdqu 16(%rdi),%xmm2 + vpshufb %xmm0,%xmm4,%xmm4 + vmovdqu (%rdi),%xmm3 + vpshufb %xmm0,%xmm5,%xmm5 + vmovdqu %xmm4,48(%rsp) + vpshufb %xmm0,%xmm6,%xmm6 + vmovdqu %xmm5,64(%rsp) + vpshufb %xmm0,%xmm2,%xmm2 + vmovdqu %xmm6,80(%rsp) + vpshufb %xmm0,%xmm3,%xmm3 + vmovdqu %xmm2,96(%rsp) + vmovdqu %xmm3,112(%rsp) + + call _aesni_ctr32_ghash_6x + + vmovups %xmm9,-96(%rsi) + vmovups %xmm10,-80(%rsi) + vmovups %xmm11,-64(%rsi) + vmovups %xmm12,-48(%rsi) + vmovups %xmm13,-32(%rsi) + vmovups %xmm14,-16(%rsi) + + vpshufb (%r11),%xmm8,%xmm8 + vmovdqu %xmm8,-64(%r9) + + vzeroupper + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lgcm_dec_abort: + movq %r10,%rax + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_gcm_decrypt,.-aesni_gcm_decrypt +.type _aesni_ctr32_6x,@function +.align 32 +_aesni_ctr32_6x: +.cfi_startproc + vmovdqu 0-128(%rcx),%xmm4 + vmovdqu 32(%r11),%xmm2 + leaq -1(%rbp),%r13 + vmovups 16-128(%rcx),%xmm15 + leaq 32-128(%rcx),%r12 + vpxor %xmm4,%xmm1,%xmm9 + addl $100663296,%ebx + jc .Lhandle_ctr32_2 + vpaddb %xmm2,%xmm1,%xmm10 + vpaddb %xmm2,%xmm10,%xmm11 + vpxor %xmm4,%xmm10,%xmm10 + vpaddb %xmm2,%xmm11,%xmm12 + vpxor %xmm4,%xmm11,%xmm11 + vpaddb %xmm2,%xmm12,%xmm13 + vpxor %xmm4,%xmm12,%xmm12 + vpaddb %xmm2,%xmm13,%xmm14 + vpxor %xmm4,%xmm13,%xmm13 + vpaddb %xmm2,%xmm14,%xmm1 + vpxor %xmm4,%xmm14,%xmm14 + jmp .Loop_ctr32 + +.align 16 +.Loop_ctr32: + vaesenc %xmm15,%xmm9,%xmm9 + vaesenc %xmm15,%xmm10,%xmm10 + vaesenc %xmm15,%xmm11,%xmm11 + vaesenc %xmm15,%xmm12,%xmm12 + vaesenc %xmm15,%xmm13,%xmm13 + vaesenc %xmm15,%xmm14,%xmm14 + vmovups (%r12),%xmm15 + leaq 16(%r12),%r12 + decl %r13d + jnz .Loop_ctr32 + + vmovdqu (%r12),%xmm3 + vaesenc %xmm15,%xmm9,%xmm9 + vpxor 0(%rdi),%xmm3,%xmm4 + vaesenc %xmm15,%xmm10,%xmm10 + vpxor 16(%rdi),%xmm3,%xmm5 + vaesenc %xmm15,%xmm11,%xmm11 + vpxor 32(%rdi),%xmm3,%xmm6 + vaesenc %xmm15,%xmm12,%xmm12 + vpxor 48(%rdi),%xmm3,%xmm8 + vaesenc %xmm15,%xmm13,%xmm13 + vpxor 64(%rdi),%xmm3,%xmm2 + vaesenc %xmm15,%xmm14,%xmm14 + vpxor 80(%rdi),%xmm3,%xmm3 + leaq 96(%rdi),%rdi + + vaesenclast %xmm4,%xmm9,%xmm9 + vaesenclast %xmm5,%xmm10,%xmm10 + vaesenclast %xmm6,%xmm11,%xmm11 + vaesenclast %xmm8,%xmm12,%xmm12 + vaesenclast %xmm2,%xmm13,%xmm13 + vaesenclast %xmm3,%xmm14,%xmm14 + vmovups %xmm9,0(%rsi) + vmovups %xmm10,16(%rsi) + vmovups %xmm11,32(%rsi) + vmovups %xmm12,48(%rsi) + vmovups %xmm13,64(%rsi) + vmovups %xmm14,80(%rsi) + leaq 96(%rsi),%rsi + + .byte 0xf3,0xc3 +.align 32 +.Lhandle_ctr32_2: + vpshufb %xmm0,%xmm1,%xmm6 + vmovdqu 48(%r11),%xmm5 + vpaddd 64(%r11),%xmm6,%xmm10 + vpaddd %xmm5,%xmm6,%xmm11 + vpaddd %xmm5,%xmm10,%xmm12 + vpshufb %xmm0,%xmm10,%xmm10 + vpaddd %xmm5,%xmm11,%xmm13 + vpshufb %xmm0,%xmm11,%xmm11 + vpxor %xmm4,%xmm10,%xmm10 + vpaddd %xmm5,%xmm12,%xmm14 + vpshufb %xmm0,%xmm12,%xmm12 + vpxor %xmm4,%xmm11,%xmm11 + vpaddd %xmm5,%xmm13,%xmm1 + vpshufb %xmm0,%xmm13,%xmm13 + vpxor %xmm4,%xmm12,%xmm12 + vpshufb %xmm0,%xmm14,%xmm14 + vpxor %xmm4,%xmm13,%xmm13 + vpshufb %xmm0,%xmm1,%xmm1 + vpxor %xmm4,%xmm14,%xmm14 + jmp .Loop_ctr32 +.cfi_endproc +.size _aesni_ctr32_6x,.-_aesni_ctr32_6x + +.globl aesni_gcm_encrypt +.type aesni_gcm_encrypt,@function +.align 32 +aesni_gcm_encrypt: +.cfi_startproc + xorq %r10,%r10 + cmpq $288,%rdx + jb .Lgcm_enc_abort + + leaq (%rsp),%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + vzeroupper + + vmovdqu (%r8),%xmm1 + addq $-128,%rsp + movl 12(%r8),%ebx + leaq .Lbswap_mask(%rip),%r11 + leaq -128(%rcx),%r14 + movq $0xf80,%r15 + leaq 128(%rcx),%rcx + vmovdqu (%r11),%xmm0 + andq $-128,%rsp + movl 240-128(%rcx),%ebp + + andq %r15,%r14 + andq %rsp,%r15 + subq %r14,%r15 + jc .Lenc_no_key_aliasing + cmpq $768,%r15 + jnc .Lenc_no_key_aliasing + subq %r15,%rsp +.Lenc_no_key_aliasing: + + leaq (%rsi),%r14 + leaq -192(%rsi,%rdx,1),%r15 + shrq $4,%rdx + + call _aesni_ctr32_6x + vpshufb %xmm0,%xmm9,%xmm8 + vpshufb %xmm0,%xmm10,%xmm2 + vmovdqu %xmm8,112(%rsp) + vpshufb %xmm0,%xmm11,%xmm4 + vmovdqu %xmm2,96(%rsp) + vpshufb %xmm0,%xmm12,%xmm5 + vmovdqu %xmm4,80(%rsp) + vpshufb %xmm0,%xmm13,%xmm6 + vmovdqu %xmm5,64(%rsp) + vpshufb %xmm0,%xmm14,%xmm7 + vmovdqu %xmm6,48(%rsp) + + call _aesni_ctr32_6x + + vmovdqu (%r9),%xmm8 + leaq 32+32(%r9),%r9 + subq $12,%rdx + movq $192,%r10 + vpshufb %xmm0,%xmm8,%xmm8 + + call _aesni_ctr32_ghash_6x + vmovdqu 32(%rsp),%xmm7 + vmovdqu (%r11),%xmm0 + vmovdqu 0-32(%r9),%xmm3 + vpunpckhqdq %xmm7,%xmm7,%xmm1 + vmovdqu 32-32(%r9),%xmm15 + vmovups %xmm9,-96(%rsi) + vpshufb %xmm0,%xmm9,%xmm9 + vpxor %xmm7,%xmm1,%xmm1 + vmovups %xmm10,-80(%rsi) + vpshufb %xmm0,%xmm10,%xmm10 + vmovups %xmm11,-64(%rsi) + vpshufb %xmm0,%xmm11,%xmm11 + vmovups %xmm12,-48(%rsi) + vpshufb %xmm0,%xmm12,%xmm12 + vmovups %xmm13,-32(%rsi) + vpshufb %xmm0,%xmm13,%xmm13 + vmovups %xmm14,-16(%rsi) + vpshufb %xmm0,%xmm14,%xmm14 + vmovdqu %xmm9,16(%rsp) + vmovdqu 48(%rsp),%xmm6 + vmovdqu 16-32(%r9),%xmm0 + vpunpckhqdq %xmm6,%xmm6,%xmm2 + vpclmulqdq $0x00,%xmm3,%xmm7,%xmm5 + vpxor %xmm6,%xmm2,%xmm2 + vpclmulqdq $0x11,%xmm3,%xmm7,%xmm7 + vpclmulqdq $0x00,%xmm15,%xmm1,%xmm1 + + vmovdqu 64(%rsp),%xmm9 + vpclmulqdq $0x00,%xmm0,%xmm6,%xmm4 + vmovdqu 48-32(%r9),%xmm3 + vpxor %xmm5,%xmm4,%xmm4 + vpunpckhqdq %xmm9,%xmm9,%xmm5 + vpclmulqdq $0x11,%xmm0,%xmm6,%xmm6 + vpxor %xmm9,%xmm5,%xmm5 + vpxor %xmm7,%xmm6,%xmm6 + vpclmulqdq $0x10,%xmm15,%xmm2,%xmm2 + vmovdqu 80-32(%r9),%xmm15 + vpxor %xmm1,%xmm2,%xmm2 + + vmovdqu 80(%rsp),%xmm1 + vpclmulqdq $0x00,%xmm3,%xmm9,%xmm7 + vmovdqu 64-32(%r9),%xmm0 + vpxor %xmm4,%xmm7,%xmm7 + vpunpckhqdq %xmm1,%xmm1,%xmm4 + vpclmulqdq $0x11,%xmm3,%xmm9,%xmm9 + vpxor %xmm1,%xmm4,%xmm4 + vpxor %xmm6,%xmm9,%xmm9 + vpclmulqdq $0x00,%xmm15,%xmm5,%xmm5 + vpxor %xmm2,%xmm5,%xmm5 + + vmovdqu 96(%rsp),%xmm2 + vpclmulqdq $0x00,%xmm0,%xmm1,%xmm6 + vmovdqu 96-32(%r9),%xmm3 + vpxor %xmm7,%xmm6,%xmm6 + vpunpckhqdq %xmm2,%xmm2,%xmm7 + vpclmulqdq $0x11,%xmm0,%xmm1,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpxor %xmm9,%xmm1,%xmm1 + vpclmulqdq $0x10,%xmm15,%xmm4,%xmm4 + vmovdqu 128-32(%r9),%xmm15 + vpxor %xmm5,%xmm4,%xmm4 + + vpxor 112(%rsp),%xmm8,%xmm8 + vpclmulqdq $0x00,%xmm3,%xmm2,%xmm5 + vmovdqu 112-32(%r9),%xmm0 + vpunpckhqdq %xmm8,%xmm8,%xmm9 + vpxor %xmm6,%xmm5,%xmm5 + vpclmulqdq $0x11,%xmm3,%xmm2,%xmm2 + vpxor %xmm8,%xmm9,%xmm9 + vpxor %xmm1,%xmm2,%xmm2 + vpclmulqdq $0x00,%xmm15,%xmm7,%xmm7 + vpxor %xmm4,%xmm7,%xmm4 + + vpclmulqdq $0x00,%xmm0,%xmm8,%xmm6 + vmovdqu 0-32(%r9),%xmm3 + vpunpckhqdq %xmm14,%xmm14,%xmm1 + vpclmulqdq $0x11,%xmm0,%xmm8,%xmm8 + vpxor %xmm14,%xmm1,%xmm1 + vpxor %xmm5,%xmm6,%xmm5 + vpclmulqdq $0x10,%xmm15,%xmm9,%xmm9 + vmovdqu 32-32(%r9),%xmm15 + vpxor %xmm2,%xmm8,%xmm7 + vpxor %xmm4,%xmm9,%xmm6 + + vmovdqu 16-32(%r9),%xmm0 + vpxor %xmm5,%xmm7,%xmm9 + vpclmulqdq $0x00,%xmm3,%xmm14,%xmm4 + vpxor %xmm9,%xmm6,%xmm6 + vpunpckhqdq %xmm13,%xmm13,%xmm2 + vpclmulqdq $0x11,%xmm3,%xmm14,%xmm14 + vpxor %xmm13,%xmm2,%xmm2 + vpslldq $8,%xmm6,%xmm9 + vpclmulqdq $0x00,%xmm15,%xmm1,%xmm1 + vpxor %xmm9,%xmm5,%xmm8 + vpsrldq $8,%xmm6,%xmm6 + vpxor %xmm6,%xmm7,%xmm7 + + vpclmulqdq $0x00,%xmm0,%xmm13,%xmm5 + vmovdqu 48-32(%r9),%xmm3 + vpxor %xmm4,%xmm5,%xmm5 + vpunpckhqdq %xmm12,%xmm12,%xmm9 + vpclmulqdq $0x11,%xmm0,%xmm13,%xmm13 + vpxor %xmm12,%xmm9,%xmm9 + vpxor %xmm14,%xmm13,%xmm13 + vpalignr $8,%xmm8,%xmm8,%xmm14 + vpclmulqdq $0x10,%xmm15,%xmm2,%xmm2 + vmovdqu 80-32(%r9),%xmm15 + vpxor %xmm1,%xmm2,%xmm2 + + vpclmulqdq $0x00,%xmm3,%xmm12,%xmm4 + vmovdqu 64-32(%r9),%xmm0 + vpxor %xmm5,%xmm4,%xmm4 + vpunpckhqdq %xmm11,%xmm11,%xmm1 + vpclmulqdq $0x11,%xmm3,%xmm12,%xmm12 + vpxor %xmm11,%xmm1,%xmm1 + vpxor %xmm13,%xmm12,%xmm12 + vxorps 16(%rsp),%xmm7,%xmm7 + vpclmulqdq $0x00,%xmm15,%xmm9,%xmm9 + vpxor %xmm2,%xmm9,%xmm9 + + vpclmulqdq $0x10,16(%r11),%xmm8,%xmm8 + vxorps %xmm14,%xmm8,%xmm8 + + vpclmulqdq $0x00,%xmm0,%xmm11,%xmm5 + vmovdqu 96-32(%r9),%xmm3 + vpxor %xmm4,%xmm5,%xmm5 + vpunpckhqdq %xmm10,%xmm10,%xmm2 + vpclmulqdq $0x11,%xmm0,%xmm11,%xmm11 + vpxor %xmm10,%xmm2,%xmm2 + vpalignr $8,%xmm8,%xmm8,%xmm14 + vpxor %xmm12,%xmm11,%xmm11 + vpclmulqdq $0x10,%xmm15,%xmm1,%xmm1 + vmovdqu 128-32(%r9),%xmm15 + vpxor %xmm9,%xmm1,%xmm1 + + vxorps %xmm7,%xmm14,%xmm14 + vpclmulqdq $0x10,16(%r11),%xmm8,%xmm8 + vxorps %xmm14,%xmm8,%xmm8 + + vpclmulqdq $0x00,%xmm3,%xmm10,%xmm4 + vmovdqu 112-32(%r9),%xmm0 + vpxor %xmm5,%xmm4,%xmm4 + vpunpckhqdq %xmm8,%xmm8,%xmm9 + vpclmulqdq $0x11,%xmm3,%xmm10,%xmm10 + vpxor %xmm8,%xmm9,%xmm9 + vpxor %xmm11,%xmm10,%xmm10 + vpclmulqdq $0x00,%xmm15,%xmm2,%xmm2 + vpxor %xmm1,%xmm2,%xmm2 + + vpclmulqdq $0x00,%xmm0,%xmm8,%xmm5 + vpclmulqdq $0x11,%xmm0,%xmm8,%xmm7 + vpxor %xmm4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm15,%xmm9,%xmm6 + vpxor %xmm10,%xmm7,%xmm7 + vpxor %xmm2,%xmm6,%xmm6 + + vpxor %xmm5,%xmm7,%xmm4 + vpxor %xmm4,%xmm6,%xmm6 + vpslldq $8,%xmm6,%xmm1 + vmovdqu 16(%r11),%xmm3 + vpsrldq $8,%xmm6,%xmm6 + vpxor %xmm1,%xmm5,%xmm8 + vpxor %xmm6,%xmm7,%xmm7 + + vpalignr $8,%xmm8,%xmm8,%xmm2 + vpclmulqdq $0x10,%xmm3,%xmm8,%xmm8 + vpxor %xmm2,%xmm8,%xmm8 + + vpalignr $8,%xmm8,%xmm8,%xmm2 + vpclmulqdq $0x10,%xmm3,%xmm8,%xmm8 + vpxor %xmm7,%xmm2,%xmm2 + vpxor %xmm2,%xmm8,%xmm8 + vpshufb (%r11),%xmm8,%xmm8 + vmovdqu %xmm8,-64(%r9) + + vzeroupper + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lgcm_enc_abort: + movq %r10,%rax + .byte 0xf3,0xc3 +.cfi_endproc +.size aesni_gcm_encrypt,.-aesni_gcm_encrypt +.align 64 +.Lbswap_mask: +.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +.Lpoly: +.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 +.Lone_msb: +.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +.Ltwo_lsb: +.byte 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +.Lone_lsb: +.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +.byte 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 64 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/modes/ghash-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/modes/ghash-x86_64.s new file mode 100644 index 0000000..586457a --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/modes/ghash-x86_64.s @@ -0,0 +1,1847 @@ +.text + + +.globl gcm_gmult_4bit +.type gcm_gmult_4bit,@function +.align 16 +gcm_gmult_4bit: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $280,%rsp +.cfi_adjust_cfa_offset 280 +.Lgmult_prologue: + + movzbq 15(%rdi),%r8 + leaq .Lrem_4bit(%rip),%r11 + xorq %rax,%rax + xorq %rbx,%rbx + movb %r8b,%al + movb %r8b,%bl + shlb $4,%al + movq $14,%rcx + movq 8(%rsi,%rax,1),%r8 + movq (%rsi,%rax,1),%r9 + andb $0xf0,%bl + movq %r8,%rdx + jmp .Loop1 + +.align 16 +.Loop1: + shrq $4,%r8 + andq $0xf,%rdx + movq %r9,%r10 + movb (%rdi,%rcx,1),%al + shrq $4,%r9 + xorq 8(%rsi,%rbx,1),%r8 + shlq $60,%r10 + xorq (%rsi,%rbx,1),%r9 + movb %al,%bl + xorq (%r11,%rdx,8),%r9 + movq %r8,%rdx + shlb $4,%al + xorq %r10,%r8 + decq %rcx + js .Lbreak1 + + shrq $4,%r8 + andq $0xf,%rdx + movq %r9,%r10 + shrq $4,%r9 + xorq 8(%rsi,%rax,1),%r8 + shlq $60,%r10 + xorq (%rsi,%rax,1),%r9 + andb $0xf0,%bl + xorq (%r11,%rdx,8),%r9 + movq %r8,%rdx + xorq %r10,%r8 + jmp .Loop1 + +.align 16 +.Lbreak1: + shrq $4,%r8 + andq $0xf,%rdx + movq %r9,%r10 + shrq $4,%r9 + xorq 8(%rsi,%rax,1),%r8 + shlq $60,%r10 + xorq (%rsi,%rax,1),%r9 + andb $0xf0,%bl + xorq (%r11,%rdx,8),%r9 + movq %r8,%rdx + xorq %r10,%r8 + + shrq $4,%r8 + andq $0xf,%rdx + movq %r9,%r10 + shrq $4,%r9 + xorq 8(%rsi,%rbx,1),%r8 + shlq $60,%r10 + xorq (%rsi,%rbx,1),%r9 + xorq %r10,%r8 + xorq (%r11,%rdx,8),%r9 + + bswapq %r8 + bswapq %r9 + movq %r8,8(%rdi) + movq %r9,(%rdi) + + leaq 280+48(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lgmult_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size gcm_gmult_4bit,.-gcm_gmult_4bit +.globl gcm_ghash_4bit +.type gcm_ghash_4bit,@function +.align 16 +gcm_ghash_4bit: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $280,%rsp +.cfi_adjust_cfa_offset 280 +.Lghash_prologue: + movq %rdx,%r14 + movq %rcx,%r15 + subq $-128,%rsi + leaq 16+128(%rsp),%rbp + xorl %edx,%edx + movq 0+0-128(%rsi),%r8 + movq 0+8-128(%rsi),%rax + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq 16+0-128(%rsi),%r9 + shlb $4,%dl + movq 16+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,0(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,0(%rbp) + movq 32+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,0-128(%rbp) + movq 32+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,1(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,8(%rbp) + movq 48+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,8-128(%rbp) + movq 48+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,2(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,16(%rbp) + movq 64+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,16-128(%rbp) + movq 64+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,3(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,24(%rbp) + movq 80+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,24-128(%rbp) + movq 80+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,4(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,32(%rbp) + movq 96+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,32-128(%rbp) + movq 96+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,5(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,40(%rbp) + movq 112+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,40-128(%rbp) + movq 112+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,6(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,48(%rbp) + movq 128+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,48-128(%rbp) + movq 128+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,7(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,56(%rbp) + movq 144+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,56-128(%rbp) + movq 144+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,8(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,64(%rbp) + movq 160+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,64-128(%rbp) + movq 160+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,9(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,72(%rbp) + movq 176+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,72-128(%rbp) + movq 176+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,10(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,80(%rbp) + movq 192+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,80-128(%rbp) + movq 192+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,11(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,88(%rbp) + movq 208+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,88-128(%rbp) + movq 208+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,12(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,96(%rbp) + movq 224+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,96-128(%rbp) + movq 224+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,13(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,104(%rbp) + movq 240+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,104-128(%rbp) + movq 240+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,14(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,112(%rbp) + shlb $4,%dl + movq %rax,112-128(%rbp) + shlq $60,%r10 + movb %dl,15(%rsp) + orq %r10,%rbx + movq %r9,120(%rbp) + movq %rbx,120-128(%rbp) + addq $-128,%rsi + movq 8(%rdi),%r8 + movq 0(%rdi),%r9 + addq %r14,%r15 + leaq .Lrem_8bit(%rip),%r11 + jmp .Louter_loop +.align 16 +.Louter_loop: + xorq (%r14),%r9 + movq 8(%r14),%rdx + leaq 16(%r14),%r14 + xorq %r8,%rdx + movq %r9,(%rdi) + movq %rdx,8(%rdi) + shrq $32,%rdx + xorq %rax,%rax + roll $8,%edx + movb %dl,%al + movzbl %dl,%ebx + shlb $4,%al + shrl $4,%ebx + roll $8,%edx + movq 8(%rsi,%rax,1),%r8 + movq (%rsi,%rax,1),%r9 + movb %dl,%al + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + xorq %r8,%r12 + movq %r9,%r10 + shrq $8,%r8 + movzbq %r12b,%r12 + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + movl 8(%rdi),%edx + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + movl 4(%rdi),%edx + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + movl 0(%rdi),%edx + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + andl $240,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + movl -4(%rdi),%edx + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + movzwq (%r11,%r12,2),%r12 + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + shlq $48,%r12 + xorq %r10,%r8 + xorq %r12,%r9 + movzbq %r8b,%r13 + shrq $4,%r8 + movq %r9,%r10 + shlb $4,%r13b + shrq $4,%r9 + xorq 8(%rsi,%rcx,1),%r8 + movzwq (%r11,%r13,2),%r13 + shlq $60,%r10 + xorq (%rsi,%rcx,1),%r9 + xorq %r10,%r8 + shlq $48,%r13 + bswapq %r8 + xorq %r13,%r9 + bswapq %r9 + cmpq %r15,%r14 + jb .Louter_loop + movq %r8,8(%rdi) + movq %r9,(%rdi) + + leaq 280+48(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq 0(%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lghash_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size gcm_ghash_4bit,.-gcm_ghash_4bit +.globl gcm_init_clmul +.type gcm_init_clmul,@function +.align 16 +gcm_init_clmul: +.cfi_startproc +.L_init_clmul: + movdqu (%rsi),%xmm2 + pshufd $78,%xmm2,%xmm2 + + + pshufd $255,%xmm2,%xmm4 + movdqa %xmm2,%xmm3 + psllq $1,%xmm2 + pxor %xmm5,%xmm5 + psrlq $63,%xmm3 + pcmpgtd %xmm4,%xmm5 + pslldq $8,%xmm3 + por %xmm3,%xmm2 + + + pand .L0x1c2_polynomial(%rip),%xmm5 + pxor %xmm5,%xmm2 + + + pshufd $78,%xmm2,%xmm6 + movdqa %xmm2,%xmm0 + pxor %xmm2,%xmm6 + movdqa %xmm0,%xmm1 + pshufd $78,%xmm0,%xmm3 + pxor %xmm0,%xmm3 +.byte 102,15,58,68,194,0 +.byte 102,15,58,68,202,17 +.byte 102,15,58,68,222,0 + pxor %xmm0,%xmm3 + pxor %xmm1,%xmm3 + + movdqa %xmm3,%xmm4 + psrldq $8,%xmm3 + pslldq $8,%xmm4 + pxor %xmm3,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 + pshufd $78,%xmm2,%xmm3 + pshufd $78,%xmm0,%xmm4 + pxor %xmm2,%xmm3 + movdqu %xmm2,0(%rdi) + pxor %xmm0,%xmm4 + movdqu %xmm0,16(%rdi) +.byte 102,15,58,15,227,8 + movdqu %xmm4,32(%rdi) + movdqa %xmm0,%xmm1 + pshufd $78,%xmm0,%xmm3 + pxor %xmm0,%xmm3 +.byte 102,15,58,68,194,0 +.byte 102,15,58,68,202,17 +.byte 102,15,58,68,222,0 + pxor %xmm0,%xmm3 + pxor %xmm1,%xmm3 + + movdqa %xmm3,%xmm4 + psrldq $8,%xmm3 + pslldq $8,%xmm4 + pxor %xmm3,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 + movdqa %xmm0,%xmm5 + movdqa %xmm0,%xmm1 + pshufd $78,%xmm0,%xmm3 + pxor %xmm0,%xmm3 +.byte 102,15,58,68,194,0 +.byte 102,15,58,68,202,17 +.byte 102,15,58,68,222,0 + pxor %xmm0,%xmm3 + pxor %xmm1,%xmm3 + + movdqa %xmm3,%xmm4 + psrldq $8,%xmm3 + pslldq $8,%xmm4 + pxor %xmm3,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 + pshufd $78,%xmm5,%xmm3 + pshufd $78,%xmm0,%xmm4 + pxor %xmm5,%xmm3 + movdqu %xmm5,48(%rdi) + pxor %xmm0,%xmm4 + movdqu %xmm0,64(%rdi) +.byte 102,15,58,15,227,8 + movdqu %xmm4,80(%rdi) + .byte 0xf3,0xc3 +.cfi_endproc +.size gcm_init_clmul,.-gcm_init_clmul +.globl gcm_gmult_clmul +.type gcm_gmult_clmul,@function +.align 16 +gcm_gmult_clmul: +.cfi_startproc +.L_gmult_clmul: + movdqu (%rdi),%xmm0 + movdqa .Lbswap_mask(%rip),%xmm5 + movdqu (%rsi),%xmm2 + movdqu 32(%rsi),%xmm4 +.byte 102,15,56,0,197 + movdqa %xmm0,%xmm1 + pshufd $78,%xmm0,%xmm3 + pxor %xmm0,%xmm3 +.byte 102,15,58,68,194,0 +.byte 102,15,58,68,202,17 +.byte 102,15,58,68,220,0 + pxor %xmm0,%xmm3 + pxor %xmm1,%xmm3 + + movdqa %xmm3,%xmm4 + psrldq $8,%xmm3 + pslldq $8,%xmm4 + pxor %xmm3,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 +.byte 102,15,56,0,197 + movdqu %xmm0,(%rdi) + .byte 0xf3,0xc3 +.cfi_endproc +.size gcm_gmult_clmul,.-gcm_gmult_clmul +.globl gcm_ghash_clmul +.type gcm_ghash_clmul,@function +.align 32 +gcm_ghash_clmul: +.cfi_startproc +.L_ghash_clmul: + movdqa .Lbswap_mask(%rip),%xmm10 + + movdqu (%rdi),%xmm0 + movdqu (%rsi),%xmm2 + movdqu 32(%rsi),%xmm7 +.byte 102,65,15,56,0,194 + + subq $0x10,%rcx + jz .Lodd_tail + + movdqu 16(%rsi),%xmm6 + movl OPENSSL_ia32cap_P+4(%rip),%eax + cmpq $0x30,%rcx + jb .Lskip4x + + andl $71303168,%eax + cmpl $4194304,%eax + je .Lskip4x + + subq $0x30,%rcx + movq $0xA040608020C0E000,%rax + movdqu 48(%rsi),%xmm14 + movdqu 64(%rsi),%xmm15 + + + + + movdqu 48(%rdx),%xmm3 + movdqu 32(%rdx),%xmm11 +.byte 102,65,15,56,0,218 +.byte 102,69,15,56,0,218 + movdqa %xmm3,%xmm5 + pshufd $78,%xmm3,%xmm4 + pxor %xmm3,%xmm4 +.byte 102,15,58,68,218,0 +.byte 102,15,58,68,234,17 +.byte 102,15,58,68,231,0 + + movdqa %xmm11,%xmm13 + pshufd $78,%xmm11,%xmm12 + pxor %xmm11,%xmm12 +.byte 102,68,15,58,68,222,0 +.byte 102,68,15,58,68,238,17 +.byte 102,68,15,58,68,231,16 + xorps %xmm11,%xmm3 + xorps %xmm13,%xmm5 + movups 80(%rsi),%xmm7 + xorps %xmm12,%xmm4 + + movdqu 16(%rdx),%xmm11 + movdqu 0(%rdx),%xmm8 +.byte 102,69,15,56,0,218 +.byte 102,69,15,56,0,194 + movdqa %xmm11,%xmm13 + pshufd $78,%xmm11,%xmm12 + pxor %xmm8,%xmm0 + pxor %xmm11,%xmm12 +.byte 102,69,15,58,68,222,0 + movdqa %xmm0,%xmm1 + pshufd $78,%xmm0,%xmm8 + pxor %xmm0,%xmm8 +.byte 102,69,15,58,68,238,17 +.byte 102,68,15,58,68,231,0 + xorps %xmm11,%xmm3 + xorps %xmm13,%xmm5 + + leaq 64(%rdx),%rdx + subq $0x40,%rcx + jc .Ltail4x + + jmp .Lmod4_loop +.align 32 +.Lmod4_loop: +.byte 102,65,15,58,68,199,0 + xorps %xmm12,%xmm4 + movdqu 48(%rdx),%xmm11 +.byte 102,69,15,56,0,218 +.byte 102,65,15,58,68,207,17 + xorps %xmm3,%xmm0 + movdqu 32(%rdx),%xmm3 + movdqa %xmm11,%xmm13 +.byte 102,68,15,58,68,199,16 + pshufd $78,%xmm11,%xmm12 + xorps %xmm5,%xmm1 + pxor %xmm11,%xmm12 +.byte 102,65,15,56,0,218 + movups 32(%rsi),%xmm7 + xorps %xmm4,%xmm8 +.byte 102,68,15,58,68,218,0 + pshufd $78,%xmm3,%xmm4 + + pxor %xmm0,%xmm8 + movdqa %xmm3,%xmm5 + pxor %xmm1,%xmm8 + pxor %xmm3,%xmm4 + movdqa %xmm8,%xmm9 +.byte 102,68,15,58,68,234,17 + pslldq $8,%xmm8 + psrldq $8,%xmm9 + pxor %xmm8,%xmm0 + movdqa .L7_mask(%rip),%xmm8 + pxor %xmm9,%xmm1 +.byte 102,76,15,110,200 + + pand %xmm0,%xmm8 +.byte 102,69,15,56,0,200 + pxor %xmm0,%xmm9 +.byte 102,68,15,58,68,231,0 + psllq $57,%xmm9 + movdqa %xmm9,%xmm8 + pslldq $8,%xmm9 +.byte 102,15,58,68,222,0 + psrldq $8,%xmm8 + pxor %xmm9,%xmm0 + pxor %xmm8,%xmm1 + movdqu 0(%rdx),%xmm8 + + movdqa %xmm0,%xmm9 + psrlq $1,%xmm0 +.byte 102,15,58,68,238,17 + xorps %xmm11,%xmm3 + movdqu 16(%rdx),%xmm11 +.byte 102,69,15,56,0,218 +.byte 102,15,58,68,231,16 + xorps %xmm13,%xmm5 + movups 80(%rsi),%xmm7 +.byte 102,69,15,56,0,194 + pxor %xmm9,%xmm1 + pxor %xmm0,%xmm9 + psrlq $5,%xmm0 + + movdqa %xmm11,%xmm13 + pxor %xmm12,%xmm4 + pshufd $78,%xmm11,%xmm12 + pxor %xmm9,%xmm0 + pxor %xmm8,%xmm1 + pxor %xmm11,%xmm12 +.byte 102,69,15,58,68,222,0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 + movdqa %xmm0,%xmm1 +.byte 102,69,15,58,68,238,17 + xorps %xmm11,%xmm3 + pshufd $78,%xmm0,%xmm8 + pxor %xmm0,%xmm8 + +.byte 102,68,15,58,68,231,0 + xorps %xmm13,%xmm5 + + leaq 64(%rdx),%rdx + subq $0x40,%rcx + jnc .Lmod4_loop + +.Ltail4x: +.byte 102,65,15,58,68,199,0 +.byte 102,65,15,58,68,207,17 +.byte 102,68,15,58,68,199,16 + xorps %xmm12,%xmm4 + xorps %xmm3,%xmm0 + xorps %xmm5,%xmm1 + pxor %xmm0,%xmm1 + pxor %xmm4,%xmm8 + + pxor %xmm1,%xmm8 + pxor %xmm0,%xmm1 + + movdqa %xmm8,%xmm9 + psrldq $8,%xmm8 + pslldq $8,%xmm9 + pxor %xmm8,%xmm1 + pxor %xmm9,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 + addq $0x40,%rcx + jz .Ldone + movdqu 32(%rsi),%xmm7 + subq $0x10,%rcx + jz .Lodd_tail +.Lskip4x: + + + + + + movdqu (%rdx),%xmm8 + movdqu 16(%rdx),%xmm3 +.byte 102,69,15,56,0,194 +.byte 102,65,15,56,0,218 + pxor %xmm8,%xmm0 + + movdqa %xmm3,%xmm5 + pshufd $78,%xmm3,%xmm4 + pxor %xmm3,%xmm4 +.byte 102,15,58,68,218,0 +.byte 102,15,58,68,234,17 +.byte 102,15,58,68,231,0 + + leaq 32(%rdx),%rdx + nop + subq $0x20,%rcx + jbe .Leven_tail + nop + jmp .Lmod_loop + +.align 32 +.Lmod_loop: + movdqa %xmm0,%xmm1 + movdqa %xmm4,%xmm8 + pshufd $78,%xmm0,%xmm4 + pxor %xmm0,%xmm4 + +.byte 102,15,58,68,198,0 +.byte 102,15,58,68,206,17 +.byte 102,15,58,68,231,16 + + pxor %xmm3,%xmm0 + pxor %xmm5,%xmm1 + movdqu (%rdx),%xmm9 + pxor %xmm0,%xmm8 +.byte 102,69,15,56,0,202 + movdqu 16(%rdx),%xmm3 + + pxor %xmm1,%xmm8 + pxor %xmm9,%xmm1 + pxor %xmm8,%xmm4 +.byte 102,65,15,56,0,218 + movdqa %xmm4,%xmm8 + psrldq $8,%xmm8 + pslldq $8,%xmm4 + pxor %xmm8,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm3,%xmm5 + + movdqa %xmm0,%xmm9 + movdqa %xmm0,%xmm8 + psllq $5,%xmm0 + pxor %xmm0,%xmm8 +.byte 102,15,58,68,218,0 + psllq $1,%xmm0 + pxor %xmm8,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm8 + pslldq $8,%xmm0 + psrldq $8,%xmm8 + pxor %xmm9,%xmm0 + pshufd $78,%xmm5,%xmm4 + pxor %xmm8,%xmm1 + pxor %xmm5,%xmm4 + + movdqa %xmm0,%xmm9 + psrlq $1,%xmm0 +.byte 102,15,58,68,234,17 + pxor %xmm9,%xmm1 + pxor %xmm0,%xmm9 + psrlq $5,%xmm0 + pxor %xmm9,%xmm0 + leaq 32(%rdx),%rdx + psrlq $1,%xmm0 +.byte 102,15,58,68,231,0 + pxor %xmm1,%xmm0 + + subq $0x20,%rcx + ja .Lmod_loop + +.Leven_tail: + movdqa %xmm0,%xmm1 + movdqa %xmm4,%xmm8 + pshufd $78,%xmm0,%xmm4 + pxor %xmm0,%xmm4 + +.byte 102,15,58,68,198,0 +.byte 102,15,58,68,206,17 +.byte 102,15,58,68,231,16 + + pxor %xmm3,%xmm0 + pxor %xmm5,%xmm1 + pxor %xmm0,%xmm8 + pxor %xmm1,%xmm8 + pxor %xmm8,%xmm4 + movdqa %xmm4,%xmm8 + psrldq $8,%xmm8 + pslldq $8,%xmm4 + pxor %xmm8,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 + testq %rcx,%rcx + jnz .Ldone + +.Lodd_tail: + movdqu (%rdx),%xmm8 +.byte 102,69,15,56,0,194 + pxor %xmm8,%xmm0 + movdqa %xmm0,%xmm1 + pshufd $78,%xmm0,%xmm3 + pxor %xmm0,%xmm3 +.byte 102,15,58,68,194,0 +.byte 102,15,58,68,202,17 +.byte 102,15,58,68,223,0 + pxor %xmm0,%xmm3 + pxor %xmm1,%xmm3 + + movdqa %xmm3,%xmm4 + psrldq $8,%xmm3 + pslldq $8,%xmm4 + pxor %xmm3,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 +.Ldone: +.byte 102,65,15,56,0,194 + movdqu %xmm0,(%rdi) + .byte 0xf3,0xc3 +.cfi_endproc +.size gcm_ghash_clmul,.-gcm_ghash_clmul +.globl gcm_init_avx +.type gcm_init_avx,@function +.align 32 +gcm_init_avx: +.cfi_startproc + vzeroupper + + vmovdqu (%rsi),%xmm2 + vpshufd $78,%xmm2,%xmm2 + + + vpshufd $255,%xmm2,%xmm4 + vpsrlq $63,%xmm2,%xmm3 + vpsllq $1,%xmm2,%xmm2 + vpxor %xmm5,%xmm5,%xmm5 + vpcmpgtd %xmm4,%xmm5,%xmm5 + vpslldq $8,%xmm3,%xmm3 + vpor %xmm3,%xmm2,%xmm2 + + + vpand .L0x1c2_polynomial(%rip),%xmm5,%xmm5 + vpxor %xmm5,%xmm2,%xmm2 + + vpunpckhqdq %xmm2,%xmm2,%xmm6 + vmovdqa %xmm2,%xmm0 + vpxor %xmm2,%xmm6,%xmm6 + movq $4,%r10 + jmp .Linit_start_avx +.align 32 +.Linit_loop_avx: + vpalignr $8,%xmm3,%xmm4,%xmm5 + vmovdqu %xmm5,-16(%rdi) + vpunpckhqdq %xmm0,%xmm0,%xmm3 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x11,%xmm2,%xmm0,%xmm1 + vpclmulqdq $0x00,%xmm2,%xmm0,%xmm0 + vpclmulqdq $0x00,%xmm6,%xmm3,%xmm3 + vpxor %xmm0,%xmm1,%xmm4 + vpxor %xmm4,%xmm3,%xmm3 + + vpslldq $8,%xmm3,%xmm4 + vpsrldq $8,%xmm3,%xmm3 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm3,%xmm1,%xmm1 + vpsllq $57,%xmm0,%xmm3 + vpsllq $62,%xmm0,%xmm4 + vpxor %xmm3,%xmm4,%xmm4 + vpsllq $63,%xmm0,%xmm3 + vpxor %xmm3,%xmm4,%xmm4 + vpslldq $8,%xmm4,%xmm3 + vpsrldq $8,%xmm4,%xmm4 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm4,%xmm1,%xmm1 + + vpsrlq $1,%xmm0,%xmm4 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpsrlq $5,%xmm4,%xmm4 + vpxor %xmm4,%xmm0,%xmm0 + vpsrlq $1,%xmm0,%xmm0 + vpxor %xmm1,%xmm0,%xmm0 +.Linit_start_avx: + vmovdqa %xmm0,%xmm5 + vpunpckhqdq %xmm0,%xmm0,%xmm3 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x11,%xmm2,%xmm0,%xmm1 + vpclmulqdq $0x00,%xmm2,%xmm0,%xmm0 + vpclmulqdq $0x00,%xmm6,%xmm3,%xmm3 + vpxor %xmm0,%xmm1,%xmm4 + vpxor %xmm4,%xmm3,%xmm3 + + vpslldq $8,%xmm3,%xmm4 + vpsrldq $8,%xmm3,%xmm3 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm3,%xmm1,%xmm1 + vpsllq $57,%xmm0,%xmm3 + vpsllq $62,%xmm0,%xmm4 + vpxor %xmm3,%xmm4,%xmm4 + vpsllq $63,%xmm0,%xmm3 + vpxor %xmm3,%xmm4,%xmm4 + vpslldq $8,%xmm4,%xmm3 + vpsrldq $8,%xmm4,%xmm4 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm4,%xmm1,%xmm1 + + vpsrlq $1,%xmm0,%xmm4 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpsrlq $5,%xmm4,%xmm4 + vpxor %xmm4,%xmm0,%xmm0 + vpsrlq $1,%xmm0,%xmm0 + vpxor %xmm1,%xmm0,%xmm0 + vpshufd $78,%xmm5,%xmm3 + vpshufd $78,%xmm0,%xmm4 + vpxor %xmm5,%xmm3,%xmm3 + vmovdqu %xmm5,0(%rdi) + vpxor %xmm0,%xmm4,%xmm4 + vmovdqu %xmm0,16(%rdi) + leaq 48(%rdi),%rdi + subq $1,%r10 + jnz .Linit_loop_avx + + vpalignr $8,%xmm4,%xmm3,%xmm5 + vmovdqu %xmm5,-16(%rdi) + + vzeroupper + .byte 0xf3,0xc3 +.cfi_endproc +.size gcm_init_avx,.-gcm_init_avx +.globl gcm_gmult_avx +.type gcm_gmult_avx,@function +.align 32 +gcm_gmult_avx: +.cfi_startproc + jmp .L_gmult_clmul +.cfi_endproc +.size gcm_gmult_avx,.-gcm_gmult_avx +.globl gcm_ghash_avx +.type gcm_ghash_avx,@function +.align 32 +gcm_ghash_avx: +.cfi_startproc + vzeroupper + + vmovdqu (%rdi),%xmm10 + leaq .L0x1c2_polynomial(%rip),%r10 + leaq 64(%rsi),%rsi + vmovdqu .Lbswap_mask(%rip),%xmm13 + vpshufb %xmm13,%xmm10,%xmm10 + cmpq $0x80,%rcx + jb .Lshort_avx + subq $0x80,%rcx + + vmovdqu 112(%rdx),%xmm14 + vmovdqu 0-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm14 + vmovdqu 32-64(%rsi),%xmm7 + + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vmovdqu 96(%rdx),%xmm15 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpxor %xmm14,%xmm9,%xmm9 + vpshufb %xmm13,%xmm15,%xmm15 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 16-64(%rsi),%xmm6 + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vmovdqu 80(%rdx),%xmm14 + vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2 + vpxor %xmm15,%xmm8,%xmm8 + + vpshufb %xmm13,%xmm14,%xmm14 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4 + vmovdqu 48-64(%rsi),%xmm6 + vpxor %xmm14,%xmm9,%xmm9 + vmovdqu 64(%rdx),%xmm15 + vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5 + vmovdqu 80-64(%rsi),%xmm7 + + vpshufb %xmm13,%xmm15,%xmm15 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpxor %xmm1,%xmm4,%xmm4 + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 64-64(%rsi),%xmm6 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2 + vpxor %xmm15,%xmm8,%xmm8 + + vmovdqu 48(%rdx),%xmm14 + vpxor %xmm3,%xmm0,%xmm0 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3 + vpxor %xmm4,%xmm1,%xmm1 + vpshufb %xmm13,%xmm14,%xmm14 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4 + vmovdqu 96-64(%rsi),%xmm6 + vpxor %xmm5,%xmm2,%xmm2 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5 + vmovdqu 128-64(%rsi),%xmm7 + vpxor %xmm14,%xmm9,%xmm9 + + vmovdqu 32(%rdx),%xmm15 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpxor %xmm1,%xmm4,%xmm4 + vpshufb %xmm13,%xmm15,%xmm15 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 112-64(%rsi),%xmm6 + vpxor %xmm2,%xmm5,%xmm5 + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2 + vpxor %xmm15,%xmm8,%xmm8 + + vmovdqu 16(%rdx),%xmm14 + vpxor %xmm3,%xmm0,%xmm0 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3 + vpxor %xmm4,%xmm1,%xmm1 + vpshufb %xmm13,%xmm14,%xmm14 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4 + vmovdqu 144-64(%rsi),%xmm6 + vpxor %xmm5,%xmm2,%xmm2 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5 + vmovdqu 176-64(%rsi),%xmm7 + vpxor %xmm14,%xmm9,%xmm9 + + vmovdqu (%rdx),%xmm15 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpxor %xmm1,%xmm4,%xmm4 + vpshufb %xmm13,%xmm15,%xmm15 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 160-64(%rsi),%xmm6 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm7,%xmm9,%xmm2 + + leaq 128(%rdx),%rdx + cmpq $0x80,%rcx + jb .Ltail_avx + + vpxor %xmm10,%xmm15,%xmm15 + subq $0x80,%rcx + jmp .Loop8x_avx + +.align 32 +.Loop8x_avx: + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vmovdqu 112(%rdx),%xmm14 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm15,%xmm8,%xmm8 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm10 + vpshufb %xmm13,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm11 + vmovdqu 0-64(%rsi),%xmm6 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm12 + vmovdqu 32-64(%rsi),%xmm7 + vpxor %xmm14,%xmm9,%xmm9 + + vmovdqu 96(%rdx),%xmm15 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpxor %xmm3,%xmm10,%xmm10 + vpshufb %xmm13,%xmm15,%xmm15 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vxorps %xmm4,%xmm11,%xmm11 + vmovdqu 16-64(%rsi),%xmm6 + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2 + vpxor %xmm5,%xmm12,%xmm12 + vxorps %xmm15,%xmm8,%xmm8 + + vmovdqu 80(%rdx),%xmm14 + vpxor %xmm10,%xmm12,%xmm12 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3 + vpxor %xmm11,%xmm12,%xmm12 + vpslldq $8,%xmm12,%xmm9 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4 + vpsrldq $8,%xmm12,%xmm12 + vpxor %xmm9,%xmm10,%xmm10 + vmovdqu 48-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm14 + vxorps %xmm12,%xmm11,%xmm11 + vpxor %xmm1,%xmm4,%xmm4 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5 + vmovdqu 80-64(%rsi),%xmm7 + vpxor %xmm14,%xmm9,%xmm9 + vpxor %xmm2,%xmm5,%xmm5 + + vmovdqu 64(%rdx),%xmm15 + vpalignr $8,%xmm10,%xmm10,%xmm12 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpshufb %xmm13,%xmm15,%xmm15 + vpxor %xmm3,%xmm0,%xmm0 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 64-64(%rsi),%xmm6 + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm4,%xmm1,%xmm1 + vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2 + vxorps %xmm15,%xmm8,%xmm8 + vpxor %xmm5,%xmm2,%xmm2 + + vmovdqu 48(%rdx),%xmm14 + vpclmulqdq $0x10,(%r10),%xmm10,%xmm10 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3 + vpshufb %xmm13,%xmm14,%xmm14 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4 + vmovdqu 96-64(%rsi),%xmm6 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5 + vmovdqu 128-64(%rsi),%xmm7 + vpxor %xmm14,%xmm9,%xmm9 + vpxor %xmm2,%xmm5,%xmm5 + + vmovdqu 32(%rdx),%xmm15 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpshufb %xmm13,%xmm15,%xmm15 + vpxor %xmm3,%xmm0,%xmm0 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 112-64(%rsi),%xmm6 + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm4,%xmm1,%xmm1 + vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2 + vpxor %xmm15,%xmm8,%xmm8 + vpxor %xmm5,%xmm2,%xmm2 + vxorps %xmm12,%xmm10,%xmm10 + + vmovdqu 16(%rdx),%xmm14 + vpalignr $8,%xmm10,%xmm10,%xmm12 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3 + vpshufb %xmm13,%xmm14,%xmm14 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4 + vmovdqu 144-64(%rsi),%xmm6 + vpclmulqdq $0x10,(%r10),%xmm10,%xmm10 + vxorps %xmm11,%xmm12,%xmm12 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5 + vmovdqu 176-64(%rsi),%xmm7 + vpxor %xmm14,%xmm9,%xmm9 + vpxor %xmm2,%xmm5,%xmm5 + + vmovdqu (%rdx),%xmm15 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpshufb %xmm13,%xmm15,%xmm15 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 160-64(%rsi),%xmm6 + vpxor %xmm12,%xmm15,%xmm15 + vpclmulqdq $0x10,%xmm7,%xmm9,%xmm2 + vpxor %xmm10,%xmm15,%xmm15 + + leaq 128(%rdx),%rdx + subq $0x80,%rcx + jnc .Loop8x_avx + + addq $0x80,%rcx + jmp .Ltail_no_xor_avx + +.align 32 +.Lshort_avx: + vmovdqu -16(%rdx,%rcx,1),%xmm14 + leaq (%rdx,%rcx,1),%rdx + vmovdqu 0-64(%rsi),%xmm6 + vmovdqu 32-64(%rsi),%xmm7 + vpshufb %xmm13,%xmm14,%xmm15 + + vmovdqa %xmm0,%xmm3 + vmovdqa %xmm1,%xmm4 + vmovdqa %xmm2,%xmm5 + subq $0x10,%rcx + jz .Ltail_avx + + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu -32(%rdx),%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vmovdqu 16-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm15 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + vpsrldq $8,%xmm7,%xmm7 + subq $0x10,%rcx + jz .Ltail_avx + + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu -48(%rdx),%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vmovdqu 48-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm15 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + vmovdqu 80-64(%rsi),%xmm7 + subq $0x10,%rcx + jz .Ltail_avx + + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu -64(%rdx),%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vmovdqu 64-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm15 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + vpsrldq $8,%xmm7,%xmm7 + subq $0x10,%rcx + jz .Ltail_avx + + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu -80(%rdx),%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vmovdqu 96-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm15 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + vmovdqu 128-64(%rsi),%xmm7 + subq $0x10,%rcx + jz .Ltail_avx + + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu -96(%rdx),%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vmovdqu 112-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm15 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + vpsrldq $8,%xmm7,%xmm7 + subq $0x10,%rcx + jz .Ltail_avx + + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu -112(%rdx),%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vmovdqu 144-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm15 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + vmovq 184-64(%rsi),%xmm7 + subq $0x10,%rcx + jmp .Ltail_avx + +.align 32 +.Ltail_avx: + vpxor %xmm10,%xmm15,%xmm15 +.Ltail_no_xor_avx: + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + + vmovdqu (%r10),%xmm12 + + vpxor %xmm0,%xmm3,%xmm10 + vpxor %xmm1,%xmm4,%xmm11 + vpxor %xmm2,%xmm5,%xmm5 + + vpxor %xmm10,%xmm5,%xmm5 + vpxor %xmm11,%xmm5,%xmm5 + vpslldq $8,%xmm5,%xmm9 + vpsrldq $8,%xmm5,%xmm5 + vpxor %xmm9,%xmm10,%xmm10 + vpxor %xmm5,%xmm11,%xmm11 + + vpclmulqdq $0x10,%xmm12,%xmm10,%xmm9 + vpalignr $8,%xmm10,%xmm10,%xmm10 + vpxor %xmm9,%xmm10,%xmm10 + + vpclmulqdq $0x10,%xmm12,%xmm10,%xmm9 + vpalignr $8,%xmm10,%xmm10,%xmm10 + vpxor %xmm11,%xmm10,%xmm10 + vpxor %xmm9,%xmm10,%xmm10 + + cmpq $0,%rcx + jne .Lshort_avx + + vpshufb %xmm13,%xmm10,%xmm10 + vmovdqu %xmm10,(%rdi) + vzeroupper + .byte 0xf3,0xc3 +.cfi_endproc +.size gcm_ghash_avx,.-gcm_ghash_avx +.align 64 +.Lbswap_mask: +.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +.L0x1c2_polynomial: +.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 +.L7_mask: +.long 7,0,7,0 +.L7_mask_poly: +.long 7,0,450,0 +.align 64 +.type .Lrem_4bit,@object +.Lrem_4bit: +.long 0,0,0,471859200,0,943718400,0,610271232 +.long 0,1887436800,0,1822425088,0,1220542464,0,1423966208 +.long 0,3774873600,0,4246732800,0,3644850176,0,3311403008 +.long 0,2441084928,0,2376073216,0,2847932416,0,3051356160 +.type .Lrem_8bit,@object +.Lrem_8bit: +.value 0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E +.value 0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E +.value 0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E +.value 0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E +.value 0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E +.value 0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E +.value 0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E +.value 0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E +.value 0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE +.value 0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE +.value 0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE +.value 0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE +.value 0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E +.value 0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E +.value 0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE +.value 0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE +.value 0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E +.value 0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E +.value 0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E +.value 0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E +.value 0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E +.value 0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E +.value 0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E +.value 0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E +.value 0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE +.value 0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE +.value 0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE +.value 0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE +.value 0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E +.value 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E +.value 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE +.value 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE + +.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 64 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/poly1305/poly1305-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/poly1305/poly1305-x86_64.s new file mode 100644 index 0000000..8f2554e --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/poly1305/poly1305-x86_64.s @@ -0,0 +1,2068 @@ +.text + + + +.globl poly1305_init +.hidden poly1305_init +.globl poly1305_blocks +.hidden poly1305_blocks +.globl poly1305_emit +.hidden poly1305_emit + +.type poly1305_init,@function +.align 32 +poly1305_init: +.cfi_startproc + xorq %rax,%rax + movq %rax,0(%rdi) + movq %rax,8(%rdi) + movq %rax,16(%rdi) + + cmpq $0,%rsi + je .Lno_key + + leaq poly1305_blocks(%rip),%r10 + leaq poly1305_emit(%rip),%r11 + movq OPENSSL_ia32cap_P+4(%rip),%r9 + leaq poly1305_blocks_avx(%rip),%rax + leaq poly1305_emit_avx(%rip),%rcx + btq $28,%r9 + cmovcq %rax,%r10 + cmovcq %rcx,%r11 + leaq poly1305_blocks_avx2(%rip),%rax + btq $37,%r9 + cmovcq %rax,%r10 + movq $0x0ffffffc0fffffff,%rax + movq $0x0ffffffc0ffffffc,%rcx + andq 0(%rsi),%rax + andq 8(%rsi),%rcx + movq %rax,24(%rdi) + movq %rcx,32(%rdi) + movq %r10,0(%rdx) + movq %r11,8(%rdx) + movl $1,%eax +.Lno_key: + .byte 0xf3,0xc3 +.cfi_endproc +.size poly1305_init,.-poly1305_init + +.type poly1305_blocks,@function +.align 32 +poly1305_blocks: +.cfi_startproc +.Lblocks: + shrq $4,%rdx + jz .Lno_data + + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lblocks_body: + + movq %rdx,%r15 + + movq 24(%rdi),%r11 + movq 32(%rdi),%r13 + + movq 0(%rdi),%r14 + movq 8(%rdi),%rbx + movq 16(%rdi),%rbp + + movq %r13,%r12 + shrq $2,%r13 + movq %r12,%rax + addq %r12,%r13 + jmp .Loop + +.align 32 +.Loop: + addq 0(%rsi),%r14 + adcq 8(%rsi),%rbx + leaq 16(%rsi),%rsi + adcq %rcx,%rbp + mulq %r14 + movq %rax,%r9 + movq %r11,%rax + movq %rdx,%r10 + + mulq %r14 + movq %rax,%r14 + movq %r11,%rax + movq %rdx,%r8 + + mulq %rbx + addq %rax,%r9 + movq %r13,%rax + adcq %rdx,%r10 + + mulq %rbx + movq %rbp,%rbx + addq %rax,%r14 + adcq %rdx,%r8 + + imulq %r13,%rbx + addq %rbx,%r9 + movq %r8,%rbx + adcq $0,%r10 + + imulq %r11,%rbp + addq %r9,%rbx + movq $-4,%rax + adcq %rbp,%r10 + + andq %r10,%rax + movq %r10,%rbp + shrq $2,%r10 + andq $3,%rbp + addq %r10,%rax + addq %rax,%r14 + adcq $0,%rbx + adcq $0,%rbp + movq %r12,%rax + decq %r15 + jnz .Loop + + movq %r14,0(%rdi) + movq %rbx,8(%rdi) + movq %rbp,16(%rdi) + + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbp +.cfi_restore %rbp + movq 40(%rsp),%rbx +.cfi_restore %rbx + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lno_data: +.Lblocks_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size poly1305_blocks,.-poly1305_blocks + +.type poly1305_emit,@function +.align 32 +poly1305_emit: +.cfi_startproc +.Lemit: + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + + movq %r8,%rax + addq $5,%r8 + movq %r9,%rcx + adcq $0,%r9 + adcq $0,%r10 + shrq $2,%r10 + cmovnzq %r8,%rax + cmovnzq %r9,%rcx + + addq 0(%rdx),%rax + adcq 8(%rdx),%rcx + movq %rax,0(%rsi) + movq %rcx,8(%rsi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size poly1305_emit,.-poly1305_emit +.type __poly1305_block,@function +.align 32 +__poly1305_block: +.cfi_startproc + mulq %r14 + movq %rax,%r9 + movq %r11,%rax + movq %rdx,%r10 + + mulq %r14 + movq %rax,%r14 + movq %r11,%rax + movq %rdx,%r8 + + mulq %rbx + addq %rax,%r9 + movq %r13,%rax + adcq %rdx,%r10 + + mulq %rbx + movq %rbp,%rbx + addq %rax,%r14 + adcq %rdx,%r8 + + imulq %r13,%rbx + addq %rbx,%r9 + movq %r8,%rbx + adcq $0,%r10 + + imulq %r11,%rbp + addq %r9,%rbx + movq $-4,%rax + adcq %rbp,%r10 + + andq %r10,%rax + movq %r10,%rbp + shrq $2,%r10 + andq $3,%rbp + addq %r10,%rax + addq %rax,%r14 + adcq $0,%rbx + adcq $0,%rbp + .byte 0xf3,0xc3 +.cfi_endproc +.size __poly1305_block,.-__poly1305_block + +.type __poly1305_init_avx,@function +.align 32 +__poly1305_init_avx: +.cfi_startproc + movq %r11,%r14 + movq %r12,%rbx + xorq %rbp,%rbp + + leaq 48+64(%rdi),%rdi + + movq %r12,%rax + call __poly1305_block + + movl $0x3ffffff,%eax + movl $0x3ffffff,%edx + movq %r14,%r8 + andl %r14d,%eax + movq %r11,%r9 + andl %r11d,%edx + movl %eax,-64(%rdi) + shrq $26,%r8 + movl %edx,-60(%rdi) + shrq $26,%r9 + + movl $0x3ffffff,%eax + movl $0x3ffffff,%edx + andl %r8d,%eax + andl %r9d,%edx + movl %eax,-48(%rdi) + leal (%rax,%rax,4),%eax + movl %edx,-44(%rdi) + leal (%rdx,%rdx,4),%edx + movl %eax,-32(%rdi) + shrq $26,%r8 + movl %edx,-28(%rdi) + shrq $26,%r9 + + movq %rbx,%rax + movq %r12,%rdx + shlq $12,%rax + shlq $12,%rdx + orq %r8,%rax + orq %r9,%rdx + andl $0x3ffffff,%eax + andl $0x3ffffff,%edx + movl %eax,-16(%rdi) + leal (%rax,%rax,4),%eax + movl %edx,-12(%rdi) + leal (%rdx,%rdx,4),%edx + movl %eax,0(%rdi) + movq %rbx,%r8 + movl %edx,4(%rdi) + movq %r12,%r9 + + movl $0x3ffffff,%eax + movl $0x3ffffff,%edx + shrq $14,%r8 + shrq $14,%r9 + andl %r8d,%eax + andl %r9d,%edx + movl %eax,16(%rdi) + leal (%rax,%rax,4),%eax + movl %edx,20(%rdi) + leal (%rdx,%rdx,4),%edx + movl %eax,32(%rdi) + shrq $26,%r8 + movl %edx,36(%rdi) + shrq $26,%r9 + + movq %rbp,%rax + shlq $24,%rax + orq %rax,%r8 + movl %r8d,48(%rdi) + leaq (%r8,%r8,4),%r8 + movl %r9d,52(%rdi) + leaq (%r9,%r9,4),%r9 + movl %r8d,64(%rdi) + movl %r9d,68(%rdi) + + movq %r12,%rax + call __poly1305_block + + movl $0x3ffffff,%eax + movq %r14,%r8 + andl %r14d,%eax + shrq $26,%r8 + movl %eax,-52(%rdi) + + movl $0x3ffffff,%edx + andl %r8d,%edx + movl %edx,-36(%rdi) + leal (%rdx,%rdx,4),%edx + shrq $26,%r8 + movl %edx,-20(%rdi) + + movq %rbx,%rax + shlq $12,%rax + orq %r8,%rax + andl $0x3ffffff,%eax + movl %eax,-4(%rdi) + leal (%rax,%rax,4),%eax + movq %rbx,%r8 + movl %eax,12(%rdi) + + movl $0x3ffffff,%edx + shrq $14,%r8 + andl %r8d,%edx + movl %edx,28(%rdi) + leal (%rdx,%rdx,4),%edx + shrq $26,%r8 + movl %edx,44(%rdi) + + movq %rbp,%rax + shlq $24,%rax + orq %rax,%r8 + movl %r8d,60(%rdi) + leaq (%r8,%r8,4),%r8 + movl %r8d,76(%rdi) + + movq %r12,%rax + call __poly1305_block + + movl $0x3ffffff,%eax + movq %r14,%r8 + andl %r14d,%eax + shrq $26,%r8 + movl %eax,-56(%rdi) + + movl $0x3ffffff,%edx + andl %r8d,%edx + movl %edx,-40(%rdi) + leal (%rdx,%rdx,4),%edx + shrq $26,%r8 + movl %edx,-24(%rdi) + + movq %rbx,%rax + shlq $12,%rax + orq %r8,%rax + andl $0x3ffffff,%eax + movl %eax,-8(%rdi) + leal (%rax,%rax,4),%eax + movq %rbx,%r8 + movl %eax,8(%rdi) + + movl $0x3ffffff,%edx + shrq $14,%r8 + andl %r8d,%edx + movl %edx,24(%rdi) + leal (%rdx,%rdx,4),%edx + shrq $26,%r8 + movl %edx,40(%rdi) + + movq %rbp,%rax + shlq $24,%rax + orq %rax,%r8 + movl %r8d,56(%rdi) + leaq (%r8,%r8,4),%r8 + movl %r8d,72(%rdi) + + leaq -48-64(%rdi),%rdi + .byte 0xf3,0xc3 +.cfi_endproc +.size __poly1305_init_avx,.-__poly1305_init_avx + +.type poly1305_blocks_avx,@function +.align 32 +poly1305_blocks_avx: +.cfi_startproc + movl 20(%rdi),%r8d + cmpq $128,%rdx + jae .Lblocks_avx + testl %r8d,%r8d + jz .Lblocks + +.Lblocks_avx: + andq $-16,%rdx + jz .Lno_data_avx + + vzeroupper + + testl %r8d,%r8d + jz .Lbase2_64_avx + + testq $31,%rdx + jz .Leven_avx + + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lblocks_avx_body: + + movq %rdx,%r15 + + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movl 16(%rdi),%ebp + + movq 24(%rdi),%r11 + movq 32(%rdi),%r13 + + + movl %r8d,%r14d + andq $-2147483648,%r8 + movq %r9,%r12 + movl %r9d,%ebx + andq $-2147483648,%r9 + + shrq $6,%r8 + shlq $52,%r12 + addq %r8,%r14 + shrq $12,%rbx + shrq $18,%r9 + addq %r12,%r14 + adcq %r9,%rbx + + movq %rbp,%r8 + shlq $40,%r8 + shrq $24,%rbp + addq %r8,%rbx + adcq $0,%rbp + + movq $-4,%r9 + movq %rbp,%r8 + andq %rbp,%r9 + shrq $2,%r8 + andq $3,%rbp + addq %r9,%r8 + addq %r8,%r14 + adcq $0,%rbx + adcq $0,%rbp + + movq %r13,%r12 + movq %r13,%rax + shrq $2,%r13 + addq %r12,%r13 + + addq 0(%rsi),%r14 + adcq 8(%rsi),%rbx + leaq 16(%rsi),%rsi + adcq %rcx,%rbp + + call __poly1305_block + + testq %rcx,%rcx + jz .Lstore_base2_64_avx + + + movq %r14,%rax + movq %r14,%rdx + shrq $52,%r14 + movq %rbx,%r11 + movq %rbx,%r12 + shrq $26,%rdx + andq $0x3ffffff,%rax + shlq $12,%r11 + andq $0x3ffffff,%rdx + shrq $14,%rbx + orq %r11,%r14 + shlq $24,%rbp + andq $0x3ffffff,%r14 + shrq $40,%r12 + andq $0x3ffffff,%rbx + orq %r12,%rbp + + subq $16,%r15 + jz .Lstore_base2_26_avx + + vmovd %eax,%xmm0 + vmovd %edx,%xmm1 + vmovd %r14d,%xmm2 + vmovd %ebx,%xmm3 + vmovd %ebp,%xmm4 + jmp .Lproceed_avx + +.align 32 +.Lstore_base2_64_avx: + movq %r14,0(%rdi) + movq %rbx,8(%rdi) + movq %rbp,16(%rdi) + jmp .Ldone_avx + +.align 16 +.Lstore_base2_26_avx: + movl %eax,0(%rdi) + movl %edx,4(%rdi) + movl %r14d,8(%rdi) + movl %ebx,12(%rdi) + movl %ebp,16(%rdi) +.align 16 +.Ldone_avx: + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbp +.cfi_restore %rbp + movq 40(%rsp),%rbx +.cfi_restore %rbx + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lno_data_avx: +.Lblocks_avx_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc + +.align 32 +.Lbase2_64_avx: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lbase2_64_avx_body: + + movq %rdx,%r15 + + movq 24(%rdi),%r11 + movq 32(%rdi),%r13 + + movq 0(%rdi),%r14 + movq 8(%rdi),%rbx + movl 16(%rdi),%ebp + + movq %r13,%r12 + movq %r13,%rax + shrq $2,%r13 + addq %r12,%r13 + + testq $31,%rdx + jz .Linit_avx + + addq 0(%rsi),%r14 + adcq 8(%rsi),%rbx + leaq 16(%rsi),%rsi + adcq %rcx,%rbp + subq $16,%r15 + + call __poly1305_block + +.Linit_avx: + + movq %r14,%rax + movq %r14,%rdx + shrq $52,%r14 + movq %rbx,%r8 + movq %rbx,%r9 + shrq $26,%rdx + andq $0x3ffffff,%rax + shlq $12,%r8 + andq $0x3ffffff,%rdx + shrq $14,%rbx + orq %r8,%r14 + shlq $24,%rbp + andq $0x3ffffff,%r14 + shrq $40,%r9 + andq $0x3ffffff,%rbx + orq %r9,%rbp + + vmovd %eax,%xmm0 + vmovd %edx,%xmm1 + vmovd %r14d,%xmm2 + vmovd %ebx,%xmm3 + vmovd %ebp,%xmm4 + movl $1,20(%rdi) + + call __poly1305_init_avx + +.Lproceed_avx: + movq %r15,%rdx + + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbp +.cfi_restore %rbp + movq 40(%rsp),%rbx +.cfi_restore %rbx + leaq 48(%rsp),%rax + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lbase2_64_avx_epilogue: + jmp .Ldo_avx +.cfi_endproc + +.align 32 +.Leven_avx: +.cfi_startproc + vmovd 0(%rdi),%xmm0 + vmovd 4(%rdi),%xmm1 + vmovd 8(%rdi),%xmm2 + vmovd 12(%rdi),%xmm3 + vmovd 16(%rdi),%xmm4 + +.Ldo_avx: + leaq -88(%rsp),%r11 +.cfi_def_cfa %r11,0x60 + subq $0x178,%rsp + subq $64,%rdx + leaq -32(%rsi),%rax + cmovcq %rax,%rsi + + vmovdqu 48(%rdi),%xmm14 + leaq 112(%rdi),%rdi + leaq .Lconst(%rip),%rcx + + + + vmovdqu 32(%rsi),%xmm5 + vmovdqu 48(%rsi),%xmm6 + vmovdqa 64(%rcx),%xmm15 + + vpsrldq $6,%xmm5,%xmm7 + vpsrldq $6,%xmm6,%xmm8 + vpunpckhqdq %xmm6,%xmm5,%xmm9 + vpunpcklqdq %xmm6,%xmm5,%xmm5 + vpunpcklqdq %xmm8,%xmm7,%xmm8 + + vpsrlq $40,%xmm9,%xmm9 + vpsrlq $26,%xmm5,%xmm6 + vpand %xmm15,%xmm5,%xmm5 + vpsrlq $4,%xmm8,%xmm7 + vpand %xmm15,%xmm6,%xmm6 + vpsrlq $30,%xmm8,%xmm8 + vpand %xmm15,%xmm7,%xmm7 + vpand %xmm15,%xmm8,%xmm8 + vpor 32(%rcx),%xmm9,%xmm9 + + jbe .Lskip_loop_avx + + + vmovdqu -48(%rdi),%xmm11 + vmovdqu -32(%rdi),%xmm12 + vpshufd $0xEE,%xmm14,%xmm13 + vpshufd $0x44,%xmm14,%xmm10 + vmovdqa %xmm13,-144(%r11) + vmovdqa %xmm10,0(%rsp) + vpshufd $0xEE,%xmm11,%xmm14 + vmovdqu -16(%rdi),%xmm10 + vpshufd $0x44,%xmm11,%xmm11 + vmovdqa %xmm14,-128(%r11) + vmovdqa %xmm11,16(%rsp) + vpshufd $0xEE,%xmm12,%xmm13 + vmovdqu 0(%rdi),%xmm11 + vpshufd $0x44,%xmm12,%xmm12 + vmovdqa %xmm13,-112(%r11) + vmovdqa %xmm12,32(%rsp) + vpshufd $0xEE,%xmm10,%xmm14 + vmovdqu 16(%rdi),%xmm12 + vpshufd $0x44,%xmm10,%xmm10 + vmovdqa %xmm14,-96(%r11) + vmovdqa %xmm10,48(%rsp) + vpshufd $0xEE,%xmm11,%xmm13 + vmovdqu 32(%rdi),%xmm10 + vpshufd $0x44,%xmm11,%xmm11 + vmovdqa %xmm13,-80(%r11) + vmovdqa %xmm11,64(%rsp) + vpshufd $0xEE,%xmm12,%xmm14 + vmovdqu 48(%rdi),%xmm11 + vpshufd $0x44,%xmm12,%xmm12 + vmovdqa %xmm14,-64(%r11) + vmovdqa %xmm12,80(%rsp) + vpshufd $0xEE,%xmm10,%xmm13 + vmovdqu 64(%rdi),%xmm12 + vpshufd $0x44,%xmm10,%xmm10 + vmovdqa %xmm13,-48(%r11) + vmovdqa %xmm10,96(%rsp) + vpshufd $0xEE,%xmm11,%xmm14 + vpshufd $0x44,%xmm11,%xmm11 + vmovdqa %xmm14,-32(%r11) + vmovdqa %xmm11,112(%rsp) + vpshufd $0xEE,%xmm12,%xmm13 + vmovdqa 0(%rsp),%xmm14 + vpshufd $0x44,%xmm12,%xmm12 + vmovdqa %xmm13,-16(%r11) + vmovdqa %xmm12,128(%rsp) + + jmp .Loop_avx + +.align 32 +.Loop_avx: + + + + + + + + + + + + + + + + + + + + + vpmuludq %xmm5,%xmm14,%xmm10 + vpmuludq %xmm6,%xmm14,%xmm11 + vmovdqa %xmm2,32(%r11) + vpmuludq %xmm7,%xmm14,%xmm12 + vmovdqa 16(%rsp),%xmm2 + vpmuludq %xmm8,%xmm14,%xmm13 + vpmuludq %xmm9,%xmm14,%xmm14 + + vmovdqa %xmm0,0(%r11) + vpmuludq 32(%rsp),%xmm9,%xmm0 + vmovdqa %xmm1,16(%r11) + vpmuludq %xmm8,%xmm2,%xmm1 + vpaddq %xmm0,%xmm10,%xmm10 + vpaddq %xmm1,%xmm14,%xmm14 + vmovdqa %xmm3,48(%r11) + vpmuludq %xmm7,%xmm2,%xmm0 + vpmuludq %xmm6,%xmm2,%xmm1 + vpaddq %xmm0,%xmm13,%xmm13 + vmovdqa 48(%rsp),%xmm3 + vpaddq %xmm1,%xmm12,%xmm12 + vmovdqa %xmm4,64(%r11) + vpmuludq %xmm5,%xmm2,%xmm2 + vpmuludq %xmm7,%xmm3,%xmm0 + vpaddq %xmm2,%xmm11,%xmm11 + + vmovdqa 64(%rsp),%xmm4 + vpaddq %xmm0,%xmm14,%xmm14 + vpmuludq %xmm6,%xmm3,%xmm1 + vpmuludq %xmm5,%xmm3,%xmm3 + vpaddq %xmm1,%xmm13,%xmm13 + vmovdqa 80(%rsp),%xmm2 + vpaddq %xmm3,%xmm12,%xmm12 + vpmuludq %xmm9,%xmm4,%xmm0 + vpmuludq %xmm8,%xmm4,%xmm4 + vpaddq %xmm0,%xmm11,%xmm11 + vmovdqa 96(%rsp),%xmm3 + vpaddq %xmm4,%xmm10,%xmm10 + + vmovdqa 128(%rsp),%xmm4 + vpmuludq %xmm6,%xmm2,%xmm1 + vpmuludq %xmm5,%xmm2,%xmm2 + vpaddq %xmm1,%xmm14,%xmm14 + vpaddq %xmm2,%xmm13,%xmm13 + vpmuludq %xmm9,%xmm3,%xmm0 + vpmuludq %xmm8,%xmm3,%xmm1 + vpaddq %xmm0,%xmm12,%xmm12 + vmovdqu 0(%rsi),%xmm0 + vpaddq %xmm1,%xmm11,%xmm11 + vpmuludq %xmm7,%xmm3,%xmm3 + vpmuludq %xmm7,%xmm4,%xmm7 + vpaddq %xmm3,%xmm10,%xmm10 + + vmovdqu 16(%rsi),%xmm1 + vpaddq %xmm7,%xmm11,%xmm11 + vpmuludq %xmm8,%xmm4,%xmm8 + vpmuludq %xmm9,%xmm4,%xmm9 + vpsrldq $6,%xmm0,%xmm2 + vpaddq %xmm8,%xmm12,%xmm12 + vpaddq %xmm9,%xmm13,%xmm13 + vpsrldq $6,%xmm1,%xmm3 + vpmuludq 112(%rsp),%xmm5,%xmm9 + vpmuludq %xmm6,%xmm4,%xmm5 + vpunpckhqdq %xmm1,%xmm0,%xmm4 + vpaddq %xmm9,%xmm14,%xmm14 + vmovdqa -144(%r11),%xmm9 + vpaddq %xmm5,%xmm10,%xmm10 + + vpunpcklqdq %xmm1,%xmm0,%xmm0 + vpunpcklqdq %xmm3,%xmm2,%xmm3 + + + vpsrldq $5,%xmm4,%xmm4 + vpsrlq $26,%xmm0,%xmm1 + vpand %xmm15,%xmm0,%xmm0 + vpsrlq $4,%xmm3,%xmm2 + vpand %xmm15,%xmm1,%xmm1 + vpand 0(%rcx),%xmm4,%xmm4 + vpsrlq $30,%xmm3,%xmm3 + vpand %xmm15,%xmm2,%xmm2 + vpand %xmm15,%xmm3,%xmm3 + vpor 32(%rcx),%xmm4,%xmm4 + + vpaddq 0(%r11),%xmm0,%xmm0 + vpaddq 16(%r11),%xmm1,%xmm1 + vpaddq 32(%r11),%xmm2,%xmm2 + vpaddq 48(%r11),%xmm3,%xmm3 + vpaddq 64(%r11),%xmm4,%xmm4 + + leaq 32(%rsi),%rax + leaq 64(%rsi),%rsi + subq $64,%rdx + cmovcq %rax,%rsi + + + + + + + + + + + vpmuludq %xmm0,%xmm9,%xmm5 + vpmuludq %xmm1,%xmm9,%xmm6 + vpaddq %xmm5,%xmm10,%xmm10 + vpaddq %xmm6,%xmm11,%xmm11 + vmovdqa -128(%r11),%xmm7 + vpmuludq %xmm2,%xmm9,%xmm5 + vpmuludq %xmm3,%xmm9,%xmm6 + vpaddq %xmm5,%xmm12,%xmm12 + vpaddq %xmm6,%xmm13,%xmm13 + vpmuludq %xmm4,%xmm9,%xmm9 + vpmuludq -112(%r11),%xmm4,%xmm5 + vpaddq %xmm9,%xmm14,%xmm14 + + vpaddq %xmm5,%xmm10,%xmm10 + vpmuludq %xmm2,%xmm7,%xmm6 + vpmuludq %xmm3,%xmm7,%xmm5 + vpaddq %xmm6,%xmm13,%xmm13 + vmovdqa -96(%r11),%xmm8 + vpaddq %xmm5,%xmm14,%xmm14 + vpmuludq %xmm1,%xmm7,%xmm6 + vpmuludq %xmm0,%xmm7,%xmm7 + vpaddq %xmm6,%xmm12,%xmm12 + vpaddq %xmm7,%xmm11,%xmm11 + + vmovdqa -80(%r11),%xmm9 + vpmuludq %xmm2,%xmm8,%xmm5 + vpmuludq %xmm1,%xmm8,%xmm6 + vpaddq %xmm5,%xmm14,%xmm14 + vpaddq %xmm6,%xmm13,%xmm13 + vmovdqa -64(%r11),%xmm7 + vpmuludq %xmm0,%xmm8,%xmm8 + vpmuludq %xmm4,%xmm9,%xmm5 + vpaddq %xmm8,%xmm12,%xmm12 + vpaddq %xmm5,%xmm11,%xmm11 + vmovdqa -48(%r11),%xmm8 + vpmuludq %xmm3,%xmm9,%xmm9 + vpmuludq %xmm1,%xmm7,%xmm6 + vpaddq %xmm9,%xmm10,%xmm10 + + vmovdqa -16(%r11),%xmm9 + vpaddq %xmm6,%xmm14,%xmm14 + vpmuludq %xmm0,%xmm7,%xmm7 + vpmuludq %xmm4,%xmm8,%xmm5 + vpaddq %xmm7,%xmm13,%xmm13 + vpaddq %xmm5,%xmm12,%xmm12 + vmovdqu 32(%rsi),%xmm5 + vpmuludq %xmm3,%xmm8,%xmm7 + vpmuludq %xmm2,%xmm8,%xmm8 + vpaddq %xmm7,%xmm11,%xmm11 + vmovdqu 48(%rsi),%xmm6 + vpaddq %xmm8,%xmm10,%xmm10 + + vpmuludq %xmm2,%xmm9,%xmm2 + vpmuludq %xmm3,%xmm9,%xmm3 + vpsrldq $6,%xmm5,%xmm7 + vpaddq %xmm2,%xmm11,%xmm11 + vpmuludq %xmm4,%xmm9,%xmm4 + vpsrldq $6,%xmm6,%xmm8 + vpaddq %xmm3,%xmm12,%xmm2 + vpaddq %xmm4,%xmm13,%xmm3 + vpmuludq -32(%r11),%xmm0,%xmm4 + vpmuludq %xmm1,%xmm9,%xmm0 + vpunpckhqdq %xmm6,%xmm5,%xmm9 + vpaddq %xmm4,%xmm14,%xmm4 + vpaddq %xmm0,%xmm10,%xmm0 + + vpunpcklqdq %xmm6,%xmm5,%xmm5 + vpunpcklqdq %xmm8,%xmm7,%xmm8 + + + vpsrldq $5,%xmm9,%xmm9 + vpsrlq $26,%xmm5,%xmm6 + vmovdqa 0(%rsp),%xmm14 + vpand %xmm15,%xmm5,%xmm5 + vpsrlq $4,%xmm8,%xmm7 + vpand %xmm15,%xmm6,%xmm6 + vpand 0(%rcx),%xmm9,%xmm9 + vpsrlq $30,%xmm8,%xmm8 + vpand %xmm15,%xmm7,%xmm7 + vpand %xmm15,%xmm8,%xmm8 + vpor 32(%rcx),%xmm9,%xmm9 + + + + + + vpsrlq $26,%xmm3,%xmm13 + vpand %xmm15,%xmm3,%xmm3 + vpaddq %xmm13,%xmm4,%xmm4 + + vpsrlq $26,%xmm0,%xmm10 + vpand %xmm15,%xmm0,%xmm0 + vpaddq %xmm10,%xmm11,%xmm1 + + vpsrlq $26,%xmm4,%xmm10 + vpand %xmm15,%xmm4,%xmm4 + + vpsrlq $26,%xmm1,%xmm11 + vpand %xmm15,%xmm1,%xmm1 + vpaddq %xmm11,%xmm2,%xmm2 + + vpaddq %xmm10,%xmm0,%xmm0 + vpsllq $2,%xmm10,%xmm10 + vpaddq %xmm10,%xmm0,%xmm0 + + vpsrlq $26,%xmm2,%xmm12 + vpand %xmm15,%xmm2,%xmm2 + vpaddq %xmm12,%xmm3,%xmm3 + + vpsrlq $26,%xmm0,%xmm10 + vpand %xmm15,%xmm0,%xmm0 + vpaddq %xmm10,%xmm1,%xmm1 + + vpsrlq $26,%xmm3,%xmm13 + vpand %xmm15,%xmm3,%xmm3 + vpaddq %xmm13,%xmm4,%xmm4 + + ja .Loop_avx + +.Lskip_loop_avx: + + + + vpshufd $0x10,%xmm14,%xmm14 + addq $32,%rdx + jnz .Long_tail_avx + + vpaddq %xmm2,%xmm7,%xmm7 + vpaddq %xmm0,%xmm5,%xmm5 + vpaddq %xmm1,%xmm6,%xmm6 + vpaddq %xmm3,%xmm8,%xmm8 + vpaddq %xmm4,%xmm9,%xmm9 + +.Long_tail_avx: + vmovdqa %xmm2,32(%r11) + vmovdqa %xmm0,0(%r11) + vmovdqa %xmm1,16(%r11) + vmovdqa %xmm3,48(%r11) + vmovdqa %xmm4,64(%r11) + + + + + + + + vpmuludq %xmm7,%xmm14,%xmm12 + vpmuludq %xmm5,%xmm14,%xmm10 + vpshufd $0x10,-48(%rdi),%xmm2 + vpmuludq %xmm6,%xmm14,%xmm11 + vpmuludq %xmm8,%xmm14,%xmm13 + vpmuludq %xmm9,%xmm14,%xmm14 + + vpmuludq %xmm8,%xmm2,%xmm0 + vpaddq %xmm0,%xmm14,%xmm14 + vpshufd $0x10,-32(%rdi),%xmm3 + vpmuludq %xmm7,%xmm2,%xmm1 + vpaddq %xmm1,%xmm13,%xmm13 + vpshufd $0x10,-16(%rdi),%xmm4 + vpmuludq %xmm6,%xmm2,%xmm0 + vpaddq %xmm0,%xmm12,%xmm12 + vpmuludq %xmm5,%xmm2,%xmm2 + vpaddq %xmm2,%xmm11,%xmm11 + vpmuludq %xmm9,%xmm3,%xmm3 + vpaddq %xmm3,%xmm10,%xmm10 + + vpshufd $0x10,0(%rdi),%xmm2 + vpmuludq %xmm7,%xmm4,%xmm1 + vpaddq %xmm1,%xmm14,%xmm14 + vpmuludq %xmm6,%xmm4,%xmm0 + vpaddq %xmm0,%xmm13,%xmm13 + vpshufd $0x10,16(%rdi),%xmm3 + vpmuludq %xmm5,%xmm4,%xmm4 + vpaddq %xmm4,%xmm12,%xmm12 + vpmuludq %xmm9,%xmm2,%xmm1 + vpaddq %xmm1,%xmm11,%xmm11 + vpshufd $0x10,32(%rdi),%xmm4 + vpmuludq %xmm8,%xmm2,%xmm2 + vpaddq %xmm2,%xmm10,%xmm10 + + vpmuludq %xmm6,%xmm3,%xmm0 + vpaddq %xmm0,%xmm14,%xmm14 + vpmuludq %xmm5,%xmm3,%xmm3 + vpaddq %xmm3,%xmm13,%xmm13 + vpshufd $0x10,48(%rdi),%xmm2 + vpmuludq %xmm9,%xmm4,%xmm1 + vpaddq %xmm1,%xmm12,%xmm12 + vpshufd $0x10,64(%rdi),%xmm3 + vpmuludq %xmm8,%xmm4,%xmm0 + vpaddq %xmm0,%xmm11,%xmm11 + vpmuludq %xmm7,%xmm4,%xmm4 + vpaddq %xmm4,%xmm10,%xmm10 + + vpmuludq %xmm5,%xmm2,%xmm2 + vpaddq %xmm2,%xmm14,%xmm14 + vpmuludq %xmm9,%xmm3,%xmm1 + vpaddq %xmm1,%xmm13,%xmm13 + vpmuludq %xmm8,%xmm3,%xmm0 + vpaddq %xmm0,%xmm12,%xmm12 + vpmuludq %xmm7,%xmm3,%xmm1 + vpaddq %xmm1,%xmm11,%xmm11 + vpmuludq %xmm6,%xmm3,%xmm3 + vpaddq %xmm3,%xmm10,%xmm10 + + jz .Lshort_tail_avx + + vmovdqu 0(%rsi),%xmm0 + vmovdqu 16(%rsi),%xmm1 + + vpsrldq $6,%xmm0,%xmm2 + vpsrldq $6,%xmm1,%xmm3 + vpunpckhqdq %xmm1,%xmm0,%xmm4 + vpunpcklqdq %xmm1,%xmm0,%xmm0 + vpunpcklqdq %xmm3,%xmm2,%xmm3 + + vpsrlq $40,%xmm4,%xmm4 + vpsrlq $26,%xmm0,%xmm1 + vpand %xmm15,%xmm0,%xmm0 + vpsrlq $4,%xmm3,%xmm2 + vpand %xmm15,%xmm1,%xmm1 + vpsrlq $30,%xmm3,%xmm3 + vpand %xmm15,%xmm2,%xmm2 + vpand %xmm15,%xmm3,%xmm3 + vpor 32(%rcx),%xmm4,%xmm4 + + vpshufd $0x32,-64(%rdi),%xmm9 + vpaddq 0(%r11),%xmm0,%xmm0 + vpaddq 16(%r11),%xmm1,%xmm1 + vpaddq 32(%r11),%xmm2,%xmm2 + vpaddq 48(%r11),%xmm3,%xmm3 + vpaddq 64(%r11),%xmm4,%xmm4 + + + + + vpmuludq %xmm0,%xmm9,%xmm5 + vpaddq %xmm5,%xmm10,%xmm10 + vpmuludq %xmm1,%xmm9,%xmm6 + vpaddq %xmm6,%xmm11,%xmm11 + vpmuludq %xmm2,%xmm9,%xmm5 + vpaddq %xmm5,%xmm12,%xmm12 + vpshufd $0x32,-48(%rdi),%xmm7 + vpmuludq %xmm3,%xmm9,%xmm6 + vpaddq %xmm6,%xmm13,%xmm13 + vpmuludq %xmm4,%xmm9,%xmm9 + vpaddq %xmm9,%xmm14,%xmm14 + + vpmuludq %xmm3,%xmm7,%xmm5 + vpaddq %xmm5,%xmm14,%xmm14 + vpshufd $0x32,-32(%rdi),%xmm8 + vpmuludq %xmm2,%xmm7,%xmm6 + vpaddq %xmm6,%xmm13,%xmm13 + vpshufd $0x32,-16(%rdi),%xmm9 + vpmuludq %xmm1,%xmm7,%xmm5 + vpaddq %xmm5,%xmm12,%xmm12 + vpmuludq %xmm0,%xmm7,%xmm7 + vpaddq %xmm7,%xmm11,%xmm11 + vpmuludq %xmm4,%xmm8,%xmm8 + vpaddq %xmm8,%xmm10,%xmm10 + + vpshufd $0x32,0(%rdi),%xmm7 + vpmuludq %xmm2,%xmm9,%xmm6 + vpaddq %xmm6,%xmm14,%xmm14 + vpmuludq %xmm1,%xmm9,%xmm5 + vpaddq %xmm5,%xmm13,%xmm13 + vpshufd $0x32,16(%rdi),%xmm8 + vpmuludq %xmm0,%xmm9,%xmm9 + vpaddq %xmm9,%xmm12,%xmm12 + vpmuludq %xmm4,%xmm7,%xmm6 + vpaddq %xmm6,%xmm11,%xmm11 + vpshufd $0x32,32(%rdi),%xmm9 + vpmuludq %xmm3,%xmm7,%xmm7 + vpaddq %xmm7,%xmm10,%xmm10 + + vpmuludq %xmm1,%xmm8,%xmm5 + vpaddq %xmm5,%xmm14,%xmm14 + vpmuludq %xmm0,%xmm8,%xmm8 + vpaddq %xmm8,%xmm13,%xmm13 + vpshufd $0x32,48(%rdi),%xmm7 + vpmuludq %xmm4,%xmm9,%xmm6 + vpaddq %xmm6,%xmm12,%xmm12 + vpshufd $0x32,64(%rdi),%xmm8 + vpmuludq %xmm3,%xmm9,%xmm5 + vpaddq %xmm5,%xmm11,%xmm11 + vpmuludq %xmm2,%xmm9,%xmm9 + vpaddq %xmm9,%xmm10,%xmm10 + + vpmuludq %xmm0,%xmm7,%xmm7 + vpaddq %xmm7,%xmm14,%xmm14 + vpmuludq %xmm4,%xmm8,%xmm6 + vpaddq %xmm6,%xmm13,%xmm13 + vpmuludq %xmm3,%xmm8,%xmm5 + vpaddq %xmm5,%xmm12,%xmm12 + vpmuludq %xmm2,%xmm8,%xmm6 + vpaddq %xmm6,%xmm11,%xmm11 + vpmuludq %xmm1,%xmm8,%xmm8 + vpaddq %xmm8,%xmm10,%xmm10 + +.Lshort_tail_avx: + + + + vpsrldq $8,%xmm14,%xmm9 + vpsrldq $8,%xmm13,%xmm8 + vpsrldq $8,%xmm11,%xmm6 + vpsrldq $8,%xmm10,%xmm5 + vpsrldq $8,%xmm12,%xmm7 + vpaddq %xmm8,%xmm13,%xmm13 + vpaddq %xmm9,%xmm14,%xmm14 + vpaddq %xmm5,%xmm10,%xmm10 + vpaddq %xmm6,%xmm11,%xmm11 + vpaddq %xmm7,%xmm12,%xmm12 + + + + + vpsrlq $26,%xmm13,%xmm3 + vpand %xmm15,%xmm13,%xmm13 + vpaddq %xmm3,%xmm14,%xmm14 + + vpsrlq $26,%xmm10,%xmm0 + vpand %xmm15,%xmm10,%xmm10 + vpaddq %xmm0,%xmm11,%xmm11 + + vpsrlq $26,%xmm14,%xmm4 + vpand %xmm15,%xmm14,%xmm14 + + vpsrlq $26,%xmm11,%xmm1 + vpand %xmm15,%xmm11,%xmm11 + vpaddq %xmm1,%xmm12,%xmm12 + + vpaddq %xmm4,%xmm10,%xmm10 + vpsllq $2,%xmm4,%xmm4 + vpaddq %xmm4,%xmm10,%xmm10 + + vpsrlq $26,%xmm12,%xmm2 + vpand %xmm15,%xmm12,%xmm12 + vpaddq %xmm2,%xmm13,%xmm13 + + vpsrlq $26,%xmm10,%xmm0 + vpand %xmm15,%xmm10,%xmm10 + vpaddq %xmm0,%xmm11,%xmm11 + + vpsrlq $26,%xmm13,%xmm3 + vpand %xmm15,%xmm13,%xmm13 + vpaddq %xmm3,%xmm14,%xmm14 + + vmovd %xmm10,-112(%rdi) + vmovd %xmm11,-108(%rdi) + vmovd %xmm12,-104(%rdi) + vmovd %xmm13,-100(%rdi) + vmovd %xmm14,-96(%rdi) + leaq 88(%r11),%rsp +.cfi_def_cfa %rsp,8 + vzeroupper + .byte 0xf3,0xc3 +.cfi_endproc +.size poly1305_blocks_avx,.-poly1305_blocks_avx + +.type poly1305_emit_avx,@function +.align 32 +poly1305_emit_avx: +.cfi_startproc + cmpl $0,20(%rdi) + je .Lemit + + movl 0(%rdi),%eax + movl 4(%rdi),%ecx + movl 8(%rdi),%r8d + movl 12(%rdi),%r11d + movl 16(%rdi),%r10d + + shlq $26,%rcx + movq %r8,%r9 + shlq $52,%r8 + addq %rcx,%rax + shrq $12,%r9 + addq %rax,%r8 + adcq $0,%r9 + + shlq $14,%r11 + movq %r10,%rax + shrq $24,%r10 + addq %r11,%r9 + shlq $40,%rax + addq %rax,%r9 + adcq $0,%r10 + + movq %r10,%rax + movq %r10,%rcx + andq $3,%r10 + shrq $2,%rax + andq $-4,%rcx + addq %rcx,%rax + addq %rax,%r8 + adcq $0,%r9 + adcq $0,%r10 + + movq %r8,%rax + addq $5,%r8 + movq %r9,%rcx + adcq $0,%r9 + adcq $0,%r10 + shrq $2,%r10 + cmovnzq %r8,%rax + cmovnzq %r9,%rcx + + addq 0(%rdx),%rax + adcq 8(%rdx),%rcx + movq %rax,0(%rsi) + movq %rcx,8(%rsi) + + .byte 0xf3,0xc3 +.cfi_endproc +.size poly1305_emit_avx,.-poly1305_emit_avx +.type poly1305_blocks_avx2,@function +.align 32 +poly1305_blocks_avx2: +.cfi_startproc + movl 20(%rdi),%r8d + cmpq $128,%rdx + jae .Lblocks_avx2 + testl %r8d,%r8d + jz .Lblocks + +.Lblocks_avx2: + andq $-16,%rdx + jz .Lno_data_avx2 + + vzeroupper + + testl %r8d,%r8d + jz .Lbase2_64_avx2 + + testq $63,%rdx + jz .Leven_avx2 + + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lblocks_avx2_body: + + movq %rdx,%r15 + + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movl 16(%rdi),%ebp + + movq 24(%rdi),%r11 + movq 32(%rdi),%r13 + + + movl %r8d,%r14d + andq $-2147483648,%r8 + movq %r9,%r12 + movl %r9d,%ebx + andq $-2147483648,%r9 + + shrq $6,%r8 + shlq $52,%r12 + addq %r8,%r14 + shrq $12,%rbx + shrq $18,%r9 + addq %r12,%r14 + adcq %r9,%rbx + + movq %rbp,%r8 + shlq $40,%r8 + shrq $24,%rbp + addq %r8,%rbx + adcq $0,%rbp + + movq $-4,%r9 + movq %rbp,%r8 + andq %rbp,%r9 + shrq $2,%r8 + andq $3,%rbp + addq %r9,%r8 + addq %r8,%r14 + adcq $0,%rbx + adcq $0,%rbp + + movq %r13,%r12 + movq %r13,%rax + shrq $2,%r13 + addq %r12,%r13 + +.Lbase2_26_pre_avx2: + addq 0(%rsi),%r14 + adcq 8(%rsi),%rbx + leaq 16(%rsi),%rsi + adcq %rcx,%rbp + subq $16,%r15 + + call __poly1305_block + movq %r12,%rax + + testq $63,%r15 + jnz .Lbase2_26_pre_avx2 + + testq %rcx,%rcx + jz .Lstore_base2_64_avx2 + + + movq %r14,%rax + movq %r14,%rdx + shrq $52,%r14 + movq %rbx,%r11 + movq %rbx,%r12 + shrq $26,%rdx + andq $0x3ffffff,%rax + shlq $12,%r11 + andq $0x3ffffff,%rdx + shrq $14,%rbx + orq %r11,%r14 + shlq $24,%rbp + andq $0x3ffffff,%r14 + shrq $40,%r12 + andq $0x3ffffff,%rbx + orq %r12,%rbp + + testq %r15,%r15 + jz .Lstore_base2_26_avx2 + + vmovd %eax,%xmm0 + vmovd %edx,%xmm1 + vmovd %r14d,%xmm2 + vmovd %ebx,%xmm3 + vmovd %ebp,%xmm4 + jmp .Lproceed_avx2 + +.align 32 +.Lstore_base2_64_avx2: + movq %r14,0(%rdi) + movq %rbx,8(%rdi) + movq %rbp,16(%rdi) + jmp .Ldone_avx2 + +.align 16 +.Lstore_base2_26_avx2: + movl %eax,0(%rdi) + movl %edx,4(%rdi) + movl %r14d,8(%rdi) + movl %ebx,12(%rdi) + movl %ebp,16(%rdi) +.align 16 +.Ldone_avx2: + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbp +.cfi_restore %rbp + movq 40(%rsp),%rbx +.cfi_restore %rbx + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lno_data_avx2: +.Lblocks_avx2_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc + +.align 32 +.Lbase2_64_avx2: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lbase2_64_avx2_body: + + movq %rdx,%r15 + + movq 24(%rdi),%r11 + movq 32(%rdi),%r13 + + movq 0(%rdi),%r14 + movq 8(%rdi),%rbx + movl 16(%rdi),%ebp + + movq %r13,%r12 + movq %r13,%rax + shrq $2,%r13 + addq %r12,%r13 + + testq $63,%rdx + jz .Linit_avx2 + +.Lbase2_64_pre_avx2: + addq 0(%rsi),%r14 + adcq 8(%rsi),%rbx + leaq 16(%rsi),%rsi + adcq %rcx,%rbp + subq $16,%r15 + + call __poly1305_block + movq %r12,%rax + + testq $63,%r15 + jnz .Lbase2_64_pre_avx2 + +.Linit_avx2: + + movq %r14,%rax + movq %r14,%rdx + shrq $52,%r14 + movq %rbx,%r8 + movq %rbx,%r9 + shrq $26,%rdx + andq $0x3ffffff,%rax + shlq $12,%r8 + andq $0x3ffffff,%rdx + shrq $14,%rbx + orq %r8,%r14 + shlq $24,%rbp + andq $0x3ffffff,%r14 + shrq $40,%r9 + andq $0x3ffffff,%rbx + orq %r9,%rbp + + vmovd %eax,%xmm0 + vmovd %edx,%xmm1 + vmovd %r14d,%xmm2 + vmovd %ebx,%xmm3 + vmovd %ebp,%xmm4 + movl $1,20(%rdi) + + call __poly1305_init_avx + +.Lproceed_avx2: + movq %r15,%rdx + movl OPENSSL_ia32cap_P+8(%rip),%r10d + movl $3221291008,%r11d + + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbp +.cfi_restore %rbp + movq 40(%rsp),%rbx +.cfi_restore %rbx + leaq 48(%rsp),%rax + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lbase2_64_avx2_epilogue: + jmp .Ldo_avx2 +.cfi_endproc + +.align 32 +.Leven_avx2: +.cfi_startproc + movl OPENSSL_ia32cap_P+8(%rip),%r10d + vmovd 0(%rdi),%xmm0 + vmovd 4(%rdi),%xmm1 + vmovd 8(%rdi),%xmm2 + vmovd 12(%rdi),%xmm3 + vmovd 16(%rdi),%xmm4 + +.Ldo_avx2: + leaq -8(%rsp),%r11 +.cfi_def_cfa %r11,16 + subq $0x128,%rsp + leaq .Lconst(%rip),%rcx + leaq 48+64(%rdi),%rdi + vmovdqa 96(%rcx),%ymm7 + + + vmovdqu -64(%rdi),%xmm9 + andq $-512,%rsp + vmovdqu -48(%rdi),%xmm10 + vmovdqu -32(%rdi),%xmm6 + vmovdqu -16(%rdi),%xmm11 + vmovdqu 0(%rdi),%xmm12 + vmovdqu 16(%rdi),%xmm13 + leaq 144(%rsp),%rax + vmovdqu 32(%rdi),%xmm14 + vpermd %ymm9,%ymm7,%ymm9 + vmovdqu 48(%rdi),%xmm15 + vpermd %ymm10,%ymm7,%ymm10 + vmovdqu 64(%rdi),%xmm5 + vpermd %ymm6,%ymm7,%ymm6 + vmovdqa %ymm9,0(%rsp) + vpermd %ymm11,%ymm7,%ymm11 + vmovdqa %ymm10,32-144(%rax) + vpermd %ymm12,%ymm7,%ymm12 + vmovdqa %ymm6,64-144(%rax) + vpermd %ymm13,%ymm7,%ymm13 + vmovdqa %ymm11,96-144(%rax) + vpermd %ymm14,%ymm7,%ymm14 + vmovdqa %ymm12,128-144(%rax) + vpermd %ymm15,%ymm7,%ymm15 + vmovdqa %ymm13,160-144(%rax) + vpermd %ymm5,%ymm7,%ymm5 + vmovdqa %ymm14,192-144(%rax) + vmovdqa %ymm15,224-144(%rax) + vmovdqa %ymm5,256-144(%rax) + vmovdqa 64(%rcx),%ymm5 + + + + vmovdqu 0(%rsi),%xmm7 + vmovdqu 16(%rsi),%xmm8 + vinserti128 $1,32(%rsi),%ymm7,%ymm7 + vinserti128 $1,48(%rsi),%ymm8,%ymm8 + leaq 64(%rsi),%rsi + + vpsrldq $6,%ymm7,%ymm9 + vpsrldq $6,%ymm8,%ymm10 + vpunpckhqdq %ymm8,%ymm7,%ymm6 + vpunpcklqdq %ymm10,%ymm9,%ymm9 + vpunpcklqdq %ymm8,%ymm7,%ymm7 + + vpsrlq $30,%ymm9,%ymm10 + vpsrlq $4,%ymm9,%ymm9 + vpsrlq $26,%ymm7,%ymm8 + vpsrlq $40,%ymm6,%ymm6 + vpand %ymm5,%ymm9,%ymm9 + vpand %ymm5,%ymm7,%ymm7 + vpand %ymm5,%ymm8,%ymm8 + vpand %ymm5,%ymm10,%ymm10 + vpor 32(%rcx),%ymm6,%ymm6 + + vpaddq %ymm2,%ymm9,%ymm2 + subq $64,%rdx + jz .Ltail_avx2 + jmp .Loop_avx2 + +.align 32 +.Loop_avx2: + + + + + + + + + vpaddq %ymm0,%ymm7,%ymm0 + vmovdqa 0(%rsp),%ymm7 + vpaddq %ymm1,%ymm8,%ymm1 + vmovdqa 32(%rsp),%ymm8 + vpaddq %ymm3,%ymm10,%ymm3 + vmovdqa 96(%rsp),%ymm9 + vpaddq %ymm4,%ymm6,%ymm4 + vmovdqa 48(%rax),%ymm10 + vmovdqa 112(%rax),%ymm5 + + + + + + + + + + + + + + + + + vpmuludq %ymm2,%ymm7,%ymm13 + vpmuludq %ymm2,%ymm8,%ymm14 + vpmuludq %ymm2,%ymm9,%ymm15 + vpmuludq %ymm2,%ymm10,%ymm11 + vpmuludq %ymm2,%ymm5,%ymm12 + + vpmuludq %ymm0,%ymm8,%ymm6 + vpmuludq %ymm1,%ymm8,%ymm2 + vpaddq %ymm6,%ymm12,%ymm12 + vpaddq %ymm2,%ymm13,%ymm13 + vpmuludq %ymm3,%ymm8,%ymm6 + vpmuludq 64(%rsp),%ymm4,%ymm2 + vpaddq %ymm6,%ymm15,%ymm15 + vpaddq %ymm2,%ymm11,%ymm11 + vmovdqa -16(%rax),%ymm8 + + vpmuludq %ymm0,%ymm7,%ymm6 + vpmuludq %ymm1,%ymm7,%ymm2 + vpaddq %ymm6,%ymm11,%ymm11 + vpaddq %ymm2,%ymm12,%ymm12 + vpmuludq %ymm3,%ymm7,%ymm6 + vpmuludq %ymm4,%ymm7,%ymm2 + vmovdqu 0(%rsi),%xmm7 + vpaddq %ymm6,%ymm14,%ymm14 + vpaddq %ymm2,%ymm15,%ymm15 + vinserti128 $1,32(%rsi),%ymm7,%ymm7 + + vpmuludq %ymm3,%ymm8,%ymm6 + vpmuludq %ymm4,%ymm8,%ymm2 + vmovdqu 16(%rsi),%xmm8 + vpaddq %ymm6,%ymm11,%ymm11 + vpaddq %ymm2,%ymm12,%ymm12 + vmovdqa 16(%rax),%ymm2 + vpmuludq %ymm1,%ymm9,%ymm6 + vpmuludq %ymm0,%ymm9,%ymm9 + vpaddq %ymm6,%ymm14,%ymm14 + vpaddq %ymm9,%ymm13,%ymm13 + vinserti128 $1,48(%rsi),%ymm8,%ymm8 + leaq 64(%rsi),%rsi + + vpmuludq %ymm1,%ymm2,%ymm6 + vpmuludq %ymm0,%ymm2,%ymm2 + vpsrldq $6,%ymm7,%ymm9 + vpaddq %ymm6,%ymm15,%ymm15 + vpaddq %ymm2,%ymm14,%ymm14 + vpmuludq %ymm3,%ymm10,%ymm6 + vpmuludq %ymm4,%ymm10,%ymm2 + vpsrldq $6,%ymm8,%ymm10 + vpaddq %ymm6,%ymm12,%ymm12 + vpaddq %ymm2,%ymm13,%ymm13 + vpunpckhqdq %ymm8,%ymm7,%ymm6 + + vpmuludq %ymm3,%ymm5,%ymm3 + vpmuludq %ymm4,%ymm5,%ymm4 + vpunpcklqdq %ymm8,%ymm7,%ymm7 + vpaddq %ymm3,%ymm13,%ymm2 + vpaddq %ymm4,%ymm14,%ymm3 + vpunpcklqdq %ymm10,%ymm9,%ymm10 + vpmuludq 80(%rax),%ymm0,%ymm4 + vpmuludq %ymm1,%ymm5,%ymm0 + vmovdqa 64(%rcx),%ymm5 + vpaddq %ymm4,%ymm15,%ymm4 + vpaddq %ymm0,%ymm11,%ymm0 + + + + + vpsrlq $26,%ymm3,%ymm14 + vpand %ymm5,%ymm3,%ymm3 + vpaddq %ymm14,%ymm4,%ymm4 + + vpsrlq $26,%ymm0,%ymm11 + vpand %ymm5,%ymm0,%ymm0 + vpaddq %ymm11,%ymm12,%ymm1 + + vpsrlq $26,%ymm4,%ymm15 + vpand %ymm5,%ymm4,%ymm4 + + vpsrlq $4,%ymm10,%ymm9 + + vpsrlq $26,%ymm1,%ymm12 + vpand %ymm5,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $2,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + + vpand %ymm5,%ymm9,%ymm9 + vpsrlq $26,%ymm7,%ymm8 + + vpsrlq $26,%ymm2,%ymm13 + vpand %ymm5,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + + vpaddq %ymm9,%ymm2,%ymm2 + vpsrlq $30,%ymm10,%ymm10 + + vpsrlq $26,%ymm0,%ymm11 + vpand %ymm5,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + + vpsrlq $40,%ymm6,%ymm6 + + vpsrlq $26,%ymm3,%ymm14 + vpand %ymm5,%ymm3,%ymm3 + vpaddq %ymm14,%ymm4,%ymm4 + + vpand %ymm5,%ymm7,%ymm7 + vpand %ymm5,%ymm8,%ymm8 + vpand %ymm5,%ymm10,%ymm10 + vpor 32(%rcx),%ymm6,%ymm6 + + subq $64,%rdx + jnz .Loop_avx2 + +.byte 0x66,0x90 +.Ltail_avx2: + + + + + + + + vpaddq %ymm0,%ymm7,%ymm0 + vmovdqu 4(%rsp),%ymm7 + vpaddq %ymm1,%ymm8,%ymm1 + vmovdqu 36(%rsp),%ymm8 + vpaddq %ymm3,%ymm10,%ymm3 + vmovdqu 100(%rsp),%ymm9 + vpaddq %ymm4,%ymm6,%ymm4 + vmovdqu 52(%rax),%ymm10 + vmovdqu 116(%rax),%ymm5 + + vpmuludq %ymm2,%ymm7,%ymm13 + vpmuludq %ymm2,%ymm8,%ymm14 + vpmuludq %ymm2,%ymm9,%ymm15 + vpmuludq %ymm2,%ymm10,%ymm11 + vpmuludq %ymm2,%ymm5,%ymm12 + + vpmuludq %ymm0,%ymm8,%ymm6 + vpmuludq %ymm1,%ymm8,%ymm2 + vpaddq %ymm6,%ymm12,%ymm12 + vpaddq %ymm2,%ymm13,%ymm13 + vpmuludq %ymm3,%ymm8,%ymm6 + vpmuludq 68(%rsp),%ymm4,%ymm2 + vpaddq %ymm6,%ymm15,%ymm15 + vpaddq %ymm2,%ymm11,%ymm11 + + vpmuludq %ymm0,%ymm7,%ymm6 + vpmuludq %ymm1,%ymm7,%ymm2 + vpaddq %ymm6,%ymm11,%ymm11 + vmovdqu -12(%rax),%ymm8 + vpaddq %ymm2,%ymm12,%ymm12 + vpmuludq %ymm3,%ymm7,%ymm6 + vpmuludq %ymm4,%ymm7,%ymm2 + vpaddq %ymm6,%ymm14,%ymm14 + vpaddq %ymm2,%ymm15,%ymm15 + + vpmuludq %ymm3,%ymm8,%ymm6 + vpmuludq %ymm4,%ymm8,%ymm2 + vpaddq %ymm6,%ymm11,%ymm11 + vpaddq %ymm2,%ymm12,%ymm12 + vmovdqu 20(%rax),%ymm2 + vpmuludq %ymm1,%ymm9,%ymm6 + vpmuludq %ymm0,%ymm9,%ymm9 + vpaddq %ymm6,%ymm14,%ymm14 + vpaddq %ymm9,%ymm13,%ymm13 + + vpmuludq %ymm1,%ymm2,%ymm6 + vpmuludq %ymm0,%ymm2,%ymm2 + vpaddq %ymm6,%ymm15,%ymm15 + vpaddq %ymm2,%ymm14,%ymm14 + vpmuludq %ymm3,%ymm10,%ymm6 + vpmuludq %ymm4,%ymm10,%ymm2 + vpaddq %ymm6,%ymm12,%ymm12 + vpaddq %ymm2,%ymm13,%ymm13 + + vpmuludq %ymm3,%ymm5,%ymm3 + vpmuludq %ymm4,%ymm5,%ymm4 + vpaddq %ymm3,%ymm13,%ymm2 + vpaddq %ymm4,%ymm14,%ymm3 + vpmuludq 84(%rax),%ymm0,%ymm4 + vpmuludq %ymm1,%ymm5,%ymm0 + vmovdqa 64(%rcx),%ymm5 + vpaddq %ymm4,%ymm15,%ymm4 + vpaddq %ymm0,%ymm11,%ymm0 + + + + + vpsrldq $8,%ymm12,%ymm8 + vpsrldq $8,%ymm2,%ymm9 + vpsrldq $8,%ymm3,%ymm10 + vpsrldq $8,%ymm4,%ymm6 + vpsrldq $8,%ymm0,%ymm7 + vpaddq %ymm8,%ymm12,%ymm12 + vpaddq %ymm9,%ymm2,%ymm2 + vpaddq %ymm10,%ymm3,%ymm3 + vpaddq %ymm6,%ymm4,%ymm4 + vpaddq %ymm7,%ymm0,%ymm0 + + vpermq $0x2,%ymm3,%ymm10 + vpermq $0x2,%ymm4,%ymm6 + vpermq $0x2,%ymm0,%ymm7 + vpermq $0x2,%ymm12,%ymm8 + vpermq $0x2,%ymm2,%ymm9 + vpaddq %ymm10,%ymm3,%ymm3 + vpaddq %ymm6,%ymm4,%ymm4 + vpaddq %ymm7,%ymm0,%ymm0 + vpaddq %ymm8,%ymm12,%ymm12 + vpaddq %ymm9,%ymm2,%ymm2 + + + + + vpsrlq $26,%ymm3,%ymm14 + vpand %ymm5,%ymm3,%ymm3 + vpaddq %ymm14,%ymm4,%ymm4 + + vpsrlq $26,%ymm0,%ymm11 + vpand %ymm5,%ymm0,%ymm0 + vpaddq %ymm11,%ymm12,%ymm1 + + vpsrlq $26,%ymm4,%ymm15 + vpand %ymm5,%ymm4,%ymm4 + + vpsrlq $26,%ymm1,%ymm12 + vpand %ymm5,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $2,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + + vpsrlq $26,%ymm2,%ymm13 + vpand %ymm5,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + + vpsrlq $26,%ymm0,%ymm11 + vpand %ymm5,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + + vpsrlq $26,%ymm3,%ymm14 + vpand %ymm5,%ymm3,%ymm3 + vpaddq %ymm14,%ymm4,%ymm4 + + vmovd %xmm0,-112(%rdi) + vmovd %xmm1,-108(%rdi) + vmovd %xmm2,-104(%rdi) + vmovd %xmm3,-100(%rdi) + vmovd %xmm4,-96(%rdi) + leaq 8(%r11),%rsp +.cfi_def_cfa %rsp,8 + vzeroupper + .byte 0xf3,0xc3 +.cfi_endproc +.size poly1305_blocks_avx2,.-poly1305_blocks_avx2 +.align 64 +.Lconst: +.Lmask24: +.long 0x0ffffff,0,0x0ffffff,0,0x0ffffff,0,0x0ffffff,0 +.L129: +.long 16777216,0,16777216,0,16777216,0,16777216,0 +.Lmask26: +.long 0x3ffffff,0,0x3ffffff,0,0x3ffffff,0,0x3ffffff,0 +.Lpermd_avx2: +.long 2,2,2,3,2,0,2,1 +.Lpermd_avx512: +.long 0,0,0,1, 0,2,0,3, 0,4,0,5, 0,6,0,7 + +.L2_44_inp_permd: +.long 0,1,1,2,2,3,7,7 +.L2_44_inp_shift: +.quad 0,12,24,64 +.L2_44_mask: +.quad 0xfffffffffff,0xfffffffffff,0x3ffffffffff,0xffffffffffffffff +.L2_44_shift_rgt: +.quad 44,44,42,64 +.L2_44_shift_lft: +.quad 8,8,10,64 + +.align 64 +.Lx_mask44: +.quad 0xfffffffffff,0xfffffffffff,0xfffffffffff,0xfffffffffff +.quad 0xfffffffffff,0xfffffffffff,0xfffffffffff,0xfffffffffff +.Lx_mask42: +.quad 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff +.quad 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff +.byte 80,111,108,121,49,51,48,53,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 16 +.globl xor128_encrypt_n_pad +.type xor128_encrypt_n_pad,@function +.align 16 +xor128_encrypt_n_pad: +.cfi_startproc + subq %rdx,%rsi + subq %rdx,%rdi + movq %rcx,%r10 + shrq $4,%rcx + jz .Ltail_enc + nop +.Loop_enc_xmm: + movdqu (%rsi,%rdx,1),%xmm0 + pxor (%rdx),%xmm0 + movdqu %xmm0,(%rdi,%rdx,1) + movdqa %xmm0,(%rdx) + leaq 16(%rdx),%rdx + decq %rcx + jnz .Loop_enc_xmm + + andq $15,%r10 + jz .Ldone_enc + +.Ltail_enc: + movq $16,%rcx + subq %r10,%rcx + xorl %eax,%eax +.Loop_enc_byte: + movb (%rsi,%rdx,1),%al + xorb (%rdx),%al + movb %al,(%rdi,%rdx,1) + movb %al,(%rdx) + leaq 1(%rdx),%rdx + decq %r10 + jnz .Loop_enc_byte + + xorl %eax,%eax +.Loop_enc_pad: + movb %al,(%rdx) + leaq 1(%rdx),%rdx + decq %rcx + jnz .Loop_enc_pad + +.Ldone_enc: + movq %rdx,%rax + .byte 0xf3,0xc3 +.cfi_endproc +.size xor128_encrypt_n_pad,.-xor128_encrypt_n_pad + +.globl xor128_decrypt_n_pad +.type xor128_decrypt_n_pad,@function +.align 16 +xor128_decrypt_n_pad: +.cfi_startproc + subq %rdx,%rsi + subq %rdx,%rdi + movq %rcx,%r10 + shrq $4,%rcx + jz .Ltail_dec + nop +.Loop_dec_xmm: + movdqu (%rsi,%rdx,1),%xmm0 + movdqa (%rdx),%xmm1 + pxor %xmm0,%xmm1 + movdqu %xmm1,(%rdi,%rdx,1) + movdqa %xmm0,(%rdx) + leaq 16(%rdx),%rdx + decq %rcx + jnz .Loop_dec_xmm + + pxor %xmm1,%xmm1 + andq $15,%r10 + jz .Ldone_dec + +.Ltail_dec: + movq $16,%rcx + subq %r10,%rcx + xorl %eax,%eax + xorq %r11,%r11 +.Loop_dec_byte: + movb (%rsi,%rdx,1),%r11b + movb (%rdx),%al + xorb %r11b,%al + movb %al,(%rdi,%rdx,1) + movb %r11b,(%rdx) + leaq 1(%rdx),%rdx + decq %r10 + jnz .Loop_dec_byte + + xorl %eax,%eax +.Loop_dec_pad: + movb %al,(%rdx) + leaq 1(%rdx),%rdx + decq %rcx + jnz .Loop_dec_pad + +.Ldone_dec: + movq %rdx,%rax + .byte 0xf3,0xc3 +.cfi_endproc +.size xor128_decrypt_n_pad,.-xor128_decrypt_n_pad diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/rc4/rc4-md5-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/rc4/rc4-md5-x86_64.s new file mode 100644 index 0000000..03fbca8 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/rc4/rc4-md5-x86_64.s @@ -0,0 +1,1281 @@ +.text +.align 16 + +.globl rc4_md5_enc +.type rc4_md5_enc,@function +rc4_md5_enc: +.cfi_startproc + cmpq $0,%r9 + je .Labort + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $40,%rsp +.cfi_adjust_cfa_offset 40 +.Lbody: + movq %rcx,%r11 + movq %r9,%r12 + movq %rsi,%r13 + movq %rdx,%r14 + movq %r8,%r15 + xorq %rbp,%rbp + xorq %rcx,%rcx + + leaq 8(%rdi),%rdi + movb -8(%rdi),%bpl + movb -4(%rdi),%cl + + incb %bpl + subq %r13,%r14 + movl (%rdi,%rbp,4),%eax + addb %al,%cl + leaq (%rdi,%rbp,4),%rsi + shlq $6,%r12 + addq %r15,%r12 + movq %r12,16(%rsp) + + movq %r11,24(%rsp) + movl 0(%r11),%r8d + movl 4(%r11),%r9d + movl 8(%r11),%r10d + movl 12(%r11),%r11d + jmp .Loop + +.align 16 +.Loop: + movl %r8d,0(%rsp) + movl %r9d,4(%rsp) + movl %r10d,8(%rsp) + movl %r11d,%r12d + movl %r11d,12(%rsp) + pxor %xmm0,%xmm0 + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 0(%r15),%r8d + addb %dl,%al + movl 4(%rsi),%ebx + addl $3614090360,%r8d + xorl %r11d,%r12d + movzbl %al,%eax + movl %edx,0(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $7,%r8d + movl %r10d,%r12d + movd (%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + pxor %xmm1,%xmm1 + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 4(%r15),%r11d + addb %dl,%bl + movl 8(%rsi),%eax + addl $3905402710,%r11d + xorl %r10d,%r12d + movzbl %bl,%ebx + movl %edx,4(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $12,%r11d + movl %r9d,%r12d + movd (%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 8(%r15),%r10d + addb %dl,%al + movl 12(%rsi),%ebx + addl $606105819,%r10d + xorl %r9d,%r12d + movzbl %al,%eax + movl %edx,8(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $17,%r10d + movl %r8d,%r12d + pinsrw $1,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 12(%r15),%r9d + addb %dl,%bl + movl 16(%rsi),%eax + addl $3250441966,%r9d + xorl %r8d,%r12d + movzbl %bl,%ebx + movl %edx,12(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $22,%r9d + movl %r11d,%r12d + pinsrw $1,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 16(%r15),%r8d + addb %dl,%al + movl 20(%rsi),%ebx + addl $4118548399,%r8d + xorl %r11d,%r12d + movzbl %al,%eax + movl %edx,16(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $7,%r8d + movl %r10d,%r12d + pinsrw $2,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 20(%r15),%r11d + addb %dl,%bl + movl 24(%rsi),%eax + addl $1200080426,%r11d + xorl %r10d,%r12d + movzbl %bl,%ebx + movl %edx,20(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $12,%r11d + movl %r9d,%r12d + pinsrw $2,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 24(%r15),%r10d + addb %dl,%al + movl 28(%rsi),%ebx + addl $2821735955,%r10d + xorl %r9d,%r12d + movzbl %al,%eax + movl %edx,24(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $17,%r10d + movl %r8d,%r12d + pinsrw $3,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 28(%r15),%r9d + addb %dl,%bl + movl 32(%rsi),%eax + addl $4249261313,%r9d + xorl %r8d,%r12d + movzbl %bl,%ebx + movl %edx,28(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $22,%r9d + movl %r11d,%r12d + pinsrw $3,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 32(%r15),%r8d + addb %dl,%al + movl 36(%rsi),%ebx + addl $1770035416,%r8d + xorl %r11d,%r12d + movzbl %al,%eax + movl %edx,32(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $7,%r8d + movl %r10d,%r12d + pinsrw $4,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 36(%r15),%r11d + addb %dl,%bl + movl 40(%rsi),%eax + addl $2336552879,%r11d + xorl %r10d,%r12d + movzbl %bl,%ebx + movl %edx,36(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $12,%r11d + movl %r9d,%r12d + pinsrw $4,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 40(%r15),%r10d + addb %dl,%al + movl 44(%rsi),%ebx + addl $4294925233,%r10d + xorl %r9d,%r12d + movzbl %al,%eax + movl %edx,40(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $17,%r10d + movl %r8d,%r12d + pinsrw $5,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 44(%r15),%r9d + addb %dl,%bl + movl 48(%rsi),%eax + addl $2304563134,%r9d + xorl %r8d,%r12d + movzbl %bl,%ebx + movl %edx,44(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $22,%r9d + movl %r11d,%r12d + pinsrw $5,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 48(%r15),%r8d + addb %dl,%al + movl 52(%rsi),%ebx + addl $1804603682,%r8d + xorl %r11d,%r12d + movzbl %al,%eax + movl %edx,48(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $7,%r8d + movl %r10d,%r12d + pinsrw $6,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 52(%r15),%r11d + addb %dl,%bl + movl 56(%rsi),%eax + addl $4254626195,%r11d + xorl %r10d,%r12d + movzbl %bl,%ebx + movl %edx,52(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $12,%r11d + movl %r9d,%r12d + pinsrw $6,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 56(%r15),%r10d + addb %dl,%al + movl 60(%rsi),%ebx + addl $2792965006,%r10d + xorl %r9d,%r12d + movzbl %al,%eax + movl %edx,56(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $17,%r10d + movl %r8d,%r12d + pinsrw $7,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movdqu (%r13),%xmm2 + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 60(%r15),%r9d + addb %dl,%bl + movl 64(%rsi),%eax + addl $1236535329,%r9d + xorl %r8d,%r12d + movzbl %bl,%ebx + movl %edx,60(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $22,%r9d + movl %r10d,%r12d + pinsrw $7,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + psllq $8,%xmm1 + pxor %xmm0,%xmm2 + pxor %xmm1,%xmm2 + pxor %xmm0,%xmm0 + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 4(%r15),%r8d + addb %dl,%al + movl 68(%rsi),%ebx + addl $4129170786,%r8d + xorl %r10d,%r12d + movzbl %al,%eax + movl %edx,64(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $5,%r8d + movl %r9d,%r12d + movd (%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + pxor %xmm1,%xmm1 + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 24(%r15),%r11d + addb %dl,%bl + movl 72(%rsi),%eax + addl $3225465664,%r11d + xorl %r9d,%r12d + movzbl %bl,%ebx + movl %edx,68(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $9,%r11d + movl %r8d,%r12d + movd (%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 44(%r15),%r10d + addb %dl,%al + movl 76(%rsi),%ebx + addl $643717713,%r10d + xorl %r8d,%r12d + movzbl %al,%eax + movl %edx,72(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $14,%r10d + movl %r11d,%r12d + pinsrw $1,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 0(%r15),%r9d + addb %dl,%bl + movl 80(%rsi),%eax + addl $3921069994,%r9d + xorl %r11d,%r12d + movzbl %bl,%ebx + movl %edx,76(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $20,%r9d + movl %r10d,%r12d + pinsrw $1,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 20(%r15),%r8d + addb %dl,%al + movl 84(%rsi),%ebx + addl $3593408605,%r8d + xorl %r10d,%r12d + movzbl %al,%eax + movl %edx,80(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $5,%r8d + movl %r9d,%r12d + pinsrw $2,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 40(%r15),%r11d + addb %dl,%bl + movl 88(%rsi),%eax + addl $38016083,%r11d + xorl %r9d,%r12d + movzbl %bl,%ebx + movl %edx,84(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $9,%r11d + movl %r8d,%r12d + pinsrw $2,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 60(%r15),%r10d + addb %dl,%al + movl 92(%rsi),%ebx + addl $3634488961,%r10d + xorl %r8d,%r12d + movzbl %al,%eax + movl %edx,88(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $14,%r10d + movl %r11d,%r12d + pinsrw $3,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 16(%r15),%r9d + addb %dl,%bl + movl 96(%rsi),%eax + addl $3889429448,%r9d + xorl %r11d,%r12d + movzbl %bl,%ebx + movl %edx,92(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $20,%r9d + movl %r10d,%r12d + pinsrw $3,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 36(%r15),%r8d + addb %dl,%al + movl 100(%rsi),%ebx + addl $568446438,%r8d + xorl %r10d,%r12d + movzbl %al,%eax + movl %edx,96(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $5,%r8d + movl %r9d,%r12d + pinsrw $4,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 56(%r15),%r11d + addb %dl,%bl + movl 104(%rsi),%eax + addl $3275163606,%r11d + xorl %r9d,%r12d + movzbl %bl,%ebx + movl %edx,100(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $9,%r11d + movl %r8d,%r12d + pinsrw $4,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 12(%r15),%r10d + addb %dl,%al + movl 108(%rsi),%ebx + addl $4107603335,%r10d + xorl %r8d,%r12d + movzbl %al,%eax + movl %edx,104(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $14,%r10d + movl %r11d,%r12d + pinsrw $5,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 32(%r15),%r9d + addb %dl,%bl + movl 112(%rsi),%eax + addl $1163531501,%r9d + xorl %r11d,%r12d + movzbl %bl,%ebx + movl %edx,108(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $20,%r9d + movl %r10d,%r12d + pinsrw $5,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 52(%r15),%r8d + addb %dl,%al + movl 116(%rsi),%ebx + addl $2850285829,%r8d + xorl %r10d,%r12d + movzbl %al,%eax + movl %edx,112(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $5,%r8d + movl %r9d,%r12d + pinsrw $6,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 8(%r15),%r11d + addb %dl,%bl + movl 120(%rsi),%eax + addl $4243563512,%r11d + xorl %r9d,%r12d + movzbl %bl,%ebx + movl %edx,116(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $9,%r11d + movl %r8d,%r12d + pinsrw $6,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 28(%r15),%r10d + addb %dl,%al + movl 124(%rsi),%ebx + addl $1735328473,%r10d + xorl %r8d,%r12d + movzbl %al,%eax + movl %edx,120(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $14,%r10d + movl %r11d,%r12d + pinsrw $7,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movdqu 16(%r13),%xmm3 + addb $32,%bpl + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 48(%r15),%r9d + addb %dl,%bl + movl 0(%rdi,%rbp,4),%eax + addl $2368359562,%r9d + xorl %r11d,%r12d + movzbl %bl,%ebx + movl %edx,124(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $20,%r9d + movl %r11d,%r12d + pinsrw $7,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movq %rcx,%rsi + xorq %rcx,%rcx + movb %sil,%cl + leaq (%rdi,%rbp,4),%rsi + psllq $8,%xmm1 + pxor %xmm0,%xmm3 + pxor %xmm1,%xmm3 + pxor %xmm0,%xmm0 + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r9d,%r12d + addl 20(%r15),%r8d + addb %dl,%al + movl 4(%rsi),%ebx + addl $4294588738,%r8d + movzbl %al,%eax + addl %r12d,%r8d + movl %edx,0(%rsi) + addb %bl,%cl + roll $4,%r8d + movl %r10d,%r12d + movd (%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + pxor %xmm1,%xmm1 + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r8d,%r12d + addl 32(%r15),%r11d + addb %dl,%bl + movl 8(%rsi),%eax + addl $2272392833,%r11d + movzbl %bl,%ebx + addl %r12d,%r11d + movl %edx,4(%rsi) + addb %al,%cl + roll $11,%r11d + movl %r9d,%r12d + movd (%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r11d,%r12d + addl 44(%r15),%r10d + addb %dl,%al + movl 12(%rsi),%ebx + addl $1839030562,%r10d + movzbl %al,%eax + addl %r12d,%r10d + movl %edx,8(%rsi) + addb %bl,%cl + roll $16,%r10d + movl %r8d,%r12d + pinsrw $1,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r10d,%r12d + addl 56(%r15),%r9d + addb %dl,%bl + movl 16(%rsi),%eax + addl $4259657740,%r9d + movzbl %bl,%ebx + addl %r12d,%r9d + movl %edx,12(%rsi) + addb %al,%cl + roll $23,%r9d + movl %r11d,%r12d + pinsrw $1,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r9d,%r12d + addl 4(%r15),%r8d + addb %dl,%al + movl 20(%rsi),%ebx + addl $2763975236,%r8d + movzbl %al,%eax + addl %r12d,%r8d + movl %edx,16(%rsi) + addb %bl,%cl + roll $4,%r8d + movl %r10d,%r12d + pinsrw $2,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r8d,%r12d + addl 16(%r15),%r11d + addb %dl,%bl + movl 24(%rsi),%eax + addl $1272893353,%r11d + movzbl %bl,%ebx + addl %r12d,%r11d + movl %edx,20(%rsi) + addb %al,%cl + roll $11,%r11d + movl %r9d,%r12d + pinsrw $2,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r11d,%r12d + addl 28(%r15),%r10d + addb %dl,%al + movl 28(%rsi),%ebx + addl $4139469664,%r10d + movzbl %al,%eax + addl %r12d,%r10d + movl %edx,24(%rsi) + addb %bl,%cl + roll $16,%r10d + movl %r8d,%r12d + pinsrw $3,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r10d,%r12d + addl 40(%r15),%r9d + addb %dl,%bl + movl 32(%rsi),%eax + addl $3200236656,%r9d + movzbl %bl,%ebx + addl %r12d,%r9d + movl %edx,28(%rsi) + addb %al,%cl + roll $23,%r9d + movl %r11d,%r12d + pinsrw $3,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r9d,%r12d + addl 52(%r15),%r8d + addb %dl,%al + movl 36(%rsi),%ebx + addl $681279174,%r8d + movzbl %al,%eax + addl %r12d,%r8d + movl %edx,32(%rsi) + addb %bl,%cl + roll $4,%r8d + movl %r10d,%r12d + pinsrw $4,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r8d,%r12d + addl 0(%r15),%r11d + addb %dl,%bl + movl 40(%rsi),%eax + addl $3936430074,%r11d + movzbl %bl,%ebx + addl %r12d,%r11d + movl %edx,36(%rsi) + addb %al,%cl + roll $11,%r11d + movl %r9d,%r12d + pinsrw $4,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r11d,%r12d + addl 12(%r15),%r10d + addb %dl,%al + movl 44(%rsi),%ebx + addl $3572445317,%r10d + movzbl %al,%eax + addl %r12d,%r10d + movl %edx,40(%rsi) + addb %bl,%cl + roll $16,%r10d + movl %r8d,%r12d + pinsrw $5,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r10d,%r12d + addl 24(%r15),%r9d + addb %dl,%bl + movl 48(%rsi),%eax + addl $76029189,%r9d + movzbl %bl,%ebx + addl %r12d,%r9d + movl %edx,44(%rsi) + addb %al,%cl + roll $23,%r9d + movl %r11d,%r12d + pinsrw $5,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r9d,%r12d + addl 36(%r15),%r8d + addb %dl,%al + movl 52(%rsi),%ebx + addl $3654602809,%r8d + movzbl %al,%eax + addl %r12d,%r8d + movl %edx,48(%rsi) + addb %bl,%cl + roll $4,%r8d + movl %r10d,%r12d + pinsrw $6,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r8d,%r12d + addl 48(%r15),%r11d + addb %dl,%bl + movl 56(%rsi),%eax + addl $3873151461,%r11d + movzbl %bl,%ebx + addl %r12d,%r11d + movl %edx,52(%rsi) + addb %al,%cl + roll $11,%r11d + movl %r9d,%r12d + pinsrw $6,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r11d,%r12d + addl 60(%r15),%r10d + addb %dl,%al + movl 60(%rsi),%ebx + addl $530742520,%r10d + movzbl %al,%eax + addl %r12d,%r10d + movl %edx,56(%rsi) + addb %bl,%cl + roll $16,%r10d + movl %r8d,%r12d + pinsrw $7,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movdqu 32(%r13),%xmm4 + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r10d,%r12d + addl 8(%r15),%r9d + addb %dl,%bl + movl 64(%rsi),%eax + addl $3299628645,%r9d + movzbl %bl,%ebx + addl %r12d,%r9d + movl %edx,60(%rsi) + addb %al,%cl + roll $23,%r9d + movl $-1,%r12d + pinsrw $7,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + psllq $8,%xmm1 + pxor %xmm0,%xmm4 + pxor %xmm1,%xmm4 + pxor %xmm0,%xmm0 + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r9d,%r12d + addl 0(%r15),%r8d + addb %dl,%al + movl 68(%rsi),%ebx + addl $4096336452,%r8d + movzbl %al,%eax + xorl %r10d,%r12d + movl %edx,64(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $6,%r8d + movl $-1,%r12d + movd (%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + pxor %xmm1,%xmm1 + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r8d,%r12d + addl 28(%r15),%r11d + addb %dl,%bl + movl 72(%rsi),%eax + addl $1126891415,%r11d + movzbl %bl,%ebx + xorl %r9d,%r12d + movl %edx,68(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $10,%r11d + movl $-1,%r12d + movd (%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r11d,%r12d + addl 56(%r15),%r10d + addb %dl,%al + movl 76(%rsi),%ebx + addl $2878612391,%r10d + movzbl %al,%eax + xorl %r8d,%r12d + movl %edx,72(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $15,%r10d + movl $-1,%r12d + pinsrw $1,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r10d,%r12d + addl 20(%r15),%r9d + addb %dl,%bl + movl 80(%rsi),%eax + addl $4237533241,%r9d + movzbl %bl,%ebx + xorl %r11d,%r12d + movl %edx,76(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $21,%r9d + movl $-1,%r12d + pinsrw $1,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r9d,%r12d + addl 48(%r15),%r8d + addb %dl,%al + movl 84(%rsi),%ebx + addl $1700485571,%r8d + movzbl %al,%eax + xorl %r10d,%r12d + movl %edx,80(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $6,%r8d + movl $-1,%r12d + pinsrw $2,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r8d,%r12d + addl 12(%r15),%r11d + addb %dl,%bl + movl 88(%rsi),%eax + addl $2399980690,%r11d + movzbl %bl,%ebx + xorl %r9d,%r12d + movl %edx,84(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $10,%r11d + movl $-1,%r12d + pinsrw $2,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r11d,%r12d + addl 40(%r15),%r10d + addb %dl,%al + movl 92(%rsi),%ebx + addl $4293915773,%r10d + movzbl %al,%eax + xorl %r8d,%r12d + movl %edx,88(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $15,%r10d + movl $-1,%r12d + pinsrw $3,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r10d,%r12d + addl 4(%r15),%r9d + addb %dl,%bl + movl 96(%rsi),%eax + addl $2240044497,%r9d + movzbl %bl,%ebx + xorl %r11d,%r12d + movl %edx,92(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $21,%r9d + movl $-1,%r12d + pinsrw $3,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r9d,%r12d + addl 32(%r15),%r8d + addb %dl,%al + movl 100(%rsi),%ebx + addl $1873313359,%r8d + movzbl %al,%eax + xorl %r10d,%r12d + movl %edx,96(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $6,%r8d + movl $-1,%r12d + pinsrw $4,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r8d,%r12d + addl 60(%r15),%r11d + addb %dl,%bl + movl 104(%rsi),%eax + addl $4264355552,%r11d + movzbl %bl,%ebx + xorl %r9d,%r12d + movl %edx,100(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $10,%r11d + movl $-1,%r12d + pinsrw $4,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r11d,%r12d + addl 24(%r15),%r10d + addb %dl,%al + movl 108(%rsi),%ebx + addl $2734768916,%r10d + movzbl %al,%eax + xorl %r8d,%r12d + movl %edx,104(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $15,%r10d + movl $-1,%r12d + pinsrw $5,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r10d,%r12d + addl 52(%r15),%r9d + addb %dl,%bl + movl 112(%rsi),%eax + addl $1309151649,%r9d + movzbl %bl,%ebx + xorl %r11d,%r12d + movl %edx,108(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $21,%r9d + movl $-1,%r12d + pinsrw $5,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r9d,%r12d + addl 16(%r15),%r8d + addb %dl,%al + movl 116(%rsi),%ebx + addl $4149444226,%r8d + movzbl %al,%eax + xorl %r10d,%r12d + movl %edx,112(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $6,%r8d + movl $-1,%r12d + pinsrw $6,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r8d,%r12d + addl 44(%r15),%r11d + addb %dl,%bl + movl 120(%rsi),%eax + addl $3174756917,%r11d + movzbl %bl,%ebx + xorl %r9d,%r12d + movl %edx,116(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $10,%r11d + movl $-1,%r12d + pinsrw $6,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r11d,%r12d + addl 8(%r15),%r10d + addb %dl,%al + movl 124(%rsi),%ebx + addl $718787259,%r10d + movzbl %al,%eax + xorl %r8d,%r12d + movl %edx,120(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $15,%r10d + movl $-1,%r12d + pinsrw $7,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movdqu 48(%r13),%xmm5 + addb $32,%bpl + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r10d,%r12d + addl 36(%r15),%r9d + addb %dl,%bl + movl 0(%rdi,%rbp,4),%eax + addl $3951481745,%r9d + movzbl %bl,%ebx + xorl %r11d,%r12d + movl %edx,124(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $21,%r9d + movl $-1,%r12d + pinsrw $7,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movq %rbp,%rsi + xorq %rbp,%rbp + movb %sil,%bpl + movq %rcx,%rsi + xorq %rcx,%rcx + movb %sil,%cl + leaq (%rdi,%rbp,4),%rsi + psllq $8,%xmm1 + pxor %xmm0,%xmm5 + pxor %xmm1,%xmm5 + addl 0(%rsp),%r8d + addl 4(%rsp),%r9d + addl 8(%rsp),%r10d + addl 12(%rsp),%r11d + + movdqu %xmm2,(%r14,%r13,1) + movdqu %xmm3,16(%r14,%r13,1) + movdqu %xmm4,32(%r14,%r13,1) + movdqu %xmm5,48(%r14,%r13,1) + leaq 64(%r15),%r15 + leaq 64(%r13),%r13 + cmpq 16(%rsp),%r15 + jb .Loop + + movq 24(%rsp),%r12 + subb %al,%cl + movl %r8d,0(%r12) + movl %r9d,4(%r12) + movl %r10d,8(%r12) + movl %r11d,12(%r12) + subb $1,%bpl + movl %ebp,-8(%rdi) + movl %ecx,-4(%rdi) + + movq 40(%rsp),%r15 +.cfi_restore %r15 + movq 48(%rsp),%r14 +.cfi_restore %r14 + movq 56(%rsp),%r13 +.cfi_restore %r13 + movq 64(%rsp),%r12 +.cfi_restore %r12 + movq 72(%rsp),%rbp +.cfi_restore %rbp + movq 80(%rsp),%rbx +.cfi_restore %rbx + leaq 88(%rsp),%rsp +.cfi_adjust_cfa_offset -88 +.Lepilogue: +.Labort: + .byte 0xf3,0xc3 +.cfi_endproc +.size rc4_md5_enc,.-rc4_md5_enc diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/rc4/rc4-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/rc4/rc4-x86_64.s new file mode 100644 index 0000000..d1d1eec --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/rc4/rc4-x86_64.s @@ -0,0 +1,632 @@ +.text + + +.globl RC4 +.type RC4,@function +.align 16 +RC4: +.cfi_startproc + orq %rsi,%rsi + jne .Lentry + .byte 0xf3,0xc3 +.Lentry: + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-24 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-32 +.Lprologue: + movq %rsi,%r11 + movq %rdx,%r12 + movq %rcx,%r13 + xorq %r10,%r10 + xorq %rcx,%rcx + + leaq 8(%rdi),%rdi + movb -8(%rdi),%r10b + movb -4(%rdi),%cl + cmpl $-1,256(%rdi) + je .LRC4_CHAR + movl OPENSSL_ia32cap_P(%rip),%r8d + xorq %rbx,%rbx + incb %r10b + subq %r10,%rbx + subq %r12,%r13 + movl (%rdi,%r10,4),%eax + testq $-16,%r11 + jz .Lloop1 + btl $30,%r8d + jc .Lintel + andq $7,%rbx + leaq 1(%r10),%rsi + jz .Loop8 + subq %rbx,%r11 +.Loop8_warmup: + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl %edx,(%rdi,%r10,4) + addb %dl,%al + incb %r10b + movl (%rdi,%rax,4),%edx + movl (%rdi,%r10,4),%eax + xorb (%r12),%dl + movb %dl,(%r12,%r13,1) + leaq 1(%r12),%r12 + decq %rbx + jnz .Loop8_warmup + + leaq 1(%r10),%rsi + jmp .Loop8 +.align 16 +.Loop8: + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl 0(%rdi,%rsi,4),%ebx + rorq $8,%r8 + movl %edx,0(%rdi,%r10,4) + addb %al,%dl + movb (%rdi,%rdx,4),%r8b + addb %bl,%cl + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + movl 4(%rdi,%rsi,4),%eax + rorq $8,%r8 + movl %edx,4(%rdi,%r10,4) + addb %bl,%dl + movb (%rdi,%rdx,4),%r8b + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl 8(%rdi,%rsi,4),%ebx + rorq $8,%r8 + movl %edx,8(%rdi,%r10,4) + addb %al,%dl + movb (%rdi,%rdx,4),%r8b + addb %bl,%cl + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + movl 12(%rdi,%rsi,4),%eax + rorq $8,%r8 + movl %edx,12(%rdi,%r10,4) + addb %bl,%dl + movb (%rdi,%rdx,4),%r8b + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl 16(%rdi,%rsi,4),%ebx + rorq $8,%r8 + movl %edx,16(%rdi,%r10,4) + addb %al,%dl + movb (%rdi,%rdx,4),%r8b + addb %bl,%cl + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + movl 20(%rdi,%rsi,4),%eax + rorq $8,%r8 + movl %edx,20(%rdi,%r10,4) + addb %bl,%dl + movb (%rdi,%rdx,4),%r8b + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl 24(%rdi,%rsi,4),%ebx + rorq $8,%r8 + movl %edx,24(%rdi,%r10,4) + addb %al,%dl + movb (%rdi,%rdx,4),%r8b + addb $8,%sil + addb %bl,%cl + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + movl -4(%rdi,%rsi,4),%eax + rorq $8,%r8 + movl %edx,28(%rdi,%r10,4) + addb %bl,%dl + movb (%rdi,%rdx,4),%r8b + addb $8,%r10b + rorq $8,%r8 + subq $8,%r11 + + xorq (%r12),%r8 + movq %r8,(%r12,%r13,1) + leaq 8(%r12),%r12 + + testq $-8,%r11 + jnz .Loop8 + cmpq $0,%r11 + jne .Lloop1 + jmp .Lexit + +.align 16 +.Lintel: + testq $-32,%r11 + jz .Lloop1 + andq $15,%rbx + jz .Loop16_is_hot + subq %rbx,%r11 +.Loop16_warmup: + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl %edx,(%rdi,%r10,4) + addb %dl,%al + incb %r10b + movl (%rdi,%rax,4),%edx + movl (%rdi,%r10,4),%eax + xorb (%r12),%dl + movb %dl,(%r12,%r13,1) + leaq 1(%r12),%r12 + decq %rbx + jnz .Loop16_warmup + + movq %rcx,%rbx + xorq %rcx,%rcx + movb %bl,%cl + +.Loop16_is_hot: + leaq (%rdi,%r10,4),%rsi + addb %al,%cl + movl (%rdi,%rcx,4),%edx + pxor %xmm0,%xmm0 + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 4(%rsi),%ebx + movzbl %al,%eax + movl %edx,0(%rsi) + addb %bl,%cl + pinsrw $0,(%rdi,%rax,4),%xmm0 + jmp .Loop16_enter +.align 16 +.Loop16: + addb %al,%cl + movl (%rdi,%rcx,4),%edx + pxor %xmm0,%xmm2 + psllq $8,%xmm1 + pxor %xmm0,%xmm0 + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 4(%rsi),%ebx + movzbl %al,%eax + movl %edx,0(%rsi) + pxor %xmm1,%xmm2 + addb %bl,%cl + pinsrw $0,(%rdi,%rax,4),%xmm0 + movdqu %xmm2,(%r12,%r13,1) + leaq 16(%r12),%r12 +.Loop16_enter: + movl (%rdi,%rcx,4),%edx + pxor %xmm1,%xmm1 + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 8(%rsi),%eax + movzbl %bl,%ebx + movl %edx,4(%rsi) + addb %al,%cl + pinsrw $0,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 12(%rsi),%ebx + movzbl %al,%eax + movl %edx,8(%rsi) + addb %bl,%cl + pinsrw $1,(%rdi,%rax,4),%xmm0 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 16(%rsi),%eax + movzbl %bl,%ebx + movl %edx,12(%rsi) + addb %al,%cl + pinsrw $1,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 20(%rsi),%ebx + movzbl %al,%eax + movl %edx,16(%rsi) + addb %bl,%cl + pinsrw $2,(%rdi,%rax,4),%xmm0 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 24(%rsi),%eax + movzbl %bl,%ebx + movl %edx,20(%rsi) + addb %al,%cl + pinsrw $2,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 28(%rsi),%ebx + movzbl %al,%eax + movl %edx,24(%rsi) + addb %bl,%cl + pinsrw $3,(%rdi,%rax,4),%xmm0 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 32(%rsi),%eax + movzbl %bl,%ebx + movl %edx,28(%rsi) + addb %al,%cl + pinsrw $3,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 36(%rsi),%ebx + movzbl %al,%eax + movl %edx,32(%rsi) + addb %bl,%cl + pinsrw $4,(%rdi,%rax,4),%xmm0 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 40(%rsi),%eax + movzbl %bl,%ebx + movl %edx,36(%rsi) + addb %al,%cl + pinsrw $4,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 44(%rsi),%ebx + movzbl %al,%eax + movl %edx,40(%rsi) + addb %bl,%cl + pinsrw $5,(%rdi,%rax,4),%xmm0 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 48(%rsi),%eax + movzbl %bl,%ebx + movl %edx,44(%rsi) + addb %al,%cl + pinsrw $5,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 52(%rsi),%ebx + movzbl %al,%eax + movl %edx,48(%rsi) + addb %bl,%cl + pinsrw $6,(%rdi,%rax,4),%xmm0 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 56(%rsi),%eax + movzbl %bl,%ebx + movl %edx,52(%rsi) + addb %al,%cl + pinsrw $6,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 60(%rsi),%ebx + movzbl %al,%eax + movl %edx,56(%rsi) + addb %bl,%cl + pinsrw $7,(%rdi,%rax,4),%xmm0 + addb $16,%r10b + movdqu (%r12),%xmm2 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movzbl %bl,%ebx + movl %edx,60(%rsi) + leaq (%rdi,%r10,4),%rsi + pinsrw $7,(%rdi,%rbx,4),%xmm1 + movl (%rsi),%eax + movq %rcx,%rbx + xorq %rcx,%rcx + subq $16,%r11 + movb %bl,%cl + testq $-16,%r11 + jnz .Loop16 + + psllq $8,%xmm1 + pxor %xmm0,%xmm2 + pxor %xmm1,%xmm2 + movdqu %xmm2,(%r12,%r13,1) + leaq 16(%r12),%r12 + + cmpq $0,%r11 + jne .Lloop1 + jmp .Lexit + +.align 16 +.Lloop1: + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl %edx,(%rdi,%r10,4) + addb %dl,%al + incb %r10b + movl (%rdi,%rax,4),%edx + movl (%rdi,%r10,4),%eax + xorb (%r12),%dl + movb %dl,(%r12,%r13,1) + leaq 1(%r12),%r12 + decq %r11 + jnz .Lloop1 + jmp .Lexit + +.align 16 +.LRC4_CHAR: + addb $1,%r10b + movzbl (%rdi,%r10,1),%eax + testq $-8,%r11 + jz .Lcloop1 + jmp .Lcloop8 +.align 16 +.Lcloop8: + movl (%r12),%r8d + movl 4(%r12),%r9d + addb %al,%cl + leaq 1(%r10),%rsi + movzbl (%rdi,%rcx,1),%edx + movzbl %sil,%esi + movzbl (%rdi,%rsi,1),%ebx + movb %al,(%rdi,%rcx,1) + cmpq %rsi,%rcx + movb %dl,(%rdi,%r10,1) + jne .Lcmov0 + movq %rax,%rbx +.Lcmov0: + addb %al,%dl + xorb (%rdi,%rdx,1),%r8b + rorl $8,%r8d + addb %bl,%cl + leaq 1(%rsi),%r10 + movzbl (%rdi,%rcx,1),%edx + movzbl %r10b,%r10d + movzbl (%rdi,%r10,1),%eax + movb %bl,(%rdi,%rcx,1) + cmpq %r10,%rcx + movb %dl,(%rdi,%rsi,1) + jne .Lcmov1 + movq %rbx,%rax +.Lcmov1: + addb %bl,%dl + xorb (%rdi,%rdx,1),%r8b + rorl $8,%r8d + addb %al,%cl + leaq 1(%r10),%rsi + movzbl (%rdi,%rcx,1),%edx + movzbl %sil,%esi + movzbl (%rdi,%rsi,1),%ebx + movb %al,(%rdi,%rcx,1) + cmpq %rsi,%rcx + movb %dl,(%rdi,%r10,1) + jne .Lcmov2 + movq %rax,%rbx +.Lcmov2: + addb %al,%dl + xorb (%rdi,%rdx,1),%r8b + rorl $8,%r8d + addb %bl,%cl + leaq 1(%rsi),%r10 + movzbl (%rdi,%rcx,1),%edx + movzbl %r10b,%r10d + movzbl (%rdi,%r10,1),%eax + movb %bl,(%rdi,%rcx,1) + cmpq %r10,%rcx + movb %dl,(%rdi,%rsi,1) + jne .Lcmov3 + movq %rbx,%rax +.Lcmov3: + addb %bl,%dl + xorb (%rdi,%rdx,1),%r8b + rorl $8,%r8d + addb %al,%cl + leaq 1(%r10),%rsi + movzbl (%rdi,%rcx,1),%edx + movzbl %sil,%esi + movzbl (%rdi,%rsi,1),%ebx + movb %al,(%rdi,%rcx,1) + cmpq %rsi,%rcx + movb %dl,(%rdi,%r10,1) + jne .Lcmov4 + movq %rax,%rbx +.Lcmov4: + addb %al,%dl + xorb (%rdi,%rdx,1),%r9b + rorl $8,%r9d + addb %bl,%cl + leaq 1(%rsi),%r10 + movzbl (%rdi,%rcx,1),%edx + movzbl %r10b,%r10d + movzbl (%rdi,%r10,1),%eax + movb %bl,(%rdi,%rcx,1) + cmpq %r10,%rcx + movb %dl,(%rdi,%rsi,1) + jne .Lcmov5 + movq %rbx,%rax +.Lcmov5: + addb %bl,%dl + xorb (%rdi,%rdx,1),%r9b + rorl $8,%r9d + addb %al,%cl + leaq 1(%r10),%rsi + movzbl (%rdi,%rcx,1),%edx + movzbl %sil,%esi + movzbl (%rdi,%rsi,1),%ebx + movb %al,(%rdi,%rcx,1) + cmpq %rsi,%rcx + movb %dl,(%rdi,%r10,1) + jne .Lcmov6 + movq %rax,%rbx +.Lcmov6: + addb %al,%dl + xorb (%rdi,%rdx,1),%r9b + rorl $8,%r9d + addb %bl,%cl + leaq 1(%rsi),%r10 + movzbl (%rdi,%rcx,1),%edx + movzbl %r10b,%r10d + movzbl (%rdi,%r10,1),%eax + movb %bl,(%rdi,%rcx,1) + cmpq %r10,%rcx + movb %dl,(%rdi,%rsi,1) + jne .Lcmov7 + movq %rbx,%rax +.Lcmov7: + addb %bl,%dl + xorb (%rdi,%rdx,1),%r9b + rorl $8,%r9d + leaq -8(%r11),%r11 + movl %r8d,(%r13) + leaq 8(%r12),%r12 + movl %r9d,4(%r13) + leaq 8(%r13),%r13 + + testq $-8,%r11 + jnz .Lcloop8 + cmpq $0,%r11 + jne .Lcloop1 + jmp .Lexit +.align 16 +.Lcloop1: + addb %al,%cl + movzbl %cl,%ecx + movzbl (%rdi,%rcx,1),%edx + movb %al,(%rdi,%rcx,1) + movb %dl,(%rdi,%r10,1) + addb %al,%dl + addb $1,%r10b + movzbl %dl,%edx + movzbl %r10b,%r10d + movzbl (%rdi,%rdx,1),%edx + movzbl (%rdi,%r10,1),%eax + xorb (%r12),%dl + leaq 1(%r12),%r12 + movb %dl,(%r13) + leaq 1(%r13),%r13 + subq $1,%r11 + jnz .Lcloop1 + jmp .Lexit + +.align 16 +.Lexit: + subb $1,%r10b + movl %r10d,-8(%rdi) + movl %ecx,-4(%rdi) + + movq (%rsp),%r13 +.cfi_restore %r13 + movq 8(%rsp),%r12 +.cfi_restore %r12 + movq 16(%rsp),%rbx +.cfi_restore %rbx + addq $24,%rsp +.cfi_adjust_cfa_offset -24 +.Lepilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size RC4,.-RC4 +.globl RC4_set_key +.type RC4_set_key,@function +.align 16 +RC4_set_key: +.cfi_startproc + leaq 8(%rdi),%rdi + leaq (%rdx,%rsi,1),%rdx + negq %rsi + movq %rsi,%rcx + xorl %eax,%eax + xorq %r9,%r9 + xorq %r10,%r10 + xorq %r11,%r11 + + movl OPENSSL_ia32cap_P(%rip),%r8d + btl $20,%r8d + jc .Lc1stloop + jmp .Lw1stloop + +.align 16 +.Lw1stloop: + movl %eax,(%rdi,%rax,4) + addb $1,%al + jnc .Lw1stloop + + xorq %r9,%r9 + xorq %r8,%r8 +.align 16 +.Lw2ndloop: + movl (%rdi,%r9,4),%r10d + addb (%rdx,%rsi,1),%r8b + addb %r10b,%r8b + addq $1,%rsi + movl (%rdi,%r8,4),%r11d + cmovzq %rcx,%rsi + movl %r10d,(%rdi,%r8,4) + movl %r11d,(%rdi,%r9,4) + addb $1,%r9b + jnc .Lw2ndloop + jmp .Lexit_key + +.align 16 +.Lc1stloop: + movb %al,(%rdi,%rax,1) + addb $1,%al + jnc .Lc1stloop + + xorq %r9,%r9 + xorq %r8,%r8 +.align 16 +.Lc2ndloop: + movb (%rdi,%r9,1),%r10b + addb (%rdx,%rsi,1),%r8b + addb %r10b,%r8b + addq $1,%rsi + movb (%rdi,%r8,1),%r11b + jnz .Lcnowrap + movq %rcx,%rsi +.Lcnowrap: + movb %r10b,(%rdi,%r8,1) + movb %r11b,(%rdi,%r9,1) + addb $1,%r9b + jnc .Lc2ndloop + movl $-1,256(%rdi) + +.align 16 +.Lexit_key: + xorl %eax,%eax + movl %eax,-8(%rdi) + movl %eax,-4(%rdi) + .byte 0xf3,0xc3 +.cfi_endproc +.size RC4_set_key,.-RC4_set_key + +.globl RC4_options +.type RC4_options,@function +.align 16 +RC4_options: +.cfi_startproc + leaq .Lopts(%rip),%rax + movl OPENSSL_ia32cap_P(%rip),%edx + btl $20,%edx + jc .L8xchar + btl $30,%edx + jnc .Ldone + addq $25,%rax + .byte 0xf3,0xc3 +.L8xchar: + addq $12,%rax +.Ldone: + .byte 0xf3,0xc3 +.cfi_endproc +.align 64 +.Lopts: +.byte 114,99,52,40,56,120,44,105,110,116,41,0 +.byte 114,99,52,40,56,120,44,99,104,97,114,41,0 +.byte 114,99,52,40,49,54,120,44,105,110,116,41,0 +.byte 82,67,52,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 64 +.size RC4_options,.-RC4_options diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/sha/keccak1600-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/sha/keccak1600-x86_64.s new file mode 100644 index 0000000..11f26e9 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/sha/keccak1600-x86_64.s @@ -0,0 +1,524 @@ +.text + +.type __KeccakF1600,@function +.align 32 +__KeccakF1600: +.cfi_startproc + movq 60(%rdi),%rax + movq 68(%rdi),%rbx + movq 76(%rdi),%rcx + movq 84(%rdi),%rdx + movq 92(%rdi),%rbp + jmp .Loop + +.align 32 +.Loop: + movq -100(%rdi),%r8 + movq -52(%rdi),%r9 + movq -4(%rdi),%r10 + movq 44(%rdi),%r11 + + xorq -84(%rdi),%rcx + xorq -76(%rdi),%rdx + xorq %r8,%rax + xorq -92(%rdi),%rbx + xorq -44(%rdi),%rcx + xorq -60(%rdi),%rax + movq %rbp,%r12 + xorq -68(%rdi),%rbp + + xorq %r10,%rcx + xorq -20(%rdi),%rax + xorq -36(%rdi),%rdx + xorq %r9,%rbx + xorq -28(%rdi),%rbp + + xorq 36(%rdi),%rcx + xorq 20(%rdi),%rax + xorq 4(%rdi),%rdx + xorq -12(%rdi),%rbx + xorq 12(%rdi),%rbp + + movq %rcx,%r13 + rolq $1,%rcx + xorq %rax,%rcx + xorq %r11,%rdx + + rolq $1,%rax + xorq %rdx,%rax + xorq 28(%rdi),%rbx + + rolq $1,%rdx + xorq %rbx,%rdx + xorq 52(%rdi),%rbp + + rolq $1,%rbx + xorq %rbp,%rbx + + rolq $1,%rbp + xorq %r13,%rbp + xorq %rcx,%r9 + xorq %rdx,%r10 + rolq $44,%r9 + xorq %rbp,%r11 + xorq %rax,%r12 + rolq $43,%r10 + xorq %rbx,%r8 + movq %r9,%r13 + rolq $21,%r11 + orq %r10,%r9 + xorq %r8,%r9 + rolq $14,%r12 + + xorq (%r15),%r9 + leaq 8(%r15),%r15 + + movq %r12,%r14 + andq %r11,%r12 + movq %r9,-100(%rsi) + xorq %r10,%r12 + notq %r10 + movq %r12,-84(%rsi) + + orq %r11,%r10 + movq 76(%rdi),%r12 + xorq %r13,%r10 + movq %r10,-92(%rsi) + + andq %r8,%r13 + movq -28(%rdi),%r9 + xorq %r14,%r13 + movq -20(%rdi),%r10 + movq %r13,-68(%rsi) + + orq %r8,%r14 + movq -76(%rdi),%r8 + xorq %r11,%r14 + movq 28(%rdi),%r11 + movq %r14,-76(%rsi) + + + xorq %rbp,%r8 + xorq %rdx,%r12 + rolq $28,%r8 + xorq %rcx,%r11 + xorq %rax,%r9 + rolq $61,%r12 + rolq $45,%r11 + xorq %rbx,%r10 + rolq $20,%r9 + movq %r8,%r13 + orq %r12,%r8 + rolq $3,%r10 + + xorq %r11,%r8 + movq %r8,-36(%rsi) + + movq %r9,%r14 + andq %r13,%r9 + movq -92(%rdi),%r8 + xorq %r12,%r9 + notq %r12 + movq %r9,-28(%rsi) + + orq %r11,%r12 + movq -44(%rdi),%r9 + xorq %r10,%r12 + movq %r12,-44(%rsi) + + andq %r10,%r11 + movq 60(%rdi),%r12 + xorq %r14,%r11 + movq %r11,-52(%rsi) + + orq %r10,%r14 + movq 4(%rdi),%r10 + xorq %r13,%r14 + movq 52(%rdi),%r11 + movq %r14,-60(%rsi) + + + xorq %rbp,%r10 + xorq %rax,%r11 + rolq $25,%r10 + xorq %rdx,%r9 + rolq $8,%r11 + xorq %rbx,%r12 + rolq $6,%r9 + xorq %rcx,%r8 + rolq $18,%r12 + movq %r10,%r13 + andq %r11,%r10 + rolq $1,%r8 + + notq %r11 + xorq %r9,%r10 + movq %r10,-12(%rsi) + + movq %r12,%r14 + andq %r11,%r12 + movq -12(%rdi),%r10 + xorq %r13,%r12 + movq %r12,-4(%rsi) + + orq %r9,%r13 + movq 84(%rdi),%r12 + xorq %r8,%r13 + movq %r13,-20(%rsi) + + andq %r8,%r9 + xorq %r14,%r9 + movq %r9,12(%rsi) + + orq %r8,%r14 + movq -60(%rdi),%r9 + xorq %r11,%r14 + movq 36(%rdi),%r11 + movq %r14,4(%rsi) + + + movq -68(%rdi),%r8 + + xorq %rcx,%r10 + xorq %rdx,%r11 + rolq $10,%r10 + xorq %rbx,%r9 + rolq $15,%r11 + xorq %rbp,%r12 + rolq $36,%r9 + xorq %rax,%r8 + rolq $56,%r12 + movq %r10,%r13 + orq %r11,%r10 + rolq $27,%r8 + + notq %r11 + xorq %r9,%r10 + movq %r10,28(%rsi) + + movq %r12,%r14 + orq %r11,%r12 + xorq %r13,%r12 + movq %r12,36(%rsi) + + andq %r9,%r13 + xorq %r8,%r13 + movq %r13,20(%rsi) + + orq %r8,%r9 + xorq %r14,%r9 + movq %r9,52(%rsi) + + andq %r14,%r8 + xorq %r11,%r8 + movq %r8,44(%rsi) + + + xorq -84(%rdi),%rdx + xorq -36(%rdi),%rbp + rolq $62,%rdx + xorq 68(%rdi),%rcx + rolq $55,%rbp + xorq 12(%rdi),%rax + rolq $2,%rcx + xorq 20(%rdi),%rbx + xchgq %rsi,%rdi + rolq $39,%rax + rolq $41,%rbx + movq %rdx,%r13 + andq %rbp,%rdx + notq %rbp + xorq %rcx,%rdx + movq %rdx,92(%rdi) + + movq %rax,%r14 + andq %rbp,%rax + xorq %r13,%rax + movq %rax,60(%rdi) + + orq %rcx,%r13 + xorq %rbx,%r13 + movq %r13,84(%rdi) + + andq %rbx,%rcx + xorq %r14,%rcx + movq %rcx,76(%rdi) + + orq %r14,%rbx + xorq %rbp,%rbx + movq %rbx,68(%rdi) + + movq %rdx,%rbp + movq %r13,%rdx + + testq $255,%r15 + jnz .Loop + + leaq -192(%r15),%r15 + .byte 0xf3,0xc3 +.cfi_endproc +.size __KeccakF1600,.-__KeccakF1600 + +.type KeccakF1600,@function +.align 32 +KeccakF1600: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + + leaq 100(%rdi),%rdi + subq $200,%rsp +.cfi_adjust_cfa_offset 200 + + notq -92(%rdi) + notq -84(%rdi) + notq -36(%rdi) + notq -4(%rdi) + notq 36(%rdi) + notq 60(%rdi) + + leaq iotas(%rip),%r15 + leaq 100(%rsp),%rsi + + call __KeccakF1600 + + notq -92(%rdi) + notq -84(%rdi) + notq -36(%rdi) + notq -4(%rdi) + notq 36(%rdi) + notq 60(%rdi) + leaq -100(%rdi),%rdi + + addq $200,%rsp +.cfi_adjust_cfa_offset -200 + + popq %r15 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r15 + popq %r14 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r14 + popq %r13 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r13 + popq %r12 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r12 + popq %rbp +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbp + popq %rbx +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbx + .byte 0xf3,0xc3 +.cfi_endproc +.size KeccakF1600,.-KeccakF1600 +.globl SHA3_absorb +.type SHA3_absorb,@function +.align 32 +SHA3_absorb: +.cfi_startproc + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + + leaq 100(%rdi),%rdi + subq $232,%rsp +.cfi_adjust_cfa_offset 232 + + movq %rsi,%r9 + leaq 100(%rsp),%rsi + + notq -92(%rdi) + notq -84(%rdi) + notq -36(%rdi) + notq -4(%rdi) + notq 36(%rdi) + notq 60(%rdi) + leaq iotas(%rip),%r15 + + movq %rcx,216-100(%rsi) + +.Loop_absorb: + cmpq %rcx,%rdx + jc .Ldone_absorb + + shrq $3,%rcx + leaq -100(%rdi),%r8 + +.Lblock_absorb: + movq (%r9),%rax + leaq 8(%r9),%r9 + xorq (%r8),%rax + leaq 8(%r8),%r8 + subq $8,%rdx + movq %rax,-8(%r8) + subq $1,%rcx + jnz .Lblock_absorb + + movq %r9,200-100(%rsi) + movq %rdx,208-100(%rsi) + call __KeccakF1600 + movq 200-100(%rsi),%r9 + movq 208-100(%rsi),%rdx + movq 216-100(%rsi),%rcx + jmp .Loop_absorb + +.align 32 +.Ldone_absorb: + movq %rdx,%rax + + notq -92(%rdi) + notq -84(%rdi) + notq -36(%rdi) + notq -4(%rdi) + notq 36(%rdi) + notq 60(%rdi) + + addq $232,%rsp +.cfi_adjust_cfa_offset -232 + + popq %r15 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r15 + popq %r14 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r14 + popq %r13 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r13 + popq %r12 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r12 + popq %rbp +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbp + popq %rbx +.cfi_adjust_cfa_offset -8 +.cfi_restore %rbx + .byte 0xf3,0xc3 +.cfi_endproc +.size SHA3_absorb,.-SHA3_absorb +.globl SHA3_squeeze +.type SHA3_squeeze,@function +.align 32 +SHA3_squeeze: +.cfi_startproc + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-16 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-24 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-32 + + shrq $3,%rcx + movq %rdi,%r8 + movq %rsi,%r12 + movq %rdx,%r13 + movq %rcx,%r14 + jmp .Loop_squeeze + +.align 32 +.Loop_squeeze: + cmpq $8,%r13 + jb .Ltail_squeeze + + movq (%r8),%rax + leaq 8(%r8),%r8 + movq %rax,(%r12) + leaq 8(%r12),%r12 + subq $8,%r13 + jz .Ldone_squeeze + + subq $1,%rcx + jnz .Loop_squeeze + + call KeccakF1600 + movq %rdi,%r8 + movq %r14,%rcx + jmp .Loop_squeeze + +.Ltail_squeeze: + movq %r8,%rsi + movq %r12,%rdi + movq %r13,%rcx +.byte 0xf3,0xa4 + +.Ldone_squeeze: + popq %r14 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r14 + popq %r13 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r13 + popq %r12 +.cfi_adjust_cfa_offset -8 +.cfi_restore %r13 + .byte 0xf3,0xc3 +.cfi_endproc +.size SHA3_squeeze,.-SHA3_squeeze +.align 256 +.quad 0,0,0,0,0,0,0,0 +.type iotas,@object +iotas: +.quad 0x0000000000000001 +.quad 0x0000000000008082 +.quad 0x800000000000808a +.quad 0x8000000080008000 +.quad 0x000000000000808b +.quad 0x0000000080000001 +.quad 0x8000000080008081 +.quad 0x8000000000008009 +.quad 0x000000000000008a +.quad 0x0000000000000088 +.quad 0x0000000080008009 +.quad 0x000000008000000a +.quad 0x000000008000808b +.quad 0x800000000000008b +.quad 0x8000000000008089 +.quad 0x8000000000008003 +.quad 0x8000000000008002 +.quad 0x8000000000000080 +.quad 0x000000000000800a +.quad 0x800000008000000a +.quad 0x8000000080008081 +.quad 0x8000000000008080 +.quad 0x0000000080000001 +.quad 0x8000000080008008 +.size iotas,.-iotas +.byte 75,101,99,99,97,107,45,49,54,48,48,32,97,98,115,111,114,98,32,97,110,100,32,115,113,117,101,101,122,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha1-mb-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha1-mb-x86_64.s new file mode 100644 index 0000000..1a0de0f --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha1-mb-x86_64.s @@ -0,0 +1,7267 @@ +.text + + + +.globl sha1_multi_block +.type sha1_multi_block,@function +.align 32 +sha1_multi_block: +.cfi_startproc + movq OPENSSL_ia32cap_P+4(%rip),%rcx + btq $61,%rcx + jc _shaext_shortcut + testl $268435456,%ecx + jnz _avx_shortcut + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbx,-24 + subq $288,%rsp + andq $-256,%rsp + movq %rax,272(%rsp) +.cfi_escape 0x0f,0x06,0x77,0x90,0x02,0x06,0x23,0x08 +.Lbody: + leaq K_XX_XX(%rip),%rbp + leaq 256(%rsp),%rbx + +.Loop_grande: + movl %edx,280(%rsp) + xorl %edx,%edx + movq 0(%rsi),%r8 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rbp,%r8 + movq 16(%rsi),%r9 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rbp,%r9 + movq 32(%rsi),%r10 + movl 40(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,8(%rbx) + cmovleq %rbp,%r10 + movq 48(%rsi),%r11 + movl 56(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,12(%rbx) + cmovleq %rbp,%r11 + testl %edx,%edx + jz .Ldone + + movdqu 0(%rdi),%xmm10 + leaq 128(%rsp),%rax + movdqu 32(%rdi),%xmm11 + movdqu 64(%rdi),%xmm12 + movdqu 96(%rdi),%xmm13 + movdqu 128(%rdi),%xmm14 + movdqa 96(%rbp),%xmm5 + movdqa -32(%rbp),%xmm15 + jmp .Loop + +.align 32 +.Loop: + movd (%r8),%xmm0 + leaq 64(%r8),%r8 + movd (%r9),%xmm2 + leaq 64(%r9),%r9 + movd (%r10),%xmm3 + leaq 64(%r10),%r10 + movd (%r11),%xmm4 + leaq 64(%r11),%r11 + punpckldq %xmm3,%xmm0 + movd -60(%r8),%xmm1 + punpckldq %xmm4,%xmm2 + movd -60(%r9),%xmm9 + punpckldq %xmm2,%xmm0 + movd -60(%r10),%xmm8 +.byte 102,15,56,0,197 + movd -60(%r11),%xmm7 + punpckldq %xmm8,%xmm1 + movdqa %xmm10,%xmm8 + paddd %xmm15,%xmm14 + punpckldq %xmm7,%xmm9 + movdqa %xmm11,%xmm7 + movdqa %xmm11,%xmm6 + pslld $5,%xmm8 + pandn %xmm13,%xmm7 + pand %xmm12,%xmm6 + punpckldq %xmm9,%xmm1 + movdqa %xmm10,%xmm9 + + movdqa %xmm0,0-128(%rax) + paddd %xmm0,%xmm14 + movd -56(%r8),%xmm2 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm11,%xmm7 + + por %xmm9,%xmm8 + movd -56(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 +.byte 102,15,56,0,205 + movd -56(%r10),%xmm8 + por %xmm7,%xmm11 + movd -56(%r11),%xmm7 + punpckldq %xmm8,%xmm2 + movdqa %xmm14,%xmm8 + paddd %xmm15,%xmm13 + punpckldq %xmm7,%xmm9 + movdqa %xmm10,%xmm7 + movdqa %xmm10,%xmm6 + pslld $5,%xmm8 + pandn %xmm12,%xmm7 + pand %xmm11,%xmm6 + punpckldq %xmm9,%xmm2 + movdqa %xmm14,%xmm9 + + movdqa %xmm1,16-128(%rax) + paddd %xmm1,%xmm13 + movd -52(%r8),%xmm3 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm10,%xmm7 + + por %xmm9,%xmm8 + movd -52(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 +.byte 102,15,56,0,213 + movd -52(%r10),%xmm8 + por %xmm7,%xmm10 + movd -52(%r11),%xmm7 + punpckldq %xmm8,%xmm3 + movdqa %xmm13,%xmm8 + paddd %xmm15,%xmm12 + punpckldq %xmm7,%xmm9 + movdqa %xmm14,%xmm7 + movdqa %xmm14,%xmm6 + pslld $5,%xmm8 + pandn %xmm11,%xmm7 + pand %xmm10,%xmm6 + punpckldq %xmm9,%xmm3 + movdqa %xmm13,%xmm9 + + movdqa %xmm2,32-128(%rax) + paddd %xmm2,%xmm12 + movd -48(%r8),%xmm4 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm14,%xmm7 + + por %xmm9,%xmm8 + movd -48(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 +.byte 102,15,56,0,221 + movd -48(%r10),%xmm8 + por %xmm7,%xmm14 + movd -48(%r11),%xmm7 + punpckldq %xmm8,%xmm4 + movdqa %xmm12,%xmm8 + paddd %xmm15,%xmm11 + punpckldq %xmm7,%xmm9 + movdqa %xmm13,%xmm7 + movdqa %xmm13,%xmm6 + pslld $5,%xmm8 + pandn %xmm10,%xmm7 + pand %xmm14,%xmm6 + punpckldq %xmm9,%xmm4 + movdqa %xmm12,%xmm9 + + movdqa %xmm3,48-128(%rax) + paddd %xmm3,%xmm11 + movd -44(%r8),%xmm0 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm13,%xmm7 + + por %xmm9,%xmm8 + movd -44(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 +.byte 102,15,56,0,229 + movd -44(%r10),%xmm8 + por %xmm7,%xmm13 + movd -44(%r11),%xmm7 + punpckldq %xmm8,%xmm0 + movdqa %xmm11,%xmm8 + paddd %xmm15,%xmm10 + punpckldq %xmm7,%xmm9 + movdqa %xmm12,%xmm7 + movdqa %xmm12,%xmm6 + pslld $5,%xmm8 + pandn %xmm14,%xmm7 + pand %xmm13,%xmm6 + punpckldq %xmm9,%xmm0 + movdqa %xmm11,%xmm9 + + movdqa %xmm4,64-128(%rax) + paddd %xmm4,%xmm10 + movd -40(%r8),%xmm1 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm12,%xmm7 + + por %xmm9,%xmm8 + movd -40(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 +.byte 102,15,56,0,197 + movd -40(%r10),%xmm8 + por %xmm7,%xmm12 + movd -40(%r11),%xmm7 + punpckldq %xmm8,%xmm1 + movdqa %xmm10,%xmm8 + paddd %xmm15,%xmm14 + punpckldq %xmm7,%xmm9 + movdqa %xmm11,%xmm7 + movdqa %xmm11,%xmm6 + pslld $5,%xmm8 + pandn %xmm13,%xmm7 + pand %xmm12,%xmm6 + punpckldq %xmm9,%xmm1 + movdqa %xmm10,%xmm9 + + movdqa %xmm0,80-128(%rax) + paddd %xmm0,%xmm14 + movd -36(%r8),%xmm2 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm11,%xmm7 + + por %xmm9,%xmm8 + movd -36(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 +.byte 102,15,56,0,205 + movd -36(%r10),%xmm8 + por %xmm7,%xmm11 + movd -36(%r11),%xmm7 + punpckldq %xmm8,%xmm2 + movdqa %xmm14,%xmm8 + paddd %xmm15,%xmm13 + punpckldq %xmm7,%xmm9 + movdqa %xmm10,%xmm7 + movdqa %xmm10,%xmm6 + pslld $5,%xmm8 + pandn %xmm12,%xmm7 + pand %xmm11,%xmm6 + punpckldq %xmm9,%xmm2 + movdqa %xmm14,%xmm9 + + movdqa %xmm1,96-128(%rax) + paddd %xmm1,%xmm13 + movd -32(%r8),%xmm3 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm10,%xmm7 + + por %xmm9,%xmm8 + movd -32(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 +.byte 102,15,56,0,213 + movd -32(%r10),%xmm8 + por %xmm7,%xmm10 + movd -32(%r11),%xmm7 + punpckldq %xmm8,%xmm3 + movdqa %xmm13,%xmm8 + paddd %xmm15,%xmm12 + punpckldq %xmm7,%xmm9 + movdqa %xmm14,%xmm7 + movdqa %xmm14,%xmm6 + pslld $5,%xmm8 + pandn %xmm11,%xmm7 + pand %xmm10,%xmm6 + punpckldq %xmm9,%xmm3 + movdqa %xmm13,%xmm9 + + movdqa %xmm2,112-128(%rax) + paddd %xmm2,%xmm12 + movd -28(%r8),%xmm4 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm14,%xmm7 + + por %xmm9,%xmm8 + movd -28(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 +.byte 102,15,56,0,221 + movd -28(%r10),%xmm8 + por %xmm7,%xmm14 + movd -28(%r11),%xmm7 + punpckldq %xmm8,%xmm4 + movdqa %xmm12,%xmm8 + paddd %xmm15,%xmm11 + punpckldq %xmm7,%xmm9 + movdqa %xmm13,%xmm7 + movdqa %xmm13,%xmm6 + pslld $5,%xmm8 + pandn %xmm10,%xmm7 + pand %xmm14,%xmm6 + punpckldq %xmm9,%xmm4 + movdqa %xmm12,%xmm9 + + movdqa %xmm3,128-128(%rax) + paddd %xmm3,%xmm11 + movd -24(%r8),%xmm0 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm13,%xmm7 + + por %xmm9,%xmm8 + movd -24(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 +.byte 102,15,56,0,229 + movd -24(%r10),%xmm8 + por %xmm7,%xmm13 + movd -24(%r11),%xmm7 + punpckldq %xmm8,%xmm0 + movdqa %xmm11,%xmm8 + paddd %xmm15,%xmm10 + punpckldq %xmm7,%xmm9 + movdqa %xmm12,%xmm7 + movdqa %xmm12,%xmm6 + pslld $5,%xmm8 + pandn %xmm14,%xmm7 + pand %xmm13,%xmm6 + punpckldq %xmm9,%xmm0 + movdqa %xmm11,%xmm9 + + movdqa %xmm4,144-128(%rax) + paddd %xmm4,%xmm10 + movd -20(%r8),%xmm1 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm12,%xmm7 + + por %xmm9,%xmm8 + movd -20(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 +.byte 102,15,56,0,197 + movd -20(%r10),%xmm8 + por %xmm7,%xmm12 + movd -20(%r11),%xmm7 + punpckldq %xmm8,%xmm1 + movdqa %xmm10,%xmm8 + paddd %xmm15,%xmm14 + punpckldq %xmm7,%xmm9 + movdqa %xmm11,%xmm7 + movdqa %xmm11,%xmm6 + pslld $5,%xmm8 + pandn %xmm13,%xmm7 + pand %xmm12,%xmm6 + punpckldq %xmm9,%xmm1 + movdqa %xmm10,%xmm9 + + movdqa %xmm0,160-128(%rax) + paddd %xmm0,%xmm14 + movd -16(%r8),%xmm2 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm11,%xmm7 + + por %xmm9,%xmm8 + movd -16(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 +.byte 102,15,56,0,205 + movd -16(%r10),%xmm8 + por %xmm7,%xmm11 + movd -16(%r11),%xmm7 + punpckldq %xmm8,%xmm2 + movdqa %xmm14,%xmm8 + paddd %xmm15,%xmm13 + punpckldq %xmm7,%xmm9 + movdqa %xmm10,%xmm7 + movdqa %xmm10,%xmm6 + pslld $5,%xmm8 + pandn %xmm12,%xmm7 + pand %xmm11,%xmm6 + punpckldq %xmm9,%xmm2 + movdqa %xmm14,%xmm9 + + movdqa %xmm1,176-128(%rax) + paddd %xmm1,%xmm13 + movd -12(%r8),%xmm3 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm10,%xmm7 + + por %xmm9,%xmm8 + movd -12(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 +.byte 102,15,56,0,213 + movd -12(%r10),%xmm8 + por %xmm7,%xmm10 + movd -12(%r11),%xmm7 + punpckldq %xmm8,%xmm3 + movdqa %xmm13,%xmm8 + paddd %xmm15,%xmm12 + punpckldq %xmm7,%xmm9 + movdqa %xmm14,%xmm7 + movdqa %xmm14,%xmm6 + pslld $5,%xmm8 + pandn %xmm11,%xmm7 + pand %xmm10,%xmm6 + punpckldq %xmm9,%xmm3 + movdqa %xmm13,%xmm9 + + movdqa %xmm2,192-128(%rax) + paddd %xmm2,%xmm12 + movd -8(%r8),%xmm4 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm14,%xmm7 + + por %xmm9,%xmm8 + movd -8(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 +.byte 102,15,56,0,221 + movd -8(%r10),%xmm8 + por %xmm7,%xmm14 + movd -8(%r11),%xmm7 + punpckldq %xmm8,%xmm4 + movdqa %xmm12,%xmm8 + paddd %xmm15,%xmm11 + punpckldq %xmm7,%xmm9 + movdqa %xmm13,%xmm7 + movdqa %xmm13,%xmm6 + pslld $5,%xmm8 + pandn %xmm10,%xmm7 + pand %xmm14,%xmm6 + punpckldq %xmm9,%xmm4 + movdqa %xmm12,%xmm9 + + movdqa %xmm3,208-128(%rax) + paddd %xmm3,%xmm11 + movd -4(%r8),%xmm0 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm13,%xmm7 + + por %xmm9,%xmm8 + movd -4(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 +.byte 102,15,56,0,229 + movd -4(%r10),%xmm8 + por %xmm7,%xmm13 + movdqa 0-128(%rax),%xmm1 + movd -4(%r11),%xmm7 + punpckldq %xmm8,%xmm0 + movdqa %xmm11,%xmm8 + paddd %xmm15,%xmm10 + punpckldq %xmm7,%xmm9 + movdqa %xmm12,%xmm7 + movdqa %xmm12,%xmm6 + pslld $5,%xmm8 + prefetcht0 63(%r8) + pandn %xmm14,%xmm7 + pand %xmm13,%xmm6 + punpckldq %xmm9,%xmm0 + movdqa %xmm11,%xmm9 + + movdqa %xmm4,224-128(%rax) + paddd %xmm4,%xmm10 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm12,%xmm7 + prefetcht0 63(%r9) + + por %xmm9,%xmm8 + pslld $30,%xmm7 + paddd %xmm6,%xmm10 + prefetcht0 63(%r10) + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 +.byte 102,15,56,0,197 + prefetcht0 63(%r11) + por %xmm7,%xmm12 + movdqa 16-128(%rax),%xmm2 + pxor %xmm3,%xmm1 + movdqa 32-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + pxor 128-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + movdqa %xmm11,%xmm7 + pslld $5,%xmm8 + pxor %xmm3,%xmm1 + movdqa %xmm11,%xmm6 + pandn %xmm13,%xmm7 + movdqa %xmm1,%xmm5 + pand %xmm12,%xmm6 + movdqa %xmm10,%xmm9 + psrld $31,%xmm5 + paddd %xmm1,%xmm1 + + movdqa %xmm0,240-128(%rax) + paddd %xmm0,%xmm14 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + + movdqa %xmm11,%xmm7 + por %xmm9,%xmm8 + pslld $30,%xmm7 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 48-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + pxor 144-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + movdqa %xmm10,%xmm7 + pslld $5,%xmm8 + pxor %xmm4,%xmm2 + movdqa %xmm10,%xmm6 + pandn %xmm12,%xmm7 + movdqa %xmm2,%xmm5 + pand %xmm11,%xmm6 + movdqa %xmm14,%xmm9 + psrld $31,%xmm5 + paddd %xmm2,%xmm2 + + movdqa %xmm1,0-128(%rax) + paddd %xmm1,%xmm13 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + + movdqa %xmm10,%xmm7 + por %xmm9,%xmm8 + pslld $30,%xmm7 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 64-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + pxor 160-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + movdqa %xmm14,%xmm7 + pslld $5,%xmm8 + pxor %xmm0,%xmm3 + movdqa %xmm14,%xmm6 + pandn %xmm11,%xmm7 + movdqa %xmm3,%xmm5 + pand %xmm10,%xmm6 + movdqa %xmm13,%xmm9 + psrld $31,%xmm5 + paddd %xmm3,%xmm3 + + movdqa %xmm2,16-128(%rax) + paddd %xmm2,%xmm12 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + + movdqa %xmm14,%xmm7 + por %xmm9,%xmm8 + pslld $30,%xmm7 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 80-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + pxor 176-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + movdqa %xmm13,%xmm7 + pslld $5,%xmm8 + pxor %xmm1,%xmm4 + movdqa %xmm13,%xmm6 + pandn %xmm10,%xmm7 + movdqa %xmm4,%xmm5 + pand %xmm14,%xmm6 + movdqa %xmm12,%xmm9 + psrld $31,%xmm5 + paddd %xmm4,%xmm4 + + movdqa %xmm3,32-128(%rax) + paddd %xmm3,%xmm11 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + + movdqa %xmm13,%xmm7 + por %xmm9,%xmm8 + pslld $30,%xmm7 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 96-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + pxor 192-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + movdqa %xmm12,%xmm7 + pslld $5,%xmm8 + pxor %xmm2,%xmm0 + movdqa %xmm12,%xmm6 + pandn %xmm14,%xmm7 + movdqa %xmm0,%xmm5 + pand %xmm13,%xmm6 + movdqa %xmm11,%xmm9 + psrld $31,%xmm5 + paddd %xmm0,%xmm0 + + movdqa %xmm4,48-128(%rax) + paddd %xmm4,%xmm10 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + + movdqa %xmm12,%xmm7 + por %xmm9,%xmm8 + pslld $30,%xmm7 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + movdqa 0(%rbp),%xmm15 + pxor %xmm3,%xmm1 + movdqa 112-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 208-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,64-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 128-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 224-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,80-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 144-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 240-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + movdqa %xmm2,96-128(%rax) + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 160-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 0-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + movdqa %xmm3,112-128(%rax) + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 176-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 16-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + movdqa %xmm4,128-128(%rax) + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 192-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 32-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,144-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 208-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 48-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,160-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 224-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 64-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + movdqa %xmm2,176-128(%rax) + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 240-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 80-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + movdqa %xmm3,192-128(%rax) + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 0-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 96-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + movdqa %xmm4,208-128(%rax) + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 16-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 112-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,224-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 32-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 128-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,240-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 48-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 144-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + movdqa %xmm2,0-128(%rax) + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 64-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 160-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + movdqa %xmm3,16-128(%rax) + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 80-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 176-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + movdqa %xmm4,32-128(%rax) + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 96-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 192-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,48-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 112-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 208-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,64-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 128-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 224-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + movdqa %xmm2,80-128(%rax) + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 144-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 240-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + movdqa %xmm3,96-128(%rax) + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 160-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 0-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + movdqa %xmm4,112-128(%rax) + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + movdqa 32(%rbp),%xmm15 + pxor %xmm3,%xmm1 + movdqa 176-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm7 + pxor 16-128(%rax),%xmm1 + pxor %xmm3,%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + movdqa %xmm10,%xmm9 + pand %xmm12,%xmm7 + + movdqa %xmm13,%xmm6 + movdqa %xmm1,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm14 + pxor %xmm12,%xmm6 + + movdqa %xmm0,128-128(%rax) + paddd %xmm0,%xmm14 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm11,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + paddd %xmm1,%xmm1 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 192-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm7 + pxor 32-128(%rax),%xmm2 + pxor %xmm4,%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + movdqa %xmm14,%xmm9 + pand %xmm11,%xmm7 + + movdqa %xmm12,%xmm6 + movdqa %xmm2,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm13 + pxor %xmm11,%xmm6 + + movdqa %xmm1,144-128(%rax) + paddd %xmm1,%xmm13 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm10,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + paddd %xmm2,%xmm2 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 208-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm7 + pxor 48-128(%rax),%xmm3 + pxor %xmm0,%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + movdqa %xmm13,%xmm9 + pand %xmm10,%xmm7 + + movdqa %xmm11,%xmm6 + movdqa %xmm3,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm12 + pxor %xmm10,%xmm6 + + movdqa %xmm2,160-128(%rax) + paddd %xmm2,%xmm12 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm14,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + paddd %xmm3,%xmm3 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 224-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm7 + pxor 64-128(%rax),%xmm4 + pxor %xmm1,%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + movdqa %xmm12,%xmm9 + pand %xmm14,%xmm7 + + movdqa %xmm10,%xmm6 + movdqa %xmm4,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm11 + pxor %xmm14,%xmm6 + + movdqa %xmm3,176-128(%rax) + paddd %xmm3,%xmm11 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm13,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + paddd %xmm4,%xmm4 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 240-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm7 + pxor 80-128(%rax),%xmm0 + pxor %xmm2,%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + movdqa %xmm11,%xmm9 + pand %xmm13,%xmm7 + + movdqa %xmm14,%xmm6 + movdqa %xmm0,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm10 + pxor %xmm13,%xmm6 + + movdqa %xmm4,192-128(%rax) + paddd %xmm4,%xmm10 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm12,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + paddd %xmm0,%xmm0 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 0-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm7 + pxor 96-128(%rax),%xmm1 + pxor %xmm3,%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + movdqa %xmm10,%xmm9 + pand %xmm12,%xmm7 + + movdqa %xmm13,%xmm6 + movdqa %xmm1,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm14 + pxor %xmm12,%xmm6 + + movdqa %xmm0,208-128(%rax) + paddd %xmm0,%xmm14 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm11,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + paddd %xmm1,%xmm1 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 16-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm7 + pxor 112-128(%rax),%xmm2 + pxor %xmm4,%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + movdqa %xmm14,%xmm9 + pand %xmm11,%xmm7 + + movdqa %xmm12,%xmm6 + movdqa %xmm2,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm13 + pxor %xmm11,%xmm6 + + movdqa %xmm1,224-128(%rax) + paddd %xmm1,%xmm13 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm10,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + paddd %xmm2,%xmm2 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 32-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm7 + pxor 128-128(%rax),%xmm3 + pxor %xmm0,%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + movdqa %xmm13,%xmm9 + pand %xmm10,%xmm7 + + movdqa %xmm11,%xmm6 + movdqa %xmm3,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm12 + pxor %xmm10,%xmm6 + + movdqa %xmm2,240-128(%rax) + paddd %xmm2,%xmm12 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm14,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + paddd %xmm3,%xmm3 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 48-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm7 + pxor 144-128(%rax),%xmm4 + pxor %xmm1,%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + movdqa %xmm12,%xmm9 + pand %xmm14,%xmm7 + + movdqa %xmm10,%xmm6 + movdqa %xmm4,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm11 + pxor %xmm14,%xmm6 + + movdqa %xmm3,0-128(%rax) + paddd %xmm3,%xmm11 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm13,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + paddd %xmm4,%xmm4 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 64-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm7 + pxor 160-128(%rax),%xmm0 + pxor %xmm2,%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + movdqa %xmm11,%xmm9 + pand %xmm13,%xmm7 + + movdqa %xmm14,%xmm6 + movdqa %xmm0,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm10 + pxor %xmm13,%xmm6 + + movdqa %xmm4,16-128(%rax) + paddd %xmm4,%xmm10 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm12,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + paddd %xmm0,%xmm0 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 80-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm7 + pxor 176-128(%rax),%xmm1 + pxor %xmm3,%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + movdqa %xmm10,%xmm9 + pand %xmm12,%xmm7 + + movdqa %xmm13,%xmm6 + movdqa %xmm1,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm14 + pxor %xmm12,%xmm6 + + movdqa %xmm0,32-128(%rax) + paddd %xmm0,%xmm14 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm11,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + paddd %xmm1,%xmm1 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 96-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm7 + pxor 192-128(%rax),%xmm2 + pxor %xmm4,%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + movdqa %xmm14,%xmm9 + pand %xmm11,%xmm7 + + movdqa %xmm12,%xmm6 + movdqa %xmm2,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm13 + pxor %xmm11,%xmm6 + + movdqa %xmm1,48-128(%rax) + paddd %xmm1,%xmm13 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm10,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + paddd %xmm2,%xmm2 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 112-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm7 + pxor 208-128(%rax),%xmm3 + pxor %xmm0,%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + movdqa %xmm13,%xmm9 + pand %xmm10,%xmm7 + + movdqa %xmm11,%xmm6 + movdqa %xmm3,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm12 + pxor %xmm10,%xmm6 + + movdqa %xmm2,64-128(%rax) + paddd %xmm2,%xmm12 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm14,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + paddd %xmm3,%xmm3 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 128-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm7 + pxor 224-128(%rax),%xmm4 + pxor %xmm1,%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + movdqa %xmm12,%xmm9 + pand %xmm14,%xmm7 + + movdqa %xmm10,%xmm6 + movdqa %xmm4,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm11 + pxor %xmm14,%xmm6 + + movdqa %xmm3,80-128(%rax) + paddd %xmm3,%xmm11 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm13,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + paddd %xmm4,%xmm4 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 144-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm7 + pxor 240-128(%rax),%xmm0 + pxor %xmm2,%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + movdqa %xmm11,%xmm9 + pand %xmm13,%xmm7 + + movdqa %xmm14,%xmm6 + movdqa %xmm0,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm10 + pxor %xmm13,%xmm6 + + movdqa %xmm4,96-128(%rax) + paddd %xmm4,%xmm10 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm12,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + paddd %xmm0,%xmm0 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 160-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm7 + pxor 0-128(%rax),%xmm1 + pxor %xmm3,%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + movdqa %xmm10,%xmm9 + pand %xmm12,%xmm7 + + movdqa %xmm13,%xmm6 + movdqa %xmm1,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm14 + pxor %xmm12,%xmm6 + + movdqa %xmm0,112-128(%rax) + paddd %xmm0,%xmm14 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm11,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + paddd %xmm1,%xmm1 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 176-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm7 + pxor 16-128(%rax),%xmm2 + pxor %xmm4,%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + movdqa %xmm14,%xmm9 + pand %xmm11,%xmm7 + + movdqa %xmm12,%xmm6 + movdqa %xmm2,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm13 + pxor %xmm11,%xmm6 + + movdqa %xmm1,128-128(%rax) + paddd %xmm1,%xmm13 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm10,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + paddd %xmm2,%xmm2 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 192-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm7 + pxor 32-128(%rax),%xmm3 + pxor %xmm0,%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + movdqa %xmm13,%xmm9 + pand %xmm10,%xmm7 + + movdqa %xmm11,%xmm6 + movdqa %xmm3,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm12 + pxor %xmm10,%xmm6 + + movdqa %xmm2,144-128(%rax) + paddd %xmm2,%xmm12 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm14,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + paddd %xmm3,%xmm3 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 208-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm7 + pxor 48-128(%rax),%xmm4 + pxor %xmm1,%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + movdqa %xmm12,%xmm9 + pand %xmm14,%xmm7 + + movdqa %xmm10,%xmm6 + movdqa %xmm4,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm11 + pxor %xmm14,%xmm6 + + movdqa %xmm3,160-128(%rax) + paddd %xmm3,%xmm11 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm13,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + paddd %xmm4,%xmm4 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 224-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm7 + pxor 64-128(%rax),%xmm0 + pxor %xmm2,%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + movdqa %xmm11,%xmm9 + pand %xmm13,%xmm7 + + movdqa %xmm14,%xmm6 + movdqa %xmm0,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm10 + pxor %xmm13,%xmm6 + + movdqa %xmm4,176-128(%rax) + paddd %xmm4,%xmm10 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm12,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + paddd %xmm0,%xmm0 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + movdqa 64(%rbp),%xmm15 + pxor %xmm3,%xmm1 + movdqa 240-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 80-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,192-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 0-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 96-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,208-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 16-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 112-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + movdqa %xmm2,224-128(%rax) + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 32-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 128-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + movdqa %xmm3,240-128(%rax) + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 48-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 144-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + movdqa %xmm4,0-128(%rax) + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 64-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 160-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,16-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 80-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 176-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,32-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 96-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 192-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + movdqa %xmm2,48-128(%rax) + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 112-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 208-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + movdqa %xmm3,64-128(%rax) + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 128-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 224-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + movdqa %xmm4,80-128(%rax) + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 144-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 240-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,96-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 160-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 0-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,112-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 176-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 16-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 192-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 32-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 208-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 48-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 224-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 64-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 240-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 80-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 0-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 96-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 16-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 112-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + movdqa %xmm11,%xmm8 + paddd %xmm15,%xmm10 + movdqa %xmm14,%xmm6 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + paddd %xmm4,%xmm10 + psrld $27,%xmm9 + movdqa %xmm12,%xmm7 + pxor %xmm13,%xmm6 + + pslld $30,%xmm7 + por %xmm9,%xmm8 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm7,%xmm12 + movdqa (%rbx),%xmm0 + movl $1,%ecx + cmpl 0(%rbx),%ecx + pxor %xmm8,%xmm8 + cmovgeq %rbp,%r8 + cmpl 4(%rbx),%ecx + movdqa %xmm0,%xmm1 + cmovgeq %rbp,%r9 + cmpl 8(%rbx),%ecx + pcmpgtd %xmm8,%xmm1 + cmovgeq %rbp,%r10 + cmpl 12(%rbx),%ecx + paddd %xmm1,%xmm0 + cmovgeq %rbp,%r11 + + movdqu 0(%rdi),%xmm6 + pand %xmm1,%xmm10 + movdqu 32(%rdi),%xmm7 + pand %xmm1,%xmm11 + paddd %xmm6,%xmm10 + movdqu 64(%rdi),%xmm8 + pand %xmm1,%xmm12 + paddd %xmm7,%xmm11 + movdqu 96(%rdi),%xmm9 + pand %xmm1,%xmm13 + paddd %xmm8,%xmm12 + movdqu 128(%rdi),%xmm5 + pand %xmm1,%xmm14 + movdqu %xmm10,0(%rdi) + paddd %xmm9,%xmm13 + movdqu %xmm11,32(%rdi) + paddd %xmm5,%xmm14 + movdqu %xmm12,64(%rdi) + movdqu %xmm13,96(%rdi) + movdqu %xmm14,128(%rdi) + + movdqa %xmm0,(%rbx) + movdqa 96(%rbp),%xmm5 + movdqa -32(%rbp),%xmm15 + decl %edx + jnz .Loop + + movl 280(%rsp),%edx + leaq 16(%rdi),%rdi + leaq 64(%rsi),%rsi + decl %edx + jnz .Loop_grande + +.Ldone: + movq 272(%rsp),%rax +.cfi_def_cfa %rax,8 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha1_multi_block,.-sha1_multi_block +.type sha1_multi_block_shaext,@function +.align 32 +sha1_multi_block_shaext: +.cfi_startproc +_shaext_shortcut: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + subq $288,%rsp + shll $1,%edx + andq $-256,%rsp + leaq 64(%rdi),%rdi + movq %rax,272(%rsp) +.Lbody_shaext: + leaq 256(%rsp),%rbx + movdqa K_XX_XX+128(%rip),%xmm3 + +.Loop_grande_shaext: + movl %edx,280(%rsp) + xorl %edx,%edx + movq 0(%rsi),%r8 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rsp,%r8 + movq 16(%rsi),%r9 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rsp,%r9 + testl %edx,%edx + jz .Ldone_shaext + + movq 0-64(%rdi),%xmm0 + movq 32-64(%rdi),%xmm4 + movq 64-64(%rdi),%xmm5 + movq 96-64(%rdi),%xmm6 + movq 128-64(%rdi),%xmm7 + + punpckldq %xmm4,%xmm0 + punpckldq %xmm6,%xmm5 + + movdqa %xmm0,%xmm8 + punpcklqdq %xmm5,%xmm0 + punpckhqdq %xmm5,%xmm8 + + pshufd $63,%xmm7,%xmm1 + pshufd $127,%xmm7,%xmm9 + pshufd $27,%xmm0,%xmm0 + pshufd $27,%xmm8,%xmm8 + jmp .Loop_shaext + +.align 32 +.Loop_shaext: + movdqu 0(%r8),%xmm4 + movdqu 0(%r9),%xmm11 + movdqu 16(%r8),%xmm5 + movdqu 16(%r9),%xmm12 + movdqu 32(%r8),%xmm6 +.byte 102,15,56,0,227 + movdqu 32(%r9),%xmm13 +.byte 102,68,15,56,0,219 + movdqu 48(%r8),%xmm7 + leaq 64(%r8),%r8 +.byte 102,15,56,0,235 + movdqu 48(%r9),%xmm14 + leaq 64(%r9),%r9 +.byte 102,68,15,56,0,227 + + movdqa %xmm1,80(%rsp) + paddd %xmm4,%xmm1 + movdqa %xmm9,112(%rsp) + paddd %xmm11,%xmm9 + movdqa %xmm0,64(%rsp) + movdqa %xmm0,%xmm2 + movdqa %xmm8,96(%rsp) + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,0 +.byte 15,56,200,213 +.byte 69,15,58,204,193,0 +.byte 69,15,56,200,212 +.byte 102,15,56,0,243 + prefetcht0 127(%r8) +.byte 15,56,201,229 +.byte 102,68,15,56,0,235 + prefetcht0 127(%r9) +.byte 69,15,56,201,220 + +.byte 102,15,56,0,251 + movdqa %xmm0,%xmm1 +.byte 102,68,15,56,0,243 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,0 +.byte 15,56,200,206 +.byte 69,15,58,204,194,0 +.byte 69,15,56,200,205 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + pxor %xmm13,%xmm11 +.byte 69,15,56,201,229 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,0 +.byte 15,56,200,215 +.byte 69,15,58,204,193,0 +.byte 69,15,56,200,214 +.byte 15,56,202,231 +.byte 69,15,56,202,222 + pxor %xmm7,%xmm5 +.byte 15,56,201,247 + pxor %xmm14,%xmm12 +.byte 69,15,56,201,238 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,0 +.byte 15,56,200,204 +.byte 69,15,58,204,194,0 +.byte 69,15,56,200,203 +.byte 15,56,202,236 +.byte 69,15,56,202,227 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 + pxor %xmm11,%xmm13 +.byte 69,15,56,201,243 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,0 +.byte 15,56,200,213 +.byte 69,15,58,204,193,0 +.byte 69,15,56,200,212 +.byte 15,56,202,245 +.byte 69,15,56,202,236 + pxor %xmm5,%xmm7 +.byte 15,56,201,229 + pxor %xmm12,%xmm14 +.byte 69,15,56,201,220 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,1 +.byte 15,56,200,206 +.byte 69,15,58,204,194,1 +.byte 69,15,56,200,205 +.byte 15,56,202,254 +.byte 69,15,56,202,245 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + pxor %xmm13,%xmm11 +.byte 69,15,56,201,229 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,1 +.byte 15,56,200,215 +.byte 69,15,58,204,193,1 +.byte 69,15,56,200,214 +.byte 15,56,202,231 +.byte 69,15,56,202,222 + pxor %xmm7,%xmm5 +.byte 15,56,201,247 + pxor %xmm14,%xmm12 +.byte 69,15,56,201,238 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,1 +.byte 15,56,200,204 +.byte 69,15,58,204,194,1 +.byte 69,15,56,200,203 +.byte 15,56,202,236 +.byte 69,15,56,202,227 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 + pxor %xmm11,%xmm13 +.byte 69,15,56,201,243 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,1 +.byte 15,56,200,213 +.byte 69,15,58,204,193,1 +.byte 69,15,56,200,212 +.byte 15,56,202,245 +.byte 69,15,56,202,236 + pxor %xmm5,%xmm7 +.byte 15,56,201,229 + pxor %xmm12,%xmm14 +.byte 69,15,56,201,220 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,1 +.byte 15,56,200,206 +.byte 69,15,58,204,194,1 +.byte 69,15,56,200,205 +.byte 15,56,202,254 +.byte 69,15,56,202,245 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + pxor %xmm13,%xmm11 +.byte 69,15,56,201,229 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,2 +.byte 15,56,200,215 +.byte 69,15,58,204,193,2 +.byte 69,15,56,200,214 +.byte 15,56,202,231 +.byte 69,15,56,202,222 + pxor %xmm7,%xmm5 +.byte 15,56,201,247 + pxor %xmm14,%xmm12 +.byte 69,15,56,201,238 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,2 +.byte 15,56,200,204 +.byte 69,15,58,204,194,2 +.byte 69,15,56,200,203 +.byte 15,56,202,236 +.byte 69,15,56,202,227 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 + pxor %xmm11,%xmm13 +.byte 69,15,56,201,243 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,2 +.byte 15,56,200,213 +.byte 69,15,58,204,193,2 +.byte 69,15,56,200,212 +.byte 15,56,202,245 +.byte 69,15,56,202,236 + pxor %xmm5,%xmm7 +.byte 15,56,201,229 + pxor %xmm12,%xmm14 +.byte 69,15,56,201,220 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,2 +.byte 15,56,200,206 +.byte 69,15,58,204,194,2 +.byte 69,15,56,200,205 +.byte 15,56,202,254 +.byte 69,15,56,202,245 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + pxor %xmm13,%xmm11 +.byte 69,15,56,201,229 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,2 +.byte 15,56,200,215 +.byte 69,15,58,204,193,2 +.byte 69,15,56,200,214 +.byte 15,56,202,231 +.byte 69,15,56,202,222 + pxor %xmm7,%xmm5 +.byte 15,56,201,247 + pxor %xmm14,%xmm12 +.byte 69,15,56,201,238 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,3 +.byte 15,56,200,204 +.byte 69,15,58,204,194,3 +.byte 69,15,56,200,203 +.byte 15,56,202,236 +.byte 69,15,56,202,227 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 + pxor %xmm11,%xmm13 +.byte 69,15,56,201,243 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,3 +.byte 15,56,200,213 +.byte 69,15,58,204,193,3 +.byte 69,15,56,200,212 +.byte 15,56,202,245 +.byte 69,15,56,202,236 + pxor %xmm5,%xmm7 + pxor %xmm12,%xmm14 + + movl $1,%ecx + pxor %xmm4,%xmm4 + cmpl 0(%rbx),%ecx + cmovgeq %rsp,%r8 + + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,3 +.byte 15,56,200,206 +.byte 69,15,58,204,194,3 +.byte 69,15,56,200,205 +.byte 15,56,202,254 +.byte 69,15,56,202,245 + + cmpl 4(%rbx),%ecx + cmovgeq %rsp,%r9 + movq (%rbx),%xmm6 + + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,3 +.byte 15,56,200,215 +.byte 69,15,58,204,193,3 +.byte 69,15,56,200,214 + + pshufd $0x00,%xmm6,%xmm11 + pshufd $0x55,%xmm6,%xmm12 + movdqa %xmm6,%xmm7 + pcmpgtd %xmm4,%xmm11 + pcmpgtd %xmm4,%xmm12 + + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,3 +.byte 15,56,200,204 +.byte 69,15,58,204,194,3 +.byte 68,15,56,200,204 + + pcmpgtd %xmm4,%xmm7 + pand %xmm11,%xmm0 + pand %xmm11,%xmm1 + pand %xmm12,%xmm8 + pand %xmm12,%xmm9 + paddd %xmm7,%xmm6 + + paddd 64(%rsp),%xmm0 + paddd 80(%rsp),%xmm1 + paddd 96(%rsp),%xmm8 + paddd 112(%rsp),%xmm9 + + movq %xmm6,(%rbx) + decl %edx + jnz .Loop_shaext + + movl 280(%rsp),%edx + + pshufd $27,%xmm0,%xmm0 + pshufd $27,%xmm8,%xmm8 + + movdqa %xmm0,%xmm6 + punpckldq %xmm8,%xmm0 + punpckhdq %xmm8,%xmm6 + punpckhdq %xmm9,%xmm1 + movq %xmm0,0-64(%rdi) + psrldq $8,%xmm0 + movq %xmm6,64-64(%rdi) + psrldq $8,%xmm6 + movq %xmm0,32-64(%rdi) + psrldq $8,%xmm1 + movq %xmm6,96-64(%rdi) + movq %xmm1,128-64(%rdi) + + leaq 8(%rdi),%rdi + leaq 32(%rsi),%rsi + decl %edx + jnz .Loop_grande_shaext + +.Ldone_shaext: + + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_shaext: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha1_multi_block_shaext,.-sha1_multi_block_shaext +.type sha1_multi_block_avx,@function +.align 32 +sha1_multi_block_avx: +.cfi_startproc +_avx_shortcut: + shrq $32,%rcx + cmpl $2,%edx + jb .Lavx + testl $32,%ecx + jnz _avx2_shortcut + jmp .Lavx +.align 32 +.Lavx: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + subq $288,%rsp + andq $-256,%rsp + movq %rax,272(%rsp) +.cfi_escape 0x0f,0x06,0x77,0x90,0x02,0x06,0x23,0x08 +.Lbody_avx: + leaq K_XX_XX(%rip),%rbp + leaq 256(%rsp),%rbx + + vzeroupper +.Loop_grande_avx: + movl %edx,280(%rsp) + xorl %edx,%edx + movq 0(%rsi),%r8 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rbp,%r8 + movq 16(%rsi),%r9 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rbp,%r9 + movq 32(%rsi),%r10 + movl 40(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,8(%rbx) + cmovleq %rbp,%r10 + movq 48(%rsi),%r11 + movl 56(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,12(%rbx) + cmovleq %rbp,%r11 + testl %edx,%edx + jz .Ldone_avx + + vmovdqu 0(%rdi),%xmm10 + leaq 128(%rsp),%rax + vmovdqu 32(%rdi),%xmm11 + vmovdqu 64(%rdi),%xmm12 + vmovdqu 96(%rdi),%xmm13 + vmovdqu 128(%rdi),%xmm14 + vmovdqu 96(%rbp),%xmm5 + jmp .Loop_avx + +.align 32 +.Loop_avx: + vmovdqa -32(%rbp),%xmm15 + vmovd (%r8),%xmm0 + leaq 64(%r8),%r8 + vmovd (%r9),%xmm2 + leaq 64(%r9),%r9 + vpinsrd $1,(%r10),%xmm0,%xmm0 + leaq 64(%r10),%r10 + vpinsrd $1,(%r11),%xmm2,%xmm2 + leaq 64(%r11),%r11 + vmovd -60(%r8),%xmm1 + vpunpckldq %xmm2,%xmm0,%xmm0 + vmovd -60(%r9),%xmm9 + vpshufb %xmm5,%xmm0,%xmm0 + vpinsrd $1,-60(%r10),%xmm1,%xmm1 + vpinsrd $1,-60(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpandn %xmm13,%xmm11,%xmm7 + vpand %xmm12,%xmm11,%xmm6 + + vmovdqa %xmm0,0-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpunpckldq %xmm9,%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -56(%r8),%xmm2 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -56(%r9),%xmm9 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpshufb %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpinsrd $1,-56(%r10),%xmm2,%xmm2 + vpinsrd $1,-56(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpandn %xmm12,%xmm10,%xmm7 + vpand %xmm11,%xmm10,%xmm6 + + vmovdqa %xmm1,16-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpunpckldq %xmm9,%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -52(%r8),%xmm3 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -52(%r9),%xmm9 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpshufb %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpinsrd $1,-52(%r10),%xmm3,%xmm3 + vpinsrd $1,-52(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpandn %xmm11,%xmm14,%xmm7 + vpand %xmm10,%xmm14,%xmm6 + + vmovdqa %xmm2,32-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpunpckldq %xmm9,%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -48(%r8),%xmm4 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -48(%r9),%xmm9 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpshufb %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpinsrd $1,-48(%r10),%xmm4,%xmm4 + vpinsrd $1,-48(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpandn %xmm10,%xmm13,%xmm7 + vpand %xmm14,%xmm13,%xmm6 + + vmovdqa %xmm3,48-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpunpckldq %xmm9,%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -44(%r8),%xmm0 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -44(%r9),%xmm9 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpshufb %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpinsrd $1,-44(%r10),%xmm0,%xmm0 + vpinsrd $1,-44(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpandn %xmm14,%xmm12,%xmm7 + vpand %xmm13,%xmm12,%xmm6 + + vmovdqa %xmm4,64-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpunpckldq %xmm9,%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -40(%r8),%xmm1 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -40(%r9),%xmm9 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpshufb %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpinsrd $1,-40(%r10),%xmm1,%xmm1 + vpinsrd $1,-40(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpandn %xmm13,%xmm11,%xmm7 + vpand %xmm12,%xmm11,%xmm6 + + vmovdqa %xmm0,80-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpunpckldq %xmm9,%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -36(%r8),%xmm2 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -36(%r9),%xmm9 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpshufb %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpinsrd $1,-36(%r10),%xmm2,%xmm2 + vpinsrd $1,-36(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpandn %xmm12,%xmm10,%xmm7 + vpand %xmm11,%xmm10,%xmm6 + + vmovdqa %xmm1,96-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpunpckldq %xmm9,%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -32(%r8),%xmm3 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -32(%r9),%xmm9 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpshufb %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpinsrd $1,-32(%r10),%xmm3,%xmm3 + vpinsrd $1,-32(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpandn %xmm11,%xmm14,%xmm7 + vpand %xmm10,%xmm14,%xmm6 + + vmovdqa %xmm2,112-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpunpckldq %xmm9,%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -28(%r8),%xmm4 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -28(%r9),%xmm9 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpshufb %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpinsrd $1,-28(%r10),%xmm4,%xmm4 + vpinsrd $1,-28(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpandn %xmm10,%xmm13,%xmm7 + vpand %xmm14,%xmm13,%xmm6 + + vmovdqa %xmm3,128-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpunpckldq %xmm9,%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -24(%r8),%xmm0 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -24(%r9),%xmm9 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpshufb %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpinsrd $1,-24(%r10),%xmm0,%xmm0 + vpinsrd $1,-24(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpandn %xmm14,%xmm12,%xmm7 + vpand %xmm13,%xmm12,%xmm6 + + vmovdqa %xmm4,144-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpunpckldq %xmm9,%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -20(%r8),%xmm1 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -20(%r9),%xmm9 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpshufb %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpinsrd $1,-20(%r10),%xmm1,%xmm1 + vpinsrd $1,-20(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpandn %xmm13,%xmm11,%xmm7 + vpand %xmm12,%xmm11,%xmm6 + + vmovdqa %xmm0,160-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpunpckldq %xmm9,%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -16(%r8),%xmm2 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -16(%r9),%xmm9 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpshufb %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpinsrd $1,-16(%r10),%xmm2,%xmm2 + vpinsrd $1,-16(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpandn %xmm12,%xmm10,%xmm7 + vpand %xmm11,%xmm10,%xmm6 + + vmovdqa %xmm1,176-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpunpckldq %xmm9,%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -12(%r8),%xmm3 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -12(%r9),%xmm9 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpshufb %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpinsrd $1,-12(%r10),%xmm3,%xmm3 + vpinsrd $1,-12(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpandn %xmm11,%xmm14,%xmm7 + vpand %xmm10,%xmm14,%xmm6 + + vmovdqa %xmm2,192-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpunpckldq %xmm9,%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -8(%r8),%xmm4 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -8(%r9),%xmm9 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpshufb %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpinsrd $1,-8(%r10),%xmm4,%xmm4 + vpinsrd $1,-8(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpandn %xmm10,%xmm13,%xmm7 + vpand %xmm14,%xmm13,%xmm6 + + vmovdqa %xmm3,208-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpunpckldq %xmm9,%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -4(%r8),%xmm0 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -4(%r9),%xmm9 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpshufb %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vmovdqa 0-128(%rax),%xmm1 + vpinsrd $1,-4(%r10),%xmm0,%xmm0 + vpinsrd $1,-4(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm10,%xmm10 + prefetcht0 63(%r8) + vpslld $5,%xmm11,%xmm8 + vpandn %xmm14,%xmm12,%xmm7 + vpand %xmm13,%xmm12,%xmm6 + + vmovdqa %xmm4,224-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpunpckldq %xmm9,%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + prefetcht0 63(%r9) + vpxor %xmm7,%xmm6,%xmm6 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + prefetcht0 63(%r10) + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + prefetcht0 63(%r11) + vpshufb %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vmovdqa 16-128(%rax),%xmm2 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 32-128(%rax),%xmm3 + + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpandn %xmm13,%xmm11,%xmm7 + + vpand %xmm12,%xmm11,%xmm6 + + vmovdqa %xmm0,240-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 128-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 48-128(%rax),%xmm4 + + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpandn %xmm12,%xmm10,%xmm7 + + vpand %xmm11,%xmm10,%xmm6 + + vmovdqa %xmm1,0-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 144-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 64-128(%rax),%xmm0 + + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpandn %xmm11,%xmm14,%xmm7 + + vpand %xmm10,%xmm14,%xmm6 + + vmovdqa %xmm2,16-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 160-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 80-128(%rax),%xmm1 + + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpandn %xmm10,%xmm13,%xmm7 + + vpand %xmm14,%xmm13,%xmm6 + + vmovdqa %xmm3,32-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 176-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 96-128(%rax),%xmm2 + + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpandn %xmm14,%xmm12,%xmm7 + + vpand %xmm13,%xmm12,%xmm6 + + vmovdqa %xmm4,48-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 192-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vmovdqa 0(%rbp),%xmm15 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 112-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,64-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 208-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 128-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,80-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 224-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 144-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vmovdqa %xmm2,96-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 240-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 160-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vmovdqa %xmm3,112-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 0-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 176-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vmovdqa %xmm4,128-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 16-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 192-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,144-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 32-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 208-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,160-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 48-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 224-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vmovdqa %xmm2,176-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 64-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 240-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vmovdqa %xmm3,192-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 80-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 0-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vmovdqa %xmm4,208-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 96-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 16-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,224-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 112-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 32-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,240-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 128-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 48-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vmovdqa %xmm2,0-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 144-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 64-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vmovdqa %xmm3,16-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 160-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 80-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vmovdqa %xmm4,32-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 176-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 96-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,48-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 192-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 112-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,64-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 208-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 128-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vmovdqa %xmm2,80-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 224-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 144-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vmovdqa %xmm3,96-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 240-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 160-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vmovdqa %xmm4,112-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 0-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vmovdqa 32(%rbp),%xmm15 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 176-128(%rax),%xmm3 + + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpand %xmm12,%xmm13,%xmm7 + vpxor 16-128(%rax),%xmm1,%xmm1 + + vpaddd %xmm7,%xmm14,%xmm14 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm13,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vmovdqu %xmm0,128-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm1,%xmm5 + vpand %xmm11,%xmm6,%xmm6 + vpaddd %xmm1,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 192-128(%rax),%xmm4 + + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpand %xmm11,%xmm12,%xmm7 + vpxor 32-128(%rax),%xmm2,%xmm2 + + vpaddd %xmm7,%xmm13,%xmm13 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm12,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vmovdqu %xmm1,144-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm2,%xmm5 + vpand %xmm10,%xmm6,%xmm6 + vpaddd %xmm2,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 208-128(%rax),%xmm0 + + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpand %xmm10,%xmm11,%xmm7 + vpxor 48-128(%rax),%xmm3,%xmm3 + + vpaddd %xmm7,%xmm12,%xmm12 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm11,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vmovdqu %xmm2,160-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm3,%xmm5 + vpand %xmm14,%xmm6,%xmm6 + vpaddd %xmm3,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 224-128(%rax),%xmm1 + + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpand %xmm14,%xmm10,%xmm7 + vpxor 64-128(%rax),%xmm4,%xmm4 + + vpaddd %xmm7,%xmm11,%xmm11 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm10,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vmovdqu %xmm3,176-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm4,%xmm5 + vpand %xmm13,%xmm6,%xmm6 + vpaddd %xmm4,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 240-128(%rax),%xmm2 + + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpand %xmm13,%xmm14,%xmm7 + vpxor 80-128(%rax),%xmm0,%xmm0 + + vpaddd %xmm7,%xmm10,%xmm10 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm14,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vmovdqu %xmm4,192-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm0,%xmm5 + vpand %xmm12,%xmm6,%xmm6 + vpaddd %xmm0,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 0-128(%rax),%xmm3 + + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpand %xmm12,%xmm13,%xmm7 + vpxor 96-128(%rax),%xmm1,%xmm1 + + vpaddd %xmm7,%xmm14,%xmm14 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm13,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vmovdqu %xmm0,208-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm1,%xmm5 + vpand %xmm11,%xmm6,%xmm6 + vpaddd %xmm1,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 16-128(%rax),%xmm4 + + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpand %xmm11,%xmm12,%xmm7 + vpxor 112-128(%rax),%xmm2,%xmm2 + + vpaddd %xmm7,%xmm13,%xmm13 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm12,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vmovdqu %xmm1,224-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm2,%xmm5 + vpand %xmm10,%xmm6,%xmm6 + vpaddd %xmm2,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 32-128(%rax),%xmm0 + + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpand %xmm10,%xmm11,%xmm7 + vpxor 128-128(%rax),%xmm3,%xmm3 + + vpaddd %xmm7,%xmm12,%xmm12 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm11,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vmovdqu %xmm2,240-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm3,%xmm5 + vpand %xmm14,%xmm6,%xmm6 + vpaddd %xmm3,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 48-128(%rax),%xmm1 + + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpand %xmm14,%xmm10,%xmm7 + vpxor 144-128(%rax),%xmm4,%xmm4 + + vpaddd %xmm7,%xmm11,%xmm11 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm10,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vmovdqu %xmm3,0-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm4,%xmm5 + vpand %xmm13,%xmm6,%xmm6 + vpaddd %xmm4,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 64-128(%rax),%xmm2 + + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpand %xmm13,%xmm14,%xmm7 + vpxor 160-128(%rax),%xmm0,%xmm0 + + vpaddd %xmm7,%xmm10,%xmm10 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm14,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vmovdqu %xmm4,16-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm0,%xmm5 + vpand %xmm12,%xmm6,%xmm6 + vpaddd %xmm0,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 80-128(%rax),%xmm3 + + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpand %xmm12,%xmm13,%xmm7 + vpxor 176-128(%rax),%xmm1,%xmm1 + + vpaddd %xmm7,%xmm14,%xmm14 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm13,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vmovdqu %xmm0,32-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm1,%xmm5 + vpand %xmm11,%xmm6,%xmm6 + vpaddd %xmm1,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 96-128(%rax),%xmm4 + + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpand %xmm11,%xmm12,%xmm7 + vpxor 192-128(%rax),%xmm2,%xmm2 + + vpaddd %xmm7,%xmm13,%xmm13 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm12,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vmovdqu %xmm1,48-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm2,%xmm5 + vpand %xmm10,%xmm6,%xmm6 + vpaddd %xmm2,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 112-128(%rax),%xmm0 + + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpand %xmm10,%xmm11,%xmm7 + vpxor 208-128(%rax),%xmm3,%xmm3 + + vpaddd %xmm7,%xmm12,%xmm12 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm11,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vmovdqu %xmm2,64-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm3,%xmm5 + vpand %xmm14,%xmm6,%xmm6 + vpaddd %xmm3,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 128-128(%rax),%xmm1 + + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpand %xmm14,%xmm10,%xmm7 + vpxor 224-128(%rax),%xmm4,%xmm4 + + vpaddd %xmm7,%xmm11,%xmm11 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm10,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vmovdqu %xmm3,80-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm4,%xmm5 + vpand %xmm13,%xmm6,%xmm6 + vpaddd %xmm4,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 144-128(%rax),%xmm2 + + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpand %xmm13,%xmm14,%xmm7 + vpxor 240-128(%rax),%xmm0,%xmm0 + + vpaddd %xmm7,%xmm10,%xmm10 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm14,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vmovdqu %xmm4,96-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm0,%xmm5 + vpand %xmm12,%xmm6,%xmm6 + vpaddd %xmm0,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 160-128(%rax),%xmm3 + + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpand %xmm12,%xmm13,%xmm7 + vpxor 0-128(%rax),%xmm1,%xmm1 + + vpaddd %xmm7,%xmm14,%xmm14 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm13,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vmovdqu %xmm0,112-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm1,%xmm5 + vpand %xmm11,%xmm6,%xmm6 + vpaddd %xmm1,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 176-128(%rax),%xmm4 + + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpand %xmm11,%xmm12,%xmm7 + vpxor 16-128(%rax),%xmm2,%xmm2 + + vpaddd %xmm7,%xmm13,%xmm13 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm12,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vmovdqu %xmm1,128-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm2,%xmm5 + vpand %xmm10,%xmm6,%xmm6 + vpaddd %xmm2,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 192-128(%rax),%xmm0 + + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpand %xmm10,%xmm11,%xmm7 + vpxor 32-128(%rax),%xmm3,%xmm3 + + vpaddd %xmm7,%xmm12,%xmm12 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm11,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vmovdqu %xmm2,144-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm3,%xmm5 + vpand %xmm14,%xmm6,%xmm6 + vpaddd %xmm3,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 208-128(%rax),%xmm1 + + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpand %xmm14,%xmm10,%xmm7 + vpxor 48-128(%rax),%xmm4,%xmm4 + + vpaddd %xmm7,%xmm11,%xmm11 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm10,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vmovdqu %xmm3,160-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm4,%xmm5 + vpand %xmm13,%xmm6,%xmm6 + vpaddd %xmm4,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 224-128(%rax),%xmm2 + + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpand %xmm13,%xmm14,%xmm7 + vpxor 64-128(%rax),%xmm0,%xmm0 + + vpaddd %xmm7,%xmm10,%xmm10 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm14,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vmovdqu %xmm4,176-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm0,%xmm5 + vpand %xmm12,%xmm6,%xmm6 + vpaddd %xmm0,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vmovdqa 64(%rbp),%xmm15 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 240-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,192-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 80-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 0-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,208-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 96-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 16-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vmovdqa %xmm2,224-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 112-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 32-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vmovdqa %xmm3,240-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 128-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 48-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vmovdqa %xmm4,0-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 144-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 64-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,16-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 160-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 80-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,32-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 176-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 96-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vmovdqa %xmm2,48-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 192-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 112-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vmovdqa %xmm3,64-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 208-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 128-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vmovdqa %xmm4,80-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 224-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 144-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,96-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 240-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 160-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,112-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 0-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 176-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 16-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 192-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 32-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 208-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 48-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 224-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 64-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 240-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 80-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 0-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 96-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 16-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 112-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + + vpsrld $27,%xmm11,%xmm9 + vpaddd %xmm4,%xmm10,%xmm10 + vpxor %xmm13,%xmm6,%xmm6 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm7,%xmm12,%xmm12 + movl $1,%ecx + cmpl 0(%rbx),%ecx + cmovgeq %rbp,%r8 + cmpl 4(%rbx),%ecx + cmovgeq %rbp,%r9 + cmpl 8(%rbx),%ecx + cmovgeq %rbp,%r10 + cmpl 12(%rbx),%ecx + cmovgeq %rbp,%r11 + vmovdqu (%rbx),%xmm6 + vpxor %xmm8,%xmm8,%xmm8 + vmovdqa %xmm6,%xmm7 + vpcmpgtd %xmm8,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + + vpand %xmm7,%xmm10,%xmm10 + vpand %xmm7,%xmm11,%xmm11 + vpaddd 0(%rdi),%xmm10,%xmm10 + vpand %xmm7,%xmm12,%xmm12 + vpaddd 32(%rdi),%xmm11,%xmm11 + vpand %xmm7,%xmm13,%xmm13 + vpaddd 64(%rdi),%xmm12,%xmm12 + vpand %xmm7,%xmm14,%xmm14 + vpaddd 96(%rdi),%xmm13,%xmm13 + vpaddd 128(%rdi),%xmm14,%xmm14 + vmovdqu %xmm10,0(%rdi) + vmovdqu %xmm11,32(%rdi) + vmovdqu %xmm12,64(%rdi) + vmovdqu %xmm13,96(%rdi) + vmovdqu %xmm14,128(%rdi) + + vmovdqu %xmm6,(%rbx) + vmovdqu 96(%rbp),%xmm5 + decl %edx + jnz .Loop_avx + + movl 280(%rsp),%edx + leaq 16(%rdi),%rdi + leaq 64(%rsi),%rsi + decl %edx + jnz .Loop_grande_avx + +.Ldone_avx: + movq 272(%rsp),%rax +.cfi_def_cfa %rax,8 + vzeroupper + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_avx: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha1_multi_block_avx,.-sha1_multi_block_avx +.type sha1_multi_block_avx2,@function +.align 32 +sha1_multi_block_avx2: +.cfi_startproc +_avx2_shortcut: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + subq $576,%rsp + andq $-256,%rsp + movq %rax,544(%rsp) +.cfi_escape 0x0f,0x06,0x77,0xa0,0x04,0x06,0x23,0x08 +.Lbody_avx2: + leaq K_XX_XX(%rip),%rbp + shrl $1,%edx + + vzeroupper +.Loop_grande_avx2: + movl %edx,552(%rsp) + xorl %edx,%edx + leaq 512(%rsp),%rbx + movq 0(%rsi),%r12 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rbp,%r12 + movq 16(%rsi),%r13 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rbp,%r13 + movq 32(%rsi),%r14 + movl 40(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,8(%rbx) + cmovleq %rbp,%r14 + movq 48(%rsi),%r15 + movl 56(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,12(%rbx) + cmovleq %rbp,%r15 + movq 64(%rsi),%r8 + movl 72(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,16(%rbx) + cmovleq %rbp,%r8 + movq 80(%rsi),%r9 + movl 88(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,20(%rbx) + cmovleq %rbp,%r9 + movq 96(%rsi),%r10 + movl 104(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,24(%rbx) + cmovleq %rbp,%r10 + movq 112(%rsi),%r11 + movl 120(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,28(%rbx) + cmovleq %rbp,%r11 + vmovdqu 0(%rdi),%ymm0 + leaq 128(%rsp),%rax + vmovdqu 32(%rdi),%ymm1 + leaq 256+128(%rsp),%rbx + vmovdqu 64(%rdi),%ymm2 + vmovdqu 96(%rdi),%ymm3 + vmovdqu 128(%rdi),%ymm4 + vmovdqu 96(%rbp),%ymm9 + jmp .Loop_avx2 + +.align 32 +.Loop_avx2: + vmovdqa -32(%rbp),%ymm15 + vmovd (%r12),%xmm10 + leaq 64(%r12),%r12 + vmovd (%r8),%xmm12 + leaq 64(%r8),%r8 + vmovd (%r13),%xmm7 + leaq 64(%r13),%r13 + vmovd (%r9),%xmm6 + leaq 64(%r9),%r9 + vpinsrd $1,(%r14),%xmm10,%xmm10 + leaq 64(%r14),%r14 + vpinsrd $1,(%r10),%xmm12,%xmm12 + leaq 64(%r10),%r10 + vpinsrd $1,(%r15),%xmm7,%xmm7 + leaq 64(%r15),%r15 + vpunpckldq %ymm7,%ymm10,%ymm10 + vpinsrd $1,(%r11),%xmm6,%xmm6 + leaq 64(%r11),%r11 + vpunpckldq %ymm6,%ymm12,%ymm12 + vmovd -60(%r12),%xmm11 + vinserti128 $1,%xmm12,%ymm10,%ymm10 + vmovd -60(%r8),%xmm8 + vpshufb %ymm9,%ymm10,%ymm10 + vmovd -60(%r13),%xmm7 + vmovd -60(%r9),%xmm6 + vpinsrd $1,-60(%r14),%xmm11,%xmm11 + vpinsrd $1,-60(%r10),%xmm8,%xmm8 + vpinsrd $1,-60(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm11,%ymm11 + vpinsrd $1,-60(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpandn %ymm3,%ymm1,%ymm6 + vpand %ymm2,%ymm1,%ymm5 + + vmovdqa %ymm10,0-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vinserti128 $1,%xmm8,%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -56(%r12),%xmm12 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -56(%r8),%xmm8 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpshufb %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vmovd -56(%r13),%xmm7 + vmovd -56(%r9),%xmm6 + vpinsrd $1,-56(%r14),%xmm12,%xmm12 + vpinsrd $1,-56(%r10),%xmm8,%xmm8 + vpinsrd $1,-56(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm12,%ymm12 + vpinsrd $1,-56(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpandn %ymm2,%ymm0,%ymm6 + vpand %ymm1,%ymm0,%ymm5 + + vmovdqa %ymm11,32-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vinserti128 $1,%xmm8,%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -52(%r12),%xmm13 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -52(%r8),%xmm8 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpshufb %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vmovd -52(%r13),%xmm7 + vmovd -52(%r9),%xmm6 + vpinsrd $1,-52(%r14),%xmm13,%xmm13 + vpinsrd $1,-52(%r10),%xmm8,%xmm8 + vpinsrd $1,-52(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm13,%ymm13 + vpinsrd $1,-52(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpandn %ymm1,%ymm4,%ymm6 + vpand %ymm0,%ymm4,%ymm5 + + vmovdqa %ymm12,64-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vinserti128 $1,%xmm8,%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -48(%r12),%xmm14 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -48(%r8),%xmm8 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpshufb %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vmovd -48(%r13),%xmm7 + vmovd -48(%r9),%xmm6 + vpinsrd $1,-48(%r14),%xmm14,%xmm14 + vpinsrd $1,-48(%r10),%xmm8,%xmm8 + vpinsrd $1,-48(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm14,%ymm14 + vpinsrd $1,-48(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpandn %ymm0,%ymm3,%ymm6 + vpand %ymm4,%ymm3,%ymm5 + + vmovdqa %ymm13,96-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vinserti128 $1,%xmm8,%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -44(%r12),%xmm10 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -44(%r8),%xmm8 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpshufb %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vmovd -44(%r13),%xmm7 + vmovd -44(%r9),%xmm6 + vpinsrd $1,-44(%r14),%xmm10,%xmm10 + vpinsrd $1,-44(%r10),%xmm8,%xmm8 + vpinsrd $1,-44(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm10,%ymm10 + vpinsrd $1,-44(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpandn %ymm4,%ymm2,%ymm6 + vpand %ymm3,%ymm2,%ymm5 + + vmovdqa %ymm14,128-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vinserti128 $1,%xmm8,%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -40(%r12),%xmm11 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -40(%r8),%xmm8 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpshufb %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vmovd -40(%r13),%xmm7 + vmovd -40(%r9),%xmm6 + vpinsrd $1,-40(%r14),%xmm11,%xmm11 + vpinsrd $1,-40(%r10),%xmm8,%xmm8 + vpinsrd $1,-40(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm11,%ymm11 + vpinsrd $1,-40(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpandn %ymm3,%ymm1,%ymm6 + vpand %ymm2,%ymm1,%ymm5 + + vmovdqa %ymm10,160-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vinserti128 $1,%xmm8,%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -36(%r12),%xmm12 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -36(%r8),%xmm8 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpshufb %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vmovd -36(%r13),%xmm7 + vmovd -36(%r9),%xmm6 + vpinsrd $1,-36(%r14),%xmm12,%xmm12 + vpinsrd $1,-36(%r10),%xmm8,%xmm8 + vpinsrd $1,-36(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm12,%ymm12 + vpinsrd $1,-36(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpandn %ymm2,%ymm0,%ymm6 + vpand %ymm1,%ymm0,%ymm5 + + vmovdqa %ymm11,192-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vinserti128 $1,%xmm8,%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -32(%r12),%xmm13 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -32(%r8),%xmm8 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpshufb %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vmovd -32(%r13),%xmm7 + vmovd -32(%r9),%xmm6 + vpinsrd $1,-32(%r14),%xmm13,%xmm13 + vpinsrd $1,-32(%r10),%xmm8,%xmm8 + vpinsrd $1,-32(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm13,%ymm13 + vpinsrd $1,-32(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpandn %ymm1,%ymm4,%ymm6 + vpand %ymm0,%ymm4,%ymm5 + + vmovdqa %ymm12,224-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vinserti128 $1,%xmm8,%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -28(%r12),%xmm14 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -28(%r8),%xmm8 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpshufb %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vmovd -28(%r13),%xmm7 + vmovd -28(%r9),%xmm6 + vpinsrd $1,-28(%r14),%xmm14,%xmm14 + vpinsrd $1,-28(%r10),%xmm8,%xmm8 + vpinsrd $1,-28(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm14,%ymm14 + vpinsrd $1,-28(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpandn %ymm0,%ymm3,%ymm6 + vpand %ymm4,%ymm3,%ymm5 + + vmovdqa %ymm13,256-256-128(%rbx) + vpaddd %ymm13,%ymm1,%ymm1 + vinserti128 $1,%xmm8,%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -24(%r12),%xmm10 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -24(%r8),%xmm8 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpshufb %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vmovd -24(%r13),%xmm7 + vmovd -24(%r9),%xmm6 + vpinsrd $1,-24(%r14),%xmm10,%xmm10 + vpinsrd $1,-24(%r10),%xmm8,%xmm8 + vpinsrd $1,-24(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm10,%ymm10 + vpinsrd $1,-24(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpandn %ymm4,%ymm2,%ymm6 + vpand %ymm3,%ymm2,%ymm5 + + vmovdqa %ymm14,288-256-128(%rbx) + vpaddd %ymm14,%ymm0,%ymm0 + vinserti128 $1,%xmm8,%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -20(%r12),%xmm11 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -20(%r8),%xmm8 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpshufb %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vmovd -20(%r13),%xmm7 + vmovd -20(%r9),%xmm6 + vpinsrd $1,-20(%r14),%xmm11,%xmm11 + vpinsrd $1,-20(%r10),%xmm8,%xmm8 + vpinsrd $1,-20(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm11,%ymm11 + vpinsrd $1,-20(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpandn %ymm3,%ymm1,%ymm6 + vpand %ymm2,%ymm1,%ymm5 + + vmovdqa %ymm10,320-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vinserti128 $1,%xmm8,%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -16(%r12),%xmm12 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -16(%r8),%xmm8 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpshufb %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vmovd -16(%r13),%xmm7 + vmovd -16(%r9),%xmm6 + vpinsrd $1,-16(%r14),%xmm12,%xmm12 + vpinsrd $1,-16(%r10),%xmm8,%xmm8 + vpinsrd $1,-16(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm12,%ymm12 + vpinsrd $1,-16(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpandn %ymm2,%ymm0,%ymm6 + vpand %ymm1,%ymm0,%ymm5 + + vmovdqa %ymm11,352-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vinserti128 $1,%xmm8,%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -12(%r12),%xmm13 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -12(%r8),%xmm8 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpshufb %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vmovd -12(%r13),%xmm7 + vmovd -12(%r9),%xmm6 + vpinsrd $1,-12(%r14),%xmm13,%xmm13 + vpinsrd $1,-12(%r10),%xmm8,%xmm8 + vpinsrd $1,-12(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm13,%ymm13 + vpinsrd $1,-12(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpandn %ymm1,%ymm4,%ymm6 + vpand %ymm0,%ymm4,%ymm5 + + vmovdqa %ymm12,384-256-128(%rbx) + vpaddd %ymm12,%ymm2,%ymm2 + vinserti128 $1,%xmm8,%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -8(%r12),%xmm14 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -8(%r8),%xmm8 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpshufb %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vmovd -8(%r13),%xmm7 + vmovd -8(%r9),%xmm6 + vpinsrd $1,-8(%r14),%xmm14,%xmm14 + vpinsrd $1,-8(%r10),%xmm8,%xmm8 + vpinsrd $1,-8(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm14,%ymm14 + vpinsrd $1,-8(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpandn %ymm0,%ymm3,%ymm6 + vpand %ymm4,%ymm3,%ymm5 + + vmovdqa %ymm13,416-256-128(%rbx) + vpaddd %ymm13,%ymm1,%ymm1 + vinserti128 $1,%xmm8,%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -4(%r12),%xmm10 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -4(%r8),%xmm8 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpshufb %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vmovdqa 0-128(%rax),%ymm11 + vmovd -4(%r13),%xmm7 + vmovd -4(%r9),%xmm6 + vpinsrd $1,-4(%r14),%xmm10,%xmm10 + vpinsrd $1,-4(%r10),%xmm8,%xmm8 + vpinsrd $1,-4(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm10,%ymm10 + vpinsrd $1,-4(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm0,%ymm0 + prefetcht0 63(%r12) + vpslld $5,%ymm1,%ymm7 + vpandn %ymm4,%ymm2,%ymm6 + vpand %ymm3,%ymm2,%ymm5 + + vmovdqa %ymm14,448-256-128(%rbx) + vpaddd %ymm14,%ymm0,%ymm0 + vinserti128 $1,%xmm8,%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + prefetcht0 63(%r13) + vpxor %ymm6,%ymm5,%ymm5 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + prefetcht0 63(%r14) + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + prefetcht0 63(%r15) + vpshufb %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vmovdqa 32-128(%rax),%ymm12 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 64-128(%rax),%ymm13 + + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpandn %ymm3,%ymm1,%ymm6 + prefetcht0 63(%r8) + vpand %ymm2,%ymm1,%ymm5 + + vmovdqa %ymm10,480-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 256-256-128(%rbx),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + prefetcht0 63(%r9) + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + prefetcht0 63(%r10) + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + prefetcht0 63(%r11) + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 96-128(%rax),%ymm14 + + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpandn %ymm2,%ymm0,%ymm6 + + vpand %ymm1,%ymm0,%ymm5 + + vmovdqa %ymm11,0-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 288-256-128(%rbx),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 128-128(%rax),%ymm10 + + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpandn %ymm1,%ymm4,%ymm6 + + vpand %ymm0,%ymm4,%ymm5 + + vmovdqa %ymm12,32-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 320-256-128(%rbx),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 160-128(%rax),%ymm11 + + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpandn %ymm0,%ymm3,%ymm6 + + vpand %ymm4,%ymm3,%ymm5 + + vmovdqa %ymm13,64-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 352-256-128(%rbx),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 192-128(%rax),%ymm12 + + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpandn %ymm4,%ymm2,%ymm6 + + vpand %ymm3,%ymm2,%ymm5 + + vmovdqa %ymm14,96-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 384-256-128(%rbx),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vmovdqa 0(%rbp),%ymm15 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 224-128(%rax),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,128-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 416-256-128(%rbx),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 256-256-128(%rbx),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,160-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 448-256-128(%rbx),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 288-256-128(%rbx),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vmovdqa %ymm12,192-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 480-256-128(%rbx),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 320-256-128(%rbx),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vmovdqa %ymm13,224-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 0-128(%rax),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 352-256-128(%rbx),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vmovdqa %ymm14,256-256-128(%rbx) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 32-128(%rax),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 384-256-128(%rbx),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,288-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 64-128(%rax),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 416-256-128(%rbx),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,320-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 96-128(%rax),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 448-256-128(%rbx),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vmovdqa %ymm12,352-256-128(%rbx) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 128-128(%rax),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 480-256-128(%rbx),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vmovdqa %ymm13,384-256-128(%rbx) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 160-128(%rax),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 0-128(%rax),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vmovdqa %ymm14,416-256-128(%rbx) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 192-128(%rax),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 32-128(%rax),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,448-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 224-128(%rax),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 64-128(%rax),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,480-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 256-256-128(%rbx),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 96-128(%rax),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vmovdqa %ymm12,0-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 288-256-128(%rbx),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 128-128(%rax),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vmovdqa %ymm13,32-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 320-256-128(%rbx),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 160-128(%rax),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vmovdqa %ymm14,64-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 352-256-128(%rbx),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 192-128(%rax),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,96-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 384-256-128(%rbx),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 224-128(%rax),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,128-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 416-256-128(%rbx),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 256-256-128(%rbx),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vmovdqa %ymm12,160-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 448-256-128(%rbx),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 288-256-128(%rbx),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vmovdqa %ymm13,192-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 480-256-128(%rbx),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 320-256-128(%rbx),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vmovdqa %ymm14,224-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 0-128(%rax),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vmovdqa 32(%rbp),%ymm15 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 352-256-128(%rbx),%ymm13 + + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpand %ymm2,%ymm3,%ymm6 + vpxor 32-128(%rax),%ymm11,%ymm11 + + vpaddd %ymm6,%ymm4,%ymm4 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm3,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vmovdqu %ymm10,256-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm11,%ymm9 + vpand %ymm1,%ymm5,%ymm5 + vpaddd %ymm11,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 384-256-128(%rbx),%ymm14 + + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpand %ymm1,%ymm2,%ymm6 + vpxor 64-128(%rax),%ymm12,%ymm12 + + vpaddd %ymm6,%ymm3,%ymm3 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm2,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vmovdqu %ymm11,288-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm12,%ymm9 + vpand %ymm0,%ymm5,%ymm5 + vpaddd %ymm12,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 416-256-128(%rbx),%ymm10 + + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpand %ymm0,%ymm1,%ymm6 + vpxor 96-128(%rax),%ymm13,%ymm13 + + vpaddd %ymm6,%ymm2,%ymm2 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm1,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vmovdqu %ymm12,320-256-128(%rbx) + vpaddd %ymm12,%ymm2,%ymm2 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm13,%ymm9 + vpand %ymm4,%ymm5,%ymm5 + vpaddd %ymm13,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 448-256-128(%rbx),%ymm11 + + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpand %ymm4,%ymm0,%ymm6 + vpxor 128-128(%rax),%ymm14,%ymm14 + + vpaddd %ymm6,%ymm1,%ymm1 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm0,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vmovdqu %ymm13,352-256-128(%rbx) + vpaddd %ymm13,%ymm1,%ymm1 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm14,%ymm9 + vpand %ymm3,%ymm5,%ymm5 + vpaddd %ymm14,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 480-256-128(%rbx),%ymm12 + + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpand %ymm3,%ymm4,%ymm6 + vpxor 160-128(%rax),%ymm10,%ymm10 + + vpaddd %ymm6,%ymm0,%ymm0 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm4,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vmovdqu %ymm14,384-256-128(%rbx) + vpaddd %ymm14,%ymm0,%ymm0 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm10,%ymm9 + vpand %ymm2,%ymm5,%ymm5 + vpaddd %ymm10,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 0-128(%rax),%ymm13 + + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpand %ymm2,%ymm3,%ymm6 + vpxor 192-128(%rax),%ymm11,%ymm11 + + vpaddd %ymm6,%ymm4,%ymm4 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm3,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vmovdqu %ymm10,416-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm11,%ymm9 + vpand %ymm1,%ymm5,%ymm5 + vpaddd %ymm11,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 32-128(%rax),%ymm14 + + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpand %ymm1,%ymm2,%ymm6 + vpxor 224-128(%rax),%ymm12,%ymm12 + + vpaddd %ymm6,%ymm3,%ymm3 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm2,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vmovdqu %ymm11,448-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm12,%ymm9 + vpand %ymm0,%ymm5,%ymm5 + vpaddd %ymm12,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 64-128(%rax),%ymm10 + + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpand %ymm0,%ymm1,%ymm6 + vpxor 256-256-128(%rbx),%ymm13,%ymm13 + + vpaddd %ymm6,%ymm2,%ymm2 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm1,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vmovdqu %ymm12,480-256-128(%rbx) + vpaddd %ymm12,%ymm2,%ymm2 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm13,%ymm9 + vpand %ymm4,%ymm5,%ymm5 + vpaddd %ymm13,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 96-128(%rax),%ymm11 + + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpand %ymm4,%ymm0,%ymm6 + vpxor 288-256-128(%rbx),%ymm14,%ymm14 + + vpaddd %ymm6,%ymm1,%ymm1 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm0,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vmovdqu %ymm13,0-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm14,%ymm9 + vpand %ymm3,%ymm5,%ymm5 + vpaddd %ymm14,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 128-128(%rax),%ymm12 + + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpand %ymm3,%ymm4,%ymm6 + vpxor 320-256-128(%rbx),%ymm10,%ymm10 + + vpaddd %ymm6,%ymm0,%ymm0 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm4,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vmovdqu %ymm14,32-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm10,%ymm9 + vpand %ymm2,%ymm5,%ymm5 + vpaddd %ymm10,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 160-128(%rax),%ymm13 + + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpand %ymm2,%ymm3,%ymm6 + vpxor 352-256-128(%rbx),%ymm11,%ymm11 + + vpaddd %ymm6,%ymm4,%ymm4 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm3,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vmovdqu %ymm10,64-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm11,%ymm9 + vpand %ymm1,%ymm5,%ymm5 + vpaddd %ymm11,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 192-128(%rax),%ymm14 + + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpand %ymm1,%ymm2,%ymm6 + vpxor 384-256-128(%rbx),%ymm12,%ymm12 + + vpaddd %ymm6,%ymm3,%ymm3 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm2,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vmovdqu %ymm11,96-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm12,%ymm9 + vpand %ymm0,%ymm5,%ymm5 + vpaddd %ymm12,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 224-128(%rax),%ymm10 + + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpand %ymm0,%ymm1,%ymm6 + vpxor 416-256-128(%rbx),%ymm13,%ymm13 + + vpaddd %ymm6,%ymm2,%ymm2 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm1,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vmovdqu %ymm12,128-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm13,%ymm9 + vpand %ymm4,%ymm5,%ymm5 + vpaddd %ymm13,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 256-256-128(%rbx),%ymm11 + + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpand %ymm4,%ymm0,%ymm6 + vpxor 448-256-128(%rbx),%ymm14,%ymm14 + + vpaddd %ymm6,%ymm1,%ymm1 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm0,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vmovdqu %ymm13,160-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm14,%ymm9 + vpand %ymm3,%ymm5,%ymm5 + vpaddd %ymm14,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 288-256-128(%rbx),%ymm12 + + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpand %ymm3,%ymm4,%ymm6 + vpxor 480-256-128(%rbx),%ymm10,%ymm10 + + vpaddd %ymm6,%ymm0,%ymm0 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm4,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vmovdqu %ymm14,192-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm10,%ymm9 + vpand %ymm2,%ymm5,%ymm5 + vpaddd %ymm10,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 320-256-128(%rbx),%ymm13 + + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpand %ymm2,%ymm3,%ymm6 + vpxor 0-128(%rax),%ymm11,%ymm11 + + vpaddd %ymm6,%ymm4,%ymm4 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm3,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vmovdqu %ymm10,224-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm11,%ymm9 + vpand %ymm1,%ymm5,%ymm5 + vpaddd %ymm11,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 352-256-128(%rbx),%ymm14 + + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpand %ymm1,%ymm2,%ymm6 + vpxor 32-128(%rax),%ymm12,%ymm12 + + vpaddd %ymm6,%ymm3,%ymm3 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm2,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vmovdqu %ymm11,256-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm12,%ymm9 + vpand %ymm0,%ymm5,%ymm5 + vpaddd %ymm12,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 384-256-128(%rbx),%ymm10 + + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpand %ymm0,%ymm1,%ymm6 + vpxor 64-128(%rax),%ymm13,%ymm13 + + vpaddd %ymm6,%ymm2,%ymm2 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm1,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vmovdqu %ymm12,288-256-128(%rbx) + vpaddd %ymm12,%ymm2,%ymm2 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm13,%ymm9 + vpand %ymm4,%ymm5,%ymm5 + vpaddd %ymm13,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 416-256-128(%rbx),%ymm11 + + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpand %ymm4,%ymm0,%ymm6 + vpxor 96-128(%rax),%ymm14,%ymm14 + + vpaddd %ymm6,%ymm1,%ymm1 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm0,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vmovdqu %ymm13,320-256-128(%rbx) + vpaddd %ymm13,%ymm1,%ymm1 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm14,%ymm9 + vpand %ymm3,%ymm5,%ymm5 + vpaddd %ymm14,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 448-256-128(%rbx),%ymm12 + + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpand %ymm3,%ymm4,%ymm6 + vpxor 128-128(%rax),%ymm10,%ymm10 + + vpaddd %ymm6,%ymm0,%ymm0 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm4,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vmovdqu %ymm14,352-256-128(%rbx) + vpaddd %ymm14,%ymm0,%ymm0 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm10,%ymm9 + vpand %ymm2,%ymm5,%ymm5 + vpaddd %ymm10,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vmovdqa 64(%rbp),%ymm15 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 480-256-128(%rbx),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,384-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 160-128(%rax),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 0-128(%rax),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,416-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 192-128(%rax),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 32-128(%rax),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vmovdqa %ymm12,448-256-128(%rbx) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 224-128(%rax),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 64-128(%rax),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vmovdqa %ymm13,480-256-128(%rbx) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 256-256-128(%rbx),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 96-128(%rax),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vmovdqa %ymm14,0-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 288-256-128(%rbx),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 128-128(%rax),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,32-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 320-256-128(%rbx),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 160-128(%rax),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,64-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 352-256-128(%rbx),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 192-128(%rax),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vmovdqa %ymm12,96-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 384-256-128(%rbx),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 224-128(%rax),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vmovdqa %ymm13,128-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 416-256-128(%rbx),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 256-256-128(%rbx),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vmovdqa %ymm14,160-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 448-256-128(%rbx),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 288-256-128(%rbx),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,192-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 480-256-128(%rbx),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 320-256-128(%rbx),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,224-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 0-128(%rax),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 352-256-128(%rbx),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 32-128(%rax),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 384-256-128(%rbx),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 64-128(%rax),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 416-256-128(%rbx),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 96-128(%rax),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 448-256-128(%rbx),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 128-128(%rax),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 480-256-128(%rbx),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 160-128(%rax),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 0-128(%rax),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 192-128(%rax),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 32-128(%rax),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 224-128(%rax),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + + vpsrld $27,%ymm1,%ymm8 + vpaddd %ymm14,%ymm0,%ymm0 + vpxor %ymm3,%ymm5,%ymm5 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm6,%ymm2,%ymm2 + movl $1,%ecx + leaq 512(%rsp),%rbx + cmpl 0(%rbx),%ecx + cmovgeq %rbp,%r12 + cmpl 4(%rbx),%ecx + cmovgeq %rbp,%r13 + cmpl 8(%rbx),%ecx + cmovgeq %rbp,%r14 + cmpl 12(%rbx),%ecx + cmovgeq %rbp,%r15 + cmpl 16(%rbx),%ecx + cmovgeq %rbp,%r8 + cmpl 20(%rbx),%ecx + cmovgeq %rbp,%r9 + cmpl 24(%rbx),%ecx + cmovgeq %rbp,%r10 + cmpl 28(%rbx),%ecx + cmovgeq %rbp,%r11 + vmovdqu (%rbx),%ymm5 + vpxor %ymm7,%ymm7,%ymm7 + vmovdqa %ymm5,%ymm6 + vpcmpgtd %ymm7,%ymm6,%ymm6 + vpaddd %ymm6,%ymm5,%ymm5 + + vpand %ymm6,%ymm0,%ymm0 + vpand %ymm6,%ymm1,%ymm1 + vpaddd 0(%rdi),%ymm0,%ymm0 + vpand %ymm6,%ymm2,%ymm2 + vpaddd 32(%rdi),%ymm1,%ymm1 + vpand %ymm6,%ymm3,%ymm3 + vpaddd 64(%rdi),%ymm2,%ymm2 + vpand %ymm6,%ymm4,%ymm4 + vpaddd 96(%rdi),%ymm3,%ymm3 + vpaddd 128(%rdi),%ymm4,%ymm4 + vmovdqu %ymm0,0(%rdi) + vmovdqu %ymm1,32(%rdi) + vmovdqu %ymm2,64(%rdi) + vmovdqu %ymm3,96(%rdi) + vmovdqu %ymm4,128(%rdi) + + vmovdqu %ymm5,(%rbx) + leaq 256+128(%rsp),%rbx + vmovdqu 96(%rbp),%ymm9 + decl %edx + jnz .Loop_avx2 + + + + + + + +.Ldone_avx2: + movq 544(%rsp),%rax +.cfi_def_cfa %rax,8 + vzeroupper + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_avx2: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha1_multi_block_avx2,.-sha1_multi_block_avx2 + +.align 256 +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 +K_XX_XX: +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 +.byte 83,72,65,49,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha1-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha1-x86_64.s new file mode 100644 index 0000000..d4efc72 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha1-x86_64.s @@ -0,0 +1,5450 @@ +.text + + +.globl sha1_block_data_order +.type sha1_block_data_order,@function +.align 16 +sha1_block_data_order: +.cfi_startproc + movl OPENSSL_ia32cap_P+0(%rip),%r9d + movl OPENSSL_ia32cap_P+4(%rip),%r8d + movl OPENSSL_ia32cap_P+8(%rip),%r10d + testl $512,%r8d + jz .Lialu + testl $536870912,%r10d + jnz _shaext_shortcut + andl $296,%r10d + cmpl $296,%r10d + je _avx2_shortcut + andl $268435456,%r8d + andl $1073741824,%r9d + orl %r9d,%r8d + cmpl $1342177280,%r8d + je _avx_shortcut + jmp _ssse3_shortcut + +.align 16 +.Lialu: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + movq %rdi,%r8 + subq $72,%rsp + movq %rsi,%r9 + andq $-64,%rsp + movq %rdx,%r10 + movq %rax,64(%rsp) +.cfi_escape 0x0f,0x06,0x77,0xc0,0x00,0x06,0x23,0x08 +.Lprologue: + + movl 0(%r8),%esi + movl 4(%r8),%edi + movl 8(%r8),%r11d + movl 12(%r8),%r12d + movl 16(%r8),%r13d + jmp .Lloop + +.align 16 +.Lloop: + movl 0(%r9),%edx + bswapl %edx + movl 4(%r9),%ebp + movl %r12d,%eax + movl %edx,0(%rsp) + movl %esi,%ecx + bswapl %ebp + xorl %r11d,%eax + roll $5,%ecx + andl %edi,%eax + leal 1518500249(%rdx,%r13,1),%r13d + addl %ecx,%r13d + xorl %r12d,%eax + roll $30,%edi + addl %eax,%r13d + movl 8(%r9),%r14d + movl %r11d,%eax + movl %ebp,4(%rsp) + movl %r13d,%ecx + bswapl %r14d + xorl %edi,%eax + roll $5,%ecx + andl %esi,%eax + leal 1518500249(%rbp,%r12,1),%r12d + addl %ecx,%r12d + xorl %r11d,%eax + roll $30,%esi + addl %eax,%r12d + movl 12(%r9),%edx + movl %edi,%eax + movl %r14d,8(%rsp) + movl %r12d,%ecx + bswapl %edx + xorl %esi,%eax + roll $5,%ecx + andl %r13d,%eax + leal 1518500249(%r14,%r11,1),%r11d + addl %ecx,%r11d + xorl %edi,%eax + roll $30,%r13d + addl %eax,%r11d + movl 16(%r9),%ebp + movl %esi,%eax + movl %edx,12(%rsp) + movl %r11d,%ecx + bswapl %ebp + xorl %r13d,%eax + roll $5,%ecx + andl %r12d,%eax + leal 1518500249(%rdx,%rdi,1),%edi + addl %ecx,%edi + xorl %esi,%eax + roll $30,%r12d + addl %eax,%edi + movl 20(%r9),%r14d + movl %r13d,%eax + movl %ebp,16(%rsp) + movl %edi,%ecx + bswapl %r14d + xorl %r12d,%eax + roll $5,%ecx + andl %r11d,%eax + leal 1518500249(%rbp,%rsi,1),%esi + addl %ecx,%esi + xorl %r13d,%eax + roll $30,%r11d + addl %eax,%esi + movl 24(%r9),%edx + movl %r12d,%eax + movl %r14d,20(%rsp) + movl %esi,%ecx + bswapl %edx + xorl %r11d,%eax + roll $5,%ecx + andl %edi,%eax + leal 1518500249(%r14,%r13,1),%r13d + addl %ecx,%r13d + xorl %r12d,%eax + roll $30,%edi + addl %eax,%r13d + movl 28(%r9),%ebp + movl %r11d,%eax + movl %edx,24(%rsp) + movl %r13d,%ecx + bswapl %ebp + xorl %edi,%eax + roll $5,%ecx + andl %esi,%eax + leal 1518500249(%rdx,%r12,1),%r12d + addl %ecx,%r12d + xorl %r11d,%eax + roll $30,%esi + addl %eax,%r12d + movl 32(%r9),%r14d + movl %edi,%eax + movl %ebp,28(%rsp) + movl %r12d,%ecx + bswapl %r14d + xorl %esi,%eax + roll $5,%ecx + andl %r13d,%eax + leal 1518500249(%rbp,%r11,1),%r11d + addl %ecx,%r11d + xorl %edi,%eax + roll $30,%r13d + addl %eax,%r11d + movl 36(%r9),%edx + movl %esi,%eax + movl %r14d,32(%rsp) + movl %r11d,%ecx + bswapl %edx + xorl %r13d,%eax + roll $5,%ecx + andl %r12d,%eax + leal 1518500249(%r14,%rdi,1),%edi + addl %ecx,%edi + xorl %esi,%eax + roll $30,%r12d + addl %eax,%edi + movl 40(%r9),%ebp + movl %r13d,%eax + movl %edx,36(%rsp) + movl %edi,%ecx + bswapl %ebp + xorl %r12d,%eax + roll $5,%ecx + andl %r11d,%eax + leal 1518500249(%rdx,%rsi,1),%esi + addl %ecx,%esi + xorl %r13d,%eax + roll $30,%r11d + addl %eax,%esi + movl 44(%r9),%r14d + movl %r12d,%eax + movl %ebp,40(%rsp) + movl %esi,%ecx + bswapl %r14d + xorl %r11d,%eax + roll $5,%ecx + andl %edi,%eax + leal 1518500249(%rbp,%r13,1),%r13d + addl %ecx,%r13d + xorl %r12d,%eax + roll $30,%edi + addl %eax,%r13d + movl 48(%r9),%edx + movl %r11d,%eax + movl %r14d,44(%rsp) + movl %r13d,%ecx + bswapl %edx + xorl %edi,%eax + roll $5,%ecx + andl %esi,%eax + leal 1518500249(%r14,%r12,1),%r12d + addl %ecx,%r12d + xorl %r11d,%eax + roll $30,%esi + addl %eax,%r12d + movl 52(%r9),%ebp + movl %edi,%eax + movl %edx,48(%rsp) + movl %r12d,%ecx + bswapl %ebp + xorl %esi,%eax + roll $5,%ecx + andl %r13d,%eax + leal 1518500249(%rdx,%r11,1),%r11d + addl %ecx,%r11d + xorl %edi,%eax + roll $30,%r13d + addl %eax,%r11d + movl 56(%r9),%r14d + movl %esi,%eax + movl %ebp,52(%rsp) + movl %r11d,%ecx + bswapl %r14d + xorl %r13d,%eax + roll $5,%ecx + andl %r12d,%eax + leal 1518500249(%rbp,%rdi,1),%edi + addl %ecx,%edi + xorl %esi,%eax + roll $30,%r12d + addl %eax,%edi + movl 60(%r9),%edx + movl %r13d,%eax + movl %r14d,56(%rsp) + movl %edi,%ecx + bswapl %edx + xorl %r12d,%eax + roll $5,%ecx + andl %r11d,%eax + leal 1518500249(%r14,%rsi,1),%esi + addl %ecx,%esi + xorl %r13d,%eax + roll $30,%r11d + addl %eax,%esi + xorl 0(%rsp),%ebp + movl %r12d,%eax + movl %edx,60(%rsp) + movl %esi,%ecx + xorl 8(%rsp),%ebp + xorl %r11d,%eax + roll $5,%ecx + xorl 32(%rsp),%ebp + andl %edi,%eax + leal 1518500249(%rdx,%r13,1),%r13d + roll $30,%edi + xorl %r12d,%eax + addl %ecx,%r13d + roll $1,%ebp + addl %eax,%r13d + xorl 4(%rsp),%r14d + movl %r11d,%eax + movl %ebp,0(%rsp) + movl %r13d,%ecx + xorl 12(%rsp),%r14d + xorl %edi,%eax + roll $5,%ecx + xorl 36(%rsp),%r14d + andl %esi,%eax + leal 1518500249(%rbp,%r12,1),%r12d + roll $30,%esi + xorl %r11d,%eax + addl %ecx,%r12d + roll $1,%r14d + addl %eax,%r12d + xorl 8(%rsp),%edx + movl %edi,%eax + movl %r14d,4(%rsp) + movl %r12d,%ecx + xorl 16(%rsp),%edx + xorl %esi,%eax + roll $5,%ecx + xorl 40(%rsp),%edx + andl %r13d,%eax + leal 1518500249(%r14,%r11,1),%r11d + roll $30,%r13d + xorl %edi,%eax + addl %ecx,%r11d + roll $1,%edx + addl %eax,%r11d + xorl 12(%rsp),%ebp + movl %esi,%eax + movl %edx,8(%rsp) + movl %r11d,%ecx + xorl 20(%rsp),%ebp + xorl %r13d,%eax + roll $5,%ecx + xorl 44(%rsp),%ebp + andl %r12d,%eax + leal 1518500249(%rdx,%rdi,1),%edi + roll $30,%r12d + xorl %esi,%eax + addl %ecx,%edi + roll $1,%ebp + addl %eax,%edi + xorl 16(%rsp),%r14d + movl %r13d,%eax + movl %ebp,12(%rsp) + movl %edi,%ecx + xorl 24(%rsp),%r14d + xorl %r12d,%eax + roll $5,%ecx + xorl 48(%rsp),%r14d + andl %r11d,%eax + leal 1518500249(%rbp,%rsi,1),%esi + roll $30,%r11d + xorl %r13d,%eax + addl %ecx,%esi + roll $1,%r14d + addl %eax,%esi + xorl 20(%rsp),%edx + movl %edi,%eax + movl %r14d,16(%rsp) + movl %esi,%ecx + xorl 28(%rsp),%edx + xorl %r12d,%eax + roll $5,%ecx + xorl 52(%rsp),%edx + leal 1859775393(%r14,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%edx + xorl 24(%rsp),%ebp + movl %esi,%eax + movl %edx,20(%rsp) + movl %r13d,%ecx + xorl 32(%rsp),%ebp + xorl %r11d,%eax + roll $5,%ecx + xorl 56(%rsp),%ebp + leal 1859775393(%rdx,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%ebp + xorl 28(%rsp),%r14d + movl %r13d,%eax + movl %ebp,24(%rsp) + movl %r12d,%ecx + xorl 36(%rsp),%r14d + xorl %edi,%eax + roll $5,%ecx + xorl 60(%rsp),%r14d + leal 1859775393(%rbp,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%r14d + xorl 32(%rsp),%edx + movl %r12d,%eax + movl %r14d,28(%rsp) + movl %r11d,%ecx + xorl 40(%rsp),%edx + xorl %esi,%eax + roll $5,%ecx + xorl 0(%rsp),%edx + leal 1859775393(%r14,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%edx + xorl 36(%rsp),%ebp + movl %r11d,%eax + movl %edx,32(%rsp) + movl %edi,%ecx + xorl 44(%rsp),%ebp + xorl %r13d,%eax + roll $5,%ecx + xorl 4(%rsp),%ebp + leal 1859775393(%rdx,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%ebp + xorl 40(%rsp),%r14d + movl %edi,%eax + movl %ebp,36(%rsp) + movl %esi,%ecx + xorl 48(%rsp),%r14d + xorl %r12d,%eax + roll $5,%ecx + xorl 8(%rsp),%r14d + leal 1859775393(%rbp,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%r14d + xorl 44(%rsp),%edx + movl %esi,%eax + movl %r14d,40(%rsp) + movl %r13d,%ecx + xorl 52(%rsp),%edx + xorl %r11d,%eax + roll $5,%ecx + xorl 12(%rsp),%edx + leal 1859775393(%r14,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%edx + xorl 48(%rsp),%ebp + movl %r13d,%eax + movl %edx,44(%rsp) + movl %r12d,%ecx + xorl 56(%rsp),%ebp + xorl %edi,%eax + roll $5,%ecx + xorl 16(%rsp),%ebp + leal 1859775393(%rdx,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%ebp + xorl 52(%rsp),%r14d + movl %r12d,%eax + movl %ebp,48(%rsp) + movl %r11d,%ecx + xorl 60(%rsp),%r14d + xorl %esi,%eax + roll $5,%ecx + xorl 20(%rsp),%r14d + leal 1859775393(%rbp,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%r14d + xorl 56(%rsp),%edx + movl %r11d,%eax + movl %r14d,52(%rsp) + movl %edi,%ecx + xorl 0(%rsp),%edx + xorl %r13d,%eax + roll $5,%ecx + xorl 24(%rsp),%edx + leal 1859775393(%r14,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%edx + xorl 60(%rsp),%ebp + movl %edi,%eax + movl %edx,56(%rsp) + movl %esi,%ecx + xorl 4(%rsp),%ebp + xorl %r12d,%eax + roll $5,%ecx + xorl 28(%rsp),%ebp + leal 1859775393(%rdx,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%ebp + xorl 0(%rsp),%r14d + movl %esi,%eax + movl %ebp,60(%rsp) + movl %r13d,%ecx + xorl 8(%rsp),%r14d + xorl %r11d,%eax + roll $5,%ecx + xorl 32(%rsp),%r14d + leal 1859775393(%rbp,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%r14d + xorl 4(%rsp),%edx + movl %r13d,%eax + movl %r14d,0(%rsp) + movl %r12d,%ecx + xorl 12(%rsp),%edx + xorl %edi,%eax + roll $5,%ecx + xorl 36(%rsp),%edx + leal 1859775393(%r14,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%edx + xorl 8(%rsp),%ebp + movl %r12d,%eax + movl %edx,4(%rsp) + movl %r11d,%ecx + xorl 16(%rsp),%ebp + xorl %esi,%eax + roll $5,%ecx + xorl 40(%rsp),%ebp + leal 1859775393(%rdx,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%ebp + xorl 12(%rsp),%r14d + movl %r11d,%eax + movl %ebp,8(%rsp) + movl %edi,%ecx + xorl 20(%rsp),%r14d + xorl %r13d,%eax + roll $5,%ecx + xorl 44(%rsp),%r14d + leal 1859775393(%rbp,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%r14d + xorl 16(%rsp),%edx + movl %edi,%eax + movl %r14d,12(%rsp) + movl %esi,%ecx + xorl 24(%rsp),%edx + xorl %r12d,%eax + roll $5,%ecx + xorl 48(%rsp),%edx + leal 1859775393(%r14,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%edx + xorl 20(%rsp),%ebp + movl %esi,%eax + movl %edx,16(%rsp) + movl %r13d,%ecx + xorl 28(%rsp),%ebp + xorl %r11d,%eax + roll $5,%ecx + xorl 52(%rsp),%ebp + leal 1859775393(%rdx,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%ebp + xorl 24(%rsp),%r14d + movl %r13d,%eax + movl %ebp,20(%rsp) + movl %r12d,%ecx + xorl 32(%rsp),%r14d + xorl %edi,%eax + roll $5,%ecx + xorl 56(%rsp),%r14d + leal 1859775393(%rbp,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%r14d + xorl 28(%rsp),%edx + movl %r12d,%eax + movl %r14d,24(%rsp) + movl %r11d,%ecx + xorl 36(%rsp),%edx + xorl %esi,%eax + roll $5,%ecx + xorl 60(%rsp),%edx + leal 1859775393(%r14,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%edx + xorl 32(%rsp),%ebp + movl %r11d,%eax + movl %edx,28(%rsp) + movl %edi,%ecx + xorl 40(%rsp),%ebp + xorl %r13d,%eax + roll $5,%ecx + xorl 0(%rsp),%ebp + leal 1859775393(%rdx,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%ebp + xorl 36(%rsp),%r14d + movl %r12d,%eax + movl %ebp,32(%rsp) + movl %r12d,%ebx + xorl 44(%rsp),%r14d + andl %r11d,%eax + movl %esi,%ecx + xorl 4(%rsp),%r14d + leal -1894007588(%rbp,%r13,1),%r13d + xorl %r11d,%ebx + roll $5,%ecx + addl %eax,%r13d + roll $1,%r14d + andl %edi,%ebx + addl %ecx,%r13d + roll $30,%edi + addl %ebx,%r13d + xorl 40(%rsp),%edx + movl %r11d,%eax + movl %r14d,36(%rsp) + movl %r11d,%ebx + xorl 48(%rsp),%edx + andl %edi,%eax + movl %r13d,%ecx + xorl 8(%rsp),%edx + leal -1894007588(%r14,%r12,1),%r12d + xorl %edi,%ebx + roll $5,%ecx + addl %eax,%r12d + roll $1,%edx + andl %esi,%ebx + addl %ecx,%r12d + roll $30,%esi + addl %ebx,%r12d + xorl 44(%rsp),%ebp + movl %edi,%eax + movl %edx,40(%rsp) + movl %edi,%ebx + xorl 52(%rsp),%ebp + andl %esi,%eax + movl %r12d,%ecx + xorl 12(%rsp),%ebp + leal -1894007588(%rdx,%r11,1),%r11d + xorl %esi,%ebx + roll $5,%ecx + addl %eax,%r11d + roll $1,%ebp + andl %r13d,%ebx + addl %ecx,%r11d + roll $30,%r13d + addl %ebx,%r11d + xorl 48(%rsp),%r14d + movl %esi,%eax + movl %ebp,44(%rsp) + movl %esi,%ebx + xorl 56(%rsp),%r14d + andl %r13d,%eax + movl %r11d,%ecx + xorl 16(%rsp),%r14d + leal -1894007588(%rbp,%rdi,1),%edi + xorl %r13d,%ebx + roll $5,%ecx + addl %eax,%edi + roll $1,%r14d + andl %r12d,%ebx + addl %ecx,%edi + roll $30,%r12d + addl %ebx,%edi + xorl 52(%rsp),%edx + movl %r13d,%eax + movl %r14d,48(%rsp) + movl %r13d,%ebx + xorl 60(%rsp),%edx + andl %r12d,%eax + movl %edi,%ecx + xorl 20(%rsp),%edx + leal -1894007588(%r14,%rsi,1),%esi + xorl %r12d,%ebx + roll $5,%ecx + addl %eax,%esi + roll $1,%edx + andl %r11d,%ebx + addl %ecx,%esi + roll $30,%r11d + addl %ebx,%esi + xorl 56(%rsp),%ebp + movl %r12d,%eax + movl %edx,52(%rsp) + movl %r12d,%ebx + xorl 0(%rsp),%ebp + andl %r11d,%eax + movl %esi,%ecx + xorl 24(%rsp),%ebp + leal -1894007588(%rdx,%r13,1),%r13d + xorl %r11d,%ebx + roll $5,%ecx + addl %eax,%r13d + roll $1,%ebp + andl %edi,%ebx + addl %ecx,%r13d + roll $30,%edi + addl %ebx,%r13d + xorl 60(%rsp),%r14d + movl %r11d,%eax + movl %ebp,56(%rsp) + movl %r11d,%ebx + xorl 4(%rsp),%r14d + andl %edi,%eax + movl %r13d,%ecx + xorl 28(%rsp),%r14d + leal -1894007588(%rbp,%r12,1),%r12d + xorl %edi,%ebx + roll $5,%ecx + addl %eax,%r12d + roll $1,%r14d + andl %esi,%ebx + addl %ecx,%r12d + roll $30,%esi + addl %ebx,%r12d + xorl 0(%rsp),%edx + movl %edi,%eax + movl %r14d,60(%rsp) + movl %edi,%ebx + xorl 8(%rsp),%edx + andl %esi,%eax + movl %r12d,%ecx + xorl 32(%rsp),%edx + leal -1894007588(%r14,%r11,1),%r11d + xorl %esi,%ebx + roll $5,%ecx + addl %eax,%r11d + roll $1,%edx + andl %r13d,%ebx + addl %ecx,%r11d + roll $30,%r13d + addl %ebx,%r11d + xorl 4(%rsp),%ebp + movl %esi,%eax + movl %edx,0(%rsp) + movl %esi,%ebx + xorl 12(%rsp),%ebp + andl %r13d,%eax + movl %r11d,%ecx + xorl 36(%rsp),%ebp + leal -1894007588(%rdx,%rdi,1),%edi + xorl %r13d,%ebx + roll $5,%ecx + addl %eax,%edi + roll $1,%ebp + andl %r12d,%ebx + addl %ecx,%edi + roll $30,%r12d + addl %ebx,%edi + xorl 8(%rsp),%r14d + movl %r13d,%eax + movl %ebp,4(%rsp) + movl %r13d,%ebx + xorl 16(%rsp),%r14d + andl %r12d,%eax + movl %edi,%ecx + xorl 40(%rsp),%r14d + leal -1894007588(%rbp,%rsi,1),%esi + xorl %r12d,%ebx + roll $5,%ecx + addl %eax,%esi + roll $1,%r14d + andl %r11d,%ebx + addl %ecx,%esi + roll $30,%r11d + addl %ebx,%esi + xorl 12(%rsp),%edx + movl %r12d,%eax + movl %r14d,8(%rsp) + movl %r12d,%ebx + xorl 20(%rsp),%edx + andl %r11d,%eax + movl %esi,%ecx + xorl 44(%rsp),%edx + leal -1894007588(%r14,%r13,1),%r13d + xorl %r11d,%ebx + roll $5,%ecx + addl %eax,%r13d + roll $1,%edx + andl %edi,%ebx + addl %ecx,%r13d + roll $30,%edi + addl %ebx,%r13d + xorl 16(%rsp),%ebp + movl %r11d,%eax + movl %edx,12(%rsp) + movl %r11d,%ebx + xorl 24(%rsp),%ebp + andl %edi,%eax + movl %r13d,%ecx + xorl 48(%rsp),%ebp + leal -1894007588(%rdx,%r12,1),%r12d + xorl %edi,%ebx + roll $5,%ecx + addl %eax,%r12d + roll $1,%ebp + andl %esi,%ebx + addl %ecx,%r12d + roll $30,%esi + addl %ebx,%r12d + xorl 20(%rsp),%r14d + movl %edi,%eax + movl %ebp,16(%rsp) + movl %edi,%ebx + xorl 28(%rsp),%r14d + andl %esi,%eax + movl %r12d,%ecx + xorl 52(%rsp),%r14d + leal -1894007588(%rbp,%r11,1),%r11d + xorl %esi,%ebx + roll $5,%ecx + addl %eax,%r11d + roll $1,%r14d + andl %r13d,%ebx + addl %ecx,%r11d + roll $30,%r13d + addl %ebx,%r11d + xorl 24(%rsp),%edx + movl %esi,%eax + movl %r14d,20(%rsp) + movl %esi,%ebx + xorl 32(%rsp),%edx + andl %r13d,%eax + movl %r11d,%ecx + xorl 56(%rsp),%edx + leal -1894007588(%r14,%rdi,1),%edi + xorl %r13d,%ebx + roll $5,%ecx + addl %eax,%edi + roll $1,%edx + andl %r12d,%ebx + addl %ecx,%edi + roll $30,%r12d + addl %ebx,%edi + xorl 28(%rsp),%ebp + movl %r13d,%eax + movl %edx,24(%rsp) + movl %r13d,%ebx + xorl 36(%rsp),%ebp + andl %r12d,%eax + movl %edi,%ecx + xorl 60(%rsp),%ebp + leal -1894007588(%rdx,%rsi,1),%esi + xorl %r12d,%ebx + roll $5,%ecx + addl %eax,%esi + roll $1,%ebp + andl %r11d,%ebx + addl %ecx,%esi + roll $30,%r11d + addl %ebx,%esi + xorl 32(%rsp),%r14d + movl %r12d,%eax + movl %ebp,28(%rsp) + movl %r12d,%ebx + xorl 40(%rsp),%r14d + andl %r11d,%eax + movl %esi,%ecx + xorl 0(%rsp),%r14d + leal -1894007588(%rbp,%r13,1),%r13d + xorl %r11d,%ebx + roll $5,%ecx + addl %eax,%r13d + roll $1,%r14d + andl %edi,%ebx + addl %ecx,%r13d + roll $30,%edi + addl %ebx,%r13d + xorl 36(%rsp),%edx + movl %r11d,%eax + movl %r14d,32(%rsp) + movl %r11d,%ebx + xorl 44(%rsp),%edx + andl %edi,%eax + movl %r13d,%ecx + xorl 4(%rsp),%edx + leal -1894007588(%r14,%r12,1),%r12d + xorl %edi,%ebx + roll $5,%ecx + addl %eax,%r12d + roll $1,%edx + andl %esi,%ebx + addl %ecx,%r12d + roll $30,%esi + addl %ebx,%r12d + xorl 40(%rsp),%ebp + movl %edi,%eax + movl %edx,36(%rsp) + movl %edi,%ebx + xorl 48(%rsp),%ebp + andl %esi,%eax + movl %r12d,%ecx + xorl 8(%rsp),%ebp + leal -1894007588(%rdx,%r11,1),%r11d + xorl %esi,%ebx + roll $5,%ecx + addl %eax,%r11d + roll $1,%ebp + andl %r13d,%ebx + addl %ecx,%r11d + roll $30,%r13d + addl %ebx,%r11d + xorl 44(%rsp),%r14d + movl %esi,%eax + movl %ebp,40(%rsp) + movl %esi,%ebx + xorl 52(%rsp),%r14d + andl %r13d,%eax + movl %r11d,%ecx + xorl 12(%rsp),%r14d + leal -1894007588(%rbp,%rdi,1),%edi + xorl %r13d,%ebx + roll $5,%ecx + addl %eax,%edi + roll $1,%r14d + andl %r12d,%ebx + addl %ecx,%edi + roll $30,%r12d + addl %ebx,%edi + xorl 48(%rsp),%edx + movl %r13d,%eax + movl %r14d,44(%rsp) + movl %r13d,%ebx + xorl 56(%rsp),%edx + andl %r12d,%eax + movl %edi,%ecx + xorl 16(%rsp),%edx + leal -1894007588(%r14,%rsi,1),%esi + xorl %r12d,%ebx + roll $5,%ecx + addl %eax,%esi + roll $1,%edx + andl %r11d,%ebx + addl %ecx,%esi + roll $30,%r11d + addl %ebx,%esi + xorl 52(%rsp),%ebp + movl %edi,%eax + movl %edx,48(%rsp) + movl %esi,%ecx + xorl 60(%rsp),%ebp + xorl %r12d,%eax + roll $5,%ecx + xorl 20(%rsp),%ebp + leal -899497514(%rdx,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%ebp + xorl 56(%rsp),%r14d + movl %esi,%eax + movl %ebp,52(%rsp) + movl %r13d,%ecx + xorl 0(%rsp),%r14d + xorl %r11d,%eax + roll $5,%ecx + xorl 24(%rsp),%r14d + leal -899497514(%rbp,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%r14d + xorl 60(%rsp),%edx + movl %r13d,%eax + movl %r14d,56(%rsp) + movl %r12d,%ecx + xorl 4(%rsp),%edx + xorl %edi,%eax + roll $5,%ecx + xorl 28(%rsp),%edx + leal -899497514(%r14,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%edx + xorl 0(%rsp),%ebp + movl %r12d,%eax + movl %edx,60(%rsp) + movl %r11d,%ecx + xorl 8(%rsp),%ebp + xorl %esi,%eax + roll $5,%ecx + xorl 32(%rsp),%ebp + leal -899497514(%rdx,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%ebp + xorl 4(%rsp),%r14d + movl %r11d,%eax + movl %ebp,0(%rsp) + movl %edi,%ecx + xorl 12(%rsp),%r14d + xorl %r13d,%eax + roll $5,%ecx + xorl 36(%rsp),%r14d + leal -899497514(%rbp,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%r14d + xorl 8(%rsp),%edx + movl %edi,%eax + movl %r14d,4(%rsp) + movl %esi,%ecx + xorl 16(%rsp),%edx + xorl %r12d,%eax + roll $5,%ecx + xorl 40(%rsp),%edx + leal -899497514(%r14,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%edx + xorl 12(%rsp),%ebp + movl %esi,%eax + movl %edx,8(%rsp) + movl %r13d,%ecx + xorl 20(%rsp),%ebp + xorl %r11d,%eax + roll $5,%ecx + xorl 44(%rsp),%ebp + leal -899497514(%rdx,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%ebp + xorl 16(%rsp),%r14d + movl %r13d,%eax + movl %ebp,12(%rsp) + movl %r12d,%ecx + xorl 24(%rsp),%r14d + xorl %edi,%eax + roll $5,%ecx + xorl 48(%rsp),%r14d + leal -899497514(%rbp,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%r14d + xorl 20(%rsp),%edx + movl %r12d,%eax + movl %r14d,16(%rsp) + movl %r11d,%ecx + xorl 28(%rsp),%edx + xorl %esi,%eax + roll $5,%ecx + xorl 52(%rsp),%edx + leal -899497514(%r14,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%edx + xorl 24(%rsp),%ebp + movl %r11d,%eax + movl %edx,20(%rsp) + movl %edi,%ecx + xorl 32(%rsp),%ebp + xorl %r13d,%eax + roll $5,%ecx + xorl 56(%rsp),%ebp + leal -899497514(%rdx,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%ebp + xorl 28(%rsp),%r14d + movl %edi,%eax + movl %ebp,24(%rsp) + movl %esi,%ecx + xorl 36(%rsp),%r14d + xorl %r12d,%eax + roll $5,%ecx + xorl 60(%rsp),%r14d + leal -899497514(%rbp,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%r14d + xorl 32(%rsp),%edx + movl %esi,%eax + movl %r14d,28(%rsp) + movl %r13d,%ecx + xorl 40(%rsp),%edx + xorl %r11d,%eax + roll $5,%ecx + xorl 0(%rsp),%edx + leal -899497514(%r14,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%edx + xorl 36(%rsp),%ebp + movl %r13d,%eax + + movl %r12d,%ecx + xorl 44(%rsp),%ebp + xorl %edi,%eax + roll $5,%ecx + xorl 4(%rsp),%ebp + leal -899497514(%rdx,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%ebp + xorl 40(%rsp),%r14d + movl %r12d,%eax + + movl %r11d,%ecx + xorl 48(%rsp),%r14d + xorl %esi,%eax + roll $5,%ecx + xorl 8(%rsp),%r14d + leal -899497514(%rbp,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%r14d + xorl 44(%rsp),%edx + movl %r11d,%eax + + movl %edi,%ecx + xorl 52(%rsp),%edx + xorl %r13d,%eax + roll $5,%ecx + xorl 12(%rsp),%edx + leal -899497514(%r14,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%edx + xorl 48(%rsp),%ebp + movl %edi,%eax + + movl %esi,%ecx + xorl 56(%rsp),%ebp + xorl %r12d,%eax + roll $5,%ecx + xorl 16(%rsp),%ebp + leal -899497514(%rdx,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%ebp + xorl 52(%rsp),%r14d + movl %esi,%eax + + movl %r13d,%ecx + xorl 60(%rsp),%r14d + xorl %r11d,%eax + roll $5,%ecx + xorl 20(%rsp),%r14d + leal -899497514(%rbp,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%r14d + xorl 56(%rsp),%edx + movl %r13d,%eax + + movl %r12d,%ecx + xorl 0(%rsp),%edx + xorl %edi,%eax + roll $5,%ecx + xorl 24(%rsp),%edx + leal -899497514(%r14,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%edx + xorl 60(%rsp),%ebp + movl %r12d,%eax + + movl %r11d,%ecx + xorl 4(%rsp),%ebp + xorl %esi,%eax + roll $5,%ecx + xorl 28(%rsp),%ebp + leal -899497514(%rdx,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%ebp + movl %r11d,%eax + movl %edi,%ecx + xorl %r13d,%eax + leal -899497514(%rbp,%rsi,1),%esi + roll $5,%ecx + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + addl 0(%r8),%esi + addl 4(%r8),%edi + addl 8(%r8),%r11d + addl 12(%r8),%r12d + addl 16(%r8),%r13d + movl %esi,0(%r8) + movl %edi,4(%r8) + movl %r11d,8(%r8) + movl %r12d,12(%r8) + movl %r13d,16(%r8) + + subq $1,%r10 + leaq 64(%r9),%r9 + jnz .Lloop + + movq 64(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha1_block_data_order,.-sha1_block_data_order +.type sha1_block_data_order_shaext,@function +.align 32 +sha1_block_data_order_shaext: +_shaext_shortcut: +.cfi_startproc + movdqu (%rdi),%xmm0 + movd 16(%rdi),%xmm1 + movdqa K_XX_XX+160(%rip),%xmm3 + + movdqu (%rsi),%xmm4 + pshufd $27,%xmm0,%xmm0 + movdqu 16(%rsi),%xmm5 + pshufd $27,%xmm1,%xmm1 + movdqu 32(%rsi),%xmm6 +.byte 102,15,56,0,227 + movdqu 48(%rsi),%xmm7 +.byte 102,15,56,0,235 +.byte 102,15,56,0,243 + movdqa %xmm1,%xmm9 +.byte 102,15,56,0,251 + jmp .Loop_shaext + +.align 16 +.Loop_shaext: + decq %rdx + leaq 64(%rsi),%r8 + paddd %xmm4,%xmm1 + cmovneq %r8,%rsi + movdqa %xmm0,%xmm8 +.byte 15,56,201,229 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,0 +.byte 15,56,200,213 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 +.byte 15,56,202,231 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,0 +.byte 15,56,200,206 + pxor %xmm7,%xmm5 +.byte 15,56,202,236 +.byte 15,56,201,247 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,0 +.byte 15,56,200,215 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 +.byte 15,56,202,245 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,0 +.byte 15,56,200,204 + pxor %xmm5,%xmm7 +.byte 15,56,202,254 +.byte 15,56,201,229 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,0 +.byte 15,56,200,213 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 +.byte 15,56,202,231 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,1 +.byte 15,56,200,206 + pxor %xmm7,%xmm5 +.byte 15,56,202,236 +.byte 15,56,201,247 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,1 +.byte 15,56,200,215 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 +.byte 15,56,202,245 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,1 +.byte 15,56,200,204 + pxor %xmm5,%xmm7 +.byte 15,56,202,254 +.byte 15,56,201,229 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,1 +.byte 15,56,200,213 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 +.byte 15,56,202,231 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,1 +.byte 15,56,200,206 + pxor %xmm7,%xmm5 +.byte 15,56,202,236 +.byte 15,56,201,247 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,2 +.byte 15,56,200,215 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 +.byte 15,56,202,245 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,2 +.byte 15,56,200,204 + pxor %xmm5,%xmm7 +.byte 15,56,202,254 +.byte 15,56,201,229 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,2 +.byte 15,56,200,213 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 +.byte 15,56,202,231 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,2 +.byte 15,56,200,206 + pxor %xmm7,%xmm5 +.byte 15,56,202,236 +.byte 15,56,201,247 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,2 +.byte 15,56,200,215 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 +.byte 15,56,202,245 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,3 +.byte 15,56,200,204 + pxor %xmm5,%xmm7 +.byte 15,56,202,254 + movdqu (%rsi),%xmm4 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,3 +.byte 15,56,200,213 + movdqu 16(%rsi),%xmm5 +.byte 102,15,56,0,227 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,3 +.byte 15,56,200,206 + movdqu 32(%rsi),%xmm6 +.byte 102,15,56,0,235 + + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,3 +.byte 15,56,200,215 + movdqu 48(%rsi),%xmm7 +.byte 102,15,56,0,243 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,3 +.byte 65,15,56,200,201 +.byte 102,15,56,0,251 + + paddd %xmm8,%xmm0 + movdqa %xmm1,%xmm9 + + jnz .Loop_shaext + + pshufd $27,%xmm0,%xmm0 + pshufd $27,%xmm1,%xmm1 + movdqu %xmm0,(%rdi) + movd %xmm1,16(%rdi) + .byte 0xf3,0xc3 +.cfi_endproc +.size sha1_block_data_order_shaext,.-sha1_block_data_order_shaext +.type sha1_block_data_order_ssse3,@function +.align 16 +sha1_block_data_order_ssse3: +_ssse3_shortcut: +.cfi_startproc + movq %rsp,%r11 +.cfi_def_cfa_register %r11 + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + leaq -64(%rsp),%rsp + andq $-64,%rsp + movq %rdi,%r8 + movq %rsi,%r9 + movq %rdx,%r10 + + shlq $6,%r10 + addq %r9,%r10 + leaq K_XX_XX+64(%rip),%r14 + + movl 0(%r8),%eax + movl 4(%r8),%ebx + movl 8(%r8),%ecx + movl 12(%r8),%edx + movl %ebx,%esi + movl 16(%r8),%ebp + movl %ecx,%edi + xorl %edx,%edi + andl %edi,%esi + + movdqa 64(%r14),%xmm6 + movdqa -64(%r14),%xmm9 + movdqu 0(%r9),%xmm0 + movdqu 16(%r9),%xmm1 + movdqu 32(%r9),%xmm2 + movdqu 48(%r9),%xmm3 +.byte 102,15,56,0,198 +.byte 102,15,56,0,206 +.byte 102,15,56,0,214 + addq $64,%r9 + paddd %xmm9,%xmm0 +.byte 102,15,56,0,222 + paddd %xmm9,%xmm1 + paddd %xmm9,%xmm2 + movdqa %xmm0,0(%rsp) + psubd %xmm9,%xmm0 + movdqa %xmm1,16(%rsp) + psubd %xmm9,%xmm1 + movdqa %xmm2,32(%rsp) + psubd %xmm9,%xmm2 + jmp .Loop_ssse3 +.align 16 +.Loop_ssse3: + rorl $2,%ebx + pshufd $238,%xmm0,%xmm4 + xorl %edx,%esi + movdqa %xmm3,%xmm8 + paddd %xmm3,%xmm9 + movl %eax,%edi + addl 0(%rsp),%ebp + punpcklqdq %xmm1,%xmm4 + xorl %ecx,%ebx + roll $5,%eax + addl %esi,%ebp + psrldq $4,%xmm8 + andl %ebx,%edi + xorl %ecx,%ebx + pxor %xmm0,%xmm4 + addl %eax,%ebp + rorl $7,%eax + pxor %xmm2,%xmm8 + xorl %ecx,%edi + movl %ebp,%esi + addl 4(%rsp),%edx + pxor %xmm8,%xmm4 + xorl %ebx,%eax + roll $5,%ebp + movdqa %xmm9,48(%rsp) + addl %edi,%edx + andl %eax,%esi + movdqa %xmm4,%xmm10 + xorl %ebx,%eax + addl %ebp,%edx + rorl $7,%ebp + movdqa %xmm4,%xmm8 + xorl %ebx,%esi + pslldq $12,%xmm10 + paddd %xmm4,%xmm4 + movl %edx,%edi + addl 8(%rsp),%ecx + psrld $31,%xmm8 + xorl %eax,%ebp + roll $5,%edx + addl %esi,%ecx + movdqa %xmm10,%xmm9 + andl %ebp,%edi + xorl %eax,%ebp + psrld $30,%xmm10 + addl %edx,%ecx + rorl $7,%edx + por %xmm8,%xmm4 + xorl %eax,%edi + movl %ecx,%esi + addl 12(%rsp),%ebx + pslld $2,%xmm9 + pxor %xmm10,%xmm4 + xorl %ebp,%edx + movdqa -64(%r14),%xmm10 + roll $5,%ecx + addl %edi,%ebx + andl %edx,%esi + pxor %xmm9,%xmm4 + xorl %ebp,%edx + addl %ecx,%ebx + rorl $7,%ecx + pshufd $238,%xmm1,%xmm5 + xorl %ebp,%esi + movdqa %xmm4,%xmm9 + paddd %xmm4,%xmm10 + movl %ebx,%edi + addl 16(%rsp),%eax + punpcklqdq %xmm2,%xmm5 + xorl %edx,%ecx + roll $5,%ebx + addl %esi,%eax + psrldq $4,%xmm9 + andl %ecx,%edi + xorl %edx,%ecx + pxor %xmm1,%xmm5 + addl %ebx,%eax + rorl $7,%ebx + pxor %xmm3,%xmm9 + xorl %edx,%edi + movl %eax,%esi + addl 20(%rsp),%ebp + pxor %xmm9,%xmm5 + xorl %ecx,%ebx + roll $5,%eax + movdqa %xmm10,0(%rsp) + addl %edi,%ebp + andl %ebx,%esi + movdqa %xmm5,%xmm8 + xorl %ecx,%ebx + addl %eax,%ebp + rorl $7,%eax + movdqa %xmm5,%xmm9 + xorl %ecx,%esi + pslldq $12,%xmm8 + paddd %xmm5,%xmm5 + movl %ebp,%edi + addl 24(%rsp),%edx + psrld $31,%xmm9 + xorl %ebx,%eax + roll $5,%ebp + addl %esi,%edx + movdqa %xmm8,%xmm10 + andl %eax,%edi + xorl %ebx,%eax + psrld $30,%xmm8 + addl %ebp,%edx + rorl $7,%ebp + por %xmm9,%xmm5 + xorl %ebx,%edi + movl %edx,%esi + addl 28(%rsp),%ecx + pslld $2,%xmm10 + pxor %xmm8,%xmm5 + xorl %eax,%ebp + movdqa -32(%r14),%xmm8 + roll $5,%edx + addl %edi,%ecx + andl %ebp,%esi + pxor %xmm10,%xmm5 + xorl %eax,%ebp + addl %edx,%ecx + rorl $7,%edx + pshufd $238,%xmm2,%xmm6 + xorl %eax,%esi + movdqa %xmm5,%xmm10 + paddd %xmm5,%xmm8 + movl %ecx,%edi + addl 32(%rsp),%ebx + punpcklqdq %xmm3,%xmm6 + xorl %ebp,%edx + roll $5,%ecx + addl %esi,%ebx + psrldq $4,%xmm10 + andl %edx,%edi + xorl %ebp,%edx + pxor %xmm2,%xmm6 + addl %ecx,%ebx + rorl $7,%ecx + pxor %xmm4,%xmm10 + xorl %ebp,%edi + movl %ebx,%esi + addl 36(%rsp),%eax + pxor %xmm10,%xmm6 + xorl %edx,%ecx + roll $5,%ebx + movdqa %xmm8,16(%rsp) + addl %edi,%eax + andl %ecx,%esi + movdqa %xmm6,%xmm9 + xorl %edx,%ecx + addl %ebx,%eax + rorl $7,%ebx + movdqa %xmm6,%xmm10 + xorl %edx,%esi + pslldq $12,%xmm9 + paddd %xmm6,%xmm6 + movl %eax,%edi + addl 40(%rsp),%ebp + psrld $31,%xmm10 + xorl %ecx,%ebx + roll $5,%eax + addl %esi,%ebp + movdqa %xmm9,%xmm8 + andl %ebx,%edi + xorl %ecx,%ebx + psrld $30,%xmm9 + addl %eax,%ebp + rorl $7,%eax + por %xmm10,%xmm6 + xorl %ecx,%edi + movl %ebp,%esi + addl 44(%rsp),%edx + pslld $2,%xmm8 + pxor %xmm9,%xmm6 + xorl %ebx,%eax + movdqa -32(%r14),%xmm9 + roll $5,%ebp + addl %edi,%edx + andl %eax,%esi + pxor %xmm8,%xmm6 + xorl %ebx,%eax + addl %ebp,%edx + rorl $7,%ebp + pshufd $238,%xmm3,%xmm7 + xorl %ebx,%esi + movdqa %xmm6,%xmm8 + paddd %xmm6,%xmm9 + movl %edx,%edi + addl 48(%rsp),%ecx + punpcklqdq %xmm4,%xmm7 + xorl %eax,%ebp + roll $5,%edx + addl %esi,%ecx + psrldq $4,%xmm8 + andl %ebp,%edi + xorl %eax,%ebp + pxor %xmm3,%xmm7 + addl %edx,%ecx + rorl $7,%edx + pxor %xmm5,%xmm8 + xorl %eax,%edi + movl %ecx,%esi + addl 52(%rsp),%ebx + pxor %xmm8,%xmm7 + xorl %ebp,%edx + roll $5,%ecx + movdqa %xmm9,32(%rsp) + addl %edi,%ebx + andl %edx,%esi + movdqa %xmm7,%xmm10 + xorl %ebp,%edx + addl %ecx,%ebx + rorl $7,%ecx + movdqa %xmm7,%xmm8 + xorl %ebp,%esi + pslldq $12,%xmm10 + paddd %xmm7,%xmm7 + movl %ebx,%edi + addl 56(%rsp),%eax + psrld $31,%xmm8 + xorl %edx,%ecx + roll $5,%ebx + addl %esi,%eax + movdqa %xmm10,%xmm9 + andl %ecx,%edi + xorl %edx,%ecx + psrld $30,%xmm10 + addl %ebx,%eax + rorl $7,%ebx + por %xmm8,%xmm7 + xorl %edx,%edi + movl %eax,%esi + addl 60(%rsp),%ebp + pslld $2,%xmm9 + pxor %xmm10,%xmm7 + xorl %ecx,%ebx + movdqa -32(%r14),%xmm10 + roll $5,%eax + addl %edi,%ebp + andl %ebx,%esi + pxor %xmm9,%xmm7 + pshufd $238,%xmm6,%xmm9 + xorl %ecx,%ebx + addl %eax,%ebp + rorl $7,%eax + pxor %xmm4,%xmm0 + xorl %ecx,%esi + movl %ebp,%edi + addl 0(%rsp),%edx + punpcklqdq %xmm7,%xmm9 + xorl %ebx,%eax + roll $5,%ebp + pxor %xmm1,%xmm0 + addl %esi,%edx + andl %eax,%edi + movdqa %xmm10,%xmm8 + xorl %ebx,%eax + paddd %xmm7,%xmm10 + addl %ebp,%edx + pxor %xmm9,%xmm0 + rorl $7,%ebp + xorl %ebx,%edi + movl %edx,%esi + addl 4(%rsp),%ecx + movdqa %xmm0,%xmm9 + xorl %eax,%ebp + roll $5,%edx + movdqa %xmm10,48(%rsp) + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + pslld $2,%xmm0 + addl %edx,%ecx + rorl $7,%edx + psrld $30,%xmm9 + xorl %eax,%esi + movl %ecx,%edi + addl 8(%rsp),%ebx + por %xmm9,%xmm0 + xorl %ebp,%edx + roll $5,%ecx + pshufd $238,%xmm7,%xmm10 + addl %esi,%ebx + andl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 12(%rsp),%eax + xorl %ebp,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + rorl $7,%ecx + addl %ebx,%eax + pxor %xmm5,%xmm1 + addl 16(%rsp),%ebp + xorl %ecx,%esi + punpcklqdq %xmm0,%xmm10 + movl %eax,%edi + roll $5,%eax + pxor %xmm2,%xmm1 + addl %esi,%ebp + xorl %ecx,%edi + movdqa %xmm8,%xmm9 + rorl $7,%ebx + paddd %xmm0,%xmm8 + addl %eax,%ebp + pxor %xmm10,%xmm1 + addl 20(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + movdqa %xmm1,%xmm10 + addl %edi,%edx + xorl %ebx,%esi + movdqa %xmm8,0(%rsp) + rorl $7,%eax + addl %ebp,%edx + addl 24(%rsp),%ecx + pslld $2,%xmm1 + xorl %eax,%esi + movl %edx,%edi + psrld $30,%xmm10 + roll $5,%edx + addl %esi,%ecx + xorl %eax,%edi + rorl $7,%ebp + por %xmm10,%xmm1 + addl %edx,%ecx + addl 28(%rsp),%ebx + pshufd $238,%xmm0,%xmm8 + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + addl %ecx,%ebx + pxor %xmm6,%xmm2 + addl 32(%rsp),%eax + xorl %edx,%esi + punpcklqdq %xmm1,%xmm8 + movl %ebx,%edi + roll $5,%ebx + pxor %xmm3,%xmm2 + addl %esi,%eax + xorl %edx,%edi + movdqa 0(%r14),%xmm10 + rorl $7,%ecx + paddd %xmm1,%xmm9 + addl %ebx,%eax + pxor %xmm8,%xmm2 + addl 36(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + movdqa %xmm2,%xmm8 + addl %edi,%ebp + xorl %ecx,%esi + movdqa %xmm9,16(%rsp) + rorl $7,%ebx + addl %eax,%ebp + addl 40(%rsp),%edx + pslld $2,%xmm2 + xorl %ebx,%esi + movl %ebp,%edi + psrld $30,%xmm8 + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + por %xmm8,%xmm2 + addl %ebp,%edx + addl 44(%rsp),%ecx + pshufd $238,%xmm1,%xmm9 + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + addl %edi,%ecx + xorl %eax,%esi + rorl $7,%ebp + addl %edx,%ecx + pxor %xmm7,%xmm3 + addl 48(%rsp),%ebx + xorl %ebp,%esi + punpcklqdq %xmm2,%xmm9 + movl %ecx,%edi + roll $5,%ecx + pxor %xmm4,%xmm3 + addl %esi,%ebx + xorl %ebp,%edi + movdqa %xmm10,%xmm8 + rorl $7,%edx + paddd %xmm2,%xmm10 + addl %ecx,%ebx + pxor %xmm9,%xmm3 + addl 52(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + movdqa %xmm3,%xmm9 + addl %edi,%eax + xorl %edx,%esi + movdqa %xmm10,32(%rsp) + rorl $7,%ecx + addl %ebx,%eax + addl 56(%rsp),%ebp + pslld $2,%xmm3 + xorl %ecx,%esi + movl %eax,%edi + psrld $30,%xmm9 + roll $5,%eax + addl %esi,%ebp + xorl %ecx,%edi + rorl $7,%ebx + por %xmm9,%xmm3 + addl %eax,%ebp + addl 60(%rsp),%edx + pshufd $238,%xmm2,%xmm10 + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + addl %edi,%edx + xorl %ebx,%esi + rorl $7,%eax + addl %ebp,%edx + pxor %xmm0,%xmm4 + addl 0(%rsp),%ecx + xorl %eax,%esi + punpcklqdq %xmm3,%xmm10 + movl %edx,%edi + roll $5,%edx + pxor %xmm5,%xmm4 + addl %esi,%ecx + xorl %eax,%edi + movdqa %xmm8,%xmm9 + rorl $7,%ebp + paddd %xmm3,%xmm8 + addl %edx,%ecx + pxor %xmm10,%xmm4 + addl 4(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + movdqa %xmm4,%xmm10 + addl %edi,%ebx + xorl %ebp,%esi + movdqa %xmm8,48(%rsp) + rorl $7,%edx + addl %ecx,%ebx + addl 8(%rsp),%eax + pslld $2,%xmm4 + xorl %edx,%esi + movl %ebx,%edi + psrld $30,%xmm10 + roll $5,%ebx + addl %esi,%eax + xorl %edx,%edi + rorl $7,%ecx + por %xmm10,%xmm4 + addl %ebx,%eax + addl 12(%rsp),%ebp + pshufd $238,%xmm3,%xmm8 + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + pxor %xmm1,%xmm5 + addl 16(%rsp),%edx + xorl %ebx,%esi + punpcklqdq %xmm4,%xmm8 + movl %ebp,%edi + roll $5,%ebp + pxor %xmm6,%xmm5 + addl %esi,%edx + xorl %ebx,%edi + movdqa %xmm9,%xmm10 + rorl $7,%eax + paddd %xmm4,%xmm9 + addl %ebp,%edx + pxor %xmm8,%xmm5 + addl 20(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + movdqa %xmm5,%xmm8 + addl %edi,%ecx + xorl %eax,%esi + movdqa %xmm9,0(%rsp) + rorl $7,%ebp + addl %edx,%ecx + addl 24(%rsp),%ebx + pslld $2,%xmm5 + xorl %ebp,%esi + movl %ecx,%edi + psrld $30,%xmm8 + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + por %xmm8,%xmm5 + addl %ecx,%ebx + addl 28(%rsp),%eax + pshufd $238,%xmm4,%xmm9 + rorl $7,%ecx + movl %ebx,%esi + xorl %edx,%edi + roll $5,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + pxor %xmm2,%xmm6 + addl 32(%rsp),%ebp + andl %ecx,%esi + xorl %edx,%ecx + rorl $7,%ebx + punpcklqdq %xmm5,%xmm9 + movl %eax,%edi + xorl %ecx,%esi + pxor %xmm7,%xmm6 + roll $5,%eax + addl %esi,%ebp + movdqa %xmm10,%xmm8 + xorl %ebx,%edi + paddd %xmm5,%xmm10 + xorl %ecx,%ebx + pxor %xmm9,%xmm6 + addl %eax,%ebp + addl 36(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + rorl $7,%eax + movdqa %xmm6,%xmm9 + movl %ebp,%esi + xorl %ebx,%edi + movdqa %xmm10,16(%rsp) + roll $5,%ebp + addl %edi,%edx + xorl %eax,%esi + pslld $2,%xmm6 + xorl %ebx,%eax + addl %ebp,%edx + psrld $30,%xmm9 + addl 40(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + por %xmm9,%xmm6 + rorl $7,%ebp + movl %edx,%edi + xorl %eax,%esi + roll $5,%edx + pshufd $238,%xmm5,%xmm10 + addl %esi,%ecx + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 44(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + rorl $7,%edx + movl %ecx,%esi + xorl %ebp,%edi + roll $5,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + pxor %xmm3,%xmm7 + addl 48(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + rorl $7,%ecx + punpcklqdq %xmm6,%xmm10 + movl %ebx,%edi + xorl %edx,%esi + pxor %xmm0,%xmm7 + roll $5,%ebx + addl %esi,%eax + movdqa 32(%r14),%xmm9 + xorl %ecx,%edi + paddd %xmm6,%xmm8 + xorl %edx,%ecx + pxor %xmm10,%xmm7 + addl %ebx,%eax + addl 52(%rsp),%ebp + andl %ecx,%edi + xorl %edx,%ecx + rorl $7,%ebx + movdqa %xmm7,%xmm10 + movl %eax,%esi + xorl %ecx,%edi + movdqa %xmm8,32(%rsp) + roll $5,%eax + addl %edi,%ebp + xorl %ebx,%esi + pslld $2,%xmm7 + xorl %ecx,%ebx + addl %eax,%ebp + psrld $30,%xmm10 + addl 56(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + por %xmm10,%xmm7 + rorl $7,%eax + movl %ebp,%edi + xorl %ebx,%esi + roll $5,%ebp + pshufd $238,%xmm6,%xmm8 + addl %esi,%edx + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 60(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + rorl $7,%ebp + movl %edx,%esi + xorl %eax,%edi + roll $5,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + pxor %xmm4,%xmm0 + addl 0(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + rorl $7,%edx + punpcklqdq %xmm7,%xmm8 + movl %ecx,%edi + xorl %ebp,%esi + pxor %xmm1,%xmm0 + roll $5,%ecx + addl %esi,%ebx + movdqa %xmm9,%xmm10 + xorl %edx,%edi + paddd %xmm7,%xmm9 + xorl %ebp,%edx + pxor %xmm8,%xmm0 + addl %ecx,%ebx + addl 4(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + rorl $7,%ecx + movdqa %xmm0,%xmm8 + movl %ebx,%esi + xorl %edx,%edi + movdqa %xmm9,48(%rsp) + roll $5,%ebx + addl %edi,%eax + xorl %ecx,%esi + pslld $2,%xmm0 + xorl %edx,%ecx + addl %ebx,%eax + psrld $30,%xmm8 + addl 8(%rsp),%ebp + andl %ecx,%esi + xorl %edx,%ecx + por %xmm8,%xmm0 + rorl $7,%ebx + movl %eax,%edi + xorl %ecx,%esi + roll $5,%eax + pshufd $238,%xmm7,%xmm9 + addl %esi,%ebp + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 12(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + rorl $7,%eax + movl %ebp,%esi + xorl %ebx,%edi + roll $5,%ebp + addl %edi,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + pxor %xmm5,%xmm1 + addl 16(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + rorl $7,%ebp + punpcklqdq %xmm0,%xmm9 + movl %edx,%edi + xorl %eax,%esi + pxor %xmm2,%xmm1 + roll $5,%edx + addl %esi,%ecx + movdqa %xmm10,%xmm8 + xorl %ebp,%edi + paddd %xmm0,%xmm10 + xorl %eax,%ebp + pxor %xmm9,%xmm1 + addl %edx,%ecx + addl 20(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + rorl $7,%edx + movdqa %xmm1,%xmm9 + movl %ecx,%esi + xorl %ebp,%edi + movdqa %xmm10,0(%rsp) + roll $5,%ecx + addl %edi,%ebx + xorl %edx,%esi + pslld $2,%xmm1 + xorl %ebp,%edx + addl %ecx,%ebx + psrld $30,%xmm9 + addl 24(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + por %xmm9,%xmm1 + rorl $7,%ecx + movl %ebx,%edi + xorl %edx,%esi + roll $5,%ebx + pshufd $238,%xmm0,%xmm10 + addl %esi,%eax + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 28(%rsp),%ebp + andl %ecx,%edi + xorl %edx,%ecx + rorl $7,%ebx + movl %eax,%esi + xorl %ecx,%edi + roll $5,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + pxor %xmm6,%xmm2 + addl 32(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + rorl $7,%eax + punpcklqdq %xmm1,%xmm10 + movl %ebp,%edi + xorl %ebx,%esi + pxor %xmm3,%xmm2 + roll $5,%ebp + addl %esi,%edx + movdqa %xmm8,%xmm9 + xorl %eax,%edi + paddd %xmm1,%xmm8 + xorl %ebx,%eax + pxor %xmm10,%xmm2 + addl %ebp,%edx + addl 36(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + rorl $7,%ebp + movdqa %xmm2,%xmm10 + movl %edx,%esi + xorl %eax,%edi + movdqa %xmm8,16(%rsp) + roll $5,%edx + addl %edi,%ecx + xorl %ebp,%esi + pslld $2,%xmm2 + xorl %eax,%ebp + addl %edx,%ecx + psrld $30,%xmm10 + addl 40(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + por %xmm10,%xmm2 + rorl $7,%edx + movl %ecx,%edi + xorl %ebp,%esi + roll $5,%ecx + pshufd $238,%xmm1,%xmm8 + addl %esi,%ebx + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 44(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + rorl $7,%ecx + movl %ebx,%esi + xorl %edx,%edi + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + addl %ebx,%eax + pxor %xmm7,%xmm3 + addl 48(%rsp),%ebp + xorl %ecx,%esi + punpcklqdq %xmm2,%xmm8 + movl %eax,%edi + roll $5,%eax + pxor %xmm4,%xmm3 + addl %esi,%ebp + xorl %ecx,%edi + movdqa %xmm9,%xmm10 + rorl $7,%ebx + paddd %xmm2,%xmm9 + addl %eax,%ebp + pxor %xmm8,%xmm3 + addl 52(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + movdqa %xmm3,%xmm8 + addl %edi,%edx + xorl %ebx,%esi + movdqa %xmm9,32(%rsp) + rorl $7,%eax + addl %ebp,%edx + addl 56(%rsp),%ecx + pslld $2,%xmm3 + xorl %eax,%esi + movl %edx,%edi + psrld $30,%xmm8 + roll $5,%edx + addl %esi,%ecx + xorl %eax,%edi + rorl $7,%ebp + por %xmm8,%xmm3 + addl %edx,%ecx + addl 60(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + addl %ecx,%ebx + addl 0(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + roll $5,%ebx + paddd %xmm3,%xmm10 + addl %esi,%eax + xorl %edx,%edi + movdqa %xmm10,48(%rsp) + rorl $7,%ecx + addl %ebx,%eax + addl 4(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + addl 8(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + addl %ebp,%edx + addl 12(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + addl %edi,%ecx + xorl %eax,%esi + rorl $7,%ebp + addl %edx,%ecx + cmpq %r10,%r9 + je .Ldone_ssse3 + movdqa 64(%r14),%xmm6 + movdqa -64(%r14),%xmm9 + movdqu 0(%r9),%xmm0 + movdqu 16(%r9),%xmm1 + movdqu 32(%r9),%xmm2 + movdqu 48(%r9),%xmm3 +.byte 102,15,56,0,198 + addq $64,%r9 + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi +.byte 102,15,56,0,206 + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + paddd %xmm9,%xmm0 + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + movdqa %xmm0,0(%rsp) + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + rorl $7,%ecx + psubd %xmm9,%xmm0 + addl %ebx,%eax + addl 24(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + roll $5,%eax + addl %esi,%ebp + xorl %ecx,%edi + rorl $7,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + addl %edi,%edx + xorl %ebx,%esi + rorl $7,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi +.byte 102,15,56,0,214 + roll $5,%edx + addl %esi,%ecx + xorl %eax,%edi + rorl $7,%ebp + paddd %xmm9,%xmm1 + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + movdqa %xmm1,16(%rsp) + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + psubd %xmm9,%xmm1 + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + roll $5,%ebx + addl %esi,%eax + xorl %edx,%edi + rorl $7,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi +.byte 102,15,56,0,222 + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + paddd %xmm9,%xmm2 + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + movdqa %xmm2,32(%rsp) + roll $5,%edx + addl %edi,%ecx + xorl %eax,%esi + rorl $7,%ebp + psubd %xmm9,%xmm2 + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + rorl $7,%ecx + addl %ebx,%eax + addl 0(%r8),%eax + addl 4(%r8),%esi + addl 8(%r8),%ecx + addl 12(%r8),%edx + movl %eax,0(%r8) + addl 16(%r8),%ebp + movl %esi,4(%r8) + movl %esi,%ebx + movl %ecx,8(%r8) + movl %ecx,%edi + movl %edx,12(%r8) + xorl %edx,%edi + movl %ebp,16(%r8) + andl %edi,%esi + jmp .Loop_ssse3 + +.align 16 +.Ldone_ssse3: + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + rorl $7,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + roll $5,%eax + addl %esi,%ebp + xorl %ecx,%edi + rorl $7,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + addl %edi,%edx + xorl %ebx,%esi + rorl $7,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + roll $5,%edx + addl %esi,%ecx + xorl %eax,%edi + rorl $7,%ebp + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + roll $5,%ebx + addl %esi,%eax + xorl %edx,%edi + rorl $7,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + addl %edi,%ecx + xorl %eax,%esi + rorl $7,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + rorl $7,%ecx + addl %ebx,%eax + addl 0(%r8),%eax + addl 4(%r8),%esi + addl 8(%r8),%ecx + movl %eax,0(%r8) + addl 12(%r8),%edx + movl %esi,4(%r8) + addl 16(%r8),%ebp + movl %ecx,8(%r8) + movl %edx,12(%r8) + movl %ebp,16(%r8) + movq -40(%r11),%r14 +.cfi_restore %r14 + movq -32(%r11),%r13 +.cfi_restore %r13 + movq -24(%r11),%r12 +.cfi_restore %r12 + movq -16(%r11),%rbp +.cfi_restore %rbp + movq -8(%r11),%rbx +.cfi_restore %rbx + leaq (%r11),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_ssse3: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha1_block_data_order_ssse3,.-sha1_block_data_order_ssse3 +.type sha1_block_data_order_avx,@function +.align 16 +sha1_block_data_order_avx: +_avx_shortcut: +.cfi_startproc + movq %rsp,%r11 +.cfi_def_cfa_register %r11 + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + leaq -64(%rsp),%rsp + vzeroupper + andq $-64,%rsp + movq %rdi,%r8 + movq %rsi,%r9 + movq %rdx,%r10 + + shlq $6,%r10 + addq %r9,%r10 + leaq K_XX_XX+64(%rip),%r14 + + movl 0(%r8),%eax + movl 4(%r8),%ebx + movl 8(%r8),%ecx + movl 12(%r8),%edx + movl %ebx,%esi + movl 16(%r8),%ebp + movl %ecx,%edi + xorl %edx,%edi + andl %edi,%esi + + vmovdqa 64(%r14),%xmm6 + vmovdqa -64(%r14),%xmm11 + vmovdqu 0(%r9),%xmm0 + vmovdqu 16(%r9),%xmm1 + vmovdqu 32(%r9),%xmm2 + vmovdqu 48(%r9),%xmm3 + vpshufb %xmm6,%xmm0,%xmm0 + addq $64,%r9 + vpshufb %xmm6,%xmm1,%xmm1 + vpshufb %xmm6,%xmm2,%xmm2 + vpshufb %xmm6,%xmm3,%xmm3 + vpaddd %xmm11,%xmm0,%xmm4 + vpaddd %xmm11,%xmm1,%xmm5 + vpaddd %xmm11,%xmm2,%xmm6 + vmovdqa %xmm4,0(%rsp) + vmovdqa %xmm5,16(%rsp) + vmovdqa %xmm6,32(%rsp) + jmp .Loop_avx +.align 16 +.Loop_avx: + shrdl $2,%ebx,%ebx + xorl %edx,%esi + vpalignr $8,%xmm0,%xmm1,%xmm4 + movl %eax,%edi + addl 0(%rsp),%ebp + vpaddd %xmm3,%xmm11,%xmm9 + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrldq $4,%xmm3,%xmm8 + addl %esi,%ebp + andl %ebx,%edi + vpxor %xmm0,%xmm4,%xmm4 + xorl %ecx,%ebx + addl %eax,%ebp + vpxor %xmm2,%xmm8,%xmm8 + shrdl $7,%eax,%eax + xorl %ecx,%edi + movl %ebp,%esi + addl 4(%rsp),%edx + vpxor %xmm8,%xmm4,%xmm4 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vmovdqa %xmm9,48(%rsp) + addl %edi,%edx + andl %eax,%esi + vpsrld $31,%xmm4,%xmm8 + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%esi + vpslldq $12,%xmm4,%xmm10 + vpaddd %xmm4,%xmm4,%xmm4 + movl %edx,%edi + addl 8(%rsp),%ecx + xorl %eax,%ebp + shldl $5,%edx,%edx + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm4,%xmm4 + addl %esi,%ecx + andl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm4,%xmm4 + shrdl $7,%edx,%edx + xorl %eax,%edi + movl %ecx,%esi + addl 12(%rsp),%ebx + vpxor %xmm10,%xmm4,%xmm4 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + addl %edi,%ebx + andl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %ebp,%esi + vpalignr $8,%xmm1,%xmm2,%xmm5 + movl %ebx,%edi + addl 16(%rsp),%eax + vpaddd %xmm4,%xmm11,%xmm9 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrldq $4,%xmm4,%xmm8 + addl %esi,%eax + andl %ecx,%edi + vpxor %xmm1,%xmm5,%xmm5 + xorl %edx,%ecx + addl %ebx,%eax + vpxor %xmm3,%xmm8,%xmm8 + shrdl $7,%ebx,%ebx + xorl %edx,%edi + movl %eax,%esi + addl 20(%rsp),%ebp + vpxor %xmm8,%xmm5,%xmm5 + xorl %ecx,%ebx + shldl $5,%eax,%eax + vmovdqa %xmm9,0(%rsp) + addl %edi,%ebp + andl %ebx,%esi + vpsrld $31,%xmm5,%xmm8 + xorl %ecx,%ebx + addl %eax,%ebp + shrdl $7,%eax,%eax + xorl %ecx,%esi + vpslldq $12,%xmm5,%xmm10 + vpaddd %xmm5,%xmm5,%xmm5 + movl %ebp,%edi + addl 24(%rsp),%edx + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm5,%xmm5 + addl %esi,%edx + andl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm5,%xmm5 + shrdl $7,%ebp,%ebp + xorl %ebx,%edi + movl %edx,%esi + addl 28(%rsp),%ecx + vpxor %xmm10,%xmm5,%xmm5 + xorl %eax,%ebp + shldl $5,%edx,%edx + vmovdqa -32(%r14),%xmm11 + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + vpalignr $8,%xmm2,%xmm3,%xmm6 + movl %ecx,%edi + addl 32(%rsp),%ebx + vpaddd %xmm5,%xmm11,%xmm9 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + vpsrldq $4,%xmm5,%xmm8 + addl %esi,%ebx + andl %edx,%edi + vpxor %xmm2,%xmm6,%xmm6 + xorl %ebp,%edx + addl %ecx,%ebx + vpxor %xmm4,%xmm8,%xmm8 + shrdl $7,%ecx,%ecx + xorl %ebp,%edi + movl %ebx,%esi + addl 36(%rsp),%eax + vpxor %xmm8,%xmm6,%xmm6 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vmovdqa %xmm9,16(%rsp) + addl %edi,%eax + andl %ecx,%esi + vpsrld $31,%xmm6,%xmm8 + xorl %edx,%ecx + addl %ebx,%eax + shrdl $7,%ebx,%ebx + xorl %edx,%esi + vpslldq $12,%xmm6,%xmm10 + vpaddd %xmm6,%xmm6,%xmm6 + movl %eax,%edi + addl 40(%rsp),%ebp + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm6,%xmm6 + addl %esi,%ebp + andl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm6,%xmm6 + shrdl $7,%eax,%eax + xorl %ecx,%edi + movl %ebp,%esi + addl 44(%rsp),%edx + vpxor %xmm10,%xmm6,%xmm6 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + addl %edi,%edx + andl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%esi + vpalignr $8,%xmm3,%xmm4,%xmm7 + movl %edx,%edi + addl 48(%rsp),%ecx + vpaddd %xmm6,%xmm11,%xmm9 + xorl %eax,%ebp + shldl $5,%edx,%edx + vpsrldq $4,%xmm6,%xmm8 + addl %esi,%ecx + andl %ebp,%edi + vpxor %xmm3,%xmm7,%xmm7 + xorl %eax,%ebp + addl %edx,%ecx + vpxor %xmm5,%xmm8,%xmm8 + shrdl $7,%edx,%edx + xorl %eax,%edi + movl %ecx,%esi + addl 52(%rsp),%ebx + vpxor %xmm8,%xmm7,%xmm7 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + vmovdqa %xmm9,32(%rsp) + addl %edi,%ebx + andl %edx,%esi + vpsrld $31,%xmm7,%xmm8 + xorl %ebp,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %ebp,%esi + vpslldq $12,%xmm7,%xmm10 + vpaddd %xmm7,%xmm7,%xmm7 + movl %ebx,%edi + addl 56(%rsp),%eax + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm7,%xmm7 + addl %esi,%eax + andl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm7,%xmm7 + shrdl $7,%ebx,%ebx + xorl %edx,%edi + movl %eax,%esi + addl 60(%rsp),%ebp + vpxor %xmm10,%xmm7,%xmm7 + xorl %ecx,%ebx + shldl $5,%eax,%eax + addl %edi,%ebp + andl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm6,%xmm7,%xmm8 + vpxor %xmm4,%xmm0,%xmm0 + shrdl $7,%eax,%eax + xorl %ecx,%esi + movl %ebp,%edi + addl 0(%rsp),%edx + vpxor %xmm1,%xmm0,%xmm0 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vpaddd %xmm7,%xmm11,%xmm9 + addl %esi,%edx + andl %eax,%edi + vpxor %xmm8,%xmm0,%xmm0 + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%edi + vpsrld $30,%xmm0,%xmm8 + vmovdqa %xmm9,48(%rsp) + movl %edx,%esi + addl 4(%rsp),%ecx + xorl %eax,%ebp + shldl $5,%edx,%edx + vpslld $2,%xmm0,%xmm0 + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + movl %ecx,%edi + addl 8(%rsp),%ebx + vpor %xmm8,%xmm0,%xmm0 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + addl %esi,%ebx + andl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 12(%rsp),%eax + xorl %ebp,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm7,%xmm0,%xmm8 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + vpxor %xmm2,%xmm1,%xmm1 + addl %esi,%ebp + xorl %ecx,%edi + vpaddd %xmm0,%xmm11,%xmm9 + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpxor %xmm8,%xmm1,%xmm1 + addl 20(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + vpsrld $30,%xmm1,%xmm8 + vmovdqa %xmm9,0(%rsp) + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpslld $2,%xmm1,%xmm1 + addl 24(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpor %xmm8,%xmm1,%xmm1 + addl 28(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpalignr $8,%xmm0,%xmm1,%xmm8 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + vpxor %xmm3,%xmm2,%xmm2 + addl %esi,%eax + xorl %edx,%edi + vpaddd %xmm1,%xmm11,%xmm9 + vmovdqa 0(%r14),%xmm11 + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpxor %xmm8,%xmm2,%xmm2 + addl 36(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + vpsrld $30,%xmm2,%xmm8 + vmovdqa %xmm9,16(%rsp) + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpslld $2,%xmm2,%xmm2 + addl 40(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpor %xmm8,%xmm2,%xmm2 + addl 44(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpalignr $8,%xmm1,%xmm2,%xmm8 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + vpxor %xmm4,%xmm3,%xmm3 + addl %esi,%ebx + xorl %ebp,%edi + vpaddd %xmm2,%xmm11,%xmm9 + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpxor %xmm8,%xmm3,%xmm3 + addl 52(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + vpsrld $30,%xmm3,%xmm8 + vmovdqa %xmm9,32(%rsp) + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpslld $2,%xmm3,%xmm3 + addl 56(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpor %xmm8,%xmm3,%xmm3 + addl 60(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpalignr $8,%xmm2,%xmm3,%xmm8 + vpxor %xmm0,%xmm4,%xmm4 + addl 0(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + vpxor %xmm5,%xmm4,%xmm4 + addl %esi,%ecx + xorl %eax,%edi + vpaddd %xmm3,%xmm11,%xmm9 + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpxor %xmm8,%xmm4,%xmm4 + addl 4(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + vpsrld $30,%xmm4,%xmm8 + vmovdqa %xmm9,48(%rsp) + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpslld $2,%xmm4,%xmm4 + addl 8(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpor %xmm8,%xmm4,%xmm4 + addl 12(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm3,%xmm4,%xmm8 + vpxor %xmm1,%xmm5,%xmm5 + addl 16(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + vpxor %xmm6,%xmm5,%xmm5 + addl %esi,%edx + xorl %ebx,%edi + vpaddd %xmm4,%xmm11,%xmm9 + shrdl $7,%eax,%eax + addl %ebp,%edx + vpxor %xmm8,%xmm5,%xmm5 + addl 20(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + vpsrld $30,%xmm5,%xmm8 + vmovdqa %xmm9,0(%rsp) + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpslld $2,%xmm5,%xmm5 + addl 24(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpor %xmm8,%xmm5,%xmm5 + addl 28(%rsp),%eax + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm4,%xmm5,%xmm8 + vpxor %xmm2,%xmm6,%xmm6 + addl 32(%rsp),%ebp + andl %ecx,%esi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + vpxor %xmm7,%xmm6,%xmm6 + movl %eax,%edi + xorl %ecx,%esi + vpaddd %xmm5,%xmm11,%xmm9 + shldl $5,%eax,%eax + addl %esi,%ebp + vpxor %xmm8,%xmm6,%xmm6 + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 36(%rsp),%edx + vpsrld $30,%xmm6,%xmm8 + vmovdqa %xmm9,16(%rsp) + andl %ebx,%edi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%esi + vpslld $2,%xmm6,%xmm6 + xorl %ebx,%edi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + addl 40(%rsp),%ecx + andl %eax,%esi + vpor %xmm8,%xmm6,%xmm6 + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%edi + xorl %eax,%esi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 44(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + shrdl $7,%edx,%edx + movl %ecx,%esi + xorl %ebp,%edi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + vpalignr $8,%xmm5,%xmm6,%xmm8 + vpxor %xmm3,%xmm7,%xmm7 + addl 48(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + vpxor %xmm0,%xmm7,%xmm7 + movl %ebx,%edi + xorl %edx,%esi + vpaddd %xmm6,%xmm11,%xmm9 + vmovdqa 32(%r14),%xmm11 + shldl $5,%ebx,%ebx + addl %esi,%eax + vpxor %xmm8,%xmm7,%xmm7 + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 52(%rsp),%ebp + vpsrld $30,%xmm7,%xmm8 + vmovdqa %xmm9,32(%rsp) + andl %ecx,%edi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + vpslld $2,%xmm7,%xmm7 + xorl %ecx,%edi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + addl 56(%rsp),%edx + andl %ebx,%esi + vpor %xmm8,%xmm7,%xmm7 + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%edi + xorl %ebx,%esi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 60(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%esi + xorl %eax,%edi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + vpalignr $8,%xmm6,%xmm7,%xmm8 + vpxor %xmm4,%xmm0,%xmm0 + addl 0(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + shrdl $7,%edx,%edx + vpxor %xmm1,%xmm0,%xmm0 + movl %ecx,%edi + xorl %ebp,%esi + vpaddd %xmm7,%xmm11,%xmm9 + shldl $5,%ecx,%ecx + addl %esi,%ebx + vpxor %xmm8,%xmm0,%xmm0 + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 4(%rsp),%eax + vpsrld $30,%xmm0,%xmm8 + vmovdqa %xmm9,48(%rsp) + andl %edx,%edi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + vpslld $2,%xmm0,%xmm0 + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + addl 8(%rsp),%ebp + andl %ecx,%esi + vpor %xmm8,%xmm0,%xmm0 + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%edi + xorl %ecx,%esi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 12(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%esi + xorl %ebx,%edi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + vpalignr $8,%xmm7,%xmm0,%xmm8 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + vpxor %xmm2,%xmm1,%xmm1 + movl %edx,%edi + xorl %eax,%esi + vpaddd %xmm0,%xmm11,%xmm9 + shldl $5,%edx,%edx + addl %esi,%ecx + vpxor %xmm8,%xmm1,%xmm1 + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 20(%rsp),%ebx + vpsrld $30,%xmm1,%xmm8 + vmovdqa %xmm9,0(%rsp) + andl %ebp,%edi + xorl %eax,%ebp + shrdl $7,%edx,%edx + movl %ecx,%esi + vpslld $2,%xmm1,%xmm1 + xorl %ebp,%edi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + addl 24(%rsp),%eax + andl %edx,%esi + vpor %xmm8,%xmm1,%xmm1 + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%edi + xorl %edx,%esi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 28(%rsp),%ebp + andl %ecx,%edi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + xorl %ecx,%edi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm0,%xmm1,%xmm8 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + vpxor %xmm3,%xmm2,%xmm2 + movl %ebp,%edi + xorl %ebx,%esi + vpaddd %xmm1,%xmm11,%xmm9 + shldl $5,%ebp,%ebp + addl %esi,%edx + vpxor %xmm8,%xmm2,%xmm2 + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 36(%rsp),%ecx + vpsrld $30,%xmm2,%xmm8 + vmovdqa %xmm9,16(%rsp) + andl %eax,%edi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%esi + vpslld $2,%xmm2,%xmm2 + xorl %eax,%edi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + addl 40(%rsp),%ebx + andl %ebp,%esi + vpor %xmm8,%xmm2,%xmm2 + xorl %eax,%ebp + shrdl $7,%edx,%edx + movl %ecx,%edi + xorl %ebp,%esi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 44(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + addl %ebx,%eax + vpalignr $8,%xmm1,%xmm2,%xmm8 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + vpxor %xmm4,%xmm3,%xmm3 + addl %esi,%ebp + xorl %ecx,%edi + vpaddd %xmm2,%xmm11,%xmm9 + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpxor %xmm8,%xmm3,%xmm3 + addl 52(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + vpsrld $30,%xmm3,%xmm8 + vmovdqa %xmm9,32(%rsp) + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpslld $2,%xmm3,%xmm3 + addl 56(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpor %xmm8,%xmm3,%xmm3 + addl 60(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 0(%rsp),%eax + vpaddd %xmm3,%xmm11,%xmm9 + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + vmovdqa %xmm9,48(%rsp) + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 4(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 8(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 12(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + cmpq %r10,%r9 + je .Ldone_avx + vmovdqa 64(%r14),%xmm6 + vmovdqa -64(%r14),%xmm11 + vmovdqu 0(%r9),%xmm0 + vmovdqu 16(%r9),%xmm1 + vmovdqu 32(%r9),%xmm2 + vmovdqu 48(%r9),%xmm3 + vpshufb %xmm6,%xmm0,%xmm0 + addq $64,%r9 + addl 16(%rsp),%ebx + xorl %ebp,%esi + vpshufb %xmm6,%xmm1,%xmm1 + movl %ecx,%edi + shldl $5,%ecx,%ecx + vpaddd %xmm11,%xmm0,%xmm4 + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vmovdqa %xmm4,0(%rsp) + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + vpshufb %xmm6,%xmm2,%xmm2 + movl %edx,%edi + shldl $5,%edx,%edx + vpaddd %xmm11,%xmm1,%xmm5 + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vmovdqa %xmm5,16(%rsp) + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + vpshufb %xmm6,%xmm3,%xmm3 + movl %ebp,%edi + shldl $5,%ebp,%ebp + vpaddd %xmm11,%xmm2,%xmm6 + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + vmovdqa %xmm6,32(%rsp) + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 0(%r8),%eax + addl 4(%r8),%esi + addl 8(%r8),%ecx + addl 12(%r8),%edx + movl %eax,0(%r8) + addl 16(%r8),%ebp + movl %esi,4(%r8) + movl %esi,%ebx + movl %ecx,8(%r8) + movl %ecx,%edi + movl %edx,12(%r8) + xorl %edx,%edi + movl %ebp,16(%r8) + andl %edi,%esi + jmp .Loop_avx + +.align 16 +.Ldone_avx: + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vzeroupper + + addl 0(%r8),%eax + addl 4(%r8),%esi + addl 8(%r8),%ecx + movl %eax,0(%r8) + addl 12(%r8),%edx + movl %esi,4(%r8) + addl 16(%r8),%ebp + movl %ecx,8(%r8) + movl %edx,12(%r8) + movl %ebp,16(%r8) + movq -40(%r11),%r14 +.cfi_restore %r14 + movq -32(%r11),%r13 +.cfi_restore %r13 + movq -24(%r11),%r12 +.cfi_restore %r12 + movq -16(%r11),%rbp +.cfi_restore %rbp + movq -8(%r11),%rbx +.cfi_restore %rbx + leaq (%r11),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_avx: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha1_block_data_order_avx,.-sha1_block_data_order_avx +.type sha1_block_data_order_avx2,@function +.align 16 +sha1_block_data_order_avx2: +_avx2_shortcut: +.cfi_startproc + movq %rsp,%r11 +.cfi_def_cfa_register %r11 + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + vzeroupper + movq %rdi,%r8 + movq %rsi,%r9 + movq %rdx,%r10 + + leaq -640(%rsp),%rsp + shlq $6,%r10 + leaq 64(%r9),%r13 + andq $-128,%rsp + addq %r9,%r10 + leaq K_XX_XX+64(%rip),%r14 + + movl 0(%r8),%eax + cmpq %r10,%r13 + cmovaeq %r9,%r13 + movl 4(%r8),%ebp + movl 8(%r8),%ecx + movl 12(%r8),%edx + movl 16(%r8),%esi + vmovdqu 64(%r14),%ymm6 + + vmovdqu (%r9),%xmm0 + vmovdqu 16(%r9),%xmm1 + vmovdqu 32(%r9),%xmm2 + vmovdqu 48(%r9),%xmm3 + leaq 64(%r9),%r9 + vinserti128 $1,(%r13),%ymm0,%ymm0 + vinserti128 $1,16(%r13),%ymm1,%ymm1 + vpshufb %ymm6,%ymm0,%ymm0 + vinserti128 $1,32(%r13),%ymm2,%ymm2 + vpshufb %ymm6,%ymm1,%ymm1 + vinserti128 $1,48(%r13),%ymm3,%ymm3 + vpshufb %ymm6,%ymm2,%ymm2 + vmovdqu -64(%r14),%ymm11 + vpshufb %ymm6,%ymm3,%ymm3 + + vpaddd %ymm11,%ymm0,%ymm4 + vpaddd %ymm11,%ymm1,%ymm5 + vmovdqu %ymm4,0(%rsp) + vpaddd %ymm11,%ymm2,%ymm6 + vmovdqu %ymm5,32(%rsp) + vpaddd %ymm11,%ymm3,%ymm7 + vmovdqu %ymm6,64(%rsp) + vmovdqu %ymm7,96(%rsp) + vpalignr $8,%ymm0,%ymm1,%ymm4 + vpsrldq $4,%ymm3,%ymm8 + vpxor %ymm0,%ymm4,%ymm4 + vpxor %ymm2,%ymm8,%ymm8 + vpxor %ymm8,%ymm4,%ymm4 + vpsrld $31,%ymm4,%ymm8 + vpslldq $12,%ymm4,%ymm10 + vpaddd %ymm4,%ymm4,%ymm4 + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm4,%ymm4 + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm4,%ymm4 + vpxor %ymm10,%ymm4,%ymm4 + vpaddd %ymm11,%ymm4,%ymm9 + vmovdqu %ymm9,128(%rsp) + vpalignr $8,%ymm1,%ymm2,%ymm5 + vpsrldq $4,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm3,%ymm8,%ymm8 + vpxor %ymm8,%ymm5,%ymm5 + vpsrld $31,%ymm5,%ymm8 + vmovdqu -32(%r14),%ymm11 + vpslldq $12,%ymm5,%ymm10 + vpaddd %ymm5,%ymm5,%ymm5 + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm5,%ymm5 + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm5,%ymm5 + vpxor %ymm10,%ymm5,%ymm5 + vpaddd %ymm11,%ymm5,%ymm9 + vmovdqu %ymm9,160(%rsp) + vpalignr $8,%ymm2,%ymm3,%ymm6 + vpsrldq $4,%ymm5,%ymm8 + vpxor %ymm2,%ymm6,%ymm6 + vpxor %ymm4,%ymm8,%ymm8 + vpxor %ymm8,%ymm6,%ymm6 + vpsrld $31,%ymm6,%ymm8 + vpslldq $12,%ymm6,%ymm10 + vpaddd %ymm6,%ymm6,%ymm6 + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm6,%ymm6 + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm6,%ymm6 + vpxor %ymm10,%ymm6,%ymm6 + vpaddd %ymm11,%ymm6,%ymm9 + vmovdqu %ymm9,192(%rsp) + vpalignr $8,%ymm3,%ymm4,%ymm7 + vpsrldq $4,%ymm6,%ymm8 + vpxor %ymm3,%ymm7,%ymm7 + vpxor %ymm5,%ymm8,%ymm8 + vpxor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm7,%ymm8 + vpslldq $12,%ymm7,%ymm10 + vpaddd %ymm7,%ymm7,%ymm7 + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm7,%ymm7 + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm7,%ymm7 + vpxor %ymm10,%ymm7,%ymm7 + vpaddd %ymm11,%ymm7,%ymm9 + vmovdqu %ymm9,224(%rsp) + leaq 128(%rsp),%r13 + jmp .Loop_avx2 +.align 32 +.Loop_avx2: + rorxl $2,%ebp,%ebx + andnl %edx,%ebp,%edi + andl %ecx,%ebp + xorl %edi,%ebp + jmp .Lalign32_1 +.align 32 +.Lalign32_1: + vpalignr $8,%ymm6,%ymm7,%ymm8 + vpxor %ymm4,%ymm0,%ymm0 + addl -128(%r13),%esi + andnl %ecx,%eax,%edi + vpxor %ymm1,%ymm0,%ymm0 + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + vpxor %ymm8,%ymm0,%ymm0 + andl %ebx,%eax + addl %r12d,%esi + xorl %edi,%eax + vpsrld $30,%ymm0,%ymm8 + vpslld $2,%ymm0,%ymm0 + addl -124(%r13),%edx + andnl %ebx,%esi,%edi + addl %eax,%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + andl %ebp,%esi + vpor %ymm8,%ymm0,%ymm0 + addl %r12d,%edx + xorl %edi,%esi + addl -120(%r13),%ecx + andnl %ebp,%edx,%edi + vpaddd %ymm11,%ymm0,%ymm9 + addl %esi,%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + andl %eax,%edx + vmovdqu %ymm9,256(%rsp) + addl %r12d,%ecx + xorl %edi,%edx + addl -116(%r13),%ebx + andnl %eax,%ecx,%edi + addl %edx,%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + andl %esi,%ecx + addl %r12d,%ebx + xorl %edi,%ecx + addl -96(%r13),%ebp + andnl %esi,%ebx,%edi + addl %ecx,%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + andl %edx,%ebx + addl %r12d,%ebp + xorl %edi,%ebx + vpalignr $8,%ymm7,%ymm0,%ymm8 + vpxor %ymm5,%ymm1,%ymm1 + addl -92(%r13),%eax + andnl %edx,%ebp,%edi + vpxor %ymm2,%ymm1,%ymm1 + addl %ebx,%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + vpxor %ymm8,%ymm1,%ymm1 + andl %ecx,%ebp + addl %r12d,%eax + xorl %edi,%ebp + vpsrld $30,%ymm1,%ymm8 + vpslld $2,%ymm1,%ymm1 + addl -88(%r13),%esi + andnl %ecx,%eax,%edi + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + vpor %ymm8,%ymm1,%ymm1 + addl %r12d,%esi + xorl %edi,%eax + addl -84(%r13),%edx + andnl %ebx,%esi,%edi + vpaddd %ymm11,%ymm1,%ymm9 + addl %eax,%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + andl %ebp,%esi + vmovdqu %ymm9,288(%rsp) + addl %r12d,%edx + xorl %edi,%esi + addl -64(%r13),%ecx + andnl %ebp,%edx,%edi + addl %esi,%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + andl %eax,%edx + addl %r12d,%ecx + xorl %edi,%edx + addl -60(%r13),%ebx + andnl %eax,%ecx,%edi + addl %edx,%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + andl %esi,%ecx + addl %r12d,%ebx + xorl %edi,%ecx + vpalignr $8,%ymm0,%ymm1,%ymm8 + vpxor %ymm6,%ymm2,%ymm2 + addl -56(%r13),%ebp + andnl %esi,%ebx,%edi + vpxor %ymm3,%ymm2,%ymm2 + vmovdqu 0(%r14),%ymm11 + addl %ecx,%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + vpxor %ymm8,%ymm2,%ymm2 + andl %edx,%ebx + addl %r12d,%ebp + xorl %edi,%ebx + vpsrld $30,%ymm2,%ymm8 + vpslld $2,%ymm2,%ymm2 + addl -52(%r13),%eax + andnl %edx,%ebp,%edi + addl %ebx,%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + andl %ecx,%ebp + vpor %ymm8,%ymm2,%ymm2 + addl %r12d,%eax + xorl %edi,%ebp + addl -32(%r13),%esi + andnl %ecx,%eax,%edi + vpaddd %ymm11,%ymm2,%ymm9 + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + vmovdqu %ymm9,320(%rsp) + addl %r12d,%esi + xorl %edi,%eax + addl -28(%r13),%edx + andnl %ebx,%esi,%edi + addl %eax,%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + andl %ebp,%esi + addl %r12d,%edx + xorl %edi,%esi + addl -24(%r13),%ecx + andnl %ebp,%edx,%edi + addl %esi,%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + andl %eax,%edx + addl %r12d,%ecx + xorl %edi,%edx + vpalignr $8,%ymm1,%ymm2,%ymm8 + vpxor %ymm7,%ymm3,%ymm3 + addl -20(%r13),%ebx + andnl %eax,%ecx,%edi + vpxor %ymm4,%ymm3,%ymm3 + addl %edx,%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + vpxor %ymm8,%ymm3,%ymm3 + andl %esi,%ecx + addl %r12d,%ebx + xorl %edi,%ecx + vpsrld $30,%ymm3,%ymm8 + vpslld $2,%ymm3,%ymm3 + addl 0(%r13),%ebp + andnl %esi,%ebx,%edi + addl %ecx,%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + andl %edx,%ebx + vpor %ymm8,%ymm3,%ymm3 + addl %r12d,%ebp + xorl %edi,%ebx + addl 4(%r13),%eax + andnl %edx,%ebp,%edi + vpaddd %ymm11,%ymm3,%ymm9 + addl %ebx,%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + andl %ecx,%ebp + vmovdqu %ymm9,352(%rsp) + addl %r12d,%eax + xorl %edi,%ebp + addl 8(%r13),%esi + andnl %ecx,%eax,%edi + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + addl %r12d,%esi + xorl %edi,%eax + addl 12(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + vpalignr $8,%ymm2,%ymm3,%ymm8 + vpxor %ymm0,%ymm4,%ymm4 + addl 32(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + vpxor %ymm5,%ymm4,%ymm4 + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + vpxor %ymm8,%ymm4,%ymm4 + addl %r12d,%ecx + xorl %ebp,%edx + addl 36(%r13),%ebx + vpsrld $30,%ymm4,%ymm8 + vpslld $2,%ymm4,%ymm4 + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + vpor %ymm8,%ymm4,%ymm4 + addl 40(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + vpaddd %ymm11,%ymm4,%ymm9 + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl 44(%r13),%eax + vmovdqu %ymm9,384(%rsp) + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl 64(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + vpalignr $8,%ymm3,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + addl 68(%r13),%edx + leal (%rdx,%rax,1),%edx + vpxor %ymm6,%ymm5,%ymm5 + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + vpxor %ymm8,%ymm5,%ymm5 + addl %r12d,%edx + xorl %ebx,%esi + addl 72(%r13),%ecx + vpsrld $30,%ymm5,%ymm8 + vpslld $2,%ymm5,%ymm5 + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + vpor %ymm8,%ymm5,%ymm5 + addl 76(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + vpaddd %ymm11,%ymm5,%ymm9 + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl 96(%r13),%ebp + vmovdqu %ymm9,416(%rsp) + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl 100(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + vpalignr $8,%ymm4,%ymm5,%ymm8 + vpxor %ymm2,%ymm6,%ymm6 + addl 104(%r13),%esi + leal (%rsi,%rbp,1),%esi + vpxor %ymm7,%ymm6,%ymm6 + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + vpxor %ymm8,%ymm6,%ymm6 + addl %r12d,%esi + xorl %ecx,%eax + addl 108(%r13),%edx + leaq 256(%r13),%r13 + vpsrld $30,%ymm6,%ymm8 + vpslld $2,%ymm6,%ymm6 + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + vpor %ymm8,%ymm6,%ymm6 + addl -128(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + vpaddd %ymm11,%ymm6,%ymm9 + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -124(%r13),%ebx + vmovdqu %ymm9,448(%rsp) + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl -120(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + vpalignr $8,%ymm5,%ymm6,%ymm8 + vpxor %ymm3,%ymm7,%ymm7 + addl -116(%r13),%eax + leal (%rax,%rbx,1),%eax + vpxor %ymm0,%ymm7,%ymm7 + vmovdqu 32(%r14),%ymm11 + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + vpxor %ymm8,%ymm7,%ymm7 + addl %r12d,%eax + xorl %edx,%ebp + addl -96(%r13),%esi + vpsrld $30,%ymm7,%ymm8 + vpslld $2,%ymm7,%ymm7 + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + vpor %ymm8,%ymm7,%ymm7 + addl -92(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + vpaddd %ymm11,%ymm7,%ymm9 + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl -88(%r13),%ecx + vmovdqu %ymm9,480(%rsp) + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -84(%r13),%ebx + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + andl %edi,%ecx + jmp .Lalign32_2 +.align 32 +.Lalign32_2: + vpalignr $8,%ymm6,%ymm7,%ymm8 + vpxor %ymm4,%ymm0,%ymm0 + addl -64(%r13),%ebp + xorl %esi,%ecx + vpxor %ymm1,%ymm0,%ymm0 + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + vpxor %ymm8,%ymm0,%ymm0 + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + vpsrld $30,%ymm0,%ymm8 + vpslld $2,%ymm0,%ymm0 + addl %r12d,%ebp + andl %edi,%ebx + addl -60(%r13),%eax + xorl %edx,%ebx + movl %ecx,%edi + xorl %edx,%edi + vpor %ymm8,%ymm0,%ymm0 + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + vpaddd %ymm11,%ymm0,%ymm9 + addl %r12d,%eax + andl %edi,%ebp + addl -56(%r13),%esi + xorl %ecx,%ebp + vmovdqu %ymm9,512(%rsp) + movl %ebx,%edi + xorl %ecx,%edi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + andl %edi,%eax + addl -52(%r13),%edx + xorl %ebx,%eax + movl %ebp,%edi + xorl %ebx,%edi + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + andl %edi,%esi + addl -32(%r13),%ecx + xorl %ebp,%esi + movl %eax,%edi + xorl %ebp,%edi + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + andl %edi,%edx + vpalignr $8,%ymm7,%ymm0,%ymm8 + vpxor %ymm5,%ymm1,%ymm1 + addl -28(%r13),%ebx + xorl %eax,%edx + vpxor %ymm2,%ymm1,%ymm1 + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + vpxor %ymm8,%ymm1,%ymm1 + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + vpsrld $30,%ymm1,%ymm8 + vpslld $2,%ymm1,%ymm1 + addl %r12d,%ebx + andl %edi,%ecx + addl -24(%r13),%ebp + xorl %esi,%ecx + movl %edx,%edi + xorl %esi,%edi + vpor %ymm8,%ymm1,%ymm1 + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + vpaddd %ymm11,%ymm1,%ymm9 + addl %r12d,%ebp + andl %edi,%ebx + addl -20(%r13),%eax + xorl %edx,%ebx + vmovdqu %ymm9,544(%rsp) + movl %ecx,%edi + xorl %edx,%edi + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + andl %edi,%ebp + addl 0(%r13),%esi + xorl %ecx,%ebp + movl %ebx,%edi + xorl %ecx,%edi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + andl %edi,%eax + addl 4(%r13),%edx + xorl %ebx,%eax + movl %ebp,%edi + xorl %ebx,%edi + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + andl %edi,%esi + vpalignr $8,%ymm0,%ymm1,%ymm8 + vpxor %ymm6,%ymm2,%ymm2 + addl 8(%r13),%ecx + xorl %ebp,%esi + vpxor %ymm3,%ymm2,%ymm2 + movl %eax,%edi + xorl %ebp,%edi + leal (%rcx,%rsi,1),%ecx + vpxor %ymm8,%ymm2,%ymm2 + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + vpsrld $30,%ymm2,%ymm8 + vpslld $2,%ymm2,%ymm2 + addl %r12d,%ecx + andl %edi,%edx + addl 12(%r13),%ebx + xorl %eax,%edx + movl %esi,%edi + xorl %eax,%edi + vpor %ymm8,%ymm2,%ymm2 + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + vpaddd %ymm11,%ymm2,%ymm9 + addl %r12d,%ebx + andl %edi,%ecx + addl 32(%r13),%ebp + xorl %esi,%ecx + vmovdqu %ymm9,576(%rsp) + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + andl %edi,%ebx + addl 36(%r13),%eax + xorl %edx,%ebx + movl %ecx,%edi + xorl %edx,%edi + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + andl %edi,%ebp + addl 40(%r13),%esi + xorl %ecx,%ebp + movl %ebx,%edi + xorl %ecx,%edi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + andl %edi,%eax + vpalignr $8,%ymm1,%ymm2,%ymm8 + vpxor %ymm7,%ymm3,%ymm3 + addl 44(%r13),%edx + xorl %ebx,%eax + vpxor %ymm4,%ymm3,%ymm3 + movl %ebp,%edi + xorl %ebx,%edi + leal (%rdx,%rax,1),%edx + vpxor %ymm8,%ymm3,%ymm3 + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + vpsrld $30,%ymm3,%ymm8 + vpslld $2,%ymm3,%ymm3 + addl %r12d,%edx + andl %edi,%esi + addl 64(%r13),%ecx + xorl %ebp,%esi + movl %eax,%edi + xorl %ebp,%edi + vpor %ymm8,%ymm3,%ymm3 + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + vpaddd %ymm11,%ymm3,%ymm9 + addl %r12d,%ecx + andl %edi,%edx + addl 68(%r13),%ebx + xorl %eax,%edx + vmovdqu %ymm9,608(%rsp) + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + andl %edi,%ecx + addl 72(%r13),%ebp + xorl %esi,%ecx + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + andl %edi,%ebx + addl 76(%r13),%eax + xorl %edx,%ebx + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl 96(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl 100(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl 104(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl 108(%r13),%ebx + leaq 256(%r13),%r13 + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl -128(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl -124(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl -120(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl -116(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl -96(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -92(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl -88(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl -84(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl -64(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl -60(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl -56(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -52(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl -32(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl -28(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl -24(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl -20(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + addl %r12d,%edx + leaq 128(%r9),%r13 + leaq 128(%r9),%rdi + cmpq %r10,%r13 + cmovaeq %r9,%r13 + + + addl 0(%r8),%edx + addl 4(%r8),%esi + addl 8(%r8),%ebp + movl %edx,0(%r8) + addl 12(%r8),%ebx + movl %esi,4(%r8) + movl %edx,%eax + addl 16(%r8),%ecx + movl %ebp,%r12d + movl %ebp,8(%r8) + movl %ebx,%edx + + movl %ebx,12(%r8) + movl %esi,%ebp + movl %ecx,16(%r8) + + movl %ecx,%esi + movl %r12d,%ecx + + + cmpq %r10,%r9 + je .Ldone_avx2 + vmovdqu 64(%r14),%ymm6 + cmpq %r10,%rdi + ja .Last_avx2 + + vmovdqu -64(%rdi),%xmm0 + vmovdqu -48(%rdi),%xmm1 + vmovdqu -32(%rdi),%xmm2 + vmovdqu -16(%rdi),%xmm3 + vinserti128 $1,0(%r13),%ymm0,%ymm0 + vinserti128 $1,16(%r13),%ymm1,%ymm1 + vinserti128 $1,32(%r13),%ymm2,%ymm2 + vinserti128 $1,48(%r13),%ymm3,%ymm3 + jmp .Last_avx2 + +.align 32 +.Last_avx2: + leaq 128+16(%rsp),%r13 + rorxl $2,%ebp,%ebx + andnl %edx,%ebp,%edi + andl %ecx,%ebp + xorl %edi,%ebp + subq $-128,%r9 + addl -128(%r13),%esi + andnl %ecx,%eax,%edi + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + addl %r12d,%esi + xorl %edi,%eax + addl -124(%r13),%edx + andnl %ebx,%esi,%edi + addl %eax,%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + andl %ebp,%esi + addl %r12d,%edx + xorl %edi,%esi + addl -120(%r13),%ecx + andnl %ebp,%edx,%edi + addl %esi,%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + andl %eax,%edx + addl %r12d,%ecx + xorl %edi,%edx + addl -116(%r13),%ebx + andnl %eax,%ecx,%edi + addl %edx,%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + andl %esi,%ecx + addl %r12d,%ebx + xorl %edi,%ecx + addl -96(%r13),%ebp + andnl %esi,%ebx,%edi + addl %ecx,%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + andl %edx,%ebx + addl %r12d,%ebp + xorl %edi,%ebx + addl -92(%r13),%eax + andnl %edx,%ebp,%edi + addl %ebx,%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + andl %ecx,%ebp + addl %r12d,%eax + xorl %edi,%ebp + addl -88(%r13),%esi + andnl %ecx,%eax,%edi + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + addl %r12d,%esi + xorl %edi,%eax + addl -84(%r13),%edx + andnl %ebx,%esi,%edi + addl %eax,%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + andl %ebp,%esi + addl %r12d,%edx + xorl %edi,%esi + addl -64(%r13),%ecx + andnl %ebp,%edx,%edi + addl %esi,%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + andl %eax,%edx + addl %r12d,%ecx + xorl %edi,%edx + addl -60(%r13),%ebx + andnl %eax,%ecx,%edi + addl %edx,%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + andl %esi,%ecx + addl %r12d,%ebx + xorl %edi,%ecx + addl -56(%r13),%ebp + andnl %esi,%ebx,%edi + addl %ecx,%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + andl %edx,%ebx + addl %r12d,%ebp + xorl %edi,%ebx + addl -52(%r13),%eax + andnl %edx,%ebp,%edi + addl %ebx,%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + andl %ecx,%ebp + addl %r12d,%eax + xorl %edi,%ebp + addl -32(%r13),%esi + andnl %ecx,%eax,%edi + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + addl %r12d,%esi + xorl %edi,%eax + addl -28(%r13),%edx + andnl %ebx,%esi,%edi + addl %eax,%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + andl %ebp,%esi + addl %r12d,%edx + xorl %edi,%esi + addl -24(%r13),%ecx + andnl %ebp,%edx,%edi + addl %esi,%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + andl %eax,%edx + addl %r12d,%ecx + xorl %edi,%edx + addl -20(%r13),%ebx + andnl %eax,%ecx,%edi + addl %edx,%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + andl %esi,%ecx + addl %r12d,%ebx + xorl %edi,%ecx + addl 0(%r13),%ebp + andnl %esi,%ebx,%edi + addl %ecx,%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + andl %edx,%ebx + addl %r12d,%ebp + xorl %edi,%ebx + addl 4(%r13),%eax + andnl %edx,%ebp,%edi + addl %ebx,%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + andl %ecx,%ebp + addl %r12d,%eax + xorl %edi,%ebp + addl 8(%r13),%esi + andnl %ecx,%eax,%edi + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + addl %r12d,%esi + xorl %edi,%eax + addl 12(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl 32(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl 36(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl 40(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl 44(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl 64(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + vmovdqu -64(%r14),%ymm11 + vpshufb %ymm6,%ymm0,%ymm0 + addl 68(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl 72(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl 76(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl 96(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl 100(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + vpshufb %ymm6,%ymm1,%ymm1 + vpaddd %ymm11,%ymm0,%ymm8 + addl 104(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl 108(%r13),%edx + leaq 256(%r13),%r13 + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl -128(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -124(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl -120(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + vmovdqu %ymm8,0(%rsp) + vpshufb %ymm6,%ymm2,%ymm2 + vpaddd %ymm11,%ymm1,%ymm9 + addl -116(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl -96(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl -92(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl -88(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -84(%r13),%ebx + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + andl %edi,%ecx + vmovdqu %ymm9,32(%rsp) + vpshufb %ymm6,%ymm3,%ymm3 + vpaddd %ymm11,%ymm2,%ymm6 + addl -64(%r13),%ebp + xorl %esi,%ecx + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + andl %edi,%ebx + addl -60(%r13),%eax + xorl %edx,%ebx + movl %ecx,%edi + xorl %edx,%edi + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + andl %edi,%ebp + addl -56(%r13),%esi + xorl %ecx,%ebp + movl %ebx,%edi + xorl %ecx,%edi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + andl %edi,%eax + addl -52(%r13),%edx + xorl %ebx,%eax + movl %ebp,%edi + xorl %ebx,%edi + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + andl %edi,%esi + addl -32(%r13),%ecx + xorl %ebp,%esi + movl %eax,%edi + xorl %ebp,%edi + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + andl %edi,%edx + jmp .Lalign32_3 +.align 32 +.Lalign32_3: + vmovdqu %ymm6,64(%rsp) + vpaddd %ymm11,%ymm3,%ymm7 + addl -28(%r13),%ebx + xorl %eax,%edx + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + andl %edi,%ecx + addl -24(%r13),%ebp + xorl %esi,%ecx + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + andl %edi,%ebx + addl -20(%r13),%eax + xorl %edx,%ebx + movl %ecx,%edi + xorl %edx,%edi + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + andl %edi,%ebp + addl 0(%r13),%esi + xorl %ecx,%ebp + movl %ebx,%edi + xorl %ecx,%edi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + andl %edi,%eax + addl 4(%r13),%edx + xorl %ebx,%eax + movl %ebp,%edi + xorl %ebx,%edi + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + andl %edi,%esi + vmovdqu %ymm7,96(%rsp) + addl 8(%r13),%ecx + xorl %ebp,%esi + movl %eax,%edi + xorl %ebp,%edi + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + andl %edi,%edx + addl 12(%r13),%ebx + xorl %eax,%edx + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + andl %edi,%ecx + addl 32(%r13),%ebp + xorl %esi,%ecx + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + andl %edi,%ebx + addl 36(%r13),%eax + xorl %edx,%ebx + movl %ecx,%edi + xorl %edx,%edi + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + andl %edi,%ebp + addl 40(%r13),%esi + xorl %ecx,%ebp + movl %ebx,%edi + xorl %ecx,%edi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + andl %edi,%eax + vpalignr $8,%ymm0,%ymm1,%ymm4 + addl 44(%r13),%edx + xorl %ebx,%eax + movl %ebp,%edi + xorl %ebx,%edi + vpsrldq $4,%ymm3,%ymm8 + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + vpxor %ymm0,%ymm4,%ymm4 + vpxor %ymm2,%ymm8,%ymm8 + xorl %ebp,%esi + addl %r12d,%edx + vpxor %ymm8,%ymm4,%ymm4 + andl %edi,%esi + addl 64(%r13),%ecx + xorl %ebp,%esi + movl %eax,%edi + vpsrld $31,%ymm4,%ymm8 + xorl %ebp,%edi + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + vpslldq $12,%ymm4,%ymm10 + vpaddd %ymm4,%ymm4,%ymm4 + rorxl $2,%edx,%esi + xorl %eax,%edx + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm4,%ymm4 + addl %r12d,%ecx + andl %edi,%edx + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm4,%ymm4 + addl 68(%r13),%ebx + xorl %eax,%edx + vpxor %ymm10,%ymm4,%ymm4 + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + vpaddd %ymm11,%ymm4,%ymm9 + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + vmovdqu %ymm9,128(%rsp) + addl %r12d,%ebx + andl %edi,%ecx + addl 72(%r13),%ebp + xorl %esi,%ecx + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + andl %edi,%ebx + addl 76(%r13),%eax + xorl %edx,%ebx + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + vpalignr $8,%ymm1,%ymm2,%ymm5 + addl 96(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + vpsrldq $4,%ymm4,%ymm8 + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm3,%ymm8,%ymm8 + addl 100(%r13),%edx + leal (%rdx,%rax,1),%edx + vpxor %ymm8,%ymm5,%ymm5 + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + vpsrld $31,%ymm5,%ymm8 + vmovdqu -32(%r14),%ymm11 + xorl %ebx,%esi + addl 104(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + vpslldq $12,%ymm5,%ymm10 + vpaddd %ymm5,%ymm5,%ymm5 + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm5,%ymm5 + xorl %eax,%edx + addl %r12d,%ecx + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm5,%ymm5 + xorl %ebp,%edx + addl 108(%r13),%ebx + leaq 256(%r13),%r13 + vpxor %ymm10,%ymm5,%ymm5 + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + vpaddd %ymm11,%ymm5,%ymm9 + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + vmovdqu %ymm9,160(%rsp) + addl -128(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + vpalignr $8,%ymm2,%ymm3,%ymm6 + addl -124(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + vpsrldq $4,%ymm5,%ymm8 + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + vpxor %ymm2,%ymm6,%ymm6 + vpxor %ymm4,%ymm8,%ymm8 + addl -120(%r13),%esi + leal (%rsi,%rbp,1),%esi + vpxor %ymm8,%ymm6,%ymm6 + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + vpsrld $31,%ymm6,%ymm8 + xorl %ecx,%eax + addl -116(%r13),%edx + leal (%rdx,%rax,1),%edx + vpslldq $12,%ymm6,%ymm10 + vpaddd %ymm6,%ymm6,%ymm6 + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm6,%ymm6 + xorl %ebp,%esi + addl %r12d,%edx + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm6,%ymm6 + xorl %ebx,%esi + addl -96(%r13),%ecx + vpxor %ymm10,%ymm6,%ymm6 + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + vpaddd %ymm11,%ymm6,%ymm9 + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + vmovdqu %ymm9,192(%rsp) + addl -92(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + vpalignr $8,%ymm3,%ymm4,%ymm7 + addl -88(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + vpsrldq $4,%ymm6,%ymm8 + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + vpxor %ymm3,%ymm7,%ymm7 + vpxor %ymm5,%ymm8,%ymm8 + addl -84(%r13),%eax + leal (%rax,%rbx,1),%eax + vpxor %ymm8,%ymm7,%ymm7 + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + vpsrld $31,%ymm7,%ymm8 + xorl %edx,%ebp + addl -64(%r13),%esi + leal (%rsi,%rbp,1),%esi + vpslldq $12,%ymm7,%ymm10 + vpaddd %ymm7,%ymm7,%ymm7 + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm7,%ymm7 + xorl %ebx,%eax + addl %r12d,%esi + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm7,%ymm7 + xorl %ecx,%eax + addl -60(%r13),%edx + vpxor %ymm10,%ymm7,%ymm7 + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + vpaddd %ymm11,%ymm7,%ymm9 + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + vmovdqu %ymm9,224(%rsp) + addl -56(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -52(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl -32(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl -28(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl -24(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl -20(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + addl %r12d,%edx + leaq 128(%rsp),%r13 + + + addl 0(%r8),%edx + addl 4(%r8),%esi + addl 8(%r8),%ebp + movl %edx,0(%r8) + addl 12(%r8),%ebx + movl %esi,4(%r8) + movl %edx,%eax + addl 16(%r8),%ecx + movl %ebp,%r12d + movl %ebp,8(%r8) + movl %ebx,%edx + + movl %ebx,12(%r8) + movl %esi,%ebp + movl %ecx,16(%r8) + + movl %ecx,%esi + movl %r12d,%ecx + + + cmpq %r10,%r9 + jbe .Loop_avx2 + +.Ldone_avx2: + vzeroupper + movq -40(%r11),%r14 +.cfi_restore %r14 + movq -32(%r11),%r13 +.cfi_restore %r13 + movq -24(%r11),%r12 +.cfi_restore %r12 + movq -16(%r11),%rbp +.cfi_restore %rbp + movq -8(%r11),%rbx +.cfi_restore %rbx + leaq (%r11),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_avx2: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha1_block_data_order_avx2,.-sha1_block_data_order_avx2 +.align 64 +K_XX_XX: +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 +.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 64 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha256-mb-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha256-mb-x86_64.s new file mode 100644 index 0000000..59cf9c9 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha256-mb-x86_64.s @@ -0,0 +1,7948 @@ +.text + + + +.globl sha256_multi_block +.type sha256_multi_block,@function +.align 32 +sha256_multi_block: +.cfi_startproc + movq OPENSSL_ia32cap_P+4(%rip),%rcx + btq $61,%rcx + jc _shaext_shortcut + testl $268435456,%ecx + jnz _avx_shortcut + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + subq $288,%rsp + andq $-256,%rsp + movq %rax,272(%rsp) +.cfi_escape 0x0f,0x06,0x77,0x90,0x02,0x06,0x23,0x08 +.Lbody: + leaq K256+128(%rip),%rbp + leaq 256(%rsp),%rbx + leaq 128(%rdi),%rdi + +.Loop_grande: + movl %edx,280(%rsp) + xorl %edx,%edx + movq 0(%rsi),%r8 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rbp,%r8 + movq 16(%rsi),%r9 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rbp,%r9 + movq 32(%rsi),%r10 + movl 40(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,8(%rbx) + cmovleq %rbp,%r10 + movq 48(%rsi),%r11 + movl 56(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,12(%rbx) + cmovleq %rbp,%r11 + testl %edx,%edx + jz .Ldone + + movdqu 0-128(%rdi),%xmm8 + leaq 128(%rsp),%rax + movdqu 32-128(%rdi),%xmm9 + movdqu 64-128(%rdi),%xmm10 + movdqu 96-128(%rdi),%xmm11 + movdqu 128-128(%rdi),%xmm12 + movdqu 160-128(%rdi),%xmm13 + movdqu 192-128(%rdi),%xmm14 + movdqu 224-128(%rdi),%xmm15 + movdqu .Lpbswap(%rip),%xmm6 + jmp .Loop + +.align 32 +.Loop: + movdqa %xmm10,%xmm4 + pxor %xmm9,%xmm4 + movd 0(%r8),%xmm5 + movd 0(%r9),%xmm0 + movd 0(%r10),%xmm1 + movd 0(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm12,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm12,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm12,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,0-128(%rax) + paddd %xmm15,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -128(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm12,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm14,%xmm0 + pand %xmm13,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm8,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm9,%xmm3 + movdqa %xmm8,%xmm7 + pslld $10,%xmm2 + pxor %xmm8,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm9,%xmm15 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm15 + paddd %xmm5,%xmm11 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm15 + paddd %xmm7,%xmm15 + movd 4(%r8),%xmm5 + movd 4(%r9),%xmm0 + movd 4(%r10),%xmm1 + movd 4(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm11,%xmm7 + + movdqa %xmm11,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm11,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,16-128(%rax) + paddd %xmm14,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -96(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm11,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm13,%xmm0 + pand %xmm12,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm15,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm8,%xmm4 + movdqa %xmm15,%xmm7 + pslld $10,%xmm2 + pxor %xmm15,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm8,%xmm14 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm14 + paddd %xmm5,%xmm10 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm14 + paddd %xmm7,%xmm14 + movd 8(%r8),%xmm5 + movd 8(%r9),%xmm0 + movd 8(%r10),%xmm1 + movd 8(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm10,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm10,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm10,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,32-128(%rax) + paddd %xmm13,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm10,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm12,%xmm0 + pand %xmm11,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm14,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm15,%xmm3 + movdqa %xmm14,%xmm7 + pslld $10,%xmm2 + pxor %xmm14,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm15,%xmm13 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm13 + paddd %xmm5,%xmm9 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm13 + paddd %xmm7,%xmm13 + movd 12(%r8),%xmm5 + movd 12(%r9),%xmm0 + movd 12(%r10),%xmm1 + movd 12(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm9,%xmm7 + + movdqa %xmm9,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm9,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,48-128(%rax) + paddd %xmm12,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -32(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm9,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm11,%xmm0 + pand %xmm10,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm13,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm14,%xmm4 + movdqa %xmm13,%xmm7 + pslld $10,%xmm2 + pxor %xmm13,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm14,%xmm12 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm12 + paddd %xmm5,%xmm8 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm12 + paddd %xmm7,%xmm12 + movd 16(%r8),%xmm5 + movd 16(%r9),%xmm0 + movd 16(%r10),%xmm1 + movd 16(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm8,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm8,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm8,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,64-128(%rax) + paddd %xmm11,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 0(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm8,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm10,%xmm0 + pand %xmm9,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm12,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm13,%xmm3 + movdqa %xmm12,%xmm7 + pslld $10,%xmm2 + pxor %xmm12,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm13,%xmm11 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm11 + paddd %xmm5,%xmm15 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm11 + paddd %xmm7,%xmm11 + movd 20(%r8),%xmm5 + movd 20(%r9),%xmm0 + movd 20(%r10),%xmm1 + movd 20(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm15,%xmm7 + + movdqa %xmm15,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm15,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,80-128(%rax) + paddd %xmm10,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 32(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm15,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm9,%xmm0 + pand %xmm8,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm11,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm12,%xmm4 + movdqa %xmm11,%xmm7 + pslld $10,%xmm2 + pxor %xmm11,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm12,%xmm10 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm10 + paddd %xmm5,%xmm14 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm10 + paddd %xmm7,%xmm10 + movd 24(%r8),%xmm5 + movd 24(%r9),%xmm0 + movd 24(%r10),%xmm1 + movd 24(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm14,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm14,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm14,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,96-128(%rax) + paddd %xmm9,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm14,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm8,%xmm0 + pand %xmm15,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm10,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm11,%xmm3 + movdqa %xmm10,%xmm7 + pslld $10,%xmm2 + pxor %xmm10,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm11,%xmm9 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm9 + paddd %xmm5,%xmm13 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm9 + paddd %xmm7,%xmm9 + movd 28(%r8),%xmm5 + movd 28(%r9),%xmm0 + movd 28(%r10),%xmm1 + movd 28(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm13,%xmm7 + + movdqa %xmm13,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm13,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,112-128(%rax) + paddd %xmm8,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 96(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm13,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm15,%xmm0 + pand %xmm14,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm9,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm10,%xmm4 + movdqa %xmm9,%xmm7 + pslld $10,%xmm2 + pxor %xmm9,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm10,%xmm8 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm8 + paddd %xmm5,%xmm12 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm8 + paddd %xmm7,%xmm8 + leaq 256(%rbp),%rbp + movd 32(%r8),%xmm5 + movd 32(%r9),%xmm0 + movd 32(%r10),%xmm1 + movd 32(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm12,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm12,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm12,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,128-128(%rax) + paddd %xmm15,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -128(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm12,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm14,%xmm0 + pand %xmm13,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm8,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm9,%xmm3 + movdqa %xmm8,%xmm7 + pslld $10,%xmm2 + pxor %xmm8,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm9,%xmm15 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm15 + paddd %xmm5,%xmm11 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm15 + paddd %xmm7,%xmm15 + movd 36(%r8),%xmm5 + movd 36(%r9),%xmm0 + movd 36(%r10),%xmm1 + movd 36(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm11,%xmm7 + + movdqa %xmm11,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm11,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,144-128(%rax) + paddd %xmm14,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -96(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm11,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm13,%xmm0 + pand %xmm12,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm15,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm8,%xmm4 + movdqa %xmm15,%xmm7 + pslld $10,%xmm2 + pxor %xmm15,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm8,%xmm14 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm14 + paddd %xmm5,%xmm10 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm14 + paddd %xmm7,%xmm14 + movd 40(%r8),%xmm5 + movd 40(%r9),%xmm0 + movd 40(%r10),%xmm1 + movd 40(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm10,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm10,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm10,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,160-128(%rax) + paddd %xmm13,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm10,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm12,%xmm0 + pand %xmm11,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm14,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm15,%xmm3 + movdqa %xmm14,%xmm7 + pslld $10,%xmm2 + pxor %xmm14,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm15,%xmm13 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm13 + paddd %xmm5,%xmm9 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm13 + paddd %xmm7,%xmm13 + movd 44(%r8),%xmm5 + movd 44(%r9),%xmm0 + movd 44(%r10),%xmm1 + movd 44(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm9,%xmm7 + + movdqa %xmm9,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm9,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,176-128(%rax) + paddd %xmm12,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -32(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm9,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm11,%xmm0 + pand %xmm10,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm13,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm14,%xmm4 + movdqa %xmm13,%xmm7 + pslld $10,%xmm2 + pxor %xmm13,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm14,%xmm12 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm12 + paddd %xmm5,%xmm8 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm12 + paddd %xmm7,%xmm12 + movd 48(%r8),%xmm5 + movd 48(%r9),%xmm0 + movd 48(%r10),%xmm1 + movd 48(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm8,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm8,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm8,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,192-128(%rax) + paddd %xmm11,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 0(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm8,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm10,%xmm0 + pand %xmm9,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm12,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm13,%xmm3 + movdqa %xmm12,%xmm7 + pslld $10,%xmm2 + pxor %xmm12,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm13,%xmm11 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm11 + paddd %xmm5,%xmm15 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm11 + paddd %xmm7,%xmm11 + movd 52(%r8),%xmm5 + movd 52(%r9),%xmm0 + movd 52(%r10),%xmm1 + movd 52(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm15,%xmm7 + + movdqa %xmm15,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm15,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,208-128(%rax) + paddd %xmm10,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 32(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm15,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm9,%xmm0 + pand %xmm8,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm11,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm12,%xmm4 + movdqa %xmm11,%xmm7 + pslld $10,%xmm2 + pxor %xmm11,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm12,%xmm10 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm10 + paddd %xmm5,%xmm14 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm10 + paddd %xmm7,%xmm10 + movd 56(%r8),%xmm5 + movd 56(%r9),%xmm0 + movd 56(%r10),%xmm1 + movd 56(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm14,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm14,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm14,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,224-128(%rax) + paddd %xmm9,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm14,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm8,%xmm0 + pand %xmm15,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm10,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm11,%xmm3 + movdqa %xmm10,%xmm7 + pslld $10,%xmm2 + pxor %xmm10,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm11,%xmm9 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm9 + paddd %xmm5,%xmm13 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm9 + paddd %xmm7,%xmm9 + movd 60(%r8),%xmm5 + leaq 64(%r8),%r8 + movd 60(%r9),%xmm0 + leaq 64(%r9),%r9 + movd 60(%r10),%xmm1 + leaq 64(%r10),%r10 + movd 60(%r11),%xmm2 + leaq 64(%r11),%r11 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm13,%xmm7 + + movdqa %xmm13,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm13,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,240-128(%rax) + paddd %xmm8,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 96(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm13,%xmm0 + prefetcht0 63(%r8) + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm15,%xmm0 + pand %xmm14,%xmm4 + pxor %xmm1,%xmm7 + + prefetcht0 63(%r9) + movdqa %xmm9,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm10,%xmm4 + movdqa %xmm9,%xmm7 + pslld $10,%xmm2 + pxor %xmm9,%xmm4 + + prefetcht0 63(%r10) + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + prefetcht0 63(%r11) + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm10,%xmm8 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm8 + paddd %xmm5,%xmm12 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm8 + paddd %xmm7,%xmm8 + leaq 256(%rbp),%rbp + movdqu 0-128(%rax),%xmm5 + movl $3,%ecx + jmp .Loop_16_xx +.align 32 +.Loop_16_xx: + movdqa 16-128(%rax),%xmm6 + paddd 144-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 224-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm12,%xmm7 + + movdqa %xmm12,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm12,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,0-128(%rax) + paddd %xmm15,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -128(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm12,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm14,%xmm0 + pand %xmm13,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm8,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm9,%xmm3 + movdqa %xmm8,%xmm7 + pslld $10,%xmm2 + pxor %xmm8,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm9,%xmm15 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm15 + paddd %xmm5,%xmm11 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm15 + paddd %xmm7,%xmm15 + movdqa 32-128(%rax),%xmm5 + paddd 160-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 240-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm11,%xmm7 + + movdqa %xmm11,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm11,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,16-128(%rax) + paddd %xmm14,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -96(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm11,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm13,%xmm0 + pand %xmm12,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm15,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm8,%xmm4 + movdqa %xmm15,%xmm7 + pslld $10,%xmm2 + pxor %xmm15,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm8,%xmm14 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm14 + paddd %xmm6,%xmm10 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm14 + paddd %xmm7,%xmm14 + movdqa 48-128(%rax),%xmm6 + paddd 176-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 0-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm10,%xmm7 + + movdqa %xmm10,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm10,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,32-128(%rax) + paddd %xmm13,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm10,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm12,%xmm0 + pand %xmm11,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm14,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm15,%xmm3 + movdqa %xmm14,%xmm7 + pslld $10,%xmm2 + pxor %xmm14,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm15,%xmm13 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm13 + paddd %xmm5,%xmm9 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm13 + paddd %xmm7,%xmm13 + movdqa 64-128(%rax),%xmm5 + paddd 192-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 16-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm9,%xmm7 + + movdqa %xmm9,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm9,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,48-128(%rax) + paddd %xmm12,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -32(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm9,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm11,%xmm0 + pand %xmm10,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm13,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm14,%xmm4 + movdqa %xmm13,%xmm7 + pslld $10,%xmm2 + pxor %xmm13,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm14,%xmm12 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm12 + paddd %xmm6,%xmm8 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm12 + paddd %xmm7,%xmm12 + movdqa 80-128(%rax),%xmm6 + paddd 208-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 32-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm8,%xmm7 + + movdqa %xmm8,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm8,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,64-128(%rax) + paddd %xmm11,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 0(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm8,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm10,%xmm0 + pand %xmm9,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm12,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm13,%xmm3 + movdqa %xmm12,%xmm7 + pslld $10,%xmm2 + pxor %xmm12,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm13,%xmm11 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm11 + paddd %xmm5,%xmm15 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm11 + paddd %xmm7,%xmm11 + movdqa 96-128(%rax),%xmm5 + paddd 224-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 48-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm15,%xmm7 + + movdqa %xmm15,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm15,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,80-128(%rax) + paddd %xmm10,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 32(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm15,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm9,%xmm0 + pand %xmm8,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm11,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm12,%xmm4 + movdqa %xmm11,%xmm7 + pslld $10,%xmm2 + pxor %xmm11,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm12,%xmm10 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm10 + paddd %xmm6,%xmm14 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm10 + paddd %xmm7,%xmm10 + movdqa 112-128(%rax),%xmm6 + paddd 240-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 64-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm14,%xmm7 + + movdqa %xmm14,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm14,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,96-128(%rax) + paddd %xmm9,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm14,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm8,%xmm0 + pand %xmm15,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm10,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm11,%xmm3 + movdqa %xmm10,%xmm7 + pslld $10,%xmm2 + pxor %xmm10,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm11,%xmm9 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm9 + paddd %xmm5,%xmm13 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm9 + paddd %xmm7,%xmm9 + movdqa 128-128(%rax),%xmm5 + paddd 0-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 80-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm13,%xmm7 + + movdqa %xmm13,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm13,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,112-128(%rax) + paddd %xmm8,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 96(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm13,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm15,%xmm0 + pand %xmm14,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm9,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm10,%xmm4 + movdqa %xmm9,%xmm7 + pslld $10,%xmm2 + pxor %xmm9,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm10,%xmm8 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm8 + paddd %xmm6,%xmm12 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm8 + paddd %xmm7,%xmm8 + leaq 256(%rbp),%rbp + movdqa 144-128(%rax),%xmm6 + paddd 16-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 96-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm12,%xmm7 + + movdqa %xmm12,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm12,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,128-128(%rax) + paddd %xmm15,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -128(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm12,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm14,%xmm0 + pand %xmm13,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm8,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm9,%xmm3 + movdqa %xmm8,%xmm7 + pslld $10,%xmm2 + pxor %xmm8,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm9,%xmm15 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm15 + paddd %xmm5,%xmm11 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm15 + paddd %xmm7,%xmm15 + movdqa 160-128(%rax),%xmm5 + paddd 32-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 112-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm11,%xmm7 + + movdqa %xmm11,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm11,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,144-128(%rax) + paddd %xmm14,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -96(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm11,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm13,%xmm0 + pand %xmm12,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm15,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm8,%xmm4 + movdqa %xmm15,%xmm7 + pslld $10,%xmm2 + pxor %xmm15,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm8,%xmm14 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm14 + paddd %xmm6,%xmm10 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm14 + paddd %xmm7,%xmm14 + movdqa 176-128(%rax),%xmm6 + paddd 48-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 128-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm10,%xmm7 + + movdqa %xmm10,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm10,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,160-128(%rax) + paddd %xmm13,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm10,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm12,%xmm0 + pand %xmm11,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm14,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm15,%xmm3 + movdqa %xmm14,%xmm7 + pslld $10,%xmm2 + pxor %xmm14,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm15,%xmm13 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm13 + paddd %xmm5,%xmm9 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm13 + paddd %xmm7,%xmm13 + movdqa 192-128(%rax),%xmm5 + paddd 64-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 144-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm9,%xmm7 + + movdqa %xmm9,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm9,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,176-128(%rax) + paddd %xmm12,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -32(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm9,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm11,%xmm0 + pand %xmm10,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm13,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm14,%xmm4 + movdqa %xmm13,%xmm7 + pslld $10,%xmm2 + pxor %xmm13,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm14,%xmm12 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm12 + paddd %xmm6,%xmm8 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm12 + paddd %xmm7,%xmm12 + movdqa 208-128(%rax),%xmm6 + paddd 80-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 160-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm8,%xmm7 + + movdqa %xmm8,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm8,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,192-128(%rax) + paddd %xmm11,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 0(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm8,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm10,%xmm0 + pand %xmm9,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm12,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm13,%xmm3 + movdqa %xmm12,%xmm7 + pslld $10,%xmm2 + pxor %xmm12,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm13,%xmm11 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm11 + paddd %xmm5,%xmm15 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm11 + paddd %xmm7,%xmm11 + movdqa 224-128(%rax),%xmm5 + paddd 96-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 176-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm15,%xmm7 + + movdqa %xmm15,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm15,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,208-128(%rax) + paddd %xmm10,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 32(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm15,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm9,%xmm0 + pand %xmm8,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm11,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm12,%xmm4 + movdqa %xmm11,%xmm7 + pslld $10,%xmm2 + pxor %xmm11,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm12,%xmm10 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm10 + paddd %xmm6,%xmm14 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm10 + paddd %xmm7,%xmm10 + movdqa 240-128(%rax),%xmm6 + paddd 112-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 192-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm14,%xmm7 + + movdqa %xmm14,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm14,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,224-128(%rax) + paddd %xmm9,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm14,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm8,%xmm0 + pand %xmm15,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm10,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm11,%xmm3 + movdqa %xmm10,%xmm7 + pslld $10,%xmm2 + pxor %xmm10,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm11,%xmm9 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm9 + paddd %xmm5,%xmm13 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm9 + paddd %xmm7,%xmm9 + movdqa 0-128(%rax),%xmm5 + paddd 128-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 208-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm13,%xmm7 + + movdqa %xmm13,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm13,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,240-128(%rax) + paddd %xmm8,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 96(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm13,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm15,%xmm0 + pand %xmm14,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm9,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm10,%xmm4 + movdqa %xmm9,%xmm7 + pslld $10,%xmm2 + pxor %xmm9,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm10,%xmm8 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm8 + paddd %xmm6,%xmm12 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm8 + paddd %xmm7,%xmm8 + leaq 256(%rbp),%rbp + decl %ecx + jnz .Loop_16_xx + + movl $1,%ecx + leaq K256+128(%rip),%rbp + + movdqa (%rbx),%xmm7 + cmpl 0(%rbx),%ecx + pxor %xmm0,%xmm0 + cmovgeq %rbp,%r8 + cmpl 4(%rbx),%ecx + movdqa %xmm7,%xmm6 + cmovgeq %rbp,%r9 + cmpl 8(%rbx),%ecx + pcmpgtd %xmm0,%xmm6 + cmovgeq %rbp,%r10 + cmpl 12(%rbx),%ecx + paddd %xmm6,%xmm7 + cmovgeq %rbp,%r11 + + movdqu 0-128(%rdi),%xmm0 + pand %xmm6,%xmm8 + movdqu 32-128(%rdi),%xmm1 + pand %xmm6,%xmm9 + movdqu 64-128(%rdi),%xmm2 + pand %xmm6,%xmm10 + movdqu 96-128(%rdi),%xmm5 + pand %xmm6,%xmm11 + paddd %xmm0,%xmm8 + movdqu 128-128(%rdi),%xmm0 + pand %xmm6,%xmm12 + paddd %xmm1,%xmm9 + movdqu 160-128(%rdi),%xmm1 + pand %xmm6,%xmm13 + paddd %xmm2,%xmm10 + movdqu 192-128(%rdi),%xmm2 + pand %xmm6,%xmm14 + paddd %xmm5,%xmm11 + movdqu 224-128(%rdi),%xmm5 + pand %xmm6,%xmm15 + paddd %xmm0,%xmm12 + paddd %xmm1,%xmm13 + movdqu %xmm8,0-128(%rdi) + paddd %xmm2,%xmm14 + movdqu %xmm9,32-128(%rdi) + paddd %xmm5,%xmm15 + movdqu %xmm10,64-128(%rdi) + movdqu %xmm11,96-128(%rdi) + movdqu %xmm12,128-128(%rdi) + movdqu %xmm13,160-128(%rdi) + movdqu %xmm14,192-128(%rdi) + movdqu %xmm15,224-128(%rdi) + + movdqa %xmm7,(%rbx) + movdqa .Lpbswap(%rip),%xmm6 + decl %edx + jnz .Loop + + movl 280(%rsp),%edx + leaq 16(%rdi),%rdi + leaq 64(%rsi),%rsi + decl %edx + jnz .Loop_grande + +.Ldone: + movq 272(%rsp),%rax +.cfi_def_cfa %rax,8 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha256_multi_block,.-sha256_multi_block +.type sha256_multi_block_shaext,@function +.align 32 +sha256_multi_block_shaext: +.cfi_startproc +_shaext_shortcut: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + subq $288,%rsp + shll $1,%edx + andq $-256,%rsp + leaq 128(%rdi),%rdi + movq %rax,272(%rsp) +.Lbody_shaext: + leaq 256(%rsp),%rbx + leaq K256_shaext+128(%rip),%rbp + +.Loop_grande_shaext: + movl %edx,280(%rsp) + xorl %edx,%edx + movq 0(%rsi),%r8 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rsp,%r8 + movq 16(%rsi),%r9 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rsp,%r9 + testl %edx,%edx + jz .Ldone_shaext + + movq 0-128(%rdi),%xmm12 + movq 32-128(%rdi),%xmm4 + movq 64-128(%rdi),%xmm13 + movq 96-128(%rdi),%xmm5 + movq 128-128(%rdi),%xmm8 + movq 160-128(%rdi),%xmm9 + movq 192-128(%rdi),%xmm10 + movq 224-128(%rdi),%xmm11 + + punpckldq %xmm4,%xmm12 + punpckldq %xmm5,%xmm13 + punpckldq %xmm9,%xmm8 + punpckldq %xmm11,%xmm10 + movdqa K256_shaext-16(%rip),%xmm3 + + movdqa %xmm12,%xmm14 + movdqa %xmm13,%xmm15 + punpcklqdq %xmm8,%xmm12 + punpcklqdq %xmm10,%xmm13 + punpckhqdq %xmm8,%xmm14 + punpckhqdq %xmm10,%xmm15 + + pshufd $27,%xmm12,%xmm12 + pshufd $27,%xmm13,%xmm13 + pshufd $27,%xmm14,%xmm14 + pshufd $27,%xmm15,%xmm15 + jmp .Loop_shaext + +.align 32 +.Loop_shaext: + movdqu 0(%r8),%xmm4 + movdqu 0(%r9),%xmm8 + movdqu 16(%r8),%xmm5 + movdqu 16(%r9),%xmm9 + movdqu 32(%r8),%xmm6 +.byte 102,15,56,0,227 + movdqu 32(%r9),%xmm10 +.byte 102,68,15,56,0,195 + movdqu 48(%r8),%xmm7 + leaq 64(%r8),%r8 + movdqu 48(%r9),%xmm11 + leaq 64(%r9),%r9 + + movdqa 0-128(%rbp),%xmm0 +.byte 102,15,56,0,235 + paddd %xmm4,%xmm0 + pxor %xmm12,%xmm4 + movdqa %xmm0,%xmm1 + movdqa 0-128(%rbp),%xmm2 +.byte 102,68,15,56,0,203 + paddd %xmm8,%xmm2 + movdqa %xmm13,80(%rsp) +.byte 69,15,56,203,236 + pxor %xmm14,%xmm8 + movdqa %xmm2,%xmm0 + movdqa %xmm15,112(%rsp) +.byte 69,15,56,203,254 + pshufd $0x0e,%xmm1,%xmm0 + pxor %xmm12,%xmm4 + movdqa %xmm12,64(%rsp) +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + pxor %xmm14,%xmm8 + movdqa %xmm14,96(%rsp) + movdqa 16-128(%rbp),%xmm1 + paddd %xmm5,%xmm1 +.byte 102,15,56,0,243 +.byte 69,15,56,203,247 + + movdqa %xmm1,%xmm0 + movdqa 16-128(%rbp),%xmm2 + paddd %xmm9,%xmm2 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + prefetcht0 127(%r8) +.byte 102,15,56,0,251 +.byte 102,68,15,56,0,211 + prefetcht0 127(%r9) +.byte 69,15,56,203,254 + pshufd $0x0e,%xmm1,%xmm0 +.byte 102,68,15,56,0,219 +.byte 15,56,204,229 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 32-128(%rbp),%xmm1 + paddd %xmm6,%xmm1 +.byte 69,15,56,203,247 + + movdqa %xmm1,%xmm0 + movdqa 32-128(%rbp),%xmm2 + paddd %xmm10,%xmm2 +.byte 69,15,56,203,236 +.byte 69,15,56,204,193 + movdqa %xmm2,%xmm0 + movdqa %xmm7,%xmm3 +.byte 69,15,56,203,254 + pshufd $0x0e,%xmm1,%xmm0 +.byte 102,15,58,15,222,4 + paddd %xmm3,%xmm4 + movdqa %xmm11,%xmm3 +.byte 102,65,15,58,15,218,4 +.byte 15,56,204,238 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 48-128(%rbp),%xmm1 + paddd %xmm7,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,202 + + movdqa %xmm1,%xmm0 + movdqa 48-128(%rbp),%xmm2 + paddd %xmm3,%xmm8 + paddd %xmm11,%xmm2 +.byte 15,56,205,231 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm4,%xmm3 +.byte 102,15,58,15,223,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,195 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm5 + movdqa %xmm8,%xmm3 +.byte 102,65,15,58,15,219,4 +.byte 15,56,204,247 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 64-128(%rbp),%xmm1 + paddd %xmm4,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,211 + movdqa %xmm1,%xmm0 + movdqa 64-128(%rbp),%xmm2 + paddd %xmm3,%xmm9 + paddd %xmm8,%xmm2 +.byte 15,56,205,236 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm5,%xmm3 +.byte 102,15,58,15,220,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,200 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm6 + movdqa %xmm9,%xmm3 +.byte 102,65,15,58,15,216,4 +.byte 15,56,204,252 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 80-128(%rbp),%xmm1 + paddd %xmm5,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,216 + movdqa %xmm1,%xmm0 + movdqa 80-128(%rbp),%xmm2 + paddd %xmm3,%xmm10 + paddd %xmm9,%xmm2 +.byte 15,56,205,245 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm6,%xmm3 +.byte 102,15,58,15,221,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,209 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm7 + movdqa %xmm10,%xmm3 +.byte 102,65,15,58,15,217,4 +.byte 15,56,204,229 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 96-128(%rbp),%xmm1 + paddd %xmm6,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,193 + movdqa %xmm1,%xmm0 + movdqa 96-128(%rbp),%xmm2 + paddd %xmm3,%xmm11 + paddd %xmm10,%xmm2 +.byte 15,56,205,254 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm7,%xmm3 +.byte 102,15,58,15,222,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,218 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm4 + movdqa %xmm11,%xmm3 +.byte 102,65,15,58,15,218,4 +.byte 15,56,204,238 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 112-128(%rbp),%xmm1 + paddd %xmm7,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,202 + movdqa %xmm1,%xmm0 + movdqa 112-128(%rbp),%xmm2 + paddd %xmm3,%xmm8 + paddd %xmm11,%xmm2 +.byte 15,56,205,231 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm4,%xmm3 +.byte 102,15,58,15,223,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,195 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm5 + movdqa %xmm8,%xmm3 +.byte 102,65,15,58,15,219,4 +.byte 15,56,204,247 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 128-128(%rbp),%xmm1 + paddd %xmm4,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,211 + movdqa %xmm1,%xmm0 + movdqa 128-128(%rbp),%xmm2 + paddd %xmm3,%xmm9 + paddd %xmm8,%xmm2 +.byte 15,56,205,236 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm5,%xmm3 +.byte 102,15,58,15,220,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,200 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm6 + movdqa %xmm9,%xmm3 +.byte 102,65,15,58,15,216,4 +.byte 15,56,204,252 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 144-128(%rbp),%xmm1 + paddd %xmm5,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,216 + movdqa %xmm1,%xmm0 + movdqa 144-128(%rbp),%xmm2 + paddd %xmm3,%xmm10 + paddd %xmm9,%xmm2 +.byte 15,56,205,245 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm6,%xmm3 +.byte 102,15,58,15,221,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,209 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm7 + movdqa %xmm10,%xmm3 +.byte 102,65,15,58,15,217,4 +.byte 15,56,204,229 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 160-128(%rbp),%xmm1 + paddd %xmm6,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,193 + movdqa %xmm1,%xmm0 + movdqa 160-128(%rbp),%xmm2 + paddd %xmm3,%xmm11 + paddd %xmm10,%xmm2 +.byte 15,56,205,254 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm7,%xmm3 +.byte 102,15,58,15,222,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,218 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm4 + movdqa %xmm11,%xmm3 +.byte 102,65,15,58,15,218,4 +.byte 15,56,204,238 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 176-128(%rbp),%xmm1 + paddd %xmm7,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,202 + movdqa %xmm1,%xmm0 + movdqa 176-128(%rbp),%xmm2 + paddd %xmm3,%xmm8 + paddd %xmm11,%xmm2 +.byte 15,56,205,231 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm4,%xmm3 +.byte 102,15,58,15,223,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,195 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm5 + movdqa %xmm8,%xmm3 +.byte 102,65,15,58,15,219,4 +.byte 15,56,204,247 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 192-128(%rbp),%xmm1 + paddd %xmm4,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,211 + movdqa %xmm1,%xmm0 + movdqa 192-128(%rbp),%xmm2 + paddd %xmm3,%xmm9 + paddd %xmm8,%xmm2 +.byte 15,56,205,236 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm5,%xmm3 +.byte 102,15,58,15,220,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,200 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm6 + movdqa %xmm9,%xmm3 +.byte 102,65,15,58,15,216,4 +.byte 15,56,204,252 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 208-128(%rbp),%xmm1 + paddd %xmm5,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,216 + movdqa %xmm1,%xmm0 + movdqa 208-128(%rbp),%xmm2 + paddd %xmm3,%xmm10 + paddd %xmm9,%xmm2 +.byte 15,56,205,245 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm6,%xmm3 +.byte 102,15,58,15,221,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,209 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm7 + movdqa %xmm10,%xmm3 +.byte 102,65,15,58,15,217,4 + nop +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 224-128(%rbp),%xmm1 + paddd %xmm6,%xmm1 +.byte 69,15,56,203,247 + + movdqa %xmm1,%xmm0 + movdqa 224-128(%rbp),%xmm2 + paddd %xmm3,%xmm11 + paddd %xmm10,%xmm2 +.byte 15,56,205,254 + nop +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movl $1,%ecx + pxor %xmm6,%xmm6 +.byte 69,15,56,203,254 +.byte 69,15,56,205,218 + pshufd $0x0e,%xmm1,%xmm0 + movdqa 240-128(%rbp),%xmm1 + paddd %xmm7,%xmm1 + movq (%rbx),%xmm7 + nop +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 240-128(%rbp),%xmm2 + paddd %xmm11,%xmm2 +.byte 69,15,56,203,247 + + movdqa %xmm1,%xmm0 + cmpl 0(%rbx),%ecx + cmovgeq %rsp,%r8 + cmpl 4(%rbx),%ecx + cmovgeq %rsp,%r9 + pshufd $0x00,%xmm7,%xmm9 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + pshufd $0x55,%xmm7,%xmm10 + movdqa %xmm7,%xmm11 +.byte 69,15,56,203,254 + pshufd $0x0e,%xmm1,%xmm0 + pcmpgtd %xmm6,%xmm9 + pcmpgtd %xmm6,%xmm10 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + pcmpgtd %xmm6,%xmm11 + movdqa K256_shaext-16(%rip),%xmm3 +.byte 69,15,56,203,247 + + pand %xmm9,%xmm13 + pand %xmm10,%xmm15 + pand %xmm9,%xmm12 + pand %xmm10,%xmm14 + paddd %xmm7,%xmm11 + + paddd 80(%rsp),%xmm13 + paddd 112(%rsp),%xmm15 + paddd 64(%rsp),%xmm12 + paddd 96(%rsp),%xmm14 + + movq %xmm11,(%rbx) + decl %edx + jnz .Loop_shaext + + movl 280(%rsp),%edx + + pshufd $27,%xmm12,%xmm12 + pshufd $27,%xmm13,%xmm13 + pshufd $27,%xmm14,%xmm14 + pshufd $27,%xmm15,%xmm15 + + movdqa %xmm12,%xmm5 + movdqa %xmm13,%xmm6 + punpckldq %xmm14,%xmm12 + punpckhdq %xmm14,%xmm5 + punpckldq %xmm15,%xmm13 + punpckhdq %xmm15,%xmm6 + + movq %xmm12,0-128(%rdi) + psrldq $8,%xmm12 + movq %xmm5,128-128(%rdi) + psrldq $8,%xmm5 + movq %xmm12,32-128(%rdi) + movq %xmm5,160-128(%rdi) + + movq %xmm13,64-128(%rdi) + psrldq $8,%xmm13 + movq %xmm6,192-128(%rdi) + psrldq $8,%xmm6 + movq %xmm13,96-128(%rdi) + movq %xmm6,224-128(%rdi) + + leaq 8(%rdi),%rdi + leaq 32(%rsi),%rsi + decl %edx + jnz .Loop_grande_shaext + +.Ldone_shaext: + + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_shaext: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha256_multi_block_shaext,.-sha256_multi_block_shaext +.type sha256_multi_block_avx,@function +.align 32 +sha256_multi_block_avx: +.cfi_startproc +_avx_shortcut: + shrq $32,%rcx + cmpl $2,%edx + jb .Lavx + testl $32,%ecx + jnz _avx2_shortcut + jmp .Lavx +.align 32 +.Lavx: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + subq $288,%rsp + andq $-256,%rsp + movq %rax,272(%rsp) +.cfi_escape 0x0f,0x06,0x77,0x90,0x02,0x06,0x23,0x08 +.Lbody_avx: + leaq K256+128(%rip),%rbp + leaq 256(%rsp),%rbx + leaq 128(%rdi),%rdi + +.Loop_grande_avx: + movl %edx,280(%rsp) + xorl %edx,%edx + movq 0(%rsi),%r8 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rbp,%r8 + movq 16(%rsi),%r9 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rbp,%r9 + movq 32(%rsi),%r10 + movl 40(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,8(%rbx) + cmovleq %rbp,%r10 + movq 48(%rsi),%r11 + movl 56(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,12(%rbx) + cmovleq %rbp,%r11 + testl %edx,%edx + jz .Ldone_avx + + vmovdqu 0-128(%rdi),%xmm8 + leaq 128(%rsp),%rax + vmovdqu 32-128(%rdi),%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + vmovdqu 96-128(%rdi),%xmm11 + vmovdqu 128-128(%rdi),%xmm12 + vmovdqu 160-128(%rdi),%xmm13 + vmovdqu 192-128(%rdi),%xmm14 + vmovdqu 224-128(%rdi),%xmm15 + vmovdqu .Lpbswap(%rip),%xmm6 + jmp .Loop_avx + +.align 32 +.Loop_avx: + vpxor %xmm9,%xmm10,%xmm4 + vmovd 0(%r8),%xmm5 + vmovd 0(%r9),%xmm0 + vpinsrd $1,0(%r10),%xmm5,%xmm5 + vpinsrd $1,0(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm12,%xmm7 + vpslld $26,%xmm12,%xmm2 + vmovdqu %xmm5,0-128(%rax) + vpaddd %xmm15,%xmm5,%xmm5 + + vpsrld $11,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm12,%xmm2 + vpaddd -128(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm12,%xmm2 + vpandn %xmm14,%xmm12,%xmm0 + vpand %xmm13,%xmm12,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm8,%xmm15 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm8,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm8,%xmm9,%xmm3 + + vpxor %xmm1,%xmm15,%xmm15 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm8,%xmm1 + + vpslld $19,%xmm8,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm15,%xmm7 + + vpsrld $22,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm8,%xmm2 + vpxor %xmm4,%xmm9,%xmm15 + vpaddd %xmm5,%xmm11,%xmm11 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm15,%xmm15 + vpaddd %xmm7,%xmm15,%xmm15 + vmovd 4(%r8),%xmm5 + vmovd 4(%r9),%xmm0 + vpinsrd $1,4(%r10),%xmm5,%xmm5 + vpinsrd $1,4(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm11,%xmm7 + vpslld $26,%xmm11,%xmm2 + vmovdqu %xmm5,16-128(%rax) + vpaddd %xmm14,%xmm5,%xmm5 + + vpsrld $11,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm11,%xmm2 + vpaddd -96(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm11,%xmm2 + vpandn %xmm13,%xmm11,%xmm0 + vpand %xmm12,%xmm11,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm15,%xmm14 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm15,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm15,%xmm8,%xmm4 + + vpxor %xmm1,%xmm14,%xmm14 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm15,%xmm1 + + vpslld $19,%xmm15,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm14,%xmm7 + + vpsrld $22,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm15,%xmm2 + vpxor %xmm3,%xmm8,%xmm14 + vpaddd %xmm5,%xmm10,%xmm10 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm14,%xmm14 + vpaddd %xmm7,%xmm14,%xmm14 + vmovd 8(%r8),%xmm5 + vmovd 8(%r9),%xmm0 + vpinsrd $1,8(%r10),%xmm5,%xmm5 + vpinsrd $1,8(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm10,%xmm7 + vpslld $26,%xmm10,%xmm2 + vmovdqu %xmm5,32-128(%rax) + vpaddd %xmm13,%xmm5,%xmm5 + + vpsrld $11,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm10,%xmm2 + vpaddd -64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm10,%xmm2 + vpandn %xmm12,%xmm10,%xmm0 + vpand %xmm11,%xmm10,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm14,%xmm13 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm14,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm14,%xmm15,%xmm3 + + vpxor %xmm1,%xmm13,%xmm13 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm14,%xmm1 + + vpslld $19,%xmm14,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm13,%xmm7 + + vpsrld $22,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm14,%xmm2 + vpxor %xmm4,%xmm15,%xmm13 + vpaddd %xmm5,%xmm9,%xmm9 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm13,%xmm13 + vpaddd %xmm7,%xmm13,%xmm13 + vmovd 12(%r8),%xmm5 + vmovd 12(%r9),%xmm0 + vpinsrd $1,12(%r10),%xmm5,%xmm5 + vpinsrd $1,12(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm9,%xmm7 + vpslld $26,%xmm9,%xmm2 + vmovdqu %xmm5,48-128(%rax) + vpaddd %xmm12,%xmm5,%xmm5 + + vpsrld $11,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm9,%xmm2 + vpaddd -32(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm9,%xmm2 + vpandn %xmm11,%xmm9,%xmm0 + vpand %xmm10,%xmm9,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm13,%xmm12 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm13,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm13,%xmm14,%xmm4 + + vpxor %xmm1,%xmm12,%xmm12 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm13,%xmm1 + + vpslld $19,%xmm13,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm12,%xmm7 + + vpsrld $22,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm13,%xmm2 + vpxor %xmm3,%xmm14,%xmm12 + vpaddd %xmm5,%xmm8,%xmm8 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm12,%xmm12 + vpaddd %xmm7,%xmm12,%xmm12 + vmovd 16(%r8),%xmm5 + vmovd 16(%r9),%xmm0 + vpinsrd $1,16(%r10),%xmm5,%xmm5 + vpinsrd $1,16(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm8,%xmm7 + vpslld $26,%xmm8,%xmm2 + vmovdqu %xmm5,64-128(%rax) + vpaddd %xmm11,%xmm5,%xmm5 + + vpsrld $11,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm8,%xmm2 + vpaddd 0(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm8,%xmm2 + vpandn %xmm10,%xmm8,%xmm0 + vpand %xmm9,%xmm8,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm12,%xmm11 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm12,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm12,%xmm13,%xmm3 + + vpxor %xmm1,%xmm11,%xmm11 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm12,%xmm1 + + vpslld $19,%xmm12,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm11,%xmm7 + + vpsrld $22,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm12,%xmm2 + vpxor %xmm4,%xmm13,%xmm11 + vpaddd %xmm5,%xmm15,%xmm15 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm11,%xmm11 + vpaddd %xmm7,%xmm11,%xmm11 + vmovd 20(%r8),%xmm5 + vmovd 20(%r9),%xmm0 + vpinsrd $1,20(%r10),%xmm5,%xmm5 + vpinsrd $1,20(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm15,%xmm7 + vpslld $26,%xmm15,%xmm2 + vmovdqu %xmm5,80-128(%rax) + vpaddd %xmm10,%xmm5,%xmm5 + + vpsrld $11,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm15,%xmm2 + vpaddd 32(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm15,%xmm2 + vpandn %xmm9,%xmm15,%xmm0 + vpand %xmm8,%xmm15,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm11,%xmm10 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm11,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm11,%xmm12,%xmm4 + + vpxor %xmm1,%xmm10,%xmm10 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm11,%xmm1 + + vpslld $19,%xmm11,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm10,%xmm7 + + vpsrld $22,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm11,%xmm2 + vpxor %xmm3,%xmm12,%xmm10 + vpaddd %xmm5,%xmm14,%xmm14 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm10,%xmm10 + vpaddd %xmm7,%xmm10,%xmm10 + vmovd 24(%r8),%xmm5 + vmovd 24(%r9),%xmm0 + vpinsrd $1,24(%r10),%xmm5,%xmm5 + vpinsrd $1,24(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm14,%xmm7 + vpslld $26,%xmm14,%xmm2 + vmovdqu %xmm5,96-128(%rax) + vpaddd %xmm9,%xmm5,%xmm5 + + vpsrld $11,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm14,%xmm2 + vpaddd 64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm14,%xmm2 + vpandn %xmm8,%xmm14,%xmm0 + vpand %xmm15,%xmm14,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm10,%xmm9 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm10,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm10,%xmm11,%xmm3 + + vpxor %xmm1,%xmm9,%xmm9 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm10,%xmm1 + + vpslld $19,%xmm10,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm9,%xmm7 + + vpsrld $22,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm10,%xmm2 + vpxor %xmm4,%xmm11,%xmm9 + vpaddd %xmm5,%xmm13,%xmm13 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm9,%xmm9 + vpaddd %xmm7,%xmm9,%xmm9 + vmovd 28(%r8),%xmm5 + vmovd 28(%r9),%xmm0 + vpinsrd $1,28(%r10),%xmm5,%xmm5 + vpinsrd $1,28(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm13,%xmm7 + vpslld $26,%xmm13,%xmm2 + vmovdqu %xmm5,112-128(%rax) + vpaddd %xmm8,%xmm5,%xmm5 + + vpsrld $11,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm13,%xmm2 + vpaddd 96(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm13,%xmm2 + vpandn %xmm15,%xmm13,%xmm0 + vpand %xmm14,%xmm13,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm9,%xmm8 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm9,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm9,%xmm10,%xmm4 + + vpxor %xmm1,%xmm8,%xmm8 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm9,%xmm1 + + vpslld $19,%xmm9,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm8,%xmm7 + + vpsrld $22,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm9,%xmm2 + vpxor %xmm3,%xmm10,%xmm8 + vpaddd %xmm5,%xmm12,%xmm12 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm8,%xmm8 + vpaddd %xmm7,%xmm8,%xmm8 + addq $256,%rbp + vmovd 32(%r8),%xmm5 + vmovd 32(%r9),%xmm0 + vpinsrd $1,32(%r10),%xmm5,%xmm5 + vpinsrd $1,32(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm12,%xmm7 + vpslld $26,%xmm12,%xmm2 + vmovdqu %xmm5,128-128(%rax) + vpaddd %xmm15,%xmm5,%xmm5 + + vpsrld $11,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm12,%xmm2 + vpaddd -128(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm12,%xmm2 + vpandn %xmm14,%xmm12,%xmm0 + vpand %xmm13,%xmm12,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm8,%xmm15 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm8,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm8,%xmm9,%xmm3 + + vpxor %xmm1,%xmm15,%xmm15 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm8,%xmm1 + + vpslld $19,%xmm8,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm15,%xmm7 + + vpsrld $22,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm8,%xmm2 + vpxor %xmm4,%xmm9,%xmm15 + vpaddd %xmm5,%xmm11,%xmm11 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm15,%xmm15 + vpaddd %xmm7,%xmm15,%xmm15 + vmovd 36(%r8),%xmm5 + vmovd 36(%r9),%xmm0 + vpinsrd $1,36(%r10),%xmm5,%xmm5 + vpinsrd $1,36(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm11,%xmm7 + vpslld $26,%xmm11,%xmm2 + vmovdqu %xmm5,144-128(%rax) + vpaddd %xmm14,%xmm5,%xmm5 + + vpsrld $11,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm11,%xmm2 + vpaddd -96(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm11,%xmm2 + vpandn %xmm13,%xmm11,%xmm0 + vpand %xmm12,%xmm11,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm15,%xmm14 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm15,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm15,%xmm8,%xmm4 + + vpxor %xmm1,%xmm14,%xmm14 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm15,%xmm1 + + vpslld $19,%xmm15,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm14,%xmm7 + + vpsrld $22,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm15,%xmm2 + vpxor %xmm3,%xmm8,%xmm14 + vpaddd %xmm5,%xmm10,%xmm10 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm14,%xmm14 + vpaddd %xmm7,%xmm14,%xmm14 + vmovd 40(%r8),%xmm5 + vmovd 40(%r9),%xmm0 + vpinsrd $1,40(%r10),%xmm5,%xmm5 + vpinsrd $1,40(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm10,%xmm7 + vpslld $26,%xmm10,%xmm2 + vmovdqu %xmm5,160-128(%rax) + vpaddd %xmm13,%xmm5,%xmm5 + + vpsrld $11,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm10,%xmm2 + vpaddd -64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm10,%xmm2 + vpandn %xmm12,%xmm10,%xmm0 + vpand %xmm11,%xmm10,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm14,%xmm13 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm14,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm14,%xmm15,%xmm3 + + vpxor %xmm1,%xmm13,%xmm13 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm14,%xmm1 + + vpslld $19,%xmm14,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm13,%xmm7 + + vpsrld $22,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm14,%xmm2 + vpxor %xmm4,%xmm15,%xmm13 + vpaddd %xmm5,%xmm9,%xmm9 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm13,%xmm13 + vpaddd %xmm7,%xmm13,%xmm13 + vmovd 44(%r8),%xmm5 + vmovd 44(%r9),%xmm0 + vpinsrd $1,44(%r10),%xmm5,%xmm5 + vpinsrd $1,44(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm9,%xmm7 + vpslld $26,%xmm9,%xmm2 + vmovdqu %xmm5,176-128(%rax) + vpaddd %xmm12,%xmm5,%xmm5 + + vpsrld $11,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm9,%xmm2 + vpaddd -32(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm9,%xmm2 + vpandn %xmm11,%xmm9,%xmm0 + vpand %xmm10,%xmm9,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm13,%xmm12 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm13,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm13,%xmm14,%xmm4 + + vpxor %xmm1,%xmm12,%xmm12 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm13,%xmm1 + + vpslld $19,%xmm13,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm12,%xmm7 + + vpsrld $22,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm13,%xmm2 + vpxor %xmm3,%xmm14,%xmm12 + vpaddd %xmm5,%xmm8,%xmm8 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm12,%xmm12 + vpaddd %xmm7,%xmm12,%xmm12 + vmovd 48(%r8),%xmm5 + vmovd 48(%r9),%xmm0 + vpinsrd $1,48(%r10),%xmm5,%xmm5 + vpinsrd $1,48(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm8,%xmm7 + vpslld $26,%xmm8,%xmm2 + vmovdqu %xmm5,192-128(%rax) + vpaddd %xmm11,%xmm5,%xmm5 + + vpsrld $11,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm8,%xmm2 + vpaddd 0(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm8,%xmm2 + vpandn %xmm10,%xmm8,%xmm0 + vpand %xmm9,%xmm8,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm12,%xmm11 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm12,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm12,%xmm13,%xmm3 + + vpxor %xmm1,%xmm11,%xmm11 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm12,%xmm1 + + vpslld $19,%xmm12,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm11,%xmm7 + + vpsrld $22,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm12,%xmm2 + vpxor %xmm4,%xmm13,%xmm11 + vpaddd %xmm5,%xmm15,%xmm15 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm11,%xmm11 + vpaddd %xmm7,%xmm11,%xmm11 + vmovd 52(%r8),%xmm5 + vmovd 52(%r9),%xmm0 + vpinsrd $1,52(%r10),%xmm5,%xmm5 + vpinsrd $1,52(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm15,%xmm7 + vpslld $26,%xmm15,%xmm2 + vmovdqu %xmm5,208-128(%rax) + vpaddd %xmm10,%xmm5,%xmm5 + + vpsrld $11,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm15,%xmm2 + vpaddd 32(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm15,%xmm2 + vpandn %xmm9,%xmm15,%xmm0 + vpand %xmm8,%xmm15,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm11,%xmm10 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm11,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm11,%xmm12,%xmm4 + + vpxor %xmm1,%xmm10,%xmm10 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm11,%xmm1 + + vpslld $19,%xmm11,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm10,%xmm7 + + vpsrld $22,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm11,%xmm2 + vpxor %xmm3,%xmm12,%xmm10 + vpaddd %xmm5,%xmm14,%xmm14 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm10,%xmm10 + vpaddd %xmm7,%xmm10,%xmm10 + vmovd 56(%r8),%xmm5 + vmovd 56(%r9),%xmm0 + vpinsrd $1,56(%r10),%xmm5,%xmm5 + vpinsrd $1,56(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm14,%xmm7 + vpslld $26,%xmm14,%xmm2 + vmovdqu %xmm5,224-128(%rax) + vpaddd %xmm9,%xmm5,%xmm5 + + vpsrld $11,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm14,%xmm2 + vpaddd 64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm14,%xmm2 + vpandn %xmm8,%xmm14,%xmm0 + vpand %xmm15,%xmm14,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm10,%xmm9 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm10,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm10,%xmm11,%xmm3 + + vpxor %xmm1,%xmm9,%xmm9 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm10,%xmm1 + + vpslld $19,%xmm10,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm9,%xmm7 + + vpsrld $22,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm10,%xmm2 + vpxor %xmm4,%xmm11,%xmm9 + vpaddd %xmm5,%xmm13,%xmm13 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm9,%xmm9 + vpaddd %xmm7,%xmm9,%xmm9 + vmovd 60(%r8),%xmm5 + leaq 64(%r8),%r8 + vmovd 60(%r9),%xmm0 + leaq 64(%r9),%r9 + vpinsrd $1,60(%r10),%xmm5,%xmm5 + leaq 64(%r10),%r10 + vpinsrd $1,60(%r11),%xmm0,%xmm0 + leaq 64(%r11),%r11 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm13,%xmm7 + vpslld $26,%xmm13,%xmm2 + vmovdqu %xmm5,240-128(%rax) + vpaddd %xmm8,%xmm5,%xmm5 + + vpsrld $11,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm13,%xmm2 + vpaddd 96(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + prefetcht0 63(%r8) + vpslld $7,%xmm13,%xmm2 + vpandn %xmm15,%xmm13,%xmm0 + vpand %xmm14,%xmm13,%xmm4 + prefetcht0 63(%r9) + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm9,%xmm8 + vpxor %xmm2,%xmm7,%xmm7 + prefetcht0 63(%r10) + vpslld $30,%xmm9,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm9,%xmm10,%xmm4 + prefetcht0 63(%r11) + vpxor %xmm1,%xmm8,%xmm8 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm9,%xmm1 + + vpslld $19,%xmm9,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm8,%xmm7 + + vpsrld $22,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm9,%xmm2 + vpxor %xmm3,%xmm10,%xmm8 + vpaddd %xmm5,%xmm12,%xmm12 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm8,%xmm8 + vpaddd %xmm7,%xmm8,%xmm8 + addq $256,%rbp + vmovdqu 0-128(%rax),%xmm5 + movl $3,%ecx + jmp .Loop_16_xx_avx +.align 32 +.Loop_16_xx_avx: + vmovdqu 16-128(%rax),%xmm6 + vpaddd 144-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 224-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm12,%xmm7 + vpslld $26,%xmm12,%xmm2 + vmovdqu %xmm5,0-128(%rax) + vpaddd %xmm15,%xmm5,%xmm5 + + vpsrld $11,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm12,%xmm2 + vpaddd -128(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm12,%xmm2 + vpandn %xmm14,%xmm12,%xmm0 + vpand %xmm13,%xmm12,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm8,%xmm15 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm8,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm8,%xmm9,%xmm3 + + vpxor %xmm1,%xmm15,%xmm15 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm8,%xmm1 + + vpslld $19,%xmm8,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm15,%xmm7 + + vpsrld $22,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm8,%xmm2 + vpxor %xmm4,%xmm9,%xmm15 + vpaddd %xmm5,%xmm11,%xmm11 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm15,%xmm15 + vpaddd %xmm7,%xmm15,%xmm15 + vmovdqu 32-128(%rax),%xmm5 + vpaddd 160-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 240-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm11,%xmm7 + vpslld $26,%xmm11,%xmm2 + vmovdqu %xmm6,16-128(%rax) + vpaddd %xmm14,%xmm6,%xmm6 + + vpsrld $11,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm11,%xmm2 + vpaddd -96(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm11,%xmm2 + vpandn %xmm13,%xmm11,%xmm0 + vpand %xmm12,%xmm11,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm15,%xmm14 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm15,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm15,%xmm8,%xmm4 + + vpxor %xmm1,%xmm14,%xmm14 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm15,%xmm1 + + vpslld $19,%xmm15,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm14,%xmm7 + + vpsrld $22,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm15,%xmm2 + vpxor %xmm3,%xmm8,%xmm14 + vpaddd %xmm6,%xmm10,%xmm10 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm14,%xmm14 + vpaddd %xmm7,%xmm14,%xmm14 + vmovdqu 48-128(%rax),%xmm6 + vpaddd 176-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 0-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm10,%xmm7 + vpslld $26,%xmm10,%xmm2 + vmovdqu %xmm5,32-128(%rax) + vpaddd %xmm13,%xmm5,%xmm5 + + vpsrld $11,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm10,%xmm2 + vpaddd -64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm10,%xmm2 + vpandn %xmm12,%xmm10,%xmm0 + vpand %xmm11,%xmm10,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm14,%xmm13 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm14,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm14,%xmm15,%xmm3 + + vpxor %xmm1,%xmm13,%xmm13 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm14,%xmm1 + + vpslld $19,%xmm14,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm13,%xmm7 + + vpsrld $22,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm14,%xmm2 + vpxor %xmm4,%xmm15,%xmm13 + vpaddd %xmm5,%xmm9,%xmm9 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm13,%xmm13 + vpaddd %xmm7,%xmm13,%xmm13 + vmovdqu 64-128(%rax),%xmm5 + vpaddd 192-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 16-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm9,%xmm7 + vpslld $26,%xmm9,%xmm2 + vmovdqu %xmm6,48-128(%rax) + vpaddd %xmm12,%xmm6,%xmm6 + + vpsrld $11,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm9,%xmm2 + vpaddd -32(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm9,%xmm2 + vpandn %xmm11,%xmm9,%xmm0 + vpand %xmm10,%xmm9,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm13,%xmm12 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm13,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm13,%xmm14,%xmm4 + + vpxor %xmm1,%xmm12,%xmm12 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm13,%xmm1 + + vpslld $19,%xmm13,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm12,%xmm7 + + vpsrld $22,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm13,%xmm2 + vpxor %xmm3,%xmm14,%xmm12 + vpaddd %xmm6,%xmm8,%xmm8 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm12,%xmm12 + vpaddd %xmm7,%xmm12,%xmm12 + vmovdqu 80-128(%rax),%xmm6 + vpaddd 208-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 32-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm8,%xmm7 + vpslld $26,%xmm8,%xmm2 + vmovdqu %xmm5,64-128(%rax) + vpaddd %xmm11,%xmm5,%xmm5 + + vpsrld $11,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm8,%xmm2 + vpaddd 0(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm8,%xmm2 + vpandn %xmm10,%xmm8,%xmm0 + vpand %xmm9,%xmm8,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm12,%xmm11 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm12,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm12,%xmm13,%xmm3 + + vpxor %xmm1,%xmm11,%xmm11 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm12,%xmm1 + + vpslld $19,%xmm12,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm11,%xmm7 + + vpsrld $22,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm12,%xmm2 + vpxor %xmm4,%xmm13,%xmm11 + vpaddd %xmm5,%xmm15,%xmm15 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm11,%xmm11 + vpaddd %xmm7,%xmm11,%xmm11 + vmovdqu 96-128(%rax),%xmm5 + vpaddd 224-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 48-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm15,%xmm7 + vpslld $26,%xmm15,%xmm2 + vmovdqu %xmm6,80-128(%rax) + vpaddd %xmm10,%xmm6,%xmm6 + + vpsrld $11,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm15,%xmm2 + vpaddd 32(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm15,%xmm2 + vpandn %xmm9,%xmm15,%xmm0 + vpand %xmm8,%xmm15,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm11,%xmm10 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm11,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm11,%xmm12,%xmm4 + + vpxor %xmm1,%xmm10,%xmm10 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm11,%xmm1 + + vpslld $19,%xmm11,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm10,%xmm7 + + vpsrld $22,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm11,%xmm2 + vpxor %xmm3,%xmm12,%xmm10 + vpaddd %xmm6,%xmm14,%xmm14 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm10,%xmm10 + vpaddd %xmm7,%xmm10,%xmm10 + vmovdqu 112-128(%rax),%xmm6 + vpaddd 240-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 64-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm14,%xmm7 + vpslld $26,%xmm14,%xmm2 + vmovdqu %xmm5,96-128(%rax) + vpaddd %xmm9,%xmm5,%xmm5 + + vpsrld $11,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm14,%xmm2 + vpaddd 64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm14,%xmm2 + vpandn %xmm8,%xmm14,%xmm0 + vpand %xmm15,%xmm14,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm10,%xmm9 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm10,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm10,%xmm11,%xmm3 + + vpxor %xmm1,%xmm9,%xmm9 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm10,%xmm1 + + vpslld $19,%xmm10,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm9,%xmm7 + + vpsrld $22,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm10,%xmm2 + vpxor %xmm4,%xmm11,%xmm9 + vpaddd %xmm5,%xmm13,%xmm13 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm9,%xmm9 + vpaddd %xmm7,%xmm9,%xmm9 + vmovdqu 128-128(%rax),%xmm5 + vpaddd 0-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 80-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm13,%xmm7 + vpslld $26,%xmm13,%xmm2 + vmovdqu %xmm6,112-128(%rax) + vpaddd %xmm8,%xmm6,%xmm6 + + vpsrld $11,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm13,%xmm2 + vpaddd 96(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm13,%xmm2 + vpandn %xmm15,%xmm13,%xmm0 + vpand %xmm14,%xmm13,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm9,%xmm8 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm9,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm9,%xmm10,%xmm4 + + vpxor %xmm1,%xmm8,%xmm8 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm9,%xmm1 + + vpslld $19,%xmm9,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm8,%xmm7 + + vpsrld $22,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm9,%xmm2 + vpxor %xmm3,%xmm10,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm8,%xmm8 + vpaddd %xmm7,%xmm8,%xmm8 + addq $256,%rbp + vmovdqu 144-128(%rax),%xmm6 + vpaddd 16-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 96-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm12,%xmm7 + vpslld $26,%xmm12,%xmm2 + vmovdqu %xmm5,128-128(%rax) + vpaddd %xmm15,%xmm5,%xmm5 + + vpsrld $11,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm12,%xmm2 + vpaddd -128(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm12,%xmm2 + vpandn %xmm14,%xmm12,%xmm0 + vpand %xmm13,%xmm12,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm8,%xmm15 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm8,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm8,%xmm9,%xmm3 + + vpxor %xmm1,%xmm15,%xmm15 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm8,%xmm1 + + vpslld $19,%xmm8,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm15,%xmm7 + + vpsrld $22,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm8,%xmm2 + vpxor %xmm4,%xmm9,%xmm15 + vpaddd %xmm5,%xmm11,%xmm11 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm15,%xmm15 + vpaddd %xmm7,%xmm15,%xmm15 + vmovdqu 160-128(%rax),%xmm5 + vpaddd 32-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 112-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm11,%xmm7 + vpslld $26,%xmm11,%xmm2 + vmovdqu %xmm6,144-128(%rax) + vpaddd %xmm14,%xmm6,%xmm6 + + vpsrld $11,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm11,%xmm2 + vpaddd -96(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm11,%xmm2 + vpandn %xmm13,%xmm11,%xmm0 + vpand %xmm12,%xmm11,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm15,%xmm14 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm15,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm15,%xmm8,%xmm4 + + vpxor %xmm1,%xmm14,%xmm14 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm15,%xmm1 + + vpslld $19,%xmm15,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm14,%xmm7 + + vpsrld $22,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm15,%xmm2 + vpxor %xmm3,%xmm8,%xmm14 + vpaddd %xmm6,%xmm10,%xmm10 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm14,%xmm14 + vpaddd %xmm7,%xmm14,%xmm14 + vmovdqu 176-128(%rax),%xmm6 + vpaddd 48-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 128-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm10,%xmm7 + vpslld $26,%xmm10,%xmm2 + vmovdqu %xmm5,160-128(%rax) + vpaddd %xmm13,%xmm5,%xmm5 + + vpsrld $11,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm10,%xmm2 + vpaddd -64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm10,%xmm2 + vpandn %xmm12,%xmm10,%xmm0 + vpand %xmm11,%xmm10,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm14,%xmm13 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm14,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm14,%xmm15,%xmm3 + + vpxor %xmm1,%xmm13,%xmm13 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm14,%xmm1 + + vpslld $19,%xmm14,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm13,%xmm7 + + vpsrld $22,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm14,%xmm2 + vpxor %xmm4,%xmm15,%xmm13 + vpaddd %xmm5,%xmm9,%xmm9 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm13,%xmm13 + vpaddd %xmm7,%xmm13,%xmm13 + vmovdqu 192-128(%rax),%xmm5 + vpaddd 64-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 144-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm9,%xmm7 + vpslld $26,%xmm9,%xmm2 + vmovdqu %xmm6,176-128(%rax) + vpaddd %xmm12,%xmm6,%xmm6 + + vpsrld $11,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm9,%xmm2 + vpaddd -32(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm9,%xmm2 + vpandn %xmm11,%xmm9,%xmm0 + vpand %xmm10,%xmm9,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm13,%xmm12 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm13,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm13,%xmm14,%xmm4 + + vpxor %xmm1,%xmm12,%xmm12 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm13,%xmm1 + + vpslld $19,%xmm13,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm12,%xmm7 + + vpsrld $22,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm13,%xmm2 + vpxor %xmm3,%xmm14,%xmm12 + vpaddd %xmm6,%xmm8,%xmm8 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm12,%xmm12 + vpaddd %xmm7,%xmm12,%xmm12 + vmovdqu 208-128(%rax),%xmm6 + vpaddd 80-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 160-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm8,%xmm7 + vpslld $26,%xmm8,%xmm2 + vmovdqu %xmm5,192-128(%rax) + vpaddd %xmm11,%xmm5,%xmm5 + + vpsrld $11,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm8,%xmm2 + vpaddd 0(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm8,%xmm2 + vpandn %xmm10,%xmm8,%xmm0 + vpand %xmm9,%xmm8,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm12,%xmm11 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm12,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm12,%xmm13,%xmm3 + + vpxor %xmm1,%xmm11,%xmm11 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm12,%xmm1 + + vpslld $19,%xmm12,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm11,%xmm7 + + vpsrld $22,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm12,%xmm2 + vpxor %xmm4,%xmm13,%xmm11 + vpaddd %xmm5,%xmm15,%xmm15 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm11,%xmm11 + vpaddd %xmm7,%xmm11,%xmm11 + vmovdqu 224-128(%rax),%xmm5 + vpaddd 96-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 176-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm15,%xmm7 + vpslld $26,%xmm15,%xmm2 + vmovdqu %xmm6,208-128(%rax) + vpaddd %xmm10,%xmm6,%xmm6 + + vpsrld $11,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm15,%xmm2 + vpaddd 32(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm15,%xmm2 + vpandn %xmm9,%xmm15,%xmm0 + vpand %xmm8,%xmm15,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm11,%xmm10 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm11,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm11,%xmm12,%xmm4 + + vpxor %xmm1,%xmm10,%xmm10 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm11,%xmm1 + + vpslld $19,%xmm11,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm10,%xmm7 + + vpsrld $22,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm11,%xmm2 + vpxor %xmm3,%xmm12,%xmm10 + vpaddd %xmm6,%xmm14,%xmm14 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm10,%xmm10 + vpaddd %xmm7,%xmm10,%xmm10 + vmovdqu 240-128(%rax),%xmm6 + vpaddd 112-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 192-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm14,%xmm7 + vpslld $26,%xmm14,%xmm2 + vmovdqu %xmm5,224-128(%rax) + vpaddd %xmm9,%xmm5,%xmm5 + + vpsrld $11,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm14,%xmm2 + vpaddd 64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm14,%xmm2 + vpandn %xmm8,%xmm14,%xmm0 + vpand %xmm15,%xmm14,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm10,%xmm9 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm10,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm10,%xmm11,%xmm3 + + vpxor %xmm1,%xmm9,%xmm9 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm10,%xmm1 + + vpslld $19,%xmm10,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm9,%xmm7 + + vpsrld $22,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm10,%xmm2 + vpxor %xmm4,%xmm11,%xmm9 + vpaddd %xmm5,%xmm13,%xmm13 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm9,%xmm9 + vpaddd %xmm7,%xmm9,%xmm9 + vmovdqu 0-128(%rax),%xmm5 + vpaddd 128-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 208-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm13,%xmm7 + vpslld $26,%xmm13,%xmm2 + vmovdqu %xmm6,240-128(%rax) + vpaddd %xmm8,%xmm6,%xmm6 + + vpsrld $11,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm13,%xmm2 + vpaddd 96(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm13,%xmm2 + vpandn %xmm15,%xmm13,%xmm0 + vpand %xmm14,%xmm13,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm9,%xmm8 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm9,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm9,%xmm10,%xmm4 + + vpxor %xmm1,%xmm8,%xmm8 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm9,%xmm1 + + vpslld $19,%xmm9,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm8,%xmm7 + + vpsrld $22,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm9,%xmm2 + vpxor %xmm3,%xmm10,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm8,%xmm8 + vpaddd %xmm7,%xmm8,%xmm8 + addq $256,%rbp + decl %ecx + jnz .Loop_16_xx_avx + + movl $1,%ecx + leaq K256+128(%rip),%rbp + cmpl 0(%rbx),%ecx + cmovgeq %rbp,%r8 + cmpl 4(%rbx),%ecx + cmovgeq %rbp,%r9 + cmpl 8(%rbx),%ecx + cmovgeq %rbp,%r10 + cmpl 12(%rbx),%ecx + cmovgeq %rbp,%r11 + vmovdqa (%rbx),%xmm7 + vpxor %xmm0,%xmm0,%xmm0 + vmovdqa %xmm7,%xmm6 + vpcmpgtd %xmm0,%xmm6,%xmm6 + vpaddd %xmm6,%xmm7,%xmm7 + + vmovdqu 0-128(%rdi),%xmm0 + vpand %xmm6,%xmm8,%xmm8 + vmovdqu 32-128(%rdi),%xmm1 + vpand %xmm6,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm2 + vpand %xmm6,%xmm10,%xmm10 + vmovdqu 96-128(%rdi),%xmm5 + vpand %xmm6,%xmm11,%xmm11 + vpaddd %xmm0,%xmm8,%xmm8 + vmovdqu 128-128(%rdi),%xmm0 + vpand %xmm6,%xmm12,%xmm12 + vpaddd %xmm1,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm1 + vpand %xmm6,%xmm13,%xmm13 + vpaddd %xmm2,%xmm10,%xmm10 + vmovdqu 192-128(%rdi),%xmm2 + vpand %xmm6,%xmm14,%xmm14 + vpaddd %xmm5,%xmm11,%xmm11 + vmovdqu 224-128(%rdi),%xmm5 + vpand %xmm6,%xmm15,%xmm15 + vpaddd %xmm0,%xmm12,%xmm12 + vpaddd %xmm1,%xmm13,%xmm13 + vmovdqu %xmm8,0-128(%rdi) + vpaddd %xmm2,%xmm14,%xmm14 + vmovdqu %xmm9,32-128(%rdi) + vpaddd %xmm5,%xmm15,%xmm15 + vmovdqu %xmm10,64-128(%rdi) + vmovdqu %xmm11,96-128(%rdi) + vmovdqu %xmm12,128-128(%rdi) + vmovdqu %xmm13,160-128(%rdi) + vmovdqu %xmm14,192-128(%rdi) + vmovdqu %xmm15,224-128(%rdi) + + vmovdqu %xmm7,(%rbx) + vmovdqu .Lpbswap(%rip),%xmm6 + decl %edx + jnz .Loop_avx + + movl 280(%rsp),%edx + leaq 16(%rdi),%rdi + leaq 64(%rsi),%rsi + decl %edx + jnz .Loop_grande_avx + +.Ldone_avx: + movq 272(%rsp),%rax +.cfi_def_cfa %rax,8 + vzeroupper + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_avx: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha256_multi_block_avx,.-sha256_multi_block_avx +.type sha256_multi_block_avx2,@function +.align 32 +sha256_multi_block_avx2: +.cfi_startproc +_avx2_shortcut: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + subq $576,%rsp + andq $-256,%rsp + movq %rax,544(%rsp) +.cfi_escape 0x0f,0x06,0x77,0xa0,0x04,0x06,0x23,0x08 +.Lbody_avx2: + leaq K256+128(%rip),%rbp + leaq 128(%rdi),%rdi + +.Loop_grande_avx2: + movl %edx,552(%rsp) + xorl %edx,%edx + leaq 512(%rsp),%rbx + movq 0(%rsi),%r12 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rbp,%r12 + movq 16(%rsi),%r13 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rbp,%r13 + movq 32(%rsi),%r14 + movl 40(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,8(%rbx) + cmovleq %rbp,%r14 + movq 48(%rsi),%r15 + movl 56(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,12(%rbx) + cmovleq %rbp,%r15 + movq 64(%rsi),%r8 + movl 72(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,16(%rbx) + cmovleq %rbp,%r8 + movq 80(%rsi),%r9 + movl 88(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,20(%rbx) + cmovleq %rbp,%r9 + movq 96(%rsi),%r10 + movl 104(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,24(%rbx) + cmovleq %rbp,%r10 + movq 112(%rsi),%r11 + movl 120(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,28(%rbx) + cmovleq %rbp,%r11 + vmovdqu 0-128(%rdi),%ymm8 + leaq 128(%rsp),%rax + vmovdqu 32-128(%rdi),%ymm9 + leaq 256+128(%rsp),%rbx + vmovdqu 64-128(%rdi),%ymm10 + vmovdqu 96-128(%rdi),%ymm11 + vmovdqu 128-128(%rdi),%ymm12 + vmovdqu 160-128(%rdi),%ymm13 + vmovdqu 192-128(%rdi),%ymm14 + vmovdqu 224-128(%rdi),%ymm15 + vmovdqu .Lpbswap(%rip),%ymm6 + jmp .Loop_avx2 + +.align 32 +.Loop_avx2: + vpxor %ymm9,%ymm10,%ymm4 + vmovd 0(%r12),%xmm5 + vmovd 0(%r8),%xmm0 + vmovd 0(%r13),%xmm1 + vmovd 0(%r9),%xmm2 + vpinsrd $1,0(%r14),%xmm5,%xmm5 + vpinsrd $1,0(%r10),%xmm0,%xmm0 + vpinsrd $1,0(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,0(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm12,%ymm7 + vpslld $26,%ymm12,%ymm2 + vmovdqu %ymm5,0-128(%rax) + vpaddd %ymm15,%ymm5,%ymm5 + + vpsrld $11,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm12,%ymm2 + vpaddd -128(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm12,%ymm2 + vpandn %ymm14,%ymm12,%ymm0 + vpand %ymm13,%ymm12,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm8,%ymm15 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm8,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm8,%ymm9,%ymm3 + + vpxor %ymm1,%ymm15,%ymm15 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm8,%ymm1 + + vpslld $19,%ymm8,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm15,%ymm7 + + vpsrld $22,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm8,%ymm2 + vpxor %ymm4,%ymm9,%ymm15 + vpaddd %ymm5,%ymm11,%ymm11 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm15,%ymm15 + vpaddd %ymm7,%ymm15,%ymm15 + vmovd 4(%r12),%xmm5 + vmovd 4(%r8),%xmm0 + vmovd 4(%r13),%xmm1 + vmovd 4(%r9),%xmm2 + vpinsrd $1,4(%r14),%xmm5,%xmm5 + vpinsrd $1,4(%r10),%xmm0,%xmm0 + vpinsrd $1,4(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,4(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm11,%ymm7 + vpslld $26,%ymm11,%ymm2 + vmovdqu %ymm5,32-128(%rax) + vpaddd %ymm14,%ymm5,%ymm5 + + vpsrld $11,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm11,%ymm2 + vpaddd -96(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm11,%ymm2 + vpandn %ymm13,%ymm11,%ymm0 + vpand %ymm12,%ymm11,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm15,%ymm14 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm15,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm15,%ymm8,%ymm4 + + vpxor %ymm1,%ymm14,%ymm14 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm15,%ymm1 + + vpslld $19,%ymm15,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm14,%ymm7 + + vpsrld $22,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm15,%ymm2 + vpxor %ymm3,%ymm8,%ymm14 + vpaddd %ymm5,%ymm10,%ymm10 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm14,%ymm14 + vpaddd %ymm7,%ymm14,%ymm14 + vmovd 8(%r12),%xmm5 + vmovd 8(%r8),%xmm0 + vmovd 8(%r13),%xmm1 + vmovd 8(%r9),%xmm2 + vpinsrd $1,8(%r14),%xmm5,%xmm5 + vpinsrd $1,8(%r10),%xmm0,%xmm0 + vpinsrd $1,8(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,8(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm10,%ymm7 + vpslld $26,%ymm10,%ymm2 + vmovdqu %ymm5,64-128(%rax) + vpaddd %ymm13,%ymm5,%ymm5 + + vpsrld $11,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm10,%ymm2 + vpaddd -64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm10,%ymm2 + vpandn %ymm12,%ymm10,%ymm0 + vpand %ymm11,%ymm10,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm14,%ymm13 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm14,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm14,%ymm15,%ymm3 + + vpxor %ymm1,%ymm13,%ymm13 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm14,%ymm1 + + vpslld $19,%ymm14,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm13,%ymm7 + + vpsrld $22,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm14,%ymm2 + vpxor %ymm4,%ymm15,%ymm13 + vpaddd %ymm5,%ymm9,%ymm9 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm13,%ymm13 + vpaddd %ymm7,%ymm13,%ymm13 + vmovd 12(%r12),%xmm5 + vmovd 12(%r8),%xmm0 + vmovd 12(%r13),%xmm1 + vmovd 12(%r9),%xmm2 + vpinsrd $1,12(%r14),%xmm5,%xmm5 + vpinsrd $1,12(%r10),%xmm0,%xmm0 + vpinsrd $1,12(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,12(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm9,%ymm7 + vpslld $26,%ymm9,%ymm2 + vmovdqu %ymm5,96-128(%rax) + vpaddd %ymm12,%ymm5,%ymm5 + + vpsrld $11,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm9,%ymm2 + vpaddd -32(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm9,%ymm2 + vpandn %ymm11,%ymm9,%ymm0 + vpand %ymm10,%ymm9,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm13,%ymm12 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm13,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm13,%ymm14,%ymm4 + + vpxor %ymm1,%ymm12,%ymm12 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm13,%ymm1 + + vpslld $19,%ymm13,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm12,%ymm7 + + vpsrld $22,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm13,%ymm2 + vpxor %ymm3,%ymm14,%ymm12 + vpaddd %ymm5,%ymm8,%ymm8 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm12,%ymm12 + vpaddd %ymm7,%ymm12,%ymm12 + vmovd 16(%r12),%xmm5 + vmovd 16(%r8),%xmm0 + vmovd 16(%r13),%xmm1 + vmovd 16(%r9),%xmm2 + vpinsrd $1,16(%r14),%xmm5,%xmm5 + vpinsrd $1,16(%r10),%xmm0,%xmm0 + vpinsrd $1,16(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,16(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm8,%ymm7 + vpslld $26,%ymm8,%ymm2 + vmovdqu %ymm5,128-128(%rax) + vpaddd %ymm11,%ymm5,%ymm5 + + vpsrld $11,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm8,%ymm2 + vpaddd 0(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm8,%ymm2 + vpandn %ymm10,%ymm8,%ymm0 + vpand %ymm9,%ymm8,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm12,%ymm11 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm12,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm12,%ymm13,%ymm3 + + vpxor %ymm1,%ymm11,%ymm11 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm12,%ymm1 + + vpslld $19,%ymm12,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm11,%ymm7 + + vpsrld $22,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm12,%ymm2 + vpxor %ymm4,%ymm13,%ymm11 + vpaddd %ymm5,%ymm15,%ymm15 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm11,%ymm11 + vpaddd %ymm7,%ymm11,%ymm11 + vmovd 20(%r12),%xmm5 + vmovd 20(%r8),%xmm0 + vmovd 20(%r13),%xmm1 + vmovd 20(%r9),%xmm2 + vpinsrd $1,20(%r14),%xmm5,%xmm5 + vpinsrd $1,20(%r10),%xmm0,%xmm0 + vpinsrd $1,20(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,20(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm15,%ymm7 + vpslld $26,%ymm15,%ymm2 + vmovdqu %ymm5,160-128(%rax) + vpaddd %ymm10,%ymm5,%ymm5 + + vpsrld $11,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm15,%ymm2 + vpaddd 32(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm15,%ymm2 + vpandn %ymm9,%ymm15,%ymm0 + vpand %ymm8,%ymm15,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm11,%ymm10 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm11,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm11,%ymm12,%ymm4 + + vpxor %ymm1,%ymm10,%ymm10 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm11,%ymm1 + + vpslld $19,%ymm11,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm10,%ymm7 + + vpsrld $22,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm11,%ymm2 + vpxor %ymm3,%ymm12,%ymm10 + vpaddd %ymm5,%ymm14,%ymm14 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm10,%ymm10 + vpaddd %ymm7,%ymm10,%ymm10 + vmovd 24(%r12),%xmm5 + vmovd 24(%r8),%xmm0 + vmovd 24(%r13),%xmm1 + vmovd 24(%r9),%xmm2 + vpinsrd $1,24(%r14),%xmm5,%xmm5 + vpinsrd $1,24(%r10),%xmm0,%xmm0 + vpinsrd $1,24(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,24(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm14,%ymm7 + vpslld $26,%ymm14,%ymm2 + vmovdqu %ymm5,192-128(%rax) + vpaddd %ymm9,%ymm5,%ymm5 + + vpsrld $11,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm14,%ymm2 + vpaddd 64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm14,%ymm2 + vpandn %ymm8,%ymm14,%ymm0 + vpand %ymm15,%ymm14,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm10,%ymm9 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm10,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm10,%ymm11,%ymm3 + + vpxor %ymm1,%ymm9,%ymm9 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm10,%ymm1 + + vpslld $19,%ymm10,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm9,%ymm7 + + vpsrld $22,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm10,%ymm2 + vpxor %ymm4,%ymm11,%ymm9 + vpaddd %ymm5,%ymm13,%ymm13 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm9,%ymm9 + vpaddd %ymm7,%ymm9,%ymm9 + vmovd 28(%r12),%xmm5 + vmovd 28(%r8),%xmm0 + vmovd 28(%r13),%xmm1 + vmovd 28(%r9),%xmm2 + vpinsrd $1,28(%r14),%xmm5,%xmm5 + vpinsrd $1,28(%r10),%xmm0,%xmm0 + vpinsrd $1,28(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,28(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm13,%ymm7 + vpslld $26,%ymm13,%ymm2 + vmovdqu %ymm5,224-128(%rax) + vpaddd %ymm8,%ymm5,%ymm5 + + vpsrld $11,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm13,%ymm2 + vpaddd 96(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm13,%ymm2 + vpandn %ymm15,%ymm13,%ymm0 + vpand %ymm14,%ymm13,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm9,%ymm8 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm9,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm9,%ymm10,%ymm4 + + vpxor %ymm1,%ymm8,%ymm8 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm9,%ymm1 + + vpslld $19,%ymm9,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm8,%ymm7 + + vpsrld $22,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm9,%ymm2 + vpxor %ymm3,%ymm10,%ymm8 + vpaddd %ymm5,%ymm12,%ymm12 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm8,%ymm8 + vpaddd %ymm7,%ymm8,%ymm8 + addq $256,%rbp + vmovd 32(%r12),%xmm5 + vmovd 32(%r8),%xmm0 + vmovd 32(%r13),%xmm1 + vmovd 32(%r9),%xmm2 + vpinsrd $1,32(%r14),%xmm5,%xmm5 + vpinsrd $1,32(%r10),%xmm0,%xmm0 + vpinsrd $1,32(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,32(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm12,%ymm7 + vpslld $26,%ymm12,%ymm2 + vmovdqu %ymm5,256-256-128(%rbx) + vpaddd %ymm15,%ymm5,%ymm5 + + vpsrld $11,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm12,%ymm2 + vpaddd -128(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm12,%ymm2 + vpandn %ymm14,%ymm12,%ymm0 + vpand %ymm13,%ymm12,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm8,%ymm15 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm8,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm8,%ymm9,%ymm3 + + vpxor %ymm1,%ymm15,%ymm15 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm8,%ymm1 + + vpslld $19,%ymm8,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm15,%ymm7 + + vpsrld $22,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm8,%ymm2 + vpxor %ymm4,%ymm9,%ymm15 + vpaddd %ymm5,%ymm11,%ymm11 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm15,%ymm15 + vpaddd %ymm7,%ymm15,%ymm15 + vmovd 36(%r12),%xmm5 + vmovd 36(%r8),%xmm0 + vmovd 36(%r13),%xmm1 + vmovd 36(%r9),%xmm2 + vpinsrd $1,36(%r14),%xmm5,%xmm5 + vpinsrd $1,36(%r10),%xmm0,%xmm0 + vpinsrd $1,36(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,36(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm11,%ymm7 + vpslld $26,%ymm11,%ymm2 + vmovdqu %ymm5,288-256-128(%rbx) + vpaddd %ymm14,%ymm5,%ymm5 + + vpsrld $11,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm11,%ymm2 + vpaddd -96(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm11,%ymm2 + vpandn %ymm13,%ymm11,%ymm0 + vpand %ymm12,%ymm11,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm15,%ymm14 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm15,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm15,%ymm8,%ymm4 + + vpxor %ymm1,%ymm14,%ymm14 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm15,%ymm1 + + vpslld $19,%ymm15,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm14,%ymm7 + + vpsrld $22,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm15,%ymm2 + vpxor %ymm3,%ymm8,%ymm14 + vpaddd %ymm5,%ymm10,%ymm10 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm14,%ymm14 + vpaddd %ymm7,%ymm14,%ymm14 + vmovd 40(%r12),%xmm5 + vmovd 40(%r8),%xmm0 + vmovd 40(%r13),%xmm1 + vmovd 40(%r9),%xmm2 + vpinsrd $1,40(%r14),%xmm5,%xmm5 + vpinsrd $1,40(%r10),%xmm0,%xmm0 + vpinsrd $1,40(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,40(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm10,%ymm7 + vpslld $26,%ymm10,%ymm2 + vmovdqu %ymm5,320-256-128(%rbx) + vpaddd %ymm13,%ymm5,%ymm5 + + vpsrld $11,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm10,%ymm2 + vpaddd -64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm10,%ymm2 + vpandn %ymm12,%ymm10,%ymm0 + vpand %ymm11,%ymm10,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm14,%ymm13 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm14,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm14,%ymm15,%ymm3 + + vpxor %ymm1,%ymm13,%ymm13 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm14,%ymm1 + + vpslld $19,%ymm14,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm13,%ymm7 + + vpsrld $22,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm14,%ymm2 + vpxor %ymm4,%ymm15,%ymm13 + vpaddd %ymm5,%ymm9,%ymm9 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm13,%ymm13 + vpaddd %ymm7,%ymm13,%ymm13 + vmovd 44(%r12),%xmm5 + vmovd 44(%r8),%xmm0 + vmovd 44(%r13),%xmm1 + vmovd 44(%r9),%xmm2 + vpinsrd $1,44(%r14),%xmm5,%xmm5 + vpinsrd $1,44(%r10),%xmm0,%xmm0 + vpinsrd $1,44(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,44(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm9,%ymm7 + vpslld $26,%ymm9,%ymm2 + vmovdqu %ymm5,352-256-128(%rbx) + vpaddd %ymm12,%ymm5,%ymm5 + + vpsrld $11,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm9,%ymm2 + vpaddd -32(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm9,%ymm2 + vpandn %ymm11,%ymm9,%ymm0 + vpand %ymm10,%ymm9,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm13,%ymm12 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm13,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm13,%ymm14,%ymm4 + + vpxor %ymm1,%ymm12,%ymm12 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm13,%ymm1 + + vpslld $19,%ymm13,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm12,%ymm7 + + vpsrld $22,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm13,%ymm2 + vpxor %ymm3,%ymm14,%ymm12 + vpaddd %ymm5,%ymm8,%ymm8 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm12,%ymm12 + vpaddd %ymm7,%ymm12,%ymm12 + vmovd 48(%r12),%xmm5 + vmovd 48(%r8),%xmm0 + vmovd 48(%r13),%xmm1 + vmovd 48(%r9),%xmm2 + vpinsrd $1,48(%r14),%xmm5,%xmm5 + vpinsrd $1,48(%r10),%xmm0,%xmm0 + vpinsrd $1,48(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,48(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm8,%ymm7 + vpslld $26,%ymm8,%ymm2 + vmovdqu %ymm5,384-256-128(%rbx) + vpaddd %ymm11,%ymm5,%ymm5 + + vpsrld $11,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm8,%ymm2 + vpaddd 0(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm8,%ymm2 + vpandn %ymm10,%ymm8,%ymm0 + vpand %ymm9,%ymm8,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm12,%ymm11 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm12,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm12,%ymm13,%ymm3 + + vpxor %ymm1,%ymm11,%ymm11 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm12,%ymm1 + + vpslld $19,%ymm12,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm11,%ymm7 + + vpsrld $22,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm12,%ymm2 + vpxor %ymm4,%ymm13,%ymm11 + vpaddd %ymm5,%ymm15,%ymm15 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm11,%ymm11 + vpaddd %ymm7,%ymm11,%ymm11 + vmovd 52(%r12),%xmm5 + vmovd 52(%r8),%xmm0 + vmovd 52(%r13),%xmm1 + vmovd 52(%r9),%xmm2 + vpinsrd $1,52(%r14),%xmm5,%xmm5 + vpinsrd $1,52(%r10),%xmm0,%xmm0 + vpinsrd $1,52(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,52(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm15,%ymm7 + vpslld $26,%ymm15,%ymm2 + vmovdqu %ymm5,416-256-128(%rbx) + vpaddd %ymm10,%ymm5,%ymm5 + + vpsrld $11,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm15,%ymm2 + vpaddd 32(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm15,%ymm2 + vpandn %ymm9,%ymm15,%ymm0 + vpand %ymm8,%ymm15,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm11,%ymm10 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm11,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm11,%ymm12,%ymm4 + + vpxor %ymm1,%ymm10,%ymm10 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm11,%ymm1 + + vpslld $19,%ymm11,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm10,%ymm7 + + vpsrld $22,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm11,%ymm2 + vpxor %ymm3,%ymm12,%ymm10 + vpaddd %ymm5,%ymm14,%ymm14 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm10,%ymm10 + vpaddd %ymm7,%ymm10,%ymm10 + vmovd 56(%r12),%xmm5 + vmovd 56(%r8),%xmm0 + vmovd 56(%r13),%xmm1 + vmovd 56(%r9),%xmm2 + vpinsrd $1,56(%r14),%xmm5,%xmm5 + vpinsrd $1,56(%r10),%xmm0,%xmm0 + vpinsrd $1,56(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,56(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm14,%ymm7 + vpslld $26,%ymm14,%ymm2 + vmovdqu %ymm5,448-256-128(%rbx) + vpaddd %ymm9,%ymm5,%ymm5 + + vpsrld $11,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm14,%ymm2 + vpaddd 64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm14,%ymm2 + vpandn %ymm8,%ymm14,%ymm0 + vpand %ymm15,%ymm14,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm10,%ymm9 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm10,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm10,%ymm11,%ymm3 + + vpxor %ymm1,%ymm9,%ymm9 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm10,%ymm1 + + vpslld $19,%ymm10,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm9,%ymm7 + + vpsrld $22,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm10,%ymm2 + vpxor %ymm4,%ymm11,%ymm9 + vpaddd %ymm5,%ymm13,%ymm13 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm9,%ymm9 + vpaddd %ymm7,%ymm9,%ymm9 + vmovd 60(%r12),%xmm5 + leaq 64(%r12),%r12 + vmovd 60(%r8),%xmm0 + leaq 64(%r8),%r8 + vmovd 60(%r13),%xmm1 + leaq 64(%r13),%r13 + vmovd 60(%r9),%xmm2 + leaq 64(%r9),%r9 + vpinsrd $1,60(%r14),%xmm5,%xmm5 + leaq 64(%r14),%r14 + vpinsrd $1,60(%r10),%xmm0,%xmm0 + leaq 64(%r10),%r10 + vpinsrd $1,60(%r15),%xmm1,%xmm1 + leaq 64(%r15),%r15 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,60(%r11),%xmm2,%xmm2 + leaq 64(%r11),%r11 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm13,%ymm7 + vpslld $26,%ymm13,%ymm2 + vmovdqu %ymm5,480-256-128(%rbx) + vpaddd %ymm8,%ymm5,%ymm5 + + vpsrld $11,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm13,%ymm2 + vpaddd 96(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + prefetcht0 63(%r12) + vpslld $7,%ymm13,%ymm2 + vpandn %ymm15,%ymm13,%ymm0 + vpand %ymm14,%ymm13,%ymm4 + prefetcht0 63(%r13) + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm9,%ymm8 + vpxor %ymm2,%ymm7,%ymm7 + prefetcht0 63(%r14) + vpslld $30,%ymm9,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm9,%ymm10,%ymm4 + prefetcht0 63(%r15) + vpxor %ymm1,%ymm8,%ymm8 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm9,%ymm1 + prefetcht0 63(%r8) + vpslld $19,%ymm9,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + prefetcht0 63(%r9) + vpxor %ymm1,%ymm8,%ymm7 + + vpsrld $22,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + prefetcht0 63(%r10) + vpslld $10,%ymm9,%ymm2 + vpxor %ymm3,%ymm10,%ymm8 + vpaddd %ymm5,%ymm12,%ymm12 + prefetcht0 63(%r11) + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm8,%ymm8 + vpaddd %ymm7,%ymm8,%ymm8 + addq $256,%rbp + vmovdqu 0-128(%rax),%ymm5 + movl $3,%ecx + jmp .Loop_16_xx_avx2 +.align 32 +.Loop_16_xx_avx2: + vmovdqu 32-128(%rax),%ymm6 + vpaddd 288-256-128(%rbx),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 448-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm12,%ymm7 + vpslld $26,%ymm12,%ymm2 + vmovdqu %ymm5,0-128(%rax) + vpaddd %ymm15,%ymm5,%ymm5 + + vpsrld $11,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm12,%ymm2 + vpaddd -128(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm12,%ymm2 + vpandn %ymm14,%ymm12,%ymm0 + vpand %ymm13,%ymm12,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm8,%ymm15 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm8,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm8,%ymm9,%ymm3 + + vpxor %ymm1,%ymm15,%ymm15 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm8,%ymm1 + + vpslld $19,%ymm8,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm15,%ymm7 + + vpsrld $22,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm8,%ymm2 + vpxor %ymm4,%ymm9,%ymm15 + vpaddd %ymm5,%ymm11,%ymm11 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm15,%ymm15 + vpaddd %ymm7,%ymm15,%ymm15 + vmovdqu 64-128(%rax),%ymm5 + vpaddd 320-256-128(%rbx),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 480-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm11,%ymm7 + vpslld $26,%ymm11,%ymm2 + vmovdqu %ymm6,32-128(%rax) + vpaddd %ymm14,%ymm6,%ymm6 + + vpsrld $11,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm11,%ymm2 + vpaddd -96(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm11,%ymm2 + vpandn %ymm13,%ymm11,%ymm0 + vpand %ymm12,%ymm11,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm15,%ymm14 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm15,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm15,%ymm8,%ymm4 + + vpxor %ymm1,%ymm14,%ymm14 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm15,%ymm1 + + vpslld $19,%ymm15,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm14,%ymm7 + + vpsrld $22,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm15,%ymm2 + vpxor %ymm3,%ymm8,%ymm14 + vpaddd %ymm6,%ymm10,%ymm10 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm14,%ymm14 + vpaddd %ymm7,%ymm14,%ymm14 + vmovdqu 96-128(%rax),%ymm6 + vpaddd 352-256-128(%rbx),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 0-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm10,%ymm7 + vpslld $26,%ymm10,%ymm2 + vmovdqu %ymm5,64-128(%rax) + vpaddd %ymm13,%ymm5,%ymm5 + + vpsrld $11,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm10,%ymm2 + vpaddd -64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm10,%ymm2 + vpandn %ymm12,%ymm10,%ymm0 + vpand %ymm11,%ymm10,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm14,%ymm13 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm14,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm14,%ymm15,%ymm3 + + vpxor %ymm1,%ymm13,%ymm13 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm14,%ymm1 + + vpslld $19,%ymm14,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm13,%ymm7 + + vpsrld $22,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm14,%ymm2 + vpxor %ymm4,%ymm15,%ymm13 + vpaddd %ymm5,%ymm9,%ymm9 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm13,%ymm13 + vpaddd %ymm7,%ymm13,%ymm13 + vmovdqu 128-128(%rax),%ymm5 + vpaddd 384-256-128(%rbx),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 32-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm9,%ymm7 + vpslld $26,%ymm9,%ymm2 + vmovdqu %ymm6,96-128(%rax) + vpaddd %ymm12,%ymm6,%ymm6 + + vpsrld $11,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm9,%ymm2 + vpaddd -32(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm9,%ymm2 + vpandn %ymm11,%ymm9,%ymm0 + vpand %ymm10,%ymm9,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm13,%ymm12 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm13,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm13,%ymm14,%ymm4 + + vpxor %ymm1,%ymm12,%ymm12 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm13,%ymm1 + + vpslld $19,%ymm13,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm12,%ymm7 + + vpsrld $22,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm13,%ymm2 + vpxor %ymm3,%ymm14,%ymm12 + vpaddd %ymm6,%ymm8,%ymm8 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm12,%ymm12 + vpaddd %ymm7,%ymm12,%ymm12 + vmovdqu 160-128(%rax),%ymm6 + vpaddd 416-256-128(%rbx),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 64-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm8,%ymm7 + vpslld $26,%ymm8,%ymm2 + vmovdqu %ymm5,128-128(%rax) + vpaddd %ymm11,%ymm5,%ymm5 + + vpsrld $11,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm8,%ymm2 + vpaddd 0(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm8,%ymm2 + vpandn %ymm10,%ymm8,%ymm0 + vpand %ymm9,%ymm8,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm12,%ymm11 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm12,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm12,%ymm13,%ymm3 + + vpxor %ymm1,%ymm11,%ymm11 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm12,%ymm1 + + vpslld $19,%ymm12,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm11,%ymm7 + + vpsrld $22,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm12,%ymm2 + vpxor %ymm4,%ymm13,%ymm11 + vpaddd %ymm5,%ymm15,%ymm15 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm11,%ymm11 + vpaddd %ymm7,%ymm11,%ymm11 + vmovdqu 192-128(%rax),%ymm5 + vpaddd 448-256-128(%rbx),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 96-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm15,%ymm7 + vpslld $26,%ymm15,%ymm2 + vmovdqu %ymm6,160-128(%rax) + vpaddd %ymm10,%ymm6,%ymm6 + + vpsrld $11,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm15,%ymm2 + vpaddd 32(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm15,%ymm2 + vpandn %ymm9,%ymm15,%ymm0 + vpand %ymm8,%ymm15,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm11,%ymm10 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm11,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm11,%ymm12,%ymm4 + + vpxor %ymm1,%ymm10,%ymm10 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm11,%ymm1 + + vpslld $19,%ymm11,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm10,%ymm7 + + vpsrld $22,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm11,%ymm2 + vpxor %ymm3,%ymm12,%ymm10 + vpaddd %ymm6,%ymm14,%ymm14 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm10,%ymm10 + vpaddd %ymm7,%ymm10,%ymm10 + vmovdqu 224-128(%rax),%ymm6 + vpaddd 480-256-128(%rbx),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 128-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm14,%ymm7 + vpslld $26,%ymm14,%ymm2 + vmovdqu %ymm5,192-128(%rax) + vpaddd %ymm9,%ymm5,%ymm5 + + vpsrld $11,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm14,%ymm2 + vpaddd 64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm14,%ymm2 + vpandn %ymm8,%ymm14,%ymm0 + vpand %ymm15,%ymm14,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm10,%ymm9 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm10,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm10,%ymm11,%ymm3 + + vpxor %ymm1,%ymm9,%ymm9 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm10,%ymm1 + + vpslld $19,%ymm10,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm9,%ymm7 + + vpsrld $22,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm10,%ymm2 + vpxor %ymm4,%ymm11,%ymm9 + vpaddd %ymm5,%ymm13,%ymm13 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm9,%ymm9 + vpaddd %ymm7,%ymm9,%ymm9 + vmovdqu 256-256-128(%rbx),%ymm5 + vpaddd 0-128(%rax),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 160-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm13,%ymm7 + vpslld $26,%ymm13,%ymm2 + vmovdqu %ymm6,224-128(%rax) + vpaddd %ymm8,%ymm6,%ymm6 + + vpsrld $11,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm13,%ymm2 + vpaddd 96(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm13,%ymm2 + vpandn %ymm15,%ymm13,%ymm0 + vpand %ymm14,%ymm13,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm9,%ymm8 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm9,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm9,%ymm10,%ymm4 + + vpxor %ymm1,%ymm8,%ymm8 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm9,%ymm1 + + vpslld $19,%ymm9,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm8,%ymm7 + + vpsrld $22,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm9,%ymm2 + vpxor %ymm3,%ymm10,%ymm8 + vpaddd %ymm6,%ymm12,%ymm12 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm8,%ymm8 + vpaddd %ymm7,%ymm8,%ymm8 + addq $256,%rbp + vmovdqu 288-256-128(%rbx),%ymm6 + vpaddd 32-128(%rax),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 192-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm12,%ymm7 + vpslld $26,%ymm12,%ymm2 + vmovdqu %ymm5,256-256-128(%rbx) + vpaddd %ymm15,%ymm5,%ymm5 + + vpsrld $11,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm12,%ymm2 + vpaddd -128(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm12,%ymm2 + vpandn %ymm14,%ymm12,%ymm0 + vpand %ymm13,%ymm12,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm8,%ymm15 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm8,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm8,%ymm9,%ymm3 + + vpxor %ymm1,%ymm15,%ymm15 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm8,%ymm1 + + vpslld $19,%ymm8,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm15,%ymm7 + + vpsrld $22,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm8,%ymm2 + vpxor %ymm4,%ymm9,%ymm15 + vpaddd %ymm5,%ymm11,%ymm11 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm15,%ymm15 + vpaddd %ymm7,%ymm15,%ymm15 + vmovdqu 320-256-128(%rbx),%ymm5 + vpaddd 64-128(%rax),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 224-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm11,%ymm7 + vpslld $26,%ymm11,%ymm2 + vmovdqu %ymm6,288-256-128(%rbx) + vpaddd %ymm14,%ymm6,%ymm6 + + vpsrld $11,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm11,%ymm2 + vpaddd -96(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm11,%ymm2 + vpandn %ymm13,%ymm11,%ymm0 + vpand %ymm12,%ymm11,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm15,%ymm14 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm15,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm15,%ymm8,%ymm4 + + vpxor %ymm1,%ymm14,%ymm14 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm15,%ymm1 + + vpslld $19,%ymm15,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm14,%ymm7 + + vpsrld $22,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm15,%ymm2 + vpxor %ymm3,%ymm8,%ymm14 + vpaddd %ymm6,%ymm10,%ymm10 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm14,%ymm14 + vpaddd %ymm7,%ymm14,%ymm14 + vmovdqu 352-256-128(%rbx),%ymm6 + vpaddd 96-128(%rax),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 256-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm10,%ymm7 + vpslld $26,%ymm10,%ymm2 + vmovdqu %ymm5,320-256-128(%rbx) + vpaddd %ymm13,%ymm5,%ymm5 + + vpsrld $11,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm10,%ymm2 + vpaddd -64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm10,%ymm2 + vpandn %ymm12,%ymm10,%ymm0 + vpand %ymm11,%ymm10,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm14,%ymm13 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm14,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm14,%ymm15,%ymm3 + + vpxor %ymm1,%ymm13,%ymm13 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm14,%ymm1 + + vpslld $19,%ymm14,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm13,%ymm7 + + vpsrld $22,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm14,%ymm2 + vpxor %ymm4,%ymm15,%ymm13 + vpaddd %ymm5,%ymm9,%ymm9 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm13,%ymm13 + vpaddd %ymm7,%ymm13,%ymm13 + vmovdqu 384-256-128(%rbx),%ymm5 + vpaddd 128-128(%rax),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 288-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm9,%ymm7 + vpslld $26,%ymm9,%ymm2 + vmovdqu %ymm6,352-256-128(%rbx) + vpaddd %ymm12,%ymm6,%ymm6 + + vpsrld $11,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm9,%ymm2 + vpaddd -32(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm9,%ymm2 + vpandn %ymm11,%ymm9,%ymm0 + vpand %ymm10,%ymm9,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm13,%ymm12 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm13,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm13,%ymm14,%ymm4 + + vpxor %ymm1,%ymm12,%ymm12 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm13,%ymm1 + + vpslld $19,%ymm13,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm12,%ymm7 + + vpsrld $22,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm13,%ymm2 + vpxor %ymm3,%ymm14,%ymm12 + vpaddd %ymm6,%ymm8,%ymm8 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm12,%ymm12 + vpaddd %ymm7,%ymm12,%ymm12 + vmovdqu 416-256-128(%rbx),%ymm6 + vpaddd 160-128(%rax),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 320-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm8,%ymm7 + vpslld $26,%ymm8,%ymm2 + vmovdqu %ymm5,384-256-128(%rbx) + vpaddd %ymm11,%ymm5,%ymm5 + + vpsrld $11,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm8,%ymm2 + vpaddd 0(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm8,%ymm2 + vpandn %ymm10,%ymm8,%ymm0 + vpand %ymm9,%ymm8,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm12,%ymm11 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm12,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm12,%ymm13,%ymm3 + + vpxor %ymm1,%ymm11,%ymm11 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm12,%ymm1 + + vpslld $19,%ymm12,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm11,%ymm7 + + vpsrld $22,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm12,%ymm2 + vpxor %ymm4,%ymm13,%ymm11 + vpaddd %ymm5,%ymm15,%ymm15 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm11,%ymm11 + vpaddd %ymm7,%ymm11,%ymm11 + vmovdqu 448-256-128(%rbx),%ymm5 + vpaddd 192-128(%rax),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 352-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm15,%ymm7 + vpslld $26,%ymm15,%ymm2 + vmovdqu %ymm6,416-256-128(%rbx) + vpaddd %ymm10,%ymm6,%ymm6 + + vpsrld $11,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm15,%ymm2 + vpaddd 32(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm15,%ymm2 + vpandn %ymm9,%ymm15,%ymm0 + vpand %ymm8,%ymm15,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm11,%ymm10 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm11,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm11,%ymm12,%ymm4 + + vpxor %ymm1,%ymm10,%ymm10 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm11,%ymm1 + + vpslld $19,%ymm11,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm10,%ymm7 + + vpsrld $22,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm11,%ymm2 + vpxor %ymm3,%ymm12,%ymm10 + vpaddd %ymm6,%ymm14,%ymm14 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm10,%ymm10 + vpaddd %ymm7,%ymm10,%ymm10 + vmovdqu 480-256-128(%rbx),%ymm6 + vpaddd 224-128(%rax),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 384-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm14,%ymm7 + vpslld $26,%ymm14,%ymm2 + vmovdqu %ymm5,448-256-128(%rbx) + vpaddd %ymm9,%ymm5,%ymm5 + + vpsrld $11,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm14,%ymm2 + vpaddd 64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm14,%ymm2 + vpandn %ymm8,%ymm14,%ymm0 + vpand %ymm15,%ymm14,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm10,%ymm9 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm10,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm10,%ymm11,%ymm3 + + vpxor %ymm1,%ymm9,%ymm9 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm10,%ymm1 + + vpslld $19,%ymm10,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm9,%ymm7 + + vpsrld $22,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm10,%ymm2 + vpxor %ymm4,%ymm11,%ymm9 + vpaddd %ymm5,%ymm13,%ymm13 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm9,%ymm9 + vpaddd %ymm7,%ymm9,%ymm9 + vmovdqu 0-128(%rax),%ymm5 + vpaddd 256-256-128(%rbx),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 416-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm13,%ymm7 + vpslld $26,%ymm13,%ymm2 + vmovdqu %ymm6,480-256-128(%rbx) + vpaddd %ymm8,%ymm6,%ymm6 + + vpsrld $11,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm13,%ymm2 + vpaddd 96(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm13,%ymm2 + vpandn %ymm15,%ymm13,%ymm0 + vpand %ymm14,%ymm13,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm9,%ymm8 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm9,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm9,%ymm10,%ymm4 + + vpxor %ymm1,%ymm8,%ymm8 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm9,%ymm1 + + vpslld $19,%ymm9,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm8,%ymm7 + + vpsrld $22,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm9,%ymm2 + vpxor %ymm3,%ymm10,%ymm8 + vpaddd %ymm6,%ymm12,%ymm12 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm8,%ymm8 + vpaddd %ymm7,%ymm8,%ymm8 + addq $256,%rbp + decl %ecx + jnz .Loop_16_xx_avx2 + + movl $1,%ecx + leaq 512(%rsp),%rbx + leaq K256+128(%rip),%rbp + cmpl 0(%rbx),%ecx + cmovgeq %rbp,%r12 + cmpl 4(%rbx),%ecx + cmovgeq %rbp,%r13 + cmpl 8(%rbx),%ecx + cmovgeq %rbp,%r14 + cmpl 12(%rbx),%ecx + cmovgeq %rbp,%r15 + cmpl 16(%rbx),%ecx + cmovgeq %rbp,%r8 + cmpl 20(%rbx),%ecx + cmovgeq %rbp,%r9 + cmpl 24(%rbx),%ecx + cmovgeq %rbp,%r10 + cmpl 28(%rbx),%ecx + cmovgeq %rbp,%r11 + vmovdqa (%rbx),%ymm7 + vpxor %ymm0,%ymm0,%ymm0 + vmovdqa %ymm7,%ymm6 + vpcmpgtd %ymm0,%ymm6,%ymm6 + vpaddd %ymm6,%ymm7,%ymm7 + + vmovdqu 0-128(%rdi),%ymm0 + vpand %ymm6,%ymm8,%ymm8 + vmovdqu 32-128(%rdi),%ymm1 + vpand %ymm6,%ymm9,%ymm9 + vmovdqu 64-128(%rdi),%ymm2 + vpand %ymm6,%ymm10,%ymm10 + vmovdqu 96-128(%rdi),%ymm5 + vpand %ymm6,%ymm11,%ymm11 + vpaddd %ymm0,%ymm8,%ymm8 + vmovdqu 128-128(%rdi),%ymm0 + vpand %ymm6,%ymm12,%ymm12 + vpaddd %ymm1,%ymm9,%ymm9 + vmovdqu 160-128(%rdi),%ymm1 + vpand %ymm6,%ymm13,%ymm13 + vpaddd %ymm2,%ymm10,%ymm10 + vmovdqu 192-128(%rdi),%ymm2 + vpand %ymm6,%ymm14,%ymm14 + vpaddd %ymm5,%ymm11,%ymm11 + vmovdqu 224-128(%rdi),%ymm5 + vpand %ymm6,%ymm15,%ymm15 + vpaddd %ymm0,%ymm12,%ymm12 + vpaddd %ymm1,%ymm13,%ymm13 + vmovdqu %ymm8,0-128(%rdi) + vpaddd %ymm2,%ymm14,%ymm14 + vmovdqu %ymm9,32-128(%rdi) + vpaddd %ymm5,%ymm15,%ymm15 + vmovdqu %ymm10,64-128(%rdi) + vmovdqu %ymm11,96-128(%rdi) + vmovdqu %ymm12,128-128(%rdi) + vmovdqu %ymm13,160-128(%rdi) + vmovdqu %ymm14,192-128(%rdi) + vmovdqu %ymm15,224-128(%rdi) + + vmovdqu %ymm7,(%rbx) + leaq 256+128(%rsp),%rbx + vmovdqu .Lpbswap(%rip),%ymm6 + decl %edx + jnz .Loop_avx2 + + + + + + + +.Ldone_avx2: + movq 544(%rsp),%rax +.cfi_def_cfa %rax,8 + vzeroupper + movq -48(%rax),%r15 +.cfi_restore %r15 + movq -40(%rax),%r14 +.cfi_restore %r14 + movq -32(%rax),%r13 +.cfi_restore %r13 + movq -24(%rax),%r12 +.cfi_restore %r12 + movq -16(%rax),%rbp +.cfi_restore %rbp + movq -8(%rax),%rbx +.cfi_restore %rbx + leaq (%rax),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_avx2: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha256_multi_block_avx2,.-sha256_multi_block_avx2 +.align 256 +K256: +.long 1116352408,1116352408,1116352408,1116352408 +.long 1116352408,1116352408,1116352408,1116352408 +.long 1899447441,1899447441,1899447441,1899447441 +.long 1899447441,1899447441,1899447441,1899447441 +.long 3049323471,3049323471,3049323471,3049323471 +.long 3049323471,3049323471,3049323471,3049323471 +.long 3921009573,3921009573,3921009573,3921009573 +.long 3921009573,3921009573,3921009573,3921009573 +.long 961987163,961987163,961987163,961987163 +.long 961987163,961987163,961987163,961987163 +.long 1508970993,1508970993,1508970993,1508970993 +.long 1508970993,1508970993,1508970993,1508970993 +.long 2453635748,2453635748,2453635748,2453635748 +.long 2453635748,2453635748,2453635748,2453635748 +.long 2870763221,2870763221,2870763221,2870763221 +.long 2870763221,2870763221,2870763221,2870763221 +.long 3624381080,3624381080,3624381080,3624381080 +.long 3624381080,3624381080,3624381080,3624381080 +.long 310598401,310598401,310598401,310598401 +.long 310598401,310598401,310598401,310598401 +.long 607225278,607225278,607225278,607225278 +.long 607225278,607225278,607225278,607225278 +.long 1426881987,1426881987,1426881987,1426881987 +.long 1426881987,1426881987,1426881987,1426881987 +.long 1925078388,1925078388,1925078388,1925078388 +.long 1925078388,1925078388,1925078388,1925078388 +.long 2162078206,2162078206,2162078206,2162078206 +.long 2162078206,2162078206,2162078206,2162078206 +.long 2614888103,2614888103,2614888103,2614888103 +.long 2614888103,2614888103,2614888103,2614888103 +.long 3248222580,3248222580,3248222580,3248222580 +.long 3248222580,3248222580,3248222580,3248222580 +.long 3835390401,3835390401,3835390401,3835390401 +.long 3835390401,3835390401,3835390401,3835390401 +.long 4022224774,4022224774,4022224774,4022224774 +.long 4022224774,4022224774,4022224774,4022224774 +.long 264347078,264347078,264347078,264347078 +.long 264347078,264347078,264347078,264347078 +.long 604807628,604807628,604807628,604807628 +.long 604807628,604807628,604807628,604807628 +.long 770255983,770255983,770255983,770255983 +.long 770255983,770255983,770255983,770255983 +.long 1249150122,1249150122,1249150122,1249150122 +.long 1249150122,1249150122,1249150122,1249150122 +.long 1555081692,1555081692,1555081692,1555081692 +.long 1555081692,1555081692,1555081692,1555081692 +.long 1996064986,1996064986,1996064986,1996064986 +.long 1996064986,1996064986,1996064986,1996064986 +.long 2554220882,2554220882,2554220882,2554220882 +.long 2554220882,2554220882,2554220882,2554220882 +.long 2821834349,2821834349,2821834349,2821834349 +.long 2821834349,2821834349,2821834349,2821834349 +.long 2952996808,2952996808,2952996808,2952996808 +.long 2952996808,2952996808,2952996808,2952996808 +.long 3210313671,3210313671,3210313671,3210313671 +.long 3210313671,3210313671,3210313671,3210313671 +.long 3336571891,3336571891,3336571891,3336571891 +.long 3336571891,3336571891,3336571891,3336571891 +.long 3584528711,3584528711,3584528711,3584528711 +.long 3584528711,3584528711,3584528711,3584528711 +.long 113926993,113926993,113926993,113926993 +.long 113926993,113926993,113926993,113926993 +.long 338241895,338241895,338241895,338241895 +.long 338241895,338241895,338241895,338241895 +.long 666307205,666307205,666307205,666307205 +.long 666307205,666307205,666307205,666307205 +.long 773529912,773529912,773529912,773529912 +.long 773529912,773529912,773529912,773529912 +.long 1294757372,1294757372,1294757372,1294757372 +.long 1294757372,1294757372,1294757372,1294757372 +.long 1396182291,1396182291,1396182291,1396182291 +.long 1396182291,1396182291,1396182291,1396182291 +.long 1695183700,1695183700,1695183700,1695183700 +.long 1695183700,1695183700,1695183700,1695183700 +.long 1986661051,1986661051,1986661051,1986661051 +.long 1986661051,1986661051,1986661051,1986661051 +.long 2177026350,2177026350,2177026350,2177026350 +.long 2177026350,2177026350,2177026350,2177026350 +.long 2456956037,2456956037,2456956037,2456956037 +.long 2456956037,2456956037,2456956037,2456956037 +.long 2730485921,2730485921,2730485921,2730485921 +.long 2730485921,2730485921,2730485921,2730485921 +.long 2820302411,2820302411,2820302411,2820302411 +.long 2820302411,2820302411,2820302411,2820302411 +.long 3259730800,3259730800,3259730800,3259730800 +.long 3259730800,3259730800,3259730800,3259730800 +.long 3345764771,3345764771,3345764771,3345764771 +.long 3345764771,3345764771,3345764771,3345764771 +.long 3516065817,3516065817,3516065817,3516065817 +.long 3516065817,3516065817,3516065817,3516065817 +.long 3600352804,3600352804,3600352804,3600352804 +.long 3600352804,3600352804,3600352804,3600352804 +.long 4094571909,4094571909,4094571909,4094571909 +.long 4094571909,4094571909,4094571909,4094571909 +.long 275423344,275423344,275423344,275423344 +.long 275423344,275423344,275423344,275423344 +.long 430227734,430227734,430227734,430227734 +.long 430227734,430227734,430227734,430227734 +.long 506948616,506948616,506948616,506948616 +.long 506948616,506948616,506948616,506948616 +.long 659060556,659060556,659060556,659060556 +.long 659060556,659060556,659060556,659060556 +.long 883997877,883997877,883997877,883997877 +.long 883997877,883997877,883997877,883997877 +.long 958139571,958139571,958139571,958139571 +.long 958139571,958139571,958139571,958139571 +.long 1322822218,1322822218,1322822218,1322822218 +.long 1322822218,1322822218,1322822218,1322822218 +.long 1537002063,1537002063,1537002063,1537002063 +.long 1537002063,1537002063,1537002063,1537002063 +.long 1747873779,1747873779,1747873779,1747873779 +.long 1747873779,1747873779,1747873779,1747873779 +.long 1955562222,1955562222,1955562222,1955562222 +.long 1955562222,1955562222,1955562222,1955562222 +.long 2024104815,2024104815,2024104815,2024104815 +.long 2024104815,2024104815,2024104815,2024104815 +.long 2227730452,2227730452,2227730452,2227730452 +.long 2227730452,2227730452,2227730452,2227730452 +.long 2361852424,2361852424,2361852424,2361852424 +.long 2361852424,2361852424,2361852424,2361852424 +.long 2428436474,2428436474,2428436474,2428436474 +.long 2428436474,2428436474,2428436474,2428436474 +.long 2756734187,2756734187,2756734187,2756734187 +.long 2756734187,2756734187,2756734187,2756734187 +.long 3204031479,3204031479,3204031479,3204031479 +.long 3204031479,3204031479,3204031479,3204031479 +.long 3329325298,3329325298,3329325298,3329325298 +.long 3329325298,3329325298,3329325298,3329325298 +.Lpbswap: +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +K256_shaext: +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 +.byte 83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha256-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha256-x86_64.s new file mode 100644 index 0000000..a7b6090 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha256-x86_64.s @@ -0,0 +1,5456 @@ +.text + + +.globl sha256_block_data_order +.type sha256_block_data_order,@function +.align 16 +sha256_block_data_order: +.cfi_startproc + leaq OPENSSL_ia32cap_P(%rip),%r11 + movl 0(%r11),%r9d + movl 4(%r11),%r10d + movl 8(%r11),%r11d + testl $536870912,%r11d + jnz _shaext_shortcut + andl $296,%r11d + cmpl $296,%r11d + je .Lavx2_shortcut + andl $1073741824,%r9d + andl $268435968,%r10d + orl %r9d,%r10d + cmpl $1342177792,%r10d + je .Lavx_shortcut + testl $512,%r10d + jnz .Lssse3_shortcut + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + shlq $4,%rdx + subq $64+32,%rsp + leaq (%rsi,%rdx,4),%rdx + andq $-64,%rsp + movq %rdi,64+0(%rsp) + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + movq %rax,88(%rsp) +.cfi_escape 0x0f,0x06,0x77,0xd8,0x00,0x06,0x23,0x08 +.Lprologue: + + movl 0(%rdi),%eax + movl 4(%rdi),%ebx + movl 8(%rdi),%ecx + movl 12(%rdi),%edx + movl 16(%rdi),%r8d + movl 20(%rdi),%r9d + movl 24(%rdi),%r10d + movl 28(%rdi),%r11d + jmp .Lloop + +.align 16 +.Lloop: + movl %ebx,%edi + leaq K256(%rip),%rbp + xorl %ecx,%edi + movl 0(%rsi),%r12d + movl %r8d,%r13d + movl %eax,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r9d,%r15d + + xorl %r8d,%r13d + rorl $9,%r14d + xorl %r10d,%r15d + + movl %r12d,0(%rsp) + xorl %eax,%r14d + andl %r8d,%r15d + + rorl $5,%r13d + addl %r11d,%r12d + xorl %r10d,%r15d + + rorl $11,%r14d + xorl %r8d,%r13d + addl %r15d,%r12d + + movl %eax,%r15d + addl (%rbp),%r12d + xorl %eax,%r14d + + xorl %ebx,%r15d + rorl $6,%r13d + movl %ebx,%r11d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r11d + addl %r12d,%edx + addl %r12d,%r11d + + leaq 4(%rbp),%rbp + addl %r14d,%r11d + movl 4(%rsi),%r12d + movl %edx,%r13d + movl %r11d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r8d,%edi + + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%edi + + movl %r12d,4(%rsp) + xorl %r11d,%r14d + andl %edx,%edi + + rorl $5,%r13d + addl %r10d,%r12d + xorl %r9d,%edi + + rorl $11,%r14d + xorl %edx,%r13d + addl %edi,%r12d + + movl %r11d,%edi + addl (%rbp),%r12d + xorl %r11d,%r14d + + xorl %eax,%edi + rorl $6,%r13d + movl %eax,%r10d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r10d + addl %r12d,%ecx + addl %r12d,%r10d + + leaq 4(%rbp),%rbp + addl %r14d,%r10d + movl 8(%rsi),%r12d + movl %ecx,%r13d + movl %r10d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %edx,%r15d + + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r15d + + movl %r12d,8(%rsp) + xorl %r10d,%r14d + andl %ecx,%r15d + + rorl $5,%r13d + addl %r9d,%r12d + xorl %r8d,%r15d + + rorl $11,%r14d + xorl %ecx,%r13d + addl %r15d,%r12d + + movl %r10d,%r15d + addl (%rbp),%r12d + xorl %r10d,%r14d + + xorl %r11d,%r15d + rorl $6,%r13d + movl %r11d,%r9d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r9d + addl %r12d,%ebx + addl %r12d,%r9d + + leaq 4(%rbp),%rbp + addl %r14d,%r9d + movl 12(%rsi),%r12d + movl %ebx,%r13d + movl %r9d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %ecx,%edi + + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%edi + + movl %r12d,12(%rsp) + xorl %r9d,%r14d + andl %ebx,%edi + + rorl $5,%r13d + addl %r8d,%r12d + xorl %edx,%edi + + rorl $11,%r14d + xorl %ebx,%r13d + addl %edi,%r12d + + movl %r9d,%edi + addl (%rbp),%r12d + xorl %r9d,%r14d + + xorl %r10d,%edi + rorl $6,%r13d + movl %r10d,%r8d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r8d + addl %r12d,%eax + addl %r12d,%r8d + + leaq 20(%rbp),%rbp + addl %r14d,%r8d + movl 16(%rsi),%r12d + movl %eax,%r13d + movl %r8d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %ebx,%r15d + + xorl %eax,%r13d + rorl $9,%r14d + xorl %ecx,%r15d + + movl %r12d,16(%rsp) + xorl %r8d,%r14d + andl %eax,%r15d + + rorl $5,%r13d + addl %edx,%r12d + xorl %ecx,%r15d + + rorl $11,%r14d + xorl %eax,%r13d + addl %r15d,%r12d + + movl %r8d,%r15d + addl (%rbp),%r12d + xorl %r8d,%r14d + + xorl %r9d,%r15d + rorl $6,%r13d + movl %r9d,%edx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%edx + addl %r12d,%r11d + addl %r12d,%edx + + leaq 4(%rbp),%rbp + addl %r14d,%edx + movl 20(%rsi),%r12d + movl %r11d,%r13d + movl %edx,%r14d + bswapl %r12d + rorl $14,%r13d + movl %eax,%edi + + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%edi + + movl %r12d,20(%rsp) + xorl %edx,%r14d + andl %r11d,%edi + + rorl $5,%r13d + addl %ecx,%r12d + xorl %ebx,%edi + + rorl $11,%r14d + xorl %r11d,%r13d + addl %edi,%r12d + + movl %edx,%edi + addl (%rbp),%r12d + xorl %edx,%r14d + + xorl %r8d,%edi + rorl $6,%r13d + movl %r8d,%ecx + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%ecx + addl %r12d,%r10d + addl %r12d,%ecx + + leaq 4(%rbp),%rbp + addl %r14d,%ecx + movl 24(%rsi),%r12d + movl %r10d,%r13d + movl %ecx,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r11d,%r15d + + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r15d + + movl %r12d,24(%rsp) + xorl %ecx,%r14d + andl %r10d,%r15d + + rorl $5,%r13d + addl %ebx,%r12d + xorl %eax,%r15d + + rorl $11,%r14d + xorl %r10d,%r13d + addl %r15d,%r12d + + movl %ecx,%r15d + addl (%rbp),%r12d + xorl %ecx,%r14d + + xorl %edx,%r15d + rorl $6,%r13d + movl %edx,%ebx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%ebx + addl %r12d,%r9d + addl %r12d,%ebx + + leaq 4(%rbp),%rbp + addl %r14d,%ebx + movl 28(%rsi),%r12d + movl %r9d,%r13d + movl %ebx,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r10d,%edi + + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%edi + + movl %r12d,28(%rsp) + xorl %ebx,%r14d + andl %r9d,%edi + + rorl $5,%r13d + addl %eax,%r12d + xorl %r11d,%edi + + rorl $11,%r14d + xorl %r9d,%r13d + addl %edi,%r12d + + movl %ebx,%edi + addl (%rbp),%r12d + xorl %ebx,%r14d + + xorl %ecx,%edi + rorl $6,%r13d + movl %ecx,%eax + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%eax + addl %r12d,%r8d + addl %r12d,%eax + + leaq 20(%rbp),%rbp + addl %r14d,%eax + movl 32(%rsi),%r12d + movl %r8d,%r13d + movl %eax,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r9d,%r15d + + xorl %r8d,%r13d + rorl $9,%r14d + xorl %r10d,%r15d + + movl %r12d,32(%rsp) + xorl %eax,%r14d + andl %r8d,%r15d + + rorl $5,%r13d + addl %r11d,%r12d + xorl %r10d,%r15d + + rorl $11,%r14d + xorl %r8d,%r13d + addl %r15d,%r12d + + movl %eax,%r15d + addl (%rbp),%r12d + xorl %eax,%r14d + + xorl %ebx,%r15d + rorl $6,%r13d + movl %ebx,%r11d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r11d + addl %r12d,%edx + addl %r12d,%r11d + + leaq 4(%rbp),%rbp + addl %r14d,%r11d + movl 36(%rsi),%r12d + movl %edx,%r13d + movl %r11d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r8d,%edi + + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%edi + + movl %r12d,36(%rsp) + xorl %r11d,%r14d + andl %edx,%edi + + rorl $5,%r13d + addl %r10d,%r12d + xorl %r9d,%edi + + rorl $11,%r14d + xorl %edx,%r13d + addl %edi,%r12d + + movl %r11d,%edi + addl (%rbp),%r12d + xorl %r11d,%r14d + + xorl %eax,%edi + rorl $6,%r13d + movl %eax,%r10d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r10d + addl %r12d,%ecx + addl %r12d,%r10d + + leaq 4(%rbp),%rbp + addl %r14d,%r10d + movl 40(%rsi),%r12d + movl %ecx,%r13d + movl %r10d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %edx,%r15d + + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r15d + + movl %r12d,40(%rsp) + xorl %r10d,%r14d + andl %ecx,%r15d + + rorl $5,%r13d + addl %r9d,%r12d + xorl %r8d,%r15d + + rorl $11,%r14d + xorl %ecx,%r13d + addl %r15d,%r12d + + movl %r10d,%r15d + addl (%rbp),%r12d + xorl %r10d,%r14d + + xorl %r11d,%r15d + rorl $6,%r13d + movl %r11d,%r9d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r9d + addl %r12d,%ebx + addl %r12d,%r9d + + leaq 4(%rbp),%rbp + addl %r14d,%r9d + movl 44(%rsi),%r12d + movl %ebx,%r13d + movl %r9d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %ecx,%edi + + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%edi + + movl %r12d,44(%rsp) + xorl %r9d,%r14d + andl %ebx,%edi + + rorl $5,%r13d + addl %r8d,%r12d + xorl %edx,%edi + + rorl $11,%r14d + xorl %ebx,%r13d + addl %edi,%r12d + + movl %r9d,%edi + addl (%rbp),%r12d + xorl %r9d,%r14d + + xorl %r10d,%edi + rorl $6,%r13d + movl %r10d,%r8d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r8d + addl %r12d,%eax + addl %r12d,%r8d + + leaq 20(%rbp),%rbp + addl %r14d,%r8d + movl 48(%rsi),%r12d + movl %eax,%r13d + movl %r8d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %ebx,%r15d + + xorl %eax,%r13d + rorl $9,%r14d + xorl %ecx,%r15d + + movl %r12d,48(%rsp) + xorl %r8d,%r14d + andl %eax,%r15d + + rorl $5,%r13d + addl %edx,%r12d + xorl %ecx,%r15d + + rorl $11,%r14d + xorl %eax,%r13d + addl %r15d,%r12d + + movl %r8d,%r15d + addl (%rbp),%r12d + xorl %r8d,%r14d + + xorl %r9d,%r15d + rorl $6,%r13d + movl %r9d,%edx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%edx + addl %r12d,%r11d + addl %r12d,%edx + + leaq 4(%rbp),%rbp + addl %r14d,%edx + movl 52(%rsi),%r12d + movl %r11d,%r13d + movl %edx,%r14d + bswapl %r12d + rorl $14,%r13d + movl %eax,%edi + + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%edi + + movl %r12d,52(%rsp) + xorl %edx,%r14d + andl %r11d,%edi + + rorl $5,%r13d + addl %ecx,%r12d + xorl %ebx,%edi + + rorl $11,%r14d + xorl %r11d,%r13d + addl %edi,%r12d + + movl %edx,%edi + addl (%rbp),%r12d + xorl %edx,%r14d + + xorl %r8d,%edi + rorl $6,%r13d + movl %r8d,%ecx + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%ecx + addl %r12d,%r10d + addl %r12d,%ecx + + leaq 4(%rbp),%rbp + addl %r14d,%ecx + movl 56(%rsi),%r12d + movl %r10d,%r13d + movl %ecx,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r11d,%r15d + + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r15d + + movl %r12d,56(%rsp) + xorl %ecx,%r14d + andl %r10d,%r15d + + rorl $5,%r13d + addl %ebx,%r12d + xorl %eax,%r15d + + rorl $11,%r14d + xorl %r10d,%r13d + addl %r15d,%r12d + + movl %ecx,%r15d + addl (%rbp),%r12d + xorl %ecx,%r14d + + xorl %edx,%r15d + rorl $6,%r13d + movl %edx,%ebx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%ebx + addl %r12d,%r9d + addl %r12d,%ebx + + leaq 4(%rbp),%rbp + addl %r14d,%ebx + movl 60(%rsi),%r12d + movl %r9d,%r13d + movl %ebx,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r10d,%edi + + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%edi + + movl %r12d,60(%rsp) + xorl %ebx,%r14d + andl %r9d,%edi + + rorl $5,%r13d + addl %eax,%r12d + xorl %r11d,%edi + + rorl $11,%r14d + xorl %r9d,%r13d + addl %edi,%r12d + + movl %ebx,%edi + addl (%rbp),%r12d + xorl %ebx,%r14d + + xorl %ecx,%edi + rorl $6,%r13d + movl %ecx,%eax + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%eax + addl %r12d,%r8d + addl %r12d,%eax + + leaq 20(%rbp),%rbp + jmp .Lrounds_16_xx +.align 16 +.Lrounds_16_xx: + movl 4(%rsp),%r13d + movl 56(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%eax + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 36(%rsp),%r12d + + addl 0(%rsp),%r12d + movl %r8d,%r13d + addl %r15d,%r12d + movl %eax,%r14d + rorl $14,%r13d + movl %r9d,%r15d + + xorl %r8d,%r13d + rorl $9,%r14d + xorl %r10d,%r15d + + movl %r12d,0(%rsp) + xorl %eax,%r14d + andl %r8d,%r15d + + rorl $5,%r13d + addl %r11d,%r12d + xorl %r10d,%r15d + + rorl $11,%r14d + xorl %r8d,%r13d + addl %r15d,%r12d + + movl %eax,%r15d + addl (%rbp),%r12d + xorl %eax,%r14d + + xorl %ebx,%r15d + rorl $6,%r13d + movl %ebx,%r11d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r11d + addl %r12d,%edx + addl %r12d,%r11d + + leaq 4(%rbp),%rbp + movl 8(%rsp),%r13d + movl 60(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r11d + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 40(%rsp),%r12d + + addl 4(%rsp),%r12d + movl %edx,%r13d + addl %edi,%r12d + movl %r11d,%r14d + rorl $14,%r13d + movl %r8d,%edi + + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%edi + + movl %r12d,4(%rsp) + xorl %r11d,%r14d + andl %edx,%edi + + rorl $5,%r13d + addl %r10d,%r12d + xorl %r9d,%edi + + rorl $11,%r14d + xorl %edx,%r13d + addl %edi,%r12d + + movl %r11d,%edi + addl (%rbp),%r12d + xorl %r11d,%r14d + + xorl %eax,%edi + rorl $6,%r13d + movl %eax,%r10d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r10d + addl %r12d,%ecx + addl %r12d,%r10d + + leaq 4(%rbp),%rbp + movl 12(%rsp),%r13d + movl 0(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r10d + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 44(%rsp),%r12d + + addl 8(%rsp),%r12d + movl %ecx,%r13d + addl %r15d,%r12d + movl %r10d,%r14d + rorl $14,%r13d + movl %edx,%r15d + + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r15d + + movl %r12d,8(%rsp) + xorl %r10d,%r14d + andl %ecx,%r15d + + rorl $5,%r13d + addl %r9d,%r12d + xorl %r8d,%r15d + + rorl $11,%r14d + xorl %ecx,%r13d + addl %r15d,%r12d + + movl %r10d,%r15d + addl (%rbp),%r12d + xorl %r10d,%r14d + + xorl %r11d,%r15d + rorl $6,%r13d + movl %r11d,%r9d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r9d + addl %r12d,%ebx + addl %r12d,%r9d + + leaq 4(%rbp),%rbp + movl 16(%rsp),%r13d + movl 4(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r9d + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 48(%rsp),%r12d + + addl 12(%rsp),%r12d + movl %ebx,%r13d + addl %edi,%r12d + movl %r9d,%r14d + rorl $14,%r13d + movl %ecx,%edi + + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%edi + + movl %r12d,12(%rsp) + xorl %r9d,%r14d + andl %ebx,%edi + + rorl $5,%r13d + addl %r8d,%r12d + xorl %edx,%edi + + rorl $11,%r14d + xorl %ebx,%r13d + addl %edi,%r12d + + movl %r9d,%edi + addl (%rbp),%r12d + xorl %r9d,%r14d + + xorl %r10d,%edi + rorl $6,%r13d + movl %r10d,%r8d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r8d + addl %r12d,%eax + addl %r12d,%r8d + + leaq 20(%rbp),%rbp + movl 20(%rsp),%r13d + movl 8(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r8d + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 52(%rsp),%r12d + + addl 16(%rsp),%r12d + movl %eax,%r13d + addl %r15d,%r12d + movl %r8d,%r14d + rorl $14,%r13d + movl %ebx,%r15d + + xorl %eax,%r13d + rorl $9,%r14d + xorl %ecx,%r15d + + movl %r12d,16(%rsp) + xorl %r8d,%r14d + andl %eax,%r15d + + rorl $5,%r13d + addl %edx,%r12d + xorl %ecx,%r15d + + rorl $11,%r14d + xorl %eax,%r13d + addl %r15d,%r12d + + movl %r8d,%r15d + addl (%rbp),%r12d + xorl %r8d,%r14d + + xorl %r9d,%r15d + rorl $6,%r13d + movl %r9d,%edx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%edx + addl %r12d,%r11d + addl %r12d,%edx + + leaq 4(%rbp),%rbp + movl 24(%rsp),%r13d + movl 12(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%edx + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 56(%rsp),%r12d + + addl 20(%rsp),%r12d + movl %r11d,%r13d + addl %edi,%r12d + movl %edx,%r14d + rorl $14,%r13d + movl %eax,%edi + + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%edi + + movl %r12d,20(%rsp) + xorl %edx,%r14d + andl %r11d,%edi + + rorl $5,%r13d + addl %ecx,%r12d + xorl %ebx,%edi + + rorl $11,%r14d + xorl %r11d,%r13d + addl %edi,%r12d + + movl %edx,%edi + addl (%rbp),%r12d + xorl %edx,%r14d + + xorl %r8d,%edi + rorl $6,%r13d + movl %r8d,%ecx + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%ecx + addl %r12d,%r10d + addl %r12d,%ecx + + leaq 4(%rbp),%rbp + movl 28(%rsp),%r13d + movl 16(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%ecx + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 60(%rsp),%r12d + + addl 24(%rsp),%r12d + movl %r10d,%r13d + addl %r15d,%r12d + movl %ecx,%r14d + rorl $14,%r13d + movl %r11d,%r15d + + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r15d + + movl %r12d,24(%rsp) + xorl %ecx,%r14d + andl %r10d,%r15d + + rorl $5,%r13d + addl %ebx,%r12d + xorl %eax,%r15d + + rorl $11,%r14d + xorl %r10d,%r13d + addl %r15d,%r12d + + movl %ecx,%r15d + addl (%rbp),%r12d + xorl %ecx,%r14d + + xorl %edx,%r15d + rorl $6,%r13d + movl %edx,%ebx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%ebx + addl %r12d,%r9d + addl %r12d,%ebx + + leaq 4(%rbp),%rbp + movl 32(%rsp),%r13d + movl 20(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%ebx + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 0(%rsp),%r12d + + addl 28(%rsp),%r12d + movl %r9d,%r13d + addl %edi,%r12d + movl %ebx,%r14d + rorl $14,%r13d + movl %r10d,%edi + + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%edi + + movl %r12d,28(%rsp) + xorl %ebx,%r14d + andl %r9d,%edi + + rorl $5,%r13d + addl %eax,%r12d + xorl %r11d,%edi + + rorl $11,%r14d + xorl %r9d,%r13d + addl %edi,%r12d + + movl %ebx,%edi + addl (%rbp),%r12d + xorl %ebx,%r14d + + xorl %ecx,%edi + rorl $6,%r13d + movl %ecx,%eax + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%eax + addl %r12d,%r8d + addl %r12d,%eax + + leaq 20(%rbp),%rbp + movl 36(%rsp),%r13d + movl 24(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%eax + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 4(%rsp),%r12d + + addl 32(%rsp),%r12d + movl %r8d,%r13d + addl %r15d,%r12d + movl %eax,%r14d + rorl $14,%r13d + movl %r9d,%r15d + + xorl %r8d,%r13d + rorl $9,%r14d + xorl %r10d,%r15d + + movl %r12d,32(%rsp) + xorl %eax,%r14d + andl %r8d,%r15d + + rorl $5,%r13d + addl %r11d,%r12d + xorl %r10d,%r15d + + rorl $11,%r14d + xorl %r8d,%r13d + addl %r15d,%r12d + + movl %eax,%r15d + addl (%rbp),%r12d + xorl %eax,%r14d + + xorl %ebx,%r15d + rorl $6,%r13d + movl %ebx,%r11d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r11d + addl %r12d,%edx + addl %r12d,%r11d + + leaq 4(%rbp),%rbp + movl 40(%rsp),%r13d + movl 28(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r11d + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 8(%rsp),%r12d + + addl 36(%rsp),%r12d + movl %edx,%r13d + addl %edi,%r12d + movl %r11d,%r14d + rorl $14,%r13d + movl %r8d,%edi + + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%edi + + movl %r12d,36(%rsp) + xorl %r11d,%r14d + andl %edx,%edi + + rorl $5,%r13d + addl %r10d,%r12d + xorl %r9d,%edi + + rorl $11,%r14d + xorl %edx,%r13d + addl %edi,%r12d + + movl %r11d,%edi + addl (%rbp),%r12d + xorl %r11d,%r14d + + xorl %eax,%edi + rorl $6,%r13d + movl %eax,%r10d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r10d + addl %r12d,%ecx + addl %r12d,%r10d + + leaq 4(%rbp),%rbp + movl 44(%rsp),%r13d + movl 32(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r10d + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 12(%rsp),%r12d + + addl 40(%rsp),%r12d + movl %ecx,%r13d + addl %r15d,%r12d + movl %r10d,%r14d + rorl $14,%r13d + movl %edx,%r15d + + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r15d + + movl %r12d,40(%rsp) + xorl %r10d,%r14d + andl %ecx,%r15d + + rorl $5,%r13d + addl %r9d,%r12d + xorl %r8d,%r15d + + rorl $11,%r14d + xorl %ecx,%r13d + addl %r15d,%r12d + + movl %r10d,%r15d + addl (%rbp),%r12d + xorl %r10d,%r14d + + xorl %r11d,%r15d + rorl $6,%r13d + movl %r11d,%r9d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r9d + addl %r12d,%ebx + addl %r12d,%r9d + + leaq 4(%rbp),%rbp + movl 48(%rsp),%r13d + movl 36(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r9d + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 16(%rsp),%r12d + + addl 44(%rsp),%r12d + movl %ebx,%r13d + addl %edi,%r12d + movl %r9d,%r14d + rorl $14,%r13d + movl %ecx,%edi + + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%edi + + movl %r12d,44(%rsp) + xorl %r9d,%r14d + andl %ebx,%edi + + rorl $5,%r13d + addl %r8d,%r12d + xorl %edx,%edi + + rorl $11,%r14d + xorl %ebx,%r13d + addl %edi,%r12d + + movl %r9d,%edi + addl (%rbp),%r12d + xorl %r9d,%r14d + + xorl %r10d,%edi + rorl $6,%r13d + movl %r10d,%r8d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r8d + addl %r12d,%eax + addl %r12d,%r8d + + leaq 20(%rbp),%rbp + movl 52(%rsp),%r13d + movl 40(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r8d + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 20(%rsp),%r12d + + addl 48(%rsp),%r12d + movl %eax,%r13d + addl %r15d,%r12d + movl %r8d,%r14d + rorl $14,%r13d + movl %ebx,%r15d + + xorl %eax,%r13d + rorl $9,%r14d + xorl %ecx,%r15d + + movl %r12d,48(%rsp) + xorl %r8d,%r14d + andl %eax,%r15d + + rorl $5,%r13d + addl %edx,%r12d + xorl %ecx,%r15d + + rorl $11,%r14d + xorl %eax,%r13d + addl %r15d,%r12d + + movl %r8d,%r15d + addl (%rbp),%r12d + xorl %r8d,%r14d + + xorl %r9d,%r15d + rorl $6,%r13d + movl %r9d,%edx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%edx + addl %r12d,%r11d + addl %r12d,%edx + + leaq 4(%rbp),%rbp + movl 56(%rsp),%r13d + movl 44(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%edx + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 24(%rsp),%r12d + + addl 52(%rsp),%r12d + movl %r11d,%r13d + addl %edi,%r12d + movl %edx,%r14d + rorl $14,%r13d + movl %eax,%edi + + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%edi + + movl %r12d,52(%rsp) + xorl %edx,%r14d + andl %r11d,%edi + + rorl $5,%r13d + addl %ecx,%r12d + xorl %ebx,%edi + + rorl $11,%r14d + xorl %r11d,%r13d + addl %edi,%r12d + + movl %edx,%edi + addl (%rbp),%r12d + xorl %edx,%r14d + + xorl %r8d,%edi + rorl $6,%r13d + movl %r8d,%ecx + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%ecx + addl %r12d,%r10d + addl %r12d,%ecx + + leaq 4(%rbp),%rbp + movl 60(%rsp),%r13d + movl 48(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%ecx + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 28(%rsp),%r12d + + addl 56(%rsp),%r12d + movl %r10d,%r13d + addl %r15d,%r12d + movl %ecx,%r14d + rorl $14,%r13d + movl %r11d,%r15d + + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r15d + + movl %r12d,56(%rsp) + xorl %ecx,%r14d + andl %r10d,%r15d + + rorl $5,%r13d + addl %ebx,%r12d + xorl %eax,%r15d + + rorl $11,%r14d + xorl %r10d,%r13d + addl %r15d,%r12d + + movl %ecx,%r15d + addl (%rbp),%r12d + xorl %ecx,%r14d + + xorl %edx,%r15d + rorl $6,%r13d + movl %edx,%ebx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%ebx + addl %r12d,%r9d + addl %r12d,%ebx + + leaq 4(%rbp),%rbp + movl 0(%rsp),%r13d + movl 52(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%ebx + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 32(%rsp),%r12d + + addl 60(%rsp),%r12d + movl %r9d,%r13d + addl %edi,%r12d + movl %ebx,%r14d + rorl $14,%r13d + movl %r10d,%edi + + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%edi + + movl %r12d,60(%rsp) + xorl %ebx,%r14d + andl %r9d,%edi + + rorl $5,%r13d + addl %eax,%r12d + xorl %r11d,%edi + + rorl $11,%r14d + xorl %r9d,%r13d + addl %edi,%r12d + + movl %ebx,%edi + addl (%rbp),%r12d + xorl %ebx,%r14d + + xorl %ecx,%edi + rorl $6,%r13d + movl %ecx,%eax + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%eax + addl %r12d,%r8d + addl %r12d,%eax + + leaq 20(%rbp),%rbp + cmpb $0,3(%rbp) + jnz .Lrounds_16_xx + + movq 64+0(%rsp),%rdi + addl %r14d,%eax + leaq 64(%rsi),%rsi + + addl 0(%rdi),%eax + addl 4(%rdi),%ebx + addl 8(%rdi),%ecx + addl 12(%rdi),%edx + addl 16(%rdi),%r8d + addl 20(%rdi),%r9d + addl 24(%rdi),%r10d + addl 28(%rdi),%r11d + + cmpq 64+16(%rsp),%rsi + + movl %eax,0(%rdi) + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + jb .Lloop + + movq 88(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha256_block_data_order,.-sha256_block_data_order +.align 64 +.type K256,@object +K256: +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 + +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0x03020100,0x0b0a0908,0xffffffff,0xffffffff +.long 0x03020100,0x0b0a0908,0xffffffff,0xffffffff +.long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 +.long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 +.byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.type sha256_block_data_order_shaext,@function +.align 64 +sha256_block_data_order_shaext: +_shaext_shortcut: +.cfi_startproc + leaq K256+128(%rip),%rcx + movdqu (%rdi),%xmm1 + movdqu 16(%rdi),%xmm2 + movdqa 512-128(%rcx),%xmm7 + + pshufd $0x1b,%xmm1,%xmm0 + pshufd $0xb1,%xmm1,%xmm1 + pshufd $0x1b,%xmm2,%xmm2 + movdqa %xmm7,%xmm8 +.byte 102,15,58,15,202,8 + punpcklqdq %xmm0,%xmm2 + jmp .Loop_shaext + +.align 16 +.Loop_shaext: + movdqu (%rsi),%xmm3 + movdqu 16(%rsi),%xmm4 + movdqu 32(%rsi),%xmm5 +.byte 102,15,56,0,223 + movdqu 48(%rsi),%xmm6 + + movdqa 0-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 102,15,56,0,231 + movdqa %xmm2,%xmm10 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + nop + movdqa %xmm1,%xmm9 +.byte 15,56,203,202 + + movdqa 32-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 102,15,56,0,239 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + leaq 64(%rsi),%rsi +.byte 15,56,204,220 +.byte 15,56,203,202 + + movdqa 64-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 102,15,56,0,247 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm6,%xmm7 +.byte 102,15,58,15,253,4 + nop + paddd %xmm7,%xmm3 +.byte 15,56,204,229 +.byte 15,56,203,202 + + movdqa 96-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 +.byte 15,56,205,222 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,254,4 + nop + paddd %xmm7,%xmm4 +.byte 15,56,204,238 +.byte 15,56,203,202 + movdqa 128-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 15,56,205,227 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm4,%xmm7 +.byte 102,15,58,15,251,4 + nop + paddd %xmm7,%xmm5 +.byte 15,56,204,243 +.byte 15,56,203,202 + movdqa 160-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 15,56,205,236 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm5,%xmm7 +.byte 102,15,58,15,252,4 + nop + paddd %xmm7,%xmm6 +.byte 15,56,204,220 +.byte 15,56,203,202 + movdqa 192-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 15,56,205,245 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm6,%xmm7 +.byte 102,15,58,15,253,4 + nop + paddd %xmm7,%xmm3 +.byte 15,56,204,229 +.byte 15,56,203,202 + movdqa 224-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 +.byte 15,56,205,222 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,254,4 + nop + paddd %xmm7,%xmm4 +.byte 15,56,204,238 +.byte 15,56,203,202 + movdqa 256-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 15,56,205,227 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm4,%xmm7 +.byte 102,15,58,15,251,4 + nop + paddd %xmm7,%xmm5 +.byte 15,56,204,243 +.byte 15,56,203,202 + movdqa 288-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 15,56,205,236 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm5,%xmm7 +.byte 102,15,58,15,252,4 + nop + paddd %xmm7,%xmm6 +.byte 15,56,204,220 +.byte 15,56,203,202 + movdqa 320-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 15,56,205,245 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm6,%xmm7 +.byte 102,15,58,15,253,4 + nop + paddd %xmm7,%xmm3 +.byte 15,56,204,229 +.byte 15,56,203,202 + movdqa 352-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 +.byte 15,56,205,222 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,254,4 + nop + paddd %xmm7,%xmm4 +.byte 15,56,204,238 +.byte 15,56,203,202 + movdqa 384-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 15,56,205,227 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm4,%xmm7 +.byte 102,15,58,15,251,4 + nop + paddd %xmm7,%xmm5 +.byte 15,56,204,243 +.byte 15,56,203,202 + movdqa 416-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 15,56,205,236 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm5,%xmm7 +.byte 102,15,58,15,252,4 +.byte 15,56,203,202 + paddd %xmm7,%xmm6 + + movdqa 448-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 +.byte 15,56,205,245 + movdqa %xmm8,%xmm7 +.byte 15,56,203,202 + + movdqa 480-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 + nop +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + decq %rdx + nop +.byte 15,56,203,202 + + paddd %xmm10,%xmm2 + paddd %xmm9,%xmm1 + jnz .Loop_shaext + + pshufd $0xb1,%xmm2,%xmm2 + pshufd $0x1b,%xmm1,%xmm7 + pshufd $0xb1,%xmm1,%xmm1 + punpckhqdq %xmm2,%xmm1 +.byte 102,15,58,15,215,8 + + movdqu %xmm1,(%rdi) + movdqu %xmm2,16(%rdi) + .byte 0xf3,0xc3 +.cfi_endproc +.size sha256_block_data_order_shaext,.-sha256_block_data_order_shaext +.type sha256_block_data_order_ssse3,@function +.align 64 +sha256_block_data_order_ssse3: +.cfi_startproc +.Lssse3_shortcut: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + shlq $4,%rdx + subq $96,%rsp + leaq (%rsi,%rdx,4),%rdx + andq $-64,%rsp + movq %rdi,64+0(%rsp) + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + movq %rax,88(%rsp) +.cfi_escape 0x0f,0x06,0x77,0xd8,0x00,0x06,0x23,0x08 +.Lprologue_ssse3: + + movl 0(%rdi),%eax + movl 4(%rdi),%ebx + movl 8(%rdi),%ecx + movl 12(%rdi),%edx + movl 16(%rdi),%r8d + movl 20(%rdi),%r9d + movl 24(%rdi),%r10d + movl 28(%rdi),%r11d + + + jmp .Lloop_ssse3 +.align 16 +.Lloop_ssse3: + movdqa K256+512(%rip),%xmm7 + movdqu 0(%rsi),%xmm0 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 +.byte 102,15,56,0,199 + movdqu 48(%rsi),%xmm3 + leaq K256(%rip),%rbp +.byte 102,15,56,0,207 + movdqa 0(%rbp),%xmm4 + movdqa 32(%rbp),%xmm5 +.byte 102,15,56,0,215 + paddd %xmm0,%xmm4 + movdqa 64(%rbp),%xmm6 +.byte 102,15,56,0,223 + movdqa 96(%rbp),%xmm7 + paddd %xmm1,%xmm5 + paddd %xmm2,%xmm6 + paddd %xmm3,%xmm7 + movdqa %xmm4,0(%rsp) + movl %eax,%r14d + movdqa %xmm5,16(%rsp) + movl %ebx,%edi + movdqa %xmm6,32(%rsp) + xorl %ecx,%edi + movdqa %xmm7,48(%rsp) + movl %r8d,%r13d + jmp .Lssse3_00_47 + +.align 16 +.Lssse3_00_47: + subq $-128,%rbp + rorl $14,%r13d + movdqa %xmm1,%xmm4 + movl %r14d,%eax + movl %r9d,%r12d + movdqa %xmm3,%xmm7 + rorl $9,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + rorl $5,%r13d + xorl %eax,%r14d +.byte 102,15,58,15,224,4 + andl %r8d,%r12d + xorl %r8d,%r13d +.byte 102,15,58,15,250,4 + addl 0(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + rorl $11,%r14d + movdqa %xmm4,%xmm5 + xorl %ebx,%r15d + addl %r12d,%r11d + movdqa %xmm4,%xmm6 + rorl $6,%r13d + andl %r15d,%edi + psrld $3,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + paddd %xmm7,%xmm0 + rorl $2,%r14d + addl %r11d,%edx + psrld $7,%xmm6 + addl %edi,%r11d + movl %edx,%r13d + pshufd $250,%xmm3,%xmm7 + addl %r11d,%r14d + rorl $14,%r13d + pslld $14,%xmm5 + movl %r14d,%r11d + movl %r8d,%r12d + pxor %xmm6,%xmm4 + rorl $9,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + rorl $5,%r13d + psrld $11,%xmm6 + xorl %r11d,%r14d + pxor %xmm5,%xmm4 + andl %edx,%r12d + xorl %edx,%r13d + pslld $11,%xmm5 + addl 4(%rsp),%r10d + movl %r11d,%edi + pxor %xmm6,%xmm4 + xorl %r9d,%r12d + rorl $11,%r14d + movdqa %xmm7,%xmm6 + xorl %eax,%edi + addl %r12d,%r10d + pxor %xmm5,%xmm4 + rorl $6,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + psrld $10,%xmm7 + addl %r13d,%r10d + xorl %eax,%r15d + paddd %xmm4,%xmm0 + rorl $2,%r14d + addl %r10d,%ecx + psrlq $17,%xmm6 + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + pxor %xmm6,%xmm7 + rorl $14,%r13d + movl %r14d,%r10d + movl %edx,%r12d + rorl $9,%r14d + psrlq $2,%xmm6 + xorl %ecx,%r13d + xorl %r8d,%r12d + pxor %xmm6,%xmm7 + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + pshufd $128,%xmm7,%xmm7 + xorl %ecx,%r13d + addl 8(%rsp),%r9d + movl %r10d,%r15d + psrldq $8,%xmm7 + xorl %r8d,%r12d + rorl $11,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + rorl $6,%r13d + paddd %xmm7,%xmm0 + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + pshufd $80,%xmm0,%xmm7 + xorl %r11d,%edi + rorl $2,%r14d + addl %r9d,%ebx + movdqa %xmm7,%xmm6 + addl %edi,%r9d + movl %ebx,%r13d + psrld $10,%xmm7 + addl %r9d,%r14d + rorl $14,%r13d + psrlq $17,%xmm6 + movl %r14d,%r9d + movl %ecx,%r12d + pxor %xmm6,%xmm7 + rorl $9,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + psrlq $2,%xmm6 + andl %ebx,%r12d + xorl %ebx,%r13d + addl 12(%rsp),%r8d + pxor %xmm6,%xmm7 + movl %r9d,%edi + xorl %edx,%r12d + rorl $11,%r14d + pshufd $8,%xmm7,%xmm7 + xorl %r10d,%edi + addl %r12d,%r8d + movdqa 0(%rbp),%xmm6 + rorl $6,%r13d + andl %edi,%r15d + pslldq $8,%xmm7 + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + paddd %xmm7,%xmm0 + rorl $2,%r14d + addl %r8d,%eax + addl %r15d,%r8d + paddd %xmm0,%xmm6 + movl %eax,%r13d + addl %r8d,%r14d + movdqa %xmm6,0(%rsp) + rorl $14,%r13d + movdqa %xmm2,%xmm4 + movl %r14d,%r8d + movl %ebx,%r12d + movdqa %xmm0,%xmm7 + rorl $9,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + rorl $5,%r13d + xorl %r8d,%r14d +.byte 102,15,58,15,225,4 + andl %eax,%r12d + xorl %eax,%r13d +.byte 102,15,58,15,251,4 + addl 16(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + rorl $11,%r14d + movdqa %xmm4,%xmm5 + xorl %r9d,%r15d + addl %r12d,%edx + movdqa %xmm4,%xmm6 + rorl $6,%r13d + andl %r15d,%edi + psrld $3,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + paddd %xmm7,%xmm1 + rorl $2,%r14d + addl %edx,%r11d + psrld $7,%xmm6 + addl %edi,%edx + movl %r11d,%r13d + pshufd $250,%xmm0,%xmm7 + addl %edx,%r14d + rorl $14,%r13d + pslld $14,%xmm5 + movl %r14d,%edx + movl %eax,%r12d + pxor %xmm6,%xmm4 + rorl $9,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + rorl $5,%r13d + psrld $11,%xmm6 + xorl %edx,%r14d + pxor %xmm5,%xmm4 + andl %r11d,%r12d + xorl %r11d,%r13d + pslld $11,%xmm5 + addl 20(%rsp),%ecx + movl %edx,%edi + pxor %xmm6,%xmm4 + xorl %ebx,%r12d + rorl $11,%r14d + movdqa %xmm7,%xmm6 + xorl %r8d,%edi + addl %r12d,%ecx + pxor %xmm5,%xmm4 + rorl $6,%r13d + andl %edi,%r15d + xorl %edx,%r14d + psrld $10,%xmm7 + addl %r13d,%ecx + xorl %r8d,%r15d + paddd %xmm4,%xmm1 + rorl $2,%r14d + addl %ecx,%r10d + psrlq $17,%xmm6 + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + pxor %xmm6,%xmm7 + rorl $14,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + rorl $9,%r14d + psrlq $2,%xmm6 + xorl %r10d,%r13d + xorl %eax,%r12d + pxor %xmm6,%xmm7 + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + pshufd $128,%xmm7,%xmm7 + xorl %r10d,%r13d + addl 24(%rsp),%ebx + movl %ecx,%r15d + psrldq $8,%xmm7 + xorl %eax,%r12d + rorl $11,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + rorl $6,%r13d + paddd %xmm7,%xmm1 + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + pshufd $80,%xmm1,%xmm7 + xorl %edx,%edi + rorl $2,%r14d + addl %ebx,%r9d + movdqa %xmm7,%xmm6 + addl %edi,%ebx + movl %r9d,%r13d + psrld $10,%xmm7 + addl %ebx,%r14d + rorl $14,%r13d + psrlq $17,%xmm6 + movl %r14d,%ebx + movl %r10d,%r12d + pxor %xmm6,%xmm7 + rorl $9,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + psrlq $2,%xmm6 + andl %r9d,%r12d + xorl %r9d,%r13d + addl 28(%rsp),%eax + pxor %xmm6,%xmm7 + movl %ebx,%edi + xorl %r11d,%r12d + rorl $11,%r14d + pshufd $8,%xmm7,%xmm7 + xorl %ecx,%edi + addl %r12d,%eax + movdqa 32(%rbp),%xmm6 + rorl $6,%r13d + andl %edi,%r15d + pslldq $8,%xmm7 + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + paddd %xmm7,%xmm1 + rorl $2,%r14d + addl %eax,%r8d + addl %r15d,%eax + paddd %xmm1,%xmm6 + movl %r8d,%r13d + addl %eax,%r14d + movdqa %xmm6,16(%rsp) + rorl $14,%r13d + movdqa %xmm3,%xmm4 + movl %r14d,%eax + movl %r9d,%r12d + movdqa %xmm1,%xmm7 + rorl $9,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + rorl $5,%r13d + xorl %eax,%r14d +.byte 102,15,58,15,226,4 + andl %r8d,%r12d + xorl %r8d,%r13d +.byte 102,15,58,15,248,4 + addl 32(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + rorl $11,%r14d + movdqa %xmm4,%xmm5 + xorl %ebx,%r15d + addl %r12d,%r11d + movdqa %xmm4,%xmm6 + rorl $6,%r13d + andl %r15d,%edi + psrld $3,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + paddd %xmm7,%xmm2 + rorl $2,%r14d + addl %r11d,%edx + psrld $7,%xmm6 + addl %edi,%r11d + movl %edx,%r13d + pshufd $250,%xmm1,%xmm7 + addl %r11d,%r14d + rorl $14,%r13d + pslld $14,%xmm5 + movl %r14d,%r11d + movl %r8d,%r12d + pxor %xmm6,%xmm4 + rorl $9,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + rorl $5,%r13d + psrld $11,%xmm6 + xorl %r11d,%r14d + pxor %xmm5,%xmm4 + andl %edx,%r12d + xorl %edx,%r13d + pslld $11,%xmm5 + addl 36(%rsp),%r10d + movl %r11d,%edi + pxor %xmm6,%xmm4 + xorl %r9d,%r12d + rorl $11,%r14d + movdqa %xmm7,%xmm6 + xorl %eax,%edi + addl %r12d,%r10d + pxor %xmm5,%xmm4 + rorl $6,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + psrld $10,%xmm7 + addl %r13d,%r10d + xorl %eax,%r15d + paddd %xmm4,%xmm2 + rorl $2,%r14d + addl %r10d,%ecx + psrlq $17,%xmm6 + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + pxor %xmm6,%xmm7 + rorl $14,%r13d + movl %r14d,%r10d + movl %edx,%r12d + rorl $9,%r14d + psrlq $2,%xmm6 + xorl %ecx,%r13d + xorl %r8d,%r12d + pxor %xmm6,%xmm7 + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + pshufd $128,%xmm7,%xmm7 + xorl %ecx,%r13d + addl 40(%rsp),%r9d + movl %r10d,%r15d + psrldq $8,%xmm7 + xorl %r8d,%r12d + rorl $11,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + rorl $6,%r13d + paddd %xmm7,%xmm2 + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + pshufd $80,%xmm2,%xmm7 + xorl %r11d,%edi + rorl $2,%r14d + addl %r9d,%ebx + movdqa %xmm7,%xmm6 + addl %edi,%r9d + movl %ebx,%r13d + psrld $10,%xmm7 + addl %r9d,%r14d + rorl $14,%r13d + psrlq $17,%xmm6 + movl %r14d,%r9d + movl %ecx,%r12d + pxor %xmm6,%xmm7 + rorl $9,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + psrlq $2,%xmm6 + andl %ebx,%r12d + xorl %ebx,%r13d + addl 44(%rsp),%r8d + pxor %xmm6,%xmm7 + movl %r9d,%edi + xorl %edx,%r12d + rorl $11,%r14d + pshufd $8,%xmm7,%xmm7 + xorl %r10d,%edi + addl %r12d,%r8d + movdqa 64(%rbp),%xmm6 + rorl $6,%r13d + andl %edi,%r15d + pslldq $8,%xmm7 + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + paddd %xmm7,%xmm2 + rorl $2,%r14d + addl %r8d,%eax + addl %r15d,%r8d + paddd %xmm2,%xmm6 + movl %eax,%r13d + addl %r8d,%r14d + movdqa %xmm6,32(%rsp) + rorl $14,%r13d + movdqa %xmm0,%xmm4 + movl %r14d,%r8d + movl %ebx,%r12d + movdqa %xmm2,%xmm7 + rorl $9,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + rorl $5,%r13d + xorl %r8d,%r14d +.byte 102,15,58,15,227,4 + andl %eax,%r12d + xorl %eax,%r13d +.byte 102,15,58,15,249,4 + addl 48(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + rorl $11,%r14d + movdqa %xmm4,%xmm5 + xorl %r9d,%r15d + addl %r12d,%edx + movdqa %xmm4,%xmm6 + rorl $6,%r13d + andl %r15d,%edi + psrld $3,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + paddd %xmm7,%xmm3 + rorl $2,%r14d + addl %edx,%r11d + psrld $7,%xmm6 + addl %edi,%edx + movl %r11d,%r13d + pshufd $250,%xmm2,%xmm7 + addl %edx,%r14d + rorl $14,%r13d + pslld $14,%xmm5 + movl %r14d,%edx + movl %eax,%r12d + pxor %xmm6,%xmm4 + rorl $9,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + rorl $5,%r13d + psrld $11,%xmm6 + xorl %edx,%r14d + pxor %xmm5,%xmm4 + andl %r11d,%r12d + xorl %r11d,%r13d + pslld $11,%xmm5 + addl 52(%rsp),%ecx + movl %edx,%edi + pxor %xmm6,%xmm4 + xorl %ebx,%r12d + rorl $11,%r14d + movdqa %xmm7,%xmm6 + xorl %r8d,%edi + addl %r12d,%ecx + pxor %xmm5,%xmm4 + rorl $6,%r13d + andl %edi,%r15d + xorl %edx,%r14d + psrld $10,%xmm7 + addl %r13d,%ecx + xorl %r8d,%r15d + paddd %xmm4,%xmm3 + rorl $2,%r14d + addl %ecx,%r10d + psrlq $17,%xmm6 + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + pxor %xmm6,%xmm7 + rorl $14,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + rorl $9,%r14d + psrlq $2,%xmm6 + xorl %r10d,%r13d + xorl %eax,%r12d + pxor %xmm6,%xmm7 + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + pshufd $128,%xmm7,%xmm7 + xorl %r10d,%r13d + addl 56(%rsp),%ebx + movl %ecx,%r15d + psrldq $8,%xmm7 + xorl %eax,%r12d + rorl $11,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + rorl $6,%r13d + paddd %xmm7,%xmm3 + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + pshufd $80,%xmm3,%xmm7 + xorl %edx,%edi + rorl $2,%r14d + addl %ebx,%r9d + movdqa %xmm7,%xmm6 + addl %edi,%ebx + movl %r9d,%r13d + psrld $10,%xmm7 + addl %ebx,%r14d + rorl $14,%r13d + psrlq $17,%xmm6 + movl %r14d,%ebx + movl %r10d,%r12d + pxor %xmm6,%xmm7 + rorl $9,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + psrlq $2,%xmm6 + andl %r9d,%r12d + xorl %r9d,%r13d + addl 60(%rsp),%eax + pxor %xmm6,%xmm7 + movl %ebx,%edi + xorl %r11d,%r12d + rorl $11,%r14d + pshufd $8,%xmm7,%xmm7 + xorl %ecx,%edi + addl %r12d,%eax + movdqa 96(%rbp),%xmm6 + rorl $6,%r13d + andl %edi,%r15d + pslldq $8,%xmm7 + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + paddd %xmm7,%xmm3 + rorl $2,%r14d + addl %eax,%r8d + addl %r15d,%eax + paddd %xmm3,%xmm6 + movl %r8d,%r13d + addl %eax,%r14d + movdqa %xmm6,48(%rsp) + cmpb $0,131(%rbp) + jne .Lssse3_00_47 + rorl $14,%r13d + movl %r14d,%eax + movl %r9d,%r12d + rorl $9,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + rorl $5,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + rorl $11,%r14d + xorl %ebx,%r15d + addl %r12d,%r11d + rorl $6,%r13d + andl %r15d,%edi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + rorl $2,%r14d + addl %r11d,%edx + addl %edi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + rorl $14,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + rorl $9,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + rorl $5,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + addl 4(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + rorl $11,%r14d + xorl %eax,%edi + addl %r12d,%r10d + rorl $6,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + rorl $2,%r14d + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + rorl $14,%r13d + movl %r14d,%r10d + movl %edx,%r12d + rorl $9,%r14d + xorl %ecx,%r13d + xorl %r8d,%r12d + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + xorl %ecx,%r13d + addl 8(%rsp),%r9d + movl %r10d,%r15d + xorl %r8d,%r12d + rorl $11,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + rorl $6,%r13d + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%edi + rorl $2,%r14d + addl %r9d,%ebx + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + rorl $14,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + rorl $9,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + rorl $11,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + rorl $6,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + rorl $2,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + rorl $14,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + rorl $9,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + rorl $5,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + rorl $11,%r14d + xorl %r9d,%r15d + addl %r12d,%edx + rorl $6,%r13d + andl %r15d,%edi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + rorl $2,%r14d + addl %edx,%r11d + addl %edi,%edx + movl %r11d,%r13d + addl %edx,%r14d + rorl $14,%r13d + movl %r14d,%edx + movl %eax,%r12d + rorl $9,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + rorl $5,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + addl 20(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + rorl $11,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + rorl $6,%r13d + andl %edi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + rorl $2,%r14d + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + rorl $14,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + rorl $9,%r14d + xorl %r10d,%r13d + xorl %eax,%r12d + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + xorl %r10d,%r13d + addl 24(%rsp),%ebx + movl %ecx,%r15d + xorl %eax,%r12d + rorl $11,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + rorl $6,%r13d + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%edi + rorl $2,%r14d + addl %ebx,%r9d + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + rorl $14,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + rorl $9,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + rorl $11,%r14d + xorl %ecx,%edi + addl %r12d,%eax + rorl $6,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + rorl $2,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + rorl $14,%r13d + movl %r14d,%eax + movl %r9d,%r12d + rorl $9,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + rorl $5,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + rorl $11,%r14d + xorl %ebx,%r15d + addl %r12d,%r11d + rorl $6,%r13d + andl %r15d,%edi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + rorl $2,%r14d + addl %r11d,%edx + addl %edi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + rorl $14,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + rorl $9,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + rorl $5,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + addl 36(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + rorl $11,%r14d + xorl %eax,%edi + addl %r12d,%r10d + rorl $6,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + rorl $2,%r14d + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + rorl $14,%r13d + movl %r14d,%r10d + movl %edx,%r12d + rorl $9,%r14d + xorl %ecx,%r13d + xorl %r8d,%r12d + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + xorl %ecx,%r13d + addl 40(%rsp),%r9d + movl %r10d,%r15d + xorl %r8d,%r12d + rorl $11,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + rorl $6,%r13d + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%edi + rorl $2,%r14d + addl %r9d,%ebx + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + rorl $14,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + rorl $9,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + rorl $11,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + rorl $6,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + rorl $2,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + rorl $14,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + rorl $9,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + rorl $5,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + rorl $11,%r14d + xorl %r9d,%r15d + addl %r12d,%edx + rorl $6,%r13d + andl %r15d,%edi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + rorl $2,%r14d + addl %edx,%r11d + addl %edi,%edx + movl %r11d,%r13d + addl %edx,%r14d + rorl $14,%r13d + movl %r14d,%edx + movl %eax,%r12d + rorl $9,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + rorl $5,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + addl 52(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + rorl $11,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + rorl $6,%r13d + andl %edi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + rorl $2,%r14d + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + rorl $14,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + rorl $9,%r14d + xorl %r10d,%r13d + xorl %eax,%r12d + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + xorl %r10d,%r13d + addl 56(%rsp),%ebx + movl %ecx,%r15d + xorl %eax,%r12d + rorl $11,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + rorl $6,%r13d + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%edi + rorl $2,%r14d + addl %ebx,%r9d + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + rorl $14,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + rorl $9,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + rorl $11,%r14d + xorl %ecx,%edi + addl %r12d,%eax + rorl $6,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + rorl $2,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + movq 64+0(%rsp),%rdi + movl %r14d,%eax + + addl 0(%rdi),%eax + leaq 64(%rsi),%rsi + addl 4(%rdi),%ebx + addl 8(%rdi),%ecx + addl 12(%rdi),%edx + addl 16(%rdi),%r8d + addl 20(%rdi),%r9d + addl 24(%rdi),%r10d + addl 28(%rdi),%r11d + + cmpq 64+16(%rsp),%rsi + + movl %eax,0(%rdi) + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + jb .Lloop_ssse3 + + movq 88(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_ssse3: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha256_block_data_order_ssse3,.-sha256_block_data_order_ssse3 +.type sha256_block_data_order_avx,@function +.align 64 +sha256_block_data_order_avx: +.cfi_startproc +.Lavx_shortcut: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + shlq $4,%rdx + subq $96,%rsp + leaq (%rsi,%rdx,4),%rdx + andq $-64,%rsp + movq %rdi,64+0(%rsp) + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + movq %rax,88(%rsp) +.cfi_escape 0x0f,0x06,0x77,0xd8,0x00,0x06,0x23,0x08 +.Lprologue_avx: + + vzeroupper + movl 0(%rdi),%eax + movl 4(%rdi),%ebx + movl 8(%rdi),%ecx + movl 12(%rdi),%edx + movl 16(%rdi),%r8d + movl 20(%rdi),%r9d + movl 24(%rdi),%r10d + movl 28(%rdi),%r11d + vmovdqa K256+512+32(%rip),%xmm8 + vmovdqa K256+512+64(%rip),%xmm9 + jmp .Lloop_avx +.align 16 +.Lloop_avx: + vmovdqa K256+512(%rip),%xmm7 + vmovdqu 0(%rsi),%xmm0 + vmovdqu 16(%rsi),%xmm1 + vmovdqu 32(%rsi),%xmm2 + vmovdqu 48(%rsi),%xmm3 + vpshufb %xmm7,%xmm0,%xmm0 + leaq K256(%rip),%rbp + vpshufb %xmm7,%xmm1,%xmm1 + vpshufb %xmm7,%xmm2,%xmm2 + vpaddd 0(%rbp),%xmm0,%xmm4 + vpshufb %xmm7,%xmm3,%xmm3 + vpaddd 32(%rbp),%xmm1,%xmm5 + vpaddd 64(%rbp),%xmm2,%xmm6 + vpaddd 96(%rbp),%xmm3,%xmm7 + vmovdqa %xmm4,0(%rsp) + movl %eax,%r14d + vmovdqa %xmm5,16(%rsp) + movl %ebx,%edi + vmovdqa %xmm6,32(%rsp) + xorl %ecx,%edi + vmovdqa %xmm7,48(%rsp) + movl %r8d,%r13d + jmp .Lavx_00_47 + +.align 16 +.Lavx_00_47: + subq $-128,%rbp + vpalignr $4,%xmm0,%xmm1,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + vpalignr $4,%xmm2,%xmm3,%xmm7 + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpaddd %xmm7,%xmm0,%xmm0 + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + vpshufd $250,%xmm3,%xmm7 + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + vpsrld $11,%xmm6,%xmm6 + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 4(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + vpaddd %xmm4,%xmm0,%xmm0 + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + vpxor %xmm7,%xmm6,%xmm6 + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + vpaddd %xmm6,%xmm0,%xmm0 + andl %ecx,%r12d + xorl %ecx,%r13d + addl 8(%rsp),%r9d + vpshufd $80,%xmm0,%xmm7 + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + vpxor %xmm7,%xmm6,%xmm6 + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + vpaddd %xmm6,%xmm0,%xmm0 + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vpaddd 0(%rbp),%xmm0,%xmm6 + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,0(%rsp) + vpalignr $4,%xmm1,%xmm2,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + vpalignr $4,%xmm3,%xmm0,%xmm7 + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpaddd %xmm7,%xmm1,%xmm1 + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + vpshufd $250,%xmm0,%xmm7 + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + vpsrld $11,%xmm6,%xmm6 + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 20(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + vpaddd %xmm4,%xmm1,%xmm1 + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + vpaddd %xmm6,%xmm1,%xmm1 + andl %r10d,%r12d + xorl %r10d,%r13d + addl 24(%rsp),%ebx + vpshufd $80,%xmm1,%xmm7 + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + vpxor %xmm7,%xmm6,%xmm6 + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + vpaddd %xmm6,%xmm1,%xmm1 + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpaddd 32(%rbp),%xmm1,%xmm6 + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,16(%rsp) + vpalignr $4,%xmm2,%xmm3,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + vpalignr $4,%xmm0,%xmm1,%xmm7 + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpaddd %xmm7,%xmm2,%xmm2 + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + vpshufd $250,%xmm1,%xmm7 + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + vpsrld $11,%xmm6,%xmm6 + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 36(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + vpaddd %xmm4,%xmm2,%xmm2 + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + vpxor %xmm7,%xmm6,%xmm6 + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + vpaddd %xmm6,%xmm2,%xmm2 + andl %ecx,%r12d + xorl %ecx,%r13d + addl 40(%rsp),%r9d + vpshufd $80,%xmm2,%xmm7 + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + vpxor %xmm7,%xmm6,%xmm6 + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + vpaddd %xmm6,%xmm2,%xmm2 + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vpaddd 64(%rbp),%xmm2,%xmm6 + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,32(%rsp) + vpalignr $4,%xmm3,%xmm0,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + vpalignr $4,%xmm1,%xmm2,%xmm7 + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpaddd %xmm7,%xmm3,%xmm3 + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + vpshufd $250,%xmm2,%xmm7 + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + vpsrld $11,%xmm6,%xmm6 + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 52(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + vpaddd %xmm4,%xmm3,%xmm3 + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + vpaddd %xmm6,%xmm3,%xmm3 + andl %r10d,%r12d + xorl %r10d,%r13d + addl 56(%rsp),%ebx + vpshufd $80,%xmm3,%xmm7 + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + vpxor %xmm7,%xmm6,%xmm6 + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + vpaddd %xmm6,%xmm3,%xmm3 + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpaddd 96(%rbp),%xmm3,%xmm6 + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,48(%rsp) + cmpb $0,131(%rbp) + jne .Lavx_00_47 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + addl 4(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + xorl %ecx,%r13d + addl 8(%rsp),%r9d + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + addl 20(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + xorl %r10d,%r13d + addl 24(%rsp),%ebx + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + addl 36(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + xorl %ecx,%r13d + addl 40(%rsp),%r9d + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + addl 52(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + xorl %r10d,%r13d + addl 56(%rsp),%ebx + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + movq 64+0(%rsp),%rdi + movl %r14d,%eax + + addl 0(%rdi),%eax + leaq 64(%rsi),%rsi + addl 4(%rdi),%ebx + addl 8(%rdi),%ecx + addl 12(%rdi),%edx + addl 16(%rdi),%r8d + addl 20(%rdi),%r9d + addl 24(%rdi),%r10d + addl 28(%rdi),%r11d + + cmpq 64+16(%rsp),%rsi + + movl %eax,0(%rdi) + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + jb .Lloop_avx + + movq 88(%rsp),%rsi +.cfi_def_cfa %rsi,8 + vzeroupper + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_avx: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha256_block_data_order_avx,.-sha256_block_data_order_avx +.type sha256_block_data_order_avx2,@function +.align 64 +sha256_block_data_order_avx2: +.cfi_startproc +.Lavx2_shortcut: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + subq $544,%rsp + shlq $4,%rdx + andq $-1024,%rsp + leaq (%rsi,%rdx,4),%rdx + addq $448,%rsp + movq %rdi,64+0(%rsp) + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + movq %rax,88(%rsp) +.cfi_escape 0x0f,0x06,0x77,0xd8,0x00,0x06,0x23,0x08 +.Lprologue_avx2: + + vzeroupper + subq $-64,%rsi + movl 0(%rdi),%eax + movq %rsi,%r12 + movl 4(%rdi),%ebx + cmpq %rdx,%rsi + movl 8(%rdi),%ecx + cmoveq %rsp,%r12 + movl 12(%rdi),%edx + movl 16(%rdi),%r8d + movl 20(%rdi),%r9d + movl 24(%rdi),%r10d + movl 28(%rdi),%r11d + vmovdqa K256+512+32(%rip),%ymm8 + vmovdqa K256+512+64(%rip),%ymm9 + jmp .Loop_avx2 +.align 16 +.Loop_avx2: + vmovdqa K256+512(%rip),%ymm7 + vmovdqu -64+0(%rsi),%xmm0 + vmovdqu -64+16(%rsi),%xmm1 + vmovdqu -64+32(%rsi),%xmm2 + vmovdqu -64+48(%rsi),%xmm3 + + vinserti128 $1,(%r12),%ymm0,%ymm0 + vinserti128 $1,16(%r12),%ymm1,%ymm1 + vpshufb %ymm7,%ymm0,%ymm0 + vinserti128 $1,32(%r12),%ymm2,%ymm2 + vpshufb %ymm7,%ymm1,%ymm1 + vinserti128 $1,48(%r12),%ymm3,%ymm3 + + leaq K256(%rip),%rbp + vpshufb %ymm7,%ymm2,%ymm2 + vpaddd 0(%rbp),%ymm0,%ymm4 + vpshufb %ymm7,%ymm3,%ymm3 + vpaddd 32(%rbp),%ymm1,%ymm5 + vpaddd 64(%rbp),%ymm2,%ymm6 + vpaddd 96(%rbp),%ymm3,%ymm7 + vmovdqa %ymm4,0(%rsp) + xorl %r14d,%r14d + vmovdqa %ymm5,32(%rsp) + + movq 88(%rsp),%rdi +.cfi_def_cfa %rdi,8 + leaq -64(%rsp),%rsp + + + + movq %rdi,-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 + movl %ebx,%edi + vmovdqa %ymm6,0(%rsp) + xorl %ecx,%edi + vmovdqa %ymm7,32(%rsp) + movl %r9d,%r12d + subq $-32*4,%rbp + jmp .Lavx2_00_47 + +.align 16 +.Lavx2_00_47: + leaq -64(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x38,0x06,0x23,0x08 + + pushq 64-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x00,0x06,0x23,0x08 + leaq 8(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 + vpalignr $4,%ymm0,%ymm1,%ymm4 + addl 0+128(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + vpalignr $4,%ymm2,%ymm3,%ymm7 + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + vpsrld $7,%ymm4,%ymm6 + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + vpaddd %ymm7,%ymm0,%ymm0 + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %ebx,%edi + vpshufd $250,%ymm3,%ymm7 + xorl %r13d,%r14d + leal (%r11,%rdi,1),%r11d + movl %r8d,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 4+128(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%edx,%edi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + vpslld $11,%ymm5,%ymm5 + andnl %r9d,%edx,%r12d + xorl %edi,%r13d + rorxl $6,%edx,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%edi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%edi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + vpsrlq $17,%ymm7,%ymm7 + andl %edi,%r15d + xorl %r12d,%r14d + xorl %eax,%r15d + vpaddd %ymm4,%ymm0,%ymm0 + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 8+128(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + vpxor %ymm7,%ymm6,%ymm6 + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + vpshufb %ymm8,%ymm6,%ymm6 + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + vpaddd %ymm6,%ymm0,%ymm0 + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + vpshufd $80,%ymm0,%ymm7 + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + vpsrld $10,%ymm7,%ymm6 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r11d,%edi + vpsrlq $17,%ymm7,%ymm7 + xorl %r13d,%r14d + leal (%r9,%rdi,1),%r9d + movl %ecx,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 12+128(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%ebx,%edi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + vpxor %ymm7,%ymm6,%ymm6 + andnl %edx,%ebx,%r12d + xorl %edi,%r13d + rorxl $6,%ebx,%r14d + vpshufb %ymm9,%ymm6,%ymm6 + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%edi + vpaddd %ymm6,%ymm0,%ymm0 + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%edi + vpaddd 0(%rbp),%ymm0,%ymm6 + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + vmovdqa %ymm6,0(%rsp) + vpalignr $4,%ymm1,%ymm2,%ymm4 + addl 32+128(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + vpalignr $4,%ymm3,%ymm0,%ymm7 + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + vpsrld $7,%ymm4,%ymm6 + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + vpaddd %ymm7,%ymm1,%ymm1 + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r9d,%edi + vpshufd $250,%ymm0,%ymm7 + xorl %r13d,%r14d + leal (%rdx,%rdi,1),%edx + movl %eax,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 36+128(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%r11d,%edi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + vpslld $11,%ymm5,%ymm5 + andnl %ebx,%r11d,%r12d + xorl %edi,%r13d + rorxl $6,%r11d,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%edi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%edi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + vpsrlq $17,%ymm7,%ymm7 + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r8d,%r15d + vpaddd %ymm4,%ymm1,%ymm1 + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 40+128(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + vpxor %ymm7,%ymm6,%ymm6 + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + vpshufb %ymm8,%ymm6,%ymm6 + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + vpaddd %ymm6,%ymm1,%ymm1 + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + vpshufd $80,%ymm1,%ymm7 + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + vpsrld $10,%ymm7,%ymm6 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %edx,%edi + vpsrlq $17,%ymm7,%ymm7 + xorl %r13d,%r14d + leal (%rbx,%rdi,1),%ebx + movl %r10d,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 44+128(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%r9d,%edi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + vpxor %ymm7,%ymm6,%ymm6 + andnl %r11d,%r9d,%r12d + xorl %edi,%r13d + rorxl $6,%r9d,%r14d + vpshufb %ymm9,%ymm6,%ymm6 + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%edi + vpaddd %ymm6,%ymm1,%ymm1 + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%edi + vpaddd 32(%rbp),%ymm1,%ymm6 + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + vmovdqa %ymm6,32(%rsp) + leaq -64(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x38,0x06,0x23,0x08 + + pushq 64-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x00,0x06,0x23,0x08 + leaq 8(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 + vpalignr $4,%ymm2,%ymm3,%ymm4 + addl 0+128(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + vpalignr $4,%ymm0,%ymm1,%ymm7 + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + vpsrld $7,%ymm4,%ymm6 + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + vpaddd %ymm7,%ymm2,%ymm2 + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %ebx,%edi + vpshufd $250,%ymm1,%ymm7 + xorl %r13d,%r14d + leal (%r11,%rdi,1),%r11d + movl %r8d,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 4+128(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%edx,%edi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + vpslld $11,%ymm5,%ymm5 + andnl %r9d,%edx,%r12d + xorl %edi,%r13d + rorxl $6,%edx,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%edi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%edi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + vpsrlq $17,%ymm7,%ymm7 + andl %edi,%r15d + xorl %r12d,%r14d + xorl %eax,%r15d + vpaddd %ymm4,%ymm2,%ymm2 + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 8+128(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + vpxor %ymm7,%ymm6,%ymm6 + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + vpshufb %ymm8,%ymm6,%ymm6 + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + vpaddd %ymm6,%ymm2,%ymm2 + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + vpshufd $80,%ymm2,%ymm7 + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + vpsrld $10,%ymm7,%ymm6 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r11d,%edi + vpsrlq $17,%ymm7,%ymm7 + xorl %r13d,%r14d + leal (%r9,%rdi,1),%r9d + movl %ecx,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 12+128(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%ebx,%edi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + vpxor %ymm7,%ymm6,%ymm6 + andnl %edx,%ebx,%r12d + xorl %edi,%r13d + rorxl $6,%ebx,%r14d + vpshufb %ymm9,%ymm6,%ymm6 + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%edi + vpaddd %ymm6,%ymm2,%ymm2 + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%edi + vpaddd 64(%rbp),%ymm2,%ymm6 + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + vmovdqa %ymm6,0(%rsp) + vpalignr $4,%ymm3,%ymm0,%ymm4 + addl 32+128(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + vpalignr $4,%ymm1,%ymm2,%ymm7 + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + vpsrld $7,%ymm4,%ymm6 + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + vpaddd %ymm7,%ymm3,%ymm3 + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r9d,%edi + vpshufd $250,%ymm2,%ymm7 + xorl %r13d,%r14d + leal (%rdx,%rdi,1),%edx + movl %eax,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 36+128(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%r11d,%edi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + vpslld $11,%ymm5,%ymm5 + andnl %ebx,%r11d,%r12d + xorl %edi,%r13d + rorxl $6,%r11d,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%edi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%edi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + vpsrlq $17,%ymm7,%ymm7 + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r8d,%r15d + vpaddd %ymm4,%ymm3,%ymm3 + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 40+128(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + vpxor %ymm7,%ymm6,%ymm6 + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + vpshufb %ymm8,%ymm6,%ymm6 + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + vpaddd %ymm6,%ymm3,%ymm3 + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + vpshufd $80,%ymm3,%ymm7 + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + vpsrld $10,%ymm7,%ymm6 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %edx,%edi + vpsrlq $17,%ymm7,%ymm7 + xorl %r13d,%r14d + leal (%rbx,%rdi,1),%ebx + movl %r10d,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 44+128(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%r9d,%edi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + vpxor %ymm7,%ymm6,%ymm6 + andnl %r11d,%r9d,%r12d + xorl %edi,%r13d + rorxl $6,%r9d,%r14d + vpshufb %ymm9,%ymm6,%ymm6 + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%edi + vpaddd %ymm6,%ymm3,%ymm3 + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%edi + vpaddd 96(%rbp),%ymm3,%ymm6 + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + vmovdqa %ymm6,32(%rsp) + leaq 128(%rbp),%rbp + cmpb $0,3(%rbp) + jne .Lavx2_00_47 + addl 0+64(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%edi + xorl %r12d,%r14d + xorl %ebx,%edi + xorl %r13d,%r14d + leal (%r11,%rdi,1),%r11d + movl %r8d,%r12d + addl 4+64(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%edi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %edi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%edi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%edi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %edi,%r15d + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8+64(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r11d,%edi + xorl %r13d,%r14d + leal (%r9,%rdi,1),%r9d + movl %ecx,%r12d + addl 12+64(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%edi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %edi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%edi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%edi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32+64(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r9d,%edi + xorl %r13d,%r14d + leal (%rdx,%rdi,1),%edx + movl %eax,%r12d + addl 36+64(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%edi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %edi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%edi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%edi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40+64(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%edi + xorl %r12d,%r14d + xorl %edx,%edi + xorl %r13d,%r14d + leal (%rbx,%rdi,1),%ebx + movl %r10d,%r12d + addl 44+64(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%edi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %edi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%edi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%edi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + addl 0(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%edi + xorl %r12d,%r14d + xorl %ebx,%edi + xorl %r13d,%r14d + leal (%r11,%rdi,1),%r11d + movl %r8d,%r12d + addl 4(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%edi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %edi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%edi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%edi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %edi,%r15d + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r11d,%edi + xorl %r13d,%r14d + leal (%r9,%rdi,1),%r9d + movl %ecx,%r12d + addl 12(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%edi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %edi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%edi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%edi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r9d,%edi + xorl %r13d,%r14d + leal (%rdx,%rdi,1),%edx + movl %eax,%r12d + addl 36(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%edi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %edi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%edi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%edi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%edi + xorl %r12d,%r14d + xorl %edx,%edi + xorl %r13d,%r14d + leal (%rbx,%rdi,1),%ebx + movl %r10d,%r12d + addl 44(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%edi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %edi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%edi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%edi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + movq 512(%rsp),%rdi + addl %r14d,%eax + + leaq 448(%rsp),%rbp + + addl 0(%rdi),%eax + addl 4(%rdi),%ebx + addl 8(%rdi),%ecx + addl 12(%rdi),%edx + addl 16(%rdi),%r8d + addl 20(%rdi),%r9d + addl 24(%rdi),%r10d + addl 28(%rdi),%r11d + + movl %eax,0(%rdi) + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + + cmpq 80(%rbp),%rsi + je .Ldone_avx2 + + xorl %r14d,%r14d + movl %ebx,%edi + xorl %ecx,%edi + movl %r9d,%r12d + jmp .Lower_avx2 +.align 16 +.Lower_avx2: + addl 0+16(%rbp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%edi + xorl %r12d,%r14d + xorl %ebx,%edi + xorl %r13d,%r14d + leal (%r11,%rdi,1),%r11d + movl %r8d,%r12d + addl 4+16(%rbp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%edi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %edi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%edi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%edi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %edi,%r15d + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8+16(%rbp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r11d,%edi + xorl %r13d,%r14d + leal (%r9,%rdi,1),%r9d + movl %ecx,%r12d + addl 12+16(%rbp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%edi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %edi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%edi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%edi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32+16(%rbp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r9d,%edi + xorl %r13d,%r14d + leal (%rdx,%rdi,1),%edx + movl %eax,%r12d + addl 36+16(%rbp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%edi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %edi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%edi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%edi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40+16(%rbp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%edi + xorl %r12d,%r14d + xorl %edx,%edi + xorl %r13d,%r14d + leal (%rbx,%rdi,1),%ebx + movl %r10d,%r12d + addl 44+16(%rbp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%edi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %edi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%edi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%edi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + leaq -64(%rbp),%rbp + cmpq %rsp,%rbp + jae .Lower_avx2 + + movq 512(%rsp),%rdi + addl %r14d,%eax + + leaq 448(%rsp),%rsp + +.cfi_escape 0x0f,0x06,0x77,0xd8,0x00,0x06,0x23,0x08 + + addl 0(%rdi),%eax + addl 4(%rdi),%ebx + addl 8(%rdi),%ecx + addl 12(%rdi),%edx + addl 16(%rdi),%r8d + addl 20(%rdi),%r9d + leaq 128(%rsi),%rsi + addl 24(%rdi),%r10d + movq %rsi,%r12 + addl 28(%rdi),%r11d + cmpq 64+16(%rsp),%rsi + + movl %eax,0(%rdi) + cmoveq %rsp,%r12 + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + + jbe .Loop_avx2 + leaq (%rsp),%rbp + + +.cfi_escape 0x0f,0x06,0x76,0xd8,0x00,0x06,0x23,0x08 + +.Ldone_avx2: + movq 88(%rbp),%rsi +.cfi_def_cfa %rsi,8 + vzeroupper + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_avx2: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha256_block_data_order_avx2,.-sha256_block_data_order_avx2 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha512-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha512-x86_64.s new file mode 100644 index 0000000..939f1ca --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/sha/sha512-x86_64.s @@ -0,0 +1,5461 @@ +.text + + +.globl sha512_block_data_order +.type sha512_block_data_order,@function +.align 16 +sha512_block_data_order: +.cfi_startproc + leaq OPENSSL_ia32cap_P(%rip),%r11 + movl 0(%r11),%r9d + movl 4(%r11),%r10d + movl 8(%r11),%r11d + testl $2048,%r10d + jnz .Lxop_shortcut + andl $296,%r11d + cmpl $296,%r11d + je .Lavx2_shortcut + andl $1073741824,%r9d + andl $268435968,%r10d + orl %r9d,%r10d + cmpl $1342177792,%r10d + je .Lavx_shortcut + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + shlq $4,%rdx + subq $128+32,%rsp + leaq (%rsi,%rdx,8),%rdx + andq $-64,%rsp + movq %rdi,128+0(%rsp) + movq %rsi,128+8(%rsp) + movq %rdx,128+16(%rsp) + movq %rax,152(%rsp) +.cfi_escape 0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08 +.Lprologue: + + movq 0(%rdi),%rax + movq 8(%rdi),%rbx + movq 16(%rdi),%rcx + movq 24(%rdi),%rdx + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + jmp .Lloop + +.align 16 +.Lloop: + movq %rbx,%rdi + leaq K512(%rip),%rbp + xorq %rcx,%rdi + movq 0(%rsi),%r12 + movq %r8,%r13 + movq %rax,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r9,%r15 + + xorq %r8,%r13 + rorq $5,%r14 + xorq %r10,%r15 + + movq %r12,0(%rsp) + xorq %rax,%r14 + andq %r8,%r15 + + rorq $4,%r13 + addq %r11,%r12 + xorq %r10,%r15 + + rorq $6,%r14 + xorq %r8,%r13 + addq %r15,%r12 + + movq %rax,%r15 + addq (%rbp),%r12 + xorq %rax,%r14 + + xorq %rbx,%r15 + rorq $14,%r13 + movq %rbx,%r11 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r11 + addq %r12,%rdx + addq %r12,%r11 + + leaq 8(%rbp),%rbp + addq %r14,%r11 + movq 8(%rsi),%r12 + movq %rdx,%r13 + movq %r11,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r8,%rdi + + xorq %rdx,%r13 + rorq $5,%r14 + xorq %r9,%rdi + + movq %r12,8(%rsp) + xorq %r11,%r14 + andq %rdx,%rdi + + rorq $4,%r13 + addq %r10,%r12 + xorq %r9,%rdi + + rorq $6,%r14 + xorq %rdx,%r13 + addq %rdi,%r12 + + movq %r11,%rdi + addq (%rbp),%r12 + xorq %r11,%r14 + + xorq %rax,%rdi + rorq $14,%r13 + movq %rax,%r10 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r10 + addq %r12,%rcx + addq %r12,%r10 + + leaq 24(%rbp),%rbp + addq %r14,%r10 + movq 16(%rsi),%r12 + movq %rcx,%r13 + movq %r10,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rdx,%r15 + + xorq %rcx,%r13 + rorq $5,%r14 + xorq %r8,%r15 + + movq %r12,16(%rsp) + xorq %r10,%r14 + andq %rcx,%r15 + + rorq $4,%r13 + addq %r9,%r12 + xorq %r8,%r15 + + rorq $6,%r14 + xorq %rcx,%r13 + addq %r15,%r12 + + movq %r10,%r15 + addq (%rbp),%r12 + xorq %r10,%r14 + + xorq %r11,%r15 + rorq $14,%r13 + movq %r11,%r9 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r9 + addq %r12,%rbx + addq %r12,%r9 + + leaq 8(%rbp),%rbp + addq %r14,%r9 + movq 24(%rsi),%r12 + movq %rbx,%r13 + movq %r9,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rcx,%rdi + + xorq %rbx,%r13 + rorq $5,%r14 + xorq %rdx,%rdi + + movq %r12,24(%rsp) + xorq %r9,%r14 + andq %rbx,%rdi + + rorq $4,%r13 + addq %r8,%r12 + xorq %rdx,%rdi + + rorq $6,%r14 + xorq %rbx,%r13 + addq %rdi,%r12 + + movq %r9,%rdi + addq (%rbp),%r12 + xorq %r9,%r14 + + xorq %r10,%rdi + rorq $14,%r13 + movq %r10,%r8 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r8 + addq %r12,%rax + addq %r12,%r8 + + leaq 24(%rbp),%rbp + addq %r14,%r8 + movq 32(%rsi),%r12 + movq %rax,%r13 + movq %r8,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rbx,%r15 + + xorq %rax,%r13 + rorq $5,%r14 + xorq %rcx,%r15 + + movq %r12,32(%rsp) + xorq %r8,%r14 + andq %rax,%r15 + + rorq $4,%r13 + addq %rdx,%r12 + xorq %rcx,%r15 + + rorq $6,%r14 + xorq %rax,%r13 + addq %r15,%r12 + + movq %r8,%r15 + addq (%rbp),%r12 + xorq %r8,%r14 + + xorq %r9,%r15 + rorq $14,%r13 + movq %r9,%rdx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rdx + addq %r12,%r11 + addq %r12,%rdx + + leaq 8(%rbp),%rbp + addq %r14,%rdx + movq 40(%rsi),%r12 + movq %r11,%r13 + movq %rdx,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rax,%rdi + + xorq %r11,%r13 + rorq $5,%r14 + xorq %rbx,%rdi + + movq %r12,40(%rsp) + xorq %rdx,%r14 + andq %r11,%rdi + + rorq $4,%r13 + addq %rcx,%r12 + xorq %rbx,%rdi + + rorq $6,%r14 + xorq %r11,%r13 + addq %rdi,%r12 + + movq %rdx,%rdi + addq (%rbp),%r12 + xorq %rdx,%r14 + + xorq %r8,%rdi + rorq $14,%r13 + movq %r8,%rcx + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rcx + addq %r12,%r10 + addq %r12,%rcx + + leaq 24(%rbp),%rbp + addq %r14,%rcx + movq 48(%rsi),%r12 + movq %r10,%r13 + movq %rcx,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r11,%r15 + + xorq %r10,%r13 + rorq $5,%r14 + xorq %rax,%r15 + + movq %r12,48(%rsp) + xorq %rcx,%r14 + andq %r10,%r15 + + rorq $4,%r13 + addq %rbx,%r12 + xorq %rax,%r15 + + rorq $6,%r14 + xorq %r10,%r13 + addq %r15,%r12 + + movq %rcx,%r15 + addq (%rbp),%r12 + xorq %rcx,%r14 + + xorq %rdx,%r15 + rorq $14,%r13 + movq %rdx,%rbx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rbx + addq %r12,%r9 + addq %r12,%rbx + + leaq 8(%rbp),%rbp + addq %r14,%rbx + movq 56(%rsi),%r12 + movq %r9,%r13 + movq %rbx,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r10,%rdi + + xorq %r9,%r13 + rorq $5,%r14 + xorq %r11,%rdi + + movq %r12,56(%rsp) + xorq %rbx,%r14 + andq %r9,%rdi + + rorq $4,%r13 + addq %rax,%r12 + xorq %r11,%rdi + + rorq $6,%r14 + xorq %r9,%r13 + addq %rdi,%r12 + + movq %rbx,%rdi + addq (%rbp),%r12 + xorq %rbx,%r14 + + xorq %rcx,%rdi + rorq $14,%r13 + movq %rcx,%rax + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rax + addq %r12,%r8 + addq %r12,%rax + + leaq 24(%rbp),%rbp + addq %r14,%rax + movq 64(%rsi),%r12 + movq %r8,%r13 + movq %rax,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r9,%r15 + + xorq %r8,%r13 + rorq $5,%r14 + xorq %r10,%r15 + + movq %r12,64(%rsp) + xorq %rax,%r14 + andq %r8,%r15 + + rorq $4,%r13 + addq %r11,%r12 + xorq %r10,%r15 + + rorq $6,%r14 + xorq %r8,%r13 + addq %r15,%r12 + + movq %rax,%r15 + addq (%rbp),%r12 + xorq %rax,%r14 + + xorq %rbx,%r15 + rorq $14,%r13 + movq %rbx,%r11 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r11 + addq %r12,%rdx + addq %r12,%r11 + + leaq 8(%rbp),%rbp + addq %r14,%r11 + movq 72(%rsi),%r12 + movq %rdx,%r13 + movq %r11,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r8,%rdi + + xorq %rdx,%r13 + rorq $5,%r14 + xorq %r9,%rdi + + movq %r12,72(%rsp) + xorq %r11,%r14 + andq %rdx,%rdi + + rorq $4,%r13 + addq %r10,%r12 + xorq %r9,%rdi + + rorq $6,%r14 + xorq %rdx,%r13 + addq %rdi,%r12 + + movq %r11,%rdi + addq (%rbp),%r12 + xorq %r11,%r14 + + xorq %rax,%rdi + rorq $14,%r13 + movq %rax,%r10 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r10 + addq %r12,%rcx + addq %r12,%r10 + + leaq 24(%rbp),%rbp + addq %r14,%r10 + movq 80(%rsi),%r12 + movq %rcx,%r13 + movq %r10,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rdx,%r15 + + xorq %rcx,%r13 + rorq $5,%r14 + xorq %r8,%r15 + + movq %r12,80(%rsp) + xorq %r10,%r14 + andq %rcx,%r15 + + rorq $4,%r13 + addq %r9,%r12 + xorq %r8,%r15 + + rorq $6,%r14 + xorq %rcx,%r13 + addq %r15,%r12 + + movq %r10,%r15 + addq (%rbp),%r12 + xorq %r10,%r14 + + xorq %r11,%r15 + rorq $14,%r13 + movq %r11,%r9 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r9 + addq %r12,%rbx + addq %r12,%r9 + + leaq 8(%rbp),%rbp + addq %r14,%r9 + movq 88(%rsi),%r12 + movq %rbx,%r13 + movq %r9,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rcx,%rdi + + xorq %rbx,%r13 + rorq $5,%r14 + xorq %rdx,%rdi + + movq %r12,88(%rsp) + xorq %r9,%r14 + andq %rbx,%rdi + + rorq $4,%r13 + addq %r8,%r12 + xorq %rdx,%rdi + + rorq $6,%r14 + xorq %rbx,%r13 + addq %rdi,%r12 + + movq %r9,%rdi + addq (%rbp),%r12 + xorq %r9,%r14 + + xorq %r10,%rdi + rorq $14,%r13 + movq %r10,%r8 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r8 + addq %r12,%rax + addq %r12,%r8 + + leaq 24(%rbp),%rbp + addq %r14,%r8 + movq 96(%rsi),%r12 + movq %rax,%r13 + movq %r8,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rbx,%r15 + + xorq %rax,%r13 + rorq $5,%r14 + xorq %rcx,%r15 + + movq %r12,96(%rsp) + xorq %r8,%r14 + andq %rax,%r15 + + rorq $4,%r13 + addq %rdx,%r12 + xorq %rcx,%r15 + + rorq $6,%r14 + xorq %rax,%r13 + addq %r15,%r12 + + movq %r8,%r15 + addq (%rbp),%r12 + xorq %r8,%r14 + + xorq %r9,%r15 + rorq $14,%r13 + movq %r9,%rdx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rdx + addq %r12,%r11 + addq %r12,%rdx + + leaq 8(%rbp),%rbp + addq %r14,%rdx + movq 104(%rsi),%r12 + movq %r11,%r13 + movq %rdx,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rax,%rdi + + xorq %r11,%r13 + rorq $5,%r14 + xorq %rbx,%rdi + + movq %r12,104(%rsp) + xorq %rdx,%r14 + andq %r11,%rdi + + rorq $4,%r13 + addq %rcx,%r12 + xorq %rbx,%rdi + + rorq $6,%r14 + xorq %r11,%r13 + addq %rdi,%r12 + + movq %rdx,%rdi + addq (%rbp),%r12 + xorq %rdx,%r14 + + xorq %r8,%rdi + rorq $14,%r13 + movq %r8,%rcx + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rcx + addq %r12,%r10 + addq %r12,%rcx + + leaq 24(%rbp),%rbp + addq %r14,%rcx + movq 112(%rsi),%r12 + movq %r10,%r13 + movq %rcx,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r11,%r15 + + xorq %r10,%r13 + rorq $5,%r14 + xorq %rax,%r15 + + movq %r12,112(%rsp) + xorq %rcx,%r14 + andq %r10,%r15 + + rorq $4,%r13 + addq %rbx,%r12 + xorq %rax,%r15 + + rorq $6,%r14 + xorq %r10,%r13 + addq %r15,%r12 + + movq %rcx,%r15 + addq (%rbp),%r12 + xorq %rcx,%r14 + + xorq %rdx,%r15 + rorq $14,%r13 + movq %rdx,%rbx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rbx + addq %r12,%r9 + addq %r12,%rbx + + leaq 8(%rbp),%rbp + addq %r14,%rbx + movq 120(%rsi),%r12 + movq %r9,%r13 + movq %rbx,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r10,%rdi + + xorq %r9,%r13 + rorq $5,%r14 + xorq %r11,%rdi + + movq %r12,120(%rsp) + xorq %rbx,%r14 + andq %r9,%rdi + + rorq $4,%r13 + addq %rax,%r12 + xorq %r11,%rdi + + rorq $6,%r14 + xorq %r9,%r13 + addq %rdi,%r12 + + movq %rbx,%rdi + addq (%rbp),%r12 + xorq %rbx,%r14 + + xorq %rcx,%rdi + rorq $14,%r13 + movq %rcx,%rax + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rax + addq %r12,%r8 + addq %r12,%rax + + leaq 24(%rbp),%rbp + jmp .Lrounds_16_xx +.align 16 +.Lrounds_16_xx: + movq 8(%rsp),%r13 + movq 112(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rax + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 72(%rsp),%r12 + + addq 0(%rsp),%r12 + movq %r8,%r13 + addq %r15,%r12 + movq %rax,%r14 + rorq $23,%r13 + movq %r9,%r15 + + xorq %r8,%r13 + rorq $5,%r14 + xorq %r10,%r15 + + movq %r12,0(%rsp) + xorq %rax,%r14 + andq %r8,%r15 + + rorq $4,%r13 + addq %r11,%r12 + xorq %r10,%r15 + + rorq $6,%r14 + xorq %r8,%r13 + addq %r15,%r12 + + movq %rax,%r15 + addq (%rbp),%r12 + xorq %rax,%r14 + + xorq %rbx,%r15 + rorq $14,%r13 + movq %rbx,%r11 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r11 + addq %r12,%rdx + addq %r12,%r11 + + leaq 8(%rbp),%rbp + movq 16(%rsp),%r13 + movq 120(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r11 + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 80(%rsp),%r12 + + addq 8(%rsp),%r12 + movq %rdx,%r13 + addq %rdi,%r12 + movq %r11,%r14 + rorq $23,%r13 + movq %r8,%rdi + + xorq %rdx,%r13 + rorq $5,%r14 + xorq %r9,%rdi + + movq %r12,8(%rsp) + xorq %r11,%r14 + andq %rdx,%rdi + + rorq $4,%r13 + addq %r10,%r12 + xorq %r9,%rdi + + rorq $6,%r14 + xorq %rdx,%r13 + addq %rdi,%r12 + + movq %r11,%rdi + addq (%rbp),%r12 + xorq %r11,%r14 + + xorq %rax,%rdi + rorq $14,%r13 + movq %rax,%r10 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r10 + addq %r12,%rcx + addq %r12,%r10 + + leaq 24(%rbp),%rbp + movq 24(%rsp),%r13 + movq 0(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r10 + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 88(%rsp),%r12 + + addq 16(%rsp),%r12 + movq %rcx,%r13 + addq %r15,%r12 + movq %r10,%r14 + rorq $23,%r13 + movq %rdx,%r15 + + xorq %rcx,%r13 + rorq $5,%r14 + xorq %r8,%r15 + + movq %r12,16(%rsp) + xorq %r10,%r14 + andq %rcx,%r15 + + rorq $4,%r13 + addq %r9,%r12 + xorq %r8,%r15 + + rorq $6,%r14 + xorq %rcx,%r13 + addq %r15,%r12 + + movq %r10,%r15 + addq (%rbp),%r12 + xorq %r10,%r14 + + xorq %r11,%r15 + rorq $14,%r13 + movq %r11,%r9 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r9 + addq %r12,%rbx + addq %r12,%r9 + + leaq 8(%rbp),%rbp + movq 32(%rsp),%r13 + movq 8(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r9 + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 96(%rsp),%r12 + + addq 24(%rsp),%r12 + movq %rbx,%r13 + addq %rdi,%r12 + movq %r9,%r14 + rorq $23,%r13 + movq %rcx,%rdi + + xorq %rbx,%r13 + rorq $5,%r14 + xorq %rdx,%rdi + + movq %r12,24(%rsp) + xorq %r9,%r14 + andq %rbx,%rdi + + rorq $4,%r13 + addq %r8,%r12 + xorq %rdx,%rdi + + rorq $6,%r14 + xorq %rbx,%r13 + addq %rdi,%r12 + + movq %r9,%rdi + addq (%rbp),%r12 + xorq %r9,%r14 + + xorq %r10,%rdi + rorq $14,%r13 + movq %r10,%r8 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r8 + addq %r12,%rax + addq %r12,%r8 + + leaq 24(%rbp),%rbp + movq 40(%rsp),%r13 + movq 16(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r8 + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 104(%rsp),%r12 + + addq 32(%rsp),%r12 + movq %rax,%r13 + addq %r15,%r12 + movq %r8,%r14 + rorq $23,%r13 + movq %rbx,%r15 + + xorq %rax,%r13 + rorq $5,%r14 + xorq %rcx,%r15 + + movq %r12,32(%rsp) + xorq %r8,%r14 + andq %rax,%r15 + + rorq $4,%r13 + addq %rdx,%r12 + xorq %rcx,%r15 + + rorq $6,%r14 + xorq %rax,%r13 + addq %r15,%r12 + + movq %r8,%r15 + addq (%rbp),%r12 + xorq %r8,%r14 + + xorq %r9,%r15 + rorq $14,%r13 + movq %r9,%rdx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rdx + addq %r12,%r11 + addq %r12,%rdx + + leaq 8(%rbp),%rbp + movq 48(%rsp),%r13 + movq 24(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rdx + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 112(%rsp),%r12 + + addq 40(%rsp),%r12 + movq %r11,%r13 + addq %rdi,%r12 + movq %rdx,%r14 + rorq $23,%r13 + movq %rax,%rdi + + xorq %r11,%r13 + rorq $5,%r14 + xorq %rbx,%rdi + + movq %r12,40(%rsp) + xorq %rdx,%r14 + andq %r11,%rdi + + rorq $4,%r13 + addq %rcx,%r12 + xorq %rbx,%rdi + + rorq $6,%r14 + xorq %r11,%r13 + addq %rdi,%r12 + + movq %rdx,%rdi + addq (%rbp),%r12 + xorq %rdx,%r14 + + xorq %r8,%rdi + rorq $14,%r13 + movq %r8,%rcx + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rcx + addq %r12,%r10 + addq %r12,%rcx + + leaq 24(%rbp),%rbp + movq 56(%rsp),%r13 + movq 32(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rcx + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 120(%rsp),%r12 + + addq 48(%rsp),%r12 + movq %r10,%r13 + addq %r15,%r12 + movq %rcx,%r14 + rorq $23,%r13 + movq %r11,%r15 + + xorq %r10,%r13 + rorq $5,%r14 + xorq %rax,%r15 + + movq %r12,48(%rsp) + xorq %rcx,%r14 + andq %r10,%r15 + + rorq $4,%r13 + addq %rbx,%r12 + xorq %rax,%r15 + + rorq $6,%r14 + xorq %r10,%r13 + addq %r15,%r12 + + movq %rcx,%r15 + addq (%rbp),%r12 + xorq %rcx,%r14 + + xorq %rdx,%r15 + rorq $14,%r13 + movq %rdx,%rbx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rbx + addq %r12,%r9 + addq %r12,%rbx + + leaq 8(%rbp),%rbp + movq 64(%rsp),%r13 + movq 40(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rbx + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 0(%rsp),%r12 + + addq 56(%rsp),%r12 + movq %r9,%r13 + addq %rdi,%r12 + movq %rbx,%r14 + rorq $23,%r13 + movq %r10,%rdi + + xorq %r9,%r13 + rorq $5,%r14 + xorq %r11,%rdi + + movq %r12,56(%rsp) + xorq %rbx,%r14 + andq %r9,%rdi + + rorq $4,%r13 + addq %rax,%r12 + xorq %r11,%rdi + + rorq $6,%r14 + xorq %r9,%r13 + addq %rdi,%r12 + + movq %rbx,%rdi + addq (%rbp),%r12 + xorq %rbx,%r14 + + xorq %rcx,%rdi + rorq $14,%r13 + movq %rcx,%rax + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rax + addq %r12,%r8 + addq %r12,%rax + + leaq 24(%rbp),%rbp + movq 72(%rsp),%r13 + movq 48(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rax + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 8(%rsp),%r12 + + addq 64(%rsp),%r12 + movq %r8,%r13 + addq %r15,%r12 + movq %rax,%r14 + rorq $23,%r13 + movq %r9,%r15 + + xorq %r8,%r13 + rorq $5,%r14 + xorq %r10,%r15 + + movq %r12,64(%rsp) + xorq %rax,%r14 + andq %r8,%r15 + + rorq $4,%r13 + addq %r11,%r12 + xorq %r10,%r15 + + rorq $6,%r14 + xorq %r8,%r13 + addq %r15,%r12 + + movq %rax,%r15 + addq (%rbp),%r12 + xorq %rax,%r14 + + xorq %rbx,%r15 + rorq $14,%r13 + movq %rbx,%r11 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r11 + addq %r12,%rdx + addq %r12,%r11 + + leaq 8(%rbp),%rbp + movq 80(%rsp),%r13 + movq 56(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r11 + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 16(%rsp),%r12 + + addq 72(%rsp),%r12 + movq %rdx,%r13 + addq %rdi,%r12 + movq %r11,%r14 + rorq $23,%r13 + movq %r8,%rdi + + xorq %rdx,%r13 + rorq $5,%r14 + xorq %r9,%rdi + + movq %r12,72(%rsp) + xorq %r11,%r14 + andq %rdx,%rdi + + rorq $4,%r13 + addq %r10,%r12 + xorq %r9,%rdi + + rorq $6,%r14 + xorq %rdx,%r13 + addq %rdi,%r12 + + movq %r11,%rdi + addq (%rbp),%r12 + xorq %r11,%r14 + + xorq %rax,%rdi + rorq $14,%r13 + movq %rax,%r10 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r10 + addq %r12,%rcx + addq %r12,%r10 + + leaq 24(%rbp),%rbp + movq 88(%rsp),%r13 + movq 64(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r10 + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 24(%rsp),%r12 + + addq 80(%rsp),%r12 + movq %rcx,%r13 + addq %r15,%r12 + movq %r10,%r14 + rorq $23,%r13 + movq %rdx,%r15 + + xorq %rcx,%r13 + rorq $5,%r14 + xorq %r8,%r15 + + movq %r12,80(%rsp) + xorq %r10,%r14 + andq %rcx,%r15 + + rorq $4,%r13 + addq %r9,%r12 + xorq %r8,%r15 + + rorq $6,%r14 + xorq %rcx,%r13 + addq %r15,%r12 + + movq %r10,%r15 + addq (%rbp),%r12 + xorq %r10,%r14 + + xorq %r11,%r15 + rorq $14,%r13 + movq %r11,%r9 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r9 + addq %r12,%rbx + addq %r12,%r9 + + leaq 8(%rbp),%rbp + movq 96(%rsp),%r13 + movq 72(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r9 + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 32(%rsp),%r12 + + addq 88(%rsp),%r12 + movq %rbx,%r13 + addq %rdi,%r12 + movq %r9,%r14 + rorq $23,%r13 + movq %rcx,%rdi + + xorq %rbx,%r13 + rorq $5,%r14 + xorq %rdx,%rdi + + movq %r12,88(%rsp) + xorq %r9,%r14 + andq %rbx,%rdi + + rorq $4,%r13 + addq %r8,%r12 + xorq %rdx,%rdi + + rorq $6,%r14 + xorq %rbx,%r13 + addq %rdi,%r12 + + movq %r9,%rdi + addq (%rbp),%r12 + xorq %r9,%r14 + + xorq %r10,%rdi + rorq $14,%r13 + movq %r10,%r8 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r8 + addq %r12,%rax + addq %r12,%r8 + + leaq 24(%rbp),%rbp + movq 104(%rsp),%r13 + movq 80(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r8 + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 40(%rsp),%r12 + + addq 96(%rsp),%r12 + movq %rax,%r13 + addq %r15,%r12 + movq %r8,%r14 + rorq $23,%r13 + movq %rbx,%r15 + + xorq %rax,%r13 + rorq $5,%r14 + xorq %rcx,%r15 + + movq %r12,96(%rsp) + xorq %r8,%r14 + andq %rax,%r15 + + rorq $4,%r13 + addq %rdx,%r12 + xorq %rcx,%r15 + + rorq $6,%r14 + xorq %rax,%r13 + addq %r15,%r12 + + movq %r8,%r15 + addq (%rbp),%r12 + xorq %r8,%r14 + + xorq %r9,%r15 + rorq $14,%r13 + movq %r9,%rdx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rdx + addq %r12,%r11 + addq %r12,%rdx + + leaq 8(%rbp),%rbp + movq 112(%rsp),%r13 + movq 88(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rdx + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 48(%rsp),%r12 + + addq 104(%rsp),%r12 + movq %r11,%r13 + addq %rdi,%r12 + movq %rdx,%r14 + rorq $23,%r13 + movq %rax,%rdi + + xorq %r11,%r13 + rorq $5,%r14 + xorq %rbx,%rdi + + movq %r12,104(%rsp) + xorq %rdx,%r14 + andq %r11,%rdi + + rorq $4,%r13 + addq %rcx,%r12 + xorq %rbx,%rdi + + rorq $6,%r14 + xorq %r11,%r13 + addq %rdi,%r12 + + movq %rdx,%rdi + addq (%rbp),%r12 + xorq %rdx,%r14 + + xorq %r8,%rdi + rorq $14,%r13 + movq %r8,%rcx + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rcx + addq %r12,%r10 + addq %r12,%rcx + + leaq 24(%rbp),%rbp + movq 120(%rsp),%r13 + movq 96(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rcx + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 56(%rsp),%r12 + + addq 112(%rsp),%r12 + movq %r10,%r13 + addq %r15,%r12 + movq %rcx,%r14 + rorq $23,%r13 + movq %r11,%r15 + + xorq %r10,%r13 + rorq $5,%r14 + xorq %rax,%r15 + + movq %r12,112(%rsp) + xorq %rcx,%r14 + andq %r10,%r15 + + rorq $4,%r13 + addq %rbx,%r12 + xorq %rax,%r15 + + rorq $6,%r14 + xorq %r10,%r13 + addq %r15,%r12 + + movq %rcx,%r15 + addq (%rbp),%r12 + xorq %rcx,%r14 + + xorq %rdx,%r15 + rorq $14,%r13 + movq %rdx,%rbx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rbx + addq %r12,%r9 + addq %r12,%rbx + + leaq 8(%rbp),%rbp + movq 0(%rsp),%r13 + movq 104(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rbx + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 64(%rsp),%r12 + + addq 120(%rsp),%r12 + movq %r9,%r13 + addq %rdi,%r12 + movq %rbx,%r14 + rorq $23,%r13 + movq %r10,%rdi + + xorq %r9,%r13 + rorq $5,%r14 + xorq %r11,%rdi + + movq %r12,120(%rsp) + xorq %rbx,%r14 + andq %r9,%rdi + + rorq $4,%r13 + addq %rax,%r12 + xorq %r11,%rdi + + rorq $6,%r14 + xorq %r9,%r13 + addq %rdi,%r12 + + movq %rbx,%rdi + addq (%rbp),%r12 + xorq %rbx,%r14 + + xorq %rcx,%rdi + rorq $14,%r13 + movq %rcx,%rax + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rax + addq %r12,%r8 + addq %r12,%rax + + leaq 24(%rbp),%rbp + cmpb $0,7(%rbp) + jnz .Lrounds_16_xx + + movq 128+0(%rsp),%rdi + addq %r14,%rax + leaq 128(%rsi),%rsi + + addq 0(%rdi),%rax + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + addq 48(%rdi),%r10 + addq 56(%rdi),%r11 + + cmpq 128+16(%rsp),%rsi + + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + jb .Lloop + + movq 152(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha512_block_data_order,.-sha512_block_data_order +.align 64 +.type K512,@object +K512: +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0x06ca6351e003826f,0x142929670a0e6e70 +.quad 0x06ca6351e003826f,0x142929670a0e6e70 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6 +.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6 +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 + +.quad 0x0001020304050607,0x08090a0b0c0d0e0f +.quad 0x0001020304050607,0x08090a0b0c0d0e0f +.byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.type sha512_block_data_order_xop,@function +.align 64 +sha512_block_data_order_xop: +.cfi_startproc +.Lxop_shortcut: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + shlq $4,%rdx + subq $160,%rsp + leaq (%rsi,%rdx,8),%rdx + andq $-64,%rsp + movq %rdi,128+0(%rsp) + movq %rsi,128+8(%rsp) + movq %rdx,128+16(%rsp) + movq %rax,152(%rsp) +.cfi_escape 0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08 +.Lprologue_xop: + + vzeroupper + movq 0(%rdi),%rax + movq 8(%rdi),%rbx + movq 16(%rdi),%rcx + movq 24(%rdi),%rdx + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + jmp .Lloop_xop +.align 16 +.Lloop_xop: + vmovdqa K512+1280(%rip),%xmm11 + vmovdqu 0(%rsi),%xmm0 + leaq K512+128(%rip),%rbp + vmovdqu 16(%rsi),%xmm1 + vmovdqu 32(%rsi),%xmm2 + vpshufb %xmm11,%xmm0,%xmm0 + vmovdqu 48(%rsi),%xmm3 + vpshufb %xmm11,%xmm1,%xmm1 + vmovdqu 64(%rsi),%xmm4 + vpshufb %xmm11,%xmm2,%xmm2 + vmovdqu 80(%rsi),%xmm5 + vpshufb %xmm11,%xmm3,%xmm3 + vmovdqu 96(%rsi),%xmm6 + vpshufb %xmm11,%xmm4,%xmm4 + vmovdqu 112(%rsi),%xmm7 + vpshufb %xmm11,%xmm5,%xmm5 + vpaddq -128(%rbp),%xmm0,%xmm8 + vpshufb %xmm11,%xmm6,%xmm6 + vpaddq -96(%rbp),%xmm1,%xmm9 + vpshufb %xmm11,%xmm7,%xmm7 + vpaddq -64(%rbp),%xmm2,%xmm10 + vpaddq -32(%rbp),%xmm3,%xmm11 + vmovdqa %xmm8,0(%rsp) + vpaddq 0(%rbp),%xmm4,%xmm8 + vmovdqa %xmm9,16(%rsp) + vpaddq 32(%rbp),%xmm5,%xmm9 + vmovdqa %xmm10,32(%rsp) + vpaddq 64(%rbp),%xmm6,%xmm10 + vmovdqa %xmm11,48(%rsp) + vpaddq 96(%rbp),%xmm7,%xmm11 + vmovdqa %xmm8,64(%rsp) + movq %rax,%r14 + vmovdqa %xmm9,80(%rsp) + movq %rbx,%rdi + vmovdqa %xmm10,96(%rsp) + xorq %rcx,%rdi + vmovdqa %xmm11,112(%rsp) + movq %r8,%r13 + jmp .Lxop_00_47 + +.align 16 +.Lxop_00_47: + addq $256,%rbp + vpalignr $8,%xmm0,%xmm1,%xmm8 + rorq $23,%r13 + movq %r14,%rax + vpalignr $8,%xmm4,%xmm5,%xmm11 + movq %r9,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r8,%r13 + xorq %r10,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rax,%r14 + vpaddq %xmm11,%xmm0,%xmm0 + andq %r8,%r12 + xorq %r8,%r13 + addq 0(%rsp),%r11 + movq %rax,%r15 +.byte 143,72,120,195,209,7 + xorq %r10,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,223,3 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm7,%xmm10 + addq %r11,%rdx + addq %rdi,%r11 + vpaddq %xmm8,%xmm0,%xmm0 + movq %rdx,%r13 + addq %r11,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r11 + vpxor %xmm10,%xmm11,%xmm11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + vpaddq %xmm11,%xmm0,%xmm0 + addq 8(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + vpaddq -128(%rbp),%xmm0,%xmm10 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,0(%rsp) + vpalignr $8,%xmm1,%xmm2,%xmm8 + rorq $23,%r13 + movq %r14,%r10 + vpalignr $8,%xmm5,%xmm6,%xmm11 + movq %rdx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rcx,%r13 + xorq %r8,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r10,%r14 + vpaddq %xmm11,%xmm1,%xmm1 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 16(%rsp),%r9 + movq %r10,%r15 +.byte 143,72,120,195,209,7 + xorq %r8,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,216,3 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm0,%xmm10 + addq %r9,%rbx + addq %rdi,%r9 + vpaddq %xmm8,%xmm1,%xmm1 + movq %rbx,%r13 + addq %r9,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r9 + vpxor %xmm10,%xmm11,%xmm11 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + vpaddq %xmm11,%xmm1,%xmm1 + addq 24(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + vpaddq -96(%rbp),%xmm1,%xmm10 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,16(%rsp) + vpalignr $8,%xmm2,%xmm3,%xmm8 + rorq $23,%r13 + movq %r14,%r8 + vpalignr $8,%xmm6,%xmm7,%xmm11 + movq %rbx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rax,%r13 + xorq %rcx,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r8,%r14 + vpaddq %xmm11,%xmm2,%xmm2 + andq %rax,%r12 + xorq %rax,%r13 + addq 32(%rsp),%rdx + movq %r8,%r15 +.byte 143,72,120,195,209,7 + xorq %rcx,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,217,3 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm1,%xmm10 + addq %rdx,%r11 + addq %rdi,%rdx + vpaddq %xmm8,%xmm2,%xmm2 + movq %r11,%r13 + addq %rdx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rdx + vpxor %xmm10,%xmm11,%xmm11 + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + vpaddq %xmm11,%xmm2,%xmm2 + addq 40(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + vpaddq -64(%rbp),%xmm2,%xmm10 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,32(%rsp) + vpalignr $8,%xmm3,%xmm4,%xmm8 + rorq $23,%r13 + movq %r14,%rcx + vpalignr $8,%xmm7,%xmm0,%xmm11 + movq %r11,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r10,%r13 + xorq %rax,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rcx,%r14 + vpaddq %xmm11,%xmm3,%xmm3 + andq %r10,%r12 + xorq %r10,%r13 + addq 48(%rsp),%rbx + movq %rcx,%r15 +.byte 143,72,120,195,209,7 + xorq %rax,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,218,3 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm2,%xmm10 + addq %rbx,%r9 + addq %rdi,%rbx + vpaddq %xmm8,%xmm3,%xmm3 + movq %r9,%r13 + addq %rbx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rbx + vpxor %xmm10,%xmm11,%xmm11 + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + vpaddq %xmm11,%xmm3,%xmm3 + addq 56(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + vpaddq -32(%rbp),%xmm3,%xmm10 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,48(%rsp) + vpalignr $8,%xmm4,%xmm5,%xmm8 + rorq $23,%r13 + movq %r14,%rax + vpalignr $8,%xmm0,%xmm1,%xmm11 + movq %r9,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r8,%r13 + xorq %r10,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rax,%r14 + vpaddq %xmm11,%xmm4,%xmm4 + andq %r8,%r12 + xorq %r8,%r13 + addq 64(%rsp),%r11 + movq %rax,%r15 +.byte 143,72,120,195,209,7 + xorq %r10,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,219,3 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm3,%xmm10 + addq %r11,%rdx + addq %rdi,%r11 + vpaddq %xmm8,%xmm4,%xmm4 + movq %rdx,%r13 + addq %r11,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r11 + vpxor %xmm10,%xmm11,%xmm11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + vpaddq %xmm11,%xmm4,%xmm4 + addq 72(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + vpaddq 0(%rbp),%xmm4,%xmm10 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,64(%rsp) + vpalignr $8,%xmm5,%xmm6,%xmm8 + rorq $23,%r13 + movq %r14,%r10 + vpalignr $8,%xmm1,%xmm2,%xmm11 + movq %rdx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rcx,%r13 + xorq %r8,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r10,%r14 + vpaddq %xmm11,%xmm5,%xmm5 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 80(%rsp),%r9 + movq %r10,%r15 +.byte 143,72,120,195,209,7 + xorq %r8,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,220,3 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm4,%xmm10 + addq %r9,%rbx + addq %rdi,%r9 + vpaddq %xmm8,%xmm5,%xmm5 + movq %rbx,%r13 + addq %r9,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r9 + vpxor %xmm10,%xmm11,%xmm11 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + vpaddq %xmm11,%xmm5,%xmm5 + addq 88(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + vpaddq 32(%rbp),%xmm5,%xmm10 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,80(%rsp) + vpalignr $8,%xmm6,%xmm7,%xmm8 + rorq $23,%r13 + movq %r14,%r8 + vpalignr $8,%xmm2,%xmm3,%xmm11 + movq %rbx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rax,%r13 + xorq %rcx,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r8,%r14 + vpaddq %xmm11,%xmm6,%xmm6 + andq %rax,%r12 + xorq %rax,%r13 + addq 96(%rsp),%rdx + movq %r8,%r15 +.byte 143,72,120,195,209,7 + xorq %rcx,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,221,3 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm5,%xmm10 + addq %rdx,%r11 + addq %rdi,%rdx + vpaddq %xmm8,%xmm6,%xmm6 + movq %r11,%r13 + addq %rdx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rdx + vpxor %xmm10,%xmm11,%xmm11 + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + vpaddq %xmm11,%xmm6,%xmm6 + addq 104(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + vpaddq 64(%rbp),%xmm6,%xmm10 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,96(%rsp) + vpalignr $8,%xmm7,%xmm0,%xmm8 + rorq $23,%r13 + movq %r14,%rcx + vpalignr $8,%xmm3,%xmm4,%xmm11 + movq %r11,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r10,%r13 + xorq %rax,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rcx,%r14 + vpaddq %xmm11,%xmm7,%xmm7 + andq %r10,%r12 + xorq %r10,%r13 + addq 112(%rsp),%rbx + movq %rcx,%r15 +.byte 143,72,120,195,209,7 + xorq %rax,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,222,3 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm6,%xmm10 + addq %rbx,%r9 + addq %rdi,%rbx + vpaddq %xmm8,%xmm7,%xmm7 + movq %r9,%r13 + addq %rbx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rbx + vpxor %xmm10,%xmm11,%xmm11 + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + vpaddq %xmm11,%xmm7,%xmm7 + addq 120(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + vpaddq 96(%rbp),%xmm7,%xmm10 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,112(%rsp) + cmpb $0,135(%rbp) + jne .Lxop_00_47 + rorq $23,%r13 + movq %r14,%rax + movq %r9,%r12 + rorq $5,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + rorq $4,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 0(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + rorq $6,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + rorq $28,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + rorq $23,%r13 + movq %r14,%r11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 8(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + rorq $23,%r13 + movq %r14,%r10 + movq %rdx,%r12 + rorq $5,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + rorq $4,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 16(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + rorq $6,%r14 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + rorq $28,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + rorq $23,%r13 + movq %r14,%r9 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 24(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + rorq $23,%r13 + movq %r14,%r8 + movq %rbx,%r12 + rorq $5,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + rorq $4,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 32(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + rorq $6,%r14 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + rorq $28,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + rorq $23,%r13 + movq %r14,%rdx + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 40(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + rorq $23,%r13 + movq %r14,%rcx + movq %r11,%r12 + rorq $5,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + rorq $4,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 48(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + rorq $6,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + rorq $28,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + rorq $23,%r13 + movq %r14,%rbx + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 56(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + rorq $23,%r13 + movq %r14,%rax + movq %r9,%r12 + rorq $5,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + rorq $4,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 64(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + rorq $6,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + rorq $28,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + rorq $23,%r13 + movq %r14,%r11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 72(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + rorq $23,%r13 + movq %r14,%r10 + movq %rdx,%r12 + rorq $5,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + rorq $4,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 80(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + rorq $6,%r14 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + rorq $28,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + rorq $23,%r13 + movq %r14,%r9 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 88(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + rorq $23,%r13 + movq %r14,%r8 + movq %rbx,%r12 + rorq $5,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + rorq $4,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 96(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + rorq $6,%r14 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + rorq $28,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + rorq $23,%r13 + movq %r14,%rdx + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 104(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + rorq $23,%r13 + movq %r14,%rcx + movq %r11,%r12 + rorq $5,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + rorq $4,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 112(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + rorq $6,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + rorq $28,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + rorq $23,%r13 + movq %r14,%rbx + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 120(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + movq 128+0(%rsp),%rdi + movq %r14,%rax + + addq 0(%rdi),%rax + leaq 128(%rsi),%rsi + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + addq 48(%rdi),%r10 + addq 56(%rdi),%r11 + + cmpq 128+16(%rsp),%rsi + + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + jb .Lloop_xop + + movq 152(%rsp),%rsi +.cfi_def_cfa %rsi,8 + vzeroupper + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_xop: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha512_block_data_order_xop,.-sha512_block_data_order_xop +.type sha512_block_data_order_avx,@function +.align 64 +sha512_block_data_order_avx: +.cfi_startproc +.Lavx_shortcut: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + shlq $4,%rdx + subq $160,%rsp + leaq (%rsi,%rdx,8),%rdx + andq $-64,%rsp + movq %rdi,128+0(%rsp) + movq %rsi,128+8(%rsp) + movq %rdx,128+16(%rsp) + movq %rax,152(%rsp) +.cfi_escape 0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08 +.Lprologue_avx: + + vzeroupper + movq 0(%rdi),%rax + movq 8(%rdi),%rbx + movq 16(%rdi),%rcx + movq 24(%rdi),%rdx + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + jmp .Lloop_avx +.align 16 +.Lloop_avx: + vmovdqa K512+1280(%rip),%xmm11 + vmovdqu 0(%rsi),%xmm0 + leaq K512+128(%rip),%rbp + vmovdqu 16(%rsi),%xmm1 + vmovdqu 32(%rsi),%xmm2 + vpshufb %xmm11,%xmm0,%xmm0 + vmovdqu 48(%rsi),%xmm3 + vpshufb %xmm11,%xmm1,%xmm1 + vmovdqu 64(%rsi),%xmm4 + vpshufb %xmm11,%xmm2,%xmm2 + vmovdqu 80(%rsi),%xmm5 + vpshufb %xmm11,%xmm3,%xmm3 + vmovdqu 96(%rsi),%xmm6 + vpshufb %xmm11,%xmm4,%xmm4 + vmovdqu 112(%rsi),%xmm7 + vpshufb %xmm11,%xmm5,%xmm5 + vpaddq -128(%rbp),%xmm0,%xmm8 + vpshufb %xmm11,%xmm6,%xmm6 + vpaddq -96(%rbp),%xmm1,%xmm9 + vpshufb %xmm11,%xmm7,%xmm7 + vpaddq -64(%rbp),%xmm2,%xmm10 + vpaddq -32(%rbp),%xmm3,%xmm11 + vmovdqa %xmm8,0(%rsp) + vpaddq 0(%rbp),%xmm4,%xmm8 + vmovdqa %xmm9,16(%rsp) + vpaddq 32(%rbp),%xmm5,%xmm9 + vmovdqa %xmm10,32(%rsp) + vpaddq 64(%rbp),%xmm6,%xmm10 + vmovdqa %xmm11,48(%rsp) + vpaddq 96(%rbp),%xmm7,%xmm11 + vmovdqa %xmm8,64(%rsp) + movq %rax,%r14 + vmovdqa %xmm9,80(%rsp) + movq %rbx,%rdi + vmovdqa %xmm10,96(%rsp) + xorq %rcx,%rdi + vmovdqa %xmm11,112(%rsp) + movq %r8,%r13 + jmp .Lavx_00_47 + +.align 16 +.Lavx_00_47: + addq $256,%rbp + vpalignr $8,%xmm0,%xmm1,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rax + vpalignr $8,%xmm4,%xmm5,%xmm11 + movq %r9,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r8,%r13 + xorq %r10,%r12 + vpaddq %xmm11,%xmm0,%xmm0 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r8,%r12 + xorq %r8,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 0(%rsp),%r11 + movq %rax,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rbx,%r15 + addq %r12,%r11 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm7,%xmm11 + addq %r11,%rdx + addq %rdi,%r11 + vpxor %xmm9,%xmm8,%xmm8 + movq %rdx,%r13 + addq %r11,%r14 + vpsllq $3,%xmm7,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r11 + vpaddq %xmm8,%xmm0,%xmm0 + movq %r8,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm7,%xmm9 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rdx,%r12 + xorq %rdx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 8(%rsp),%r10 + movq %r11,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r9,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rax,%rdi + addq %r12,%r10 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm0,%xmm0 + xorq %r11,%r14 + addq %r13,%r10 + vpaddq -128(%rbp),%xmm0,%xmm10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,0(%rsp) + vpalignr $8,%xmm1,%xmm2,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r10 + vpalignr $8,%xmm5,%xmm6,%xmm11 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rcx,%r13 + xorq %r8,%r12 + vpaddq %xmm11,%xmm1,%xmm1 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rcx,%r12 + xorq %rcx,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 16(%rsp),%r9 + movq %r10,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r11,%r15 + addq %r12,%r9 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm0,%xmm11 + addq %r9,%rbx + addq %rdi,%r9 + vpxor %xmm9,%xmm8,%xmm8 + movq %rbx,%r13 + addq %r9,%r14 + vpsllq $3,%xmm0,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r9 + vpaddq %xmm8,%xmm1,%xmm1 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm0,%xmm9 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rbx,%r12 + xorq %rbx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 24(%rsp),%r8 + movq %r9,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r10,%rdi + addq %r12,%r8 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm1,%xmm1 + xorq %r9,%r14 + addq %r13,%r8 + vpaddq -96(%rbp),%xmm1,%xmm10 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,16(%rsp) + vpalignr $8,%xmm2,%xmm3,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r8 + vpalignr $8,%xmm6,%xmm7,%xmm11 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rax,%r13 + xorq %rcx,%r12 + vpaddq %xmm11,%xmm2,%xmm2 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rax,%r12 + xorq %rax,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 32(%rsp),%rdx + movq %r8,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r9,%r15 + addq %r12,%rdx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm1,%xmm11 + addq %rdx,%r11 + addq %rdi,%rdx + vpxor %xmm9,%xmm8,%xmm8 + movq %r11,%r13 + addq %rdx,%r14 + vpsllq $3,%xmm1,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rdx + vpaddq %xmm8,%xmm2,%xmm2 + movq %rax,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm1,%xmm9 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r11,%r12 + xorq %r11,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 40(%rsp),%rcx + movq %rdx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r8,%rdi + addq %r12,%rcx + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm2,%xmm2 + xorq %rdx,%r14 + addq %r13,%rcx + vpaddq -64(%rbp),%xmm2,%xmm10 + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,32(%rsp) + vpalignr $8,%xmm3,%xmm4,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rcx + vpalignr $8,%xmm7,%xmm0,%xmm11 + movq %r11,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r10,%r13 + xorq %rax,%r12 + vpaddq %xmm11,%xmm3,%xmm3 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r10,%r12 + xorq %r10,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 48(%rsp),%rbx + movq %rcx,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rdx,%r15 + addq %r12,%rbx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm2,%xmm11 + addq %rbx,%r9 + addq %rdi,%rbx + vpxor %xmm9,%xmm8,%xmm8 + movq %r9,%r13 + addq %rbx,%r14 + vpsllq $3,%xmm2,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rbx + vpaddq %xmm8,%xmm3,%xmm3 + movq %r10,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm2,%xmm9 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r9,%r12 + xorq %r9,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 56(%rsp),%rax + movq %rbx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r11,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rcx,%rdi + addq %r12,%rax + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm3,%xmm3 + xorq %rbx,%r14 + addq %r13,%rax + vpaddq -32(%rbp),%xmm3,%xmm10 + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,48(%rsp) + vpalignr $8,%xmm4,%xmm5,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rax + vpalignr $8,%xmm0,%xmm1,%xmm11 + movq %r9,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r8,%r13 + xorq %r10,%r12 + vpaddq %xmm11,%xmm4,%xmm4 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r8,%r12 + xorq %r8,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 64(%rsp),%r11 + movq %rax,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rbx,%r15 + addq %r12,%r11 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm3,%xmm11 + addq %r11,%rdx + addq %rdi,%r11 + vpxor %xmm9,%xmm8,%xmm8 + movq %rdx,%r13 + addq %r11,%r14 + vpsllq $3,%xmm3,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r11 + vpaddq %xmm8,%xmm4,%xmm4 + movq %r8,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm3,%xmm9 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rdx,%r12 + xorq %rdx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 72(%rsp),%r10 + movq %r11,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r9,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rax,%rdi + addq %r12,%r10 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm4,%xmm4 + xorq %r11,%r14 + addq %r13,%r10 + vpaddq 0(%rbp),%xmm4,%xmm10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,64(%rsp) + vpalignr $8,%xmm5,%xmm6,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r10 + vpalignr $8,%xmm1,%xmm2,%xmm11 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rcx,%r13 + xorq %r8,%r12 + vpaddq %xmm11,%xmm5,%xmm5 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rcx,%r12 + xorq %rcx,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 80(%rsp),%r9 + movq %r10,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r11,%r15 + addq %r12,%r9 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm4,%xmm11 + addq %r9,%rbx + addq %rdi,%r9 + vpxor %xmm9,%xmm8,%xmm8 + movq %rbx,%r13 + addq %r9,%r14 + vpsllq $3,%xmm4,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r9 + vpaddq %xmm8,%xmm5,%xmm5 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm4,%xmm9 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rbx,%r12 + xorq %rbx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 88(%rsp),%r8 + movq %r9,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r10,%rdi + addq %r12,%r8 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm5,%xmm5 + xorq %r9,%r14 + addq %r13,%r8 + vpaddq 32(%rbp),%xmm5,%xmm10 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,80(%rsp) + vpalignr $8,%xmm6,%xmm7,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r8 + vpalignr $8,%xmm2,%xmm3,%xmm11 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rax,%r13 + xorq %rcx,%r12 + vpaddq %xmm11,%xmm6,%xmm6 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rax,%r12 + xorq %rax,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 96(%rsp),%rdx + movq %r8,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r9,%r15 + addq %r12,%rdx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm5,%xmm11 + addq %rdx,%r11 + addq %rdi,%rdx + vpxor %xmm9,%xmm8,%xmm8 + movq %r11,%r13 + addq %rdx,%r14 + vpsllq $3,%xmm5,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rdx + vpaddq %xmm8,%xmm6,%xmm6 + movq %rax,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm5,%xmm9 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r11,%r12 + xorq %r11,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 104(%rsp),%rcx + movq %rdx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r8,%rdi + addq %r12,%rcx + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm6,%xmm6 + xorq %rdx,%r14 + addq %r13,%rcx + vpaddq 64(%rbp),%xmm6,%xmm10 + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,96(%rsp) + vpalignr $8,%xmm7,%xmm0,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rcx + vpalignr $8,%xmm3,%xmm4,%xmm11 + movq %r11,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r10,%r13 + xorq %rax,%r12 + vpaddq %xmm11,%xmm7,%xmm7 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r10,%r12 + xorq %r10,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 112(%rsp),%rbx + movq %rcx,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rdx,%r15 + addq %r12,%rbx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm6,%xmm11 + addq %rbx,%r9 + addq %rdi,%rbx + vpxor %xmm9,%xmm8,%xmm8 + movq %r9,%r13 + addq %rbx,%r14 + vpsllq $3,%xmm6,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rbx + vpaddq %xmm8,%xmm7,%xmm7 + movq %r10,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm6,%xmm9 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r9,%r12 + xorq %r9,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 120(%rsp),%rax + movq %rbx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r11,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rcx,%rdi + addq %r12,%rax + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm7,%xmm7 + xorq %rbx,%r14 + addq %r13,%rax + vpaddq 96(%rbp),%xmm7,%xmm10 + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,112(%rsp) + cmpb $0,135(%rbp) + jne .Lavx_00_47 + shrdq $23,%r13,%r13 + movq %r14,%rax + movq %r9,%r12 + shrdq $5,%r14,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 0(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r11 + movq %r8,%r12 + shrdq $5,%r14,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 8(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + shrdq $6,%r14,%r14 + xorq %rax,%rdi + addq %r12,%r10 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r10 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 16(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + xorq %r11,%r15 + addq %r12,%r9 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r9 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 24(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + xorq %r10,%rdi + addq %r12,%r8 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r8 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 32(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + xorq %r9,%r15 + addq %r12,%rdx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + shrdq $28,%r14,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rdx + movq %rax,%r12 + shrdq $5,%r14,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 40(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + xorq %r8,%rdi + addq %r12,%rcx + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rcx + movq %r11,%r12 + shrdq $5,%r14,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 48(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rbx + movq %r10,%r12 + shrdq $5,%r14,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 56(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + shrdq $6,%r14,%r14 + xorq %rcx,%rdi + addq %r12,%rax + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rax + movq %r9,%r12 + shrdq $5,%r14,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 64(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r11 + movq %r8,%r12 + shrdq $5,%r14,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 72(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + shrdq $6,%r14,%r14 + xorq %rax,%rdi + addq %r12,%r10 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r10 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 80(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + xorq %r11,%r15 + addq %r12,%r9 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r9 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 88(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + xorq %r10,%rdi + addq %r12,%r8 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r8 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 96(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + xorq %r9,%r15 + addq %r12,%rdx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + shrdq $28,%r14,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rdx + movq %rax,%r12 + shrdq $5,%r14,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 104(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + xorq %r8,%rdi + addq %r12,%rcx + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rcx + movq %r11,%r12 + shrdq $5,%r14,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 112(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rbx + movq %r10,%r12 + shrdq $5,%r14,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 120(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + shrdq $6,%r14,%r14 + xorq %rcx,%rdi + addq %r12,%rax + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + movq 128+0(%rsp),%rdi + movq %r14,%rax + + addq 0(%rdi),%rax + leaq 128(%rsi),%rsi + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + addq 48(%rdi),%r10 + addq 56(%rdi),%r11 + + cmpq 128+16(%rsp),%rsi + + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + jb .Lloop_avx + + movq 152(%rsp),%rsi +.cfi_def_cfa %rsi,8 + vzeroupper + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_avx: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha512_block_data_order_avx,.-sha512_block_data_order_avx +.type sha512_block_data_order_avx2,@function +.align 64 +sha512_block_data_order_avx2: +.cfi_startproc +.Lavx2_shortcut: + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + subq $1312,%rsp + shlq $4,%rdx + andq $-2048,%rsp + leaq (%rsi,%rdx,8),%rdx + addq $1152,%rsp + movq %rdi,128+0(%rsp) + movq %rsi,128+8(%rsp) + movq %rdx,128+16(%rsp) + movq %rax,152(%rsp) +.cfi_escape 0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08 +.Lprologue_avx2: + + vzeroupper + subq $-128,%rsi + movq 0(%rdi),%rax + movq %rsi,%r12 + movq 8(%rdi),%rbx + cmpq %rdx,%rsi + movq 16(%rdi),%rcx + cmoveq %rsp,%r12 + movq 24(%rdi),%rdx + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + jmp .Loop_avx2 +.align 16 +.Loop_avx2: + vmovdqu -128(%rsi),%xmm0 + vmovdqu -128+16(%rsi),%xmm1 + vmovdqu -128+32(%rsi),%xmm2 + leaq K512+128(%rip),%rbp + vmovdqu -128+48(%rsi),%xmm3 + vmovdqu -128+64(%rsi),%xmm4 + vmovdqu -128+80(%rsi),%xmm5 + vmovdqu -128+96(%rsi),%xmm6 + vmovdqu -128+112(%rsi),%xmm7 + + vmovdqa 1152(%rbp),%ymm10 + vinserti128 $1,(%r12),%ymm0,%ymm0 + vinserti128 $1,16(%r12),%ymm1,%ymm1 + vpshufb %ymm10,%ymm0,%ymm0 + vinserti128 $1,32(%r12),%ymm2,%ymm2 + vpshufb %ymm10,%ymm1,%ymm1 + vinserti128 $1,48(%r12),%ymm3,%ymm3 + vpshufb %ymm10,%ymm2,%ymm2 + vinserti128 $1,64(%r12),%ymm4,%ymm4 + vpshufb %ymm10,%ymm3,%ymm3 + vinserti128 $1,80(%r12),%ymm5,%ymm5 + vpshufb %ymm10,%ymm4,%ymm4 + vinserti128 $1,96(%r12),%ymm6,%ymm6 + vpshufb %ymm10,%ymm5,%ymm5 + vinserti128 $1,112(%r12),%ymm7,%ymm7 + + vpaddq -128(%rbp),%ymm0,%ymm8 + vpshufb %ymm10,%ymm6,%ymm6 + vpaddq -96(%rbp),%ymm1,%ymm9 + vpshufb %ymm10,%ymm7,%ymm7 + vpaddq -64(%rbp),%ymm2,%ymm10 + vpaddq -32(%rbp),%ymm3,%ymm11 + vmovdqa %ymm8,0(%rsp) + vpaddq 0(%rbp),%ymm4,%ymm8 + vmovdqa %ymm9,32(%rsp) + vpaddq 32(%rbp),%ymm5,%ymm9 + vmovdqa %ymm10,64(%rsp) + vpaddq 64(%rbp),%ymm6,%ymm10 + vmovdqa %ymm11,96(%rsp) + + movq 152(%rsp),%rdi +.cfi_def_cfa %rdi,8 + leaq -128(%rsp),%rsp + + + + movq %rdi,-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 + vpaddq 96(%rbp),%ymm7,%ymm11 + vmovdqa %ymm8,0(%rsp) + xorq %r14,%r14 + vmovdqa %ymm9,32(%rsp) + movq %rbx,%rdi + vmovdqa %ymm10,64(%rsp) + xorq %rcx,%rdi + vmovdqa %ymm11,96(%rsp) + movq %r9,%r12 + addq $32*8,%rbp + jmp .Lavx2_00_47 + +.align 16 +.Lavx2_00_47: + leaq -128(%rsp),%rsp +.cfi_escape 0x0f,0x06,0x77,0xf8,0x00,0x06,0x23,0x08 + + pushq 128-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x00,0x06,0x23,0x08 + leaq 8(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 + vpalignr $8,%ymm0,%ymm1,%ymm8 + addq 0+256(%rsp),%r11 + andq %r8,%r12 + rorxq $41,%r8,%r13 + vpalignr $8,%ymm4,%ymm5,%ymm11 + rorxq $18,%r8,%r15 + leaq (%rax,%r14,1),%rax + leaq (%r11,%r12,1),%r11 + vpsrlq $1,%ymm8,%ymm10 + andnq %r10,%r8,%r12 + xorq %r15,%r13 + rorxq $14,%r8,%r14 + vpaddq %ymm11,%ymm0,%ymm0 + vpsrlq $7,%ymm8,%ymm11 + leaq (%r11,%r12,1),%r11 + xorq %r14,%r13 + movq %rax,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%rax,%r12 + leaq (%r11,%r13,1),%r11 + xorq %rbx,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%rax,%r14 + rorxq $28,%rax,%r13 + leaq (%rdx,%r11,1),%rdx + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rbx,%rdi + vpsrlq $6,%ymm7,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%r11,%rdi,1),%r11 + movq %r8,%r12 + vpsllq $3,%ymm7,%ymm10 + vpaddq %ymm8,%ymm0,%ymm0 + addq 8+256(%rsp),%r10 + andq %rdx,%r12 + rorxq $41,%rdx,%r13 + vpsrlq $19,%ymm7,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%rdx,%rdi + leaq (%r11,%r14,1),%r11 + leaq (%r10,%r12,1),%r10 + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %r9,%rdx,%r12 + xorq %rdi,%r13 + rorxq $14,%rdx,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%r10,%r12,1),%r10 + xorq %r14,%r13 + movq %r11,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%r11,%r12 + leaq (%r10,%r13,1),%r10 + xorq %rax,%rdi + vpaddq %ymm11,%ymm0,%ymm0 + rorxq $34,%r11,%r14 + rorxq $28,%r11,%r13 + leaq (%rcx,%r10,1),%rcx + vpaddq -128(%rbp),%ymm0,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rax,%r15 + xorq %r13,%r14 + leaq (%r10,%r15,1),%r10 + movq %rdx,%r12 + vmovdqa %ymm10,0(%rsp) + vpalignr $8,%ymm1,%ymm2,%ymm8 + addq 32+256(%rsp),%r9 + andq %rcx,%r12 + rorxq $41,%rcx,%r13 + vpalignr $8,%ymm5,%ymm6,%ymm11 + rorxq $18,%rcx,%r15 + leaq (%r10,%r14,1),%r10 + leaq (%r9,%r12,1),%r9 + vpsrlq $1,%ymm8,%ymm10 + andnq %r8,%rcx,%r12 + xorq %r15,%r13 + rorxq $14,%rcx,%r14 + vpaddq %ymm11,%ymm1,%ymm1 + vpsrlq $7,%ymm8,%ymm11 + leaq (%r9,%r12,1),%r9 + xorq %r14,%r13 + movq %r10,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%r10,%r12 + leaq (%r9,%r13,1),%r9 + xorq %r11,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%r10,%r14 + rorxq $28,%r10,%r13 + leaq (%rbx,%r9,1),%rbx + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r11,%rdi + vpsrlq $6,%ymm0,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%r9,%rdi,1),%r9 + movq %rcx,%r12 + vpsllq $3,%ymm0,%ymm10 + vpaddq %ymm8,%ymm1,%ymm1 + addq 40+256(%rsp),%r8 + andq %rbx,%r12 + rorxq $41,%rbx,%r13 + vpsrlq $19,%ymm0,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%rbx,%rdi + leaq (%r9,%r14,1),%r9 + leaq (%r8,%r12,1),%r8 + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %rdx,%rbx,%r12 + xorq %rdi,%r13 + rorxq $14,%rbx,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%r8,%r12,1),%r8 + xorq %r14,%r13 + movq %r9,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%r9,%r12 + leaq (%r8,%r13,1),%r8 + xorq %r10,%rdi + vpaddq %ymm11,%ymm1,%ymm1 + rorxq $34,%r9,%r14 + rorxq $28,%r9,%r13 + leaq (%rax,%r8,1),%rax + vpaddq -96(%rbp),%ymm1,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r10,%r15 + xorq %r13,%r14 + leaq (%r8,%r15,1),%r8 + movq %rbx,%r12 + vmovdqa %ymm10,32(%rsp) + vpalignr $8,%ymm2,%ymm3,%ymm8 + addq 64+256(%rsp),%rdx + andq %rax,%r12 + rorxq $41,%rax,%r13 + vpalignr $8,%ymm6,%ymm7,%ymm11 + rorxq $18,%rax,%r15 + leaq (%r8,%r14,1),%r8 + leaq (%rdx,%r12,1),%rdx + vpsrlq $1,%ymm8,%ymm10 + andnq %rcx,%rax,%r12 + xorq %r15,%r13 + rorxq $14,%rax,%r14 + vpaddq %ymm11,%ymm2,%ymm2 + vpsrlq $7,%ymm8,%ymm11 + leaq (%rdx,%r12,1),%rdx + xorq %r14,%r13 + movq %r8,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%r8,%r12 + leaq (%rdx,%r13,1),%rdx + xorq %r9,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%r8,%r14 + rorxq $28,%r8,%r13 + leaq (%r11,%rdx,1),%r11 + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r9,%rdi + vpsrlq $6,%ymm1,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%rdx,%rdi,1),%rdx + movq %rax,%r12 + vpsllq $3,%ymm1,%ymm10 + vpaddq %ymm8,%ymm2,%ymm2 + addq 72+256(%rsp),%rcx + andq %r11,%r12 + rorxq $41,%r11,%r13 + vpsrlq $19,%ymm1,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%r11,%rdi + leaq (%rdx,%r14,1),%rdx + leaq (%rcx,%r12,1),%rcx + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %rbx,%r11,%r12 + xorq %rdi,%r13 + rorxq $14,%r11,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%rcx,%r12,1),%rcx + xorq %r14,%r13 + movq %rdx,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%rdx,%r12 + leaq (%rcx,%r13,1),%rcx + xorq %r8,%rdi + vpaddq %ymm11,%ymm2,%ymm2 + rorxq $34,%rdx,%r14 + rorxq $28,%rdx,%r13 + leaq (%r10,%rcx,1),%r10 + vpaddq -64(%rbp),%ymm2,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r8,%r15 + xorq %r13,%r14 + leaq (%rcx,%r15,1),%rcx + movq %r11,%r12 + vmovdqa %ymm10,64(%rsp) + vpalignr $8,%ymm3,%ymm4,%ymm8 + addq 96+256(%rsp),%rbx + andq %r10,%r12 + rorxq $41,%r10,%r13 + vpalignr $8,%ymm7,%ymm0,%ymm11 + rorxq $18,%r10,%r15 + leaq (%rcx,%r14,1),%rcx + leaq (%rbx,%r12,1),%rbx + vpsrlq $1,%ymm8,%ymm10 + andnq %rax,%r10,%r12 + xorq %r15,%r13 + rorxq $14,%r10,%r14 + vpaddq %ymm11,%ymm3,%ymm3 + vpsrlq $7,%ymm8,%ymm11 + leaq (%rbx,%r12,1),%rbx + xorq %r14,%r13 + movq %rcx,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%rcx,%r12 + leaq (%rbx,%r13,1),%rbx + xorq %rdx,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%rcx,%r14 + rorxq $28,%rcx,%r13 + leaq (%r9,%rbx,1),%r9 + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rdx,%rdi + vpsrlq $6,%ymm2,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%rbx,%rdi,1),%rbx + movq %r10,%r12 + vpsllq $3,%ymm2,%ymm10 + vpaddq %ymm8,%ymm3,%ymm3 + addq 104+256(%rsp),%rax + andq %r9,%r12 + rorxq $41,%r9,%r13 + vpsrlq $19,%ymm2,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%r9,%rdi + leaq (%rbx,%r14,1),%rbx + leaq (%rax,%r12,1),%rax + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %r11,%r9,%r12 + xorq %rdi,%r13 + rorxq $14,%r9,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%rax,%r12,1),%rax + xorq %r14,%r13 + movq %rbx,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%rbx,%r12 + leaq (%rax,%r13,1),%rax + xorq %rcx,%rdi + vpaddq %ymm11,%ymm3,%ymm3 + rorxq $34,%rbx,%r14 + rorxq $28,%rbx,%r13 + leaq (%r8,%rax,1),%r8 + vpaddq -32(%rbp),%ymm3,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rcx,%r15 + xorq %r13,%r14 + leaq (%rax,%r15,1),%rax + movq %r9,%r12 + vmovdqa %ymm10,96(%rsp) + leaq -128(%rsp),%rsp +.cfi_escape 0x0f,0x06,0x77,0xf8,0x00,0x06,0x23,0x08 + + pushq 128-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x00,0x06,0x23,0x08 + leaq 8(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 + vpalignr $8,%ymm4,%ymm5,%ymm8 + addq 0+256(%rsp),%r11 + andq %r8,%r12 + rorxq $41,%r8,%r13 + vpalignr $8,%ymm0,%ymm1,%ymm11 + rorxq $18,%r8,%r15 + leaq (%rax,%r14,1),%rax + leaq (%r11,%r12,1),%r11 + vpsrlq $1,%ymm8,%ymm10 + andnq %r10,%r8,%r12 + xorq %r15,%r13 + rorxq $14,%r8,%r14 + vpaddq %ymm11,%ymm4,%ymm4 + vpsrlq $7,%ymm8,%ymm11 + leaq (%r11,%r12,1),%r11 + xorq %r14,%r13 + movq %rax,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%rax,%r12 + leaq (%r11,%r13,1),%r11 + xorq %rbx,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%rax,%r14 + rorxq $28,%rax,%r13 + leaq (%rdx,%r11,1),%rdx + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rbx,%rdi + vpsrlq $6,%ymm3,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%r11,%rdi,1),%r11 + movq %r8,%r12 + vpsllq $3,%ymm3,%ymm10 + vpaddq %ymm8,%ymm4,%ymm4 + addq 8+256(%rsp),%r10 + andq %rdx,%r12 + rorxq $41,%rdx,%r13 + vpsrlq $19,%ymm3,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%rdx,%rdi + leaq (%r11,%r14,1),%r11 + leaq (%r10,%r12,1),%r10 + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %r9,%rdx,%r12 + xorq %rdi,%r13 + rorxq $14,%rdx,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%r10,%r12,1),%r10 + xorq %r14,%r13 + movq %r11,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%r11,%r12 + leaq (%r10,%r13,1),%r10 + xorq %rax,%rdi + vpaddq %ymm11,%ymm4,%ymm4 + rorxq $34,%r11,%r14 + rorxq $28,%r11,%r13 + leaq (%rcx,%r10,1),%rcx + vpaddq 0(%rbp),%ymm4,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rax,%r15 + xorq %r13,%r14 + leaq (%r10,%r15,1),%r10 + movq %rdx,%r12 + vmovdqa %ymm10,0(%rsp) + vpalignr $8,%ymm5,%ymm6,%ymm8 + addq 32+256(%rsp),%r9 + andq %rcx,%r12 + rorxq $41,%rcx,%r13 + vpalignr $8,%ymm1,%ymm2,%ymm11 + rorxq $18,%rcx,%r15 + leaq (%r10,%r14,1),%r10 + leaq (%r9,%r12,1),%r9 + vpsrlq $1,%ymm8,%ymm10 + andnq %r8,%rcx,%r12 + xorq %r15,%r13 + rorxq $14,%rcx,%r14 + vpaddq %ymm11,%ymm5,%ymm5 + vpsrlq $7,%ymm8,%ymm11 + leaq (%r9,%r12,1),%r9 + xorq %r14,%r13 + movq %r10,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%r10,%r12 + leaq (%r9,%r13,1),%r9 + xorq %r11,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%r10,%r14 + rorxq $28,%r10,%r13 + leaq (%rbx,%r9,1),%rbx + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r11,%rdi + vpsrlq $6,%ymm4,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%r9,%rdi,1),%r9 + movq %rcx,%r12 + vpsllq $3,%ymm4,%ymm10 + vpaddq %ymm8,%ymm5,%ymm5 + addq 40+256(%rsp),%r8 + andq %rbx,%r12 + rorxq $41,%rbx,%r13 + vpsrlq $19,%ymm4,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%rbx,%rdi + leaq (%r9,%r14,1),%r9 + leaq (%r8,%r12,1),%r8 + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %rdx,%rbx,%r12 + xorq %rdi,%r13 + rorxq $14,%rbx,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%r8,%r12,1),%r8 + xorq %r14,%r13 + movq %r9,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%r9,%r12 + leaq (%r8,%r13,1),%r8 + xorq %r10,%rdi + vpaddq %ymm11,%ymm5,%ymm5 + rorxq $34,%r9,%r14 + rorxq $28,%r9,%r13 + leaq (%rax,%r8,1),%rax + vpaddq 32(%rbp),%ymm5,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r10,%r15 + xorq %r13,%r14 + leaq (%r8,%r15,1),%r8 + movq %rbx,%r12 + vmovdqa %ymm10,32(%rsp) + vpalignr $8,%ymm6,%ymm7,%ymm8 + addq 64+256(%rsp),%rdx + andq %rax,%r12 + rorxq $41,%rax,%r13 + vpalignr $8,%ymm2,%ymm3,%ymm11 + rorxq $18,%rax,%r15 + leaq (%r8,%r14,1),%r8 + leaq (%rdx,%r12,1),%rdx + vpsrlq $1,%ymm8,%ymm10 + andnq %rcx,%rax,%r12 + xorq %r15,%r13 + rorxq $14,%rax,%r14 + vpaddq %ymm11,%ymm6,%ymm6 + vpsrlq $7,%ymm8,%ymm11 + leaq (%rdx,%r12,1),%rdx + xorq %r14,%r13 + movq %r8,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%r8,%r12 + leaq (%rdx,%r13,1),%rdx + xorq %r9,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%r8,%r14 + rorxq $28,%r8,%r13 + leaq (%r11,%rdx,1),%r11 + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r9,%rdi + vpsrlq $6,%ymm5,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%rdx,%rdi,1),%rdx + movq %rax,%r12 + vpsllq $3,%ymm5,%ymm10 + vpaddq %ymm8,%ymm6,%ymm6 + addq 72+256(%rsp),%rcx + andq %r11,%r12 + rorxq $41,%r11,%r13 + vpsrlq $19,%ymm5,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%r11,%rdi + leaq (%rdx,%r14,1),%rdx + leaq (%rcx,%r12,1),%rcx + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %rbx,%r11,%r12 + xorq %rdi,%r13 + rorxq $14,%r11,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%rcx,%r12,1),%rcx + xorq %r14,%r13 + movq %rdx,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%rdx,%r12 + leaq (%rcx,%r13,1),%rcx + xorq %r8,%rdi + vpaddq %ymm11,%ymm6,%ymm6 + rorxq $34,%rdx,%r14 + rorxq $28,%rdx,%r13 + leaq (%r10,%rcx,1),%r10 + vpaddq 64(%rbp),%ymm6,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r8,%r15 + xorq %r13,%r14 + leaq (%rcx,%r15,1),%rcx + movq %r11,%r12 + vmovdqa %ymm10,64(%rsp) + vpalignr $8,%ymm7,%ymm0,%ymm8 + addq 96+256(%rsp),%rbx + andq %r10,%r12 + rorxq $41,%r10,%r13 + vpalignr $8,%ymm3,%ymm4,%ymm11 + rorxq $18,%r10,%r15 + leaq (%rcx,%r14,1),%rcx + leaq (%rbx,%r12,1),%rbx + vpsrlq $1,%ymm8,%ymm10 + andnq %rax,%r10,%r12 + xorq %r15,%r13 + rorxq $14,%r10,%r14 + vpaddq %ymm11,%ymm7,%ymm7 + vpsrlq $7,%ymm8,%ymm11 + leaq (%rbx,%r12,1),%rbx + xorq %r14,%r13 + movq %rcx,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%rcx,%r12 + leaq (%rbx,%r13,1),%rbx + xorq %rdx,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%rcx,%r14 + rorxq $28,%rcx,%r13 + leaq (%r9,%rbx,1),%r9 + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rdx,%rdi + vpsrlq $6,%ymm6,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%rbx,%rdi,1),%rbx + movq %r10,%r12 + vpsllq $3,%ymm6,%ymm10 + vpaddq %ymm8,%ymm7,%ymm7 + addq 104+256(%rsp),%rax + andq %r9,%r12 + rorxq $41,%r9,%r13 + vpsrlq $19,%ymm6,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%r9,%rdi + leaq (%rbx,%r14,1),%rbx + leaq (%rax,%r12,1),%rax + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %r11,%r9,%r12 + xorq %rdi,%r13 + rorxq $14,%r9,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%rax,%r12,1),%rax + xorq %r14,%r13 + movq %rbx,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%rbx,%r12 + leaq (%rax,%r13,1),%rax + xorq %rcx,%rdi + vpaddq %ymm11,%ymm7,%ymm7 + rorxq $34,%rbx,%r14 + rorxq $28,%rbx,%r13 + leaq (%r8,%rax,1),%r8 + vpaddq 96(%rbp),%ymm7,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rcx,%r15 + xorq %r13,%r14 + leaq (%rax,%r15,1),%rax + movq %r9,%r12 + vmovdqa %ymm10,96(%rsp) + leaq 256(%rbp),%rbp + cmpb $0,-121(%rbp) + jne .Lavx2_00_47 + addq 0+128(%rsp),%r11 + andq %r8,%r12 + rorxq $41,%r8,%r13 + rorxq $18,%r8,%r15 + leaq (%rax,%r14,1),%rax + leaq (%r11,%r12,1),%r11 + andnq %r10,%r8,%r12 + xorq %r15,%r13 + rorxq $14,%r8,%r14 + leaq (%r11,%r12,1),%r11 + xorq %r14,%r13 + movq %rax,%r15 + rorxq $39,%rax,%r12 + leaq (%r11,%r13,1),%r11 + xorq %rbx,%r15 + rorxq $34,%rax,%r14 + rorxq $28,%rax,%r13 + leaq (%rdx,%r11,1),%rdx + andq %r15,%rdi + xorq %r12,%r14 + xorq %rbx,%rdi + xorq %r13,%r14 + leaq (%r11,%rdi,1),%r11 + movq %r8,%r12 + addq 8+128(%rsp),%r10 + andq %rdx,%r12 + rorxq $41,%rdx,%r13 + rorxq $18,%rdx,%rdi + leaq (%r11,%r14,1),%r11 + leaq (%r10,%r12,1),%r10 + andnq %r9,%rdx,%r12 + xorq %rdi,%r13 + rorxq $14,%rdx,%r14 + leaq (%r10,%r12,1),%r10 + xorq %r14,%r13 + movq %r11,%rdi + rorxq $39,%r11,%r12 + leaq (%r10,%r13,1),%r10 + xorq %rax,%rdi + rorxq $34,%r11,%r14 + rorxq $28,%r11,%r13 + leaq (%rcx,%r10,1),%rcx + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rax,%r15 + xorq %r13,%r14 + leaq (%r10,%r15,1),%r10 + movq %rdx,%r12 + addq 32+128(%rsp),%r9 + andq %rcx,%r12 + rorxq $41,%rcx,%r13 + rorxq $18,%rcx,%r15 + leaq (%r10,%r14,1),%r10 + leaq (%r9,%r12,1),%r9 + andnq %r8,%rcx,%r12 + xorq %r15,%r13 + rorxq $14,%rcx,%r14 + leaq (%r9,%r12,1),%r9 + xorq %r14,%r13 + movq %r10,%r15 + rorxq $39,%r10,%r12 + leaq (%r9,%r13,1),%r9 + xorq %r11,%r15 + rorxq $34,%r10,%r14 + rorxq $28,%r10,%r13 + leaq (%rbx,%r9,1),%rbx + andq %r15,%rdi + xorq %r12,%r14 + xorq %r11,%rdi + xorq %r13,%r14 + leaq (%r9,%rdi,1),%r9 + movq %rcx,%r12 + addq 40+128(%rsp),%r8 + andq %rbx,%r12 + rorxq $41,%rbx,%r13 + rorxq $18,%rbx,%rdi + leaq (%r9,%r14,1),%r9 + leaq (%r8,%r12,1),%r8 + andnq %rdx,%rbx,%r12 + xorq %rdi,%r13 + rorxq $14,%rbx,%r14 + leaq (%r8,%r12,1),%r8 + xorq %r14,%r13 + movq %r9,%rdi + rorxq $39,%r9,%r12 + leaq (%r8,%r13,1),%r8 + xorq %r10,%rdi + rorxq $34,%r9,%r14 + rorxq $28,%r9,%r13 + leaq (%rax,%r8,1),%rax + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r10,%r15 + xorq %r13,%r14 + leaq (%r8,%r15,1),%r8 + movq %rbx,%r12 + addq 64+128(%rsp),%rdx + andq %rax,%r12 + rorxq $41,%rax,%r13 + rorxq $18,%rax,%r15 + leaq (%r8,%r14,1),%r8 + leaq (%rdx,%r12,1),%rdx + andnq %rcx,%rax,%r12 + xorq %r15,%r13 + rorxq $14,%rax,%r14 + leaq (%rdx,%r12,1),%rdx + xorq %r14,%r13 + movq %r8,%r15 + rorxq $39,%r8,%r12 + leaq (%rdx,%r13,1),%rdx + xorq %r9,%r15 + rorxq $34,%r8,%r14 + rorxq $28,%r8,%r13 + leaq (%r11,%rdx,1),%r11 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r9,%rdi + xorq %r13,%r14 + leaq (%rdx,%rdi,1),%rdx + movq %rax,%r12 + addq 72+128(%rsp),%rcx + andq %r11,%r12 + rorxq $41,%r11,%r13 + rorxq $18,%r11,%rdi + leaq (%rdx,%r14,1),%rdx + leaq (%rcx,%r12,1),%rcx + andnq %rbx,%r11,%r12 + xorq %rdi,%r13 + rorxq $14,%r11,%r14 + leaq (%rcx,%r12,1),%rcx + xorq %r14,%r13 + movq %rdx,%rdi + rorxq $39,%rdx,%r12 + leaq (%rcx,%r13,1),%rcx + xorq %r8,%rdi + rorxq $34,%rdx,%r14 + rorxq $28,%rdx,%r13 + leaq (%r10,%rcx,1),%r10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r8,%r15 + xorq %r13,%r14 + leaq (%rcx,%r15,1),%rcx + movq %r11,%r12 + addq 96+128(%rsp),%rbx + andq %r10,%r12 + rorxq $41,%r10,%r13 + rorxq $18,%r10,%r15 + leaq (%rcx,%r14,1),%rcx + leaq (%rbx,%r12,1),%rbx + andnq %rax,%r10,%r12 + xorq %r15,%r13 + rorxq $14,%r10,%r14 + leaq (%rbx,%r12,1),%rbx + xorq %r14,%r13 + movq %rcx,%r15 + rorxq $39,%rcx,%r12 + leaq (%rbx,%r13,1),%rbx + xorq %rdx,%r15 + rorxq $34,%rcx,%r14 + rorxq $28,%rcx,%r13 + leaq (%r9,%rbx,1),%r9 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rdx,%rdi + xorq %r13,%r14 + leaq (%rbx,%rdi,1),%rbx + movq %r10,%r12 + addq 104+128(%rsp),%rax + andq %r9,%r12 + rorxq $41,%r9,%r13 + rorxq $18,%r9,%rdi + leaq (%rbx,%r14,1),%rbx + leaq (%rax,%r12,1),%rax + andnq %r11,%r9,%r12 + xorq %rdi,%r13 + rorxq $14,%r9,%r14 + leaq (%rax,%r12,1),%rax + xorq %r14,%r13 + movq %rbx,%rdi + rorxq $39,%rbx,%r12 + leaq (%rax,%r13,1),%rax + xorq %rcx,%rdi + rorxq $34,%rbx,%r14 + rorxq $28,%rbx,%r13 + leaq (%r8,%rax,1),%r8 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rcx,%r15 + xorq %r13,%r14 + leaq (%rax,%r15,1),%rax + movq %r9,%r12 + addq 0(%rsp),%r11 + andq %r8,%r12 + rorxq $41,%r8,%r13 + rorxq $18,%r8,%r15 + leaq (%rax,%r14,1),%rax + leaq (%r11,%r12,1),%r11 + andnq %r10,%r8,%r12 + xorq %r15,%r13 + rorxq $14,%r8,%r14 + leaq (%r11,%r12,1),%r11 + xorq %r14,%r13 + movq %rax,%r15 + rorxq $39,%rax,%r12 + leaq (%r11,%r13,1),%r11 + xorq %rbx,%r15 + rorxq $34,%rax,%r14 + rorxq $28,%rax,%r13 + leaq (%rdx,%r11,1),%rdx + andq %r15,%rdi + xorq %r12,%r14 + xorq %rbx,%rdi + xorq %r13,%r14 + leaq (%r11,%rdi,1),%r11 + movq %r8,%r12 + addq 8(%rsp),%r10 + andq %rdx,%r12 + rorxq $41,%rdx,%r13 + rorxq $18,%rdx,%rdi + leaq (%r11,%r14,1),%r11 + leaq (%r10,%r12,1),%r10 + andnq %r9,%rdx,%r12 + xorq %rdi,%r13 + rorxq $14,%rdx,%r14 + leaq (%r10,%r12,1),%r10 + xorq %r14,%r13 + movq %r11,%rdi + rorxq $39,%r11,%r12 + leaq (%r10,%r13,1),%r10 + xorq %rax,%rdi + rorxq $34,%r11,%r14 + rorxq $28,%r11,%r13 + leaq (%rcx,%r10,1),%rcx + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rax,%r15 + xorq %r13,%r14 + leaq (%r10,%r15,1),%r10 + movq %rdx,%r12 + addq 32(%rsp),%r9 + andq %rcx,%r12 + rorxq $41,%rcx,%r13 + rorxq $18,%rcx,%r15 + leaq (%r10,%r14,1),%r10 + leaq (%r9,%r12,1),%r9 + andnq %r8,%rcx,%r12 + xorq %r15,%r13 + rorxq $14,%rcx,%r14 + leaq (%r9,%r12,1),%r9 + xorq %r14,%r13 + movq %r10,%r15 + rorxq $39,%r10,%r12 + leaq (%r9,%r13,1),%r9 + xorq %r11,%r15 + rorxq $34,%r10,%r14 + rorxq $28,%r10,%r13 + leaq (%rbx,%r9,1),%rbx + andq %r15,%rdi + xorq %r12,%r14 + xorq %r11,%rdi + xorq %r13,%r14 + leaq (%r9,%rdi,1),%r9 + movq %rcx,%r12 + addq 40(%rsp),%r8 + andq %rbx,%r12 + rorxq $41,%rbx,%r13 + rorxq $18,%rbx,%rdi + leaq (%r9,%r14,1),%r9 + leaq (%r8,%r12,1),%r8 + andnq %rdx,%rbx,%r12 + xorq %rdi,%r13 + rorxq $14,%rbx,%r14 + leaq (%r8,%r12,1),%r8 + xorq %r14,%r13 + movq %r9,%rdi + rorxq $39,%r9,%r12 + leaq (%r8,%r13,1),%r8 + xorq %r10,%rdi + rorxq $34,%r9,%r14 + rorxq $28,%r9,%r13 + leaq (%rax,%r8,1),%rax + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r10,%r15 + xorq %r13,%r14 + leaq (%r8,%r15,1),%r8 + movq %rbx,%r12 + addq 64(%rsp),%rdx + andq %rax,%r12 + rorxq $41,%rax,%r13 + rorxq $18,%rax,%r15 + leaq (%r8,%r14,1),%r8 + leaq (%rdx,%r12,1),%rdx + andnq %rcx,%rax,%r12 + xorq %r15,%r13 + rorxq $14,%rax,%r14 + leaq (%rdx,%r12,1),%rdx + xorq %r14,%r13 + movq %r8,%r15 + rorxq $39,%r8,%r12 + leaq (%rdx,%r13,1),%rdx + xorq %r9,%r15 + rorxq $34,%r8,%r14 + rorxq $28,%r8,%r13 + leaq (%r11,%rdx,1),%r11 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r9,%rdi + xorq %r13,%r14 + leaq (%rdx,%rdi,1),%rdx + movq %rax,%r12 + addq 72(%rsp),%rcx + andq %r11,%r12 + rorxq $41,%r11,%r13 + rorxq $18,%r11,%rdi + leaq (%rdx,%r14,1),%rdx + leaq (%rcx,%r12,1),%rcx + andnq %rbx,%r11,%r12 + xorq %rdi,%r13 + rorxq $14,%r11,%r14 + leaq (%rcx,%r12,1),%rcx + xorq %r14,%r13 + movq %rdx,%rdi + rorxq $39,%rdx,%r12 + leaq (%rcx,%r13,1),%rcx + xorq %r8,%rdi + rorxq $34,%rdx,%r14 + rorxq $28,%rdx,%r13 + leaq (%r10,%rcx,1),%r10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r8,%r15 + xorq %r13,%r14 + leaq (%rcx,%r15,1),%rcx + movq %r11,%r12 + addq 96(%rsp),%rbx + andq %r10,%r12 + rorxq $41,%r10,%r13 + rorxq $18,%r10,%r15 + leaq (%rcx,%r14,1),%rcx + leaq (%rbx,%r12,1),%rbx + andnq %rax,%r10,%r12 + xorq %r15,%r13 + rorxq $14,%r10,%r14 + leaq (%rbx,%r12,1),%rbx + xorq %r14,%r13 + movq %rcx,%r15 + rorxq $39,%rcx,%r12 + leaq (%rbx,%r13,1),%rbx + xorq %rdx,%r15 + rorxq $34,%rcx,%r14 + rorxq $28,%rcx,%r13 + leaq (%r9,%rbx,1),%r9 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rdx,%rdi + xorq %r13,%r14 + leaq (%rbx,%rdi,1),%rbx + movq %r10,%r12 + addq 104(%rsp),%rax + andq %r9,%r12 + rorxq $41,%r9,%r13 + rorxq $18,%r9,%rdi + leaq (%rbx,%r14,1),%rbx + leaq (%rax,%r12,1),%rax + andnq %r11,%r9,%r12 + xorq %rdi,%r13 + rorxq $14,%r9,%r14 + leaq (%rax,%r12,1),%rax + xorq %r14,%r13 + movq %rbx,%rdi + rorxq $39,%rbx,%r12 + leaq (%rax,%r13,1),%rax + xorq %rcx,%rdi + rorxq $34,%rbx,%r14 + rorxq $28,%rbx,%r13 + leaq (%r8,%rax,1),%r8 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rcx,%r15 + xorq %r13,%r14 + leaq (%rax,%r15,1),%rax + movq %r9,%r12 + movq 1280(%rsp),%rdi + addq %r14,%rax + + leaq 1152(%rsp),%rbp + + addq 0(%rdi),%rax + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + addq 48(%rdi),%r10 + addq 56(%rdi),%r11 + + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + cmpq 144(%rbp),%rsi + je .Ldone_avx2 + + xorq %r14,%r14 + movq %rbx,%rdi + xorq %rcx,%rdi + movq %r9,%r12 + jmp .Lower_avx2 +.align 16 +.Lower_avx2: + addq 0+16(%rbp),%r11 + andq %r8,%r12 + rorxq $41,%r8,%r13 + rorxq $18,%r8,%r15 + leaq (%rax,%r14,1),%rax + leaq (%r11,%r12,1),%r11 + andnq %r10,%r8,%r12 + xorq %r15,%r13 + rorxq $14,%r8,%r14 + leaq (%r11,%r12,1),%r11 + xorq %r14,%r13 + movq %rax,%r15 + rorxq $39,%rax,%r12 + leaq (%r11,%r13,1),%r11 + xorq %rbx,%r15 + rorxq $34,%rax,%r14 + rorxq $28,%rax,%r13 + leaq (%rdx,%r11,1),%rdx + andq %r15,%rdi + xorq %r12,%r14 + xorq %rbx,%rdi + xorq %r13,%r14 + leaq (%r11,%rdi,1),%r11 + movq %r8,%r12 + addq 8+16(%rbp),%r10 + andq %rdx,%r12 + rorxq $41,%rdx,%r13 + rorxq $18,%rdx,%rdi + leaq (%r11,%r14,1),%r11 + leaq (%r10,%r12,1),%r10 + andnq %r9,%rdx,%r12 + xorq %rdi,%r13 + rorxq $14,%rdx,%r14 + leaq (%r10,%r12,1),%r10 + xorq %r14,%r13 + movq %r11,%rdi + rorxq $39,%r11,%r12 + leaq (%r10,%r13,1),%r10 + xorq %rax,%rdi + rorxq $34,%r11,%r14 + rorxq $28,%r11,%r13 + leaq (%rcx,%r10,1),%rcx + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rax,%r15 + xorq %r13,%r14 + leaq (%r10,%r15,1),%r10 + movq %rdx,%r12 + addq 32+16(%rbp),%r9 + andq %rcx,%r12 + rorxq $41,%rcx,%r13 + rorxq $18,%rcx,%r15 + leaq (%r10,%r14,1),%r10 + leaq (%r9,%r12,1),%r9 + andnq %r8,%rcx,%r12 + xorq %r15,%r13 + rorxq $14,%rcx,%r14 + leaq (%r9,%r12,1),%r9 + xorq %r14,%r13 + movq %r10,%r15 + rorxq $39,%r10,%r12 + leaq (%r9,%r13,1),%r9 + xorq %r11,%r15 + rorxq $34,%r10,%r14 + rorxq $28,%r10,%r13 + leaq (%rbx,%r9,1),%rbx + andq %r15,%rdi + xorq %r12,%r14 + xorq %r11,%rdi + xorq %r13,%r14 + leaq (%r9,%rdi,1),%r9 + movq %rcx,%r12 + addq 40+16(%rbp),%r8 + andq %rbx,%r12 + rorxq $41,%rbx,%r13 + rorxq $18,%rbx,%rdi + leaq (%r9,%r14,1),%r9 + leaq (%r8,%r12,1),%r8 + andnq %rdx,%rbx,%r12 + xorq %rdi,%r13 + rorxq $14,%rbx,%r14 + leaq (%r8,%r12,1),%r8 + xorq %r14,%r13 + movq %r9,%rdi + rorxq $39,%r9,%r12 + leaq (%r8,%r13,1),%r8 + xorq %r10,%rdi + rorxq $34,%r9,%r14 + rorxq $28,%r9,%r13 + leaq (%rax,%r8,1),%rax + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r10,%r15 + xorq %r13,%r14 + leaq (%r8,%r15,1),%r8 + movq %rbx,%r12 + addq 64+16(%rbp),%rdx + andq %rax,%r12 + rorxq $41,%rax,%r13 + rorxq $18,%rax,%r15 + leaq (%r8,%r14,1),%r8 + leaq (%rdx,%r12,1),%rdx + andnq %rcx,%rax,%r12 + xorq %r15,%r13 + rorxq $14,%rax,%r14 + leaq (%rdx,%r12,1),%rdx + xorq %r14,%r13 + movq %r8,%r15 + rorxq $39,%r8,%r12 + leaq (%rdx,%r13,1),%rdx + xorq %r9,%r15 + rorxq $34,%r8,%r14 + rorxq $28,%r8,%r13 + leaq (%r11,%rdx,1),%r11 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r9,%rdi + xorq %r13,%r14 + leaq (%rdx,%rdi,1),%rdx + movq %rax,%r12 + addq 72+16(%rbp),%rcx + andq %r11,%r12 + rorxq $41,%r11,%r13 + rorxq $18,%r11,%rdi + leaq (%rdx,%r14,1),%rdx + leaq (%rcx,%r12,1),%rcx + andnq %rbx,%r11,%r12 + xorq %rdi,%r13 + rorxq $14,%r11,%r14 + leaq (%rcx,%r12,1),%rcx + xorq %r14,%r13 + movq %rdx,%rdi + rorxq $39,%rdx,%r12 + leaq (%rcx,%r13,1),%rcx + xorq %r8,%rdi + rorxq $34,%rdx,%r14 + rorxq $28,%rdx,%r13 + leaq (%r10,%rcx,1),%r10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r8,%r15 + xorq %r13,%r14 + leaq (%rcx,%r15,1),%rcx + movq %r11,%r12 + addq 96+16(%rbp),%rbx + andq %r10,%r12 + rorxq $41,%r10,%r13 + rorxq $18,%r10,%r15 + leaq (%rcx,%r14,1),%rcx + leaq (%rbx,%r12,1),%rbx + andnq %rax,%r10,%r12 + xorq %r15,%r13 + rorxq $14,%r10,%r14 + leaq (%rbx,%r12,1),%rbx + xorq %r14,%r13 + movq %rcx,%r15 + rorxq $39,%rcx,%r12 + leaq (%rbx,%r13,1),%rbx + xorq %rdx,%r15 + rorxq $34,%rcx,%r14 + rorxq $28,%rcx,%r13 + leaq (%r9,%rbx,1),%r9 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rdx,%rdi + xorq %r13,%r14 + leaq (%rbx,%rdi,1),%rbx + movq %r10,%r12 + addq 104+16(%rbp),%rax + andq %r9,%r12 + rorxq $41,%r9,%r13 + rorxq $18,%r9,%rdi + leaq (%rbx,%r14,1),%rbx + leaq (%rax,%r12,1),%rax + andnq %r11,%r9,%r12 + xorq %rdi,%r13 + rorxq $14,%r9,%r14 + leaq (%rax,%r12,1),%rax + xorq %r14,%r13 + movq %rbx,%rdi + rorxq $39,%rbx,%r12 + leaq (%rax,%r13,1),%rax + xorq %rcx,%rdi + rorxq $34,%rbx,%r14 + rorxq $28,%rbx,%r13 + leaq (%r8,%rax,1),%r8 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rcx,%r15 + xorq %r13,%r14 + leaq (%rax,%r15,1),%rax + movq %r9,%r12 + leaq -128(%rbp),%rbp + cmpq %rsp,%rbp + jae .Lower_avx2 + + movq 1280(%rsp),%rdi + addq %r14,%rax + + leaq 1152(%rsp),%rsp + +.cfi_escape 0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08 + + addq 0(%rdi),%rax + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + leaq 256(%rsi),%rsi + addq 48(%rdi),%r10 + movq %rsi,%r12 + addq 56(%rdi),%r11 + cmpq 128+16(%rsp),%rsi + + movq %rax,0(%rdi) + cmoveq %rsp,%r12 + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + jbe .Loop_avx2 + leaq (%rsp),%rbp + + +.cfi_escape 0x0f,0x06,0x76,0x98,0x01,0x06,0x23,0x08 + +.Ldone_avx2: + movq 152(%rbp),%rsi +.cfi_def_cfa %rsi,8 + vzeroupper + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue_avx2: + .byte 0xf3,0xc3 +.cfi_endproc +.size sha512_block_data_order_avx2,.-sha512_block_data_order_avx2 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/whrlpool/wp-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/crypto/whrlpool/wp-x86_64.s new file mode 100644 index 0000000..2c261f3 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/whrlpool/wp-x86_64.s @@ -0,0 +1,879 @@ +.text + +.globl whirlpool_block +.type whirlpool_block,@function +.align 16 +whirlpool_block: +.cfi_startproc + movq %rsp,%rax +.cfi_def_cfa_register %rax + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 + + subq $128+40,%rsp + andq $-64,%rsp + + leaq 128(%rsp),%r10 + movq %rdi,0(%r10) + movq %rsi,8(%r10) + movq %rdx,16(%r10) + movq %rax,32(%r10) +.cfi_escape 0x0f,0x06,0x77,0xa0,0x01,0x06,0x23,0x08 +.Lprologue: + + movq %r10,%rbx + leaq .Ltable(%rip),%rbp + + xorq %rcx,%rcx + xorq %rdx,%rdx + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + movq 32(%rdi),%r12 + movq 40(%rdi),%r13 + movq 48(%rdi),%r14 + movq 56(%rdi),%r15 +.Louterloop: + movq %r8,0(%rsp) + movq %r9,8(%rsp) + movq %r10,16(%rsp) + movq %r11,24(%rsp) + movq %r12,32(%rsp) + movq %r13,40(%rsp) + movq %r14,48(%rsp) + movq %r15,56(%rsp) + xorq 0(%rsi),%r8 + xorq 8(%rsi),%r9 + xorq 16(%rsi),%r10 + xorq 24(%rsi),%r11 + xorq 32(%rsi),%r12 + xorq 40(%rsi),%r13 + xorq 48(%rsi),%r14 + xorq 56(%rsi),%r15 + movq %r8,64+0(%rsp) + movq %r9,64+8(%rsp) + movq %r10,64+16(%rsp) + movq %r11,64+24(%rsp) + movq %r12,64+32(%rsp) + movq %r13,64+40(%rsp) + movq %r14,64+48(%rsp) + movq %r15,64+56(%rsp) + xorq %rsi,%rsi + movq %rsi,24(%rbx) + jmp .Lround +.align 16 +.Lround: + movq 4096(%rbp,%rsi,8),%r8 + movl 0(%rsp),%eax + movl 4(%rsp),%ebx + movzbl %al,%ecx + movzbl %ah,%edx + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r8 + movq 7(%rbp,%rdi,8),%r9 + movl 0+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + movq 6(%rbp,%rsi,8),%r10 + movq 5(%rbp,%rdi,8),%r11 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + movq 4(%rbp,%rsi,8),%r12 + movq 3(%rbp,%rdi,8),%r13 + movl 0+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + movq 2(%rbp,%rsi,8),%r14 + movq 1(%rbp,%rdi,8),%r15 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r9 + xorq 7(%rbp,%rdi,8),%r10 + movl 8+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r11 + xorq 5(%rbp,%rdi,8),%r12 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r13 + xorq 3(%rbp,%rdi,8),%r14 + movl 8+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r15 + xorq 1(%rbp,%rdi,8),%r8 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r10 + xorq 7(%rbp,%rdi,8),%r11 + movl 16+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r12 + xorq 5(%rbp,%rdi,8),%r13 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r14 + xorq 3(%rbp,%rdi,8),%r15 + movl 16+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r8 + xorq 1(%rbp,%rdi,8),%r9 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r11 + xorq 7(%rbp,%rdi,8),%r12 + movl 24+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r13 + xorq 5(%rbp,%rdi,8),%r14 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r15 + xorq 3(%rbp,%rdi,8),%r8 + movl 24+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r9 + xorq 1(%rbp,%rdi,8),%r10 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r12 + xorq 7(%rbp,%rdi,8),%r13 + movl 32+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r14 + xorq 5(%rbp,%rdi,8),%r15 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r8 + xorq 3(%rbp,%rdi,8),%r9 + movl 32+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r10 + xorq 1(%rbp,%rdi,8),%r11 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r13 + xorq 7(%rbp,%rdi,8),%r14 + movl 40+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r15 + xorq 5(%rbp,%rdi,8),%r8 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r9 + xorq 3(%rbp,%rdi,8),%r10 + movl 40+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r11 + xorq 1(%rbp,%rdi,8),%r12 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r14 + xorq 7(%rbp,%rdi,8),%r15 + movl 48+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r8 + xorq 5(%rbp,%rdi,8),%r9 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r10 + xorq 3(%rbp,%rdi,8),%r11 + movl 48+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r12 + xorq 1(%rbp,%rdi,8),%r13 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r15 + xorq 7(%rbp,%rdi,8),%r8 + movl 56+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r9 + xorq 5(%rbp,%rdi,8),%r10 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r11 + xorq 3(%rbp,%rdi,8),%r12 + movl 56+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r13 + xorq 1(%rbp,%rdi,8),%r14 + movq %r8,0(%rsp) + movq %r9,8(%rsp) + movq %r10,16(%rsp) + movq %r11,24(%rsp) + movq %r12,32(%rsp) + movq %r13,40(%rsp) + movq %r14,48(%rsp) + movq %r15,56(%rsp) + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r8 + xorq 7(%rbp,%rdi,8),%r9 + movl 64+0+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r10 + xorq 5(%rbp,%rdi,8),%r11 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r12 + xorq 3(%rbp,%rdi,8),%r13 + movl 64+0+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r14 + xorq 1(%rbp,%rdi,8),%r15 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r9 + xorq 7(%rbp,%rdi,8),%r10 + movl 64+8+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r11 + xorq 5(%rbp,%rdi,8),%r12 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r13 + xorq 3(%rbp,%rdi,8),%r14 + movl 64+8+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r15 + xorq 1(%rbp,%rdi,8),%r8 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r10 + xorq 7(%rbp,%rdi,8),%r11 + movl 64+16+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r12 + xorq 5(%rbp,%rdi,8),%r13 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r14 + xorq 3(%rbp,%rdi,8),%r15 + movl 64+16+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r8 + xorq 1(%rbp,%rdi,8),%r9 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r11 + xorq 7(%rbp,%rdi,8),%r12 + movl 64+24+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r13 + xorq 5(%rbp,%rdi,8),%r14 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r15 + xorq 3(%rbp,%rdi,8),%r8 + movl 64+24+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r9 + xorq 1(%rbp,%rdi,8),%r10 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r12 + xorq 7(%rbp,%rdi,8),%r13 + movl 64+32+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r14 + xorq 5(%rbp,%rdi,8),%r15 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r8 + xorq 3(%rbp,%rdi,8),%r9 + movl 64+32+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r10 + xorq 1(%rbp,%rdi,8),%r11 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r13 + xorq 7(%rbp,%rdi,8),%r14 + movl 64+40+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r15 + xorq 5(%rbp,%rdi,8),%r8 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r9 + xorq 3(%rbp,%rdi,8),%r10 + movl 64+40+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r11 + xorq 1(%rbp,%rdi,8),%r12 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r14 + xorq 7(%rbp,%rdi,8),%r15 + movl 64+48+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r8 + xorq 5(%rbp,%rdi,8),%r9 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r10 + xorq 3(%rbp,%rdi,8),%r11 + movl 64+48+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r12 + xorq 1(%rbp,%rdi,8),%r13 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r15 + xorq 7(%rbp,%rdi,8),%r8 + + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r9 + xorq 5(%rbp,%rdi,8),%r10 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r11 + xorq 3(%rbp,%rdi,8),%r12 + + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r13 + xorq 1(%rbp,%rdi,8),%r14 + leaq 128(%rsp),%rbx + movq 24(%rbx),%rsi + addq $1,%rsi + cmpq $10,%rsi + je .Lroundsdone + + movq %rsi,24(%rbx) + movq %r8,64+0(%rsp) + movq %r9,64+8(%rsp) + movq %r10,64+16(%rsp) + movq %r11,64+24(%rsp) + movq %r12,64+32(%rsp) + movq %r13,64+40(%rsp) + movq %r14,64+48(%rsp) + movq %r15,64+56(%rsp) + jmp .Lround +.align 16 +.Lroundsdone: + movq 0(%rbx),%rdi + movq 8(%rbx),%rsi + movq 16(%rbx),%rax + xorq 0(%rsi),%r8 + xorq 8(%rsi),%r9 + xorq 16(%rsi),%r10 + xorq 24(%rsi),%r11 + xorq 32(%rsi),%r12 + xorq 40(%rsi),%r13 + xorq 48(%rsi),%r14 + xorq 56(%rsi),%r15 + xorq 0(%rdi),%r8 + xorq 8(%rdi),%r9 + xorq 16(%rdi),%r10 + xorq 24(%rdi),%r11 + xorq 32(%rdi),%r12 + xorq 40(%rdi),%r13 + xorq 48(%rdi),%r14 + xorq 56(%rdi),%r15 + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + leaq 64(%rsi),%rsi + subq $1,%rax + jz .Lalldone + movq %rsi,8(%rbx) + movq %rax,16(%rbx) + jmp .Louterloop +.Lalldone: + movq 32(%rbx),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lepilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size whirlpool_block,.-whirlpool_block + +.align 64 +.type .Ltable,@object +.Ltable: +.byte 24,24,96,24,192,120,48,216,24,24,96,24,192,120,48,216 +.byte 35,35,140,35,5,175,70,38,35,35,140,35,5,175,70,38 +.byte 198,198,63,198,126,249,145,184,198,198,63,198,126,249,145,184 +.byte 232,232,135,232,19,111,205,251,232,232,135,232,19,111,205,251 +.byte 135,135,38,135,76,161,19,203,135,135,38,135,76,161,19,203 +.byte 184,184,218,184,169,98,109,17,184,184,218,184,169,98,109,17 +.byte 1,1,4,1,8,5,2,9,1,1,4,1,8,5,2,9 +.byte 79,79,33,79,66,110,158,13,79,79,33,79,66,110,158,13 +.byte 54,54,216,54,173,238,108,155,54,54,216,54,173,238,108,155 +.byte 166,166,162,166,89,4,81,255,166,166,162,166,89,4,81,255 +.byte 210,210,111,210,222,189,185,12,210,210,111,210,222,189,185,12 +.byte 245,245,243,245,251,6,247,14,245,245,243,245,251,6,247,14 +.byte 121,121,249,121,239,128,242,150,121,121,249,121,239,128,242,150 +.byte 111,111,161,111,95,206,222,48,111,111,161,111,95,206,222,48 +.byte 145,145,126,145,252,239,63,109,145,145,126,145,252,239,63,109 +.byte 82,82,85,82,170,7,164,248,82,82,85,82,170,7,164,248 +.byte 96,96,157,96,39,253,192,71,96,96,157,96,39,253,192,71 +.byte 188,188,202,188,137,118,101,53,188,188,202,188,137,118,101,53 +.byte 155,155,86,155,172,205,43,55,155,155,86,155,172,205,43,55 +.byte 142,142,2,142,4,140,1,138,142,142,2,142,4,140,1,138 +.byte 163,163,182,163,113,21,91,210,163,163,182,163,113,21,91,210 +.byte 12,12,48,12,96,60,24,108,12,12,48,12,96,60,24,108 +.byte 123,123,241,123,255,138,246,132,123,123,241,123,255,138,246,132 +.byte 53,53,212,53,181,225,106,128,53,53,212,53,181,225,106,128 +.byte 29,29,116,29,232,105,58,245,29,29,116,29,232,105,58,245 +.byte 224,224,167,224,83,71,221,179,224,224,167,224,83,71,221,179 +.byte 215,215,123,215,246,172,179,33,215,215,123,215,246,172,179,33 +.byte 194,194,47,194,94,237,153,156,194,194,47,194,94,237,153,156 +.byte 46,46,184,46,109,150,92,67,46,46,184,46,109,150,92,67 +.byte 75,75,49,75,98,122,150,41,75,75,49,75,98,122,150,41 +.byte 254,254,223,254,163,33,225,93,254,254,223,254,163,33,225,93 +.byte 87,87,65,87,130,22,174,213,87,87,65,87,130,22,174,213 +.byte 21,21,84,21,168,65,42,189,21,21,84,21,168,65,42,189 +.byte 119,119,193,119,159,182,238,232,119,119,193,119,159,182,238,232 +.byte 55,55,220,55,165,235,110,146,55,55,220,55,165,235,110,146 +.byte 229,229,179,229,123,86,215,158,229,229,179,229,123,86,215,158 +.byte 159,159,70,159,140,217,35,19,159,159,70,159,140,217,35,19 +.byte 240,240,231,240,211,23,253,35,240,240,231,240,211,23,253,35 +.byte 74,74,53,74,106,127,148,32,74,74,53,74,106,127,148,32 +.byte 218,218,79,218,158,149,169,68,218,218,79,218,158,149,169,68 +.byte 88,88,125,88,250,37,176,162,88,88,125,88,250,37,176,162 +.byte 201,201,3,201,6,202,143,207,201,201,3,201,6,202,143,207 +.byte 41,41,164,41,85,141,82,124,41,41,164,41,85,141,82,124 +.byte 10,10,40,10,80,34,20,90,10,10,40,10,80,34,20,90 +.byte 177,177,254,177,225,79,127,80,177,177,254,177,225,79,127,80 +.byte 160,160,186,160,105,26,93,201,160,160,186,160,105,26,93,201 +.byte 107,107,177,107,127,218,214,20,107,107,177,107,127,218,214,20 +.byte 133,133,46,133,92,171,23,217,133,133,46,133,92,171,23,217 +.byte 189,189,206,189,129,115,103,60,189,189,206,189,129,115,103,60 +.byte 93,93,105,93,210,52,186,143,93,93,105,93,210,52,186,143 +.byte 16,16,64,16,128,80,32,144,16,16,64,16,128,80,32,144 +.byte 244,244,247,244,243,3,245,7,244,244,247,244,243,3,245,7 +.byte 203,203,11,203,22,192,139,221,203,203,11,203,22,192,139,221 +.byte 62,62,248,62,237,198,124,211,62,62,248,62,237,198,124,211 +.byte 5,5,20,5,40,17,10,45,5,5,20,5,40,17,10,45 +.byte 103,103,129,103,31,230,206,120,103,103,129,103,31,230,206,120 +.byte 228,228,183,228,115,83,213,151,228,228,183,228,115,83,213,151 +.byte 39,39,156,39,37,187,78,2,39,39,156,39,37,187,78,2 +.byte 65,65,25,65,50,88,130,115,65,65,25,65,50,88,130,115 +.byte 139,139,22,139,44,157,11,167,139,139,22,139,44,157,11,167 +.byte 167,167,166,167,81,1,83,246,167,167,166,167,81,1,83,246 +.byte 125,125,233,125,207,148,250,178,125,125,233,125,207,148,250,178 +.byte 149,149,110,149,220,251,55,73,149,149,110,149,220,251,55,73 +.byte 216,216,71,216,142,159,173,86,216,216,71,216,142,159,173,86 +.byte 251,251,203,251,139,48,235,112,251,251,203,251,139,48,235,112 +.byte 238,238,159,238,35,113,193,205,238,238,159,238,35,113,193,205 +.byte 124,124,237,124,199,145,248,187,124,124,237,124,199,145,248,187 +.byte 102,102,133,102,23,227,204,113,102,102,133,102,23,227,204,113 +.byte 221,221,83,221,166,142,167,123,221,221,83,221,166,142,167,123 +.byte 23,23,92,23,184,75,46,175,23,23,92,23,184,75,46,175 +.byte 71,71,1,71,2,70,142,69,71,71,1,71,2,70,142,69 +.byte 158,158,66,158,132,220,33,26,158,158,66,158,132,220,33,26 +.byte 202,202,15,202,30,197,137,212,202,202,15,202,30,197,137,212 +.byte 45,45,180,45,117,153,90,88,45,45,180,45,117,153,90,88 +.byte 191,191,198,191,145,121,99,46,191,191,198,191,145,121,99,46 +.byte 7,7,28,7,56,27,14,63,7,7,28,7,56,27,14,63 +.byte 173,173,142,173,1,35,71,172,173,173,142,173,1,35,71,172 +.byte 90,90,117,90,234,47,180,176,90,90,117,90,234,47,180,176 +.byte 131,131,54,131,108,181,27,239,131,131,54,131,108,181,27,239 +.byte 51,51,204,51,133,255,102,182,51,51,204,51,133,255,102,182 +.byte 99,99,145,99,63,242,198,92,99,99,145,99,63,242,198,92 +.byte 2,2,8,2,16,10,4,18,2,2,8,2,16,10,4,18 +.byte 170,170,146,170,57,56,73,147,170,170,146,170,57,56,73,147 +.byte 113,113,217,113,175,168,226,222,113,113,217,113,175,168,226,222 +.byte 200,200,7,200,14,207,141,198,200,200,7,200,14,207,141,198 +.byte 25,25,100,25,200,125,50,209,25,25,100,25,200,125,50,209 +.byte 73,73,57,73,114,112,146,59,73,73,57,73,114,112,146,59 +.byte 217,217,67,217,134,154,175,95,217,217,67,217,134,154,175,95 +.byte 242,242,239,242,195,29,249,49,242,242,239,242,195,29,249,49 +.byte 227,227,171,227,75,72,219,168,227,227,171,227,75,72,219,168 +.byte 91,91,113,91,226,42,182,185,91,91,113,91,226,42,182,185 +.byte 136,136,26,136,52,146,13,188,136,136,26,136,52,146,13,188 +.byte 154,154,82,154,164,200,41,62,154,154,82,154,164,200,41,62 +.byte 38,38,152,38,45,190,76,11,38,38,152,38,45,190,76,11 +.byte 50,50,200,50,141,250,100,191,50,50,200,50,141,250,100,191 +.byte 176,176,250,176,233,74,125,89,176,176,250,176,233,74,125,89 +.byte 233,233,131,233,27,106,207,242,233,233,131,233,27,106,207,242 +.byte 15,15,60,15,120,51,30,119,15,15,60,15,120,51,30,119 +.byte 213,213,115,213,230,166,183,51,213,213,115,213,230,166,183,51 +.byte 128,128,58,128,116,186,29,244,128,128,58,128,116,186,29,244 +.byte 190,190,194,190,153,124,97,39,190,190,194,190,153,124,97,39 +.byte 205,205,19,205,38,222,135,235,205,205,19,205,38,222,135,235 +.byte 52,52,208,52,189,228,104,137,52,52,208,52,189,228,104,137 +.byte 72,72,61,72,122,117,144,50,72,72,61,72,122,117,144,50 +.byte 255,255,219,255,171,36,227,84,255,255,219,255,171,36,227,84 +.byte 122,122,245,122,247,143,244,141,122,122,245,122,247,143,244,141 +.byte 144,144,122,144,244,234,61,100,144,144,122,144,244,234,61,100 +.byte 95,95,97,95,194,62,190,157,95,95,97,95,194,62,190,157 +.byte 32,32,128,32,29,160,64,61,32,32,128,32,29,160,64,61 +.byte 104,104,189,104,103,213,208,15,104,104,189,104,103,213,208,15 +.byte 26,26,104,26,208,114,52,202,26,26,104,26,208,114,52,202 +.byte 174,174,130,174,25,44,65,183,174,174,130,174,25,44,65,183 +.byte 180,180,234,180,201,94,117,125,180,180,234,180,201,94,117,125 +.byte 84,84,77,84,154,25,168,206,84,84,77,84,154,25,168,206 +.byte 147,147,118,147,236,229,59,127,147,147,118,147,236,229,59,127 +.byte 34,34,136,34,13,170,68,47,34,34,136,34,13,170,68,47 +.byte 100,100,141,100,7,233,200,99,100,100,141,100,7,233,200,99 +.byte 241,241,227,241,219,18,255,42,241,241,227,241,219,18,255,42 +.byte 115,115,209,115,191,162,230,204,115,115,209,115,191,162,230,204 +.byte 18,18,72,18,144,90,36,130,18,18,72,18,144,90,36,130 +.byte 64,64,29,64,58,93,128,122,64,64,29,64,58,93,128,122 +.byte 8,8,32,8,64,40,16,72,8,8,32,8,64,40,16,72 +.byte 195,195,43,195,86,232,155,149,195,195,43,195,86,232,155,149 +.byte 236,236,151,236,51,123,197,223,236,236,151,236,51,123,197,223 +.byte 219,219,75,219,150,144,171,77,219,219,75,219,150,144,171,77 +.byte 161,161,190,161,97,31,95,192,161,161,190,161,97,31,95,192 +.byte 141,141,14,141,28,131,7,145,141,141,14,141,28,131,7,145 +.byte 61,61,244,61,245,201,122,200,61,61,244,61,245,201,122,200 +.byte 151,151,102,151,204,241,51,91,151,151,102,151,204,241,51,91 +.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +.byte 207,207,27,207,54,212,131,249,207,207,27,207,54,212,131,249 +.byte 43,43,172,43,69,135,86,110,43,43,172,43,69,135,86,110 +.byte 118,118,197,118,151,179,236,225,118,118,197,118,151,179,236,225 +.byte 130,130,50,130,100,176,25,230,130,130,50,130,100,176,25,230 +.byte 214,214,127,214,254,169,177,40,214,214,127,214,254,169,177,40 +.byte 27,27,108,27,216,119,54,195,27,27,108,27,216,119,54,195 +.byte 181,181,238,181,193,91,119,116,181,181,238,181,193,91,119,116 +.byte 175,175,134,175,17,41,67,190,175,175,134,175,17,41,67,190 +.byte 106,106,181,106,119,223,212,29,106,106,181,106,119,223,212,29 +.byte 80,80,93,80,186,13,160,234,80,80,93,80,186,13,160,234 +.byte 69,69,9,69,18,76,138,87,69,69,9,69,18,76,138,87 +.byte 243,243,235,243,203,24,251,56,243,243,235,243,203,24,251,56 +.byte 48,48,192,48,157,240,96,173,48,48,192,48,157,240,96,173 +.byte 239,239,155,239,43,116,195,196,239,239,155,239,43,116,195,196 +.byte 63,63,252,63,229,195,126,218,63,63,252,63,229,195,126,218 +.byte 85,85,73,85,146,28,170,199,85,85,73,85,146,28,170,199 +.byte 162,162,178,162,121,16,89,219,162,162,178,162,121,16,89,219 +.byte 234,234,143,234,3,101,201,233,234,234,143,234,3,101,201,233 +.byte 101,101,137,101,15,236,202,106,101,101,137,101,15,236,202,106 +.byte 186,186,210,186,185,104,105,3,186,186,210,186,185,104,105,3 +.byte 47,47,188,47,101,147,94,74,47,47,188,47,101,147,94,74 +.byte 192,192,39,192,78,231,157,142,192,192,39,192,78,231,157,142 +.byte 222,222,95,222,190,129,161,96,222,222,95,222,190,129,161,96 +.byte 28,28,112,28,224,108,56,252,28,28,112,28,224,108,56,252 +.byte 253,253,211,253,187,46,231,70,253,253,211,253,187,46,231,70 +.byte 77,77,41,77,82,100,154,31,77,77,41,77,82,100,154,31 +.byte 146,146,114,146,228,224,57,118,146,146,114,146,228,224,57,118 +.byte 117,117,201,117,143,188,234,250,117,117,201,117,143,188,234,250 +.byte 6,6,24,6,48,30,12,54,6,6,24,6,48,30,12,54 +.byte 138,138,18,138,36,152,9,174,138,138,18,138,36,152,9,174 +.byte 178,178,242,178,249,64,121,75,178,178,242,178,249,64,121,75 +.byte 230,230,191,230,99,89,209,133,230,230,191,230,99,89,209,133 +.byte 14,14,56,14,112,54,28,126,14,14,56,14,112,54,28,126 +.byte 31,31,124,31,248,99,62,231,31,31,124,31,248,99,62,231 +.byte 98,98,149,98,55,247,196,85,98,98,149,98,55,247,196,85 +.byte 212,212,119,212,238,163,181,58,212,212,119,212,238,163,181,58 +.byte 168,168,154,168,41,50,77,129,168,168,154,168,41,50,77,129 +.byte 150,150,98,150,196,244,49,82,150,150,98,150,196,244,49,82 +.byte 249,249,195,249,155,58,239,98,249,249,195,249,155,58,239,98 +.byte 197,197,51,197,102,246,151,163,197,197,51,197,102,246,151,163 +.byte 37,37,148,37,53,177,74,16,37,37,148,37,53,177,74,16 +.byte 89,89,121,89,242,32,178,171,89,89,121,89,242,32,178,171 +.byte 132,132,42,132,84,174,21,208,132,132,42,132,84,174,21,208 +.byte 114,114,213,114,183,167,228,197,114,114,213,114,183,167,228,197 +.byte 57,57,228,57,213,221,114,236,57,57,228,57,213,221,114,236 +.byte 76,76,45,76,90,97,152,22,76,76,45,76,90,97,152,22 +.byte 94,94,101,94,202,59,188,148,94,94,101,94,202,59,188,148 +.byte 120,120,253,120,231,133,240,159,120,120,253,120,231,133,240,159 +.byte 56,56,224,56,221,216,112,229,56,56,224,56,221,216,112,229 +.byte 140,140,10,140,20,134,5,152,140,140,10,140,20,134,5,152 +.byte 209,209,99,209,198,178,191,23,209,209,99,209,198,178,191,23 +.byte 165,165,174,165,65,11,87,228,165,165,174,165,65,11,87,228 +.byte 226,226,175,226,67,77,217,161,226,226,175,226,67,77,217,161 +.byte 97,97,153,97,47,248,194,78,97,97,153,97,47,248,194,78 +.byte 179,179,246,179,241,69,123,66,179,179,246,179,241,69,123,66 +.byte 33,33,132,33,21,165,66,52,33,33,132,33,21,165,66,52 +.byte 156,156,74,156,148,214,37,8,156,156,74,156,148,214,37,8 +.byte 30,30,120,30,240,102,60,238,30,30,120,30,240,102,60,238 +.byte 67,67,17,67,34,82,134,97,67,67,17,67,34,82,134,97 +.byte 199,199,59,199,118,252,147,177,199,199,59,199,118,252,147,177 +.byte 252,252,215,252,179,43,229,79,252,252,215,252,179,43,229,79 +.byte 4,4,16,4,32,20,8,36,4,4,16,4,32,20,8,36 +.byte 81,81,89,81,178,8,162,227,81,81,89,81,178,8,162,227 +.byte 153,153,94,153,188,199,47,37,153,153,94,153,188,199,47,37 +.byte 109,109,169,109,79,196,218,34,109,109,169,109,79,196,218,34 +.byte 13,13,52,13,104,57,26,101,13,13,52,13,104,57,26,101 +.byte 250,250,207,250,131,53,233,121,250,250,207,250,131,53,233,121 +.byte 223,223,91,223,182,132,163,105,223,223,91,223,182,132,163,105 +.byte 126,126,229,126,215,155,252,169,126,126,229,126,215,155,252,169 +.byte 36,36,144,36,61,180,72,25,36,36,144,36,61,180,72,25 +.byte 59,59,236,59,197,215,118,254,59,59,236,59,197,215,118,254 +.byte 171,171,150,171,49,61,75,154,171,171,150,171,49,61,75,154 +.byte 206,206,31,206,62,209,129,240,206,206,31,206,62,209,129,240 +.byte 17,17,68,17,136,85,34,153,17,17,68,17,136,85,34,153 +.byte 143,143,6,143,12,137,3,131,143,143,6,143,12,137,3,131 +.byte 78,78,37,78,74,107,156,4,78,78,37,78,74,107,156,4 +.byte 183,183,230,183,209,81,115,102,183,183,230,183,209,81,115,102 +.byte 235,235,139,235,11,96,203,224,235,235,139,235,11,96,203,224 +.byte 60,60,240,60,253,204,120,193,60,60,240,60,253,204,120,193 +.byte 129,129,62,129,124,191,31,253,129,129,62,129,124,191,31,253 +.byte 148,148,106,148,212,254,53,64,148,148,106,148,212,254,53,64 +.byte 247,247,251,247,235,12,243,28,247,247,251,247,235,12,243,28 +.byte 185,185,222,185,161,103,111,24,185,185,222,185,161,103,111,24 +.byte 19,19,76,19,152,95,38,139,19,19,76,19,152,95,38,139 +.byte 44,44,176,44,125,156,88,81,44,44,176,44,125,156,88,81 +.byte 211,211,107,211,214,184,187,5,211,211,107,211,214,184,187,5 +.byte 231,231,187,231,107,92,211,140,231,231,187,231,107,92,211,140 +.byte 110,110,165,110,87,203,220,57,110,110,165,110,87,203,220,57 +.byte 196,196,55,196,110,243,149,170,196,196,55,196,110,243,149,170 +.byte 3,3,12,3,24,15,6,27,3,3,12,3,24,15,6,27 +.byte 86,86,69,86,138,19,172,220,86,86,69,86,138,19,172,220 +.byte 68,68,13,68,26,73,136,94,68,68,13,68,26,73,136,94 +.byte 127,127,225,127,223,158,254,160,127,127,225,127,223,158,254,160 +.byte 169,169,158,169,33,55,79,136,169,169,158,169,33,55,79,136 +.byte 42,42,168,42,77,130,84,103,42,42,168,42,77,130,84,103 +.byte 187,187,214,187,177,109,107,10,187,187,214,187,177,109,107,10 +.byte 193,193,35,193,70,226,159,135,193,193,35,193,70,226,159,135 +.byte 83,83,81,83,162,2,166,241,83,83,81,83,162,2,166,241 +.byte 220,220,87,220,174,139,165,114,220,220,87,220,174,139,165,114 +.byte 11,11,44,11,88,39,22,83,11,11,44,11,88,39,22,83 +.byte 157,157,78,157,156,211,39,1,157,157,78,157,156,211,39,1 +.byte 108,108,173,108,71,193,216,43,108,108,173,108,71,193,216,43 +.byte 49,49,196,49,149,245,98,164,49,49,196,49,149,245,98,164 +.byte 116,116,205,116,135,185,232,243,116,116,205,116,135,185,232,243 +.byte 246,246,255,246,227,9,241,21,246,246,255,246,227,9,241,21 +.byte 70,70,5,70,10,67,140,76,70,70,5,70,10,67,140,76 +.byte 172,172,138,172,9,38,69,165,172,172,138,172,9,38,69,165 +.byte 137,137,30,137,60,151,15,181,137,137,30,137,60,151,15,181 +.byte 20,20,80,20,160,68,40,180,20,20,80,20,160,68,40,180 +.byte 225,225,163,225,91,66,223,186,225,225,163,225,91,66,223,186 +.byte 22,22,88,22,176,78,44,166,22,22,88,22,176,78,44,166 +.byte 58,58,232,58,205,210,116,247,58,58,232,58,205,210,116,247 +.byte 105,105,185,105,111,208,210,6,105,105,185,105,111,208,210,6 +.byte 9,9,36,9,72,45,18,65,9,9,36,9,72,45,18,65 +.byte 112,112,221,112,167,173,224,215,112,112,221,112,167,173,224,215 +.byte 182,182,226,182,217,84,113,111,182,182,226,182,217,84,113,111 +.byte 208,208,103,208,206,183,189,30,208,208,103,208,206,183,189,30 +.byte 237,237,147,237,59,126,199,214,237,237,147,237,59,126,199,214 +.byte 204,204,23,204,46,219,133,226,204,204,23,204,46,219,133,226 +.byte 66,66,21,66,42,87,132,104,66,66,21,66,42,87,132,104 +.byte 152,152,90,152,180,194,45,44,152,152,90,152,180,194,45,44 +.byte 164,164,170,164,73,14,85,237,164,164,170,164,73,14,85,237 +.byte 40,40,160,40,93,136,80,117,40,40,160,40,93,136,80,117 +.byte 92,92,109,92,218,49,184,134,92,92,109,92,218,49,184,134 +.byte 248,248,199,248,147,63,237,107,248,248,199,248,147,63,237,107 +.byte 134,134,34,134,68,164,17,194,134,134,34,134,68,164,17,194 +.byte 24,35,198,232,135,184,1,79 +.byte 54,166,210,245,121,111,145,82 +.byte 96,188,155,142,163,12,123,53 +.byte 29,224,215,194,46,75,254,87 +.byte 21,119,55,229,159,240,74,218 +.byte 88,201,41,10,177,160,107,133 +.byte 189,93,16,244,203,62,5,103 +.byte 228,39,65,139,167,125,149,216 +.byte 251,238,124,102,221,23,71,158 +.byte 202,45,191,7,173,90,131,51 diff --git a/vere/ext/openssl/gen/linux-x86_64/crypto/x86_64cpuid.s b/vere/ext/openssl/gen/linux-x86_64/crypto/x86_64cpuid.s new file mode 100644 index 0000000..748e6d1 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/crypto/x86_64cpuid.s @@ -0,0 +1,481 @@ + +.hidden OPENSSL_cpuid_setup +.section .init + call OPENSSL_cpuid_setup + +.hidden OPENSSL_ia32cap_P +.comm OPENSSL_ia32cap_P,16,4 + +.text + +.globl OPENSSL_atomic_add +.type OPENSSL_atomic_add,@function +.align 16 +OPENSSL_atomic_add: +.cfi_startproc + movl (%rdi),%eax +.Lspin: leaq (%rsi,%rax,1),%r8 +.byte 0xf0 + cmpxchgl %r8d,(%rdi) + jne .Lspin + movl %r8d,%eax +.byte 0x48,0x98 + .byte 0xf3,0xc3 +.cfi_endproc +.size OPENSSL_atomic_add,.-OPENSSL_atomic_add + +.globl OPENSSL_rdtsc +.type OPENSSL_rdtsc,@function +.align 16 +OPENSSL_rdtsc: +.cfi_startproc + rdtsc + shlq $32,%rdx + orq %rdx,%rax + .byte 0xf3,0xc3 +.cfi_endproc +.size OPENSSL_rdtsc,.-OPENSSL_rdtsc + +.globl OPENSSL_ia32_cpuid +.type OPENSSL_ia32_cpuid,@function +.align 16 +OPENSSL_ia32_cpuid: +.cfi_startproc + movq %rbx,%r8 +.cfi_register %rbx,%r8 + + xorl %eax,%eax + movq %rax,8(%rdi) + cpuid + movl %eax,%r11d + + xorl %eax,%eax + cmpl $0x756e6547,%ebx + setne %al + movl %eax,%r9d + cmpl $0x49656e69,%edx + setne %al + orl %eax,%r9d + cmpl $0x6c65746e,%ecx + setne %al + orl %eax,%r9d + jz .Lintel + + cmpl $0x68747541,%ebx + setne %al + movl %eax,%r10d + cmpl $0x69746E65,%edx + setne %al + orl %eax,%r10d + cmpl $0x444D4163,%ecx + setne %al + orl %eax,%r10d + jnz .Lintel + + + movl $0x80000000,%eax + cpuid + cmpl $0x80000001,%eax + jb .Lintel + movl %eax,%r10d + movl $0x80000001,%eax + cpuid + orl %ecx,%r9d + andl $0x00000801,%r9d + + cmpl $0x80000008,%r10d + jb .Lintel + + movl $0x80000008,%eax + cpuid + movzbq %cl,%r10 + incq %r10 + + movl $1,%eax + cpuid + btl $28,%edx + jnc .Lgeneric + shrl $16,%ebx + cmpb %r10b,%bl + ja .Lgeneric + andl $0xefffffff,%edx + jmp .Lgeneric + +.Lintel: + cmpl $4,%r11d + movl $-1,%r10d + jb .Lnocacheinfo + + movl $4,%eax + movl $0,%ecx + cpuid + movl %eax,%r10d + shrl $14,%r10d + andl $0xfff,%r10d + +.Lnocacheinfo: + movl $1,%eax + cpuid + movd %eax,%xmm0 + andl $0xbfefffff,%edx + cmpl $0,%r9d + jne .Lnotintel + orl $0x40000000,%edx + andb $15,%ah + cmpb $15,%ah + jne .LnotP4 + orl $0x00100000,%edx +.LnotP4: + cmpb $6,%ah + jne .Lnotintel + andl $0x0fff0ff0,%eax + cmpl $0x00050670,%eax + je .Lknights + cmpl $0x00080650,%eax + jne .Lnotintel +.Lknights: + andl $0xfbffffff,%ecx + +.Lnotintel: + btl $28,%edx + jnc .Lgeneric + andl $0xefffffff,%edx + cmpl $0,%r10d + je .Lgeneric + + orl $0x10000000,%edx + shrl $16,%ebx + cmpb $1,%bl + ja .Lgeneric + andl $0xefffffff,%edx +.Lgeneric: + andl $0x00000800,%r9d + andl $0xfffff7ff,%ecx + orl %ecx,%r9d + + movl %edx,%r10d + + cmpl $7,%r11d + jb .Lno_extended_info + movl $7,%eax + xorl %ecx,%ecx + cpuid + btl $26,%r9d + jc .Lnotknights + andl $0xfff7ffff,%ebx +.Lnotknights: + movd %xmm0,%eax + andl $0x0fff0ff0,%eax + cmpl $0x00050650,%eax + jne .Lnotskylakex + andl $0xfffeffff,%ebx + +.Lnotskylakex: + movl %ebx,8(%rdi) + movl %ecx,12(%rdi) +.Lno_extended_info: + + btl $27,%r9d + jnc .Lclear_avx + xorl %ecx,%ecx +.byte 0x0f,0x01,0xd0 + andl $0xe6,%eax + cmpl $0xe6,%eax + je .Ldone + andl $0x3fdeffff,8(%rdi) + + + + + andl $6,%eax + cmpl $6,%eax + je .Ldone +.Lclear_avx: + movl $0xefffe7ff,%eax + andl %eax,%r9d + movl $0x3fdeffdf,%eax + andl %eax,8(%rdi) +.Ldone: + shlq $32,%r9 + movl %r10d,%eax + movq %r8,%rbx +.cfi_restore %rbx + orq %r9,%rax + .byte 0xf3,0xc3 +.cfi_endproc +.size OPENSSL_ia32_cpuid,.-OPENSSL_ia32_cpuid + +.globl OPENSSL_cleanse +.type OPENSSL_cleanse,@function +.align 16 +OPENSSL_cleanse: +.cfi_startproc + xorq %rax,%rax + cmpq $15,%rsi + jae .Lot + cmpq $0,%rsi + je .Lret +.Little: + movb %al,(%rdi) + subq $1,%rsi + leaq 1(%rdi),%rdi + jnz .Little +.Lret: + .byte 0xf3,0xc3 +.align 16 +.Lot: + testq $7,%rdi + jz .Laligned + movb %al,(%rdi) + leaq -1(%rsi),%rsi + leaq 1(%rdi),%rdi + jmp .Lot +.Laligned: + movq %rax,(%rdi) + leaq -8(%rsi),%rsi + testq $-8,%rsi + leaq 8(%rdi),%rdi + jnz .Laligned + cmpq $0,%rsi + jne .Little + .byte 0xf3,0xc3 +.cfi_endproc +.size OPENSSL_cleanse,.-OPENSSL_cleanse + +.globl CRYPTO_memcmp +.type CRYPTO_memcmp,@function +.align 16 +CRYPTO_memcmp: +.cfi_startproc + xorq %rax,%rax + xorq %r10,%r10 + cmpq $0,%rdx + je .Lno_data + cmpq $16,%rdx + jne .Loop_cmp + movq (%rdi),%r10 + movq 8(%rdi),%r11 + movq $1,%rdx + xorq (%rsi),%r10 + xorq 8(%rsi),%r11 + orq %r11,%r10 + cmovnzq %rdx,%rax + .byte 0xf3,0xc3 + +.align 16 +.Loop_cmp: + movb (%rdi),%r10b + leaq 1(%rdi),%rdi + xorb (%rsi),%r10b + leaq 1(%rsi),%rsi + orb %r10b,%al + decq %rdx + jnz .Loop_cmp + negq %rax + shrq $63,%rax +.Lno_data: + .byte 0xf3,0xc3 +.cfi_endproc +.size CRYPTO_memcmp,.-CRYPTO_memcmp +.globl OPENSSL_wipe_cpu +.type OPENSSL_wipe_cpu,@function +.align 16 +OPENSSL_wipe_cpu: +.cfi_startproc + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + pxor %xmm8,%xmm8 + pxor %xmm9,%xmm9 + pxor %xmm10,%xmm10 + pxor %xmm11,%xmm11 + pxor %xmm12,%xmm12 + pxor %xmm13,%xmm13 + pxor %xmm14,%xmm14 + pxor %xmm15,%xmm15 + xorq %rcx,%rcx + xorq %rdx,%rdx + xorq %rsi,%rsi + xorq %rdi,%rdi + xorq %r8,%r8 + xorq %r9,%r9 + xorq %r10,%r10 + xorq %r11,%r11 + leaq 8(%rsp),%rax + .byte 0xf3,0xc3 +.cfi_endproc +.size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu +.globl OPENSSL_instrument_bus +.type OPENSSL_instrument_bus,@function +.align 16 +OPENSSL_instrument_bus: +.cfi_startproc + movq %rdi,%r10 + movq %rsi,%rcx + movq %rsi,%r11 + + rdtsc + movl %eax,%r8d + movl $0,%r9d + clflush (%r10) +.byte 0xf0 + addl %r9d,(%r10) + jmp .Loop +.align 16 +.Loop: rdtsc + movl %eax,%edx + subl %r8d,%eax + movl %edx,%r8d + movl %eax,%r9d + clflush (%r10) +.byte 0xf0 + addl %eax,(%r10) + leaq 4(%r10),%r10 + subq $1,%rcx + jnz .Loop + + movq %r11,%rax + .byte 0xf3,0xc3 +.cfi_endproc +.size OPENSSL_instrument_bus,.-OPENSSL_instrument_bus + +.globl OPENSSL_instrument_bus2 +.type OPENSSL_instrument_bus2,@function +.align 16 +OPENSSL_instrument_bus2: +.cfi_startproc + movq %rdi,%r10 + movq %rsi,%rcx + movq %rdx,%r11 + movq %rcx,8(%rsp) + + rdtsc + movl %eax,%r8d + movl $0,%r9d + + clflush (%r10) +.byte 0xf0 + addl %r9d,(%r10) + + rdtsc + movl %eax,%edx + subl %r8d,%eax + movl %edx,%r8d + movl %eax,%r9d +.Loop2: + clflush (%r10) +.byte 0xf0 + addl %eax,(%r10) + + subq $1,%r11 + jz .Ldone2 + + rdtsc + movl %eax,%edx + subl %r8d,%eax + movl %edx,%r8d + cmpl %r9d,%eax + movl %eax,%r9d + movl $0,%edx + setne %dl + subq %rdx,%rcx + leaq (%r10,%rdx,4),%r10 + jnz .Loop2 + +.Ldone2: + movq 8(%rsp),%rax + subq %rcx,%rax + .byte 0xf3,0xc3 +.cfi_endproc +.size OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2 +.globl OPENSSL_ia32_rdrand_bytes +.type OPENSSL_ia32_rdrand_bytes,@function +.align 16 +OPENSSL_ia32_rdrand_bytes: +.cfi_startproc + xorq %rax,%rax + cmpq $0,%rsi + je .Ldone_rdrand_bytes + + movq $8,%r11 +.Loop_rdrand_bytes: +.byte 73,15,199,242 + jc .Lbreak_rdrand_bytes + decq %r11 + jnz .Loop_rdrand_bytes + jmp .Ldone_rdrand_bytes + +.align 16 +.Lbreak_rdrand_bytes: + cmpq $8,%rsi + jb .Ltail_rdrand_bytes + movq %r10,(%rdi) + leaq 8(%rdi),%rdi + addq $8,%rax + subq $8,%rsi + jz .Ldone_rdrand_bytes + movq $8,%r11 + jmp .Loop_rdrand_bytes + +.align 16 +.Ltail_rdrand_bytes: + movb %r10b,(%rdi) + leaq 1(%rdi),%rdi + incq %rax + shrq $8,%r10 + decq %rsi + jnz .Ltail_rdrand_bytes + +.Ldone_rdrand_bytes: + xorq %r10,%r10 + .byte 0xf3,0xc3 +.cfi_endproc +.size OPENSSL_ia32_rdrand_bytes,.-OPENSSL_ia32_rdrand_bytes +.globl OPENSSL_ia32_rdseed_bytes +.type OPENSSL_ia32_rdseed_bytes,@function +.align 16 +OPENSSL_ia32_rdseed_bytes: +.cfi_startproc + xorq %rax,%rax + cmpq $0,%rsi + je .Ldone_rdseed_bytes + + movq $8,%r11 +.Loop_rdseed_bytes: +.byte 73,15,199,250 + jc .Lbreak_rdseed_bytes + decq %r11 + jnz .Loop_rdseed_bytes + jmp .Ldone_rdseed_bytes + +.align 16 +.Lbreak_rdseed_bytes: + cmpq $8,%rsi + jb .Ltail_rdseed_bytes + movq %r10,(%rdi) + leaq 8(%rdi),%rdi + addq $8,%rax + subq $8,%rsi + jz .Ldone_rdseed_bytes + movq $8,%r11 + jmp .Loop_rdseed_bytes + +.align 16 +.Ltail_rdseed_bytes: + movb %r10b,(%rdi) + leaq 1(%rdi),%rdi + incq %rax + shrq $8,%r10 + decq %rsi + jnz .Ltail_rdseed_bytes + +.Ldone_rdseed_bytes: + xorq %r10,%r10 + .byte 0xf3,0xc3 +.cfi_endproc +.size OPENSSL_ia32_rdseed_bytes,.-OPENSSL_ia32_rdseed_bytes diff --git a/vere/ext/openssl/gen/linux-x86_64/engines/e_padlock-x86_64.s b/vere/ext/openssl/gen/linux-x86_64/engines/e_padlock-x86_64.s new file mode 100644 index 0000000..a4ce798 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/engines/e_padlock-x86_64.s @@ -0,0 +1,1037 @@ +.text +.globl padlock_capability +.type padlock_capability,@function +.align 16 +padlock_capability: + movq %rbx,%r8 + xorl %eax,%eax + cpuid + xorl %eax,%eax + cmpl $0x746e6543,%ebx + jne .Lzhaoxin + cmpl $0x48727561,%edx + jne .Lnoluck + cmpl $0x736c7561,%ecx + jne .Lnoluck + jmp .LzhaoxinEnd +.Lzhaoxin: + cmpl $0x68532020,%ebx + jne .Lnoluck + cmpl $0x68676e61,%edx + jne .Lnoluck + cmpl $0x20206961,%ecx + jne .Lnoluck +.LzhaoxinEnd: + movl $0xC0000000,%eax + cpuid + movl %eax,%edx + xorl %eax,%eax + cmpl $0xC0000001,%edx + jb .Lnoluck + movl $0xC0000001,%eax + cpuid + movl %edx,%eax + andl $0xffffffef,%eax + orl $0x10,%eax +.Lnoluck: + movq %r8,%rbx + .byte 0xf3,0xc3 +.size padlock_capability,.-padlock_capability + +.globl padlock_key_bswap +.type padlock_key_bswap,@function +.align 16 +padlock_key_bswap: + movl 240(%rdi),%edx + incl %edx + shll $2,%edx +.Lbswap_loop: + movl (%rdi),%eax + bswapl %eax + movl %eax,(%rdi) + leaq 4(%rdi),%rdi + subl $1,%edx + jnz .Lbswap_loop + .byte 0xf3,0xc3 +.size padlock_key_bswap,.-padlock_key_bswap + +.globl padlock_verify_context +.type padlock_verify_context,@function +.align 16 +padlock_verify_context: + movq %rdi,%rdx + pushf + leaq .Lpadlock_saved_context(%rip),%rax + call _padlock_verify_ctx + leaq 8(%rsp),%rsp + .byte 0xf3,0xc3 +.size padlock_verify_context,.-padlock_verify_context + +.type _padlock_verify_ctx,@function +.align 16 +_padlock_verify_ctx: + movq 8(%rsp),%r8 + btq $30,%r8 + jnc .Lverified + cmpq (%rax),%rdx + je .Lverified + pushf + popf +.Lverified: + movq %rdx,(%rax) + .byte 0xf3,0xc3 +.size _padlock_verify_ctx,.-_padlock_verify_ctx + +.globl padlock_reload_key +.type padlock_reload_key,@function +.align 16 +padlock_reload_key: + pushf + popf + .byte 0xf3,0xc3 +.size padlock_reload_key,.-padlock_reload_key + +.globl padlock_aes_block +.type padlock_aes_block,@function +.align 16 +padlock_aes_block: + movq %rbx,%r8 + movq $1,%rcx + leaq 32(%rdx),%rbx + leaq 16(%rdx),%rdx +.byte 0xf3,0x0f,0xa7,0xc8 + movq %r8,%rbx + .byte 0xf3,0xc3 +.size padlock_aes_block,.-padlock_aes_block + +.globl padlock_xstore +.type padlock_xstore,@function +.align 16 +padlock_xstore: + movl %esi,%edx +.byte 0x0f,0xa7,0xc0 + .byte 0xf3,0xc3 +.size padlock_xstore,.-padlock_xstore + +.globl padlock_sha1_oneshot +.type padlock_sha1_oneshot,@function +.align 16 +padlock_sha1_oneshot: + movq %rdx,%rcx + movq %rdi,%rdx + movups (%rdi),%xmm0 + subq $128+8,%rsp + movl 16(%rdi),%eax + movaps %xmm0,(%rsp) + movq %rsp,%rdi + movl %eax,16(%rsp) + xorq %rax,%rax +.byte 0xf3,0x0f,0xa6,0xc8 + movaps (%rsp),%xmm0 + movl 16(%rsp),%eax + addq $128+8,%rsp + movups %xmm0,(%rdx) + movl %eax,16(%rdx) + .byte 0xf3,0xc3 +.size padlock_sha1_oneshot,.-padlock_sha1_oneshot + +.globl padlock_sha1_blocks +.type padlock_sha1_blocks,@function +.align 16 +padlock_sha1_blocks: + movq %rdx,%rcx + movq %rdi,%rdx + movups (%rdi),%xmm0 + subq $128+8,%rsp + movl 16(%rdi),%eax + movaps %xmm0,(%rsp) + movq %rsp,%rdi + movl %eax,16(%rsp) + movq $-1,%rax +.byte 0xf3,0x0f,0xa6,0xc8 + movaps (%rsp),%xmm0 + movl 16(%rsp),%eax + addq $128+8,%rsp + movups %xmm0,(%rdx) + movl %eax,16(%rdx) + .byte 0xf3,0xc3 +.size padlock_sha1_blocks,.-padlock_sha1_blocks + +.globl padlock_sha256_oneshot +.type padlock_sha256_oneshot,@function +.align 16 +padlock_sha256_oneshot: + movq %rdx,%rcx + movq %rdi,%rdx + movups (%rdi),%xmm0 + subq $128+8,%rsp + movups 16(%rdi),%xmm1 + movaps %xmm0,(%rsp) + movq %rsp,%rdi + movaps %xmm1,16(%rsp) + xorq %rax,%rax +.byte 0xf3,0x0f,0xa6,0xd0 + movaps (%rsp),%xmm0 + movaps 16(%rsp),%xmm1 + addq $128+8,%rsp + movups %xmm0,(%rdx) + movups %xmm1,16(%rdx) + .byte 0xf3,0xc3 +.size padlock_sha256_oneshot,.-padlock_sha256_oneshot + +.globl padlock_sha256_blocks +.type padlock_sha256_blocks,@function +.align 16 +padlock_sha256_blocks: + movq %rdx,%rcx + movq %rdi,%rdx + movups (%rdi),%xmm0 + subq $128+8,%rsp + movups 16(%rdi),%xmm1 + movaps %xmm0,(%rsp) + movq %rsp,%rdi + movaps %xmm1,16(%rsp) + movq $-1,%rax +.byte 0xf3,0x0f,0xa6,0xd0 + movaps (%rsp),%xmm0 + movaps 16(%rsp),%xmm1 + addq $128+8,%rsp + movups %xmm0,(%rdx) + movups %xmm1,16(%rdx) + .byte 0xf3,0xc3 +.size padlock_sha256_blocks,.-padlock_sha256_blocks + +.globl padlock_sha512_blocks +.type padlock_sha512_blocks,@function +.align 16 +padlock_sha512_blocks: + movq %rdx,%rcx + movq %rdi,%rdx + movups (%rdi),%xmm0 + subq $128+8,%rsp + movups 16(%rdi),%xmm1 + movups 32(%rdi),%xmm2 + movups 48(%rdi),%xmm3 + movaps %xmm0,(%rsp) + movq %rsp,%rdi + movaps %xmm1,16(%rsp) + movaps %xmm2,32(%rsp) + movaps %xmm3,48(%rsp) +.byte 0xf3,0x0f,0xa6,0xe0 + movaps (%rsp),%xmm0 + movaps 16(%rsp),%xmm1 + movaps 32(%rsp),%xmm2 + movaps 48(%rsp),%xmm3 + addq $128+8,%rsp + movups %xmm0,(%rdx) + movups %xmm1,16(%rdx) + movups %xmm2,32(%rdx) + movups %xmm3,48(%rdx) + .byte 0xf3,0xc3 +.size padlock_sha512_blocks,.-padlock_sha512_blocks +.globl padlock_ecb_encrypt +.type padlock_ecb_encrypt,@function +.align 16 +padlock_ecb_encrypt: + pushq %rbp + pushq %rbx + + xorl %eax,%eax + testq $15,%rdx + jnz .Lecb_abort + testq $15,%rcx + jnz .Lecb_abort + leaq .Lpadlock_saved_context(%rip),%rax + pushf + cld + call _padlock_verify_ctx + leaq 16(%rdx),%rdx + xorl %eax,%eax + xorl %ebx,%ebx + testl $32,(%rdx) + jnz .Lecb_aligned + testq $0x0f,%rdi + setz %al + testq $0x0f,%rsi + setz %bl + testl %ebx,%eax + jnz .Lecb_aligned + negq %rax + movq $512,%rbx + notq %rax + leaq (%rsp),%rbp + cmpq %rbx,%rcx + cmovcq %rcx,%rbx + andq %rbx,%rax + movq %rcx,%rbx + negq %rax + andq $512-1,%rbx + leaq (%rax,%rbp,1),%rsp + movq $512,%rax + cmovzq %rax,%rbx + cmpq %rbx,%rcx + ja .Lecb_loop + movq %rsi,%rax + cmpq %rsp,%rbp + cmoveq %rdi,%rax + addq %rcx,%rax + negq %rax + andq $0xfff,%rax + cmpq $128,%rax + movq $-128,%rax + cmovaeq %rbx,%rax + andq %rax,%rbx + jz .Lecb_unaligned_tail + jmp .Lecb_loop +.align 16 +.Lecb_loop: + cmpq %rcx,%rbx + cmovaq %rcx,%rbx + movq %rdi,%r8 + movq %rsi,%r9 + movq %rcx,%r10 + movq %rbx,%rcx + movq %rbx,%r11 + testq $0x0f,%rdi + cmovnzq %rsp,%rdi + testq $0x0f,%rsi + jz .Lecb_inp_aligned + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi + movq %rbx,%rcx + movq %rdi,%rsi +.Lecb_inp_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,200 + movq %r8,%rdi + movq %r11,%rbx + testq $0x0f,%rdi + jz .Lecb_out_aligned + movq %rbx,%rcx + leaq (%rsp),%rsi + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi +.Lecb_out_aligned: + movq %r9,%rsi + movq %r10,%rcx + addq %rbx,%rdi + addq %rbx,%rsi + subq %rbx,%rcx + movq $512,%rbx + jz .Lecb_break + cmpq %rbx,%rcx + jae .Lecb_loop +.Lecb_unaligned_tail: + xorl %eax,%eax + cmpq %rsp,%rbp + cmoveq %rcx,%rax + movq %rdi,%r8 + movq %rcx,%rbx + subq %rax,%rsp + shrq $3,%rcx + leaq (%rsp),%rdi +.byte 0xf3,0x48,0xa5 + movq %rsp,%rsi + movq %r8,%rdi + movq %rbx,%rcx + jmp .Lecb_loop +.align 16 +.Lecb_break: + cmpq %rbp,%rsp + je .Lecb_done + + pxor %xmm0,%xmm0 + leaq (%rsp),%rax +.Lecb_bzero: + movaps %xmm0,(%rax) + leaq 16(%rax),%rax + cmpq %rax,%rbp + ja .Lecb_bzero + +.Lecb_done: + leaq (%rbp),%rsp + jmp .Lecb_exit + +.align 16 +.Lecb_aligned: + leaq (%rsi,%rcx,1),%rbp + negq %rbp + andq $0xfff,%rbp + xorl %eax,%eax + cmpq $128,%rbp + movq $128-1,%rbp + cmovaeq %rax,%rbp + andq %rcx,%rbp + subq %rbp,%rcx + jz .Lecb_aligned_tail + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,200 + testq %rbp,%rbp + jz .Lecb_exit + +.Lecb_aligned_tail: + movq %rdi,%r8 + movq %rbp,%rbx + movq %rbp,%rcx + leaq (%rsp),%rbp + subq %rcx,%rsp + shrq $3,%rcx + leaq (%rsp),%rdi +.byte 0xf3,0x48,0xa5 + leaq (%r8),%rdi + leaq (%rsp),%rsi + movq %rbx,%rcx + jmp .Lecb_loop +.Lecb_exit: + movl $1,%eax + leaq 8(%rsp),%rsp +.Lecb_abort: + popq %rbx + popq %rbp + .byte 0xf3,0xc3 +.size padlock_ecb_encrypt,.-padlock_ecb_encrypt +.globl padlock_cbc_encrypt +.type padlock_cbc_encrypt,@function +.align 16 +padlock_cbc_encrypt: + pushq %rbp + pushq %rbx + + xorl %eax,%eax + testq $15,%rdx + jnz .Lcbc_abort + testq $15,%rcx + jnz .Lcbc_abort + leaq .Lpadlock_saved_context(%rip),%rax + pushf + cld + call _padlock_verify_ctx + leaq 16(%rdx),%rdx + xorl %eax,%eax + xorl %ebx,%ebx + testl $32,(%rdx) + jnz .Lcbc_aligned + testq $0x0f,%rdi + setz %al + testq $0x0f,%rsi + setz %bl + testl %ebx,%eax + jnz .Lcbc_aligned + negq %rax + movq $512,%rbx + notq %rax + leaq (%rsp),%rbp + cmpq %rbx,%rcx + cmovcq %rcx,%rbx + andq %rbx,%rax + movq %rcx,%rbx + negq %rax + andq $512-1,%rbx + leaq (%rax,%rbp,1),%rsp + movq $512,%rax + cmovzq %rax,%rbx + cmpq %rbx,%rcx + ja .Lcbc_loop + movq %rsi,%rax + cmpq %rsp,%rbp + cmoveq %rdi,%rax + addq %rcx,%rax + negq %rax + andq $0xfff,%rax + cmpq $64,%rax + movq $-64,%rax + cmovaeq %rbx,%rax + andq %rax,%rbx + jz .Lcbc_unaligned_tail + jmp .Lcbc_loop +.align 16 +.Lcbc_loop: + cmpq %rcx,%rbx + cmovaq %rcx,%rbx + movq %rdi,%r8 + movq %rsi,%r9 + movq %rcx,%r10 + movq %rbx,%rcx + movq %rbx,%r11 + testq $0x0f,%rdi + cmovnzq %rsp,%rdi + testq $0x0f,%rsi + jz .Lcbc_inp_aligned + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi + movq %rbx,%rcx + movq %rdi,%rsi +.Lcbc_inp_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,208 + movdqa (%rax),%xmm0 + movdqa %xmm0,-16(%rdx) + movq %r8,%rdi + movq %r11,%rbx + testq $0x0f,%rdi + jz .Lcbc_out_aligned + movq %rbx,%rcx + leaq (%rsp),%rsi + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi +.Lcbc_out_aligned: + movq %r9,%rsi + movq %r10,%rcx + addq %rbx,%rdi + addq %rbx,%rsi + subq %rbx,%rcx + movq $512,%rbx + jz .Lcbc_break + cmpq %rbx,%rcx + jae .Lcbc_loop +.Lcbc_unaligned_tail: + xorl %eax,%eax + cmpq %rsp,%rbp + cmoveq %rcx,%rax + movq %rdi,%r8 + movq %rcx,%rbx + subq %rax,%rsp + shrq $3,%rcx + leaq (%rsp),%rdi +.byte 0xf3,0x48,0xa5 + movq %rsp,%rsi + movq %r8,%rdi + movq %rbx,%rcx + jmp .Lcbc_loop +.align 16 +.Lcbc_break: + cmpq %rbp,%rsp + je .Lcbc_done + + pxor %xmm0,%xmm0 + leaq (%rsp),%rax +.Lcbc_bzero: + movaps %xmm0,(%rax) + leaq 16(%rax),%rax + cmpq %rax,%rbp + ja .Lcbc_bzero + +.Lcbc_done: + leaq (%rbp),%rsp + jmp .Lcbc_exit + +.align 16 +.Lcbc_aligned: + leaq (%rsi,%rcx,1),%rbp + negq %rbp + andq $0xfff,%rbp + xorl %eax,%eax + cmpq $64,%rbp + movq $64-1,%rbp + cmovaeq %rax,%rbp + andq %rcx,%rbp + subq %rbp,%rcx + jz .Lcbc_aligned_tail + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,208 + movdqa (%rax),%xmm0 + movdqa %xmm0,-16(%rdx) + testq %rbp,%rbp + jz .Lcbc_exit + +.Lcbc_aligned_tail: + movq %rdi,%r8 + movq %rbp,%rbx + movq %rbp,%rcx + leaq (%rsp),%rbp + subq %rcx,%rsp + shrq $3,%rcx + leaq (%rsp),%rdi +.byte 0xf3,0x48,0xa5 + leaq (%r8),%rdi + leaq (%rsp),%rsi + movq %rbx,%rcx + jmp .Lcbc_loop +.Lcbc_exit: + movl $1,%eax + leaq 8(%rsp),%rsp +.Lcbc_abort: + popq %rbx + popq %rbp + .byte 0xf3,0xc3 +.size padlock_cbc_encrypt,.-padlock_cbc_encrypt +.globl padlock_cfb_encrypt +.type padlock_cfb_encrypt,@function +.align 16 +padlock_cfb_encrypt: + pushq %rbp + pushq %rbx + + xorl %eax,%eax + testq $15,%rdx + jnz .Lcfb_abort + testq $15,%rcx + jnz .Lcfb_abort + leaq .Lpadlock_saved_context(%rip),%rax + pushf + cld + call _padlock_verify_ctx + leaq 16(%rdx),%rdx + xorl %eax,%eax + xorl %ebx,%ebx + testl $32,(%rdx) + jnz .Lcfb_aligned + testq $0x0f,%rdi + setz %al + testq $0x0f,%rsi + setz %bl + testl %ebx,%eax + jnz .Lcfb_aligned + negq %rax + movq $512,%rbx + notq %rax + leaq (%rsp),%rbp + cmpq %rbx,%rcx + cmovcq %rcx,%rbx + andq %rbx,%rax + movq %rcx,%rbx + negq %rax + andq $512-1,%rbx + leaq (%rax,%rbp,1),%rsp + movq $512,%rax + cmovzq %rax,%rbx + jmp .Lcfb_loop +.align 16 +.Lcfb_loop: + cmpq %rcx,%rbx + cmovaq %rcx,%rbx + movq %rdi,%r8 + movq %rsi,%r9 + movq %rcx,%r10 + movq %rbx,%rcx + movq %rbx,%r11 + testq $0x0f,%rdi + cmovnzq %rsp,%rdi + testq $0x0f,%rsi + jz .Lcfb_inp_aligned + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi + movq %rbx,%rcx + movq %rdi,%rsi +.Lcfb_inp_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,224 + movdqa (%rax),%xmm0 + movdqa %xmm0,-16(%rdx) + movq %r8,%rdi + movq %r11,%rbx + testq $0x0f,%rdi + jz .Lcfb_out_aligned + movq %rbx,%rcx + leaq (%rsp),%rsi + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi +.Lcfb_out_aligned: + movq %r9,%rsi + movq %r10,%rcx + addq %rbx,%rdi + addq %rbx,%rsi + subq %rbx,%rcx + movq $512,%rbx + jnz .Lcfb_loop + cmpq %rbp,%rsp + je .Lcfb_done + + pxor %xmm0,%xmm0 + leaq (%rsp),%rax +.Lcfb_bzero: + movaps %xmm0,(%rax) + leaq 16(%rax),%rax + cmpq %rax,%rbp + ja .Lcfb_bzero + +.Lcfb_done: + leaq (%rbp),%rsp + jmp .Lcfb_exit + +.align 16 +.Lcfb_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,224 + movdqa (%rax),%xmm0 + movdqa %xmm0,-16(%rdx) +.Lcfb_exit: + movl $1,%eax + leaq 8(%rsp),%rsp +.Lcfb_abort: + popq %rbx + popq %rbp + .byte 0xf3,0xc3 +.size padlock_cfb_encrypt,.-padlock_cfb_encrypt +.globl padlock_ofb_encrypt +.type padlock_ofb_encrypt,@function +.align 16 +padlock_ofb_encrypt: + pushq %rbp + pushq %rbx + + xorl %eax,%eax + testq $15,%rdx + jnz .Lofb_abort + testq $15,%rcx + jnz .Lofb_abort + leaq .Lpadlock_saved_context(%rip),%rax + pushf + cld + call _padlock_verify_ctx + leaq 16(%rdx),%rdx + xorl %eax,%eax + xorl %ebx,%ebx + testl $32,(%rdx) + jnz .Lofb_aligned + testq $0x0f,%rdi + setz %al + testq $0x0f,%rsi + setz %bl + testl %ebx,%eax + jnz .Lofb_aligned + negq %rax + movq $512,%rbx + notq %rax + leaq (%rsp),%rbp + cmpq %rbx,%rcx + cmovcq %rcx,%rbx + andq %rbx,%rax + movq %rcx,%rbx + negq %rax + andq $512-1,%rbx + leaq (%rax,%rbp,1),%rsp + movq $512,%rax + cmovzq %rax,%rbx + jmp .Lofb_loop +.align 16 +.Lofb_loop: + cmpq %rcx,%rbx + cmovaq %rcx,%rbx + movq %rdi,%r8 + movq %rsi,%r9 + movq %rcx,%r10 + movq %rbx,%rcx + movq %rbx,%r11 + testq $0x0f,%rdi + cmovnzq %rsp,%rdi + testq $0x0f,%rsi + jz .Lofb_inp_aligned + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi + movq %rbx,%rcx + movq %rdi,%rsi +.Lofb_inp_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,232 + movdqa (%rax),%xmm0 + movdqa %xmm0,-16(%rdx) + movq %r8,%rdi + movq %r11,%rbx + testq $0x0f,%rdi + jz .Lofb_out_aligned + movq %rbx,%rcx + leaq (%rsp),%rsi + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi +.Lofb_out_aligned: + movq %r9,%rsi + movq %r10,%rcx + addq %rbx,%rdi + addq %rbx,%rsi + subq %rbx,%rcx + movq $512,%rbx + jnz .Lofb_loop + cmpq %rbp,%rsp + je .Lofb_done + + pxor %xmm0,%xmm0 + leaq (%rsp),%rax +.Lofb_bzero: + movaps %xmm0,(%rax) + leaq 16(%rax),%rax + cmpq %rax,%rbp + ja .Lofb_bzero + +.Lofb_done: + leaq (%rbp),%rsp + jmp .Lofb_exit + +.align 16 +.Lofb_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,232 + movdqa (%rax),%xmm0 + movdqa %xmm0,-16(%rdx) +.Lofb_exit: + movl $1,%eax + leaq 8(%rsp),%rsp +.Lofb_abort: + popq %rbx + popq %rbp + .byte 0xf3,0xc3 +.size padlock_ofb_encrypt,.-padlock_ofb_encrypt +.globl padlock_ctr32_encrypt +.type padlock_ctr32_encrypt,@function +.align 16 +padlock_ctr32_encrypt: + pushq %rbp + pushq %rbx + + xorl %eax,%eax + testq $15,%rdx + jnz .Lctr32_abort + testq $15,%rcx + jnz .Lctr32_abort + leaq .Lpadlock_saved_context(%rip),%rax + pushf + cld + call _padlock_verify_ctx + leaq 16(%rdx),%rdx + xorl %eax,%eax + xorl %ebx,%ebx + testl $32,(%rdx) + jnz .Lctr32_aligned + testq $0x0f,%rdi + setz %al + testq $0x0f,%rsi + setz %bl + testl %ebx,%eax + jnz .Lctr32_aligned + negq %rax + movq $512,%rbx + notq %rax + leaq (%rsp),%rbp + cmpq %rbx,%rcx + cmovcq %rcx,%rbx + andq %rbx,%rax + movq %rcx,%rbx + negq %rax + andq $512-1,%rbx + leaq (%rax,%rbp,1),%rsp + movq $512,%rax + cmovzq %rax,%rbx +.Lctr32_reenter: + movl -4(%rdx),%eax + bswapl %eax + negl %eax + andl $31,%eax + movq $512,%rbx + shll $4,%eax + cmovzq %rbx,%rax + cmpq %rax,%rcx + cmovaq %rax,%rbx + cmovbeq %rcx,%rbx + cmpq %rbx,%rcx + ja .Lctr32_loop + movq %rsi,%rax + cmpq %rsp,%rbp + cmoveq %rdi,%rax + addq %rcx,%rax + negq %rax + andq $0xfff,%rax + cmpq $32,%rax + movq $-32,%rax + cmovaeq %rbx,%rax + andq %rax,%rbx + jz .Lctr32_unaligned_tail + jmp .Lctr32_loop +.align 16 +.Lctr32_loop: + cmpq %rcx,%rbx + cmovaq %rcx,%rbx + movq %rdi,%r8 + movq %rsi,%r9 + movq %rcx,%r10 + movq %rbx,%rcx + movq %rbx,%r11 + testq $0x0f,%rdi + cmovnzq %rsp,%rdi + testq $0x0f,%rsi + jz .Lctr32_inp_aligned + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi + movq %rbx,%rcx + movq %rdi,%rsi +.Lctr32_inp_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,216 + movl -4(%rdx),%eax + testl $0xffff0000,%eax + jnz .Lctr32_no_carry + bswapl %eax + addl $0x10000,%eax + bswapl %eax + movl %eax,-4(%rdx) +.Lctr32_no_carry: + movq %r8,%rdi + movq %r11,%rbx + testq $0x0f,%rdi + jz .Lctr32_out_aligned + movq %rbx,%rcx + leaq (%rsp),%rsi + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi +.Lctr32_out_aligned: + movq %r9,%rsi + movq %r10,%rcx + addq %rbx,%rdi + addq %rbx,%rsi + subq %rbx,%rcx + movq $512,%rbx + jz .Lctr32_break + cmpq %rbx,%rcx + jae .Lctr32_loop + movq %rcx,%rbx + movq %rsi,%rax + cmpq %rsp,%rbp + cmoveq %rdi,%rax + addq %rcx,%rax + negq %rax + andq $0xfff,%rax + cmpq $32,%rax + movq $-32,%rax + cmovaeq %rbx,%rax + andq %rax,%rbx + jnz .Lctr32_loop +.Lctr32_unaligned_tail: + xorl %eax,%eax + cmpq %rsp,%rbp + cmoveq %rcx,%rax + movq %rdi,%r8 + movq %rcx,%rbx + subq %rax,%rsp + shrq $3,%rcx + leaq (%rsp),%rdi +.byte 0xf3,0x48,0xa5 + movq %rsp,%rsi + movq %r8,%rdi + movq %rbx,%rcx + jmp .Lctr32_loop +.align 16 +.Lctr32_break: + cmpq %rbp,%rsp + je .Lctr32_done + + pxor %xmm0,%xmm0 + leaq (%rsp),%rax +.Lctr32_bzero: + movaps %xmm0,(%rax) + leaq 16(%rax),%rax + cmpq %rax,%rbp + ja .Lctr32_bzero + +.Lctr32_done: + leaq (%rbp),%rsp + jmp .Lctr32_exit + +.align 16 +.Lctr32_aligned: + movl -4(%rdx),%eax + bswapl %eax + negl %eax + andl $0xffff,%eax + movq $1048576,%rbx + shll $4,%eax + cmovzq %rbx,%rax + cmpq %rax,%rcx + cmovaq %rax,%rbx + cmovbeq %rcx,%rbx + jbe .Lctr32_aligned_skip + +.Lctr32_aligned_loop: + movq %rcx,%r10 + movq %rbx,%rcx + movq %rbx,%r11 + + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,216 + + movl -4(%rdx),%eax + bswapl %eax + addl $0x10000,%eax + bswapl %eax + movl %eax,-4(%rdx) + + movq %r10,%rcx + subq %r11,%rcx + movq $1048576,%rbx + jz .Lctr32_exit + cmpq %rbx,%rcx + jae .Lctr32_aligned_loop + +.Lctr32_aligned_skip: + leaq (%rsi,%rcx,1),%rbp + negq %rbp + andq $0xfff,%rbp + xorl %eax,%eax + cmpq $32,%rbp + movq $32-1,%rbp + cmovaeq %rax,%rbp + andq %rcx,%rbp + subq %rbp,%rcx + jz .Lctr32_aligned_tail + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,216 + testq %rbp,%rbp + jz .Lctr32_exit + +.Lctr32_aligned_tail: + movq %rdi,%r8 + movq %rbp,%rbx + movq %rbp,%rcx + leaq (%rsp),%rbp + subq %rcx,%rsp + shrq $3,%rcx + leaq (%rsp),%rdi +.byte 0xf3,0x48,0xa5 + leaq (%r8),%rdi + leaq (%rsp),%rsi + movq %rbx,%rcx + jmp .Lctr32_loop +.Lctr32_exit: + movl $1,%eax + leaq 8(%rsp),%rsp +.Lctr32_abort: + popq %rbx + popq %rbp + .byte 0xf3,0xc3 +.size padlock_ctr32_encrypt,.-padlock_ctr32_encrypt +.byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,95,54,52,32,109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 16 +.data +.align 8 +.Lpadlock_saved_context: +.quad 0 diff --git a/vere/ext/openssl/gen/linux-x86_64/include/crypto/bn_conf.h b/vere/ext/openssl/gen/linux-x86_64/include/crypto/bn_conf.h new file mode 100644 index 0000000..5312ef5 --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/include/crypto/bn_conf.h @@ -0,0 +1,28 @@ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/bn_conf.h.in */ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_BN_CONF_H +# define OSSL_CRYPTO_BN_CONF_H + +/* + * The contents of this file are not used in the UEFI build, as + * both 32-bit and 64-bit builds are supported from a single run + * of the Configure script. + */ + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#define SIXTY_FOUR_BIT_LONG +#undef SIXTY_FOUR_BIT +#undef THIRTY_TWO_BIT + +#endif diff --git a/vere/ext/openssl/gen/linux-x86_64/include/crypto/buildinf.h b/vere/ext/openssl/gen/linux-x86_64/include/crypto/buildinf.h new file mode 100644 index 0000000..3be275a --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/include/crypto/buildinf.h @@ -0,0 +1,45 @@ +/* + * WARNING: do not edit! + * Generated by util/mkbuildinf.pl + * + * Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define PLATFORM "platform: linux-x86_64" +#define DATE "built on: Thu Sep 19 13:34:57 2024 UTC" + +/* + * Generate compiler_flags as an array of individual characters. This is a + * workaround for the situation where CFLAGS gets too long for a C90 string + * literal + */ +static const char compiler_flags[] = { + 'c','o','m','p','i','l','e','r',':',' ','g','c','c',' ','-','f', + 'P','I','C',' ','-','p','t','h','r','e','a','d',' ','-','m','6', + '4',' ','-','W','a','l','l',' ','-','O','3',' ','-','D','O','P', + 'E','N','S','S','L','_','U','S','E','_','N','O','D','E','L','E', + 'T','E',' ','-','D','L','_','E','N','D','I','A','N',' ','-','D', + 'O','P','E','N','S','S','L','_','P','I','C',' ','-','D','O','P', + 'E','N','S','S','L','_','C','P','U','I','D','_','O','B','J',' ', + '-','D','O','P','E','N','S','S','L','_','I','A','3','2','_','S', + 'S','E','2',' ','-','D','O','P','E','N','S','S','L','_','B','N', + '_','A','S','M','_','M','O','N','T',' ','-','D','O','P','E','N', + 'S','S','L','_','B','N','_','A','S','M','_','M','O','N','T','5', + ' ','-','D','O','P','E','N','S','S','L','_','B','N','_','A','S', + 'M','_','G','F','2','m',' ','-','D','S','H','A','1','_','A','S', + 'M',' ','-','D','S','H','A','2','5','6','_','A','S','M',' ','-', + 'D','S','H','A','5','1','2','_','A','S','M',' ','-','D','K','E', + 'C','C','A','K','1','6','0','0','_','A','S','M',' ','-','D','R', + 'C','4','_','A','S','M',' ','-','D','M','D','5','_','A','S','M', + ' ','-','D','A','E','S','N','I','_','A','S','M',' ','-','D','V', + 'P','A','E','S','_','A','S','M',' ','-','D','G','H','A','S','H', + '_','A','S','M',' ','-','D','E','C','P','_','N','I','S','T','Z', + '2','5','6','_','A','S','M',' ','-','D','X','2','5','5','1','9', + '_','A','S','M',' ','-','D','P','O','L','Y','1','3','0','5','_', + 'A','S','M',' ','-','D','N','D','E','B','U','G','\0' +}; diff --git a/vere/ext/openssl/gen/linux-x86_64/include/crypto/dso_conf.h b/vere/ext/openssl/gen/linux-x86_64/include/crypto/dso_conf.h new file mode 100644 index 0000000..4b1167c --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/include/crypto/dso_conf.h @@ -0,0 +1,17 @@ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/dso_conf.h.in */ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_DSO_CONF_H +# define OSSL_CRYPTO_DSO_CONF_H +# define DSO_DLFCN +# define HAVE_DLFCN_H +# define DSO_EXTENSION ".so" +#endif diff --git a/vere/ext/openssl/gen/linux-x86_64/include/openssl/opensslconf.h b/vere/ext/openssl/gen/linux-x86_64/include/openssl/opensslconf.h new file mode 100644 index 0000000..3b49d9c --- /dev/null +++ b/vere/ext/openssl/gen/linux-x86_64/include/openssl/opensslconf.h @@ -0,0 +1,197 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +#endif +#ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +#endif +#ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#ifndef OPENSSL_FILE +# ifdef OPENSSL_NO_FILENAMES +# define OPENSSL_FILE "" +# define OPENSSL_LINE 0 +# else +# define OPENSSL_FILE __FILE__ +# define OPENSSL_LINE __LINE__ +# endif +#endif + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# define SIXTY_FOUR_BIT_LONG +# undef SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#define RC4_INT unsigned int + +#ifdef __cplusplus +} +#endif diff --git a/vere/ext/openssl/gen/macos-aarch64/crypto/aes/aesv8-armx.S b/vere/ext/openssl/gen/macos-aarch64/crypto/aes/aesv8-armx.S new file mode 100644 index 0000000..0176e12 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/crypto/aes/aesv8-armx.S @@ -0,0 +1,757 @@ +#include "arm_arch.h" + +#if __ARM_MAX_ARCH__>=7 +.text + +.align 5 +Lrcon: +.long 0x01,0x01,0x01,0x01 +.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d // rotate-n-splat +.long 0x1b,0x1b,0x1b,0x1b + +.globl _aes_v8_set_encrypt_key + +.align 5 +_aes_v8_set_encrypt_key: +Lenc_key: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + mov x3,#-1 + cmp x0,#0 + b.eq Lenc_key_abort + cmp x2,#0 + b.eq Lenc_key_abort + mov x3,#-2 + cmp w1,#128 + b.lt Lenc_key_abort + cmp w1,#256 + b.gt Lenc_key_abort + tst w1,#0x3f + b.ne Lenc_key_abort + + adr x3,Lrcon + cmp w1,#192 + + eor v0.16b,v0.16b,v0.16b + ld1 {v3.16b},[x0],#16 + mov w1,#8 // reuse w1 + ld1 {v1.4s,v2.4s},[x3],#32 + + b.lt Loop128 + b.eq L192 + b L256 + +.align 4 +Loop128: + tbl v6.16b,{v3.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 + st1 {v3.4s},[x2],#16 + aese v6.16b,v0.16b + subs w1,w1,#1 + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v6.16b,v6.16b,v1.16b + eor v3.16b,v3.16b,v5.16b + shl v1.16b,v1.16b,#1 + eor v3.16b,v3.16b,v6.16b + b.ne Loop128 + + ld1 {v1.4s},[x3] + + tbl v6.16b,{v3.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 + st1 {v3.4s},[x2],#16 + aese v6.16b,v0.16b + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v6.16b,v6.16b,v1.16b + eor v3.16b,v3.16b,v5.16b + shl v1.16b,v1.16b,#1 + eor v3.16b,v3.16b,v6.16b + + tbl v6.16b,{v3.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 + st1 {v3.4s},[x2],#16 + aese v6.16b,v0.16b + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v6.16b,v6.16b,v1.16b + eor v3.16b,v3.16b,v5.16b + eor v3.16b,v3.16b,v6.16b + st1 {v3.4s},[x2] + add x2,x2,#0x50 + + mov w12,#10 + b Ldone + +.align 4 +L192: + ld1 {v4.8b},[x0],#8 + movi v6.16b,#8 // borrow v6.16b + st1 {v3.4s},[x2],#16 + sub v2.16b,v2.16b,v6.16b // adjust the mask + +Loop192: + tbl v6.16b,{v4.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 +#ifdef __ARMEB__ + st1 {v4.4s},[x2],#16 + sub x2,x2,#8 +#else + st1 {v4.8b},[x2],#8 +#endif + aese v6.16b,v0.16b + subs w1,w1,#1 + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + + dup v5.4s,v3.s[3] + eor v5.16b,v5.16b,v4.16b + eor v6.16b,v6.16b,v1.16b + ext v4.16b,v0.16b,v4.16b,#12 + shl v1.16b,v1.16b,#1 + eor v4.16b,v4.16b,v5.16b + eor v3.16b,v3.16b,v6.16b + eor v4.16b,v4.16b,v6.16b + st1 {v3.4s},[x2],#16 + b.ne Loop192 + + mov w12,#12 + add x2,x2,#0x20 + b Ldone + +.align 4 +L256: + ld1 {v4.16b},[x0] + mov w1,#7 + mov w12,#14 + st1 {v3.4s},[x2],#16 + +Loop256: + tbl v6.16b,{v4.16b},v2.16b + ext v5.16b,v0.16b,v3.16b,#12 + st1 {v4.4s},[x2],#16 + aese v6.16b,v0.16b + subs w1,w1,#1 + + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v3.16b,v3.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v6.16b,v6.16b,v1.16b + eor v3.16b,v3.16b,v5.16b + shl v1.16b,v1.16b,#1 + eor v3.16b,v3.16b,v6.16b + st1 {v3.4s},[x2],#16 + b.eq Ldone + + dup v6.4s,v3.s[3] // just splat + ext v5.16b,v0.16b,v4.16b,#12 + aese v6.16b,v0.16b + + eor v4.16b,v4.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v4.16b,v4.16b,v5.16b + ext v5.16b,v0.16b,v5.16b,#12 + eor v4.16b,v4.16b,v5.16b + + eor v4.16b,v4.16b,v6.16b + b Loop256 + +Ldone: + str w12,[x2] + mov x3,#0 + +Lenc_key_abort: + mov x0,x3 // return value + ldr x29,[sp],#16 + ret + + +.globl _aes_v8_set_decrypt_key + +.align 5 +_aes_v8_set_decrypt_key: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + bl Lenc_key + + cmp x0,#0 + b.ne Ldec_key_abort + + sub x2,x2,#240 // restore original x2 + mov x4,#-16 + add x0,x2,x12,lsl#4 // end of key schedule + + ld1 {v0.4s},[x2] + ld1 {v1.4s},[x0] + st1 {v0.4s},[x0],x4 + st1 {v1.4s},[x2],#16 + +Loop_imc: + ld1 {v0.4s},[x2] + ld1 {v1.4s},[x0] + aesimc v0.16b,v0.16b + aesimc v1.16b,v1.16b + st1 {v0.4s},[x0],x4 + st1 {v1.4s},[x2],#16 + cmp x0,x2 + b.hi Loop_imc + + ld1 {v0.4s},[x2] + aesimc v0.16b,v0.16b + st1 {v0.4s},[x0] + + eor x0,x0,x0 // return value +Ldec_key_abort: + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + +.globl _aes_v8_encrypt + +.align 5 +_aes_v8_encrypt: + ldr w3,[x2,#240] + ld1 {v0.4s},[x2],#16 + ld1 {v2.16b},[x0] + sub w3,w3,#2 + ld1 {v1.4s},[x2],#16 + +Loop_enc: + aese v2.16b,v0.16b + aesmc v2.16b,v2.16b + ld1 {v0.4s},[x2],#16 + subs w3,w3,#2 + aese v2.16b,v1.16b + aesmc v2.16b,v2.16b + ld1 {v1.4s},[x2],#16 + b.gt Loop_enc + + aese v2.16b,v0.16b + aesmc v2.16b,v2.16b + ld1 {v0.4s},[x2] + aese v2.16b,v1.16b + eor v2.16b,v2.16b,v0.16b + + st1 {v2.16b},[x1] + ret + +.globl _aes_v8_decrypt + +.align 5 +_aes_v8_decrypt: + ldr w3,[x2,#240] + ld1 {v0.4s},[x2],#16 + ld1 {v2.16b},[x0] + sub w3,w3,#2 + ld1 {v1.4s},[x2],#16 + +Loop_dec: + aesd v2.16b,v0.16b + aesimc v2.16b,v2.16b + ld1 {v0.4s},[x2],#16 + subs w3,w3,#2 + aesd v2.16b,v1.16b + aesimc v2.16b,v2.16b + ld1 {v1.4s},[x2],#16 + b.gt Loop_dec + + aesd v2.16b,v0.16b + aesimc v2.16b,v2.16b + ld1 {v0.4s},[x2] + aesd v2.16b,v1.16b + eor v2.16b,v2.16b,v0.16b + + st1 {v2.16b},[x1] + ret + +.globl _aes_v8_cbc_encrypt + +.align 5 +_aes_v8_cbc_encrypt: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + subs x2,x2,#16 + mov x8,#16 + b.lo Lcbc_abort + csel x8,xzr,x8,eq + + cmp w5,#0 // en- or decrypting? + ldr w5,[x3,#240] + and x2,x2,#-16 + ld1 {v6.16b},[x4] + ld1 {v0.16b},[x0],x8 + + ld1 {v16.4s,v17.4s},[x3] // load key schedule... + sub w5,w5,#6 + add x7,x3,x5,lsl#4 // pointer to last 7 round keys + sub w5,w5,#2 + ld1 {v18.4s,v19.4s},[x7],#32 + ld1 {v20.4s,v21.4s},[x7],#32 + ld1 {v22.4s,v23.4s},[x7],#32 + ld1 {v7.4s},[x7] + + add x7,x3,#32 + mov w6,w5 + b.eq Lcbc_dec + + cmp w5,#2 + eor v0.16b,v0.16b,v6.16b + eor v5.16b,v16.16b,v7.16b + b.eq Lcbc_enc128 + + ld1 {v2.4s,v3.4s},[x7] + add x7,x3,#16 + add x6,x3,#16*4 + add x12,x3,#16*5 + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + add x14,x3,#16*6 + add x3,x3,#16*7 + b Lenter_cbc_enc + +.align 4 +Loop_cbc_enc: + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + st1 {v6.16b},[x1],#16 +Lenter_cbc_enc: + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + aese v0.16b,v2.16b + aesmc v0.16b,v0.16b + ld1 {v16.4s},[x6] + cmp w5,#4 + aese v0.16b,v3.16b + aesmc v0.16b,v0.16b + ld1 {v17.4s},[x12] + b.eq Lcbc_enc192 + + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + ld1 {v16.4s},[x14] + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + ld1 {v17.4s},[x3] + nop + +Lcbc_enc192: + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + subs x2,x2,#16 + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + csel x8,xzr,x8,eq + aese v0.16b,v18.16b + aesmc v0.16b,v0.16b + aese v0.16b,v19.16b + aesmc v0.16b,v0.16b + ld1 {v16.16b},[x0],x8 + aese v0.16b,v20.16b + aesmc v0.16b,v0.16b + eor v16.16b,v16.16b,v5.16b + aese v0.16b,v21.16b + aesmc v0.16b,v0.16b + ld1 {v17.4s},[x7] // re-pre-load rndkey[1] + aese v0.16b,v22.16b + aesmc v0.16b,v0.16b + aese v0.16b,v23.16b + eor v6.16b,v0.16b,v7.16b + b.hs Loop_cbc_enc + + st1 {v6.16b},[x1],#16 + b Lcbc_done + +.align 5 +Lcbc_enc128: + ld1 {v2.4s,v3.4s},[x7] + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + b Lenter_cbc_enc128 +Loop_cbc_enc128: + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + st1 {v6.16b},[x1],#16 +Lenter_cbc_enc128: + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + subs x2,x2,#16 + aese v0.16b,v2.16b + aesmc v0.16b,v0.16b + csel x8,xzr,x8,eq + aese v0.16b,v3.16b + aesmc v0.16b,v0.16b + aese v0.16b,v18.16b + aesmc v0.16b,v0.16b + aese v0.16b,v19.16b + aesmc v0.16b,v0.16b + ld1 {v16.16b},[x0],x8 + aese v0.16b,v20.16b + aesmc v0.16b,v0.16b + aese v0.16b,v21.16b + aesmc v0.16b,v0.16b + aese v0.16b,v22.16b + aesmc v0.16b,v0.16b + eor v16.16b,v16.16b,v5.16b + aese v0.16b,v23.16b + eor v6.16b,v0.16b,v7.16b + b.hs Loop_cbc_enc128 + + st1 {v6.16b},[x1],#16 + b Lcbc_done +.align 5 +Lcbc_dec: + ld1 {v18.16b},[x0],#16 + subs x2,x2,#32 // bias + add w6,w5,#2 + orr v3.16b,v0.16b,v0.16b + orr v1.16b,v0.16b,v0.16b + orr v19.16b,v18.16b,v18.16b + b.lo Lcbc_dec_tail + + orr v1.16b,v18.16b,v18.16b + ld1 {v18.16b},[x0],#16 + orr v2.16b,v0.16b,v0.16b + orr v3.16b,v1.16b,v1.16b + orr v19.16b,v18.16b,v18.16b + +Loop3x_cbc_dec: + aesd v0.16b,v16.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v16.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v16.16b + aesimc v18.16b,v18.16b + ld1 {v16.4s},[x7],#16 + subs w6,w6,#2 + aesd v0.16b,v17.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v17.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v17.16b + aesimc v18.16b,v18.16b + ld1 {v17.4s},[x7],#16 + b.gt Loop3x_cbc_dec + + aesd v0.16b,v16.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v16.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v16.16b + aesimc v18.16b,v18.16b + eor v4.16b,v6.16b,v7.16b + subs x2,x2,#0x30 + eor v5.16b,v2.16b,v7.16b + csel x6,x2,x6,lo // x6, w6, is zero at this point + aesd v0.16b,v17.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v17.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v17.16b + aesimc v18.16b,v18.16b + eor v17.16b,v3.16b,v7.16b + add x0,x0,x6 // x0 is adjusted in such way that + // at exit from the loop v1.16b-v18.16b + // are loaded with last "words" + orr v6.16b,v19.16b,v19.16b + mov x7,x3 + aesd v0.16b,v20.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v20.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v20.16b + aesimc v18.16b,v18.16b + ld1 {v2.16b},[x0],#16 + aesd v0.16b,v21.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v21.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v21.16b + aesimc v18.16b,v18.16b + ld1 {v3.16b},[x0],#16 + aesd v0.16b,v22.16b + aesimc v0.16b,v0.16b + aesd v1.16b,v22.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v22.16b + aesimc v18.16b,v18.16b + ld1 {v19.16b},[x0],#16 + aesd v0.16b,v23.16b + aesd v1.16b,v23.16b + aesd v18.16b,v23.16b + ld1 {v16.4s},[x7],#16 // re-pre-load rndkey[0] + add w6,w5,#2 + eor v4.16b,v4.16b,v0.16b + eor v5.16b,v5.16b,v1.16b + eor v18.16b,v18.16b,v17.16b + ld1 {v17.4s},[x7],#16 // re-pre-load rndkey[1] + st1 {v4.16b},[x1],#16 + orr v0.16b,v2.16b,v2.16b + st1 {v5.16b},[x1],#16 + orr v1.16b,v3.16b,v3.16b + st1 {v18.16b},[x1],#16 + orr v18.16b,v19.16b,v19.16b + b.hs Loop3x_cbc_dec + + cmn x2,#0x30 + b.eq Lcbc_done + nop + +Lcbc_dec_tail: + aesd v1.16b,v16.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v16.16b + aesimc v18.16b,v18.16b + ld1 {v16.4s},[x7],#16 + subs w6,w6,#2 + aesd v1.16b,v17.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v17.16b + aesimc v18.16b,v18.16b + ld1 {v17.4s},[x7],#16 + b.gt Lcbc_dec_tail + + aesd v1.16b,v16.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v16.16b + aesimc v18.16b,v18.16b + aesd v1.16b,v17.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v17.16b + aesimc v18.16b,v18.16b + aesd v1.16b,v20.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v20.16b + aesimc v18.16b,v18.16b + cmn x2,#0x20 + aesd v1.16b,v21.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v21.16b + aesimc v18.16b,v18.16b + eor v5.16b,v6.16b,v7.16b + aesd v1.16b,v22.16b + aesimc v1.16b,v1.16b + aesd v18.16b,v22.16b + aesimc v18.16b,v18.16b + eor v17.16b,v3.16b,v7.16b + aesd v1.16b,v23.16b + aesd v18.16b,v23.16b + b.eq Lcbc_dec_one + eor v5.16b,v5.16b,v1.16b + eor v17.16b,v17.16b,v18.16b + orr v6.16b,v19.16b,v19.16b + st1 {v5.16b},[x1],#16 + st1 {v17.16b},[x1],#16 + b Lcbc_done + +Lcbc_dec_one: + eor v5.16b,v5.16b,v18.16b + orr v6.16b,v19.16b,v19.16b + st1 {v5.16b},[x1],#16 + +Lcbc_done: + st1 {v6.16b},[x4] +Lcbc_abort: + ldr x29,[sp],#16 + ret + +.globl _aes_v8_ctr32_encrypt_blocks + +.align 5 +_aes_v8_ctr32_encrypt_blocks: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + ldr w5,[x3,#240] + + ldr w8, [x4, #12] +#ifdef __ARMEB__ + ld1 {v0.16b},[x4] +#else + ld1 {v0.4s},[x4] +#endif + ld1 {v16.4s,v17.4s},[x3] // load key schedule... + sub w5,w5,#4 + mov x12,#16 + cmp x2,#2 + add x7,x3,x5,lsl#4 // pointer to last 5 round keys + sub w5,w5,#2 + ld1 {v20.4s,v21.4s},[x7],#32 + ld1 {v22.4s,v23.4s},[x7],#32 + ld1 {v7.4s},[x7] + add x7,x3,#32 + mov w6,w5 + csel x12,xzr,x12,lo +#ifndef __ARMEB__ + rev w8, w8 +#endif + orr v1.16b,v0.16b,v0.16b + add w10, w8, #1 + orr v18.16b,v0.16b,v0.16b + add w8, w8, #2 + orr v6.16b,v0.16b,v0.16b + rev w10, w10 + mov v1.s[3],w10 + b.ls Lctr32_tail + rev w12, w8 + sub x2,x2,#3 // bias + mov v18.s[3],w12 + b Loop3x_ctr32 + +.align 4 +Loop3x_ctr32: + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + aese v1.16b,v16.16b + aesmc v1.16b,v1.16b + aese v18.16b,v16.16b + aesmc v18.16b,v18.16b + ld1 {v16.4s},[x7],#16 + subs w6,w6,#2 + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + aese v1.16b,v17.16b + aesmc v1.16b,v1.16b + aese v18.16b,v17.16b + aesmc v18.16b,v18.16b + ld1 {v17.4s},[x7],#16 + b.gt Loop3x_ctr32 + + aese v0.16b,v16.16b + aesmc v4.16b,v0.16b + aese v1.16b,v16.16b + aesmc v5.16b,v1.16b + ld1 {v2.16b},[x0],#16 + orr v0.16b,v6.16b,v6.16b + aese v18.16b,v16.16b + aesmc v18.16b,v18.16b + ld1 {v3.16b},[x0],#16 + orr v1.16b,v6.16b,v6.16b + aese v4.16b,v17.16b + aesmc v4.16b,v4.16b + aese v5.16b,v17.16b + aesmc v5.16b,v5.16b + ld1 {v19.16b},[x0],#16 + mov x7,x3 + aese v18.16b,v17.16b + aesmc v17.16b,v18.16b + orr v18.16b,v6.16b,v6.16b + add w9,w8,#1 + aese v4.16b,v20.16b + aesmc v4.16b,v4.16b + aese v5.16b,v20.16b + aesmc v5.16b,v5.16b + eor v2.16b,v2.16b,v7.16b + add w10,w8,#2 + aese v17.16b,v20.16b + aesmc v17.16b,v17.16b + eor v3.16b,v3.16b,v7.16b + add w8,w8,#3 + aese v4.16b,v21.16b + aesmc v4.16b,v4.16b + aese v5.16b,v21.16b + aesmc v5.16b,v5.16b + eor v19.16b,v19.16b,v7.16b + rev w9,w9 + aese v17.16b,v21.16b + aesmc v17.16b,v17.16b + mov v0.s[3], w9 + rev w10,w10 + aese v4.16b,v22.16b + aesmc v4.16b,v4.16b + aese v5.16b,v22.16b + aesmc v5.16b,v5.16b + mov v1.s[3], w10 + rev w12,w8 + aese v17.16b,v22.16b + aesmc v17.16b,v17.16b + mov v18.s[3], w12 + subs x2,x2,#3 + aese v4.16b,v23.16b + aese v5.16b,v23.16b + aese v17.16b,v23.16b + + eor v2.16b,v2.16b,v4.16b + ld1 {v16.4s},[x7],#16 // re-pre-load rndkey[0] + st1 {v2.16b},[x1],#16 + eor v3.16b,v3.16b,v5.16b + mov w6,w5 + st1 {v3.16b},[x1],#16 + eor v19.16b,v19.16b,v17.16b + ld1 {v17.4s},[x7],#16 // re-pre-load rndkey[1] + st1 {v19.16b},[x1],#16 + b.hs Loop3x_ctr32 + + adds x2,x2,#3 + b.eq Lctr32_done + cmp x2,#1 + mov x12,#16 + csel x12,xzr,x12,eq + +Lctr32_tail: + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + aese v1.16b,v16.16b + aesmc v1.16b,v1.16b + ld1 {v16.4s},[x7],#16 + subs w6,w6,#2 + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + aese v1.16b,v17.16b + aesmc v1.16b,v1.16b + ld1 {v17.4s},[x7],#16 + b.gt Lctr32_tail + + aese v0.16b,v16.16b + aesmc v0.16b,v0.16b + aese v1.16b,v16.16b + aesmc v1.16b,v1.16b + aese v0.16b,v17.16b + aesmc v0.16b,v0.16b + aese v1.16b,v17.16b + aesmc v1.16b,v1.16b + ld1 {v2.16b},[x0],x12 + aese v0.16b,v20.16b + aesmc v0.16b,v0.16b + aese v1.16b,v20.16b + aesmc v1.16b,v1.16b + ld1 {v3.16b},[x0] + aese v0.16b,v21.16b + aesmc v0.16b,v0.16b + aese v1.16b,v21.16b + aesmc v1.16b,v1.16b + eor v2.16b,v2.16b,v7.16b + aese v0.16b,v22.16b + aesmc v0.16b,v0.16b + aese v1.16b,v22.16b + aesmc v1.16b,v1.16b + eor v3.16b,v3.16b,v7.16b + aese v0.16b,v23.16b + aese v1.16b,v23.16b + + cmp x2,#1 + eor v2.16b,v2.16b,v0.16b + eor v3.16b,v3.16b,v1.16b + st1 {v2.16b},[x1],#16 + b.eq Lctr32_done + st1 {v3.16b},[x1] + +Lctr32_done: + ldr x29,[sp],#16 + ret + +#endif diff --git a/vere/ext/openssl/gen/macos-aarch64/crypto/aes/vpaes-armv8.S b/vere/ext/openssl/gen/macos-aarch64/crypto/aes/vpaes-armv8.S new file mode 100644 index 0000000..385fa63 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/crypto/aes/vpaes-armv8.S @@ -0,0 +1,1196 @@ +.text + + +.align 7 // totally strategic alignment +_vpaes_consts: +Lk_mc_forward: // mc_forward +.quad 0x0407060500030201, 0x0C0F0E0D080B0A09 +.quad 0x080B0A0904070605, 0x000302010C0F0E0D +.quad 0x0C0F0E0D080B0A09, 0x0407060500030201 +.quad 0x000302010C0F0E0D, 0x080B0A0904070605 +Lk_mc_backward: // mc_backward +.quad 0x0605040702010003, 0x0E0D0C0F0A09080B +.quad 0x020100030E0D0C0F, 0x0A09080B06050407 +.quad 0x0E0D0C0F0A09080B, 0x0605040702010003 +.quad 0x0A09080B06050407, 0x020100030E0D0C0F +Lk_sr: // sr +.quad 0x0706050403020100, 0x0F0E0D0C0B0A0908 +.quad 0x030E09040F0A0500, 0x0B06010C07020D08 +.quad 0x0F060D040B020900, 0x070E050C030A0108 +.quad 0x0B0E0104070A0D00, 0x0306090C0F020508 + +// +// "Hot" constants +// +Lk_inv: // inv, inva +.quad 0x0E05060F0D080180, 0x040703090A0B0C02 +.quad 0x01040A060F0B0780, 0x030D0E0C02050809 +Lk_ipt: // input transform (lo, hi) +.quad 0xC2B2E8985A2A7000, 0xCABAE09052227808 +.quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81 +Lk_sbo: // sbou, sbot +.quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878 +.quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA +Lk_sb1: // sb1u, sb1t +.quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF +.quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544 +Lk_sb2: // sb2u, sb2t +.quad 0x69EB88400AE12900, 0xC2A163C8AB82234A +.quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD + +// +// Decryption stuff +// +Lk_dipt: // decryption input transform +.quad 0x0F505B040B545F00, 0x154A411E114E451A +.quad 0x86E383E660056500, 0x12771772F491F194 +Lk_dsbo: // decryption sbox final output +.quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D +.quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C +Lk_dsb9: // decryption sbox output *9*u, *9*t +.quad 0x851C03539A86D600, 0xCAD51F504F994CC9 +.quad 0xC03B1789ECD74900, 0x725E2C9EB2FBA565 +Lk_dsbd: // decryption sbox output *D*u, *D*t +.quad 0x7D57CCDFE6B1A200, 0xF56E9B13882A4439 +.quad 0x3CE2FAF724C6CB00, 0x2931180D15DEEFD3 +Lk_dsbb: // decryption sbox output *B*u, *B*t +.quad 0xD022649296B44200, 0x602646F6B0F2D404 +.quad 0xC19498A6CD596700, 0xF3FF0C3E3255AA6B +Lk_dsbe: // decryption sbox output *E*u, *E*t +.quad 0x46F2929626D4D000, 0x2242600464B4F6B0 +.quad 0x0C55A6CDFFAAC100, 0x9467F36B98593E32 + +// +// Key schedule constants +// +Lk_dksd: // decryption key schedule: invskew x*D +.quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9 +.quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E +Lk_dksb: // decryption key schedule: invskew x*B +.quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99 +.quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8 +Lk_dkse: // decryption key schedule: invskew x*E + 0x63 +.quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086 +.quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487 +Lk_dks9: // decryption key schedule: invskew x*9 +.quad 0xB6116FC87ED9A700, 0x4AED933482255BFC +.quad 0x4576516227143300, 0x8BB89FACE9DAFDCE + +Lk_rcon: // rcon +.quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81 + +Lk_opt: // output transform +.quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808 +.quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0 +Lk_deskew: // deskew tables: inverts the sbox's "skew" +.quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A +.quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77 + +.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,65,82,77,118,56,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 +.align 2 + +.align 6 +## +## _aes_preheat +## +## Fills register %r10 -> .aes_consts (so you can -fPIC) +## and %xmm9-%xmm15 as specified below. +## + +.align 4 +_vpaes_encrypt_preheat: + adr x10, Lk_inv + movi v17.16b, #0x0f + ld1 {v18.2d,v19.2d}, [x10],#32 // Lk_inv + ld1 {v20.2d,v21.2d,v22.2d,v23.2d}, [x10],#64 // Lk_ipt, Lk_sbo + ld1 {v24.2d,v25.2d,v26.2d,v27.2d}, [x10] // Lk_sb1, Lk_sb2 + ret + + +## +## _aes_encrypt_core +## +## AES-encrypt %xmm0. +## +## Inputs: +## %xmm0 = input +## %xmm9-%xmm15 as in _vpaes_preheat +## (%rdx) = scheduled keys +## +## Output in %xmm0 +## Clobbers %xmm1-%xmm5, %r9, %r10, %r11, %rax +## Preserves %xmm6 - %xmm8 so you get some local vectors +## +## + +.align 4 +_vpaes_encrypt_core: + mov x9, x2 + ldr w8, [x2,#240] // pull rounds + adr x11, Lk_mc_forward+16 + // vmovdqa .Lk_ipt(%rip), %xmm2 # iptlo + ld1 {v16.2d}, [x9], #16 // vmovdqu (%r9), %xmm5 # round0 key + and v1.16b, v7.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v7.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + tbl v1.16b, {v20.16b}, v1.16b // vpshufb %xmm1, %xmm2, %xmm1 + // vmovdqa .Lk_ipt+16(%rip), %xmm3 # ipthi + tbl v2.16b, {v21.16b}, v0.16b // vpshufb %xmm0, %xmm3, %xmm2 + eor v0.16b, v1.16b, v16.16b // vpxor %xmm5, %xmm1, %xmm0 + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + b Lenc_entry + +.align 4 +Lenc_loop: + // middle of middle round + add x10, x11, #0x40 + tbl v4.16b, {v25.16b}, v2.16b // vpshufb %xmm2, %xmm13, %xmm4 # 4 = sb1u + ld1 {v1.2d}, [x11], #16 // vmovdqa -0x40(%r11,%r10), %xmm1 # Lk_mc_forward[] + tbl v0.16b, {v24.16b}, v3.16b // vpshufb %xmm3, %xmm12, %xmm0 # 0 = sb1t + eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k + tbl v5.16b, {v27.16b}, v2.16b // vpshufb %xmm2, %xmm15, %xmm5 # 4 = sb2u + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A + tbl v2.16b, {v26.16b}, v3.16b // vpshufb %xmm3, %xmm14, %xmm2 # 2 = sb2t + ld1 {v4.2d}, [x10] // vmovdqa (%r11,%r10), %xmm4 # Lk_mc_backward[] + tbl v3.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm3 # 0 = B + eor v2.16b, v2.16b, v5.16b // vpxor %xmm5, %xmm2, %xmm2 # 2 = 2A + tbl v0.16b, {v0.16b}, v4.16b // vpshufb %xmm4, %xmm0, %xmm0 # 3 = D + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 0 = 2A+B + tbl v4.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm4 # 0 = 2B+C + eor v0.16b, v0.16b, v3.16b // vpxor %xmm3, %xmm0, %xmm0 # 3 = 2A+B+D + and x11, x11, #~(1<<6) // and $0x30, %r11 # ... mod 4 + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = 2A+3B+C+D + sub w8, w8, #1 // nr-- + +Lenc_entry: + // top of round + and v1.16b, v0.16b, v17.16b // vpand %xmm0, %xmm9, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + tbl v5.16b, {v19.16b}, v1.16b // vpshufb %xmm1, %xmm11, %xmm5 # 2 = a/k + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + tbl v3.16b, {v18.16b}, v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + tbl v4.16b, {v18.16b}, v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + eor v3.16b, v3.16b, v5.16b // vpxor %xmm5, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + eor v4.16b, v4.16b, v5.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + tbl v2.16b, {v18.16b}, v3.16b // vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak + tbl v3.16b, {v18.16b}, v4.16b // vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak + eor v2.16b, v2.16b, v1.16b // vpxor %xmm1, %xmm2, %xmm2 # 2 = io + eor v3.16b, v3.16b, v0.16b // vpxor %xmm0, %xmm3, %xmm3 # 3 = jo + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm5 + cbnz w8, Lenc_loop + + // middle of last round + add x10, x11, #0x80 + // vmovdqa -0x60(%r10), %xmm4 # 3 : sbou .Lk_sbo + // vmovdqa -0x50(%r10), %xmm0 # 0 : sbot .Lk_sbo+16 + tbl v4.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou + ld1 {v1.2d}, [x10] // vmovdqa 0x40(%r11,%r10), %xmm1 # Lk_sr[] + tbl v0.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm0, %xmm0 # 0 = sb1t + eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A + tbl v0.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm0 + ret + + +.globl _vpaes_encrypt + +.align 4 +_vpaes_encrypt: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v7.16b}, [x0] + bl _vpaes_encrypt_preheat + bl _vpaes_encrypt_core + st1 {v0.16b}, [x1] + + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + + + +.align 4 +_vpaes_encrypt_2x: + mov x9, x2 + ldr w8, [x2,#240] // pull rounds + adr x11, Lk_mc_forward+16 + // vmovdqa .Lk_ipt(%rip), %xmm2 # iptlo + ld1 {v16.2d}, [x9], #16 // vmovdqu (%r9), %xmm5 # round0 key + and v1.16b, v14.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v14.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + and v9.16b, v15.16b, v17.16b + ushr v8.16b, v15.16b, #4 + tbl v1.16b, {v20.16b}, v1.16b // vpshufb %xmm1, %xmm2, %xmm1 + tbl v9.16b, {v20.16b}, v9.16b + // vmovdqa .Lk_ipt+16(%rip), %xmm3 # ipthi + tbl v2.16b, {v21.16b}, v0.16b // vpshufb %xmm0, %xmm3, %xmm2 + tbl v10.16b, {v21.16b}, v8.16b + eor v0.16b, v1.16b, v16.16b // vpxor %xmm5, %xmm1, %xmm0 + eor v8.16b, v9.16b, v16.16b + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + eor v8.16b, v8.16b, v10.16b + b Lenc_2x_entry + +.align 4 +Lenc_2x_loop: + // middle of middle round + add x10, x11, #0x40 + tbl v4.16b, {v25.16b}, v2.16b // vpshufb %xmm2, %xmm13, %xmm4 # 4 = sb1u + tbl v12.16b, {v25.16b}, v10.16b + ld1 {v1.2d}, [x11], #16 // vmovdqa -0x40(%r11,%r10), %xmm1 # Lk_mc_forward[] + tbl v0.16b, {v24.16b}, v3.16b // vpshufb %xmm3, %xmm12, %xmm0 # 0 = sb1t + tbl v8.16b, {v24.16b}, v11.16b + eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k + eor v12.16b, v12.16b, v16.16b + tbl v5.16b, {v27.16b}, v2.16b // vpshufb %xmm2, %xmm15, %xmm5 # 4 = sb2u + tbl v13.16b, {v27.16b}, v10.16b + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A + eor v8.16b, v8.16b, v12.16b + tbl v2.16b, {v26.16b}, v3.16b // vpshufb %xmm3, %xmm14, %xmm2 # 2 = sb2t + tbl v10.16b, {v26.16b}, v11.16b + ld1 {v4.2d}, [x10] // vmovdqa (%r11,%r10), %xmm4 # Lk_mc_backward[] + tbl v3.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm3 # 0 = B + tbl v11.16b, {v8.16b}, v1.16b + eor v2.16b, v2.16b, v5.16b // vpxor %xmm5, %xmm2, %xmm2 # 2 = 2A + eor v10.16b, v10.16b, v13.16b + tbl v0.16b, {v0.16b}, v4.16b // vpshufb %xmm4, %xmm0, %xmm0 # 3 = D + tbl v8.16b, {v8.16b}, v4.16b + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 0 = 2A+B + eor v11.16b, v11.16b, v10.16b + tbl v4.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm4 # 0 = 2B+C + tbl v12.16b, {v11.16b},v1.16b + eor v0.16b, v0.16b, v3.16b // vpxor %xmm3, %xmm0, %xmm0 # 3 = 2A+B+D + eor v8.16b, v8.16b, v11.16b + and x11, x11, #~(1<<6) // and $0x30, %r11 # ... mod 4 + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = 2A+3B+C+D + eor v8.16b, v8.16b, v12.16b + sub w8, w8, #1 // nr-- + +Lenc_2x_entry: + // top of round + and v1.16b, v0.16b, v17.16b // vpand %xmm0, %xmm9, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + and v9.16b, v8.16b, v17.16b + ushr v8.16b, v8.16b, #4 + tbl v5.16b, {v19.16b},v1.16b // vpshufb %xmm1, %xmm11, %xmm5 # 2 = a/k + tbl v13.16b, {v19.16b},v9.16b + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + eor v9.16b, v9.16b, v8.16b + tbl v3.16b, {v18.16b},v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + tbl v11.16b, {v18.16b},v8.16b + tbl v4.16b, {v18.16b},v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + tbl v12.16b, {v18.16b},v9.16b + eor v3.16b, v3.16b, v5.16b // vpxor %xmm5, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + eor v11.16b, v11.16b, v13.16b + eor v4.16b, v4.16b, v5.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + eor v12.16b, v12.16b, v13.16b + tbl v2.16b, {v18.16b},v3.16b // vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak + tbl v10.16b, {v18.16b},v11.16b + tbl v3.16b, {v18.16b},v4.16b // vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak + tbl v11.16b, {v18.16b},v12.16b + eor v2.16b, v2.16b, v1.16b // vpxor %xmm1, %xmm2, %xmm2 # 2 = io + eor v10.16b, v10.16b, v9.16b + eor v3.16b, v3.16b, v0.16b // vpxor %xmm0, %xmm3, %xmm3 # 3 = jo + eor v11.16b, v11.16b, v8.16b + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm5 + cbnz w8, Lenc_2x_loop + + // middle of last round + add x10, x11, #0x80 + // vmovdqa -0x60(%r10), %xmm4 # 3 : sbou .Lk_sbo + // vmovdqa -0x50(%r10), %xmm0 # 0 : sbot .Lk_sbo+16 + tbl v4.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou + tbl v12.16b, {v22.16b}, v10.16b + ld1 {v1.2d}, [x10] // vmovdqa 0x40(%r11,%r10), %xmm1 # Lk_sr[] + tbl v0.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm0, %xmm0 # 0 = sb1t + tbl v8.16b, {v23.16b}, v11.16b + eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k + eor v12.16b, v12.16b, v16.16b + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A + eor v8.16b, v8.16b, v12.16b + tbl v0.16b, {v0.16b},v1.16b // vpshufb %xmm1, %xmm0, %xmm0 + tbl v1.16b, {v8.16b},v1.16b + ret + + + +.align 4 +_vpaes_decrypt_preheat: + adr x10, Lk_inv + movi v17.16b, #0x0f + adr x11, Lk_dipt + ld1 {v18.2d,v19.2d}, [x10],#32 // Lk_inv + ld1 {v20.2d,v21.2d,v22.2d,v23.2d}, [x11],#64 // Lk_dipt, Lk_dsbo + ld1 {v24.2d,v25.2d,v26.2d,v27.2d}, [x11],#64 // Lk_dsb9, Lk_dsbd + ld1 {v28.2d,v29.2d,v30.2d,v31.2d}, [x11] // Lk_dsbb, Lk_dsbe + ret + + +## +## Decryption core +## +## Same API as encryption core. +## + +.align 4 +_vpaes_decrypt_core: + mov x9, x2 + ldr w8, [x2,#240] // pull rounds + + // vmovdqa .Lk_dipt(%rip), %xmm2 # iptlo + lsl x11, x8, #4 // mov %rax, %r11; shl $4, %r11 + eor x11, x11, #0x30 // xor $0x30, %r11 + adr x10, Lk_sr + and x11, x11, #0x30 // and $0x30, %r11 + add x11, x11, x10 + adr x10, Lk_mc_forward+48 + + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm4 # round0 key + and v1.16b, v7.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v7.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + tbl v2.16b, {v20.16b}, v1.16b // vpshufb %xmm1, %xmm2, %xmm2 + ld1 {v5.2d}, [x10] // vmovdqa Lk_mc_forward+48(%rip), %xmm5 + // vmovdqa .Lk_dipt+16(%rip), %xmm1 # ipthi + tbl v0.16b, {v21.16b}, v0.16b // vpshufb %xmm0, %xmm1, %xmm0 + eor v2.16b, v2.16b, v16.16b // vpxor %xmm4, %xmm2, %xmm2 + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + b Ldec_entry + +.align 4 +Ldec_loop: +// +// Inverse mix columns +// + // vmovdqa -0x20(%r10),%xmm4 # 4 : sb9u + // vmovdqa -0x10(%r10),%xmm1 # 0 : sb9t + tbl v4.16b, {v24.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sb9u + tbl v1.16b, {v25.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sb9t + eor v0.16b, v4.16b, v16.16b // vpxor %xmm4, %xmm0, %xmm0 + // vmovdqa 0x00(%r10),%xmm4 # 4 : sbdu + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + // vmovdqa 0x10(%r10),%xmm1 # 0 : sbdt + + tbl v4.16b, {v26.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbdu + tbl v0.16b, {v0.16b}, v5.16b // vpshufb %xmm5, %xmm0, %xmm0 # MC ch + tbl v1.16b, {v27.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sbdt + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 4 = ch + // vmovdqa 0x20(%r10), %xmm4 # 4 : sbbu + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + // vmovdqa 0x30(%r10), %xmm1 # 0 : sbbt + + tbl v4.16b, {v28.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbbu + tbl v0.16b, {v0.16b}, v5.16b // vpshufb %xmm5, %xmm0, %xmm0 # MC ch + tbl v1.16b, {v29.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sbbt + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 4 = ch + // vmovdqa 0x40(%r10), %xmm4 # 4 : sbeu + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + // vmovdqa 0x50(%r10), %xmm1 # 0 : sbet + + tbl v4.16b, {v30.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbeu + tbl v0.16b, {v0.16b}, v5.16b // vpshufb %xmm5, %xmm0, %xmm0 # MC ch + tbl v1.16b, {v31.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sbet + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 4 = ch + ext v5.16b, v5.16b, v5.16b, #12 // vpalignr $12, %xmm5, %xmm5, %xmm5 + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + sub w8, w8, #1 // sub $1,%rax # nr-- + +Ldec_entry: + // top of round + and v1.16b, v0.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + tbl v2.16b, {v19.16b}, v1.16b // vpshufb %xmm1, %xmm11, %xmm2 # 2 = a/k + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + tbl v3.16b, {v18.16b}, v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + tbl v4.16b, {v18.16b}, v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + eor v4.16b, v4.16b, v2.16b // vpxor %xmm2, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + tbl v2.16b, {v18.16b}, v3.16b // vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak + tbl v3.16b, {v18.16b}, v4.16b // vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak + eor v2.16b, v2.16b, v1.16b // vpxor %xmm1, %xmm2, %xmm2 # 2 = io + eor v3.16b, v3.16b, v0.16b // vpxor %xmm0, %xmm3, %xmm3 # 3 = jo + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm0 + cbnz w8, Ldec_loop + + // middle of last round + // vmovdqa 0x60(%r10), %xmm4 # 3 : sbou + tbl v4.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou + // vmovdqa 0x70(%r10), %xmm1 # 0 : sbot + ld1 {v2.2d}, [x11] // vmovdqa -0x160(%r11), %xmm2 # Lk_sr-Lk_dsbd=-0x160 + tbl v1.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sb1t + eor v4.16b, v4.16b, v16.16b // vpxor %xmm0, %xmm4, %xmm4 # 4 = sb1u + k + eor v0.16b, v1.16b, v4.16b // vpxor %xmm4, %xmm1, %xmm0 # 0 = A + tbl v0.16b, {v0.16b}, v2.16b // vpshufb %xmm2, %xmm0, %xmm0 + ret + + +.globl _vpaes_decrypt + +.align 4 +_vpaes_decrypt: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v7.16b}, [x0] + bl _vpaes_decrypt_preheat + bl _vpaes_decrypt_core + st1 {v0.16b}, [x1] + + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + + +// v14-v15 input, v0-v1 output + +.align 4 +_vpaes_decrypt_2x: + mov x9, x2 + ldr w8, [x2,#240] // pull rounds + + // vmovdqa .Lk_dipt(%rip), %xmm2 # iptlo + lsl x11, x8, #4 // mov %rax, %r11; shl $4, %r11 + eor x11, x11, #0x30 // xor $0x30, %r11 + adr x10, Lk_sr + and x11, x11, #0x30 // and $0x30, %r11 + add x11, x11, x10 + adr x10, Lk_mc_forward+48 + + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm4 # round0 key + and v1.16b, v14.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v14.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + and v9.16b, v15.16b, v17.16b + ushr v8.16b, v15.16b, #4 + tbl v2.16b, {v20.16b},v1.16b // vpshufb %xmm1, %xmm2, %xmm2 + tbl v10.16b, {v20.16b},v9.16b + ld1 {v5.2d}, [x10] // vmovdqa Lk_mc_forward+48(%rip), %xmm5 + // vmovdqa .Lk_dipt+16(%rip), %xmm1 # ipthi + tbl v0.16b, {v21.16b},v0.16b // vpshufb %xmm0, %xmm1, %xmm0 + tbl v8.16b, {v21.16b},v8.16b + eor v2.16b, v2.16b, v16.16b // vpxor %xmm4, %xmm2, %xmm2 + eor v10.16b, v10.16b, v16.16b + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + eor v8.16b, v8.16b, v10.16b + b Ldec_2x_entry + +.align 4 +Ldec_2x_loop: +// +// Inverse mix columns +// + // vmovdqa -0x20(%r10),%xmm4 # 4 : sb9u + // vmovdqa -0x10(%r10),%xmm1 # 0 : sb9t + tbl v4.16b, {v24.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sb9u + tbl v12.16b, {v24.16b}, v10.16b + tbl v1.16b, {v25.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sb9t + tbl v9.16b, {v25.16b}, v11.16b + eor v0.16b, v4.16b, v16.16b // vpxor %xmm4, %xmm0, %xmm0 + eor v8.16b, v12.16b, v16.16b + // vmovdqa 0x00(%r10),%xmm4 # 4 : sbdu + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + eor v8.16b, v8.16b, v9.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + // vmovdqa 0x10(%r10),%xmm1 # 0 : sbdt + + tbl v4.16b, {v26.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbdu + tbl v12.16b, {v26.16b}, v10.16b + tbl v0.16b, {v0.16b},v5.16b // vpshufb %xmm5, %xmm0, %xmm0 # MC ch + tbl v8.16b, {v8.16b},v5.16b + tbl v1.16b, {v27.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sbdt + tbl v9.16b, {v27.16b}, v11.16b + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 4 = ch + eor v8.16b, v8.16b, v12.16b + // vmovdqa 0x20(%r10), %xmm4 # 4 : sbbu + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + eor v8.16b, v8.16b, v9.16b + // vmovdqa 0x30(%r10), %xmm1 # 0 : sbbt + + tbl v4.16b, {v28.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbbu + tbl v12.16b, {v28.16b}, v10.16b + tbl v0.16b, {v0.16b},v5.16b // vpshufb %xmm5, %xmm0, %xmm0 # MC ch + tbl v8.16b, {v8.16b},v5.16b + tbl v1.16b, {v29.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sbbt + tbl v9.16b, {v29.16b}, v11.16b + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 4 = ch + eor v8.16b, v8.16b, v12.16b + // vmovdqa 0x40(%r10), %xmm4 # 4 : sbeu + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + eor v8.16b, v8.16b, v9.16b + // vmovdqa 0x50(%r10), %xmm1 # 0 : sbet + + tbl v4.16b, {v30.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbeu + tbl v12.16b, {v30.16b}, v10.16b + tbl v0.16b, {v0.16b},v5.16b // vpshufb %xmm5, %xmm0, %xmm0 # MC ch + tbl v8.16b, {v8.16b},v5.16b + tbl v1.16b, {v31.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sbet + tbl v9.16b, {v31.16b}, v11.16b + eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 4 = ch + eor v8.16b, v8.16b, v12.16b + ext v5.16b, v5.16b, v5.16b, #12 // vpalignr $12, %xmm5, %xmm5, %xmm5 + eor v0.16b, v0.16b, v1.16b // vpxor %xmm1, %xmm0, %xmm0 # 0 = ch + eor v8.16b, v8.16b, v9.16b + sub w8, w8, #1 // sub $1,%rax # nr-- + +Ldec_2x_entry: + // top of round + and v1.16b, v0.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + and v9.16b, v8.16b, v17.16b + ushr v8.16b, v8.16b, #4 + tbl v2.16b, {v19.16b},v1.16b // vpshufb %xmm1, %xmm11, %xmm2 # 2 = a/k + tbl v10.16b, {v19.16b},v9.16b + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + eor v9.16b, v9.16b, v8.16b + tbl v3.16b, {v18.16b},v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + tbl v11.16b, {v18.16b},v8.16b + tbl v4.16b, {v18.16b},v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + tbl v12.16b, {v18.16b},v9.16b + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + eor v11.16b, v11.16b, v10.16b + eor v4.16b, v4.16b, v2.16b // vpxor %xmm2, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + eor v12.16b, v12.16b, v10.16b + tbl v2.16b, {v18.16b},v3.16b // vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak + tbl v10.16b, {v18.16b},v11.16b + tbl v3.16b, {v18.16b},v4.16b // vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak + tbl v11.16b, {v18.16b},v12.16b + eor v2.16b, v2.16b, v1.16b // vpxor %xmm1, %xmm2, %xmm2 # 2 = io + eor v10.16b, v10.16b, v9.16b + eor v3.16b, v3.16b, v0.16b // vpxor %xmm0, %xmm3, %xmm3 # 3 = jo + eor v11.16b, v11.16b, v8.16b + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm0 + cbnz w8, Ldec_2x_loop + + // middle of last round + // vmovdqa 0x60(%r10), %xmm4 # 3 : sbou + tbl v4.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou + tbl v12.16b, {v22.16b}, v10.16b + // vmovdqa 0x70(%r10), %xmm1 # 0 : sbot + tbl v1.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm1, %xmm1 # 0 = sb1t + tbl v9.16b, {v23.16b}, v11.16b + ld1 {v2.2d}, [x11] // vmovdqa -0x160(%r11), %xmm2 # Lk_sr-Lk_dsbd=-0x160 + eor v4.16b, v4.16b, v16.16b // vpxor %xmm0, %xmm4, %xmm4 # 4 = sb1u + k + eor v12.16b, v12.16b, v16.16b + eor v0.16b, v1.16b, v4.16b // vpxor %xmm4, %xmm1, %xmm0 # 0 = A + eor v8.16b, v9.16b, v12.16b + tbl v0.16b, {v0.16b},v2.16b // vpshufb %xmm2, %xmm0, %xmm0 + tbl v1.16b, {v8.16b},v2.16b + ret + +######################################################## +## ## +## AES key schedule ## +## ## +######################################################## + +.align 4 +_vpaes_key_preheat: + adr x10, Lk_inv + movi v16.16b, #0x5b // Lk_s63 + adr x11, Lk_sb1 + movi v17.16b, #0x0f // Lk_s0F + ld1 {v18.2d,v19.2d,v20.2d,v21.2d}, [x10] // Lk_inv, Lk_ipt + adr x10, Lk_dksd + ld1 {v22.2d,v23.2d}, [x11] // Lk_sb1 + adr x11, Lk_mc_forward + ld1 {v24.2d,v25.2d,v26.2d,v27.2d}, [x10],#64 // Lk_dksd, Lk_dksb + ld1 {v28.2d,v29.2d,v30.2d,v31.2d}, [x10],#64 // Lk_dkse, Lk_dks9 + ld1 {v8.2d}, [x10] // Lk_rcon + ld1 {v9.2d}, [x11] // Lk_mc_forward[0] + ret + + + +.align 4 +_vpaes_schedule_core: +.long 0xd503233f // paciasp + stp x29, x30, [sp,#-16]! + add x29,sp,#0 + + bl _vpaes_key_preheat // load the tables + + ld1 {v0.16b}, [x0],#16 // vmovdqu (%rdi), %xmm0 # load key (unaligned) + + // input transform + mov v3.16b, v0.16b // vmovdqa %xmm0, %xmm3 + bl _vpaes_schedule_transform + mov v7.16b, v0.16b // vmovdqa %xmm0, %xmm7 + + adr x10, Lk_sr // lea Lk_sr(%rip),%r10 + add x8, x8, x10 + cbnz w3, Lschedule_am_decrypting + + // encrypting, output zeroth round key after transform + st1 {v0.2d}, [x2] // vmovdqu %xmm0, (%rdx) + b Lschedule_go + +Lschedule_am_decrypting: + // decrypting, output zeroth round key after shiftrows + ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10), %xmm1 + tbl v3.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 + st1 {v3.2d}, [x2] // vmovdqu %xmm3, (%rdx) + eor x8, x8, #0x30 // xor $0x30, %r8 + +Lschedule_go: + cmp w1, #192 // cmp $192, %esi + b.hi Lschedule_256 + b.eq Lschedule_192 + // 128: fall though + +## +## .schedule_128 +## +## 128-bit specific part of key schedule. +## +## This schedule is really simple, because all its parts +## are accomplished by the subroutines. +## +Lschedule_128: + mov x0, #10 // mov $10, %esi + +Loop_schedule_128: + sub x0, x0, #1 // dec %esi + bl _vpaes_schedule_round + cbz x0, Lschedule_mangle_last + bl _vpaes_schedule_mangle // write output + b Loop_schedule_128 + +## +## .aes_schedule_192 +## +## 192-bit specific part of key schedule. +## +## The main body of this schedule is the same as the 128-bit +## schedule, but with more smearing. The long, high side is +## stored in %xmm7 as before, and the short, low side is in +## the high bits of %xmm6. +## +## This schedule is somewhat nastier, however, because each +## round produces 192 bits of key material, or 1.5 round keys. +## Therefore, on each cycle we do 2 rounds and produce 3 round +## keys. +## +.align 4 +Lschedule_192: + sub x0, x0, #8 + ld1 {v0.16b}, [x0] // vmovdqu 8(%rdi),%xmm0 # load key part 2 (very unaligned) + bl _vpaes_schedule_transform // input transform + mov v6.16b, v0.16b // vmovdqa %xmm0, %xmm6 # save short part + eor v4.16b, v4.16b, v4.16b // vpxor %xmm4, %xmm4, %xmm4 # clear 4 + ins v6.d[0], v4.d[0] // vmovhlps %xmm4, %xmm6, %xmm6 # clobber low side with zeros + mov x0, #4 // mov $4, %esi + +Loop_schedule_192: + sub x0, x0, #1 // dec %esi + bl _vpaes_schedule_round + ext v0.16b, v6.16b, v0.16b, #8 // vpalignr $8,%xmm6,%xmm0,%xmm0 + bl _vpaes_schedule_mangle // save key n + bl _vpaes_schedule_192_smear + bl _vpaes_schedule_mangle // save key n+1 + bl _vpaes_schedule_round + cbz x0, Lschedule_mangle_last + bl _vpaes_schedule_mangle // save key n+2 + bl _vpaes_schedule_192_smear + b Loop_schedule_192 + +## +## .aes_schedule_256 +## +## 256-bit specific part of key schedule. +## +## The structure here is very similar to the 128-bit +## schedule, but with an additional "low side" in +## %xmm6. The low side's rounds are the same as the +## high side's, except no rcon and no rotation. +## +.align 4 +Lschedule_256: + ld1 {v0.16b}, [x0] // vmovdqu 16(%rdi),%xmm0 # load key part 2 (unaligned) + bl _vpaes_schedule_transform // input transform + mov x0, #7 // mov $7, %esi + +Loop_schedule_256: + sub x0, x0, #1 // dec %esi + bl _vpaes_schedule_mangle // output low result + mov v6.16b, v0.16b // vmovdqa %xmm0, %xmm6 # save cur_lo in xmm6 + + // high round + bl _vpaes_schedule_round + cbz x0, Lschedule_mangle_last + bl _vpaes_schedule_mangle + + // low round. swap xmm7 and xmm6 + dup v0.4s, v0.s[3] // vpshufd $0xFF, %xmm0, %xmm0 + movi v4.16b, #0 + mov v5.16b, v7.16b // vmovdqa %xmm7, %xmm5 + mov v7.16b, v6.16b // vmovdqa %xmm6, %xmm7 + bl _vpaes_schedule_low_round + mov v7.16b, v5.16b // vmovdqa %xmm5, %xmm7 + + b Loop_schedule_256 + +## +## .aes_schedule_mangle_last +## +## Mangler for last round of key schedule +## Mangles %xmm0 +## when encrypting, outputs out(%xmm0) ^ 63 +## when decrypting, outputs unskew(%xmm0) +## +## Always called right before return... jumps to cleanup and exits +## +.align 4 +Lschedule_mangle_last: + // schedule last round key from xmm0 + adr x11, Lk_deskew // lea Lk_deskew(%rip),%r11 # prepare to deskew + cbnz w3, Lschedule_mangle_last_dec + + // encrypting + ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10),%xmm1 + adr x11, Lk_opt // lea Lk_opt(%rip), %r11 # prepare to output transform + add x2, x2, #32 // add $32, %rdx + tbl v0.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm0 # output permute + +Lschedule_mangle_last_dec: + ld1 {v20.2d,v21.2d}, [x11] // reload constants + sub x2, x2, #16 // add $-16, %rdx + eor v0.16b, v0.16b, v16.16b // vpxor Lk_s63(%rip), %xmm0, %xmm0 + bl _vpaes_schedule_transform // output transform + st1 {v0.2d}, [x2] // vmovdqu %xmm0, (%rdx) # save last key + + // cleanup + eor v0.16b, v0.16b, v0.16b // vpxor %xmm0, %xmm0, %xmm0 + eor v1.16b, v1.16b, v1.16b // vpxor %xmm1, %xmm1, %xmm1 + eor v2.16b, v2.16b, v2.16b // vpxor %xmm2, %xmm2, %xmm2 + eor v3.16b, v3.16b, v3.16b // vpxor %xmm3, %xmm3, %xmm3 + eor v4.16b, v4.16b, v4.16b // vpxor %xmm4, %xmm4, %xmm4 + eor v5.16b, v5.16b, v5.16b // vpxor %xmm5, %xmm5, %xmm5 + eor v6.16b, v6.16b, v6.16b // vpxor %xmm6, %xmm6, %xmm6 + eor v7.16b, v7.16b, v7.16b // vpxor %xmm7, %xmm7, %xmm7 + ldp x29, x30, [sp],#16 +.long 0xd50323bf // autiasp + ret + + +## +## .aes_schedule_192_smear +## +## Smear the short, low side in the 192-bit key schedule. +## +## Inputs: +## %xmm7: high side, b a x y +## %xmm6: low side, d c 0 0 +## %xmm13: 0 +## +## Outputs: +## %xmm6: b+c+d b+c 0 0 +## %xmm0: b+c+d b+c b a +## + +.align 4 +_vpaes_schedule_192_smear: + movi v1.16b, #0 + dup v0.4s, v7.s[3] + ins v1.s[3], v6.s[2] // vpshufd $0x80, %xmm6, %xmm1 # d c 0 0 -> c 0 0 0 + ins v0.s[0], v7.s[2] // vpshufd $0xFE, %xmm7, %xmm0 # b a _ _ -> b b b a + eor v6.16b, v6.16b, v1.16b // vpxor %xmm1, %xmm6, %xmm6 # -> c+d c 0 0 + eor v1.16b, v1.16b, v1.16b // vpxor %xmm1, %xmm1, %xmm1 + eor v6.16b, v6.16b, v0.16b // vpxor %xmm0, %xmm6, %xmm6 # -> b+c+d b+c b a + mov v0.16b, v6.16b // vmovdqa %xmm6, %xmm0 + ins v6.d[0], v1.d[0] // vmovhlps %xmm1, %xmm6, %xmm6 # clobber low side with zeros + ret + + +## +## .aes_schedule_round +## +## Runs one main round of the key schedule on %xmm0, %xmm7 +## +## Specifically, runs subbytes on the high dword of %xmm0 +## then rotates it by one byte and xors into the low dword of +## %xmm7. +## +## Adds rcon from low byte of %xmm8, then rotates %xmm8 for +## next rcon. +## +## Smears the dwords of %xmm7 by xoring the low into the +## second low, result into third, result into highest. +## +## Returns results in %xmm7 = %xmm0. +## Clobbers %xmm1-%xmm4, %r11. +## + +.align 4 +_vpaes_schedule_round: + // extract rcon from xmm8 + movi v4.16b, #0 // vpxor %xmm4, %xmm4, %xmm4 + ext v1.16b, v8.16b, v4.16b, #15 // vpalignr $15, %xmm8, %xmm4, %xmm1 + ext v8.16b, v8.16b, v8.16b, #15 // vpalignr $15, %xmm8, %xmm8, %xmm8 + eor v7.16b, v7.16b, v1.16b // vpxor %xmm1, %xmm7, %xmm7 + + // rotate + dup v0.4s, v0.s[3] // vpshufd $0xFF, %xmm0, %xmm0 + ext v0.16b, v0.16b, v0.16b, #1 // vpalignr $1, %xmm0, %xmm0, %xmm0 + + // fall through... + + // low round: same as high round, but no rotation and no rcon. +_vpaes_schedule_low_round: + // smear xmm7 + ext v1.16b, v4.16b, v7.16b, #12 // vpslldq $4, %xmm7, %xmm1 + eor v7.16b, v7.16b, v1.16b // vpxor %xmm1, %xmm7, %xmm7 + ext v4.16b, v4.16b, v7.16b, #8 // vpslldq $8, %xmm7, %xmm4 + + // subbytes + and v1.16b, v0.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 # 0 = k + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 # 1 = i + eor v7.16b, v7.16b, v4.16b // vpxor %xmm4, %xmm7, %xmm7 + tbl v2.16b, {v19.16b}, v1.16b // vpshufb %xmm1, %xmm11, %xmm2 # 2 = a/k + eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j + tbl v3.16b, {v18.16b}, v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 3 = iak = 1/i + a/k + tbl v4.16b, {v18.16b}, v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j + eor v7.16b, v7.16b, v16.16b // vpxor Lk_s63(%rip), %xmm7, %xmm7 + tbl v3.16b, {v18.16b}, v3.16b // vpshufb %xmm3, %xmm10, %xmm3 # 2 = 1/iak + eor v4.16b, v4.16b, v2.16b // vpxor %xmm2, %xmm4, %xmm4 # 4 = jak = 1/j + a/k + tbl v2.16b, {v18.16b}, v4.16b // vpshufb %xmm4, %xmm10, %xmm2 # 3 = 1/jak + eor v3.16b, v3.16b, v1.16b // vpxor %xmm1, %xmm3, %xmm3 # 2 = io + eor v2.16b, v2.16b, v0.16b // vpxor %xmm0, %xmm2, %xmm2 # 3 = jo + tbl v4.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm13, %xmm4 # 4 = sbou + tbl v1.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm12, %xmm1 # 0 = sb1t + eor v1.16b, v1.16b, v4.16b // vpxor %xmm4, %xmm1, %xmm1 # 0 = sbox output + + // add in smeared stuff + eor v0.16b, v1.16b, v7.16b // vpxor %xmm7, %xmm1, %xmm0 + eor v7.16b, v1.16b, v7.16b // vmovdqa %xmm0, %xmm7 + ret + + +## +## .aes_schedule_transform +## +## Linear-transform %xmm0 according to tables at (%r11) +## +## Requires that %xmm9 = 0x0F0F... as in preheat +## Output in %xmm0 +## Clobbers %xmm1, %xmm2 +## + +.align 4 +_vpaes_schedule_transform: + and v1.16b, v0.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 + ushr v0.16b, v0.16b, #4 // vpsrlb $4, %xmm0, %xmm0 + // vmovdqa (%r11), %xmm2 # lo + tbl v2.16b, {v20.16b}, v1.16b // vpshufb %xmm1, %xmm2, %xmm2 + // vmovdqa 16(%r11), %xmm1 # hi + tbl v0.16b, {v21.16b}, v0.16b // vpshufb %xmm0, %xmm1, %xmm0 + eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 + ret + + +## +## .aes_schedule_mangle +## +## Mangle xmm0 from (basis-transformed) standard version +## to our version. +## +## On encrypt, +## xor with 0x63 +## multiply by circulant 0,1,1,1 +## apply shiftrows transform +## +## On decrypt, +## xor with 0x63 +## multiply by "inverse mixcolumns" circulant E,B,D,9 +## deskew +## apply shiftrows transform +## +## +## Writes out to (%rdx), and increments or decrements it +## Keeps track of round number mod 4 in %r8 +## Preserves xmm0 +## Clobbers xmm1-xmm5 +## + +.align 4 +_vpaes_schedule_mangle: + mov v4.16b, v0.16b // vmovdqa %xmm0, %xmm4 # save xmm0 for later + // vmovdqa .Lk_mc_forward(%rip),%xmm5 + cbnz w3, Lschedule_mangle_dec + + // encrypting + eor v4.16b, v0.16b, v16.16b // vpxor Lk_s63(%rip), %xmm0, %xmm4 + add x2, x2, #16 // add $16, %rdx + tbl v4.16b, {v4.16b}, v9.16b // vpshufb %xmm5, %xmm4, %xmm4 + tbl v1.16b, {v4.16b}, v9.16b // vpshufb %xmm5, %xmm4, %xmm1 + tbl v3.16b, {v1.16b}, v9.16b // vpshufb %xmm5, %xmm1, %xmm3 + eor v4.16b, v4.16b, v1.16b // vpxor %xmm1, %xmm4, %xmm4 + ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10), %xmm1 + eor v3.16b, v3.16b, v4.16b // vpxor %xmm4, %xmm3, %xmm3 + + b Lschedule_mangle_both +.align 4 +Lschedule_mangle_dec: + // inverse mix columns + // lea .Lk_dksd(%rip),%r11 + ushr v1.16b, v4.16b, #4 // vpsrlb $4, %xmm4, %xmm1 # 1 = hi + and v4.16b, v4.16b, v17.16b // vpand %xmm9, %xmm4, %xmm4 # 4 = lo + + // vmovdqa 0x00(%r11), %xmm2 + tbl v2.16b, {v24.16b}, v4.16b // vpshufb %xmm4, %xmm2, %xmm2 + // vmovdqa 0x10(%r11), %xmm3 + tbl v3.16b, {v25.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 + tbl v3.16b, {v3.16b}, v9.16b // vpshufb %xmm5, %xmm3, %xmm3 + + // vmovdqa 0x20(%r11), %xmm2 + tbl v2.16b, {v26.16b}, v4.16b // vpshufb %xmm4, %xmm2, %xmm2 + eor v2.16b, v2.16b, v3.16b // vpxor %xmm3, %xmm2, %xmm2 + // vmovdqa 0x30(%r11), %xmm3 + tbl v3.16b, {v27.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 + tbl v3.16b, {v3.16b}, v9.16b // vpshufb %xmm5, %xmm3, %xmm3 + + // vmovdqa 0x40(%r11), %xmm2 + tbl v2.16b, {v28.16b}, v4.16b // vpshufb %xmm4, %xmm2, %xmm2 + eor v2.16b, v2.16b, v3.16b // vpxor %xmm3, %xmm2, %xmm2 + // vmovdqa 0x50(%r11), %xmm3 + tbl v3.16b, {v29.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 + eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 + + // vmovdqa 0x60(%r11), %xmm2 + tbl v2.16b, {v30.16b}, v4.16b // vpshufb %xmm4, %xmm2, %xmm2 + tbl v3.16b, {v3.16b}, v9.16b // vpshufb %xmm5, %xmm3, %xmm3 + // vmovdqa 0x70(%r11), %xmm4 + tbl v4.16b, {v31.16b}, v1.16b // vpshufb %xmm1, %xmm4, %xmm4 + ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10), %xmm1 + eor v2.16b, v2.16b, v3.16b // vpxor %xmm3, %xmm2, %xmm2 + eor v3.16b, v4.16b, v2.16b // vpxor %xmm2, %xmm4, %xmm3 + + sub x2, x2, #16 // add $-16, %rdx + +Lschedule_mangle_both: + tbl v3.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 + add x8, x8, #64-16 // add $-16, %r8 + and x8, x8, #~(1<<6) // and $0x30, %r8 + st1 {v3.2d}, [x2] // vmovdqu %xmm3, (%rdx) + ret + + +.globl _vpaes_set_encrypt_key + +.align 4 +_vpaes_set_encrypt_key: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + stp d8,d9,[sp,#-16]! // ABI spec says so + + lsr w9, w1, #5 // shr $5,%eax + add w9, w9, #5 // $5,%eax + str w9, [x2,#240] // mov %eax,240(%rdx) # AES_KEY->rounds = nbits/32+5; + + mov w3, #0 // mov $0,%ecx + mov x8, #0x30 // mov $0x30,%r8d + bl _vpaes_schedule_core + eor x0, x0, x0 + + ldp d8,d9,[sp],#16 + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + + +.globl _vpaes_set_decrypt_key + +.align 4 +_vpaes_set_decrypt_key: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + stp d8,d9,[sp,#-16]! // ABI spec says so + + lsr w9, w1, #5 // shr $5,%eax + add w9, w9, #5 // $5,%eax + str w9, [x2,#240] // mov %eax,240(%rdx) # AES_KEY->rounds = nbits/32+5; + lsl w9, w9, #4 // shl $4,%eax + add x2, x2, #16 // lea 16(%rdx,%rax),%rdx + add x2, x2, x9 + + mov w3, #1 // mov $1,%ecx + lsr w8, w1, #1 // shr $1,%r8d + and x8, x8, #32 // and $32,%r8d + eor x8, x8, #32 // xor $32,%r8d # nbits==192?0:32 + bl _vpaes_schedule_core + + ldp d8,d9,[sp],#16 + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + +.globl _vpaes_cbc_encrypt + +.align 4 +_vpaes_cbc_encrypt: + cbz x2, Lcbc_abort + cmp w5, #0 // check direction + b.eq vpaes_cbc_decrypt + +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + mov x17, x2 // reassign + mov x2, x3 // reassign + + ld1 {v0.16b}, [x4] // load ivec + bl _vpaes_encrypt_preheat + b Lcbc_enc_loop + +.align 4 +Lcbc_enc_loop: + ld1 {v7.16b}, [x0],#16 // load input + eor v7.16b, v7.16b, v0.16b // xor with ivec + bl _vpaes_encrypt_core + st1 {v0.16b}, [x1],#16 // save output + subs x17, x17, #16 + b.hi Lcbc_enc_loop + + st1 {v0.16b}, [x4] // write ivec + + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp +Lcbc_abort: + ret + + + +.align 4 +vpaes_cbc_decrypt: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + stp d8,d9,[sp,#-16]! // ABI spec says so + stp d10,d11,[sp,#-16]! + stp d12,d13,[sp,#-16]! + stp d14,d15,[sp,#-16]! + + mov x17, x2 // reassign + mov x2, x3 // reassign + ld1 {v6.16b}, [x4] // load ivec + bl _vpaes_decrypt_preheat + tst x17, #16 + b.eq Lcbc_dec_loop2x + + ld1 {v7.16b}, [x0], #16 // load input + bl _vpaes_decrypt_core + eor v0.16b, v0.16b, v6.16b // xor with ivec + orr v6.16b, v7.16b, v7.16b // next ivec value + st1 {v0.16b}, [x1], #16 + subs x17, x17, #16 + b.ls Lcbc_dec_done + +.align 4 +Lcbc_dec_loop2x: + ld1 {v14.16b,v15.16b}, [x0], #32 + bl _vpaes_decrypt_2x + eor v0.16b, v0.16b, v6.16b // xor with ivec + eor v1.16b, v1.16b, v14.16b + orr v6.16b, v15.16b, v15.16b + st1 {v0.16b,v1.16b}, [x1], #32 + subs x17, x17, #32 + b.hi Lcbc_dec_loop2x + +Lcbc_dec_done: + st1 {v6.16b}, [x4] + + ldp d14,d15,[sp],#16 + ldp d12,d13,[sp],#16 + ldp d10,d11,[sp],#16 + ldp d8,d9,[sp],#16 + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + +.globl _vpaes_ecb_encrypt + +.align 4 +_vpaes_ecb_encrypt: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + stp d8,d9,[sp,#-16]! // ABI spec says so + stp d10,d11,[sp,#-16]! + stp d12,d13,[sp,#-16]! + stp d14,d15,[sp,#-16]! + + mov x17, x2 + mov x2, x3 + bl _vpaes_encrypt_preheat + tst x17, #16 + b.eq Lecb_enc_loop + + ld1 {v7.16b}, [x0],#16 + bl _vpaes_encrypt_core + st1 {v0.16b}, [x1],#16 + subs x17, x17, #16 + b.ls Lecb_enc_done + +.align 4 +Lecb_enc_loop: + ld1 {v14.16b,v15.16b}, [x0], #32 + bl _vpaes_encrypt_2x + st1 {v0.16b,v1.16b}, [x1], #32 + subs x17, x17, #32 + b.hi Lecb_enc_loop + +Lecb_enc_done: + ldp d14,d15,[sp],#16 + ldp d12,d13,[sp],#16 + ldp d10,d11,[sp],#16 + ldp d8,d9,[sp],#16 + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + + +.globl _vpaes_ecb_decrypt + +.align 4 +_vpaes_ecb_decrypt: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + stp d8,d9,[sp,#-16]! // ABI spec says so + stp d10,d11,[sp,#-16]! + stp d12,d13,[sp,#-16]! + stp d14,d15,[sp,#-16]! + + mov x17, x2 + mov x2, x3 + bl _vpaes_decrypt_preheat + tst x17, #16 + b.eq Lecb_dec_loop + + ld1 {v7.16b}, [x0],#16 + bl _vpaes_encrypt_core + st1 {v0.16b}, [x1],#16 + subs x17, x17, #16 + b.ls Lecb_dec_done + +.align 4 +Lecb_dec_loop: + ld1 {v14.16b,v15.16b}, [x0], #32 + bl _vpaes_decrypt_2x + st1 {v0.16b,v1.16b}, [x1], #32 + subs x17, x17, #32 + b.hi Lecb_dec_loop + +Lecb_dec_done: + ldp d14,d15,[sp],#16 + ldp d12,d13,[sp],#16 + ldp d10,d11,[sp],#16 + ldp d8,d9,[sp],#16 + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + diff --git a/vere/ext/openssl/gen/macos-aarch64/crypto/arm64cpuid.S b/vere/ext/openssl/gen/macos-aarch64/crypto/arm64cpuid.S new file mode 100644 index 0000000..1db01c5 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/crypto/arm64cpuid.S @@ -0,0 +1,122 @@ +#include "arm_arch.h" + +.text + + +.align 5 +.globl __armv7_neon_probe + +__armv7_neon_probe: + orr v15.16b, v15.16b, v15.16b + ret + + +.globl __armv7_tick + +__armv7_tick: +#ifdef __APPLE__ + mrs x0, CNTPCT_EL0 +#else + mrs x0, CNTVCT_EL0 +#endif + ret + + +.globl __armv8_aes_probe + +__armv8_aes_probe: + aese v0.16b, v0.16b + ret + + +.globl __armv8_sha1_probe + +__armv8_sha1_probe: + sha1h s0, s0 + ret + + +.globl __armv8_sha256_probe + +__armv8_sha256_probe: + sha256su0 v0.4s, v0.4s + ret + + +.globl __armv8_pmull_probe + +__armv8_pmull_probe: + pmull v0.1q, v0.1d, v0.1d + ret + + +.globl __armv8_sha512_probe + +__armv8_sha512_probe: +.long 0xcec08000 // sha512su0 v0.2d,v0.2d + ret + + +.globl _OPENSSL_cleanse + +.align 5 +_OPENSSL_cleanse: + cbz x1,Lret // len==0? + cmp x1,#15 + b.hi Lot // len>15 + nop +Little: + strb wzr,[x0],#1 // store byte-by-byte + subs x1,x1,#1 + b.ne Little +Lret: ret + +.align 4 +Lot: tst x0,#7 + b.eq Laligned // inp is aligned + strb wzr,[x0],#1 // store byte-by-byte + sub x1,x1,#1 + b Lot + +.align 4 +Laligned: + str xzr,[x0],#8 // store word-by-word + sub x1,x1,#8 + tst x1,#-8 + b.ne Laligned // len>=8 + cbnz x1,Little // len!=0? + ret + + +.globl _CRYPTO_memcmp + +.align 4 +_CRYPTO_memcmp: + eor w3,w3,w3 + cbz x2,Lno_data // len==0? + cmp x2,#16 + b.ne Loop_cmp + ldp x8,x9,[x0] + ldp x10,x11,[x1] + eor x8,x8,x10 + eor x9,x9,x11 + orr x8,x8,x9 + mov x0,#1 + cmp x8,#0 + csel x0,xzr,x0,eq + ret + +.align 4 +Loop_cmp: + ldrb w4,[x0],#1 + ldrb w5,[x1],#1 + eor w4,w4,w5 + orr w3,w3,w4 + subs x2,x2,#1 + b.ne Loop_cmp + +Lno_data: + neg w0,w3 + lsr w0,w0,#31 + ret + diff --git a/vere/ext/openssl/gen/macos-aarch64/crypto/bn/armv8-mont.S b/vere/ext/openssl/gen/macos-aarch64/crypto/bn/armv8-mont.S new file mode 100644 index 0000000..f00b3f5 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/crypto/bn/armv8-mont.S @@ -0,0 +1,1408 @@ +.text + +.globl _bn_mul_mont + +.align 5 +_bn_mul_mont: + tst x5,#7 + b.eq __bn_sqr8x_mont + tst x5,#3 + b.eq __bn_mul4x_mont +Lmul_mont: + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + ldr x9,[x2],#8 // bp[0] + sub x22,sp,x5,lsl#3 + ldp x7,x8,[x1],#16 // ap[0..1] + lsl x5,x5,#3 + ldr x4,[x4] // *n0 + and x22,x22,#-16 // ABI says so + ldp x13,x14,[x3],#16 // np[0..1] + + mul x6,x7,x9 // ap[0]*bp[0] + sub x21,x5,#16 // j=num-2 + umulh x7,x7,x9 + mul x10,x8,x9 // ap[1]*bp[0] + umulh x11,x8,x9 + + mul x15,x6,x4 // "tp[0]"*n0 + mov sp,x22 // alloca + + // (*) mul x12,x13,x15 // np[0]*m1 + umulh x13,x13,x15 + mul x16,x14,x15 // np[1]*m1 + // (*) adds x12,x12,x6 // discarded + // (*) As for removal of first multiplication and addition + // instructions. The outcome of first addition is + // guaranteed to be zero, which leaves two computationally + // significant outcomes: it either carries or not. Then + // question is when does it carry? Is there alternative + // way to deduce it? If you follow operations, you can + // observe that condition for carry is quite simple: + // x6 being non-zero. So that carry can be calculated + // by adding -1 to x6. That's what next instruction does. + subs xzr,x6,#1 // (*) + umulh x17,x14,x15 + adc x13,x13,xzr + cbz x21,L1st_skip + +L1st: + ldr x8,[x1],#8 + adds x6,x10,x7 + sub x21,x21,#8 // j-- + adc x7,x11,xzr + + ldr x14,[x3],#8 + adds x12,x16,x13 + mul x10,x8,x9 // ap[j]*bp[0] + adc x13,x17,xzr + umulh x11,x8,x9 + + adds x12,x12,x6 + mul x16,x14,x15 // np[j]*m1 + adc x13,x13,xzr + umulh x17,x14,x15 + str x12,[x22],#8 // tp[j-1] + cbnz x21,L1st + +L1st_skip: + adds x6,x10,x7 + sub x1,x1,x5 // rewind x1 + adc x7,x11,xzr + + adds x12,x16,x13 + sub x3,x3,x5 // rewind x3 + adc x13,x17,xzr + + adds x12,x12,x6 + sub x20,x5,#8 // i=num-1 + adcs x13,x13,x7 + + adc x19,xzr,xzr // upmost overflow bit + stp x12,x13,[x22] + +Louter: + ldr x9,[x2],#8 // bp[i] + ldp x7,x8,[x1],#16 + ldr x23,[sp] // tp[0] + add x22,sp,#8 + + mul x6,x7,x9 // ap[0]*bp[i] + sub x21,x5,#16 // j=num-2 + umulh x7,x7,x9 + ldp x13,x14,[x3],#16 + mul x10,x8,x9 // ap[1]*bp[i] + adds x6,x6,x23 + umulh x11,x8,x9 + adc x7,x7,xzr + + mul x15,x6,x4 + sub x20,x20,#8 // i-- + + // (*) mul x12,x13,x15 // np[0]*m1 + umulh x13,x13,x15 + mul x16,x14,x15 // np[1]*m1 + // (*) adds x12,x12,x6 + subs xzr,x6,#1 // (*) + umulh x17,x14,x15 + cbz x21,Linner_skip + +Linner: + ldr x8,[x1],#8 + adc x13,x13,xzr + ldr x23,[x22],#8 // tp[j] + adds x6,x10,x7 + sub x21,x21,#8 // j-- + adc x7,x11,xzr + + adds x12,x16,x13 + ldr x14,[x3],#8 + adc x13,x17,xzr + + mul x10,x8,x9 // ap[j]*bp[i] + adds x6,x6,x23 + umulh x11,x8,x9 + adc x7,x7,xzr + + mul x16,x14,x15 // np[j]*m1 + adds x12,x12,x6 + umulh x17,x14,x15 + str x12,[x22,#-16] // tp[j-1] + cbnz x21,Linner + +Linner_skip: + ldr x23,[x22],#8 // tp[j] + adc x13,x13,xzr + adds x6,x10,x7 + sub x1,x1,x5 // rewind x1 + adc x7,x11,xzr + + adds x12,x16,x13 + sub x3,x3,x5 // rewind x3 + adcs x13,x17,x19 + adc x19,xzr,xzr + + adds x6,x6,x23 + adc x7,x7,xzr + + adds x12,x12,x6 + adcs x13,x13,x7 + adc x19,x19,xzr // upmost overflow bit + stp x12,x13,[x22,#-16] + + cbnz x20,Louter + + // Final step. We see if result is larger than modulus, and + // if it is, subtract the modulus. But comparison implies + // subtraction. So we subtract modulus, see if it borrowed, + // and conditionally copy original value. + ldr x23,[sp] // tp[0] + add x22,sp,#8 + ldr x14,[x3],#8 // np[0] + subs x21,x5,#8 // j=num-1 and clear borrow + mov x1,x0 +Lsub: + sbcs x8,x23,x14 // tp[j]-np[j] + ldr x23,[x22],#8 + sub x21,x21,#8 // j-- + ldr x14,[x3],#8 + str x8,[x1],#8 // rp[j]=tp[j]-np[j] + cbnz x21,Lsub + + sbcs x8,x23,x14 + sbcs x19,x19,xzr // did it borrow? + str x8,[x1],#8 // rp[num-1] + + ldr x23,[sp] // tp[0] + add x22,sp,#8 + ldr x8,[x0],#8 // rp[0] + sub x5,x5,#8 // num-- + nop +Lcond_copy: + sub x5,x5,#8 // num-- + csel x14,x23,x8,lo // did it borrow? + ldr x23,[x22],#8 + ldr x8,[x0],#8 + str xzr,[x22,#-16] // wipe tp + str x14,[x0,#-16] + cbnz x5,Lcond_copy + + csel x14,x23,x8,lo + str xzr,[x22,#-8] // wipe tp + str x14,[x0,#-8] + + ldp x19,x20,[x29,#16] + mov sp,x29 + ldp x21,x22,[x29,#32] + mov x0,#1 + ldp x23,x24,[x29,#48] + ldr x29,[sp],#64 + ret + + +.align 5 +__bn_sqr8x_mont: + cmp x1,x2 + b.ne __bn_mul4x_mont +Lsqr8x_mont: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + stp x0,x3,[sp,#96] // offload rp and np + + ldp x6,x7,[x1,#8*0] + ldp x8,x9,[x1,#8*2] + ldp x10,x11,[x1,#8*4] + ldp x12,x13,[x1,#8*6] + + sub x2,sp,x5,lsl#4 + lsl x5,x5,#3 + ldr x4,[x4] // *n0 + mov sp,x2 // alloca + sub x27,x5,#8*8 + b Lsqr8x_zero_start + +Lsqr8x_zero: + sub x27,x27,#8*8 + stp xzr,xzr,[x2,#8*0] + stp xzr,xzr,[x2,#8*2] + stp xzr,xzr,[x2,#8*4] + stp xzr,xzr,[x2,#8*6] +Lsqr8x_zero_start: + stp xzr,xzr,[x2,#8*8] + stp xzr,xzr,[x2,#8*10] + stp xzr,xzr,[x2,#8*12] + stp xzr,xzr,[x2,#8*14] + add x2,x2,#8*16 + cbnz x27,Lsqr8x_zero + + add x3,x1,x5 + add x1,x1,#8*8 + mov x19,xzr + mov x20,xzr + mov x21,xzr + mov x22,xzr + mov x23,xzr + mov x24,xzr + mov x25,xzr + mov x26,xzr + mov x2,sp + str x4,[x29,#112] // offload n0 + + // Multiply everything but a[i]*a[i] +.align 4 +Lsqr8x_outer_loop: + // a[1]a[0] (i) + // a[2]a[0] + // a[3]a[0] + // a[4]a[0] + // a[5]a[0] + // a[6]a[0] + // a[7]a[0] + // a[2]a[1] (ii) + // a[3]a[1] + // a[4]a[1] + // a[5]a[1] + // a[6]a[1] + // a[7]a[1] + // a[3]a[2] (iii) + // a[4]a[2] + // a[5]a[2] + // a[6]a[2] + // a[7]a[2] + // a[4]a[3] (iv) + // a[5]a[3] + // a[6]a[3] + // a[7]a[3] + // a[5]a[4] (v) + // a[6]a[4] + // a[7]a[4] + // a[6]a[5] (vi) + // a[7]a[5] + // a[7]a[6] (vii) + + mul x14,x7,x6 // lo(a[1..7]*a[0]) (i) + mul x15,x8,x6 + mul x16,x9,x6 + mul x17,x10,x6 + adds x20,x20,x14 // t[1]+lo(a[1]*a[0]) + mul x14,x11,x6 + adcs x21,x21,x15 + mul x15,x12,x6 + adcs x22,x22,x16 + mul x16,x13,x6 + adcs x23,x23,x17 + umulh x17,x7,x6 // hi(a[1..7]*a[0]) + adcs x24,x24,x14 + umulh x14,x8,x6 + adcs x25,x25,x15 + umulh x15,x9,x6 + adcs x26,x26,x16 + umulh x16,x10,x6 + stp x19,x20,[x2],#8*2 // t[0..1] + adc x19,xzr,xzr // t[8] + adds x21,x21,x17 // t[2]+lo(a[1]*a[0]) + umulh x17,x11,x6 + adcs x22,x22,x14 + umulh x14,x12,x6 + adcs x23,x23,x15 + umulh x15,x13,x6 + adcs x24,x24,x16 + mul x16,x8,x7 // lo(a[2..7]*a[1]) (ii) + adcs x25,x25,x17 + mul x17,x9,x7 + adcs x26,x26,x14 + mul x14,x10,x7 + adc x19,x19,x15 + + mul x15,x11,x7 + adds x22,x22,x16 + mul x16,x12,x7 + adcs x23,x23,x17 + mul x17,x13,x7 + adcs x24,x24,x14 + umulh x14,x8,x7 // hi(a[2..7]*a[1]) + adcs x25,x25,x15 + umulh x15,x9,x7 + adcs x26,x26,x16 + umulh x16,x10,x7 + adcs x19,x19,x17 + umulh x17,x11,x7 + stp x21,x22,[x2],#8*2 // t[2..3] + adc x20,xzr,xzr // t[9] + adds x23,x23,x14 + umulh x14,x12,x7 + adcs x24,x24,x15 + umulh x15,x13,x7 + adcs x25,x25,x16 + mul x16,x9,x8 // lo(a[3..7]*a[2]) (iii) + adcs x26,x26,x17 + mul x17,x10,x8 + adcs x19,x19,x14 + mul x14,x11,x8 + adc x20,x20,x15 + + mul x15,x12,x8 + adds x24,x24,x16 + mul x16,x13,x8 + adcs x25,x25,x17 + umulh x17,x9,x8 // hi(a[3..7]*a[2]) + adcs x26,x26,x14 + umulh x14,x10,x8 + adcs x19,x19,x15 + umulh x15,x11,x8 + adcs x20,x20,x16 + umulh x16,x12,x8 + stp x23,x24,[x2],#8*2 // t[4..5] + adc x21,xzr,xzr // t[10] + adds x25,x25,x17 + umulh x17,x13,x8 + adcs x26,x26,x14 + mul x14,x10,x9 // lo(a[4..7]*a[3]) (iv) + adcs x19,x19,x15 + mul x15,x11,x9 + adcs x20,x20,x16 + mul x16,x12,x9 + adc x21,x21,x17 + + mul x17,x13,x9 + adds x26,x26,x14 + umulh x14,x10,x9 // hi(a[4..7]*a[3]) + adcs x19,x19,x15 + umulh x15,x11,x9 + adcs x20,x20,x16 + umulh x16,x12,x9 + adcs x21,x21,x17 + umulh x17,x13,x9 + stp x25,x26,[x2],#8*2 // t[6..7] + adc x22,xzr,xzr // t[11] + adds x19,x19,x14 + mul x14,x11,x10 // lo(a[5..7]*a[4]) (v) + adcs x20,x20,x15 + mul x15,x12,x10 + adcs x21,x21,x16 + mul x16,x13,x10 + adc x22,x22,x17 + + umulh x17,x11,x10 // hi(a[5..7]*a[4]) + adds x20,x20,x14 + umulh x14,x12,x10 + adcs x21,x21,x15 + umulh x15,x13,x10 + adcs x22,x22,x16 + mul x16,x12,x11 // lo(a[6..7]*a[5]) (vi) + adc x23,xzr,xzr // t[12] + adds x21,x21,x17 + mul x17,x13,x11 + adcs x22,x22,x14 + umulh x14,x12,x11 // hi(a[6..7]*a[5]) + adc x23,x23,x15 + + umulh x15,x13,x11 + adds x22,x22,x16 + mul x16,x13,x12 // lo(a[7]*a[6]) (vii) + adcs x23,x23,x17 + umulh x17,x13,x12 // hi(a[7]*a[6]) + adc x24,xzr,xzr // t[13] + adds x23,x23,x14 + sub x27,x3,x1 // done yet? + adc x24,x24,x15 + + adds x24,x24,x16 + sub x14,x3,x5 // rewinded ap + adc x25,xzr,xzr // t[14] + add x25,x25,x17 + + cbz x27,Lsqr8x_outer_break + + mov x4,x6 + ldp x6,x7,[x2,#8*0] + ldp x8,x9,[x2,#8*2] + ldp x10,x11,[x2,#8*4] + ldp x12,x13,[x2,#8*6] + adds x19,x19,x6 + adcs x20,x20,x7 + ldp x6,x7,[x1,#8*0] + adcs x21,x21,x8 + adcs x22,x22,x9 + ldp x8,x9,[x1,#8*2] + adcs x23,x23,x10 + adcs x24,x24,x11 + ldp x10,x11,[x1,#8*4] + adcs x25,x25,x12 + mov x0,x1 + adcs x26,xzr,x13 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + //adc x28,xzr,xzr // moved below + mov x27,#-8*8 + + // a[8]a[0] + // a[9]a[0] + // a[a]a[0] + // a[b]a[0] + // a[c]a[0] + // a[d]a[0] + // a[e]a[0] + // a[f]a[0] + // a[8]a[1] + // a[f]a[1]........................ + // a[8]a[2] + // a[f]a[2]........................ + // a[8]a[3] + // a[f]a[3]........................ + // a[8]a[4] + // a[f]a[4]........................ + // a[8]a[5] + // a[f]a[5]........................ + // a[8]a[6] + // a[f]a[6]........................ + // a[8]a[7] + // a[f]a[7]........................ +Lsqr8x_mul: + mul x14,x6,x4 + adc x28,xzr,xzr // carry bit, modulo-scheduled + mul x15,x7,x4 + add x27,x27,#8 + mul x16,x8,x4 + mul x17,x9,x4 + adds x19,x19,x14 + mul x14,x10,x4 + adcs x20,x20,x15 + mul x15,x11,x4 + adcs x21,x21,x16 + mul x16,x12,x4 + adcs x22,x22,x17 + mul x17,x13,x4 + adcs x23,x23,x14 + umulh x14,x6,x4 + adcs x24,x24,x15 + umulh x15,x7,x4 + adcs x25,x25,x16 + umulh x16,x8,x4 + adcs x26,x26,x17 + umulh x17,x9,x4 + adc x28,x28,xzr + str x19,[x2],#8 + adds x19,x20,x14 + umulh x14,x10,x4 + adcs x20,x21,x15 + umulh x15,x11,x4 + adcs x21,x22,x16 + umulh x16,x12,x4 + adcs x22,x23,x17 + umulh x17,x13,x4 + ldr x4,[x0,x27] + adcs x23,x24,x14 + adcs x24,x25,x15 + adcs x25,x26,x16 + adcs x26,x28,x17 + //adc x28,xzr,xzr // moved above + cbnz x27,Lsqr8x_mul + // note that carry flag is guaranteed + // to be zero at this point + cmp x1,x3 // done yet? + b.eq Lsqr8x_break + + ldp x6,x7,[x2,#8*0] + ldp x8,x9,[x2,#8*2] + ldp x10,x11,[x2,#8*4] + ldp x12,x13,[x2,#8*6] + adds x19,x19,x6 + ldr x4,[x0,#-8*8] + adcs x20,x20,x7 + ldp x6,x7,[x1,#8*0] + adcs x21,x21,x8 + adcs x22,x22,x9 + ldp x8,x9,[x1,#8*2] + adcs x23,x23,x10 + adcs x24,x24,x11 + ldp x10,x11,[x1,#8*4] + adcs x25,x25,x12 + mov x27,#-8*8 + adcs x26,x26,x13 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + //adc x28,xzr,xzr // moved above + b Lsqr8x_mul + +.align 4 +Lsqr8x_break: + ldp x6,x7,[x0,#8*0] + add x1,x0,#8*8 + ldp x8,x9,[x0,#8*2] + sub x14,x3,x1 // is it last iteration? + ldp x10,x11,[x0,#8*4] + sub x15,x2,x14 + ldp x12,x13,[x0,#8*6] + cbz x14,Lsqr8x_outer_loop + + stp x19,x20,[x2,#8*0] + ldp x19,x20,[x15,#8*0] + stp x21,x22,[x2,#8*2] + ldp x21,x22,[x15,#8*2] + stp x23,x24,[x2,#8*4] + ldp x23,x24,[x15,#8*4] + stp x25,x26,[x2,#8*6] + mov x2,x15 + ldp x25,x26,[x15,#8*6] + b Lsqr8x_outer_loop + +.align 4 +Lsqr8x_outer_break: + // Now multiply above result by 2 and add a[n-1]*a[n-1]|...|a[0]*a[0] + ldp x7,x9,[x14,#8*0] // recall that x14 is &a[0] + ldp x15,x16,[sp,#8*1] + ldp x11,x13,[x14,#8*2] + add x1,x14,#8*4 + ldp x17,x14,[sp,#8*3] + + stp x19,x20,[x2,#8*0] + mul x19,x7,x7 + stp x21,x22,[x2,#8*2] + umulh x7,x7,x7 + stp x23,x24,[x2,#8*4] + mul x8,x9,x9 + stp x25,x26,[x2,#8*6] + mov x2,sp + umulh x9,x9,x9 + adds x20,x7,x15,lsl#1 + extr x15,x16,x15,#63 + sub x27,x5,#8*4 + +Lsqr4x_shift_n_add: + adcs x21,x8,x15 + extr x16,x17,x16,#63 + sub x27,x27,#8*4 + adcs x22,x9,x16 + ldp x15,x16,[x2,#8*5] + mul x10,x11,x11 + ldp x7,x9,[x1],#8*2 + umulh x11,x11,x11 + mul x12,x13,x13 + umulh x13,x13,x13 + extr x17,x14,x17,#63 + stp x19,x20,[x2,#8*0] + adcs x23,x10,x17 + extr x14,x15,x14,#63 + stp x21,x22,[x2,#8*2] + adcs x24,x11,x14 + ldp x17,x14,[x2,#8*7] + extr x15,x16,x15,#63 + adcs x25,x12,x15 + extr x16,x17,x16,#63 + adcs x26,x13,x16 + ldp x15,x16,[x2,#8*9] + mul x6,x7,x7 + ldp x11,x13,[x1],#8*2 + umulh x7,x7,x7 + mul x8,x9,x9 + umulh x9,x9,x9 + stp x23,x24,[x2,#8*4] + extr x17,x14,x17,#63 + stp x25,x26,[x2,#8*6] + add x2,x2,#8*8 + adcs x19,x6,x17 + extr x14,x15,x14,#63 + adcs x20,x7,x14 + ldp x17,x14,[x2,#8*3] + extr x15,x16,x15,#63 + cbnz x27,Lsqr4x_shift_n_add + ldp x1,x4,[x29,#104] // pull np and n0 + + adcs x21,x8,x15 + extr x16,x17,x16,#63 + adcs x22,x9,x16 + ldp x15,x16,[x2,#8*5] + mul x10,x11,x11 + umulh x11,x11,x11 + stp x19,x20,[x2,#8*0] + mul x12,x13,x13 + umulh x13,x13,x13 + stp x21,x22,[x2,#8*2] + extr x17,x14,x17,#63 + adcs x23,x10,x17 + extr x14,x15,x14,#63 + ldp x19,x20,[sp,#8*0] + adcs x24,x11,x14 + extr x15,x16,x15,#63 + ldp x6,x7,[x1,#8*0] + adcs x25,x12,x15 + extr x16,xzr,x16,#63 + ldp x8,x9,[x1,#8*2] + adc x26,x13,x16 + ldp x10,x11,[x1,#8*4] + + // Reduce by 512 bits per iteration + mul x28,x4,x19 // t[0]*n0 + ldp x12,x13,[x1,#8*6] + add x3,x1,x5 + ldp x21,x22,[sp,#8*2] + stp x23,x24,[x2,#8*4] + ldp x23,x24,[sp,#8*4] + stp x25,x26,[x2,#8*6] + ldp x25,x26,[sp,#8*6] + add x1,x1,#8*8 + mov x30,xzr // initial top-most carry + mov x2,sp + mov x27,#8 + +Lsqr8x_reduction: + // (*) mul x14,x6,x28 // lo(n[0-7])*lo(t[0]*n0) + mul x15,x7,x28 + sub x27,x27,#1 + mul x16,x8,x28 + str x28,[x2],#8 // put aside t[0]*n0 for tail processing + mul x17,x9,x28 + // (*) adds xzr,x19,x14 + subs xzr,x19,#1 // (*) + mul x14,x10,x28 + adcs x19,x20,x15 + mul x15,x11,x28 + adcs x20,x21,x16 + mul x16,x12,x28 + adcs x21,x22,x17 + mul x17,x13,x28 + adcs x22,x23,x14 + umulh x14,x6,x28 // hi(n[0-7])*lo(t[0]*n0) + adcs x23,x24,x15 + umulh x15,x7,x28 + adcs x24,x25,x16 + umulh x16,x8,x28 + adcs x25,x26,x17 + umulh x17,x9,x28 + adc x26,xzr,xzr + adds x19,x19,x14 + umulh x14,x10,x28 + adcs x20,x20,x15 + umulh x15,x11,x28 + adcs x21,x21,x16 + umulh x16,x12,x28 + adcs x22,x22,x17 + umulh x17,x13,x28 + mul x28,x4,x19 // next t[0]*n0 + adcs x23,x23,x14 + adcs x24,x24,x15 + adcs x25,x25,x16 + adc x26,x26,x17 + cbnz x27,Lsqr8x_reduction + + ldp x14,x15,[x2,#8*0] + ldp x16,x17,[x2,#8*2] + mov x0,x2 + sub x27,x3,x1 // done yet? + adds x19,x19,x14 + adcs x20,x20,x15 + ldp x14,x15,[x2,#8*4] + adcs x21,x21,x16 + adcs x22,x22,x17 + ldp x16,x17,[x2,#8*6] + adcs x23,x23,x14 + adcs x24,x24,x15 + adcs x25,x25,x16 + adcs x26,x26,x17 + //adc x28,xzr,xzr // moved below + cbz x27,Lsqr8x8_post_condition + + ldr x4,[x2,#-8*8] + ldp x6,x7,[x1,#8*0] + ldp x8,x9,[x1,#8*2] + ldp x10,x11,[x1,#8*4] + mov x27,#-8*8 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + +Lsqr8x_tail: + mul x14,x6,x4 + adc x28,xzr,xzr // carry bit, modulo-scheduled + mul x15,x7,x4 + add x27,x27,#8 + mul x16,x8,x4 + mul x17,x9,x4 + adds x19,x19,x14 + mul x14,x10,x4 + adcs x20,x20,x15 + mul x15,x11,x4 + adcs x21,x21,x16 + mul x16,x12,x4 + adcs x22,x22,x17 + mul x17,x13,x4 + adcs x23,x23,x14 + umulh x14,x6,x4 + adcs x24,x24,x15 + umulh x15,x7,x4 + adcs x25,x25,x16 + umulh x16,x8,x4 + adcs x26,x26,x17 + umulh x17,x9,x4 + adc x28,x28,xzr + str x19,[x2],#8 + adds x19,x20,x14 + umulh x14,x10,x4 + adcs x20,x21,x15 + umulh x15,x11,x4 + adcs x21,x22,x16 + umulh x16,x12,x4 + adcs x22,x23,x17 + umulh x17,x13,x4 + ldr x4,[x0,x27] + adcs x23,x24,x14 + adcs x24,x25,x15 + adcs x25,x26,x16 + adcs x26,x28,x17 + //adc x28,xzr,xzr // moved above + cbnz x27,Lsqr8x_tail + // note that carry flag is guaranteed + // to be zero at this point + ldp x6,x7,[x2,#8*0] + sub x27,x3,x1 // done yet? + sub x16,x3,x5 // rewinded np + ldp x8,x9,[x2,#8*2] + ldp x10,x11,[x2,#8*4] + ldp x12,x13,[x2,#8*6] + cbz x27,Lsqr8x_tail_break + + ldr x4,[x0,#-8*8] + adds x19,x19,x6 + adcs x20,x20,x7 + ldp x6,x7,[x1,#8*0] + adcs x21,x21,x8 + adcs x22,x22,x9 + ldp x8,x9,[x1,#8*2] + adcs x23,x23,x10 + adcs x24,x24,x11 + ldp x10,x11,[x1,#8*4] + adcs x25,x25,x12 + mov x27,#-8*8 + adcs x26,x26,x13 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + //adc x28,xzr,xzr // moved above + b Lsqr8x_tail + +.align 4 +Lsqr8x_tail_break: + ldr x4,[x29,#112] // pull n0 + add x27,x2,#8*8 // end of current t[num] window + + subs xzr,x30,#1 // "move" top-most carry to carry bit + adcs x14,x19,x6 + adcs x15,x20,x7 + ldp x19,x20,[x0,#8*0] + adcs x21,x21,x8 + ldp x6,x7,[x16,#8*0] // recall that x16 is &n[0] + adcs x22,x22,x9 + ldp x8,x9,[x16,#8*2] + adcs x23,x23,x10 + adcs x24,x24,x11 + ldp x10,x11,[x16,#8*4] + adcs x25,x25,x12 + adcs x26,x26,x13 + ldp x12,x13,[x16,#8*6] + add x1,x16,#8*8 + adc x30,xzr,xzr // top-most carry + mul x28,x4,x19 + stp x14,x15,[x2,#8*0] + stp x21,x22,[x2,#8*2] + ldp x21,x22,[x0,#8*2] + stp x23,x24,[x2,#8*4] + ldp x23,x24,[x0,#8*4] + cmp x27,x29 // did we hit the bottom? + stp x25,x26,[x2,#8*6] + mov x2,x0 // slide the window + ldp x25,x26,[x0,#8*6] + mov x27,#8 + b.ne Lsqr8x_reduction + + // Final step. We see if result is larger than modulus, and + // if it is, subtract the modulus. But comparison implies + // subtraction. So we subtract modulus, see if it borrowed, + // and conditionally copy original value. + ldr x0,[x29,#96] // pull rp + add x2,x2,#8*8 + subs x14,x19,x6 + sbcs x15,x20,x7 + sub x27,x5,#8*8 + mov x3,x0 // x0 copy + +Lsqr8x_sub: + sbcs x16,x21,x8 + ldp x6,x7,[x1,#8*0] + sbcs x17,x22,x9 + stp x14,x15,[x0,#8*0] + sbcs x14,x23,x10 + ldp x8,x9,[x1,#8*2] + sbcs x15,x24,x11 + stp x16,x17,[x0,#8*2] + sbcs x16,x25,x12 + ldp x10,x11,[x1,#8*4] + sbcs x17,x26,x13 + ldp x12,x13,[x1,#8*6] + add x1,x1,#8*8 + ldp x19,x20,[x2,#8*0] + sub x27,x27,#8*8 + ldp x21,x22,[x2,#8*2] + ldp x23,x24,[x2,#8*4] + ldp x25,x26,[x2,#8*6] + add x2,x2,#8*8 + stp x14,x15,[x0,#8*4] + sbcs x14,x19,x6 + stp x16,x17,[x0,#8*6] + add x0,x0,#8*8 + sbcs x15,x20,x7 + cbnz x27,Lsqr8x_sub + + sbcs x16,x21,x8 + mov x2,sp + add x1,sp,x5 + ldp x6,x7,[x3,#8*0] + sbcs x17,x22,x9 + stp x14,x15,[x0,#8*0] + sbcs x14,x23,x10 + ldp x8,x9,[x3,#8*2] + sbcs x15,x24,x11 + stp x16,x17,[x0,#8*2] + sbcs x16,x25,x12 + ldp x19,x20,[x1,#8*0] + sbcs x17,x26,x13 + ldp x21,x22,[x1,#8*2] + sbcs xzr,x30,xzr // did it borrow? + ldr x30,[x29,#8] // pull return address + stp x14,x15,[x0,#8*4] + stp x16,x17,[x0,#8*6] + + sub x27,x5,#8*4 +Lsqr4x_cond_copy: + sub x27,x27,#8*4 + csel x14,x19,x6,lo + stp xzr,xzr,[x2,#8*0] + csel x15,x20,x7,lo + ldp x6,x7,[x3,#8*4] + ldp x19,x20,[x1,#8*4] + csel x16,x21,x8,lo + stp xzr,xzr,[x2,#8*2] + add x2,x2,#8*4 + csel x17,x22,x9,lo + ldp x8,x9,[x3,#8*6] + ldp x21,x22,[x1,#8*6] + add x1,x1,#8*4 + stp x14,x15,[x3,#8*0] + stp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + stp xzr,xzr,[x1,#8*0] + stp xzr,xzr,[x1,#8*2] + cbnz x27,Lsqr4x_cond_copy + + csel x14,x19,x6,lo + stp xzr,xzr,[x2,#8*0] + csel x15,x20,x7,lo + stp xzr,xzr,[x2,#8*2] + csel x16,x21,x8,lo + csel x17,x22,x9,lo + stp x14,x15,[x3,#8*0] + stp x16,x17,[x3,#8*2] + + b Lsqr8x_done + +.align 4 +Lsqr8x8_post_condition: + adc x28,xzr,xzr + ldr x30,[x29,#8] // pull return address + // x19-7,x28 hold result, x6-7 hold modulus + subs x6,x19,x6 + ldr x1,[x29,#96] // pull rp + sbcs x7,x20,x7 + stp xzr,xzr,[sp,#8*0] + sbcs x8,x21,x8 + stp xzr,xzr,[sp,#8*2] + sbcs x9,x22,x9 + stp xzr,xzr,[sp,#8*4] + sbcs x10,x23,x10 + stp xzr,xzr,[sp,#8*6] + sbcs x11,x24,x11 + stp xzr,xzr,[sp,#8*8] + sbcs x12,x25,x12 + stp xzr,xzr,[sp,#8*10] + sbcs x13,x26,x13 + stp xzr,xzr,[sp,#8*12] + sbcs x28,x28,xzr // did it borrow? + stp xzr,xzr,[sp,#8*14] + + // x6-7 hold result-modulus + csel x6,x19,x6,lo + csel x7,x20,x7,lo + csel x8,x21,x8,lo + csel x9,x22,x9,lo + stp x6,x7,[x1,#8*0] + csel x10,x23,x10,lo + csel x11,x24,x11,lo + stp x8,x9,[x1,#8*2] + csel x12,x25,x12,lo + csel x13,x26,x13,lo + stp x10,x11,[x1,#8*4] + stp x12,x13,[x1,#8*6] + +Lsqr8x_done: + ldp x19,x20,[x29,#16] + mov sp,x29 + ldp x21,x22,[x29,#32] + mov x0,#1 + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldr x29,[sp],#128 +.long 0xd50323bf // autiasp + ret + + +.align 5 +__bn_mul4x_mont: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + + sub x26,sp,x5,lsl#3 + lsl x5,x5,#3 + ldr x4,[x4] // *n0 + sub sp,x26,#8*4 // alloca + + add x10,x2,x5 + add x27,x1,x5 + stp x0,x10,[x29,#96] // offload rp and &b[num] + + ldr x24,[x2,#8*0] // b[0] + ldp x6,x7,[x1,#8*0] // a[0..3] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + mov x19,xzr + mov x20,xzr + mov x21,xzr + mov x22,xzr + ldp x14,x15,[x3,#8*0] // n[0..3] + ldp x16,x17,[x3,#8*2] + adds x3,x3,#8*4 // clear carry bit + mov x0,xzr + mov x28,#0 + mov x26,sp + +Loop_mul4x_1st_reduction: + mul x10,x6,x24 // lo(a[0..3]*b[0]) + adc x0,x0,xzr // modulo-scheduled + mul x11,x7,x24 + add x28,x28,#8 + mul x12,x8,x24 + and x28,x28,#31 + mul x13,x9,x24 + adds x19,x19,x10 + umulh x10,x6,x24 // hi(a[0..3]*b[0]) + adcs x20,x20,x11 + mul x25,x19,x4 // t[0]*n0 + adcs x21,x21,x12 + umulh x11,x7,x24 + adcs x22,x22,x13 + umulh x12,x8,x24 + adc x23,xzr,xzr + umulh x13,x9,x24 + ldr x24,[x2,x28] // next b[i] (or b[0]) + adds x20,x20,x10 + // (*) mul x10,x14,x25 // lo(n[0..3]*t[0]*n0) + str x25,[x26],#8 // put aside t[0]*n0 for tail processing + adcs x21,x21,x11 + mul x11,x15,x25 + adcs x22,x22,x12 + mul x12,x16,x25 + adc x23,x23,x13 // can't overflow + mul x13,x17,x25 + // (*) adds xzr,x19,x10 + subs xzr,x19,#1 // (*) + umulh x10,x14,x25 // hi(n[0..3]*t[0]*n0) + adcs x19,x20,x11 + umulh x11,x15,x25 + adcs x20,x21,x12 + umulh x12,x16,x25 + adcs x21,x22,x13 + umulh x13,x17,x25 + adcs x22,x23,x0 + adc x0,xzr,xzr + adds x19,x19,x10 + sub x10,x27,x1 + adcs x20,x20,x11 + adcs x21,x21,x12 + adcs x22,x22,x13 + //adc x0,x0,xzr + cbnz x28,Loop_mul4x_1st_reduction + + cbz x10,Lmul4x4_post_condition + + ldp x6,x7,[x1,#8*0] // a[4..7] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + ldr x25,[sp] // a[0]*n0 + ldp x14,x15,[x3,#8*0] // n[4..7] + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + +Loop_mul4x_1st_tail: + mul x10,x6,x24 // lo(a[4..7]*b[i]) + adc x0,x0,xzr // modulo-scheduled + mul x11,x7,x24 + add x28,x28,#8 + mul x12,x8,x24 + and x28,x28,#31 + mul x13,x9,x24 + adds x19,x19,x10 + umulh x10,x6,x24 // hi(a[4..7]*b[i]) + adcs x20,x20,x11 + umulh x11,x7,x24 + adcs x21,x21,x12 + umulh x12,x8,x24 + adcs x22,x22,x13 + umulh x13,x9,x24 + adc x23,xzr,xzr + ldr x24,[x2,x28] // next b[i] (or b[0]) + adds x20,x20,x10 + mul x10,x14,x25 // lo(n[4..7]*a[0]*n0) + adcs x21,x21,x11 + mul x11,x15,x25 + adcs x22,x22,x12 + mul x12,x16,x25 + adc x23,x23,x13 // can't overflow + mul x13,x17,x25 + adds x19,x19,x10 + umulh x10,x14,x25 // hi(n[4..7]*a[0]*n0) + adcs x20,x20,x11 + umulh x11,x15,x25 + adcs x21,x21,x12 + umulh x12,x16,x25 + adcs x22,x22,x13 + adcs x23,x23,x0 + umulh x13,x17,x25 + adc x0,xzr,xzr + ldr x25,[sp,x28] // next t[0]*n0 + str x19,[x26],#8 // result!!! + adds x19,x20,x10 + sub x10,x27,x1 // done yet? + adcs x20,x21,x11 + adcs x21,x22,x12 + adcs x22,x23,x13 + //adc x0,x0,xzr + cbnz x28,Loop_mul4x_1st_tail + + sub x11,x27,x5 // rewinded x1 + cbz x10,Lmul4x_proceed + + ldp x6,x7,[x1,#8*0] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + ldp x14,x15,[x3,#8*0] + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + b Loop_mul4x_1st_tail + +.align 5 +Lmul4x_proceed: + ldr x24,[x2,#8*4]! // *++b + adc x30,x0,xzr + ldp x6,x7,[x11,#8*0] // a[0..3] + sub x3,x3,x5 // rewind np + ldp x8,x9,[x11,#8*2] + add x1,x11,#8*4 + + stp x19,x20,[x26,#8*0] // result!!! + ldp x19,x20,[sp,#8*4] // t[0..3] + stp x21,x22,[x26,#8*2] // result!!! + ldp x21,x22,[sp,#8*6] + + ldp x14,x15,[x3,#8*0] // n[0..3] + mov x26,sp + ldp x16,x17,[x3,#8*2] + adds x3,x3,#8*4 // clear carry bit + mov x0,xzr + +.align 4 +Loop_mul4x_reduction: + mul x10,x6,x24 // lo(a[0..3]*b[4]) + adc x0,x0,xzr // modulo-scheduled + mul x11,x7,x24 + add x28,x28,#8 + mul x12,x8,x24 + and x28,x28,#31 + mul x13,x9,x24 + adds x19,x19,x10 + umulh x10,x6,x24 // hi(a[0..3]*b[4]) + adcs x20,x20,x11 + mul x25,x19,x4 // t[0]*n0 + adcs x21,x21,x12 + umulh x11,x7,x24 + adcs x22,x22,x13 + umulh x12,x8,x24 + adc x23,xzr,xzr + umulh x13,x9,x24 + ldr x24,[x2,x28] // next b[i] + adds x20,x20,x10 + // (*) mul x10,x14,x25 + str x25,[x26],#8 // put aside t[0]*n0 for tail processing + adcs x21,x21,x11 + mul x11,x15,x25 // lo(n[0..3]*t[0]*n0 + adcs x22,x22,x12 + mul x12,x16,x25 + adc x23,x23,x13 // can't overflow + mul x13,x17,x25 + // (*) adds xzr,x19,x10 + subs xzr,x19,#1 // (*) + umulh x10,x14,x25 // hi(n[0..3]*t[0]*n0 + adcs x19,x20,x11 + umulh x11,x15,x25 + adcs x20,x21,x12 + umulh x12,x16,x25 + adcs x21,x22,x13 + umulh x13,x17,x25 + adcs x22,x23,x0 + adc x0,xzr,xzr + adds x19,x19,x10 + adcs x20,x20,x11 + adcs x21,x21,x12 + adcs x22,x22,x13 + //adc x0,x0,xzr + cbnz x28,Loop_mul4x_reduction + + adc x0,x0,xzr + ldp x10,x11,[x26,#8*4] // t[4..7] + ldp x12,x13,[x26,#8*6] + ldp x6,x7,[x1,#8*0] // a[4..7] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + adds x19,x19,x10 + adcs x20,x20,x11 + adcs x21,x21,x12 + adcs x22,x22,x13 + //adc x0,x0,xzr + + ldr x25,[sp] // t[0]*n0 + ldp x14,x15,[x3,#8*0] // n[4..7] + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + +.align 4 +Loop_mul4x_tail: + mul x10,x6,x24 // lo(a[4..7]*b[4]) + adc x0,x0,xzr // modulo-scheduled + mul x11,x7,x24 + add x28,x28,#8 + mul x12,x8,x24 + and x28,x28,#31 + mul x13,x9,x24 + adds x19,x19,x10 + umulh x10,x6,x24 // hi(a[4..7]*b[4]) + adcs x20,x20,x11 + umulh x11,x7,x24 + adcs x21,x21,x12 + umulh x12,x8,x24 + adcs x22,x22,x13 + umulh x13,x9,x24 + adc x23,xzr,xzr + ldr x24,[x2,x28] // next b[i] + adds x20,x20,x10 + mul x10,x14,x25 // lo(n[4..7]*t[0]*n0) + adcs x21,x21,x11 + mul x11,x15,x25 + adcs x22,x22,x12 + mul x12,x16,x25 + adc x23,x23,x13 // can't overflow + mul x13,x17,x25 + adds x19,x19,x10 + umulh x10,x14,x25 // hi(n[4..7]*t[0]*n0) + adcs x20,x20,x11 + umulh x11,x15,x25 + adcs x21,x21,x12 + umulh x12,x16,x25 + adcs x22,x22,x13 + umulh x13,x17,x25 + adcs x23,x23,x0 + ldr x25,[sp,x28] // next a[0]*n0 + adc x0,xzr,xzr + str x19,[x26],#8 // result!!! + adds x19,x20,x10 + sub x10,x27,x1 // done yet? + adcs x20,x21,x11 + adcs x21,x22,x12 + adcs x22,x23,x13 + //adc x0,x0,xzr + cbnz x28,Loop_mul4x_tail + + sub x11,x3,x5 // rewinded np? + adc x0,x0,xzr + cbz x10,Loop_mul4x_break + + ldp x10,x11,[x26,#8*4] + ldp x12,x13,[x26,#8*6] + ldp x6,x7,[x1,#8*0] + ldp x8,x9,[x1,#8*2] + add x1,x1,#8*4 + adds x19,x19,x10 + adcs x20,x20,x11 + adcs x21,x21,x12 + adcs x22,x22,x13 + //adc x0,x0,xzr + ldp x14,x15,[x3,#8*0] + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + b Loop_mul4x_tail + +.align 4 +Loop_mul4x_break: + ldp x12,x13,[x29,#96] // pull rp and &b[num] + adds x19,x19,x30 + add x2,x2,#8*4 // bp++ + adcs x20,x20,xzr + sub x1,x1,x5 // rewind ap + adcs x21,x21,xzr + stp x19,x20,[x26,#8*0] // result!!! + adcs x22,x22,xzr + ldp x19,x20,[sp,#8*4] // t[0..3] + adc x30,x0,xzr + stp x21,x22,[x26,#8*2] // result!!! + cmp x2,x13 // done yet? + ldp x21,x22,[sp,#8*6] + ldp x14,x15,[x11,#8*0] // n[0..3] + ldp x16,x17,[x11,#8*2] + add x3,x11,#8*4 + b.eq Lmul4x_post + + ldr x24,[x2] + ldp x6,x7,[x1,#8*0] // a[0..3] + ldp x8,x9,[x1,#8*2] + adds x1,x1,#8*4 // clear carry bit + mov x0,xzr + mov x26,sp + b Loop_mul4x_reduction + +.align 4 +Lmul4x_post: + // Final step. We see if result is larger than modulus, and + // if it is, subtract the modulus. But comparison implies + // subtraction. So we subtract modulus, see if it borrowed, + // and conditionally copy original value. + mov x0,x12 + mov x27,x12 // x0 copy + subs x10,x19,x14 + add x26,sp,#8*8 + sbcs x11,x20,x15 + sub x28,x5,#8*4 + +Lmul4x_sub: + sbcs x12,x21,x16 + ldp x14,x15,[x3,#8*0] + sub x28,x28,#8*4 + ldp x19,x20,[x26,#8*0] + sbcs x13,x22,x17 + ldp x16,x17,[x3,#8*2] + add x3,x3,#8*4 + ldp x21,x22,[x26,#8*2] + add x26,x26,#8*4 + stp x10,x11,[x0,#8*0] + sbcs x10,x19,x14 + stp x12,x13,[x0,#8*2] + add x0,x0,#8*4 + sbcs x11,x20,x15 + cbnz x28,Lmul4x_sub + + sbcs x12,x21,x16 + mov x26,sp + add x1,sp,#8*4 + ldp x6,x7,[x27,#8*0] + sbcs x13,x22,x17 + stp x10,x11,[x0,#8*0] + ldp x8,x9,[x27,#8*2] + stp x12,x13,[x0,#8*2] + ldp x19,x20,[x1,#8*0] + ldp x21,x22,[x1,#8*2] + sbcs xzr,x30,xzr // did it borrow? + ldr x30,[x29,#8] // pull return address + + sub x28,x5,#8*4 +Lmul4x_cond_copy: + sub x28,x28,#8*4 + csel x10,x19,x6,lo + stp xzr,xzr,[x26,#8*0] + csel x11,x20,x7,lo + ldp x6,x7,[x27,#8*4] + ldp x19,x20,[x1,#8*4] + csel x12,x21,x8,lo + stp xzr,xzr,[x26,#8*2] + add x26,x26,#8*4 + csel x13,x22,x9,lo + ldp x8,x9,[x27,#8*6] + ldp x21,x22,[x1,#8*6] + add x1,x1,#8*4 + stp x10,x11,[x27,#8*0] + stp x12,x13,[x27,#8*2] + add x27,x27,#8*4 + cbnz x28,Lmul4x_cond_copy + + csel x10,x19,x6,lo + stp xzr,xzr,[x26,#8*0] + csel x11,x20,x7,lo + stp xzr,xzr,[x26,#8*2] + csel x12,x21,x8,lo + stp xzr,xzr,[x26,#8*3] + csel x13,x22,x9,lo + stp xzr,xzr,[x26,#8*4] + stp x10,x11,[x27,#8*0] + stp x12,x13,[x27,#8*2] + + b Lmul4x_done + +.align 4 +Lmul4x4_post_condition: + adc x0,x0,xzr + ldr x1,[x29,#96] // pull rp + // x19-3,x0 hold result, x14-7 hold modulus + subs x6,x19,x14 + ldr x30,[x29,#8] // pull return address + sbcs x7,x20,x15 + stp xzr,xzr,[sp,#8*0] + sbcs x8,x21,x16 + stp xzr,xzr,[sp,#8*2] + sbcs x9,x22,x17 + stp xzr,xzr,[sp,#8*4] + sbcs xzr,x0,xzr // did it borrow? + stp xzr,xzr,[sp,#8*6] + + // x6-3 hold result-modulus + csel x6,x19,x6,lo + csel x7,x20,x7,lo + csel x8,x21,x8,lo + csel x9,x22,x9,lo + stp x6,x7,[x1,#8*0] + stp x8,x9,[x1,#8*2] + +Lmul4x_done: + ldp x19,x20,[x29,#16] + mov sp,x29 + ldp x21,x22,[x29,#32] + mov x0,#1 + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldr x29,[sp],#128 +.long 0xd50323bf // autiasp + ret + +.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 4 diff --git a/vere/ext/openssl/gen/macos-aarch64/crypto/chacha/chacha-armv8.S b/vere/ext/openssl/gen/macos-aarch64/crypto/chacha/chacha-armv8.S new file mode 100644 index 0000000..3bf82d6 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/crypto/chacha/chacha-armv8.S @@ -0,0 +1,1977 @@ +#include "arm_arch.h" + +.text + + +.private_extern _OPENSSL_armcap_P + +.align 5 +Lsigma: +.quad 0x3320646e61707865,0x6b20657479622d32 // endian-neutral +Lone: +.long 1,0,0,0 +LOPENSSL_armcap_P: +#ifdef __ILP32__ +.long _OPENSSL_armcap_P-. +#else +.quad ARMV7_NEON +#endif +.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 + +.globl _ChaCha20_ctr32 + +.align 5 +_ChaCha20_ctr32: + cbz x2,Labort + adr x5,LOPENSSL_armcap_P + cmp x2,#192 + b.lo Lshort +#ifdef __ILP32__ + ldrsw x6,[x5] +#else + ldr x6,[x5] +#endif + ldr w17,[x6,x5] + tst w17,#ARMV7_NEON + b.ne ChaCha20_neon + +Lshort: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + + adr x5,Lsigma + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#64 + + ldp x22,x23,[x5] // load sigma + ldp x24,x25,[x3] // load key + ldp x26,x27,[x3,#16] + ldp x28,x30,[x4] // load counter +#ifdef __ARMEB__ + ror x24,x24,#32 + ror x25,x25,#32 + ror x26,x26,#32 + ror x27,x27,#32 + ror x28,x28,#32 + ror x30,x30,#32 +#endif + +Loop_outer: + mov w5,w22 // unpack key block + lsr x6,x22,#32 + mov w7,w23 + lsr x8,x23,#32 + mov w9,w24 + lsr x10,x24,#32 + mov w11,w25 + lsr x12,x25,#32 + mov w13,w26 + lsr x14,x26,#32 + mov w15,w27 + lsr x16,x27,#32 + mov w17,w28 + lsr x19,x28,#32 + mov w20,w30 + lsr x21,x30,#32 + + mov x4,#10 + subs x2,x2,#64 +Loop: + sub x4,x4,#1 + add w5,w5,w9 + add w6,w6,w10 + add w7,w7,w11 + add w8,w8,w12 + eor w17,w17,w5 + eor w19,w19,w6 + eor w20,w20,w7 + eor w21,w21,w8 + ror w17,w17,#16 + ror w19,w19,#16 + ror w20,w20,#16 + ror w21,w21,#16 + add w13,w13,w17 + add w14,w14,w19 + add w15,w15,w20 + add w16,w16,w21 + eor w9,w9,w13 + eor w10,w10,w14 + eor w11,w11,w15 + eor w12,w12,w16 + ror w9,w9,#20 + ror w10,w10,#20 + ror w11,w11,#20 + ror w12,w12,#20 + add w5,w5,w9 + add w6,w6,w10 + add w7,w7,w11 + add w8,w8,w12 + eor w17,w17,w5 + eor w19,w19,w6 + eor w20,w20,w7 + eor w21,w21,w8 + ror w17,w17,#24 + ror w19,w19,#24 + ror w20,w20,#24 + ror w21,w21,#24 + add w13,w13,w17 + add w14,w14,w19 + add w15,w15,w20 + add w16,w16,w21 + eor w9,w9,w13 + eor w10,w10,w14 + eor w11,w11,w15 + eor w12,w12,w16 + ror w9,w9,#25 + ror w10,w10,#25 + ror w11,w11,#25 + ror w12,w12,#25 + add w5,w5,w10 + add w6,w6,w11 + add w7,w7,w12 + add w8,w8,w9 + eor w21,w21,w5 + eor w17,w17,w6 + eor w19,w19,w7 + eor w20,w20,w8 + ror w21,w21,#16 + ror w17,w17,#16 + ror w19,w19,#16 + ror w20,w20,#16 + add w15,w15,w21 + add w16,w16,w17 + add w13,w13,w19 + add w14,w14,w20 + eor w10,w10,w15 + eor w11,w11,w16 + eor w12,w12,w13 + eor w9,w9,w14 + ror w10,w10,#20 + ror w11,w11,#20 + ror w12,w12,#20 + ror w9,w9,#20 + add w5,w5,w10 + add w6,w6,w11 + add w7,w7,w12 + add w8,w8,w9 + eor w21,w21,w5 + eor w17,w17,w6 + eor w19,w19,w7 + eor w20,w20,w8 + ror w21,w21,#24 + ror w17,w17,#24 + ror w19,w19,#24 + ror w20,w20,#24 + add w15,w15,w21 + add w16,w16,w17 + add w13,w13,w19 + add w14,w14,w20 + eor w10,w10,w15 + eor w11,w11,w16 + eor w12,w12,w13 + eor w9,w9,w14 + ror w10,w10,#25 + ror w11,w11,#25 + ror w12,w12,#25 + ror w9,w9,#25 + cbnz x4,Loop + + add w5,w5,w22 // accumulate key block + add x6,x6,x22,lsr#32 + add w7,w7,w23 + add x8,x8,x23,lsr#32 + add w9,w9,w24 + add x10,x10,x24,lsr#32 + add w11,w11,w25 + add x12,x12,x25,lsr#32 + add w13,w13,w26 + add x14,x14,x26,lsr#32 + add w15,w15,w27 + add x16,x16,x27,lsr#32 + add w17,w17,w28 + add x19,x19,x28,lsr#32 + add w20,w20,w30 + add x21,x21,x30,lsr#32 + + b.lo Ltail + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + ldp x6,x8,[x1,#0] // load input + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + ldp x10,x12,[x1,#16] + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + ldp x14,x16,[x1,#32] + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 + ldp x19,x21,[x1,#48] + add x1,x1,#64 +#ifdef __ARMEB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor x15,x15,x16 + eor x17,x17,x19 + eor x20,x20,x21 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#1 // increment counter + stp x9,x11,[x0,#16] + stp x13,x15,[x0,#32] + stp x17,x20,[x0,#48] + add x0,x0,#64 + + b.hi Loop_outer + + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.long 0xd50323bf // autiasp +Labort: + ret + +.align 4 +Ltail: + add x2,x2,#64 +Less_than_64: + sub x0,x0,#1 + add x1,x1,x2 + add x0,x0,x2 + add x4,sp,x2 + neg x2,x2 + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 +#ifdef __ARMEB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + stp x5,x7,[sp,#0] + stp x9,x11,[sp,#16] + stp x13,x15,[sp,#32] + stp x17,x20,[sp,#48] + +Loop_tail: + ldrb w10,[x1,x2] + ldrb w11,[x4,x2] + add x2,x2,#1 + eor w10,w10,w11 + strb w10,[x0,x2] + cbnz x2,Loop_tail + + stp xzr,xzr,[sp,#0] + stp xzr,xzr,[sp,#16] + stp xzr,xzr,[sp,#32] + stp xzr,xzr,[sp,#48] + + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.long 0xd50323bf // autiasp + ret + + + +.align 5 +ChaCha20_neon: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + + adr x5,Lsigma + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + cmp x2,#512 + b.hs L512_or_more_neon + + sub sp,sp,#64 + + ldp x22,x23,[x5] // load sigma + ld1 {v24.4s},[x5],#16 + ldp x24,x25,[x3] // load key + ldp x26,x27,[x3,#16] + ld1 {v25.4s,v26.4s},[x3] + ldp x28,x30,[x4] // load counter + ld1 {v27.4s},[x4] + ld1 {v31.4s},[x5] +#ifdef __ARMEB__ + rev64 v24.4s,v24.4s + ror x24,x24,#32 + ror x25,x25,#32 + ror x26,x26,#32 + ror x27,x27,#32 + ror x28,x28,#32 + ror x30,x30,#32 +#endif + add v27.4s,v27.4s,v31.4s // += 1 + add v28.4s,v27.4s,v31.4s + add v29.4s,v28.4s,v31.4s + shl v31.4s,v31.4s,#2 // 1 -> 4 + +Loop_outer_neon: + mov w5,w22 // unpack key block + lsr x6,x22,#32 + mov v0.16b,v24.16b + mov w7,w23 + lsr x8,x23,#32 + mov v4.16b,v24.16b + mov w9,w24 + lsr x10,x24,#32 + mov v16.16b,v24.16b + mov w11,w25 + mov v1.16b,v25.16b + lsr x12,x25,#32 + mov v5.16b,v25.16b + mov w13,w26 + mov v17.16b,v25.16b + lsr x14,x26,#32 + mov v3.16b,v27.16b + mov w15,w27 + mov v7.16b,v28.16b + lsr x16,x27,#32 + mov v19.16b,v29.16b + mov w17,w28 + mov v2.16b,v26.16b + lsr x19,x28,#32 + mov v6.16b,v26.16b + mov w20,w30 + mov v18.16b,v26.16b + lsr x21,x30,#32 + + mov x4,#10 + subs x2,x2,#256 +Loop_neon: + sub x4,x4,#1 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v16.4s,v16.4s,v17.4s + add w7,w7,w11 + eor v3.16b,v3.16b,v0.16b + add w8,w8,w12 + eor v7.16b,v7.16b,v4.16b + eor w17,w17,w5 + eor v19.16b,v19.16b,v16.16b + eor w19,w19,w6 + rev32 v3.8h,v3.8h + eor w20,w20,w7 + rev32 v7.8h,v7.8h + eor w21,w21,w8 + rev32 v19.8h,v19.8h + ror w17,w17,#16 + add v2.4s,v2.4s,v3.4s + ror w19,w19,#16 + add v6.4s,v6.4s,v7.4s + ror w20,w20,#16 + add v18.4s,v18.4s,v19.4s + ror w21,w21,#16 + eor v20.16b,v1.16b,v2.16b + add w13,w13,w17 + eor v21.16b,v5.16b,v6.16b + add w14,w14,w19 + eor v22.16b,v17.16b,v18.16b + add w15,w15,w20 + ushr v1.4s,v20.4s,#20 + add w16,w16,w21 + ushr v5.4s,v21.4s,#20 + eor w9,w9,w13 + ushr v17.4s,v22.4s,#20 + eor w10,w10,w14 + sli v1.4s,v20.4s,#12 + eor w11,w11,w15 + sli v5.4s,v21.4s,#12 + eor w12,w12,w16 + sli v17.4s,v22.4s,#12 + ror w9,w9,#20 + add v0.4s,v0.4s,v1.4s + ror w10,w10,#20 + add v4.4s,v4.4s,v5.4s + ror w11,w11,#20 + add v16.4s,v16.4s,v17.4s + ror w12,w12,#20 + eor v20.16b,v3.16b,v0.16b + add w5,w5,w9 + eor v21.16b,v7.16b,v4.16b + add w6,w6,w10 + eor v22.16b,v19.16b,v16.16b + add w7,w7,w11 + ushr v3.4s,v20.4s,#24 + add w8,w8,w12 + ushr v7.4s,v21.4s,#24 + eor w17,w17,w5 + ushr v19.4s,v22.4s,#24 + eor w19,w19,w6 + sli v3.4s,v20.4s,#8 + eor w20,w20,w7 + sli v7.4s,v21.4s,#8 + eor w21,w21,w8 + sli v19.4s,v22.4s,#8 + ror w17,w17,#24 + add v2.4s,v2.4s,v3.4s + ror w19,w19,#24 + add v6.4s,v6.4s,v7.4s + ror w20,w20,#24 + add v18.4s,v18.4s,v19.4s + ror w21,w21,#24 + eor v20.16b,v1.16b,v2.16b + add w13,w13,w17 + eor v21.16b,v5.16b,v6.16b + add w14,w14,w19 + eor v22.16b,v17.16b,v18.16b + add w15,w15,w20 + ushr v1.4s,v20.4s,#25 + add w16,w16,w21 + ushr v5.4s,v21.4s,#25 + eor w9,w9,w13 + ushr v17.4s,v22.4s,#25 + eor w10,w10,w14 + sli v1.4s,v20.4s,#7 + eor w11,w11,w15 + sli v5.4s,v21.4s,#7 + eor w12,w12,w16 + sli v17.4s,v22.4s,#7 + ror w9,w9,#25 + ext v2.16b,v2.16b,v2.16b,#8 + ror w10,w10,#25 + ext v6.16b,v6.16b,v6.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v3.16b,v3.16b,v3.16b,#12 + ext v7.16b,v7.16b,v7.16b,#12 + ext v19.16b,v19.16b,v19.16b,#12 + ext v1.16b,v1.16b,v1.16b,#4 + ext v5.16b,v5.16b,v5.16b,#4 + ext v17.16b,v17.16b,v17.16b,#4 + add v0.4s,v0.4s,v1.4s + add w5,w5,w10 + add v4.4s,v4.4s,v5.4s + add w6,w6,w11 + add v16.4s,v16.4s,v17.4s + add w7,w7,w12 + eor v3.16b,v3.16b,v0.16b + add w8,w8,w9 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w5 + eor v19.16b,v19.16b,v16.16b + eor w17,w17,w6 + rev32 v3.8h,v3.8h + eor w19,w19,w7 + rev32 v7.8h,v7.8h + eor w20,w20,w8 + rev32 v19.8h,v19.8h + ror w21,w21,#16 + add v2.4s,v2.4s,v3.4s + ror w17,w17,#16 + add v6.4s,v6.4s,v7.4s + ror w19,w19,#16 + add v18.4s,v18.4s,v19.4s + ror w20,w20,#16 + eor v20.16b,v1.16b,v2.16b + add w15,w15,w21 + eor v21.16b,v5.16b,v6.16b + add w16,w16,w17 + eor v22.16b,v17.16b,v18.16b + add w13,w13,w19 + ushr v1.4s,v20.4s,#20 + add w14,w14,w20 + ushr v5.4s,v21.4s,#20 + eor w10,w10,w15 + ushr v17.4s,v22.4s,#20 + eor w11,w11,w16 + sli v1.4s,v20.4s,#12 + eor w12,w12,w13 + sli v5.4s,v21.4s,#12 + eor w9,w9,w14 + sli v17.4s,v22.4s,#12 + ror w10,w10,#20 + add v0.4s,v0.4s,v1.4s + ror w11,w11,#20 + add v4.4s,v4.4s,v5.4s + ror w12,w12,#20 + add v16.4s,v16.4s,v17.4s + ror w9,w9,#20 + eor v20.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v21.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v22.16b,v19.16b,v16.16b + add w7,w7,w12 + ushr v3.4s,v20.4s,#24 + add w8,w8,w9 + ushr v7.4s,v21.4s,#24 + eor w21,w21,w5 + ushr v19.4s,v22.4s,#24 + eor w17,w17,w6 + sli v3.4s,v20.4s,#8 + eor w19,w19,w7 + sli v7.4s,v21.4s,#8 + eor w20,w20,w8 + sli v19.4s,v22.4s,#8 + ror w21,w21,#24 + add v2.4s,v2.4s,v3.4s + ror w17,w17,#24 + add v6.4s,v6.4s,v7.4s + ror w19,w19,#24 + add v18.4s,v18.4s,v19.4s + ror w20,w20,#24 + eor v20.16b,v1.16b,v2.16b + add w15,w15,w21 + eor v21.16b,v5.16b,v6.16b + add w16,w16,w17 + eor v22.16b,v17.16b,v18.16b + add w13,w13,w19 + ushr v1.4s,v20.4s,#25 + add w14,w14,w20 + ushr v5.4s,v21.4s,#25 + eor w10,w10,w15 + ushr v17.4s,v22.4s,#25 + eor w11,w11,w16 + sli v1.4s,v20.4s,#7 + eor w12,w12,w13 + sli v5.4s,v21.4s,#7 + eor w9,w9,w14 + sli v17.4s,v22.4s,#7 + ror w10,w10,#25 + ext v2.16b,v2.16b,v2.16b,#8 + ror w11,w11,#25 + ext v6.16b,v6.16b,v6.16b,#8 + ror w12,w12,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#4 + ext v7.16b,v7.16b,v7.16b,#4 + ext v19.16b,v19.16b,v19.16b,#4 + ext v1.16b,v1.16b,v1.16b,#12 + ext v5.16b,v5.16b,v5.16b,#12 + ext v17.16b,v17.16b,v17.16b,#12 + cbnz x4,Loop_neon + + add w5,w5,w22 // accumulate key block + add v0.4s,v0.4s,v24.4s + add x6,x6,x22,lsr#32 + add v4.4s,v4.4s,v24.4s + add w7,w7,w23 + add v16.4s,v16.4s,v24.4s + add x8,x8,x23,lsr#32 + add v2.4s,v2.4s,v26.4s + add w9,w9,w24 + add v6.4s,v6.4s,v26.4s + add x10,x10,x24,lsr#32 + add v18.4s,v18.4s,v26.4s + add w11,w11,w25 + add v3.4s,v3.4s,v27.4s + add x12,x12,x25,lsr#32 + add w13,w13,w26 + add v7.4s,v7.4s,v28.4s + add x14,x14,x26,lsr#32 + add w15,w15,w27 + add v19.4s,v19.4s,v29.4s + add x16,x16,x27,lsr#32 + add w17,w17,w28 + add v1.4s,v1.4s,v25.4s + add x19,x19,x28,lsr#32 + add w20,w20,w30 + add v5.4s,v5.4s,v25.4s + add x21,x21,x30,lsr#32 + add v17.4s,v17.4s,v25.4s + + b.lo Ltail_neon + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + ldp x6,x8,[x1,#0] // load input + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + ldp x10,x12,[x1,#16] + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + ldp x14,x16,[x1,#32] + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 + ldp x19,x21,[x1,#48] + add x1,x1,#64 +#ifdef __ARMEB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor v0.16b,v0.16b,v20.16b + eor x15,x15,x16 + eor v1.16b,v1.16b,v21.16b + eor x17,x17,x19 + eor v2.16b,v2.16b,v22.16b + eor x20,x20,x21 + eor v3.16b,v3.16b,v23.16b + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#4 // increment counter + stp x9,x11,[x0,#16] + add v27.4s,v27.4s,v31.4s // += 4 + stp x13,x15,[x0,#32] + add v28.4s,v28.4s,v31.4s + stp x17,x20,[x0,#48] + add v29.4s,v29.4s,v31.4s + add x0,x0,#64 + + st1 {v0.16b,v1.16b,v2.16b,v3.16b},[x0],#64 + ld1 {v0.16b,v1.16b,v2.16b,v3.16b},[x1],#64 + + eor v4.16b,v4.16b,v20.16b + eor v5.16b,v5.16b,v21.16b + eor v6.16b,v6.16b,v22.16b + eor v7.16b,v7.16b,v23.16b + st1 {v4.16b,v5.16b,v6.16b,v7.16b},[x0],#64 + + eor v16.16b,v16.16b,v0.16b + eor v17.16b,v17.16b,v1.16b + eor v18.16b,v18.16b,v2.16b + eor v19.16b,v19.16b,v3.16b + st1 {v16.16b,v17.16b,v18.16b,v19.16b},[x0],#64 + + b.hi Loop_outer_neon + + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.long 0xd50323bf // autiasp + ret + +Ltail_neon: + add x2,x2,#256 + cmp x2,#64 + b.lo Less_than_64 + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + ldp x6,x8,[x1,#0] // load input + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + ldp x10,x12,[x1,#16] + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + ldp x14,x16,[x1,#32] + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 + ldp x19,x21,[x1,#48] + add x1,x1,#64 +#ifdef __ARMEB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor x15,x15,x16 + eor x17,x17,x19 + eor x20,x20,x21 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#4 // increment counter + stp x9,x11,[x0,#16] + stp x13,x15,[x0,#32] + stp x17,x20,[x0,#48] + add x0,x0,#64 + b.eq Ldone_neon + sub x2,x2,#64 + cmp x2,#64 + b.lo Less_than_128 + + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + eor v0.16b,v0.16b,v20.16b + eor v1.16b,v1.16b,v21.16b + eor v2.16b,v2.16b,v22.16b + eor v3.16b,v3.16b,v23.16b + st1 {v0.16b,v1.16b,v2.16b,v3.16b},[x0],#64 + b.eq Ldone_neon + sub x2,x2,#64 + cmp x2,#64 + b.lo Less_than_192 + + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + eor v4.16b,v4.16b,v20.16b + eor v5.16b,v5.16b,v21.16b + eor v6.16b,v6.16b,v22.16b + eor v7.16b,v7.16b,v23.16b + st1 {v4.16b,v5.16b,v6.16b,v7.16b},[x0],#64 + b.eq Ldone_neon + sub x2,x2,#64 + + st1 {v16.16b,v17.16b,v18.16b,v19.16b},[sp] + b Last_neon + +Less_than_128: + st1 {v0.16b,v1.16b,v2.16b,v3.16b},[sp] + b Last_neon +Less_than_192: + st1 {v4.16b,v5.16b,v6.16b,v7.16b},[sp] + b Last_neon + +.align 4 +Last_neon: + sub x0,x0,#1 + add x1,x1,x2 + add x0,x0,x2 + add x4,sp,x2 + neg x2,x2 + +Loop_tail_neon: + ldrb w10,[x1,x2] + ldrb w11,[x4,x2] + add x2,x2,#1 + eor w10,w10,w11 + strb w10,[x0,x2] + cbnz x2,Loop_tail_neon + + stp xzr,xzr,[sp,#0] + stp xzr,xzr,[sp,#16] + stp xzr,xzr,[sp,#32] + stp xzr,xzr,[sp,#48] + +Ldone_neon: + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.long 0xd50323bf // autiasp + ret + + +.align 5 +ChaCha20_512_neon: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + + adr x5,Lsigma + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + +L512_or_more_neon: + sub sp,sp,#128+64 + + ldp x22,x23,[x5] // load sigma + ld1 {v24.4s},[x5],#16 + ldp x24,x25,[x3] // load key + ldp x26,x27,[x3,#16] + ld1 {v25.4s,v26.4s},[x3] + ldp x28,x30,[x4] // load counter + ld1 {v27.4s},[x4] + ld1 {v31.4s},[x5] +#ifdef __ARMEB__ + rev64 v24.4s,v24.4s + ror x24,x24,#32 + ror x25,x25,#32 + ror x26,x26,#32 + ror x27,x27,#32 + ror x28,x28,#32 + ror x30,x30,#32 +#endif + add v27.4s,v27.4s,v31.4s // += 1 + stp q24,q25,[sp,#0] // off-load key block, invariant part + add v27.4s,v27.4s,v31.4s // not typo + str q26,[sp,#32] + add v28.4s,v27.4s,v31.4s + add v29.4s,v28.4s,v31.4s + add v30.4s,v29.4s,v31.4s + shl v31.4s,v31.4s,#2 // 1 -> 4 + + stp d8,d9,[sp,#128+0] // meet ABI requirements + stp d10,d11,[sp,#128+16] + stp d12,d13,[sp,#128+32] + stp d14,d15,[sp,#128+48] + + sub x2,x2,#512 // not typo + +Loop_outer_512_neon: + mov v0.16b,v24.16b + mov v4.16b,v24.16b + mov v8.16b,v24.16b + mov v12.16b,v24.16b + mov v16.16b,v24.16b + mov v20.16b,v24.16b + mov v1.16b,v25.16b + mov w5,w22 // unpack key block + mov v5.16b,v25.16b + lsr x6,x22,#32 + mov v9.16b,v25.16b + mov w7,w23 + mov v13.16b,v25.16b + lsr x8,x23,#32 + mov v17.16b,v25.16b + mov w9,w24 + mov v21.16b,v25.16b + lsr x10,x24,#32 + mov v3.16b,v27.16b + mov w11,w25 + mov v7.16b,v28.16b + lsr x12,x25,#32 + mov v11.16b,v29.16b + mov w13,w26 + mov v15.16b,v30.16b + lsr x14,x26,#32 + mov v2.16b,v26.16b + mov w15,w27 + mov v6.16b,v26.16b + lsr x16,x27,#32 + add v19.4s,v3.4s,v31.4s // +4 + mov w17,w28 + add v23.4s,v7.4s,v31.4s // +4 + lsr x19,x28,#32 + mov v10.16b,v26.16b + mov w20,w30 + mov v14.16b,v26.16b + lsr x21,x30,#32 + mov v18.16b,v26.16b + stp q27,q28,[sp,#48] // off-load key block, variable part + mov v22.16b,v26.16b + str q29,[sp,#80] + + mov x4,#5 + subs x2,x2,#512 +Loop_upper_neon: + sub x4,x4,#1 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v8.4s,v8.4s,v9.4s + add w7,w7,w11 + add v12.4s,v12.4s,v13.4s + add w8,w8,w12 + add v16.4s,v16.4s,v17.4s + eor w17,w17,w5 + add v20.4s,v20.4s,v21.4s + eor w19,w19,w6 + eor v3.16b,v3.16b,v0.16b + eor w20,w20,w7 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w8 + eor v11.16b,v11.16b,v8.16b + ror w17,w17,#16 + eor v15.16b,v15.16b,v12.16b + ror w19,w19,#16 + eor v19.16b,v19.16b,v16.16b + ror w20,w20,#16 + eor v23.16b,v23.16b,v20.16b + ror w21,w21,#16 + rev32 v3.8h,v3.8h + add w13,w13,w17 + rev32 v7.8h,v7.8h + add w14,w14,w19 + rev32 v11.8h,v11.8h + add w15,w15,w20 + rev32 v15.8h,v15.8h + add w16,w16,w21 + rev32 v19.8h,v19.8h + eor w9,w9,w13 + rev32 v23.8h,v23.8h + eor w10,w10,w14 + add v2.4s,v2.4s,v3.4s + eor w11,w11,w15 + add v6.4s,v6.4s,v7.4s + eor w12,w12,w16 + add v10.4s,v10.4s,v11.4s + ror w9,w9,#20 + add v14.4s,v14.4s,v15.4s + ror w10,w10,#20 + add v18.4s,v18.4s,v19.4s + ror w11,w11,#20 + add v22.4s,v22.4s,v23.4s + ror w12,w12,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w9 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w10 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w11 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w12 + eor v28.16b,v17.16b,v18.16b + eor w17,w17,w5 + eor v29.16b,v21.16b,v22.16b + eor w19,w19,w6 + ushr v1.4s,v24.4s,#20 + eor w20,w20,w7 + ushr v5.4s,v25.4s,#20 + eor w21,w21,w8 + ushr v9.4s,v26.4s,#20 + ror w17,w17,#24 + ushr v13.4s,v27.4s,#20 + ror w19,w19,#24 + ushr v17.4s,v28.4s,#20 + ror w20,w20,#24 + ushr v21.4s,v29.4s,#20 + ror w21,w21,#24 + sli v1.4s,v24.4s,#12 + add w13,w13,w17 + sli v5.4s,v25.4s,#12 + add w14,w14,w19 + sli v9.4s,v26.4s,#12 + add w15,w15,w20 + sli v13.4s,v27.4s,#12 + add w16,w16,w21 + sli v17.4s,v28.4s,#12 + eor w9,w9,w13 + sli v21.4s,v29.4s,#12 + eor w10,w10,w14 + add v0.4s,v0.4s,v1.4s + eor w11,w11,w15 + add v4.4s,v4.4s,v5.4s + eor w12,w12,w16 + add v8.4s,v8.4s,v9.4s + ror w9,w9,#25 + add v12.4s,v12.4s,v13.4s + ror w10,w10,#25 + add v16.4s,v16.4s,v17.4s + ror w11,w11,#25 + add v20.4s,v20.4s,v21.4s + ror w12,w12,#25 + eor v24.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v25.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v26.16b,v11.16b,v8.16b + add w7,w7,w12 + eor v27.16b,v15.16b,v12.16b + add w8,w8,w9 + eor v28.16b,v19.16b,v16.16b + eor w21,w21,w5 + eor v29.16b,v23.16b,v20.16b + eor w17,w17,w6 + ushr v3.4s,v24.4s,#24 + eor w19,w19,w7 + ushr v7.4s,v25.4s,#24 + eor w20,w20,w8 + ushr v11.4s,v26.4s,#24 + ror w21,w21,#16 + ushr v15.4s,v27.4s,#24 + ror w17,w17,#16 + ushr v19.4s,v28.4s,#24 + ror w19,w19,#16 + ushr v23.4s,v29.4s,#24 + ror w20,w20,#16 + sli v3.4s,v24.4s,#8 + add w15,w15,w21 + sli v7.4s,v25.4s,#8 + add w16,w16,w17 + sli v11.4s,v26.4s,#8 + add w13,w13,w19 + sli v15.4s,v27.4s,#8 + add w14,w14,w20 + sli v19.4s,v28.4s,#8 + eor w10,w10,w15 + sli v23.4s,v29.4s,#8 + eor w11,w11,w16 + add v2.4s,v2.4s,v3.4s + eor w12,w12,w13 + add v6.4s,v6.4s,v7.4s + eor w9,w9,w14 + add v10.4s,v10.4s,v11.4s + ror w10,w10,#20 + add v14.4s,v14.4s,v15.4s + ror w11,w11,#20 + add v18.4s,v18.4s,v19.4s + ror w12,w12,#20 + add v22.4s,v22.4s,v23.4s + ror w9,w9,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w10 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w11 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w12 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w9 + eor v28.16b,v17.16b,v18.16b + eor w21,w21,w5 + eor v29.16b,v21.16b,v22.16b + eor w17,w17,w6 + ushr v1.4s,v24.4s,#25 + eor w19,w19,w7 + ushr v5.4s,v25.4s,#25 + eor w20,w20,w8 + ushr v9.4s,v26.4s,#25 + ror w21,w21,#24 + ushr v13.4s,v27.4s,#25 + ror w17,w17,#24 + ushr v17.4s,v28.4s,#25 + ror w19,w19,#24 + ushr v21.4s,v29.4s,#25 + ror w20,w20,#24 + sli v1.4s,v24.4s,#7 + add w15,w15,w21 + sli v5.4s,v25.4s,#7 + add w16,w16,w17 + sli v9.4s,v26.4s,#7 + add w13,w13,w19 + sli v13.4s,v27.4s,#7 + add w14,w14,w20 + sli v17.4s,v28.4s,#7 + eor w10,w10,w15 + sli v21.4s,v29.4s,#7 + eor w11,w11,w16 + ext v2.16b,v2.16b,v2.16b,#8 + eor w12,w12,w13 + ext v6.16b,v6.16b,v6.16b,#8 + eor w9,w9,w14 + ext v10.16b,v10.16b,v10.16b,#8 + ror w10,w10,#25 + ext v14.16b,v14.16b,v14.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v22.16b,v22.16b,v22.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#12 + ext v7.16b,v7.16b,v7.16b,#12 + ext v11.16b,v11.16b,v11.16b,#12 + ext v15.16b,v15.16b,v15.16b,#12 + ext v19.16b,v19.16b,v19.16b,#12 + ext v23.16b,v23.16b,v23.16b,#12 + ext v1.16b,v1.16b,v1.16b,#4 + ext v5.16b,v5.16b,v5.16b,#4 + ext v9.16b,v9.16b,v9.16b,#4 + ext v13.16b,v13.16b,v13.16b,#4 + ext v17.16b,v17.16b,v17.16b,#4 + ext v21.16b,v21.16b,v21.16b,#4 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v8.4s,v8.4s,v9.4s + add w7,w7,w11 + add v12.4s,v12.4s,v13.4s + add w8,w8,w12 + add v16.4s,v16.4s,v17.4s + eor w17,w17,w5 + add v20.4s,v20.4s,v21.4s + eor w19,w19,w6 + eor v3.16b,v3.16b,v0.16b + eor w20,w20,w7 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w8 + eor v11.16b,v11.16b,v8.16b + ror w17,w17,#16 + eor v15.16b,v15.16b,v12.16b + ror w19,w19,#16 + eor v19.16b,v19.16b,v16.16b + ror w20,w20,#16 + eor v23.16b,v23.16b,v20.16b + ror w21,w21,#16 + rev32 v3.8h,v3.8h + add w13,w13,w17 + rev32 v7.8h,v7.8h + add w14,w14,w19 + rev32 v11.8h,v11.8h + add w15,w15,w20 + rev32 v15.8h,v15.8h + add w16,w16,w21 + rev32 v19.8h,v19.8h + eor w9,w9,w13 + rev32 v23.8h,v23.8h + eor w10,w10,w14 + add v2.4s,v2.4s,v3.4s + eor w11,w11,w15 + add v6.4s,v6.4s,v7.4s + eor w12,w12,w16 + add v10.4s,v10.4s,v11.4s + ror w9,w9,#20 + add v14.4s,v14.4s,v15.4s + ror w10,w10,#20 + add v18.4s,v18.4s,v19.4s + ror w11,w11,#20 + add v22.4s,v22.4s,v23.4s + ror w12,w12,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w9 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w10 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w11 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w12 + eor v28.16b,v17.16b,v18.16b + eor w17,w17,w5 + eor v29.16b,v21.16b,v22.16b + eor w19,w19,w6 + ushr v1.4s,v24.4s,#20 + eor w20,w20,w7 + ushr v5.4s,v25.4s,#20 + eor w21,w21,w8 + ushr v9.4s,v26.4s,#20 + ror w17,w17,#24 + ushr v13.4s,v27.4s,#20 + ror w19,w19,#24 + ushr v17.4s,v28.4s,#20 + ror w20,w20,#24 + ushr v21.4s,v29.4s,#20 + ror w21,w21,#24 + sli v1.4s,v24.4s,#12 + add w13,w13,w17 + sli v5.4s,v25.4s,#12 + add w14,w14,w19 + sli v9.4s,v26.4s,#12 + add w15,w15,w20 + sli v13.4s,v27.4s,#12 + add w16,w16,w21 + sli v17.4s,v28.4s,#12 + eor w9,w9,w13 + sli v21.4s,v29.4s,#12 + eor w10,w10,w14 + add v0.4s,v0.4s,v1.4s + eor w11,w11,w15 + add v4.4s,v4.4s,v5.4s + eor w12,w12,w16 + add v8.4s,v8.4s,v9.4s + ror w9,w9,#25 + add v12.4s,v12.4s,v13.4s + ror w10,w10,#25 + add v16.4s,v16.4s,v17.4s + ror w11,w11,#25 + add v20.4s,v20.4s,v21.4s + ror w12,w12,#25 + eor v24.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v25.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v26.16b,v11.16b,v8.16b + add w7,w7,w12 + eor v27.16b,v15.16b,v12.16b + add w8,w8,w9 + eor v28.16b,v19.16b,v16.16b + eor w21,w21,w5 + eor v29.16b,v23.16b,v20.16b + eor w17,w17,w6 + ushr v3.4s,v24.4s,#24 + eor w19,w19,w7 + ushr v7.4s,v25.4s,#24 + eor w20,w20,w8 + ushr v11.4s,v26.4s,#24 + ror w21,w21,#16 + ushr v15.4s,v27.4s,#24 + ror w17,w17,#16 + ushr v19.4s,v28.4s,#24 + ror w19,w19,#16 + ushr v23.4s,v29.4s,#24 + ror w20,w20,#16 + sli v3.4s,v24.4s,#8 + add w15,w15,w21 + sli v7.4s,v25.4s,#8 + add w16,w16,w17 + sli v11.4s,v26.4s,#8 + add w13,w13,w19 + sli v15.4s,v27.4s,#8 + add w14,w14,w20 + sli v19.4s,v28.4s,#8 + eor w10,w10,w15 + sli v23.4s,v29.4s,#8 + eor w11,w11,w16 + add v2.4s,v2.4s,v3.4s + eor w12,w12,w13 + add v6.4s,v6.4s,v7.4s + eor w9,w9,w14 + add v10.4s,v10.4s,v11.4s + ror w10,w10,#20 + add v14.4s,v14.4s,v15.4s + ror w11,w11,#20 + add v18.4s,v18.4s,v19.4s + ror w12,w12,#20 + add v22.4s,v22.4s,v23.4s + ror w9,w9,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w10 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w11 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w12 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w9 + eor v28.16b,v17.16b,v18.16b + eor w21,w21,w5 + eor v29.16b,v21.16b,v22.16b + eor w17,w17,w6 + ushr v1.4s,v24.4s,#25 + eor w19,w19,w7 + ushr v5.4s,v25.4s,#25 + eor w20,w20,w8 + ushr v9.4s,v26.4s,#25 + ror w21,w21,#24 + ushr v13.4s,v27.4s,#25 + ror w17,w17,#24 + ushr v17.4s,v28.4s,#25 + ror w19,w19,#24 + ushr v21.4s,v29.4s,#25 + ror w20,w20,#24 + sli v1.4s,v24.4s,#7 + add w15,w15,w21 + sli v5.4s,v25.4s,#7 + add w16,w16,w17 + sli v9.4s,v26.4s,#7 + add w13,w13,w19 + sli v13.4s,v27.4s,#7 + add w14,w14,w20 + sli v17.4s,v28.4s,#7 + eor w10,w10,w15 + sli v21.4s,v29.4s,#7 + eor w11,w11,w16 + ext v2.16b,v2.16b,v2.16b,#8 + eor w12,w12,w13 + ext v6.16b,v6.16b,v6.16b,#8 + eor w9,w9,w14 + ext v10.16b,v10.16b,v10.16b,#8 + ror w10,w10,#25 + ext v14.16b,v14.16b,v14.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v22.16b,v22.16b,v22.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#4 + ext v7.16b,v7.16b,v7.16b,#4 + ext v11.16b,v11.16b,v11.16b,#4 + ext v15.16b,v15.16b,v15.16b,#4 + ext v19.16b,v19.16b,v19.16b,#4 + ext v23.16b,v23.16b,v23.16b,#4 + ext v1.16b,v1.16b,v1.16b,#12 + ext v5.16b,v5.16b,v5.16b,#12 + ext v9.16b,v9.16b,v9.16b,#12 + ext v13.16b,v13.16b,v13.16b,#12 + ext v17.16b,v17.16b,v17.16b,#12 + ext v21.16b,v21.16b,v21.16b,#12 + cbnz x4,Loop_upper_neon + + add w5,w5,w22 // accumulate key block + add x6,x6,x22,lsr#32 + add w7,w7,w23 + add x8,x8,x23,lsr#32 + add w9,w9,w24 + add x10,x10,x24,lsr#32 + add w11,w11,w25 + add x12,x12,x25,lsr#32 + add w13,w13,w26 + add x14,x14,x26,lsr#32 + add w15,w15,w27 + add x16,x16,x27,lsr#32 + add w17,w17,w28 + add x19,x19,x28,lsr#32 + add w20,w20,w30 + add x21,x21,x30,lsr#32 + + add x5,x5,x6,lsl#32 // pack + add x7,x7,x8,lsl#32 + ldp x6,x8,[x1,#0] // load input + add x9,x9,x10,lsl#32 + add x11,x11,x12,lsl#32 + ldp x10,x12,[x1,#16] + add x13,x13,x14,lsl#32 + add x15,x15,x16,lsl#32 + ldp x14,x16,[x1,#32] + add x17,x17,x19,lsl#32 + add x20,x20,x21,lsl#32 + ldp x19,x21,[x1,#48] + add x1,x1,#64 +#ifdef __ARMEB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor x15,x15,x16 + eor x17,x17,x19 + eor x20,x20,x21 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#1 // increment counter + mov w5,w22 // unpack key block + lsr x6,x22,#32 + stp x9,x11,[x0,#16] + mov w7,w23 + lsr x8,x23,#32 + stp x13,x15,[x0,#32] + mov w9,w24 + lsr x10,x24,#32 + stp x17,x20,[x0,#48] + add x0,x0,#64 + mov w11,w25 + lsr x12,x25,#32 + mov w13,w26 + lsr x14,x26,#32 + mov w15,w27 + lsr x16,x27,#32 + mov w17,w28 + lsr x19,x28,#32 + mov w20,w30 + lsr x21,x30,#32 + + mov x4,#5 +Loop_lower_neon: + sub x4,x4,#1 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v8.4s,v8.4s,v9.4s + add w7,w7,w11 + add v12.4s,v12.4s,v13.4s + add w8,w8,w12 + add v16.4s,v16.4s,v17.4s + eor w17,w17,w5 + add v20.4s,v20.4s,v21.4s + eor w19,w19,w6 + eor v3.16b,v3.16b,v0.16b + eor w20,w20,w7 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w8 + eor v11.16b,v11.16b,v8.16b + ror w17,w17,#16 + eor v15.16b,v15.16b,v12.16b + ror w19,w19,#16 + eor v19.16b,v19.16b,v16.16b + ror w20,w20,#16 + eor v23.16b,v23.16b,v20.16b + ror w21,w21,#16 + rev32 v3.8h,v3.8h + add w13,w13,w17 + rev32 v7.8h,v7.8h + add w14,w14,w19 + rev32 v11.8h,v11.8h + add w15,w15,w20 + rev32 v15.8h,v15.8h + add w16,w16,w21 + rev32 v19.8h,v19.8h + eor w9,w9,w13 + rev32 v23.8h,v23.8h + eor w10,w10,w14 + add v2.4s,v2.4s,v3.4s + eor w11,w11,w15 + add v6.4s,v6.4s,v7.4s + eor w12,w12,w16 + add v10.4s,v10.4s,v11.4s + ror w9,w9,#20 + add v14.4s,v14.4s,v15.4s + ror w10,w10,#20 + add v18.4s,v18.4s,v19.4s + ror w11,w11,#20 + add v22.4s,v22.4s,v23.4s + ror w12,w12,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w9 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w10 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w11 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w12 + eor v28.16b,v17.16b,v18.16b + eor w17,w17,w5 + eor v29.16b,v21.16b,v22.16b + eor w19,w19,w6 + ushr v1.4s,v24.4s,#20 + eor w20,w20,w7 + ushr v5.4s,v25.4s,#20 + eor w21,w21,w8 + ushr v9.4s,v26.4s,#20 + ror w17,w17,#24 + ushr v13.4s,v27.4s,#20 + ror w19,w19,#24 + ushr v17.4s,v28.4s,#20 + ror w20,w20,#24 + ushr v21.4s,v29.4s,#20 + ror w21,w21,#24 + sli v1.4s,v24.4s,#12 + add w13,w13,w17 + sli v5.4s,v25.4s,#12 + add w14,w14,w19 + sli v9.4s,v26.4s,#12 + add w15,w15,w20 + sli v13.4s,v27.4s,#12 + add w16,w16,w21 + sli v17.4s,v28.4s,#12 + eor w9,w9,w13 + sli v21.4s,v29.4s,#12 + eor w10,w10,w14 + add v0.4s,v0.4s,v1.4s + eor w11,w11,w15 + add v4.4s,v4.4s,v5.4s + eor w12,w12,w16 + add v8.4s,v8.4s,v9.4s + ror w9,w9,#25 + add v12.4s,v12.4s,v13.4s + ror w10,w10,#25 + add v16.4s,v16.4s,v17.4s + ror w11,w11,#25 + add v20.4s,v20.4s,v21.4s + ror w12,w12,#25 + eor v24.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v25.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v26.16b,v11.16b,v8.16b + add w7,w7,w12 + eor v27.16b,v15.16b,v12.16b + add w8,w8,w9 + eor v28.16b,v19.16b,v16.16b + eor w21,w21,w5 + eor v29.16b,v23.16b,v20.16b + eor w17,w17,w6 + ushr v3.4s,v24.4s,#24 + eor w19,w19,w7 + ushr v7.4s,v25.4s,#24 + eor w20,w20,w8 + ushr v11.4s,v26.4s,#24 + ror w21,w21,#16 + ushr v15.4s,v27.4s,#24 + ror w17,w17,#16 + ushr v19.4s,v28.4s,#24 + ror w19,w19,#16 + ushr v23.4s,v29.4s,#24 + ror w20,w20,#16 + sli v3.4s,v24.4s,#8 + add w15,w15,w21 + sli v7.4s,v25.4s,#8 + add w16,w16,w17 + sli v11.4s,v26.4s,#8 + add w13,w13,w19 + sli v15.4s,v27.4s,#8 + add w14,w14,w20 + sli v19.4s,v28.4s,#8 + eor w10,w10,w15 + sli v23.4s,v29.4s,#8 + eor w11,w11,w16 + add v2.4s,v2.4s,v3.4s + eor w12,w12,w13 + add v6.4s,v6.4s,v7.4s + eor w9,w9,w14 + add v10.4s,v10.4s,v11.4s + ror w10,w10,#20 + add v14.4s,v14.4s,v15.4s + ror w11,w11,#20 + add v18.4s,v18.4s,v19.4s + ror w12,w12,#20 + add v22.4s,v22.4s,v23.4s + ror w9,w9,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w10 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w11 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w12 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w9 + eor v28.16b,v17.16b,v18.16b + eor w21,w21,w5 + eor v29.16b,v21.16b,v22.16b + eor w17,w17,w6 + ushr v1.4s,v24.4s,#25 + eor w19,w19,w7 + ushr v5.4s,v25.4s,#25 + eor w20,w20,w8 + ushr v9.4s,v26.4s,#25 + ror w21,w21,#24 + ushr v13.4s,v27.4s,#25 + ror w17,w17,#24 + ushr v17.4s,v28.4s,#25 + ror w19,w19,#24 + ushr v21.4s,v29.4s,#25 + ror w20,w20,#24 + sli v1.4s,v24.4s,#7 + add w15,w15,w21 + sli v5.4s,v25.4s,#7 + add w16,w16,w17 + sli v9.4s,v26.4s,#7 + add w13,w13,w19 + sli v13.4s,v27.4s,#7 + add w14,w14,w20 + sli v17.4s,v28.4s,#7 + eor w10,w10,w15 + sli v21.4s,v29.4s,#7 + eor w11,w11,w16 + ext v2.16b,v2.16b,v2.16b,#8 + eor w12,w12,w13 + ext v6.16b,v6.16b,v6.16b,#8 + eor w9,w9,w14 + ext v10.16b,v10.16b,v10.16b,#8 + ror w10,w10,#25 + ext v14.16b,v14.16b,v14.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v22.16b,v22.16b,v22.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#12 + ext v7.16b,v7.16b,v7.16b,#12 + ext v11.16b,v11.16b,v11.16b,#12 + ext v15.16b,v15.16b,v15.16b,#12 + ext v19.16b,v19.16b,v19.16b,#12 + ext v23.16b,v23.16b,v23.16b,#12 + ext v1.16b,v1.16b,v1.16b,#4 + ext v5.16b,v5.16b,v5.16b,#4 + ext v9.16b,v9.16b,v9.16b,#4 + ext v13.16b,v13.16b,v13.16b,#4 + ext v17.16b,v17.16b,v17.16b,#4 + ext v21.16b,v21.16b,v21.16b,#4 + add v0.4s,v0.4s,v1.4s + add w5,w5,w9 + add v4.4s,v4.4s,v5.4s + add w6,w6,w10 + add v8.4s,v8.4s,v9.4s + add w7,w7,w11 + add v12.4s,v12.4s,v13.4s + add w8,w8,w12 + add v16.4s,v16.4s,v17.4s + eor w17,w17,w5 + add v20.4s,v20.4s,v21.4s + eor w19,w19,w6 + eor v3.16b,v3.16b,v0.16b + eor w20,w20,w7 + eor v7.16b,v7.16b,v4.16b + eor w21,w21,w8 + eor v11.16b,v11.16b,v8.16b + ror w17,w17,#16 + eor v15.16b,v15.16b,v12.16b + ror w19,w19,#16 + eor v19.16b,v19.16b,v16.16b + ror w20,w20,#16 + eor v23.16b,v23.16b,v20.16b + ror w21,w21,#16 + rev32 v3.8h,v3.8h + add w13,w13,w17 + rev32 v7.8h,v7.8h + add w14,w14,w19 + rev32 v11.8h,v11.8h + add w15,w15,w20 + rev32 v15.8h,v15.8h + add w16,w16,w21 + rev32 v19.8h,v19.8h + eor w9,w9,w13 + rev32 v23.8h,v23.8h + eor w10,w10,w14 + add v2.4s,v2.4s,v3.4s + eor w11,w11,w15 + add v6.4s,v6.4s,v7.4s + eor w12,w12,w16 + add v10.4s,v10.4s,v11.4s + ror w9,w9,#20 + add v14.4s,v14.4s,v15.4s + ror w10,w10,#20 + add v18.4s,v18.4s,v19.4s + ror w11,w11,#20 + add v22.4s,v22.4s,v23.4s + ror w12,w12,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w9 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w10 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w11 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w12 + eor v28.16b,v17.16b,v18.16b + eor w17,w17,w5 + eor v29.16b,v21.16b,v22.16b + eor w19,w19,w6 + ushr v1.4s,v24.4s,#20 + eor w20,w20,w7 + ushr v5.4s,v25.4s,#20 + eor w21,w21,w8 + ushr v9.4s,v26.4s,#20 + ror w17,w17,#24 + ushr v13.4s,v27.4s,#20 + ror w19,w19,#24 + ushr v17.4s,v28.4s,#20 + ror w20,w20,#24 + ushr v21.4s,v29.4s,#20 + ror w21,w21,#24 + sli v1.4s,v24.4s,#12 + add w13,w13,w17 + sli v5.4s,v25.4s,#12 + add w14,w14,w19 + sli v9.4s,v26.4s,#12 + add w15,w15,w20 + sli v13.4s,v27.4s,#12 + add w16,w16,w21 + sli v17.4s,v28.4s,#12 + eor w9,w9,w13 + sli v21.4s,v29.4s,#12 + eor w10,w10,w14 + add v0.4s,v0.4s,v1.4s + eor w11,w11,w15 + add v4.4s,v4.4s,v5.4s + eor w12,w12,w16 + add v8.4s,v8.4s,v9.4s + ror w9,w9,#25 + add v12.4s,v12.4s,v13.4s + ror w10,w10,#25 + add v16.4s,v16.4s,v17.4s + ror w11,w11,#25 + add v20.4s,v20.4s,v21.4s + ror w12,w12,#25 + eor v24.16b,v3.16b,v0.16b + add w5,w5,w10 + eor v25.16b,v7.16b,v4.16b + add w6,w6,w11 + eor v26.16b,v11.16b,v8.16b + add w7,w7,w12 + eor v27.16b,v15.16b,v12.16b + add w8,w8,w9 + eor v28.16b,v19.16b,v16.16b + eor w21,w21,w5 + eor v29.16b,v23.16b,v20.16b + eor w17,w17,w6 + ushr v3.4s,v24.4s,#24 + eor w19,w19,w7 + ushr v7.4s,v25.4s,#24 + eor w20,w20,w8 + ushr v11.4s,v26.4s,#24 + ror w21,w21,#16 + ushr v15.4s,v27.4s,#24 + ror w17,w17,#16 + ushr v19.4s,v28.4s,#24 + ror w19,w19,#16 + ushr v23.4s,v29.4s,#24 + ror w20,w20,#16 + sli v3.4s,v24.4s,#8 + add w15,w15,w21 + sli v7.4s,v25.4s,#8 + add w16,w16,w17 + sli v11.4s,v26.4s,#8 + add w13,w13,w19 + sli v15.4s,v27.4s,#8 + add w14,w14,w20 + sli v19.4s,v28.4s,#8 + eor w10,w10,w15 + sli v23.4s,v29.4s,#8 + eor w11,w11,w16 + add v2.4s,v2.4s,v3.4s + eor w12,w12,w13 + add v6.4s,v6.4s,v7.4s + eor w9,w9,w14 + add v10.4s,v10.4s,v11.4s + ror w10,w10,#20 + add v14.4s,v14.4s,v15.4s + ror w11,w11,#20 + add v18.4s,v18.4s,v19.4s + ror w12,w12,#20 + add v22.4s,v22.4s,v23.4s + ror w9,w9,#20 + eor v24.16b,v1.16b,v2.16b + add w5,w5,w10 + eor v25.16b,v5.16b,v6.16b + add w6,w6,w11 + eor v26.16b,v9.16b,v10.16b + add w7,w7,w12 + eor v27.16b,v13.16b,v14.16b + add w8,w8,w9 + eor v28.16b,v17.16b,v18.16b + eor w21,w21,w5 + eor v29.16b,v21.16b,v22.16b + eor w17,w17,w6 + ushr v1.4s,v24.4s,#25 + eor w19,w19,w7 + ushr v5.4s,v25.4s,#25 + eor w20,w20,w8 + ushr v9.4s,v26.4s,#25 + ror w21,w21,#24 + ushr v13.4s,v27.4s,#25 + ror w17,w17,#24 + ushr v17.4s,v28.4s,#25 + ror w19,w19,#24 + ushr v21.4s,v29.4s,#25 + ror w20,w20,#24 + sli v1.4s,v24.4s,#7 + add w15,w15,w21 + sli v5.4s,v25.4s,#7 + add w16,w16,w17 + sli v9.4s,v26.4s,#7 + add w13,w13,w19 + sli v13.4s,v27.4s,#7 + add w14,w14,w20 + sli v17.4s,v28.4s,#7 + eor w10,w10,w15 + sli v21.4s,v29.4s,#7 + eor w11,w11,w16 + ext v2.16b,v2.16b,v2.16b,#8 + eor w12,w12,w13 + ext v6.16b,v6.16b,v6.16b,#8 + eor w9,w9,w14 + ext v10.16b,v10.16b,v10.16b,#8 + ror w10,w10,#25 + ext v14.16b,v14.16b,v14.16b,#8 + ror w11,w11,#25 + ext v18.16b,v18.16b,v18.16b,#8 + ror w12,w12,#25 + ext v22.16b,v22.16b,v22.16b,#8 + ror w9,w9,#25 + ext v3.16b,v3.16b,v3.16b,#4 + ext v7.16b,v7.16b,v7.16b,#4 + ext v11.16b,v11.16b,v11.16b,#4 + ext v15.16b,v15.16b,v15.16b,#4 + ext v19.16b,v19.16b,v19.16b,#4 + ext v23.16b,v23.16b,v23.16b,#4 + ext v1.16b,v1.16b,v1.16b,#12 + ext v5.16b,v5.16b,v5.16b,#12 + ext v9.16b,v9.16b,v9.16b,#12 + ext v13.16b,v13.16b,v13.16b,#12 + ext v17.16b,v17.16b,v17.16b,#12 + ext v21.16b,v21.16b,v21.16b,#12 + cbnz x4,Loop_lower_neon + + add w5,w5,w22 // accumulate key block + ldp q24,q25,[sp,#0] + add x6,x6,x22,lsr#32 + ldp q26,q27,[sp,#32] + add w7,w7,w23 + ldp q28,q29,[sp,#64] + add x8,x8,x23,lsr#32 + add v0.4s,v0.4s,v24.4s + add w9,w9,w24 + add v4.4s,v4.4s,v24.4s + add x10,x10,x24,lsr#32 + add v8.4s,v8.4s,v24.4s + add w11,w11,w25 + add v12.4s,v12.4s,v24.4s + add x12,x12,x25,lsr#32 + add v16.4s,v16.4s,v24.4s + add w13,w13,w26 + add v20.4s,v20.4s,v24.4s + add x14,x14,x26,lsr#32 + add v2.4s,v2.4s,v26.4s + add w15,w15,w27 + add v6.4s,v6.4s,v26.4s + add x16,x16,x27,lsr#32 + add v10.4s,v10.4s,v26.4s + add w17,w17,w28 + add v14.4s,v14.4s,v26.4s + add x19,x19,x28,lsr#32 + add v18.4s,v18.4s,v26.4s + add w20,w20,w30 + add v22.4s,v22.4s,v26.4s + add x21,x21,x30,lsr#32 + add v19.4s,v19.4s,v31.4s // +4 + add x5,x5,x6,lsl#32 // pack + add v23.4s,v23.4s,v31.4s // +4 + add x7,x7,x8,lsl#32 + add v3.4s,v3.4s,v27.4s + ldp x6,x8,[x1,#0] // load input + add v7.4s,v7.4s,v28.4s + add x9,x9,x10,lsl#32 + add v11.4s,v11.4s,v29.4s + add x11,x11,x12,lsl#32 + add v15.4s,v15.4s,v30.4s + ldp x10,x12,[x1,#16] + add v19.4s,v19.4s,v27.4s + add x13,x13,x14,lsl#32 + add v23.4s,v23.4s,v28.4s + add x15,x15,x16,lsl#32 + add v1.4s,v1.4s,v25.4s + ldp x14,x16,[x1,#32] + add v5.4s,v5.4s,v25.4s + add x17,x17,x19,lsl#32 + add v9.4s,v9.4s,v25.4s + add x20,x20,x21,lsl#32 + add v13.4s,v13.4s,v25.4s + ldp x19,x21,[x1,#48] + add v17.4s,v17.4s,v25.4s + add x1,x1,#64 + add v21.4s,v21.4s,v25.4s + +#ifdef __ARMEB__ + rev x5,x5 + rev x7,x7 + rev x9,x9 + rev x11,x11 + rev x13,x13 + rev x15,x15 + rev x17,x17 + rev x20,x20 +#endif + ld1 {v24.16b,v25.16b,v26.16b,v27.16b},[x1],#64 + eor x5,x5,x6 + eor x7,x7,x8 + eor x9,x9,x10 + eor x11,x11,x12 + eor x13,x13,x14 + eor v0.16b,v0.16b,v24.16b + eor x15,x15,x16 + eor v1.16b,v1.16b,v25.16b + eor x17,x17,x19 + eor v2.16b,v2.16b,v26.16b + eor x20,x20,x21 + eor v3.16b,v3.16b,v27.16b + ld1 {v24.16b,v25.16b,v26.16b,v27.16b},[x1],#64 + + stp x5,x7,[x0,#0] // store output + add x28,x28,#7 // increment counter + stp x9,x11,[x0,#16] + stp x13,x15,[x0,#32] + stp x17,x20,[x0,#48] + add x0,x0,#64 + st1 {v0.16b,v1.16b,v2.16b,v3.16b},[x0],#64 + + ld1 {v0.16b,v1.16b,v2.16b,v3.16b},[x1],#64 + eor v4.16b,v4.16b,v24.16b + eor v5.16b,v5.16b,v25.16b + eor v6.16b,v6.16b,v26.16b + eor v7.16b,v7.16b,v27.16b + st1 {v4.16b,v5.16b,v6.16b,v7.16b},[x0],#64 + + ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64 + eor v8.16b,v8.16b,v0.16b + ldp q24,q25,[sp,#0] + eor v9.16b,v9.16b,v1.16b + ldp q26,q27,[sp,#32] + eor v10.16b,v10.16b,v2.16b + eor v11.16b,v11.16b,v3.16b + st1 {v8.16b,v9.16b,v10.16b,v11.16b},[x0],#64 + + ld1 {v8.16b,v9.16b,v10.16b,v11.16b},[x1],#64 + eor v12.16b,v12.16b,v4.16b + eor v13.16b,v13.16b,v5.16b + eor v14.16b,v14.16b,v6.16b + eor v15.16b,v15.16b,v7.16b + st1 {v12.16b,v13.16b,v14.16b,v15.16b},[x0],#64 + + ld1 {v12.16b,v13.16b,v14.16b,v15.16b},[x1],#64 + eor v16.16b,v16.16b,v8.16b + eor v17.16b,v17.16b,v9.16b + eor v18.16b,v18.16b,v10.16b + eor v19.16b,v19.16b,v11.16b + st1 {v16.16b,v17.16b,v18.16b,v19.16b},[x0],#64 + + shl v0.4s,v31.4s,#1 // 4 -> 8 + eor v20.16b,v20.16b,v12.16b + eor v21.16b,v21.16b,v13.16b + eor v22.16b,v22.16b,v14.16b + eor v23.16b,v23.16b,v15.16b + st1 {v20.16b,v21.16b,v22.16b,v23.16b},[x0],#64 + + add v27.4s,v27.4s,v0.4s // += 8 + add v28.4s,v28.4s,v0.4s + add v29.4s,v29.4s,v0.4s + add v30.4s,v30.4s,v0.4s + + b.hs Loop_outer_512_neon + + adds x2,x2,#512 + ushr v0.4s,v31.4s,#2 // 4 -> 1 + + ldp d8,d9,[sp,#128+0] // meet ABI requirements + ldp d10,d11,[sp,#128+16] + ldp d12,d13,[sp,#128+32] + ldp d14,d15,[sp,#128+48] + + stp q24,q31,[sp,#0] // wipe off-load area + stp q24,q31,[sp,#32] + stp q24,q31,[sp,#64] + + b.eq Ldone_512_neon + + cmp x2,#192 + sub v27.4s,v27.4s,v0.4s // -= 1 + sub v28.4s,v28.4s,v0.4s + sub v29.4s,v29.4s,v0.4s + add sp,sp,#128 + b.hs Loop_outer_neon + + eor v25.16b,v25.16b,v25.16b + eor v26.16b,v26.16b,v26.16b + eor v27.16b,v27.16b,v27.16b + eor v28.16b,v28.16b,v28.16b + eor v29.16b,v29.16b,v29.16b + eor v30.16b,v30.16b,v30.16b + b Loop_outer + +Ldone_512_neon: + ldp x19,x20,[x29,#16] + add sp,sp,#128+64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.long 0xd50323bf // autiasp + ret + diff --git a/vere/ext/openssl/gen/macos-aarch64/crypto/ec/ecp_nistz256-armv8.S b/vere/ext/openssl/gen/macos-aarch64/crypto/ec/ecp_nistz256-armv8.S new file mode 100644 index 0000000..7462e6b --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/crypto/ec/ecp_nistz256-armv8.S @@ -0,0 +1,4242 @@ +#include "arm_arch.h" + +.text +.globl _ecp_nistz256_precomputed + +.align 12 +_ecp_nistz256_precomputed: +.byte 0x3c,0x4d,0x27,0xcc,0xf5,0x4a,0x4f,0x8f,0xe8,0xc8,0x04,0x68,0x09,0x4a,0x5b,0x80,0x9d,0x7a,0xe8,0x31,0x08,0x76,0x68,0x19,0x9f,0x08,0xb4,0x1f,0x32,0x43,0x89,0xd8,0x34,0xd3,0xf5,0xb7,0xb5,0xee,0x42,0x3e,0x91,0x01,0x06,0x7c,0xbf,0xd9,0x97,0x12,0xd3,0x1a,0xc9,0x04,0x8d,0x53,0x83,0x14,0x28,0xf0,0x8e,0x19,0xcc,0x91,0xe5,0x80 +.byte 0x14,0xd6,0xc1,0x8d,0x61,0x66,0x3b,0xa7,0x20,0x1e,0xe4,0x77,0xd7,0x66,0x05,0xfb,0x5c,0xa9,0x9a,0x7a,0xb2,0x30,0x50,0x28,0x87,0x80,0xfe,0xcd,0xe1,0xb3,0xff,0xa3,0x45,0x3c,0x7e,0x9b,0x08,0xc0,0xc1,0x9f,0x2e,0xad,0x7d,0x89,0x79,0x90,0x60,0xc6,0xac,0x17,0x64,0x59,0x4d,0xcf,0x56,0x7a,0xca,0x82,0xaa,0x6e,0x04,0x2f,0x1f,0x8b +.byte 0xa9,0xdd,0xeb,0x91,0x5c,0x77,0x17,0x99,0x4e,0xc2,0x45,0x69,0x2e,0xcf,0x60,0xc6,0x3c,0xad,0x65,0x33,0x35,0x6f,0xe4,0xd0,0x37,0x1f,0xe2,0x2c,0x66,0x98,0x55,0xe3,0x66,0xa2,0xc6,0x21,0xce,0x63,0x59,0x2e,0xd2,0x2b,0x8a,0x5a,0xcd,0xee,0xa7,0xad,0xf6,0x8c,0x3f,0x44,0x6c,0x12,0x30,0x8d,0xca,0xea,0x46,0x8a,0x4c,0x96,0xf9,0x96 +.byte 0x18,0x10,0x4e,0x46,0xc4,0x3e,0xa0,0x94,0x26,0x9d,0x62,0xd2,0x4b,0xb0,0xbc,0x0b,0xd5,0x56,0xa5,0xd2,0xc1,0x2f,0x2d,0x15,0xd8,0xed,0x97,0x17,0xcb,0x32,0x67,0xc5,0x0f,0x7c,0xde,0xa8,0x8c,0x4d,0xa0,0xb8,0x2e,0xed,0x24,0xd5,0xd5,0x49,0xca,0x77,0x1f,0x48,0x3b,0x83,0x54,0xb2,0xe7,0x7e,0x7a,0xa7,0x5c,0xed,0x7f,0xa1,0x9f,0x05 +.byte 0xd4,0xd4,0x90,0x0d,0xae,0x37,0x4e,0xd1,0x8f,0xd1,0x0a,0xa7,0x63,0x5b,0xb7,0x65,0xcb,0xc8,0xba,0x29,0xec,0x35,0x53,0xb2,0xac,0x32,0xf4,0xb7,0x6a,0xb1,0x69,0xcf,0x56,0x14,0x7f,0xd6,0xc5,0xca,0x88,0x1d,0x49,0xcf,0xfd,0x1f,0xcc,0xb1,0x13,0x30,0x42,0xd0,0x1c,0x6e,0x38,0x8e,0xf9,0x40,0xe7,0xe8,0xd6,0x28,0x1a,0x75,0x31,0xf3 +.byte 0x30,0x46,0x3f,0xb5,0x8a,0x47,0x35,0x4c,0x6e,0xdb,0x26,0x1a,0x25,0xa3,0xd8,0x0b,0x1d,0x51,0x12,0x91,0x4c,0x11,0x76,0x83,0x19,0xad,0x2a,0x3e,0xb4,0x1c,0x3c,0xfc,0x14,0x20,0x84,0x58,0x7b,0xc3,0x94,0x68,0x60,0x5c,0x3f,0x7c,0x26,0xb5,0x75,0x41,0x0b,0xc2,0xec,0xf3,0x96,0x5b,0xbb,0x41,0x32,0x00,0x4e,0x68,0xeb,0xf1,0xd9,0x96 +.byte 0xe7,0x00,0xac,0xb0,0x1b,0x39,0x46,0xf1,0xc9,0x18,0x7d,0xb7,0xc4,0x42,0xbc,0x8b,0x09,0x3e,0xa9,0x97,0x2e,0xc6,0xf8,0x38,0xa3,0xe4,0x2c,0x52,0x5d,0x24,0xf7,0xc5,0x15,0xab,0x16,0x5e,0x46,0x2c,0xd8,0xd7,0x4d,0xb3,0xf2,0xfd,0xe4,0x75,0x3c,0x34,0x95,0xb9,0x8c,0x92,0x35,0x42,0x8b,0xc4,0xc8,0x6c,0xd4,0x1e,0x67,0x35,0xd3,0x6d +.byte 0x79,0x85,0xff,0x74,0xbe,0x40,0x07,0x27,0x75,0x2c,0xea,0x04,0xcc,0xa2,0x72,0x80,0x97,0x5f,0xfe,0x8a,0x56,0x0f,0xf4,0x6d,0xa4,0x61,0x04,0x4b,0x5e,0xb4,0xe2,0xd8,0x87,0xb6,0xfd,0x3d,0x00,0x8a,0xa9,0xe4,0x62,0x5f,0x4f,0xec,0x1e,0x40,0x28,0x6b,0x21,0x0f,0x50,0x26,0x97,0xa0,0x25,0x8f,0x3e,0xf2,0x69,0xdc,0x36,0xe5,0xb8,0xdb +.byte 0x01,0x7d,0xfb,0x73,0x7d,0x3e,0xf7,0x55,0x41,0x39,0xe0,0x33,0x0d,0xe3,0x4b,0x6b,0x7b,0x3e,0x6e,0xdc,0x7d,0x9a,0x6e,0x35,0xb0,0x38,0x13,0x92,0x80,0xa1,0xe6,0xbf,0x03,0x9d,0xb7,0x7f,0x55,0xce,0x46,0x3c,0x22,0xc7,0xfa,0xfb,0x18,0xba,0x06,0xa0,0x09,0x78,0x3f,0xc0,0x79,0x5f,0xe6,0x6a,0x29,0xaf,0xd1,0xc7,0x84,0xa7,0xed,0xb9 +.byte 0xb6,0x82,0x81,0xc1,0x53,0xee,0x00,0x34,0xa8,0x81,0xdf,0x5a,0xd3,0x07,0x7e,0x2e,0x17,0x40,0xa1,0x2b,0xf4,0x2a,0x1f,0x9a,0x67,0x75,0x73,0xa8,0x58,0x65,0x17,0xdf,0xf1,0x84,0x76,0xc5,0x8d,0x48,0x93,0xe1,0x28,0xa5,0x73,0x10,0x6e,0x9e,0x39,0x03,0x69,0x52,0xdf,0xf9,0x46,0x7c,0x5b,0xf3,0x5b,0x9a,0x63,0xd9,0x4f,0xf5,0x8e,0x73 +.byte 0xed,0x33,0x7d,0x23,0xb9,0x6c,0x3c,0x9b,0xa7,0xcf,0x7f,0x34,0x6f,0x97,0xe2,0xfe,0x0a,0x8b,0xe1,0x86,0x83,0x91,0x2e,0xdd,0x6b,0xb1,0xbf,0xa6,0x92,0x4f,0x30,0x79,0x68,0x91,0x3e,0x06,0x17,0xe9,0x0b,0x25,0x07,0xa6,0x88,0x91,0x6c,0x6e,0xc8,0xd8,0xdc,0x68,0x5e,0x45,0xf2,0x55,0xef,0x56,0x38,0x29,0xd0,0x89,0x40,0x58,0x51,0x9f +.byte 0x5f,0xa4,0x08,0xc6,0x94,0x34,0xd2,0x6f,0x59,0x0f,0x6e,0xca,0x85,0x7f,0x56,0x3f,0xac,0x8f,0x25,0x0f,0x47,0xe3,0x9e,0x40,0xed,0xd8,0xae,0x30,0x0d,0xb4,0x47,0x40,0x4b,0xa3,0x23,0x1b,0x7f,0x0f,0xff,0xdf,0x6f,0x1d,0x87,0xb2,0x94,0xa0,0x36,0xbb,0x53,0x13,0x1e,0xaf,0x92,0xf8,0x07,0x95,0xc7,0xe4,0xa8,0x41,0xa9,0xed,0xf0,0x08 +.byte 0xfc,0xc1,0x4a,0xed,0x9a,0x4f,0x13,0xc5,0xed,0x8a,0x95,0xf5,0x69,0xf7,0xee,0x75,0xb6,0x4d,0xba,0x8f,0x65,0x23,0xe8,0x50,0x9e,0x7a,0xd7,0x28,0x3a,0x49,0xe7,0x4c,0x7c,0xc6,0x64,0xbd,0x8c,0x17,0x14,0x0b,0xb5,0xe3,0xb4,0xab,0x0b,0x9a,0xa9,0x29,0x84,0xaa,0xba,0x69,0xc4,0x2e,0xbf,0xca,0x57,0x0d,0xd3,0x36,0x21,0x61,0x00,0x13 +.byte 0x95,0xe3,0xf8,0xa6,0x64,0x74,0x02,0xb5,0xbf,0x86,0x07,0xde,0x67,0x48,0x23,0xe0,0x24,0x96,0x3a,0x86,0xb2,0xfa,0xa7,0x75,0xb4,0x26,0x42,0xcb,0x96,0x4e,0xf7,0x90,0xae,0xa5,0xe4,0xd0,0x45,0x31,0xe7,0x0f,0xe0,0xcb,0xbf,0x94,0x94,0x33,0x4f,0x65,0x04,0xfb,0xc0,0xc4,0x3f,0x51,0xa5,0xf3,0xea,0xc8,0xd5,0x23,0x66,0xe0,0x48,0x09 +.byte 0xba,0x6a,0x27,0x50,0xec,0xae,0xd2,0x2a,0xe6,0xf9,0xe4,0xde,0x35,0x6e,0xcc,0x82,0x76,0xfc,0x36,0x16,0xe1,0x9f,0xc7,0x0d,0xc1,0xc9,0x6a,0x23,0xbe,0xa1,0x3c,0xfd,0xce,0xa7,0x2e,0x91,0x36,0x23,0x5a,0x20,0xdf,0x55,0xc5,0x91,0x32,0x5c,0x62,0x49,0xe7,0x8b,0x0b,0x0e,0x9c,0x2e,0xee,0x1f,0xfe,0xca,0x00,0xfc,0x55,0xd7,0x9c,0x0a +.byte 0x75,0xaa,0xb0,0x46,0x90,0x55,0x2b,0x46,0xab,0x98,0x9d,0xab,0x0e,0x12,0x03,0x58,0xf1,0x4a,0x68,0x59,0x74,0xc9,0x37,0x6d,0x6f,0xe6,0xd3,0x73,0xf1,0xa3,0xdd,0xbe,0x85,0xca,0x74,0xc6,0xb6,0x51,0x6f,0x83,0x6f,0xa1,0x80,0x00,0x00,0x78,0x0a,0xa7,0xff,0xa7,0xe2,0x2e,0x5f,0x4f,0x31,0xbb,0x1b,0x99,0x21,0x33,0x59,0x6e,0x03,0x38 +.byte 0x10,0xd9,0x98,0xf2,0x0c,0xad,0x08,0x6b,0x00,0x49,0xb5,0x5e,0x11,0x60,0x70,0x49,0xff,0x79,0xac,0xba,0x30,0x3d,0x69,0x9f,0xaf,0xfb,0xd7,0xeb,0xe2,0xcd,0x0d,0x97,0xb9,0x94,0xc8,0x6e,0x06,0x3b,0x64,0x80,0x71,0x8f,0x81,0xb0,0x58,0xe0,0xc7,0xbd,0x27,0x6a,0xd4,0xb7,0xd9,0x6c,0xc1,0x44,0x38,0xe1,0x36,0xbc,0x0a,0x33,0x26,0x01 +.byte 0x25,0x90,0xbc,0x0a,0xc2,0xa3,0xbb,0xfc,0xeb,0x0b,0x1a,0x38,0x98,0x26,0x93,0xf5,0x2d,0x29,0x41,0x83,0x3b,0xba,0x40,0x46,0xf3,0xf6,0xfd,0x53,0xb9,0x7a,0x60,0x01,0x8a,0x8d,0xb4,0x57,0xd8,0xf3,0x36,0x72,0x22,0x2f,0x59,0xd3,0x7f,0x25,0xf2,0x05,0x61,0xfa,0x18,0x28,0xac,0xd5,0x14,0x00,0xaf,0x8b,0x7c,0x39,0xb5,0xa2,0xcb,0x1e +.byte 0x62,0x14,0xcb,0x10,0x76,0x17,0x23,0x2c,0xc8,0x25,0xac,0x37,0x9e,0x83,0x81,0x83,0xfe,0x2e,0x2c,0xd2,0x3f,0xf8,0x58,0x2b,0xf1,0x7f,0x4f,0xe1,0x17,0xc7,0xf7,0xad,0x57,0x67,0xc2,0x57,0x77,0x2e,0xfb,0xf2,0xce,0xa9,0x74,0x81,0x47,0xf8,0x5a,0x88,0x76,0xb1,0x43,0x75,0xc8,0xc4,0xc8,0x60,0x1e,0xd7,0xd1,0x1c,0xce,0x89,0x82,0xc6 +.byte 0x77,0x8d,0x87,0xe8,0xd0,0x5b,0x0c,0xf0,0x44,0x48,0x8d,0xee,0x55,0xc6,0xe4,0x2c,0x2c,0x41,0x75,0x5d,0x5a,0xd2,0xa3,0x1d,0x32,0x85,0x08,0xcf,0x03,0x3a,0x3c,0xfe,0x65,0x75,0xef,0xd2,0xa6,0x22,0x16,0x66,0x39,0x30,0x05,0xe3,0x57,0xab,0x71,0x6d,0x28,0xd5,0x2f,0xc6,0xa8,0x25,0x46,0x14,0xfd,0x7e,0xa2,0x67,0x7e,0x20,0x91,0xc2 +.byte 0x2b,0x03,0xdd,0xac,0xaa,0x1a,0xb5,0x2a,0x04,0xd6,0x15,0x9d,0x3f,0x54,0x24,0x7c,0x75,0xab,0x77,0xd9,0x6c,0x85,0xa2,0xf9,0x33,0xeb,0xeb,0xc0,0x27,0xcd,0x9d,0x58,0xae,0xa3,0x34,0x10,0xae,0x85,0x7d,0x4c,0x15,0x4c,0x90,0x46,0xe0,0x5b,0xec,0xa7,0xb2,0x68,0x85,0x01,0xed,0xf9,0x4a,0x85,0xe3,0xb6,0xea,0xe2,0x53,0xc0,0x32,0x83 +.byte 0x73,0x05,0x77,0xac,0xb5,0x96,0xaa,0xf0,0x9c,0x2c,0xa4,0xd2,0xd4,0xbf,0x74,0x2f,0x39,0x47,0x22,0x99,0x50,0x06,0x5f,0xcb,0x99,0xc5,0xc9,0x2e,0x70,0xd6,0x68,0x6a,0xc4,0x73,0x41,0xcb,0x8b,0xfd,0x23,0x98,0x11,0x59,0xad,0x20,0x8a,0x0d,0xaf,0xaa,0xd0,0xe2,0xeb,0x32,0x8b,0x6f,0x0e,0x43,0x12,0xe3,0x27,0x8f,0xf6,0xa4,0x76,0x0b +.byte 0xfb,0x22,0xad,0xda,0x1c,0x0a,0x3e,0x90,0xc0,0x7d,0xf3,0x09,0xbc,0x17,0x33,0xef,0xf1,0xf2,0x84,0x80,0x2a,0x0b,0x82,0xd7,0x95,0xc7,0xd2,0x08,0x4a,0xf4,0xf5,0x6d,0x09,0x06,0x8e,0xe4,0x74,0x63,0x8f,0x09,0xca,0xe2,0xd9,0x0e,0x1e,0x03,0x20,0x1b,0x4c,0xfb,0x1d,0x5a,0x2e,0x28,0xeb,0x84,0x82,0x6f,0x97,0x6f,0xcd,0x7a,0xc3,0xa7 +.byte 0x79,0x73,0x66,0x0c,0x94,0xd5,0xf4,0x8f,0x2c,0x73,0x1f,0x24,0xbc,0x17,0xee,0xd5,0xb0,0xa6,0xb8,0x04,0x6d,0x6a,0xd0,0x61,0xe3,0x1a,0x49,0x97,0x94,0xc5,0x8e,0xbc,0xac,0x5b,0x0b,0x0a,0xc5,0x74,0x06,0x89,0xee,0xc2,0xb7,0x5f,0x1b,0xa1,0x6b,0x1a,0xff,0xed,0xda,0x90,0x91,0xc1,0x0d,0x6a,0x06,0xd6,0xcb,0x02,0x71,0x17,0x95,0x7d +.byte 0xc6,0x3b,0x7e,0x6b,0xc8,0x73,0x03,0x0d,0x6b,0x8f,0x73,0x56,0x59,0x2e,0x09,0x23,0x4e,0xda,0xfc,0x4e,0xfc,0xa4,0x42,0x15,0x2e,0x10,0x6a,0x97,0x48,0x3c,0xb4,0xa4,0x0c,0x64,0x21,0xc3,0xeb,0x6c,0xac,0x27,0x4f,0x43,0x94,0x91,0x78,0xdc,0xfd,0xad,0x2b,0xa7,0x43,0x42,0xb0,0x51,0xdd,0x63,0xcc,0xcd,0xb7,0x15,0xfa,0x13,0x8d,0xc7 +.byte 0x55,0x3a,0x74,0x17,0x23,0x36,0x3e,0x23,0xe1,0x42,0x90,0xe1,0xb7,0xc7,0xda,0xb7,0x57,0xeb,0xc3,0xfb,0x62,0x58,0xbf,0x31,0x2a,0xfb,0xc7,0xdb,0x3d,0xfc,0x87,0x32,0xb1,0x3e,0xe5,0x3d,0x94,0x3d,0x86,0x32,0x61,0xfe,0x19,0xd2,0x32,0x31,0x8b,0x43,0xdb,0xab,0xa4,0xe5,0x34,0xc8,0x30,0xae,0x8c,0x02,0x53,0x99,0x35,0xb4,0x56,0x38 +.byte 0x37,0xcf,0xff,0xb0,0x05,0x21,0x12,0x65,0xc4,0xb3,0x9c,0x83,0x95,0x12,0xd3,0x03,0x7a,0x80,0x97,0x5b,0x67,0x33,0x27,0xfc,0x43,0xf2,0xf7,0xaa,0x60,0xb6,0xfc,0x55,0x44,0x30,0xa3,0x4a,0xa3,0x60,0x31,0xf7,0x01,0xfa,0xb0,0x8d,0x82,0x29,0xa7,0x03,0xb7,0x7e,0x3f,0xe5,0x66,0x26,0xb7,0x51,0xcf,0x8d,0xdd,0x6f,0x83,0x39,0xfc,0x9b +.byte 0xa5,0x3d,0xb6,0x41,0x89,0x54,0xc3,0xb2,0xf0,0x24,0x64,0xcb,0x53,0xfd,0x0a,0x91,0x6c,0x6f,0x28,0xfe,0xc1,0xe9,0x17,0x2e,0x65,0x55,0x2e,0xf2,0x48,0x52,0xb1,0x69,0xf0,0xdd,0x42,0xd5,0xdf,0x7c,0x36,0x75,0xdb,0x5b,0x3d,0xa9,0x6d,0xa4,0xeb,0x47,0x4f,0x2b,0x5c,0xd0,0x30,0xee,0xa7,0x74,0x6a,0x64,0x8a,0xbc,0x9b,0xe5,0x82,0x56 +.byte 0x76,0xe4,0x3f,0xf5,0x05,0x59,0x19,0x1e,0x80,0x47,0xf1,0x77,0xac,0x32,0x43,0x80,0x0a,0x1b,0x28,0xb6,0xf4,0xe8,0x7c,0x2f,0xeb,0xa8,0x4b,0x6a,0x59,0xb5,0xf8,0x77,0x68,0xd4,0x86,0x6c,0x87,0xdc,0xc4,0x00,0x4f,0xce,0xdb,0xf6,0x34,0xc3,0x74,0x02,0x08,0xdb,0x0d,0x34,0x8d,0xea,0x49,0x4a,0x30,0x5f,0x1b,0xcd,0xa6,0x3a,0x34,0x94 +.byte 0x5f,0x32,0x6a,0x62,0x96,0x4b,0x51,0x89,0x30,0xc9,0x90,0xdf,0x77,0x73,0x0e,0x3c,0x5c,0xbd,0x5c,0xee,0xd9,0x77,0xea,0x23,0x42,0xaa,0xa5,0x6b,0xf9,0x8c,0xc4,0x70,0x68,0xdd,0x0b,0x65,0xa3,0xc7,0xe4,0x7b,0x0a,0x89,0x85,0x25,0x7d,0x84,0x99,0x39,0xe6,0xb8,0xbe,0x7f,0x31,0x0f,0x84,0x0c,0x98,0x72,0xab,0x4c,0x44,0xb0,0xa4,0x83 +.byte 0x90,0xbb,0x93,0x73,0x07,0x07,0xba,0x63,0x5b,0x61,0x70,0xe1,0x84,0xae,0xaa,0xd6,0xa3,0x5a,0x54,0xd1,0xea,0xc7,0x2c,0x7b,0x67,0x4b,0x8a,0x7f,0x66,0x28,0x8d,0x22,0xec,0x82,0x64,0x69,0x63,0xf0,0x53,0x2d,0x10,0x9c,0x9c,0x34,0x4f,0xc6,0x96,0x40,0xdb,0xce,0x0e,0xf7,0x3a,0x8a,0xee,0x3f,0x32,0x5f,0x2b,0x0c,0x4a,0xbc,0x63,0xfb +.byte 0x18,0xf6,0x26,0x57,0xc9,0x13,0x13,0xb7,0xe0,0xcc,0x3e,0x4e,0x73,0xfa,0xe2,0x54,0xc1,0x67,0xfe,0xe2,0xec,0xfd,0xaf,0xf9,0x96,0x99,0x9f,0xe9,0xe2,0xd0,0x94,0x39,0x33,0xc9,0xca,0x35,0x27,0xad,0x58,0x46,0x98,0x64,0x17,0x5f,0xe9,0xce,0x4b,0xc8,0xab,0x0d,0xd2,0x88,0xec,0xbb,0x5c,0xba,0xc1,0x30,0x4c,0xd4,0x99,0x0d,0x07,0x95 +.byte 0x0a,0xa5,0xeb,0xa6,0x10,0x4b,0x4d,0x77,0x14,0x76,0x88,0x43,0x7f,0x6b,0x5d,0x9b,0x87,0x1d,0x6b,0x5d,0xb9,0x04,0xa9,0xc7,0x28,0x18,0x70,0xa1,0x99,0xbc,0x99,0xf5,0xf1,0x71,0xa9,0x3a,0xb6,0xe5,0x98,0x98,0x8f,0x7a,0x6c,0xda,0x1a,0x63,0x0e,0xf1,0xe8,0x10,0xa3,0x7c,0x64,0x7e,0xde,0x2a,0x59,0x1b,0x04,0xca,0x69,0x8e,0xba,0x2f +.byte 0x56,0xe1,0xa7,0xab,0x4f,0xe4,0x9d,0x49,0x33,0x9e,0x4e,0x5b,0xe1,0x58,0xc4,0x3f,0x99,0x5a,0x69,0x00,0xe5,0x5f,0x85,0xcb,0x62,0x80,0x5e,0x3d,0x88,0x0a,0x32,0x42,0xc1,0xf9,0x6a,0xa0,0xeb,0x65,0x2f,0x17,0x62,0x25,0x96,0x50,0xa2,0x6e,0xd6,0xdf,0x09,0xb7,0x1e,0x68,0xb2,0x10,0x2b,0xf3,0x9e,0xb2,0x67,0x75,0x9b,0xe3,0x76,0xfe +.byte 0x95,0xbe,0x83,0xcb,0xba,0x77,0x5b,0x2d,0x5f,0xdd,0x94,0xbb,0x0e,0x5d,0x83,0xa2,0xe7,0x48,0x4c,0x84,0x86,0x41,0x47,0x4b,0x96,0x24,0x89,0xa8,0x20,0x04,0xa5,0xef,0x8e,0xb6,0xeb,0xcd,0x3c,0x77,0xc5,0x65,0x5c,0xff,0xa6,0x0d,0x2b,0x58,0x21,0x5a,0x11,0xe2,0x24,0x64,0x1c,0xd6,0x18,0x9a,0xac,0x3f,0x42,0x0e,0xeb,0x32,0x3e,0xed +.byte 0xce,0x61,0xc9,0xe4,0xe7,0xd3,0x3f,0x53,0xa4,0x80,0x2b,0x1c,0xc0,0x99,0x63,0x52,0x93,0x5e,0xdc,0x78,0xe2,0x35,0x9e,0xb2,0xb4,0x1d,0x09,0xd1,0x5c,0x1c,0x4e,0xdb,0x3a,0x5d,0x8c,0x94,0x7d,0xfe,0x63,0xf2,0xa3,0xe9,0x61,0x73,0x78,0xc1,0xd9,0x17,0x5e,0x9a,0x73,0x58,0xc3,0xe7,0xa0,0x1f,0x2a,0x62,0x15,0xf8,0xdb,0xbb,0x38,0x80 +.byte 0x57,0xd3,0x1f,0x4c,0x4a,0x20,0x30,0xa9,0x7a,0x78,0x61,0xd9,0x90,0xb7,0x4f,0xd6,0x46,0x72,0xe7,0x41,0xb2,0xbb,0xfb,0x50,0xfe,0xe1,0xba,0x3e,0x73,0x2f,0x81,0x6d,0x2b,0x0b,0x90,0xbd,0x8a,0x3b,0x23,0x88,0xa2,0x7d,0x62,0x87,0x96,0xc9,0xcc,0x66,0x28,0x89,0xa7,0x29,0x41,0xd2,0xc5,0x5b,0xdb,0xc4,0x0c,0xbb,0x19,0x4e,0xd5,0x12 +.byte 0x53,0x48,0x5c,0xf2,0x9b,0x62,0xd0,0xa3,0x77,0x40,0x85,0x12,0x2b,0x2d,0x52,0x1b,0x31,0xbd,0xe9,0x1c,0xd4,0x87,0xa4,0xd7,0xc9,0x14,0xb7,0x39,0x66,0x8c,0xfe,0x3e,0x83,0x00,0x01,0xae,0x44,0x2d,0x7d,0xa1,0xda,0x66,0xb0,0x66,0xcb,0x62,0x55,0x9f,0x92,0x80,0x4e,0x8d,0x7f,0x70,0x95,0xc2,0xf2,0x1b,0xe9,0x35,0xf8,0x42,0x04,0x65 +.byte 0xf2,0x36,0x4c,0x96,0x30,0xd3,0x47,0x9d,0xb7,0x2b,0x76,0xac,0x75,0xb5,0xb8,0xf1,0x7d,0xa2,0x36,0xef,0x9d,0xa7,0x60,0x51,0x8d,0xcf,0x00,0x3d,0xdb,0xcc,0xe9,0xe2,0xc4,0x7b,0x3a,0xeb,0x2b,0xc3,0xd8,0x0b,0xb0,0x58,0x41,0xa0,0x47,0xab,0x07,0xf5,0x7c,0x9e,0x0b,0x7a,0x16,0x8f,0xb4,0xca,0x09,0xed,0x84,0xa1,0xfa,0xdc,0x7c,0x3c +.byte 0xdd,0x2f,0xb0,0x2d,0xeb,0x93,0x28,0xf5,0x1e,0x0c,0x1a,0x0c,0x35,0x27,0x40,0xf2,0x22,0x66,0x2d,0x82,0xf2,0x94,0x03,0xa5,0x4b,0x84,0x92,0x1d,0x98,0xd5,0xd9,0x09,0x6a,0xfd,0x65,0xe5,0xa1,0x0e,0xe2,0xd9,0xb6,0xd1,0xba,0xbf,0xc7,0x42,0x22,0x39,0x83,0xbf,0x37,0xf6,0x80,0xc2,0xea,0xdf,0xb9,0x33,0xa0,0xaf,0xd7,0xe3,0x70,0x9a +.byte 0x5c,0xf8,0x1a,0x47,0x2b,0xb5,0xdd,0x15,0xe3,0x08,0xc8,0x37,0xe3,0xc2,0x25,0x87,0x0e,0x3c,0xc5,0xae,0x61,0xa4,0x4a,0x56,0x50,0x08,0x58,0x68,0xa3,0x4a,0x28,0x08,0xef,0x92,0xd5,0x13,0x50,0x09,0x76,0x34,0x47,0xae,0xa8,0x7f,0xa5,0x2b,0x13,0xb7,0x5a,0x96,0x65,0x62,0xf2,0xaa,0xb4,0x4b,0x2a,0xad,0xea,0x2c,0x0d,0x1e,0x97,0x82 +.byte 0xe4,0x6f,0xfe,0xf4,0x88,0x14,0x7b,0xba,0x45,0xbe,0x61,0x56,0xd2,0x37,0x1b,0x65,0xb8,0x0b,0x77,0xcb,0x3c,0xfe,0x9f,0xe3,0x39,0xc5,0xfb,0x2a,0x18,0x9b,0x60,0x99,0xd5,0x6f,0x52,0xfe,0xd8,0x04,0x88,0x1c,0x9a,0x50,0xe5,0x3b,0x33,0x3f,0xca,0xc5,0x5b,0x9c,0x5f,0x35,0x13,0x65,0xa6,0x21,0x78,0x19,0xeb,0xff,0x35,0x70,0x81,0xaf +.byte 0x19,0x23,0x61,0xd6,0xeb,0xff,0xa6,0x9e,0x5d,0x3f,0x7f,0x89,0x2e,0x22,0xa4,0x0b,0x9c,0x4f,0xa9,0xff,0xbb,0x23,0x29,0xa1,0xf4,0x8a,0xb7,0x4b,0xfb,0xbf,0xeb,0x0a,0x47,0x87,0x78,0x2b,0x20,0x38,0x82,0xab,0x7e,0x2c,0xdc,0x08,0x2b,0xb4,0xae,0xd8,0x64,0x44,0x1a,0xdf,0x21,0x62,0x27,0xf2,0x61,0x63,0x37,0xad,0xd4,0x06,0x4e,0xae +.byte 0xba,0xeb,0x08,0xfa,0xe5,0xad,0x5d,0xcf,0xce,0x38,0xe5,0xca,0x74,0x83,0x42,0x4b,0xe8,0x8f,0xfb,0xff,0x83,0x4d,0x27,0x88,0x43,0x62,0xdd,0x80,0xa2,0x06,0x98,0x48,0x58,0x6f,0x54,0x16,0x6f,0xbf,0x81,0x36,0xc8,0xf3,0xea,0x4b,0xf7,0x5a,0x7b,0xb7,0xf4,0xa4,0x5e,0x22,0x52,0xe7,0x9e,0xb1,0xb6,0x7a,0xa8,0x22,0xee,0x68,0x82,0x8f +.byte 0xe4,0xcb,0xad,0x71,0xef,0x53,0xf2,0x7d,0xed,0x91,0x9e,0xf6,0x90,0x9e,0x54,0x19,0x30,0xaf,0x4a,0x17,0xc0,0x6a,0x9c,0x49,0x12,0x8b,0x6f,0xc7,0x47,0x1e,0xa2,0x64,0x28,0x1f,0x0c,0xd3,0x3e,0x59,0x66,0x8c,0x2e,0x11,0x52,0x6c,0x69,0x66,0x10,0xfb,0x27,0xe6,0x1c,0xae,0x6f,0x44,0x87,0x86,0x0d,0x3e,0xd3,0xa0,0x80,0xef,0x30,0xb9 +.byte 0xb8,0xd7,0x47,0x84,0x68,0x2b,0xf2,0x32,0x7b,0x89,0x93,0xd2,0x83,0x56,0x35,0xc3,0xbf,0x5c,0x24,0xec,0xad,0x2d,0xa4,0x49,0x63,0x89,0xc6,0xf9,0x24,0x51,0x1c,0x9b,0xd1,0xcb,0x30,0x82,0xda,0xb3,0xa7,0xe1,0x4d,0x96,0xd0,0x44,0x44,0x1d,0x4e,0xd7,0x7d,0x7a,0x51,0x2e,0x2f,0xc4,0x9f,0xdb,0x06,0x53,0xfc,0x51,0x56,0xe5,0xb9,0x6b +.byte 0x4a,0x2c,0x3e,0x62,0xc5,0x9c,0x42,0xe3,0xaf,0x3a,0x0f,0x0e,0x74,0x29,0x66,0x70,0x75,0x2a,0x06,0xd4,0x0f,0x0c,0xfd,0xea,0xcc,0x39,0xd0,0xa7,0x47,0x75,0x92,0x44,0x09,0xa2,0x3c,0x4e,0xad,0xaa,0xc4,0xc6,0xf9,0x35,0x82,0x23,0x25,0x43,0x94,0x26,0x14,0xde,0xf1,0xb9,0xb8,0xe0,0x75,0xe0,0x48,0x70,0x8a,0xc6,0x3c,0x72,0x98,0x72 +.byte 0x8b,0x15,0x58,0x17,0x73,0x29,0x67,0x21,0x56,0xc4,0x25,0x17,0x68,0xbe,0xd7,0x36,0x05,0x4b,0x58,0xa2,0x1b,0x64,0xe5,0x11,0x96,0x5a,0x3b,0xa6,0x90,0xb6,0x2d,0x7e,0x55,0xbb,0x31,0x93,0xe7,0xcc,0x2e,0x74,0xb6,0x9b,0x4d,0x04,0xc5,0x45,0x9b,0x0b,0x26,0xef,0x61,0x23,0x3d,0x7e,0xee,0x01,0x57,0xfa,0x77,0x12,0x47,0x64,0xac,0x8f +.byte 0x25,0xbe,0x8e,0x2e,0x68,0x11,0x95,0xf0,0x1a,0xd2,0x3d,0x66,0xc1,0xdb,0x97,0x9e,0xbb,0xba,0xc1,0x66,0xa4,0xb5,0x71,0x01,0xee,0xf5,0xbb,0x1e,0x9f,0x41,0xfc,0x40,0x74,0x26,0xf7,0xc6,0x2c,0x9c,0x1c,0x59,0xce,0xcf,0x18,0x17,0x81,0x5d,0xd4,0xe3,0xd8,0x46,0x62,0x9e,0x97,0xb1,0xca,0xac,0x01,0x3e,0xf8,0x96,0xa2,0xee,0xe0,0xf8 +.byte 0xf3,0x2d,0xe9,0xd2,0x1f,0x9f,0x41,0xbb,0x2f,0xe5,0x64,0x6d,0x5b,0xe7,0x47,0x0e,0x83,0x7b,0x08,0x5e,0x29,0x35,0x2f,0x75,0x31,0x44,0x4c,0xb7,0x61,0xa4,0x03,0x2e,0x15,0x94,0x7a,0xa0,0x46,0x31,0x7b,0x43,0xd9,0x14,0xa3,0x34,0x0c,0x83,0x93,0x75,0x8e,0x3a,0x1c,0xc3,0xe1,0x36,0x18,0x96,0x7a,0xfb,0x77,0xad,0xbb,0xe9,0x0d,0x4b +.byte 0x21,0x04,0x2e,0xdd,0x7a,0x63,0xc9,0x60,0xb1,0x9b,0xad,0xde,0x1f,0x65,0x8a,0x58,0x18,0x84,0x95,0xa9,0xac,0x3a,0xac,0xcb,0xb7,0xa9,0xeb,0x0c,0x7c,0x3a,0x98,0x9a,0x3f,0x56,0x23,0x51,0x58,0x59,0x4e,0xf5,0x57,0x60,0xe6,0x9d,0xf8,0xf7,0xed,0x9d,0x81,0x14,0x68,0xbe,0xaf,0x19,0xe5,0xb5,0x9b,0x5f,0xe4,0x51,0x44,0x4b,0x23,0x42 +.byte 0xdd,0x92,0x1a,0xe5,0x7e,0xef,0x77,0xbe,0x88,0x77,0x1e,0x8a,0xbd,0x2a,0x77,0xb1,0x0d,0x1b,0xe3,0x8a,0x7f,0x15,0x71,0x93,0xc9,0x5f,0x78,0x2d,0x77,0x9b,0x0c,0xad,0x76,0x3c,0x6b,0xe2,0x15,0x8e,0xe1,0x5e,0x1d,0x90,0xa5,0xd6,0xc7,0x55,0x5d,0x52,0xf7,0xcc,0x82,0x9b,0xdc,0x1d,0x80,0xa4,0xc7,0xbe,0x7c,0x4f,0xda,0x81,0x91,0x78 +.byte 0x88,0x0e,0x31,0xde,0x87,0x4c,0xdc,0x84,0x9a,0x65,0x89,0xfa,0x22,0x3e,0xde,0x3b,0x7f,0x7f,0x9b,0x3f,0x3e,0xda,0x13,0x31,0x59,0x7b,0x08,0x48,0x39,0x37,0xfd,0x1a,0x4f,0xa3,0x12,0xba,0xe5,0xd6,0xfa,0xa3,0x59,0x0b,0x3b,0x7d,0xde,0xc0,0x51,0xce,0x92,0x6b,0x3d,0x4b,0xd2,0xa4,0x68,0xc2,0x32,0x2d,0x01,0xbd,0x66,0x98,0x8f,0xa0 +.byte 0x86,0xfb,0x08,0x36,0xa9,0xd4,0x3b,0x7b,0x01,0x2d,0xaa,0x8c,0x64,0x19,0xa6,0x62,0x24,0x92,0x5e,0xc5,0x02,0x17,0x8e,0xf0,0x88,0xe9,0xd1,0x8b,0x69,0xda,0xed,0x9c,0x60,0x32,0xab,0xc0,0xbc,0x84,0x64,0x6e,0x32,0xb2,0xcd,0x24,0xf6,0xb2,0x9d,0xf5,0xf5,0x71,0xe2,0x01,0xbc,0x77,0x6a,0x5b,0x26,0x56,0xf7,0x04,0x84,0xff,0x7c,0xa4 +.byte 0xe8,0xa8,0x82,0x6c,0x40,0x24,0x93,0x3c,0x6e,0x7d,0x0d,0x22,0xd0,0xe4,0xef,0xc4,0x4e,0x26,0x66,0x61,0x75,0xe9,0x06,0x69,0x06,0xfd,0x97,0x68,0x96,0x67,0xec,0x96,0x09,0x73,0xe4,0x0a,0x3e,0xaa,0xb8,0x25,0x77,0x00,0x91,0x7a,0x2e,0xc8,0x81,0x75,0x78,0xb7,0xa5,0x27,0x55,0xf2,0xcf,0x9a,0xab,0xab,0x51,0x0a,0x65,0x47,0xbf,0x10 +.byte 0xd2,0x19,0x78,0x6b,0x35,0xf4,0xef,0x12,0x2b,0x5f,0x0c,0x28,0x7c,0xe8,0x64,0x55,0x2f,0x26,0x85,0x91,0x7a,0x9d,0x48,0x76,0x12,0x14,0x2d,0x4a,0x8a,0xd6,0xfa,0x7b,0xf9,0xc7,0x24,0x45,0xf6,0xbd,0x47,0xab,0xc6,0x4b,0x9e,0x39,0x77,0x57,0x04,0xa8,0x4d,0x43,0x99,0x5c,0xb1,0x3d,0xc2,0x4e,0xc5,0x17,0x66,0xc4,0xb6,0xdd,0x92,0x80 +.byte 0x85,0x3b,0x07,0x63,0x16,0x5f,0x67,0x76,0x9b,0xb5,0x8e,0xca,0x97,0xbb,0xf4,0x20,0xd0,0x4d,0x7b,0xd0,0xa3,0x74,0x6f,0x8a,0x68,0xc7,0x31,0x78,0x1b,0x72,0x45,0xa4,0xc4,0xf8,0xf8,0x26,0xa8,0x4d,0x08,0x2f,0x7b,0x3d,0xa0,0x2a,0xb5,0x65,0x27,0xc2,0x36,0x13,0x2d,0x8d,0x83,0xeb,0xf4,0x08,0x26,0x41,0x8b,0x32,0xf3,0x09,0x70,0x70 +.byte 0x5d,0x8a,0xcc,0xb8,0xe9,0xf7,0x08,0xdf,0x5f,0x4a,0xb8,0x8a,0xb7,0x1b,0xad,0xe2,0xc3,0x39,0x59,0xe0,0x7f,0xd0,0x66,0x7b,0x99,0x5a,0xde,0x52,0xe2,0x1f,0x47,0xc2,0x63,0x74,0x7a,0xa5,0x88,0xc3,0x24,0x70,0x4a,0x7d,0xdd,0xa4,0xe6,0xf8,0xfd,0x5c,0xfa,0x8c,0x4c,0x0f,0x52,0x95,0xf3,0x2c,0x76,0x47,0x7a,0xe8,0xdb,0xe0,0x9b,0x49 +.byte 0x88,0x5b,0x87,0x5a,0xd1,0x07,0x24,0x06,0x83,0x3b,0x25,0x23,0xe7,0xaa,0x79,0xef,0x74,0x02,0x12,0xfe,0x47,0x5c,0x77,0x73,0xf7,0x2e,0x4b,0x58,0x3b,0x60,0x7b,0x91,0x2f,0x0d,0xb4,0x6d,0x00,0x80,0x19,0xaa,0x88,0xbc,0xb2,0x7b,0xd9,0xb7,0xdd,0x32,0x47,0x62,0xf5,0x0f,0x46,0x95,0x4c,0x6c,0x01,0x67,0xfb,0xe4,0x2b,0xac,0x95,0x84 +.byte 0x25,0x0a,0xe5,0x4c,0x2d,0x4a,0x6e,0x77,0xfd,0xeb,0xe1,0x53,0xc9,0x2e,0x70,0x01,0x32,0x05,0x6d,0xc5,0xc9,0x5d,0x90,0xca,0x56,0xd1,0xd8,0x40,0x2a,0x51,0x4d,0x95,0xc3,0x57,0x8b,0xdd,0x62,0x9c,0x69,0xd1,0x03,0x89,0x95,0x38,0x2c,0xc1,0x6d,0x41,0xf2,0xc3,0xa2,0x9c,0x43,0xea,0xf1,0x02,0x00,0x56,0x46,0xbb,0x87,0x35,0x40,0x0e +.byte 0x18,0x51,0x29,0x39,0xbb,0x6d,0x15,0xf2,0xcd,0x54,0x23,0x95,0x69,0xdc,0x0a,0xb2,0x26,0xd9,0x25,0xe1,0xf1,0x07,0x7b,0x5e,0xc3,0x30,0x68,0x5f,0x2a,0xce,0x91,0x92,0x03,0x0c,0x62,0x11,0x43,0x80,0xe5,0x12,0xec,0xe3,0x4f,0x90,0xfe,0x38,0x6e,0xe9,0x7e,0x94,0x83,0x26,0x59,0x3f,0x3f,0x81,0xc6,0x94,0x98,0x09,0x80,0xff,0x01,0x44 +.byte 0xff,0x77,0x6a,0x4c,0x76,0x91,0xd9,0x12,0x59,0x9a,0x00,0x7c,0x87,0x06,0x17,0xf7,0x12,0xc7,0xee,0x04,0xd5,0x8d,0x68,0xc5,0x8d,0x80,0x10,0xcc,0x14,0x45,0xe8,0xd7,0x43,0x10,0x01,0x9e,0x61,0xc2,0xc0,0x66,0xfe,0xcf,0x5f,0x9f,0xcb,0xa3,0xf8,0xc7,0x07,0x41,0xe3,0xf2,0xda,0x6e,0x01,0x76,0xc6,0x49,0x49,0x01,0xc7,0xcf,0x6a,0x20 +.byte 0x71,0xc5,0xf0,0xb1,0xa0,0xc9,0xed,0xec,0x66,0x71,0x93,0xf5,0xc0,0x27,0x42,0xed,0xd5,0x6f,0x20,0xe1,0x86,0x3e,0xd0,0x5d,0x94,0x17,0x43,0xb4,0x98,0x0d,0x8a,0x31,0x6c,0x59,0xa9,0x0b,0xb3,0xa4,0x0b,0x46,0x0b,0xa8,0x79,0x62,0x3a,0x3d,0xbf,0xef,0x94,0xd3,0x31,0xf2,0xa1,0x55,0xe8,0x92,0x44,0x37,0x62,0x82,0x1b,0x60,0x87,0x67 +.byte 0x85,0x78,0xd5,0x84,0x73,0xa4,0xea,0x56,0x08,0x78,0x68,0x7f,0xfb,0x15,0x20,0x64,0xeb,0x6c,0xf7,0x5e,0xc0,0x79,0x83,0x59,0x7b,0xed,0x2d,0xa9,0x37,0x46,0xf3,0x62,0xb1,0xa1,0x2b,0x48,0x58,0xd9,0x0c,0x03,0xf7,0xf3,0x47,0xeb,0xd7,0x03,0x9b,0x85,0xd3,0xd7,0xd7,0x7e,0xfb,0x1a,0x25,0x83,0xda,0x06,0xa0,0x04,0x0d,0x6b,0x90,0x29 +.byte 0x2a,0xfc,0xcd,0x96,0xe9,0x17,0x4f,0xdd,0x2c,0x90,0xdf,0xf1,0xe3,0x08,0x0a,0xb8,0x0c,0x59,0x2a,0x83,0x62,0x94,0x00,0xd3,0x80,0x1a,0x31,0xd7,0x17,0x70,0xc7,0xa2,0x20,0x17,0x65,0x88,0xae,0x11,0x25,0xc9,0xba,0x76,0xa7,0x61,0x60,0xd1,0x59,0x50,0x22,0xdd,0xaa,0xcf,0x9d,0xc1,0x36,0x7d,0xf9,0x7b,0x69,0xc0,0x98,0xba,0x40,0xd5 +.byte 0xd6,0x46,0x93,0x92,0x7d,0x37,0x3f,0x3a,0x04,0x9a,0x84,0xaf,0x8e,0x61,0x04,0x26,0x54,0x33,0x84,0xc0,0xac,0x21,0x51,0xd7,0x9a,0x93,0x6e,0xf2,0x09,0x87,0xc5,0x35,0xa8,0x96,0xb0,0x64,0x90,0x35,0x52,0xed,0x0e,0xbc,0xdb,0xa6,0x06,0x3e,0xe7,0xea,0x57,0x4b,0xd7,0xc5,0x1c,0x76,0x3d,0x0d,0xc3,0x1f,0x8e,0x4f,0x12,0xdb,0x3a,0x21 +.byte 0x2a,0x69,0xc2,0x94,0xda,0x4c,0x91,0xcc,0xa8,0x36,0x89,0xd7,0x78,0xa8,0x74,0x79,0x63,0x92,0xeb,0x39,0x3b,0x84,0x8c,0xe5,0xc6,0x26,0xf0,0xef,0xcc,0xc1,0x72,0x4b,0x8e,0xcd,0xe4,0xd9,0x00,0x80,0xbc,0xdf,0xe2,0x61,0x53,0x04,0x81,0xb0,0x13,0xc5,0x6c,0x77,0x74,0xa3,0x0c,0x5b,0xef,0xef,0xea,0xc7,0x5b,0xeb,0xbf,0xee,0x54,0xd7 +.byte 0x7a,0x69,0x6e,0x39,0xc2,0xed,0x08,0x44,0x82,0x08,0x16,0x8b,0xf1,0x74,0x5f,0xeb,0x60,0xd5,0x46,0x63,0x80,0x39,0xe9,0x91,0x0a,0x17,0x8b,0xd4,0x09,0xdc,0xa6,0xab,0x6a,0xbc,0xf8,0xe9,0x09,0x19,0xc1,0x83,0x9f,0xdf,0xad,0x6c,0x31,0x94,0xb9,0xc5,0x77,0x83,0xd1,0xd8,0x76,0xeb,0x12,0x3c,0x00,0x31,0xea,0xac,0x97,0x39,0x16,0xd5 +.byte 0x81,0xfa,0x6d,0x10,0x5b,0x3e,0x20,0xe1,0x88,0x5c,0x4b,0xf3,0x04,0xd4,0xc3,0xb9,0xec,0xe5,0xb0,0x13,0xf5,0x09,0x5c,0xe8,0x27,0xe2,0xde,0x9b,0xac,0x2e,0xf2,0xe5,0x2c,0x33,0x4b,0x4f,0xec,0xc7,0x08,0xf9,0xc2,0xd3,0x1b,0x4d,0x81,0x69,0x14,0xa1,0xc5,0x0f,0xb2,0x57,0x8b,0xcc,0xca,0x3b,0xc9,0x9c,0x1f,0xee,0x06,0x4d,0xc7,0x62 +.byte 0xcb,0x8f,0x49,0x81,0xfb,0xa5,0x68,0x81,0x36,0x38,0x33,0x6b,0x9e,0x58,0xd4,0x24,0x67,0xf1,0x30,0xd6,0x08,0x61,0x5a,0x7f,0x2e,0x4e,0xf1,0xd6,0x64,0x75,0x72,0xb0,0xdf,0xcd,0xae,0x04,0x41,0xbd,0x04,0x2c,0x96,0x36,0x34,0x32,0xec,0xbd,0xd0,0xbf,0x8e,0xe8,0x47,0xe3,0x22,0xdd,0x79,0x53,0xcc,0x6a,0x25,0xf1,0x5e,0x63,0x09,0x98 +.byte 0xc5,0x6d,0x0a,0xe3,0x30,0xd6,0x52,0x70,0x21,0xb2,0xef,0x15,0x66,0x4a,0x2d,0x2b,0x5c,0xcb,0x39,0x1b,0x91,0x10,0xa6,0x02,0x22,0xd0,0xcc,0x32,0x50,0x5c,0x70,0x72,0xd1,0x03,0xb3,0x2d,0x2e,0x33,0xed,0xae,0x7a,0x07,0x3f,0x70,0x38,0x35,0xfc,0xcf,0xdb,0xfe,0x7b,0x26,0xd9,0x38,0x1e,0x52,0x07,0x2f,0x72,0x81,0xcc,0xd3,0x21,0x00 +.byte 0x63,0x48,0x38,0x44,0xb8,0x35,0xf2,0x4f,0xe5,0x33,0x8c,0xb3,0x07,0x0c,0xac,0x3d,0x73,0xe8,0xe3,0xb3,0x43,0xc5,0xb4,0x32,0xf4,0x41,0xdf,0x7b,0x06,0x3a,0xb8,0x67,0x17,0xc5,0xec,0x46,0x30,0xc0,0xa4,0x29,0x40,0xe4,0x8a,0xa3,0x14,0x84,0xa6,0x84,0xc7,0x5d,0x4b,0x57,0x37,0x9c,0x42,0xe6,0xa4,0x20,0xf7,0x5d,0xef,0x21,0xe2,0x80 +.byte 0x54,0x6d,0xf5,0xb5,0xbe,0xa3,0x95,0xcf,0x98,0xf8,0x38,0x46,0xa2,0x90,0x57,0x09,0x8f,0xb0,0x6d,0x01,0x5f,0x95,0x5a,0x78,0xf6,0xfd,0x01,0x0f,0xfd,0xa5,0xe2,0xcf,0x54,0xa3,0x2b,0xc1,0x30,0xbe,0x6d,0x1a,0xd3,0xdb,0x5a,0x17,0x43,0x46,0x93,0x81,0x0c,0x85,0x04,0x13,0xda,0xb4,0xde,0x81,0x48,0x5c,0xbc,0x42,0x9e,0x6d,0x6c,0x82 +.byte 0xff,0xa5,0x51,0xb1,0xd3,0xd2,0x3d,0x82,0x82,0xb4,0x96,0xb1,0x38,0x5d,0xc9,0x55,0xcb,0x9f,0xe5,0x47,0xd4,0x52,0x0f,0x76,0x54,0xec,0x39,0xb6,0x40,0xc3,0xc5,0xaa,0xc2,0x30,0x02,0xa0,0x68,0xc3,0x22,0x63,0x5a,0x8c,0x62,0x6d,0x40,0xc5,0xde,0x06,0x29,0x44,0x5d,0x2b,0x18,0x0a,0xa5,0x43,0x47,0xfe,0x5f,0x0f,0x63,0xa4,0x3c,0xa1 +.byte 0x62,0xcb,0x70,0x1d,0xf8,0x0e,0xc9,0xbe,0x27,0x0e,0x87,0x81,0x69,0x4c,0xea,0xbe,0xf9,0x9b,0xda,0xb6,0x9b,0xd0,0xdd,0xa0,0x1e,0x60,0x38,0x88,0x85,0x25,0x53,0xee,0x2c,0x77,0x53,0x82,0xb0,0x88,0x19,0x87,0x2a,0x77,0x7b,0x37,0x4b,0x4c,0xf4,0x96,0x5f,0x73,0xa1,0xbb,0x5c,0xfc,0x7e,0xbb,0xed,0x6f,0xb7,0x6f,0x9d,0x55,0xde,0xd3 +.byte 0xac,0xb9,0x8e,0x36,0x0f,0x3d,0xea,0x87,0xcd,0x19,0x33,0x1d,0xa8,0xee,0xfc,0xcd,0xe5,0x53,0x7b,0xdf,0x37,0x49,0x2d,0x73,0xf5,0x36,0xdd,0x42,0xc6,0x88,0x0d,0xf5,0xf2,0xba,0x2e,0x81,0xed,0x88,0x27,0x8d,0xe5,0x3f,0x83,0x5e,0xde,0x63,0x8f,0x67,0x2b,0x85,0xf3,0x2a,0x9b,0x26,0x3e,0x2b,0xe2,0x29,0xc5,0x5e,0x21,0x04,0xfe,0x5b +.byte 0xb9,0xd8,0xa7,0x7b,0xdf,0xcf,0x61,0xd6,0xaf,0x9b,0x17,0xcb,0xaf,0x8f,0x71,0xb3,0xc2,0x9d,0x9a,0x55,0x1d,0x3e,0x1d,0x17,0x25,0xc8,0x44,0x71,0x29,0x2f,0xc8,0x01,0x3b,0xe4,0xc4,0x2e,0xcc,0x3b,0xdb,0x34,0xbb,0xc0,0xcc,0xb6,0x07,0xe3,0x86,0x4c,0x62,0x02,0xe8,0xc3,0x11,0x85,0x6c,0x18,0x80,0xa3,0xbd,0x02,0x30,0x68,0x36,0xa3 +.byte 0xb6,0xc6,0xbd,0x82,0x43,0x40,0xed,0xa1,0xcf,0xc5,0xce,0xe4,0x27,0x8a,0xeb,0x8c,0x59,0xea,0x4a,0x81,0xd9,0x35,0x87,0x7d,0x6d,0xb2,0x8f,0x67,0x37,0x1f,0x11,0x60,0x0d,0xed,0x34,0xd5,0xa0,0x7b,0x46,0x71,0x68,0x19,0x69,0xd3,0x65,0x1d,0x47,0xf1,0x7e,0x16,0xd8,0xec,0xbb,0x52,0xc3,0x7b,0x62,0x5a,0xb3,0x60,0x67,0x2e,0xfd,0x57 +.byte 0xf2,0xfb,0x3d,0x63,0xe6,0x82,0x20,0xff,0x31,0x90,0x1d,0x5e,0x4f,0x04,0x9a,0xf8,0xb2,0x0c,0x84,0xff,0x7d,0xe2,0xec,0x4b,0x09,0xbb,0xdf,0xae,0xc5,0xaf,0xcb,0x8b,0xb5,0x5d,0xa8,0x53,0x78,0xf9,0xb9,0x43,0x71,0xa6,0xc2,0x10,0xfa,0xad,0xda,0xba,0x46,0x13,0x72,0x97,0xef,0x6f,0xe3,0x4f,0x5f,0xf9,0xec,0x25,0xdb,0xcd,0xca,0x33 +.byte 0x7e,0x50,0x73,0x5b,0xd0,0x9f,0xea,0xd5,0xd9,0x29,0xe8,0x1b,0xc1,0xf8,0x40,0xbf,0x50,0xdb,0x8e,0x39,0x0b,0xb7,0x6c,0xf1,0x34,0x0b,0x1f,0x88,0x27,0x4b,0xea,0x1d,0xb2,0x36,0x07,0x4b,0x22,0xa9,0xd0,0xf8,0xf2,0x13,0x8e,0x97,0x9d,0xd9,0x53,0xd3,0xdc,0x63,0x40,0x11,0xc7,0x74,0x9e,0xd9,0x83,0x01,0xae,0x36,0xcb,0x35,0x9a,0x0c +.byte 0xb5,0x15,0x0a,0xf5,0x41,0xa5,0x6c,0x72,0x40,0x80,0xf0,0x15,0xc0,0x80,0x23,0x0b,0xab,0x98,0xfc,0xab,0x81,0xe0,0x8b,0x61,0x91,0x18,0xd2,0x23,0x71,0xed,0x32,0x80,0x26,0x86,0x96,0xe9,0x90,0x5e,0x43,0xd2,0x89,0x8f,0x89,0x57,0x73,0xca,0xe1,0x42,0xa9,0xa9,0xed,0xdd,0xc5,0x9f,0xf7,0x00,0x0d,0xa3,0xe5,0xc8,0x6f,0x0c,0x14,0xa4 +.byte 0x9d,0x5a,0x14,0xaf,0x96,0x3a,0xb2,0x64,0xa7,0xac,0x20,0xa9,0x01,0x4c,0xec,0x64,0xc6,0x9b,0xfd,0x04,0xc5,0x2e,0xe7,0xdd,0xa5,0x8e,0xe7,0xe7,0x76,0x53,0x59,0x95,0x14,0x07,0xed,0xe9,0x96,0xd0,0x2d,0xc8,0x9d,0xa2,0x11,0xe3,0x02,0x20,0x68,0x09,0x25,0x69,0x07,0x88,0xdb,0x26,0x36,0xf5,0x8e,0xc3,0xf0,0x70,0x8c,0xeb,0xe6,0xcd +.byte 0xad,0xf3,0x49,0x6e,0x8a,0x54,0xa6,0xdd,0x97,0x8e,0x37,0x28,0x3a,0x6d,0xc4,0xdd,0x99,0x85,0xf7,0x96,0x63,0xb4,0xa2,0xdf,0xff,0x81,0x17,0xa1,0x22,0xb1,0x43,0x5b,0x29,0xdb,0x92,0x91,0xc9,0xc6,0x8d,0x29,0x1d,0x6e,0xe3,0x44,0x3e,0xe4,0x20,0xd5,0xf4,0x4a,0xfa,0xae,0xf6,0x2c,0xff,0x80,0xc9,0xce,0x7f,0x13,0x1e,0xd7,0x24,0xa2 +.byte 0xb3,0x90,0xb8,0x20,0x18,0xe5,0x6c,0x0e,0xf5,0xc6,0x26,0xd6,0xe9,0xe8,0x55,0xe4,0x3f,0x49,0x13,0xe2,0xca,0xef,0x9b,0xc0,0x8f,0x24,0x50,0x37,0xef,0x21,0xff,0x79,0xb7,0x5d,0x86,0x03,0xfb,0x85,0x75,0x74,0xbf,0xc5,0x3a,0x30,0xcc,0x00,0xc3,0x0d,0x4f,0x91,0xd6,0x31,0x19,0xd6,0xcd,0x0e,0x1c,0x53,0x88,0x75,0xb8,0xf9,0x68,0x7a +.byte 0xa4,0x3e,0x8d,0xed,0xba,0x05,0xb4,0x6c,0xe0,0x45,0x9c,0x41,0x34,0x24,0x82,0xaf,0x9a,0xcf,0x9e,0xd2,0x27,0x5c,0x7f,0xb3,0xcb,0xe5,0xad,0xb4,0x8e,0x74,0x9d,0xe4,0xba,0x55,0xb3,0xd3,0x32,0xbc,0x62,0x11,0xb3,0xa4,0x82,0xf0,0xd8,0xfc,0x79,0x03,0x70,0xae,0x7f,0x7f,0xc8,0x50,0xb5,0xbe,0x47,0x14,0x31,0xd7,0x16,0x65,0x52,0x3b +.byte 0xbb,0x42,0x38,0x23,0x77,0x4d,0x38,0x0b,0x0a,0x61,0x94,0xac,0xa3,0xc9,0xd7,0x99,0x4f,0x34,0x3a,0x88,0xe8,0x1d,0x0b,0x97,0x48,0x6d,0x5c,0x61,0x4c,0x3f,0xc2,0x7c,0x6c,0x63,0x00,0xdd,0x59,0xae,0xcd,0x17,0x0a,0x21,0x27,0x98,0x15,0x23,0x6d,0x84,0x7e,0x24,0xd4,0x7f,0x1b,0x3a,0x98,0x52,0xc3,0x60,0x33,0xd6,0xc1,0xfe,0x68,0xa8 +.byte 0x49,0x3d,0x7e,0x53,0xee,0x0d,0xed,0x89,0x9a,0x9a,0xe6,0xa1,0x47,0xc7,0xba,0xf3,0x73,0x5b,0xef,0x33,0x51,0x8c,0x1f,0x84,0xa6,0xef,0x77,0x94,0x2d,0xd6,0xda,0x8f,0x85,0x8c,0xd3,0xb6,0x02,0x68,0x9e,0x57,0xb6,0xd9,0x1a,0x8c,0xb5,0xf4,0x61,0x39,0x29,0xb5,0xb7,0x0d,0x0d,0xa6,0x81,0x87,0x54,0xc0,0xca,0x67,0x09,0xca,0x20,0xf3 +.byte 0x37,0x7e,0x03,0x3e,0x31,0x8c,0x51,0x89,0x06,0x81,0xf6,0x7b,0x8b,0xe3,0x4f,0xd0,0xb8,0x0c,0x34,0x7c,0xd6,0xfc,0x25,0xf8,0x00,0xa6,0x10,0x15,0x0d,0xeb,0x22,0x72,0x03,0x79,0x1c,0x84,0x1d,0x3d,0x10,0xaf,0x43,0x6d,0xd7,0xed,0x10,0x2c,0x14,0x26,0xd4,0xa1,0xee,0x6c,0x7f,0x52,0xe4,0x83,0xcc,0x5f,0x1a,0x4b,0xd0,0xc8,0xfb,0x27 +.byte 0x17,0x2c,0xf6,0x90,0x02,0xb4,0xb0,0x63,0x7c,0x14,0xec,0x9e,0x08,0x60,0xec,0x45,0x85,0xc6,0x76,0x42,0x4f,0x1c,0x5f,0x48,0x7f,0x87,0xef,0x8c,0x04,0x23,0x3c,0xda,0x39,0xbc,0xec,0x09,0xda,0xeb,0x9b,0x72,0x7a,0xb4,0x20,0x1c,0xb2,0xdd,0x2e,0x63,0x72,0xd7,0xb1,0xfe,0x5b,0x21,0x28,0xfb,0xeb,0x45,0x31,0x89,0xe5,0x3e,0xa0,0x85 +.byte 0xa6,0x96,0xdb,0x42,0xd5,0xb4,0x27,0x78,0x10,0xa0,0xcb,0x69,0x68,0x1e,0x76,0xed,0xbc,0x3c,0xa1,0x04,0x10,0x81,0x2a,0x4f,0x52,0x78,0x1e,0xae,0x5a,0x47,0x69,0x81,0xee,0xd3,0x14,0x1a,0x68,0x19,0x75,0x92,0x72,0x47,0x61,0x70,0xcf,0x96,0x35,0xa6,0xbb,0x00,0xaf,0x3e,0x90,0x86,0x22,0x9b,0x72,0x8a,0xa1,0x05,0xe2,0xfb,0xdc,0x30 +.byte 0xd5,0xdd,0x46,0x1f,0xf6,0x33,0x43,0xd1,0x59,0xc4,0x93,0x89,0x36,0x6a,0x7b,0x76,0xa7,0x40,0x6c,0xb1,0x9c,0xce,0x3a,0x8c,0xb6,0xd5,0xd1,0x0a,0x78,0xf6,0x08,0xfb,0xf5,0x9c,0xee,0x74,0x0d,0x39,0x51,0x6d,0x0e,0xa6,0xe9,0x22,0xd8,0x30,0xdf,0x16,0xf7,0xe3,0xbd,0xbb,0xe6,0x45,0xb8,0x9c,0xb5,0x49,0xf0,0xe8,0x7c,0xce,0x25,0xf8 +.byte 0x46,0xc0,0x59,0xc2,0xbc,0xdd,0xea,0x3e,0xeb,0x2e,0xf5,0xfd,0xd9,0x05,0x8a,0x2f,0xa3,0xa4,0x63,0xa6,0x50,0x08,0xce,0x2a,0x69,0xe7,0x58,0x57,0xa1,0xb2,0x44,0x41,0x04,0xfc,0x61,0xb1,0xb8,0x19,0x27,0x14,0x71,0x2f,0x55,0x64,0x28,0xa0,0xcc,0x47,0x0c,0xd4,0xed,0xfd,0x07,0x99,0xc6,0x9e,0xdc,0x5f,0x19,0x03,0x1a,0x00,0xda,0xf6 +.byte 0x2c,0x95,0xb0,0xd2,0xaa,0xfb,0xbc,0x1a,0xf3,0x62,0xaf,0x9c,0x38,0xde,0x61,0x30,0xd5,0x56,0x82,0x4b,0xf6,0xeb,0x34,0xc0,0xdc,0x51,0x97,0x89,0x80,0x47,0x9d,0x2a,0xae,0x0e,0x92,0x48,0xd2,0x9d,0x5a,0x67,0xef,0x33,0xa3,0xbe,0xdd,0x80,0x64,0x9c,0xc1,0xaf,0xf9,0x1a,0x4b,0x55,0x67,0x88,0x37,0x37,0xff,0x98,0xe3,0x9e,0xa9,0x4e +.byte 0x1f,0xa1,0x32,0x70,0xa3,0xbb,0xdc,0x6e,0xb3,0x6d,0xfe,0x8f,0x74,0x89,0xed,0xe1,0x13,0x3c,0x8f,0x08,0x75,0x84,0x84,0xee,0xac,0xcc,0xa5,0x47,0x9f,0x3e,0xb9,0xed,0x26,0x20,0xf7,0x7b,0xfb,0x8a,0x48,0x58,0x51,0x24,0xf9,0xeb,0x66,0x6d,0xd6,0x83,0x24,0xff,0x9f,0x0d,0x38,0x9c,0xf9,0x24,0x99,0x12,0x49,0xb6,0xdd,0xce,0x44,0xe7 +.byte 0x31,0x3d,0x4b,0x23,0x8a,0xd5,0x62,0xa2,0xdb,0x78,0x56,0x3a,0x62,0xc8,0x59,0x5f,0xcc,0x58,0x76,0x19,0x5d,0x48,0x4a,0xc2,0x87,0x21,0xc3,0x3d,0x3a,0x38,0xbd,0x20,0xfd,0xc3,0xa6,0xab,0x32,0xb8,0xc8,0xd1,0x5c,0xa5,0xb4,0x64,0x60,0xd2,0x87,0xb7,0xe9,0xc2,0x2b,0xb2,0x75,0x04,0xf4,0x6e,0x96,0x99,0x5d,0x08,0xff,0xa3,0x45,0x8a +.byte 0xad,0x7c,0xee,0x94,0x4e,0x45,0x86,0xad,0x0a,0x7a,0x5c,0x8f,0xff,0x28,0xb3,0x3c,0xf8,0x5e,0xb3,0x1e,0x5c,0xe0,0x22,0xf7,0x4e,0xe4,0xdf,0x1f,0xd2,0xa2,0x37,0x4a,0x87,0xa6,0x16,0x80,0x0c,0xc3,0x75,0x18,0xe4,0x76,0x8f,0xc3,0x1b,0xee,0xb1,0xe4,0x4b,0xeb,0x6f,0x15,0x48,0x60,0xaf,0x8e,0x0e,0xeb,0xbe,0x26,0xa3,0xbd,0x2a,0xb5 +.byte 0x6d,0x8b,0xd1,0xa1,0x0f,0x8e,0xaa,0xaa,0xb8,0x8d,0x84,0xe7,0x65,0x40,0x60,0x3d,0x59,0xb7,0x1c,0xef,0x08,0x0e,0x6f,0x21,0xb4,0xe6,0x10,0xda,0x59,0x9a,0x0f,0xe6,0xba,0xfd,0xed,0x7f,0xc1,0xe3,0x7a,0xb7,0x21,0x5d,0xcf,0x1c,0xbd,0xd2,0x59,0xc0,0x31,0xa5,0x8a,0x39,0x86,0x9e,0x7e,0x6a,0xcb,0x87,0x6f,0x01,0xba,0xa4,0x06,0x6b +.byte 0x3b,0x5d,0x68,0x85,0x11,0xd2,0x2a,0x3c,0x8e,0x3a,0x8c,0x8b,0x59,0xa0,0x4a,0xfb,0x76,0x85,0xe6,0x47,0xc3,0xf4,0xc4,0xe6,0xcc,0x7b,0xff,0x71,0x03,0xd1,0xc2,0x01,0xe4,0x5e,0x49,0x31,0xa6,0x0e,0x17,0x9b,0x42,0xdc,0x75,0xd6,0xfe,0x09,0x0b,0x6d,0x21,0x46,0xfe,0x40,0xcd,0x7c,0xdb,0xca,0xc9,0xba,0x64,0x83,0xd3,0xf7,0x0b,0xad +.byte 0xff,0xfd,0xe3,0xd9,0x49,0x7f,0x5d,0x48,0xaa,0xac,0xe5,0x74,0x2a,0x14,0x6f,0x64,0x21,0x81,0x09,0xcd,0x2d,0x19,0xf5,0x56,0x85,0xa8,0xec,0x98,0x65,0x46,0x99,0xec,0xbe,0xe3,0x86,0xd3,0x41,0x8b,0xe4,0x76,0x9b,0x5b,0x98,0x33,0x9e,0xdb,0xc9,0xde,0x89,0xfa,0x60,0x58,0xa8,0x2f,0x7a,0xca,0x30,0x91,0xc8,0x26,0x14,0x9c,0xd6,0x6d +.byte 0xc2,0x3c,0xca,0xe0,0x9a,0x13,0x72,0x63,0x5e,0x20,0xfd,0xa0,0xca,0xb2,0xed,0x37,0xc5,0xd4,0x4e,0xec,0x1f,0x74,0x25,0x37,0xe2,0xbe,0xb1,0x7f,0x52,0x26,0x28,0x4f,0x02,0xe5,0x6a,0x27,0xf3,0xc4,0x9c,0x69,0x09,0xac,0xff,0x77,0x9c,0xa4,0x1d,0xe7,0xa1,0x7c,0x37,0x70,0x3b,0x3c,0xc4,0x16,0x8f,0x5d,0xe5,0x05,0xa9,0x2c,0x91,0x2e +.byte 0x87,0xb0,0xa9,0x2e,0x32,0x73,0x5c,0x15,0x1e,0xbe,0x01,0xc9,0xd8,0x2e,0x26,0xf4,0x05,0x2d,0xe0,0xc0,0x38,0x81,0x61,0xf4,0x37,0x08,0xa0,0xc0,0x28,0x0a,0xb6,0xd4,0xcc,0x2c,0xc6,0xd4,0xda,0x48,0x49,0xcf,0x76,0x91,0x23,0x51,0x91,0xe7,0x50,0x94,0xae,0xb7,0x15,0x26,0xaa,0x82,0xd0,0x97,0xe8,0x5e,0xaa,0xfc,0xaa,0x60,0x62,0x81 +.byte 0x80,0xfd,0xfd,0xaf,0x65,0xcc,0x29,0x27,0x95,0xad,0x56,0xb9,0x85,0x66,0x49,0x62,0xb3,0x1a,0xf4,0x54,0xc7,0x5d,0x7f,0x73,0xe0,0xd2,0xc8,0x18,0x95,0x62,0x2f,0x5c,0x96,0xfb,0x63,0x15,0x46,0x07,0x5f,0x3e,0x52,0x18,0xf8,0x5d,0x45,0x0b,0xb6,0xf7,0xc5,0x3d,0x16,0xaa,0x0b,0x8f,0x9d,0x16,0xc8,0x93,0x13,0xd2,0xba,0x7a,0x52,0x1a +.byte 0x7a,0x73,0xc4,0xca,0xfb,0x04,0xaf,0x6f,0x3e,0xfa,0xff,0x29,0x09,0xe2,0x74,0x35,0xc1,0xfc,0x21,0xcf,0x5f,0xf7,0x82,0x55,0x75,0x27,0xc9,0x91,0xc5,0xbf,0xe6,0x68,0xb6,0x0f,0x10,0x0e,0x91,0x30,0xb7,0x05,0xca,0x59,0x4a,0x7f,0xb0,0xf6,0xaf,0xf1,0x5d,0xc9,0xc5,0x06,0xc5,0xf4,0xe1,0x75,0x16,0x9a,0x2c,0xc0,0x3f,0xc1,0x98,0x91 +.byte 0xb7,0xe6,0xb1,0xf2,0xf9,0xfa,0x6d,0x27,0x98,0x33,0x8b,0x73,0x7a,0x57,0x12,0x6f,0x80,0x11,0x28,0x17,0x7d,0xf1,0x26,0xaa,0x05,0xf1,0x6e,0x86,0x98,0xe7,0xf6,0x9f,0x9c,0x06,0x8f,0xec,0xd7,0x2d,0xb0,0x83,0xdf,0x23,0x80,0x34,0xd3,0xd7,0xf7,0xd5,0x0d,0x52,0x18,0xcd,0xc7,0xe7,0x15,0xc9,0x1b,0xae,0x58,0xcf,0xc5,0xdd,0x25,0x2a +.byte 0xff,0xa5,0xf3,0x6d,0x20,0xfd,0xda,0xfd,0x78,0x30,0x14,0x1f,0xb3,0x47,0xe3,0x2d,0x54,0x87,0xdc,0x30,0xbe,0x41,0xc0,0x48,0x52,0x82,0x49,0x78,0xad,0xfd,0x24,0xad,0xd6,0xc1,0x14,0x1e,0xa0,0xc1,0x3d,0x82,0x59,0x01,0x9b,0xc3,0xf4,0xf7,0x26,0xce,0x92,0x50,0x13,0x47,0xe0,0xf3,0xfa,0xd9,0x61,0x19,0x80,0x12,0xee,0x73,0x45,0x5b +.byte 0x34,0xfc,0xb2,0x84,0xb2,0x3f,0xdc,0x77,0x8e,0x2d,0xb3,0x62,0xb9,0x03,0x2d,0xb6,0x2a,0x17,0xcd,0xfb,0x54,0xc2,0x5e,0xb9,0xcf,0xd6,0x05,0xe2,0xac,0x3f,0xce,0x50,0x0f,0xa1,0x3e,0x67,0x68,0x46,0x0c,0xab,0xa1,0xdc,0x2a,0x26,0x1f,0x22,0x1b,0xa7,0xc9,0x3b,0x6c,0x97,0x5d,0x5c,0x7d,0x1a,0x46,0x4a,0x99,0x92,0x85,0x87,0x35,0x6c +.byte 0x78,0x9d,0xb0,0x39,0xd6,0x3b,0x52,0x60,0xb4,0xba,0xcc,0x2e,0xe9,0xe1,0x91,0x51,0xc1,0x52,0xc7,0x5d,0x84,0x95,0x54,0x25,0xdd,0xcd,0x40,0x35,0xa1,0xc8,0x7e,0xff,0x82,0x55,0x9f,0x64,0xef,0xa7,0xc1,0x79,0x57,0xc7,0x44,0xa8,0x1c,0x06,0xaa,0x2a,0x05,0x65,0x6c,0xdc,0x90,0x7d,0x2e,0x53,0x3c,0x56,0xe1,0x30,0xdf,0xcb,0x75,0x3d +.byte 0x36,0x88,0xfd,0x72,0x2d,0xc7,0x8e,0x2f,0x11,0x5a,0x2e,0xa9,0xd6,0x37,0x4b,0x31,0x4e,0x6e,0xa0,0x4a,0xd9,0xa9,0x48,0x18,0x50,0xb1,0x28,0xf6,0x74,0x03,0x44,0xa7,0x06,0x55,0x86,0x1a,0x1b,0x07,0x79,0xc4,0x25,0xba,0x5d,0xce,0xa2,0x96,0x7d,0x62,0xa7,0x21,0xf0,0xa7,0xc2,0x91,0x03,0x38,0x37,0x0b,0x20,0x40,0x88,0x7b,0x28,0xf4 +.byte 0xf3,0xc2,0xb0,0x4b,0xf6,0xef,0x2f,0xd9,0xb5,0x81,0x17,0x95,0x42,0x98,0x7f,0x18,0xd4,0x7e,0xa1,0x85,0xbf,0x62,0xdc,0x40,0xe4,0xd3,0xcc,0x78,0x01,0xec,0x12,0xcc,0x04,0x5b,0xfe,0xdb,0x39,0x7c,0x1e,0x56,0x7c,0x72,0x57,0xb9,0xdf,0x9d,0x43,0xd4,0xe3,0x1f,0xbf,0x69,0xfb,0x43,0x23,0xd8,0x75,0x81,0xe8,0x39,0x0f,0xe4,0xe9,0x51 +.byte 0xea,0xb7,0xa7,0xc6,0x17,0xc6,0x75,0x4c,0xa8,0x17,0x41,0x1c,0x55,0x8e,0x8d,0xf3,0x64,0xbc,0xc3,0x33,0xa7,0xc1,0xbe,0xa2,0x89,0x75,0xd6,0xda,0xad,0x44,0xd5,0xdd,0x18,0xe2,0xfc,0x1d,0xa1,0xbc,0x1a,0xb8,0x40,0x1a,0x4f,0x44,0x4b,0x56,0xe9,0xf4,0xa8,0x16,0xe6,0xc9,0x40,0x90,0x9b,0x49,0xae,0x62,0x12,0x3d,0x50,0x2e,0x7b,0x60 +.byte 0x6f,0x04,0x01,0x2c,0x83,0x2a,0xd2,0x92,0x63,0xa2,0xe2,0x39,0x9a,0xc4,0x1e,0x5a,0x53,0x3f,0x4d,0x69,0xfa,0x0a,0x22,0x13,0x80,0xa4,0x6e,0xfb,0x09,0xcb,0x35,0xd7,0x12,0xa4,0xcd,0xfc,0x0b,0x06,0xa6,0x5e,0xc6,0x4a,0x22,0x56,0x5d,0x7f,0x70,0xd0,0xf8,0xe6,0x96,0x77,0xce,0xd9,0x69,0x6c,0x06,0xac,0xaa,0x94,0x6d,0x57,0x1b,0x28 +.byte 0xb4,0x07,0x50,0x19,0xd1,0x86,0xba,0xe6,0xe6,0x31,0x74,0x1d,0x3d,0xe8,0xe2,0x7b,0xfe,0xc9,0x41,0x89,0x20,0x5b,0x6a,0xc0,0x18,0x16,0xee,0x35,0xfa,0x56,0x35,0x3e,0x53,0x99,0xfb,0x8d,0xae,0x75,0x4f,0xc5,0x8d,0xff,0x23,0xd5,0x42,0xf4,0x81,0x5c,0x8b,0x71,0x7a,0x22,0xb0,0x6b,0x45,0x86,0xa6,0xc6,0xdb,0xa6,0x83,0x01,0x28,0xde +.byte 0x38,0xaa,0x6e,0xf8,0x5a,0xf2,0xcc,0x3c,0xc5,0x65,0x78,0x37,0xe8,0x8a,0x59,0xf3,0xfe,0x8b,0xcd,0xf6,0x31,0x46,0xdc,0x72,0x19,0xf7,0x73,0xac,0x5c,0xf1,0xe3,0xfd,0x85,0x51,0xec,0x92,0x3a,0xf3,0xd7,0xb2,0x95,0x53,0x79,0x48,0xd3,0x29,0x84,0xec,0xc5,0x0a,0x71,0x15,0x52,0x69,0x6a,0xe1,0xab,0x69,0x94,0xc2,0x51,0xdf,0x27,0xd8 +.byte 0xb1,0x05,0xc4,0x12,0xea,0x1e,0xda,0x6e,0xf2,0xf5,0x8a,0xa8,0x72,0x74,0x5a,0xe5,0x45,0x5b,0x5f,0xf9,0xb0,0x56,0x5c,0x85,0xf7,0x63,0x8d,0x1d,0xbf,0xe9,0x7c,0x97,0xe9,0x37,0xb3,0x5b,0x4b,0x57,0xfc,0xf4,0x58,0x84,0x26,0x55,0x07,0xc7,0x0a,0xfe,0x5a,0x58,0xd0,0xd8,0x19,0xf4,0x02,0xad,0x2c,0x4e,0xbd,0xe1,0x07,0x48,0x3b,0xc4 +.byte 0xd6,0x23,0x3a,0x63,0xc3,0xf5,0x17,0x46,0x03,0xa4,0x9a,0x10,0xf9,0xac,0x70,0x9c,0x13,0x10,0x94,0xda,0x17,0xc5,0xbb,0x87,0x0f,0x9b,0x4f,0x54,0x55,0x6b,0x57,0x2d,0x12,0x0b,0xa7,0x9c,0x77,0x6d,0x67,0xb0,0x03,0xdf,0xc6,0xa2,0x76,0x96,0x0c,0xac,0x30,0xbc,0xa2,0x55,0x23,0x01,0xae,0x51,0x50,0xd4,0xab,0xd0,0xee,0x75,0xf1,0x96 +.byte 0x75,0xf5,0x2e,0xae,0x52,0x31,0x0b,0x0a,0x8a,0xdb,0x4c,0x4d,0x4c,0x80,0xfc,0xd7,0x68,0x05,0x54,0x47,0xa5,0xc4,0xb1,0x63,0x87,0x43,0x1b,0xe1,0x0b,0x4f,0xff,0x0c,0x02,0xf7,0x00,0xd4,0x8d,0x6e,0xa1,0x21,0x91,0x62,0xec,0x55,0xd5,0x72,0x70,0x59,0x7a,0xa4,0x0e,0x78,0x7a,0x87,0x1f,0x71,0x35,0x3b,0xf7,0x1f,0x66,0x8c,0x90,0xf9 +.byte 0x6d,0x1f,0x74,0x47,0x41,0xf5,0x21,0x98,0x0d,0x42,0x61,0x21,0x0b,0x62,0x59,0xc7,0x5e,0x58,0x37,0xfb,0xee,0xbb,0xa0,0x45,0xa8,0x84,0xae,0x41,0x29,0xc9,0x88,0x64,0x69,0x75,0xc1,0x5f,0x63,0x7c,0x00,0x1c,0x35,0x61,0x9e,0xad,0x19,0xd7,0xd8,0xf1,0x64,0x57,0x10,0x87,0x73,0xa8,0x8b,0x39,0x9b,0x1c,0x1a,0xc2,0x1b,0x01,0x1a,0x41 +.byte 0x26,0x58,0x93,0x8f,0xed,0xf9,0xe7,0xfe,0xcc,0x27,0x1b,0x6b,0xb8,0x28,0x5a,0x0b,0x04,0xa0,0x94,0x23,0x4b,0x21,0x5f,0xb3,0xc9,0xb6,0x7b,0x36,0x5a,0x67,0x6b,0xd2,0xc2,0x53,0x97,0x5d,0xa5,0x43,0xd3,0x79,0x83,0xe2,0x3b,0xe0,0xaf,0x5f,0xbd,0xf3,0xb0,0xfc,0x04,0x95,0x06,0x17,0x0c,0xe2,0x68,0xe8,0xf3,0x90,0xc7,0x2b,0x7b,0xcc +.byte 0xaa,0xce,0xf5,0x0b,0x3c,0x3f,0x10,0xa7,0x31,0x9d,0xf0,0x1e,0x3e,0x74,0x57,0xbd,0x87,0xe7,0x37,0xd0,0x37,0x09,0xae,0x03,0x96,0xb1,0xad,0x8f,0x2d,0x72,0xdc,0x0f,0xdf,0xd9,0xfb,0xcc,0xb8,0x48,0x62,0xf7,0xad,0x05,0x4d,0xc6,0xe5,0x92,0xe3,0x95,0xa0,0x74,0x7a,0xa6,0x84,0x13,0x68,0x17,0xaa,0x8f,0x40,0x2a,0x8d,0x2b,0x66,0xdc +.byte 0xf8,0xf6,0x6d,0x7c,0x7e,0x40,0x22,0x05,0x16,0x20,0xbc,0xe5,0xc2,0x87,0xe2,0xd5,0xbd,0x47,0xd5,0x69,0x95,0x12,0x25,0x1c,0xaa,0x9d,0xb5,0x73,0x08,0xaf,0xfb,0x46,0xa5,0x11,0x2c,0x93,0xc6,0xfc,0xc0,0x5e,0x0e,0x99,0x1c,0x80,0x5f,0xe5,0xc8,0x52,0x73,0x35,0x4d,0xbc,0x70,0xeb,0x40,0xc9,0x47,0x8a,0x8f,0x19,0xd9,0xa9,0xec,0x4b +.byte 0x88,0x53,0x56,0x08,0x4a,0xa2,0x32,0x1f,0xe2,0xbb,0x68,0x35,0xfd,0xf2,0x0e,0x0f,0x7f,0xc8,0xf1,0x59,0xac,0x97,0x8f,0x84,0x69,0xb6,0xb9,0x5f,0x84,0xe9,0xf2,0xf9,0x09,0xf6,0xf1,0x31,0xd7,0x1a,0xa8,0x25,0x32,0x5f,0xb1,0xa7,0x84,0x15,0xfa,0x07,0xa8,0x53,0xce,0x2a,0x26,0xe0,0x4d,0x07,0x4f,0x45,0x63,0x76,0xfd,0xe3,0xb4,0x4e +.byte 0x81,0x5e,0xe6,0x01,0x9c,0xf5,0x82,0x2d,0x71,0x0f,0x98,0xb4,0x72,0x06,0xbc,0x89,0x89,0x60,0x5f,0xd9,0x92,0xcf,0xb9,0x41,0xe3,0x13,0xaa,0xe4,0x80,0xb5,0x75,0xf4,0x9a,0x1b,0xc2,0xa3,0xa4,0xa9,0x0f,0x15,0xdc,0x26,0xdd,0x20,0x10,0x27,0xbd,0x06,0x77,0x12,0xa5,0xb3,0xde,0x9f,0xbf,0xc4,0xb6,0x1d,0x76,0xdc,0x16,0x00,0x2e,0xe2 +.byte 0x00,0x4d,0xb3,0x62,0x57,0x73,0x1e,0x90,0xe2,0xaa,0x4c,0x47,0xdf,0x6b,0x2d,0x66,0x2f,0x82,0x55,0x91,0x26,0x33,0xb9,0x3a,0xc7,0xf1,0x0a,0xda,0x9b,0x6b,0x05,0x82,0x0f,0x0e,0x30,0x74,0x0b,0xea,0x0f,0x49,0x55,0x3b,0xe7,0x42,0x48,0xca,0x82,0x3e,0x8c,0xbc,0xe2,0x88,0x43,0x44,0x0d,0x37,0x9b,0xd1,0xfc,0xf1,0x45,0x46,0x0e,0xe1 +.byte 0xec,0x91,0x39,0x96,0x7d,0xbc,0xd5,0xb1,0x11,0x55,0x54,0x49,0x4f,0x18,0xed,0xec,0x58,0xdb,0xb3,0x7d,0x64,0x8d,0xfc,0x65,0x1f,0xf0,0xe0,0xc0,0x41,0xc0,0x19,0xeb,0x16,0x16,0x71,0x36,0x88,0xcf,0x75,0x3d,0x9c,0xe6,0xa0,0x84,0x54,0x26,0x64,0x95,0x9a,0xe1,0x0b,0x51,0xcf,0x9a,0x55,0x60,0x4d,0x9d,0x1d,0x37,0x71,0xa8,0x94,0x0a +.byte 0x20,0xeb,0xf2,0x91,0x14,0xfc,0x12,0xb0,0x1e,0xe3,0x5e,0x3a,0xbb,0x22,0xde,0x20,0xb1,0x58,0xef,0x0b,0xb1,0xc2,0x2f,0xea,0xd8,0xdb,0x1d,0x3a,0x67,0x7b,0xbd,0x26,0xfa,0x4a,0x3c,0x3d,0xbd,0x87,0x4c,0xba,0x57,0xdf,0xfb,0x1d,0xf7,0x26,0x5f,0x52,0x4e,0xdd,0x9b,0x38,0x62,0xed,0x48,0xc1,0xae,0x7f,0xa8,0x13,0x05,0x09,0xff,0xc0 +.byte 0xd3,0x49,0x75,0x1f,0x6a,0xe0,0x79,0x94,0xc1,0xe9,0xe3,0xf5,0x33,0x40,0xd4,0x6b,0xfe,0x4d,0x6e,0x84,0xb9,0x20,0x68,0x2b,0x6c,0xb3,0xf1,0xb1,0x1c,0xfd,0x93,0x14,0x7f,0x35,0x9b,0xd5,0x07,0x15,0x87,0x56,0xb9,0x45,0x22,0x64,0x73,0xdb,0x34,0x35,0xca,0x15,0x4e,0xa2,0xa2,0xe2,0x7a,0x6e,0x14,0x46,0xf5,0xf1,0x70,0xd3,0x3a,0x2e +.byte 0x38,0x9d,0xf6,0xc6,0x29,0xd5,0x7f,0xc7,0x77,0x2c,0x33,0x55,0x1c,0xc2,0xf1,0xaf,0x8e,0x4d,0x1b,0x22,0x36,0x35,0x93,0x47,0xa5,0x59,0xb4,0x94,0x0f,0x2d,0x66,0x24,0x6f,0x57,0xa4,0x95,0xf3,0xd7,0xf3,0x59,0x9d,0xc0,0xda,0xa7,0xf7,0xf2,0x8d,0x93,0xc9,0x90,0x91,0x9e,0x12,0x3f,0x34,0x01,0x90,0x8b,0x13,0x09,0x3d,0x2f,0xa8,0x31 +.byte 0xfa,0x39,0x4a,0x7d,0x0d,0x34,0xa3,0xf1,0x75,0xdb,0xa2,0xd2,0x5c,0xf1,0x72,0xfd,0x7f,0x7b,0x15,0x92,0xf0,0x71,0xd6,0xa0,0x74,0x53,0x61,0x67,0xa4,0x8b,0x72,0x3a,0x66,0x0a,0xce,0xc9,0x1c,0x5b,0x4d,0xaa,0x0a,0x3a,0x91,0x0a,0xbb,0xef,0x6e,0x8d,0x00,0xc0,0xa1,0x89,0xa9,0xbd,0x5a,0x2d,0xf8,0x7c,0x1f,0xb2,0x5a,0x73,0x33,0xe7 +.byte 0xb3,0xfd,0xd4,0xe3,0x81,0x69,0x30,0xc1,0xf8,0x97,0x7b,0xf3,0x63,0xaa,0xd5,0x5a,0x98,0x95,0xb3,0x65,0x2d,0xf9,0x68,0x2e,0x2c,0x26,0xe6,0x77,0x8f,0x76,0x7a,0x02,0xc7,0x50,0x28,0x40,0xcf,0x44,0x66,0x18,0x54,0x52,0xef,0x79,0x26,0xc2,0x76,0x5b,0x71,0x92,0x49,0xba,0xe1,0xd7,0xf2,0xdd,0x57,0xe0,0x78,0x6e,0xb6,0xdd,0x0d,0x20 +.byte 0x85,0xf9,0x34,0x9e,0x65,0x6b,0x9f,0x41,0x24,0xe2,0xb1,0x2a,0xef,0x8b,0xd2,0x19,0x81,0x73,0x56,0x5a,0x84,0xd3,0x46,0xf8,0x74,0xe3,0x1f,0x3d,0xd9,0x16,0x86,0x38,0xf6,0x7c,0x04,0xab,0x9a,0x64,0x0e,0x48,0x06,0x4c,0x61,0xcd,0x2d,0x4d,0xef,0x6f,0xd6,0x7d,0x31,0x1c,0x56,0x65,0xc4,0xf1,0xa7,0x15,0xac,0xa4,0xe2,0x8b,0x83,0x5e +.byte 0x64,0x36,0x2e,0x77,0x94,0x2e,0x2e,0xa3,0x62,0xcf,0x6e,0x7a,0x6d,0x39,0xaf,0xf7,0x96,0x88,0x31,0x14,0x58,0x46,0x30,0x0c,0x36,0x3a,0x4c,0x53,0xe0,0xa7,0x24,0x76,0x84,0x0f,0xfb,0x7e,0x55,0xa0,0x0f,0x63,0xfc,0xd6,0x1f,0x58,0x68,0xb5,0xcc,0x77,0x4f,0x16,0x91,0xa7,0xfd,0x62,0xb3,0x88,0x13,0x7c,0xcb,0x63,0x6d,0xe4,0x38,0x4c +.byte 0x6e,0x3b,0xf7,0xe3,0x8d,0x52,0x84,0x61,0x19,0x12,0x51,0xbe,0xed,0x32,0x3d,0x77,0xdd,0xa1,0xc3,0x59,0x65,0x79,0xa1,0x6b,0xbc,0x65,0x6c,0xe3,0x7e,0x60,0x49,0xbd,0xcf,0x6f,0x61,0x97,0x98,0xbe,0x74,0x38,0xd1,0x09,0xc1,0x59,0xe5,0x7f,0xfe,0xbf,0xfd,0x60,0x1b,0x96,0x00,0x46,0x56,0x4d,0x81,0x4c,0x70,0x59,0x39,0x66,0x13,0x58 +.byte 0xe7,0x62,0x3a,0xfc,0x1b,0xe5,0xf9,0x03,0xd4,0x4b,0xab,0x1d,0x56,0x22,0x4a,0x09,0xa5,0xdd,0xac,0x39,0xbe,0x27,0x39,0xb3,0xe8,0xad,0xe0,0x07,0x86,0x10,0xce,0xa9,0x4e,0x8b,0x47,0x8d,0xb8,0x63,0x2f,0x61,0x1a,0x8b,0xd4,0xd3,0xfe,0x73,0x82,0x5a,0xd6,0xa9,0x46,0x56,0xa7,0x81,0xe9,0xda,0xb9,0x17,0xa7,0xc8,0x0f,0x24,0x16,0x6a +.byte 0x12,0xfe,0xc3,0x65,0x85,0x77,0xab,0x89,0x44,0x1b,0xa3,0x8b,0xfd,0x07,0xf4,0x77,0xaa,0xe1,0x71,0x33,0x74,0x93,0xdc,0x90,0x53,0x39,0x47,0x8c,0xea,0x18,0xe1,0x6a,0xed,0x8c,0x56,0x08,0x2f,0xa1,0x1f,0x22,0xf2,0xc0,0x12,0xcd,0xb7,0xdf,0xb6,0x3c,0xd6,0x22,0x6c,0x5b,0x00,0x0f,0xdb,0x66,0x5b,0x54,0x35,0x48,0x37,0x8c,0x79,0x74 +.byte 0xd1,0xb0,0x15,0x01,0x22,0x3a,0x7c,0x17,0x8c,0x20,0x06,0x9b,0x13,0x6e,0xee,0xbf,0xb4,0xac,0x01,0x61,0xb9,0x28,0x65,0x8e,0x53,0x12,0x4f,0xe0,0x5f,0xfc,0xdb,0x40,0x6c,0xa2,0x19,0x64,0x49,0x7a,0xc7,0xc5,0xc8,0x53,0x6e,0xd5,0x68,0xe1,0x61,0xe5,0x87,0xc2,0x99,0x59,0x4c,0x27,0xc8,0xd0,0xd0,0x10,0xce,0x9f,0x09,0xff,0xf5,0xa8 +.byte 0xf8,0x79,0xf6,0x0f,0x73,0xda,0x8a,0x36,0x8e,0x48,0x7e,0xbd,0x98,0x76,0x57,0xfa,0x5c,0xec,0xa5,0x3d,0x30,0xfe,0xa3,0xe5,0x27,0x87,0xcf,0x26,0xfe,0x61,0xe4,0xed,0xd1,0xfb,0xfc,0x91,0x5d,0xb6,0x70,0x2c,0x2c,0x59,0x14,0xd5,0x1d,0x9a,0xb9,0x2c,0xef,0x24,0x7b,0x10,0x8d,0x99,0x63,0xaa,0x82,0xf0,0x1c,0xe8,0xa0,0x00,0xa5,0xa7 +.byte 0xf8,0xc0,0x35,0x9e,0x12,0x18,0xaf,0x42,0x9d,0xe5,0x2b,0x72,0x6c,0x31,0xd8,0x8f,0x6c,0xde,0x2e,0x37,0xa6,0x73,0x06,0xe7,0x90,0x43,0x79,0x99,0x64,0xd1,0x17,0xa1,0x43,0x6d,0xd4,0x90,0x50,0xf2,0xcc,0x0b,0x73,0x49,0x9e,0x14,0x7c,0x49,0x92,0x05,0x0e,0x8c,0xda,0xb7,0x18,0xf0,0xcc,0xea,0xe4,0x32,0x58,0xc7,0xbd,0x8e,0xca,0x35 +.byte 0x52,0x9f,0xec,0x5d,0xa0,0x6c,0x83,0x61,0x07,0x74,0x37,0x4a,0x10,0xa0,0x98,0x83,0x3a,0x65,0x17,0x63,0xd0,0x22,0x96,0xb5,0xed,0xbb,0xbb,0x1c,0x18,0x8a,0x49,0x3d,0x0f,0xcc,0x24,0xb3,0x9b,0xb6,0x23,0x2e,0x9d,0x97,0xe7,0x31,0xf8,0x36,0x6d,0x7b,0xa1,0xf1,0x02,0xde,0x7c,0xad,0x77,0x5d,0x85,0x7c,0x39,0x61,0xc7,0xd7,0x3f,0x70 +.byte 0x1c,0xe1,0x0e,0x49,0xf4,0xcd,0xab,0xfd,0x4d,0x2f,0xc7,0xb7,0x53,0xfc,0xed,0xeb,0x41,0x2a,0x80,0x40,0xf3,0x47,0xf8,0x15,0xa0,0x4c,0x8b,0x34,0xf6,0x6a,0xb8,0x30,0x09,0x4d,0xe6,0x60,0xb7,0x24,0x6b,0x4c,0x26,0xdf,0x83,0x37,0xc7,0x96,0xba,0x35,0xda,0x29,0x4e,0xca,0x52,0xf7,0x41,0xd3,0x98,0x27,0xb2,0x9e,0xec,0xcc,0x12,0xdc +.byte 0x77,0xfd,0x11,0xbd,0xbd,0xbb,0x5e,0x0c,0x37,0x29,0xd2,0x4f,0x7d,0x5c,0x97,0xad,0x72,0x93,0x4a,0xfa,0x17,0x07,0x07,0x26,0xee,0xa7,0x29,0x2e,0xdb,0xf6,0x60,0x65,0x2d,0x85,0xbe,0x27,0x4d,0xf7,0x2b,0xb4,0x81,0xf5,0x3a,0x1d,0xae,0x25,0x8b,0x60,0xc2,0x75,0x3a,0xfd,0xf9,0x4d,0x90,0x7a,0x8a,0x3a,0xf6,0xa9,0xf0,0x11,0xd2,0xb9 +.byte 0xdb,0x23,0x40,0x9d,0x33,0xc3,0xbf,0x60,0x95,0x9c,0x6f,0xa9,0x82,0x42,0xe5,0x67,0x52,0x36,0xea,0x68,0x64,0x24,0x85,0x46,0x7e,0x2a,0x1a,0x6a,0x4b,0xa8,0xb0,0xa0,0x9c,0xb8,0x4a,0xb6,0x2e,0xb2,0x6b,0xf4,0x63,0x9f,0x54,0xb5,0x6f,0x1b,0xf5,0x71,0x7e,0xf8,0xef,0xb2,0x92,0xe2,0xcf,0x65,0xb4,0x02,0x9b,0x75,0x4b,0xf9,0x6b,0xa1 +.byte 0x24,0x3b,0xea,0x7f,0x31,0x08,0xd4,0xdc,0xab,0x12,0xc0,0xca,0x64,0xee,0xfa,0x61,0x1c,0x0f,0x24,0xc3,0x8c,0xbd,0xc8,0xd2,0x42,0xf7,0x1f,0x2e,0xd3,0xd1,0x51,0x86,0xfb,0xa2,0x95,0xc5,0x8c,0x5b,0x61,0x14,0xc9,0xe4,0x07,0xa1,0xf7,0x39,0x11,0x40,0x68,0xd6,0xe2,0x38,0x96,0x6f,0x99,0xf1,0xd2,0xfb,0x8e,0xb8,0x3d,0xf2,0x8a,0x4e +.byte 0x3e,0x54,0xd9,0x0e,0xd1,0xc9,0x31,0x04,0xa4,0xee,0xbe,0x51,0xcf,0x5f,0xd1,0xc8,0x13,0x96,0x9d,0x9b,0xdf,0x32,0xa9,0x38,0x8f,0xbc,0x7e,0x22,0x1a,0x52,0x5f,0x14,0x61,0xeb,0x78,0xf4,0x01,0xe9,0x5c,0x18,0x1c,0xb5,0xe1,0x80,0x06,0x3e,0x8e,0x72,0x33,0xf9,0xaa,0x49,0xec,0x5b,0x7a,0x04,0xf2,0x9b,0x48,0x8a,0x58,0x14,0x4b,0x7e +.byte 0x4d,0x26,0x0b,0xe0,0xf0,0x69,0xa3,0x36,0x75,0x3e,0x73,0xec,0x53,0x20,0x35,0x8e,0xfa,0x40,0xf0,0xcd,0x70,0xe1,0xe4,0x64,0x89,0x14,0x55,0xd7,0x20,0xe8,0xbd,0xc2,0x85,0xa8,0x4d,0x51,0x96,0x27,0x54,0x50,0xc7,0xa1,0x9c,0x35,0x52,0x1f,0x8b,0x6f,0xa2,0x62,0x36,0x94,0x02,0xb1,0x01,0xc6,0x4e,0x53,0x83,0x65,0x98,0x25,0x6d,0x26 +.byte 0x6d,0xef,0x4e,0x7a,0xe0,0x56,0x6a,0x6c,0x23,0xe8,0xa6,0x97,0xc1,0xf2,0xb1,0x2d,0x03,0x29,0xef,0xa0,0x6d,0x86,0x8d,0x5a,0x00,0x83,0x14,0xed,0xd4,0x1e,0x79,0xc4,0xb4,0x42,0xfd,0x53,0xaa,0xab,0xd7,0xa3,0xf9,0x7d,0x15,0x26,0xab,0x81,0xc4,0x7a,0x96,0x14,0x94,0x71,0xe1,0x7f,0xc1,0x67,0x5f,0x5f,0x11,0xb4,0x72,0x03,0xf8,0x9b +.byte 0x2f,0x82,0xa3,0x4e,0xda,0xfd,0x2a,0x31,0xf1,0x74,0x6d,0x96,0x7a,0x9c,0xf9,0x01,0xd9,0x55,0x8e,0x52,0xe4,0xae,0x22,0x14,0x7b,0xc0,0x5a,0xc4,0x31,0x23,0x9a,0x2e,0x9d,0x86,0x86,0xd5,0x66,0xc8,0x8b,0xdb,0x49,0x5f,0xca,0x57,0x51,0x50,0x75,0x3f,0xeb,0xb1,0xe5,0x84,0x42,0x8f,0x0f,0xca,0x86,0xcf,0xb0,0x17,0x06,0x06,0x46,0x8c +.byte 0x4a,0x84,0xde,0x28,0x84,0x24,0x7f,0x33,0x48,0xe8,0x89,0x87,0x1f,0x02,0x07,0x4f,0x36,0xa9,0xdc,0x8a,0x42,0xb6,0xc7,0x9c,0x47,0xd4,0xd4,0x2d,0xc0,0x17,0xb0,0xe6,0x23,0xb7,0xae,0x0d,0x9f,0x38,0x0a,0xdf,0x7f,0x73,0xbf,0x93,0x19,0x05,0x23,0xbf,0xc0,0x53,0x2d,0xcd,0x3e,0x73,0x01,0x78,0xa7,0xdc,0x6c,0x85,0x1d,0x25,0xc5,0x54 +.byte 0x68,0x95,0xc1,0x20,0x65,0xd9,0x01,0x85,0x7d,0xc9,0xba,0x63,0x43,0x7a,0x23,0xbb,0x95,0x3a,0x76,0x2d,0x75,0x1e,0xac,0x66,0x3e,0x20,0x30,0x8d,0x37,0x64,0x3c,0xc7,0x6f,0x36,0xb8,0x34,0x60,0xd2,0xb4,0x54,0x07,0x52,0x6c,0xfa,0x04,0xfe,0x2b,0x71,0x03,0x03,0x97,0xfc,0x4a,0xf9,0x4d,0x44,0x1a,0xf9,0xd7,0x4b,0xe5,0xe1,0xf9,0xb9 +.byte 0x41,0xa0,0x5b,0xa2,0x69,0x48,0xba,0xeb,0xcc,0x4e,0x55,0x4b,0xbd,0x41,0x09,0xa8,0x90,0x5c,0xc6,0xe3,0x20,0x0c,0x8f,0xfc,0x7e,0x0e,0x4f,0x3d,0x47,0x65,0x40,0x1e,0x79,0x9a,0xe0,0x8f,0x8f,0xe9,0xcb,0xaa,0x04,0xb8,0xd9,0x91,0x30,0x2a,0x4c,0x17,0x44,0xc0,0x03,0x4c,0x37,0xd3,0xdb,0x20,0xe5,0x8e,0x70,0x87,0x57,0x4f,0x8a,0xcf +.byte 0xee,0x64,0xbc,0xef,0x0f,0x9e,0xcf,0x95,0x5e,0x11,0x4f,0x7a,0x35,0x53,0x8c,0x85,0x6a,0xff,0x72,0x1b,0x35,0x51,0x89,0xf8,0x94,0x65,0x97,0xec,0xfe,0xbd,0x00,0x29,0x3d,0xe8,0x96,0x23,0xa4,0xe3,0xcf,0x81,0xb2,0x8f,0x73,0x4c,0x05,0xc3,0xcc,0x37,0x22,0x97,0xa0,0xda,0x49,0xb2,0xbd,0x07,0x2b,0x26,0xa0,0x6f,0x6b,0x1f,0xa6,0x15 +.byte 0xe3,0x6e,0x12,0xa4,0x51,0x1b,0x72,0x22,0x08,0xfe,0xf7,0x93,0x1a,0x9f,0x62,0x12,0xd4,0x11,0x1f,0xd1,0x80,0xeb,0xa4,0xb1,0xf4,0x37,0x3b,0x60,0xd8,0x2b,0x53,0xae,0x69,0xf8,0x48,0x38,0xf4,0x20,0x28,0xe1,0xfb,0x6a,0xec,0x6e,0x11,0x2e,0x2c,0x59,0x62,0x23,0x8a,0x82,0xc4,0x33,0x7b,0xdc,0x33,0x99,0x41,0x29,0x4f,0xa1,0x6e,0x3a +.byte 0x48,0x13,0x1c,0x1f,0xa3,0x1f,0xd2,0x02,0x79,0xe1,0xe4,0xb9,0x99,0xa4,0x50,0xea,0x53,0x96,0x4e,0x82,0x7c,0xee,0x65,0x07,0x26,0x87,0xf9,0x9d,0x45,0x17,0x37,0x61,0x7e,0x5f,0xb9,0xd2,0x55,0x3c,0x45,0xf7,0xec,0x33,0x08,0xa3,0x41,0x24,0x8f,0xb2,0x75,0x41,0xb6,0xa2,0x21,0xfe,0x94,0x7e,0x1e,0xe6,0x03,0x6e,0xf4,0xeb,0x23,0x59 +.byte 0x51,0x25,0x99,0x19,0x6d,0xf7,0xe3,0x22,0xd8,0x41,0x0f,0xd5,0xaf,0x0d,0xc6,0x3f,0x8e,0x36,0xee,0x90,0x23,0x67,0x03,0xcb,0xe3,0xaf,0xc4,0xf8,0x22,0x1f,0xd8,0x3e,0x94,0xdf,0x13,0xc9,0x4f,0x17,0x22,0x8c,0x93,0x6b,0x3f,0x60,0x1a,0xbd,0xfa,0x9f,0xe6,0x43,0x45,0xe1,0x0a,0x95,0x21,0x06,0x52,0xbd,0x58,0x56,0x84,0x56,0x36,0xf3 +.byte 0x55,0x58,0x46,0x62,0x6c,0xb3,0xa0,0x29,0x5a,0xfc,0xb4,0x87,0x5f,0x89,0xa5,0xab,0x6d,0x5a,0x44,0xc5,0xc8,0x50,0x83,0xe1,0x41,0xd4,0x97,0x6c,0x08,0xb1,0x43,0x33,0x0d,0x3a,0x8b,0x31,0xa1,0xae,0x77,0x71,0xb7,0x67,0x65,0xd7,0xa7,0xc9,0x6c,0x4a,0x9b,0x80,0xd5,0xbf,0xae,0x0f,0x9b,0xce,0x1a,0xa3,0x26,0xc6,0x19,0xa1,0x8d,0x12 +.byte 0xd9,0x09,0xae,0xac,0x9f,0x4b,0xab,0xaf,0xf6,0xc5,0x9e,0x26,0xe6,0x23,0xcb,0x3e,0x60,0x1e,0x3d,0xa1,0xec,0x59,0xca,0xf1,0x87,0x0e,0xaf,0x47,0x5f,0xab,0x17,0x99,0xbd,0x87,0x1c,0x1d,0x00,0xd6,0xb2,0x59,0x56,0xdd,0x49,0x20,0xb5,0x91,0xf8,0x0c,0xf1,0x80,0xc6,0x37,0x92,0xd7,0x2c,0x02,0x0d,0x47,0x1b,0x1b,0x6b,0x3f,0x60,0xd0 +.byte 0x21,0x9b,0x49,0x47,0x3c,0xaa,0x83,0x44,0x1b,0x92,0x8e,0xec,0x63,0x40,0xd6,0x9a,0x48,0x7c,0x5e,0x97,0xe4,0xf0,0x84,0x36,0x30,0x11,0x0b,0x7c,0x79,0x3b,0xff,0xdf,0x77,0xf6,0xc9,0xdb,0x49,0xdd,0x2a,0xe7,0xca,0x9a,0x5b,0xef,0xd4,0x84,0xe2,0x44,0x8b,0xef,0x4e,0x0d,0x13,0xd6,0xbb,0xba,0x29,0x02,0xae,0xfc,0x55,0x24,0xfa,0x4b +.byte 0x7d,0x71,0xc9,0xde,0x71,0x36,0xbc,0xac,0x31,0x5c,0xf8,0x20,0xdd,0xb8,0xae,0x03,0xd3,0xb0,0xdc,0x27,0x7f,0xc5,0xff,0xda,0x8a,0x36,0x2d,0x8f,0xae,0xbd,0xf8,0x92,0x28,0x8e,0x0c,0xc3,0xaf,0x4e,0x33,0xf0,0x71,0xdb,0xad,0x4d,0xc1,0xef,0x52,0x1c,0x84,0xdc,0x0d,0xf3,0xab,0xb9,0x0b,0xe0,0x18,0xa5,0x06,0xdc,0x78,0x41,0x73,0x35 +.byte 0x95,0x37,0x84,0xba,0xc1,0x4e,0x0a,0xe4,0x4d,0x05,0xfe,0x9d,0x74,0x68,0x4a,0x35,0xf0,0x15,0xaa,0x7b,0xfe,0x08,0x47,0xb2,0x84,0x65,0x1d,0x0d,0x9f,0xe7,0xe0,0x04,0xf9,0x1c,0xac,0x66,0xb3,0x75,0x96,0x8f,0x25,0xb6,0x29,0x53,0x52,0x50,0x7a,0x50,0xd1,0x89,0xc7,0x05,0xfb,0x3a,0xb0,0xfa,0x6b,0x96,0x9d,0xfc,0xb0,0xcd,0x68,0x21 +.byte 0x61,0xf6,0x65,0x64,0xa7,0xc6,0x56,0xbd,0xf0,0x9b,0x4a,0x9a,0xe2,0x8c,0xd8,0x88,0x70,0x82,0x0c,0x87,0x51,0x77,0x23,0xd8,0xd8,0xf8,0x4a,0xfe,0xf4,0x6d,0x3f,0x2a,0x36,0x0c,0x67,0x85,0x43,0x13,0x83,0xd5,0xe9,0x32,0xff,0x8c,0xec,0xd4,0x7f,0xd2,0x32,0x4d,0x4e,0xec,0x76,0x55,0xf9,0x0d,0xb7,0x57,0x6c,0xc4,0xd6,0x22,0xd3,0x6e +.byte 0x71,0x23,0x68,0x45,0x03,0x37,0x27,0x3d,0x56,0x89,0xbb,0x7c,0xf1,0xa8,0x09,0xd6,0xb2,0xc5,0xe6,0xf6,0x72,0x77,0x3e,0xb0,0x8a,0x3d,0x17,0xbd,0xd5,0x0d,0xdb,0x62,0xa7,0x07,0x66,0x35,0x19,0x12,0xff,0xcf,0xdd,0xb3,0x09,0xa3,0x58,0x5b,0x0d,0x87,0x76,0x33,0x28,0x98,0x91,0x48,0xac,0xa1,0x22,0x9f,0xda,0x36,0x03,0x8a,0xc1,0x5e +.byte 0x6c,0x2e,0x42,0x8e,0x1a,0x7d,0x75,0x69,0xb2,0xcf,0xb0,0x14,0x80,0xa8,0x91,0xc2,0xbc,0x24,0x8f,0x25,0x9a,0x9e,0xa3,0x4d,0x46,0x55,0x53,0x05,0x0c,0xf8,0xdb,0xe0,0xee,0xe4,0x32,0xff,0x39,0x74,0x9a,0xa8,0xf7,0xa4,0x6e,0x5b,0x9a,0x89,0x33,0x40,0xf4,0xce,0x54,0x4a,0x18,0xdb,0x11,0xe4,0x83,0x69,0x52,0xef,0x12,0xc6,0x13,0x6e +.byte 0x2a,0x14,0xb9,0x8e,0x38,0x8d,0x6b,0xef,0x02,0xc8,0x66,0xf0,0x78,0xaa,0xa6,0x04,0xa3,0xa5,0x1d,0xdb,0xac,0x02,0x23,0x4c,0x2a,0xa5,0xbf,0x66,0xa4,0x47,0xa9,0x8e,0x50,0xd2,0xf8,0xf5,0x0d,0x0f,0xc9,0x07,0xd8,0x1a,0x94,0x84,0xcf,0xb3,0x56,0x53,0x5f,0x83,0x1d,0x30,0xb6,0x94,0x36,0xf4,0x16,0x72,0x8c,0x6d,0x49,0xe4,0x6d,0x93 +.byte 0xb1,0xa1,0x97,0x70,0x75,0x47,0x3a,0x7e,0xa6,0x39,0x1d,0xf5,0xcc,0x37,0xaa,0x90,0x53,0xe1,0x9b,0xcb,0x9a,0x97,0x7d,0x18,0x4a,0x3c,0x1f,0x05,0xf4,0xe3,0x6f,0x7a,0x19,0x84,0xbc,0x68,0xa4,0x6e,0x5a,0xb5,0x7a,0x51,0xda,0xf5,0x75,0x1e,0xfe,0xb0,0x73,0x43,0x39,0x98,0xb7,0x1e,0x17,0x36,0x35,0x15,0x64,0x90,0xb6,0x83,0x43,0x8f +.byte 0xcd,0xb6,0x8c,0xc4,0xe4,0xee,0x0e,0x1c,0xbd,0x3a,0xe6,0x6e,0x44,0x73,0x88,0x30,0xa0,0xf0,0x97,0xf5,0x5e,0x12,0xea,0xd9,0xd7,0xb5,0xc5,0x1d,0xc7,0xc8,0x55,0xbb,0x2c,0x64,0x43,0x50,0x15,0x71,0x02,0xd3,0xf9,0xb4,0xe7,0x2f,0x0f,0x98,0x9e,0x87,0x40,0x2a,0x61,0x06,0x44,0xc2,0x47,0xaf,0x44,0x4f,0xdd,0xa3,0xb0,0xb2,0x8d,0x8c +.byte 0x83,0x96,0xd3,0x2a,0x38,0xdf,0x87,0x5d,0x1c,0x64,0xc8,0x4f,0x3c,0x41,0xc7,0xf8,0x64,0x58,0xa6,0x9b,0xcb,0xcd,0x77,0xdb,0x38,0xe7,0x30,0xb6,0x91,0x88,0xd8,0x9d,0x29,0x71,0x12,0x9e,0xdf,0x20,0xd9,0x14,0xa3,0xa0,0xbd,0x0a,0x99,0x67,0x0a,0xe1,0xe9,0xba,0xd0,0x1b,0xba,0xc8,0x8d,0x76,0x10,0xe8,0x30,0xa1,0x93,0xf4,0x95,0x6a +.byte 0x12,0xd5,0x95,0x31,0x7f,0xdb,0x33,0xfc,0xbf,0x7a,0xbe,0xe4,0xfa,0x50,0x1b,0x24,0x75,0x9b,0xf8,0x81,0x34,0xc8,0xfb,0xda,0x3c,0x6f,0x3b,0x9a,0xb2,0x6f,0x94,0x0c,0xd9,0xc3,0x05,0xd6,0x96,0x10,0x27,0xdb,0xd6,0x88,0x72,0xe4,0x8f,0xfc,0xd3,0x52,0xf8,0x63,0xb2,0xce,0xf1,0x2a,0xbc,0x1c,0x23,0x9d,0xfb,0x27,0xdd,0x8d,0xe4,0xcc +.byte 0x63,0xcf,0xad,0xe6,0xe9,0x4f,0xb8,0x8a,0x20,0x47,0x75,0x73,0x3f,0x27,0x07,0x5d,0x8c,0x8c,0x6e,0x7a,0x91,0xe2,0xf6,0xd5,0x70,0xd8,0x00,0xe5,0x0f,0xde,0x78,0xd8,0xb4,0xd3,0x18,0x5a,0x24,0x43,0x91,0x0c,0xbe,0x8b,0x1b,0x88,0x48,0x7e,0x94,0x05,0xd0,0xec,0xd2,0x71,0x26,0xc7,0x70,0xeb,0x8a,0x83,0x01,0x52,0xdb,0xe5,0x76,0x31 +.byte 0x19,0x14,0x13,0x90,0x5b,0x5a,0x94,0x89,0xe2,0x4e,0x2d,0x17,0xf6,0xbc,0x67,0xee,0x51,0xd4,0x00,0x83,0xe5,0x18,0xa5,0x54,0x6c,0xd2,0x7a,0x1f,0xdb,0x6f,0xed,0x7f,0x07,0xbb,0x9f,0x3a,0xc2,0x8c,0x04,0xf9,0x9a,0x55,0xe3,0x70,0xf3,0x36,0xfd,0x44,0x05,0xd9,0xf3,0xe1,0x87,0x2c,0x29,0xec,0x30,0x8b,0xb7,0xde,0x27,0xa4,0xcd,0xdf +.byte 0x64,0x0b,0x62,0xdf,0x34,0xa0,0xf5,0xa1,0x69,0xc9,0x0b,0x00,0x81,0xf4,0x03,0x5e,0xef,0xb8,0x26,0x49,0x71,0x5e,0xcd,0x76,0xa2,0x38,0x25,0x1f,0x92,0xc3,0xbf,0xdb,0xb3,0x29,0x37,0x06,0xc5,0xc2,0x3b,0xd8,0xbd,0x55,0xf2,0x7f,0xd5,0xd5,0x34,0x32,0xf1,0xa0,0x92,0x9b,0x1c,0xee,0x6f,0x48,0x40,0x6b,0xd1,0x45,0x09,0x3f,0xaf,0xdc +.byte 0xe1,0xac,0x75,0x9a,0x33,0xf7,0x50,0x4f,0x2c,0x3c,0x30,0x69,0x69,0x84,0xcb,0xe9,0xca,0xdf,0x8d,0x02,0x5d,0x30,0x71,0x99,0x7b,0xd5,0xb2,0x55,0xdd,0x9c,0x2f,0xae,0x11,0x41,0x01,0x6b,0xf7,0x95,0xe3,0xda,0xe3,0xcc,0xa4,0x17,0xd0,0x50,0xf9,0x4c,0x31,0x2b,0x4e,0xf7,0x49,0xbb,0x75,0x8f,0x28,0x19,0x9f,0x89,0x7b,0x78,0x80,0x41 +.byte 0x50,0x5a,0x5c,0x1e,0x82,0x93,0x9f,0x4f,0x61,0x96,0x29,0x0c,0x25,0xb3,0xe6,0xff,0x86,0x90,0x78,0x09,0x04,0xf9,0x2a,0x3d,0xa1,0xd5,0x68,0xa8,0x0d,0xd9,0x41,0x01,0xdc,0x41,0x01,0xff,0x20,0xc0,0x63,0x0b,0x4d,0xd5,0x80,0x78,0x82,0x05,0x51,0x62,0x09,0xf9,0x11,0xbd,0xde,0xc0,0x7d,0x3f,0xf2,0x30,0xfb,0x41,0x68,0x39,0xb0,0xc2 +.byte 0x2e,0x33,0x4e,0xa7,0x85,0x01,0x6b,0xd1,0xf9,0x78,0xef,0xe9,0x7c,0x0e,0xaf,0x13,0x1a,0xf5,0x97,0xde,0xf0,0xbb,0x67,0xf9,0x9b,0xab,0xee,0x86,0x73,0x9b,0x23,0x6c,0x56,0x0d,0xa0,0xda,0x4c,0xff,0x2b,0xc5,0x92,0xdb,0xee,0xbd,0xba,0x3a,0x54,0x21,0xc0,0x5c,0xfe,0x21,0xf1,0xbd,0xac,0xaf,0xa3,0x7a,0x52,0x62,0x15,0x8b,0x8f,0xb5 +.byte 0x82,0xc6,0x1a,0xfb,0x22,0xbc,0xa2,0x05,0x42,0xfe,0xb4,0x12,0x6b,0xad,0xa9,0x76,0xb7,0x6b,0x1c,0xd8,0x34,0x5c,0x7d,0xd5,0xa9,0x0d,0x91,0xf6,0xc1,0x47,0x69,0xbc,0x43,0x8f,0xb7,0xfc,0x84,0x2e,0xa0,0x8e,0x3f,0x52,0x3b,0xbd,0x1f,0x28,0x6b,0xc8,0x13,0x37,0xd6,0x44,0xe9,0x8d,0x08,0x92,0x96,0xe5,0x2c,0x57,0x34,0x59,0x21,0x04 +.byte 0xa8,0xaa,0x56,0x25,0xa4,0xc8,0xae,0x68,0x17,0x9e,0xa4,0xf4,0x42,0x64,0x57,0x4b,0x54,0x85,0x8a,0xd1,0x09,0x09,0x25,0x18,0x05,0xb0,0x09,0x9d,0xd9,0x75,0x21,0xd3,0x75,0x31,0xf8,0x35,0x46,0xc8,0xd4,0x47,0x9d,0x87,0xeb,0x40,0x95,0x19,0x24,0x7c,0x6e,0xe9,0xd5,0x14,0xaa,0xc3,0xbe,0x22,0x18,0xc1,0xa0,0x5f,0x34,0x98,0xc2,0x4d +.byte 0x3f,0xa6,0x09,0x57,0x1b,0x75,0xc6,0x89,0xee,0xf0,0xbd,0xbc,0x1a,0xd3,0xea,0x6e,0x82,0x06,0x90,0x4f,0xbb,0x61,0xac,0xbb,0x3e,0x8c,0x94,0xea,0x69,0x58,0x26,0x2e,0x17,0x78,0xad,0x14,0xa4,0x79,0x14,0xbd,0xc1,0x78,0xf9,0xbb,0x11,0x7e,0x8d,0xbf,0x3e,0xc8,0xc5,0x69,0xd7,0x5a,0x4c,0x4b,0x86,0x25,0x4c,0xe9,0x3a,0xc2,0xd9,0xf8 +.byte 0xbf,0x5e,0x46,0x4f,0xca,0xba,0x25,0x58,0x73,0x82,0x02,0x8a,0x41,0x9e,0x2d,0xa9,0x08,0xb4,0x60,0x2a,0x11,0x2c,0x2f,0x3d,0x5e,0x68,0xd8,0xa9,0x2e,0x1c,0xfa,0xdc,0xda,0xfb,0xfb,0xf3,0xb2,0x66,0xd3,0x57,0xe6,0x09,0xeb,0xe5,0xf4,0xed,0x2d,0xb7,0x3a,0xce,0x69,0x2d,0xb4,0x79,0x1a,0x99,0x9d,0xc8,0x99,0x9f,0x9b,0x78,0xd4,0x8a +.byte 0x73,0xd5,0x89,0x9f,0xda,0xdf,0xd0,0xca,0x6b,0x63,0x5a,0x1e,0xe0,0x2f,0x01,0xa4,0xd0,0x62,0xc0,0x5f,0x4e,0xd9,0xd3,0x47,0xe4,0x68,0x73,0x8c,0x87,0x50,0x91,0xec,0x8e,0x0b,0xa7,0xf0,0x4c,0x32,0x19,0xaa,0x00,0xbd,0xe4,0x20,0xab,0x5c,0x00,0xdb,0x18,0xc0,0xff,0xc1,0xc0,0x8f,0xa2,0x8c,0x47,0x91,0x86,0xde,0xa9,0x09,0xb5,0x86 +.byte 0xcc,0x1d,0x7f,0x4b,0x7d,0x16,0xf6,0x21,0xd0,0xf8,0xaa,0x16,0x20,0xa9,0xac,0x3e,0xef,0x56,0xee,0x0e,0x1d,0xd6,0x44,0x7d,0xa9,0x84,0x41,0x8d,0x69,0x69,0x92,0x74,0x87,0x3b,0x8a,0xbf,0x40,0x29,0x45,0xf9,0xa8,0x52,0x8c,0x99,0x95,0xe7,0x6a,0xcd,0x3f,0x74,0x2d,0xde,0x82,0x47,0x41,0xa6,0xd9,0x5a,0x30,0x6c,0x20,0x98,0x3f,0xfb +.byte 0x66,0x08,0x73,0x68,0xe1,0xcd,0xfd,0x3c,0x4f,0x33,0x6b,0x42,0xa4,0xab,0x78,0x22,0xb5,0xd9,0x6f,0x99,0xcb,0x85,0x6a,0x14,0xb9,0xd3,0x0f,0xfb,0xd7,0x07,0x7b,0xbe,0x6a,0xd9,0xba,0xde,0x98,0xac,0xd8,0xe5,0x40,0xcd,0x59,0x7f,0x88,0x3c,0x4e,0xfa,0xfe,0xbe,0x48,0x21,0xb5,0x40,0xd5,0xc8,0x1e,0x8a,0x56,0xd9,0xec,0x25,0xad,0x5e +.byte 0x31,0xf3,0xf2,0x3d,0x0b,0x56,0xb5,0x20,0x08,0xd3,0x02,0x81,0x93,0x29,0x3d,0xbd,0x0a,0x9c,0x26,0x74,0xdb,0x6b,0x7e,0xd1,0x4a,0x1a,0x1c,0x47,0x49,0x34,0xba,0x08,0x7a,0x6a,0xb3,0xd6,0x3b,0xd0,0x28,0x50,0xa1,0xd8,0x17,0x85,0x61,0xab,0x24,0x22,0xda,0xc8,0xb4,0x1b,0x07,0x2e,0x67,0x77,0x84,0xdc,0x6f,0xfd,0x51,0xa5,0xe8,0x34 +.byte 0x63,0xbd,0xae,0xae,0xc7,0x84,0x1d,0x60,0xc8,0x8f,0xde,0x22,0xfd,0x85,0xb4,0x12,0xb4,0x04,0x5b,0xe7,0xb5,0x58,0xf8,0x56,0x66,0xa3,0xb7,0x1e,0x54,0xd0,0xdb,0x12,0xaa,0x9c,0x89,0x5b,0xfa,0xf4,0xe7,0xe2,0xf4,0x9c,0x08,0xa8,0xbe,0x6b,0xe3,0xce,0x6a,0x88,0xb5,0x74,0xb9,0x49,0xaa,0x7b,0xcd,0xbc,0x17,0x81,0x61,0xe2,0x28,0x6f +.byte 0x4b,0xe8,0xa4,0x55,0xc5,0x1e,0x69,0x21,0x8f,0xfd,0xa8,0xd0,0xb9,0x6f,0x1b,0xfe,0x8c,0x5e,0xf9,0x7d,0xd9,0xc2,0xbe,0x0f,0x6f,0xbd,0xa7,0x94,0x10,0x4e,0xe0,0x5a,0xbb,0xa3,0x40,0x9a,0x5a,0xad,0x10,0x97,0x92,0x3b,0xbd,0xa7,0x75,0x77,0xc6,0xa6,0xde,0x42,0x00,0x3b,0xf7,0xe4,0xf4,0xd7,0xdd,0xaa,0x31,0x1e,0x64,0xae,0x17,0x0a +.byte 0x25,0xa0,0x94,0x5f,0x3c,0xbc,0x3d,0x00,0x00,0xd3,0xba,0x7b,0x98,0x81,0xe1,0xdf,0xba,0x60,0x08,0x2a,0xe5,0x66,0x08,0x3e,0xfa,0x81,0x0a,0x89,0x4e,0xe5,0x3b,0xc3,0xdf,0x21,0x9b,0x54,0xa3,0xb3,0xc3,0xc1,0xce,0xb4,0xaa,0x06,0xee,0x2e,0x34,0x55,0xcc,0x8b,0x0f,0xcd,0x1d,0x1b,0xd9,0x9e,0x59,0xf0,0x93,0xc9,0xba,0x35,0x5c,0x99 +.byte 0xf6,0x86,0x9e,0xe9,0xf8,0x84,0x80,0x05,0x76,0x6f,0x8b,0x38,0xb6,0xe0,0xdf,0x0c,0xb3,0xc7,0x6e,0x62,0x53,0xe4,0x69,0x0a,0xc1,0xcf,0x5b,0x84,0x75,0x78,0x56,0x35,0xa5,0x26,0xc6,0xae,0x76,0x2e,0xc8,0x29,0x8d,0x16,0xd1,0x4f,0x27,0x36,0x22,0x41,0x31,0xfb,0xbe,0xd0,0xf9,0x0a,0x06,0xbf,0x59,0x6e,0x06,0x20,0x0d,0x52,0x66,0x63 +.byte 0x38,0x2a,0xb6,0x15,0x0f,0x51,0x14,0x0b,0xd1,0x63,0x40,0x2a,0xfe,0x88,0x51,0x53,0x5d,0x82,0x4e,0x1b,0x91,0x30,0x7a,0x09,0xec,0xb6,0x53,0x10,0x87,0xba,0x34,0x1f,0x8a,0xf7,0x85,0x31,0x77,0x76,0xba,0x55,0x07,0x6b,0x80,0x5d,0x14,0x23,0x50,0xef,0x07,0x91,0xc5,0x71,0x3a,0x55,0x44,0x9d,0xbf,0xe6,0xab,0xde,0x7c,0xdd,0xe0,0xcb +.byte 0xcc,0xc1,0x78,0xb4,0x8c,0xd1,0x35,0x73,0x80,0x9c,0x44,0xff,0xf8,0x8a,0xaa,0x9a,0x94,0xcf,0xc9,0x51,0xfc,0xa5,0x3d,0x86,0xd6,0x67,0x71,0x1b,0xdb,0x83,0xb2,0x67,0xb0,0x17,0xce,0x13,0x1b,0x7a,0x84,0xc8,0xaf,0x69,0x7e,0xf0,0xab,0xc5,0x8c,0x37,0x12,0x43,0x33,0x5f,0xaa,0xde,0xcf,0x4c,0x73,0x7f,0x6b,0x80,0x18,0x27,0x72,0x62 +.byte 0xe8,0x3d,0x1c,0x94,0x91,0xfa,0x33,0xef,0x13,0x94,0x7f,0xb6,0x53,0xe3,0xd7,0x73,0x05,0x3e,0xe8,0x45,0xde,0x1e,0x1d,0xa4,0x41,0x11,0x0a,0x7f,0x62,0x6e,0x9f,0x9f,0xec,0xe9,0x87,0xe0,0x5d,0xbb,0xbc,0x0b,0x37,0xa2,0xf3,0x68,0x8a,0x24,0xec,0x98,0xe5,0x5d,0xbf,0xa1,0x60,0x2b,0xc2,0x74,0x4b,0x8b,0x85,0x44,0x28,0x02,0xd5,0xb9 +.byte 0xae,0x00,0x37,0x1e,0x0b,0x46,0xe6,0x40,0xf1,0xdc,0xa0,0xfc,0xae,0x04,0x7f,0xb6,0x46,0xa3,0x22,0x79,0x92,0xda,0x89,0xa0,0x38,0xf0,0xa2,0x4a,0x76,0x79,0x0c,0x46,0x4d,0xa9,0xe6,0x75,0xff,0x01,0xb3,0xe4,0x13,0xc2,0x53,0xe9,0x6d,0x1f,0xdd,0x88,0xcf,0x10,0xf5,0x16,0xef,0x05,0x59,0x51,0x15,0x49,0x17,0xda,0xff,0x0e,0xb3,0xb9 +.byte 0xae,0x79,0xc6,0xb1,0x94,0x08,0x09,0x30,0x9f,0x2a,0xfd,0x55,0xc0,0x41,0x8c,0xe5,0x0e,0xee,0xc2,0xa0,0x05,0x36,0x66,0x8d,0x9a,0xcc,0xc9,0xeb,0x1d,0x34,0xc0,0x1a,0x29,0xc2,0xcd,0xb7,0x25,0xd3,0x83,0xf8,0x1e,0xa0,0xf4,0x50,0xd4,0x08,0x0d,0xcb,0x6a,0x2f,0xa5,0x8b,0x30,0x94,0x89,0xea,0x94,0x6c,0x00,0x7e,0x7f,0xb5,0x4d,0x61 +.byte 0xa7,0x9d,0x94,0xcc,0x14,0x8f,0x75,0x1f,0xef,0x2b,0xbe,0x37,0xdd,0x19,0x41,0x2e,0x90,0x36,0x27,0xa5,0xa9,0x6c,0x75,0x8c,0x2d,0xe3,0x97,0x74,0x91,0xf3,0xb8,0xcb,0xcb,0x74,0xba,0xf0,0x57,0x70,0x89,0xee,0x4d,0xc5,0xfe,0x3e,0x60,0xe3,0x5b,0x28,0x36,0x91,0x6f,0xcd,0x6c,0x33,0xb6,0x44,0x0c,0xce,0x81,0xe4,0xdb,0x84,0xbe,0x4e +.byte 0xef,0xb8,0x75,0xf7,0x8b,0xb0,0xb7,0x0d,0x00,0x13,0x54,0x39,0xfd,0x9e,0x86,0x5c,0x59,0xd0,0x84,0x0f,0x97,0xc0,0xf8,0xfa,0x4a,0xcf,0x57,0xb8,0x24,0xf0,0xa8,0x40,0x70,0x9d,0xc4,0xe5,0xc7,0xc9,0xcb,0xb6,0xf4,0x0b,0xb5,0xcc,0xe0,0x90,0x2b,0x42,0x81,0xd6,0x59,0x2e,0x11,0xbd,0xe8,0xf5,0xef,0xa8,0x2b,0xdb,0x93,0x62,0x1e,0xef +.byte 0x3a,0x5f,0xf5,0x47,0x15,0x1f,0x03,0x6f,0x40,0x85,0xff,0x50,0x89,0x2e,0x72,0x8f,0x5c,0x0d,0x61,0x84,0x8d,0x8a,0x8f,0x2a,0x47,0x7c,0x97,0xfe,0x8a,0x97,0x6c,0xd5,0x1c,0x97,0xfa,0x59,0xbe,0x2c,0x0f,0x4d,0x85,0x7f,0x18,0xe3,0xea,0xe8,0xde,0x5a,0xf3,0x67,0xe1,0x71,0x7e,0x81,0xa3,0x74,0x0d,0xf4,0x3d,0x5a,0xec,0xc1,0xcf,0x6f +.byte 0x08,0x0f,0x5a,0x63,0x72,0x0b,0x46,0x5d,0x38,0x80,0xea,0xb7,0x12,0x5d,0xce,0x37,0x26,0xaa,0xd3,0x0d,0x93,0x4a,0x34,0x20,0xd5,0x51,0x54,0x1c,0x5e,0x53,0xa9,0xed,0x26,0x3c,0x29,0xaf,0xbe,0x73,0x34,0xa5,0xc3,0xbf,0x8c,0x8a,0xc3,0x30,0x89,0xaf,0xa9,0x2d,0x28,0x35,0x7d,0x6b,0x84,0x23,0x22,0xee,0x8c,0x82,0x04,0xbd,0x26,0x52 +.byte 0x26,0x73,0x76,0x05,0x35,0x0c,0xec,0xf7,0x54,0xb2,0x17,0x68,0xe9,0x68,0x67,0xbb,0x0d,0x98,0x19,0x32,0xa7,0xdb,0xf9,0xef,0x42,0xe7,0xc2,0xe2,0x39,0x9c,0xae,0xbb,0xdb,0x91,0x28,0x82,0x88,0x23,0x61,0x50,0x6d,0x61,0x39,0x73,0xf8,0x6a,0xee,0xf3,0xa9,0x2c,0x78,0x0d,0x5a,0xed,0xb1,0x08,0x8f,0x24,0xe5,0xb7,0xa4,0xdf,0x65,0x9a +.byte 0x72,0x3a,0x39,0x9c,0xf4,0x43,0xdc,0x8a,0xa3,0x3d,0xb5,0x1e,0x7b,0xe5,0x83,0x11,0x07,0xab,0x62,0x7e,0xac,0xab,0x52,0x94,0x0b,0xaf,0xdf,0x54,0x18,0xf1,0xc0,0x9f,0x1c,0x33,0x02,0xd9,0x62,0xc3,0xcc,0xaf,0x32,0x09,0x35,0x77,0xad,0x72,0xd6,0xb5,0x2d,0xaf,0xf9,0x39,0xfb,0x95,0xbb,0xf9,0x84,0x80,0x84,0xc8,0xc6,0x6d,0xb5,0x79 +.byte 0x25,0xf4,0x6c,0x71,0x26,0xda,0x74,0x86,0xad,0x52,0x47,0x8b,0x46,0x32,0xf6,0x2c,0x89,0xdb,0x93,0x1f,0x46,0x83,0x91,0x19,0xd2,0x0c,0x29,0x97,0x5f,0xa9,0x2b,0x87,0x0c,0x87,0x89,0xe6,0x63,0xa1,0x36,0xfb,0xfa,0xb4,0xb8,0x8e,0x5f,0xe9,0x8f,0x62,0xd2,0x81,0x1d,0x7b,0xc6,0x14,0x37,0x56,0x73,0x64,0x3d,0x0a,0xfd,0xe5,0x94,0x01 +.byte 0x09,0xc8,0x0d,0xa8,0x92,0xda,0x43,0xc4,0x41,0xca,0x3c,0x27,0x2c,0xbb,0xc4,0xb2,0x77,0x13,0xa6,0xb0,0x0e,0x97,0x6a,0xb2,0x83,0xe5,0x5e,0xa3,0xc0,0xe8,0x5e,0x0b,0xe6,0x00,0x04,0x6c,0x1b,0xac,0x84,0xab,0xd3,0xac,0x5f,0x39,0xc2,0xf8,0xfd,0x66,0xf7,0x97,0xd7,0xb9,0x6b,0xd8,0x2a,0x49,0xf7,0x67,0xd8,0xd5,0xa4,0x89,0x57,0xa6 +.byte 0x8f,0x7c,0xcf,0xaf,0xfe,0x3c,0x92,0xc8,0x23,0x2c,0x26,0x83,0x86,0x16,0x97,0x34,0x71,0x3e,0x82,0x2b,0xc7,0x75,0x5a,0x59,0xb3,0x44,0xdd,0x4e,0xd4,0x6d,0x1b,0x9f,0x3c,0x35,0xc4,0xe4,0xf2,0x95,0xb6,0x90,0x95,0xa7,0xc4,0x03,0x10,0x7d,0x3d,0xeb,0x74,0x29,0xaa,0x0c,0xd3,0x27,0xcd,0x3a,0x85,0x3c,0x88,0xd5,0x9a,0x46,0x84,0x8e +.byte 0x36,0xde,0xe3,0x6a,0x27,0xbf,0xc3,0xd0,0x3e,0xa3,0x0e,0x62,0x1f,0xdf,0x4c,0x02,0xa7,0x11,0x91,0xb0,0x6b,0x50,0xc1,0xe0,0x18,0x5a,0xc0,0x10,0xc7,0x1c,0xb6,0x36,0xac,0xe7,0x7d,0xad,0x34,0x63,0x4f,0x17,0xcc,0x41,0x30,0xec,0xd7,0x14,0xb9,0xfe,0x07,0x5c,0x3d,0xbe,0x08,0x77,0x5b,0xdf,0xa3,0x20,0x56,0x55,0xa2,0x8a,0xe7,0x0d +.byte 0xf6,0xfc,0x91,0x37,0xb8,0x92,0x6c,0xd9,0x5c,0xb0,0xc2,0xf7,0xc0,0x38,0xfa,0x54,0xc6,0xa1,0xd3,0x4d,0xae,0x49,0x0d,0xd1,0xc0,0xef,0xbe,0x27,0xce,0x23,0x8e,0xf2,0x9b,0x68,0x02,0x67,0x8f,0x53,0x9d,0xf6,0x23,0x57,0x85,0xdd,0x8d,0xd7,0xcb,0x47,0xf1,0xd8,0x17,0xd8,0x46,0x72,0x28,0x4b,0xac,0x94,0xd3,0x5d,0x53,0x4f,0x06,0x19 +.byte 0xc6,0x0e,0x0b,0x9f,0x58,0xc6,0x3f,0xea,0x4e,0x83,0x5e,0xd3,0xcc,0x44,0x55,0xa3,0xc7,0x24,0x19,0xea,0x1b,0x18,0xc1,0x18,0x5f,0x21,0x67,0x73,0x32,0x4e,0x31,0x69,0x05,0x40,0x79,0x7c,0x05,0x13,0xdd,0x50,0xea,0xfa,0xc2,0x26,0xe2,0x33,0xff,0x34,0x0d,0xda,0x77,0x27,0xe0,0xe7,0xa6,0x7b,0x8e,0xcd,0xdb,0x92,0x48,0x3a,0x2d,0x52 +.byte 0xf5,0x59,0xca,0xc7,0x47,0xda,0xb7,0xc7,0x8c,0x37,0x5e,0x29,0x30,0xf5,0x57,0x74,0x8b,0x10,0xcb,0x20,0x31,0x4b,0x12,0xe3,0x84,0xd2,0xb2,0xc3,0xd0,0xe3,0x94,0x18,0xa2,0xdc,0x8f,0x4d,0xc3,0x0a,0x43,0x07,0x2c,0x6b,0x41,0x64,0xc0,0x35,0x8f,0x37,0x9b,0xd7,0x78,0xab,0xd0,0xdc,0x1f,0x77,0x55,0xab,0x71,0xc8,0x99,0x98,0x00,0x29 +.byte 0x1c,0xab,0x3c,0x5f,0x82,0x96,0xc2,0xc8,0x9b,0xd4,0x68,0x3f,0x3d,0xe6,0x5a,0x4c,0x1c,0x7b,0x51,0xa3,0x79,0xe8,0x0e,0x8a,0x78,0xdc,0x98,0x63,0x80,0x74,0x32,0x9d,0x7c,0x3a,0x79,0x54,0xa7,0x4c,0xa4,0x4e,0xfc,0xa5,0x8a,0xa4,0x19,0xce,0x84,0xbb,0x8a,0xb9,0x93,0x4a,0x2d,0x82,0x5d,0x1d,0xf8,0x2f,0x85,0xb3,0x90,0x32,0x61,0x6d +.byte 0x13,0x33,0xac,0xbc,0x5d,0x3a,0x54,0x45,0x04,0x50,0x30,0x30,0xc7,0x58,0xbe,0xed,0xdd,0xa1,0xae,0x6d,0xe5,0xde,0xed,0x63,0x9f,0xd4,0x2b,0x8d,0x1f,0x69,0xde,0xda,0x55,0x3f,0x3b,0xe7,0xc8,0x73,0xc0,0x68,0x18,0x6a,0xb3,0xfb,0xce,0xaf,0x46,0x0a,0xcc,0x81,0xa8,0x96,0x6d,0xb6,0xa4,0x74,0xf3,0x8c,0x95,0x2d,0xa1,0xfe,0x09,0xb8 +.byte 0xdb,0x3c,0xcd,0xdc,0x5b,0x0e,0x2d,0xff,0x89,0x8a,0xfd,0x7a,0xe9,0x69,0x0b,0xdd,0x4e,0x9b,0x94,0x64,0xe4,0xb6,0x5d,0x69,0xef,0x9c,0xf6,0xe6,0x44,0x73,0xd5,0x86,0x47,0x63,0x77,0x3e,0x74,0xaa,0xf3,0x6b,0x1f,0x37,0xbf,0xef,0xa2,0xff,0x86,0x61,0x78,0xc4,0xb5,0xbd,0x5a,0x43,0x49,0x80,0x16,0xf2,0x4c,0xec,0x1e,0x07,0x0f,0x41 +.byte 0x60,0x6f,0x3a,0xd2,0xab,0x85,0xc0,0x5c,0xfc,0x9f,0x48,0xad,0x5e,0xe0,0x7d,0x66,0x8e,0x46,0xf1,0xc3,0xb0,0xbc,0x5e,0x3b,0x10,0x7c,0xfc,0xa3,0x27,0xbd,0x8f,0xae,0xd9,0x61,0x39,0xbf,0xca,0x27,0xbb,0xe7,0xda,0x59,0xa8,0x63,0x38,0x16,0xd9,0xb5,0xa6,0xd9,0x1c,0x2b,0xa1,0x42,0xec,0x50,0xd7,0x63,0x09,0x22,0xe0,0x0c,0xb8,0xec +.byte 0x12,0x9b,0xdb,0x8a,0xd3,0x02,0xcf,0x32,0xa9,0x88,0xa4,0x31,0xc8,0xa9,0xf4,0x03,0xf2,0x9d,0xe1,0x41,0xf0,0x0f,0x23,0x65,0xa8,0x99,0x55,0x87,0xf2,0x17,0x66,0xf0,0x94,0xe8,0xe9,0xb6,0xfd,0x10,0xb9,0x55,0xf4,0xda,0x06,0x7a,0xbe,0xe2,0xd3,0xfa,0xb8,0xf7,0x85,0xdf,0xee,0x39,0xdc,0x0f,0xda,0x87,0xf5,0x66,0xd8,0x1b,0x5c,0x0c +.byte 0x13,0xe8,0xa2,0xcd,0xdf,0x47,0x33,0xd7,0xf4,0x5c,0x79,0xc7,0xf4,0x68,0xe4,0x2d,0xa1,0xde,0x5c,0x06,0x1c,0x85,0xf1,0x2a,0xf9,0x73,0x44,0xbc,0xd3,0x57,0x4f,0x0f,0xcd,0xcc,0x40,0xeb,0x9d,0x35,0x8e,0xdf,0x1d,0x4a,0x61,0xd0,0x66,0xb5,0x16,0xce,0x45,0xc0,0xbf,0x01,0xe3,0xb2,0x51,0xba,0x53,0x18,0x2a,0xff,0x19,0xea,0x41,0xa2 +.byte 0xac,0x0b,0x50,0xd3,0xc1,0x6a,0x9c,0xb0,0x34,0x6f,0xa0,0xcb,0xc7,0xc6,0x79,0x5d,0x17,0x3a,0x4c,0xa3,0x16,0xdc,0xac,0x10,0xf0,0x24,0xad,0x9a,0x5b,0xa9,0x7e,0x45,0xcd,0xe9,0xad,0x87,0x04,0xbc,0x2a,0x05,0x59,0xd1,0xdb,0x86,0x22,0x40,0xdf,0xb1,0xff,0x8d,0x3c,0xf8,0x6a,0xf3,0xcb,0x60,0xf9,0x35,0xa6,0x42,0x81,0xcb,0x0f,0x7c +.byte 0xf7,0x24,0x3b,0x0c,0x94,0x32,0xd9,0xec,0xcf,0xd1,0x31,0x3e,0x3e,0xeb,0xa9,0xf2,0x1f,0x2d,0xa7,0x89,0xf7,0x67,0x7d,0x90,0x9d,0x40,0xf2,0xdb,0x07,0x8f,0xb8,0x6f,0xfd,0x78,0x6e,0xd0,0x9e,0xd5,0x7d,0xb0,0x7d,0x65,0xdc,0x6e,0x50,0xec,0x7a,0x5c,0x2c,0x3e,0x6f,0x64,0xa3,0x10,0x34,0xf7,0x71,0xc8,0x82,0xb6,0x96,0xb8,0xb1,0x2a +.byte 0xb4,0x03,0x95,0x75,0x90,0xac,0x6c,0x81,0x17,0x97,0x06,0xd0,0xb8,0xc5,0x98,0xc5,0x9e,0x46,0x07,0x13,0x02,0x9e,0x47,0x69,0xba,0x85,0x2d,0x09,0x86,0x50,0xe4,0x76,0xb1,0xa2,0xbe,0x8b,0x91,0x6b,0x3b,0x76,0xa3,0xb7,0xf5,0x7f,0xfe,0xf1,0xa4,0xf3,0xc3,0x53,0x64,0xef,0x97,0x86,0x96,0x8b,0xc4,0xae,0x06,0x8b,0xe8,0x3c,0xdc,0xff +.byte 0xfa,0xad,0xcb,0xcb,0x53,0x15,0xf2,0xcc,0x9f,0x48,0xf9,0x57,0x6a,0xcd,0xb2,0xee,0x46,0xc0,0xbf,0x82,0x58,0x60,0xda,0x2f,0xbd,0xde,0xc7,0x41,0xcb,0xf1,0x38,0x56,0x9d,0x38,0x38,0x3d,0xea,0x5e,0x38,0xf1,0xd0,0x02,0x35,0xee,0x4c,0x2f,0x1d,0x19,0xbd,0x08,0x01,0xc3,0x8f,0x75,0xe2,0xf3,0x93,0xbb,0x76,0x6b,0xd7,0x87,0x76,0x7f +.byte 0x3b,0x29,0x08,0x9f,0x3a,0xa5,0x44,0x96,0x5a,0xb3,0x78,0xa9,0xbe,0xf7,0x5d,0xda,0x06,0x37,0x98,0x5d,0xbe,0x6e,0xec,0x58,0x53,0xd1,0xa5,0xd7,0x7a,0x16,0xb1,0x59,0x98,0x42,0x37,0x76,0x1b,0xd6,0x2e,0xa7,0xdc,0x45,0xa6,0x9c,0x9c,0x99,0x24,0x0e,0x22,0xae,0x94,0x65,0xeb,0x4e,0x64,0xc3,0xb0,0xac,0x19,0x41,0xf1,0x62,0x65,0xb2 +.byte 0x35,0xf5,0x2f,0xdb,0xd2,0xf0,0x78,0x19,0x35,0x04,0x6f,0x9c,0xf4,0xaf,0x81,0x68,0x4f,0x8b,0x85,0xfa,0x31,0x23,0x06,0xeb,0x37,0x86,0x43,0x51,0xb3,0xd2,0x2a,0xd7,0xd5,0xa9,0x33,0xba,0xfd,0xb5,0x0e,0x6d,0x9a,0x91,0xf9,0xe7,0x27,0xb7,0xff,0xe6,0xe7,0x34,0xc5,0x1a,0xa3,0x45,0x3b,0x71,0x34,0x87,0x7e,0xe7,0xab,0x74,0xc5,0xff +.byte 0xeb,0x23,0x8f,0x3f,0x5d,0x1c,0x91,0x47,0xeb,0x3e,0x5f,0x5a,0xa6,0x5a,0xde,0xa9,0x5f,0xf4,0x8f,0x95,0xc6,0x25,0x3c,0xd5,0xaf,0xfd,0x4d,0x33,0x68,0xe1,0xa3,0x51,0x1b,0x07,0xad,0xb9,0xec,0xf1,0x50,0x51,0xbf,0xeb,0xe8,0x58,0x2a,0x50,0x0e,0x9d,0xc2,0x8a,0x83,0x8c,0xb0,0xb8,0xde,0x1d,0x7b,0x0f,0xff,0xfc,0xfc,0x31,0xe5,0x62 +.byte 0x40,0xc8,0x28,0x30,0x31,0xc9,0x82,0xab,0xbe,0x50,0xe5,0xfe,0x1f,0x49,0x17,0xf9,0xea,0x23,0xc7,0x6d,0x8d,0x63,0xc3,0x70,0x40,0x32,0x0b,0x48,0x7a,0xd9,0x03,0x52,0x1b,0xf4,0x90,0xd6,0x6d,0xd2,0xfc,0xec,0x24,0x7f,0x21,0x2e,0xd4,0xb5,0x60,0x44,0xd9,0x83,0xb0,0x3e,0x75,0x8a,0x6a,0x09,0xab,0xa8,0x4f,0x48,0x3c,0x2b,0x89,0x30 +.byte 0x29,0xdb,0x1a,0x8e,0x68,0xe4,0x89,0xed,0x10,0xe8,0x46,0xa7,0xf9,0x5f,0x7d,0x42,0xe0,0x8d,0xbc,0x3d,0x4d,0xd8,0x06,0x4a,0xf9,0xbb,0x97,0xa7,0xdb,0x24,0x0b,0xfc,0x49,0x92,0x5d,0x80,0xf8,0xed,0x57,0xc7,0x1e,0x82,0xed,0x41,0xb8,0xfd,0x71,0xb9,0xa5,0x11,0x52,0xdd,0x1e,0xa4,0xf1,0x02,0xc7,0x54,0x7c,0xdc,0x37,0x9f,0xfe,0x37 +.byte 0xe8,0xa5,0xcf,0xb0,0x3d,0x25,0x3f,0x24,0xfe,0xf2,0x63,0x97,0x3c,0x13,0xdc,0x31,0x78,0x07,0xf1,0x8e,0xee,0xc6,0x00,0xf8,0xfd,0x84,0x53,0x4d,0x92,0xa1,0xef,0xd0,0xb1,0x12,0x0a,0x12,0x91,0xeb,0x52,0xdd,0x6e,0x15,0x98,0xd2,0xe1,0x53,0x7a,0x0e,0x02,0x83,0xd3,0xd1,0xde,0x72,0x6e,0x5b,0x4b,0x8d,0x40,0xe3,0x2d,0x22,0x59,0x9d +.byte 0xee,0xbe,0x43,0x18,0x62,0x8c,0x77,0x18,0x91,0xf5,0x9e,0xbc,0x3e,0x8b,0x77,0xb6,0xdb,0x5c,0xcb,0xcd,0xdb,0x36,0xea,0xf5,0x1d,0x9b,0xa7,0x13,0xef,0xda,0xd0,0xe8,0xd8,0xb2,0x4c,0xc6,0x19,0x3d,0x77,0x2d,0x0d,0xad,0xe4,0x32,0x24,0xe9,0xd4,0x7f,0x72,0x1d,0xc6,0x6e,0x83,0x7d,0xb8,0x62,0x64,0x9d,0x9a,0xd7,0x13,0x93,0x92,0xf1 +.byte 0x37,0x98,0xcf,0x44,0x66,0xab,0xd1,0x61,0x6c,0x08,0xa7,0x41,0x4e,0x37,0xc1,0x67,0xfb,0x7c,0x22,0x8f,0xbd,0x93,0xb2,0x09,0x13,0xa0,0x48,0x60,0xaf,0xda,0x73,0x2b,0xa3,0x2a,0xf3,0x4d,0x8e,0x22,0x5b,0x7a,0x32,0xe6,0xca,0xff,0x0e,0xa1,0x0a,0x15,0x33,0x31,0x50,0x71,0x1c,0x85,0x26,0x9b,0x19,0xf2,0xe3,0x69,0x4e,0x2d,0xff,0x79 +.byte 0x80,0xfe,0x2c,0x2f,0x7a,0x49,0x95,0xf3,0x0e,0x78,0xb1,0x0c,0x1c,0x45,0x59,0x68,0x2a,0x37,0xf2,0x48,0x6f,0xd9,0x32,0xf7,0xfc,0xdc,0xbe,0xe3,0xdd,0x61,0x17,0xc0,0x08,0x9d,0xbc,0x2d,0x8d,0x24,0x1c,0xbb,0x53,0xbe,0x37,0x59,0x30,0x87,0xa0,0x14,0xf5,0x08,0xcf,0xd1,0xcc,0x84,0xa7,0x0f,0x69,0xe0,0x77,0x8c,0x0d,0xdc,0x82,0xe5 +.byte 0x88,0x9a,0x58,0x05,0xe3,0x4f,0xdd,0x55,0x1e,0x6e,0x90,0xd5,0x3c,0xa6,0xa6,0x10,0x24,0xe5,0x58,0x97,0xdc,0x31,0x87,0x39,0xdc,0x3a,0xe6,0x24,0x64,0x23,0x45,0xd8,0x01,0x1b,0xf6,0x38,0x68,0x9e,0x62,0x53,0x00,0x97,0x71,0x04,0xb5,0x3b,0x54,0xdb,0xb5,0xcb,0x30,0x91,0x14,0xce,0x94,0xd5,0xe0,0x96,0x70,0x99,0xa5,0xed,0x69,0x32 +.byte 0xc7,0xb7,0x14,0xff,0xc0,0xde,0x19,0x5d,0x31,0xdb,0xa7,0xc0,0x7a,0x94,0xec,0x60,0xfc,0x52,0x71,0x69,0x9b,0xd8,0xbe,0x97,0x0b,0xb5,0x70,0xa7,0x47,0x11,0x37,0x84,0xda,0x3c,0x23,0xfe,0xf2,0x53,0xad,0x55,0x71,0x1e,0x70,0x9b,0x7b,0x61,0x97,0xf8,0x71,0xc4,0xad,0x72,0x98,0x43,0x0c,0x33,0x30,0x2c,0xb2,0xd6,0x21,0x8d,0xbb,0x1b +.byte 0x85,0x82,0x24,0x14,0x85,0x95,0x88,0xff,0x3f,0x8c,0x88,0x96,0xa0,0xf8,0xd7,0x36,0x78,0x37,0x6d,0x92,0x09,0x04,0x76,0x27,0xb9,0xd5,0xea,0x0f,0x07,0x9f,0xe1,0x49,0x0e,0xd1,0x9c,0x46,0xcd,0x2b,0x7a,0x57,0xb6,0x56,0x39,0xe5,0x59,0x6b,0x1b,0x39,0xbf,0x15,0x3b,0x56,0xf5,0xc2,0x08,0x96,0xf5,0x63,0x4c,0x31,0x33,0x65,0x8b,0x74 +.byte 0x4e,0xde,0xa8,0x20,0xe0,0x7c,0x27,0xee,0x91,0x74,0xe8,0x24,0xb3,0xcf,0xa3,0xd4,0xf1,0xb9,0x18,0x43,0x05,0x5d,0x13,0x36,0x82,0xd1,0xbf,0x16,0x89,0x48,0x83,0xf0,0xcc,0x5c,0xbb,0x75,0x7e,0x71,0xc0,0x73,0xd1,0xf5,0x00,0x38,0x7f,0x10,0x98,0xd6,0xb9,0x14,0xea,0xd3,0x3f,0x0f,0xe3,0x61,0x1a,0x5e,0x21,0xd0,0x11,0x58,0x68,0x47 +.byte 0xf2,0xe5,0xe9,0x65,0x9a,0xc1,0xf4,0xa0,0x98,0x8e,0x9f,0x7f,0xbe,0x7e,0xd0,0xb6,0x88,0x4e,0xce,0xc1,0x8b,0xd4,0xd3,0x93,0xb7,0xd8,0xf3,0x0b,0xf3,0x73,0xc9,0x08,0x2f,0xcf,0xd8,0xbd,0xa6,0x1d,0x7c,0xfa,0x44,0x82,0x9f,0x03,0xca,0x56,0x3b,0xbf,0x4d,0x1e,0xbc,0x06,0xc2,0x37,0xfb,0xde,0xd3,0xa9,0xe3,0xae,0x61,0xef,0x26,0x7d +.byte 0xbd,0x2f,0xee,0x2d,0xe1,0x65,0x71,0x77,0xab,0x9c,0x96,0x4f,0x00,0xe2,0xde,0xd7,0x05,0x54,0x00,0xb6,0xaf,0x12,0x0c,0x79,0x1a,0xed,0x20,0x72,0xc7,0x3b,0x3a,0x10,0x15,0x74,0xff,0xbd,0xf8,0xaa,0x8f,0x3a,0x83,0x39,0x24,0xfa,0x53,0x2d,0xc3,0x61,0xfc,0x12,0x6b,0x54,0x33,0xbf,0x83,0xc9,0x59,0x00,0xf0,0xdc,0xa8,0x64,0xbc,0xb5 +.byte 0xc3,0x96,0x60,0x3e,0x7b,0xe2,0x08,0x19,0x92,0x17,0x80,0x9b,0x0c,0x09,0x49,0x68,0x8b,0x15,0xe3,0xce,0x0c,0xfa,0x0c,0x8b,0xf0,0xdc,0x58,0xb0,0x7b,0x82,0x85,0xd2,0x56,0x1c,0xfb,0xb5,0xd0,0x0e,0x0a,0x55,0x61,0xda,0xd8,0x20,0xc1,0x79,0x70,0x3c,0x69,0x8e,0x49,0x5f,0x1c,0xdb,0x22,0xb8,0xdd,0x4c,0x4f,0xca,0xe9,0x0f,0x9a,0x4e +.byte 0xff,0x56,0xbc,0xcf,0x72,0x09,0xa6,0x41,0x38,0xf0,0x7d,0xe7,0x45,0x0a,0x71,0x2c,0x92,0xdd,0x21,0x17,0xb2,0x3b,0x31,0x3c,0x91,0x11,0x69,0x29,0x50,0x31,0xe6,0xa6,0x10,0xc7,0x35,0xe8,0x44,0xec,0x74,0xa3,0x7e,0xb6,0x34,0xe5,0xb7,0xba,0xdf,0x5b,0x2f,0x85,0x02,0x6c,0xb0,0x71,0xb1,0x43,0xff,0x0e,0x47,0x04,0x63,0x4d,0x5b,0x81 +.byte 0x81,0x28,0x8b,0x84,0x79,0xad,0x2a,0x45,0x00,0x1c,0x0c,0x9f,0xef,0x35,0xbb,0x6d,0xc5,0x6a,0x6b,0xef,0x2b,0xae,0x78,0x66,0x05,0x7a,0x61,0x4c,0xe9,0x5e,0xf7,0x95,0x66,0x7e,0x1a,0xa7,0xdf,0x4c,0x4d,0x7c,0x66,0xa5,0x38,0x84,0x86,0x8d,0x66,0xcc,0x7f,0x32,0xb2,0x9c,0xc5,0x0d,0x3d,0xb7,0xb1,0xa6,0xc5,0x80,0x68,0xaf,0x79,0x81 +.byte 0x15,0x8f,0xec,0x50,0x5c,0x1b,0x57,0x31,0xd2,0xb9,0x16,0x66,0xf8,0x16,0xfd,0xcd,0xc7,0xa8,0x84,0x6f,0x35,0xea,0x3f,0xa4,0x72,0x8d,0xad,0xf4,0xd1,0x14,0x46,0xcc,0x06,0xed,0x71,0x39,0x07,0x99,0x28,0xc8,0xf9,0xc4,0xc2,0xec,0xde,0xb8,0x92,0xae,0xc5,0xf8,0xb2,0x49,0xc9,0x32,0x58,0xec,0x9f,0xb0,0x59,0xaf,0x49,0xef,0xe8,0x0d +.byte 0x4c,0x56,0x8d,0xf7,0x57,0xb0,0x09,0xbe,0xc2,0x6a,0x62,0xc4,0x87,0xf3,0x20,0x07,0xc9,0xe3,0x3b,0x31,0xcc,0x8d,0xcf,0x5d,0x18,0x00,0x2a,0x9f,0xde,0x80,0x1a,0x7e,0x95,0x93,0xd1,0xbd,0xe6,0xd4,0x69,0x37,0x96,0xbb,0x70,0xc5,0x3c,0x87,0x8f,0xff,0x95,0x97,0xfe,0x95,0x56,0x7b,0xba,0x03,0x3d,0x29,0x0f,0xdb,0xd0,0x65,0x4f,0xf8 +.byte 0xa8,0xf3,0x42,0x09,0xb5,0x81,0x34,0xc6,0xa9,0x60,0xb9,0xef,0x3e,0x9d,0xc5,0x42,0x1e,0x79,0x5d,0x2b,0xf2,0x46,0x0d,0xeb,0x88,0x84,0x8f,0xad,0x60,0x69,0x57,0x49,0x33,0xb4,0xdd,0xfe,0x10,0x65,0x65,0x51,0xaf,0x68,0xa0,0xce,0xbd,0xe1,0x6e,0x03,0xe1,0x5f,0xba,0x3f,0x36,0xca,0xed,0x20,0x95,0xfa,0xff,0x3c,0x65,0xa8,0xb1,0x6b +.byte 0xc5,0x91,0xa0,0xd5,0x36,0x38,0x1c,0x38,0xe9,0x1d,0x1b,0x67,0x4c,0x17,0xd3,0x29,0x92,0xa2,0x27,0x76,0x3d,0xe2,0x26,0x37,0x2a,0x2c,0xf6,0xee,0x64,0x40,0x8a,0x1c,0x2b,0xc1,0xd3,0x28,0xd0,0xcf,0x2d,0xc2,0x45,0xf4,0x37,0x5a,0x63,0xfb,0x18,0x67,0x01,0x0a,0xe8,0xe2,0x41,0xf7,0x15,0x47,0xa7,0xe9,0xc8,0x05,0xbc,0xc7,0x8f,0xf0 +.byte 0xc3,0xc5,0x9a,0x4e,0x0d,0x7b,0xf0,0x20,0x8c,0x21,0x49,0x99,0x0d,0xf7,0x34,0x84,0x35,0xfb,0x11,0x33,0xd6,0x46,0x14,0x3c,0xf1,0xb3,0x37,0xac,0x75,0x63,0xe7,0x1a,0x19,0xa4,0x49,0xf2,0x58,0x1d,0x56,0x55,0x64,0x46,0x25,0xff,0x7d,0x90,0x34,0x21,0x5d,0x00,0xa1,0xa8,0xaa,0xe0,0x93,0xe7,0xda,0x11,0x34,0x1d,0xa3,0x0c,0x67,0xae +.byte 0xf5,0x60,0x72,0x14,0xdf,0x08,0xf6,0x72,0x3e,0x48,0x41,0x3d,0x00,0x58,0xfb,0x0c,0x15,0x80,0x2d,0xd9,0x72,0x47,0xa6,0x20,0x6a,0x74,0x9e,0x06,0xb9,0xac,0x68,0x3a,0xe7,0xf1,0x19,0xb8,0x0b,0x66,0x07,0x4d,0xa0,0xb5,0xab,0xea,0x70,0xa1,0xdf,0x41,0x76,0x85,0x18,0x5b,0x6f,0x78,0x5a,0x5d,0x08,0xe0,0x1b,0xd8,0x06,0x73,0x1e,0x16 +.byte 0xcb,0xdb,0x02,0xf8,0x96,0x64,0x65,0xc5,0xc1,0x52,0xd4,0xd8,0xb3,0x1e,0xd4,0x09,0xfd,0xa7,0x30,0x41,0x5a,0xce,0x53,0x4d,0x11,0xc8,0xdd,0x13,0x50,0xd5,0x2e,0xa0,0xe6,0x48,0x49,0x31,0x4b,0x1d,0xce,0xfc,0x42,0xed,0x8f,0xc8,0xb3,0x0a,0xae,0x1d,0x4c,0x1e,0x4f,0x39,0xa4,0x37,0xc8,0x54,0xdf,0x40,0xa6,0x42,0x61,0x7d,0x34,0xd4 +.byte 0x75,0x0a,0x9f,0xf0,0x33,0x54,0xf3,0xc4,0xdc,0x4e,0x2f,0x81,0xc2,0x20,0xaa,0x4f,0xa0,0xae,0xa6,0xb8,0x50,0xf8,0x45,0xf1,0xf2,0xd1,0xd2,0xcf,0xc8,0xf0,0xf4,0x54,0x37,0xdc,0xfb,0x13,0xdf,0x38,0xc2,0x3f,0xe0,0x59,0xb5,0x9a,0x0f,0x27,0x87,0xd4,0xd3,0xdc,0xfd,0xda,0x1d,0xfa,0xdd,0x12,0xe0,0x7f,0x34,0x01,0xde,0x28,0xf5,0x0e +.byte 0xff,0x59,0xc7,0xbd,0x6a,0xe4,0x0c,0x85,0x7b,0x87,0xf9,0xd7,0xe2,0xed,0xb2,0xf7,0xb7,0x13,0xfb,0xfc,0x4d,0x25,0x52,0xfd,0x23,0x6b,0x10,0xd0,0x80,0xd8,0xbd,0xbd,0xf0,0x87,0xfc,0x38,0x85,0x83,0x20,0x5f,0x7c,0x26,0x14,0x93,0xd3,0xe1,0xdc,0xa4,0xda,0xa7,0xf9,0xfd,0x6c,0x9a,0x2b,0x75,0x82,0xf1,0x9f,0x1b,0x0c,0x43,0xd4,0x2d +.byte 0x5b,0x0c,0x54,0x7e,0x61,0x24,0x8e,0x50,0x25,0xd8,0x54,0xfd,0x30,0xec,0x4c,0xa8,0xb6,0xf0,0x35,0x67,0xf7,0xe4,0x3c,0xfd,0xc8,0x40,0xf4,0x2d,0xc5,0x4d,0xc3,0x29,0xc2,0x88,0x60,0xab,0xd9,0x2a,0xe8,0x31,0xcc,0x0c,0x9f,0x97,0xa8,0x2e,0xaa,0xa5,0xb6,0xee,0x3c,0x71,0xa9,0xff,0x90,0xb4,0x43,0x2e,0x16,0x80,0x8c,0xfe,0xb5,0x7a +.byte 0x40,0x58,0xd5,0x98,0x7e,0xca,0xaf,0x95,0xee,0x00,0x26,0x8d,0x5b,0xba,0x33,0xee,0x35,0xb5,0x9b,0xf8,0x08,0x1e,0x15,0x2d,0x01,0xb1,0x83,0xa6,0x57,0x58,0xd1,0xf3,0xa4,0xf1,0x3a,0x00,0xf4,0x40,0xee,0x35,0x3a,0x20,0xc2,0x13,0x1e,0xda,0x32,0xc2,0x35,0x74,0x29,0xce,0x51,0x3f,0xec,0xb2,0xd7,0x23,0xa7,0xc6,0xef,0x70,0xb9,0x88 +.byte 0x6f,0xa8,0xf5,0x5b,0xff,0xc5,0xf5,0xb4,0x3b,0x12,0x75,0x20,0xbf,0x61,0x8a,0xb1,0xae,0x01,0x9b,0x17,0xf4,0xf3,0x2d,0xfb,0x44,0xe8,0xac,0x29,0x81,0xc2,0x6d,0x50,0x05,0x11,0xd9,0x43,0xf8,0xc7,0x58,0x5d,0xbc,0x2d,0xc0,0x83,0xd2,0x81,0x41,0x1c,0x46,0x62,0x60,0x6e,0x65,0x52,0x4b,0x1c,0x88,0x72,0x1b,0x0e,0x8e,0x7d,0xa2,0xb5 +.byte 0x4e,0x28,0x32,0xf2,0xb1,0xfa,0xf1,0x4b,0xc5,0x85,0x95,0x2c,0x08,0x78,0x85,0x68,0xe5,0x20,0x23,0x8b,0xc4,0xf5,0xb2,0xdb,0xc1,0xdd,0xe5,0x69,0xa4,0x97,0xa9,0x6c,0x2e,0x3a,0x25,0x1c,0x24,0x54,0x97,0x3e,0x8d,0x61,0x61,0xa3,0x60,0xf5,0xd2,0x4e,0x90,0x25,0x06,0x09,0x31,0x7b,0x96,0xce,0xcc,0xb7,0xbc,0x63,0x9f,0x04,0x7d,0xec +.byte 0xa1,0x4a,0x65,0xd3,0x26,0xe1,0xbf,0xf9,0x88,0xea,0x5c,0x5d,0xfe,0xe9,0x60,0x77,0xbd,0xf2,0xa0,0x11,0x91,0x24,0xca,0xa1,0x0d,0x05,0x7b,0xe2,0x7d,0x22,0x2e,0xd2,0xc9,0x4b,0x78,0xce,0x0c,0x7b,0x49,0xaf,0xd6,0x59,0x5f,0xb4,0xbd,0x2e,0x4a,0x22,0xcb,0x5d,0x1c,0xd5,0xde,0xea,0x86,0x74,0xd5,0x15,0x52,0x59,0xfc,0x3d,0x7b,0x1c +.byte 0x3f,0x14,0xec,0xf2,0xc8,0x3c,0x88,0xbf,0x89,0xd5,0x23,0xc3,0x94,0x3c,0x28,0x04,0x91,0x6c,0x36,0x35,0x4b,0x75,0xf8,0xdc,0xf3,0xff,0xba,0x8c,0xa4,0xc7,0x85,0xc5,0x1a,0x30,0x4b,0x7c,0xc5,0x2f,0xb9,0x2a,0x14,0xaa,0x65,0xe3,0x92,0xdc,0xe1,0xed,0x3f,0xb6,0xff,0x0e,0x74,0xe0,0xb3,0xc9,0x4b,0xd1,0x96,0xfc,0x49,0x72,0xbe,0xb0 +.byte 0xc8,0x4a,0xd5,0xf0,0xb3,0x58,0x29,0x35,0x97,0xd4,0x5c,0xc7,0x0b,0x27,0x1d,0x14,0xdb,0xb7,0x5c,0x7e,0x6d,0xc1,0x56,0xa9,0x80,0x72,0x7d,0x75,0xc2,0x2f,0x07,0x28,0xb4,0xff,0xef,0xa7,0x34,0xed,0x31,0x44,0x85,0xe6,0xc3,0xa4,0x5f,0xe2,0xe8,0xab,0xd1,0x59,0xe7,0x32,0x20,0xd1,0xcc,0xef,0x6f,0xe1,0x10,0x89,0x6c,0x0c,0xf3,0x5f +.byte 0xe8,0xc7,0x1c,0x3b,0xeb,0x3e,0xa5,0x53,0x2d,0x48,0x64,0x92,0xa0,0xec,0xf3,0x75,0x5b,0x5b,0xe2,0x83,0x87,0x04,0xa7,0xd8,0x1b,0x44,0xfb,0x42,0xee,0xd8,0xf2,0x98,0xff,0x30,0xc8,0x09,0xf8,0x1a,0x95,0x46,0x2d,0xe7,0x43,0x10,0x90,0xf4,0x2c,0x8f,0x0b,0x60,0x6d,0xeb,0xbf,0x19,0xc1,0x9d,0x5c,0xc0,0xff,0xb1,0x86,0xbc,0x01,0x73 +.byte 0x35,0x1f,0xd8,0xf4,0xa1,0xd4,0x7f,0x2d,0x1b,0xf9,0xa6,0x78,0x1a,0x2e,0x2c,0xe2,0xcc,0x8b,0x5f,0xbb,0xb9,0x80,0x31,0x32,0xa5,0x5d,0x70,0x59,0xae,0xe3,0xac,0xab,0xde,0x38,0x09,0x07,0x57,0x5f,0xbf,0xe8,0xa0,0xb8,0xd0,0x03,0xac,0x02,0x0d,0x7f,0x7e,0x0c,0xd2,0xcf,0x46,0x01,0x07,0x9f,0x16,0xf6,0x2b,0x94,0xaf,0xae,0x66,0x09 +.byte 0xca,0x4c,0x5f,0x37,0x53,0xa6,0x50,0x82,0x3a,0x0a,0x7b,0xb3,0x52,0x2e,0x0f,0xe4,0x64,0xab,0x40,0x21,0x2d,0xb7,0x20,0x9b,0xe3,0x2f,0xec,0x2b,0xb3,0x31,0x60,0x51,0x2e,0xb6,0x68,0xac,0xae,0xee,0x2d,0x28,0x5b,0xe0,0xa7,0x85,0xab,0x95,0xba,0x53,0x8c,0xc0,0xf8,0x16,0x8f,0x42,0x01,0xef,0x00,0x32,0x44,0x8e,0x41,0xc9,0x05,0x5b +.byte 0xe0,0x3f,0xe1,0xd8,0xd4,0x97,0x8e,0xa0,0x14,0x84,0xce,0x5c,0xef,0xbe,0xa4,0xae,0x18,0x91,0xd9,0x48,0x9b,0xc3,0x7a,0x8f,0xfb,0xb3,0x3e,0xa9,0x87,0x74,0x84,0xd2,0xc6,0x7c,0xc9,0xce,0x01,0xa5,0xcc,0xff,0x5a,0xe8,0x94,0x98,0x54,0x2a,0x6e,0xd9,0x58,0x75,0xd4,0xdd,0x6c,0x7d,0x83,0x32,0xc9,0x4e,0x35,0x2c,0x51,0x26,0x68,0x1f +.byte 0x95,0x20,0x82,0x54,0x0a,0xad,0x5e,0xe2,0xba,0xf9,0xa3,0x54,0x24,0x93,0x4a,0x62,0xff,0x28,0x05,0xd2,0x22,0x62,0x82,0xd4,0x2d,0xe2,0xec,0x66,0xc5,0xee,0x63,0xd0,0xf6,0x93,0xa8,0x37,0xbf,0xdd,0xe0,0x95,0x0b,0x19,0xa1,0x9d,0x9a,0xf8,0x94,0x1a,0x3a,0x50,0x9e,0x66,0x75,0x8c,0x25,0xbd,0x18,0xb0,0x58,0x76,0x7f,0x2d,0x3d,0x06 +.byte 0x02,0xb3,0xcf,0xa3,0x14,0x6e,0xe7,0xc8,0xcd,0xe6,0xbe,0xae,0x92,0xd6,0xa2,0xfe,0x12,0xf0,0xdf,0x9f,0x9e,0xad,0x77,0x77,0xfb,0xfc,0x36,0xb7,0x82,0x9c,0xf1,0x51,0xc2,0x58,0xa0,0xf3,0xa0,0xd6,0x6e,0x64,0x28,0xac,0x09,0x8f,0x7b,0xef,0x19,0x87,0x76,0xb9,0x4e,0xca,0x1f,0x05,0xb6,0x00,0x4a,0x14,0x83,0xaf,0xff,0xd9,0xa1,0xc6 +.byte 0x0f,0x98,0x3a,0xcf,0x85,0x18,0xea,0xa6,0x9a,0x1e,0xae,0x7c,0xaa,0xae,0xef,0x89,0x5e,0x14,0x5d,0x2f,0x73,0x8f,0xd1,0xf0,0x77,0xcd,0x45,0x92,0x7f,0xee,0xb9,0x7c,0xc2,0x3c,0xff,0x56,0x56,0xa5,0xa5,0x49,0xe4,0x20,0xd6,0xa2,0xb6,0xe4,0xfc,0x86,0x53,0xce,0x9e,0x2b,0x7b,0xcb,0xcf,0x6a,0xd5,0x62,0xb7,0x34,0x0e,0x39,0xe2,0xaa +.byte 0x1c,0x24,0x30,0x71,0x94,0xb3,0x57,0xd8,0xe8,0xd4,0xc5,0x4f,0x33,0x2c,0x73,0x7e,0x48,0xba,0xb3,0x55,0x84,0x6d,0x10,0xcf,0x8f,0xf2,0xb6,0xdb,0x4e,0xcf,0x49,0x08,0xf6,0x5a,0x3c,0x7e,0xef,0x3f,0x5c,0x11,0x09,0xfe,0x26,0xfb,0xff,0x30,0xcb,0x81,0x12,0xea,0x1e,0xa9,0x6e,0xf8,0xea,0x4f,0x92,0x2c,0x23,0x99,0x35,0xa5,0x59,0xca +.byte 0x1d,0x66,0x72,0xad,0x5b,0x7c,0xb3,0x4a,0x7c,0x76,0x4c,0xf6,0xc1,0xec,0x68,0x5f,0x2c,0x17,0xbe,0x92,0xe1,0xa1,0xee,0x40,0x24,0x25,0x6b,0xc5,0x0b,0x6f,0x06,0xc0,0x05,0x8c,0x23,0x24,0x76,0xea,0xe9,0xb9,0xa1,0x3d,0x59,0x15,0xe7,0x65,0x47,0x5a,0x75,0x9b,0xc8,0x7b,0x86,0x97,0xf4,0x4a,0xa3,0xec,0x54,0x0e,0x66,0xef,0xda,0x41 +.byte 0xb8,0x3b,0xa6,0x86,0x63,0xe1,0x4e,0x89,0x92,0x40,0xf4,0x8b,0x32,0x47,0x3b,0x4b,0xb4,0xe6,0xd8,0x4b,0x1c,0xac,0x03,0xab,0xde,0x2e,0x63,0x96,0x3f,0x27,0xa1,0x32,0x11,0x35,0x24,0x6a,0xe9,0x0b,0x73,0x61,0x4e,0xd8,0xdc,0x91,0x98,0x01,0x8a,0x0d,0x61,0xec,0x39,0xbe,0x3b,0xb9,0x78,0x77,0xea,0xaa,0xa2,0x12,0x20,0x92,0x98,0x16 +.byte 0x27,0x3b,0xd1,0xfa,0x59,0xef,0x81,0x38,0x9f,0x42,0xe8,0xb4,0xab,0x4f,0x26,0x9a,0xe7,0x0b,0x05,0x03,0xfa,0xe1,0xe1,0x3d,0x45,0xac,0x7d,0x40,0xcc,0x2f,0xf2,0xb0,0x33,0x42,0x14,0xbd,0x91,0x3e,0xe1,0xb7,0x17,0x25,0xc3,0x92,0xcb,0x9e,0x44,0x1e,0x13,0x93,0x98,0x1f,0x96,0x64,0x3a,0xaa,0x53,0x9a,0x18,0xc0,0x34,0x3c,0x47,0x94 +.byte 0x14,0x70,0x67,0x76,0x2a,0x82,0xd3,0x6a,0x18,0x13,0xe7,0x01,0x8d,0x97,0x52,0x51,0x8e,0x08,0xde,0x44,0xb0,0x74,0x07,0x58,0x35,0xc2,0x29,0xb5,0xd7,0x00,0x46,0x31,0x34,0xd7,0x1f,0xdd,0xaa,0x5c,0x27,0xc7,0x37,0x71,0xe8,0xbe,0xad,0x89,0xf1,0xb2,0xd1,0x46,0x33,0x0c,0x2f,0x26,0x21,0x5e,0xc9,0xda,0x25,0xcd,0xd0,0x17,0x23,0x87 +.byte 0x15,0xc2,0xa0,0x1a,0x9f,0x6e,0xfb,0x63,0xe9,0x69,0xdf,0x79,0x18,0x33,0x2f,0x47,0xca,0x54,0x23,0x7e,0x4f,0x6e,0x38,0x06,0x99,0xfb,0xcd,0x22,0xdb,0x4b,0x3f,0x8a,0x05,0x2e,0x5c,0x56,0x65,0xb7,0xab,0x57,0x8b,0xdd,0x28,0xab,0x7e,0x77,0x32,0x0f,0xc6,0x3c,0xf3,0xde,0x43,0xb0,0x13,0x3b,0xbd,0x28,0x3a,0x8b,0xd5,0x6b,0x1d,0x5d +.byte 0x20,0x1a,0x5f,0xa6,0x01,0xed,0x88,0x7f,0x87,0x55,0x38,0xc2,0x0d,0x03,0x6c,0x41,0x6a,0x43,0xdf,0x09,0xf3,0x58,0x69,0x13,0xa1,0xd6,0x39,0x0c,0x8e,0x8f,0x40,0x67,0xe8,0x0e,0x9b,0x9b,0x42,0x30,0xd7,0xae,0x04,0x75,0x66,0xfb,0x4a,0xa7,0xe0,0xe9,0xea,0x6d,0x28,0x4f,0xc0,0x5c,0xd4,0xd4,0xb7,0x60,0x5a,0x35,0xc1,0xe8,0x5f,0xc3 +.byte 0x4f,0x7a,0x5d,0x8d,0xc2,0x29,0x6e,0x36,0x50,0x5b,0x82,0x63,0xf2,0xda,0x8d,0x02,0x61,0x09,0x69,0x0a,0x47,0x9d,0x58,0xf3,0xf6,0xe0,0xc0,0x09,0xd9,0x3b,0x8d,0xf5,0xba,0xf6,0xc4,0xf0,0x65,0x89,0x7b,0xdd,0x93,0x6b,0x6e,0x21,0xa1,0x2a,0x66,0xe0,0x8f,0x62,0xb0,0x49,0x60,0xa3,0x48,0x42,0x62,0xcc,0x26,0x1f,0x59,0x3a,0x7b,0xa7 +.byte 0x82,0x10,0x5f,0xc6,0xf8,0xa2,0xc0,0x07,0x7b,0x26,0x26,0x11,0xe2,0x5b,0xb8,0x86,0xb7,0x66,0xcf,0x0a,0xcc,0x6f,0xe8,0x02,0x22,0x4c,0x13,0x75,0xdc,0x68,0xf0,0x7c,0x0c,0x46,0x9a,0xa2,0x4c,0xf5,0x50,0x3f,0xf9,0xbc,0x01,0xb1,0xa1,0x28,0x90,0x07,0x6b,0x17,0x69,0x89,0x7b,0xe5,0x0a,0xf7,0x7b,0xe1,0x94,0x30,0xfc,0xd3,0x8d,0xd3 +.byte 0x99,0x37,0x91,0xd5,0xdf,0x59,0x2a,0x4f,0xfe,0x6c,0x37,0x4b,0x78,0x2c,0xa9,0x28,0x6a,0x5c,0xd6,0xe1,0x0b,0xad,0xae,0x62,0x7c,0x09,0xb8,0x90,0x3f,0x29,0x37,0x7b,0x79,0xee,0x55,0x02,0x05,0xef,0x28,0xa2,0xc7,0x07,0x2b,0xe6,0xab,0x87,0x9d,0x8f,0x4c,0x0f,0xc1,0x75,0x5d,0x88,0x7f,0x26,0xe0,0x1e,0xf8,0x3f,0xb5,0x2a,0x6c,0xe6 +.byte 0x7f,0x85,0xae,0x55,0x7b,0x58,0x34,0x4c,0x81,0x05,0x21,0xa1,0x5e,0xd7,0xb6,0x20,0x6e,0xf9,0x60,0x15,0xa4,0xb2,0x8f,0x68,0xd2,0x23,0x9f,0xbf,0xfa,0x6a,0xcb,0x87,0x7d,0x41,0x4a,0xae,0x28,0x4f,0x9e,0xbb,0x69,0x1c,0x37,0xb2,0xc9,0xd2,0x21,0xa1,0x2b,0x6b,0x5d,0xff,0xd6,0xdb,0x8f,0x21,0xd9,0x17,0xd6,0xe6,0x74,0xf2,0x20,0x0e +.byte 0x06,0xb5,0x0c,0xdc,0x74,0x4e,0x93,0xcb,0x27,0xc7,0x4b,0xf3,0xef,0x46,0xa8,0xf0,0x58,0x1c,0xa0,0x65,0x09,0x84,0xc7,0x2e,0xba,0x51,0xd9,0xd4,0x53,0x20,0xc7,0x20,0x85,0x93,0x2b,0xf3,0x42,0x93,0x7b,0x22,0x1c,0x8d,0x22,0x76,0xcf,0xde,0x6a,0xa1,0x76,0xea,0x65,0x20,0x2f,0x2e,0xdb,0x85,0xdd,0x73,0x43,0xf8,0xe0,0xe3,0x3a,0xe5 +.byte 0x02,0x57,0x96,0x54,0xbc,0xaf,0xa4,0xd5,0xda,0x9d,0x9d,0x8b,0x85,0x01,0x7c,0x72,0x03,0xfe,0x39,0x46,0xab,0x04,0xcc,0x62,0x71,0xf5,0xa5,0x67,0xd7,0xfc,0xc0,0xb6,0x95,0x74,0xdf,0x1c,0xfe,0x1c,0x5b,0x25,0xae,0x42,0x75,0x00,0x71,0x3c,0xec,0xfc,0x3c,0x7b,0x0f,0xec,0x44,0xc7,0xec,0x9b,0x86,0xf5,0x3d,0x47,0x15,0xf0,0x25,0xba +.byte 0x43,0xc8,0x68,0x15,0x4f,0xeb,0x35,0x76,0x2d,0x04,0xb7,0x9b,0xb8,0xa7,0x0d,0xb3,0xb4,0xf2,0x93,0x85,0xb1,0xb8,0x81,0x7c,0xd6,0x5f,0xbd,0xc2,0xcc,0xf4,0x0e,0x98,0x2c,0x06,0x54,0x2f,0x5e,0x49,0x94,0x93,0x78,0xa0,0x0a,0x33,0x2e,0x3f,0xb2,0xa7,0x81,0xed,0xe9,0xb6,0xb5,0x86,0x4b,0xa5,0xc0,0x51,0x30,0x9d,0xe2,0x9f,0xc2,0x56 +.byte 0x92,0x6b,0x96,0xca,0xcb,0x65,0x5c,0x0e,0xf4,0x91,0x2b,0x89,0xf4,0x27,0x55,0x26,0xd7,0x7b,0x00,0x19,0x1f,0x67,0x4e,0x43,0x24,0x81,0x05,0xb7,0xc6,0x41,0x1a,0x39,0x3d,0x40,0x3e,0x8a,0x03,0x94,0x63,0x1b,0xb1,0x87,0xb6,0xe1,0x52,0xd0,0xe8,0xbb,0x0e,0x37,0x72,0xe5,0xde,0x86,0xc0,0xdf,0x5b,0xc2,0xc6,0x0a,0x67,0xa7,0x4c,0x03 +.byte 0xb6,0xd8,0x7f,0x1d,0xb3,0xe3,0x84,0xb7,0x5c,0x04,0x15,0xe0,0xd0,0xae,0x44,0xac,0x39,0xa5,0xa2,0x86,0xc8,0xad,0x27,0xa0,0x36,0xa1,0x6e,0xaa,0x87,0x7a,0x43,0xae,0xa0,0x45,0x1a,0xac,0x04,0xe2,0x55,0xf2,0x9a,0x97,0x67,0xfb,0x01,0x8f,0xb8,0x80,0x9c,0x27,0x1d,0xbe,0xa3,0xf1,0x6d,0x66,0xf2,0x1a,0x99,0x99,0xf6,0xa5,0xba,0x58 +.byte 0x28,0x58,0xb5,0x44,0x5b,0x38,0x4a,0x3f,0x37,0x85,0x7e,0x36,0x8e,0x16,0xb9,0x1e,0x0b,0xbf,0x7d,0x0a,0x0c,0x83,0x53,0x0d,0xcc,0x37,0xe1,0x42,0xbb,0x0d,0xfc,0x01,0x25,0x10,0xbe,0xb5,0x83,0x2f,0xa5,0x42,0x98,0xbc,0xd6,0x50,0x75,0xda,0x32,0x2b,0x3f,0xd6,0xc1,0x1a,0xe7,0x0b,0x80,0x07,0x6f,0xfe,0x77,0x9e,0xe9,0x1e,0x45,0x65 +.byte 0x68,0x92,0x34,0x8b,0xce,0xf3,0xcd,0x94,0x17,0xe0,0x41,0x92,0x96,0xb5,0xd1,0x98,0xd1,0x25,0xd1,0x3d,0x76,0x88,0x86,0xb1,0x01,0x80,0xc7,0xde,0x60,0x20,0xb8,0x03,0xe7,0x3f,0x44,0x39,0xb1,0xb8,0x19,0x53,0x5a,0xc6,0xa0,0x18,0x8e,0x0e,0xb6,0xfd,0x7e,0xe7,0x7e,0x8a,0xeb,0x4c,0x35,0x4a,0x0f,0x52,0x81,0x68,0x12,0xe4,0x46,0x2e +.byte 0x20,0xb4,0x41,0x59,0xb3,0x16,0x02,0x9f,0xdb,0xe8,0xea,0xfd,0xe3,0x5d,0x14,0xd0,0x97,0x52,0x66,0xcb,0xb4,0x48,0xa3,0x05,0xab,0x73,0x8e,0x2c,0x46,0xc2,0x94,0xd5,0xc8,0x57,0xc4,0x13,0xa4,0x0b,0x7c,0x34,0xbf,0xb4,0x07,0x28,0x92,0xe2,0x1d,0x00,0xa6,0xf0,0xb0,0xbf,0xdd,0x5d,0x20,0x05,0x9f,0x53,0xcf,0x07,0xf7,0xe8,0x79,0x04 +.byte 0x57,0xd1,0xac,0x9c,0xdd,0xae,0xcd,0x8b,0x04,0x0a,0x2d,0x0a,0x0f,0x21,0x09,0xc8,0x0d,0xfa,0x23,0x26,0xe3,0xdb,0x84,0xc8,0x8e,0x9c,0x96,0x93,0x4f,0xcc,0x2f,0x96,0xed,0x04,0x91,0x0d,0xc7,0xbb,0x27,0xa3,0x6b,0x9d,0xe2,0x15,0x83,0x31,0x78,0xb5,0xb9,0x6d,0xb1,0x6c,0xa2,0x3e,0xf5,0x45,0x77,0xf4,0x96,0x3a,0xe6,0x10,0x08,0xfd +.byte 0x23,0xcc,0xda,0x27,0x73,0x67,0xbb,0x8b,0x59,0xe2,0xcf,0xda,0x57,0xf9,0x17,0xeb,0xeb,0x98,0x39,0x48,0xbf,0x3d,0x5b,0x7b,0xc2,0x11,0x4b,0xd6,0xb6,0x8a,0x14,0xb3,0xf5,0xc3,0x18,0xff,0xde,0x62,0x98,0x4a,0x1d,0x6b,0x4e,0x00,0x4f,0x7d,0x2f,0x67,0xf4,0x22,0x1e,0xdb,0x69,0xd5,0x87,0xfd,0xee,0x97,0x56,0xd4,0x00,0x0c,0x9e,0x22 +.byte 0x11,0xda,0x8e,0x3b,0x91,0xad,0xf1,0xb6,0x0a,0xba,0xe7,0xc6,0x14,0x0e,0xc4,0x85,0x5f,0x7d,0x69,0x7d,0x73,0x9c,0x83,0x6a,0x69,0xef,0x10,0xb0,0xe6,0x33,0x32,0x0f,0xd8,0x54,0xa4,0x9d,0x39,0xaf,0xfc,0x6d,0x4f,0xeb,0x34,0x89,0x2e,0xb0,0xa1,0xcd,0xe1,0x5b,0xab,0xe1,0xff,0x82,0x85,0x6b,0x5e,0xa9,0x9e,0x43,0x02,0x0d,0x38,0x33 +.byte 0xe1,0xbc,0xa4,0x77,0x8a,0x5e,0x54,0xa8,0xcf,0xc9,0x76,0xcb,0x73,0x21,0x1f,0xa7,0x1e,0x5c,0x0a,0xd6,0xa2,0x36,0x6f,0x07,0xa1,0x6b,0x0d,0x5a,0x21,0x3a,0xc3,0xc0,0xcd,0x9d,0xed,0x83,0x96,0x89,0xaa,0x55,0x56,0xfd,0x0a,0x97,0x3a,0x50,0xfd,0x95,0x3f,0xb7,0xfa,0x87,0x7d,0xa6,0x5d,0x12,0x65,0x3f,0x61,0x4f,0x86,0xdd,0x58,0x64 +.byte 0xd7,0xde,0xd6,0xb9,0x68,0x87,0xde,0xba,0x96,0xf5,0x1c,0xec,0x8e,0x81,0xfc,0xca,0x77,0xe2,0x85,0x11,0x93,0xc7,0xf2,0x0f,0x77,0xbb,0x7c,0xed,0x20,0x7a,0xe3,0xc5,0x76,0xff,0x04,0xc7,0xe6,0x7a,0xa1,0xfe,0x58,0x52,0x1b,0xec,0x27,0xbb,0xd4,0x27,0x7c,0xc7,0x4a,0xfb,0x07,0x62,0x99,0x36,0xff,0x6e,0x71,0x2f,0xbd,0x25,0xff,0x8d +.byte 0x97,0x14,0x56,0x23,0x7f,0x13,0x89,0x10,0xd8,0x29,0x1f,0x91,0x56,0x52,0x85,0xa7,0xd3,0x04,0xc9,0xe2,0x09,0xa2,0x0f,0xaa,0x28,0xb1,0x79,0xf9,0x08,0xf4,0x14,0x57,0xc4,0x54,0xd7,0x69,0xb0,0x37,0xf0,0x80,0x90,0xce,0x75,0x81,0xe7,0x75,0x0f,0x7f,0x71,0x58,0x3b,0x78,0x53,0x9b,0x4a,0x5e,0xcc,0x23,0x04,0x9e,0x0c,0xd7,0xd8,0x69 +.byte 0x90,0xdf,0x36,0x99,0x90,0xd3,0xfa,0x35,0xf7,0x13,0x64,0xb0,0xc0,0x70,0x0c,0xd4,0x87,0xc0,0xca,0xd8,0xca,0x8a,0xc3,0x9a,0xfa,0x73,0x34,0x18,0xe9,0x3a,0x85,0x42,0xc5,0xe1,0xaa,0xb5,0x87,0xac,0x43,0x9c,0xfa,0x7e,0x05,0x35,0xed,0x7e,0x0d,0x38,0x82,0x17,0x7f,0x22,0xa2,0x3d,0xd3,0x0d,0xd1,0xff,0x0a,0x68,0x52,0xd2,0x17,0x59 +.byte 0xaa,0x57,0xbd,0xd3,0xea,0x0c,0xe8,0xb0,0x22,0x13,0x59,0x42,0x46,0x34,0x58,0xa9,0x16,0xc5,0x9f,0x88,0x8f,0x75,0x02,0xbf,0x63,0xda,0x28,0xba,0x9a,0xcf,0xbb,0x73,0x58,0xb1,0x13,0xf2,0x68,0xd8,0x6b,0xfd,0x49,0x50,0xcf,0x09,0xea,0x6a,0xff,0x20,0x39,0xc5,0xae,0x70,0x79,0xea,0xec,0x9d,0x09,0xf8,0x51,0x1f,0xfd,0x01,0xd5,0x9f +.byte 0xec,0x29,0x36,0xfc,0x39,0xb4,0x4c,0x1f,0xe6,0xb4,0xcc,0x97,0x21,0xe5,0x19,0xe9,0x7a,0x60,0x6d,0x39,0x3c,0x31,0xd4,0x43,0x76,0xba,0x10,0xd9,0x3f,0x75,0x7a,0xa6,0x1d,0x02,0x88,0x3d,0xa5,0x9f,0x91,0x61,0x4e,0x32,0xec,0xf5,0xd3,0xe4,0x65,0xf7,0x0e,0x3b,0x8a,0x8f,0x22,0x31,0x71,0x8f,0xf1,0x5f,0x7b,0x04,0x88,0xf9,0x88,0x67 +.byte 0x14,0x85,0x74,0x9e,0x54,0x0b,0xed,0x7a,0x48,0xcd,0xcf,0xd2,0x05,0x38,0xd5,0x58,0xa2,0xaf,0x6a,0x28,0x21,0xfd,0x38,0x4e,0x83,0x06,0x15,0x60,0xfb,0x89,0x2a,0x72,0xfe,0x75,0xc7,0xa4,0xae,0xe4,0x5b,0xbb,0xde,0x54,0xde,0x77,0xbb,0x9d,0xd2,0x07,0x05,0x61,0x53,0x65,0x31,0xd4,0x3a,0x8a,0x7d,0x9d,0x30,0x09,0x25,0x28,0x72,0x19 +.byte 0xe4,0xae,0x1d,0xbf,0xa7,0xef,0x75,0xd0,0xe3,0xdc,0x0b,0xd1,0x17,0x9c,0xc6,0xdf,0x65,0x9a,0x7c,0x9d,0x0b,0x9a,0x3d,0x8f,0xb0,0xf5,0x51,0x46,0x6b,0x12,0x0d,0xe6,0xa9,0x3a,0xb5,0xe9,0x52,0x85,0xa5,0x25,0x1f,0xc9,0x8b,0xff,0xe3,0x37,0x25,0x97,0xd8,0x91,0x17,0xed,0xcf,0x2a,0x6d,0x4f,0xef,0x74,0x5e,0x92,0xa2,0x2d,0x84,0xa6 +.byte 0x09,0xc4,0xfc,0x36,0x95,0x54,0x25,0x9e,0xeb,0xd9,0xea,0x5a,0x01,0x0c,0x54,0xdb,0x82,0x01,0xed,0x0b,0xf7,0x9f,0x0d,0x8f,0x2e,0xee,0x7c,0x6e,0xb3,0xe7,0xe8,0x04,0xef,0x8d,0x5e,0xfe,0x3d,0x96,0x3a,0x65,0xd3,0xb2,0x11,0x75,0x1c,0x6f,0x2a,0xd3,0x26,0x1f,0x5f,0x35,0x02,0x0b,0x9f,0x38,0x5b,0xa5,0x3a,0x90,0x3e,0x03,0x9f,0x50 +.byte 0xf2,0xd7,0xe4,0x3c,0xd3,0x28,0x67,0x0a,0x5a,0xe8,0x59,0x6f,0x38,0x8f,0x8b,0x0d,0xe4,0x1c,0xfc,0x6e,0x07,0x69,0x7b,0xfb,0x04,0x30,0xe7,0xa6,0x13,0xfb,0x33,0xa0,0x52,0x6a,0xec,0x64,0xad,0x90,0xbd,0xba,0x15,0x12,0x48,0xed,0xd1,0x94,0x2d,0xe7,0x19,0x28,0x5e,0x7a,0x94,0xf4,0x79,0xd7,0x79,0xc9,0xf6,0x16,0xb4,0x88,0xee,0x15 +.byte 0xa2,0x68,0xe3,0x1d,0xd0,0xd2,0x63,0x78,0x7c,0xb3,0x30,0xac,0x63,0x7a,0x36,0xc5,0x50,0xbf,0x57,0xf6,0xfe,0x4e,0x43,0x4e,0xf9,0xc4,0xa2,0x2a,0xa7,0xa4,0x2c,0x18,0xb9,0x43,0x7b,0xe8,0xf6,0x14,0x4f,0x07,0x6e,0x65,0x9a,0xdd,0x10,0x2a,0x4c,0xa4,0x58,0x86,0x19,0xad,0x6d,0x5e,0x30,0xfb,0x5f,0xb6,0x9f,0x2a,0xac,0x90,0x0d,0xae +.byte 0xf9,0xab,0xc1,0x33,0xd3,0x73,0x1d,0x46,0xe5,0xc8,0x1e,0x1d,0x61,0xf1,0xda,0x53,0x3e,0x61,0xf0,0x9a,0xe4,0xb7,0x04,0xe9,0x5e,0xf6,0x11,0xa6,0x56,0x39,0xed,0xfb,0x06,0xd0,0x92,0xb9,0xb8,0xb5,0x3b,0x39,0xec,0xa5,0xc0,0xb1,0x7e,0x7e,0xfb,0x89,0x86,0xa8,0x70,0x47,0xa5,0x60,0x8c,0xf8,0x47,0x31,0x04,0x54,0x29,0xf3,0xa2,0x79 +.byte 0xac,0x24,0xda,0x33,0x6c,0x1c,0x34,0xc2,0xa0,0x96,0x27,0xbb,0x31,0xbf,0xc1,0xd9,0xc8,0x35,0xbc,0xb3,0x13,0x8a,0xb6,0x25,0x92,0xdc,0xcc,0x3b,0x8a,0x65,0xf3,0xf9,0xd1,0x2a,0xcd,0xb0,0xf4,0xd7,0x44,0xa0,0x27,0xfc,0x0e,0x69,0x46,0x0b,0x56,0x5b,0x58,0x40,0xd9,0xc4,0x37,0x9b,0x4d,0xa1,0x45,0xd8,0xab,0x4d,0x02,0x31,0x4f,0x93 +.byte 0x56,0xd0,0x26,0x99,0x1c,0xc7,0x2b,0xc2,0x80,0xb4,0xbd,0x6e,0xfe,0xa1,0xf7,0x8f,0x13,0x74,0x2c,0xa8,0x63,0xb1,0x3d,0x6d,0x32,0x4a,0x80,0x6a,0x7f,0xcf,0x6c,0x51,0xa9,0x21,0x34,0x4e,0x13,0x19,0x8f,0x33,0xfc,0x06,0x46,0x05,0xf0,0xcf,0xf1,0xce,0x20,0xe0,0x40,0xf2,0x0a,0xd0,0xf6,0xcc,0xcc,0xc2,0xc7,0x07,0x2e,0x9e,0x0a,0x1e +.byte 0x53,0x59,0xbb,0xe3,0x02,0xc8,0x20,0x9f,0x3c,0xe6,0xec,0xf7,0x8a,0x6d,0x3c,0x0f,0xb3,0x14,0x66,0x5c,0x51,0xbe,0x82,0xc2,0x0b,0x10,0x63,0xa9,0xd4,0x7f,0x12,0x88,0x13,0x81,0x8a,0x06,0x8a,0x7f,0xc8,0x89,0xe7,0xbd,0xce,0x51,0xdc,0x93,0x03,0x07,0x6f,0x8c,0xe6,0xcc,0x0d,0x45,0xa8,0xfc,0x02,0xe2,0x3e,0xa7,0xc8,0x83,0x77,0x98 +.byte 0x91,0x4e,0x1f,0x8d,0xed,0xa5,0x38,0x54,0x0e,0x4e,0x53,0x1c,0x0c,0x47,0x11,0x59,0x54,0x15,0xb5,0x47,0xb0,0x21,0xa1,0x3d,0xaa,0xef,0xee,0x9e,0x26,0x3c,0x39,0x75,0xff,0x1a,0x8c,0xbb,0x1a,0x49,0x62,0x21,0x76,0xe8,0x3d,0x10,0x55,0xf5,0x5a,0x44,0xf0,0xb3,0x81,0xd0,0x35,0x96,0x95,0x63,0xf7,0x50,0xb1,0xa0,0xf0,0x29,0x97,0xc9 +.byte 0x27,0x73,0xd8,0x29,0xef,0x74,0xd2,0x6d,0xf4,0xfb,0x72,0xa9,0x4f,0x12,0xd5,0xfd,0xc9,0xba,0xf0,0xbd,0xfd,0x5e,0x5c,0xfa,0x53,0xe3,0x96,0xab,0x57,0xc3,0xb6,0xe8,0x0e,0x43,0xe4,0x77,0x97,0x04,0x69,0xff,0x72,0xd0,0xd8,0xab,0xb9,0x19,0x25,0x89,0xf7,0xbb,0x01,0x03,0xf2,0xc6,0x8d,0xd5,0x86,0xe3,0xfe,0x9c,0xff,0x78,0xd7,0xfc +.byte 0xda,0xd4,0x69,0x8e,0xd6,0x31,0xfb,0x15,0xd3,0x38,0xfd,0x53,0xe2,0x4e,0xce,0xcc,0xfe,0x17,0xc5,0x88,0x92,0x28,0x98,0xb7,0xcf,0x7b,0x53,0x7b,0x96,0x14,0xaf,0xeb,0x5b,0x2d,0x16,0x41,0xcc,0x7b,0x65,0xe1,0x73,0x81,0x4e,0x8f,0xc3,0xad,0xe1,0x3f,0x0c,0xa7,0xbe,0x38,0xed,0x02,0x67,0xf5,0xfa,0x1d,0xb0,0xd5,0x4c,0xe1,0xd8,0x62 +.byte 0xc9,0xb5,0xf8,0x84,0xc4,0x51,0x57,0x14,0x11,0xf8,0x7d,0x1d,0xe7,0x81,0x85,0x61,0xa9,0x9f,0xc8,0x45,0xb9,0x2d,0x8a,0xc9,0xa3,0xfe,0x5a,0xf9,0xe0,0x1c,0x80,0xd8,0x77,0xaa,0x85,0xca,0x93,0x9a,0x2e,0x10,0x03,0x71,0x3d,0xb1,0x2a,0x64,0x2e,0xad,0x64,0xba,0x5c,0xaa,0x8a,0xc2,0x2a,0x80,0x28,0x2e,0xf9,0x93,0xe1,0x71,0x72,0xae +.byte 0xda,0xd8,0x4f,0x4c,0xec,0xb5,0xe3,0x05,0x10,0x5f,0x4c,0xe6,0xe1,0xf4,0x07,0x63,0x75,0x6f,0xc5,0xf9,0xcd,0xfc,0xfc,0x35,0x2f,0xe4,0xca,0x4b,0xfc,0xc3,0x20,0x8b,0x5c,0x4a,0x3c,0xf8,0x92,0xca,0x2b,0xb0,0xce,0xd9,0x4b,0xf0,0x44,0xcb,0x4e,0x83,0xf3,0x9d,0xb0,0xd4,0xab,0xba,0x2a,0x76,0xaa,0x87,0xcd,0xa2,0xd1,0x3f,0xa0,0xb9 +.byte 0xdb,0x7e,0x67,0x2d,0x92,0x4c,0xeb,0x3c,0xa6,0x8c,0x62,0x80,0x18,0x78,0x2b,0x9d,0x8f,0x5e,0xc3,0xa5,0x3b,0x10,0xb3,0x8a,0x3b,0x00,0x96,0xb2,0xab,0xce,0x8d,0xff,0x3c,0xee,0xeb,0x4f,0xfb,0xab,0x96,0x38,0x4c,0x15,0x6e,0x7c,0xf3,0x31,0x5f,0x8f,0x99,0x88,0x52,0x48,0x8b,0x71,0x1b,0x31,0x3f,0x7c,0xe4,0xae,0x9c,0x7b,0xeb,0x64 +.byte 0xe3,0x80,0xd4,0x56,0x9a,0x6a,0xd9,0xca,0xc5,0xf0,0x86,0xe7,0xda,0x80,0x8f,0x17,0x61,0xca,0x24,0x0b,0xb6,0xf9,0x24,0xc5,0x7a,0x28,0x42,0x32,0x7f,0x2b,0xde,0x44,0x30,0xed,0x69,0x63,0x07,0x3f,0xca,0x7b,0x02,0xea,0x6e,0xef,0x27,0x1d,0x76,0x32,0xc2,0x81,0x3d,0x03,0x9a,0xe7,0x0d,0x28,0x07,0x03,0x0c,0x65,0x73,0x58,0x26,0xc6 +.byte 0xfe,0xcc,0x33,0x7f,0x33,0xad,0xea,0x81,0x05,0xcc,0x61,0x1e,0x78,0x69,0x70,0xc9,0x1f,0x6e,0x4f,0xb8,0x19,0x42,0x03,0x03,0x9d,0x56,0x87,0x0e,0x9a,0x32,0x3a,0xba,0xb9,0x11,0x66,0x9f,0x4d,0xd1,0xb0,0x11,0xbf,0x46,0xfc,0xcf,0xe5,0xef,0xf1,0x61,0xeb,0xad,0x31,0x7c,0x0d,0x66,0x0d,0xa9,0x1f,0xe4,0xf9,0x80,0x9e,0xae,0x9e,0x34 +.byte 0x1e,0x95,0x6c,0xa2,0x77,0x69,0x84,0x77,0xb7,0xe8,0xca,0x1f,0xea,0xc1,0x34,0xe6,0x0d,0x4f,0xba,0x77,0x2b,0x8c,0xbe,0xff,0xc4,0x06,0xa3,0xb6,0x1a,0xbe,0x55,0x99,0x57,0x6f,0x54,0x24,0x93,0x7a,0x0d,0x52,0xd6,0xbb,0xd2,0x9c,0xd5,0x76,0x6a,0x22,0x66,0xdc,0x43,0x9a,0x7b,0x1b,0x11,0x80,0x02,0x0c,0x8f,0xc6,0xc6,0x02,0x42,0x29 +.byte 0x00,0xc4,0xb2,0xa1,0x6a,0x7f,0xa9,0x60,0x8d,0x41,0x4f,0xd3,0xde,0x33,0x5a,0x44,0x31,0xb0,0xdc,0xc0,0x0c,0x31,0x03,0x96,0x71,0x0a,0xce,0xe3,0x0b,0xc7,0xe3,0x5d,0xe0,0x88,0x4b,0xfd,0x4c,0x1a,0xce,0xaa,0x89,0xc6,0x99,0xa8,0xd3,0x1e,0xe9,0x6c,0x2a,0xbd,0x26,0x81,0x03,0x6a,0xf2,0xf2,0x0f,0x1e,0x9d,0x8a,0x59,0x45,0xbf,0x6d +.byte 0xb7,0xc8,0xec,0x77,0xb0,0x70,0x1a,0x31,0x21,0xeb,0x25,0x12,0xff,0x13,0x33,0x6b,0x47,0x34,0xd8,0x66,0x11,0x8a,0xc9,0x93,0x5b,0x2c,0x55,0x42,0xb2,0x9b,0x60,0xc6,0xba,0xab,0x12,0x12,0x5d,0x0a,0xd4,0x54,0x79,0x17,0x6d,0x31,0x7d,0x4f,0xf2,0x94,0x16,0x65,0x62,0x38,0x76,0x3a,0x7d,0x55,0x05,0xd9,0x17,0x45,0x62,0xb4,0x1d,0x31 +.byte 0x34,0x40,0xd3,0x8e,0xf9,0x29,0x4d,0x3f,0x93,0x9a,0x2e,0xa4,0x75,0x66,0xf6,0x62,0x8f,0xf9,0x8d,0x79,0x4b,0x51,0x7e,0xfb,0xeb,0x9a,0x86,0x96,0x01,0x79,0xbe,0xe4,0x42,0xb3,0xc8,0x28,0x9e,0xed,0xa8,0xb6,0x6d,0xd3,0x31,0xed,0x30,0x9e,0x6a,0x5b,0x02,0x4b,0xbd,0xb3,0xf2,0xf0,0x9d,0x50,0x09,0x40,0x71,0xfe,0x4b,0x91,0xc9,0xd6 +.byte 0x07,0x87,0x9e,0xdb,0xa9,0xcd,0x0b,0x95,0x18,0x5a,0x55,0x10,0xaa,0xe1,0x70,0xe9,0x2e,0xc2,0x31,0x6b,0x48,0x84,0x2f,0xe5,0x7b,0xdd,0x4c,0x03,0xed,0xb6,0xb6,0x64,0x24,0x38,0x7a,0x5a,0x15,0x35,0x9d,0x66,0x08,0x4d,0xa6,0x3c,0x96,0x1a,0xcd,0x02,0x61,0x40,0xde,0xac,0xc3,0x15,0x8c,0xca,0xe6,0x62,0xe9,0x61,0x68,0xf6,0x60,0xd3 +.byte 0x7e,0x5f,0x44,0xcf,0x09,0x01,0x60,0xc2,0xb1,0xfc,0x2f,0x41,0x4c,0xc1,0x06,0x72,0xcc,0xde,0x25,0xe0,0x8c,0x34,0xb8,0xe0,0xb2,0xeb,0x05,0x5d,0x9e,0x7e,0xf7,0x1e,0x24,0xcd,0x1b,0x14,0x3f,0x1b,0x13,0xc0,0x64,0x38,0x43,0x95,0xba,0x7b,0x61,0xa0,0xdc,0xe0,0xf5,0x80,0x13,0xa1,0xc5,0x48,0x92,0xc5,0xd5,0xd0,0x87,0x0c,0x73,0xae +.byte 0xe2,0xb3,0xe8,0x70,0x4a,0x7e,0xa0,0x13,0xc3,0xc6,0x9c,0x77,0x51,0xca,0x88,0xcf,0xe0,0x1e,0xff,0x6c,0xe2,0xc3,0x33,0xce,0x7f,0x3e,0x7d,0xd5,0x37,0x23,0x09,0xb7,0xbd,0xb7,0xec,0x9a,0x29,0xd6,0x4f,0xea,0x79,0x24,0x4c,0x09,0x74,0x9c,0x97,0x3b,0x08,0x1f,0x82,0xcc,0xae,0xc4,0x3f,0xcf,0xc6,0xcb,0xaf,0x8c,0x89,0x15,0x79,0xeb +.byte 0x88,0xb9,0x03,0xab,0xc6,0xf8,0x6e,0x54,0xde,0x50,0x6e,0xcf,0x8a,0x4b,0x3f,0x64,0xd0,0xcb,0x69,0xc2,0xe3,0x40,0x4a,0x94,0xe2,0x04,0xfa,0x9b,0x4a,0xf6,0x2b,0x93,0x0c,0x0e,0xf8,0x68,0xbc,0x6e,0x6c,0xe6,0xd9,0xb6,0x04,0x40,0xf4,0x60,0xbc,0xc1,0x1e,0x67,0x1f,0xce,0x5c,0x4d,0xba,0x78,0xa8,0xf5,0x96,0x00,0xb9,0x61,0x82,0x65 +.byte 0xb2,0x1d,0x42,0xb8,0x88,0x66,0x43,0xd9,0xfe,0xe0,0x86,0xef,0x5d,0x4d,0xcc,0xeb,0x57,0x9a,0x2b,0x27,0xf2,0xcf,0x68,0xc3,0x05,0x92,0x4d,0x4d,0xb7,0x46,0x7e,0xfd,0xb7,0x4a,0x4d,0x6f,0xac,0xc8,0x8d,0xf2,0xcd,0x52,0xcf,0x91,0x77,0x2d,0x68,0x06,0x7a,0xc9,0xf3,0x17,0xc6,0x8f,0x8f,0xb5,0x8f,0x74,0xfa,0x90,0xcc,0xfc,0xaf,0x4e +.byte 0xd2,0x29,0xd9,0x57,0x71,0xe9,0x52,0xd8,0x50,0xfa,0x4d,0x13,0x7c,0x42,0x15,0x22,0x65,0x26,0x08,0xda,0xaa,0x53,0xcf,0xeb,0xd1,0x87,0xd5,0x7c,0x4e,0x66,0x1c,0x7d,0xc9,0x03,0x59,0xf8,0x09,0x3e,0x1b,0x94,0x4c,0x39,0x56,0xeb,0xfd,0xb6,0xd0,0xf9,0x76,0x8b,0x5d,0x6e,0x44,0x15,0xcf,0x27,0x7f,0x69,0x9a,0x00,0x96,0xbe,0x80,0x5e +.byte 0xbb,0x5a,0x05,0xea,0x15,0xdd,0x44,0x69,0x9e,0x64,0xcd,0xba,0xf2,0x6f,0x67,0x10,0xc5,0xa1,0x75,0x85,0x5f,0xdc,0x61,0x43,0x34,0xc3,0x52,0x06,0xd4,0xe9,0x9f,0xdf,0xd4,0xa6,0x96,0xac,0xb1,0x21,0xdd,0x20,0x46,0x20,0x89,0x5f,0x0e,0x9d,0xa8,0xc7,0x75,0x3a,0x54,0x9e,0x7c,0x3a,0xd5,0xb2,0x68,0x77,0x06,0x1b,0x1c,0xbd,0xb3,0x02 +.byte 0xb5,0xdd,0x87,0x55,0x6b,0x00,0x9f,0x2c,0x30,0xb7,0x4e,0xc3,0x67,0x38,0x37,0x61,0x81,0x68,0xcb,0x14,0x81,0x27,0xd7,0x38,0x18,0x81,0x68,0x45,0xca,0xf4,0xaa,0xae,0x58,0x9e,0xf8,0xbe,0xe9,0x1e,0x05,0x19,0xf0,0xea,0x89,0xf8,0xa1,0x9c,0x7b,0x63,0xc1,0xcd,0x81,0xc8,0x95,0x56,0x81,0x81,0x29,0xb0,0x4d,0xbf,0xe6,0x8d,0xa3,0xb3 +.byte 0xfa,0xae,0x13,0xc8,0xca,0x4d,0x5c,0x5e,0xd9,0x17,0xf8,0x87,0xdb,0x5b,0xe2,0xd9,0xba,0xe3,0xe8,0xdb,0xcb,0x74,0x36,0x7e,0x0e,0x3a,0x94,0x6a,0xe9,0x9e,0x50,0x8e,0xf4,0xd4,0x15,0xb7,0x50,0x60,0x3f,0x14,0x72,0x41,0x9d,0x51,0x63,0x8c,0x31,0x95,0xf2,0xbc,0x14,0xc7,0x64,0x2c,0xee,0x0b,0xe6,0xde,0xf6,0x33,0x85,0x65,0x00,0x54 +.byte 0x54,0x84,0x85,0x94,0x87,0xa0,0xc3,0x95,0x4e,0x74,0xcb,0x2d,0x82,0x9e,0x46,0x7f,0xf5,0x64,0x60,0xfe,0x1a,0x37,0xee,0xa7,0xb6,0x85,0xb5,0x4e,0x30,0x11,0x39,0x4b,0xe9,0x57,0x18,0x3a,0x2c,0x6b,0xb9,0x8e,0x5a,0x54,0xa9,0x31,0xf7,0xe1,0xe0,0xc7,0x52,0xfe,0x76,0x9b,0xc6,0xfe,0xde,0xe0,0xe9,0xf9,0xf6,0x10,0xda,0xef,0x72,0x24 +.byte 0x9c,0xbe,0x4a,0xba,0x58,0x21,0x1b,0xe3,0x1d,0x80,0x10,0x76,0x70,0xde,0x8f,0xf3,0x07,0x93,0x01,0xe0,0xb4,0xd9,0x7d,0x60,0x0d,0x08,0x07,0xa4,0x6d,0x9b,0x2b,0x8c,0x9a,0x58,0x65,0x5e,0x29,0xf1,0x24,0xb2,0x31,0xfb,0xb7,0xad,0xf0,0x50,0x8e,0x25,0x1b,0x75,0xc5,0x82,0x88,0x8c,0x68,0x14,0x2c,0x28,0xa2,0xb6,0x93,0x14,0xe3,0x28 +.byte 0xd0,0x95,0x6f,0x79,0x91,0x03,0x75,0x82,0x5c,0x20,0x46,0x0d,0x53,0x40,0x2c,0x88,0x62,0xa4,0x8c,0xd5,0xf1,0xc1,0xbf,0xde,0x57,0x91,0xb2,0xa6,0x66,0x29,0xf0,0x6b,0xb8,0x5e,0x78,0x5f,0xd1,0x76,0x98,0xf2,0x56,0xc2,0x5f,0x48,0x1f,0xa6,0x98,0xb0,0x87,0x53,0x13,0x1d,0x1a,0xa7,0xdf,0xa5,0xea,0x37,0x12,0x6d,0x64,0x53,0xdc,0x04 +.byte 0x2d,0xb9,0xeb,0x78,0x89,0x7b,0x70,0xd2,0x6d,0x45,0x8d,0x45,0x50,0x57,0xc7,0xb2,0xaf,0xdd,0x72,0x0f,0x9f,0x1b,0x29,0x61,0x68,0xb5,0x4a,0xd4,0xe9,0xd7,0x10,0xe7,0xcd,0xe8,0x22,0xd3,0x54,0x0c,0x0b,0x32,0x77,0x7d,0x3e,0xed,0x6e,0x79,0x4b,0x7b,0x99,0x1f,0x9e,0xbe,0xe7,0x12,0x7c,0x94,0x36,0x1c,0x20,0x8a,0xd0,0xab,0xda,0x95 +.byte 0xf6,0x4f,0xbe,0x6f,0x44,0x0b,0xa3,0x7b,0x4d,0x00,0xf6,0xdf,0x6f,0xc8,0x50,0x9e,0x3e,0x0c,0x1e,0xfe,0xb8,0x39,0x9f,0x83,0x4f,0xb3,0x1f,0x7e,0x53,0x54,0x64,0x04,0xa3,0xf7,0x79,0x01,0x71,0xce,0x18,0x0d,0x47,0x4e,0xae,0x88,0x6a,0xe7,0x26,0x4e,0x59,0xee,0x3a,0x03,0xc2,0x4d,0x0c,0x29,0xf0,0x96,0x9d,0xc0,0xa3,0xb3,0x82,0xf9 +.byte 0xc4,0xf8,0x8b,0xae,0x68,0x47,0x39,0xdc,0x10,0xd7,0x09,0xb4,0x86,0x87,0xfa,0x7e,0x0c,0xe4,0xee,0x3a,0x35,0x1a,0x0e,0x95,0x88,0xce,0xe7,0x9e,0xcc,0xa5,0x58,0x98,0x48,0xbd,0x9c,0x27,0xe6,0xb9,0xf7,0xca,0x66,0xee,0x54,0x87,0xd0,0x6d,0xab,0x31,0x1a,0x57,0x33,0x8b,0x89,0xa0,0xc0,0x18,0x9a,0x87,0x5e,0x58,0x02,0xe5,0x50,0x47 +.byte 0x0f,0x60,0x53,0x9d,0x99,0xe4,0x0a,0xfa,0x4a,0xc3,0x77,0x4b,0x4d,0x4e,0x0c,0xbb,0x68,0xd9,0xb3,0xd3,0x59,0x78,0xdf,0x65,0x97,0x6e,0x22,0x5b,0x24,0x26,0xf9,0x2a,0x14,0x73,0xa7,0xec,0x65,0xfc,0xdf,0x7d,0x35,0x0d,0x44,0x1b,0x4b,0xad,0x6b,0x8f,0x0e,0xa3,0x3b,0x6b,0x40,0xb3,0xe3,0xd9,0x41,0xba,0xbf,0x95,0xbb,0x6e,0x91,0xf6 +.byte 0x63,0xb3,0xde,0xdb,0xc2,0x6f,0xfe,0x00,0xf1,0x53,0x96,0x37,0xa4,0x27,0x48,0x3e,0xf9,0x32,0x23,0x90,0x90,0xe0,0x01,0xde,0x08,0xad,0xc4,0x6c,0x25,0x7a,0x7f,0x2f,0xb7,0xb7,0xc6,0xaf,0xeb,0x91,0x9c,0xa2,0x9c,0xf7,0x7f,0x9f,0x74,0x9b,0x7d,0x54,0x66,0xf9,0xe0,0x73,0xb4,0x15,0x2b,0xaa,0x71,0x50,0xd0,0x74,0x5d,0xcd,0x1c,0x09 +.byte 0x4c,0x80,0xcc,0xdc,0x10,0xd9,0x96,0xb3,0xdc,0x09,0x73,0x1f,0x36,0x4c,0x1b,0x86,0x25,0x13,0x7c,0xd2,0xc6,0x9d,0x5a,0xce,0xd6,0x22,0x97,0x66,0x7b,0x7b,0x84,0xba,0x69,0xd2,0x87,0x9b,0x08,0xda,0x77,0x66,0x90,0xbc,0x7c,0x3c,0x5d,0x43,0x92,0x5f,0x05,0xfb,0x23,0x46,0x88,0xf7,0xa4,0x10,0xbd,0x7d,0x00,0x29,0x2d,0xa5,0x6a,0xab +.byte 0xcc,0xdd,0xcf,0x1e,0x2b,0x9b,0x5f,0xa9,0x94,0x14,0x99,0x6e,0x3b,0x41,0x52,0x61,0x16,0x17,0x44,0xcf,0x5b,0x34,0x5c,0x27,0x29,0x4a,0xc3,0xba,0x9a,0x0c,0x20,0x17,0x2b,0x92,0xd9,0xf1,0x76,0x51,0xd8,0xa5,0x4a,0x4b,0x4a,0x0b,0xe4,0x6b,0x93,0x61,0xc7,0xb3,0x23,0x7a,0x24,0xfa,0x5e,0xee,0x80,0x10,0x65,0x44,0xa5,0xed,0x72,0xd9 +.byte 0x8a,0x06,0x2a,0x86,0xa9,0x26,0x50,0xa1,0xb2,0xb2,0x8b,0x7b,0x4a,0x29,0xf1,0x18,0xef,0xff,0x61,0xf1,0xa1,0x48,0x0f,0x84,0x8c,0xef,0xd8,0x02,0x65,0x44,0x11,0xf2,0xe1,0xba,0x98,0x03,0xbe,0x5a,0x5d,0xb8,0x0a,0x88,0xd8,0x4a,0x49,0x4c,0x70,0xa6,0x98,0x81,0x36,0x56,0x92,0xde,0xcb,0xaf,0x33,0xf5,0x1c,0x0a,0xce,0x7a,0xc0,0xff +.byte 0x24,0x54,0xd3,0x9a,0x0f,0x82,0x76,0xe5,0x0e,0x82,0xb4,0xfe,0xc2,0xac,0xe4,0xba,0xa3,0x4c,0x8a,0x0d,0xa7,0x3e,0x2b,0x71,0x73,0x5f,0xd2,0x35,0xd3,0xae,0xc0,0x3e,0x6f,0x67,0x98,0x51,0xa6,0xdf,0xb2,0xf4,0xd2,0xc1,0x43,0xe2,0x0a,0x7c,0xa0,0xb6,0xff,0xfc,0xc0,0x88,0xe5,0x34,0x20,0x79,0x50,0xc3,0x06,0x5b,0x20,0x9f,0x05,0x33 +.byte 0x22,0x30,0xaf,0xc4,0xc3,0x17,0x09,0xbb,0x30,0x0f,0x42,0xb7,0xc1,0xe0,0x4c,0x71,0xc5,0xf7,0x96,0xb4,0xd4,0x0f,0x44,0x47,0xa3,0x06,0x17,0xbd,0x0f,0x7c,0xc6,0x53,0x07,0x34,0x9a,0x9a,0x2f,0x3f,0x01,0xea,0xdf,0x1c,0x06,0x33,0x15,0x9c,0x5a,0xe3,0x33,0x29,0xce,0x40,0x4b,0xb1,0x99,0xe0,0x80,0x6e,0x0c,0xa1,0x4c,0x34,0x01,0x21 +.byte 0x12,0xbe,0x67,0x26,0xe6,0xdb,0xab,0x8d,0x45,0xdd,0x12,0x60,0x02,0x1a,0xdd,0x85,0xd6,0x33,0x78,0x23,0xe1,0x58,0x2a,0x46,0xf0,0xc2,0x4d,0x71,0x59,0x5b,0x8d,0x65,0xa7,0x97,0xf4,0x71,0x88,0x7d,0x60,0xe0,0x2d,0x2d,0x09,0x2f,0x26,0x15,0xa7,0xbf,0x30,0x0b,0x99,0x08,0xd7,0x85,0xfc,0x0c,0x19,0x31,0xde,0x5e,0x55,0x91,0x13,0x45 +.byte 0x3a,0x6d,0xd0,0x61,0x02,0x81,0xa0,0x42,0x7d,0xd8,0x7d,0x41,0x11,0xd2,0x25,0xb7,0x15,0xa1,0x16,0x3e,0x70,0x77,0x1b,0x80,0xb7,0xf1,0x24,0x8e,0x70,0x8d,0x73,0x6d,0xba,0xf1,0x46,0x32,0x60,0xe4,0xc8,0x4d,0x69,0xc8,0x10,0xf8,0x2d,0x53,0xe1,0x81,0x96,0x20,0x9d,0x59,0x74,0xae,0x93,0x92,0x44,0x5a,0x09,0x79,0x20,0xcb,0xff,0xb2 +.byte 0x08,0x7a,0x81,0xee,0x98,0x83,0x0b,0xa4,0x15,0xb0,0xaa,0x55,0xb0,0xb5,0x60,0x09,0x21,0xeb,0xe2,0x9b,0x57,0x41,0xb9,0xb4,0xd9,0xbe,0x7d,0x60,0x5d,0x25,0xde,0x9f,0x9e,0x5b,0x7c,0xee,0xeb,0x87,0x54,0x6a,0xc3,0xcf,0xec,0x57,0xce,0x97,0x2e,0x47,0x84,0x4c,0x15,0xf4,0xf5,0xe9,0xd4,0x45,0x23,0x20,0xf0,0x0f,0xda,0x97,0xc2,0xb9 +.byte 0xb2,0xe2,0x44,0xea,0xbd,0x95,0x73,0xcc,0x94,0x03,0x0b,0x97,0xeb,0x03,0xc1,0x51,0xc8,0x14,0xa6,0x7d,0x18,0x30,0xa1,0xda,0xa3,0xcd,0x78,0x67,0xb0,0xc1,0x6c,0x88,0xdd,0xd6,0x52,0x4b,0x85,0x1d,0x4a,0xaa,0x44,0xec,0x3b,0xff,0x00,0xd8,0x9e,0x18,0xf8,0xac,0x4f,0x73,0x6d,0xc7,0x4b,0x59,0x15,0x85,0x87,0x02,0xd8,0xf1,0xe6,0xfb +.byte 0x66,0x57,0xcf,0x06,0x84,0x50,0xc5,0x67,0x94,0xc6,0x96,0xb2,0x1a,0x37,0x06,0x3d,0x21,0xf2,0x1e,0xb4,0xe7,0xcb,0x36,0x8b,0xa3,0xe3,0x84,0xa0,0x9a,0x31,0xdb,0x87,0xf9,0xb0,0xef,0x06,0xfe,0xb0,0x8a,0x32,0x53,0xb4,0x41,0x79,0x6b,0xf7,0x7c,0xf7,0x9c,0xc1,0xea,0x61,0xf3,0x75,0xac,0x1f,0x92,0x75,0x44,0x58,0x9a,0x20,0xa4,0x20 +.byte 0xe3,0x19,0x1c,0x0d,0x27,0xe5,0x2e,0xbd,0x14,0xcb,0x40,0x3f,0x1c,0x19,0x7c,0xf9,0x92,0x13,0x1a,0x71,0x87,0xaf,0x77,0x0f,0x50,0x92,0x06,0x75,0x2d,0x75,0xe0,0x2e,0x37,0x54,0xcd,0xac,0xcb,0xca,0x7c,0x0e,0x66,0x53,0x10,0x50,0x70,0x9a,0xa4,0x79,0x76,0x87,0x71,0x4a,0x55,0xd4,0xa3,0x83,0xb3,0x04,0xed,0xa9,0xd6,0x84,0x7d,0x1a +.byte 0x64,0x5d,0xf7,0x4f,0x55,0x97,0x5e,0x26,0x9c,0x03,0x42,0x0a,0x16,0xd3,0xdf,0xc8,0x07,0xb8,0xb3,0xe9,0xac,0xa9,0x99,0x83,0x32,0x5b,0x83,0xde,0x7f,0x2b,0x70,0xca,0x15,0x09,0x33,0x0e,0x28,0xc9,0x89,0xc6,0xa6,0x47,0xd1,0x56,0x04,0x40,0x5d,0xd2,0x17,0x1d,0x32,0x21,0x6d,0xb2,0xc7,0x89,0x14,0x98,0xc6,0x58,0xc4,0xca,0xda,0x0f +.byte 0x32,0xdd,0xe1,0xe1,0x9a,0x25,0x09,0x31,0x16,0xf1,0x48,0x40,0x1c,0xc2,0xf9,0xd0,0xba,0xec,0x07,0x94,0xea,0x17,0xcf,0x6e,0xbc,0xfd,0x70,0xb4,0xbb,0x40,0xae,0xc3,0xae,0xf7,0x56,0xf5,0x13,0x55,0xfb,0x4b,0x81,0x5d,0xab,0xf2,0x3f,0xd7,0xa7,0xe6,0xcf,0x17,0xef,0x1f,0x71,0x1b,0x92,0x67,0xd3,0xd2,0xed,0x89,0x14,0x8f,0x8d,0x83 +.byte 0xef,0x7f,0xca,0x65,0x6d,0x79,0x13,0x5f,0x6e,0xf9,0x5d,0x9a,0x68,0x54,0x71,0x5c,0x9d,0x03,0x7c,0x73,0x7a,0xc2,0x17,0x9b,0x5a,0x7d,0x45,0x24,0x0c,0x41,0x13,0xe4,0xcb,0xdb,0x7b,0xc6,0xfb,0x93,0x48,0xca,0xd3,0x01,0x68,0x3f,0x36,0xc0,0x4b,0x1d,0xfa,0x9f,0x25,0x0e,0xcc,0xd0,0xf7,0xa0,0x7a,0x14,0xac,0xd7,0x6e,0x00,0x9f,0xf1 +.byte 0xc0,0xdc,0xfc,0x3b,0xd9,0xbf,0x68,0xfd,0x65,0x34,0x66,0x18,0xe5,0x02,0x9a,0x2d,0xff,0xaa,0xf7,0x73,0x58,0x21,0xe3,0xff,0x23,0x0f,0x63,0x1f,0xf3,0x8b,0x08,0xc7,0x00,0x46,0xe7,0xef,0x85,0x5f,0x7f,0xd9,0x5f,0xc2,0x36,0xe2,0xb6,0xa3,0x00,0xcb,0xff,0xe0,0x22,0x28,0x8c,0xb1,0xb1,0x17,0x91,0x4a,0x4a,0xc8,0x77,0x5a,0xa9,0xb2 +.byte 0x6e,0xb7,0xf0,0x4f,0x70,0x34,0x7f,0x87,0x2a,0x0c,0xcb,0x16,0x24,0x9b,0x41,0xb2,0x3e,0x0a,0xc1,0x33,0xf3,0xbb,0x48,0x17,0x2f,0xe6,0xfc,0xf4,0x27,0xc0,0xdb,0x58,0x24,0x9b,0x99,0x43,0x25,0xfb,0xd3,0xcf,0x1c,0x5a,0x5f,0xbe,0x28,0x3a,0x84,0x51,0x19,0xc3,0x53,0x6b,0xc8,0x73,0x44,0x6e,0x3d,0x7e,0x01,0x37,0xc2,0x2b,0xf7,0xa8 +.byte 0x1f,0x8e,0xd8,0x02,0x5a,0xae,0x56,0x81,0x2b,0x46,0x1b,0x7d,0xca,0x27,0x1f,0x48,0x99,0x24,0x54,0x59,0x08,0xfd,0xb7,0xdf,0x0a,0x77,0xef,0x4e,0x89,0x21,0x71,0x71,0x3f,0x8c,0xd7,0x52,0x89,0x7a,0x0d,0x68,0x09,0xc8,0x88,0x9c,0x0c,0x60,0xca,0x77,0x96,0xeb,0x05,0xeb,0xeb,0x60,0x5b,0x68,0x51,0x2c,0xcb,0x8f,0xca,0x3b,0x18,0x39 +.byte 0x28,0x8f,0xda,0x17,0x9b,0x53,0x71,0x26,0xa9,0x19,0xfb,0x1e,0x4a,0xd0,0x14,0x93,0x1c,0xee,0xe1,0x21,0xea,0xb3,0x16,0x47,0xaf,0x50,0xe5,0xe5,0xd3,0x21,0x8c,0x67,0x46,0x5d,0x97,0x19,0xda,0x6e,0xd9,0x70,0x7d,0x9f,0xd6,0x25,0xd0,0xfb,0x01,0x62,0x0a,0x9e,0x49,0x3d,0x33,0x0d,0x35,0xe5,0xae,0xfd,0xeb,0xb5,0x9b,0xd8,0xc1,0x2a +.byte 0xee,0x4d,0xf2,0xfc,0x16,0x51,0xab,0x58,0x7a,0x9e,0x5c,0xca,0x0a,0x92,0xbb,0xbb,0xa8,0x5b,0xfb,0xf9,0x33,0x67,0x0e,0x13,0x4c,0x83,0x3a,0x25,0x84,0x23,0xe1,0x41,0xfb,0xf1,0x42,0xc1,0x8d,0x58,0x0c,0x5e,0x75,0x09,0x34,0x58,0x96,0x32,0x54,0xb6,0xd8,0xaa,0x48,0xc1,0xed,0xc0,0x92,0x5a,0xec,0xeb,0xb1,0x75,0x59,0xf6,0x35,0xf5 +.byte 0xfd,0x7d,0x96,0x9b,0x83,0x38,0x31,0x10,0xa4,0xd7,0xfb,0x28,0xf0,0xc9,0xe4,0x33,0x5d,0x66,0x81,0x9c,0x31,0x9a,0xe9,0x9a,0x5e,0x70,0xf7,0x61,0xf9,0x93,0xaf,0x2b,0xbd,0x78,0x9e,0xdc,0x61,0xe0,0xa9,0xd1,0xa0,0x8e,0x3a,0x5f,0xb1,0x71,0xe7,0x9e,0xfd,0x81,0xee,0xf0,0xd6,0x63,0xec,0x4a,0xca,0x30,0xaf,0xb6,0x2d,0xaa,0x2d,0xa1 +.byte 0x5a,0x38,0xb5,0xc6,0x3f,0x5f,0x63,0x48,0xd3,0x18,0xeb,0xe3,0x36,0xca,0x91,0x86,0x4b,0x6f,0x57,0x66,0x47,0x2f,0xce,0xe4,0x44,0x26,0xe4,0xfd,0x8c,0xde,0x74,0xdc,0x17,0x0e,0x7d,0x6a,0xcf,0x89,0x0e,0x7f,0x09,0x65,0xf8,0xeb,0x58,0x00,0x3d,0xc5,0x1b,0x14,0xc5,0xca,0xca,0x28,0xbc,0xb7,0x63,0x6f,0x3b,0xa4,0x62,0x23,0x0e,0xd5 +.byte 0x04,0x76,0x0c,0xe8,0xea,0x64,0x10,0x3a,0x76,0x03,0xd6,0xea,0x69,0x52,0x14,0xa7,0x5e,0x40,0x7e,0x14,0xdb,0x7f,0xbf,0xe8,0xf6,0xf0,0xdd,0x5e,0xac,0x55,0x44,0xfb,0x28,0xf3,0x16,0xcb,0xed,0x8f,0x10,0x01,0x91,0xac,0x2c,0x27,0x46,0x0c,0x51,0xd6,0xf6,0x30,0xa3,0x34,0xd0,0x5e,0x93,0xe8,0x4e,0xc0,0xb4,0x9b,0xc1,0xe8,0x20,0x7d +.byte 0xb7,0x68,0xdd,0xf1,0xc4,0x60,0x20,0x97,0xdd,0x5c,0x7c,0x9b,0xea,0xc0,0x22,0x84,0x2c,0x65,0x78,0xbd,0x18,0xa1,0x62,0x7e,0x06,0x49,0x96,0xde,0xd1,0x89,0x06,0x0d,0x35,0xa0,0xcc,0x22,0xd3,0xf5,0xa6,0x4b,0xb6,0xca,0x43,0x34,0x5a,0x3d,0x39,0x95,0x0b,0x95,0xbe,0xdc,0xe6,0x61,0x72,0xbe,0x2f,0x19,0x1c,0xe8,0x22,0x5e,0x18,0xc9 +.byte 0x59,0x4a,0x08,0xa3,0x85,0x5c,0x06,0x36,0x00,0x2e,0x84,0x3e,0x3e,0x07,0x5b,0xfa,0xda,0xbb,0xbb,0x57,0x20,0x6f,0x1b,0x8d,0xe5,0xc5,0xdb,0x8d,0x23,0x1a,0xfc,0x67,0xa9,0xc8,0xea,0xe1,0x54,0xbb,0x8a,0x8a,0x0b,0xa6,0x02,0x35,0xd6,0xd5,0x4d,0xff,0x09,0x79,0x31,0x9a,0xc2,0xad,0xa7,0x66,0xb5,0x3c,0xbd,0xb7,0xcb,0x17,0x30,0x4b +.byte 0x56,0xf5,0xd2,0x51,0x90,0xbb,0x47,0x00,0xc0,0xf3,0x8b,0xd7,0x10,0x33,0x6d,0xe8,0xe4,0xcf,0xd6,0xbf,0x35,0x75,0x8d,0x40,0x55,0xd7,0x5d,0xb0,0x40,0xf6,0x95,0xfb,0x1a,0x97,0x24,0xb8,0xc1,0x91,0x5f,0x66,0x6c,0xc7,0xdb,0x16,0xba,0xb8,0x07,0xf8,0xf8,0x91,0xb2,0x8c,0x26,0xb9,0xa2,0x59,0xb0,0xde,0x49,0x63,0xcc,0x7c,0x4c,0x48 +.byte 0xb5,0xe4,0xf9,0x81,0x28,0x48,0x9f,0xa0,0xa4,0xf8,0x0d,0xcc,0x7b,0xf3,0xce,0x08,0x85,0x73,0x4a,0x64,0xfc,0xa8,0xc0,0xae,0x7a,0xbf,0xa5,0x3f,0x45,0xaf,0xe7,0x7f,0x41,0x61,0x34,0x08,0x6e,0x09,0x0d,0x9d,0xea,0x90,0xbe,0x62,0x7c,0x38,0x92,0xa7,0x63,0xfa,0x03,0x80,0x10,0xc4,0x53,0x46,0x0b,0x44,0x88,0xea,0x50,0xb6,0x82,0xf8 +.byte 0x0b,0x2d,0x93,0x63,0x82,0x80,0x2b,0x61,0x3e,0x17,0xd1,0xd8,0x6c,0xb1,0xb4,0xbd,0xfd,0xad,0x1c,0x10,0x30,0xc1,0x78,0xd4,0x5f,0x21,0x49,0x54,0x7a,0x08,0x2b,0x25,0x3b,0xc9,0xb7,0x0a,0xf2,0x37,0x83,0xc0,0x43,0x73,0xee,0xd6,0x8b,0x92,0x15,0xde,0xfe,0x14,0xf1,0xfb,0x8b,0x4a,0x85,0x8d,0x78,0xe6,0x36,0x1a,0xbb,0x32,0x6c,0xdd +.byte 0x43,0x76,0xad,0x68,0x90,0x08,0xd2,0xbd,0x24,0x41,0xd4,0x93,0x17,0xa8,0x9f,0xeb,0x33,0x25,0x1f,0x1a,0xfd,0x45,0x20,0xc1,0x47,0xf1,0x25,0x09,0x89,0x14,0x9e,0x4c,0x88,0xa4,0x1c,0xb8,0xba,0x84,0xd5,0x7d,0x73,0xb2,0x9c,0x48,0x9f,0x84,0x31,0xd3,0x2c,0xe1,0x94,0x61,0x3e,0x5f,0x37,0x25,0xc7,0xb7,0x2d,0xc3,0xa9,0xaf,0xcc,0x0e +.byte 0xe6,0xc7,0x9a,0xa7,0x06,0xe3,0x41,0xb8,0xa6,0xa8,0x9a,0xe7,0x76,0xef,0x83,0x5a,0x80,0xa4,0xe3,0x0c,0x04,0xa2,0x0b,0x91,0x33,0x34,0x17,0xa4,0x02,0x2d,0x12,0x84,0x67,0x85,0x6b,0xc0,0x3a,0x0d,0x16,0xf2,0x66,0x04,0x71,0xe9,0xec,0xa6,0xbb,0x58,0x42,0x92,0x70,0xf5,0x0d,0x52,0xcd,0x1e,0x2d,0xd4,0x28,0x0f,0x68,0x35,0xd9,0xa4 +.byte 0x40,0x09,0x30,0xe9,0xbb,0xaf,0x77,0x63,0x4f,0xba,0x56,0x97,0xe8,0x92,0xcc,0xba,0xdb,0xe4,0xe0,0xdf,0x19,0x21,0x71,0x23,0x3d,0xd0,0xb1,0x25,0xd3,0xf8,0x53,0x01,0x30,0x9a,0xea,0x84,0x1b,0x18,0x68,0x4a,0xb9,0x9e,0x60,0xc4,0xfc,0xf7,0x56,0xb7,0x49,0xe1,0x50,0x38,0x7d,0x3d,0x87,0xa2,0xad,0x38,0x5c,0x0c,0x53,0x21,0xa0,0x56 +.byte 0x3a,0x94,0xd7,0xa8,0x23,0x96,0xa9,0x66,0x4e,0x88,0xae,0x4b,0x6e,0xcb,0xc6,0xa6,0xdb,0x1f,0x2e,0xae,0xe7,0x24,0xe2,0x1e,0xf7,0x3a,0x14,0x48,0x5e,0xfa,0x90,0x0a,0x84,0xa6,0x1c,0xaa,0x60,0xc0,0x2c,0x69,0xe8,0x36,0xb3,0xee,0x55,0x2a,0xf7,0x90,0xa1,0x92,0x4f,0x29,0x1e,0x49,0x6e,0x73,0x22,0x1f,0x8b,0x0c,0xb6,0xf4,0x3c,0xbf +.byte 0x82,0x47,0x49,0xc3,0x94,0x0e,0xcf,0x9b,0x86,0x88,0xc2,0xd0,0xd7,0xa7,0x43,0xfb,0x89,0x4b,0xbd,0x5d,0x4c,0x6b,0x7a,0xc7,0x74,0x1b,0xfb,0x48,0x12,0x68,0x61,0x91,0xf9,0xf3,0xb6,0x7f,0x4f,0x72,0x89,0xf0,0x72,0x46,0xf7,0x6f,0x84,0xd1,0x38,0x6d,0xd9,0x1b,0xa5,0xd1,0xe2,0x29,0xe0,0xa6,0xbf,0x1c,0xbd,0xfb,0xdd,0xdc,0xa5,0xae +.byte 0x7a,0x9c,0xd0,0xc3,0xfa,0x6f,0x72,0xa3,0xa2,0x8b,0x87,0x0d,0x9a,0x6a,0xfc,0x53,0x9a,0x08,0x61,0x86,0x67,0x2a,0x90,0x6a,0x09,0x20,0x8e,0xde,0x32,0x35,0x34,0x75,0xc0,0xa8,0xab,0x1b,0xc4,0x7c,0xc8,0xd9,0x90,0xcf,0x32,0x27,0x6c,0x68,0xf9,0x18,0x14,0x05,0x57,0x39,0xc6,0x9e,0x5e,0x38,0x07,0xdb,0x81,0xb4,0xa4,0x54,0x06,0xd6 +.byte 0x79,0x78,0x0e,0xc8,0xb9,0x56,0xda,0x08,0x2e,0x77,0x26,0xcc,0xf7,0xa5,0x2d,0xd8,0x91,0xa6,0xfc,0x25,0x0e,0x91,0xdd,0x3c,0xa8,0x14,0x7a,0x95,0x05,0x5b,0x15,0x7d,0x1d,0x9b,0x3c,0x8c,0xfd,0xdc,0xa5,0xcd,0xec,0xea,0x7a,0x2b,0x7e,0x79,0x21,0x54,0xea,0x7f,0x52,0xb4,0xbb,0x4f,0x07,0x95,0x39,0x4a,0xaf,0x2e,0xb4,0x1e,0x9e,0xc6 +.byte 0x0a,0x07,0x58,0xd4,0xa5,0x44,0x73,0xa8,0x84,0x26,0x67,0xb8,0x0f,0xc7,0x6b,0xa7,0x28,0xf6,0x05,0x91,0x3e,0x22,0xcd,0xd7,0xf5,0xfc,0xae,0x22,0x42,0x96,0x3b,0x57,0x91,0xce,0x44,0xd0,0xfd,0xc3,0x4c,0x8b,0x8b,0x67,0xfe,0x03,0x86,0x92,0x34,0xf7,0xf9,0x53,0xb3,0xdf,0x36,0xcf,0x16,0x1c,0x68,0x36,0x17,0x1f,0x41,0x56,0x1d,0xda +.byte 0x90,0xb3,0xab,0x03,0x97,0x88,0x23,0x65,0x89,0x72,0xe3,0x6d,0x8e,0x37,0x5d,0xee,0x89,0x81,0x11,0x27,0x8b,0xf0,0x9b,0xef,0xa2,0x34,0x45,0xcc,0x41,0xcf,0x2a,0x88,0x70,0xe4,0x78,0xfc,0xe1,0xb5,0x51,0x70,0x84,0x64,0xd1,0x10,0x71,0x5d,0xa4,0xb4,0x6d,0xb5,0x98,0x6e,0xcc,0x9a,0x62,0x14,0x30,0xce,0x1a,0xff,0x49,0xd6,0xaa,0xcc +.byte 0xe1,0x99,0x42,0xb1,0xfe,0x77,0x8a,0x2d,0xdb,0xc0,0x0d,0x50,0x53,0x0d,0x92,0xe5,0x2b,0xd0,0x78,0x83,0x08,0x4a,0x0c,0x1d,0x5b,0x03,0x22,0x65,0x3d,0x9e,0xdb,0xcf,0x01,0x61,0xf7,0x6d,0x2b,0x99,0xef,0xba,0x80,0x50,0xda,0xda,0x2d,0xbf,0x00,0xdf,0x6f,0xec,0x95,0xbc,0x5b,0x4e,0xda,0x83,0xe4,0x5d,0xf0,0xa7,0x1b,0x27,0xf1,0x76 +.byte 0x04,0x5d,0x3d,0x2c,0x12,0x15,0xad,0xef,0x47,0xdc,0x22,0x9b,0xc2,0x80,0x91,0xf3,0xbf,0x16,0xe9,0xd3,0x35,0x94,0x4b,0xfd,0xa3,0xa1,0xee,0x98,0xad,0x99,0xea,0x07,0xe1,0x0f,0xa7,0xbd,0x0b,0xfb,0xc0,0xd5,0xb0,0x49,0x37,0xc6,0x5f,0xe7,0x18,0xc1,0x60,0xe9,0x1d,0x5e,0x0e,0xea,0x73,0xf2,0xa1,0x75,0x7e,0x39,0x51,0x07,0x1e,0xcb +.byte 0x2a,0x5b,0x26,0x75,0xbe,0x02,0x5e,0xde,0x6c,0x37,0xb1,0x3c,0x1f,0x25,0x65,0x7d,0x9e,0x5d,0xa1,0x0b,0x98,0x27,0x53,0xb9,0xbb,0xc2,0x3e,0x8d,0x2d,0x5e,0x5c,0xbf,0xed,0x66,0xe8,0xd1,0x7d,0xaa,0xef,0xca,0x0e,0xd0,0x78,0x2b,0x89,0x07,0x76,0xb6,0xc3,0x92,0x42,0x3a,0x84,0x1d,0x81,0xc1,0xe8,0x1a,0xb8,0xe6,0xf1,0x43,0xcc,0x7a +.byte 0x59,0x4d,0x9f,0x00,0xfe,0x6a,0xe5,0x42,0x71,0x3c,0xcb,0xc8,0x45,0x18,0xf0,0xf2,0x81,0x9d,0x5a,0xb7,0x8d,0xbe,0x31,0xcb,0x7d,0xca,0xb7,0x19,0x57,0xb1,0x61,0x36,0x90,0x42,0xe2,0xc3,0xf5,0xa5,0x4b,0xc3,0xd4,0xe7,0x6c,0xb6,0x0c,0x06,0x19,0x4b,0x54,0x8f,0x2d,0xdc,0xc5,0x2b,0xff,0x1c,0x61,0x29,0xda,0x95,0x4f,0xa1,0x21,0x25 +.byte 0x24,0xbe,0xc7,0x34,0x2f,0xbf,0x33,0x6d,0x82,0x8f,0xf1,0xa9,0x97,0x5a,0x49,0x7f,0x60,0x00,0xf2,0x3e,0x7b,0x64,0xdf,0xc8,0xd3,0x5f,0x6e,0x1f,0xfb,0x71,0x80,0xf3,0x55,0x42,0xbe,0x32,0x7b,0xa9,0xeb,0xf6,0x31,0xe2,0xf0,0xd1,0xe9,0xbe,0x96,0x0e,0xb3,0xdf,0x3e,0xb2,0x2c,0xc3,0xce,0xbd,0xe7,0xfe,0x1c,0xed,0x2c,0x0b,0xaa,0x32 +.byte 0x76,0x82,0xb4,0x6b,0x18,0xa7,0x68,0x19,0xb7,0x27,0x21,0x4c,0xb0,0x22,0x98,0x58,0xd5,0x90,0x80,0xab,0xa1,0xfe,0x83,0xc5,0x66,0xf6,0x3e,0xa2,0xa9,0x6f,0x73,0xce,0x7f,0x0c,0xe6,0xde,0xee,0xb0,0xe6,0x2a,0xcc,0xcc,0xb0,0x53,0x8c,0xce,0xc8,0xdc,0xea,0x83,0xb4,0x0e,0x69,0x8d,0x90,0x86,0xaa,0xe3,0x3b,0xfb,0x88,0xe2,0xe8,0x27 +.byte 0x65,0x36,0x07,0xb3,0x91,0x0e,0x5a,0x6b,0x9f,0x0f,0xbd,0x81,0xb3,0x54,0x65,0x71,0xa4,0x2c,0x8e,0xda,0x47,0x04,0xce,0xfe,0x00,0x52,0xf1,0xdf,0x82,0x27,0x70,0x2a,0xb1,0x79,0x2f,0x27,0x7f,0xae,0x9e,0x5c,0x36,0xec,0xa0,0x2a,0xf3,0x74,0x78,0x01,0x17,0x74,0x2a,0x21,0x4f,0xb8,0xd2,0xe4,0xfe,0x5b,0x06,0x14,0xa5,0xb1,0xb1,0xff +.byte 0xee,0x79,0xf7,0x18,0xb9,0x31,0xa4,0x63,0x47,0x1c,0xdf,0x38,0x04,0x2d,0x18,0xca,0x14,0xf8,0x2f,0xec,0x0d,0x58,0xad,0xbb,0xf4,0x45,0x11,0x0e,0xfa,0x17,0x4c,0x5e,0xd4,0xa6,0xde,0xe4,0x13,0x44,0x2c,0xb9,0xfd,0xcd,0x41,0xe7,0xf9,0xda,0xbc,0x28,0x8f,0x0c,0x41,0x4d,0xa7,0x0d,0xf5,0x96,0xd7,0x8f,0x10,0x96,0xfb,0x75,0x75,0x86 +.byte 0xc9,0x6e,0x23,0x92,0x71,0x69,0x7b,0x94,0x61,0x1c,0x3f,0xcf,0x66,0x34,0x62,0x68,0x5d,0xee,0x7b,0x34,0x5d,0x2a,0x39,0xbb,0x6a,0x34,0xea,0x6e,0xe3,0xe9,0xdb,0xe4,0x34,0x6e,0x29,0x0b,0x21,0x38,0xe7,0x5b,0x79,0x37,0x54,0xf0,0xed,0xaa,0x07,0x2b,0x21,0x29,0x67,0xfe,0x7d,0xa5,0x99,0x0e,0x5d,0x05,0xe7,0x61,0x6e,0xd1,0x4a,0x15 +.byte 0x4a,0x56,0xb1,0x13,0x49,0x8c,0xf4,0x4f,0xd7,0xe9,0x68,0xae,0x09,0x37,0xd3,0x96,0x21,0xe8,0x1f,0x9f,0xa9,0xc6,0x54,0x57,0x63,0x09,0x1e,0x71,0xf2,0x48,0x9e,0x50,0xbb,0xb3,0xf1,0x4e,0x2d,0x1d,0x79,0x69,0x0a,0xa2,0xa9,0xdd,0x1b,0x55,0x62,0x6b,0x0d,0xcc,0x9c,0xb1,0x5e,0xc8,0x4c,0x4f,0x62,0x3c,0xc4,0xa3,0xb4,0xe4,0x34,0xec +.byte 0x9d,0x0c,0x1b,0x46,0x60,0x68,0xd5,0x04,0xd7,0x1b,0x3c,0x7a,0x98,0x0c,0xd9,0x87,0x2b,0x4f,0x97,0x5b,0x56,0x65,0xb0,0x06,0x6e,0x9e,0x06,0x37,0x0e,0xd2,0xa1,0x52,0xf5,0xaa,0x2b,0xec,0xbd,0x0f,0xb6,0xba,0x48,0x63,0x57,0x51,0xe3,0x00,0x53,0xf5,0x77,0xb2,0xa4,0xb1,0x44,0x01,0x3e,0xcf,0xe9,0x2a,0x7a,0xf5,0x19,0x5e,0x43,0x36 +.byte 0xe0,0x38,0x41,0xbc,0xda,0xb5,0xd0,0x69,0xdf,0xd2,0x04,0xd4,0xf8,0x38,0x37,0x1c,0x90,0x30,0xf2,0x3d,0x03,0xe4,0x3f,0x84,0x2c,0x9a,0xa4,0x8a,0x00,0x4e,0x49,0x24,0x62,0x06,0xb4,0x9d,0x33,0x8a,0x8e,0xd2,0xbd,0x1b,0xa1,0x83,0x0b,0xa5,0xa2,0x5c,0xcf,0xb1,0x65,0x85,0x92,0x1f,0xb0,0x2e,0x3b,0xb2,0xf3,0x80,0xff,0x9d,0x41,0x4d +.byte 0xcd,0x25,0x09,0x02,0x85,0xb3,0xa8,0x49,0x12,0x10,0xe7,0x5c,0x94,0x13,0x4b,0x52,0x53,0x35,0x9c,0xbc,0x7a,0xad,0x04,0x19,0x54,0x8a,0xbc,0x42,0x73,0xf1,0x0a,0x22,0x75,0xbf,0x3b,0x12,0xa8,0xa4,0x47,0x5c,0x95,0x48,0x60,0x71,0x5c,0x9a,0x39,0x5c,0xdb,0x44,0xe8,0x74,0x92,0x3e,0x2b,0x3b,0x1b,0xb7,0x21,0x98,0xe1,0x87,0x32,0xaf +.byte 0x4a,0xe3,0xda,0x4a,0x46,0xde,0x15,0x4c,0xdc,0xc6,0x60,0xe6,0xd7,0x92,0x29,0x05,0x21,0x22,0x9b,0xaf,0xc4,0xd7,0x6a,0xea,0x2c,0x82,0x5d,0xc7,0x81,0xe2,0x67,0x85,0xd2,0x16,0x6f,0x83,0xa8,0x82,0x5f,0x8f,0xf5,0x3a,0x50,0xba,0x04,0xcb,0x76,0x4d,0x80,0x16,0x12,0x72,0xa8,0x6c,0xac,0x78,0xf1,0x8c,0x93,0xab,0xe0,0xb5,0xdc,0xd1 +.byte 0xa5,0x40,0x0e,0x50,0x88,0xd2,0x9d,0x56,0xf6,0xa0,0xd4,0x45,0xcf,0xef,0x16,0x1a,0xa4,0xaa,0x91,0x5c,0xa3,0x8f,0x84,0xf8,0x3e,0x30,0x1f,0x5f,0x55,0xf9,0xd3,0x3d,0xb8,0x64,0xbb,0x3c,0x91,0xe4,0x0d,0xa5,0x43,0x14,0x75,0xe7,0xec,0x8c,0x12,0x56,0x34,0xb0,0xa9,0xae,0x93,0x91,0x34,0xfc,0x78,0xa3,0x81,0x51,0x45,0x7d,0x9f,0x7d +.byte 0x5e,0xc7,0x5e,0x51,0x17,0xfa,0x02,0x5d,0xb2,0xf7,0x79,0x4b,0x49,0xd2,0x1b,0x6f,0xfd,0x9e,0xff,0x75,0x74,0xf0,0x26,0x7e,0xd7,0x65,0xb0,0xf3,0x0a,0x0c,0xd2,0xa2,0x26,0x98,0x03,0x26,0xb5,0x67,0xc4,0xc0,0xed,0x80,0xd4,0x20,0xf6,0x7e,0x17,0x54,0xeb,0xde,0xc3,0x86,0x51,0xda,0xf7,0xe5,0xc7,0xfe,0xfc,0x71,0x83,0x80,0xbe,0xde +.byte 0x4b,0xda,0x83,0x76,0x63,0x04,0x03,0xdd,0xe0,0xe0,0x4e,0xb6,0x32,0xd5,0xd0,0xce,0xd7,0xaa,0xcd,0x5f,0x64,0xa6,0xd8,0x9e,0xc5,0x97,0x30,0xad,0xf1,0x82,0x8f,0x7c,0x18,0xec,0x30,0x1d,0x2d,0xb6,0xdb,0x33,0x65,0xed,0xe2,0x24,0xd8,0xba,0x0a,0x1f,0x79,0x2a,0x1c,0xe1,0x4e,0x04,0xa6,0x74,0x74,0x37,0x42,0x94,0xc4,0x99,0x0e,0xf8 +.byte 0x3f,0xf3,0xff,0xeb,0x7f,0x95,0x9c,0x47,0x56,0x68,0x6a,0x0d,0x6e,0x66,0x71,0x3b,0x51,0xd5,0x12,0x7e,0x59,0x39,0x43,0xb5,0x53,0xd3,0x1d,0xa2,0xe9,0xa1,0xc8,0x8d,0xf2,0x8e,0xa1,0x9c,0x36,0xdd,0xda,0xd3,0x61,0xd8,0xe9,0x76,0x5e,0xcb,0x0a,0x52,0xc8,0x5a,0x25,0x00,0x21,0xea,0x6a,0x96,0xde,0x02,0x76,0x02,0x63,0x73,0x28,0x63 +.byte 0x46,0x37,0xe1,0x75,0x2f,0x42,0x8f,0xee,0x2c,0x84,0x82,0x43,0x43,0x2d,0xa9,0x13,0x50,0x46,0x54,0xed,0x76,0xbd,0x10,0x1c,0x9b,0xa1,0x42,0x97,0x68,0xca,0x84,0x2e,0x1d,0x6f,0x86,0x67,0xaf,0xb7,0x20,0xc1,0x7c,0xab,0x70,0x20,0xa1,0x79,0x71,0xe4,0xb7,0x45,0x8a,0x04,0xd3,0x70,0x10,0xa8,0x28,0xc3,0x56,0xff,0x43,0x36,0x13,0x88 +.byte 0xb6,0x2d,0xfd,0x7f,0xbc,0xc9,0x1d,0x11,0x9a,0x7c,0xd0,0xfc,0x11,0xac,0x54,0xd5,0xc3,0x03,0xd1,0xe3,0x9e,0xff,0x03,0xdb,0xd9,0xd8,0x77,0x96,0x08,0xf4,0x1b,0xd9,0xfa,0x70,0xed,0xab,0x53,0x78,0xca,0x28,0xa7,0x29,0x49,0x45,0x37,0x10,0x8f,0x61,0x7d,0x11,0x99,0x2e,0xe8,0x5d,0x45,0x3a,0xe7,0xd2,0x6c,0xb6,0x03,0xc4,0x6d,0xaa +.byte 0x52,0x60,0x8c,0xc6,0x9c,0x17,0xba,0xf6,0x3b,0xd4,0x4b,0x26,0x63,0x92,0x8c,0xb9,0x6a,0xf2,0x26,0x91,0x9d,0x8d,0x99,0x39,0x26,0x7d,0xb5,0x4f,0x4c,0xc6,0x0e,0x2e,0xe1,0xc6,0xcb,0x98,0x93,0x71,0x9b,0xaa,0x01,0x40,0x70,0x93,0x2a,0xe8,0x27,0xc5,0x20,0xa7,0xd2,0x06,0x8b,0xb0,0x29,0xcd,0x4f,0x2c,0x5a,0xde,0x35,0xc7,0x2a,0x8e +.byte 0xa7,0xae,0x02,0xfa,0x8e,0x4d,0xf3,0x77,0x67,0xe0,0xcb,0x84,0x69,0xc6,0x05,0xe4,0x84,0xe3,0x6e,0x02,0x6c,0x3b,0x93,0x30,0x3e,0x89,0x2c,0xc7,0xa5,0x7e,0xaa,0x58,0x59,0x25,0xf6,0xff,0x56,0x9a,0x4a,0x70,0xbf,0x88,0x20,0x8d,0x51,0x5e,0x08,0x13,0x26,0x2c,0x5d,0x88,0x13,0x3e,0x32,0x7a,0xf6,0x17,0x5c,0xdb,0xc4,0xcd,0x5a,0x16 +.byte 0x65,0xe4,0x34,0xeb,0x21,0x6d,0xb9,0x30,0x5d,0xc0,0xa2,0xea,0x4f,0x63,0x0e,0xbe,0x32,0x91,0x89,0x6f,0x96,0x40,0xf3,0x5f,0xa3,0xf2,0x15,0xc3,0x3c,0x3c,0xb8,0x2f,0x0d,0xc2,0xcd,0x4e,0xa0,0xa5,0xf6,0x78,0x40,0x0b,0x90,0x11,0x52,0xff,0x8f,0x7f,0x6a,0x0c,0xd6,0x3b,0x64,0x80,0x47,0xfa,0x70,0xbe,0x01,0xdc,0xdf,0x5b,0x75,0x7c +.byte 0xca,0x66,0xf0,0x2a,0x53,0x89,0x55,0x87,0xf8,0xec,0xd1,0x18,0x22,0x0c,0xd5,0x0e,0xc8,0x1c,0xbc,0x1e,0x66,0x14,0x44,0x10,0x3c,0xd4,0x2e,0xca,0x0b,0xd8,0x3f,0x81,0xd8,0x9f,0x81,0xf6,0x62,0x23,0xe4,0xc7,0x0d,0xb0,0x1b,0x00,0xd8,0xf4,0x1a,0xdd,0x9b,0xa1,0x74,0xeb,0xf0,0x65,0x5c,0x82,0x00,0x17,0xa6,0x68,0x29,0xd5,0xa4,0x64 +.byte 0xd3,0x15,0x90,0xd0,0x91,0x17,0xfc,0xd2,0xd7,0xad,0x4b,0xd8,0x41,0x03,0x51,0xfd,0x61,0xac,0x34,0xd4,0xff,0xaa,0xb1,0x64,0x6c,0x79,0x78,0xf7,0x6b,0x18,0x03,0x2b,0x6b,0x9a,0xd7,0xce,0x55,0x6e,0xdd,0xab,0x2e,0xbc,0x27,0x3a,0x8c,0xa5,0x8d,0xf0,0x55,0x81,0x0c,0x6e,0x8d,0xd8,0xd2,0x24,0x5e,0x2e,0x56,0xa8,0x1e,0x9c,0x98,0x88 +.byte 0xd3,0xbe,0x90,0x56,0x70,0xe5,0xcc,0x49,0x2a,0x13,0x98,0x99,0xbd,0xc9,0x9f,0x53,0x85,0x07,0xbe,0x54,0xa7,0x4c,0xd6,0x96,0x7d,0x8f,0x24,0x79,0x67,0xb2,0x62,0x4c,0x6a,0xc1,0x6c,0xb7,0xdc,0xe9,0x21,0xe3,0x27,0xc7,0x53,0xff,0xe7,0xd1,0xea,0x60,0xa8,0x56,0x08,0x5c,0x29,0x0a,0x04,0x0c,0xda,0x7a,0x70,0x8c,0x3d,0x55,0x3f,0xcf +.byte 0x9e,0xea,0x74,0x8b,0xbc,0xf0,0xf1,0x3a,0x86,0x22,0xe5,0x54,0xa7,0x70,0xc2,0xcd,0xb8,0x9f,0x4e,0x9f,0x48,0xa8,0xc0,0x82,0x0d,0x73,0x8b,0x3c,0xfc,0x20,0xf4,0xbe,0x79,0xde,0x8e,0x3c,0x26,0x85,0xde,0x74,0xd1,0xe3,0xd5,0x8f,0x39,0x71,0x46,0x8c,0xbd,0x68,0x28,0x2d,0x36,0x0d,0x66,0xc1,0x0b,0x96,0x3e,0x11,0x2e,0x44,0x17,0xd5 +.byte 0xfe,0x0d,0x70,0x84,0x96,0x20,0x34,0x2f,0xbe,0xf0,0xf5,0x9b,0xb4,0x5a,0xa9,0x50,0x6a,0xda,0xdb,0x69,0xea,0xef,0xa9,0xaa,0x06,0xc0,0x68,0xa4,0x61,0x1b,0x4b,0xf8,0x0b,0x56,0x91,0xc8,0x6f,0x39,0x15,0xe2,0xcc,0xbf,0x2b,0x36,0x96,0x0c,0x84,0xfb,0x3d,0x4b,0x09,0xe3,0xc2,0x4b,0x05,0x5e,0xfa,0x30,0x75,0xc5,0x54,0xa5,0xbd,0x45 +.byte 0x1e,0x14,0x72,0xd6,0xfd,0xe0,0x8f,0x7b,0x46,0x9b,0x11,0x07,0x27,0x03,0xe1,0x2d,0xcc,0x0a,0x01,0x49,0x61,0xc4,0x61,0x78,0x06,0x5f,0xaa,0x01,0x5b,0x68,0xd7,0x29,0xb4,0x9e,0xd3,0xaf,0xc7,0x45,0xf0,0x23,0xaf,0x28,0xcd,0x96,0x23,0x61,0xb2,0xb4,0x21,0x96,0x5d,0x91,0x3e,0x71,0xb5,0x41,0xf1,0x29,0xf4,0x5b,0x45,0x77,0x16,0x00 +.byte 0x9d,0x39,0x2a,0x1c,0x38,0x6d,0x36,0x97,0x98,0x4c,0x84,0xfc,0xf5,0xf1,0x59,0x7a,0x8c,0x21,0xfb,0xbc,0x9b,0x0c,0x8d,0x60,0xb6,0xc4,0xe3,0x4b,0x33,0x4f,0x04,0x4c,0x27,0xd2,0xa0,0xe1,0x71,0x0b,0x6d,0x40,0x8d,0xba,0xb3,0x11,0x9b,0x07,0x97,0x82,0x01,0x47,0xaa,0x2a,0xd4,0xcc,0x02,0xd3,0x86,0x86,0xb5,0xd7,0x5d,0xbc,0xd0,0x0f +.byte 0x97,0x5c,0xe5,0xac,0xc6,0x53,0xb3,0x39,0x09,0x68,0x2e,0xcc,0xf3,0x43,0xba,0xed,0x15,0x90,0xbe,0x9d,0xeb,0xa4,0xfb,0x4a,0x20,0xcf,0x10,0xb9,0x47,0x99,0xb0,0x89,0x26,0xb9,0xbd,0x4b,0xf6,0xa5,0xbd,0x2f,0xad,0x1a,0x75,0xe8,0xff,0xc6,0x6b,0x6a,0x31,0xbe,0xec,0xd2,0xc4,0x39,0x9e,0x3b,0x05,0x3f,0x24,0xba,0xf1,0x4d,0x0c,0x0c +.byte 0x05,0x60,0x60,0x22,0x0c,0x1b,0x0b,0x6c,0x80,0xd5,0xe8,0x8f,0x81,0xee,0x80,0x41,0x4a,0x69,0x47,0xc6,0x4c,0xeb,0xf6,0x2b,0x91,0x7c,0x9f,0x22,0x74,0x7b,0x43,0x95,0x56,0x55,0xba,0x85,0x23,0xb3,0xc3,0xee,0x6a,0xcc,0x49,0x2c,0x6c,0x86,0x6d,0x60,0x5d,0x84,0x0c,0x3c,0x88,0x61,0x58,0x1d,0xfc,0x00,0x2c,0x84,0x49,0x4d,0x95,0x75 +.byte 0xc0,0x03,0x02,0x59,0xc0,0xe9,0x84,0xea,0xce,0x3f,0x8b,0x76,0xbf,0x19,0xaa,0x13,0x1b,0x8d,0x9f,0xb2,0xeb,0xb3,0x02,0x87,0xee,0xfe,0x73,0xdb,0xc4,0x19,0x27,0xaf,0x15,0x8d,0xf4,0x58,0x97,0x43,0xb9,0x45,0x32,0x5f,0x24,0x2d,0x08,0xfe,0xec,0xf2,0xf1,0x34,0x99,0x7a,0x66,0x44,0x3d,0xd4,0xf7,0x82,0xcf,0xca,0x6f,0x53,0x9f,0x0a +.byte 0x74,0x79,0x9b,0x45,0x5b,0x07,0x92,0x35,0xc6,0xf4,0xd1,0x90,0x2b,0x62,0xec,0x93,0x7b,0x05,0x90,0x75,0xb7,0xb6,0xd9,0x6c,0x30,0xdd,0x9b,0x2a,0x32,0xb1,0xba,0xab,0x1a,0x6c,0x2b,0xd8,0xfb,0x39,0x8e,0x80,0x98,0x6c,0xd0,0xb3,0xf3,0x76,0xe2,0xe6,0x5e,0xee,0xd0,0x29,0xd7,0x57,0x8f,0xc3,0x13,0xcb,0x45,0x90,0x3e,0xa2,0x54,0x88 +.byte 0xd5,0x50,0xd3,0x75,0xed,0x2d,0xa6,0x50,0x11,0x6b,0xb0,0xb6,0xf0,0x1d,0xc9,0x3d,0x1d,0x2a,0xda,0x5e,0x43,0x44,0xf4,0xef,0x3e,0xc7,0xa9,0xe0,0x6d,0x3c,0x38,0xbf,0x84,0x72,0xaf,0xea,0x60,0x15,0x03,0x14,0x77,0xb7,0xb3,0x15,0x4c,0xbc,0xbf,0x55,0x86,0x24,0x73,0x97,0x22,0x9d,0x59,0xa0,0x39,0x76,0x38,0xd1,0x1f,0x25,0xb0,0x64 +.byte 0xf3,0x10,0x67,0xf2,0x7c,0x11,0xf2,0xce,0xbe,0xaf,0x5e,0x2e,0xc5,0xc1,0x01,0xfa,0x80,0xf9,0x87,0xfc,0x5c,0xfd,0x66,0x50,0x01,0xc2,0x00,0x92,0x84,0x0f,0xdc,0xfc,0x10,0xa5,0x6e,0x45,0xf5,0xff,0x58,0x78,0x45,0x5e,0x50,0xbe,0xe3,0xc7,0x25,0x1e,0xdf,0x7f,0x68,0x6f,0xa5,0xb8,0xf8,0x69,0x89,0x5a,0x55,0x65,0xf4,0x96,0xe5,0x7a +.byte 0xa6,0x89,0x69,0x8d,0xdd,0x4f,0x24,0x5a,0x29,0x92,0x1e,0xca,0x74,0x65,0x7f,0xb8,0x32,0x75,0xb5,0x7b,0x15,0xea,0xeb,0xcc,0xf1,0x23,0x69,0xc7,0x58,0x1c,0x3a,0xaa,0x27,0x0a,0x11,0x79,0xcf,0xc9,0xb6,0xbd,0x9d,0x56,0x47,0x36,0x6b,0x7f,0x82,0xb5,0xa7,0x9f,0x79,0x72,0x16,0xba,0x50,0xef,0x37,0x68,0xdf,0xe0,0xd8,0x0c,0x16,0xcc +.byte 0x50,0x6c,0x25,0x63,0xc2,0xd6,0x7b,0xef,0xd9,0xa1,0xef,0x62,0x81,0x97,0x51,0x49,0x69,0xe3,0x13,0x6c,0x1a,0xd0,0x64,0x1b,0x3e,0x48,0x25,0x5b,0x34,0xe9,0xee,0x41,0x34,0xfb,0x8e,0x9d,0x3c,0xbc,0xc8,0xcf,0xe7,0xf8,0x72,0x21,0x0f,0x95,0xde,0x57,0xd7,0x2f,0x80,0x97,0xbd,0x8f,0x2c,0xde,0x19,0xa3,0xba,0x5c,0x92,0xa3,0x75,0x83 +.byte 0xe3,0xc9,0x33,0x3f,0x8f,0x09,0xfa,0x0b,0x60,0x0a,0x2f,0xb3,0x45,0x9d,0x8e,0x9d,0xa3,0x66,0x2d,0xda,0x37,0xe0,0x21,0x52,0x74,0x9d,0x59,0xa4,0x9e,0xea,0x15,0x22,0xb0,0xbf,0x3c,0xd4,0x59,0xef,0x27,0x60,0xf7,0xbf,0x5d,0x1d,0x36,0x9a,0xa5,0xfb,0x53,0x90,0x40,0x83,0x3a,0x20,0x3d,0x6b,0x47,0xbc,0xc3,0xe6,0x07,0xfe,0xd0,0x8e +.byte 0x40,0x42,0x65,0x2b,0x27,0xba,0x69,0x61,0x03,0x36,0x58,0x35,0x7e,0x82,0x53,0xb5,0xe2,0x25,0x31,0xc3,0x77,0xc1,0x91,0x13,0xa4,0x92,0x52,0xea,0x9f,0x43,0x44,0x6b,0x43,0xe9,0x11,0xd4,0x3d,0x53,0xba,0x6b,0x96,0xb5,0x96,0x29,0xa3,0x2a,0x0a,0xf2,0xb5,0x0c,0x5d,0x62,0x37,0xe0,0xd6,0xa2,0xbf,0xcd,0xf9,0x58,0x7f,0xa2,0xfd,0x54 +.byte 0x6a,0xa1,0x90,0xa5,0x61,0x9e,0xa6,0xc2,0xb9,0x80,0x7a,0xb8,0xaf,0x60,0x68,0xa7,0x27,0x77,0x41,0x03,0x4e,0xc1,0x96,0x46,0x23,0x1b,0xff,0xa1,0x37,0x28,0x33,0x27,0xc2,0x99,0xf7,0xcb,0x7f,0x1a,0xfb,0x41,0xc3,0x59,0x11,0xf8,0x39,0x50,0xbd,0x90,0x61,0x4a,0x67,0x4a,0x07,0x5f,0xb1,0x07,0x66,0x0b,0x52,0xad,0x90,0xc2,0xd7,0x4e +.byte 0x42,0x9e,0xcc,0x5c,0xeb,0xf2,0xdc,0xaa,0x52,0xcf,0x0e,0x7d,0xae,0x3e,0x1a,0x2c,0x9e,0x79,0xfb,0x29,0x10,0x29,0x61,0xa4,0x93,0x9d,0xa9,0xe9,0x71,0xc5,0xf7,0x07,0x13,0xe9,0xbd,0x2e,0x2d,0x0c,0xd6,0xaf,0x54,0x48,0x58,0xc2,0x91,0x37,0xf4,0x61,0x3a,0x96,0x81,0xdc,0x82,0x02,0xff,0xc9,0xf7,0xf7,0x9f,0x9f,0x28,0xd1,0xb1,0xe3 +.byte 0x2b,0x3d,0x85,0xef,0x15,0x82,0x3b,0x9a,0x17,0xee,0x7f,0xd3,0xa5,0x7c,0x41,0x27,0xc9,0x4c,0xe9,0x7a,0x30,0x9f,0xc5,0x34,0xaf,0xc8,0x1c,0x8a,0x7c,0xa6,0xf4,0xdc,0xa6,0xdb,0x68,0xc1,0xa1,0x13,0xb0,0x54,0x49,0x25,0x43,0xc0,0xd4,0x93,0xd6,0x70,0x53,0x3e,0x5f,0xd5,0x42,0x6e,0x78,0xb8,0x15,0x07,0x6a,0x91,0xe8,0xf1,0x2f,0xcf +.byte 0x07,0x84,0x25,0xb3,0x20,0xb9,0x35,0x25,0xbb,0x26,0x96,0x02,0x25,0xd5,0x83,0x23,0x71,0x6d,0x62,0xa7,0x99,0x73,0x63,0x2a,0x51,0x25,0x34,0x3d,0x51,0x95,0xc7,0x9b,0x01,0x0a,0xab,0x11,0xb2,0x32,0xcd,0xe3,0xef,0x63,0xa4,0x6d,0xdb,0x7b,0xf6,0x5f,0xc5,0xf3,0xe5,0x8c,0x6b,0x0a,0x04,0x33,0x53,0x0d,0xf6,0x13,0x8c,0xb8,0xc7,0xba +.byte 0xc2,0xf0,0xd4,0xa7,0x1a,0xce,0x7c,0x54,0x72,0x2b,0x89,0xf4,0x05,0x5c,0x30,0x42,0xe5,0x58,0x65,0x3a,0x2e,0xf9,0x40,0xab,0x2b,0xf9,0xc3,0x99,0x40,0x3c,0xb1,0x7b,0x2c,0xdc,0xfe,0x41,0x21,0x71,0x00,0x75,0xbd,0xea,0xf3,0x84,0x88,0x6b,0x9c,0xe2,0x80,0x2f,0xad,0x9f,0x9d,0x0a,0xdf,0xb5,0x38,0x61,0x89,0xfb,0x67,0x45,0x9c,0x39 +.byte 0xf9,0x84,0x54,0xc4,0xd6,0x6f,0x00,0x39,0x90,0x82,0xfa,0xce,0xae,0xe8,0xaf,0xa4,0x97,0x3a,0xfe,0x71,0xaf,0x5e,0x00,0xd1,0x9e,0x33,0x41,0x63,0xca,0xa5,0x5a,0x8b,0x09,0x2a,0x26,0xef,0x96,0xb7,0x5d,0xc4,0x92,0xfa,0x51,0xdb,0x1d,0x63,0x5f,0x7c,0x94,0x53,0x84,0xed,0xa3,0x99,0x07,0x9f,0xdc,0x55,0xb3,0x31,0x67,0x1a,0x63,0x05 +.byte 0xec,0x36,0x79,0x57,0xf8,0x39,0xc3,0xdd,0xd5,0x6a,0x21,0xfc,0x54,0xe6,0x28,0xc4,0xf1,0xd2,0xce,0x02,0x43,0x50,0x30,0x15,0x4d,0x3c,0xd0,0x1c,0xf6,0x7e,0xd0,0xa4,0x86,0xe7,0xf5,0xc2,0x06,0xc5,0xc4,0xa8,0xe2,0xd3,0xc7,0xcf,0xbd,0xab,0x9f,0xe3,0x42,0xc4,0xcd,0x65,0xfa,0xd3,0xcd,0xdf,0x55,0xc4,0xce,0x6e,0xe8,0xfc,0x96,0x0f +.byte 0xe2,0x92,0xca,0xde,0x37,0x7c,0xc9,0x80,0x4a,0x54,0xe9,0xfd,0x3c,0x4b,0x81,0xb8,0xd9,0x1a,0xf1,0x91,0x5d,0x9d,0xef,0x3e,0xd1,0x78,0xe2,0x1e,0x0e,0x09,0x62,0xdd,0xc6,0xb9,0xde,0x29,0xba,0xb0,0x62,0x49,0x53,0xb6,0x8d,0x9f,0xbf,0x4d,0x77,0xa4,0xd1,0x0b,0xf0,0x31,0x2e,0xe5,0x71,0x2e,0x18,0xa4,0xa7,0xcb,0xa6,0x30,0x24,0x11 +.byte 0x8d,0x16,0x21,0x71,0x6a,0x19,0xde,0x3c,0x5a,0x00,0xa6,0xe2,0x43,0x98,0xe8,0x83,0x10,0x76,0xef,0xca,0x67,0x61,0x80,0x98,0x48,0x06,0xa9,0xcd,0x13,0xa6,0x1e,0x5b,0x2b,0xef,0xb7,0x3a,0x24,0xf7,0x10,0x8d,0xc2,0xaa,0x9c,0x78,0x0d,0xd1,0x54,0xb1,0x4e,0x5a,0x21,0xc2,0xb4,0x11,0x15,0xdb,0xb3,0x9c,0xe4,0xf1,0xfc,0xa5,0x66,0x0c +.byte 0x56,0x34,0x05,0x14,0x88,0x2c,0xfc,0x3f,0x97,0x30,0xd5,0xd0,0xba,0xa3,0xf1,0x47,0xc0,0xf1,0x59,0x3c,0xda,0x1a,0xc1,0x90,0xae,0x4b,0x26,0xd3,0x5f,0xc9,0x8f,0x62,0x56,0x9c,0x64,0xec,0xda,0x63,0x37,0xa1,0xa2,0x87,0x74,0xcb,0xcc,0x27,0xcb,0x2a,0x97,0x57,0xa3,0xb9,0xac,0xe2,0xbd,0x97,0x93,0x21,0xb9,0x8b,0x82,0xa1,0xe7,0x76 +.byte 0xc1,0x49,0xd6,0xb2,0x52,0x7b,0xd6,0xbb,0x31,0x0f,0x87,0xc0,0xaa,0x91,0x70,0x19,0x76,0xa5,0xea,0xf0,0x87,0x47,0x50,0xc1,0xff,0xf7,0xa6,0x6c,0x65,0xff,0xdf,0x83,0x5c,0x54,0xf0,0xb1,0x18,0xe0,0x13,0x58,0x74,0xc0,0x67,0x0e,0xb8,0xdc,0x59,0x6c,0x19,0xf4,0xee,0x3a,0x07,0x63,0x68,0x1d,0x62,0x60,0xb5,0x71,0xce,0x21,0x61,0x8c +.byte 0xa5,0x74,0x9b,0x77,0x8e,0x15,0x20,0x18,0x19,0x96,0xf6,0xfa,0xd2,0x6c,0x03,0xcb,0xcb,0x8c,0x91,0x0d,0x29,0x91,0x70,0xc5,0x96,0x60,0x18,0xad,0x65,0x66,0x43,0xf9,0x13,0x97,0xe3,0xe3,0xcb,0xbf,0x68,0x0b,0xb2,0x87,0x9c,0xfa,0x96,0x48,0x14,0xef,0x6e,0xbd,0x45,0xb9,0x2f,0xbb,0x80,0x80,0xc5,0xf6,0x22,0x41,0x9a,0xec,0xdd,0x41 +.byte 0xfc,0xf3,0x0d,0x8e,0x2e,0x3c,0xda,0xef,0x2c,0xbd,0xbc,0x0e,0x88,0xd2,0x97,0x3d,0x40,0x37,0xa6,0xde,0x1d,0x00,0xeb,0x39,0xea,0x44,0xee,0x8a,0x2f,0x77,0xea,0xea,0x1d,0x90,0xd1,0xec,0xe4,0x31,0x0c,0xde,0x6f,0x55,0x17,0x5c,0x1e,0x19,0x91,0xac,0x36,0x00,0x26,0x17,0xa6,0xcd,0x8b,0xe2,0x72,0x6f,0x8f,0x3c,0xc6,0x76,0x6e,0x3d +.byte 0x4e,0x93,0xb3,0x8b,0xad,0x24,0x17,0x39,0xc0,0xfe,0xba,0x90,0xc5,0xbd,0x4b,0xe4,0xae,0xac,0xf6,0x55,0x72,0x3e,0xf0,0x12,0x32,0x5a,0xdd,0x8a,0x3f,0x67,0xb6,0xdf,0xf6,0x11,0x02,0xf5,0x84,0xcc,0x7d,0x36,0xe7,0x1b,0xf0,0x9a,0x52,0xbe,0xf3,0x06,0xd6,0xdb,0x02,0xd4,0x80,0x0b,0xcd,0xf0,0xfe,0xec,0x86,0x3f,0x89,0x34,0xcb,0x88 +.byte 0x34,0x28,0x57,0x00,0x33,0xeb,0x4f,0xfa,0xdb,0xd8,0x09,0xd9,0x56,0x53,0xc1,0x02,0xc0,0xa8,0x4c,0xdc,0xfd,0x26,0xb3,0x55,0x1d,0x47,0x0d,0x68,0x50,0xb8,0xa3,0xb4,0xf1,0x31,0xfa,0x16,0x33,0x94,0x40,0x95,0x53,0x9c,0x9f,0x5b,0x25,0x47,0xb1,0x27,0xbc,0x38,0x7d,0x23,0x01,0x7f,0x70,0x7a,0x61,0x0e,0x46,0x5c,0xcc,0xd7,0xcc,0x15 +.byte 0x15,0x0a,0xed,0x4c,0x99,0x66,0x3a,0xc3,0xc1,0x9a,0x7a,0x38,0x6a,0x0c,0xde,0x13,0x67,0x65,0xfc,0x06,0x99,0x7c,0xa5,0x90,0x8a,0x90,0x58,0xce,0xf3,0x23,0x76,0xfc,0x03,0xfb,0xb3,0x36,0x54,0xa9,0x33,0x35,0xfe,0xe3,0x3d,0x53,0x7e,0xe0,0xae,0xcf,0xc0,0xa2,0xe1,0x28,0xb9,0x97,0x96,0x87,0x90,0xa1,0x13,0xd0,0x1d,0x5b,0x43,0xf1 +.byte 0xa5,0xfa,0x81,0x83,0xe7,0x7b,0xa1,0x5f,0x9f,0xf5,0xd3,0xb6,0x80,0x8b,0x91,0xed,0x31,0x14,0x05,0x78,0x85,0x9d,0xea,0x59,0x69,0xa5,0x29,0xc5,0xf1,0xd7,0x9d,0xa3,0x8b,0x9d,0xe0,0x8d,0xc3,0x4e,0x2d,0xfa,0x1c,0x6c,0xd2,0xd7,0xcb,0xda,0x86,0x5d,0xb3,0x1a,0xb4,0x12,0xe3,0xa8,0xd7,0xe1,0x84,0xce,0x0e,0x06,0xd0,0x9e,0xf0,0xb1 +.byte 0x5b,0x2f,0x77,0x10,0x6f,0x41,0x2f,0x5b,0x48,0x43,0xf3,0xef,0xdb,0x09,0xdb,0x01,0x89,0xfc,0x7a,0x4a,0xc0,0x96,0x33,0xdf,0xbe,0x49,0x85,0xa7,0x88,0x93,0x05,0xf2,0x15,0x12,0x85,0x04,0x20,0x7d,0x8c,0xe2,0x0a,0xea,0xfe,0xed,0xbf,0x98,0xdb,0x9d,0x1f,0xaf,0x0f,0xbf,0xf7,0x12,0x4f,0x69,0x4e,0x87,0x09,0xf0,0xae,0x2a,0x4d,0x4c +.byte 0xbf,0xaa,0x08,0x2c,0x78,0x2d,0xbe,0xb9,0xf5,0x3c,0x4c,0xcd,0x75,0x93,0xc3,0x3c,0xc2,0x86,0x47,0xca,0xc1,0x9c,0x1c,0xe5,0x0d,0x8d,0x36,0x9c,0x44,0x40,0x89,0xfa,0x17,0x57,0x08,0xd4,0x22,0x9a,0x5b,0x94,0xbf,0x39,0xcd,0xbe,0xf7,0xd1,0xcd,0x35,0x74,0xdf,0xfa,0x5d,0x00,0xaa,0xaa,0x82,0x6d,0x9b,0xf8,0x69,0x51,0x9c,0xaa,0xaa +.byte 0xc8,0x2c,0xa2,0x68,0x57,0x3c,0x5f,0x10,0xa2,0x7b,0xee,0xc9,0x97,0x8d,0x5c,0x41,0x08,0x0d,0x30,0xd5,0x2b,0x5f,0x8d,0xdd,0xdc,0x2c,0xa8,0x52,0x6e,0xea,0x61,0x77,0xca,0x75,0xc3,0x56,0x6e,0x17,0x51,0x0e,0x00,0xb6,0x18,0xa0,0xe5,0x9d,0x49,0x4e,0x20,0x78,0x1e,0x5f,0x3e,0xec,0xc3,0x4a,0x41,0xf3,0xfe,0x89,0x64,0xac,0x4c,0x4d +.byte 0xa8,0x73,0x4f,0x31,0xc4,0xe2,0x62,0x69,0x2b,0x40,0xdf,0xef,0xed,0xf0,0x62,0x4e,0xc3,0x65,0xcc,0xcb,0xef,0xc1,0x28,0x61,0x71,0xac,0xa5,0x89,0x52,0x7b,0x32,0x59,0xc2,0x16,0x1a,0x63,0x18,0xb0,0xd8,0xe4,0x28,0x92,0xff,0x45,0xc1,0x24,0x56,0x86,0x66,0x23,0x7a,0xff,0xf7,0x33,0x30,0xdc,0xd1,0x7d,0xaf,0x68,0x10,0x4b,0xde,0x3e +.byte 0x4a,0x70,0xbe,0x31,0x1a,0x37,0x28,0xee,0xe0,0xba,0x65,0x8b,0x7d,0xea,0x07,0xce,0xf2,0x51,0x3d,0xcb,0xb2,0x33,0xd8,0xf3,0xa4,0xa0,0xcd,0x53,0x76,0xf9,0x46,0x5b,0x82,0xf9,0x9d,0x0e,0x29,0x5b,0xcf,0x76,0xd4,0x5c,0x47,0xf1,0x98,0x02,0x5a,0x16,0x18,0xf2,0x61,0x6d,0x3e,0x64,0x7f,0xbe,0x13,0x18,0xc2,0x45,0xd2,0x87,0x17,0xff +.byte 0xf1,0x01,0x0b,0x5d,0x21,0x0d,0x73,0x9a,0xeb,0x82,0xc4,0x9a,0xb3,0xe4,0x31,0x44,0x58,0xa2,0xfd,0x76,0xf6,0xbe,0x6f,0x75,0xcc,0xbb,0xe3,0xa2,0xa9,0x78,0x0f,0x4b,0x1d,0x47,0x2d,0x32,0x2c,0x45,0x5e,0xcd,0x8f,0x13,0xe2,0x9a,0x9d,0xa2,0xce,0x73,0x54,0x20,0xc0,0x44,0x1c,0x26,0xde,0x0d,0x72,0xb2,0xfa,0x4d,0x32,0x35,0xac,0x69 +.byte 0x4d,0x16,0x4a,0xd5,0x51,0x33,0xc1,0xe0,0x90,0x9c,0x93,0x66,0xed,0x16,0xac,0x7e,0x79,0x2b,0x0f,0xb4,0x42,0xaf,0x80,0x22,0x80,0x07,0x7d,0x72,0xe4,0xb3,0x3a,0x2c,0xb8,0x68,0x14,0x4d,0x31,0x5f,0xbb,0xac,0x43,0x3b,0x28,0xd6,0x81,0x81,0x26,0xe5,0xc4,0x67,0x7c,0x4a,0x42,0xc4,0x1a,0x59,0x04,0x2d,0xb8,0x26,0xfc,0x4e,0xc7,0xfc +.byte 0x11,0x61,0xe3,0x4b,0x2c,0x3f,0xdb,0x43,0xe4,0x24,0xb4,0xd1,0xc0,0xc0,0x01,0xe1,0xeb,0x84,0x0b,0x6d,0x93,0x83,0x07,0x9f,0x01,0xb8,0x9d,0xe5,0x7e,0x4d,0xa2,0x05,0x3e,0xf2,0x40,0x59,0x88,0xc8,0x8c,0x62,0x44,0x95,0x20,0x96,0x28,0xa9,0x3f,0x7c,0xed,0x85,0x03,0x65,0x49,0xf7,0x94,0x3d,0x51,0xe2,0x8e,0x21,0x19,0x7b,0x55,0x5f +.byte 0x55,0x70,0xf8,0xf0,0xce,0xd9,0x1a,0x10,0xbb,0xfe,0x65,0x72,0x8a,0x5b,0x6c,0x27,0xd3,0x57,0x61,0x07,0x7b,0x85,0xd6,0x21,0xd2,0x07,0x81,0xaa,0x17,0x73,0xb5,0xef,0x2d,0x84,0x7b,0x8f,0xe0,0xb3,0x9e,0x9f,0x31,0x82,0x33,0x07,0x14,0x84,0x79,0x18,0xc4,0xec,0x20,0xb5,0xec,0x21,0x4b,0x51,0x78,0x96,0xc6,0xe7,0xf0,0x6a,0x7a,0xb5 +.byte 0xe5,0xc2,0xef,0x24,0x4c,0x57,0xb6,0xf5,0xee,0xe5,0x69,0x2b,0x73,0x9e,0x66,0x91,0x9d,0xd4,0x24,0x58,0x4b,0x72,0x68,0xf6,0x62,0xb4,0x0c,0xe3,0xbd,0x1f,0x0b,0x42,0x6c,0xf9,0x6e,0x6a,0x64,0x64,0x69,0xa5,0x6d,0xe7,0x38,0x9f,0xb2,0x65,0x35,0x6b,0xd9,0x20,0x84,0xe4,0x5f,0x8b,0xfd,0x58,0xab,0x5f,0xe1,0x4c,0xf7,0xd7,0xf5,0xe7 +.byte 0xae,0xe8,0xc1,0x68,0xfe,0x0c,0xb1,0xe2,0xe4,0xca,0xf0,0xf1,0x20,0xbc,0xf9,0x99,0xef,0x4e,0x63,0xca,0x89,0xe4,0x7c,0x17,0x49,0x40,0x47,0xce,0x67,0x8e,0xbd,0xd0,0x96,0x8b,0x5a,0x0d,0x2f,0xd0,0x8f,0x4f,0x42,0x06,0x01,0x8e,0x47,0x35,0x13,0x9e,0xd1,0x24,0x85,0xe4,0x17,0x59,0xe8,0x1c,0xb3,0x25,0x53,0xf9,0xb4,0x96,0xb1,0x33 +.byte 0x97,0xb2,0x60,0xc7,0xb3,0x48,0xa2,0xfc,0x7f,0x86,0x94,0x2a,0xd3,0x94,0xfe,0x6d,0xa6,0x7a,0xa1,0xe1,0x96,0x5b,0xe8,0xe4,0x91,0xfb,0xf3,0x2c,0x84,0xb4,0x2f,0xbe,0xc9,0xdd,0x1c,0x9f,0x72,0x12,0xcb,0xbd,0x22,0x07,0xc4,0xec,0x05,0xe8,0x32,0x47,0x21,0x27,0xf6,0xc1,0x36,0x59,0x25,0x6c,0xbe,0xb9,0x3e,0xd4,0x1b,0x59,0x11,0x27 +.byte 0x6b,0xa3,0x64,0x71,0x98,0xeb,0x21,0x65,0xc0,0x4c,0x30,0xbd,0x51,0x2b,0xc3,0xfb,0xb1,0x33,0x56,0x1e,0xf0,0x92,0x0f,0x4b,0x63,0x3a,0x9c,0xfb,0xd1,0xac,0x8c,0xf0,0x3e,0xb7,0x0b,0xd2,0x52,0x62,0xd8,0x37,0x9a,0xef,0x79,0xdc,0xcb,0x87,0x1e,0x3d,0x9d,0x91,0x12,0xba,0x78,0x8a,0x11,0x57,0x96,0x44,0x8e,0x2b,0xd2,0xe3,0x4d,0x27 +.byte 0xec,0xba,0xef,0x1c,0x04,0x8d,0x56,0x56,0x11,0x74,0xc0,0xcc,0x1f,0x3d,0x7a,0xad,0x79,0x49,0x59,0xa3,0x71,0xe0,0xf5,0x89,0x89,0x8f,0xcf,0x1e,0x63,0x77,0x91,0x91,0xf1,0x0c,0x1c,0xcc,0x77,0x00,0xd7,0x28,0x9f,0x68,0xbc,0xb6,0x9d,0x33,0x43,0xb2,0x4a,0x72,0x3e,0x57,0x26,0xd0,0x00,0x93,0xc9,0x4c,0xc9,0x53,0x52,0xd9,0xe2,0x31 +.byte 0xc5,0x7f,0xf6,0xb6,0xc2,0x10,0x51,0x67,0xae,0x63,0x35,0x74,0xcc,0xd4,0x05,0xb3,0x08,0x23,0x35,0x37,0x8e,0xf1,0xbb,0x1d,0x56,0xff,0x62,0xa2,0x13,0x7b,0x01,0x75,0x6d,0xb3,0x92,0x51,0xdc,0x6e,0x08,0x76,0x25,0x52,0xbf,0x9a,0xea,0x89,0x0f,0x96,0xcc,0x79,0xd4,0x72,0xcf,0x65,0x79,0x4e,0x40,0xa3,0xae,0x67,0x0c,0x82,0x85,0x05 +.byte 0xfd,0x43,0x84,0x17,0x24,0x79,0xa9,0xa7,0x7f,0x24,0x76,0x57,0x66,0x11,0xd5,0x33,0x30,0x42,0x5b,0x5f,0x7c,0x04,0x4b,0x45,0xc3,0x69,0x20,0x02,0x92,0xe3,0x6a,0x06,0x8f,0xdf,0x30,0xf6,0x17,0x8f,0xc6,0x8c,0x5e,0x42,0xf3,0x59,0x7a,0x3a,0x55,0x3a,0xc1,0x96,0xd5,0x67,0x3d,0xab,0x32,0xee,0xf0,0x08,0x28,0x73,0xb0,0x11,0x1a,0x92 +.byte 0x4d,0xcc,0x0c,0x86,0xb2,0xa1,0xbf,0x9f,0xcd,0xc7,0x1c,0xbc,0xee,0x39,0x77,0x75,0xfc,0xe6,0x3b,0x62,0xf2,0xaf,0xd5,0xb6,0x77,0x2d,0x86,0x38,0x13,0x00,0xdb,0x71,0x4a,0x87,0x03,0x6d,0x99,0x28,0xf8,0x6a,0x23,0x2e,0xe2,0xb8,0x9c,0x18,0x02,0x00,0x9e,0x5b,0xf0,0x6f,0x9b,0x32,0xdc,0x6b,0x61,0xeb,0xeb,0xe9,0xfc,0xee,0x44,0xbc +.byte 0x4a,0x88,0x04,0xc0,0x10,0xc8,0x65,0x6c,0xa4,0xae,0x9a,0x36,0xb6,0x68,0xd5,0xbf,0x6d,0xe3,0x6f,0x5d,0xad,0xd6,0xf9,0xc8,0x06,0x36,0x25,0x64,0xc9,0x5b,0x71,0x7f,0xbf,0xe3,0x56,0x31,0x2a,0x93,0x47,0x46,0x39,0x91,0x80,0xc5,0xdd,0xdd,0xa1,0x25,0x85,0xd9,0x05,0x49,0x4f,0x1b,0xeb,0x2f,0x6e,0xd9,0xe4,0x65,0x3d,0xcd,0xbd,0x47 +.byte 0x37,0x27,0xb0,0xd1,0x9b,0xa4,0x89,0xd5,0xa0,0x0f,0x8b,0xc5,0xfd,0x91,0xa8,0x86,0x22,0x65,0xf1,0xe1,0x1e,0xb6,0xf7,0x50,0xe6,0x1e,0xf0,0x2b,0x9d,0x02,0xc9,0xe8,0x2a,0xb8,0x9b,0x89,0x28,0x25,0x43,0xcf,0x23,0x08,0xe2,0xa7,0x70,0x31,0x89,0xab,0x5b,0xd9,0x2e,0xa9,0xe4,0xe9,0x1d,0x63,0x7f,0xc6,0xc1,0xfb,0x63,0x45,0x9c,0xf1 +.byte 0xd4,0xc3,0x56,0xb6,0xad,0xb3,0x00,0xce,0x12,0x9e,0x63,0x33,0x25,0xd3,0xb2,0xee,0xa7,0x6b,0xa1,0xfd,0x20,0xa3,0xb2,0x07,0x1a,0x9d,0xed,0xe0,0x1d,0x70,0x5b,0x9f,0xc0,0xbc,0x83,0x09,0x94,0x47,0x8c,0x05,0xef,0x73,0x96,0x31,0xc7,0x35,0xc2,0x2c,0x00,0x2a,0x68,0xd1,0xc4,0xb3,0x3d,0x84,0x44,0x8c,0x93,0xfd,0x64,0x00,0x77,0x46 +.byte 0x18,0xac,0x83,0x9d,0xe5,0xe5,0x46,0x61,0x37,0x72,0x9f,0x0e,0x76,0x55,0xf7,0xca,0x36,0x57,0x24,0x16,0xfc,0x11,0x27,0xaa,0x44,0xa4,0xb0,0x58,0x41,0x46,0x94,0xc7,0x3b,0x9c,0xa3,0xe4,0x89,0xd9,0xdb,0x7b,0x64,0x69,0x84,0x9f,0xc8,0x09,0x6f,0xf7,0xf0,0x58,0x10,0x56,0x9f,0x26,0xf0,0x74,0x0c,0x76,0xcb,0x9d,0x45,0x3d,0xe7,0x94 +.byte 0x54,0xa3,0x84,0x08,0xb5,0x9c,0xff,0xdb,0xba,0x62,0x5e,0x87,0x0d,0x11,0x5d,0x96,0x06,0xd6,0xec,0xf4,0x3e,0x9d,0x66,0xbd,0xc4,0x64,0xed,0x03,0xe0,0xad,0x3f,0x4e,0xb4,0xef,0x16,0xdd,0xee,0xd6,0x00,0x27,0x62,0x74,0x0a,0xe0,0x68,0x72,0x4c,0x6d,0x62,0x15,0x87,0x6a,0xf0,0x25,0x9f,0x33,0x1d,0x92,0x3b,0xa3,0xa4,0xf1,0x81,0xdf +.byte 0xa8,0xed,0xaf,0xa5,0x8d,0x19,0x20,0x72,0x03,0x91,0xf0,0x34,0x60,0x70,0xbe,0xaa,0xdf,0xaa,0x24,0x1a,0x1f,0x1a,0x8d,0xb0,0x7b,0xef,0x10,0x43,0x69,0x24,0x74,0xf2,0x72,0x71,0xa1,0x8f,0x85,0x75,0x3e,0x8c,0xf6,0x0e,0x88,0xe2,0x1d,0x5c,0xb8,0xf1,0xc4,0x8a,0x21,0x76,0x20,0x50,0x3f,0xb3,0x8b,0x9f,0xa4,0x45,0x9e,0x07,0x60,0x22 +.byte 0x2c,0xa6,0xb1,0xc2,0xd2,0xcb,0xc6,0xd8,0xe9,0x94,0x66,0xfb,0x10,0x73,0x92,0x25,0x7e,0x31,0x42,0xf4,0x4a,0x75,0xac,0x78,0x43,0xcb,0xc0,0xc9,0xb0,0xaf,0xb4,0x22,0x8f,0x51,0x36,0x0f,0x5a,0xb8,0xbb,0x44,0x03,0x09,0xd0,0xf9,0x04,0xc8,0x73,0x8e,0xa1,0x76,0x27,0xde,0x72,0xf4,0x3a,0x79,0x63,0x85,0x32,0x09,0xad,0x12,0xe4,0xd7 +.byte 0x8f,0x8e,0x24,0x03,0x4f,0xde,0x39,0xac,0x81,0xe8,0x64,0x09,0x17,0xd7,0x99,0xe6,0x62,0xb7,0x53,0x20,0x9f,0xb9,0x3a,0xb9,0xb1,0x81,0xfa,0x6e,0x33,0xe7,0x4a,0xca,0xd7,0xa7,0xfa,0x7a,0xbf,0x0b,0x0a,0x99,0x3c,0xc7,0xbd,0xef,0xc7,0x90,0xda,0x62,0x30,0xc6,0x94,0x94,0x6b,0xee,0xbd,0xb7,0x0d,0x86,0xc5,0xb1,0x9a,0xb9,0x86,0x34 +.byte 0xc2,0x81,0x2b,0x09,0x7a,0x88,0x09,0x65,0xcf,0x51,0x78,0x19,0x1d,0x5a,0x62,0x2f,0xb3,0x43,0x8d,0xf5,0x9d,0x26,0x2f,0x4a,0x27,0x96,0x22,0x1b,0x4c,0xc8,0xd9,0x73,0x4b,0x32,0x01,0x11,0x7b,0x59,0x85,0xda,0x50,0x92,0x17,0x45,0xd4,0x1f,0xcf,0x98,0xf6,0x2c,0x69,0xba,0x43,0x22,0xdc,0x36,0x31,0xfb,0x1e,0xe8,0x54,0x24,0x0f,0x24 +.byte 0x4c,0xcd,0xbe,0xdb,0xd8,0x23,0x69,0xe2,0x97,0xf5,0x66,0xb2,0x66,0x6c,0xf2,0x90,0xd0,0x15,0x14,0x9a,0x47,0x65,0x97,0xb0,0xf2,0x3e,0x35,0x09,0xd2,0x3d,0x01,0x9c,0xb3,0xfd,0xf3,0x32,0x46,0x4e,0x11,0xab,0x88,0x9e,0x04,0x6d,0xf0,0xe1,0x9d,0x48,0x01,0x24,0xc3,0x87,0xdf,0x58,0xb6,0x6d,0x6d,0x4f,0xb9,0x1b,0x13,0xee,0x03,0x5b +.byte 0x75,0x39,0x28,0x31,0x90,0x70,0x49,0x10,0x71,0x87,0x76,0x30,0xac,0x88,0xb0,0xf6,0x6c,0xaf,0x5b,0xf4,0xf3,0xe7,0x25,0x75,0x8c,0xa3,0xf4,0xa7,0xd8,0x94,0x78,0xc8,0x77,0xc1,0x48,0x6c,0x62,0xf6,0x2c,0xb5,0x41,0x59,0xf6,0xd3,0xae,0x1b,0x55,0xed,0xdf,0xd1,0x59,0x63,0x76,0x03,0x65,0xd3,0xd0,0xcd,0xb6,0x5b,0x8f,0x1a,0x78,0x88 +.byte 0x78,0x07,0x14,0x3f,0xc3,0xd4,0x1c,0x69,0xd8,0x15,0x25,0xca,0x76,0x15,0x24,0x7d,0xed,0x69,0x2a,0xb5,0x04,0xd2,0x3b,0xbd,0x7a,0xb2,0xae,0x04,0x51,0x85,0x2b,0x1b,0xb0,0x3f,0x6d,0xbc,0xa0,0xc7,0x19,0x40,0xab,0x75,0x51,0x4b,0xa8,0x5a,0xd7,0xb5,0xc7,0xa8,0xfc,0x4a,0xcf,0xa9,0x9c,0xe6,0x2e,0x35,0x51,0x3b,0x05,0x41,0x43,0x7c +.byte 0x1f,0x2e,0x16,0x5d,0x2f,0xa8,0xe9,0xce,0x6d,0x06,0xa7,0x5a,0xed,0x07,0x39,0xe4,0x7e,0xc3,0x01,0x2d,0x97,0xe4,0xc1,0x89,0x2c,0xb4,0xb1,0xb5,0x7f,0x0a,0xe2,0x9f,0x82,0x36,0xee,0x9b,0x76,0xbc,0x9d,0x37,0xdf,0x5e,0x81,0x95,0x9b,0x2b,0xc4,0x58,0x20,0x6a,0xd2,0xc7,0xb6,0x82,0xe6,0xa2,0x52,0x73,0x4a,0xaf,0x37,0x5a,0xf6,0x6b +.byte 0xc4,0x2b,0x53,0x4e,0xca,0x44,0x17,0x9f,0x1c,0xeb,0x4d,0xf2,0xd1,0xb0,0x35,0xaa,0xc3,0xfe,0x77,0x34,0x2a,0x4a,0xe8,0x85,0x96,0x2f,0xa4,0x7d,0xdf,0xd0,0x6a,0x4a,0x0c,0x9b,0xd9,0x6a,0x00,0x92,0xb4,0xb1,0x9f,0xc3,0x56,0xee,0xcb,0xa5,0x3a,0x37,0x68,0xc8,0x7c,0x1e,0xa8,0x0a,0x3d,0xbc,0xd1,0xd0,0xd7,0x8b,0x32,0x34,0x20,0xfc +.byte 0xd3,0x9e,0xf5,0x18,0x3a,0xb9,0x87,0xae,0xde,0x6c,0xc0,0x7d,0xbd,0x20,0x00,0xe5,0x7b,0xcb,0xf9,0x7d,0x70,0x9a,0x10,0x45,0xc9,0x33,0x13,0x9d,0x2c,0x16,0x67,0xe6,0x36,0x38,0xcf,0xa2,0xf1,0xad,0xec,0x48,0x7f,0x9b,0x2a,0xdc,0x13,0xe2,0xee,0xef,0xf2,0x5c,0x3f,0x52,0x3a,0x72,0x79,0x9b,0xba,0x50,0xb2,0x2b,0xfb,0x97,0x8e,0xe6 +.byte 0x27,0x39,0x63,0x72,0x05,0x11,0x7d,0x2e,0xa8,0x44,0x08,0xf7,0xf3,0x26,0xe5,0xe4,0x6c,0x98,0x7b,0xb1,0x42,0x6d,0x74,0xd4,0x3b,0xfa,0x35,0xfa,0x0a,0xac,0x5e,0x9e,0x8f,0xc7,0x07,0xc5,0x50,0x25,0xfd,0xbf,0x13,0x52,0x3d,0xf1,0x18,0x1e,0x19,0x8c,0xf3,0x8b,0x4d,0xc8,0xfb,0x76,0xa4,0xe3,0x3f,0xb2,0x47,0x9c,0x50,0x97,0x32,0x65 +.byte 0x9e,0x42,0x81,0x21,0xd1,0x92,0xd2,0x81,0x4a,0x93,0x68,0xa2,0xc1,0x76,0xc8,0x40,0xce,0xfe,0x4e,0xc5,0xa7,0xb2,0x77,0x9f,0xc8,0xe5,0x41,0xb1,0xda,0x15,0xf6,0xfa,0x21,0x3f,0x11,0x5c,0xc6,0x62,0xda,0x01,0x7f,0x0f,0x9f,0x9e,0x98,0xfe,0x38,0x53,0x6c,0x7f,0xba,0x8b,0x55,0x01,0x36,0x33,0x41,0x5e,0xa9,0x78,0xbf,0x2e,0x60,0x4f +.byte 0xcb,0xe9,0x27,0x09,0x8c,0x01,0x2d,0x82,0x7d,0x3f,0xaf,0x8f,0x1e,0x37,0x79,0x35,0xfb,0xce,0x83,0xc5,0xf8,0xc5,0x54,0xfd,0x50,0xec,0x31,0xd1,0xb5,0x8a,0x4d,0x37,0xf6,0x7f,0x0e,0xbe,0x35,0xdd,0xa8,0x9e,0x5e,0xb9,0x3c,0xf4,0x2b,0xd2,0x97,0x56,0xd0,0x28,0xcb,0x60,0x27,0xcf,0x27,0x68,0x8a,0xa1,0xbf,0x9f,0xa3,0x45,0x4a,0x44 +.byte 0x71,0xe2,0xb2,0x9c,0x69,0x0b,0x18,0x69,0xcf,0x03,0xcc,0xc3,0x93,0xe0,0xf5,0xb7,0x4e,0xa4,0xdc,0x96,0xe0,0x2e,0xf8,0x3b,0xc6,0x67,0x30,0x06,0x5e,0xb9,0xb9,0x7d,0xaf,0x97,0x38,0x9a,0xf4,0x22,0x20,0x5a,0x9e,0x83,0x26,0x3c,0xcc,0x93,0x84,0x20,0x15,0x2e,0x85,0x23,0x17,0x1d,0x28,0xb4,0xe2,0x8f,0x2d,0x22,0x99,0x66,0xfd,0x6a +.byte 0xa8,0xe6,0xb7,0x19,0x18,0xec,0xbd,0x54,0xc2,0xcc,0xb7,0xb4,0x6b,0x10,0xdd,0xb5,0xe3,0x3b,0xb7,0x77,0xbf,0x66,0x65,0x82,0x6a,0xc6,0x0d,0x26,0xe6,0xe8,0xe1,0x96,0xe4,0x0b,0x3c,0xe3,0xf2,0xfb,0xd6,0x91,0x5d,0xb6,0x08,0x15,0x67,0x10,0xfa,0xf8,0xdc,0x72,0x84,0xca,0x48,0x29,0x75,0x98,0x62,0x30,0x43,0xa9,0xf1,0xde,0x58,0xb5 +.byte 0x6e,0x67,0x53,0x62,0x0d,0x06,0xa8,0x97,0x35,0x04,0x02,0x34,0x3f,0xd7,0x77,0x38,0xed,0x51,0x32,0x7c,0x6f,0x25,0x94,0x04,0x30,0xa5,0xfc,0xf1,0xb0,0x65,0x77,0x16,0xec,0xb0,0xf9,0x6d,0xaf,0xbc,0x75,0x6e,0x29,0x44,0x20,0x86,0x36,0xbe,0x22,0xe0,0xe1,0xc4,0x0c,0x97,0x10,0x45,0x3e,0x06,0xc3,0xee,0xa5,0x1f,0x97,0xc7,0xde,0xdb +.byte 0xf1,0x05,0xe3,0xb7,0x24,0xc5,0xa5,0xca,0x4e,0x8e,0x9e,0x44,0x7e,0x98,0xb1,0x3c,0xe9,0xa6,0xe5,0xa6,0x08,0xcb,0x08,0xd7,0xf6,0x38,0x37,0xa4,0x46,0xd1,0xdc,0x53,0x6f,0x6c,0x3f,0xca,0xa1,0x9b,0x7c,0xa6,0x44,0xd4,0x08,0x33,0xd2,0xf8,0x32,0xd2,0x4f,0x60,0x75,0x0f,0x49,0xf1,0x70,0x52,0x56,0x16,0x5b,0x3e,0x34,0x0e,0xe4,0x94 +.byte 0xc3,0xa9,0xd4,0x1c,0x9e,0xa4,0x10,0xce,0xc1,0x69,0x5b,0x3a,0xc9,0xd5,0xab,0x98,0x81,0x78,0x42,0x7e,0xf2,0x76,0x10,0xad,0x97,0x85,0x98,0x2f,0xe2,0x3f,0xb1,0x1d,0xc0,0x4d,0xa4,0x0b,0x54,0x7e,0x19,0x16,0x0a,0x71,0x74,0x37,0xfd,0x67,0x23,0x86,0xb2,0x3b,0x1e,0x49,0x92,0x92,0x1b,0x5f,0x65,0x56,0x76,0x6d,0x97,0x3b,0x91,0xc0 +.byte 0x5a,0x7e,0xf1,0x5b,0xe9,0x83,0xb9,0x67,0x2f,0xe1,0x0c,0xcf,0xe9,0x51,0x26,0x45,0x03,0x06,0x63,0xa4,0xb2,0x06,0xe0,0x8e,0xa3,0xbf,0xf5,0x7c,0x19,0xdf,0xfe,0x38,0x28,0x98,0xa1,0x23,0x16,0x69,0xc4,0x9f,0x20,0xe4,0x42,0x27,0x4e,0x7b,0xc9,0x42,0x5e,0xd2,0xb9,0xbf,0x33,0x03,0xbb,0x96,0x6d,0x80,0x65,0x90,0x3b,0x82,0x5b,0x68 +.byte 0x46,0x4f,0xe3,0xe0,0x0e,0xc5,0x90,0x91,0x80,0xf8,0xf4,0x9c,0xfe,0x03,0xaf,0x31,0x44,0xb7,0xfc,0x1f,0x65,0xc8,0x65,0x68,0xcc,0x27,0xb4,0x0d,0x81,0x14,0x9e,0x52,0xab,0xdd,0x71,0xf6,0xd9,0xcf,0x29,0x04,0xcd,0xae,0x6f,0xd6,0x41,0xb5,0xfd,0x1d,0x0f,0xbf,0x71,0xc2,0x60,0x98,0xb9,0xc0,0x6e,0x8a,0x2c,0x7d,0xec,0x31,0xa5,0xea +.byte 0x1a,0xb1,0xe4,0xc2,0x36,0xcb,0xf0,0xf4,0x3f,0x1d,0x03,0x01,0xcd,0xac,0xd0,0x9d,0x2e,0xa3,0xc4,0x54,0x49,0x75,0x90,0xac,0x7e,0x1e,0xc3,0x90,0xab,0x55,0xb0,0x34,0x0d,0xd6,0x99,0xb5,0x40,0xda,0xdd,0x30,0x57,0x61,0x15,0xec,0x8f,0x8c,0xc7,0xda,0xfc,0xf5,0x0a,0x86,0xd8,0x6b,0x0f,0x6e,0x09,0xb8,0x50,0x2a,0xea,0x51,0x84,0x33 +.byte 0x7a,0x97,0x0c,0x56,0x61,0x2c,0xd9,0x83,0xb9,0xb1,0x53,0x31,0x72,0x20,0x79,0x85,0x7f,0xdc,0xb8,0xfe,0xfa,0x9a,0xd4,0x6a,0x3c,0xc7,0xcc,0x75,0x20,0xba,0x9c,0xb9,0x1a,0xff,0x9c,0xbe,0xfd,0x87,0xb4,0xd7,0xe8,0x5e,0x22,0x6a,0x1b,0x91,0x52,0x6a,0x58,0xbc,0xf4,0xde,0xcc,0x18,0x37,0x0e,0xf5,0x22,0x91,0xd2,0x4f,0x08,0x91,0x62 +.byte 0x1c,0xb7,0xa0,0x7e,0x66,0x97,0xda,0xa0,0x3c,0xc8,0xe8,0xdc,0x61,0xa4,0x64,0x8b,0x0a,0x43,0x90,0x0c,0x78,0xd9,0x96,0x8a,0xb0,0x17,0x0f,0x32,0x17,0x11,0x82,0x69,0x9d,0x7c,0xa9,0xfd,0x9b,0xe3,0xeb,0x0d,0x44,0x1d,0xcb,0xf6,0xee,0x26,0x6b,0xd5,0x4c,0x49,0x69,0x18,0xd7,0xf3,0x63,0xd9,0x7e,0x83,0xdd,0xa3,0x2d,0xdf,0x88,0x10 +.byte 0xd1,0x5c,0xb0,0x7e,0x44,0xfe,0x64,0x39,0x33,0x05,0x04,0x54,0x74,0x4d,0xd5,0xbc,0xdf,0x19,0x52,0x81,0x60,0x92,0xc5,0x4e,0xa4,0xff,0xf0,0xa2,0xfd,0x88,0x96,0xde,0xb4,0x8d,0x58,0x06,0xfb,0x96,0x6f,0x0e,0xb0,0x4a,0x2b,0xed,0x15,0xa7,0xfb,0x9f,0xf2,0x30,0xc4,0xce,0x02,0x4d,0x83,0xb8,0x5d,0x10,0x60,0xb8,0xbc,0x05,0xa2,0xd4 +.byte 0xf1,0xae,0x46,0x56,0xb9,0xac,0x68,0x79,0x41,0x90,0xee,0x79,0xda,0x3a,0x91,0x7a,0xf6,0xdb,0xe3,0xea,0x91,0x48,0x77,0x4a,0xa3,0xab,0x9c,0x99,0x49,0x1f,0xc9,0xcd,0xe7,0x2e,0xe3,0xe7,0x78,0x6d,0x07,0x1b,0xc6,0x08,0x48,0xd8,0x20,0xff,0x19,0x8a,0x73,0x1d,0xc6,0xa1,0xd4,0x95,0x33,0xf7,0x45,0xab,0xea,0x05,0x3e,0xdf,0xde,0x68 +.byte 0xb2,0xb6,0xef,0x71,0xb4,0xd1,0x09,0x4b,0x43,0x16,0x35,0x1a,0xb6,0xcb,0x78,0x63,0xca,0x9e,0x9a,0xe3,0x86,0xb2,0x8e,0x7b,0x68,0x89,0xa7,0x5c,0xd3,0x06,0x21,0x88,0x94,0xde,0xa1,0xb1,0x3a,0xe8,0xb7,0xfa,0x58,0xc5,0xc8,0x01,0xfa,0x56,0xe4,0x0e,0x6b,0xeb,0x5d,0x67,0xf4,0x63,0xd4,0x44,0xe2,0xe7,0x42,0xfe,0x09,0x58,0xdf,0xd9 +.byte 0x1d,0xb7,0x14,0x91,0xac,0x88,0x49,0xf6,0x7c,0x03,0x92,0x11,0xb4,0x66,0x68,0x6c,0x94,0x2a,0x22,0xaf,0xa6,0xb1,0x29,0x2a,0xae,0xdd,0xa8,0x65,0xe4,0xa9,0x39,0x00,0x1e,0xca,0x17,0x99,0xba,0xd6,0xf2,0x20,0x21,0xbf,0x1a,0xab,0xca,0x7c,0x92,0x22,0xee,0x3c,0x0c,0xc6,0x63,0xcc,0x86,0xfe,0xc0,0x8f,0xac,0x18,0x4e,0x2b,0xa5,0x2e +.byte 0x46,0x57,0x8a,0xbf,0xdc,0xd1,0xd2,0x2c,0x5b,0xe2,0x96,0x81,0xca,0x41,0xb5,0x17,0x38,0x4a,0xa4,0xd2,0x0e,0xac,0x5d,0xe9,0x44,0x63,0x1b,0xb8,0x81,0xd6,0x69,0x1c,0x99,0xc5,0xdb,0xdd,0x18,0xc1,0x6d,0x28,0x7d,0x36,0x52,0x82,0xaa,0x1a,0x10,0x01,0x9d,0xf1,0x7b,0x09,0x69,0x56,0xb1,0x31,0xa3,0x54,0x3c,0x56,0xf9,0x82,0x8c,0x06 +.byte 0x5a,0x32,0x2d,0xc0,0x7c,0x7e,0x91,0x6d,0x73,0x7b,0x7c,0x45,0x0b,0x2c,0x2a,0x4f,0x3c,0xea,0x6b,0x2b,0x84,0x76,0xab,0x8d,0x4c,0x5c,0x64,0xa3,0x97,0x9f,0x56,0x20,0x05,0xf9,0xc2,0x20,0xf3,0xd0,0x6a,0x7f,0x7d,0x12,0xfc,0x20,0x52,0x5d,0xff,0x92,0xaf,0x4e,0x7f,0x8f,0x2f,0xd0,0x73,0x06,0x23,0x09,0xce,0x11,0xc0,0x1b,0x48,0x7d +.byte 0x11,0x51,0x06,0x0e,0x05,0x95,0xca,0x42,0x71,0x87,0xa3,0xa3,0xc1,0x27,0xf8,0xb1,0x24,0x92,0x38,0x95,0xf6,0x8f,0x3b,0x70,0x74,0x19,0x9b,0x08,0xb3,0x49,0xe9,0x57,0xd4,0xce,0x5b,0xdd,0xab,0x95,0x26,0xe9,0x70,0x21,0xef,0x16,0xdd,0x36,0x89,0xe5,0x9e,0xaf,0xc5,0x28,0x0c,0xd3,0x67,0x64,0xbc,0xfb,0x18,0x17,0x15,0x1e,0xa7,0xb7 +.byte 0x72,0x3d,0xfd,0x10,0x5c,0xa2,0xc1,0xbf,0x62,0x79,0x2b,0xa7,0xb9,0x1f,0x73,0xe6,0x11,0xd8,0xbc,0x74,0x6c,0x45,0x95,0xef,0xa2,0xda,0x90,0xc3,0x00,0x00,0xbb,0xc7,0x28,0x36,0x82,0xd4,0x5e,0x5c,0x11,0xea,0x7c,0xf6,0x79,0x66,0xff,0x93,0x77,0x49,0x05,0xc9,0xc1,0x8d,0x5c,0xf6,0xff,0xb9,0xf9,0xcd,0xb3,0x01,0x83,0x83,0x43,0x2d +.byte 0xa1,0x90,0x73,0xc9,0x32,0xae,0xdb,0xd0,0xf3,0x61,0x63,0x72,0x06,0xde,0x21,0x7b,0x3b,0x2d,0xec,0xd3,0x1d,0xfe,0xbd,0x6e,0xd8,0xe3,0x39,0xe0,0xa1,0x9f,0x67,0xaf,0xab,0x79,0xbc,0x59,0xf9,0xa7,0xdf,0x28,0x75,0xea,0x34,0x6b,0x25,0xde,0x49,0x1b,0x07,0x95,0x19,0x47,0x86,0x46,0x7b,0x68,0x30,0x70,0xec,0x9c,0x05,0xb6,0xc9,0x00 +.byte 0x68,0x10,0x4b,0xc4,0xe5,0xf1,0x67,0x3f,0xd4,0x3c,0xd6,0x49,0x98,0x71,0x23,0xff,0x07,0x6e,0x01,0x01,0x08,0x08,0x3d,0x8a,0xa1,0x71,0xdf,0x25,0x1a,0xef,0x60,0x86,0x6d,0x1c,0xd9,0x90,0x29,0x95,0xf2,0x4c,0x96,0xd3,0x17,0xe8,0x96,0x32,0x25,0x8c,0x65,0x38,0xbc,0x44,0x6a,0x5a,0xef,0x5a,0x72,0x12,0x43,0x2b,0xaf,0xc3,0xdc,0xb3 +.byte 0x6c,0x9f,0x57,0x61,0x2f,0x12,0x3f,0x72,0x16,0x4f,0x34,0xe3,0xb5,0xca,0x72,0xca,0x1c,0xdb,0xd2,0x8d,0x70,0x1f,0x19,0x75,0xb3,0x1b,0xdf,0xdb,0xb3,0xbf,0x6c,0x9a,0x70,0x64,0xa8,0xac,0x30,0x2d,0x4b,0x30,0xf5,0x4f,0x12,0x19,0xbd,0x65,0x25,0x70,0x33,0xe1,0x6f,0x18,0xdf,0x17,0xec,0xa3,0x80,0x51,0x6e,0xbb,0x33,0xa5,0xa8,0x58 +.byte 0x95,0x3c,0xab,0x86,0xd1,0x33,0xbe,0x55,0x04,0x8c,0x20,0x0d,0xfc,0x1a,0xa9,0x9d,0xb1,0x16,0x42,0x56,0x20,0xcc,0xa6,0x73,0xa0,0x85,0x3d,0xbf,0x1e,0xe0,0x01,0x51,0xd2,0xd7,0x2e,0x9d,0xd8,0x3c,0xea,0x03,0xf9,0x9a,0xbf,0x19,0x17,0x04,0x99,0xaf,0x8b,0xfc,0x9c,0x86,0xdf,0x58,0x78,0xfc,0x54,0x0d,0xac,0x26,0x27,0x2f,0x2e,0xbc +.byte 0xdd,0x4a,0xd5,0x6f,0x7c,0xd8,0x93,0xe3,0x51,0x9e,0xcc,0xc8,0xd2,0xfe,0x68,0xfb,0x5b,0x22,0xda,0xef,0x76,0xb9,0xc3,0xdd,0x13,0x52,0x24,0xb6,0x23,0x1f,0x69,0x22,0xb6,0xf5,0x86,0xff,0x2e,0x6e,0xd0,0xe0,0x21,0xbc,0x31,0x81,0xb5,0xc5,0xdb,0x36,0x58,0x44,0xe7,0xb8,0xf7,0xfd,0xd3,0x34,0xee,0xab,0xe6,0x99,0xf2,0x84,0x86,0x9b +.byte 0x67,0x45,0x08,0x07,0x66,0xae,0x6a,0x55,0xa2,0x74,0x46,0xda,0x02,0x82,0x67,0x93,0x60,0x64,0x5d,0x1f,0xac,0xe7,0x36,0xb6,0xcd,0x31,0x28,0x78,0x93,0xcd,0x54,0xe9,0x42,0xbb,0xb4,0xb3,0x15,0x72,0x12,0x31,0x85,0x15,0x68,0x3a,0x31,0x35,0xd6,0xc9,0x0d,0x3f,0xa0,0x4b,0x36,0x03,0xda,0xfd,0x7a,0xd6,0xce,0x0c,0xf5,0x14,0x23,0x71 +.byte 0x47,0x85,0x64,0xe7,0xe7,0x8b,0x8e,0x25,0x03,0x32,0x5f,0xa9,0x3b,0xdb,0x2b,0x27,0x7c,0x02,0xfb,0x79,0xd7,0x7a,0x76,0x75,0x69,0xfd,0x74,0x24,0xd2,0x72,0x8c,0xdd,0xc5,0xa1,0x45,0x90,0x50,0x65,0x95,0x41,0xae,0x7e,0x5c,0x83,0x3e,0x24,0x3c,0x02,0xa9,0x37,0x49,0x36,0x63,0x2f,0x18,0x92,0x3a,0x8a,0xe5,0x2a,0x6a,0x5c,0xa7,0x3e +.byte 0x98,0x24,0xfd,0xd9,0x3b,0x2d,0x4c,0xe2,0x8e,0x05,0x5b,0xdd,0x47,0x0f,0x19,0x5a,0x62,0x94,0xd6,0x6e,0x45,0xd8,0x99,0x43,0x78,0xa0,0xb1,0xdf,0x68,0x8a,0x56,0xa8,0xfb,0x2e,0x52,0x4e,0xfa,0x21,0xec,0x62,0x14,0xf5,0x90,0xdb,0x8c,0x02,0xa7,0xff,0x29,0x22,0xb8,0x40,0x87,0x58,0xda,0x4e,0xfd,0xab,0xeb,0xa2,0x40,0xce,0xfc,0x58 +.byte 0x46,0x37,0x3f,0x04,0x4e,0x36,0x76,0x44,0x3c,0xfc,0x54,0xb8,0x6f,0x4b,0x66,0x6a,0x4a,0x78,0x8f,0x33,0x86,0x07,0xe4,0x3c,0xb5,0x0f,0x86,0x2e,0x21,0x7e,0x44,0xce,0x18,0x77,0xe0,0xcc,0xd7,0x7f,0xc9,0xac,0xb7,0x2b,0x94,0xb5,0x91,0xcd,0x2c,0xfa,0xc7,0x98,0xbd,0xb0,0x2a,0x85,0x77,0xcf,0x82,0xd9,0xae,0x76,0x33,0x34,0xc0,0x9d +.byte 0x3a,0xbc,0x27,0xbc,0x97,0x25,0xf4,0xf1,0x43,0x53,0xac,0xf6,0xde,0xf5,0x1f,0xa6,0x6a,0xd5,0xe3,0x11,0x32,0x49,0x46,0x5b,0x56,0x68,0x07,0xdb,0x03,0xad,0xc2,0x35,0x16,0x8f,0x01,0xcc,0x8a,0xd2,0x0c,0x6b,0xb2,0x62,0x73,0x99,0xb5,0x74,0xf1,0x4b,0x2e,0xbc,0x8e,0xed,0xc0,0x55,0x56,0x40,0xae,0x24,0xf2,0x7e,0x1f,0xba,0x9d,0xc4 +.byte 0xd1,0x69,0xd3,0xba,0x21,0x83,0xf5,0xc4,0xbf,0x78,0x96,0x74,0xa1,0xd8,0x8c,0x35,0xba,0x9f,0xa0,0x0f,0xb5,0x6a,0xb2,0x72,0x52,0xfa,0x02,0x71,0xbb,0x79,0x61,0xbd,0xa9,0xee,0x22,0x7c,0xc5,0xac,0x6b,0x52,0x67,0xab,0xc4,0xd2,0x8d,0x26,0x1c,0x2b,0xaf,0x0c,0xa4,0xce,0xb5,0x11,0x99,0x4d,0x22,0x69,0x68,0xe0,0xc6,0x3e,0x84,0x3d +.byte 0xeb,0xad,0xc9,0x5b,0xb5,0xb4,0xba,0x06,0x9b,0x0a,0xb2,0x54,0x89,0xf2,0xb0,0x5f,0x41,0xb4,0x8b,0x21,0x31,0x29,0x94,0x52,0x1e,0xa7,0xc4,0xc2,0x97,0xb9,0x74,0x95,0xa3,0x30,0xfb,0x02,0x77,0x01,0x4f,0x32,0x03,0x34,0x8f,0x51,0x2d,0x10,0x61,0xee,0xc5,0x2f,0x89,0x42,0x3c,0xbe,0xed,0x66,0xa6,0x7a,0x10,0xc6,0x06,0x7e,0xb2,0x3d +.byte 0xf2,0xc9,0xd1,0x08,0x97,0x6c,0x6f,0x6d,0x06,0x9d,0x72,0xd0,0x5e,0x79,0x3b,0xa5,0xa5,0xd0,0xdc,0xc6,0xda,0x73,0xd2,0xf3,0x0a,0xfd,0x94,0xc2,0x9c,0x4b,0x85,0x38,0x8d,0xb2,0xfb,0x29,0xdd,0x90,0xc2,0xb7,0x8f,0x2c,0x52,0xa2,0x32,0x5e,0xa1,0x0f,0x62,0x38,0x58,0xfa,0x46,0x4e,0x87,0x4b,0xcf,0xc5,0xe9,0xfc,0xf2,0x97,0x62,0xdd +.byte 0x92,0xd2,0x41,0x7b,0xa2,0x2a,0xae,0x6e,0x4d,0xbc,0xef,0x43,0x18,0x6e,0xbb,0xe5,0x06,0x45,0x53,0xa1,0x00,0xef,0xf5,0x4b,0xad,0xbd,0xa5,0x2c,0x77,0x0a,0x37,0x04,0x22,0x95,0xeb,0x7b,0xc1,0x3c,0x20,0x0a,0x44,0xdf,0xa2,0x23,0xc9,0xfc,0x85,0xf3,0x5b,0x9b,0x0f,0x40,0x2a,0xe3,0xc7,0x5a,0xa1,0xf6,0xe4,0x39,0x2a,0xfe,0xd7,0xe7 +.byte 0x33,0xd8,0xbc,0xd6,0x1f,0xef,0xac,0xa9,0x3f,0x2d,0x55,0xb0,0x85,0x74,0xef,0xeb,0xcd,0x9b,0x23,0xa3,0xe6,0x19,0xde,0xea,0x7c,0x9c,0x83,0x48,0x4b,0x12,0xfd,0xe3,0xcb,0x1b,0x70,0x2d,0x9f,0x2c,0x13,0x82,0x87,0x68,0xca,0x60,0x5e,0xc0,0x2e,0x60,0xde,0xf2,0x6b,0x78,0x0a,0x63,0xaa,0x9c,0x9b,0x61,0x63,0xc7,0x0c,0x98,0x92,0x68 +.byte 0xc7,0x44,0x00,0x6a,0x76,0x43,0xa0,0x61,0x7c,0x37,0x62,0x1a,0xd4,0x9b,0x58,0x59,0xe5,0xae,0x78,0x79,0x80,0xf0,0x75,0x68,0x9e,0xab,0x02,0xb8,0x00,0xc5,0x33,0x0d,0xea,0xb1,0x91,0x0f,0x17,0x57,0x96,0x23,0x8d,0x36,0x4d,0x89,0x94,0x42,0xc9,0x61,0x6e,0xf6,0x9f,0x37,0xee,0xa5,0x4b,0x3d,0x06,0x08,0xee,0x9a,0x7c,0x73,0xa9,0x58 +.byte 0xcd,0xcb,0x78,0xa9,0x3d,0x5c,0x11,0x0e,0x5a,0xd9,0xb0,0x7b,0xc4,0x3e,0x83,0xdc,0xe2,0x11,0xe9,0x6d,0x8a,0x8b,0x24,0x28,0x1d,0x7e,0x45,0x1b,0x05,0x5a,0x6b,0x97,0x1c,0x25,0x15,0x84,0x5c,0x3f,0x95,0x44,0xd5,0x4f,0x3c,0x4b,0x52,0xb1,0x0b,0x6a,0xb3,0xae,0x4e,0x1b,0x12,0xcf,0x16,0x78,0xd7,0xcb,0x32,0x43,0x39,0x88,0xf4,0x5e +.byte 0x26,0x29,0xe7,0x93,0x08,0x19,0x14,0x88,0x8f,0x54,0x91,0x13,0xb6,0x57,0xd1,0x87,0xd4,0x9d,0xf7,0xec,0x9b,0x22,0x6b,0x91,0x79,0x9d,0x6c,0x32,0x47,0x4a,0x79,0x55,0x7d,0xac,0x87,0x98,0x59,0x97,0xa5,0x71,0xbc,0xbf,0x1b,0xf0,0x6f,0xbb,0x81,0x8e,0xc2,0xef,0x7c,0x63,0x2f,0x80,0x37,0xb6,0xc5,0xae,0x59,0x5e,0x57,0x5e,0x1f,0x3a +.byte 0xe5,0x6b,0x6b,0x5e,0xdb,0x8e,0xd2,0x87,0xf7,0x94,0x7b,0x11,0x0e,0x4b,0xa6,0x9f,0x49,0xc6,0x68,0xc7,0x52,0x5f,0x28,0x87,0x33,0x84,0x52,0x5f,0xc8,0x5f,0x81,0x85,0x10,0xe8,0x92,0xce,0x13,0x6c,0x01,0x28,0x5e,0x59,0x8f,0xbb,0xa9,0x9c,0xdc,0x85,0xd3,0x73,0xa0,0x5a,0xbf,0x5b,0x04,0x80,0x99,0x90,0xc8,0x16,0x44,0x0d,0x09,0x01 +.byte 0xcd,0x24,0xe7,0x59,0xe7,0x42,0xe0,0xdd,0x01,0x93,0x1f,0x9e,0x1f,0x36,0xdb,0xcd,0x49,0xdb,0xea,0xa9,0x63,0x71,0xb9,0x2c,0xcd,0xca,0x1a,0x64,0xe1,0x95,0xbe,0xe1,0x64,0x2e,0xc7,0x59,0x15,0x61,0xe1,0xf9,0x45,0x0f,0x2a,0x3a,0x85,0xf8,0x7c,0x06,0xae,0x53,0x84,0xd2,0xe7,0xee,0x8b,0xbf,0x7a,0x72,0xa3,0x57,0xf1,0xc2,0x12,0x40 +.byte 0x9c,0x93,0xe1,0x04,0x81,0xde,0xc6,0xa8,0xae,0x4f,0x5c,0x31,0x93,0xc7,0x11,0x1d,0x89,0x70,0x85,0xd5,0x6f,0xab,0x58,0x1f,0x3f,0x76,0x45,0x7e,0x19,0xd0,0x6c,0xc1,0x41,0xa9,0x64,0x0a,0x79,0xb5,0xe0,0x9e,0xbc,0x4f,0x10,0x0c,0xac,0xfc,0x54,0xad,0xcf,0xb8,0xd0,0xfd,0x9b,0xed,0xea,0x54,0x05,0xbf,0x4f,0x91,0xbd,0x16,0x4a,0x57 +.byte 0xa9,0xda,0x38,0xb9,0x40,0x0d,0x63,0x68,0x83,0x7d,0xec,0x1c,0xe6,0x7f,0x9c,0xec,0x16,0x4e,0x0b,0xd0,0x91,0xb4,0x2c,0x04,0x65,0xb8,0x12,0xdf,0x3f,0xff,0x6a,0x08,0x4e,0x65,0xdf,0x09,0xa5,0xea,0xb1,0xac,0xa9,0x67,0xd2,0xbb,0x73,0x51,0xd2,0x37,0x72,0xfc,0x3f,0x69,0xe2,0x3f,0x01,0x94,0x3a,0xf7,0x23,0x0e,0x5d,0x23,0x44,0x82 +.byte 0xc7,0x38,0x35,0x9f,0xfa,0x13,0x15,0x47,0x0d,0x18,0xab,0x02,0x39,0x6e,0xb2,0x7c,0x29,0x11,0x9a,0x5a,0x01,0x2d,0xb2,0x10,0xea,0x9d,0xb7,0x37,0x4b,0xf2,0x2b,0x76,0x22,0xf7,0xaf,0x8a,0x5f,0x1d,0x6b,0xb2,0x13,0x9e,0x84,0xf5,0xbc,0x6e,0xad,0x66,0x5c,0x1b,0x5d,0x12,0xb0,0xe1,0x48,0x94,0x83,0xa0,0x26,0x54,0xd2,0xfd,0x3c,0x8d +.byte 0x81,0xac,0x31,0x9a,0x15,0xc6,0xd8,0xd5,0x07,0x1b,0x21,0x3f,0x04,0x40,0x3a,0x60,0x80,0x5f,0x1f,0x42,0x3e,0xd7,0x2b,0x7a,0x5f,0x71,0x93,0xb4,0x9d,0xf0,0x8b,0x5e,0xf1,0xc6,0x19,0x0a,0xa9,0x43,0xac,0xb2,0xc1,0x73,0x0d,0x44,0x6a,0x92,0x22,0xd0,0xda,0x40,0x14,0x7d,0x88,0xd1,0x5e,0x10,0xc9,0xa4,0x4d,0xd8,0xe0,0x7d,0x74,0x1b +.byte 0x2b,0xcb,0x50,0x24,0xbd,0x50,0x4a,0xe4,0xed,0x0e,0xe8,0xc0,0x5b,0x50,0x6d,0xf5,0x68,0x59,0xd1,0xc3,0x6f,0x32,0x86,0x29,0xe0,0x32,0x3f,0x05,0x86,0xa2,0x7f,0x93,0xd8,0xb7,0x02,0x68,0xb3,0x16,0xaa,0x0c,0xd3,0x4d,0xec,0x9a,0x66,0x06,0x7c,0x74,0x35,0x6f,0xde,0x8b,0xd9,0xdb,0x79,0x0a,0x15,0x84,0xc4,0x63,0xba,0x42,0xa2,0x3c +.byte 0x29,0xc8,0x65,0xdc,0x06,0x60,0x0a,0x08,0x4e,0x80,0x33,0x5c,0xfa,0x4b,0x91,0xdb,0xf6,0x57,0xd6,0x25,0x7d,0x70,0x80,0x09,0xb2,0x27,0xdb,0x80,0x4c,0xa7,0xe8,0x35,0xf5,0x18,0x2d,0x10,0x62,0x22,0xf9,0xb1,0x22,0xf3,0x9b,0x74,0xa0,0xc5,0x25,0xd3,0x44,0xc9,0x27,0x7c,0xba,0x01,0xfe,0x32,0x23,0xf7,0x90,0x90,0xbc,0x0d,0xad,0x9e +.byte 0x22,0x77,0xc5,0xfb,0xf2,0x0e,0xda,0xe5,0x7c,0xb4,0xbb,0xed,0xd4,0xfd,0xb0,0xfb,0x4a,0x4c,0x2a,0x32,0x2d,0x81,0xcd,0xef,0x74,0x3c,0x6a,0x9a,0x0c,0x95,0x58,0x25,0xd0,0x3a,0xb4,0x84,0x8f,0xa5,0xef,0xad,0x91,0xd7,0x2d,0xae,0x61,0xaf,0x9d,0x3f,0x03,0xa8,0xab,0xa4,0x66,0xd4,0x73,0x3a,0x84,0x0d,0x4c,0x6a,0xca,0xbd,0x0c,0x3c +.byte 0xdc,0x1d,0x37,0xea,0xe6,0x5a,0x7f,0x15,0xbe,0x9d,0xc7,0xce,0xbd,0x46,0x97,0xd3,0x07,0x19,0x82,0xaf,0x58,0x39,0x39,0x95,0x5d,0x4b,0x8e,0x1b,0xe9,0xf1,0xf6,0xa9,0xb3,0xfc,0xe6,0xe0,0x68,0x2c,0xbb,0xfa,0xd9,0x9b,0xc1,0x69,0xf3,0x5a,0x8f,0x67,0xd5,0x9c,0x11,0x1e,0x02,0x20,0x20,0xfe,0x4b,0xc9,0x8b,0x62,0x17,0x9a,0xfa,0x47 +.byte 0x7f,0xa2,0x8b,0xc1,0x3b,0x02,0x78,0x38,0xff,0xce,0xe1,0x54,0x40,0x3f,0x27,0x5c,0x9d,0xdd,0x56,0x38,0x48,0xea,0x39,0xbe,0xa0,0x76,0x43,0x82,0xef,0x74,0x50,0xdf,0xda,0x4c,0xca,0x47,0x46,0x7e,0xc5,0xff,0xce,0x66,0xdf,0xeb,0x5b,0x6e,0x45,0x77,0x19,0xac,0x01,0x1f,0x20,0xa1,0xad,0x01,0x5f,0x87,0x3e,0x3a,0xd0,0x83,0x13,0x17 +.byte 0x53,0x40,0xfe,0x26,0x99,0x42,0xfa,0x54,0xa8,0x82,0x79,0xa7,0x44,0xd0,0x9e,0x59,0x64,0x77,0xec,0x70,0x0e,0xcd,0xb9,0xb1,0xc2,0xe2,0x39,0x93,0xb7,0xd1,0xd5,0x67,0x9f,0xb0,0x5b,0xd9,0x50,0x8b,0x17,0xec,0xbc,0x83,0x64,0x35,0xaa,0x43,0x3f,0x4c,0x8c,0x56,0x83,0x76,0xa2,0x72,0x30,0xe7,0xe8,0x9f,0x88,0x35,0x8e,0x8d,0x11,0x31 +.byte 0x8e,0xb5,0x71,0x75,0x31,0xc8,0x28,0x15,0x50,0xe6,0x0a,0x00,0x4d,0x75,0x51,0x7c,0x33,0x14,0x96,0xff,0xe8,0xf3,0xa0,0xb1,0x9c,0xeb,0x9d,0x8a,0x45,0xcf,0x62,0x82,0xeb,0xce,0xea,0xa5,0xb9,0x10,0x83,0x54,0x79,0xf8,0xcf,0x67,0x82,0x1d,0xea,0xce,0x86,0xcf,0xc3,0x94,0xf0,0xe8,0xf4,0x80,0x8b,0x84,0x96,0x06,0x2e,0xe4,0x58,0x21 +.byte 0x98,0x42,0x1a,0xb7,0x8c,0x5d,0x30,0x15,0x83,0xe8,0x17,0xd4,0xb8,0x7b,0x90,0x57,0x35,0x72,0x6d,0x1b,0x7c,0xc0,0x88,0x0a,0xa2,0xea,0xcd,0x58,0xcc,0xf1,0xb4,0x8b,0xcd,0x66,0x3c,0xa5,0xb0,0xd4,0xc9,0xcc,0x42,0x1d,0xef,0x3b,0x42,0x22,0x9b,0xfb,0x45,0x24,0xcc,0x66,0xd7,0x67,0x73,0xb2,0x12,0x03,0xf6,0xa3,0x06,0x61,0xe2,0xab +.byte 0x91,0x8e,0x33,0x0b,0x9f,0x6a,0x80,0x5e,0x0f,0x68,0x41,0x5a,0x7e,0xd8,0xe2,0x32,0x50,0xc2,0x88,0x60,0xca,0xe3,0x23,0x86,0xff,0xdc,0x0c,0x19,0xbb,0xba,0x01,0xa3,0x41,0x89,0xf0,0x79,0x55,0x79,0xa6,0xa4,0x66,0x7b,0x46,0xde,0xac,0xae,0xb1,0xde,0xe1,0x1e,0x8d,0x62,0xc1,0xd6,0xeb,0x39,0x2f,0x1d,0x50,0x27,0x53,0xc9,0xea,0xb6 +.byte 0xd3,0x91,0x9b,0xdd,0xc1,0x68,0x8c,0xb6,0xe1,0x5e,0x9f,0xea,0xbe,0x98,0x88,0xeb,0xa8,0x77,0xf6,0x69,0x64,0xab,0x99,0xf3,0x7a,0x08,0xff,0x8c,0xa6,0x17,0x1b,0x2e,0x6e,0xcc,0xd8,0x33,0x30,0xef,0x5a,0x86,0x07,0x49,0xa5,0x13,0x08,0xbc,0xd6,0x88,0x7e,0x19,0xe0,0x1c,0x23,0xa9,0xe5,0x0a,0xa7,0xaf,0x8a,0xe9,0x81,0x3f,0xd8,0x99 +.byte 0xa6,0x01,0x6b,0xec,0x14,0x08,0x90,0xb1,0x76,0x16,0x3a,0xcb,0x34,0x0b,0x91,0x26,0xe9,0xec,0xe5,0xbc,0xd6,0xdc,0xf0,0xa9,0xfd,0xf2,0xe9,0xcc,0xa1,0x9d,0x7f,0x32,0x0d,0x0a,0x2a,0x92,0xff,0xc4,0x38,0xf8,0x9e,0x31,0x78,0x47,0xbf,0x3f,0x27,0x71,0xe1,0x7a,0x33,0x48,0x91,0xe8,0x8e,0x1a,0x66,0xcf,0xa1,0x61,0xc2,0x62,0x30,0x7c +.byte 0x69,0x35,0x21,0x67,0x9b,0xa7,0x1c,0x72,0x06,0xd8,0x28,0x94,0x6e,0x6d,0xf0,0x22,0x85,0xb4,0x6c,0x89,0xe8,0x2e,0x3a,0xc5,0xdc,0xe3,0xe3,0x0c,0x8a,0xba,0x1c,0x57,0x86,0xef,0x55,0x6a,0x24,0x59,0x5e,0x6e,0x47,0xb8,0xad,0xc5,0x10,0xff,0xbe,0x2d,0x93,0x09,0xfe,0x17,0x03,0x16,0x4d,0x4a,0x9a,0x15,0x38,0x94,0x38,0x18,0x45,0xa7 +.byte 0xcf,0xe4,0x16,0xd3,0x26,0x72,0x49,0xe7,0x89,0x9a,0xb4,0xc7,0x78,0xc3,0x18,0x3b,0xc8,0x08,0x9d,0x66,0x0f,0x48,0xc8,0x23,0x91,0x57,0x61,0xf1,0xf3,0x01,0x3e,0x0a,0xa3,0x4c,0x6c,0x34,0x5b,0x98,0x40,0x47,0x42,0xc1,0xeb,0x58,0x58,0xff,0x1f,0x4b,0x5f,0xf1,0x29,0x2e,0x7e,0x76,0x15,0x56,0x17,0x9c,0xe7,0x55,0x09,0x22,0x0a,0xa2 +.byte 0xd8,0xbf,0xd9,0x44,0x49,0xa9,0x24,0xd7,0x4f,0x12,0x04,0xa2,0x18,0x1c,0xdc,0x54,0xc0,0x22,0x27,0x3c,0xeb,0x1f,0x02,0xae,0xb3,0x33,0xb2,0xa2,0x84,0x23,0x76,0xc6,0x2b,0x94,0x53,0xae,0x7b,0xee,0xbb,0x81,0x64,0x8a,0x3f,0xe0,0x75,0x6b,0x2c,0xd5,0x60,0xad,0x49,0x0c,0xf8,0x65,0x64,0x1a,0x83,0xc7,0xb9,0xd9,0x01,0x5b,0xde,0xb0 +.byte 0x76,0x9b,0x1c,0x0d,0x89,0x2d,0xd5,0x09,0xc7,0xa9,0xbb,0x0a,0x54,0x5c,0xd4,0x5b,0xbf,0xbc,0x5e,0x00,0x29,0x0b,0x30,0x19,0x73,0x66,0xfd,0x3f,0xdb,0xd4,0x1b,0xd4,0xc0,0x27,0xde,0x49,0x90,0x5f,0x65,0x87,0x3c,0xc4,0x43,0xd0,0x49,0x76,0x64,0x39,0x88,0xd7,0x0e,0xfc,0x27,0x52,0xb1,0x8d,0xd0,0x27,0x29,0x84,0xe3,0x49,0xb9,0x0c +.byte 0x2d,0x4e,0x73,0x95,0x57,0xa8,0x07,0xa0,0xe1,0x5b,0x5a,0xb6,0xbc,0xa1,0x7f,0xfd,0x4b,0x9c,0x4d,0x7d,0x0c,0x5c,0x4c,0x4b,0x42,0x70,0xc3,0x0a,0xc1,0x89,0x12,0xb5,0x46,0x04,0x3c,0x56,0x25,0xc6,0x8f,0x49,0x7d,0x3b,0xf1,0xcd,0xfc,0xb8,0xa6,0x66,0xb1,0xc2,0xa3,0xa7,0x98,0x93,0x0e,0xdb,0xcd,0xce,0xdf,0x7f,0x68,0x5e,0xea,0xf2 +.byte 0x85,0x61,0x8f,0xd6,0x23,0xb4,0x5f,0x2f,0xf8,0x78,0x47,0x15,0x59,0x2d,0xca,0x35,0x0f,0xf5,0x91,0x74,0x3b,0x32,0xe1,0xcf,0x54,0x1b,0xf4,0x9d,0xdb,0x20,0x5e,0xf8,0x71,0x10,0xa3,0x31,0xf1,0xb8,0x98,0x8d,0x76,0x70,0xce,0x4c,0xed,0xd3,0x81,0x6b,0xd5,0x8d,0x73,0x5f,0x8c,0x66,0x7c,0x87,0x73,0xfa,0x20,0xbe,0xcd,0xba,0x41,0x88 +.byte 0x46,0xc3,0x38,0xc0,0xd9,0x08,0x79,0x30,0xda,0x7f,0x2a,0xc0,0x72,0x47,0xb0,0xc9,0x41,0x68,0xb1,0xe8,0xb4,0x86,0xcb,0x5d,0xb0,0x5b,0x7a,0x26,0xfd,0xf2,0x1b,0x4e,0x1f,0x4c,0x6a,0x8a,0x84,0xd4,0x07,0x2f,0xf4,0x06,0x73,0x3d,0x1c,0x55,0x04,0x6a,0xa5,0x8a,0xbb,0xaa,0x8a,0x8d,0x8f,0x05,0xcc,0x63,0x04,0xe0,0xc6,0x6f,0x6b,0xf8 +.byte 0x24,0x56,0xbb,0x9d,0xa9,0xe5,0x4c,0xac,0x9d,0xbe,0xfd,0x70,0x9d,0x1f,0x98,0xc4,0xfc,0xdb,0x3c,0x45,0xe7,0xbb,0xea,0x51,0xb6,0x56,0xe0,0x2c,0xb2,0x77,0x1b,0x80,0x9b,0x43,0xa7,0xb2,0x9a,0x40,0x8f,0xdb,0x2d,0x51,0x7b,0x2c,0x89,0xfd,0x14,0xf5,0x77,0xbf,0x40,0x3d,0x32,0xe0,0x10,0x32,0xcd,0xc4,0x3f,0xe2,0xe8,0xb4,0xdf,0xc2 +.byte 0x43,0x7a,0x0b,0x17,0x72,0xa1,0x0e,0xd6,0x66,0x35,0x8f,0xf4,0x21,0xf1,0xe3,0x46,0x13,0xd7,0xcd,0xc7,0x7b,0xb4,0x9b,0x39,0x1e,0x33,0x3c,0x18,0x15,0x7a,0xea,0x77,0xc5,0x57,0x4d,0xf9,0x35,0x8a,0xc1,0xb5,0x78,0x5d,0xc3,0x3e,0xd5,0xfd,0xb5,0x50,0xee,0x44,0x24,0xa2,0x55,0xb6,0xd8,0x3d,0x5d,0x75,0x2a,0x26,0x37,0xe7,0x85,0xb3 +.byte 0xff,0x70,0x5d,0x99,0x8d,0x99,0xba,0x9d,0x09,0x97,0xf2,0x67,0xe5,0xa3,0x86,0x06,0x21,0xb4,0x03,0x9b,0x63,0x76,0x1f,0xf8,0x09,0xd8,0x4e,0x22,0xcb,0x48,0xcf,0x79,0x72,0xc9,0x3f,0x84,0x5e,0xb8,0x39,0x87,0x27,0x92,0x1e,0x59,0xdf,0xc2,0xe6,0xd2,0xc4,0x5f,0xad,0x6e,0x9c,0xa4,0xec,0xd5,0x7d,0xf6,0x2b,0x9b,0x93,0x56,0xcd,0xa3 +.byte 0xc5,0xfa,0x82,0x39,0x46,0x29,0x57,0x43,0x08,0xe2,0xe1,0x3e,0x80,0x3b,0x8e,0x08,0xe5,0xc5,0xfe,0x05,0x17,0xaf,0xe0,0xf0,0xb7,0x5b,0x34,0x33,0x59,0xfa,0x93,0xbf,0x6a,0xb3,0x6c,0xbc,0x99,0x62,0x34,0x2c,0xf2,0x3b,0x62,0xf2,0x1c,0x48,0x07,0xc9,0x60,0x03,0xa5,0xe1,0x66,0x8d,0x84,0x36,0xc7,0xf9,0xc6,0x3b,0xa9,0xee,0x0f,0x48 +.byte 0xff,0xff,0xad,0x95,0x21,0xb5,0x12,0x63,0x7d,0x0f,0x0d,0x09,0x63,0x51,0x64,0x69,0xb4,0x95,0xd3,0x25,0xf0,0x3b,0x6d,0xc4,0xdd,0x8c,0x80,0x0d,0x3b,0xd2,0x4b,0xe0,0x67,0xcb,0xcd,0x7d,0x2e,0xbd,0x61,0x4b,0x0c,0x32,0x1f,0xfd,0xd2,0x31,0xed,0xa8,0xaa,0x98,0xf4,0x85,0x21,0xbc,0x08,0x14,0x2f,0xbb,0xbf,0x01,0xba,0x24,0x5e,0x5c +.byte 0xf3,0x72,0xed,0x05,0xec,0xf3,0xd1,0x9b,0xb0,0x63,0x8a,0x14,0xd1,0x9e,0xae,0x9b,0xce,0x4d,0x6c,0xb6,0x7a,0x78,0x9e,0x1d,0xcd,0x1e,0x50,0x66,0x26,0x70,0x74,0x2b,0x43,0x6a,0xc7,0xd7,0xe9,0xa2,0xcf,0xf3,0x09,0x9a,0x81,0x80,0x04,0xb8,0x5a,0x4f,0x2e,0x10,0x35,0xb2,0xb0,0xc6,0x40,0x97,0xa5,0x6a,0x24,0x5a,0x6b,0x97,0xc7,0xc0 +.byte 0x24,0x50,0x8d,0x65,0x21,0x25,0xce,0xb9,0x19,0xfc,0x40,0x08,0xcf,0xfd,0x1c,0xc4,0x30,0xd4,0x06,0x70,0xac,0x8a,0x3c,0x3f,0xfc,0xc3,0xeb,0xdd,0x43,0x56,0x4a,0xf6,0x50,0x92,0x9d,0xce,0x9c,0xea,0x15,0xdd,0x7c,0x5e,0x40,0xf5,0x7e,0x41,0x70,0xdd,0xc7,0x62,0x21,0x5a,0x20,0xc8,0x71,0x10,0x97,0xd5,0x12,0xfa,0x31,0x96,0xfb,0x38 +.byte 0x17,0x66,0x73,0x32,0x7a,0x93,0xf0,0x82,0xb9,0xf1,0x24,0xc5,0x64,0x0b,0xa9,0x24,0x4a,0x47,0xac,0xfb,0xf1,0x55,0xd7,0xb3,0x9a,0x64,0x63,0x0b,0x2e,0x13,0x9e,0x1a,0xee,0x21,0xd0,0x70,0x5c,0x0c,0x25,0xe7,0x38,0x23,0xd7,0x2f,0x6a,0x20,0x59,0xef,0x70,0xb2,0x8e,0xb4,0x15,0xee,0x6f,0x70,0xd0,0x75,0x19,0x9d,0x42,0xa7,0x17,0xad +.byte 0x99,0xaa,0x0d,0xa3,0x87,0x3d,0xf1,0x7b,0x0e,0xfa,0x62,0x9a,0x20,0x64,0x17,0x64,0x07,0xc2,0x84,0x13,0xb2,0x59,0x81,0x66,0x45,0xab,0x47,0x6d,0xfc,0x7b,0x60,0x05,0xac,0x30,0xb2,0x86,0x7e,0x34,0x6b,0xaf,0x37,0x00,0xa6,0x47,0x4c,0xb9,0x10,0xbd,0x9e,0xce,0x47,0x9e,0xc2,0x0e,0xfd,0x47,0xfa,0xd8,0x08,0xd1,0xc2,0xaa,0x6d,0x8c +.byte 0x91,0x2c,0x18,0x32,0x52,0x84,0x47,0x71,0x3b,0xc9,0xa1,0xf5,0xfc,0x90,0xb8,0x79,0xbf,0xe5,0x59,0x1b,0x91,0x22,0xcb,0xd3,0x87,0x7e,0xd4,0xb5,0x33,0xb2,0xfc,0x7c,0xee,0x22,0xfb,0xe8,0xb0,0x3c,0xa7,0x8b,0x05,0xd7,0x7f,0x17,0x52,0xbe,0xb6,0xe0,0x1e,0x47,0xce,0xfd,0x79,0xdf,0x16,0x5f,0x01,0x70,0x0c,0x47,0x5a,0x01,0x96,0x08 +.byte 0x3e,0x9b,0xc4,0xb2,0x58,0x73,0xc4,0x38,0xd6,0xf2,0x1b,0x0a,0x2c,0xb9,0x2a,0x96,0xb5,0x89,0x2d,0x33,0xdf,0xa4,0x5f,0x24,0x1b,0x79,0x0e,0xb6,0x9f,0xec,0x46,0xd3,0x27,0x4a,0xc1,0x26,0x94,0x95,0x41,0xd5,0xb3,0x84,0x74,0x62,0x47,0xc5,0x4d,0xb4,0xe2,0xe7,0xdb,0xc3,0xc3,0x7b,0x33,0x2a,0xbf,0x69,0xf6,0x5e,0xdc,0xfe,0xa4,0x81 +.byte 0x91,0xf3,0xa8,0x26,0x82,0x44,0x37,0xea,0xe1,0x20,0xff,0x52,0x33,0x5b,0x0b,0x6f,0xf8,0x33,0x4e,0x02,0x4d,0x38,0x93,0xcd,0xc0,0xfc,0x73,0x1a,0xf9,0xf6,0x9f,0x53,0xfc,0xf7,0xe2,0x4b,0x25,0xdd,0xa7,0x4d,0x1e,0x5c,0x17,0xc3,0xa0,0x41,0x1d,0x67,0x45,0xff,0xcb,0x41,0x49,0xc4,0x18,0x68,0x7e,0x7f,0xb6,0x6f,0xdb,0xbc,0x73,0x2f +.byte 0xc7,0x9a,0x46,0x8c,0x0b,0x57,0xa3,0xd3,0x0a,0x34,0xb7,0x27,0x67,0xbb,0xe1,0x64,0xa7,0x7e,0x79,0xac,0x4f,0x09,0x54,0x9b,0x43,0x5e,0x9a,0x33,0x02,0x45,0xdc,0x85,0x0b,0x59,0x8d,0x78,0xe8,0xd8,0xb5,0xd3,0x31,0x9d,0x2a,0x60,0x5b,0x91,0xed,0xf1,0xf1,0x37,0x3f,0xdb,0xda,0xd6,0xd1,0x8f,0x14,0x7e,0xe1,0xfc,0x92,0x60,0xa5,0x33 +.byte 0x86,0xef,0x29,0xbf,0x94,0x84,0x2b,0x24,0x20,0xb4,0x5e,0x23,0x34,0x08,0x63,0xc9,0xe6,0x80,0xa0,0x27,0x27,0x2f,0xab,0xc0,0x52,0x44,0x66,0x29,0x32,0x2e,0x91,0x96,0x02,0x1c,0x3b,0xb4,0x6e,0x33,0x49,0x5b,0x60,0x6f,0x14,0x93,0x65,0x0d,0x97,0x01,0xfb,0xf9,0x42,0x74,0xb6,0x21,0xf7,0xc2,0x5d,0xbf,0x91,0x2b,0xf5,0xb1,0x4e,0xe2 +.byte 0xd6,0x24,0x57,0x41,0x7a,0xcb,0xdd,0xb6,0x96,0x8b,0xfc,0x42,0x19,0x21,0x7f,0x41,0x32,0x3d,0x69,0x9b,0xee,0xda,0x97,0x45,0x26,0x71,0x0d,0x12,0xf0,0x20,0x7f,0x44,0x0f,0x4c,0xd2,0xd3,0x34,0x93,0xc7,0xe5,0xe7,0x83,0x62,0x13,0x0b,0x7d,0xc6,0xe4,0xd2,0xae,0x53,0x2e,0xd1,0x18,0x81,0xd0,0x81,0xf6,0xc0,0x98,0xaf,0x1d,0xb2,0x8a +.byte 0xcb,0xd3,0xde,0x1d,0x53,0x71,0x92,0x0e,0x4b,0x8c,0x7c,0x8e,0x65,0xf6,0xe2,0xc2,0x5a,0x4f,0x8c,0x59,0x0f,0x35,0x5e,0xe4,0x43,0x50,0xab,0xb7,0xdd,0xfc,0x66,0xf9,0xb1,0x9b,0x6b,0x1b,0xaf,0x2e,0x85,0xe6,0x3e,0x4c,0xa2,0xd4,0x55,0x47,0xb9,0x66,0x66,0x7b,0xa3,0xb2,0xd5,0x8a,0x8e,0x88,0x0e,0xfb,0x4e,0xad,0xf4,0x39,0xd2,0xd6 +.byte 0x39,0xef,0xe0,0xee,0x0f,0xf3,0x94,0x47,0xa7,0x32,0x24,0x9a,0xb0,0x82,0x08,0x67,0x00,0x3f,0xe6,0x95,0x76,0x84,0x0a,0x5c,0xb7,0x74,0xc1,0x64,0x5e,0x7c,0xba,0x0b,0x2e,0x6f,0x26,0xc3,0x20,0x2e,0x95,0xc1,0xf0,0x8c,0x55,0x4a,0x45,0x26,0xe6,0xf3,0x55,0x78,0xbd,0xd4,0xdb,0x07,0xbd,0xff,0x61,0x51,0xde,0x7f,0xdb,0x56,0x73,0x6b +.byte 0x9c,0xa4,0xb0,0x72,0xa7,0xd0,0x93,0x4d,0x1d,0x3a,0x92,0x78,0xde,0x77,0x65,0xe8,0x07,0x41,0x92,0xc1,0xbb,0x69,0x79,0x20,0x43,0xab,0x21,0x2e,0x6d,0xdf,0x43,0xeb,0x73,0x49,0x12,0x1f,0x53,0x75,0x01,0xed,0xce,0xf4,0x05,0x05,0x2b,0xc7,0x2a,0x65,0x29,0xe8,0xcf,0x5b,0xf0,0xc1,0x5b,0xd8,0xa8,0xac,0xbb,0xe3,0xac,0x29,0x0a,0x90 +.byte 0x79,0x2f,0x5b,0x92,0x14,0xf2,0xc7,0x2d,0xe5,0x33,0x6e,0x5e,0x31,0xe2,0xab,0xdf,0x21,0x71,0x4a,0x44,0xaa,0xc6,0xe9,0xb8,0x51,0x1d,0xe2,0xf3,0x07,0x19,0xa1,0x98,0x9e,0x8a,0xed,0xe4,0x9e,0x52,0x16,0x1f,0x2f,0xd3,0x4c,0x97,0x1e,0x38,0x49,0x84,0x2e,0x45,0xb5,0x4b,0x4f,0xfe,0xdb,0x25,0x3e,0xa9,0x6e,0x7d,0x60,0x3b,0xa7,0x7e +.byte 0xda,0x32,0x1a,0xd6,0x04,0xbe,0x0c,0x92,0x4e,0x6d,0x85,0xf9,0x9c,0x26,0x9a,0x88,0xf5,0x50,0x95,0x7b,0x9e,0x43,0x07,0x97,0xd4,0xdb,0xa0,0x6e,0x30,0x5d,0x44,0xa9,0x41,0xc2,0xdf,0xdf,0x37,0x35,0xc4,0x85,0x83,0x08,0xea,0x22,0xfa,0xae,0xdd,0x95,0xe5,0x35,0x47,0x23,0x86,0x27,0xfa,0x71,0x88,0xa0,0x12,0x00,0xe0,0xa7,0xd1,0x1b +.byte 0x5e,0x78,0x6f,0x38,0x30,0xa9,0x80,0x75,0xd7,0x61,0xcc,0xfd,0x33,0xd2,0xb8,0xf8,0xd7,0x12,0xf5,0x03,0xf9,0x53,0x6d,0x3b,0x6b,0xff,0x24,0x0a,0x3b,0xe8,0x2a,0xe9,0xae,0xb7,0xc3,0xe3,0x0f,0x26,0x71,0x55,0xc5,0x03,0x60,0xf4,0x47,0x01,0xa3,0x69,0xb2,0x98,0x75,0x5b,0x90,0x4a,0xf9,0x61,0x49,0xd6,0xc4,0xdb,0xab,0x04,0x0c,0x47 +.byte 0x1e,0x31,0x75,0xfa,0xa2,0xc5,0xfa,0x66,0x0c,0x4a,0x93,0xa0,0xea,0x56,0xf9,0x49,0xd4,0xc7,0xcc,0x2c,0xe5,0xdc,0xab,0x61,0x8e,0x0c,0xf3,0x2f,0xb5,0x9f,0x36,0xa1,0x05,0xab,0xb6,0xbc,0x4a,0x6d,0x97,0xe7,0x19,0xe5,0xfe,0x92,0xa5,0x94,0xd5,0xc0,0xf5,0x31,0xf6,0x8a,0xf7,0x24,0x62,0xdd,0x56,0x12,0x84,0xf5,0xc6,0xa0,0x37,0xa3 +.byte 0xfc,0xbd,0x16,0x2a,0xa6,0x36,0x8e,0xd4,0x29,0xfe,0xc4,0xc5,0xcb,0xdd,0xdd,0x8b,0x7e,0xa6,0x9d,0x08,0x28,0x10,0x6b,0xff,0xd7,0x79,0x48,0x35,0x2f,0xbe,0x34,0x9a,0xfb,0xd0,0x7d,0x5c,0xad,0xf0,0xde,0x96,0xea,0x2d,0xc5,0x8b,0xa9,0x7a,0x8b,0xbe,0x97,0xde,0x7a,0x95,0xc7,0x95,0xd9,0x86,0xde,0x3c,0x8d,0x15,0x8e,0x45,0x69,0x27 +.byte 0xd4,0x27,0xa8,0xe3,0xa9,0x1e,0xa0,0x95,0x74,0xf1,0x8b,0xbe,0x3b,0xff,0xa3,0xf6,0x23,0x78,0xd9,0xbd,0xc2,0x44,0x3a,0x93,0xb5,0xa6,0x87,0x7c,0x65,0xd1,0xd8,0xd5,0x43,0x2a,0xb2,0xc8,0x65,0x86,0x83,0x06,0xf7,0x33,0x88,0x3b,0xc0,0x2c,0xb3,0x3b,0x23,0xa3,0x67,0x15,0x49,0x09,0x02,0xbb,0x11,0x08,0xe3,0x37,0x9a,0x9b,0x67,0x8e +.byte 0x63,0xc3,0x8b,0xff,0x21,0xa6,0xbe,0x3b,0xa6,0x57,0xc1,0x56,0x2a,0x02,0xdb,0x24,0x50,0x4a,0x4f,0x60,0x49,0x03,0xcf,0xba,0x55,0x1c,0x64,0xfe,0x0c,0x58,0xb4,0xb0,0x89,0x91,0xd5,0xbc,0xbc,0x85,0xe6,0x96,0x32,0x89,0x1f,0xa0,0x48,0xd1,0x6e,0xa7,0x03,0x86,0x8a,0xf2,0x5f,0xc3,0x5a,0x57,0x8a,0xa3,0x4a,0x61,0x90,0x18,0xb2,0x0d +.byte 0xc7,0x94,0xb9,0x3e,0x40,0x8b,0x1d,0x54,0xd0,0x4c,0xe7,0x2a,0xd5,0x85,0xa7,0x93,0x07,0x10,0x58,0xc4,0x8a,0x18,0x0a,0x49,0x30,0x87,0x93,0x0e,0xcf,0xc7,0x95,0x9f,0xd1,0x3f,0x9b,0x06,0xe3,0xf9,0x4f,0x16,0x58,0x04,0xb4,0xf0,0xf0,0xf3,0x3a,0xab,0x4a,0x35,0xf1,0xec,0x23,0x15,0x0c,0x24,0xba,0x90,0xdc,0xd1,0xfe,0x47,0xca,0xb2 +.byte 0x95,0x33,0x30,0x45,0xba,0x18,0x15,0xec,0x58,0x36,0x02,0xdf,0x28,0x09,0x74,0x4b,0x09,0x01,0x24,0x0f,0x00,0x7b,0xb3,0x65,0x45,0x42,0x63,0x15,0xf8,0x50,0x8b,0x4f,0x28,0x73,0x03,0x3a,0x31,0xe5,0x0d,0x56,0x8f,0x6b,0x4b,0x9e,0xda,0x71,0xee,0x68,0xba,0x85,0x81,0x3d,0x5d,0x74,0x5e,0xda,0x60,0x87,0xf4,0x5a,0x38,0xad,0xc5,0x3f +.byte 0xb5,0x15,0x02,0x59,0x1c,0xd2,0x93,0x66,0x54,0x65,0xf1,0xe7,0x9b,0xf0,0x30,0x2d,0x9e,0xba,0xc5,0x86,0xf4,0xf6,0xc7,0x92,0x73,0x12,0x3b,0x28,0x21,0x1b,0x3d,0x84,0xc0,0x1a,0x7d,0x35,0x8b,0xd4,0x35,0x39,0x35,0xa6,0x51,0xd9,0x19,0x8b,0x92,0xa3,0xea,0x8c,0x7e,0x25,0x05,0x1f,0x1d,0x8f,0x4d,0xba,0xdf,0x20,0x8c,0x8d,0xe2,0xac +.byte 0xdd,0x3d,0xf1,0x04,0x3f,0x77,0x4b,0x8f,0x39,0x7d,0x01,0xb7,0x71,0x4b,0x7b,0xe1,0x6f,0xd4,0x28,0x1a,0x57,0x96,0x4d,0xe2,0x84,0xf6,0x64,0x10,0xbb,0x0f,0xbc,0xe0,0x19,0xed,0x92,0x9e,0x60,0x15,0x78,0xd1,0x30,0xc0,0x53,0x4b,0x94,0xca,0x4b,0x5a,0x44,0x8b,0xa9,0xda,0x2f,0x08,0x70,0x94,0xe4,0x54,0xe1,0x28,0x6e,0xdd,0x34,0x56 +.byte 0x54,0xb0,0xd4,0x87,0x00,0x72,0x1e,0x46,0x10,0x3a,0x27,0x5d,0xc6,0xb5,0x72,0x20,0x2b,0xbe,0x17,0x01,0xbb,0x04,0x11,0x16,0x7d,0xbf,0x91,0xd3,0x7b,0x44,0x58,0x13,0x2a,0x9c,0xda,0x9d,0x26,0x46,0xf5,0x5f,0x51,0xef,0x6c,0xf6,0x36,0xdb,0xb7,0x21,0xde,0xdb,0x87,0xa0,0xd8,0x60,0x24,0x86,0x6d,0x64,0x85,0x9e,0x94,0xd9,0x21,0x0d +.byte 0xed,0xda,0x33,0xea,0x3c,0xdf,0x74,0xe3,0xa5,0xc7,0xc7,0x9e,0xe5,0xb1,0x29,0xdf,0xfa,0x20,0x25,0xcd,0x13,0x08,0xee,0xe6,0xba,0xf1,0x62,0x39,0xcf,0xe3,0x29,0xb8,0xaa,0x65,0x43,0x8a,0x48,0xb5,0xb5,0x70,0x35,0x66,0x42,0xf4,0x32,0x70,0x0b,0x0c,0xa7,0x46,0x79,0xdf,0xb2,0x80,0x13,0x72,0x7a,0xeb,0xf9,0x52,0xcb,0xb8,0x9f,0x4b +.byte 0x4f,0x29,0x2b,0xb3,0x94,0x02,0x0a,0xe1,0x20,0xe5,0x91,0x15,0x6a,0xa1,0x0c,0x71,0x96,0x77,0x01,0x80,0xf7,0x51,0x0b,0xaf,0x54,0x9b,0x3c,0x7b,0x91,0xd2,0xbd,0xaf,0x13,0xa5,0x32,0x17,0x7c,0xca,0xd0,0x22,0xd5,0xe5,0x83,0x44,0x24,0x5c,0xcc,0x24,0x31,0xcd,0x81,0x4e,0x96,0xcd,0x60,0x9f,0x7a,0xe7,0x2e,0x89,0x16,0xd5,0x66,0x6b +.byte 0xac,0x31,0x11,0x7c,0x76,0xc6,0xde,0xbe,0x46,0x55,0x20,0xdf,0x9d,0x2c,0x33,0xa5,0x80,0x76,0xb1,0xc9,0x1c,0x84,0x17,0x4d,0x15,0xe6,0x6d,0xce,0xed,0xea,0xc7,0xe6,0xff,0x01,0x10,0x60,0x26,0xf7,0x63,0x5f,0x91,0x89,0x7e,0xc1,0x7c,0x76,0x67,0x7b,0x7e,0xfa,0x28,0xa0,0xa7,0x82,0x1b,0x28,0x82,0x6a,0x4f,0x78,0x61,0x48,0xbf,0x13 +.byte 0x0b,0x71,0x0c,0xad,0xee,0xd7,0xf8,0xcc,0x0f,0x77,0x74,0x7d,0x2b,0x8a,0x09,0xd8,0x47,0xa0,0xfc,0x45,0x40,0x24,0xf3,0xce,0xdb,0x81,0xa1,0x50,0x9e,0x0a,0xd0,0x58,0xf7,0xaf,0xf1,0x09,0x12,0xa8,0x24,0xb2,0x34,0x99,0x67,0x17,0x53,0x1f,0x9d,0x09,0x7b,0xcb,0x83,0x6e,0x6a,0x0b,0xbf,0x8f,0x6e,0x3d,0xdb,0x29,0xe5,0xd0,0x06,0xdb +.byte 0xb8,0xf2,0xf3,0x43,0x4e,0xa7,0xf3,0x73,0x93,0xe8,0xab,0x2f,0xc8,0x75,0xce,0x62,0xda,0x74,0x39,0x57,0xe4,0xe4,0xb1,0x41,0x8f,0x9d,0xda,0x43,0xb4,0x2c,0x4b,0xd5,0x1c,0x10,0xf0,0x29,0x6b,0x94,0x15,0x04,0x3c,0xd3,0x45,0x73,0x29,0xb3,0x60,0x87,0x93,0xdb,0xbf,0x60,0x4e,0xdf,0x4d,0xbb,0xde,0xb2,0x57,0x67,0x14,0x0d,0x0b,0x60 +.byte 0x63,0xd5,0xc6,0x81,0x82,0xd6,0x0c,0xe6,0x4c,0x43,0x13,0x02,0x74,0x56,0x20,0x6b,0x21,0x28,0xe6,0xe2,0x0b,0xc1,0x7a,0xc3,0x08,0x60,0x82,0xe0,0x4f,0xbf,0x1e,0x3f,0xf0,0xa9,0xb2,0x2e,0x0c,0xbf,0xd6,0x03,0x1d,0x0d,0xd6,0x1c,0x36,0xb5,0xb2,0x14,0x56,0x21,0xc2,0xe0,0x1e,0xff,0xee,0x8a,0x70,0xae,0x3f,0x1e,0xe5,0xac,0x05,0x46 +.byte 0x6b,0x81,0x32,0xce,0x50,0xbb,0x82,0x66,0x32,0x93,0x46,0xf7,0xee,0x77,0x1c,0x9a,0x2f,0x31,0x60,0xa2,0x09,0x7c,0x14,0xd9,0x81,0xe9,0x19,0x27,0x31,0x5e,0xa0,0x98,0x71,0x42,0x2f,0x30,0x71,0xd6,0x31,0x94,0xe0,0x61,0xed,0x50,0x66,0xfa,0xba,0x12,0x5e,0xc6,0xc8,0x67,0xe5,0x8e,0xfd,0x34,0xa9,0xeb,0xde,0x25,0x43,0xbf,0xe7,0xb5 +.byte 0x16,0xf5,0x62,0x66,0x5d,0x0b,0x13,0x9a,0xd4,0x8c,0x2b,0x8f,0xe6,0x91,0x33,0xcb,0xa0,0x70,0x48,0x3e,0x22,0x7d,0xe4,0xf3,0x75,0xc9,0x49,0x82,0x50,0xc9,0x90,0x04,0x32,0xab,0x99,0x6e,0xf1,0xf0,0x0b,0x60,0x80,0x35,0x25,0x45,0x88,0xe9,0x82,0x06,0xe1,0xbb,0x85,0x11,0x40,0xf8,0x0e,0xbd,0x19,0x7a,0xdd,0x78,0xf9,0xc2,0x46,0xe4 +.byte 0xb5,0x27,0xfb,0xb6,0xba,0xbc,0x7d,0xb8,0x27,0xe7,0xbf,0xfe,0x8e,0xfe,0x7e,0x83,0x63,0x43,0x92,0x26,0xf0,0xbb,0xde,0xb6,0x93,0x4f,0x55,0x0c,0x07,0x99,0x3c,0x98,0xa1,0x8c,0x73,0xc1,0x4c,0x9a,0x09,0xa8,0xea,0x16,0x0b,0x49,0x2a,0x43,0xee,0x90,0x61,0x6f,0x09,0x1b,0xc3,0x2d,0x62,0x4b,0xfc,0x90,0xa1,0x8e,0x84,0x2e,0x90,0x8d +.byte 0x5f,0x80,0xff,0x6a,0x3c,0x61,0x0f,0xf2,0xac,0x70,0x20,0xc1,0xf2,0x85,0xcf,0x94,0xc8,0x94,0xe7,0xa0,0x04,0xdf,0xaf,0xef,0x26,0xd2,0xbc,0x07,0x70,0xc1,0x48,0xd6,0x87,0xd6,0xbe,0xea,0x95,0x6a,0xce,0xa2,0x48,0xac,0x46,0x46,0xb1,0x74,0x70,0x96,0x6c,0x26,0x58,0x75,0x9d,0x84,0xd7,0xd9,0x17,0x9a,0x46,0xe9,0xd7,0x3d,0xde,0xfd +.byte 0x7e,0xf4,0xd8,0x7e,0xf8,0x8f,0x1c,0xb5,0xfb,0xe9,0xc4,0xca,0xba,0x52,0x5f,0x17,0xee,0x75,0x7d,0x1d,0x50,0x16,0x9f,0x16,0x1e,0x00,0x8b,0xc1,0x2f,0xab,0x73,0x65,0x88,0x7b,0x80,0xa6,0x71,0xb7,0xfb,0xb0,0xda,0xd1,0x96,0x18,0x5c,0x48,0x6e,0x18,0x45,0x59,0x45,0xef,0x5c,0x65,0x35,0x99,0x5e,0xb9,0xd4,0x1a,0x07,0x7d,0x1e,0xa6 +.byte 0x69,0x42,0x9d,0xfa,0xec,0x02,0xdc,0xc4,0x19,0x6b,0x9c,0xb1,0x5e,0xa3,0xb4,0x6d,0xb4,0xa6,0x25,0xa8,0xe4,0x3f,0x3d,0x6e,0x2c,0x95,0xf7,0xcd,0xa5,0x4e,0x32,0xca,0x7e,0xe0,0x7b,0x11,0xf9,0x0a,0xe1,0x61,0x41,0x60,0xec,0xb3,0xb1,0x92,0x89,0x33,0x17,0xe9,0xaf,0x70,0x7f,0x1c,0x07,0xb5,0x24,0x3a,0x37,0x84,0x38,0xf5,0xb6,0x11 +.byte 0xfc,0x0c,0x12,0xc1,0xfc,0xa9,0x82,0x67,0x4d,0x17,0xe8,0xea,0xd0,0x62,0x17,0xb2,0x9c,0x59,0x01,0x87,0xfb,0x54,0x8e,0xa7,0xa5,0x85,0xa9,0x8a,0xec,0xfe,0x29,0xc0,0x73,0xc6,0xa0,0xbf,0x66,0x9a,0xc5,0xf8,0xee,0xa4,0xcb,0x09,0x44,0x74,0xfe,0x32,0xf5,0x42,0xea,0xf0,0xa6,0xec,0x74,0xea,0x14,0x5c,0x43,0x51,0xfa,0x3a,0x48,0x1e +.byte 0xa0,0x2e,0x59,0x2e,0xdb,0x3a,0x19,0xfe,0x1f,0x95,0x25,0xee,0x27,0x2b,0x99,0xb4,0xe1,0xd0,0xe6,0x33,0x91,0xa1,0xaf,0x30,0xa0,0x89,0x00,0x3c,0x13,0x31,0x18,0x70,0x90,0x42,0x55,0x0a,0xc9,0xc5,0x0c,0x43,0xa5,0xee,0xd6,0x90,0x07,0xae,0xc4,0x8c,0xdc,0xe4,0x07,0xbb,0x61,0x70,0xd1,0x10,0xe4,0x68,0x96,0x70,0x78,0xab,0xe9,0x3a +.byte 0x6e,0xc7,0x75,0x93,0xa0,0xba,0xff,0x6a,0x2d,0x57,0xaa,0x93,0x09,0xc3,0x6b,0x81,0xf3,0xde,0xc2,0xee,0xac,0x86,0x0a,0xfb,0xad,0xdb,0x6f,0x2a,0xa0,0x15,0x7b,0x96,0x77,0x38,0xf8,0x86,0x51,0x33,0x7a,0x6f,0x1c,0xf8,0xd5,0x15,0xcd,0x76,0x7f,0x37,0x68,0x82,0xdf,0xab,0xc3,0xdb,0xbe,0xeb,0x2b,0xa8,0x34,0x72,0x20,0x34,0xfb,0x12 +.byte 0x64,0x17,0x05,0x64,0xc0,0xa1,0xca,0xd3,0xac,0x27,0xc2,0x68,0x28,0x40,0x42,0xe2,0x0a,0xdd,0xd7,0xd6,0xf6,0x92,0x95,0x3c,0x10,0x17,0x4e,0xef,0x75,0xae,0x98,0x2d,0x10,0xc8,0xa8,0xac,0x15,0xf7,0x5b,0x81,0xc1,0xdf,0x5e,0xbe,0x88,0x49,0xe3,0xd1,0x88,0x1c,0xcb,0xce,0x20,0x01,0x12,0x60,0x57,0x0b,0xf6,0x32,0x57,0xaf,0x59,0xef +.byte 0xc9,0xe7,0xbf,0x62,0xf3,0xb6,0xe6,0x5c,0xee,0x36,0x7e,0x11,0x90,0xd1,0xeb,0xfa,0x62,0x0b,0xc6,0xf3,0x1a,0xd5,0x8b,0x95,0xec,0xb4,0x38,0xfe,0x45,0xb0,0xb5,0xff,0x84,0x0a,0x27,0x3a,0xa2,0x5a,0x2a,0xc9,0xa4,0xc0,0x11,0xc6,0x61,0x13,0xb7,0x53,0xa3,0x47,0x45,0x6d,0xc6,0xa9,0x00,0xd1,0x40,0xf4,0x77,0xac,0xb3,0xd3,0x26,0x99 +.byte 0xf1,0x36,0x59,0x28,0xb4,0xd0,0xdd,0x0e,0xed,0x53,0x33,0x45,0x71,0x9c,0x5c,0x11,0x27,0x2c,0x2f,0x10,0x9e,0x5b,0x8a,0x5b,0xc5,0x1f,0x36,0xc9,0x2a,0xba,0xc7,0xa5,0x31,0xd7,0x9f,0x2b,0x0a,0x09,0xcb,0x7c,0x4f,0xa2,0xdc,0xc5,0x64,0x0d,0xe6,0xfe,0xb0,0x9d,0x3b,0xf0,0xa7,0x19,0x8c,0x84,0x21,0x6b,0x9e,0x1c,0xb5,0x7b,0x66,0x77 +.byte 0xd0,0x85,0xb4,0x22,0x93,0x6e,0x84,0x29,0x9b,0x60,0x90,0x37,0x9d,0x8c,0x94,0x95,0x95,0x3b,0xf1,0x2d,0x56,0x5b,0x53,0x60,0x2d,0xe5,0x7f,0x80,0x71,0x56,0xa7,0x6e,0x66,0x76,0x1f,0xaa,0x0d,0xba,0xfb,0x0e,0xcf,0x20,0x68,0x74,0x2b,0x99,0x13,0xe1,0xa8,0x33,0xc9,0xf6,0xbc,0xd3,0xf4,0x46,0x01,0x02,0x85,0x27,0xf4,0x20,0x97,0xa3 +.byte 0xba,0xbc,0x47,0x30,0x48,0xed,0x60,0xe6,0xca,0xbf,0x76,0x8c,0x2c,0x6a,0x43,0x32,0xfd,0x90,0x04,0x95,0xc2,0x42,0xcb,0xca,0xc4,0x33,0xe1,0xd3,0x23,0x92,0xa1,0xde,0x09,0x38,0xce,0x00,0x93,0xb3,0xed,0x82,0x8e,0xfb,0xce,0x4c,0x9a,0x10,0x6e,0xce,0x4a,0x37,0x05,0x75,0x37,0x58,0xc3,0x8e,0x57,0x50,0xa0,0x7d,0x80,0x2d,0x51,0xea +.byte 0x08,0xcd,0x1b,0xd2,0x81,0x85,0x19,0xc1,0xe8,0xce,0x31,0x18,0xcf,0x54,0x37,0x96,0x77,0x3d,0x64,0xfb,0xc2,0xa9,0xdb,0xb8,0x37,0x03,0x83,0x34,0x3c,0x25,0x6a,0x22,0x33,0xfa,0x27,0x70,0xc7,0x0a,0x27,0x12,0x1e,0xb3,0xd0,0x59,0x6f,0xa3,0xc5,0x73,0x95,0x4c,0x1f,0xf1,0x3c,0xb3,0xc2,0xa2,0xc6,0x45,0x17,0x53,0xa8,0xfc,0x00,0xff +.byte 0x77,0x40,0x28,0xd2,0x53,0x90,0x92,0xe9,0x86,0x6c,0xa5,0x40,0xce,0xbc,0x79,0x6f,0x8f,0x12,0xef,0x1b,0x38,0x1f,0xb3,0x24,0xf0,0x75,0x17,0x20,0x9e,0x03,0x9c,0x2b,0x51,0x57,0x93,0x44,0xce,0x74,0xc9,0x12,0xe7,0xcb,0x2f,0x5e,0x1b,0x95,0xf2,0x4d,0x2e,0x51,0x8d,0x52,0xd5,0x21,0xe3,0x1b,0x33,0xe7,0xf2,0x18,0x61,0xa2,0x53,0xdb +.byte 0x73,0xaa,0x6a,0x6c,0xf9,0xf4,0xef,0x3d,0x40,0xa3,0x00,0x80,0x82,0xed,0xe6,0x66,0xd1,0xd6,0xe9,0x93,0xd8,0x92,0xfa,0xdf,0xf9,0x9c,0x7a,0xfb,0x2b,0xc7,0xa7,0x73,0x67,0x2b,0xed,0x76,0xb1,0x52,0xaa,0xcf,0x34,0x84,0xa1,0x6d,0x56,0x85,0xef,0xcb,0xbc,0xa3,0xc6,0xf3,0x5a,0x88,0x04,0xd5,0xd8,0xf1,0x7b,0xf8,0x11,0x6f,0xa0,0x44 +.byte 0xa5,0x0f,0x76,0xed,0xd7,0x98,0xe3,0xda,0xb8,0x1b,0xc7,0xe6,0x89,0x08,0x19,0x1f,0xf8,0xe3,0x32,0x32,0xa5,0x3c,0x71,0x9f,0x11,0xde,0x50,0x29,0xb0,0x54,0x7e,0x3b,0x5e,0xeb,0xf7,0xab,0xa8,0xa0,0x35,0x96,0xc7,0xc5,0xea,0x60,0xc0,0x37,0xca,0x61,0x55,0x96,0xac,0xb4,0xd0,0x29,0x9a,0x1a,0x3f,0x9e,0xf5,0xf5,0x3d,0xed,0xc5,0x7c +.byte 0x2c,0x9d,0x67,0xf8,0x4d,0x82,0x6e,0x2a,0x9a,0xfc,0x5f,0xdc,0x02,0xb0,0x3d,0xa5,0x1c,0x08,0x5d,0x4a,0xaa,0xd0,0x38,0xfb,0xbc,0xbb,0x7f,0x37,0xfb,0xec,0xc0,0x62,0x79,0xaa,0xde,0xfd,0x23,0x9c,0x4c,0x4a,0xe1,0x48,0x40,0x36,0xc0,0x0a,0x6f,0x43,0xb7,0xad,0x4c,0xf6,0x56,0xb5,0x44,0xf4,0x72,0xcd,0x13,0x10,0xea,0x0d,0x24,0xc1 +.byte 0xa9,0x36,0x3b,0x36,0xf2,0x6e,0xf9,0x0a,0x67,0xcd,0x02,0x67,0xb3,0x5c,0x63,0x3a,0x7c,0xc1,0x3b,0xf2,0x1d,0x3d,0xf1,0xff,0xbf,0xf7,0x97,0x9f,0x30,0x1f,0xaa,0xd8,0xdb,0x53,0x9b,0x0a,0xbd,0x38,0xd8,0xb6,0xf1,0x4a,0x78,0x1a,0xc2,0x46,0xd2,0x0c,0xa8,0xcd,0x7b,0x39,0xc7,0x42,0x55,0xc8,0x3e,0x02,0x1d,0xf4,0xad,0x55,0x01,0x6a +.byte 0x11,0x2d,0xfa,0x67,0x48,0xae,0x45,0x31,0x9b,0x09,0x7d,0xd9,0xdd,0xaf,0x5c,0xd5,0x40,0x51,0x2a,0xa1,0x0f,0xb3,0x6e,0xc2,0x94,0xfe,0xde,0x70,0xaf,0x6c,0xea,0x5f,0x7d,0x3c,0x72,0x85,0x86,0x24,0x20,0x0a,0x7a,0xe7,0x69,0x32,0x66,0x7d,0x34,0x13,0x60,0x62,0xc7,0x68,0x32,0xde,0x34,0x30,0x36,0xc8,0x8e,0xb7,0x13,0x66,0xf1,0xce +.byte 0x5f,0x7a,0x3a,0xfe,0x62,0xd6,0x72,0xb6,0x1b,0x80,0x43,0x8a,0x3e,0x13,0x15,0xe4,0x1c,0x7b,0x08,0x70,0x0b,0x6e,0xb3,0xfe,0x07,0x91,0x23,0x21,0x57,0x48,0xc6,0xa9,0xa3,0xa8,0xc7,0x19,0x89,0x8a,0x49,0x12,0x25,0x88,0xd2,0x11,0xa5,0xa8,0x9e,0x0e,0xa7,0x71,0xfe,0xaf,0x88,0xee,0xa7,0x1c,0x3b,0x27,0x27,0x7e,0x79,0x92,0xed,0x77 +.byte 0x74,0x65,0xbd,0x46,0x41,0x25,0xd9,0x8b,0x21,0x73,0x9f,0xaa,0x35,0xa0,0x22,0xb3,0xc8,0x71,0x28,0x72,0xd2,0xcb,0xf4,0x2a,0x06,0x0a,0x63,0x96,0x55,0x2e,0x83,0x0b,0xe8,0x07,0x99,0x9d,0x59,0xde,0xde,0x62,0xbd,0xb4,0x3e,0x70,0x15,0xed,0x95,0xa8,0x2f,0xb7,0xa2,0xb6,0x65,0x56,0x9d,0xe5,0x81,0xa0,0x05,0x5b,0xce,0x00,0xd4,0xb9 +.byte 0x28,0x5a,0xc1,0x9a,0x74,0xc6,0xd7,0x27,0xdd,0x7c,0xbe,0xe8,0x0d,0x47,0xfc,0x81,0x05,0x6b,0x4f,0x68,0xc7,0xcc,0x5d,0xd5,0x66,0x83,0x34,0x72,0x35,0xab,0x39,0x64,0x19,0x67,0xbd,0xff,0x15,0x44,0x20,0x18,0x2a,0xaf,0xbc,0x58,0x94,0xdb,0x18,0x50,0x55,0x11,0x6a,0xc4,0x1d,0xee,0xe2,0xe0,0x75,0x73,0xf1,0xa1,0x83,0xf4,0xcb,0x40 +.byte 0x96,0xf4,0x77,0x45,0x61,0x8b,0x1a,0x8c,0x0c,0xfc,0xd2,0x7e,0x0b,0x1e,0x18,0xd2,0x95,0xa5,0x4c,0x5b,0xd6,0x9d,0x40,0x8b,0xc0,0x51,0xe8,0x2d,0xe5,0x16,0xbf,0xd7,0x98,0x8a,0xa0,0x46,0x1f,0xc4,0xe9,0x12,0x31,0x40,0xc5,0x2d,0x59,0xf8,0x9b,0x5f,0xe3,0x3a,0x10,0xdf,0xda,0x72,0x9e,0xab,0x13,0x7b,0x8f,0xc8,0x52,0x9f,0x58,0x45 +.byte 0x7a,0xe6,0x3a,0xbb,0xdd,0x1d,0xc7,0x3b,0xc4,0x26,0xdc,0x99,0x29,0xf2,0x74,0x16,0x84,0xe9,0x8a,0x86,0xc0,0x1e,0x49,0x96,0x2f,0x5c,0x2a,0x49,0x71,0x88,0xe6,0x82,0xb2,0x18,0x88,0xc1,0x86,0xcb,0x26,0x3c,0xa5,0x50,0x31,0x22,0x9a,0x8f,0x45,0x2b,0xde,0xf0,0x86,0x8e,0x13,0x86,0xc4,0x4a,0x9b,0x35,0x27,0x93,0x0b,0x13,0xc8,0xef +.byte 0x96,0x74,0x97,0x85,0x09,0xc0,0xa0,0x32,0xfe,0xc3,0xe3,0x92,0x2e,0xe8,0x54,0xbd,0xc2,0x23,0xeb,0x4b,0x02,0xf5,0x5a,0x0b,0x0d,0x58,0x50,0x45,0xe7,0x01,0xd4,0x17,0x00,0xdb,0x0d,0xd4,0x2e,0xa0,0xde,0x38,0xf4,0xb1,0x1e,0xd0,0xf0,0xa3,0x6b,0x21,0x0c,0xbd,0xae,0x84,0x7e,0x42,0x36,0x4f,0x2e,0x46,0xae,0x23,0x91,0xb9,0x06,0xac +.byte 0x86,0x7f,0x29,0xca,0xfb,0xe9,0xde,0xdb,0x90,0xfe,0x6f,0xbc,0xdb,0x3c,0x48,0x3d,0x6e,0x06,0x68,0x49,0xbb,0x43,0x8d,0x9d,0xc4,0x5f,0x45,0xcb,0x77,0x28,0xe0,0x35,0xd1,0xb4,0x25,0xb2,0x45,0x6d,0xb4,0x89,0x53,0x26,0x33,0x98,0x83,0x45,0x9d,0xf5,0xad,0xf9,0xa7,0x59,0xb6,0x6e,0xa8,0x25,0xa5,0xef,0xee,0xf6,0x6a,0xd5,0x6c,0x60 +.byte 0x9a,0xea,0x78,0x9e,0xe4,0xa2,0x29,0x0b,0x70,0xb3,0x6e,0x3a,0xfd,0x07,0xc7,0x7f,0x1b,0x07,0xc7,0xca,0x1b,0xb8,0x08,0xe1,0xc9,0x94,0xb2,0x62,0x7c,0x04,0x96,0xa6,0xda,0x65,0x28,0xfd,0xf9,0x70,0x22,0xb7,0x21,0xd3,0xa6,0x38,0x0f,0x1e,0x88,0x7e,0x73,0xec,0x04,0x99,0x8b,0x23,0x91,0x13,0xe6,0x4f,0x74,0x81,0xcc,0x1f,0xdd,0xaf +.byte 0x58,0xc4,0x80,0x00,0x4d,0x1d,0xbe,0x84,0x7d,0xfe,0x85,0xe7,0x77,0x20,0x3c,0x65,0x4e,0x0e,0x2e,0x5d,0xc1,0xd9,0xcb,0xf7,0xbb,0xc8,0x8d,0xbf,0x16,0xa8,0x1e,0x63,0xf5,0x10,0x5e,0xa5,0x9c,0x63,0xb6,0x9a,0xeb,0x98,0xa8,0xb1,0x59,0x82,0x66,0x51,0xae,0x3c,0xfc,0xa8,0x11,0x92,0xf4,0x45,0x88,0x7c,0x03,0x6f,0xe6,0x87,0xe4,0xa8 +.byte 0x79,0xbf,0xb3,0x0d,0xd6,0x0b,0x8d,0xa3,0x16,0x2a,0xfb,0x79,0xb9,0xe7,0xdb,0xa7,0xdb,0x94,0xd3,0xe6,0x3a,0xdd,0xe9,0x5f,0x30,0x7d,0x68,0x90,0x35,0xfd,0x18,0x91,0x8e,0xc5,0x12,0xd6,0xf9,0x98,0xa0,0x5b,0xcd,0x81,0x76,0x84,0x08,0xd0,0xab,0x59,0x2d,0x3b,0x8a,0xf9,0xd9,0x95,0xde,0x8b,0xbb,0x92,0xef,0x35,0xc3,0x3e,0x46,0x73 +.byte 0xf3,0x3b,0x09,0xbf,0x22,0x2b,0x9c,0x0f,0x70,0x9a,0x16,0x0e,0x4b,0xa7,0x1a,0x96,0x98,0xb7,0x5a,0x40,0x06,0x81,0xf4,0xac,0xa6,0xe6,0xab,0xf2,0xda,0x87,0x18,0x61,0xcb,0xc1,0x67,0xbd,0x2f,0x6f,0x06,0x21,0xaf,0x73,0x98,0xe1,0x3f,0x7a,0x17,0x7f,0x44,0xcb,0x1d,0xdd,0x60,0xb3,0x2c,0x58,0x20,0x8a,0x04,0x74,0x56,0x9b,0x26,0x51 +.byte 0x61,0xb0,0x07,0x50,0x53,0x83,0x31,0x42,0x59,0xb3,0x33,0xfa,0xfe,0xbc,0xad,0x7f,0x99,0x9b,0x86,0xf1,0xaa,0x85,0xf1,0xbb,0xc0,0x0c,0x91,0x8d,0x1a,0x0f,0x8f,0x9f,0xfe,0x62,0x2b,0x35,0xae,0xcc,0x8c,0x09,0xe3,0x29,0x96,0xd1,0xbe,0x7f,0x25,0xd6,0x03,0xf0,0x4c,0x53,0xad,0x5b,0x56,0x66,0x68,0x9a,0xa3,0xc4,0x07,0x71,0xde,0x49 +.byte 0x82,0xbb,0xf7,0x9a,0x2b,0x96,0xcf,0x50,0xf6,0x00,0xf7,0x0b,0x27,0xdd,0xf5,0xf6,0xc5,0xc8,0xbd,0x2a,0xa2,0x06,0x2c,0x42,0x3f,0xa0,0xf8,0xcc,0x1d,0x64,0xcf,0xbc,0xb4,0xc4,0x63,0xde,0x6b,0xd3,0xb4,0x61,0xdf,0xbd,0x73,0x50,0x34,0xc3,0x20,0x45,0x06,0x73,0x9b,0xf0,0xfb,0xa6,0x2b,0xec,0x92,0x32,0xa9,0x1f,0x4f,0x1e,0x38,0x78 +.byte 0x2a,0xd2,0x7c,0x1d,0x89,0xf9,0x70,0xbc,0xef,0x09,0x77,0xd3,0x6a,0x56,0xa1,0x8b,0x4b,0x23,0x1b,0xb1,0x2f,0xec,0x84,0xe5,0x59,0xc5,0x20,0x23,0xbc,0x3f,0x0a,0x43,0x97,0x1c,0x5e,0xf7,0xee,0xfe,0x0b,0x2a,0x42,0x08,0x2a,0x39,0x91,0xce,0x8a,0x33,0x9f,0x63,0x77,0x6d,0xf6,0xf3,0x0e,0x1d,0xb3,0xfb,0xcf,0x2f,0x7f,0x95,0xc2,0x71 +.byte 0x1c,0xa0,0x0b,0xc6,0xb8,0xde,0x4d,0xd8,0xcc,0x4c,0x4f,0xaf,0x07,0x87,0x6d,0x3b,0xab,0x95,0xab,0xa1,0x6a,0x50,0x9f,0x7c,0x35,0xb6,0x65,0xdd,0xe3,0x06,0xe5,0xb3,0x42,0x5f,0x4d,0xe5,0x3e,0xfa,0x6c,0xdf,0x19,0x58,0xd1,0xf6,0xc6,0x94,0x1c,0xce,0x30,0x90,0xd3,0xeb,0xa3,0x7c,0xe5,0x3f,0x57,0x99,0x2e,0x22,0x0a,0x94,0x2f,0xfe +.byte 0x39,0x16,0xe6,0xfa,0xd0,0xb5,0xf9,0xb4,0x88,0x61,0xa4,0xa8,0xc3,0xb8,0xb7,0x52,0xaf,0x90,0xc1,0xe0,0x19,0x78,0x04,0x2b,0x71,0x04,0x03,0x2f,0x63,0xbe,0x40,0xf5,0x82,0x3b,0x1b,0x6b,0xde,0x6d,0x1e,0x86,0x87,0x82,0xc3,0x31,0x97,0x20,0xdd,0xdd,0xce,0x61,0x64,0x99,0xf6,0xbe,0xbf,0xec,0x37,0x54,0x8b,0x92,0x29,0xda,0xc5,0x7b +.byte 0x4d,0xc5,0xaf,0xb8,0x4e,0x4b,0x4a,0x2b,0x35,0x30,0xf5,0x19,0x9e,0x32,0xd8,0x2e,0xc1,0x19,0xfe,0xd1,0x61,0xb0,0xaa,0x05,0x58,0x15,0xd9,0x0e,0x4e,0xca,0x4e,0x10,0x83,0xe6,0xe6,0x57,0xe8,0x8d,0x13,0xb4,0x6f,0x85,0x59,0xf2,0x83,0xc8,0x37,0xaa,0xa2,0xe5,0xc8,0x77,0x06,0x82,0x21,0x5d,0x84,0x58,0x67,0x9b,0xcc,0x9c,0xfc,0x1b +.byte 0x28,0x2f,0xac,0xc8,0x96,0x91,0x26,0x46,0x42,0x2b,0x68,0x57,0xb0,0x79,0x1e,0xb1,0x9b,0x92,0x2c,0xeb,0x67,0x00,0xd4,0x26,0x7d,0xca,0x45,0x97,0x55,0xea,0x2a,0x20,0x70,0x7c,0x20,0x14,0x38,0x40,0x3d,0x4f,0xf5,0x3a,0x1f,0x0a,0xe3,0x9a,0x48,0xcc,0xb2,0x7d,0xee,0x5b,0x48,0x90,0x0d,0x12,0x77,0xd8,0xd3,0xb6,0xd7,0x66,0x9e,0x48 +.byte 0xbb,0x92,0xc1,0x7c,0x4e,0x90,0x4d,0xd5,0x96,0x99,0xea,0x86,0x2d,0xb9,0x5a,0x50,0x05,0xc2,0x6b,0xa7,0x0c,0x43,0x44,0x22,0x09,0xb9,0xc0,0x56,0x47,0x5f,0xdf,0xaf,0x6b,0x91,0xe2,0xd7,0x45,0x77,0x17,0x7a,0x71,0x6d,0x27,0x93,0xe2,0xc6,0x10,0x2f,0xc8,0x3b,0x75,0x78,0x11,0xae,0x07,0xe6,0xba,0x64,0xd4,0x06,0xfa,0xf9,0x1d,0x74 +.byte 0x9e,0x4f,0x6d,0x02,0xfc,0x40,0x80,0x9a,0x2e,0xd4,0x15,0x32,0x15,0xe8,0x97,0x0a,0xd4,0x65,0x6a,0x87,0xd3,0x66,0x4b,0xb8,0x66,0x84,0x8e,0xb9,0x4b,0xa7,0xcf,0x58,0x13,0x66,0x3a,0x4e,0xa5,0x76,0x17,0x13,0x92,0x79,0x42,0x67,0x6d,0xb6,0x65,0xec,0xc8,0xb5,0x5f,0x17,0x2a,0x2d,0x4b,0x19,0xe9,0x00,0x6e,0x38,0xaf,0xe9,0x06,0xb6 +.byte 0xe8,0x99,0x69,0x8a,0x74,0xe7,0x7e,0x70,0x69,0x4b,0xbc,0xce,0x5d,0x61,0x94,0x1b,0x47,0x41,0x38,0x5f,0x2e,0xcf,0x2b,0xe1,0xcd,0xa3,0x98,0x71,0xf7,0x09,0x65,0xfe,0x5f,0x62,0x4b,0x9e,0x91,0x88,0x35,0xa2,0x66,0x02,0x1d,0xc9,0x93,0x0c,0x19,0x50,0x4b,0x95,0x71,0x79,0xdd,0x74,0xe1,0xda,0x5a,0xb7,0x38,0x70,0x61,0x18,0x3f,0x68 +.byte 0x08,0x34,0xd8,0xfe,0xbb,0xd1,0xbf,0x57,0xed,0xc2,0x52,0x6d,0x54,0x3e,0xcb,0x0c,0x32,0xc7,0x09,0xa9,0x31,0x10,0xe8,0xbd,0x70,0xe3,0x0e,0xe9,0x4f,0x7a,0xd6,0x42,0x45,0x2e,0x1b,0x3c,0x0d,0x15,0x6d,0xb4,0xad,0xe9,0xc5,0xa2,0x12,0x77,0x34,0x43,0x20,0x95,0xc1,0xb7,0x51,0x72,0xed,0x78,0xa0,0xae,0x3c,0xae,0xb4,0xd4,0xda,0x58 +.byte 0x83,0x62,0xa9,0xc6,0x01,0x3d,0x14,0x19,0x07,0x00,0x3c,0x82,0x16,0x7e,0x8a,0x91,0x78,0xa1,0x65,0x0b,0x5b,0x3a,0x40,0x72,0xe5,0xf0,0xd4,0x82,0x04,0xe4,0x01,0xf1,0x84,0x87,0x96,0x26,0x91,0x66,0x77,0xf7,0x59,0xd6,0xc2,0xca,0x29,0x3b,0x68,0x2a,0x27,0x99,0x64,0x86,0xc2,0x96,0xbf,0x11,0x3c,0xa8,0x0c,0xf7,0x86,0xb8,0xc1,0x40 +.byte 0x15,0x1a,0x84,0xe3,0x93,0x23,0x73,0xa9,0x8b,0xbd,0xb4,0x8a,0xe4,0xf1,0xa5,0x8f,0x56,0xa3,0xdc,0x77,0xbd,0x7d,0x15,0x74,0x2b,0x18,0x92,0x56,0x45,0xbc,0xaf,0xf2,0x55,0xce,0x9d,0xc2,0xab,0x39,0x90,0xec,0x78,0x3f,0xa5,0x14,0xeb,0x40,0x2f,0x01,0xca,0xeb,0xad,0x73,0x85,0xbc,0xe1,0x91,0xaa,0x77,0xa9,0x6c,0x02,0x66,0x6a,0x65 +.byte 0x63,0x6c,0x50,0x62,0x83,0x83,0xef,0x16,0x4f,0x21,0xfd,0x28,0x8e,0x52,0x66,0x5b,0x6f,0x8f,0xbe,0x8d,0x17,0xb9,0xd5,0x99,0xf7,0x39,0xd1,0xbc,0xa2,0x43,0xd7,0x0a,0x80,0xea,0x42,0xf8,0x38,0x53,0x95,0x07,0x6f,0xb7,0x7c,0xc1,0x16,0x88,0xc8,0xb7,0x59,0xde,0x76,0x51,0x2f,0x92,0xd0,0x40,0xfd,0xd9,0x2d,0xca,0x9e,0x8d,0x28,0xae +.byte 0x48,0xc1,0x0a,0xe0,0x76,0x9c,0x02,0x0b,0xc5,0xd1,0xf9,0x83,0x90,0x86,0xa4,0xeb,0x5c,0x64,0x65,0xf8,0x98,0x38,0xc5,0xce,0xef,0x6f,0xc3,0x88,0xb6,0x2f,0x8a,0x40,0x55,0x52,0x47,0x06,0x75,0x16,0x46,0x9c,0xff,0x3c,0x68,0x97,0xc3,0xfb,0x10,0x11,0x7b,0xba,0x04,0xcc,0xad,0xba,0xcf,0xf0,0xae,0xba,0xe6,0x59,0x9c,0xf5,0x27,0xeb +.byte 0xdd,0x5c,0x86,0x25,0xa1,0xb6,0xb8,0x1c,0x94,0x98,0xa5,0x79,0x82,0x4e,0xdf,0x09,0x3f,0x2f,0x8a,0x4e,0x1b,0x5a,0xab,0xd4,0xe6,0x21,0xb3,0x02,0x19,0x39,0xa9,0x2e,0x0e,0xae,0x86,0x30,0xc7,0xa0,0x00,0xed,0x72,0xdc,0x71,0x77,0x42,0x76,0x54,0x68,0xb2,0x8d,0x5d,0xc3,0x5c,0x86,0xf8,0xb1,0x6c,0x67,0xdf,0x24,0x40,0x6a,0x2b,0x1d +.byte 0xbc,0x0d,0x25,0x7d,0x9e,0x1c,0xbd,0x18,0x85,0xda,0x7a,0x86,0x5e,0xed,0x10,0x80,0x83,0xa6,0xef,0x1e,0x93,0xac,0xce,0xe6,0x32,0x35,0xdf,0xb8,0xc7,0x9b,0xf0,0x0f,0x9d,0x37,0xbd,0xd9,0x58,0x33,0x19,0xa1,0x23,0x51,0x5f,0xa7,0x5a,0x99,0x7e,0x2a,0xfd,0x85,0x3c,0x26,0xad,0xcc,0x7e,0x07,0x32,0x7b,0x24,0x5a,0x6b,0x4b,0x71,0x4e +.byte 0xca,0x8b,0xc4,0x03,0x26,0x76,0x02,0x68,0x0d,0xa1,0x09,0xe0,0x2e,0xa4,0x82,0x88,0x05,0x5a,0xc4,0xcb,0x31,0x9d,0x56,0xda,0x0d,0x00,0x04,0xbc,0x07,0xca,0x1f,0xdf,0x9e,0x44,0xed,0x36,0xbd,0xa0,0x22,0xff,0x78,0xd1,0xcb,0x62,0xe0,0x0d,0x2e,0xdc,0x2e,0x36,0x28,0x8e,0xd3,0xa9,0xe0,0x38,0xd4,0xc5,0x2b,0xee,0xaf,0xa4,0x08,0x7d +.byte 0xed,0x2c,0x8a,0xf5,0x86,0x5e,0xed,0x2a,0x0d,0xbf,0xe6,0xfb,0x6f,0xc4,0x02,0x75,0x36,0xe5,0x7b,0xe9,0x4a,0xb3,0xf1,0xf4,0x86,0x6c,0x9a,0x6e,0xaa,0x7a,0xbe,0x4b,0xd6,0xf2,0x6b,0xcb,0x78,0x6f,0xf9,0x42,0x1a,0x19,0x7b,0x7e,0xba,0x59,0x02,0x8b,0xe3,0x5c,0x44,0xa4,0x84,0xa8,0x4a,0x67,0x93,0xee,0xc4,0x17,0x07,0x26,0xfe,0x86 +.byte 0xf1,0xc6,0xba,0xbf,0xc4,0x3d,0x33,0x41,0x4d,0xc4,0xf0,0xa8,0x6d,0xe1,0x06,0x16,0x2d,0xc9,0x5d,0x2a,0xf5,0x4a,0xc6,0xd2,0x8c,0x98,0x55,0xe8,0x8d,0xd0,0x31,0x5f,0xc7,0x05,0xd1,0xca,0xd2,0x72,0xe6,0xd0,0xcb,0x62,0x79,0xac,0x60,0x59,0x94,0x59,0x48,0x9e,0x91,0x17,0xa7,0xa0,0xac,0x4a,0xe5,0x08,0xe5,0x52,0xa4,0xd4,0x83,0x8c +.byte 0x83,0x57,0xe7,0xe5,0xfc,0x9b,0x43,0x78,0xc8,0x7e,0x94,0xc4,0x35,0x3e,0xac,0x4a,0x8d,0x60,0x80,0xdc,0x72,0xe3,0x15,0x09,0x2a,0xbd,0xcc,0x9a,0xe4,0x1a,0x18,0xa8,0xf1,0x29,0x9b,0xca,0x58,0x0b,0x6d,0x7b,0x33,0x91,0x05,0x27,0x6a,0x48,0xbe,0xac,0x08,0xa5,0x2a,0x64,0xf5,0xae,0x2a,0x90,0xf1,0x2d,0x3f,0xa8,0xff,0x17,0x92,0xc4 +.byte 0xec,0x3a,0x09,0xbf,0xae,0xd3,0xe2,0x1c,0x3c,0xc8,0x6f,0x91,0x72,0x99,0xe3,0x82,0x30,0x4f,0x40,0x5c,0x0c,0x8d,0xfd,0xbe,0x10,0xbc,0xce,0x1e,0x0a,0x09,0xbf,0xde,0xdc,0x72,0x7e,0x4c,0xbc,0xec,0x34,0xe2,0x96,0x8a,0xc6,0xee,0x19,0x6c,0xa8,0xf1,0xa5,0xb2,0x71,0x88,0x13,0xe8,0x11,0xda,0x3b,0x77,0x10,0x9c,0x9f,0x74,0x49,0x21 +.byte 0x16,0xcf,0x6f,0x05,0xc5,0xc1,0x4d,0xfe,0xe7,0x4d,0x67,0xe8,0x12,0x14,0xf7,0xaf,0x66,0x8d,0x55,0x34,0x00,0x18,0x10,0x6e,0x6a,0xd2,0x4c,0xd9,0xd3,0x15,0x40,0xbf,0xce,0x7b,0x10,0x69,0xbd,0x15,0x0e,0x60,0x2b,0x76,0x50,0x80,0x92,0x02,0x3c,0x0f,0xea,0x47,0x03,0xd9,0xf6,0x2c,0x00,0xde,0x29,0xb9,0x2e,0xf6,0x80,0x10,0x81,0x28 +.byte 0x6f,0x41,0xfc,0x88,0x65,0xe9,0xb5,0xd4,0x78,0x53,0xff,0x04,0xc4,0xdd,0xd7,0x35,0x34,0x59,0x85,0x33,0x01,0x33,0x67,0xe1,0x4e,0xc2,0xac,0xe6,0x24,0x24,0xb6,0x83,0x48,0x08,0x0c,0x73,0xe5,0x9c,0x98,0xe4,0x4c,0x3c,0x1f,0x6e,0x77,0xea,0x8c,0x76,0x23,0xbb,0x41,0x5e,0xc1,0x8a,0xba,0x3e,0xe5,0x3e,0x86,0x89,0xab,0x32,0x65,0x1b +.byte 0x00,0x92,0x56,0xe0,0x62,0xc1,0x8f,0xeb,0x15,0x7f,0x86,0xdf,0xa2,0xc2,0x8d,0xf5,0xb5,0x88,0x72,0x8c,0xba,0x92,0x30,0x53,0x58,0x3e,0x0b,0xe6,0x4f,0xd4,0xef,0x34,0xab,0xbb,0x61,0xe0,0x31,0x3c,0xe7,0xb2,0x5f,0x64,0xcb,0x52,0xc7,0x1d,0x95,0x96,0xd2,0x8c,0x87,0x34,0x92,0xf2,0xad,0xd9,0x78,0x1d,0xa1,0x67,0x58,0xfa,0xfb,0x06 +.byte 0xc8,0x7f,0x9e,0xf7,0x02,0x12,0xd9,0x8c,0x68,0xbc,0x2b,0xd3,0xe1,0x0e,0x1e,0xbd,0x33,0x7a,0xfd,0x03,0x41,0xb9,0x72,0x2e,0x63,0xfe,0xb1,0x39,0xc3,0x0f,0xa0,0xa9,0x76,0x4f,0x7b,0xab,0xae,0xda,0x22,0xec,0x83,0x32,0xb0,0xec,0xd1,0xfd,0xc2,0x28,0x1e,0x42,0x29,0x31,0xd5,0xb3,0x33,0xcd,0x13,0x1d,0x9f,0xac,0x73,0x27,0xf7,0xea +.byte 0xc6,0x66,0xd2,0x32,0x91,0x60,0x35,0xf4,0x28,0x34,0x43,0x6a,0x74,0x8c,0x05,0x2a,0x84,0x34,0xfd,0x84,0xa5,0xcb,0x1d,0x2b,0x41,0x28,0xa6,0x19,0xed,0xcd,0xad,0xea,0x6e,0xf7,0x14,0x18,0xac,0x56,0x9a,0xf5,0xaa,0x7d,0x4e,0x8a,0x99,0xd1,0xda,0x41,0xaf,0xe8,0xfc,0xef,0x66,0x88,0xd0,0xed,0xfd,0xae,0x2a,0x85,0xc0,0x60,0xa2,0x30 +.byte 0x5d,0x1b,0x48,0xf6,0x3e,0xcf,0x56,0xdf,0x53,0xdc,0x2d,0xf5,0xfd,0x7f,0x2a,0x2a,0x4d,0x4f,0x11,0xcc,0xea,0x72,0xdb,0xb9,0xeb,0x92,0x0e,0x9f,0xc1,0x26,0xe9,0xbf,0x25,0x6a,0x27,0xe1,0x63,0x9b,0xdd,0x62,0x38,0xad,0xd3,0xb2,0x75,0x62,0x45,0xbf,0xbf,0xf4,0xe2,0xd6,0x97,0xe9,0xeb,0xeb,0x98,0xab,0x73,0xdc,0x8a,0xde,0xaa,0x3b +.byte 0x69,0xfd,0x61,0x6f,0xbb,0xfc,0x28,0xc0,0xff,0x37,0x2e,0xeb,0x31,0x59,0x57,0xfb,0xd3,0x0e,0xed,0x01,0x66,0x50,0x63,0x53,0xa2,0xd1,0x24,0x8c,0xc8,0x8d,0x80,0x03,0x2a,0x1e,0x11,0x3a,0xb9,0x6c,0xf4,0x5f,0x58,0xa2,0xd6,0x58,0x6b,0x85,0x61,0xd1,0xe7,0xdc,0x90,0x07,0x34,0x6e,0xb9,0x0b,0x0d,0xcb,0xd5,0xe3,0xc6,0x9d,0xb8,0x51 +.byte 0x37,0x61,0xd0,0x6c,0x2e,0xed,0xe0,0xbc,0x55,0x74,0x63,0x1b,0x42,0x17,0x6a,0x9c,0x91,0x1b,0x96,0x76,0xc8,0xe4,0x2b,0x2e,0x90,0xd9,0xe5,0x3f,0x56,0x1b,0x2f,0x93,0x81,0x86,0x2a,0xb4,0xdf,0x93,0xcb,0xfa,0x01,0x85,0xd9,0x26,0x46,0x46,0x97,0x2a,0x2e,0xb3,0x91,0xe4,0xcf,0xd9,0x01,0x5a,0x37,0xa6,0xca,0x5e,0xed,0xa9,0x94,0x35 +.byte 0x2c,0x69,0x5b,0x1e,0xf8,0x38,0x61,0x41,0x10,0xf6,0xe9,0x6e,0x96,0xee,0xe6,0x5f,0x78,0x14,0x93,0x12,0xd2,0x57,0xe5,0xf4,0x58,0x46,0xca,0xc8,0x75,0x59,0xbd,0xd0,0xe4,0x70,0x35,0xa5,0x4a,0xfd,0x54,0xe2,0x91,0x76,0x0e,0xe6,0xe3,0xbb,0x31,0x65,0x4b,0x18,0xa8,0xb4,0xfa,0xa6,0x7d,0x7a,0xa9,0x47,0x3d,0x2b,0x2e,0x66,0xac,0x5b +.byte 0x3e,0x5e,0x8c,0x27,0x0c,0x33,0x04,0x03,0x4e,0x5f,0xcd,0x6b,0x9c,0xaa,0x13,0x83,0x38,0xe9,0x38,0xcf,0x03,0x70,0x5a,0x0f,0x18,0xf5,0xec,0x64,0xf3,0x0c,0xe8,0xb1,0xa9,0x07,0x70,0xf7,0xde,0x0c,0x35,0xf5,0xe2,0xcd,0xed,0xe6,0x4d,0xac,0x5c,0x4d,0x3e,0x03,0x96,0x90,0x7b,0x4c,0x3e,0x18,0x42,0xc0,0xa7,0x23,0x12,0x8e,0x54,0xc1 +.byte 0xa1,0x2f,0x82,0x13,0xe6,0x1f,0x74,0xae,0x7b,0x4a,0xa4,0xbb,0xdc,0xc0,0x68,0x0f,0x83,0xbc,0xda,0xce,0xa2,0xe7,0xbe,0x18,0xcd,0x8b,0x35,0x05,0xa3,0x4b,0x6f,0xf0,0x53,0x12,0x42,0x2f,0x3c,0x09,0x87,0xb7,0xe3,0x36,0x29,0xe1,0xa2,0xb6,0x60,0x05,0xb9,0x66,0x80,0xe9,0xec,0x40,0x2a,0x55,0x78,0x5f,0x1c,0x5f,0xc3,0xc7,0x49,0x69 +.byte 0x87,0x97,0x5f,0xa5,0x31,0xa8,0x83,0x66,0x5a,0xd7,0xaf,0xf0,0x15,0xf3,0x01,0x62,0x9a,0x88,0x76,0x0f,0xb3,0xdf,0xf1,0xc6,0x34,0xc3,0xac,0x68,0x60,0x9a,0x91,0x03,0x13,0xea,0x0e,0x36,0x9c,0xf5,0x51,0xb7,0x0c,0xa4,0xeb,0xf0,0x41,0x85,0x54,0x05,0xed,0x7a,0xc2,0xba,0x3b,0xb8,0x1c,0x41,0x0d,0xbb,0xad,0x16,0x7e,0x64,0x4f,0x88 +.byte 0x7a,0x17,0xae,0x76,0x55,0x78,0x93,0xe8,0x99,0xa1,0x70,0x1f,0xf6,0x8a,0xb9,0xeb,0x41,0xb9,0x08,0xb8,0x9d,0x78,0x57,0xa1,0xe1,0x23,0xa0,0x03,0xd3,0x16,0xbc,0x16,0x24,0xed,0xc5,0x12,0x16,0x0a,0x8a,0x23,0x11,0x22,0xc2,0xfe,0x49,0x9d,0x3d,0x10,0x3d,0x4b,0xeb,0xab,0xcb,0x21,0x9d,0x9d,0xb1,0x64,0x87,0xe5,0x4d,0xb9,0xe7,0x10 +.byte 0x05,0xa0,0x55,0x2f,0xdf,0x53,0x5e,0x03,0xec,0x7e,0xe4,0x1f,0x9b,0x16,0x0c,0xfc,0xd9,0xf9,0x66,0x39,0x93,0x9e,0x49,0x34,0x97,0xd6,0xa5,0x56,0x00,0xf1,0xaf,0x08,0xeb,0x58,0xcf,0x87,0x02,0xc4,0xf1,0x24,0xe8,0x29,0x83,0xc9,0x5d,0x56,0x68,0xa2,0xaa,0xba,0xb3,0x86,0x23,0x59,0x8d,0x32,0x96,0x4a,0xbb,0xe9,0xf2,0x53,0xb2,0x87 +.byte 0x4a,0xf5,0xdc,0x23,0xd4,0x2f,0x36,0x70,0xb5,0x1d,0xee,0x47,0x51,0x6c,0x35,0x2a,0xad,0x35,0x74,0x1b,0x98,0xb5,0x33,0x2c,0x6d,0x4c,0xf8,0x39,0x07,0x92,0x6c,0xc7,0x65,0x10,0x64,0xcd,0x53,0xa3,0xcb,0xcc,0xe4,0xb2,0x46,0xb3,0xb7,0x44,0x01,0x92,0x44,0x12,0x23,0x25,0x3e,0x00,0xe3,0xeb,0x5f,0xe5,0x76,0x48,0x4e,0x4a,0x7f,0x36 +.byte 0xf0,0x0b,0x5e,0xc0,0x97,0x0d,0xc8,0xcf,0xd5,0xb8,0xc0,0x11,0x8d,0xb9,0x1e,0x31,0x0f,0x84,0x36,0x2e,0xe0,0x42,0xe6,0x02,0x9d,0xa4,0xdb,0xa2,0x76,0xfd,0xa1,0x95,0xe0,0x49,0xe6,0xf1,0xd2,0xae,0x27,0x6b,0x11,0x05,0x47,0xb0,0xaa,0x61,0x01,0xd4,0xe6,0xcd,0x9d,0x7e,0x33,0x5d,0xec,0x22,0x96,0x59,0xb7,0xc5,0x50,0x83,0xa4,0x66 +.byte 0x56,0xc7,0x43,0xa6,0xf7,0x5d,0xb2,0x45,0xc0,0x96,0xa0,0x5b,0xb8,0xed,0xae,0x29,0xb3,0x7d,0xbd,0x01,0xde,0xc0,0xe7,0xcc,0xe9,0x55,0x32,0x32,0xbf,0xdd,0x03,0x1b,0xb0,0x4e,0xff,0x53,0x1f,0x4b,0xc6,0xec,0x16,0x9d,0x5b,0x78,0x74,0xc4,0x75,0x51,0x8a,0x1c,0xae,0x6b,0xcd,0x9c,0x77,0x47,0xbf,0xd1,0x38,0x3e,0x9e,0xc0,0xad,0x16 +.byte 0xb7,0x15,0x6b,0xdc,0xad,0xe9,0x13,0xbc,0x48,0xc1,0xaf,0x69,0xce,0xc4,0xcc,0x9b,0x73,0xf9,0xd5,0x7c,0xab,0xf0,0xf1,0x9b,0xea,0xc6,0x0b,0x19,0x47,0x42,0xc1,0xa0,0x02,0x64,0x17,0xce,0x88,0x4f,0x16,0xa6,0xed,0xdb,0xfe,0x61,0xd3,0xd6,0xc0,0x11,0x30,0x16,0xd2,0x45,0xb3,0x7e,0x52,0xd0,0x94,0x77,0xf0,0x0e,0xbf,0x16,0xc0,0x4a +.byte 0x2a,0x5c,0xac,0x55,0x57,0xb1,0x41,0xb6,0xa3,0x68,0x8c,0x0a,0x66,0x15,0xb4,0xf5,0xd9,0x9a,0xa9,0x68,0xf2,0xbc,0x06,0xc5,0x7c,0xd1,0x18,0x55,0x9a,0x2d,0x94,0x2e,0x04,0x4b,0x7d,0x3c,0xb1,0xe3,0x03,0x7a,0xa7,0xe3,0xe5,0x63,0x49,0x7c,0x3f,0x0a,0xc5,0xbd,0xd3,0x0f,0x04,0xfd,0x99,0xf7,0xe6,0x05,0x35,0x66,0x17,0x05,0x85,0x3b +.byte 0x98,0x92,0x11,0x26,0xe2,0x21,0x52,0x1b,0x54,0x08,0xc8,0xf0,0x4e,0x75,0x22,0x3f,0xe8,0xb6,0x35,0xa4,0x02,0x52,0x70,0xc2,0xce,0x5a,0x00,0xe2,0xe2,0x92,0x8c,0x97,0xa7,0x1d,0x42,0x52,0x8b,0xf1,0x81,0xa7,0xce,0x60,0x46,0xbe,0xf0,0x1d,0x34,0xdf,0x73,0x2a,0xd6,0x9a,0x2d,0xf9,0xe3,0x91,0x05,0xe4,0x1f,0x31,0x11,0x30,0xb0,0xff +.byte 0x8f,0x61,0x74,0xf4,0xef,0xcd,0xf6,0xa4,0x9a,0xd2,0x5e,0xba,0x27,0xe8,0x78,0x38,0xfc,0x75,0xff,0x3b,0x6c,0xde,0x4a,0x46,0x47,0x8e,0x97,0x28,0xe4,0x23,0xe0,0x10,0x07,0xca,0xcb,0x6d,0xed,0x29,0xc0,0xee,0x98,0x96,0x7c,0x90,0x1f,0x89,0x12,0x0f,0xd5,0x28,0xcf,0x6e,0x4b,0x9b,0x2d,0xb3,0xcd,0x97,0xb8,0xeb,0x58,0x23,0x26,0xb1 +.byte 0xb4,0x95,0x11,0x1e,0xee,0x00,0xde,0x24,0x28,0xa6,0x3f,0x15,0xa2,0x9a,0xcb,0x9d,0xe3,0x04,0x5d,0xc3,0x60,0x97,0x14,0x2c,0x84,0x2b,0x69,0x9c,0x2a,0xbf,0x08,0xba,0xc4,0x38,0x36,0xaa,0x89,0x11,0x32,0x63,0x01,0xa2,0x44,0x5f,0x50,0xf0,0x5b,0x11,0x15,0xc8,0x80,0xc9,0xa6,0xe7,0x5d,0x70,0xa8,0x34,0x42,0x97,0x2a,0x60,0x99,0x20 +.byte 0xa6,0x60,0xc0,0x70,0x8d,0x2f,0x3f,0x8a,0x14,0x80,0x8a,0xbe,0x05,0xb3,0x50,0x16,0xaf,0x32,0xb4,0x35,0x3e,0x1d,0x31,0x42,0xdd,0x50,0xeb,0x04,0x82,0x4c,0x83,0x3d,0x8f,0xb6,0x1e,0xc2,0xa9,0xd2,0x30,0xba,0x33,0xdb,0x97,0x6d,0x2d,0x97,0x59,0x33,0xc0,0xf8,0xa5,0x59,0xc5,0x44,0x9c,0xf1,0x06,0xc4,0xf2,0x31,0x3e,0xff,0xb8,0x12 +.byte 0x00,0x4d,0x6c,0x2d,0xa1,0xc7,0x83,0xea,0x55,0x93,0x0e,0x89,0x76,0xbf,0x56,0x2a,0x99,0x62,0x54,0xad,0x2c,0xe8,0xf0,0xf9,0x70,0x18,0xa5,0x2b,0x24,0xac,0x59,0xc9,0x84,0xe3,0x1a,0x9d,0xa0,0xdb,0x1b,0x7f,0xd5,0x7e,0xb5,0xe0,0x86,0x36,0xc5,0x71,0x6a,0xab,0xdb,0xa5,0x84,0xf1,0x9e,0x9e,0xf6,0x1b,0xab,0x47,0x94,0x38,0x8e,0x5d +.byte 0x55,0xb4,0xf5,0xc3,0x59,0xc2,0x2c,0x6d,0x9d,0x28,0x7d,0x33,0xcd,0xc7,0xd6,0xdf,0x10,0xda,0x7c,0xd0,0x6c,0x91,0x88,0xd6,0x6b,0xe7,0x72,0x75,0x18,0xb1,0x87,0xe4,0xbb,0x10,0xe0,0xa3,0x0f,0xea,0x65,0x0a,0x70,0xc8,0xee,0x52,0x05,0x0a,0x27,0x39,0x66,0xda,0xd6,0xa6,0xfe,0x97,0x24,0x09,0x9d,0x20,0x76,0x4e,0x97,0x9d,0xa9,0x9f +.byte 0x76,0x20,0x27,0x57,0x5b,0xf4,0x76,0x1a,0x4b,0xcf,0x13,0x6c,0x9e,0x63,0x53,0x97,0xca,0x10,0xd6,0x90,0x7d,0xfc,0xe3,0x03,0x2c,0x6c,0x79,0x93,0x1a,0xae,0x0f,0x43,0xdb,0x75,0xde,0x56,0xa6,0x69,0x93,0xce,0x2d,0x94,0x56,0x77,0x90,0x19,0x71,0x7f,0x7a,0x99,0xbd,0x9c,0x79,0x62,0x00,0x49,0x3a,0x62,0x49,0x4b,0x92,0x65,0x8b,0xe2 +.byte 0xa8,0x3d,0xa5,0x89,0x23,0xac,0xea,0xf1,0xbf,0x38,0x84,0xd7,0xe2,0x65,0xb6,0xc7,0xbc,0x02,0x11,0xfd,0xe3,0x4c,0x57,0x38,0xd4,0x36,0x54,0xe8,0xbb,0x63,0x17,0xe9,0xda,0x82,0x50,0xf1,0x8c,0x34,0x4d,0x75,0x2a,0x64,0x49,0xaf,0x98,0xc3,0x1d,0xad,0x31,0xf3,0x90,0x23,0x39,0xf5,0xb5,0xf4,0x37,0x88,0x67,0x12,0x5d,0xfc,0xee,0xe5 +.byte 0x44,0x52,0x2c,0x78,0xb1,0x90,0xc1,0xc2,0x77,0x6e,0x31,0x3e,0xa0,0x36,0x87,0xb0,0xc6,0x6c,0x94,0xc2,0x43,0x4a,0x7b,0xa2,0x73,0xe7,0xa0,0xc3,0x4c,0xaf,0x4f,0xa6,0x92,0x1c,0x9a,0x6d,0xee,0xe8,0x4d,0xe1,0xe0,0xc7,0x67,0xcf,0xcf,0x7d,0x7f,0x0f,0x07,0x0d,0x6c,0x06,0x06,0xc2,0xc9,0x28,0xfc,0x8d,0xcd,0x23,0x01,0x97,0x5b,0x4d +.byte 0x1c,0xdb,0x34,0x51,0x6e,0xe2,0x56,0x24,0xd7,0xbd,0x12,0xc4,0x2f,0xb4,0x3b,0x02,0xaa,0x47,0xda,0x61,0xf6,0xca,0x44,0xa8,0x02,0xbf,0xbc,0x58,0xfb,0xa2,0xff,0xf3,0x54,0x59,0x5f,0xd7,0xa0,0x7c,0x83,0xa6,0xef,0xeb,0x71,0x51,0x74,0xa1,0x27,0x10,0x97,0x13,0x1f,0x42,0x91,0xdd,0xa8,0xf8,0xc7,0x60,0x90,0xca,0x2e,0xc8,0xaf,0x9f +.byte 0x65,0x1f,0x24,0x0a,0x30,0x5f,0xb9,0x4c,0xfb,0xcb,0xa3,0x96,0x5e,0xad,0xab,0xac,0x09,0x91,0xf5,0x96,0x1f,0xe0,0x96,0x14,0xc5,0xa0,0x26,0xa1,0xf1,0x91,0x80,0x38,0x7f,0x38,0xdc,0x98,0x96,0x20,0x46,0x50,0x20,0xd2,0x20,0xce,0x79,0xd5,0x81,0x60,0x97,0xb2,0xb0,0xeb,0x58,0x75,0x3c,0x99,0xf0,0xe0,0xfd,0xfc,0x90,0xc5,0xd1,0x3d +.byte 0x68,0x07,0xfd,0xa1,0x3f,0xeb,0x47,0xd0,0x58,0xe3,0xfa,0xbe,0xbf,0x20,0xdf,0x66,0x08,0x91,0xa4,0x5c,0x52,0x3e,0xdf,0x5c,0xb8,0xee,0xca,0xa6,0x89,0x06,0x97,0xb4,0x8d,0x60,0x35,0xb1,0xff,0x1e,0x39,0xf2,0x67,0xbc,0x71,0xee,0xeb,0x48,0x94,0x19,0x1a,0xee,0xc5,0xe2,0x7e,0x0d,0xf1,0xca,0xe8,0x2c,0xb0,0xaa,0x02,0x58,0x23,0x23 +.byte 0xce,0x37,0x5e,0xcb,0x58,0x40,0x2e,0x1a,0xa6,0x09,0x11,0x95,0xc4,0x6f,0x10,0xb0,0x15,0x22,0x48,0x67,0x74,0x6c,0x2f,0x4f,0x4a,0xb4,0x01,0xe5,0xa3,0x77,0xab,0xad,0xa4,0x04,0x22,0x71,0x58,0x4a,0x71,0xb1,0xe8,0xdf,0x43,0x18,0x0e,0x95,0x7c,0x8c,0x23,0x3a,0xf3,0x9c,0x20,0x60,0x20,0x69,0x51,0x28,0x7e,0x13,0x67,0x5c,0x7d,0x35 +.byte 0xfa,0x1b,0x04,0x8b,0xcf,0x42,0x6e,0x15,0x55,0xcd,0x04,0xdb,0x73,0xdb,0x47,0x5f,0x83,0x6e,0xd1,0x5a,0x15,0xa2,0xbb,0xf7,0xbb,0x84,0x58,0xce,0x75,0xe8,0xd2,0x92,0xd5,0xb7,0x76,0xf2,0x94,0x67,0x27,0x5f,0x32,0x91,0x3a,0xaf,0xd4,0x31,0xf8,0x92,0xce,0x63,0xb7,0x45,0x27,0xb4,0xb8,0x7a,0x1e,0x4e,0xde,0xcb,0xc8,0x5e,0xd3,0xbb +.byte 0x52,0x91,0xd5,0x72,0xad,0x98,0xec,0x07,0xa1,0x56,0xb4,0x8e,0x04,0xfa,0x48,0x3f,0x17,0x07,0xf7,0xef,0x92,0x61,0x69,0xaf,0xdd,0xfc,0x76,0x03,0xe2,0xe9,0xe2,0xbe,0x5c,0xf2,0x8a,0xc5,0x99,0x51,0x7f,0xa4,0xf1,0xac,0x16,0xec,0x16,0xf5,0xb8,0x95,0x88,0x87,0xdb,0x27,0x2e,0x63,0x12,0x31,0x7d,0x6b,0x2b,0xa0,0x9b,0xb5,0xf9,0x82 +.byte 0x42,0x04,0x94,0xee,0x60,0x6e,0x4e,0x54,0x9b,0xfd,0xeb,0x01,0x3a,0xad,0x42,0xeb,0x08,0x3c,0x6a,0xa3,0xf2,0x46,0xfb,0x18,0x59,0x2c,0xa3,0x0b,0x22,0x1d,0x5d,0x47,0xa6,0x8c,0x06,0x9c,0xa1,0xcc,0x20,0x67,0xbd,0xf0,0x5b,0x94,0x9f,0xc6,0x10,0x8c,0xc8,0x15,0x52,0xe3,0x19,0xa1,0x89,0xfd,0x99,0xad,0x4f,0x10,0x51,0x0a,0xe4,0x4b +.byte 0x02,0x7b,0x0d,0x73,0x2d,0xae,0xa4,0x68,0x1d,0xb6,0xcf,0x58,0x67,0xc0,0xd0,0xca,0x11,0x34,0x31,0x9e,0xa3,0xbc,0x12,0x28,0x1e,0x8e,0x5a,0x63,0xf5,0xda,0xf2,0x36,0x94,0x63,0x2c,0x39,0x3d,0xf9,0x80,0x9f,0xbf,0x8d,0xef,0x1f,0x15,0xc8,0xdb,0x62,0x58,0x7d,0xdc,0x0a,0x7f,0x87,0xaf,0x6d,0x2e,0xac,0x92,0x4f,0x51,0xdf,0x5e,0x75 +.byte 0x5e,0x0f,0x7c,0x51,0x49,0x88,0x0f,0x7b,0x49,0xa5,0x7c,0x41,0x4e,0x2a,0x0f,0xd0,0x0f,0x78,0xeb,0x42,0xfc,0x07,0x8a,0x8b,0x4e,0x3e,0xf2,0x42,0xc5,0x21,0x01,0x66,0xe2,0x50,0xf6,0x3d,0x28,0x1e,0xbf,0xdc,0x71,0x7f,0xc5,0x6e,0xc1,0xab,0x1a,0x33,0x49,0xdd,0xa2,0xb9,0x52,0xbe,0x93,0x97,0x97,0x7a,0xf0,0x22,0xa8,0xc5,0x01,0xc6 +.byte 0x76,0x6f,0xb6,0x2c,0x09,0x80,0x62,0x5b,0x84,0x05,0x7f,0x79,0x28,0x04,0x67,0xa2,0x0f,0xfc,0xbb,0x17,0xe2,0x85,0xe3,0xa0,0xf3,0x44,0x47,0x96,0x68,0x80,0xb2,0xbf,0xba,0x63,0x53,0x38,0x6c,0x3b,0xcd,0x3c,0xa4,0x10,0x48,0x80,0xd8,0x49,0x5a,0xf0,0x5c,0x38,0x02,0x02,0x5b,0xf2,0x77,0xa4,0xfd,0x16,0xfd,0x13,0xc8,0x8b,0x9b,0xcd +.byte 0xe1,0x8d,0x70,0xb6,0x3d,0x24,0x65,0xda,0x1a,0x42,0x6f,0x90,0x64,0x9a,0x9b,0xda,0x54,0x44,0xc0,0xe0,0xd7,0xfb,0x73,0x10,0x3c,0xcf,0xa6,0x04,0x99,0xd9,0x45,0xe5,0x74,0xfe,0xdf,0x81,0xac,0xc8,0x30,0xe5,0x66,0x45,0x02,0xca,0xcd,0xd7,0xe6,0x7b,0x0d,0xda,0xe1,0xa0,0xa1,0xa1,0x87,0x34,0x63,0x0b,0xa7,0x82,0x39,0x83,0xba,0x18 +.byte 0x0b,0x16,0x35,0x11,0x53,0x8d,0xbe,0x7d,0xa8,0x7e,0x3f,0xf4,0x71,0xc9,0x37,0x6f,0x1a,0xd9,0x3f,0x8e,0xc4,0xc1,0xd3,0x80,0xdf,0xee,0x0e,0x6b,0x23,0xf7,0xbc,0x42,0x93,0x7a,0x36,0x6f,0x03,0x24,0xb4,0x9c,0x62,0xa0,0xed,0xed,0x0b,0x66,0xa8,0x25,0xe6,0x1a,0xd4,0x13,0xd1,0x16,0x14,0x2b,0x90,0x7d,0x2e,0xa4,0xda,0xb2,0xf9,0x33 +.byte 0x54,0xf9,0x0a,0x04,0x27,0x03,0x14,0xd2,0xd7,0xe2,0xc1,0xaa,0xb6,0xe8,0xe5,0x4c,0xf2,0xdb,0x4c,0xc8,0xb3,0xa4,0xeb,0xbf,0x12,0x5c,0x9d,0x65,0xaa,0x9a,0x66,0x77,0x42,0xb4,0xd5,0x5b,0x1f,0x3b,0xd7,0x91,0x89,0x57,0x2f,0xd0,0x86,0x99,0xb2,0xc8,0xc1,0x31,0xde,0x33,0x43,0x36,0x81,0xdb,0x97,0x7b,0x17,0x3b,0xa5,0x99,0xdb,0x63 +.byte 0x2b,0x48,0x4c,0xa6,0x5c,0x6c,0xd8,0xc9,0x6e,0x72,0x39,0xbe,0x6e,0x55,0x7e,0x9d,0xb7,0x20,0x8d,0x8f,0x81,0x20,0x78,0xae,0xc6,0x1d,0xe0,0x2d,0xb1,0xe7,0x64,0xbb,0xd4,0xc8,0x08,0x61,0x14,0x29,0x08,0xbc,0x1a,0xeb,0xfa,0x64,0x33,0x91,0x7d,0x91,0x41,0x65,0x8e,0x4c,0x0c,0xb2,0x79,0xc3,0x01,0x68,0xfc,0xd6,0xbb,0x50,0xcc,0x07 +.byte 0xa5,0xf6,0x2c,0x5e,0x10,0xd6,0xa3,0x62,0x18,0xec,0xa2,0xf2,0x6b,0xad,0xcd,0x02,0x01,0x75,0xbb,0x36,0x27,0x56,0x0f,0x55,0x03,0xe0,0x57,0xe1,0x72,0xeb,0x66,0x00,0x21,0xff,0x9a,0xbc,0xc1,0x1e,0x2c,0x93,0xe6,0x4d,0x93,0x28,0x10,0x7d,0x67,0x6c,0xf1,0xa4,0xe6,0x3a,0xa6,0x30,0xc8,0x50,0x1d,0x8b,0x6e,0x7b,0x76,0x98,0x14,0x4e +.byte 0xed,0x84,0x67,0x2a,0x5f,0xac,0x0b,0x7b,0x47,0x40,0xb3,0x2d,0x7a,0xc1,0x23,0xdc,0x62,0xf8,0x8e,0x90,0x77,0xd4,0xf9,0x00,0x4b,0x67,0x04,0x72,0xf8,0xc9,0x2c,0x2d,0x0e,0x3c,0x3c,0xf3,0xfc,0xa8,0xe2,0x49,0xa4,0x00,0x82,0x98,0x72,0xa9,0xec,0xea,0xbd,0x3a,0x4e,0xd7,0x32,0xf1,0x11,0xf0,0x0d,0x9e,0xa2,0xe8,0xfe,0xcc,0x67,0xec +.byte 0xfc,0xd6,0xfe,0x83,0x5e,0x7c,0x2b,0xb3,0x42,0xf4,0x2d,0x9a,0xbe,0x20,0xd1,0x81,0x62,0xe9,0x59,0x19,0x28,0xdf,0x97,0x10,0x54,0xf7,0xde,0x60,0x51,0x6a,0xce,0x32,0x03,0x75,0x5c,0x25,0x25,0x82,0x9c,0x07,0xf7,0x2d,0xa8,0x1b,0x9f,0xd3,0x32,0x46,0x25,0x1f,0xb1,0xc5,0xbb,0x28,0x14,0x3e,0xed,0xa8,0x83,0x20,0xf4,0x9c,0x75,0xf4 +.byte 0xe6,0xc4,0x2d,0x05,0x88,0x31,0xfd,0x48,0xca,0x6c,0x7f,0xab,0xb4,0x77,0x93,0x1d,0x87,0xc3,0x4e,0xb8,0xad,0xb4,0x3d,0x37,0x7a,0xd2,0x77,0xff,0xc2,0xcb,0x9c,0xc7,0xbf,0x02,0x02,0x70,0xc9,0x9f,0x77,0x8a,0x7d,0xa7,0x9a,0x10,0xd1,0x0e,0xb7,0xec,0x61,0xee,0x77,0x24,0xe9,0x3d,0xcd,0x12,0xca,0xee,0x50,0xb0,0x27,0x5d,0xe5,0xac +.byte 0xa3,0x92,0xc7,0xd0,0x23,0x54,0xb1,0xe5,0x50,0xc3,0x15,0xd7,0x66,0x32,0x38,0x34,0xb1,0x59,0x1b,0xc3,0x59,0xe8,0xad,0x59,0x90,0x58,0x6e,0x02,0x40,0xb1,0x51,0x65,0x78,0x25,0x26,0x01,0xdd,0xcf,0x04,0xa2,0xfe,0xc3,0xbb,0x80,0x1c,0xb0,0x4e,0x9c,0x49,0x48,0xa3,0xe2,0xcc,0x81,0xc5,0xa8,0xd4,0xd5,0xe4,0xab,0x39,0xe7,0xe8,0x97 +.byte 0xc7,0x51,0xb4,0x5e,0x3f,0xe6,0xa7,0xcc,0x45,0x18,0xa2,0x6a,0xb3,0xa8,0x0b,0x7d,0xce,0x1a,0x97,0x4a,0x67,0xe1,0x3c,0x7c,0x4e,0xad,0x90,0xcf,0x2a,0x8f,0xb8,0xb6,0x96,0xaa,0x9a,0xc3,0x73,0xe6,0x71,0xdb,0x11,0x9b,0xd9,0xd9,0xfe,0xba,0x4a,0xf0,0x77,0xa4,0x15,0xb5,0xca,0xe1,0xb4,0x16,0x06,0x46,0xdf,0xc5,0x49,0x07,0x66,0xb3 +.byte 0xf5,0x30,0xe3,0xfb,0x44,0xac,0x80,0x3a,0x21,0xd9,0x5b,0x22,0x54,0x3a,0xae,0xbe,0xbd,0xf0,0x99,0x8d,0xb5,0x2a,0xf7,0xc9,0xf2,0xd3,0xfb,0x07,0x7c,0xd7,0x75,0x30,0x2a,0xcd,0x80,0xa8,0x2a,0x6a,0xb9,0x47,0xe2,0xa1,0xb0,0x76,0x6a,0x0f,0x9f,0x4a,0x56,0x3e,0xde,0xb3,0x89,0x12,0x25,0x63,0x1a,0x9d,0xea,0x64,0x08,0xc5,0x78,0xa7 +.byte 0x53,0xce,0xf8,0xb2,0xe5,0x97,0x3a,0xeb,0xd1,0x92,0xe1,0x4d,0xe0,0xf5,0x93,0x39,0x73,0xad,0x67,0xc9,0x0e,0x6b,0x16,0x4a,0x00,0xaa,0xb4,0xe6,0xa6,0xa5,0x67,0x95,0x90,0x04,0x5e,0x4d,0xc3,0x7f,0x6b,0xa1,0x50,0xb0,0x3b,0x72,0x0d,0xb3,0xec,0x9a,0x18,0x92,0x65,0x0c,0x2d,0x0f,0x94,0xd6,0x0f,0x95,0xba,0x4b,0xe6,0xc3,0x07,0x22 +.byte 0x0d,0x40,0xd4,0x0d,0x97,0x44,0xba,0x54,0x8c,0xf8,0x97,0x52,0x1f,0xa7,0xb2,0xe8,0x1b,0x0a,0xd5,0xde,0xff,0x1b,0x33,0x60,0x6a,0x28,0x68,0x36,0xb9,0x5a,0x3e,0x43,0x84,0x9a,0xb1,0x3d,0x3d,0xdb,0x1b,0xa2,0xc5,0x0e,0x2d,0xb5,0x5a,0xa5,0x36,0xe7,0xbf,0x7e,0xc3,0x76,0xad,0x1e,0xb5,0x49,0xc2,0xd5,0xa2,0x69,0x97,0x45,0x43,0x3e +.byte 0xeb,0xcd,0xdf,0x4f,0xab,0xb3,0xe8,0x49,0xaa,0x9c,0x9c,0x58,0x1e,0xc8,0x1c,0x79,0xe9,0x16,0x1d,0xfe,0x54,0xac,0x55,0x18,0x10,0x73,0x97,0xdc,0xbe,0x45,0x63,0xfb,0x48,0x41,0x88,0xb4,0x0b,0x3a,0x1d,0x65,0x40,0x1b,0x10,0x66,0xeb,0xbe,0xed,0xc7,0x6c,0xd5,0x0c,0x19,0x85,0x23,0xb1,0x38,0xb3,0x4b,0xcd,0xc7,0xc5,0x06,0x18,0x40 +.byte 0xbd,0xef,0x9f,0x2e,0x3a,0x71,0x33,0x05,0x30,0x71,0xca,0xe9,0x7a,0x2c,0xe7,0x83,0x4e,0x3d,0x4b,0xc8,0xc7,0xcb,0x74,0x9c,0xa2,0xc7,0xbb,0x8c,0x44,0x0d,0xd8,0xb3,0x01,0x7c,0xdf,0x79,0xee,0x47,0xcb,0x91,0x6f,0xc3,0xfd,0x0f,0xfb,0xf8,0x6b,0x9b,0x00,0xaf,0xf6,0x69,0x82,0xa5,0x58,0x54,0x22,0x7f,0x4b,0xee,0xa7,0x03,0xdb,0xb6 +.byte 0x5f,0x12,0xe1,0x04,0x43,0x17,0xec,0xd4,0xdd,0x39,0x28,0xfa,0xa3,0x09,0x5e,0x14,0xaf,0x6b,0xfe,0x0c,0x65,0x01,0x13,0x75,0x3d,0xe7,0x6d,0xd9,0xda,0x1d,0x13,0xc1,0x56,0x40,0x50,0x95,0x65,0x8f,0xad,0x51,0x3f,0x13,0x05,0x2f,0x83,0xcd,0xca,0x8b,0x75,0xa2,0x39,0x61,0xde,0xd7,0x36,0xf9,0x1d,0x43,0x5b,0xc4,0x9a,0xc9,0xfc,0xa8 +.byte 0xf4,0x76,0x90,0x91,0xe8,0x52,0x5b,0x84,0xe7,0xc9,0x8e,0x7d,0x84,0xba,0xb1,0x32,0x12,0xce,0x06,0x9e,0x98,0x83,0x1f,0x7f,0x31,0xd7,0xf0,0x8a,0xa2,0xca,0xae,0xb3,0x50,0x51,0x93,0xfb,0x2f,0x43,0x0a,0xee,0x06,0x85,0xec,0xb8,0xf1,0x73,0xb1,0x65,0x37,0x05,0x8e,0x68,0xf7,0x7a,0xff,0xe7,0x17,0x08,0x5e,0x19,0x75,0x3d,0xf9,0x5e +.byte 0xd5,0x25,0xf6,0x3b,0x99,0xb9,0x96,0x42,0x7a,0x37,0x8f,0x0d,0xde,0x22,0x83,0x89,0xf0,0x77,0x1f,0x22,0x42,0xc7,0xb5,0x70,0xcb,0xfd,0xf0,0xa9,0x87,0x8e,0x1f,0x01,0x9a,0x26,0xa6,0x8c,0x41,0xb9,0x12,0xd6,0xf2,0x5b,0xe5,0xfd,0xdc,0x74,0xbd,0xa1,0xc8,0xf7,0x3b,0x8c,0xe1,0x1d,0x42,0xb4,0x07,0x24,0x18,0x84,0x94,0x8a,0xce,0x00 +.byte 0xbd,0xd7,0xb0,0xfd,0x8f,0x0a,0xd3,0x75,0xa4,0xe8,0xfc,0x09,0xa9,0xa3,0x57,0x68,0x79,0x0e,0xef,0x37,0x46,0xd5,0x3b,0x8c,0x0d,0x67,0xbc,0x2c,0x5d,0x3e,0xf7,0xcc,0x9c,0x9e,0x81,0x62,0xc8,0xec,0x38,0x20,0x07,0x66,0xe4,0x83,0x15,0x13,0x3b,0x47,0x23,0xd9,0x46,0xaf,0x65,0xe1,0x40,0x2d,0x14,0x84,0x72,0xc1,0xbf,0xbe,0x81,0xc4 +.byte 0xcb,0x04,0x16,0x5e,0x2f,0x60,0x3a,0x8e,0x1a,0xd3,0xa2,0x00,0x25,0x6c,0xb7,0xdb,0x0d,0x20,0x99,0xb8,0x45,0x54,0xbf,0xc4,0x52,0x52,0x92,0x7d,0xcd,0xa1,0x9a,0x12,0x5e,0x27,0xe9,0xcf,0x79,0x9d,0xa8,0x6c,0xcd,0x37,0x20,0x08,0x09,0xc6,0x94,0x53,0x00,0x04,0xf5,0x3b,0xea,0x00,0x1b,0xc3,0x02,0xff,0xbc,0x18,0x1f,0xb7,0xf7,0x26 +.byte 0xe8,0x8b,0xc4,0x5f,0xf7,0xbe,0x9b,0xb3,0xba,0xae,0xbd,0x9c,0x3f,0x95,0xf7,0xcd,0x2b,0x40,0xf4,0x1c,0x6f,0xd7,0x52,0xe1,0xa7,0xdc,0x79,0xa4,0x88,0xff,0xfc,0xcf,0xfb,0xbb,0xe6,0xef,0xb6,0x31,0xac,0x24,0xa7,0x40,0xea,0x76,0xa2,0x34,0x6c,0xb1,0xfb,0x96,0x6b,0xfa,0xdd,0x60,0x70,0x73,0xb8,0xfd,0x66,0x3d,0xf9,0x63,0xc9,0x04 +.byte 0x70,0x20,0x35,0xca,0x04,0xb8,0xb3,0x4f,0x24,0x64,0x54,0xc2,0xd9,0x4d,0x8b,0xad,0x07,0xad,0xc5,0xb9,0x84,0xac,0x7c,0x65,0x4b,0x98,0x1d,0x09,0x23,0x95,0x5c,0x85,0x26,0xe5,0x8e,0xec,0xeb,0xc3,0xd5,0x15,0x9c,0x37,0x4e,0xf3,0x3c,0x97,0x92,0x75,0x99,0x48,0x48,0x52,0x4b,0x7b,0x93,0x54,0xd7,0x4f,0x7f,0xe5,0x51,0xdc,0x74,0x85 +.byte 0x9a,0xae,0xbd,0xf8,0xe6,0xe8,0x3f,0x1b,0xee,0x8b,0xf4,0xd8,0x5c,0x6c,0x46,0x6e,0x1d,0xaf,0x67,0x27,0x9a,0x39,0x4e,0x6b,0x99,0xcc,0xc0,0x66,0x54,0xbf,0x60,0xf6,0x24,0x64,0xfd,0x16,0xbf,0x56,0xb2,0x07,0x87,0x46,0xa6,0xef,0x40,0x67,0x78,0x2f,0x78,0x49,0x81,0x25,0xbd,0xa1,0xcf,0x78,0x68,0x25,0x8e,0x93,0x0a,0x4b,0xe1,0x92 +.byte 0x33,0x9c,0x13,0x70,0xd4,0xdf,0x74,0x34,0x8f,0x21,0xb9,0x51,0xd7,0x74,0xa9,0x02,0x6e,0xdd,0xb2,0xb4,0x6e,0x2a,0x95,0xdb,0xe4,0xaf,0x17,0xf5,0x9b,0xa5,0xc1,0x72,0x36,0x35,0x02,0x37,0x1c,0x38,0xaa,0x81,0x76,0xc6,0x1c,0xc3,0x2c,0xc5,0x45,0xaf,0x03,0xea,0xe6,0x14,0x51,0x44,0x84,0x9e,0x32,0xfe,0x4b,0x47,0xe9,0xb4,0x12,0x96 +.byte 0x13,0x6f,0x4c,0xed,0xe4,0xb0,0x79,0x7b,0xe5,0xc0,0x37,0x87,0x78,0x28,0x42,0xf7,0xd4,0xde,0xfc,0xd2,0x23,0x11,0x09,0xa5,0x11,0xc3,0xc4,0xf5,0xe0,0x2b,0x47,0x01,0x63,0xf2,0x85,0x1f,0x45,0x28,0xae,0xd3,0x29,0x04,0x1a,0x4b,0x83,0xab,0xf2,0x35,0x3a,0x40,0x2c,0x8d,0xb3,0xc7,0x47,0x0d,0xd1,0x3c,0xd0,0x1c,0x6b,0x5d,0x9b,0x4e +.byte 0xdf,0x36,0x8d,0xc6,0x54,0x9e,0x61,0x51,0xf1,0xd2,0xa4,0x39,0xad,0x4a,0x14,0xa1,0x0b,0xd3,0xae,0x91,0x1a,0x29,0xeb,0xc5,0x75,0x88,0x13,0x1e,0x96,0xdd,0x6f,0x86,0x92,0xaa,0x37,0x16,0x95,0x86,0xbc,0xb1,0x35,0xbf,0x5f,0x75,0x40,0x46,0xe1,0x6f,0x2f,0x33,0x2d,0x13,0x35,0xef,0xca,0x09,0x04,0xe4,0x42,0xef,0x69,0x66,0xda,0xa6 +.byte 0x01,0xda,0x09,0xfd,0xb1,0x40,0x8d,0xaa,0xdd,0x08,0x0d,0xf5,0xf1,0xd6,0xc6,0x11,0x3b,0xbd,0xd3,0x04,0x70,0x76,0xaf,0xec,0x9b,0xcc,0x6a,0x1d,0xeb,0x95,0x4a,0x01,0x0a,0x03,0x62,0x00,0x32,0xb3,0xe0,0xd1,0x36,0xb6,0xeb,0xde,0x4b,0x5f,0x35,0x79,0x07,0x4a,0x0d,0xa1,0x8c,0xde,0x6b,0xd2,0xca,0x71,0x64,0x73,0xf7,0x9c,0x1d,0x95 +.byte 0x5c,0xdc,0xb9,0x4f,0x00,0x2e,0x86,0x3d,0x81,0x7b,0x05,0xa5,0x9e,0x03,0xa3,0x62,0xcf,0x22,0x78,0x0b,0xfe,0x09,0x3e,0x62,0x93,0x19,0x6e,0x47,0x7d,0x92,0x4a,0x0b,0xae,0xcb,0x37,0x4d,0x5a,0x3a,0x7a,0x68,0xde,0xb2,0x7e,0xd7,0xda,0x5c,0x45,0xd2,0x0f,0x1d,0x03,0xbc,0xed,0xd8,0xe5,0x2e,0x26,0x10,0x82,0x46,0x5a,0xe0,0x13,0x32 +.byte 0xf8,0xb9,0x18,0x8c,0xbd,0xb4,0xb3,0x8c,0x2f,0xb0,0x5d,0x0b,0xf3,0x8f,0x5a,0xda,0x8b,0xda,0x39,0xfe,0xe6,0x66,0x95,0x3f,0xfe,0x49,0x89,0xbf,0x43,0x36,0x77,0xc7,0x6d,0xea,0x92,0x5c,0x71,0xa6,0x29,0x50,0xb0,0x2f,0xed,0x89,0x9f,0x2c,0xd6,0x6b,0xfa,0xbe,0x62,0x9f,0x62,0xc7,0xe3,0x2e,0xd4,0xf2,0x2c,0x9c,0x98,0x37,0x38,0x5e +.byte 0x81,0x6c,0x9e,0xcc,0xff,0x0f,0xfa,0xfa,0xe8,0xdd,0x2e,0x2d,0xb5,0x92,0x44,0x5e,0x2f,0xe1,0xd0,0x6c,0xc3,0xb9,0x11,0x95,0x70,0x4b,0x01,0xa0,0xc1,0x5e,0xe8,0x1d,0x40,0x16,0x9b,0x6e,0x29,0x1b,0x13,0xb9,0xda,0x39,0xbd,0x40,0x42,0xe2,0x06,0x35,0x57,0x2f,0xa8,0xf5,0xa7,0x00,0x60,0x07,0x26,0x21,0x6b,0xe6,0x23,0xa2,0x2a,0x70 +.byte 0xeb,0x85,0xcb,0xa9,0x73,0x31,0x62,0xf7,0xb0,0x90,0xd7,0x26,0xc1,0xd3,0xd7,0xcc,0x15,0x72,0x86,0xa6,0x0f,0x4a,0x24,0x14,0x5d,0xcd,0xbe,0xad,0x7d,0xf0,0x05,0x39,0x0c,0x10,0xbe,0x11,0x9a,0x36,0x9f,0x60,0x41,0xc6,0x7c,0xab,0x54,0x8a,0xac,0xc4,0xea,0xbd,0x43,0xeb,0x19,0x5a,0x8d,0x05,0xd1,0x83,0x58,0x92,0xb8,0xc6,0x75,0x56 +.byte 0x2c,0x58,0xb8,0x2d,0xe1,0x42,0xb4,0x0b,0xc9,0x97,0x79,0xb8,0x62,0xd0,0x15,0xd1,0x5d,0x0d,0x57,0x83,0xe4,0xba,0x73,0xa2,0x27,0xb8,0x56,0x64,0x28,0xaf,0xd2,0x58,0xe3,0xe6,0x12,0x01,0x6e,0x6a,0xfb,0x81,0x57,0xcd,0x32,0xc2,0x42,0x2a,0xe2,0x51,0x4a,0x4c,0xf8,0x69,0x0e,0xc0,0xe6,0x9f,0xf4,0x46,0x4b,0x60,0xcc,0x41,0x03,0xa4 +.byte 0x14,0xf0,0x15,0xb5,0xe5,0x39,0xfd,0x69,0xee,0xce,0x23,0x3a,0x50,0x66,0xdb,0xf4,0xe4,0x31,0x23,0xe9,0x06,0x93,0xdd,0x38,0xbc,0x2d,0xb9,0xf2,0x64,0x39,0x2f,0x1b,0xa9,0x71,0x0c,0x68,0xf7,0xb0,0x5b,0x74,0xe5,0x08,0xc6,0x5d,0xbe,0xb8,0xf7,0x40,0x0e,0xb4,0xe6,0x76,0x0c,0x14,0x8f,0x9d,0x25,0x95,0x6c,0x05,0x78,0x68,0x8a,0xa6 +.byte 0x80,0x24,0x8a,0x0b,0x6a,0xd7,0xfc,0xec,0x36,0xba,0x57,0xdd,0x49,0x82,0x3c,0x5f,0x9d,0xf4,0x57,0xac,0x16,0x99,0xed,0x73,0xa6,0xb0,0x2c,0x23,0xdb,0xf8,0x45,0x22,0xf4,0x82,0x16,0xc4,0x68,0x2f,0xe7,0x8c,0x85,0x6e,0x3c,0x43,0xdd,0x3d,0xea,0x90,0xeb,0xf4,0xef,0xf1,0x36,0x48,0x15,0x29,0x07,0x96,0x51,0xb5,0x78,0xa1,0xa3,0x59 +.byte 0x18,0x4d,0x11,0x5d,0x5e,0x67,0x69,0x28,0x29,0xcb,0xeb,0xbc,0x8f,0x17,0x12,0x57,0xaf,0xda,0xb5,0x86,0xef,0x59,0xdf,0xb1,0x6b,0x6a,0x33,0x66,0x67,0xd1,0x42,0xee,0xec,0x65,0xf2,0xeb,0x97,0x17,0x4e,0x01,0x3f,0x4d,0xb4,0x06,0x8e,0xf9,0xa8,0x79,0xb6,0xf1,0x67,0x8b,0xff,0x0b,0x5f,0x93,0x70,0x76,0x54,0xae,0x7b,0x0d,0x4a,0xbc +.byte 0xf7,0xdc,0x11,0x64,0xb3,0x6a,0xd1,0x69,0x45,0x1b,0x57,0xfc,0xb5,0xfe,0x86,0xb2,0xd6,0xde,0x82,0x23,0x86,0x6b,0x21,0x78,0x8b,0x2e,0x96,0xf8,0x04,0x8b,0xba,0x15,0xae,0x33,0x91,0x27,0x88,0xe3,0xc1,0xe7,0xf8,0xc3,0xa6,0xb6,0x73,0xec,0x84,0x95,0x22,0x45,0x58,0xb1,0x50,0x99,0xde,0x8a,0x37,0x41,0x9f,0xb8,0x27,0xd6,0xd8,0xaa +.byte 0x0f,0x0e,0xac,0xe4,0xd0,0x38,0xcf,0x2f,0x03,0x6f,0x3d,0x8a,0xd7,0x51,0xd6,0xf3,0x17,0x76,0xb5,0x0f,0xc5,0xf8,0xa7,0x0a,0x91,0xaa,0x8d,0xbc,0x15,0xd6,0x46,0xb9,0xdc,0x18,0x47,0x9c,0xd9,0x13,0xa5,0xb1,0xb5,0x45,0x2f,0x03,0x32,0x5c,0x8b,0xac,0x42,0x5b,0xd9,0x1a,0x41,0x1e,0x27,0xf9,0x92,0x72,0xc1,0xc7,0xc1,0x50,0x25,0x22 +.byte 0x7a,0x00,0x41,0x1f,0x2d,0x28,0xaf,0x41,0x96,0x8e,0x97,0x3b,0x36,0x80,0x16,0xe6,0x51,0x8f,0x07,0x13,0xd9,0x81,0x79,0x94,0x92,0xaa,0xb9,0xb6,0x39,0xf2,0x4d,0x24,0x6b,0x77,0x25,0x7e,0x47,0x6c,0xc7,0x62,0x3d,0x96,0x21,0xac,0x1a,0xf0,0x5f,0x5d,0x5a,0x7e,0x17,0xdd,0x47,0xd5,0x19,0x0a,0x85,0x3e,0xd5,0x6b,0x52,0x12,0xe2,0xbc +.byte 0x43,0x79,0x28,0x1d,0x72,0xcc,0xa6,0x6c,0xea,0x9b,0xe9,0x04,0x34,0x2c,0x41,0x3a,0x64,0xe8,0xcb,0x12,0xfa,0xd5,0x45,0xad,0xe8,0x3e,0xa2,0x5c,0xb8,0x83,0x52,0xdb,0x0c,0x98,0x24,0x76,0xd2,0x00,0x62,0xff,0xac,0xd7,0x11,0xee,0xcf,0xfb,0xdd,0x65,0xd2,0x75,0xb0,0x25,0x4e,0x76,0x3f,0xa2,0x1a,0xae,0xee,0xc1,0x59,0x1b,0x0c,0x42 +.byte 0x70,0x42,0x06,0x00,0x64,0x31,0xe0,0xce,0x3a,0x91,0x5e,0x9d,0x56,0x83,0xab,0xa7,0x73,0xc2,0x15,0x29,0xba,0xf9,0x1d,0xc8,0x4b,0xc6,0x3a,0x9e,0xab,0xd7,0xfd,0x17,0x8d,0x80,0xf0,0xa1,0x8a,0x5a,0x7a,0x80,0xd8,0x1f,0xa9,0x5b,0xec,0x68,0x99,0x3a,0x66,0xcc,0x5a,0xdf,0x5f,0xe9,0xd5,0x6a,0xf2,0x2c,0x7e,0xf8,0xa7,0xdf,0x0c,0x59 +.byte 0xbd,0x85,0xf0,0xc9,0x91,0x44,0x9c,0x86,0x24,0x60,0xfb,0xe9,0xff,0x3c,0xa7,0xa7,0x6d,0x4b,0x17,0xb3,0x24,0x99,0x14,0xbc,0x64,0xd0,0x41,0xaa,0xcd,0x26,0xd3,0xa3,0x51,0xeb,0x25,0x1d,0xb2,0x7d,0xf1,0xf3,0xf3,0xf0,0x3a,0xe0,0xb5,0xa9,0x24,0xc3,0x78,0x4a,0xef,0x9b,0x34,0x93,0xf8,0x0c,0x71,0x10,0x5b,0xf0,0xe7,0x08,0x4d,0x5f +.byte 0x74,0xbf,0x18,0x8b,0x48,0x8d,0xd7,0x23,0x81,0xed,0xa2,0x29,0xa9,0xdb,0x91,0xf6,0x61,0x7c,0xca,0x1e,0xe0,0xa7,0x21,0x9d,0xfc,0x04,0x3a,0x87,0xbb,0xf9,0xa4,0x3b,0xbb,0xc4,0x89,0xa1,0x7f,0xdc,0x83,0xfa,0x5e,0x0f,0xcf,0xdf,0xf6,0x41,0xd3,0xa3,0x76,0x76,0x44,0x3e,0x01,0xee,0xce,0xf6,0xc3,0xb9,0x49,0x43,0x6e,0xee,0x09,0x4c +.byte 0x87,0xe6,0xa3,0xf5,0xa0,0x8d,0x99,0xb3,0x3b,0xd6,0xeb,0x27,0xf9,0x34,0x68,0xc8,0x04,0x80,0xb2,0x4d,0xb6,0xde,0x98,0x81,0xe0,0xec,0xc9,0x06,0xde,0x86,0xee,0xf0,0x87,0xb8,0x67,0x0e,0xce,0xf8,0xc5,0xb1,0xd2,0xe1,0xe3,0x53,0x1d,0xbe,0x6c,0xdd,0x5e,0x83,0x02,0xf5,0xc8,0xda,0xcf,0x3c,0xcb,0x88,0x2c,0xca,0x65,0x65,0x9e,0x71 +.byte 0x4e,0xf2,0x98,0x96,0xb2,0x54,0xb4,0x96,0xdc,0x84,0xb5,0x39,0x74,0x9b,0x61,0xcf,0x52,0xef,0xb3,0x0c,0x62,0xc9,0x92,0xe1,0xe5,0x6f,0x2f,0x0c,0x61,0x0d,0x6f,0xfd,0xd8,0x84,0x25,0xba,0x20,0x59,0x00,0xf5,0xa9,0xf1,0x77,0x6e,0x9a,0x3d,0x93,0x69,0xde,0xaf,0x9a,0xe6,0xe3,0xfd,0xb9,0xd3,0x04,0x82,0x18,0xa1,0x5b,0x9b,0xe0,0x29 +.byte 0x4c,0x64,0xf5,0x95,0x57,0x25,0xd3,0x04,0x8b,0x4a,0xe9,0x57,0x6f,0xd1,0x8c,0x40,0x73,0x49,0x32,0x93,0x3f,0x26,0xb4,0x6b,0xd3,0xd4,0x90,0xb7,0xe1,0xaf,0xa0,0x9a,0xc0,0x86,0xb7,0x5e,0xec,0x29,0xaa,0x03,0x4e,0x56,0xb5,0xcd,0x46,0x7d,0xe0,0x26,0x3d,0x5f,0xd3,0x55,0x86,0x68,0x4a,0xc5,0x42,0x5d,0x60,0x3a,0x39,0x6f,0x45,0xb9 +.byte 0x6a,0xea,0xf4,0x05,0xc8,0x24,0xf8,0xcd,0xe5,0xeb,0xca,0x3a,0xe7,0xb4,0x59,0x83,0x5a,0xa5,0x1d,0xe4,0x6a,0xaa,0x35,0x00,0x42,0x32,0xa5,0x6c,0x3e,0xc1,0xc2,0xc4,0x9d,0x2e,0x43,0x57,0x79,0x52,0xf6,0x1e,0x02,0xb8,0x9b,0xcd,0xf0,0x3d,0x57,0xa3,0x6f,0xf7,0x12,0x54,0x6c,0x63,0x0d,0xb2,0xba,0xff,0xa1,0xf6,0xf5,0xdf,0xa5,0xed +.byte 0xda,0xdf,0x56,0x72,0x1e,0xc5,0x3f,0xad,0xd0,0xf9,0x38,0x94,0x51,0xe3,0xa4,0xb4,0xbf,0xd5,0x24,0x2a,0x90,0xfe,0xd4,0x34,0x6c,0xa8,0xc8,0x1c,0x9a,0xaf,0xac,0xff,0x5b,0x67,0x44,0x4c,0x4d,0xa7,0x59,0x2c,0x9f,0x67,0x07,0x25,0xe1,0x7f,0x4e,0x4a,0xaa,0x8f,0x5d,0xd1,0x26,0x0d,0x73,0x9b,0x69,0x5d,0xdf,0xb2,0xa5,0x89,0xbb,0x82 +.byte 0x0b,0x09,0xf3,0x11,0x76,0x5d,0x2d,0xad,0xc3,0xc1,0x15,0xbc,0xaf,0xa2,0xe6,0xd5,0xb0,0x6d,0x80,0xa6,0xda,0xfa,0x3b,0x9c,0xaf,0xff,0x98,0x40,0x83,0x3a,0xe1,0xb8,0x98,0x0e,0x97,0x00,0x89,0xfb,0x37,0xcb,0x81,0x36,0x34,0x33,0xbb,0x5c,0xd0,0x51,0x37,0xd6,0xb5,0x6c,0x3a,0x61,0x0a,0x27,0x23,0x96,0xa9,0x79,0x8d,0xf0,0xbe,0x31 +.byte 0xba,0xdc,0x89,0x4e,0x88,0x98,0xe4,0x10,0x15,0x8a,0xe1,0xae,0xe8,0x6d,0xa4,0x61,0x56,0x14,0x84,0x59,0x64,0xc2,0xaa,0xd8,0xfd,0x19,0xfc,0x17,0xf1,0xfc,0x6d,0x17,0xcb,0xea,0x7a,0x47,0x00,0x75,0x17,0xf3,0x62,0xfe,0x3a,0xbc,0x28,0x1a,0x0e,0x88,0x48,0x63,0x4a,0xcb,0x20,0x46,0xa4,0x75,0xf8,0xf1,0x7a,0xd6,0x92,0x7f,0x92,0xfa +.byte 0x91,0x95,0x2f,0xbc,0x5b,0x42,0xf1,0x55,0xaf,0x91,0xa2,0x3b,0x29,0x5c,0xc8,0x5e,0x97,0x91,0xa2,0x2e,0xd2,0xa8,0x1c,0xf6,0x16,0xc5,0x15,0xf2,0x42,0xb3,0x41,0x59,0x52,0x8d,0x94,0x52,0xc4,0xc6,0x2c,0xdd,0x6f,0x01,0xea,0x62,0x42,0x83,0x7e,0x2e,0xf8,0xb8,0xc1,0xf3,0x71,0xd1,0x11,0x14,0x7a,0x3d,0xcd,0xec,0xe0,0x79,0x8b,0xbd +.byte 0x28,0x12,0x60,0xf0,0x66,0xf1,0x1c,0x1c,0x19,0x07,0x8c,0x26,0xff,0xcc,0x72,0x9a,0xbd,0x12,0xe6,0x2b,0x2b,0xb1,0x32,0x04,0x98,0x92,0xd9,0x24,0x97,0x59,0x46,0xc6,0x11,0xe1,0x31,0x14,0x46,0x27,0x96,0xb1,0x06,0x81,0xd5,0xe8,0xff,0x45,0x3d,0x3c,0x04,0x9a,0xd8,0x0b,0x1f,0x41,0x03,0xba,0x1b,0x3e,0x4e,0xd5,0x7d,0x48,0x00,0x68 +.byte 0xb3,0xe8,0xe0,0xc8,0x3c,0xcf,0xdc,0xbe,0x29,0x90,0x64,0x51,0x18,0xdc,0xcd,0x87,0xcb,0xa8,0x3d,0xf8,0xb4,0x73,0x11,0xdc,0x7a,0xcb,0xa4,0x81,0x9e,0x3a,0x72,0xde,0x18,0x36,0x86,0x15,0x91,0xbc,0xeb,0x7f,0xe2,0xfb,0x6b,0xf1,0x5a,0x3d,0x05,0x50,0xeb,0xcf,0xd2,0xcc,0xf2,0x62,0xb1,0x32,0x46,0x14,0x95,0x4e,0xdf,0x73,0x64,0x61 +.byte 0x5f,0x3d,0xbf,0x52,0x3e,0xa7,0x55,0x01,0x9a,0xd8,0x01,0xef,0xf7,0x60,0x6f,0x83,0x43,0x6b,0x4c,0xa2,0xc8,0x04,0x34,0x70,0x70,0xa1,0x99,0xc9,0xa7,0x54,0x1e,0x87,0x99,0xb3,0xec,0xfe,0xe9,0x2d,0x39,0xef,0x6f,0x4d,0x8c,0xf2,0x4b,0xd2,0x12,0x5d,0xb6,0xa7,0x0b,0x04,0x3b,0x69,0xdd,0x9a,0x18,0x2d,0xd9,0x22,0x00,0x38,0x15,0x9a +.byte 0x6e,0x6c,0x0c,0x84,0x32,0x32,0xb2,0xf9,0x61,0xef,0x74,0x35,0xec,0xcc,0xd7,0xbc,0x9d,0xe9,0xcd,0xe3,0xa0,0xa5,0x15,0x0a,0xfe,0x1f,0x37,0x35,0x2b,0x7c,0x42,0x50,0x81,0x67,0x52,0xb7,0xa7,0x9e,0x8f,0xda,0x64,0xc0,0xc0,0xc3,0x93,0xc7,0x9d,0x41,0xb8,0x4b,0x69,0x80,0x13,0x88,0x8a,0x07,0xf9,0x47,0xad,0xc9,0x4f,0x3d,0xc7,0xba +.byte 0xd2,0xf2,0x7a,0xa0,0x38,0xbe,0xe1,0xfa,0x83,0xda,0x79,0x29,0x7f,0x4c,0xfa,0x0e,0x9b,0x59,0x1e,0x89,0x76,0x05,0x60,0x84,0x13,0x63,0x11,0x14,0x20,0xa9,0x2b,0xd0,0xc3,0x58,0xcc,0x73,0x3e,0x2c,0xa8,0xa7,0xa5,0xd0,0x2f,0x03,0xfc,0xa9,0x5d,0xdd,0xcd,0x40,0x91,0x90,0x1f,0xda,0x0a,0x73,0x58,0xd8,0x84,0x05,0x45,0x01,0x84,0x52 +.byte 0x8b,0x9b,0x17,0x98,0xa8,0xc4,0xc3,0xb5,0x94,0xd5,0x32,0x86,0xe9,0x10,0xe5,0xa5,0x99,0x8d,0x57,0x3e,0x32,0x25,0xfa,0xb4,0x5c,0x3a,0x5f,0xa6,0x2d,0x7d,0x4e,0xd3,0x7b,0xee,0x41,0x23,0x5e,0xc2,0xc9,0x91,0xf4,0x21,0xe0,0x4f,0x0d,0x87,0x30,0x53,0xf1,0x0e,0x63,0xe8,0x5b,0x3d,0xee,0x4a,0xc8,0x78,0x38,0xa2,0xa4,0xe8,0x72,0x41 +.byte 0xf1,0x37,0x30,0xe3,0x3d,0x93,0xc6,0x4b,0x10,0x0d,0xf6,0x20,0x15,0x0a,0x77,0x41,0xd5,0x7d,0xcb,0xf9,0xda,0x3b,0x17,0xa6,0xf1,0xe4,0x56,0xd4,0x65,0x7b,0x33,0xe4,0xef,0x34,0xfb,0x8c,0x9f,0x87,0x86,0xfc,0xce,0x90,0x60,0x77,0x57,0xc0,0xe4,0x37,0x2c,0xdf,0x41,0x95,0x85,0x89,0x4e,0x77,0x3f,0xa0,0xc7,0x55,0x4c,0x3f,0xa8,0x10 +.byte 0xd2,0x87,0x7e,0xd2,0x97,0xa1,0x6c,0xe7,0xec,0xaa,0xf6,0x93,0x13,0x2e,0x10,0xed,0x5b,0x7a,0xed,0x53,0xb4,0x55,0xaa,0xb4,0x67,0x78,0x07,0x5f,0xc2,0xd2,0xf1,0x7b,0x98,0xf0,0x82,0xf6,0x7c,0xb2,0xd4,0xa8,0xc2,0x53,0x39,0x21,0x7f,0xa0,0x76,0x37,0x1a,0x69,0xb3,0x49,0xd4,0xc3,0xd1,0xcb,0x31,0x76,0xec,0xaf,0x75,0x66,0x31,0x65 +.byte 0xeb,0x44,0x63,0xa0,0x13,0xf5,0x9e,0x67,0x40,0x41,0x76,0xce,0xd3,0xd6,0x91,0xb1,0x3a,0x07,0xff,0x38,0x1e,0xaf,0x55,0x57,0x55,0xd1,0x94,0x63,0xd3,0x81,0x16,0x59,0x68,0x01,0xe8,0x6d,0x7d,0x7a,0xa1,0x39,0xb9,0xa2,0xba,0x79,0x9d,0x69,0x00,0x13,0x59,0x2f,0x3d,0xef,0x10,0xe7,0x3c,0x02,0x7d,0xa3,0xa8,0xee,0x31,0x1a,0xad,0xa6 +.byte 0xdb,0x1b,0xe3,0x4a,0xdd,0x60,0xfb,0x4e,0xa6,0x49,0xbb,0xea,0x34,0x5d,0x21,0xac,0x83,0xa4,0xb5,0x23,0x8e,0x69,0xb3,0x25,0x14,0x8d,0xc2,0x89,0x8d,0xcf,0x38,0x46,0x18,0xb6,0x0c,0xce,0x45,0x22,0xeb,0xb5,0xb2,0xed,0xe5,0x0f,0x35,0x8f,0xdd,0xa1,0x15,0xd6,0x50,0x5b,0xe1,0x04,0xa7,0x32,0xc0,0xc9,0x03,0x56,0xc2,0x33,0xe8,0x16 +.byte 0x1c,0xd4,0x7a,0xfd,0x6b,0x4d,0x04,0xc0,0x9e,0xf8,0x32,0x9f,0x52,0x24,0xac,0xc5,0xb0,0xa1,0x63,0x77,0xc9,0x14,0xaf,0x46,0x60,0x67,0x52,0x81,0xbb,0x3f,0xf5,0x7f,0xad,0xef,0x7c,0x3a,0x71,0xc1,0x1e,0xea,0x4a,0xe0,0xd7,0xdd,0x31,0xf2,0x4b,0xdf,0x53,0x8a,0xc9,0x59,0x7a,0xb2,0x6f,0x7e,0xc0,0x00,0xa4,0x0d,0x09,0x9c,0xf7,0x22 +.byte 0x22,0xa9,0x37,0xde,0x3b,0xe1,0x74,0x85,0xcf,0xc5,0xb7,0x7b,0x0a,0xfd,0x6b,0xfa,0x98,0x49,0xa9,0x7f,0x52,0x23,0x0e,0xc0,0x4a,0xb3,0x81,0xa6,0x96,0x46,0x24,0xe7,0x01,0xd1,0xf2,0xac,0x31,0xb2,0x5e,0x61,0xe3,0xab,0xf8,0x1b,0x28,0xca,0xa2,0x78,0x3c,0xdf,0x8a,0xc1,0x17,0x46,0x9d,0xbd,0x69,0x31,0x41,0x8b,0xc1,0xc8,0xaa,0x68 +.byte 0xd5,0x35,0x65,0x49,0xfe,0xc6,0xa4,0x99,0xcc,0x62,0x4b,0x81,0x1c,0x21,0xa4,0xd8,0xe3,0xb3,0xe9,0x7c,0xf8,0x33,0x2f,0x21,0xa5,0x88,0xf2,0x8e,0x7d,0xee,0x00,0x00,0x62,0xcf,0x07,0x37,0x00,0x68,0x6c,0xb5,0x2d,0xc6,0x1b,0xcc,0x86,0x71,0xf0,0x4f,0x68,0xaf,0x0c,0x9a,0x25,0x69,0x71,0x2d,0xb5,0x87,0x90,0x02,0xd3,0xfc,0xbb,0x63 +.byte 0xa9,0xf1,0x13,0x4f,0xda,0x71,0x69,0x5c,0x0b,0xfd,0x3f,0x6c,0x2f,0x0b,0x4f,0x07,0x72,0x2d,0x2f,0x77,0xcb,0xa4,0xe4,0xbd,0x30,0xc7,0xe4,0xd9,0xf9,0x5d,0x2f,0x65,0xe4,0x41,0x5c,0xbc,0x03,0xa2,0x01,0xf9,0xfa,0x06,0x14,0x52,0x08,0x44,0x67,0x75,0x4e,0xbd,0x66,0x4a,0x26,0x3a,0x49,0xc4,0xba,0x02,0xb3,0x8e,0xa2,0x42,0xe7,0x92 +.byte 0x03,0x6d,0x61,0x10,0x73,0xd0,0x6f,0xe1,0x6e,0x67,0xff,0xb0,0x29,0x62,0x70,0x3c,0xeb,0x80,0xed,0x11,0x06,0xd6,0x18,0x60,0xe1,0x3d,0x21,0xa9,0xe9,0xd2,0x92,0x00,0x9e,0x13,0xf2,0x5d,0x38,0x71,0xdf,0xf3,0x5f,0x8a,0x90,0x45,0xf0,0x47,0x1f,0x0b,0x2d,0x12,0xf7,0x10,0x07,0x6a,0x52,0xe8,0xe2,0x26,0x9b,0x4b,0x7a,0x5f,0x97,0xb6 +.byte 0xf1,0x6d,0x47,0x3a,0x1e,0xc8,0x1d,0x78,0x5b,0x0a,0xb8,0x03,0xb1,0xe1,0xe7,0xc8,0xf0,0xe7,0x00,0xac,0xfc,0xd7,0x4a,0xde,0xaa,0xcd,0x0f,0xaf,0xf7,0x56,0x8e,0xed,0xfb,0xbe,0x7e,0xfe,0x62,0x75,0x7a,0x07,0x96,0xff,0xc3,0x21,0x35,0x71,0xb9,0x73,0x41,0xc2,0xb0,0xa8,0x6a,0x65,0x48,0xc4,0x50,0x31,0xe2,0xba,0xf4,0xe9,0x6c,0x03 +.byte 0x26,0x2c,0x77,0xfe,0x1a,0xd5,0x96,0xf6,0x6d,0xe4,0x14,0xfc,0xe2,0x1d,0x20,0x0c,0x14,0xa2,0x39,0x63,0xe5,0x16,0xef,0x6a,0xeb,0xe1,0x69,0xb8,0x67,0xa0,0x91,0xc1,0x8f,0xed,0xff,0xdf,0x26,0x1f,0xc3,0xb7,0x5d,0xe9,0xd2,0x72,0xe2,0x54,0x27,0x46,0x4f,0x33,0x25,0x59,0xaf,0xfa,0x87,0x4b,0x5a,0xda,0x7d,0x15,0x71,0x5d,0xb4,0x8d +.byte 0x95,0xb6,0x09,0x5b,0x8b,0xeb,0xe6,0xba,0xc8,0x2f,0x8f,0x9e,0xa8,0xab,0x6a,0xa6,0x26,0xb6,0xf5,0x80,0xd0,0x7d,0xe7,0x4c,0x18,0x5a,0x72,0x8f,0x3e,0x90,0xe5,0xa1,0x16,0x33,0x66,0xc3,0x7b,0xf6,0xb6,0xdd,0x15,0x94,0x6d,0xca,0x8b,0xd7,0xa5,0x05,0xfb,0x5f,0x4e,0x94,0x6a,0xcc,0x54,0xed,0xeb,0xc0,0xb1,0xe1,0xc9,0x7f,0xc4,0x90 +.byte 0x2f,0x50,0x34,0x81,0x3c,0x83,0x47,0x3c,0x5a,0xb2,0x33,0x63,0xb6,0xa7,0xfb,0x59,0x70,0x87,0xea,0x7f,0x30,0x22,0xb4,0x54,0x48,0xfb,0x40,0xd2,0x7b,0xc9,0x49,0x80,0x18,0x27,0xc2,0x75,0x09,0x06,0x0a,0x83,0x1e,0x7a,0xf1,0x97,0xa1,0xc2,0x34,0x3f,0x6d,0xd6,0x2d,0xfe,0x5d,0x8b,0xfd,0x64,0x5d,0x6f,0x7f,0xbf,0x4e,0x01,0xb7,0x46 +.byte 0xfb,0xf7,0xd5,0x6f,0x5f,0x74,0xc8,0xca,0x9a,0x2e,0x74,0x08,0xe9,0x3d,0x8b,0xfd,0x97,0x38,0x72,0x67,0xbb,0x8a,0x34,0xee,0xf5,0x3a,0x2b,0x5e,0x64,0x64,0x06,0x7c,0x60,0x0f,0x7a,0x88,0x45,0x1b,0x69,0x90,0xb8,0xb0,0x4d,0x71,0x80,0x77,0xa8,0xaa,0x9f,0xd3,0xc6,0xfb,0xb8,0x12,0x1e,0x0c,0xf4,0x94,0x67,0x44,0xdc,0xb1,0x95,0x0e +.byte 0x51,0xd1,0x06,0x69,0x92,0xbf,0xe6,0x67,0xe3,0xcd,0x0b,0x87,0x03,0x12,0x2e,0xa7,0x23,0x72,0x13,0xe9,0x89,0xcf,0x15,0x43,0xc0,0xa7,0x68,0xbd,0xce,0xec,0x28,0xb6,0x85,0x36,0xbe,0x52,0x5d,0x57,0xfa,0x7d,0x72,0xd1,0x4b,0x88,0xc9,0x64,0xbc,0x7a,0x18,0xe5,0x0e,0xab,0x19,0x81,0xee,0x11,0xbe,0xe0,0x68,0x44,0x81,0x49,0x3f,0xd8 +.byte 0x12,0xd1,0x8b,0xc1,0xe0,0x51,0xf7,0xc3,0x64,0xa7,0xc5,0x61,0x9b,0x32,0x6d,0xf0,0x6c,0xa6,0xaf,0xf9,0x4a,0xdf,0x94,0xaf,0xc8,0xf2,0x86,0xb1,0x4e,0x2e,0xa9,0xb4,0x35,0x82,0x15,0x8a,0x58,0xf3,0x03,0x2f,0x78,0x07,0x8f,0xb9,0x16,0x7c,0x42,0xfa,0x36,0xaa,0xa5,0x66,0x62,0x44,0xca,0xa6,0x55,0x95,0x27,0xdb,0x48,0xea,0x0a,0x1d +.byte 0x5a,0xae,0x5c,0xad,0x99,0xfe,0x00,0xf1,0xb9,0x94,0xda,0x09,0x48,0x52,0x9d,0xfc,0xb4,0xb2,0x80,0x19,0x16,0xf8,0xcd,0x68,0x10,0xec,0x1c,0x16,0x3f,0xbb,0x42,0xb4,0x10,0xe3,0xdb,0xaa,0xe4,0x3f,0x2e,0x8e,0xb5,0xce,0xba,0x8f,0xf2,0xb5,0x76,0x98,0x15,0xa7,0x77,0x4b,0x1c,0x30,0xb7,0x6f,0xc9,0xa9,0xa4,0x64,0x59,0xab,0x3a,0x43 +.byte 0x74,0x33,0xab,0xe1,0x3e,0x5e,0x79,0x1c,0xa5,0xb4,0x87,0xe1,0xcb,0xea,0x0e,0x02,0x4b,0x01,0x84,0xbc,0xdc,0x75,0xf4,0x2c,0x2b,0x8d,0xc8,0x5f,0xb5,0xba,0x6b,0xb2,0x4a,0x7c,0xe7,0xaa,0x61,0xa5,0x0c,0xf8,0x02,0x73,0xec,0x11,0x13,0x6b,0x31,0x07,0xaa,0x79,0x78,0x86,0x01,0x77,0x5e,0xa3,0x09,0xd1,0xec,0xaf,0x7d,0xb7,0x65,0xa9 +.byte 0xd8,0x99,0xd2,0xd7,0x6d,0x32,0x97,0x0f,0x0e,0x51,0x0d,0x69,0x81,0x7a,0x94,0x48,0x31,0xe1,0xff,0x26,0x4d,0x30,0x49,0x93,0xfb,0x6e,0xdb,0xea,0xaf,0xcb,0xb4,0xa9,0xc9,0x9f,0xeb,0xca,0x52,0x36,0x26,0xac,0x47,0xda,0x02,0x3d,0xd0,0x93,0x8b,0x61,0x78,0x26,0x54,0x32,0xe8,0x14,0xac,0xf3,0xd2,0x46,0x04,0x12,0x89,0x9f,0xf6,0x11 +.byte 0xf5,0x64,0x83,0x66,0x00,0x50,0x55,0x05,0xb5,0xf6,0x58,0x9f,0xbf,0x4b,0x95,0xf1,0x7f,0x0b,0xb4,0xf7,0x63,0xea,0x6f,0xf7,0xb0,0x20,0x53,0xfe,0x95,0xbc,0xc4,0xe2,0xff,0x75,0xbd,0xab,0x73,0x68,0x44,0x18,0xf7,0x6b,0x04,0x46,0xde,0x6c,0x65,0xb2,0x22,0x4e,0x25,0x8e,0xba,0x7c,0x3a,0x6f,0x80,0x99,0xb4,0xe7,0xf9,0x97,0x68,0x40 +.byte 0xa9,0x96,0xfc,0x6b,0xcf,0x08,0x75,0xe4,0xda,0x6f,0xaf,0x71,0x4f,0x31,0x62,0x31,0x18,0xbf,0xb9,0xa0,0xcc,0x9e,0xa7,0xa2,0x27,0x2a,0xb8,0x6b,0xc0,0x93,0xf5,0x1f,0x41,0x25,0xa7,0x4d,0x9f,0xb4,0x12,0x5c,0x27,0x38,0x5d,0x80,0x88,0xa3,0xb8,0xb2,0xc3,0xd2,0xfb,0x1d,0xba,0x7b,0xac,0x51,0x0b,0x71,0x58,0x3f,0xe5,0xfa,0x36,0xb8 +.byte 0xc7,0x90,0x46,0xd0,0x5a,0x94,0xf0,0x7d,0x6e,0x6c,0x4c,0xb1,0xfa,0xdb,0x97,0x1e,0x19,0xf2,0x1f,0x4e,0x05,0x25,0x0e,0xbd,0x47,0x94,0x2a,0xd3,0x1a,0xbe,0x4a,0x04,0xaa,0x57,0x02,0xc9,0x42,0xc1,0x74,0xcd,0xe1,0x78,0x8b,0xff,0xc1,0xc6,0x17,0x4e,0x71,0xc4,0x2c,0x00,0x23,0x56,0x57,0x1f,0x47,0xd8,0x93,0x80,0xc1,0xc5,0x7b,0xd9 +.byte 0x25,0x30,0xac,0x72,0x37,0x00,0xd2,0xbc,0xc7,0x33,0x73,0xf9,0x14,0x86,0x7c,0xb0,0x28,0x14,0x5d,0xbf,0xbd,0x98,0x1c,0x00,0x05,0x19,0x2b,0x0a,0x55,0xad,0xb4,0x06,0x28,0x58,0x03,0xa1,0xe6,0x27,0xa3,0x32,0x5f,0x41,0xd5,0x6a,0x0b,0xbc,0x0f,0xaa,0xf5,0xc1,0xa7,0x09,0x2f,0x86,0xda,0x56,0xb0,0x04,0x49,0xd4,0x20,0xc6,0xa2,0x6c +.byte 0x27,0x56,0x4e,0xcd,0x22,0x46,0xac,0x0f,0xd3,0x99,0x69,0x83,0xc4,0xae,0x9f,0x88,0xed,0x9c,0xba,0xfb,0xf3,0x66,0xc7,0x3d,0x65,0x55,0xd0,0xe3,0x04,0x03,0x6a,0x02,0x5c,0xbf,0x9f,0x23,0x34,0x79,0xe1,0xbe,0x7d,0xad,0xb4,0xc7,0x9e,0x4d,0x80,0x73,0x6d,0xe5,0x37,0x03,0xac,0xa3,0xf4,0x93,0xad,0x1e,0xf3,0xcd,0xb8,0xe2,0xeb,0x30 +.byte 0xc7,0x50,0xfe,0x0a,0x63,0x5e,0x0f,0xc9,0xd0,0x06,0x58,0xc1,0x6e,0x65,0x54,0x54,0x5d,0xaf,0xf1,0xe8,0x3e,0x95,0xe3,0x70,0x40,0x8e,0xb8,0x4d,0x76,0xda,0xa8,0xe8,0x9e,0x88,0xd8,0xaf,0x67,0x83,0x3b,0x77,0x65,0x58,0x00,0xbb,0xf7,0xe9,0x52,0xf0,0xba,0x0d,0x0a,0x59,0x28,0xe4,0xa7,0xfb,0x06,0xe5,0x34,0xbe,0xcf,0x10,0x7c,0x73 +.byte 0xa8,0xf3,0xa2,0x93,0x96,0x9e,0x4f,0x9b,0x3c,0xd1,0x9f,0x64,0x5b,0x8c,0xc1,0x89,0x66,0x67,0x13,0x52,0xb2,0xaa,0x6b,0x8e,0xea,0x97,0x27,0x20,0x2e,0x64,0xec,0xf0,0x72,0xc9,0x54,0x8a,0xed,0x78,0x3a,0xd7,0x4f,0xc2,0xba,0xc3,0xb8,0x64,0x7f,0xe4,0x5f,0x3d,0xf7,0xe5,0xd9,0xf1,0x8d,0xb1,0xd2,0xf6,0xcc,0x34,0xd8,0x7d,0x16,0xca +.byte 0x47,0xaf,0x85,0xe5,0x4a,0x57,0xb9,0x5a,0x9e,0xff,0xb8,0x83,0xec,0x7c,0xb8,0x07,0xf5,0xd3,0x31,0x31,0x2b,0xf0,0x40,0x46,0xc3,0x63,0x27,0xe4,0xb0,0x3b,0x84,0x0d,0x50,0x05,0x80,0x0c,0xfa,0x8b,0x0e,0x33,0x6b,0x10,0xd4,0xf5,0x4f,0x8b,0x2d,0x9e,0xc5,0x01,0x92,0x52,0x62,0x1a,0x89,0x1e,0xca,0x48,0xc3,0xd6,0xfa,0xd2,0x94,0x7c +.byte 0x77,0x6e,0xa7,0xeb,0xd7,0x4f,0xe8,0xc8,0xc2,0x71,0xb2,0x9e,0x86,0x30,0x18,0xfd,0x4c,0x56,0x4c,0xd0,0xa4,0x84,0x37,0x02,0x02,0x6a,0x8d,0x57,0x6b,0xc2,0x06,0xd1,0x8a,0xdb,0xa0,0xcc,0x31,0xf9,0xcf,0xbf,0xf2,0x29,0x7c,0x26,0xac,0x1f,0x03,0x20,0x26,0x76,0x03,0x6f,0xa5,0xb5,0x33,0xfb,0x02,0xe8,0xf6,0xe9,0x5e,0xb1,0x36,0x7c +.byte 0x96,0x56,0xb1,0x98,0x2d,0x9c,0x38,0x9b,0xd4,0x56,0x28,0xcc,0xdb,0x08,0xd3,0x42,0x00,0x35,0x24,0xd9,0x74,0xa2,0x0d,0x55,0x21,0x06,0xb7,0xf9,0x6a,0xa0,0x81,0xc1,0x2d,0xb6,0x67,0x91,0x92,0x24,0x36,0xfd,0x2e,0xd8,0xc0,0xcb,0xc8,0x87,0x1a,0x41,0x11,0x70,0xbf,0xd2,0xe7,0x82,0x10,0x74,0xdf,0x65,0x46,0x19,0x6b,0xb4,0x89,0xeb +.byte 0x9e,0xcf,0x79,0x35,0xba,0x25,0x75,0x32,0x64,0x6a,0xfb,0xaf,0xe5,0xed,0x85,0x98,0x34,0x75,0x31,0x40,0xbb,0xd8,0xe3,0xf5,0xa7,0xa2,0x9a,0x9e,0xcd,0xc4,0xf8,0xd8,0x15,0x6c,0x64,0x0c,0x6c,0x16,0x60,0xe9,0x40,0xf4,0x7a,0x14,0x37,0x7b,0x45,0x9b,0x0e,0x29,0x7a,0x1a,0x88,0x10,0xb9,0x2b,0xee,0x13,0xbd,0x8a,0xde,0x7a,0xe9,0x30 +.byte 0xe8,0x39,0x77,0x74,0xf5,0x2f,0xe3,0x10,0x19,0x89,0x28,0x21,0x3a,0x68,0x38,0xb4,0x4d,0x20,0x8d,0x7d,0xec,0x3f,0xf7,0x61,0xbf,0x53,0x32,0x3b,0xb8,0x6a,0xc9,0x58,0xeb,0xd4,0x33,0x0e,0xee,0xc7,0xb9,0x5e,0x3d,0x17,0x7e,0x36,0xa2,0xa6,0x94,0xb1,0x56,0xb6,0x8e,0x94,0x05,0x50,0x69,0x52,0x4f,0x31,0xe5,0x97,0x18,0xde,0x8f,0xb7 +.byte 0xff,0x2e,0x6f,0x1b,0x6a,0xda,0xfd,0xa1,0xd1,0x9a,0x4e,0x6a,0x1b,0x46,0x71,0x52,0x76,0x66,0xf9,0x70,0x8d,0x7d,0x97,0xb0,0xc3,0x8d,0xbc,0x35,0x26,0xe8,0x0b,0x80,0xc7,0x58,0x19,0x22,0x70,0x33,0x06,0xeb,0xcf,0x26,0x22,0xe0,0x97,0x91,0xbf,0xd6,0x94,0x05,0xe1,0x84,0xe2,0x31,0x66,0x57,0xc7,0x1e,0x36,0x30,0x50,0xaf,0x72,0xb3 +.byte 0x31,0xad,0x84,0xcc,0xb5,0x76,0x03,0xe1,0x56,0x97,0x87,0x36,0xf5,0xaa,0x97,0x99,0x38,0xa5,0xf5,0xb7,0x42,0x86,0x3b,0x2f,0x8a,0xb9,0x8e,0x6a,0x0b,0xe0,0xca,0xbc,0x4c,0x6c,0xc1,0x3f,0xbe,0x45,0xef,0xd2,0x57,0xcd,0x29,0xfb,0xfb,0xa5,0x79,0xf2,0xb1,0xbb,0x4b,0x55,0x26,0x2f,0x5c,0x84,0x5e,0x6a,0xc6,0xa9,0xd5,0x23,0xe4,0xd1 +.byte 0xe5,0xf0,0xbc,0x50,0x6a,0x2a,0xaf,0xa2,0x7c,0xcc,0x36,0x95,0xf9,0x5c,0x04,0x6d,0x04,0x31,0xbe,0x1d,0xb2,0x50,0x97,0x8f,0xdf,0x8a,0xed,0x4e,0x4e,0x0a,0x0b,0xfc,0xfc,0x1d,0xa9,0x6a,0x76,0x6a,0x33,0xd7,0x0a,0xcf,0xd5,0xdd,0xc6,0x62,0xe5,0x59,0x02,0xba,0x9c,0x43,0x32,0x8a,0x0e,0x47,0x91,0x00,0x07,0x47,0x93,0xc4,0xad,0x29 +.byte 0x33,0x57,0x15,0x45,0x44,0xb9,0xf3,0xc4,0xe6,0xd2,0xb9,0x3a,0x44,0x16,0x32,0x8d,0x57,0x78,0xac,0xf5,0xdb,0xa2,0x93,0x97,0x64,0x08,0x9b,0x66,0x4b,0xa0,0x64,0xab,0xa0,0xd6,0x0e,0x2c,0xa1,0x25,0x16,0x5c,0x6f,0x82,0xff,0x8e,0x89,0xfb,0xca,0x03,0xa6,0xf8,0xa1,0xf6,0x87,0x02,0x5c,0x90,0xcb,0x33,0xa0,0xc0,0x90,0xc2,0x1f,0xdd +.byte 0x5c,0x50,0x93,0xf2,0x8b,0x87,0xa1,0x73,0xda,0x5f,0xa3,0x20,0xd4,0xe7,0x45,0xd7,0xea,0x4b,0x5d,0xd6,0x80,0xfc,0x2d,0xdc,0x45,0x6a,0xf6,0xaf,0xd4,0x7a,0x91,0x64,0x15,0x17,0xbf,0xc7,0x58,0x54,0x7c,0x08,0x42,0x4f,0x8d,0xab,0x9b,0xd0,0x1d,0x57,0x71,0x50,0xa7,0xe3,0xb4,0xf2,0x14,0x0c,0xd7,0x2f,0x7c,0x8b,0x17,0x61,0x98,0xfa +.byte 0x19,0x34,0xb9,0x65,0xc5,0x5c,0xfe,0xa3,0x80,0x6f,0x99,0xec,0xfa,0x06,0x22,0x71,0xa9,0x10,0x2a,0xcf,0x12,0xb3,0x17,0xe5,0x59,0x3a,0xaa,0xcb,0x55,0x5f,0x45,0x9d,0xe9,0x29,0x56,0x34,0x11,0x62,0x6e,0x0a,0x95,0x12,0x5d,0xd4,0xa2,0x28,0x05,0xf1,0x0f,0x2d,0xa0,0x1e,0xe1,0x2b,0x42,0x6c,0xf0,0xe6,0x47,0xe0,0xb2,0xbd,0x89,0x20 +.byte 0x5e,0x24,0x05,0xec,0xf1,0x33,0xfc,0xa9,0x2f,0xef,0x3a,0x1f,0xfe,0x39,0xfe,0x01,0x09,0x0a,0x2a,0xe0,0x96,0x1e,0xde,0xad,0x96,0xaa,0x48,0xeb,0x8a,0xe6,0x54,0xbb,0x5d,0x7a,0xbe,0x4a,0xbf,0x96,0xf6,0x15,0x7a,0x70,0x6f,0xee,0xe7,0xf5,0x53,0xaf,0xe1,0xbb,0xaf,0x58,0x51,0xd4,0xa0,0xc6,0x44,0x03,0x47,0x33,0xce,0x58,0x62,0xd3 +.byte 0x93,0x21,0xa5,0xa5,0xb4,0xef,0x1d,0x93,0xcc,0x8c,0xf7,0x14,0xe3,0xec,0x40,0x52,0x47,0xe6,0xbc,0xe6,0x85,0x69,0xd0,0x15,0xad,0x24,0x21,0x4f,0x26,0x01,0x60,0x0f,0x0f,0xcb,0x7e,0x14,0x01,0xe1,0x90,0x11,0x06,0x17,0x38,0x2d,0xd8,0x26,0xe2,0x7c,0xd6,0xef,0xe0,0x59,0xf0,0x8c,0x2a,0xbd,0xba,0xe5,0x8b,0x07,0x56,0xd3,0x35,0xb3 +.byte 0x64,0x83,0x9e,0xb9,0xb9,0xeb,0x88,0x03,0xff,0x14,0xf3,0x8b,0x14,0xd3,0xa4,0xac,0x08,0xd9,0x75,0xf6,0x2c,0x9d,0x7f,0xc8,0x9d,0x11,0x3b,0xd1,0x71,0x14,0x4b,0x2a,0x6d,0x20,0x83,0x32,0x35,0x7e,0x1f,0x20,0xa6,0x69,0xbf,0xcf,0x22,0xd9,0xa2,0x57,0x4b,0x66,0xb1,0x9f,0x5a,0xa8,0xaa,0xb8,0x11,0x1d,0x45,0x28,0xac,0x86,0x09,0x37 +.byte 0xe9,0x1f,0xef,0xb4,0xe0,0x6f,0x75,0xad,0xe5,0xd8,0x25,0x06,0x19,0xb4,0xa8,0x07,0x78,0x79,0x43,0x63,0x40,0x26,0xbd,0x28,0x50,0x2d,0x29,0x26,0xf9,0xfc,0x5c,0x71,0x8f,0xfd,0x62,0x12,0x7c,0xd0,0x67,0xb3,0x65,0xef,0x31,0xc0,0x99,0xc1,0x54,0xfc,0x32,0x6e,0x25,0x56,0x77,0x6e,0xc1,0x6b,0x11,0x50,0x7c,0xa1,0x0b,0x97,0x8a,0xfe +.byte 0x0f,0x5b,0x16,0x93,0x83,0xe0,0xd8,0xb7,0xbf,0xa8,0x90,0x6d,0xd6,0x8b,0x4b,0xd9,0x17,0xbb,0xe8,0xd9,0xbb,0x5f,0x39,0x4a,0x33,0x7c,0xb3,0x12,0x99,0x1e,0xfc,0xb2,0x05,0x91,0x67,0xdf,0x8d,0x0b,0x55,0xfb,0xd1,0x8d,0x0c,0x9b,0x80,0x81,0xee,0x8c,0x05,0xe2,0x16,0x30,0xad,0x1f,0x88,0x04,0x75,0xc1,0xe5,0xec,0x32,0xf8,0xa0,0x5b +.byte 0x21,0xf6,0xd8,0x13,0x26,0xe4,0xa1,0x32,0xa8,0x93,0x91,0x5d,0x33,0x45,0x83,0x72,0x52,0x59,0x23,0x84,0xf6,0x7b,0xe2,0x90,0x20,0xc6,0x40,0x33,0xa9,0x94,0xcd,0xb9,0xab,0xe4,0x44,0x0b,0x06,0xbb,0x4c,0x2c,0x2a,0x5e,0x4d,0x57,0xb7,0xe0,0xb8,0x86,0x74,0xab,0xea,0x37,0x1c,0xa0,0xa6,0x21,0x33,0xc7,0xf5,0x24,0x7d,0x14,0xc8,0x8b +.byte 0x9d,0x8f,0x31,0x23,0x29,0x9d,0x11,0x42,0x07,0xe8,0x2c,0xec,0x7d,0x70,0x8d,0xb5,0xa4,0xca,0x33,0x30,0x03,0x75,0x17,0xa1,0x10,0xe7,0x6b,0x87,0xf9,0x0b,0xef,0x43,0xef,0xf8,0x24,0xc2,0xf1,0x7a,0x1a,0x70,0x7e,0x2f,0xd4,0xeb,0x97,0x40,0xa6,0xe6,0x2d,0xc1,0xd8,0x3b,0xee,0xa4,0xda,0xd3,0x50,0x41,0x18,0xbf,0xad,0x66,0x02,0x85 +.byte 0x60,0x14,0xcf,0xce,0x50,0x88,0x5e,0xb6,0x73,0x11,0xbb,0x6a,0xca,0xb1,0x46,0x8e,0xbb,0x58,0x2c,0x63,0x61,0x20,0xec,0xc9,0x98,0x0c,0xdb,0x5c,0xe5,0x47,0xb5,0x89,0xe9,0x14,0xc8,0xbc,0x35,0xf2,0xa7,0x2d,0x84,0xcc,0x61,0xc8,0xb6,0x9d,0xeb,0xcb,0x8b,0x73,0x90,0x6d,0x06,0xc9,0x42,0xcf,0xd2,0x15,0x80,0x2d,0x39,0xeb,0x71,0x83 +.byte 0x27,0x0d,0x85,0xf9,0xa3,0xce,0xef,0x29,0x3b,0x10,0xb7,0xe9,0xd0,0x86,0x6e,0x88,0x1e,0x3b,0xdd,0xaf,0x52,0xde,0xa2,0xa4,0x13,0x3c,0x1f,0xcb,0x84,0x74,0x12,0x04,0x91,0x40,0xb8,0x1b,0x15,0xfd,0xdb,0xe8,0x74,0xcc,0x4d,0x41,0xb5,0x5a,0x92,0xd3,0x71,0xf7,0x57,0xa5,0xf7,0x18,0x5a,0x57,0x36,0xde,0x8f,0xb2,0x81,0x59,0xc8,0x5c +.byte 0x22,0xcf,0xdc,0x7d,0xff,0x83,0xf2,0xad,0x8c,0x7b,0xd5,0x04,0xc4,0xb9,0x79,0x4a,0x12,0xa7,0xb1,0x7e,0x57,0xa5,0x6b,0x56,0x8a,0x11,0x96,0x57,0xde,0x35,0xdd,0xef,0x9b,0x03,0x41,0xde,0x61,0x5b,0x73,0x8c,0x6a,0x0c,0x6f,0xae,0x45,0x4b,0x56,0x4d,0xbe,0x8a,0x3f,0xdb,0x79,0x58,0x88,0xad,0xcb,0xfa,0x66,0x06,0x0e,0x74,0x21,0x1d +.byte 0xe1,0x94,0xd7,0x06,0xea,0x60,0xe2,0x7d,0x70,0xcf,0xa9,0x4f,0xe6,0x9b,0xba,0x19,0x71,0x69,0x94,0x66,0x5a,0xb8,0x49,0x0c,0xd1,0x9a,0xc4,0x5f,0xa7,0xf4,0x9e,0x3d,0x9e,0xc2,0xd8,0x0e,0xd2,0x6d,0xc6,0xc8,0x99,0xc3,0x5e,0x3b,0xb9,0xd8,0x48,0xc0,0x38,0x48,0x95,0x89,0xff,0x7e,0x1d,0x80,0x53,0xac,0x7b,0xd7,0xfc,0x6f,0x5d,0x25 +.byte 0x2f,0xcf,0x15,0xdb,0x1a,0x64,0xc1,0x16,0x91,0x65,0x84,0x99,0x0a,0xc1,0xbf,0x4d,0x11,0xa5,0x55,0x55,0x35,0x93,0x6f,0x47,0xf1,0x75,0xb8,0xb6,0x11,0x9d,0x6e,0x3b,0xd1,0x11,0x20,0xa2,0xa2,0x5c,0x33,0x85,0x09,0xb8,0x13,0xc9,0xdd,0xf2,0xd4,0x32,0x37,0xf2,0xef,0x47,0xfa,0x25,0x1a,0xcc,0xdf,0xf4,0xe4,0x2c,0x2c,0x7f,0x23,0xb6 +.byte 0xa8,0xd4,0x6a,0xd4,0xb4,0x06,0x2e,0xb0,0xaa,0xa1,0x18,0x8a,0x5c,0xc6,0xb2,0x4c,0x71,0x92,0x4a,0xdc,0x81,0x20,0x51,0x8d,0x3f,0x71,0x7d,0x8c,0x25,0x79,0x07,0x14,0xa9,0x7a,0x8b,0xda,0x00,0xfc,0x51,0xdb,0xa0,0x50,0x2b,0x15,0x39,0xf6,0xad,0xdc,0x9e,0x22,0x93,0x2f,0x43,0xd8,0x5c,0xa2,0x5e,0xfa,0x70,0x8c,0xe0,0x6b,0x0e,0x93 +.byte 0x6c,0x89,0xfe,0x22,0x4c,0xec,0xb0,0x7e,0xc1,0x06,0x69,0xf7,0x2f,0x3e,0xe5,0xa4,0x45,0x53,0xab,0x9c,0xf5,0x40,0x05,0x53,0x64,0xc6,0xa7,0xf9,0xc4,0xd6,0x89,0xd9,0x47,0x72,0x8e,0x42,0xf9,0x64,0x12,0xeb,0xd9,0x25,0xdc,0x4c,0xc6,0xea,0x9c,0x4b,0x93,0xb4,0xa2,0xa6,0xae,0x95,0xc1,0x84,0x75,0xc9,0x22,0xe3,0x22,0x81,0x31,0xd1 +.byte 0xfd,0x2e,0x91,0x4a,0xc3,0x00,0xa6,0x57,0xbb,0x89,0x9f,0x2d,0xc3,0x2e,0x1f,0xa2,0x47,0xc4,0xa3,0xcd,0x2b,0xc2,0x29,0xaf,0x89,0xce,0x2e,0x87,0x8e,0xd8,0xfc,0xee,0xab,0x8a,0xbd,0x2f,0xee,0xcf,0x94,0xe0,0x74,0x70,0x86,0x00,0x42,0x11,0x8b,0x6c,0x81,0xd4,0x82,0xf2,0x29,0x3e,0x9c,0x68,0x71,0xaa,0x20,0x0a,0x51,0x5d,0x80,0x4c +.byte 0xca,0x04,0x23,0x23,0xe2,0x69,0xb3,0xf5,0x65,0x98,0x19,0xee,0xa9,0x4d,0xd8,0xe0,0x06,0x4b,0x17,0xed,0xfa,0xf2,0xe3,0xd3,0x69,0x48,0xe4,0x4e,0xc0,0x5a,0x16,0x90,0xdb,0xb6,0x32,0x6e,0x6b,0xd7,0x7a,0xb6,0xd4,0x82,0xe4,0xcc,0x31,0x31,0x5c,0x18,0x84,0xef,0x75,0x9f,0xda,0xf6,0x62,0x2d,0x96,0x4d,0xa1,0x3c,0xb5,0x4a,0xbb,0xbf +.byte 0x9d,0xb3,0x33,0x00,0xc1,0x73,0xc5,0xb2,0xeb,0x85,0x74,0xb0,0x68,0xed,0x16,0x66,0x71,0xc9,0x7e,0x6f,0x74,0xa6,0xe7,0xed,0xf0,0xfa,0xab,0x41,0xdd,0x10,0xf9,0xff,0x4c,0xb6,0x4f,0x15,0xe3,0x77,0x31,0x17,0x5c,0x5a,0xef,0xb2,0xa9,0x44,0xbe,0x97,0xa9,0x75,0x5a,0xb7,0xe0,0x16,0x17,0x37,0x1b,0x71,0x03,0xb9,0xaa,0x7b,0x7b,0x52 +.byte 0x46,0x58,0x6b,0x9b,0x87,0x27,0xa6,0x8a,0x0e,0x84,0x03,0x45,0x95,0x04,0xf1,0x7e,0xb6,0xf6,0x79,0xd5,0x66,0x6d,0x50,0x8c,0x5a,0x67,0xe0,0xdd,0x69,0xd8,0x92,0x75,0x15,0xcb,0xa5,0x05,0xfe,0x7a,0xc1,0xd6,0x11,0x57,0x10,0xa3,0xc3,0xb6,0xe9,0xe3,0x97,0xa5,0x46,0xc9,0xe9,0x9b,0x68,0xb6,0x55,0x0b,0xf2,0x17,0x9d,0x0e,0x7f,0xd9 +.byte 0x26,0x0c,0x01,0xff,0x95,0xe1,0x05,0xb7,0xbf,0x0d,0x77,0x12,0x96,0x03,0x71,0x01,0xc9,0x98,0xb4,0x44,0x94,0xc0,0xad,0x3d,0xfc,0x6f,0xe5,0x0c,0xa4,0x65,0xd7,0xe7,0x76,0x7c,0xb8,0xa0,0x0a,0xcd,0xe8,0x01,0x26,0x8e,0x94,0xec,0x94,0x65,0x86,0xee,0x4d,0x3b,0xc5,0xb5,0x2e,0x51,0xb7,0xa9,0x68,0xcd,0x14,0x90,0xd8,0x36,0xfb,0x52 +.byte 0x04,0x52,0xb4,0xca,0x9b,0xbf,0xc6,0x94,0x28,0xc5,0x7e,0x27,0x73,0xae,0x6d,0xba,0xe7,0x56,0xce,0x2e,0x00,0xeb,0x36,0x19,0xd7,0x4f,0x20,0x5e,0xfd,0x0f,0xd4,0x4c,0x02,0xaf,0xdb,0x74,0xef,0xf0,0x73,0x1e,0x2a,0x1a,0xe7,0x3a,0xe0,0xa5,0x89,0xcf,0x1a,0x66,0xbd,0x72,0x65,0xb4,0xf4,0x86,0x33,0x44,0xee,0x35,0xf6,0x09,0xbe,0x13 +.byte 0x96,0x84,0x04,0x95,0x3f,0x35,0xbb,0x01,0x2c,0x78,0x25,0xe8,0x1e,0x46,0xdb,0xd9,0xb1,0xe8,0xfb,0x2b,0xa8,0x59,0x72,0x5f,0x91,0xd3,0x7c,0x21,0x95,0xa9,0x50,0xa2,0x45,0x6f,0x48,0x0c,0xf2,0x51,0x10,0x3c,0xcd,0xea,0xeb,0x5d,0xc7,0xf9,0x0e,0xae,0x1a,0x02,0x05,0x15,0x12,0x10,0xc0,0x35,0x12,0x97,0xcd,0x5b,0x61,0x4f,0xd1,0xd3 +.byte 0x5b,0xec,0x2b,0xa0,0x20,0x03,0x2b,0xf3,0xe6,0x71,0x23,0xca,0x1d,0x48,0x64,0x3f,0x7e,0x52,0x8b,0xf9,0x96,0x33,0x31,0xbc,0xbd,0x73,0x2f,0xa6,0x80,0xb8,0x0b,0x3a,0xd7,0xf8,0x05,0xf0,0x06,0xc7,0xa5,0xce,0x6a,0x6a,0x62,0xae,0x06,0x93,0xa4,0x5f,0x0b,0x5d,0x4d,0xb8,0xa4,0xfa,0x2e,0xfc,0xb6,0x58,0x8c,0x2a,0x46,0xa4,0x55,0x1f +.byte 0x9b,0x9b,0x13,0xdd,0x17,0x2a,0x3d,0x04,0x51,0xb6,0xbe,0x9c,0xca,0xf3,0x23,0xb6,0x7b,0x7a,0x92,0xb7,0x2f,0xf9,0x69,0x9a,0xee,0xb3,0xa1,0x60,0x56,0xcf,0x9d,0xab,0xfe,0x86,0x7a,0x41,0x94,0x15,0xbe,0xa3,0xa5,0x85,0x09,0xfb,0x7b,0x89,0xbd,0xc3,0x09,0x10,0xa6,0xfc,0x41,0x8e,0x57,0x27,0xdc,0x58,0xf4,0x01,0x7c,0x31,0x5e,0xca +.byte 0xaf,0x31,0x2f,0x98,0x8b,0xbe,0x19,0x16,0xa1,0x81,0x7e,0xb3,0xa9,0xc5,0x15,0xd2,0xad,0x51,0xa1,0x73,0x56,0xd3,0x6a,0x15,0x35,0xe3,0xb1,0xdb,0x83,0x4c,0xe2,0x85,0x8c,0x03,0x12,0xc4,0x64,0x69,0xc0,0x23,0x16,0x7b,0x68,0x46,0x44,0x22,0x84,0xa6,0xb5,0xe4,0x90,0x91,0xc1,0xdd,0x25,0x7c,0x54,0x0e,0xce,0x5b,0x11,0xe4,0x50,0x1c +.byte 0x3c,0x0d,0xc7,0xc1,0x0c,0x10,0x2d,0x8b,0xb7,0xde,0xe2,0x4f,0x7e,0x22,0x53,0xfc,0x07,0x55,0x19,0x14,0x3b,0x33,0xf5,0xf3,0xd8,0x7b,0x5e,0x40,0xa2,0x81,0x6d,0x40,0x0d,0x20,0x36,0x4b,0xa1,0x34,0x34,0xac,0x43,0x59,0xb5,0xb1,0x90,0x8b,0x48,0xcf,0x15,0x57,0x17,0x0e,0xd0,0xbf,0x28,0xcd,0xa4,0x77,0x4d,0xae,0x09,0x4c,0x67,0x51 +.byte 0x18,0xaa,0xb4,0xc9,0x35,0x41,0x0b,0x34,0x4d,0xb3,0xef,0x3f,0x46,0x97,0x6e,0xae,0x75,0xd7,0x6a,0x2b,0x22,0x9c,0xef,0x8e,0xaf,0x72,0xb0,0x14,0x90,0xbd,0x11,0x90,0xde,0x9a,0x02,0x8c,0x20,0xf5,0xc7,0x33,0x4d,0x94,0x88,0x9a,0x6c,0x18,0xb4,0xc0,0xa9,0x94,0x07,0x9a,0x4b,0x10,0x8f,0xe8,0x25,0xcd,0x9b,0xf5,0xfa,0x91,0x8a,0xc0 +.byte 0x93,0x61,0x1c,0x00,0xd1,0x34,0x9a,0x29,0xa3,0x35,0x38,0xe4,0xa7,0x9f,0xb6,0x88,0x0f,0xad,0x88,0x96,0xa0,0x73,0xe7,0x10,0xea,0x36,0xe8,0x88,0x6c,0x7f,0x03,0xbc,0xfe,0xe0,0xb2,0x4b,0x24,0x98,0xf6,0x73,0x6f,0xab,0x00,0x1e,0x26,0x83,0x0d,0x86,0x5b,0xa6,0x51,0x8f,0x5f,0xa9,0x8f,0xf4,0xa0,0x51,0xff,0xe0,0x64,0x09,0x95,0xfb +.byte 0x56,0x53,0x18,0x61,0xea,0xc5,0x33,0xe8,0x6f,0x8a,0x07,0x97,0x1a,0x6c,0xb5,0xf8,0x73,0xae,0xe4,0x4e,0x6d,0xb2,0x83,0x20,0xfa,0xfd,0x79,0xa6,0x6c,0xaa,0x9b,0x7b,0x2c,0xfe,0x63,0x73,0xbc,0x87,0xd4,0x56,0xd1,0xb1,0xf1,0x0f,0x72,0x2c,0x2f,0xf0,0xf0,0x53,0xe2,0x6c,0x19,0x0d,0x9c,0xad,0xc8,0x0a,0x62,0x72,0xcb,0xc3,0x12,0x90 +.byte 0x4c,0x26,0xe3,0xa0,0x07,0x35,0xee,0xaf,0x81,0x35,0x07,0xa9,0x31,0xa0,0x59,0xc8,0x40,0xa5,0x45,0xb6,0x6d,0x3e,0xa2,0x5f,0x6a,0x79,0x74,0x65,0xa1,0xe3,0x1c,0xca,0xae,0xcc,0xa6,0xb6,0x0a,0x12,0x99,0x8e,0xc3,0xef,0x43,0xcf,0x42,0x92,0xa4,0x12,0xa3,0x8b,0x97,0x7d,0x6f,0xe0,0x35,0xed,0xac,0x69,0xae,0x8c,0xe1,0x32,0x11,0xa4 +.byte 0xe0,0x76,0x7f,0x75,0x92,0xda,0xfe,0x94,0x33,0xeb,0xe1,0xa4,0x3c,0x95,0x7c,0xc6,0xbc,0x3d,0xf2,0x39,0xa1,0x29,0x39,0x24,0x09,0xd4,0x52,0x68,0xfb,0x80,0xd0,0xd4,0x57,0xc6,0x4c,0xa5,0xa6,0x90,0xa6,0x61,0x15,0x2f,0xd3,0x35,0x36,0xf5,0x16,0xb3,0x65,0x0a,0xc4,0xcb,0x7f,0x73,0xe4,0xba,0x9a,0xd8,0x8b,0xc3,0x01,0xa0,0x08,0x57 +.byte 0x9e,0x26,0x54,0xbc,0x55,0xd1,0x5f,0xaa,0xb5,0x0d,0x42,0x75,0x04,0x76,0x8c,0xef,0xcf,0x64,0x3a,0x2e,0x4c,0x78,0xe5,0x37,0x8d,0x55,0xec,0xc1,0x7b,0xce,0x5f,0x5f,0x43,0x8b,0xdd,0x46,0x43,0xf5,0xa8,0x41,0xa6,0x82,0x1b,0x12,0xcb,0xcb,0x6d,0xa1,0x6c,0xb6,0x79,0x46,0x12,0x89,0x12,0x61,0xd6,0x4f,0xf9,0x43,0x2d,0x27,0xa9,0x61 +.byte 0x2e,0x2a,0x29,0x1b,0x6d,0xad,0x32,0x0b,0x6c,0x7c,0xf4,0xb8,0x98,0x91,0xbb,0x78,0xda,0x85,0xe8,0xfb,0x4e,0x11,0xc4,0x2a,0x07,0x54,0xa0,0x67,0x73,0x1b,0xa4,0x60,0x15,0x5c,0x83,0xbf,0x3f,0xd9,0x61,0x30,0x02,0xbb,0xa6,0x67,0xcd,0x0c,0xd1,0xb4,0x11,0x7e,0xca,0xf4,0x1e,0xed,0x83,0x34,0x66,0x54,0x23,0x39,0x36,0x8c,0xa0,0xc6 +.byte 0xef,0xad,0xa1,0x95,0x04,0x20,0x46,0x42,0xa8,0x99,0xd2,0x98,0xc6,0x0a,0x92,0x11,0xd1,0x84,0x4a,0xbf,0x25,0xe5,0xcf,0x78,0x98,0x81,0x80,0xaa,0x31,0x0a,0xa4,0xfb,0xef,0x35,0xfa,0xa4,0xac,0x5f,0x01,0x6b,0xb7,0x8e,0x86,0xc1,0x46,0x97,0x88,0xe2,0xaa,0x3b,0x1f,0xb5,0xf8,0xa9,0x90,0xf0,0x45,0x6d,0xdd,0xa3,0xdd,0xd8,0xef,0x36 +.byte 0x6f,0x87,0x55,0xf6,0x96,0xcd,0x88,0x43,0x03,0x97,0x82,0xea,0x5a,0x1c,0xa1,0x1a,0x7b,0x1b,0xa7,0xfc,0xaa,0x86,0xb4,0x71,0xde,0x0d,0x0a,0x52,0x98,0xd2,0x65,0x5d,0xa4,0xea,0x91,0xc9,0xe4,0x8b,0xd0,0xdb,0x85,0xe3,0x86,0x85,0x50,0xe1,0x41,0x1f,0x48,0x97,0x64,0xec,0x34,0xe4,0x54,0x42,0xf4,0x01,0xed,0x6f,0x4d,0xe3,0x1f,0x86 +.byte 0x14,0xbc,0x01,0x9c,0x7f,0x02,0x0c,0x65,0x94,0xd2,0x90,0x2c,0x1b,0xab,0x41,0x88,0xad,0x58,0xb5,0x71,0xd3,0xd6,0xe1,0x3f,0xf3,0x3c,0xb6,0xab,0x22,0x08,0x17,0xc7,0xf5,0x7e,0x34,0x56,0xae,0x1d,0x1e,0x7e,0xdb,0x24,0xe2,0xc2,0x38,0xf3,0x4d,0x46,0xe4,0x45,0xcb,0xb7,0x2f,0x0f,0x96,0x72,0x7e,0x31,0x89,0x17,0x9c,0xed,0x85,0xb9 +.byte 0xc8,0x8f,0x65,0x93,0xfb,0xb8,0x9e,0x41,0xa2,0xc1,0xcf,0xdb,0xe2,0x4c,0x26,0x4a,0xc7,0x2a,0x72,0xf6,0x28,0xbc,0x18,0x22,0xde,0xa1,0xfa,0x46,0xbe,0x95,0xc8,0xe2,0x19,0xbb,0x20,0x7b,0xd5,0xf8,0x34,0x15,0xaa,0xec,0xe2,0x9e,0xa9,0x3d,0xa1,0xd9,0xaa,0xc9,0x18,0x39,0x07,0x5c,0x81,0x61,0xe7,0x00,0xc5,0x57,0x3e,0xca,0x4d,0x89 +.byte 0x33,0x02,0xa6,0xc8,0x15,0xb7,0x24,0xdd,0x5c,0x55,0x56,0x11,0x5c,0x17,0x1b,0xda,0xc6,0xd5,0x46,0x6e,0x9f,0x70,0xe7,0x1e,0x41,0xee,0x91,0x1a,0xa0,0xad,0x35,0x64,0xdf,0x4a,0x18,0x03,0xa7,0xa8,0x88,0x8f,0x65,0xbc,0x76,0x34,0x08,0xab,0x50,0xc6,0xd3,0x08,0x7c,0xc1,0x4f,0x77,0xcd,0x1a,0xc6,0xed,0x35,0xea,0x4e,0x8a,0x6a,0x38 +.byte 0xa3,0xa3,0xd8,0xa9,0xa2,0x68,0xa7,0xd8,0xe0,0xc8,0x3f,0xfe,0xe7,0x73,0xc6,0x6b,0xd8,0x0c,0xd5,0x8f,0x81,0xe7,0x37,0x08,0x93,0x28,0x73,0xef,0xc4,0x91,0x52,0xa5,0x30,0xff,0x47,0x95,0x02,0x0d,0x8c,0xfd,0xc9,0x28,0x60,0xa9,0xad,0x30,0x00,0xcc,0x3a,0x00,0xbb,0x25,0xab,0xd0,0xf8,0x25,0x46,0x20,0xc0,0x67,0x9b,0xd6,0x10,0xa6 +.byte 0x84,0x6f,0x66,0x60,0x66,0x75,0xb6,0xfb,0x39,0x3a,0x9f,0x7d,0x32,0x7f,0x12,0x6f,0x8c,0xed,0x79,0x40,0x47,0xa3,0x27,0x17,0xa8,0xa4,0x02,0x93,0xb9,0x32,0x03,0x34,0x06,0x76,0x71,0x40,0x90,0x2b,0xe7,0xd0,0x3f,0x59,0xa7,0xfb,0x3a,0x7b,0xc8,0xa5,0x86,0x21,0x0d,0xf6,0xc6,0x49,0x07,0x56,0xe9,0xfc,0xac,0x61,0x30,0xa5,0x7e,0x90 +.byte 0x10,0xc8,0xdb,0x15,0x2b,0x75,0x27,0x77,0x51,0x42,0xcf,0x50,0xe8,0x6c,0x0b,0xb7,0x17,0x1a,0x89,0x7d,0xfe,0xd2,0x75,0xfa,0xb7,0xe5,0x68,0x10,0x1c,0x27,0x85,0x8b,0x52,0x7d,0x87,0x57,0x50,0x77,0x25,0x9d,0xcc,0x08,0x6a,0xad,0x63,0xf8,0x8e,0xe0,0x21,0x62,0x56,0x48,0x29,0xed,0x81,0x1d,0x6b,0x60,0x55,0x78,0x6a,0xce,0xd6,0x79 +.byte 0xe1,0x66,0x18,0x9f,0x71,0xf7,0x0c,0xec,0x35,0x53,0xef,0x39,0xfe,0x57,0x71,0xc0,0x49,0x4b,0x55,0xe8,0x3d,0x9b,0xe3,0x9a,0xbb,0xf8,0x61,0x31,0xa1,0x94,0x94,0x8a,0xb1,0xd2,0x0f,0x01,0xe0,0xd4,0x26,0xa0,0x59,0x70,0xd0,0x5e,0xb8,0x6f,0x63,0x7b,0x71,0x49,0xe1,0x98,0xfb,0xdb,0x22,0x26,0x18,0x16,0x31,0x08,0x90,0x32,0xd5,0x7a +.byte 0xc0,0xd8,0xeb,0xae,0x93,0x3d,0x46,0xeb,0x0e,0xdd,0x08,0xa2,0xde,0x4e,0xc1,0x88,0x26,0xc2,0xf8,0xc6,0x5e,0x8a,0x9b,0x0d,0x9f,0x2b,0xcf,0x4e,0x13,0x43,0x4a,0x65,0xf6,0x47,0x1a,0x0a,0xae,0xf9,0x9f,0x7c,0xc5,0x18,0x65,0x09,0xcb,0x85,0x7d,0x33,0x36,0x43,0x19,0x99,0x20,0xa2,0x64,0xb2,0xf5,0x20,0xd2,0x74,0xc6,0x2c,0x29,0x46 +.byte 0xde,0xa7,0x4a,0x7f,0x3b,0x05,0x3e,0x11,0xb6,0xc1,0x98,0xfb,0xf5,0x9d,0x93,0x95,0x76,0x11,0x80,0x41,0x44,0xd3,0x2f,0xf4,0xfd,0x92,0x1e,0xd7,0xa7,0x5f,0x02,0x4a,0xbc,0xb7,0x96,0x33,0xc0,0x0d,0x2d,0x97,0xb8,0xd4,0x67,0x7a,0x4c,0x74,0x93,0xa7,0x8d,0x68,0x78,0xed,0xc8,0xc9,0x02,0x6e,0xae,0x10,0x97,0x7c,0x56,0x11,0x2a,0x29 +.byte 0x87,0x5c,0x21,0xec,0x75,0x9c,0x17,0x17,0x8d,0x45,0x08,0x31,0x36,0x64,0xc0,0xf7,0x95,0xb6,0x72,0xcf,0xac,0xd8,0x52,0x02,0x6f,0x3b,0x14,0x34,0x30,0xcc,0x39,0x7c,0xe4,0x1f,0x38,0x23,0xcf,0x1f,0xb7,0x7e,0x92,0x66,0xf7,0xda,0x9f,0x27,0xbb,0x83,0x45,0x71,0x67,0x63,0x6c,0x85,0x64,0x34,0xa8,0x93,0x5a,0x13,0x0c,0xff,0x8b,0x3a +.byte 0x2a,0x10,0x1d,0xb6,0x43,0xef,0x57,0xf3,0xf0,0x29,0x2e,0x59,0x72,0x2e,0xc3,0xb6,0xd3,0xd0,0xdd,0x17,0x19,0x82,0x49,0x05,0xd4,0xfc,0xd6,0x2e,0x5d,0xd7,0x0c,0xb6,0x18,0xd5,0x08,0xbb,0xe5,0x3b,0x2e,0x85,0x62,0xc0,0x1e,0xa3,0xb8,0x92,0x21,0x06,0xfa,0xf1,0x2d,0xab,0x62,0x67,0x62,0xee,0x13,0x7f,0x07,0xb6,0x24,0x64,0x94,0x4f +.byte 0x69,0xb9,0x7a,0xdc,0x23,0x5e,0x19,0x96,0xc5,0x4d,0xcb,0xee,0x2d,0x4a,0x7d,0x1d,0xd2,0x72,0x18,0x8f,0x43,0x8f,0x76,0xbf,0x30,0xd8,0xf1,0xfe,0x9c,0xe7,0x63,0x38,0xff,0x1a,0x3f,0x40,0xbd,0x73,0x66,0xf7,0xa9,0xd9,0x17,0x4a,0x8a,0x79,0x04,0x0e,0x20,0xe1,0x39,0x49,0xd9,0x30,0x9c,0x52,0xf9,0x14,0x8f,0xdc,0x9d,0x52,0xd5,0x34 +.byte 0xaa,0x58,0xfe,0x5d,0x68,0xcb,0xab,0x3b,0x3c,0x9e,0x25,0xde,0x6d,0xdd,0x58,0x0d,0x1b,0x99,0xa9,0xcc,0x26,0x4e,0xc0,0x3c,0x8b,0x1e,0xaa,0x52,0x3d,0x4d,0xb8,0x27,0xc1,0xd1,0xa2,0xaa,0x78,0xb9,0xee,0x5f,0x26,0x46,0x5f,0x41,0x0d,0xe1,0x70,0x7d,0xcd,0x3f,0x4a,0xca,0xb2,0xca,0x2f,0x36,0x1f,0x68,0xe6,0x66,0x8a,0xf6,0xe3,0x94 +.byte 0xe5,0xab,0x90,0xeb,0x2f,0xe8,0xb2,0x6c,0xa9,0x69,0xd2,0xe0,0x5f,0x4a,0x65,0xa8,0x6b,0xc1,0xfb,0x03,0x51,0x17,0x3b,0xf8,0xe0,0x67,0xc3,0x5a,0xe8,0x18,0xdf,0xc1,0xf8,0x7f,0x44,0x68,0x4a,0x01,0xbe,0xf8,0xa5,0x7a,0xb9,0x3b,0x0f,0x05,0x8e,0x4b,0x28,0x14,0x61,0x2f,0x2e,0xc7,0xf2,0x96,0xc7,0x60,0x99,0xc4,0xbf,0xe8,0x37,0x98 +.byte 0x00,0x34,0xf7,0x5a,0xd7,0x6f,0x90,0xc4,0x19,0xb5,0x07,0xd1,0x76,0x6e,0x65,0xcc,0xf6,0x51,0x88,0x5c,0x81,0x91,0xa8,0x4d,0xb7,0x33,0x53,0xb6,0x93,0x42,0x52,0x82,0xfa,0x2b,0xca,0xa0,0xbd,0xf3,0x09,0x2b,0x0f,0x09,0x02,0xdd,0x29,0x5f,0xa6,0x49,0x7b,0x97,0xe8,0x96,0xbf,0x6f,0x76,0xb7,0xa2,0x76,0x58,0xda,0x1d,0xb2,0xdb,0x6d +.byte 0x9d,0x3b,0x32,0x6e,0x9c,0xea,0x45,0xfd,0x33,0xeb,0x41,0x91,0x91,0x52,0x2b,0x68,0xa3,0xf3,0xc6,0x92,0x43,0x13,0x49,0x8a,0x10,0xb1,0x2f,0x9a,0x0f,0xe1,0x94,0x21,0x18,0x76,0x87,0xaf,0x50,0xe4,0x71,0x5d,0x0a,0xba,0x75,0xaa,0x17,0xf5,0x37,0xf2,0x84,0x9b,0x29,0xdf,0x44,0x60,0xd0,0xac,0xcf,0x25,0x87,0x66,0x64,0x1f,0x0d,0xba +.byte 0xb3,0xdb,0x14,0xb6,0x1f,0x00,0x70,0x98,0x83,0x1d,0x9e,0xbd,0xf9,0x17,0xf4,0x57,0xae,0xa8,0xae,0x7b,0xa7,0xde,0x1f,0x31,0xc6,0x29,0xb2,0xf7,0xef,0x36,0x31,0xe7,0x50,0x33,0x69,0x4e,0x8c,0xb5,0xe4,0xdd,0x74,0x87,0xc8,0xf5,0x22,0x1b,0x4b,0xec,0xc4,0xe1,0x5a,0x7d,0x5a,0xe8,0xb9,0x2f,0xf4,0xd1,0x83,0xa2,0xb7,0x97,0xe0,0x1e +.byte 0xf7,0x3a,0x74,0xef,0x5f,0xb3,0x30,0xce,0xfa,0x23,0xd5,0x98,0x56,0x19,0x24,0xb5,0xc7,0x60,0x8b,0x03,0x8e,0xe7,0xdf,0x2c,0x36,0x4c,0x3b,0x3b,0x84,0x45,0x97,0x40,0x29,0x30,0x98,0xc3,0xc0,0xa2,0xf0,0xdf,0x69,0x47,0x95,0x26,0xdb,0x6c,0xcc,0xff,0x2d,0x32,0xaa,0xa7,0xb8,0x6b,0x24,0xec,0xff,0x94,0x4d,0x36,0xdd,0x7b,0x4d,0xc5 +.byte 0x8d,0xe2,0x3c,0x14,0x5a,0x37,0x75,0x1f,0xd6,0x98,0x7d,0xd3,0xdc,0xb0,0x24,0x69,0xe7,0x65,0x60,0x2a,0xe7,0x00,0x5b,0x68,0x99,0xa0,0x9e,0x10,0xf0,0x5c,0xa8,0x39,0x85,0x59,0xde,0xe4,0x46,0xf3,0xde,0xda,0xc0,0xb1,0xd2,0xf1,0xd2,0x05,0xd5,0xd4,0x2c,0x2e,0x7e,0x44,0x5c,0x52,0x80,0x85,0xbb,0x54,0x97,0xb6,0xad,0x6d,0x57,0x49 +.byte 0xed,0x67,0xaf,0x27,0xb4,0x5b,0xce,0x0f,0x3c,0x58,0xa2,0x24,0x22,0xa2,0xcb,0xfc,0x4e,0x8e,0xc2,0x3c,0x32,0xc6,0x07,0xc4,0xc6,0xc0,0x50,0xc3,0xe3,0x1b,0x96,0x76,0x62,0xf9,0xea,0x5e,0xdc,0xc5,0x96,0xe8,0xaa,0x20,0x26,0xac,0x44,0xfb,0xf2,0x16,0x72,0x72,0x4c,0x5c,0xee,0x51,0x07,0xb0,0x74,0xf6,0xde,0xd7,0x5d,0x73,0xf4,0xe9 +.byte 0x0d,0x29,0x06,0x5f,0xca,0xe2,0xbb,0xa4,0x3e,0xdc,0xf7,0x74,0x99,0x53,0x7a,0x52,0x60,0x46,0xaa,0xf0,0x34,0x97,0x0c,0x81,0x5b,0xd8,0x95,0x52,0x76,0x55,0xcb,0xc4,0x6d,0x50,0x26,0x3f,0x7e,0xc2,0x93,0x6e,0x14,0x0c,0xd7,0x49,0x5f,0x52,0x8f,0x34,0x49,0xb4,0xe7,0x12,0xfe,0xae,0xd1,0xfa,0xfc,0xc5,0x80,0x38,0x26,0x9c,0xf1,0x81 +.byte 0x01,0x58,0x15,0x99,0x29,0x8d,0x1b,0x2d,0x74,0xca,0xf1,0xf4,0xfa,0xcd,0xae,0xfa,0xa9,0x1d,0xbb,0xf1,0x55,0x2e,0x69,0x46,0x6e,0xe4,0x91,0xa3,0x48,0xb5,0xaa,0xb3,0x85,0xab,0x14,0xd2,0x84,0x8c,0xb1,0xb6,0x0c,0xa5,0x4a,0x90,0xed,0x6e,0xdf,0x1e,0x15,0x36,0x7b,0xa3,0x59,0xd6,0x8d,0x7d,0x7b,0x12,0x7c,0x9a,0x40,0x8a,0x28,0xde +.byte 0xb5,0xbc,0xc4,0x52,0x96,0xfb,0x62,0x1f,0xc9,0xe0,0xc9,0x1d,0xc7,0xc4,0xcb,0x8a,0x96,0x21,0x42,0x7c,0x0a,0xdd,0x42,0x74,0xcf,0xc4,0x57,0x8f,0x28,0x0a,0x7c,0x4f,0x49,0x5a,0xc6,0x21,0xb2,0xd4,0xd0,0x61,0xa5,0x35,0xbd,0x4a,0x0c,0x16,0x68,0x1f,0xe3,0xff,0x3f,0x72,0xf0,0x1d,0x50,0x26,0x48,0x91,0x27,0x1b,0x2b,0x0d,0x8b,0xf2 +.byte 0xa0,0xc0,0xa0,0x5d,0xdb,0xcf,0x71,0x41,0x83,0x00,0xb9,0x3c,0xe0,0x4a,0x96,0x43,0xf8,0x64,0x0f,0x42,0xc5,0x75,0xec,0x26,0x62,0x99,0x13,0xeb,0xf9,0xa6,0x86,0xe4,0xc9,0xaf,0x3c,0x2c,0xc9,0x4f,0x89,0xf4,0xc0,0x46,0x99,0xb8,0xd1,0x9e,0x7b,0xb7,0x41,0x0a,0x5f,0x40,0x98,0x65,0x29,0xdd,0x60,0x6b,0x27,0xbf,0x66,0x08,0x32,0xc2 +.byte 0xcf,0xea,0x91,0x44,0x45,0x49,0x1c,0xb4,0x16,0x7f,0x11,0x1a,0x8c,0xb4,0x59,0x54,0xc6,0xcf,0x40,0xd2,0xe9,0xc1,0x54,0x9c,0xe2,0x6e,0xd5,0xfe,0xfb,0x4a,0xa3,0x98,0x63,0xef,0x86,0xe0,0x63,0x30,0x32,0x5a,0xbd,0xd4,0x7c,0xe8,0xbe,0xf1,0xed,0xa2,0x19,0x98,0xc8,0x34,0x65,0x4c,0xef,0x1a,0xb3,0xbc,0x87,0xbe,0x6b,0x75,0x2c,0xe5 +.byte 0x54,0xcc,0xe5,0x69,0xb2,0xc8,0xdb,0x57,0xf8,0xa7,0x82,0x07,0xf7,0x20,0x95,0x7f,0x6d,0x7b,0x33,0x66,0x67,0xa1,0x38,0x0e,0x9c,0x3b,0x22,0xab,0xc1,0xd3,0xed,0x87,0x32,0xfb,0x4a,0x5d,0xad,0x3a,0xe1,0x90,0xa6,0xe3,0x4d,0x6b,0x00,0xe4,0x5c,0x66,0x59,0x90,0x63,0x24,0x5b,0xe1,0x3b,0x69,0xb6,0xc9,0x05,0x83,0x3a,0x7b,0xf4,0xa5 +.byte 0xc8,0x47,0xf9,0x8e,0xab,0x92,0xbd,0xd3,0x41,0xc7,0x61,0xf4,0xce,0x30,0xdb,0xae,0x27,0x69,0x0f,0xcc,0x69,0x50,0xe8,0x18,0xf2,0x39,0x04,0x5a,0x29,0x12,0x61,0x46,0x5c,0x1b,0x2e,0x15,0x9c,0xfa,0x73,0x50,0xe3,0x51,0xda,0x4d,0x88,0x25,0xb2,0xff,0x55,0x27,0xce,0x86,0xca,0xe6,0x2a,0xb8,0x0c,0xa7,0xd0,0x06,0xbf,0x70,0xb5,0x6b +.byte 0x80,0x44,0x65,0x5d,0x23,0xfa,0x0d,0x74,0x5c,0xfc,0xc7,0x86,0x5e,0x23,0x8a,0xf1,0xff,0x80,0xf0,0x19,0xaa,0x98,0xae,0x56,0xcf,0x12,0x74,0x6c,0x70,0xb2,0x39,0xbe,0x66,0x71,0xee,0xe3,0x43,0x3b,0xfa,0x79,0xa9,0x7e,0x69,0x6a,0x19,0x42,0xd5,0x0e,0x1e,0x92,0xfe,0x8a,0x0f,0xca,0x74,0xf2,0x68,0x71,0xf5,0xcb,0x05,0x94,0xc1,0x06 +.byte 0x1b,0xae,0x55,0xe9,0x16,0x03,0xa9,0x97,0xad,0x49,0xaf,0x88,0x8c,0x26,0x33,0x4d,0x46,0x75,0xb3,0x9c,0xee,0x70,0xe1,0x57,0x43,0xeb,0x59,0xff,0x77,0x89,0x8a,0x77,0x3f,0x7e,0xe6,0xbe,0xa2,0x05,0xb1,0xe3,0x41,0x5e,0xc7,0xd4,0x14,0xda,0xc0,0x84,0xd0,0x05,0x50,0xdd,0x62,0xdb,0x4c,0x3b,0x16,0xb0,0xe0,0xf5,0x2b,0xf1,0x83,0xea +.byte 0x7b,0x89,0xbb,0xde,0x57,0xdb,0xc0,0xb9,0x7d,0xdf,0x53,0x0f,0x6c,0xc5,0x5a,0x0b,0x36,0xeb,0xa3,0xc3,0xe6,0xc5,0x80,0x98,0xf3,0x87,0x29,0x97,0xc9,0x2e,0xd6,0x3b,0x43,0x2a,0x36,0x3b,0xba,0x43,0x85,0xf5,0x0d,0x18,0x2e,0x78,0x43,0xae,0xa4,0x24,0x6d,0xdc,0xab,0x05,0x94,0x09,0x94,0x27,0x17,0xef,0xbc,0x7e,0x52,0xa4,0x80,0xda +.byte 0x28,0xf5,0xc3,0x20,0x99,0xbb,0x5d,0xb6,0x7e,0x0e,0x59,0x3b,0x5e,0x1d,0x1b,0x4f,0xd1,0x91,0xe4,0xe4,0xc7,0x35,0xc7,0x2e,0xc1,0xba,0x60,0x05,0xa4,0xd5,0xca,0x5f,0x09,0xbf,0x79,0x06,0xcb,0xa7,0x32,0x7c,0xf4,0xdc,0xa8,0xb3,0x8b,0x26,0x59,0x6d,0xcb,0x74,0x37,0x56,0x51,0x96,0x0b,0x44,0xf1,0x95,0x16,0xe3,0x9b,0x9b,0x3b,0xb3 +.byte 0xea,0x6a,0x1b,0x76,0x99,0x69,0xd6,0x5b,0x10,0x5a,0x91,0x23,0xb5,0xc3,0xf9,0x6a,0xba,0xc4,0xe6,0x18,0x28,0x50,0x9d,0x09,0x14,0xbe,0xed,0x73,0xd2,0x51,0xff,0xf8,0x14,0x2b,0x8b,0xdd,0x2a,0x1a,0x8e,0x48,0xae,0xd8,0xdf,0xb9,0x5b,0xcb,0x8f,0xc2,0x8c,0xd6,0xb3,0xfb,0x40,0x2f,0xb0,0x6c,0x9a,0xea,0xd0,0x14,0x8c,0xc5,0xc7,0xc7 +.byte 0xf8,0xf5,0x4f,0xe2,0xd7,0x41,0xcd,0xb6,0x34,0x3e,0x81,0x19,0x09,0xa2,0x51,0xb4,0x60,0xfb,0xf2,0x6c,0xe6,0xae,0x68,0x47,0xb9,0x93,0x7b,0xc9,0xe7,0x00,0xc4,0xa7,0xf2,0xef,0x8b,0xd8,0xfc,0x9f,0xe5,0x6d,0x48,0xe2,0x6c,0x32,0x73,0x5c,0x30,0x7c,0x12,0x13,0xca,0xc3,0x31,0xc3,0xa2,0xb4,0xf7,0x23,0xc4,0xd0,0x47,0x39,0x93,0xc8 +.byte 0xa0,0x7b,0xb4,0x09,0x3f,0xe8,0x15,0x15,0x9c,0xa7,0xe6,0xa8,0xbe,0xba,0x60,0xf9,0x28,0x88,0x66,0x7b,0x62,0x32,0x17,0x18,0x68,0x87,0x53,0xf5,0xbc,0xf5,0x77,0x17,0xa1,0x3f,0x62,0xd1,0x10,0x0a,0x54,0x96,0x9c,0x31,0xc3,0xb7,0x1d,0xaf,0xc7,0xb3,0x27,0x9e,0x46,0xfe,0x7e,0x9b,0x88,0xf2,0x9e,0x6e,0x19,0x0f,0xb1,0x88,0xe4,0x08 +.byte 0x76,0x7c,0x77,0x46,0x09,0xa7,0x9e,0xf4,0xd9,0xbf,0x67,0xe8,0x9d,0x6a,0x75,0xa7,0xf5,0xee,0x29,0xba,0x84,0xa0,0x44,0x46,0x35,0x4c,0x22,0xef,0xb3,0xea,0xb0,0xf2,0xd6,0x78,0x20,0x97,0x28,0x5c,0x7e,0x90,0x06,0x80,0x19,0x63,0xa4,0x8a,0xef,0x0a,0xea,0x88,0xa9,0xa2,0xae,0x23,0x2e,0x40,0xce,0xc5,0xc2,0xbf,0xfe,0x5a,0x8f,0x14 +.byte 0xb8,0x66,0x1a,0x2d,0xdb,0x43,0x39,0xbd,0xe7,0x7b,0xbc,0x41,0x58,0x74,0x56,0xd1,0xe7,0xd0,0xba,0x24,0xd2,0x41,0xbf,0xd0,0x4e,0x97,0x38,0x8f,0x6b,0x6f,0xe2,0x7d,0x6d,0x32,0x94,0x43,0xa7,0x66,0xf7,0x90,0x21,0xe0,0xdd,0x19,0x48,0x72,0xc1,0xa5,0xbc,0x9c,0xe2,0xdd,0x2c,0x6e,0x50,0x45,0x2c,0xa0,0x95,0xcb,0x1d,0x2c,0x1d,0xa6 +.byte 0xbe,0x9c,0xd4,0x6c,0x07,0x2e,0x5e,0xc8,0xc1,0x05,0x61,0x7d,0x44,0x28,0xe6,0xad,0xf0,0x9d,0x2d,0x3d,0xce,0x90,0x7d,0x79,0x2e,0xf3,0x08,0xbe,0x7a,0xa9,0x58,0x04,0xa7,0x39,0x05,0xdd,0xb4,0x87,0x6c,0x7b,0xd5,0xb3,0x2d,0x6b,0x43,0xf4,0x37,0xd9,0x6f,0x5c,0xa2,0x23,0x92,0x53,0xb9,0xd7,0x1b,0x2d,0x5d,0xcd,0x6d,0x3f,0xef,0xc8 +.byte 0x66,0x91,0x10,0x1b,0xc5,0x24,0x50,0x87,0x70,0x93,0x03,0x3f,0x7b,0x40,0xc8,0x0c,0x9b,0xec,0x3d,0x82,0x27,0x96,0x2a,0xbe,0xca,0xaf,0x1b,0xbf,0xef,0x14,0x0c,0xdc,0xa6,0xc7,0x48,0x18,0xce,0x8e,0x43,0x58,0x97,0xb3,0x5e,0xd6,0xc9,0x70,0x65,0xd0,0x0e,0x17,0xac,0xa0,0x6b,0xc9,0x55,0x30,0x12,0x7c,0xbe,0xe5,0x46,0xfc,0xd8,0x3f +.byte 0x0e,0xd7,0x96,0x16,0x32,0x8e,0xb7,0x2d,0x07,0xd1,0x26,0x98,0x70,0x4c,0xb1,0x6f,0x92,0x32,0x75,0x4f,0x57,0x6b,0x78,0xe0,0xc5,0x9b,0xf0,0x08,0x59,0x0b,0xfa,0x2d,0x79,0xbe,0xde,0x44,0x3d,0x65,0x77,0x27,0x3b,0xd9,0xea,0x55,0x79,0x22,0xe8,0xf7,0x62,0xb1,0xe3,0x32,0x4e,0x03,0x17,0x65,0xd3,0x5d,0xee,0xa0,0x9b,0xc2,0xbd,0x9f +.byte 0xcd,0xdc,0xde,0xd7,0x6c,0x95,0x7a,0xf1,0x09,0x4c,0x14,0xb9,0x37,0x1d,0xd0,0xdd,0x4b,0x2e,0x93,0x0b,0xfa,0x08,0x40,0x01,0x36,0xdf,0x89,0x46,0xa6,0xbb,0x19,0xd9,0x4f,0xf9,0xe1,0x7b,0x03,0xc9,0xef,0x01,0x25,0xe9,0x6d,0x95,0x84,0x7f,0xf8,0x8e,0x02,0xfd,0x6f,0x30,0xed,0x1b,0x98,0xd0,0xb3,0xdd,0x92,0x65,0x46,0x49,0x61,0xde +.byte 0x76,0xf5,0x4b,0x29,0x03,0x6f,0x79,0xee,0xbe,0x7a,0x07,0x6e,0xa8,0x29,0xb8,0x03,0xb4,0x6c,0x50,0x1f,0x4a,0xa2,0xaf,0xbd,0xde,0x18,0x72,0x90,0xa2,0x12,0xa9,0x59,0x7b,0xf6,0x96,0x2d,0xda,0x3d,0x90,0xba,0x7c,0x79,0x3e,0x6e,0xef,0x94,0x37,0xe2,0xef,0x6b,0x2a,0x74,0x6b,0x52,0xa0,0xc2,0x1e,0xa1,0x24,0x59,0x84,0xeb,0xdc,0xd0 +.byte 0x34,0x60,0xa8,0x81,0xaf,0xdd,0x57,0xc2,0xa6,0x02,0x7f,0xcf,0x9e,0x64,0x28,0x18,0x7c,0x95,0x98,0x90,0x7a,0x76,0x3f,0x78,0x16,0x2c,0xe0,0xa7,0xdf,0x0d,0x4d,0x5e,0xcc,0x0d,0x73,0x12,0x26,0xd7,0xe9,0x32,0x3e,0xa1,0xa9,0xde,0x29,0xb2,0x3b,0x6f,0x3b,0x6e,0x12,0x0c,0x10,0x34,0x86,0xf2,0xa0,0xd4,0x9c,0xf6,0x14,0x5a,0x41,0x06 +.byte 0x31,0xb1,0xe4,0x31,0x52,0xf4,0xcb,0xe3,0x39,0xcd,0x0b,0xc2,0xca,0x90,0xba,0xb3,0x21,0xbf,0x94,0x13,0x75,0x3b,0x0e,0x0a,0xc0,0x05,0x35,0xe6,0x28,0x74,0x63,0xc5,0x34,0x44,0xd8,0x9a,0x0e,0xec,0xb3,0x1b,0x30,0x58,0xfc,0xa0,0xc4,0xd1,0x26,0x50,0x6b,0x22,0x88,0xfc,0xad,0xa9,0xb4,0x3e,0x36,0xb6,0xb1,0x6d,0x62,0x7e,0x60,0x8f +.byte 0xf5,0x17,0x65,0x1c,0xf6,0x51,0x4d,0x89,0x4a,0x7e,0x5d,0x23,0x3b,0x83,0x1f,0xa6,0xc8,0xd2,0x1a,0x90,0xd3,0x53,0xfc,0x48,0x64,0x94,0x6e,0x1c,0x72,0xef,0x5d,0xd4,0x23,0xa2,0x3a,0x93,0xe4,0x29,0x33,0x8a,0xbd,0xe5,0x17,0xc2,0xe9,0x18,0x6a,0x81,0x1e,0x5b,0x03,0x41,0x45,0x35,0x14,0xe7,0xc8,0x45,0x5c,0x37,0x69,0x77,0x62,0xf8 +.byte 0xd7,0xec,0x9d,0x62,0x2e,0xfa,0x43,0x3a,0xdc,0x8b,0x86,0x86,0x1b,0x31,0x71,0x0e,0x92,0x59,0xf7,0xef,0x96,0xfd,0x04,0x1e,0x1d,0x74,0x7d,0x08,0x06,0x21,0x54,0x39,0xd3,0x9f,0x30,0xa1,0x19,0x7f,0xc8,0x19,0x16,0xd1,0x21,0x2a,0xf3,0x21,0xce,0x19,0x1a,0xde,0x70,0x1b,0x87,0x05,0x9e,0xe8,0xf3,0xfd,0x1d,0xaa,0x61,0x6c,0xfb,0xdf +.byte 0x50,0x9a,0xa0,0x32,0x4e,0xe4,0x68,0xda,0x0e,0x2f,0x2a,0x70,0xe1,0x51,0x66,0xb4,0x2d,0x5b,0xb6,0x32,0x3f,0xcb,0xc0,0xaf,0x01,0x03,0xcd,0xd6,0xb8,0x4e,0x3d,0x24,0x17,0xe2,0x30,0x3b,0xa4,0x08,0x0e,0x6a,0xcf,0xbe,0xc2,0x5c,0x79,0x5d,0x25,0xe2,0xae,0xa7,0x7f,0x42,0xff,0xa9,0xa5,0x05,0xbf,0xf4,0x92,0x30,0xaa,0x1d,0x96,0x7a +.byte 0x49,0xbc,0x1c,0xaa,0x5c,0x8d,0xe8,0xf3,0xd3,0x1a,0x67,0x7f,0x47,0x09,0x90,0x35,0x82,0x4e,0xcc,0x2e,0x50,0xfe,0x2c,0xb9,0x29,0x39,0xff,0x49,0x8f,0x7e,0x89,0x8d,0x4a,0x15,0xd1,0xd6,0x83,0xdb,0x25,0xac,0xc1,0x81,0x23,0x70,0x3f,0xb9,0xce,0x7f,0x03,0x46,0xa8,0x39,0xab,0xff,0x71,0xc9,0x7b,0x3c,0xb3,0x5e,0x9f,0xfe,0x8a,0x0a +.byte 0x39,0xad,0x6a,0xc1,0x8e,0x5a,0xa8,0x71,0xb7,0x01,0x25,0x28,0x15,0xd9,0x0a,0xae,0xc1,0xf9,0x23,0x1c,0xc1,0xe8,0x86,0x1d,0xb8,0x71,0x6e,0xa2,0xa4,0x67,0x22,0x4d,0x0e,0xd2,0xaa,0x70,0x26,0x23,0xfc,0x15,0xed,0x67,0x11,0x87,0x69,0x6f,0xc6,0x4c,0xe1,0x4b,0x04,0x86,0xe9,0x56,0x40,0xea,0x07,0xb1,0x6f,0xe9,0x8f,0xdd,0x2f,0xce +.byte 0x8d,0xca,0x0a,0x58,0x01,0x44,0x2c,0x74,0xd0,0x14,0x07,0x9a,0xb7,0x5a,0xc1,0xea,0xa9,0xdd,0xa4,0x94,0x84,0xc2,0x11,0xa5,0xe2,0x00,0xd8,0xfc,0x77,0xb9,0x5e,0xe6,0x72,0xef,0xc5,0x38,0xe0,0x90,0x11,0x16,0xfd,0xa7,0x77,0xbd,0x4c,0x1d,0xeb,0x32,0x54,0xdb,0x2a,0x43,0xa1,0x87,0xbb,0x2e,0x79,0x22,0x4d,0xb3,0xdf,0x1a,0xee,0x75 +.byte 0xb0,0xdd,0xf2,0x09,0x05,0xf4,0x6a,0x3c,0x86,0xc6,0xe7,0x60,0x2a,0xee,0xb6,0x55,0xae,0xdc,0xce,0xf8,0xe4,0xd7,0xdf,0x72,0x42,0x91,0x6d,0xc4,0xd8,0x60,0xf1,0xe8,0x06,0x71,0x38,0xa3,0x03,0x3e,0x1b,0x14,0x47,0x74,0x93,0xb5,0x61,0x28,0xde,0x23,0x8f,0xbe,0x88,0x5e,0xdf,0x87,0x47,0xd4,0x5f,0x91,0x40,0xeb,0x02,0xda,0x27,0x3b +.byte 0x65,0x9f,0xd8,0xf1,0x78,0x7f,0xba,0x9b,0x35,0xb3,0x10,0xaf,0x7f,0x51,0x37,0xa5,0x63,0x64,0x1f,0xf1,0xc3,0x1b,0x9e,0xe4,0xdd,0x93,0x8c,0x3a,0x98,0x20,0x9a,0x75,0x22,0x7b,0x48,0x0a,0x9d,0x55,0xed,0x07,0x1a,0x79,0x3b,0x98,0xe3,0x16,0x9b,0x16,0x2c,0xb2,0x03,0xc1,0xf5,0x6c,0xac,0x00,0x6a,0xb6,0xc1,0xc2,0x49,0x4d,0x9d,0xf5 +.byte 0x0e,0x7b,0x60,0x09,0xcc,0xa7,0x35,0xbb,0x70,0x34,0x18,0x49,0x2c,0xf1,0x41,0x4f,0xce,0x68,0x03,0x60,0x14,0xa7,0x2e,0x59,0x0f,0xa2,0xc4,0x2f,0x33,0xf0,0xb6,0xa4,0x31,0x75,0xdc,0xb4,0x88,0xe4,0xe3,0x0e,0x4b,0x3f,0x58,0xd0,0xa4,0xea,0x9a,0xef,0x47,0xb7,0xf7,0x20,0x71,0x52,0xd3,0x8a,0x1c,0xd9,0x2d,0x88,0x05,0x03,0x8a,0x1c +.byte 0x3d,0x69,0xf0,0x39,0xf0,0x25,0xad,0x95,0xd4,0x47,0x3c,0xbb,0xfa,0x48,0xd7,0x8e,0xf5,0xdc,0x33,0x43,0x0a,0xbb,0xf0,0xd3,0xb1,0xc3,0x94,0x81,0xcd,0x22,0x79,0xdc,0xd0,0x92,0x8b,0xd3,0xc3,0xac,0x73,0x72,0x83,0xaa,0xa2,0x52,0x13,0x27,0x0e,0xc5,0x8c,0xa5,0x69,0x21,0x6e,0x9c,0x9d,0x9b,0xeb,0x7a,0x19,0xfe,0xb6,0xdb,0x4e,0xc1 +.byte 0xa6,0xec,0x42,0xb0,0x86,0x69,0x60,0xde,0x36,0x11,0x6a,0x86,0xd7,0xbf,0x15,0x48,0xa2,0x73,0x8f,0x68,0xde,0xd6,0xb2,0x6d,0xe0,0xc5,0x1f,0x1f,0xd5,0xc5,0xef,0xce,0xa1,0x90,0x5c,0xe6,0x6c,0x15,0x73,0xa7,0xcc,0x2d,0xe8,0xcf,0x4c,0xc8,0x17,0x3c,0xfa,0x5e,0xdb,0x4f,0x54,0xf3,0xa3,0xff,0x50,0x3e,0x42,0x60,0x0d,0xf3,0xf7,0xbb +.byte 0xc6,0xf5,0xe7,0x63,0x50,0x49,0xc1,0x94,0x60,0x68,0xbd,0x62,0xc0,0x81,0x80,0x16,0xfd,0x65,0xfb,0x2e,0x23,0x67,0xb3,0xb6,0xf8,0x95,0xfa,0x00,0x3f,0x1d,0x10,0x16,0xd5,0xd9,0x66,0xf8,0x25,0xb4,0xce,0xf2,0x2e,0x4f,0xa2,0x21,0x14,0xbd,0x2c,0x63,0xec,0x44,0x57,0x07,0x87,0x3c,0x2f,0x22,0xcf,0x48,0xd3,0x20,0x51,0xfc,0x5d,0xd5 +.byte 0x9f,0x67,0x9c,0xaf,0xe3,0x89,0x36,0xc5,0xfa,0x7c,0xca,0x07,0xdc,0x56,0x2a,0x4e,0xa5,0x76,0xe6,0x09,0x99,0xfb,0xb7,0xba,0xaa,0x0b,0x9c,0xe2,0x0f,0x73,0xab,0x9b,0xbe,0x6f,0x50,0xe3,0xf7,0x28,0x32,0xf2,0xab,0x86,0xa3,0x89,0x3a,0xea,0xd7,0x52,0x52,0x6e,0xed,0x1b,0x94,0xf0,0x59,0x9d,0xbb,0x7a,0x88,0x6f,0xbf,0xaf,0x6a,0x87 +.byte 0x47,0x34,0x7f,0xf4,0x8b,0x0d,0x33,0x12,0x2b,0x67,0x6b,0xc9,0x1d,0x18,0x23,0x2e,0x54,0xee,0x07,0x28,0xbd,0x9d,0xa1,0xaf,0x85,0x7a,0x0f,0xe5,0x5d,0xf7,0x8b,0xca,0xd9,0x3d,0x8f,0x4f,0xcc,0xce,0xc3,0x6e,0x3a,0x40,0x08,0xd2,0x14,0xf0,0x28,0x9b,0xc0,0x4a,0x7a,0x3c,0xc2,0xed,0xe0,0x20,0x04,0xf5,0xf9,0xee,0xb8,0x35,0x94,0xbc +.byte 0x53,0x46,0xf2,0x1a,0xab,0xe9,0xde,0xd8,0x27,0x67,0x0d,0x63,0x2a,0x7b,0x3a,0x38,0x91,0xbc,0x48,0x2c,0x38,0x09,0xa0,0xe3,0x66,0xe3,0xeb,0xb9,0x02,0x2d,0x80,0x87,0x81,0x4f,0x5c,0x1c,0xfd,0x2b,0x0f,0x99,0x37,0x3a,0xfa,0x0f,0x8e,0x8c,0x87,0x76,0x72,0xd3,0xcf,0xc8,0x1e,0x8a,0x3b,0x97,0xa0,0xe6,0x32,0x66,0x3c,0x55,0x2c,0xfb +.byte 0xa9,0x41,0xfd,0xf9,0xd4,0x50,0xe0,0x5b,0x03,0xb7,0x1e,0x49,0xfa,0x59,0xeb,0x55,0xb1,0x21,0xd0,0x52,0xeb,0xe6,0x0f,0x21,0x81,0x4f,0x82,0x9a,0x8f,0x67,0x3d,0x0d,0x1d,0x11,0x1f,0x70,0x59,0x09,0x87,0x99,0xe5,0xf2,0x89,0xa6,0x56,0x8d,0x52,0x55,0xa8,0x91,0x5d,0x51,0x48,0xec,0x66,0x05,0xd6,0x18,0xd1,0x61,0x02,0x5a,0x80,0xcc +.byte 0xee,0xf3,0x3b,0x8e,0x73,0x2a,0xb1,0x22,0xda,0x1d,0xca,0xb2,0xd6,0x7f,0xd7,0x7d,0xaf,0x23,0x8d,0xff,0x24,0x8e,0x5e,0x38,0x29,0x23,0x1f,0xbc,0xfd,0xe4,0x3d,0xcd,0x66,0xe3,0xe1,0x0f,0x85,0xe3,0xda,0x34,0xc6,0xba,0x60,0x5f,0xaf,0x32,0x79,0x34,0xc0,0x01,0x93,0xae,0x1e,0x72,0x7f,0xd2,0x32,0xa1,0xdc,0x0b,0xca,0xee,0x5a,0x7a +.byte 0x09,0x98,0x2a,0x46,0x0a,0xe7,0xfd,0x0f,0x76,0xa0,0x3b,0x2b,0x3d,0xe5,0xcd,0x04,0xa2,0x5e,0x9b,0xba,0x4a,0xd5,0x0a,0xce,0x94,0x77,0xbb,0x24,0xa4,0x12,0xbc,0x24,0xb6,0x60,0x40,0x62,0xd2,0x70,0x0e,0x3f,0x62,0x72,0x2f,0xa1,0xc9,0x12,0x03,0x0f,0x39,0x57,0x77,0x7c,0x5c,0x31,0x13,0xcb,0x8c,0x2c,0x84,0xfd,0x7b,0x6f,0x60,0xbb +.byte 0x1a,0x0b,0x65,0x8c,0xc1,0xe6,0x4b,0x60,0x8c,0xe7,0x3e,0x94,0x2a,0xcc,0x70,0x9f,0xd0,0xfd,0x00,0x0e,0x36,0xb2,0xf1,0x62,0x78,0x6a,0xc8,0x9b,0xbe,0x8b,0x54,0xa7,0xad,0xee,0x3e,0x8e,0x1c,0x23,0xbe,0xa2,0x73,0x43,0xbe,0x15,0x32,0x84,0xdd,0x22,0x75,0xd5,0x9a,0xfb,0x93,0x38,0x55,0x2f,0xa4,0x34,0x4c,0x33,0xc3,0xd7,0x7c,0x9f +.byte 0x42,0x2f,0x9f,0xf6,0x27,0x90,0x15,0x6b,0x14,0x4f,0xbc,0x4b,0x07,0x42,0x24,0x98,0xa6,0xc4,0x4c,0x2f,0x22,0xd9,0x80,0x99,0x97,0x6b,0x7d,0xe8,0x2b,0x31,0x37,0xfe,0xd1,0x8b,0xbd,0xbf,0x08,0x4a,0x56,0x3d,0xff,0xb5,0x12,0x6d,0xc4,0xcf,0xbc,0x75,0xe9,0xe6,0x6f,0x1a,0x30,0x34,0x5b,0x2c,0x1d,0x8f,0x85,0xa0,0xe8,0xfd,0xfd,0xe2 +.byte 0xe7,0x13,0x73,0xcd,0x63,0x63,0x90,0xa5,0xa4,0x3f,0x91,0x65,0x77,0xd4,0xed,0x0c,0x1d,0x06,0x95,0x93,0x74,0x85,0xec,0x31,0xde,0xc9,0xb9,0x2e,0x7c,0x6d,0x2c,0x0d,0x15,0xb7,0x6b,0x0c,0xd2,0xe8,0xa8,0xcb,0x90,0x5c,0x11,0x53,0xc5,0x9d,0x54,0xf4,0x90,0xf7,0xc8,0x17,0x65,0xc0,0x3f,0xea,0xf6,0x28,0x8e,0xf0,0x1c,0x51,0xcc,0xfd +.byte 0x99,0x67,0x3d,0xa5,0x82,0x1f,0xb3,0x75,0x08,0x27,0x85,0xa9,0x7b,0x54,0x91,0x6e,0x80,0x9a,0xdb,0x6c,0x17,0x4a,0x36,0x73,0x0e,0x61,0x2e,0x01,0xae,0x32,0xf8,0x54,0xdb,0xcf,0x24,0xa5,0x13,0xb1,0x7e,0x0b,0xf5,0xe7,0x0e,0x27,0x9a,0xef,0x01,0x0b,0x34,0x4f,0x91,0xc2,0x93,0xe0,0xe6,0x14,0x64,0xf8,0x7b,0x41,0x37,0x22,0x39,0xad +.byte 0xf4,0xa9,0x3b,0xfb,0x7e,0x2b,0xd8,0x2b,0x0f,0x7e,0x40,0x55,0x5a,0x48,0x61,0x2f,0x95,0x5e,0x5c,0x25,0xe5,0x06,0x89,0x17,0x23,0xb6,0x1b,0x38,0x2e,0x7b,0x45,0xa5,0x11,0x0a,0x8d,0xd3,0x8d,0xb6,0x8d,0x47,0xc5,0x4f,0x8f,0x8b,0xe2,0x03,0x85,0xa1,0x5a,0xa2,0x8d,0xca,0x4d,0xef,0xc9,0xde,0x7d,0x06,0xa1,0x3f,0x21,0xb9,0x38,0x7b +.byte 0x91,0xf7,0x5c,0x9f,0x97,0xe3,0xeb,0x5d,0xea,0x5e,0xc1,0xa5,0x30,0xb0,0x7f,0xe0,0x4c,0xef,0xe5,0xe3,0xa0,0x2d,0x23,0xb6,0x08,0x21,0xe6,0x67,0x35,0x82,0x07,0x59,0x02,0xd4,0x68,0xa5,0xf1,0x42,0x70,0xb4,0x5e,0x54,0xed,0x1e,0x99,0xb2,0x55,0xf1,0x69,0x2e,0x7c,0xaa,0x6c,0x5e,0xd4,0xfa,0x16,0xa7,0x1f,0xdb,0x46,0x70,0x65,0x26 +.byte 0x98,0xf1,0xb6,0x42,0xb3,0x48,0x99,0x7c,0x07,0xbe,0x2b,0xee,0xb4,0xc1,0xf0,0xb7,0x47,0xf8,0xcf,0xe4,0x8d,0x34,0xa6,0xe5,0x17,0x9a,0xb7,0x2c,0x2e,0x03,0x30,0xfd,0xfb,0x42,0xe7,0xa1,0xe0,0x34,0x49,0x64,0xd8,0x0c,0xd5,0xb8,0x77,0x9f,0x0e,0xe2,0x73,0x0d,0x20,0x0c,0x21,0x07,0xaf,0x0f,0x93,0x94,0xd6,0xdc,0xe3,0xac,0x8d,0x8e +.byte 0xae,0x87,0xbd,0x2c,0x19,0x66,0xef,0x90,0x4a,0xd9,0xb0,0xf6,0xac,0x3a,0xe2,0xb5,0x2e,0xb4,0x63,0x91,0xf1,0x8b,0xac,0xce,0x51,0xc2,0xe0,0x02,0x7d,0xf8,0xab,0xe4,0xd6,0x85,0xd6,0xbb,0xd7,0x72,0xd0,0x5f,0x4e,0x90,0x09,0xcc,0x51,0xee,0x5b,0xad,0xb2,0xf6,0x16,0x37,0x09,0xa8,0xfc,0x74,0xa5,0x2e,0x26,0x27,0xff,0x53,0xd4,0x45 +.byte 0x82,0xb1,0xb6,0x16,0x65,0xc6,0xbb,0x54,0x0b,0x89,0xa1,0x0e,0x09,0x7c,0xc9,0xc9,0x48,0xa7,0x51,0x78,0x1d,0x3a,0x30,0xc5,0xe7,0x02,0x9e,0x91,0xd6,0x39,0xc8,0x35,0xf0,0x33,0xab,0xf6,0x0f,0xf9,0xce,0xef,0x26,0x46,0x48,0x56,0xbc,0x45,0x44,0xe2,0xd7,0xfc,0xdf,0xb2,0x95,0x20,0x07,0xeb,0x47,0x1c,0xde,0x88,0x5e,0x08,0xee,0xa1 +.byte 0x56,0x9a,0x5d,0x8f,0x35,0xc5,0xb3,0xd3,0x7d,0xe3,0x25,0x82,0xcc,0xcb,0xad,0xd8,0xef,0x83,0x76,0x08,0x55,0x9e,0xf4,0x00,0x1f,0x92,0x24,0x0e,0xf6,0x96,0x98,0x34,0x10,0x10,0x93,0x27,0x3b,0x96,0xbd,0x75,0x45,0x9d,0xad,0xc1,0x79,0xa7,0x09,0x68,0x0a,0xbc,0x14,0xe9,0x62,0xf6,0x5e,0x4e,0x6d,0xfb,0xf2,0x25,0x20,0x8b,0x53,0xa6 +.byte 0xc2,0x31,0x71,0xaa,0xfa,0xa2,0x1c,0xa1,0xb3,0xa2,0xd7,0x22,0x5a,0x72,0x61,0x5c,0x30,0x75,0xcc,0x82,0xb0,0xd0,0x07,0x8c,0x95,0x11,0x57,0xa4,0xe2,0x42,0xf3,0x3d,0x87,0x56,0x45,0x38,0xd6,0x1b,0x2b,0x26,0x11,0x99,0xce,0xcc,0x2e,0x96,0x1b,0xa1,0x06,0xa1,0xa9,0x65,0xe1,0x1f,0x53,0xb6,0x1e,0x5c,0x44,0x40,0xa2,0xf2,0x03,0xe7 +.byte 0x39,0x24,0x59,0x5f,0xdd,0x30,0xf0,0x78,0x9f,0x34,0xf1,0xd3,0x5d,0x9a,0xdd,0xf9,0x02,0x16,0x4b,0xfa,0x8d,0xab,0x2f,0x96,0xdb,0x67,0xf6,0x1e,0x7a,0xf8,0xd8,0xe6,0x71,0xdc,0x1a,0xbf,0x44,0xd2,0xbd,0xb3,0x6d,0x47,0x69,0xe0,0x14,0xef,0xe5,0x5e,0x0a,0xe9,0x1a,0x8b,0x3f,0x67,0x1e,0x1c,0x37,0x86,0x25,0x02,0x52,0x3f,0xf5,0xde +.byte 0xe0,0xbe,0x1d,0x61,0x44,0x3d,0xd2,0xe9,0x26,0x3d,0x4b,0xa4,0xb1,0xb9,0x62,0xc5,0x70,0xfb,0x1d,0xaf,0xe6,0x19,0x97,0x0f,0x6e,0x6d,0x4e,0xdf,0x5f,0xc9,0xb2,0xb0,0xb9,0x4b,0x72,0xc7,0x60,0x5d,0xf8,0x7d,0x3b,0xd8,0x74,0x29,0xf2,0x56,0x25,0xd9,0xd9,0x12,0x3a,0x50,0x01,0x54,0xd3,0x0e,0x4c,0xbd,0xc9,0xf5,0x66,0xc4,0x4b,0xa2 +.byte 0x68,0x31,0xb1,0x9d,0x47,0xd8,0x28,0xce,0x6b,0xe4,0x5f,0x78,0x75,0x22,0x7d,0x44,0x08,0x71,0xfb,0xd8,0xa0,0x6e,0xd1,0xbd,0x64,0x4e,0x00,0x99,0xf7,0x85,0xad,0x31,0xde,0x5c,0x4c,0x7c,0xc3,0x89,0x49,0x9f,0xea,0x22,0x86,0xa0,0x48,0x48,0xcf,0x47,0xfb,0x68,0x04,0x4c,0x05,0x62,0x57,0x60,0x9b,0xa0,0x37,0x41,0x77,0xe4,0x7d,0x3e +.byte 0x36,0xda,0xd5,0xfd,0x68,0x47,0x8c,0x68,0x61,0x4c,0xea,0x38,0x20,0xa5,0xe4,0x12,0x6e,0xd5,0x14,0x37,0x01,0xcf,0xbd,0xdd,0x55,0x97,0xb4,0x30,0xf0,0x65,0x15,0xee,0x1f,0xc8,0x5b,0x07,0x82,0xae,0x43,0xad,0x11,0xda,0x0e,0x61,0x23,0x0a,0x5f,0x52,0xf9,0x9d,0xc5,0x98,0x4e,0xaf,0x77,0x21,0xc8,0x9f,0x6d,0x25,0x94,0x4f,0x91,0x1a +.byte 0xb4,0x2d,0xe3,0x15,0xe5,0xe6,0x25,0xb8,0x8e,0xd8,0x33,0xe3,0x05,0x01,0x7b,0x6b,0xa8,0x39,0x44,0x4b,0x58,0x3c,0x17,0x53,0x17,0x5c,0xbc,0xd5,0xcd,0xd4,0x29,0xe7,0x17,0x7a,0x69,0xa6,0x75,0x8e,0x0a,0x00,0x41,0xbe,0xb4,0x8d,0x79,0x1d,0xac,0x2a,0x0f,0x9b,0x7b,0x5a,0xe8,0x17,0xe2,0xb3,0x1d,0x03,0xde,0x5a,0x7c,0x31,0x18,0x8c +.byte 0x1c,0xf9,0x19,0x7b,0x37,0x1f,0x53,0x77,0xce,0x1f,0xad,0xb6,0x0d,0x21,0xe1,0xb0,0xf9,0x42,0x52,0x99,0x02,0xa8,0x58,0xab,0x94,0xf8,0x9f,0x99,0x2d,0x1e,0x68,0x4f,0x5a,0x91,0x2b,0xdf,0xe8,0xe6,0x34,0xb6,0x80,0x9b,0xb1,0x0e,0x87,0xec,0x29,0x17,0x4d,0x98,0x2d,0x40,0xd0,0xf7,0xca,0x55,0x9d,0x56,0x19,0xd5,0x7c,0x4e,0x2e,0x75 +.byte 0x5d,0xe7,0x3e,0xed,0x47,0xdc,0xb1,0x04,0xe5,0x61,0x0f,0xe7,0xc4,0x16,0x71,0xf4,0xf8,0x8a,0xf1,0xfc,0xd5,0xdb,0xeb,0x0b,0x82,0x0f,0xfe,0x64,0xa2,0xb0,0x53,0xab,0xf5,0x01,0xc2,0x8f,0xa0,0x4d,0x5d,0x1b,0x54,0x32,0x48,0xca,0x8a,0x42,0x59,0x4a,0x85,0x68,0x75,0xd1,0x1b,0x03,0x11,0xfe,0x28,0xd7,0xd5,0x37,0x81,0x7a,0xfb,0x84 +.byte 0xfd,0xa8,0x98,0x54,0xf7,0x81,0xb0,0x2d,0x2d,0x5d,0x95,0x0a,0x5b,0x80,0x13,0x95,0xad,0x8f,0x88,0xaa,0x38,0x7e,0xbc,0x88,0xc2,0xf6,0xa6,0x1e,0x6d,0x78,0xc9,0x4f,0xa9,0xb3,0xaa,0x23,0x0c,0x62,0x19,0x6f,0x26,0x5d,0xca,0x36,0x23,0xf8,0xd1,0x76,0x80,0x32,0x59,0xa0,0x47,0x86,0xee,0xc9,0x0f,0x1d,0x37,0xd9,0xc9,0x4e,0x65,0x22 +.byte 0x17,0x95,0x88,0x85,0xb3,0x8a,0x5d,0xb9,0xe6,0x3b,0x6c,0x02,0x81,0x61,0xe0,0xab,0x19,0x6c,0x9a,0x29,0x33,0xf1,0x7b,0x0c,0x22,0x16,0x0c,0xd6,0xfa,0xc2,0x84,0xe5,0x74,0x9e,0x8e,0xf8,0xdb,0x44,0x68,0xa0,0x58,0x52,0x9f,0xad,0xe6,0x2b,0x23,0x70,0xf3,0x6e,0xdc,0xf1,0x2d,0xa5,0xc2,0x7f,0xef,0x5f,0x58,0xc2,0x96,0x66,0x67,0x4b +.byte 0x7c,0xe0,0xd7,0x96,0xda,0xf7,0xd7,0x7a,0x7d,0xb4,0x4f,0x48,0xbd,0x87,0x6b,0xf4,0xbd,0xd1,0x45,0xdc,0xba,0x4f,0xd2,0x00,0x7f,0xde,0x3c,0x57,0xd7,0x3b,0x5b,0xa9,0xf3,0x17,0x76,0x47,0x0c,0xcf,0x48,0x07,0xa8,0xc3,0x30,0x60,0xc6,0x98,0x20,0x29,0xba,0x5f,0x76,0x6d,0x63,0x5f,0x87,0x7e,0x36,0xbc,0xa3,0xe4,0xd6,0x6a,0x55,0x73 +.byte 0x8b,0x8b,0x62,0x40,0xc5,0x7e,0xa3,0x33,0x04,0xce,0xe2,0x9d,0x9f,0x67,0x1c,0xf0,0xa1,0x78,0xd2,0x0b,0x58,0xc1,0x2e,0xec,0x78,0x0a,0xc9,0x0b,0x1d,0xfb,0xcc,0x72,0xd8,0xe4,0x15,0xcb,0x09,0x8b,0xd9,0x33,0xa9,0xb6,0x24,0x7e,0x59,0x48,0xbf,0xda,0xdb,0x5c,0x99,0xd1,0x92,0x1b,0xb6,0xf6,0x75,0x78,0x53,0x69,0x89,0x27,0x6b,0x3c +.byte 0xfb,0xd2,0xa7,0xeb,0xc5,0xf7,0xea,0x8b,0x38,0x59,0x8e,0x02,0xc7,0x6e,0x96,0x8a,0x85,0x1c,0x91,0x1b,0x97,0x97,0x9e,0xa7,0x9d,0x10,0xa4,0x4a,0x6e,0xa8,0x51,0x05,0xbe,0x5f,0x9a,0x5b,0x94,0xf2,0x2c,0xa1,0x1e,0x33,0xc5,0xe8,0x92,0xb8,0xd2,0xfa,0x27,0x07,0x12,0xa1,0xdc,0x24,0x43,0x28,0x06,0xe5,0x43,0x57,0x8f,0x66,0x72,0x2f +.byte 0x26,0xf7,0xea,0xa1,0xcf,0x57,0xd6,0xa6,0xf7,0x37,0x1d,0x6e,0xd9,0xde,0x1a,0x8c,0xf5,0x01,0x76,0xc3,0x56,0x40,0x57,0x3d,0x4a,0x14,0x04,0xf2,0xfc,0xba,0x3b,0x60,0xf1,0x88,0x1e,0x16,0x08,0x99,0x90,0xfe,0x27,0xaa,0x04,0x53,0xd8,0x7e,0x0c,0x58,0x6a,0xd9,0x5a,0xe4,0x11,0xd4,0xcc,0x48,0xbe,0x03,0x08,0xbc,0x61,0x47,0xdd,0xde +.byte 0x5f,0x03,0xc7,0x8f,0x9c,0x08,0x93,0xe3,0xaa,0xee,0x9c,0xe3,0xc6,0x06,0x78,0xda,0x0a,0xdd,0xb0,0xc3,0xf3,0x0b,0xe5,0xa0,0x5f,0x1e,0x3e,0xb3,0x15,0x7f,0xf1,0xf4,0x38,0xb2,0xed,0xf2,0xa6,0x8b,0x1d,0x78,0xb6,0x03,0x19,0xcd,0x17,0xb4,0x18,0x17,0x49,0x61,0x17,0xbd,0xbe,0x4b,0x04,0x00,0xce,0x4b,0xcc,0x47,0x61,0x76,0x85,0xdc +.byte 0x2b,0x85,0x48,0x82,0xf4,0x9b,0xb4,0x62,0x53,0xc7,0x06,0x50,0xf2,0x3e,0xba,0x6d,0xf2,0x19,0x0f,0x7f,0x84,0xce,0xa6,0x4d,0x96,0x97,0x94,0x12,0xb6,0xd0,0xd6,0xa4,0xc1,0xcc,0x14,0x54,0xf6,0x7a,0xf1,0x94,0x62,0xa1,0xc7,0x22,0x9b,0x0d,0x0e,0x69,0xcf,0x38,0x5c,0xda,0x9f,0xc0,0xfa,0x93,0x81,0x24,0xce,0x9f,0xf3,0xc2,0x66,0xad +.byte 0x06,0x21,0xf2,0x48,0x6c,0x4a,0x0d,0xb8,0x41,0x86,0xaf,0xb7,0x6c,0x65,0xcb,0x83,0xd8,0x75,0x11,0x60,0xfa,0x06,0xe5,0xd2,0x11,0x87,0x29,0xb8,0x41,0xcb,0x17,0xb5,0xbd,0xbd,0xf9,0xd5,0xbc,0x89,0xb6,0x60,0x65,0x59,0xbb,0x38,0x9d,0x70,0xf9,0x81,0x6b,0xe6,0x12,0x80,0x08,0x73,0x9f,0xfb,0x2f,0x72,0x4e,0x18,0xff,0x65,0xab,0xa6 +.byte 0xaa,0x78,0xf1,0xa4,0xe9,0x1a,0x7d,0xa5,0xdd,0x91,0x77,0xa9,0xa3,0xf3,0xe3,0xe5,0x5a,0xa2,0x0d,0x3a,0x2a,0x4a,0x11,0x9a,0x8d,0xc3,0x00,0x6e,0xd4,0x4f,0xb9,0xe7,0x39,0x78,0x89,0x64,0xb2,0xc8,0xfd,0x1f,0xe6,0xa9,0x54,0x17,0x83,0x3f,0xeb,0x97,0x77,0xac,0xc8,0xba,0x0e,0x77,0x02,0xb0,0x29,0xbe,0x51,0x62,0xef,0xa5,0xd5,0xab +.byte 0x79,0x98,0xab,0x7a,0x1e,0x13,0xe8,0x87,0x4f,0x61,0xa3,0x37,0xdf,0xe6,0xda,0xb9,0xf5,0x69,0xf7,0x7a,0xee,0xd6,0x5f,0x6a,0xb3,0x95,0x55,0x59,0xd1,0x6c,0x5b,0xd5,0xba,0x8b,0x74,0x85,0xbf,0x1e,0xe5,0xb3,0x24,0x28,0x4b,0xc8,0x4a,0xec,0xa1,0x1d,0xda,0x99,0x3f,0xdf,0xfc,0xe6,0x2e,0x1b,0xa4,0xba,0x1a,0x03,0x89,0xb7,0x93,0x4e +.byte 0xaf,0x40,0xb0,0x7e,0x3f,0x34,0x0d,0x94,0x75,0x8c,0x8a,0xfb,0x88,0xcd,0xd3,0xc2,0x61,0x95,0x63,0x51,0xaa,0x78,0x1f,0x24,0x95,0x5a,0xb5,0x98,0x9a,0xd4,0xb8,0x34,0xe1,0x47,0x1c,0x68,0x0f,0x08,0xf1,0x69,0xe6,0xd4,0xaf,0x23,0xf6,0x32,0x71,0x51,0x01,0xa9,0xf2,0xa1,0x45,0x0b,0x75,0x82,0x09,0xe4,0x9c,0x2a,0x1d,0x0b,0xd6,0xd2 +.byte 0x26,0xe8,0x30,0x44,0xdf,0xa3,0x2b,0x97,0x11,0xc7,0xe7,0x47,0xfd,0xc7,0xbf,0x59,0xf3,0x28,0x32,0x46,0xc0,0xc4,0x7a,0x96,0x08,0x0d,0x2c,0xa1,0x82,0x6c,0x0a,0x33,0x82,0x55,0xd7,0xcf,0x3e,0x08,0xbb,0x22,0x15,0x96,0x12,0x66,0xd2,0xae,0x21,0x3a,0x54,0x6a,0xe0,0x33,0x0c,0xa4,0x96,0x4b,0x5d,0xf2,0x86,0xb9,0x70,0xe4,0x65,0x45 +.byte 0xe4,0x2f,0xa7,0xb4,0xc1,0xd5,0x9a,0x02,0xa1,0x5b,0x4e,0x58,0xca,0xf8,0x63,0xae,0x45,0x1c,0xf4,0xa7,0xc8,0xa5,0x84,0x23,0x87,0xcb,0x3e,0x88,0xca,0xe9,0xa9,0x49,0xc5,0xc6,0x63,0x37,0x99,0xe0,0x27,0x03,0x96,0x7b,0x73,0x8c,0x36,0xde,0x89,0x80,0x30,0x2c,0x00,0x94,0x0b,0xfb,0x1f,0x39,0xe0,0xed,0xb6,0x31,0x21,0x90,0xfe,0xa4 +.byte 0xee,0xa5,0xe5,0x7b,0x9a,0x11,0x41,0x51,0xab,0x89,0x54,0xe0,0x8d,0x5f,0x10,0x1b,0x76,0x27,0x77,0x3d,0xb0,0x58,0x86,0x7b,0xb7,0x45,0xfb,0xd0,0x81,0xa8,0xcd,0xc0,0xc8,0x5f,0xfb,0xfe,0x8c,0x0a,0x3d,0x5d,0x61,0x4b,0x9b,0x32,0x75,0x66,0xa9,0xac,0x32,0x35,0xe9,0x1a,0xdf,0x06,0x8d,0x13,0x5d,0x40,0xcb,0x7d,0x50,0x3e,0x54,0xab +.byte 0x04,0xbc,0x83,0x32,0x8f,0xf5,0x93,0x1d,0x9b,0x5a,0xe1,0x19,0x70,0x4a,0xba,0xfc,0x4c,0x6a,0xf3,0xd6,0xd1,0xfd,0x48,0xd0,0x7c,0xa4,0xab,0x0b,0xb6,0x5f,0xe1,0x31,0xce,0x99,0x10,0x98,0xfc,0x6e,0x1c,0xaa,0x9c,0x34,0xa2,0x55,0xdc,0xe0,0x81,0x1b,0x9e,0xff,0x75,0x2e,0x25,0xe9,0x2c,0x20,0x83,0xf6,0x66,0xf9,0x63,0x31,0xfe,0xa7 +.byte 0xbf,0x4d,0xfd,0xff,0x0b,0x93,0x84,0xd4,0xb4,0x72,0x13,0x38,0x90,0x75,0xc9,0xff,0x61,0x4b,0xf9,0x55,0x62,0x58,0xf0,0x60,0xce,0x2d,0xec,0x94,0x06,0x0a,0xde,0x48,0xc0,0x46,0x89,0xfb,0x5c,0xf7,0x9f,0x37,0xad,0xd2,0xff,0xbe,0xfb,0x81,0x21,0xe0,0x20,0x43,0x88,0xad,0x40,0x47,0x7a,0xa9,0x30,0x88,0x10,0x16,0x41,0xf8,0x25,0xe0 +.byte 0x8f,0xc2,0xe3,0x9f,0x48,0xd3,0xfe,0x61,0x70,0xb9,0xa1,0x9e,0xaa,0xa6,0x73,0xcf,0xc3,0xd6,0xab,0x69,0x65,0x4a,0x3c,0xec,0x28,0x02,0x63,0x62,0xa1,0xb6,0xa3,0xd5,0x8c,0x9e,0x11,0x81,0x98,0x12,0x4f,0xec,0xb6,0xe5,0x3a,0x96,0xa1,0x11,0x13,0x77,0x5f,0x0f,0x19,0x40,0x14,0x28,0xcc,0xf1,0x3e,0x19,0x1d,0x78,0x31,0xac,0x5c,0xce +.byte 0xd7,0x29,0xfa,0x02,0x3b,0x29,0xd8,0x3a,0x37,0xcb,0x94,0xb2,0x38,0xc7,0x7f,0x3a,0x46,0xd2,0xb7,0xfe,0xfb,0x54,0x7c,0x01,0xa2,0x9b,0x53,0x57,0x04,0x73,0x4e,0x06,0x90,0xe5,0x78,0x0a,0x45,0x67,0x12,0x83,0xd7,0x31,0x59,0xa4,0x76,0xaa,0x7c,0xde,0x72,0x92,0x11,0x94,0x4c,0x6a,0xe4,0x35,0x35,0x3a,0x2e,0xef,0x7c,0xc1,0x91,0x76 +.byte 0xd0,0xfe,0x84,0xd1,0xa1,0xf9,0x03,0xc3,0xba,0x09,0xbb,0x2c,0xe2,0xb5,0x06,0x7e,0x23,0xb7,0xe0,0xc1,0xd3,0xfd,0x55,0x01,0xf3,0xba,0xc5,0x1b,0xf8,0x02,0x60,0x92,0x0a,0x93,0x1c,0xc4,0x19,0x03,0x88,0xf5,0x45,0xe5,0x8f,0x7d,0xce,0x2c,0x87,0x2e,0xf6,0x55,0x8c,0xf9,0xb0,0xd2,0x72,0x2d,0x93,0x6d,0x28,0x6e,0x8e,0x3a,0xed,0x68 +.byte 0x02,0xda,0x80,0xd0,0x71,0x4a,0x8f,0x06,0x59,0x38,0x89,0x81,0xcb,0x1a,0x74,0x1e,0x62,0xa3,0xa5,0xb8,0x85,0xc3,0xd2,0x04,0x3d,0x3b,0x93,0x36,0x0c,0x12,0x55,0xfb,0x7b,0xc8,0xa3,0x25,0xa7,0x93,0xb0,0x3e,0x49,0x86,0xbf,0x76,0x8f,0xc4,0x4c,0xfe,0xce,0x4a,0xf6,0x2f,0x15,0x33,0x06,0x3a,0x35,0x49,0xe7,0x08,0xff,0x99,0xac,0xf6 +.byte 0x20,0x6d,0xab,0xb2,0x05,0xa9,0xe4,0x06,0x57,0x9c,0xf4,0x76,0x8c,0x82,0x64,0xd5,0x67,0xe0,0xad,0xe1,0x69,0xdc,0x9e,0x2c,0x59,0x92,0x3a,0xc8,0xc1,0x0a,0x61,0x89,0x45,0x9f,0x8b,0xf8,0x64,0x0a,0x5a,0x75,0x55,0x37,0x24,0xe1,0x42,0x43,0x7c,0x9c,0xcd,0x4e,0x9e,0x19,0xfb,0xd9,0x15,0x29,0x30,0x52,0x33,0xf3,0xc8,0x88,0xdb,0xaa +.byte 0x07,0x27,0xfb,0x2b,0x0c,0xc0,0xa1,0x5f,0x51,0xf1,0x54,0xf8,0x90,0x0a,0x35,0x07,0x6e,0x9c,0x64,0xd8,0x4f,0x2d,0xb3,0x61,0xbc,0x18,0x1f,0x22,0x84,0x94,0x4b,0x85,0xfc,0x4a,0xf9,0xe5,0xfc,0xdd,0x7a,0x07,0xa2,0xbb,0xbe,0x7e,0x1f,0x4e,0xf9,0x29,0xb8,0xde,0x56,0xe9,0x04,0xc1,0xc2,0xb6,0xa8,0xc7,0xb6,0x83,0xf2,0x85,0x3d,0x35 +.byte 0xe3,0xeb,0x2f,0x2f,0x3c,0x1a,0x3a,0xf1,0x61,0x1f,0xe8,0xf0,0xce,0xa2,0x29,0xda,0x3f,0x38,0xf5,0x82,0x7a,0xb8,0x55,0xf1,0x1a,0x6e,0x5b,0x5c,0xd0,0xc8,0xc8,0x3a,0xe2,0xaf,0xb4,0x6f,0xba,0xe4,0x03,0x78,0x5f,0x47,0x4b,0xaf,0xfe,0x2a,0x7e,0x27,0xba,0x17,0xb4,0x92,0x27,0x70,0x13,0xd9,0xbb,0x6b,0x1c,0x9a,0x3e,0x29,0x85,0x9a +.byte 0xb7,0x64,0x5b,0x6d,0x7b,0xec,0xb2,0x26,0x3a,0x4b,0xb7,0x17,0xaf,0xb5,0xa1,0xbc,0x4d,0x67,0x4c,0x86,0xd1,0x53,0x2e,0x5d,0x64,0xe8,0x55,0xd9,0xbb,0xae,0xc1,0x55,0x41,0x99,0x8e,0x4d,0xed,0x3d,0x9e,0xea,0xe3,0xf2,0x76,0x45,0x6d,0xaa,0xbb,0x89,0x0b,0xc0,0x13,0xfe,0x99,0x2c,0xb0,0xd2,0xa9,0xeb,0x58,0x57,0x4d,0x88,0x2e,0x04 +.byte 0x4f,0x7a,0x76,0xaa,0x3a,0xa6,0x08,0x93,0x42,0x74,0x2f,0x3a,0x35,0xb0,0x36,0xcc,0x77,0xec,0x54,0x41,0x2e,0x81,0xf6,0x9f,0xf3,0xe7,0x23,0xc0,0x3f,0xa4,0x52,0x83,0x38,0xe2,0x12,0xed,0xdb,0x23,0xa0,0x0b,0xbf,0x61,0x98,0x89,0xb0,0xa4,0x3d,0xa9,0x6a,0x73,0xa1,0x99,0xc9,0x9e,0x68,0x45,0x37,0x4b,0x6c,0x87,0xfb,0x93,0xf2,0xaa +.byte 0xe8,0x1d,0x53,0x6c,0x4b,0xda,0xc5,0x6f,0xaa,0xde,0x99,0xd2,0xba,0x7c,0x27,0xc2,0x4e,0xd5,0x5b,0xc8,0x13,0x9e,0xa2,0x10,0x6a,0xbb,0x39,0xf9,0xa7,0x55,0x0a,0x65,0x88,0x3c,0x9b,0xff,0x83,0x4e,0xf7,0x9c,0x99,0x69,0xbd,0x64,0x0d,0xd1,0xc0,0xb0,0x43,0xd6,0x63,0x50,0x13,0x68,0x8d,0xd1,0x7e,0x56,0x93,0xb5,0x8e,0x8f,0x12,0xe5 +.byte 0x37,0x96,0x21,0x64,0xd5,0x0b,0xf6,0x27,0xf8,0xaa,0x34,0x8e,0xc4,0x2b,0x7b,0x6a,0x7c,0x89,0x4e,0x15,0x15,0x3d,0x17,0x93,0xd4,0x99,0xfe,0x97,0x95,0x20,0x85,0xcc,0xd4,0xcd,0x73,0x67,0x80,0x22,0x06,0xed,0x5e,0xce,0x90,0x59,0x01,0x31,0x24,0x17,0x37,0x4a,0x63,0x96,0xc2,0xf3,0xe0,0x21,0x0a,0x3b,0x9f,0x94,0xad,0xd6,0xa4,0xa9 +.byte 0xa2,0x54,0x0d,0x2a,0xb3,0x5c,0xfa,0xbe,0xeb,0x21,0xd6,0x13,0x22,0xa5,0x95,0x5e,0x25,0x72,0xf9,0x18,0x1f,0x50,0x64,0x04,0x5b,0xe8,0x0e,0x1f,0x6c,0xe1,0x4e,0xf5,0x7f,0xf0,0x13,0x4f,0xda,0x75,0xab,0x5a,0x98,0xd3,0x07,0x32,0x96,0x2a,0xc7,0x1e,0x0f,0x14,0xdb,0x96,0x5f,0xac,0xc1,0xef,0x5b,0x2d,0xd6,0x6d,0x13,0x01,0xd9,0x04 +.byte 0x9c,0xcd,0xe5,0x5e,0xbe,0x3a,0x47,0x14,0x09,0xbe,0x11,0xad,0x87,0x3f,0x0e,0xe1,0xcb,0x97,0xd0,0x6e,0x1f,0x49,0x07,0xd1,0x8c,0x2b,0xe0,0xf0,0xb2,0xaa,0x8b,0x70,0x18,0x7f,0x29,0xcc,0xc4,0x23,0x66,0x48,0xc4,0xb5,0x5e,0xf1,0x10,0xd7,0x1d,0x2a,0xba,0xe4,0x12,0x64,0x1d,0xf5,0x03,0x35,0x71,0x57,0x5d,0xf4,0xa4,0xb5,0x99,0x0b +.byte 0x4c,0x80,0x65,0x07,0x2f,0xbc,0xf7,0x28,0x8b,0xc0,0x8f,0x84,0x63,0x7e,0xf5,0x01,0x23,0x8c,0xaf,0x71,0x35,0xd4,0xe1,0x70,0xc7,0xef,0x1f,0x66,0xa9,0x34,0x57,0xaa,0x9a,0xbb,0x80,0x43,0x15,0x96,0xc4,0x03,0xd9,0xae,0xbe,0x89,0x1c,0xa1,0x9f,0x65,0x61,0xe5,0x90,0x9f,0xa6,0xf4,0x3b,0xde,0xa1,0xd1,0xf1,0xf9,0x2d,0xd7,0xa7,0x7e +.byte 0x3d,0x42,0x3d,0x1b,0x99,0xed,0x49,0x2e,0x92,0x6b,0x47,0x0e,0x0b,0x90,0x56,0xe0,0x1b,0x6b,0xfe,0x97,0xfe,0x9b,0xa2,0x50,0xcc,0xbf,0xea,0xae,0xe8,0xf0,0xc4,0xe5,0x81,0x20,0x4a,0xb0,0xf7,0xa5,0x23,0x24,0xf6,0x3f,0x9e,0x9c,0xcc,0xce,0xe4,0x95,0x49,0xea,0x66,0x4a,0x35,0x31,0xf3,0x03,0xc3,0x08,0xf9,0x5f,0x95,0x4c,0xbc,0x84 +.byte 0x13,0xbe,0x7f,0x35,0xbb,0xd7,0x35,0x3c,0xfb,0x05,0x43,0x95,0xbf,0x87,0xf2,0xc3,0x2d,0xef,0x13,0x1d,0x65,0x17,0x82,0x75,0x3d,0x67,0x51,0xcd,0x6e,0x42,0x5f,0x49,0x53,0x8b,0xaf,0x34,0x7d,0xa8,0xc1,0x45,0xcd,0x3d,0x29,0x00,0xa3,0xf3,0xbb,0x44,0x00,0x05,0x57,0xa5,0xeb,0xfd,0x98,0xa6,0xae,0xc6,0xc4,0x6c,0x6d,0x7d,0xf6,0x3e +.byte 0x82,0x1d,0x12,0xe7,0xcd,0xd2,0xd5,0xfe,0x41,0xf8,0xa4,0xb3,0x6a,0x04,0x13,0x28,0x10,0x40,0x27,0xc9,0x43,0x74,0xcf,0xaf,0x9b,0x60,0x17,0x43,0x8f,0xd7,0xb7,0x56,0x72,0xf3,0x48,0x0a,0xe6,0x36,0xf2,0x3f,0x51,0xf9,0x6e,0xc8,0xa3,0x04,0x8c,0x01,0x86,0x6e,0x83,0x27,0xe2,0xba,0xf2,0x8f,0x8f,0xa1,0x39,0xe7,0x17,0xdd,0x06,0x10 +.byte 0x0c,0x7f,0xfa,0x22,0x5d,0x88,0x35,0xc6,0xcd,0x60,0xa2,0xf0,0xfd,0xc9,0xed,0x85,0xac,0x88,0xfd,0x7d,0xc0,0x77,0x1b,0x80,0x3d,0x21,0x1e,0x8e,0x4d,0xdb,0x20,0xe2,0x38,0xad,0xd4,0xb5,0x2b,0x2b,0x31,0xbc,0x7b,0x02,0xa2,0x25,0x50,0xc0,0x01,0x20,0x76,0x6f,0x98,0x0b,0x3d,0x46,0xed,0xbb,0x2b,0x39,0x74,0x30,0xce,0x3e,0x6d,0x91 +.byte 0xa1,0x89,0x83,0xde,0x69,0x93,0x1a,0x14,0xa1,0xb0,0xaa,0x80,0xb0,0x1c,0x02,0x3f,0x13,0x9a,0x15,0x7f,0xb4,0x02,0x8f,0x30,0x0b,0xee,0xd9,0x72,0xcb,0x74,0x95,0x4a,0x39,0xb3,0x4e,0x78,0x12,0xb1,0x77,0x89,0xc0,0xaf,0x17,0xfd,0xc1,0x68,0x65,0xd1,0x08,0xae,0x56,0x5c,0xe0,0xe7,0x6f,0xb3,0x1e,0x10,0xce,0xd8,0xdf,0xee,0x67,0xad +.byte 0xd8,0x08,0xe0,0x79,0x36,0xe4,0x57,0x1c,0x45,0x22,0xa7,0x44,0xa8,0x12,0x37,0x92,0x85,0x9f,0x3a,0x48,0xd0,0xfd,0xb3,0x40,0x20,0x10,0xed,0x11,0xe0,0x9a,0xa6,0x09,0x5b,0xe9,0x21,0x95,0xe1,0x45,0x19,0x39,0xcc,0x85,0x5f,0xa5,0x6b,0x46,0x37,0xe1,0xa1,0x17,0x3f,0xb6,0xe9,0xb0,0x81,0x25,0xf6,0xd1,0xb8,0x22,0x5a,0x27,0x48,0x83 +.byte 0x01,0x36,0xd4,0xb8,0xc0,0x9f,0x37,0x52,0x22,0xd2,0x69,0x7b,0x3d,0xfb,0x31,0xc1,0xa3,0xb4,0xa1,0x1d,0x0e,0x24,0x9a,0xda,0x02,0x15,0x4b,0x46,0x24,0x0e,0xb1,0x79,0xc2,0x5b,0x01,0x60,0x4a,0x24,0x8a,0xbb,0x70,0xaa,0xf4,0x45,0xc1,0x0d,0x04,0x26,0x3f,0x74,0xbd,0xdd,0x33,0xaa,0xd6,0x62,0x56,0xb1,0xe7,0x2d,0x7b,0x66,0xa2,0x40 +.byte 0xb4,0xe4,0xbd,0x8e,0x35,0xba,0xf1,0x2f,0x59,0xa7,0x01,0x6d,0x5a,0xa7,0xa6,0x3b,0x82,0xa3,0xb4,0x54,0x51,0x33,0x6b,0xfb,0x78,0x4a,0x74,0x88,0x7f,0x55,0xea,0x08,0x8e,0x19,0x78,0xbc,0x80,0x19,0x2f,0x41,0x97,0x20,0xa0,0x9e,0xbf,0x44,0xae,0x2e,0x26,0x66,0xe3,0x25,0xa0,0x92,0xa9,0xbe,0x8c,0x0d,0x96,0xec,0x93,0x99,0xe2,0xe7 +.byte 0x81,0xd5,0x10,0x62,0x3a,0x97,0x38,0x51,0x36,0x11,0x00,0xe0,0xc1,0x3a,0xc5,0xd4,0xa5,0x19,0xf4,0x82,0x66,0x0c,0xf9,0xb3,0x04,0x3e,0x57,0xc3,0x43,0xab,0xc6,0x52,0x95,0x8f,0xd3,0xf1,0xde,0xd9,0x57,0x6d,0x32,0x4f,0xc7,0x8c,0x1b,0x7a,0x53,0x6a,0xcf,0x56,0xea,0x61,0xb4,0xe5,0x64,0x2d,0x02,0x26,0x5b,0xcf,0x1c,0xc7,0x37,0xc3 +.byte 0x41,0xd2,0x1b,0x6c,0x5b,0x47,0xb8,0x73,0x89,0xfe,0x0e,0x7a,0x35,0x05,0xfc,0xea,0x6a,0x34,0x74,0x69,0xf0,0x12,0x29,0xa9,0x33,0xce,0x93,0x15,0xa0,0x68,0xb3,0x46,0x43,0xdb,0x8d,0xfa,0xef,0x93,0x66,0x72,0x18,0xae,0xe4,0xab,0xf4,0x8a,0xd1,0xb5,0x42,0xbd,0x2d,0xda,0xcb,0xf6,0x44,0x25,0xb1,0x01,0x8a,0xff,0xd5,0x34,0x16,0xec +.byte 0x7e,0x38,0x7b,0x50,0x41,0x61,0xf9,0xdf,0x4c,0x3e,0x02,0xd6,0xc3,0xce,0x19,0x9f,0x12,0x45,0x0c,0x99,0xb1,0xd9,0xeb,0xb9,0xe3,0xd5,0xb6,0x2b,0x25,0x8c,0x0b,0x04,0xf8,0x8d,0x41,0x41,0x3d,0x39,0x1b,0x7f,0x88,0xa7,0x8f,0x61,0x30,0xfe,0x67,0x75,0x35,0xd1,0x41,0x90,0xda,0x73,0x80,0xcf,0xc9,0xf6,0x44,0x00,0x67,0xcd,0xca,0xaf +.byte 0x6d,0x84,0x39,0x9a,0xb2,0xbb,0xfc,0xac,0x9b,0xb2,0x95,0x2f,0xc9,0x06,0x3a,0xa4,0x7b,0x9a,0x25,0xc6,0xe5,0xdb,0x7a,0xc6,0x8b,0x84,0x6a,0xb7,0x1e,0x22,0xaa,0x10,0x96,0xd3,0x55,0x50,0xa2,0x02,0x04,0x69,0x92,0xd7,0x6b,0x1f,0x9b,0x45,0x07,0x71,0xda,0xdc,0x76,0xc5,0xb8,0x34,0xa2,0x32,0x33,0x16,0x2e,0xb0,0x2a,0x90,0x43,0x40 +.byte 0x92,0x77,0x74,0x4e,0xdc,0xb4,0xe2,0x7d,0xc1,0x57,0xaf,0xf4,0x2c,0x20,0x65,0x77,0x88,0xc9,0x6e,0x69,0x38,0xc8,0x19,0x95,0x32,0x54,0x59,0x7f,0x37,0xd7,0x3c,0x07,0x05,0x87,0x2b,0xf9,0x58,0x74,0xc7,0x61,0x13,0x3d,0xc2,0xd9,0xec,0x3b,0x36,0x9f,0x8e,0xae,0x52,0xdd,0x5c,0xaa,0x29,0x6b,0x31,0x34,0x48,0x61,0x34,0x62,0x56,0xce +.byte 0x25,0xa8,0xc0,0x62,0xf5,0x35,0x58,0x4d,0x8e,0x61,0xd4,0xae,0x25,0x50,0xee,0x45,0xdd,0x14,0x7d,0x46,0x81,0x47,0xc3,0x3f,0x3f,0x81,0xdb,0x9a,0x59,0x56,0x4f,0x45,0xed,0x9c,0xe2,0xfc,0x96,0xff,0x5d,0x37,0x70,0xad,0xd2,0xeb,0xd9,0x2d,0x2a,0xaf,0xb9,0x16,0x4a,0x79,0x5d,0x76,0xb5,0x8f,0x74,0x19,0x6f,0x74,0x7d,0x4a,0xee,0x83 +.byte 0xa5,0x81,0xf3,0xd5,0xa0,0x43,0x5e,0x46,0xba,0xbe,0x49,0xa8,0xce,0x72,0x36,0x32,0xcd,0x8c,0x9b,0xa0,0xf9,0x5d,0xb7,0xb9,0xc7,0x8c,0xb2,0x59,0xb4,0x44,0xc1,0x90,0x53,0x92,0xd2,0xa8,0x4c,0xf9,0x35,0x40,0x32,0xd1,0xf0,0x2f,0xcb,0x6a,0x0b,0xe0,0xbe,0x34,0xc9,0x82,0x18,0x8d,0xfb,0xfc,0x50,0x8d,0x67,0xd5,0x86,0xd4,0xf1,0xb1 +.byte 0xaa,0x2f,0x9c,0xbc,0x52,0xbb,0x9f,0x17,0x1c,0x74,0x1d,0xdf,0x2d,0x1a,0x94,0x43,0x9b,0x80,0xb9,0x48,0xa3,0xaf,0x4b,0x30,0x0d,0xd9,0x3f,0x11,0x48,0x79,0x60,0xcc,0x25,0x6a,0xdb,0x8a,0xda,0xab,0xda,0x09,0x7c,0x9c,0x4a,0xaf,0xf9,0x0d,0xfb,0x7a,0x92,0x61,0xa5,0x17,0xf8,0x79,0x1b,0x00,0x52,0x56,0x5e,0x27,0x22,0x37,0xf4,0xbe +.byte 0x52,0x36,0xd3,0xdc,0x9a,0x33,0xf5,0x44,0x0e,0x53,0x0b,0xf6,0x9b,0xb0,0xb6,0x11,0xe4,0xd5,0x45,0x2e,0xdc,0xdb,0x46,0x18,0x9a,0x90,0x8b,0xcc,0xfe,0xc6,0x94,0x4f,0x97,0xb9,0x42,0xb6,0xd3,0x8f,0x7c,0x20,0xd1,0xa8,0xe6,0x85,0xce,0x65,0xeb,0x95,0x38,0x11,0x5c,0x1a,0x9d,0x34,0x25,0xc2,0xf0,0x33,0xbb,0x2c,0xc9,0x8d,0x0a,0x7a +.byte 0xb1,0x90,0x9f,0x24,0xed,0x35,0x3c,0x7e,0x71,0x82,0x12,0x3a,0x79,0x29,0xc8,0xa7,0x3e,0xa2,0x4e,0x50,0x03,0x94,0x7a,0x94,0xb7,0x2b,0x61,0x95,0x3d,0x5e,0x60,0x1c,0x68,0x51,0x82,0x73,0xe0,0x4a,0x2a,0x48,0x26,0xda,0xa3,0x53,0x8c,0x83,0xba,0x9f,0x95,0x37,0x5e,0x68,0x54,0x19,0x21,0xf8,0x31,0xaf,0x6b,0xfc,0x3a,0x3e,0xe3,0x3f +.byte 0xdb,0x16,0xb5,0x7e,0x13,0xf8,0xfd,0x7f,0x36,0xd6,0x8e,0x33,0xaa,0xe9,0xa4,0xa7,0xfd,0xf0,0x32,0xa6,0xdf,0xfa,0x22,0x7d,0xff,0x2a,0xe6,0x0d,0x6f,0xe2,0x21,0x54,0x6c,0x1a,0x99,0x17,0x56,0xad,0xce,0x39,0x6b,0x1a,0xe8,0x27,0x13,0x12,0x9c,0x4b,0x84,0x69,0x73,0xde,0x44,0x14,0xb2,0x7c,0x44,0x54,0x91,0x4f,0xeb,0x83,0xec,0x04 +.byte 0x73,0x85,0xb1,0xa8,0x44,0x72,0xa7,0x77,0xaf,0x0c,0xe0,0x52,0x65,0x04,0xe7,0x2a,0xee,0x0c,0x20,0x83,0x32,0x34,0x17,0x00,0x61,0xf9,0xf5,0x42,0x03,0xa4,0xb8,0x02,0x6f,0xb2,0xd3,0x65,0x51,0x2a,0x8e,0xdf,0x28,0x78,0x8a,0x8a,0x00,0xfb,0x24,0xd6,0xd5,0x86,0xaa,0xfb,0x86,0x93,0x5d,0x11,0xa4,0xf3,0xfd,0x36,0x18,0xf3,0x61,0xea +.byte 0x33,0xa8,0x0c,0xf0,0xb4,0x68,0xee,0xd3,0xe3,0x4f,0x22,0x24,0xde,0x1f,0x29,0x84,0x8b,0x5b,0x73,0x15,0xd6,0x62,0xa3,0x71,0x7d,0xf0,0x65,0x36,0xca,0x68,0x8a,0x6d,0x61,0x9c,0x0d,0x53,0xdd,0xf4,0x12,0xb3,0x5f,0xf0,0xb1,0x86,0xd6,0xe2,0xd6,0x80,0x4a,0x01,0x09,0x99,0x65,0xdb,0xae,0xe6,0xfc,0x68,0x5b,0xf9,0x10,0x99,0x8b,0x9f +.byte 0x08,0x52,0x09,0xae,0x59,0x4d,0x6c,0xf9,0x91,0x2b,0x57,0xea,0xf0,0xa3,0xdb,0xb8,0x99,0x29,0x2f,0xab,0x95,0x01,0x7d,0xec,0xd8,0x77,0x73,0x75,0x4f,0x88,0x44,0x69,0x76,0xc9,0x3c,0xf0,0x2d,0x7b,0x0d,0xbe,0xd4,0x88,0x0d,0xbc,0xa0,0x52,0xf4,0x2a,0xd1,0x62,0x2a,0xa9,0xe2,0x41,0x2f,0x52,0xce,0x96,0x7d,0x65,0x9b,0x74,0x82,0xde +.byte 0x43,0x4d,0xf8,0x8e,0x77,0x1c,0x18,0xf5,0x7e,0xab,0x94,0x3e,0xe7,0x90,0x2b,0xa1,0x16,0x00,0x7f,0x9c,0x9d,0x86,0xd1,0x74,0x7e,0xf7,0xbd,0x5a,0xa7,0x2f,0x0f,0xb0,0x5c,0xfc,0xfb,0x59,0x00,0xf3,0x84,0x09,0x77,0x66,0x17,0xf6,0x5d,0x0e,0xe2,0xe2,0xd4,0xb3,0x9e,0x79,0x88,0x66,0xa5,0x8e,0x30,0xae,0xca,0x7e,0x2b,0x32,0xa2,0x89 +.byte 0xe9,0x7e,0x59,0x21,0xd5,0x99,0xc7,0x10,0xa8,0x6f,0x95,0x8d,0x84,0xb4,0xcf,0x61,0xe7,0x5c,0x09,0xf3,0xbc,0xeb,0xf6,0x0c,0x84,0x1a,0x8d,0x13,0xf8,0x49,0x22,0xeb,0x09,0x55,0xef,0x56,0x12,0x21,0xcb,0x61,0x87,0xbf,0xef,0x43,0x5b,0x82,0xa8,0xc2,0xa2,0x5e,0xad,0x54,0x9a,0xcc,0x95,0xa2,0x01,0x05,0xb2,0xbb,0x26,0xa8,0xfd,0x6b +.byte 0x66,0x95,0x9c,0x0b,0x7b,0x23,0x32,0xff,0xdd,0x6c,0x18,0x1e,0x77,0x01,0x3c,0x82,0xaa,0x97,0x28,0x0f,0x93,0xa5,0x6c,0x85,0xe5,0x94,0x40,0xe0,0xa3,0x01,0x57,0x56,0x43,0x40,0xdd,0xa9,0xaf,0x21,0x79,0x10,0x8b,0xff,0x4b,0x51,0xe4,0xa2,0xe5,0xd7,0x0c,0xe2,0x9e,0x1e,0x38,0xdb,0x64,0xe1,0xb1,0x5b,0xe5,0x40,0xab,0xf6,0x05,0xd2 +.byte 0xba,0x85,0x78,0x61,0x2d,0x2e,0x07,0x06,0x6d,0x86,0x59,0xaa,0xd9,0x2c,0xfb,0x83,0x34,0xd0,0x2d,0x1d,0xad,0x5f,0xe4,0xac,0x05,0x46,0x3a,0x7b,0xd9,0xef,0x9f,0x2b,0x0c,0x18,0x21,0xf1,0x24,0x8a,0xb4,0x6e,0xd2,0x98,0x75,0x08,0x96,0x0c,0x7b,0x41,0xb7,0xf7,0x1f,0xcd,0xa8,0x1f,0x44,0xb1,0xed,0xdc,0x0e,0xcb,0x94,0xa0,0xb8,0x62 +.byte 0x67,0xdc,0x24,0xde,0x9e,0xe9,0x89,0xcd,0x92,0x7c,0x91,0x15,0xff,0xbd,0xfd,0xee,0xf8,0x29,0xd7,0xf9,0xe8,0x51,0xe7,0xc8,0x21,0xc5,0x20,0xe4,0xb8,0xa6,0xdb,0xfb,0x09,0x65,0x1c,0x3b,0x9e,0x39,0x44,0xcf,0xf5,0xc2,0x7b,0xf3,0x14,0x7d,0x69,0xf2,0xd0,0x97,0x63,0xf1,0xa7,0x81,0x56,0xfb,0xdf,0x4d,0x83,0x55,0x4f,0xde,0x50,0x7d +.byte 0xfe,0xb0,0xc0,0xc8,0x3b,0x3d,0x78,0x74,0x58,0x74,0x5e,0xfc,0xb7,0x0d,0x9a,0x26,0x3b,0x39,0xb6,0xf7,0xe0,0xe4,0x12,0x3c,0xd6,0x88,0x1c,0x9b,0x51,0x89,0xe7,0x53,0xcd,0x24,0x2e,0x34,0xa2,0xee,0xfa,0x5a,0x87,0xe5,0x7e,0xd5,0xf2,0x2f,0x15,0x99,0x57,0x5d,0x31,0x02,0xf8,0x08,0x38,0xea,0x8c,0x30,0x21,0xb0,0xff,0x94,0x51,0xcf +.byte 0x23,0xb7,0x02,0x5d,0xa3,0x75,0x7f,0x9d,0x66,0x49,0xe5,0xbe,0xc7,0x06,0x5e,0x1d,0xc9,0xe2,0x82,0x8a,0xc4,0x17,0x83,0x7e,0x65,0x6d,0x85,0x26,0x66,0xc0,0xf4,0xa5,0x1c,0x6e,0xba,0x32,0xfa,0x41,0x7b,0x2b,0x64,0x98,0x58,0x8c,0xce,0x2f,0xf3,0x56,0xf0,0x67,0xef,0x73,0x79,0xc4,0xc2,0x07,0xd7,0x85,0x1d,0x75,0x38,0x1e,0x15,0x82 +.byte 0x9d,0xf3,0xdd,0x3a,0x72,0xa3,0x23,0x0e,0x4a,0x1a,0x3a,0x97,0xc8,0xf1,0xf1,0x58,0x5d,0x1f,0xae,0x6d,0xc8,0x03,0xe0,0x7b,0x0f,0xf5,0x6f,0x35,0x41,0x8d,0xd5,0x03,0x85,0xdd,0xeb,0x3d,0x73,0xb1,0x93,0x35,0xc0,0x0f,0xfb,0x42,0xd4,0xf1,0x6b,0x35,0xe2,0x96,0xc5,0xd9,0xf2,0x69,0xbb,0x70,0x5e,0xf0,0x0c,0xe6,0xb5,0x81,0x94,0xc9 +.byte 0x29,0xa1,0x34,0x89,0xd9,0x9c,0x49,0x01,0x37,0x56,0x16,0x30,0x47,0x6f,0xe4,0x7c,0x5b,0xdd,0xfb,0x80,0x7f,0x0c,0x38,0x53,0x3d,0x57,0xf7,0xc4,0x80,0xf9,0x12,0x3a,0x9f,0xf9,0xb0,0xb6,0x94,0x6d,0xde,0x41,0x4e,0x30,0xac,0x1f,0x25,0x34,0xa0,0x95,0xe8,0x00,0x86,0x32,0x40,0xbb,0xc1,0x49,0x2d,0x07,0x49,0xb8,0x5f,0xcd,0x1b,0xd3 +.byte 0x0e,0x0c,0x54,0x0f,0xe4,0x20,0xe5,0xa1,0xed,0x98,0x65,0x5a,0xe7,0xce,0x68,0x9c,0x4c,0x48,0x03,0x9c,0x5b,0x68,0x4b,0x75,0x71,0x11,0x40,0x69,0xca,0x9a,0x3a,0xb2,0x3d,0x35,0x2c,0x70,0x35,0x8b,0x80,0x53,0x86,0x30,0x7d,0x4c,0xe9,0xc0,0x30,0x60,0xd0,0x06,0xbe,0xc2,0xad,0x39,0xcc,0xb2,0xec,0x90,0xcc,0xbd,0x7c,0xb5,0x57,0x20 +.byte 0x34,0x2e,0xfc,0xce,0xff,0xe3,0xd9,0xac,0xb8,0x62,0x6b,0x45,0x22,0x34,0xdf,0x8e,0x4b,0xf1,0x80,0x28,0x8d,0x0f,0xd5,0x3b,0x61,0x3e,0x91,0xa1,0xb1,0x85,0x27,0x78,0x88,0xbc,0xc4,0xb1,0xa1,0xbe,0x4f,0xc3,0xfd,0x1f,0xb9,0x30,0x31,0x2f,0xc1,0x9d,0xa3,0xb6,0x29,0xa4,0x60,0x82,0x73,0x93,0x74,0xea,0x97,0x67,0xf2,0xa3,0x97,0x50 +.byte 0x2f,0x9f,0x7b,0x23,0x18,0xb6,0xb4,0xee,0x15,0xa0,0xa4,0x07,0x1a,0xe9,0xb6,0x63,0x7e,0x88,0x40,0x57,0x86,0x79,0x6b,0x75,0xbe,0x57,0x8f,0xfe,0x0d,0xdf,0x4c,0x7f,0x39,0x9a,0x97,0xa6,0x87,0xc5,0xfd,0x52,0x77,0x36,0xc9,0x66,0x63,0xcf,0xc7,0x34,0x3b,0xf4,0x7a,0x12,0x56,0xf0,0xbc,0x7a,0x1a,0xa2,0xa2,0x51,0xb8,0xc1,0x70,0x81 +.byte 0xcf,0x1d,0xb5,0xe2,0x82,0xbb,0xfc,0xa3,0x80,0x18,0xf8,0x4b,0x76,0x9c,0xdf,0x9d,0x6c,0xf1,0xd8,0x2a,0xab,0x0c,0x12,0x02,0x29,0x09,0xfd,0x28,0xfb,0x57,0x38,0x05,0x2c,0xc5,0x67,0xd1,0xaa,0xbc,0x98,0xe6,0x22,0x78,0x06,0x4f,0x69,0x6a,0x63,0x1a,0x13,0x0b,0xa5,0xd2,0x61,0xc7,0x45,0x5b,0x21,0xab,0xbf,0x7b,0x7f,0x8c,0x2c,0xba +.byte 0x93,0x9f,0x41,0x67,0xc4,0x5f,0x53,0xac,0x90,0x05,0x86,0xb5,0x80,0x1f,0x5b,0x35,0x4f,0x92,0xf5,0xa8,0x5f,0xfb,0x56,0xdd,0x2d,0x9b,0xea,0xcb,0x0f,0x98,0x3c,0x4e,0xf1,0xa5,0x2c,0x37,0x70,0xe3,0x5c,0xaf,0x96,0x36,0xa8,0x2a,0xec,0xe0,0x2c,0x00,0xcd,0xaf,0x03,0x1d,0x05,0x2f,0x8c,0xe7,0xfe,0x4d,0xe9,0x97,0x6d,0xe1,0xf9,0x23 +.byte 0x60,0x08,0xea,0xfb,0x27,0xc8,0xf9,0xdf,0x49,0xfe,0xd9,0x48,0x35,0x6b,0x43,0xc5,0x19,0x90,0xb1,0xf1,0xee,0x84,0x7a,0x57,0xfa,0xa5,0xd6,0xd8,0xc9,0xf0,0x8a,0xe7,0x13,0x84,0xfc,0x28,0x54,0xae,0x99,0xfd,0x91,0xbe,0x91,0x27,0x98,0x28,0xdc,0xd7,0x2e,0xc1,0x21,0xcb,0x31,0xf8,0x47,0xe6,0x77,0x6d,0xee,0x7b,0x12,0xe4,0x9e,0x9d +.byte 0x07,0x46,0xa9,0x15,0x0b,0x3c,0xbe,0xc7,0x2d,0xe5,0xd6,0x25,0x4c,0xea,0x61,0xdc,0x18,0xb2,0x9d,0xb0,0x9a,0xff,0xa3,0x5f,0x2b,0xab,0x52,0x7d,0x1b,0xc3,0xa3,0x41,0x8f,0x5a,0x29,0xbd,0xc4,0x56,0x54,0x43,0x2d,0x61,0x07,0xed,0xd1,0x81,0x45,0xdb,0x61,0x0f,0xda,0xea,0xa6,0x1e,0xf9,0x9c,0xc0,0x8c,0xc4,0x8e,0xc7,0xca,0x38,0xe2 +.byte 0x45,0xde,0xdc,0xc5,0xc6,0xb0,0x43,0x17,0x8b,0xb1,0x58,0xd1,0x10,0x8e,0xa5,0x17,0x37,0x85,0xca,0x61,0x67,0x5c,0xd0,0x72,0x22,0x6b,0xd3,0x3b,0x53,0xbc,0xfb,0xe1,0x1e,0xa4,0x1b,0xd3,0xc3,0x8a,0x50,0x03,0x39,0xf5,0x36,0xdf,0x51,0x2e,0x05,0x4a,0xa8,0xdb,0x91,0x87,0xae,0xfe,0x3f,0x5c,0x35,0x5e,0xf9,0x8f,0x43,0x9e,0x92,0x36 +.byte 0x91,0x27,0x90,0xe8,0x7c,0xcc,0xc4,0x9c,0x13,0xbb,0x61,0x40,0xec,0x4f,0x49,0xcf,0x04,0x38,0x77,0x3b,0xb5,0xf8,0x69,0x8d,0xbb,0xb2,0x30,0x32,0x42,0x4d,0x7d,0x6c,0x56,0xdc,0xf4,0x8f,0xfc,0xb8,0x53,0xc5,0x11,0x17,0x23,0x94,0xf9,0x6d,0x6f,0xee,0xee,0x31,0xbf,0xce,0x11,0x8b,0x9e,0xd7,0xa5,0x09,0x36,0x89,0x72,0x25,0x18,0x1f +.byte 0x13,0xa7,0xdf,0xc5,0x91,0x7e,0xd6,0x2b,0xb8,0x08,0x9c,0x12,0x83,0x21,0x97,0x3d,0xad,0xac,0x1c,0x54,0xf3,0x65,0x04,0x2f,0x09,0xd1,0xd2,0xe5,0xce,0x24,0xb1,0xd9,0xe4,0x38,0x1f,0xb4,0xce,0xea,0x27,0x7f,0x5f,0x16,0x52,0xa4,0x2f,0x2f,0xaf,0x91,0xec,0x7a,0x21,0xf7,0xa1,0x38,0x78,0x78,0xc5,0xa9,0x94,0x63,0x87,0xf8,0x95,0x9e +.byte 0xf9,0x82,0x98,0x6d,0x9d,0x48,0x80,0xaa,0x7a,0x36,0xf9,0x5f,0xfb,0x39,0x3d,0xae,0xbc,0xcd,0xfc,0x67,0x46,0x07,0x7e,0xdf,0xef,0xff,0x8d,0x67,0xe7,0xd9,0x60,0x90,0x7b,0x49,0x10,0x65,0x3a,0x60,0x87,0x7a,0xed,0x9a,0x44,0x48,0x81,0xcc,0xad,0xe4,0x6a,0x62,0xf8,0x02,0x6f,0x41,0x8a,0x8d,0x44,0x28,0x1a,0xb8,0x52,0x60,0x4b,0x3f +.byte 0xfc,0xdd,0x33,0xad,0x14,0xb1,0x34,0x63,0x1f,0xdc,0xeb,0x9a,0x3f,0x99,0x82,0x28,0x36,0x6f,0x8e,0xd7,0x39,0x2e,0xc0,0x37,0xfb,0xad,0x57,0x6c,0x82,0x1a,0xc6,0xe4,0x4b,0xca,0x00,0x68,0x57,0x34,0xf0,0x57,0x6a,0xcb,0x50,0x5d,0x8d,0xfa,0xcd,0x89,0x41,0x91,0x23,0x98,0x1f,0x4f,0x18,0xb6,0xd2,0x9d,0xde,0x2f,0x5c,0xe6,0x08,0x76 +.byte 0x97,0xba,0x24,0x4e,0x84,0xd7,0xeb,0x80,0xde,0xec,0xee,0x51,0x5a,0x0e,0x5f,0xb7,0x37,0xda,0xa5,0x94,0x2b,0x6d,0x73,0xb7,0x6c,0x22,0x95,0x3a,0xaa,0x5c,0x6f,0x89,0x90,0xec,0xb3,0x31,0x00,0x37,0x28,0x18,0xbb,0x98,0x23,0xfc,0x3e,0x21,0x7c,0xaa,0x44,0x54,0x7b,0xe6,0xa0,0x17,0x58,0xef,0x11,0x3f,0x48,0xb8,0xa8,0x15,0x4a,0x92 +.byte 0xa9,0x39,0xe2,0xa6,0x38,0x03,0xa6,0xd3,0x79,0x8b,0x38,0x06,0xaf,0x4b,0xd4,0xab,0x0a,0x13,0xff,0x2d,0xfa,0xab,0x4b,0x64,0x9e,0xb0,0x3d,0xba,0x18,0x01,0xfd,0xc3,0x6a,0x6f,0x21,0x9c,0xf5,0x2f,0xab,0x2d,0x42,0x12,0xc9,0x72,0xde,0x83,0x42,0x6a,0xf0,0xd4,0x96,0x73,0xf1,0x93,0xa3,0x2d,0x9b,0xb4,0x94,0x51,0x0c,0x6e,0x8e,0xf0 +.byte 0x5e,0xbf,0x98,0xbf,0x08,0x0f,0xd8,0x6c,0x65,0x4e,0xb5,0x47,0xeb,0x7c,0x1b,0x73,0xe0,0xe6,0x2c,0x03,0xd2,0x2a,0x32,0xff,0xa7,0x03,0x6d,0x38,0x47,0x56,0x4b,0x25,0x0b,0x39,0x73,0x87,0x4b,0xa5,0x12,0x79,0x79,0xf3,0x88,0x37,0xe2,0x4f,0xb8,0xbf,0x70,0x0e,0xf7,0x8c,0xe6,0xa3,0xbc,0x35,0x10,0xcd,0x72,0x56,0xd6,0x83,0xc1,0x0b +.byte 0x5b,0xf3,0xa8,0x74,0xc7,0xb9,0x84,0xc8,0x6c,0xff,0x66,0xad,0x95,0x6f,0xbc,0x82,0x84,0x2a,0x11,0x40,0xf9,0xa8,0x3f,0x05,0xf9,0xab,0x19,0x55,0xce,0x80,0x90,0x65,0x49,0x3d,0xe1,0x54,0x2c,0x1a,0xdb,0xf3,0xaa,0x2f,0xeb,0xf5,0x10,0x1f,0x8c,0x35,0x46,0x68,0xb1,0x4c,0x52,0xe7,0xe9,0x58,0x78,0x33,0xfd,0xc6,0x13,0x0e,0x69,0xae +.byte 0xf4,0x1a,0x8a,0x77,0x8f,0xcc,0x98,0x74,0x88,0x20,0x84,0x5b,0x83,0x54,0xa9,0xee,0xc2,0x0f,0x8a,0x46,0xb1,0xc7,0xfb,0xfd,0xf2,0x2c,0xaf,0xfa,0x72,0x34,0x7a,0x79,0x50,0x10,0xc6,0x04,0xfd,0x0a,0x1e,0x4a,0xb5,0xf5,0xe7,0x4d,0x98,0x80,0x5d,0x0b,0x81,0x23,0xc3,0x6e,0xbf,0xc8,0xcd,0x35,0x96,0x5a,0x58,0xec,0xef,0x6a,0x8d,0x48 +.byte 0xda,0x48,0xbb,0x8f,0xcc,0x1f,0x86,0xff,0x7a,0x27,0xef,0xe6,0xb7,0xc7,0x2a,0x47,0x8d,0x6c,0x4a,0xc6,0x0a,0x32,0x67,0x1d,0x2f,0x83,0x3d,0x46,0x41,0x46,0x1c,0x75,0x7b,0x29,0x89,0xa2,0x65,0x9b,0x53,0x3d,0xd9,0x90,0x83,0xce,0xab,0x07,0xbb,0x46,0x61,0xb1,0x54,0xbd,0xc9,0x98,0xf7,0x96,0x76,0x03,0xdc,0x1f,0x1b,0xf2,0x5c,0x07 +.byte 0xdd,0x24,0x94,0x72,0x1e,0x94,0xb1,0x14,0x0b,0x40,0x77,0xde,0x3d,0x3f,0x1c,0xf0,0x8f,0xa4,0xcb,0x34,0xb5,0x2b,0x72,0x53,0x78,0xf3,0x3f,0x8e,0x47,0x30,0xb2,0x7e,0x73,0x3f,0x9a,0xef,0x19,0xb1,0xef,0x82,0x99,0xd4,0x17,0x60,0x94,0xf6,0x15,0x75,0x50,0x1f,0xb3,0xdd,0xae,0x1f,0xf8,0x63,0x9a,0x30,0x2c,0xf0,0xdd,0xbf,0x49,0x70 +.byte 0xd7,0x86,0x4a,0x5c,0x46,0x10,0x48,0x46,0x02,0x18,0xa4,0x39,0xb6,0x75,0x11,0x21,0xae,0x62,0x64,0xd8,0x85,0xc8,0xda,0xd2,0xd6,0x69,0xcc,0x37,0x57,0x49,0x73,0x1a,0x10,0x7b,0xd7,0x58,0xdd,0x0b,0xf3,0x16,0xe7,0x62,0x2c,0x32,0x92,0x0e,0x70,0x6f,0x77,0x74,0x0d,0xff,0xc2,0x8d,0x3b,0x3f,0x29,0x28,0x8f,0x88,0xb8,0x02,0x5b,0x3a +.byte 0x8b,0x65,0x89,0x92,0x2f,0xc7,0x30,0x73,0xc3,0x20,0xbc,0xa4,0xe4,0x5e,0xea,0xf8,0x21,0xb6,0xc5,0x47,0x56,0x35,0x8f,0xf6,0xd5,0xdd,0x77,0x1d,0xdf,0xd0,0x27,0xa3,0x04,0xb9,0xd0,0xc4,0x28,0x16,0xa5,0xaf,0x47,0x55,0x85,0x93,0x38,0xf4,0xac,0x13,0x30,0x7d,0x77,0x1f,0x3d,0xd5,0xd7,0x22,0xbe,0xe2,0x4e,0x6d,0x4b,0x0e,0xbe,0x1d +.byte 0x43,0x79,0x34,0x95,0x6f,0x38,0xa1,0xb3,0xa0,0xed,0xf6,0x17,0xf4,0x24,0x70,0x26,0x18,0x3e,0x1c,0xde,0xdc,0xa9,0x67,0x12,0xd3,0xc8,0xd7,0x70,0x13,0xa5,0xb3,0x25,0xe1,0x0a,0xe9,0xf6,0x4e,0x56,0x82,0x17,0xdc,0xbc,0x96,0x2f,0x59,0x03,0x9b,0xf4,0xc3,0x66,0xd2,0x90,0x95,0x1d,0xe0,0x99,0xfb,0xd8,0xa8,0x14,0xc7,0xa6,0x12,0x6b +.byte 0x08,0x6a,0xc8,0x0f,0x34,0x2a,0xb6,0xc4,0x9a,0xcd,0x61,0xf7,0x61,0xa3,0x59,0x29,0x11,0x30,0x76,0xb5,0x97,0xbc,0x2f,0x87,0xd8,0x12,0xb3,0x1d,0x99,0x8d,0x5d,0x57,0x0c,0xda,0xb0,0x9f,0x51,0x1a,0xb5,0xc6,0x94,0xc3,0xe9,0x5a,0x72,0x0c,0x37,0x76,0xb6,0x3c,0x00,0x02,0x69,0xad,0x8e,0x66,0x8b,0x5c,0x13,0x48,0xb7,0x9e,0xc5,0x7e +.byte 0xe0,0x35,0x07,0xd2,0x04,0x9c,0x35,0x95,0x8b,0x55,0x87,0x03,0x32,0x36,0xeb,0x11,0x88,0x54,0x8d,0x3e,0x88,0x46,0xc2,0xfe,0x24,0xa4,0x4b,0x92,0x19,0x44,0x6c,0xc9,0x69,0x32,0x22,0x95,0x5b,0xda,0x58,0xa4,0x00,0x33,0x83,0x2d,0xa4,0x17,0x2e,0x00,0x4d,0x9a,0x7d,0xef,0x04,0xa8,0x8b,0xf2,0x7c,0xb9,0xdb,0x54,0xcf,0x63,0x14,0x52 +.byte 0x5b,0x79,0xf6,0x89,0x5c,0xfa,0x8a,0x85,0x88,0x7f,0xca,0xed,0xfb,0x62,0xbc,0x1d,0x0d,0x90,0x51,0x27,0x45,0x74,0xa0,0x55,0xfc,0x60,0xea,0xef,0x6e,0x40,0xeb,0x0b,0x61,0x45,0x44,0xee,0xb6,0x20,0x4c,0xe1,0x08,0x62,0x29,0xdd,0xd0,0xa1,0xd5,0x7f,0x42,0xb9,0x0f,0x12,0xef,0xfb,0x13,0xa2,0xf1,0x85,0xaa,0x56,0x18,0x6c,0x70,0x7a +.byte 0x4d,0x52,0x76,0xce,0xa9,0xed,0x0a,0xcc,0x55,0xf0,0x01,0x99,0x44,0xe9,0xc4,0x74,0x33,0x2a,0xce,0x53,0xf3,0x4f,0x8f,0x1c,0x67,0x39,0x2b,0x0e,0x46,0xe2,0x49,0x06,0x52,0xbf,0xc4,0x3f,0x93,0x84,0x46,0x0a,0x9b,0xcb,0x1d,0xa5,0x66,0x9c,0x3e,0x3d,0xd1,0x92,0xda,0xe2,0x11,0x5b,0x89,0x7a,0xc4,0x33,0xba,0xa9,0x19,0xfd,0x3c,0xe3 +.byte 0xf0,0xa0,0x9b,0x83,0x50,0xce,0xa9,0x62,0xe3,0x85,0xc6,0xc4,0xe5,0x22,0xbb,0x1a,0x8e,0x04,0xb5,0x4d,0xca,0x18,0x7d,0xb0,0x99,0x50,0x78,0x88,0x69,0x43,0xe0,0xfd,0x90,0xa6,0xbf,0xdc,0xe3,0x03,0xf2,0x5d,0xa1,0xa2,0x88,0xc7,0xab,0xa9,0xc2,0xda,0x3f,0xff,0x79,0xa6,0x07,0xfd,0xc4,0xb1,0xfb,0x47,0x3d,0x75,0x82,0x26,0x52,0x85 +.byte 0x3f,0xf9,0xc9,0x85,0x46,0x24,0xe9,0x0f,0x96,0x8c,0xbb,0x02,0x83,0x60,0x69,0x49,0x8c,0x38,0xd1,0x4e,0xd0,0x63,0x2c,0xb6,0x12,0xb2,0x8e,0x4b,0xd3,0xe3,0xdf,0x20,0x00,0x99,0xf1,0x06,0x93,0xbf,0x27,0x42,0x8b,0xe3,0x8d,0x4c,0x3b,0x05,0x62,0x64,0x21,0xb1,0xfe,0xce,0x08,0xd2,0x23,0x69,0x11,0x74,0x31,0x3a,0x90,0x10,0x07,0x1a +.byte 0xd5,0xf5,0xc2,0x09,0x61,0x67,0x65,0x99,0x3a,0xf3,0x9e,0x4a,0xd8,0xa1,0xb2,0x50,0xf4,0x07,0xf0,0x7b,0x89,0x6d,0x4d,0x6a,0xd4,0x54,0xb9,0x3c,0xd5,0x4e,0x1c,0x12,0x0f,0x19,0x92,0x97,0x21,0x65,0x83,0x33,0x20,0x92,0x95,0xd4,0x0e,0x78,0xf4,0x92,0x16,0x36,0xd8,0x1b,0xd8,0xbf,0x41,0xe4,0xfb,0xb9,0x81,0x26,0x72,0x7e,0x1b,0x58 +.byte 0x05,0x45,0x97,0x66,0xf2,0x23,0x16,0xca,0x4e,0x95,0xc2,0x6c,0x60,0x84,0x5f,0x77,0x82,0x44,0x0e,0xf7,0x30,0xaa,0x51,0xa9,0x85,0x8b,0x03,0xfc,0x3d,0x6d,0x66,0x91,0x37,0xa5,0x1c,0xf8,0xcf,0x9d,0xd8,0xcd,0x8c,0xa1,0x29,0xbd,0xb5,0x4f,0x47,0xba,0xd1,0x55,0x3b,0x4e,0xc9,0xce,0x4c,0xcf,0x2e,0x19,0xa0,0x95,0xe6,0xcb,0x36,0x97 +.byte 0x3e,0x23,0xbe,0x09,0xfd,0x38,0x47,0x00,0x03,0xec,0x49,0xbb,0x49,0x1f,0x45,0x84,0x0f,0x1e,0x74,0xab,0xc9,0x07,0x00,0x04,0x70,0xe9,0xbd,0x61,0xb1,0x92,0xee,0x67,0x9a,0x5e,0x90,0xdc,0xe7,0x99,0x36,0xd0,0x58,0x15,0xe5,0x15,0xa2,0x1d,0x61,0x18,0x39,0x5f,0x6c,0xc7,0xbe,0xd0,0x23,0x1e,0x41,0xc8,0xaa,0x8e,0xbf,0xb8,0xdb,0x90 +.byte 0x8c,0x60,0x07,0x1e,0xe9,0x6c,0xe4,0xde,0xec,0x73,0x34,0x94,0x54,0xa4,0x6b,0x49,0xcf,0x87,0xb5,0x88,0x98,0xe6,0x2c,0xce,0xb7,0x76,0xa5,0x29,0xf1,0x29,0x50,0xc5,0x9e,0x13,0xe4,0x61,0x6a,0x54,0xb2,0x26,0xfa,0xfa,0x4a,0x41,0x3b,0x0a,0xf5,0x9a,0x60,0xbb,0xfc,0x1e,0x5d,0x21,0x7e,0x91,0x51,0xd6,0x5e,0x92,0xf9,0x21,0x80,0xa8 +.byte 0x35,0xc0,0xbb,0x7a,0xeb,0x75,0xb4,0xa3,0xd3,0x8d,0xaf,0x07,0x53,0x65,0x36,0x11,0xf9,0xb6,0x69,0x29,0x1e,0x5d,0x8f,0x57,0x5d,0xed,0x42,0xf9,0xd5,0xf6,0xc3,0x1e,0x29,0xc4,0x49,0x04,0xe4,0xfb,0xbf,0x9b,0x4a,0x7b,0xdd,0x57,0x51,0xfe,0xc4,0xd1,0xd9,0xe9,0x8f,0x94,0x78,0xbc,0x5c,0xeb,0xb6,0xbc,0x51,0xb0,0x82,0x87,0x47,0xb4 +.byte 0xf7,0xf9,0x02,0xd7,0xac,0x23,0xc0,0xe5,0x9a,0xc3,0x2f,0xd2,0xb8,0xb2,0x62,0xb9,0xdb,0x49,0x85,0x77,0x92,0xa6,0xe5,0x24,0x43,0x4d,0x0d,0x67,0x94,0x01,0x29,0xd6,0x2e,0xee,0xd9,0x2e,0x97,0x0e,0x20,0x7f,0x84,0x19,0x3c,0x3a,0x6f,0xa5,0xb0,0x8b,0x8f,0x8d,0x96,0xbb,0x76,0x61,0x97,0xc2,0x65,0x83,0xd8,0xda,0xab,0x42,0xfa,0xe5 +.byte 0x1e,0x42,0x93,0xa7,0x66,0x03,0x06,0x3b,0xbe,0xb8,0xae,0x71,0xee,0xdb,0x5d,0xdf,0x40,0x64,0x17,0x17,0x2e,0x03,0xca,0x37,0x2a,0x71,0x92,0x0a,0x01,0xa3,0x0f,0x0b,0x09,0xf2,0x0e,0x4b,0x4d,0x18,0xf3,0xc4,0xf2,0x51,0x7b,0x53,0x30,0xab,0x24,0xa2,0x47,0x38,0xc9,0x2c,0xdf,0x0d,0x32,0x3e,0x3f,0x57,0x2d,0xfc,0x44,0x19,0x64,0x8b +.byte 0xe9,0x9a,0xc2,0xf2,0xf6,0x2d,0x30,0x0c,0x0f,0xc3,0xc3,0xfe,0xc2,0xd1,0xbc,0xe0,0xbf,0xaf,0xeb,0x40,0x64,0x28,0xe2,0xd9,0x3c,0x7e,0x24,0x94,0x8f,0xe8,0x54,0x8b,0x26,0x6b,0xe1,0x4e,0x44,0x5a,0x7d,0x7b,0x12,0x36,0x2c,0x12,0xad,0x26,0xbc,0xa7,0xa3,0x2b,0x25,0xb9,0xde,0xe6,0x64,0x2d,0xab,0x7f,0x15,0x22,0x51,0x26,0x1c,0x15 +.byte 0x5d,0x13,0x18,0x93,0xc1,0x19,0x65,0xca,0xf3,0x8b,0xe0,0xcf,0x8c,0x43,0xe9,0xfd,0xa1,0xbd,0xe9,0xde,0x78,0x26,0xcb,0x7c,0xdc,0x68,0x06,0x98,0xf6,0x90,0x44,0x40,0xf0,0x5e,0xe1,0x16,0xf5,0x5d,0x4d,0x9b,0x85,0xe6,0x26,0xbd,0xab,0xcc,0x46,0x62,0x18,0x51,0xd5,0x3c,0x9f,0x6e,0xfa,0xe7,0x94,0xfc,0xc2,0x1a,0x9d,0x63,0x2c,0xdc +.byte 0xc3,0x89,0x67,0x94,0x37,0x58,0x0d,0x13,0xb8,0xdf,0x41,0x3d,0x70,0x78,0x1e,0x61,0x75,0x77,0xcc,0xbf,0x5f,0xa8,0xd3,0x89,0xcc,0xd3,0x40,0x4e,0x65,0xbd,0xce,0x3c,0xf0,0x5a,0x8f,0xe2,0xe1,0x24,0xaa,0xed,0x0f,0xd1,0x03,0x0d,0xf5,0x36,0x98,0xcd,0xa5,0x77,0x40,0x24,0x0a,0x82,0x68,0x79,0x82,0x38,0x68,0x6f,0x2b,0x0b,0xce,0x0f +.byte 0xcd,0x0f,0xba,0xdb,0xb5,0x22,0x38,0xd2,0xb0,0x9f,0x0f,0x08,0x0d,0xd8,0x5e,0xa7,0xd0,0xa9,0x39,0x66,0x4c,0x46,0xce,0x2a,0xc3,0x67,0x8c,0x91,0xdc,0xf1,0xc0,0x3a,0x58,0x50,0x1f,0xb0,0xa4,0x4d,0xbf,0x99,0x57,0xcf,0xae,0xb2,0xaf,0x6a,0x42,0xd2,0x7f,0x85,0x8c,0x40,0xc6,0x9a,0x93,0x57,0x54,0xf5,0xb4,0x83,0x59,0xb5,0x19,0x52 +.byte 0x7c,0x8b,0x76,0xee,0x35,0x90,0xbf,0xbe,0x65,0x58,0x3b,0x25,0x52,0x18,0xd8,0x7f,0x1f,0xe6,0x70,0xce,0x56,0x1a,0x45,0xa0,0x81,0xee,0x95,0x6f,0x55,0x43,0xaa,0x6e,0x87,0xa9,0xab,0x7d,0xe9,0xa1,0xa3,0x63,0xe7,0x1b,0x6b,0xa6,0x2c,0xe5,0x4a,0xb2,0x1e,0x73,0x5e,0xb5,0xae,0x83,0xe6,0x54,0x0b,0xc5,0x6b,0xb6,0xc4,0x73,0x62,0x1a +.byte 0xbf,0x1a,0x65,0xa2,0x5e,0x3a,0x45,0xd9,0xba,0x5b,0xef,0xf7,0x13,0x0c,0x7c,0x68,0xa1,0x98,0x71,0xb7,0x39,0x7c,0xbc,0x69,0xdb,0xd4,0xac,0x3f,0x82,0x63,0x9b,0x71,0x25,0x3a,0x06,0x73,0x60,0x71,0xc3,0x30,0xd3,0x96,0x02,0x4b,0x46,0xbd,0xd4,0x6e,0xc6,0x29,0xcc,0xd0,0xe1,0x0b,0x66,0x62,0xea,0x29,0xc7,0xcf,0x35,0x9e,0x2f,0x1f +.byte 0xa0,0xfc,0x8c,0x4a,0x83,0x8e,0x3b,0xf5,0x7a,0x6f,0x52,0xaf,0x99,0x9c,0x86,0xab,0xe5,0x1b,0x82,0xb3,0x18,0x35,0x77,0x9b,0xa3,0x94,0xc8,0x39,0x30,0x3f,0xad,0xa9,0x0f,0x93,0xb8,0xc8,0xed,0x04,0xf2,0x0b,0x9a,0xb1,0xd1,0xc9,0x9e,0x40,0x4f,0x71,0x21,0x63,0x2a,0x05,0x26,0x53,0xa3,0x3f,0x43,0xe4,0xf8,0x7c,0x2f,0xa3,0x5a,0x6e +.byte 0xc1,0x40,0xa8,0x4d,0xbc,0x03,0xae,0xe9,0x36,0xb6,0x37,0xdc,0x5f,0xef,0xb0,0x35,0x33,0xdf,0x33,0x71,0xaf,0x80,0xf2,0x69,0xd9,0xb5,0xfc,0xff,0xd2,0x5b,0x6a,0xeb,0xdc,0xe0,0x26,0x43,0x38,0x7b,0x24,0xb2,0x79,0x53,0x52,0x57,0xc4,0x1f,0x6d,0xc9,0x50,0xf2,0x63,0x9d,0xc1,0x22,0x5f,0x11,0x82,0x38,0xdb,0xd3,0xb4,0x1d,0x10,0x72 +.byte 0x9e,0x4d,0x03,0x30,0xba,0x5e,0xe9,0x8c,0x21,0x12,0xe6,0x3a,0xd6,0x4c,0x18,0xa4,0x27,0xc9,0xf5,0x50,0xbd,0xbe,0xf0,0x86,0xd8,0x00,0x56,0xf0,0x10,0x81,0xec,0xeb,0xfc,0x5b,0x29,0x88,0xff,0x73,0x60,0x6b,0xf5,0x8c,0x0b,0x30,0x04,0x53,0x85,0x61,0x0c,0xfc,0xff,0x8f,0x21,0xd2,0xa1,0xcb,0xf7,0x90,0x53,0x3b,0xf4,0xf0,0x2c,0x7d +.byte 0xb6,0x84,0xe7,0x4c,0x88,0xea,0x4f,0xdf,0xff,0x0f,0x5d,0x0f,0xd3,0x2d,0x4f,0x7e,0xdc,0xd1,0x22,0x71,0x0d,0xae,0xa8,0xcf,0x05,0x7b,0xfc,0xfe,0x87,0x40,0xa5,0xe8,0xfd,0x3f,0xdb,0x2f,0x00,0x21,0xb9,0x70,0x02,0x2c,0x96,0x24,0xaf,0x35,0xe2,0x87,0xcb,0x50,0xcf,0x7e,0xfa,0xaf,0x39,0x82,0x0c,0xd5,0xa6,0x3f,0x9c,0x77,0x60,0x16 +.byte 0xbf,0x42,0xcc,0x97,0xd1,0x19,0x0d,0x8a,0x50,0x98,0x7d,0x19,0x7b,0x40,0x1c,0x22,0xde,0x50,0x90,0x32,0x9a,0x3d,0x07,0x35,0xc0,0x48,0x4c,0x0a,0xcd,0x91,0xab,0xf7,0xf3,0x06,0x77,0x80,0x96,0x7b,0x59,0x33,0xe6,0xbf,0x93,0xb8,0x59,0xd0,0x3a,0x1f,0xcc,0xe7,0x1d,0xd4,0xb5,0x58,0xee,0xe7,0x95,0xfa,0x75,0xdb,0x37,0x74,0xb0,0x7d +.byte 0x4d,0xee,0xef,0x20,0x13,0xe5,0x82,0x07,0x8e,0xdd,0x57,0x75,0x33,0x56,0xc4,0x80,0xb0,0x06,0x9f,0x6b,0x72,0x31,0xcf,0xac,0x5f,0x96,0x13,0xeb,0xf4,0x34,0xb6,0x6b,0x55,0xef,0x55,0x26,0x4e,0xdb,0x6c,0x2f,0x64,0x29,0x91,0x3c,0x6d,0x29,0xd2,0x94,0xbd,0x2c,0x99,0xb9,0x97,0x76,0xee,0x7d,0xfd,0xb2,0x8d,0x14,0x4f,0x09,0x81,0xb3 +.byte 0x68,0x3e,0x79,0x28,0x56,0x50,0x3f,0x86,0x4c,0x95,0x6c,0xad,0xf6,0xc5,0x43,0x25,0xea,0xbc,0xe2,0xba,0x77,0x18,0xc6,0x82,0x65,0x73,0x38,0x90,0x9d,0xc9,0x57,0xcd,0xa2,0x7c,0xd3,0x26,0x59,0x44,0xd9,0x79,0xae,0xdd,0x6f,0xe9,0xdc,0x16,0x73,0xba,0x05,0x8a,0x40,0x9f,0xe7,0xcf,0x29,0xa4,0xdf,0x49,0x7f,0x1d,0x73,0xc7,0x8b,0x8d +.byte 0xad,0xb5,0x3d,0x1b,0x64,0xb1,0x8f,0x78,0x06,0xbe,0xaa,0x2c,0x08,0x73,0xc7,0x2c,0xdc,0xd8,0x3f,0x9f,0x1b,0xd2,0xe1,0x4f,0x9d,0x87,0xb8,0xa9,0xdc,0xef,0xbc,0x31,0x9f,0xf7,0x84,0x09,0xe7,0xbc,0xec,0x2a,0xcb,0x3b,0x3a,0x30,0xe2,0x5b,0xbc,0xcd,0xa8,0xdb,0x46,0x80,0xec,0xaa,0x06,0x8e,0xd8,0x6c,0x35,0x65,0x52,0xb8,0xc3,0xf9 +.byte 0x97,0x68,0x06,0x2d,0x3e,0x91,0x71,0x44,0x6e,0x01,0x51,0x10,0x5b,0x74,0xb9,0x3f,0xd7,0xf9,0x5c,0x98,0xe6,0xf8,0x98,0x32,0x26,0x9b,0x5e,0x9c,0x88,0xfb,0xaa,0x70,0xd2,0x2e,0xc2,0xf6,0x02,0x92,0x33,0x55,0x92,0xba,0xfb,0x0e,0x0b,0x08,0xdf,0x5d,0xdd,0x47,0x28,0xae,0x32,0xb3,0x27,0x8d,0xd4,0x18,0x43,0x64,0xc4,0x7f,0x60,0x62 +.byte 0xd9,0x63,0xd1,0x28,0xc9,0x75,0x3b,0x44,0xb4,0x8e,0x2a,0x93,0xf9,0x4c,0x4f,0x7e,0x6b,0x98,0xc9,0x1a,0x82,0x51,0x9a,0xb2,0x80,0x70,0x2e,0xff,0x19,0x66,0x1b,0xb6,0xbc,0x15,0x8e,0xe6,0x0f,0x8e,0x04,0x10,0x94,0x44,0x6c,0x32,0x4b,0x61,0xbc,0x4a,0x16,0x7b,0x25,0x2a,0x27,0x96,0xa9,0xa9,0x61,0x10,0xc1,0x46,0xdd,0xf5,0xe3,0xe8 +.byte 0x1f,0x5b,0xa0,0x77,0xe1,0x42,0x9a,0xd4,0x04,0x33,0x68,0x72,0x1c,0x44,0x29,0xce,0x98,0xe0,0xc7,0x3a,0x9e,0x3c,0xb9,0xb4,0x29,0xef,0x57,0xee,0x8c,0x8f,0x7c,0xe6,0xe1,0x43,0x6e,0x45,0x0e,0xdd,0x4e,0x11,0x4b,0x28,0x69,0xde,0xb8,0xfa,0x32,0xbe,0xc6,0x4f,0x11,0x99,0xe5,0xe3,0xe2,0x1f,0x03,0xbe,0x4a,0xad,0x60,0x68,0xc8,0x13 +.byte 0x80,0x4e,0xb6,0xc0,0xc5,0xc7,0x97,0x5c,0x0b,0x0e,0x64,0x43,0x78,0x70,0x95,0x91,0x8e,0x36,0x6b,0xad,0x57,0xc7,0x1e,0x9c,0x54,0xc9,0x89,0xf0,0x13,0xde,0x0a,0xbe,0xc0,0xa9,0x35,0x77,0x0a,0x01,0x7f,0x98,0x51,0x82,0x92,0x14,0xe0,0x9a,0x08,0xa3,0x0c,0x6c,0x67,0xf2,0x05,0xaa,0xa9,0x4e,0xce,0x3b,0xb1,0xb6,0x8c,0x82,0x5d,0x11 +.byte 0xf2,0xe5,0xd7,0xda,0x3a,0x65,0xa0,0xe3,0xa4,0x09,0x01,0x1c,0xb2,0x08,0x90,0x94,0xb5,0x51,0x56,0x24,0x22,0xfd,0x12,0xad,0x7a,0x75,0xcf,0x0f,0x0f,0x23,0xc3,0xa6,0x1f,0xf8,0x39,0xbc,0x2f,0x18,0x53,0x14,0xef,0xdf,0x90,0x6a,0x50,0x2b,0x8c,0x8b,0xa8,0xd4,0x8c,0x59,0x8f,0xd8,0x81,0x86,0x57,0xc1,0xd1,0xfb,0xe7,0xa6,0x20,0x6e +.byte 0x7c,0xbf,0xce,0xe3,0xce,0x28,0x35,0x7c,0x8e,0x1a,0x66,0xea,0x7d,0x81,0x09,0xdb,0xa8,0x64,0xba,0x3c,0x07,0x3f,0x23,0xd3,0x05,0x97,0x4c,0x92,0xc2,0xa4,0xe8,0x6c,0xfb,0xa0,0x9d,0x8b,0x4d,0xcb,0x3a,0x96,0xe7,0x04,0x0f,0x48,0x87,0x2c,0xdd,0x51,0xf3,0x46,0x7e,0x61,0x89,0xbe,0xb8,0xb0,0x9e,0x9c,0xc4,0x37,0x55,0xe6,0x4f,0x78 +.byte 0x7e,0xb0,0x59,0x42,0xca,0xba,0x4a,0xb2,0x50,0xbd,0x16,0x68,0x99,0x42,0xb4,0x8b,0x60,0x3d,0x54,0x41,0x17,0x11,0x39,0x42,0x5d,0x41,0xec,0xc2,0x53,0x82,0x7c,0x32,0xc9,0xd1,0x34,0x49,0xd8,0x4f,0x29,0x21,0xeb,0x97,0x98,0x4c,0xeb,0x21,0xce,0x50,0xd6,0x53,0xd9,0xf1,0x6e,0x26,0xfa,0xe4,0x71,0x34,0xd8,0x38,0xac,0x39,0x4f,0x02 +.byte 0x36,0x93,0xf2,0x08,0x88,0xdc,0x24,0xdd,0x1f,0xf5,0xe9,0x7f,0x83,0xa0,0xa4,0x6b,0xc5,0xef,0x8e,0x82,0xf9,0x92,0xbc,0x82,0x3f,0xce,0x86,0xa6,0x34,0xf8,0x16,0xa7,0xdb,0x97,0xca,0x54,0x43,0xd8,0xfc,0x31,0xde,0x73,0xd0,0x79,0x1a,0xac,0x61,0x15,0xbd,0x38,0x64,0x3b,0xc6,0xb5,0x95,0xeb,0x2e,0x68,0xe4,0x1d,0x6b,0x18,0xab,0x88 +.byte 0xb0,0x96,0x51,0x8c,0xbe,0x41,0x63,0xd6,0x9a,0x21,0x60,0xe8,0x26,0x37,0xb3,0x10,0x76,0x46,0x31,0x90,0xb0,0x9f,0x17,0xab,0x0f,0x93,0xcc,0x12,0x78,0xee,0x17,0x1c,0xd8,0xc7,0x76,0x0a,0x5a,0xb4,0x8b,0xb1,0x67,0x11,0xde,0x48,0x14,0x8a,0x2a,0xc7,0x71,0x46,0x94,0x15,0x29,0x44,0x9e,0x35,0x03,0x10,0xf7,0x51,0x8a,0xaa,0x9c,0x4a +.byte 0x9a,0x44,0xd5,0xc7,0x37,0x9d,0xb4,0xad,0x41,0xd0,0xda,0xd2,0x1a,0xf9,0x93,0xee,0x28,0x32,0x65,0x0b,0x9c,0x12,0xe3,0xad,0x9f,0x82,0xeb,0x3f,0x03,0xe7,0x6a,0x58,0x83,0x3f,0xbe,0x9f,0x27,0xd3,0xd6,0xe2,0x45,0xbf,0x90,0xe2,0x12,0x61,0x0b,0x57,0xd7,0x06,0x72,0x39,0x2c,0x3e,0x65,0xb2,0xf4,0xf7,0x54,0xef,0x32,0x99,0x44,0x0d +.byte 0xf0,0x5c,0xde,0x4c,0x2e,0x22,0xcd,0x3c,0x25,0x02,0xa5,0x0d,0x79,0x16,0xb0,0x51,0x3f,0x3c,0x84,0x56,0xfa,0x00,0xae,0x7a,0x36,0x45,0x3a,0xcc,0x1d,0x66,0xff,0xf4,0x49,0xce,0xb5,0x5c,0x51,0xf4,0x3e,0x07,0xf2,0x83,0x84,0x4d,0x4e,0xb7,0xce,0x03,0x7b,0x23,0x63,0xdf,0x64,0xa2,0x55,0x92,0xf9,0x2e,0xa5,0x21,0x89,0x29,0x42,0x48 +.byte 0x36,0xc5,0xab,0xd6,0x82,0xe3,0xff,0x45,0xfc,0x61,0xa6,0x4f,0xb9,0x51,0xba,0xd5,0x03,0xa9,0x0b,0xe7,0x73,0x83,0x97,0x1d,0xb2,0xc6,0x75,0xa0,0x52,0x99,0xfc,0x1b,0x27,0x7a,0x10,0xc1,0xed,0x70,0x21,0x4b,0x93,0xa4,0x20,0xed,0x16,0x76,0x97,0x82,0xab,0x21,0xfe,0xa4,0x3f,0xd9,0xbd,0x9c,0x2f,0x19,0x42,0xbc,0xb3,0x4f,0x44,0xf3 +.byte 0x9e,0xd0,0xe7,0xc9,0x7e,0x31,0xaa,0xbc,0x4b,0xba,0x73,0xe1,0xc3,0xbf,0x5d,0xa2,0xd8,0xb7,0xb6,0xfc,0x0a,0x32,0xb9,0xff,0x80,0xb6,0x2a,0x8b,0xea,0x81,0xa0,0xeb,0x1e,0x9e,0x69,0xdd,0xbe,0xc1,0x8a,0x5d,0xfb,0x66,0x21,0x98,0x5c,0x6f,0xd8,0xb4,0xcf,0x8a,0x1a,0x4b,0xde,0xa2,0x20,0xe8,0x5a,0x5a,0xee,0x14,0x09,0xcb,0x63,0x1c +.byte 0x14,0x7d,0x9b,0x47,0xf8,0xfa,0xda,0xb7,0x0e,0xc6,0xbd,0xb2,0x13,0xb8,0x10,0xe2,0x71,0x04,0x36,0x78,0x6d,0x3a,0x8b,0x45,0xd3,0x05,0xec,0x8a,0x2d,0xfa,0x85,0x7c,0xdd,0x75,0xb3,0x2d,0xd1,0xae,0xfc,0xdd,0x02,0x2e,0xcc,0x43,0xc5,0xed,0xe4,0x3f,0xee,0x2c,0xd7,0x37,0x81,0x3a,0x44,0xe6,0xed,0x8c,0x9d,0x9d,0xfa,0xb5,0xdc,0xde +.byte 0xb2,0x7c,0x51,0x58,0xa4,0x21,0xac,0xe2,0x79,0x96,0x90,0xe2,0x0b,0xbf,0x51,0x66,0x77,0x02,0xff,0x67,0x0a,0x70,0x1f,0x04,0x6c,0xb0,0x5b,0x2d,0x26,0x23,0x5a,0x85,0x73,0x66,0x6e,0x7c,0xb3,0xeb,0x36,0x73,0x0f,0xcd,0xb2,0x07,0xee,0x78,0xd1,0xbd,0x5e,0xfa,0x31,0xf6,0x82,0x67,0x94,0xaa,0xff,0xef,0xd2,0x23,0xfc,0x82,0xaa,0xe2 +.byte 0xef,0xc3,0x74,0x79,0x6c,0xe9,0x3f,0x8d,0xe1,0x1b,0xc8,0xb4,0xff,0x15,0xf4,0x60,0xe8,0x84,0x3f,0xaa,0xc6,0x53,0x51,0x1a,0x9b,0x04,0x9b,0xab,0xc5,0xee,0x9a,0x98,0x80,0x89,0x8d,0x5b,0xef,0x0a,0x69,0x71,0xd2,0xf3,0x49,0xc1,0xc1,0x87,0xb3,0x18,0x4b,0x82,0x02,0x87,0xb0,0xf1,0x76,0x4b,0x3e,0xad,0x95,0x51,0xb1,0x64,0xb1,0x03 +.byte 0x5b,0xd2,0x10,0x7b,0x4e,0xd4,0x08,0xf8,0xfd,0xea,0xf0,0xc7,0x16,0x43,0x86,0xa6,0xdb,0xcd,0x75,0xce,0xa9,0xfd,0xa8,0x7c,0x51,0xf7,0xa5,0x29,0x6f,0x0d,0xee,0x66,0x8f,0xc6,0xcd,0x9e,0x3f,0x00,0x24,0x21,0xca,0x69,0x79,0x27,0x03,0x62,0xdf,0xad,0xb9,0x8c,0xd8,0x08,0x88,0x0d,0x0c,0xa1,0x29,0xf9,0xba,0x92,0xb5,0xdd,0xb8,0x1a +.byte 0xbb,0xab,0x44,0xb2,0xda,0x1b,0x8b,0xc1,0x3c,0x61,0x9f,0x7a,0x8b,0x89,0x99,0x09,0xc3,0xb4,0xe4,0x24,0xf5,0x3b,0x36,0xa6,0x61,0x0a,0xec,0x2a,0x1c,0x92,0x7c,0xb1,0x7c,0xd8,0x0b,0x98,0x48,0x8d,0x52,0xa2,0x57,0xc1,0x28,0x89,0xbb,0x60,0x5c,0x58,0x62,0x41,0x1c,0xd6,0xfb,0x69,0x09,0x93,0x90,0x31,0xc4,0x72,0x71,0xf0,0x4f,0xcf +.byte 0x10,0xbb,0xb7,0x6c,0x3b,0x53,0xa3,0x0b,0xff,0x44,0x4c,0x37,0xd5,0x26,0x83,0x7e,0x5c,0xb9,0xa5,0xe8,0x8b,0xc4,0x15,0xf6,0xc7,0xd1,0x39,0x67,0x01,0xb7,0xca,0xa7,0x71,0xa8,0x04,0x95,0x0f,0xfc,0x0a,0x9e,0x52,0xb2,0xfb,0x48,0x47,0xb6,0xa5,0x14,0xc2,0x4f,0xa8,0xd5,0x0f,0x10,0x76,0x39,0x23,0x74,0x2e,0xe5,0x17,0xcb,0xad,0x8a +.byte 0x4a,0x25,0xc8,0x9b,0x25,0x94,0x34,0xbc,0x4b,0x2f,0xdc,0x0a,0xcd,0xc1,0x02,0x72,0x7d,0xa0,0x10,0xa7,0x32,0x68,0xe8,0xd5,0x23,0xe8,0xc9,0xbc,0x05,0x05,0x1e,0xac,0x55,0x45,0xfb,0x42,0x2f,0x0f,0x51,0x8d,0x31,0xb1,0xbc,0x10,0xa1,0x03,0xc3,0x6f,0x35,0x08,0xa5,0x2f,0x91,0x4e,0x43,0x6b,0x62,0x3b,0x00,0x4c,0xd0,0xb8,0x33,0xbc +.byte 0xca,0x57,0xb8,0x1b,0xb4,0x52,0x1a,0xa7,0x03,0x78,0xa0,0x4f,0xda,0x86,0xb9,0xd8,0xc6,0x69,0xe6,0x61,0x2e,0x62,0x96,0x60,0x0d,0x76,0xdc,0x5d,0x0e,0xa8,0xf3,0x86,0xde,0xcf,0x39,0x34,0xc7,0x69,0xed,0xcb,0x9a,0xf5,0xc3,0xce,0x6d,0xa5,0x7f,0xae,0x73,0xb9,0xa6,0xbf,0x88,0x93,0x2b,0x0e,0x8b,0x4b,0xa5,0xeb,0x62,0xc6,0x1a,0xc7 +.byte 0x63,0x63,0x58,0x62,0x37,0xc6,0xbc,0x00,0x72,0xac,0x3d,0x7c,0x22,0xa5,0x59,0xf1,0x6e,0x60,0x45,0x3e,0x99,0x76,0x40,0x82,0xa7,0x52,0xf3,0x48,0x8e,0x4a,0xa3,0xe1,0x3b,0xea,0x77,0xa7,0x7d,0x13,0xe7,0xc4,0xc6,0xa6,0x6e,0xda,0xe8,0x50,0xc8,0x39,0x30,0xab,0x8a,0xe1,0x08,0xa9,0xe3,0xbd,0x8d,0xbd,0x83,0x3c,0xbc,0x6c,0x92,0xed +.byte 0xf1,0xa9,0xd3,0x50,0xf2,0x29,0x8b,0x39,0x46,0xaf,0x08,0x7e,0x00,0x64,0x2f,0xa8,0x18,0xab,0x7e,0x07,0xd3,0x63,0x2a,0xd3,0xd3,0xbb,0xf9,0xdd,0x2b,0xec,0x70,0x35,0x1a,0x94,0x6b,0x87,0xe4,0x1a,0x0a,0x44,0x46,0x08,0xa6,0xce,0x1b,0xf7,0xd7,0x20,0x87,0x1a,0x96,0x6c,0xbe,0xdf,0x73,0x3b,0xc9,0xaf,0x89,0x1c,0x2f,0x47,0xe9,0xd8 +.byte 0x03,0xa6,0x03,0x6c,0x73,0xa9,0x65,0x20,0x36,0xea,0x6f,0xe7,0x96,0x7c,0x01,0x87,0xb0,0x21,0xba,0xb4,0xed,0x1f,0x81,0x65,0x97,0x36,0xda,0x68,0x80,0x64,0x99,0xe6,0xda,0x95,0x04,0xdf,0x5d,0xfd,0x86,0xd1,0xfd,0xfa,0x1c,0xd7,0x89,0xbf,0xe6,0x99,0x6c,0xf5,0x01,0x56,0x20,0x88,0x79,0xa7,0x8d,0x88,0x82,0xe5,0x32,0x38,0xe0,0xf0 +.byte 0x98,0x63,0xa9,0xab,0xeb,0x09,0x8d,0xaf,0x3f,0xa8,0x57,0x98,0xde,0xc8,0x9c,0x8d,0x1d,0x18,0xc5,0xa8,0x82,0x51,0x9b,0x6f,0xc6,0xb8,0x09,0xd3,0xea,0xd4,0xe3,0xac,0xd1,0x0e,0x88,0xda,0xdf,0x38,0x53,0x14,0x87,0x28,0x6f,0x13,0x35,0xdb,0xfe,0xa1,0xe7,0x43,0xb5,0x02,0x46,0x08,0x1a,0x31,0x0d,0x9e,0x3d,0x3b,0xbf,0xbb,0x82,0x9c +.byte 0x09,0xf3,0xd9,0x22,0x0a,0x82,0x07,0xd3,0xe8,0x19,0x6e,0x21,0xd2,0xa2,0xa8,0x14,0xbc,0x42,0xb6,0xeb,0x8c,0x40,0x9b,0xb2,0xa9,0x17,0xad,0x2c,0x19,0xaa,0x4b,0x22,0xf9,0x4e,0xde,0x8f,0xbe,0x78,0x9b,0xab,0xb9,0xfa,0xb1,0x3e,0x68,0x86,0x1a,0x4a,0x61,0xba,0x63,0x51,0x25,0x11,0x59,0xd0,0xb7,0x0c,0xb7,0xcc,0x45,0x05,0x6d,0x5a +.byte 0xe2,0xd7,0x10,0x80,0x19,0xd3,0xa9,0xab,0xb6,0x9f,0x53,0x7a,0xaa,0x19,0x74,0x01,0xc9,0xd6,0x45,0x42,0x2c,0xe5,0xc0,0xcf,0x62,0xe6,0x95,0x6f,0x4c,0x90,0x50,0x97,0x61,0x83,0x73,0xd0,0xc2,0xd5,0xf0,0x05,0xca,0xe9,0x6f,0x67,0xa9,0x51,0xb8,0xb4,0x9d,0x30,0x8e,0xe3,0x29,0xf9,0x3b,0x3d,0x17,0x25,0xad,0xbb,0xb0,0x34,0x68,0x29 +.byte 0x06,0xad,0x0e,0xdf,0x41,0xa6,0xf1,0xa6,0x25,0xc4,0xf0,0x0d,0x57,0x84,0x34,0x2c,0x3b,0xb1,0x41,0xd6,0x83,0x00,0x3a,0x91,0x98,0x8e,0xd0,0x59,0x0b,0x2d,0xc9,0x65,0x03,0x91,0xcb,0x03,0x97,0x57,0xde,0x11,0x8b,0x4b,0x1b,0x85,0x0b,0xb6,0x68,0x25,0x3c,0x1a,0x04,0x7d,0xd5,0x2b,0x16,0x69,0x1f,0x64,0x8b,0x47,0x60,0x17,0xaa,0x68 +.byte 0x45,0xf2,0x0b,0xf8,0xa2,0x27,0xf8,0x47,0x86,0x41,0x94,0x3f,0x92,0xc3,0x02,0xab,0x80,0x2b,0x0e,0x3c,0xd0,0x13,0x59,0x08,0xfc,0x13,0x33,0x52,0xbb,0x2d,0x6b,0x22,0xa2,0x8b,0x9f,0x7c,0x8e,0x40,0x35,0xa4,0xc7,0x45,0xb7,0xf8,0x10,0x22,0x95,0xc5,0x48,0xc1,0x50,0x4d,0x4a,0x36,0xe1,0xec,0x1e,0x07,0xf7,0x68,0x63,0xcb,0x13,0x03 +.byte 0x70,0x63,0xb1,0x9b,0xf3,0x60,0x01,0x6e,0x63,0x5c,0x4d,0x2c,0x5c,0x5c,0x58,0x8b,0xbb,0x6e,0xd1,0x69,0xdd,0x19,0xfe,0xfb,0xd6,0xdc,0x68,0x97,0x9c,0x46,0x0d,0xdd,0x4d,0xbd,0x52,0xe4,0xd9,0xc2,0x03,0x4e,0x4c,0xe2,0x66,0x6b,0x4d,0xbe,0x6b,0xf3,0xd6,0xbe,0x2d,0xba,0xdd,0x1b,0x4f,0x60,0x02,0x74,0xa1,0xf0,0xd0,0xfa,0x23,0x33 +.byte 0x29,0x7e,0x00,0x09,0x47,0x15,0xa8,0xd8,0xdb,0xb8,0xe1,0x20,0xd5,0xe2,0x91,0xd0,0xe8,0xfa,0xa1,0x0d,0x80,0xbd,0x7d,0x62,0x9d,0xf2,0xbc,0x03,0xa1,0x44,0x9f,0x8d,0x3d,0xe3,0xb4,0xec,0x32,0xd9,0x66,0xb0,0xc7,0x75,0x11,0xaa,0xab,0xb7,0x84,0x1d,0x5b,0x4f,0x25,0x5c,0x53,0xed,0xbb,0x6d,0x06,0x1f,0x12,0x5f,0xc0,0xeb,0x55,0x3e +.byte 0xd0,0x5b,0x4d,0x07,0xf7,0x84,0x12,0xbc,0xc8,0xd4,0xf4,0x69,0xdb,0x71,0x8a,0x00,0x58,0xf5,0x84,0xff,0xc3,0xbc,0x13,0x6e,0x5f,0xac,0xd6,0x72,0x1b,0x2d,0xbb,0x27,0xfd,0x8d,0xcc,0x59,0x79,0xb9,0x63,0xe8,0x0a,0xf3,0x7f,0xa4,0x9f,0x4c,0x35,0x9a,0xdc,0xff,0x11,0x42,0xf3,0x1c,0x86,0xd0,0x22,0x7e,0x81,0x79,0x04,0x93,0x5c,0xf2 +.byte 0xab,0xdf,0xb7,0x1d,0x84,0xbd,0xde,0xfb,0xd2,0x75,0x43,0xb8,0x19,0x63,0x97,0xfe,0x0e,0x91,0x9d,0x38,0x50,0xc5,0x7a,0xd6,0x51,0xd4,0xfc,0x8d,0xec,0xd5,0xe2,0x07,0xce,0x21,0x03,0x02,0xa1,0x61,0x8d,0xf1,0xf5,0x1f,0xb3,0xaf,0x9f,0x13,0xd8,0x81,0xd2,0xf7,0xe9,0xe2,0x62,0x49,0xca,0x1c,0x15,0x07,0x39,0xe6,0x01,0xec,0x6c,0x7d +.byte 0x3b,0xf1,0x52,0xda,0xf2,0x97,0x55,0xef,0x6f,0x88,0x82,0x0e,0xe6,0xf4,0x3e,0x33,0xf6,0x61,0x6d,0xef,0xbf,0xa8,0x9a,0x91,0x2f,0xb3,0xd2,0x3d,0xaa,0x7a,0x4e,0x80,0xe1,0x04,0xbe,0xc7,0xf8,0xc3,0xc9,0xd8,0xa2,0x01,0x5d,0x30,0xae,0x6d,0x39,0x52,0x60,0x9d,0x07,0xd5,0xa2,0x86,0xf0,0x88,0x00,0xec,0x18,0x11,0x2d,0x69,0x86,0xa9 +.byte 0x5a,0x73,0xda,0x4e,0x4c,0xdb,0xb8,0x02,0xad,0x53,0xec,0x20,0x0f,0x35,0xe0,0x4f,0x6e,0xd5,0x04,0xcc,0xa0,0xf5,0x8c,0x7d,0x31,0x04,0xa4,0xcf,0xf0,0x27,0xd2,0xb6,0x7d,0x8c,0x26,0x5f,0x19,0xba,0x79,0x80,0xec,0x6d,0xfe,0xaf,0xc1,0x3a,0xc2,0x3d,0x14,0x3c,0xa0,0xc5,0x77,0xf4,0x96,0x56,0x51,0x8b,0x7c,0x7e,0xe5,0x23,0x5d,0x46 +.byte 0x1b,0x2e,0x28,0xc0,0x80,0x6b,0x6a,0x85,0x6c,0xcf,0xaa,0x28,0xf3,0x83,0x2d,0x42,0x6f,0xf3,0x5e,0x5d,0xa2,0x7b,0xba,0x5c,0x12,0xb0,0xda,0xa0,0xeb,0xdf,0xad,0x1d,0x4c,0x54,0xcf,0xad,0x02,0x68,0xcd,0xfe,0x5c,0x5b,0x65,0x6d,0xa5,0xcc,0xd3,0xed,0x32,0x74,0x6c,0x58,0x83,0x3a,0xc1,0x71,0xbf,0xb5,0xa2,0xbd,0x10,0xe5,0x46,0xc5 +.byte 0x00,0x82,0xb1,0xeb,0x6f,0x73,0xf9,0x12,0x23,0xe4,0xda,0xff,0xa3,0xc4,0x9c,0xf1,0xcc,0x0e,0x1a,0x7a,0x10,0x62,0x8f,0xa5,0xb2,0x35,0x51,0x67,0xb5,0x95,0xbe,0x4c,0x81,0x53,0xfc,0xdd,0x27,0x26,0x97,0x42,0x01,0xec,0x08,0x91,0xb8,0xf0,0xaf,0x57,0x54,0x73,0x52,0x8f,0xde,0xca,0xed,0x1b,0xca,0x8d,0x97,0x1e,0xdc,0xe7,0xfa,0x68 +.byte 0xaf,0x37,0xb0,0x62,0xa3,0x9f,0xbc,0xac,0x9f,0x28,0x1e,0xb7,0xaa,0xb0,0x91,0xe4,0x95,0xad,0xf9,0xe5,0xd4,0xcc,0x23,0x0f,0x4a,0x2d,0xdd,0xea,0x64,0xd1,0x04,0x3c,0xd0,0xca,0xfe,0xd3,0x19,0x9d,0x28,0xa5,0x1c,0xff,0x3e,0xae,0xe9,0xfb,0x12,0x03,0x6d,0xcf,0xbc,0x5f,0x27,0xce,0x1a,0xb9,0xc0,0x31,0x88,0x6e,0x2e,0xaf,0x35,0x5f +.byte 0xf0,0xce,0x92,0xf8,0x6f,0xd6,0x67,0x1c,0xc6,0x5c,0xee,0x59,0xaa,0xd6,0x8c,0xa8,0x13,0xe6,0xf7,0xe2,0x82,0x2f,0x82,0x1e,0x4c,0x0d,0xab,0x3e,0xdb,0x4d,0xc5,0x90,0x32,0xe4,0xf0,0x74,0xc1,0x92,0x1b,0xdd,0xf3,0xa7,0xf6,0x6b,0x01,0x9d,0x8d,0x78,0x3d,0x5a,0x46,0x74,0x16,0x93,0x44,0xca,0xbe,0x31,0xea,0xb4,0x65,0xcd,0xe6,0xdd +.byte 0x56,0x9d,0x63,0x48,0xf0,0xf3,0x15,0x91,0x6c,0x27,0xf9,0xf7,0x3b,0x9f,0x04,0x6d,0x4d,0x1d,0xf1,0x7c,0xd1,0x81,0x06,0xef,0x04,0x47,0x98,0x5d,0x21,0xf4,0xe0,0xa0,0x13,0xaf,0x1d,0xb0,0xd5,0x45,0x64,0x92,0x46,0x99,0xff,0xb4,0xbf,0x36,0x01,0x2d,0x23,0x6a,0xc4,0x6b,0x3f,0x91,0x10,0x03,0xaf,0x6e,0x79,0x86,0xdb,0x15,0xde,0xfa +.byte 0x0d,0x71,0x04,0x16,0x12,0x31,0x9b,0x69,0xb9,0xe0,0xe7,0x4e,0xfd,0x0e,0xd5,0x71,0xa0,0xc7,0xd7,0x46,0xdb,0xda,0xbd,0xcd,0xdc,0x77,0xe5,0x71,0x9d,0xa1,0xf4,0x02,0x10,0xc6,0x27,0x76,0x4e,0xa6,0x35,0xe6,0x9e,0xda,0xbe,0xd8,0xc0,0x21,0x15,0xd4,0xcc,0xd5,0x4b,0xdf,0x38,0xc5,0x15,0x4b,0xfa,0x4e,0x83,0xf4,0x27,0xdb,0x8a,0xb1 +.byte 0x0e,0x1f,0xc9,0x3c,0x1c,0x36,0x35,0x54,0x8b,0x54,0xf8,0x31,0x1e,0x0e,0x1c,0x4e,0x44,0x29,0x90,0xad,0x28,0x85,0xb4,0x72,0x2d,0x1b,0x8b,0x26,0x2f,0xb6,0xc2,0x14,0x0e,0x81,0xd0,0x37,0x29,0x5c,0x0f,0xdc,0x21,0x62,0x10,0x7a,0xeb,0xa3,0x6e,0xd4,0x5b,0xb4,0x13,0x2e,0xd6,0x8f,0xd9,0x57,0x0d,0x9b,0xfd,0x1e,0x66,0xb7,0x6e,0xac +.byte 0x88,0xb9,0x75,0x60,0x62,0x83,0x72,0x96,0xc6,0x2e,0xdc,0xfe,0x88,0xee,0x07,0x9a,0x62,0x19,0xde,0xf1,0xa5,0xfb,0xcc,0xdb,0x4a,0xeb,0x16,0x60,0x34,0x46,0xfc,0xf2,0x6d,0xee,0xfc,0xa0,0x3a,0xb1,0x11,0x03,0x8b,0xae,0x26,0xef,0x86,0x91,0x20,0x7a,0x19,0x35,0xd6,0x12,0xfc,0x73,0x5a,0xb3,0x13,0xf8,0x65,0x04,0xec,0x35,0xee,0xf8 +.byte 0x70,0xb2,0x0b,0xe1,0xfc,0x16,0x35,0xec,0x6b,0xdd,0x8b,0xdc,0x0d,0xe8,0x91,0xcf,0x18,0xff,0x44,0x1d,0xd9,0x29,0xae,0x33,0x83,0xfe,0x8d,0xe6,0x70,0xbb,0x77,0x48,0xaa,0xe6,0xbc,0x51,0xa7,0x25,0x01,0xcf,0x88,0xc4,0x8b,0xfc,0xb1,0x71,0x01,0xc7,0xfc,0xd6,0x96,0x63,0xee,0x2d,0x04,0x1d,0x80,0x24,0xd0,0x80,0x03,0xd9,0x18,0x96 +.byte 0xec,0x6a,0x98,0xed,0x6e,0x9a,0xe0,0x42,0x5a,0x9d,0xec,0xed,0x46,0x3c,0xb5,0xf0,0xd6,0x88,0x92,0x89,0x38,0x5f,0xd6,0xba,0xfd,0x32,0x31,0x81,0xe9,0xf1,0x56,0x89,0xa3,0x56,0xa6,0x03,0x00,0x60,0xe1,0xa8,0x59,0xdb,0xbe,0x72,0x39,0x6c,0x08,0x4d,0x26,0x57,0xa6,0xf6,0x13,0x7d,0x4a,0x2f,0x64,0xb8,0xa7,0x23,0x2c,0xa4,0x4a,0xad +.byte 0xcf,0xa1,0xa2,0x32,0xbb,0xd1,0x98,0x02,0xe4,0x1a,0x41,0x26,0x23,0xba,0xa2,0x17,0x62,0xaa,0xa6,0xc7,0x74,0x9d,0xea,0xc7,0xa0,0x08,0x0a,0x1a,0x4e,0x71,0xd9,0x45,0xf7,0xe8,0x57,0x79,0x12,0xd0,0x38,0x2f,0xdb,0xbd,0x5a,0x84,0xe1,0xb2,0x62,0x7e,0x56,0xb3,0x50,0x2a,0xa0,0x32,0x1f,0x86,0x71,0xc4,0xa5,0xba,0x93,0x5b,0x22,0x97 +.byte 0xf4,0xe5,0x44,0x27,0x6b,0x06,0x84,0x55,0x19,0x45,0x12,0x75,0x4b,0xf0,0x76,0x6d,0x3c,0x0a,0x17,0xc2,0x9d,0x96,0x72,0xe7,0x5e,0x79,0x84,0x0a,0x39,0x64,0x09,0x6e,0x7e,0xd7,0x77,0x40,0x75,0x2c,0xbd,0x98,0xae,0x3e,0x34,0x08,0x4d,0xda,0x2c,0xcf,0x0c,0xa2,0x8c,0x40,0xfa,0x34,0x43,0x15,0xed,0x4f,0x69,0xa6,0xef,0x2d,0x3c,0x55 +.byte 0x7a,0xe1,0x67,0xd1,0x0a,0x89,0xe0,0x2d,0x02,0x35,0x57,0xc8,0x9a,0x4b,0xc4,0x46,0xa7,0x57,0x03,0x89,0x7d,0x3f,0x70,0x47,0x03,0x06,0xd9,0x81,0x1f,0x8d,0x7e,0x36,0x9b,0xfd,0xad,0x20,0x9d,0x5a,0x29,0xe9,0x40,0x6a,0xb8,0x07,0x6b,0xc7,0x2b,0x58,0xd2,0x1d,0xef,0x88,0xa5,0xfb,0x3b,0xd6,0x9f,0xfd,0x89,0x0e,0x50,0xd4,0xbc,0x89 +.byte 0x3f,0x3c,0x6c,0x50,0xc6,0xe3,0x8b,0x7e,0x34,0x8b,0x26,0x99,0x2a,0xfa,0xa5,0x19,0x53,0xb5,0x5e,0xfd,0x94,0xe8,0x33,0xb2,0x6d,0x9c,0x3c,0x0c,0x14,0x90,0xc4,0xa2,0x4a,0x3a,0xca,0x07,0x72,0x46,0x37,0xfc,0x02,0x5d,0xf4,0x97,0xca,0x8e,0xc6,0xc4,0x63,0xda,0x5c,0x89,0xc3,0x6c,0xb1,0x1a,0xf5,0x2a,0xbc,0x2e,0xe3,0xcd,0x2f,0xe2 +.byte 0x91,0x16,0xf9,0x94,0x0e,0x1b,0xe6,0x01,0x73,0x61,0x1e,0xcf,0x5e,0x21,0x70,0xcb,0x5b,0x87,0xc1,0x46,0x39,0x59,0xa6,0x74,0x82,0x7f,0xa2,0x6c,0x4a,0x50,0x5f,0xbd,0x1c,0x1a,0x65,0x80,0x01,0x44,0x19,0xcf,0xcd,0xef,0x3d,0x5e,0x1b,0x71,0x82,0x4f,0x8b,0xc1,0xa0,0x9a,0x77,0xee,0xac,0x06,0xdc,0x6a,0xa0,0x34,0x50,0xa4,0xe0,0xda +.byte 0x3d,0xa0,0xf7,0x9a,0xb8,0xd5,0x59,0xe0,0x7f,0x05,0x04,0xd5,0x32,0x8c,0x49,0xf5,0x0a,0x0e,0x99,0x83,0xf5,0x47,0x2b,0x7c,0x7b,0x65,0x25,0x02,0xc4,0x88,0xbb,0x6a,0x4f,0x89,0x31,0x60,0xc2,0x47,0x8b,0x22,0xfc,0x4a,0xde,0xb3,0xb9,0xed,0xb8,0xdf,0xd7,0xd5,0x09,0x98,0xcc,0x5f,0xaf,0xbb,0x02,0xc3,0x62,0x62,0xee,0x99,0x42,0x1b +.byte 0xbe,0x5b,0xa8,0x5c,0x40,0x03,0x86,0x29,0x29,0x06,0x0b,0x53,0x46,0x29,0x03,0x3b,0x11,0x64,0xf1,0x09,0xca,0x69,0x69,0xfa,0xcc,0x85,0x23,0x14,0x1b,0xfd,0x65,0xb9,0xf5,0x6b,0xbb,0x2a,0x9d,0x6e,0x64,0x1a,0xe1,0x37,0x39,0xd4,0x85,0x40,0xa3,0xf9,0x04,0xec,0x9e,0x3b,0x74,0x97,0xa4,0x64,0x8a,0x48,0xb2,0x62,0xc1,0x1c,0xed,0x67 +.byte 0x6f,0x23,0xae,0x0f,0x64,0x2e,0xe5,0x92,0xb6,0xb5,0x71,0x24,0xc0,0x60,0x9a,0x10,0x23,0x6b,0x4a,0x22,0xe9,0x0a,0xaa,0x09,0x62,0x39,0xe0,0x40,0xee,0x13,0x27,0x14,0x73,0xeb,0x75,0x7b,0x4a,0xe1,0x42,0x65,0x37,0xae,0x80,0x08,0x26,0xf9,0x53,0x98,0x58,0xdd,0xf5,0xed,0x26,0x37,0x37,0x85,0xb5,0x88,0x91,0x05,0x2d,0x04,0xa6,0xd5 +.byte 0xa6,0x98,0xb0,0x0e,0x4b,0x4c,0x53,0x76,0x79,0xad,0x82,0xc5,0x16,0xba,0xd8,0x20,0x5f,0x4c,0x1d,0x69,0xa0,0xe0,0xe9,0xbc,0xb8,0x5c,0x10,0x4a,0x0a,0xd3,0x52,0x9c,0x2e,0x1b,0x6c,0xf7,0x43,0x83,0x6f,0xa9,0xcc,0x00,0xed,0x16,0x4c,0xc3,0x24,0x79,0x59,0x68,0xfb,0xf9,0xf6,0xb0,0xb4,0x01,0xc2,0xdd,0xf7,0xe5,0x3b,0x60,0x48,0x49 +.byte 0x32,0x48,0x05,0xa8,0x62,0xa3,0x03,0x9f,0x3d,0x91,0xdb,0x84,0x64,0x6f,0x1e,0x50,0x8e,0xdf,0x1a,0xa0,0xb1,0xf4,0x34,0x7c,0xe6,0xb7,0x7c,0x14,0xa1,0x65,0x1a,0xb4,0xdb,0x67,0x78,0xb1,0x88,0x3c,0xc2,0x5e,0x0e,0xea,0x32,0x15,0xc7,0xda,0xe4,0x9a,0x44,0xde,0x61,0x90,0x3b,0x97,0x11,0x5b,0x6d,0xa5,0x9a,0x2f,0x1b,0x8b,0xd7,0xdd +.byte 0x73,0xe4,0xc3,0x19,0x5d,0x68,0xcf,0x0e,0xe4,0x69,0xa5,0xeb,0x50,0x6f,0x79,0xff,0x91,0xc6,0x95,0x83,0xe8,0x72,0x6a,0x01,0x49,0x2b,0xcf,0x8f,0x93,0x1e,0xef,0x31,0x17,0x8f,0xa8,0x2b,0x5f,0x4b,0x79,0x8b,0xe5,0x6c,0xb7,0x61,0xd5,0x9e,0xe0,0xd4,0x25,0xc3,0x93,0x31,0x8f,0x66,0x6c,0x48,0x30,0x65,0xf4,0xd7,0xde,0x64,0xee,0xbd +.byte 0xbd,0xad,0x32,0xfc,0xf3,0xd8,0x7c,0x85,0x7c,0x24,0x40,0xb6,0xd4,0xe0,0x4b,0xc0,0xab,0xcc,0xeb,0x77,0x7c,0xb7,0x33,0x3c,0x90,0x04,0xaf,0x85,0xaa,0xb4,0xaa,0x90,0x67,0x29,0xd9,0x85,0x6a,0x34,0xf4,0xc4,0x6c,0xbc,0xb4,0x86,0x54,0x83,0xd5,0x5e,0xf3,0xdd,0x1a,0x56,0x5e,0xa5,0xd8,0x06,0xc0,0xa7,0x27,0xd4,0x0d,0x5b,0x08,0xf4 +.byte 0xb4,0x15,0xf9,0xb4,0x56,0x1c,0x80,0x98,0xc9,0xcd,0xf0,0x38,0x18,0xbe,0x99,0xec,0x7e,0x0c,0x3d,0xc1,0x98,0x26,0x9d,0x50,0xe4,0x00,0xcf,0x0f,0x0b,0x77,0x86,0x31,0x55,0x38,0xa4,0x31,0x50,0x51,0x64,0x88,0x81,0x05,0x32,0x99,0x38,0xd1,0x62,0x20,0x8e,0xf0,0x29,0x31,0xf5,0x79,0xbb,0x1e,0x0f,0xba,0x51,0x94,0xa9,0x54,0xcd,0x43 +.byte 0xce,0xe5,0x2c,0x29,0xa5,0x51,0x23,0x97,0x5d,0x36,0xff,0x51,0x5c,0x66,0xb7,0x62,0x1b,0x5f,0xd7,0x2f,0x19,0x07,0xff,0x0a,0xfc,0xf6,0x6e,0xb5,0xfd,0xa9,0x92,0x40,0xd3,0xe6,0x99,0x15,0x6f,0x1e,0x91,0xad,0x1f,0x4d,0x1c,0xe2,0xd9,0xcf,0x01,0x71,0xec,0x1a,0xa3,0xba,0x48,0x40,0xfd,0x18,0xb1,0x24,0x2b,0xd2,0x37,0xb5,0x74,0xdd +.byte 0x7e,0xf6,0x18,0xb4,0x7b,0x0e,0x7d,0x65,0x46,0x7b,0xe3,0x51,0x03,0xae,0xe1,0xd0,0x74,0xc6,0xc9,0xda,0x0e,0x79,0x6f,0xf5,0x62,0xc0,0x7e,0x76,0x3e,0x13,0x8b,0xe0,0x4c,0xfa,0x7e,0xe1,0xa2,0xee,0x9d,0x3f,0x91,0x9d,0x21,0xdd,0xc2,0xd0,0xa5,0x1d,0x17,0xd6,0xdc,0xeb,0xa3,0xc0,0x71,0xa0,0xfe,0xf0,0xaf,0x31,0xdc,0xa3,0xd4,0x21 +.byte 0x4a,0x32,0x1d,0x54,0x25,0x3b,0xc8,0x8f,0x68,0xcd,0x99,0xce,0x76,0x39,0x42,0xd8,0xca,0xf2,0x46,0x72,0xfe,0x52,0xc2,0x90,0x83,0xed,0xa0,0x6d,0x1b,0xf5,0xb1,0x09,0xae,0x2b,0x34,0x4f,0xd3,0x78,0x19,0x7f,0xad,0x8d,0x50,0x26,0x9c,0x36,0xa3,0xb5,0x3d,0x0b,0xa6,0x87,0x65,0xa0,0xdb,0x88,0x20,0xff,0xb6,0xfd,0xc5,0xbd,0x0a,0x28 +.byte 0xc8,0x9c,0x42,0x7f,0x24,0x58,0xe9,0x07,0x53,0x4b,0x9a,0x2a,0x1e,0x7b,0x90,0x97,0x78,0x74,0x80,0x5d,0xe5,0x6e,0xae,0x15,0x68,0xd4,0x2a,0x3a,0xd3,0x00,0x4f,0x4b,0xff,0x8f,0x1e,0x8f,0x9f,0x75,0xe5,0xea,0x9d,0xb9,0xed,0x8f,0xa9,0x2b,0x70,0xa8,0xcb,0x08,0x85,0xd3,0x8f,0x5d,0xc7,0x49,0x66,0xcc,0xa8,0x6d,0xbd,0x01,0x93,0xd5 +.byte 0xe6,0x75,0x2e,0x25,0x07,0x59,0x86,0x3f,0x44,0x8b,0x0b,0xb5,0x38,0xd5,0xbd,0xcf,0x48,0x8a,0xf7,0x71,0xd6,0x6b,0x2e,0x93,0x3d,0x0b,0xc0,0x75,0xee,0xa8,0x5d,0x9c,0x3d,0xa5,0xdb,0xc5,0x8d,0xac,0xda,0xf4,0xcd,0x5f,0x24,0xfe,0x86,0x14,0x44,0x65,0x3f,0x89,0x7f,0xd3,0x61,0x48,0xb0,0x43,0xf0,0x1e,0xde,0xbc,0xb7,0x51,0x0f,0xfc +.byte 0x32,0xf2,0x04,0xe2,0x4b,0xcb,0xbb,0x63,0x7d,0x5b,0x9a,0xb1,0x91,0x57,0x89,0xdc,0xed,0xde,0x91,0x2d,0xdd,0x42,0xc8,0x3c,0xb0,0xd7,0xa5,0xbc,0xa7,0x33,0x14,0x32,0xaf,0xf7,0xe9,0x25,0xd2,0x1a,0x64,0xf7,0x1b,0xab,0x0e,0xbc,0x50,0xbc,0x85,0x44,0xe0,0xa6,0xf1,0x4a,0x32,0x2f,0x30,0x27,0x48,0x4f,0xfc,0x8a,0x5a,0x78,0xe7,0x16 +.byte 0x55,0xcf,0xca,0x15,0xa8,0xa8,0xa2,0xef,0x9a,0x16,0x02,0xf4,0xb0,0x44,0xfd,0xc4,0x51,0x01,0x4f,0x1d,0x9d,0x09,0x62,0x42,0xe9,0x8b,0x18,0xa4,0x65,0xef,0x8b,0xfe,0x71,0x9f,0x4b,0x47,0x48,0x41,0x73,0x5c,0x0c,0x52,0x7d,0x79,0xbc,0x93,0x2a,0xaa,0x81,0x99,0x21,0xa5,0x9e,0xac,0xcd,0x57,0x51,0x50,0xbc,0xc9,0x96,0xaf,0xdf,0x1a +.byte 0x8f,0xee,0x36,0x05,0x20,0x32,0xe8,0x51,0x94,0x72,0x12,0xa3,0x17,0x25,0x7f,0x0a,0x3e,0xcc,0x22,0xcf,0x05,0xb2,0x2b,0xaa,0x36,0x01,0xdf,0xd4,0x4e,0xe1,0x02,0x43,0x4e,0xac,0x50,0x64,0xcd,0x2f,0xc2,0xa9,0xb0,0xf2,0xf2,0x4c,0xdf,0x16,0xa6,0x54,0xf7,0xbf,0x1a,0x69,0xeb,0xa1,0x5a,0xc7,0xcf,0x46,0x2d,0xc2,0x3a,0x7f,0x4a,0x14 +.byte 0x22,0x15,0x46,0x46,0x2d,0xc1,0x98,0xf7,0x0b,0xf3,0x27,0xfc,0x78,0x67,0x05,0xd8,0xe0,0xf6,0xb8,0xb6,0x0b,0xdb,0x4d,0x6b,0x7e,0x9b,0xbf,0x5c,0x15,0x97,0x49,0x9f,0x6f,0x11,0x6c,0x6e,0x1d,0x1e,0x65,0x5b,0xb9,0x60,0x8f,0xa3,0xa9,0x99,0x17,0x92,0xb8,0x65,0x25,0xc4,0xef,0xea,0xa6,0xc0,0x57,0xa9,0x4c,0x78,0xe3,0xd6,0xf2,0x19 +.byte 0x9c,0x86,0x9e,0x45,0x3e,0xfd,0x21,0x4c,0x2a,0x56,0x7c,0x23,0xf2,0x22,0xa1,0x81,0xdb,0xe6,0xfa,0x85,0x19,0x3b,0x1d,0x61,0xb3,0x21,0xb5,0x64,0x1d,0x07,0x66,0xd2,0xe5,0x9c,0xb0,0x76,0x9d,0xc9,0x02,0x6a,0x8d,0xd5,0x84,0xd5,0xa7,0x7c,0x70,0x64,0x46,0xd6,0xff,0xc7,0x9f,0x2f,0xed,0xc1,0x5a,0xcb,0x56,0x12,0x31,0x9d,0xff,0x66 +.byte 0x9a,0xf8,0x50,0xc6,0x54,0xfd,0x8d,0x49,0x32,0x8c,0xdd,0x8c,0xbe,0x30,0x79,0xaf,0x1a,0xd5,0x28,0x1d,0x03,0x87,0x12,0x60,0x7a,0xcc,0xe6,0xe8,0x4e,0x21,0x5d,0xa3,0x06,0xfb,0xdf,0xf6,0x31,0xd6,0x10,0x3e,0xec,0x23,0x69,0xc7,0x7b,0xf6,0x78,0xa6,0xd1,0x8a,0x48,0xd9,0xdc,0x35,0x1f,0xd4,0xd5,0xf2,0xe1,0xa2,0x13,0x8a,0xec,0x12 +.byte 0xa7,0xf1,0x5d,0xb2,0xc3,0x6b,0x72,0xd4,0xea,0x4f,0x21,0xff,0x68,0x51,0x51,0xd9,0xd7,0x2f,0x28,0xd7,0xdf,0xbc,0x35,0x4f,0x49,0x7e,0xe7,0x21,0x82,0xd7,0x0c,0x7c,0xf4,0x86,0x86,0x62,0xcd,0xf5,0x23,0x77,0xc1,0x14,0x8a,0xc4,0x2a,0x82,0x74,0x0e,0x90,0x93,0xd5,0x5a,0xc0,0x57,0x93,0x1a,0xe1,0x1c,0x13,0x17,0x72,0xc3,0xa6,0x54 +.byte 0xc4,0xe2,0xfc,0xd3,0xa0,0xce,0x08,0x87,0x9e,0x2a,0xaf,0xa7,0xbb,0x2d,0xaf,0xc0,0x38,0x97,0xc8,0x6d,0xb8,0x7b,0x75,0xc5,0xf2,0x79,0x62,0xdc,0x7c,0xa9,0xfd,0x19,0xa2,0xb1,0xee,0xdf,0x90,0x18,0x5a,0xdb,0x3c,0xba,0x0d,0x84,0xd6,0xaf,0x15,0xee,0xb6,0xa5,0x78,0x38,0x87,0xdf,0x42,0xd6,0xd1,0xa2,0xe9,0xe0,0xa6,0xf2,0x4e,0xa4 +.byte 0xed,0xa5,0xf6,0x66,0x7f,0x99,0xbc,0xfb,0x4b,0x37,0xca,0x5a,0xb3,0x29,0x8e,0x80,0x30,0x8b,0x74,0x7b,0xac,0x61,0xfb,0xca,0x62,0xfe,0x24,0xc4,0x6e,0xac,0x66,0x97,0xaa,0x9a,0x99,0xe6,0xa8,0xa4,0xd8,0x62,0x58,0x7c,0xd1,0xeb,0xee,0xc8,0x08,0xa0,0x54,0xde,0xb1,0xef,0x57,0x2c,0xb6,0x2c,0x78,0x22,0x10,0xbb,0xfe,0x4b,0x77,0xa5 +.byte 0x5a,0xed,0xbb,0xf8,0x97,0x96,0x20,0xa9,0x8c,0x78,0xb5,0xb9,0x55,0xc9,0xaf,0xb9,0xa1,0x1f,0x13,0x52,0xf9,0xbb,0xaa,0x98,0x01,0x57,0xa6,0x88,0xaa,0x5c,0xf0,0x62,0x5b,0x3e,0xe1,0x5f,0xf4,0x98,0x95,0x8b,0x8f,0x48,0xd6,0xd5,0x8b,0xc2,0x1d,0x45,0x7d,0xe2,0x03,0x66,0x84,0xfc,0xbd,0x8e,0x95,0x9f,0x58,0x99,0x7b,0x4c,0xb6,0xe5 +.byte 0xe2,0xf9,0x2e,0x92,0x58,0xca,0xa9,0x24,0x9c,0x7c,0x46,0xdf,0xea,0xb4,0x6e,0x0e,0xa5,0x9c,0x14,0xbf,0x25,0x5b,0x39,0x4a,0xaf,0x31,0xaa,0xd1,0x2c,0xe6,0x06,0x3d,0xc4,0x60,0xc7,0xcd,0x49,0x8d,0xe1,0x50,0x55,0xe4,0x72,0x68,0xed,0x43,0xb8,0x85,0xa3,0xc3,0xf1,0xf5,0xd1,0xcf,0xcb,0x57,0xac,0x04,0x16,0x22,0xe4,0xfc,0x4a,0x13 +.byte 0x60,0x3f,0x09,0xa4,0xf2,0x9b,0x34,0xeb,0x0c,0x10,0x57,0xc3,0x3f,0x15,0xb5,0x1b,0x6a,0xb3,0x7d,0x37,0x02,0x4c,0x0f,0x6f,0x8b,0x4d,0x5d,0x57,0x7d,0xbf,0x00,0x8a,0x74,0xb4,0x4c,0x5f,0x90,0x27,0x76,0x09,0x8c,0x18,0x3f,0x26,0x3a,0x09,0x06,0xdd,0x8b,0xff,0x0e,0xa4,0xae,0xef,0x0c,0x81,0xf2,0xf3,0x1f,0xe0,0x33,0x33,0x37,0xc6 +.byte 0xc3,0xfb,0x14,0xdd,0xa1,0x16,0x84,0x80,0xcb,0x37,0xe7,0x97,0x6d,0x21,0xa7,0x71,0x19,0x2b,0x2d,0x30,0xf5,0x89,0x2d,0x23,0x98,0xfc,0x60,0x64,0x4a,0x26,0x65,0x4a,0xef,0x12,0x59,0xa3,0x8c,0xd9,0xbd,0xdc,0xb7,0x67,0xc9,0x8d,0x51,0x72,0x56,0x6a,0xe5,0x59,0xa2,0x53,0x4f,0xb6,0x53,0xff,0xb0,0xd4,0x06,0x7f,0x79,0x23,0xf9,0xcb +.byte 0xbf,0x9a,0x93,0xde,0x88,0x33,0x58,0x70,0xa7,0xcc,0x07,0xb1,0x44,0xb9,0x99,0x1f,0x0d,0xb9,0xc9,0x18,0xdc,0x3e,0x50,0x22,0xfb,0x4e,0x86,0x0d,0xc0,0xe7,0x7f,0xc6,0xa1,0x52,0x0d,0x8d,0x37,0xe6,0xaf,0xe3,0x13,0xbe,0xa6,0xf9,0x59,0x39,0x0f,0x17,0x66,0xce,0xb1,0x7d,0x7f,0x19,0x1a,0xf8,0x30,0x3a,0xa5,0x72,0x33,0xa4,0x03,0xb6 +.byte 0xb6,0x9b,0xde,0x7a,0x7a,0x62,0x3d,0x85,0x98,0x8e,0x5d,0x8a,0xca,0x03,0xc8,0x2c,0xae,0xf0,0xf7,0x43,0x3f,0x53,0xb2,0xbb,0x1d,0xd0,0xd4,0xa7,0xa9,0x48,0xfa,0x46,0x5e,0x44,0x35,0x50,0x55,0xdc,0xd5,0x30,0xf9,0x94,0xe6,0x5f,0x4a,0x72,0xc2,0x77,0x59,0x68,0x93,0x49,0xb8,0xba,0xb4,0x67,0xd8,0x27,0xda,0x6a,0x97,0x8b,0x37,0x7e +.byte 0xe9,0x59,0x89,0xc7,0x5e,0xd9,0x32,0xe2,0xaa,0xd1,0xe9,0x2b,0x23,0xca,0x9d,0x89,0x7a,0xf5,0xe4,0xfb,0x29,0xcc,0x88,0xfb,0x82,0x0f,0xbf,0x47,0x54,0xca,0x2b,0x4b,0xd8,0x47,0x7f,0x65,0x38,0x5a,0xb3,0xe8,0x0b,0xd7,0xe1,0x8b,0x89,0x57,0x32,0xdb,0xa3,0x85,0xba,0xf9,0xbc,0x52,0x92,0x20,0x10,0x66,0x54,0x81,0xe1,0x49,0x3f,0xe1 +.byte 0x8c,0x2e,0x0b,0x3b,0xe7,0x49,0xb4,0x60,0x5a,0x20,0x33,0xc4,0x4e,0x81,0xef,0x96,0xda,0x73,0x90,0x2b,0xb4,0x86,0xa1,0x5c,0xcd,0xa0,0xc7,0xf3,0x06,0x0d,0x2a,0x5a,0x41,0x96,0xf5,0x40,0x1b,0x0a,0x3a,0xb7,0x38,0xe1,0xbb,0xe3,0x42,0xf9,0x52,0xe5,0x98,0xe2,0x17,0xd4,0xb0,0x09,0x73,0x75,0xc1,0x00,0x18,0x0f,0xa7,0x0b,0x58,0xc1 +.byte 0x78,0x5c,0x0c,0x05,0xd8,0xfb,0xc5,0xfd,0x5c,0x66,0xbe,0x54,0x68,0xd1,0x16,0x54,0xfb,0xc5,0x97,0xd7,0x03,0x82,0x47,0xbb,0x47,0xea,0x9e,0x8b,0x90,0x07,0xb2,0xd2,0x06,0x14,0x79,0xeb,0xb6,0xe1,0x10,0x55,0xa9,0x13,0xea,0x65,0x7a,0xd0,0xe5,0x66,0x5d,0xe7,0x7b,0x10,0x5f,0x7c,0x25,0x7d,0x4e,0x77,0xb3,0x19,0x02,0xb1,0x45,0x1c +.byte 0x1a,0x51,0x24,0x72,0xd4,0xaa,0x03,0x0c,0x37,0x2a,0x78,0x81,0x05,0xca,0x73,0xb9,0xb5,0xd8,0xf5,0x25,0x2b,0x30,0x59,0x00,0x66,0xbd,0x6c,0x38,0xa2,0xc3,0xfb,0x43,0x85,0x6d,0xab,0xca,0xd8,0x73,0xa8,0x76,0xda,0x6e,0x00,0x19,0xd0,0xb9,0x1e,0x9b,0x33,0xe4,0x57,0x68,0xf4,0xb8,0x35,0x44,0xe6,0x74,0xd2,0x33,0x64,0xa1,0x41,0xa6 +.byte 0x5a,0xf6,0x8e,0x29,0xb5,0xa6,0x21,0x8e,0xc4,0x0c,0x0c,0x16,0x81,0x08,0xef,0x0a,0x41,0x08,0x34,0xc7,0xe1,0xd8,0xa8,0x68,0xb1,0xf3,0x9a,0x7a,0xaa,0x90,0xc0,0x77,0x32,0x70,0x50,0x5c,0x92,0xfc,0x38,0x31,0xaf,0x3e,0xd8,0xd8,0x4b,0x90,0x99,0xc4,0x17,0xde,0xa6,0xb5,0x29,0xc0,0x82,0x45,0x20,0x08,0x0c,0x4f,0x76,0x36,0x56,0x7e +.byte 0x07,0x17,0x42,0x78,0xa1,0x2d,0x62,0x48,0x81,0x57,0xc4,0xcf,0xf4,0x89,0x34,0x78,0x10,0xe6,0x98,0x78,0xb0,0x69,0x15,0x06,0xdb,0x2b,0xbb,0x8b,0xa5,0x72,0x50,0x24,0xae,0x6b,0x33,0x49,0x7b,0x9d,0x69,0x74,0xc8,0x7c,0xca,0x7a,0x31,0x39,0x0d,0x72,0x78,0xc1,0x6b,0x97,0x50,0x97,0xea,0x90,0xab,0xe7,0xdf,0x29,0x2e,0xf7,0x6e,0x49 +.byte 0x95,0xab,0xbd,0xea,0x1f,0xd4,0x93,0x4d,0x30,0x6b,0x6d,0xb0,0x86,0x38,0x2c,0xc8,0x77,0x2c,0xb5,0xb5,0x5c,0xd9,0xbb,0xe9,0x7d,0xb2,0xb7,0x6b,0xd1,0x1c,0xd3,0xd0,0x66,0x51,0x63,0x8c,0xf3,0x13,0xad,0xcf,0xeb,0x82,0x12,0x1a,0x6d,0xf5,0x75,0x66,0xa2,0x55,0x30,0x64,0x1d,0x68,0x46,0x50,0x5a,0x93,0xf1,0xc2,0x13,0x68,0x95,0x55 +.byte 0x51,0xe0,0x56,0x3a,0x96,0x86,0x8e,0xfb,0x5f,0x3b,0x1f,0x49,0x9c,0x3d,0xe5,0xf2,0x8c,0x3f,0xd6,0x6d,0x17,0xc7,0x18,0x59,0x1a,0x8a,0x72,0xa8,0xb3,0x39,0xda,0xc4,0xfa,0xc5,0xca,0xdf,0x48,0x48,0xd1,0xd2,0xba,0x14,0x5d,0x28,0x3b,0x4c,0xb3,0xcb,0x8d,0x1b,0x91,0x46,0x6b,0x2d,0x21,0x21,0x99,0x98,0x6d,0xcc,0x6b,0x8e,0x91,0x1d +.byte 0x42,0xc2,0x72,0x1a,0xc6,0xd2,0xaf,0xed,0x10,0xff,0x1e,0xa5,0xae,0x16,0xc0,0x05,0xdf,0x37,0xe2,0x1e,0x2e,0x15,0x21,0x0c,0x33,0x6f,0xfd,0xed,0x3f,0x7e,0xd7,0x69,0xfb,0x76,0x79,0x65,0xe9,0xd9,0x8d,0xf6,0xc0,0x6c,0xf7,0x15,0x7f,0x04,0xd7,0x71,0xcc,0xaa,0x85,0x73,0x23,0xf1,0xc8,0x62,0xd0,0x8e,0x01,0x35,0xff,0x4f,0x4f,0x13 +.byte 0xe6,0x28,0xf1,0xc1,0x7a,0x04,0xc0,0x7b,0x75,0xac,0x1c,0x55,0xb4,0x7c,0x00,0xb9,0xe0,0x14,0x67,0xb6,0xc5,0x69,0x62,0x0b,0xe6,0xb5,0x46,0x86,0x6f,0x09,0xdf,0x84,0x2c,0xa8,0x30,0x89,0x5b,0x24,0x47,0xfa,0x43,0x24,0xd5,0x07,0xf7,0xba,0xab,0x1b,0xfd,0x60,0xad,0x89,0x5f,0x60,0x87,0x78,0x48,0xbb,0xc0,0x63,0xf4,0x27,0x86,0x33 +.byte 0xf4,0x49,0x64,0x4c,0x5c,0x94,0x9a,0xb8,0x0f,0x45,0xe2,0x92,0x7d,0x9a,0x86,0xdb,0xb7,0x05,0xe8,0xd7,0x64,0x44,0xfa,0x74,0x60,0x72,0x89,0x13,0x8f,0x2e,0x96,0x33,0xa9,0x12,0x4a,0x62,0x6b,0xc3,0xcb,0x55,0xd3,0xef,0x17,0x11,0x82,0x4a,0x51,0x77,0xbf,0x63,0xa0,0x21,0xfc,0xbc,0x0c,0x6f,0x9a,0xfd,0xde,0xbe,0x9f,0x2e,0x50,0xd5 +.byte 0x32,0xa4,0xf0,0x1b,0xed,0xfa,0xbf,0xcd,0xc9,0xd8,0xf8,0x06,0xf2,0x17,0x8a,0x92,0x18,0xb8,0xc3,0xe5,0xbf,0xc2,0xf4,0x77,0xb9,0x71,0xfb,0x60,0x6e,0xe7,0xad,0xe4,0x7d,0xd4,0x59,0xa9,0xbd,0x21,0xd5,0x03,0x69,0xb5,0xf1,0xce,0xb5,0x88,0xd9,0x1d,0xc7,0xb3,0x14,0xa6,0xb1,0x30,0x8d,0xaa,0xcd,0xe5,0x50,0xc5,0x0d,0x4b,0x6d,0xde +.byte 0x17,0x4d,0xd2,0x93,0xf3,0xc2,0x8d,0x59,0xf1,0xd0,0x2f,0xb5,0x62,0x18,0x81,0x07,0xb3,0xfb,0x08,0xb3,0xa8,0x15,0xe0,0x9a,0x4c,0xa5,0x24,0xcd,0x47,0x69,0xf9,0xf7,0xda,0xa9,0xff,0xe1,0xe2,0x43,0xe3,0x69,0xf1,0x26,0xac,0xc6,0x42,0xf2,0x32,0x42,0xfb,0x7c,0xa2,0x94,0xc6,0xaa,0xd9,0x05,0x29,0xc6,0x3d,0x45,0x44,0x1d,0x52,0x7e +.byte 0x48,0x47,0x93,0x34,0x08,0xa0,0x93,0xc2,0x5e,0x9b,0x22,0xc1,0x2a,0xaa,0xfe,0xa2,0x26,0x00,0xa8,0xbb,0xd0,0x58,0xfd,0x5a,0x09,0x4f,0xa1,0x0c,0xff,0x66,0xcc,0x88,0x3a,0x69,0x9a,0x12,0xb6,0x05,0x6e,0xdf,0x54,0x5d,0xe7,0x03,0x8e,0x95,0x86,0x68,0x83,0x83,0x6f,0x04,0x0b,0x9c,0x05,0x05,0x77,0x14,0x83,0x47,0x98,0x5f,0x22,0xaf +.byte 0xa8,0xfd,0xf3,0xe7,0x73,0xec,0xef,0xd7,0x57,0xd9,0xef,0xe7,0x1b,0x18,0x24,0x09,0xd9,0x14,0xf9,0x60,0xba,0x05,0x0f,0x8f,0x33,0x48,0xb1,0x06,0x41,0x2e,0x95,0x3d,0xf5,0xcf,0x14,0x50,0x5d,0xb6,0x93,0xeb,0xd5,0xf8,0x9f,0x7c,0x8f,0x23,0x35,0x39,0x30,0xc8,0xf6,0x74,0x07,0xc4,0x4c,0xcf,0xe1,0xdb,0x3e,0x9f,0x0a,0xfd,0x48,0x9e +.byte 0x56,0xe4,0xa7,0xa3,0x07,0x06,0x18,0xbb,0x50,0x75,0x33,0x48,0xb9,0xa1,0x4e,0x63,0x65,0xd3,0xf4,0x40,0xc3,0x2d,0x52,0x9a,0xad,0x56,0x7f,0xff,0xb0,0x46,0x24,0xa1,0x78,0x5f,0xb6,0xa8,0x72,0x28,0xb3,0x6c,0x61,0x6e,0xa0,0xfc,0xcb,0xe8,0xfe,0x07,0x28,0x97,0x1c,0xda,0x76,0xc7,0x98,0x2f,0x00,0x1d,0xf2,0x17,0xbe,0x48,0x3f,0xd3 +.byte 0xc7,0xbe,0x89,0x89,0xe1,0x96,0x75,0x1e,0xee,0xf9,0x78,0x67,0xbf,0x12,0x1e,0xe2,0x14,0xbf,0xd4,0xfd,0x49,0xaa,0xbf,0xc6,0xb8,0x4f,0x84,0xcd,0x5d,0x3c,0x45,0xb3,0xb0,0x14,0x6f,0x2d,0x6f,0x35,0xfa,0x60,0x7f,0x64,0x40,0xc8,0xde,0xa8,0x2b,0x56,0x75,0x74,0xc9,0xe1,0x2c,0xe2,0x2f,0xc2,0x3e,0xba,0xa3,0x20,0xd8,0xa3,0xbc,0x69 +.byte 0x9d,0x1c,0xcf,0x5e,0xe3,0xc0,0x66,0x72,0xce,0x22,0x96,0xad,0x47,0xc9,0x5b,0xac,0x45,0xdc,0x4f,0x8e,0xf6,0xa6,0x2e,0x4a,0x1e,0x01,0xe4,0xb7,0x83,0x68,0x92,0x2b,0x98,0xdf,0x22,0x0f,0xd9,0x4f,0x6f,0x72,0x37,0x56,0xfa,0x1b,0xbb,0x5a,0x4d,0xd8,0x5b,0xc6,0x65,0xf8,0xd4,0x4e,0xa5,0xc0,0x0f,0x2d,0xc2,0x38,0xa4,0x6c,0x33,0x2f +.byte 0x7a,0x52,0x14,0xbb,0xfb,0xb3,0xf2,0xa9,0xbf,0xa0,0xad,0xcb,0x8c,0x81,0x47,0x26,0xe9,0xfb,0xc1,0x8e,0xc6,0xe5,0x39,0x48,0xa5,0xb3,0xbc,0xb2,0xe4,0xac,0xf9,0x49,0xbb,0x34,0x2b,0xc4,0x4d,0x06,0xe4,0xd6,0x0b,0xdd,0x55,0x36,0xe6,0xaf,0x64,0xea,0x84,0xf2,0xa5,0x68,0xe3,0x4e,0x4c,0x77,0x46,0x6c,0x17,0x6e,0x08,0x99,0x96,0x1b +.byte 0xb5,0x44,0x3b,0x94,0x2d,0x0f,0xcd,0x90,0x17,0x8f,0x80,0xcb,0xc2,0x30,0xbe,0xe1,0x36,0xdc,0x1e,0x48,0xe3,0x2c,0xe5,0xc9,0xbc,0xbd,0xff,0x3f,0x95,0x59,0x35,0x58,0x2f,0x9c,0xa6,0x1c,0x45,0xa7,0x61,0xde,0xf2,0x9c,0xa3,0x04,0x0f,0xa0,0x93,0xaf,0x69,0x2b,0x0d,0x1c,0xfc,0xff,0x97,0x1c,0x69,0x7e,0x30,0x06,0x88,0x01,0xa4,0xf1 +.byte 0x32,0x36,0xed,0x56,0x89,0xff,0xa9,0x63,0x3a,0x17,0x91,0xc5,0xba,0x6e,0x38,0x84,0xb1,0xaf,0x28,0xac,0x8a,0xb2,0x60,0xbe,0x1b,0x0a,0xd8,0x05,0x22,0x25,0x56,0xbe,0x75,0x47,0x59,0xcf,0x8c,0x2e,0xb3,0xc3,0x5f,0x06,0x81,0x65,0x39,0x78,0xed,0xe3,0xc9,0x5a,0x99,0x01,0xae,0xfb,0xf6,0xed,0x55,0xf5,0xbd,0x2f,0x93,0xf1,0x62,0x6a +.byte 0x54,0x4f,0xe1,0x9f,0x0a,0x23,0x83,0xbc,0xc2,0xba,0xb4,0x6f,0xd9,0x88,0xc5,0x06,0x7a,0x83,0xd5,0xdb,0xeb,0x49,0x48,0xd6,0xc9,0x45,0xa2,0xd0,0xc4,0x06,0xd9,0x01,0xec,0x2d,0x6d,0xc1,0x95,0x69,0x22,0xd0,0xae,0x88,0x75,0x8b,0xd2,0x02,0x98,0x83,0xd9,0x10,0x27,0x8d,0x68,0x97,0x5e,0x6b,0xdd,0x51,0xbb,0x92,0x38,0xa8,0x12,0xde +.byte 0x0f,0xa4,0x1e,0x2e,0xec,0xd5,0x73,0x55,0x5f,0x46,0x6a,0x0f,0xc9,0x50,0x0d,0xb3,0x55,0x20,0xe0,0x01,0xef,0x92,0x29,0x04,0x38,0x60,0xbd,0xc7,0x0b,0x1e,0x94,0x10,0x37,0xb7,0x02,0x94,0xbc,0xde,0xdb,0xb3,0xe3,0x1e,0xd5,0xe2,0xa8,0xed,0x46,0xe8,0xd4,0x8a,0x6c,0x93,0x4e,0xb7,0x73,0xa6,0x20,0x86,0xd2,0x82,0x2f,0x78,0x80,0x34 +.byte 0x44,0x79,0x84,0x2e,0x54,0xd0,0x30,0xa8,0x06,0x0c,0xcf,0x78,0xb4,0xd7,0xe2,0xc9,0x6e,0xfb,0x37,0x47,0x8f,0xe5,0x9f,0xf8,0xca,0x58,0x9c,0xb6,0x8b,0xbe,0xf4,0x3a,0xfe,0x75,0xec,0x1b,0x22,0xfd,0x93,0x92,0x07,0x09,0xcd,0xe6,0x2f,0xe6,0x51,0x0f,0x19,0x43,0x9c,0x6a,0x32,0x38,0x7d,0xf0,0x0c,0x78,0x81,0xb7,0x5c,0xbe,0x3c,0xf4 +.byte 0xc0,0x12,0x57,0x51,0x8a,0x69,0x84,0x0d,0x1e,0x0a,0xed,0x75,0xde,0x9e,0x31,0x8a,0x9b,0x18,0x82,0x01,0x5a,0xee,0x0e,0x33,0x3c,0x8c,0x95,0xb1,0x0b,0x05,0x3b,0xb2,0x85,0xab,0xaf,0x47,0xa2,0x03,0xb6,0xbb,0xda,0xf5,0xc8,0xbe,0x0e,0x4d,0xf8,0x84,0xe4,0xfb,0xd4,0x54,0x44,0x72,0xe5,0x30,0x57,0xa3,0xb6,0x47,0x8f,0xd3,0x32,0xc2 +.byte 0x83,0x07,0x4f,0x17,0x20,0x88,0xa1,0x0b,0xb3,0xef,0x4b,0x27,0x60,0xe0,0x9d,0xec,0xc2,0xdf,0xaf,0x2e,0x74,0xae,0xa4,0x2b,0x59,0x94,0x75,0xbe,0x54,0xf5,0x18,0x62,0xd9,0xe2,0x35,0xee,0x37,0x2e,0xdf,0x48,0xf8,0x80,0x32,0xcb,0xf1,0x83,0x78,0x03,0x68,0x06,0xd7,0x82,0xc6,0x76,0x2a,0x10,0x2a,0xdb,0x73,0xe6,0x65,0x24,0x9f,0x73 +.byte 0x1f,0x55,0x55,0xb6,0x10,0x65,0x80,0x70,0x5a,0x8e,0x8a,0xc8,0x4c,0xca,0x74,0x47,0x63,0x3f,0xee,0x49,0xc3,0x86,0x0f,0x66,0x56,0x08,0xee,0x9f,0xf5,0x5a,0x89,0x4c,0xb4,0x97,0x6e,0x75,0x61,0xc0,0xa7,0x92,0xa8,0x38,0x99,0x08,0x01,0x12,0x82,0x77,0x80,0x20,0x9d,0x62,0x46,0x92,0xdd,0x39,0x4d,0xcf,0xc0,0x8a,0x3e,0x30,0x9a,0xfa +.byte 0x28,0xe8,0xd8,0xf8,0x07,0x0d,0xab,0x4c,0xd4,0x02,0x4c,0xd7,0xc3,0x16,0x89,0x24,0x84,0x52,0x7c,0xa4,0x1b,0x54,0x7f,0xc4,0x74,0x4f,0x88,0x0a,0x14,0x03,0xd9,0x1a,0x48,0xff,0x2c,0xfb,0xbf,0x33,0xf1,0xf8,0x0e,0xdd,0xc4,0x98,0xf2,0xbd,0x32,0x99,0x03,0x8e,0x56,0xc1,0x84,0x5d,0xa6,0xd7,0x21,0xf2,0x43,0xfb,0x3b,0xf5,0x6a,0x75 +.byte 0x20,0xfb,0x08,0x7b,0x66,0x15,0x47,0x31,0xb6,0xb6,0x7a,0xc9,0xe6,0xf5,0xd6,0x0a,0x14,0xb3,0x68,0x0a,0x32,0x13,0xb5,0xe6,0x56,0xbd,0xa5,0x24,0xe2,0xa3,0x7b,0x3d,0x01,0x23,0xed,0x08,0x09,0xb5,0xdb,0x7c,0xa9,0x4b,0x23,0xdb,0xa2,0x25,0x0c,0xc6,0xa4,0x0d,0xbb,0x1a,0x5d,0x1b,0x42,0x0b,0x86,0x72,0xc3,0xca,0x5b,0x14,0x04,0xa3 +.byte 0xd7,0x01,0xe7,0x17,0x78,0xd0,0x54,0xde,0xd4,0x76,0x3d,0xe1,0x7d,0x26,0x3e,0xb4,0x71,0x42,0x84,0x36,0x58,0x78,0x22,0x32,0x26,0x0e,0xc8,0x99,0x05,0xe3,0x4a,0xa6,0x5a,0x1a,0x06,0x0a,0x88,0x47,0x51,0x5c,0xa8,0x72,0x70,0x0c,0x62,0x5f,0xf3,0x1e,0x02,0x50,0x20,0xc6,0x5c,0x50,0x30,0x1f,0x4e,0x5a,0x3a,0x02,0xc9,0xca,0x3f,0xa4 +.byte 0xf1,0x66,0x05,0xf3,0x19,0xe5,0xaa,0xdb,0x75,0x51,0xc1,0xb8,0x94,0xfa,0x2d,0xb6,0x8b,0x42,0xdc,0x9a,0xa3,0x13,0xeb,0x95,0x8d,0xf0,0x65,0x87,0xc9,0xa1,0x43,0xb4,0xfe,0x76,0xf4,0xc8,0xbb,0x19,0x96,0x84,0x9d,0x2f,0x92,0xe8,0x22,0x9a,0xf0,0xd5,0xf4,0xc4,0x8d,0x19,0x59,0x21,0xbf,0x15,0xfd,0xa6,0xc4,0xde,0x77,0x58,0xae,0x93 +.byte 0xb3,0xff,0x44,0x49,0x6e,0x37,0x94,0x04,0xd2,0x96,0xe9,0x80,0xd8,0xe3,0x93,0xd8,0xb4,0x7f,0x5f,0xcf,0xe5,0x9d,0x51,0x92,0xac,0x5d,0x9f,0x23,0x3a,0x3e,0xdf,0x96,0x68,0x9a,0x46,0x9b,0x1a,0x06,0x44,0x54,0xc4,0x2e,0x19,0x0f,0x50,0xee,0x73,0xda,0x39,0x7e,0xec,0xcb,0x1d,0x39,0xf7,0x9f,0xbc,0xe0,0x6d,0x49,0x56,0xf8,0xa7,0x24 +.byte 0x70,0xab,0xe1,0xc3,0x82,0x99,0x0a,0x4d,0x64,0x41,0x37,0xab,0x92,0x76,0xeb,0x6a,0x2a,0xa5,0xab,0x75,0xd7,0xe3,0x6a,0x72,0x4a,0x2b,0x57,0x02,0xc7,0xbe,0xd5,0x35,0xce,0xdf,0xee,0xf1,0xc6,0xe6,0x69,0xb7,0x76,0x99,0x22,0xb0,0xb9,0xe1,0x18,0x91,0x9a,0x35,0xd9,0x3a,0x19,0xc7,0x77,0xf2,0x2d,0xae,0x04,0x2e,0xb7,0x35,0x97,0xa5 +.byte 0xc6,0x97,0x4e,0x5d,0xbe,0xa9,0x35,0x2b,0x53,0x1a,0x6b,0x4e,0xa8,0xa6,0x22,0x48,0x2c,0x81,0x25,0xac,0x30,0x89,0x7b,0xb3,0x38,0x34,0x42,0x0b,0xa5,0x5f,0x02,0xe8,0xee,0x12,0x9b,0xce,0xe7,0x10,0xf9,0x65,0xb6,0xc5,0x74,0x06,0xef,0xc8,0x95,0xb3,0x40,0x30,0xec,0x1f,0x8e,0xeb,0x93,0x31,0x91,0x5a,0x2f,0xc2,0x90,0x85,0xaa,0x4c +.byte 0x51,0xc4,0xd0,0x3e,0xc8,0xc9,0x61,0x46,0x96,0xd4,0x60,0x56,0x7d,0x91,0xc4,0x24,0x76,0xfb,0x09,0x08,0x48,0x2f,0x4a,0x73,0x90,0x8e,0x9d,0xb2,0x38,0xa8,0x95,0x3e,0x6d,0x10,0x57,0x91,0x8d,0x55,0x62,0x1f,0x21,0xc7,0x01,0x15,0xb0,0x71,0x0b,0x26,0xbc,0x10,0x33,0x3e,0x79,0x37,0x64,0x85,0x98,0x42,0x21,0xcc,0xff,0x51,0x9a,0xc2 +.byte 0xe0,0x51,0xc3,0xff,0xf2,0x14,0x3d,0xe8,0x89,0x12,0xe7,0xcd,0x58,0x2f,0x87,0xfb,0x4a,0x50,0x6c,0x4d,0xdf,0x6f,0x64,0x9c,0x64,0x93,0x49,0x89,0xb6,0x0d,0x10,0x3f,0x13,0x9d,0x9a,0x35,0xf1,0xc0,0xe7,0xf0,0x9b,0xe8,0x39,0xd3,0x32,0xb2,0x23,0x67,0x77,0xdb,0xbc,0x0d,0x19,0x77,0x7a,0xbe,0x54,0x56,0x64,0xec,0xb6,0x2e,0x03,0xc5 +.byte 0x35,0xda,0xf1,0xc7,0x7d,0x0c,0x5a,0x32,0xec,0x86,0xdf,0xdb,0x94,0x73,0x4e,0xe3,0x45,0xf6,0xb2,0x63,0xc4,0xb7,0x80,0x59,0x4b,0x82,0x0b,0x61,0xa0,0xd5,0x43,0x18,0x78,0x35,0x93,0xde,0x46,0xa3,0xa2,0xd5,0xa2,0x71,0xec,0x3e,0xee,0x7a,0x89,0x7f,0xe9,0x70,0xff,0xad,0xae,0xa3,0x64,0xde,0x61,0xea,0x71,0xc2,0x37,0x98,0x8a,0x33 +.byte 0xd1,0x5f,0x03,0x08,0x23,0x24,0xc7,0x6c,0x62,0x24,0x6d,0x3f,0x44,0x8e,0x7c,0x9f,0x64,0x87,0xa5,0x79,0x0b,0x16,0x7e,0x4e,0xc0,0x0e,0xb8,0x77,0x56,0x9c,0xa5,0x7d,0x2d,0x5d,0x7d,0x81,0x13,0x2c,0x08,0xd5,0x83,0x84,0x38,0xfe,0x50,0x6f,0xa7,0x30,0x1f,0x06,0xee,0xab,0x13,0xc2,0x19,0xe6,0xcf,0x7b,0x85,0xfc,0x31,0x5b,0xdf,0xb8 +.byte 0x0e,0xe8,0x72,0xba,0x97,0x03,0x25,0xbc,0xad,0x74,0x7c,0xe1,0x59,0xf7,0x08,0xc1,0xe3,0x2d,0xb1,0x05,0xe7,0x1f,0xb9,0x0f,0x09,0xcd,0xe6,0x4f,0x5a,0xf6,0xcc,0xea,0xc7,0x92,0x35,0xf5,0xbc,0x3f,0xef,0xc9,0x2b,0xb4,0xd7,0x66,0x50,0xaa,0x80,0xb9,0xaf,0x5d,0x02,0x9c,0x77,0xdf,0xc0,0xc7,0xe2,0xbf,0x7d,0xff,0x69,0x63,0x3e,0x7c +.byte 0x91,0x94,0xae,0xa4,0x0a,0x25,0xa3,0x1f,0xf3,0xc6,0x88,0xda,0x82,0xac,0xbc,0x1f,0x8d,0x53,0xd6,0xfd,0x2b,0x5c,0x33,0x6d,0x03,0x68,0x92,0x38,0x07,0xeb,0x85,0x7f,0x55,0x89,0x17,0x58,0x7f,0xc7,0xb4,0x7a,0xff,0x15,0xe5,0xe0,0xea,0xce,0xac,0x3f,0x0f,0x09,0x25,0xfa,0x80,0xe3,0x07,0x89,0x4e,0xbf,0x7e,0xc2,0x42,0xf1,0x18,0x78 +.byte 0x05,0xe3,0x6a,0x2e,0xf7,0x2e,0xe5,0xbf,0x63,0x9e,0x48,0x69,0xe6,0x3c,0x4b,0x12,0x73,0x58,0xde,0x0c,0x73,0x27,0x9a,0x95,0xfa,0x51,0x8c,0xbb,0x74,0x31,0x53,0x4e,0x9a,0x13,0xda,0x49,0xf0,0x8b,0xb4,0xcd,0xc1,0xe9,0xaf,0xd6,0x59,0x59,0xa8,0x24,0x94,0xd9,0x4b,0xf8,0x20,0x79,0xa0,0x79,0x01,0x08,0x84,0x9b,0x04,0xe7,0xda,0x06 +.byte 0x22,0x3e,0x85,0x23,0x0c,0xa9,0xe5,0xcd,0xd3,0xc4,0x27,0x8c,0x4e,0x75,0xe4,0x60,0xb5,0xe9,0xc5,0xb7,0xb1,0x3a,0x84,0x68,0x40,0x3e,0x36,0x1b,0x9a,0x64,0x50,0x45,0x6f,0xc6,0x58,0x70,0x46,0x1a,0xca,0xf6,0x81,0x02,0xa8,0x17,0x4d,0x92,0x0d,0xae,0x88,0x1a,0xbd,0x52,0xc0,0x32,0xb1,0x2d,0x2d,0x12,0x9c,0x29,0xfa,0xa6,0x70,0x5f +.byte 0xe7,0x0b,0xd5,0x5d,0xa5,0x49,0x9e,0x9e,0x5b,0x55,0xbc,0xce,0x5b,0xb4,0xef,0x3f,0xe4,0x7c,0x50,0xef,0x58,0xf5,0xfe,0xcc,0xf6,0xd0,0xf1,0x3a,0x0b,0xf2,0x3e,0x1c,0xce,0x22,0x7e,0x88,0x1c,0x8f,0x9a,0x69,0x76,0xa9,0xf0,0x18,0xa8,0x76,0x7f,0x0c,0xa6,0xfd,0x67,0x43,0xc7,0x43,0x67,0x98,0x6e,0x37,0xd4,0x82,0x29,0x62,0xa6,0xcf +.byte 0x2b,0x7c,0xee,0x14,0x4d,0x2d,0x1a,0xfc,0xc6,0xaf,0x5b,0xea,0x8a,0xa8,0x9a,0x3b,0xab,0x7d,0x76,0x15,0x50,0xe8,0x95,0x31,0xc8,0x5d,0x5d,0x19,0x68,0x07,0xf5,0xb0,0x29,0x5f,0x79,0x4f,0x0d,0x2b,0xba,0x1d,0xd2,0xf2,0x83,0x50,0x89,0x0b,0x96,0x16,0xde,0x7c,0x04,0xea,0x9c,0x75,0x97,0x7e,0xd7,0x2c,0xee,0x82,0x7c,0xbf,0x0b,0x71 +.byte 0x05,0x59,0xd7,0x11,0x70,0x8e,0x41,0x62,0x91,0x38,0x3a,0x69,0x3f,0x3d,0xde,0x8e,0x03,0x0a,0xea,0xfb,0xea,0x36,0xf0,0x5c,0xb6,0xdf,0x9a,0x66,0x9e,0x64,0x43,0xaf,0xb7,0x83,0xd1,0xef,0x7c,0xb6,0x9b,0x40,0xd8,0x0f,0x0e,0x0b,0xa7,0xd0,0x98,0xca,0x8e,0x3b,0xed,0xb7,0xa5,0x19,0xca,0x67,0x30,0x87,0x17,0x0e,0xc4,0xe1,0xaa,0x6e +.byte 0xdb,0x67,0xbd,0xf5,0xed,0x10,0x68,0xb1,0x43,0x73,0xaa,0x99,0x1a,0x83,0x0d,0x1a,0x5a,0x8b,0xc8,0xff,0xe9,0xe0,0x1c,0x15,0xda,0xb0,0x99,0x90,0xce,0x1f,0xfd,0x17,0xd2,0xfa,0x8f,0x3a,0xe8,0x1b,0xd3,0x96,0x2a,0x0d,0xa9,0x4d,0x6d,0x77,0x53,0xe8,0x8f,0xc7,0x6b,0xb4,0x3b,0x6d,0x0c,0x8e,0x35,0x67,0x09,0x6e,0x43,0x36,0x52,0x3e +.byte 0x0e,0xf6,0x4f,0x16,0x40,0x45,0x7f,0xab,0x39,0xf2,0x23,0xfb,0x4e,0xea,0x6e,0xcf,0xa0,0xb6,0xec,0x6d,0x93,0x1b,0x6f,0x9f,0xd6,0xce,0xcd,0x1e,0x90,0x5c,0x7d,0x61,0xc4,0xae,0x02,0xb2,0x7a,0xb2,0x25,0x59,0xac,0x0a,0xcb,0xc6,0x28,0xa2,0x9c,0x7b,0x4b,0x05,0x5a,0x23,0x55,0xc8,0x9a,0x72,0xe6,0x3b,0x91,0xa2,0x9b,0x12,0x1c,0x1f +.byte 0x4b,0x85,0x42,0x9d,0x73,0xf9,0x50,0x3e,0x12,0xc4,0x51,0xb4,0xe1,0x2a,0x08,0xfc,0xf9,0xc8,0x5a,0x53,0x79,0xcc,0xd1,0x24,0x4c,0xc1,0xf6,0xe7,0x10,0x9d,0xe6,0xce,0xcc,0xc7,0x04,0xf8,0x7a,0xd4,0x2f,0x0a,0x97,0x32,0xaf,0x38,0x77,0x97,0x78,0xc8,0xa9,0x9a,0xca,0x65,0xee,0x2b,0x07,0x0e,0xb1,0xaa,0x3c,0xee,0x03,0x85,0xf7,0x09 +.byte 0xd1,0x03,0xe5,0x4f,0x8a,0x6b,0xba,0x83,0xd2,0x6a,0x05,0xe6,0x4e,0x59,0x21,0x26,0xcc,0x8d,0x4a,0x91,0x21,0x6b,0xe5,0x7a,0x83,0xed,0x4e,0x95,0x4b,0x16,0x98,0x3f,0x2d,0x51,0xc5,0x67,0x56,0x58,0xc9,0xc3,0x32,0xff,0x91,0x9d,0x7f,0x6d,0xc7,0x8a,0x40,0x58,0x56,0x35,0xca,0xc1,0xa9,0x07,0xe2,0xc6,0xe1,0x8f,0x7b,0x7c,0x68,0x4e +.byte 0xde,0x19,0xc8,0x9c,0x41,0x65,0x74,0x33,0xb5,0x5b,0xf7,0x47,0x91,0x51,0x41,0x56,0x54,0xaa,0x8e,0xa5,0x1f,0xdb,0x50,0xa4,0x97,0x7a,0xea,0x86,0x2e,0xfd,0xdd,0x64,0x23,0x6e,0x44,0x28,0xfb,0xae,0xe8,0xc2,0x38,0x96,0x56,0x2e,0xd8,0x7e,0x3a,0xc8,0xc6,0x7f,0x20,0x15,0xad,0x9f,0xfa,0x5c,0x55,0xf5,0xe1,0x9a,0x07,0x84,0x5b,0x81 +.byte 0x39,0x4b,0x70,0xc3,0xfd,0x2b,0xc5,0xb7,0x47,0x36,0x74,0x5a,0x85,0xaa,0x45,0x94,0x8e,0xbe,0x7f,0x6c,0x45,0xf5,0x02,0x4e,0x5f,0x16,0x04,0x7e,0xfa,0xb8,0xa9,0x38,0xc4,0xd9,0xca,0x5f,0x7a,0xe3,0x96,0x78,0x82,0xa0,0xac,0xef,0xc4,0x2a,0xb5,0xf4,0x7d,0x28,0x8c,0x25,0xba,0x4e,0xd5,0xd5,0xd1,0x24,0xc6,0x05,0xb2,0x18,0x2d,0x66 +.byte 0xea,0xe3,0x42,0x79,0x33,0x9e,0x70,0x3a,0x1b,0x5a,0x8e,0xcb,0x03,0xa8,0x43,0xf3,0xd5,0x66,0x41,0x10,0xd7,0x09,0xf0,0x28,0xe5,0x25,0xe6,0xac,0x9a,0xe6,0x34,0x36,0xfb,0xc4,0xa6,0x9a,0xd0,0x24,0x4d,0x18,0xf9,0xd1,0x8e,0xca,0x92,0x83,0x0f,0x55,0x54,0x6d,0x72,0x81,0x81,0xdb,0x72,0x1f,0xd6,0x32,0xb9,0x32,0x45,0x84,0x9c,0x66 +.byte 0x68,0x7e,0xab,0xb3,0xca,0xf5,0x4f,0xdd,0xb4,0xee,0xbb,0x05,0x70,0xbe,0x4f,0xd1,0x27,0x01,0xcc,0x7c,0x4f,0x47,0x55,0xce,0x91,0x73,0x6f,0xff,0x8d,0xfc,0x0c,0x4c,0xaa,0xfc,0xce,0x9f,0xf3,0x4a,0x46,0x92,0x89,0x84,0x8f,0x4d,0x94,0x37,0xda,0xe3,0x11,0x0d,0x63,0x60,0xcb,0x40,0x8f,0xe8,0x0f,0xf9,0xa1,0x89,0x64,0x44,0x45,0x74 +.byte 0xc5,0xa2,0x73,0x33,0x08,0xa2,0x59,0xb0,0xeb,0x7b,0x7b,0xa7,0x28,0x4c,0x13,0x6a,0x04,0x15,0x14,0xd0,0x3e,0x5e,0xec,0xe1,0x3f,0xe5,0x93,0x06,0x6b,0x60,0x50,0x1c,0x90,0xc0,0x5c,0xea,0x7e,0x58,0xf1,0xed,0xba,0x43,0x0b,0x84,0xf7,0xa4,0xbd,0x4c,0xed,0x88,0x5b,0xae,0xa2,0x0a,0xf6,0x06,0xfd,0x43,0x63,0xfe,0x8a,0x03,0x21,0x8b +.byte 0x27,0xc6,0xef,0xa3,0xa9,0x3a,0xc1,0x8b,0x65,0x62,0x25,0x85,0xaa,0x2f,0xff,0x22,0x96,0xb7,0x5c,0x82,0xde,0x21,0x4e,0x0d,0x8d,0xd9,0x7f,0x97,0x79,0x95,0x6c,0xe6,0xfd,0xb1,0x7c,0x84,0xc8,0x73,0xbc,0x50,0x2f,0x87,0x03,0x56,0xcf,0xea,0x7f,0xed,0x17,0x7d,0xf7,0x61,0x6b,0x6f,0x5b,0xd3,0xe4,0x83,0xbd,0x8b,0xd3,0x8e,0x51,0x57 +.byte 0x3d,0xcc,0xe4,0x09,0xb9,0x73,0x1f,0xb4,0x47,0x5e,0xf2,0x10,0x3e,0xf4,0x9c,0x86,0x02,0xdf,0x3e,0x75,0x1c,0x9b,0xb5,0x0f,0x31,0xc6,0xbb,0x00,0xb4,0x8a,0x1a,0xe5,0x0d,0x9c,0x3e,0x93,0x61,0x5a,0x61,0x86,0x12,0x64,0xaa,0xfd,0xa2,0x6e,0x8f,0xcc,0xcd,0x60,0xa1,0xad,0x6d,0xdc,0xa2,0x7b,0x5a,0xe0,0xee,0x27,0x5d,0xc5,0xfe,0x1f +.byte 0x7b,0x9f,0x33,0xf1,0xee,0x2a,0x58,0x39,0x56,0x14,0x4f,0x2f,0x11,0x26,0x6b,0x56,0x7c,0x75,0xb7,0xc3,0xa7,0xf6,0x54,0xd8,0xa7,0xbb,0x73,0xb5,0xa5,0x83,0x1e,0x65,0x7e,0xa7,0x85,0x74,0xa4,0x04,0x0e,0x26,0x01,0x88,0xbc,0x8b,0x98,0x0c,0x9b,0x74,0x22,0x44,0x16,0x16,0xed,0x94,0x81,0x81,0x13,0x26,0xc9,0x27,0xa9,0xa7,0xe0,0x45 +.byte 0x69,0x6e,0x33,0xcc,0xa3,0x15,0x10,0x99,0x84,0x06,0x95,0x00,0xbb,0xc6,0x8e,0x4e,0x37,0x1b,0x23,0xb2,0xf7,0x4d,0xd7,0x24,0x68,0x6b,0xaa,0x2e,0x57,0x8d,0xd6,0x4e,0xa2,0x69,0xd8,0x8d,0x84,0xb2,0x85,0x91,0x30,0xbf,0x41,0xab,0xcf,0x5c,0xa6,0x51,0x1e,0xf5,0x79,0x5a,0x20,0xfa,0x3d,0x0a,0xc5,0xd7,0x3f,0xa6,0xcc,0xf6,0x9b,0x76 +.byte 0xe0,0xec,0x9e,0x0b,0x23,0xe4,0x74,0x36,0x14,0x6f,0x24,0x9d,0xe7,0xb2,0x41,0xd7,0x68,0x37,0x67,0xdc,0x01,0xb1,0x20,0xf9,0x8b,0x0b,0xf5,0xa7,0x95,0x78,0xa0,0x6c,0x4b,0xc0,0x44,0x92,0x4a,0x75,0x0f,0x61,0xde,0xc3,0xc2,0x3d,0x17,0xa0,0x4d,0x57,0x8b,0x11,0x35,0xbd,0x49,0x87,0x05,0xba,0x5d,0x1f,0x76,0xd4,0x0f,0xb0,0x5b,0x5f +.byte 0xb7,0xf8,0xcf,0x12,0x54,0x19,0x9a,0x49,0x6a,0x42,0xad,0x93,0x85,0x0b,0xe7,0x8c,0x30,0x59,0x82,0x82,0x2d,0xd9,0x89,0xf5,0x8c,0x39,0x9c,0xf5,0xcd,0x25,0x22,0x74,0xcf,0x56,0xa2,0x15,0x40,0xa6,0xa8,0xfc,0xdc,0x85,0x9e,0xab,0xd6,0x94,0x5d,0xd6,0x73,0x07,0xed,0x7b,0x76,0x11,0x67,0xf5,0x52,0xac,0x1a,0x69,0x1f,0x4a,0xa2,0xaa +.byte 0x4d,0x11,0xe0,0xc4,0x4c,0x6e,0x9e,0x8e,0x13,0x46,0x0b,0x95,0x40,0x53,0x35,0x53,0x58,0x7f,0x81,0x5f,0x17,0xd7,0x5e,0x53,0x86,0xf3,0x1b,0x70,0xf1,0x95,0x8f,0xf6,0xd4,0x6f,0x55,0x92,0xa2,0x38,0xd3,0x43,0x6c,0x7e,0xa2,0x21,0x5b,0x18,0x11,0xdd,0x03,0x52,0xe6,0xe5,0xc0,0xc5,0x4e,0x8e,0xda,0xdb,0x91,0xcf,0xf7,0x75,0xc2,0x33 +.byte 0x69,0xd1,0xd1,0x29,0x9d,0x51,0x79,0x91,0xe4,0x58,0x05,0xa5,0xf6,0x54,0x16,0x3e,0x42,0xf3,0xc4,0x1f,0x88,0x94,0xfc,0x6b,0x53,0xb1,0xd5,0x17,0xe6,0xab,0x77,0x33,0x8a,0xd0,0x93,0x74,0x02,0xe0,0x81,0x5e,0xbe,0x2f,0x4d,0xcd,0x25,0x0b,0xd0,0x06,0xd8,0xc9,0xf9,0xcf,0x8e,0xf8,0xc3,0xe2,0x33,0x60,0xe5,0xfa,0x89,0x68,0xf8,0xb7 +.byte 0xef,0x9d,0xfc,0x9d,0x76,0x13,0x2d,0x9d,0x18,0x7d,0x05,0xb4,0xa7,0xa3,0x8a,0x91,0xe0,0x73,0x65,0x89,0xb4,0xc1,0x53,0x7c,0xdc,0xf2,0xab,0x39,0x94,0xc7,0x3d,0xf8,0x1c,0x8f,0x49,0x37,0xee,0xc1,0x19,0x84,0x15,0x3b,0x36,0xb2,0xc2,0xe1,0x16,0xe2,0xfb,0xde,0x1f,0x0e,0xa4,0xea,0x59,0x67,0x2d,0xea,0x47,0xe5,0x2c,0xd1,0xb5,0xa9 +.byte 0xbd,0x5c,0x92,0x34,0x8b,0xc5,0xab,0x4f,0x2b,0x6b,0xc4,0x8b,0xdb,0xbb,0xcb,0x86,0x34,0x35,0xa0,0x5c,0x29,0x1a,0x8b,0xce,0xdc,0xd7,0x46,0x2b,0x20,0x9d,0xea,0xa8,0x97,0x68,0x37,0x56,0x03,0x7d,0x4f,0xb6,0xfc,0x30,0x82,0x68,0xb4,0x56,0xf3,0xbe,0x58,0xcc,0x20,0xc1,0x53,0x9f,0xbb,0x0b,0x2b,0x6e,0xa0,0x2d,0xc0,0x61,0x02,0x0b +.byte 0xf9,0x0e,0x55,0xb8,0xb8,0x23,0x6e,0x50,0xc0,0x36,0xb8,0xf6,0x5e,0xb3,0xa7,0x8f,0xf8,0x7f,0xd0,0x5d,0x0a,0xc4,0x2b,0xa9,0xd3,0x76,0xcf,0x4d,0x27,0xda,0xac,0xf3,0xb0,0xca,0x00,0xa0,0x94,0x12,0x20,0x89,0x22,0xa9,0x89,0xe4,0x23,0x71,0xe0,0xdb,0xec,0xb0,0xa9,0x2e,0x45,0xf6,0x8d,0x1e,0x4b,0x0e,0xc7,0xf8,0x40,0xd6,0xf4,0x2f +.byte 0x80,0x3e,0xf8,0xfb,0xcf,0x7b,0x54,0xb5,0xbd,0x55,0xf2,0x37,0x46,0x9f,0x32,0x45,0x87,0xa3,0x6a,0x51,0x25,0x43,0x54,0xa2,0x92,0xc6,0xbe,0xa4,0x33,0x54,0x82,0xc7,0xf1,0xe4,0x52,0xf9,0x09,0xac,0xc3,0xb1,0x25,0x86,0xc7,0x89,0x83,0x2c,0xf6,0x35,0x9e,0xd1,0xd8,0xb1,0x71,0xed,0xfa,0xae,0x09,0x83,0xb3,0xf0,0xde,0x24,0xed,0x3c +.byte 0xc6,0x60,0xe8,0x15,0x49,0x93,0x29,0x82,0xbf,0x1d,0x23,0x17,0x11,0xea,0xa7,0x53,0x83,0xa5,0xc1,0x9e,0x02,0x17,0x08,0x99,0xa6,0x72,0xaf,0x82,0x3f,0x0b,0x69,0xca,0xb8,0x72,0xa9,0x31,0x71,0x20,0x32,0x57,0x89,0x9b,0x16,0x92,0x54,0xc0,0x99,0x6d,0xa4,0xbf,0x5a,0xb5,0x53,0xa7,0x4c,0x69,0xd8,0xf7,0xe7,0x4c,0xc0,0x76,0xb6,0x35 +.byte 0xdd,0xe7,0xb2,0xd9,0x1c,0xd5,0xf7,0x39,0x32,0x44,0x48,0x02,0x85,0x69,0x02,0xad,0xe6,0xfc,0xbb,0x07,0x9e,0x7f,0xee,0x6d,0x07,0x12,0x21,0xeb,0x67,0x4d,0x74,0x90,0x8f,0x79,0x51,0x9d,0x8a,0x63,0x24,0xab,0x6f,0x8f,0x73,0xd3,0x91,0x68,0x15,0xa9,0x6a,0x84,0x92,0xc2,0xd4,0x4d,0xa8,0xe1,0x4f,0xa2,0x1e,0x34,0xa3,0x9a,0x04,0xf2 +.byte 0xfc,0xc4,0xe7,0xd0,0x52,0xc4,0x49,0x51,0x8e,0x7d,0xaa,0x74,0xaa,0x08,0xbe,0x08,0xf6,0xe4,0xc1,0x61,0xff,0x2e,0x9c,0x17,0x61,0xb6,0x01,0x44,0x18,0xe8,0x5e,0xa9,0xfb,0x02,0x21,0xbb,0x08,0x5c,0xe0,0xd3,0x0c,0x98,0xc5,0x93,0x2a,0x1c,0x69,0xf3,0xe8,0x8b,0x36,0xa0,0x9d,0x1e,0xda,0x18,0x14,0x06,0x7f,0x75,0x3d,0x42,0x92,0x5a +.byte 0xb9,0xb7,0xc0,0xc0,0xb0,0xc5,0xa9,0xb2,0x67,0x24,0xc2,0x28,0x29,0xcb,0x78,0x8e,0xf3,0xd1,0x37,0x63,0xca,0xc8,0x9a,0x1b,0x38,0xa5,0x9f,0x0e,0x0d,0x26,0x5b,0xfe,0x2f,0xdf,0x4f,0xb9,0x21,0x8c,0xc8,0xe0,0x9f,0x71,0xb9,0xc3,0x6c,0xd8,0xd3,0x2f,0xe4,0x3c,0x67,0x35,0x45,0x74,0x7f,0xcb,0x13,0xda,0x64,0x47,0xff,0x6f,0x05,0xf0 +.byte 0x87,0x8d,0x0d,0x1f,0x10,0x47,0x0e,0xf6,0x9d,0x89,0x6d,0x79,0x04,0x77,0x8a,0x6c,0xeb,0x7d,0x9b,0xd7,0x65,0x82,0xa8,0x95,0xa2,0x8c,0x02,0x91,0x0d,0xf2,0xe8,0x65,0x60,0x0d,0xb6,0x1d,0xf4,0xf3,0x41,0x75,0x33,0x21,0x13,0x22,0x93,0x01,0x2f,0x11,0xe7,0xed,0x45,0x56,0x90,0xec,0x0b,0x99,0x8e,0x84,0xc8,0x76,0x31,0x1d,0xb9,0xcb +.byte 0x87,0x3f,0x5f,0x39,0xeb,0xe8,0x9e,0x5e,0x96,0x9e,0x42,0x64,0xf3,0xef,0x00,0x1f,0x2a,0x6c,0x18,0x67,0xbd,0xdd,0xf9,0x65,0x11,0x1b,0x9c,0xd7,0xf3,0x3d,0xb2,0x6f,0x88,0xf7,0xd2,0x26,0x06,0xef,0xc8,0x23,0x3f,0x46,0x5d,0xf0,0x96,0x40,0xb1,0xdd,0xad,0xe4,0xee,0xb6,0xc2,0x67,0x18,0x46,0x67,0xc4,0xa5,0x7e,0x3e,0xce,0x72,0x47 +.byte 0xca,0xc3,0xa7,0x94,0x56,0xe2,0x23,0x03,0xcf,0xd0,0x18,0x55,0x30,0xe3,0x14,0x00,0xda,0x0f,0xaa,0x7f,0x20,0xaf,0x3b,0x24,0x43,0x7a,0xaa,0xd4,0x12,0x42,0x10,0xe4,0x44,0x8a,0x7f,0xf1,0x74,0x9d,0xe0,0x28,0x60,0xce,0xdd,0x04,0x96,0x03,0x80,0xcb,0xaa,0xa9,0xb5,0xc7,0xb4,0xbb,0xc7,0x9a,0x93,0xd8,0xff,0x3b,0x8f,0x1f,0xb7,0xce +.byte 0xed,0xbc,0xde,0x9f,0x9e,0x56,0x96,0x65,0xba,0xe7,0x89,0x03,0xb2,0xbd,0xfe,0xa7,0x02,0xeb,0x33,0x9a,0x8b,0x5b,0x36,0x64,0x17,0x9f,0xd2,0xe4,0x75,0xb5,0xfb,0x21,0x03,0xa4,0xe7,0xb4,0x49,0x72,0xfd,0xf3,0x1e,0x5f,0xdb,0xe5,0x6c,0x92,0x51,0xe7,0x91,0x55,0xb7,0x82,0x18,0x05,0xc3,0x2c,0xf1,0x23,0x61,0x36,0xad,0x80,0x1b,0xde +.byte 0xe1,0x51,0x4e,0x51,0xa1,0xf6,0x5a,0xb9,0x03,0x48,0xa7,0x12,0x88,0x63,0x30,0xff,0x48,0xfc,0x92,0x30,0x9a,0xca,0x08,0x1b,0x64,0xa9,0x74,0x2a,0x64,0x42,0x7d,0xa9,0xa4,0x9d,0xcb,0x59,0x71,0x53,0xc1,0xa8,0xa6,0xb5,0x47,0xf9,0x87,0xb5,0x41,0x58,0x92,0x14,0xf7,0xbd,0x10,0x45,0x37,0x20,0x1d,0x5b,0x42,0x04,0xed,0x69,0x4c,0xa5 +.byte 0xdc,0x2a,0x58,0xba,0x00,0x1e,0x05,0x9c,0x3c,0xbf,0x65,0x76,0xd1,0x11,0xe0,0x15,0x22,0xb0,0x2a,0x53,0x32,0x0f,0x6e,0x08,0x4e,0x27,0xc2,0x71,0x14,0x20,0xee,0xb0,0x0b,0x60,0xef,0x54,0xae,0x2c,0xe0,0x1d,0x30,0xac,0x0d,0x3a,0x93,0x15,0x0a,0xe7,0x14,0xf3,0x1a,0x67,0xb1,0x43,0x85,0xbd,0x06,0x53,0xab,0x6d,0x5d,0xe7,0xe3,0x82 +.byte 0xb8,0x39,0x35,0x10,0x87,0xe7,0x90,0x4d,0x9c,0x6f,0x83,0xad,0xa2,0x43,0x7a,0x5d,0xc1,0x8a,0x39,0xa3,0xa6,0xda,0x48,0x5c,0x9b,0xe1,0x0d,0x69,0xfc,0x87,0x18,0xdd,0x34,0x9a,0xb4,0x9c,0x04,0x0d,0x49,0x18,0x3e,0x38,0xd8,0x01,0x67,0xb1,0x7f,0x6b,0xb5,0xfe,0x58,0x1c,0x64,0x11,0x10,0x6b,0xc1,0xca,0x56,0xe3,0x12,0x8c,0xb4,0xac +.byte 0x03,0xbd,0xc1,0x54,0xbe,0x5c,0x70,0x6f,0xdd,0x73,0xa3,0x84,0xcd,0x0b,0x1b,0xbf,0x05,0xac,0x27,0x11,0xe8,0x5f,0xc3,0xb9,0x68,0xc2,0xe9,0x3f,0x5a,0x9b,0x28,0xca,0x65,0x5e,0x66,0x4e,0x50,0xa9,0x81,0xb1,0x10,0xc1,0x2c,0xa5,0x62,0xc8,0x52,0x07,0xa5,0xa1,0x99,0x16,0x7b,0x08,0xa4,0x1e,0xf4,0x50,0x8f,0xb2,0x42,0xa5,0x19,0xa2 +.byte 0x34,0x91,0xcf,0xa7,0x5e,0x73,0x6b,0xc2,0xa3,0x4d,0xdd,0x7c,0x26,0x46,0x34,0xe6,0x5d,0x54,0x52,0xe3,0x1e,0xc1,0x10,0x36,0x7c,0xc9,0xd2,0x1e,0xca,0xeb,0x80,0xc5,0x3c,0x04,0xf6,0xb7,0x09,0xd4,0x3e,0x67,0xc3,0xf6,0x6b,0xd4,0x60,0x00,0xc9,0x68,0x17,0x39,0xbc,0xcd,0x14,0x32,0xfc,0x33,0xa4,0xb0,0x6f,0x12,0x6b,0x5f,0xe2,0x15 +.byte 0x1c,0x9a,0x15,0x4f,0x0b,0x7d,0x4c,0xa0,0x89,0x40,0xb3,0x0e,0x84,0x90,0xb3,0xc6,0x3e,0xa5,0x0b,0x81,0x66,0x14,0x5f,0x8d,0xe0,0xbf,0xf7,0x9d,0xa4,0x4e,0x69,0xd5,0xac,0x0f,0x6c,0x29,0x94,0x8f,0x3b,0x4b,0xed,0x5b,0x6e,0xe1,0x58,0x5d,0x32,0x19,0xe6,0xbd,0xfb,0xd5,0xb7,0x0f,0x72,0x0e,0x5b,0x14,0xd3,0xf3,0x09,0xa8,0xea,0xf7 +.byte 0x98,0x2f,0x42,0x07,0x8e,0x72,0x27,0x53,0x8d,0x0b,0xea,0x74,0x38,0xbc,0xaf,0xb8,0x76,0x65,0x97,0xda,0xa7,0x06,0x37,0x29,0x09,0xbe,0xaa,0xe6,0xf7,0xb6,0xb1,0x5f,0x71,0x1f,0x5d,0x14,0x47,0xdf,0x20,0xa3,0x94,0x93,0x7d,0x21,0xe6,0x22,0x7e,0x38,0x1a,0x26,0x83,0xc7,0x32,0xdf,0x58,0xcd,0xab,0x67,0xae,0x94,0xa5,0x68,0xcb,0xe3 +.byte 0x51,0x70,0xc0,0xc4,0x41,0x9f,0xca,0x05,0xc9,0x51,0x2a,0x8e,0x53,0x89,0x3f,0x52,0x6b,0x29,0x64,0xa8,0xb8,0xdf,0x02,0xb1,0x41,0x4e,0x36,0x42,0x32,0xa8,0xc0,0x91,0xf0,0x69,0x69,0x55,0x99,0xb7,0x78,0x4f,0x79,0x5b,0xc5,0xab,0xc6,0xed,0x15,0x88,0x6b,0x94,0x0a,0xdd,0xea,0x47,0xf9,0x0e,0xb8,0x89,0x15,0x68,0x3e,0xc0,0x50,0xf8 +.byte 0xa1,0x2d,0x2a,0x11,0x8a,0xc5,0xb0,0x09,0x4f,0x7d,0x90,0x5f,0x49,0x35,0xe9,0xdd,0xfc,0xac,0xea,0x1b,0x20,0xad,0xd2,0xe6,0xb6,0xbf,0x3c,0x0e,0x7b,0xdf,0x2f,0x55,0x58,0x0e,0x25,0x53,0x62,0xd3,0x73,0xb8,0x3e,0x12,0x91,0xcb,0x23,0xf2,0xc0,0x5d,0x74,0x2b,0x51,0xcc,0xa2,0xb1,0x5a,0xd2,0xf4,0x9b,0xc9,0xa5,0x83,0x2b,0x5a,0x8a +.byte 0x0b,0xe9,0x09,0x59,0xb5,0x44,0xc9,0x55,0xcc,0xbd,0xb6,0x69,0x66,0x9a,0x0c,0x15,0xae,0x76,0x35,0xbe,0xe9,0x37,0x70,0x9e,0xdc,0x97,0x5a,0x82,0x97,0xf6,0x1a,0x45,0xd7,0x27,0xfe,0x1f,0xc3,0x7c,0x3a,0x52,0x85,0x12,0x73,0x8a,0x8e,0x07,0xec,0x1f,0x59,0x3f,0xb0,0x32,0x07,0x92,0x3e,0x81,0xe0,0x7a,0x9a,0xc9,0x91,0xca,0x84,0xf1 +.byte 0xe1,0x32,0x57,0x0a,0x3c,0x9a,0x20,0xa8,0xbe,0x84,0x91,0x44,0x66,0x81,0xdd,0x12,0xa8,0x46,0x15,0x18,0xfc,0xae,0x5e,0x9a,0xf3,0xd9,0xb9,0x6a,0xbb,0x90,0x1c,0x61,0x7f,0x61,0x2c,0xa7,0x12,0x1e,0x05,0xee,0x0c,0x66,0x9e,0xc2,0xc8,0xb9,0xe0,0xc9,0xc4,0xb9,0xee,0x3a,0x6f,0x97,0x2a,0x5e,0xcb,0xd9,0xff,0xd1,0x37,0x5e,0xa0,0x03 +.byte 0x70,0xc1,0x2f,0x15,0xf9,0xf7,0x90,0xbe,0x23,0xe7,0x7c,0x90,0x4b,0xe4,0x5a,0x01,0x65,0x27,0x2d,0x4b,0xd3,0xa8,0x8c,0x1d,0x2d,0x5d,0x48,0xac,0x6b,0x59,0xc9,0x78,0xb2,0xee,0xda,0x6e,0xa8,0x68,0x08,0x99,0x22,0x25,0xfe,0xc2,0xb8,0x83,0xa8,0x08,0xbb,0x6e,0x64,0xae,0x2e,0xbb,0x93,0xaf,0xdc,0xeb,0xa3,0x11,0xa7,0x5d,0x3f,0x22 +.byte 0xf1,0x95,0x27,0xf6,0xd6,0xa6,0xc3,0x56,0x0a,0xd0,0x17,0x43,0x35,0xd2,0xe7,0xa4,0x8f,0x6c,0x1c,0xc4,0x4d,0xa7,0x3b,0xb8,0x7f,0x0c,0xa0,0xd6,0x56,0x82,0xf4,0x16,0x96,0xcd,0xcf,0x6f,0x78,0xec,0xbb,0xb2,0xdb,0x67,0xcf,0x78,0x0c,0x22,0x1d,0x72,0x21,0x8e,0x40,0x85,0xa5,0x07,0x3b,0x0e,0xfa,0x44,0xb0,0xfe,0xbf,0x54,0x80,0x41 +.byte 0xdc,0xa7,0xc7,0xdb,0xaa,0x04,0x42,0x0d,0x42,0x03,0x17,0xc8,0x57,0xd7,0x08,0x34,0x37,0xf5,0x9a,0x90,0x30,0x43,0x54,0x5b,0x58,0x50,0x4e,0xc4,0x56,0x57,0xff,0xf0,0x05,0x82,0xca,0x2e,0x20,0xb0,0xbd,0xd0,0x00,0x7d,0x60,0x3f,0xdb,0x9c,0x08,0x7e,0x21,0x63,0xbc,0x89,0xbf,0xcb,0xcc,0x36,0xb5,0x36,0x41,0xb4,0x9c,0x5c,0x9d,0xa6 +.byte 0x74,0xa4,0x4f,0x6a,0xcb,0x63,0x51,0xb1,0x92,0xa0,0x03,0x9b,0x88,0x03,0xd5,0x82,0x30,0xfb,0x69,0x49,0x20,0xb0,0x37,0x50,0xe4,0x02,0x9e,0x11,0x09,0x20,0x1a,0x41,0x8d,0xdd,0xa0,0x18,0xb4,0x74,0x04,0x1e,0x3a,0xea,0xb4,0x28,0x01,0x7f,0x0b,0x73,0x27,0x5f,0x76,0x2e,0x71,0xfa,0x50,0x1b,0x43,0x8d,0x0d,0x6c,0x87,0xc3,0x10,0x7b +.byte 0x42,0x7d,0x17,0xa6,0x00,0x5b,0x83,0x6c,0x7b,0x7f,0x72,0xd8,0x90,0x4d,0x7f,0x54,0x72,0x17,0x21,0xe4,0x45,0x74,0x20,0x53,0x30,0x46,0x90,0xbf,0x2f,0xac,0x01,0xbd,0x40,0xa9,0xc5,0xbe,0xbd,0x9b,0x59,0x62,0x03,0x30,0x80,0xe3,0x8e,0x23,0x7b,0x2d,0x63,0x4f,0x30,0xe3,0xb8,0x56,0x87,0x57,0x43,0xdc,0x6a,0x3c,0x13,0xed,0x93,0xc9 +.byte 0x1a,0x1b,0xea,0x38,0x67,0x33,0x7f,0x11,0x5c,0x96,0x20,0x4d,0xf6,0x82,0x51,0x45,0xca,0x20,0xfd,0x59,0xef,0x4c,0xb4,0xb0,0xb2,0x0f,0xdb,0x4c,0x00,0x7a,0x18,0x58,0xb0,0xd3,0x65,0x73,0x42,0xe5,0x05,0x76,0xd7,0xa2,0x1e,0x9f,0x59,0xc0,0xd0,0x76,0x29,0x1b,0x12,0x29,0x9b,0xe4,0x7d,0x45,0x13,0xb4,0x57,0xf2,0x0b,0xd1,0xb5,0x60 +.byte 0x6d,0x15,0x0b,0xca,0x5e,0xe4,0x80,0xda,0x56,0x95,0x41,0x18,0x54,0xa7,0xad,0x40,0xe5,0xd7,0xa7,0x3e,0xf7,0x73,0x40,0x70,0xb3,0x23,0xdb,0x22,0x62,0xc7,0x44,0xfb,0x64,0x18,0x18,0x05,0x84,0x07,0x68,0x06,0x7f,0xb9,0xc3,0xf9,0x55,0xe2,0x0d,0x37,0x51,0x34,0xc3,0x55,0x3c,0x29,0x5d,0x1d,0x27,0x77,0xd3,0xe1,0x6a,0x60,0x9f,0x10 +.byte 0xef,0xb1,0x93,0xbf,0x2a,0xb7,0xe8,0x42,0x4d,0xfd,0xa9,0xa9,0x2f,0xb6,0x07,0x5b,0xe8,0xf7,0xd7,0x10,0x47,0x71,0x56,0xba,0x11,0x11,0x32,0xc4,0x22,0xf4,0x12,0x6f,0xc3,0xef,0x81,0xc5,0x82,0xb4,0x1b,0x99,0xbb,0x1a,0x63,0x6b,0x3a,0x70,0x4f,0xec,0x2c,0xf9,0xde,0x1a,0x2e,0x62,0x27,0x1c,0x81,0x21,0x30,0x08,0x30,0xf6,0xf5,0xc1 +.byte 0x6d,0x0b,0xeb,0x34,0xd9,0x3a,0xa2,0xa2,0xc6,0x17,0x60,0x85,0x65,0x43,0xd6,0x3d,0x71,0xac,0xc2,0xaf,0x2b,0x9e,0x62,0xf2,0x08,0x47,0x6f,0x42,0xa8,0x21,0xad,0x42,0x98,0xa0,0xef,0xdf,0xd8,0xda,0x10,0xad,0xf7,0xe5,0xf9,0x22,0x89,0x44,0xbf,0x86,0x86,0x2b,0x02,0xd1,0x9e,0x8f,0xb7,0x10,0x63,0xb1,0xcc,0x40,0x6b,0xa3,0x8e,0x09 +.byte 0xb8,0xe3,0x77,0x3c,0xde,0x36,0x7a,0xb7,0x78,0x4f,0x99,0x5d,0x9a,0x9e,0x19,0x2d,0xb5,0xd9,0x9c,0x95,0x1f,0xa1,0xcc,0x61,0x31,0x1c,0x96,0xe5,0xca,0xeb,0x26,0x34,0xa4,0x63,0x5c,0x7c,0x0f,0x23,0xd1,0xe1,0x09,0xf4,0xab,0xf6,0x73,0x2f,0x8a,0x62,0xf0,0xd3,0x8c,0x44,0xe5,0xe9,0x9d,0x58,0x71,0xfa,0xf5,0x39,0xa5,0x6f,0xf7,0x04 +.byte 0x43,0x0a,0x78,0x54,0xfb,0xa7,0x66,0x57,0x1f,0x61,0xd6,0xda,0xff,0x4f,0x32,0x9d,0x80,0x6b,0x77,0xed,0xda,0xaf,0xbc,0x9e,0xea,0x77,0x04,0xf3,0x47,0x96,0xd1,0x44,0x8e,0xca,0xfe,0xb0,0xa3,0xa6,0x1d,0x8d,0xa4,0xb5,0x8c,0x35,0x28,0xf3,0xaa,0xab,0x28,0x1e,0xc9,0x94,0x12,0x07,0xc6,0xea,0x23,0xf9,0x69,0xc3,0x14,0x27,0xcc,0x55 +.byte 0x27,0x0b,0x27,0x64,0x23,0x38,0x05,0xd9,0xb4,0xf7,0x00,0xf3,0x02,0xae,0xc8,0x5a,0xbd,0x2f,0x20,0xd5,0x45,0xa6,0x09,0x6f,0x1a,0x09,0xb7,0xe7,0x6f,0xf6,0xa6,0x6f,0xc7,0x03,0x4e,0xa3,0x72,0xb5,0xfc,0x17,0xcf,0x1e,0x64,0x8b,0xc4,0xa2,0xba,0x83,0x0e,0x2a,0x11,0xba,0x71,0xe0,0x1c,0x9f,0x70,0x6e,0xf4,0xd9,0x47,0x31,0xf7,0xaf +.byte 0xf7,0x1a,0xe7,0xc1,0xe9,0x66,0xa4,0x48,0xd4,0x25,0x8b,0xf7,0x6f,0x33,0x72,0xff,0x93,0x2e,0xcd,0xc7,0xae,0x3b,0x71,0x3f,0x84,0x7f,0xe6,0xb5,0x58,0x4f,0x95,0x34,0xe7,0x89,0x10,0xd3,0x2b,0x5c,0x30,0x9b,0xd3,0xef,0x98,0xf3,0x33,0x0e,0x6d,0x5f,0x7e,0xba,0x55,0x7a,0xb6,0xf3,0xb6,0xcd,0xa8,0x10,0x68,0x85,0x6f,0xea,0x54,0xc3 +.byte 0x66,0x51,0x5a,0xfc,0x11,0x83,0x9e,0x68,0x95,0xdb,0xec,0x74,0xf0,0x86,0x4a,0x90,0x24,0x66,0xf2,0x61,0x40,0x2e,0x3b,0x53,0xea,0xc1,0x3e,0x1c,0x69,0xaf,0x5f,0x04,0xb5,0xbd,0x3d,0x44,0x1c,0xc6,0x49,0x65,0xf6,0x78,0xfd,0x69,0x49,0x95,0x96,0xa1,0xa0,0xa9,0x78,0x1a,0xf6,0x0f,0xe9,0x52,0x93,0x9c,0x96,0x6c,0x5e,0x67,0x63,0x2d +.byte 0x18,0x22,0x2a,0xcc,0x7f,0x2f,0xd3,0x72,0x82,0x98,0xae,0xb0,0x2b,0xa6,0x96,0x41,0x25,0x47,0x3c,0x92,0xc5,0x0f,0x2c,0xd4,0x43,0x09,0x0b,0x94,0x73,0x73,0x29,0xc2,0x8a,0xa3,0xcc,0x8d,0xed,0x40,0x6d,0x40,0x18,0x7c,0x32,0x1e,0xe1,0x4e,0x26,0xa7,0xa4,0xd5,0xcb,0xfa,0x90,0xba,0xb2,0x04,0x1d,0x5d,0xbe,0x32,0x6c,0x71,0x09,0x51 +.byte 0xdb,0xe3,0xb0,0xe1,0x34,0x74,0xa3,0x2b,0xf2,0xcb,0x9e,0xc0,0xae,0x88,0x40,0x90,0xb6,0x22,0xc8,0xac,0xff,0x45,0xc6,0xfa,0xce,0x0f,0x03,0x9d,0xc0,0xb2,0x2e,0xdb,0x1e,0x6c,0xa5,0xbe,0xb5,0xb3,0xaa,0xd5,0x2d,0x06,0x4d,0x29,0xa3,0xbe,0x25,0x5f,0x21,0x42,0x8d,0x27,0xaa,0x6f,0x59,0x88,0x61,0x4d,0x72,0x9f,0x64,0xfc,0x07,0xaf +.byte 0xeb,0x02,0x5e,0xb9,0x1f,0xfe,0x1a,0x67,0x10,0x35,0xe9,0x9f,0x5f,0x9c,0x8d,0x4a,0xb3,0x10,0x99,0x8d,0x5b,0x9c,0x8b,0x8a,0x0c,0x02,0x8b,0x44,0x1a,0xaa,0xe7,0x14,0x05,0x3d,0x9e,0x62,0xfc,0x76,0x49,0x56,0x46,0xae,0xcc,0x0e,0x47,0x58,0x4d,0x94,0x33,0x4d,0x23,0x24,0x44,0x52,0x2e,0x18,0xf7,0x53,0x6b,0x24,0x67,0xb8,0x88,0x46 +.byte 0x70,0xc8,0xcb,0x60,0xac,0x70,0x85,0xdd,0x00,0xa1,0x5d,0xbb,0x94,0x07,0x0a,0xb6,0x1c,0x88,0x59,0xa7,0x88,0x7e,0x1e,0xc9,0x1d,0x7c,0xa0,0x1c,0xad,0xe4,0xa5,0x36,0xa5,0x35,0xe8,0xda,0x27,0x15,0xbc,0x7b,0x1e,0x8a,0x33,0x74,0x4b,0xc1,0xc7,0x9d,0xa9,0x21,0x98,0x02,0xe5,0xf4,0x8b,0x8e,0x2d,0x64,0x81,0xea,0xa6,0xbe,0xe2,0x05 +.byte 0x16,0xba,0xac,0x75,0x79,0xa4,0xc0,0xd3,0x9d,0xe0,0x25,0x63,0x22,0xb3,0x9c,0xee,0x04,0x8f,0x60,0xab,0x52,0x43,0x05,0x16,0xd4,0xb3,0x88,0xe8,0x68,0xc3,0x81,0x94,0xc4,0xee,0x13,0xaf,0xdd,0x36,0x23,0xe6,0x78,0xc9,0xf6,0x42,0xf0,0xf7,0x89,0x64,0x79,0x13,0xe8,0xed,0x50,0x03,0x16,0x78,0x6d,0xf4,0xdf,0x85,0x2e,0x4e,0x8f,0x2c +.byte 0x5b,0xfe,0x4c,0xf2,0x49,0xde,0xf2,0xa4,0x96,0xe0,0x8a,0x25,0xc8,0x6d,0x22,0xff,0xab,0xfc,0x18,0xe8,0x7f,0xd5,0xc1,0x7e,0x44,0x8e,0x21,0xb4,0xc8,0x79,0xc0,0x55,0xaa,0xb7,0x28,0xa1,0x3a,0xbd,0xc2,0x1d,0xf8,0x87,0xf9,0x35,0x30,0x25,0xb2,0xaa,0x8f,0x3c,0x0d,0x64,0xf2,0xd1,0xa0,0x51,0xbf,0x9b,0x9a,0x9a,0x9c,0x18,0x43,0xea +.byte 0xd2,0x54,0x50,0xe0,0xca,0x1a,0x29,0x16,0x9f,0x49,0x47,0x56,0x65,0x21,0x0f,0xb0,0x53,0x41,0xe3,0xec,0xe0,0x15,0xcb,0xd0,0x61,0x05,0x67,0xd6,0x02,0x1a,0x31,0x80,0xa4,0x9f,0xf5,0x9b,0x28,0xcd,0x43,0xd5,0x70,0x05,0x67,0xe8,0x76,0xb7,0x99,0x98,0x0a,0xd6,0x27,0xe9,0xfb,0x62,0xff,0x66,0x47,0xf7,0xbe,0x5e,0x35,0xa0,0x3b,0x56 +.byte 0x58,0x78,0x9b,0x9c,0x5b,0x9f,0xf5,0x6b,0x1a,0x6a,0xfd,0x8e,0xe3,0xd9,0xa2,0x8b,0x2e,0xef,0xc7,0xd3,0x74,0xb1,0xea,0x6a,0x03,0x8b,0xe2,0x78,0xbe,0xf1,0x75,0x7f,0x02,0x03,0xbc,0xd3,0x15,0x2c,0x87,0x01,0x95,0xa6,0x87,0x2d,0xf8,0x63,0xfe,0x33,0x8f,0xc5,0xc9,0x0a,0x06,0x79,0x93,0x46,0xd7,0x0b,0x61,0x06,0x68,0xae,0x9b,0x46 +.byte 0x6f,0x9e,0x1b,0x21,0x58,0xc1,0x72,0xa9,0x05,0xa7,0xaa,0x88,0xee,0xed,0x8d,0x7f,0x55,0x3b,0xb8,0xb8,0xf8,0x42,0x26,0x4a,0x78,0xe3,0x17,0xe8,0xac,0xb3,0xdb,0x9b,0x90,0x7d,0x8d,0x65,0x00,0x39,0x40,0xc2,0xe2,0x9c,0xc6,0x16,0x35,0x54,0x64,0x09,0xc8,0xc7,0x08,0x77,0x90,0x9d,0xb4,0xd4,0xe1,0x36,0xd4,0x5e,0x63,0xb0,0xba,0x81 +.byte 0x0c,0x4e,0x24,0x20,0xc0,0x7f,0xfc,0x02,0x3d,0x83,0x60,0x8a,0xf5,0xff,0x87,0x60,0x9c,0xd5,0xc0,0x94,0x64,0xe2,0x3f,0xeb,0x9a,0xe5,0xb6,0x50,0x13,0x36,0xf4,0x96,0x5d,0xf4,0xb5,0xab,0xa4,0x28,0x17,0x38,0x7f,0xca,0xf7,0x0c,0xcf,0xae,0xf8,0xef,0x41,0x6d,0x9c,0xa1,0x53,0x33,0xcb,0x8d,0x21,0xab,0x3a,0x8c,0x72,0x8d,0xf3,0xf2 +.byte 0x05,0x69,0xf5,0xe8,0x6b,0x5b,0x42,0x85,0xb1,0x2e,0x6f,0xf8,0x62,0x00,0x1c,0x48,0x6c,0x85,0x72,0x93,0x34,0x67,0x80,0xe7,0x2a,0xfe,0xcf,0x54,0xc6,0x94,0xf2,0x5a,0x48,0xab,0x40,0x52,0x66,0x7d,0x7a,0x75,0x68,0x77,0xfd,0xb2,0xdd,0xb1,0xdb,0x72,0x50,0x31,0x53,0x24,0xbd,0xb0,0x6e,0x1f,0xbd,0xa6,0x90,0x67,0x07,0x1d,0x31,0xf3 +.byte 0x8c,0x82,0xf7,0x53,0x85,0x54,0x64,0x7c,0x76,0x7b,0x5f,0xaa,0xe0,0xe0,0x36,0xa4,0x13,0xb3,0x0b,0x99,0x09,0xfe,0xed,0xbb,0x81,0x4b,0xb3,0x16,0x45,0x2e,0x3a,0xfe,0x60,0x9c,0xdc,0xcb,0x00,0x5a,0x41,0xc4,0x80,0x3c,0x9d,0x15,0x05,0xfa,0x5e,0x37,0x64,0x89,0x9c,0x2d,0xb8,0xf7,0xbc,0x35,0x8c,0x49,0xfe,0x0a,0x43,0x1a,0x59,0xaf +.byte 0x1e,0x50,0x08,0x0f,0x2d,0xb8,0x5d,0x63,0x7f,0x95,0x6a,0xe6,0xad,0x88,0xc3,0xac,0x05,0x14,0x44,0xb0,0x70,0x83,0x5f,0x94,0x45,0x3d,0xe5,0xbd,0xb8,0x92,0x28,0x20,0xd5,0xa0,0x83,0xd2,0xe2,0x41,0x71,0x27,0x29,0x1b,0x2a,0x3a,0x08,0xca,0x75,0xec,0x16,0x4a,0xcf,0x39,0xed,0xbe,0x2a,0x26,0x9b,0xa3,0x26,0xc6,0x89,0xf2,0xc6,0x8d +.byte 0x49,0x3a,0xfe,0xda,0x16,0x54,0x55,0x7e,0x7f,0x65,0x65,0xd2,0x16,0xdd,0xe2,0xa3,0x86,0x7a,0x69,0x82,0x99,0x58,0x45,0x16,0x4c,0x69,0xff,0x72,0xf2,0xbc,0xbb,0xdd,0xe1,0xb4,0x56,0xcf,0xc0,0x84,0xd6,0x2c,0xd8,0xce,0xf4,0x67,0xd8,0x1d,0xb7,0x77,0x6d,0x96,0xf4,0x28,0x7a,0x33,0x03,0x97,0x72,0x37,0xd9,0x35,0xcf,0x20,0x28,0xc2 +.byte 0xc4,0xea,0xf9,0x99,0x89,0xe0,0xcc,0x3d,0xec,0x2c,0xbf,0x06,0x78,0x91,0x1b,0x55,0x1b,0x51,0x9b,0xbe,0xf7,0x4a,0xf8,0x9f,0x46,0xab,0xee,0x5d,0x4e,0x29,0x36,0xf3,0xb9,0xa7,0x85,0x9b,0xf7,0xa1,0x9e,0x2a,0xbb,0xb3,0x0a,0x61,0xb5,0x0f,0x79,0xf4,0xe2,0xd2,0x2c,0x15,0xf7,0x4f,0xca,0xa9,0x46,0x25,0x1c,0xdc,0xfa,0x0f,0x9e,0xfa +.byte 0xf5,0xb8,0x54,0x7a,0xe3,0x98,0x3c,0x3b,0x85,0xf8,0xb3,0x7c,0x70,0x40,0x86,0x2a,0x66,0xd1,0x4d,0x83,0x38,0xc2,0x24,0x8e,0x30,0xc0,0x9e,0x54,0x4c,0x7a,0x62,0x9a,0x55,0x8e,0x11,0x02,0xef,0x30,0x08,0x5c,0xf3,0x57,0xa7,0xbe,0x32,0x04,0xab,0xb1,0x3a,0x51,0x6e,0xcd,0x6f,0xc1,0xd8,0xd0,0x7d,0x4f,0x1b,0xa9,0x1e,0x12,0x92,0x94 +.byte 0xd7,0x40,0xa9,0x99,0x70,0x06,0xcb,0x46,0xa5,0xe0,0x77,0xbe,0x6d,0x48,0xab,0x67,0x4e,0xa7,0x0e,0xfe,0x1f,0x53,0x24,0xbc,0x89,0xcb,0x70,0xac,0x05,0xa2,0xf4,0xa3,0x44,0xde,0xcb,0x18,0x95,0x78,0x70,0x0f,0x69,0xf0,0x5e,0xbd,0xe7,0xfc,0xd3,0x17,0x3e,0x18,0xb0,0x2f,0xa6,0xfe,0x82,0x81,0xe7,0x74,0x44,0xfb,0x43,0x5e,0xda,0xf4 +.byte 0xfb,0xfe,0x5c,0xb4,0x3c,0x1d,0xea,0x0d,0x2d,0xdb,0xee,0x1f,0xc5,0xbd,0xb2,0xa0,0x52,0x76,0x9e,0xad,0xfa,0x19,0x37,0xb0,0x15,0x53,0x82,0x25,0x86,0xd9,0xce,0x99,0x84,0x67,0x5f,0x57,0xb2,0x6f,0x99,0xa4,0x56,0xb5,0x01,0x4f,0xdf,0xa2,0xca,0x8c,0x23,0x51,0xd3,0xc7,0x72,0x9b,0x90,0x72,0x29,0x0c,0xca,0x86,0xff,0xc3,0xd9,0x9e +.byte 0x87,0xe4,0x8d,0xc6,0xac,0xba,0xfb,0x73,0xa9,0xcd,0x5d,0x16,0xfc,0x12,0xea,0x30,0xd5,0x7d,0x7b,0x16,0xa6,0x2c,0xeb,0x3c,0x3e,0x46,0x7c,0xee,0x03,0xd6,0x7a,0xe8,0x88,0x1c,0x17,0xa9,0x08,0xe9,0xd5,0x38,0x59,0x54,0x0b,0xb0,0x77,0x1b,0x76,0x09,0x53,0xca,0x38,0x12,0xd1,0xb5,0x2c,0xe3,0xd6,0xa0,0xca,0x9f,0x65,0x56,0xea,0x95 +.byte 0xab,0xc1,0xf4,0x98,0xaf,0x1a,0xe7,0x2b,0x1e,0x8d,0x75,0x43,0x43,0x9f,0x42,0x5c,0x2c,0xa5,0xd7,0x9a,0xcd,0xc2,0xab,0xd9,0x1f,0x1f,0xde,0x8a,0x3e,0xf8,0x0f,0x56,0x8a,0x01,0xde,0x47,0x41,0xd8,0xa0,0xc8,0x32,0x4d,0xa3,0x75,0x80,0x87,0xb1,0x1e,0x05,0x06,0x5e,0x2c,0x9a,0x7b,0xd3,0x22,0xe0,0x53,0x8f,0x4f,0x35,0x5f,0x46,0x3a +.byte 0xb2,0xfe,0x62,0x44,0x54,0x38,0xe0,0x03,0x5e,0xda,0xcb,0x86,0xdf,0xda,0x67,0x66,0x40,0x27,0x97,0xf0,0xc2,0xbd,0xce,0xce,0x37,0xeb,0x47,0xe2,0x56,0x7e,0x54,0xe9,0x51,0xda,0xec,0xd5,0xe6,0xc1,0x69,0x6e,0x4c,0x3d,0x92,0xdc,0xa0,0x51,0xe2,0x2b,0xb8,0x96,0xb6,0xce,0xdf,0x35,0xdb,0xd0,0xd4,0x42,0xe3,0x94,0x89,0x09,0x1b,0xb4 +.byte 0xe2,0x8f,0xfb,0x23,0x62,0x35,0x56,0xc7,0x94,0x40,0xd7,0x2d,0xdb,0x80,0xc9,0xbd,0x4d,0xe3,0x14,0x30,0x44,0x43,0xad,0xeb,0x3d,0x89,0xe9,0x61,0xd7,0x80,0x15,0x59,0xcd,0xda,0x38,0x11,0x3b,0x84,0x14,0x85,0xef,0x55,0xf2,0x01,0x2c,0xed,0x74,0xf5,0x71,0x75,0x0c,0x52,0x0c,0x41,0x86,0xbe,0x84,0xc5,0x89,0x8b,0xa5,0x6d,0xc3,0xfa +.byte 0x2b,0xe5,0xe7,0xe8,0xdd,0xf9,0xe8,0x27,0x08,0x5d,0xdf,0x61,0xdc,0xb2,0xe0,0x8c,0xe8,0xda,0xa8,0x68,0x22,0x51,0x6b,0xdf,0xd0,0x92,0x87,0x6a,0x43,0xff,0xd1,0x9d,0x9a,0x4c,0x03,0xdf,0x3e,0xc1,0x31,0x33,0x6e,0x2a,0x55,0xc1,0x58,0x59,0x69,0x66,0x05,0xd1,0xa7,0xa1,0x3b,0x98,0x1d,0x44,0x74,0xc7,0x7e,0xc0,0x07,0xd9,0x9c,0x87 +.byte 0x5f,0xc3,0x44,0x25,0x7b,0x96,0xbc,0x20,0x5d,0x14,0x08,0x34,0xe9,0xad,0x34,0xa3,0xc3,0x95,0x1a,0xc1,0xd1,0x37,0x43,0x49,0x66,0xff,0x39,0x70,0x27,0xa0,0x2b,0x39,0x9d,0x1b,0x78,0x52,0x55,0x77,0x30,0xe8,0x72,0x65,0x8a,0xc8,0xa4,0xe6,0xb7,0xd6,0x66,0x82,0xa7,0x1d,0xde,0x3e,0xc2,0x23,0x5a,0x8b,0x51,0xe4,0x44,0x03,0xf3,0x89 +.byte 0x10,0xb0,0x9a,0x09,0x5d,0xe3,0xe9,0x4a,0x0b,0xe3,0x86,0x58,0xf8,0xe3,0x1a,0x3f,0x7f,0x42,0xa5,0xd7,0xb0,0x24,0xb7,0xbc,0x1d,0x40,0xe7,0x2f,0x42,0x8c,0xa8,0x3c,0x33,0xee,0x9f,0xaf,0xd1,0x51,0x8e,0x34,0x82,0xc5,0x16,0xef,0xb1,0xa6,0xa8,0x0e,0xae,0xe6,0xc3,0x2f,0xb3,0x06,0xd4,0x4c,0xec,0xee,0x9e,0xff,0x88,0x82,0x4b,0xb8 +.byte 0xc5,0xef,0x94,0xe2,0x68,0x48,0x23,0xa2,0xc8,0xe4,0xdb,0x33,0xf9,0xee,0x73,0xc2,0xe6,0xa1,0x64,0xf9,0xf6,0xab,0x5a,0xdc,0xa5,0xb3,0xd8,0xae,0xf4,0x1f,0x47,0xfe,0xa0,0xee,0xf5,0xee,0x41,0x30,0xa6,0xbe,0x34,0x2c,0x1a,0x24,0x8a,0x80,0xb1,0x79,0x7e,0x2c,0xc0,0x65,0x68,0x46,0xae,0x0a,0x01,0x77,0xce,0xa2,0x5f,0xc3,0x00,0x8f +.byte 0xd4,0x0f,0xbe,0xbf,0x81,0x20,0x4e,0xb8,0x21,0x5f,0xfa,0xb2,0xf2,0x02,0x83,0x41,0xa8,0xf1,0xe8,0x2c,0x7e,0x0e,0xe6,0xf0,0x6e,0xd5,0x7b,0xcb,0x4e,0xed,0x06,0xc4,0x18,0xfb,0x0e,0x0d,0x8e,0x22,0x8a,0x40,0x4d,0x66,0xa5,0x0c,0x74,0xf3,0x9e,0xd9,0x90,0xf8,0x71,0xe4,0x92,0x05,0x3d,0x2d,0xa0,0xed,0x42,0x88,0x18,0x9a,0xc7,0xe4 +.byte 0x41,0x5d,0xde,0x44,0x2e,0x26,0x30,0xfe,0x51,0xa8,0x91,0xa3,0xa6,0xfd,0x3e,0x04,0x7f,0x3a,0xa9,0x1c,0x21,0x98,0xab,0xaa,0x39,0x9d,0xe4,0x51,0x75,0xeb,0x90,0x6b,0xab,0x11,0x89,0xa9,0x22,0xa8,0xc5,0x92,0x16,0x51,0xe1,0x77,0x09,0x53,0x7f,0xb6,0x80,0x4b,0xf5,0xf5,0xa2,0x0e,0x36,0x24,0x7f,0xe7,0xcc,0x67,0xfb,0x2c,0x6e,0xc2 +.byte 0x16,0x47,0x41,0xc2,0x77,0xf4,0xcf,0x49,0x37,0x17,0x67,0x34,0x14,0x92,0x7d,0x0f,0x14,0xe8,0x4b,0x4c,0xc3,0xbb,0x78,0xf7,0xa0,0x59,0xbe,0x06,0x10,0x38,0xe6,0x2c,0x08,0x15,0xba,0xc6,0x49,0x38,0x9a,0x91,0x2b,0x4d,0x82,0x42,0x0e,0xe4,0x02,0xef,0x2b,0xa2,0x06,0xcc,0x3a,0x3c,0xb9,0xc5,0xb5,0x71,0x1e,0x17,0x5d,0x65,0x35,0x91 +.byte 0x89,0x54,0x97,0xa8,0x7b,0x02,0x24,0xf9,0xdb,0xb5,0x52,0xf7,0xd0,0xa0,0x42,0x48,0x01,0xf4,0x47,0x7c,0x84,0x7c,0x8a,0xb4,0xf4,0x30,0xec,0xb9,0x21,0x44,0x87,0xb2,0x96,0xa4,0x3b,0x0d,0x93,0x26,0x09,0xc8,0xfa,0x28,0x6f,0x09,0xb7,0x03,0x85,0x66,0x21,0x2d,0xf1,0xaa,0x3f,0x0b,0x59,0x15,0xfe,0x8b,0x2b,0xe0,0x81,0x38,0x63,0x70 +.byte 0x09,0x37,0x38,0x62,0x04,0x8e,0x3f,0x23,0x65,0xf8,0xf7,0xc0,0x30,0xb8,0x04,0xb4,0x17,0xd7,0x21,0xcc,0x8b,0x31,0xd3,0x7b,0x11,0xea,0xc5,0x51,0x01,0x93,0x5f,0xe3,0xf3,0x1e,0x0d,0x41,0x52,0x2a,0xfd,0x27,0x02,0x00,0x58,0x0d,0x1f,0x16,0xd7,0x50,0x09,0xea,0x3f,0x9f,0x72,0xae,0x7a,0x79,0x4b,0x69,0x61,0xfc,0xac,0x5c,0x4d,0x6a +.byte 0x65,0x5d,0xa5,0x67,0x76,0xe4,0x24,0x3f,0xa0,0x6f,0xf6,0x60,0xd2,0x70,0x8e,0x2e,0xbe,0xf9,0x8b,0xab,0x22,0xc8,0x9c,0x5b,0x26,0xc5,0x75,0xeb,0x96,0xa2,0x4f,0xdf,0x6c,0x05,0x9a,0x15,0xef,0xbf,0x3e,0x35,0x6d,0x8d,0x48,0xa4,0x33,0xc2,0xe8,0x3b,0x89,0xe4,0x0c,0xb2,0x9a,0xc6,0x89,0x52,0xba,0xc7,0x2a,0xa5,0xfb,0xe5,0xde,0x06 +.byte 0xbd,0xc3,0x4f,0xe8,0xa9,0x9d,0x36,0xa5,0xcc,0x90,0xcd,0x68,0x49,0x52,0x6e,0x9a,0x85,0xd4,0x1b,0xe5,0x3f,0x54,0xc8,0xb4,0x7a,0x76,0xbf,0xa8,0xf4,0x25,0x05,0xeb,0x43,0x0c,0x2b,0x1c,0x59,0x5b,0x51,0x7f,0xd5,0x13,0x54,0x37,0x44,0x37,0x2f,0x79,0x1c,0x1f,0x18,0x57,0x60,0xab,0xf7,0xcc,0x5d,0xd5,0xdd,0x69,0xab,0x7f,0xc7,0x9d +.byte 0x7f,0xd7,0x6a,0xdc,0x34,0x3d,0x6e,0x2c,0x1e,0xb8,0x74,0xef,0xec,0x14,0x83,0x98,0x20,0x85,0x8a,0x95,0x93,0x26,0xed,0xbb,0x7d,0xfe,0x63,0xaa,0x20,0xbb,0x40,0x7b,0x35,0x1d,0xe5,0x64,0xc0,0x64,0x83,0x90,0x59,0xb4,0xae,0xf7,0xfe,0x14,0xb2,0xaa,0x72,0xf7,0x34,0x61,0xe0,0x61,0x06,0xb3,0xdc,0x09,0x5f,0xe1,0x57,0x65,0x83,0x8a +.byte 0x6d,0x46,0x54,0x8f,0xbf,0x38,0x12,0xf5,0xa3,0xfc,0x7b,0x90,0x4f,0x30,0xed,0xc1,0xab,0xb2,0x6e,0xee,0x7c,0x5e,0x35,0x70,0x80,0xb0,0xae,0x93,0xdc,0x4e,0x8f,0x6c,0x37,0xef,0xc9,0x4c,0x3a,0x41,0x14,0x91,0x99,0x0d,0x48,0xbe,0x5e,0x9b,0xc5,0xa6,0x4d,0x07,0x0d,0xd5,0xe6,0x5d,0x26,0x6b,0xa0,0xf3,0xb2,0x28,0x15,0x57,0xdb,0x7b +.byte 0x8e,0x6b,0x88,0xc3,0x81,0xb6,0x16,0xd1,0x3c,0xd0,0x2d,0x5a,0x23,0x35,0x8e,0xb0,0x8b,0x5c,0x99,0x6a,0x7a,0x55,0xb1,0xf9,0x45,0x97,0x94,0x05,0x6e,0x58,0xd4,0x53,0x8d,0x73,0x43,0x02,0x68,0xdf,0x7c,0x37,0x1a,0x6b,0x71,0x04,0xa0,0x31,0x77,0xbc,0xe0,0x16,0x5a,0x2a,0x9a,0xb2,0x40,0xe4,0xbb,0xd0,0xfd,0x35,0xcb,0x7f,0xf4,0x13 +.byte 0x0f,0xb5,0x93,0x9a,0x7d,0x50,0xf8,0xfe,0x56,0x34,0x83,0x20,0xce,0x3d,0x02,0x2e,0x0b,0x95,0x76,0x88,0x47,0x8c,0x75,0x51,0x14,0x52,0x49,0xbc,0xed,0x66,0x0e,0x81,0x65,0x5e,0x64,0xfb,0x45,0x59,0x3d,0x2b,0xd6,0x3a,0xc6,0xfd,0x50,0xe4,0xeb,0x0c,0x68,0x38,0x0f,0xdd,0xa2,0xdc,0xaa,0x26,0xf5,0x7b,0x40,0x6a,0x90,0xf8,0x08,0x2c +.byte 0xe8,0x8f,0x8e,0xc1,0xf2,0x6b,0x87,0xeb,0x7a,0x02,0x9e,0x26,0x3e,0x6b,0xb9,0x71,0x2e,0x6f,0x26,0x20,0xa9,0xc0,0x7c,0xe5,0x6c,0x6b,0xd4,0xc4,0x7b,0x54,0x8e,0x4a,0x7a,0xef,0xfc,0x03,0x02,0x1d,0x6a,0x16,0x99,0x35,0x12,0x49,0xba,0x86,0x37,0x7a,0xb0,0x8d,0x58,0x6f,0x1c,0xba,0xa9,0x5d,0x93,0xdf,0x98,0x50,0x7e,0xea,0x0a,0x88 +.byte 0x1a,0xd4,0x63,0x91,0x23,0x43,0x43,0x17,0x2e,0xe6,0x04,0x95,0x96,0xa8,0x2b,0xb4,0x9e,0x91,0x6c,0x13,0x52,0x8c,0xbf,0x7d,0x50,0xfc,0x79,0xef,0xa1,0x3e,0x90,0xba,0xac,0xd1,0x0d,0xb0,0x4d,0xd5,0x7a,0xc7,0xbd,0x82,0xb7,0x03,0x9c,0x0b,0xbc,0xa7,0x3c,0x05,0x8f,0xbd,0x0d,0x7f,0x80,0xeb,0xe9,0xbd,0x8f,0xdc,0xcd,0x86,0x23,0x26 +.byte 0xb0,0xa4,0xdc,0x63,0xef,0xad,0x61,0x53,0x7e,0x23,0x34,0x0d,0xd9,0x75,0x7c,0xa7,0x57,0xba,0x28,0x0c,0x82,0x7f,0x68,0xe5,0x24,0xdc,0x23,0x99,0xcd,0x6f,0x03,0x59,0x4f,0x35,0x47,0xc4,0x11,0xc0,0x0c,0x2b,0x16,0x94,0xb8,0x28,0xf2,0x0a,0x91,0x2e,0x1c,0xde,0x75,0x50,0x52,0x00,0x0a,0x92,0x80,0xca,0x39,0x3a,0xdf,0x16,0xb7,0xe2 +.byte 0xbd,0x98,0x7b,0x70,0x48,0x85,0x6d,0x48,0xa0,0x1b,0x0a,0xbb,0xa8,0xb6,0xca,0x9c,0x4e,0xda,0x0a,0x17,0x0b,0x30,0xf5,0xa2,0x9b,0x5a,0x89,0xf4,0x53,0x89,0x38,0x34,0x2b,0x7d,0x14,0x04,0x44,0xa3,0x8f,0x70,0x29,0xa5,0x3e,0xdd,0x5a,0x61,0xa1,0x04,0xac,0xd8,0xd3,0xec,0x42,0xc4,0xd9,0x2c,0x13,0x80,0xf8,0xc9,0xec,0x54,0xa7,0xa0 +.byte 0xe6,0x37,0x04,0x38,0x5f,0x1e,0x0b,0xfb,0x38,0x06,0xb9,0xe2,0x05,0x12,0x12,0xa2,0x28,0xff,0x12,0xae,0x44,0xd8,0x0d,0x2c,0x5a,0x8f,0xfb,0x1d,0x98,0x69,0x85,0x69,0x99,0xc0,0x63,0xc5,0x88,0xa7,0x2d,0x56,0x76,0x32,0x23,0x4c,0xf7,0x29,0xd6,0x3e,0x45,0xfa,0xd7,0x61,0xf4,0x9a,0xa6,0x9e,0x4a,0xe7,0xe7,0xf9,0xbf,0x1f,0x09,0x82 +.byte 0xbe,0x36,0xa0,0xdd,0x91,0x47,0x3b,0xbc,0x52,0xf2,0xc2,0x04,0x96,0x85,0xb6,0x93,0xac,0x99,0x94,0xbe,0xfd,0xe6,0x53,0x9f,0x75,0xab,0x38,0xdd,0x81,0xc0,0x79,0x25,0xcd,0x73,0x72,0x5b,0x4d,0xc0,0xba,0xa9,0x18,0xaa,0x76,0x51,0x15,0xef,0xb9,0x22,0xdd,0x5f,0x22,0x62,0x6c,0x36,0xf6,0xc0,0x72,0x34,0x01,0x7a,0xaf,0xe2,0x87,0x1b +.byte 0x5f,0x33,0x9c,0xd5,0xe2,0x81,0x03,0xbe,0x4e,0xac,0xcc,0x17,0xc5,0xc6,0xf8,0x0f,0x24,0xe0,0x26,0x56,0x8a,0x20,0x2e,0xe4,0x05,0xc8,0x0f,0x89,0x24,0x0e,0xd4,0xb7,0x07,0xd1,0x99,0x8c,0x55,0xfd,0x75,0xc1,0xdb,0xaa,0xd1,0xd2,0xa6,0xf2,0xf0,0x3c,0xae,0x62,0x0e,0x1f,0xaa,0xc9,0xa5,0x16,0x09,0x2c,0xc0,0x61,0x55,0x72,0x70,0x63 +.byte 0x22,0xb6,0x41,0xa5,0x08,0x34,0x6a,0x1b,0xfc,0x42,0x81,0xe7,0x25,0x98,0xcf,0xba,0x18,0xb0,0x36,0x90,0x72,0x65,0x75,0xf3,0x57,0x68,0xd0,0x86,0xe4,0xaf,0x33,0xb6,0x2b,0xef,0x96,0x97,0x17,0x42,0x6b,0x8e,0x19,0xaa,0x4b,0x9d,0xc7,0x73,0x34,0x5f,0x41,0x24,0x12,0xfb,0x66,0xa2,0x1e,0x91,0x41,0xc2,0x78,0x08,0x66,0xc4,0xb2,0x86 +.byte 0x67,0x70,0xe6,0x96,0x76,0x8d,0xa4,0x69,0x6f,0xe5,0x35,0x8b,0x20,0x3d,0x6a,0xcb,0x65,0x7b,0x82,0x7b,0xf6,0x2d,0xd8,0xd0,0xda,0x69,0x8b,0xcd,0xdf,0x15,0xf6,0x3a,0x2c,0xfe,0xc7,0x84,0x20,0x11,0xcc,0x18,0x4f,0xc7,0x2e,0x1c,0x46,0x41,0x6b,0x91,0x79,0xa0,0xbb,0xf4,0x48,0xd7,0x0c,0x9a,0x88,0x01,0xda,0xa1,0xd1,0x8f,0x27,0x49 +.byte 0x9d,0xa0,0x3f,0x5a,0xc2,0xf7,0x26,0x9b,0xe5,0xff,0xa4,0xcb,0x86,0x32,0xb3,0x3c,0xd5,0xe5,0x7c,0xbb,0x5e,0xfe,0x3d,0xcf,0x60,0x1c,0x16,0x8e,0x0c,0xc4,0xa9,0xf2,0xb2,0x42,0x1d,0x13,0xb0,0xa8,0xff,0x90,0xbc,0xd9,0x9a,0x6d,0x78,0x7a,0x46,0x1a,0xa8,0x35,0x4e,0xa4,0x79,0xd5,0xb4,0x36,0x47,0x62,0x3c,0x0e,0x23,0x56,0xca,0xa2 +.byte 0x60,0xe6,0xca,0xf6,0xc3,0xd6,0x7c,0x5d,0x54,0x9c,0x0c,0xfa,0x9a,0x0f,0x3a,0x8c,0x64,0x52,0xdb,0x62,0x5e,0x93,0x82,0xef,0x9e,0x8d,0x30,0xa5,0xe7,0x3d,0x52,0x11,0xd4,0x93,0xb1,0x77,0x8f,0xee,0x54,0x9c,0x80,0x47,0xa9,0x21,0xa8,0xf7,0x16,0x4b,0xbb,0xab,0x75,0x52,0xed,0x0c,0x85,0xf8,0x04,0xf4,0x80,0x08,0x4a,0xb5,0x2d,0x2d +.byte 0xd8,0x98,0x57,0x24,0xd5,0xc8,0x77,0xa0,0xd8,0xb5,0xb1,0x83,0x92,0xb4,0xc7,0x42,0x36,0xd1,0xa5,0xd6,0xbd,0x89,0xc6,0x76,0x31,0x92,0x31,0x67,0x2c,0xa4,0xb2,0x2b,0xcf,0x94,0x20,0x6a,0x17,0x63,0xb9,0x76,0xac,0x9c,0x1c,0x95,0x3e,0x57,0xf8,0x87,0x0d,0xef,0x36,0xcd,0x87,0xd1,0x58,0x2c,0x9a,0x5e,0x54,0x0e,0xac,0x97,0xbd,0x15 +.byte 0xc4,0xdb,0xea,0xd3,0x21,0x05,0x2d,0x78,0xce,0x4c,0x60,0xf3,0xf8,0xeb,0xd9,0x19,0x89,0xb0,0x83,0xc0,0xe4,0x42,0x08,0x5c,0x1a,0x1c,0x53,0xf3,0x1e,0x5a,0x28,0x92,0x0d,0x32,0xbe,0x4a,0x9a,0x70,0x78,0x93,0xc1,0x66,0x81,0xda,0xe7,0x3d,0x05,0xc5,0xaa,0xdc,0x51,0x6b,0xaf,0x67,0x4d,0x18,0xfe,0x29,0xe0,0xfa,0x5c,0xe5,0x9a,0x18 +.byte 0x7f,0x8f,0xaa,0x21,0xa5,0xd0,0x8b,0x62,0x32,0x6b,0x93,0x02,0x19,0x62,0xd3,0xd6,0x74,0xea,0x83,0xdb,0x6c,0x57,0xe3,0x1f,0x1f,0x90,0xd0,0x22,0xf7,0x9a,0x4a,0x14,0xf4,0x8a,0xb3,0x86,0xa5,0x4c,0x1e,0xdf,0x49,0xa5,0x78,0x30,0x5e,0xf0,0x9a,0x69,0x0d,0xaa,0xe9,0x47,0x01,0xae,0x51,0xcf,0x32,0x4c,0xec,0x03,0x08,0xe7,0xcb,0x35 +.byte 0x59,0xd2,0x48,0xd4,0xfa,0x6a,0x45,0x6b,0x66,0x1f,0xb8,0x1e,0x45,0x85,0xef,0x14,0x25,0x34,0x48,0x50,0x59,0xf3,0x76,0x09,0x32,0xf5,0xe4,0xa8,0x98,0xb0,0x9a,0x70,0xec,0x0a,0x17,0x87,0xcf,0x6d,0x96,0x7d,0x50,0x5e,0x3a,0xff,0x57,0xa7,0xaf,0x04,0x0d,0xdc,0xcc,0xad,0xe3,0x09,0xd3,0x92,0xab,0xd8,0x3a,0x61,0x1f,0x9c,0xc4,0x36 +.byte 0x3b,0xf3,0xf6,0x87,0x43,0xea,0xc8,0xff,0x29,0x19,0x9e,0x87,0x44,0xc7,0xe5,0x5c,0x43,0x30,0x9a,0xb2,0xd8,0x47,0x4a,0x87,0xcc,0xc7,0x8e,0x99,0x32,0xdd,0x3c,0x37,0xda,0xa0,0x39,0x04,0x55,0xca,0xcf,0x2f,0xce,0x8b,0x22,0x35,0x2c,0x29,0x89,0xef,0x5c,0x05,0x82,0x55,0xf3,0x8d,0x64,0x7f,0x69,0xf7,0x3d,0x43,0x27,0xf3,0x4c,0xd7 +.byte 0x43,0x89,0x47,0xd5,0x0b,0x01,0x1b,0x17,0x6c,0x7e,0x63,0x18,0x87,0x8b,0x8f,0x20,0x0d,0xa4,0x1e,0xa5,0x3b,0xf1,0x5c,0xe5,0xc8,0x23,0xd4,0xee,0x79,0x3e,0xd1,0xbc,0x83,0x30,0x03,0x64,0x80,0x7e,0xda,0x13,0x7c,0x52,0x88,0xc1,0x7c,0xa7,0x8a,0x5d,0x8d,0x7b,0x57,0x4e,0x59,0x97,0x83,0x52,0x03,0x04,0x6b,0xd2,0xf3,0xff,0x1c,0x4e +.byte 0x3b,0xae,0x70,0x61,0x3b,0x8b,0xaf,0x56,0x3d,0x28,0x73,0x24,0x39,0x4b,0xb8,0x6e,0x89,0x28,0xe6,0xc8,0x5c,0xe9,0xf8,0xec,0x8f,0xf7,0x75,0x1a,0x13,0xc1,0x8e,0x53,0x4e,0xe5,0xef,0x37,0xce,0xa1,0x54,0xca,0xcc,0xf5,0x01,0x29,0x2a,0x8f,0x00,0x1c,0xde,0xcd,0x5e,0x24,0x0b,0xa5,0x94,0x0c,0x8a,0xab,0x54,0x1e,0x80,0x2a,0x0d,0x84 +.byte 0x38,0x4c,0x17,0xea,0x84,0x07,0x9c,0xbd,0x85,0xd8,0x1b,0x57,0x6a,0xde,0xb3,0x86,0xa3,0xf8,0x6d,0x03,0x3e,0xf1,0x37,0xae,0x7d,0x02,0x33,0xc5,0x7b,0xf6,0x64,0xdb,0x3e,0xb0,0x48,0xda,0x49,0xec,0x89,0xb4,0x83,0xff,0xe1,0x6f,0x9a,0x7e,0x0a,0xda,0x6e,0xec,0x70,0x0b,0x51,0xac,0x82,0xac,0xb8,0xce,0x16,0xe7,0x47,0xab,0xe8,0xc7 +.byte 0x56,0xd1,0xab,0x73,0x72,0x5c,0xe7,0x9e,0xb8,0x77,0xa7,0xc1,0x47,0x9c,0x4e,0x16,0x68,0xce,0x21,0x23,0x2d,0x6c,0xcf,0x79,0xd6,0xd4,0xdf,0x74,0x30,0xb8,0x0f,0x60,0xea,0xbf,0x39,0x77,0x45,0xdc,0xaf,0x25,0xbd,0xc5,0x8d,0x0b,0x44,0x21,0xc1,0xc1,0x2e,0x54,0x2a,0x32,0x6c,0xea,0x51,0xe0,0x7d,0xa8,0x09,0x94,0x2f,0x4e,0xfe,0x27 +.byte 0xe8,0x63,0xfb,0x71,0xca,0x01,0x7d,0xc9,0x70,0xd8,0xe4,0x82,0xbf,0x3f,0xea,0x64,0x5e,0xa9,0x84,0x1d,0x2c,0xfd,0x8a,0x7d,0x33,0x73,0x5c,0x82,0xbe,0x9e,0x46,0xfc,0x39,0x5e,0x38,0x2a,0x20,0xd9,0xa9,0x20,0x46,0x23,0xc1,0x8b,0x0a,0x9c,0x42,0xb6,0x50,0x9f,0xc8,0x7d,0x4a,0x85,0x98,0xed,0x92,0x13,0xd3,0xd6,0xe6,0x6d,0x50,0x6e +.byte 0x93,0x63,0x41,0xa3,0x63,0x97,0x52,0xe3,0xaf,0x09,0xe1,0x40,0x12,0x41,0xed,0xb3,0xc5,0xb8,0x9f,0xc1,0xf2,0xd2,0xe6,0x16,0x94,0x97,0xdb,0xae,0xdb,0xd4,0x1f,0x5a,0x2f,0xf1,0xb1,0x22,0xf6,0x60,0xa4,0x0e,0xd8,0x2f,0xf7,0xf7,0x3f,0x6c,0x7d,0x73,0xe3,0x1d,0x99,0x04,0x7f,0x4f,0x70,0x2a,0x8c,0x43,0x80,0xa3,0xd0,0x25,0x75,0xd8 +.byte 0xb6,0xc8,0x90,0xa2,0x26,0xee,0xba,0xc5,0x1a,0xdc,0x1f,0x81,0x65,0x54,0xc6,0x57,0x6e,0xa2,0x03,0x32,0xf5,0x14,0xb2,0xdd,0x4d,0x21,0xaa,0xb9,0x78,0x4f,0x76,0xab,0xbe,0xfe,0x5d,0xc6,0xaf,0xed,0x6f,0xf9,0xaa,0x31,0x21,0x08,0xa4,0x6e,0xfb,0x78,0xdc,0xed,0x0c,0x05,0xff,0x1e,0x60,0x38,0x60,0x94,0xa9,0x92,0xa7,0x07,0x6e,0x6f +.byte 0x6d,0x89,0x8a,0x73,0xfb,0xaf,0x01,0x34,0x7d,0x7d,0x33,0x76,0xff,0x1f,0x6b,0x79,0x5e,0xff,0x50,0x14,0x80,0x7d,0x55,0x0e,0x2d,0xc3,0x77,0x85,0x30,0x20,0xf6,0xc8,0xc7,0xb7,0x73,0x1b,0xd1,0x87,0x69,0x44,0xeb,0x02,0x5e,0x45,0x66,0x6f,0x28,0x00,0x1f,0xf8,0x58,0x93,0xe5,0x21,0xbc,0x19,0x8d,0x72,0x19,0xaa,0x9a,0xbb,0xc6,0x47 +.byte 0xe6,0x0b,0xe4,0x76,0x13,0xc7,0xc4,0x1b,0x9d,0x85,0xba,0x17,0xb6,0x30,0x2a,0xdb,0x7c,0x36,0xd7,0xd8,0x8b,0x9c,0x99,0x92,0x64,0x03,0x4f,0xd4,0x1f,0x04,0x2e,0x45,0x34,0x55,0x92,0x99,0x77,0xb8,0x45,0xce,0x59,0x22,0x3c,0x6e,0xe5,0x18,0xb0,0x83,0x42,0x42,0x75,0x1c,0x34,0x0f,0x2e,0x59,0x06,0x94,0x17,0xea,0xc3,0xdb,0x0b,0x2f +.byte 0x44,0x97,0x54,0xe8,0x76,0xd3,0x25,0x24,0xe9,0x21,0x4f,0xd7,0x01,0x7d,0xbe,0x90,0x8a,0x0a,0x7d,0x4e,0x91,0x5f,0x4c,0x32,0x83,0x42,0x55,0x95,0x3c,0x7a,0x3e,0x46,0x8a,0x5d,0x0c,0x05,0xcd,0x0b,0xf6,0x3e,0x4d,0xf3,0x55,0xea,0x42,0x3e,0x19,0x0e,0xda,0xd4,0x22,0x88,0xe2,0x29,0x06,0x9e,0xea,0x1c,0x27,0x96,0x7f,0x3a,0x8a,0x28 +.byte 0x2f,0x7d,0xa2,0x65,0x37,0xae,0xb6,0x6a,0x59,0x41,0x19,0x73,0x91,0x64,0x77,0x4e,0x5a,0x1a,0x85,0x9f,0xc5,0xb0,0x85,0xc1,0x96,0x47,0x69,0x9c,0x36,0x70,0x36,0xa3,0x2e,0x1a,0x7d,0x11,0x59,0x55,0xec,0x4c,0x49,0xa1,0x86,0x3c,0x3d,0x24,0xb8,0x7a,0x84,0xca,0x4c,0x3f,0x7e,0x81,0x95,0x39,0x41,0xfe,0xc4,0x74,0xe5,0x89,0x7e,0xdc +.byte 0x86,0xd2,0xdb,0x8b,0xb8,0xa2,0xbb,0x15,0x64,0x89,0xf9,0x00,0x7d,0x56,0xec,0x8b,0xc8,0x05,0xcd,0x76,0x6c,0xcb,0xaf,0x7e,0xd2,0xdd,0x67,0xb3,0x99,0x16,0x63,0xf2,0x6d,0x49,0x7d,0xeb,0x67,0x24,0x98,0xf1,0x28,0xa3,0xb2,0x14,0xfc,0x95,0xf6,0x55,0xa0,0xb5,0x8c,0x26,0x2f,0xc6,0x08,0x49,0x57,0x4c,0x20,0xbc,0x48,0xab,0x24,0xef +.byte 0xe9,0xab,0x6b,0x77,0x4d,0x3b,0x61,0x84,0x68,0x67,0x72,0xc2,0xcf,0xab,0x8e,0xac,0x39,0xec,0x43,0x03,0xbb,0x4f,0x32,0x7d,0x7d,0x51,0x69,0x30,0xee,0x4f,0xd0,0xb9,0xa5,0x22,0xdd,0x47,0x06,0xad,0xac,0x62,0x20,0xff,0x7b,0x8c,0x90,0x91,0xb3,0xd8,0x89,0xd3,0xea,0x81,0xdc,0xca,0x31,0xc3,0x65,0xca,0x4c,0x50,0x0a,0x85,0xf7,0xaf +.byte 0xe3,0x67,0x57,0x53,0x1d,0x4e,0x42,0x17,0x2d,0x14,0x80,0x29,0x09,0x2b,0x48,0x45,0x43,0xb9,0xad,0x1f,0xb7,0x2d,0xab,0xfa,0x6a,0x1b,0x3c,0x7d,0x76,0xd7,0x36,0x20,0xb0,0xd3,0xc0,0x5e,0xc7,0x20,0x06,0x0c,0xa9,0x6a,0xb2,0x67,0xad,0x91,0x49,0xfc,0x4d,0xb2,0x15,0x61,0x61,0xfa,0x33,0x6c,0x94,0x92,0x58,0xef,0x46,0x82,0x9c,0x04 +.byte 0x52,0x21,0x28,0x08,0xb4,0xa9,0xd4,0x2e,0xd9,0x8c,0x93,0xd0,0xd8,0x4f,0x33,0x1d,0x0b,0x7e,0x07,0x12,0x40,0x64,0x3d,0xa2,0x8f,0xa3,0x96,0x45,0x0e,0xfc,0x9b,0x55,0x5f,0x3c,0xa2,0x57,0x3e,0x51,0x40,0x69,0xdc,0x7a,0x51,0xd2,0x3b,0x79,0x2f,0xd2,0x01,0x18,0xbf,0xd5,0xd2,0xd1,0x0e,0x08,0xcf,0xac,0x07,0x4d,0xd1,0x92,0xc7,0xca +.byte 0x92,0x75,0x0b,0x80,0x29,0xf1,0x46,0x24,0xba,0x47,0x6b,0x4a,0x64,0xfb,0x31,0x69,0xe9,0x40,0x0d,0x69,0x50,0xd0,0xdf,0xf8,0xcb,0x6a,0xe8,0xd4,0xc2,0xbd,0x0b,0x23,0x00,0xe0,0x29,0x0a,0x0a,0x8e,0x19,0xec,0xa9,0x14,0xe4,0x5d,0x4c,0x30,0xc9,0x85,0x42,0xd6,0x9f,0x83,0x8f,0x2a,0x5b,0x22,0x37,0xe4,0x71,0x3b,0x19,0x86,0xd4,0xda +.byte 0xb5,0x81,0x8e,0x84,0x57,0xcd,0x13,0x64,0xc3,0x23,0xfd,0x91,0x8a,0xe4,0xb9,0x32,0x12,0x17,0x02,0xa6,0x8d,0xec,0x44,0x9d,0xa5,0x7c,0x96,0x14,0xd1,0xd5,0x93,0x02,0x0c,0x9d,0xfc,0x26,0xa0,0xd2,0x41,0xaa,0x75,0xe8,0x82,0x6f,0x47,0x1d,0xe8,0xcf,0x94,0xe3,0x35,0xa9,0x76,0x1e,0xdb,0x92,0x5f,0x32,0x49,0xf4,0xd5,0x59,0x9c,0x4e +.byte 0xf7,0x89,0xda,0x23,0x7f,0x46,0x0e,0xfc,0xaf,0x1c,0x6f,0xcc,0x59,0xa5,0x43,0x04,0xbf,0x55,0xab,0x7d,0x36,0xa3,0xa5,0x03,0x7f,0xdf,0x33,0x6c,0x6d,0xd0,0x53,0xaa,0xef,0x54,0xc1,0x62,0xa0,0xd6,0x3a,0x67,0x87,0xe3,0x76,0x17,0x45,0xbe,0x7f,0x55,0xc8,0x8b,0xe8,0x1c,0xa8,0xe6,0xa6,0xb2,0xbf,0xe5,0x45,0xc0,0x88,0x22,0x36,0xa0 +.byte 0xec,0x21,0xdc,0x3e,0x6b,0xd2,0xc7,0xdf,0x5b,0xa4,0x32,0x28,0xca,0x23,0xe1,0x50,0x55,0x72,0x59,0x28,0x1c,0xf7,0x93,0x91,0x07,0x3c,0x4e,0x81,0x20,0x58,0x9b,0x07,0x38,0x37,0x68,0x2c,0x29,0xba,0x20,0x11,0xa9,0xa0,0x29,0x65,0x57,0xb1,0xe3,0xb1,0xfb,0xe2,0x70,0xee,0x1f,0xcd,0xf5,0x61,0xea,0x7a,0x08,0xb4,0x1e,0xfe,0xe7,0x4d +.byte 0x32,0xa0,0xfd,0xb4,0x52,0xa1,0x4b,0x67,0xba,0x5e,0x90,0xe7,0x56,0xec,0x06,0x03,0xb6,0xe6,0xc6,0x98,0xa1,0x41,0xf4,0xaf,0xde,0xe2,0x67,0xef,0xaa,0x05,0x97,0xc5,0x80,0x32,0xd0,0x43,0xc2,0x02,0x7a,0xcc,0x4c,0xdd,0xe9,0x1e,0xd0,0x4f,0xad,0xf3,0x4b,0x2c,0x5e,0xb8,0xd8,0x84,0xc2,0x43,0xc7,0xa9,0x86,0x4d,0x10,0xae,0xb7,0xe3 +.byte 0x5c,0xd5,0x2a,0xba,0x3b,0xd3,0x7b,0x5d,0xc8,0xe0,0x67,0x87,0xbe,0xbf,0x71,0x4e,0x22,0x68,0x12,0x53,0x95,0x73,0x5c,0x30,0x7b,0x2b,0xfd,0xc1,0x3c,0xfc,0xc4,0x0f,0xdd,0x5b,0x3e,0x1b,0x72,0x71,0xa6,0xe3,0x1f,0x2d,0x51,0xe2,0x61,0x3d,0xa0,0x60,0xc2,0x6b,0x41,0x8f,0x94,0x83,0x29,0xa3,0xb6,0xa7,0xc7,0x11,0x8f,0x1c,0xb5,0x19 +.byte 0x66,0x44,0xc7,0x05,0x58,0x83,0x28,0x69,0x0c,0xb6,0x65,0xe5,0x93,0x1c,0xb1,0xf6,0xf9,0xea,0xda,0x84,0x26,0x8e,0xa2,0xbb,0x9b,0x55,0xd3,0xbc,0x42,0x56,0x8f,0xce,0x6e,0x74,0x40,0xf2,0x02,0xa6,0x22,0x22,0x6e,0x20,0x0e,0x4b,0x8b,0x15,0xa5,0x04,0xf0,0xe0,0x7b,0x27,0x0a,0x38,0xe3,0x99,0x04,0xd0,0x5b,0x64,0xd2,0x04,0x92,0x61 +.byte 0x57,0x74,0xbc,0x1e,0x98,0x01,0x4b,0x2f,0x46,0x56,0x1c,0xeb,0x49,0x2d,0x66,0xac,0x85,0x96,0x48,0xfd,0xa1,0xf0,0xf5,0xc0,0xdb,0x7a,0xf2,0x0b,0x57,0x86,0xac,0x4c,0x6a,0x02,0x97,0x13,0xef,0x08,0xf6,0x18,0xe1,0x5c,0xb3,0x18,0x3d,0x70,0xc0,0x76,0x5e,0xd0,0xb8,0x44,0x32,0x25,0x75,0x62,0xa2,0x80,0x78,0x8c,0xc4,0x2a,0x84,0xbc +.byte 0x51,0xd4,0xee,0x44,0x48,0xe5,0xc4,0x48,0xbf,0xc0,0x27,0xc1,0x77,0x25,0xf5,0x59,0x6b,0x60,0xae,0xa5,0x42,0xfe,0xc3,0x06,0x91,0xe3,0xdb,0xa9,0x4b,0xe2,0x73,0x95,0x1f,0xf6,0xb6,0x66,0x71,0x63,0xb3,0x14,0x4a,0x3d,0x36,0x84,0xbe,0x2a,0x7c,0x7c,0xba,0x0e,0x8d,0x9a,0x73,0x52,0x21,0x89,0x02,0x8f,0x94,0xa5,0x9a,0x11,0x2e,0x6e +.byte 0x78,0xf7,0x07,0xf8,0xb1,0x42,0x96,0x06,0x78,0xf0,0x53,0x86,0xec,0x2b,0x1f,0xa7,0x84,0x79,0x37,0xc7,0x61,0x83,0x8e,0x62,0x65,0x49,0xdd,0xfe,0xee,0x97,0x70,0xa2,0x73,0xb5,0x85,0xaf,0x10,0xed,0xb8,0x74,0xec,0x42,0xd0,0x14,0x47,0xa6,0x90,0x7c,0x07,0x22,0xb4,0x4e,0xfc,0x12,0xa1,0x9d,0xd4,0x73,0x8f,0x6a,0x55,0xf8,0x56,0x25 +.byte 0xdb,0x9b,0xe8,0x10,0x87,0x7a,0x4b,0x42,0x9c,0xbb,0x6e,0xf1,0xd7,0x1d,0xf4,0x07,0x31,0x9c,0x94,0x3a,0xb6,0xad,0x4b,0xf4,0x57,0x3d,0x2f,0xba,0x23,0x36,0x34,0x52,0x62,0xf7,0x64,0xc7,0x47,0xeb,0x41,0xad,0x07,0xfb,0x3e,0x08,0x74,0x92,0x58,0x0f,0x73,0xe2,0x53,0x35,0xda,0xae,0x64,0x3c,0x47,0x89,0xaf,0xce,0x59,0x35,0x75,0x8b +.byte 0x50,0xee,0xbf,0xbe,0xd1,0xf4,0x2f,0x11,0xa3,0xfe,0xce,0xfd,0x15,0x0d,0x32,0x17,0x00,0xfb,0xad,0x02,0x70,0x5c,0xeb,0x59,0xfb,0x87,0xe5,0xed,0x0e,0xde,0x97,0xe7,0x75,0xb6,0xdc,0xe9,0xb0,0x08,0x26,0x0e,0x11,0xd4,0x4f,0xc4,0x92,0x71,0x7c,0x63,0xef,0xc0,0x14,0x64,0xe1,0x0f,0x7e,0xe6,0xcb,0x5b,0x4c,0xd4,0x16,0x8b,0x7b,0x8b +.byte 0x2f,0x2a,0x77,0xef,0xd3,0xdf,0x56,0xc0,0x5a,0x94,0x72,0xd5,0x36,0x12,0xfa,0x25,0xd7,0x77,0x52,0xdd,0xea,0x11,0x2f,0x6b,0x16,0x6e,0xe3,0xa2,0x84,0xba,0x55,0xc2,0xb0,0xe2,0x3b,0x53,0xb6,0xa4,0xc6,0xa5,0x3f,0x1b,0xb3,0x38,0xc0,0x2f,0x1a,0x80,0xe0,0xa4,0x60,0x49,0x8c,0xe3,0x23,0x5f,0x59,0xfd,0x2a,0x0f,0xe8,0x4c,0xaf,0xd7 +.byte 0x36,0xc7,0x25,0x21,0xad,0x41,0x54,0x27,0x95,0x15,0x42,0xbc,0xb3,0x77,0x4e,0x97,0xf4,0x3c,0x54,0xcc,0x19,0x63,0x62,0x67,0x97,0x5a,0xd0,0x59,0xfb,0xce,0xcd,0xe1,0x3c,0xb6,0xc9,0x49,0xc4,0xff,0xde,0xf9,0x89,0x87,0x9c,0xdf,0x4e,0x8c,0x9d,0xe5,0xbd,0x0d,0x0c,0x6e,0x93,0xfd,0xea,0x90,0xf2,0x80,0x7e,0x00,0x9a,0x06,0x02,0x87 +.byte 0xae,0xca,0xf4,0x46,0xbb,0xb5,0x52,0xee,0x18,0xb0,0xf1,0x61,0xcb,0xe1,0x65,0x9c,0x0b,0xfb,0xe6,0x3b,0xeb,0x3a,0x1a,0x22,0x41,0x0b,0x99,0xa4,0x8e,0x01,0x5e,0x7c,0x4e,0x1a,0xaa,0xab,0xd3,0x8b,0x99,0x7f,0xba,0x6b,0xec,0xe7,0x3a,0xd6,0x55,0x46,0x20,0x1b,0x10,0x39,0x06,0xcc,0x90,0xc1,0x6a,0xa5,0x27,0x7c,0xca,0xa5,0x58,0x07 +.byte 0xd7,0xaf,0x6d,0x12,0xa6,0x68,0xc7,0x0e,0x19,0x53,0x44,0x22,0x85,0xbb,0x72,0x9c,0x4d,0xfb,0xeb,0x94,0x3a,0xa0,0x64,0xf5,0x25,0xe8,0xee,0x7a,0x3b,0x71,0x0e,0xbb,0x40,0xa2,0xb3,0xc9,0x6b,0x14,0x0f,0xc3,0x75,0xac,0x1b,0x5c,0xf1,0x34,0x51,0xcb,0xeb,0x5f,0x40,0x0f,0x82,0xe9,0xd2,0x6d,0x95,0x88,0x84,0xea,0xe9,0xe3,0xa0,0xe9 +.byte 0xef,0x3b,0x33,0xfe,0x32,0x52,0x93,0xce,0x95,0x4b,0x64,0x3c,0x97,0x76,0x91,0xd8,0xce,0xb5,0xc2,0xda,0x58,0x23,0x27,0xe2,0x3d,0xbe,0xf6,0x31,0x79,0x73,0x0e,0x31,0xd7,0xa3,0xaa,0xac,0xcf,0x31,0x1e,0x75,0x58,0x14,0x21,0x52,0x1c,0x3e,0x4f,0x2a,0x2b,0x9a,0x22,0xbc,0x42,0x68,0x5b,0x83,0xc2,0x8c,0xd4,0xe8,0xd9,0x02,0x0d,0x13 +.byte 0x2f,0x08,0xd3,0x11,0xb7,0x4b,0x84,0x67,0x43,0xda,0x20,0xdb,0x89,0xd5,0x9e,0x14,0x54,0x3d,0x49,0xda,0xac,0x3f,0x8f,0xf5,0x17,0xfe,0xb8,0x5f,0xc3,0x20,0x38,0x27,0x21,0x32,0xbf,0xf3,0x9b,0x2c,0x0b,0x9b,0xeb,0x64,0x87,0xf7,0x9d,0xed,0x15,0x05,0x21,0x69,0xcf,0x2d,0xf8,0xfb,0xf2,0x81,0x51,0x08,0xc7,0x18,0x81,0xdf,0xed,0xa4 +.byte 0x70,0xb3,0x07,0xfa,0x00,0xd5,0x65,0xb9,0x5a,0x82,0x67,0x6f,0x10,0xfc,0x46,0x05,0x9a,0x85,0x64,0x14,0x60,0x64,0x4d,0x1f,0x13,0x57,0xbb,0x7c,0x4a,0x10,0x84,0x8c,0x57,0x36,0x13,0x22,0x00,0x04,0x2d,0xcf,0x27,0x3d,0xf4,0x27,0x3e,0x32,0xb3,0x87,0xda,0x82,0xaa,0xad,0xd7,0xa7,0xc5,0x3c,0x45,0xec,0x28,0x82,0x79,0x95,0x8f,0x56 +.byte 0x50,0x5f,0xc2,0x15,0xab,0x18,0x58,0x4f,0x69,0x46,0xce,0x29,0x33,0x42,0x53,0xe9,0xea,0xe5,0xa8,0x5b,0x90,0xc4,0xf4,0xbf,0x8a,0x20,0x62,0xad,0xa5,0xea,0x6a,0x4e,0xb4,0x20,0x2d,0xca,0x90,0xdf,0xbd,0xab,0x5b,0xc3,0x33,0x7c,0x53,0x1f,0xf5,0x2e,0xc0,0xbf,0x19,0xe1,0xa1,0x5a,0x63,0xf3,0x13,0x4d,0x6e,0xef,0x4f,0x3a,0x94,0x18 +.byte 0xbe,0x79,0xdb,0xbf,0xc2,0x2c,0xb3,0x36,0x59,0xab,0x21,0x1d,0x98,0x60,0x70,0xdd,0x95,0x51,0x19,0x07,0xd6,0x68,0x0e,0x2a,0xd4,0x4c,0x30,0x18,0x1c,0xe4,0xe1,0x89,0x15,0x25,0xea,0x27,0xcf,0x51,0x56,0xc9,0xa9,0xa7,0x31,0x08,0x17,0xfb,0xfc,0xf6,0x0c,0x5d,0xf1,0x7c,0x36,0xcb,0xad,0xef,0x29,0xf5,0x2e,0x23,0x09,0xcf,0x31,0x6f +.byte 0x74,0x12,0xd2,0xc2,0xc7,0x19,0xa5,0x6e,0x20,0x09,0x67,0xdc,0x41,0x69,0xbe,0x15,0xd6,0xeb,0x7b,0xba,0x63,0xae,0x65,0xd8,0x67,0xec,0x6e,0xcc,0x1d,0x04,0x08,0xfb,0x7c,0x34,0x1d,0x5f,0x1e,0x51,0x1c,0x30,0x72,0xd3,0x0c,0x48,0x60,0x3d,0x52,0xae,0xe6,0x78,0x44,0x6d,0xb8,0x40,0x08,0xb7,0x7a,0xa9,0xfc,0xa0,0x86,0xff,0x32,0xd6 +.byte 0x5a,0x31,0x4e,0xe2,0x65,0xab,0xb0,0x84,0xb6,0x74,0x3e,0xa6,0x67,0x7c,0xa2,0x0f,0x23,0x22,0xab,0x72,0x7e,0xeb,0x45,0xa9,0x2a,0xb4,0xd3,0xcc,0x27,0x5c,0x12,0xdb,0x14,0x68,0x73,0x0f,0x36,0xbf,0x9f,0x14,0x12,0xe9,0xef,0x04,0x2a,0x63,0x41,0x4b,0x04,0x9b,0x4c,0xc4,0xb2,0xb9,0x1c,0xc0,0xb8,0xcc,0x23,0x61,0xc4,0xed,0x27,0x1e +.byte 0x1d,0x97,0x3d,0x40,0x4c,0x1f,0xeb,0x6e,0xc4,0xfb,0x5c,0x2d,0xf5,0xf1,0xbb,0x05,0x47,0xa2,0x1a,0x9c,0x2b,0x8f,0xce,0x98,0x09,0x6b,0x86,0x22,0xf8,0x3a,0xae,0xf3,0xb4,0x66,0x2f,0xdb,0x20,0xa5,0xc6,0xb6,0x35,0xb5,0x5a,0x68,0xb5,0x37,0x2c,0xab,0x13,0x3d,0x2d,0xcb,0x38,0xed,0x3c,0x7a,0x1f,0x26,0x08,0x58,0x94,0x52,0x30,0xec +.byte 0x06,0x9f,0x90,0x97,0x4d,0x90,0x49,0x23,0xaf,0x00,0x90,0x6b,0x96,0x37,0x02,0x4c,0x35,0xc0,0x3e,0x66,0x2c,0x52,0xbc,0x75,0x28,0xd7,0x8f,0x25,0xbe,0x91,0x10,0x22,0x67,0xbf,0x4a,0x4d,0x62,0xc4,0xe9,0xda,0xe2,0x79,0xcc,0x76,0xeb,0x99,0x87,0xac,0x39,0x7d,0xf6,0x5a,0x37,0x85,0x30,0x33,0x65,0x3f,0xd9,0xd6,0x17,0xf8,0xf0,0x86 +.byte 0xee,0x5c,0x2f,0xb0,0xb3,0x4f,0x83,0x6c,0x4a,0x8f,0xfc,0x80,0x91,0xaf,0x4b,0x21,0x9c,0x9b,0x44,0x3c,0xed,0x67,0xfb,0xa3,0x31,0x7f,0xd4,0x73,0x72,0xb9,0xc1,0x31,0x96,0x47,0x8e,0x99,0x8e,0x62,0x1a,0xfd,0xc7,0x9d,0x2f,0x4c,0xda,0xe5,0xae,0x17,0xb6,0x40,0x5f,0x9e,0xa8,0xf2,0xcc,0xd7,0xd5,0x40,0x33,0x88,0x57,0x63,0x9b,0xde +.byte 0x82,0x71,0x68,0xfe,0xaf,0x29,0x6c,0xc1,0x2c,0x2f,0x02,0x42,0xd7,0xa5,0x28,0x05,0xca,0xa0,0xb6,0x8c,0x43,0x90,0x05,0xe2,0x1c,0xb7,0x76,0x79,0x39,0xd3,0x23,0xe1,0xe7,0xbb,0x19,0x65,0x1a,0xb4,0xbb,0x5a,0xcf,0x43,0x70,0x26,0x1a,0x2f,0x61,0x78,0x75,0x08,0xb0,0x88,0xe5,0x4a,0x46,0x0a,0xfc,0xcb,0x46,0x18,0xb0,0x8d,0x9b,0xeb +.byte 0xf5,0xe1,0x83,0x04,0x84,0x4f,0xd6,0xa0,0x4f,0xb2,0x4c,0x44,0x08,0xde,0xd6,0x82,0xb5,0x9a,0x45,0x15,0xb8,0x21,0xc7,0xf5,0xe2,0xfd,0x02,0x27,0x18,0x13,0x24,0x18,0x01,0xd1,0x2a,0xff,0x63,0xf2,0xa4,0x97,0xc8,0x4b,0x3b,0xae,0x49,0x47,0x54,0xe8,0x75,0xe7,0x16,0x77,0x22,0x10,0x7b,0x3c,0xf0,0xdb,0x49,0x6e,0xd6,0x55,0x9d,0x43 +.byte 0x6f,0x6e,0x2d,0x97,0xea,0x16,0x2e,0x0c,0x85,0x89,0x67,0xe1,0x7b,0x38,0xa6,0x2b,0x89,0xf0,0xcd,0x90,0xcd,0xba,0x9a,0x70,0xa9,0xe3,0xff,0xe0,0xbd,0x15,0x3e,0x4b,0x13,0x62,0x7b,0x59,0x64,0x18,0x96,0xe9,0x6a,0xf3,0x69,0x2d,0x2d,0x25,0xe7,0x91,0xd3,0xbc,0x74,0x58,0x66,0x2f,0x5e,0x8b,0x52,0xf6,0x91,0x24,0xa8,0x6f,0xa5,0xce +.byte 0xa1,0x4e,0x3b,0xe9,0xc5,0x30,0x7e,0xa5,0xc7,0xe2,0xb3,0x71,0x3b,0x25,0xb9,0x5f,0xe5,0x9c,0xf8,0x46,0x23,0xc5,0xa2,0xc1,0x1f,0x3f,0x43,0xa6,0xaa,0xf1,0x36,0x27,0xc6,0xa8,0xed,0x0d,0x50,0x71,0xf1,0x38,0x27,0xb7,0x16,0x43,0x7c,0x7f,0x77,0x5b,0x25,0x59,0xb7,0x08,0x0d,0xc8,0x84,0xe4,0xc2,0x03,0x95,0xe5,0xf3,0x0a,0x9c,0x1f +.byte 0xde,0x98,0x7c,0xa9,0xe2,0x70,0x9e,0xde,0xf6,0x80,0xd0,0xf8,0x86,0x4a,0x7a,0x0d,0x16,0xaa,0xde,0xba,0x02,0x30,0x8a,0xe6,0x03,0x0f,0xa1,0xf1,0xe8,0xd6,0xf8,0xce,0x7b,0xba,0x74,0xa8,0x25,0xb0,0x49,0x22,0xa6,0x81,0x7e,0x71,0xc5,0x97,0x9e,0xa8,0x46,0xa7,0xe9,0x8b,0x7c,0x7c,0x4c,0xc5,0x3c,0x93,0x08,0xb9,0x8b,0x3c,0x33,0xd6 +.byte 0xc4,0x37,0xc8,0x05,0xe7,0xfe,0xc2,0x7c,0x02,0xe6,0xda,0x09,0x52,0x2c,0xc6,0xa8,0x6e,0x44,0x7e,0x55,0xf0,0x32,0x10,0xcb,0x1e,0xa7,0x77,0x8d,0xc7,0xfe,0xb5,0xf6,0x3b,0x49,0xf2,0xfb,0xe0,0x41,0x98,0xd3,0x17,0xa6,0x5d,0x3f,0x4c,0x95,0xb0,0x02,0x8d,0xab,0x36,0xb7,0xa0,0x92,0x40,0x5e,0x15,0xfb,0xa9,0xb4,0xa3,0x04,0x8b,0x6b +.byte 0x81,0x44,0x59,0x22,0x10,0xcb,0xc5,0x52,0x3f,0x78,0x70,0x00,0xe2,0xa2,0xf7,0x76,0x62,0x72,0x06,0x8b,0xbb,0x56,0x0f,0x8c,0x67,0x2f,0x52,0x3f,0x3b,0xdc,0x15,0x79,0x55,0x89,0x6c,0x61,0x23,0xcc,0x6b,0x41,0x77,0xe5,0xc4,0x90,0x51,0xc3,0x87,0x22,0x1e,0x89,0xf5,0x5b,0x41,0xd7,0x34,0x22,0x3c,0xbd,0x29,0xaa,0x54,0xed,0x5a,0x90 +.byte 0x17,0x24,0xba,0x7a,0x46,0x5f,0x54,0x33,0x56,0x7e,0x2d,0x03,0x59,0xcb,0xbb,0x7a,0xce,0xbb,0x8d,0xf7,0xb6,0x38,0x00,0x18,0x6a,0xa1,0x6c,0xdf,0x42,0x49,0x4d,0x9b,0x4f,0xd6,0x85,0x54,0x1f,0xad,0x17,0xdd,0x66,0x0e,0x7c,0x30,0x86,0x82,0x1c,0x5a,0x81,0x08,0x55,0x51,0x5b,0x06,0x54,0x52,0x3e,0x8b,0x6e,0x72,0x92,0xd2,0x05,0x5d +.byte 0xe4,0xe8,0x0e,0x62,0x1d,0xec,0xb1,0x7f,0x42,0x05,0xd5,0xd3,0x60,0xd4,0xdc,0xa4,0x48,0xc0,0xf0,0x89,0xef,0x5b,0xae,0x5f,0xcd,0xf0,0x62,0xaa,0x3e,0xd5,0x1a,0xbe,0xe3,0x08,0xd5,0xe8,0x00,0x21,0x8c,0x0b,0x0c,0x8e,0x24,0xac,0xb2,0xea,0x44,0x9f,0xce,0x53,0x45,0x9a,0x85,0x67,0x99,0x85,0xea,0x92,0xa7,0x1d,0x86,0xb4,0x3b,0x22 +.byte 0xa2,0xcd,0x35,0x65,0xb5,0xa6,0xdb,0x6d,0x48,0xd1,0xa4,0x76,0x0c,0x00,0x30,0x62,0x86,0x06,0xda,0xa8,0xfe,0xec,0x70,0x87,0x4a,0xe8,0x2e,0x4d,0xe3,0x94,0x0b,0xdf,0x81,0xcd,0xfe,0x23,0x79,0x2c,0x2b,0xae,0xf7,0x75,0x49,0x47,0x24,0x46,0x09,0x10,0x62,0x39,0x3b,0x50,0xf1,0xfa,0xf7,0x5f,0xe4,0x7c,0xa5,0xc0,0x25,0x9e,0x20,0x4d +.byte 0xc8,0x6b,0x93,0xc5,0x4a,0x6b,0x62,0xb8,0x3b,0xe5,0x0d,0x92,0x70,0x26,0xa5,0x2b,0xd0,0x9f,0x03,0x8b,0xd3,0x1a,0xc4,0xb0,0xa3,0xc7,0xf4,0x35,0xe5,0x1d,0xe0,0xaa,0x43,0xab,0x64,0x10,0x2b,0xa4,0x09,0x42,0xee,0xba,0xb7,0xbf,0xfd,0xa6,0xff,0x76,0xe5,0x12,0xd6,0x50,0x9a,0x26,0x6b,0x3a,0xd3,0xe6,0x7d,0x3e,0x0e,0x9b,0x95,0xd7 +.byte 0xbf,0xb6,0x7e,0xfb,0x3c,0x24,0xa4,0x26,0x98,0x88,0x81,0xf4,0x56,0xa4,0xf7,0xe8,0x87,0x15,0x5e,0x9f,0x84,0xdd,0x04,0x66,0x43,0xd8,0x76,0xc2,0xa3,0xfd,0x4b,0x58,0x09,0x06,0xa6,0x60,0x5c,0x3f,0x75,0x80,0xd7,0xc4,0x29,0xf9,0x0b,0x1e,0x4d,0xe5,0x26,0xf6,0xae,0x7a,0xc1,0x05,0xf3,0xf1,0x6c,0xee,0xed,0x56,0x0b,0x51,0x66,0xbe +.byte 0x99,0xec,0x9c,0xc2,0x97,0xe2,0xed,0x09,0x1d,0xa8,0x18,0xaa,0x1c,0x9e,0x20,0x62,0xb1,0x80,0x68,0x3e,0x28,0x1f,0x4f,0x50,0x0e,0x41,0xaf,0x17,0x44,0x79,0x16,0xca,0x17,0xe9,0x13,0x66,0x0a,0x04,0x68,0x41,0xe2,0x1d,0xc7,0x00,0x1e,0x66,0xa3,0x6c,0x2d,0x52,0x8c,0x0b,0x7c,0x03,0x48,0x73,0x3b,0xa9,0x84,0xe5,0x31,0x12,0x0f,0xe8 +.byte 0x1e,0x58,0x4d,0xd0,0x1b,0xb7,0xcf,0x75,0xd5,0x2c,0xca,0x33,0x17,0x95,0x9c,0x30,0xc7,0x7f,0xe9,0xde,0xae,0x19,0x72,0x00,0x2a,0xf5,0xde,0x93,0x3f,0xf5,0x44,0xe5,0xf8,0xc7,0xeb,0x1a,0x5d,0x5b,0x11,0x30,0x09,0xf5,0x49,0x66,0x70,0x1a,0xd5,0xe6,0xfc,0xe6,0x59,0x3d,0x17,0x6c,0xb5,0x0c,0xdf,0x1e,0x9c,0x48,0xd1,0xde,0x12,0xd6 +.byte 0xc8,0x48,0xc8,0x73,0x6d,0xfc,0xec,0x07,0xce,0x02,0xe5,0xb3,0x18,0xb9,0x55,0x4d,0x64,0x07,0xf3,0xaa,0x3c,0xf1,0x71,0x22,0x31,0xbb,0x74,0x2c,0x9f,0x7b,0x68,0x9d,0x80,0x49,0x32,0x48,0x9b,0x54,0xf3,0x74,0x37,0xac,0x4e,0xb2,0x96,0xdf,0x9d,0xeb,0x43,0xe0,0xd0,0xa0,0xe3,0x77,0xbd,0x8b,0x92,0x95,0x9d,0x63,0x8d,0xa8,0x23,0x07 +.byte 0xb0,0xcb,0x9d,0x8d,0x3f,0xe2,0xd5,0x81,0x6a,0xe5,0xc2,0xfe,0xda,0x1c,0x25,0x25,0x5b,0xa8,0xad,0x06,0xec,0x0d,0x4b,0x68,0xc3,0x45,0x81,0x38,0xb0,0x22,0x71,0xa4,0x2b,0xf3,0xa6,0x05,0xae,0x0c,0x48,0x94,0x0d,0x3d,0x48,0x51,0x76,0xdf,0x79,0x66,0x0e,0x28,0xc0,0xc1,0x6f,0xc8,0x8f,0xf7,0x7d,0x37,0x06,0xa2,0x8a,0x3a,0x6b,0xab +.byte 0xe0,0x55,0x8e,0xec,0x89,0xe2,0xca,0xc4,0x01,0x03,0x5d,0xa1,0x84,0x21,0x44,0xbb,0x6b,0x36,0x63,0x57,0x4f,0x54,0x88,0x81,0xbe,0xf8,0x53,0xf7,0x57,0xee,0x30,0x85,0x03,0x11,0x86,0xff,0xe4,0xd6,0xc4,0xf0,0x3c,0xcf,0xfd,0x38,0xd8,0xcb,0xd0,0x96,0x03,0xf2,0xc7,0xfa,0x18,0xc8,0x1b,0xe6,0x77,0x3c,0x61,0xa9,0x14,0xdb,0xb4,0x5c +.byte 0x2d,0xee,0xd7,0xe8,0xc4,0x0c,0x69,0x0c,0x55,0xe2,0x99,0x4b,0xc4,0x89,0xc8,0xee,0x48,0x0e,0x16,0xd7,0xa4,0x78,0x25,0xda,0xd3,0xa8,0xac,0x89,0x66,0x67,0x0d,0x51,0x21,0x0e,0x91,0xfb,0xb5,0xab,0x33,0xcb,0x3e,0xc7,0x0f,0x03,0x22,0x51,0x71,0x03,0xa0,0x3c,0xa9,0x35,0xcb,0x40,0xa7,0xbe,0xe7,0xc3,0x51,0x43,0xd8,0x9a,0x24,0xb7 +.byte 0x7e,0xfb,0x26,0x8d,0xa5,0x1a,0x6b,0xe7,0x97,0xe4,0xdd,0xc0,0x3e,0x98,0x67,0x55,0x79,0x56,0xb9,0x7e,0x25,0x4c,0x5c,0x5a,0x47,0x0a,0xce,0xb6,0x4d,0x2c,0x69,0x73,0xaa,0xf0,0x12,0xbb,0x9d,0xe1,0x60,0xc4,0x5b,0x10,0x32,0x6d,0x89,0x54,0xb1,0xfe,0x36,0xbe,0xb2,0x60,0x9a,0x91,0x73,0x9c,0x32,0x61,0xad,0x9a,0xf7,0x56,0x5f,0x5a +.byte 0x54,0xaf,0xb2,0x0c,0x5b,0x1a,0xe6,0x98,0x94,0xed,0x69,0x0b,0x8d,0x06,0x87,0xc9,0x20,0xdc,0x92,0x2d,0x5e,0xba,0xbb,0x15,0xef,0xc1,0x07,0x18,0x44,0x3f,0xf4,0x48,0x3e,0x7b,0xa4,0x9e,0x14,0x6b,0x97,0xdd,0x68,0x33,0x18,0xdd,0x47,0x08,0xa6,0x3b,0x8d,0x79,0x58,0x92,0xd9,0xda,0x82,0x34,0xa7,0x99,0xbc,0x43,0xa3,0x0a,0x7e,0x85 +.byte 0x0b,0xab,0x0e,0xc2,0x94,0x22,0x2d,0x05,0x99,0x9d,0x5c,0xc7,0xb2,0x7b,0x18,0x3e,0xb2,0xdd,0x47,0xb3,0xd7,0xcf,0x19,0xc7,0x55,0x5e,0x64,0xd8,0x7b,0xb4,0xf6,0x11,0x72,0xed,0xbd,0xfc,0xd8,0xe9,0x9f,0xcd,0x9a,0xeb,0xb2,0x6c,0x04,0xb9,0x88,0xf7,0x60,0x68,0xc3,0xf2,0xfd,0xa0,0x8c,0x82,0xc5,0xf7,0x5d,0xc3,0x9a,0x1e,0x49,0x27 +.byte 0x69,0x35,0xb0,0x8f,0xe9,0xb3,0xe4,0x09,0xd8,0x1a,0x73,0x9e,0x56,0x41,0xfa,0xe0,0x94,0x9e,0x0e,0x65,0xe6,0x5b,0xe2,0x12,0x39,0xca,0x86,0x0c,0xae,0xee,0x24,0x58,0xfd,0x85,0x09,0x7a,0xad,0x54,0xde,0xda,0x06,0x73,0x7d,0x11,0x7e,0x91,0x44,0xf3,0x4b,0x61,0xce,0x8a,0xff,0x76,0x92,0x2e,0x43,0x52,0xcf,0x63,0x3f,0xc4,0x1f,0x7f +.byte 0x4d,0x67,0x21,0xed,0xd7,0x88,0xdb,0x36,0x56,0x11,0xb2,0x3b,0xee,0x5f,0x2d,0x5f,0x17,0x98,0xa1,0xd5,0xcc,0x82,0xfd,0xc2,0x56,0x69,0xaa,0x68,0x86,0xaf,0x48,0x77,0xba,0xe9,0xd9,0x42,0xcd,0xaa,0xe3,0xad,0x2b,0x17,0xef,0xd3,0x54,0xc5,0x4e,0x31,0x0b,0x14,0xb7,0x73,0xc1,0x6f,0xc3,0x06,0x41,0x1a,0x11,0x19,0x9f,0xe9,0x9f,0x61 +.byte 0x4f,0x13,0x9b,0x3e,0xcd,0x7c,0xd6,0x2a,0xb3,0x87,0x84,0x58,0x58,0x10,0x1f,0xa0,0x2e,0x5c,0x15,0x8b,0x5e,0x37,0xd4,0x22,0x93,0xd9,0x67,0xe1,0xa8,0x35,0xe2,0x95,0xd8,0x4c,0x2c,0x65,0xc9,0x21,0xaf,0xf9,0xdd,0x3d,0x2c,0x0e,0x0c,0xcc,0x6b,0xad,0xb3,0x6d,0xd2,0x3e,0x65,0x8e,0x82,0x70,0x41,0xd6,0xaa,0x97,0xab,0x38,0x78,0xe4 +.byte 0x62,0x7c,0x5f,0x22,0xa3,0x1e,0xf2,0x6c,0xfe,0x3c,0xa9,0xb5,0x57,0xcd,0x96,0x11,0xd0,0x8b,0xcf,0x6d,0x06,0xcf,0x7c,0xda,0x1d,0xe4,0x22,0x5c,0x5d,0x9f,0xa8,0x24,0x55,0x45,0x93,0xc6,0xeb,0xfc,0xb5,0x71,0x5a,0x1d,0x52,0x40,0x95,0xc7,0x76,0x32,0xfb,0x2b,0x0c,0x7d,0x64,0xfa,0x5b,0x5e,0x7a,0x3b,0x0b,0xa0,0x99,0x5d,0x19,0x16 +.byte 0xe4,0x8e,0xae,0x49,0xee,0xc5,0xb2,0x24,0xd7,0x0b,0xa4,0x20,0xa6,0x74,0xc4,0x36,0x1d,0x43,0x25,0xd6,0x71,0x54,0x69,0x79,0xea,0xa3,0xd5,0xe9,0x75,0x53,0xcf,0x99,0x4e,0x3b,0xc0,0x52,0x28,0x80,0xe5,0x07,0x65,0x83,0xb3,0x24,0xfe,0x13,0x92,0xd6,0x18,0xf7,0xa3,0xeb,0x9e,0xf0,0xd5,0x69,0x93,0x79,0xda,0xb7,0x2e,0xe2,0x01,0xdd +.byte 0x9a,0xc3,0x7b,0x3b,0x17,0x88,0xe5,0xe9,0x9b,0x46,0x5c,0x5f,0x0e,0x1e,0x80,0x9b,0x11,0x1f,0xa4,0x08,0x90,0x14,0x08,0xb4,0x73,0x32,0x72,0xbe,0x43,0x4f,0x70,0x90,0xe7,0x80,0xdd,0xfd,0xa7,0xea,0x13,0xd9,0x5d,0xae,0x93,0x24,0x2b,0x1e,0xc7,0xf4,0x81,0xbb,0x5f,0xb0,0xb9,0xe4,0x35,0x39,0xf4,0x9a,0x49,0xb5,0xc0,0x47,0x18,0xc3 +.byte 0xcc,0xbe,0x26,0x36,0x44,0x2d,0x65,0x24,0xa3,0x09,0xde,0x69,0x3b,0xb8,0xdc,0x52,0x98,0x2e,0x38,0x5f,0xf7,0xb1,0x84,0xdd,0xea,0xe2,0xe5,0xec,0x96,0x31,0xb1,0x93,0xc0,0x5b,0xc4,0x87,0x4a,0x51,0x58,0x2d,0xea,0x47,0xab,0xfd,0xd3,0x76,0xf1,0xbc,0x52,0xa7,0x94,0x6c,0x74,0x1e,0x84,0x07,0x1f,0x5c,0x18,0xb9,0x06,0x37,0xf0,0xfb +.byte 0xbd,0x5d,0xaf,0xa8,0x06,0xc9,0x86,0xf0,0xd1,0x78,0x84,0x95,0x01,0xdd,0x70,0x9d,0x71,0x51,0xb7,0x80,0x69,0xbe,0xe8,0xfb,0x8f,0x43,0x72,0xd9,0xa9,0xf1,0x90,0xbb,0xf1,0xb5,0xc0,0x75,0x93,0x4e,0x14,0xc5,0x14,0x77,0x59,0xf8,0xe5,0x81,0x11,0x25,0x48,0x51,0x46,0x2a,0x69,0x59,0x92,0xe7,0xa7,0x39,0x96,0xad,0x67,0x30,0xaa,0xb2 +.byte 0x5d,0x95,0x94,0x83,0x83,0x93,0xf3,0x52,0x81,0x1c,0x27,0x78,0x1d,0x19,0x35,0x6e,0x8f,0x16,0xe5,0x3b,0xce,0x80,0x2a,0x3a,0x89,0xb7,0x51,0xfc,0x34,0x24,0xa2,0x61,0x95,0x9e,0xd4,0x69,0xa1,0x2f,0x49,0x16,0x2d,0x12,0x05,0xfe,0x69,0x62,0x12,0xa4,0x2c,0x04,0x7b,0xce,0x3f,0x34,0xc4,0x48,0x1a,0xe6,0x64,0x4b,0x8a,0xbf,0x68,0xdd +.byte 0x54,0x15,0xd3,0x25,0x49,0xdd,0xed,0x5e,0x2c,0x0e,0x25,0xbe,0x77,0xcf,0x94,0xf4,0xe9,0xf3,0xcc,0xe6,0x94,0xf9,0xb2,0x5d,0x24,0x53,0x63,0xbb,0x66,0x8d,0x73,0xef,0x79,0x5c,0x95,0x1a,0x64,0xc3,0xfd,0xc0,0xd3,0x71,0xf4,0x79,0x19,0x79,0xa5,0x30,0xf8,0x2c,0x28,0xc2,0xc2,0x9d,0x12,0x50,0x95,0x38,0xec,0xd5,0xc6,0x28,0x94,0xaa +.byte 0x83,0x66,0x3b,0xe3,0x51,0xc7,0x6a,0x75,0x2a,0x9b,0xb9,0xb0,0xa2,0xe1,0xfd,0xaf,0x58,0xd2,0x4b,0xf4,0x22,0xef,0x77,0x1e,0xa0,0x00,0xd7,0x9e,0x20,0x63,0x87,0x1d,0x98,0xab,0x0e,0x57,0x31,0x4b,0xda,0x90,0x3a,0xe6,0x6e,0x5e,0xd4,0x17,0x06,0x83,0x4f,0x90,0x33,0x1c,0xe5,0xea,0xf7,0x8d,0x95,0xa2,0x1e,0x7d,0x27,0x15,0x49,0x68 +.byte 0x3a,0x54,0xe3,0x1e,0x60,0x72,0x42,0xa6,0x8c,0x5b,0x63,0x1d,0x7d,0xb1,0xe2,0x7e,0x8b,0x19,0xf4,0x25,0x6c,0x77,0x64,0x15,0x5e,0x4c,0xfa,0x35,0x68,0xd2,0x54,0x11,0x5a,0xac,0x85,0xb0,0xb3,0xe8,0xa8,0x70,0x36,0xa8,0xe5,0x04,0xd1,0x82,0xdc,0x62,0x63,0xe6,0x3f,0x86,0x46,0x77,0x08,0x6b,0xa8,0x09,0xd0,0x56,0x09,0x87,0x9c,0x65 +.byte 0x8e,0x53,0xae,0xa6,0x2b,0x59,0x23,0xca,0xe9,0xc7,0xc4,0xb5,0xb9,0xca,0x20,0xf6,0xcc,0x62,0xfd,0xb5,0x66,0x66,0x86,0x99,0xb2,0x5a,0xeb,0xac,0xff,0x22,0xf4,0x94,0x9c,0x6d,0xc9,0xce,0xf3,0x8d,0x26,0x7f,0x06,0x40,0x71,0x8b,0x3e,0x5c,0x3e,0xe6,0x11,0x64,0x91,0x79,0xbe,0x66,0x80,0xd2,0xf6,0x2d,0x28,0x4b,0x6c,0x8d,0x9c,0x5b +.byte 0x1e,0xd1,0x15,0xb0,0xdf,0xfb,0x57,0xaf,0x4a,0xab,0xde,0x12,0xe9,0xb8,0x41,0x3d,0xc3,0xff,0xb2,0xc1,0x86,0xb0,0x06,0x5b,0xaf,0xa4,0x30,0x62,0xd0,0xd8,0x91,0x36,0x28,0xc1,0xc2,0xef,0x60,0x5d,0x42,0x04,0xd5,0x6b,0x10,0xa9,0x6c,0x88,0x5c,0x56,0x59,0x4a,0x87,0xdc,0x7c,0x41,0x03,0xb3,0x7c,0x35,0x8c,0x52,0x0e,0xc1,0xd5,0xdf +.byte 0x9b,0x8a,0x2e,0xc2,0x6b,0x06,0x7f,0xb4,0x93,0xc9,0x52,0xd0,0xc5,0x57,0x78,0x9e,0xf9,0x08,0x36,0xbc,0x4b,0xc1,0xbd,0x71,0x35,0xf8,0x73,0xae,0x9c,0xbc,0xf1,0xd1,0xba,0xe3,0x7f,0x49,0x9b,0x9b,0xb3,0xe2,0x7d,0x7d,0x18,0x6d,0x0d,0x96,0xe3,0x50,0x28,0xf2,0x7c,0x7a,0x71,0x27,0x33,0x3c,0xd3,0xeb,0x3d,0x5a,0x79,0xb5,0x69,0xed +.byte 0x40,0x38,0xbe,0xc9,0xad,0x11,0x7b,0x9d,0xe6,0x71,0xc8,0x89,0x54,0x51,0xf0,0x8f,0xdc,0xad,0x96,0xc3,0x04,0x60,0x5f,0x6d,0xa0,0x37,0xba,0x1c,0x69,0xca,0x42,0x26,0xeb,0x31,0x34,0x8d,0xae,0x25,0xe2,0x29,0x8d,0x19,0x9f,0xfa,0x75,0x91,0x4b,0x51,0xcd,0x76,0xd6,0x8f,0xa2,0x40,0x79,0xc3,0xbb,0x61,0xaf,0xc4,0x69,0xf5,0x8b,0x8a +.byte 0xb6,0x2c,0x25,0xb9,0x3c,0x8e,0x13,0xa4,0x0f,0x52,0x72,0x11,0x4b,0x89,0x63,0x01,0x05,0x54,0xd5,0x0d,0x5f,0x91,0x59,0x84,0x64,0xac,0xf7,0x9c,0xa3,0x48,0x31,0x4a,0x2e,0xea,0xf8,0xf8,0x0e,0xf0,0xd9,0x4d,0x06,0x60,0x11,0x4a,0x72,0x6f,0x93,0x93,0x85,0xf0,0x20,0x55,0x8b,0x37,0xf1,0x29,0x92,0x2d,0x1f,0xa1,0x6c,0x7c,0x90,0x4f +.byte 0xdb,0x78,0xcc,0x6c,0xb2,0x14,0x85,0x07,0x34,0xc8,0x98,0x18,0x52,0x2d,0x6b,0x13,0x63,0xc5,0x31,0x20,0x8e,0xa9,0x88,0x6b,0xb3,0x3f,0x1a,0x68,0x2f,0xf9,0xf3,0x97,0x29,0x68,0x22,0x89,0xb0,0x45,0xc4,0xf4,0x1f,0x31,0xba,0x97,0x14,0x59,0xae,0x05,0xe0,0x99,0x5b,0x29,0xcf,0xe3,0xf0,0x2a,0x0c,0xca,0x5f,0xc1,0xe7,0xe7,0x11,0x48 +.byte 0x73,0xc0,0x86,0x0b,0x59,0xc2,0x8a,0xfa,0x44,0x51,0x1c,0x84,0xdf,0x2f,0x4d,0xab,0xca,0xea,0xe1,0x48,0x9a,0xa1,0x86,0x60,0x47,0x7a,0x86,0x30,0x6a,0xba,0xbe,0x6a,0x9b,0x34,0xf4,0x52,0x0e,0xae,0x7f,0xbd,0xe0,0xf4,0x5f,0xfd,0xbc,0x57,0x02,0x95,0x6f,0xad,0x78,0x2e,0xa7,0x46,0x1c,0x2d,0x98,0x40,0xb7,0xfa,0xb5,0x08,0xee,0xb5 +.byte 0x25,0x51,0xaa,0x1a,0x14,0x41,0x48,0xe0,0x8f,0xe7,0x2f,0xfc,0xfd,0x47,0x10,0x55,0x90,0x02,0xeb,0x7f,0x0d,0x40,0xa8,0x4b,0x82,0xdc,0xab,0x43,0x35,0x62,0xa1,0x1d,0x5a,0xb0,0xc0,0x93,0x75,0x3d,0x68,0xd9,0xf8,0x31,0x22,0xfd,0x30,0xda,0xea,0xea,0x7c,0x30,0xf8,0x6f,0x75,0x5f,0x07,0x39,0xfe,0x69,0x93,0x73,0x22,0xa2,0x72,0xed +.byte 0x39,0x2f,0x00,0x5c,0xc3,0x14,0x86,0x90,0xda,0xc9,0x09,0x43,0x80,0x85,0x22,0x98,0xb0,0x4e,0x05,0x47,0x8f,0xc7,0xba,0x2e,0x4c,0x8f,0x57,0x8a,0xe9,0xb0,0x97,0x3b,0x51,0x12,0xcb,0x88,0xfd,0x5e,0x7f,0xa6,0xc6,0x00,0xd0,0x3a,0x3a,0x70,0x9e,0x56,0x28,0xa0,0x08,0x76,0x58,0x57,0x4a,0x0f,0xff,0x31,0x44,0x08,0x6c,0x23,0x79,0xad +.byte 0x35,0x95,0xc5,0xc8,0x26,0x0f,0xb3,0x17,0x04,0x1d,0xde,0x16,0x5d,0xb8,0x71,0x76,0x89,0x0b,0xd6,0xd8,0x9d,0xa1,0xdf,0xcb,0xb5,0x1c,0x86,0xc3,0x15,0x8d,0xaa,0x25,0x82,0xbf,0x6b,0x06,0xfb,0x1b,0xf5,0x11,0xaa,0x14,0x0e,0x67,0x7f,0xbd,0x46,0x21,0x8f,0x6d,0xbd,0x63,0xe6,0x14,0x05,0xa2,0xee,0x56,0xee,0xe6,0x37,0xf9,0xc0,0x2f +.byte 0xc9,0xe0,0x8e,0xdb,0xf7,0xf6,0xcb,0x83,0x79,0xcc,0xe3,0xf6,0x30,0x9d,0x56,0x31,0x40,0xd2,0x50,0x25,0xb6,0x89,0x16,0x97,0x65,0xd8,0x8d,0x1a,0xa5,0xf4,0x47,0xfc,0x4c,0x73,0x07,0x42,0x9c,0x8f,0x7f,0x10,0xb4,0x96,0x33,0x1e,0xe2,0xff,0x0c,0x33,0x35,0xbc,0x37,0x01,0x2b,0x67,0xda,0xca,0xcf,0x87,0xa2,0x38,0x71,0x6b,0xf4,0xcf +.byte 0xa6,0xc6,0x6a,0x90,0x5c,0xa0,0x8b,0x66,0x44,0xc7,0xc2,0x05,0x24,0xee,0x53,0x99,0xf3,0x07,0x78,0xb0,0x17,0xf8,0x11,0xf9,0x52,0x20,0x41,0xc5,0xdb,0x4e,0x92,0xd3,0xeb,0xd2,0x86,0xea,0x9b,0xc3,0x4c,0x1b,0x75,0xcd,0x15,0x0c,0xe0,0x28,0xe9,0xe1,0x99,0x98,0x96,0x33,0x06,0xea,0xa8,0x4e,0xde,0xc1,0x1c,0xfe,0x6c,0xca,0xac,0x6d +.byte 0xc4,0x3a,0x7d,0xd2,0x41,0xf5,0xb3,0x7d,0x1c,0x28,0x93,0x72,0xf8,0x08,0xc1,0x71,0x72,0x4c,0x41,0x68,0x38,0x80,0x2e,0x4b,0xa6,0xc5,0xc7,0xb4,0x24,0x29,0xd0,0xce,0xb2,0x3d,0xc4,0x60,0x5b,0xeb,0x2d,0x80,0x13,0xee,0x95,0x41,0xfe,0x49,0x6d,0x89,0xc0,0x7a,0x61,0x51,0x3f,0xbb,0x24,0x7c,0x64,0x5e,0x9f,0xf7,0x60,0x88,0x95,0xe8 +.byte 0x60,0xc5,0xf6,0xc3,0xc3,0xd4,0x43,0xce,0xf9,0x4e,0x35,0xf2,0xfa,0xb0,0x2b,0xe3,0xfe,0xb8,0x88,0x19,0xf2,0x89,0xc0,0xb5,0x00,0x61,0xc8,0xe5,0xaa,0xde,0x18,0xb4,0xd4,0x21,0xbe,0xcc,0x61,0xc7,0xc9,0xfe,0x22,0xcc,0x65,0xf6,0x79,0xe8,0x4d,0x1c,0x30,0x31,0x7a,0xd4,0xbc,0x98,0x2d,0x72,0x5e,0x5c,0x4f,0x7e,0x52,0x9c,0x95,0x20 +.byte 0x29,0xa4,0x0b,0xf7,0xb2,0x7d,0xcc,0xc3,0x8c,0x94,0xb0,0x09,0xf4,0x6f,0x59,0x63,0x91,0x2a,0x06,0x80,0x09,0x01,0x3c,0x73,0x83,0x42,0xa1,0x5c,0x0f,0x42,0xf4,0x74,0x3c,0x24,0x8c,0xbe,0x91,0x73,0xdf,0xf1,0xea,0x21,0xbd,0xc9,0x36,0x17,0xca,0x81,0x28,0xd9,0x4a,0xc4,0x2e,0xdf,0x4c,0x4f,0xbd,0x1e,0xbc,0xe9,0x32,0x12,0xd3,0x8f +.byte 0x48,0x9b,0x4f,0x49,0x23,0x54,0x15,0x15,0x14,0x8b,0x18,0x64,0x7d,0x08,0x7f,0xc4,0x56,0x01,0x94,0x4e,0x50,0xe8,0xf2,0x4a,0xb5,0x3c,0xa0,0xb5,0xaf,0x55,0x70,0x44,0x41,0x5c,0xe6,0x61,0x5a,0xbb,0xf2,0xe6,0xc9,0x05,0x33,0x45,0x8f,0xbc,0xe5,0x59,0x7f,0x66,0xc5,0x61,0x4d,0x1b,0xc7,0xee,0x45,0x7d,0x57,0x8f,0x6c,0x9d,0x8b,0x87 +.byte 0x98,0xa8,0x58,0xac,0x4a,0x31,0x79,0xd6,0x26,0x08,0x2f,0x28,0x3f,0x31,0x77,0xad,0xff,0xe1,0x9d,0xa8,0xf7,0xe0,0x76,0x66,0x48,0x00,0x52,0xe8,0x9a,0xb2,0x47,0x5e,0x0a,0x87,0x86,0xaf,0xf6,0x7d,0x46,0x78,0x66,0x68,0xf7,0x68,0x0c,0x6f,0x5c,0xd7,0x09,0xc0,0xd7,0x90,0x98,0xe2,0x5c,0x07,0xe9,0xd1,0x58,0x48,0x57,0x9f,0x48,0x99 +.byte 0x87,0xdf,0x06,0xc1,0x35,0x0f,0xd8,0xb0,0xa9,0xfa,0xdc,0x31,0x76,0xd1,0xad,0x47,0x80,0xe4,0x74,0xe0,0xda,0x4b,0x77,0x8b,0x71,0xab,0x9a,0x8e,0xd7,0x6b,0x91,0xb1,0xdb,0x78,0xd2,0x86,0xf7,0x61,0x1b,0xdc,0x34,0x57,0x32,0x51,0xee,0xd3,0xff,0xb2,0x6c,0x6a,0x79,0x90,0x9c,0x1f,0x6b,0xe7,0x43,0x20,0x05,0x4f,0x66,0x83,0xd0,0x56 +.byte 0xe1,0x21,0x63,0xf4,0xd6,0x96,0x91,0xcb,0x51,0x3c,0x13,0x88,0x97,0x26,0x88,0xda,0x7c,0xd4,0x0d,0xcb,0xdf,0xc2,0x7d,0xcd,0x2c,0x0e,0x28,0x23,0x21,0x5f,0xbe,0x5d,0x62,0x58,0x6c,0xa7,0x45,0xae,0x1f,0xac,0x35,0x53,0xdb,0x2c,0xa6,0x71,0xe4,0x11,0x5e,0x59,0xbe,0xd5,0x20,0x2a,0xc4,0xcd,0x4c,0x1b,0xe0,0x38,0xef,0x02,0x0c,0x5f +.byte 0x5a,0x1b,0xf9,0x1e,0x32,0x63,0xd7,0xa6,0x0f,0x1d,0x98,0xd5,0x3a,0x0f,0xf6,0xcc,0xfc,0xd6,0xb4,0x87,0xc5,0x76,0xd8,0x3e,0x72,0xb0,0x20,0xfe,0xb3,0xfc,0x48,0x4c,0xd1,0x71,0xcd,0x13,0xef,0xe8,0x40,0xd9,0x0d,0xf6,0x1d,0x5b,0xa4,0x26,0x56,0x8c,0x66,0xcb,0x18,0x5a,0x5f,0x86,0x43,0x2c,0xa4,0x1e,0x00,0x3f,0x09,0xbf,0x8e,0x61 +.byte 0xad,0x2a,0x44,0x97,0x35,0xb2,0xf3,0x50,0x5f,0xfa,0x01,0x74,0xbf,0x70,0x46,0x38,0xf1,0x15,0xaa,0x04,0xfe,0xe9,0x3f,0x43,0x2f,0x53,0xcb,0xea,0x5c,0x04,0x8e,0xe6,0x43,0xeb,0xc0,0xd9,0xbf,0x4a,0xc1,0xbc,0xf9,0x11,0xd5,0x33,0xdc,0x41,0x8e,0xfe,0x5e,0xf3,0x8c,0x80,0x47,0x46,0x01,0x9e,0xa9,0x2c,0x2d,0xd2,0x90,0x7f,0xce,0x7c +.byte 0x59,0x78,0xaa,0xbb,0x96,0x52,0x0a,0xf3,0x18,0x1f,0x0b,0x41,0xc1,0xd5,0x12,0x14,0x1a,0xe1,0x4e,0xac,0xf8,0x2a,0x56,0xfe,0x66,0x34,0x21,0xdf,0x1f,0x6a,0x02,0x85,0xd2,0x38,0xc0,0x39,0x5c,0xa7,0x3f,0xcc,0x2b,0x6f,0x69,0xe7,0xa7,0x0a,0x36,0xf1,0xa9,0x77,0x59,0x2c,0x44,0x8b,0x72,0xc9,0xc2,0x74,0x32,0x48,0x76,0x19,0x1e,0x49 +.byte 0x10,0xe6,0x46,0xdf,0x82,0x9b,0xad,0x4e,0x40,0x20,0xd7,0xd3,0xf5,0x5c,0xbc,0x25,0x94,0xd1,0x68,0xaf,0x29,0xc5,0xcd,0x1b,0x86,0x4b,0x88,0x21,0x6e,0xeb,0x06,0x14,0xb5,0x15,0xe7,0x26,0x01,0x05,0x4e,0x3a,0x2a,0x24,0xbe,0xf2,0x64,0x6e,0xf4,0x9c,0x60,0xf8,0xd4,0xfd,0x4b,0xc0,0x0e,0x68,0x0d,0x19,0x26,0x87,0xa5,0xbf,0xe1,0x16 +.byte 0xf0,0x27,0x58,0xa8,0x3a,0xed,0x27,0x5b,0x73,0x4f,0x19,0x40,0x58,0x36,0xf6,0xfd,0x60,0x37,0x09,0x74,0x3c,0xb9,0x76,0x9a,0x32,0xfd,0x98,0x79,0x53,0xb3,0xea,0x3a,0x98,0x21,0xf9,0xb2,0x97,0xe4,0x00,0xb6,0xed,0x67,0xc4,0x76,0x8f,0x1e,0x4d,0xc8,0x2e,0xf4,0x54,0xd9,0x09,0xd7,0xcb,0xa0,0x91,0x1e,0x5a,0x60,0x53,0xbc,0x3e,0x35 +.byte 0x69,0xa6,0xca,0xf3,0xce,0x41,0x84,0x71,0xee,0xf3,0x75,0xd4,0x7a,0x71,0x36,0x62,0xe3,0x08,0xae,0x40,0x05,0xde,0x01,0x34,0x92,0x5f,0x71,0xa9,0x08,0xb3,0x43,0xcd,0xe7,0x2f,0x42,0x7e,0x9c,0x1e,0xfe,0x9a,0x40,0x99,0x58,0x31,0xd9,0x8d,0x5d,0xda,0x75,0x14,0x3f,0xae,0x45,0x27,0x85,0x47,0x7d,0x41,0x0e,0x94,0x20,0xee,0x11,0xd0 +.byte 0x1e,0xcd,0x00,0x56,0xb7,0x59,0xe6,0x58,0xab,0x2c,0xa6,0x44,0x14,0x8c,0xff,0x49,0x7b,0xe5,0xf7,0x93,0xd5,0x78,0x1a,0xe0,0x16,0xd8,0x24,0x08,0x1e,0x70,0xce,0x1a,0x84,0x87,0x6b,0xe5,0xf2,0x43,0x5f,0xb3,0x34,0xaa,0x85,0x3e,0x9e,0x2e,0x86,0x22,0x74,0xe2,0x1a,0x87,0xfb,0x1b,0x6c,0x08,0x8c,0x43,0xb4,0x85,0x75,0x2c,0x13,0xc2 +.byte 0x18,0x94,0xe8,0x0d,0x09,0xd5,0x8f,0xd4,0xca,0x50,0x93,0x9f,0xa3,0x9f,0x3b,0x3c,0x54,0x68,0xa9,0xb1,0xdd,0x0a,0x0b,0xe2,0x15,0x92,0x9c,0x6f,0xfa,0x45,0x6f,0x0a,0xb4,0x6b,0xcb,0xdc,0xa4,0xf3,0xf0,0xa6,0x1c,0x8a,0x60,0x42,0x35,0xa8,0xe3,0xdf,0xc8,0xdc,0xbb,0xbe,0x95,0xa7,0xac,0x08,0x08,0xbc,0x56,0x1a,0xa4,0xc2,0xd2,0x53 +.byte 0xfa,0xb2,0x89,0x4f,0xb8,0xe4,0xb9,0x90,0x95,0x91,0x2f,0x0f,0x93,0xa9,0x8c,0xc6,0xf8,0x01,0x34,0x08,0xe6,0x8c,0x58,0x43,0x57,0x40,0xf9,0x78,0x83,0xea,0x92,0x70,0xa8,0xa5,0xc8,0x9e,0xf8,0xc6,0x39,0x4c,0xb4,0xe9,0xbb,0xdf,0xd2,0x52,0x43,0x6b,0x6c,0x8b,0x2c,0x47,0xd7,0x11,0x42,0x3d,0xc7,0x3f,0xce,0xd1,0xd9,0x28,0x5b,0xce +.byte 0xec,0xb6,0x31,0x3a,0xc9,0xad,0x0c,0x93,0x82,0x2b,0xf6,0xdc,0xd4,0xcd,0x80,0xe1,0x75,0x45,0xeb,0x3b,0xbf,0x12,0x42,0xeb,0x71,0xc1,0x8b,0x27,0xd5,0xcb,0xd9,0xb6,0xe8,0xe9,0xc6,0x79,0xff,0x38,0x88,0x87,0x72,0xf2,0x71,0x4a,0x44,0x55,0x0f,0x9c,0x93,0xcf,0x15,0x18,0x44,0x62,0x2a,0xc5,0x0a,0x80,0x69,0x91,0x6e,0x4b,0x30,0x4e +.byte 0x3f,0x2f,0xb5,0x65,0x9e,0x65,0x07,0x36,0x9b,0xba,0x5f,0x81,0xd9,0x60,0xbe,0x1f,0xf5,0x98,0x20,0xf9,0x9e,0x53,0xf7,0x5d,0x57,0x7f,0x22,0xaf,0x8e,0x82,0x9e,0x0f,0x33,0x74,0x37,0x26,0x61,0x67,0xf6,0xfd,0x2c,0xab,0xd8,0x18,0x1d,0x10,0x48,0x7a,0x1d,0xed,0xbb,0x57,0x83,0xf9,0x82,0xf5,0xe3,0xf9,0x98,0x5c,0xc0,0x3e,0xee,0x38 +.byte 0x0a,0x57,0x10,0x22,0xc4,0xe8,0x1d,0xe3,0x46,0xa3,0x81,0x5e,0x92,0xba,0xcc,0x53,0x48,0x85,0x33,0x58,0xa2,0x3e,0xea,0x0a,0xfb,0x72,0x5c,0xcd,0xd9,0xa4,0x3f,0x56,0x99,0x35,0x92,0x6c,0xe8,0xf2,0x59,0x0f,0xc8,0x6a,0x21,0xb2,0x9f,0xa2,0xf6,0xf3,0x1b,0xec,0x38,0x95,0xed,0xef,0x00,0x09,0x16,0x6e,0xf7,0xf8,0x1a,0xef,0x0d,0x2b +.byte 0xef,0x83,0x8a,0xc2,0x22,0x3d,0x50,0xa3,0x70,0x52,0xe8,0xad,0x11,0x44,0x83,0x80,0xfe,0x88,0x7e,0x40,0x02,0x8f,0x4a,0x5d,0xd3,0x28,0x66,0x75,0x5a,0xf2,0x38,0xb5,0xdc,0x54,0xa8,0xb3,0xaa,0x76,0xdb,0x73,0xe0,0xd1,0xd7,0x51,0x20,0x8c,0x38,0x18,0x46,0x25,0x2e,0x0d,0x5b,0x61,0x9d,0x36,0x9a,0x14,0xfb,0xc8,0x4e,0x5a,0xba,0xa1 +.byte 0x98,0x34,0xfd,0x05,0x2c,0x87,0x58,0x8d,0xe3,0x5d,0x79,0x5a,0x45,0xff,0x75,0x25,0x98,0xbd,0xe4,0x9d,0x1a,0x70,0x79,0xaa,0x44,0x1a,0x10,0x7f,0xfb,0xe9,0x30,0x81,0xc7,0xa2,0x81,0x41,0x49,0x41,0x4e,0x42,0x5f,0x8a,0x9b,0x10,0xe2,0xdc,0xd9,0xdf,0xbd,0x61,0x29,0x72,0xa5,0x39,0xb7,0xf6,0x9f,0x4e,0x98,0xb8,0x04,0xae,0xd7,0xda +.byte 0x9a,0x9f,0x08,0xb8,0x2c,0x40,0x14,0x6d,0x01,0xb7,0x86,0x58,0x55,0x42,0xe5,0xdb,0x5f,0x4a,0xef,0xd8,0xed,0xdf,0x3b,0x24,0x1c,0xe4,0xb1,0x73,0xd1,0xce,0x29,0x96,0xde,0x8e,0xf3,0x1d,0x8d,0x75,0x57,0xd3,0x9a,0xf8,0xff,0x1a,0x4c,0x0c,0x47,0x82,0x83,0x73,0x34,0x43,0x55,0xfa,0xf2,0xd4,0x38,0xed,0xde,0x6d,0x24,0x55,0x90,0x06 +.byte 0xd6,0x03,0x52,0x28,0xc7,0x38,0x4a,0x16,0x95,0x4d,0xf4,0x46,0x56,0xf7,0x63,0x1f,0xe4,0xa9,0x51,0xc6,0x0b,0x85,0x42,0x40,0x8e,0x49,0x1e,0xc2,0xab,0xeb,0xda,0x99,0x26,0xf6,0x6e,0x00,0x8f,0x26,0x82,0xef,0x03,0xb0,0xd4,0xdb,0x54,0x46,0xdf,0xdc,0x23,0xaf,0xa8,0x6a,0x9f,0xb7,0xf9,0x41,0x07,0x5e,0x2d,0xcf,0x85,0xfd,0x9c,0x46 +.byte 0x30,0xb9,0x14,0xca,0xe2,0x30,0x12,0x06,0x88,0x08,0x05,0x2c,0x9a,0x4b,0x52,0x98,0xa9,0x99,0xd7,0xca,0xb5,0x1e,0x60,0x44,0xd9,0x5c,0x19,0x42,0xbe,0xa5,0x04,0xfd,0x7a,0xfc,0xb9,0xdf,0xd6,0xe3,0x6d,0x02,0xe3,0x96,0xf6,0xae,0xf3,0x78,0x1d,0x90,0x6d,0x86,0x17,0xf7,0xb7,0x6b,0x1d,0x52,0x32,0x5b,0xc0,0x31,0xaf,0x09,0x90,0x5e +.byte 0x81,0x75,0x17,0x47,0x6b,0x5e,0x9a,0x40,0xa5,0xa8,0x84,0x60,0xdc,0xdb,0xd2,0x89,0xcd,0xb2,0x72,0xf4,0x74,0xda,0x5d,0x34,0xf8,0xc6,0x1b,0x26,0x3e,0x8b,0xc7,0x73,0xf9,0x0c,0x93,0xf4,0x40,0x02,0xe0,0xed,0xe5,0xa0,0xae,0x91,0x03,0x85,0xa8,0x2f,0xe2,0x72,0xfe,0x17,0x7d,0x2b,0xa6,0x39,0x10,0x80,0x4c,0x58,0xaa,0xd8,0x22,0x7d +.byte 0x2f,0xbf,0x0c,0x40,0x48,0xfa,0xbe,0x40,0x4c,0x32,0x96,0x69,0xa5,0xab,0x0b,0x1e,0x33,0x9b,0xcf,0xe6,0x4e,0x2b,0x41,0x5a,0x21,0x23,0xa1,0xbb,0xd3,0xd6,0xd1,0xfd,0xbd,0x55,0xfc,0x92,0x92,0xcb,0x4b,0x72,0x39,0x8b,0xeb,0x72,0xdd,0xf7,0x77,0x43,0x52,0x2f,0x99,0x14,0x6e,0x41,0xce,0x1d,0x57,0x2c,0x09,0xd2,0x18,0xec,0x1b,0x89 +.byte 0xa0,0xe9,0xfe,0x1e,0x41,0xda,0x0f,0x76,0x02,0x38,0xec,0x9a,0x30,0xb7,0x5a,0x54,0x70,0xbc,0xe8,0xfa,0x06,0xd0,0x80,0xfb,0x27,0xd2,0xd8,0x00,0x80,0x65,0x9d,0x23,0xfd,0xad,0x26,0xb8,0xdc,0x09,0x4f,0xfb,0x52,0xcd,0xe4,0x41,0x68,0xca,0xdd,0xbc,0x2a,0x62,0xeb,0xa6,0x32,0x71,0xb0,0x08,0xb6,0x9f,0x3e,0x74,0xfe,0xb0,0xd4,0x9d +.byte 0x9e,0x6c,0x50,0x96,0x8a,0xde,0xd6,0xe9,0xde,0x2c,0xa6,0xf0,0x9f,0x67,0x00,0x50,0x0a,0x8c,0xe5,0xc2,0x37,0xcc,0xf0,0x53,0xeb,0x72,0xf2,0x87,0x77,0xee,0x80,0xe8,0xb2,0xa1,0x13,0x52,0x70,0xe6,0x8f,0x70,0x17,0x90,0x60,0xcb,0xac,0xb2,0x72,0xef,0xd9,0xb5,0xc3,0x68,0x57,0xdf,0x2d,0xcb,0x5a,0x35,0xf9,0x2e,0xfb,0xef,0x6e,0x77 +.byte 0x5d,0x21,0x37,0x4b,0x36,0x9b,0x3f,0x03,0x65,0xc9,0x84,0xb1,0x12,0x99,0xd1,0x6b,0x00,0x71,0x37,0xc7,0x57,0x82,0x44,0x7f,0xe1,0x81,0x24,0x70,0x96,0xd5,0x27,0xba,0x36,0xf7,0x25,0xc6,0x1c,0x7c,0x1b,0xdb,0xa3,0x6a,0x3e,0xb9,0x69,0x78,0xf7,0x51,0x46,0xe2,0x74,0xd3,0xfc,0xef,0x58,0x63,0x53,0x1d,0xd7,0xd0,0x8a,0x6a,0xd3,0xb0 +.byte 0xb9,0xbb,0xba,0x43,0xbf,0x8b,0x6b,0x04,0xd2,0xb1,0xe8,0xd1,0x72,0x3f,0xdc,0x2b,0x01,0xa6,0x2f,0x9c,0x7d,0x65,0xa1,0x9f,0x9b,0x4d,0x70,0x26,0x11,0x4c,0xb2,0xe1,0x01,0x0e,0x78,0xf2,0x32,0x87,0x2d,0x8e,0x95,0x02,0x76,0xca,0xe5,0x71,0x5f,0x36,0x35,0xb9,0xbb,0xc3,0xdf,0xf3,0x1e,0x1a,0x7a,0xe4,0x2c,0xdf,0x64,0x5d,0x96,0x12 +.byte 0xea,0x5c,0x14,0x73,0xa0,0xf1,0xbc,0xa9,0x6e,0x30,0x8a,0x47,0xf0,0x4b,0x9b,0x4c,0xc5,0xb0,0xbe,0x15,0x32,0x1b,0xde,0x0c,0x39,0x6a,0x6d,0x4e,0x3b,0x69,0x4c,0xb4,0x1f,0x56,0xf0,0xa1,0xb1,0x8c,0x29,0x5c,0x87,0x54,0xf2,0x5b,0x51,0x03,0x20,0x70,0x90,0x38,0x66,0x07,0xcc,0xd7,0xde,0x96,0x40,0x82,0xee,0xb5,0x87,0x2a,0x86,0xec +.byte 0x66,0x09,0xb7,0x4a,0xfe,0x4e,0x92,0x89,0x07,0xde,0x35,0xc4,0x6e,0x91,0x25,0xfd,0x18,0xfa,0xd9,0x8f,0xa7,0xa6,0xa7,0x6b,0x32,0xba,0xd3,0x1c,0x90,0xb9,0x8a,0x6c,0x9f,0x3f,0xb5,0x16,0x81,0x81,0xee,0xd7,0x55,0xc1,0x41,0x62,0xfd,0xe9,0x4c,0x5d,0xd7,0x70,0xdd,0xc6,0x4a,0x2b,0x42,0x77,0xe7,0x74,0xed,0x02,0x80,0x0d,0x7c,0x73 +.byte 0x8e,0xf0,0xd3,0xb0,0x20,0xbb,0xc8,0x82,0x06,0xdd,0x56,0x64,0xcb,0x9c,0xda,0xa1,0xa9,0x92,0xbc,0x8c,0x65,0x03,0xcd,0x68,0x87,0xa2,0x94,0x41,0x3c,0x36,0x96,0x1f,0xa4,0xd2,0x6d,0x5d,0x9f,0x2d,0x0c,0xf9,0x8a,0x82,0x19,0x93,0x47,0x62,0x71,0x8e,0x59,0xaa,0xf1,0x87,0xe0,0xb8,0xab,0x10,0x7f,0x4e,0xa8,0xa3,0xe2,0x32,0x58,0xb0 +.byte 0xcf,0x12,0xc0,0xf8,0x94,0x4a,0x61,0x36,0xdc,0x2d,0xb5,0x91,0xf9,0x0f,0x7d,0x91,0xd3,0xc7,0x03,0x8a,0xae,0x5c,0x22,0x8c,0x60,0x30,0xf4,0x71,0x51,0x00,0xf5,0x5d,0xe9,0x37,0x6c,0xae,0x64,0xff,0x45,0x35,0x4b,0x47,0x08,0xca,0xda,0x7b,0xe9,0xef,0xcb,0x27,0xcb,0x7e,0x3c,0xa6,0xd2,0x38,0x54,0x74,0xc3,0x7c,0xf8,0x71,0xb7,0x47 +.byte 0xe9,0xe0,0x43,0x03,0x3b,0x41,0x57,0xc3,0xda,0xa1,0xcb,0x64,0xb1,0x31,0x0d,0x12,0x45,0x3a,0xa0,0xad,0x6b,0xc7,0x26,0x62,0x50,0xcf,0x94,0x5a,0x30,0x8d,0xf6,0x91,0x49,0x9e,0xd5,0x84,0x0e,0x0c,0xe3,0x47,0x08,0x7f,0xa1,0x54,0x78,0x1b,0xa8,0x2c,0xbc,0x12,0x4f,0x7e,0x53,0x1b,0xca,0xfb,0x09,0x35,0xe0,0x9c,0x15,0xea,0xf6,0x3e +.byte 0xb2,0x20,0x9e,0x2c,0x81,0x6f,0xa4,0xb5,0x6b,0x04,0x6d,0xd1,0x90,0x66,0x46,0xdc,0x4b,0x71,0x7e,0x4b,0x3f,0xd6,0xe1,0xa8,0xc0,0xa7,0x45,0x85,0xe3,0x98,0x30,0xda,0x23,0x68,0x55,0xd8,0x96,0xb1,0xcc,0xeb,0xe1,0x95,0x0b,0x20,0xf3,0x4c,0xf2,0xc5,0xfa,0x0e,0xca,0xf5,0xc9,0xb3,0xd7,0xb4,0x1b,0x9f,0xef,0x82,0x56,0x4c,0xc5,0xa5 +.byte 0x21,0xda,0xcc,0x19,0x69,0x68,0xcb,0x37,0xb2,0x0c,0x73,0xb1,0x13,0x61,0x6b,0xca,0xda,0xfc,0xf7,0x1c,0xbc,0xd1,0x72,0x56,0xb8,0x7d,0xa1,0xef,0xc4,0x32,0x38,0xa3,0xdb,0x8b,0x2d,0x0a,0xce,0xcb,0x86,0x51,0x60,0xd2,0x47,0xf0,0x97,0x58,0xd8,0xa5,0x12,0x77,0xfc,0x32,0x04,0x29,0x61,0xfc,0xab,0xc2,0x42,0x86,0xd9,0x57,0x80,0xad +.byte 0x00,0xf0,0x9a,0x2a,0xac,0x52,0x27,0xd6,0xf8,0xd6,0x38,0xc8,0xfc,0xc1,0xab,0x4f,0x41,0xbf,0x8e,0x60,0x20,0xeb,0x24,0x36,0xd8,0xd8,0x25,0x6f,0xc8,0x5d,0x6b,0x00,0xdd,0x7a,0xe2,0x37,0xe4,0x13,0xd0,0xaa,0x5c,0x56,0x32,0x98,0x00,0x4b,0x8a,0x81,0xb1,0xfa,0xe8,0xf3,0xfa,0x0d,0xbb,0x66,0x6e,0x24,0xfd,0x3c,0x50,0x63,0x3a,0xf1 +.byte 0x72,0x63,0x18,0x71,0x6d,0xee,0x6f,0xf1,0x0e,0x1f,0x9e,0x9d,0x87,0x12,0x5c,0xdf,0x1d,0x9e,0xc0,0x0b,0x39,0x0e,0xd6,0x56,0x79,0x30,0xcb,0x07,0x7b,0x88,0xa5,0xbe,0xfd,0xd4,0x49,0xcc,0x92,0x6a,0xcc,0x78,0x1e,0xaf,0xee,0x89,0xc8,0x51,0x08,0x98,0x14,0x20,0xe5,0x52,0x93,0x18,0x6f,0xbb,0xdc,0xb2,0x68,0x14,0xd1,0xdb,0xe8,0x56 +.byte 0x24,0xd0,0x34,0xab,0xa6,0xfa,0xfe,0x72,0x5a,0xe3,0xe1,0x87,0x0d,0xf4,0xfa,0xa6,0xa6,0x6c,0xb6,0xcb,0xf8,0xfc,0x59,0xac,0xd9,0xb0,0xcd,0x15,0xa4,0x37,0x73,0x6e,0x70,0xc9,0x74,0xef,0x87,0x78,0x61,0xc2,0xd0,0x52,0x51,0xa9,0x2c,0xdb,0x9d,0xd9,0x3d,0xac,0xcd,0x52,0x39,0x69,0x2d,0x2a,0x4f,0xf3,0xb2,0x69,0xb9,0x01,0x3c,0x57 +.byte 0xeb,0x1b,0x0e,0x87,0xe9,0x42,0x58,0x83,0x6b,0xbc,0x72,0xc8,0x46,0x32,0x42,0x17,0x6a,0x19,0xa0,0xb3,0xf1,0x1c,0x96,0x9c,0x11,0x09,0x8b,0xc1,0x9e,0xe9,0x7f,0x18,0x8e,0xca,0xea,0x24,0x1b,0xce,0x12,0x57,0x1d,0x34,0xbe,0x60,0x60,0x2c,0xd8,0xa0,0x61,0x73,0xd6,0xf8,0xaf,0x15,0x26,0x84,0xd7,0xec,0xc0,0xbe,0x7e,0xa1,0xa8,0xba +.byte 0x2b,0xcc,0x20,0x67,0x6e,0xea,0x48,0x79,0x23,0xea,0x14,0x36,0x85,0x0a,0x56,0x3a,0xcd,0x5b,0x51,0xa4,0xf5,0x92,0x49,0xc2,0x55,0x62,0xed,0x88,0xde,0xd0,0x0c,0x01,0x36,0xb9,0x2e,0x94,0x80,0x75,0x8a,0x21,0x0a,0x07,0x45,0x68,0xd8,0x9d,0x49,0x7b,0xa7,0xb2,0x84,0xfa,0x3c,0xc4,0xd5,0x59,0xf9,0xc3,0xff,0xcf,0xe4,0x5f,0xea,0xbb +.byte 0x0f,0xae,0x7d,0x96,0xd3,0xe9,0x38,0xd1,0xb1,0x02,0xf6,0x4b,0x95,0x43,0x1c,0x69,0xa6,0x99,0xf5,0xdb,0x46,0x62,0xea,0x69,0x5a,0x08,0x2d,0x01,0x11,0xed,0x70,0x03,0x60,0x54,0xba,0x32,0x2c,0x0e,0x44,0x1f,0x8d,0xee,0x2e,0x39,0xab,0xc0,0xd4,0x88,0x11,0xef,0x07,0x3a,0x47,0xb9,0x6e,0x0c,0x22,0x9a,0xf3,0x89,0x01,0xfb,0xb8,0x2d +.byte 0x52,0xa0,0x42,0x4c,0xb3,0x9e,0xf5,0x4b,0x0c,0x78,0x0a,0x3b,0x29,0xae,0x4a,0xc0,0xb2,0xa3,0xc0,0x0d,0x38,0x07,0x49,0x9c,0xda,0x7c,0x48,0x81,0xba,0x53,0x0d,0x0d,0x78,0x8c,0xac,0x9b,0x3d,0x1f,0xaa,0xc1,0x32,0x54,0xca,0x54,0xe1,0xef,0x46,0x82,0x61,0xd0,0x88,0x04,0x53,0xb0,0x34,0xc2,0x23,0x9a,0x90,0xe3,0x73,0x9c,0x0d,0x46 +.byte 0x61,0xe5,0xc0,0x42,0x87,0x4a,0x3b,0x3a,0xf9,0xab,0xbe,0x4c,0xba,0x2f,0x88,0x03,0x6b,0x52,0x25,0x8c,0x9b,0xc0,0x13,0xb6,0x80,0x09,0x85,0x97,0x64,0x6d,0x65,0xcd,0x18,0x42,0x00,0xdf,0x76,0x4d,0x67,0xbf,0x04,0x7a,0x5f,0x7e,0x3a,0x5c,0x6f,0x1d,0x12,0x5b,0xbe,0xd2,0xc8,0xe5,0x09,0x45,0x4d,0xae,0xed,0xd8,0x77,0xc5,0x6f,0xb6 +.byte 0x43,0x09,0xe2,0xee,0xc9,0x5a,0x76,0xc5,0xeb,0xdd,0x96,0x23,0xb9,0xe5,0xfc,0xf2,0x3c,0xe1,0x67,0x5f,0x1b,0x10,0x39,0x47,0x67,0x8b,0x48,0x32,0xd0,0xbc,0xa0,0xa8,0x3e,0xc3,0x30,0x21,0x18,0x54,0x49,0xfe,0x8a,0x14,0x7a,0xe5,0x6e,0xbe,0x70,0xec,0xf6,0x97,0xa0,0xa4,0xf4,0xdd,0xaf,0xf2,0xde,0x50,0x1a,0x68,0xb9,0x1a,0x4b,0x37 +.byte 0xf8,0x29,0x16,0x4f,0x8c,0xa5,0x9e,0xd2,0x72,0x7f,0xf6,0x6b,0x7d,0xac,0xe4,0x17,0x93,0x39,0x8f,0xd9,0xdf,0x50,0x1f,0xce,0xf5,0x58,0xdd,0xcd,0xc2,0xb9,0x64,0xfc,0xad,0x8a,0x3c,0x2e,0x52,0x58,0x91,0x3b,0x78,0xb4,0xfd,0x4a,0x3b,0x13,0x5d,0x20,0xd5,0xdf,0xe7,0x52,0x3d,0x4c,0x2f,0x02,0x30,0xfc,0x24,0x17,0x99,0x6e,0x4b,0xfe +.byte 0x1d,0xf0,0xe6,0x86,0x32,0x37,0xb5,0xd5,0x09,0xa3,0xa5,0x3b,0xc1,0x88,0x9f,0x01,0x57,0x12,0x03,0x1d,0x60,0xd8,0x57,0xba,0xc6,0xfc,0xda,0xab,0x02,0xbe,0xab,0x89,0xf9,0x08,0x63,0xbd,0x42,0x11,0xf7,0xbf,0xd3,0x45,0x2b,0xa5,0x34,0x91,0x18,0xb9,0xb3,0x79,0xb4,0x15,0xa1,0x01,0x1a,0xf9,0x74,0x91,0x08,0x94,0xb2,0xf3,0xb2,0xca +.byte 0x0a,0x3a,0x4f,0x42,0x8a,0x16,0xf7,0x9e,0xbf,0x27,0x72,0x7b,0xff,0xd3,0xb9,0x4e,0xf5,0x8e,0x68,0xb5,0x91,0x23,0xef,0xeb,0x5d,0x7d,0xd8,0xc9,0xda,0x07,0x33,0xc9,0x1c,0x4a,0x7a,0xf2,0x72,0x64,0xb3,0x35,0x2e,0x54,0xec,0xc4,0xd9,0xee,0xea,0xda,0xfe,0x8b,0x1c,0x21,0x93,0x52,0x95,0x7c,0x2d,0xfe,0x56,0x05,0xdd,0x57,0x37,0xf2 +.byte 0x54,0x1c,0xe2,0x6c,0xc0,0xaa,0x71,0x67,0xdd,0x73,0x43,0x17,0x3e,0x76,0xdb,0x60,0xb4,0x66,0x62,0xc7,0x74,0x08,0x91,0x1f,0xd5,0x4c,0xa9,0xd0,0x34,0x33,0xea,0xb0,0x2c,0x0a,0x88,0xda,0xf7,0xca,0x91,0xf6,0x5f,0x9e,0x72,0xf6,0x18,0xf9,0x19,0x9d,0x84,0xf8,0x4c,0xe1,0xeb,0x45,0x29,0xaa,0xf2,0xa6,0xfd,0x64,0xf9,0x0b,0xfe,0x09 +.byte 0x1c,0xc2,0xde,0x19,0xdd,0x0f,0x02,0x16,0x65,0x70,0x33,0xd4,0x32,0x67,0x7b,0xc4,0xbb,0x11,0x60,0x4f,0xc3,0x4d,0x29,0x23,0x7e,0x84,0x58,0x51,0x43,0x7e,0x25,0x4f,0x3d,0xd4,0xe0,0x20,0x79,0xfd,0xce,0x59,0x49,0xf8,0xd1,0x53,0xca,0x2d,0x66,0xec,0xe5,0x7f,0xc8,0x14,0x06,0xc1,0x96,0x40,0xf2,0x61,0xa7,0x1b,0xf9,0x5e,0x97,0xfe +.byte 0x62,0x57,0x05,0xcc,0x6f,0x26,0x4b,0xa6,0x40,0x33,0x72,0x20,0xd3,0x1e,0x2b,0xb2,0x60,0xe7,0x56,0xda,0x87,0xd3,0xb4,0x5a,0x73,0x04,0xc9,0xc2,0x68,0xe3,0x18,0x74,0xd9,0x46,0x74,0x31,0xf4,0xf4,0xab,0xc4,0x0a,0xbc,0x66,0x4e,0x23,0x5f,0x92,0x7c,0x0a,0x81,0xdd,0xcc,0x79,0xee,0xb3,0x3d,0xc0,0x91,0x81,0xd0,0x79,0x39,0xd2,0x69 +.byte 0x5d,0xdc,0xc1,0x5c,0x61,0xb9,0x5e,0x87,0x32,0x73,0x70,0xd0,0xa8,0x7d,0xb5,0xd0,0xfc,0xf4,0xb6,0x55,0x9f,0x1f,0x8a,0xec,0xf4,0xb0,0x47,0xeb,0x3b,0x68,0x80,0x0b,0x79,0xd0,0x71,0x99,0xb1,0xd0,0xed,0x1f,0x9f,0x6c,0x2d,0x9d,0xae,0x1c,0x62,0x3b,0xec,0x3e,0x2f,0xb4,0x6f,0xbb,0x2e,0x1e,0xa9,0x7c,0xe8,0x5d,0x14,0x7d,0x0d,0x17 +.byte 0x6d,0x9c,0x54,0xce,0x64,0x93,0x8e,0x3b,0xa4,0xa9,0xfb,0xd9,0x44,0x06,0xbb,0xb8,0x7f,0xdf,0xd3,0xc2,0xa2,0xcf,0x5a,0xa2,0xa7,0xbb,0xb5,0x08,0xe2,0x67,0xdf,0x0e,0x4e,0xc6,0xcf,0x0a,0x79,0x1e,0xa5,0x60,0x1a,0x81,0xb1,0x8e,0x1b,0x27,0x7f,0x8d,0x28,0x50,0xa7,0x4a,0xe4,0x4b,0x61,0x6b,0xa9,0xfa,0xaf,0x82,0x83,0xfb,0x1f,0x2e +.byte 0xfa,0xce,0x18,0x0e,0x32,0x5f,0x5a,0xcf,0xac,0xaf,0x22,0x30,0x16,0xd7,0x97,0x99,0x0d,0xb8,0x92,0xa5,0x1d,0x44,0xb2,0xa5,0xc7,0x74,0xd2,0x81,0x8d,0x5c,0x38,0xda,0x9f,0x76,0xcb,0x47,0x6c,0xb7,0x08,0xd9,0xc1,0x52,0xd0,0x64,0x0a,0xf9,0xdd,0x3e,0xe8,0x99,0x15,0x4d,0xcb,0x7b,0x25,0x53,0x8c,0x13,0xb1,0xbf,0xb7,0xca,0x2d,0xce +.byte 0x71,0x48,0xee,0x5b,0x3a,0x01,0x5b,0xfd,0x22,0xfa,0x6f,0x17,0xcb,0x52,0xcc,0x0a,0x2b,0xbb,0x6d,0xce,0x2d,0x00,0xf5,0x9e,0x0d,0x58,0xf1,0xf4,0xa4,0x9f,0x13,0xf9,0x68,0x15,0xd7,0x02,0x41,0x6c,0x19,0x6b,0x66,0x9a,0x74,0xee,0xb4,0xb3,0xc7,0xec,0x60,0x19,0xbd,0xbb,0x97,0x22,0x7c,0x4e,0xe6,0xc6,0x00,0x03,0xa5,0x36,0x52,0xec +.byte 0x21,0xcf,0xc8,0xda,0x2c,0x14,0xa9,0xd8,0x75,0xab,0xea,0x05,0x8c,0x24,0x28,0x63,0xbd,0x58,0x35,0xd7,0x95,0xcb,0x14,0x89,0x04,0x99,0x7e,0x67,0x0d,0x07,0x35,0xdb,0x17,0x7c,0x72,0x2d,0xbc,0x89,0x9b,0xb4,0x16,0x21,0x2f,0x90,0xe8,0x8f,0xeb,0xc3,0x8d,0x86,0x0d,0x92,0xf6,0x4b,0x80,0x36,0x96,0x6b,0xd8,0x95,0x7b,0xad,0xe8,0xbf +.byte 0x77,0x9e,0xf4,0x93,0xcd,0xa5,0x06,0xbc,0x38,0xf2,0x57,0x25,0x54,0xfa,0x8e,0x19,0x8e,0x25,0x8e,0x3c,0x28,0xaa,0xf2,0x02,0x30,0xd4,0x47,0x89,0x36,0xb9,0xb7,0x01,0x5f,0x0c,0xd1,0x8d,0x93,0x7e,0xf0,0xf0,0xff,0x2f,0x8f,0xb5,0x97,0xa7,0x02,0xe8,0x9b,0xf2,0x51,0xe6,0x51,0x62,0xa5,0x27,0x26,0xc6,0x7a,0x39,0x7a,0xa9,0xaf,0x1e +.byte 0x03,0xd5,0x25,0xbe,0x3b,0x19,0x46,0xc4,0xdd,0xd6,0x5e,0x6a,0x18,0xc0,0x41,0x5f,0x53,0x89,0xd3,0x16,0xfb,0x3a,0x10,0xce,0x0d,0x8c,0x04,0x4c,0xcf,0xab,0xb9,0x0d,0x6c,0x45,0x6c,0x29,0xed,0x77,0x37,0x1f,0xd8,0x10,0x8a,0xfe,0x07,0xbd,0x7e,0xd7,0xa6,0x6b,0x80,0xde,0x3e,0x2c,0xa8,0xb1,0x38,0xcc,0xab,0x10,0x69,0x8f,0x58,0x3d +.byte 0x12,0xc7,0x9c,0xc1,0x0a,0xeb,0x3d,0x5e,0xf1,0x65,0xc6,0x09,0xcb,0x4b,0x09,0x24,0xa7,0x56,0x1d,0x1d,0x4c,0xd7,0x06,0xbd,0xe2,0x72,0x70,0xae,0x7e,0xe9,0xaa,0x97,0x6d,0xec,0xcb,0x55,0x0b,0x5d,0x45,0x3a,0x25,0x3d,0x52,0x0f,0x48,0x2f,0xe4,0xd0,0x5e,0x85,0x87,0xb6,0xa7,0x70,0x2f,0x9c,0x19,0x89,0x95,0x45,0x76,0x00,0xfe,0x27 +.byte 0xff,0xf8,0x73,0x59,0xba,0x98,0x92,0x4e,0x76,0x1a,0x90,0x1d,0xbc,0x1b,0xae,0x44,0xb6,0x63,0x86,0x4c,0x3c,0x8a,0x8f,0x3e,0x03,0x95,0x50,0x30,0xd8,0x0f,0x7f,0x6f,0xb6,0xe9,0xbe,0x2e,0xc9,0x55,0xe7,0x73,0xd6,0x77,0xdc,0xbc,0x67,0x54,0x31,0x47,0x30,0x46,0xe1,0xa4,0xf8,0xf3,0x90,0x4f,0x68,0x5a,0x52,0xe2,0xe7,0xdb,0xd9,0xfd +.byte 0xf6,0x36,0x2a,0xc1,0xdb,0x35,0x82,0x69,0xff,0xf9,0xea,0x53,0xff,0xcd,0x21,0x2c,0x26,0x79,0xd6,0x8c,0x74,0xe7,0x9e,0x85,0x1a,0x04,0xf5,0xed,0x89,0x16,0xf5,0xd7,0xf1,0x89,0xf1,0xb3,0x5b,0x47,0x42,0xcb,0x92,0x2e,0x70,0xf6,0x3e,0xfc,0x20,0x87,0x70,0xec,0x30,0x16,0xcc,0x88,0x64,0x13,0x58,0xf1,0x0d,0x17,0x90,0xc4,0xdb,0x07 +.byte 0xf5,0xe3,0x34,0x31,0x10,0x9c,0xa4,0x6a,0x4a,0xe6,0x6c,0x80,0x49,0x07,0x23,0x21,0xd6,0xf1,0xcb,0x4a,0xd1,0xb5,0xb7,0x63,0x94,0x4c,0x0a,0xce,0x90,0xf2,0x63,0x31,0x4f,0x96,0x6c,0x5d,0x3e,0xaa,0x10,0x20,0xd6,0xb6,0xbe,0xfa,0x3f,0x83,0xbc,0xa8,0x08,0x38,0xec,0x38,0xe4,0xe9,0xf5,0xb3,0x8e,0x32,0x31,0xcd,0x7c,0x08,0x98,0xf6 +.byte 0x0f,0x8a,0x8f,0xc1,0xd8,0x9e,0x05,0xb6,0x74,0x11,0x94,0xef,0x4f,0x8f,0xa1,0xc6,0x8c,0xdb,0xc3,0x27,0x4e,0xa3,0x30,0x94,0xf5,0xe8,0x2a,0x18,0x0a,0x51,0x9b,0x79,0xb2,0x1f,0xc3,0xa0,0x26,0xa9,0xf5,0xc4,0x9e,0x39,0xda,0x6a,0x53,0x8f,0x8c,0x4c,0x54,0x50,0x81,0xa0,0x0a,0xd3,0x7c,0x99,0x91,0xc7,0x3e,0x56,0x7d,0x53,0x8c,0x3c +.byte 0x51,0x44,0xa5,0x22,0x9d,0xd2,0x9b,0x13,0xcf,0xb8,0x0c,0xb8,0xd4,0xaa,0xb4,0xaa,0x8d,0xab,0x7c,0x06,0xca,0xbb,0x85,0xac,0x01,0xee,0xef,0xe7,0x74,0xd5,0x0d,0x64,0x91,0x1c,0xde,0x6c,0x05,0x37,0x1e,0x23,0x05,0x7e,0x38,0xdc,0x17,0xaf,0xa7,0x95,0x85,0x1f,0xaf,0xc8,0xe1,0xc2,0xda,0xda,0xf1,0x14,0x56,0x66,0x68,0x70,0x36,0x38 +.byte 0x7b,0xb8,0x22,0x9f,0xc4,0xeb,0x5d,0x76,0x97,0xc5,0xa3,0xb9,0x06,0x86,0x4f,0x20,0xab,0x7d,0xce,0x7d,0x78,0x59,0xc5,0x1f,0x73,0x81,0xf6,0x6d,0xb4,0xcc,0x10,0xc5,0x4d,0xe3,0x81,0xaf,0xbc,0x37,0x42,0x28,0x5f,0x51,0x1e,0xaa,0xc7,0x81,0x20,0xc3,0x89,0x35,0xf1,0x74,0x3a,0xe8,0x04,0x24,0xef,0x8b,0x70,0xe1,0x74,0xdf,0x87,0xd5 +.byte 0x3c,0x32,0x32,0x7d,0x03,0xd7,0xda,0x6d,0x8b,0x25,0x8d,0x11,0xa3,0xc2,0x27,0xdc,0xa3,0xfc,0xdf,0x70,0xa4,0x41,0xad,0xda,0xce,0x12,0x45,0x14,0xa1,0x96,0x16,0xd8,0x54,0x89,0x9e,0x78,0x7f,0x23,0x12,0xd1,0x15,0x08,0x7f,0xbd,0xf0,0x9a,0xf1,0x5b,0x07,0xd5,0xbc,0xab,0xab,0x15,0xae,0xda,0xf1,0x26,0x12,0x4e,0xd6,0x6c,0x35,0xc1 +.byte 0x6e,0x27,0x4d,0xa8,0x71,0x51,0x1e,0xae,0xa8,0x35,0x26,0x06,0x18,0x03,0xd8,0xae,0x9e,0x8b,0x07,0x30,0x10,0xfb,0x47,0x05,0x02,0xcc,0x0a,0xbd,0x57,0x43,0x15,0x0a,0x7a,0xb5,0x30,0x0b,0xa6,0x3c,0xa8,0xc9,0xf5,0x68,0xe1,0xfb,0xd1,0xe0,0xe7,0x44,0x6c,0xb4,0x44,0xb6,0xd1,0x2b,0x30,0x5e,0x17,0x89,0x40,0xcc,0x10,0x8f,0x97,0x8a +.byte 0xf3,0xf4,0x52,0x55,0xc4,0x8e,0x46,0xe5,0x24,0x0b,0x2a,0x5d,0x84,0xc1,0x4e,0xa8,0x5a,0x53,0xa8,0xce,0xc6,0x3f,0xa2,0xaa,0x3a,0x8f,0x51,0xed,0x4c,0xa6,0x34,0x6a,0x8c,0x18,0x9b,0x36,0x49,0x40,0x34,0xa3,0xe4,0xd8,0x3c,0x8a,0xfc,0x41,0xc9,0x35,0xfe,0x6e,0x3e,0x29,0xbc,0x04,0x61,0xaf,0x04,0x03,0x43,0x79,0xb5,0x77,0x27,0x25 +.byte 0xbe,0x85,0xc9,0x56,0xa4,0x17,0xc4,0x27,0x3d,0x53,0x1b,0x49,0x86,0xb2,0xb6,0x52,0x62,0x12,0x5d,0xe9,0x47,0x6f,0x65,0x78,0xf8,0x95,0x63,0xbc,0x73,0x6d,0xa6,0xb9,0xcd,0x17,0x39,0x56,0xb0,0xab,0x3a,0x15,0x5f,0x9a,0x98,0xfb,0xcd,0x51,0x4a,0x35,0x21,0xaf,0x07,0x4a,0x3d,0xfd,0x39,0x11,0x42,0xed,0xfc,0x7e,0x10,0x24,0xa5,0x0c +.byte 0xb2,0x4f,0x27,0xe4,0x78,0x32,0xfe,0xfc,0x8e,0x46,0x68,0xbb,0x2e,0x85,0x87,0x0f,0x01,0xde,0x1c,0x02,0xdd,0x82,0xa0,0x9e,0x30,0x31,0x8d,0x86,0x36,0x33,0xa6,0x59,0x16,0x78,0xae,0x1f,0x1d,0x27,0x0b,0x29,0x42,0x16,0x93,0x3b,0xe6,0xfb,0x8d,0xd5,0x48,0x42,0x61,0x39,0x5b,0xf7,0xea,0xd0,0x6f,0x67,0xd9,0x03,0x72,0xed,0x54,0xe1 +.byte 0xab,0x3f,0xa0,0xdc,0x4b,0x19,0xe6,0xe3,0xfe,0x5f,0x65,0x64,0x4c,0xa9,0x5c,0x52,0x36,0xb3,0x65,0x28,0x3e,0xe5,0x07,0x50,0xed,0xec,0x2f,0xc9,0xff,0x47,0x27,0xf6,0xfe,0xb8,0x60,0x60,0x52,0xe5,0xec,0x3c,0x4f,0x69,0x9f,0xaa,0x06,0x8a,0x99,0x9f,0xac,0xfc,0x0a,0x6f,0x8a,0xa4,0x0e,0x5c,0x58,0xb4,0x09,0xba,0x93,0x95,0x94,0x12 +.byte 0x9b,0x23,0x4f,0x93,0x28,0x6d,0xd0,0x76,0xfd,0xc9,0x87,0x3b,0xf1,0x8c,0x7d,0x56,0x84,0x5a,0x04,0x08,0x30,0xf7,0xf6,0x52,0x15,0xba,0xd6,0x7a,0x39,0x8c,0x5a,0xbf,0xeb,0x02,0x6d,0x31,0x30,0x92,0xbc,0xe2,0x07,0x21,0x16,0x96,0x70,0x66,0x00,0xe0,0x04,0xc5,0xa8,0xe4,0x08,0x6d,0x08,0x69,0x35,0xe2,0xb1,0x83,0x03,0x37,0xca,0xff +.byte 0x06,0x37,0x80,0xd5,0x1a,0xc5,0x31,0xfc,0x9a,0xb0,0x8a,0x4b,0x58,0xf3,0x00,0x4e,0xa4,0xfe,0x9e,0xe0,0x60,0xc7,0x3d,0x2c,0x52,0xb5,0x39,0xf0,0xa4,0x88,0x39,0x37,0xa5,0x26,0x8a,0xa3,0xe6,0x31,0xce,0xf3,0xa1,0x54,0x73,0xe7,0x69,0x38,0xef,0xa2,0xab,0x52,0x50,0x1a,0x45,0xcc,0x29,0x9c,0xb6,0xf4,0xde,0xc2,0xfe,0x7a,0x26,0xf7 +.byte 0x7a,0x6e,0x07,0xb6,0xd8,0x3f,0x77,0x60,0x35,0xae,0x6a,0x90,0xd6,0xb8,0x37,0xed,0x73,0x59,0x54,0xd9,0x0c,0x87,0x0e,0x81,0xef,0x69,0xc7,0xd4,0x8f,0x00,0x74,0x57,0x12,0xcf,0xa1,0x76,0xe8,0x45,0xf5,0x9a,0x4f,0xe2,0x5d,0x8a,0x89,0xb1,0x8b,0xea,0x9c,0x0a,0x1e,0x00,0x61,0x3b,0x66,0xbd,0xb5,0xd6,0xff,0xa3,0xff,0x52,0xc2,0x35 +.byte 0x81,0x05,0x08,0x2b,0xf9,0x52,0xda,0x74,0xd1,0x76,0x13,0xba,0x28,0x4c,0xb1,0xb1,0x82,0x5b,0x4e,0x79,0x39,0x22,0xf9,0x96,0x91,0x07,0x4f,0xf9,0xf2,0x25,0x25,0xb1,0x3e,0xda,0x07,0x5c,0x01,0x7b,0xfa,0x3e,0x95,0x92,0x1d,0xf8,0x44,0x06,0xc1,0xed,0x64,0x74,0x14,0x84,0x25,0xee,0x75,0xaf,0xe3,0x7c,0xd3,0xbe,0x7a,0x51,0x6b,0x80 +.byte 0x20,0x43,0x20,0x10,0x5f,0xf5,0xfc,0xd5,0xe8,0x06,0x43,0xad,0x10,0x6b,0x67,0x48,0xca,0xca,0x6e,0x3e,0x1c,0xdf,0x8f,0x7a,0x65,0xc8,0x5d,0xba,0x3b,0x67,0xeb,0x1f,0xc4,0x37,0xad,0xef,0x73,0x9e,0x18,0x8e,0xc1,0x99,0xaf,0x75,0xd3,0x91,0x73,0xc3,0x3a,0xb2,0xfe,0xff,0x30,0x81,0xc4,0x4f,0x37,0x37,0x23,0x96,0x17,0xf1,0xa2,0x9b +.byte 0x55,0x6e,0xd6,0xb3,0xc4,0x98,0xa3,0x32,0xb6,0xff,0x86,0x87,0x77,0xf4,0xad,0x16,0x3e,0xf0,0x24,0x01,0xb4,0x8e,0x1e,0x0f,0x10,0xa4,0x2e,0xe4,0x79,0xe6,0x88,0xe7,0x09,0x58,0x5e,0x97,0xad,0x0d,0x72,0x05,0xbf,0x2f,0x3f,0x99,0xee,0x8a,0x84,0xc3,0x62,0x43,0x52,0x6d,0xab,0x66,0xcf,0x9f,0x4e,0xf2,0x0d,0x13,0x15,0x49,0x84,0x5e +.byte 0x6c,0x8d,0x2d,0xef,0x53,0x16,0xa0,0x63,0xbe,0x05,0xb8,0x9b,0x23,0xca,0xca,0xb8,0xdd,0xbc,0x96,0x68,0x35,0x43,0x63,0x30,0x8e,0xaf,0x53,0x98,0xe2,0x76,0xe8,0x89,0x00,0x29,0x11,0x70,0xd5,0x94,0xbd,0x78,0xff,0xf6,0x88,0x4a,0x3d,0x99,0xd9,0x7e,0xdf,0xa8,0x33,0x92,0xa2,0xc0,0x32,0x42,0x73,0x08,0xd4,0x55,0x5d,0x18,0x93,0xca +.byte 0x7e,0x33,0xe3,0x51,0xc7,0xb7,0x24,0x62,0x69,0xf4,0xab,0x36,0xe3,0x22,0x10,0x9b,0xe0,0xbd,0x48,0x65,0x30,0x9c,0xfe,0xeb,0x3f,0x7f,0x22,0x67,0xcc,0x87,0x5a,0x71,0xb0,0xd1,0x19,0x82,0x1c,0xb2,0xf1,0x73,0xd2,0xd6,0x3f,0xef,0xe3,0x2f,0x25,0xf3,0x8b,0x21,0x4e,0xbf,0x0e,0xc1,0xd2,0x8a,0xbb,0x04,0xde,0xcf,0xd1,0x77,0xba,0xaa +.byte 0xc7,0x41,0x68,0xce,0xc4,0x64,0xf9,0x3a,0x2f,0x1c,0x0b,0x22,0xf8,0x60,0x09,0x76,0x31,0x88,0x62,0x3a,0xf3,0x49,0xe6,0xda,0x4b,0xd3,0xf3,0x35,0xaa,0x56,0x4c,0x2f,0x7f,0x03,0x3e,0xf8,0xcb,0x5e,0xed,0x37,0xa1,0x29,0xe8,0x20,0xf5,0x4a,0x32,0x73,0x30,0xfd,0xd1,0xf6,0xb4,0xa1,0x30,0x87,0xcb,0x21,0x63,0xf5,0x3a,0xad,0x05,0x1a +.byte 0x34,0xf5,0x32,0xf6,0x02,0xf3,0x10,0x52,0xfd,0x86,0x37,0x1f,0x5d,0xe4,0x2e,0x31,0xcb,0xb8,0x4c,0xeb,0xdd,0xea,0x01,0x0d,0x94,0x13,0xa8,0x8f,0xf0,0x52,0x4e,0x0d,0x4f,0xd1,0x24,0xeb,0x0f,0x2b,0xb1,0xaa,0xc5,0xc8,0x52,0xb9,0xbe,0x21,0x48,0x2a,0x53,0x98,0xe4,0x00,0x72,0x64,0xdb,0x44,0x48,0x36,0x60,0xe7,0x81,0xdc,0x25,0x85 +.byte 0x4d,0xaf,0xa8,0x0d,0xfb,0x07,0x76,0x4f,0x6a,0x30,0x3c,0x7c,0x3b,0x36,0xa9,0xf8,0xae,0x81,0x03,0xe9,0x19,0xdf,0xdb,0xd9,0x7f,0x59,0xe0,0xd7,0x50,0x14,0x9f,0x67,0x3d,0xc7,0xdf,0xa8,0x44,0x86,0x29,0x81,0x65,0x44,0x9e,0x37,0x27,0xdd,0x2f,0x33,0x59,0xf7,0xaa,0x17,0x34,0x8c,0x1c,0xa7,0x8e,0x06,0x46,0xf1,0x43,0x87,0xa9,0xb7 +.byte 0x85,0xec,0x92,0x0d,0xdd,0x78,0x55,0x99,0xfb,0x1c,0x66,0x85,0x0d,0x59,0x31,0x00,0xbc,0xd9,0x9b,0xbb,0xfb,0xfc,0xb2,0x36,0x3c,0x34,0x8f,0x4a,0xb6,0x74,0x9c,0x32,0x6f,0x69,0x6c,0x3e,0x68,0x7e,0xec,0xeb,0x58,0x6a,0xf5,0xa2,0xbb,0x04,0x68,0xdb,0x8c,0xf0,0x04,0xba,0xf7,0xf7,0x50,0xd0,0x60,0xba,0x45,0x73,0x0f,0x2c,0x2f,0x97 +.byte 0x58,0xcc,0xa2,0xbe,0xfe,0x5e,0xf9,0x44,0x03,0x8b,0x99,0x56,0xb0,0x4f,0xe1,0xd0,0xa5,0x9f,0xd1,0xfc,0x95,0x44,0x4b,0x01,0x24,0xc0,0x4c,0x91,0xc1,0xb5,0x99,0xe7,0x5f,0x2f,0xcf,0x5d,0x4f,0x64,0x6e,0x54,0x51,0x0c,0x35,0x5f,0xa8,0x7b,0x27,0xa0,0x7d,0xb1,0x90,0xc2,0xdd,0x50,0xef,0x09,0x6f,0xed,0x25,0x6b,0xf5,0x6f,0xc1,0x97 +.byte 0xea,0xd5,0x49,0xf5,0x40,0x60,0xc3,0xbb,0x0d,0x82,0x15,0xa5,0xf7,0xfe,0xa1,0x20,0x13,0x9e,0xbb,0x43,0x58,0xba,0xd2,0xe8,0x89,0xaa,0xfc,0xe0,0x47,0x6b,0xac,0x91,0x8b,0xeb,0x4f,0xf5,0xda,0xf5,0xc8,0x11,0x64,0x7c,0x8d,0x43,0x92,0xf2,0x84,0xeb,0xfb,0x5c,0x1b,0x6b,0x68,0x8e,0x3c,0x66,0xb2,0xd1,0x8e,0x67,0x44,0xbf,0x69,0x3b +.byte 0xb9,0x41,0x78,0x8d,0xc8,0x7b,0x81,0x61,0x70,0x6e,0xe2,0xfc,0xd2,0x96,0x31,0x31,0x2f,0x27,0x90,0xf2,0xc4,0xed,0xbd,0xb5,0x0e,0x91,0x7d,0xd0,0xec,0x3c,0xe9,0xcf,0xf2,0x07,0xac,0x54,0x44,0x9a,0x24,0x41,0xcb,0x2a,0x86,0x30,0x18,0xba,0x65,0x59,0x41,0x00,0x59,0xbf,0x3d,0x01,0x8a,0x51,0xe5,0xd2,0x90,0x8c,0x7d,0xd7,0xad,0x71 +.byte 0xdc,0x45,0x62,0x95,0xf9,0x9f,0xe8,0x55,0x6d,0x48,0x22,0x32,0xcb,0x9a,0x55,0x65,0xe5,0xdf,0xee,0x22,0x99,0x91,0xd7,0xed,0x33,0x04,0x72,0xc7,0xc5,0xb2,0x56,0x5e,0x8f,0x38,0x4b,0xd0,0x61,0x4b,0x4b,0x04,0x4c,0x4c,0x2b,0x23,0x00,0xd4,0x5c,0xdd,0x84,0x8d,0x73,0xf4,0xf7,0xef,0xd5,0xdb,0x2b,0xec,0x54,0x86,0x37,0x01,0x64,0x56 +.byte 0xef,0x73,0x9f,0xb4,0xb6,0xd2,0xf4,0x33,0x93,0xbd,0xd7,0xd9,0x6e,0x8f,0x60,0x85,0xbc,0xa6,0x16,0x3f,0x3f,0xc3,0xd7,0xfc,0xb6,0x82,0xf0,0xe5,0x1e,0x2c,0x51,0x48,0x27,0x50,0x3e,0xdb,0xe6,0x86,0x3b,0xa1,0xfa,0x09,0x39,0x04,0x6f,0xb1,0x85,0xbd,0xda,0x4d,0x2f,0xd1,0x40,0x6f,0x2e,0x2b,0xf2,0x9a,0x4d,0x8e,0xb2,0xc5,0x6e,0x21 +.byte 0xf9,0xdd,0xc9,0x2e,0x81,0x18,0x7b,0x88,0xb9,0x86,0x36,0xe5,0xb2,0xdd,0x19,0xb4,0x7f,0x5d,0xc0,0x20,0x34,0xdc,0x63,0x7d,0x8c,0x80,0x0f,0xe6,0x85,0x14,0xbb,0x87,0x6c,0x3e,0x39,0x53,0x60,0x3d,0xc5,0x46,0x11,0xa3,0x96,0x60,0x6f,0xe9,0xfe,0x59,0xcc,0xed,0x4d,0xdb,0xa3,0xa1,0xf1,0x71,0x0b,0xb0,0x1f,0x89,0x4c,0x32,0x59,0xa5 +.byte 0x7d,0xf7,0x3e,0x5b,0xca,0xa4,0xe1,0xc3,0x50,0xac,0xdf,0x00,0xad,0x45,0x59,0x9e,0x23,0x5f,0x52,0xbd,0x36,0x78,0x55,0xcf,0x90,0x91,0x41,0x14,0xdb,0x76,0x3a,0x43,0x39,0x89,0xe1,0x93,0xc8,0x66,0x91,0xc7,0x42,0x06,0x6f,0xbb,0x35,0x1e,0x07,0x52,0x5a,0xe4,0x41,0x9f,0x65,0xe0,0xdc,0x49,0x8c,0xd3,0x5f,0x16,0x21,0xc9,0xb8,0x8a +.byte 0xc2,0x56,0x91,0xcb,0x18,0x6b,0x38,0x7b,0x3a,0xeb,0x91,0x3c,0x0d,0x6a,0x1f,0xd6,0xc6,0xd7,0x56,0x8d,0xd3,0x76,0x1c,0x9d,0xed,0x3d,0xb6,0x92,0x71,0x6e,0x73,0xc6,0xb8,0xa2,0x1c,0x25,0xb9,0x3c,0xd4,0x41,0xf7,0x8f,0x39,0x60,0xe6,0x27,0xf2,0xc6,0x5f,0x56,0x08,0x7c,0xd3,0x16,0x9d,0x06,0xc0,0xca,0x3d,0xc6,0x61,0xb0,0x21,0x51 +.byte 0x6d,0xca,0x82,0x59,0xe6,0xbb,0x99,0xa2,0x4f,0xfc,0x71,0x66,0x2b,0x4e,0x40,0x62,0x97,0x34,0x73,0x4a,0xe5,0xf0,0x4f,0x4c,0x36,0x4c,0xdb,0x03,0xa9,0x87,0x29,0x21,0x5d,0x91,0x5b,0x89,0xb8,0x3d,0x65,0xc7,0x58,0x0a,0x81,0xb5,0x3e,0x22,0xa1,0x57,0x95,0xbe,0x60,0xf5,0xeb,0xb3,0x49,0xdf,0xd9,0xa2,0x31,0x36,0x5f,0xb2,0xa6,0xf6 +.byte 0x66,0x88,0x88,0x8e,0xa3,0x2c,0xac,0x5e,0xa1,0x33,0x16,0x64,0x08,0x47,0xc8,0xbc,0xc2,0xe9,0xdb,0x73,0x57,0x50,0xd4,0x24,0x01,0x26,0x26,0x04,0x4f,0x8a,0xc0,0x7a,0x97,0x14,0xf2,0xd0,0xbe,0x03,0xea,0x8a,0x25,0xcb,0x98,0xe7,0xbd,0x67,0xff,0x32,0xfd,0x8a,0x7d,0x11,0xe1,0xb2,0x91,0xb5,0xa0,0xb6,0x3c,0x2c,0xb3,0x6e,0x35,0x61 +.byte 0x86,0xbc,0x37,0x15,0xf8,0x3b,0x0d,0x84,0x83,0x69,0x76,0xb0,0xaa,0x8f,0x4f,0xca,0xba,0x54,0xfe,0x42,0xc8,0xba,0x9a,0xd5,0x53,0x69,0x67,0x29,0x23,0x3a,0x6a,0x75,0x97,0xb4,0x29,0x2e,0x62,0xe3,0x95,0x82,0xb3,0xa0,0xa1,0xb7,0xdf,0xc2,0x66,0x4d,0xdd,0x0d,0xda,0xda,0xc2,0x42,0xe0,0x69,0xb1,0xab,0x3c,0x44,0x39,0x11,0x3b,0x0a +.byte 0xd6,0x96,0x2c,0x36,0xb0,0xa0,0xed,0x3d,0x0c,0x63,0x8b,0x90,0xe4,0xb9,0x5f,0x4c,0x27,0x70,0x87,0xb3,0x54,0xe2,0x36,0x74,0x6f,0x3e,0x22,0xb1,0x3b,0x1b,0xba,0xdb,0x1c,0xbd,0x9c,0x6d,0x84,0xbd,0x33,0xfb,0xc0,0x98,0x4c,0xcf,0x7a,0xe8,0x41,0xdb,0x32,0x1f,0xb7,0x64,0x19,0xdb,0x87,0xe7,0xf9,0x52,0x40,0x8c,0xc6,0x89,0x98,0x15 +.byte 0x69,0xde,0xfa,0x29,0x9a,0x0f,0xaf,0xb0,0xad,0x71,0x35,0xab,0xab,0x34,0xe0,0xf4,0x03,0x24,0x6f,0x94,0x38,0x87,0xba,0x68,0xd5,0x1f,0x58,0x88,0x3e,0x12,0x20,0x57,0x43,0xde,0xd0,0xbc,0xaa,0x31,0x8f,0xbc,0x88,0xa0,0xdf,0x5a,0xcc,0xd1,0xba,0x9c,0x18,0x80,0x4e,0x8f,0x68,0x91,0x9c,0x57,0x3b,0x5a,0x62,0xc7,0x29,0x3e,0x49,0xc7 +.byte 0x23,0x26,0xfd,0x9e,0xd0,0xb0,0x4f,0xd4,0xb2,0xa9,0xa8,0x4c,0x66,0x54,0x52,0x75,0x6b,0xbf,0x63,0x76,0x49,0x3b,0xa3,0xb2,0x8f,0x87,0x9d,0xb4,0x8f,0x07,0x3c,0x8e,0xae,0xe1,0x0e,0x9a,0x86,0x90,0x58,0x73,0x8a,0xb3,0xa9,0xab,0xe6,0x27,0xd7,0x70,0x94,0x77,0x12,0xdc,0x71,0xdf,0xcf,0xba,0xdd,0x85,0xfe,0x28,0xaa,0xcd,0xcc,0xe8 +.byte 0x5f,0xd4,0xd8,0x45,0x6f,0x20,0xa8,0x5e,0x40,0x91,0x3b,0xd7,0x59,0x92,0xb8,0x7d,0x2b,0x8b,0x38,0xbd,0xfe,0x7b,0xae,0x5c,0xee,0x47,0x9b,0x20,0xb7,0xf3,0xad,0x75,0xa9,0xe1,0x96,0xc8,0xb2,0x30,0xfe,0x0c,0x36,0xa2,0x02,0xf4,0x3b,0x30,0xfd,0x91,0xfa,0x5f,0xd6,0x18,0x1a,0xcb,0xd2,0x26,0xbb,0x67,0xbe,0x1c,0x99,0xa5,0x4f,0x57 +.byte 0x40,0xb5,0xed,0xd6,0x84,0xfd,0x6b,0x00,0xc8,0xe7,0x18,0x1a,0x9f,0xf7,0x3b,0xd1,0xcc,0x12,0xeb,0x9d,0x61,0xf0,0x8d,0x64,0x08,0x93,0x61,0xc4,0x3e,0xdb,0xda,0x15,0xb1,0xd6,0x2c,0x84,0x2a,0xd8,0xd2,0xa1,0x66,0x4e,0xc9,0xd6,0xbf,0x7e,0xb6,0x22,0xfa,0x35,0x5e,0xdc,0xc0,0x31,0x02,0xb8,0x17,0x46,0x9e,0x67,0xd3,0x6a,0x8f,0x33 +.byte 0x85,0xc3,0xfe,0x36,0xbc,0x6f,0x18,0x8a,0xef,0x47,0xf1,0xf2,0x6e,0x15,0x6c,0xb1,0x4a,0x4b,0x13,0x84,0xd5,0x1b,0xf9,0xa2,0x69,0xcd,0xc7,0x49,0xce,0x36,0x8e,0xe5,0xd5,0x35,0x05,0x7c,0x7f,0xc6,0x15,0x29,0x2e,0x64,0xa6,0x91,0x9d,0xe5,0x9d,0x90,0xe7,0x26,0xec,0x75,0x19,0x58,0x57,0xf2,0x19,0x7b,0x24,0x7d,0x19,0xd3,0x72,0x69 +.byte 0xaa,0xa2,0x8c,0xe3,0x3d,0x38,0xb9,0xf0,0x5b,0xe9,0x3b,0xaa,0x96,0xef,0x2c,0xfc,0xf5,0x13,0xa6,0xa9,0x57,0x8c,0xa9,0x3a,0xc1,0xf0,0x2d,0x57,0x06,0x08,0xe3,0x9c,0xfe,0x82,0x8a,0x6a,0x79,0x5b,0xef,0x2b,0x81,0x83,0x01,0x53,0xac,0xdc,0x79,0x93,0x9b,0x23,0xd4,0xae,0x17,0x6f,0x62,0xaa,0x33,0x41,0xa6,0x31,0x1c,0x7b,0x46,0x2b +.byte 0x17,0xd3,0x6f,0x66,0x73,0x54,0xee,0xa1,0x08,0xee,0x8f,0x0f,0x0e,0x53,0xa7,0x49,0x17,0xdb,0x35,0xaf,0x4e,0x94,0x87,0x8e,0xff,0xf4,0x2b,0x29,0x01,0x45,0xa3,0x0a,0xd9,0x13,0x38,0x09,0x46,0x2c,0x56,0x97,0xd7,0xee,0x24,0x43,0xd1,0x20,0xed,0x38,0xde,0x52,0x13,0x38,0x06,0xd3,0x97,0xc7,0x48,0x8b,0x72,0x0a,0xc5,0xca,0x75,0x2c +.byte 0x04,0x9e,0xee,0x14,0xe7,0xda,0x59,0xc2,0x54,0x7a,0x72,0x55,0x35,0x00,0x93,0xb7,0xb9,0x81,0x01,0x46,0xae,0x43,0x81,0x34,0xd7,0xb4,0x7a,0xfc,0xfc,0x98,0x2b,0x29,0xe5,0x5e,0x9d,0x8e,0xef,0xd4,0x44,0x9d,0x9a,0xbe,0xdb,0x83,0x33,0x18,0x9e,0xbd,0x0f,0x34,0x4d,0xd9,0x34,0xe0,0x2c,0x1f,0x10,0xaa,0x06,0x5e,0x54,0x51,0x72,0xec +.byte 0xbf,0x6b,0x3e,0xb9,0xdd,0x37,0xc3,0xe1,0xbe,0xbe,0x1d,0x86,0xde,0x12,0xca,0x82,0xc5,0xe5,0x47,0xf8,0xbe,0xef,0xb6,0x79,0xd5,0x3c,0x69,0x0a,0x35,0x3e,0xd3,0xf8,0xaf,0x5b,0x8e,0x69,0xff,0xb2,0xf7,0x91,0xc2,0x70,0x22,0x97,0x1c,0x5c,0x56,0x25,0x5a,0xcf,0x31,0x7a,0x37,0xce,0xc7,0xf2,0x98,0xdc,0xb5,0x58,0x71,0x5a,0x60,0xe2 +.byte 0xfe,0x4f,0xf3,0xe2,0x2a,0xca,0x22,0x3e,0x07,0xc2,0xea,0x23,0xc8,0x04,0x97,0x7f,0xca,0xf6,0xf8,0x12,0x06,0x88,0x81,0xee,0xb7,0xdd,0x56,0x9e,0x0f,0x36,0xd3,0x09,0xa8,0x74,0x4d,0x8b,0x8f,0x31,0x64,0xbe,0x9d,0x7b,0x68,0x50,0xc8,0x64,0x40,0x3b,0x0c,0x04,0xb9,0x4b,0x9e,0xff,0x7e,0x5d,0xd8,0x57,0xa0,0xe5,0x6d,0xc2,0x37,0xe7 +.byte 0xd1,0xd9,0x96,0xaa,0x16,0x3e,0xa2,0x9d,0x32,0xe7,0x1e,0x11,0x6e,0x41,0xe2,0xa0,0xe1,0x6f,0x32,0x6d,0xd5,0x38,0x0c,0x27,0x27,0xa9,0xc2,0x04,0xc6,0xe7,0x8d,0x7d,0x7b,0x30,0xbe,0x54,0x6b,0x82,0x37,0x39,0x53,0x54,0xc9,0xac,0xcb,0xd1,0x31,0x79,0xd4,0x7b,0x85,0x07,0xf4,0xf4,0x5d,0x33,0xc7,0x91,0x4e,0xe5,0x13,0x78,0x09,0x42 +.byte 0x29,0x48,0xaf,0x82,0xb1,0x88,0xd4,0xd3,0x57,0x50,0x38,0xa7,0x66,0x41,0x63,0x34,0x2a,0x3c,0x5e,0x8f,0xc4,0xc1,0x00,0xa1,0x22,0xbe,0x5e,0x64,0xb0,0x60,0x9b,0x42,0x9d,0xc6,0x59,0x5c,0xcc,0x29,0x6f,0x64,0x5b,0x5c,0x0f,0xb2,0xae,0x21,0x0c,0x9a,0x6a,0x19,0xb9,0xa6,0x32,0xf8,0xdc,0x82,0xea,0xba,0x27,0xcf,0x42,0xd3,0xde,0x78 +.byte 0xfe,0x9c,0xa5,0x36,0xb6,0x24,0xb6,0x0d,0x5b,0x67,0x6c,0xf5,0x16,0xbf,0x67,0x54,0x4f,0xe4,0x83,0x29,0x75,0x42,0x9a,0xbb,0xd5,0xe7,0x01,0x1f,0xbd,0x80,0x1a,0x7a,0xb6,0xe1,0x2b,0x5d,0x71,0x93,0x00,0xad,0xf6,0x11,0x8d,0x67,0xdc,0x9c,0x8f,0xf0,0x09,0x3f,0xf9,0xa4,0xd6,0xe0,0xdd,0x95,0xea,0xfb,0x71,0x76,0x21,0x31,0x6d,0x48 +.byte 0x0a,0x27,0xa8,0xa6,0x3a,0x7f,0x42,0x6b,0x7e,0xd7,0x6e,0xd5,0x42,0x97,0xad,0x55,0xae,0x26,0x3c,0xde,0x3f,0xaf,0xfd,0x1d,0x6d,0xd3,0xeb,0x84,0xad,0x6d,0xd1,0x4a,0x85,0x1a,0xf7,0x99,0xa4,0xd0,0x48,0xfb,0xf6,0xfe,0xc6,0xea,0x61,0x77,0xe2,0x56,0x87,0xc1,0x36,0x44,0xb4,0xe3,0xd7,0xd9,0x6d,0x3e,0x1b,0xf4,0x72,0x3e,0xfe,0xa5 +.byte 0x47,0xf8,0x3f,0x1a,0x6e,0x43,0xf5,0x67,0xfe,0x90,0x96,0x9b,0x52,0xde,0xab,0xfb,0x45,0x7d,0x93,0xea,0xc3,0x40,0xe1,0x5f,0xcd,0xad,0x3b,0xe9,0x4e,0x36,0xc5,0x38,0xf4,0x66,0xde,0x4b,0xc8,0x2a,0xc3,0xa2,0x3a,0x2a,0xf1,0xd1,0xe8,0x01,0x07,0x37,0xca,0x42,0xbf,0x4f,0xd8,0xc5,0x50,0x93,0x1a,0x01,0x1d,0x51,0x41,0x6e,0xbf,0x68 +.byte 0x93,0x2e,0xdc,0x41,0x23,0xf3,0x13,0xe7,0x09,0xfa,0x39,0x6d,0xee,0x41,0x49,0xbb,0x78,0x04,0xcf,0xc9,0xbb,0x11,0xaa,0x57,0xb5,0x3e,0x4c,0x3a,0x77,0xb7,0x0b,0x38,0x34,0x48,0xd0,0x99,0x20,0x55,0xcd,0x43,0x2f,0x68,0x66,0xb0,0xe6,0x75,0x41,0xe4,0xae,0xfd,0x96,0xe8,0x01,0x4c,0x0b,0x5c,0xbc,0x4f,0x45,0x70,0x08,0x9e,0xf7,0x68 +.byte 0x9e,0xbb,0xe5,0x39,0x20,0x3f,0xbe,0xd3,0xe3,0x95,0xba,0x98,0xd5,0x12,0x2e,0x87,0xd4,0xf4,0x12,0xa2,0xcb,0xd4,0x51,0x53,0x93,0x67,0x06,0xf1,0x21,0x0e,0x92,0x8f,0x9f,0x9e,0x6c,0x16,0xa4,0x2c,0x6d,0xb0,0xd0,0xe1,0x87,0x2f,0x09,0x2c,0x8f,0x4b,0x89,0x1f,0xab,0x66,0xf1,0xcd,0x6e,0x67,0xaf,0x07,0x99,0x18,0x1b,0xda,0xc8,0x65 +.byte 0x81,0xa3,0x37,0x8a,0xad,0xe4,0x1d,0xfd,0x82,0xa0,0xf1,0xe1,0x1e,0x8d,0x0b,0xf7,0x07,0x7c,0xb3,0x10,0xc8,0x5a,0xa9,0xcc,0xc8,0xd0,0x2e,0x5a,0x71,0x45,0x4c,0x30,0xf0,0x10,0xe0,0xf6,0x0d,0x0d,0x11,0xb4,0x83,0x40,0x75,0xee,0xb9,0x24,0x04,0xe3,0xba,0xb3,0xd3,0x00,0x57,0x71,0x98,0xf0,0x4b,0x35,0x8d,0xd8,0x71,0xa0,0xcc,0xaf +.byte 0x46,0x54,0x67,0x65,0x70,0x0b,0x9c,0x61,0xf8,0xd4,0xb2,0x35,0xfd,0xcf,0x2b,0x3a,0x48,0x5b,0x03,0x86,0xd8,0x13,0x48,0x8a,0x55,0xa5,0x4d,0xef,0x42,0x41,0xbb,0x6a,0x8c,0x92,0x46,0x87,0x82,0x09,0x43,0xf3,0x94,0x1d,0x23,0x36,0xfe,0x6f,0xb8,0x9f,0xfa,0xf9,0x92,0x27,0x3c,0xcc,0x47,0x89,0x5c,0x7f,0x81,0x42,0x74,0x12,0x14,0xff +.byte 0x98,0x63,0xc0,0xfb,0x70,0xff,0xc7,0x65,0x5a,0xc3,0xb9,0x74,0x1b,0x71,0x3c,0x2c,0x47,0x79,0x07,0xb9,0x3c,0xc2,0x5f,0x48,0x4f,0xbd,0xaf,0x03,0x05,0x57,0xa9,0x84,0x33,0xc8,0x0d,0xd5,0xac,0x42,0xdb,0x4b,0x57,0x46,0x41,0xf0,0xe4,0x08,0x0d,0xf3,0x43,0x41,0xa5,0x14,0xb7,0xcd,0x64,0x23,0xc9,0xfe,0xff,0x12,0x97,0xc6,0x2f,0x8d +.byte 0x9e,0xf2,0x1d,0x33,0x26,0x3c,0x57,0x17,0xe1,0x7b,0x92,0x3f,0xb6,0xf4,0xd9,0xf8,0xe0,0x37,0xe6,0x18,0x7d,0xa7,0x8a,0x1e,0xe8,0xd8,0x56,0xa6,0x63,0xdf,0xa3,0x99,0x16,0x74,0x48,0x01,0xaf,0x95,0x55,0x40,0xce,0xa8,0x0d,0x30,0x01,0x09,0x40,0xc9,0x9d,0x3d,0xdf,0x4e,0x00,0xe0,0x2a,0xe6,0xdb,0xa2,0x79,0x42,0x57,0xd0,0x3d,0x81 +.byte 0x7f,0x67,0x3a,0xa9,0x63,0xb3,0xd4,0x60,0xa7,0xab,0x54,0x46,0xb0,0xbe,0xb0,0x83,0x72,0xec,0x47,0x0f,0xc7,0xd1,0xed,0x16,0x96,0xbc,0xa5,0x62,0x38,0xdb,0x88,0x2b,0x25,0x26,0x27,0x56,0x7f,0x46,0x39,0xe8,0x4e,0xc0,0x6c,0x62,0xf8,0x80,0x68,0x56,0x8a,0x93,0x51,0x95,0x77,0xe3,0x11,0x7b,0xaf,0xc4,0xcf,0x34,0x5a,0xd5,0x26,0xfc +.byte 0xa2,0x18,0xb0,0xc0,0xa5,0x8b,0x25,0x70,0x40,0x70,0x29,0xc3,0xda,0x80,0x3d,0xe2,0x59,0x49,0x7f,0xdd,0x62,0x6e,0x5a,0xe6,0x27,0x73,0xce,0xb6,0x32,0x37,0x5f,0x73,0x12,0x2b,0x34,0x84,0xff,0x85,0xe3,0xb5,0x93,0x41,0x47,0xc5,0xf5,0x0e,0x21,0xfb,0x24,0x0f,0xdf,0x7b,0xb4,0x29,0x7f,0x67,0x2a,0x38,0x79,0xf0,0x54,0x8a,0x94,0x68 +.byte 0xe2,0x0b,0xb0,0xd4,0xb2,0xa4,0xe4,0xfb,0x3b,0xe6,0xe7,0x59,0x41,0xbd,0xed,0x62,0xce,0x50,0x1a,0x47,0x92,0x92,0x8d,0x80,0xa6,0x05,0x7a,0xb0,0xce,0x48,0x9c,0xb0,0x64,0xea,0xe0,0xa5,0x77,0xff,0xc1,0x82,0x99,0x7b,0xfb,0x74,0x53,0xfa,0x41,0x9a,0x2c,0xb4,0xbb,0xd2,0x26,0xa1,0x80,0x68,0x17,0xaa,0x8f,0x14,0x52,0xb6,0x5d,0xe0 +.byte 0x69,0x5b,0x31,0xc5,0xf5,0x32,0x0d,0xff,0xa4,0x7b,0x28,0x38,0x9b,0x61,0xfc,0xd0,0x92,0xb8,0x6e,0x23,0x8a,0xf3,0xc7,0x85,0x11,0xb8,0xd0,0x19,0xaf,0xca,0xa7,0xb4,0xcc,0xeb,0x5d,0xf6,0xa1,0x1c,0x56,0xdf,0x78,0x7a,0xe3,0x6a,0xa4,0x07,0x71,0xce,0xf1,0xb2,0xd5,0x38,0x3c,0xfa,0xf7,0x7a,0xbf,0x4b,0x43,0xa6,0xb3,0x4d,0xff,0x82 +.byte 0x96,0x46,0xb5,0xec,0xda,0xb4,0x5e,0x35,0x78,0xeb,0x4a,0x7e,0xc5,0x7b,0x05,0xd4,0xdd,0xf7,0xb7,0xf3,0xf0,0x04,0x26,0x7e,0x5e,0xc1,0x23,0xca,0x7f,0x14,0x27,0xac,0xda,0xe7,0xdb,0x31,0x05,0x9d,0xd4,0xda,0x20,0xc7,0x6d,0x9a,0x47,0x14,0x38,0xbd,0x7c,0xfe,0xbe,0x8d,0x42,0x7c,0xba,0x36,0xe2,0x2c,0x26,0xd2,0x46,0xa5,0x6b,0xbd +.byte 0x6a,0x75,0x6b,0x52,0x8c,0x10,0xc6,0x0e,0x76,0x60,0x46,0xcc,0x93,0x54,0xc4,0x6e,0xc7,0x70,0x5b,0xb4,0x81,0x51,0x56,0x03,0x22,0x33,0x21,0xe4,0x36,0xee,0x01,0xc3,0x0d,0x17,0x23,0x15,0xae,0x79,0xbc,0xe6,0x13,0x0f,0xfc,0x77,0xa2,0x06,0xed,0x76,0x4a,0xf7,0x2d,0x99,0xc8,0x5c,0xfd,0xac,0xd0,0x11,0xe8,0xfa,0x55,0x17,0x56,0x63 +.byte 0x3e,0xd5,0x23,0x71,0xf8,0xe9,0x1f,0x62,0x95,0xae,0x7c,0x2d,0xcd,0xb8,0x6e,0xb0,0xfe,0xf3,0xd0,0xba,0x72,0x8e,0xe3,0x95,0x82,0x00,0x85,0xdb,0x25,0xe4,0xf2,0xaa,0xbc,0x8d,0xb9,0x4d,0x69,0xa4,0xcd,0x39,0x52,0x9e,0x10,0xae,0x90,0xf0,0x74,0x2f,0xc6,0x5e,0x01,0x99,0x03,0xd5,0x88,0x59,0xfd,0x1b,0x80,0x56,0x0a,0x04,0x27,0xd9 +.byte 0x04,0x51,0xb0,0xb7,0x7a,0x65,0x79,0xa8,0xe2,0x6d,0x7f,0xb2,0xba,0x37,0x40,0xa0,0xbb,0xaf,0x15,0x46,0x23,0x5f,0x22,0xd0,0x2c,0x6c,0x7a,0x58,0x76,0x6f,0xb8,0x19,0xfe,0xb5,0x3d,0xf0,0x77,0x00,0x6b,0x4c,0x83,0x36,0x90,0xe6,0x57,0x29,0x6e,0x27,0x76,0xd4,0x7d,0x9a,0x6a,0xf1,0xf6,0x1b,0x1a,0x45,0xf5,0xf6,0x2d,0xb8,0x30,0x33 +.byte 0x65,0x51,0x37,0x26,0xbc,0xf7,0xb7,0xf9,0x56,0x05,0x6b,0xd4,0xd6,0x00,0x1d,0x13,0x15,0x45,0x24,0x0d,0x28,0x69,0xc6,0x50,0xe1,0x48,0x48,0x34,0x69,0x31,0x3c,0x58,0x71,0xd6,0x4a,0xd9,0xda,0x0d,0x28,0xbd,0xe9,0x5d,0x5d,0x8a,0x6e,0x71,0xc0,0x8b,0x7a,0xba,0x17,0x8e,0x82,0xcb,0xe9,0x95,0xc4,0x43,0x37,0xd0,0x58,0xed,0xec,0x77 +.byte 0x1e,0x22,0xf0,0xf0,0x7c,0x9d,0xeb,0x64,0x30,0x7b,0xb2,0x7b,0x86,0xdb,0xef,0x92,0x79,0xd9,0x9c,0x1c,0x1a,0xf6,0x98,0x26,0x18,0xa2,0x83,0x45,0x08,0xd4,0x1d,0x84,0xd4,0x28,0x6d,0x1f,0xb5,0x1f,0xab,0x97,0xc9,0x0d,0x1f,0x83,0x34,0x18,0xa3,0x20,0x63,0x60,0x6c,0xf3,0xd8,0xb2,0x0a,0xd9,0x35,0xa6,0xce,0x44,0x50,0xc6,0xf3,0x91 +.byte 0xe3,0x95,0x89,0x49,0x99,0x32,0x1d,0xf2,0x54,0x39,0x09,0xca,0xd1,0xc4,0x7f,0xa1,0x1d,0xce,0x94,0x67,0xf1,0x88,0x04,0x29,0xcb,0x5d,0xf7,0xfa,0xcd,0x69,0x16,0x17,0x05,0xc3,0x93,0x45,0xbf,0xd3,0x74,0x63,0xdc,0xe2,0x84,0xab,0x27,0x60,0x56,0x61,0x72,0x5d,0xdf,0xb4,0xa4,0x0f,0xb0,0x21,0x82,0x9b,0x73,0x0a,0x11,0x22,0x2d,0x65 +.byte 0xa2,0xff,0x29,0x8a,0x19,0x28,0x4f,0x4f,0xdd,0x64,0x0a,0x48,0x35,0x70,0x30,0x9f,0x41,0x4d,0x0c,0x7b,0xa6,0xcb,0x63,0x83,0xd1,0x79,0xfa,0x5f,0xc9,0x9b,0x6e,0x09,0x12,0x87,0xcd,0x1e,0x39,0xd6,0x40,0x08,0x0f,0xfd,0x79,0xc8,0xcb,0x77,0x8f,0x7a,0x52,0x42,0xc0,0xb2,0xc8,0xa0,0x2a,0xff,0xbc,0x60,0x13,0xbc,0x41,0x4a,0xc6,0x8b +.byte 0x08,0xb0,0x9f,0x75,0x87,0xa1,0x75,0x42,0x4b,0x3a,0xf7,0xf7,0x84,0x39,0xa5,0x88,0x25,0x2d,0x4f,0x73,0x4e,0x30,0x27,0x92,0xea,0x93,0x70,0x5c,0xb5,0xeb,0xb0,0x10,0xda,0x0f,0xaa,0xb3,0x3f,0xb5,0x55,0x64,0x65,0xae,0xb5,0xf8,0x0a,0xe4,0x9f,0x86,0x02,0x6f,0x63,0x8a,0x0b,0x6b,0x82,0x85,0x3c,0x6a,0xdf,0x68,0x4c,0x1e,0xe9,0x5c +.byte 0xd0,0x99,0xe5,0x0c,0xfc,0x63,0xfb,0xce,0x2d,0x63,0xd5,0x7d,0x8a,0x7d,0x14,0x22,0xbd,0x71,0x5e,0x79,0x3f,0x44,0x95,0xe5,0x6c,0x58,0x94,0x84,0x41,0x65,0x52,0x94,0x50,0xec,0xd3,0x2a,0x16,0x88,0xdb,0x71,0xb9,0xe4,0xb6,0xbf,0xc5,0x3c,0x48,0x37,0x62,0x32,0x79,0xbe,0x1d,0xdb,0xc9,0x79,0x37,0x40,0x65,0x20,0x62,0x45,0xb4,0xda +.byte 0x24,0xef,0x33,0xf1,0x05,0x49,0xef,0x36,0x17,0x17,0x0f,0xdc,0x65,0xb4,0xdc,0x57,0xc3,0xc6,0x82,0x57,0x08,0xf2,0x20,0x57,0x5c,0x25,0x0e,0x46,0x75,0xa7,0x4f,0x9e,0xa4,0x00,0xf7,0x79,0xb9,0x0a,0xef,0x4f,0x50,0x79,0xf8,0x59,0x01,0xf2,0x74,0x9f,0x16,0x27,0xa5,0xc1,0x32,0xcc,0x58,0xa7,0x40,0xa1,0xa1,0x26,0x80,0x00,0xb5,0x64 +.byte 0x0a,0xd8,0x53,0x1f,0x72,0xf7,0x60,0xf7,0x0a,0xaa,0xdf,0x31,0x95,0xff,0xfc,0xb4,0xca,0xbc,0xf8,0x2a,0x33,0x20,0x04,0x16,0x1a,0xe7,0xeb,0x22,0xd1,0x25,0xa6,0x03,0xc9,0x9e,0x9e,0xca,0x7a,0x46,0x7c,0xcb,0x8a,0x63,0x4a,0xf0,0x1b,0xd0,0x34,0xc3,0xbb,0x89,0xcf,0x16,0x38,0xcb,0xe0,0xce,0xd5,0x0b,0xfd,0x4e,0xbc,0xce,0xba,0x28 +.byte 0x68,0x00,0x2a,0x31,0x52,0xe6,0xaf,0x81,0x3c,0x12,0x09,0x2f,0x11,0x0d,0x96,0xc7,0x07,0x42,0xd6,0xa4,0x2e,0xc1,0xa5,0x82,0xa5,0xbe,0xb3,0x67,0x7a,0x38,0xf0,0x5e,0xd8,0xff,0x09,0xf6,0xab,0x6b,0x5d,0xec,0x2b,0x9f,0xf4,0xe6,0xcc,0x9b,0x71,0x72,0xd1,0xcf,0x29,0x10,0xe6,0xe3,0x27,0x1c,0x41,0xc8,0x21,0xdf,0x55,0x27,0xa6,0x73 +.byte 0xb7,0x45,0xa1,0x09,0x66,0x2f,0x08,0x26,0xf1,0x50,0xe0,0xec,0x9d,0xf2,0x08,0xf3,0x49,0x56,0x50,0xe0,0xba,0x73,0x3a,0x93,0xf5,0xab,0x64,0xb6,0x50,0xf4,0xfa,0xce,0x8d,0x79,0x0b,0xad,0x73,0xf2,0x8c,0x1e,0xe4,0xdd,0x24,0x38,0x1a,0xde,0x77,0x99,0xb8,0x92,0xca,0xc0,0xc0,0xbc,0x3d,0x01,0x6f,0x93,0x3a,0x6e,0xc5,0x28,0x6e,0x24 +.byte 0x9c,0xf9,0xd9,0xcb,0x4b,0xbe,0x9e,0xda,0x0d,0x10,0xfb,0x9d,0x15,0xfe,0x28,0xdc,0xd9,0x09,0x72,0xd3,0x9f,0x6d,0x77,0x14,0x84,0x86,0x56,0x10,0xdc,0x8e,0x6a,0xa7,0x62,0xf0,0x0b,0x65,0x2c,0xa2,0xd1,0x7f,0xae,0x32,0xfa,0x9b,0x46,0x0f,0x12,0x08,0x22,0x8c,0x87,0x15,0x4b,0xc4,0x6d,0x85,0xfb,0x69,0xfe,0xce,0xfb,0xb4,0x3e,0x7b +.byte 0xcf,0x88,0xa7,0x97,0x52,0x56,0xd0,0x9f,0xb4,0x33,0xf9,0x08,0xd2,0x28,0x46,0x5e,0xc4,0xec,0x22,0xc6,0x1e,0x7b,0x34,0x99,0x0c,0x5b,0x04,0x19,0xe2,0xca,0x09,0x11,0x50,0x45,0xcc,0xb2,0x90,0x25,0x51,0x68,0xc9,0x20,0x6c,0x99,0x2e,0xdb,0x5b,0x07,0x91,0xb2,0x69,0xbf,0x3c,0x05,0x50,0xfb,0x21,0x33,0x4f,0x6e,0x18,0x19,0xd5,0xff +.byte 0xce,0x9d,0xb5,0x7f,0xd4,0xd5,0x8f,0x41,0x26,0x1f,0xa1,0x4c,0x34,0xd3,0x98,0x08,0x5d,0xb5,0x56,0xa7,0x04,0x63,0x76,0x7d,0xae,0xee,0xea,0xbf,0x69,0x8d,0xff,0xa1,0x62,0x86,0x19,0x7b,0xe5,0x08,0x7a,0xe5,0x9e,0xe5,0x44,0xca,0x24,0xde,0x00,0x43,0xc7,0xcd,0xc8,0x5b,0x21,0x00,0xb9,0x56,0x3f,0xba,0xef,0xcd,0xc4,0xe0,0xd7,0x90 +.byte 0xa7,0xe1,0xf9,0x83,0x2c,0x1d,0x8d,0xc3,0x1b,0xa2,0xab,0xcd,0x7d,0xbc,0xd1,0x2b,0xf8,0x30,0x9e,0xb6,0x95,0xe0,0xd1,0xe6,0x81,0x89,0xa7,0xda,0xf0,0x54,0xc1,0xcb,0x3a,0x85,0x85,0xb5,0x03,0xb4,0x8c,0x7d,0x98,0x16,0xa8,0x83,0x29,0xbb,0x1c,0x1d,0xe1,0x7e,0x0e,0xb5,0x04,0xba,0xbf,0x89,0x30,0x3c,0x44,0xa2,0xc5,0xbf,0xf1,0x70 +.byte 0xdb,0xf3,0x13,0xf4,0x44,0xac,0x63,0xc4,0x9c,0x93,0xa9,0x13,0x1b,0xf1,0xcc,0x16,0x66,0xdf,0x56,0x10,0x88,0x0c,0x76,0xab,0x43,0xcb,0x75,0xf8,0x4f,0x04,0x26,0x95,0x4c,0x6d,0x55,0xc8,0xbd,0xf8,0x94,0x0f,0xca,0x29,0x2b,0xcd,0xce,0x05,0x1e,0xea,0xae,0x02,0x01,0x8b,0x60,0x6a,0x6a,0x03,0x14,0xe5,0xa7,0xdf,0x9e,0x9f,0x94,0x92 +.byte 0x41,0x2c,0xf0,0x1a,0xa7,0xc2,0xc1,0xfc,0x11,0xf3,0x00,0xe1,0xfc,0x7a,0x97,0xc0,0xe1,0x81,0x90,0x3f,0xea,0x1e,0x7f,0xf8,0xb0,0xd8,0x4c,0x2d,0xdc,0x83,0xfa,0x27,0x8b,0xf2,0xef,0x3b,0x3a,0x44,0xdc,0xa5,0xa9,0xd5,0x24,0x5f,0xb1,0xdd,0x1d,0x3f,0x03,0x76,0x3b,0x92,0x0d,0xb4,0x84,0xa4,0x5b,0xef,0x9f,0x89,0x9d,0xef,0xff,0xcf +.byte 0xc2,0x28,0x3b,0x9d,0xd2,0x28,0x75,0x3e,0xdc,0x14,0x79,0x7c,0x0c,0xaa,0x6c,0xf2,0x05,0x9d,0x27,0x01,0x15,0x19,0x60,0x48,0x5a,0x7d,0x04,0x27,0x2d,0x82,0x92,0x3e,0x0b,0x62,0xd7,0x5a,0xfb,0x72,0xfb,0xdd,0x43,0xfa,0xf4,0x6f,0x16,0xd2,0x8f,0x8f,0x21,0xdc,0x81,0x48,0x7a,0xe8,0x39,0xd5,0xdf,0x54,0x0f,0xe1,0xbe,0x65,0xc9,0x49 +.byte 0x98,0xb1,0xff,0x8d,0x52,0x31,0x6a,0xcd,0x5e,0x83,0x17,0x41,0x93,0xcd,0x23,0x76,0x18,0xe9,0x82,0x71,0x15,0xb7,0xd8,0xde,0x0d,0x57,0x8b,0x90,0xe6,0xf4,0x57,0xc1,0xfd,0x3d,0x0d,0x6a,0xae,0xd1,0xd6,0x02,0x3e,0xb9,0x82,0xb2,0x82,0x80,0x48,0xa4,0x14,0x29,0x80,0x55,0x1d,0xaf,0x3e,0xf8,0x7e,0x36,0x5f,0x77,0x4c,0x73,0x6c,0x35 +.byte 0xd2,0x7c,0x36,0xca,0x2f,0xec,0x1e,0x3f,0x74,0xee,0xa5,0xe7,0x7d,0xce,0x81,0xf1,0xd5,0xc1,0xb3,0xaf,0x90,0x2c,0xc6,0x5b,0x81,0x37,0x85,0x98,0x78,0x3c,0x4f,0x2a,0x55,0xea,0x06,0x30,0x77,0x73,0x97,0x39,0x75,0xcf,0x4a,0x9b,0x55,0xb8,0x64,0x5c,0x86,0xfd,0x26,0x3e,0x8d,0x68,0xd2,0x70,0xe8,0xd7,0x99,0x57,0x6f,0x96,0x47,0x6d +.byte 0xa7,0x1a,0x0e,0x85,0xcd,0x00,0xa5,0x3e,0x11,0xec,0x76,0xd2,0x47,0x26,0x71,0xda,0x5c,0xf4,0xb1,0xd5,0x23,0xe1,0x62,0x71,0x43,0x30,0xa7,0x95,0xf6,0xc1,0xcf,0x8a,0x1b,0x75,0x53,0x39,0x6d,0x9d,0x18,0x7c,0xe3,0x48,0x27,0x33,0x1c,0x38,0x45,0xdf,0x75,0x22,0x05,0x6d,0x81,0x5d,0xfc,0xeb,0x0e,0x05,0x26,0x45,0x81,0x9f,0xce,0x0f +.byte 0xc9,0xdd,0x95,0x11,0x04,0x47,0x40,0xa4,0x07,0x3b,0x52,0x92,0xe0,0x91,0xdb,0xdd,0x3c,0x9f,0xd3,0xa1,0xb7,0xf9,0xeb,0xd6,0x6d,0x64,0x88,0xe9,0xf5,0x4e,0x98,0x8e,0x7b,0xd3,0xec,0xc0,0x22,0xe0,0xf2,0x14,0xf2,0x20,0xa2,0xa3,0xb3,0x0d,0x75,0x1a,0xbb,0xde,0x4a,0x41,0x04,0x43,0x0d,0xd9,0xd0,0x1d,0x73,0xc8,0x67,0x8e,0x58,0xe5 +.byte 0x4b,0x28,0x4d,0x8f,0x2f,0xab,0x1a,0x4a,0xfc,0x7c,0xd1,0x27,0x3e,0x4a,0x10,0x6a,0x5f,0x55,0x3a,0xf7,0x63,0x14,0xe9,0xad,0xb4,0x95,0xef,0x3d,0x5c,0xc3,0x7d,0xe4,0xb7,0x15,0xd7,0x0b,0x68,0xf0,0x23,0xa8,0xd4,0x8e,0x27,0xf6,0x55,0x11,0xbc,0xc0,0xff,0x3e,0x2c,0x24,0x59,0xb7,0xb7,0xb5,0x0b,0xd2,0x99,0xa5,0xd5,0xe2,0x24,0x33 +.byte 0x21,0xb8,0x96,0x48,0x18,0x94,0xb5,0xb2,0x50,0x5e,0x04,0x24,0x86,0x17,0x62,0x1e,0xc9,0xf8,0x22,0x6a,0xd0,0xec,0xc5,0xbc,0x90,0xf7,0x55,0xcf,0x3f,0x4c,0x7c,0xf7,0x51,0x19,0x95,0xa4,0x81,0x38,0x0c,0xa5,0x58,0x22,0xf3,0x10,0x05,0x05,0x44,0xbf,0x7e,0x2a,0xbd,0x5f,0x79,0x56,0x08,0xd5,0x68,0xea,0x85,0xa1,0xeb,0x0b,0xe1,0xd4 +.byte 0xfd,0x3a,0x38,0xd2,0x5a,0x49,0x17,0x9a,0x58,0x8f,0x52,0xf5,0xf4,0x7b,0x1f,0x58,0xa8,0xc0,0x1c,0x46,0x38,0xa6,0xe4,0x7d,0xcc,0x88,0x97,0x10,0x2b,0x5e,0x61,0xf5,0x73,0x7d,0x79,0x1b,0x53,0xf1,0xac,0xb4,0x3f,0xbd,0x9d,0xb6,0xc2,0x57,0xd5,0x84,0x4d,0x60,0xd6,0x45,0x56,0xa1,0x36,0x28,0xf5,0x74,0xc6,0x29,0xd7,0xc9,0x63,0x5e +.byte 0x7c,0x97,0x46,0xde,0x56,0x3f,0xd8,0x8e,0x75,0x29,0x87,0xe7,0xd1,0x24,0x78,0x26,0xdc,0x17,0x97,0xc9,0xf0,0x8e,0x95,0xbc,0xe5,0xfe,0xe3,0x3a,0x75,0x70,0x52,0xa9,0x31,0x97,0x79,0x3a,0xc2,0x53,0x6a,0x73,0xe2,0x76,0xf8,0x85,0xe6,0x0d,0x85,0x9b,0xfc,0x72,0x08,0x2a,0xa5,0x8e,0x42,0xb2,0x7c,0x8d,0x8b,0x28,0x4b,0xf5,0xcb,0x66 +.byte 0x80,0x46,0xb3,0x87,0xdf,0x38,0xa7,0x08,0xc8,0xea,0x85,0x0e,0x6f,0x13,0xe0,0x57,0x99,0xc6,0xb8,0xed,0x9c,0xb0,0xa9,0x89,0xd7,0xc5,0xa9,0x71,0xfd,0x8a,0x21,0xb1,0xec,0xc8,0x65,0x78,0x72,0xc6,0x77,0x69,0xd4,0x0b,0x47,0x4d,0x79,0x93,0xcf,0x2a,0x34,0xf1,0x1b,0x0e,0x6f,0x0d,0xd1,0xbb,0xe7,0xd7,0xb5,0x6f,0x57,0x01,0xd4,0xcd +.byte 0x56,0xbe,0xf0,0xd9,0xe2,0x8e,0x0e,0xb8,0x3d,0xdb,0xf6,0x97,0x39,0x0b,0x3e,0xe2,0xb2,0xa3,0x93,0x0b,0x74,0xe5,0x6a,0x21,0x04,0x29,0x5a,0x3e,0x07,0x9c,0x11,0x4e,0xfe,0x01,0x6e,0x96,0x1e,0x8f,0xe0,0xfe,0x24,0x24,0x7e,0x04,0x2f,0x65,0xf4,0xe2,0x1f,0x36,0x56,0x43,0x3a,0x6c,0xeb,0xd7,0x20,0x13,0x71,0x45,0x6a,0xe8,0xc6,0xfa +.byte 0xba,0x26,0x6f,0x7d,0x9a,0x62,0x76,0x34,0x7d,0xed,0x47,0x71,0xd1,0x0e,0x5b,0x04,0x39,0xd6,0xc0,0xe5,0xa5,0xd8,0xf5,0x73,0xf9,0xf4,0xc2,0x2a,0x54,0x25,0x67,0xdf,0x83,0xa3,0xcd,0xfd,0x1e,0x46,0x87,0x06,0x17,0x6d,0x78,0x8e,0x0c,0x7b,0x08,0x06,0x1b,0xd9,0x5d,0x3d,0x03,0x40,0xbc,0xe7,0x02,0xc4,0xe0,0xe0,0x49,0xb2,0x6c,0x6f +.byte 0x97,0x76,0x0f,0xc7,0x14,0xd8,0x7c,0xc0,0xad,0x8a,0xbb,0xbc,0x2a,0x7e,0x68,0x46,0xcd,0xa7,0x26,0x16,0x77,0x1b,0x89,0x38,0xd8,0x2a,0x69,0x43,0xc4,0xaa,0x0d,0xf6,0xd1,0x65,0xda,0x41,0x75,0x77,0xcd,0xf7,0xd2,0x38,0x9c,0xdb,0x81,0x17,0x27,0x2f,0xba,0x2e,0xa5,0xb5,0xbe,0x05,0xe8,0xdd,0x5f,0xa9,0xad,0xbe,0xb2,0x0e,0x0b,0x69 +.byte 0xb6,0x8d,0xd2,0xf2,0xde,0x76,0x32,0x26,0xd9,0x06,0x1d,0x42,0x26,0x8c,0xf7,0xca,0x4c,0xe1,0x59,0x82,0x6c,0xea,0x96,0x70,0x39,0xb8,0x0d,0xf3,0x67,0x9d,0x5e,0x94,0x99,0x77,0xf2,0x0a,0x9a,0xde,0xa5,0xd2,0xe1,0xaa,0x91,0x85,0xc7,0x0f,0x92,0x35,0x04,0xd3,0x7a,0x13,0xfa,0xf2,0x86,0x5a,0x38,0xd1,0x7f,0x10,0xd8,0x30,0x0e,0x33 +.byte 0xe3,0xa0,0x8a,0xad,0x4f,0x6c,0x24,0xdd,0x9d,0x1c,0x4e,0xff,0x4c,0xfc,0x74,0x01,0xab,0x08,0x6c,0xe6,0x4c,0x78,0x75,0xc9,0x67,0x83,0x1f,0x75,0x22,0xb0,0x7c,0x44,0xa0,0xa1,0xee,0x4e,0xf6,0x3e,0xd3,0x35,0x70,0xbe,0x36,0x1e,0x90,0xa6,0xaa,0x64,0x67,0x7f,0x52,0x84,0xd9,0x27,0xab,0x37,0x30,0x68,0x46,0xcc,0x0e,0x57,0x58,0x6f +.byte 0xdb,0xb2,0x5f,0x24,0xf7,0xeb,0x97,0xea,0x64,0xec,0x6c,0x1e,0xe1,0xc4,0x72,0xfb,0x00,0xa7,0x62,0xa0,0x59,0xb9,0x17,0x8a,0x33,0x32,0x59,0xb8,0xbe,0x84,0xd4,0x62,0xb7,0xf6,0x35,0xd4,0xf1,0x1c,0xdb,0x7e,0xa6,0xbc,0x2c,0x54,0x3c,0xf5,0x63,0x4a,0x22,0x26,0x58,0xa0,0x35,0x98,0xa7,0x32,0xb2,0xa0,0x2b,0xd5,0xfa,0x2f,0x9b,0xb4 +.byte 0xea,0xd6,0x58,0x61,0xb2,0x24,0x45,0x46,0x1e,0xac,0x79,0xa4,0xf7,0xc1,0x13,0x2f,0xf5,0x6b,0xfa,0x70,0x50,0x2b,0x83,0xee,0x7c,0xc1,0x55,0x27,0x7b,0x4f,0xa6,0x0a,0x72,0x26,0x82,0xcd,0x4d,0xe2,0xe8,0x45,0xe6,0xd7,0x39,0x7e,0xed,0x35,0xdf,0x9e,0xb1,0x41,0x55,0xa2,0x5d,0x68,0x4b,0x0b,0xd1,0x73,0x5a,0x2b,0x81,0x35,0x28,0xfc +.byte 0x64,0x08,0xd7,0xc4,0x9f,0x30,0x77,0x3d,0x9d,0x80,0x15,0x67,0x9a,0x84,0xe4,0x34,0xea,0x8c,0xf7,0x73,0x9e,0x33,0xb4,0x09,0x33,0xbd,0xd8,0x82,0x43,0x7d,0xc5,0x1f,0x0e,0x7b,0xa0,0x53,0x59,0x20,0x12,0x57,0xed,0xda,0xc7,0x19,0x8e,0x62,0xe4,0x09,0xc1,0x4b,0x20,0x32,0x9e,0x18,0x11,0x1c,0x42,0x49,0x62,0x76,0xa8,0x83,0x72,0x11 +.byte 0x45,0xe7,0xb5,0x60,0xa7,0xc0,0x07,0xbd,0xb4,0x7c,0xc6,0x5c,0x03,0x34,0xa3,0x85,0x47,0x24,0x75,0xd2,0xab,0x46,0xbb,0xc7,0x0d,0xcd,0x40,0xe2,0x5e,0x5b,0xa7,0x98,0x67,0xe4,0xe2,0x02,0xe9,0xdc,0xd7,0xc2,0xaf,0x90,0x43,0x94,0xfe,0xf3,0x53,0xc1,0x10,0x28,0xa7,0x90,0xba,0x73,0x57,0x0c,0x4d,0x6d,0xbd,0xda,0x81,0xd5,0x90,0xce +.byte 0x02,0x40,0xb3,0xf0,0xec,0x50,0x82,0xc9,0xfb,0xf1,0x22,0x6d,0xc8,0xd2,0x7b,0xed,0x0b,0x43,0x7e,0x0b,0x60,0x9b,0x69,0x9e,0x58,0x26,0xc3,0x9f,0x6b,0xd0,0x31,0xeb,0xb7,0x0a,0xf3,0x9a,0x9a,0xf5,0x72,0xcf,0x29,0xc8,0x19,0x08,0x4d,0x67,0xd5,0xa1,0x8f,0x68,0x0e,0xee,0x59,0x14,0xf8,0x86,0xc0,0x08,0x5a,0x56,0xfe,0x6a,0xb7,0xac +.byte 0x78,0x8d,0x77,0x39,0x5e,0xb1,0x01,0x4d,0x31,0x81,0x56,0xdc,0x5b,0x10,0xda,0x4d,0xd2,0xfd,0xfc,0xa3,0xe3,0xaa,0x46,0x29,0x1a,0xea,0x9c,0x47,0x1b,0xd0,0xa6,0x84,0x1f,0x71,0x1a,0xd3,0x35,0x59,0x7f,0xef,0xf7,0x81,0x39,0x7a,0x9f,0x4a,0x01,0x4d,0x46,0xcf,0xa4,0x6a,0x9c,0x7e,0x07,0x8b,0x98,0x17,0x49,0x5c,0x46,0xac,0xc8,0xfd +.byte 0x1c,0xaf,0x91,0x30,0x0c,0x36,0x63,0xef,0x69,0xd3,0x47,0xf4,0x76,0xc1,0xf7,0x40,0x03,0x98,0x9e,0xcb,0x61,0x65,0x46,0x45,0x1c,0x1b,0xfd,0x13,0x36,0xe9,0x19,0xbf,0x2b,0x59,0x51,0xe8,0x04,0x44,0xe3,0xc2,0x4b,0x66,0x78,0x69,0x66,0xa3,0x1a,0xe5,0x2a,0xad,0xf8,0xc5,0x0f,0xb7,0x3e,0xe8,0xab,0xe0,0xe4,0xd9,0xc2,0xb8,0x61,0x5b +.byte 0xef,0x6b,0x4d,0x5f,0xb8,0xdc,0x06,0xa5,0xce,0x08,0x5b,0x1f,0xf4,0x29,0x4d,0x0a,0x3e,0xb3,0x60,0xf4,0x63,0x3c,0x70,0x5d,0x02,0x9c,0x55,0x5e,0x5e,0xd1,0x9b,0xed,0x20,0x75,0x54,0xa1,0x8e,0xae,0xce,0x5a,0xb2,0x2d,0xe4,0xc3,0x9b,0x7d,0x72,0xce,0x7c,0x0c,0xa9,0x99,0xa4,0x12,0xaa,0x31,0xe9,0x61,0x47,0x8a,0x41,0x93,0xd5,0x69 +.byte 0xc5,0xf3,0x9f,0xf4,0x97,0x69,0x64,0x6f,0xf9,0x5b,0xbf,0x58,0xf6,0x3b,0x3e,0xd6,0x93,0x94,0x89,0xcc,0xc0,0x25,0x7d,0xf8,0x40,0x9e,0xb2,0xc8,0x75,0x9d,0x4d,0xf0,0x5f,0xa5,0x3d,0x38,0x67,0xea,0x8d,0x1b,0x60,0x5e,0xfe,0xa8,0x26,0xb9,0xed,0xc0,0xe9,0xc8,0xec,0xb1,0x77,0x0f,0xf2,0xaa,0x77,0x2a,0xcd,0xa8,0x70,0xb7,0xda,0x60 +.byte 0x49,0xb3,0x01,0x95,0xc8,0xac,0x71,0x6a,0xd0,0x49,0x67,0x2a,0x04,0xfc,0x55,0x38,0x08,0x37,0xd9,0x21,0x37,0xce,0x41,0xaf,0x7c,0x33,0xdd,0xcd,0xe0,0x92,0x27,0x38,0x63,0x77,0xea,0x86,0x04,0x99,0x4e,0x61,0x8b,0x8f,0xfe,0x4e,0xc1,0x16,0x6c,0x89,0xac,0x1f,0x0b,0x67,0x75,0x49,0xf4,0xdb,0x6d,0xd3,0xb8,0x1d,0x9c,0xb2,0xe6,0x98 +.byte 0x81,0xae,0x3f,0xe0,0xdd,0xda,0xfa,0x4c,0x8b,0x30,0x18,0x88,0xa1,0x1d,0xa1,0x18,0xb8,0x28,0xc2,0x04,0x6a,0x80,0x02,0x5a,0xe6,0x04,0x85,0xfa,0x54,0x38,0x45,0x64,0xe1,0x50,0x4a,0x38,0x4c,0x85,0xf7,0x00,0x0c,0xd3,0x16,0xcb,0xfa,0x38,0xb4,0x1b,0x6a,0x95,0x3d,0xc3,0x24,0x79,0x0e,0x3e,0x81,0xe6,0xc3,0xd9,0xdb,0x05,0x19,0x7c +.byte 0xb4,0x4d,0xef,0x71,0x22,0x53,0x97,0x8a,0xc9,0xe3,0x69,0x20,0x5b,0x83,0xb1,0x44,0xd7,0xd1,0x1e,0x87,0xa7,0xbf,0xe4,0x84,0x68,0x9c,0x77,0xfe,0x83,0xdb,0x7a,0x53,0xa8,0x53,0x1f,0xc7,0xd1,0x6a,0x26,0x87,0x71,0x06,0x23,0xa7,0xe0,0x18,0x5d,0xfa,0x8c,0xa7,0x24,0xee,0xf6,0x74,0xab,0x17,0xd3,0x46,0x33,0xe9,0xc3,0xcd,0xa6,0xaf +.byte 0xcf,0xa1,0x60,0x75,0x7b,0x77,0xc3,0x58,0xa2,0xe8,0x87,0x7b,0x4b,0x57,0xb1,0x96,0xc1,0x91,0x6d,0xbf,0x71,0xb3,0xbf,0xe2,0x62,0x86,0x72,0xa9,0x01,0x64,0x62,0x32,0x33,0xc8,0xa4,0x26,0x7d,0xfa,0x0d,0xd4,0xd8,0xc3,0xaa,0xc0,0xc8,0x7c,0x51,0xe8,0x10,0x08,0x6f,0xf6,0xc1,0x46,0x89,0xc4,0xd2,0x00,0x1d,0x14,0x05,0x89,0x64,0x52 +.byte 0xcd,0x1f,0x97,0x0b,0x1d,0x94,0xbe,0x9d,0xa0,0x6b,0x03,0x9b,0x83,0x87,0x38,0x0f,0x65,0xdd,0x6a,0xaf,0xf1,0x22,0x74,0x7e,0x11,0xa0,0xdf,0x1e,0x95,0xef,0x1a,0xdc,0x8b,0x29,0x4a,0xbe,0xfd,0x2f,0xc7,0x48,0x94,0x3f,0xb9,0x8c,0x8e,0xe1,0x0c,0x54,0xa6,0x2f,0xa5,0x2b,0x71,0xdd,0x16,0x68,0x91,0x35,0xd0,0x22,0x48,0x1f,0xf2,0xe2 +.byte 0xe8,0x57,0x83,0xd7,0x49,0x43,0xfd,0xf9,0x77,0xb5,0xfa,0x70,0x19,0xeb,0xae,0xf6,0x31,0xfe,0xd6,0x81,0x6c,0xcc,0x14,0x28,0xa6,0x9f,0x74,0x56,0xc5,0xf6,0x51,0xba,0xc8,0xbd,0x32,0x80,0x5f,0xdb,0x28,0x3f,0x4a,0x55,0x01,0xe1,0x39,0xf5,0x9c,0xda,0xb3,0x42,0xee,0x43,0x17,0xc3,0xc7,0xf5,0xd1,0xda,0xd2,0x2e,0x56,0xcf,0x77,0x0e +.byte 0xdd,0x72,0xcf,0xe5,0xab,0xfb,0xd6,0xa2,0x6c,0x03,0xa6,0x77,0x25,0xf8,0x2a,0x8c,0xfa,0x6f,0x45,0x79,0x59,0x84,0x92,0xd1,0x00,0x58,0xc7,0xb8,0x95,0x4d,0xc8,0x49,0xad,0xe0,0x1e,0x64,0x47,0x00,0xfb,0x93,0x7f,0x3e,0xf1,0x65,0x70,0x47,0x64,0xbb,0x36,0x63,0xe3,0x09,0xcb,0xdb,0x5a,0xd1,0x72,0x83,0xfd,0x15,0x91,0xa2,0x03,0x81 +.byte 0x04,0x98,0x45,0x0f,0x7f,0x23,0x48,0x6c,0xb1,0x2d,0xd0,0x2c,0x61,0x52,0x1b,0x4a,0x52,0x08,0x92,0xe1,0x7a,0xf1,0x8c,0x1f,0x1f,0xdf,0x1c,0xfd,0xd9,0x46,0x99,0x71,0x05,0x58,0x71,0x82,0x5c,0x05,0xa0,0xb2,0x6a,0x50,0xd2,0x6e,0x35,0xf4,0x6c,0xfb,0x50,0x99,0xb3,0xc1,0x2b,0x05,0xaf,0x02,0xe5,0x18,0xfa,0x74,0x09,0xcc,0xa5,0x2c +.byte 0x26,0xfd,0xc5,0xe7,0x2c,0x96,0x0f,0xa4,0x7c,0x88,0xc6,0x7f,0xf9,0x74,0x9d,0x1c,0xe5,0xd2,0x27,0xf0,0xae,0x5b,0x4c,0xbf,0x0a,0x99,0x2e,0xaa,0x54,0xba,0x0d,0x75,0xd9,0x48,0x76,0xf3,0xe9,0xd9,0x01,0xbe,0xaa,0x97,0x09,0xfe,0xb2,0x4a,0xcb,0x55,0xd0,0xe1,0x58,0xec,0x31,0x0c,0xd9,0xdf,0xd9,0x01,0xf9,0x3c,0x28,0x40,0x91,0xbb +.byte 0x4d,0x2d,0x88,0x60,0x31,0xc7,0xc9,0x1d,0xaf,0x22,0x44,0x21,0x05,0x06,0xdd,0x07,0x60,0x29,0x7d,0x49,0x30,0x9d,0x35,0x1d,0x9f,0x37,0xbd,0x32,0xb2,0x21,0xa6,0x4f,0x89,0xd8,0xe6,0x85,0x44,0xcf,0x13,0x12,0x4f,0x5f,0x50,0x71,0x01,0x39,0xff,0x6e,0xa0,0x07,0xff,0xf0,0xa6,0x3b,0x39,0x59,0x17,0xae,0x93,0xb2,0x86,0xcc,0xe5,0x59 +.byte 0x5a,0xf2,0x82,0x62,0xc6,0x8d,0x13,0x2f,0x6b,0x92,0x28,0xbe,0xd1,0xc0,0xf6,0xc9,0xe1,0xd6,0x98,0x94,0x65,0xd4,0x2a,0xdb,0x37,0xb1,0xd3,0x83,0xf2,0xaa,0xa5,0x00,0xf9,0x08,0xe6,0x22,0x38,0x30,0xb6,0x49,0x8d,0x9d,0x1c,0xa4,0xf7,0xdb,0x3c,0x6f,0x75,0x08,0xa0,0xda,0xe9,0xc0,0x01,0x54,0x09,0x68,0xc6,0x7c,0x5b,0x4d,0x88,0x71 +.byte 0xa7,0x2f,0xb3,0x50,0x18,0x4a,0xfb,0x55,0x29,0xf2,0x56,0x1d,0x4c,0x12,0x22,0x1c,0x54,0xd2,0x63,0x67,0xfa,0xe9,0x5b,0x74,0x3b,0x38,0xf6,0xa0,0x85,0x63,0x1c,0x41,0x6a,0x6d,0x71,0x1d,0xb1,0x39,0x28,0x88,0x96,0x9b,0x9c,0x50,0x9e,0x57,0x4e,0xf5,0xa7,0xf4,0x17,0xc6,0xca,0x42,0x84,0x83,0xca,0xa4,0x28,0x72,0x08,0x74,0x62,0xe1 +.byte 0xf0,0x73,0xc5,0x86,0x6c,0x76,0x9d,0xd3,0xa6,0xb8,0x5d,0x73,0x1b,0x02,0xe2,0x69,0x8b,0x59,0xd6,0x6a,0x53,0xe9,0x13,0x88,0x41,0x95,0xe9,0x97,0x5f,0x07,0x62,0xa5,0x21,0x97,0x7e,0x5e,0xc2,0x2c,0xc7,0xaf,0x0a,0xdb,0x9e,0x4f,0x44,0x4b,0xd6,0x3d,0xc0,0x24,0x38,0x50,0x47,0x98,0xa3,0xfc,0xda,0xfc,0xae,0x0e,0x2b,0x9b,0x53,0x0f +.byte 0x6b,0xb1,0x2f,0xd5,0xd7,0x68,0xc9,0xab,0xb9,0xff,0x7f,0x54,0xd6,0x2f,0x88,0xbc,0x5e,0x6a,0x22,0x49,0x0f,0x98,0xbe,0x1f,0xef,0x3e,0xcc,0xa2,0x72,0x6b,0x16,0xbe,0xe8,0x5f,0x0e,0x36,0xa2,0x68,0xe0,0x65,0xd9,0x7c,0xdc,0x8c,0x6a,0x66,0xf0,0x6a,0xfc,0x2b,0x85,0x28,0x2a,0x1a,0xfc,0x92,0x64,0x3d,0x38,0x5b,0xc1,0x0c,0x68,0x45 +.byte 0x94,0x85,0x58,0x82,0x99,0xfc,0x20,0xdd,0x62,0xae,0xed,0x35,0x7c,0x02,0x16,0x9b,0x00,0x8a,0x44,0x02,0x80,0x00,0xca,0x7d,0x95,0x03,0x5d,0xa6,0xec,0xe1,0x0c,0x50,0x34,0x61,0x55,0xee,0xb5,0x11,0xff,0xc3,0xaa,0xf2,0xbc,0xa3,0xa9,0xc7,0x6b,0x16,0xab,0x56,0x7b,0x55,0x54,0x95,0x88,0x15,0x15,0x6a,0x2c,0x97,0xd7,0x7c,0x26,0x65 +.byte 0xaf,0x8d,0xd1,0x05,0x57,0xb2,0x63,0xd1,0x22,0xf7,0x7d,0x77,0x54,0x6c,0x87,0x03,0x1f,0x0e,0x2b,0xae,0xa6,0xa4,0xb5,0xd6,0x95,0x34,0xd0,0x62,0x4e,0xfb,0xcb,0xee,0x01,0xc1,0xf7,0x36,0x94,0xa6,0x54,0x94,0x90,0x0e,0x45,0x9c,0x95,0x89,0x96,0x88,0x32,0x90,0x27,0x48,0xc5,0x96,0xf0,0x7e,0x7f,0x69,0x99,0xdf,0x7b,0xfb,0x2b,0x7b +.byte 0x38,0x10,0x6b,0xd1,0x1a,0xfb,0xf2,0xcd,0x2d,0x8b,0x47,0x21,0xca,0x92,0x64,0x28,0xd1,0x53,0x1d,0xed,0xa7,0x7d,0xa4,0x88,0xab,0xd0,0xfe,0x9b,0x2b,0xf8,0x48,0x94,0x8d,0xd5,0xfa,0x5c,0xef,0x12,0x43,0xdf,0xb6,0x5b,0x83,0x43,0xf3,0xf7,0x1d,0x6f,0x3e,0x44,0xe6,0x20,0xd8,0xbc,0x4a,0x9a,0xed,0xa0,0x79,0x66,0x8d,0x23,0xca,0x35 +.byte 0x15,0x87,0x11,0x50,0xa4,0x40,0x6e,0xfa,0xf7,0xaf,0xa2,0xb7,0x3b,0x9b,0x8b,0x44,0x19,0x90,0xb3,0x47,0x92,0x08,0x2f,0x0c,0xe2,0x95,0x5d,0x80,0xb5,0x93,0x5e,0x1c,0xb5,0xce,0x52,0x0b,0x12,0xc1,0x72,0x2e,0x66,0x8c,0xd1,0x13,0x94,0x36,0xf7,0x17,0xe3,0xad,0x69,0xc9,0x2d,0x21,0x64,0xcd,0x8f,0x2d,0x8f,0x0c,0x85,0xa5,0x23,0x8b +.byte 0x6c,0x00,0x13,0xf7,0x6a,0xb4,0x68,0x1a,0xcc,0xc4,0x03,0x5b,0xd6,0x7b,0x5b,0x34,0x90,0x34,0x3e,0x0a,0x07,0x19,0x81,0x99,0xe9,0xd2,0xa8,0x73,0x2c,0xa2,0xcf,0xdf,0x29,0x69,0xbf,0xec,0xdd,0xa5,0xd3,0x16,0xb0,0xd2,0x9c,0x2f,0xeb,0x70,0x50,0x20,0x3c,0x22,0x1a,0x5b,0x55,0x79,0x76,0x0f,0x1f,0xd0,0x34,0xa9,0x55,0xad,0x75,0x75 +.byte 0x7f,0xa7,0x9b,0xa7,0x3d,0x5d,0x73,0xce,0x91,0xf6,0x9b,0xcd,0xa5,0xee,0x48,0x44,0xba,0xd5,0xad,0xbe,0x1e,0xc6,0xd2,0x8b,0x05,0x21,0x20,0xb5,0x7d,0x78,0x88,0x10,0x20,0x85,0x90,0x8f,0x47,0x74,0x68,0xe6,0x32,0x2a,0x13,0x7a,0xb3,0x5d,0xfe,0x24,0x97,0xd1,0x65,0x55,0x60,0xb3,0x88,0xfb,0x59,0xc9,0x29,0x70,0xf1,0x45,0xbd,0xbe +.byte 0x4d,0x01,0x4e,0x5e,0x5f,0x99,0x52,0xf8,0x5f,0x38,0xcf,0xa8,0x5d,0x69,0x54,0x87,0x72,0x41,0xca,0xc4,0x63,0xc1,0x52,0x58,0x66,0x8b,0xda,0x8b,0x61,0xd1,0xab,0x7d,0x8d,0xfe,0x51,0x8d,0xf6,0xd0,0x21,0x4d,0x0b,0xc5,0xea,0x74,0xcd,0x21,0x93,0x4a,0x91,0xe5,0x3f,0xce,0x35,0x3b,0x3f,0xc0,0xab,0xa4,0x23,0x76,0xd1,0x8c,0xa7,0xbe +.byte 0x15,0xab,0x8e,0xd7,0x0d,0x86,0xac,0xc3,0x06,0xff,0x33,0xf2,0x41,0x6f,0x69,0x58,0x49,0xd1,0x73,0xcf,0x5e,0x4e,0x1e,0x46,0x12,0xfa,0x30,0x0d,0x4b,0xb1,0xfb,0xc6,0xe6,0x0d,0xcd,0x8d,0xca,0x34,0x28,0x5a,0xed,0x85,0x55,0x31,0xee,0xba,0xbf,0xa4,0x6f,0x9c,0x7d,0xeb,0x4b,0x1b,0x73,0xea,0x4e,0xb9,0x62,0x5d,0xac,0xe3,0x53,0xdf +.byte 0x27,0x87,0x2f,0x39,0xca,0x5b,0xd6,0x72,0xcf,0x95,0xc6,0x2a,0xa5,0x3f,0x57,0xfd,0xdc,0xa9,0x4a,0x86,0x0f,0xcd,0xd5,0xea,0xfe,0x85,0xeb,0x9b,0x84,0xc6,0xf7,0xba,0xc2,0x37,0xbc,0x18,0x85,0x49,0xa6,0x7f,0xd9,0x3e,0xfb,0xf0,0x0c,0x39,0xe3,0x1c,0x06,0xfe,0xb6,0x49,0xa3,0x8b,0x72,0x2b,0x39,0xa1,0x48,0xfd,0x1f,0xfe,0xa4,0xf7 +.byte 0xcc,0x7a,0xef,0x64,0xa0,0x0d,0xeb,0x78,0x71,0x8c,0xd6,0x59,0x7c,0xf4,0xaa,0x81,0x7a,0x89,0xe6,0x22,0xc9,0x57,0xe8,0x13,0x9c,0xca,0xc4,0x6f,0xb5,0xbf,0x08,0x31,0x93,0x56,0x2a,0x82,0x00,0x95,0xdc,0x4b,0xfd,0x9b,0xc7,0x8b,0x31,0x72,0xa0,0xff,0xbe,0xb4,0xd6,0x07,0x16,0x0a,0x4a,0x0a,0x96,0x02,0x83,0x53,0x2a,0x4d,0x33,0x72 +.byte 0x1f,0x20,0x20,0xc3,0x63,0xee,0x4e,0x05,0x90,0x7d,0x21,0xd0,0xf1,0xda,0xde,0x0d,0x4a,0x59,0xb9,0xca,0x81,0xe3,0x1f,0x83,0x19,0xdc,0x09,0x03,0x5f,0xaa,0xee,0xbc,0x5a,0xfa,0xc6,0x4d,0x3d,0xfe,0xfe,0xf3,0xdb,0xc3,0x77,0x31,0x74,0xb4,0x94,0xb5,0x09,0xb1,0xb5,0x13,0x47,0x2e,0x4f,0x3b,0x38,0x83,0xf5,0xfc,0xe9,0xcc,0x45,0xea +.byte 0x5b,0x88,0x21,0xba,0x53,0xc5,0xf6,0xd4,0x63,0xc5,0x37,0x1d,0xa1,0x42,0x2e,0x9c,0x9a,0x50,0x2c,0xfe,0xdb,0xf6,0x31,0x36,0x5f,0x9d,0xed,0x63,0x42,0x20,0xdd,0x27,0xe5,0x34,0x3c,0x0f,0x06,0x8b,0x8f,0x32,0xb6,0x47,0xce,0x07,0xcb,0x27,0xc1,0xb7,0xfe,0xb2,0x69,0x81,0x79,0x20,0xd7,0x47,0xbb,0xab,0x61,0x5f,0x09,0x99,0xdf,0x9f +.byte 0xde,0x59,0x33,0x75,0xd1,0xcc,0xfe,0x92,0x79,0x1f,0x2d,0x59,0x88,0xef,0x4b,0x80,0x0c,0x38,0xa3,0xb1,0xef,0xae,0x53,0x84,0x2f,0xbd,0xd3,0x0c,0xcf,0xd5,0xf7,0xb7,0x6f,0xa7,0x22,0x1f,0xf1,0x56,0x76,0x0c,0x78,0x52,0xa3,0xc0,0xd0,0x2f,0xbc,0xdf,0x29,0x0d,0xa8,0x54,0x0d,0x2b,0x65,0x1b,0x7f,0xeb,0x21,0x22,0xaf,0x10,0xc1,0xd6 +.byte 0x30,0xa8,0x2f,0xb1,0x25,0xbf,0xdc,0xee,0xe9,0x35,0x40,0x69,0xa0,0xa0,0x27,0x85,0x2e,0x18,0xc1,0x36,0x24,0xc5,0x96,0x9a,0x85,0x3f,0xbb,0xfd,0xf5,0x02,0xa2,0xa1,0x92,0x3c,0x16,0x48,0x9f,0xc5,0x00,0x7c,0x7b,0xaf,0x31,0xba,0x68,0x0e,0x58,0x88,0xf4,0x10,0xb9,0xa6,0xe0,0x46,0x2a,0xb8,0x8d,0xc7,0x8e,0xad,0x7c,0xec,0xd2,0x74 +.byte 0x92,0xfe,0x1b,0xd0,0x73,0x79,0x0b,0x4e,0xcc,0x2d,0x5c,0xe7,0x80,0x2d,0x21,0x1c,0x97,0xfc,0x2a,0xc9,0x9c,0x07,0x10,0x64,0x8b,0xf7,0xf5,0x1c,0x54,0xb6,0x6c,0x73,0x1c,0x50,0xd3,0x1a,0x2a,0x63,0xcb,0xba,0xd3,0x95,0xe2,0xa6,0xc3,0xca,0x45,0xfd,0x5e,0x1b,0xbb,0x6b,0x4d,0xb3,0xf7,0xfd,0xaa,0xf9,0x73,0xb8,0x74,0x4d,0x36,0x7e +.byte 0xcc,0xaa,0x1e,0xf3,0x20,0x68,0xa5,0x0c,0x03,0xe3,0xbe,0xee,0x82,0x03,0x8d,0x10,0xa6,0xf6,0x6c,0x73,0xc2,0x9d,0x74,0xba,0x57,0x17,0xd7,0xfa,0x85,0xf5,0x1e,0x3d,0xf8,0xc7,0x80,0xef,0xcd,0xf0,0xf4,0x46,0xfc,0x07,0xb5,0xc4,0x5f,0xd2,0x04,0x6a,0x90,0xf5,0x76,0xb6,0xf9,0x73,0x22,0xa6,0x09,0x2f,0xbf,0xb5,0x93,0x9a,0x95,0x05 +.byte 0x95,0xaa,0xf9,0x8c,0x71,0xd6,0xc6,0xd9,0x72,0x50,0xf6,0x58,0x77,0x09,0x47,0x97,0x21,0x42,0xf0,0x30,0x5c,0x3c,0xec,0x60,0x67,0xdf,0x5e,0xd2,0xed,0x0f,0xab,0x25,0x11,0xbb,0xf8,0x34,0x1e,0xbd,0x7f,0xc6,0x52,0x19,0xf5,0x53,0x28,0x46,0x75,0x93,0xce,0xc2,0x0b,0xdf,0xfd,0xa5,0xf1,0xb0,0xa2,0x0b,0x97,0xb5,0x76,0xb4,0x8a,0x2b +.byte 0x82,0x55,0x23,0x29,0xc2,0xd3,0x32,0x94,0x2f,0xf0,0xe6,0x77,0x2c,0xe4,0x6a,0x7f,0xd7,0xee,0x84,0xfb,0xba,0xb8,0x4b,0xae,0x13,0x34,0xbd,0xa8,0x12,0x7a,0x3c,0x28,0x40,0x74,0x5d,0x9a,0x11,0x1a,0xe9,0x74,0x31,0x28,0x3d,0x3d,0x64,0xb7,0x54,0xa0,0x51,0x0d,0xed,0x97,0x94,0x56,0x7a,0x48,0x8e,0x36,0xc9,0xae,0x5f,0xc6,0x79,0x45 +.byte 0x4f,0x07,0xdd,0x13,0x52,0x8b,0xfc,0x3b,0x73,0x44,0x68,0x64,0x51,0x0d,0x95,0x6f,0x0f,0x94,0xba,0xf8,0x40,0x64,0x51,0x43,0x49,0x63,0xc1,0xbd,0xf3,0x39,0x7f,0x6e,0x6f,0x45,0xeb,0xd2,0x33,0x44,0x2d,0x10,0xb4,0x68,0xcb,0xcb,0x8c,0x84,0xc5,0xd4,0x63,0x1d,0x23,0x85,0x30,0x4d,0x6c,0xfc,0xc9,0xa4,0x8c,0xd2,0x42,0x69,0x2f,0x17 +.byte 0x86,0xf0,0x17,0xd0,0xb2,0xaa,0xfd,0x62,0xcb,0xb4,0xfd,0xba,0x29,0xf8,0x85,0x45,0x84,0x9d,0xae,0xf8,0x9c,0x8f,0x64,0xd5,0xb8,0xb6,0xa9,0x64,0xf9,0x39,0x86,0x68,0x29,0xac,0x32,0x87,0x84,0x6c,0xb0,0x09,0xd2,0xdd,0xf2,0xec,0xa1,0x3a,0xfd,0x11,0x37,0x54,0x67,0x29,0x62,0x25,0x62,0xe8,0x6a,0x4b,0x5e,0xde,0x9a,0xf0,0x97,0x73 +.byte 0x66,0x69,0x2a,0x21,0xbe,0x95,0x86,0xca,0xf9,0x17,0xe9,0x4b,0x23,0x83,0x1e,0x8c,0x37,0x47,0x91,0x03,0x3f,0x9f,0xb8,0x60,0x2c,0xdd,0x82,0xbd,0x2a,0xc3,0xe7,0x30,0x8f,0x91,0x2b,0xa4,0x23,0x01,0x03,0xb2,0x8b,0xbd,0xd2,0x1d,0x16,0xf7,0x6a,0x86,0xa8,0xe4,0x54,0x6f,0x9c,0x47,0xa5,0x0f,0xbe,0x94,0x56,0xfa,0x18,0x69,0xbe,0x92 +.byte 0xe9,0xf8,0x24,0x4d,0x65,0x42,0x81,0x1f,0x85,0x52,0xb7,0xc9,0x49,0xde,0xa5,0x4c,0x8f,0x0d,0x5f,0x12,0x68,0x68,0x35,0xce,0x29,0x22,0x5c,0x55,0x3e,0xbd,0xce,0xf2,0x2a,0xec,0x7e,0xe1,0x29,0x0a,0x88,0xf3,0x5e,0xeb,0x27,0xe5,0x52,0xee,0x72,0x37,0xba,0xff,0x82,0x97,0xa9,0x5d,0x77,0x6f,0xb9,0xc3,0xa7,0x73,0xba,0x7f,0x2f,0x7a +.byte 0x19,0x32,0x87,0x56,0xa2,0x89,0xb2,0xb4,0x48,0xbe,0x2e,0x30,0x89,0x0a,0x8f,0x75,0x25,0x25,0x5c,0x46,0xe8,0x02,0x45,0xcb,0x03,0xd1,0xa3,0xeb,0x70,0x71,0x08,0x1c,0x46,0xf1,0x2c,0x43,0xe2,0x44,0x30,0x6a,0x61,0x31,0x45,0x3e,0xbb,0x47,0x33,0x24,0x25,0x13,0xeb,0xf7,0x24,0x66,0x15,0x4c,0xf3,0x07,0x2f,0xff,0xdc,0x37,0x0f,0x71 +.byte 0x85,0xc8,0x56,0xa7,0x2a,0x22,0x87,0x8b,0xae,0x35,0x31,0x29,0x96,0xf0,0x81,0xfb,0x2c,0xbf,0x44,0x69,0x69,0x9a,0x77,0xfd,0xc0,0x2b,0x42,0x16,0x67,0xd6,0xbd,0xd0,0xf1,0xb9,0x40,0x8f,0xd2,0x9a,0x1b,0x2c,0x64,0x78,0x6b,0xda,0x37,0x26,0xae,0x4c,0xee,0x36,0xaf,0x84,0x61,0xe4,0x93,0x22,0x64,0xaf,0xee,0x6d,0x69,0x5c,0xe5,0x85 +.byte 0xd8,0xcc,0xcf,0xf3,0xe8,0x05,0xcd,0xd2,0x09,0x66,0xaf,0xbb,0xc4,0x79,0xb2,0xa7,0xa5,0x09,0xd9,0xf5,0xa2,0x83,0x4f,0xd5,0xf5,0xf3,0x7d,0x7a,0xab,0x94,0x83,0xb3,0x15,0xfb,0x0d,0x1a,0x1d,0x77,0xc5,0x63,0x0b,0x54,0xde,0xa8,0x0d,0xc4,0x16,0xe3,0x89,0xeb,0xa3,0x1b,0xd4,0x77,0x13,0xe3,0x55,0x98,0x15,0xab,0x3b,0x32,0xc8,0xd4 +.byte 0x0c,0x91,0x80,0x57,0xf7,0x1e,0x24,0xd0,0x56,0x78,0x29,0xd2,0x03,0xe7,0xc4,0xd2,0x09,0xca,0xee,0x9b,0x60,0x5f,0xa1,0xfd,0xaa,0x85,0x4b,0x68,0x35,0xa4,0x3b,0xef,0x29,0xb8,0x49,0x85,0xee,0xbb,0x39,0xc0,0xc6,0x99,0x97,0xc6,0x86,0x6c,0x27,0xf9,0x1a,0x19,0x6e,0x7c,0xae,0x75,0x41,0x0d,0x08,0x1e,0xf0,0xb4,0xc3,0x9e,0xdb,0x40 +.byte 0x86,0x94,0x9d,0x90,0x09,0x3f,0xdc,0xb9,0xfc,0x59,0x41,0xc5,0x5b,0x89,0x97,0x49,0x4a,0x1a,0x06,0x68,0x83,0xd8,0x7e,0x09,0x51,0xe1,0x86,0xd8,0x88,0xbe,0x8a,0x36,0x48,0xb3,0x83,0x7b,0x57,0xdd,0x8f,0x18,0x67,0x4a,0x7d,0x68,0xab,0xb9,0x05,0xf0,0xe4,0x27,0x4e,0x33,0x44,0xa7,0x13,0x04,0x94,0xc5,0x57,0xaf,0x36,0x03,0xe8,0x09 +.byte 0x36,0x5b,0xe8,0x92,0xad,0x0a,0x79,0x02,0x24,0x43,0x62,0xc7,0xa5,0xce,0x7c,0xac,0x6d,0x0a,0xf2,0x83,0x33,0x05,0x3b,0x6f,0x9d,0xda,0x96,0x9f,0x8b,0x79,0x3e,0x6c,0xd6,0xba,0x7f,0xea,0x84,0xd8,0x23,0xb6,0x92,0xc3,0x9c,0x7f,0x0d,0xcb,0x7b,0x9f,0xbd,0xc2,0xf5,0x6f,0x71,0x67,0x5f,0x0b,0xd1,0x73,0xb5,0x8c,0x46,0x07,0xcd,0xd8 +.byte 0xee,0x28,0xcf,0x8f,0x8e,0x5c,0xde,0x14,0x78,0xc7,0x60,0xd5,0xf4,0x49,0x97,0x46,0x5f,0x49,0x4a,0xb4,0x8f,0xc9,0xd1,0x52,0x34,0x01,0x29,0xa1,0x46,0x55,0xf8,0x29,0x53,0xbb,0x32,0x1e,0x4b,0x89,0x96,0x53,0x0b,0xf2,0x16,0xf9,0xa7,0x70,0x93,0x59,0x78,0xc0,0x77,0x78,0x9f,0x6c,0xb3,0x0e,0x3f,0x6f,0x40,0x09,0x1d,0xd6,0x66,0x4e +.byte 0xe8,0xb0,0xa1,0x14,0x65,0xc8,0xc7,0x3f,0xd2,0xf0,0x1f,0xfd,0x51,0xe0,0x29,0xd6,0x39,0x26,0x60,0xfe,0x62,0xc2,0xe4,0x45,0x6d,0x01,0xdb,0xd3,0x7c,0xdf,0x48,0x10,0x2f,0xf2,0x8e,0x6c,0xc6,0x58,0xc3,0x7d,0x26,0xb1,0x9d,0x52,0x02,0x2a,0x5f,0x2b,0x57,0xca,0x84,0x9d,0x74,0x31,0x01,0x0f,0xda,0x3d,0x7c,0xbb,0xdc,0x71,0x82,0x8b +.byte 0x42,0xaf,0x49,0x9e,0x2c,0xe8,0xdc,0xa1,0xfb,0x23,0x6d,0xdb,0xdc,0x36,0x01,0xc9,0xb3,0x93,0xd4,0x2e,0x8b,0xd1,0xe4,0xed,0x1b,0xd0,0x4c,0xeb,0xaf,0x96,0x57,0xde,0xee,0x90,0xf4,0xa7,0x58,0x46,0x8a,0xd4,0xa9,0x44,0xe0,0xb3,0x13,0x96,0xb2,0x8a,0xb0,0xd3,0xbe,0x71,0x38,0xb7,0x35,0xa9,0xa8,0x48,0x37,0xa3,0x11,0x0e,0x61,0x36 +.byte 0x6c,0xaf,0x6c,0xf2,0x3f,0xd6,0x55,0xb3,0xa5,0xe0,0xaf,0x18,0x6a,0xf5,0x78,0xb5,0x7c,0xc7,0x48,0x24,0x6c,0xea,0x1e,0x7f,0x52,0xb4,0xe8,0x72,0x46,0xd2,0xbd,0x1c,0x9e,0xe6,0x5b,0x3e,0x9c,0x6c,0x6c,0x6b,0x45,0x0c,0x3a,0xb7,0x67,0x3c,0x8e,0x77,0x77,0xbf,0x50,0xb6,0x30,0x6e,0xe1,0x28,0x0d,0x2a,0x85,0x44,0xf8,0xbb,0xf1,0x14 +.byte 0x89,0xaa,0xc2,0x27,0xf5,0x8e,0xa1,0xd3,0x07,0xba,0xe8,0x03,0xcf,0x27,0x1c,0xa6,0xc4,0x63,0x70,0x40,0xe7,0xca,0x1e,0x05,0xb7,0xb7,0xdc,0xc0,0x07,0x4c,0x0d,0x21,0x12,0x60,0x02,0xe3,0x86,0x65,0xe7,0x1c,0x42,0x86,0xdd,0xdb,0x7f,0x26,0x60,0x01,0x3d,0xd8,0x18,0xcd,0x7a,0x9f,0xf8,0xb2,0xf6,0x6d,0xd3,0xe0,0x57,0x1f,0x80,0x30 +.byte 0x2d,0x5e,0x71,0xdf,0x4d,0x7f,0xcd,0x63,0x77,0x19,0x5e,0x2d,0xd5,0xb5,0xfa,0xa9,0x26,0x02,0xb9,0x62,0x2b,0x57,0x80,0x0a,0xe9,0xbc,0xa4,0x3b,0xa7,0xf1,0xf3,0x77,0x2b,0x6b,0x41,0x5e,0xf7,0xe8,0x66,0x23,0x63,0xac,0xcd,0x58,0xfc,0xa9,0x97,0x6b,0x5a,0x1e,0xe5,0x7d,0xfd,0xb1,0x42,0x7f,0x99,0xdd,0x60,0xaf,0x39,0x46,0x36,0xdd +.byte 0xc2,0x70,0x83,0x53,0xd1,0xc3,0x69,0xc8,0x90,0x0e,0x2b,0x34,0xb2,0x0c,0xb9,0x7a,0xb8,0x6b,0x7c,0xc2,0xf3,0xae,0x41,0x24,0xb8,0x94,0x5f,0xdd,0xce,0xda,0x95,0xda,0x49,0x81,0xb6,0xf8,0xa9,0x8e,0xb3,0x79,0xf8,0x55,0xf9,0xcf,0x8c,0x24,0x99,0xfc,0x6b,0x15,0x0f,0x39,0xac,0xd0,0x3e,0x89,0x9d,0xc2,0x46,0x8c,0x99,0x45,0xfd,0xce +.byte 0x13,0x4c,0x9c,0xc8,0x80,0x87,0x8f,0x7b,0x28,0xe3,0x5e,0x2b,0xe3,0x89,0x7e,0x13,0x52,0x52,0xe9,0x3a,0xed,0x33,0xe7,0x28,0xc7,0x7a,0x48,0x8d,0x0e,0xee,0x24,0xc4,0x61,0x04,0x3c,0xd4,0x7e,0xf3,0x30,0x22,0x07,0x58,0xae,0x02,0xc5,0xd1,0x7d,0x04,0x18,0xca,0xd6,0x04,0xd4,0xc5,0xa4,0xff,0x8d,0x0d,0x68,0xd4,0x1a,0x3a,0x72,0x6f +.byte 0x41,0x1e,0xda,0xc0,0x97,0x7c,0x55,0x2c,0x13,0x20,0x9a,0x07,0x35,0xcc,0xc5,0x83,0xee,0x41,0x77,0x51,0x28,0x07,0xe0,0x81,0xe3,0x9b,0x1f,0xdb,0x73,0x5c,0x8d,0x82,0xa2,0x8b,0xf4,0x92,0x4f,0x70,0xa8,0x6a,0xcf,0xbf,0xcf,0x0b,0x71,0xbc,0xeb,0x81,0xb4,0xc9,0x65,0xe7,0x43,0xef,0x25,0x45,0x27,0xea,0xcd,0x60,0x68,0xcd,0x2d,0x7a +.byte 0xfd,0x88,0x6d,0x06,0xd5,0x92,0x32,0xc3,0x18,0x88,0x64,0xa7,0xde,0x39,0xeb,0x0b,0x5c,0x9c,0xf6,0xf6,0x93,0x90,0x24,0x0c,0x9e,0x0b,0x89,0x1c,0xcb,0xc8,0x96,0x72,0x17,0xae,0x46,0x61,0x69,0x6e,0xbe,0x6c,0xf1,0xa4,0xa4,0x50,0xa9,0x2a,0x47,0xd7,0x80,0xe4,0x72,0xd2,0x3f,0x1a,0xdd,0x82,0xdc,0x12,0x66,0x10,0x26,0x15,0x80,0x56 +.byte 0x4d,0xbe,0x02,0xae,0xe1,0x24,0x8a,0x41,0x52,0xc8,0x5d,0x8d,0x62,0x85,0xbe,0x7c,0x35,0xdd,0x88,0xd3,0xf5,0xf7,0x9b,0xf1,0x5a,0x4e,0x70,0x48,0x31,0x5a,0xaa,0x96,0x1e,0xf8,0x73,0xb4,0x0f,0xb2,0x82,0xf4,0x13,0xac,0xba,0x3b,0x12,0x36,0x1e,0x23,0xbf,0x09,0x8a,0x1c,0x96,0x47,0x56,0x2d,0x16,0x24,0xc3,0x23,0x65,0xe2,0x99,0xd0 +.byte 0xf0,0xa0,0x2c,0x64,0x35,0xad,0x16,0x34,0x67,0x52,0xbc,0x8f,0x17,0x90,0xf9,0xc7,0x4f,0x64,0x6c,0x75,0x3f,0xd7,0x48,0xa4,0x6b,0x43,0xe6,0x2e,0x7a,0xe3,0x79,0xe8,0x47,0x51,0xe9,0x52,0x36,0x30,0xa4,0x24,0x89,0x00,0xd5,0x77,0xbd,0x34,0x2e,0xa9,0x74,0x02,0x25,0xc0,0x0c,0x10,0x31,0xf0,0xa7,0xcb,0x01,0xed,0x43,0x70,0x15,0xe6 +.byte 0xda,0x01,0xb4,0x7a,0x13,0xbc,0xf1,0x57,0x34,0xb1,0xb7,0xb3,0x26,0x18,0x5f,0x42,0x6b,0xcb,0x78,0x25,0x48,0xe9,0xe6,0xe8,0xf5,0x45,0xa2,0x61,0x97,0x10,0xa5,0x7e,0x7a,0x48,0xf3,0x23,0xa5,0x88,0xc0,0xc4,0xc7,0x3b,0x5c,0x0c,0xfc,0xe0,0xf4,0x68,0x64,0xc6,0x9f,0xd9,0x17,0xcb,0xe5,0xba,0x4a,0xa4,0xe0,0x27,0xf8,0x2b,0x4e,0x67 +.byte 0x13,0xab,0xd2,0xce,0xbc,0x8d,0xdf,0x6e,0x49,0xaf,0x72,0x8a,0x51,0xa1,0x78,0x38,0x0a,0x58,0x2e,0x72,0xec,0x94,0x70,0x8d,0xdf,0x0b,0x5a,0x52,0x81,0xb1,0x9b,0xda,0x2c,0xd2,0x85,0xbb,0x8f,0xb0,0x99,0x64,0x24,0xbe,0x03,0xd9,0x92,0x8d,0x29,0xf3,0x41,0x9c,0xd6,0xef,0xef,0xb2,0x5c,0x22,0x90,0xff,0x27,0x4d,0xb3,0x91,0x72,0x9f +.byte 0x42,0xca,0x66,0xc5,0x66,0xb7,0x50,0x3e,0x83,0x6f,0x2d,0xe3,0x7b,0x2a,0xc4,0x5a,0x93,0x92,0x80,0xdb,0x1a,0xdd,0xef,0xfd,0x96,0xcb,0x6a,0xd8,0x4a,0xc5,0x6e,0x36,0x4a,0xe4,0x10,0x15,0xb3,0x12,0xb4,0xd9,0x9e,0x37,0x48,0x96,0xcb,0xe5,0x3a,0x4f,0x57,0xa6,0x46,0x2f,0xd3,0x06,0xb8,0x61,0x1c,0x17,0x3a,0xb8,0xad,0x40,0x50,0x57 +.byte 0x10,0xd9,0xd0,0xe9,0x1b,0xe3,0x18,0x8c,0xc4,0xfa,0x08,0x8d,0x82,0x3c,0x22,0x22,0x1b,0x97,0x64,0xa6,0x8b,0x7c,0x70,0x2b,0xa0,0xd8,0x4c,0x64,0xcf,0xbc,0x49,0x78,0xcb,0x92,0x0f,0xe1,0x60,0x12,0x4e,0x92,0x0d,0xaf,0xa4,0x1f,0xe0,0x2a,0xa5,0x69,0xc6,0xa1,0x91,0x5c,0xdd,0xb8,0xae,0xfa,0xc5,0xb9,0x18,0x31,0x81,0x32,0x6e,0x97 +.byte 0x44,0x2a,0xda,0x58,0xcd,0x9e,0x0d,0x57,0xe0,0xe3,0x5f,0x7b,0x04,0xd8,0xc8,0x68,0xf5,0xa2,0xac,0x0c,0x29,0xf0,0x7e,0xff,0x32,0xfb,0x53,0x1a,0xc2,0xe3,0xae,0xa5,0xe4,0x9c,0x50,0xaf,0xf4,0xde,0x0b,0xdd,0x4d,0xfa,0x65,0x3c,0xbe,0x3c,0xb8,0xda,0x88,0xd9,0x6c,0x55,0x58,0xe1,0x4d,0x00,0xa8,0x1e,0xe2,0x3a,0x9c,0x53,0x9b,0xca +.byte 0xb7,0x5d,0x3a,0x83,0xe0,0xbb,0x95,0xc4,0xd5,0x45,0x48,0xdc,0x12,0xab,0x24,0xfc,0x5d,0x91,0xe1,0xc8,0x0a,0x5c,0x10,0xc4,0xc9,0xaf,0xb6,0x54,0x80,0xfd,0xa0,0x70,0xb9,0xab,0xdf,0x34,0x9f,0x5c,0xff,0xde,0x8e,0xa0,0x0b,0x21,0xcf,0x28,0xc4,0xdf,0x67,0xb5,0xc0,0x20,0x49,0x0c,0x7e,0xe6,0xf7,0x41,0x6b,0x75,0xd9,0x1d,0x3b,0x49 +.byte 0xb7,0x4f,0x01,0xd1,0x20,0x62,0x15,0x1e,0x9f,0x16,0xb0,0xbd,0x30,0x09,0x05,0x00,0x0f,0x25,0x5a,0x37,0xe9,0xa6,0xc6,0xef,0xe5,0x39,0x2b,0xd7,0x6b,0xc5,0x96,0xd2,0xad,0x46,0xaf,0xd3,0xc0,0xfd,0xea,0xff,0x4c,0xaa,0x44,0x48,0x9a,0xdb,0x99,0x44,0x3f,0x4a,0xf0,0x3f,0x81,0x75,0xf2,0x79,0x31,0x3c,0xed,0x56,0xc6,0xf0,0xf1,0x8c +.byte 0xdb,0x1d,0x6c,0x6c,0xcc,0xfb,0xc2,0x30,0xf6,0x24,0x14,0x69,0xc4,0x89,0x4d,0xd0,0x10,0x77,0x37,0x00,0xe8,0xc9,0xf2,0x32,0xf1,0x43,0x8b,0xe1,0x09,0xc4,0x59,0x17,0xf9,0x20,0x2b,0x01,0x76,0x20,0xb8,0x03,0x84,0xf6,0xd7,0x2e,0xef,0x20,0xa6,0xfa,0x8b,0x74,0x7f,0x4a,0x14,0x33,0xad,0xac,0x45,0x66,0x18,0x2b,0x6b,0xd2,0xb8,0x20 +.byte 0x1a,0xff,0xca,0x25,0x69,0xfd,0xba,0x4b,0x5b,0x9c,0x38,0x35,0x4c,0x30,0xa2,0x24,0x3d,0xbb,0xd4,0xf3,0x67,0x24,0xa5,0x93,0xc6,0xf5,0xb2,0xb4,0xa5,0x04,0x53,0xb6,0xe4,0xc7,0xdc,0xf1,0xe5,0x43,0xb7,0x73,0xaa,0xab,0x5c,0xea,0xcb,0xf1,0xeb,0x5b,0x04,0x7a,0xff,0x0f,0x5e,0xb4,0xd3,0x2a,0x39,0x50,0x1b,0x54,0x1f,0x32,0xd7,0x7c +.byte 0xea,0x3f,0xee,0xa5,0xc8,0x46,0x48,0x7e,0x75,0x60,0x7a,0x42,0x42,0xd3,0x15,0x07,0x69,0x46,0x1c,0xe2,0x21,0x31,0x94,0x31,0x24,0x9e,0x39,0xab,0x7a,0xf9,0xc2,0x0b,0x2d,0x6b,0x55,0xa3,0x36,0xb2,0x65,0xf2,0x17,0x08,0xde,0x15,0x83,0x07,0x36,0x12,0x54,0x8f,0x0b,0x23,0xa8,0x7e,0xb5,0x57,0x1c,0x9e,0x29,0xd7,0xd4,0x9b,0xc1,0xf6 +.byte 0x94,0x23,0xf3,0x92,0xbf,0xba,0xc8,0xf5,0x78,0x3e,0x67,0x48,0x14,0x3b,0xd4,0xe9,0x8f,0x78,0xc1,0x4b,0x9a,0x59,0x08,0xaa,0x50,0xf4,0x9d,0xc4,0xc3,0x2c,0xbc,0x56,0x2c,0x13,0x30,0x75,0xfb,0xed,0x48,0xab,0x90,0xec,0x64,0x18,0xb5,0xd5,0xb5,0x7f,0xc1,0x7f,0x83,0xf2,0xdb,0xae,0xde,0xf5,0xb5,0x29,0x03,0xbe,0x80,0xb1,0x5d,0x97 +.byte 0xd3,0x7a,0xa4,0xd0,0xe0,0xce,0x04,0xda,0xaa,0x82,0x19,0xc9,0x02,0xb7,0x1c,0xe1,0x66,0xd9,0x3e,0x86,0x6d,0xb5,0xd1,0x35,0x63,0x8e,0x4b,0xc6,0x58,0x41,0xf9,0xb7,0xba,0xf3,0x06,0x91,0xb7,0xa2,0xfb,0xb5,0x5f,0x53,0xf3,0xe0,0xc1,0xf6,0x91,0x66,0xc7,0x93,0x3a,0x0a,0x72,0xb1,0xed,0x36,0x9d,0xde,0x21,0xdd,0x7d,0x0a,0x7b,0x35 +.byte 0x1f,0xc3,0x56,0xde,0xbb,0xcb,0xb2,0x0a,0xb6,0x84,0xce,0xa1,0xc6,0x1a,0x46,0x2f,0x9f,0x48,0xd5,0x98,0x73,0xa4,0xbd,0xbd,0xa3,0xe9,0xc9,0xc4,0x64,0x89,0xb7,0x9c,0x97,0x7c,0x2f,0x88,0x22,0xe4,0x4b,0x71,0x3d,0x2a,0x47,0xee,0xf8,0xfe,0xe0,0xf7,0x03,0x14,0xe6,0x7c,0x9e,0x57,0xbb,0x8e,0xf5,0xea,0x63,0xfc,0x5b,0x18,0x3b,0xa2 +.byte 0xa1,0x4a,0x28,0x82,0x37,0x77,0x5b,0xc4,0xd3,0xc1,0xf2,0x87,0x13,0x2b,0x2a,0xc8,0xac,0x70,0xe1,0x82,0x38,0x9c,0x12,0xa0,0xc4,0x9e,0x6b,0xac,0x33,0x8a,0xe9,0x31,0x6f,0xa1,0x76,0x94,0x48,0xcf,0xbc,0x78,0x22,0x82,0x6a,0xb0,0xb9,0x49,0x71,0xdb,0xde,0x8b,0x90,0x09,0x82,0x4d,0x79,0x17,0xe8,0xcf,0xd8,0x50,0xc3,0x08,0x07,0x81 +.byte 0x5f,0x9a,0x72,0xce,0x0a,0xe4,0x29,0xc9,0xdd,0x95,0x67,0x58,0xa1,0x14,0xec,0xcf,0x2f,0x29,0xcf,0xce,0xb3,0x35,0x54,0x77,0x67,0x56,0xec,0x95,0x68,0xee,0xbf,0x9c,0x9f,0x74,0x78,0x12,0xd5,0x30,0x83,0x28,0xd5,0x36,0x96,0x57,0xa0,0x8d,0x1c,0x99,0x19,0x04,0xaf,0x25,0xe5,0x71,0x83,0x88,0xb0,0x74,0x38,0xdd,0x8a,0xff,0x39,0x7a +.byte 0xfd,0x34,0x8f,0x9c,0x67,0xa8,0xc8,0x6f,0x13,0x5d,0xf2,0x5b,0x22,0xd3,0x8e,0x63,0x51,0x58,0x9b,0xfc,0xaa,0x89,0x65,0x4e,0x36,0xc4,0xa7,0xef,0x98,0xf9,0xaf,0xcd,0x35,0x8c,0x16,0xbc,0x70,0x4f,0xcd,0x71,0x2a,0xf4,0x13,0xb3,0x3d,0xa3,0x92,0x71,0x45,0xe5,0x9a,0x45,0xbd,0xc5,0x1d,0x82,0x60,0x3a,0x97,0xf3,0x0f,0x96,0x21,0x3d +.byte 0xe5,0x6e,0xfb,0x9d,0x9b,0xeb,0x15,0xc2,0xa6,0x73,0x76,0xf2,0xcd,0xec,0xfd,0x0f,0xf4,0x3f,0x46,0xc9,0x9c,0x73,0xa1,0x21,0x08,0xdc,0x31,0x00,0xaa,0x95,0x07,0xf0,0x3d,0x51,0x57,0xfa,0x6b,0xc3,0x8e,0xe9,0xa4,0x65,0xdc,0xff,0x57,0xb9,0x1f,0x4f,0xc6,0x6d,0x03,0x00,0xa7,0x19,0xb8,0x24,0xb5,0x3d,0x87,0xcb,0x84,0xb7,0xf5,0xfe +.byte 0x51,0x16,0x5b,0xc7,0xed,0x4b,0xff,0xa3,0x66,0x17,0x93,0x60,0x69,0x84,0x8c,0x95,0x74,0xa7,0x30,0x2d,0x09,0xf7,0x4e,0x0e,0x2f,0x99,0xda,0x46,0x34,0x0f,0x93,0x90,0x97,0x4c,0xa6,0x25,0x15,0xb8,0x6f,0x1d,0xd5,0xe1,0xc1,0x39,0x50,0xfd,0xd5,0x79,0x4f,0x04,0x2f,0x76,0x50,0x3f,0x67,0x56,0xad,0x02,0x82,0x30,0x1a,0xaa,0x6e,0xe2 +.byte 0x05,0x6a,0x93,0xb7,0xbe,0xde,0x84,0xce,0xd8,0x53,0xed,0xad,0x95,0xab,0x45,0x1f,0x4c,0x3b,0x22,0x36,0x27,0x45,0x19,0xa4,0x7f,0x12,0x20,0x6c,0x9d,0xeb,0xd2,0xfe,0xd6,0x7d,0x25,0xf9,0xe3,0x64,0x77,0x56,0x89,0x12,0x57,0x80,0xd5,0x40,0xbb,0x2a,0xcc,0xac,0x34,0x8e,0x87,0xfd,0x58,0xc3,0xbd,0x92,0x48,0xd8,0x7f,0xc4,0x39,0x6a +.byte 0x4e,0x1c,0x50,0x93,0xef,0xae,0x81,0x93,0x50,0x95,0x6e,0x46,0x7c,0xf5,0x27,0x44,0x6c,0x21,0x06,0x49,0x89,0x7e,0xf4,0xfa,0x08,0xa5,0xbc,0x0a,0xbd,0xb6,0x7b,0x55,0xac,0x87,0x19,0x33,0xfa,0xab,0xf3,0x15,0xc9,0x1b,0x83,0xf2,0x41,0xf1,0x26,0x6f,0xdf,0x15,0x60,0xdb,0xa6,0x03,0x43,0x3e,0x34,0x7a,0xa9,0xb1,0x38,0x57,0xe4,0x09 +.byte 0x1a,0x4a,0xd8,0x6e,0x28,0xee,0x7d,0x74,0x54,0x03,0xb3,0x29,0x24,0xb3,0xf0,0xc6,0x20,0x7c,0x47,0x01,0x66,0x36,0x7a,0x14,0x18,0x09,0xd6,0xaa,0xa6,0x82,0x5b,0xe4,0x0a,0xf9,0x41,0x52,0x3b,0x56,0xa2,0xf8,0xa2,0xa1,0x2b,0xe0,0x0d,0x1f,0x5b,0xe4,0x0e,0xe1,0x94,0x84,0x6f,0xed,0x2e,0x11,0xfa,0x4a,0xbd,0x41,0xf4,0x3c,0x8c,0x7e +.byte 0x94,0x46,0xec,0x79,0x81,0xb0,0x36,0xfd,0x9c,0x73,0x0f,0x84,0x1a,0x59,0x4e,0x1b,0xd5,0xd1,0x0d,0xff,0xfd,0xb7,0xfb,0x73,0x35,0x8a,0x66,0xed,0xf3,0xee,0x6d,0xf7,0x86,0x0a,0xb9,0xc0,0xf1,0xa3,0xb7,0x32,0x49,0x01,0xe8,0xcd,0xfe,0x82,0x7b,0xf6,0x46,0xd8,0x73,0x47,0x8b,0x7b,0x6e,0x31,0x92,0x0f,0x4b,0x16,0x11,0x86,0x1d,0x02 +.byte 0x5d,0x12,0x79,0x59,0xdc,0x8c,0xaa,0x1b,0xc1,0x75,0x63,0xb2,0xd6,0xbf,0x19,0xb0,0x81,0x70,0x34,0x12,0xd2,0x09,0xbe,0x6d,0xa1,0x31,0x77,0xd2,0x9b,0x59,0xdc,0xcb,0x67,0xb5,0x14,0xcd,0x37,0x31,0x2c,0xa6,0x17,0x58,0x2b,0x24,0xfc,0x2a,0x9e,0x8f,0x38,0x38,0x7a,0x80,0xda,0x8b,0x54,0x1d,0xc9,0x99,0xc7,0x1f,0x98,0x7a,0x1f,0x32 +.byte 0x23,0x1c,0xb5,0x6e,0x53,0xd3,0x61,0xe7,0x78,0x19,0x6c,0xd5,0x2f,0x85,0xde,0xd1,0x67,0x6b,0x9b,0xa1,0x09,0x87,0x5e,0x89,0x5e,0x89,0x21,0x36,0xf2,0x94,0xc1,0xfd,0x6c,0x4e,0xd9,0x6b,0xd2,0xb1,0x1b,0x48,0x37,0x9a,0x7b,0xc9,0x52,0xfd,0xe2,0x6d,0x07,0x19,0xf2,0xa5,0x69,0xdc,0x0b,0x52,0x8f,0xb3,0x87,0x03,0x1a,0xd8,0x43,0x20 +.byte 0x68,0xcf,0x08,0xcc,0xce,0x37,0xf6,0x96,0x7f,0x03,0x62,0xb2,0xce,0x6a,0xfb,0x22,0x54,0xd6,0xfc,0x84,0x5c,0xf5,0x55,0x32,0x36,0x77,0x1d,0x15,0x6a,0x2c,0x3a,0x01,0x34,0xff,0x5b,0x7f,0x3f,0xab,0x97,0x8f,0xbd,0x1d,0x07,0xb9,0x47,0xb1,0xcc,0xc0,0xdf,0x17,0x38,0x54,0x07,0xc0,0x1b,0xb9,0xa2,0x29,0xa6,0x25,0x73,0x32,0x4d,0x5e +.byte 0x51,0x60,0xb3,0x27,0xe5,0xb6,0xdb,0x56,0x81,0x95,0x03,0x7e,0xca,0xc6,0x15,0x8f,0x48,0xd4,0xac,0x71,0x41,0xdc,0x9c,0x86,0x5d,0xd8,0x90,0x90,0x54,0xdd,0x3d,0xf3,0xa8,0xbb,0xe5,0x55,0x69,0x26,0xdf,0xd1,0x8e,0x75,0x2a,0xe4,0xfe,0xe0,0x80,0x1d,0x6b,0xd2,0x8a,0x06,0x49,0x4e,0x60,0xf8,0xbd,0x3d,0x99,0x27,0x80,0x27,0x42,0x66 +.byte 0x01,0x32,0xe1,0x9e,0xa6,0xde,0x7b,0x14,0xa4,0x49,0x68,0x70,0xbe,0xa4,0xe1,0x44,0x2e,0xce,0xa3,0xe9,0x1d,0x7a,0xbd,0xf1,0xe4,0x25,0x11,0x47,0xd8,0xaa,0x32,0x34,0xf8,0xca,0x3d,0xec,0xf3,0x5d,0x8a,0x55,0xe7,0xd4,0x7c,0xfb,0xcf,0xe7,0xa6,0x13,0xaa,0x16,0x5f,0xaa,0x02,0x19,0xdd,0xf1,0xf8,0x5c,0xb2,0x1e,0x68,0x9a,0x21,0x93 +.byte 0xd1,0x38,0x31,0xbb,0x26,0x76,0x44,0xf8,0x84,0x3b,0xf5,0xd1,0x52,0xbe,0x1b,0x8e,0x4d,0xa0,0xb4,0x4a,0x5a,0x7e,0x89,0xe5,0x36,0xb0,0x76,0x77,0xc5,0xc2,0x22,0x73,0xc2,0x19,0x12,0x7f,0xdf,0x9c,0xb8,0xc0,0xf5,0x0e,0xd5,0xa3,0x55,0xae,0x61,0xf8,0xf1,0x6b,0x79,0xc8,0x2e,0xbc,0xa5,0xef,0xd4,0xb1,0x84,0x0c,0x15,0xc4,0xed,0xb3 +.byte 0x18,0x29,0xd6,0x31,0x83,0x79,0x30,0x1a,0x8f,0xf0,0x3b,0xe9,0xd1,0xf2,0x1d,0xec,0xcb,0xe8,0xc5,0x1c,0xb5,0xcb,0x8e,0x01,0xd1,0xb2,0x86,0x43,0x33,0x95,0x70,0x7e,0x75,0xa9,0xa1,0xe7,0xcb,0xd9,0xf4,0xd3,0xe1,0xe2,0xe9,0x46,0x21,0x20,0x3b,0xe9,0x48,0x1c,0x3f,0x93,0x57,0x31,0xeb,0x15,0x9c,0xa7,0xa6,0xcb,0xb5,0xb7,0xa7,0x24 +.byte 0xbe,0x66,0x4c,0x92,0x7c,0xe8,0x8e,0x3f,0x9c,0xa9,0xd7,0xad,0x73,0x68,0x19,0x19,0xd4,0xb5,0x57,0x82,0xdc,0x67,0x3c,0xec,0xac,0x06,0xec,0x86,0x9b,0x65,0xff,0xbb,0xc3,0x90,0x48,0xdb,0x52,0xcc,0xa4,0xf5,0xdf,0x2c,0xc5,0x5a,0xe3,0x30,0xed,0xad,0x37,0x40,0x8c,0xaa,0x32,0x4f,0x94,0x1e,0x14,0x59,0x48,0x1d,0xd3,0xaf,0x80,0xe7 +.byte 0xcf,0x6b,0xa7,0x70,0xe7,0x98,0x22,0x4b,0x40,0x02,0x0c,0x29,0x09,0x0a,0x53,0xf7,0xd4,0xeb,0xbb,0x75,0xb4,0x30,0x1c,0x67,0xea,0xd2,0xb5,0x40,0xfe,0x57,0x2c,0x3c,0x44,0x8d,0x8d,0x02,0x78,0xf0,0x76,0x8f,0x92,0xab,0xb4,0xc9,0xc0,0x2f,0xf5,0xde,0xa7,0x09,0x14,0xf1,0xe5,0x34,0xeb,0x86,0xfa,0xcf,0xcc,0x85,0x1c,0x9c,0xa6,0xe1 +.byte 0x72,0x9e,0xc1,0xe4,0x74,0xc4,0x96,0x5d,0xf4,0x4b,0x23,0x4f,0xa5,0x32,0xff,0x38,0x21,0x8f,0x43,0xe5,0x96,0x20,0x3c,0x78,0xb8,0xb4,0xcd,0x29,0x62,0x84,0x59,0xb5,0xb4,0x57,0x07,0xa8,0x79,0x77,0x21,0xf4,0x82,0xa7,0xb1,0x36,0xee,0x16,0x8e,0xb5,0x9a,0xf7,0x03,0xac,0x64,0x03,0x20,0x48,0x24,0xbc,0xbb,0xec,0x50,0xed,0xa1,0xf3 +.byte 0x67,0xd9,0x34,0xe1,0x0c,0x0b,0xc3,0xd0,0x46,0x0b,0x55,0x85,0x59,0x3c,0xb4,0x7d,0xd0,0xc2,0xe7,0x95,0x24,0x1f,0x53,0x76,0xf1,0x81,0x4a,0x61,0x6a,0x2e,0x3b,0x3f,0x92,0x14,0x7c,0xe0,0x33,0x7f,0xb4,0x85,0x92,0x78,0x0c,0x0b,0xe7,0xbd,0x7a,0x08,0x31,0x7d,0x47,0x3b,0xfa,0xdd,0x90,0x9e,0xf0,0xa9,0xd1,0xa7,0x7c,0x2a,0x37,0xb1 +.byte 0x23,0x71,0x34,0xa0,0x63,0xfb,0x9e,0x8f,0x39,0x00,0xa0,0x09,0xd4,0x1f,0xf4,0xba,0x2d,0xc1,0xac,0x6c,0x94,0x18,0x56,0x3e,0x89,0x92,0x63,0x10,0x5e,0xfe,0x76,0xec,0x4e,0xb6,0x5d,0x59,0xf9,0x94,0x46,0x4f,0xda,0xd5,0x3e,0x6c,0x48,0x49,0x7e,0x7c,0x77,0xe7,0x7e,0x22,0x31,0xb5,0x9d,0x15,0xd3,0x08,0x24,0xdb,0x67,0x98,0x6b,0xfc +.byte 0x45,0x54,0x85,0x29,0x9a,0x47,0xa5,0x60,0xe2,0x46,0x36,0x45,0x16,0x54,0xd6,0xb1,0x5c,0x38,0x45,0xf8,0x43,0x28,0x58,0x81,0xc9,0x57,0x10,0xda,0x3b,0xfc,0x3e,0xe4,0xf4,0xb2,0x16,0xb6,0x16,0x1d,0xa4,0x68,0xa6,0xe0,0x36,0xdb,0xe2,0x19,0x1c,0xce,0x9f,0x94,0xa9,0x94,0xad,0x20,0xcb,0x17,0xd0,0x92,0x37,0x75,0x88,0x0d,0xaf,0xdf +.byte 0x98,0x6d,0x19,0x9e,0x8e,0x61,0xe4,0x8c,0xfc,0x27,0x27,0x6a,0xa7,0xa4,0x66,0x7f,0x08,0x03,0xef,0x5c,0x4a,0xb7,0x89,0xa1,0xae,0xe8,0x70,0x3f,0x13,0x27,0x0a,0x7d,0x5d,0x5e,0x2b,0x69,0xb5,0x98,0x1f,0x25,0x1e,0x41,0xff,0x46,0x5a,0x25,0x1f,0xb4,0x90,0x8e,0x81,0x91,0x19,0x63,0x10,0xd4,0xa9,0xdf,0x3b,0xae,0xe6,0x63,0x1a,0xdc +.byte 0x09,0x5f,0xac,0xaa,0xb8,0x6b,0xbd,0x6a,0x90,0x70,0xce,0x2c,0x63,0x6d,0x48,0x78,0xca,0xc1,0x59,0x94,0xe2,0xc7,0x89,0x17,0x73,0xfa,0x73,0x34,0xb7,0xd3,0x9c,0x4e,0xd8,0xac,0x18,0x80,0x25,0xbf,0xbe,0x75,0x0a,0x9a,0x05,0x5e,0x54,0xcb,0xba,0xab,0xca,0x7f,0x96,0xf7,0x26,0x8c,0x82,0xe0,0x23,0xa5,0x86,0xb5,0xdf,0x31,0xd0,0x2f +.byte 0xe3,0x66,0x96,0x83,0xd2,0x04,0x43,0x8a,0x28,0x59,0x49,0xdc,0x11,0x38,0xd9,0x5f,0xc2,0x31,0xaa,0xa8,0x1a,0xff,0x57,0xf1,0x84,0x18,0x28,0xe8,0x04,0xae,0x98,0xa4,0x17,0xc4,0x35,0x75,0xf5,0x37,0xf5,0x27,0x3e,0x7e,0x32,0xa4,0xcb,0xd4,0x43,0x59,0x02,0x63,0x7b,0x7c,0x9d,0xa7,0x61,0x12,0xf7,0xdc,0x12,0xe0,0x07,0xac,0x96,0xf3 +.byte 0x71,0x43,0xe5,0x30,0xe0,0x4c,0x51,0x2a,0x19,0xf5,0x79,0x59,0x5a,0xc5,0x74,0xfa,0x54,0x18,0xb4,0xb1,0xfb,0x4b,0x9b,0xf8,0xe4,0xa4,0x63,0x25,0xc3,0x84,0xeb,0x2e,0xa1,0xf8,0xf8,0x7b,0x25,0x6a,0x7d,0x14,0x38,0x06,0xeb,0xae,0x9f,0xa5,0x80,0x9a,0x8a,0xb6,0x46,0x95,0xdf,0x52,0x11,0xd4,0x30,0xcc,0x11,0x8f,0x4a,0x5e,0x56,0x26 +.byte 0x60,0x3d,0x5f,0x0b,0x04,0x94,0xcd,0xca,0x1d,0x6b,0x83,0x51,0x83,0x8d,0xf8,0x33,0x4a,0x91,0x00,0xa4,0xf5,0x44,0x5b,0xad,0xa0,0x4a,0x72,0xaf,0xe6,0x4a,0x0d,0x1e,0x9f,0x18,0x6b,0xb4,0xdf,0x85,0x61,0x2a,0x3b,0xe1,0x4c,0xaa,0xc3,0x17,0xef,0x51,0x9f,0xae,0xb5,0xca,0xaa,0x6c,0xd9,0xa1,0xf5,0xa3,0x6f,0x1c,0xca,0xb3,0x37,0xda +.byte 0x27,0xea,0xcb,0xb7,0x36,0xb2,0x11,0xda,0x9f,0x07,0x78,0xaa,0x6c,0xad,0x63,0x9b,0x49,0x6b,0xfe,0x1f,0x93,0x82,0x73,0xc9,0xc8,0xf6,0x68,0x54,0x50,0x77,0xba,0x78,0xc7,0x82,0xee,0xbd,0x97,0x66,0xb9,0x22,0x49,0x0d,0x7a,0x1f,0x0f,0x4e,0xe5,0x02,0x8b,0xa6,0x1b,0x11,0xfc,0xa6,0x37,0x2a,0x5c,0x66,0xaf,0xac,0xa5,0x9f,0xbf,0x26 +.byte 0x98,0x9b,0x25,0x44,0x48,0x09,0xe6,0x76,0xb9,0x08,0xf1,0x37,0xcf,0x86,0xc9,0xdf,0xa8,0xf3,0x88,0x2f,0xc1,0x33,0x15,0x95,0x59,0xf7,0x9b,0xf2,0x48,0x76,0xcb,0xd0,0x31,0xe4,0x27,0x74,0x2d,0x6e,0xd2,0xc3,0x29,0xea,0xef,0xff,0x4e,0x3d,0xda,0x3e,0xef,0x94,0x94,0x40,0xcd,0x93,0xcf,0xb8,0x56,0x29,0xf8,0x20,0x20,0xa3,0x66,0x83 +.byte 0xba,0xc8,0x4f,0xe6,0x22,0x96,0xb5,0xb2,0x44,0x75,0x55,0x98,0xed,0x11,0xd0,0x58,0x50,0x26,0xf1,0x4a,0xf6,0x80,0x5c,0x17,0x92,0xba,0xc2,0xd6,0x68,0xd4,0x7a,0x4f,0xdf,0x16,0x97,0xbd,0xad,0xd7,0x1b,0x0c,0xe5,0x23,0xa9,0xaa,0xf4,0x1c,0x8d,0xec,0xbf,0xf0,0xb5,0xaa,0x49,0xfd,0xf1,0x31,0x9b,0xf9,0xe9,0x21,0xa1,0x20,0xab,0xbe +.byte 0x56,0x8c,0xf2,0x85,0xdc,0x1f,0xea,0x25,0xce,0xf5,0x6c,0x18,0x7d,0xc4,0x1a,0x01,0x08,0x01,0xed,0x02,0xa8,0xac,0x7f,0x74,0x2c,0xd7,0x28,0x25,0x6e,0x68,0x19,0x38,0x8d,0x20,0x51,0x8f,0x38,0x8b,0x03,0x36,0xae,0x50,0x35,0x28,0x65,0x7e,0x15,0x2a,0x80,0x2c,0xae,0xcd,0xb3,0xb6,0x91,0xf1,0x8c,0xf2,0x8c,0xc5,0xce,0x3e,0x3a,0x97 +.byte 0x5a,0xff,0xe1,0x37,0x13,0xf7,0x6b,0x07,0xb2,0xaa,0xaa,0x57,0x18,0xb7,0xb2,0x19,0x52,0xbf,0x59,0x0b,0x6f,0xba,0x56,0x54,0x14,0xac,0x21,0xfd,0x7d,0x03,0x4b,0x0b,0x39,0x54,0xba,0xf9,0xba,0x73,0xcd,0x67,0x13,0x30,0xca,0x19,0x80,0x4f,0x18,0xb4,0x75,0x2a,0xec,0x78,0xa7,0xd0,0x5c,0x53,0xe2,0x43,0x2c,0x08,0x5f,0x5c,0xe6,0x60 +.byte 0xde,0x04,0xf6,0x75,0xca,0x35,0x3b,0xf6,0x68,0x53,0x60,0xc0,0xed,0xb0,0x15,0xa1,0xa4,0x89,0x23,0x34,0x49,0x35,0xd2,0x78,0x4b,0x8f,0x7c,0x8d,0x59,0x22,0x9f,0xad,0x72,0x47,0x5b,0xde,0xf2,0x09,0x08,0xa0,0x8d,0x5f,0x4d,0xc3,0xd1,0x83,0x17,0xbc,0x39,0x8e,0xa5,0x53,0xaa,0xe3,0x31,0x03,0x93,0x14,0xb4,0x57,0xf0,0xdf,0x54,0x1d +.byte 0x79,0x4d,0x21,0x1a,0x8f,0x3f,0x6e,0x07,0x41,0xcc,0x2d,0x94,0x55,0x4e,0x50,0xfd,0xac,0xe3,0xef,0xa7,0x50,0x3b,0x3c,0xda,0x32,0x25,0xee,0xd9,0x01,0x37,0x8e,0xb3,0x23,0xc5,0x5e,0x12,0x88,0x6d,0xd5,0x41,0xfd,0x3f,0xfa,0x75,0xb8,0xcb,0x82,0x10,0x81,0x38,0x1b,0x10,0x2d,0x2c,0x6b,0x62,0xa1,0x7c,0xd1,0x75,0xd8,0x8c,0x0c,0x2f +.byte 0xe8,0x97,0xff,0x18,0xb3,0x12,0xa2,0xef,0x6c,0xc5,0x79,0x9f,0x64,0xf3,0xc7,0xdc,0xdb,0x54,0xa4,0x25,0xc7,0x30,0xfb,0x6c,0x5a,0x50,0x24,0xf9,0xb6,0xc9,0xe7,0xda,0x78,0xcc,0x1b,0x5e,0xf3,0xe7,0x32,0xd8,0x36,0x47,0x10,0xe5,0x2c,0xeb,0xea,0xf7,0x25,0x30,0x93,0x64,0x88,0xc8,0x59,0xf8,0x5c,0x02,0x43,0x4c,0x23,0x8e,0x1c,0x42 +.byte 0xe4,0x36,0x39,0xbf,0xba,0x8b,0xe3,0x53,0x01,0x32,0x0d,0x89,0xc2,0xea,0x35,0x94,0xf1,0x0d,0x29,0x45,0x08,0x07,0x15,0xcb,0xd7,0x3e,0x4d,0x9f,0x04,0xd8,0x18,0x8a,0x56,0xa3,0xb1,0x1c,0x46,0x19,0x8b,0xd0,0x51,0x30,0xf3,0xca,0x52,0x2a,0x16,0xc4,0x90,0xc1,0x00,0x50,0x87,0x8b,0x4c,0x71,0x61,0x48,0x69,0xb2,0xf1,0x33,0xaa,0x79 +.byte 0x81,0x8b,0x36,0x33,0x19,0x41,0x6b,0xc1,0x91,0x40,0xf2,0xcc,0x1d,0x83,0x09,0xab,0xcc,0x6f,0x6c,0x54,0x91,0x62,0x80,0xac,0xe6,0x1f,0xcd,0x5d,0x05,0x2b,0xe5,0xac,0xbc,0xd6,0x1b,0x8b,0xef,0x95,0xa0,0xf3,0xfe,0x8e,0x4d,0x32,0x77,0xe8,0x02,0x8f,0x44,0xad,0xc4,0x40,0xc3,0x99,0x68,0x81,0x47,0x15,0xbd,0x3b,0x8f,0x0b,0x9b,0x3a +.byte 0xb3,0x9d,0x8f,0x3d,0x86,0xd1,0x89,0x5f,0x67,0x19,0x33,0x2d,0x18,0x64,0x0e,0x3a,0x13,0xa4,0xe9,0xb4,0xc9,0x90,0x09,0x6a,0xcb,0x5d,0x0d,0x83,0x13,0x04,0x29,0xe5,0xa5,0xf4,0x00,0x56,0xf4,0x80,0x96,0x33,0x93,0xe4,0x9b,0xc4,0x6e,0x38,0xbf,0x0a,0xe0,0xee,0x8c,0x89,0x5d,0x60,0x36,0x7e,0x69,0xc2,0xc7,0x28,0x6f,0x2b,0x97,0xfb +.byte 0xb3,0x5b,0x82,0xe8,0x9a,0x36,0x44,0xd7,0x1f,0x9b,0x1b,0xd0,0x14,0xe4,0xd4,0x0d,0x35,0xcd,0xee,0x88,0x50,0x37,0x5c,0x88,0x09,0xa5,0x16,0x4d,0xe1,0xbc,0xe8,0x79,0x8f,0xa9,0x18,0xb8,0x43,0xb4,0xd7,0x32,0xcd,0x26,0xdd,0x78,0x29,0x59,0xad,0x29,0xe3,0xe0,0xe7,0xcf,0x16,0x03,0xc6,0x8a,0xb6,0xa2,0x09,0x9a,0x6e,0x90,0x7b,0x0c +.byte 0x9d,0x20,0xb6,0xc4,0x28,0x3f,0x44,0x06,0xa9,0x45,0x72,0x27,0xa7,0x56,0x3f,0x07,0xff,0x13,0xd9,0x80,0xda,0xbd,0x25,0xad,0xd3,0x74,0x2c,0xd8,0xd2,0x93,0xa5,0xda,0xbc,0x5f,0xa5,0xde,0xb7,0x3a,0xf0,0xd2,0x17,0xb1,0xc3,0x70,0x2a,0x85,0xde,0xf0,0x97,0x7b,0x96,0xb2,0x0e,0x45,0x7f,0x63,0xd4,0x94,0xd8,0x78,0x05,0xcf,0xea,0xb3 +.byte 0xfb,0x7a,0x79,0xb5,0x91,0x53,0xb8,0x8c,0xa2,0x03,0xf4,0xc3,0xed,0xf0,0xab,0x33,0x5c,0x6e,0xcd,0xbd,0x73,0xe3,0xe9,0xd0,0x83,0x2a,0x2a,0x68,0x32,0xf1,0x69,0x4f,0xd0,0x8b,0xe8,0xa1,0x7d,0x5b,0x0f,0x69,0xc2,0x33,0xbf,0xc1,0x54,0x29,0x47,0xed,0x9f,0xdb,0x35,0x0a,0x3d,0x2b,0x9d,0x8b,0x91,0xb6,0xe0,0xbc,0x53,0xba,0xb7,0xcd +.byte 0x2c,0xd9,0xeb,0x81,0xa0,0x2e,0x14,0x6e,0xdc,0xe1,0x90,0x36,0x14,0x9d,0xa8,0x8b,0x6b,0x1b,0xac,0x4c,0x09,0x8b,0x1a,0x87,0xf4,0x66,0xf6,0xfb,0x62,0x92,0x13,0xcf,0xb2,0x96,0xf0,0xc9,0x8b,0x12,0x99,0xf1,0x16,0xae,0x5c,0x27,0x24,0xa8,0xfd,0xb3,0x4c,0xc2,0xe6,0x3f,0xd2,0xc6,0x0c,0xf2,0x65,0x4e,0xdf,0xf1,0x06,0xb8,0x99,0xc4 +.byte 0x3a,0x35,0xba,0xed,0x18,0x3e,0xfa,0x03,0x51,0x8d,0x45,0x68,0x12,0x7b,0xb6,0xac,0x63,0x99,0x47,0xee,0x6f,0x8b,0xcb,0xc1,0x0a,0xf9,0x23,0xf0,0x05,0xe1,0x03,0x4a,0xb5,0xe0,0x65,0x71,0xc8,0x64,0x7e,0x0d,0x39,0xe7,0x96,0xdb,0x34,0x63,0x2e,0x1a,0x27,0x85,0x52,0x63,0x8e,0x44,0xfb,0x61,0xca,0x79,0xe5,0x91,0x99,0x83,0x2d,0xe0 +.byte 0x26,0x04,0xad,0x43,0x26,0xf2,0x7e,0x56,0xae,0x35,0x6a,0xfb,0xec,0xc6,0x27,0xe4,0x3a,0xa3,0x6b,0x63,0x72,0xba,0x98,0x03,0x9f,0x2a,0x4c,0xb1,0x33,0x22,0x9d,0x53,0xf6,0x00,0xa3,0x1e,0x32,0xcb,0xbe,0xe0,0xc2,0xf8,0x71,0xcd,0x3f,0xe3,0x4d,0x83,0xf2,0x9f,0x1c,0x91,0x35,0x97,0x52,0x95,0xba,0x24,0x04,0x04,0xca,0x32,0x6d,0xd7 +.byte 0x4b,0xd4,0x9e,0x8b,0x73,0x42,0xfb,0x9f,0xfc,0x93,0xea,0xc2,0x41,0x56,0xa9,0xe5,0xdd,0xd0,0x37,0x8a,0xe2,0x92,0x9f,0x45,0x4f,0xd8,0xef,0xe6,0x6f,0x58,0x41,0x5f,0x7b,0xe7,0x0f,0x32,0xce,0x06,0x02,0x7f,0xe2,0x37,0x87,0xb7,0x35,0x72,0x68,0x87,0xc9,0x35,0xa8,0x51,0xce,0xd8,0xde,0xc3,0x8c,0xb4,0xab,0xf4,0xa7,0x3b,0xcd,0xc8 +.byte 0x0a,0x56,0x5b,0x48,0xb1,0xa4,0x27,0xa8,0x9e,0x3e,0x04,0xbc,0xb3,0x63,0x3e,0xd5,0xf7,0xae,0xec,0x0c,0x6e,0x4a,0x73,0xb6,0xed,0x66,0xea,0xc1,0x7a,0xc4,0xaa,0x21,0x27,0x62,0xef,0x3d,0x1d,0x51,0x8b,0x63,0xe6,0xe2,0x8a,0xed,0x7a,0x4b,0x90,0xc3,0x9f,0x91,0xb4,0x8f,0x78,0x65,0x9c,0xdd,0x0a,0x7a,0x50,0x36,0x33,0x30,0x3b,0xb4 +.byte 0xdf,0x67,0xbd,0xfd,0x71,0xfc,0x40,0x49,0xaa,0x01,0xdf,0x68,0x67,0x73,0x31,0x2c,0x98,0x2f,0x8c,0x9e,0x2d,0xce,0x4a,0x71,0xbc,0x6f,0x90,0x1d,0xc0,0x37,0x07,0x30,0x0c,0xa3,0x04,0xfb,0xd1,0xd0,0x0e,0xcb,0xdc,0x94,0x06,0x7f,0x83,0xe5,0x45,0x47,0xd0,0x71,0x06,0x94,0x23,0x7c,0x03,0x80,0x46,0xa5,0x10,0x08,0xd1,0xdb,0xfb,0x9d +.byte 0xd4,0x05,0x01,0x5e,0x66,0x4d,0xf9,0x32,0x9b,0x5b,0xfe,0x7a,0x60,0x63,0x77,0x9a,0x31,0x34,0xe5,0x9a,0x82,0x2d,0x2b,0xb7,0xe0,0x04,0x8f,0x86,0xf3,0xb2,0x16,0x86,0x50,0x37,0x9d,0x80,0xe7,0x62,0xdf,0x77,0xda,0xf4,0xfc,0xb7,0x42,0x9d,0xac,0xcb,0x11,0xff,0x0c,0x6f,0x4e,0x16,0x0c,0x59,0x04,0x05,0x8f,0x88,0x64,0x37,0xe6,0x6c +.byte 0xee,0x64,0x58,0x79,0x60,0xd4,0x2f,0xb7,0x90,0x59,0xfb,0x82,0x3b,0x20,0x2e,0x2b,0xba,0x15,0xfb,0xf7,0x5b,0x1d,0x81,0x8a,0x8a,0x8f,0xe3,0x39,0x92,0x34,0xfc,0x3a,0x67,0xce,0xb6,0xa0,0x9b,0x56,0x78,0x96,0x4d,0x32,0xbf,0x9c,0x83,0x9e,0x19,0x66,0x20,0x42,0xb2,0x78,0x62,0x42,0xdd,0xdf,0x98,0xab,0x0c,0x3d,0x41,0xb5,0x74,0xc1 +.byte 0x2d,0xf0,0x02,0x58,0x6e,0xb3,0x4d,0x7b,0x41,0x1c,0xf1,0x09,0xc1,0xbb,0x84,0x67,0xf8,0x24,0x77,0x32,0xcd,0x7a,0x63,0x87,0x0d,0xf2,0xc5,0xaf,0xe4,0xb5,0xc6,0x3b,0xad,0x66,0x5e,0xae,0x90,0xc2,0x24,0x27,0x7a,0x0b,0xed,0x1b,0x86,0x5d,0x02,0x19,0x85,0x78,0xc8,0xb1,0xce,0xe7,0xc9,0x5c,0xce,0x43,0x58,0xac,0x1c,0x4e,0xcd,0xb8 +.byte 0x3a,0xb8,0x7a,0xf3,0x79,0x4b,0x97,0xcf,0xbe,0x88,0x24,0xd0,0x9a,0x5a,0x55,0x43,0x0c,0x48,0xa2,0x7f,0xaf,0x4b,0xd8,0x16,0x02,0xfb,0xe6,0x0c,0x6b,0x85,0xb4,0xb8,0x5e,0x40,0x60,0x5d,0x93,0x51,0xc6,0x32,0xb9,0x4a,0x23,0x96,0x71,0xeb,0xe8,0xe8,0x01,0x1e,0x85,0xb0,0x47,0xde,0x86,0x15,0x52,0x3a,0xb2,0xd3,0x86,0x4b,0x78,0x09 +.byte 0x9c,0x6e,0x9d,0xd9,0xef,0xe8,0x64,0x2d,0x2a,0xec,0x21,0x5a,0x60,0xa5,0xe4,0x26,0xbb,0x79,0x0c,0xdb,0x48,0xd6,0x4b,0x5c,0x5b,0xe3,0x34,0xc9,0x96,0xf0,0xcb,0x68,0x8a,0x2d,0xee,0xa3,0x37,0x34,0x5f,0x3e,0x65,0x40,0xce,0xe1,0xc8,0x2e,0x11,0xca,0x42,0x51,0x53,0x72,0x3d,0xa9,0x68,0x54,0xb4,0xd8,0xd7,0x72,0x84,0x8d,0xcd,0x6d +.byte 0x1f,0x0e,0x0c,0x0f,0x32,0x3a,0x7d,0xdd,0xc1,0xd3,0xe7,0x2d,0x1f,0x52,0x8b,0x73,0x86,0x70,0x2a,0xcb,0x71,0x37,0xa1,0xab,0xe3,0x94,0x5a,0xd7,0x9d,0x68,0xc1,0x6e,0x5d,0x72,0x25,0x81,0xe8,0x45,0xad,0x6c,0xf8,0xdb,0x9b,0x70,0x31,0xb9,0xf0,0x4f,0x23,0xd7,0x03,0xc8,0x87,0x43,0x51,0x7a,0x55,0xfe,0x6f,0x2d,0x40,0xbc,0xfe,0xdf +.byte 0xe6,0x21,0x4b,0x4d,0xc6,0x02,0x48,0xe7,0x7a,0x2a,0xef,0x91,0xdf,0xbc,0x98,0x91,0x6f,0x59,0xc4,0x47,0x77,0x2e,0x45,0x45,0x23,0x47,0x5d,0xf8,0x50,0x41,0x84,0x75,0x8a,0xe7,0x4d,0xfb,0xeb,0x58,0x00,0xcf,0x42,0xca,0x02,0x05,0xc7,0xfa,0x11,0xfb,0x6e,0x90,0x7d,0x53,0xa0,0x19,0x23,0x24,0x8f,0x89,0x17,0x40,0xbe,0x11,0xfb,0xd9 +.byte 0x04,0xf8,0x84,0xeb,0x90,0x7c,0x84,0x45,0x9c,0x53,0x45,0x5e,0x45,0x51,0x55,0xfc,0xf1,0x6b,0x02,0x24,0xfd,0x95,0x4a,0x40,0x80,0xdc,0xa6,0x94,0x15,0x2c,0x1d,0x85,0xa0,0x07,0x8d,0xf8,0xf2,0x95,0x0c,0xa0,0x4e,0x5a,0x5b,0x29,0x09,0xcc,0xf3,0x4e,0x8e,0xea,0xe8,0x26,0xb8,0xbe,0xb2,0x6f,0x76,0x6f,0xa4,0xe5,0x6a,0x50,0xcf,0xc8 +.byte 0x7d,0xb6,0x1e,0x9d,0x90,0x6b,0xde,0xe2,0x55,0x49,0x97,0x00,0xa5,0xc5,0x1f,0x1c,0x41,0x66,0xe7,0x6b,0x20,0xb2,0x1e,0xc7,0xb3,0xd4,0xa9,0x75,0xbb,0x83,0x24,0xd0,0xdf,0xbd,0xba,0x2c,0x2f,0xa4,0x03,0x1d,0x17,0xc5,0x74,0xc2,0x6a,0x20,0x71,0x18,0xd1,0xc5,0xb0,0x78,0xfe,0xda,0x55,0xd2,0x43,0x2a,0xd8,0x88,0x74,0x75,0x86,0x07 +.byte 0xe9,0x8b,0x0d,0x0f,0xe5,0x8d,0xe8,0x3d,0xf4,0x93,0xde,0x4c,0x97,0x98,0xe2,0x9b,0x22,0xde,0x13,0x18,0x8b,0xc5,0xe1,0x6f,0x6d,0xb4,0x19,0x46,0xff,0xbd,0xa6,0x2e,0xe6,0x48,0xcd,0x66,0x22,0x7d,0xf4,0x0e,0xeb,0x74,0x25,0x5c,0x90,0x0e,0x26,0xce,0x17,0xe9,0xdb,0x30,0xb9,0x25,0x99,0x96,0x46,0x3a,0x78,0xa3,0x76,0x2d,0x9e,0x42 +.byte 0x06,0x8a,0x1e,0x62,0x46,0xa4,0xd0,0x1d,0xe2,0x4c,0x3c,0xb4,0x4c,0xc0,0xd1,0xf7,0x05,0x5b,0xe4,0xd4,0x71,0x73,0x31,0xfc,0x98,0x2a,0x55,0xb0,0x78,0x92,0x59,0x8b,0x25,0x97,0x15,0xf2,0xf9,0x57,0x8b,0x7c,0xd4,0xc4,0x47,0x2f,0x10,0x3b,0x76,0xde,0x5f,0xb1,0xdf,0xdc,0xb0,0x15,0xd5,0x4a,0xd2,0x54,0xad,0x5e,0x32,0xf4,0x5a,0x1a +.byte 0x8d,0xe8,0xa0,0x4a,0x4e,0x04,0xdc,0xdd,0xd2,0x57,0xe5,0x24,0x4b,0x93,0x51,0xef,0xd4,0xba,0x3f,0x77,0xfc,0x0a,0x5c,0x7d,0x6e,0xa7,0x86,0xe5,0x88,0xd1,0xac,0x74,0x46,0x9a,0x39,0xb6,0x98,0x3d,0xae,0x89,0x4e,0xea,0x8d,0xdc,0xc7,0xb9,0x0c,0xd7,0xa6,0x06,0x4d,0x28,0x2b,0x51,0x2b,0xdb,0x30,0x4a,0x91,0x1c,0x40,0x89,0xe4,0xba +.byte 0x72,0xd5,0xed,0x16,0x66,0xb8,0xef,0x81,0xd9,0x51,0xf8,0x1b,0xff,0xab,0x8b,0x52,0xb8,0xf3,0x11,0xb3,0xe5,0x04,0x5a,0xb0,0x60,0xa3,0x35,0x12,0x6a,0xa0,0x75,0x5c,0x21,0xa9,0x5a,0xe8,0xd3,0xd7,0x8a,0x1f,0xe0,0x9b,0xb7,0x1e,0x7d,0xbe,0x81,0xaa,0x56,0x5a,0xd8,0x2d,0x7e,0x0c,0x60,0xb2,0x68,0x26,0x6d,0xaa,0x8b,0xcc,0x11,0x40 +.byte 0x25,0xea,0xc9,0x94,0xfb,0x3b,0x9b,0xa7,0x3a,0xde,0xd9,0xfe,0x6b,0x4b,0xfc,0x3f,0xbf,0xdd,0x51,0x9b,0xa1,0xca,0x2f,0xed,0x33,0xd8,0x3d,0x92,0xa4,0x1d,0xee,0xb2,0x47,0xd0,0x72,0x6a,0x96,0x33,0x0f,0xdd,0x0a,0xd9,0xbd,0x86,0xdb,0x25,0x53,0x0e,0x3c,0x31,0xad,0x05,0xb9,0x24,0x13,0x00,0xdf,0xc2,0x7c,0x3d,0x03,0x9b,0xf6,0x6d +.byte 0x93,0xd9,0xdf,0x73,0xf8,0x1c,0x98,0xe2,0x77,0x46,0x46,0xdc,0x07,0xe6,0xbb,0xc1,0xa7,0xb6,0xbe,0x21,0x07,0xae,0xdb,0xca,0x69,0x2d,0x8a,0x2b,0x59,0x27,0xe0,0x7c,0xf0,0xf1,0x34,0x69,0x97,0x44,0xba,0xbb,0x48,0x9f,0xd9,0xd8,0x16,0x1a,0xef,0x11,0x68,0xb6,0xaf,0x3a,0x10,0xc6,0x7c,0xd1,0x12,0xc7,0x89,0x47,0xe3,0xd1,0x24,0xc6 +.byte 0x44,0x9f,0x7e,0x6a,0x66,0x43,0x48,0xd6,0x9f,0x7b,0xf0,0x1f,0xd2,0x5f,0x2b,0xa7,0x13,0x6a,0x7c,0x70,0x08,0x38,0xb0,0x00,0xbc,0x7c,0xd3,0x01,0x9b,0xf6,0x29,0xd3,0x9c,0xa4,0x11,0x90,0xe4,0x9f,0x04,0xd6,0x21,0xec,0xfd,0xcb,0xb8,0xe6,0xb6,0x49,0x2b,0xfa,0x4b,0x90,0x9e,0xc6,0x0c,0x87,0xff,0x5e,0x2e,0xcc,0xf8,0x09,0x70,0x52 +.byte 0x42,0xec,0x88,0xac,0x1e,0x76,0x2b,0xeb,0xfc,0xb3,0x65,0x81,0x34,0xb1,0x06,0x90,0xde,0xb2,0xc4,0xd3,0xfd,0xd4,0x9c,0x78,0x1a,0x5c,0x8f,0x65,0x0a,0xbd,0x88,0xe5,0x95,0x06,0xb5,0x94,0xe5,0xbf,0x90,0x31,0xbb,0xcb,0xce,0x19,0x51,0x25,0x4a,0x47,0x35,0x26,0x93,0xdb,0xe2,0x93,0x36,0x47,0x7d,0xdd,0x4e,0xd5,0xeb,0xdd,0x63,0x1c +.byte 0xbc,0x2d,0x75,0xdb,0xd4,0xfa,0x60,0x4b,0x51,0x45,0x32,0x0f,0x01,0xf9,0x73,0x9b,0xd8,0xbc,0xee,0xaa,0x7d,0x2e,0xfe,0xbf,0x9d,0x45,0xae,0xe2,0x01,0xe3,0xbf,0x58,0xdc,0xc0,0xb8,0xe8,0x44,0x16,0x3b,0xd8,0xaa,0x3b,0x13,0xca,0xfb,0x5f,0x8d,0xb3,0x2a,0x83,0x66,0x49,0xae,0x54,0x02,0x4e,0xd8,0x68,0xee,0x21,0x1a,0xbb,0xf4,0xf7 +.byte 0xdf,0xf1,0x51,0x7b,0x62,0xa8,0xb2,0xdc,0x4b,0xd4,0x04,0xd2,0x05,0x49,0xdd,0xa4,0x75,0xe6,0x64,0x82,0xe7,0x25,0x55,0x60,0x2c,0x9f,0x8a,0x7a,0x11,0xe9,0xf2,0x72,0xfe,0x89,0xe1,0xaf,0xca,0x0c,0xb9,0xf5,0xcc,0xcf,0x07,0xef,0x8f,0xbb,0xef,0x53,0x1e,0xe2,0xfb,0x98,0xe8,0x05,0xab,0x4e,0x7e,0x38,0x56,0x24,0xd5,0x74,0x1c,0x95 +.byte 0x1a,0x0e,0x62,0x92,0x80,0x16,0x45,0x78,0x2f,0xb1,0xe1,0x83,0x24,0x2b,0x16,0x5c,0x05,0x52,0x17,0xe9,0xe8,0x9e,0x5d,0x63,0x8f,0x77,0xc4,0x89,0x22,0x76,0x43,0x31,0xfd,0x09,0xc0,0x51,0x70,0x57,0x2d,0x51,0x91,0xe5,0x61,0x3f,0x77,0xff,0x17,0xfc,0xa6,0x19,0x9d,0x82,0x46,0x11,0x0c,0x77,0x19,0x2a,0xf5,0x19,0xb4,0x3d,0xa6,0xd4 +.byte 0x8b,0x07,0x4b,0xc6,0xa3,0x1e,0x8c,0xf5,0xe8,0x2d,0xe7,0xcc,0xa1,0x38,0x57,0x66,0x76,0x1d,0xdd,0xe3,0xb9,0x0a,0x1e,0x2c,0xad,0x09,0x07,0x26,0xff,0x7a,0xc0,0xb0,0x51,0x71,0x44,0x6d,0x2c,0x39,0x3d,0xa6,0x14,0x4e,0x74,0x2c,0x54,0x3d,0xfa,0xdc,0x2e,0x0c,0xc4,0x88,0x32,0xda,0xb0,0x9d,0xf4,0x2c,0x0a,0x1b,0xb7,0xb4,0x78,0x6f +.byte 0x1b,0x6a,0x21,0x03,0x4e,0xe0,0x87,0xa0,0x1c,0xd8,0xe6,0x0c,0x97,0x47,0xde,0x98,0x81,0x3d,0x39,0x93,0x3d,0xcb,0x29,0xa3,0x93,0x8d,0x27,0x5d,0x29,0xb5,0x85,0xc4,0x32,0xd8,0xdc,0x19,0xb1,0x63,0xdc,0x76,0x32,0xc3,0x52,0x9a,0xfd,0x3d,0xff,0xf9,0x94,0x55,0x72,0xbb,0x4d,0xe2,0x42,0xd2,0xf7,0xb2,0xac,0xac,0x5d,0x50,0x95,0xda +.byte 0x3a,0x87,0xb6,0x0f,0x27,0x72,0x34,0xe7,0xe8,0x9f,0xc7,0xba,0xca,0x8d,0xf3,0xb9,0xa1,0xdd,0xd7,0xa5,0x70,0x3b,0xcc,0x72,0x0e,0x9d,0x85,0x75,0x01,0x11,0xe1,0xc2,0xca,0xcb,0x40,0x3a,0x31,0xf2,0x5d,0x0c,0x63,0xc8,0xbf,0x38,0xde,0x09,0x3b,0x32,0xaa,0x6c,0x07,0xd2,0x2b,0x3b,0x94,0x37,0xd0,0xd9,0xe0,0x4c,0x25,0xa3,0x22,0x64 +.byte 0x05,0xcc,0x69,0x9e,0x73,0xd4,0x46,0x2c,0x73,0x23,0xd0,0x6f,0x09,0xff,0x8b,0xef,0x7a,0x08,0x3e,0xa2,0xa7,0x9d,0xf5,0xc9,0x40,0xd1,0x06,0xd6,0xe3,0x89,0xa5,0xcc,0x9f,0x40,0x67,0x80,0x11,0xec,0x5d,0x23,0x19,0xf3,0x66,0xaf,0x06,0xcc,0xe4,0xb6,0x5e,0x20,0xf7,0x19,0xce,0x1a,0xb6,0x86,0x0d,0x39,0x1d,0xc8,0x0a,0xdb,0x50,0x52 +.byte 0x7e,0x3b,0x96,0x9f,0x05,0xdd,0xd8,0xdf,0x40,0xdf,0xe4,0x66,0x14,0x4d,0x4e,0xb3,0x9f,0x86,0x7b,0xc2,0x99,0xc3,0x8f,0xb9,0xe7,0xc3,0x50,0xa4,0xab,0xb8,0x8e,0xc5,0x28,0xce,0x8b,0x51,0xcb,0xad,0xd8,0x1a,0x23,0x7d,0x12,0xc2,0xaf,0x1a,0x93,0x4c,0x57,0xe9,0x59,0x6a,0x03,0x65,0x81,0x07,0x40,0x84,0x92,0x9d,0x22,0x8a,0x3d,0x27 +.byte 0x39,0x05,0xdd,0xf7,0x20,0xad,0xc2,0x03,0x27,0x87,0x8e,0xc1,0x23,0xad,0xe5,0x59,0x16,0xe7,0xde,0xe4,0x44,0x6b,0x06,0xb5,0x1d,0xaf,0xda,0x08,0x4a,0xfa,0x75,0x1a,0x0b,0x35,0xe8,0x6e,0x29,0xd3,0x79,0x19,0x80,0xb9,0x5f,0x36,0xec,0x43,0x25,0x3c,0xbc,0xcf,0x70,0x0c,0xc7,0x2c,0xbc,0x2e,0x72,0x40,0x73,0x98,0x11,0xc9,0x72,0x9f +.byte 0xd9,0x95,0x9f,0x8d,0x4a,0x52,0xbb,0x89,0x30,0x5b,0xa2,0x7e,0x0c,0x21,0x11,0xda,0x4e,0xa1,0x7c,0xc1,0x0f,0x95,0x1b,0x5b,0x2e,0xbd,0xae,0x8a,0x56,0x82,0x8f,0x84,0x43,0xdf,0x24,0xac,0x99,0xaa,0x8a,0xaf,0x82,0x33,0xf7,0x0a,0xbf,0x5e,0xfd,0xf2,0x91,0xf0,0xe1,0x5d,0x4e,0xa5,0x16,0x6e,0xb4,0x39,0x8b,0x99,0x32,0x6b,0xc8,0x16 +.byte 0xc1,0x84,0x10,0xc2,0x74,0x54,0xfc,0x02,0x71,0x44,0xfc,0x52,0xfa,0xc2,0x3c,0x8d,0xf7,0x8b,0x1e,0xcc,0x5e,0x43,0x66,0x29,0x29,0x93,0xe7,0xf6,0x9f,0xa8,0xa3,0x35,0xc9,0xde,0xb0,0xbe,0x4d,0xdf,0x8c,0x61,0x5a,0x6b,0x16,0x88,0x33,0x65,0x47,0x98,0xd2,0xf8,0x71,0x09,0x9f,0x00,0xb6,0x9e,0x21,0x37,0x2a,0x0b,0xb4,0x74,0x6b,0x0e +.byte 0x6e,0x4d,0x14,0x45,0x6c,0x1b,0xa8,0x4c,0xa7,0xc6,0xc3,0x36,0x6e,0x9e,0x63,0x5a,0x36,0x76,0x04,0x06,0x7f,0xdd,0x74,0x24,0x19,0xd8,0xb7,0xbc,0x6c,0x52,0x82,0x67,0x6b,0xd5,0xcb,0x81,0xdf,0xd7,0xe4,0xdd,0x14,0x33,0x71,0xcf,0x6b,0x7f,0xaf,0x66,0x27,0x8a,0x70,0xb8,0x45,0xae,0x8c,0x1a,0x65,0xd3,0x16,0x5c,0x05,0x65,0xd0,0xfb +.byte 0x07,0xe3,0x98,0xa9,0x94,0x27,0x6c,0xac,0xfc,0xee,0x1b,0x35,0x43,0xd6,0x3b,0x41,0x1c,0x86,0xc0,0x4f,0xf3,0x63,0xf4,0xba,0x4d,0xdf,0x6a,0xda,0xcf,0xb5,0x9f,0x69,0x3f,0x3d,0x0c,0x80,0x79,0x02,0x34,0x4a,0x9a,0xfd,0xb6,0xea,0x0b,0x61,0x32,0x67,0x2d,0x6a,0x6b,0xcb,0xcf,0xa6,0xee,0x6a,0x93,0x11,0x00,0xb8,0x6e,0x27,0x88,0x62 +.byte 0xf7,0x4c,0x7b,0xe1,0x13,0xe1,0x47,0xaf,0x96,0x24,0x3b,0x46,0x8c,0xf4,0xbe,0x13,0xed,0x65,0xe1,0xf2,0x36,0x2d,0xa4,0x6d,0x5e,0xa6,0x93,0xfb,0x64,0x0e,0xbd,0x50,0xdc,0x29,0x4f,0x90,0x8e,0xe1,0x7f,0x5e,0x47,0x08,0x9b,0x1c,0xb7,0xce,0x06,0x80,0x52,0xc0,0xb5,0x82,0x77,0x49,0x3c,0xe0,0x70,0x1f,0x84,0x75,0x9e,0x19,0xb2,0x83 +.byte 0xda,0x40,0xf8,0xd7,0x27,0x1e,0xbc,0x39,0xb5,0x1d,0x25,0x75,0x63,0x7d,0x85,0x2f,0x09,0x07,0xe9,0x73,0x8e,0x2b,0xb8,0x9a,0xbe,0xd6,0x90,0x91,0x6e,0xdb,0x7c,0x9d,0x9b,0x43,0x1d,0x21,0x88,0x76,0xb0,0xaa,0x7b,0x68,0xe4,0xa7,0x92,0x64,0xe4,0x1f,0xff,0x53,0x1d,0xf7,0xc0,0x44,0x5c,0x0a,0x1e,0xcd,0xa7,0x6e,0x41,0x1c,0x8c,0x7d +.byte 0x66,0xa7,0xf6,0xfc,0xa9,0x0d,0x3f,0x9c,0xfb,0x15,0x87,0x14,0x20,0x43,0x1b,0x05,0xf5,0xea,0x5c,0x07,0x61,0xb3,0x0e,0x7c,0x52,0x57,0x1c,0x09,0x33,0xb4,0xd8,0x3d,0x9d,0x17,0xee,0x86,0x25,0xdc,0x6b,0xcd,0x58,0xb7,0x18,0xbd,0x85,0x39,0x0b,0xb9,0xb8,0x35,0x3a,0x86,0xbb,0x88,0xb5,0x5e,0x4b,0x0a,0x7e,0x9c,0x02,0xb5,0x45,0xe5 +.byte 0xc7,0x38,0x56,0x1e,0xe4,0xe7,0xf7,0x88,0xac,0x75,0x9a,0x97,0xa8,0x15,0xb6,0x2d,0xcf,0x2a,0x59,0x65,0x0e,0x00,0x9f,0x8e,0xa9,0x94,0x23,0x1c,0x40,0xe4,0xb9,0x6b,0xcf,0xf0,0x53,0x7f,0x98,0xd1,0xa7,0x72,0xd7,0xe3,0x22,0xfd,0x5f,0x3d,0x3f,0xd6,0x21,0xb4,0x84,0x0c,0x1b,0x1d,0x00,0x2d,0x8f,0x72,0x22,0x2d,0x2c,0x8c,0x54,0x46 +.byte 0xe5,0x53,0xca,0x66,0x67,0x5e,0xb3,0x62,0x6f,0xaf,0x33,0x81,0xc1,0xf6,0x77,0x92,0x3e,0xdb,0x74,0x68,0x93,0xca,0x38,0xf8,0x18,0x50,0xef,0xe4,0xc9,0x45,0x40,0xc9,0xf0,0xc5,0x7a,0x4b,0xf2,0xd8,0xca,0x72,0x62,0x5f,0x67,0x10,0x10,0xcc,0xff,0x1a,0xc7,0x9c,0x3a,0x7f,0xca,0x11,0x67,0x3e,0xca,0xa6,0x9c,0x48,0x15,0xaf,0x68,0xb7 +.byte 0x2b,0xa7,0xa2,0x68,0x7b,0x40,0xb2,0xe3,0x27,0x18,0x7e,0x94,0x4c,0xca,0x0e,0x5b,0x3a,0x30,0xcb,0xc3,0x72,0x31,0x6b,0xe6,0x3e,0xa7,0x09,0x3e,0xf2,0x53,0xda,0x7d,0x6f,0x55,0x08,0xd2,0x26,0xc3,0x07,0x52,0x38,0x90,0x04,0xc6,0x3c,0xb6,0xb5,0x2a,0x7b,0x38,0x07,0x9e,0xb4,0xa5,0x48,0x36,0xf5,0x5e,0xac,0xa8,0x97,0x4e,0x37,0xc2 +.byte 0xee,0x12,0x88,0x28,0xd0,0x7d,0xd1,0xae,0xc0,0xc7,0x84,0x69,0x25,0x79,0x9a,0x8a,0x16,0x49,0x50,0x72,0x69,0x1a,0x02,0xc9,0xfe,0xd5,0x2c,0x40,0xc6,0xc8,0x8b,0x7d,0xe3,0xab,0x89,0xe3,0x78,0xf1,0xe9,0xbd,0x3c,0xbd,0x02,0x96,0xfe,0x0c,0x5c,0xc4,0x9e,0x89,0x3a,0x4b,0xe9,0xcd,0x41,0x1c,0x59,0x71,0x52,0xb0,0xc9,0x36,0xf1,0x80 +.byte 0xab,0x5e,0xbc,0xf1,0x20,0x99,0xc0,0xab,0x0c,0x59,0x43,0xc2,0xcd,0x09,0xa6,0x30,0x91,0xfa,0x12,0x23,0xbe,0x18,0x24,0xa6,0xbf,0x55,0x4c,0xe8,0x22,0xff,0x01,0xbd,0xde,0x2c,0x72,0x3c,0x0a,0x36,0xd5,0x7e,0xed,0x6a,0xe3,0x63,0x14,0x60,0xa3,0x0a,0x6f,0x04,0x90,0x64,0xc1,0xd1,0x78,0x54,0xae,0x19,0x74,0xe2,0xea,0xec,0x86,0x22 +.byte 0xc7,0xdb,0xf6,0x48,0x0e,0x75,0x43,0x04,0xf7,0x62,0xe6,0xa9,0x46,0x65,0xcc,0xa5,0xa4,0x1a,0xb2,0x94,0x7b,0x7a,0x8c,0x9a,0x80,0x62,0x32,0x17,0x80,0xc3,0xc6,0x54,0x0e,0x4e,0xe3,0x46,0x74,0xa8,0xae,0xcd,0xd0,0xc1,0x19,0x84,0x61,0xb4,0x1d,0x18,0x4d,0x80,0xf1,0x70,0x40,0xbe,0xa2,0xa3,0x38,0xcc,0x21,0x1c,0x2f,0x72,0x85,0x72 +.byte 0x0a,0xa1,0x0d,0xa3,0xdc,0xa2,0xf4,0x64,0x84,0x3c,0x43,0x6d,0xfb,0x45,0x11,0xf9,0x40,0xdc,0x25,0x85,0x80,0x41,0x84,0xa7,0x06,0x2e,0x79,0xbf,0x0c,0xa7,0x8f,0x17,0xea,0xa2,0xc4,0x6f,0xd8,0xc6,0x9e,0xab,0xdc,0x45,0x6f,0xaa,0xda,0xe9,0xe6,0x84,0xf0,0x5f,0x8a,0x90,0x99,0x33,0x9b,0xcf,0x03,0xe6,0xce,0x19,0x0c,0xad,0x2f,0xad +.byte 0x81,0xb8,0x17,0xff,0x6b,0xff,0xc8,0x14,0xa6,0xf4,0x37,0x55,0xdc,0xbb,0x09,0x3c,0x3c,0xe7,0x29,0x95,0x23,0x5c,0x58,0x92,0x2e,0x95,0xe8,0x3b,0x8b,0x81,0x2d,0xfd,0x58,0x8a,0x1f,0xdf,0xf1,0x54,0xa3,0xd0,0x01,0xaa,0x3d,0x32,0x61,0xe5,0x8e,0x62,0xa7,0xf6,0x3b,0x2d,0x0e,0xff,0xf4,0xe9,0x08,0xe7,0xef,0x3a,0x63,0x10,0x34,0x49 +.byte 0x14,0xe1,0x88,0xd0,0xb2,0x1d,0xb7,0x31,0xc9,0xa4,0x48,0xa8,0xaf,0x64,0x29,0xab,0x1f,0x14,0x13,0xa7,0xb8,0xb8,0xa4,0x24,0x1d,0xf9,0xb6,0x3e,0x62,0xa6,0x5e,0x10,0xcb,0x44,0x5c,0x9d,0x2c,0x58,0x3a,0x36,0xa3,0x81,0x9f,0xa9,0xa4,0xa1,0x06,0x1d,0xbf,0x97,0x03,0x88,0xf2,0xf4,0x81,0x3e,0x1b,0x35,0xea,0xd0,0xb6,0x96,0xa1,0xf7 +.byte 0x1e,0x49,0xb7,0xe8,0x23,0x6f,0x05,0x7c,0x9f,0xc4,0x53,0xb1,0x63,0xdc,0x07,0xbb,0xd6,0x57,0x85,0x4d,0x77,0x33,0x21,0xbf,0x77,0xfe,0xfe,0x34,0x52,0x02,0xe7,0xe4,0x87,0x11,0xa0,0xfd,0x11,0x4a,0x34,0x36,0x88,0x69,0xdf,0x77,0xfd,0x83,0x71,0xa8,0x68,0xed,0x49,0x39,0xb4,0x06,0x32,0x48,0xf1,0xd2,0x4e,0x61,0x47,0x65,0x26,0x87 +.byte 0xba,0x2b,0x2e,0xf4,0x12,0xfc,0xd0,0x84,0x81,0xa1,0x59,0xdc,0xe3,0x13,0x51,0x9e,0xea,0x57,0x56,0x3b,0x7c,0x71,0x6b,0xff,0xe9,0xf8,0xec,0x3e,0xe7,0xbe,0x65,0x47,0xe1,0x6f,0x8f,0x7c,0x3a,0x77,0xdb,0x75,0x4a,0x43,0x43,0x39,0x37,0xb2,0x68,0x16,0x72,0xdb,0x49,0xf7,0x13,0x3c,0x09,0x93,0xef,0xc1,0x2a,0x99,0xff,0xc7,0xdb,0xd9 +.byte 0x80,0xd2,0xfe,0x7c,0x39,0x50,0x21,0xdc,0x1d,0xae,0x9b,0xfc,0xd4,0x5f,0x56,0xae,0x6a,0xd9,0x35,0xa1,0x2b,0xd6,0x53,0x90,0xe8,0x8c,0x31,0x73,0x0f,0xa3,0x9e,0xa1,0x2f,0x76,0xa8,0x72,0x4d,0x5e,0x58,0xca,0x9f,0x8f,0xdf,0xf0,0xf9,0x6a,0x54,0xb1,0x5f,0x39,0x03,0x7a,0x26,0x06,0x71,0x74,0x6f,0x42,0xee,0x63,0x76,0x13,0xb9,0xed +.byte 0x74,0xad,0xf9,0xe0,0xa7,0x35,0x9c,0x18,0xe0,0xf7,0xc5,0xb2,0x27,0x14,0x0f,0xd7,0xaa,0x17,0x1c,0x8f,0x50,0xc8,0xb0,0xc2,0x63,0xff,0x38,0x65,0x87,0x69,0xb3,0xd5,0x3f,0xb4,0xf2,0xe8,0x8b,0x7b,0x24,0xdc,0x1f,0x62,0x2f,0x0a,0xd7,0x2d,0x0f,0x6f,0x48,0x1d,0xf0,0x3c,0xb1,0xb4,0x10,0x8d,0xc6,0x5c,0x79,0x30,0xde,0x20,0x9e,0x7b +.byte 0xf1,0xa5,0x73,0x38,0x05,0x1b,0x13,0x78,0xb1,0x02,0x2f,0x32,0x2a,0x07,0x59,0xa4,0xfc,0x88,0x08,0x0c,0xff,0x42,0x72,0x6a,0xb0,0x8a,0xc9,0x3d,0xdb,0x04,0x90,0xdd,0x0b,0xbc,0x3a,0x4e,0xfa,0xd4,0x57,0xd8,0x2f,0x7b,0xcb,0xd9,0x6a,0xe7,0xfd,0x32,0x17,0x99,0x20,0x64,0x1e,0x76,0x07,0xb9,0xa3,0x58,0x7f,0x79,0xda,0x0c,0xe0,0xec +.byte 0x30,0xbf,0xa4,0x85,0x0a,0x39,0xc0,0xe9,0xf7,0xbe,0xd1,0xa7,0x94,0x1f,0xa6,0x6d,0xe8,0xc5,0x1b,0x04,0x27,0xf4,0xdc,0xc2,0x4d,0x9a,0x0e,0x9b,0xe8,0xec,0x56,0x99,0x90,0x5f,0x8b,0x28,0x0a,0x92,0xaf,0x0b,0xa1,0xd2,0x85,0x86,0x26,0xc7,0x8a,0x01,0xa4,0x08,0x29,0x32,0x7d,0x3d,0xa5,0x74,0x9c,0x90,0x63,0x83,0x1f,0xd4,0xee,0x98 +.byte 0xf5,0x14,0xff,0x39,0xeb,0xbf,0x40,0xa4,0xc9,0x70,0x4f,0x81,0x03,0x19,0xef,0xf5,0xdf,0xf7,0x00,0x75,0xcb,0x2e,0x81,0x41,0xc5,0xda,0xfb,0x67,0x6a,0xf0,0xa3,0xd3,0x5a,0x60,0xaf,0x72,0x27,0x3e,0xad,0x37,0x3e,0x3d,0xe6,0x85,0x4c,0xa1,0xb0,0xe9,0xab,0xc5,0xd3,0x8b,0x04,0x0d,0x64,0x7f,0xa2,0xb9,0x6d,0x6d,0x28,0xf8,0x4b,0x43 +.byte 0x78,0x51,0xf4,0x84,0xf1,0x3c,0x67,0xd8,0xdd,0xd7,0x0b,0x67,0xc3,0xd9,0x95,0x7b,0xfc,0x7d,0xc4,0x33,0x05,0x90,0xec,0x0a,0x98,0xfb,0x6b,0x0d,0xe9,0x8c,0x74,0x94,0x20,0xf8,0xcb,0xca,0xb6,0x72,0x07,0x7c,0xef,0xfa,0xd0,0x3f,0x51,0xc5,0x6e,0xf8,0x3f,0x37,0xe3,0xfe,0xb9,0x9a,0x9c,0xb3,0xf6,0x96,0x4e,0x65,0x77,0x21,0xcf,0xaf +.byte 0xe7,0x20,0x06,0xc2,0x93,0xc5,0x2e,0xc0,0x7f,0xe5,0x0a,0x42,0xad,0x89,0x64,0x6e,0x95,0xbf,0x95,0x1d,0x24,0x47,0xf8,0xd5,0xec,0x7c,0x1f,0x98,0x67,0x9c,0x5f,0x6e,0xaf,0x74,0x95,0x65,0x4c,0xb6,0xe0,0xd3,0xb7,0x5b,0xc7,0x76,0xe6,0x87,0x19,0xf5,0xc7,0xb0,0x2d,0xe0,0x8b,0xaf,0x6d,0x3c,0x31,0x6e,0x84,0xc8,0x86,0x51,0xff,0x29 +.byte 0x2a,0x1f,0xea,0xd4,0x2d,0x1a,0x8f,0x04,0xb4,0xc0,0x6a,0x93,0xc2,0xc5,0xe7,0x98,0x8c,0xc7,0xff,0xbf,0xb8,0x8e,0x5b,0x29,0x5b,0xa6,0x87,0xc7,0x02,0x88,0x51,0x29,0x66,0xd8,0xf3,0x68,0x38,0xd4,0xa6,0xbd,0xa2,0x5c,0x1b,0xb7,0x13,0xd7,0x64,0xed,0x68,0x21,0x88,0x2b,0x59,0xba,0x95,0x84,0xda,0xce,0x61,0x3b,0x51,0x04,0x3e,0xc2 +.byte 0xdd,0xec,0x0c,0x6b,0xbe,0x35,0x51,0x63,0x29,0x40,0xcb,0xa5,0x62,0xe4,0x27,0x35,0x15,0x1f,0x7c,0x8b,0xe5,0xd0,0x2e,0xde,0x8c,0x3d,0xa0,0xd2,0xbe,0x51,0x3d,0x65,0xed,0x94,0x8b,0x8c,0x00,0xda,0x0e,0x78,0x4d,0x25,0xef,0x8e,0x3c,0x55,0x77,0xeb,0x58,0x06,0x7d,0xd1,0xfc,0x73,0xad,0x76,0x0a,0x81,0xbe,0xda,0x50,0x30,0xf3,0xfd +.byte 0x58,0x25,0x0a,0x4b,0x1b,0x1e,0x0b,0xd0,0x9b,0xbc,0xb9,0x31,0x26,0xbc,0x4c,0x7b,0x05,0xd7,0x5c,0xe4,0x7a,0xdd,0xff,0x04,0xac,0x5d,0xcb,0xfd,0x91,0x34,0x68,0x26,0x1e,0xb4,0x86,0xcc,0xe3,0x90,0xaf,0x6a,0x65,0xda,0x6b,0x3e,0xec,0x44,0x90,0x72,0x7a,0x34,0xfc,0x7b,0x65,0x83,0x34,0x93,0xbc,0x85,0x50,0xdf,0x03,0x89,0x35,0xb8 +.byte 0x6a,0x39,0xd3,0xb6,0x38,0x66,0x5b,0xa7,0x9e,0x93,0xa2,0x3b,0xb6,0xe7,0xee,0x1e,0x5c,0xd6,0xa8,0xd9,0x1f,0xf7,0xd1,0x0a,0x2f,0x87,0x63,0xf4,0xf9,0x8c,0xd4,0x7c,0x02,0xaf,0x7e,0xb6,0xc7,0xfc,0xc9,0x4d,0x35,0x0c,0x8c,0x3c,0x13,0x9d,0xe6,0xd7,0x2e,0x4b,0x91,0xcc,0x88,0xdb,0xfc,0x68,0x3a,0xd1,0x15,0x07,0x16,0x66,0x11,0x9b +.byte 0x66,0x9f,0x3f,0x37,0xae,0x11,0xba,0x5f,0xc7,0x3a,0x1a,0x49,0xbc,0x14,0x21,0x75,0xdc,0xcc,0xbb,0x5c,0xed,0xdc,0x8b,0x21,0x9a,0x8f,0x5f,0x91,0x6a,0x9b,0x26,0x33,0x64,0x45,0xa0,0xdf,0xc4,0xa1,0x32,0xc4,0x4c,0xc2,0x42,0x1b,0x59,0x37,0x1f,0xdb,0x01,0x6d,0xed,0xd8,0x05,0x5b,0x90,0x59,0x32,0x45,0x50,0x5d,0xf1,0x34,0xc4,0xb7 +.byte 0x52,0x97,0xbb,0x42,0x12,0xf1,0xa5,0x76,0xe4,0x1a,0xbc,0x4a,0x64,0xd3,0x08,0xac,0xe1,0x49,0x70,0x61,0xc8,0xcf,0xb1,0xd3,0xc4,0x7f,0x38,0x31,0x6b,0xd3,0xe1,0xe1,0xe9,0x5b,0xaa,0x7a,0xec,0x26,0x81,0x44,0xd3,0xb9,0x63,0xea,0x37,0x98,0x15,0x41,0xf1,0xa1,0x72,0x87,0xcc,0x3b,0x6a,0x27,0x9b,0x85,0xa8,0x7b,0xb6,0x25,0xf9,0xd4 +.byte 0x84,0x3e,0x66,0x12,0xce,0x24,0xee,0x22,0x51,0x73,0x7e,0xba,0x1e,0x95,0x64,0xc5,0xbf,0x4e,0x4f,0x73,0xc1,0xc3,0x98,0xb9,0x6b,0x90,0x1f,0x39,0xfc,0x03,0x55,0x76,0x8c,0x57,0xea,0xe8,0xc1,0x25,0x09,0x69,0xc0,0xe8,0x54,0x91,0xc1,0x7c,0x52,0x8e,0x82,0x6d,0xf2,0x0e,0x3f,0xa9,0x98,0x04,0x40,0xda,0x1c,0xc0,0xbb,0x42,0xf0,0x7d +.byte 0xed,0x78,0xb0,0x4f,0x94,0xba,0x0d,0xbf,0x60,0xbe,0x09,0x67,0x42,0xc5,0x41,0x4c,0x80,0x8d,0x30,0x10,0xa9,0xd2,0x07,0x8c,0xa8,0x40,0xc6,0xe2,0x08,0x42,0x7f,0x99,0xad,0xc5,0x66,0x1f,0xfd,0xd2,0xc5,0x79,0x77,0x9b,0x60,0x7d,0x25,0x2d,0x69,0x14,0x94,0xa5,0xf0,0x0a,0x14,0xb6,0xf9,0xbe,0x3a,0x4a,0x3d,0xc6,0x45,0x2e,0x27,0x4a +.byte 0xd1,0x1d,0xcf,0x08,0xee,0x93,0x3c,0xb5,0x8a,0xee,0xdd,0xf3,0x33,0xa6,0x35,0x9d,0xd8,0xb4,0x68,0xc5,0x98,0x09,0x78,0xcc,0xb3,0xeb,0x0f,0xcd,0x25,0xf8,0x17,0x9c,0x45,0x77,0xc7,0x06,0x40,0x44,0x90,0xec,0x6a,0xd9,0xf5,0x05,0xd4,0x88,0x17,0x47,0xeb,0x29,0x85,0x32,0x76,0x7b,0xa4,0xe3,0x65,0x30,0x50,0x9a,0x99,0x26,0x91,0x60 +.byte 0xb0,0xb8,0xe5,0x8d,0x35,0x9e,0x9a,0x13,0x65,0x82,0xb2,0x4b,0xf1,0xed,0x1f,0xb7,0xb4,0xc0,0x03,0xe6,0x1d,0x2b,0xaa,0x1e,0x01,0x92,0x0b,0xcb,0x34,0x77,0x80,0x94,0xc2,0x4e,0x3b,0x73,0xd8,0x2e,0xd8,0x95,0x33,0x05,0x65,0xa2,0x99,0x29,0x7a,0xd1,0xb3,0xed,0x5a,0x8d,0x4d,0x6a,0x6d,0x69,0x2b,0x5a,0xa1,0x3a,0xc0,0x81,0x96,0xf1 +.byte 0xc2,0xa7,0x4e,0x07,0x90,0x04,0x99,0x70,0xea,0x1a,0x3a,0x26,0xb5,0xed,0x92,0xbd,0x57,0x80,0x11,0x06,0xf2,0xb4,0x05,0x69,0x7a,0xbf,0x27,0xa1,0xbd,0xdb,0x09,0xe5,0xb3,0x2d,0x86,0x41,0xcc,0x5d,0x68,0x37,0x9e,0x98,0xa5,0x4a,0x20,0x8a,0x5f,0x54,0xae,0x4f,0x73,0xd0,0x22,0x18,0x8d,0x2b,0x91,0xcb,0xbb,0x83,0x1e,0x04,0x93,0xc8 +.byte 0xc3,0x89,0x35,0xfd,0xda,0xeb,0x52,0x53,0x9f,0xdc,0x33,0xf0,0xe0,0x99,0x19,0x11,0xeb,0x55,0xd3,0x3c,0x5f,0xca,0x29,0x52,0xe7,0x6b,0xd1,0xad,0xeb,0xed,0x8e,0x68,0x82,0x91,0x85,0x81,0x68,0x70,0x78,0x61,0x1e,0x0c,0x09,0x3a,0x82,0xdc,0xdb,0x26,0x66,0x1c,0xa3,0x80,0x99,0x23,0x8a,0x45,0xd7,0xb8,0x10,0x97,0x80,0x70,0x49,0x78 +.byte 0xa9,0x4c,0xf0,0xec,0xcc,0x05,0xd0,0x6a,0x6a,0x1a,0xa0,0xf7,0xde,0x78,0xc6,0x42,0xbe,0xbd,0xa0,0x24,0x1d,0x3f,0xdd,0xfb,0x92,0xc2,0xbd,0xd6,0x5c,0x25,0x74,0x3d,0x2b,0xb8,0x60,0x67,0xdb,0x70,0x1e,0xe8,0x9f,0xcd,0xb4,0x82,0x90,0x9e,0x2a,0x94,0xa5,0xa2,0xd4,0xd2,0x24,0xa7,0xca,0xbf,0xe1,0x8b,0xab,0xf3,0xd2,0x7c,0xa6,0xc8 +.byte 0xe6,0xaf,0xef,0xe3,0x86,0xb1,0x42,0x1d,0xc6,0xa2,0x37,0x9b,0x26,0x46,0x0b,0xfd,0xee,0x88,0xa4,0xf1,0xa8,0x72,0xaf,0xda,0x30,0x56,0x22,0xd3,0x1b,0x31,0x76,0xd7,0x03,0xef,0xf3,0x98,0x16,0x4d,0x36,0x57,0x1b,0xd5,0x90,0xb8,0x67,0x50,0x7f,0x22,0xa8,0xdc,0x9c,0xf1,0x6e,0xa4,0x65,0x45,0xf0,0x73,0xd8,0x7e,0x41,0xb0,0x68,0x52 +.byte 0x00,0x0a,0xda,0x99,0x6c,0x84,0xce,0xf0,0x73,0x65,0x93,0x52,0xc8,0x4b,0xb4,0x72,0xda,0x2c,0xa1,0x47,0xb5,0xe3,0x00,0x63,0xc0,0x4e,0x84,0x16,0x00,0xe6,0x1f,0xbd,0xba,0x49,0xcb,0xd3,0x7d,0xd2,0xeb,0x4a,0xb2,0xd5,0xb2,0x53,0x96,0xfb,0x04,0x73,0xc0,0x09,0x31,0xf3,0xf2,0xc0,0xd3,0xa6,0xe1,0xea,0xe1,0x58,0xbe,0x90,0xc9,0xfb +.byte 0x6e,0x13,0x69,0xbe,0x17,0xd4,0x16,0x5b,0xcb,0xf4,0x93,0x0a,0x38,0x46,0xea,0x64,0xad,0xb0,0x0d,0xc0,0x3b,0xfc,0xe3,0xd4,0x20,0x75,0x0c,0x3e,0x71,0x1b,0x5f,0xde,0xff,0xd6,0xfa,0x6f,0xe4,0x10,0xb0,0x14,0x05,0xaa,0x05,0x70,0x5e,0xbd,0x58,0x9f,0x3c,0x9d,0x4f,0xa7,0x5a,0x65,0x57,0x02,0x05,0x44,0xe0,0x95,0x9d,0xa2,0x60,0x06 +.byte 0xcb,0xfd,0x91,0x8e,0x7f,0xce,0xa1,0x80,0x94,0xbb,0x88,0xf2,0xa6,0xe7,0x83,0xf9,0x38,0x8f,0x09,0x8e,0xe4,0xa9,0xc2,0xc7,0x84,0x9d,0x25,0x09,0x52,0x8b,0x32,0xaa,0x3b,0xde,0xb6,0x82,0x9f,0x6d,0xc4,0xdf,0x11,0xf7,0x72,0x1a,0xe4,0x00,0x51,0x41,0x01,0xba,0x21,0xea,0x0a,0xda,0xf2,0xbb,0x66,0xae,0x51,0x2b,0xb0,0x6d,0x1d,0xe8 +.byte 0x4b,0x1e,0x42,0x68,0x3a,0xed,0xe6,0x59,0x13,0x42,0x07,0x54,0xae,0x2e,0x15,0x93,0xd7,0xff,0xad,0x49,0x09,0x41,0x52,0x6b,0x3b,0x9c,0x41,0x43,0x0d,0xed,0xed,0x6f,0xb8,0xe9,0x0d,0xcc,0xde,0x0d,0xaa,0x91,0xef,0x89,0x2f,0x2d,0x94,0xd0,0x03,0x2b,0x51,0x7f,0x85,0x9b,0x7b,0x08,0xc8,0xb6,0xe2,0x82,0x22,0xa9,0x57,0x71,0xf2,0xae +.byte 0x08,0xfa,0x6c,0xd8,0xca,0x78,0x42,0x98,0x23,0xfd,0x38,0x4b,0x6c,0xd3,0x9f,0xc6,0xa3,0xb2,0xc1,0x8c,0x4a,0xa3,0xcd,0x9f,0x56,0xe7,0xc2,0x06,0xd7,0xc5,0xc2,0xd9,0x98,0x57,0xc8,0x5a,0xaa,0xf4,0xaa,0x44,0x02,0x83,0x11,0x1e,0xf6,0x64,0x8d,0xf7,0x3b,0x86,0x3c,0x04,0x53,0x5f,0x62,0xc8,0x7a,0x0e,0x1c,0x4f,0xa8,0xe3,0x5c,0xe8 +.byte 0x64,0xf7,0xe3,0x5d,0xea,0xb5,0x2d,0xdb,0x7b,0x0e,0xdb,0x91,0x34,0xd5,0x87,0x4f,0xe6,0x73,0xee,0x3d,0x79,0x7c,0x67,0x48,0xb5,0xbb,0x42,0x96,0x0d,0x9d,0xbd,0x68,0x98,0xe5,0x59,0x51,0x16,0x45,0x15,0xac,0x80,0x41,0xae,0x45,0xdb,0xe4,0x2a,0x44,0x0d,0xe4,0x25,0xc7,0xd3,0x06,0xf7,0x98,0x15,0xe1,0xc5,0x9b,0x34,0x0e,0x87,0xb8 +.byte 0x90,0x1b,0x24,0x84,0x06,0x24,0xb0,0x80,0xbe,0x03,0xa0,0x95,0x10,0x1e,0x72,0xde,0x0f,0xd4,0x15,0x7b,0xa0,0xf5,0x42,0xc3,0x6f,0x10,0xe9,0x76,0x44,0xe3,0xa9,0xb7,0xef,0xf6,0xc2,0x80,0xe2,0x0c,0x2d,0xad,0xe0,0xb9,0x45,0xca,0x67,0x6f,0xb6,0xc5,0xc0,0x8d,0x25,0xee,0x50,0xeb,0x51,0xc6,0x87,0x87,0x61,0x3a,0x75,0x95,0x41,0x47 +.byte 0x26,0xfd,0x35,0xf6,0x46,0xf4,0xe9,0x42,0xc6,0xef,0x37,0x97,0xb3,0x0a,0x1d,0xc8,0xdf,0x07,0x24,0xb1,0x0d,0x07,0x43,0x67,0x7d,0x81,0x09,0x58,0xdd,0xf6,0xcf,0xf1,0x47,0x42,0xbd,0x3c,0xa3,0xd7,0xe8,0x73,0xf9,0x5b,0xff,0x2c,0xcd,0xe6,0xd1,0xe9,0x47,0x6d,0x19,0x9b,0x6a,0x63,0x69,0xf4,0x4a,0xdf,0x69,0xab,0xa9,0xb7,0xe5,0x8d +.byte 0x1c,0x44,0x52,0x0c,0x7e,0xa1,0xfe,0x9d,0xd5,0xa4,0x71,0x62,0x0b,0x3c,0xf6,0xd2,0xd3,0xe9,0x70,0x09,0x68,0xf7,0xd6,0x0a,0x00,0x61,0xf1,0xf3,0xd0,0x41,0x4a,0x14,0xc6,0xf5,0x49,0xb1,0xde,0x10,0xd3,0x20,0x8b,0xfe,0x78,0x6a,0x87,0x79,0x15,0xd3,0x43,0x00,0xbe,0x71,0x40,0xaa,0xca,0x1a,0x64,0xe3,0x96,0x34,0x2f,0xea,0x0c,0x11 +.byte 0x41,0x21,0xf8,0xa7,0x65,0x9b,0x75,0xe2,0x1e,0x6f,0x5e,0xe0,0x68,0x42,0xca,0xd3,0x19,0x35,0xe8,0x88,0x0f,0x05,0xa3,0xb1,0x73,0xea,0x53,0x79,0x40,0x24,0x00,0x86,0x20,0xbb,0x25,0x58,0x89,0x6b,0xde,0xd6,0xd0,0x36,0xbb,0x33,0x30,0x59,0x4b,0x30,0x92,0xac,0xe5,0x95,0x94,0x22,0xab,0xc1,0x10,0x35,0x9c,0xa1,0x20,0x11,0x5d,0x4f +.byte 0x57,0x5c,0x9c,0xb8,0x3a,0xdc,0x97,0xa5,0xf3,0x0b,0xf5,0x96,0xe7,0xef,0x90,0x72,0x01,0x52,0x70,0x5a,0xf0,0xd9,0x7e,0x59,0x05,0x8c,0xd1,0x45,0x47,0xbf,0x16,0x15,0xa2,0xc9,0xdd,0xe7,0x5f,0x4b,0x94,0x5f,0xe6,0xf9,0x78,0xbb,0x8f,0xf9,0x79,0x9f,0x5e,0xd7,0x1f,0x0b,0xef,0x8d,0xfe,0x75,0xd4,0x8a,0x12,0x28,0xa5,0xf9,0x6e,0x14 +.byte 0x3c,0x52,0x80,0x57,0xc6,0x96,0xae,0x67,0x27,0xc1,0x1c,0xb6,0xd6,0x1c,0x74,0x8c,0x6f,0xc7,0x71,0x3e,0xd5,0x73,0xf2,0x3e,0x02,0x15,0x67,0x18,0xb8,0x5b,0x61,0x9e,0xfa,0x7e,0xba,0x00,0xe9,0xd9,0x51,0x91,0x63,0x7e,0xf7,0xab,0xc0,0xc6,0xee,0x66,0xdd,0x66,0x88,0x7a,0x8a,0xc5,0xc2,0x08,0x45,0x62,0xde,0xe1,0xfb,0x35,0x65,0x34 +.byte 0x00,0x9e,0x1d,0x25,0xdf,0x69,0xb6,0xe3,0xfe,0xbb,0x13,0xac,0xd3,0x13,0xb2,0x64,0x5a,0xf3,0x47,0xf1,0x36,0x55,0x5f,0x1b,0x87,0xea,0x5d,0x5c,0xfd,0x8a,0x68,0x69,0x8a,0x00,0x9f,0x83,0xbe,0x79,0x7d,0x01,0x9e,0xf2,0xb2,0x5d,0x56,0xe0,0xe6,0x49,0xe5,0xe1,0x76,0x57,0x7a,0x85,0xac,0x94,0x16,0xe3,0x68,0x05,0x14,0xb5,0x33,0x54 +.byte 0x64,0x5a,0xbe,0xa3,0x04,0x90,0x5c,0x1c,0xf8,0x97,0x16,0x36,0xce,0x76,0xe7,0xf0,0xaf,0x8a,0xea,0x65,0xa8,0x15,0x5b,0x1e,0x0a,0x91,0xad,0x62,0x62,0x67,0xb4,0xf0,0x94,0x1f,0x64,0x50,0xa8,0xc0,0x6b,0x38,0x80,0xd7,0x53,0xbb,0x70,0xbd,0x54,0x01,0xb0,0xa5,0xbc,0x00,0xe0,0xd6,0x23,0x37,0xe6,0x9f,0x0f,0x2f,0x96,0x21,0xc2,0x90 +.byte 0x55,0x26,0x55,0xa4,0xcd,0x3e,0x54,0x6b,0xa6,0xb0,0x2c,0xf2,0xd4,0xcc,0x6a,0x44,0xea,0x18,0x61,0xc5,0x1a,0x8e,0x60,0x64,0xf4,0x5f,0x21,0x36,0x01,0x5d,0x9f,0xc4,0x2c,0x67,0x1c,0x48,0x94,0x16,0xae,0xa8,0x13,0x5c,0xee,0x18,0x88,0x61,0xe4,0x54,0x6b,0xa2,0xe8,0x7f,0xf0,0x15,0xc3,0xce,0xbc,0x5b,0x91,0x25,0x7b,0x1d,0xd3,0x9f +.byte 0x13,0x1b,0x01,0x5d,0x43,0xe8,0xa1,0x77,0x5a,0x87,0x79,0x8b,0xd5,0x69,0xf7,0xdf,0x66,0xa2,0x84,0x0c,0x66,0xac,0x15,0x65,0xbf,0x74,0xc0,0xd2,0x78,0x6a,0x3a,0x9c,0x98,0x62,0x04,0x41,0x95,0xb2,0x23,0x59,0xc6,0xb0,0xc5,0x22,0xc0,0xfa,0xaa,0xc8,0x94,0x73,0x91,0x5b,0x64,0x1b,0x74,0xbe,0xcb,0xa1,0x81,0xb1,0xc1,0x26,0xa1,0x94 +.byte 0x55,0x04,0xb3,0x9c,0x80,0xb7,0x00,0x6f,0x36,0xc7,0x7f,0x6d,0x97,0xea,0xf3,0xf5,0x55,0xc5,0xfe,0x61,0xd9,0xb1,0x6d,0x8c,0xa1,0x02,0x08,0xb3,0x41,0xe6,0xe6,0x57,0xc6,0xff,0x6e,0x47,0xa4,0x22,0x2e,0x2d,0x21,0x53,0xbe,0xe3,0xbe,0x15,0xec,0x23,0x9d,0x87,0xe0,0x2e,0xcc,0x6c,0xd0,0xc7,0xb7,0x3d,0xa4,0x07,0x5f,0x69,0x4e,0x2b +.byte 0x07,0x69,0x4f,0xc5,0xa3,0x66,0x52,0x91,0x8f,0xa4,0x48,0xb9,0x40,0x76,0xd9,0xcb,0x6e,0x1a,0x35,0x9e,0x50,0x9f,0xd1,0x78,0xb2,0xb8,0x0d,0xa8,0xf8,0x6e,0x07,0xa5,0x3a,0xdf,0x3c,0x32,0xa6,0x10,0xbd,0x73,0x2f,0x07,0x45,0x66,0x0f,0x61,0xce,0xc2,0x08,0x19,0x98,0x33,0x4b,0x59,0x81,0xb5,0x78,0x4f,0x46,0x88,0xae,0x29,0xf8,0xf5 +.byte 0xc2,0x29,0x6f,0x8f,0xe5,0x8f,0xb0,0x53,0xc8,0x7a,0x48,0xda,0x6f,0x7e,0x8a,0x69,0x68,0xab,0xba,0xd9,0x20,0x0f,0x96,0x69,0x41,0xa6,0x92,0x94,0x8e,0x0f,0x86,0xdf,0x8d,0x70,0xaf,0xfe,0xf1,0x20,0x50,0x01,0xff,0xca,0x30,0x24,0x67,0x4a,0x04,0xa2,0xde,0x06,0xdc,0x26,0x1e,0x17,0xbc,0x52,0x9a,0x62,0x72,0xc1,0xd8,0xd7,0xe0,0xed +.byte 0xcf,0x4b,0x13,0x80,0x9a,0xbf,0x72,0x4f,0xf4,0x24,0x26,0xcd,0xe0,0x21,0x99,0x7b,0x5c,0x4f,0xbf,0x5c,0x41,0x08,0x8b,0x17,0x69,0x62,0x60,0x2c,0x74,0xb0,0x2d,0x22,0x7e,0x25,0x95,0x6a,0x84,0x0f,0x45,0x8f,0x9a,0x92,0xa1,0xcd,0xa5,0x50,0xf0,0x52,0x7f,0x60,0xd8,0x91,0xe1,0x17,0xe1,0x66,0x8f,0xd3,0x1f,0x41,0x7f,0x6f,0xf1,0x72 +.byte 0xa3,0xb6,0x12,0x62,0x46,0x16,0xea,0x26,0x9e,0xda,0x61,0x13,0x0b,0x17,0xf7,0xe1,0xec,0xc0,0x38,0xfe,0x40,0x31,0x6b,0x38,0x2a,0x4b,0xa5,0x8e,0xfb,0x99,0x60,0xd6,0x4a,0xbd,0xfb,0x75,0x2b,0x41,0xd4,0x33,0x5d,0x35,0xfe,0x2d,0xfc,0x1a,0xac,0x02,0xb3,0xf0,0xa2,0x6d,0xfa,0x8b,0x12,0x99,0xdd,0x54,0xf2,0x1c,0x35,0xd3,0x60,0x5a +.byte 0xdb,0x65,0xa7,0x58,0x1b,0x82,0xb4,0xf6,0x49,0x77,0xf2,0xea,0xa3,0xa9,0x57,0x94,0xb7,0x6e,0x19,0xda,0x7e,0xa5,0x70,0xb8,0xff,0x39,0x81,0x7d,0xfa,0xea,0xd6,0xc6,0x12,0x84,0x0a,0x8a,0x16,0xde,0x99,0xa6,0xe7,0xe0,0x77,0x76,0xb8,0xa3,0x6f,0xfb,0xb4,0x8f,0xc3,0xbd,0x90,0xd8,0x2a,0x04,0xed,0x42,0x91,0x9b,0x84,0x40,0x2d,0x01 +.byte 0x94,0xdb,0xbb,0x58,0x25,0xed,0xa3,0xdd,0xaa,0x0c,0xce,0x25,0x12,0xcd,0x11,0xbf,0xd0,0x57,0xe9,0x51,0x74,0xa7,0x45,0x6c,0x58,0xe7,0x4d,0x43,0xc6,0xd0,0x09,0x93,0x2d,0xe0,0xe3,0xae,0x7b,0x8f,0x53,0xa0,0x80,0xa1,0xef,0xcb,0xf5,0xfe,0x38,0x4d,0x31,0xa2,0x5c,0xd3,0x4a,0x66,0x1a,0x5c,0x07,0xbe,0x25,0xba,0x30,0xb6,0x00,0x27 +.byte 0x52,0xb9,0x1f,0xa3,0xed,0xd7,0x31,0x33,0x4a,0xf6,0x3f,0xed,0x75,0xe7,0xa4,0xf4,0xdf,0x97,0xc1,0x78,0x90,0x9b,0x4b,0xbd,0x06,0xc6,0x72,0x5c,0xdf,0x57,0x60,0xbe,0xbc,0x88,0x02,0xb6,0x5a,0x65,0xea,0x3a,0x3a,0x74,0x03,0xc8,0x66,0xef,0xf0,0x63,0xc7,0x9d,0x58,0x8e,0xa1,0xb2,0x25,0x4f,0xc4,0x14,0x5f,0x80,0x78,0x08,0x06,0x21 +.byte 0x50,0x34,0x01,0x2b,0x15,0xf4,0x7d,0x1f,0x1f,0x32,0x36,0x0a,0x52,0x1f,0x50,0xa2,0x50,0xbc,0x9a,0xdf,0x4e,0x84,0x49,0x2d,0x08,0xaa,0x46,0xc0,0x0e,0xcf,0x27,0x17,0x91,0x78,0x8c,0xb9,0x72,0xc5,0x8e,0x25,0x85,0x11,0xff,0x2f,0x4a,0x71,0x7c,0x14,0xfe,0x86,0xfe,0xb4,0x3a,0xd0,0x67,0xfd,0xaa,0x9b,0xee,0x89,0x66,0x03,0x59,0x4e +.byte 0x1c,0x96,0xaf,0x2b,0x8d,0x4d,0x6f,0xf6,0x72,0xc6,0x13,0xc7,0x14,0xce,0x19,0x0c,0x0b,0xa3,0x01,0x12,0x7c,0x8e,0x10,0xb8,0x63,0x41,0x57,0xb9,0xfe,0x6e,0x3e,0xda,0x20,0xfb,0x92,0x08,0x7d,0x66,0x31,0x9d,0x4f,0xdb,0x14,0xf4,0xb6,0xb8,0xea,0xee,0x54,0x0f,0xaf,0xc1,0x99,0xf0,0x8f,0x55,0x44,0x20,0x44,0xd0,0xa6,0x98,0xa3,0xa8 +.byte 0x8b,0x8e,0x26,0x03,0xec,0x2d,0x50,0x4f,0xb0,0x8d,0xd0,0xf2,0x96,0xcc,0x18,0xa9,0xb1,0x0f,0x79,0xe3,0x9f,0x08,0xb3,0x53,0x0b,0x9c,0x9f,0x22,0xdb,0x45,0x57,0xd6,0xaa,0x3b,0x6a,0xcb,0xdc,0xc9,0xda,0x57,0x75,0x65,0x0a,0xc1,0x17,0xb3,0x97,0xa9,0x07,0x40,0x20,0xfb,0x72,0x2d,0xc6,0x37,0x1e,0x44,0xb7,0x7e,0x0b,0x38,0xcc,0xfc +.byte 0xa0,0xed,0x48,0xa9,0x9b,0x87,0xbc,0x71,0x0f,0x8b,0xda,0x4f,0x09,0x27,0x1e,0x3d,0x9c,0x03,0x62,0x81,0xa8,0x7c,0x7b,0x8a,0x14,0xa7,0x22,0x69,0xa8,0xba,0x0e,0xcc,0x1f,0x2b,0xb3,0x0f,0x7d,0xce,0x3f,0xec,0xb5,0x9d,0xe0,0x3a,0x67,0x56,0x08,0x5d,0x03,0x8b,0x71,0x01,0x44,0x11,0x1b,0x7b,0xcf,0xcc,0x2e,0xfc,0xa5,0x52,0x9b,0xeb +.byte 0x1e,0x8a,0xa1,0x86,0x64,0xcf,0x32,0x03,0x6b,0x3e,0x29,0xe7,0x9a,0x16,0x7e,0xe2,0x21,0x2f,0x5f,0xe2,0x86,0x7f,0xf8,0x22,0x36,0x10,0x99,0xc8,0x27,0x43,0xa1,0xb9,0xf4,0xb4,0xb8,0xe1,0xa3,0x1d,0x80,0x9c,0x81,0x92,0xef,0x1f,0x28,0x54,0x51,0xf3,0x62,0x9c,0x7a,0x24,0xd4,0x5a,0xdc,0x38,0x4f,0xa5,0x57,0xdd,0x4d,0xa1,0x52,0xf3 +.byte 0xd3,0x9d,0xa1,0x93,0x5e,0xbe,0x9b,0xd1,0x2a,0x52,0xf1,0xbb,0xa5,0x3f,0x3a,0x94,0x7c,0x7d,0x41,0x61,0x36,0x14,0x25,0x5f,0xab,0xef,0x32,0xf3,0x0f,0x6c,0xc5,0xf5,0x5f,0xe5,0x88,0x51,0x17,0x60,0x8b,0xd5,0xa6,0xea,0x8b,0x21,0xec,0x1a,0xa7,0x69,0xa0,0x59,0xf9,0xeb,0x51,0x94,0x70,0x2b,0x96,0x2e,0x71,0xa9,0x8c,0x12,0x15,0xce +.byte 0x7d,0x59,0x6b,0xf2,0xca,0x2c,0xbd,0x85,0xfb,0x23,0xab,0xcb,0x89,0x89,0xda,0x28,0x49,0x7e,0xfc,0x90,0x2a,0x9a,0x3d,0x6d,0x24,0x57,0xba,0xd9,0x30,0xe0,0x10,0x04,0xb1,0x7f,0x8a,0xcf,0xc8,0x27,0x63,0xd6,0xbd,0xea,0xef,0x90,0x6f,0xc2,0xfc,0x78,0xfd,0xc4,0x5b,0x45,0x0c,0x41,0x8a,0x53,0x5b,0xbc,0x62,0x32,0x86,0x7f,0x19,0xb7 +.byte 0x8b,0x03,0x50,0xed,0xca,0x8e,0x8b,0xa0,0xe3,0xc2,0x0e,0x81,0xe5,0x8a,0xe8,0xf1,0x6a,0x0b,0x1a,0xa7,0xb6,0xed,0x74,0x23,0x34,0xad,0x5b,0xd8,0xf7,0x17,0x8d,0xa5,0x05,0xf3,0x00,0x4a,0xad,0x7e,0x91,0xc9,0x6b,0x13,0xff,0x76,0x78,0xf0,0xd1,0xf4,0x99,0x43,0x73,0xd9,0xba,0x59,0xbe,0xb5,0xa3,0xbd,0x5e,0xc5,0xd3,0x88,0x06,0x9c +.byte 0x86,0x32,0xb4,0xd5,0x30,0x77,0x78,0x8e,0xd5,0x6a,0x1d,0xeb,0xfd,0x6b,0xe6,0xf8,0x4b,0xe8,0xf3,0xba,0xbb,0x86,0x8e,0xe6,0x63,0x83,0x92,0x23,0x05,0x58,0x2e,0x61,0xdd,0x38,0xad,0x8d,0x19,0x7d,0xfa,0x7c,0x3e,0xc8,0x9f,0xae,0xea,0x6d,0x12,0xf0,0xa4,0x08,0xed,0x12,0x0c,0x97,0x87,0x58,0xd8,0xbc,0x3f,0xde,0x7c,0xee,0x0c,0xc0 +.byte 0xa2,0x2e,0xf0,0x25,0x6d,0xf3,0x30,0x23,0xa7,0xc2,0xc8,0x09,0x67,0x01,0xe1,0x25,0x26,0x46,0x38,0xf5,0x5e,0x55,0x8b,0xd6,0x43,0x6a,0xb8,0xe4,0xdf,0x0f,0x5d,0x6c,0xc3,0xb2,0x56,0x38,0xda,0xbc,0xbf,0x5e,0x85,0x8c,0xd5,0x2a,0x6a,0xe2,0xff,0x4f,0x36,0xf7,0x52,0x2c,0xe2,0xae,0x65,0x65,0xd1,0xfc,0xd3,0xc6,0xf7,0x26,0xa6,0xd0 +.byte 0x0b,0xc8,0xf0,0x68,0x5d,0x07,0x89,0x06,0xb3,0xfb,0x39,0x1d,0xd8,0xd8,0xd7,0x53,0xd0,0xc9,0x76,0x56,0xc0,0xd3,0xf5,0x66,0x80,0x5b,0xff,0x4a,0xdf,0xae,0x52,0x86,0x54,0x24,0x53,0xcf,0xcf,0xd2,0x89,0xde,0x71,0x62,0x9c,0x31,0xa5,0x3d,0x62,0x07,0xa1,0x33,0x49,0xbb,0x06,0x88,0xd8,0xa1,0xdd,0x0e,0x47,0x8d,0x72,0x00,0x2d,0x51 +.byte 0xa3,0x35,0x6e,0xb6,0x1f,0xbf,0xe5,0x42,0x68,0x6f,0x62,0xfa,0xf3,0x12,0xa9,0x1a,0xbd,0xe8,0xa4,0xf1,0x6d,0x07,0xe7,0x70,0x87,0x44,0xb7,0x3d,0xea,0xdc,0x3a,0x24,0xbd,0xa0,0x9b,0xb8,0xc5,0xa8,0xd9,0x06,0xde,0x02,0x68,0x7e,0xd5,0x2d,0x3b,0x5f,0x12,0x31,0x72,0x35,0x77,0xf6,0x10,0x6e,0x81,0x7d,0x3c,0xac,0x95,0x5b,0xbe,0x90 +.byte 0x74,0xf3,0x3e,0x9b,0x07,0x54,0x97,0xe3,0x1d,0xcf,0xe2,0xc5,0x80,0x6b,0x5f,0x0b,0x96,0x00,0x0f,0x0e,0x53,0x36,0x76,0x6e,0x99,0x0c,0x32,0xa2,0xc9,0xaa,0xa0,0xa1,0xb7,0xee,0x9d,0xd6,0x46,0xe7,0x2d,0x10,0x7a,0xf2,0x22,0x50,0x52,0xbf,0xec,0xcc,0xbc,0x0d,0x81,0x55,0x2d,0xac,0x2e,0xf7,0x99,0xbe,0x68,0x09,0xb0,0x11,0xc3,0xc8 +.byte 0xca,0x63,0xa7,0xc2,0x0f,0x37,0x2a,0x9e,0x85,0x79,0x6b,0x44,0xc1,0x4f,0xb9,0xd6,0x6c,0x56,0x0e,0x59,0x33,0xc3,0x00,0x53,0xe2,0xf4,0x30,0x90,0x4e,0x4b,0x09,0x4d,0x6f,0x9a,0x9e,0xb9,0x8d,0x0b,0xa1,0x80,0xfd,0xfb,0xde,0x74,0x49,0x53,0x04,0x3a,0x35,0xcb,0x45,0xe2,0x67,0x2c,0x4d,0x6e,0x39,0x7b,0xbd,0x68,0xaa,0x93,0x1e,0xee +.byte 0x1e,0x35,0xae,0x1e,0xf2,0xe7,0xb1,0x80,0x92,0x45,0x27,0x85,0xd0,0xc7,0x26,0x17,0x54,0x30,0xba,0x0c,0x8e,0x48,0xf3,0x08,0x51,0xa6,0x41,0x70,0xba,0x5b,0x90,0x69,0x7c,0x64,0x1d,0x61,0xb5,0x23,0x4a,0xef,0x97,0xe4,0x9a,0xd0,0xff,0x47,0x7a,0x93,0x1a,0x28,0xb3,0x8a,0x32,0x29,0xf8,0xe9,0x08,0xc3,0xf3,0x24,0xd7,0x2e,0x18,0x6d +.byte 0x99,0x40,0x77,0x43,0x9f,0x98,0xe4,0xe5,0x3a,0x34,0x9d,0x46,0x52,0x9f,0x84,0x79,0x8c,0x70,0xbc,0x88,0x30,0xaf,0x87,0x69,0x57,0x6e,0xde,0x2e,0xfe,0x0f,0x3b,0x8d,0xc8,0x95,0xcf,0x69,0x78,0xff,0xa1,0xb1,0x81,0x49,0x1e,0x45,0xc0,0x83,0x1b,0xa3,0x5a,0xee,0x3e,0x9a,0x15,0x7c,0xf0,0xa2,0xfd,0x04,0x22,0x55,0x2d,0x74,0x61,0x29 +.byte 0x0e,0x4f,0x31,0xdb,0x35,0x99,0x37,0xb7,0x7d,0x11,0xde,0x87,0x4f,0x84,0xeb,0x6c,0x14,0xcc,0xbb,0x71,0x47,0xab,0x5b,0x61,0x51,0xeb,0xa1,0xc1,0x5f,0xe4,0x5c,0x3c,0xab,0x04,0xf1,0x60,0x50,0xe1,0xd0,0x58,0xdf,0x42,0xed,0x73,0x5f,0x31,0xdf,0x8d,0xb8,0xb8,0xdc,0x4e,0x2f,0xe3,0x7f,0x89,0x9e,0x62,0xc9,0xef,0xfd,0x60,0xae,0x58 +.byte 0xa9,0xa5,0x8b,0xa8,0x3b,0xd8,0x5f,0xd4,0x09,0xff,0x61,0x8c,0x25,0xde,0x84,0x7f,0x35,0xc9,0x5c,0x2b,0xe8,0x46,0xe4,0x1c,0xbd,0x77,0x51,0x31,0x55,0x3d,0xb4,0x35,0xf3,0xdc,0xa5,0x55,0xd3,0xe3,0x24,0xf9,0x41,0xe2,0xf0,0xbd,0xf5,0xff,0x81,0x87,0x64,0xc9,0xe7,0x69,0x29,0x86,0xaf,0x98,0x33,0x33,0x62,0x9c,0x7b,0x16,0xbb,0xfe +.byte 0x0b,0xa7,0x92,0xa5,0x7b,0x81,0xbc,0x50,0x88,0xf6,0xe7,0xfc,0x73,0xd6,0x37,0x43,0x09,0xa5,0xc6,0xd6,0x4d,0x28,0xb5,0xaa,0x53,0x52,0x8c,0x2c,0x06,0x64,0x6c,0x21,0x6b,0xe7,0x67,0x4a,0xa5,0xcc,0xa1,0x32,0xf0,0xd9,0x78,0xb9,0xc3,0xdb,0x41,0xee,0x10,0x11,0x81,0x04,0x03,0x73,0x48,0xc6,0x3e,0x60,0x6d,0x82,0xef,0xe2,0xa8,0xe8 +.byte 0xd7,0xda,0xd9,0xb5,0x34,0x42,0xc8,0x1c,0xa7,0xa4,0x8e,0x88,0x2e,0xbc,0x96,0x0a,0xfc,0x40,0x36,0x80,0xdf,0x60,0xe9,0x03,0x02,0x0c,0x51,0xf7,0x7d,0x01,0xd2,0x21,0x38,0x44,0x4b,0x34,0x80,0xbf,0x5e,0xc1,0x86,0xf2,0x35,0xeb,0xa8,0x21,0x15,0x74,0x7c,0x99,0x55,0x64,0xf4,0x48,0xd6,0xd1,0x47,0x1f,0x4d,0xbf,0x0c,0x20,0x5d,0x86 +.byte 0xb9,0xab,0x4e,0xc8,0x86,0x08,0x71,0x1d,0x13,0xf6,0xd3,0x17,0xac,0x61,0x10,0x5d,0x2a,0xb4,0x48,0xa1,0xb9,0x79,0x5a,0x09,0x3a,0x65,0x4c,0xbd,0x97,0xbe,0x48,0xc6,0x66,0xd8,0xce,0x0c,0x19,0xb5,0x44,0x02,0xfa,0xb7,0xa8,0x3f,0x9b,0x86,0xec,0xd1,0xef,0x1d,0x7d,0xb3,0x82,0x5c,0x92,0x48,0x02,0x2c,0x56,0x0f,0xff,0xf7,0x19,0x74 +.byte 0xc2,0x38,0x24,0x8d,0xb2,0x87,0xb6,0xeb,0x49,0x50,0x6a,0x33,0x74,0x4e,0x2a,0xcb,0xf4,0x13,0x2c,0xfa,0x3b,0x0e,0x3d,0x98,0x3e,0x33,0xd9,0x55,0xfa,0xb9,0x74,0xb8,0x6f,0xc1,0xd8,0xfd,0x8f,0xff,0xb9,0x1a,0x17,0xf8,0xb6,0x21,0xc4,0x9d,0x47,0x5e,0x84,0xf6,0xe5,0xbf,0x93,0x98,0xac,0x8f,0x68,0x85,0xf8,0xe8,0x79,0x7f,0x6f,0x0d +.byte 0x62,0x2c,0xaa,0x1e,0xe4,0xab,0x73,0xf8,0x6f,0x02,0xda,0x6b,0x3c,0x14,0x2e,0xc9,0xdb,0xb0,0x4e,0x39,0xb5,0xcf,0x05,0xae,0x9c,0x63,0x2f,0x6a,0x25,0x61,0x9d,0x40,0xeb,0x7e,0xd8,0x97,0x97,0x33,0x67,0x5c,0x78,0x84,0x68,0xc2,0x7a,0x26,0x58,0xe3,0x6c,0x0a,0x2e,0x6a,0x82,0xd6,0x43,0xed,0x79,0xa5,0x8d,0x4e,0x7c,0xf7,0x80,0x01 +.byte 0xe7,0x02,0x5e,0x3a,0xf7,0x8a,0x4a,0x85,0xe9,0x98,0x1e,0x69,0x33,0xf3,0x54,0x96,0x79,0xc8,0x03,0x0a,0x9f,0x0c,0x5d,0x66,0x44,0x88,0x3c,0xd7,0x9e,0xd1,0xde,0x01,0xfd,0x5e,0xa5,0x6a,0x82,0x00,0x36,0xe6,0x12,0xe3,0x62,0x46,0x45,0x69,0xfb,0x4f,0x44,0x8e,0xe5,0x8d,0x21,0x57,0x6a,0x61,0x8e,0x56,0xcb,0x5b,0x2c,0x5f,0x65,0x41 +.byte 0x2c,0xad,0xf2,0x98,0x34,0xbb,0x06,0x0d,0x8a,0x3c,0x34,0x0d,0xa3,0xe2,0x6e,0x86,0xfa,0xa9,0xfb,0x6f,0xbb,0x32,0xd6,0x0d,0x76,0x6b,0x77,0xf3,0x83,0x41,0xc0,0x80,0x63,0x55,0x47,0xb8,0x13,0x6b,0x99,0x96,0x08,0x9b,0xc0,0x82,0xae,0x49,0x4a,0x51,0x63,0x74,0xf2,0xec,0xfa,0x0d,0xbc,0x3a,0xde,0xf5,0x4b,0x4f,0x08,0x41,0x23,0x88 +.byte 0x14,0x88,0x6a,0x3a,0xf0,0x5f,0x0c,0x45,0x7f,0x65,0x7a,0x67,0xd8,0x17,0xed,0x04,0x47,0x60,0x0e,0x74,0x8f,0xfd,0x48,0xda,0xcd,0xe9,0xfe,0xf5,0x6f,0x43,0xcd,0xa5,0x05,0xa2,0x2e,0x78,0x5b,0xff,0xb8,0x6f,0x2e,0xfd,0x3e,0x4b,0xef,0xcf,0xe0,0x06,0x57,0x28,0xf4,0x2e,0x3b,0xb5,0x9e,0x3c,0xbd,0x63,0xa6,0x78,0x8e,0xd5,0xb8,0x81 +.byte 0x4e,0xf0,0xbf,0x14,0x65,0xc8,0x00,0x9f,0x0e,0x25,0x6a,0x7a,0x63,0x58,0xe4,0xe7,0xa9,0x82,0x16,0xc9,0x86,0x20,0x94,0x71,0x5b,0x9f,0x9b,0xc3,0xc5,0x32,0xb0,0x6c,0x2b,0x8c,0x54,0x67,0x36,0x94,0xb1,0x47,0x33,0xfd,0x9f,0x7c,0x7f,0x7e,0x08,0x51,0x1f,0x7e,0xbf,0x09,0x57,0xf3,0xaa,0x77,0x94,0xf3,0x20,0x1b,0x95,0xf6,0x04,0xb2 +.byte 0x09,0x9d,0xe2,0xbb,0x4d,0xfe,0x6b,0x99,0x06,0x58,0x40,0x84,0x90,0xfa,0x0e,0x9b,0x58,0x6d,0x02,0xbe,0x53,0x73,0xd1,0xc9,0xc7,0x31,0x2a,0x4a,0x12,0x2c,0xb6,0x1c,0xfb,0x49,0xc6,0x1a,0x93,0x33,0x1f,0x29,0x8b,0x94,0xe9,0x20,0xa7,0xe6,0x20,0xe6,0xbf,0xcd,0x5c,0xb6,0x52,0x42,0xf0,0x9c,0x6c,0x21,0x61,0x10,0xe7,0x0e,0x9f,0x33 +.byte 0x5f,0xc8,0xd0,0x20,0xe0,0x3e,0xc5,0x7a,0x10,0xf1,0xe5,0x19,0x52,0xcd,0xe1,0xa8,0x62,0x43,0x20,0x79,0xc3,0xac,0x93,0x27,0x02,0x8e,0x21,0x06,0xb9,0x66,0xd9,0xc8,0x40,0xe0,0xd1,0xf0,0x64,0x81,0xa6,0xc4,0x87,0x85,0x2b,0x92,0x1c,0xd6,0x48,0x85,0xb1,0xbe,0x78,0xf3,0x89,0xa2,0xf0,0xe5,0x39,0xac,0xbf,0x59,0x5d,0xf8,0x4f,0x74 +.byte 0x44,0x85,0x98,0x03,0x81,0x4b,0x7e,0x6f,0x5c,0xa1,0x11,0xd2,0xfd,0x30,0x7f,0xcd,0xd0,0xe2,0xcc,0xd4,0x80,0x16,0x46,0xa6,0x64,0x8b,0x9e,0xfc,0x2a,0x1a,0x65,0x5c,0x90,0x82,0xf9,0x23,0x48,0x11,0xf6,0xf2,0x50,0x3f,0xed,0x44,0xf2,0x9a,0x5a,0xca,0x1c,0x9a,0xd2,0x71,0x1b,0xd6,0x4c,0x51,0xf6,0x89,0x6f,0x65,0xe4,0x97,0x41,0x47 +.byte 0x1b,0x86,0xbd,0x83,0xa0,0xfe,0xac,0x16,0xe8,0xab,0x28,0x96,0x2f,0xa2,0x12,0x5f,0x7c,0xb3,0x18,0x2b,0x05,0x51,0x49,0xba,0xb4,0x1f,0x1e,0xe6,0x8a,0x82,0xca,0x33,0x7d,0xe6,0x8c,0x95,0xba,0x08,0x60,0x47,0x6d,0x79,0xac,0x0f,0xba,0x46,0xff,0xed,0xe0,0x34,0x03,0xfe,0xa7,0x85,0xe5,0x61,0xe3,0xe4,0x6c,0x5c,0x1b,0x9d,0x8a,0x54 +.byte 0x17,0xaf,0x08,0x4c,0x44,0x7f,0xb7,0xb0,0x6a,0x3a,0xff,0xb7,0xf6,0x10,0xc4,0x8f,0x31,0xd6,0x1a,0x25,0x27,0x35,0xca,0x87,0xa9,0x61,0x0b,0x35,0x96,0x89,0x0f,0x1a,0xbd,0x1e,0xf6,0xee,0xaa,0x95,0x16,0xe4,0x38,0x7b,0xb2,0xbe,0xea,0xc9,0x5a,0xcd,0x3b,0xb8,0x9e,0xd7,0x20,0xcd,0x3f,0x90,0xaa,0x8b,0x2a,0x42,0xed,0xab,0xc1,0x53 +.byte 0x83,0xc7,0xb8,0x3f,0xa1,0xb9,0xf4,0xf4,0xb0,0xe0,0x1f,0xb0,0xeb,0xa9,0x81,0x9f,0x31,0x67,0x1e,0x6c,0x96,0x9f,0x09,0xea,0x04,0xfe,0x37,0x22,0x87,0x60,0xb9,0x91,0x8f,0xa9,0x11,0xa3,0x68,0x5e,0x29,0x21,0x41,0xa3,0x02,0x08,0x82,0xd0,0x2b,0x66,0x6d,0x3c,0x46,0xc7,0x23,0x09,0x86,0x7f,0x53,0x11,0x3e,0x83,0x52,0x0a,0x4a,0xe4 +.byte 0x93,0xc6,0xc1,0x96,0x17,0x94,0x51,0x17,0x69,0xea,0x72,0xb8,0x85,0xde,0x7e,0x13,0x4a,0x08,0x26,0xae,0x31,0x19,0x0f,0x6f,0x48,0xa1,0xf2,0x57,0xa2,0x01,0x8e,0x84,0xee,0x63,0x23,0xc0,0x97,0x84,0xa2,0xf5,0x3f,0xeb,0x30,0x9e,0xdd,0xd2,0x43,0x24,0xa2,0x57,0xb7,0x57,0x86,0x26,0xa3,0xe6,0x6e,0xf2,0xcd,0xfb,0x7b,0x34,0x74,0x53 +.byte 0x07,0x95,0x51,0xb7,0xfd,0xf3,0xd1,0x83,0xbd,0x25,0xd6,0x2c,0x69,0x73,0x02,0x8e,0x76,0x19,0xea,0xb0,0x83,0x60,0x8c,0x53,0x9d,0x77,0x86,0x1e,0x65,0xc7,0x57,0x31,0x29,0xd9,0xa9,0x3a,0xb2,0x0d,0xd8,0xf4,0xf9,0x48,0x49,0xfb,0x3c,0x40,0x3d,0x1b,0xc4,0x8b,0x94,0x0e,0x50,0x7f,0xd5,0x39,0x5e,0x57,0x86,0xd1,0xba,0x0c,0x38,0x10 +.byte 0x01,0x5f,0x44,0xf3,0xe5,0xb0,0xf8,0xae,0x17,0xdf,0xd2,0xb3,0x10,0xc5,0x3b,0xfd,0xd9,0x68,0x90,0x9c,0x6c,0x26,0xdf,0x12,0x50,0xfa,0xbf,0x8b,0xce,0x68,0x80,0x8c,0x04,0x60,0xbf,0x34,0x81,0xbd,0x29,0xa3,0xa2,0xe4,0xe0,0x2d,0x25,0xb2,0xff,0x9f,0xd1,0x20,0x07,0xd5,0x8c,0x19,0xfa,0x3f,0x47,0xec,0xc1,0x8d,0xc9,0x36,0xf8,0x51 +.byte 0x4c,0xaa,0x40,0xe3,0x6a,0x21,0xd5,0xe6,0xa6,0xcf,0x8c,0xd9,0x10,0x47,0x66,0xfd,0x32,0x48,0x36,0x8f,0x14,0xed,0x09,0x80,0x50,0x27,0xaa,0xd5,0x1f,0x69,0xb8,0xe4,0x96,0x27,0x56,0x78,0xd6,0xd5,0x2d,0xf0,0x4f,0x14,0x30,0x17,0x9e,0x5b,0x69,0x8c,0x7c,0x1c,0x97,0x38,0x65,0x77,0x75,0x49,0xac,0x4b,0x06,0xda,0x74,0x11,0x86,0xbc +.byte 0xad,0x01,0xf2,0x03,0x29,0x5d,0xa7,0x74,0xd3,0x44,0xae,0x1d,0xbf,0xf9,0xc5,0x5b,0x83,0x8c,0xd6,0x84,0x8a,0x8e,0xe9,0xa6,0x08,0xf4,0x88,0x13,0xcb,0x16,0x45,0x13,0x9c,0xc7,0x75,0xa9,0xa7,0x55,0x04,0x91,0xd6,0xe9,0xd4,0xe5,0x65,0xa0,0x3a,0x53,0xa0,0xfc,0x62,0xce,0x91,0x01,0xb4,0x06,0x8b,0x10,0x79,0x6f,0x2c,0xd6,0x0a,0xa2 +.byte 0x31,0x8f,0x75,0x32,0x0e,0xfa,0x0d,0xec,0xfd,0x71,0x7f,0x74,0x97,0x30,0xe9,0xee,0x9f,0x04,0x21,0xb5,0xc9,0xd1,0x52,0x2a,0x0f,0x18,0xbe,0x3e,0xbb,0x98,0xaf,0x59,0x9b,0x85,0x79,0x5e,0x52,0x93,0x1c,0x42,0x67,0x67,0x6b,0xd5,0x41,0xaf,0xba,0x09,0x3a,0xb4,0x0e,0x97,0x22,0xe6,0xbb,0xe1,0x27,0xa1,0xf9,0xf0,0xcd,0xa2,0x3d,0xdb +.byte 0x81,0x2f,0x65,0x90,0xb7,0xe5,0xe5,0xce,0x1d,0x3b,0xfe,0x34,0x57,0xcd,0x3a,0xbd,0x19,0x59,0x23,0x12,0xf1,0xb6,0xf2,0xf7,0xc1,0xf5,0x1d,0x0b,0x46,0x8f,0x16,0x6a,0x81,0xfe,0xc1,0x97,0x8d,0x69,0x55,0x60,0xdd,0xf0,0x61,0xe9,0x22,0x30,0x72,0x1a,0x24,0x30,0xd7,0xbc,0x1c,0xfa,0x02,0x55,0xfc,0xb9,0x4b,0x0a,0xe4,0x90,0x90,0x3a +.byte 0xe3,0xce,0xd4,0xa0,0x7d,0x21,0x5a,0xf7,0x79,0x6e,0x03,0x4f,0x4e,0x93,0xad,0xc4,0x8e,0x9d,0x9f,0x8a,0x39,0x59,0x20,0xc1,0x5d,0x6a,0x4d,0x8f,0x69,0x78,0xea,0xba,0xde,0xc0,0x87,0xb2,0xf2,0x20,0xd6,0x7a,0x9c,0xf9,0x09,0x03,0x2a,0x4d,0xb9,0x10,0xfc,0xe5,0x05,0x90,0xed,0x45,0x4f,0x5f,0x7c,0x5d,0xfa,0xe6,0x0d,0x07,0xae,0xcc +.byte 0x21,0xc8,0x1c,0x7a,0xfb,0x1d,0xb9,0xe3,0x69,0xa1,0xb7,0x5f,0xb5,0x6a,0xb9,0x58,0x9d,0xcd,0x99,0xf8,0x38,0xbb,0xa0,0xfe,0xf8,0x41,0x51,0x72,0xce,0x76,0x89,0x59,0xa2,0xab,0xef,0xea,0xab,0x79,0xbc,0xda,0x73,0xdb,0x18,0xda,0x60,0x1b,0xc4,0xb7,0x4f,0xb3,0x86,0x21,0x2a,0xc3,0xec,0x7f,0x0e,0x89,0x16,0x0e,0xd2,0xbd,0xea,0x0e +.byte 0xcf,0xc1,0x4b,0x2c,0x97,0x69,0xce,0xd3,0x94,0xad,0x81,0xe9,0x70,0xf4,0xf8,0xe5,0x77,0xe6,0x92,0xe0,0x23,0x38,0xd3,0xc1,0xdd,0x2e,0x58,0x77,0xc5,0xc3,0x29,0x34,0x66,0x48,0xf9,0x75,0x3c,0x8a,0x6a,0xb8,0xbf,0xf8,0xba,0xf0,0xb9,0xa1,0x81,0x0b,0xa1,0xaa,0x17,0x34,0x1a,0xbb,0xa3,0xa2,0xba,0x21,0x45,0xc0,0x1d,0x57,0x11,0x4d +.byte 0x9b,0xd4,0x64,0x84,0xd7,0x0b,0xd6,0xfb,0x72,0x2c,0xdb,0xc3,0xe6,0x24,0xa9,0xf3,0x30,0x9f,0x21,0x05,0x1e,0xcc,0x48,0x58,0xed,0xfd,0xb2,0x34,0xe3,0xf7,0x7e,0x56,0xee,0xdf,0xa4,0xbb,0xb1,0xcc,0x7f,0x81,0x40,0xe9,0xdf,0x3f,0x82,0xc4,0x0d,0x14,0x9b,0x3b,0x80,0x15,0x24,0x6e,0xa4,0xce,0xfa,0x28,0xa7,0x7f,0x89,0xfb,0xc6,0x83 +.byte 0xe8,0x2a,0x70,0xfb,0x9c,0x75,0xb8,0xfd,0xec,0xbc,0xbb,0xf5,0xef,0x0a,0xa5,0x77,0x0b,0x38,0xa0,0x63,0xa5,0x71,0x12,0xc9,0xaa,0xc3,0xf9,0x72,0x30,0x45,0x4e,0x19,0x44,0x2d,0x09,0xf4,0xf1,0xa8,0xe8,0xde,0x58,0x87,0x70,0xa8,0x91,0x86,0xef,0x5d,0x02,0x90,0x55,0x63,0x99,0xde,0xd7,0xb7,0x5f,0x07,0x01,0xdf,0xb1,0xe5,0x55,0xf5 +.byte 0x87,0x69,0xd2,0x7a,0x71,0xbc,0x0e,0x4b,0x8b,0x98,0xf7,0xf6,0x0a,0x01,0xbb,0x9f,0x1b,0x15,0xb6,0x76,0xe0,0xc0,0x4b,0x5d,0x08,0xba,0xba,0x73,0x3f,0x36,0x5a,0x29,0xd7,0x7c,0xc2,0x87,0x03,0x75,0xff,0x26,0x21,0xae,0xbe,0x66,0x70,0xa2,0x99,0x11,0x35,0x49,0x78,0x7b,0x3a,0xfe,0x94,0xf7,0x37,0xe0,0x69,0x56,0x39,0xf7,0x3f,0x71 +.byte 0x39,0x74,0x75,0x32,0x1f,0xfb,0x3a,0x87,0x07,0xab,0xf1,0xed,0xe3,0xe2,0xbf,0x3f,0xb1,0x73,0x11,0xc9,0x34,0x4b,0xb1,0x1e,0x62,0x4e,0xc1,0x8a,0xae,0xcc,0xc7,0xb3,0xa7,0x70,0x01,0x73,0xad,0xb3,0xc3,0x59,0x70,0x14,0x31,0x94,0x9f,0x6b,0x18,0x11,0x50,0x52,0xc9,0xf0,0xf8,0x12,0x9d,0x7c,0x90,0x64,0x9d,0xd9,0x41,0xa6,0x45,0xe3 +.byte 0xc9,0x25,0x73,0xe7,0x48,0x9d,0xdc,0xe0,0x2c,0x71,0xd3,0x68,0xc5,0xab,0xac,0xe3,0x16,0x95,0xe3,0xa5,0xae,0x2f,0x57,0x60,0x4b,0x11,0x90,0xaa,0xe7,0x48,0xca,0xc7,0xde,0x2e,0x56,0x10,0x8e,0xc3,0x0a,0x7d,0x66,0xf1,0xc3,0xf7,0x2d,0xdd,0xfa,0x5e,0xb2,0xcb,0x99,0x4d,0xaa,0x4e,0x91,0xc1,0x94,0x60,0x27,0x33,0x82,0xa6,0x2a,0xba +.byte 0x05,0x32,0x33,0x0a,0x30,0x47,0xb0,0xac,0x68,0x7d,0xef,0x25,0x09,0xcf,0x51,0xf4,0x06,0x28,0x14,0xb2,0xb4,0x1f,0xaf,0x37,0xdc,0x70,0x88,0x4d,0xb9,0xfc,0x2d,0x61,0x25,0x13,0x1f,0x32,0x48,0x6d,0xeb,0x46,0x05,0x66,0x44,0xa1,0xec,0xce,0xe9,0x51,0xa9,0xba,0xf8,0xde,0x95,0x1b,0x20,0xe1,0x21,0x75,0x4b,0x25,0x7f,0x3c,0x16,0xf7 +.byte 0xe2,0xbe,0xeb,0xca,0x2b,0x77,0x92,0x16,0x32,0xe2,0x74,0x21,0x52,0x3f,0x08,0xba,0x41,0xb0,0xd3,0xd2,0xf7,0xf3,0x29,0xb6,0x10,0xfa,0xa5,0x29,0x35,0x29,0x21,0x0d,0xec,0xba,0x5a,0xf3,0x63,0x0f,0x9d,0xbc,0x42,0x02,0x46,0xe9,0x07,0x4a,0x9a,0xe8,0xd3,0x78,0x92,0xa2,0xe5,0x03,0xec,0xd4,0xe2,0xc8,0x8f,0x92,0x4a,0xae,0xbc,0xd7 +.byte 0xdf,0x4b,0x07,0x22,0x47,0xbd,0xb4,0xb5,0xa0,0x7e,0xfb,0x21,0x40,0x62,0xb1,0x6c,0x07,0x00,0x64,0xf6,0xb2,0x75,0x5c,0x29,0x84,0xff,0x38,0x0c,0xc8,0x08,0x38,0x92,0xf9,0xad,0xd7,0xcc,0xc3,0x1c,0x03,0x80,0x49,0x39,0x1c,0xdb,0xae,0x60,0x87,0x8a,0x5c,0xe9,0x17,0xbd,0x2b,0x0f,0xa5,0xa1,0xf9,0x0d,0x4b,0x8c,0x4d,0x39,0xda,0x15 +.byte 0x8c,0xc4,0x69,0xaf,0x2b,0xb0,0xa1,0xfd,0xd9,0x65,0x3c,0x87,0x4b,0xf2,0x5a,0xd7,0xd8,0xb9,0xef,0x78,0x67,0x30,0x4c,0x6c,0x92,0xc5,0x1e,0x15,0xf8,0xd9,0x74,0x1b,0x54,0x0c,0x10,0x1b,0xb5,0x11,0x13,0xd6,0xb4,0xc0,0x53,0x03,0x2c,0x4b,0xee,0xac,0xf9,0x87,0x17,0x51,0x35,0xb8,0x1a,0xdc,0x16,0x61,0x5b,0xe9,0x5a,0x43,0x94,0x42 +.byte 0x8f,0x68,0xbd,0xb6,0x52,0x00,0x63,0xa3,0x52,0x6e,0x5d,0x8e,0xe9,0x4f,0xf5,0x69,0xd8,0x4f,0xf5,0x5c,0x89,0x7e,0x1c,0xb9,0xdc,0x7b,0x92,0x8a,0x2b,0xfc,0xb8,0xad,0xbb,0xff,0x61,0x2e,0xc0,0xdc,0xfb,0x2f,0x78,0x2a,0x50,0x32,0x9b,0x4c,0xfd,0x9e,0xab,0x80,0x5c,0x7d,0xc8,0x6b,0xb3,0x2d,0x0a,0xfe,0x43,0xa2,0x10,0x10,0x79,0xbc +.byte 0x8c,0xa0,0x86,0x09,0x8c,0x8b,0x28,0xf3,0x8a,0xc9,0xeb,0xcb,0xb5,0x0e,0x56,0x19,0xae,0xe0,0xa1,0x22,0x72,0xc5,0xad,0x01,0x12,0x69,0xb6,0x52,0xb8,0xdd,0x36,0x25,0x21,0xae,0x73,0x06,0xc1,0xe0,0x23,0x20,0xe1,0x8e,0xe4,0x99,0xcd,0x86,0xca,0xf5,0x93,0x0e,0x6b,0xb8,0xba,0x18,0x4a,0x36,0xed,0xd0,0x37,0xc8,0xc7,0x8a,0xb2,0x63 +.byte 0x2e,0xa4,0x22,0x76,0x6f,0xf7,0xdd,0x81,0xd6,0x6f,0xcd,0xb9,0x65,0xf0,0x95,0x77,0xae,0xca,0x54,0x62,0xce,0x5d,0x47,0x9e,0x10,0x89,0xb9,0xfa,0x72,0x0a,0xef,0x24,0x17,0x45,0xb0,0xb0,0xc7,0x51,0x85,0xa1,0xb1,0x6a,0xd2,0xea,0x48,0xe2,0x6a,0x03,0x2a,0xdf,0xa8,0x0e,0x62,0xa2,0x1e,0xe2,0xa7,0x20,0x57,0xbd,0x73,0xeb,0xef,0x86 +.byte 0xc9,0xd4,0xfa,0x96,0xfe,0xfa,0xb3,0xc6,0xbf,0x7a,0x16,0xa2,0x43,0x73,0x56,0x71,0x78,0x32,0x3b,0xc1,0xd8,0x26,0xbf,0xde,0x39,0x5d,0xbd,0x3b,0xff,0xd7,0x4f,0xa0,0x67,0xa6,0x09,0x9a,0x81,0xfd,0xec,0x34,0x73,0xcd,0x90,0x15,0x8b,0x3e,0x2d,0x6f,0x7d,0xcc,0xf5,0x20,0x15,0x07,0xa8,0x2f,0xa5,0x5b,0x2b,0x4f,0xb8,0x2f,0x14,0x6c +.byte 0x52,0x78,0xbd,0x92,0x98,0xda,0x69,0x19,0x58,0x4c,0x76,0xe4,0x20,0xb2,0x48,0xa4,0x9f,0x2f,0x4c,0x9b,0x45,0x7f,0x7d,0x1c,0x46,0xe9,0x1e,0x43,0x26,0x49,0x39,0xb6,0x42,0x3a,0x4c,0x59,0x95,0x6b,0x28,0xd5,0xbe,0xa7,0x2e,0xd0,0x0c,0x00,0xa0,0x67,0x06,0x4e,0xee,0xae,0x7f,0xc2,0xb5,0x12,0x46,0x3f,0xb4,0x35,0x16,0x2a,0xda,0xbf +.byte 0x41,0x34,0xbe,0x30,0x2a,0x0f,0x7b,0x60,0xa6,0x8b,0xcd,0xae,0x7a,0x8c,0xd6,0x97,0xab,0x06,0x1e,0x14,0x87,0x45,0xa3,0x3c,0x9c,0xc4,0xa0,0x1d,0xee,0xf0,0xca,0xb8,0xa6,0x8d,0x37,0x92,0xad,0xbc,0xe6,0x1f,0x65,0x75,0xd3,0xbc,0x72,0x66,0xe2,0xff,0xbc,0x19,0x93,0xae,0xee,0xd0,0x63,0x6d,0x97,0x6f,0x57,0xf3,0x77,0xcd,0xe3,0x57 +.byte 0x3f,0x00,0xc8,0xe1,0x63,0x83,0x15,0x84,0xc6,0x08,0xdb,0x03,0xc9,0x27,0x47,0x4c,0x17,0x12,0x40,0x6e,0xac,0x74,0x6f,0x3c,0x22,0x57,0x36,0x29,0xbb,0x6a,0xc7,0x5a,0xfe,0x60,0x1c,0x0f,0x32,0x95,0x1b,0xf2,0x3c,0xed,0x04,0x87,0x4c,0x48,0xc7,0x63,0x79,0x24,0xb3,0x12,0xbf,0x55,0x3b,0x32,0xbf,0x52,0x4e,0x1e,0xc1,0x1f,0xf2,0xfd +.byte 0xe6,0xb8,0x56,0x38,0x0e,0xd2,0x75,0x3d,0x41,0x99,0x0c,0x7a,0x12,0x3f,0xa7,0x3a,0x79,0xa0,0xd7,0x6f,0x47,0x97,0x7e,0x9e,0xf6,0xfe,0x29,0xc0,0x16,0x34,0x38,0x80,0x2f,0xde,0x65,0x79,0xc9,0xfd,0xa0,0x84,0xc3,0x39,0xbc,0x0b,0xbe,0x18,0xba,0x0d,0xe3,0x35,0x11,0xba,0x9f,0xde,0x5d,0x0c,0xae,0x8e,0x0c,0x0f,0x66,0x9c,0xe6,0xfc +.byte 0x3d,0xdb,0x46,0xf1,0x84,0x57,0x62,0xb0,0x00,0xd4,0x8c,0xaa,0x93,0xeb,0xf7,0xa7,0x8e,0x82,0xba,0x89,0x67,0xbb,0x38,0xb0,0xb6,0x13,0x0c,0x96,0x22,0x9c,0x6a,0x86,0xea,0x83,0xad,0x5f,0x7b,0x3a,0x28,0xd8,0x53,0x90,0x2d,0xab,0xc9,0xbe,0x99,0xfb,0x68,0x42,0x27,0xf6,0xe3,0x5a,0xaf,0xf3,0xd6,0xee,0xb6,0xa2,0xe0,0x32,0x3c,0x1d +.byte 0xd4,0x3c,0x2b,0x58,0xc2,0x4f,0x3d,0x20,0x39,0xdb,0x80,0x89,0x20,0x20,0x7b,0xe6,0x1d,0xd0,0xa2,0x1a,0xd4,0x88,0xc9,0xe0,0xb9,0xf6,0xb2,0xa1,0xcd,0xf2,0x67,0x60,0x44,0xd8,0xce,0x6a,0xe2,0x52,0xc3,0xf3,0x61,0xa3,0x14,0x58,0xd6,0xe5,0x43,0x4a,0x8d,0xcc,0x4f,0xf8,0x17,0xdd,0xd2,0x5d,0xd5,0x5a,0x86,0x8e,0xc4,0x74,0xdc,0x1b +.byte 0xad,0xca,0x63,0x75,0xf0,0x43,0x41,0x16,0x02,0x49,0x6a,0x3a,0xe3,0xb9,0xa9,0xdc,0xfb,0x99,0xbc,0x60,0x0d,0xdb,0xa0,0xcf,0x27,0xaa,0xd5,0xc5,0x42,0x0b,0x02,0x00,0x43,0xaf,0xb5,0x4f,0xe1,0x88,0xa1,0x9d,0xca,0xfb,0x9f,0x1f,0x08,0x9c,0x66,0x23,0xca,0x4b,0x88,0xb4,0x40,0xdc,0xd3,0xd3,0x1a,0x64,0xe3,0x9b,0x43,0xea,0x20,0x90 +.byte 0x30,0x2e,0xc4,0x75,0xc5,0x52,0xc5,0x7c,0x0e,0x35,0x56,0xf5,0x1f,0x50,0x2b,0xf6,0x28,0x93,0x6f,0xde,0x10,0xc6,0x49,0x2b,0x77,0xb1,0x6d,0xce,0xfd,0x37,0xd4,0x8d,0x11,0xed,0x88,0x1e,0xca,0x68,0x0c,0x4e,0x38,0x7f,0x0f,0xab,0x6f,0x8d,0x1c,0x7d,0xd4,0x7d,0xd8,0xa9,0x5c,0x24,0x5a,0x7d,0xf4,0x5b,0xb6,0xb7,0x28,0xc7,0x93,0xd6 +.byte 0xa9,0xe5,0xac,0x62,0x16,0x9c,0x4e,0x5c,0x24,0xa0,0x2a,0x76,0xce,0x7d,0x5c,0x4b,0xbe,0xbc,0x83,0x5c,0x9a,0xc8,0x06,0x7b,0x1e,0xac,0x98,0x67,0x17,0x32,0x94,0xda,0xd1,0x8b,0x58,0xad,0x8e,0x26,0x03,0x81,0x7c,0x48,0xd1,0x83,0x03,0xba,0x6c,0x51,0xe9,0x25,0x82,0xd2,0xb9,0x7f,0xd8,0x33,0x3f,0x77,0x29,0x45,0x41,0xa9,0x17,0x3d +.byte 0x62,0xc6,0xd2,0xfb,0xd1,0x24,0xc7,0xee,0x10,0xc0,0x64,0xc3,0x46,0xc6,0x2b,0xe8,0x9c,0xc8,0x99,0x23,0x77,0xa9,0xb5,0x12,0xc4,0x53,0xde,0xbc,0x20,0xb2,0xc4,0x12,0xdb,0xc2,0x0b,0x63,0x70,0x6a,0x41,0x31,0x65,0x48,0xa0,0xfc,0xbc,0xd6,0x3f,0x55,0x18,0x17,0x65,0x35,0x58,0xe3,0x33,0xac,0xaf,0xca,0xb2,0x51,0xc1,0xcc,0x60,0x38 +.byte 0x94,0x8f,0x13,0xb8,0xcc,0x8c,0xc4,0x12,0xea,0xd5,0x39,0xd3,0x46,0x55,0x17,0x27,0x7a,0x07,0x01,0x02,0x74,0xa6,0xe7,0xc8,0xa7,0xd0,0x76,0xc8,0x5e,0x57,0x50,0xc5,0x19,0xf1,0x95,0xa3,0x52,0x10,0xa3,0x1e,0xcd,0xb1,0x05,0x64,0xe5,0x69,0xd9,0x5e,0xfc,0x71,0xef,0xe1,0xf6,0xb3,0xa7,0xf7,0xf9,0x71,0xfd,0xbb,0x5b,0x2b,0x7a,0xd2 +.byte 0x72,0x7c,0xc7,0x73,0x89,0xf7,0xe2,0x0b,0xcd,0x05,0x4f,0x0c,0x10,0xed,0xcc,0xda,0xb6,0x81,0x19,0xe6,0x2b,0x06,0x66,0xef,0xc5,0xfd,0xd5,0xc6,0x66,0x20,0x86,0x2a,0x4f,0x05,0x49,0xf1,0x54,0x4a,0x6e,0x1d,0xcd,0xad,0x18,0xeb,0x6c,0x58,0xd6,0x75,0x3e,0x62,0x48,0xab,0xea,0x1f,0x7f,0x05,0x45,0x6e,0x75,0x2a,0x5e,0x97,0x5b,0xde +.byte 0x5a,0x99,0x42,0xc1,0x62,0xab,0xc7,0x01,0x4d,0xac,0xd6,0xdc,0xc9,0x71,0x24,0xd1,0x33,0xe2,0x4b,0x1f,0x09,0x04,0x1f,0x0d,0x42,0x45,0xcf,0x7c,0xa0,0xee,0x48,0xfd,0x8b,0x1f,0xaa,0x50,0x48,0x6d,0x8e,0x34,0x76,0x09,0x23,0x8a,0x40,0x0d,0x5d,0xc1,0x2a,0xba,0x5f,0x9c,0x86,0xfb,0x37,0xdf,0x24,0xff,0x27,0x88,0xbf,0xf6,0xa4,0xc3 +.byte 0xf0,0xd3,0x02,0xa8,0x7c,0x6d,0xc4,0xc5,0x14,0xc3,0x64,0x28,0xa8,0x05,0x33,0xc2,0xda,0x12,0xfc,0xbe,0x0d,0x8e,0xf4,0xf5,0x48,0x5a,0x8e,0x8a,0xd2,0x50,0x7c,0xc0,0xbc,0xde,0xdb,0x9a,0xf6,0xa0,0x92,0x8d,0x19,0xbc,0x5a,0xdc,0xbf,0xfb,0x13,0x8f,0x41,0x09,0xba,0xd9,0x0b,0x91,0x7a,0xdb,0x92,0x10,0xac,0xf2,0xb5,0x76,0xb5,0x7d +.byte 0x80,0x04,0xd6,0xec,0x98,0x09,0x5f,0x63,0x0d,0x58,0x00,0x8a,0x07,0x76,0xfa,0xe6,0x6e,0xdf,0xbf,0x73,0xe5,0xc9,0xe5,0x12,0x44,0x58,0xf9,0x2e,0xb1,0xe6,0x2c,0xf5,0x0d,0x94,0xa9,0x51,0x0d,0x01,0x03,0xab,0x79,0xf9,0xee,0x7e,0x10,0x4b,0xcb,0x20,0xbb,0x01,0x19,0xd6,0x12,0xd1,0xac,0x96,0xe9,0x0e,0xde,0xbf,0x7e,0x80,0xf6,0x58 +.byte 0xc9,0xec,0xaf,0xf7,0x2d,0x98,0xbc,0x2b,0xb1,0xf1,0x34,0x94,0x39,0x8e,0xbc,0x13,0x13,0x41,0x8f,0xf3,0x4e,0x4e,0x6b,0x2a,0xaa,0xea,0x70,0x5c,0xf8,0x42,0xf7,0xbc,0xfd,0xbd,0x6f,0x62,0x1b,0xcb,0xb9,0x39,0xdc,0x6a,0x47,0x81,0xaf,0xff,0x5b,0x7e,0x80,0xb9,0xbf,0xfa,0x15,0x7e,0xd1,0xc3,0xb2,0x80,0x99,0xbd,0xb9,0x30,0x8d,0xb5 +.byte 0x43,0x6b,0x7a,0x31,0xaf,0x45,0xf7,0xdd,0x21,0x8f,0x54,0xb1,0xf6,0x2d,0x7d,0x96,0x63,0x4a,0x93,0x98,0x37,0x7f,0x48,0x02,0x4b,0x0f,0x71,0xe4,0x70,0xce,0x66,0x6a,0x36,0xde,0x58,0x84,0x69,0xd6,0xbd,0x1a,0x9a,0x8b,0xc5,0xda,0x97,0xc5,0xe1,0x4e,0xec,0x9b,0x7a,0x65,0xe0,0xa5,0xdd,0x39,0x3c,0x9f,0xfd,0x45,0x17,0x4c,0x2f,0xb4 +.byte 0xb1,0xb1,0x42,0xe8,0x88,0x75,0x9f,0xb4,0xc1,0xdf,0x44,0xf9,0x4f,0x9a,0xf7,0x3d,0x35,0xc5,0x32,0xbe,0x43,0xd0,0x0d,0x71,0x4e,0x21,0xbf,0x31,0x99,0x73,0x5a,0x84,0x45,0x2e,0x00,0x8b,0x42,0x2b,0x14,0x86,0x51,0xcb,0xa0,0x98,0xa9,0x68,0x8d,0xdb,0x58,0x3d,0x73,0x9d,0xf9,0x2d,0x86,0x76,0x62,0xcb,0x93,0x29,0x48,0x92,0x38,0xfb +.byte 0xeb,0x1d,0xda,0xc3,0x10,0x1f,0x32,0x68,0xee,0xcb,0xb7,0x8a,0xcb,0xcb,0xe0,0x37,0x31,0xe8,0xad,0x7b,0x4a,0x29,0x2c,0x10,0x9e,0xdf,0x86,0xeb,0x13,0x0c,0xab,0xa4,0x30,0x36,0xf0,0xe0,0xac,0x14,0x41,0xa4,0xf4,0xf8,0x44,0x95,0xe8,0x8f,0x28,0xc2,0x35,0x0a,0x44,0x61,0xc7,0x60,0xc5,0x3b,0xc4,0x1d,0x67,0xfd,0xac,0x0b,0x2e,0x49 +.byte 0x62,0xea,0x17,0x3c,0xf5,0x4b,0xbe,0xba,0xba,0x42,0x02,0x0d,0x13,0xf1,0x15,0xff,0x2e,0x47,0x46,0xd1,0x27,0x64,0xb7,0x35,0x28,0x31,0xb5,0xde,0x1e,0xf9,0x26,0x6c,0x04,0x3c,0x0e,0x06,0x9d,0x4d,0xc7,0x1c,0x97,0x67,0x2c,0x6d,0x36,0x0d,0x4c,0x61,0x08,0xe9,0xbd,0x04,0x1d,0x8d,0xfb,0x0c,0x03,0x3d,0xb4,0x40,0xd5,0x1b,0x69,0x3b +.byte 0x68,0xcf,0x46,0x27,0xcf,0xb3,0xda,0x1e,0xdc,0x85,0x6f,0x4f,0x6b,0x09,0x9d,0xe9,0x6c,0x73,0x40,0x27,0xc9,0x8b,0x12,0x97,0xea,0x34,0xd7,0x51,0x32,0x90,0x4e,0xd7,0x91,0x41,0x3a,0xee,0xbc,0x97,0xb0,0x4a,0x39,0xdb,0xe3,0xe5,0x12,0x73,0xbf,0x5d,0x68,0xe0,0xc6,0x7c,0x6f,0x0d,0x14,0x1c,0xaa,0xde,0x29,0xb7,0xc7,0xa5,0x90,0x62 +.byte 0xe9,0xc5,0x75,0x16,0xe6,0xc0,0x9d,0xc5,0xb8,0xd6,0xfa,0xb0,0x72,0xb7,0x27,0xa6,0xa8,0x3f,0xbf,0x18,0x8b,0xaa,0x94,0xb3,0x47,0x50,0x2f,0x1c,0x49,0xab,0x46,0x38,0x7f,0x3e,0xf3,0xf1,0xb8,0xb3,0x44,0xaa,0x1f,0x76,0xb4,0x67,0xff,0xcf,0x7c,0x4b,0xa9,0xe1,0x62,0x93,0x4d,0x3e,0x96,0xdb,0x56,0xf6,0x26,0x5d,0x95,0x4c,0xfa,0x5f +.byte 0x06,0x2b,0x5c,0x33,0x2d,0xf8,0xfa,0x68,0x8a,0xed,0x28,0x2a,0x6e,0x95,0x86,0x59,0x71,0xef,0x86,0x47,0x60,0xec,0x35,0x79,0xa9,0x98,0x2d,0x6e,0x20,0x26,0x3a,0x21,0xec,0x59,0x15,0x65,0xcd,0xb9,0x91,0x19,0x6e,0x74,0x89,0x3b,0x10,0x00,0xab,0x8a,0x45,0x23,0x20,0x94,0x03,0x02,0x77,0xb7,0xcf,0x9c,0x71,0x18,0x0c,0x5b,0x40,0x62 +.byte 0x3b,0x8f,0xc9,0xf6,0x4c,0x8f,0x60,0x66,0x05,0x87,0x05,0x90,0xd4,0x08,0x76,0xd7,0xa3,0xb6,0x37,0xa8,0x83,0x05,0xb2,0x48,0xe9,0x24,0xc4,0xfb,0x79,0xa1,0xce,0xac,0x29,0x13,0x4e,0x72,0xdf,0xad,0x9e,0x5b,0xcd,0x9c,0x39,0x1d,0x3e,0x57,0x9d,0xf2,0x96,0x13,0xa4,0x79,0x4c,0x76,0x40,0x03,0xb3,0x18,0xcf,0xd7,0x45,0x2a,0x2d,0x07 +.byte 0xe5,0x2e,0xb7,0x74,0xda,0x94,0xea,0x32,0x74,0xb0,0xca,0xf4,0xd1,0x09,0x97,0x3c,0x69,0x17,0xf6,0x5b,0x13,0x7b,0xb8,0xb1,0xd9,0x0e,0x12,0x44,0x29,0xea,0x26,0xd8,0xaa,0x9d,0x26,0x87,0x0c,0x89,0x4e,0xec,0x29,0x48,0x43,0x66,0x21,0x0b,0xab,0xce,0x40,0x57,0x4c,0xa7,0xdd,0x56,0xde,0xac,0x5c,0x62,0xea,0xc4,0x54,0x4a,0xe0,0x8d +.byte 0x54,0xc8,0x65,0x44,0xcc,0x6f,0x2a,0xcd,0x0e,0xb3,0xad,0xa3,0x30,0xd1,0xb7,0x19,0x70,0x51,0xd3,0x9a,0xcf,0xe5,0x42,0x6c,0xa1,0xc1,0x0f,0xe2,0xda,0x86,0xb4,0x51,0x50,0x62,0xdc,0x51,0x3f,0xd2,0xff,0xde,0x7f,0x38,0x5a,0xff,0x2d,0x21,0x1d,0x59,0xb9,0xdd,0xde,0x83,0x13,0xb0,0x25,0xf5,0xbb,0x11,0x47,0x4a,0xaf,0x81,0x15,0xa0 +.byte 0x39,0x5b,0x30,0x17,0x2b,0xbf,0x5a,0x03,0x60,0xb6,0xbb,0x86,0x9f,0x50,0x45,0x15,0x0b,0xba,0x42,0xf4,0x3d,0x05,0x62,0xcd,0x9b,0x8c,0xcf,0x93,0x5c,0x33,0x6c,0xea,0x4b,0xd0,0x1d,0x91,0x3e,0xbf,0xa4,0x9d,0x7c,0x2c,0x87,0x9c,0x42,0x9f,0x03,0x98,0x03,0x1b,0x98,0x66,0x4f,0x8f,0x29,0x12,0xc5,0xb5,0xec,0x81,0xf8,0xb2,0x5e,0x44 +.byte 0x4f,0xb0,0x31,0xe4,0x2a,0x73,0x83,0xac,0x5a,0x3f,0xfa,0xcf,0x8b,0x7c,0xa3,0xf1,0x01,0x14,0xa1,0xca,0x60,0x8d,0x6a,0x6c,0x04,0x31,0xcc,0xba,0x12,0xe0,0x4e,0xaf,0x01,0x8d,0xf5,0x60,0x23,0x79,0x8a,0x80,0xcc,0x32,0x31,0x69,0x83,0xb6,0x83,0xaa,0xd9,0x3b,0x86,0x4a,0xd8,0x10,0x28,0x09,0x82,0x36,0xee,0x6a,0xc0,0x80,0x3f,0xfd +.byte 0xb1,0xd2,0xde,0x34,0xf9,0x4c,0x87,0x5b,0xdd,0xd0,0xb6,0x2d,0x99,0x69,0xd3,0x2c,0xb7,0x0b,0xfc,0x16,0x88,0x7b,0x80,0x21,0xbc,0x30,0x7b,0x56,0xe5,0x7b,0x41,0x43,0x4d,0xaf,0x40,0x5e,0x74,0x14,0x17,0x66,0x32,0xd6,0x81,0x53,0x94,0x35,0xf0,0x0f,0x4f,0x99,0x54,0x9a,0x38,0xc0,0x2a,0xa9,0xd3,0x53,0xdd,0x9a,0xc5,0x29,0x18,0x62 +.byte 0xf6,0x93,0xa3,0x02,0xf0,0x13,0xcb,0xcb,0xcc,0x64,0x0b,0x00,0xf4,0x43,0x03,0x26,0xe6,0x2f,0x39,0xa1,0x83,0xea,0x94,0x2f,0xde,0x61,0xbd,0xe1,0xbe,0x08,0xf8,0xd4,0x01,0x6e,0x61,0x98,0x01,0x39,0x4b,0x93,0x39,0x38,0x34,0x58,0x24,0xc1,0xf5,0x03,0x05,0x15,0x9c,0xf0,0x30,0x20,0x24,0xd4,0x7e,0x73,0xb2,0x60,0x06,0x3b,0xd3,0xb7 +.byte 0x2c,0x47,0x17,0xc4,0x79,0x4e,0x45,0x0b,0x89,0xf0,0xfc,0x42,0xa0,0x0d,0x80,0xd2,0x44,0x36,0x70,0xaa,0x9e,0x72,0x85,0xa8,0xc8,0x1d,0x35,0x28,0xc3,0x5a,0x72,0x4c,0x06,0x6d,0xf4,0xae,0x54,0x86,0x9a,0x32,0x3c,0xa5,0x06,0x63,0xc1,0x37,0xbb,0xaf,0xa6,0xae,0xce,0x94,0xea,0x9c,0x4a,0x9e,0x56,0xb1,0xc3,0x84,0x84,0xef,0x3d,0xe9 +.byte 0x24,0xf4,0xbf,0xc3,0xf6,0x45,0x74,0x4e,0xbb,0x86,0xd3,0x7f,0xab,0x19,0xe3,0x63,0x67,0x81,0xb6,0x18,0xc8,0x78,0x8e,0xf8,0x83,0x5f,0xfb,0x2e,0x49,0x97,0x2b,0x34,0xbb,0x76,0x2e,0x93,0xec,0xe9,0x7f,0x4d,0x7e,0x52,0x0c,0x92,0xbc,0x6d,0x3a,0x34,0x9b,0x5e,0x61,0x6f,0xea,0x45,0xe7,0x5c,0x34,0x6b,0xcb,0xc0,0x31,0x61,0x64,0x9d +.byte 0xad,0x7f,0x98,0xca,0xfe,0x3d,0xad,0xf7,0x21,0xf6,0x4c,0x2a,0x21,0x07,0x80,0x25,0xa2,0xea,0x26,0x85,0xc3,0xb1,0x74,0x04,0x7f,0xd1,0x1c,0x1b,0xa5,0x7e,0x96,0x45,0xfe,0x6f,0xa6,0x34,0xdf,0x94,0x1f,0x7e,0xfb,0xcf,0xfd,0x29,0xeb,0x3a,0xb0,0xfc,0xb6,0xd5,0x80,0x8b,0x37,0x71,0xfb,0x70,0x19,0x30,0xc4,0x6f,0xa0,0x5b,0xae,0x5b +.byte 0x75,0x51,0x98,0x89,0x9e,0xf0,0xf5,0x79,0xaf,0x1c,0x07,0xb6,0x5e,0xcf,0x34,0x70,0x0f,0x0b,0xbc,0x0a,0xa6,0x40,0xc7,0xf8,0xe4,0xef,0xe6,0xb7,0x94,0x6e,0x98,0x75,0x22,0x73,0x5c,0xca,0xcc,0xfb,0x09,0x2f,0x9c,0xfe,0x49,0x0f,0xd3,0x65,0xfe,0xd4,0xf0,0x9b,0xeb,0x8c,0xd7,0x8c,0xff,0x4b,0x18,0x3e,0xf3,0x9d,0x3f,0xf5,0x83,0xd6 +.byte 0x1d,0x3d,0x23,0x79,0x0f,0xae,0x17,0x62,0x33,0x07,0xc3,0xac,0x98,0x07,0x72,0x9b,0xd9,0x26,0x5c,0x1a,0x9d,0xf1,0x35,0x92,0xf9,0x38,0x17,0xf8,0xee,0x26,0xf9,0x64,0xfc,0x5e,0x8b,0x80,0xce,0xdb,0x64,0xf7,0xde,0x20,0x19,0x5c,0x26,0xf6,0x23,0xd6,0x99,0x8e,0x75,0x77,0x3d,0x17,0x0f,0xea,0x31,0x5a,0x65,0x32,0x1b,0x78,0x78,0xe4 +.byte 0xfe,0x76,0xf8,0xa7,0x81,0x34,0xf1,0x2a,0x13,0x22,0xe4,0x8a,0xe1,0x42,0x5a,0x3f,0x44,0x22,0xeb,0x7e,0xcd,0x20,0xcd,0xf7,0x44,0x1a,0x87,0xb9,0x7a,0x0e,0xf8,0xcb,0xb5,0x0a,0x1f,0x6a,0xe6,0x0b,0x70,0x59,0x38,0xa3,0x6b,0x64,0x7b,0x61,0xfe,0xbd,0xa4,0xb7,0x89,0x7a,0x28,0x70,0xfe,0x9d,0x64,0x2c,0xe9,0xc4,0xc9,0x2f,0xc8,0x3e +.byte 0xfa,0x70,0xce,0x21,0x9b,0xa8,0x10,0x6a,0x16,0xdd,0x28,0xce,0x4e,0xd4,0x6c,0x8c,0x47,0x83,0x13,0x8b,0xec,0x1c,0x76,0xdc,0x4d,0x81,0x25,0x08,0xd8,0xf9,0xde,0x66,0x1d,0xe2,0xf3,0xe7,0xdc,0x3e,0x3c,0x6b,0x98,0x25,0x55,0x88,0xe8,0xda,0x7f,0x16,0xe5,0x7d,0xad,0x8a,0x36,0x00,0xf0,0x68,0xc5,0xe4,0xfc,0xe9,0xe3,0x54,0xeb,0x4c +.byte 0xd1,0xff,0x07,0x1a,0x5c,0x5e,0xd4,0xb1,0xff,0x7d,0xfc,0x5b,0x34,0x42,0x95,0x89,0x01,0x24,0x8e,0x30,0xec,0xfe,0x67,0xf8,0xe2,0xaa,0xd5,0x6a,0x9f,0xe3,0xc3,0xa5,0x53,0x7f,0xd3,0xf4,0x98,0xa5,0x47,0x11,0xad,0xac,0xea,0xba,0x20,0x34,0x03,0x65,0x8c,0xec,0xb6,0xa3,0x2b,0xf6,0x93,0xe1,0xc8,0xad,0x34,0x30,0x8f,0x0e,0x3b,0xf6 +.byte 0x63,0xc6,0x58,0xc3,0xe8,0xa3,0x85,0xf8,0x24,0x8e,0x21,0xb9,0x36,0x7c,0xe0,0x11,0x64,0x31,0x6a,0x6a,0xa2,0xad,0xd3,0x94,0xbb,0x13,0x5b,0xb4,0xe9,0xee,0x09,0xdc,0xfe,0xb2,0xad,0xa8,0x43,0x02,0xba,0x85,0x1f,0x56,0xcb,0xb5,0x95,0x32,0xcc,0x7e,0xe0,0x00,0xde,0xfa,0x3f,0x91,0x71,0xde,0x21,0x19,0xff,0xc9,0x97,0x43,0x95,0xd8 +.byte 0x0d,0xc2,0x8a,0xde,0xcc,0x34,0x48,0xf4,0x35,0x41,0xb8,0x56,0x52,0xce,0x06,0xb3,0xcf,0xd4,0xae,0x7a,0xcb,0xe9,0xed,0x37,0xd6,0x76,0xa0,0x77,0x04,0xfb,0xb7,0x41,0x25,0x38,0xe1,0xd1,0xb5,0xde,0x21,0xe0,0x64,0xd8,0x83,0x13,0x7b,0x4b,0xb8,0xc9,0x12,0x02,0x51,0x56,0x52,0xe9,0x1c,0x49,0x48,0x83,0xd0,0x99,0x73,0x60,0x4a,0x4c +.byte 0x7d,0x8d,0x43,0xf9,0x06,0xa4,0xbb,0x0e,0xb6,0xdd,0x5f,0xc7,0x5e,0x35,0xcb,0xa0,0xc1,0x66,0x4a,0xe3,0x4a,0xa9,0xec,0xa4,0x5a,0xd7,0xd6,0xea,0xa5,0x20,0xa6,0xc3,0x1b,0xc0,0xa8,0xd1,0xf1,0x08,0x05,0xab,0x40,0x14,0x35,0xf2,0xdd,0x0f,0xc5,0xda,0xb3,0xa6,0xb1,0x07,0x36,0x17,0x5d,0xe9,0x96,0x23,0x96,0x46,0xd4,0xa7,0x71,0x64 +.byte 0x13,0x72,0x4e,0x83,0xe0,0x65,0x40,0x41,0xaf,0xb6,0x5b,0x00,0xa2,0xab,0x09,0x7f,0xa5,0xd5,0xc2,0xd9,0xc0,0x68,0x2a,0x44,0xdc,0x43,0x37,0x81,0xb8,0x88,0x4c,0x85,0x1b,0xb1,0x83,0xb2,0x56,0xa3,0x91,0x0f,0xa6,0x70,0x3f,0xbd,0xe9,0xda,0x40,0x9b,0xf5,0x9e,0x53,0xed,0x5f,0x84,0x70,0xd2,0x4c,0x1c,0xb6,0x87,0xd6,0xbb,0x3b,0xec +.byte 0xe5,0x35,0x1b,0x2c,0x9b,0xf1,0xe5,0xf8,0x0e,0x07,0x98,0xcc,0x58,0x38,0x57,0x74,0xdb,0x0e,0x08,0xd9,0x56,0xe8,0x08,0x63,0x3d,0x94,0x4a,0xdc,0x59,0xfc,0x3d,0xc1,0xa4,0x36,0xc3,0xe8,0xbe,0x4b,0xd7,0x47,0x69,0x33,0xb8,0x72,0x30,0x59,0x28,0x4e,0xf1,0xc1,0x25,0xa3,0xa4,0xe3,0x12,0xcf,0x31,0xf6,0xf8,0xae,0x31,0x06,0x76,0x92 +.byte 0x64,0x87,0x8e,0xb0,0x9f,0x1d,0xf4,0x56,0x73,0xc5,0x5d,0xbb,0x80,0x0d,0x19,0x3f,0x56,0x8c,0xe4,0xd6,0x8a,0x9a,0x62,0x26,0x4e,0x8a,0x21,0x7d,0x72,0x34,0x87,0xb6,0x7e,0x49,0xdc,0xfd,0x27,0x95,0xba,0x25,0xdd,0xf4,0x58,0x2b,0x11,0x3f,0xd1,0xd7,0x13,0x1d,0xb0,0xec,0xe2,0x55,0x5e,0x72,0xea,0x36,0xc9,0xd8,0x61,0xc0,0xee,0xc4 +.byte 0x9f,0x35,0x7e,0x73,0xd3,0xf6,0xd7,0x6a,0xce,0xd6,0xd2,0x80,0xe6,0x10,0x4b,0x65,0x18,0x6f,0xab,0xd3,0x41,0xbb,0x39,0x36,0x95,0x84,0x3c,0x99,0x9a,0xfd,0xf0,0xa3,0x46,0xdf,0x48,0x7c,0xd5,0x57,0x9d,0x10,0x59,0xca,0x70,0xc4,0xb5,0xbe,0x47,0x9e,0xca,0x2b,0x49,0x54,0xbb,0x34,0x8e,0x39,0xf4,0xf8,0x8c,0xa5,0xa1,0xab,0xf6,0x51 +.byte 0xd8,0x22,0x9a,0xd5,0xc2,0x12,0xf8,0x26,0xc6,0x19,0x2a,0xa6,0x6e,0xab,0xd3,0xac,0xd1,0x21,0x97,0x67,0x3e,0x39,0x90,0x5c,0x37,0x65,0x7b,0x06,0x54,0x1a,0xb8,0x2a,0x56,0x02,0xa3,0x92,0xee,0xf3,0x38,0x53,0x25,0x4d,0x5d,0x0a,0x37,0x9e,0xbb,0xf4,0xb2,0x13,0x77,0xbb,0x93,0xa9,0x85,0xf2,0x15,0xfd,0x71,0x17,0x00,0x89,0xe7,0x7b +.byte 0xa9,0xdc,0x10,0xd9,0xc7,0x44,0xa5,0x7b,0x3f,0x2f,0x1e,0x6d,0xa7,0xfe,0x0c,0x0e,0x83,0x3e,0x38,0x27,0xa7,0x4e,0x85,0x3c,0x84,0xfe,0x95,0x48,0x85,0x09,0x75,0x62,0x1d,0xa4,0x64,0x54,0xed,0x89,0xd5,0x28,0x62,0x52,0x18,0xef,0xf0,0x57,0x05,0x30,0xf0,0xce,0x87,0x05,0x0d,0x81,0xe8,0x2a,0x3c,0x8c,0x22,0xe1,0x4b,0x32,0x42,0x9d +.byte 0x02,0xc5,0xe4,0x6a,0xa4,0x4d,0x9b,0xc4,0x82,0x47,0xdc,0x61,0xbd,0x82,0x01,0xcd,0x5e,0x64,0x9f,0x4c,0xe3,0x31,0xe9,0x48,0x53,0x85,0x07,0xc7,0x47,0x49,0x35,0xd8,0x6a,0xab,0x4f,0x73,0x3f,0xd3,0xde,0x87,0x29,0xac,0xbc,0x35,0x0a,0xb4,0x74,0xc2,0xa7,0x0b,0xb1,0x93,0x92,0x29,0x3b,0x3e,0xa8,0xde,0x12,0x49,0x75,0xda,0x16,0x27 +.byte 0x52,0x2f,0x93,0x23,0xd6,0xf7,0x10,0xfe,0x1e,0x93,0x97,0x06,0x9d,0xef,0x4f,0xe4,0x3d,0x5d,0xde,0x30,0x70,0x3d,0x78,0x3a,0x30,0x00,0x9b,0x77,0x12,0x90,0x62,0xda,0x32,0x9b,0x6a,0x47,0xd7,0x0f,0xee,0x75,0x18,0xdd,0x4d,0x8a,0xe2,0x35,0x5b,0x60,0xb8,0xf9,0xa4,0x6c,0x93,0x3e,0x47,0x23,0xed,0x7a,0xe2,0x58,0x42,0xd6,0x3f,0x90 +.byte 0xc0,0x12,0x38,0x8b,0x70,0xe0,0xf8,0x1a,0xb5,0x8d,0xe1,0x39,0xdf,0x93,0x25,0x72,0x2e,0xa9,0x3f,0x58,0x12,0x40,0xc4,0x92,0x46,0x08,0xf0,0x64,0xdd,0x34,0x42,0xfe,0x74,0x35,0x0c,0xda,0xef,0x06,0x0b,0x33,0x59,0xd9,0xee,0x4c,0xf9,0x02,0x3a,0x93,0x40,0xa3,0x99,0x0e,0x64,0x11,0x2f,0x52,0x9d,0x28,0x4d,0xe8,0x45,0xd0,0x22,0xd7 +.byte 0x8f,0xd6,0x28,0x8c,0x0e,0x18,0x87,0x24,0xf9,0x88,0xd2,0xc0,0xe8,0xd4,0x9d,0xa2,0x5a,0x79,0x83,0x37,0x18,0x84,0x12,0xca,0xc7,0x10,0xd5,0x5a,0xa8,0xe5,0xa8,0xe7,0x79,0xb6,0x2c,0xb3,0x90,0x6c,0xc5,0xa4,0x99,0x1b,0x85,0x29,0x78,0x0b,0x09,0x77,0x05,0xf4,0x23,0x79,0x5c,0x91,0xf3,0xe0,0xe4,0x6f,0x82,0x33,0x4e,0xa2,0x2e,0xa2 +.byte 0x65,0x79,0xad,0x98,0x36,0x34,0x72,0x97,0xd7,0x39,0x89,0x5e,0x82,0x9f,0x4c,0xe2,0xea,0x51,0x85,0x62,0x0c,0x39,0xf6,0xdc,0xc6,0x80,0x48,0xcf,0x98,0x93,0x64,0x7d,0xf9,0x63,0xf4,0xf5,0x18,0x2a,0xb6,0x04,0xb7,0x44,0xc4,0x60,0xc0,0xcf,0x3d,0x88,0xa8,0xb6,0x81,0xa3,0x99,0x2a,0xf0,0x1a,0x8d,0x76,0x20,0x1d,0xcc,0x10,0x50,0x58 +.byte 0x09,0xf9,0xda,0x65,0x60,0xc3,0xb1,0xc1,0xc0,0x4d,0x62,0x52,0x22,0x45,0x32,0xbc,0x11,0x93,0x15,0xb6,0x25,0x8f,0x65,0xa0,0x4c,0x88,0xc9,0x83,0xe1,0x5c,0xbb,0xfb,0x1a,0xab,0xdb,0x35,0x40,0x66,0xc0,0x2f,0xdc,0xf5,0x92,0x08,0x4c,0xc7,0xb8,0x49,0x05,0xe0,0xe1,0x61,0x2b,0xde,0xc7,0x6a,0x04,0x05,0x4d,0x9f,0xe9,0x59,0x22,0x56 +.byte 0x63,0x77,0x9d,0xe3,0x1e,0x36,0xdf,0x87,0x4a,0xeb,0xba,0x42,0x3d,0x1b,0xa5,0xd0,0xc5,0x44,0x07,0xbe,0x37,0x37,0x70,0x10,0x2d,0x02,0x9b,0xf6,0x52,0xf3,0x54,0x6d,0x50,0xdb,0xdb,0x57,0x01,0x0b,0x9b,0xd5,0x99,0x99,0x69,0x9b,0x10,0x76,0x48,0xea,0x28,0x27,0x06,0x30,0x63,0x3b,0xdf,0x06,0x30,0x37,0x28,0x75,0xcf,0x9c,0xe7,0x52 +.byte 0x43,0xe2,0xd5,0x7b,0xfa,0x88,0x98,0x9c,0x3e,0x27,0x30,0x21,0xcc,0x11,0x71,0x14,0x24,0x04,0x1a,0x8c,0xe9,0xfe,0x2f,0x9d,0xec,0xb1,0x10,0x33,0x05,0x31,0x01,0x1b,0xde,0x6b,0x30,0x20,0x6d,0xf4,0x7c,0xbf,0x41,0x04,0x5f,0xb9,0x9c,0x24,0x63,0x74,0x98,0x3e,0x60,0xc7,0xf1,0xb1,0xc6,0x94,0xf3,0x6f,0x95,0x24,0xdf,0x97,0xd5,0xc7 +.byte 0x50,0x19,0xaf,0xa5,0xae,0x51,0xde,0x6d,0x44,0x0c,0x90,0x72,0x11,0x82,0x04,0xf9,0xda,0x17,0xd8,0xf3,0x03,0xf2,0x03,0x3f,0x65,0x7f,0xd7,0x66,0x84,0x9a,0x02,0x90,0x2b,0x65,0x00,0xd9,0x9c,0xfb,0xaa,0xe2,0xde,0x5f,0x1e,0x19,0x1e,0x6d,0x20,0x1e,0x01,0xf1,0xca,0x7b,0x90,0x06,0x96,0x1d,0x7a,0x34,0x0c,0x66,0x57,0xd7,0x61,0x1f +.byte 0x74,0x03,0xcb,0xae,0xea,0xaf,0x65,0x8e,0x32,0xbe,0xb8,0xe6,0xd8,0x6d,0xf7,0x51,0x6d,0xec,0x7e,0xc6,0x9d,0x20,0x01,0xbf,0xd7,0xbc,0xcb,0x34,0x7c,0xe5,0x1f,0x92,0x72,0x2f,0x6f,0xa3,0x1f,0xe8,0x4d,0x7e,0xa5,0x85,0x3b,0xed,0xc7,0x25,0x53,0xe3,0x77,0x90,0x1f,0xda,0xb7,0x48,0x7d,0xbe,0x20,0x48,0x9f,0xb4,0x05,0x5d,0x41,0xc5 +.byte 0x48,0xd0,0xc9,0x83,0xbe,0xf8,0xd8,0x6b,0x0d,0x26,0x66,0x2e,0xef,0x6b,0x13,0x58,0x6b,0x5f,0x0e,0x8b,0x4e,0x57,0xb2,0x6b,0x3d,0x4d,0xcd,0xcb,0x9a,0x9b,0xda,0x4d,0x7f,0xea,0x17,0x06,0x7f,0xcd,0xaf,0x18,0xda,0x3d,0xf0,0x30,0x2e,0xbb,0xc2,0x1d,0xcf,0xde,0xf7,0xee,0xda,0xd6,0x3d,0x75,0xcf,0x19,0xcf,0xfc,0xdf,0x7a,0xb6,0x1f +.byte 0x89,0xf5,0x0c,0xe9,0xd5,0xf1,0xd0,0x40,0xbd,0xae,0xb5,0x16,0xf6,0x05,0x1e,0xba,0xcd,0x18,0x80,0x4a,0xb3,0x87,0x93,0x6b,0x19,0xfc,0x47,0xa8,0x45,0x4b,0x75,0xe8,0x06,0xc0,0xbd,0x86,0xf7,0xcf,0x2c,0x39,0xc6,0x0b,0x3f,0x32,0xcd,0x1c,0x02,0xec,0x4b,0xd5,0x90,0x84,0xaf,0xc9,0x5c,0x9e,0x64,0x82,0x13,0x81,0x05,0x03,0xe4,0xed +.byte 0x48,0x23,0xc3,0x53,0x2c,0x5a,0x22,0x0a,0x27,0x7e,0x55,0x79,0xdc,0x46,0xf5,0x4b,0x04,0xcc,0x43,0x87,0x6c,0xb5,0xa4,0x2d,0x78,0x70,0x02,0x43,0x0e,0x76,0x62,0x99,0x86,0x40,0x2a,0xe4,0x62,0xe6,0xee,0x4e,0x03,0x64,0x83,0x9c,0x38,0x6d,0x62,0xa6,0x85,0xb8,0xce,0xd7,0xf8,0xcb,0x78,0x00,0x7a,0x48,0x72,0x75,0x4e,0x9c,0x6f,0x0c +.byte 0x61,0xc7,0x93,0x4e,0x6d,0x65,0xa3,0x1b,0x17,0x84,0xc6,0xd2,0x29,0xc3,0x4d,0xe3,0x14,0x21,0x5f,0x9e,0xa9,0x28,0x11,0xf3,0xb2,0xe8,0xe7,0x60,0x9e,0x24,0xab,0x88,0x9c,0x9c,0x5e,0x17,0xe4,0xe1,0xa7,0x74,0xb4,0x82,0xd5,0xaa,0x92,0x08,0xa7,0xa2,0x04,0x6f,0x77,0x14,0x54,0x44,0x5d,0x13,0x10,0xa2,0x40,0x1d,0xf0,0x44,0x16,0x17 +.byte 0xda,0x8c,0x80,0x83,0x2b,0x19,0xb8,0xab,0xf2,0xb8,0xb1,0x92,0xb5,0xc5,0x05,0x3e,0xd2,0x1a,0xfc,0xfd,0x21,0xa6,0xb2,0xbd,0x89,0xee,0x9c,0x3c,0x90,0xd9,0xf1,0xd2,0xe8,0xc3,0x21,0xb9,0x0e,0x0c,0x98,0xbc,0x5e,0xa1,0x0d,0x89,0xfe,0x0f,0x3c,0x45,0xea,0xe1,0x6e,0x06,0x59,0xff,0x79,0xf4,0x7e,0xf4,0x82,0xc0,0x6b,0xd9,0x53,0x30 +.byte 0x98,0xed,0x8d,0x6f,0x3d,0x0e,0xfb,0x42,0x66,0xab,0x41,0xa8,0x4a,0xef,0x73,0xa4,0x54,0x99,0x4f,0xb6,0x65,0x44,0xf9,0xd9,0x3c,0x6b,0x59,0x36,0xb0,0xe3,0x7c,0x4a,0x85,0x80,0x6c,0x77,0x6f,0x34,0x4e,0x9e,0x54,0xfd,0x0c,0x25,0x72,0xc3,0x5a,0xb6,0x3b,0xad,0x2b,0xd5,0x29,0x55,0x31,0xab,0x62,0xe4,0x15,0xed,0xef,0x16,0xef,0x43 +.byte 0xd5,0xdd,0x3d,0x64,0x8c,0x13,0xbc,0xcd,0x4d,0xfb,0x4f,0x86,0x3b,0x73,0x1e,0xc4,0xe8,0x54,0xb4,0xcc,0x49,0xba,0x4f,0x81,0xcd,0xe8,0x30,0x92,0x4b,0x57,0xd1,0x7c,0x0c,0x65,0x7d,0xe1,0x59,0xc6,0x8c,0x7d,0xad,0xd5,0xcf,0x6c,0xc4,0x9d,0xc5,0x3f,0x23,0x1f,0xb0,0x6d,0x1c,0x07,0xbf,0x38,0xc9,0x16,0xdc,0x5b,0x51,0xa1,0xdb,0x8f +.byte 0xf8,0x25,0xc6,0x4d,0xc0,0x4d,0xa1,0x02,0xd9,0xd3,0xb5,0x63,0xda,0xe1,0x91,0x60,0x71,0x39,0x46,0x1a,0x13,0xe0,0xf2,0xca,0xcc,0xd3,0xbb,0x6b,0xd0,0x64,0xaa,0x0e,0xc0,0x89,0xa3,0xc6,0x14,0x56,0xe4,0x44,0x97,0xa9,0xcc,0x17,0x68,0xe6,0xfc,0xe5,0xfd,0xf0,0xa6,0x69,0xcd,0xac,0x20,0xc7,0xeb,0x53,0x1b,0x4f,0xdd,0xd3,0xb0,0xed +.byte 0x30,0x4e,0x36,0x73,0x63,0xef,0x51,0x3e,0x9a,0x3e,0x41,0x2b,0x9c,0xda,0x67,0x96,0x46,0x33,0xe3,0x3f,0x87,0x01,0xd8,0xc5,0x26,0x80,0xe4,0x7e,0xf4,0x78,0x8c,0x2b,0x81,0x2a,0x01,0x7c,0xe3,0xfc,0x8d,0x6b,0xdc,0x84,0xb9,0xff,0x43,0x37,0x57,0xce,0x3f,0x5e,0x63,0xd3,0xbe,0xb6,0x4a,0x31,0xbf,0xb8,0x74,0x64,0x9c,0xf3,0xc5,0x8a +.byte 0xae,0xe8,0x5f,0x68,0xcf,0xce,0xff,0x3f,0xc5,0xb5,0xfd,0x13,0x08,0x11,0x9d,0x1a,0x0f,0x06,0x08,0x4d,0x7c,0xf9,0xd4,0x20,0xdf,0x82,0xf9,0x86,0xfc,0xf3,0x67,0xa0,0x14,0x99,0xe5,0x47,0xf0,0x02,0x7b,0x16,0xca,0xcf,0xb9,0x0f,0x68,0x08,0x5d,0x1d,0x65,0xee,0x23,0x56,0xeb,0x11,0x5b,0xca,0xf1,0xa7,0xad,0x50,0xb2,0xd1,0x37,0x65 +.byte 0xe9,0x7e,0xf6,0xe9,0x64,0x42,0x49,0x80,0x40,0x17,0xe3,0x43,0x00,0xda,0xe1,0x7a,0x1c,0xb3,0xde,0xd9,0xf7,0x33,0xeb,0xb3,0xb8,0xf5,0x40,0x1b,0xcd,0x71,0x97,0x30,0xf9,0x9c,0x4d,0xac,0x7e,0x8e,0xd9,0x36,0x92,0x39,0xb5,0x56,0x0f,0x4f,0xbf,0x58,0xb8,0xba,0xc3,0xbd,0x79,0xb0,0xd7,0x6c,0x45,0x49,0xe2,0xde,0x94,0x04,0x9d,0x3e +.byte 0x91,0x0a,0xb2,0x9b,0x90,0x57,0x2e,0x69,0xa4,0x4f,0x61,0xbf,0xdb,0xfb,0xe3,0xe9,0x81,0x26,0xe0,0x48,0x90,0x8c,0x32,0x95,0x8d,0x38,0xec,0x8e,0xa7,0x5e,0xc3,0x36,0xc6,0xd1,0xbc,0x9a,0xb3,0xba,0xdb,0x2c,0xe4,0xa0,0x50,0x74,0xef,0x98,0x48,0x14,0xc9,0x38,0x4d,0xa9,0x48,0x13,0xd4,0x08,0x60,0xfd,0xcf,0x5e,0xf2,0xcd,0xc7,0xeb +.byte 0xaf,0x88,0x32,0x30,0x6f,0x19,0x01,0xec,0x87,0xae,0x6d,0x63,0xa3,0xa7,0x7b,0xcd,0x53,0xa7,0xf2,0xf2,0x9f,0x43,0xcb,0x0a,0x3f,0x8c,0xd2,0x55,0x8d,0xa7,0x95,0xcf,0x5b,0xae,0x64,0x23,0xda,0xb4,0xbd,0x32,0x34,0x95,0x8a,0x03,0xe7,0x6e,0xef,0x3f,0xb4,0xcf,0xc6,0x8a,0x2f,0xc6,0x59,0x99,0xdf,0xad,0x3c,0x15,0xed,0x83,0x0b,0x59 +.byte 0x8b,0xcd,0x0d,0xa6,0xcf,0x3a,0xc3,0xdb,0xc3,0x01,0xa9,0x32,0x38,0x45,0x5c,0xc8,0x56,0x81,0xef,0x21,0x7f,0x52,0xc4,0xb5,0x48,0x97,0x6a,0x60,0x75,0x3a,0x1a,0xd3,0xb0,0x60,0x9a,0x83,0x61,0xad,0x3b,0x4b,0x65,0xaa,0x9e,0x77,0x47,0x6f,0x3b,0x48,0xb0,0xc6,0x36,0x9a,0x59,0x5e,0x26,0xc4,0xb9,0xed,0x04,0xf3,0xc7,0x09,0x33,0xda +.byte 0x81,0x63,0xa6,0x5d,0xe1,0x54,0x6b,0x04,0x17,0x2b,0xb9,0x2f,0xbd,0x55,0xdb,0xa1,0x69,0x00,0xcd,0xba,0xfa,0x36,0xaa,0x47,0x5a,0x7c,0xf4,0x1f,0x53,0x94,0x95,0x2f,0xf8,0x2a,0x4b,0xa8,0xcc,0x73,0xab,0xfd,0x25,0xb2,0x4e,0xd6,0x62,0x90,0x8c,0x8f,0x02,0xe4,0xdc,0x22,0x79,0x04,0x34,0x9b,0x54,0x5c,0x54,0xca,0x9b,0x8a,0xf8,0x05 +.byte 0xd1,0xb0,0x9e,0x8f,0xa3,0x0b,0x53,0xa8,0x6f,0x1b,0x2e,0xf2,0x71,0x78,0x28,0xce,0xa9,0xdb,0x4c,0x5b,0x83,0xfe,0xaa,0xff,0x99,0x2f,0x03,0x14,0xb2,0xe0,0x5f,0xaa,0x65,0x15,0x1f,0xd2,0x31,0x95,0x70,0x3c,0x8b,0x55,0x8e,0x87,0xed,0xbb,0x0c,0x91,0x87,0xaa,0xbe,0x49,0xdb,0x18,0x7b,0x1d,0x26,0xa7,0xdf,0x00,0xff,0x73,0x70,0x2e +.byte 0x10,0xaf,0x46,0xea,0x7f,0xca,0xfa,0x09,0x13,0x02,0xac,0x3f,0xa0,0x02,0xa6,0x67,0xb7,0xec,0x18,0x73,0x91,0x25,0xa0,0x28,0xe3,0xd8,0xfa,0x11,0x6d,0x34,0x79,0x1d,0xe4,0x8f,0x7c,0x73,0x66,0x77,0x3e,0x43,0x23,0xb0,0xee,0x84,0xb5,0x75,0xc9,0x23,0x87,0x6a,0x4f,0x59,0x3d,0xb5,0xf1,0xd6,0x06,0xf8,0xa6,0x5d,0x0c,0x24,0xed,0x94 +.byte 0xd7,0xa8,0x31,0x37,0x10,0x60,0xb6,0x03,0x33,0x27,0x38,0xdd,0xd3,0x74,0x02,0xa3,0xa6,0x01,0x94,0xa9,0x56,0x11,0x23,0x0e,0xdb,0xfd,0x25,0x92,0xa8,0xfb,0x79,0xc8,0x8e,0x0e,0x10,0x1f,0xca,0x95,0xf6,0xad,0x28,0xe7,0xaa,0x2b,0xf1,0x40,0xf6,0xef,0x7b,0x40,0x28,0x57,0xbb,0x4c,0xac,0x0b,0x8b,0xb3,0xe3,0xec,0x53,0xf2,0x15,0x61 +.byte 0x2e,0x91,0xdf,0x91,0xfb,0x55,0xb6,0x7f,0x6c,0xfc,0xb7,0x4b,0x91,0xdc,0xf7,0xe5,0x91,0xd8,0x70,0x92,0x94,0xea,0x3f,0x62,0x98,0x14,0xc3,0x43,0x34,0x02,0x87,0xc7,0xca,0x60,0x4a,0xfb,0x50,0xe4,0xa9,0x92,0x10,0x04,0x7c,0x55,0xd3,0x9a,0x89,0xba,0x8e,0x6f,0x02,0xd6,0xc7,0x6f,0x91,0xb5,0x87,0xb9,0x0e,0xbe,0xe4,0x9f,0x01,0x0b +.byte 0x20,0x60,0xc8,0x16,0xe6,0x23,0x1d,0x5f,0x4d,0x82,0xf4,0x42,0x25,0xe6,0x05,0xe3,0x5b,0xbb,0xd1,0xb0,0xad,0x0b,0x05,0x71,0x3a,0x7b,0xee,0x0e,0xe1,0xe4,0x08,0x9f,0xda,0xdf,0x59,0x57,0x4f,0x05,0x5a,0x51,0x9a,0x60,0xfd,0x85,0x21,0xd1,0x0a,0x3b,0x0a,0x15,0x61,0x28,0x98,0x0a,0x8f,0x1e,0x33,0x15,0xb3,0x5f,0xf3,0xbb,0x89,0x22 +.byte 0x0c,0xaf,0x91,0xce,0x44,0xb1,0x54,0xd0,0x80,0x86,0x43,0xa1,0xb9,0x07,0xde,0xab,0x1f,0x9b,0xae,0xef,0x07,0xf2,0x40,0x33,0x31,0x4d,0xf9,0x45,0x97,0xf6,0xcc,0xe5,0x3c,0x49,0xcd,0x83,0x6e,0x38,0x81,0xab,0x40,0x18,0xda,0xf6,0xfe,0xe7,0x96,0xd1,0x17,0x98,0xae,0xec,0xe9,0x93,0x37,0xbc,0x0b,0xa8,0x12,0xe7,0x65,0xca,0x27,0x37 +.byte 0x6a,0x74,0x81,0xf1,0xe0,0x6c,0x0d,0xba,0x86,0x48,0x94,0xd0,0x72,0xd5,0x4d,0x71,0xcf,0xa8,0x5e,0xd1,0x97,0xd1,0xed,0xf0,0xd3,0xe4,0xe3,0x41,0xc9,0x8f,0xfc,0x89,0xe8,0xbf,0x96,0x8b,0x86,0xb0,0x97,0x79,0x95,0xdf,0x69,0x56,0x6d,0x61,0x0a,0x37,0xcb,0x36,0xe1,0x95,0x88,0xf5,0xf0,0xe2,0x5c,0xb2,0x44,0x73,0xda,0x83,0xa7,0xdc +.byte 0x8b,0x35,0x3e,0xc1,0xd5,0x88,0x17,0x3b,0xeb,0xcf,0x36,0x9c,0xef,0x40,0xb2,0x72,0xde,0x4f,0x16,0x6c,0x8c,0x9d,0x15,0xce,0x7d,0x0d,0xc3,0x2f,0xea,0xab,0x50,0xdf,0x02,0xe0,0x24,0xcc,0xf4,0xa7,0x25,0xba,0x85,0x0d,0x62,0x9a,0x39,0xc7,0x5a,0xd1,0x9a,0xd1,0xa7,0x45,0x5f,0xc2,0x44,0xf5,0xa9,0x8d,0xd8,0xbc,0xd3,0xc8,0x75,0x0d +.byte 0x06,0xc6,0x4b,0x24,0xc6,0xe5,0x72,0xf7,0xd5,0x87,0xca,0x3c,0xc0,0x1c,0x18,0xa9,0x40,0xc6,0x7b,0xe5,0x4c,0xe6,0xb7,0x01,0x57,0xc1,0xcf,0x63,0x83,0x58,0x63,0x47,0xcf,0xa4,0xd3,0xf6,0x1d,0x2c,0xbf,0x17,0xe6,0x0a,0x7b,0x2d,0xa9,0x34,0x23,0xfc,0x1f,0x06,0x31,0x47,0x7b,0x31,0x34,0x8c,0x3c,0x15,0x9b,0xac,0xfd,0x38,0xe6,0xa3 +.byte 0x9e,0xa7,0xdf,0xa6,0x37,0x61,0xfd,0x85,0xb8,0x2e,0x67,0x73,0x7f,0x60,0x12,0x8b,0x62,0xb0,0x38,0xd0,0xaa,0xc4,0xad,0x3b,0xa9,0x04,0x66,0xdd,0xbb,0x9c,0xb1,0x95,0xe1,0x9c,0x0a,0x72,0x80,0x12,0xaa,0xa8,0x0c,0x3f,0x90,0x20,0x33,0xb4,0x76,0xdd,0x26,0xfe,0x1e,0x8f,0x6a,0x2d,0xea,0x4a,0xdc,0x28,0x47,0x66,0x36,0x5b,0x50,0x60 +.byte 0x7e,0x3e,0x93,0xf3,0xe9,0x37,0x31,0x3b,0x43,0x46,0x85,0xb3,0xa9,0xb2,0x14,0x95,0x96,0x49,0xf9,0x2a,0xe7,0x9e,0x3a,0x3e,0xd8,0x12,0xf7,0xbc,0x43,0x8c,0x35,0x31,0x44,0x08,0x7f,0x25,0x39,0x86,0x98,0x6a,0xe8,0xe3,0x2e,0x73,0x2d,0x3b,0xac,0x2d,0x75,0x4c,0xc8,0xca,0x21,0x2d,0x96,0x9b,0x4f,0x56,0xff,0x2d,0xc2,0xe2,0x98,0x3d +.byte 0xe2,0x3f,0xee,0x10,0xb7,0xc3,0x3d,0xa8,0x50,0x88,0x7f,0xd5,0x4e,0xbd,0xc7,0x9d,0xdc,0x01,0x49,0x27,0xf2,0xae,0xea,0x93,0x72,0xdf,0x00,0xcd,0xe6,0xa1,0xdd,0xd1,0x18,0xeb,0xa7,0xe1,0x4a,0x7b,0x38,0x72,0x73,0x29,0x46,0xa3,0xb3,0x25,0x23,0x6d,0x26,0xab,0x86,0xdc,0x67,0x52,0xe5,0x4a,0x5e,0x8f,0x16,0x67,0x8a,0x28,0x13,0xba +.byte 0x44,0x42,0xb5,0x21,0x9f,0x30,0x66,0x7f,0xc9,0x87,0x40,0xcb,0x75,0x58,0x2e,0xcd,0x09,0xb9,0x8a,0x84,0xa3,0xbd,0x63,0x53,0x75,0x2f,0x77,0x8b,0x7e,0x19,0x31,0x33,0x3b,0x9a,0xfb,0x86,0x39,0xa6,0xd9,0xeb,0x9b,0x43,0xc6,0xd9,0xc2,0x10,0xab,0x42,0xe5,0xc6,0x4a,0xe6,0x3e,0xde,0x9d,0xac,0x8e,0x95,0xf0,0xdb,0x48,0x95,0xc2,0x87 +.byte 0x6b,0x7f,0xde,0x09,0xdb,0xed,0x49,0x19,0x73,0x2d,0xa4,0x5c,0xdf,0xfa,0x2e,0x15,0xd0,0xb6,0x46,0x32,0xc9,0x7f,0x7e,0x01,0xd3,0x25,0x45,0x0e,0x5b,0x0d,0xf0,0x67,0xe3,0xd9,0xdf,0x4f,0x3b,0x6f,0xb3,0x15,0xc5,0x6b,0x91,0x75,0xa2,0xaf,0x42,0x3a,0x14,0x50,0xd9,0x4f,0x19,0x65,0x12,0x83,0x5d,0x8f,0x8a,0x01,0x0b,0x89,0xcc,0x7f +.byte 0x1a,0xde,0x5b,0x44,0x34,0x98,0x0f,0x8e,0x5a,0x5e,0x03,0x41,0x3e,0x66,0x9b,0x16,0xf5,0x91,0x7c,0xb0,0xc1,0xbf,0xa2,0x10,0x0b,0x60,0x3a,0x63,0x0c,0xcf,0xd8,0x49,0xdb,0x42,0x88,0x1f,0x36,0x8e,0x15,0xdb,0x5d,0x3f,0xe7,0xf1,0x9a,0x73,0x2b,0x74,0x0c,0xd5,0x09,0xab,0x01,0x2e,0x52,0x6f,0x03,0xf6,0xc9,0x0b,0xeb,0xa5,0xce,0x2e +.byte 0x1c,0x02,0x35,0xca,0xce,0xfe,0x4b,0xad,0x67,0x21,0xf8,0x44,0xea,0x70,0xf2,0x3d,0xfc,0x43,0x77,0x05,0x26,0xbe,0xaf,0x99,0xab,0x41,0xd4,0xcc,0x53,0x33,0x33,0xcd,0xb4,0x2d,0x76,0xfb,0xae,0x0c,0xac,0xc1,0xd0,0x42,0xfb,0x45,0x4a,0x6e,0x55,0xd2,0x93,0xef,0xb9,0x06,0xbc,0x38,0xce,0x94,0xc2,0x01,0xdf,0x27,0xc8,0x47,0xff,0x74 +.byte 0xfb,0x84,0xc5,0xa2,0x78,0x1f,0x4f,0x73,0x12,0xec,0x2d,0x82,0x5b,0xeb,0x3c,0xb6,0x1c,0x5a,0x29,0x9c,0xba,0x9e,0xa4,0x85,0x94,0x84,0x68,0x01,0xd7,0xb1,0x27,0x84,0x4a,0x7d,0x62,0x9c,0x32,0x12,0x89,0xd8,0x66,0xb5,0xe9,0x07,0xf4,0x5f,0x6b,0x0e,0x90,0x87,0xe5,0xc1,0x8b,0xaf,0x8f,0xf7,0xca,0x54,0xe0,0xc6,0x5f,0xa5,0xec,0xd1 +.byte 0xdc,0xdc,0x17,0x9e,0xca,0x4b,0x72,0x72,0x03,0x96,0x62,0xaa,0xc1,0xfe,0x23,0x7e,0xd2,0x06,0x61,0xb6,0xc9,0x0d,0x7e,0xbf,0x72,0x1c,0x66,0x46,0x0b,0x31,0x96,0x81,0x11,0x3d,0xac,0x5e,0xd0,0x35,0xaf,0xac,0x4c,0x74,0xce,0xf9,0x9c,0x64,0x3d,0xe5,0x9d,0xfe,0xc7,0x05,0x09,0xe1,0x70,0xc5,0x37,0xd5,0x4e,0xd8,0x7d,0xdb,0xfa,0x1c +.byte 0x28,0xfc,0x10,0x2a,0xe8,0x62,0x18,0x09,0x97,0xe0,0x98,0x2e,0x9f,0x1d,0x18,0xff,0x22,0xe9,0x5d,0x37,0xd2,0x74,0xf1,0x81,0x08,0x8a,0x55,0xc0,0x40,0x0f,0x70,0xbe,0x82,0x23,0x78,0x35,0xc8,0xf8,0x59,0x6e,0x0d,0x2e,0xd5,0xe7,0xf5,0x2e,0xbd,0xcd,0x1a,0xcf,0x76,0x43,0x1f,0xca,0x15,0x6c,0x4a,0xb7,0xc7,0xb9,0xaf,0x68,0xd7,0x31 +.byte 0x1e,0x0c,0x9c,0x78,0x74,0x66,0x80,0xc6,0x74,0xbe,0x86,0x59,0x0c,0x12,0xdc,0xf3,0x1b,0xaf,0x63,0x74,0xce,0x1e,0xac,0xf0,0x65,0xa0,0xab,0x7f,0x96,0x08,0x32,0xb2,0xca,0x9c,0xfb,0x9d,0x66,0x63,0x76,0xf9,0x69,0x08,0x6e,0xd3,0x46,0xde,0xdf,0x54,0x06,0x0d,0x25,0x81,0xd9,0x5a,0x45,0xeb,0xe5,0xc0,0xf6,0x86,0x0f,0xe9,0x27,0x7c +.byte 0xdc,0x52,0x28,0xb5,0xd0,0x7d,0x07,0xc1,0xb6,0x9b,0xdc,0xea,0xd3,0x2a,0xba,0xb0,0xd5,0xa3,0xd8,0x25,0x07,0x9c,0x6c,0xd6,0x16,0xa5,0x93,0x43,0x52,0xa7,0x5c,0x2b,0xe2,0xfa,0x8e,0x6e,0xaa,0x04,0x84,0x63,0x80,0x0f,0x90,0x10,0x41,0x1c,0xf6,0x67,0xea,0x39,0xb0,0x16,0xfc,0x6f,0x85,0x28,0x8c,0x8e,0xfb,0x79,0x39,0xdf,0xf6,0x6e +.byte 0x57,0xa1,0xaa,0xf1,0x0b,0x99,0xde,0xad,0x69,0xe2,0xf4,0x74,0x8e,0x8c,0x2d,0x20,0xdb,0xf3,0x2d,0xc2,0x75,0xe7,0xd6,0xc8,0x9d,0x46,0x3b,0x8b,0x8b,0x18,0xd8,0x41,0xfd,0xc2,0x7d,0xec,0x66,0x78,0xe7,0xbe,0xee,0x2b,0x07,0xd8,0x7e,0x13,0x61,0x7e,0xab,0x7d,0x2b,0x3f,0x83,0x96,0xf5,0xab,0x0b,0x20,0xd2,0x5b,0xb0,0xeb,0xf7,0x1b +.byte 0xac,0x1a,0x16,0x46,0x21,0x90,0xdb,0x67,0x66,0x42,0xe2,0x54,0x34,0xae,0x34,0xae,0x21,0x33,0x8c,0x48,0x19,0xdb,0x1f,0xa8,0x25,0x76,0xe0,0x03,0x1c,0x35,0x8d,0xd3,0xab,0x6b,0x93,0xf3,0xad,0x7d,0x3c,0x76,0x1d,0xaa,0x43,0x80,0x0f,0x5f,0x20,0xd9,0xf0,0xff,0x8b,0xf4,0xdb,0xbc,0xf2,0xff,0xf2,0x8a,0xfc,0xf5,0x0e,0x4e,0xd9,0xb0 +.byte 0xd6,0xb3,0x86,0x5b,0x3e,0x10,0x87,0x50,0xf1,0xd2,0x8f,0x8d,0xa4,0x39,0x85,0xf5,0x90,0xd6,0x53,0x69,0x40,0x42,0xc1,0xc3,0x7c,0xc1,0x3e,0x97,0xb4,0x08,0x49,0x93,0x4e,0x4c,0x67,0xd9,0x2e,0x05,0x70,0x04,0x98,0x0a,0xed,0xd0,0xff,0x0c,0x13,0xe4,0xde,0x75,0x81,0x24,0xb1,0x27,0x79,0xeb,0x80,0x68,0x52,0x50,0x66,0x77,0x4f,0xf6 +.byte 0x64,0x2f,0x85,0x9e,0xc1,0xbf,0x9f,0x0e,0x31,0x9a,0x36,0x24,0xcd,0xa8,0xe8,0xce,0x41,0x86,0xd1,0x02,0x96,0xdc,0x1a,0xa0,0x48,0xca,0x61,0xd5,0x87,0xdb,0x0a,0xeb,0x69,0x95,0xca,0xf8,0xe5,0xa0,0x5b,0x91,0x8f,0xb9,0x59,0x5f,0x68,0x60,0x58,0xc5,0xe0,0xc7,0x02,0x68,0xa5,0x67,0x1e,0xfc,0xa9,0x27,0x9f,0x83,0x4c,0x05,0x60,0xee +.byte 0xcb,0x79,0x31,0x73,0x36,0xf4,0x39,0x44,0xdb,0xea,0x62,0x89,0x97,0x69,0xd1,0x0d,0xf6,0x27,0xcf,0x47,0xfe,0x3d,0x5c,0xe9,0x92,0x54,0x0a,0x66,0xaf,0x82,0xb1,0x49,0x87,0x3f,0xa2,0x95,0x91,0x0e,0x72,0x1e,0x7b,0xde,0x32,0x31,0x51,0x40,0x24,0x4f,0x30,0x59,0x7d,0x97,0x28,0x30,0x7e,0x93,0xcd,0x1e,0x16,0xef,0xe1,0xb5,0xa8,0xff +.byte 0x3a,0xd0,0x62,0x94,0x8b,0x72,0xe7,0x97,0x8f,0x2f,0x58,0x3e,0x62,0x43,0x6b,0x28,0x05,0xc9,0x0d,0xf0,0x09,0xbd,0x12,0x3b,0xd8,0x15,0xd3,0x7c,0x97,0x96,0x5a,0xf4,0x9f,0x8d,0x25,0xb7,0xc5,0x66,0xf7,0xf7,0x5f,0x7e,0xca,0x2f,0xcd,0x9a,0xf2,0xa3,0x9b,0x4f,0x6f,0xc3,0xd9,0x64,0x38,0xda,0x87,0x97,0x8a,0x49,0x2d,0x80,0x16,0x73 +.byte 0x88,0x62,0xd2,0xdf,0x4f,0xf7,0x79,0xc0,0x83,0xeb,0x2b,0x66,0x5a,0x21,0x3a,0xa2,0x2a,0xed,0x8c,0xe7,0x91,0x6d,0x56,0x18,0xfc,0x59,0x68,0xea,0x9f,0x5c,0x3c,0xd5,0x0f,0x64,0x70,0x89,0x22,0x83,0xed,0xfa,0xc9,0x21,0x68,0x3c,0x69,0xb8,0x3e,0x89,0xb5,0x9d,0x8b,0xc8,0xf7,0x57,0x17,0x27,0x90,0x12,0xa7,0xd2,0x4d,0x2c,0x30,0x64 +.byte 0x42,0xbe,0xa6,0x49,0x4e,0xa3,0x3b,0xdb,0xdb,0x64,0x0e,0x89,0x66,0x87,0x72,0x90,0x86,0x1d,0x0b,0x61,0x32,0x47,0x3d,0x55,0x81,0xb2,0x50,0x5a,0x76,0x6c,0xa3,0x46,0x12,0x1b,0xaf,0x6e,0xbf,0xfd,0x98,0x2f,0xb7,0xd2,0x31,0x92,0xb5,0x26,0x1a,0x3d,0xfa,0x5d,0xc0,0x24,0x44,0xd2,0x6b,0x1c,0x81,0xf5,0x5d,0x50,0xb0,0x33,0x18,0xe0 +.byte 0xc5,0xb3,0x6b,0xf4,0xfd,0xde,0xf7,0x2f,0x69,0x1d,0x5a,0xfe,0x03,0x6d,0xca,0xad,0x29,0xe0,0x6e,0x70,0xcd,0xe3,0x6d,0x38,0xef,0xf1,0x3a,0x76,0x2b,0x2c,0xb6,0xcd,0xff,0xeb,0xbc,0xe7,0xd9,0x40,0xbe,0x23,0x61,0x20,0xd5,0xb8,0x66,0x77,0x65,0xc9,0x33,0xf5,0x75,0x8e,0x15,0x98,0x3f,0xb1,0x4a,0xb8,0x1c,0x47,0x73,0x45,0x0f,0x73 +.byte 0x2a,0xa1,0xb7,0x73,0x76,0x94,0x16,0x45,0xcf,0xd6,0x8f,0xe3,0x62,0x8a,0x42,0xfd,0xe3,0x1e,0xe0,0x7d,0xb5,0x99,0xbd,0x1c,0xf2,0x60,0xb2,0x72,0xa8,0x4b,0x19,0xd6,0xd0,0xdb,0x0b,0x1f,0xc9,0x68,0xc0,0xf3,0x65,0x04,0x50,0x41,0xf0,0xb3,0x0e,0x0a,0x9d,0x7f,0x0b,0x1f,0xeb,0x5b,0x4c,0x58,0x6a,0xf2,0x02,0x95,0xd2,0xf3,0xac,0xe5 +.byte 0x69,0x81,0xb1,0x3f,0x08,0xfc,0xba,0xcb,0x36,0xcd,0x54,0x28,0xac,0x65,0xd8,0x81,0xab,0xc1,0x6a,0x51,0x97,0x21,0xe4,0xc6,0xaf,0xd8,0x76,0x76,0xa4,0xc4,0xd0,0x58,0x63,0xdf,0x32,0xf5,0x04,0xfb,0x11,0xeb,0x76,0x39,0xda,0x55,0xf4,0x7e,0x1c,0x7b,0x04,0x07,0x4d,0x5a,0xeb,0x74,0x0a,0x57,0xcf,0x10,0xf6,0x0e,0x73,0x02,0x25,0x67 +.byte 0x4f,0x8f,0x37,0x75,0x8f,0x44,0x2a,0x1a,0x6d,0x05,0xda,0xe0,0xa0,0xaa,0xd2,0x78,0xaa,0x7e,0x76,0x0a,0xde,0x2a,0x54,0xae,0x1e,0x39,0xcc,0x3c,0x1c,0xa6,0xd5,0x8a,0xca,0xb4,0xcc,0x76,0xb9,0x30,0xd2,0xe2,0x46,0x31,0xb6,0x51,0xcf,0xe2,0x24,0x77,0xc9,0x9b,0x57,0x3c,0xa3,0x84,0x60,0x59,0x28,0x5f,0x23,0x74,0x17,0x79,0x42,0xbe +.byte 0x60,0x3f,0x09,0x6a,0x43,0x8e,0x40,0x25,0x79,0xb5,0xbb,0xbb,0x72,0x50,0xad,0x4f,0xaa,0xa2,0xd4,0xb2,0xc6,0x7d,0x50,0x7b,0x98,0x59,0x22,0x06,0x7d,0x2c,0x35,0xdd,0x44,0x34,0x9c,0x28,0x98,0xf3,0xe5,0xd0,0x7e,0x09,0xbe,0xc4,0x00,0x72,0xd5,0xa6,0x3b,0x0e,0xb1,0x18,0x91,0x0a,0x4d,0x5d,0xe2,0x0a,0x98,0x79,0x30,0x9b,0xaa,0x38 +.byte 0x03,0x2b,0x6c,0xb2,0x8e,0x0a,0x1d,0x30,0x59,0x8a,0xe8,0x6c,0x6d,0xb5,0xd4,0x91,0xc5,0x28,0x1d,0x5e,0x49,0xe0,0xfc,0x26,0x7f,0x40,0xc0,0x6a,0x81,0x0d,0xb9,0xc6,0x05,0xc6,0x18,0x82,0x70,0xf6,0xea,0x0e,0xb4,0x85,0xba,0x5d,0xfa,0xfd,0xe3,0xd6,0x08,0x7c,0x3d,0x99,0x03,0xd4,0xdc,0x9b,0x50,0x12,0xc8,0xbd,0x8c,0x47,0x67,0x28 +.byte 0x83,0x97,0xca,0xef,0xc3,0x1c,0x2b,0x6e,0x3b,0xf7,0xca,0x7a,0x68,0x6e,0x39,0x25,0x58,0xf7,0xa4,0x11,0x9d,0x8d,0x49,0x29,0xd6,0x6e,0x0b,0x0a,0xcf,0xa7,0x04,0x14,0x6f,0xc4,0x4c,0x36,0x1a,0x16,0x3e,0x8f,0x99,0x69,0x94,0x1d,0xa8,0x66,0x93,0xeb,0x1d,0x82,0xfd,0x3f,0x84,0xb0,0x9d,0xa4,0xe1,0xb0,0xd4,0x9d,0xb2,0x60,0x20,0xfb +.byte 0xd3,0xa0,0xdc,0x79,0x83,0xb0,0xfc,0x50,0x18,0x57,0xe1,0xeb,0x44,0x25,0x05,0xab,0x27,0xfb,0x5f,0x83,0xcd,0x51,0xd0,0x3b,0x80,0x4a,0xce,0xbf,0xe9,0xfe,0x46,0xd2,0x5f,0xea,0x8c,0x89,0x48,0xc8,0x65,0xdd,0x2a,0xa4,0xda,0x54,0xc2,0x37,0x7e,0xd7,0xff,0x80,0x5b,0xf0,0xc3,0x40,0x44,0x40,0x72,0x63,0x23,0xc6,0x9a,0x48,0xf3,0x4b +.byte 0x91,0x64,0x26,0xfc,0xf3,0xa0,0xb9,0x06,0x0c,0x88,0xbb,0xc0,0x93,0x73,0x63,0xf6,0x9c,0x0d,0xe2,0xf6,0xee,0xe0,0x51,0xfd,0xae,0x4d,0x21,0xb9,0x6b,0x7d,0x1e,0x34,0xa0,0x4d,0xe4,0x25,0x30,0xe6,0x81,0x2e,0x32,0xef,0xb9,0x9e,0xaf,0xa0,0x22,0xe0,0x67,0xe6,0x07,0x55,0x3a,0xed,0xef,0x4f,0x87,0x2f,0x44,0xd2,0xef,0xc1,0xfb,0xc4 +.byte 0x7b,0x27,0x20,0x44,0xd2,0xd6,0xf9,0xf3,0x67,0xc1,0xbf,0xaa,0xd5,0x9c,0xd9,0x2c,0xd5,0xf1,0x42,0x2d,0xec,0x39,0xb5,0xc1,0x18,0xed,0x6c,0x47,0x80,0xf8,0x6f,0x66,0x10,0xee,0x1d,0xd6,0x79,0x01,0x4e,0x2a,0xd0,0x83,0xa7,0x9d,0x1d,0x81,0xce,0xf5,0x6f,0x26,0x86,0xd2,0xd7,0x56,0x15,0x65,0x48,0x4c,0xf1,0xf9,0x21,0x77,0xd1,0x84 +.byte 0x22,0xce,0x4d,0x8d,0x83,0xda,0x8c,0x50,0x56,0xc8,0x3b,0xc5,0xb6,0xcf,0x3e,0x0d,0x50,0xe5,0x9d,0x6c,0xb5,0x2a,0x5a,0x58,0x28,0xf5,0x0a,0x05,0xf3,0x0e,0x40,0x8e,0xb6,0xb4,0xdf,0x11,0x1b,0x34,0x81,0xc5,0x0e,0x09,0xa6,0xfc,0x46,0x14,0x02,0x78,0x94,0xbb,0x63,0x9d,0x3e,0x25,0x2c,0xc8,0x1b,0x5c,0xef,0x64,0x77,0x0c,0x04,0x40 +.byte 0xe1,0x45,0x85,0xf8,0x07,0xbf,0x14,0x65,0xe9,0xfc,0xba,0xe4,0x9c,0xa7,0x91,0x56,0x2a,0x3a,0x8e,0x33,0xae,0x56,0x04,0x9d,0x35,0xbc,0xad,0x64,0x0e,0x99,0x8e,0xb5,0x84,0x72,0xcf,0xcc,0x81,0x14,0x11,0x9e,0xe6,0xac,0x0d,0x41,0x43,0x4e,0x2a,0x0d,0xda,0x98,0x42,0xfa,0x8c,0x21,0x79,0x93,0xa3,0xdf,0x84,0x88,0x76,0x14,0x5b,0xb9 +.byte 0xff,0xe1,0xab,0x94,0xc3,0xcd,0x10,0x69,0xee,0x53,0xea,0xfe,0xfb,0xaa,0x43,0x8f,0xdd,0x55,0x88,0x34,0x5d,0x55,0x0f,0x42,0x4d,0x1d,0x93,0xce,0x96,0x67,0xf8,0x33,0xc7,0xca,0x34,0x11,0x28,0xb2,0xed,0x0f,0x00,0x40,0x84,0xee,0x51,0x26,0x6e,0x7b,0x2d,0x77,0xeb,0x18,0xb8,0x9a,0xad,0x28,0xb6,0x6c,0x5e,0xde,0x10,0x4c,0x29,0x1d +.byte 0x79,0x3c,0x2e,0x1c,0xf0,0xc8,0xb3,0xee,0x19,0x7a,0x10,0xe1,0xe3,0x05,0x1e,0x63,0xe9,0x00,0xd7,0xfe,0x83,0xe7,0x54,0xff,0x65,0x9a,0x27,0xa3,0x86,0x72,0x5c,0xb6,0xef,0xf5,0x84,0x68,0x1e,0xae,0xe6,0xf8,0x66,0x9c,0x1b,0x86,0xab,0xfa,0x1a,0xe3,0xb8,0x97,0x16,0xb1,0xb7,0x42,0xfa,0x85,0xa3,0x3a,0x0d,0x21,0xd2,0x35,0xb1,0x89 +.byte 0xf0,0x4f,0x1a,0x1d,0x45,0x34,0x2f,0x31,0x12,0x8c,0x19,0xe7,0x4b,0x14,0xa7,0xcf,0x0f,0xf9,0xcd,0x77,0x40,0xbe,0x09,0xeb,0xc3,0x3e,0x4a,0x37,0x55,0xab,0xbb,0x9c,0xe5,0x22,0x56,0x8a,0x66,0xfa,0xb1,0xff,0x73,0x29,0x52,0xb1,0x89,0xf7,0xab,0xa6,0x58,0x53,0x97,0xfd,0x44,0xda,0xbd,0x0b,0x1f,0xc8,0x88,0x01,0xcc,0x5e,0xf7,0x05 +.byte 0xbd,0xf7,0x0a,0x4d,0xcb,0xef,0xbf,0xd9,0x8e,0x15,0xc3,0x40,0xb9,0xc9,0x14,0xe5,0x05,0x3c,0x20,0x67,0xfe,0xdc,0xa6,0xb8,0x92,0xbd,0xf5,0x33,0xb5,0x77,0x11,0x28,0x47,0x21,0x28,0x18,0x61,0xf8,0x1c,0xdb,0x65,0xad,0x89,0x0d,0x98,0x79,0xca,0x2b,0xa3,0x4f,0x16,0xa6,0xb3,0xb9,0xcc,0x47,0x5b,0x13,0x96,0x2e,0x39,0x78,0x24,0xc5 +.byte 0xf9,0xf5,0xae,0xdc,0x34,0x3c,0xf7,0x48,0x0d,0x75,0xaf,0x51,0x75,0x48,0xbe,0x4d,0x73,0x89,0x5a,0xfc,0xd7,0x51,0xd3,0x93,0xa8,0xbc,0xc3,0xa6,0x6b,0x63,0xc1,0xc3,0x7b,0x48,0xf1,0x57,0xe4,0xb4,0xce,0x5f,0x18,0xae,0xdc,0x61,0x99,0xaa,0x7e,0x49,0xd6,0xb5,0x2c,0x62,0xb8,0x8c,0x4a,0x94,0xc1,0xc2,0x13,0x23,0xdc,0x7c,0x48,0xc2 +.byte 0xaa,0xc4,0xd9,0xc0,0x09,0x11,0x6e,0x35,0x07,0x14,0x77,0x7e,0xeb,0x87,0x00,0x05,0x30,0xec,0xb2,0xc6,0xde,0x6e,0x42,0x0b,0x2a,0xb6,0xca,0xb1,0xdc,0x69,0x57,0x1b,0xad,0x52,0xa8,0x22,0x1e,0xb5,0x2b,0xb5,0x8e,0x39,0x4b,0xbf,0x38,0xf4,0xb2,0xf5,0xa1,0x9c,0x7b,0x7f,0x6c,0x14,0x48,0x37,0xa9,0xf9,0xcd,0x85,0x50,0x53,0xb0,0xc1 +.byte 0x15,0x28,0x19,0x3b,0xb1,0x04,0x44,0x93,0x7a,0x16,0x76,0x69,0xa1,0x5c,0x67,0xcc,0x8d,0x02,0x56,0xcd,0xd9,0x91,0x49,0x8c,0x1b,0xc9,0x89,0x98,0x09,0x2e,0x5b,0xf8,0x7c,0xe6,0x0f,0x46,0xb0,0xcc,0xe5,0x75,0x63,0xaf,0x40,0xd5,0xa3,0x45,0x4a,0x76,0x67,0x1d,0x81,0xc2,0x25,0x85,0x7f,0x52,0xc5,0xf8,0x6d,0xd9,0xb6,0xa8,0xa4,0x96 +.byte 0x63,0xcc,0x15,0xc5,0xec,0x40,0x0e,0x08,0xf7,0x6f,0x85,0xa5,0xe7,0x2e,0xbe,0x3f,0xf4,0xc8,0x74,0xc7,0xed,0x86,0x85,0xc0,0x44,0x9e,0x80,0xc8,0x89,0xdc,0x16,0x47,0xb1,0x68,0x0e,0x65,0x66,0x0f,0xbc,0x33,0xb1,0x78,0x1e,0x5e,0xd7,0xde,0x97,0x96,0xb8,0x74,0x5c,0x90,0x7a,0xed,0x36,0xf4,0x10,0x91,0x5a,0x42,0x92,0x81,0x11,0x73 +.byte 0x3e,0xf1,0x5e,0xfb,0xc2,0x38,0xe6,0xe5,0x41,0xce,0x96,0xed,0x44,0x14,0x9c,0xc0,0x1f,0x83,0x5f,0xdd,0x50,0x87,0x90,0x86,0x50,0x61,0x87,0x99,0x7c,0x64,0x2d,0x50,0x17,0xa3,0xb0,0x7e,0x69,0xd3,0x86,0xb4,0x7c,0xe7,0x15,0x34,0x9e,0x3b,0x17,0xc0,0x2d,0x08,0x60,0x8b,0xae,0xec,0xa2,0xf6,0xf1,0xa4,0xbc,0x7b,0xc2,0x75,0x91,0x13 +.byte 0xf6,0xd0,0x71,0xf0,0x3c,0x9c,0x51,0xb3,0x33,0x53,0x57,0x47,0x8b,0x47,0xb0,0x0b,0x95,0x9a,0x39,0x70,0x63,0x91,0xcc,0xd8,0xd0,0x23,0x32,0xc0,0xb6,0x0f,0x91,0x30,0x29,0x45,0xf1,0xfc,0xa1,0x83,0x10,0x9a,0xa4,0x05,0x05,0x9f,0x33,0xbd,0xaf,0x16,0x3e,0x53,0x39,0xb1,0x4b,0x76,0x55,0x3e,0x6f,0x47,0x23,0x59,0x4c,0xbb,0x82,0x31 +.byte 0x19,0xe2,0xb1,0x49,0x20,0x91,0x2d,0xb0,0xfe,0xa6,0xae,0x7f,0x6e,0xd1,0x5b,0xb9,0x84,0x18,0x0f,0x68,0xc6,0x56,0x8a,0x22,0x81,0x3f,0x38,0x42,0x7a,0x31,0xa1,0xc1,0xf7,0x10,0x6a,0xc3,0xb1,0xaf,0x19,0xad,0x06,0x3a,0x53,0x9d,0x44,0x9f,0xe7,0x25,0xac,0x59,0x06,0xb9,0xd2,0xf6,0xce,0xb6,0x1e,0x4d,0x65,0x2e,0x05,0xb4,0x14,0x91 +.byte 0xfb,0x5b,0x26,0xd0,0xee,0xfa,0x45,0x5b,0x0c,0xd5,0x5c,0x1f,0x0c,0xe0,0xf6,0x50,0x78,0x77,0x7e,0x83,0x04,0xec,0x3b,0x53,0x28,0x97,0x56,0x61,0xeb,0xa0,0x78,0xe5,0xc0,0xb2,0x3c,0xcd,0x6f,0x4b,0xda,0x11,0x00,0x93,0x49,0x9f,0x03,0x22,0x39,0x3a,0xc8,0xef,0x01,0x91,0x12,0x36,0x15,0x0c,0x47,0xd5,0x8b,0x77,0x5e,0x5f,0x91,0x4b +.byte 0x44,0x98,0xa0,0xa0,0x46,0x0f,0x17,0xef,0xf9,0x52,0x0b,0x92,0xc1,0xe0,0xfc,0x63,0x9b,0x6d,0xe2,0xde,0x88,0x89,0x32,0x89,0x93,0x44,0x6d,0x69,0xe7,0x26,0xfd,0x77,0xc0,0x18,0x58,0xdb,0x74,0xec,0x04,0x0c,0x60,0x51,0x74,0xca,0x49,0x3e,0x4f,0x5f,0xaa,0x53,0xf2,0xc1,0xcb,0x89,0x1f,0x69,0xaa,0xbb,0x97,0x17,0x04,0x49,0x5e,0x44 +.byte 0xf3,0xf3,0xc4,0x98,0x9d,0x49,0x1e,0xb0,0x27,0x7d,0xff,0x54,0xa5,0xed,0xbe,0xb0,0x52,0xf6,0x00,0x87,0x67,0x2d,0x28,0xdb,0x09,0x4e,0xa2,0xee,0x4f,0x81,0xeb,0xa1,0xca,0x2b,0x07,0x2f,0x54,0x6d,0x5a,0x2e,0x13,0xa4,0xd0,0xac,0x21,0x7c,0x44,0xc0,0x98,0xac,0xe4,0x6e,0x94,0xd1,0x5b,0x5e,0xd6,0xf1,0x3c,0x45,0x88,0xe1,0xbd,0x58 +.byte 0xf1,0xc7,0xba,0x36,0x2c,0x15,0xb9,0xf4,0xa3,0xea,0x73,0xb4,0x91,0x53,0xd8,0x18,0x86,0x23,0x87,0x0b,0x7a,0x4a,0x2d,0x2d,0x3d,0x73,0xcb,0x05,0x11,0x4c,0x19,0x26,0xf2,0x05,0x89,0xc8,0x29,0x26,0xa7,0xe4,0xcb,0x43,0xd0,0xf6,0xbc,0x76,0xbd,0x9a,0x17,0x4a,0xf1,0x39,0xe3,0xde,0x05,0x10,0x8a,0xd3,0x11,0x53,0x61,0xef,0x33,0xd9 +.byte 0x65,0x0d,0x99,0x0b,0x39,0xa4,0x1b,0x4f,0x0b,0xa5,0xf1,0x37,0xa3,0x4f,0x54,0xa7,0x29,0xc1,0xae,0x88,0x5c,0x13,0x2f,0xb2,0xbf,0xcf,0x1b,0x0d,0xa0,0x68,0x21,0xe2,0x20,0x3f,0x02,0x9f,0x08,0x39,0xc6,0x20,0x2d,0x08,0x01,0x5d,0xf1,0x47,0xde,0x88,0xad,0x49,0x09,0xf7,0x1a,0x0c,0xa7,0x29,0x91,0xe5,0xfc,0xc5,0xde,0xd7,0x92,0x3f +.byte 0xe5,0x0c,0x91,0xea,0x24,0xfb,0x02,0x9a,0x13,0x3a,0x61,0x01,0x9d,0x7e,0x9d,0x11,0xf8,0xbd,0xe0,0x05,0xbb,0x13,0xf0,0x00,0x67,0x90,0x6f,0x80,0xe7,0x2e,0xfc,0xe0,0xea,0x8a,0x9d,0x2c,0x13,0x57,0x4c,0x78,0x1c,0x44,0xe2,0xa6,0x62,0x01,0x46,0xf8,0xbe,0xf4,0x51,0x32,0x15,0xd4,0x3c,0x7d,0x3b,0xcc,0xfd,0xc3,0x46,0x43,0xf1,0xfa +.byte 0x9e,0xee,0xad,0x47,0x8f,0x32,0x31,0x94,0x70,0x92,0xea,0x45,0xe3,0x63,0xd6,0x28,0x23,0xa5,0xdf,0x61,0xee,0x19,0x1a,0x5e,0xb0,0xe7,0x17,0xab,0xac,0xb4,0x03,0xed,0xf6,0x9e,0xba,0xdf,0x52,0x88,0xb7,0xca,0x7c,0x27,0xcd,0x7b,0xf8,0x1e,0x54,0x4b,0xe6,0xa3,0x91,0xf7,0xeb,0x22,0x65,0x95,0x13,0xe1,0xac,0xb6,0x22,0x80,0xe3,0xeb +.byte 0xf9,0xde,0xf1,0xb7,0x6a,0xfd,0xc7,0xb8,0x9b,0x9c,0x49,0x4f,0x84,0x7f,0x68,0x93,0x6c,0x3c,0xea,0xb1,0x8a,0xeb,0x23,0xca,0x2d,0x5e,0x29,0xb5,0x52,0x49,0x98,0x12,0x3f,0xed,0xf0,0xb7,0xbc,0x22,0x14,0x73,0x92,0x84,0x1b,0x3e,0x2f,0xed,0x24,0x1e,0x62,0xcc,0x09,0xe8,0x7c,0x5a,0x08,0xd4,0xc6,0xd9,0xd1,0x55,0x66,0x18,0x2c,0x6a +.byte 0x99,0xc3,0x0e,0x1e,0x7b,0xb7,0xd4,0xbd,0x0e,0x1f,0x22,0x85,0x09,0x2c,0xcf,0xff,0x79,0x9f,0x93,0xbe,0xec,0xed,0x63,0xb7,0x97,0xbb,0xeb,0xd6,0x70,0x76,0xa9,0x4f,0xb7,0x9a,0x60,0x5b,0x50,0xdf,0x85,0x46,0x69,0xa0,0x9a,0x86,0xe3,0xe2,0x13,0x2b,0x8c,0x0f,0x3b,0xab,0xa8,0xce,0xa3,0xb0,0x78,0x72,0x40,0xfb,0xd1,0x26,0x72,0xc1 +.byte 0x91,0x25,0x7b,0x29,0xde,0xcf,0x99,0xf3,0x8e,0x87,0x39,0x81,0x04,0xad,0x3b,0x11,0x6a,0xda,0x00,0xdd,0xe9,0x41,0xc1,0xd8,0xcc,0xf9,0x59,0xac,0x9b,0xb1,0x64,0x6f,0xb8,0xf4,0x9f,0x20,0xde,0x67,0x09,0x1b,0xdf,0x11,0xa5,0x94,0x56,0xab,0x76,0xba,0xc5,0xda,0x6c,0x86,0xe6,0xa4,0x73,0x59,0xa9,0xe3,0x68,0xb9,0xc0,0x50,0x1b,0x55 +.byte 0x21,0x9e,0xea,0x8d,0xcc,0x5d,0xee,0x88,0xe1,0x18,0x7c,0xcd,0x8f,0xff,0x18,0xbd,0x13,0xea,0x95,0xc4,0x8e,0xd3,0x92,0xfe,0x3d,0xda,0x6f,0xa5,0xbc,0xa0,0x77,0x5a,0x1d,0x61,0xff,0x7b,0x77,0xc4,0x06,0x25,0xc5,0xa7,0x76,0x36,0x55,0xe7,0xc0,0xf0,0x46,0x7e,0xca,0xe7,0xc1,0xe8,0x88,0x65,0xff,0xa7,0xb6,0x9c,0x83,0x1d,0x2e,0x6e +.byte 0xd6,0xd3,0x07,0x22,0x65,0x79,0x4f,0x3c,0x0a,0x5c,0x4f,0x95,0xb3,0x14,0x37,0x9b,0x0b,0x97,0x69,0xd9,0x5b,0x37,0x09,0xc3,0x70,0x5b,0x4f,0x11,0xcb,0xce,0xc0,0x06,0xf2,0xb9,0x32,0xdd,0x24,0x7b,0x8c,0xe6,0x0c,0x91,0x3b,0xa8,0xb0,0x82,0x56,0x4d,0xde,0xa0,0x5c,0x0b,0x5b,0x70,0x53,0x64,0x9d,0xab,0xbb,0x51,0x6b,0x8c,0x8f,0xe5 +.byte 0x1f,0xc0,0xb8,0xfe,0x1b,0xf6,0x24,0x26,0x62,0xcb,0x78,0x84,0x90,0x76,0x67,0x30,0x18,0x37,0xa9,0xca,0xb7,0x0d,0xac,0x17,0x86,0xb1,0x87,0x59,0x18,0xc3,0x9e,0x62,0x1b,0xb1,0x04,0x52,0xfc,0x7c,0x86,0xa0,0x37,0xb9,0x8b,0x7a,0x85,0x79,0x21,0xe0,0x0f,0x87,0x28,0x91,0xd0,0xe5,0x24,0x63,0x5c,0x7c,0xe8,0x47,0xfa,0x42,0x55,0xe9 +.byte 0x66,0xad,0xdf,0xc3,0x43,0x90,0x47,0x83,0x24,0x09,0x54,0x5f,0x14,0x27,0x53,0xb3,0x22,0x15,0x52,0x84,0x2f,0x61,0x8c,0x01,0x9e,0x34,0x61,0x3f,0x76,0x44,0x1c,0xca,0x79,0x2c,0x40,0x4e,0xa0,0x36,0x11,0xe0,0x23,0x0f,0xa7,0x78,0xf9,0xf9,0x2a,0x2c,0x98,0x5c,0xa9,0x2d,0x66,0xb9,0x87,0x43,0xd5,0xbc,0x64,0xe5,0x52,0x2f,0x1d,0xdc +.byte 0x1d,0xf4,0xb3,0x18,0x6b,0xd1,0x3b,0x8b,0xa3,0x47,0x65,0x62,0xcc,0xca,0x5f,0x00,0xbb,0x78,0x9d,0x35,0xd4,0x79,0x45,0x33,0xc7,0xa8,0x29,0x96,0x98,0xa4,0x23,0x2c,0x23,0x7f,0x5a,0x1d,0x09,0xb4,0xcf,0xac,0x54,0xcd,0x27,0xda,0x88,0x21,0xe2,0xb4,0x85,0xdc,0xc9,0x4a,0x6b,0xc4,0xfa,0x48,0xc5,0x91,0xc1,0x53,0x4b,0xa1,0x7a,0x9c +.byte 0x8a,0x7d,0x35,0x52,0xf1,0x58,0x9d,0x20,0x36,0xc2,0x78,0xdb,0x37,0xf8,0xa4,0x2f,0x50,0x98,0xb0,0x34,0x51,0x66,0x93,0xcf,0xe7,0xf0,0x06,0xf1,0xcd,0x0e,0x4f,0x33,0xcc,0x9b,0x73,0x3b,0xc9,0x51,0x63,0x6d,0x29,0x6b,0xf4,0x9d,0x2c,0x76,0x59,0xcd,0xfc,0x11,0x35,0x52,0xbd,0x3b,0x2e,0x7d,0x8a,0x0d,0xb0,0xbb,0x90,0x9b,0x9c,0xac +.byte 0x1c,0x80,0x89,0xd6,0x6f,0xaf,0xea,0x89,0x38,0x74,0xef,0x83,0x82,0x91,0xf7,0x74,0x96,0x30,0x40,0xe2,0x18,0x2b,0xb4,0xf6,0x15,0xf0,0x8e,0x63,0xe1,0x82,0x55,0x7b,0x65,0x70,0x33,0x14,0xef,0x7a,0x7c,0x2d,0xa9,0x17,0x1b,0x53,0x1e,0xf8,0x98,0x1b,0xbe,0xc8,0x00,0xf5,0xbf,0x79,0xe7,0x8e,0xf2,0xdb,0x59,0x0d,0x46,0xab,0x43,0xd0 +.byte 0xe4,0xa0,0xeb,0x29,0x6a,0x8b,0xc1,0x99,0xa6,0xcc,0x8e,0xe5,0xde,0x67,0xdf,0x49,0x09,0x62,0x8d,0x4b,0xa1,0x1c,0x3b,0x01,0xe2,0x95,0x65,0x10,0xa5,0x91,0xd0,0x48,0x35,0x96,0xcf,0xe4,0x51,0xd2,0x7f,0x93,0x49,0xab,0x1a,0xba,0x08,0x33,0x54,0x34,0xd7,0x00,0xc9,0xa0,0x07,0x03,0xc7,0x8a,0x65,0xa2,0x84,0x60,0xcd,0xaa,0xa2,0x46 +.byte 0x8c,0x67,0xd9,0xc1,0xe7,0x58,0xc5,0x1d,0xc0,0xb3,0xc6,0xb2,0x2a,0xfb,0x70,0x04,0xa2,0x25,0x7f,0x75,0x3c,0xd5,0x8e,0x9c,0x33,0xa2,0xdc,0x20,0x4c,0x26,0x5b,0xbe,0xd9,0x00,0x5d,0xa2,0xbd,0x42,0xbd,0x0d,0xd6,0x52,0x79,0xb5,0x67,0xf6,0x27,0x62,0xc8,0x64,0x05,0xc5,0x0f,0xae,0xe1,0x78,0x39,0xd1,0xb5,0x28,0xe9,0xd4,0x2a,0xaa +.byte 0xd4,0xc4,0x3e,0x43,0x27,0x83,0xfa,0xdb,0x46,0x73,0x20,0xcd,0x2c,0xba,0x33,0xb4,0x77,0x10,0x32,0x3d,0x8e,0x56,0x88,0x81,0xe1,0x4c,0x8b,0x46,0x60,0xcb,0xb7,0x67,0xd7,0x7b,0xc2,0x47,0x7d,0xd8,0x2d,0x4c,0x09,0x9f,0x07,0x8e,0x34,0x45,0xf4,0x50,0x69,0xfd,0x35,0x0a,0x09,0x9e,0xac,0x49,0x5f,0xdf,0x72,0x84,0x97,0x93,0x30,0x2c +.byte 0xc6,0x20,0x6f,0xb5,0x18,0x03,0xb6,0x30,0x23,0xc8,0xcd,0xa1,0x43,0xbd,0xbb,0x6f,0xde,0xb3,0xcb,0x1c,0xdd,0x41,0x71,0xfa,0x37,0xa7,0xa9,0x57,0x5a,0xf7,0xee,0xcd,0xb1,0xc1,0xb6,0x78,0x1c,0xe3,0xde,0x5c,0x02,0xc8,0xce,0xb7,0x8e,0x72,0xce,0xfd,0x79,0xcf,0x1a,0xef,0xcb,0x5b,0x5d,0x3c,0x1d,0xc8,0x1e,0x9f,0x67,0x26,0x86,0xd3 +.byte 0x3b,0x98,0x49,0x04,0xcd,0x1b,0x48,0x7c,0xa6,0xbe,0x37,0x0b,0x19,0xb1,0xb7,0x8a,0x74,0x0a,0xd9,0x4f,0x7b,0xbb,0x8e,0xc6,0x9b,0xdd,0xbc,0x61,0xfd,0xdd,0x86,0x7e,0x70,0x2e,0xe4,0x94,0xb4,0x62,0x47,0x6b,0x7c,0x92,0x41,0xda,0x05,0xdc,0xaf,0x5c,0x93,0xbc,0x7d,0xad,0xce,0x44,0x9e,0x27,0x1c,0x74,0x30,0x01,0xf2,0x8a,0x22,0xce +.byte 0x88,0x61,0xf5,0xb8,0xe2,0xf0,0xca,0x14,0x21,0x53,0xd3,0xbe,0x95,0x8f,0x52,0x10,0x21,0xc5,0x25,0x16,0xa1,0x4f,0xef,0x9a,0x6f,0xce,0xe9,0xee,0x06,0xa8,0x32,0xa4,0xac,0xee,0xd8,0x95,0x0b,0x65,0x10,0xbc,0xb3,0x15,0x48,0xf9,0x96,0xee,0xde,0x5d,0xf6,0x38,0x5f,0x32,0x70,0xd1,0x29,0xa8,0x1d,0xdc,0xf4,0x34,0x2d,0x0c,0x93,0x48 +.byte 0x8c,0x40,0xed,0x35,0x41,0xfe,0x4b,0xab,0x20,0x7d,0x95,0x74,0x02,0xe5,0x71,0x76,0x7e,0x59,0x35,0xb3,0xd7,0x43,0x1f,0xd4,0xe6,0x02,0x86,0xba,0x4f,0x53,0xd9,0xc3,0x7d,0x7f,0x3d,0xb6,0xd8,0x92,0x07,0x89,0x99,0x46,0xf8,0x09,0xcd,0x19,0x43,0x93,0xa7,0xc1,0xb2,0x5d,0xec,0xbf,0x09,0xf4,0xba,0xfc,0xf7,0xf1,0xa7,0x2e,0xfe,0x71 +.byte 0x04,0x58,0xab,0x16,0xd7,0xc0,0xf7,0x03,0xd4,0xc4,0xb9,0xe4,0xd8,0xfc,0x5b,0x66,0xa6,0xb3,0x6a,0x94,0x0e,0xba,0x8c,0x54,0x5c,0x8c,0x02,0x0a,0x33,0xcb,0xde,0x1c,0xad,0x6d,0xef,0x48,0x05,0xa6,0xca,0x9a,0x27,0xd6,0x1c,0xc3,0xea,0x3a,0x46,0x20,0xec,0x72,0xc4,0x94,0x89,0x7e,0xba,0xa9,0x2f,0xe5,0xec,0x1a,0xe4,0x50,0x54,0xeb +.byte 0xd9,0x5a,0x08,0xc5,0x84,0xc1,0x9a,0xdf,0xb0,0xd4,0x9a,0x6d,0xa2,0x93,0x52,0xd2,0x4d,0x69,0x88,0xc8,0x40,0x2d,0x26,0xbd,0x7a,0x37,0x04,0x21,0xe1,0x9d,0xc9,0xed,0xda,0x7a,0x4c,0x11,0x49,0x14,0x42,0xa1,0xdb,0x6e,0xed,0x1b,0x37,0xbf,0x09,0xac,0x35,0xda,0x80,0xf6,0x75,0xd4,0x32,0x54,0xb5,0x18,0xe8,0x79,0x25,0xc4,0x95,0xe8 +.byte 0x74,0xcf,0x6d,0xac,0x34,0x1f,0xea,0xd4,0x2e,0xd1,0x77,0x5e,0x90,0x8f,0x12,0x51,0xbb,0x3c,0xdf,0xe6,0xf4,0x49,0x8c,0x0f,0x9a,0x8e,0xe3,0x96,0xbd,0xba,0xe6,0x47,0x4b,0x50,0xc7,0xa9,0x29,0xea,0x09,0x5d,0xef,0x3c,0x91,0x48,0xc6,0x37,0xfd,0xac,0x7b,0xe5,0x04,0x25,0x93,0x0b,0xe3,0xce,0x32,0x46,0x38,0x81,0x97,0x57,0xbe,0x1f +.byte 0x3c,0x61,0x2d,0xd1,0x4e,0xca,0xbb,0x44,0xc6,0xfd,0xdf,0xdd,0x11,0xbf,0xbf,0xa8,0xc0,0x32,0x67,0xc1,0x2e,0xd7,0xbe,0x3c,0xe3,0xcb,0x57,0xa5,0x6d,0xbb,0x8e,0x0f,0x69,0x22,0x42,0xef,0x53,0x0f,0xce,0x09,0x6a,0xda,0xbf,0xd6,0xed,0x61,0x67,0x82,0x83,0x13,0x63,0x97,0x7d,0x1a,0xad,0x34,0x77,0x37,0xa6,0xe0,0x89,0xaa,0xd4,0xb6 +.byte 0x8f,0x93,0xff,0xb8,0x8f,0x63,0x14,0xfd,0x17,0xff,0xe5,0x7c,0x83,0x23,0xaa,0xe0,0xb9,0xd9,0x94,0x3a,0x1a,0xe7,0xa5,0xbd,0xa6,0x2b,0xd3,0x49,0xca,0xeb,0x7d,0x87,0x1d,0x54,0x16,0x93,0xec,0x14,0x8b,0x77,0x3c,0xb4,0xbe,0x33,0x76,0x5e,0xcb,0x33,0x27,0xd3,0x20,0xd6,0xed,0x0c,0x66,0xb8,0xe0,0x00,0xa6,0x76,0xcd,0x8b,0xb4,0xef +.byte 0x11,0xbc,0xe5,0x59,0xcf,0x1d,0xf5,0x15,0x58,0x4a,0xe1,0xfd,0x87,0x8c,0x7b,0xb9,0xa4,0x42,0x5a,0xed,0x51,0x7e,0x8d,0xa6,0x19,0xaa,0xc4,0xa6,0x14,0x74,0x45,0xb1,0xda,0x87,0x0f,0xd7,0xe7,0x66,0x3b,0xcd,0x04,0x02,0x14,0x20,0x41,0x15,0x4c,0x33,0x79,0x80,0x7d,0xd4,0x44,0x2c,0xab,0x6c,0xf4,0xa8,0xd4,0x31,0x43,0x7b,0xa7,0xc7 +.byte 0x65,0x0e,0x32,0xc8,0xc8,0x6d,0xf5,0x65,0x1b,0x26,0xf1,0xe4,0x68,0x15,0x88,0x1b,0x00,0x60,0x23,0x31,0xd7,0x4b,0x57,0xda,0xf1,0x19,0xa9,0xd9,0xaf,0xe6,0xa9,0x1e,0x2c,0x0d,0x23,0xe4,0x5b,0xcb,0x43,0x38,0xf0,0x93,0xd3,0xfb,0x6a,0x9b,0x83,0x30,0x55,0x96,0x9f,0x53,0x06,0x3f,0xaf,0x40,0x69,0xef,0x9a,0x47,0x6b,0xba,0x7c,0x10 +.byte 0x10,0x44,0x89,0xfa,0xb9,0x9e,0x70,0xed,0x25,0x59,0x68,0xae,0x9b,0x17,0xcf,0x80,0x6f,0x34,0xb8,0x07,0x40,0xe5,0x27,0x6d,0xcd,0x46,0x2c,0x36,0x90,0xf3,0x83,0x74,0x68,0x35,0xf2,0x05,0xa8,0xdf,0x4e,0x34,0xc5,0xb4,0xeb,0x5a,0x7d,0xe6,0x10,0x8a,0x23,0x54,0xeb,0x9b,0x27,0xf2,0x07,0xee,0xf9,0x05,0xc2,0x5a,0x88,0xbd,0x49,0x2e +.byte 0x1b,0x00,0x31,0x68,0x4a,0xc9,0x3a,0xc5,0x93,0x82,0xa8,0x39,0xba,0x55,0xcd,0xc1,0xda,0x49,0xc2,0x4c,0xf4,0x93,0x00,0xcf,0x61,0xa4,0xbb,0x8c,0x64,0x33,0x90,0x14,0x6d,0x1d,0xad,0x75,0x97,0xd9,0x1d,0xfb,0x27,0x67,0x43,0x04,0xdc,0x4e,0xdf,0x0e,0x0c,0x7e,0x1c,0x89,0xfe,0x31,0xb7,0x9b,0x07,0x5e,0x99,0x08,0x22,0xef,0x6e,0x4d +.byte 0x8b,0xd6,0x27,0xe6,0x24,0x1a,0x28,0xb0,0x22,0xa5,0x69,0x17,0x82,0x46,0xe3,0x90,0xe8,0x04,0xae,0x90,0x66,0x14,0xec,0xa2,0x1b,0x7e,0x09,0x13,0x32,0x9d,0xec,0x8b,0x51,0x5f,0xa8,0x96,0x8f,0x4c,0xc6,0xbd,0x5c,0x70,0x29,0x21,0xac,0xe9,0x6e,0xb0,0x0c,0x61,0x50,0xba,0xcc,0x55,0x71,0xda,0x2a,0x92,0x86,0x0c,0xff,0xaf,0x7a,0xcf +.byte 0xaf,0x2a,0xbd,0xd6,0x15,0xa4,0x4c,0x2e,0x76,0x0d,0xcf,0x10,0x11,0x4a,0xd1,0x89,0xdd,0x46,0x5f,0x6b,0x5a,0x02,0x05,0x49,0x6f,0x98,0x6a,0xa7,0x8a,0x66,0x87,0x59,0x23,0xb5,0x3f,0x2e,0x95,0x73,0xfe,0x48,0xe9,0x0d,0x17,0xa6,0xa5,0x4e,0x40,0x98,0x79,0x40,0x1a,0x10,0x1d,0x84,0xdd,0x6f,0x17,0xa7,0xb7,0xfb,0x49,0xbd,0x54,0x97 +.byte 0x0f,0x42,0x25,0x95,0x83,0xf0,0x97,0xe7,0x4c,0x24,0xb5,0xe8,0x23,0x0a,0xd6,0xbf,0xef,0x2c,0x03,0x4f,0x87,0x59,0xe8,0x80,0x87,0xcc,0x51,0x1b,0x94,0xd8,0x60,0xe7,0x10,0x4d,0x01,0xfd,0x83,0xf2,0xd8,0x8d,0x1b,0x33,0xbf,0xaf,0x36,0x41,0x47,0x51,0xe0,0x45,0x2a,0x05,0x5f,0xe1,0x92,0xf8,0xa5,0x15,0x46,0x35,0xd8,0x9b,0xe0,0xff +.byte 0xee,0xa6,0x4e,0x7d,0xfd,0x96,0xa5,0x75,0xdf,0x7e,0xb0,0x7d,0x14,0x73,0xdd,0xbe,0x17,0x6d,0xdd,0xec,0xac,0x9a,0x92,0x68,0xe3,0x44,0x16,0x63,0x22,0xa8,0x15,0x58,0x8c,0x11,0x23,0x46,0x18,0xae,0x47,0x39,0x87,0xc7,0x4c,0x30,0x09,0xce,0xe5,0xc4,0xd8,0x82,0xc6,0xc6,0x3d,0x31,0xf6,0x0f,0xb5,0x69,0x61,0x63,0x88,0xd6,0xb8,0xda +.byte 0x89,0x29,0x87,0x69,0x6e,0x3f,0x55,0x2f,0xbc,0x91,0x91,0x43,0x7d,0xb3,0x7b,0x99,0x5a,0x5a,0xb0,0x7d,0x90,0xa7,0xe7,0x30,0x0d,0x32,0xb2,0x43,0x43,0x78,0x59,0x6e,0xbb,0xd7,0x76,0xd4,0x5b,0x4d,0xc4,0xa9,0x99,0xdd,0xd3,0xce,0x3d,0x13,0x41,0x38,0x33,0xed,0xb8,0x76,0x1a,0xbb,0xfd,0x26,0xcd,0x69,0x89,0x22,0x16,0x9a,0x21,0x35 +.byte 0x38,0x77,0x14,0x10,0x42,0x17,0x1f,0xa1,0xbf,0x55,0xb4,0x51,0x62,0x15,0xac,0xd0,0xa2,0x71,0xe4,0x32,0x89,0x33,0x8b,0x74,0xc6,0x61,0x38,0xd0,0xfe,0x28,0x69,0xe6,0x88,0x1b,0x11,0x7e,0x46,0x39,0xba,0x24,0xdd,0x1f,0x61,0xf4,0x74,0xad,0x58,0x94,0xa9,0x3e,0xc7,0x2a,0x9e,0xc0,0xe1,0x1c,0xee,0x21,0xab,0x3e,0x65,0x0c,0xe8,0xd8 +.byte 0x71,0x52,0xf3,0x6c,0x64,0x53,0x75,0x17,0x87,0x55,0x14,0x42,0x25,0x7f,0xe7,0x0d,0x89,0x1b,0x77,0x26,0xc4,0xaa,0xcc,0x91,0x47,0xe5,0x54,0xae,0x1a,0x0d,0x04,0x99,0xeb,0x56,0xd8,0xb4,0x6d,0xeb,0xec,0x2f,0x6c,0xc5,0x8e,0x76,0xe1,0xa0,0xa7,0x42,0x06,0xc9,0xc3,0x03,0xee,0xa9,0x9b,0x1e,0xfc,0x11,0xf5,0x2f,0x2b,0x14,0xb8,0x9f +.byte 0x87,0x61,0x9b,0xc7,0x38,0x0e,0x58,0xf1,0xd4,0x36,0xca,0x82,0x85,0x9c,0xde,0xec,0xd3,0x1e,0x29,0x4e,0x70,0x9e,0x9a,0xe0,0x8b,0x6f,0xfe,0xd0,0xe9,0x95,0x51,0xcf,0x36,0x31,0x9c,0xff,0x63,0xc6,0x04,0x8e,0x61,0xc2,0xcb,0x3a,0xfa,0xd0,0xd7,0x29,0xbd,0xe7,0x8a,0x2b,0x8e,0xa0,0xac,0x58,0x93,0xb3,0x52,0xca,0x80,0x17,0xd2,0x2d +.byte 0x93,0x5f,0xe0,0x8a,0x47,0x3c,0x67,0x95,0x64,0x91,0xa4,0x76,0xa4,0x5f,0xfa,0x93,0x4d,0xc7,0x6e,0x5d,0x23,0x9f,0xe1,0x4a,0x16,0xff,0xa5,0xf0,0x94,0xa8,0x02,0xcc,0x9a,0x84,0xd5,0x9d,0xb6,0xe5,0x7c,0x76,0x3f,0xc9,0xfd,0xdc,0x8e,0x59,0x9a,0x22,0x18,0x3c,0xe6,0x90,0x85,0x10,0x73,0x2d,0x65,0xa7,0xa7,0xe1,0xeb,0xc5,0x05,0x24 +.byte 0x1e,0x0b,0x31,0x19,0xb5,0xb0,0x8d,0xc0,0xb5,0x04,0xfe,0x9d,0xfa,0xf7,0xcd,0x71,0x29,0x40,0x19,0x23,0xed,0x2c,0xdb,0x89,0x89,0x8d,0x69,0x22,0x4c,0x9c,0xa7,0xf7,0xb1,0x56,0x87,0xa3,0x44,0xa9,0xa3,0x16,0x28,0xce,0x94,0x40,0x6f,0x71,0x77,0x0e,0x6d,0xe9,0x78,0xa2,0x2a,0x17,0x45,0x03,0xeb,0x1e,0xf1,0xfa,0x56,0x3e,0xa7,0x6b +.byte 0x08,0x06,0x6a,0xcb,0x8f,0x5e,0x0f,0xd3,0x6e,0x4b,0x21,0x31,0x73,0x50,0x94,0x56,0xf9,0xb9,0xc7,0x38,0x69,0xe8,0x09,0x3f,0x03,0xb3,0xb5,0xe8,0x2a,0x5e,0xf6,0xad,0xae,0x6f,0xab,0x6a,0x49,0xdd,0x93,0x6d,0xfb,0x8b,0xde,0xea,0x8b,0xb0,0xa1,0x44,0xf0,0xb3,0xf6,0xaa,0xe3,0xc8,0x04,0x87,0x9f,0x8b,0xee,0xab,0x13,0x1d,0x2d,0xeb +.byte 0x09,0x62,0x21,0x49,0x5f,0xb6,0x95,0xab,0xc4,0xee,0x69,0xfb,0x31,0xff,0xbf,0x1a,0xa6,0x4c,0x67,0x66,0x84,0xe6,0x0c,0xb7,0xb2,0x3e,0x3f,0xa4,0xb3,0x52,0xde,0x15,0xc9,0xa7,0xa9,0xb5,0x0d,0xe5,0x0b,0x99,0xa6,0xb6,0x8f,0x69,0xc5,0x6d,0x6c,0xbb,0x83,0x89,0x4e,0xfc,0x49,0x79,0x4d,0x46,0x31,0xa0,0x09,0x5f,0x5d,0xd0,0x5b,0x80 +.byte 0xa1,0xf4,0x36,0x48,0x97,0x6a,0xfd,0x34,0xcb,0x20,0xa8,0x01,0x25,0x04,0xe7,0x13,0x12,0x87,0x66,0x27,0x96,0x36,0xba,0x92,0xbd,0xda,0x94,0x11,0xef,0x90,0xbd,0xbc,0x9e,0xf9,0x63,0xb3,0xa6,0xc1,0xbb,0x46,0xe8,0x86,0x3f,0x2d,0xf9,0x11,0x3a,0x23,0xa8,0x7a,0x33,0x41,0x3e,0x2e,0x5d,0xde,0xc0,0xd2,0x23,0xca,0x41,0xa0,0xb9,0x70 +.byte 0x6d,0x31,0xf3,0x89,0x87,0x9b,0x72,0xd9,0x15,0x4d,0x8b,0x51,0xdd,0x56,0xa1,0xb4,0x68,0x52,0x65,0x81,0x12,0x46,0xea,0x24,0xb4,0x34,0xcc,0xa0,0xdb,0x7d,0x96,0xd9,0x8e,0x64,0x61,0x10,0x7c,0x2a,0x00,0x4d,0x82,0x61,0x54,0xa4,0x70,0x3d,0x9c,0xa5,0x0b,0xd2,0x08,0x71,0xa8,0x94,0xb1,0xb4,0x30,0x61,0x59,0x9f,0x72,0x61,0x56,0x2d +.byte 0xa3,0xf4,0x9d,0x1c,0xfc,0x49,0x9d,0x39,0x27,0xcb,0x54,0xb2,0xce,0x3c,0xb6,0x76,0xe5,0x8e,0xa5,0xe7,0x08,0xd4,0xc7,0x2c,0xa6,0x28,0xc8,0x3e,0x22,0x14,0x06,0x75,0x68,0x0d,0x6b,0xb5,0xa3,0x68,0x14,0x17,0xfe,0xb8,0xcc,0x26,0x5b,0x9d,0x0b,0xcc,0x3e,0xd7,0x6c,0xe0,0xec,0x5e,0x1e,0x1e,0xb8,0x9a,0xbe,0x91,0xb5,0xa6,0xb5,0x83 +.byte 0x28,0xc2,0x35,0x65,0xd3,0xde,0xdd,0x71,0x29,0x13,0xc1,0xee,0x78,0x22,0x34,0x0b,0x77,0x3a,0x48,0x98,0x26,0x43,0xc2,0xce,0x03,0xe8,0x75,0xf8,0x8a,0xdf,0x6a,0xb0,0xb4,0x8c,0x11,0x8c,0xe5,0x95,0x96,0x17,0xfb,0x06,0x5e,0x8f,0x36,0x10,0xc5,0x04,0x43,0x1b,0xed,0xd3,0xad,0xd4,0xa4,0xe0,0x17,0x85,0xed,0x9b,0xd8,0xae,0x98,0x46 +.byte 0x58,0x57,0x0e,0x46,0xea,0x3f,0x07,0x6d,0x0e,0x46,0xda,0x2f,0x68,0x2b,0xd6,0xe7,0x0d,0x4b,0xbe,0x32,0xee,0x10,0x73,0x18,0x7d,0x6b,0x2d,0x04,0x27,0x72,0xb1,0xe1,0xbf,0x89,0xaa,0x4d,0x1a,0xfc,0xbd,0xf2,0xc3,0x9f,0xf0,0x01,0x85,0x62,0x09,0x4d,0x08,0x2c,0x57,0x9a,0x7b,0xad,0x0b,0x79,0xff,0x14,0xa1,0x45,0xde,0x21,0x8f,0xe2 +.byte 0x93,0xd0,0x35,0x26,0xc3,0xbc,0x8c,0xb7,0x57,0x6a,0xdf,0x98,0xa7,0x75,0xc6,0xf6,0x4b,0x5f,0x91,0x6e,0x71,0x3a,0x5c,0x5f,0x57,0x63,0x34,0x87,0xf8,0x20,0x6a,0xa1,0xbf,0xf8,0xca,0x8e,0xf9,0xa9,0x10,0x8b,0xab,0x0b,0xc2,0xcc,0x71,0x89,0x7c,0xef,0x70,0x3a,0xb0,0xf6,0x90,0xcc,0x6b,0x2c,0xcc,0x8b,0x2a,0x21,0x78,0x23,0xa0,0x71 +.byte 0x8c,0x7b,0xc1,0x0f,0x27,0x72,0x40,0xe4,0x9e,0x35,0xf3,0x0a,0xc0,0x7e,0x7f,0xe5,0x9b,0xdb,0x93,0x49,0x08,0xc3,0x6b,0xb7,0xea,0xea,0xd4,0x5a,0x96,0x97,0x3c,0xdf,0xc7,0x02,0x39,0x9f,0xa3,0xca,0xdd,0x62,0xf3,0x68,0xc7,0xae,0x37,0xc1,0x35,0x73,0xb2,0x5d,0x99,0xe4,0xae,0x27,0x55,0x5e,0x6a,0xae,0x6f,0x1a,0x95,0x51,0xb1,0x3b +.byte 0xd7,0xb4,0x4d,0x3d,0x88,0x54,0x01,0xbe,0x2c,0x12,0x17,0x29,0x4f,0xf3,0xed,0x5a,0x1f,0xa9,0xf0,0x67,0xbd,0x7c,0xad,0xe5,0x58,0x52,0xd4,0xd1,0xfe,0x1e,0x1b,0xd6,0xce,0x7c,0xc3,0xa2,0xa9,0x72,0x9b,0x6a,0xe5,0xf9,0x39,0x22,0xaa,0x7f,0x2e,0xa2,0x53,0x75,0xf0,0x99,0x2e,0x36,0x86,0x83,0x10,0x63,0xd7,0xac,0xa3,0x52,0xa6,0x23 +.byte 0x80,0x46,0xe4,0xa9,0x07,0x79,0xe1,0x61,0x75,0xbf,0x08,0x31,0x6c,0xdd,0xe1,0x30,0xd0,0x35,0xc2,0xbd,0x30,0xb8,0x85,0xf3,0xd2,0x2c,0x90,0x7a,0xf0,0xd3,0x80,0xe5,0xf1,0xc2,0x58,0x3d,0xf7,0x3c,0xbc,0xff,0x03,0x4d,0xf7,0xad,0x2f,0xa6,0xfe,0x73,0xde,0xa8,0x60,0xd7,0x89,0x4a,0xcf,0x3d,0xf3,0xab,0x62,0xfa,0x9d,0x46,0xad,0xd0 +.byte 0x97,0x6f,0x89,0x84,0x16,0x9b,0x84,0xb2,0x6c,0x63,0x6d,0x29,0xee,0x8e,0x97,0x3c,0x48,0x19,0x92,0x62,0xdc,0x1d,0x35,0x9d,0xec,0x01,0x00,0x64,0xbf,0x4d,0x8b,0xa3,0x13,0x48,0x9f,0xb4,0x01,0x0d,0xb1,0xc4,0xf2,0xf2,0x6a,0x84,0x1a,0x07,0x3c,0x46,0xa6,0xb5,0x41,0x9a,0x32,0x7e,0xc3,0x4f,0x87,0x95,0x71,0x7a,0xbf,0x74,0xf8,0x0b +.byte 0xfb,0xa5,0xde,0xa8,0x35,0xf1,0xcb,0x04,0x8d,0x8b,0xd3,0xb0,0xc8,0x1d,0x6c,0xaf,0xb4,0x21,0x79,0x1c,0x34,0x71,0x2f,0xf5,0xc4,0xbe,0xad,0xbc,0xaf,0x2f,0x54,0x81,0xd9,0xf8,0xff,0x59,0xf9,0x4e,0x62,0x9f,0x7d,0x7c,0xe9,0xdc,0x67,0xae,0xa3,0x32,0x4b,0xf7,0x4e,0x53,0x4c,0x55,0x7d,0xc5,0xdd,0xd4,0x5d,0x93,0xb8,0x98,0x3e,0xd3 +.byte 0x15,0x65,0x52,0x78,0x5a,0xd2,0x21,0x84,0x5d,0x28,0xaf,0x44,0x7d,0x18,0xf8,0xdd,0x5c,0xc3,0x6e,0xc8,0x05,0x05,0x30,0xd0,0x82,0xf8,0x00,0x0f,0x3d,0x5c,0x62,0x7e,0xa6,0xd5,0x7b,0x9f,0xb1,0x44,0xb7,0x0d,0x22,0x81,0xe1,0x4a,0x2b,0x79,0x7e,0x39,0x4d,0x8a,0x9a,0xfd,0x94,0x0c,0xf7,0x23,0x10,0x99,0xd2,0xd2,0x8b,0x98,0xe5,0x9d +.byte 0xb0,0xbf,0xcf,0x06,0x08,0x80,0x32,0x69,0xfd,0x81,0x5f,0xb3,0x66,0x11,0x63,0xeb,0x30,0x1d,0xcd,0x5b,0x5b,0xec,0x0c,0xca,0x30,0x37,0xa0,0x82,0x79,0x75,0x87,0xc1,0xfa,0x5b,0x38,0x4b,0xe3,0xea,0x46,0x49,0x36,0x92,0x92,0xf0,0xc9,0x15,0xa5,0xec,0x9e,0x21,0xb6,0x9f,0xb4,0x6d,0xf6,0xef,0x5c,0x2f,0x7d,0xa4,0xb3,0x25,0xfb,0x13 +.byte 0x40,0xe1,0xa0,0x20,0x4a,0x3a,0xe2,0x3e,0xf5,0xe0,0x68,0x61,0x11,0x9a,0xfb,0x1e,0xe8,0x1b,0xe0,0x17,0x9c,0x8a,0xe5,0x53,0x74,0xdd,0xec,0xc6,0x03,0xc6,0xd0,0x9b,0xc2,0x0b,0x77,0x4c,0x36,0x2b,0xac,0x4e,0x4d,0xd2,0x26,0x70,0x39,0x96,0xb4,0x11,0x1a,0x5b,0xcc,0x3f,0xb9,0xcf,0x0d,0x04,0x55,0x05,0x00,0x66,0x8f,0xa9,0xec,0x31 +.byte 0xe5,0x47,0x4c,0x9b,0xb7,0x6e,0xa5,0xe7,0x9e,0x70,0xf4,0x02,0x2a,0x3c,0xa2,0x03,0x04,0x30,0x9e,0x3f,0x7c,0xaa,0x0a,0x8f,0x55,0x61,0xca,0x50,0x35,0xe6,0xa4,0x24,0x61,0x26,0x31,0x9e,0x9e,0x77,0x0d,0x15,0x3a,0xc0,0x88,0x32,0xb5,0xbb,0x3d,0x3e,0x59,0x25,0x52,0x81,0x2e,0x4b,0xc6,0x5d,0x9f,0x87,0x0f,0x1f,0x5e,0xec,0xdd,0xbe +.byte 0x32,0x6c,0x71,0xef,0xd2,0x9c,0xfd,0x70,0xc8,0xf6,0x1f,0xb9,0xc9,0xdd,0x4d,0x39,0x61,0x92,0xbd,0x0c,0x48,0x63,0x4b,0xd2,0x2b,0x8c,0x4b,0x35,0xb1,0x8e,0x04,0x44,0x3c,0xe1,0xde,0xfd,0x6e,0xde,0xeb,0x94,0x51,0xea,0x36,0x7b,0xc6,0x87,0x15,0x34,0x68,0xa0,0xb8,0x94,0xb6,0x56,0x33,0xf4,0xab,0x84,0xed,0x1c,0x36,0x91,0xa7,0x1b +.byte 0x03,0xca,0x48,0x64,0x16,0x5b,0x4b,0x69,0x47,0xae,0xd7,0xc9,0xcf,0x74,0xd2,0xbd,0x60,0x04,0x7c,0x66,0xe9,0x12,0x92,0x40,0x78,0x23,0x0b,0x5b,0xa0,0xda,0xf7,0xe4,0x9a,0xad,0x9c,0x31,0xe7,0xaa,0xad,0x5a,0xc3,0x45,0x00,0x6c,0xd3,0x4d,0x93,0xdf,0xb6,0x68,0x11,0x3f,0x2a,0xbc,0x9a,0x8d,0xeb,0x0f,0xb5,0xa9,0x8e,0xa5,0x2c,0x99 +.byte 0x94,0x8d,0x21,0xa9,0x41,0x6b,0x11,0x2e,0x02,0x21,0xd8,0xc1,0xbc,0xf0,0x2a,0x87,0xae,0x35,0xa9,0x78,0x5c,0x43,0xb8,0xb7,0x63,0x2d,0x09,0x31,0xae,0x6f,0xfc,0x39,0x7b,0x18,0xc3,0xce,0xe3,0xfa,0x51,0x70,0xc7,0x6b,0x5e,0xc3,0xce,0xc8,0xa2,0x3a,0x66,0x9e,0xfe,0x45,0xb4,0xa2,0xaf,0x81,0x03,0x74,0xbf,0x0c,0x65,0x4c,0x30,0x27 +.byte 0xd5,0x34,0x29,0x2d,0x83,0xa8,0xb9,0x1d,0xf8,0x12,0x09,0x51,0xdd,0x0e,0x66,0x95,0xf3,0x94,0xaa,0x83,0x3a,0x6f,0x8a,0x7c,0x3a,0x29,0x82,0xbb,0x80,0xa1,0x37,0x8c,0x79,0xf4,0x4a,0xa8,0xe4,0x17,0x72,0x77,0xee,0xc4,0xaa,0x25,0xd3,0x8f,0x2e,0xaf,0xb9,0xb2,0x3c,0xa6,0xd5,0x72,0x97,0x07,0x23,0x38,0xae,0x9e,0x22,0x08,0x85,0x70 +.byte 0xfa,0xff,0x38,0xe6,0x96,0x9f,0x2c,0x11,0x14,0x16,0x9a,0xfa,0x5a,0x7b,0x05,0x31,0x3e,0x20,0xbf,0x4d,0x87,0xaa,0xba,0x94,0xcd,0xdb,0xeb,0xec,0x29,0x58,0x4e,0x43,0x12,0xe8,0xf9,0x01,0x50,0xc8,0x51,0x7a,0x61,0x12,0xe9,0xed,0xc2,0xd6,0x2e,0xd3,0xed,0x54,0x72,0xf7,0x1b,0x0c,0x8c,0xb4,0x65,0xea,0x22,0x31,0x22,0xeb,0xcd,0x53 +.byte 0x66,0xf1,0xa5,0x34,0xe9,0x81,0x74,0xcb,0xb5,0x6b,0x45,0x71,0x69,0x6d,0x84,0xe8,0xc6,0x86,0xc9,0xdd,0x0c,0xa4,0x30,0x12,0x08,0x42,0x10,0x6b,0xcd,0x65,0x6c,0xfd,0x9c,0xde,0x77,0x3c,0x32,0x09,0xef,0x99,0x27,0x0e,0x4a,0x72,0x03,0x8d,0xb5,0x68,0xa0,0x67,0xf7,0xc2,0xae,0xb8,0xce,0x41,0x70,0x4e,0xdd,0x13,0xcb,0x3f,0x05,0x4e +.byte 0xf4,0xbc,0x88,0x98,0x2f,0x42,0x4e,0x5f,0x3e,0xcb,0x2c,0xd3,0x2f,0xb8,0x92,0xbb,0xd8,0x95,0xc8,0xaf,0xa9,0x44,0x8b,0xf0,0x2f,0x81,0xd4,0xe7,0x06,0x19,0xf7,0xa7,0x0a,0x73,0x3e,0x30,0xd9,0x00,0xe4,0x2d,0x76,0xb1,0x0d,0xfa,0x12,0x1f,0xbe,0x59,0x4f,0xf7,0xc8,0x5b,0xab,0xd7,0x16,0x3d,0x7e,0x97,0x9e,0xec,0xf8,0xcb,0x31,0x2e +.byte 0xe0,0x41,0x0b,0x00,0xa6,0x6d,0xe9,0x5e,0xd5,0x4a,0xc5,0xbf,0x1c,0xcc,0xa5,0x71,0x94,0x29,0x3d,0x17,0x43,0x27,0x63,0xc4,0xc7,0x8f,0x1b,0xb7,0x5f,0xcf,0xdf,0x8e,0x6a,0x69,0x87,0xc1,0x29,0xab,0x7b,0x8d,0xdf,0x07,0x95,0x50,0xa3,0x1c,0x8e,0xdc,0x7f,0x8a,0x21,0x37,0x1e,0x26,0xa7,0x67,0x28,0xb2,0xc8,0x23,0x5a,0x1d,0x94,0x46 +.byte 0x1b,0x3e,0x72,0x87,0x73,0x08,0xe2,0x3b,0x46,0x51,0xbe,0x5b,0xa9,0x72,0xb9,0xf8,0x45,0x6d,0x0c,0x89,0x80,0x0d,0x7a,0xfb,0x4c,0x3f,0x7f,0x3d,0x29,0xff,0xef,0xb2,0xec,0x23,0xc2,0x26,0xcf,0x8c,0x2e,0x28,0xbf,0xc5,0x68,0x47,0xd9,0x49,0x95,0xf1,0x67,0x7e,0x3a,0x48,0xe2,0x43,0x5c,0xc8,0x95,0x5b,0xb2,0xf3,0x22,0xc9,0x73,0x91 +.byte 0xb5,0x78,0x96,0x1b,0x9a,0x75,0x5f,0xb2,0x6b,0x8c,0x66,0x8c,0x8e,0xc1,0xe1,0xde,0xd6,0x64,0x31,0xe1,0x7b,0x12,0xd2,0x85,0x8f,0x52,0x68,0xec,0x80,0x26,0x3d,0xcc,0x9b,0xe3,0x57,0xbe,0x19,0x42,0xb9,0xdd,0x7d,0x2b,0x5b,0x6d,0x1b,0x9e,0x96,0xd7,0x75,0x83,0x82,0x3c,0x3e,0x5f,0xf8,0xa9,0x36,0xbe,0x14,0xc7,0xce,0x9d,0x05,0x7e +.byte 0xd7,0x38,0x37,0x35,0xc9,0x37,0x8b,0x9f,0xc6,0x2d,0xff,0x00,0x41,0xff,0x1b,0x09,0xea,0xd2,0xb0,0x04,0x48,0xff,0xfc,0xb5,0x67,0x54,0x39,0x3d,0x23,0x68,0x0b,0x7d,0x97,0xf3,0x65,0x20,0xa2,0xf8,0x33,0x96,0xd1,0xf4,0xc7,0xba,0x6f,0x00,0x95,0x36,0xf6,0x33,0xd1,0x8d,0xde,0xee,0x1e,0xfa,0x60,0x8e,0x5e,0x4c,0x70,0xbb,0x53,0x79 +.byte 0xc9,0x9a,0xdf,0x3c,0x53,0xe4,0x35,0x87,0xc3,0xe6,0x8e,0x0e,0x1a,0xd0,0xf8,0x57,0x2b,0x33,0x51,0x4d,0x7d,0x43,0x17,0x3e,0x6f,0x0e,0xca,0x86,0xb2,0xc6,0x09,0xf3,0x2f,0xc1,0x5f,0x0e,0x9a,0x5e,0x7d,0x9d,0xf7,0xff,0x09,0x46,0xe5,0x30,0x91,0x61,0x93,0xb5,0x2f,0xc5,0x7f,0x09,0x0b,0x55,0x94,0x17,0x25,0x19,0x9b,0xa9,0x0e,0x68 +.byte 0x71,0x18,0x1b,0x4b,0x1b,0xa3,0x75,0x90,0x56,0x96,0x5e,0x33,0x71,0xf2,0x06,0x69,0x07,0x04,0xcb,0x8c,0x79,0x9b,0xa5,0x17,0xd8,0xd8,0x77,0xc7,0xca,0x95,0x58,0x12,0xec,0xdd,0x41,0xc9,0x12,0x16,0x9a,0xc4,0xf0,0x27,0x7a,0x8e,0xeb,0x19,0x79,0x27,0x7b,0x2e,0x55,0x96,0x57,0x19,0xbe,0x55,0x8c,0x7f,0x97,0x90,0x80,0x40,0x5d,0x5a +.byte 0xf6,0x07,0xd6,0xb4,0xc5,0xe8,0x0e,0x54,0xde,0x78,0x23,0xca,0x39,0x90,0x42,0xb6,0x8b,0x14,0x22,0x06,0x71,0x77,0xd5,0xf7,0x8d,0x05,0x9d,0xbf,0xfe,0x38,0x91,0xba,0x79,0x85,0x30,0x47,0x25,0xf0,0xa2,0x72,0x55,0x94,0x2a,0x8a,0xc8,0x28,0xc8,0xa9,0x23,0xab,0xf0,0x4e,0x49,0x2f,0x58,0x53,0x35,0xd1,0xb6,0x16,0x81,0xc2,0x25,0x18 +.byte 0xd9,0x71,0x91,0xc4,0x81,0x3e,0xf4,0xd7,0x87,0x9e,0x57,0x78,0xf7,0x7d,0x4b,0xb2,0xfd,0x91,0x9f,0xa8,0x0e,0x77,0xb3,0xc7,0xe5,0x6a,0x95,0x17,0xc3,0xf4,0xcb,0x7f,0x96,0xc1,0xa8,0xee,0x6a,0x0f,0x1f,0x5d,0x20,0x28,0x93,0xe5,0xf3,0x13,0x46,0x53,0x47,0x9f,0x98,0xc6,0xf5,0x29,0x69,0xb9,0x83,0x36,0x03,0xa1,0x9a,0xb4,0xa9,0x4e +.byte 0xd6,0xda,0x25,0xe2,0x5b,0xbb,0x95,0xdf,0x0f,0x37,0x0b,0x02,0x51,0x03,0xd1,0x0e,0x84,0xef,0xdd,0x85,0xdd,0xae,0x10,0x32,0x65,0x03,0x65,0xf0,0x8e,0x0c,0x69,0x90,0x35,0x26,0x36,0xe8,0x05,0x46,0xe6,0xce,0x52,0x4d,0xb5,0x93,0x9f,0xe3,0xe5,0xb0,0x43,0x57,0x32,0x5d,0xca,0xd4,0xc9,0x89,0x2e,0x5b,0x03,0x8a,0x82,0x78,0x21,0x6b +.byte 0x41,0xa9,0x0a,0x9f,0xe0,0x50,0xec,0x72,0x01,0x67,0xe7,0x1c,0x92,0xe3,0xe4,0x83,0x4d,0x4b,0xcf,0x01,0x37,0x2f,0x34,0x86,0xcf,0x36,0xf7,0x3a,0x57,0xa3,0x89,0x73,0x0f,0x9c,0x06,0x82,0x75,0x7a,0x4b,0xd8,0x44,0x40,0xf2,0xc5,0xc4,0x22,0xa6,0x99,0x1b,0x73,0x2f,0xad,0x09,0xe9,0x84,0x6f,0xc3,0xca,0x72,0x3a,0x8a,0x55,0x55,0x0a +.byte 0xcd,0x33,0x51,0xef,0x5b,0x36,0x77,0x6c,0xb4,0x4a,0xae,0xdd,0xbd,0xec,0x65,0x99,0x43,0xd6,0x8a,0x16,0xba,0x89,0x4d,0x0c,0x11,0xb4,0x0d,0x5d,0x3e,0x76,0xcb,0x48,0x9d,0x31,0x40,0x71,0xe2,0xe4,0xa9,0xd9,0x6e,0x3c,0x3d,0xd1,0x6e,0xaf,0xb9,0x28,0x71,0x5a,0x07,0x6f,0xab,0xdb,0xf8,0x4f,0x11,0xbc,0xe0,0x14,0x01,0x43,0x4d,0xe2 +.byte 0xad,0x5d,0x2a,0xb2,0x58,0x66,0x05,0x50,0x66,0xf6,0x2f,0x66,0x11,0xd1,0xd7,0x05,0x85,0xb0,0x7f,0xa8,0x89,0xbd,0x41,0xda,0x35,0x1e,0xbb,0xff,0x70,0x1a,0xe8,0x65,0x96,0xe9,0x50,0x18,0x7f,0x4c,0xb2,0xe2,0x95,0x26,0xf6,0x37,0x09,0x8c,0x8d,0x7b,0x02,0xb0,0x7f,0x32,0xb5,0x70,0x22,0xd6,0x83,0x0b,0x85,0x25,0x00,0xc5,0x55,0x3f +.byte 0xfa,0x7a,0xc9,0xaf,0x87,0xc1,0x1c,0x11,0x96,0x71,0x18,0xd8,0xdb,0xab,0x86,0x57,0x0a,0x16,0x23,0x32,0x40,0xd3,0xaf,0x17,0x55,0xe3,0xe7,0x01,0x65,0x1f,0x87,0xda,0xb5,0x46,0x67,0x18,0x34,0xcc,0x28,0x77,0xc3,0x12,0x62,0x6c,0x8b,0x8a,0x11,0x7a,0x5a,0xd1,0xdf,0xb3,0x13,0x6b,0x29,0xce,0xf8,0x03,0xba,0xad,0x7c,0x14,0x60,0x42 +.byte 0x17,0xf6,0x7b,0x0c,0xb7,0x5f,0xd6,0xc1,0xb5,0xa5,0x2b,0xb1,0x9f,0x6c,0x65,0x29,0xe5,0xf4,0x84,0x85,0x11,0x82,0xf1,0x4c,0xcd,0xff,0x99,0x29,0x53,0x7b,0x43,0x04,0x60,0xc4,0x6c,0x01,0x5c,0xcb,0x33,0x4f,0xdb,0xc4,0xad,0x8c,0xea,0xff,0xd6,0xcd,0x8e,0x85,0x6e,0x54,0xd5,0x18,0x63,0x84,0x78,0xea,0xff,0x08,0x95,0xdc,0x2a,0x07 +.byte 0xac,0xea,0x44,0x79,0x52,0x07,0xf3,0xf1,0x03,0x7f,0x71,0x53,0xd8,0x85,0xdb,0x70,0xde,0x5e,0xd5,0x9a,0x18,0x9f,0xcc,0x3f,0xc0,0xc0,0x49,0x82,0x70,0x09,0xce,0x29,0x04,0x0a,0x19,0x81,0xd9,0x81,0x22,0x71,0x48,0x8e,0x79,0x08,0x1c,0xb4,0xc8,0x7e,0x60,0x43,0x4a,0xe3,0xd5,0x6b,0x09,0x5c,0x01,0x6e,0x20,0x9e,0xd2,0xaf,0x80,0xb7 +.byte 0xa2,0x0a,0x5b,0x26,0x08,0x32,0x73,0xbc,0xc6,0xfd,0x06,0xaa,0x2e,0x55,0xa0,0x5b,0xa9,0x3c,0x85,0xb2,0x04,0xdc,0x9a,0x94,0x02,0x93,0x96,0x6b,0x3e,0xc3,0x5e,0x37,0x9b,0x6f,0xef,0xb9,0x65,0x52,0x42,0x1c,0xa7,0x84,0x09,0x0c,0x49,0x3a,0x95,0x06,0x94,0xd7,0xc7,0x40,0xf5,0xf1,0x69,0x41,0xfb,0xf8,0x57,0xb5,0x1e,0x0c,0xf3,0xd9 +.byte 0xb1,0x2e,0x58,0x33,0xbe,0xb1,0x3d,0x61,0xc6,0xca,0x01,0xe5,0xda,0x60,0x8f,0x87,0xf7,0x9a,0xb5,0x92,0xb4,0x8c,0x2a,0xaf,0xd4,0x1e,0x9c,0x97,0x39,0x83,0x99,0x4a,0x07,0x54,0x75,0x7d,0xde,0x72,0x06,0xc1,0x8f,0xb4,0xde,0x12,0x43,0xf2,0x62,0xae,0xe7,0xec,0xfe,0xb2,0xe5,0x63,0x35,0xb7,0xee,0xaa,0xf0,0x09,0xb8,0x61,0xf2,0x42 +.byte 0x28,0x87,0xd7,0x47,0xa8,0xfc,0x51,0x85,0x6f,0xa2,0xb1,0xa6,0x82,0xd6,0x0e,0x1b,0x3f,0xea,0xa1,0xe1,0x91,0xc9,0xd2,0x5b,0x3e,0xff,0x18,0x39,0x14,0xe0,0x44,0xda,0x3d,0xd8,0xca,0xdb,0xd9,0xbf,0x3f,0xa4,0xdb,0x99,0x2e,0x31,0x32,0x7c,0xf4,0x61,0x2f,0xa1,0xf9,0xa9,0xbe,0x26,0x94,0xea,0xb4,0xe3,0x25,0x8d,0x93,0x3b,0xa1,0x7e +.byte 0x1e,0x99,0x87,0x6c,0xaf,0x14,0x54,0xd0,0xc0,0x37,0x39,0x76,0x3c,0x07,0x2e,0xce,0x98,0x25,0x81,0xe4,0x01,0x0c,0x07,0x79,0x4e,0xcd,0x82,0x44,0x83,0x04,0x07,0xa6,0x52,0xb7,0x96,0x7c,0x43,0x12,0xe1,0xc5,0x12,0x18,0x25,0x47,0xe4,0x19,0x6d,0x26,0x1e,0x55,0x66,0xca,0x28,0x4c,0xfa,0xd2,0xd9,0xcc,0x7e,0xad,0x9f,0x2a,0x2f,0xc6 +.byte 0x6c,0x77,0xaa,0x0f,0x5b,0xeb,0x15,0x97,0x62,0x52,0x3c,0x6f,0x4b,0xf3,0xcc,0x80,0x7b,0x1f,0x1d,0x58,0xf8,0xfe,0xc1,0x8c,0x3b,0xe3,0xd7,0x05,0xc3,0xd6,0xa9,0xda,0xcf,0x85,0x1c,0x68,0xd6,0x6d,0x2b,0x06,0x30,0x5f,0x58,0x39,0xea,0xfa,0x99,0xaa,0x04,0x10,0x05,0xaf,0xb0,0xf7,0x32,0x60,0x8d,0xe4,0xd1,0x40,0x32,0xd6,0xa3,0xf2 +.byte 0xba,0x5a,0x79,0x58,0x92,0x75,0xf0,0x3a,0xce,0xb2,0xee,0x66,0x3e,0xe3,0xbe,0x4d,0x53,0x9d,0xbb,0xdb,0x45,0xf0,0x09,0xeb,0xd5,0x83,0x39,0x20,0x06,0xa9,0x44,0x35,0xeb,0x6d,0x9b,0xd9,0xa4,0xda,0x4b,0x9d,0xde,0x3d,0x26,0xa2,0x2d,0xcf,0x8e,0x3e,0xbc,0xb4,0x8c,0x3a,0xbf,0x56,0x7c,0x48,0x50,0xb5,0xc5,0xbe,0x84,0x5e,0x63,0x82 +.byte 0x5f,0x87,0x77,0x4a,0xa7,0xf6,0x66,0x07,0x42,0x6a,0xb0,0xcf,0x19,0xaf,0x6c,0x16,0x85,0x78,0x88,0x3b,0xa5,0xbc,0x42,0xd2,0x4c,0xdf,0x51,0x3b,0xc4,0x0e,0xf5,0xc5,0x70,0x57,0x40,0xf6,0xed,0xd2,0x37,0x3e,0x14,0x0c,0x31,0xda,0x94,0x87,0x6b,0xd9,0x8c,0x15,0x41,0xa9,0xc0,0x2a,0x61,0xd3,0x52,0xe0,0xb6,0x0a,0x83,0x6b,0x75,0x1b +.byte 0x1e,0xd1,0x7f,0x26,0x19,0x34,0x9b,0x70,0xc9,0xba,0xdc,0xa2,0x03,0x6d,0xc7,0xac,0xbd,0x2c,0x63,0x8a,0x7b,0xb1,0x62,0x51,0xc1,0x1d,0x54,0x0d,0x34,0x0e,0xfb,0xa6,0xb8,0x9d,0x79,0x4f,0xc3,0xaa,0x8d,0xa0,0xcc,0x80,0x96,0x86,0x37,0xd6,0x80,0x9c,0x3d,0x91,0xd0,0xe7,0xe2,0xb4,0x00,0xba,0x86,0xe9,0xeb,0x86,0xea,0x84,0x78,0x81 +.byte 0x20,0x29,0x28,0x02,0x4d,0xd8,0x1b,0x5e,0x4f,0x41,0xfc,0x13,0x3e,0x4c,0x7f,0x64,0x55,0x35,0x41,0x0d,0x74,0xc5,0x6a,0x7c,0x37,0x82,0x41,0xbd,0x67,0x39,0xd9,0x83,0xfa,0x7f,0x8c,0xe1,0x9f,0x23,0x0d,0xe4,0x1d,0x40,0xe6,0x6e,0x94,0x5d,0xec,0x77,0xf7,0x5e,0xb4,0xa1,0x03,0xfb,0xa0,0x0e,0xba,0xf8,0x28,0x50,0x3c,0x38,0x47,0xf7 +.byte 0xed,0x2d,0xe5,0x0b,0xa8,0x7a,0xbd,0xbf,0x7e,0x38,0xc0,0x60,0xe7,0x7e,0xb1,0x03,0xef,0x4a,0x8c,0xc7,0x98,0xf1,0x94,0xf6,0xa0,0x50,0xb2,0x0b,0x7c,0x66,0x0a,0x62,0x10,0x24,0xb0,0xa1,0x69,0x02,0x33,0x79,0xbf,0xd0,0xb5,0xcb,0x17,0x20,0x55,0x02,0x70,0x44,0x5b,0xac,0x20,0x35,0xea,0x05,0x2d,0x68,0x51,0xe7,0x5f,0x1b,0xcd,0x4c +.byte 0x33,0x4d,0x04,0x21,0xfd,0x06,0x67,0x82,0x60,0x98,0x1f,0x79,0xf4,0x28,0xe0,0xa8,0x18,0xeb,0xf5,0x86,0x58,0xe6,0x9f,0xb5,0x29,0x0f,0xe8,0x37,0xeb,0x09,0xf4,0xc6,0x08,0xf2,0xde,0x4d,0x96,0x48,0x62,0x36,0x63,0x10,0x3f,0x63,0xeb,0x44,0x84,0xc8,0xf5,0x74,0x19,0x03,0x50,0xf7,0x7c,0xd2,0x06,0x20,0x6e,0x9b,0xa2,0x37,0xb0,0x68 +.byte 0x78,0x31,0xb6,0x05,0xfa,0xc9,0xcd,0x1d,0x4c,0xbd,0x33,0xb7,0xf3,0x93,0x38,0x7d,0x5f,0x00,0x85,0x5b,0x10,0x7f,0xc4,0x3f,0x3e,0xfe,0x62,0xca,0x51,0x83,0x95,0xcf,0x00,0x65,0x83,0x0e,0xd3,0x78,0xd0,0x51,0xcb,0x70,0x34,0x42,0xc6,0x3a,0x04,0xb9,0x10,0x92,0xe0,0x09,0x06,0xb0,0x66,0x9b,0x37,0x02,0x8d,0x0d,0x3e,0x2f,0xc5,0x17 +.byte 0x6a,0x87,0x7d,0x48,0xa4,0xcc,0x55,0x20,0x7b,0x77,0x07,0xcf,0x44,0x2f,0x88,0x8a,0xcc,0xf2,0x5d,0xa6,0x3e,0x5f,0xda,0xe2,0xde,0xd2,0x7f,0x7f,0xb7,0x90,0x53,0x64,0x6b,0x79,0x42,0x52,0x69,0xc6,0xd6,0xaa,0x9f,0xf9,0x19,0xbe,0x65,0x10,0x99,0x49,0xaf,0x36,0x49,0x1b,0x8a,0x3d,0x7f,0xdb,0xa2,0x1a,0xb5,0xd6,0x34,0x51,0xc8,0xc8 +.byte 0x06,0xca,0xf6,0xb8,0x76,0xa8,0x9d,0x43,0xae,0xf0,0x51,0xe5,0x9a,0x42,0xa2,0x83,0xed,0x20,0x8d,0xe8,0x1c,0xca,0x15,0x4e,0x37,0x3f,0xd8,0x06,0xa0,0xe1,0xf8,0x05,0xfd,0x42,0xf3,0x7a,0x96,0x44,0x36,0x02,0xca,0x11,0x2a,0xc3,0x24,0x58,0xdd,0x85,0x55,0xb2,0xe5,0x1d,0x92,0xc2,0x2d,0x5f,0x7c,0xb5,0x02,0x37,0x7c,0x07,0x35,0x25 +.byte 0x2b,0x33,0x80,0xe2,0xd4,0xfd,0xc7,0xa7,0x19,0x7e,0xba,0x36,0xaf,0xa0,0x4e,0xab,0x8b,0x28,0x4f,0x3b,0x92,0x72,0x42,0x49,0xaa,0x3b,0x08,0x0f,0x1e,0xff,0x2d,0xbf,0x9c,0x48,0x16,0x72,0xbe,0x28,0x05,0x8b,0x3a,0x20,0x6b,0x38,0x43,0xa2,0x35,0xea,0xf7,0x4e,0x50,0xa0,0x43,0x40,0x5c,0xbf,0xe5,0x75,0x13,0x4c,0x36,0x61,0xa1,0x5d +.byte 0x46,0xd7,0x7a,0x94,0x06,0x2f,0x63,0x32,0x9c,0x6e,0x54,0x18,0x31,0x79,0xf2,0x83,0xcf,0xb4,0x47,0x40,0xe5,0x9a,0xd6,0x99,0x12,0xb3,0x61,0x3d,0x0f,0x5e,0xc8,0x95,0xa3,0x5f,0xc3,0xd5,0x6b,0x6e,0xa0,0xf2,0x2f,0xeb,0x66,0xd0,0x68,0x67,0x10,0x85,0x64,0x27,0xd8,0xb8,0x68,0x00,0x36,0xa5,0xab,0x3e,0xe1,0x43,0x65,0x81,0x2d,0xb9 +.byte 0x0f,0x87,0xfe,0xa1,0x52,0xe9,0x8d,0x82,0x3a,0xd1,0x10,0x52,0x34,0x48,0x7c,0x1c,0xc6,0xd0,0xfe,0xa0,0x1a,0x92,0x07,0x88,0x57,0x9e,0xd7,0x5e,0x9f,0xc8,0xb0,0x93,0x73,0x03,0x28,0x36,0x8c,0x25,0x8c,0x0f,0x4e,0x0f,0x5b,0x26,0x58,0xed,0x5c,0x33,0x75,0x20,0x08,0x11,0x47,0xe1,0x47,0x85,0x47,0xeb,0x54,0xbf,0x58,0xe3,0xd4,0x5b +.byte 0xf9,0xc6,0x5e,0x42,0x58,0xe6,0xaf,0x79,0x66,0x3c,0xa5,0xa3,0x30,0x33,0xe3,0xbe,0x21,0x4b,0x42,0x98,0x6e,0x44,0xd7,0x68,0xc0,0xff,0xbe,0x7f,0xc5,0xb3,0x4f,0x4a,0x93,0xb0,0x11,0x88,0xcf,0x36,0xb2,0x03,0xbe,0x30,0x52,0x71,0x20,0x0d,0x16,0xc5,0xbb,0xf5,0x92,0x12,0x67,0x6a,0x35,0x66,0x00,0x09,0xd7,0xc6,0x67,0xb0,0x6a,0x04 +.byte 0x19,0x3e,0xbf,0xe2,0x82,0x74,0x78,0x2f,0x77,0x44,0xdc,0xad,0x0f,0x66,0x2a,0x23,0x62,0x2c,0x5a,0x4e,0x3a,0x82,0x2a,0x75,0x16,0x0d,0x74,0x64,0x35,0x53,0xc5,0xf6,0xda,0x36,0x44,0xba,0xe2,0xfa,0x1e,0xc2,0xcf,0x29,0x01,0x36,0x66,0xc3,0xca,0x40,0xf7,0xc4,0xba,0x67,0xac,0xf6,0x17,0xcc,0xa3,0x96,0x2d,0x08,0x5f,0x0a,0xea,0x5e +.byte 0x97,0xdc,0xc8,0xf9,0x59,0x24,0x6e,0xc5,0x0b,0x02,0xb9,0x1a,0xde,0xac,0x60,0x1d,0xaf,0x9f,0x5a,0x6f,0xe1,0xa6,0xdf,0x75,0xc5,0x9b,0xb7,0xde,0xa4,0xf7,0xf6,0xa4,0xdc,0xb6,0x96,0x08,0xde,0x2a,0x0e,0xb3,0x9d,0xf5,0x75,0x7d,0x7e,0x96,0x91,0x79,0xd4,0xa7,0x30,0x97,0x3a,0xbd,0x7c,0xe0,0xc5,0x87,0x24,0xb0,0x65,0xb7,0x58,0x00 +.byte 0xd9,0x0e,0x97,0xa6,0xa4,0x6a,0xe8,0x0a,0xac,0xac,0x9f,0x3a,0xe3,0x2a,0x9a,0x43,0x41,0x92,0x6e,0x0e,0xc4,0x63,0xc3,0x18,0xb6,0xe1,0xef,0x3d,0xe8,0x0b,0xb0,0x9f,0x2e,0x19,0xa0,0x98,0x98,0x34,0xf8,0x86,0x6d,0xc5,0x8c,0x41,0x26,0xb7,0xf2,0x1d,0xd4,0x72,0x39,0xeb,0x79,0x06,0xaf,0x53,0xaa,0x34,0x80,0x53,0xf8,0x1b,0xf4,0x53 +.byte 0x19,0xfa,0x16,0x8b,0x39,0xea,0x63,0x7f,0x38,0xc4,0x66,0x1d,0xd1,0x90,0xe4,0x2f,0x20,0x43,0x0d,0x5f,0x98,0xcc,0xae,0xef,0x86,0xc8,0xe5,0xf6,0xd2,0xa5,0x49,0xd0,0x3f,0xb5,0x7e,0x42,0xb5,0x6e,0x5e,0x13,0xa5,0xb4,0x71,0x2c,0x5d,0x57,0x24,0x06,0xd2,0x29,0x7c,0x4c,0x90,0xb6,0xea,0xdb,0x62,0xa4,0x2c,0x6c,0x38,0x57,0x97,0xbd +.byte 0xfd,0x41,0x6e,0x26,0xc1,0xe1,0x6b,0xbb,0xf0,0xe7,0x71,0xf1,0xcf,0x6a,0x7f,0xfa,0xe7,0xfb,0x17,0xe7,0x81,0x19,0x9a,0xf2,0xf6,0x86,0x22,0x4f,0x62,0x59,0xd6,0xc2,0x33,0xbd,0x11,0xe7,0x07,0x3a,0xfe,0x74,0x0d,0xf8,0xd9,0xdb,0xbd,0x05,0xf4,0xf4,0xb1,0x41,0xc9,0xb3,0xf8,0x6a,0x7b,0x98,0x08,0x6c,0xce,0x4c,0x28,0xbf,0x8c,0x77 +.byte 0x68,0xdc,0xee,0xf7,0x11,0xde,0xfc,0x5a,0x58,0x4f,0xf4,0x74,0x9d,0x5b,0x78,0xc3,0x78,0xe5,0x5e,0x26,0x83,0x40,0x17,0x80,0x2a,0x02,0xa4,0xf1,0x0f,0xa0,0xc8,0x22,0xe6,0x09,0x3a,0x52,0x74,0xf0,0xb9,0xb9,0x60,0xaf,0x20,0xa6,0x7e,0x88,0xf4,0xc2,0x38,0xa2,0x21,0x73,0xa9,0x18,0x3f,0x7a,0x04,0x7b,0xc4,0xcd,0x68,0xd9,0x83,0xa4 +.byte 0x8e,0x54,0x0d,0xbc,0xee,0x8b,0x39,0x93,0x66,0xa2,0xd6,0x76,0x4a,0xb2,0x33,0x4f,0x61,0x53,0xde,0x3b,0xff,0x47,0xcb,0x87,0xd9,0x21,0xd0,0x82,0x64,0x54,0xdf,0xf2,0x67,0x62,0x40,0x33,0xc7,0x0d,0xea,0x98,0xaa,0x95,0xfb,0xa9,0x0e,0x90,0xa5,0xd9,0x54,0x81,0x86,0xad,0x9e,0xa4,0x4d,0x36,0xe1,0x77,0xf2,0xe3,0x0a,0x54,0x1a,0x57 +.byte 0x9d,0x62,0x5e,0x0e,0x00,0xc8,0xa6,0x1e,0xf3,0x43,0xe6,0x20,0x0d,0x6a,0x8e,0x90,0x1d,0x4d,0xac,0x2f,0x9f,0x1c,0xb7,0x30,0xec,0x5c,0x99,0x78,0x6f,0x3b,0xe7,0xe0,0x28,0xb9,0x97,0xc5,0x6a,0xf2,0x17,0xc2,0x11,0xac,0x1a,0xe2,0xca,0x57,0x49,0x64,0xc8,0xc7,0x66,0x43,0x8d,0xc8,0xa7,0x0e,0xfc,0xcf,0x05,0x2f,0xae,0x4b,0xfe,0xe4 +.byte 0xbe,0x9c,0xe7,0xe6,0xa8,0x36,0x49,0x0d,0x9c,0x60,0x39,0x0c,0xfd,0x41,0x5b,0xc7,0xa4,0xa5,0x30,0x89,0xe5,0x10,0xf6,0xea,0xf8,0x2c,0xf2,0x3e,0xb1,0x96,0x81,0xa7,0x32,0x8b,0x39,0x14,0x15,0x36,0xfc,0x55,0x3c,0x22,0xcf,0xa3,0x98,0x90,0x68,0x13,0xd8,0x3f,0xf2,0x53,0x19,0x3e,0x9a,0x0c,0x1f,0xc6,0x29,0x43,0x46,0x23,0x58,0xea +.byte 0x49,0x49,0x15,0x46,0x8e,0x63,0x30,0x1f,0x3e,0x2a,0xa0,0x18,0xfd,0x28,0xc5,0x32,0x77,0x75,0xac,0x6e,0x5d,0x39,0xa9,0x44,0xce,0xfe,0x39,0xa6,0xec,0xde,0x69,0xde,0xfa,0xc8,0x40,0x44,0x34,0x29,0x15,0x19,0xa7,0xbe,0xd6,0x5b,0xfd,0x1f,0x7b,0xb9,0x88,0xf1,0x14,0xcf,0x42,0xc5,0xa7,0xa7,0x0e,0x6b,0x6e,0x86,0xb2,0x7c,0x23,0x8e +.byte 0xf6,0xae,0xde,0x3c,0xd7,0x26,0x5e,0xde,0x31,0x94,0xc1,0x19,0x65,0x55,0x03,0x73,0xba,0xdc,0x69,0x95,0x9c,0x9d,0x8e,0x59,0xd8,0x51,0x61,0x9f,0x8f,0xf4,0x29,0x43,0x4b,0x6a,0x75,0xb3,0x4b,0x9d,0xcc,0x46,0xd2,0x6e,0x00,0x49,0x4f,0xf0,0xac,0x80,0x55,0xc0,0x0c,0xbf,0x18,0x52,0x75,0x76,0x3b,0xac,0x92,0x83,0x69,0x1b,0xb4,0x15 +.byte 0xe5,0x9e,0xde,0x10,0x30,0x30,0x0e,0x85,0xc7,0xf9,0xae,0xbc,0x9e,0xaf,0x4b,0xee,0x27,0x6b,0xa5,0x6d,0xe4,0x8e,0xed,0xdd,0x95,0xaa,0x85,0xe2,0xf5,0x38,0x15,0x50,0xd3,0xcd,0x2c,0x88,0x6c,0x2b,0x14,0x37,0x74,0x2d,0x6d,0x30,0xec,0x96,0x78,0xae,0x80,0xb3,0xd9,0x84,0xc1,0xd6,0x71,0x90,0xe4,0x8d,0x3a,0x7c,0x9c,0xc4,0xf5,0xa0 +.byte 0x20,0x7e,0xa2,0x0e,0x75,0x7c,0x25,0x7a,0x7e,0x2b,0x2e,0xdb,0x12,0x23,0x73,0x6a,0x8e,0xe3,0xd7,0x47,0x94,0xfb,0xcc,0xe4,0x5a,0x8c,0xfb,0xdc,0x46,0xb3,0x4a,0x42,0x15,0xe0,0xaf,0x6e,0x81,0x72,0x72,0x04,0x52,0x09,0xc5,0x8b,0x6e,0xdd,0x7d,0xff,0x27,0xa8,0xc1,0x94,0xb5,0x33,0x59,0xc2,0x7d,0x59,0x6c,0x3c,0xaa,0xd9,0xd8,0x05 +.byte 0x43,0x7e,0x8a,0x47,0xdd,0x76,0x36,0xe3,0x05,0x49,0xd1,0x8f,0xdf,0x45,0x46,0x63,0xff,0x17,0xb4,0x52,0xc8,0xee,0x4d,0xf5,0x74,0x65,0xc6,0xca,0x19,0xfd,0xb9,0x51,0xc8,0xc9,0x96,0xd4,0x06,0xd4,0x09,0x1e,0xab,0x6d,0x1b,0x26,0x61,0x80,0x5b,0xa8,0xcb,0x62,0x92,0x5a,0x1a,0x8e,0xa4,0xb7,0x25,0x19,0x96,0x63,0xd5,0xc3,0xc9,0xdc +.byte 0x04,0x83,0x62,0x31,0xe3,0x76,0x00,0x4d,0xf8,0xb3,0x98,0xae,0x4d,0x1a,0x38,0xe3,0xa1,0x27,0x52,0x87,0xbe,0x2c,0x93,0x45,0xd1,0xab,0x56,0xc6,0xf5,0xbc,0xb5,0xe6,0x9c,0xe1,0x1b,0x37,0x42,0x08,0xe7,0x71,0xb5,0xa4,0x67,0xf9,0x48,0xd4,0xc4,0x10,0x25,0x53,0x9c,0x03,0xfc,0x6d,0x5e,0x62,0x5e,0x6d,0x56,0xbc,0x78,0x11,0x0a,0x6d +.byte 0x1b,0x7a,0xdc,0x62,0xb5,0x58,0x86,0x15,0x71,0xff,0x11,0x33,0x94,0x2b,0xa6,0xc7,0x68,0xd5,0x68,0xda,0x5b,0xd5,0xb7,0x38,0x6c,0x1c,0xf4,0x07,0x39,0xef,0x1f,0x72,0x0a,0xb3,0x12,0x13,0x25,0x86,0xd3,0xf8,0x9f,0xb5,0x40,0x58,0xe7,0x5e,0x9f,0xa0,0xbc,0xd7,0xab,0x4f,0xf3,0x94,0xcf,0x0f,0x5a,0x4c,0x98,0xb4,0x70,0x35,0x62,0xee +.byte 0x33,0x24,0x72,0x31,0xd4,0x06,0xd9,0xb4,0x1c,0x1e,0x0f,0xa7,0x48,0xc7,0x75,0x45,0x40,0x02,0xd0,0x60,0x32,0x29,0x4d,0x61,0x7a,0xee,0x65,0x35,0x2b,0xe5,0x50,0xac,0x82,0xdb,0xf7,0x9c,0x8f,0x82,0xe4,0xf0,0xbd,0xdb,0x00,0x3d,0x3a,0x3d,0xa2,0xc3,0x2d,0x0e,0x51,0x20,0xdb,0xdb,0x8d,0x15,0x03,0xbd,0xcb,0xcb,0x24,0x81,0xc5,0xdb +.byte 0x05,0x39,0x48,0xb8,0x3c,0x93,0x35,0x10,0xef,0x19,0xba,0x09,0x9e,0xff,0xf9,0x3f,0x0c,0xdc,0x96,0x98,0x32,0x26,0x76,0xe7,0xfa,0xaa,0xdf,0xdc,0xb9,0x15,0x44,0x42,0x9a,0x8c,0x6c,0x88,0xea,0x43,0x63,0xb5,0x79,0xb6,0x50,0x30,0x78,0xea,0x70,0xba,0x33,0x36,0x8f,0x8c,0xe5,0x78,0xfd,0xbc,0xc0,0xbd,0xde,0x3a,0x3d,0xe6,0xe6,0x57 +.byte 0x0f,0x29,0xf2,0x82,0x05,0xf2,0x5c,0xfd,0x33,0xc1,0xb2,0x2e,0xc2,0xc0,0x42,0xa2,0xc8,0xa5,0xf9,0x70,0x05,0xff,0x7b,0x8d,0xb9,0x68,0xc3,0xf6,0x74,0x00,0xcd,0x9d,0x70,0xfa,0x62,0x34,0xe5,0x05,0xe8,0x5f,0x53,0x9b,0x69,0x01,0x86,0xb9,0x1d,0x68,0x80,0x89,0x51,0x52,0x0d,0xe8,0x28,0xa1,0xdd,0x62,0x2b,0xf3,0x53,0x74,0xaa,0x98 +.byte 0xdb,0x7e,0x74,0x44,0xeb,0x25,0xe7,0xde,0xc4,0x29,0x14,0x11,0x7b,0xc6,0xef,0x14,0xe4,0x04,0xd0,0xf4,0x11,0xca,0xdc,0xdc,0xe6,0x3f,0x9a,0xc9,0xe2,0x0e,0x67,0x30,0x78,0x65,0x94,0x5a,0xa1,0x24,0xd6,0x90,0x2f,0x1c,0x13,0x46,0xf5,0xb5,0xf9,0x74,0x56,0x3e,0xd5,0x1b,0x09,0xb3,0x04,0xbe,0x89,0x00,0xbd,0xe0,0xba,0x13,0x05,0xd1 +.byte 0x98,0xa7,0x93,0x09,0xc5,0x96,0x46,0xb5,0x5a,0x05,0xac,0x1e,0x66,0x03,0xf0,0xaa,0x3d,0xc2,0x54,0xa3,0xc4,0x2b,0x0d,0xa3,0xe4,0x92,0xd6,0xd0,0x44,0xa6,0x37,0x30,0xa5,0xac,0xc2,0xc8,0x58,0x2a,0x2c,0x18,0x68,0x8d,0x9b,0x4f,0x99,0xd0,0x55,0x41,0xf4,0x84,0x3c,0x69,0xda,0x3c,0x6d,0x43,0xb3,0x85,0x15,0x1f,0xdb,0x58,0x0b,0x71 +.byte 0x33,0x24,0xbb,0x21,0x43,0x19,0x16,0xeb,0x83,0xde,0xe5,0xb7,0x68,0x9e,0xb9,0xd9,0xf6,0x2e,0xae,0xdd,0x88,0x2c,0x18,0xd7,0xc3,0x72,0x8b,0xbe,0xaf,0x8d,0xfd,0xcd,0x2f,0x8e,0x3e,0x2b,0xa4,0x20,0x11,0x9d,0x00,0x4f,0xea,0xf0,0xaa,0x2d,0xf3,0x9d,0xfd,0x11,0x7b,0xac,0x2c,0x66,0x74,0x03,0xe5,0xcc,0x70,0x9f,0xfb,0xb7,0x5a,0x16 +.byte 0xc3,0x05,0x61,0x7c,0x8c,0x73,0xcc,0x9c,0x6a,0x2f,0xee,0xae,0x85,0xc9,0x51,0x91,0x13,0xa4,0x09,0x82,0x4d,0x62,0x09,0x24,0x25,0x35,0x1f,0x82,0x88,0xbb,0xdd,0x16,0x5e,0x8d,0x98,0x5f,0x07,0x49,0x32,0x96,0xb7,0xee,0x85,0xb0,0x7b,0xfd,0xf5,0x35,0x4b,0xa9,0xd4,0xee,0xf2,0x37,0xd1,0xfe,0x62,0xf5,0x52,0x13,0xb4,0xb2,0xce,0xc4 +.byte 0xe0,0x09,0x78,0x48,0xd5,0xc6,0x5d,0x36,0x1b,0x90,0x3a,0x6a,0x3c,0x21,0x50,0xf0,0x0a,0xe9,0x46,0x24,0x45,0xc1,0x5e,0x76,0xa3,0xf9,0x70,0xb8,0x62,0x4d,0x0e,0x92,0x87,0x4a,0x6a,0xf9,0x46,0x91,0x64,0xfe,0x7f,0x53,0x24,0x7e,0xc7,0x3e,0xb0,0x37,0x1a,0xc8,0xd6,0x33,0x0b,0x5f,0xa5,0x30,0x03,0x0e,0x85,0x3d,0x7b,0xc1,0xa1,0x18 +.byte 0xb3,0x8c,0xfe,0xca,0x3e,0x71,0xd8,0x92,0x46,0x49,0x60,0x54,0xd9,0x7b,0xf7,0xc3,0x99,0x2f,0xb5,0x79,0xcc,0x32,0x40,0x7d,0x3d,0x0b,0xc6,0x6f,0x04,0xd9,0xf1,0xdd,0x64,0xf5,0xc4,0x60,0x14,0x04,0x5c,0x3a,0xa4,0xda,0xdc,0xad,0x8f,0xc2,0x44,0x37,0x96,0x63,0x00,0xf7,0xb1,0xc0,0x7c,0x8c,0x12,0xb5,0x3a,0xec,0xc0,0x16,0xd8,0x24 +.byte 0xe9,0xc0,0xc4,0xfa,0xb1,0x85,0x5b,0xe3,0x62,0x24,0xa1,0x75,0x92,0x82,0x04,0x59,0x10,0x50,0x4b,0x51,0x51,0x3e,0x39,0xba,0x6d,0xa0,0x65,0x2d,0xfc,0x23,0x1c,0x9d,0x69,0x22,0xe7,0x15,0xfa,0xba,0x76,0xbf,0x53,0x62,0xb0,0x0d,0x0d,0x5d,0x55,0x00,0xbc,0x58,0x01,0xed,0x37,0x53,0xb9,0xa6,0x0d,0x71,0xab,0xec,0x42,0xbf,0x3b,0x52 +.byte 0xfd,0xae,0xe9,0x6d,0x65,0x07,0xf3,0xd9,0x32,0x66,0xc1,0x66,0x1a,0x18,0x73,0x86,0x01,0xaf,0x1d,0xd1,0xd0,0xcf,0xb1,0xea,0x54,0x23,0xdf,0xf2,0x4d,0x7d,0xc7,0xfe,0xfe,0x7d,0x1d,0x2c,0x1b,0xb6,0xa7,0x7a,0x9e,0x90,0x3a,0x3b,0xb0,0x6c,0xb0,0xd2,0xd1,0xd0,0x6a,0x94,0x4c,0x84,0x1c,0x45,0xae,0xda,0x16,0xa9,0x2e,0x63,0x19,0x26 +.byte 0xf6,0x74,0xd3,0x6f,0x9b,0x9c,0x0c,0xb8,0x85,0x9f,0xeb,0x99,0xbc,0xab,0xff,0xc3,0x75,0x86,0xe5,0x3a,0xa0,0xf9,0xfc,0x6b,0x3d,0x5a,0xad,0x46,0x7f,0x17,0x0e,0x94,0xb7,0xa4,0x43,0x61,0x54,0x76,0x29,0x78,0xe4,0x41,0x91,0xbe,0xa5,0x36,0x39,0xdf,0xdc,0xcc,0x8e,0x42,0x40,0x08,0x51,0x26,0xb0,0x53,0x5d,0xb4,0x7a,0x18,0x8e,0xb3 +.byte 0xae,0xf2,0xe0,0xef,0x63,0x51,0x3a,0xbe,0x4c,0x2d,0xce,0xc7,0xe2,0x1b,0xc2,0x40,0xf3,0x82,0x61,0xf0,0x1b,0x05,0xdd,0x1e,0xae,0xed,0x87,0x2c,0xe5,0xad,0xc7,0xec,0xb5,0x63,0xf7,0x3a,0xf9,0xb7,0xd8,0x4e,0xa7,0xef,0xac,0x6d,0x9c,0x27,0xd9,0xcc,0x66,0xf4,0x75,0x40,0x94,0x8b,0x78,0x4f,0x61,0x4f,0x31,0x49,0x5c,0x96,0x72,0x58 +.byte 0xcf,0x55,0xb2,0x66,0x16,0x29,0x27,0x24,0x39,0xc3,0x64,0xb1,0xdf,0x69,0x87,0x85,0x46,0xe3,0xd0,0x82,0x53,0x1a,0xc2,0xf1,0x3a,0xab,0xdf,0xe5,0x29,0x17,0xdd,0xfe,0xbf,0xf9,0x3d,0x7a,0xfb,0xe7,0x74,0x49,0xa9,0xef,0x61,0x93,0x4c,0xfa,0x30,0xea,0x65,0xa7,0x61,0x32,0x88,0x74,0x12,0xc1,0x91,0xf1,0xc2,0x1f,0x38,0x6a,0xfd,0x0d +.byte 0xc8,0x6f,0x87,0xe6,0x15,0x55,0x26,0x13,0x86,0x13,0xb9,0x01,0x98,0x34,0x1c,0x2d,0x1d,0x30,0xae,0x7d,0x8e,0x07,0x7d,0x4d,0xe9,0xfd,0x58,0x18,0xc3,0xa6,0x8e,0x87,0x98,0x33,0xcc,0x80,0xd7,0x70,0x07,0x6a,0x4a,0x97,0xef,0x56,0xf3,0x9d,0xf9,0xef,0x6f,0xa8,0x71,0x7f,0x61,0x07,0x1d,0x9d,0x51,0x06,0x86,0x4a,0x35,0x9e,0xab,0x2c +.byte 0x66,0x8d,0x61,0x62,0xbd,0xed,0x6c,0x76,0x7c,0x67,0xe0,0xe1,0x6e,0x90,0x74,0xb1,0xa6,0x26,0x0d,0x01,0x1f,0xe9,0xb4,0x30,0x9a,0x7e,0x37,0xd1,0xea,0x97,0x9a,0x0f,0x9e,0x8d,0x52,0xd4,0x96,0x36,0x5b,0x6f,0x40,0xbb,0x9e,0x44,0xb4,0x6e,0xee,0x15,0x70,0xef,0x66,0x81,0xf5,0xb4,0xe7,0x69,0xb0,0x40,0x44,0xdc,0x70,0x1e,0x4d,0x3c +.byte 0x9b,0x19,0x2a,0x97,0xbd,0xb2,0xd2,0x9b,0x98,0xac,0x36,0xf1,0x05,0x48,0xdc,0x5d,0x21,0xfb,0x17,0xe3,0x9c,0x3c,0xbf,0xfd,0x1d,0x39,0x1e,0x5b,0x2a,0xa2,0xb3,0x7d,0x4f,0xdf,0x3a,0x41,0x7a,0x31,0x01,0xc2,0xe5,0xd0,0x06,0x50,0x29,0x05,0xce,0xb8,0x28,0xb7,0xdd,0x83,0xc8,0xaa,0x39,0x78,0xc7,0x7d,0x9e,0xcd,0x9a,0x07,0x71,0x7e +.byte 0x20,0x92,0x82,0xce,0x49,0x90,0xce,0xef,0x53,0xa7,0x48,0x2a,0x69,0x86,0xa1,0x5e,0x35,0xe8,0x7d,0x10,0xb8,0x5e,0xa6,0x9a,0x69,0x6f,0x32,0x75,0xf3,0x4a,0xee,0x9c,0x06,0x5c,0xdd,0x84,0x7e,0x38,0x00,0x67,0x39,0x42,0xed,0x72,0xda,0xe3,0x6b,0x5a,0xf4,0xc9,0x80,0x3e,0x0e,0xda,0x39,0xfa,0x83,0x2c,0x60,0x69,0x87,0x85,0x05,0xfc +.byte 0xf4,0x2b,0xd4,0x0a,0xad,0x86,0xca,0xd5,0xf0,0x92,0x1f,0x43,0x3c,0x0e,0xac,0x99,0xf3,0x67,0xa3,0x41,0x6d,0xb9,0x29,0x70,0x57,0x62,0x9f,0x45,0x91,0x72,0xe5,0x53,0xcc,0x89,0x80,0x3f,0xbc,0x1c,0x66,0x21,0xdd,0x90,0x2b,0xa4,0xca,0x2f,0xf0,0x0f,0x9f,0xd0,0xe9,0x28,0xe2,0xd9,0x36,0xaf,0xf9,0x01,0x81,0xce,0xb4,0xe7,0x71,0xfd +.byte 0x92,0xf8,0x56,0x2e,0xc3,0xc8,0x8b,0x54,0xc8,0xc7,0x40,0x79,0x27,0x06,0x18,0x4a,0x7b,0x88,0x3f,0xd6,0x4f,0xd4,0x66,0x1e,0x1f,0x9a,0x14,0x1a,0x0a,0x98,0xc7,0xd6,0x25,0x83,0x37,0x8a,0x5d,0xb2,0x88,0x39,0x68,0x7b,0x1f,0x4e,0x0a,0xed,0x11,0x1a,0x77,0x9b,0xcb,0xb6,0x7d,0x5c,0x36,0xac,0x07,0x07,0x9f,0x05,0xcf,0x90,0x8f,0x3f +.byte 0x4b,0xc5,0xf9,0x42,0x90,0xb4,0x42,0x26,0xa1,0x2c,0x66,0xc6,0xb8,0x98,0x80,0x8a,0xbb,0x9b,0x41,0xe4,0x44,0x8c,0x5e,0x56,0x33,0xe3,0xba,0xcf,0x31,0x8e,0x28,0xd7,0xc5,0xd1,0x3b,0x68,0x47,0x10,0xae,0xda,0xc3,0xbd,0x20,0xe7,0xac,0xe2,0xe1,0xe0,0x7a,0x4b,0x83,0xb1,0xab,0x72,0xf4,0xc4,0xe7,0x0d,0x02,0xaf,0x5b,0x74,0xac,0xda +.byte 0x9d,0xce,0x26,0x1f,0x79,0x05,0x67,0x7e,0xc4,0x98,0x3f,0xde,0xa6,0xf3,0xfe,0x59,0x65,0x88,0xfb,0x14,0x3a,0x43,0x91,0x04,0x1a,0x78,0x7e,0x08,0xba,0x55,0x50,0xc7,0x65,0xd3,0x8e,0xda,0x0a,0xee,0x8e,0x11,0xa9,0xf6,0x9e,0xd3,0x23,0x97,0x05,0x0c,0x98,0x2a,0x36,0x25,0xec,0x5e,0x0b,0xf9,0x31,0x80,0x00,0x8a,0x70,0xf1,0xaa,0x7c +.byte 0x73,0x02,0x98,0x8d,0x42,0x27,0x53,0xf1,0x83,0x37,0xd0,0x2d,0xfa,0xc7,0x4b,0xa5,0xb3,0xc9,0xb8,0xd4,0x56,0x94,0x5a,0x17,0x2e,0x9d,0x1b,0x46,0xaa,0xb6,0xd9,0x2a,0x3a,0x6c,0xaf,0x24,0x59,0xfd,0x08,0xc5,0xca,0x0c,0x79,0x3f,0xe7,0x91,0x8d,0x9d,0x59,0x91,0xd8,0x5f,0xda,0x6d,0x35,0x7b,0x52,0x47,0x35,0xf9,0x81,0x86,0x2c,0xee +.byte 0x1a,0x14,0xc5,0x1f,0xb6,0x85,0xb5,0x74,0xe9,0xb7,0x4f,0xde,0xcd,0x93,0x2d,0xf3,0x10,0xbe,0x34,0xfa,0xca,0x15,0x9f,0x02,0x9d,0x19,0x72,0x7c,0xd6,0xfd,0x81,0x43,0x49,0xb5,0x2b,0x52,0x31,0xd6,0x2c,0x28,0x2e,0x83,0x6d,0xd3,0x0f,0x6e,0x03,0x65,0xf0,0x8a,0xdd,0x0a,0xec,0x58,0x10,0x45,0x5d,0xac,0xda,0xf5,0x32,0x5d,0x18,0x26 +.byte 0xcc,0x2e,0xcf,0xd3,0x41,0x2d,0x1d,0xba,0xdf,0xd8,0x96,0x8f,0x18,0x0f,0xa7,0xec,0x8e,0x6e,0x84,0x2c,0xd6,0x1f,0x4e,0x76,0xfe,0xf3,0x14,0x27,0x4b,0x5b,0x3d,0x7c,0x1c,0x59,0x46,0x97,0x1b,0x59,0x5a,0x2d,0x57,0x80,0x17,0x98,0x7d,0x92,0x5d,0x2f,0x98,0x53,0x10,0x59,0x8e,0x7f,0x55,0x64,0x15,0x62,0x2c,0x16,0x0b,0x8d,0x48,0x54 +.byte 0xaf,0x96,0x17,0xa9,0x8e,0x2c,0xcf,0x41,0x8c,0x8a,0x37,0x55,0xe4,0xf9,0x20,0x3b,0x21,0x5c,0x86,0x8d,0x3f,0xa6,0x5e,0x43,0xf3,0x3b,0xf7,0x7c,0x27,0x88,0x8e,0xa5,0x15,0xca,0x0e,0x9e,0x85,0x30,0x17,0x0d,0xcf,0xf0,0x82,0x87,0xd6,0xe8,0xd2,0xad,0xe9,0x4d,0x3f,0xc9,0x58,0x19,0xf9,0x99,0x4d,0xf9,0x6b,0x1b,0xd3,0xf9,0xdd,0x52 +.byte 0xd1,0x3c,0x64,0x46,0xfd,0x4f,0x2e,0x63,0x39,0xd8,0xe4,0xeb,0xfc,0x07,0xf1,0xa5,0xff,0x84,0xa8,0x92,0xfe,0xbc,0xc5,0x36,0x91,0x2b,0xec,0x2c,0xad,0xf0,0xac,0xc5,0xb0,0xad,0x8a,0x0d,0x6a,0xd9,0x29,0x7a,0xb0,0x87,0x0c,0xaf,0xda,0x75,0x84,0x25,0xbe,0xee,0x0d,0xfd,0x4c,0xf5,0x2d,0x46,0xe9,0x17,0xb9,0x9d,0x3d,0x4b,0x8f,0x3a +.byte 0xe9,0x49,0xb6,0x32,0x99,0x27,0xe2,0x4d,0xff,0x2f,0x2e,0xd5,0x69,0x52,0x56,0x20,0x0a,0xbf,0x62,0x14,0x34,0xfb,0xbf,0x95,0xe8,0xfe,0xb1,0x9f,0x43,0x30,0x02,0x03,0x9e,0xa8,0xe2,0x68,0x64,0xdd,0x37,0xfc,0xb9,0x0f,0x85,0x8c,0x36,0x45,0xdb,0x7c,0x8b,0x97,0x50,0xc3,0x75,0xa1,0xcf,0xf4,0xc2,0x46,0xd8,0xa1,0x8c,0xab,0x8d,0x3a +.byte 0xde,0xe7,0x9e,0xd2,0x1e,0x2d,0x8b,0xe4,0x31,0xe3,0x12,0x3f,0x9f,0x0b,0x2c,0x95,0x75,0x8d,0xf1,0x24,0xb9,0xdf,0x1e,0x64,0x35,0x45,0x2a,0xc2,0xf9,0x96,0x5d,0x10,0x64,0x32,0xae,0xe9,0xf8,0x71,0xd4,0x2d,0x6b,0xc6,0xde,0x08,0x1e,0x5d,0x51,0xf1,0xe7,0xfd,0x3c,0x22,0x43,0x59,0x82,0x83,0x13,0x75,0x36,0xef,0x81,0xe4,0xcf,0xa8 +.byte 0xb8,0x30,0x16,0x44,0xae,0x55,0x06,0xdd,0xb9,0x60,0x3f,0x75,0xc6,0xd1,0x73,0xa9,0xea,0xc9,0x64,0x2b,0x8a,0xde,0x44,0x4b,0x3d,0xc3,0x31,0x12,0x84,0x9a,0xe3,0xda,0x24,0x82,0x99,0x00,0x6d,0x8e,0xb8,0x26,0x82,0xa6,0xc2,0x37,0x6c,0x2a,0x1d,0xcf,0x6d,0x18,0xc7,0xee,0x27,0xca,0xe7,0xad,0x95,0xed,0x7d,0xe0,0xe0,0x6f,0x45,0xc3 +.byte 0x8a,0x2f,0x08,0x49,0x7e,0x09,0x9e,0xc1,0xb7,0x1e,0x8f,0x57,0x61,0xf8,0x3e,0xea,0xd7,0x47,0xfb,0xd0,0xda,0xaa,0x04,0xf9,0x06,0xbb,0xa3,0x80,0x68,0x89,0xb0,0x7f,0x18,0xf3,0xd2,0xeb,0xee,0x48,0x30,0x6a,0x24,0xc8,0x71,0x43,0xc3,0x50,0xcc,0x85,0x68,0xf5,0xca,0x44,0x34,0x43,0xaa,0x2e,0x4f,0x02,0x1b,0x23,0x4f,0xe9,0x07,0x02 +.byte 0xa2,0xfa,0x24,0x57,0x70,0x4e,0x1a,0x78,0x03,0xa2,0xdd,0x53,0x50,0x82,0x05,0xb1,0x0f,0xcb,0x9e,0x2e,0x58,0x04,0x62,0xc8,0xac,0x71,0x31,0x56,0x0f,0xc7,0x70,0x32,0x53,0xda,0x51,0xc3,0x15,0x78,0x82,0xb6,0xe8,0x6e,0x32,0xeb,0x39,0xab,0xba,0x67,0xcc,0xbc,0x99,0x58,0x88,0xc4,0x60,0x0d,0x0b,0xc1,0xfa,0x6f,0x40,0x85,0x04,0xdf +.byte 0x5f,0x17,0x69,0xf1,0xbd,0x44,0x97,0xc8,0x62,0x19,0x49,0x1f,0x23,0xcb,0x3d,0x17,0x04,0xf2,0xbd,0x58,0x15,0xa6,0x37,0x3a,0x3f,0x77,0x98,0x32,0x40,0x8a,0x72,0xf0,0x41,0x0b,0xad,0x88,0xba,0xd3,0xae,0xdc,0x3b,0x9a,0x37,0x89,0xa5,0x09,0xe5,0xbb,0xf2,0xf8,0x5d,0xa5,0xed,0xe8,0x39,0x7b,0xed,0x2b,0x90,0xd6,0x6c,0xd3,0xfa,0x69 +.byte 0xa7,0xca,0x09,0x83,0x15,0x8d,0xd8,0xe3,0x81,0x03,0x4e,0x2d,0xd8,0x96,0x3b,0x4b,0x18,0x91,0xac,0x5f,0x22,0xe6,0x9d,0x4b,0x09,0xaf,0xf0,0xdf,0x16,0xa2,0xf1,0x2c,0xd9,0x35,0x8a,0x6e,0x85,0x7a,0xbc,0xc7,0x10,0xd1,0x5f,0x8a,0x53,0x9c,0x8e,0xbc,0x8c,0x15,0xb3,0x8a,0xb0,0x0b,0x74,0x40,0x2a,0x5f,0x46,0x71,0x1c,0x0b,0xee,0x08 +.byte 0xae,0x17,0x26,0x1e,0xcf,0xbf,0x3d,0xa0,0x5e,0x3a,0xdb,0x39,0x6b,0x4a,0x82,0x53,0x02,0xf4,0xa2,0x15,0x5c,0xb6,0xdb,0x20,0x30,0xa2,0x7d,0xcb,0x9a,0xf7,0x88,0x69,0xb5,0xc8,0xe6,0xcd,0x9e,0xa4,0xaf,0x27,0x0e,0x61,0x41,0xcd,0x8e,0x71,0x83,0x11,0xce,0x5e,0x6c,0xaf,0xa4,0x50,0x81,0xb6,0xf2,0x36,0x05,0xbb,0x36,0x4e,0x4a,0x1b +.byte 0x09,0x9f,0xca,0x1b,0x12,0xb0,0x01,0xc0,0xbf,0x7e,0x3f,0x81,0x60,0x9f,0xfd,0x56,0x81,0x54,0x99,0x2b,0x7f,0x1e,0xb1,0xbf,0xd4,0xb7,0xe1,0x7c,0x71,0xf9,0x00,0x72,0x5f,0x10,0xab,0x60,0x03,0x9d,0x13,0xf1,0xba,0x48,0x93,0x1c,0x1d,0x11,0x04,0x40,0xf6,0xde,0x3b,0xef,0x6c,0x47,0xb3,0x0d,0xcf,0x53,0xbd,0x45,0x7e,0xd7,0x8c,0x34 +.byte 0xd0,0xcb,0x85,0x4b,0x1e,0xd1,0xc5,0xfd,0x5b,0x1a,0x18,0x8a,0x27,0xe3,0x16,0x3c,0x25,0x12,0xf2,0xf1,0xa1,0x40,0x53,0x68,0x27,0x2c,0x81,0x0e,0x20,0x12,0xe3,0xde,0xe2,0x9f,0x08,0x75,0xc0,0x25,0x79,0xf0,0xc4,0xaa,0x10,0xad,0x41,0x3f,0x0b,0xc7,0xb2,0xe0,0x50,0xde,0xec,0x24,0x09,0xeb,0xb5,0xd3,0xbc,0xd3,0xdf,0x44,0x6d,0xc8 +.byte 0xf1,0x79,0xf8,0x33,0xb7,0x75,0x09,0x18,0x04,0x59,0x0f,0x15,0x5e,0xf9,0xca,0xe0,0xa9,0x2a,0xe1,0x1b,0xf0,0x49,0x5f,0xca,0xa3,0x80,0xd5,0x9b,0x1e,0xc1,0x1f,0x98,0x18,0x0a,0x24,0xc3,0x3f,0xfb,0x43,0xfd,0xa3,0x01,0x59,0x50,0xea,0x21,0xe0,0x92,0xfd,0xe1,0xd5,0xe4,0x38,0x24,0x88,0xf3,0xb0,0xc9,0x79,0xfd,0x4e,0xd3,0x3e,0xbf +.byte 0xc6,0xb8,0x9e,0x7f,0xab,0x65,0x79,0xd9,0xb9,0x83,0x38,0xe1,0xf7,0xd0,0x37,0x04,0xb3,0x0c,0x48,0x82,0x74,0xe1,0x0c,0x80,0x13,0x59,0xc4,0x72,0xf9,0x2d,0x88,0x06,0x46,0x08,0x7a,0x6b,0xb4,0xfc,0x5f,0x63,0x31,0x2f,0x4f,0xfd,0x4b,0x1f,0x8e,0x21,0x3c,0x67,0x83,0xdd,0xa9,0x65,0x68,0xc6,0xd0,0xb8,0x1d,0xcd,0x60,0xc5,0xb9,0x3b +.byte 0xea,0xe9,0xc7,0xa5,0x1a,0x98,0x8a,0x87,0xb7,0x73,0x29,0x3a,0x6a,0x3a,0x75,0xbf,0xa4,0x79,0x64,0xcb,0x94,0x68,0x93,0x56,0x55,0x1e,0xd5,0x61,0xda,0x87,0xe1,0x28,0xf0,0xa5,0x64,0x9a,0xd7,0xa0,0x91,0xfd,0x46,0x20,0x6c,0x87,0x1f,0xe8,0x9e,0x7e,0x95,0xc4,0x60,0xdb,0xf4,0xe2,0x3e,0xb2,0x6a,0x4a,0xe7,0x46,0x3f,0xca,0xf3,0x72 +.byte 0xb5,0xe8,0x06,0x3a,0x1b,0xeb,0xcb,0x81,0x46,0x44,0xf6,0x97,0xa0,0x79,0xe4,0xa4,0x8a,0xba,0x5e,0x1b,0x6d,0xf4,0xcf,0x7c,0x12,0x7a,0xec,0xdd,0xf6,0xc8,0xab,0x5f,0x30,0xb3,0xf9,0x8e,0x31,0xfd,0x51,0x95,0x8b,0xa1,0xe9,0xe8,0x2d,0xec,0x86,0x12,0x4a,0xf8,0x8b,0xa5,0xdd,0xb2,0xe4,0xad,0xdd,0xcb,0xf5,0xcd,0x9c,0x9f,0x0a,0x42 +.byte 0x5f,0x83,0x9d,0xa6,0x4f,0xbe,0x11,0x75,0x3c,0xde,0x67,0x6b,0x95,0xcd,0xcf,0xdc,0xfd,0x1f,0x1a,0x14,0x01,0x27,0x68,0xaf,0x9b,0x82,0xd6,0xae,0x29,0x8a,0x1f,0xc8,0xf1,0x1f,0xb8,0xa9,0xa2,0x1d,0x81,0xbb,0x19,0xda,0x06,0xe3,0x34,0x7b,0xce,0x99,0x3c,0x5b,0x0c,0x9b,0x8b,0x35,0xc0,0x6c,0x88,0xef,0xeb,0x9f,0x64,0xe3,0xc3,0xbf +.byte 0x37,0xd7,0xf6,0xdf,0xad,0x28,0xf4,0xd7,0x19,0xb0,0xf2,0xa7,0xd4,0x71,0xbc,0xd3,0xa3,0x09,0x5c,0x1a,0x45,0x30,0x2d,0x53,0xa5,0x19,0x2f,0xb0,0x5d,0xae,0x04,0x28,0xe6,0x16,0x3e,0x75,0x9f,0xcc,0x76,0xc4,0xc2,0xa0,0xfb,0xff,0xdd,0x4c,0xa3,0x8b,0xad,0x05,0x73,0x26,0xf0,0xef,0x48,0xd5,0x25,0x22,0x90,0x78,0x21,0xfd,0xc6,0x23 +.byte 0x14,0xbc,0xed,0x13,0x29,0x76,0x17,0xa6,0x93,0x09,0x6e,0xa7,0x42,0xdd,0x11,0x9e,0x05,0xa3,0xb7,0x48,0x84,0x85,0xf8,0x4e,0xed,0x3d,0xdb,0xfc,0x68,0xd2,0xec,0xec,0x69,0x2b,0x60,0x38,0xd1,0x99,0x44,0xf9,0x60,0xd3,0x5a,0x9e,0xe4,0x26,0x9d,0x12,0xf8,0x6a,0x53,0xde,0x76,0x78,0xa7,0x68,0xb0,0xb4,0xdc,0x33,0x7b,0x8a,0x73,0xa0 +.byte 0xa5,0x5f,0x8f,0x81,0x0e,0x51,0x06,0x13,0x6b,0x56,0x16,0x91,0x1f,0xf5,0x6b,0x68,0xe6,0x8b,0x69,0xda,0x0a,0x9c,0xb1,0x74,0x8f,0x1c,0xb3,0xbf,0x52,0x59,0xaa,0xb1,0xb6,0x3a,0x81,0xc2,0x04,0x54,0x12,0x46,0xa2,0xd5,0x21,0xdf,0xe0,0x57,0x1f,0xe8,0x36,0x56,0x87,0xbf,0xcb,0x7d,0x06,0x6c,0xd5,0xc9,0x4e,0xca,0x47,0x47,0x11,0x91 +.byte 0x7a,0x14,0x13,0x5d,0x5d,0x46,0xd5,0x3a,0xe4,0xa4,0x4d,0x99,0x3a,0x54,0x99,0x62,0xb4,0x70,0xa0,0xf5,0x8a,0xda,0x05,0x75,0xf1,0xa5,0xa1,0x5d,0x9d,0xc4,0x7f,0x83,0x8a,0x5b,0x09,0x54,0x0e,0x69,0x28,0xef,0x66,0xfb,0xe4,0xc4,0xe4,0xc4,0xda,0xb0,0xda,0xe2,0x19,0x33,0x3c,0x76,0xa0,0x35,0xdc,0x31,0x4e,0x40,0xfe,0xb8,0x20,0x26 +.byte 0x8f,0x6f,0x7d,0x02,0x54,0x86,0x1d,0xca,0xa6,0x10,0xa6,0x89,0x87,0x3a,0x5a,0xd5,0x3d,0x0f,0xb5,0x81,0x7d,0xab,0xb6,0xc6,0x36,0x87,0xce,0xd7,0xe4,0xc3,0x9e,0xc2,0x9c,0xf6,0x75,0xd5,0x9a,0x69,0xd2,0x13,0x89,0x5a,0xe9,0x29,0xc9,0xf5,0x6e,0xcc,0x05,0x87,0x0a,0x61,0x49,0xd7,0xa5,0x76,0xd0,0xaf,0x96,0xe0,0x2f,0x91,0xf4,0x45 +.byte 0x70,0x5a,0xdc,0x9f,0x07,0x7f,0x86,0x02,0xa4,0x83,0x8d,0x4a,0x6d,0xfc,0x1b,0xd8,0x9b,0xc2,0x42,0x4f,0xcb,0xdf,0xcb,0xe0,0x55,0xb4,0x8f,0xf7,0x27,0x73,0xd9,0x7e,0xf8,0x3a,0x5c,0x4f,0x29,0x64,0xd8,0x39,0xfa,0xf2,0xc4,0x6b,0xeb,0x55,0xc3,0x13,0x22,0x15,0xdf,0xc5,0x91,0x6d,0xd7,0xf3,0x11,0x34,0x08,0xce,0xe5,0xbd,0x16,0x14 +.byte 0x60,0x14,0x8a,0xed,0x4d,0x38,0x98,0x15,0x5d,0xee,0x70,0xff,0x05,0xd2,0x74,0x3a,0x5f,0x78,0x1a,0x70,0x61,0x2a,0x42,0x4a,0xf3,0x15,0x6f,0x9e,0x33,0xca,0xb8,0x46,0x22,0x64,0xd6,0x24,0xe8,0x10,0x1a,0x89,0xab,0x74,0xdf,0x56,0x35,0x41,0x57,0xe1,0xd9,0x4b,0x67,0x60,0x89,0x6f,0xbf,0x73,0xac,0x6b,0xf9,0x78,0x3f,0xbc,0xf3,0x2a +.byte 0xb5,0x8c,0x1f,0xda,0xe7,0xe2,0xac,0x60,0xbf,0x41,0x96,0xbb,0xd5,0x35,0x9c,0x56,0xe7,0xfd,0x95,0xc7,0x4d,0x32,0xa1,0x07,0x34,0xbc,0x99,0xca,0xcc,0x42,0x71,0xfb,0xec,0x5c,0x1e,0xf9,0x8b,0xde,0x43,0x65,0x84,0x16,0x52,0x0a,0x5e,0x92,0x20,0xd8,0x26,0x4b,0x97,0x71,0xde,0xd2,0x1f,0x2e,0xd1,0xb2,0xb6,0x29,0x6a,0x6d,0x41,0x00 +.byte 0x20,0x3d,0x03,0xf8,0x43,0x7b,0x57,0x87,0x4e,0xf1,0x8e,0x6f,0xd3,0xf4,0x6c,0x6c,0x29,0xf6,0x99,0xe3,0xd3,0x1d,0xd3,0x26,0x21,0x3b,0x02,0xa2,0xc1,0x06,0xcf,0x31,0xec,0x7f,0xc6,0x80,0xbc,0xab,0x86,0x01,0xff,0x11,0x8a,0x24,0xfd,0x1b,0x41,0x49,0xd4,0xbe,0x15,0x34,0x82,0xc5,0x02,0x51,0x67,0x5c,0x41,0x8e,0xbf,0x94,0x12,0x15 +.byte 0x64,0xea,0x00,0x0c,0x51,0x40,0x57,0x66,0x1e,0x6d,0x3e,0x41,0x8e,0x84,0xdf,0x71,0xb8,0xd7,0xfa,0x12,0x17,0x22,0x17,0x05,0xdc,0x82,0xfd,0x7c,0x5e,0xfa,0x62,0x23,0xa8,0xbe,0x14,0xdc,0x84,0x42,0xf0,0x90,0xc5,0xb0,0x68,0xbe,0x64,0x74,0xc3,0xa5,0xd1,0x10,0xcf,0xe3,0xd1,0x09,0x98,0x3b,0xb9,0x19,0xf2,0x9b,0x5d,0x90,0x99,0x3d +.byte 0x30,0x67,0x55,0x34,0x50,0x78,0x3b,0xd2,0x70,0xb1,0xd2,0x91,0x4e,0xfa,0x98,0x7d,0x93,0xad,0x7f,0xb1,0x89,0xb0,0x61,0x4c,0x95,0x3f,0x51,0x95,0xd7,0xc6,0x87,0x7a,0xc5,0x53,0xb6,0x6d,0x61,0xec,0xbe,0x40,0x1f,0xa5,0x7f,0x73,0x4a,0x78,0xd2,0x58,0x1e,0x41,0x8e,0x9a,0x08,0x49,0xce,0x39,0x52,0xf9,0xd1,0xcd,0x41,0xb6,0x39,0x99 +.byte 0xfa,0xfb,0x1c,0x38,0xe1,0xe5,0xe1,0xd6,0x16,0x0f,0xc8,0x12,0x0b,0x88,0xdc,0x00,0xd4,0x7b,0x24,0x69,0x16,0x27,0x37,0xa3,0xd5,0x39,0x27,0x34,0xda,0x23,0x24,0x50,0x13,0xd8,0x02,0x48,0x14,0xd7,0xc9,0x28,0x1b,0xba,0x66,0xa8,0xc8,0x9a,0x7b,0xed,0x92,0x5b,0x78,0x46,0x79,0x5a,0xd1,0xf2,0x75,0xf0,0x98,0xd3,0x9f,0x4c,0x72,0x51 +.byte 0xed,0xe5,0xce,0x83,0xac,0xe1,0xc8,0x2b,0x7f,0x77,0x6a,0x70,0xdd,0x80,0x88,0x62,0x58,0x94,0x15,0x72,0x53,0x34,0x48,0x17,0xb2,0xe8,0x4a,0xab,0x2d,0x4e,0xef,0x93,0xb7,0xba,0xd1,0x1c,0x53,0x69,0xd5,0xac,0xa1,0x61,0x7c,0x44,0xec,0x81,0x72,0xcc,0xe8,0x6f,0x5d,0x67,0x1f,0x65,0x9a,0x34,0xf5,0x95,0x89,0x1c,0x2e,0x54,0x42,0xc0 +.byte 0x85,0x79,0xb0,0xfa,0x44,0x0d,0x28,0xc4,0x20,0x2f,0x2e,0x85,0x73,0xfb,0xf6,0x44,0x0e,0xbc,0xab,0x4f,0x42,0x5c,0xdb,0x1f,0x11,0x6f,0x9a,0x23,0x75,0x70,0x78,0x1a,0xd2,0xb8,0x83,0x72,0xf5,0xf6,0x40,0x48,0x3f,0xc8,0xd5,0xe3,0x2c,0x08,0x5c,0x0c,0x2a,0xb0,0x8e,0x69,0xe6,0xdf,0x4b,0x4a,0x95,0x9c,0x4c,0x5e,0x09,0x24,0xc3,0xd0 +.byte 0x4c,0x20,0x0c,0x9a,0xce,0x95,0x53,0x6a,0x7b,0x54,0x0a,0x7e,0x73,0xa7,0x95,0xe7,0x7c,0x67,0x9d,0x05,0xbc,0x26,0x3a,0xa1,0x43,0x99,0x7a,0xee,0x04,0xcf,0x94,0x02,0x36,0x26,0xb3,0x81,0x74,0x22,0xee,0x1e,0x9e,0xe2,0x82,0xd4,0xe0,0xca,0xf2,0xec,0xd2,0x9e,0xf8,0x3f,0x9f,0xc4,0x5b,0xe8,0xfc,0xbd,0x93,0xaa,0xc3,0x2f,0xce,0xf2 +.byte 0x32,0xa9,0x23,0xf3,0xe1,0x06,0xae,0x7d,0x87,0xe9,0xe7,0xe0,0xc1,0x7c,0x74,0x9c,0xdf,0x86,0x6d,0x5c,0x8a,0x51,0x45,0x9d,0x43,0x49,0x87,0x45,0x75,0xfb,0x40,0x55,0xab,0x9a,0x52,0xf1,0x32,0x5e,0xde,0x8b,0x52,0x50,0x9f,0xb8,0x7a,0xe5,0x1c,0x40,0x4f,0xc7,0xb1,0x29,0x90,0xcc,0x98,0x99,0xa0,0x4e,0x1c,0x43,0x6e,0x91,0x61,0x9c +.byte 0xf7,0xa7,0xf7,0x43,0x89,0x15,0x8c,0x56,0x22,0x9d,0x66,0xac,0x71,0x19,0xdc,0xb9,0xf8,0xd3,0xaf,0x2e,0xd7,0x7b,0xc3,0xe4,0x25,0x0d,0x2c,0xaf,0x15,0x8c,0xea,0x2b,0xdb,0x8c,0x71,0xff,0x55,0x29,0x11,0x35,0x11,0xef,0xb0,0x97,0xb2,0x95,0xab,0xeb,0x4a,0x40,0x1c,0x92,0xc4,0x13,0x36,0x74,0x53,0x78,0x51,0x6c,0xca,0x37,0xcb,0xda +.byte 0x5e,0x6b,0x8c,0x69,0xc5,0xd0,0xf9,0xdb,0xbe,0xd9,0x30,0x42,0x16,0xcf,0x40,0x63,0x87,0x10,0x28,0x7d,0xae,0xa9,0x8c,0x14,0x99,0xe1,0x4f,0x11,0x98,0x7e,0xe9,0x14,0x9c,0x2e,0xe2,0xed,0x20,0x15,0x7c,0xb5,0xf4,0xc9,0x16,0x30,0x8d,0x7c,0x61,0x45,0xf4,0x23,0xf5,0xdb,0x81,0x8f,0x6b,0x41,0xaf,0xa9,0xf8,0x51,0xbe,0xc4,0x5d,0x8c +.byte 0xda,0x5e,0x07,0x62,0x7c,0xc6,0xd1,0xae,0x91,0x5e,0x05,0xa8,0xc6,0xc5,0xfc,0xb7,0x12,0x2e,0x7f,0x85,0xef,0xbd,0x2b,0x56,0x57,0x32,0xad,0x3d,0x97,0x5b,0x26,0xcf,0xd3,0xe7,0x48,0x4e,0x9b,0x15,0x98,0x77,0xb4,0x3e,0xf1,0x3e,0x1c,0x21,0xb0,0x98,0xe2,0x69,0xee,0xd8,0x29,0x10,0x93,0xd5,0xc9,0x71,0x8f,0x28,0xbd,0xe3,0xd9,0x54 +.byte 0xf3,0x72,0xb6,0x85,0xe9,0x2b,0xdc,0x96,0x52,0x53,0x5c,0x61,0x54,0x96,0x4a,0xf5,0x3f,0xee,0x53,0xc3,0x63,0xc9,0x67,0x14,0xdf,0x3a,0xfe,0x46,0x8a,0xa6,0xec,0x06,0x0c,0xea,0xb8,0x82,0x49,0xb5,0xed,0x94,0xf2,0xac,0x76,0xd5,0x87,0x79,0x15,0x4f,0xa1,0x34,0x90,0x8e,0x7b,0x02,0xf7,0x02,0xb0,0x07,0xa5,0x7c,0x6b,0xc2,0x34,0x84 +.byte 0xd4,0xaa,0xbf,0x32,0x81,0xf7,0xed,0x1f,0x61,0xd7,0x6e,0x40,0xa0,0xdc,0x4c,0xb5,0xb7,0x36,0x3a,0x87,0x09,0x82,0xd5,0x5a,0xc8,0x1f,0xe6,0x77,0xa6,0xaa,0xcf,0x3c,0x7b,0x23,0x46,0x58,0x95,0x7f,0x84,0xba,0x4a,0x05,0x0b,0x36,0xdb,0x58,0xf9,0xa4,0x2b,0x24,0xd4,0x8a,0xbc,0xb2,0xb7,0x04,0xac,0x64,0x0e,0x88,0x25,0x9a,0x69,0xe7 +.byte 0x87,0x70,0x0b,0xa6,0x43,0xe9,0xb2,0xbb,0x4e,0x4c,0x10,0x19,0x44,0x4d,0x12,0x4c,0x58,0x2a,0x49,0xe2,0x01,0xd2,0x65,0x23,0xee,0xe9,0xca,0x0b,0xa1,0x28,0x02,0x8d,0xcf,0x37,0x06,0xbc,0x5d,0x35,0xba,0xec,0x97,0x95,0xcc,0xfe,0x7b,0xc9,0x1c,0x0d,0x89,0x4e,0xe1,0x8d,0x9b,0x5e,0x5b,0xb9,0x6c,0x24,0x73,0x9a,0x62,0xd7,0xc5,0xfa +.byte 0x54,0xeb,0x05,0x22,0xd9,0xe7,0xc4,0x68,0x88,0x20,0x43,0xd9,0x14,0x47,0xd7,0xa5,0xd0,0xce,0x10,0x77,0xe8,0x5c,0x85,0x39,0x99,0x3f,0x72,0x88,0x4f,0x22,0x15,0x87,0xa0,0xa3,0x47,0x10,0x81,0x64,0xff,0x94,0x77,0x5d,0xce,0x6d,0xd8,0x29,0xb1,0x9c,0x8e,0xce,0xa8,0x39,0x4f,0xfc,0x36,0x3c,0x50,0xb2,0xf1,0x08,0x66,0x1a,0xf0,0x22 +.byte 0x65,0x1f,0x4d,0x17,0xd3,0x63,0x10,0x64,0xd1,0xc6,0x5a,0x3e,0x82,0x72,0x0c,0x48,0x5e,0x07,0x9c,0x07,0xa0,0x40,0x60,0xab,0x74,0x9a,0x00,0xdf,0xd7,0x7d,0xd4,0x11,0x4e,0xce,0x5a,0xaf,0x12,0x4f,0xe7,0x12,0x36,0x1a,0x12,0x11,0x16,0xb7,0xad,0x4b,0x28,0x84,0x7b,0xd8,0x30,0x0d,0x85,0xb8,0x76,0xde,0xa3,0x78,0x8c,0xb7,0x7c,0xbc +.byte 0x97,0x33,0x53,0x95,0xf8,0x14,0x5f,0xf8,0x0d,0xc1,0x6b,0x79,0xa2,0x42,0x49,0xab,0xae,0x8e,0x78,0xf3,0x51,0x01,0xcc,0x20,0x36,0x80,0xbd,0x32,0x0b,0x1b,0xd2,0xcd,0x27,0x52,0x69,0x1b,0x4a,0x37,0xba,0x31,0xe4,0xc2,0x03,0x8d,0x00,0x48,0x4b,0xcd,0x39,0x2e,0xec,0x94,0x2e,0xe0,0x81,0xfd,0x94,0xd9,0x86,0x39,0x23,0x87,0x3c,0x2f +.byte 0x25,0xe1,0x5b,0x22,0xe0,0x2e,0x37,0x6d,0x9b,0x97,0x9c,0x94,0x37,0x01,0x26,0xb8,0xb1,0x73,0x7c,0xfc,0x0a,0x64,0xe7,0x54,0xf1,0x0f,0x71,0xa1,0xd6,0xc7,0xc8,0xb4,0x86,0x2d,0xfe,0x30,0x8b,0xca,0xb2,0x18,0x21,0xc0,0xc7,0x7d,0x60,0xcf,0x2e,0x25,0xb0,0xa4,0x1a,0x28,0x19,0xa9,0xa9,0x15,0x32,0x5e,0x21,0x89,0x3a,0x99,0x5f,0x50 +.byte 0x86,0x37,0x3b,0x10,0xb8,0xa5,0xad,0x8e,0xbf,0xfc,0x8c,0x85,0xf1,0x76,0x5c,0xe7,0x4d,0xac,0xe7,0x21,0xb3,0x45,0x87,0x3b,0x05,0xc8,0x41,0xf4,0x99,0x83,0x28,0x40,0x6b,0x30,0x37,0x31,0xd2,0xb3,0xdd,0x43,0x3b,0x3f,0xec,0x50,0x58,0x7d,0x20,0xc6,0xb2,0xa9,0x3c,0x22,0x38,0xea,0x16,0x32,0x01,0xc4,0xb0,0x9f,0x7d,0x12,0x91,0x82 +.byte 0x0c,0xd8,0x36,0xfc,0xa4,0xec,0x06,0xb2,0xc2,0xce,0x9b,0xa4,0x53,0x71,0x77,0xdd,0xc3,0xfc,0x34,0x6f,0xd9,0x5c,0xfc,0x36,0xdd,0x63,0x19,0x06,0xfb,0x3c,0xf3,0x3f,0x82,0x28,0x6d,0x00,0xf9,0xfd,0x8d,0x6b,0x79,0x06,0x8a,0xe7,0x6f,0xcc,0x39,0x12,0x80,0x71,0xcb,0x71,0xb3,0xb6,0xa4,0xa8,0xbe,0x61,0x9d,0x1f,0x48,0xa2,0x15,0xa1 +.byte 0xb5,0xf5,0x16,0x70,0xc5,0x39,0xce,0x43,0xa3,0x09,0xe5,0xf4,0x8b,0x77,0x18,0x5e,0xa0,0x77,0xa3,0xa4,0x17,0x2c,0x3e,0x50,0x73,0x2f,0xaa,0x5d,0x58,0x5e,0xdc,0xec,0xaf,0xca,0x6e,0x57,0x80,0xa3,0xd5,0x94,0x30,0x7c,0x11,0x75,0xc4,0xbb,0x9d,0x18,0xc1,0x5a,0x58,0xc7,0x04,0x56,0xb1,0x3a,0x21,0x55,0x02,0xea,0xad,0x58,0x19,0x72 +.byte 0xdc,0x7d,0x0e,0x41,0x62,0x1b,0x5c,0x48,0x97,0x3f,0xed,0xd7,0x4e,0x30,0x1f,0xf5,0xde,0xc5,0x23,0xf2,0xd7,0x22,0xde,0x2f,0x3e,0x80,0x06,0x81,0xf6,0x24,0xb7,0x91,0x09,0x56,0x91,0x00,0x1a,0xea,0xaa,0xa6,0xc2,0x8b,0xc9,0x78,0xd7,0xde,0xf6,0x87,0xb1,0x04,0xcc,0xbb,0xc1,0xc6,0x48,0x43,0xc8,0x03,0xb2,0xdd,0x70,0xc0,0xe3,0xf5 +.byte 0xc0,0xf5,0x13,0xd5,0x11,0x41,0x7f,0x1a,0xdc,0x48,0xf5,0xd6,0x1b,0x0a,0x84,0xd2,0x84,0xcd,0x10,0x4f,0x0a,0xd7,0xcb,0x41,0x61,0x1c,0xcc,0x5c,0xa9,0xbd,0x6e,0x6a,0xf3,0x81,0xd8,0xaa,0x3a,0xff,0x39,0x90,0x8e,0x33,0xe6,0x58,0x13,0x5f,0xec,0x58,0x74,0x35,0xe0,0x06,0x38,0x0f,0xd0,0xbf,0x8d,0xf7,0x26,0x99,0xea,0xdd,0xfb,0xdf +.byte 0x5b,0xcc,0xf1,0x3d,0x9b,0x84,0x8b,0x5b,0xe8,0xc4,0xc6,0x3e,0x0a,0x55,0xec,0x73,0xf7,0x70,0xb1,0xc8,0xfa,0xf8,0xd6,0x72,0x2c,0x6d,0x8d,0xc1,0xa3,0xb2,0x9a,0xe7,0x80,0x6d,0x09,0xa6,0x76,0x06,0x71,0xf9,0x95,0x9a,0xa9,0x2f,0x4b,0x7c,0xad,0x64,0x01,0x01,0x91,0xe4,0x87,0x1d,0xe1,0x46,0xf5,0x4a,0x96,0xc6,0x58,0xd9,0xe0,0xa9 +.byte 0x2f,0x80,0x1e,0xd6,0xe9,0xa6,0xeb,0xfe,0x5a,0xb6,0xd3,0xe8,0x76,0xd2,0x51,0xc6,0x68,0x34,0xc9,0xed,0x76,0x29,0x7e,0x63,0xb1,0x09,0xdf,0x23,0x47,0x41,0x2f,0x70,0x46,0x4d,0xbb,0x36,0xc8,0x84,0xe9,0x58,0x20,0x6b,0x04,0xb2,0xa4,0x1c,0x4d,0xe0,0xa5,0xa2,0x59,0xc9,0xed,0x63,0x25,0x5f,0x3f,0x24,0x18,0x59,0x29,0xe3,0x79,0xbd +.byte 0x35,0x50,0xee,0x81,0x59,0xff,0xd4,0x0e,0x62,0xd3,0x52,0x30,0x81,0xa2,0xe6,0x9e,0xc3,0xc9,0x7a,0x10,0x57,0x36,0x27,0xb7,0x3c,0x61,0x38,0x89,0x70,0xa0,0xc5,0xdf,0x78,0x05,0xa5,0x81,0xe2,0x8a,0x93,0xda,0x7c,0xaf,0xbf,0x6d,0x42,0x09,0x1b,0x43,0x9d,0xf9,0x26,0x87,0xc3,0x84,0x6c,0xb7,0x25,0x31,0x50,0x00,0xd8,0x13,0xc0,0xc0 +.byte 0x6c,0x21,0x82,0x6d,0xf9,0x2f,0xef,0x40,0xe8,0xf8,0xae,0x4d,0x9e,0x1d,0x4a,0xda,0xa0,0x0d,0x77,0x36,0x8b,0xed,0xaf,0x6e,0x2a,0x3d,0xa8,0x36,0xe4,0xff,0x37,0xc2,0xa3,0x11,0x5e,0x68,0x58,0xa8,0xa3,0x19,0xf3,0xc1,0x33,0xea,0x39,0x49,0xfe,0x51,0x87,0xb6,0x31,0x6a,0x61,0x47,0xe7,0xb1,0x46,0xde,0x5a,0xf7,0x93,0x06,0xa7,0x72 +.byte 0xa9,0x2e,0x9e,0x2e,0xc9,0x7f,0xe1,0xb2,0x86,0xb4,0xc9,0xff,0x3b,0xf7,0xaf,0xef,0x91,0x47,0xc2,0xfa,0x42,0x0a,0x4e,0xbb,0x10,0x0d,0xea,0xa4,0x11,0x54,0xa9,0x53,0xde,0xc4,0x01,0xde,0xc7,0x2d,0x1f,0x18,0x40,0x79,0xd1,0x44,0x7d,0x51,0x1d,0xf6,0xdc,0x6f,0xad,0xa2,0x5d,0xd9,0xbe,0x5d,0x11,0x57,0xb7,0x68,0x0d,0x96,0xad,0xb3 +.byte 0x32,0xf7,0x99,0xcc,0x0e,0x03,0xa2,0x79,0x9b,0x63,0xce,0xee,0xf9,0x0c,0xfd,0xfa,0x9a,0x82,0xc9,0x43,0xd3,0xd5,0x23,0xfa,0xac,0x75,0xbe,0x61,0x85,0x18,0xb6,0x75,0x72,0x8d,0x17,0xdd,0xde,0x3f,0x6d,0xb4,0xe8,0x47,0x09,0xe1,0xa7,0xe0,0x4c,0xce,0x93,0x7b,0xc3,0xa3,0x3f,0xc0,0x81,0x21,0x6f,0xe8,0xce,0x68,0x61,0xde,0x1a,0x58 +.byte 0x48,0x7f,0xb4,0xae,0xfd,0x7c,0x80,0x63,0x43,0x5a,0xfc,0xf9,0xf9,0x4d,0xb4,0x8c,0x85,0x27,0x12,0x4f,0x7d,0xe8,0x69,0xc3,0x7d,0x57,0x63,0x0d,0x5f,0xd2,0x85,0x4e,0x0c,0x9a,0x0d,0x1c,0x4d,0xdf,0x3f,0x9a,0x16,0x2f,0x34,0x43,0xc3,0xf0,0xf1,0x16,0x16,0xd2,0x9f,0x2e,0x78,0xd8,0x3c,0x63,0xa0,0x7e,0x02,0x8e,0x65,0xd2,0xb0,0x61 +.byte 0xb0,0x1d,0x7a,0x8f,0xf7,0x30,0x45,0x05,0xf7,0x15,0xc3,0x69,0x24,0x98,0xc3,0x74,0x20,0x16,0x09,0x57,0x39,0x16,0x68,0x23,0x33,0x62,0x4c,0xf5,0xd6,0x34,0xe3,0xad,0x7a,0x14,0x64,0x8c,0x2b,0x48,0x96,0xf9,0x85,0x39,0x19,0x73,0x27,0x04,0xa6,0x55,0x66,0x15,0x8c,0xf1,0x47,0xcd,0x53,0xaf,0x31,0x3a,0xd9,0xfa,0xf9,0xac,0xbd,0xb8 +.byte 0x27,0xe0,0xaa,0xa5,0x62,0x85,0x9f,0xbb,0x4e,0xaf,0xa5,0x72,0x42,0x98,0xa6,0x7f,0xa1,0xb6,0xac,0x17,0xc2,0x2c,0xf3,0xd6,0xc0,0x14,0x4b,0xb3,0x86,0x88,0x89,0x81,0x83,0x7d,0x9d,0xf7,0xe3,0xe4,0x27,0xba,0xa8,0x03,0xb4,0xe3,0x97,0x74,0x1c,0x0d,0xab,0xb4,0x6e,0xc6,0x9e,0x58,0xdd,0x15,0x95,0x2f,0xa6,0xd6,0xaa,0x5a,0x96,0x71 +.byte 0x69,0xca,0xe0,0x5f,0xd2,0x3c,0x66,0x1b,0x58,0x25,0xd6,0xec,0xc0,0x46,0x3e,0x56,0xd0,0xe1,0x36,0x44,0x56,0xc0,0xf2,0x15,0x48,0x9e,0x07,0xce,0x5d,0xb9,0xd4,0x4e,0xcc,0x31,0x26,0xaa,0xdb,0x6a,0x87,0x98,0x0e,0x37,0xfc,0xc5,0x91,0x28,0x1b,0xf8,0x70,0xbf,0x30,0x71,0xbe,0xa0,0x81,0x1e,0x30,0x33,0x37,0x37,0xc8,0x07,0x08,0x9b +.byte 0x8f,0xe4,0x27,0x9f,0x90,0x67,0xb4,0x96,0x08,0xd7,0x30,0x9e,0xa6,0x53,0x39,0xd1,0x9b,0xde,0x02,0x35,0xf3,0xb1,0x19,0x7b,0xd2,0x28,0x5a,0xc3,0x1f,0x69,0x0e,0x48,0xbf,0xa3,0xb4,0x55,0xd1,0x10,0x3d,0x30,0x71,0xc6,0x82,0x2d,0xb8,0x6f,0xe6,0x99,0x6b,0xef,0x9f,0x86,0xed,0x93,0x13,0xb6,0xb0,0x87,0x91,0x77,0x4a,0x00,0xe4,0x5f +.byte 0x4c,0x7d,0x41,0x3b,0xc9,0xda,0x99,0x6b,0xff,0xec,0xef,0x05,0x3c,0xc6,0x0d,0xec,0x68,0x12,0x44,0x31,0xac,0xc9,0x0b,0x9c,0xf5,0xea,0xed,0xda,0x88,0xec,0x6e,0x6e,0x73,0xda,0x85,0x52,0x69,0xa1,0x13,0x52,0xcf,0xc3,0x4d,0x95,0x88,0xec,0x1f,0x53,0x81,0x6f,0xac,0x53,0x60,0x48,0x20,0x9a,0x4d,0x88,0x2c,0x4b,0xb0,0x69,0x5f,0x07 +.byte 0xf9,0xa7,0x2c,0x9a,0x13,0x91,0x86,0xa2,0x98,0x20,0xa9,0x80,0x1e,0xaa,0x8e,0xbc,0x3c,0x3d,0x51,0x34,0x3d,0x5b,0x80,0xe4,0x39,0xfe,0xc8,0xb1,0x6d,0xfe,0x36,0x9d,0x9b,0xde,0x22,0x39,0x41,0xe9,0xff,0xda,0x67,0x67,0xd4,0xeb,0x60,0x44,0xd5,0xc1,0x74,0xcd,0xa0,0x98,0x06,0x34,0x76,0xf8,0xe5,0x0d,0xc8,0x52,0xca,0x83,0xd2,0xdd +.byte 0xf2,0x12,0x36,0x7d,0x3e,0x7f,0xbd,0xa6,0xd8,0x1e,0xc0,0x9d,0x67,0x2a,0x33,0x87,0x86,0x79,0x7a,0x70,0x3a,0x63,0x0b,0x74,0x77,0x89,0xce,0x8f,0x5a,0x3b,0xf3,0x2e,0x52,0x4d,0x1d,0xc6,0xc3,0xc8,0x69,0x98,0xdc,0x81,0x45,0x99,0xfd,0xcd,0x6b,0x6d,0x05,0x33,0x40,0xde,0xb3,0xbd,0x4a,0x27,0xc2,0x9e,0x8b,0xf1,0x4c,0xac,0x92,0x82 +.byte 0x55,0x04,0x79,0xe7,0x28,0x74,0x5b,0x70,0xdc,0xc0,0x4f,0x0c,0xcf,0x3a,0x7f,0x08,0xcc,0x2e,0x1d,0xfd,0x8d,0xd9,0x5c,0xe2,0xa7,0x98,0xc1,0xe8,0x4b,0x96,0xbe,0x27,0xd6,0xfd,0x0a,0x59,0x30,0x33,0x85,0x41,0xc5,0x63,0xab,0xe7,0xda,0x26,0xbd,0xce,0xe7,0x9d,0x50,0xd7,0x2d,0x67,0x7a,0xa1,0x05,0x2b,0x74,0x60,0x5e,0x6c,0x04,0x2b +.byte 0xba,0xe6,0x2d,0x25,0xc9,0x00,0xd0,0xf0,0xa5,0x4f,0x22,0x59,0x34,0xb8,0x43,0x6b,0xb7,0x67,0x25,0x99,0xff,0x75,0x17,0xb1,0x13,0x7e,0x34,0x1d,0x42,0xa3,0x6b,0xb5,0x9d,0xfe,0xa1,0x71,0x0d,0x90,0x81,0x58,0xfc,0xc7,0x85,0xe6,0xbd,0xc2,0xcc,0xc9,0xc9,0x23,0x6e,0xd6,0xbe,0x4a,0x61,0xd4,0xf5,0x9e,0x37,0x6a,0xb1,0x8b,0x91,0x59 +.byte 0xe1,0x3e,0xac,0x87,0x54,0xa6,0xf9,0xf5,0x90,0xd2,0x7c,0xba,0x4b,0x37,0x33,0x1b,0x88,0x5e,0xbd,0x78,0x3f,0xed,0x43,0x40,0x4f,0x16,0x59,0x29,0xbc,0x27,0x98,0x87,0xfe,0x62,0x56,0x93,0x21,0x0a,0xca,0xc1,0x21,0x99,0xb3,0x32,0xbb,0x5a,0x79,0x40,0xab,0xea,0x00,0xf8,0xe9,0x90,0x0d,0x59,0xbd,0x6e,0x7f,0x74,0x01,0x50,0x67,0x3a +.byte 0x8e,0x24,0x1d,0x6c,0xc8,0xd6,0x93,0xca,0x71,0x95,0xec,0xac,0x78,0xe9,0x1f,0x38,0x0d,0xa2,0xe5,0x32,0x90,0xa2,0xaf,0xef,0x15,0x06,0xd6,0x52,0xa4,0xd2,0x94,0x0f,0xbd,0x86,0x81,0x82,0x12,0x9b,0x3a,0xc4,0x0b,0xdf,0x8a,0x5f,0xc6,0x3b,0xb4,0x13,0x9b,0xeb,0xed,0x2d,0x06,0x46,0xa3,0xbe,0xbb,0xe1,0xe1,0x93,0xa1,0xab,0x46,0xf3 +.byte 0xd0,0xd9,0xce,0xb6,0xfb,0xd0,0xd5,0xb6,0xde,0x0c,0xed,0x90,0x18,0x6c,0x1e,0x46,0xb0,0x36,0xa7,0xf1,0x29,0xbe,0x9a,0xa0,0xcf,0xed,0xd6,0xaf,0xb8,0x89,0x9b,0x83,0xa8,0xa0,0x8d,0x26,0xaf,0x8f,0x48,0x66,0xfc,0x22,0x1a,0xc0,0xcf,0xf8,0x90,0x57,0x7e,0x25,0x5f,0xe4,0x0c,0x68,0xd2,0xaa,0x59,0x09,0x2f,0x6d,0x3f,0x80,0x8d,0xe0 +.byte 0xfa,0x25,0xb0,0xe0,0x85,0xe9,0x13,0x39,0x3d,0x1f,0xed,0xd1,0x94,0x9b,0xb5,0xc2,0x65,0xda,0xec,0x7a,0x1f,0x2f,0xe2,0x0a,0x42,0x09,0xbd,0x79,0x7d,0xcb,0xb8,0x4a,0x02,0x2b,0x72,0xaf,0x33,0x85,0x72,0x1b,0x18,0x0c,0xa3,0xec,0x39,0x0e,0x30,0x21,0x41,0xf8,0x2e,0xc7,0x8e,0x5c,0x4c,0xda,0x22,0x49,0x8c,0xa7,0xfb,0x89,0x76,0x2e +.byte 0x45,0x90,0x6c,0xeb,0x70,0x78,0x6d,0x6e,0xee,0x12,0x6c,0xb9,0xb9,0x8d,0xe7,0xf3,0x4d,0x86,0xc4,0x58,0x49,0x55,0xa6,0x86,0xaf,0x39,0x03,0x21,0xfa,0xa7,0xdd,0x51,0x80,0x79,0x6d,0x5b,0xa5,0x58,0x0f,0xfd,0x57,0xb3,0x83,0xe6,0x0d,0x25,0xec,0x55,0xdc,0x0a,0x6f,0xbc,0x7d,0xfd,0x94,0x16,0xdd,0x60,0x9f,0x2a,0x4b,0x6c,0x82,0x03 +.byte 0x4b,0x44,0xbb,0x84,0xdc,0xcb,0x97,0x8e,0x58,0xe7,0xc1,0x79,0xa9,0xf3,0x53,0x78,0x1f,0xf1,0x3e,0xdd,0x94,0x24,0x6d,0xb1,0xd2,0x99,0xbc,0xa1,0xbe,0x7d,0xdd,0xff,0xa8,0x5d,0xd2,0xc2,0xba,0xad,0x60,0x6b,0x40,0x5d,0x7b,0x99,0xd2,0xea,0x45,0x66,0x80,0x6c,0x47,0xf2,0xeb,0x94,0xb8,0xe8,0xe8,0xa0,0x46,0x05,0xe1,0x4f,0x40,0x23 +.byte 0x34,0xdf,0x91,0x63,0xae,0xc9,0xe7,0x32,0x20,0x9a,0x95,0x1e,0xcd,0x5a,0x60,0xe1,0x3d,0xe0,0xf1,0x16,0x3d,0x6e,0x8b,0x96,0x23,0xe0,0xaa,0x1d,0x1a,0xde,0xed,0xc6,0x63,0xb5,0x46,0x8b,0x78,0x71,0x9a,0x14,0x88,0x79,0x61,0x68,0x6b,0xcf,0x80,0xd8,0x9c,0xaa,0xfb,0xb1,0xc0,0xf3,0x39,0x07,0x26,0x56,0x80,0xba,0x9d,0xf5,0xe7,0x95 +.byte 0x99,0xac,0x90,0xea,0xe7,0xe1,0xc9,0x0d,0x40,0x94,0x83,0x58,0xd2,0xc3,0x2b,0xce,0x1e,0xae,0x2a,0xa6,0xfa,0xc7,0x89,0x44,0xcb,0xe2,0x9e,0x74,0x33,0xaa,0x70,0xe5,0x28,0x3a,0x51,0x74,0x53,0xe2,0xfb,0x7c,0x47,0x76,0x22,0xdf,0x46,0xa6,0x01,0x17,0xef,0x88,0x43,0x46,0x3f,0x1a,0x26,0x0c,0xad,0xf4,0x31,0x55,0xf2,0xe7,0xc9,0x35 +.byte 0x6f,0x7c,0x0c,0x5c,0xfd,0x43,0xa4,0x6c,0x6c,0x74,0xf0,0xa4,0xec,0x1d,0x83,0x97,0xc1,0x6c,0x9c,0xd7,0x97,0x90,0x7c,0x07,0x88,0xc0,0xb4,0x79,0x2c,0x7a,0x9c,0x93,0xa2,0x15,0x6c,0xd2,0xa9,0x45,0xa5,0xc1,0x16,0xfe,0x72,0xf4,0x01,0x32,0xe4,0x51,0xdd,0xdb,0x50,0xe3,0x61,0x4e,0x29,0x1e,0x27,0x10,0xe9,0x5e,0x30,0x2b,0x30,0x27 +.byte 0x99,0xff,0x92,0x23,0x04,0x8d,0x28,0x68,0x28,0xd3,0x0f,0xec,0xbb,0xf9,0xfb,0x44,0x1c,0xaa,0x8b,0x38,0x95,0x67,0x1e,0xf5,0x42,0xc9,0xec,0x05,0xeb,0x94,0xe5,0x1c,0x8a,0x2a,0xef,0x3b,0x74,0x46,0x89,0x4f,0xd5,0x6f,0xa0,0xe5,0x74,0xae,0x24,0x8d,0x81,0xae,0x9d,0x3c,0x3e,0x3d,0x41,0x54,0x8f,0xd9,0xc2,0x98,0xf4,0x84,0xeb,0x30 +.byte 0x6a,0x06,0x67,0x11,0x2d,0xb0,0x55,0x70,0x26,0xdf,0x19,0x5f,0x81,0xe9,0x39,0x69,0x3a,0xd6,0x09,0xa4,0x40,0x22,0x1f,0x5c,0xbf,0xd5,0xa6,0xea,0x69,0x99,0x0d,0xea,0x70,0xed,0xfe,0x3a,0xba,0x23,0x8b,0xab,0x08,0xfe,0xfb,0xe9,0x1a,0x88,0x80,0x13,0x45,0x9c,0xca,0x2e,0xda,0x4a,0xc8,0x5d,0x15,0x52,0x87,0x36,0x9b,0x87,0x8a,0x76 +.byte 0x5d,0x31,0x24,0x4a,0xcb,0xf5,0xd3,0xd3,0xc1,0xec,0xde,0x1e,0x48,0x99,0xd5,0xcb,0x93,0xf7,0xca,0x2d,0xa4,0x66,0x5e,0xa4,0xcf,0xc6,0x15,0x20,0x10,0xb1,0xe2,0x8e,0xb9,0x44,0xa7,0xc3,0x54,0x14,0x86,0x08,0xb7,0x89,0x52,0xd5,0x72,0xc5,0x62,0x4d,0x82,0x96,0x23,0xcf,0x6e,0x52,0x3a,0x92,0x53,0x48,0xa2,0xa5,0x9d,0xa4,0xcc,0x32 +.byte 0x45,0x5a,0xdf,0xe2,0xbe,0xce,0x28,0xc8,0xb1,0xb7,0x0f,0x6a,0x38,0x28,0x14,0x66,0x55,0x7a,0xab,0x35,0x56,0xd0,0xc7,0xe5,0xa1,0x8a,0x84,0xf7,0xc5,0xa9,0xdb,0x2a,0x45,0xe9,0x34,0x2d,0xf2,0xed,0x2b,0xa9,0x9e,0x49,0x1b,0x23,0x10,0xeb,0x0e,0x01,0x46,0x6f,0x7a,0x50,0x09,0x5f,0xc3,0xb6,0x1e,0x2f,0x1a,0x3e,0x89,0x32,0xaa,0x5a +.byte 0xaa,0xef,0x23,0x45,0xdc,0xb5,0x7e,0x5f,0x87,0x77,0xde,0x50,0xab,0xbf,0x9e,0x62,0xa8,0xe0,0xf0,0xc8,0x4a,0xf1,0x4e,0xaf,0xe4,0x50,0x8a,0xfe,0xc9,0x68,0xdd,0x19,0x1d,0xc6,0x54,0xe5,0x38,0x0a,0x6f,0x36,0xe4,0x85,0xe8,0xab,0xc4,0x06,0xef,0x07,0x29,0xce,0xea,0x9d,0x2e,0x22,0x97,0x18,0x7e,0x59,0x89,0x92,0x31,0xc5,0x87,0x50 +.byte 0xa8,0x23,0x22,0x58,0x47,0x27,0x1c,0x89,0x5f,0xec,0x94,0x1d,0xb2,0xc8,0x61,0x1e,0x0a,0x80,0xd3,0xe9,0xbf,0x65,0xb9,0x66,0x32,0x56,0xde,0xd2,0x13,0xee,0xea,0xc4,0xc9,0xbf,0x4c,0xb7,0xa4,0x1c,0xc0,0xbf,0xcf,0xa4,0x58,0x1f,0x98,0x1d,0x25,0x4e,0x51,0xd9,0xbe,0x89,0x32,0xdb,0x7a,0xa6,0x39,0xa9,0xbf,0xed,0x65,0x6b,0x92,0xc4 +.byte 0x8d,0xcd,0x63,0x18,0x65,0x44,0x95,0xcf,0x17,0x72,0x8f,0x27,0x79,0x83,0xda,0xe3,0xe7,0xd9,0xca,0x57,0xff,0xa3,0x15,0xbf,0xb6,0xd8,0xc2,0x8c,0xe8,0xdb,0x8c,0xdc,0x54,0x6a,0xc8,0x57,0x6e,0x24,0xc3,0x3c,0x1f,0x33,0xdd,0x68,0xbd,0x7a,0xa3,0xbc,0xa9,0x9a,0xe8,0xfc,0x97,0xa5,0xbe,0x59,0xfb,0x77,0xcd,0x22,0xc6,0x3d,0x95,0x21 +.byte 0xcb,0xf7,0x8d,0xc1,0x77,0xc6,0xe0,0x06,0xb2,0xdb,0xec,0x54,0x19,0xad,0x02,0x25,0xe0,0x0f,0xda,0x4c,0xa5,0xf2,0x47,0x3f,0xc9,0xa0,0x91,0x21,0x39,0xe9,0x74,0x2a,0x9a,0xc1,0x57,0x86,0x3c,0x32,0x27,0x4c,0xc2,0x2d,0x50,0xbd,0x7a,0x04,0x9c,0x45,0x0d,0x7e,0x06,0x1d,0x3e,0xc1,0x6f,0x06,0x7f,0xd4,0x71,0xd3,0x5c,0x66,0x74,0xa7 +.byte 0x33,0x75,0x64,0xa8,0x7d,0xc0,0x23,0xda,0xb0,0x6d,0x12,0xbe,0x83,0x98,0xe7,0x65,0x38,0x4d,0x39,0xc3,0xd7,0x33,0xfb,0x58,0x64,0xfc,0xde,0xd7,0xbf,0x9e,0xdb,0xcc,0x7a,0x35,0xac,0xdf,0x13,0x08,0xbc,0x0a,0x55,0x82,0x5f,0xc3,0x74,0xc5,0xb2,0xdb,0x89,0xdc,0x9c,0x60,0xfa,0x02,0x1c,0xba,0x5b,0x7e,0x0f,0xb1,0x0f,0xad,0x43,0xe1 +.byte 0xe1,0xbe,0x1e,0x06,0x05,0x0f,0x39,0x80,0x3d,0x7d,0xbe,0x8f,0x38,0x25,0x46,0x5e,0xea,0x47,0x36,0x65,0x4c,0x3c,0x6c,0xd6,0xaa,0x46,0xaa,0xb0,0x95,0x1d,0xff,0x67,0x6c,0x70,0x9d,0xec,0x3d,0x3d,0x4c,0x2f,0xd9,0x2b,0xb0,0xbd,0x8c,0x6a,0xca,0xac,0x0c,0x53,0xa1,0xda,0xd8,0xc1,0x3c,0xaa,0xcc,0x50,0x85,0x41,0xa1,0xa7,0xe9,0x7f +.byte 0xf7,0xa8,0x28,0xb1,0x5f,0xd6,0x77,0xc9,0xb5,0xae,0x33,0xa7,0x2d,0x16,0xe0,0x13,0xe8,0xd4,0xf9,0x4e,0x62,0x2e,0xc2,0x9a,0xf3,0x83,0xe0,0x45,0x43,0x68,0x40,0x5a,0x56,0xf3,0x31,0xc8,0x5b,0x46,0x0b,0x38,0x1f,0xa5,0xff,0xe6,0xa1,0x81,0xc0,0x91,0xe5,0x5a,0x63,0x8f,0x47,0x9a,0xe7,0x26,0x0d,0x78,0x8d,0x11,0x7d,0xc8,0xd4,0x9f +.byte 0xc1,0xf7,0x8f,0x93,0xfa,0x2f,0xb5,0xfd,0x6d,0xa4,0x34,0xcf,0x3c,0x6c,0xf6,0x64,0xae,0x5c,0x60,0xa2,0xb4,0xcc,0x18,0x3e,0x08,0x8e,0x36,0x88,0xab,0xc3,0xea,0x53,0x4f,0x1c,0x9e,0xe6,0xef,0x2d,0x9c,0x78,0x4a,0x3a,0x5a,0x60,0x8e,0xf7,0xeb,0x0b,0x36,0xb1,0xbb,0x59,0xe2,0x5e,0x64,0x60,0xe5,0xd6,0x3d,0x2a,0xe1,0x1b,0x03,0x40 +.byte 0x8d,0xde,0x2e,0xd0,0x76,0x0a,0x6b,0x63,0x2a,0x53,0x2d,0x39,0xe0,0x53,0xee,0x7d,0xc4,0x8a,0x39,0xc5,0xda,0xfc,0x31,0x7e,0xa2,0x1b,0x11,0x1d,0x8a,0x8e,0x66,0xf4,0x00,0x17,0xd3,0x78,0x1b,0x94,0xad,0xcf,0xdd,0x56,0xce,0xaf,0xf6,0x34,0xe4,0xb6,0x47,0xe0,0xda,0x1b,0x36,0x4f,0x86,0x26,0xc1,0x65,0xec,0x85,0x8c,0xa9,0xfe,0x96 +.byte 0x75,0x0d,0xe3,0xeb,0x9a,0xa6,0x3f,0xb3,0x10,0x03,0x85,0x24,0xf2,0xb5,0xcd,0x69,0x7d,0xba,0xa2,0x5c,0x8a,0x6d,0x45,0xf4,0xc8,0x4f,0x69,0x8e,0xd4,0x69,0x82,0x42,0xfd,0x00,0x59,0xfd,0x20,0x7a,0x63,0x58,0x56,0x30,0x21,0x73,0xbd,0xd4,0x49,0x84,0x3f,0x51,0x0e,0xfb,0xd3,0xfc,0x93,0x17,0x7f,0x23,0x75,0x25,0xea,0x78,0x79,0xf7 +.byte 0xec,0x22,0xef,0x86,0x91,0x0a,0x90,0x10,0x71,0x3b,0xb8,0x8e,0xb7,0xc9,0xd1,0x26,0x98,0x7d,0x1a,0xab,0x74,0x3e,0x5f,0x10,0xa8,0x47,0xdf,0xc9,0x0a,0x03,0xbb,0xe2,0xbb,0x34,0xbe,0x87,0x1a,0x3e,0x13,0x4b,0xd5,0xdd,0x53,0xb7,0x65,0xb4,0x16,0x38,0xd3,0xfd,0x01,0xde,0xe8,0xba,0x1d,0x33,0x5b,0x7b,0x9b,0x9f,0xfb,0xe7,0x8d,0x82 +.byte 0x21,0x78,0x9e,0xb2,0xf5,0x16,0x37,0x88,0x47,0x9d,0x1a,0x2c,0xfe,0x6a,0xac,0xde,0x3e,0xc4,0xa8,0xed,0x64,0x46,0xdd,0x05,0x07,0x60,0xef,0x99,0x96,0xf0,0x84,0x27,0x38,0x58,0xe5,0xc0,0x53,0x7d,0x07,0xe3,0xa5,0x31,0xb5,0x8a,0xe7,0x50,0x94,0xbb,0x29,0xf9,0x58,0x13,0x91,0x5b,0x54,0x77,0xf6,0x91,0xb8,0x75,0x05,0x3d,0x70,0x3e +.byte 0x07,0x95,0x7d,0x37,0xbd,0x1d,0x29,0x4d,0x33,0x07,0x13,0x2b,0x54,0x70,0x9c,0x31,0xf1,0xcd,0x2d,0x28,0x09,0x43,0x90,0x24,0x8c,0x82,0xb0,0x08,0x71,0x08,0x97,0x7e,0x1a,0xbc,0x82,0xd8,0x31,0x0a,0x13,0xe9,0x22,0xf0,0x8d,0x2b,0x91,0xe5,0x2e,0x34,0x56,0x97,0x86,0xc9,0xbd,0x45,0x1e,0x32,0x03,0xcb,0xa1,0x29,0x00,0x81,0xd4,0x6e +.byte 0x5d,0xbc,0x0f,0x01,0x8d,0x5c,0xb9,0x80,0xcc,0xfe,0x0d,0xa3,0xef,0x8e,0x85,0x59,0x37,0xf7,0x64,0xa7,0xe5,0x2a,0xd5,0x44,0xee,0x91,0xcf,0x6c,0xf5,0x0a,0x9b,0xc7,0xdf,0xb6,0x02,0x2d,0xa4,0xf1,0x22,0x2a,0x97,0xfe,0x1d,0xb7,0x4c,0xc7,0x4f,0x2f,0x0b,0x38,0xd2,0xbf,0xfe,0xe3,0x94,0x55,0xae,0x85,0x0c,0x34,0x59,0x67,0x23,0x7b +.byte 0x4a,0x87,0xd9,0xd2,0xca,0xd5,0x38,0xd2,0x9d,0x05,0x2e,0xd8,0xe3,0x26,0x51,0xa4,0x14,0x66,0xfb,0x38,0x40,0x18,0x3b,0xda,0x43,0x85,0xc9,0xf5,0xf4,0xe7,0x22,0x82,0x45,0xa1,0xdf,0x98,0xa0,0xab,0x5f,0x7a,0x50,0x84,0x75,0x7a,0x70,0xa6,0x3b,0x04,0x20,0xed,0xa8,0x68,0x6d,0x3f,0x43,0xf8,0xb8,0xac,0xc7,0x32,0xa0,0xff,0x47,0xd5 +.byte 0xb3,0x92,0x6a,0x15,0x5a,0xf1,0x7c,0x32,0x30,0xda,0x1e,0x5d,0xab,0xcc,0xd0,0x3a,0xdc,0xcf,0x70,0xd8,0x4d,0xa3,0x50,0xac,0x50,0x42,0x53,0xc6,0xe0,0x3a,0x26,0xdc,0x77,0x30,0x31,0x59,0xa1,0xfc,0x4d,0x48,0x00,0x0d,0xe0,0x66,0xb3,0x9b,0xd3,0x38,0x45,0xbb,0x0c,0x57,0xc5,0x78,0xee,0x8c,0x96,0xea,0xa2,0x16,0xa3,0x12,0xb1,0x06 +.byte 0xd0,0x2a,0x70,0xf7,0xce,0x42,0xae,0x17,0x64,0xbf,0x13,0xa0,0xe9,0x62,0x57,0x1d,0x55,0x78,0xfa,0x72,0x19,0x58,0x15,0xea,0xe5,0xdf,0x72,0x0e,0xc6,0xd3,0xb4,0x3d,0x60,0xee,0x32,0x2a,0xce,0xdc,0xad,0xd0,0x34,0xe6,0xb4,0xcf,0xce,0x5a,0x4a,0x9f,0xaf,0x01,0xb3,0x2a,0xed,0x46,0xa0,0xad,0xaa,0x62,0x8b,0xa4,0xf7,0x4b,0xce,0x32 +.byte 0x35,0x29,0x1e,0x7a,0xda,0x74,0xf8,0xe5,0xda,0x52,0x66,0xaf,0x3d,0x1a,0xff,0x42,0xc0,0xcc,0xb1,0x32,0x36,0x10,0x44,0x34,0x6a,0x16,0xc2,0x5b,0x9a,0x35,0x3f,0xd2,0x29,0xc5,0x76,0x3c,0x24,0xc7,0x2b,0x92,0xae,0xe0,0xe2,0x04,0x6c,0x3b,0x97,0xda,0xfd,0x49,0x43,0x6d,0x35,0xf5,0xc3,0xc1,0x93,0xf8,0x2f,0x25,0xef,0x3e,0xd8,0xf2 +.byte 0xc0,0xb3,0xb5,0x71,0x01,0xe0,0x07,0x11,0xd5,0xf1,0xd3,0x54,0x59,0x93,0x77,0x2e,0x77,0xdc,0x57,0xd7,0x9b,0x0a,0xe2,0xde,0x29,0x04,0x81,0xa1,0x81,0x6f,0x94,0x86,0x39,0xd7,0x29,0x69,0x3f,0xfa,0xe4,0x02,0x01,0x85,0x04,0x21,0xd3,0x17,0xf5,0x68,0x85,0x6e,0x74,0x15,0x56,0xe6,0x5e,0x12,0x1c,0x0d,0x2f,0x7a,0x8d,0xe1,0xc8,0x47 +.byte 0x7b,0xdc,0x35,0x64,0xf1,0x00,0xc0,0x7b,0xd8,0x2c,0x8c,0x60,0x10,0x53,0x11,0x2c,0x5c,0xa2,0xb6,0x05,0xa3,0xcd,0x14,0xb6,0xd0,0x36,0xe9,0x74,0x78,0xc3,0x84,0x6b,0x51,0xa9,0xf9,0xf1,0x05,0xe2,0xd4,0xa3,0x57,0xec,0xb1,0x5e,0xd5,0x75,0x64,0xe3,0xb0,0xf9,0x8f,0x88,0x60,0xdf,0x8e,0x75,0xf9,0x32,0xfc,0x58,0x5b,0x4b,0x17,0xdb +.byte 0x41,0x04,0x6f,0x17,0x7a,0xf8,0xd0,0x47,0x8e,0xeb,0xd1,0xf9,0xa6,0xa8,0x52,0x7e,0x07,0x6b,0x5b,0x4d,0xb9,0xda,0x91,0x40,0x51,0x25,0x67,0x4b,0xf1,0x95,0x12,0x07,0xa9,0xa5,0x33,0x96,0x92,0x5e,0xb4,0x0e,0xf0,0x85,0x2e,0x70,0xd8,0xaf,0xae,0x9a,0x3d,0x0c,0xb0,0xee,0xe1,0x80,0x5a,0xb9,0x17,0xe6,0x00,0xa8,0x82,0xd0,0x9b,0xf5 +.byte 0xe3,0xa0,0x12,0xc4,0x15,0xd6,0x5e,0x57,0x5c,0xd2,0xb9,0xa7,0x8e,0xfd,0x09,0xc3,0xd2,0x66,0xfd,0x86,0xb4,0xdc,0xa3,0xc2,0xfe,0x16,0x86,0xc4,0x98,0xa3,0x2e,0x4c,0xc9,0x2c,0xd6,0x87,0x83,0x1b,0x6f,0xe2,0x44,0xd6,0x72,0x94,0x1d,0xba,0xaf,0x34,0x1f,0xf2,0x40,0x40,0x33,0x24,0x63,0xc1,0x26,0xef,0xbc,0x0f,0x3b,0x3c,0x65,0x2b +.byte 0xa7,0xc7,0xdf,0x96,0x67,0xab,0x92,0x0e,0x04,0x8c,0x82,0x9e,0xbe,0x52,0x61,0x40,0xdf,0x77,0x00,0xc5,0x01,0x9a,0xe9,0xde,0xe1,0xe2,0x45,0xb8,0xed,0x94,0xd5,0xf0,0x28,0x29,0xef,0x0d,0x91,0x07,0x9b,0xfe,0x69,0x78,0x26,0xd7,0xf9,0x51,0xf1,0x9c,0xf2,0xbb,0x83,0x2d,0x79,0x1e,0xff,0x97,0x13,0xdc,0x28,0x93,0x26,0x7c,0x54,0x52 +.byte 0xc0,0x92,0xeb,0x4a,0xa2,0xe3,0x01,0xfc,0x07,0xb9,0x26,0x11,0x03,0xe0,0x19,0xa8,0x9c,0xff,0x3a,0x95,0x26,0x3a,0x17,0xf1,0x7d,0x6a,0x6a,0xb2,0xb5,0x5a,0x07,0x43,0x2b,0xb7,0xdd,0x19,0x14,0xe0,0x05,0x91,0xc5,0xee,0x49,0x35,0x7b,0x1a,0x2d,0x34,0xda,0xa2,0x45,0x7e,0x0d,0x64,0x98,0xb6,0x2e,0x47,0xaa,0x6c,0x73,0x66,0x55,0x01 +.byte 0x27,0xb0,0xa9,0x13,0xa6,0xe0,0x74,0x38,0xb3,0x97,0xfe,0xaf,0xdc,0xc0,0x6a,0x4f,0xd8,0xdb,0x07,0x62,0x61,0x05,0xbb,0xa0,0xa8,0xc5,0xb3,0x89,0x13,0xbb,0x09,0x01,0x6f,0x09,0xcb,0x47,0x62,0x46,0xf0,0x4b,0xf0,0xb7,0x7c,0x39,0x8d,0xe5,0x7b,0x64,0x49,0x32,0x93,0x1e,0x94,0x0a,0x98,0xe0,0xca,0xc6,0x67,0x5b,0xdf,0x88,0x0a,0x26 +.byte 0x83,0x77,0xc3,0xd0,0x11,0x66,0x3d,0x25,0x91,0x61,0x80,0xfc,0x9c,0x50,0xfb,0xe8,0x81,0x6f,0xd8,0xfa,0x77,0x78,0x4c,0x2b,0x44,0xd0,0x92,0x52,0xa4,0x50,0x50,0x7e,0xa2,0xb9,0xe7,0x79,0x33,0x95,0xfe,0x29,0x1c,0x1d,0x43,0x9d,0xa7,0x12,0xfe,0xa1,0x45,0xf4,0xd9,0x1c,0x7e,0x5a,0x67,0x99,0x7f,0x22,0x7c,0xa3,0xb1,0x2d,0xb7,0x1d +.byte 0x6b,0xf6,0xb4,0x94,0xf2,0xd1,0x5c,0x28,0x56,0xe9,0x4f,0x21,0x81,0x96,0x37,0x7c,0x25,0x74,0x0f,0xf9,0xc5,0xf5,0xc6,0xe8,0x8f,0xbb,0xfb,0xe4,0xaf,0x23,0xac,0x4c,0x20,0x35,0x7d,0xb4,0x4a,0xde,0x90,0xec,0x16,0x30,0x95,0x1b,0x79,0xf6,0x77,0xfe,0x80,0x10,0xba,0xd2,0x49,0xda,0xca,0x9e,0x6b,0x63,0x2f,0x24,0x38,0xf9,0xee,0x20 +.byte 0x38,0x5c,0xeb,0xf5,0xbc,0x07,0x7a,0xeb,0xde,0xc4,0x97,0xcf,0x48,0x9b,0x80,0x40,0xfa,0x81,0xf5,0x24,0xa7,0xf3,0xf7,0x16,0xe9,0xba,0xae,0x9f,0xde,0xa1,0x00,0x34,0x74,0x36,0x9f,0x47,0xce,0xcf,0x35,0xdb,0x30,0x7e,0x72,0x81,0xc5,0xe1,0x59,0x07,0x3e,0xc7,0x5b,0x7b,0xd3,0xc6,0xeb,0x4e,0x71,0x9c,0xeb,0x41,0x37,0xd9,0x9e,0x34 +.byte 0x0b,0xc1,0x9c,0xf7,0xfd,0x56,0xb0,0xd6,0xa6,0xe4,0x1d,0xdf,0x43,0xc6,0xf3,0x26,0x0f,0x01,0x07,0x29,0x57,0x9c,0x8f,0xe1,0x31,0xc9,0xa6,0x98,0x0f,0x0e,0x27,0xfd,0xa0,0x59,0xdf,0x92,0x7b,0x0a,0x4c,0x42,0x4b,0x03,0x98,0x2a,0xea,0xcb,0xd8,0x0f,0x6d,0x19,0x0b,0x22,0x69,0x8b,0xaa,0x3b,0xc8,0x41,0x66,0x81,0xc3,0xaa,0x64,0x6d +.byte 0x44,0xdd,0xb9,0xe2,0xc4,0x47,0x6d,0xdf,0x61,0xe0,0xf3,0x26,0x40,0x23,0x2f,0xf9,0x2a,0xb3,0xfa,0xe2,0xe8,0x36,0xc0,0xd9,0x89,0xb0,0x05,0x47,0x36,0x20,0x3b,0x03,0x0c,0xd1,0x46,0x9b,0xc9,0x65,0xfa,0x14,0xba,0x68,0x49,0xfc,0x2a,0xb9,0x04,0x47,0xbb,0x64,0xe1,0x7f,0x5a,0xd3,0x70,0x19,0x0f,0x14,0x09,0xc0,0xbe,0xc3,0x9b,0x2f +.byte 0xd1,0x05,0x90,0x56,0x09,0x47,0xb3,0xc5,0x08,0x6f,0x89,0x59,0x8c,0xf3,0xd4,0x1c,0xaf,0x68,0x00,0x32,0x58,0xe2,0x66,0x55,0xe2,0xc3,0x46,0x73,0xfd,0x4b,0x63,0xc5,0xdd,0x48,0xa8,0x14,0xe9,0x07,0x94,0x8f,0x51,0x6e,0x2d,0x7c,0x62,0x97,0x73,0xa5,0x42,0x7d,0xad,0x43,0xcb,0x65,0x56,0xf0,0x23,0x28,0x72,0xdb,0x1f,0xcf,0x34,0x9a +.byte 0x62,0x06,0x8d,0xc9,0x86,0x40,0x6d,0xee,0x58,0x72,0x02,0xbb,0xce,0x33,0x6a,0xe4,0xcb,0x46,0x25,0xda,0x2f,0x8d,0xc9,0x8e,0xfe,0xcf,0xbb,0xfc,0xb0,0xe8,0xec,0xf2,0xf9,0xff,0x5d,0x70,0x9e,0x2e,0x22,0x0e,0x9a,0x4d,0xb8,0x26,0x7a,0x48,0x3f,0xba,0x5c,0xcd,0x10,0xf4,0x6d,0x89,0x3d,0x5d,0x87,0xd4,0x69,0xb8,0x4a,0x20,0xc6,0xf8 +.byte 0x03,0x6c,0x60,0x1e,0x9c,0xc6,0xe3,0x39,0x9b,0xa1,0x16,0x64,0xed,0xc6,0xd7,0x54,0xfd,0x8d,0xa0,0x2f,0xcf,0xc6,0xde,0x43,0xe4,0xc5,0xb7,0xd6,0x00,0xaf,0x95,0x7a,0xc6,0xde,0x26,0x59,0x39,0xb0,0x12,0x6b,0xe1,0x3c,0xa9,0x09,0xb6,0x15,0xb0,0x62,0xad,0xa9,0x11,0x4f,0x86,0xde,0xc6,0xe8,0x32,0x46,0x78,0xeb,0x60,0x81,0x6b,0x8f +.byte 0xac,0x80,0xbf,0xa4,0xc4,0xb7,0x5f,0x3b,0x2f,0xf8,0xe4,0x05,0xcf,0xbf,0xa3,0x14,0x6f,0x16,0xbc,0x6c,0x4e,0x31,0xd7,0x79,0x09,0xcf,0x9c,0x58,0xa3,0x0b,0x1a,0x31,0x4b,0xda,0xcb,0x11,0x35,0xb1,0xf5,0xbb,0xfb,0x00,0x46,0x6d,0x70,0x5e,0x4a,0x85,0x19,0xdf,0xb5,0xd0,0x03,0x2e,0x5d,0x01,0x95,0x4e,0x5a,0x59,0x99,0x24,0xac,0x3f +.byte 0x2d,0x64,0xaf,0xef,0x40,0x16,0x2a,0xcc,0x6a,0x6c,0x0f,0xe3,0x45,0x15,0x74,0x3d,0xea,0xdb,0xa7,0x3f,0xd2,0x50,0x4d,0xc7,0xc6,0x19,0x36,0x84,0xf4,0xbd,0x09,0xff,0xe7,0xf3,0xc0,0xa5,0x34,0x49,0x8a,0xfe,0x83,0xcd,0xe4,0x80,0x7d,0xe3,0xff,0xc9,0x8a,0xb9,0xd6,0x34,0x01,0xd1,0x47,0x16,0x5e,0x7c,0x16,0xf5,0x7c,0xf8,0xb5,0x53 +.byte 0x26,0x84,0x89,0x73,0xf3,0x7f,0x9c,0xb0,0x2f,0x07,0x9e,0xf2,0x12,0xdf,0xba,0xc0,0x15,0xd0,0x3a,0x59,0x9d,0xde,0x67,0x5e,0x1c,0x2b,0x4b,0x84,0xb8,0x89,0xfb,0x62,0x90,0xe9,0x89,0xd9,0xdb,0xb7,0x21,0x4a,0x9f,0xbd,0xc0,0x02,0x01,0xda,0xb3,0x4c,0x9d,0xfb,0x46,0xa1,0xd0,0x3c,0xf5,0x27,0x6f,0x70,0xb5,0xa9,0x74,0xdc,0xa0,0x76 +.byte 0xb7,0x3a,0x53,0x18,0xdd,0x80,0x5e,0x43,0xb5,0x35,0xe4,0x0e,0x26,0x27,0x0a,0xab,0xe8,0x4d,0x2e,0x89,0x20,0xc3,0xff,0xe4,0x7f,0x03,0x2c,0x5f,0x25,0xc7,0x70,0x53,0x27,0x4c,0xc8,0xb9,0xb1,0x81,0x10,0x7a,0xa2,0x65,0xe4,0x0b,0x65,0x8e,0x3d,0x2f,0x96,0xa0,0xa5,0x7b,0x4f,0x09,0xe9,0x9d,0x10,0x06,0xf7,0x18,0xad,0x2d,0x7f,0xb8 +.byte 0x8f,0x08,0xa7,0x2c,0xda,0x82,0xbe,0x5c,0xd6,0x1d,0xb6,0xe2,0x9b,0xa2,0xfc,0x18,0x8c,0x8d,0xf7,0x81,0xf4,0xc6,0x1e,0xcb,0xe5,0x73,0xa6,0x74,0x06,0x20,0xf3,0xa9,0xcb,0x80,0x01,0x55,0x7e,0xc0,0x6a,0x1f,0x5a,0x5b,0xb1,0x56,0x5d,0xd8,0x2a,0xd5,0xf5,0x57,0xe8,0x48,0x6c,0xfb,0x9e,0x93,0xa7,0x0e,0x13,0x2b,0x68,0xc5,0x6b,0x17 +.byte 0x43,0xb0,0x58,0x04,0x65,0x3d,0x46,0x57,0xa7,0x3d,0x99,0xb8,0xa1,0x48,0x17,0x44,0x67,0x2a,0x0d,0x44,0x87,0x9f,0x63,0xd7,0x92,0x56,0x7b,0xab,0xd3,0x6a,0xbd,0x4f,0xc0,0xc3,0xd2,0xee,0xd1,0x3d,0xd1,0x18,0x2e,0x6a,0xf5,0x3b,0x67,0xa0,0x0a,0xf3,0x11,0x49,0xc5,0x4b,0xef,0xcf,0x00,0xfd,0x22,0x8f,0xa0,0x9c,0x99,0x32,0x2f,0x58 +.byte 0xf9,0x97,0x98,0x13,0x4a,0x88,0x50,0xcc,0x58,0x1e,0x27,0x02,0x34,0x7d,0xec,0xf6,0x88,0x3a,0x74,0xb5,0x34,0x6d,0x6f,0x52,0x2d,0x20,0x02,0x70,0x22,0x27,0xdf,0x7a,0xff,0x30,0x36,0x66,0x1a,0xa0,0x51,0xc3,0x75,0x9a,0x06,0xe5,0x3f,0x6c,0x74,0x0d,0x15,0xa2,0xb6,0xe5,0xcd,0x55,0x4d,0xea,0x65,0x8f,0xbb,0xb2,0xd4,0x95,0x73,0xa4 +.byte 0xcd,0xb9,0xc8,0x82,0x60,0x49,0xe9,0x36,0xc9,0xb1,0xe9,0xcb,0x52,0xae,0xa7,0x7a,0x64,0xab,0x75,0x84,0x03,0x4b,0x37,0xf7,0x07,0x75,0xf7,0x1c,0x32,0x19,0xb6,0x8b,0xca,0x7c,0x43,0x15,0xe8,0xec,0x57,0x89,0x1d,0xe2,0xa0,0x80,0xc5,0xb6,0x02,0x29,0xfd,0xda,0xe0,0x14,0x93,0xb4,0xb3,0x44,0x2e,0x17,0x2f,0xed,0x3b,0x38,0x6e,0x8f +.byte 0xe0,0x3d,0xc6,0x77,0xe9,0xa7,0x76,0xcb,0x98,0x2d,0x08,0x61,0xcf,0x1b,0x25,0x3f,0xfb,0x1d,0x99,0xb1,0x5a,0x3c,0x53,0x96,0x4e,0x09,0x11,0xf6,0x5b,0x09,0x31,0xe1,0xad,0xb0,0xaf,0x7b,0xec,0xf9,0xa8,0x68,0xb7,0x93,0x57,0xf7,0x17,0x77,0x87,0x2b,0xdb,0x00,0x28,0xc6,0x48,0xac,0xff,0xcd,0x26,0x4a,0x8a,0x76,0x9a,0x2a,0x1d,0x37 +.byte 0x4c,0x70,0x4f,0xf6,0x52,0xe3,0x7a,0x78,0x94,0x5b,0x0b,0x50,0xb4,0x48,0x03,0xcd,0x78,0xd0,0x5d,0x89,0x6d,0x76,0xaf,0x9d,0x67,0xc3,0x75,0x6f,0x6a,0x2d,0xe2,0xb7,0x58,0x51,0x10,0x0d,0xef,0xa0,0x1a,0x74,0x28,0x3a,0x97,0x19,0x4f,0x3c,0x8a,0x86,0x3d,0xe4,0x66,0x3d,0x57,0xb4,0x66,0xb3,0x0b,0x4f,0x57,0x57,0x34,0x2e,0xc7,0x0c +.byte 0x11,0xdf,0x3c,0xb4,0x9f,0xe1,0xd5,0x27,0x41,0x08,0xec,0xca,0x18,0x88,0x48,0x5e,0x88,0x55,0x89,0x71,0xe6,0xa5,0x90,0x7c,0x3b,0xe5,0xf3,0x2a,0xd7,0xf5,0x0b,0x3d,0xbb,0x47,0xad,0xd7,0x78,0x41,0xa8,0xef,0xd4,0x36,0x31,0xd1,0xe4,0x9c,0x87,0x9e,0xb1,0x11,0x0e,0xff,0x8f,0x4d,0x79,0x65,0xc4,0x83,0x75,0x33,0xc9,0x89,0xe2,0xc3 +.byte 0x41,0x68,0x11,0xe7,0xe4,0x58,0xb9,0xf1,0xee,0x06,0x48,0x4d,0xc3,0xc7,0x76,0x60,0x42,0x94,0x8f,0x0d,0xb9,0x53,0x46,0x78,0x06,0x97,0x94,0x36,0xf4,0x3e,0xf3,0xdd,0x5b,0x46,0xe1,0x9d,0x3f,0x9e,0x78,0x00,0x9e,0xe7,0xcb,0x9e,0xc8,0x30,0x87,0x4a,0x52,0x91,0xd5,0xe2,0xa3,0x65,0x98,0xb2,0xc9,0x6c,0xfb,0x4e,0x54,0x5a,0x9f,0x57 +.byte 0x2c,0x4a,0x76,0xe4,0x97,0x88,0xd5,0x6a,0x0e,0x6c,0x7c,0xef,0x78,0x2a,0x7c,0x26,0xa3,0x25,0xf6,0x33,0x82,0x46,0x6d,0x91,0x0d,0xe4,0x83,0xec,0xf1,0x24,0xf8,0x0a,0x34,0xec,0xfc,0x7e,0x47,0xda,0x9a,0x17,0x1b,0x33,0xd0,0xf1,0x70,0xe4,0x0b,0xc7,0x70,0x58,0x1d,0x76,0x20,0x89,0xce,0x4f,0xd1,0xcb,0x3b,0x26,0xd1,0x98,0xd9,0x51 +.byte 0xb1,0xd0,0xaa,0x4a,0xd5,0x10,0xf2,0xae,0xaa,0x14,0xa7,0x72,0x99,0x3d,0xc8,0xbf,0xfb,0xec,0x6a,0x14,0xdd,0x97,0x7b,0x2f,0x16,0x96,0x0f,0x41,0xb8,0x33,0x15,0x1b,0xa2,0x6a,0x7e,0x64,0x0d,0xab,0xe7,0x62,0xf5,0x6c,0x56,0x69,0x09,0x46,0x32,0x24,0x60,0x4e,0x21,0xc7,0x5b,0xee,0x0a,0xe2,0x94,0x7c,0x20,0xe2,0x06,0xa0,0xa2,0x36 +.byte 0xa0,0x7d,0xb5,0x37,0x2a,0xee,0x20,0x25,0x4c,0xba,0x9a,0x06,0x4c,0x07,0x9b,0xea,0x55,0xac,0x2a,0xf7,0xb9,0x5c,0x23,0xac,0x43,0xda,0x9d,0xad,0x76,0xe2,0x5f,0xe0,0x27,0xaf,0x0a,0x5e,0x3d,0x54,0x84,0xfc,0x19,0x75,0x8c,0x62,0x4d,0x37,0x17,0x1a,0x90,0x55,0xb8,0x7e,0xa1,0xad,0x31,0x1a,0xc0,0x91,0x96,0x51,0xa9,0x5f,0xbb,0xb9 +.byte 0x95,0xbf,0xe2,0xd5,0x7e,0x31,0xba,0xc4,0x1e,0x63,0x98,0xd3,0xe2,0x7d,0x87,0xa5,0x46,0xe3,0xae,0xe1,0xe8,0x4e,0x74,0x29,0x0e,0x4b,0x10,0xa8,0x7f,0x3a,0xe5,0x60,0x0f,0x49,0x6a,0xcd,0x3d,0x5a,0x8e,0xf1,0x48,0xd0,0x80,0x7b,0xa3,0x7f,0x06,0x47,0x2b,0x60,0xf2,0x17,0xc3,0xe1,0x26,0x1e,0xb7,0x0f,0x2b,0x7c,0xc7,0xb8,0x3a,0x4f +.byte 0xad,0x05,0x97,0x88,0x93,0x82,0x8e,0x06,0x77,0x44,0xd1,0x65,0xfd,0x18,0x48,0xd6,0x88,0xcd,0x5c,0xbd,0xe4,0xaa,0xea,0xf1,0xed,0x16,0x5f,0xb3,0x58,0xe2,0x69,0x82,0xbe,0x9e,0xfc,0xcb,0xf6,0x17,0xa9,0x70,0xeb,0x08,0xd7,0x06,0x86,0xf6,0x5a,0x43,0x68,0x7b,0xcf,0xa3,0xfa,0x26,0x5e,0xe5,0x42,0xd3,0x5a,0xc8,0x1c,0x3b,0x8d,0x2d +.byte 0xf1,0x45,0xb0,0x97,0x90,0x0b,0xe7,0x2d,0xab,0xd7,0xd8,0x8a,0x16,0xf9,0x5f,0xa6,0xcf,0xc5,0x60,0x2c,0x34,0x5a,0x2e,0x2b,0xb9,0xb4,0x9c,0xa7,0x09,0x77,0xd2,0x3f,0x8c,0xf3,0xf6,0xf7,0xe0,0x27,0x79,0xc3,0x4e,0x61,0x7d,0x09,0x50,0x05,0x01,0x35,0x1b,0x33,0x54,0x6f,0x90,0x9a,0x19,0xcd,0x86,0x45,0x23,0xcd,0x6f,0x1b,0x62,0xc5 +.byte 0xce,0x4e,0x8e,0xff,0xe7,0x12,0x32,0x85,0x9a,0xc4,0x11,0x83,0xcf,0x78,0xd7,0x41,0x99,0x64,0x20,0xa6,0x69,0xdd,0xe3,0x53,0x98,0x6b,0xc7,0x98,0x51,0xc5,0xf8,0x3e,0xa3,0x5f,0x0d,0x78,0x2f,0xa7,0x05,0xff,0xe5,0x3a,0x0f,0x7c,0x09,0x58,0x3f,0xaa,0x0d,0x9a,0x9d,0x8d,0xe7,0xbf,0x6b,0x7d,0xfe,0x3a,0x4f,0x5c,0x50,0xb2,0xe7,0xc5 +.byte 0xa5,0x13,0xde,0xc8,0xe8,0x59,0xac,0xb0,0xdd,0xc0,0x81,0xa7,0x0b,0x78,0x32,0x23,0x76,0x85,0x11,0xef,0xe3,0x88,0x6f,0x7f,0xa9,0x09,0x7b,0x0c,0x6f,0x34,0xb2,0x67,0x5e,0xd6,0x11,0xad,0xd7,0x3b,0xf2,0xbb,0x66,0x5b,0xde,0x22,0xfc,0x55,0x26,0xa1,0x89,0x80,0x2e,0xb8,0xf3,0x3c,0xf8,0x1e,0xba,0x99,0x1c,0x24,0x33,0xb4,0xe6,0x17 +.byte 0x2b,0x9c,0x80,0xe5,0x9b,0x58,0x54,0x70,0xcd,0x15,0x81,0xcd,0x51,0x48,0x75,0x24,0x27,0xf5,0x30,0x79,0xc1,0x16,0xff,0x89,0x70,0x12,0x74,0x07,0x9d,0x39,0xf2,0x9c,0xc6,0x89,0x8d,0x94,0x41,0x01,0x04,0xf5,0x16,0x99,0xf3,0xf0,0xd1,0xf5,0x6d,0xd3,0x11,0x19,0x29,0x36,0xfb,0x41,0xf9,0x32,0xb9,0x0f,0x13,0xaf,0xac,0xfb,0x30,0x75 +.byte 0x62,0x8c,0x04,0x5b,0xf1,0xce,0x52,0x9b,0xbe,0x8c,0xf9,0x86,0x5d,0x7d,0xc1,0x8e,0x41,0x76,0x42,0x63,0xd7,0x74,0x8e,0x2c,0x46,0xa1,0x0a,0x51,0xb5,0xec,0xe9,0x91,0x56,0xbc,0xdc,0x32,0xfc,0x10,0xb5,0xca,0x5b,0x4b,0x72,0x99,0x07,0xff,0x01,0x11,0x2c,0xa4,0x60,0xf5,0x6b,0xd4,0xa8,0x96,0x21,0xee,0xbe,0x14,0x8f,0x69,0x99,0xdc +.byte 0x43,0x7f,0x13,0x3d,0x17,0x1e,0xa3,0x1b,0x21,0x23,0x26,0x7e,0xff,0x80,0x6b,0x66,0x3e,0xb2,0x48,0x1a,0x77,0x3c,0x50,0xe2,0xca,0x4d,0xc6,0xdb,0xfd,0xd1,0x23,0xcc,0xcb,0x01,0x25,0xc0,0x62,0x8d,0xe5,0x9c,0xb7,0x13,0x97,0xf5,0x49,0x01,0x19,0x45,0x45,0x83,0x17,0xff,0x8e,0x94,0x8c,0xb0,0xc0,0xaf,0x46,0x62,0x0e,0x62,0xb7,0x8c +.byte 0xd5,0xcf,0xb9,0x82,0x6e,0x8a,0xb9,0x22,0xbc,0x30,0xf9,0x65,0xc2,0x7f,0xce,0x6b,0x4d,0xad,0x87,0xcb,0x23,0xab,0x57,0x36,0x6a,0xb7,0x8c,0x63,0x17,0x60,0x13,0xa1,0x1f,0x3d,0xa4,0xd4,0xab,0x5d,0x97,0xc7,0x18,0xaf,0xf8,0xae,0x13,0x64,0x2a,0x19,0x34,0xe2,0x28,0x28,0x4f,0x32,0x2a,0xd8,0x43,0x79,0xaf,0x1e,0x56,0xfc,0x97,0x51 +.byte 0x67,0x8c,0x63,0x80,0x32,0x63,0x71,0x5c,0x78,0x00,0xeb,0xfd,0xa2,0x96,0x58,0x21,0x36,0x13,0x02,0xe5,0xa4,0xb7,0xcd,0x5a,0x30,0xa0,0x5b,0x7b,0x23,0xa4,0xcc,0x54,0x64,0x6f,0x6d,0x9b,0xaf,0xea,0x49,0x69,0x9e,0x2f,0x51,0x5c,0xe7,0xa3,0xa3,0xb8,0xac,0xed,0x47,0x23,0x7a,0x37,0x38,0xe3,0x15,0x98,0x6f,0x50,0x6c,0x8d,0xa7,0xe6 +.byte 0xa8,0x39,0xcc,0x63,0x08,0xeb,0x8f,0x8c,0xfd,0x83,0xaa,0x34,0x75,0x19,0xc0,0xf4,0xd6,0x25,0x18,0x94,0x9d,0xa1,0x7e,0xc8,0x6b,0x19,0x76,0xc0,0x8d,0xaf,0x51,0xe5,0x7c,0x8a,0x98,0x17,0x80,0x90,0xc0,0xb6,0xed,0x5c,0x8f,0x33,0x56,0xba,0xce,0xbe,0x83,0x87,0x5d,0x51,0x2e,0x64,0x84,0xa6,0x9d,0x49,0x27,0x5b,0x92,0xe0,0xe7,0xac +.byte 0x37,0x3d,0x22,0x5e,0x25,0xe7,0xca,0x2f,0x5d,0x2f,0xa0,0xd5,0xcb,0xe9,0xac,0x84,0x5b,0x19,0x72,0x1c,0x2c,0x0a,0xd1,0xb7,0x73,0x24,0x8a,0x0f,0xe0,0x07,0xd8,0x49,0x4d,0x23,0x1b,0xac,0xb8,0xd1,0x42,0xd4,0xdf,0xf8,0x4d,0x85,0xa2,0x37,0x30,0x46,0x38,0x88,0x55,0x1d,0xea,0x37,0x54,0x8c,0x43,0xb0,0xed,0x01,0x53,0x75,0xe6,0xf7 +.byte 0x9b,0xe6,0x10,0x91,0x6e,0x80,0x11,0xf9,0x96,0x29,0x4f,0x08,0x77,0x2b,0x7e,0xdb,0x5b,0x14,0xbd,0x77,0x37,0xe8,0x36,0x07,0x4a,0xe4,0xd8,0xa2,0x4e,0x38,0xea,0xeb,0xc2,0xd6,0x43,0x59,0x20,0x0c,0x12,0x31,0x6c,0x27,0xc5,0x7b,0xfc,0xfc,0x54,0x94,0x1d,0x5f,0x82,0x73,0xd7,0x1f,0x43,0x3a,0x73,0xc4,0xf3,0xb3,0xbb,0x53,0xfe,0x22 +.byte 0xc0,0xa4,0x7e,0x2b,0x84,0x1b,0xef,0x6d,0x83,0x9d,0xb3,0x8b,0x2a,0x6c,0xea,0x1e,0xfa,0x77,0x01,0x35,0xd2,0x5b,0xc4,0xd3,0xe7,0x1e,0xca,0x73,0x8b,0xb9,0x1f,0xfb,0x67,0xf2,0xdd,0x03,0xe6,0xca,0xfe,0x3b,0x61,0xd7,0xb5,0x96,0xe0,0x85,0xc2,0x23,0xa7,0xea,0x38,0xbf,0x6e,0x29,0x9e,0x8e,0x18,0xd4,0xbf,0x16,0x73,0xf9,0x18,0xef +.byte 0xc9,0xaf,0x6c,0xe2,0xdc,0xa4,0x58,0x9c,0xf5,0x6d,0x4a,0xc8,0xb4,0x8f,0x16,0x02,0xb7,0x65,0xd3,0x32,0x3b,0x83,0xfe,0xf3,0xc7,0xba,0x68,0xf4,0x95,0xa4,0xf6,0x33,0x57,0x43,0xbe,0xae,0x83,0xa9,0xe4,0x0d,0x0b,0x23,0xaa,0xbc,0x15,0x53,0x18,0x4d,0xb4,0x35,0xe3,0x8e,0x86,0xfe,0xe4,0x98,0x5d,0x63,0x23,0xce,0x44,0xea,0x4d,0x64 +.byte 0x86,0xf8,0x06,0x8f,0xc0,0x73,0xa6,0x6d,0x04,0x53,0x47,0x95,0x0f,0x6d,0x6c,0x01,0x1c,0x3f,0x7b,0x83,0xe4,0xc2,0x40,0xb8,0x97,0x26,0x9e,0x35,0xb0,0x76,0xee,0xe4,0xc7,0xd8,0xaa,0x22,0x83,0x96,0xe1,0x34,0x7b,0x78,0x31,0xee,0xd3,0x9a,0x50,0xd4,0x05,0xfd,0xd6,0x15,0xca,0x83,0x2f,0x49,0xfd,0x00,0x23,0x82,0x39,0xac,0x46,0x7a +.byte 0xe4,0xb5,0xcc,0xee,0xbb,0xaa,0x98,0x82,0xb5,0x27,0x45,0xd5,0x96,0x6e,0x89,0x01,0x1e,0x30,0xe4,0x1c,0x3a,0x65,0xcc,0x9f,0xda,0x38,0xf0,0x4c,0x68,0xfa,0xe5,0xf2,0xe2,0xce,0x34,0xc2,0x15,0xfd,0x21,0xf6,0xe2,0x33,0xbd,0xef,0xfd,0x49,0x15,0xdc,0x38,0x3b,0x24,0xba,0x3a,0x80,0x35,0x60,0xbe,0x50,0x17,0x38,0x3e,0xe2,0x96,0x84 +.byte 0x01,0x41,0x6c,0xb2,0x0b,0xc6,0xff,0xce,0xb3,0x37,0xa2,0x46,0x27,0x33,0x8e,0x04,0x44,0x8a,0x7c,0x64,0x0e,0xbc,0xed,0x74,0x4f,0x40,0x58,0xf4,0x8c,0xf8,0xd9,0x92,0xa9,0x0b,0x18,0x7c,0x93,0x95,0xca,0xa7,0x3e,0x1d,0xad,0x68,0x80,0xd9,0xdb,0x81,0x78,0x50,0x37,0x49,0xbc,0x64,0xc2,0x52,0x5c,0x70,0x7e,0x0a,0x26,0x7e,0xc6,0xbf +.byte 0xd2,0x7f,0x05,0x55,0x7a,0x5a,0x3e,0x9e,0xe3,0x8b,0xf5,0x95,0x2b,0xd8,0xb4,0xb8,0xc6,0x5d,0x91,0xb8,0xc7,0x7c,0xe1,0x75,0xf2,0x43,0x6b,0x73,0xb7,0xb1,0x10,0xf2,0xa7,0x1e,0xab,0xaf,0xc9,0xc0,0x3b,0xab,0xbe,0xf7,0x4a,0x43,0x9c,0xca,0x3d,0x00,0x5b,0x02,0xf8,0xa2,0x4f,0x57,0x81,0xb0,0xde,0x1e,0xd1,0x60,0xbe,0x6c,0x0d,0xe6 +.byte 0xcd,0x51,0xb6,0xc7,0x00,0x52,0x37,0x4f,0xfc,0xee,0xe2,0x43,0x5c,0x61,0x76,0xed,0x80,0x72,0x38,0x26,0x94,0xfe,0x28,0x06,0xfb,0x62,0xa6,0x21,0x9b,0x53,0x60,0x1b,0xf0,0x56,0xae,0xba,0x6b,0x52,0x27,0x2a,0xd5,0xed,0x11,0x92,0xa2,0xe2,0xab,0xdd,0x05,0x38,0x38,0xae,0xeb,0x72,0xcb,0x6c,0xa5,0x2a,0x73,0xc5,0xfc,0xb0,0x36,0x83 +.byte 0xd6,0xe6,0xda,0x6b,0x38,0x72,0x5e,0x8d,0xaf,0x11,0x5f,0x5b,0x89,0x58,0x21,0x36,0xf6,0x7d,0x42,0x48,0xdc,0xce,0xaa,0x94,0xf0,0xc3,0xc5,0x2c,0x08,0x2a,0x36,0x35,0x25,0x95,0xc4,0x11,0x09,0xea,0x7a,0xbc,0x2e,0xc6,0x0a,0x5b,0x4f,0x86,0xeb,0xc2,0x38,0x71,0x48,0x8c,0x63,0x79,0x3b,0xe4,0xba,0x14,0x44,0x31,0x28,0x4f,0x9d,0xb4 +.byte 0x26,0xa6,0x3b,0xea,0x3f,0xcb,0x30,0x6c,0x02,0x13,0xdb,0x4c,0x9c,0x76,0xc8,0xd8,0x01,0x52,0x3d,0x2f,0x51,0x70,0x15,0x91,0xec,0x8f,0x80,0xed,0x88,0xb7,0xfa,0x91,0x2c,0x10,0xcd,0x3b,0x92,0x85,0xe7,0xe8,0x11,0xfa,0x50,0x15,0xe2,0xdf,0xf7,0xbe,0xa4,0x2d,0x13,0x75,0xa6,0x00,0x25,0x8d,0xe1,0xb6,0x9b,0xbb,0x64,0xfb,0x5c,0xde +.byte 0x97,0xcc,0x00,0x51,0xd6,0xac,0x67,0xc3,0x91,0x1e,0x56,0x36,0x2b,0x43,0xed,0x8c,0x67,0x7b,0xf6,0x54,0x6f,0x91,0x44,0x28,0x93,0x60,0xac,0xca,0xb9,0x91,0x7e,0xeb,0x49,0xd8,0xfc,0x12,0x6c,0x40,0x9d,0x0a,0x4d,0xb4,0xab,0xe6,0xad,0x5b,0x8e,0x2d,0x3e,0x53,0xa1,0x88,0xf7,0x41,0x71,0xa7,0xff,0x05,0x46,0x04,0x34,0x1f,0x12,0x89 +.byte 0x92,0xc1,0xf9,0x26,0x16,0x23,0xb6,0x59,0x82,0xdc,0xa7,0xb8,0xa4,0x8a,0x0f,0x1d,0x7d,0x8f,0x44,0xe8,0x4f,0x70,0xbb,0xdb,0x8d,0xe6,0x7e,0x9d,0xd9,0x44,0x10,0x41,0x6c,0x3f,0xb7,0xe8,0x6f,0x39,0x93,0xe1,0xde,0xb8,0x6c,0xba,0x99,0x95,0xb7,0xc8,0xb2,0x2a,0xcd,0x81,0x53,0xc3,0xb5,0x2a,0x8a,0xd6,0x62,0x1e,0x74,0x4d,0xde,0xfa +.byte 0xff,0x7b,0xed,0x11,0x1e,0x44,0x3e,0x93,0x1c,0xae,0x7c,0x5c,0xed,0x52,0x75,0x5e,0x0a,0xf3,0x95,0xce,0x47,0x86,0x1b,0x7f,0x17,0x09,0x12,0xcc,0x08,0xca,0x16,0x11,0xf1,0xa1,0x39,0x78,0x89,0x5c,0x11,0x25,0xc7,0x39,0x5f,0x97,0x74,0xbc,0xa9,0x2a,0x25,0x5d,0xdd,0x93,0x0d,0x8c,0x74,0x07,0x1e,0xd9,0x9f,0xc1,0x38,0x9c,0xbf,0xe0 +.byte 0x42,0xad,0xb2,0xe7,0xb1,0x84,0x82,0xb4,0x56,0xbe,0x3c,0x42,0xb0,0xce,0x2c,0x94,0xb7,0xe6,0x78,0xc8,0x04,0x06,0x58,0x15,0x3e,0xdc,0xf6,0x9a,0x58,0xc3,0xe3,0x85,0x16,0xc8,0x84,0xba,0x8f,0xbc,0x94,0xa7,0x44,0x04,0x29,0xc4,0xd8,0xec,0x63,0xc4,0x47,0x58,0x22,0x02,0x08,0x20,0x44,0x39,0x52,0xa5,0x33,0xfe,0x1c,0x30,0x27,0x92 +.byte 0xbf,0x42,0x44,0x4c,0x3f,0x3d,0x00,0x7b,0x21,0xef,0xbb,0x25,0x75,0x4c,0xb2,0xe7,0x66,0xc9,0xc1,0xfb,0x1e,0x13,0x04,0xd0,0xcb,0x69,0x51,0x9d,0x9a,0xb0,0xb0,0xec,0xb0,0x12,0x24,0x84,0x57,0x9f,0xef,0xb4,0x19,0x50,0xa6,0xf5,0x03,0xa3,0x93,0x0f,0x77,0xaf,0xe0,0x4c,0xa5,0xd3,0xb0,0xd8,0x5e,0xc3,0x78,0x94,0xd5,0x6e,0x48,0x58 +.byte 0x7a,0x93,0xb1,0x62,0x60,0xea,0xa1,0xba,0x7a,0x86,0x6e,0x87,0xe9,0x97,0xe0,0x7c,0x1e,0xb6,0x63,0x94,0x76,0x5f,0x9c,0x95,0x65,0x00,0xd4,0x14,0x0e,0x4c,0x87,0xe7,0xcd,0x9e,0xb1,0xe2,0x13,0x1b,0xb1,0x8a,0x83,0xaa,0xaa,0x34,0xcd,0xb2,0xf6,0x7f,0x12,0xb0,0x79,0xff,0x1e,0x04,0xc8,0x9a,0xfc,0x41,0x88,0xbb,0x28,0x42,0xeb,0x45 +.byte 0x47,0x8b,0xcb,0x57,0x03,0xcd,0xe5,0x9a,0x84,0xea,0x0a,0xb5,0x0c,0xb8,0x30,0x33,0xd6,0xde,0x66,0xa8,0x57,0xf9,0x76,0x4f,0x0f,0x8f,0x53,0x56,0x57,0x91,0xd4,0x55,0xf5,0x78,0xde,0xa6,0xa2,0x59,0xc8,0xb0,0xf2,0xb9,0xfa,0x6d,0x4a,0x70,0x86,0x3d,0x24,0x1b,0xc6,0xb8,0x06,0xf5,0xea,0x09,0x63,0x9b,0x1e,0x61,0x18,0x85,0xba,0x08 +.byte 0x20,0xaa,0x33,0x66,0xcf,0xa7,0xff,0xf5,0x30,0xfe,0xf8,0x39,0xd3,0x88,0x9a,0x5b,0x3f,0x55,0xa6,0x00,0x4c,0x57,0x0d,0xd1,0xa4,0x0c,0xe7,0x8a,0x95,0xd8,0x64,0xc7,0x93,0x51,0x84,0xa6,0x41,0x2c,0xfc,0xb0,0xfb,0x99,0x9a,0xcd,0x2c,0x62,0x3a,0xca,0x43,0x15,0xf2,0x5a,0x22,0x25,0xa4,0x91,0xa3,0x7c,0x42,0x69,0xc1,0x67,0xe3,0xf5 +.byte 0xd4,0x92,0x54,0xbd,0xb3,0x57,0xe5,0x19,0xca,0x1b,0x9c,0x19,0x79,0x9d,0xbf,0x89,0xfc,0xaa,0x72,0xcd,0xcb,0xc5,0xbc,0xdd,0x0c,0x7c,0x31,0x42,0xb0,0xc2,0x76,0xe5,0x8b,0x9b,0x7c,0x92,0x13,0x20,0x5c,0xdc,0x94,0xfc,0xa1,0x90,0x34,0x27,0x88,0x9f,0xe5,0x97,0x5f,0xc3,0xa3,0x83,0xca,0x8b,0xf8,0xac,0x36,0x33,0x47,0xc6,0x20,0x2f +.byte 0x04,0x2d,0x13,0xc1,0x3c,0x07,0x6e,0xf0,0xe2,0x3d,0x32,0x5c,0x50,0x41,0xf2,0x92,0x3f,0x25,0x2c,0x80,0x34,0xa5,0x90,0x2b,0x97,0x6e,0xd1,0xa2,0xa6,0xf4,0x4a,0xe0,0x20,0xd9,0xb9,0x2b,0x66,0xe5,0x06,0x73,0x97,0xfe,0x80,0x70,0x28,0xf9,0xb6,0xae,0x93,0x27,0x7a,0x65,0xff,0x23,0xc1,0x78,0x18,0x92,0xc9,0x0b,0x05,0x82,0x93,0xbc +.byte 0x73,0x3f,0x98,0xe9,0xa0,0x6d,0x20,0x8d,0x13,0xb1,0xf0,0x7e,0xe4,0x07,0x21,0x7d,0x6d,0xea,0x03,0x59,0xf8,0x29,0xc0,0xc8,0x7d,0xce,0xd1,0xf8,0x67,0x82,0x7f,0x84,0xe8,0x77,0xa9,0x9c,0xa2,0x34,0xdf,0xa9,0xac,0xec,0x6d,0x54,0xe5,0x0f,0xcb,0xdb,0x86,0xbc,0x01,0x44,0x91,0x3b,0xc8,0x85,0x4e,0x1d,0xe4,0x74,0x19,0xc6,0x39,0x2e +.byte 0xdf,0xf2,0x8f,0x3a,0x7f,0xe3,0x1e,0x55,0x45,0xcb,0x7e,0xde,0xcd,0xa6,0x1c,0xef,0x20,0xf7,0x07,0x31,0x94,0x9a,0x3d,0x04,0xd7,0x5e,0x65,0x20,0x6a,0x4d,0x31,0x1e,0x6f,0x89,0x40,0x45,0x1f,0x37,0xc1,0x7e,0x07,0xd5,0xa6,0x38,0x4a,0xf1,0x39,0xae,0x72,0x26,0x60,0xb0,0xb5,0xc7,0xd3,0x9a,0xaf,0x57,0x12,0xe9,0x34,0x28,0x8b,0xaf +.byte 0xd8,0x62,0x24,0x58,0xe2,0xcd,0xa2,0x9e,0x74,0x23,0x2d,0x52,0xc7,0x09,0xe5,0xb5,0xf5,0xc1,0xd3,0xa3,0x19,0xe5,0x1d,0x8d,0x0c,0xdf,0x13,0x8d,0xa4,0xa7,0xc1,0x41,0xea,0x9e,0x6d,0x61,0xd4,0xa4,0x74,0xe5,0xf8,0x5f,0x9e,0xfd,0x6d,0xf6,0x6e,0x87,0x0f,0xb5,0xa3,0x82,0xac,0x64,0xb4,0xda,0x07,0x49,0x51,0xc2,0xfd,0xcb,0x55,0xa3 +.byte 0x59,0x34,0xdf,0xa1,0xd6,0x90,0x62,0x43,0x1a,0xf9,0xae,0x85,0x5c,0x11,0x40,0xb2,0xbe,0xa5,0x03,0x04,0x4f,0xec,0x2c,0x58,0x2d,0xe9,0xda,0xcf,0xaa,0x2f,0xcf,0x60,0xc3,0x2c,0x6c,0x81,0x4d,0xf2,0x71,0x41,0xe4,0xae,0x4c,0xfa,0x8e,0x05,0x10,0xff,0x40,0xfa,0xea,0x96,0x78,0x6e,0xfc,0x35,0x35,0xec,0x84,0xf6,0x1d,0x24,0x60,0xcd +.byte 0x96,0x21,0x21,0xa7,0x32,0x90,0x3d,0x51,0x72,0x13,0xa4,0x9b,0x7e,0x94,0x3a,0x9d,0x97,0xf6,0x68,0xd8,0x08,0x42,0x54,0x7a,0xbb,0x9a,0x95,0x83,0xac,0xb8,0xb4,0x68,0xe3,0x31,0xdb,0xe2,0x32,0x8b,0x7d,0x57,0x62,0x1d,0x61,0x81,0xa1,0x36,0x7a,0x25,0x00,0x72,0x24,0x4c,0xa7,0x96,0x3b,0xa5,0x82,0xba,0x8e,0x89,0x1e,0x1b,0x8e,0xf4 +.byte 0xab,0x91,0x85,0x7a,0x32,0x4a,0x47,0x9f,0xce,0xd2,0x51,0x77,0xcd,0xc9,0x02,0x54,0xf2,0x7b,0xcb,0xb8,0x83,0xe0,0xe0,0x1b,0x4a,0xa2,0xe0,0xd9,0x15,0xb6,0x02,0x19,0x75,0xa6,0xba,0xa6,0x98,0xd9,0x61,0x74,0xc6,0x48,0xa5,0x59,0x3d,0xc8,0x47,0xc9,0xe8,0x6b,0xbb,0x6d,0xcf,0x0e,0x8d,0x6b,0x58,0x8b,0x7d,0x4e,0x0b,0x3d,0x67,0xc4 +.byte 0x8e,0x78,0x59,0x40,0x88,0x82,0x33,0x27,0x2c,0xfe,0x2a,0x6c,0xe4,0x80,0xee,0x5a,0xd4,0x5f,0xc8,0xf7,0x82,0x02,0x67,0xfd,0xcb,0x55,0x3e,0xd8,0x41,0xb3,0xce,0x93,0xfe,0xe7,0x56,0xf5,0x63,0xba,0xfa,0x2e,0x79,0xfc,0x11,0x5d,0xb0,0xc6,0x32,0x54,0xed,0x71,0x9b,0x15,0xce,0x62,0x09,0xd4,0x28,0x7f,0x7b,0xa1,0x50,0x5b,0x46,0x24 +.byte 0x0e,0x40,0xa2,0xe2,0x7d,0x93,0xa6,0x2b,0x0b,0x9b,0x40,0x25,0xc9,0xca,0x7a,0x01,0x8b,0x7d,0x68,0xeb,0xd7,0x84,0xc1,0x9d,0xf9,0xfb,0xd0,0x1a,0xec,0xef,0x6b,0x4c,0x78,0x31,0x62,0x8e,0x9d,0xdc,0x78,0x8f,0xcb,0xf8,0xf9,0x41,0xdc,0x9f,0x6d,0x0a,0x27,0x67,0xce,0xbd,0xeb,0x87,0xb3,0x26,0xf3,0x51,0xe1,0xd6,0xd1,0x57,0x46,0xfe +.byte 0x21,0xb9,0x88,0x7c,0xdd,0xa2,0x49,0x71,0x24,0xfb,0xc4,0xc0,0x6a,0x6b,0x05,0x7f,0x80,0xb0,0x09,0x3b,0x9e,0x6c,0x59,0x31,0x3e,0xac,0x7a,0x2e,0x5c,0x04,0x03,0xa3,0x6e,0xf5,0x66,0xee,0xc2,0x9b,0x65,0x88,0x06,0xbf,0xf5,0xe3,0x23,0x73,0x38,0x88,0x99,0xf1,0x64,0x68,0xdf,0x7d,0x04,0x06,0x72,0x92,0x0b,0x62,0x5d,0x12,0x1e,0x4e +.byte 0xff,0x60,0x35,0xe3,0x0f,0xd9,0x8c,0xac,0x38,0x5b,0x91,0xc1,0x51,0xbb,0xa5,0x19,0x7d,0xfb,0x79,0xfa,0x42,0x3b,0xaa,0xf8,0xd3,0x0f,0xc3,0xf2,0xb2,0x68,0x91,0xae,0x28,0x83,0x4f,0x75,0xbd,0x20,0x5f,0x20,0xba,0xc2,0x75,0x85,0x74,0x23,0xf3,0x36,0x33,0x99,0x9c,0x64,0x4c,0xd1,0x5d,0xbd,0x06,0x46,0xbd,0x49,0xf0,0x86,0xc0,0xcb +.byte 0x1b,0xbd,0xec,0x98,0x5b,0xb1,0x80,0xba,0x12,0x42,0x22,0x09,0x9a,0x62,0x3c,0xa8,0x33,0xbf,0xce,0x92,0xd4,0x07,0xef,0x34,0x33,0x8f,0x67,0x1d,0x25,0x60,0xeb,0xd3,0xe4,0x31,0x63,0xa8,0xab,0xe3,0xab,0x70,0x50,0xd8,0x44,0x9f,0x39,0x51,0xd2,0xb9,0x4b,0x16,0xe4,0xfa,0xc5,0x47,0xf3,0xae,0xb5,0xfe,0x7d,0x5d,0x43,0x28,0xa6,0x3d +.byte 0xcf,0x71,0x23,0x6d,0x8e,0xd7,0x74,0xa4,0x86,0x9f,0x92,0x86,0x3c,0x1e,0x51,0xd4,0xe0,0xe6,0xd5,0xc4,0x53,0x3c,0x96,0x55,0xb9,0xac,0x63,0x5b,0xee,0x5a,0x03,0x84,0xb9,0x43,0x2c,0x0f,0x6d,0xbb,0xb5,0xca,0xf0,0x4f,0x3e,0x8b,0x3b,0x14,0x01,0x0e,0x81,0x0d,0xe6,0x62,0xa9,0x34,0x4e,0x03,0xc9,0x85,0x9f,0xc8,0x4f,0x52,0x3f,0x84 +.byte 0x1b,0xab,0x7e,0xaf,0x93,0x22,0xe2,0x0d,0x41,0x79,0x50,0xb2,0x17,0xa7,0x9a,0x80,0xd5,0x65,0x40,0x3b,0x56,0x9b,0xc9,0x00,0xcf,0x03,0xf1,0xff,0xcd,0x72,0x27,0xdb,0x74,0x94,0x70,0x02,0xdc,0x3a,0xee,0x00,0xcc,0x08,0x0a,0xab,0x40,0x87,0x24,0xaf,0x7d,0x67,0x18,0xd0,0x7c,0xeb,0x91,0x1f,0x7e,0x9e,0x41,0x7b,0x39,0xf2,0xfe,0xaf +.byte 0xb7,0x6c,0x58,0xe0,0xdb,0xf7,0xf1,0x23,0x0b,0x98,0x08,0xfa,0xde,0xfa,0xf9,0x24,0x23,0xd1,0x7f,0x69,0xd3,0xb1,0x82,0x68,0x03,0x06,0x86,0x7a,0xf4,0x90,0x8d,0xa5,0xbd,0xbe,0x14,0x2f,0xa2,0x5e,0xaf,0x5c,0x1e,0x07,0x68,0x19,0x5a,0xd3,0x53,0x7d,0xe8,0x13,0x6b,0xe3,0x02,0x49,0x0d,0xd2,0x96,0x56,0xae,0x67,0x8a,0x27,0x61,0xa0 +.byte 0x60,0x20,0x2c,0xb4,0x5d,0xdf,0xc3,0x24,0x50,0xa9,0xbc,0x3d,0x5c,0xf3,0x2e,0xb6,0xba,0x71,0xf0,0x04,0x43,0x84,0x4d,0x80,0xe9,0xa5,0xdd,0xb3,0x1e,0x5e,0x56,0x32,0x1a,0xd4,0xe3,0x10,0x57,0x35,0xa8,0xf1,0xe5,0x96,0xc1,0x27,0xef,0xcc,0x21,0x71,0x10,0xd1,0x07,0x7e,0xb3,0xab,0x95,0x64,0x86,0xaf,0xc9,0x15,0xe6,0x98,0x5e,0xb1 +.byte 0xbd,0xde,0x99,0x38,0xfc,0x8d,0xb2,0x5a,0xa4,0x44,0x5b,0x74,0x31,0x31,0x07,0x93,0xf5,0x86,0x78,0xc5,0x82,0x26,0xfc,0x95,0x1f,0x33,0xd8,0xfe,0x70,0x42,0x2a,0xa7,0x3a,0xb1,0xb2,0x63,0xd6,0x5b,0x54,0x9c,0x54,0x45,0x4f,0x1b,0x4a,0xc2,0xb4,0x0e,0x99,0x48,0xde,0x8d,0xa6,0x5d,0xd3,0xdc,0x31,0xa4,0x2b,0x0d,0x44,0x6e,0x1a,0x10 +.byte 0x3f,0x6c,0xa0,0xab,0xcb,0xb4,0xf6,0x18,0xba,0x11,0xd4,0xd4,0x70,0xc4,0xab,0x04,0x4c,0xe7,0xe9,0x53,0xe5,0xd9,0xe7,0xeb,0x21,0xa2,0x2c,0xc4,0xc6,0xc3,0xe7,0x73,0xd9,0xd3,0x84,0xb0,0x12,0x94,0x3b,0xfd,0xd9,0x32,0xba,0xe3,0x37,0xc1,0xb9,0x4d,0xea,0x3e,0x3d,0x31,0x4e,0xa0,0xe7,0x73,0x9d,0x4e,0x26,0xd1,0xdf,0xe6,0x26,0xcd +.byte 0xd7,0x17,0xd7,0x28,0x2c,0x04,0xe9,0x55,0xd5,0x70,0xaf,0xab,0xc1,0x07,0xbc,0xc4,0xd2,0x89,0xdc,0x22,0x59,0x19,0x0e,0xd8,0x8b,0xdd,0x46,0x7f,0xe4,0xad,0xa5,0x70,0xd7,0x18,0x51,0x30,0xd7,0xbc,0x26,0x45,0xe7,0xea,0xce,0xc7,0xf2,0xca,0xb1,0x9c,0x57,0x1e,0x10,0x5f,0x44,0x8d,0x3d,0xe8,0x55,0xa1,0x22,0x68,0x97,0xe8,0x03,0x9c +.byte 0x8b,0x63,0x81,0xd9,0xcd,0x4c,0x6c,0xe3,0x68,0xc9,0x35,0xee,0x94,0x13,0x25,0x0b,0x12,0x61,0xbd,0xee,0x6f,0xc7,0xe8,0xb5,0x01,0x7a,0x9e,0xd0,0x5a,0x46,0xc6,0x19,0x1b,0xc2,0xf1,0x2d,0xaa,0x53,0x29,0xcf,0x23,0x1a,0x4d,0x94,0x0a,0x50,0x64,0xf5,0x3b,0x52,0x55,0xac,0xa5,0x21,0x15,0x47,0xd9,0x14,0x8c,0x7f,0x4d,0x79,0x6b,0xc1 +.byte 0x43,0x0a,0xf2,0x42,0xd2,0xb0,0x95,0x19,0x99,0xdd,0x1d,0x8e,0x84,0x8c,0x7e,0x59,0x69,0x93,0x86,0xae,0xf1,0x67,0x35,0x55,0x7c,0x5b,0x38,0x11,0x56,0xec,0x6c,0xbb,0xe8,0xc0,0x54,0xec,0x5f,0x65,0x13,0xe3,0x86,0xa0,0xb1,0xc1,0x5e,0x34,0x4f,0xdd,0x4d,0x00,0xc6,0x29,0x05,0x78,0x64,0x8c,0x19,0xb0,0xfc,0x8a,0xb2,0xc7,0x86,0x57 +.byte 0xa2,0xdd,0xed,0x43,0xc1,0x7f,0xab,0x89,0x19,0xe8,0xa6,0xf5,0x7a,0x15,0xfe,0xd5,0x4f,0x53,0xde,0x78,0x42,0x76,0xf7,0x8a,0x54,0xe8,0x37,0xfd,0xee,0x82,0x20,0xd5,0xe2,0x32,0xb9,0x32,0x67,0xc7,0xff,0xdc,0xf0,0x40,0x07,0x28,0x55,0x16,0x56,0x84,0xe9,0x17,0x25,0x17,0x8e,0x10,0xef,0x9f,0xed,0x33,0x83,0x6d,0x9e,0x87,0x82,0xb8 +.byte 0xa9,0x6b,0xcb,0xe5,0x04,0xfb,0x87,0x51,0x05,0x1a,0x64,0x64,0x51,0x34,0xa3,0x61,0x4a,0xe3,0xa6,0x35,0xa5,0xc9,0xe3,0xde,0xb0,0xcf,0x5f,0x68,0x49,0xbc,0x98,0xf9,0x0b,0x82,0xde,0xb1,0xf9,0x77,0x16,0x7c,0x1f,0x80,0x0c,0xfc,0xbb,0x6d,0x8e,0x92,0x93,0x00,0xc2,0xa5,0xbe,0xde,0x55,0x09,0x9d,0x83,0xa5,0x6c,0x0a,0xb5,0xc4,0x53 +.byte 0xde,0xbc,0x07,0xca,0x0f,0x43,0xea,0x50,0x25,0xee,0x51,0x3b,0xfb,0x7a,0xcf,0x31,0x8a,0x19,0x1c,0xa2,0x2d,0x72,0x79,0x81,0xc6,0xb8,0xe6,0xe1,0xd8,0x3e,0x0f,0xc0,0xae,0x73,0x40,0x30,0x15,0xaa,0xe3,0x72,0xc3,0x36,0xc1,0x42,0x11,0xc5,0x3f,0xf5,0x69,0x78,0xea,0x95,0x54,0x36,0xe8,0x7e,0x9c,0xad,0xbd,0xcd,0x19,0xfe,0x4a,0x04 +.byte 0xb4,0x54,0x14,0x98,0x58,0x6f,0x06,0x8f,0x8c,0x95,0xa8,0xc9,0xe8,0xc4,0x2b,0x03,0xaa,0x42,0x75,0x74,0xa2,0x63,0xdb,0xca,0xd1,0xf0,0x60,0xc3,0x63,0x84,0xfb,0xd7,0x5a,0x7b,0xca,0x45,0x8d,0x14,0xdc,0xf8,0x71,0x40,0x71,0xbb,0xa1,0x1a,0xd3,0x8c,0xfb,0xf6,0xf7,0xfc,0x82,0x72,0x50,0xc9,0xe3,0xc5,0xe2,0xb1,0x57,0xb1,0x24,0x3e +.byte 0x11,0x4d,0x96,0x1c,0x3a,0xe1,0xb6,0xb7,0x0e,0x55,0x35,0x6c,0xd8,0x2b,0xe3,0x78,0xcd,0xac,0x8f,0x24,0x70,0xc6,0x35,0x5b,0x6e,0x75,0x7a,0xf1,0x7d,0x87,0x53,0xcf,0x0a,0x24,0xb6,0x6a,0xfd,0xef,0x90,0x07,0xcf,0xde,0x30,0xbc,0x8c,0xec,0xda,0x6f,0x45,0xad,0x92,0xb6,0x8d,0x6b,0xb8,0x8e,0xdc,0xe5,0xbf,0x57,0x67,0x5e,0x2f,0x4d +.byte 0x5d,0xee,0x38,0x0a,0xaf,0xeb,0x62,0x84,0x2b,0x4c,0x30,0x7b,0x91,0x99,0x40,0x6f,0x09,0x2b,0x36,0xcd,0x04,0xeb,0x7c,0x8d,0xa5,0xbd,0xd6,0xb0,0xfc,0x27,0xcf,0x6b,0xdd,0xe1,0x94,0xbc,0x21,0xc6,0xc9,0x55,0x24,0xd4,0xa1,0x6f,0x1e,0xa2,0x81,0x31,0x22,0xb7,0x75,0x9e,0xa7,0x01,0x26,0x01,0x6c,0x12,0x91,0x02,0x87,0x40,0x5c,0x91 +.byte 0x1f,0x0c,0x55,0x07,0x12,0xa7,0x48,0xdd,0xed,0xb6,0xfe,0x38,0x05,0xbc,0xe1,0x2e,0x3b,0x89,0x4f,0x98,0x65,0x22,0x93,0xda,0x09,0x9f,0x04,0x90,0x66,0x81,0xd1,0x56,0x27,0x8b,0x26,0x99,0xbe,0x93,0x08,0xf1,0xfb,0x80,0x5b,0xaa,0xc4,0x96,0x88,0x93,0xb6,0x01,0xae,0xf6,0x69,0xaa,0x6f,0x4d,0xde,0x2f,0xc7,0x24,0xbf,0xe9,0xb8,0xeb +.byte 0xcd,0xb2,0x0a,0x50,0x5c,0xd2,0x0b,0xfc,0x57,0x3b,0x96,0xf8,0xd9,0xbe,0xd2,0xb5,0x16,0xac,0x7c,0xe4,0x2f,0x46,0x93,0x86,0x48,0x91,0xfa,0xae,0xca,0x05,0x9e,0xfe,0x6e,0xae,0xa5,0x58,0x94,0xc0,0x58,0x1e,0xc5,0x69,0x28,0xe0,0x99,0x12,0x83,0xcf,0x35,0xe4,0x72,0x7d,0x4e,0x8b,0x66,0x56,0xb3,0xa6,0x2a,0x72,0x06,0x03,0x45,0xd1 +.byte 0x95,0xc9,0x93,0xb7,0xf4,0x8a,0x83,0xce,0x17,0x8b,0xf0,0x8e,0x8f,0x4a,0x68,0x55,0xd8,0xfc,0x54,0x8d,0xb5,0x62,0x17,0xa8,0xe6,0x18,0x03,0x53,0x04,0xb8,0xbe,0xd2,0xd0,0x7a,0x84,0xe1,0x39,0x31,0xc5,0x74,0xf2,0x64,0x1c,0x3b,0xd5,0x52,0x9b,0x81,0x8a,0x8f,0x36,0xc8,0xab,0x3d,0xe1,0xa8,0x2a,0xf2,0x84,0x9a,0xca,0x0c,0xcf,0xc9 +.byte 0x45,0x54,0x06,0xe8,0xd2,0x62,0x61,0x4d,0xeb,0x0b,0x38,0x4e,0x43,0x59,0x85,0x3a,0xe4,0xa3,0x25,0x15,0xc2,0xb5,0x7b,0x5e,0x2f,0xe6,0xc1,0x5d,0x2a,0xb7,0x57,0xb8,0x7e,0x61,0x51,0xc3,0x81,0x53,0x45,0x8a,0x6e,0x4c,0x89,0x84,0x2a,0x6b,0xca,0x15,0xff,0x97,0xfc,0x1f,0x8a,0x44,0xbd,0xcd,0x5e,0x32,0x6b,0x5f,0x78,0x7b,0xdf,0xdd +.byte 0x9d,0x2f,0x21,0xf2,0x14,0x40,0x5f,0x5a,0xd5,0x21,0x27,0x3d,0x0b,0x9f,0x9f,0xb0,0x8e,0xab,0x9e,0x68,0x96,0x02,0xfd,0x4d,0xcc,0x03,0xf0,0x03,0xfb,0x4c,0xac,0xfa,0x00,0x3b,0xea,0x1a,0x53,0x80,0x77,0xec,0x53,0xc3,0x3c,0x6c,0xf8,0xa5,0x3e,0x52,0x34,0xd4,0xa1,0x52,0xb8,0xd6,0x19,0x8c,0xdf,0x85,0x27,0x61,0x22,0xe7,0x43,0xeb +.byte 0x85,0xc0,0xbe,0x58,0xe6,0x60,0x81,0x4c,0xc6,0xbb,0xc0,0xbf,0x63,0x39,0x9d,0xad,0x2e,0xa8,0x2a,0x83,0x3d,0xfa,0xdb,0x0b,0x98,0x16,0x78,0x18,0x43,0xc7,0x17,0x82,0xb8,0xec,0x32,0x45,0x75,0x0c,0xc1,0x4c,0x84,0xbf,0xce,0x83,0x3b,0xb4,0x91,0xf4,0x0d,0x5d,0x83,0xf6,0xd6,0x10,0xab,0xc6,0x26,0x9b,0x68,0x59,0xec,0x48,0x4b,0x1d +.byte 0x35,0x2a,0x5b,0x23,0x83,0x22,0x8e,0x7d,0xfa,0xce,0xde,0xb1,0xd9,0x78,0xf6,0x9e,0x08,0xba,0xfb,0xda,0xf2,0x04,0xc5,0x2a,0xac,0xbf,0xb4,0x04,0x05,0x1f,0x0b,0xeb,0xe8,0x2a,0x3c,0x3f,0x4f,0xb6,0xc8,0x6b,0x97,0x5a,0x9e,0xdb,0x4b,0x3c,0x93,0xc1,0x20,0x1c,0x62,0x91,0x74,0x76,0x49,0x92,0xc2,0xd8,0x0d,0xd8,0xfe,0xb5,0x68,0x77 +.byte 0x48,0x9f,0xbe,0xe0,0x78,0x20,0xe7,0xa4,0x3d,0x3e,0xa1,0x4c,0xc7,0xeb,0xd3,0x30,0xd3,0xf0,0x65,0xcf,0x18,0x3c,0xf8,0x25,0xc2,0x99,0xf4,0xec,0xef,0xdd,0xef,0xf3,0x6b,0x28,0x00,0xaa,0xfd,0x76,0xec,0x19,0x67,0xd6,0x79,0xa6,0x01,0x6e,0x20,0x3a,0x7f,0xd4,0xd0,0x05,0xb4,0xea,0xd4,0xde,0x11,0x06,0x44,0x4a,0x6f,0x15,0x2f,0x62 +.byte 0x9a,0xaa,0xeb,0xaf,0xb5,0xb5,0x46,0xb2,0x28,0x2e,0x74,0x26,0x06,0x91,0xeb,0x15,0xef,0xd4,0xfd,0xc7,0x1b,0x65,0x25,0x01,0x24,0xd2,0x44,0x05,0x18,0x1c,0x71,0x36,0x58,0xc4,0x37,0xfe,0x22,0x29,0xc0,0x2f,0xd2,0x4e,0xeb,0x43,0xb9,0xf9,0x4e,0x87,0xd7,0x92,0x77,0xa8,0x4f,0xa5,0x6e,0x5c,0x4d,0x3a,0xe9,0x16,0x62,0x30,0x51,0xbb +.byte 0x32,0xd8,0x0d,0x86,0x20,0xbf,0x68,0x0f,0x3e,0xef,0x8b,0x0d,0xc5,0xa6,0x94,0x81,0xe9,0x6f,0x85,0xf5,0x22,0x6e,0x9e,0x0a,0x56,0xa3,0x43,0x79,0x50,0xd9,0x45,0x5f,0x5a,0x3f,0x53,0x53,0xb7,0xfe,0xb6,0x1c,0x63,0xab,0x7c,0xed,0x2f,0xc4,0x2b,0xa8,0x53,0xfb,0xad,0x46,0xf0,0x63,0xca,0x7a,0x6e,0xce,0xf4,0xb9,0x34,0xd0,0x9a,0xc8 +.byte 0x0d,0xd2,0x32,0xce,0x26,0x3f,0xcd,0xd9,0xbc,0xa9,0x46,0x65,0x45,0xfe,0x45,0xeb,0x0d,0xab,0xe6,0x31,0xb6,0xb9,0x41,0x53,0x7d,0x55,0xc3,0xfb,0x10,0x46,0x37,0x77,0x1f,0x15,0xf0,0x5f,0xcb,0x8f,0xea,0xc5,0xc0,0xb8,0xc6,0xb1,0x3a,0x06,0x42,0xec,0x38,0xec,0x06,0xd1,0x37,0x3b,0xe1,0x8d,0xad,0xc2,0xce,0x96,0x0b,0xf0,0xab,0xde +.byte 0x9c,0x3c,0x09,0xef,0x59,0xcd,0x67,0xa7,0x6e,0x0e,0xc7,0xee,0x51,0x6d,0x90,0x40,0x0e,0xdf,0xb1,0x13,0xe3,0x0c,0xb6,0xe8,0xcb,0xf5,0x57,0x50,0xeb,0xdf,0x09,0x45,0x72,0x40,0xff,0xdc,0x5c,0x51,0x42,0x47,0xb2,0x9e,0xca,0xf3,0x1b,0x06,0xb1,0x3e,0x04,0x55,0x96,0x63,0x24,0x16,0xdb,0x3e,0xab,0x98,0x33,0x70,0x6f,0xfd,0x8f,0x7b +.byte 0x56,0xb0,0x7f,0x28,0x26,0xc4,0x2a,0x9e,0xf5,0xa7,0xba,0x61,0x75,0xa4,0xb1,0x25,0x60,0xe5,0x9c,0x7e,0xb4,0xaa,0x04,0xa1,0x33,0x5a,0x8d,0x88,0x1d,0xc4,0x38,0x58,0x28,0x23,0xc7,0xac,0x20,0xf8,0xaa,0x18,0xf8,0xc7,0x27,0x05,0x07,0xf7,0x12,0xfe,0xe1,0xa5,0x99,0xaa,0x55,0x79,0x72,0xc4,0x14,0x08,0x14,0x4a,0xfb,0xf7,0x66,0x81 +.byte 0x6e,0xed,0x81,0x12,0x5f,0xb6,0x08,0x00,0x37,0xf9,0xdc,0xdf,0x4d,0xcb,0xfa,0xc6,0xf3,0xc2,0x17,0x17,0x52,0x39,0x7b,0xa0,0x3e,0x25,0xc9,0x48,0xd8,0xa6,0x1b,0x8b,0xdb,0xf8,0x74,0xac,0x6b,0x16,0xec,0xa6,0x4a,0x1e,0x7e,0x5c,0x50,0xbf,0x81,0xef,0x3c,0x7d,0x9d,0x21,0x38,0xa9,0x26,0x3c,0x30,0x7a,0xfb,0xab,0xd8,0x6a,0x0a,0xaa +.byte 0xbb,0x6e,0x91,0x92,0x7c,0x04,0x02,0x0e,0xa2,0x71,0xc7,0xde,0x7d,0x42,0xaf,0xe5,0x92,0xc1,0xb9,0xd7,0x52,0xaa,0x32,0xea,0x39,0x84,0x17,0x40,0xb0,0x83,0x18,0xff,0x46,0xb8,0x59,0xd9,0xa3,0xce,0x82,0x7e,0x65,0x54,0xe0,0xa4,0x6d,0x8a,0xbc,0x6a,0x65,0xb2,0xd5,0x96,0x5b,0x1c,0x9a,0x32,0x72,0xf7,0x81,0x57,0xcd,0xb3,0x22,0xc5 +.byte 0x7d,0x20,0x24,0xea,0xbe,0x51,0x4c,0xb3,0x48,0x36,0x4f,0x73,0xf4,0x3f,0x07,0x92,0x01,0xe2,0x1e,0x78,0x3f,0x8e,0x1f,0x35,0x1a,0xf1,0xe1,0x14,0xd1,0xe7,0xd9,0xfd,0xd8,0xf7,0x20,0xc2,0xf3,0x7a,0x59,0xc9,0x1d,0x13,0x41,0x01,0xf6,0x77,0x69,0xfb,0x0f,0xc7,0xe4,0x58,0x04,0xce,0xe8,0x73,0x87,0x2f,0xef,0xe6,0x36,0x38,0xc7,0x91 +.byte 0x2d,0x17,0xb5,0x56,0x68,0xb1,0x9f,0xbf,0x2e,0x4b,0xe7,0x09,0x7b,0x35,0x33,0x5a,0x6c,0xc1,0x6f,0xb3,0xac,0x6c,0x1e,0xfe,0xc0,0xc9,0xd8,0x77,0xf5,0xcb,0x5e,0xcc,0xd1,0x2f,0xdd,0x23,0x8b,0x3b,0xb5,0x43,0x96,0x1f,0xa9,0xe4,0x84,0x41,0x92,0xe9,0x68,0x47,0x50,0xf7,0xd4,0x85,0x22,0xa1,0x43,0xaa,0xde,0xf7,0xea,0xe0,0x54,0xaa +.byte 0x0d,0xe6,0xa5,0xb8,0x7e,0xec,0x13,0x9a,0x1e,0x6c,0x10,0x9d,0xa8,0xfb,0x97,0xde,0x24,0xda,0x33,0xbb,0xab,0x17,0x7a,0xb4,0x72,0xaf,0xed,0xc9,0xa4,0x62,0x65,0x0c,0x99,0x3d,0x74,0x7f,0xff,0x59,0xa9,0x8e,0x37,0xb9,0x10,0x30,0x26,0x3f,0x2f,0xfc,0x1e,0xe2,0xc6,0xb8,0xff,0x41,0xb3,0x35,0x3f,0x41,0xf4,0x47,0xbc,0x76,0xc6,0x77 +.byte 0x0f,0xf8,0xff,0xb8,0xd2,0x34,0x40,0xac,0x43,0xcb,0xcf,0x1f,0x57,0xaa,0x1a,0xa7,0xe1,0x4a,0x69,0xd7,0x05,0xa7,0x9d,0xff,0x13,0x43,0x91,0xe3,0x09,0x1c,0xb2,0xb2,0x82,0x06,0xa3,0x3c,0x35,0x85,0x9e,0xd0,0xcf,0x1c,0xb9,0x13,0x09,0x7d,0x3d,0x17,0x0f,0xf8,0x2f,0x61,0x97,0x7e,0x02,0xe0,0x78,0x07,0x69,0x8c,0x91,0xbe,0x96,0x92 +.byte 0x4a,0x03,0xa7,0x31,0x5f,0x6c,0xfe,0x55,0xb2,0x17,0xe8,0x4c,0x64,0x48,0x18,0xde,0x4f,0x5a,0xce,0xd2,0xcb,0x83,0x4d,0x1b,0x2a,0x1f,0xce,0x85,0xf7,0xdc,0x74,0x8c,0x42,0xc6,0x5a,0x3a,0x51,0x22,0x79,0x70,0xa0,0xe0,0x29,0x2a,0x73,0xe4,0x53,0xb4,0x47,0x5f,0x54,0xa8,0x65,0xe4,0x89,0x78,0xf9,0xb9,0x5f,0x5f,0x9d,0xa8,0xf7,0x82 +.byte 0x4e,0x34,0x60,0xfc,0xe3,0x88,0x65,0x73,0x99,0x1f,0x53,0xed,0xe8,0xf0,0xf4,0x5a,0x0a,0x49,0x42,0x6e,0x02,0x3f,0xa8,0x63,0x21,0x02,0x2e,0x8f,0x33,0xba,0x0e,0x10,0xd3,0x4c,0x1a,0x8b,0xf5,0x84,0x8e,0x2b,0x37,0x12,0x23,0x77,0x02,0x45,0xc7,0xc3,0x79,0x06,0xc2,0x8c,0xaa,0x32,0x53,0x7c,0x19,0xa2,0x92,0x7e,0x47,0x40,0x8f,0xae +.byte 0x8a,0x64,0x51,0x67,0xe1,0xc1,0xc3,0xd2,0x14,0x1d,0x63,0x0c,0x80,0x04,0x30,0x3d,0xee,0x58,0x44,0xe4,0x14,0x63,0xfc,0x95,0x05,0x3e,0xc1,0x8d,0xd3,0xcb,0x5d,0xc1,0x8e,0xf9,0xd7,0xe5,0x9d,0x97,0xef,0x8a,0xaa,0x50,0x31,0xa3,0x01,0x3a,0xb2,0x8d,0x63,0xb6,0xe7,0x34,0xec,0xa1,0x7a,0xff,0x57,0x95,0xbb,0x1d,0xbe,0x0c,0xa5,0x91 +.byte 0x92,0x08,0x06,0x1c,0x67,0x03,0x2e,0xee,0xf6,0x6f,0xa0,0xb7,0x9a,0x7c,0xe3,0x6a,0x8e,0xd8,0x50,0xc1,0xd6,0xa1,0x8d,0xe9,0x66,0x9a,0x1f,0x62,0x15,0x04,0x93,0x74,0xe8,0x04,0x0d,0x27,0x55,0x2b,0x07,0xb1,0xbd,0x69,0xe4,0xc1,0x34,0x8e,0xe7,0xfb,0xa0,0x3f,0x40,0x31,0x47,0xba,0xcb,0x80,0x88,0xf7,0x4f,0x46,0x05,0x31,0xaf,0x23 +.byte 0xdf,0x93,0x09,0x0a,0x15,0xc9,0x95,0x74,0x52,0x72,0xf4,0xbf,0x0d,0x07,0xb6,0xcc,0x4b,0x40,0x12,0xf3,0x87,0xea,0x29,0xd8,0x29,0x31,0x23,0xac,0x29,0x1a,0x89,0x83,0x5b,0x33,0x4b,0x6b,0x69,0xbe,0xb6,0x15,0x7e,0xfd,0xf2,0x95,0xc4,0xbe,0xeb,0xee,0x59,0x01,0x2a,0xce,0xca,0x80,0xda,0xf8,0x1a,0x01,0x23,0xf7,0xa1,0x4f,0xf5,0x83 +.byte 0x5e,0x16,0xd9,0x12,0xa9,0x4e,0xcb,0x59,0x23,0x4f,0x40,0xd7,0xbf,0xaf,0x76,0xf0,0x50,0x31,0x27,0x3a,0x8b,0x1d,0x9b,0xb1,0x1c,0x41,0xb0,0xed,0xe6,0xf3,0xa8,0x5f,0x6b,0x58,0x54,0x92,0xaf,0xcc,0x44,0x5c,0xea,0xdb,0x09,0xc5,0x26,0x5e,0xbe,0x46,0xbd,0x72,0x49,0x5a,0x4e,0x65,0x7e,0x75,0xcf,0xfc,0xf6,0xd0,0x3c,0x4a,0x7e,0xd6 +.byte 0x8e,0x8e,0xb4,0x19,0x45,0x75,0xbf,0xc3,0x5e,0x46,0xff,0xc9,0x46,0x65,0x8d,0x31,0x01,0x5e,0x1c,0x13,0x93,0x56,0x6f,0x28,0xec,0xf3,0x77,0xfa,0x6e,0xb9,0x0e,0xb6,0x8e,0x0e,0x38,0xf8,0x28,0x64,0xa2,0xa1,0x42,0x9a,0xb4,0xf3,0x14,0x8d,0x17,0x80,0x05,0x82,0x7c,0xf1,0xea,0x8b,0x4b,0x62,0xa0,0xde,0xf6,0xd7,0x36,0xb0,0x70,0x8d +.byte 0x03,0xf6,0xc8,0x2a,0x9e,0xc0,0xbb,0x2f,0xcb,0xef,0x35,0xf7,0x16,0xcd,0xd6,0xd6,0x90,0xd7,0x5d,0x61,0x00,0x33,0x9f,0xd8,0xd1,0xda,0x17,0x67,0x90,0xd1,0xf8,0x59,0xcb,0xf1,0x76,0xc2,0xbe,0x1f,0x5d,0x0d,0xb2,0x02,0xbd,0x19,0x9f,0x5a,0xa0,0x91,0xac,0x51,0xb5,0xf5,0x0a,0x64,0x67,0xf2,0x49,0x30,0x6c,0x57,0x83,0xda,0x90,0xf1 +.byte 0xc6,0xc7,0xe6,0x05,0x13,0x30,0x52,0xfd,0x2a,0x47,0xea,0xae,0xd3,0xed,0xe4,0x64,0x1f,0x6c,0xb1,0xdf,0xca,0x20,0x97,0x2a,0xc8,0xdc,0x00,0x0e,0x5b,0x59,0xc8,0x16,0x95,0x68,0x9a,0x2e,0x44,0xab,0xf6,0x93,0x7c,0x8f,0x66,0x4f,0x07,0x42,0x3f,0xa5,0x81,0xe7,0xab,0x59,0xbb,0xae,0xb1,0x3e,0x9a,0x25,0xf1,0xde,0xac,0x4c,0x1d,0x7a +.byte 0x54,0xb9,0xa9,0x59,0xaf,0xb0,0xab,0xaf,0x6b,0x76,0x66,0x1e,0xbe,0x1a,0xc1,0x61,0x1b,0x81,0x6b,0xe8,0xe4,0x73,0x6a,0x87,0xe9,0x39,0xcb,0x2c,0xab,0x64,0x36,0x9a,0x11,0x46,0xec,0x9f,0x30,0xb6,0x2c,0x14,0xe0,0xec,0xbe,0x33,0xde,0x60,0xc6,0x00,0x29,0x3c,0x55,0xda,0xfc,0x64,0xff,0xaa,0xbf,0x99,0x58,0xe2,0xe3,0xec,0xde,0xca +.byte 0xd1,0x3d,0xd2,0xad,0xaa,0xca,0x36,0x8f,0x93,0xa2,0xdd,0xde,0xaa,0x49,0x7f,0xdd,0x39,0x91,0xa0,0x7b,0x33,0xdf,0x36,0xcd,0xc3,0x3a,0xbc,0x53,0xf0,0x07,0x99,0x78,0x4e,0x63,0x47,0x79,0xbf,0x21,0xfc,0x05,0x47,0x69,0xec,0xee,0xf4,0x21,0x97,0x94,0x0c,0x7a,0x9f,0xa6,0xeb,0x5b,0x23,0xed,0x9d,0xc1,0xe1,0x5e,0x10,0xca,0xe0,0x84 +.byte 0x5a,0xdd,0xf6,0xae,0xd8,0x23,0x98,0xea,0x6c,0x43,0x77,0x41,0xf3,0x84,0x5a,0xe8,0xda,0xb3,0x11,0x0e,0x19,0x33,0xe9,0xf9,0x7a,0x90,0x07,0x68,0xf1,0xe4,0x52,0x0c,0x03,0x67,0xb9,0x42,0x41,0x24,0xa3,0x61,0x67,0x75,0xc9,0xb5,0xdd,0x10,0xf1,0x20,0x93,0x54,0xdb,0x0d,0xc7,0x0d,0x25,0x3e,0xda,0xb3,0xe7,0xce,0x97,0x7e,0xdb,0x1a +.byte 0x8f,0x92,0xff,0xe3,0x44,0x2d,0x6b,0xdb,0xe0,0x69,0x8b,0x16,0xce,0xe8,0xc7,0x93,0xf1,0x19,0xb9,0xd3,0x41,0x45,0x8d,0x95,0xb3,0x03,0xb2,0x66,0x96,0x95,0x91,0x33,0x1c,0xee,0xde,0xd7,0x9d,0xab,0x32,0x2f,0xb8,0x3c,0x7a,0x44,0x8f,0xa6,0xca,0x02,0x03,0x2f,0xa8,0x44,0x85,0x0e,0xf5,0x27,0x90,0x84,0xd9,0x80,0x06,0xf4,0x4f,0xc7 +.byte 0x21,0xc5,0x92,0xa4,0x2d,0x08,0x42,0x4c,0xa7,0x84,0xfa,0x7e,0x2b,0x66,0xfb,0x7c,0x81,0xea,0x5c,0x7d,0xdd,0x86,0xf1,0xf5,0x04,0xef,0xf2,0x50,0x12,0x72,0x42,0x22,0x23,0x74,0x7f,0xe7,0xed,0xd9,0xce,0x78,0x10,0x83,0x37,0xd0,0x81,0x97,0x4a,0xac,0xc2,0xe5,0x13,0x91,0x83,0xe2,0x6e,0xff,0x5a,0x0b,0xc3,0x4d,0xc1,0x3e,0x97,0x16 +.byte 0x96,0x69,0x39,0x9e,0x1d,0x6b,0x16,0x82,0xa2,0x94,0x0d,0x50,0xdd,0xa3,0xda,0x9d,0xda,0x3f,0x46,0xce,0x6c,0xd0,0xdf,0x6e,0x1b,0x17,0x47,0x51,0x74,0x6f,0xe9,0xa4,0x6b,0xae,0xd2,0x6e,0x5b,0xc0,0x26,0xc6,0x0b,0x84,0xb1,0x39,0xcf,0x9e,0x7c,0x18,0x52,0xd7,0x8f,0x33,0xae,0x3d,0xaf,0x3d,0x1a,0xba,0x3f,0x09,0x76,0x22,0x1d,0xf3 +.byte 0x42,0x14,0x4f,0x06,0xc7,0x33,0xc1,0x2d,0x58,0x1b,0x4c,0xc0,0x3a,0x29,0xa6,0x5e,0x19,0x26,0xdf,0x36,0x18,0xa9,0xc5,0xe9,0xd3,0xb1,0xae,0x86,0xa8,0x7f,0xd9,0xb4,0x18,0xef,0x9c,0x46,0xb6,0xf2,0xb2,0xb6,0x6e,0xe2,0xf8,0x5f,0x27,0xea,0x76,0xd3,0x40,0x68,0x94,0x66,0x8a,0xf5,0x9f,0xee,0x0c,0xe5,0xae,0xb6,0xba,0x87,0x42,0x40 +.byte 0xc9,0x83,0xac,0xb4,0x2c,0xec,0x74,0xb7,0x55,0x17,0x0b,0x1e,0x45,0x1a,0x87,0x9d,0x52,0xce,0xb7,0x58,0x2f,0x45,0xc7,0x7d,0xf3,0xd3,0x11,0x2e,0xf4,0xd8,0xc0,0xb8,0xc3,0x31,0x45,0x68,0x40,0xe8,0x8a,0x33,0x20,0x9a,0x06,0xa8,0x18,0x53,0xb2,0x73,0xa1,0x57,0xac,0x8f,0x56,0xeb,0x8e,0xa4,0xfc,0xd6,0x76,0x7e,0x81,0x62,0x2c,0x17 +.byte 0x49,0xb4,0xcc,0x15,0x66,0xcb,0xa2,0x3c,0x29,0xf0,0x73,0x0e,0x9a,0x34,0x16,0x6d,0x43,0x62,0x20,0x89,0x14,0xae,0x8b,0x5d,0x61,0x54,0xa1,0x82,0x49,0x73,0xb9,0x2b,0x48,0xd4,0xe3,0x21,0x37,0x5e,0x4d,0xbf,0xd0,0x72,0xa4,0x23,0xdb,0x7c,0xd9,0x45,0x77,0x8a,0x24,0x23,0x56,0xcd,0x84,0x80,0x44,0x12,0xce,0x99,0x39,0xbd,0x77,0xff +.byte 0x8c,0x62,0x8d,0x56,0x77,0x24,0x40,0x11,0x22,0xab,0x28,0xd6,0x75,0x2b,0xbb,0xc1,0x51,0xd6,0x5e,0x61,0x1c,0xe9,0xac,0x36,0x99,0x52,0x44,0xa5,0x20,0xdb,0xe0,0x12,0x9a,0x45,0x8f,0x7f,0x47,0xf9,0xa3,0x91,0x18,0x2b,0x51,0x9a,0x9f,0x3f,0x7d,0x36,0xde,0x71,0xae,0xca,0x62,0x62,0x16,0xda,0x19,0x9c,0x84,0xce,0xde,0x93,0x22,0xde +.byte 0xaf,0xe7,0x91,0x09,0xe8,0xf0,0x0e,0x07,0x71,0xdf,0x48,0xcd,0x8a,0x77,0x19,0x3c,0xd6,0xef,0x8e,0xe0,0x49,0xdf,0xcb,0xd6,0x34,0x78,0x7f,0x42,0xc2,0x6e,0x7a,0x50,0x53,0xee,0xbf,0x73,0x4b,0xd4,0x4f,0x06,0x18,0x26,0x67,0x51,0x54,0xa3,0x40,0xe6,0xb3,0x61,0x4b,0xfd,0xee,0x62,0x00,0x44,0x6c,0x0d,0x8b,0x2f,0x4d,0x06,0x17,0x41 +.byte 0xee,0x8b,0xde,0x1f,0x80,0x36,0x58,0x3e,0x0a,0x53,0x0a,0x83,0xf9,0xba,0xbd,0x91,0x6a,0x20,0x32,0x42,0x6c,0x85,0xdc,0x84,0xfd,0xce,0x57,0xbe,0xf8,0xa5,0x2c,0x7e,0xf9,0x1b,0x07,0xf4,0x32,0x13,0x32,0x79,0xdc,0x91,0xfc,0xc0,0x18,0xe6,0x1e,0xb2,0x67,0x9d,0x08,0xd2,0x89,0xa2,0xb1,0xbf,0x37,0xe1,0x3f,0x9e,0xb5,0x17,0xf7,0x2f +.byte 0x9a,0x4f,0x3c,0xea,0x5d,0x48,0x56,0x48,0x35,0x17,0xe9,0x5a,0x99,0xa7,0x2e,0x25,0x4f,0x96,0xa6,0x3d,0x3c,0xf8,0xdc,0xe7,0xe5,0x98,0x46,0xf7,0x10,0x16,0x4f,0xb0,0x7b,0x48,0x06,0xbb,0x9a,0x5a,0xad,0x32,0x49,0x92,0x39,0xb2,0xfe,0x01,0x1a,0x5e,0xcc,0xf7,0x0d,0x65,0x1c,0xf5,0x3d,0xb3,0x40,0x28,0x06,0x6e,0xbb,0x74,0x2a,0x95 +.byte 0xe9,0x62,0x2a,0xe2,0x19,0x38,0xc6,0x0d,0x46,0x30,0x6d,0x90,0xa5,0x68,0x4d,0x89,0xf0,0xf4,0xaf,0x52,0x11,0x8a,0x47,0x65,0xc0,0x6d,0xee,0xde,0xbc,0xed,0xf2,0x94,0xf3,0xfb,0xfd,0x2f,0xea,0xd5,0x36,0x89,0x8a,0x22,0xb8,0x75,0x3c,0xda,0x8d,0x3f,0x71,0xe5,0x50,0xb8,0xef,0xfc,0xa1,0x34,0x4a,0xb0,0x56,0x64,0xaf,0x28,0x0c,0x7a +.byte 0x28,0x3e,0xc8,0x83,0xc2,0xbb,0x89,0xc4,0x29,0x7f,0xc9,0xe7,0x4e,0xcb,0xdc,0x8f,0xe8,0xa4,0xdc,0x0d,0xcc,0xa0,0x16,0xda,0xa9,0x34,0x61,0xec,0x64,0xa7,0xf4,0x47,0xe9,0xee,0xbf,0xc6,0x4b,0xc5,0x01,0x65,0xe4,0xe0,0x12,0xd6,0x27,0xda,0x30,0xb5,0x60,0x72,0xe1,0xee,0x38,0x23,0x6c,0x9d,0xbb,0x83,0x01,0x4b,0x26,0x9a,0x68,0xb3 +.byte 0x89,0xb3,0xe0,0x10,0x22,0x58,0xef,0x2d,0xd4,0x86,0xab,0xab,0xc4,0xd8,0x9c,0x56,0xe8,0x54,0x40,0x86,0x11,0xd2,0x6b,0xc0,0xaf,0xfc,0x4a,0xef,0x24,0x38,0x79,0x32,0x54,0x26,0x8b,0x7e,0x02,0xad,0x86,0x9d,0x40,0x65,0x28,0x28,0xa3,0xa6,0xe4,0x07,0x29,0x3a,0xbb,0x81,0xed,0x17,0x54,0x51,0x35,0xc6,0x88,0x9c,0x63,0x7e,0x73,0x02 +.byte 0x28,0x13,0x4b,0x33,0xc0,0x68,0xbc,0xae,0x8c,0x59,0xd4,0x84,0x1d,0x41,0x86,0x5a,0xf6,0x14,0x50,0x13,0x88,0xca,0xc8,0xb8,0xfc,0x61,0xeb,0xe6,0x69,0x70,0x4a,0xa5,0xa5,0x36,0x4b,0xac,0xca,0x00,0x28,0xae,0xb0,0x03,0xef,0xe3,0x92,0xad,0x97,0x32,0x05,0x8c,0x93,0x95,0x45,0xd5,0x75,0x66,0x11,0xd3,0x6f,0x7f,0x5f,0x35,0x44,0xb7 +.byte 0xd7,0x34,0xcf,0x8c,0x4a,0x61,0x68,0x63,0x3f,0x92,0x54,0x01,0x3c,0x25,0x2d,0x6f,0x4a,0x2d,0x55,0xff,0x3f,0x86,0x85,0x9f,0xc2,0xa1,0xde,0x6b,0xbf,0x7e,0xb4,0x7c,0xc1,0x80,0x73,0xf5,0x3b,0x85,0xae,0x36,0x1a,0xdf,0x00,0x52,0xb7,0x70,0xa9,0x42,0x79,0xd2,0x26,0xf8,0x3b,0xeb,0x9f,0x2e,0x15,0x33,0xc8,0x85,0x2d,0x63,0xb2,0x89 +.byte 0x24,0x8e,0xfd,0xe6,0xdf,0x01,0x80,0x8b,0x27,0xe3,0x7e,0x17,0xc2,0x4e,0x26,0xa2,0xe1,0x95,0x81,0x3a,0xdd,0x2a,0xf4,0x75,0x21,0x64,0x11,0x04,0x5e,0x00,0x39,0xf0,0x08,0x68,0x67,0x09,0xa8,0x9b,0xbe,0xb7,0x62,0x0e,0xa8,0x69,0xcd,0x4e,0xaf,0xc8,0x4f,0x92,0x3d,0x8e,0x35,0x60,0x70,0xb3,0xda,0x2f,0x38,0x80,0x6f,0x5e,0xcc,0x3b +.byte 0x6e,0x05,0x26,0x14,0x9d,0x36,0x72,0x7d,0x09,0xb8,0xb7,0xa1,0xf7,0x5f,0xb3,0xe1,0xd6,0xc5,0x54,0x4e,0x80,0x4d,0x06,0x8f,0x84,0xbb,0xb6,0x65,0x87,0x2c,0x19,0x4a,0x74,0x3c,0x34,0x62,0x32,0xad,0x4c,0x06,0xa3,0xbb,0xfb,0x4f,0x4f,0x9d,0x91,0x84,0x63,0x75,0x34,0xcc,0x6b,0x00,0xa1,0x5a,0x63,0x03,0x8d,0x1e,0xdb,0xa4,0x0c,0xe6 +.byte 0x3d,0xd1,0x94,0x77,0xd8,0x77,0x8c,0x39,0x48,0x78,0xb1,0xb5,0xa2,0x41,0xd0,0x6d,0x27,0x20,0x4a,0x41,0x88,0xa5,0x78,0x3f,0x51,0x72,0x8c,0x80,0xe7,0x37,0x81,0x8b,0x06,0x46,0x58,0xab,0x23,0x85,0x47,0x89,0x39,0xf9,0x14,0xfe,0xbf,0x07,0x7c,0x47,0x8e,0xcc,0xd7,0x08,0xfe,0x5d,0xee,0xf9,0x94,0xa2,0x83,0x81,0x8a,0xfd,0x0f,0x9a +.byte 0xa7,0xe4,0x59,0xad,0xe6,0x1f,0xed,0x5d,0xe4,0x20,0xd6,0x2f,0xa7,0xd3,0xcf,0x5b,0x18,0x6d,0x24,0x79,0x66,0xd9,0xaa,0x44,0xfa,0x8d,0x74,0x60,0xcc,0x7e,0xbf,0x4f,0x0e,0xe3,0x9c,0xa5,0xe4,0xff,0x14,0x05,0xff,0x24,0x62,0x94,0x00,0x7a,0x58,0xe5,0x0b,0x3b,0xe8,0xee,0xe1,0x4d,0x4e,0x34,0x26,0xba,0x70,0x10,0x5e,0x14,0x4f,0xa5 +.byte 0x7a,0x9e,0x7b,0x28,0x99,0xbe,0x94,0x4a,0xcb,0x8d,0x65,0x60,0xa0,0x6e,0xc7,0xbc,0x51,0xba,0xb5,0x07,0x97,0x25,0x42,0xb7,0x2c,0x0e,0x9b,0xfc,0xfb,0x35,0x6f,0x74,0x10,0xce,0x25,0xdb,0xa9,0x7c,0x11,0x61,0x43,0xf9,0x19,0xbf,0xe2,0x21,0xa3,0x57,0x3c,0x41,0x0a,0x15,0x4e,0x7f,0x6b,0x38,0xb6,0x73,0x41,0xa2,0x4e,0x8e,0xb9,0x44 +.byte 0xee,0x2a,0x2e,0x0a,0x9e,0x85,0xf1,0x6e,0x93,0x72,0x42,0x50,0x55,0xe1,0xc6,0x18,0x11,0x92,0xf7,0xbf,0x05,0xd8,0xb6,0xbc,0x2b,0xd5,0xe0,0xd3,0x9b,0x64,0xc4,0xdd,0xb0,0xb3,0x46,0xd8,0xfb,0x73,0xea,0xed,0x06,0x96,0x16,0x9e,0xf6,0xc6,0xe8,0xbe,0xae,0x00,0x2f,0x5a,0xf4,0x1f,0xb5,0x28,0x7c,0x75,0x76,0x68,0x74,0xa2,0x57,0x0e +.byte 0x6c,0xfa,0x2d,0xbe,0x34,0xf1,0xc9,0x2b,0x83,0x58,0xe7,0x2a,0x87,0xdb,0x47,0xae,0xc7,0xc2,0x78,0x50,0xed,0x20,0xdf,0x30,0x38,0xdd,0x84,0xa9,0x6b,0x00,0xb1,0x7b,0xbb,0x69,0xd3,0xbe,0xed,0x3d,0x99,0x6e,0x39,0x42,0x75,0x8a,0x6c,0x7c,0xa5,0xcf,0xc9,0xcf,0x11,0x14,0xb3,0xaf,0x72,0x00,0x3b,0x58,0xdd,0x2a,0xe1,0x44,0xa7,0x51 +.byte 0x15,0x05,0x1b,0x18,0x49,0x07,0x90,0x4c,0xbc,0x99,0x88,0x64,0xf6,0x14,0x0b,0x99,0xc0,0x84,0xc9,0x06,0x32,0xf0,0xec,0x19,0x8d,0x4a,0xb8,0xdb,0x32,0xb4,0x5e,0xc9,0x0c,0x24,0xf0,0xad,0xdc,0xf4,0x32,0x3b,0xf6,0x68,0x28,0x4a,0xa5,0x5b,0xb7,0xd5,0x00,0x35,0xf8,0x56,0x03,0xa3,0x86,0xa0,0x8a,0x1b,0x53,0xb5,0x58,0x73,0x8c,0xf9 +.byte 0x2b,0xd8,0xcb,0x88,0xe7,0x7e,0x79,0x68,0x13,0x5d,0x7d,0x23,0xc4,0xec,0x9c,0xf4,0x95,0x97,0xbf,0xb2,0xd9,0xdf,0x38,0xe8,0xa2,0x79,0xf7,0xe8,0x36,0x80,0x59,0x3f,0x58,0x2f,0xf7,0xf9,0x32,0x73,0xdd,0xd6,0x9e,0x20,0x1a,0x29,0xab,0xc1,0x77,0x14,0x71,0x3c,0xde,0x90,0xe9,0xea,0xdb,0x78,0x14,0xa3,0x89,0x43,0xf1,0x42,0x43,0x3f +.byte 0xe7,0x67,0x32,0x3d,0x65,0xdc,0xa4,0x79,0x8f,0x81,0xa5,0xb0,0x94,0x0f,0x96,0xf5,0x82,0xcc,0x47,0xc1,0x29,0x39,0x70,0x7a,0xf3,0x49,0xf5,0x09,0x43,0x50,0x56,0xd6,0xea,0xc4,0x35,0xa5,0xa2,0x8a,0xbe,0xc0,0xe3,0xfe,0x4c,0xa2,0x83,0x09,0xab,0x72,0x8a,0x96,0x7c,0x01,0x70,0xb2,0xd5,0x62,0xb7,0x67,0x59,0x36,0xcf,0x56,0x2d,0x14 +.byte 0xc2,0x69,0x49,0x52,0x4e,0x7c,0x45,0x4b,0xef,0xcd,0x79,0xcd,0xe6,0xa6,0xd0,0xbe,0x10,0x1e,0x18,0xca,0xe7,0x8d,0x65,0xb1,0x17,0xc7,0x2c,0xc8,0x2a,0x5b,0xe8,0x08,0x11,0x15,0xea,0xa9,0x43,0x7b,0x70,0x04,0x0c,0xc8,0xca,0x67,0x18,0x18,0x12,0x16,0xc2,0xd3,0xf2,0x0a,0xc7,0x01,0xa9,0x97,0x61,0xf6,0xa7,0x44,0x9a,0xb3,0x67,0xdc +.byte 0x07,0x63,0x02,0x02,0x2e,0x58,0x80,0xa9,0x95,0xa0,0x8e,0x86,0xb6,0xf6,0x14,0x13,0x0a,0xea,0xf1,0x6d,0xd9,0x98,0x37,0x12,0xdb,0x67,0x1b,0x13,0x8e,0xd1,0xfa,0x2f,0x98,0x53,0x3c,0xd7,0x56,0x55,0x42,0x2f,0x64,0x59,0xd5,0xb7,0x6e,0xa8,0x6c,0xc2,0x40,0x11,0xb5,0xa1,0xc0,0x5c,0x45,0x87,0x91,0xb1,0x1c,0x4e,0xa9,0xf6,0x72,0x57 +.byte 0x50,0x8e,0xc5,0xfc,0x64,0x59,0x52,0x82,0xb0,0x75,0xc3,0x98,0xff,0x32,0xce,0xa4,0x39,0xb8,0xa4,0x61,0xb4,0x53,0x3f,0xc7,0x80,0x35,0x48,0xaf,0xa8,0x67,0xfe,0xa1,0x1d,0x3c,0x95,0xb5,0x63,0x1c,0x3a,0x2c,0x68,0xfa,0x98,0x8b,0xa7,0x19,0x29,0x79,0xe4,0x9b,0xff,0x8f,0x15,0x9c,0x65,0x60,0xd2,0xa9,0x4f,0xd5,0xb2,0x57,0xff,0x32 +.byte 0x4c,0x96,0x82,0x6b,0x09,0x6c,0x74,0x55,0x00,0x5c,0x68,0x68,0xd5,0x9b,0xd4,0xdf,0x3d,0x2d,0xb9,0x0b,0xf5,0x2c,0x87,0x35,0x2a,0xc0,0xc0,0xc9,0xd7,0xa1,0x76,0x30,0x82,0x46,0xd8,0x24,0x6e,0x27,0x02,0x71,0x57,0x5c,0x43,0xf2,0x54,0xd6,0xea,0xd7,0x67,0x7d,0xac,0x76,0x91,0xf1,0x26,0x6e,0xaf,0x87,0x05,0x06,0x48,0x57,0xbd,0x67 +.byte 0x1d,0xd7,0x07,0xcd,0x41,0x02,0x49,0x6c,0x8c,0xe1,0xe3,0x00,0x78,0xbe,0x28,0x84,0x16,0x44,0xb1,0x0d,0x6d,0x40,0xfe,0xab,0x7e,0xf6,0x6b,0xff,0xfa,0xe1,0xc7,0x9d,0x56,0x62,0xf1,0x68,0xba,0x76,0x34,0x8f,0x54,0x20,0x49,0xf5,0xa2,0x54,0x52,0xca,0x42,0xed,0x4f,0x9b,0xdf,0xcf,0xfb,0xf6,0xee,0x12,0x29,0x43,0x8f,0xf9,0xfd,0xf4 +.byte 0x8a,0xbf,0xae,0x50,0xf2,0x8f,0x46,0xa2,0x97,0x3b,0x2d,0xfb,0x84,0x98,0x61,0xae,0xba,0x36,0x25,0x30,0x8b,0xdc,0xd3,0x08,0x8e,0x7e,0xfa,0x91,0xac,0x4b,0x29,0x6d,0x0c,0x81,0x0f,0xc7,0xc8,0xc4,0x5c,0x48,0x68,0xa7,0x83,0xf3,0x6a,0xc8,0x0d,0x3a,0x9b,0x46,0xb9,0xe1,0x31,0xac,0x3c,0x12,0xa2,0xae,0x74,0xb8,0x91,0xed,0x63,0xba +.byte 0x40,0xb8,0x57,0x58,0x1f,0x1d,0x1a,0x2d,0x98,0x60,0xe8,0xe1,0x84,0x16,0xe5,0xf0,0x1e,0x35,0x58,0x31,0xc3,0x0c,0x49,0x6e,0x13,0x2c,0xac,0x14,0xc2,0xde,0x5f,0x62,0xe5,0x37,0x5b,0x1d,0x71,0x8b,0xc3,0x3d,0xd8,0xaf,0x3d,0x0a,0xef,0x80,0x3c,0x9a,0x4b,0x0a,0x3f,0x0e,0x8f,0x90,0x8f,0x73,0x2e,0xff,0x8e,0x8e,0x87,0xf8,0x46,0x52 +.byte 0xed,0x7d,0x76,0xf3,0xff,0xaf,0x5e,0x62,0x87,0x16,0x9c,0xa6,0x12,0x39,0x13,0xc3,0x62,0x4b,0xd2,0x21,0xa2,0x43,0xfa,0x4c,0x5d,0x75,0x61,0x64,0x5b,0x23,0xcd,0x76,0x86,0x81,0xd6,0xa6,0x25,0xe1,0xc1,0xc6,0x04,0x5e,0x65,0xfe,0x89,0x0e,0x67,0x02,0xeb,0xb9,0x26,0x88,0x81,0x97,0x1e,0x62,0x4e,0xf4,0x4e,0x0d,0xef,0xac,0xcf,0xd7 +.byte 0xc5,0x9b,0x9d,0x3a,0xa2,0x71,0xd7,0xd4,0x72,0xa6,0x66,0x90,0xe2,0xf7,0xb7,0xec,0xe4,0xca,0x9f,0xd1,0xd8,0x5a,0x65,0xff,0x39,0x65,0x78,0x47,0x1c,0x64,0xab,0x1a,0x35,0x2e,0xe2,0xf7,0x67,0xa4,0x7f,0xd5,0xea,0x04,0xee,0x4d,0xf6,0x29,0xe4,0xcd,0x1b,0xcf,0x0a,0xef,0xa1,0x14,0x90,0x0e,0xed,0x1a,0x10,0x63,0xa0,0x56,0x11,0x05 +.byte 0x57,0x94,0x3a,0x11,0xff,0xe0,0xc7,0x33,0x19,0x67,0xd7,0xd0,0xcc,0x76,0x52,0x5d,0x9e,0x10,0xe7,0xd6,0xaa,0x13,0xe8,0x8d,0xa5,0x60,0x66,0x98,0x26,0x11,0x66,0x0f,0x2d,0x4d,0xec,0x28,0x93,0x17,0x3a,0x6f,0x99,0x70,0x00,0x2b,0x66,0xb3,0x49,0x69,0x3c,0x3b,0x03,0xb8,0xc0,0x9b,0x1c,0x96,0xd9,0xd1,0xe1,0x6d,0x8f,0x45,0xce,0x22 +.byte 0xcf,0x48,0x61,0x85,0x10,0x1b,0x3f,0x2b,0x74,0x48,0x61,0x68,0x63,0xe3,0xa3,0x83,0xe2,0xcc,0xa0,0x6d,0x82,0x8b,0xe5,0x42,0xab,0xa7,0x62,0x6c,0x05,0xb4,0x7b,0x65,0xf5,0xd8,0x0b,0x7d,0x61,0xd6,0x5c,0xf0,0xc0,0x03,0x0c,0x51,0xec,0x06,0xad,0x79,0x8c,0x62,0x0c,0xf5,0x8e,0xcb,0x97,0x62,0xf9,0x3e,0x39,0x8d,0x3c,0x2e,0xd1,0xc0 +.byte 0x5f,0x98,0xea,0xb5,0x26,0x19,0xf5,0x93,0xbb,0xf8,0xd4,0xd5,0x35,0xee,0x1f,0xf8,0x71,0x81,0x0e,0xe6,0xe9,0xf3,0x2c,0x80,0xa8,0x15,0x35,0x1e,0xda,0x07,0x41,0x39,0x8a,0x19,0x1f,0x70,0x99,0xbe,0x3d,0x5c,0x1f,0xf6,0x72,0x85,0x73,0xea,0xb5,0x61,0xbb,0x77,0xaa,0xef,0xc7,0x2c,0xed,0x1e,0xa6,0xfd,0xc9,0xde,0xa9,0x82,0xba,0x19 +.byte 0x04,0x17,0xf7,0xa1,0x59,0x5c,0x7d,0x8d,0xe7,0x1c,0x89,0x7f,0xe1,0x02,0xd3,0xb0,0x46,0x6c,0xcf,0xde,0xf0,0x0b,0x00,0x43,0x8d,0xd6,0xe6,0xf7,0xc8,0x83,0x20,0x77,0x8b,0x9f,0x14,0xea,0x2b,0xb2,0xd2,0x41,0xfd,0x96,0x7c,0x0d,0x05,0xb9,0x5a,0xa0,0x83,0x50,0xde,0x0e,0xc6,0xa6,0x29,0x55,0x12,0x8e,0x2f,0x0a,0x5c,0xcd,0xae,0x92 +.byte 0x76,0x84,0xc9,0x8a,0x81,0xe5,0x3e,0xf0,0xe6,0x5b,0xe4,0x21,0xfb,0x4c,0xb6,0x0a,0x7b,0x7f,0x7e,0xab,0xdc,0x15,0x44,0xf8,0xeb,0x23,0x21,0x31,0xef,0x98,0xec,0x84,0x69,0x34,0x29,0x99,0x03,0x8a,0x12,0x8e,0x28,0xdd,0x00,0x6a,0xa3,0xe7,0x08,0x17,0x35,0x2a,0x42,0x8a,0xcb,0x4a,0x7b,0x1c,0xd2,0x74,0x4f,0x6a,0x8c,0x85,0x1c,0xd6 +.byte 0x05,0x3a,0xfd,0xdf,0x1c,0xa5,0x59,0xbb,0xdb,0xe3,0xa7,0x59,0xb1,0x67,0x3d,0xa4,0x71,0x4d,0x6c,0x99,0xe0,0xa7,0x8c,0xfa,0x96,0x1f,0x8d,0x0c,0xa7,0xc8,0xce,0xa3,0xbf,0x4d,0xc7,0xa9,0xb7,0xfd,0x04,0x58,0xcd,0xd7,0x20,0xb1,0xb9,0xf5,0x06,0x70,0x1b,0xdd,0xf4,0x1c,0xdc,0x32,0xa0,0x90,0x0d,0xb2,0x91,0x14,0x05,0xa2,0xf7,0xb7 +.byte 0xb6,0xd2,0xf1,0x30,0x75,0xcc,0x78,0x0d,0x56,0x70,0x64,0x02,0xe7,0x83,0x97,0x65,0x63,0x4b,0x64,0xff,0x8b,0x62,0xc9,0xa4,0x6e,0x96,0xbf,0xd3,0xeb,0x74,0xc5,0x1f,0xdb,0x1c,0xf3,0xca,0x54,0x7d,0x8d,0xd9,0xec,0x18,0xd8,0x99,0xd1,0xa5,0x70,0x8a,0xc5,0xdc,0xa0,0xcb,0xb7,0x52,0xe3,0xe6,0x88,0x0c,0x5a,0x42,0xde,0xe6,0xd8,0xc4 +.byte 0x39,0xe5,0x6c,0x0b,0xd4,0xa5,0x9b,0x51,0xa2,0x3d,0xc5,0xc7,0x17,0x17,0xb8,0xd8,0x09,0xad,0xeb,0x67,0x47,0xe0,0x88,0xef,0x1d,0x22,0x18,0x25,0xdc,0x32,0xb2,0xf7,0x47,0xc5,0xb3,0x0b,0x57,0x01,0x67,0xac,0xc3,0x9e,0xb0,0xa8,0xd7,0xce,0xb2,0xcd,0xea,0x3b,0x61,0xbb,0x24,0xad,0x91,0x7b,0xa2,0x9a,0xb3,0x63,0x56,0xe2,0x9d,0x69 +.byte 0x9e,0xd7,0x5f,0x5f,0x47,0x9f,0xae,0xf6,0x09,0xb1,0x9e,0x22,0x35,0xaa,0x55,0x0b,0xfc,0x70,0x96,0xfd,0x53,0x8a,0x37,0xaf,0x2d,0xa2,0xc5,0x49,0x5b,0x1e,0x32,0x47,0x9d,0xc3,0xb4,0x46,0xf3,0x54,0xdb,0x3f,0xb9,0x69,0x9e,0x8b,0xad,0x11,0xb2,0x68,0xe8,0x27,0x0d,0xca,0x33,0x1c,0x86,0xb2,0x2c,0xaa,0xc2,0x15,0xf9,0x6e,0xed,0x30 +.byte 0x71,0x08,0xeb,0x93,0x1d,0x16,0xc5,0x34,0x73,0x65,0x7a,0x19,0x2b,0xa7,0x3d,0xe6,0x88,0xb5,0x0f,0xa0,0x92,0x91,0x22,0x9d,0x01,0xf3,0xf4,0x57,0x9f,0xd9,0x23,0x1b,0xbd,0xd7,0xd5,0x11,0xc9,0x24,0xf6,0x36,0x30,0x30,0x69,0x95,0x17,0x48,0xf9,0x76,0x71,0xef,0xef,0xc0,0x00,0x9c,0x7d,0x87,0xdc,0xdc,0x1a,0x32,0x82,0x7a,0x13,0xc2 +.byte 0x9f,0x53,0xc2,0x7d,0x4d,0xbf,0xbe,0xf5,0x9d,0xc8,0x81,0x5b,0x81,0xe9,0x38,0xb6,0xa5,0x40,0xa5,0xd4,0x6f,0x0c,0xea,0xf1,0x52,0x59,0x37,0x3b,0xc2,0xb2,0x5f,0x10,0xdf,0x22,0xf7,0x77,0xe8,0x66,0xb0,0x97,0x91,0x5f,0xc2,0x18,0x8d,0x17,0x40,0xd1,0x6d,0xde,0x6e,0xf0,0x6c,0x1f,0x4e,0x9b,0x15,0x83,0x9b,0x70,0x21,0x2b,0x98,0x46 +.byte 0xbf,0xa5,0x82,0xac,0x63,0xac,0xd7,0x52,0xec,0x2c,0xf2,0xe4,0xe0,0x2a,0xbf,0x7e,0xa2,0xd2,0x9d,0x0d,0xf2,0x9b,0x79,0x5f,0x22,0xb0,0x6d,0x22,0x2e,0xed,0xe2,0x4f,0x73,0xc5,0x89,0xcc,0x4a,0xaa,0x9a,0x7e,0xab,0x95,0x25,0xa7,0x9d,0xf4,0xc2,0xe8,0x42,0x6e,0xd3,0xf9,0x25,0x54,0xb9,0x1f,0xa9,0x16,0x9c,0x22,0x7a,0xf0,0xa6,0xac +.byte 0x8b,0x9d,0xe6,0xe3,0x93,0x4e,0x65,0x3a,0x39,0x3e,0xf5,0x41,0x38,0x02,0xb7,0x37,0xd4,0xdc,0xea,0xc5,0x53,0x0e,0x52,0x85,0x96,0xc0,0xa7,0x21,0xbf,0xe7,0xca,0x12,0x1c,0x59,0x33,0xe4,0xd5,0x70,0x6b,0x25,0x54,0x24,0x58,0x48,0x1b,0x65,0x6e,0x7e,0xe6,0x84,0x39,0x38,0xbc,0xdf,0x96,0xbc,0x39,0xdf,0x8f,0x36,0x9e,0x3a,0xda,0x02 +.byte 0x86,0xe2,0x9f,0xb7,0x3a,0xd0,0xdb,0xc2,0x5d,0xb0,0xde,0x31,0x73,0x43,0xe5,0x4b,0x6a,0xa1,0x6d,0xaa,0xca,0x34,0xfa,0xa9,0xaf,0xec,0x05,0x2a,0xdb,0x82,0xa1,0xdc,0xdc,0x3d,0xb5,0x92,0x42,0x28,0xdc,0x93,0xec,0xab,0x9b,0x75,0xae,0x7c,0xbf,0x9b,0x25,0x01,0xb1,0xc8,0x3b,0x47,0xb6,0xfd,0x11,0x6f,0x4b,0xaa,0x6f,0xdf,0x1f,0x15 +.byte 0xc2,0xf3,0x87,0x4a,0xaf,0xf7,0x41,0x64,0x5a,0x19,0xa0,0xc4,0x4f,0x58,0xe8,0x19,0xe0,0x84,0x44,0xc7,0x65,0x0c,0xf1,0xff,0xcb,0x73,0xb2,0xac,0x25,0x28,0xe1,0xd4,0x03,0x16,0x3c,0x1c,0x24,0x3a,0xfc,0x2b,0x7e,0xcb,0xa3,0xba,0xb7,0x78,0x87,0xbe,0x95,0x06,0x27,0xb8,0x16,0x72,0xe4,0x24,0xa6,0x5d,0xe7,0x5e,0x93,0xa9,0x96,0xfd +.byte 0x01,0x1d,0xb8,0x7c,0x85,0x3c,0xe3,0xc9,0x56,0x68,0xcd,0xd9,0x79,0x97,0x50,0x39,0xfe,0x96,0x93,0x50,0xae,0xde,0xcd,0x8d,0xa0,0x38,0x31,0xba,0xca,0x21,0xff,0x19,0xea,0x44,0x95,0x4d,0xba,0xae,0xe2,0x62,0xd2,0x82,0x60,0x0c,0xb9,0x10,0x40,0x9a,0xaf,0x9b,0x17,0xcd,0xf3,0x26,0xec,0x38,0x13,0x18,0xd3,0xf2,0xd2,0x11,0xa6,0xc3 +.byte 0x3c,0x3b,0xe8,0xa0,0x49,0xba,0x4e,0x07,0xec,0x44,0x75,0x1c,0xc9,0x2f,0x68,0x64,0x02,0x1d,0x14,0x35,0x80,0xd8,0xa8,0x53,0xde,0x44,0x65,0x72,0x37,0x28,0x61,0x5f,0xa1,0x58,0xea,0x17,0xb3,0x89,0x25,0xf7,0xcb,0x87,0xe6,0x43,0xc5,0xc3,0xf3,0xd1,0xf5,0x1f,0x18,0xe9,0xd1,0x05,0xd9,0x85,0x38,0xf0,0x5e,0x26,0x35,0xf2,0x72,0x92 +.byte 0x34,0x2f,0xea,0xdd,0x7b,0x64,0xac,0x1d,0x78,0x41,0x56,0x83,0x7d,0x83,0x83,0x59,0xbe,0x9f,0x81,0x90,0x00,0x1f,0x04,0xd8,0xd8,0x8e,0xd9,0xeb,0x12,0x16,0x96,0x81,0x61,0x96,0xe8,0x7b,0x36,0x7b,0x26,0x9b,0x43,0x1e,0x0e,0xc2,0x59,0xdf,0x8f,0xb4,0x91,0x74,0x2e,0x1e,0x6d,0x20,0x70,0xe7,0x3c,0x39,0xe3,0xa8,0x62,0x66,0x32,0x63 +.byte 0x7d,0x89,0xb6,0xad,0x69,0x38,0x2c,0x21,0xe5,0x02,0xcc,0x93,0x8a,0x65,0x71,0x65,0x02,0x5c,0xeb,0xc9,0x70,0xf3,0x81,0xce,0x65,0x37,0x22,0xb7,0x47,0x3c,0xd6,0x3d,0x29,0x65,0x29,0xba,0xf9,0xae,0xd9,0x1f,0xd7,0x38,0x88,0x95,0xa9,0x66,0xa8,0x77,0x75,0x4a,0xf9,0x2e,0xd9,0x63,0x75,0x80,0x90,0x82,0x39,0x8b,0x21,0x58,0xf4,0x2e +.byte 0x2d,0x1f,0x7f,0xcb,0x33,0xdb,0x9b,0x9b,0x31,0x21,0x4e,0x6e,0xdb,0x0f,0x1f,0x69,0x22,0x97,0x69,0xd7,0x7f,0x2e,0xd7,0xce,0x6c,0xe4,0xc0,0xe7,0x27,0x82,0xe6,0x8a,0xf8,0xae,0x46,0x2d,0x5a,0x45,0x82,0xce,0xb6,0x49,0x84,0x15,0x4a,0x54,0xa6,0x76,0xf3,0x29,0x28,0xc0,0x05,0x82,0xae,0x7d,0x85,0x41,0xb0,0x87,0x67,0x44,0x37,0x46 +.byte 0x3e,0x47,0xbc,0x00,0x7c,0x05,0xd3,0xdc,0x9a,0x31,0x49,0xf8,0x48,0x99,0x57,0x4a,0x2b,0xe7,0xcf,0xb2,0xa7,0xf0,0xcf,0xc7,0xf5,0xfd,0x73,0x59,0xf1,0xe4,0x86,0xb5,0x5d,0xce,0x6d,0xbf,0xc6,0xe5,0xa9,0xca,0x75,0xe9,0x69,0xe6,0x09,0xab,0x66,0x17,0x09,0xe9,0xbc,0x14,0xd8,0x6f,0xe9,0xc2,0x87,0x39,0x2f,0x87,0x1e,0xb8,0x16,0x08 +.byte 0x10,0xee,0x1c,0x2f,0x47,0x7d,0xa3,0x5b,0x1f,0x1f,0x5d,0x95,0xd0,0xa4,0xbb,0x08,0xc2,0x47,0xab,0x46,0x3c,0xbb,0xbe,0x3a,0x64,0x82,0x40,0x08,0x75,0x03,0x02,0x6e,0x6a,0xab,0x6b,0xd4,0x90,0xa7,0x28,0x7a,0xb4,0x8b,0x1f,0x6b,0xcc,0x16,0x30,0x16,0xf5,0xc6,0xd8,0x4a,0xed,0xc9,0xc7,0xac,0x0f,0x75,0x1b,0x13,0xe3,0x45,0x6d,0x22 +.byte 0x7e,0x3d,0x59,0x55,0x87,0x8d,0x04,0xee,0x85,0xac,0x98,0x0c,0x52,0x5b,0xe6,0x92,0x04,0x31,0xdf,0x7c,0x44,0x4d,0x06,0xbe,0xb2,0x5a,0x95,0xef,0x29,0x75,0x9b,0xb2,0xe7,0xb8,0x83,0x18,0x82,0x23,0x4e,0x66,0xe5,0xdd,0x47,0xa1,0x6b,0x33,0x4e,0x9c,0x13,0x0e,0x0a,0x8a,0x5c,0xba,0x7b,0x2f,0x6c,0x72,0x78,0x86,0xd2,0xf8,0xbd,0x1b +.byte 0x4b,0x9e,0xe0,0x99,0x46,0x7f,0x24,0x0f,0x1b,0xda,0x85,0x87,0xe9,0xda,0x96,0x25,0xc6,0x81,0x77,0x8b,0x56,0xae,0x7a,0x9c,0x47,0x34,0xe1,0xac,0xf2,0xba,0x52,0x95,0xf8,0x56,0x26,0x66,0xf0,0x53,0xcc,0xc4,0x6f,0x46,0x94,0x10,0x22,0x69,0xb1,0x93,0x7b,0x51,0xb7,0xb8,0xdd,0x42,0x67,0x51,0x6d,0x9c,0xb2,0xbd,0xdb,0xdd,0x19,0xa2 +.byte 0x25,0x13,0xfe,0x42,0xca,0x36,0xeb,0xce,0x15,0x41,0xe7,0x35,0xce,0xa8,0x45,0x56,0x58,0x9f,0x46,0xcf,0x11,0xe7,0xcc,0x40,0x54,0xe4,0x85,0x0d,0x73,0x36,0x7e,0xae,0x38,0x8c,0x56,0xab,0xf0,0x5f,0x5c,0xff,0x14,0x9b,0x46,0x1b,0x35,0xbd,0x03,0x0e,0x2f,0x9e,0xde,0xd8,0x82,0xfe,0xa0,0x09,0xb4,0xb4,0xbd,0x58,0xc0,0xe2,0x01,0xb1 +.byte 0xca,0x5c,0x3d,0xc3,0x18,0x5e,0xc1,0xee,0x61,0x60,0x00,0xca,0x1e,0xf3,0x71,0xd8,0x15,0x37,0xf0,0x2e,0x13,0xa0,0xf7,0xac,0x73,0x4b,0xfb,0x6a,0x27,0x6b,0xde,0x69,0x3d,0x19,0x36,0x4b,0x63,0x55,0xae,0xd1,0x2b,0x66,0x69,0x0d,0x64,0xa7,0x86,0xfd,0x3a,0xb8,0xe6,0x87,0xaa,0x32,0x5f,0xbc,0xa7,0x67,0xde,0x7a,0xe0,0xdd,0xff,0x57 +.byte 0x2c,0xc9,0x25,0x92,0x03,0x91,0xa8,0x0e,0x39,0xe4,0x9a,0xdf,0x21,0x29,0xc7,0xbc,0x93,0x01,0x2a,0x02,0xd8,0xaf,0xbc,0x20,0x57,0xc7,0x37,0x77,0xa7,0xad,0x5e,0x15,0x20,0xcf,0x4a,0x3c,0x22,0x1b,0x92,0xa9,0x05,0x91,0x70,0xb3,0x88,0x4e,0x97,0x58,0xf7,0x33,0x1a,0x05,0x33,0x57,0xdc,0xbb,0x2a,0xba,0xd0,0x22,0xac,0x40,0xbe,0x60 +.byte 0xa2,0x89,0xe6,0x6c,0xf3,0x5d,0xef,0x58,0xb4,0x7c,0x4a,0x28,0xb8,0x16,0xd2,0xe0,0x49,0xf5,0xe8,0xaf,0x84,0x39,0xae,0x1e,0xa2,0x34,0x67,0x42,0x26,0x31,0x93,0x87,0x7a,0xd5,0xde,0x79,0xdb,0x4c,0x7e,0xcf,0x1f,0xef,0x9a,0x4c,0xb9,0x70,0xe2,0x72,0x9b,0xcd,0x30,0xe5,0xf1,0x84,0x44,0x5a,0xff,0x36,0xa2,0x37,0xe7,0x49,0x78,0x63 +.byte 0xbe,0xe0,0x90,0xdf,0xef,0x9e,0xf3,0x55,0x9e,0x8a,0x51,0xe8,0xa3,0x32,0x2d,0xed,0xc8,0x99,0xf6,0x92,0xf9,0x62,0x74,0xa7,0x8d,0xcf,0xa5,0x09,0xb3,0x43,0xb9,0x18,0x70,0x59,0x4f,0xd2,0x7f,0x7e,0xce,0x1e,0x7d,0xe8,0xa9,0xb7,0x29,0x0f,0x86,0x8a,0xac,0x22,0x41,0x98,0xb2,0xc3,0x48,0x3b,0x60,0xcb,0x7b,0x1d,0xc3,0x5e,0x19,0x5b +.byte 0x31,0x57,0x12,0x09,0x41,0x54,0xf8,0x01,0x70,0x02,0x03,0x8a,0x6e,0x8e,0x5b,0x23,0xf3,0xd4,0x13,0xbf,0x51,0xba,0xf9,0x2d,0x6c,0xb9,0xb3,0x90,0xd0,0xa3,0x76,0xfb,0xef,0x85,0x17,0x8b,0x2c,0x05,0xa3,0x06,0x0a,0xaa,0xdd,0xbf,0xd4,0xcc,0xe4,0x96,0x19,0x7f,0x51,0xf6,0x7e,0xa1,0x2c,0x14,0x1c,0x21,0x99,0x28,0x3a,0x0e,0x36,0x1b +.byte 0xf1,0xd7,0x3e,0x29,0x94,0xa6,0x03,0xf7,0xe5,0x6f,0x1b,0x56,0xc8,0xfb,0x2d,0x4f,0x12,0x2b,0xc7,0x3a,0xec,0x5e,0xc8,0x88,0x1b,0xd8,0x65,0x21,0x04,0x0e,0xe2,0x95,0x6d,0x62,0xea,0xeb,0xee,0xbe,0x47,0x0a,0x90,0x26,0xe3,0x85,0xd7,0x1d,0xb5,0xd5,0x56,0x8b,0xc0,0x2f,0x7f,0x01,0xc8,0xac,0x90,0xc3,0x2d,0x10,0xf2,0x11,0x30,0x0c +.byte 0xa9,0x4d,0x13,0xde,0x65,0x6d,0x34,0x68,0x5d,0xad,0x3f,0x7a,0x56,0x3a,0x1f,0xb9,0xd6,0x7b,0x8f,0xe8,0x42,0x2a,0x16,0xb6,0x3f,0xf2,0x4f,0x14,0x8e,0x8e,0x29,0x88,0x68,0x1b,0x10,0x80,0x80,0x47,0x36,0xaa,0x82,0xf5,0xa8,0x97,0xc4,0xcb,0xc2,0xef,0xaa,0x9f,0xdc,0x96,0x4f,0x1f,0xaf,0x39,0x71,0x55,0x8f,0x3c,0xbf,0x26,0x91,0x46 +.byte 0x38,0x59,0xa7,0xd1,0xb5,0x87,0xd6,0x81,0x71,0x17,0x83,0x05,0x40,0x9c,0xf3,0x33,0x4b,0x09,0x06,0xb1,0x69,0xfb,0x43,0x1f,0xef,0x9a,0xfe,0xc3,0x4e,0x4e,0x25,0xe1,0x3a,0xfb,0xf9,0xc9,0x97,0xe2,0x1c,0xa1,0x9a,0x06,0x6e,0xbb,0x16,0x4a,0x9f,0xf4,0x87,0x31,0x38,0x78,0xae,0x77,0x4c,0x42,0x28,0xc4,0x63,0xc0,0x49,0x37,0x4f,0xf9 +.byte 0xeb,0x31,0x0d,0x3e,0x0c,0x8a,0xb7,0x17,0xa7,0x90,0x26,0xc2,0xea,0xa5,0x9d,0xe4,0x4d,0xc6,0x3a,0x33,0x2d,0x47,0x42,0x8c,0xeb,0x50,0xea,0xfe,0x74,0x43,0x06,0xcd,0xa5,0xb1,0x49,0xf0,0x98,0x91,0x25,0xf4,0x8d,0x06,0xd1,0xeb,0x56,0x2c,0xf9,0xc4,0x84,0x02,0x9e,0xf2,0x3a,0xfe,0xb4,0x39,0xce,0xee,0x85,0xb6,0x64,0x6c,0xbc,0x1f +.byte 0xe6,0x86,0x00,0xc3,0xa9,0xb4,0x53,0xdf,0x2d,0x7c,0xc6,0xde,0x2e,0x79,0x25,0x5c,0xbb,0xe5,0xbe,0x33,0xe9,0x58,0x49,0x35,0xbe,0xae,0xbc,0x06,0xdc,0x48,0x9d,0xc3,0x08,0x6f,0xe8,0xb8,0x48,0x67,0xea,0x1c,0x05,0xb4,0xf7,0xe3,0xcc,0xc1,0xb3,0xa8,0x61,0xcb,0xa8,0xf6,0x12,0x52,0x68,0x06,0x36,0x2b,0x15,0x43,0xc9,0x98,0xfe,0xe5 +.byte 0x43,0x11,0x0d,0xc3,0x37,0x38,0x7a,0xcb,0x98,0x14,0xc1,0xaf,0x29,0x36,0x35,0x63,0x74,0x98,0xcf,0x0f,0x44,0xe4,0x6e,0xf7,0x3f,0x6e,0x15,0xe8,0xe9,0x93,0x7b,0x96,0x1b,0x84,0xe7,0x8b,0x83,0x30,0xa1,0xdc,0xc3,0xb8,0x18,0x2f,0xc5,0x34,0xd1,0xa5,0xb9,0xee,0x4a,0x04,0xbf,0x26,0x63,0x29,0xba,0x90,0xb5,0x7c,0x83,0x2b,0x1f,0xe8 +.byte 0x5c,0x9f,0x23,0x40,0x7f,0x9c,0x2f,0x76,0x96,0xd6,0xd5,0x13,0xda,0x5c,0x81,0xa4,0x60,0x60,0xbd,0x5e,0xb3,0xd2,0x2c,0xaa,0x48,0x04,0x74,0x31,0x5d,0xbd,0x46,0xd8,0x8d,0x3f,0x62,0x2d,0x1e,0x17,0x97,0x08,0x71,0x06,0x1b,0x96,0x1b,0xd5,0x80,0xa6,0x41,0x06,0x10,0x6e,0x36,0xd4,0xfb,0x36,0x6d,0x96,0xb8,0x86,0x22,0x34,0xda,0x7e +.byte 0x6c,0x5f,0x3b,0x95,0x35,0x1b,0x42,0x3c,0xf2,0x9d,0xe3,0xe9,0x3f,0x44,0xd5,0x4c,0x60,0x55,0xae,0xbe,0x4f,0xf2,0xb3,0x84,0xa1,0x79,0xdf,0x86,0xf0,0x8f,0xad,0xa5,0xa3,0x4a,0xea,0x5d,0x68,0x34,0x17,0x4c,0xb7,0xd8,0x6f,0x67,0x22,0x85,0xe2,0x16,0xcf,0xba,0xee,0x92,0xeb,0x95,0x8e,0x67,0xb1,0xf0,0xbb,0xb0,0x34,0x2f,0x58,0x49 +.byte 0x56,0x3e,0x81,0x31,0xb6,0xc3,0x2c,0xee,0x2b,0x85,0x72,0xbc,0xe9,0x20,0xaa,0x4e,0x34,0xb9,0x8b,0x32,0x2f,0x9e,0xd7,0x98,0x63,0x9d,0xfd,0x3a,0xe9,0x30,0x49,0x23,0x4a,0xb4,0xcb,0xc5,0xe5,0x78,0xcd,0x22,0x90,0xce,0x9f,0x35,0x13,0xda,0x8f,0x14,0xdb,0x36,0x0f,0x66,0x87,0x62,0x50,0xde,0x52,0x15,0x10,0x67,0x8a,0x5c,0xdb,0x76 +.byte 0x51,0x7f,0x72,0x9b,0x8e,0x91,0x39,0xc8,0x3c,0x34,0x0f,0x3d,0x92,0x07,0xb8,0xef,0x2a,0x8b,0x59,0xbd,0x82,0xc1,0x5c,0x95,0x93,0x0d,0x3d,0x9b,0x51,0x53,0x38,0x6b,0xd0,0xe3,0x5b,0xbb,0xe5,0x6c,0xc0,0xb5,0x71,0xa8,0xd8,0x7d,0x5d,0xbd,0xfc,0x69,0xcf,0xcc,0xa1,0xcd,0x83,0x9d,0x8f,0x46,0x47,0xe7,0x36,0x19,0x9f,0x4d,0xda,0x9c +.byte 0xcb,0x2a,0x47,0x58,0x93,0xbb,0x64,0xa3,0x89,0x53,0xbf,0xc7,0xc2,0xe2,0x65,0x0f,0x4f,0x17,0xc6,0x4c,0x15,0xfe,0x4b,0x95,0xb2,0x79,0x4a,0xb8,0xf6,0xae,0xcc,0xba,0xc3,0x5d,0x18,0xb2,0x8e,0xd8,0x6b,0x43,0x1b,0x2f,0xe1,0x36,0xb2,0xa5,0x22,0xa0,0xc7,0xc0,0x26,0x8e,0x48,0x77,0x0c,0x14,0xdd,0xdc,0xde,0x71,0x98,0xce,0xdd,0x61 +.byte 0x85,0xd9,0x23,0x42,0x7f,0x85,0xc8,0x06,0x81,0x3e,0xa2,0x0f,0x1e,0x3e,0xcf,0x33,0xef,0x43,0x6a,0xc7,0xee,0x3f,0x91,0x68,0x32,0x89,0xd9,0xed,0xdf,0x45,0x33,0x10,0xbb,0xd5,0xef,0x1d,0x3c,0x1e,0x26,0x21,0x4d,0x1a,0x06,0x98,0x60,0x71,0x7f,0xce,0x45,0x4e,0xe3,0x3f,0xfa,0xff,0xcd,0xe2,0x92,0x82,0x2e,0x83,0x69,0x9c,0xc6,0x5c +.byte 0x6e,0xb6,0xec,0x28,0xdc,0x7b,0xdb,0xf3,0x02,0x3a,0xf7,0xad,0x9b,0x7a,0x73,0xb2,0x07,0x70,0x76,0x9d,0xa2,0x11,0xcf,0x89,0xea,0xaf,0x6a,0xd2,0x15,0xeb,0x5a,0x99,0x1a,0x17,0x1d,0xce,0xc0,0x7f,0x50,0x26,0x84,0x07,0xd7,0x7e,0x33,0x27,0x74,0x84,0x18,0x32,0x86,0x32,0x34,0x28,0xe8,0x45,0x21,0xb7,0x26,0x3b,0x11,0xbb,0x9a,0x8b +.byte 0x46,0x8e,0x27,0xf8,0x62,0xb5,0x98,0x6e,0x03,0xee,0x9e,0xcb,0xbc,0x74,0xbe,0x63,0x7a,0x86,0xe5,0x75,0xeb,0x7f,0x14,0xa6,0x96,0x76,0x5a,0x46,0xa9,0xda,0xf1,0x4e,0x0e,0x90,0x59,0x56,0x4a,0x48,0x2d,0x91,0xbe,0x78,0x5b,0xfb,0xf7,0xea,0xab,0x1c,0xc0,0x0c,0x5d,0xba,0xb4,0x7b,0xc7,0x21,0xb1,0xc9,0xa3,0x20,0xe6,0xae,0xee,0x0e +.byte 0xf0,0x3b,0x44,0xd6,0xaa,0x57,0x88,0x1f,0x76,0xc8,0x43,0x07,0x91,0x71,0xa5,0xcc,0x04,0x38,0x01,0x13,0xa6,0xea,0x18,0x48,0x8f,0x09,0x8d,0x37,0x8b,0x6f,0x35,0x36,0x51,0xc6,0x30,0xca,0x9e,0xe2,0xaf,0x0c,0x26,0x14,0xe3,0xbf,0xea,0x0e,0x14,0x88,0x97,0xcc,0xf6,0xc1,0x8f,0xad,0xef,0x2d,0xc1,0x0f,0xad,0x45,0x12,0x7a,0xe6,0x37 +.byte 0x97,0xcb,0x34,0x83,0xd8,0xef,0x34,0x2a,0xce,0xd0,0x21,0x8a,0x7d,0x87,0x7a,0x66,0xf7,0x1c,0xdf,0xa0,0x3f,0xa0,0xf6,0xb3,0x24,0xee,0x6e,0x21,0xe9,0xc3,0x73,0xe4,0xd9,0xc6,0xf6,0xf6,0xac,0x25,0xb7,0xb5,0x64,0x7f,0xcc,0x88,0x3e,0x98,0xe1,0xef,0xa9,0xd2,0x03,0x10,0x4b,0xa3,0xbc,0x3c,0x24,0xfc,0x41,0x36,0x30,0x2d,0xca,0x17 +.byte 0x35,0xd6,0x17,0xa2,0x2b,0x48,0xed,0xd3,0xd7,0x18,0x4f,0x45,0xe9,0x59,0x03,0x35,0xa0,0x80,0x75,0x17,0x48,0xd5,0xea,0x07,0x7a,0x6c,0x3f,0x7a,0x2c,0x02,0x0a,0x7f,0xb5,0x17,0xea,0xf4,0xf6,0xb5,0xf4,0x81,0xba,0x69,0x44,0x81,0x6b,0xff,0xb2,0x43,0xae,0x3d,0x37,0x81,0x91,0x3f,0x6a,0x70,0x35,0x2d,0x06,0x9d,0xa8,0xb5,0xb8,0xc7 +.byte 0x19,0x3a,0x5f,0x59,0x79,0x0b,0x62,0x23,0xa4,0x5b,0x46,0x7b,0x17,0x82,0x19,0x87,0xe8,0xdf,0x09,0xb7,0x50,0x7e,0x40,0xe3,0x71,0x2d,0x09,0xde,0x69,0x2e,0x6c,0x35,0x5c,0x44,0xae,0xb7,0x05,0xb8,0x7e,0xb4,0xe4,0x34,0x05,0x1f,0xd2,0x1f,0xe5,0x79,0x2a,0x15,0xf8,0x8f,0x02,0xc7,0xc8,0x1e,0xe6,0x12,0x83,0x08,0x9c,0x7a,0x2f,0xc6 +.byte 0xc9,0x15,0x0f,0x0f,0x0f,0xa9,0x53,0x16,0x19,0x5b,0x74,0x58,0x6c,0xac,0x21,0x72,0x7f,0xa1,0xae,0xbc,0x34,0x76,0xa6,0x9b,0xbe,0x0f,0x13,0x55,0x50,0x5a,0x8b,0x9e,0xb3,0xf3,0x9e,0x8b,0x61,0xbe,0xb4,0x09,0x71,0x61,0xf0,0xd6,0xaa,0x8c,0x0d,0x0c,0x66,0x31,0x88,0xe3,0x71,0x6a,0xb5,0xaa,0xc0,0x9b,0xce,0x0d,0x79,0x90,0xc1,0x0a +.byte 0xf9,0xfe,0x4d,0x49,0xd0,0x5a,0x63,0xf1,0xfc,0x47,0x71,0x9e,0xbb,0xd1,0x2c,0xef,0xfe,0x90,0x28,0x75,0x82,0xf6,0xa5,0x95,0xea,0x65,0xfa,0xe8,0x04,0xcd,0xb4,0xe1,0x0d,0xb2,0xac,0xd5,0x12,0xf5,0x17,0xbb,0x3b,0x2e,0x52,0x9e,0x7b,0xe7,0x8e,0x86,0x03,0xce,0x77,0x01,0xf0,0x4f,0xb5,0xf7,0xef,0x8b,0x37,0x5e,0x97,0x80,0xbb,0x2b +.byte 0xcf,0x9a,0x63,0x18,0xc5,0x0c,0xfb,0x3c,0x91,0x9c,0x37,0x90,0x76,0x71,0x62,0xbc,0x80,0x40,0x1a,0x74,0xb8,0x1b,0x61,0xb1,0x89,0x4d,0xf7,0x8d,0xd4,0x46,0xef,0x1f,0x3b,0xac,0xe8,0x41,0x62,0x8e,0xea,0x2b,0x56,0x22,0x25,0x37,0x70,0x53,0xcd,0x8f,0x57,0xfa,0xad,0x00,0xc5,0x0c,0x9e,0x57,0xde,0x50,0x07,0x8d,0x80,0xbf,0x22,0x5d +.byte 0x4a,0xbd,0x6a,0xcb,0xfc,0x6f,0xd1,0x56,0x8f,0xd5,0x34,0x8a,0xe6,0xe9,0xa0,0x00,0x06,0x12,0xd8,0xb1,0x49,0x0a,0xbb,0x87,0xe5,0xca,0x75,0x11,0x4c,0x85,0x60,0x77,0xc0,0x90,0x1c,0x14,0x38,0x38,0x3e,0x4f,0xff,0xbf,0xfc,0xa1,0xa1,0xe7,0xb0,0x5d,0xd8,0x1f,0x33,0x07,0x5f,0x04,0x4f,0xc7,0x93,0xc6,0xcc,0xe3,0x01,0xd0,0x43,0xe1 +.byte 0xd9,0x00,0xc5,0x9f,0x79,0xab,0xfc,0xe9,0x55,0x51,0x03,0x0c,0xe1,0x73,0xd6,0x09,0xe3,0xb9,0x76,0x72,0x77,0x4c,0x1b,0x7c,0x57,0x1e,0x7f,0x5f,0x02,0x83,0xa3,0xc6,0xde,0x23,0x85,0x76,0x1a,0xbf,0x48,0xc8,0x02,0xdb,0x31,0x30,0x95,0x85,0x68,0x8a,0xf6,0xe9,0x48,0x7f,0xc9,0x26,0xab,0x68,0x36,0x9f,0x1c,0xf0,0x90,0xbc,0x4a,0x68 +.byte 0x94,0xf8,0x7f,0xae,0xa9,0x3b,0x5b,0x63,0x9a,0xcd,0xe3,0xf0,0xac,0x9f,0x6f,0x78,0xa0,0x67,0x58,0xd8,0x2c,0x71,0x8a,0x14,0x31,0x07,0x95,0x0c,0x38,0xa4,0x53,0x33,0x60,0x23,0x21,0x87,0x6b,0x4f,0xf9,0xa8,0xb8,0xfc,0x8e,0xf1,0x3a,0x03,0x0b,0x03,0x02,0x33,0xbc,0x6a,0xb9,0x8e,0x41,0xc8,0x38,0xd8,0x83,0x30,0x6a,0x61,0x5c,0xcf +.byte 0x49,0xdd,0xd7,0xda,0x2c,0xaf,0xc4,0x68,0xad,0x07,0x9c,0xd4,0xaf,0x94,0x64,0xcf,0xe1,0x9b,0x37,0x50,0x65,0x03,0x20,0x3c,0x34,0x43,0xe9,0xb0,0x9b,0xba,0xb1,0x9a,0x3e,0x10,0x99,0x8f,0x93,0xb7,0x3d,0xac,0xbd,0xab,0xa8,0xfa,0x74,0x90,0xe1,0x38,0xe4,0xf3,0x47,0xfc,0xad,0x8b,0xb4,0x98,0xe4,0x65,0xe9,0xd9,0x8a,0x21,0x81,0x4f +.byte 0x0c,0xd7,0xb1,0x84,0xb9,0x69,0x68,0x64,0xa3,0x1f,0x25,0x84,0x5f,0xf7,0x3f,0xca,0x52,0xff,0xda,0xc9,0x3d,0x5e,0x8b,0x57,0xd3,0x9a,0x1d,0xb7,0xae,0x90,0xa4,0xc3,0x78,0x68,0xfd,0x80,0x3f,0xfd,0x5c,0x09,0x83,0x5d,0xc2,0x48,0xd8,0x84,0xeb,0x8a,0xfe,0xbe,0x30,0x12,0x79,0x54,0x5f,0x7f,0x6e,0x4b,0x8a,0x1e,0xcb,0xcd,0xed,0xb6 +.byte 0xe9,0x6d,0x8a,0x1f,0xdc,0xb1,0x46,0xab,0xdc,0x0d,0xbf,0xda,0xd9,0x39,0x3b,0xd2,0x81,0x00,0x83,0x77,0x32,0xf7,0xdf,0x0e,0x31,0x5d,0x1d,0x6c,0xa7,0x4e,0x54,0xa8,0xac,0x81,0x8c,0xb6,0xa5,0x89,0x02,0xd7,0x2e,0xfd,0x26,0xa3,0x9e,0xcf,0xdb,0x1f,0x5a,0xf3,0x54,0xac,0xe5,0xd0,0x1f,0x9b,0xa7,0xab,0x28,0xcc,0x66,0xd3,0xbc,0x4c +.byte 0x54,0x1a,0x54,0x73,0x78,0xde,0x08,0xd5,0xa5,0x08,0xdc,0x00,0x09,0xc5,0x37,0x61,0x1a,0x98,0x12,0x84,0x2d,0xff,0xc3,0x25,0x62,0x93,0x83,0x05,0x66,0x3d,0xfb,0x1d,0x54,0x08,0x8a,0x50,0x03,0xc4,0xc4,0x6e,0xfa,0x16,0x83,0xbb,0x27,0xf1,0xb7,0x31,0x92,0x64,0x76,0xbc,0xf0,0x44,0x62,0xe9,0x5e,0x15,0x94,0xdc,0xe9,0xf3,0xf8,0x20 +.byte 0x93,0x4d,0x11,0xa2,0xc8,0xde,0x83,0xe6,0x75,0x63,0xfe,0x13,0x75,0x0f,0x79,0xd1,0x3d,0x75,0xb7,0x43,0x62,0x57,0x8d,0x96,0x9c,0xa3,0xc4,0xb2,0x84,0x6a,0x14,0x6e,0x17,0x32,0x09,0x76,0x95,0xbb,0xd6,0xc1,0x2e,0xdc,0x8c,0x73,0xd7,0xad,0x5a,0x41,0x8b,0xb3,0x7e,0x8d,0x90,0xec,0xf5,0xa0,0x46,0x90,0x4c,0x52,0xec,0x97,0xc6,0x98 +.byte 0x7d,0x19,0x77,0xa0,0x99,0x85,0x11,0x26,0x77,0x26,0xf9,0xac,0xe3,0x81,0xcf,0x7d,0x22,0xc8,0x00,0x3d,0x5b,0xee,0xa5,0xf8,0x6d,0xfe,0x47,0xe4,0xef,0x60,0xcc,0xd0,0x33,0xf7,0x5b,0xed,0xbd,0x82,0xc9,0xa8,0x41,0xb8,0x47,0x34,0x9f,0x62,0xb2,0x67,0x62,0xb0,0x3a,0x27,0x95,0xe1,0x22,0x76,0x98,0x0f,0x35,0xaf,0xfc,0x4d,0xc7,0x92 +.byte 0x92,0x7e,0xaf,0x3b,0x3a,0x36,0x5e,0x5c,0xbf,0x43,0x02,0x66,0x5a,0x30,0x78,0x82,0x52,0x20,0x98,0xd6,0xa1,0xe9,0x9a,0x61,0x54,0x0b,0x74,0x85,0xb5,0x99,0x69,0x9f,0x9b,0x3b,0x2f,0x49,0xec,0xb3,0x18,0x0c,0x4a,0x53,0x20,0xd7,0x80,0x7b,0xd4,0x20,0x21,0x32,0x89,0x08,0x81,0x50,0x2b,0x16,0x8d,0xbb,0xe6,0xbb,0xc7,0x74,0x80,0x67 +.byte 0x47,0xf1,0x06,0x68,0x02,0x37,0x31,0x00,0x50,0x8b,0xe2,0x44,0x85,0x2e,0x39,0x54,0xda,0x26,0x7b,0xe1,0xb0,0x23,0xd7,0x0c,0x3c,0x3b,0x81,0x9b,0xa6,0xbe,0x24,0xfd,0x09,0x73,0xbe,0xc3,0x2f,0xa0,0x7b,0x85,0x5b,0x1b,0x55,0x4e,0x9e,0x38,0x80,0x61,0xd7,0xe8,0x9b,0xec,0x88,0x00,0x6a,0x64,0x1b,0xd5,0x65,0x20,0x2a,0x62,0x64,0xbc +.byte 0x21,0xca,0xce,0xc3,0xeb,0x2d,0x2b,0x5c,0x4d,0xb8,0x7c,0xb5,0xbe,0x98,0x0d,0x5b,0x88,0x23,0x60,0xff,0xbe,0x0a,0xb6,0xdd,0xdf,0x28,0xd5,0x2c,0xe5,0x9d,0xb5,0x29,0xea,0x6c,0x3a,0xf4,0x78,0x91,0xa3,0xb2,0xab,0x12,0xf9,0x90,0x96,0xc9,0xa4,0xfc,0x4d,0x28,0x2b,0x0c,0x28,0x8b,0xb7,0x8b,0x36,0xd6,0x80,0xbf,0x07,0x09,0xf9,0x62 +.byte 0x32,0xc0,0x50,0x60,0xd9,0x73,0xe3,0xbe,0xfa,0xa6,0x78,0x48,0x47,0xd7,0xb5,0x39,0xd8,0x04,0x6d,0x79,0x98,0x2e,0xd6,0x3a,0xe5,0xc9,0x01,0xd0,0x00,0x2e,0xd2,0x8b,0xd7,0x1f,0xf1,0xba,0xd4,0x0e,0x9f,0x9d,0xab,0xbf,0x2c,0xe1,0x75,0xf6,0x9c,0xc0,0xae,0x73,0x2b,0x58,0xcb,0x6d,0x46,0x6d,0x11,0xb7,0xce,0xc7,0xef,0x34,0x2c,0x11 +.byte 0x93,0x3c,0x17,0xd9,0x3e,0xad,0xc9,0x4c,0xb3,0xd0,0x0a,0xd0,0xfe,0xf3,0x9d,0xc5,0x43,0x03,0xa9,0x78,0x4a,0x42,0x7f,0xfb,0x75,0xd2,0x85,0xfb,0xe7,0xe6,0xa9,0x48,0x2f,0xa6,0xc3,0x16,0xe2,0x2a,0x9d,0x0d,0xcb,0x2e,0x8b,0x75,0xa8,0x14,0x3a,0x2e,0xb1,0xff,0x58,0x1d,0xa8,0xa6,0xc0,0xf6,0x17,0xda,0xc1,0xce,0xaf,0x08,0xa9,0xc2 +.byte 0xa3,0xc1,0xab,0xb6,0xe8,0x10,0x57,0x8a,0xce,0xc0,0x03,0x5c,0x53,0x5c,0x02,0x5d,0xcf,0x5c,0x65,0xc6,0x47,0x3c,0x62,0x0e,0xa3,0xfc,0xe2,0xae,0x10,0x55,0x4a,0xb4,0x27,0xe8,0x59,0x5e,0x45,0xa9,0xbb,0x21,0x10,0x91,0x46,0x1f,0x50,0x3b,0xc6,0x8c,0xa1,0x8a,0xee,0x5e,0x6e,0x32,0xe6,0x42,0x40,0x79,0x7f,0xbb,0xb3,0x5b,0x05,0xde +.byte 0xe0,0xf6,0x7f,0x3d,0x37,0xe6,0xc3,0x3b,0x40,0xc9,0xe0,0x42,0x36,0xd0,0x0e,0x13,0x32,0x3e,0x48,0xce,0xd8,0xa2,0xef,0xae,0x93,0x66,0x7d,0xde,0xb9,0xdd,0x60,0x15,0x53,0xf2,0xd9,0x90,0x3d,0x38,0x8c,0xa6,0x34,0x44,0xb5,0x6c,0x74,0x7d,0x9d,0xe7,0xd0,0xef,0x6c,0xd6,0xfe,0x9b,0x79,0x4e,0x79,0x5e,0x48,0xef,0x93,0xb2,0x81,0x0b +.byte 0x2b,0xee,0x83,0x69,0x3d,0x15,0x8c,0x27,0x69,0x6f,0xca,0xbf,0x75,0x29,0x37,0xc6,0xe6,0xca,0xb2,0x70,0xd0,0xaf,0xc8,0x5e,0x69,0xf1,0x6b,0x2d,0x0d,0xe7,0xe9,0xbf,0x07,0x52,0xe5,0xac,0x98,0xcf,0xcf,0xd6,0xdd,0x7c,0x2b,0xfc,0x8f,0xd2,0x5f,0x81,0x4b,0x1b,0x7b,0x2d,0x84,0xe2,0x69,0x96,0xcb,0xa2,0x59,0x10,0xba,0xda,0x51,0x11 +.byte 0xeb,0xc3,0x4f,0x10,0xbf,0x8e,0x5b,0xbb,0xa3,0x29,0xe9,0xd8,0x0e,0x71,0xa0,0x1b,0xff,0xee,0x36,0x8c,0x00,0x83,0x6b,0x32,0xfe,0x05,0xeb,0x89,0x8f,0xed,0x48,0x22,0xe1,0x76,0x0a,0xac,0xae,0x3c,0x24,0x54,0x84,0xc2,0x0f,0x79,0x33,0x2b,0x49,0x35,0x1c,0x84,0x5a,0xca,0x92,0x6c,0x1f,0x78,0x15,0x5a,0x36,0xad,0xd5,0x1d,0x9d,0x10 +.byte 0xc1,0x5f,0x7c,0x61,0x60,0xba,0x2e,0xe6,0x9b,0x34,0x02,0xe9,0x68,0x1c,0xfb,0xbf,0x02,0xdc,0x79,0x57,0x1c,0x0f,0xc8,0x8c,0x2a,0x66,0x2a,0x50,0xaa,0x81,0x4e,0x1f,0xa8,0x2d,0xe4,0x61,0xe8,0x43,0x84,0xcb,0xda,0x96,0xf9,0x4a,0xd0,0x8f,0xe1,0xd7,0xc4,0x05,0xf5,0x76,0xfa,0x47,0x7a,0x07,0x1a,0x77,0xbb,0x63,0xb3,0x3a,0x85,0x3b +.byte 0x0d,0x32,0x4f,0x14,0x15,0x02,0x5b,0x9c,0xbc,0xc2,0x12,0x90,0x0f,0x7b,0x94,0x27,0x5f,0x70,0x23,0xd8,0x5d,0x54,0xc4,0xca,0x6a,0x69,0x9e,0xd1,0xb3,0x2a,0x75,0x1a,0x07,0x9c,0x20,0xf6,0x76,0x22,0x4d,0x09,0x30,0x24,0x3f,0x3b,0xe5,0xcb,0x4b,0x5a,0x03,0x2d,0xe8,0xbe,0xed,0xf0,0xe3,0x91,0xf2,0x6c,0xb8,0x02,0x2d,0x6c,0x7a,0xa6 +.byte 0xc1,0x8e,0xa7,0xbb,0x73,0xdf,0x40,0xa5,0x60,0x91,0xbf,0xbe,0x28,0x0b,0x37,0x2e,0x5f,0x4b,0xcd,0x14,0x4d,0x2d,0xfc,0x5e,0x43,0xb5,0x78,0x8d,0xea,0xa0,0x86,0x54,0x4f,0xb6,0x25,0x40,0x39,0x3f,0x9c,0x7a,0x26,0x74,0x88,0x42,0x53,0xb0,0x3b,0x81,0x75,0x04,0x67,0x41,0x65,0x66,0x2c,0xdc,0xe9,0xf0,0xb3,0xab,0x2a,0xa5,0xf3,0xef +.byte 0xfa,0xc5,0x10,0x63,0xe2,0x70,0xb5,0x29,0x60,0x86,0x9e,0xb9,0x0b,0xe2,0xc4,0x05,0xa9,0x3c,0x1b,0x60,0x15,0x6b,0x2f,0x74,0x93,0x5e,0x70,0x9a,0x56,0x6a,0xc4,0x92,0x49,0xaa,0x95,0x51,0xc4,0xba,0xfd,0xf6,0x2d,0x36,0x3e,0x66,0xbd,0x74,0xbc,0x2e,0xb3,0xad,0xa1,0x41,0x50,0x33,0x79,0x84,0xac,0x21,0x7a,0xfc,0x3a,0x8e,0xdb,0xcc +.byte 0x27,0xf6,0x2c,0x5c,0x23,0x38,0x73,0xd5,0xaf,0xc9,0x2d,0x9c,0x18,0x58,0xdf,0x8f,0x89,0x9d,0xdd,0x00,0x3c,0x5f,0x23,0x00,0x6e,0x66,0x1d,0xf3,0x1c,0x40,0x9d,0x43,0xb0,0x74,0xf1,0x41,0xa5,0x77,0xcb,0x8d,0x5b,0x94,0x68,0x95,0xb6,0x0e,0xd4,0x4d,0x47,0x9b,0xd2,0xcd,0x9b,0x94,0xa4,0x28,0xf9,0xf0,0x3d,0xcf,0x89,0xb1,0xc3,0x73 +.byte 0x84,0x15,0xb6,0xc8,0x6b,0xf1,0xb1,0xdc,0x1b,0x1a,0x6f,0xb5,0x73,0x87,0x8b,0x63,0xbf,0x4b,0x25,0x9b,0xe4,0xdd,0x44,0xed,0xe7,0x0e,0x6f,0x03,0xae,0xa1,0x5e,0x1f,0x5f,0xa7,0xa4,0xed,0x69,0x7a,0x91,0x6d,0x55,0xac,0xce,0x18,0x32,0x17,0x78,0x49,0x9f,0x1e,0x9c,0xd2,0x7b,0x1f,0x74,0x60,0xa5,0x64,0xb1,0x99,0xe6,0xc5,0x0d,0x69 +.byte 0xfa,0xb2,0xd9,0x05,0x61,0x71,0xa4,0x6f,0xc2,0xb6,0x91,0x0e,0x6c,0xf2,0xa6,0x6c,0xea,0x8e,0x94,0x8b,0xac,0xa7,0xfe,0x70,0x8e,0x8d,0xc2,0x85,0xa6,0xa7,0x8e,0xe8,0xfa,0xbc,0xa1,0xaf,0x0e,0xa9,0x06,0xa4,0x9a,0xb0,0x23,0x93,0xbc,0x93,0x2d,0x97,0x42,0xe2,0x0d,0x3a,0x65,0xb4,0x60,0x5b,0xeb,0xa1,0x20,0x8a,0xdc,0x17,0x6b,0xc5 +.byte 0x19,0xc3,0x67,0xbf,0xae,0xf7,0xb9,0xb1,0x88,0x7f,0xe5,0x1b,0xc2,0x61,0x97,0xa0,0xd3,0x64,0x74,0x6b,0x7a,0x46,0x39,0x3f,0xc8,0xd3,0x53,0x79,0x74,0x4e,0x1e,0x63,0x91,0xc5,0x4a,0x70,0xb0,0x05,0x35,0x19,0xc2,0x26,0x54,0x44,0x3b,0xa9,0x12,0x40,0xd0,0x21,0x19,0xf3,0x8d,0xc7,0x2b,0x88,0x9a,0xec,0x41,0x8f,0x4f,0x23,0x19,0x1a +.byte 0xf3,0x1d,0x0a,0x88,0x0f,0xa7,0x02,0xd4,0x78,0x88,0xe6,0x43,0xb6,0x9e,0x07,0xdf,0x6a,0x1f,0x41,0xbb,0x3e,0xea,0x15,0xff,0x66,0x4c,0x7a,0x8b,0xee,0x27,0x47,0x81,0x81,0x95,0xa2,0x22,0xb4,0x9f,0x1c,0x09,0x1c,0xfc,0x0a,0xef,0x88,0x7f,0x59,0x60,0x91,0x6a,0xe4,0x92,0x8c,0x02,0x54,0xc9,0xee,0xc7,0x5e,0xd1,0xbf,0xc9,0x41,0xde +.byte 0x2f,0xa3,0x22,0x07,0x1d,0x8c,0xe1,0x04,0x59,0x94,0x75,0x3e,0xee,0x56,0x62,0x07,0x80,0x18,0x60,0x78,0x0e,0x55,0x06,0xec,0xe1,0xa5,0xf6,0x21,0x7e,0xf9,0x37,0xab,0x6a,0xed,0x07,0xcb,0xbf,0xa2,0xab,0x50,0xee,0x1f,0x2f,0x54,0x2b,0x82,0x93,0x59,0x03,0x35,0xd9,0xe8,0x2b,0xa6,0x03,0xc2,0xef,0x37,0x85,0xfc,0x89,0x06,0x30,0xe0 +.byte 0xc2,0x00,0xc4,0xaf,0x59,0xb6,0x31,0x52,0x37,0xa4,0x6c,0xdb,0x1b,0x20,0x87,0xf0,0xa4,0x15,0x4b,0xa8,0xd9,0x7e,0x1b,0x96,0x00,0x07,0xf4,0x86,0x07,0x14,0x55,0x70,0x37,0xe3,0xe3,0xf0,0xeb,0xd6,0xf1,0xe0,0xe9,0x6c,0xdf,0x3d,0xaf,0x86,0xb8,0x00,0x9b,0xdf,0xc6,0x5c,0xd2,0x53,0xcb,0xcf,0x63,0xcc,0x3e,0x6d,0x62,0xeb,0xe6,0x97 +.byte 0xd8,0x54,0xed,0x36,0xe4,0xed,0x69,0xaa,0x10,0x83,0xde,0x16,0xfd,0xcc,0xd6,0x24,0xb9,0x3c,0x4f,0x99,0x81,0xc2,0x23,0x16,0x91,0x5d,0x9f,0x46,0xa5,0xdd,0xb4,0x8a,0xe1,0x07,0x89,0x84,0x2e,0x62,0x48,0xf6,0x1a,0x17,0x7b,0xc8,0xf7,0xb4,0x3d,0x9e,0x82,0xe3,0xe3,0xcf,0x0b,0xd9,0x52,0x90,0x61,0xd8,0xdf,0x9e,0xc4,0xc7,0x7c,0xfa +.byte 0xcf,0x09,0xd2,0x94,0x86,0x37,0x94,0xaf,0x7e,0x0a,0x9d,0x16,0xee,0xad,0xfb,0xa2,0x9e,0x2d,0x2f,0xad,0xd5,0xc2,0xf9,0x91,0xf8,0x7e,0x2b,0xb8,0xb2,0x60,0x3c,0x0a,0x89,0x53,0x07,0x87,0x3b,0x83,0x70,0xee,0x71,0xa3,0x94,0x0b,0x77,0x50,0xeb,0xcc,0x23,0xf0,0xbe,0x95,0x51,0x54,0xd2,0xd6,0xd2,0x09,0xa5,0x19,0x3d,0x4e,0xec,0xe3 +.byte 0x88,0x71,0xa7,0xb1,0x10,0x03,0x7e,0xc4,0x92,0x2a,0xe7,0x99,0x75,0xff,0xae,0x10,0x3d,0xbb,0x33,0xc9,0x7f,0xc2,0xe6,0x3c,0xc4,0xe7,0xba,0x37,0xba,0x68,0x69,0x92,0x4a,0xfb,0x32,0x3b,0xb5,0xde,0xdb,0x91,0xd0,0x8e,0x77,0xf2,0x1e,0x2d,0x25,0xb4,0xa0,0x42,0xef,0x78,0x6c,0x75,0xcb,0xa0,0x73,0xdf,0xde,0xd8,0x26,0xfe,0xe3,0xf9 +.byte 0x74,0xe7,0xa0,0xd2,0xbd,0x6c,0x99,0x8d,0x07,0xf2,0xf8,0xff,0x36,0x2d,0x8e,0xda,0x5e,0x5c,0x47,0x06,0xf8,0x08,0x33,0x1d,0x93,0xcf,0xc3,0x1a,0x20,0x86,0xb6,0x8e,0x44,0x10,0xbc,0xba,0x89,0xfc,0xa3,0x57,0x92,0x2c,0x28,0xa1,0xd0,0xab,0xdc,0xba,0x0a,0x7e,0x9d,0xd2,0xfd,0x09,0xd3,0x87,0x6c,0x06,0x44,0x17,0x73,0xfe,0xc9,0x8b +.byte 0x52,0xd3,0x09,0x60,0x14,0x03,0xb1,0x79,0x4c,0x9c,0xc4,0xec,0x42,0x4c,0xd3,0x21,0xe5,0x34,0x21,0x38,0xdd,0x12,0x95,0xd4,0x20,0x50,0xef,0x5f,0x46,0x4f,0x37,0x65,0xd5,0xf1,0xb2,0x2c,0x6c,0x9a,0x06,0x28,0x77,0xbf,0xe3,0xec,0xec,0x2b,0xcb,0x2c,0x8b,0x62,0x2e,0x39,0xaa,0x28,0x0b,0x51,0x01,0xa5,0x02,0x06,0x66,0x4a,0x67,0x0c +.byte 0x96,0xa3,0x12,0x74,0x94,0x2c,0x0f,0x23,0xa3,0xea,0xda,0x1a,0x6d,0x54,0x30,0x33,0xc8,0x33,0x0a,0xfb,0x25,0x2a,0x8b,0x9a,0x87,0xd9,0x9d,0x37,0x4c,0x41,0x3b,0xe5,0x4a,0x81,0x92,0x40,0x38,0x18,0x82,0x13,0x54,0xde,0x56,0x11,0x63,0xf3,0x09,0x61,0x3b,0xdd,0x0c,0x71,0xe8,0x4f,0xc2,0x9a,0x77,0x2f,0xeb,0xf1,0x39,0x1c,0x10,0x0e +.byte 0x01,0xaf,0x92,0x34,0x9a,0xb6,0x7b,0x79,0x86,0x0c,0xf1,0x53,0xb6,0x59,0xbd,0x6d,0x79,0x6e,0x37,0x11,0x25,0x67,0x95,0x31,0x4f,0x43,0xdf,0xb7,0x4b,0x80,0x8d,0x07,0x3c,0x49,0x73,0x8a,0x72,0x61,0x02,0x0f,0x2f,0x13,0xed,0x91,0x10,0xf6,0x08,0xf3,0x50,0x4a,0xd4,0x36,0xcb,0x52,0xb3,0x3b,0xe6,0xef,0x85,0xe9,0xe0,0xad,0x0d,0x3d +.byte 0x84,0x07,0x70,0xdf,0x16,0x47,0xeb,0x26,0x19,0x27,0xaf,0x7a,0x9f,0x2f,0x2b,0x6d,0xbb,0x37,0x68,0x8e,0x19,0x46,0x5a,0x65,0x0d,0x0a,0x67,0xd8,0xe2,0xc2,0xcd,0x49,0xf6,0xc2,0x27,0xac,0x12,0xea,0x1f,0x81,0x60,0xac,0x8b,0x5d,0xcc,0x9a,0x5b,0xec,0xc3,0xcb,0x85,0x0d,0xef,0xa6,0xd5,0x33,0xb3,0x67,0x73,0x3f,0xc9,0x90,0x25,0x3e +.byte 0xe6,0x7c,0x41,0x59,0x83,0xf7,0x90,0x4a,0xbf,0x14,0x72,0x11,0xf2,0x3a,0x38,0x58,0x17,0xd8,0x3d,0x00,0xc6,0x42,0xf2,0xbc,0xfd,0x05,0x37,0x6d,0x11,0xb0,0xd7,0xb2,0xb7,0x73,0x69,0x80,0x47,0x30,0x64,0x13,0x8c,0x24,0xb2,0x42,0x12,0x8c,0xc0,0x8a,0x45,0x0b,0x71,0x23,0xeb,0xac,0x65,0xda,0x44,0x13,0x85,0x77,0xdf,0xb8,0x4b,0x69 +.byte 0xd4,0x8e,0x40,0x54,0x24,0xac,0xc8,0x62,0x36,0x51,0x20,0xaa,0xcd,0x5d,0xa5,0x73,0x2c,0x81,0x92,0x99,0x44,0x6b,0x04,0xac,0x8e,0xee,0x96,0x29,0xca,0xdc,0x2f,0xd1,0x13,0x5c,0x9e,0xc2,0x67,0x6a,0xaf,0xf6,0x3e,0xe2,0xa1,0x6d,0xda,0xbe,0x8a,0x55,0x50,0x27,0xee,0x6d,0xb8,0x35,0x5f,0xb4,0xa8,0x76,0xa1,0xe2,0x52,0x87,0xf6,0xfb +.byte 0xe2,0x16,0x1c,0x90,0x78,0xe4,0x17,0xb0,0xd9,0x56,0xf5,0xd3,0xa4,0xb0,0x3f,0xe9,0x01,0xf9,0xd0,0x67,0x2b,0xeb,0x1d,0x73,0x24,0x90,0x36,0x36,0x0d,0xcf,0xfb,0x3f,0xa1,0xa0,0x25,0x3b,0xf1,0x7f,0x9e,0x90,0xcf,0xb6,0xd0,0x83,0x90,0xcd,0x3f,0xff,0x5f,0xa3,0x33,0x95,0xd7,0xbe,0x78,0xfe,0xcc,0x9a,0xb9,0x64,0x88,0xb7,0xd9,0x5e +.byte 0x46,0x2d,0xf0,0xb1,0xa1,0x81,0x2b,0xab,0x80,0xf5,0x4d,0x3b,0xd8,0x53,0x64,0x8f,0xac,0x7a,0x03,0xb3,0x39,0x7a,0x85,0xef,0x61,0xb5,0x2c,0x8e,0xf4,0x27,0x07,0x9b,0x7b,0xc9,0x8b,0x1a,0xe4,0x4f,0xce,0x8b,0x35,0x32,0xac,0xcf,0x47,0xb8,0x2f,0x9e,0xe5,0x11,0x48,0xc1,0x07,0xea,0x0c,0xee,0x06,0xc6,0xa3,0x48,0xb6,0x1a,0xd8,0xb4 +.byte 0xa7,0xae,0x59,0x7d,0x9e,0x4e,0x66,0x7f,0xe9,0x02,0x40,0xdc,0x21,0x5e,0x74,0x2c,0x1d,0x29,0x22,0xca,0x97,0x4f,0xc8,0xc7,0xea,0x69,0x02,0x89,0xd1,0x43,0xff,0x83,0x89,0x58,0x66,0x92,0xbc,0x11,0xf6,0x02,0x8b,0xa8,0x34,0x8d,0xbe,0x3a,0x70,0xc3,0x10,0xe7,0xb5,0xc4,0xda,0xdb,0xc6,0x87,0xee,0xee,0xe0,0x48,0x62,0x80,0x8d,0xfc +.byte 0xaa,0xc7,0xce,0x1a,0xea,0xb9,0x1b,0x30,0x4a,0x48,0x9b,0xf4,0x58,0xff,0x5d,0x15,0xc8,0xf2,0x84,0x44,0xae,0x63,0xe8,0xb1,0xe0,0x2e,0x38,0x8e,0x47,0xf9,0x09,0xec,0xb9,0x94,0x18,0x37,0x68,0xef,0xbd,0xd5,0x67,0x72,0x01,0x9a,0x15,0xb9,0x7c,0x36,0xc0,0x22,0x80,0x12,0xb1,0x4e,0xab,0x3c,0xea,0x81,0xcf,0x70,0xf3,0xde,0x1f,0xd4 +.byte 0x67,0x94,0xfa,0xe1,0xf0,0xb6,0xd6,0x6b,0xc3,0xa2,0xbb,0x59,0x6b,0x9f,0x58,0x26,0x99,0x0c,0xdc,0xcd,0xb8,0xae,0x49,0xf0,0x8f,0xd3,0x0d,0xb7,0x4c,0x22,0xcf,0xb6,0x6c,0xa3,0x19,0x09,0x42,0x59,0x25,0xf8,0xdc,0xf3,0xc2,0x00,0xc3,0xc3,0xd3,0x9e,0x98,0xd3,0xa3,0xd0,0x96,0xfd,0x4f,0x15,0x57,0x5b,0xa7,0x08,0x3a,0x0e,0x3d,0xd2 +.byte 0x7d,0xa1,0xa0,0x94,0xc0,0x76,0x83,0xf6,0xc1,0xe8,0x7e,0xd3,0x97,0xc1,0xbf,0x38,0x74,0x9b,0xfb,0x35,0xeb,0xf7,0x34,0x20,0xea,0xda,0xd3,0xb1,0x2e,0x10,0x16,0x9c,0x09,0x1c,0x67,0x46,0xa2,0x05,0xf9,0x47,0xde,0x35,0x53,0x18,0x58,0xb0,0xbb,0x7a,0x88,0x58,0xc5,0x3e,0x98,0x29,0x43,0x98,0x07,0x76,0xa3,0xe1,0x95,0x92,0x21,0xe9 +.byte 0x06,0x17,0x15,0xe0,0x6b,0xd5,0x5a,0x6d,0x10,0xa6,0x08,0x92,0xa9,0xf5,0xcf,0x57,0x1a,0x28,0x5d,0x14,0x33,0x99,0xf9,0xa0,0xb3,0xeb,0xee,0xd4,0x6e,0x0b,0x5e,0xf7,0xe9,0xe3,0xc6,0x71,0x34,0x55,0xf3,0xde,0xd5,0xc2,0x52,0xc3,0x7b,0x06,0x87,0xef,0x26,0x81,0xc9,0xbd,0xaf,0x12,0x61,0x95,0x2b,0xa4,0x8e,0xe8,0x08,0x9a,0x13,0x48 +.byte 0x2e,0x84,0x98,0xf6,0x95,0x21,0x22,0xe5,0xcf,0x30,0x8d,0xaf,0x70,0x16,0x27,0x0c,0xcd,0x26,0x7f,0xe8,0xa0,0x35,0x0c,0x01,0x0e,0xdd,0x9d,0x2c,0x89,0x41,0x34,0xc4,0xa2,0xaa,0xf6,0x3f,0xca,0x3b,0x86,0xce,0xd7,0x4c,0xe3,0xb5,0x69,0xe9,0x41,0xbe,0x3c,0x9a,0x4c,0x1a,0xb3,0x88,0xea,0x78,0x12,0x4c,0x1b,0x79,0xc7,0xcd,0x32,0x72 +.byte 0xfa,0x3f,0x0b,0x73,0x1b,0xd9,0xec,0x85,0xd4,0x52,0x6c,0x91,0x2d,0xbe,0x76,0x8b,0xfd,0xb6,0x49,0xcf,0x67,0xd1,0x18,0x7b,0xae,0x86,0x47,0x47,0xfd,0xff,0x63,0xf2,0x88,0x1b,0x58,0xd5,0x30,0x69,0xf9,0x9a,0x03,0x52,0xae,0xe5,0xe2,0x55,0xbf,0x35,0x12,0xb0,0x84,0xa9,0xed,0xb6,0x8d,0x5f,0x6c,0xed,0x1a,0x00,0x7a,0xdc,0xf2,0x03 +.byte 0x9e,0xef,0x59,0x27,0x4c,0xf4,0x83,0xa2,0x36,0x3d,0x3d,0x8c,0x75,0x8c,0x37,0x68,0x93,0x0b,0x30,0x48,0xea,0x91,0x14,0x37,0x88,0x87,0x7f,0xe6,0xd8,0xbd,0x04,0x34,0x1e,0xe8,0x2a,0x41,0x48,0x5c,0x66,0xf9,0xc2,0xd1,0x56,0x25,0x29,0x45,0xfa,0x71,0xe1,0x59,0xa8,0x52,0x99,0x0b,0x92,0xe0,0x33,0x52,0x91,0xd6,0x5f,0x0a,0x70,0x83 +.byte 0x4f,0xa3,0x47,0x6e,0xfa,0x85,0x5e,0xb1,0x0a,0x1d,0xe7,0x35,0xc9,0x88,0x27,0xc9,0x8c,0x3e,0x7f,0x6d,0x34,0x1e,0x11,0x7b,0xcd,0xe7,0x09,0x82,0x3a,0xa1,0x46,0xc6,0x15,0xde,0x0b,0xde,0x35,0x71,0x92,0x5c,0x72,0x50,0x08,0x6b,0x62,0xa7,0xec,0xa2,0xca,0x53,0x6e,0x47,0x7d,0x50,0x32,0xa7,0x32,0x7b,0x49,0x0c,0x97,0xcc,0x98,0x8d +.byte 0xc3,0x29,0x72,0x1e,0x85,0x47,0x1b,0xa7,0x89,0x19,0x85,0xaa,0x3f,0x11,0x6a,0xea,0x61,0x84,0x07,0x9a,0xc8,0xb3,0x25,0xfe,0x72,0xca,0x83,0xa9,0xf0,0x9e,0x01,0xe4,0x9a,0xd6,0x1b,0x87,0xfc,0xd4,0x3a,0x04,0x34,0x8c,0x0b,0x46,0xbc,0xe9,0x3c,0x3f,0xd9,0x93,0xf1,0xca,0x41,0x0b,0xdb,0x28,0xe8,0x28,0x1b,0x84,0x36,0x16,0x84,0x22 +.byte 0x1e,0x1e,0x2b,0xb0,0xfb,0xa6,0xcc,0x95,0x31,0x46,0xd7,0xca,0xc2,0x8b,0xa3,0x3a,0xa5,0xb0,0xaf,0x52,0x66,0x53,0x39,0x5f,0x58,0xb5,0xdf,0x01,0x52,0x07,0xb4,0x82,0xdc,0xb7,0xf9,0x88,0xd8,0x77,0xf8,0x12,0x9d,0xe8,0x21,0xd7,0x0b,0x0f,0x57,0x90,0x40,0xb2,0x64,0x3f,0xce,0xa0,0xa3,0xfa,0x12,0x16,0xec,0x6d,0xcc,0xc7,0x2a,0x43 +.byte 0xc9,0xe7,0xb7,0x90,0x52,0x35,0x22,0x6d,0x46,0x99,0x1e,0x44,0x12,0xd6,0x0f,0xaf,0x5c,0x16,0xd3,0x7a,0xd6,0xb4,0xfe,0x20,0x26,0x11,0xe1,0xc6,0xa5,0x10,0xfd,0x9f,0x0c,0x47,0xae,0x32,0x08,0x15,0x8f,0xef,0xef,0x4c,0x83,0xbc,0xbf,0x6a,0xe5,0xf5,0x69,0x11,0x4d,0x7d,0x47,0x1f,0x10,0x58,0x61,0xb0,0x0d,0x98,0x67,0xc0,0x99,0x3a +.byte 0x2d,0x9a,0x5b,0xd5,0x37,0xe7,0xe5,0xd4,0x56,0x96,0x69,0xf8,0x53,0x7e,0x24,0x70,0x51,0x01,0x83,0x8d,0x49,0x01,0x32,0x7d,0x4f,0x41,0x92,0x54,0x9c,0x15,0xf1,0x3c,0x05,0x32,0x28,0x0d,0x0f,0x67,0xbe,0x65,0xfa,0x1b,0xa3,0xd0,0x28,0x18,0xb8,0x84,0xfe,0x6a,0x30,0xea,0xb9,0x00,0xb1,0x10,0x7c,0xa2,0x94,0x4f,0x86,0x18,0xdd,0xb4 +.byte 0x80,0x18,0x48,0x18,0xe1,0x56,0x70,0x7d,0x5c,0x3b,0xe5,0xd7,0x88,0x66,0x57,0xe3,0xe1,0x04,0x4c,0x68,0x5b,0x64,0x4d,0x0d,0x30,0x76,0x26,0xaa,0x84,0x0e,0xe0,0xed,0x53,0x62,0x20,0x33,0xaf,0x45,0x42,0x40,0x47,0x01,0x15,0xc9,0x0b,0x27,0x7c,0x68,0x4d,0x55,0xc4,0x6a,0x5f,0x96,0x9f,0x96,0x67,0xae,0x13,0x1c,0x84,0x52,0x33,0x41 +.byte 0x80,0xfc,0xae,0xb6,0xb1,0x8c,0xc3,0x19,0x80,0xa8,0x5f,0xe5,0x8c,0xd0,0xa8,0xb4,0x58,0xc9,0x48,0x29,0xab,0x11,0xd1,0x09,0xc6,0x20,0x98,0x4c,0xdb,0xa4,0x83,0x5c,0x26,0x51,0xce,0x80,0xe5,0xc4,0x9b,0xae,0xba,0x8e,0x99,0x4e,0xa4,0xff,0xdc,0x99,0x4c,0x02,0xa0,0x42,0x80,0xca,0xd7,0xea,0x6a,0x58,0x31,0xdb,0x16,0xd8,0x4d,0xab +.byte 0x03,0x2e,0x3a,0xdc,0xe9,0x07,0xfb,0xfb,0x5b,0x57,0x67,0x2a,0x7b,0xdc,0xc1,0x66,0xd1,0x31,0x3a,0x03,0x87,0xd8,0x66,0xda,0xa1,0x24,0x00,0x26,0xc0,0x26,0x78,0xf8,0x59,0x13,0x3f,0x34,0x08,0x35,0x45,0xbd,0x45,0x4f,0x89,0x65,0x97,0xdb,0xe6,0x1e,0x09,0x6e,0x23,0x2a,0xc4,0xf5,0x6a,0x74,0x28,0xb0,0xae,0x8c,0xfb,0x49,0x35,0x99 +.byte 0x06,0x30,0xc6,0xb2,0x8c,0xcd,0x8b,0x41,0xea,0xf2,0x04,0x18,0x29,0x25,0x1b,0x32,0x42,0x45,0xb5,0x92,0x42,0xb4,0x33,0xd2,0x90,0x31,0x08,0xcd,0x35,0x5d,0x50,0x64,0xa8,0x93,0xfd,0xa5,0xfd,0x32,0xbd,0xe8,0x13,0x1c,0x48,0x5c,0x14,0x70,0x03,0x92,0x0f,0x12,0x86,0xf6,0x6c,0xcd,0xc6,0xec,0xbf,0x8e,0x85,0x28,0x1d,0x1c,0x63,0x3f +.byte 0x81,0x93,0xd4,0x80,0x3c,0x29,0x0b,0x63,0xfe,0x87,0xa6,0x24,0xd6,0x3e,0x62,0xb6,0xd9,0xb0,0x58,0xf1,0x41,0x36,0xc7,0x47,0x8b,0xfd,0x4b,0x91,0x4e,0x5d,0x41,0x44,0xb0,0x65,0x3d,0x9e,0x3b,0x70,0x01,0xcc,0x7d,0x77,0xf0,0x23,0xd9,0xca,0x5f,0xda,0xa1,0x8c,0x71,0x11,0x91,0x7d,0x36,0xf5,0xc9,0xcd,0xf4,0x34,0x5f,0x69,0x57,0xd6 +.byte 0x33,0x4c,0xb2,0xe1,0x38,0x5f,0x86,0x3c,0x57,0x7b,0x2e,0x99,0x05,0x80,0x63,0xc4,0x77,0x69,0x06,0xc2,0x47,0x44,0xca,0x17,0x27,0x1d,0x55,0x34,0x02,0xd0,0x89,0x3a,0x3b,0x79,0xf0,0x86,0xd7,0x6b,0x01,0x9c,0xc7,0xa8,0xde,0xdb,0xdf,0x49,0xd1,0xb9,0x11,0xaf,0x7e,0x22,0x8b,0x5d,0xb5,0x0b,0xdc,0xd0,0x36,0xe6,0x9d,0x85,0x41,0x4a +.byte 0x35,0xf0,0xe1,0xcd,0xce,0x7b,0xd1,0xd6,0x00,0xdd,0xb6,0xe4,0x06,0x3e,0x66,0xe9,0x2b,0xa8,0x44,0x0d,0x18,0xd4,0xbc,0xfb,0x3c,0x58,0x6c,0x11,0xe9,0xdc,0x19,0x14,0x08,0x27,0x23,0x0c,0xd0,0xf9,0x97,0xaf,0x97,0x07,0x02,0x1a,0x5e,0xcd,0xae,0xd2,0x80,0x96,0x16,0x49,0xc3,0xfc,0xda,0x25,0x12,0x20,0xe1,0xc0,0x68,0x90,0x4b,0x30 +.byte 0x2d,0x06,0x53,0x2c,0x57,0x63,0x4a,0x7a,0xf6,0xc8,0x5a,0xb7,0x58,0x8c,0x13,0xfe,0x43,0xb3,0xf8,0x25,0x3e,0x7a,0x25,0x3e,0x1d,0x7f,0x8f,0x5e,0xdb,0xad,0x99,0x83,0xfc,0xd9,0x0a,0xdf,0xb5,0x19,0x1c,0x2c,0xf6,0xe8,0x06,0xbe,0xc0,0x9f,0x7e,0x0f,0x95,0xaa,0xac,0x09,0xdc,0x8c,0x37,0xcf,0x35,0x35,0x95,0x62,0xf1,0xff,0x96,0x1c +.byte 0x77,0xe9,0x53,0x7e,0x12,0x56,0x2d,0x4e,0x3e,0x1f,0xdb,0x1d,0x71,0x0e,0xdc,0xf7,0x65,0xb1,0x78,0x7f,0xe4,0xba,0xbf,0x7f,0x6c,0xcb,0x73,0xd3,0xe8,0xd9,0xce,0xfb,0xdb,0x48,0x87,0xe0,0x10,0x00,0x74,0xcb,0xdf,0x32,0xa8,0xdd,0x83,0x24,0x49,0xda,0x86,0x38,0x1c,0x2c,0x93,0x09,0x8a,0x26,0xbb,0x34,0x21,0x1d,0xac,0xb5,0x16,0xae +.byte 0xd8,0xcb,0x94,0x04,0xd6,0xbc,0xde,0x9c,0x70,0x28,0xa5,0x1a,0x15,0x5e,0x35,0xe4,0xe6,0x53,0xea,0x9c,0x3b,0x0c,0x36,0x3b,0x80,0x13,0x28,0x1d,0xc7,0x1a,0xa8,0x8e,0x9e,0x09,0xce,0x5d,0x50,0xd3,0xc7,0x6f,0x3a,0x75,0xa5,0x84,0x1c,0x08,0x66,0xe6,0x05,0xda,0x8b,0xf1,0x4b,0x5c,0xe2,0xc7,0x0f,0xa1,0xf1,0x47,0x02,0xf4,0xa7,0x24 +.byte 0xf3,0x0e,0x2c,0xa9,0xae,0x67,0xdf,0xce,0x30,0x88,0x4a,0x9a,0x39,0x4a,0x97,0x64,0xa8,0x30,0x53,0xf9,0x47,0x66,0x5c,0x19,0x1c,0xfb,0x2f,0x05,0x89,0x4f,0xfe,0x25,0xe7,0xed,0xed,0x17,0x5a,0x86,0xeb,0x25,0xee,0xe4,0x09,0x88,0x05,0x49,0x20,0x54,0x4b,0x7f,0x3e,0xb5,0x23,0x85,0xa9,0x66,0x61,0x73,0xe0,0x61,0x94,0xc6,0xe5,0x29 +.byte 0xb4,0xe1,0x6f,0xa4,0x4d,0x50,0x56,0x2e,0x30,0x75,0x51,0x5d,0xdd,0xa2,0x68,0x56,0x67,0xd8,0xec,0x2d,0x2a,0xfd,0x49,0xc5,0xbc,0xae,0x2f,0x6b,0xc7,0x8d,0x2e,0xca,0x91,0x35,0xe8,0xea,0x65,0xe9,0x9c,0x65,0xaf,0x8e,0xd5,0x16,0xdf,0xac,0x44,0x1e,0xb6,0x16,0xf0,0xb6,0x33,0x6a,0xe6,0x96,0x0f,0x85,0x2e,0xa1,0xaa,0x6a,0xe0,0x12 +.byte 0x0c,0xaa,0x7d,0xae,0xf7,0xe3,0xb2,0x4c,0x3c,0x10,0xc6,0x87,0x8e,0x87,0xfb,0xac,0xf7,0xd7,0x7a,0x2e,0x9a,0x7a,0xa7,0x4f,0xf0,0x75,0xce,0xbd,0xc3,0xe6,0x79,0x1d,0x56,0xab,0xff,0x56,0xfe,0x69,0xbd,0xcf,0x15,0x27,0x64,0x3c,0x83,0x1c,0x08,0xb0,0x91,0x60,0x67,0xe7,0x27,0x44,0x49,0x22,0x78,0xd5,0x1a,0xc8,0x3b,0x35,0x9b,0xa5 +.byte 0x53,0xce,0xde,0x04,0xd2,0x3e,0x67,0x48,0xaf,0x54,0xdf,0x9c,0xf7,0xb9,0xd4,0xe3,0xb6,0x85,0x02,0x68,0x21,0x10,0xdb,0xb5,0xca,0x11,0xa2,0x7c,0xcf,0x13,0x41,0x7a,0xfd,0xe9,0x0a,0x3c,0x53,0xd6,0x07,0xf2,0xdd,0xe2,0x7c,0x16,0xf0,0x44,0x3f,0x5d,0x34,0x09,0x7c,0x7b,0x21,0x8c,0x8e,0xdb,0x0d,0xc5,0x73,0xce,0x61,0xce,0x17,0x46 +.byte 0x6c,0x14,0x07,0xb5,0x70,0x80,0xf0,0x29,0x7c,0x13,0x41,0x2d,0x8e,0xdc,0x53,0xc2,0xbf,0xf0,0xc2,0xfb,0x59,0xa0,0x66,0x5f,0x25,0xda,0x17,0x5f,0xac,0xab,0x75,0x1b,0xc7,0x61,0x87,0x53,0x80,0x2e,0x11,0x4e,0x04,0x48,0xf9,0xee,0x54,0xe6,0x69,0x69,0x57,0xc2,0x46,0xd8,0xb3,0x2e,0x7b,0xc8,0xa5,0xd0,0xb2,0x5e,0xd4,0x6b,0x9b,0x1a +.byte 0xd6,0x79,0x9d,0x99,0xa6,0xbb,0x4d,0xca,0x74,0x2c,0x3d,0xd4,0x86,0xd0,0x64,0xd4,0x81,0x49,0x76,0x42,0xb8,0xf9,0x2c,0x52,0xe7,0x77,0x37,0x31,0xbb,0x2e,0x5b,0x38,0x81,0x01,0x2c,0x27,0x28,0xcb,0x0c,0xba,0xfa,0x8a,0x9a,0x45,0x51,0xa2,0xde,0xf2,0x7b,0xe6,0x65,0xec,0x5b,0x2d,0xe8,0x55,0x8e,0xb4,0x7f,0xf8,0x1a,0x66,0x3a,0x5f +.byte 0x06,0x10,0x15,0xb2,0x3d,0xb2,0x36,0x6e,0x9f,0x8e,0xe2,0x4c,0x78,0xe5,0x3a,0xac,0x21,0x16,0x20,0x30,0x0f,0x51,0x56,0xcb,0x53,0xca,0x70,0x3c,0xa2,0x3f,0x37,0x06,0x6c,0x70,0xec,0xf4,0x3d,0x7c,0x77,0xa0,0x61,0xc7,0x0e,0x26,0x9f,0x25,0xc0,0xf2,0x28,0xdb,0x57,0xbe,0xe6,0x4e,0x9c,0x4d,0x2e,0x48,0x50,0xc2,0xd4,0xfd,0x5e,0x52 +.byte 0x3f,0xd0,0x82,0xd1,0xd4,0x53,0xad,0x42,0x38,0xb1,0x02,0xd6,0xa0,0x34,0x7a,0xb4,0xb3,0xdd,0x91,0x12,0xf4,0x91,0xc9,0xa2,0x35,0x2d,0xdc,0x97,0xa1,0xdb,0x82,0xe7,0x92,0x99,0x66,0x13,0x99,0x20,0x95,0x1f,0x47,0x64,0x80,0x5e,0x5f,0x74,0x6b,0xa6,0xca,0x47,0x0b,0x24,0x72,0xa6,0x27,0xe7,0x56,0x61,0xa7,0x8e,0x62,0xa4,0xff,0x8e +.byte 0x29,0xf8,0x09,0xa4,0xbb,0x70,0x97,0x8a,0x39,0xe8,0x65,0xc8,0x52,0x23,0x9d,0xbf,0x10,0xe8,0x7d,0xbc,0x3c,0xc4,0x8b,0x1e,0x5c,0x75,0x94,0x24,0x62,0x3f,0x5b,0x2b,0x9a,0x08,0x00,0x78,0xfd,0x28,0x44,0x12,0x62,0x2a,0x6f,0x47,0x9d,0x57,0xb0,0x4e,0x3b,0xcd,0x01,0x7d,0x6e,0x62,0xe3,0x99,0x9c,0xae,0x6e,0xe2,0x70,0x7a,0x32,0xb4 +.byte 0xc1,0x19,0xb1,0x03,0x6b,0x92,0x89,0x4f,0x37,0xaf,0x36,0xee,0x5e,0x03,0x31,0x8c,0x41,0x27,0x17,0x21,0xdf,0xe4,0x34,0x97,0x8d,0xe7,0x41,0x47,0xf2,0x80,0x51,0x41,0x01,0xe4,0x0c,0x1a,0x09,0xfc,0x07,0xc3,0x94,0x07,0x6f,0xa7,0x6c,0xff,0x32,0x21,0xa5,0x01,0x8c,0xa2,0x88,0x3c,0xc8,0x57,0xe8,0x68,0x19,0x4a,0x46,0x7a,0x36,0xd2 +.byte 0x75,0x8e,0xc5,0xa4,0x84,0x91,0x13,0x7f,0xdd,0x2b,0x3c,0x2e,0xc4,0x92,0x29,0xb3,0x60,0x74,0xc8,0x81,0x58,0x0e,0xad,0x6a,0x9d,0xaa,0x81,0x49,0x26,0x0f,0xd4,0x2a,0x39,0xdd,0x4d,0x2b,0x13,0xdb,0x2e,0x72,0xe6,0x45,0x99,0xeb,0xe6,0xe5,0xd5,0x76,0xd4,0x19,0xd8,0xd7,0xa9,0x1f,0xce,0x7f,0xc4,0x1c,0x9e,0x6f,0x68,0x32,0xb1,0x26 +.byte 0xc4,0xb6,0x4e,0x9f,0xbf,0xdc,0xe0,0xde,0x54,0x9b,0xe0,0x04,0x03,0xae,0xc9,0xce,0x3a,0xcb,0x93,0xad,0xcc,0x1f,0x46,0xf6,0xbb,0xff,0x40,0x52,0x9c,0x64,0x97,0x5a,0x6f,0x8d,0x28,0x45,0x1c,0xf6,0x8b,0xcb,0xb9,0x38,0xb8,0x00,0xee,0xec,0xac,0x68,0x3f,0x50,0xcb,0x36,0x6e,0x97,0xfd,0xa5,0x1d,0x29,0x6e,0xfa,0x9f,0x4b,0x83,0xcd +.byte 0x0d,0x34,0xf3,0x1e,0x3f,0x0f,0x2e,0x89,0xeb,0xf7,0x8e,0x5f,0xe0,0x3b,0x39,0xd2,0xe8,0x87,0xe3,0xe7,0xe9,0xd0,0x1b,0x32,0x03,0x6b,0x3c,0x75,0x7d,0xe2,0x5c,0x3c,0x42,0xb4,0x46,0x69,0x0b,0xaf,0x0a,0x5d,0x1a,0x83,0x0b,0x0e,0x3c,0x5a,0x36,0xbd,0x5d,0xb6,0xad,0x4c,0xdd,0xf1,0x8d,0xbf,0x2b,0x70,0x8e,0xbc,0x92,0x95,0x1b,0x0f +.byte 0xed,0x3f,0xae,0x9e,0xa2,0x5a,0x50,0xe4,0xda,0xde,0x04,0x51,0x31,0xac,0xa4,0x0b,0x94,0xcc,0x14,0x87,0x59,0xa8,0x30,0x09,0xe6,0x46,0xb9,0x07,0x3e,0x1a,0xbf,0x5a,0x23,0x32,0xfb,0x60,0x63,0x24,0x25,0x12,0xf6,0x3e,0x2d,0xd0,0x8b,0x88,0x9b,0xe9,0x2d,0xab,0xf5,0xaf,0xba,0xbc,0xfe,0xab,0xb2,0x61,0x7a,0x7c,0xbb,0x28,0x6b,0x86 +.byte 0xe5,0xa2,0x9c,0x2c,0x5a,0x23,0x12,0x11,0xe5,0x72,0xe8,0x7b,0x6b,0x40,0xf1,0x91,0x37,0x3b,0x47,0x75,0x65,0xac,0x4d,0x22,0x59,0x75,0x13,0xb0,0x73,0xff,0x59,0xd1,0x1b,0xcc,0x05,0x1f,0xf2,0xc8,0x50,0x83,0xf1,0x28,0x38,0x0b,0xc3,0xa0,0x3b,0xe3,0x86,0xbb,0x9c,0x7e,0xc1,0xe9,0xcc,0xd9,0xb8,0x2b,0x05,0xf3,0x6f,0xc7,0x9d,0xaf +.byte 0x7b,0xb7,0x38,0x41,0xa3,0x50,0x8f,0x92,0xe0,0x63,0x35,0xb3,0x95,0x9f,0x80,0xf8,0x75,0xbb,0xf3,0x2b,0x0e,0xaf,0x32,0x6e,0xff,0xeb,0x79,0xca,0xbf,0x1c,0x4f,0x6c,0x9c,0x06,0xb2,0xeb,0x99,0x57,0x1f,0xf6,0x64,0x0b,0x81,0x57,0xba,0xf4,0x32,0x1e,0x77,0x37,0x55,0xb7,0xbc,0xba,0x70,0x0b,0x0d,0xdd,0x95,0x41,0xb5,0x17,0x5b,0x14 +.byte 0x10,0x9d,0x14,0x52,0x83,0x65,0x0a,0xf4,0x55,0xca,0xf8,0xbe,0xa6,0x3a,0xa0,0x6e,0xcc,0x83,0x84,0x65,0xb4,0x1c,0x7e,0x40,0xdd,0x32,0x36,0x5a,0x23,0x17,0x7d,0xb5,0xb9,0x38,0x48,0x5c,0x6f,0x23,0x54,0x0e,0x93,0x74,0x27,0x0f,0xfd,0x58,0xc1,0x97,0x26,0x78,0x9a,0xd3,0x85,0xc5,0xb2,0xb3,0x44,0xb7,0x36,0x85,0x69,0xde,0x3b,0xa1 +.byte 0x2b,0x11,0xef,0x75,0xfc,0xaa,0x92,0xf1,0xf1,0x72,0xa0,0x5f,0x33,0xf6,0x0b,0x72,0xdb,0xce,0x6c,0x2a,0x15,0x76,0x40,0xd4,0x85,0xff,0x96,0xe1,0x48,0xe1,0x27,0x8f,0x74,0xf3,0xfa,0xa1,0xb7,0x2a,0xb6,0x41,0x90,0x92,0x7e,0xfa,0xfc,0xad,0xa3,0x94,0x91,0x77,0xf1,0x8f,0xee,0xa2,0x64,0x47,0x01,0xb3,0x01,0x99,0x05,0xe7,0x31,0x4a +.byte 0xe8,0xd2,0x65,0x40,0x21,0xc4,0x83,0x8e,0xc9,0x89,0xda,0x16,0x7b,0xe0,0xcb,0xc0,0xc0,0x3d,0x37,0x18,0x66,0xe9,0x70,0x86,0x0b,0x6c,0xe8,0x65,0x44,0xce,0x3a,0xcd,0x84,0x1e,0xce,0x0e,0xe3,0xf9,0x77,0x12,0xfb,0xe6,0x92,0x8b,0x0d,0x7e,0x15,0x7a,0x34,0x94,0x2a,0xa7,0xc5,0x35,0xa4,0xfc,0xbe,0xa3,0x13,0x70,0xe4,0x6b,0x2f,0x71 +.byte 0x31,0xef,0xdb,0x79,0x44,0xf2,0x77,0xc7,0xc9,0x0d,0x1a,0x7b,0xff,0x34,0xf8,0xc9,0xe8,0xc9,0xc2,0xe0,0x0c,0x9e,0xd6,0xb4,0x7a,0xdb,0x1f,0x65,0xb8,0xd4,0x92,0xbf,0x7f,0x06,0x44,0xe3,0xb4,0xd8,0x14,0xe3,0x9b,0x49,0x81,0x12,0xec,0x7d,0x01,0xe2,0x50,0x2c,0x0e,0xfd,0x4b,0x84,0x3b,0x4d,0x89,0x1d,0x2e,0x4b,0xe9,0xda,0xa5,0x3f +.byte 0x19,0xc2,0x53,0x36,0x5d,0xd8,0xdc,0x6e,0xc3,0x48,0x8f,0x09,0xd5,0x95,0x4b,0x0c,0x7c,0x00,0x15,0x33,0x8e,0x1d,0x0c,0xdf,0x32,0x3b,0x93,0x1f,0xf5,0x49,0x4f,0xfd,0x8b,0x64,0xe7,0x96,0xaf,0x2f,0xc8,0xea,0xab,0x91,0x53,0x29,0xe3,0x31,0x0a,0x1c,0x6e,0xe0,0xbb,0x81,0x11,0x83,0xe0,0x07,0xfb,0x29,0x11,0x0f,0x0d,0x85,0xd4,0x61 +.byte 0x3c,0x75,0xbb,0x8a,0x23,0xb6,0xa0,0x7f,0xa4,0xbb,0x11,0xd4,0x75,0xde,0x27,0xe5,0xeb,0x11,0x5d,0x02,0xfe,0x5c,0x62,0x60,0x0f,0x6f,0x45,0x9b,0xfb,0xb7,0x32,0xa8,0x1c,0xd6,0xff,0x43,0x7b,0x53,0xee,0xa4,0x1f,0xf2,0xba,0xb6,0xb7,0xb7,0x39,0x18,0x85,0x79,0x77,0x27,0x30,0x26,0xe4,0xef,0xd1,0x39,0xc9,0xa2,0x0d,0x50,0xd7,0xef +.byte 0x9e,0xd8,0x8e,0xd2,0x74,0x1a,0x3f,0x99,0x24,0xf4,0x8b,0x4d,0x02,0x63,0x18,0x3a,0xaf,0x26,0xef,0xfc,0x1d,0xfe,0x46,0xc1,0x55,0xd7,0x92,0x65,0x2f,0xe7,0x4f,0x47,0xa8,0x2f,0x5d,0x47,0x67,0xeb,0x62,0x1d,0x69,0xa6,0x0e,0x51,0x1d,0x2c,0xed,0x6e,0x94,0xe9,0x48,0x4c,0x22,0xc2,0x93,0x79,0x6f,0x1b,0xc2,0x93,0x61,0x3d,0x8b,0xba +.byte 0xcb,0xe9,0x4a,0x88,0x5e,0x19,0x50,0x14,0xfe,0xda,0x3f,0x4d,0x47,0x54,0xfc,0x1c,0x09,0x77,0x37,0x30,0xfe,0x75,0x9f,0xdd,0xa4,0x74,0x04,0x04,0x88,0xe0,0xac,0x93,0x64,0x6f,0xbf,0x50,0xd8,0xf0,0xf7,0xa0,0xfa,0x98,0x49,0xfa,0xf7,0x6e,0xcf,0xa2,0xbf,0xb6,0x07,0x15,0x0e,0x4e,0x21,0x74,0x0a,0xa6,0xa3,0x67,0xce,0xf9,0x3b,0xd6 +.byte 0x4c,0xc8,0x43,0xe3,0x3b,0x3b,0x6a,0x86,0x62,0x3f,0x5a,0xf3,0x3f,0xf9,0xeb,0xbf,0xa3,0x2a,0x83,0x8a,0x70,0x8f,0x01,0x65,0x17,0x9a,0xa6,0x26,0x3b,0x09,0x06,0x22,0x19,0xed,0xd7,0x25,0x4b,0xd2,0x9a,0x30,0xfe,0x1c,0x82,0x68,0x16,0x04,0x0e,0x04,0x8f,0xc6,0x92,0xbe,0xe4,0x43,0x98,0x1d,0x3b,0x10,0x15,0x5b,0xef,0x4e,0x60,0x5e +.byte 0x6b,0xc9,0xde,0xb8,0x47,0x02,0x86,0x45,0x39,0x7a,0x1a,0xef,0x67,0x28,0xc5,0x40,0x73,0x2a,0xa7,0x12,0x9d,0x58,0x3a,0x34,0xc2,0xda,0x34,0xb0,0x48,0xd9,0x34,0xcd,0x18,0xe9,0x76,0x41,0x78,0x8f,0xe5,0xe8,0x3d,0xb2,0x01,0x3b,0x84,0xd1,0xca,0x5e,0x26,0x1d,0x8c,0xea,0xe1,0x46,0xa3,0xf9,0x11,0xac,0x0d,0x98,0x9f,0xd3,0x46,0x79 +.byte 0xff,0xad,0x99,0x32,0x63,0x96,0xbc,0x57,0x39,0x16,0xce,0x06,0x7e,0x63,0x78,0x7b,0x86,0x92,0x1a,0xe1,0x45,0xc0,0x73,0xe1,0xec,0xfc,0x88,0x8f,0xf8,0x36,0x0f,0x54,0x76,0x02,0x98,0x49,0x40,0xb9,0xef,0xd8,0x13,0x68,0xf5,0x1d,0x0a,0x98,0x65,0x21,0xc5,0x1a,0x22,0x4e,0x8e,0xad,0xa9,0x52,0x57,0xc4,0xc6,0xa8,0x48,0x01,0x7a,0x78 +.byte 0xc9,0xfc,0xdd,0xf3,0xc3,0x83,0xc0,0x06,0xb5,0x56,0x84,0xe2,0x0c,0x6b,0x80,0xd9,0x59,0xa1,0x3d,0xe3,0x56,0xf0,0xe3,0x3f,0x93,0x61,0xf7,0x8c,0x6b,0x40,0x65,0x6e,0x01,0xc2,0xa1,0xc1,0xb8,0x9b,0x15,0x6c,0xa1,0x18,0x4a,0x6c,0x8b,0x18,0x2d,0x8e,0x71,0x7a,0xa1,0x26,0xc1,0x4b,0xac,0x0c,0xca,0x08,0x33,0xef,0x35,0x33,0x63,0xeb +.byte 0x57,0x6e,0x7e,0x36,0xe0,0x31,0xad,0x10,0x76,0xb7,0x45,0xd9,0x3a,0x92,0x66,0x69,0x13,0x61,0x59,0x87,0xfd,0x6b,0xf1,0x46,0x0a,0x7a,0x3f,0x29,0x88,0x5b,0x7d,0xef,0x07,0x02,0xa8,0xa1,0xdc,0xd4,0x0e,0x77,0x8f,0x68,0x32,0xbd,0x8e,0xd6,0x0b,0xe4,0xd1,0x75,0xc1,0xb0,0x74,0x6c,0x0e,0xc3,0x46,0x79,0x36,0x3b,0x5f,0x0e,0xa0,0xad +.byte 0x28,0x8c,0xcb,0x01,0x8e,0x58,0x14,0x09,0xf1,0xd4,0x3b,0x2e,0xdc,0xbf,0x37,0x95,0x26,0xda,0xb6,0xcf,0xc8,0xa1,0xd4,0xec,0x72,0xf3,0x44,0xf5,0x4e,0x27,0x9b,0x2e,0x7c,0xfa,0x37,0x16,0x1d,0x7f,0x90,0x86,0xae,0x96,0x3b,0xe1,0xda,0xf7,0xc4,0x54,0x0b,0x51,0x7e,0x83,0xbe,0xed,0xd6,0x5f,0xd2,0x6d,0xbb,0xd3,0xc6,0x53,0x95,0x65 +.byte 0x3d,0x19,0xc2,0xc5,0xdf,0x47,0x00,0x2c,0x4b,0x2d,0xec,0x32,0xd5,0x28,0xb5,0x30,0xe0,0x79,0x15,0x2e,0xab,0x97,0xa8,0xcf,0xc5,0x40,0x98,0x30,0x22,0x9f,0xbc,0xdb,0x65,0x06,0xfc,0x58,0xe5,0x55,0x5b,0xe2,0xf8,0x6e,0xc6,0xfc,0xec,0x6c,0x14,0xd2,0xe3,0x9a,0x71,0x8a,0x61,0xea,0x39,0xc6,0x77,0x94,0xdf,0x7b,0x99,0x71,0xdd,0x18 +.byte 0xc6,0x03,0x2d,0x49,0xf6,0xc3,0xe8,0x2b,0x7e,0x3f,0x28,0xfc,0xc8,0xa1,0xb0,0x15,0x31,0x7e,0x83,0xb8,0x14,0x34,0x0e,0x7f,0xde,0x74,0x7b,0xbf,0xb7,0x8e,0xd9,0x31,0x90,0x16,0xb6,0x57,0x14,0x4a,0xc6,0x67,0x3d,0xb9,0x46,0x92,0xf2,0xf9,0x94,0x36,0x2b,0xd6,0x1f,0x84,0xa5,0x8c,0x0f,0xd9,0x8c,0x5f,0x97,0x7a,0x7b,0xff,0xc9,0xf5 +.byte 0x5e,0x13,0x5f,0x19,0x58,0xba,0xa6,0xe8,0x29,0xf4,0xb8,0x7e,0x98,0xb7,0xef,0x1b,0x00,0xe8,0x90,0x8f,0x86,0x4c,0xe0,0x51,0x13,0x8b,0xa1,0x37,0x40,0x38,0x51,0x2f,0x5a,0x9b,0x63,0x8f,0xce,0x9a,0x97,0x07,0x0d,0x8e,0xce,0xb1,0x66,0x89,0x78,0xca,0xa6,0x0c,0x20,0xc4,0xf1,0xe3,0xab,0xe2,0x1c,0x83,0x2b,0x46,0x97,0xe8,0x8f,0x94 +.byte 0xb4,0x71,0x40,0xde,0xa1,0x05,0x4b,0xed,0xbf,0x0c,0x46,0xe1,0x25,0xf1,0xd0,0x5a,0xdb,0x9c,0x2a,0x09,0x03,0x80,0x24,0xc1,0x22,0x02,0xa5,0xde,0xf6,0x4c,0xbc,0x93,0x37,0xa9,0x28,0xb3,0x92,0x19,0xa8,0x3f,0x71,0x90,0x62,0x78,0xaa,0x9a,0x0c,0xab,0x50,0xaf,0x89,0x2b,0xf1,0xf4,0x12,0xbd,0xc9,0xd5,0xee,0x64,0x8b,0x48,0x21,0xd6 +.byte 0xa1,0xa1,0xf2,0x68,0x4a,0xf8,0x06,0x3e,0x20,0x31,0x66,0xb7,0x2f,0x64,0x01,0x5a,0x46,0x14,0x85,0xfb,0xde,0x04,0xc3,0xe4,0xd6,0x25,0x14,0xa0,0xbe,0x4d,0x39,0xd8,0xe0,0x9b,0xb7,0x6b,0x00,0xe6,0x46,0xfb,0xcc,0xa8,0xad,0x67,0x12,0x2c,0x53,0x2c,0xb6,0x9f,0x6e,0xfe,0xbc,0xcc,0x2c,0xa8,0x09,0x17,0x00,0x8e,0xf1,0xf4,0x3e,0xa9 +.byte 0x92,0x4d,0x83,0xe6,0x3c,0xf0,0xd3,0x1c,0xaf,0x84,0x2c,0x59,0x7e,0xda,0x1e,0xfd,0x7d,0xf3,0xef,0x93,0x05,0x03,0xb0,0x76,0x69,0xb5,0x51,0xa8,0x65,0x8f,0x8a,0xf8,0x55,0x92,0x08,0xfe,0xbf,0xc1,0x95,0x98,0x58,0xb1,0xd3,0xb6,0x78,0x4f,0x2f,0x25,0xcb,0x9d,0x32,0x4f,0xa6,0xcc,0xf8,0x36,0xff,0x72,0xb3,0x93,0x3d,0xd8,0x0b,0xe6 +.byte 0xc6,0xf6,0xed,0xcc,0x2a,0xa5,0x44,0x6e,0xe2,0x2d,0x6e,0x02,0xb4,0x7c,0x24,0x7f,0x57,0x02,0x84,0x61,0x8e,0xbd,0x32,0x4e,0x41,0x92,0x01,0x1b,0x8b,0x1d,0xd1,0x1e,0x31,0xc1,0x4c,0x5b,0x0c,0xa7,0x48,0x52,0x67,0xc2,0xd9,0xdc,0x86,0x9d,0xbd,0x6c,0x19,0x95,0x00,0xf0,0xd4,0x47,0xaf,0xfe,0x5d,0xa5,0x81,0xbd,0x1b,0x42,0x62,0xce +.byte 0x18,0x1b,0xa3,0x6f,0xf5,0x0b,0xb7,0x6a,0x3d,0xe3,0xcc,0x41,0x27,0xcd,0x49,0x4b,0xe5,0x2b,0xc4,0x28,0xfa,0xbe,0xd5,0x7e,0xb7,0xac,0xab,0x64,0x3b,0xe3,0x87,0xb1,0x33,0x8b,0xa8,0xe5,0x75,0xce,0x61,0x57,0x89,0xad,0x5f,0x61,0xdd,0x7c,0x06,0x2a,0x3f,0x50,0xb8,0x7e,0xd2,0xfb,0x32,0x83,0x07,0xd4,0xc5,0x3f,0xad,0x64,0x59,0x1f +.byte 0x21,0x59,0x6f,0x1b,0xd7,0x40,0x89,0x28,0x18,0xac,0xca,0xee,0x92,0x1c,0x0d,0x88,0x98,0x7a,0x75,0x68,0xe0,0xe2,0x96,0xda,0x88,0xb3,0xc6,0x21,0x02,0x34,0xfa,0xae,0x0b,0x38,0xcf,0x1c,0x6c,0x7a,0xc9,0xd9,0x5f,0xf0,0x4c,0x73,0xfd,0xe6,0x14,0xf3,0x39,0xed,0xbc,0x28,0x2f,0xf8,0x79,0x02,0x39,0x05,0xf3,0x6a,0x88,0xd9,0x03,0xe2 +.byte 0xb9,0x65,0x81,0x3a,0x34,0x80,0x3f,0x17,0x37,0x1e,0xe8,0x7d,0x41,0x49,0xfb,0x70,0x5d,0x58,0x3a,0x71,0x7b,0x3e,0xd3,0x83,0x0b,0x1b,0x11,0xfc,0x53,0xce,0xc6,0xc4,0x39,0x55,0xbe,0xbe,0x32,0xa5,0x88,0xab,0xcd,0x38,0x78,0x3e,0x52,0xaf,0x64,0x42,0x10,0xc3,0x70,0x81,0x76,0xe9,0x7d,0x8e,0x46,0x41,0xca,0x2c,0x0c,0x4c,0x30,0xd3 +.byte 0xca,0x38,0xa3,0x97,0x2e,0x0f,0xa5,0x18,0x3b,0xaa,0x0f,0x00,0x75,0x35,0x9c,0xcd,0x28,0x83,0xd4,0xa7,0x7c,0xb9,0xcd,0xb5,0x55,0x29,0x4c,0x14,0xcd,0xfc,0x8f,0xaf,0x7d,0x69,0x4f,0xf7,0x0f,0xed,0x7c,0xa5,0x79,0x9d,0x36,0xbb,0x72,0xbc,0xf2,0x14,0xfd,0xf0,0x04,0x2a,0x89,0x1e,0xf7,0x80,0x4c,0x5e,0xb8,0xc1,0xdb,0xfa,0x3c,0x27 +.byte 0xbb,0x30,0x08,0x2b,0xd2,0xf8,0xdb,0xe0,0x8c,0x00,0xe4,0xca,0xa9,0xde,0xb0,0x14,0x5b,0xec,0x6b,0xe6,0x5c,0x90,0x17,0x02,0x59,0x5f,0x5f,0x51,0xf8,0x30,0x10,0x11,0xc4,0xdf,0x37,0x30,0x32,0xb1,0x4d,0x49,0xfe,0x82,0x87,0xd2,0x42,0xf5,0x38,0x76,0xf9,0xa5,0x28,0xfc,0x14,0xb2,0xe0,0x72,0x82,0xde,0xc8,0x47,0x9e,0x8f,0x8a,0xb5 +.byte 0x85,0x44,0x42,0x12,0xc6,0xc0,0xa5,0x60,0x5a,0x27,0xd0,0x36,0x14,0x7b,0x2a,0x83,0x98,0x92,0x08,0xe9,0x03,0xc9,0xc3,0xd3,0x36,0x97,0xba,0x5e,0xd5,0x51,0xcc,0x44,0xeb,0x81,0x76,0xae,0x28,0x94,0x0b,0xf6,0xc7,0xeb,0xae,0x61,0x6f,0x7b,0x34,0xb5,0x8c,0x5f,0x31,0xb6,0x23,0xe3,0xe7,0x4b,0x60,0xe6,0xba,0x8d,0x0e,0xd1,0xb2,0x37 +.byte 0x72,0x3d,0xc1,0x75,0x9b,0x5e,0xcb,0x0f,0xf9,0xe4,0xdb,0x82,0x4c,0xc4,0x37,0xef,0x9d,0xde,0x16,0x85,0xe9,0xc2,0x03,0xd8,0x5b,0xa1,0xff,0xfa,0xd4,0xd7,0x5c,0x34,0xb6,0x1e,0x25,0x96,0xf5,0x8b,0xc3,0xee,0x16,0x1f,0xf8,0x55,0x4e,0x1c,0x83,0x80,0x77,0x1d,0x4f,0xb6,0x95,0x1c,0x91,0x7d,0x50,0x25,0xf4,0x2a,0x5d,0x2e,0xc7,0x8a +.byte 0x14,0xf8,0xb9,0xbc,0xab,0x5b,0xcd,0x47,0xb5,0xaf,0x85,0xc0,0x34,0x27,0x7d,0x6a,0x8c,0x84,0x8a,0xae,0x68,0x60,0x0e,0xa1,0x45,0xf7,0x83,0x66,0x91,0x69,0x30,0xed,0x26,0x5e,0xf5,0x48,0x6b,0x20,0xb3,0x11,0x50,0xf7,0x70,0x9d,0x10,0x50,0x44,0x87,0xfe,0x96,0x5c,0xc6,0xa4,0xa4,0xed,0x5e,0x7f,0x3d,0x90,0x19,0xbe,0x31,0xa3,0xdd +.byte 0x44,0xbb,0x9b,0x51,0x5a,0x06,0x1d,0x2e,0xd7,0xef,0xd1,0x81,0xb6,0xec,0xc6,0x89,0xfb,0x13,0xc5,0x21,0xef,0x9a,0x1a,0x48,0xf2,0xf8,0xb3,0xa3,0xec,0x7f,0x85,0xc1,0xc6,0x8c,0x5f,0xa9,0x30,0x38,0x25,0x1e,0x8d,0xcf,0x18,0x24,0xef,0x5a,0x9a,0x14,0x31,0xc0,0x2c,0x88,0xa5,0x3f,0x50,0x8b,0xb1,0xda,0x5d,0x26,0xd9,0xd3,0x81,0xb1 +.byte 0xec,0xf0,0x42,0x88,0xd0,0x81,0x51,0xf9,0x1b,0xbc,0x43,0xa4,0x37,0xf1,0xd7,0x90,0x21,0x7e,0xa0,0x3e,0x63,0xfb,0x21,0xfa,0x12,0xfb,0xde,0xc7,0xbf,0xb3,0x58,0xe7,0x76,0x42,0x20,0x01,0x3d,0x66,0x80,0xf1,0xb8,0xaf,0xfa,0x7d,0x96,0x89,0x36,0x48,0x95,0xd9,0x6e,0x6d,0xe6,0x4f,0xff,0x2a,0x47,0x61,0xf2,0x04,0xb7,0x83,0x14,0xce +.byte 0x0a,0x3c,0x73,0x17,0x50,0x88,0x03,0x25,0x4a,0xe3,0x13,0x55,0x8b,0x7e,0x50,0x38,0xfc,0x14,0x0b,0x04,0x8e,0xa8,0x5b,0xd6,0x72,0x20,0x60,0xe9,0xaa,0x22,0x82,0x11,0xc6,0xc4,0xd7,0xb9,0xc8,0x0c,0x7e,0x05,0xfb,0x90,0xe4,0x9c,0x28,0x89,0x29,0x99,0x63,0x4d,0xec,0x7b,0x50,0xbd,0xd8,0xa3,0x5b,0x50,0x77,0x19,0x81,0x92,0xce,0x82 + +.align 5 +Lpoly: +.quad 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 +LRR: // 2^512 mod P precomputed for NIST P256 polynomial +.quad 0x0000000000000003,0xfffffffbffffffff,0xfffffffffffffffe,0x00000004fffffffd +Lone_mont: +.quad 0x0000000000000001,0xffffffff00000000,0xffffffffffffffff,0x00000000fffffffe +Lone: +.quad 1,0,0,0 +Lord: +.quad 0xf3b9cac2fc632551,0xbce6faada7179e84,0xffffffffffffffff,0xffffffff00000000 +LordK: +.quad 0xccd1c8aaee00bc4f +.byte 69,67,80,95,78,73,83,84,90,50,53,54,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 + +// void ecp_nistz256_to_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl _ecp_nistz256_to_mont + +.align 6 +_ecp_nistz256_to_mont: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldr x3,LRR // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + ldr x12,Lpoly+8 + ldr x13,Lpoly+24 + adr x2,LRR // &bp[0] + + bl __ecp_nistz256_mul_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 +.long 0xd50323bf // autiasp + ret + + +// void ecp_nistz256_from_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl _ecp_nistz256_from_mont + +.align 4 +_ecp_nistz256_from_mont: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + mov x3,#1 // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + ldr x12,Lpoly+8 + ldr x13,Lpoly+24 + adr x2,Lone // &bp[0] + + bl __ecp_nistz256_mul_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 +.long 0xd50323bf // autiasp + ret + + +// void ecp_nistz256_mul_mont(BN_ULONG x0[4],const BN_ULONG x1[4], +// const BN_ULONG x2[4]); +.globl _ecp_nistz256_mul_mont + +.align 4 +_ecp_nistz256_mul_mont: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldr x3,[x2] // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + ldr x12,Lpoly+8 + ldr x13,Lpoly+24 + + bl __ecp_nistz256_mul_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 +.long 0xd50323bf // autiasp + ret + + +// void ecp_nistz256_sqr_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl _ecp_nistz256_sqr_mont + +.align 4 +_ecp_nistz256_sqr_mont: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-32]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + ldr x12,Lpoly+8 + ldr x13,Lpoly+24 + + bl __ecp_nistz256_sqr_mont + + ldp x19,x20,[sp,#16] + ldp x29,x30,[sp],#32 +.long 0xd50323bf // autiasp + ret + + +// void ecp_nistz256_add(BN_ULONG x0[4],const BN_ULONG x1[4], +// const BN_ULONG x2[4]); +.globl _ecp_nistz256_add + +.align 4 +_ecp_nistz256_add: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ldp x14,x15,[x1] + ldp x8,x9,[x2] + ldp x16,x17,[x1,#16] + ldp x10,x11,[x2,#16] + ldr x12,Lpoly+8 + ldr x13,Lpoly+24 + + bl __ecp_nistz256_add + + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + + +// void ecp_nistz256_div_by_2(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl _ecp_nistz256_div_by_2 + +.align 4 +_ecp_nistz256_div_by_2: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ldp x14,x15,[x1] + ldp x16,x17,[x1,#16] + ldr x12,Lpoly+8 + ldr x13,Lpoly+24 + + bl __ecp_nistz256_div_by_2 + + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + + +// void ecp_nistz256_mul_by_2(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl _ecp_nistz256_mul_by_2 + +.align 4 +_ecp_nistz256_mul_by_2: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ldp x14,x15,[x1] + ldp x16,x17,[x1,#16] + ldr x12,Lpoly+8 + ldr x13,Lpoly+24 + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + + bl __ecp_nistz256_add // ret = a+a // 2*a + + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + + +// void ecp_nistz256_mul_by_3(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl _ecp_nistz256_mul_by_3 + +.align 4 +_ecp_nistz256_mul_by_3: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ldp x14,x15,[x1] + ldp x16,x17,[x1,#16] + ldr x12,Lpoly+8 + ldr x13,Lpoly+24 + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + mov x4,x14 + mov x5,x15 + mov x6,x16 + mov x7,x17 + + bl __ecp_nistz256_add // ret = a+a // 2*a + + mov x8,x4 + mov x9,x5 + mov x10,x6 + mov x11,x7 + + bl __ecp_nistz256_add // ret += a // 2*a+a=3*a + + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + + +// void ecp_nistz256_sub(BN_ULONG x0[4],const BN_ULONG x1[4], +// const BN_ULONG x2[4]); +.globl _ecp_nistz256_sub + +.align 4 +_ecp_nistz256_sub: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ldp x14,x15,[x1] + ldp x16,x17,[x1,#16] + ldr x12,Lpoly+8 + ldr x13,Lpoly+24 + + bl __ecp_nistz256_sub_from + + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + + +// void ecp_nistz256_neg(BN_ULONG x0[4],const BN_ULONG x1[4]); +.globl _ecp_nistz256_neg + +.align 4 +_ecp_nistz256_neg: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + mov x2,x1 + mov x14,xzr // a = 0 + mov x15,xzr + mov x16,xzr + mov x17,xzr + ldr x12,Lpoly+8 + ldr x13,Lpoly+24 + + bl __ecp_nistz256_sub_from + + ldp x29,x30,[sp],#16 +.long 0xd50323bf // autiasp + ret + + +// note that __ecp_nistz256_mul_mont expects a[0-3] input pre-loaded +// to x4-x7 and b[0] - to x3 + +.align 4 +__ecp_nistz256_mul_mont: + mul x14,x4,x3 // a[0]*b[0] + umulh x8,x4,x3 + + mul x15,x5,x3 // a[1]*b[0] + umulh x9,x5,x3 + + mul x16,x6,x3 // a[2]*b[0] + umulh x10,x6,x3 + + mul x17,x7,x3 // a[3]*b[0] + umulh x11,x7,x3 + ldr x3,[x2,#8] // b[1] + + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adc x19,xzr,x11 + mov x20,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + ldr x3,[x2,#8*(1+1)] // b[1+1] + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + ldr x3,[x2,#8*(2+1)] // b[2+1] + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + mul x8,x4,x3 // lo(a[0]*b[i]) + adcs x15,x16,x9 + mul x9,x5,x3 // lo(a[1]*b[i]) + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + mul x10,x6,x3 // lo(a[2]*b[i]) + adcs x17,x19,x11 + mul x11,x7,x3 // lo(a[3]*b[i]) + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts of multiplication + umulh x8,x4,x3 // hi(a[0]*b[i]) + adcs x15,x15,x9 + umulh x9,x5,x3 // hi(a[1]*b[i]) + adcs x16,x16,x10 + umulh x10,x6,x3 // hi(a[2]*b[i]) + adcs x17,x17,x11 + umulh x11,x7,x3 // hi(a[3]*b[i]) + adc x19,x19,xzr + adds x15,x15,x8 // accumulate high parts of multiplication + lsl x8,x14,#32 + adcs x16,x16,x9 + lsr x9,x14,#32 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + // last reduction + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + adcs x17,x19,x11 + adc x19,x20,xzr + + adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x19,xzr // did it borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret + + +// note that __ecp_nistz256_sqr_mont expects a[0-3] input pre-loaded +// to x4-x7 + +.align 4 +__ecp_nistz256_sqr_mont: + // | | | | | |a1*a0| | + // | | | | |a2*a0| | | + // | |a3*a2|a3*a0| | | | + // | | | |a2*a1| | | | + // | | |a3*a1| | | | | + // *| | | | | | | | 2| + // +|a3*a3|a2*a2|a1*a1|a0*a0| + // |--+--+--+--+--+--+--+--| + // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is , i.e. follow + // + // "can't overflow" below mark carrying into high part of + // multiplication result, which can't overflow, because it + // can never be all ones. + + mul x15,x5,x4 // a[1]*a[0] + umulh x9,x5,x4 + mul x16,x6,x4 // a[2]*a[0] + umulh x10,x6,x4 + mul x17,x7,x4 // a[3]*a[0] + umulh x19,x7,x4 + + adds x16,x16,x9 // accumulate high parts of multiplication + mul x8,x6,x5 // a[2]*a[1] + umulh x9,x6,x5 + adcs x17,x17,x10 + mul x10,x7,x5 // a[3]*a[1] + umulh x11,x7,x5 + adc x19,x19,xzr // can't overflow + + mul x20,x7,x6 // a[3]*a[2] + umulh x1,x7,x6 + + adds x9,x9,x10 // accumulate high parts of multiplication + mul x14,x4,x4 // a[0]*a[0] + adc x10,x11,xzr // can't overflow + + adds x17,x17,x8 // accumulate low parts of multiplication + umulh x4,x4,x4 + adcs x19,x19,x9 + mul x9,x5,x5 // a[1]*a[1] + adcs x20,x20,x10 + umulh x5,x5,x5 + adc x1,x1,xzr // can't overflow + + adds x15,x15,x15 // acc[1-6]*=2 + mul x10,x6,x6 // a[2]*a[2] + adcs x16,x16,x16 + umulh x6,x6,x6 + adcs x17,x17,x17 + mul x11,x7,x7 // a[3]*a[3] + adcs x19,x19,x19 + umulh x7,x7,x7 + adcs x20,x20,x20 + adcs x1,x1,x1 + adc x2,xzr,xzr + + adds x15,x15,x4 // +a[i]*a[i] + adcs x16,x16,x9 + adcs x17,x17,x5 + adcs x19,x19,x10 + adcs x20,x20,x6 + lsl x8,x14,#32 + adcs x1,x1,x11 + lsr x9,x14,#32 + adc x2,x2,x7 + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + lsl x8,x14,#32 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + lsr x9,x14,#32 + adc x17,x11,xzr // can't overflow + subs x10,x14,x8 // "*0xffff0001" + sbc x11,x14,x9 + adds x14,x15,x8 // +=acc[0]<<96 and omit acc[0] + adcs x15,x16,x9 + adcs x16,x17,x10 // +=acc[0]*0xffff0001 + adc x17,x11,xzr // can't overflow + + adds x14,x14,x19 // accumulate upper half + adcs x15,x15,x20 + adcs x16,x16,x1 + adcs x17,x17,x2 + adc x19,xzr,xzr + + adds x8,x14,#1 // subs x8,x14,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x19,xzr // did it borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret + + +// Note that __ecp_nistz256_add expects both input vectors pre-loaded to +// x4-x7 and x8-x11. This is done because it's used in multiple +// contexts, e.g. in multiplication by 2 and 3... + +.align 4 +__ecp_nistz256_add: + adds x14,x14,x8 // ret = a+b + adcs x15,x15,x9 + adcs x16,x16,x10 + adcs x17,x17,x11 + adc x1,xzr,xzr // zap x1 + + adds x8,x14,#1 // subs x8,x4,#-1 // tmp = ret-modulus + sbcs x9,x15,x12 + sbcs x10,x16,xzr + sbcs x11,x17,x13 + sbcs xzr,x1,xzr // did subtraction borrow? + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ret + + + +.align 4 +__ecp_nistz256_sub_from: + ldp x8,x9,[x2] + ldp x10,x11,[x2,#16] + subs x14,x14,x8 // ret = a-b + sbcs x15,x15,x9 + sbcs x16,x16,x10 + sbcs x17,x17,x11 + sbc x1,xzr,xzr // zap x1 + + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adc x11,x17,x13 + cmp x1,xzr // did subtraction borrow? + + csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret + csel x15,x15,x9,eq + csel x16,x16,x10,eq + stp x14,x15,[x0] + csel x17,x17,x11,eq + stp x16,x17,[x0,#16] + + ret + + + +.align 4 +__ecp_nistz256_sub_morf: + ldp x8,x9,[x2] + ldp x10,x11,[x2,#16] + subs x14,x8,x14 // ret = b-a + sbcs x15,x9,x15 + sbcs x16,x10,x16 + sbcs x17,x11,x17 + sbc x1,xzr,xzr // zap x1 + + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = ret+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adc x11,x17,x13 + cmp x1,xzr // did subtraction borrow? + + csel x14,x14,x8,eq // ret = borrow ? ret+modulus : ret + csel x15,x15,x9,eq + csel x16,x16,x10,eq + stp x14,x15,[x0] + csel x17,x17,x11,eq + stp x16,x17,[x0,#16] + + ret + + + +.align 4 +__ecp_nistz256_div_by_2: + subs x8,x14,#1 // adds x8,x4,#-1 // tmp = a+modulus + adcs x9,x15,x12 + adcs x10,x16,xzr + adcs x11,x17,x13 + adc x1,xzr,xzr // zap x1 + tst x14,#1 // is a even? + + csel x14,x14,x8,eq // ret = even ? a : a+modulus + csel x15,x15,x9,eq + csel x16,x16,x10,eq + csel x17,x17,x11,eq + csel x1,xzr,x1,eq + + lsr x14,x14,#1 // ret >>= 1 + orr x14,x14,x15,lsl#63 + lsr x15,x15,#1 + orr x15,x15,x16,lsl#63 + lsr x16,x16,#1 + orr x16,x16,x17,lsl#63 + lsr x17,x17,#1 + stp x14,x15,[x0] + orr x17,x17,x1,lsl#63 + stp x16,x17,[x0,#16] + + ret + +.globl _ecp_nistz256_point_double + +.align 5 +_ecp_nistz256_point_double: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + sub sp,sp,#32*4 + +Ldouble_shortcut: + ldp x14,x15,[x1,#32] + mov x21,x0 + ldp x16,x17,[x1,#48] + mov x22,x1 + ldr x12,Lpoly+8 + mov x8,x14 + ldr x13,Lpoly+24 + mov x9,x15 + ldp x4,x5,[x22,#64] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[x22,#64+16] + add x0,sp,#0 + bl __ecp_nistz256_add // p256_mul_by_2(S, in_y); + + add x0,sp,#64 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Zsqr, in_z); + + ldp x8,x9,[x22] + ldp x10,x11,[x22,#16] + mov x4,x14 // put Zsqr aside for p256_sub + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x0,sp,#32 + bl __ecp_nistz256_add // p256_add(M, Zsqr, in_x); + + add x2,x22,#0 + mov x14,x4 // restore Zsqr + mov x15,x5 + ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont + mov x16,x6 + mov x17,x7 + ldp x6,x7,[sp,#0+16] + add x0,sp,#64 + bl __ecp_nistz256_sub_morf // p256_sub(Zsqr, in_x, Zsqr); + + add x0,sp,#0 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(S, S); + + ldr x3,[x22,#32] + ldp x4,x5,[x22,#64] + ldp x6,x7,[x22,#64+16] + add x2,x22,#32 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(tmp0, in_z, in_y); + + mov x8,x14 + mov x9,x15 + ldp x4,x5,[sp,#0] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[sp,#0+16] + add x0,x21,#64 + bl __ecp_nistz256_add // p256_mul_by_2(res_z, tmp0); + + add x0,sp,#96 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(tmp0, S); + + ldr x3,[sp,#64] // forward load for p256_mul_mont + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x0,x21,#32 + bl __ecp_nistz256_div_by_2 // p256_div_by_2(res_y, tmp0); + + add x2,sp,#64 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(M, M, Zsqr); + + mov x8,x14 // duplicate M + mov x9,x15 + mov x10,x16 + mov x11,x17 + mov x4,x14 // put M aside + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x0,sp,#32 + bl __ecp_nistz256_add + mov x8,x4 // restore M + mov x9,x5 + ldr x3,[x22] // forward load for p256_mul_mont + mov x10,x6 + ldp x4,x5,[sp,#0] + mov x11,x7 + ldp x6,x7,[sp,#0+16] + bl __ecp_nistz256_add // p256_mul_by_3(M, M); + + add x2,x22,#0 + add x0,sp,#0 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, in_x); + + mov x8,x14 + mov x9,x15 + ldp x4,x5,[sp,#32] // forward load for p256_sqr_mont + mov x10,x16 + mov x11,x17 + ldp x6,x7,[sp,#32+16] + add x0,sp,#96 + bl __ecp_nistz256_add // p256_mul_by_2(tmp0, S); + + add x0,x21,#0 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(res_x, M); + + add x2,sp,#96 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, tmp0); + + add x2,sp,#0 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(S, S, res_x); + + ldr x3,[sp,#32] + mov x4,x14 // copy S + mov x5,x15 + mov x6,x16 + mov x7,x17 + add x2,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S, S, M); + + add x2,x21,#32 + add x0,x21,#32 + bl __ecp_nistz256_sub_from // p256_sub(res_y, S, res_y); + + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x29,x30,[sp],#96 +.long 0xd50323bf // autiasp + ret + +.globl _ecp_nistz256_point_add + +.align 5 +_ecp_nistz256_point_add: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#32*12 + + ldp x4,x5,[x2,#64] // in2_z + ldp x6,x7,[x2,#64+16] + mov x21,x0 + mov x22,x1 + mov x23,x2 + ldr x12,Lpoly+8 + ldr x13,Lpoly+24 + orr x8,x4,x5 + orr x10,x6,x7 + orr x25,x8,x10 + cmp x25,#0 + csetm x25,ne // ~in2infty + add x0,sp,#192 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z2sqr, in2_z); + + ldp x4,x5,[x22,#64] // in1_z + ldp x6,x7,[x22,#64+16] + orr x8,x4,x5 + orr x10,x6,x7 + orr x24,x8,x10 + cmp x24,#0 + csetm x24,ne // ~in1infty + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); + + ldr x3,[x23,#64] + ldp x4,x5,[sp,#192] + ldp x6,x7,[sp,#192+16] + add x2,x23,#64 + add x0,sp,#320 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S1, Z2sqr, in2_z); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,x22,#64 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); + + ldr x3,[x22,#32] + ldp x4,x5,[sp,#320] + ldp x6,x7,[sp,#320+16] + add x2,x22,#32 + add x0,sp,#320 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S1, S1, in1_y); + + ldr x3,[x23,#32] + ldp x4,x5,[sp,#352] + ldp x6,x7,[sp,#352+16] + add x2,x23,#32 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); + + add x2,sp,#320 + ldr x3,[sp,#192] // forward load for p256_mul_mont + ldp x4,x5,[x22] + ldp x6,x7,[x22,#16] + add x0,sp,#160 + bl __ecp_nistz256_sub_from // p256_sub(R, S2, S1); + + orr x14,x14,x15 // see if result is zero + orr x16,x16,x17 + orr x26,x14,x16 // ~is_equal(S1,S2) + + add x2,sp,#192 + add x0,sp,#256 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U1, in1_x, Z2sqr); + + ldr x3,[sp,#128] + ldp x4,x5,[x23] + ldp x6,x7,[x23,#16] + add x2,sp,#128 + add x0,sp,#288 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in2_x, Z1sqr); + + add x2,sp,#256 + ldp x4,x5,[sp,#160] // forward load for p256_sqr_mont + ldp x6,x7,[sp,#160+16] + add x0,sp,#96 + bl __ecp_nistz256_sub_from // p256_sub(H, U2, U1); + + orr x14,x14,x15 // see if result is zero + orr x16,x16,x17 + orr x14,x14,x16 // ~is_equal(U1,U2) + + mvn x27,x24 // -1/0 -> 0/-1 + mvn x28,x25 // -1/0 -> 0/-1 + orr x14,x14,x27 + orr x14,x14,x28 + orr x14,x14,x26 + cbnz x14,Ladd_proceed // if(~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2)) + +Ladd_double: + mov x1,x22 + mov x0,x21 + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + add sp,sp,#32*(12-4) // difference in stack frames + b Ldouble_shortcut + +.align 4 +Ladd_proceed: + add x0,sp,#192 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#96] + ldp x6,x7,[sp,#96+16] + add x2,x22,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); + + ldp x4,x5,[sp,#96] + ldp x6,x7,[sp,#96+16] + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); + + ldr x3,[x23,#64] + ldp x4,x5,[sp,#64] + ldp x6,x7,[sp,#64+16] + add x2,x23,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, res_z, in2_z); + + ldr x3,[sp,#96] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,sp,#96 + add x0,sp,#224 + bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); + + ldr x3,[sp,#128] + ldp x4,x5,[sp,#256] + ldp x6,x7,[sp,#256+16] + add x2,sp,#128 + add x0,sp,#288 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, U1, Hsqr); + + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + add x0,sp,#128 + bl __ecp_nistz256_add // p256_mul_by_2(Hsqr, U2); + + add x2,sp,#192 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); + + add x2,sp,#224 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); + + add x2,sp,#288 + ldr x3,[sp,#224] // forward load for p256_mul_mont + ldp x4,x5,[sp,#320] + ldp x6,x7,[sp,#320+16] + add x0,sp,#32 + bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); + + add x2,sp,#224 + add x0,sp,#352 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S1, Hcub); + + ldr x3,[sp,#160] + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x2,sp,#160 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); + + add x2,sp,#352 + bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); + + ldp x4,x5,[sp,#0] // res + ldp x6,x7,[sp,#0+16] + ldp x8,x9,[x23] // in2 + ldp x10,x11,[x23,#16] + ldp x14,x15,[x22,#0] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#0+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+0+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+0+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#0+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#0+48] + stp x14,x15,[x21,#0] + stp x16,x17,[x21,#0+16] + ldp x14,x15,[x22,#32] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#32+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+32+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+32+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#32+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#32+48] + stp x14,x15,[x21,#32] + stp x16,x17,[x21,#32+16] + ldp x14,x15,[x22,#64] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#64+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + csel x14,x8,x14,ne + csel x15,x9,x15,ne + csel x16,x10,x16,ne + csel x17,x11,x17,ne + stp x14,x15,[x21,#64] + stp x16,x17,[x21,#64+16] + +Ladd_done: + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.long 0xd50323bf // autiasp + ret + +.globl _ecp_nistz256_point_add_affine + +.align 5 +_ecp_nistz256_point_add_affine: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + sub sp,sp,#32*10 + + mov x21,x0 + mov x22,x1 + mov x23,x2 + ldr x12,Lpoly+8 + ldr x13,Lpoly+24 + + ldp x4,x5,[x1,#64] // in1_z + ldp x6,x7,[x1,#64+16] + orr x8,x4,x5 + orr x10,x6,x7 + orr x24,x8,x10 + cmp x24,#0 + csetm x24,ne // ~in1infty + + ldp x14,x15,[x2] // in2_x + ldp x16,x17,[x2,#16] + ldp x8,x9,[x2,#32] // in2_y + ldp x10,x11,[x2,#48] + orr x14,x14,x15 + orr x16,x16,x17 + orr x8,x8,x9 + orr x10,x10,x11 + orr x14,x14,x16 + orr x8,x8,x10 + orr x25,x14,x8 + cmp x25,#0 + csetm x25,ne // ~in2infty + + add x0,sp,#128 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); + + mov x4,x14 + mov x5,x15 + mov x6,x16 + mov x7,x17 + ldr x3,[x23] + add x2,x23,#0 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, Z1sqr, in2_x); + + add x2,x22,#0 + ldr x3,[x22,#64] // forward load for p256_mul_mont + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x0,sp,#160 + bl __ecp_nistz256_sub_from // p256_sub(H, U2, in1_x); + + add x2,x22,#64 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, Z1sqr, in1_z); + + ldr x3,[x22,#64] + ldp x4,x5,[sp,#160] + ldp x6,x7,[sp,#160+16] + add x2,x22,#64 + add x0,sp,#64 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_z, H, in1_z); + + ldr x3,[x23,#32] + ldp x4,x5,[sp,#128] + ldp x6,x7,[sp,#128+16] + add x2,x23,#32 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, S2, in2_y); + + add x2,x22,#32 + ldp x4,x5,[sp,#160] // forward load for p256_sqr_mont + ldp x6,x7,[sp,#160+16] + add x0,sp,#192 + bl __ecp_nistz256_sub_from // p256_sub(R, S2, in1_y); + + add x0,sp,#224 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Hsqr, H); + + ldp x4,x5,[sp,#192] + ldp x6,x7,[sp,#192+16] + add x0,sp,#288 + bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Rsqr, R); + + ldr x3,[sp,#160] + ldp x4,x5,[sp,#224] + ldp x6,x7,[sp,#224+16] + add x2,sp,#160 + add x0,sp,#256 + bl __ecp_nistz256_mul_mont // p256_mul_mont(Hcub, Hsqr, H); + + ldr x3,[x22] + ldp x4,x5,[sp,#224] + ldp x6,x7,[sp,#224+16] + add x2,x22,#0 + add x0,sp,#96 + bl __ecp_nistz256_mul_mont // p256_mul_mont(U2, in1_x, Hsqr); + + mov x8,x14 + mov x9,x15 + mov x10,x16 + mov x11,x17 + add x0,sp,#224 + bl __ecp_nistz256_add // p256_mul_by_2(Hsqr, U2); + + add x2,sp,#288 + add x0,sp,#0 + bl __ecp_nistz256_sub_morf // p256_sub(res_x, Rsqr, Hsqr); + + add x2,sp,#256 + bl __ecp_nistz256_sub_from // p256_sub(res_x, res_x, Hcub); + + add x2,sp,#96 + ldr x3,[x22,#32] // forward load for p256_mul_mont + ldp x4,x5,[sp,#256] + ldp x6,x7,[sp,#256+16] + add x0,sp,#32 + bl __ecp_nistz256_sub_morf // p256_sub(res_y, U2, res_x); + + add x2,x22,#32 + add x0,sp,#128 + bl __ecp_nistz256_mul_mont // p256_mul_mont(S2, in1_y, Hcub); + + ldr x3,[sp,#192] + ldp x4,x5,[sp,#32] + ldp x6,x7,[sp,#32+16] + add x2,sp,#192 + add x0,sp,#32 + bl __ecp_nistz256_mul_mont // p256_mul_mont(res_y, res_y, R); + + add x2,sp,#128 + bl __ecp_nistz256_sub_from // p256_sub(res_y, res_y, S2); + + ldp x4,x5,[sp,#0] // res + ldp x6,x7,[sp,#0+16] + ldp x8,x9,[x23] // in2 + ldp x10,x11,[x23,#16] + ldp x14,x15,[x22,#0] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#0+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+0+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+0+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#0+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#0+48] + stp x14,x15,[x21,#0] + stp x16,x17,[x21,#0+16] + adr x23,Lone_mont-64 + ldp x14,x15,[x22,#32] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#32+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + ldp x4,x5,[sp,#0+32+32] // res + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + ldp x6,x7,[sp,#0+32+48] + csel x14,x8,x14,ne + csel x15,x9,x15,ne + ldp x8,x9,[x23,#32+32] // in2 + csel x16,x10,x16,ne + csel x17,x11,x17,ne + ldp x10,x11,[x23,#32+48] + stp x14,x15,[x21,#32] + stp x16,x17,[x21,#32+16] + ldp x14,x15,[x22,#64] // in1 + cmp x24,#0 // ~, remember? + ldp x16,x17,[x22,#64+16] + csel x8,x4,x8,ne + csel x9,x5,x9,ne + csel x10,x6,x10,ne + csel x11,x7,x11,ne + cmp x25,#0 // ~, remember? + csel x14,x8,x14,ne + csel x15,x9,x15,ne + csel x16,x10,x16,ne + csel x17,x11,x17,ne + stp x14,x15,[x21,#64] + stp x16,x17,[x21,#64+16] + + add sp,x29,#0 // destroy frame + ldp x19,x20,[x29,#16] + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x29,x30,[sp],#80 +.long 0xd50323bf // autiasp + ret + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_ord_mul_mont(uint64_t res[4], uint64_t a[4], +// uint64_t b[4]); +.globl _ecp_nistz256_ord_mul_mont + +.align 4 +_ecp_nistz256_ord_mul_mont: + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + adr x23,Lord + ldr x3,[x2] // bp[0] + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + + ldp x12,x13,[x23,#0] + ldp x21,x22,[x23,#16] + ldr x23,[x23,#32] + + mul x14,x4,x3 // a[0]*b[0] + umulh x8,x4,x3 + + mul x15,x5,x3 // a[1]*b[0] + umulh x9,x5,x3 + + mul x16,x6,x3 // a[2]*b[0] + umulh x10,x6,x3 + + mul x17,x7,x3 // a[3]*b[0] + umulh x19,x7,x3 + + mul x24,x14,x23 + + adds x15,x15,x8 // accumulate high parts of multiplication + adcs x16,x16,x9 + adcs x17,x17,x10 + adc x19,x19,xzr + mov x20,xzr + ldr x3,[x2,#8*1] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + ldr x3,[x2,#8*2] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + ldr x3,[x2,#8*3] // b[i] + + lsl x8,x24,#32 + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + mul x8,x4,x3 + adc x11,x11,xzr + mul x9,x5,x3 + + adds x14,x15,x10 + mul x10,x6,x3 + adcs x15,x16,x11 + mul x11,x7,x3 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + adds x14,x14,x8 // accumulate low parts + umulh x8,x4,x3 + adcs x15,x15,x9 + umulh x9,x5,x3 + adcs x16,x16,x10 + umulh x10,x6,x3 + adcs x17,x17,x11 + umulh x11,x7,x3 + adc x19,x19,xzr + mul x24,x14,x23 + adds x15,x15,x8 // accumulate high parts + adcs x16,x16,x9 + adcs x17,x17,x10 + adcs x19,x19,x11 + adc x20,xzr,xzr + lsl x8,x24,#32 // last reduction + subs x16,x16,x24 + lsr x9,x24,#32 + sbcs x17,x17,x8 + sbcs x19,x19,x9 + sbc x20,x20,xzr + + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adcs x17,x19,x24 + adc x19,x20,xzr + + subs x8,x14,x12 // ret -= modulus + sbcs x9,x15,x13 + sbcs x10,x16,x21 + sbcs x11,x17,x22 + sbcs xzr,x19,xzr + + csel x14,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x15,x15,x9,lo + csel x16,x16,x10,lo + stp x14,x15,[x0] + csel x17,x17,x11,lo + stp x16,x17,[x0,#16] + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldr x29,[sp],#64 + ret + + +//////////////////////////////////////////////////////////////////////// +// void ecp_nistz256_ord_sqr_mont(uint64_t res[4], uint64_t a[4], +// int rep); +.globl _ecp_nistz256_ord_sqr_mont + +.align 4 +_ecp_nistz256_ord_sqr_mont: + stp x29,x30,[sp,#-64]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + + adr x23,Lord + ldp x4,x5,[x1] + ldp x6,x7,[x1,#16] + + ldp x12,x13,[x23,#0] + ldp x21,x22,[x23,#16] + ldr x23,[x23,#32] + b Loop_ord_sqr + +.align 4 +Loop_ord_sqr: + sub x2,x2,#1 + //////////////////////////////////////////////////////////////// + // | | | | | |a1*a0| | + // | | | | |a2*a0| | | + // | |a3*a2|a3*a0| | | | + // | | | |a2*a1| | | | + // | | |a3*a1| | | | | + // *| | | | | | | | 2| + // +|a3*a3|a2*a2|a1*a1|a0*a0| + // |--+--+--+--+--+--+--+--| + // |A7|A6|A5|A4|A3|A2|A1|A0|, where Ax is , i.e. follow + // + // "can't overflow" below mark carrying into high part of + // multiplication result, which can't overflow, because it + // can never be all ones. + + mul x15,x5,x4 // a[1]*a[0] + umulh x9,x5,x4 + mul x16,x6,x4 // a[2]*a[0] + umulh x10,x6,x4 + mul x17,x7,x4 // a[3]*a[0] + umulh x19,x7,x4 + + adds x16,x16,x9 // accumulate high parts of multiplication + mul x8,x6,x5 // a[2]*a[1] + umulh x9,x6,x5 + adcs x17,x17,x10 + mul x10,x7,x5 // a[3]*a[1] + umulh x11,x7,x5 + adc x19,x19,xzr // can't overflow + + mul x20,x7,x6 // a[3]*a[2] + umulh x1,x7,x6 + + adds x9,x9,x10 // accumulate high parts of multiplication + mul x14,x4,x4 // a[0]*a[0] + adc x10,x11,xzr // can't overflow + + adds x17,x17,x8 // accumulate low parts of multiplication + umulh x4,x4,x4 + adcs x19,x19,x9 + mul x9,x5,x5 // a[1]*a[1] + adcs x20,x20,x10 + umulh x5,x5,x5 + adc x1,x1,xzr // can't overflow + + adds x15,x15,x15 // acc[1-6]*=2 + mul x10,x6,x6 // a[2]*a[2] + adcs x16,x16,x16 + umulh x6,x6,x6 + adcs x17,x17,x17 + mul x11,x7,x7 // a[3]*a[3] + adcs x19,x19,x19 + umulh x7,x7,x7 + adcs x20,x20,x20 + adcs x1,x1,x1 + adc x3,xzr,xzr + + adds x15,x15,x4 // +a[i]*a[i] + mul x24,x14,x23 + adcs x16,x16,x9 + adcs x17,x17,x5 + adcs x19,x19,x10 + adcs x20,x20,x6 + adcs x1,x1,x11 + adc x3,x3,x7 + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adc x17,xzr,x24 // can't overflow + mul x11,x14,x23 + lsl x8,x24,#32 + subs x15,x15,x24 + lsr x9,x24,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x11 + mul x10,x13,x11 + umulh x24,x13,x11 + + adcs x10,x10,x9 + adc x24,x24,xzr + + adds x14,x15,x10 + adcs x15,x16,x24 + adcs x16,x17,x11 + adc x17,xzr,x11 // can't overflow + mul x24,x14,x23 + lsl x8,x11,#32 + subs x15,x15,x11 + lsr x9,x11,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x24 + mul x10,x13,x24 + umulh x11,x13,x24 + + adcs x10,x10,x9 + adc x11,x11,xzr + + adds x14,x15,x10 + adcs x15,x16,x11 + adcs x16,x17,x24 + adc x17,xzr,x24 // can't overflow + mul x11,x14,x23 + lsl x8,x24,#32 + subs x15,x15,x24 + lsr x9,x24,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + subs xzr,x14,#1 + umulh x9,x12,x11 + mul x10,x13,x11 + umulh x24,x13,x11 + + adcs x10,x10,x9 + adc x24,x24,xzr + + adds x14,x15,x10 + adcs x15,x16,x24 + adcs x16,x17,x11 + adc x17,xzr,x11 // can't overflow + lsl x8,x11,#32 + subs x15,x15,x11 + lsr x9,x11,#32 + sbcs x16,x16,x8 + sbc x17,x17,x9 // can't borrow + adds x14,x14,x19 // accumulate upper half + adcs x15,x15,x20 + adcs x16,x16,x1 + adcs x17,x17,x3 + adc x19,xzr,xzr + + subs x8,x14,x12 // ret -= modulus + sbcs x9,x15,x13 + sbcs x10,x16,x21 + sbcs x11,x17,x22 + sbcs xzr,x19,xzr + + csel x4,x14,x8,lo // ret = borrow ? ret : ret-modulus + csel x5,x15,x9,lo + csel x6,x16,x10,lo + csel x7,x17,x11,lo + + cbnz x2,Loop_ord_sqr + + stp x4,x5,[x0] + stp x6,x7,[x0,#16] + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldr x29,[sp],#64 + ret + +// void ecp_nistz256_scatter_w5(void *x0,const P256_POINT *x1, +// int x2); +.globl _ecp_nistz256_scatter_w5 + +.align 4 +_ecp_nistz256_scatter_w5: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + add x0,x0,x2,lsl#2 + + ldp x4,x5,[x1] // X + ldp x6,x7,[x1,#16] + str w4,[x0,#64*0-4] + lsr x4,x4,#32 + str w5,[x0,#64*1-4] + lsr x5,x5,#32 + str w6,[x0,#64*2-4] + lsr x6,x6,#32 + str w7,[x0,#64*3-4] + lsr x7,x7,#32 + str w4,[x0,#64*4-4] + str w5,[x0,#64*5-4] + str w6,[x0,#64*6-4] + str w7,[x0,#64*7-4] + add x0,x0,#64*8 + + ldp x4,x5,[x1,#32] // Y + ldp x6,x7,[x1,#48] + str w4,[x0,#64*0-4] + lsr x4,x4,#32 + str w5,[x0,#64*1-4] + lsr x5,x5,#32 + str w6,[x0,#64*2-4] + lsr x6,x6,#32 + str w7,[x0,#64*3-4] + lsr x7,x7,#32 + str w4,[x0,#64*4-4] + str w5,[x0,#64*5-4] + str w6,[x0,#64*6-4] + str w7,[x0,#64*7-4] + add x0,x0,#64*8 + + ldp x4,x5,[x1,#64] // Z + ldp x6,x7,[x1,#80] + str w4,[x0,#64*0-4] + lsr x4,x4,#32 + str w5,[x0,#64*1-4] + lsr x5,x5,#32 + str w6,[x0,#64*2-4] + lsr x6,x6,#32 + str w7,[x0,#64*3-4] + lsr x7,x7,#32 + str w4,[x0,#64*4-4] + str w5,[x0,#64*5-4] + str w6,[x0,#64*6-4] + str w7,[x0,#64*7-4] + + ldr x29,[sp],#16 + ret + + +// void ecp_nistz256_gather_w5(P256_POINT *x0,const void *x1, +// int x2); +.globl _ecp_nistz256_gather_w5 + +.align 4 +_ecp_nistz256_gather_w5: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + cmp x2,xzr + csetm x3,ne + add x2,x2,x3 + add x1,x1,x2,lsl#2 + + ldr w4,[x1,#64*0] + ldr w5,[x1,#64*1] + ldr w6,[x1,#64*2] + ldr w7,[x1,#64*3] + ldr w8,[x1,#64*4] + ldr w9,[x1,#64*5] + ldr w10,[x1,#64*6] + ldr w11,[x1,#64*7] + add x1,x1,#64*8 + orr x4,x4,x8,lsl#32 + orr x5,x5,x9,lsl#32 + orr x6,x6,x10,lsl#32 + orr x7,x7,x11,lsl#32 + csel x4,x4,xzr,ne + csel x5,x5,xzr,ne + csel x6,x6,xzr,ne + csel x7,x7,xzr,ne + stp x4,x5,[x0] // X + stp x6,x7,[x0,#16] + + ldr w4,[x1,#64*0] + ldr w5,[x1,#64*1] + ldr w6,[x1,#64*2] + ldr w7,[x1,#64*3] + ldr w8,[x1,#64*4] + ldr w9,[x1,#64*5] + ldr w10,[x1,#64*6] + ldr w11,[x1,#64*7] + add x1,x1,#64*8 + orr x4,x4,x8,lsl#32 + orr x5,x5,x9,lsl#32 + orr x6,x6,x10,lsl#32 + orr x7,x7,x11,lsl#32 + csel x4,x4,xzr,ne + csel x5,x5,xzr,ne + csel x6,x6,xzr,ne + csel x7,x7,xzr,ne + stp x4,x5,[x0,#32] // Y + stp x6,x7,[x0,#48] + + ldr w4,[x1,#64*0] + ldr w5,[x1,#64*1] + ldr w6,[x1,#64*2] + ldr w7,[x1,#64*3] + ldr w8,[x1,#64*4] + ldr w9,[x1,#64*5] + ldr w10,[x1,#64*6] + ldr w11,[x1,#64*7] + orr x4,x4,x8,lsl#32 + orr x5,x5,x9,lsl#32 + orr x6,x6,x10,lsl#32 + orr x7,x7,x11,lsl#32 + csel x4,x4,xzr,ne + csel x5,x5,xzr,ne + csel x6,x6,xzr,ne + csel x7,x7,xzr,ne + stp x4,x5,[x0,#64] // Z + stp x6,x7,[x0,#80] + + ldr x29,[sp],#16 + ret + + +// void ecp_nistz256_scatter_w7(void *x0,const P256_POINT_AFFINE *x1, +// int x2); +.globl _ecp_nistz256_scatter_w7 + +.align 4 +_ecp_nistz256_scatter_w7: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + add x0,x0,x2 + mov x2,#64/8 +Loop_scatter_w7: + ldr x3,[x1],#8 + subs x2,x2,#1 + prfm pstl1strm,[x0,#4096+64*0] + prfm pstl1strm,[x0,#4096+64*1] + prfm pstl1strm,[x0,#4096+64*2] + prfm pstl1strm,[x0,#4096+64*3] + prfm pstl1strm,[x0,#4096+64*4] + prfm pstl1strm,[x0,#4096+64*5] + prfm pstl1strm,[x0,#4096+64*6] + prfm pstl1strm,[x0,#4096+64*7] + strb w3,[x0,#64*0] + lsr x3,x3,#8 + strb w3,[x0,#64*1] + lsr x3,x3,#8 + strb w3,[x0,#64*2] + lsr x3,x3,#8 + strb w3,[x0,#64*3] + lsr x3,x3,#8 + strb w3,[x0,#64*4] + lsr x3,x3,#8 + strb w3,[x0,#64*5] + lsr x3,x3,#8 + strb w3,[x0,#64*6] + lsr x3,x3,#8 + strb w3,[x0,#64*7] + add x0,x0,#64*8 + b.ne Loop_scatter_w7 + + ldr x29,[sp],#16 + ret + + +// void ecp_nistz256_gather_w7(P256_POINT_AFFINE *x0,const void *x1, +// int x2); +.globl _ecp_nistz256_gather_w7 + +.align 4 +_ecp_nistz256_gather_w7: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + cmp x2,xzr + csetm x3,ne + add x2,x2,x3 + add x1,x1,x2 + mov x2,#64/8 + nop +Loop_gather_w7: + ldrb w4,[x1,#64*0] + prfm pldl1strm,[x1,#4096+64*0] + subs x2,x2,#1 + ldrb w5,[x1,#64*1] + prfm pldl1strm,[x1,#4096+64*1] + ldrb w6,[x1,#64*2] + prfm pldl1strm,[x1,#4096+64*2] + ldrb w7,[x1,#64*3] + prfm pldl1strm,[x1,#4096+64*3] + ldrb w8,[x1,#64*4] + prfm pldl1strm,[x1,#4096+64*4] + ldrb w9,[x1,#64*5] + prfm pldl1strm,[x1,#4096+64*5] + ldrb w10,[x1,#64*6] + prfm pldl1strm,[x1,#4096+64*6] + ldrb w11,[x1,#64*7] + prfm pldl1strm,[x1,#4096+64*7] + add x1,x1,#64*8 + orr x4,x4,x5,lsl#8 + orr x6,x6,x7,lsl#8 + orr x8,x8,x9,lsl#8 + orr x4,x4,x6,lsl#16 + orr x10,x10,x11,lsl#8 + orr x4,x4,x8,lsl#32 + orr x4,x4,x10,lsl#48 + and x4,x4,x3 + str x4,[x0],#8 + b.ne Loop_gather_w7 + + ldr x29,[sp],#16 + ret + diff --git a/vere/ext/openssl/gen/macos-aarch64/crypto/modes/ghashv8-armx.S b/vere/ext/openssl/gen/macos-aarch64/crypto/modes/ghashv8-armx.S new file mode 100644 index 0000000..ccb4de5 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/crypto/modes/ghashv8-armx.S @@ -0,0 +1,552 @@ +#include "arm_arch.h" + +#if __ARM_MAX_ARCH__>=7 +.text + +.globl _gcm_init_v8 + +.align 4 +_gcm_init_v8: + ld1 {v17.2d},[x1] //load input H + movi v19.16b,#0xe1 + shl v19.2d,v19.2d,#57 //0xc2.0 + ext v3.16b,v17.16b,v17.16b,#8 + ushr v18.2d,v19.2d,#63 + dup v17.4s,v17.s[1] + ext v16.16b,v18.16b,v19.16b,#8 //t0=0xc2....01 + ushr v18.2d,v3.2d,#63 + sshr v17.4s,v17.4s,#31 //broadcast carry bit + and v18.16b,v18.16b,v16.16b + shl v3.2d,v3.2d,#1 + ext v18.16b,v18.16b,v18.16b,#8 + and v16.16b,v16.16b,v17.16b + orr v3.16b,v3.16b,v18.16b //H<<<=1 + eor v20.16b,v3.16b,v16.16b //twisted H + st1 {v20.2d},[x0],#16 //store Htable[0] + + //calculate H^2 + ext v16.16b,v20.16b,v20.16b,#8 //Karatsuba pre-processing + pmull v0.1q,v20.1d,v20.1d + eor v16.16b,v16.16b,v20.16b + pmull2 v2.1q,v20.2d,v20.2d + pmull v1.1q,v16.1d,v16.1d + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase + + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v22.16b,v0.16b,v18.16b + + ext v17.16b,v22.16b,v22.16b,#8 //Karatsuba pre-processing + eor v17.16b,v17.16b,v22.16b + ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed + st1 {v21.2d,v22.2d},[x0],#32 //store Htable[1..2] + //calculate H^3 and H^4 + pmull v0.1q,v20.1d, v22.1d + pmull v5.1q,v22.1d,v22.1d + pmull2 v2.1q,v20.2d, v22.2d + pmull2 v7.1q,v22.2d,v22.2d + pmull v1.1q,v16.1d,v17.1d + pmull v6.1q,v17.1d,v17.1d + + ext v16.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + ext v17.16b,v5.16b,v7.16b,#8 + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v16.16b + eor v4.16b,v5.16b,v7.16b + eor v6.16b,v6.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase + eor v6.16b,v6.16b,v4.16b + pmull v4.1q,v5.1d,v19.1d + + ins v2.d[0],v1.d[1] + ins v7.d[0],v6.d[1] + ins v1.d[1],v0.d[0] + ins v6.d[1],v5.d[0] + eor v0.16b,v1.16b,v18.16b + eor v5.16b,v6.16b,v4.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase + ext v4.16b,v5.16b,v5.16b,#8 + pmull v0.1q,v0.1d,v19.1d + pmull v5.1q,v5.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v4.16b,v4.16b,v7.16b + eor v20.16b, v0.16b,v18.16b //H^3 + eor v22.16b,v5.16b,v4.16b //H^4 + + ext v16.16b,v20.16b, v20.16b,#8 //Karatsuba pre-processing + ext v17.16b,v22.16b,v22.16b,#8 + eor v16.16b,v16.16b,v20.16b + eor v17.16b,v17.16b,v22.16b + ext v21.16b,v16.16b,v17.16b,#8 //pack Karatsuba pre-processed + st1 {v20.2d,v21.2d,v22.2d},[x0] //store Htable[3..5] + ret + +.globl _gcm_gmult_v8 + +.align 4 +_gcm_gmult_v8: + ld1 {v17.2d},[x0] //load Xi + movi v19.16b,#0xe1 + ld1 {v20.2d,v21.2d},[x1] //load twisted H, ... + shl v19.2d,v19.2d,#57 +#ifndef __ARMEB__ + rev64 v17.16b,v17.16b +#endif + ext v3.16b,v17.16b,v17.16b,#8 + + pmull v0.1q,v20.1d,v3.1d //H.lo·Xi.lo + eor v17.16b,v17.16b,v3.16b //Karatsuba pre-processing + pmull2 v2.1q,v20.2d,v3.2d //H.hi·Xi.hi + pmull v1.1q,v21.1d,v17.1d //(H.lo+H.hi)·(Xi.lo+Xi.hi) + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b +#endif + ext v0.16b,v0.16b,v0.16b,#8 + st1 {v0.2d},[x0] //write out Xi + + ret + +.globl _gcm_ghash_v8 + +.align 4 +_gcm_ghash_v8: + cmp x3,#64 + b.hs Lgcm_ghash_v8_4x + ld1 {v0.2d},[x0] //load [rotated] Xi + //"[rotated]" means that + //loaded value would have + //to be rotated in order to + //make it appear as in + //algorithm specification + subs x3,x3,#32 //see if x3 is 32 or larger + mov x12,#16 //x12 is used as post- + //increment for input pointer; + //as loop is modulo-scheduled + //x12 is zeroed just in time + //to preclude overstepping + //inp[len], which means that + //last block[s] are actually + //loaded twice, but last + //copy is not processed + ld1 {v20.2d,v21.2d},[x1],#32 //load twisted H, ..., H^2 + movi v19.16b,#0xe1 + ld1 {v22.2d},[x1] + csel x12,xzr,x12,eq //is it time to zero x12? + ext v0.16b,v0.16b,v0.16b,#8 //rotate Xi + ld1 {v16.2d},[x2],#16 //load [rotated] I[0] + shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant +#ifndef __ARMEB__ + rev64 v16.16b,v16.16b + rev64 v0.16b,v0.16b +#endif + ext v3.16b,v16.16b,v16.16b,#8 //rotate I[0] + b.lo Lodd_tail_v8 //x3 was less than 32 + ld1 {v17.2d},[x2],x12 //load [rotated] I[1] +#ifndef __ARMEB__ + rev64 v17.16b,v17.16b +#endif + ext v7.16b,v17.16b,v17.16b,#8 + eor v3.16b,v3.16b,v0.16b //I[i]^=Xi + pmull v4.1q,v20.1d,v7.1d //H·Ii+1 + eor v17.16b,v17.16b,v7.16b //Karatsuba pre-processing + pmull2 v6.1q,v20.2d,v7.2d + b Loop_mod2x_v8 + +.align 4 +Loop_mod2x_v8: + ext v18.16b,v3.16b,v3.16b,#8 + subs x3,x3,#32 //is there more data? + pmull v0.1q,v22.1d,v3.1d //H^2.lo·Xi.lo + csel x12,xzr,x12,lo //is it time to zero x12? + + pmull v5.1q,v21.1d,v17.1d + eor v18.16b,v18.16b,v3.16b //Karatsuba pre-processing + pmull2 v2.1q,v22.2d,v3.2d //H^2.hi·Xi.hi + eor v0.16b,v0.16b,v4.16b //accumulate + pmull2 v1.1q,v21.2d,v18.2d //(H^2.lo+H^2.hi)·(Xi.lo+Xi.hi) + ld1 {v16.2d},[x2],x12 //load [rotated] I[i+2] + + eor v2.16b,v2.16b,v6.16b + csel x12,xzr,x12,eq //is it time to zero x12? + eor v1.16b,v1.16b,v5.16b + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v17.2d},[x2],x12 //load [rotated] I[i+3] +#ifndef __ARMEB__ + rev64 v16.16b,v16.16b +#endif + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + +#ifndef __ARMEB__ + rev64 v17.16b,v17.16b +#endif + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v7.16b,v17.16b,v17.16b,#8 + ext v3.16b,v16.16b,v16.16b,#8 + eor v0.16b,v1.16b,v18.16b + pmull v4.1q,v20.1d,v7.1d //H·Ii+1 + eor v3.16b,v3.16b,v2.16b //accumulate v3.16b early + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v3.16b,v3.16b,v18.16b + eor v17.16b,v17.16b,v7.16b //Karatsuba pre-processing + eor v3.16b,v3.16b,v0.16b + pmull2 v6.1q,v20.2d,v7.2d + b.hs Loop_mod2x_v8 //there was at least 32 more bytes + + eor v2.16b,v2.16b,v18.16b + ext v3.16b,v16.16b,v16.16b,#8 //re-construct v3.16b + adds x3,x3,#32 //re-construct x3 + eor v0.16b,v0.16b,v2.16b //re-construct v0.16b + b.eq Ldone_v8 //is x3 zero? +Lodd_tail_v8: + ext v18.16b,v0.16b,v0.16b,#8 + eor v3.16b,v3.16b,v0.16b //inp^=Xi + eor v17.16b,v16.16b,v18.16b //v17.16b is rotated inp^Xi + + pmull v0.1q,v20.1d,v3.1d //H.lo·Xi.lo + eor v17.16b,v17.16b,v3.16b //Karatsuba pre-processing + pmull2 v2.1q,v20.2d,v3.2d //H.hi·Xi.hi + pmull v1.1q,v21.1d,v17.1d //(H.lo+H.hi)·(Xi.lo+Xi.hi) + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + +Ldone_v8: +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b +#endif + ext v0.16b,v0.16b,v0.16b,#8 + st1 {v0.2d},[x0] //write out Xi + + ret + + +.align 4 +gcm_ghash_v8_4x: +Lgcm_ghash_v8_4x: + ld1 {v0.2d},[x0] //load [rotated] Xi + ld1 {v20.2d,v21.2d,v22.2d},[x1],#48 //load twisted H, ..., H^2 + movi v19.16b,#0xe1 + ld1 {v26.2d,v27.2d,v28.2d},[x1] //load twisted H^3, ..., H^4 + shl v19.2d,v19.2d,#57 //compose 0xc2.0 constant + + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + ext v25.16b,v7.16b,v7.16b,#8 + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + pmull2 v31.1q,v20.2d,v25.2d + pmull v30.1q,v21.1d,v7.1d + + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#128 + b.lo Ltail4x + + b Loop4x + +.align 4 +Loop4x: + eor v16.16b,v4.16b,v0.16b + ld1 {v4.2d,v5.2d,v6.2d,v7.2d},[x2],#64 + ext v3.16b,v16.16b,v16.16b,#8 +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v7.16b,v7.16b + rev64 v4.16b,v4.16b +#endif + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + ext v25.16b,v7.16b,v7.16b,#8 + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + ext v24.16b,v6.16b,v6.16b,#8 + eor v1.16b,v1.16b,v30.16b + ext v23.16b,v5.16b,v5.16b,#8 + + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + pmull v29.1q,v20.1d,v25.1d //H·Ii+3 + eor v7.16b,v7.16b,v25.16b + eor v1.16b,v1.16b,v17.16b + pmull2 v31.1q,v20.2d,v25.2d + eor v1.16b,v1.16b,v18.16b + pmull v30.1q,v21.1d,v7.1d + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + pmull v16.1q,v22.1d,v24.1d //H^2·Ii+2 + eor v6.16b,v6.16b,v24.16b + pmull2 v24.1q,v22.2d,v24.2d + eor v0.16b,v1.16b,v18.16b + pmull2 v6.1q,v21.2d,v6.2d + + eor v29.16b,v29.16b,v16.16b + eor v31.16b,v31.16b,v24.16b + eor v30.16b,v30.16b,v6.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + pmull v7.1q,v26.1d,v23.1d //H^3·Ii+1 + eor v5.16b,v5.16b,v23.16b + eor v18.16b,v18.16b,v2.16b + pmull2 v23.1q,v26.2d,v23.2d + pmull v5.1q,v27.1d,v5.1d + + eor v0.16b,v0.16b,v18.16b + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + eor v30.16b,v30.16b,v5.16b + + subs x3,x3,#64 + b.hs Loop4x + +Ltail4x: + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v28.1d,v3.1d //H^4·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v28.2d,v3.2d + pmull2 v1.1q,v27.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + + adds x3,x3,#64 + b.eq Ldone4x + + cmp x3,#32 + b.lo Lone + b.eq Ltwo +Lthree: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d,v6.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v6.16b,v6.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v24.16b,v6.16b,v6.16b,#8 + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + pmull v29.1q,v20.1d,v24.1d //H·Ii+2 + eor v6.16b,v6.16b,v24.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + pmull2 v31.1q,v20.2d,v24.2d + pmull v30.1q,v21.1d,v6.1d + eor v0.16b,v0.16b,v18.16b + pmull v7.1q,v22.1d,v23.1d //H^2·Ii+1 + eor v5.16b,v5.16b,v23.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull2 v23.1q,v22.2d,v23.2d + eor v16.16b,v4.16b,v0.16b + pmull2 v5.1q,v21.2d,v5.2d + ext v3.16b,v16.16b,v16.16b,#8 + + eor v29.16b,v29.16b,v7.16b + eor v31.16b,v31.16b,v23.16b + eor v30.16b,v30.16b,v5.16b + + pmull v0.1q,v26.1d,v3.1d //H^3·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v26.2d,v3.2d + pmull v1.1q,v27.1d,v16.1d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b Ldone4x + +.align 4 +Ltwo: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d,v5.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v5.16b,v5.16b + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + ext v23.16b,v5.16b,v5.16b,#8 + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + pmull v29.1q,v20.1d,v23.1d //H·Ii+1 + eor v5.16b,v5.16b,v23.16b + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull2 v31.1q,v20.2d,v23.2d + pmull v30.1q,v21.1d,v5.1d + + pmull v0.1q,v22.1d,v3.1d //H^2·(Xi+Ii) + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v22.2d,v3.2d + pmull2 v1.1q,v21.2d,v16.2d + + eor v0.16b,v0.16b,v29.16b + eor v2.16b,v2.16b,v31.16b + eor v1.16b,v1.16b,v30.16b + b Ldone4x + +.align 4 +Lone: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + ld1 {v4.2d},[x2] + eor v1.16b,v1.16b,v18.16b +#ifndef __ARMEB__ + rev64 v4.16b,v4.16b +#endif + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + + eor v16.16b,v4.16b,v0.16b + ext v3.16b,v16.16b,v16.16b,#8 + + pmull v0.1q,v20.1d,v3.1d + eor v16.16b,v16.16b,v3.16b + pmull2 v2.1q,v20.2d,v3.2d + pmull v1.1q,v21.1d,v16.1d + +Ldone4x: + ext v17.16b,v0.16b,v2.16b,#8 //Karatsuba post-processing + eor v18.16b,v0.16b,v2.16b + eor v1.16b,v1.16b,v17.16b + eor v1.16b,v1.16b,v18.16b + + pmull v18.1q,v0.1d,v19.1d //1st phase of reduction + ins v2.d[0],v1.d[1] + ins v1.d[1],v0.d[0] + eor v0.16b,v1.16b,v18.16b + + ext v18.16b,v0.16b,v0.16b,#8 //2nd phase of reduction + pmull v0.1q,v0.1d,v19.1d + eor v18.16b,v18.16b,v2.16b + eor v0.16b,v0.16b,v18.16b + ext v0.16b,v0.16b,v0.16b,#8 + +#ifndef __ARMEB__ + rev64 v0.16b,v0.16b +#endif + st1 {v0.2d},[x0] //write out Xi + + ret + +.byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 +#endif diff --git a/vere/ext/openssl/gen/macos-aarch64/crypto/poly1305/poly1305-armv8.S b/vere/ext/openssl/gen/macos-aarch64/crypto/poly1305/poly1305-armv8.S new file mode 100644 index 0000000..32e4686 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/crypto/poly1305/poly1305-armv8.S @@ -0,0 +1,870 @@ +#include "arm_arch.h" + +.text + +// forward "declarations" are required for Apple + +.private_extern _OPENSSL_armcap_P +.globl _poly1305_init +.private_extern _poly1305_init +.globl _poly1305_blocks +.private_extern _poly1305_blocks +.globl _poly1305_emit +.private_extern _poly1305_emit + + +.align 5 +_poly1305_init: + cmp x1,xzr + stp xzr,xzr,[x0] // zero hash value + stp xzr,xzr,[x0,#16] // [along with is_base2_26] + + csel x0,xzr,x0,eq + b.eq Lno_key + +#ifdef __ILP32__ + ldrsw x11,LOPENSSL_armcap_P +#else + ldr x11,LOPENSSL_armcap_P +#endif + adr x10,LOPENSSL_armcap_P + + ldp x7,x8,[x1] // load key + mov x9,#0xfffffffc0fffffff + movk x9,#0x0fff,lsl#48 + ldr w17,[x10,x11] +#ifdef __ARMEB__ + rev x7,x7 // flip bytes + rev x8,x8 +#endif + and x7,x7,x9 // &=0ffffffc0fffffff + and x9,x9,#-4 + and x8,x8,x9 // &=0ffffffc0ffffffc + stp x7,x8,[x0,#32] // save key value + + tst w17,#ARMV7_NEON + + adr x12,_poly1305_blocks + adr x7,poly1305_blocks_neon + adr x13,_poly1305_emit + adr x8,poly1305_emit_neon + + csel x12,x12,x7,eq + csel x13,x13,x8,eq + +#ifdef __ILP32__ + stp w12,w13,[x2] +#else + stp x12,x13,[x2] +#endif + + mov x0,#1 +Lno_key: + ret + + + +.align 5 +_poly1305_blocks: + ands x2,x2,#-16 + b.eq Lno_data + + ldp x4,x5,[x0] // load hash value + ldp x7,x8,[x0,#32] // load key value + ldr x6,[x0,#16] + add x9,x8,x8,lsr#2 // s1 = r1 + (r1 >> 2) + b Loop + +.align 5 +Loop: + ldp x10,x11,[x1],#16 // load input + sub x2,x2,#16 +#ifdef __ARMEB__ + rev x10,x10 + rev x11,x11 +#endif + adds x4,x4,x10 // accumulate input + adcs x5,x5,x11 + + mul x12,x4,x7 // h0*r0 + adc x6,x6,x3 + umulh x13,x4,x7 + + mul x10,x5,x9 // h1*5*r1 + umulh x11,x5,x9 + + adds x12,x12,x10 + mul x10,x4,x8 // h0*r1 + adc x13,x13,x11 + umulh x14,x4,x8 + + adds x13,x13,x10 + mul x10,x5,x7 // h1*r0 + adc x14,x14,xzr + umulh x11,x5,x7 + + adds x13,x13,x10 + mul x10,x6,x9 // h2*5*r1 + adc x14,x14,x11 + mul x11,x6,x7 // h2*r0 + + adds x13,x13,x10 + adc x14,x14,x11 + + and x10,x14,#-4 // final reduction + and x6,x14,#3 + add x10,x10,x14,lsr#2 + adds x4,x12,x10 + adcs x5,x13,xzr + adc x6,x6,xzr + + cbnz x2,Loop + + stp x4,x5,[x0] // store hash value + str x6,[x0,#16] + +Lno_data: + ret + + + +.align 5 +_poly1305_emit: + ldp x4,x5,[x0] // load hash base 2^64 + ldr x6,[x0,#16] + ldp x10,x11,[x2] // load nonce + + adds x12,x4,#5 // compare to modulus + adcs x13,x5,xzr + adc x14,x6,xzr + + tst x14,#-4 // see if it's carried/borrowed + + csel x4,x4,x12,eq + csel x5,x5,x13,eq + +#ifdef __ARMEB__ + ror x10,x10,#32 // flip nonce words + ror x11,x11,#32 +#endif + adds x4,x4,x10 // accumulate nonce + adc x5,x5,x11 +#ifdef __ARMEB__ + rev x4,x4 // flip output bytes + rev x5,x5 +#endif + stp x4,x5,[x1] // write result + + ret + + +.align 5 +poly1305_mult: + mul x12,x4,x7 // h0*r0 + umulh x13,x4,x7 + + mul x10,x5,x9 // h1*5*r1 + umulh x11,x5,x9 + + adds x12,x12,x10 + mul x10,x4,x8 // h0*r1 + adc x13,x13,x11 + umulh x14,x4,x8 + + adds x13,x13,x10 + mul x10,x5,x7 // h1*r0 + adc x14,x14,xzr + umulh x11,x5,x7 + + adds x13,x13,x10 + mul x10,x6,x9 // h2*5*r1 + adc x14,x14,x11 + mul x11,x6,x7 // h2*r0 + + adds x13,x13,x10 + adc x14,x14,x11 + + and x10,x14,#-4 // final reduction + and x6,x14,#3 + add x10,x10,x14,lsr#2 + adds x4,x12,x10 + adcs x5,x13,xzr + adc x6,x6,xzr + + ret + + + +.align 5 +poly1305_splat: + and x12,x4,#0x03ffffff // base 2^64 -> base 2^26 + ubfx x13,x4,#26,#26 + extr x14,x5,x4,#52 + and x14,x14,#0x03ffffff + ubfx x15,x5,#14,#26 + extr x16,x6,x5,#40 + + str w12,[x0,#16*0] // r0 + add w12,w13,w13,lsl#2 // r1*5 + str w13,[x0,#16*1] // r1 + add w13,w14,w14,lsl#2 // r2*5 + str w12,[x0,#16*2] // s1 + str w14,[x0,#16*3] // r2 + add w14,w15,w15,lsl#2 // r3*5 + str w13,[x0,#16*4] // s2 + str w15,[x0,#16*5] // r3 + add w15,w16,w16,lsl#2 // r4*5 + str w14,[x0,#16*6] // s3 + str w16,[x0,#16*7] // r4 + str w15,[x0,#16*8] // s4 + + ret + + + +.align 5 +poly1305_blocks_neon: + ldr x17,[x0,#24] + cmp x2,#128 + b.hs Lblocks_neon + cbz x17,_poly1305_blocks + +Lblocks_neon: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + + ands x2,x2,#-16 + b.eq Lno_data_neon + + cbz x17,Lbase2_64_neon + + ldp w10,w11,[x0] // load hash value base 2^26 + ldp w12,w13,[x0,#8] + ldr w14,[x0,#16] + + tst x2,#31 + b.eq Leven_neon + + ldp x7,x8,[x0,#32] // load key value + + add x4,x10,x11,lsl#26 // base 2^26 -> base 2^64 + lsr x5,x12,#12 + adds x4,x4,x12,lsl#52 + add x5,x5,x13,lsl#14 + adc x5,x5,xzr + lsr x6,x14,#24 + adds x5,x5,x14,lsl#40 + adc x14,x6,xzr // can be partially reduced... + + ldp x12,x13,[x1],#16 // load input + sub x2,x2,#16 + add x9,x8,x8,lsr#2 // s1 = r1 + (r1 >> 2) + + and x10,x14,#-4 // ... so reduce + and x6,x14,#3 + add x10,x10,x14,lsr#2 + adds x4,x4,x10 + adcs x5,x5,xzr + adc x6,x6,xzr + +#ifdef __ARMEB__ + rev x12,x12 + rev x13,x13 +#endif + adds x4,x4,x12 // accumulate input + adcs x5,x5,x13 + adc x6,x6,x3 + + bl poly1305_mult + ldr x30,[sp,#8] + + cbz x3,Lstore_base2_64_neon + + and x10,x4,#0x03ffffff // base 2^64 -> base 2^26 + ubfx x11,x4,#26,#26 + extr x12,x5,x4,#52 + and x12,x12,#0x03ffffff + ubfx x13,x5,#14,#26 + extr x14,x6,x5,#40 + + cbnz x2,Leven_neon + + stp w10,w11,[x0] // store hash value base 2^26 + stp w12,w13,[x0,#8] + str w14,[x0,#16] + b Lno_data_neon + +.align 4 +Lstore_base2_64_neon: + stp x4,x5,[x0] // store hash value base 2^64 + stp x6,xzr,[x0,#16] // note that is_base2_26 is zeroed + b Lno_data_neon + +.align 4 +Lbase2_64_neon: + ldp x7,x8,[x0,#32] // load key value + + ldp x4,x5,[x0] // load hash value base 2^64 + ldr x6,[x0,#16] + + tst x2,#31 + b.eq Linit_neon + + ldp x12,x13,[x1],#16 // load input + sub x2,x2,#16 + add x9,x8,x8,lsr#2 // s1 = r1 + (r1 >> 2) +#ifdef __ARMEB__ + rev x12,x12 + rev x13,x13 +#endif + adds x4,x4,x12 // accumulate input + adcs x5,x5,x13 + adc x6,x6,x3 + + bl poly1305_mult + +Linit_neon: + and x10,x4,#0x03ffffff // base 2^64 -> base 2^26 + ubfx x11,x4,#26,#26 + extr x12,x5,x4,#52 + and x12,x12,#0x03ffffff + ubfx x13,x5,#14,#26 + extr x14,x6,x5,#40 + + stp d8,d9,[sp,#16] // meet ABI requirements + stp d10,d11,[sp,#32] + stp d12,d13,[sp,#48] + stp d14,d15,[sp,#64] + + fmov d24,x10 + fmov d25,x11 + fmov d26,x12 + fmov d27,x13 + fmov d28,x14 + + ////////////////////////////////// initialize r^n table + mov x4,x7 // r^1 + add x9,x8,x8,lsr#2 // s1 = r1 + (r1 >> 2) + mov x5,x8 + mov x6,xzr + add x0,x0,#48+12 + bl poly1305_splat + + bl poly1305_mult // r^2 + sub x0,x0,#4 + bl poly1305_splat + + bl poly1305_mult // r^3 + sub x0,x0,#4 + bl poly1305_splat + + bl poly1305_mult // r^4 + sub x0,x0,#4 + bl poly1305_splat + ldr x30,[sp,#8] + + add x16,x1,#32 + adr x17,Lzeros + subs x2,x2,#64 + csel x16,x17,x16,lo + + mov x4,#1 + str x4,[x0,#-24] // set is_base2_26 + sub x0,x0,#48 // restore original x0 + b Ldo_neon + +.align 4 +Leven_neon: + add x16,x1,#32 + adr x17,Lzeros + subs x2,x2,#64 + csel x16,x17,x16,lo + + stp d8,d9,[sp,#16] // meet ABI requirements + stp d10,d11,[sp,#32] + stp d12,d13,[sp,#48] + stp d14,d15,[sp,#64] + + fmov d24,x10 + fmov d25,x11 + fmov d26,x12 + fmov d27,x13 + fmov d28,x14 + +Ldo_neon: + ldp x8,x12,[x16],#16 // inp[2:3] (or zero) + ldp x9,x13,[x16],#48 + + lsl x3,x3,#24 + add x15,x0,#48 + +#ifdef __ARMEB__ + rev x8,x8 + rev x12,x12 + rev x9,x9 + rev x13,x13 +#endif + and x4,x8,#0x03ffffff // base 2^64 -> base 2^26 + and x5,x9,#0x03ffffff + ubfx x6,x8,#26,#26 + ubfx x7,x9,#26,#26 + add x4,x4,x5,lsl#32 // bfi x4,x5,#32,#32 + extr x8,x12,x8,#52 + extr x9,x13,x9,#52 + add x6,x6,x7,lsl#32 // bfi x6,x7,#32,#32 + fmov d14,x4 + and x8,x8,#0x03ffffff + and x9,x9,#0x03ffffff + ubfx x10,x12,#14,#26 + ubfx x11,x13,#14,#26 + add x12,x3,x12,lsr#40 + add x13,x3,x13,lsr#40 + add x8,x8,x9,lsl#32 // bfi x8,x9,#32,#32 + fmov d15,x6 + add x10,x10,x11,lsl#32 // bfi x10,x11,#32,#32 + add x12,x12,x13,lsl#32 // bfi x12,x13,#32,#32 + fmov d16,x8 + fmov d17,x10 + fmov d18,x12 + + ldp x8,x12,[x1],#16 // inp[0:1] + ldp x9,x13,[x1],#48 + + ld1 {v0.4s,v1.4s,v2.4s,v3.4s},[x15],#64 + ld1 {v4.4s,v5.4s,v6.4s,v7.4s},[x15],#64 + ld1 {v8.4s},[x15] + +#ifdef __ARMEB__ + rev x8,x8 + rev x12,x12 + rev x9,x9 + rev x13,x13 +#endif + and x4,x8,#0x03ffffff // base 2^64 -> base 2^26 + and x5,x9,#0x03ffffff + ubfx x6,x8,#26,#26 + ubfx x7,x9,#26,#26 + add x4,x4,x5,lsl#32 // bfi x4,x5,#32,#32 + extr x8,x12,x8,#52 + extr x9,x13,x9,#52 + add x6,x6,x7,lsl#32 // bfi x6,x7,#32,#32 + fmov d9,x4 + and x8,x8,#0x03ffffff + and x9,x9,#0x03ffffff + ubfx x10,x12,#14,#26 + ubfx x11,x13,#14,#26 + add x12,x3,x12,lsr#40 + add x13,x3,x13,lsr#40 + add x8,x8,x9,lsl#32 // bfi x8,x9,#32,#32 + fmov d10,x6 + add x10,x10,x11,lsl#32 // bfi x10,x11,#32,#32 + add x12,x12,x13,lsl#32 // bfi x12,x13,#32,#32 + movi v31.2d,#-1 + fmov d11,x8 + fmov d12,x10 + fmov d13,x12 + ushr v31.2d,v31.2d,#38 + + b.ls Lskip_loop + +.align 4 +Loop_neon: + //////////////////////////////////////////////////////////////// + // ((inp[0]*r^4+inp[2]*r^2+inp[4])*r^4+inp[6]*r^2 + // ((inp[1]*r^4+inp[3]*r^2+inp[5])*r^3+inp[7]*r + // ___________________/ + // ((inp[0]*r^4+inp[2]*r^2+inp[4])*r^4+inp[6]*r^2+inp[8])*r^2 + // ((inp[1]*r^4+inp[3]*r^2+inp[5])*r^4+inp[7]*r^2+inp[9])*r + // ___________________/ ____________________/ + // + // Note that we start with inp[2:3]*r^2. This is because it + // doesn't depend on reduction in previous iteration. + //////////////////////////////////////////////////////////////// + // d4 = h0*r4 + h1*r3 + h2*r2 + h3*r1 + h4*r0 + // d3 = h0*r3 + h1*r2 + h2*r1 + h3*r0 + h4*5*r4 + // d2 = h0*r2 + h1*r1 + h2*r0 + h3*5*r4 + h4*5*r3 + // d1 = h0*r1 + h1*r0 + h2*5*r4 + h3*5*r3 + h4*5*r2 + // d0 = h0*r0 + h1*5*r4 + h2*5*r3 + h3*5*r2 + h4*5*r1 + + subs x2,x2,#64 + umull v23.2d,v14.2s,v7.s[2] + csel x16,x17,x16,lo + umull v22.2d,v14.2s,v5.s[2] + umull v21.2d,v14.2s,v3.s[2] + ldp x8,x12,[x16],#16 // inp[2:3] (or zero) + umull v20.2d,v14.2s,v1.s[2] + ldp x9,x13,[x16],#48 + umull v19.2d,v14.2s,v0.s[2] +#ifdef __ARMEB__ + rev x8,x8 + rev x12,x12 + rev x9,x9 + rev x13,x13 +#endif + + umlal v23.2d,v15.2s,v5.s[2] + and x4,x8,#0x03ffffff // base 2^64 -> base 2^26 + umlal v22.2d,v15.2s,v3.s[2] + and x5,x9,#0x03ffffff + umlal v21.2d,v15.2s,v1.s[2] + ubfx x6,x8,#26,#26 + umlal v20.2d,v15.2s,v0.s[2] + ubfx x7,x9,#26,#26 + umlal v19.2d,v15.2s,v8.s[2] + add x4,x4,x5,lsl#32 // bfi x4,x5,#32,#32 + + umlal v23.2d,v16.2s,v3.s[2] + extr x8,x12,x8,#52 + umlal v22.2d,v16.2s,v1.s[2] + extr x9,x13,x9,#52 + umlal v21.2d,v16.2s,v0.s[2] + add x6,x6,x7,lsl#32 // bfi x6,x7,#32,#32 + umlal v20.2d,v16.2s,v8.s[2] + fmov d14,x4 + umlal v19.2d,v16.2s,v6.s[2] + and x8,x8,#0x03ffffff + + umlal v23.2d,v17.2s,v1.s[2] + and x9,x9,#0x03ffffff + umlal v22.2d,v17.2s,v0.s[2] + ubfx x10,x12,#14,#26 + umlal v21.2d,v17.2s,v8.s[2] + ubfx x11,x13,#14,#26 + umlal v20.2d,v17.2s,v6.s[2] + add x8,x8,x9,lsl#32 // bfi x8,x9,#32,#32 + umlal v19.2d,v17.2s,v4.s[2] + fmov d15,x6 + + add v11.2s,v11.2s,v26.2s + add x12,x3,x12,lsr#40 + umlal v23.2d,v18.2s,v0.s[2] + add x13,x3,x13,lsr#40 + umlal v22.2d,v18.2s,v8.s[2] + add x10,x10,x11,lsl#32 // bfi x10,x11,#32,#32 + umlal v21.2d,v18.2s,v6.s[2] + add x12,x12,x13,lsl#32 // bfi x12,x13,#32,#32 + umlal v20.2d,v18.2s,v4.s[2] + fmov d16,x8 + umlal v19.2d,v18.2s,v2.s[2] + fmov d17,x10 + + //////////////////////////////////////////////////////////////// + // (hash+inp[0:1])*r^4 and accumulate + + add v9.2s,v9.2s,v24.2s + fmov d18,x12 + umlal v22.2d,v11.2s,v1.s[0] + ldp x8,x12,[x1],#16 // inp[0:1] + umlal v19.2d,v11.2s,v6.s[0] + ldp x9,x13,[x1],#48 + umlal v23.2d,v11.2s,v3.s[0] + umlal v20.2d,v11.2s,v8.s[0] + umlal v21.2d,v11.2s,v0.s[0] +#ifdef __ARMEB__ + rev x8,x8 + rev x12,x12 + rev x9,x9 + rev x13,x13 +#endif + + add v10.2s,v10.2s,v25.2s + umlal v22.2d,v9.2s,v5.s[0] + umlal v23.2d,v9.2s,v7.s[0] + and x4,x8,#0x03ffffff // base 2^64 -> base 2^26 + umlal v21.2d,v9.2s,v3.s[0] + and x5,x9,#0x03ffffff + umlal v19.2d,v9.2s,v0.s[0] + ubfx x6,x8,#26,#26 + umlal v20.2d,v9.2s,v1.s[0] + ubfx x7,x9,#26,#26 + + add v12.2s,v12.2s,v27.2s + add x4,x4,x5,lsl#32 // bfi x4,x5,#32,#32 + umlal v22.2d,v10.2s,v3.s[0] + extr x8,x12,x8,#52 + umlal v23.2d,v10.2s,v5.s[0] + extr x9,x13,x9,#52 + umlal v19.2d,v10.2s,v8.s[0] + add x6,x6,x7,lsl#32 // bfi x6,x7,#32,#32 + umlal v21.2d,v10.2s,v1.s[0] + fmov d9,x4 + umlal v20.2d,v10.2s,v0.s[0] + and x8,x8,#0x03ffffff + + add v13.2s,v13.2s,v28.2s + and x9,x9,#0x03ffffff + umlal v22.2d,v12.2s,v0.s[0] + ubfx x10,x12,#14,#26 + umlal v19.2d,v12.2s,v4.s[0] + ubfx x11,x13,#14,#26 + umlal v23.2d,v12.2s,v1.s[0] + add x8,x8,x9,lsl#32 // bfi x8,x9,#32,#32 + umlal v20.2d,v12.2s,v6.s[0] + fmov d10,x6 + umlal v21.2d,v12.2s,v8.s[0] + add x12,x3,x12,lsr#40 + + umlal v22.2d,v13.2s,v8.s[0] + add x13,x3,x13,lsr#40 + umlal v19.2d,v13.2s,v2.s[0] + add x10,x10,x11,lsl#32 // bfi x10,x11,#32,#32 + umlal v23.2d,v13.2s,v0.s[0] + add x12,x12,x13,lsl#32 // bfi x12,x13,#32,#32 + umlal v20.2d,v13.2s,v4.s[0] + fmov d11,x8 + umlal v21.2d,v13.2s,v6.s[0] + fmov d12,x10 + fmov d13,x12 + + ///////////////////////////////////////////////////////////////// + // lazy reduction as discussed in "NEON crypto" by D.J. Bernstein + // and P. Schwabe + // + // [see discussion in poly1305-armv4 module] + + ushr v29.2d,v22.2d,#26 + xtn v27.2s,v22.2d + ushr v30.2d,v19.2d,#26 + and v19.16b,v19.16b,v31.16b + add v23.2d,v23.2d,v29.2d // h3 -> h4 + bic v27.2s,#0xfc,lsl#24 // &=0x03ffffff + add v20.2d,v20.2d,v30.2d // h0 -> h1 + + ushr v29.2d,v23.2d,#26 + xtn v28.2s,v23.2d + ushr v30.2d,v20.2d,#26 + xtn v25.2s,v20.2d + bic v28.2s,#0xfc,lsl#24 + add v21.2d,v21.2d,v30.2d // h1 -> h2 + + add v19.2d,v19.2d,v29.2d + shl v29.2d,v29.2d,#2 + shrn v30.2s,v21.2d,#26 + xtn v26.2s,v21.2d + add v19.2d,v19.2d,v29.2d // h4 -> h0 + bic v25.2s,#0xfc,lsl#24 + add v27.2s,v27.2s,v30.2s // h2 -> h3 + bic v26.2s,#0xfc,lsl#24 + + shrn v29.2s,v19.2d,#26 + xtn v24.2s,v19.2d + ushr v30.2s,v27.2s,#26 + bic v27.2s,#0xfc,lsl#24 + bic v24.2s,#0xfc,lsl#24 + add v25.2s,v25.2s,v29.2s // h0 -> h1 + add v28.2s,v28.2s,v30.2s // h3 -> h4 + + b.hi Loop_neon + +Lskip_loop: + dup v16.2d,v16.d[0] + add v11.2s,v11.2s,v26.2s + + //////////////////////////////////////////////////////////////// + // multiply (inp[0:1]+hash) or inp[2:3] by r^2:r^1 + + adds x2,x2,#32 + b.ne Long_tail + + dup v16.2d,v11.d[0] + add v14.2s,v9.2s,v24.2s + add v17.2s,v12.2s,v27.2s + add v15.2s,v10.2s,v25.2s + add v18.2s,v13.2s,v28.2s + +Long_tail: + dup v14.2d,v14.d[0] + umull2 v19.2d,v16.4s,v6.4s + umull2 v22.2d,v16.4s,v1.4s + umull2 v23.2d,v16.4s,v3.4s + umull2 v21.2d,v16.4s,v0.4s + umull2 v20.2d,v16.4s,v8.4s + + dup v15.2d,v15.d[0] + umlal2 v19.2d,v14.4s,v0.4s + umlal2 v21.2d,v14.4s,v3.4s + umlal2 v22.2d,v14.4s,v5.4s + umlal2 v23.2d,v14.4s,v7.4s + umlal2 v20.2d,v14.4s,v1.4s + + dup v17.2d,v17.d[0] + umlal2 v19.2d,v15.4s,v8.4s + umlal2 v22.2d,v15.4s,v3.4s + umlal2 v21.2d,v15.4s,v1.4s + umlal2 v23.2d,v15.4s,v5.4s + umlal2 v20.2d,v15.4s,v0.4s + + dup v18.2d,v18.d[0] + umlal2 v22.2d,v17.4s,v0.4s + umlal2 v23.2d,v17.4s,v1.4s + umlal2 v19.2d,v17.4s,v4.4s + umlal2 v20.2d,v17.4s,v6.4s + umlal2 v21.2d,v17.4s,v8.4s + + umlal2 v22.2d,v18.4s,v8.4s + umlal2 v19.2d,v18.4s,v2.4s + umlal2 v23.2d,v18.4s,v0.4s + umlal2 v20.2d,v18.4s,v4.4s + umlal2 v21.2d,v18.4s,v6.4s + + b.eq Lshort_tail + + //////////////////////////////////////////////////////////////// + // (hash+inp[0:1])*r^4:r^3 and accumulate + + add v9.2s,v9.2s,v24.2s + umlal v22.2d,v11.2s,v1.2s + umlal v19.2d,v11.2s,v6.2s + umlal v23.2d,v11.2s,v3.2s + umlal v20.2d,v11.2s,v8.2s + umlal v21.2d,v11.2s,v0.2s + + add v10.2s,v10.2s,v25.2s + umlal v22.2d,v9.2s,v5.2s + umlal v19.2d,v9.2s,v0.2s + umlal v23.2d,v9.2s,v7.2s + umlal v20.2d,v9.2s,v1.2s + umlal v21.2d,v9.2s,v3.2s + + add v12.2s,v12.2s,v27.2s + umlal v22.2d,v10.2s,v3.2s + umlal v19.2d,v10.2s,v8.2s + umlal v23.2d,v10.2s,v5.2s + umlal v20.2d,v10.2s,v0.2s + umlal v21.2d,v10.2s,v1.2s + + add v13.2s,v13.2s,v28.2s + umlal v22.2d,v12.2s,v0.2s + umlal v19.2d,v12.2s,v4.2s + umlal v23.2d,v12.2s,v1.2s + umlal v20.2d,v12.2s,v6.2s + umlal v21.2d,v12.2s,v8.2s + + umlal v22.2d,v13.2s,v8.2s + umlal v19.2d,v13.2s,v2.2s + umlal v23.2d,v13.2s,v0.2s + umlal v20.2d,v13.2s,v4.2s + umlal v21.2d,v13.2s,v6.2s + +Lshort_tail: + //////////////////////////////////////////////////////////////// + // horizontal add + + addp v22.2d,v22.2d,v22.2d + ldp d8,d9,[sp,#16] // meet ABI requirements + addp v19.2d,v19.2d,v19.2d + ldp d10,d11,[sp,#32] + addp v23.2d,v23.2d,v23.2d + ldp d12,d13,[sp,#48] + addp v20.2d,v20.2d,v20.2d + ldp d14,d15,[sp,#64] + addp v21.2d,v21.2d,v21.2d + + //////////////////////////////////////////////////////////////// + // lazy reduction, but without narrowing + + ushr v29.2d,v22.2d,#26 + and v22.16b,v22.16b,v31.16b + ushr v30.2d,v19.2d,#26 + and v19.16b,v19.16b,v31.16b + + add v23.2d,v23.2d,v29.2d // h3 -> h4 + add v20.2d,v20.2d,v30.2d // h0 -> h1 + + ushr v29.2d,v23.2d,#26 + and v23.16b,v23.16b,v31.16b + ushr v30.2d,v20.2d,#26 + and v20.16b,v20.16b,v31.16b + add v21.2d,v21.2d,v30.2d // h1 -> h2 + + add v19.2d,v19.2d,v29.2d + shl v29.2d,v29.2d,#2 + ushr v30.2d,v21.2d,#26 + and v21.16b,v21.16b,v31.16b + add v19.2d,v19.2d,v29.2d // h4 -> h0 + add v22.2d,v22.2d,v30.2d // h2 -> h3 + + ushr v29.2d,v19.2d,#26 + and v19.16b,v19.16b,v31.16b + ushr v30.2d,v22.2d,#26 + and v22.16b,v22.16b,v31.16b + add v20.2d,v20.2d,v29.2d // h0 -> h1 + add v23.2d,v23.2d,v30.2d // h3 -> h4 + + //////////////////////////////////////////////////////////////// + // write the result, can be partially reduced + + st4 {v19.s,v20.s,v21.s,v22.s}[0],[x0],#16 + st1 {v23.s}[0],[x0] + +Lno_data_neon: + ldr x29,[sp],#80 +.long 0xd50323bf // autiasp + ret + + + +.align 5 +poly1305_emit_neon: + ldr x17,[x0,#24] + cbz x17,_poly1305_emit + + ldp w10,w11,[x0] // load hash value base 2^26 + ldp w12,w13,[x0,#8] + ldr w14,[x0,#16] + + add x4,x10,x11,lsl#26 // base 2^26 -> base 2^64 + lsr x5,x12,#12 + adds x4,x4,x12,lsl#52 + add x5,x5,x13,lsl#14 + adc x5,x5,xzr + lsr x6,x14,#24 + adds x5,x5,x14,lsl#40 + adc x6,x6,xzr // can be partially reduced... + + ldp x10,x11,[x2] // load nonce + + and x12,x6,#-4 // ... so reduce + add x12,x12,x6,lsr#2 + and x6,x6,#3 + adds x4,x4,x12 + adcs x5,x5,xzr + adc x6,x6,xzr + + adds x12,x4,#5 // compare to modulus + adcs x13,x5,xzr + adc x14,x6,xzr + + tst x14,#-4 // see if it's carried/borrowed + + csel x4,x4,x12,eq + csel x5,x5,x13,eq + +#ifdef __ARMEB__ + ror x10,x10,#32 // flip nonce words + ror x11,x11,#32 +#endif + adds x4,x4,x10 // accumulate nonce + adc x5,x5,x11 +#ifdef __ARMEB__ + rev x4,x4 // flip output bytes + rev x5,x5 +#endif + stp x4,x5,[x1] // write result + + ret + + +.align 5 +Lzeros: +.long 0,0,0,0,0,0,0,0 +LOPENSSL_armcap_P: +#ifdef __ILP32__ +.long _OPENSSL_armcap_P-. +#else +.quad ARMV7_NEON +#endif +.byte 80,111,108,121,49,51,48,53,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 diff --git a/vere/ext/openssl/gen/macos-aarch64/crypto/sha/keccak1600-armv8.S b/vere/ext/openssl/gen/macos-aarch64/crypto/sha/keccak1600-armv8.S new file mode 100644 index 0000000..ecb1151 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/crypto/sha/keccak1600-armv8.S @@ -0,0 +1,1095 @@ +.text + +.align 8 // strategic alignment and padding that allows to use + // address value as loop termination condition... +.quad 0,0,0,0,0,0,0,0 + +iotas: +.quad 0x0000000000000001 +.quad 0x0000000000008082 +.quad 0x800000000000808a +.quad 0x8000000080008000 +.quad 0x000000000000808b +.quad 0x0000000080000001 +.quad 0x8000000080008081 +.quad 0x8000000000008009 +.quad 0x000000000000008a +.quad 0x0000000000000088 +.quad 0x0000000080008009 +.quad 0x000000008000000a +.quad 0x000000008000808b +.quad 0x800000000000008b +.quad 0x8000000000008089 +.quad 0x8000000000008003 +.quad 0x8000000000008002 +.quad 0x8000000000000080 +.quad 0x000000000000800a +.quad 0x800000008000000a +.quad 0x8000000080008081 +.quad 0x8000000000008080 +.quad 0x0000000080000001 +.quad 0x8000000080008008 + + +.align 5 +KeccakF1600_int: + adr x28,iotas +.long 0xd503233f // paciasp + stp x28,x30,[sp,#16] // 32 bytes on top are mine + b Loop +.align 4 +Loop: + ////////////////////////////////////////// Theta + eor x26,x0,x5 + stp x4,x9,[sp,#0] // offload pair... + eor x27,x1,x6 + eor x28,x2,x7 + eor x30,x3,x8 + eor x4,x4,x9 + eor x26,x26,x10 + eor x27,x27,x11 + eor x28,x28,x12 + eor x30,x30,x13 + eor x4,x4,x14 + eor x26,x26,x15 + eor x27,x27,x16 + eor x28,x28,x17 + eor x30,x30,x25 + eor x4,x4,x19 + eor x26,x26,x20 + eor x28,x28,x22 + eor x27,x27,x21 + eor x30,x30,x23 + eor x4,x4,x24 + + eor x9,x26,x28,ror#63 + + eor x1,x1,x9 + eor x6,x6,x9 + eor x11,x11,x9 + eor x16,x16,x9 + eor x21,x21,x9 + + eor x9,x27,x30,ror#63 + eor x28,x28,x4,ror#63 + eor x30,x30,x26,ror#63 + eor x4,x4,x27,ror#63 + + eor x27, x2,x9 // mov x27,x2 + eor x7,x7,x9 + eor x12,x12,x9 + eor x17,x17,x9 + eor x22,x22,x9 + + eor x0,x0,x4 + eor x5,x5,x4 + eor x10,x10,x4 + eor x15,x15,x4 + eor x20,x20,x4 + ldp x4,x9,[sp,#0] // re-load offloaded data + eor x26, x3,x28 // mov x26,x3 + eor x8,x8,x28 + eor x13,x13,x28 + eor x25,x25,x28 + eor x23,x23,x28 + + eor x28, x4,x30 // mov x28,x4 + eor x9,x9,x30 + eor x14,x14,x30 + eor x19,x19,x30 + eor x24,x24,x30 + + ////////////////////////////////////////// Rho+Pi + mov x30,x1 + ror x1,x6,#64-44 + //mov x27,x2 + ror x2,x12,#64-43 + //mov x26,x3 + ror x3,x25,#64-21 + //mov x28,x4 + ror x4,x24,#64-14 + + ror x6,x9,#64-20 + ror x12,x13,#64-25 + ror x25,x17,#64-15 + ror x24,x21,#64-2 + + ror x9,x22,#64-61 + ror x13,x19,#64-8 + ror x17,x11,#64-10 + ror x21,x8,#64-55 + + ror x22,x14,#64-39 + ror x19,x23,#64-56 + ror x11,x7,#64-6 + ror x8,x16,#64-45 + + ror x14,x20,#64-18 + ror x23,x15,#64-41 + ror x7,x10,#64-3 + ror x16,x5,#64-36 + + ror x5,x26,#64-28 + ror x10,x30,#64-1 + ror x15,x28,#64-27 + ror x20,x27,#64-62 + + ////////////////////////////////////////// Chi+Iota + bic x26,x2,x1 + bic x27,x3,x2 + bic x28,x0,x4 + bic x30,x1,x0 + eor x0,x0,x26 + bic x26,x4,x3 + eor x1,x1,x27 + ldr x27,[sp,#16] + eor x3,x3,x28 + eor x4,x4,x30 + eor x2,x2,x26 + ldr x30,[x27],#8 // Iota[i++] + + bic x26,x7,x6 + tst x27,#255 // are we done? + str x27,[sp,#16] + bic x27,x8,x7 + bic x28,x5,x9 + eor x0,x0,x30 // A[0][0] ^= Iota + bic x30,x6,x5 + eor x5,x5,x26 + bic x26,x9,x8 + eor x6,x6,x27 + eor x8,x8,x28 + eor x9,x9,x30 + eor x7,x7,x26 + + bic x26,x12,x11 + bic x27,x13,x12 + bic x28,x10,x14 + bic x30,x11,x10 + eor x10,x10,x26 + bic x26,x14,x13 + eor x11,x11,x27 + eor x13,x13,x28 + eor x14,x14,x30 + eor x12,x12,x26 + + bic x26,x17,x16 + bic x27,x25,x17 + bic x28,x15,x19 + bic x30,x16,x15 + eor x15,x15,x26 + bic x26,x19,x25 + eor x16,x16,x27 + eor x25,x25,x28 + eor x19,x19,x30 + eor x17,x17,x26 + + bic x26,x22,x21 + bic x27,x23,x22 + bic x28,x20,x24 + bic x30,x21,x20 + eor x20,x20,x26 + bic x26,x24,x23 + eor x21,x21,x27 + eor x23,x23,x28 + eor x24,x24,x30 + eor x22,x22,x26 + + bne Loop + + ldr x30,[sp,#24] +.long 0xd50323bf // autiasp + ret + + + +.align 5 +KeccakF1600: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#48 + + str x0,[sp,#32] // offload argument + mov x26,x0 + ldp x0,x1,[x0,#16*0] + ldp x2,x3,[x26,#16*1] + ldp x4,x5,[x26,#16*2] + ldp x6,x7,[x26,#16*3] + ldp x8,x9,[x26,#16*4] + ldp x10,x11,[x26,#16*5] + ldp x12,x13,[x26,#16*6] + ldp x14,x15,[x26,#16*7] + ldp x16,x17,[x26,#16*8] + ldp x25,x19,[x26,#16*9] + ldp x20,x21,[x26,#16*10] + ldp x22,x23,[x26,#16*11] + ldr x24,[x26,#16*12] + + bl KeccakF1600_int + + ldr x26,[sp,#32] + stp x0,x1,[x26,#16*0] + stp x2,x3,[x26,#16*1] + stp x4,x5,[x26,#16*2] + stp x6,x7,[x26,#16*3] + stp x8,x9,[x26,#16*4] + stp x10,x11,[x26,#16*5] + stp x12,x13,[x26,#16*6] + stp x14,x15,[x26,#16*7] + stp x16,x17,[x26,#16*8] + stp x25,x19,[x26,#16*9] + stp x20,x21,[x26,#16*10] + stp x22,x23,[x26,#16*11] + str x24,[x26,#16*12] + + ldp x19,x20,[x29,#16] + add sp,sp,#48 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#128 +.long 0xd50323bf // autiasp + ret + + +.globl _SHA3_absorb + +.align 5 +_SHA3_absorb: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#64 + + stp x0,x1,[sp,#32] // offload arguments + stp x2,x3,[sp,#48] + + mov x26,x0 // uint64_t A[5][5] + mov x27,x1 // const void *inp + mov x28,x2 // size_t len + mov x30,x3 // size_t bsz + ldp x0,x1,[x26,#16*0] + ldp x2,x3,[x26,#16*1] + ldp x4,x5,[x26,#16*2] + ldp x6,x7,[x26,#16*3] + ldp x8,x9,[x26,#16*4] + ldp x10,x11,[x26,#16*5] + ldp x12,x13,[x26,#16*6] + ldp x14,x15,[x26,#16*7] + ldp x16,x17,[x26,#16*8] + ldp x25,x19,[x26,#16*9] + ldp x20,x21,[x26,#16*10] + ldp x22,x23,[x26,#16*11] + ldr x24,[x26,#16*12] + b Loop_absorb + +.align 4 +Loop_absorb: + subs x26,x28,x30 // len - bsz + blo Labsorbed + + str x26,[sp,#48] // save len - bsz + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x0,x0,x26 + cmp x30,#8*(0+2) + blo Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x1,x1,x26 + beq Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x2,x2,x26 + cmp x30,#8*(2+2) + blo Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x3,x3,x26 + beq Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x4,x4,x26 + cmp x30,#8*(4+2) + blo Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x5,x5,x26 + beq Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x6,x6,x26 + cmp x30,#8*(6+2) + blo Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x7,x7,x26 + beq Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x8,x8,x26 + cmp x30,#8*(8+2) + blo Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x9,x9,x26 + beq Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x10,x10,x26 + cmp x30,#8*(10+2) + blo Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x11,x11,x26 + beq Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x12,x12,x26 + cmp x30,#8*(12+2) + blo Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x13,x13,x26 + beq Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x14,x14,x26 + cmp x30,#8*(14+2) + blo Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x15,x15,x26 + beq Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x16,x16,x26 + cmp x30,#8*(16+2) + blo Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x17,x17,x26 + beq Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x25,x25,x26 + cmp x30,#8*(18+2) + blo Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x19,x19,x26 + beq Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x20,x20,x26 + cmp x30,#8*(20+2) + blo Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x21,x21,x26 + beq Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x22,x22,x26 + cmp x30,#8*(22+2) + blo Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x23,x23,x26 + beq Lprocess_block + ldr x26,[x27],#8 // *inp++ +#ifdef __AARCH64EB__ + rev x26,x26 +#endif + eor x24,x24,x26 + +Lprocess_block: + str x27,[sp,#40] // save inp + + bl KeccakF1600_int + + ldr x27,[sp,#40] // restore arguments + ldp x28,x30,[sp,#48] + b Loop_absorb + +.align 4 +Labsorbed: + ldr x27,[sp,#32] + stp x0,x1,[x27,#16*0] + stp x2,x3,[x27,#16*1] + stp x4,x5,[x27,#16*2] + stp x6,x7,[x27,#16*3] + stp x8,x9,[x27,#16*4] + stp x10,x11,[x27,#16*5] + stp x12,x13,[x27,#16*6] + stp x14,x15,[x27,#16*7] + stp x16,x17,[x27,#16*8] + stp x25,x19,[x27,#16*9] + stp x20,x21,[x27,#16*10] + stp x22,x23,[x27,#16*11] + str x24,[x27,#16*12] + + mov x0,x28 // return value + ldp x19,x20,[x29,#16] + add sp,sp,#64 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#128 +.long 0xd50323bf // autiasp + ret + +.globl _SHA3_squeeze + +.align 5 +_SHA3_squeeze: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-48]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + + mov x19,x0 // put aside arguments + mov x20,x1 + mov x21,x2 + mov x22,x3 + +Loop_squeeze: + ldr x4,[x0],#8 + cmp x21,#8 + blo Lsqueeze_tail +#ifdef __AARCH64EB__ + rev x4,x4 +#endif + str x4,[x20],#8 + subs x21,x21,#8 + beq Lsqueeze_done + + subs x3,x3,#8 + bhi Loop_squeeze + + mov x0,x19 + bl KeccakF1600 + mov x0,x19 + mov x3,x22 + b Loop_squeeze + +.align 4 +Lsqueeze_tail: + strb w4,[x20],#1 + lsr x4,x4,#8 + subs x21,x21,#1 + beq Lsqueeze_done + strb w4,[x20],#1 + lsr x4,x4,#8 + subs x21,x21,#1 + beq Lsqueeze_done + strb w4,[x20],#1 + lsr x4,x4,#8 + subs x21,x21,#1 + beq Lsqueeze_done + strb w4,[x20],#1 + lsr x4,x4,#8 + subs x21,x21,#1 + beq Lsqueeze_done + strb w4,[x20],#1 + lsr x4,x4,#8 + subs x21,x21,#1 + beq Lsqueeze_done + strb w4,[x20],#1 + lsr x4,x4,#8 + subs x21,x21,#1 + beq Lsqueeze_done + strb w4,[x20],#1 + +Lsqueeze_done: + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x29,x30,[sp],#48 +.long 0xd50323bf // autiasp + ret + + +.align 5 +KeccakF1600_ce: + mov x9,#12 + adr x10,iotas + b Loop_ce +.align 4 +Loop_ce: + ////////////////////////////////////////////////// Theta +.long 0xce052819 //eor3 v25.16b,v0.16b,v5.16b,v10.16b +.long 0xce062c3a //eor3 v26.16b,v1.16b,v6.16b,v11.16b +.long 0xce07305b //eor3 v27.16b,v2.16b,v7.16b,v12.16b +.long 0xce08347c //eor3 v28.16b,v3.16b,v8.16b,v13.16b +.long 0xce09389d //eor3 v29.16b,v4.16b,v9.16b,v14.16b +.long 0xce0f5339 //eor3 v25.16b,v25.16b, v15.16b,v20.16b +.long 0xce10575a //eor3 v26.16b,v26.16b, v16.16b,v21.16b +.long 0xce115b7b //eor3 v27.16b,v27.16b, v17.16b,v22.16b +.long 0xce125f9c //eor3 v28.16b,v28.16b, v18.16b,v23.16b +.long 0xce1363bd //eor3 v29.16b,v29.16b, v19.16b,v24.16b + +.long 0xce7b8f3e //rax1 v30.16b,v25.16b,v27.16b // D[1] +.long 0xce7c8f5f //rax1 v31.16b,v26.16b,v28.16b // D[2] +.long 0xce7d8f7b //rax1 v27.16b,v27.16b,v29.16b // D[3] +.long 0xce798f9c //rax1 v28.16b,v28.16b,v25.16b // D[4] +.long 0xce7a8fbd //rax1 v29.16b,v29.16b,v26.16b // D[0] + + ////////////////////////////////////////////////// Theta+Rho+Pi +.long 0xce9e50d9 //xar v25.16b, v6.16b,v30.16b,#64-44 // C[0]=A[0][1] +.long 0xce9cb126 //xar v6.16b,v9.16b,v28.16b,#64-20 +.long 0xce9f0ec9 //xar v9.16b,v22.16b,v31.16b,#64-61 +.long 0xce9c65d6 //xar v22.16b,v14.16b,v28.16b,#64-39 +.long 0xce9dba8e //xar v14.16b,v20.16b,v29.16b,#64-18 + +.long 0xce9f0854 //xar v20.16b,v2.16b,v31.16b,#64-62 + +.long 0xce9f5582 //xar v2.16b,v12.16b,v31.16b,#64-43 +.long 0xce9b9dac //xar v12.16b,v13.16b,v27.16b,#64-25 +.long 0xce9ce26d //xar v13.16b,v19.16b,v28.16b,#64-8 +.long 0xce9b22f3 //xar v19.16b,v23.16b,v27.16b,#64-56 +.long 0xce9d5df7 //xar v23.16b,v15.16b,v29.16b,#64-41 + +.long 0xce9c948f //xar v15.16b,v4.16b,v28.16b,#64-27 + + eor v0.16b,v0.16b,v29.16b + ldr x11,[x10],#8 + +.long 0xce9bae5a //xar v26.16b, v18.16b,v27.16b,#64-21 // C[1]=A[0][3] +.long 0xce9fc632 //xar v18.16b,v17.16b,v31.16b,#64-15 +.long 0xce9ed971 //xar v17.16b,v11.16b,v30.16b,#64-10 +.long 0xce9fe8eb //xar v11.16b,v7.16b,v31.16b,#64-6 +.long 0xce9df547 //xar v7.16b,v10.16b,v29.16b,#64-3 + +.long 0xce9efc2a //xar v10.16b,v1.16b,v30.16b,#64-1 // * + +.long 0xce9ccb04 //xar v4.16b,v24.16b,v28.16b,#64-14 +.long 0xce9efab8 //xar v24.16b,v21.16b,v30.16b,#64-2 +.long 0xce9b2515 //xar v21.16b,v8.16b,v27.16b,#64-55 +.long 0xce9e4e08 //xar v8.16b,v16.16b,v30.16b,#64-45 +.long 0xce9d70b0 //xar v16.16b,v5.16b,v29.16b,#64-36 + +.long 0xce9b907b //xar v27.16b, v3.16b,v27.16b,#64-28 // C[2]=A[1][0] + + ////////////////////////////////////////////////// Chi+Iota + dup v31.2d,x11 // borrow C[6] +.long 0xce22641c //bcax v28.16b, v0.16b,v2.16b,v25.16b // * +.long 0xce3a0b21 //bcax v1.16b,v25.16b, v26.16b, v2.16b // * +.long 0xce246842 //bcax v2.16b,v2.16b,v4.16b,v26.16b +.long 0xce201343 //bcax v3.16b,v26.16b, v0.16b,v4.16b +.long 0xce390084 //bcax v4.16b,v4.16b,v25.16b, v0.16b + +.long 0xce271b65 //bcax v5.16b,v27.16b, v7.16b,v6.16b // * +.long 0xce281cd9 //bcax v25.16b, v6.16b,v8.16b,v7.16b // * +.long 0xce2920e7 //bcax v7.16b,v7.16b,v9.16b,v8.16b +.long 0xce3b2508 //bcax v8.16b,v8.16b,v27.16b, v9.16b +.long 0xce266d29 //bcax v9.16b,v9.16b,v6.16b,v27.16b + + eor v0.16b,v28.16b,v31.16b // Iota + +.long 0xce2c2d5a //bcax v26.16b, v10.16b,v12.16b,v11.16b // * +.long 0xce2d317b //bcax v27.16b, v11.16b,v13.16b,v12.16b // * +.long 0xce2e358c //bcax v12.16b,v12.16b,v14.16b,v13.16b +.long 0xce2a39ad //bcax v13.16b,v13.16b,v10.16b,v14.16b +.long 0xce2b29ce //bcax v14.16b,v14.16b,v11.16b,v10.16b + +.long 0xce3141fc //bcax v28.16b, v15.16b,v17.16b,v16.16b // * +.long 0xce32461d //bcax v29.16b, v16.16b,v18.16b,v17.16b // * +.long 0xce334a31 //bcax v17.16b,v17.16b,v19.16b,v18.16b +.long 0xce2f4e52 //bcax v18.16b,v18.16b,v15.16b,v19.16b +.long 0xce303e73 //bcax v19.16b,v19.16b,v16.16b,v15.16b + +.long 0xce36569e //bcax v30.16b, v20.16b,v22.16b,v21.16b // * +.long 0xce375abf //bcax v31.16b, v21.16b,v23.16b,v22.16b // * +.long 0xce385ed6 //bcax v22.16b,v22.16b,v24.16b,v23.16b +.long 0xce3462f7 //bcax v23.16b,v23.16b,v20.16b,v24.16b +.long 0xce355318 //bcax v24.16b,v24.16b,v21.16b,v20.16b + ////////////////////////////////////////////////// Theta +.long 0xce056806 //eor3 v6.16b,v0.16b,v5.16b,v26.16b +.long 0xce196c2a //eor3 v10.16b,v1.16b,v25.16b,v27.16b +.long 0xce07304b //eor3 v11.16b,v2.16b,v7.16b,v12.16b +.long 0xce08346f //eor3 v15.16b,v3.16b,v8.16b,v13.16b +.long 0xce093890 //eor3 v16.16b,v4.16b,v9.16b,v14.16b +.long 0xce1c78c6 //eor3 v6.16b,v6.16b, v28.16b,v30.16b +.long 0xce1d7d4a //eor3 v10.16b,v10.16b, v29.16b,v31.16b +.long 0xce11596b //eor3 v11.16b,v11.16b, v17.16b,v22.16b +.long 0xce125def //eor3 v15.16b,v15.16b, v18.16b,v23.16b +.long 0xce136210 //eor3 v16.16b,v16.16b, v19.16b,v24.16b + +.long 0xce6b8cd4 //rax1 v20.16b,v6.16b,v11.16b // D[1] +.long 0xce6f8d55 //rax1 v21.16b,v10.16b,v15.16b // D[2] +.long 0xce708d6b //rax1 v11.16b,v11.16b,v16.16b // D[3] +.long 0xce668def //rax1 v15.16b,v15.16b,v6.16b // D[4] +.long 0xce6a8e10 //rax1 v16.16b,v16.16b,v10.16b // D[0] + + ////////////////////////////////////////////////// Theta+Rho+Pi +.long 0xce945326 //xar v6.16b, v25.16b,v20.16b,#64-44 // C[0]=A[0][1] +.long 0xce8fb139 //xar v25.16b,v9.16b,v15.16b,#64-20 +.long 0xce950ec9 //xar v9.16b,v22.16b,v21.16b,#64-61 +.long 0xce8f65d6 //xar v22.16b,v14.16b,v15.16b,#64-39 +.long 0xce90bbce //xar v14.16b,v30.16b,v16.16b,#64-18 + +.long 0xce95085e //xar v30.16b,v2.16b,v21.16b,#64-62 + +.long 0xce955582 //xar v2.16b,v12.16b,v21.16b,#64-43 +.long 0xce8b9dac //xar v12.16b,v13.16b,v11.16b,#64-25 +.long 0xce8fe26d //xar v13.16b,v19.16b,v15.16b,#64-8 +.long 0xce8b22f3 //xar v19.16b,v23.16b,v11.16b,#64-56 +.long 0xce905f97 //xar v23.16b,v28.16b,v16.16b,#64-41 + +.long 0xce8f949c //xar v28.16b,v4.16b,v15.16b,#64-27 + + eor v0.16b,v0.16b,v16.16b + ldr x11,[x10],#8 + +.long 0xce8bae4a //xar v10.16b, v18.16b,v11.16b,#64-21 // C[1]=A[0][3] +.long 0xce95c632 //xar v18.16b,v17.16b,v21.16b,#64-15 +.long 0xce94db71 //xar v17.16b,v27.16b,v20.16b,#64-10 +.long 0xce95e8fb //xar v27.16b,v7.16b,v21.16b,#64-6 +.long 0xce90f747 //xar v7.16b,v26.16b,v16.16b,#64-3 + +.long 0xce94fc3a //xar v26.16b,v1.16b,v20.16b,#64-1 // * + +.long 0xce8fcb04 //xar v4.16b,v24.16b,v15.16b,#64-14 +.long 0xce94fbf8 //xar v24.16b,v31.16b,v20.16b,#64-2 +.long 0xce8b251f //xar v31.16b,v8.16b,v11.16b,#64-55 +.long 0xce944fa8 //xar v8.16b,v29.16b,v20.16b,#64-45 +.long 0xce9070bd //xar v29.16b,v5.16b,v16.16b,#64-36 + +.long 0xce8b906b //xar v11.16b, v3.16b,v11.16b,#64-28 // C[2]=A[1][0] + + ////////////////////////////////////////////////// Chi+Iota + dup v21.2d,x11 // borrow C[6] +.long 0xce22180f //bcax v15.16b, v0.16b,v2.16b,v6.16b // * +.long 0xce2a08c1 //bcax v1.16b,v6.16b, v10.16b, v2.16b // * +.long 0xce242842 //bcax v2.16b,v2.16b,v4.16b,v10.16b +.long 0xce201143 //bcax v3.16b,v10.16b, v0.16b,v4.16b +.long 0xce260084 //bcax v4.16b,v4.16b,v6.16b, v0.16b + +.long 0xce276565 //bcax v5.16b,v11.16b, v7.16b,v25.16b // * +.long 0xce281f26 //bcax v6.16b, v25.16b,v8.16b,v7.16b // * +.long 0xce2920e7 //bcax v7.16b,v7.16b,v9.16b,v8.16b +.long 0xce2b2508 //bcax v8.16b,v8.16b,v11.16b, v9.16b +.long 0xce392d29 //bcax v9.16b,v9.16b,v25.16b,v11.16b + + eor v0.16b,v15.16b,v21.16b // Iota + +.long 0xce2c6f4a //bcax v10.16b, v26.16b,v12.16b,v27.16b // * +.long 0xce2d336b //bcax v11.16b, v27.16b,v13.16b,v12.16b // * +.long 0xce2e358c //bcax v12.16b,v12.16b,v14.16b,v13.16b +.long 0xce3a39ad //bcax v13.16b,v13.16b,v26.16b,v14.16b +.long 0xce3b69ce //bcax v14.16b,v14.16b,v27.16b,v26.16b + +.long 0xce31778f //bcax v15.16b, v28.16b,v17.16b,v29.16b // * +.long 0xce3247b0 //bcax v16.16b, v29.16b,v18.16b,v17.16b // * +.long 0xce334a31 //bcax v17.16b,v17.16b,v19.16b,v18.16b +.long 0xce3c4e52 //bcax v18.16b,v18.16b,v28.16b,v19.16b +.long 0xce3d7273 //bcax v19.16b,v19.16b,v29.16b,v28.16b + +.long 0xce367fd4 //bcax v20.16b, v30.16b,v22.16b,v31.16b // * +.long 0xce375bf5 //bcax v21.16b, v31.16b,v23.16b,v22.16b // * +.long 0xce385ed6 //bcax v22.16b,v22.16b,v24.16b,v23.16b +.long 0xce3e62f7 //bcax v23.16b,v23.16b,v30.16b,v24.16b +.long 0xce3f7b18 //bcax v24.16b,v24.16b,v31.16b,v30.16b + subs x9,x9,#1 + bne Loop_ce + + ret + + + +.align 5 +KeccakF1600_cext: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + stp d8,d9,[sp,#16] // per ABI requirement + stp d10,d11,[sp,#32] + stp d12,d13,[sp,#48] + stp d14,d15,[sp,#64] + ldp d0,d1,[x0,#8*0] + ldp d2,d3,[x0,#8*2] + ldp d4,d5,[x0,#8*4] + ldp d6,d7,[x0,#8*6] + ldp d8,d9,[x0,#8*8] + ldp d10,d11,[x0,#8*10] + ldp d12,d13,[x0,#8*12] + ldp d14,d15,[x0,#8*14] + ldp d16,d17,[x0,#8*16] + ldp d18,d19,[x0,#8*18] + ldp d20,d21,[x0,#8*20] + ldp d22,d23,[x0,#8*22] + ldr d24,[x0,#8*24] + bl KeccakF1600_ce + ldr x30,[sp,#8] + stp d0,d1,[x0,#8*0] + stp d2,d3,[x0,#8*2] + stp d4,d5,[x0,#8*4] + stp d6,d7,[x0,#8*6] + stp d8,d9,[x0,#8*8] + stp d10,d11,[x0,#8*10] + stp d12,d13,[x0,#8*12] + stp d14,d15,[x0,#8*14] + stp d16,d17,[x0,#8*16] + stp d18,d19,[x0,#8*18] + stp d20,d21,[x0,#8*20] + stp d22,d23,[x0,#8*22] + str d24,[x0,#8*24] + + ldp d8,d9,[sp,#16] + ldp d10,d11,[sp,#32] + ldp d12,d13,[sp,#48] + ldp d14,d15,[sp,#64] + ldr x29,[sp],#80 +.long 0xd50323bf // autiasp + ret + +.globl _SHA3_absorb_cext + +.align 5 +_SHA3_absorb_cext: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-80]! + add x29,sp,#0 + stp d8,d9,[sp,#16] // per ABI requirement + stp d10,d11,[sp,#32] + stp d12,d13,[sp,#48] + stp d14,d15,[sp,#64] + ldp d0,d1,[x0,#8*0] + ldp d2,d3,[x0,#8*2] + ldp d4,d5,[x0,#8*4] + ldp d6,d7,[x0,#8*6] + ldp d8,d9,[x0,#8*8] + ldp d10,d11,[x0,#8*10] + ldp d12,d13,[x0,#8*12] + ldp d14,d15,[x0,#8*14] + ldp d16,d17,[x0,#8*16] + ldp d18,d19,[x0,#8*18] + ldp d20,d21,[x0,#8*20] + ldp d22,d23,[x0,#8*22] + ldr d24,[x0,#8*24] + b Loop_absorb_ce + +.align 4 +Loop_absorb_ce: + subs x2,x2,x3 // len - bsz + blo Labsorbed_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v0.16b,v0.16b,v31.16b + cmp x3,#8*(0+2) + blo Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v1.16b,v1.16b,v31.16b + beq Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v2.16b,v2.16b,v31.16b + cmp x3,#8*(2+2) + blo Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v3.16b,v3.16b,v31.16b + beq Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v4.16b,v4.16b,v31.16b + cmp x3,#8*(4+2) + blo Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v5.16b,v5.16b,v31.16b + beq Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v6.16b,v6.16b,v31.16b + cmp x3,#8*(6+2) + blo Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v7.16b,v7.16b,v31.16b + beq Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v8.16b,v8.16b,v31.16b + cmp x3,#8*(8+2) + blo Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v9.16b,v9.16b,v31.16b + beq Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v10.16b,v10.16b,v31.16b + cmp x3,#8*(10+2) + blo Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v11.16b,v11.16b,v31.16b + beq Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v12.16b,v12.16b,v31.16b + cmp x3,#8*(12+2) + blo Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v13.16b,v13.16b,v31.16b + beq Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v14.16b,v14.16b,v31.16b + cmp x3,#8*(14+2) + blo Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v15.16b,v15.16b,v31.16b + beq Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v16.16b,v16.16b,v31.16b + cmp x3,#8*(16+2) + blo Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v17.16b,v17.16b,v31.16b + beq Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v18.16b,v18.16b,v31.16b + cmp x3,#8*(18+2) + blo Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v19.16b,v19.16b,v31.16b + beq Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v20.16b,v20.16b,v31.16b + cmp x3,#8*(20+2) + blo Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v21.16b,v21.16b,v31.16b + beq Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v22.16b,v22.16b,v31.16b + cmp x3,#8*(22+2) + blo Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v23.16b,v23.16b,v31.16b + beq Lprocess_block_ce + ldr d31,[x1],#8 // *inp++ +#ifdef __AARCH64EB__ + rev64 v31.16b,v31.16b +#endif + eor v24.16b,v24.16b,v31.16b + +Lprocess_block_ce: + + bl KeccakF1600_ce + + b Loop_absorb_ce + +.align 4 +Labsorbed_ce: + stp d0,d1,[x0,#8*0] + stp d2,d3,[x0,#8*2] + stp d4,d5,[x0,#8*4] + stp d6,d7,[x0,#8*6] + stp d8,d9,[x0,#8*8] + stp d10,d11,[x0,#8*10] + stp d12,d13,[x0,#8*12] + stp d14,d15,[x0,#8*14] + stp d16,d17,[x0,#8*16] + stp d18,d19,[x0,#8*18] + stp d20,d21,[x0,#8*20] + stp d22,d23,[x0,#8*22] + str d24,[x0,#8*24] + add x0,x2,x3 // return value + + ldp d8,d9,[sp,#16] + ldp d10,d11,[sp,#32] + ldp d12,d13,[sp,#48] + ldp d14,d15,[sp,#64] + ldp x29,x30,[sp],#80 +.long 0xd50323bf // autiasp + ret + +.globl _SHA3_squeeze_cext + +.align 5 +_SHA3_squeeze_cext: +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + mov x9,x0 + mov x10,x3 + +Loop_squeeze_ce: + ldr x4,[x9],#8 + cmp x2,#8 + blo Lsqueeze_tail_ce +#ifdef __AARCH64EB__ + rev x4,x4 +#endif + str x4,[x1],#8 + beq Lsqueeze_done_ce + + sub x2,x2,#8 + subs x10,x10,#8 + bhi Loop_squeeze_ce + + bl KeccakF1600_cext + ldr x30,[sp,#8] + mov x9,x0 + mov x10,x3 + b Loop_squeeze_ce + +.align 4 +Lsqueeze_tail_ce: + strb w4,[x1],#1 + lsr x4,x4,#8 + subs x2,x2,#1 + beq Lsqueeze_done_ce + strb w4,[x1],#1 + lsr x4,x4,#8 + subs x2,x2,#1 + beq Lsqueeze_done_ce + strb w4,[x1],#1 + lsr x4,x4,#8 + subs x2,x2,#1 + beq Lsqueeze_done_ce + strb w4,[x1],#1 + lsr x4,x4,#8 + subs x2,x2,#1 + beq Lsqueeze_done_ce + strb w4,[x1],#1 + lsr x4,x4,#8 + subs x2,x2,#1 + beq Lsqueeze_done_ce + strb w4,[x1],#1 + lsr x4,x4,#8 + subs x2,x2,#1 + beq Lsqueeze_done_ce + strb w4,[x1],#1 + +Lsqueeze_done_ce: + ldr x29,[sp],#16 +.long 0xd50323bf // autiasp + ret + +.byte 75,101,99,99,97,107,45,49,54,48,48,32,97,98,115,111,114,98,32,97,110,100,32,115,113,117,101,101,122,101,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 diff --git a/vere/ext/openssl/gen/macos-aarch64/crypto/sha/sha1-armv8.S b/vere/ext/openssl/gen/macos-aarch64/crypto/sha/sha1-armv8.S new file mode 100644 index 0000000..d5a5fc6 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/crypto/sha/sha1-armv8.S @@ -0,0 +1,1221 @@ +#include "arm_arch.h" + +.text + + +.private_extern _OPENSSL_armcap_P +.globl _sha1_block_data_order + +.align 6 +_sha1_block_data_order: +#ifdef __ILP32__ + ldrsw x16,LOPENSSL_armcap_P +#else + ldr x16,LOPENSSL_armcap_P +#endif + adr x17,LOPENSSL_armcap_P + add x16,x16,x17 + ldr w16,[x16] + tst w16,#ARMV8_SHA1 + b.ne Lv8_entry + + stp x29,x30,[sp,#-96]! + add x29,sp,#0 + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + + ldp w20,w21,[x0] + ldp w22,w23,[x0,#8] + ldr w24,[x0,#16] + +Loop: + ldr x3,[x1],#64 + movz w28,#0x7999 + sub x2,x2,#1 + movk w28,#0x5a82,lsl#16 +#ifdef __ARMEB__ + ror x3,x3,#32 +#else + rev32 x3,x3 +#endif + add w24,w24,w28 // warm it up + add w24,w24,w3 + lsr x4,x3,#32 + ldr x5,[x1,#-56] + bic w25,w23,w21 + and w26,w22,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + orr w25,w25,w26 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + add w23,w23,w4 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x5,x5,#32 +#else + rev32 x5,x5 +#endif + bic w25,w22,w20 + and w26,w21,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + orr w25,w25,w26 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + add w22,w22,w5 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + lsr x6,x5,#32 + ldr x7,[x1,#-48] + bic w25,w21,w24 + and w26,w20,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + orr w25,w25,w26 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + add w21,w21,w6 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x7,x7,#32 +#else + rev32 x7,x7 +#endif + bic w25,w20,w23 + and w26,w24,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + orr w25,w25,w26 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + add w20,w20,w7 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + lsr x8,x7,#32 + ldr x9,[x1,#-40] + bic w25,w24,w22 + and w26,w23,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + orr w25,w25,w26 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + add w24,w24,w8 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x9,x9,#32 +#else + rev32 x9,x9 +#endif + bic w25,w23,w21 + and w26,w22,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + orr w25,w25,w26 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + add w23,w23,w9 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + lsr x10,x9,#32 + ldr x11,[x1,#-32] + bic w25,w22,w20 + and w26,w21,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + orr w25,w25,w26 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + add w22,w22,w10 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x11,x11,#32 +#else + rev32 x11,x11 +#endif + bic w25,w21,w24 + and w26,w20,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + orr w25,w25,w26 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + add w21,w21,w11 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + lsr x12,x11,#32 + ldr x13,[x1,#-24] + bic w25,w20,w23 + and w26,w24,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + orr w25,w25,w26 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + add w20,w20,w12 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x13,x13,#32 +#else + rev32 x13,x13 +#endif + bic w25,w24,w22 + and w26,w23,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + orr w25,w25,w26 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + add w24,w24,w13 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + lsr x14,x13,#32 + ldr x15,[x1,#-16] + bic w25,w23,w21 + and w26,w22,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + orr w25,w25,w26 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + add w23,w23,w14 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x15,x15,#32 +#else + rev32 x15,x15 +#endif + bic w25,w22,w20 + and w26,w21,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + orr w25,w25,w26 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + add w22,w22,w15 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + lsr x16,x15,#32 + ldr x17,[x1,#-8] + bic w25,w21,w24 + and w26,w20,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + orr w25,w25,w26 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + add w21,w21,w16 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) +#ifdef __ARMEB__ + ror x17,x17,#32 +#else + rev32 x17,x17 +#endif + bic w25,w20,w23 + and w26,w24,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + orr w25,w25,w26 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + add w20,w20,w17 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + lsr x19,x17,#32 + eor w3,w3,w5 + bic w25,w24,w22 + and w26,w23,w22 + ror w27,w21,#27 + eor w3,w3,w11 + add w24,w24,w28 // future e+=K + orr w25,w25,w26 + add w20,w20,w27 // e+=rot(a,5) + eor w3,w3,w16 + ror w22,w22,#2 + add w24,w24,w19 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w3,w3,#31 + eor w4,w4,w6 + bic w25,w23,w21 + and w26,w22,w21 + ror w27,w20,#27 + eor w4,w4,w12 + add w23,w23,w28 // future e+=K + orr w25,w25,w26 + add w24,w24,w27 // e+=rot(a,5) + eor w4,w4,w17 + ror w21,w21,#2 + add w23,w23,w3 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w4,w4,#31 + eor w5,w5,w7 + bic w25,w22,w20 + and w26,w21,w20 + ror w27,w24,#27 + eor w5,w5,w13 + add w22,w22,w28 // future e+=K + orr w25,w25,w26 + add w23,w23,w27 // e+=rot(a,5) + eor w5,w5,w19 + ror w20,w20,#2 + add w22,w22,w4 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w5,w5,#31 + eor w6,w6,w8 + bic w25,w21,w24 + and w26,w20,w24 + ror w27,w23,#27 + eor w6,w6,w14 + add w21,w21,w28 // future e+=K + orr w25,w25,w26 + add w22,w22,w27 // e+=rot(a,5) + eor w6,w6,w3 + ror w24,w24,#2 + add w21,w21,w5 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w6,w6,#31 + eor w7,w7,w9 + bic w25,w20,w23 + and w26,w24,w23 + ror w27,w22,#27 + eor w7,w7,w15 + add w20,w20,w28 // future e+=K + orr w25,w25,w26 + add w21,w21,w27 // e+=rot(a,5) + eor w7,w7,w4 + ror w23,w23,#2 + add w20,w20,w6 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w7,w7,#31 + movz w28,#0xeba1 + movk w28,#0x6ed9,lsl#16 + eor w8,w8,w10 + bic w25,w24,w22 + and w26,w23,w22 + ror w27,w21,#27 + eor w8,w8,w16 + add w24,w24,w28 // future e+=K + orr w25,w25,w26 + add w20,w20,w27 // e+=rot(a,5) + eor w8,w8,w5 + ror w22,w22,#2 + add w24,w24,w7 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w8,w8,#31 + eor w9,w9,w11 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w9,w9,w17 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w9,w9,w6 + add w23,w23,w8 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w9,w9,#31 + eor w10,w10,w12 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w10,w10,w19 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w10,w10,w7 + add w22,w22,w9 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w10,w10,#31 + eor w11,w11,w13 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w11,w11,w3 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w11,w11,w8 + add w21,w21,w10 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w11,w11,#31 + eor w12,w12,w14 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w12,w12,w4 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w12,w12,w9 + add w20,w20,w11 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w12,w12,#31 + eor w13,w13,w15 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w13,w13,w5 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w13,w13,w10 + add w24,w24,w12 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w13,w13,#31 + eor w14,w14,w16 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w14,w14,w6 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w14,w14,w11 + add w23,w23,w13 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w14,w14,#31 + eor w15,w15,w17 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w15,w15,w7 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w15,w15,w12 + add w22,w22,w14 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w15,w15,#31 + eor w16,w16,w19 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w16,w16,w8 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w16,w16,w13 + add w21,w21,w15 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w16,w16,#31 + eor w17,w17,w3 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w17,w17,w9 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w17,w17,w14 + add w20,w20,w16 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w17,w17,#31 + eor w19,w19,w4 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w19,w19,w10 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w19,w19,w15 + add w24,w24,w17 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w19,w19,#31 + eor w3,w3,w5 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w3,w3,w11 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w3,w3,w16 + add w23,w23,w19 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w3,w3,#31 + eor w4,w4,w6 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w4,w4,w12 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w4,w4,w17 + add w22,w22,w3 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w4,w4,#31 + eor w5,w5,w7 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w5,w5,w13 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w5,w5,w19 + add w21,w21,w4 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w5,w5,#31 + eor w6,w6,w8 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w6,w6,w14 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w6,w6,w3 + add w20,w20,w5 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w6,w6,#31 + eor w7,w7,w9 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w7,w7,w15 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w7,w7,w4 + add w24,w24,w6 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w7,w7,#31 + eor w8,w8,w10 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w8,w8,w16 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w8,w8,w5 + add w23,w23,w7 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w8,w8,#31 + eor w9,w9,w11 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w9,w9,w17 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w9,w9,w6 + add w22,w22,w8 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w9,w9,#31 + eor w10,w10,w12 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w10,w10,w19 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w10,w10,w7 + add w21,w21,w9 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w10,w10,#31 + eor w11,w11,w13 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w11,w11,w3 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w11,w11,w8 + add w20,w20,w10 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w11,w11,#31 + movz w28,#0xbcdc + movk w28,#0x8f1b,lsl#16 + eor w12,w12,w14 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w12,w12,w4 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w12,w12,w9 + add w24,w24,w11 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w12,w12,#31 + orr w25,w21,w22 + and w26,w21,w22 + eor w13,w13,w15 + ror w27,w20,#27 + and w25,w25,w23 + add w23,w23,w28 // future e+=K + eor w13,w13,w5 + add w24,w24,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w21,w21,#2 + eor w13,w13,w10 + add w23,w23,w12 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w13,w13,#31 + orr w25,w20,w21 + and w26,w20,w21 + eor w14,w14,w16 + ror w27,w24,#27 + and w25,w25,w22 + add w22,w22,w28 // future e+=K + eor w14,w14,w6 + add w23,w23,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w20,w20,#2 + eor w14,w14,w11 + add w22,w22,w13 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w14,w14,#31 + orr w25,w24,w20 + and w26,w24,w20 + eor w15,w15,w17 + ror w27,w23,#27 + and w25,w25,w21 + add w21,w21,w28 // future e+=K + eor w15,w15,w7 + add w22,w22,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w24,w24,#2 + eor w15,w15,w12 + add w21,w21,w14 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w15,w15,#31 + orr w25,w23,w24 + and w26,w23,w24 + eor w16,w16,w19 + ror w27,w22,#27 + and w25,w25,w20 + add w20,w20,w28 // future e+=K + eor w16,w16,w8 + add w21,w21,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w23,w23,#2 + eor w16,w16,w13 + add w20,w20,w15 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w16,w16,#31 + orr w25,w22,w23 + and w26,w22,w23 + eor w17,w17,w3 + ror w27,w21,#27 + and w25,w25,w24 + add w24,w24,w28 // future e+=K + eor w17,w17,w9 + add w20,w20,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w22,w22,#2 + eor w17,w17,w14 + add w24,w24,w16 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w17,w17,#31 + orr w25,w21,w22 + and w26,w21,w22 + eor w19,w19,w4 + ror w27,w20,#27 + and w25,w25,w23 + add w23,w23,w28 // future e+=K + eor w19,w19,w10 + add w24,w24,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w21,w21,#2 + eor w19,w19,w15 + add w23,w23,w17 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w19,w19,#31 + orr w25,w20,w21 + and w26,w20,w21 + eor w3,w3,w5 + ror w27,w24,#27 + and w25,w25,w22 + add w22,w22,w28 // future e+=K + eor w3,w3,w11 + add w23,w23,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w20,w20,#2 + eor w3,w3,w16 + add w22,w22,w19 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w3,w3,#31 + orr w25,w24,w20 + and w26,w24,w20 + eor w4,w4,w6 + ror w27,w23,#27 + and w25,w25,w21 + add w21,w21,w28 // future e+=K + eor w4,w4,w12 + add w22,w22,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w24,w24,#2 + eor w4,w4,w17 + add w21,w21,w3 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w4,w4,#31 + orr w25,w23,w24 + and w26,w23,w24 + eor w5,w5,w7 + ror w27,w22,#27 + and w25,w25,w20 + add w20,w20,w28 // future e+=K + eor w5,w5,w13 + add w21,w21,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w23,w23,#2 + eor w5,w5,w19 + add w20,w20,w4 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w5,w5,#31 + orr w25,w22,w23 + and w26,w22,w23 + eor w6,w6,w8 + ror w27,w21,#27 + and w25,w25,w24 + add w24,w24,w28 // future e+=K + eor w6,w6,w14 + add w20,w20,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w22,w22,#2 + eor w6,w6,w3 + add w24,w24,w5 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w6,w6,#31 + orr w25,w21,w22 + and w26,w21,w22 + eor w7,w7,w9 + ror w27,w20,#27 + and w25,w25,w23 + add w23,w23,w28 // future e+=K + eor w7,w7,w15 + add w24,w24,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w21,w21,#2 + eor w7,w7,w4 + add w23,w23,w6 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w7,w7,#31 + orr w25,w20,w21 + and w26,w20,w21 + eor w8,w8,w10 + ror w27,w24,#27 + and w25,w25,w22 + add w22,w22,w28 // future e+=K + eor w8,w8,w16 + add w23,w23,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w20,w20,#2 + eor w8,w8,w5 + add w22,w22,w7 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w8,w8,#31 + orr w25,w24,w20 + and w26,w24,w20 + eor w9,w9,w11 + ror w27,w23,#27 + and w25,w25,w21 + add w21,w21,w28 // future e+=K + eor w9,w9,w17 + add w22,w22,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w24,w24,#2 + eor w9,w9,w6 + add w21,w21,w8 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w9,w9,#31 + orr w25,w23,w24 + and w26,w23,w24 + eor w10,w10,w12 + ror w27,w22,#27 + and w25,w25,w20 + add w20,w20,w28 // future e+=K + eor w10,w10,w19 + add w21,w21,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w23,w23,#2 + eor w10,w10,w7 + add w20,w20,w9 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w10,w10,#31 + orr w25,w22,w23 + and w26,w22,w23 + eor w11,w11,w13 + ror w27,w21,#27 + and w25,w25,w24 + add w24,w24,w28 // future e+=K + eor w11,w11,w3 + add w20,w20,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w22,w22,#2 + eor w11,w11,w8 + add w24,w24,w10 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w11,w11,#31 + orr w25,w21,w22 + and w26,w21,w22 + eor w12,w12,w14 + ror w27,w20,#27 + and w25,w25,w23 + add w23,w23,w28 // future e+=K + eor w12,w12,w4 + add w24,w24,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w21,w21,#2 + eor w12,w12,w9 + add w23,w23,w11 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w12,w12,#31 + orr w25,w20,w21 + and w26,w20,w21 + eor w13,w13,w15 + ror w27,w24,#27 + and w25,w25,w22 + add w22,w22,w28 // future e+=K + eor w13,w13,w5 + add w23,w23,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w20,w20,#2 + eor w13,w13,w10 + add w22,w22,w12 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w13,w13,#31 + orr w25,w24,w20 + and w26,w24,w20 + eor w14,w14,w16 + ror w27,w23,#27 + and w25,w25,w21 + add w21,w21,w28 // future e+=K + eor w14,w14,w6 + add w22,w22,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w24,w24,#2 + eor w14,w14,w11 + add w21,w21,w13 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w14,w14,#31 + orr w25,w23,w24 + and w26,w23,w24 + eor w15,w15,w17 + ror w27,w22,#27 + and w25,w25,w20 + add w20,w20,w28 // future e+=K + eor w15,w15,w7 + add w21,w21,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w23,w23,#2 + eor w15,w15,w12 + add w20,w20,w14 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w15,w15,#31 + movz w28,#0xc1d6 + movk w28,#0xca62,lsl#16 + orr w25,w22,w23 + and w26,w22,w23 + eor w16,w16,w19 + ror w27,w21,#27 + and w25,w25,w24 + add w24,w24,w28 // future e+=K + eor w16,w16,w8 + add w20,w20,w27 // e+=rot(a,5) + orr w25,w25,w26 + ror w22,w22,#2 + eor w16,w16,w13 + add w24,w24,w15 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w16,w16,#31 + eor w17,w17,w3 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w17,w17,w9 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w17,w17,w14 + add w23,w23,w16 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w17,w17,#31 + eor w19,w19,w4 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w19,w19,w10 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w19,w19,w15 + add w22,w22,w17 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w19,w19,#31 + eor w3,w3,w5 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w3,w3,w11 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w3,w3,w16 + add w21,w21,w19 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w3,w3,#31 + eor w4,w4,w6 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w4,w4,w12 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w4,w4,w17 + add w20,w20,w3 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w4,w4,#31 + eor w5,w5,w7 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w5,w5,w13 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w5,w5,w19 + add w24,w24,w4 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w5,w5,#31 + eor w6,w6,w8 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w6,w6,w14 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w6,w6,w3 + add w23,w23,w5 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w6,w6,#31 + eor w7,w7,w9 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w7,w7,w15 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w7,w7,w4 + add w22,w22,w6 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w7,w7,#31 + eor w8,w8,w10 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w8,w8,w16 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w8,w8,w5 + add w21,w21,w7 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w8,w8,#31 + eor w9,w9,w11 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w9,w9,w17 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w9,w9,w6 + add w20,w20,w8 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w9,w9,#31 + eor w10,w10,w12 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w10,w10,w19 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w10,w10,w7 + add w24,w24,w9 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w10,w10,#31 + eor w11,w11,w13 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w11,w11,w3 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w11,w11,w8 + add w23,w23,w10 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w11,w11,#31 + eor w12,w12,w14 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w12,w12,w4 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w12,w12,w9 + add w22,w22,w11 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w12,w12,#31 + eor w13,w13,w15 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w13,w13,w5 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w13,w13,w10 + add w21,w21,w12 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w13,w13,#31 + eor w14,w14,w16 + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w14,w14,w6 + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + eor w14,w14,w11 + add w20,w20,w13 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ror w14,w14,#31 + eor w15,w15,w17 + eor w25,w24,w22 + ror w27,w21,#27 + add w24,w24,w28 // future e+=K + eor w15,w15,w7 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + eor w15,w15,w12 + add w24,w24,w14 // future e+=X[i] + add w20,w20,w25 // e+=F(b,c,d) + ror w15,w15,#31 + eor w16,w16,w19 + eor w25,w23,w21 + ror w27,w20,#27 + add w23,w23,w28 // future e+=K + eor w16,w16,w8 + eor w25,w25,w22 + add w24,w24,w27 // e+=rot(a,5) + ror w21,w21,#2 + eor w16,w16,w13 + add w23,w23,w15 // future e+=X[i] + add w24,w24,w25 // e+=F(b,c,d) + ror w16,w16,#31 + eor w17,w17,w3 + eor w25,w22,w20 + ror w27,w24,#27 + add w22,w22,w28 // future e+=K + eor w17,w17,w9 + eor w25,w25,w21 + add w23,w23,w27 // e+=rot(a,5) + ror w20,w20,#2 + eor w17,w17,w14 + add w22,w22,w16 // future e+=X[i] + add w23,w23,w25 // e+=F(b,c,d) + ror w17,w17,#31 + eor w19,w19,w4 + eor w25,w21,w24 + ror w27,w23,#27 + add w21,w21,w28 // future e+=K + eor w19,w19,w10 + eor w25,w25,w20 + add w22,w22,w27 // e+=rot(a,5) + ror w24,w24,#2 + eor w19,w19,w15 + add w21,w21,w17 // future e+=X[i] + add w22,w22,w25 // e+=F(b,c,d) + ror w19,w19,#31 + ldp w4,w5,[x0] + eor w25,w20,w23 + ror w27,w22,#27 + add w20,w20,w28 // future e+=K + eor w25,w25,w24 + add w21,w21,w27 // e+=rot(a,5) + ror w23,w23,#2 + add w20,w20,w19 // future e+=X[i] + add w21,w21,w25 // e+=F(b,c,d) + ldp w6,w7,[x0,#8] + eor w25,w24,w22 + ror w27,w21,#27 + eor w25,w25,w23 + add w20,w20,w27 // e+=rot(a,5) + ror w22,w22,#2 + ldr w8,[x0,#16] + add w20,w20,w25 // e+=F(b,c,d) + add w21,w21,w5 + add w22,w22,w6 + add w20,w20,w4 + add w23,w23,w7 + add w24,w24,w8 + stp w20,w21,[x0] + stp w22,w23,[x0,#8] + str w24,[x0,#16] + cbnz x2,Loop + + ldp x19,x20,[sp,#16] + ldp x21,x22,[sp,#32] + ldp x23,x24,[sp,#48] + ldp x25,x26,[sp,#64] + ldp x27,x28,[sp,#80] + ldr x29,[sp],#96 + ret + + +.align 6 +sha1_block_armv8: +Lv8_entry: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + adr x4,Lconst + eor v1.16b,v1.16b,v1.16b + ld1 {v0.4s},[x0],#16 + ld1 {v1.s}[0],[x0] + sub x0,x0,#16 + ld1 {v16.4s,v17.4s,v18.4s,v19.4s},[x4] + +Loop_hw: + ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64 + sub x2,x2,#1 + rev32 v4.16b,v4.16b + rev32 v5.16b,v5.16b + + add v20.4s,v16.4s,v4.4s + rev32 v6.16b,v6.16b + orr v22.16b,v0.16b,v0.16b // offload + + add v21.4s,v16.4s,v5.4s + rev32 v7.16b,v7.16b +.long 0x5e280803 //sha1h v3.16b,v0.16b +.long 0x5e140020 //sha1c v0.16b,v1.16b,v20.4s // 0 + add v20.4s,v16.4s,v6.4s +.long 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b +.long 0x5e280802 //sha1h v2.16b,v0.16b // 1 +.long 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s + add v21.4s,v16.4s,v7.4s +.long 0x5e2818e4 //sha1su1 v4.16b,v7.16b +.long 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b +.long 0x5e280803 //sha1h v3.16b,v0.16b // 2 +.long 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s + add v20.4s,v16.4s,v4.4s +.long 0x5e281885 //sha1su1 v5.16b,v4.16b +.long 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b +.long 0x5e280802 //sha1h v2.16b,v0.16b // 3 +.long 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s + add v21.4s,v17.4s,v5.4s +.long 0x5e2818a6 //sha1su1 v6.16b,v5.16b +.long 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b +.long 0x5e280803 //sha1h v3.16b,v0.16b // 4 +.long 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s + add v20.4s,v17.4s,v6.4s +.long 0x5e2818c7 //sha1su1 v7.16b,v6.16b +.long 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b +.long 0x5e280802 //sha1h v2.16b,v0.16b // 5 +.long 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s + add v21.4s,v17.4s,v7.4s +.long 0x5e2818e4 //sha1su1 v4.16b,v7.16b +.long 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b +.long 0x5e280803 //sha1h v3.16b,v0.16b // 6 +.long 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s + add v20.4s,v17.4s,v4.4s +.long 0x5e281885 //sha1su1 v5.16b,v4.16b +.long 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b +.long 0x5e280802 //sha1h v2.16b,v0.16b // 7 +.long 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s + add v21.4s,v17.4s,v5.4s +.long 0x5e2818a6 //sha1su1 v6.16b,v5.16b +.long 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b +.long 0x5e280803 //sha1h v3.16b,v0.16b // 8 +.long 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s + add v20.4s,v18.4s,v6.4s +.long 0x5e2818c7 //sha1su1 v7.16b,v6.16b +.long 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b +.long 0x5e280802 //sha1h v2.16b,v0.16b // 9 +.long 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s + add v21.4s,v18.4s,v7.4s +.long 0x5e2818e4 //sha1su1 v4.16b,v7.16b +.long 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b +.long 0x5e280803 //sha1h v3.16b,v0.16b // 10 +.long 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s + add v20.4s,v18.4s,v4.4s +.long 0x5e281885 //sha1su1 v5.16b,v4.16b +.long 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b +.long 0x5e280802 //sha1h v2.16b,v0.16b // 11 +.long 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s + add v21.4s,v18.4s,v5.4s +.long 0x5e2818a6 //sha1su1 v6.16b,v5.16b +.long 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b +.long 0x5e280803 //sha1h v3.16b,v0.16b // 12 +.long 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s + add v20.4s,v18.4s,v6.4s +.long 0x5e2818c7 //sha1su1 v7.16b,v6.16b +.long 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b +.long 0x5e280802 //sha1h v2.16b,v0.16b // 13 +.long 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s + add v21.4s,v19.4s,v7.4s +.long 0x5e2818e4 //sha1su1 v4.16b,v7.16b +.long 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b +.long 0x5e280803 //sha1h v3.16b,v0.16b // 14 +.long 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s + add v20.4s,v19.4s,v4.4s +.long 0x5e281885 //sha1su1 v5.16b,v4.16b +.long 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b +.long 0x5e280802 //sha1h v2.16b,v0.16b // 15 +.long 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s + add v21.4s,v19.4s,v5.4s +.long 0x5e2818a6 //sha1su1 v6.16b,v5.16b +.long 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b +.long 0x5e280803 //sha1h v3.16b,v0.16b // 16 +.long 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s + add v20.4s,v19.4s,v6.4s +.long 0x5e2818c7 //sha1su1 v7.16b,v6.16b +.long 0x5e280802 //sha1h v2.16b,v0.16b // 17 +.long 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s + add v21.4s,v19.4s,v7.4s + +.long 0x5e280803 //sha1h v3.16b,v0.16b // 18 +.long 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s + +.long 0x5e280802 //sha1h v2.16b,v0.16b // 19 +.long 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s + + add v1.4s,v1.4s,v2.4s + add v0.4s,v0.4s,v22.4s + + cbnz x2,Loop_hw + + st1 {v0.4s},[x0],#16 + st1 {v1.s}[0],[x0] + + ldr x29,[sp],#16 + ret + +.align 6 +Lconst: +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 //K_00_19 +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 //K_20_39 +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc //K_40_59 +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 //K_60_79 +LOPENSSL_armcap_P: +#ifdef __ILP32__ +.long _OPENSSL_armcap_P-. +#else +.quad ARMV7_NEON +#endif +.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 diff --git a/vere/ext/openssl/gen/macos-aarch64/crypto/sha/sha256-armv8.S b/vere/ext/openssl/gen/macos-aarch64/crypto/sha/sha256-armv8.S new file mode 100644 index 0000000..2439362 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/crypto/sha/sha256-armv8.S @@ -0,0 +1,2063 @@ +// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. +// +// Licensed under the OpenSSL license (the "License"). You may not use +// this file except in compliance with the License. You can obtain a copy +// in the file LICENSE in the source distribution or at +// https://www.openssl.org/source/license.html + +// ==================================================================== +// Written by Andy Polyakov for the OpenSSL +// project. The module is, however, dual licensed under OpenSSL and +// CRYPTOGAMS licenses depending on where you obtain it. For further +// details see http://www.openssl.org/~appro/cryptogams/. +// +// Permission to use under GPLv2 terms is granted. +// ==================================================================== +// +// SHA256/512 for ARMv8. +// +// Performance in cycles per processed byte and improvement coefficient +// over code generated with "default" compiler: +// +// SHA256-hw SHA256(*) SHA512 +// Apple A7 1.97 10.5 (+33%) 6.73 (-1%(**)) +// Cortex-A53 2.38 15.5 (+115%) 10.0 (+150%(***)) +// Cortex-A57 2.31 11.6 (+86%) 7.51 (+260%(***)) +// Denver 2.01 10.5 (+26%) 6.70 (+8%) +// X-Gene 20.0 (+100%) 12.8 (+300%(***)) +// Mongoose 2.36 13.0 (+50%) 8.36 (+33%) +// Kryo 1.92 17.4 (+30%) 11.2 (+8%) +// +// (*) Software SHA256 results are of lesser relevance, presented +// mostly for informational purposes. +// (**) The result is a trade-off: it's possible to improve it by +// 10% (or by 1 cycle per round), but at the cost of 20% loss +// on Cortex-A53 (or by 4 cycles per round). +// (***) Super-impressive coefficients over gcc-generated code are +// indication of some compiler "pathology", most notably code +// generated with -mgeneral-regs-only is significantly faster +// and the gap is only 40-90%. +// +// October 2016. +// +// Originally it was reckoned that it makes no sense to implement NEON +// version of SHA256 for 64-bit processors. This is because performance +// improvement on most wide-spread Cortex-A5x processors was observed +// to be marginal, same on Cortex-A53 and ~10% on A57. But then it was +// observed that 32-bit NEON SHA256 performs significantly better than +// 64-bit scalar version on *some* of the more recent processors. As +// result 64-bit NEON version of SHA256 was added to provide best +// all-round performance. For example it executes ~30% faster on X-Gene +// and Mongoose. [For reference, NEON version of SHA512 is bound to +// deliver much less improvement, likely *negative* on Cortex-A5x. +// Which is why NEON support is limited to SHA256.] + +#ifndef __KERNEL__ +# include "arm_arch.h" +#endif + +.text + + +.private_extern _OPENSSL_armcap_P +.globl _sha256_block_data_order + +.align 6 +_sha256_block_data_order: +#ifndef __KERNEL__ +# ifdef __ILP32__ + ldrsw x16,LOPENSSL_armcap_P +# else + ldr x16,LOPENSSL_armcap_P +# endif + adr x17,LOPENSSL_armcap_P + add x16,x16,x17 + ldr w16,[x16] + tst w16,#ARMV8_SHA256 + b.ne Lv8_entry + tst w16,#ARMV7_NEON + b.ne Lneon_entry +#endif +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#4*4 + + ldp w20,w21,[x0] // load context + ldp w22,w23,[x0,#2*4] + ldp w24,w25,[x0,#4*4] + add x2,x1,x2,lsl#6 // end of input + ldp w26,w27,[x0,#6*4] + adr x30,LK256 + stp x0,x2,[x29,#96] + +Loop: + ldp w3,w4,[x1],#2*4 + ldr w19,[x30],#4 // *K++ + eor w28,w21,w22 // magic seed + str x1,[x29,#112] +#ifndef __AARCH64EB__ + rev w3,w3 // 0 +#endif + ror w16,w24,#6 + add w27,w27,w19 // h+=K[i] + eor w6,w24,w24,ror#14 + and w17,w25,w24 + bic w19,w26,w24 + add w27,w27,w3 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w20,w21 // a^b, b^c in next round + eor w16,w16,w6,ror#11 // Sigma1(e) + ror w6,w20,#2 + add w27,w27,w17 // h+=Ch(e,f,g) + eor w17,w20,w20,ror#9 + add w27,w27,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w23,w23,w27 // d+=h + eor w28,w28,w21 // Maj(a,b,c) + eor w17,w6,w17,ror#13 // Sigma0(a) + add w27,w27,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w27,w27,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w4,w4 // 1 +#endif + ldp w5,w6,[x1],#2*4 + add w27,w27,w17 // h+=Sigma0(a) + ror w16,w23,#6 + add w26,w26,w28 // h+=K[i] + eor w7,w23,w23,ror#14 + and w17,w24,w23 + bic w28,w25,w23 + add w26,w26,w4 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w27,w20 // a^b, b^c in next round + eor w16,w16,w7,ror#11 // Sigma1(e) + ror w7,w27,#2 + add w26,w26,w17 // h+=Ch(e,f,g) + eor w17,w27,w27,ror#9 + add w26,w26,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w22,w22,w26 // d+=h + eor w19,w19,w20 // Maj(a,b,c) + eor w17,w7,w17,ror#13 // Sigma0(a) + add w26,w26,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w26,w26,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w5,w5 // 2 +#endif + add w26,w26,w17 // h+=Sigma0(a) + ror w16,w22,#6 + add w25,w25,w19 // h+=K[i] + eor w8,w22,w22,ror#14 + and w17,w23,w22 + bic w19,w24,w22 + add w25,w25,w5 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w26,w27 // a^b, b^c in next round + eor w16,w16,w8,ror#11 // Sigma1(e) + ror w8,w26,#2 + add w25,w25,w17 // h+=Ch(e,f,g) + eor w17,w26,w26,ror#9 + add w25,w25,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w21,w21,w25 // d+=h + eor w28,w28,w27 // Maj(a,b,c) + eor w17,w8,w17,ror#13 // Sigma0(a) + add w25,w25,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w25,w25,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w6,w6 // 3 +#endif + ldp w7,w8,[x1],#2*4 + add w25,w25,w17 // h+=Sigma0(a) + ror w16,w21,#6 + add w24,w24,w28 // h+=K[i] + eor w9,w21,w21,ror#14 + and w17,w22,w21 + bic w28,w23,w21 + add w24,w24,w6 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w25,w26 // a^b, b^c in next round + eor w16,w16,w9,ror#11 // Sigma1(e) + ror w9,w25,#2 + add w24,w24,w17 // h+=Ch(e,f,g) + eor w17,w25,w25,ror#9 + add w24,w24,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w20,w20,w24 // d+=h + eor w19,w19,w26 // Maj(a,b,c) + eor w17,w9,w17,ror#13 // Sigma0(a) + add w24,w24,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w24,w24,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w7,w7 // 4 +#endif + add w24,w24,w17 // h+=Sigma0(a) + ror w16,w20,#6 + add w23,w23,w19 // h+=K[i] + eor w10,w20,w20,ror#14 + and w17,w21,w20 + bic w19,w22,w20 + add w23,w23,w7 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w24,w25 // a^b, b^c in next round + eor w16,w16,w10,ror#11 // Sigma1(e) + ror w10,w24,#2 + add w23,w23,w17 // h+=Ch(e,f,g) + eor w17,w24,w24,ror#9 + add w23,w23,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w27,w27,w23 // d+=h + eor w28,w28,w25 // Maj(a,b,c) + eor w17,w10,w17,ror#13 // Sigma0(a) + add w23,w23,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w23,w23,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w8,w8 // 5 +#endif + ldp w9,w10,[x1],#2*4 + add w23,w23,w17 // h+=Sigma0(a) + ror w16,w27,#6 + add w22,w22,w28 // h+=K[i] + eor w11,w27,w27,ror#14 + and w17,w20,w27 + bic w28,w21,w27 + add w22,w22,w8 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w23,w24 // a^b, b^c in next round + eor w16,w16,w11,ror#11 // Sigma1(e) + ror w11,w23,#2 + add w22,w22,w17 // h+=Ch(e,f,g) + eor w17,w23,w23,ror#9 + add w22,w22,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w26,w26,w22 // d+=h + eor w19,w19,w24 // Maj(a,b,c) + eor w17,w11,w17,ror#13 // Sigma0(a) + add w22,w22,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w22,w22,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w9,w9 // 6 +#endif + add w22,w22,w17 // h+=Sigma0(a) + ror w16,w26,#6 + add w21,w21,w19 // h+=K[i] + eor w12,w26,w26,ror#14 + and w17,w27,w26 + bic w19,w20,w26 + add w21,w21,w9 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w22,w23 // a^b, b^c in next round + eor w16,w16,w12,ror#11 // Sigma1(e) + ror w12,w22,#2 + add w21,w21,w17 // h+=Ch(e,f,g) + eor w17,w22,w22,ror#9 + add w21,w21,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w25,w25,w21 // d+=h + eor w28,w28,w23 // Maj(a,b,c) + eor w17,w12,w17,ror#13 // Sigma0(a) + add w21,w21,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w21,w21,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w10,w10 // 7 +#endif + ldp w11,w12,[x1],#2*4 + add w21,w21,w17 // h+=Sigma0(a) + ror w16,w25,#6 + add w20,w20,w28 // h+=K[i] + eor w13,w25,w25,ror#14 + and w17,w26,w25 + bic w28,w27,w25 + add w20,w20,w10 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w21,w22 // a^b, b^c in next round + eor w16,w16,w13,ror#11 // Sigma1(e) + ror w13,w21,#2 + add w20,w20,w17 // h+=Ch(e,f,g) + eor w17,w21,w21,ror#9 + add w20,w20,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w24,w24,w20 // d+=h + eor w19,w19,w22 // Maj(a,b,c) + eor w17,w13,w17,ror#13 // Sigma0(a) + add w20,w20,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w20,w20,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w11,w11 // 8 +#endif + add w20,w20,w17 // h+=Sigma0(a) + ror w16,w24,#6 + add w27,w27,w19 // h+=K[i] + eor w14,w24,w24,ror#14 + and w17,w25,w24 + bic w19,w26,w24 + add w27,w27,w11 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w20,w21 // a^b, b^c in next round + eor w16,w16,w14,ror#11 // Sigma1(e) + ror w14,w20,#2 + add w27,w27,w17 // h+=Ch(e,f,g) + eor w17,w20,w20,ror#9 + add w27,w27,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w23,w23,w27 // d+=h + eor w28,w28,w21 // Maj(a,b,c) + eor w17,w14,w17,ror#13 // Sigma0(a) + add w27,w27,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w27,w27,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w12,w12 // 9 +#endif + ldp w13,w14,[x1],#2*4 + add w27,w27,w17 // h+=Sigma0(a) + ror w16,w23,#6 + add w26,w26,w28 // h+=K[i] + eor w15,w23,w23,ror#14 + and w17,w24,w23 + bic w28,w25,w23 + add w26,w26,w12 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w27,w20 // a^b, b^c in next round + eor w16,w16,w15,ror#11 // Sigma1(e) + ror w15,w27,#2 + add w26,w26,w17 // h+=Ch(e,f,g) + eor w17,w27,w27,ror#9 + add w26,w26,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w22,w22,w26 // d+=h + eor w19,w19,w20 // Maj(a,b,c) + eor w17,w15,w17,ror#13 // Sigma0(a) + add w26,w26,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w26,w26,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w13,w13 // 10 +#endif + add w26,w26,w17 // h+=Sigma0(a) + ror w16,w22,#6 + add w25,w25,w19 // h+=K[i] + eor w0,w22,w22,ror#14 + and w17,w23,w22 + bic w19,w24,w22 + add w25,w25,w13 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w26,w27 // a^b, b^c in next round + eor w16,w16,w0,ror#11 // Sigma1(e) + ror w0,w26,#2 + add w25,w25,w17 // h+=Ch(e,f,g) + eor w17,w26,w26,ror#9 + add w25,w25,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w21,w21,w25 // d+=h + eor w28,w28,w27 // Maj(a,b,c) + eor w17,w0,w17,ror#13 // Sigma0(a) + add w25,w25,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w25,w25,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w14,w14 // 11 +#endif + ldp w15,w0,[x1],#2*4 + add w25,w25,w17 // h+=Sigma0(a) + str w6,[sp,#12] + ror w16,w21,#6 + add w24,w24,w28 // h+=K[i] + eor w6,w21,w21,ror#14 + and w17,w22,w21 + bic w28,w23,w21 + add w24,w24,w14 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w25,w26 // a^b, b^c in next round + eor w16,w16,w6,ror#11 // Sigma1(e) + ror w6,w25,#2 + add w24,w24,w17 // h+=Ch(e,f,g) + eor w17,w25,w25,ror#9 + add w24,w24,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w20,w20,w24 // d+=h + eor w19,w19,w26 // Maj(a,b,c) + eor w17,w6,w17,ror#13 // Sigma0(a) + add w24,w24,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w24,w24,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w15,w15 // 12 +#endif + add w24,w24,w17 // h+=Sigma0(a) + str w7,[sp,#0] + ror w16,w20,#6 + add w23,w23,w19 // h+=K[i] + eor w7,w20,w20,ror#14 + and w17,w21,w20 + bic w19,w22,w20 + add w23,w23,w15 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w24,w25 // a^b, b^c in next round + eor w16,w16,w7,ror#11 // Sigma1(e) + ror w7,w24,#2 + add w23,w23,w17 // h+=Ch(e,f,g) + eor w17,w24,w24,ror#9 + add w23,w23,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w27,w27,w23 // d+=h + eor w28,w28,w25 // Maj(a,b,c) + eor w17,w7,w17,ror#13 // Sigma0(a) + add w23,w23,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w23,w23,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w0,w0 // 13 +#endif + ldp w1,w2,[x1] + add w23,w23,w17 // h+=Sigma0(a) + str w8,[sp,#4] + ror w16,w27,#6 + add w22,w22,w28 // h+=K[i] + eor w8,w27,w27,ror#14 + and w17,w20,w27 + bic w28,w21,w27 + add w22,w22,w0 // h+=X[i] + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w23,w24 // a^b, b^c in next round + eor w16,w16,w8,ror#11 // Sigma1(e) + ror w8,w23,#2 + add w22,w22,w17 // h+=Ch(e,f,g) + eor w17,w23,w23,ror#9 + add w22,w22,w16 // h+=Sigma1(e) + and w19,w19,w28 // (b^c)&=(a^b) + add w26,w26,w22 // d+=h + eor w19,w19,w24 // Maj(a,b,c) + eor w17,w8,w17,ror#13 // Sigma0(a) + add w22,w22,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + //add w22,w22,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w1,w1 // 14 +#endif + ldr w6,[sp,#12] + add w22,w22,w17 // h+=Sigma0(a) + str w9,[sp,#8] + ror w16,w26,#6 + add w21,w21,w19 // h+=K[i] + eor w9,w26,w26,ror#14 + and w17,w27,w26 + bic w19,w20,w26 + add w21,w21,w1 // h+=X[i] + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w22,w23 // a^b, b^c in next round + eor w16,w16,w9,ror#11 // Sigma1(e) + ror w9,w22,#2 + add w21,w21,w17 // h+=Ch(e,f,g) + eor w17,w22,w22,ror#9 + add w21,w21,w16 // h+=Sigma1(e) + and w28,w28,w19 // (b^c)&=(a^b) + add w25,w25,w21 // d+=h + eor w28,w28,w23 // Maj(a,b,c) + eor w17,w9,w17,ror#13 // Sigma0(a) + add w21,w21,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + //add w21,w21,w17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev w2,w2 // 15 +#endif + ldr w7,[sp,#0] + add w21,w21,w17 // h+=Sigma0(a) + str w10,[sp,#12] + ror w16,w25,#6 + add w20,w20,w28 // h+=K[i] + ror w9,w4,#7 + and w17,w26,w25 + ror w8,w1,#17 + bic w28,w27,w25 + ror w10,w21,#2 + add w20,w20,w2 // h+=X[i] + eor w16,w16,w25,ror#11 + eor w9,w9,w4,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w21,w22 // a^b, b^c in next round + eor w16,w16,w25,ror#25 // Sigma1(e) + eor w10,w10,w21,ror#13 + add w20,w20,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w8,w8,w1,ror#19 + eor w9,w9,w4,lsr#3 // sigma0(X[i+1]) + add w20,w20,w16 // h+=Sigma1(e) + eor w19,w19,w22 // Maj(a,b,c) + eor w17,w10,w21,ror#22 // Sigma0(a) + eor w8,w8,w1,lsr#10 // sigma1(X[i+14]) + add w3,w3,w12 + add w24,w24,w20 // d+=h + add w20,w20,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w3,w3,w9 + add w20,w20,w17 // h+=Sigma0(a) + add w3,w3,w8 +Loop_16_xx: + ldr w8,[sp,#4] + str w11,[sp,#0] + ror w16,w24,#6 + add w27,w27,w19 // h+=K[i] + ror w10,w5,#7 + and w17,w25,w24 + ror w9,w2,#17 + bic w19,w26,w24 + ror w11,w20,#2 + add w27,w27,w3 // h+=X[i] + eor w16,w16,w24,ror#11 + eor w10,w10,w5,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w20,w21 // a^b, b^c in next round + eor w16,w16,w24,ror#25 // Sigma1(e) + eor w11,w11,w20,ror#13 + add w27,w27,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w9,w9,w2,ror#19 + eor w10,w10,w5,lsr#3 // sigma0(X[i+1]) + add w27,w27,w16 // h+=Sigma1(e) + eor w28,w28,w21 // Maj(a,b,c) + eor w17,w11,w20,ror#22 // Sigma0(a) + eor w9,w9,w2,lsr#10 // sigma1(X[i+14]) + add w4,w4,w13 + add w23,w23,w27 // d+=h + add w27,w27,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w4,w4,w10 + add w27,w27,w17 // h+=Sigma0(a) + add w4,w4,w9 + ldr w9,[sp,#8] + str w12,[sp,#4] + ror w16,w23,#6 + add w26,w26,w28 // h+=K[i] + ror w11,w6,#7 + and w17,w24,w23 + ror w10,w3,#17 + bic w28,w25,w23 + ror w12,w27,#2 + add w26,w26,w4 // h+=X[i] + eor w16,w16,w23,ror#11 + eor w11,w11,w6,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w27,w20 // a^b, b^c in next round + eor w16,w16,w23,ror#25 // Sigma1(e) + eor w12,w12,w27,ror#13 + add w26,w26,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w10,w10,w3,ror#19 + eor w11,w11,w6,lsr#3 // sigma0(X[i+1]) + add w26,w26,w16 // h+=Sigma1(e) + eor w19,w19,w20 // Maj(a,b,c) + eor w17,w12,w27,ror#22 // Sigma0(a) + eor w10,w10,w3,lsr#10 // sigma1(X[i+14]) + add w5,w5,w14 + add w22,w22,w26 // d+=h + add w26,w26,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w5,w5,w11 + add w26,w26,w17 // h+=Sigma0(a) + add w5,w5,w10 + ldr w10,[sp,#12] + str w13,[sp,#8] + ror w16,w22,#6 + add w25,w25,w19 // h+=K[i] + ror w12,w7,#7 + and w17,w23,w22 + ror w11,w4,#17 + bic w19,w24,w22 + ror w13,w26,#2 + add w25,w25,w5 // h+=X[i] + eor w16,w16,w22,ror#11 + eor w12,w12,w7,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w26,w27 // a^b, b^c in next round + eor w16,w16,w22,ror#25 // Sigma1(e) + eor w13,w13,w26,ror#13 + add w25,w25,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w11,w11,w4,ror#19 + eor w12,w12,w7,lsr#3 // sigma0(X[i+1]) + add w25,w25,w16 // h+=Sigma1(e) + eor w28,w28,w27 // Maj(a,b,c) + eor w17,w13,w26,ror#22 // Sigma0(a) + eor w11,w11,w4,lsr#10 // sigma1(X[i+14]) + add w6,w6,w15 + add w21,w21,w25 // d+=h + add w25,w25,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w6,w6,w12 + add w25,w25,w17 // h+=Sigma0(a) + add w6,w6,w11 + ldr w11,[sp,#0] + str w14,[sp,#12] + ror w16,w21,#6 + add w24,w24,w28 // h+=K[i] + ror w13,w8,#7 + and w17,w22,w21 + ror w12,w5,#17 + bic w28,w23,w21 + ror w14,w25,#2 + add w24,w24,w6 // h+=X[i] + eor w16,w16,w21,ror#11 + eor w13,w13,w8,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w25,w26 // a^b, b^c in next round + eor w16,w16,w21,ror#25 // Sigma1(e) + eor w14,w14,w25,ror#13 + add w24,w24,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w12,w12,w5,ror#19 + eor w13,w13,w8,lsr#3 // sigma0(X[i+1]) + add w24,w24,w16 // h+=Sigma1(e) + eor w19,w19,w26 // Maj(a,b,c) + eor w17,w14,w25,ror#22 // Sigma0(a) + eor w12,w12,w5,lsr#10 // sigma1(X[i+14]) + add w7,w7,w0 + add w20,w20,w24 // d+=h + add w24,w24,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w7,w7,w13 + add w24,w24,w17 // h+=Sigma0(a) + add w7,w7,w12 + ldr w12,[sp,#4] + str w15,[sp,#0] + ror w16,w20,#6 + add w23,w23,w19 // h+=K[i] + ror w14,w9,#7 + and w17,w21,w20 + ror w13,w6,#17 + bic w19,w22,w20 + ror w15,w24,#2 + add w23,w23,w7 // h+=X[i] + eor w16,w16,w20,ror#11 + eor w14,w14,w9,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w24,w25 // a^b, b^c in next round + eor w16,w16,w20,ror#25 // Sigma1(e) + eor w15,w15,w24,ror#13 + add w23,w23,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w13,w13,w6,ror#19 + eor w14,w14,w9,lsr#3 // sigma0(X[i+1]) + add w23,w23,w16 // h+=Sigma1(e) + eor w28,w28,w25 // Maj(a,b,c) + eor w17,w15,w24,ror#22 // Sigma0(a) + eor w13,w13,w6,lsr#10 // sigma1(X[i+14]) + add w8,w8,w1 + add w27,w27,w23 // d+=h + add w23,w23,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w8,w8,w14 + add w23,w23,w17 // h+=Sigma0(a) + add w8,w8,w13 + ldr w13,[sp,#8] + str w0,[sp,#4] + ror w16,w27,#6 + add w22,w22,w28 // h+=K[i] + ror w15,w10,#7 + and w17,w20,w27 + ror w14,w7,#17 + bic w28,w21,w27 + ror w0,w23,#2 + add w22,w22,w8 // h+=X[i] + eor w16,w16,w27,ror#11 + eor w15,w15,w10,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w23,w24 // a^b, b^c in next round + eor w16,w16,w27,ror#25 // Sigma1(e) + eor w0,w0,w23,ror#13 + add w22,w22,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w14,w14,w7,ror#19 + eor w15,w15,w10,lsr#3 // sigma0(X[i+1]) + add w22,w22,w16 // h+=Sigma1(e) + eor w19,w19,w24 // Maj(a,b,c) + eor w17,w0,w23,ror#22 // Sigma0(a) + eor w14,w14,w7,lsr#10 // sigma1(X[i+14]) + add w9,w9,w2 + add w26,w26,w22 // d+=h + add w22,w22,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w9,w9,w15 + add w22,w22,w17 // h+=Sigma0(a) + add w9,w9,w14 + ldr w14,[sp,#12] + str w1,[sp,#8] + ror w16,w26,#6 + add w21,w21,w19 // h+=K[i] + ror w0,w11,#7 + and w17,w27,w26 + ror w15,w8,#17 + bic w19,w20,w26 + ror w1,w22,#2 + add w21,w21,w9 // h+=X[i] + eor w16,w16,w26,ror#11 + eor w0,w0,w11,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w22,w23 // a^b, b^c in next round + eor w16,w16,w26,ror#25 // Sigma1(e) + eor w1,w1,w22,ror#13 + add w21,w21,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w15,w15,w8,ror#19 + eor w0,w0,w11,lsr#3 // sigma0(X[i+1]) + add w21,w21,w16 // h+=Sigma1(e) + eor w28,w28,w23 // Maj(a,b,c) + eor w17,w1,w22,ror#22 // Sigma0(a) + eor w15,w15,w8,lsr#10 // sigma1(X[i+14]) + add w10,w10,w3 + add w25,w25,w21 // d+=h + add w21,w21,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w10,w10,w0 + add w21,w21,w17 // h+=Sigma0(a) + add w10,w10,w15 + ldr w15,[sp,#0] + str w2,[sp,#12] + ror w16,w25,#6 + add w20,w20,w28 // h+=K[i] + ror w1,w12,#7 + and w17,w26,w25 + ror w0,w9,#17 + bic w28,w27,w25 + ror w2,w21,#2 + add w20,w20,w10 // h+=X[i] + eor w16,w16,w25,ror#11 + eor w1,w1,w12,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w21,w22 // a^b, b^c in next round + eor w16,w16,w25,ror#25 // Sigma1(e) + eor w2,w2,w21,ror#13 + add w20,w20,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w0,w0,w9,ror#19 + eor w1,w1,w12,lsr#3 // sigma0(X[i+1]) + add w20,w20,w16 // h+=Sigma1(e) + eor w19,w19,w22 // Maj(a,b,c) + eor w17,w2,w21,ror#22 // Sigma0(a) + eor w0,w0,w9,lsr#10 // sigma1(X[i+14]) + add w11,w11,w4 + add w24,w24,w20 // d+=h + add w20,w20,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w11,w11,w1 + add w20,w20,w17 // h+=Sigma0(a) + add w11,w11,w0 + ldr w0,[sp,#4] + str w3,[sp,#0] + ror w16,w24,#6 + add w27,w27,w19 // h+=K[i] + ror w2,w13,#7 + and w17,w25,w24 + ror w1,w10,#17 + bic w19,w26,w24 + ror w3,w20,#2 + add w27,w27,w11 // h+=X[i] + eor w16,w16,w24,ror#11 + eor w2,w2,w13,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w20,w21 // a^b, b^c in next round + eor w16,w16,w24,ror#25 // Sigma1(e) + eor w3,w3,w20,ror#13 + add w27,w27,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w1,w1,w10,ror#19 + eor w2,w2,w13,lsr#3 // sigma0(X[i+1]) + add w27,w27,w16 // h+=Sigma1(e) + eor w28,w28,w21 // Maj(a,b,c) + eor w17,w3,w20,ror#22 // Sigma0(a) + eor w1,w1,w10,lsr#10 // sigma1(X[i+14]) + add w12,w12,w5 + add w23,w23,w27 // d+=h + add w27,w27,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w12,w12,w2 + add w27,w27,w17 // h+=Sigma0(a) + add w12,w12,w1 + ldr w1,[sp,#8] + str w4,[sp,#4] + ror w16,w23,#6 + add w26,w26,w28 // h+=K[i] + ror w3,w14,#7 + and w17,w24,w23 + ror w2,w11,#17 + bic w28,w25,w23 + ror w4,w27,#2 + add w26,w26,w12 // h+=X[i] + eor w16,w16,w23,ror#11 + eor w3,w3,w14,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w27,w20 // a^b, b^c in next round + eor w16,w16,w23,ror#25 // Sigma1(e) + eor w4,w4,w27,ror#13 + add w26,w26,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w2,w2,w11,ror#19 + eor w3,w3,w14,lsr#3 // sigma0(X[i+1]) + add w26,w26,w16 // h+=Sigma1(e) + eor w19,w19,w20 // Maj(a,b,c) + eor w17,w4,w27,ror#22 // Sigma0(a) + eor w2,w2,w11,lsr#10 // sigma1(X[i+14]) + add w13,w13,w6 + add w22,w22,w26 // d+=h + add w26,w26,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w13,w13,w3 + add w26,w26,w17 // h+=Sigma0(a) + add w13,w13,w2 + ldr w2,[sp,#12] + str w5,[sp,#8] + ror w16,w22,#6 + add w25,w25,w19 // h+=K[i] + ror w4,w15,#7 + and w17,w23,w22 + ror w3,w12,#17 + bic w19,w24,w22 + ror w5,w26,#2 + add w25,w25,w13 // h+=X[i] + eor w16,w16,w22,ror#11 + eor w4,w4,w15,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w26,w27 // a^b, b^c in next round + eor w16,w16,w22,ror#25 // Sigma1(e) + eor w5,w5,w26,ror#13 + add w25,w25,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w3,w3,w12,ror#19 + eor w4,w4,w15,lsr#3 // sigma0(X[i+1]) + add w25,w25,w16 // h+=Sigma1(e) + eor w28,w28,w27 // Maj(a,b,c) + eor w17,w5,w26,ror#22 // Sigma0(a) + eor w3,w3,w12,lsr#10 // sigma1(X[i+14]) + add w14,w14,w7 + add w21,w21,w25 // d+=h + add w25,w25,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w14,w14,w4 + add w25,w25,w17 // h+=Sigma0(a) + add w14,w14,w3 + ldr w3,[sp,#0] + str w6,[sp,#12] + ror w16,w21,#6 + add w24,w24,w28 // h+=K[i] + ror w5,w0,#7 + and w17,w22,w21 + ror w4,w13,#17 + bic w28,w23,w21 + ror w6,w25,#2 + add w24,w24,w14 // h+=X[i] + eor w16,w16,w21,ror#11 + eor w5,w5,w0,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w25,w26 // a^b, b^c in next round + eor w16,w16,w21,ror#25 // Sigma1(e) + eor w6,w6,w25,ror#13 + add w24,w24,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w4,w4,w13,ror#19 + eor w5,w5,w0,lsr#3 // sigma0(X[i+1]) + add w24,w24,w16 // h+=Sigma1(e) + eor w19,w19,w26 // Maj(a,b,c) + eor w17,w6,w25,ror#22 // Sigma0(a) + eor w4,w4,w13,lsr#10 // sigma1(X[i+14]) + add w15,w15,w8 + add w20,w20,w24 // d+=h + add w24,w24,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w15,w15,w5 + add w24,w24,w17 // h+=Sigma0(a) + add w15,w15,w4 + ldr w4,[sp,#4] + str w7,[sp,#0] + ror w16,w20,#6 + add w23,w23,w19 // h+=K[i] + ror w6,w1,#7 + and w17,w21,w20 + ror w5,w14,#17 + bic w19,w22,w20 + ror w7,w24,#2 + add w23,w23,w15 // h+=X[i] + eor w16,w16,w20,ror#11 + eor w6,w6,w1,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w24,w25 // a^b, b^c in next round + eor w16,w16,w20,ror#25 // Sigma1(e) + eor w7,w7,w24,ror#13 + add w23,w23,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w5,w5,w14,ror#19 + eor w6,w6,w1,lsr#3 // sigma0(X[i+1]) + add w23,w23,w16 // h+=Sigma1(e) + eor w28,w28,w25 // Maj(a,b,c) + eor w17,w7,w24,ror#22 // Sigma0(a) + eor w5,w5,w14,lsr#10 // sigma1(X[i+14]) + add w0,w0,w9 + add w27,w27,w23 // d+=h + add w23,w23,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w0,w0,w6 + add w23,w23,w17 // h+=Sigma0(a) + add w0,w0,w5 + ldr w5,[sp,#8] + str w8,[sp,#4] + ror w16,w27,#6 + add w22,w22,w28 // h+=K[i] + ror w7,w2,#7 + and w17,w20,w27 + ror w6,w15,#17 + bic w28,w21,w27 + ror w8,w23,#2 + add w22,w22,w0 // h+=X[i] + eor w16,w16,w27,ror#11 + eor w7,w7,w2,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w23,w24 // a^b, b^c in next round + eor w16,w16,w27,ror#25 // Sigma1(e) + eor w8,w8,w23,ror#13 + add w22,w22,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w6,w6,w15,ror#19 + eor w7,w7,w2,lsr#3 // sigma0(X[i+1]) + add w22,w22,w16 // h+=Sigma1(e) + eor w19,w19,w24 // Maj(a,b,c) + eor w17,w8,w23,ror#22 // Sigma0(a) + eor w6,w6,w15,lsr#10 // sigma1(X[i+14]) + add w1,w1,w10 + add w26,w26,w22 // d+=h + add w22,w22,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w1,w1,w7 + add w22,w22,w17 // h+=Sigma0(a) + add w1,w1,w6 + ldr w6,[sp,#12] + str w9,[sp,#8] + ror w16,w26,#6 + add w21,w21,w19 // h+=K[i] + ror w8,w3,#7 + and w17,w27,w26 + ror w7,w0,#17 + bic w19,w20,w26 + ror w9,w22,#2 + add w21,w21,w1 // h+=X[i] + eor w16,w16,w26,ror#11 + eor w8,w8,w3,ror#18 + orr w17,w17,w19 // Ch(e,f,g) + eor w19,w22,w23 // a^b, b^c in next round + eor w16,w16,w26,ror#25 // Sigma1(e) + eor w9,w9,w22,ror#13 + add w21,w21,w17 // h+=Ch(e,f,g) + and w28,w28,w19 // (b^c)&=(a^b) + eor w7,w7,w0,ror#19 + eor w8,w8,w3,lsr#3 // sigma0(X[i+1]) + add w21,w21,w16 // h+=Sigma1(e) + eor w28,w28,w23 // Maj(a,b,c) + eor w17,w9,w22,ror#22 // Sigma0(a) + eor w7,w7,w0,lsr#10 // sigma1(X[i+14]) + add w2,w2,w11 + add w25,w25,w21 // d+=h + add w21,w21,w28 // h+=Maj(a,b,c) + ldr w28,[x30],#4 // *K++, w19 in next round + add w2,w2,w8 + add w21,w21,w17 // h+=Sigma0(a) + add w2,w2,w7 + ldr w7,[sp,#0] + str w10,[sp,#12] + ror w16,w25,#6 + add w20,w20,w28 // h+=K[i] + ror w9,w4,#7 + and w17,w26,w25 + ror w8,w1,#17 + bic w28,w27,w25 + ror w10,w21,#2 + add w20,w20,w2 // h+=X[i] + eor w16,w16,w25,ror#11 + eor w9,w9,w4,ror#18 + orr w17,w17,w28 // Ch(e,f,g) + eor w28,w21,w22 // a^b, b^c in next round + eor w16,w16,w25,ror#25 // Sigma1(e) + eor w10,w10,w21,ror#13 + add w20,w20,w17 // h+=Ch(e,f,g) + and w19,w19,w28 // (b^c)&=(a^b) + eor w8,w8,w1,ror#19 + eor w9,w9,w4,lsr#3 // sigma0(X[i+1]) + add w20,w20,w16 // h+=Sigma1(e) + eor w19,w19,w22 // Maj(a,b,c) + eor w17,w10,w21,ror#22 // Sigma0(a) + eor w8,w8,w1,lsr#10 // sigma1(X[i+14]) + add w3,w3,w12 + add w24,w24,w20 // d+=h + add w20,w20,w19 // h+=Maj(a,b,c) + ldr w19,[x30],#4 // *K++, w28 in next round + add w3,w3,w9 + add w20,w20,w17 // h+=Sigma0(a) + add w3,w3,w8 + cbnz w19,Loop_16_xx + + ldp x0,x2,[x29,#96] + ldr x1,[x29,#112] + sub x30,x30,#260 // rewind + + ldp w3,w4,[x0] + ldp w5,w6,[x0,#2*4] + add x1,x1,#14*4 // advance input pointer + ldp w7,w8,[x0,#4*4] + add w20,w20,w3 + ldp w9,w10,[x0,#6*4] + add w21,w21,w4 + add w22,w22,w5 + add w23,w23,w6 + stp w20,w21,[x0] + add w24,w24,w7 + add w25,w25,w8 + stp w22,w23,[x0,#2*4] + add w26,w26,w9 + add w27,w27,w10 + cmp x1,x2 + stp w24,w25,[x0,#4*4] + stp w26,w27,[x0,#6*4] + b.ne Loop + + ldp x19,x20,[x29,#16] + add sp,sp,#4*4 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#128 +.long 0xd50323bf // autiasp + ret + + +.align 6 + +LK256: +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 +.long 0 //terminator + +#ifndef __KERNEL__ +.align 3 +LOPENSSL_armcap_P: +# ifdef __ILP32__ +.long _OPENSSL_armcap_P-. +# else +.quad ARMV7_NEON +# endif +#endif +.byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 +#ifndef __KERNEL__ + +.align 6 +sha256_block_armv8: +Lv8_entry: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v0.4s,v1.4s},[x0] + adr x3,LK256 + +Loop_hw: + ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64 + sub x2,x2,#1 + ld1 {v16.4s},[x3],#16 + rev32 v4.16b,v4.16b + rev32 v5.16b,v5.16b + rev32 v6.16b,v6.16b + rev32 v7.16b,v7.16b + orr v18.16b,v0.16b,v0.16b // offload + orr v19.16b,v1.16b,v1.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v4.4s +.long 0x5e2828a4 //sha256su0 v4.16b,v5.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.long 0x5e0760c4 //sha256su1 v4.16b,v6.16b,v7.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v5.4s +.long 0x5e2828c5 //sha256su0 v5.16b,v6.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.long 0x5e0460e5 //sha256su1 v5.16b,v7.16b,v4.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v6.4s +.long 0x5e2828e6 //sha256su0 v6.16b,v7.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.long 0x5e056086 //sha256su1 v6.16b,v4.16b,v5.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v7.4s +.long 0x5e282887 //sha256su0 v7.16b,v4.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.long 0x5e0660a7 //sha256su1 v7.16b,v5.16b,v6.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v4.4s +.long 0x5e2828a4 //sha256su0 v4.16b,v5.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.long 0x5e0760c4 //sha256su1 v4.16b,v6.16b,v7.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v5.4s +.long 0x5e2828c5 //sha256su0 v5.16b,v6.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.long 0x5e0460e5 //sha256su1 v5.16b,v7.16b,v4.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v6.4s +.long 0x5e2828e6 //sha256su0 v6.16b,v7.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.long 0x5e056086 //sha256su1 v6.16b,v4.16b,v5.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v7.4s +.long 0x5e282887 //sha256su0 v7.16b,v4.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.long 0x5e0660a7 //sha256su1 v7.16b,v5.16b,v6.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v4.4s +.long 0x5e2828a4 //sha256su0 v4.16b,v5.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.long 0x5e0760c4 //sha256su1 v4.16b,v6.16b,v7.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v5.4s +.long 0x5e2828c5 //sha256su0 v5.16b,v6.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.long 0x5e0460e5 //sha256su1 v5.16b,v7.16b,v4.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v6.4s +.long 0x5e2828e6 //sha256su0 v6.16b,v7.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s +.long 0x5e056086 //sha256su1 v6.16b,v4.16b,v5.16b + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v7.4s +.long 0x5e282887 //sha256su0 v7.16b,v4.16b + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s +.long 0x5e0660a7 //sha256su1 v7.16b,v5.16b,v6.16b + ld1 {v17.4s},[x3],#16 + add v16.4s,v16.4s,v4.4s + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s + + ld1 {v16.4s},[x3],#16 + add v17.4s,v17.4s,v5.4s + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s + + ld1 {v17.4s},[x3] + add v16.4s,v16.4s,v6.4s + sub x3,x3,#64*4-16 // rewind + orr v2.16b,v0.16b,v0.16b +.long 0x5e104020 //sha256h v0.16b,v1.16b,v16.4s +.long 0x5e105041 //sha256h2 v1.16b,v2.16b,v16.4s + + add v17.4s,v17.4s,v7.4s + orr v2.16b,v0.16b,v0.16b +.long 0x5e114020 //sha256h v0.16b,v1.16b,v17.4s +.long 0x5e115041 //sha256h2 v1.16b,v2.16b,v17.4s + + add v0.4s,v0.4s,v18.4s + add v1.4s,v1.4s,v19.4s + + cbnz x2,Loop_hw + + st1 {v0.4s,v1.4s},[x0] + + ldr x29,[sp],#16 + ret + +#endif +#ifdef __KERNEL__ +.globl _sha256_block_neon +#endif + +.align 4 +_sha256_block_neon: +Lneon_entry: + stp x29, x30, [sp, #-16]! + mov x29, sp + sub sp,sp,#16*4 + + adr x16,LK256 + add x2,x1,x2,lsl#6 // len to point at the end of inp + + ld1 {v0.16b},[x1], #16 + ld1 {v1.16b},[x1], #16 + ld1 {v2.16b},[x1], #16 + ld1 {v3.16b},[x1], #16 + ld1 {v4.4s},[x16], #16 + ld1 {v5.4s},[x16], #16 + ld1 {v6.4s},[x16], #16 + ld1 {v7.4s},[x16], #16 + rev32 v0.16b,v0.16b // yes, even on + rev32 v1.16b,v1.16b // big-endian + rev32 v2.16b,v2.16b + rev32 v3.16b,v3.16b + mov x17,sp + add v4.4s,v4.4s,v0.4s + add v5.4s,v5.4s,v1.4s + add v6.4s,v6.4s,v2.4s + st1 {v4.4s,v5.4s},[x17], #32 + add v7.4s,v7.4s,v3.4s + st1 {v6.4s,v7.4s},[x17] + sub x17,x17,#32 + + ldp w3,w4,[x0] + ldp w5,w6,[x0,#8] + ldp w7,w8,[x0,#16] + ldp w9,w10,[x0,#24] + ldr w12,[sp,#0] + mov w13,wzr + eor w14,w4,w5 + mov w15,wzr + b L_00_48 + +.align 4 +L_00_48: + ext v4.16b,v0.16b,v1.16b,#4 + add w10,w10,w12 + add w3,w3,w15 + and w12,w8,w7 + bic w15,w9,w7 + ext v7.16b,v2.16b,v3.16b,#4 + eor w11,w7,w7,ror#5 + add w3,w3,w13 + mov d19,v3.d[1] + orr w12,w12,w15 + eor w11,w11,w7,ror#19 + ushr v6.4s,v4.4s,#7 + eor w15,w3,w3,ror#11 + ushr v5.4s,v4.4s,#3 + add w10,w10,w12 + add v0.4s,v0.4s,v7.4s + ror w11,w11,#6 + sli v6.4s,v4.4s,#25 + eor w13,w3,w4 + eor w15,w15,w3,ror#20 + ushr v7.4s,v4.4s,#18 + add w10,w10,w11 + ldr w12,[sp,#4] + and w14,w14,w13 + eor v5.16b,v5.16b,v6.16b + ror w15,w15,#2 + add w6,w6,w10 + sli v7.4s,v4.4s,#14 + eor w14,w14,w4 + ushr v16.4s,v19.4s,#17 + add w9,w9,w12 + add w10,w10,w15 + and w12,w7,w6 + eor v5.16b,v5.16b,v7.16b + bic w15,w8,w6 + eor w11,w6,w6,ror#5 + sli v16.4s,v19.4s,#15 + add w10,w10,w14 + orr w12,w12,w15 + ushr v17.4s,v19.4s,#10 + eor w11,w11,w6,ror#19 + eor w15,w10,w10,ror#11 + ushr v7.4s,v19.4s,#19 + add w9,w9,w12 + ror w11,w11,#6 + add v0.4s,v0.4s,v5.4s + eor w14,w10,w3 + eor w15,w15,w10,ror#20 + sli v7.4s,v19.4s,#13 + add w9,w9,w11 + ldr w12,[sp,#8] + and w13,w13,w14 + eor v17.16b,v17.16b,v16.16b + ror w15,w15,#2 + add w5,w5,w9 + eor w13,w13,w3 + eor v17.16b,v17.16b,v7.16b + add w8,w8,w12 + add w9,w9,w15 + and w12,w6,w5 + add v0.4s,v0.4s,v17.4s + bic w15,w7,w5 + eor w11,w5,w5,ror#5 + add w9,w9,w13 + ushr v18.4s,v0.4s,#17 + orr w12,w12,w15 + ushr v19.4s,v0.4s,#10 + eor w11,w11,w5,ror#19 + eor w15,w9,w9,ror#11 + sli v18.4s,v0.4s,#15 + add w8,w8,w12 + ushr v17.4s,v0.4s,#19 + ror w11,w11,#6 + eor w13,w9,w10 + eor v19.16b,v19.16b,v18.16b + eor w15,w15,w9,ror#20 + add w8,w8,w11 + sli v17.4s,v0.4s,#13 + ldr w12,[sp,#12] + and w14,w14,w13 + ror w15,w15,#2 + ld1 {v4.4s},[x16], #16 + add w4,w4,w8 + eor v19.16b,v19.16b,v17.16b + eor w14,w14,w10 + eor v17.16b,v17.16b,v17.16b + add w7,w7,w12 + add w8,w8,w15 + and w12,w5,w4 + mov v17.d[1],v19.d[0] + bic w15,w6,w4 + eor w11,w4,w4,ror#5 + add w8,w8,w14 + add v0.4s,v0.4s,v17.4s + orr w12,w12,w15 + eor w11,w11,w4,ror#19 + eor w15,w8,w8,ror#11 + add v4.4s,v4.4s,v0.4s + add w7,w7,w12 + ror w11,w11,#6 + eor w14,w8,w9 + eor w15,w15,w8,ror#20 + add w7,w7,w11 + ldr w12,[sp,#16] + and w13,w13,w14 + ror w15,w15,#2 + add w3,w3,w7 + eor w13,w13,w9 + st1 {v4.4s},[x17], #16 + ext v4.16b,v1.16b,v2.16b,#4 + add w6,w6,w12 + add w7,w7,w15 + and w12,w4,w3 + bic w15,w5,w3 + ext v7.16b,v3.16b,v0.16b,#4 + eor w11,w3,w3,ror#5 + add w7,w7,w13 + mov d19,v0.d[1] + orr w12,w12,w15 + eor w11,w11,w3,ror#19 + ushr v6.4s,v4.4s,#7 + eor w15,w7,w7,ror#11 + ushr v5.4s,v4.4s,#3 + add w6,w6,w12 + add v1.4s,v1.4s,v7.4s + ror w11,w11,#6 + sli v6.4s,v4.4s,#25 + eor w13,w7,w8 + eor w15,w15,w7,ror#20 + ushr v7.4s,v4.4s,#18 + add w6,w6,w11 + ldr w12,[sp,#20] + and w14,w14,w13 + eor v5.16b,v5.16b,v6.16b + ror w15,w15,#2 + add w10,w10,w6 + sli v7.4s,v4.4s,#14 + eor w14,w14,w8 + ushr v16.4s,v19.4s,#17 + add w5,w5,w12 + add w6,w6,w15 + and w12,w3,w10 + eor v5.16b,v5.16b,v7.16b + bic w15,w4,w10 + eor w11,w10,w10,ror#5 + sli v16.4s,v19.4s,#15 + add w6,w6,w14 + orr w12,w12,w15 + ushr v17.4s,v19.4s,#10 + eor w11,w11,w10,ror#19 + eor w15,w6,w6,ror#11 + ushr v7.4s,v19.4s,#19 + add w5,w5,w12 + ror w11,w11,#6 + add v1.4s,v1.4s,v5.4s + eor w14,w6,w7 + eor w15,w15,w6,ror#20 + sli v7.4s,v19.4s,#13 + add w5,w5,w11 + ldr w12,[sp,#24] + and w13,w13,w14 + eor v17.16b,v17.16b,v16.16b + ror w15,w15,#2 + add w9,w9,w5 + eor w13,w13,w7 + eor v17.16b,v17.16b,v7.16b + add w4,w4,w12 + add w5,w5,w15 + and w12,w10,w9 + add v1.4s,v1.4s,v17.4s + bic w15,w3,w9 + eor w11,w9,w9,ror#5 + add w5,w5,w13 + ushr v18.4s,v1.4s,#17 + orr w12,w12,w15 + ushr v19.4s,v1.4s,#10 + eor w11,w11,w9,ror#19 + eor w15,w5,w5,ror#11 + sli v18.4s,v1.4s,#15 + add w4,w4,w12 + ushr v17.4s,v1.4s,#19 + ror w11,w11,#6 + eor w13,w5,w6 + eor v19.16b,v19.16b,v18.16b + eor w15,w15,w5,ror#20 + add w4,w4,w11 + sli v17.4s,v1.4s,#13 + ldr w12,[sp,#28] + and w14,w14,w13 + ror w15,w15,#2 + ld1 {v4.4s},[x16], #16 + add w8,w8,w4 + eor v19.16b,v19.16b,v17.16b + eor w14,w14,w6 + eor v17.16b,v17.16b,v17.16b + add w3,w3,w12 + add w4,w4,w15 + and w12,w9,w8 + mov v17.d[1],v19.d[0] + bic w15,w10,w8 + eor w11,w8,w8,ror#5 + add w4,w4,w14 + add v1.4s,v1.4s,v17.4s + orr w12,w12,w15 + eor w11,w11,w8,ror#19 + eor w15,w4,w4,ror#11 + add v4.4s,v4.4s,v1.4s + add w3,w3,w12 + ror w11,w11,#6 + eor w14,w4,w5 + eor w15,w15,w4,ror#20 + add w3,w3,w11 + ldr w12,[sp,#32] + and w13,w13,w14 + ror w15,w15,#2 + add w7,w7,w3 + eor w13,w13,w5 + st1 {v4.4s},[x17], #16 + ext v4.16b,v2.16b,v3.16b,#4 + add w10,w10,w12 + add w3,w3,w15 + and w12,w8,w7 + bic w15,w9,w7 + ext v7.16b,v0.16b,v1.16b,#4 + eor w11,w7,w7,ror#5 + add w3,w3,w13 + mov d19,v1.d[1] + orr w12,w12,w15 + eor w11,w11,w7,ror#19 + ushr v6.4s,v4.4s,#7 + eor w15,w3,w3,ror#11 + ushr v5.4s,v4.4s,#3 + add w10,w10,w12 + add v2.4s,v2.4s,v7.4s + ror w11,w11,#6 + sli v6.4s,v4.4s,#25 + eor w13,w3,w4 + eor w15,w15,w3,ror#20 + ushr v7.4s,v4.4s,#18 + add w10,w10,w11 + ldr w12,[sp,#36] + and w14,w14,w13 + eor v5.16b,v5.16b,v6.16b + ror w15,w15,#2 + add w6,w6,w10 + sli v7.4s,v4.4s,#14 + eor w14,w14,w4 + ushr v16.4s,v19.4s,#17 + add w9,w9,w12 + add w10,w10,w15 + and w12,w7,w6 + eor v5.16b,v5.16b,v7.16b + bic w15,w8,w6 + eor w11,w6,w6,ror#5 + sli v16.4s,v19.4s,#15 + add w10,w10,w14 + orr w12,w12,w15 + ushr v17.4s,v19.4s,#10 + eor w11,w11,w6,ror#19 + eor w15,w10,w10,ror#11 + ushr v7.4s,v19.4s,#19 + add w9,w9,w12 + ror w11,w11,#6 + add v2.4s,v2.4s,v5.4s + eor w14,w10,w3 + eor w15,w15,w10,ror#20 + sli v7.4s,v19.4s,#13 + add w9,w9,w11 + ldr w12,[sp,#40] + and w13,w13,w14 + eor v17.16b,v17.16b,v16.16b + ror w15,w15,#2 + add w5,w5,w9 + eor w13,w13,w3 + eor v17.16b,v17.16b,v7.16b + add w8,w8,w12 + add w9,w9,w15 + and w12,w6,w5 + add v2.4s,v2.4s,v17.4s + bic w15,w7,w5 + eor w11,w5,w5,ror#5 + add w9,w9,w13 + ushr v18.4s,v2.4s,#17 + orr w12,w12,w15 + ushr v19.4s,v2.4s,#10 + eor w11,w11,w5,ror#19 + eor w15,w9,w9,ror#11 + sli v18.4s,v2.4s,#15 + add w8,w8,w12 + ushr v17.4s,v2.4s,#19 + ror w11,w11,#6 + eor w13,w9,w10 + eor v19.16b,v19.16b,v18.16b + eor w15,w15,w9,ror#20 + add w8,w8,w11 + sli v17.4s,v2.4s,#13 + ldr w12,[sp,#44] + and w14,w14,w13 + ror w15,w15,#2 + ld1 {v4.4s},[x16], #16 + add w4,w4,w8 + eor v19.16b,v19.16b,v17.16b + eor w14,w14,w10 + eor v17.16b,v17.16b,v17.16b + add w7,w7,w12 + add w8,w8,w15 + and w12,w5,w4 + mov v17.d[1],v19.d[0] + bic w15,w6,w4 + eor w11,w4,w4,ror#5 + add w8,w8,w14 + add v2.4s,v2.4s,v17.4s + orr w12,w12,w15 + eor w11,w11,w4,ror#19 + eor w15,w8,w8,ror#11 + add v4.4s,v4.4s,v2.4s + add w7,w7,w12 + ror w11,w11,#6 + eor w14,w8,w9 + eor w15,w15,w8,ror#20 + add w7,w7,w11 + ldr w12,[sp,#48] + and w13,w13,w14 + ror w15,w15,#2 + add w3,w3,w7 + eor w13,w13,w9 + st1 {v4.4s},[x17], #16 + ext v4.16b,v3.16b,v0.16b,#4 + add w6,w6,w12 + add w7,w7,w15 + and w12,w4,w3 + bic w15,w5,w3 + ext v7.16b,v1.16b,v2.16b,#4 + eor w11,w3,w3,ror#5 + add w7,w7,w13 + mov d19,v2.d[1] + orr w12,w12,w15 + eor w11,w11,w3,ror#19 + ushr v6.4s,v4.4s,#7 + eor w15,w7,w7,ror#11 + ushr v5.4s,v4.4s,#3 + add w6,w6,w12 + add v3.4s,v3.4s,v7.4s + ror w11,w11,#6 + sli v6.4s,v4.4s,#25 + eor w13,w7,w8 + eor w15,w15,w7,ror#20 + ushr v7.4s,v4.4s,#18 + add w6,w6,w11 + ldr w12,[sp,#52] + and w14,w14,w13 + eor v5.16b,v5.16b,v6.16b + ror w15,w15,#2 + add w10,w10,w6 + sli v7.4s,v4.4s,#14 + eor w14,w14,w8 + ushr v16.4s,v19.4s,#17 + add w5,w5,w12 + add w6,w6,w15 + and w12,w3,w10 + eor v5.16b,v5.16b,v7.16b + bic w15,w4,w10 + eor w11,w10,w10,ror#5 + sli v16.4s,v19.4s,#15 + add w6,w6,w14 + orr w12,w12,w15 + ushr v17.4s,v19.4s,#10 + eor w11,w11,w10,ror#19 + eor w15,w6,w6,ror#11 + ushr v7.4s,v19.4s,#19 + add w5,w5,w12 + ror w11,w11,#6 + add v3.4s,v3.4s,v5.4s + eor w14,w6,w7 + eor w15,w15,w6,ror#20 + sli v7.4s,v19.4s,#13 + add w5,w5,w11 + ldr w12,[sp,#56] + and w13,w13,w14 + eor v17.16b,v17.16b,v16.16b + ror w15,w15,#2 + add w9,w9,w5 + eor w13,w13,w7 + eor v17.16b,v17.16b,v7.16b + add w4,w4,w12 + add w5,w5,w15 + and w12,w10,w9 + add v3.4s,v3.4s,v17.4s + bic w15,w3,w9 + eor w11,w9,w9,ror#5 + add w5,w5,w13 + ushr v18.4s,v3.4s,#17 + orr w12,w12,w15 + ushr v19.4s,v3.4s,#10 + eor w11,w11,w9,ror#19 + eor w15,w5,w5,ror#11 + sli v18.4s,v3.4s,#15 + add w4,w4,w12 + ushr v17.4s,v3.4s,#19 + ror w11,w11,#6 + eor w13,w5,w6 + eor v19.16b,v19.16b,v18.16b + eor w15,w15,w5,ror#20 + add w4,w4,w11 + sli v17.4s,v3.4s,#13 + ldr w12,[sp,#60] + and w14,w14,w13 + ror w15,w15,#2 + ld1 {v4.4s},[x16], #16 + add w8,w8,w4 + eor v19.16b,v19.16b,v17.16b + eor w14,w14,w6 + eor v17.16b,v17.16b,v17.16b + add w3,w3,w12 + add w4,w4,w15 + and w12,w9,w8 + mov v17.d[1],v19.d[0] + bic w15,w10,w8 + eor w11,w8,w8,ror#5 + add w4,w4,w14 + add v3.4s,v3.4s,v17.4s + orr w12,w12,w15 + eor w11,w11,w8,ror#19 + eor w15,w4,w4,ror#11 + add v4.4s,v4.4s,v3.4s + add w3,w3,w12 + ror w11,w11,#6 + eor w14,w4,w5 + eor w15,w15,w4,ror#20 + add w3,w3,w11 + ldr w12,[x16] + and w13,w13,w14 + ror w15,w15,#2 + add w7,w7,w3 + eor w13,w13,w5 + st1 {v4.4s},[x17], #16 + cmp w12,#0 // check for K256 terminator + ldr w12,[sp,#0] + sub x17,x17,#64 + bne L_00_48 + + sub x16,x16,#256 // rewind x16 + cmp x1,x2 + mov x17, #64 + csel x17, x17, xzr, eq + sub x1,x1,x17 // avoid SEGV + mov x17,sp + add w10,w10,w12 + add w3,w3,w15 + and w12,w8,w7 + ld1 {v0.16b},[x1],#16 + bic w15,w9,w7 + eor w11,w7,w7,ror#5 + ld1 {v4.4s},[x16],#16 + add w3,w3,w13 + orr w12,w12,w15 + eor w11,w11,w7,ror#19 + eor w15,w3,w3,ror#11 + rev32 v0.16b,v0.16b + add w10,w10,w12 + ror w11,w11,#6 + eor w13,w3,w4 + eor w15,w15,w3,ror#20 + add v4.4s,v4.4s,v0.4s + add w10,w10,w11 + ldr w12,[sp,#4] + and w14,w14,w13 + ror w15,w15,#2 + add w6,w6,w10 + eor w14,w14,w4 + add w9,w9,w12 + add w10,w10,w15 + and w12,w7,w6 + bic w15,w8,w6 + eor w11,w6,w6,ror#5 + add w10,w10,w14 + orr w12,w12,w15 + eor w11,w11,w6,ror#19 + eor w15,w10,w10,ror#11 + add w9,w9,w12 + ror w11,w11,#6 + eor w14,w10,w3 + eor w15,w15,w10,ror#20 + add w9,w9,w11 + ldr w12,[sp,#8] + and w13,w13,w14 + ror w15,w15,#2 + add w5,w5,w9 + eor w13,w13,w3 + add w8,w8,w12 + add w9,w9,w15 + and w12,w6,w5 + bic w15,w7,w5 + eor w11,w5,w5,ror#5 + add w9,w9,w13 + orr w12,w12,w15 + eor w11,w11,w5,ror#19 + eor w15,w9,w9,ror#11 + add w8,w8,w12 + ror w11,w11,#6 + eor w13,w9,w10 + eor w15,w15,w9,ror#20 + add w8,w8,w11 + ldr w12,[sp,#12] + and w14,w14,w13 + ror w15,w15,#2 + add w4,w4,w8 + eor w14,w14,w10 + add w7,w7,w12 + add w8,w8,w15 + and w12,w5,w4 + bic w15,w6,w4 + eor w11,w4,w4,ror#5 + add w8,w8,w14 + orr w12,w12,w15 + eor w11,w11,w4,ror#19 + eor w15,w8,w8,ror#11 + add w7,w7,w12 + ror w11,w11,#6 + eor w14,w8,w9 + eor w15,w15,w8,ror#20 + add w7,w7,w11 + ldr w12,[sp,#16] + and w13,w13,w14 + ror w15,w15,#2 + add w3,w3,w7 + eor w13,w13,w9 + st1 {v4.4s},[x17], #16 + add w6,w6,w12 + add w7,w7,w15 + and w12,w4,w3 + ld1 {v1.16b},[x1],#16 + bic w15,w5,w3 + eor w11,w3,w3,ror#5 + ld1 {v4.4s},[x16],#16 + add w7,w7,w13 + orr w12,w12,w15 + eor w11,w11,w3,ror#19 + eor w15,w7,w7,ror#11 + rev32 v1.16b,v1.16b + add w6,w6,w12 + ror w11,w11,#6 + eor w13,w7,w8 + eor w15,w15,w7,ror#20 + add v4.4s,v4.4s,v1.4s + add w6,w6,w11 + ldr w12,[sp,#20] + and w14,w14,w13 + ror w15,w15,#2 + add w10,w10,w6 + eor w14,w14,w8 + add w5,w5,w12 + add w6,w6,w15 + and w12,w3,w10 + bic w15,w4,w10 + eor w11,w10,w10,ror#5 + add w6,w6,w14 + orr w12,w12,w15 + eor w11,w11,w10,ror#19 + eor w15,w6,w6,ror#11 + add w5,w5,w12 + ror w11,w11,#6 + eor w14,w6,w7 + eor w15,w15,w6,ror#20 + add w5,w5,w11 + ldr w12,[sp,#24] + and w13,w13,w14 + ror w15,w15,#2 + add w9,w9,w5 + eor w13,w13,w7 + add w4,w4,w12 + add w5,w5,w15 + and w12,w10,w9 + bic w15,w3,w9 + eor w11,w9,w9,ror#5 + add w5,w5,w13 + orr w12,w12,w15 + eor w11,w11,w9,ror#19 + eor w15,w5,w5,ror#11 + add w4,w4,w12 + ror w11,w11,#6 + eor w13,w5,w6 + eor w15,w15,w5,ror#20 + add w4,w4,w11 + ldr w12,[sp,#28] + and w14,w14,w13 + ror w15,w15,#2 + add w8,w8,w4 + eor w14,w14,w6 + add w3,w3,w12 + add w4,w4,w15 + and w12,w9,w8 + bic w15,w10,w8 + eor w11,w8,w8,ror#5 + add w4,w4,w14 + orr w12,w12,w15 + eor w11,w11,w8,ror#19 + eor w15,w4,w4,ror#11 + add w3,w3,w12 + ror w11,w11,#6 + eor w14,w4,w5 + eor w15,w15,w4,ror#20 + add w3,w3,w11 + ldr w12,[sp,#32] + and w13,w13,w14 + ror w15,w15,#2 + add w7,w7,w3 + eor w13,w13,w5 + st1 {v4.4s},[x17], #16 + add w10,w10,w12 + add w3,w3,w15 + and w12,w8,w7 + ld1 {v2.16b},[x1],#16 + bic w15,w9,w7 + eor w11,w7,w7,ror#5 + ld1 {v4.4s},[x16],#16 + add w3,w3,w13 + orr w12,w12,w15 + eor w11,w11,w7,ror#19 + eor w15,w3,w3,ror#11 + rev32 v2.16b,v2.16b + add w10,w10,w12 + ror w11,w11,#6 + eor w13,w3,w4 + eor w15,w15,w3,ror#20 + add v4.4s,v4.4s,v2.4s + add w10,w10,w11 + ldr w12,[sp,#36] + and w14,w14,w13 + ror w15,w15,#2 + add w6,w6,w10 + eor w14,w14,w4 + add w9,w9,w12 + add w10,w10,w15 + and w12,w7,w6 + bic w15,w8,w6 + eor w11,w6,w6,ror#5 + add w10,w10,w14 + orr w12,w12,w15 + eor w11,w11,w6,ror#19 + eor w15,w10,w10,ror#11 + add w9,w9,w12 + ror w11,w11,#6 + eor w14,w10,w3 + eor w15,w15,w10,ror#20 + add w9,w9,w11 + ldr w12,[sp,#40] + and w13,w13,w14 + ror w15,w15,#2 + add w5,w5,w9 + eor w13,w13,w3 + add w8,w8,w12 + add w9,w9,w15 + and w12,w6,w5 + bic w15,w7,w5 + eor w11,w5,w5,ror#5 + add w9,w9,w13 + orr w12,w12,w15 + eor w11,w11,w5,ror#19 + eor w15,w9,w9,ror#11 + add w8,w8,w12 + ror w11,w11,#6 + eor w13,w9,w10 + eor w15,w15,w9,ror#20 + add w8,w8,w11 + ldr w12,[sp,#44] + and w14,w14,w13 + ror w15,w15,#2 + add w4,w4,w8 + eor w14,w14,w10 + add w7,w7,w12 + add w8,w8,w15 + and w12,w5,w4 + bic w15,w6,w4 + eor w11,w4,w4,ror#5 + add w8,w8,w14 + orr w12,w12,w15 + eor w11,w11,w4,ror#19 + eor w15,w8,w8,ror#11 + add w7,w7,w12 + ror w11,w11,#6 + eor w14,w8,w9 + eor w15,w15,w8,ror#20 + add w7,w7,w11 + ldr w12,[sp,#48] + and w13,w13,w14 + ror w15,w15,#2 + add w3,w3,w7 + eor w13,w13,w9 + st1 {v4.4s},[x17], #16 + add w6,w6,w12 + add w7,w7,w15 + and w12,w4,w3 + ld1 {v3.16b},[x1],#16 + bic w15,w5,w3 + eor w11,w3,w3,ror#5 + ld1 {v4.4s},[x16],#16 + add w7,w7,w13 + orr w12,w12,w15 + eor w11,w11,w3,ror#19 + eor w15,w7,w7,ror#11 + rev32 v3.16b,v3.16b + add w6,w6,w12 + ror w11,w11,#6 + eor w13,w7,w8 + eor w15,w15,w7,ror#20 + add v4.4s,v4.4s,v3.4s + add w6,w6,w11 + ldr w12,[sp,#52] + and w14,w14,w13 + ror w15,w15,#2 + add w10,w10,w6 + eor w14,w14,w8 + add w5,w5,w12 + add w6,w6,w15 + and w12,w3,w10 + bic w15,w4,w10 + eor w11,w10,w10,ror#5 + add w6,w6,w14 + orr w12,w12,w15 + eor w11,w11,w10,ror#19 + eor w15,w6,w6,ror#11 + add w5,w5,w12 + ror w11,w11,#6 + eor w14,w6,w7 + eor w15,w15,w6,ror#20 + add w5,w5,w11 + ldr w12,[sp,#56] + and w13,w13,w14 + ror w15,w15,#2 + add w9,w9,w5 + eor w13,w13,w7 + add w4,w4,w12 + add w5,w5,w15 + and w12,w10,w9 + bic w15,w3,w9 + eor w11,w9,w9,ror#5 + add w5,w5,w13 + orr w12,w12,w15 + eor w11,w11,w9,ror#19 + eor w15,w5,w5,ror#11 + add w4,w4,w12 + ror w11,w11,#6 + eor w13,w5,w6 + eor w15,w15,w5,ror#20 + add w4,w4,w11 + ldr w12,[sp,#60] + and w14,w14,w13 + ror w15,w15,#2 + add w8,w8,w4 + eor w14,w14,w6 + add w3,w3,w12 + add w4,w4,w15 + and w12,w9,w8 + bic w15,w10,w8 + eor w11,w8,w8,ror#5 + add w4,w4,w14 + orr w12,w12,w15 + eor w11,w11,w8,ror#19 + eor w15,w4,w4,ror#11 + add w3,w3,w12 + ror w11,w11,#6 + eor w14,w4,w5 + eor w15,w15,w4,ror#20 + add w3,w3,w11 + and w13,w13,w14 + ror w15,w15,#2 + add w7,w7,w3 + eor w13,w13,w5 + st1 {v4.4s},[x17], #16 + add w3,w3,w15 // h+=Sigma0(a) from the past + ldp w11,w12,[x0,#0] + add w3,w3,w13 // h+=Maj(a,b,c) from the past + ldp w13,w14,[x0,#8] + add w3,w3,w11 // accumulate + add w4,w4,w12 + ldp w11,w12,[x0,#16] + add w5,w5,w13 + add w6,w6,w14 + ldp w13,w14,[x0,#24] + add w7,w7,w11 + add w8,w8,w12 + ldr w12,[sp,#0] + stp w3,w4,[x0,#0] + add w9,w9,w13 + mov w13,wzr + stp w5,w6,[x0,#8] + add w10,w10,w14 + stp w7,w8,[x0,#16] + eor w14,w4,w5 + stp w9,w10,[x0,#24] + mov w15,wzr + mov x17,sp + b.ne L_00_48 + + ldr x29,[x29] + add sp,sp,#16*4+16 + ret + diff --git a/vere/ext/openssl/gen/macos-aarch64/crypto/sha/sha512-armv8.S b/vere/ext/openssl/gen/macos-aarch64/crypto/sha/sha512-armv8.S new file mode 100644 index 0000000..aa812a0 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/crypto/sha/sha512-armv8.S @@ -0,0 +1,1618 @@ +// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. +// +// Licensed under the OpenSSL license (the "License"). You may not use +// this file except in compliance with the License. You can obtain a copy +// in the file LICENSE in the source distribution or at +// https://www.openssl.org/source/license.html + +// ==================================================================== +// Written by Andy Polyakov for the OpenSSL +// project. The module is, however, dual licensed under OpenSSL and +// CRYPTOGAMS licenses depending on where you obtain it. For further +// details see http://www.openssl.org/~appro/cryptogams/. +// +// Permission to use under GPLv2 terms is granted. +// ==================================================================== +// +// SHA256/512 for ARMv8. +// +// Performance in cycles per processed byte and improvement coefficient +// over code generated with "default" compiler: +// +// SHA256-hw SHA256(*) SHA512 +// Apple A7 1.97 10.5 (+33%) 6.73 (-1%(**)) +// Cortex-A53 2.38 15.5 (+115%) 10.0 (+150%(***)) +// Cortex-A57 2.31 11.6 (+86%) 7.51 (+260%(***)) +// Denver 2.01 10.5 (+26%) 6.70 (+8%) +// X-Gene 20.0 (+100%) 12.8 (+300%(***)) +// Mongoose 2.36 13.0 (+50%) 8.36 (+33%) +// Kryo 1.92 17.4 (+30%) 11.2 (+8%) +// +// (*) Software SHA256 results are of lesser relevance, presented +// mostly for informational purposes. +// (**) The result is a trade-off: it's possible to improve it by +// 10% (or by 1 cycle per round), but at the cost of 20% loss +// on Cortex-A53 (or by 4 cycles per round). +// (***) Super-impressive coefficients over gcc-generated code are +// indication of some compiler "pathology", most notably code +// generated with -mgeneral-regs-only is significantly faster +// and the gap is only 40-90%. +// +// October 2016. +// +// Originally it was reckoned that it makes no sense to implement NEON +// version of SHA256 for 64-bit processors. This is because performance +// improvement on most wide-spread Cortex-A5x processors was observed +// to be marginal, same on Cortex-A53 and ~10% on A57. But then it was +// observed that 32-bit NEON SHA256 performs significantly better than +// 64-bit scalar version on *some* of the more recent processors. As +// result 64-bit NEON version of SHA256 was added to provide best +// all-round performance. For example it executes ~30% faster on X-Gene +// and Mongoose. [For reference, NEON version of SHA512 is bound to +// deliver much less improvement, likely *negative* on Cortex-A5x. +// Which is why NEON support is limited to SHA256.] + +#ifndef __KERNEL__ +# include "arm_arch.h" +#endif + +.text + + +.private_extern _OPENSSL_armcap_P +.globl _sha512_block_data_order + +.align 6 +_sha512_block_data_order: +#ifndef __KERNEL__ +# ifdef __ILP32__ + ldrsw x16,LOPENSSL_armcap_P +# else + ldr x16,LOPENSSL_armcap_P +# endif + adr x17,LOPENSSL_armcap_P + add x16,x16,x17 + ldr w16,[x16] + tst w16,#ARMV8_SHA512 + b.ne Lv8_entry +#endif +.long 0xd503233f // paciasp + stp x29,x30,[sp,#-128]! + add x29,sp,#0 + + stp x19,x20,[sp,#16] + stp x21,x22,[sp,#32] + stp x23,x24,[sp,#48] + stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] + sub sp,sp,#4*8 + + ldp x20,x21,[x0] // load context + ldp x22,x23,[x0,#2*8] + ldp x24,x25,[x0,#4*8] + add x2,x1,x2,lsl#7 // end of input + ldp x26,x27,[x0,#6*8] + adr x30,LK512 + stp x0,x2,[x29,#96] + +Loop: + ldp x3,x4,[x1],#2*8 + ldr x19,[x30],#8 // *K++ + eor x28,x21,x22 // magic seed + str x1,[x29,#112] +#ifndef __AARCH64EB__ + rev x3,x3 // 0 +#endif + ror x16,x24,#14 + add x27,x27,x19 // h+=K[i] + eor x6,x24,x24,ror#23 + and x17,x25,x24 + bic x19,x26,x24 + add x27,x27,x3 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x20,x21 // a^b, b^c in next round + eor x16,x16,x6,ror#18 // Sigma1(e) + ror x6,x20,#28 + add x27,x27,x17 // h+=Ch(e,f,g) + eor x17,x20,x20,ror#5 + add x27,x27,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x23,x23,x27 // d+=h + eor x28,x28,x21 // Maj(a,b,c) + eor x17,x6,x17,ror#34 // Sigma0(a) + add x27,x27,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x27,x27,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x4,x4 // 1 +#endif + ldp x5,x6,[x1],#2*8 + add x27,x27,x17 // h+=Sigma0(a) + ror x16,x23,#14 + add x26,x26,x28 // h+=K[i] + eor x7,x23,x23,ror#23 + and x17,x24,x23 + bic x28,x25,x23 + add x26,x26,x4 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x27,x20 // a^b, b^c in next round + eor x16,x16,x7,ror#18 // Sigma1(e) + ror x7,x27,#28 + add x26,x26,x17 // h+=Ch(e,f,g) + eor x17,x27,x27,ror#5 + add x26,x26,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x22,x22,x26 // d+=h + eor x19,x19,x20 // Maj(a,b,c) + eor x17,x7,x17,ror#34 // Sigma0(a) + add x26,x26,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x26,x26,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x5,x5 // 2 +#endif + add x26,x26,x17 // h+=Sigma0(a) + ror x16,x22,#14 + add x25,x25,x19 // h+=K[i] + eor x8,x22,x22,ror#23 + and x17,x23,x22 + bic x19,x24,x22 + add x25,x25,x5 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x26,x27 // a^b, b^c in next round + eor x16,x16,x8,ror#18 // Sigma1(e) + ror x8,x26,#28 + add x25,x25,x17 // h+=Ch(e,f,g) + eor x17,x26,x26,ror#5 + add x25,x25,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x21,x21,x25 // d+=h + eor x28,x28,x27 // Maj(a,b,c) + eor x17,x8,x17,ror#34 // Sigma0(a) + add x25,x25,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x25,x25,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x6,x6 // 3 +#endif + ldp x7,x8,[x1],#2*8 + add x25,x25,x17 // h+=Sigma0(a) + ror x16,x21,#14 + add x24,x24,x28 // h+=K[i] + eor x9,x21,x21,ror#23 + and x17,x22,x21 + bic x28,x23,x21 + add x24,x24,x6 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x25,x26 // a^b, b^c in next round + eor x16,x16,x9,ror#18 // Sigma1(e) + ror x9,x25,#28 + add x24,x24,x17 // h+=Ch(e,f,g) + eor x17,x25,x25,ror#5 + add x24,x24,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x20,x20,x24 // d+=h + eor x19,x19,x26 // Maj(a,b,c) + eor x17,x9,x17,ror#34 // Sigma0(a) + add x24,x24,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x24,x24,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x7,x7 // 4 +#endif + add x24,x24,x17 // h+=Sigma0(a) + ror x16,x20,#14 + add x23,x23,x19 // h+=K[i] + eor x10,x20,x20,ror#23 + and x17,x21,x20 + bic x19,x22,x20 + add x23,x23,x7 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x24,x25 // a^b, b^c in next round + eor x16,x16,x10,ror#18 // Sigma1(e) + ror x10,x24,#28 + add x23,x23,x17 // h+=Ch(e,f,g) + eor x17,x24,x24,ror#5 + add x23,x23,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x27,x27,x23 // d+=h + eor x28,x28,x25 // Maj(a,b,c) + eor x17,x10,x17,ror#34 // Sigma0(a) + add x23,x23,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x23,x23,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x8,x8 // 5 +#endif + ldp x9,x10,[x1],#2*8 + add x23,x23,x17 // h+=Sigma0(a) + ror x16,x27,#14 + add x22,x22,x28 // h+=K[i] + eor x11,x27,x27,ror#23 + and x17,x20,x27 + bic x28,x21,x27 + add x22,x22,x8 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x23,x24 // a^b, b^c in next round + eor x16,x16,x11,ror#18 // Sigma1(e) + ror x11,x23,#28 + add x22,x22,x17 // h+=Ch(e,f,g) + eor x17,x23,x23,ror#5 + add x22,x22,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x26,x26,x22 // d+=h + eor x19,x19,x24 // Maj(a,b,c) + eor x17,x11,x17,ror#34 // Sigma0(a) + add x22,x22,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x22,x22,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x9,x9 // 6 +#endif + add x22,x22,x17 // h+=Sigma0(a) + ror x16,x26,#14 + add x21,x21,x19 // h+=K[i] + eor x12,x26,x26,ror#23 + and x17,x27,x26 + bic x19,x20,x26 + add x21,x21,x9 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x22,x23 // a^b, b^c in next round + eor x16,x16,x12,ror#18 // Sigma1(e) + ror x12,x22,#28 + add x21,x21,x17 // h+=Ch(e,f,g) + eor x17,x22,x22,ror#5 + add x21,x21,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x25,x25,x21 // d+=h + eor x28,x28,x23 // Maj(a,b,c) + eor x17,x12,x17,ror#34 // Sigma0(a) + add x21,x21,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x21,x21,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x10,x10 // 7 +#endif + ldp x11,x12,[x1],#2*8 + add x21,x21,x17 // h+=Sigma0(a) + ror x16,x25,#14 + add x20,x20,x28 // h+=K[i] + eor x13,x25,x25,ror#23 + and x17,x26,x25 + bic x28,x27,x25 + add x20,x20,x10 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x21,x22 // a^b, b^c in next round + eor x16,x16,x13,ror#18 // Sigma1(e) + ror x13,x21,#28 + add x20,x20,x17 // h+=Ch(e,f,g) + eor x17,x21,x21,ror#5 + add x20,x20,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x24,x24,x20 // d+=h + eor x19,x19,x22 // Maj(a,b,c) + eor x17,x13,x17,ror#34 // Sigma0(a) + add x20,x20,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x20,x20,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x11,x11 // 8 +#endif + add x20,x20,x17 // h+=Sigma0(a) + ror x16,x24,#14 + add x27,x27,x19 // h+=K[i] + eor x14,x24,x24,ror#23 + and x17,x25,x24 + bic x19,x26,x24 + add x27,x27,x11 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x20,x21 // a^b, b^c in next round + eor x16,x16,x14,ror#18 // Sigma1(e) + ror x14,x20,#28 + add x27,x27,x17 // h+=Ch(e,f,g) + eor x17,x20,x20,ror#5 + add x27,x27,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x23,x23,x27 // d+=h + eor x28,x28,x21 // Maj(a,b,c) + eor x17,x14,x17,ror#34 // Sigma0(a) + add x27,x27,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x27,x27,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x12,x12 // 9 +#endif + ldp x13,x14,[x1],#2*8 + add x27,x27,x17 // h+=Sigma0(a) + ror x16,x23,#14 + add x26,x26,x28 // h+=K[i] + eor x15,x23,x23,ror#23 + and x17,x24,x23 + bic x28,x25,x23 + add x26,x26,x12 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x27,x20 // a^b, b^c in next round + eor x16,x16,x15,ror#18 // Sigma1(e) + ror x15,x27,#28 + add x26,x26,x17 // h+=Ch(e,f,g) + eor x17,x27,x27,ror#5 + add x26,x26,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x22,x22,x26 // d+=h + eor x19,x19,x20 // Maj(a,b,c) + eor x17,x15,x17,ror#34 // Sigma0(a) + add x26,x26,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x26,x26,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x13,x13 // 10 +#endif + add x26,x26,x17 // h+=Sigma0(a) + ror x16,x22,#14 + add x25,x25,x19 // h+=K[i] + eor x0,x22,x22,ror#23 + and x17,x23,x22 + bic x19,x24,x22 + add x25,x25,x13 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x26,x27 // a^b, b^c in next round + eor x16,x16,x0,ror#18 // Sigma1(e) + ror x0,x26,#28 + add x25,x25,x17 // h+=Ch(e,f,g) + eor x17,x26,x26,ror#5 + add x25,x25,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x21,x21,x25 // d+=h + eor x28,x28,x27 // Maj(a,b,c) + eor x17,x0,x17,ror#34 // Sigma0(a) + add x25,x25,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x25,x25,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x14,x14 // 11 +#endif + ldp x15,x0,[x1],#2*8 + add x25,x25,x17 // h+=Sigma0(a) + str x6,[sp,#24] + ror x16,x21,#14 + add x24,x24,x28 // h+=K[i] + eor x6,x21,x21,ror#23 + and x17,x22,x21 + bic x28,x23,x21 + add x24,x24,x14 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x25,x26 // a^b, b^c in next round + eor x16,x16,x6,ror#18 // Sigma1(e) + ror x6,x25,#28 + add x24,x24,x17 // h+=Ch(e,f,g) + eor x17,x25,x25,ror#5 + add x24,x24,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x20,x20,x24 // d+=h + eor x19,x19,x26 // Maj(a,b,c) + eor x17,x6,x17,ror#34 // Sigma0(a) + add x24,x24,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x24,x24,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x15,x15 // 12 +#endif + add x24,x24,x17 // h+=Sigma0(a) + str x7,[sp,#0] + ror x16,x20,#14 + add x23,x23,x19 // h+=K[i] + eor x7,x20,x20,ror#23 + and x17,x21,x20 + bic x19,x22,x20 + add x23,x23,x15 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x24,x25 // a^b, b^c in next round + eor x16,x16,x7,ror#18 // Sigma1(e) + ror x7,x24,#28 + add x23,x23,x17 // h+=Ch(e,f,g) + eor x17,x24,x24,ror#5 + add x23,x23,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x27,x27,x23 // d+=h + eor x28,x28,x25 // Maj(a,b,c) + eor x17,x7,x17,ror#34 // Sigma0(a) + add x23,x23,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x23,x23,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x0,x0 // 13 +#endif + ldp x1,x2,[x1] + add x23,x23,x17 // h+=Sigma0(a) + str x8,[sp,#8] + ror x16,x27,#14 + add x22,x22,x28 // h+=K[i] + eor x8,x27,x27,ror#23 + and x17,x20,x27 + bic x28,x21,x27 + add x22,x22,x0 // h+=X[i] + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x23,x24 // a^b, b^c in next round + eor x16,x16,x8,ror#18 // Sigma1(e) + ror x8,x23,#28 + add x22,x22,x17 // h+=Ch(e,f,g) + eor x17,x23,x23,ror#5 + add x22,x22,x16 // h+=Sigma1(e) + and x19,x19,x28 // (b^c)&=(a^b) + add x26,x26,x22 // d+=h + eor x19,x19,x24 // Maj(a,b,c) + eor x17,x8,x17,ror#34 // Sigma0(a) + add x22,x22,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + //add x22,x22,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x1,x1 // 14 +#endif + ldr x6,[sp,#24] + add x22,x22,x17 // h+=Sigma0(a) + str x9,[sp,#16] + ror x16,x26,#14 + add x21,x21,x19 // h+=K[i] + eor x9,x26,x26,ror#23 + and x17,x27,x26 + bic x19,x20,x26 + add x21,x21,x1 // h+=X[i] + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x22,x23 // a^b, b^c in next round + eor x16,x16,x9,ror#18 // Sigma1(e) + ror x9,x22,#28 + add x21,x21,x17 // h+=Ch(e,f,g) + eor x17,x22,x22,ror#5 + add x21,x21,x16 // h+=Sigma1(e) + and x28,x28,x19 // (b^c)&=(a^b) + add x25,x25,x21 // d+=h + eor x28,x28,x23 // Maj(a,b,c) + eor x17,x9,x17,ror#34 // Sigma0(a) + add x21,x21,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + //add x21,x21,x17 // h+=Sigma0(a) +#ifndef __AARCH64EB__ + rev x2,x2 // 15 +#endif + ldr x7,[sp,#0] + add x21,x21,x17 // h+=Sigma0(a) + str x10,[sp,#24] + ror x16,x25,#14 + add x20,x20,x28 // h+=K[i] + ror x9,x4,#1 + and x17,x26,x25 + ror x8,x1,#19 + bic x28,x27,x25 + ror x10,x21,#28 + add x20,x20,x2 // h+=X[i] + eor x16,x16,x25,ror#18 + eor x9,x9,x4,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x21,x22 // a^b, b^c in next round + eor x16,x16,x25,ror#41 // Sigma1(e) + eor x10,x10,x21,ror#34 + add x20,x20,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x8,x8,x1,ror#61 + eor x9,x9,x4,lsr#7 // sigma0(X[i+1]) + add x20,x20,x16 // h+=Sigma1(e) + eor x19,x19,x22 // Maj(a,b,c) + eor x17,x10,x21,ror#39 // Sigma0(a) + eor x8,x8,x1,lsr#6 // sigma1(X[i+14]) + add x3,x3,x12 + add x24,x24,x20 // d+=h + add x20,x20,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x3,x3,x9 + add x20,x20,x17 // h+=Sigma0(a) + add x3,x3,x8 +Loop_16_xx: + ldr x8,[sp,#8] + str x11,[sp,#0] + ror x16,x24,#14 + add x27,x27,x19 // h+=K[i] + ror x10,x5,#1 + and x17,x25,x24 + ror x9,x2,#19 + bic x19,x26,x24 + ror x11,x20,#28 + add x27,x27,x3 // h+=X[i] + eor x16,x16,x24,ror#18 + eor x10,x10,x5,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x20,x21 // a^b, b^c in next round + eor x16,x16,x24,ror#41 // Sigma1(e) + eor x11,x11,x20,ror#34 + add x27,x27,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x9,x9,x2,ror#61 + eor x10,x10,x5,lsr#7 // sigma0(X[i+1]) + add x27,x27,x16 // h+=Sigma1(e) + eor x28,x28,x21 // Maj(a,b,c) + eor x17,x11,x20,ror#39 // Sigma0(a) + eor x9,x9,x2,lsr#6 // sigma1(X[i+14]) + add x4,x4,x13 + add x23,x23,x27 // d+=h + add x27,x27,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x4,x4,x10 + add x27,x27,x17 // h+=Sigma0(a) + add x4,x4,x9 + ldr x9,[sp,#16] + str x12,[sp,#8] + ror x16,x23,#14 + add x26,x26,x28 // h+=K[i] + ror x11,x6,#1 + and x17,x24,x23 + ror x10,x3,#19 + bic x28,x25,x23 + ror x12,x27,#28 + add x26,x26,x4 // h+=X[i] + eor x16,x16,x23,ror#18 + eor x11,x11,x6,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x27,x20 // a^b, b^c in next round + eor x16,x16,x23,ror#41 // Sigma1(e) + eor x12,x12,x27,ror#34 + add x26,x26,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x10,x10,x3,ror#61 + eor x11,x11,x6,lsr#7 // sigma0(X[i+1]) + add x26,x26,x16 // h+=Sigma1(e) + eor x19,x19,x20 // Maj(a,b,c) + eor x17,x12,x27,ror#39 // Sigma0(a) + eor x10,x10,x3,lsr#6 // sigma1(X[i+14]) + add x5,x5,x14 + add x22,x22,x26 // d+=h + add x26,x26,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x5,x5,x11 + add x26,x26,x17 // h+=Sigma0(a) + add x5,x5,x10 + ldr x10,[sp,#24] + str x13,[sp,#16] + ror x16,x22,#14 + add x25,x25,x19 // h+=K[i] + ror x12,x7,#1 + and x17,x23,x22 + ror x11,x4,#19 + bic x19,x24,x22 + ror x13,x26,#28 + add x25,x25,x5 // h+=X[i] + eor x16,x16,x22,ror#18 + eor x12,x12,x7,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x26,x27 // a^b, b^c in next round + eor x16,x16,x22,ror#41 // Sigma1(e) + eor x13,x13,x26,ror#34 + add x25,x25,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x11,x11,x4,ror#61 + eor x12,x12,x7,lsr#7 // sigma0(X[i+1]) + add x25,x25,x16 // h+=Sigma1(e) + eor x28,x28,x27 // Maj(a,b,c) + eor x17,x13,x26,ror#39 // Sigma0(a) + eor x11,x11,x4,lsr#6 // sigma1(X[i+14]) + add x6,x6,x15 + add x21,x21,x25 // d+=h + add x25,x25,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x6,x6,x12 + add x25,x25,x17 // h+=Sigma0(a) + add x6,x6,x11 + ldr x11,[sp,#0] + str x14,[sp,#24] + ror x16,x21,#14 + add x24,x24,x28 // h+=K[i] + ror x13,x8,#1 + and x17,x22,x21 + ror x12,x5,#19 + bic x28,x23,x21 + ror x14,x25,#28 + add x24,x24,x6 // h+=X[i] + eor x16,x16,x21,ror#18 + eor x13,x13,x8,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x25,x26 // a^b, b^c in next round + eor x16,x16,x21,ror#41 // Sigma1(e) + eor x14,x14,x25,ror#34 + add x24,x24,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x12,x12,x5,ror#61 + eor x13,x13,x8,lsr#7 // sigma0(X[i+1]) + add x24,x24,x16 // h+=Sigma1(e) + eor x19,x19,x26 // Maj(a,b,c) + eor x17,x14,x25,ror#39 // Sigma0(a) + eor x12,x12,x5,lsr#6 // sigma1(X[i+14]) + add x7,x7,x0 + add x20,x20,x24 // d+=h + add x24,x24,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x7,x7,x13 + add x24,x24,x17 // h+=Sigma0(a) + add x7,x7,x12 + ldr x12,[sp,#8] + str x15,[sp,#0] + ror x16,x20,#14 + add x23,x23,x19 // h+=K[i] + ror x14,x9,#1 + and x17,x21,x20 + ror x13,x6,#19 + bic x19,x22,x20 + ror x15,x24,#28 + add x23,x23,x7 // h+=X[i] + eor x16,x16,x20,ror#18 + eor x14,x14,x9,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x24,x25 // a^b, b^c in next round + eor x16,x16,x20,ror#41 // Sigma1(e) + eor x15,x15,x24,ror#34 + add x23,x23,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x13,x13,x6,ror#61 + eor x14,x14,x9,lsr#7 // sigma0(X[i+1]) + add x23,x23,x16 // h+=Sigma1(e) + eor x28,x28,x25 // Maj(a,b,c) + eor x17,x15,x24,ror#39 // Sigma0(a) + eor x13,x13,x6,lsr#6 // sigma1(X[i+14]) + add x8,x8,x1 + add x27,x27,x23 // d+=h + add x23,x23,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x8,x8,x14 + add x23,x23,x17 // h+=Sigma0(a) + add x8,x8,x13 + ldr x13,[sp,#16] + str x0,[sp,#8] + ror x16,x27,#14 + add x22,x22,x28 // h+=K[i] + ror x15,x10,#1 + and x17,x20,x27 + ror x14,x7,#19 + bic x28,x21,x27 + ror x0,x23,#28 + add x22,x22,x8 // h+=X[i] + eor x16,x16,x27,ror#18 + eor x15,x15,x10,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x23,x24 // a^b, b^c in next round + eor x16,x16,x27,ror#41 // Sigma1(e) + eor x0,x0,x23,ror#34 + add x22,x22,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x14,x14,x7,ror#61 + eor x15,x15,x10,lsr#7 // sigma0(X[i+1]) + add x22,x22,x16 // h+=Sigma1(e) + eor x19,x19,x24 // Maj(a,b,c) + eor x17,x0,x23,ror#39 // Sigma0(a) + eor x14,x14,x7,lsr#6 // sigma1(X[i+14]) + add x9,x9,x2 + add x26,x26,x22 // d+=h + add x22,x22,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x9,x9,x15 + add x22,x22,x17 // h+=Sigma0(a) + add x9,x9,x14 + ldr x14,[sp,#24] + str x1,[sp,#16] + ror x16,x26,#14 + add x21,x21,x19 // h+=K[i] + ror x0,x11,#1 + and x17,x27,x26 + ror x15,x8,#19 + bic x19,x20,x26 + ror x1,x22,#28 + add x21,x21,x9 // h+=X[i] + eor x16,x16,x26,ror#18 + eor x0,x0,x11,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x22,x23 // a^b, b^c in next round + eor x16,x16,x26,ror#41 // Sigma1(e) + eor x1,x1,x22,ror#34 + add x21,x21,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x15,x15,x8,ror#61 + eor x0,x0,x11,lsr#7 // sigma0(X[i+1]) + add x21,x21,x16 // h+=Sigma1(e) + eor x28,x28,x23 // Maj(a,b,c) + eor x17,x1,x22,ror#39 // Sigma0(a) + eor x15,x15,x8,lsr#6 // sigma1(X[i+14]) + add x10,x10,x3 + add x25,x25,x21 // d+=h + add x21,x21,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x10,x10,x0 + add x21,x21,x17 // h+=Sigma0(a) + add x10,x10,x15 + ldr x15,[sp,#0] + str x2,[sp,#24] + ror x16,x25,#14 + add x20,x20,x28 // h+=K[i] + ror x1,x12,#1 + and x17,x26,x25 + ror x0,x9,#19 + bic x28,x27,x25 + ror x2,x21,#28 + add x20,x20,x10 // h+=X[i] + eor x16,x16,x25,ror#18 + eor x1,x1,x12,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x21,x22 // a^b, b^c in next round + eor x16,x16,x25,ror#41 // Sigma1(e) + eor x2,x2,x21,ror#34 + add x20,x20,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x0,x0,x9,ror#61 + eor x1,x1,x12,lsr#7 // sigma0(X[i+1]) + add x20,x20,x16 // h+=Sigma1(e) + eor x19,x19,x22 // Maj(a,b,c) + eor x17,x2,x21,ror#39 // Sigma0(a) + eor x0,x0,x9,lsr#6 // sigma1(X[i+14]) + add x11,x11,x4 + add x24,x24,x20 // d+=h + add x20,x20,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x11,x11,x1 + add x20,x20,x17 // h+=Sigma0(a) + add x11,x11,x0 + ldr x0,[sp,#8] + str x3,[sp,#0] + ror x16,x24,#14 + add x27,x27,x19 // h+=K[i] + ror x2,x13,#1 + and x17,x25,x24 + ror x1,x10,#19 + bic x19,x26,x24 + ror x3,x20,#28 + add x27,x27,x11 // h+=X[i] + eor x16,x16,x24,ror#18 + eor x2,x2,x13,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x20,x21 // a^b, b^c in next round + eor x16,x16,x24,ror#41 // Sigma1(e) + eor x3,x3,x20,ror#34 + add x27,x27,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x1,x1,x10,ror#61 + eor x2,x2,x13,lsr#7 // sigma0(X[i+1]) + add x27,x27,x16 // h+=Sigma1(e) + eor x28,x28,x21 // Maj(a,b,c) + eor x17,x3,x20,ror#39 // Sigma0(a) + eor x1,x1,x10,lsr#6 // sigma1(X[i+14]) + add x12,x12,x5 + add x23,x23,x27 // d+=h + add x27,x27,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x12,x12,x2 + add x27,x27,x17 // h+=Sigma0(a) + add x12,x12,x1 + ldr x1,[sp,#16] + str x4,[sp,#8] + ror x16,x23,#14 + add x26,x26,x28 // h+=K[i] + ror x3,x14,#1 + and x17,x24,x23 + ror x2,x11,#19 + bic x28,x25,x23 + ror x4,x27,#28 + add x26,x26,x12 // h+=X[i] + eor x16,x16,x23,ror#18 + eor x3,x3,x14,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x27,x20 // a^b, b^c in next round + eor x16,x16,x23,ror#41 // Sigma1(e) + eor x4,x4,x27,ror#34 + add x26,x26,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x2,x2,x11,ror#61 + eor x3,x3,x14,lsr#7 // sigma0(X[i+1]) + add x26,x26,x16 // h+=Sigma1(e) + eor x19,x19,x20 // Maj(a,b,c) + eor x17,x4,x27,ror#39 // Sigma0(a) + eor x2,x2,x11,lsr#6 // sigma1(X[i+14]) + add x13,x13,x6 + add x22,x22,x26 // d+=h + add x26,x26,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x13,x13,x3 + add x26,x26,x17 // h+=Sigma0(a) + add x13,x13,x2 + ldr x2,[sp,#24] + str x5,[sp,#16] + ror x16,x22,#14 + add x25,x25,x19 // h+=K[i] + ror x4,x15,#1 + and x17,x23,x22 + ror x3,x12,#19 + bic x19,x24,x22 + ror x5,x26,#28 + add x25,x25,x13 // h+=X[i] + eor x16,x16,x22,ror#18 + eor x4,x4,x15,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x26,x27 // a^b, b^c in next round + eor x16,x16,x22,ror#41 // Sigma1(e) + eor x5,x5,x26,ror#34 + add x25,x25,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x3,x3,x12,ror#61 + eor x4,x4,x15,lsr#7 // sigma0(X[i+1]) + add x25,x25,x16 // h+=Sigma1(e) + eor x28,x28,x27 // Maj(a,b,c) + eor x17,x5,x26,ror#39 // Sigma0(a) + eor x3,x3,x12,lsr#6 // sigma1(X[i+14]) + add x14,x14,x7 + add x21,x21,x25 // d+=h + add x25,x25,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x14,x14,x4 + add x25,x25,x17 // h+=Sigma0(a) + add x14,x14,x3 + ldr x3,[sp,#0] + str x6,[sp,#24] + ror x16,x21,#14 + add x24,x24,x28 // h+=K[i] + ror x5,x0,#1 + and x17,x22,x21 + ror x4,x13,#19 + bic x28,x23,x21 + ror x6,x25,#28 + add x24,x24,x14 // h+=X[i] + eor x16,x16,x21,ror#18 + eor x5,x5,x0,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x25,x26 // a^b, b^c in next round + eor x16,x16,x21,ror#41 // Sigma1(e) + eor x6,x6,x25,ror#34 + add x24,x24,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x4,x4,x13,ror#61 + eor x5,x5,x0,lsr#7 // sigma0(X[i+1]) + add x24,x24,x16 // h+=Sigma1(e) + eor x19,x19,x26 // Maj(a,b,c) + eor x17,x6,x25,ror#39 // Sigma0(a) + eor x4,x4,x13,lsr#6 // sigma1(X[i+14]) + add x15,x15,x8 + add x20,x20,x24 // d+=h + add x24,x24,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x15,x15,x5 + add x24,x24,x17 // h+=Sigma0(a) + add x15,x15,x4 + ldr x4,[sp,#8] + str x7,[sp,#0] + ror x16,x20,#14 + add x23,x23,x19 // h+=K[i] + ror x6,x1,#1 + and x17,x21,x20 + ror x5,x14,#19 + bic x19,x22,x20 + ror x7,x24,#28 + add x23,x23,x15 // h+=X[i] + eor x16,x16,x20,ror#18 + eor x6,x6,x1,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x24,x25 // a^b, b^c in next round + eor x16,x16,x20,ror#41 // Sigma1(e) + eor x7,x7,x24,ror#34 + add x23,x23,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x5,x5,x14,ror#61 + eor x6,x6,x1,lsr#7 // sigma0(X[i+1]) + add x23,x23,x16 // h+=Sigma1(e) + eor x28,x28,x25 // Maj(a,b,c) + eor x17,x7,x24,ror#39 // Sigma0(a) + eor x5,x5,x14,lsr#6 // sigma1(X[i+14]) + add x0,x0,x9 + add x27,x27,x23 // d+=h + add x23,x23,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x0,x0,x6 + add x23,x23,x17 // h+=Sigma0(a) + add x0,x0,x5 + ldr x5,[sp,#16] + str x8,[sp,#8] + ror x16,x27,#14 + add x22,x22,x28 // h+=K[i] + ror x7,x2,#1 + and x17,x20,x27 + ror x6,x15,#19 + bic x28,x21,x27 + ror x8,x23,#28 + add x22,x22,x0 // h+=X[i] + eor x16,x16,x27,ror#18 + eor x7,x7,x2,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x23,x24 // a^b, b^c in next round + eor x16,x16,x27,ror#41 // Sigma1(e) + eor x8,x8,x23,ror#34 + add x22,x22,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x6,x6,x15,ror#61 + eor x7,x7,x2,lsr#7 // sigma0(X[i+1]) + add x22,x22,x16 // h+=Sigma1(e) + eor x19,x19,x24 // Maj(a,b,c) + eor x17,x8,x23,ror#39 // Sigma0(a) + eor x6,x6,x15,lsr#6 // sigma1(X[i+14]) + add x1,x1,x10 + add x26,x26,x22 // d+=h + add x22,x22,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x1,x1,x7 + add x22,x22,x17 // h+=Sigma0(a) + add x1,x1,x6 + ldr x6,[sp,#24] + str x9,[sp,#16] + ror x16,x26,#14 + add x21,x21,x19 // h+=K[i] + ror x8,x3,#1 + and x17,x27,x26 + ror x7,x0,#19 + bic x19,x20,x26 + ror x9,x22,#28 + add x21,x21,x1 // h+=X[i] + eor x16,x16,x26,ror#18 + eor x8,x8,x3,ror#8 + orr x17,x17,x19 // Ch(e,f,g) + eor x19,x22,x23 // a^b, b^c in next round + eor x16,x16,x26,ror#41 // Sigma1(e) + eor x9,x9,x22,ror#34 + add x21,x21,x17 // h+=Ch(e,f,g) + and x28,x28,x19 // (b^c)&=(a^b) + eor x7,x7,x0,ror#61 + eor x8,x8,x3,lsr#7 // sigma0(X[i+1]) + add x21,x21,x16 // h+=Sigma1(e) + eor x28,x28,x23 // Maj(a,b,c) + eor x17,x9,x22,ror#39 // Sigma0(a) + eor x7,x7,x0,lsr#6 // sigma1(X[i+14]) + add x2,x2,x11 + add x25,x25,x21 // d+=h + add x21,x21,x28 // h+=Maj(a,b,c) + ldr x28,[x30],#8 // *K++, x19 in next round + add x2,x2,x8 + add x21,x21,x17 // h+=Sigma0(a) + add x2,x2,x7 + ldr x7,[sp,#0] + str x10,[sp,#24] + ror x16,x25,#14 + add x20,x20,x28 // h+=K[i] + ror x9,x4,#1 + and x17,x26,x25 + ror x8,x1,#19 + bic x28,x27,x25 + ror x10,x21,#28 + add x20,x20,x2 // h+=X[i] + eor x16,x16,x25,ror#18 + eor x9,x9,x4,ror#8 + orr x17,x17,x28 // Ch(e,f,g) + eor x28,x21,x22 // a^b, b^c in next round + eor x16,x16,x25,ror#41 // Sigma1(e) + eor x10,x10,x21,ror#34 + add x20,x20,x17 // h+=Ch(e,f,g) + and x19,x19,x28 // (b^c)&=(a^b) + eor x8,x8,x1,ror#61 + eor x9,x9,x4,lsr#7 // sigma0(X[i+1]) + add x20,x20,x16 // h+=Sigma1(e) + eor x19,x19,x22 // Maj(a,b,c) + eor x17,x10,x21,ror#39 // Sigma0(a) + eor x8,x8,x1,lsr#6 // sigma1(X[i+14]) + add x3,x3,x12 + add x24,x24,x20 // d+=h + add x20,x20,x19 // h+=Maj(a,b,c) + ldr x19,[x30],#8 // *K++, x28 in next round + add x3,x3,x9 + add x20,x20,x17 // h+=Sigma0(a) + add x3,x3,x8 + cbnz x19,Loop_16_xx + + ldp x0,x2,[x29,#96] + ldr x1,[x29,#112] + sub x30,x30,#648 // rewind + + ldp x3,x4,[x0] + ldp x5,x6,[x0,#2*8] + add x1,x1,#14*8 // advance input pointer + ldp x7,x8,[x0,#4*8] + add x20,x20,x3 + ldp x9,x10,[x0,#6*8] + add x21,x21,x4 + add x22,x22,x5 + add x23,x23,x6 + stp x20,x21,[x0] + add x24,x24,x7 + add x25,x25,x8 + stp x22,x23,[x0,#2*8] + add x26,x26,x9 + add x27,x27,x10 + cmp x1,x2 + stp x24,x25,[x0,#4*8] + stp x26,x27,[x0,#6*8] + b.ne Loop + + ldp x19,x20,[x29,#16] + add sp,sp,#4*8 + ldp x21,x22,[x29,#32] + ldp x23,x24,[x29,#48] + ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#128 +.long 0xd50323bf // autiasp + ret + + +.align 6 + +LK512: +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0x06ca6351e003826f,0x142929670a0e6e70 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6 +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +.quad 0 // terminator + +#ifndef __KERNEL__ +.align 3 +LOPENSSL_armcap_P: +# ifdef __ILP32__ +.long _OPENSSL_armcap_P-. +# else +.quad ARMV7_NEON +# endif +#endif +.byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 2 +#ifndef __KERNEL__ + +.align 6 +sha512_block_armv8: +Lv8_entry: + stp x29,x30,[sp,#-16]! + add x29,sp,#0 + + ld1 {v16.16b,v17.16b,v18.16b,v19.16b},[x1],#64 // load input + ld1 {v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64 + + ld1 {v0.2d,v1.2d,v2.2d,v3.2d},[x0] // load context + adr x3,LK512 + + rev64 v16.16b,v16.16b + rev64 v17.16b,v17.16b + rev64 v18.16b,v18.16b + rev64 v19.16b,v19.16b + rev64 v20.16b,v20.16b + rev64 v21.16b,v21.16b + rev64 v22.16b,v22.16b + rev64 v23.16b,v23.16b + b Loop_hw + +.align 4 +Loop_hw: + ld1 {v24.2d},[x3],#16 + subs x2,x2,#1 + sub x4,x1,#128 + orr v26.16b,v0.16b,v0.16b // offload + orr v27.16b,v1.16b,v1.16b + orr v28.16b,v2.16b,v2.16b + orr v29.16b,v3.16b,v3.16b + csel x1,x1,x4,ne // conditional rewind + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v24.2d,v24.2d,v16.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08230 //sha512su0 v16.16b,v17.16b + ext v7.16b,v20.16b,v21.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678af0 //sha512su1 v16.16b,v23.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v25.2d,v25.2d,v17.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08251 //sha512su0 v17.16b,v18.16b + ext v7.16b,v21.16b,v22.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678a11 //sha512su1 v17.16b,v16.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v24.2d,v24.2d,v18.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec08272 //sha512su0 v18.16b,v19.16b + ext v7.16b,v22.16b,v23.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678a32 //sha512su1 v18.16b,v17.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + add v25.2d,v25.2d,v19.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08293 //sha512su0 v19.16b,v20.16b + ext v7.16b,v23.16b,v16.16b,#8 +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b +.long 0xce678a53 //sha512su1 v19.16b,v18.16b,v7.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + add v24.2d,v24.2d,v20.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082b4 //sha512su0 v20.16b,v21.16b + ext v7.16b,v16.16b,v17.16b,#8 +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b +.long 0xce678a74 //sha512su1 v20.16b,v19.16b,v7.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + add v25.2d,v25.2d,v21.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec082d5 //sha512su0 v21.16b,v22.16b + ext v7.16b,v17.16b,v18.16b,#8 +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b +.long 0xce678a95 //sha512su1 v21.16b,v20.16b,v7.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v24.2d,v24.2d,v22.2d + ld1 {v25.2d},[x3],#16 + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" +.long 0xcec082f6 //sha512su0 v22.16b,v23.16b + ext v7.16b,v18.16b,v19.16b,#8 +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b +.long 0xce678ab6 //sha512su1 v22.16b,v21.16b,v7.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + add v25.2d,v25.2d,v23.2d + ld1 {v24.2d},[x3],#16 + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" +.long 0xcec08217 //sha512su0 v23.16b,v16.16b + ext v7.16b,v19.16b,v20.16b,#8 +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b +.long 0xce678ad7 //sha512su1 v23.16b,v22.16b,v7.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v16.2d + ld1 {v16.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b + rev64 v16.16b,v16.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v17.2d + ld1 {v17.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b + rev64 v17.16b,v17.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v18.2d + ld1 {v18.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b + rev64 v18.16b,v18.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v19.2d + ld1 {v19.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v2.16b,v3.16b,#8 + ext v6.16b,v1.16b,v2.16b,#8 + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" +.long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b + rev64 v19.16b,v19.16b + add v4.2d,v1.2d,v3.2d // "D + T1" +.long 0xce608423 //sha512h2 v3.16b,v1.16b,v0.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v20.2d + ld1 {v20.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v4.16b,v2.16b,#8 + ext v6.16b,v0.16b,v4.16b,#8 + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" +.long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b + rev64 v20.16b,v20.16b + add v1.2d,v0.2d,v2.2d // "D + T1" +.long 0xce638402 //sha512h2 v2.16b,v0.16b,v3.16b + ld1 {v24.2d},[x3],#16 + add v25.2d,v25.2d,v21.2d + ld1 {v21.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v1.16b,v4.16b,#8 + ext v6.16b,v3.16b,v1.16b,#8 + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" +.long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b + rev64 v21.16b,v21.16b + add v0.2d,v3.2d,v4.2d // "D + T1" +.long 0xce628464 //sha512h2 v4.16b,v3.16b,v2.16b + ld1 {v25.2d},[x3],#16 + add v24.2d,v24.2d,v22.2d + ld1 {v22.16b},[x1],#16 // load next input + ext v24.16b,v24.16b,v24.16b,#8 + ext v5.16b,v0.16b,v1.16b,#8 + ext v6.16b,v2.16b,v0.16b,#8 + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" +.long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b + rev64 v22.16b,v22.16b + add v3.2d,v2.2d,v1.2d // "D + T1" +.long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b + sub x3,x3,#80*8 // rewind + add v25.2d,v25.2d,v23.2d + ld1 {v23.16b},[x1],#16 // load next input + ext v25.16b,v25.16b,v25.16b,#8 + ext v5.16b,v3.16b,v0.16b,#8 + ext v6.16b,v4.16b,v3.16b,#8 + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" +.long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b + rev64 v23.16b,v23.16b + add v2.2d,v4.2d,v0.2d // "D + T1" +.long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b + add v0.2d,v0.2d,v26.2d // accumulate + add v1.2d,v1.2d,v27.2d + add v2.2d,v2.2d,v28.2d + add v3.2d,v3.2d,v29.2d + + cbnz x2,Loop_hw + + st1 {v0.2d,v1.2d,v2.2d,v3.2d},[x0] // store context + + ldr x29,[sp],#16 + ret + +#endif diff --git a/vere/ext/openssl/gen/macos-aarch64/include/crypto/bn_conf.h b/vere/ext/openssl/gen/macos-aarch64/include/crypto/bn_conf.h new file mode 100644 index 0000000..5312ef5 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/include/crypto/bn_conf.h @@ -0,0 +1,28 @@ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/bn_conf.h.in */ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_BN_CONF_H +# define OSSL_CRYPTO_BN_CONF_H + +/* + * The contents of this file are not used in the UEFI build, as + * both 32-bit and 64-bit builds are supported from a single run + * of the Configure script. + */ + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#define SIXTY_FOUR_BIT_LONG +#undef SIXTY_FOUR_BIT +#undef THIRTY_TWO_BIT + +#endif diff --git a/vere/ext/openssl/gen/macos-aarch64/include/crypto/buildinf.h b/vere/ext/openssl/gen/macos-aarch64/include/crypto/buildinf.h new file mode 100644 index 0000000..e56419f --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/include/crypto/buildinf.h @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by util/mkbuildinf.pl + * + * Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define PLATFORM "platform: darwin64-arm64-cc" +#define DATE "built on: Tue Sep 3 15:02:18 2024 UTC" + +/* + * Generate compiler_flags as an array of individual characters. This is a + * workaround for the situation where CFLAGS gets too long for a C90 string + * literal + */ +static const char compiler_flags[] = { + 'c','o','m','p','i','l','e','r',':',' ','c','c',' ','-','f','P', + 'I','C',' ','-','a','r','c','h',' ','a','r','m','6','4',' ','-', + 'O','3',' ','-','W','a','l','l',' ','-','D','L','_','E','N','D', + 'I','A','N',' ','-','D','O','P','E','N','S','S','L','_','P','I', + 'C',' ','-','D','O','P','E','N','S','S','L','_','C','P','U','I', + 'D','_','O','B','J',' ','-','D','O','P','E','N','S','S','L','_', + 'B','N','_','A','S','M','_','M','O','N','T',' ','-','D','S','H', + 'A','1','_','A','S','M',' ','-','D','S','H','A','2','5','6','_', + 'A','S','M',' ','-','D','S','H','A','5','1','2','_','A','S','M', + ' ','-','D','K','E','C','C','A','K','1','6','0','0','_','A','S', + 'M',' ','-','D','V','P','A','E','S','_','A','S','M',' ','-','D', + 'E','C','P','_','N','I','S','T','Z','2','5','6','_','A','S','M', + ' ','-','D','P','O','L','Y','1','3','0','5','_','A','S','M',' ', + '-','D','_','R','E','E','N','T','R','A','N','T',' ','-','D','N', + 'D','E','B','U','G','\0' +}; diff --git a/vere/ext/openssl/gen/macos-aarch64/include/crypto/dso_conf.h b/vere/ext/openssl/gen/macos-aarch64/include/crypto/dso_conf.h new file mode 100644 index 0000000..e2d05cd --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/include/crypto/dso_conf.h @@ -0,0 +1,17 @@ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/dso_conf.h.in */ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_DSO_CONF_H +# define OSSL_CRYPTO_DSO_CONF_H +# define DSO_DLFCN +# define HAVE_DLFCN_H +# define DSO_EXTENSION ".dylib" +#endif diff --git a/vere/ext/openssl/gen/macos-aarch64/include/openssl/opensslconf.h b/vere/ext/openssl/gen/macos-aarch64/include/openssl/opensslconf.h new file mode 100644 index 0000000..7530b04 --- /dev/null +++ b/vere/ext/openssl/gen/macos-aarch64/include/openssl/opensslconf.h @@ -0,0 +1,203 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_SYS_MACOSX +# define OPENSSL_SYS_MACOSX 1 +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +#endif +#ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +#endif +#ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +#endif +#ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#ifndef OPENSSL_FILE +# ifdef OPENSSL_NO_FILENAMES +# define OPENSSL_FILE "" +# define OPENSSL_LINE 0 +# else +# define OPENSSL_FILE __FILE__ +# define OPENSSL_LINE __LINE__ +# endif +#endif + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# define SIXTY_FOUR_BIT_LONG +# undef SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#define RC4_INT unsigned int + +#ifdef __cplusplus +} +#endif diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-mb-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-mb-x86_64.s new file mode 100644 index 0000000..8f97b85 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-mb-x86_64.s @@ -0,0 +1,1507 @@ +.text + + + +.globl _aesni_multi_cbc_encrypt + +.p2align 5 +_aesni_multi_cbc_encrypt: + + cmpl $2,%edx + jb L$enc_non_avx + movl _OPENSSL_ia32cap_P+4(%rip),%ecx + testl $268435456,%ecx + jnz _avx_cbc_enc_shortcut + jmp L$enc_non_avx +.p2align 4 +L$enc_non_avx: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + + + + + + subq $48,%rsp + andq $-64,%rsp + movq %rax,16(%rsp) + + +L$enc4x_body: + movdqu (%rsi),%xmm12 + leaq 120(%rsi),%rsi + leaq 80(%rdi),%rdi + +L$enc4x_loop_grande: + movl %edx,24(%rsp) + xorl %edx,%edx + movl -64(%rdi),%ecx + movq -80(%rdi),%r8 + cmpl %edx,%ecx + movq -72(%rdi),%r12 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu -56(%rdi),%xmm2 + movl %ecx,32(%rsp) + cmovleq %rsp,%r8 + movl -24(%rdi),%ecx + movq -40(%rdi),%r9 + cmpl %edx,%ecx + movq -32(%rdi),%r13 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu -16(%rdi),%xmm3 + movl %ecx,36(%rsp) + cmovleq %rsp,%r9 + movl 16(%rdi),%ecx + movq 0(%rdi),%r10 + cmpl %edx,%ecx + movq 8(%rdi),%r14 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu 24(%rdi),%xmm4 + movl %ecx,40(%rsp) + cmovleq %rsp,%r10 + movl 56(%rdi),%ecx + movq 40(%rdi),%r11 + cmpl %edx,%ecx + movq 48(%rdi),%r15 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu 64(%rdi),%xmm5 + movl %ecx,44(%rsp) + cmovleq %rsp,%r11 + testl %edx,%edx + jz L$enc4x_done + + movups 16-120(%rsi),%xmm1 + pxor %xmm12,%xmm2 + movups 32-120(%rsi),%xmm0 + pxor %xmm12,%xmm3 + movl 240-120(%rsi),%eax + pxor %xmm12,%xmm4 + movdqu (%r8),%xmm6 + pxor %xmm12,%xmm5 + movdqu (%r9),%xmm7 + pxor %xmm6,%xmm2 + movdqu (%r10),%xmm8 + pxor %xmm7,%xmm3 + movdqu (%r11),%xmm9 + pxor %xmm8,%xmm4 + pxor %xmm9,%xmm5 + movdqa 32(%rsp),%xmm10 + xorq %rbx,%rbx + jmp L$oop_enc4x + +.p2align 5 +L$oop_enc4x: + addq $16,%rbx + leaq 16(%rsp),%rbp + movl $1,%ecx + subq %rbx,%rbp + +.byte 102,15,56,220,209 + prefetcht0 31(%r8,%rbx,1) + prefetcht0 31(%r9,%rbx,1) +.byte 102,15,56,220,217 + prefetcht0 31(%r10,%rbx,1) + prefetcht0 31(%r10,%rbx,1) +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups 48-120(%rsi),%xmm1 + cmpl 32(%rsp),%ecx +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 + cmovgeq %rbp,%r8 + cmovgq %rbp,%r12 +.byte 102,15,56,220,232 + movups -56(%rsi),%xmm0 + cmpl 36(%rsp),%ecx +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 + cmovgeq %rbp,%r9 + cmovgq %rbp,%r13 +.byte 102,15,56,220,233 + movups -40(%rsi),%xmm1 + cmpl 40(%rsp),%ecx +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 + cmovgeq %rbp,%r10 + cmovgq %rbp,%r14 +.byte 102,15,56,220,232 + movups -24(%rsi),%xmm0 + cmpl 44(%rsp),%ecx +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 + cmovgeq %rbp,%r11 + cmovgq %rbp,%r15 +.byte 102,15,56,220,233 + movups -8(%rsi),%xmm1 + movdqa %xmm10,%xmm11 +.byte 102,15,56,220,208 + prefetcht0 15(%r12,%rbx,1) + prefetcht0 15(%r13,%rbx,1) +.byte 102,15,56,220,216 + prefetcht0 15(%r14,%rbx,1) + prefetcht0 15(%r15,%rbx,1) +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups 128-120(%rsi),%xmm0 + pxor %xmm12,%xmm12 + +.byte 102,15,56,220,209 + pcmpgtd %xmm12,%xmm11 + movdqu -120(%rsi),%xmm12 +.byte 102,15,56,220,217 + paddd %xmm11,%xmm10 + movdqa %xmm10,32(%rsp) +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups 144-120(%rsi),%xmm1 + + cmpl $11,%eax + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups 160-120(%rsi),%xmm0 + + jb L$enc4x_tail + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups 176-120(%rsi),%xmm1 + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups 192-120(%rsi),%xmm0 + + je L$enc4x_tail + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups 208-120(%rsi),%xmm1 + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups 224-120(%rsi),%xmm0 + jmp L$enc4x_tail + +.p2align 5 +L$enc4x_tail: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movdqu (%r8,%rbx,1),%xmm6 + movdqu 16-120(%rsi),%xmm1 + +.byte 102,15,56,221,208 + movdqu (%r9,%rbx,1),%xmm7 + pxor %xmm12,%xmm6 +.byte 102,15,56,221,216 + movdqu (%r10,%rbx,1),%xmm8 + pxor %xmm12,%xmm7 +.byte 102,15,56,221,224 + movdqu (%r11,%rbx,1),%xmm9 + pxor %xmm12,%xmm8 +.byte 102,15,56,221,232 + movdqu 32-120(%rsi),%xmm0 + pxor %xmm12,%xmm9 + + movups %xmm2,-16(%r12,%rbx,1) + pxor %xmm6,%xmm2 + movups %xmm3,-16(%r13,%rbx,1) + pxor %xmm7,%xmm3 + movups %xmm4,-16(%r14,%rbx,1) + pxor %xmm8,%xmm4 + movups %xmm5,-16(%r15,%rbx,1) + pxor %xmm9,%xmm5 + + decl %edx + jnz L$oop_enc4x + + movq 16(%rsp),%rax + + movl 24(%rsp),%edx + + + + + + + + + + + leaq 160(%rdi),%rdi + decl %edx + jnz L$enc4x_loop_grande + +L$enc4x_done: + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$enc4x_epilogue: + .byte 0xf3,0xc3 + + + +.globl _aesni_multi_cbc_decrypt + +.p2align 5 +_aesni_multi_cbc_decrypt: + + cmpl $2,%edx + jb L$dec_non_avx + movl _OPENSSL_ia32cap_P+4(%rip),%ecx + testl $268435456,%ecx + jnz _avx_cbc_dec_shortcut + jmp L$dec_non_avx +.p2align 4 +L$dec_non_avx: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + + + + + + subq $48,%rsp + andq $-64,%rsp + movq %rax,16(%rsp) + + +L$dec4x_body: + movdqu (%rsi),%xmm12 + leaq 120(%rsi),%rsi + leaq 80(%rdi),%rdi + +L$dec4x_loop_grande: + movl %edx,24(%rsp) + xorl %edx,%edx + movl -64(%rdi),%ecx + movq -80(%rdi),%r8 + cmpl %edx,%ecx + movq -72(%rdi),%r12 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu -56(%rdi),%xmm6 + movl %ecx,32(%rsp) + cmovleq %rsp,%r8 + movl -24(%rdi),%ecx + movq -40(%rdi),%r9 + cmpl %edx,%ecx + movq -32(%rdi),%r13 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu -16(%rdi),%xmm7 + movl %ecx,36(%rsp) + cmovleq %rsp,%r9 + movl 16(%rdi),%ecx + movq 0(%rdi),%r10 + cmpl %edx,%ecx + movq 8(%rdi),%r14 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu 24(%rdi),%xmm8 + movl %ecx,40(%rsp) + cmovleq %rsp,%r10 + movl 56(%rdi),%ecx + movq 40(%rdi),%r11 + cmpl %edx,%ecx + movq 48(%rdi),%r15 + cmovgl %ecx,%edx + testl %ecx,%ecx + movdqu 64(%rdi),%xmm9 + movl %ecx,44(%rsp) + cmovleq %rsp,%r11 + testl %edx,%edx + jz L$dec4x_done + + movups 16-120(%rsi),%xmm1 + movups 32-120(%rsi),%xmm0 + movl 240-120(%rsi),%eax + movdqu (%r8),%xmm2 + movdqu (%r9),%xmm3 + pxor %xmm12,%xmm2 + movdqu (%r10),%xmm4 + pxor %xmm12,%xmm3 + movdqu (%r11),%xmm5 + pxor %xmm12,%xmm4 + pxor %xmm12,%xmm5 + movdqa 32(%rsp),%xmm10 + xorq %rbx,%rbx + jmp L$oop_dec4x + +.p2align 5 +L$oop_dec4x: + addq $16,%rbx + leaq 16(%rsp),%rbp + movl $1,%ecx + subq %rbx,%rbp + +.byte 102,15,56,222,209 + prefetcht0 31(%r8,%rbx,1) + prefetcht0 31(%r9,%rbx,1) +.byte 102,15,56,222,217 + prefetcht0 31(%r10,%rbx,1) + prefetcht0 31(%r11,%rbx,1) +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups 48-120(%rsi),%xmm1 + cmpl 32(%rsp),%ecx +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 + cmovgeq %rbp,%r8 + cmovgq %rbp,%r12 +.byte 102,15,56,222,232 + movups -56(%rsi),%xmm0 + cmpl 36(%rsp),%ecx +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 + cmovgeq %rbp,%r9 + cmovgq %rbp,%r13 +.byte 102,15,56,222,233 + movups -40(%rsi),%xmm1 + cmpl 40(%rsp),%ecx +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 + cmovgeq %rbp,%r10 + cmovgq %rbp,%r14 +.byte 102,15,56,222,232 + movups -24(%rsi),%xmm0 + cmpl 44(%rsp),%ecx +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 + cmovgeq %rbp,%r11 + cmovgq %rbp,%r15 +.byte 102,15,56,222,233 + movups -8(%rsi),%xmm1 + movdqa %xmm10,%xmm11 +.byte 102,15,56,222,208 + prefetcht0 15(%r12,%rbx,1) + prefetcht0 15(%r13,%rbx,1) +.byte 102,15,56,222,216 + prefetcht0 15(%r14,%rbx,1) + prefetcht0 15(%r15,%rbx,1) +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups 128-120(%rsi),%xmm0 + pxor %xmm12,%xmm12 + +.byte 102,15,56,222,209 + pcmpgtd %xmm12,%xmm11 + movdqu -120(%rsi),%xmm12 +.byte 102,15,56,222,217 + paddd %xmm11,%xmm10 + movdqa %xmm10,32(%rsp) +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups 144-120(%rsi),%xmm1 + + cmpl $11,%eax + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups 160-120(%rsi),%xmm0 + + jb L$dec4x_tail + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups 176-120(%rsi),%xmm1 + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups 192-120(%rsi),%xmm0 + + je L$dec4x_tail + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups 208-120(%rsi),%xmm1 + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups 224-120(%rsi),%xmm0 + jmp L$dec4x_tail + +.p2align 5 +L$dec4x_tail: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 + pxor %xmm0,%xmm6 + pxor %xmm0,%xmm7 +.byte 102,15,56,222,233 + movdqu 16-120(%rsi),%xmm1 + pxor %xmm0,%xmm8 + pxor %xmm0,%xmm9 + movdqu 32-120(%rsi),%xmm0 + +.byte 102,15,56,223,214 +.byte 102,15,56,223,223 + movdqu -16(%r8,%rbx,1),%xmm6 + movdqu -16(%r9,%rbx,1),%xmm7 +.byte 102,65,15,56,223,224 +.byte 102,65,15,56,223,233 + movdqu -16(%r10,%rbx,1),%xmm8 + movdqu -16(%r11,%rbx,1),%xmm9 + + movups %xmm2,-16(%r12,%rbx,1) + movdqu (%r8,%rbx,1),%xmm2 + movups %xmm3,-16(%r13,%rbx,1) + movdqu (%r9,%rbx,1),%xmm3 + pxor %xmm12,%xmm2 + movups %xmm4,-16(%r14,%rbx,1) + movdqu (%r10,%rbx,1),%xmm4 + pxor %xmm12,%xmm3 + movups %xmm5,-16(%r15,%rbx,1) + movdqu (%r11,%rbx,1),%xmm5 + pxor %xmm12,%xmm4 + pxor %xmm12,%xmm5 + + decl %edx + jnz L$oop_dec4x + + movq 16(%rsp),%rax + + movl 24(%rsp),%edx + + leaq 160(%rdi),%rdi + decl %edx + jnz L$dec4x_loop_grande + +L$dec4x_done: + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$dec4x_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +aesni_multi_cbc_encrypt_avx: + +_avx_cbc_enc_shortcut: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + + + + + + + + subq $192,%rsp + andq $-128,%rsp + movq %rax,16(%rsp) + + +L$enc8x_body: + vzeroupper + vmovdqu (%rsi),%xmm15 + leaq 120(%rsi),%rsi + leaq 160(%rdi),%rdi + shrl $1,%edx + +L$enc8x_loop_grande: + + xorl %edx,%edx + movl -144(%rdi),%ecx + movq -160(%rdi),%r8 + cmpl %edx,%ecx + movq -152(%rdi),%rbx + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -136(%rdi),%xmm2 + movl %ecx,32(%rsp) + cmovleq %rsp,%r8 + subq %r8,%rbx + movq %rbx,64(%rsp) + movl -104(%rdi),%ecx + movq -120(%rdi),%r9 + cmpl %edx,%ecx + movq -112(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -96(%rdi),%xmm3 + movl %ecx,36(%rsp) + cmovleq %rsp,%r9 + subq %r9,%rbp + movq %rbp,72(%rsp) + movl -64(%rdi),%ecx + movq -80(%rdi),%r10 + cmpl %edx,%ecx + movq -72(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -56(%rdi),%xmm4 + movl %ecx,40(%rsp) + cmovleq %rsp,%r10 + subq %r10,%rbp + movq %rbp,80(%rsp) + movl -24(%rdi),%ecx + movq -40(%rdi),%r11 + cmpl %edx,%ecx + movq -32(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -16(%rdi),%xmm5 + movl %ecx,44(%rsp) + cmovleq %rsp,%r11 + subq %r11,%rbp + movq %rbp,88(%rsp) + movl 16(%rdi),%ecx + movq 0(%rdi),%r12 + cmpl %edx,%ecx + movq 8(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 24(%rdi),%xmm6 + movl %ecx,48(%rsp) + cmovleq %rsp,%r12 + subq %r12,%rbp + movq %rbp,96(%rsp) + movl 56(%rdi),%ecx + movq 40(%rdi),%r13 + cmpl %edx,%ecx + movq 48(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 64(%rdi),%xmm7 + movl %ecx,52(%rsp) + cmovleq %rsp,%r13 + subq %r13,%rbp + movq %rbp,104(%rsp) + movl 96(%rdi),%ecx + movq 80(%rdi),%r14 + cmpl %edx,%ecx + movq 88(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 104(%rdi),%xmm8 + movl %ecx,56(%rsp) + cmovleq %rsp,%r14 + subq %r14,%rbp + movq %rbp,112(%rsp) + movl 136(%rdi),%ecx + movq 120(%rdi),%r15 + cmpl %edx,%ecx + movq 128(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 144(%rdi),%xmm9 + movl %ecx,60(%rsp) + cmovleq %rsp,%r15 + subq %r15,%rbp + movq %rbp,120(%rsp) + testl %edx,%edx + jz L$enc8x_done + + vmovups 16-120(%rsi),%xmm1 + vmovups 32-120(%rsi),%xmm0 + movl 240-120(%rsi),%eax + + vpxor (%r8),%xmm15,%xmm10 + leaq 128(%rsp),%rbp + vpxor (%r9),%xmm15,%xmm11 + vpxor (%r10),%xmm15,%xmm12 + vpxor (%r11),%xmm15,%xmm13 + vpxor %xmm10,%xmm2,%xmm2 + vpxor (%r12),%xmm15,%xmm10 + vpxor %xmm11,%xmm3,%xmm3 + vpxor (%r13),%xmm15,%xmm11 + vpxor %xmm12,%xmm4,%xmm4 + vpxor (%r14),%xmm15,%xmm12 + vpxor %xmm13,%xmm5,%xmm5 + vpxor (%r15),%xmm15,%xmm13 + vpxor %xmm10,%xmm6,%xmm6 + movl $1,%ecx + vpxor %xmm11,%xmm7,%xmm7 + vpxor %xmm12,%xmm8,%xmm8 + vpxor %xmm13,%xmm9,%xmm9 + jmp L$oop_enc8x + +.p2align 5 +L$oop_enc8x: + vaesenc %xmm1,%xmm2,%xmm2 + cmpl 32+0(%rsp),%ecx + vaesenc %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r8) + vaesenc %xmm1,%xmm4,%xmm4 + vaesenc %xmm1,%xmm5,%xmm5 + leaq (%r8,%rbx,1),%rbx + cmovgeq %rsp,%r8 + vaesenc %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm1,%xmm7,%xmm7 + subq %r8,%rbx + vaesenc %xmm1,%xmm8,%xmm8 + vpxor 16(%r8),%xmm15,%xmm10 + movq %rbx,64+0(%rsp) + vaesenc %xmm1,%xmm9,%xmm9 + vmovups -72(%rsi),%xmm1 + leaq 16(%r8,%rbx,1),%r8 + vmovdqu %xmm10,0(%rbp) + vaesenc %xmm0,%xmm2,%xmm2 + cmpl 32+4(%rsp),%ecx + movq 64+8(%rsp),%rbx + vaesenc %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r9) + vaesenc %xmm0,%xmm4,%xmm4 + vaesenc %xmm0,%xmm5,%xmm5 + leaq (%r9,%rbx,1),%rbx + cmovgeq %rsp,%r9 + vaesenc %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm0,%xmm7,%xmm7 + subq %r9,%rbx + vaesenc %xmm0,%xmm8,%xmm8 + vpxor 16(%r9),%xmm15,%xmm11 + movq %rbx,64+8(%rsp) + vaesenc %xmm0,%xmm9,%xmm9 + vmovups -56(%rsi),%xmm0 + leaq 16(%r9,%rbx,1),%r9 + vmovdqu %xmm11,16(%rbp) + vaesenc %xmm1,%xmm2,%xmm2 + cmpl 32+8(%rsp),%ecx + movq 64+16(%rsp),%rbx + vaesenc %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r10) + vaesenc %xmm1,%xmm4,%xmm4 + prefetcht0 15(%r8) + vaesenc %xmm1,%xmm5,%xmm5 + leaq (%r10,%rbx,1),%rbx + cmovgeq %rsp,%r10 + vaesenc %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm1,%xmm7,%xmm7 + subq %r10,%rbx + vaesenc %xmm1,%xmm8,%xmm8 + vpxor 16(%r10),%xmm15,%xmm12 + movq %rbx,64+16(%rsp) + vaesenc %xmm1,%xmm9,%xmm9 + vmovups -40(%rsi),%xmm1 + leaq 16(%r10,%rbx,1),%r10 + vmovdqu %xmm12,32(%rbp) + vaesenc %xmm0,%xmm2,%xmm2 + cmpl 32+12(%rsp),%ecx + movq 64+24(%rsp),%rbx + vaesenc %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r11) + vaesenc %xmm0,%xmm4,%xmm4 + prefetcht0 15(%r9) + vaesenc %xmm0,%xmm5,%xmm5 + leaq (%r11,%rbx,1),%rbx + cmovgeq %rsp,%r11 + vaesenc %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm0,%xmm7,%xmm7 + subq %r11,%rbx + vaesenc %xmm0,%xmm8,%xmm8 + vpxor 16(%r11),%xmm15,%xmm13 + movq %rbx,64+24(%rsp) + vaesenc %xmm0,%xmm9,%xmm9 + vmovups -24(%rsi),%xmm0 + leaq 16(%r11,%rbx,1),%r11 + vmovdqu %xmm13,48(%rbp) + vaesenc %xmm1,%xmm2,%xmm2 + cmpl 32+16(%rsp),%ecx + movq 64+32(%rsp),%rbx + vaesenc %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r12) + vaesenc %xmm1,%xmm4,%xmm4 + prefetcht0 15(%r10) + vaesenc %xmm1,%xmm5,%xmm5 + leaq (%r12,%rbx,1),%rbx + cmovgeq %rsp,%r12 + vaesenc %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm1,%xmm7,%xmm7 + subq %r12,%rbx + vaesenc %xmm1,%xmm8,%xmm8 + vpxor 16(%r12),%xmm15,%xmm10 + movq %rbx,64+32(%rsp) + vaesenc %xmm1,%xmm9,%xmm9 + vmovups -8(%rsi),%xmm1 + leaq 16(%r12,%rbx,1),%r12 + vaesenc %xmm0,%xmm2,%xmm2 + cmpl 32+20(%rsp),%ecx + movq 64+40(%rsp),%rbx + vaesenc %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r13) + vaesenc %xmm0,%xmm4,%xmm4 + prefetcht0 15(%r11) + vaesenc %xmm0,%xmm5,%xmm5 + leaq (%rbx,%r13,1),%rbx + cmovgeq %rsp,%r13 + vaesenc %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm0,%xmm7,%xmm7 + subq %r13,%rbx + vaesenc %xmm0,%xmm8,%xmm8 + vpxor 16(%r13),%xmm15,%xmm11 + movq %rbx,64+40(%rsp) + vaesenc %xmm0,%xmm9,%xmm9 + vmovups 8(%rsi),%xmm0 + leaq 16(%r13,%rbx,1),%r13 + vaesenc %xmm1,%xmm2,%xmm2 + cmpl 32+24(%rsp),%ecx + movq 64+48(%rsp),%rbx + vaesenc %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r14) + vaesenc %xmm1,%xmm4,%xmm4 + prefetcht0 15(%r12) + vaesenc %xmm1,%xmm5,%xmm5 + leaq (%r14,%rbx,1),%rbx + cmovgeq %rsp,%r14 + vaesenc %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm1,%xmm7,%xmm7 + subq %r14,%rbx + vaesenc %xmm1,%xmm8,%xmm8 + vpxor 16(%r14),%xmm15,%xmm12 + movq %rbx,64+48(%rsp) + vaesenc %xmm1,%xmm9,%xmm9 + vmovups 24(%rsi),%xmm1 + leaq 16(%r14,%rbx,1),%r14 + vaesenc %xmm0,%xmm2,%xmm2 + cmpl 32+28(%rsp),%ecx + movq 64+56(%rsp),%rbx + vaesenc %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r15) + vaesenc %xmm0,%xmm4,%xmm4 + prefetcht0 15(%r13) + vaesenc %xmm0,%xmm5,%xmm5 + leaq (%r15,%rbx,1),%rbx + cmovgeq %rsp,%r15 + vaesenc %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesenc %xmm0,%xmm7,%xmm7 + subq %r15,%rbx + vaesenc %xmm0,%xmm8,%xmm8 + vpxor 16(%r15),%xmm15,%xmm13 + movq %rbx,64+56(%rsp) + vaesenc %xmm0,%xmm9,%xmm9 + vmovups 40(%rsi),%xmm0 + leaq 16(%r15,%rbx,1),%r15 + vmovdqu 32(%rsp),%xmm14 + prefetcht0 15(%r14) + prefetcht0 15(%r15) + cmpl $11,%eax + jb L$enc8x_tail + + vaesenc %xmm1,%xmm2,%xmm2 + vaesenc %xmm1,%xmm3,%xmm3 + vaesenc %xmm1,%xmm4,%xmm4 + vaesenc %xmm1,%xmm5,%xmm5 + vaesenc %xmm1,%xmm6,%xmm6 + vaesenc %xmm1,%xmm7,%xmm7 + vaesenc %xmm1,%xmm8,%xmm8 + vaesenc %xmm1,%xmm9,%xmm9 + vmovups 176-120(%rsi),%xmm1 + + vaesenc %xmm0,%xmm2,%xmm2 + vaesenc %xmm0,%xmm3,%xmm3 + vaesenc %xmm0,%xmm4,%xmm4 + vaesenc %xmm0,%xmm5,%xmm5 + vaesenc %xmm0,%xmm6,%xmm6 + vaesenc %xmm0,%xmm7,%xmm7 + vaesenc %xmm0,%xmm8,%xmm8 + vaesenc %xmm0,%xmm9,%xmm9 + vmovups 192-120(%rsi),%xmm0 + je L$enc8x_tail + + vaesenc %xmm1,%xmm2,%xmm2 + vaesenc %xmm1,%xmm3,%xmm3 + vaesenc %xmm1,%xmm4,%xmm4 + vaesenc %xmm1,%xmm5,%xmm5 + vaesenc %xmm1,%xmm6,%xmm6 + vaesenc %xmm1,%xmm7,%xmm7 + vaesenc %xmm1,%xmm8,%xmm8 + vaesenc %xmm1,%xmm9,%xmm9 + vmovups 208-120(%rsi),%xmm1 + + vaesenc %xmm0,%xmm2,%xmm2 + vaesenc %xmm0,%xmm3,%xmm3 + vaesenc %xmm0,%xmm4,%xmm4 + vaesenc %xmm0,%xmm5,%xmm5 + vaesenc %xmm0,%xmm6,%xmm6 + vaesenc %xmm0,%xmm7,%xmm7 + vaesenc %xmm0,%xmm8,%xmm8 + vaesenc %xmm0,%xmm9,%xmm9 + vmovups 224-120(%rsi),%xmm0 + +L$enc8x_tail: + vaesenc %xmm1,%xmm2,%xmm2 + vpxor %xmm15,%xmm15,%xmm15 + vaesenc %xmm1,%xmm3,%xmm3 + vaesenc %xmm1,%xmm4,%xmm4 + vpcmpgtd %xmm15,%xmm14,%xmm15 + vaesenc %xmm1,%xmm5,%xmm5 + vaesenc %xmm1,%xmm6,%xmm6 + vpaddd %xmm14,%xmm15,%xmm15 + vmovdqu 48(%rsp),%xmm14 + vaesenc %xmm1,%xmm7,%xmm7 + movq 64(%rsp),%rbx + vaesenc %xmm1,%xmm8,%xmm8 + vaesenc %xmm1,%xmm9,%xmm9 + vmovups 16-120(%rsi),%xmm1 + + vaesenclast %xmm0,%xmm2,%xmm2 + vmovdqa %xmm15,32(%rsp) + vpxor %xmm15,%xmm15,%xmm15 + vaesenclast %xmm0,%xmm3,%xmm3 + vaesenclast %xmm0,%xmm4,%xmm4 + vpcmpgtd %xmm15,%xmm14,%xmm15 + vaesenclast %xmm0,%xmm5,%xmm5 + vaesenclast %xmm0,%xmm6,%xmm6 + vpaddd %xmm15,%xmm14,%xmm14 + vmovdqu -120(%rsi),%xmm15 + vaesenclast %xmm0,%xmm7,%xmm7 + vaesenclast %xmm0,%xmm8,%xmm8 + vmovdqa %xmm14,48(%rsp) + vaesenclast %xmm0,%xmm9,%xmm9 + vmovups 32-120(%rsi),%xmm0 + + vmovups %xmm2,-16(%r8) + subq %rbx,%r8 + vpxor 0(%rbp),%xmm2,%xmm2 + vmovups %xmm3,-16(%r9) + subq 72(%rsp),%r9 + vpxor 16(%rbp),%xmm3,%xmm3 + vmovups %xmm4,-16(%r10) + subq 80(%rsp),%r10 + vpxor 32(%rbp),%xmm4,%xmm4 + vmovups %xmm5,-16(%r11) + subq 88(%rsp),%r11 + vpxor 48(%rbp),%xmm5,%xmm5 + vmovups %xmm6,-16(%r12) + subq 96(%rsp),%r12 + vpxor %xmm10,%xmm6,%xmm6 + vmovups %xmm7,-16(%r13) + subq 104(%rsp),%r13 + vpxor %xmm11,%xmm7,%xmm7 + vmovups %xmm8,-16(%r14) + subq 112(%rsp),%r14 + vpxor %xmm12,%xmm8,%xmm8 + vmovups %xmm9,-16(%r15) + subq 120(%rsp),%r15 + vpxor %xmm13,%xmm9,%xmm9 + + decl %edx + jnz L$oop_enc8x + + movq 16(%rsp),%rax + + + + + + +L$enc8x_done: + vzeroupper + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$enc8x_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 5 +aesni_multi_cbc_decrypt_avx: + +_avx_cbc_dec_shortcut: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + + + + + + + + + subq $256,%rsp + andq $-256,%rsp + subq $192,%rsp + movq %rax,16(%rsp) + + +L$dec8x_body: + vzeroupper + vmovdqu (%rsi),%xmm15 + leaq 120(%rsi),%rsi + leaq 160(%rdi),%rdi + shrl $1,%edx + +L$dec8x_loop_grande: + + xorl %edx,%edx + movl -144(%rdi),%ecx + movq -160(%rdi),%r8 + cmpl %edx,%ecx + movq -152(%rdi),%rbx + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -136(%rdi),%xmm2 + movl %ecx,32(%rsp) + cmovleq %rsp,%r8 + subq %r8,%rbx + movq %rbx,64(%rsp) + vmovdqu %xmm2,192(%rsp) + movl -104(%rdi),%ecx + movq -120(%rdi),%r9 + cmpl %edx,%ecx + movq -112(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -96(%rdi),%xmm3 + movl %ecx,36(%rsp) + cmovleq %rsp,%r9 + subq %r9,%rbp + movq %rbp,72(%rsp) + vmovdqu %xmm3,208(%rsp) + movl -64(%rdi),%ecx + movq -80(%rdi),%r10 + cmpl %edx,%ecx + movq -72(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -56(%rdi),%xmm4 + movl %ecx,40(%rsp) + cmovleq %rsp,%r10 + subq %r10,%rbp + movq %rbp,80(%rsp) + vmovdqu %xmm4,224(%rsp) + movl -24(%rdi),%ecx + movq -40(%rdi),%r11 + cmpl %edx,%ecx + movq -32(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu -16(%rdi),%xmm5 + movl %ecx,44(%rsp) + cmovleq %rsp,%r11 + subq %r11,%rbp + movq %rbp,88(%rsp) + vmovdqu %xmm5,240(%rsp) + movl 16(%rdi),%ecx + movq 0(%rdi),%r12 + cmpl %edx,%ecx + movq 8(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 24(%rdi),%xmm6 + movl %ecx,48(%rsp) + cmovleq %rsp,%r12 + subq %r12,%rbp + movq %rbp,96(%rsp) + vmovdqu %xmm6,256(%rsp) + movl 56(%rdi),%ecx + movq 40(%rdi),%r13 + cmpl %edx,%ecx + movq 48(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 64(%rdi),%xmm7 + movl %ecx,52(%rsp) + cmovleq %rsp,%r13 + subq %r13,%rbp + movq %rbp,104(%rsp) + vmovdqu %xmm7,272(%rsp) + movl 96(%rdi),%ecx + movq 80(%rdi),%r14 + cmpl %edx,%ecx + movq 88(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 104(%rdi),%xmm8 + movl %ecx,56(%rsp) + cmovleq %rsp,%r14 + subq %r14,%rbp + movq %rbp,112(%rsp) + vmovdqu %xmm8,288(%rsp) + movl 136(%rdi),%ecx + movq 120(%rdi),%r15 + cmpl %edx,%ecx + movq 128(%rdi),%rbp + cmovgl %ecx,%edx + testl %ecx,%ecx + vmovdqu 144(%rdi),%xmm9 + movl %ecx,60(%rsp) + cmovleq %rsp,%r15 + subq %r15,%rbp + movq %rbp,120(%rsp) + vmovdqu %xmm9,304(%rsp) + testl %edx,%edx + jz L$dec8x_done + + vmovups 16-120(%rsi),%xmm1 + vmovups 32-120(%rsi),%xmm0 + movl 240-120(%rsi),%eax + leaq 192+128(%rsp),%rbp + + vmovdqu (%r8),%xmm2 + vmovdqu (%r9),%xmm3 + vmovdqu (%r10),%xmm4 + vmovdqu (%r11),%xmm5 + vmovdqu (%r12),%xmm6 + vmovdqu (%r13),%xmm7 + vmovdqu (%r14),%xmm8 + vmovdqu (%r15),%xmm9 + vmovdqu %xmm2,0(%rbp) + vpxor %xmm15,%xmm2,%xmm2 + vmovdqu %xmm3,16(%rbp) + vpxor %xmm15,%xmm3,%xmm3 + vmovdqu %xmm4,32(%rbp) + vpxor %xmm15,%xmm4,%xmm4 + vmovdqu %xmm5,48(%rbp) + vpxor %xmm15,%xmm5,%xmm5 + vmovdqu %xmm6,64(%rbp) + vpxor %xmm15,%xmm6,%xmm6 + vmovdqu %xmm7,80(%rbp) + vpxor %xmm15,%xmm7,%xmm7 + vmovdqu %xmm8,96(%rbp) + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu %xmm9,112(%rbp) + vpxor %xmm15,%xmm9,%xmm9 + xorq $0x80,%rbp + movl $1,%ecx + jmp L$oop_dec8x + +.p2align 5 +L$oop_dec8x: + vaesdec %xmm1,%xmm2,%xmm2 + cmpl 32+0(%rsp),%ecx + vaesdec %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r8) + vaesdec %xmm1,%xmm4,%xmm4 + vaesdec %xmm1,%xmm5,%xmm5 + leaq (%r8,%rbx,1),%rbx + cmovgeq %rsp,%r8 + vaesdec %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm1,%xmm7,%xmm7 + subq %r8,%rbx + vaesdec %xmm1,%xmm8,%xmm8 + vmovdqu 16(%r8),%xmm10 + movq %rbx,64+0(%rsp) + vaesdec %xmm1,%xmm9,%xmm9 + vmovups -72(%rsi),%xmm1 + leaq 16(%r8,%rbx,1),%r8 + vmovdqu %xmm10,128(%rsp) + vaesdec %xmm0,%xmm2,%xmm2 + cmpl 32+4(%rsp),%ecx + movq 64+8(%rsp),%rbx + vaesdec %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r9) + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + leaq (%r9,%rbx,1),%rbx + cmovgeq %rsp,%r9 + vaesdec %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm0,%xmm7,%xmm7 + subq %r9,%rbx + vaesdec %xmm0,%xmm8,%xmm8 + vmovdqu 16(%r9),%xmm11 + movq %rbx,64+8(%rsp) + vaesdec %xmm0,%xmm9,%xmm9 + vmovups -56(%rsi),%xmm0 + leaq 16(%r9,%rbx,1),%r9 + vmovdqu %xmm11,144(%rsp) + vaesdec %xmm1,%xmm2,%xmm2 + cmpl 32+8(%rsp),%ecx + movq 64+16(%rsp),%rbx + vaesdec %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r10) + vaesdec %xmm1,%xmm4,%xmm4 + prefetcht0 15(%r8) + vaesdec %xmm1,%xmm5,%xmm5 + leaq (%r10,%rbx,1),%rbx + cmovgeq %rsp,%r10 + vaesdec %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm1,%xmm7,%xmm7 + subq %r10,%rbx + vaesdec %xmm1,%xmm8,%xmm8 + vmovdqu 16(%r10),%xmm12 + movq %rbx,64+16(%rsp) + vaesdec %xmm1,%xmm9,%xmm9 + vmovups -40(%rsi),%xmm1 + leaq 16(%r10,%rbx,1),%r10 + vmovdqu %xmm12,160(%rsp) + vaesdec %xmm0,%xmm2,%xmm2 + cmpl 32+12(%rsp),%ecx + movq 64+24(%rsp),%rbx + vaesdec %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r11) + vaesdec %xmm0,%xmm4,%xmm4 + prefetcht0 15(%r9) + vaesdec %xmm0,%xmm5,%xmm5 + leaq (%r11,%rbx,1),%rbx + cmovgeq %rsp,%r11 + vaesdec %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm0,%xmm7,%xmm7 + subq %r11,%rbx + vaesdec %xmm0,%xmm8,%xmm8 + vmovdqu 16(%r11),%xmm13 + movq %rbx,64+24(%rsp) + vaesdec %xmm0,%xmm9,%xmm9 + vmovups -24(%rsi),%xmm0 + leaq 16(%r11,%rbx,1),%r11 + vmovdqu %xmm13,176(%rsp) + vaesdec %xmm1,%xmm2,%xmm2 + cmpl 32+16(%rsp),%ecx + movq 64+32(%rsp),%rbx + vaesdec %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r12) + vaesdec %xmm1,%xmm4,%xmm4 + prefetcht0 15(%r10) + vaesdec %xmm1,%xmm5,%xmm5 + leaq (%r12,%rbx,1),%rbx + cmovgeq %rsp,%r12 + vaesdec %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm1,%xmm7,%xmm7 + subq %r12,%rbx + vaesdec %xmm1,%xmm8,%xmm8 + vmovdqu 16(%r12),%xmm10 + movq %rbx,64+32(%rsp) + vaesdec %xmm1,%xmm9,%xmm9 + vmovups -8(%rsi),%xmm1 + leaq 16(%r12,%rbx,1),%r12 + vaesdec %xmm0,%xmm2,%xmm2 + cmpl 32+20(%rsp),%ecx + movq 64+40(%rsp),%rbx + vaesdec %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r13) + vaesdec %xmm0,%xmm4,%xmm4 + prefetcht0 15(%r11) + vaesdec %xmm0,%xmm5,%xmm5 + leaq (%rbx,%r13,1),%rbx + cmovgeq %rsp,%r13 + vaesdec %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm0,%xmm7,%xmm7 + subq %r13,%rbx + vaesdec %xmm0,%xmm8,%xmm8 + vmovdqu 16(%r13),%xmm11 + movq %rbx,64+40(%rsp) + vaesdec %xmm0,%xmm9,%xmm9 + vmovups 8(%rsi),%xmm0 + leaq 16(%r13,%rbx,1),%r13 + vaesdec %xmm1,%xmm2,%xmm2 + cmpl 32+24(%rsp),%ecx + movq 64+48(%rsp),%rbx + vaesdec %xmm1,%xmm3,%xmm3 + prefetcht0 31(%r14) + vaesdec %xmm1,%xmm4,%xmm4 + prefetcht0 15(%r12) + vaesdec %xmm1,%xmm5,%xmm5 + leaq (%r14,%rbx,1),%rbx + cmovgeq %rsp,%r14 + vaesdec %xmm1,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm1,%xmm7,%xmm7 + subq %r14,%rbx + vaesdec %xmm1,%xmm8,%xmm8 + vmovdqu 16(%r14),%xmm12 + movq %rbx,64+48(%rsp) + vaesdec %xmm1,%xmm9,%xmm9 + vmovups 24(%rsi),%xmm1 + leaq 16(%r14,%rbx,1),%r14 + vaesdec %xmm0,%xmm2,%xmm2 + cmpl 32+28(%rsp),%ecx + movq 64+56(%rsp),%rbx + vaesdec %xmm0,%xmm3,%xmm3 + prefetcht0 31(%r15) + vaesdec %xmm0,%xmm4,%xmm4 + prefetcht0 15(%r13) + vaesdec %xmm0,%xmm5,%xmm5 + leaq (%r15,%rbx,1),%rbx + cmovgeq %rsp,%r15 + vaesdec %xmm0,%xmm6,%xmm6 + cmovgq %rsp,%rbx + vaesdec %xmm0,%xmm7,%xmm7 + subq %r15,%rbx + vaesdec %xmm0,%xmm8,%xmm8 + vmovdqu 16(%r15),%xmm13 + movq %rbx,64+56(%rsp) + vaesdec %xmm0,%xmm9,%xmm9 + vmovups 40(%rsi),%xmm0 + leaq 16(%r15,%rbx,1),%r15 + vmovdqu 32(%rsp),%xmm14 + prefetcht0 15(%r14) + prefetcht0 15(%r15) + cmpl $11,%eax + jb L$dec8x_tail + + vaesdec %xmm1,%xmm2,%xmm2 + vaesdec %xmm1,%xmm3,%xmm3 + vaesdec %xmm1,%xmm4,%xmm4 + vaesdec %xmm1,%xmm5,%xmm5 + vaesdec %xmm1,%xmm6,%xmm6 + vaesdec %xmm1,%xmm7,%xmm7 + vaesdec %xmm1,%xmm8,%xmm8 + vaesdec %xmm1,%xmm9,%xmm9 + vmovups 176-120(%rsi),%xmm1 + + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vaesdec %xmm0,%xmm8,%xmm8 + vaesdec %xmm0,%xmm9,%xmm9 + vmovups 192-120(%rsi),%xmm0 + je L$dec8x_tail + + vaesdec %xmm1,%xmm2,%xmm2 + vaesdec %xmm1,%xmm3,%xmm3 + vaesdec %xmm1,%xmm4,%xmm4 + vaesdec %xmm1,%xmm5,%xmm5 + vaesdec %xmm1,%xmm6,%xmm6 + vaesdec %xmm1,%xmm7,%xmm7 + vaesdec %xmm1,%xmm8,%xmm8 + vaesdec %xmm1,%xmm9,%xmm9 + vmovups 208-120(%rsi),%xmm1 + + vaesdec %xmm0,%xmm2,%xmm2 + vaesdec %xmm0,%xmm3,%xmm3 + vaesdec %xmm0,%xmm4,%xmm4 + vaesdec %xmm0,%xmm5,%xmm5 + vaesdec %xmm0,%xmm6,%xmm6 + vaesdec %xmm0,%xmm7,%xmm7 + vaesdec %xmm0,%xmm8,%xmm8 + vaesdec %xmm0,%xmm9,%xmm9 + vmovups 224-120(%rsi),%xmm0 + +L$dec8x_tail: + vaesdec %xmm1,%xmm2,%xmm2 + vpxor %xmm15,%xmm15,%xmm15 + vaesdec %xmm1,%xmm3,%xmm3 + vaesdec %xmm1,%xmm4,%xmm4 + vpcmpgtd %xmm15,%xmm14,%xmm15 + vaesdec %xmm1,%xmm5,%xmm5 + vaesdec %xmm1,%xmm6,%xmm6 + vpaddd %xmm14,%xmm15,%xmm15 + vmovdqu 48(%rsp),%xmm14 + vaesdec %xmm1,%xmm7,%xmm7 + movq 64(%rsp),%rbx + vaesdec %xmm1,%xmm8,%xmm8 + vaesdec %xmm1,%xmm9,%xmm9 + vmovups 16-120(%rsi),%xmm1 + + vaesdeclast %xmm0,%xmm2,%xmm2 + vmovdqa %xmm15,32(%rsp) + vpxor %xmm15,%xmm15,%xmm15 + vaesdeclast %xmm0,%xmm3,%xmm3 + vpxor 0(%rbp),%xmm2,%xmm2 + vaesdeclast %xmm0,%xmm4,%xmm4 + vpxor 16(%rbp),%xmm3,%xmm3 + vpcmpgtd %xmm15,%xmm14,%xmm15 + vaesdeclast %xmm0,%xmm5,%xmm5 + vpxor 32(%rbp),%xmm4,%xmm4 + vaesdeclast %xmm0,%xmm6,%xmm6 + vpxor 48(%rbp),%xmm5,%xmm5 + vpaddd %xmm15,%xmm14,%xmm14 + vmovdqu -120(%rsi),%xmm15 + vaesdeclast %xmm0,%xmm7,%xmm7 + vpxor 64(%rbp),%xmm6,%xmm6 + vaesdeclast %xmm0,%xmm8,%xmm8 + vpxor 80(%rbp),%xmm7,%xmm7 + vmovdqa %xmm14,48(%rsp) + vaesdeclast %xmm0,%xmm9,%xmm9 + vpxor 96(%rbp),%xmm8,%xmm8 + vmovups 32-120(%rsi),%xmm0 + + vmovups %xmm2,-16(%r8) + subq %rbx,%r8 + vmovdqu 128+0(%rsp),%xmm2 + vpxor 112(%rbp),%xmm9,%xmm9 + vmovups %xmm3,-16(%r9) + subq 72(%rsp),%r9 + vmovdqu %xmm2,0(%rbp) + vpxor %xmm15,%xmm2,%xmm2 + vmovdqu 128+16(%rsp),%xmm3 + vmovups %xmm4,-16(%r10) + subq 80(%rsp),%r10 + vmovdqu %xmm3,16(%rbp) + vpxor %xmm15,%xmm3,%xmm3 + vmovdqu 128+32(%rsp),%xmm4 + vmovups %xmm5,-16(%r11) + subq 88(%rsp),%r11 + vmovdqu %xmm4,32(%rbp) + vpxor %xmm15,%xmm4,%xmm4 + vmovdqu 128+48(%rsp),%xmm5 + vmovups %xmm6,-16(%r12) + subq 96(%rsp),%r12 + vmovdqu %xmm5,48(%rbp) + vpxor %xmm15,%xmm5,%xmm5 + vmovdqu %xmm10,64(%rbp) + vpxor %xmm10,%xmm15,%xmm6 + vmovups %xmm7,-16(%r13) + subq 104(%rsp),%r13 + vmovdqu %xmm11,80(%rbp) + vpxor %xmm11,%xmm15,%xmm7 + vmovups %xmm8,-16(%r14) + subq 112(%rsp),%r14 + vmovdqu %xmm12,96(%rbp) + vpxor %xmm12,%xmm15,%xmm8 + vmovups %xmm9,-16(%r15) + subq 120(%rsp),%r15 + vmovdqu %xmm13,112(%rbp) + vpxor %xmm13,%xmm15,%xmm9 + + xorq $128,%rbp + decl %edx + jnz L$oop_dec8x + + movq 16(%rsp),%rax + + + + + + +L$dec8x_done: + vzeroupper + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$dec8x_epilogue: + .byte 0xf3,0xc3 + + diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-sha1-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-sha1-x86_64.s new file mode 100644 index 0000000..b0e1036 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-sha1-x86_64.s @@ -0,0 +1,3023 @@ +.text + + +.globl _aesni_cbc_sha1_enc + +.p2align 5 +_aesni_cbc_sha1_enc: + + + movl _OPENSSL_ia32cap_P+0(%rip),%r10d + movq _OPENSSL_ia32cap_P+4(%rip),%r11 + btq $61,%r11 + jc aesni_cbc_sha1_enc_shaext + andl $268435456,%r11d + andl $1073741824,%r10d + orl %r11d,%r10d + cmpl $1342177280,%r10d + je aesni_cbc_sha1_enc_avx + jmp aesni_cbc_sha1_enc_ssse3 + .byte 0xf3,0xc3 + + + +.p2align 5 +aesni_cbc_sha1_enc_ssse3: + + movq 8(%rsp),%r10 + + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + leaq -104(%rsp),%rsp + + + + movq %rdi,%r12 + movq %rsi,%r13 + movq %rdx,%r14 + leaq 112(%rcx),%r15 + movdqu (%r8),%xmm2 + movq %r8,88(%rsp) + shlq $6,%r14 + subq %r12,%r13 + movl 240-112(%r15),%r8d + addq %r10,%r14 + + leaq K_XX_XX(%rip),%r11 + movl 0(%r9),%eax + movl 4(%r9),%ebx + movl 8(%r9),%ecx + movl 12(%r9),%edx + movl %ebx,%esi + movl 16(%r9),%ebp + movl %ecx,%edi + xorl %edx,%edi + andl %edi,%esi + + movdqa 64(%r11),%xmm3 + movdqa 0(%r11),%xmm13 + movdqu 0(%r10),%xmm4 + movdqu 16(%r10),%xmm5 + movdqu 32(%r10),%xmm6 + movdqu 48(%r10),%xmm7 +.byte 102,15,56,0,227 +.byte 102,15,56,0,235 +.byte 102,15,56,0,243 + addq $64,%r10 + paddd %xmm13,%xmm4 +.byte 102,15,56,0,251 + paddd %xmm13,%xmm5 + paddd %xmm13,%xmm6 + movdqa %xmm4,0(%rsp) + psubd %xmm13,%xmm4 + movdqa %xmm5,16(%rsp) + psubd %xmm13,%xmm5 + movdqa %xmm6,32(%rsp) + psubd %xmm13,%xmm6 + movups -112(%r15),%xmm15 + movups 16-112(%r15),%xmm0 + jmp L$oop_ssse3 +.p2align 5 +L$oop_ssse3: + rorl $2,%ebx + movups 0(%r12),%xmm14 + xorps %xmm15,%xmm14 + xorps %xmm14,%xmm2 + movups -80(%r15),%xmm1 +.byte 102,15,56,220,208 + pshufd $238,%xmm4,%xmm8 + xorl %edx,%esi + movdqa %xmm7,%xmm12 + paddd %xmm7,%xmm13 + movl %eax,%edi + addl 0(%rsp),%ebp + punpcklqdq %xmm5,%xmm8 + xorl %ecx,%ebx + roll $5,%eax + addl %esi,%ebp + psrldq $4,%xmm12 + andl %ebx,%edi + xorl %ecx,%ebx + pxor %xmm4,%xmm8 + addl %eax,%ebp + rorl $7,%eax + pxor %xmm6,%xmm12 + xorl %ecx,%edi + movl %ebp,%esi + addl 4(%rsp),%edx + pxor %xmm12,%xmm8 + xorl %ebx,%eax + roll $5,%ebp + movdqa %xmm13,48(%rsp) + addl %edi,%edx + movups -64(%r15),%xmm0 +.byte 102,15,56,220,209 + andl %eax,%esi + movdqa %xmm8,%xmm3 + xorl %ebx,%eax + addl %ebp,%edx + rorl $7,%ebp + movdqa %xmm8,%xmm12 + xorl %ebx,%esi + pslldq $12,%xmm3 + paddd %xmm8,%xmm8 + movl %edx,%edi + addl 8(%rsp),%ecx + psrld $31,%xmm12 + xorl %eax,%ebp + roll $5,%edx + addl %esi,%ecx + movdqa %xmm3,%xmm13 + andl %ebp,%edi + xorl %eax,%ebp + psrld $30,%xmm3 + addl %edx,%ecx + rorl $7,%edx + por %xmm12,%xmm8 + xorl %eax,%edi + movl %ecx,%esi + addl 12(%rsp),%ebx + movups -48(%r15),%xmm1 +.byte 102,15,56,220,208 + pslld $2,%xmm13 + pxor %xmm3,%xmm8 + xorl %ebp,%edx + movdqa 0(%r11),%xmm3 + roll $5,%ecx + addl %edi,%ebx + andl %edx,%esi + pxor %xmm13,%xmm8 + xorl %ebp,%edx + addl %ecx,%ebx + rorl $7,%ecx + pshufd $238,%xmm5,%xmm9 + xorl %ebp,%esi + movdqa %xmm8,%xmm13 + paddd %xmm8,%xmm3 + movl %ebx,%edi + addl 16(%rsp),%eax + punpcklqdq %xmm6,%xmm9 + xorl %edx,%ecx + roll $5,%ebx + addl %esi,%eax + psrldq $4,%xmm13 + andl %ecx,%edi + xorl %edx,%ecx + pxor %xmm5,%xmm9 + addl %ebx,%eax + rorl $7,%ebx + movups -32(%r15),%xmm0 +.byte 102,15,56,220,209 + pxor %xmm7,%xmm13 + xorl %edx,%edi + movl %eax,%esi + addl 20(%rsp),%ebp + pxor %xmm13,%xmm9 + xorl %ecx,%ebx + roll $5,%eax + movdqa %xmm3,0(%rsp) + addl %edi,%ebp + andl %ebx,%esi + movdqa %xmm9,%xmm12 + xorl %ecx,%ebx + addl %eax,%ebp + rorl $7,%eax + movdqa %xmm9,%xmm13 + xorl %ecx,%esi + pslldq $12,%xmm12 + paddd %xmm9,%xmm9 + movl %ebp,%edi + addl 24(%rsp),%edx + psrld $31,%xmm13 + xorl %ebx,%eax + roll $5,%ebp + addl %esi,%edx + movups -16(%r15),%xmm1 +.byte 102,15,56,220,208 + movdqa %xmm12,%xmm3 + andl %eax,%edi + xorl %ebx,%eax + psrld $30,%xmm12 + addl %ebp,%edx + rorl $7,%ebp + por %xmm13,%xmm9 + xorl %ebx,%edi + movl %edx,%esi + addl 28(%rsp),%ecx + pslld $2,%xmm3 + pxor %xmm12,%xmm9 + xorl %eax,%ebp + movdqa 16(%r11),%xmm12 + roll $5,%edx + addl %edi,%ecx + andl %ebp,%esi + pxor %xmm3,%xmm9 + xorl %eax,%ebp + addl %edx,%ecx + rorl $7,%edx + pshufd $238,%xmm6,%xmm10 + xorl %eax,%esi + movdqa %xmm9,%xmm3 + paddd %xmm9,%xmm12 + movl %ecx,%edi + addl 32(%rsp),%ebx + movups 0(%r15),%xmm0 +.byte 102,15,56,220,209 + punpcklqdq %xmm7,%xmm10 + xorl %ebp,%edx + roll $5,%ecx + addl %esi,%ebx + psrldq $4,%xmm3 + andl %edx,%edi + xorl %ebp,%edx + pxor %xmm6,%xmm10 + addl %ecx,%ebx + rorl $7,%ecx + pxor %xmm8,%xmm3 + xorl %ebp,%edi + movl %ebx,%esi + addl 36(%rsp),%eax + pxor %xmm3,%xmm10 + xorl %edx,%ecx + roll $5,%ebx + movdqa %xmm12,16(%rsp) + addl %edi,%eax + andl %ecx,%esi + movdqa %xmm10,%xmm13 + xorl %edx,%ecx + addl %ebx,%eax + rorl $7,%ebx + movups 16(%r15),%xmm1 +.byte 102,15,56,220,208 + movdqa %xmm10,%xmm3 + xorl %edx,%esi + pslldq $12,%xmm13 + paddd %xmm10,%xmm10 + movl %eax,%edi + addl 40(%rsp),%ebp + psrld $31,%xmm3 + xorl %ecx,%ebx + roll $5,%eax + addl %esi,%ebp + movdqa %xmm13,%xmm12 + andl %ebx,%edi + xorl %ecx,%ebx + psrld $30,%xmm13 + addl %eax,%ebp + rorl $7,%eax + por %xmm3,%xmm10 + xorl %ecx,%edi + movl %ebp,%esi + addl 44(%rsp),%edx + pslld $2,%xmm12 + pxor %xmm13,%xmm10 + xorl %ebx,%eax + movdqa 16(%r11),%xmm13 + roll $5,%ebp + addl %edi,%edx + movups 32(%r15),%xmm0 +.byte 102,15,56,220,209 + andl %eax,%esi + pxor %xmm12,%xmm10 + xorl %ebx,%eax + addl %ebp,%edx + rorl $7,%ebp + pshufd $238,%xmm7,%xmm11 + xorl %ebx,%esi + movdqa %xmm10,%xmm12 + paddd %xmm10,%xmm13 + movl %edx,%edi + addl 48(%rsp),%ecx + punpcklqdq %xmm8,%xmm11 + xorl %eax,%ebp + roll $5,%edx + addl %esi,%ecx + psrldq $4,%xmm12 + andl %ebp,%edi + xorl %eax,%ebp + pxor %xmm7,%xmm11 + addl %edx,%ecx + rorl $7,%edx + pxor %xmm9,%xmm12 + xorl %eax,%edi + movl %ecx,%esi + addl 52(%rsp),%ebx + movups 48(%r15),%xmm1 +.byte 102,15,56,220,208 + pxor %xmm12,%xmm11 + xorl %ebp,%edx + roll $5,%ecx + movdqa %xmm13,32(%rsp) + addl %edi,%ebx + andl %edx,%esi + movdqa %xmm11,%xmm3 + xorl %ebp,%edx + addl %ecx,%ebx + rorl $7,%ecx + movdqa %xmm11,%xmm12 + xorl %ebp,%esi + pslldq $12,%xmm3 + paddd %xmm11,%xmm11 + movl %ebx,%edi + addl 56(%rsp),%eax + psrld $31,%xmm12 + xorl %edx,%ecx + roll $5,%ebx + addl %esi,%eax + movdqa %xmm3,%xmm13 + andl %ecx,%edi + xorl %edx,%ecx + psrld $30,%xmm3 + addl %ebx,%eax + rorl $7,%ebx + cmpl $11,%r8d + jb L$aesenclast1 + movups 64(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 80(%r15),%xmm1 +.byte 102,15,56,220,208 + je L$aesenclast1 + movups 96(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 112(%r15),%xmm1 +.byte 102,15,56,220,208 +L$aesenclast1: +.byte 102,15,56,221,209 + movups 16-112(%r15),%xmm0 + por %xmm12,%xmm11 + xorl %edx,%edi + movl %eax,%esi + addl 60(%rsp),%ebp + pslld $2,%xmm13 + pxor %xmm3,%xmm11 + xorl %ecx,%ebx + movdqa 16(%r11),%xmm3 + roll $5,%eax + addl %edi,%ebp + andl %ebx,%esi + pxor %xmm13,%xmm11 + pshufd $238,%xmm10,%xmm13 + xorl %ecx,%ebx + addl %eax,%ebp + rorl $7,%eax + pxor %xmm8,%xmm4 + xorl %ecx,%esi + movl %ebp,%edi + addl 0(%rsp),%edx + punpcklqdq %xmm11,%xmm13 + xorl %ebx,%eax + roll $5,%ebp + pxor %xmm5,%xmm4 + addl %esi,%edx + movups 16(%r12),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm2,0(%r12,%r13,1) + xorps %xmm14,%xmm2 + movups -80(%r15),%xmm1 +.byte 102,15,56,220,208 + andl %eax,%edi + movdqa %xmm3,%xmm12 + xorl %ebx,%eax + paddd %xmm11,%xmm3 + addl %ebp,%edx + pxor %xmm13,%xmm4 + rorl $7,%ebp + xorl %ebx,%edi + movl %edx,%esi + addl 4(%rsp),%ecx + movdqa %xmm4,%xmm13 + xorl %eax,%ebp + roll $5,%edx + movdqa %xmm3,48(%rsp) + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + pslld $2,%xmm4 + addl %edx,%ecx + rorl $7,%edx + psrld $30,%xmm13 + xorl %eax,%esi + movl %ecx,%edi + addl 8(%rsp),%ebx + movups -64(%r15),%xmm0 +.byte 102,15,56,220,209 + por %xmm13,%xmm4 + xorl %ebp,%edx + roll $5,%ecx + pshufd $238,%xmm11,%xmm3 + addl %esi,%ebx + andl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 12(%rsp),%eax + xorl %ebp,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + rorl $7,%ecx + addl %ebx,%eax + pxor %xmm9,%xmm5 + addl 16(%rsp),%ebp + movups -48(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%esi + punpcklqdq %xmm4,%xmm3 + movl %eax,%edi + roll $5,%eax + pxor %xmm6,%xmm5 + addl %esi,%ebp + xorl %ecx,%edi + movdqa %xmm12,%xmm13 + rorl $7,%ebx + paddd %xmm4,%xmm12 + addl %eax,%ebp + pxor %xmm3,%xmm5 + addl 20(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + movdqa %xmm5,%xmm3 + addl %edi,%edx + xorl %ebx,%esi + movdqa %xmm12,0(%rsp) + rorl $7,%eax + addl %ebp,%edx + addl 24(%rsp),%ecx + pslld $2,%xmm5 + xorl %eax,%esi + movl %edx,%edi + psrld $30,%xmm3 + roll $5,%edx + addl %esi,%ecx + movups -32(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%edi + rorl $7,%ebp + por %xmm3,%xmm5 + addl %edx,%ecx + addl 28(%rsp),%ebx + pshufd $238,%xmm4,%xmm12 + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + addl %ecx,%ebx + pxor %xmm10,%xmm6 + addl 32(%rsp),%eax + xorl %edx,%esi + punpcklqdq %xmm5,%xmm12 + movl %ebx,%edi + roll $5,%ebx + pxor %xmm7,%xmm6 + addl %esi,%eax + xorl %edx,%edi + movdqa 32(%r11),%xmm3 + rorl $7,%ecx + paddd %xmm5,%xmm13 + addl %ebx,%eax + pxor %xmm12,%xmm6 + addl 36(%rsp),%ebp + movups -16(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + movdqa %xmm6,%xmm12 + addl %edi,%ebp + xorl %ecx,%esi + movdqa %xmm13,16(%rsp) + rorl $7,%ebx + addl %eax,%ebp + addl 40(%rsp),%edx + pslld $2,%xmm6 + xorl %ebx,%esi + movl %ebp,%edi + psrld $30,%xmm12 + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + por %xmm12,%xmm6 + addl %ebp,%edx + addl 44(%rsp),%ecx + pshufd $238,%xmm5,%xmm13 + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + addl %edi,%ecx + movups 0(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%esi + rorl $7,%ebp + addl %edx,%ecx + pxor %xmm11,%xmm7 + addl 48(%rsp),%ebx + xorl %ebp,%esi + punpcklqdq %xmm6,%xmm13 + movl %ecx,%edi + roll $5,%ecx + pxor %xmm8,%xmm7 + addl %esi,%ebx + xorl %ebp,%edi + movdqa %xmm3,%xmm12 + rorl $7,%edx + paddd %xmm6,%xmm3 + addl %ecx,%ebx + pxor %xmm13,%xmm7 + addl 52(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + movdqa %xmm7,%xmm13 + addl %edi,%eax + xorl %edx,%esi + movdqa %xmm3,32(%rsp) + rorl $7,%ecx + addl %ebx,%eax + addl 56(%rsp),%ebp + movups 16(%r15),%xmm1 +.byte 102,15,56,220,208 + pslld $2,%xmm7 + xorl %ecx,%esi + movl %eax,%edi + psrld $30,%xmm13 + roll $5,%eax + addl %esi,%ebp + xorl %ecx,%edi + rorl $7,%ebx + por %xmm13,%xmm7 + addl %eax,%ebp + addl 60(%rsp),%edx + pshufd $238,%xmm6,%xmm3 + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + addl %edi,%edx + xorl %ebx,%esi + rorl $7,%eax + addl %ebp,%edx + pxor %xmm4,%xmm8 + addl 0(%rsp),%ecx + xorl %eax,%esi + punpcklqdq %xmm7,%xmm3 + movl %edx,%edi + roll $5,%edx + pxor %xmm9,%xmm8 + addl %esi,%ecx + movups 32(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%edi + movdqa %xmm12,%xmm13 + rorl $7,%ebp + paddd %xmm7,%xmm12 + addl %edx,%ecx + pxor %xmm3,%xmm8 + addl 4(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + movdqa %xmm8,%xmm3 + addl %edi,%ebx + xorl %ebp,%esi + movdqa %xmm12,48(%rsp) + rorl $7,%edx + addl %ecx,%ebx + addl 8(%rsp),%eax + pslld $2,%xmm8 + xorl %edx,%esi + movl %ebx,%edi + psrld $30,%xmm3 + roll $5,%ebx + addl %esi,%eax + xorl %edx,%edi + rorl $7,%ecx + por %xmm3,%xmm8 + addl %ebx,%eax + addl 12(%rsp),%ebp + movups 48(%r15),%xmm1 +.byte 102,15,56,220,208 + pshufd $238,%xmm7,%xmm12 + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + pxor %xmm5,%xmm9 + addl 16(%rsp),%edx + xorl %ebx,%esi + punpcklqdq %xmm8,%xmm12 + movl %ebp,%edi + roll $5,%ebp + pxor %xmm10,%xmm9 + addl %esi,%edx + xorl %ebx,%edi + movdqa %xmm13,%xmm3 + rorl $7,%eax + paddd %xmm8,%xmm13 + addl %ebp,%edx + pxor %xmm12,%xmm9 + addl 20(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + movdqa %xmm9,%xmm12 + addl %edi,%ecx + cmpl $11,%r8d + jb L$aesenclast2 + movups 64(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 80(%r15),%xmm1 +.byte 102,15,56,220,208 + je L$aesenclast2 + movups 96(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 112(%r15),%xmm1 +.byte 102,15,56,220,208 +L$aesenclast2: +.byte 102,15,56,221,209 + movups 16-112(%r15),%xmm0 + xorl %eax,%esi + movdqa %xmm13,0(%rsp) + rorl $7,%ebp + addl %edx,%ecx + addl 24(%rsp),%ebx + pslld $2,%xmm9 + xorl %ebp,%esi + movl %ecx,%edi + psrld $30,%xmm12 + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + por %xmm12,%xmm9 + addl %ecx,%ebx + addl 28(%rsp),%eax + pshufd $238,%xmm8,%xmm13 + rorl $7,%ecx + movl %ebx,%esi + xorl %edx,%edi + roll $5,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + pxor %xmm6,%xmm10 + addl 32(%rsp),%ebp + movups 32(%r12),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm2,16(%r13,%r12,1) + xorps %xmm14,%xmm2 + movups -80(%r15),%xmm1 +.byte 102,15,56,220,208 + andl %ecx,%esi + xorl %edx,%ecx + rorl $7,%ebx + punpcklqdq %xmm9,%xmm13 + movl %eax,%edi + xorl %ecx,%esi + pxor %xmm11,%xmm10 + roll $5,%eax + addl %esi,%ebp + movdqa %xmm3,%xmm12 + xorl %ebx,%edi + paddd %xmm9,%xmm3 + xorl %ecx,%ebx + pxor %xmm13,%xmm10 + addl %eax,%ebp + addl 36(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + rorl $7,%eax + movdqa %xmm10,%xmm13 + movl %ebp,%esi + xorl %ebx,%edi + movdqa %xmm3,16(%rsp) + roll $5,%ebp + addl %edi,%edx + movups -64(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%esi + pslld $2,%xmm10 + xorl %ebx,%eax + addl %ebp,%edx + psrld $30,%xmm13 + addl 40(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + por %xmm13,%xmm10 + rorl $7,%ebp + movl %edx,%edi + xorl %eax,%esi + roll $5,%edx + pshufd $238,%xmm9,%xmm3 + addl %esi,%ecx + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 44(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + rorl $7,%edx + movups -48(%r15),%xmm1 +.byte 102,15,56,220,208 + movl %ecx,%esi + xorl %ebp,%edi + roll $5,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + pxor %xmm7,%xmm11 + addl 48(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + rorl $7,%ecx + punpcklqdq %xmm10,%xmm3 + movl %ebx,%edi + xorl %edx,%esi + pxor %xmm4,%xmm11 + roll $5,%ebx + addl %esi,%eax + movdqa 48(%r11),%xmm13 + xorl %ecx,%edi + paddd %xmm10,%xmm12 + xorl %edx,%ecx + pxor %xmm3,%xmm11 + addl %ebx,%eax + addl 52(%rsp),%ebp + movups -32(%r15),%xmm0 +.byte 102,15,56,220,209 + andl %ecx,%edi + xorl %edx,%ecx + rorl $7,%ebx + movdqa %xmm11,%xmm3 + movl %eax,%esi + xorl %ecx,%edi + movdqa %xmm12,32(%rsp) + roll $5,%eax + addl %edi,%ebp + xorl %ebx,%esi + pslld $2,%xmm11 + xorl %ecx,%ebx + addl %eax,%ebp + psrld $30,%xmm3 + addl 56(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + por %xmm3,%xmm11 + rorl $7,%eax + movl %ebp,%edi + xorl %ebx,%esi + roll $5,%ebp + pshufd $238,%xmm10,%xmm12 + addl %esi,%edx + movups -16(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 60(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + rorl $7,%ebp + movl %edx,%esi + xorl %eax,%edi + roll $5,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + pxor %xmm8,%xmm4 + addl 0(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + rorl $7,%edx + movups 0(%r15),%xmm0 +.byte 102,15,56,220,209 + punpcklqdq %xmm11,%xmm12 + movl %ecx,%edi + xorl %ebp,%esi + pxor %xmm5,%xmm4 + roll $5,%ecx + addl %esi,%ebx + movdqa %xmm13,%xmm3 + xorl %edx,%edi + paddd %xmm11,%xmm13 + xorl %ebp,%edx + pxor %xmm12,%xmm4 + addl %ecx,%ebx + addl 4(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + rorl $7,%ecx + movdqa %xmm4,%xmm12 + movl %ebx,%esi + xorl %edx,%edi + movdqa %xmm13,48(%rsp) + roll $5,%ebx + addl %edi,%eax + xorl %ecx,%esi + pslld $2,%xmm4 + xorl %edx,%ecx + addl %ebx,%eax + psrld $30,%xmm12 + addl 8(%rsp),%ebp + movups 16(%r15),%xmm1 +.byte 102,15,56,220,208 + andl %ecx,%esi + xorl %edx,%ecx + por %xmm12,%xmm4 + rorl $7,%ebx + movl %eax,%edi + xorl %ecx,%esi + roll $5,%eax + pshufd $238,%xmm11,%xmm13 + addl %esi,%ebp + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 12(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + rorl $7,%eax + movl %ebp,%esi + xorl %ebx,%edi + roll $5,%ebp + addl %edi,%edx + movups 32(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + pxor %xmm9,%xmm5 + addl 16(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + rorl $7,%ebp + punpcklqdq %xmm4,%xmm13 + movl %edx,%edi + xorl %eax,%esi + pxor %xmm6,%xmm5 + roll $5,%edx + addl %esi,%ecx + movdqa %xmm3,%xmm12 + xorl %ebp,%edi + paddd %xmm4,%xmm3 + xorl %eax,%ebp + pxor %xmm13,%xmm5 + addl %edx,%ecx + addl 20(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + rorl $7,%edx + movups 48(%r15),%xmm1 +.byte 102,15,56,220,208 + movdqa %xmm5,%xmm13 + movl %ecx,%esi + xorl %ebp,%edi + movdqa %xmm3,0(%rsp) + roll $5,%ecx + addl %edi,%ebx + xorl %edx,%esi + pslld $2,%xmm5 + xorl %ebp,%edx + addl %ecx,%ebx + psrld $30,%xmm13 + addl 24(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + por %xmm13,%xmm5 + rorl $7,%ecx + movl %ebx,%edi + xorl %edx,%esi + roll $5,%ebx + pshufd $238,%xmm4,%xmm3 + addl %esi,%eax + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 28(%rsp),%ebp + cmpl $11,%r8d + jb L$aesenclast3 + movups 64(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 80(%r15),%xmm1 +.byte 102,15,56,220,208 + je L$aesenclast3 + movups 96(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 112(%r15),%xmm1 +.byte 102,15,56,220,208 +L$aesenclast3: +.byte 102,15,56,221,209 + movups 16-112(%r15),%xmm0 + andl %ecx,%edi + xorl %edx,%ecx + rorl $7,%ebx + movl %eax,%esi + xorl %ecx,%edi + roll $5,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + pxor %xmm10,%xmm6 + addl 32(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + rorl $7,%eax + punpcklqdq %xmm5,%xmm3 + movl %ebp,%edi + xorl %ebx,%esi + pxor %xmm7,%xmm6 + roll $5,%ebp + addl %esi,%edx + movups 48(%r12),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm2,32(%r13,%r12,1) + xorps %xmm14,%xmm2 + movups -80(%r15),%xmm1 +.byte 102,15,56,220,208 + movdqa %xmm12,%xmm13 + xorl %eax,%edi + paddd %xmm5,%xmm12 + xorl %ebx,%eax + pxor %xmm3,%xmm6 + addl %ebp,%edx + addl 36(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + rorl $7,%ebp + movdqa %xmm6,%xmm3 + movl %edx,%esi + xorl %eax,%edi + movdqa %xmm12,16(%rsp) + roll $5,%edx + addl %edi,%ecx + xorl %ebp,%esi + pslld $2,%xmm6 + xorl %eax,%ebp + addl %edx,%ecx + psrld $30,%xmm3 + addl 40(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + por %xmm3,%xmm6 + rorl $7,%edx + movups -64(%r15),%xmm0 +.byte 102,15,56,220,209 + movl %ecx,%edi + xorl %ebp,%esi + roll $5,%ecx + pshufd $238,%xmm5,%xmm12 + addl %esi,%ebx + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 44(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + rorl $7,%ecx + movl %ebx,%esi + xorl %edx,%edi + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + addl %ebx,%eax + pxor %xmm11,%xmm7 + addl 48(%rsp),%ebp + movups -48(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%esi + punpcklqdq %xmm6,%xmm12 + movl %eax,%edi + roll $5,%eax + pxor %xmm8,%xmm7 + addl %esi,%ebp + xorl %ecx,%edi + movdqa %xmm13,%xmm3 + rorl $7,%ebx + paddd %xmm6,%xmm13 + addl %eax,%ebp + pxor %xmm12,%xmm7 + addl 52(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + movdqa %xmm7,%xmm12 + addl %edi,%edx + xorl %ebx,%esi + movdqa %xmm13,32(%rsp) + rorl $7,%eax + addl %ebp,%edx + addl 56(%rsp),%ecx + pslld $2,%xmm7 + xorl %eax,%esi + movl %edx,%edi + psrld $30,%xmm12 + roll $5,%edx + addl %esi,%ecx + movups -32(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%edi + rorl $7,%ebp + por %xmm12,%xmm7 + addl %edx,%ecx + addl 60(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + addl %ecx,%ebx + addl 0(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + roll $5,%ebx + paddd %xmm7,%xmm3 + addl %esi,%eax + xorl %edx,%edi + movdqa %xmm3,48(%rsp) + rorl $7,%ecx + addl %ebx,%eax + addl 4(%rsp),%ebp + movups -16(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + addl 8(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + addl %ebp,%edx + addl 12(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + addl %edi,%ecx + movups 0(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%esi + rorl $7,%ebp + addl %edx,%ecx + cmpq %r14,%r10 + je L$done_ssse3 + movdqa 64(%r11),%xmm3 + movdqa 0(%r11),%xmm13 + movdqu 0(%r10),%xmm4 + movdqu 16(%r10),%xmm5 + movdqu 32(%r10),%xmm6 + movdqu 48(%r10),%xmm7 +.byte 102,15,56,0,227 + addq $64,%r10 + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi +.byte 102,15,56,0,235 + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + paddd %xmm13,%xmm4 + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + movdqa %xmm4,0(%rsp) + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + rorl $7,%ecx + psubd %xmm13,%xmm4 + addl %ebx,%eax + addl 24(%rsp),%ebp + movups 16(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%esi + movl %eax,%edi + roll $5,%eax + addl %esi,%ebp + xorl %ecx,%edi + rorl $7,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + addl %edi,%edx + xorl %ebx,%esi + rorl $7,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi +.byte 102,15,56,0,243 + roll $5,%edx + addl %esi,%ecx + movups 32(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%edi + rorl $7,%ebp + paddd %xmm13,%xmm5 + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + movdqa %xmm5,16(%rsp) + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + psubd %xmm13,%xmm5 + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + roll $5,%ebx + addl %esi,%eax + xorl %edx,%edi + rorl $7,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + movups 48(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi +.byte 102,15,56,0,251 + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + paddd %xmm13,%xmm6 + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + movdqa %xmm6,32(%rsp) + roll $5,%edx + addl %edi,%ecx + cmpl $11,%r8d + jb L$aesenclast4 + movups 64(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 80(%r15),%xmm1 +.byte 102,15,56,220,208 + je L$aesenclast4 + movups 96(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 112(%r15),%xmm1 +.byte 102,15,56,220,208 +L$aesenclast4: +.byte 102,15,56,221,209 + movups 16-112(%r15),%xmm0 + xorl %eax,%esi + rorl $7,%ebp + psubd %xmm13,%xmm6 + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + rorl $7,%ecx + addl %ebx,%eax + movups %xmm2,48(%r13,%r12,1) + leaq 64(%r12),%r12 + + addl 0(%r9),%eax + addl 4(%r9),%esi + addl 8(%r9),%ecx + addl 12(%r9),%edx + movl %eax,0(%r9) + addl 16(%r9),%ebp + movl %esi,4(%r9) + movl %esi,%ebx + movl %ecx,8(%r9) + movl %ecx,%edi + movl %edx,12(%r9) + xorl %edx,%edi + movl %ebp,16(%r9) + andl %edi,%esi + jmp L$oop_ssse3 + +L$done_ssse3: + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + rorl $7,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + movups 16(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%esi + movl %eax,%edi + roll $5,%eax + addl %esi,%ebp + xorl %ecx,%edi + rorl $7,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + addl %edi,%edx + xorl %ebx,%esi + rorl $7,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + roll $5,%edx + addl %esi,%ecx + movups 32(%r15),%xmm0 +.byte 102,15,56,220,209 + xorl %eax,%edi + rorl $7,%ebp + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + roll $5,%ebx + addl %esi,%eax + xorl %edx,%edi + rorl $7,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + movups 48(%r15),%xmm1 +.byte 102,15,56,220,208 + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + addl %edi,%ecx + cmpl $11,%r8d + jb L$aesenclast5 + movups 64(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 80(%r15),%xmm1 +.byte 102,15,56,220,208 + je L$aesenclast5 + movups 96(%r15),%xmm0 +.byte 102,15,56,220,209 + movups 112(%r15),%xmm1 +.byte 102,15,56,220,208 +L$aesenclast5: +.byte 102,15,56,221,209 + movups 16-112(%r15),%xmm0 + xorl %eax,%esi + rorl $7,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + rorl $7,%ecx + addl %ebx,%eax + movups %xmm2,48(%r13,%r12,1) + movq 88(%rsp),%r8 + + addl 0(%r9),%eax + addl 4(%r9),%esi + addl 8(%r9),%ecx + movl %eax,0(%r9) + addl 12(%r9),%edx + movl %esi,4(%r9) + addl 16(%r9),%ebp + movl %ecx,8(%r9) + movl %edx,12(%r9) + movl %ebp,16(%r9) + movups %xmm2,(%r8) + leaq 104(%rsp),%rsi + + movq 0(%rsi),%r15 + + movq 8(%rsi),%r14 + + movq 16(%rsi),%r13 + + movq 24(%rsi),%r12 + + movq 32(%rsi),%rbp + + movq 40(%rsi),%rbx + + leaq 48(%rsi),%rsp + +L$epilogue_ssse3: + .byte 0xf3,0xc3 + + + +.p2align 5 +aesni_cbc_sha1_enc_avx: + + movq 8(%rsp),%r10 + + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + leaq -104(%rsp),%rsp + + + + vzeroall + movq %rdi,%r12 + movq %rsi,%r13 + movq %rdx,%r14 + leaq 112(%rcx),%r15 + vmovdqu (%r8),%xmm12 + movq %r8,88(%rsp) + shlq $6,%r14 + subq %r12,%r13 + movl 240-112(%r15),%r8d + addq %r10,%r14 + + leaq K_XX_XX(%rip),%r11 + movl 0(%r9),%eax + movl 4(%r9),%ebx + movl 8(%r9),%ecx + movl 12(%r9),%edx + movl %ebx,%esi + movl 16(%r9),%ebp + movl %ecx,%edi + xorl %edx,%edi + andl %edi,%esi + + vmovdqa 64(%r11),%xmm6 + vmovdqa 0(%r11),%xmm10 + vmovdqu 0(%r10),%xmm0 + vmovdqu 16(%r10),%xmm1 + vmovdqu 32(%r10),%xmm2 + vmovdqu 48(%r10),%xmm3 + vpshufb %xmm6,%xmm0,%xmm0 + addq $64,%r10 + vpshufb %xmm6,%xmm1,%xmm1 + vpshufb %xmm6,%xmm2,%xmm2 + vpshufb %xmm6,%xmm3,%xmm3 + vpaddd %xmm10,%xmm0,%xmm4 + vpaddd %xmm10,%xmm1,%xmm5 + vpaddd %xmm10,%xmm2,%xmm6 + vmovdqa %xmm4,0(%rsp) + vmovdqa %xmm5,16(%rsp) + vmovdqa %xmm6,32(%rsp) + vmovups -112(%r15),%xmm15 + vmovups 16-112(%r15),%xmm14 + jmp L$oop_avx +.p2align 5 +L$oop_avx: + shrdl $2,%ebx,%ebx + vmovdqu 0(%r12),%xmm13 + vpxor %xmm15,%xmm13,%xmm13 + vpxor %xmm13,%xmm12,%xmm12 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -80(%r15),%xmm15 + xorl %edx,%esi + vpalignr $8,%xmm0,%xmm1,%xmm4 + movl %eax,%edi + addl 0(%rsp),%ebp + vpaddd %xmm3,%xmm10,%xmm9 + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrldq $4,%xmm3,%xmm8 + addl %esi,%ebp + andl %ebx,%edi + vpxor %xmm0,%xmm4,%xmm4 + xorl %ecx,%ebx + addl %eax,%ebp + vpxor %xmm2,%xmm8,%xmm8 + shrdl $7,%eax,%eax + xorl %ecx,%edi + movl %ebp,%esi + addl 4(%rsp),%edx + vpxor %xmm8,%xmm4,%xmm4 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vmovdqa %xmm9,48(%rsp) + addl %edi,%edx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -64(%r15),%xmm14 + andl %eax,%esi + vpsrld $31,%xmm4,%xmm8 + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%esi + vpslldq $12,%xmm4,%xmm9 + vpaddd %xmm4,%xmm4,%xmm4 + movl %edx,%edi + addl 8(%rsp),%ecx + xorl %eax,%ebp + shldl $5,%edx,%edx + vpor %xmm8,%xmm4,%xmm4 + vpsrld $30,%xmm9,%xmm8 + addl %esi,%ecx + andl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + vpslld $2,%xmm9,%xmm9 + vpxor %xmm8,%xmm4,%xmm4 + shrdl $7,%edx,%edx + xorl %eax,%edi + movl %ecx,%esi + addl 12(%rsp),%ebx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -48(%r15),%xmm15 + vpxor %xmm9,%xmm4,%xmm4 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + addl %edi,%ebx + andl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %ebp,%esi + vpalignr $8,%xmm1,%xmm2,%xmm5 + movl %ebx,%edi + addl 16(%rsp),%eax + vpaddd %xmm4,%xmm10,%xmm9 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrldq $4,%xmm4,%xmm8 + addl %esi,%eax + andl %ecx,%edi + vpxor %xmm1,%xmm5,%xmm5 + xorl %edx,%ecx + addl %ebx,%eax + vpxor %xmm3,%xmm8,%xmm8 + shrdl $7,%ebx,%ebx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -32(%r15),%xmm14 + xorl %edx,%edi + movl %eax,%esi + addl 20(%rsp),%ebp + vpxor %xmm8,%xmm5,%xmm5 + xorl %ecx,%ebx + shldl $5,%eax,%eax + vmovdqa %xmm9,0(%rsp) + addl %edi,%ebp + andl %ebx,%esi + vpsrld $31,%xmm5,%xmm8 + xorl %ecx,%ebx + addl %eax,%ebp + shrdl $7,%eax,%eax + xorl %ecx,%esi + vpslldq $12,%xmm5,%xmm9 + vpaddd %xmm5,%xmm5,%xmm5 + movl %ebp,%edi + addl 24(%rsp),%edx + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vpor %xmm8,%xmm5,%xmm5 + vpsrld $30,%xmm9,%xmm8 + addl %esi,%edx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -16(%r15),%xmm15 + andl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + vpslld $2,%xmm9,%xmm9 + vpxor %xmm8,%xmm5,%xmm5 + shrdl $7,%ebp,%ebp + xorl %ebx,%edi + movl %edx,%esi + addl 28(%rsp),%ecx + vpxor %xmm9,%xmm5,%xmm5 + xorl %eax,%ebp + shldl $5,%edx,%edx + vmovdqa 16(%r11),%xmm10 + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + vpalignr $8,%xmm2,%xmm3,%xmm6 + movl %ecx,%edi + addl 32(%rsp),%ebx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 0(%r15),%xmm14 + vpaddd %xmm5,%xmm10,%xmm9 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + vpsrldq $4,%xmm5,%xmm8 + addl %esi,%ebx + andl %edx,%edi + vpxor %xmm2,%xmm6,%xmm6 + xorl %ebp,%edx + addl %ecx,%ebx + vpxor %xmm4,%xmm8,%xmm8 + shrdl $7,%ecx,%ecx + xorl %ebp,%edi + movl %ebx,%esi + addl 36(%rsp),%eax + vpxor %xmm8,%xmm6,%xmm6 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vmovdqa %xmm9,16(%rsp) + addl %edi,%eax + andl %ecx,%esi + vpsrld $31,%xmm6,%xmm8 + xorl %edx,%ecx + addl %ebx,%eax + shrdl $7,%ebx,%ebx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 16(%r15),%xmm15 + xorl %edx,%esi + vpslldq $12,%xmm6,%xmm9 + vpaddd %xmm6,%xmm6,%xmm6 + movl %eax,%edi + addl 40(%rsp),%ebp + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpor %xmm8,%xmm6,%xmm6 + vpsrld $30,%xmm9,%xmm8 + addl %esi,%ebp + andl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + vpslld $2,%xmm9,%xmm9 + vpxor %xmm8,%xmm6,%xmm6 + shrdl $7,%eax,%eax + xorl %ecx,%edi + movl %ebp,%esi + addl 44(%rsp),%edx + vpxor %xmm9,%xmm6,%xmm6 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + addl %edi,%edx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 32(%r15),%xmm14 + andl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%esi + vpalignr $8,%xmm3,%xmm4,%xmm7 + movl %edx,%edi + addl 48(%rsp),%ecx + vpaddd %xmm6,%xmm10,%xmm9 + xorl %eax,%ebp + shldl $5,%edx,%edx + vpsrldq $4,%xmm6,%xmm8 + addl %esi,%ecx + andl %ebp,%edi + vpxor %xmm3,%xmm7,%xmm7 + xorl %eax,%ebp + addl %edx,%ecx + vpxor %xmm5,%xmm8,%xmm8 + shrdl $7,%edx,%edx + xorl %eax,%edi + movl %ecx,%esi + addl 52(%rsp),%ebx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 48(%r15),%xmm15 + vpxor %xmm8,%xmm7,%xmm7 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + vmovdqa %xmm9,32(%rsp) + addl %edi,%ebx + andl %edx,%esi + vpsrld $31,%xmm7,%xmm8 + xorl %ebp,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %ebp,%esi + vpslldq $12,%xmm7,%xmm9 + vpaddd %xmm7,%xmm7,%xmm7 + movl %ebx,%edi + addl 56(%rsp),%eax + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpor %xmm8,%xmm7,%xmm7 + vpsrld $30,%xmm9,%xmm8 + addl %esi,%eax + andl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + vpslld $2,%xmm9,%xmm9 + vpxor %xmm8,%xmm7,%xmm7 + shrdl $7,%ebx,%ebx + cmpl $11,%r8d + jb L$vaesenclast6 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 64(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 80(%r15),%xmm15 + je L$vaesenclast6 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 96(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 112(%r15),%xmm15 +L$vaesenclast6: + vaesenclast %xmm15,%xmm12,%xmm12 + vmovups -112(%r15),%xmm15 + vmovups 16-112(%r15),%xmm14 + xorl %edx,%edi + movl %eax,%esi + addl 60(%rsp),%ebp + vpxor %xmm9,%xmm7,%xmm7 + xorl %ecx,%ebx + shldl $5,%eax,%eax + addl %edi,%ebp + andl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm6,%xmm7,%xmm8 + vpxor %xmm4,%xmm0,%xmm0 + shrdl $7,%eax,%eax + xorl %ecx,%esi + movl %ebp,%edi + addl 0(%rsp),%edx + vpxor %xmm1,%xmm0,%xmm0 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vpaddd %xmm7,%xmm10,%xmm9 + addl %esi,%edx + vmovdqu 16(%r12),%xmm13 + vpxor %xmm15,%xmm13,%xmm13 + vmovups %xmm12,0(%r12,%r13,1) + vpxor %xmm13,%xmm12,%xmm12 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -80(%r15),%xmm15 + andl %eax,%edi + vpxor %xmm8,%xmm0,%xmm0 + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%edi + vpsrld $30,%xmm0,%xmm8 + vmovdqa %xmm9,48(%rsp) + movl %edx,%esi + addl 4(%rsp),%ecx + xorl %eax,%ebp + shldl $5,%edx,%edx + vpslld $2,%xmm0,%xmm0 + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + movl %ecx,%edi + addl 8(%rsp),%ebx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -64(%r15),%xmm14 + vpor %xmm8,%xmm0,%xmm0 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + addl %esi,%ebx + andl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 12(%rsp),%eax + xorl %ebp,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm7,%xmm0,%xmm8 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -48(%r15),%xmm15 + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + vpxor %xmm2,%xmm1,%xmm1 + addl %esi,%ebp + xorl %ecx,%edi + vpaddd %xmm0,%xmm10,%xmm9 + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpxor %xmm8,%xmm1,%xmm1 + addl 20(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + vpsrld $30,%xmm1,%xmm8 + vmovdqa %xmm9,0(%rsp) + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpslld $2,%xmm1,%xmm1 + addl 24(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -32(%r15),%xmm14 + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpor %xmm8,%xmm1,%xmm1 + addl 28(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpalignr $8,%xmm0,%xmm1,%xmm8 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + vpxor %xmm3,%xmm2,%xmm2 + addl %esi,%eax + xorl %edx,%edi + vpaddd %xmm1,%xmm10,%xmm9 + vmovdqa 32(%r11),%xmm10 + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpxor %xmm8,%xmm2,%xmm2 + addl 36(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -16(%r15),%xmm15 + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + vpsrld $30,%xmm2,%xmm8 + vmovdqa %xmm9,16(%rsp) + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpslld $2,%xmm2,%xmm2 + addl 40(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpor %xmm8,%xmm2,%xmm2 + addl 44(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 0(%r15),%xmm14 + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpalignr $8,%xmm1,%xmm2,%xmm8 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + vpxor %xmm4,%xmm3,%xmm3 + addl %esi,%ebx + xorl %ebp,%edi + vpaddd %xmm2,%xmm10,%xmm9 + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpxor %xmm8,%xmm3,%xmm3 + addl 52(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + vpsrld $30,%xmm3,%xmm8 + vmovdqa %xmm9,32(%rsp) + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpslld $2,%xmm3,%xmm3 + addl 56(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 16(%r15),%xmm15 + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpor %xmm8,%xmm3,%xmm3 + addl 60(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpalignr $8,%xmm2,%xmm3,%xmm8 + vpxor %xmm0,%xmm4,%xmm4 + addl 0(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + vpxor %xmm5,%xmm4,%xmm4 + addl %esi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 32(%r15),%xmm14 + xorl %eax,%edi + vpaddd %xmm3,%xmm10,%xmm9 + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpxor %xmm8,%xmm4,%xmm4 + addl 4(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + vpsrld $30,%xmm4,%xmm8 + vmovdqa %xmm9,48(%rsp) + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpslld $2,%xmm4,%xmm4 + addl 8(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpor %xmm8,%xmm4,%xmm4 + addl 12(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 48(%r15),%xmm15 + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm3,%xmm4,%xmm8 + vpxor %xmm1,%xmm5,%xmm5 + addl 16(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + vpxor %xmm6,%xmm5,%xmm5 + addl %esi,%edx + xorl %ebx,%edi + vpaddd %xmm4,%xmm10,%xmm9 + shrdl $7,%eax,%eax + addl %ebp,%edx + vpxor %xmm8,%xmm5,%xmm5 + addl 20(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + vpsrld $30,%xmm5,%xmm8 + vmovdqa %xmm9,0(%rsp) + addl %edi,%ecx + cmpl $11,%r8d + jb L$vaesenclast7 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 64(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 80(%r15),%xmm15 + je L$vaesenclast7 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 96(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 112(%r15),%xmm15 +L$vaesenclast7: + vaesenclast %xmm15,%xmm12,%xmm12 + vmovups -112(%r15),%xmm15 + vmovups 16-112(%r15),%xmm14 + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpslld $2,%xmm5,%xmm5 + addl 24(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpor %xmm8,%xmm5,%xmm5 + addl 28(%rsp),%eax + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm4,%xmm5,%xmm8 + vpxor %xmm2,%xmm6,%xmm6 + addl 32(%rsp),%ebp + vmovdqu 32(%r12),%xmm13 + vpxor %xmm15,%xmm13,%xmm13 + vmovups %xmm12,16(%r13,%r12,1) + vpxor %xmm13,%xmm12,%xmm12 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -80(%r15),%xmm15 + andl %ecx,%esi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + vpxor %xmm7,%xmm6,%xmm6 + movl %eax,%edi + xorl %ecx,%esi + vpaddd %xmm5,%xmm10,%xmm9 + shldl $5,%eax,%eax + addl %esi,%ebp + vpxor %xmm8,%xmm6,%xmm6 + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 36(%rsp),%edx + vpsrld $30,%xmm6,%xmm8 + vmovdqa %xmm9,16(%rsp) + andl %ebx,%edi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%esi + vpslld $2,%xmm6,%xmm6 + xorl %ebx,%edi + shldl $5,%ebp,%ebp + addl %edi,%edx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -64(%r15),%xmm14 + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + addl 40(%rsp),%ecx + andl %eax,%esi + vpor %xmm8,%xmm6,%xmm6 + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%edi + xorl %eax,%esi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 44(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + shrdl $7,%edx,%edx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -48(%r15),%xmm15 + movl %ecx,%esi + xorl %ebp,%edi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + vpalignr $8,%xmm5,%xmm6,%xmm8 + vpxor %xmm3,%xmm7,%xmm7 + addl 48(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + vpxor %xmm0,%xmm7,%xmm7 + movl %ebx,%edi + xorl %edx,%esi + vpaddd %xmm6,%xmm10,%xmm9 + vmovdqa 48(%r11),%xmm10 + shldl $5,%ebx,%ebx + addl %esi,%eax + vpxor %xmm8,%xmm7,%xmm7 + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 52(%rsp),%ebp + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -32(%r15),%xmm14 + vpsrld $30,%xmm7,%xmm8 + vmovdqa %xmm9,32(%rsp) + andl %ecx,%edi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + vpslld $2,%xmm7,%xmm7 + xorl %ecx,%edi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + addl 56(%rsp),%edx + andl %ebx,%esi + vpor %xmm8,%xmm7,%xmm7 + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%edi + xorl %ebx,%esi + shldl $5,%ebp,%ebp + addl %esi,%edx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -16(%r15),%xmm15 + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 60(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%esi + xorl %eax,%edi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + vpalignr $8,%xmm6,%xmm7,%xmm8 + vpxor %xmm4,%xmm0,%xmm0 + addl 0(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + shrdl $7,%edx,%edx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 0(%r15),%xmm14 + vpxor %xmm1,%xmm0,%xmm0 + movl %ecx,%edi + xorl %ebp,%esi + vpaddd %xmm7,%xmm10,%xmm9 + shldl $5,%ecx,%ecx + addl %esi,%ebx + vpxor %xmm8,%xmm0,%xmm0 + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 4(%rsp),%eax + vpsrld $30,%xmm0,%xmm8 + vmovdqa %xmm9,48(%rsp) + andl %edx,%edi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + vpslld $2,%xmm0,%xmm0 + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + addl 8(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 16(%r15),%xmm15 + andl %ecx,%esi + vpor %xmm8,%xmm0,%xmm0 + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%edi + xorl %ecx,%esi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 12(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%esi + xorl %ebx,%edi + shldl $5,%ebp,%ebp + addl %edi,%edx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 32(%r15),%xmm14 + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + vpalignr $8,%xmm7,%xmm0,%xmm8 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + vpxor %xmm2,%xmm1,%xmm1 + movl %edx,%edi + xorl %eax,%esi + vpaddd %xmm0,%xmm10,%xmm9 + shldl $5,%edx,%edx + addl %esi,%ecx + vpxor %xmm8,%xmm1,%xmm1 + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 20(%rsp),%ebx + vpsrld $30,%xmm1,%xmm8 + vmovdqa %xmm9,0(%rsp) + andl %ebp,%edi + xorl %eax,%ebp + shrdl $7,%edx,%edx + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 48(%r15),%xmm15 + movl %ecx,%esi + vpslld $2,%xmm1,%xmm1 + xorl %ebp,%edi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + addl 24(%rsp),%eax + andl %edx,%esi + vpor %xmm8,%xmm1,%xmm1 + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%edi + xorl %edx,%esi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 28(%rsp),%ebp + cmpl $11,%r8d + jb L$vaesenclast8 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 64(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 80(%r15),%xmm15 + je L$vaesenclast8 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 96(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 112(%r15),%xmm15 +L$vaesenclast8: + vaesenclast %xmm15,%xmm12,%xmm12 + vmovups -112(%r15),%xmm15 + vmovups 16-112(%r15),%xmm14 + andl %ecx,%edi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + xorl %ecx,%edi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm0,%xmm1,%xmm8 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + vpxor %xmm3,%xmm2,%xmm2 + movl %ebp,%edi + xorl %ebx,%esi + vpaddd %xmm1,%xmm10,%xmm9 + shldl $5,%ebp,%ebp + addl %esi,%edx + vmovdqu 48(%r12),%xmm13 + vpxor %xmm15,%xmm13,%xmm13 + vmovups %xmm12,32(%r13,%r12,1) + vpxor %xmm13,%xmm12,%xmm12 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -80(%r15),%xmm15 + vpxor %xmm8,%xmm2,%xmm2 + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 36(%rsp),%ecx + vpsrld $30,%xmm2,%xmm8 + vmovdqa %xmm9,16(%rsp) + andl %eax,%edi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%esi + vpslld $2,%xmm2,%xmm2 + xorl %eax,%edi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + addl 40(%rsp),%ebx + andl %ebp,%esi + vpor %xmm8,%xmm2,%xmm2 + xorl %eax,%ebp + shrdl $7,%edx,%edx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -64(%r15),%xmm14 + movl %ecx,%edi + xorl %ebp,%esi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 44(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + addl %ebx,%eax + vpalignr $8,%xmm1,%xmm2,%xmm8 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -48(%r15),%xmm15 + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + vpxor %xmm4,%xmm3,%xmm3 + addl %esi,%ebp + xorl %ecx,%edi + vpaddd %xmm2,%xmm10,%xmm9 + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpxor %xmm8,%xmm3,%xmm3 + addl 52(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + vpsrld $30,%xmm3,%xmm8 + vmovdqa %xmm9,32(%rsp) + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpslld $2,%xmm3,%xmm3 + addl 56(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups -32(%r15),%xmm14 + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpor %xmm8,%xmm3,%xmm3 + addl 60(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 0(%rsp),%eax + vpaddd %xmm3,%xmm10,%xmm9 + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + vmovdqa %xmm9,48(%rsp) + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 4(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups -16(%r15),%xmm15 + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 8(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 12(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 0(%r15),%xmm14 + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + cmpq %r14,%r10 + je L$done_avx + vmovdqa 64(%r11),%xmm9 + vmovdqa 0(%r11),%xmm10 + vmovdqu 0(%r10),%xmm0 + vmovdqu 16(%r10),%xmm1 + vmovdqu 32(%r10),%xmm2 + vmovdqu 48(%r10),%xmm3 + vpshufb %xmm9,%xmm0,%xmm0 + addq $64,%r10 + addl 16(%rsp),%ebx + xorl %ebp,%esi + vpshufb %xmm9,%xmm1,%xmm1 + movl %ecx,%edi + shldl $5,%ecx,%ecx + vpaddd %xmm10,%xmm0,%xmm8 + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vmovdqa %xmm8,0(%rsp) + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 16(%r15),%xmm15 + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + vpshufb %xmm9,%xmm2,%xmm2 + movl %edx,%edi + shldl $5,%edx,%edx + vpaddd %xmm10,%xmm1,%xmm8 + addl %esi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 32(%r15),%xmm14 + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vmovdqa %xmm8,16(%rsp) + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 48(%r15),%xmm15 + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + vpshufb %xmm9,%xmm3,%xmm3 + movl %ebp,%edi + shldl $5,%ebp,%ebp + vpaddd %xmm10,%xmm2,%xmm8 + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + vmovdqa %xmm8,32(%rsp) + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + cmpl $11,%r8d + jb L$vaesenclast9 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 64(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 80(%r15),%xmm15 + je L$vaesenclast9 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 96(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 112(%r15),%xmm15 +L$vaesenclast9: + vaesenclast %xmm15,%xmm12,%xmm12 + vmovups -112(%r15),%xmm15 + vmovups 16-112(%r15),%xmm14 + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vmovups %xmm12,48(%r13,%r12,1) + leaq 64(%r12),%r12 + + addl 0(%r9),%eax + addl 4(%r9),%esi + addl 8(%r9),%ecx + addl 12(%r9),%edx + movl %eax,0(%r9) + addl 16(%r9),%ebp + movl %esi,4(%r9) + movl %esi,%ebx + movl %ecx,8(%r9) + movl %ecx,%edi + movl %edx,12(%r9) + xorl %edx,%edi + movl %ebp,16(%r9) + andl %edi,%esi + jmp L$oop_avx + +L$done_avx: + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 16(%r15),%xmm15 + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 32(%r15),%xmm14 + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 48(%r15),%xmm15 + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + cmpl $11,%r8d + jb L$vaesenclast10 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 64(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 80(%r15),%xmm15 + je L$vaesenclast10 + vaesenc %xmm15,%xmm12,%xmm12 + vmovups 96(%r15),%xmm14 + vaesenc %xmm14,%xmm12,%xmm12 + vmovups 112(%r15),%xmm15 +L$vaesenclast10: + vaesenclast %xmm15,%xmm12,%xmm12 + vmovups -112(%r15),%xmm15 + vmovups 16-112(%r15),%xmm14 + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vmovups %xmm12,48(%r13,%r12,1) + movq 88(%rsp),%r8 + + addl 0(%r9),%eax + addl 4(%r9),%esi + addl 8(%r9),%ecx + movl %eax,0(%r9) + addl 12(%r9),%edx + movl %esi,4(%r9) + addl 16(%r9),%ebp + movl %ecx,8(%r9) + movl %edx,12(%r9) + movl %ebp,16(%r9) + vmovups %xmm12,(%r8) + vzeroall + leaq 104(%rsp),%rsi + + movq 0(%rsi),%r15 + + movq 8(%rsi),%r14 + + movq 16(%rsi),%r13 + + movq 24(%rsi),%r12 + + movq 32(%rsi),%rbp + + movq 40(%rsi),%rbx + + leaq 48(%rsi),%rsp + +L$epilogue_avx: + .byte 0xf3,0xc3 + + +.p2align 6 +K_XX_XX: +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 + +.byte 65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.p2align 6 + +.p2align 5 +aesni_cbc_sha1_enc_shaext: + + movq 8(%rsp),%r10 + movdqu (%r9),%xmm8 + movd 16(%r9),%xmm9 + movdqa K_XX_XX+80(%rip),%xmm7 + + movl 240(%rcx),%r11d + subq %rdi,%rsi + movups (%rcx),%xmm15 + movups (%r8),%xmm2 + movups 16(%rcx),%xmm0 + leaq 112(%rcx),%rcx + + pshufd $27,%xmm8,%xmm8 + pshufd $27,%xmm9,%xmm9 + jmp L$oop_shaext + +.p2align 4 +L$oop_shaext: + movups 0(%rdi),%xmm14 + xorps %xmm15,%xmm14 + xorps %xmm14,%xmm2 + movups -80(%rcx),%xmm1 +.byte 102,15,56,220,208 + movdqu (%r10),%xmm3 + movdqa %xmm9,%xmm12 +.byte 102,15,56,0,223 + movdqu 16(%r10),%xmm4 + movdqa %xmm8,%xmm11 + movups -64(%rcx),%xmm0 +.byte 102,15,56,220,209 +.byte 102,15,56,0,231 + + paddd %xmm3,%xmm9 + movdqu 32(%r10),%xmm5 + leaq 64(%r10),%r10 + pxor %xmm12,%xmm3 + movups -48(%rcx),%xmm1 +.byte 102,15,56,220,208 + pxor %xmm12,%xmm3 + movdqa %xmm8,%xmm10 +.byte 102,15,56,0,239 +.byte 69,15,58,204,193,0 +.byte 68,15,56,200,212 + movups -32(%rcx),%xmm0 +.byte 102,15,56,220,209 +.byte 15,56,201,220 + movdqu -16(%r10),%xmm6 + movdqa %xmm8,%xmm9 +.byte 102,15,56,0,247 + movups -16(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 69,15,58,204,194,0 +.byte 68,15,56,200,205 + pxor %xmm5,%xmm3 +.byte 15,56,201,229 + movups 0(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,0 +.byte 68,15,56,200,214 + movups 16(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,222 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + movups 32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,0 +.byte 68,15,56,200,203 + movups 48(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,227 + pxor %xmm3,%xmm5 +.byte 15,56,201,243 + cmpl $11,%r11d + jb L$aesenclast11 + movups 64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 80(%rcx),%xmm1 +.byte 102,15,56,220,208 + je L$aesenclast11 + movups 96(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 112(%rcx),%xmm1 +.byte 102,15,56,220,208 +L$aesenclast11: +.byte 102,15,56,221,209 + movups 16-112(%rcx),%xmm0 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,0 +.byte 68,15,56,200,212 + movups 16(%rdi),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm2,0(%rsi,%rdi,1) + xorps %xmm14,%xmm2 + movups -80(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,236 + pxor %xmm4,%xmm6 +.byte 15,56,201,220 + movups -64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,1 +.byte 68,15,56,200,205 + movups -48(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,245 + pxor %xmm5,%xmm3 +.byte 15,56,201,229 + movups -32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,1 +.byte 68,15,56,200,214 + movups -16(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,222 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + movups 0(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,1 +.byte 68,15,56,200,203 + movups 16(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,227 + pxor %xmm3,%xmm5 +.byte 15,56,201,243 + movups 32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,1 +.byte 68,15,56,200,212 + movups 48(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,236 + pxor %xmm4,%xmm6 +.byte 15,56,201,220 + cmpl $11,%r11d + jb L$aesenclast12 + movups 64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 80(%rcx),%xmm1 +.byte 102,15,56,220,208 + je L$aesenclast12 + movups 96(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 112(%rcx),%xmm1 +.byte 102,15,56,220,208 +L$aesenclast12: +.byte 102,15,56,221,209 + movups 16-112(%rcx),%xmm0 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,1 +.byte 68,15,56,200,205 + movups 32(%rdi),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm2,16(%rsi,%rdi,1) + xorps %xmm14,%xmm2 + movups -80(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,245 + pxor %xmm5,%xmm3 +.byte 15,56,201,229 + movups -64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,2 +.byte 68,15,56,200,214 + movups -48(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,222 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + movups -32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,2 +.byte 68,15,56,200,203 + movups -16(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,227 + pxor %xmm3,%xmm5 +.byte 15,56,201,243 + movups 0(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,2 +.byte 68,15,56,200,212 + movups 16(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,236 + pxor %xmm4,%xmm6 +.byte 15,56,201,220 + movups 32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,2 +.byte 68,15,56,200,205 + movups 48(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,245 + pxor %xmm5,%xmm3 +.byte 15,56,201,229 + cmpl $11,%r11d + jb L$aesenclast13 + movups 64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 80(%rcx),%xmm1 +.byte 102,15,56,220,208 + je L$aesenclast13 + movups 96(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 112(%rcx),%xmm1 +.byte 102,15,56,220,208 +L$aesenclast13: +.byte 102,15,56,221,209 + movups 16-112(%rcx),%xmm0 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,2 +.byte 68,15,56,200,214 + movups 48(%rdi),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm2,32(%rsi,%rdi,1) + xorps %xmm14,%xmm2 + movups -80(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,222 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + movups -64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,3 +.byte 68,15,56,200,203 + movups -48(%rcx),%xmm1 +.byte 102,15,56,220,208 +.byte 15,56,202,227 + pxor %xmm3,%xmm5 +.byte 15,56,201,243 + movups -32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,3 +.byte 68,15,56,200,212 +.byte 15,56,202,236 + pxor %xmm4,%xmm6 + movups -16(%rcx),%xmm1 +.byte 102,15,56,220,208 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,3 +.byte 68,15,56,200,205 +.byte 15,56,202,245 + movups 0(%rcx),%xmm0 +.byte 102,15,56,220,209 + movdqa %xmm12,%xmm5 + movdqa %xmm8,%xmm10 +.byte 69,15,58,204,193,3 +.byte 68,15,56,200,214 + movups 16(%rcx),%xmm1 +.byte 102,15,56,220,208 + movdqa %xmm8,%xmm9 +.byte 69,15,58,204,194,3 +.byte 68,15,56,200,205 + movups 32(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 48(%rcx),%xmm1 +.byte 102,15,56,220,208 + cmpl $11,%r11d + jb L$aesenclast14 + movups 64(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 80(%rcx),%xmm1 +.byte 102,15,56,220,208 + je L$aesenclast14 + movups 96(%rcx),%xmm0 +.byte 102,15,56,220,209 + movups 112(%rcx),%xmm1 +.byte 102,15,56,220,208 +L$aesenclast14: +.byte 102,15,56,221,209 + movups 16-112(%rcx),%xmm0 + decq %rdx + + paddd %xmm11,%xmm8 + movups %xmm2,48(%rsi,%rdi,1) + leaq 64(%rdi),%rdi + jnz L$oop_shaext + + pshufd $27,%xmm8,%xmm8 + pshufd $27,%xmm9,%xmm9 + movups %xmm2,(%r8) + movdqu %xmm8,(%r9) + movd %xmm9,16(%r9) + .byte 0xf3,0xc3 + + diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-sha256-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-sha256-x86_64.s new file mode 100644 index 0000000..cbf5ae8 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-sha256-x86_64.s @@ -0,0 +1,4435 @@ +.text + + +.globl _aesni_cbc_sha256_enc + +.p2align 4 +_aesni_cbc_sha256_enc: + + leaq _OPENSSL_ia32cap_P(%rip),%r11 + movl $1,%eax + cmpq $0,%rdi + je L$probe + movl 0(%r11),%eax + movq 4(%r11),%r10 + btq $61,%r10 + jc aesni_cbc_sha256_enc_shaext + movq %r10,%r11 + shrq $32,%r11 + + testl $2048,%r10d + jnz aesni_cbc_sha256_enc_xop + andl $296,%r11d + cmpl $296,%r11d + je aesni_cbc_sha256_enc_avx2 + andl $268435456,%r10d + jnz aesni_cbc_sha256_enc_avx + ud2 + xorl %eax,%eax + cmpq $0,%rdi + je L$probe + ud2 +L$probe: + .byte 0xf3,0xc3 + + + +.p2align 6 + +K256: +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 + +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0,0,0,0, 0,0,0,0, -1,-1,-1,-1 +.long 0,0,0,0, 0,0,0,0 +.byte 65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54,32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.p2align 6 + +.p2align 6 +aesni_cbc_sha256_enc_xop: + +L$xop_shortcut: + movq 8(%rsp),%r10 + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $128,%rsp + andq $-64,%rsp + + shlq $6,%rdx + subq %rdi,%rsi + subq %rdi,%r10 + addq %rdi,%rdx + + + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + + movq %r8,64+32(%rsp) + movq %r9,64+40(%rsp) + movq %r10,64+48(%rsp) + movq %rax,120(%rsp) + +L$prologue_xop: + vzeroall + + movq %rdi,%r12 + leaq 128(%rcx),%rdi + leaq K256+544(%rip),%r13 + movl 240-128(%rdi),%r14d + movq %r9,%r15 + movq %r10,%rsi + vmovdqu (%r8),%xmm8 + subq $9,%r14 + + movl 0(%r15),%eax + movl 4(%r15),%ebx + movl 8(%r15),%ecx + movl 12(%r15),%edx + movl 16(%r15),%r8d + movl 20(%r15),%r9d + movl 24(%r15),%r10d + movl 28(%r15),%r11d + + vmovdqa 0(%r13,%r14,8),%xmm14 + vmovdqa 16(%r13,%r14,8),%xmm13 + vmovdqa 32(%r13,%r14,8),%xmm12 + vmovdqu 0-128(%rdi),%xmm10 + jmp L$loop_xop +.p2align 4 +L$loop_xop: + vmovdqa K256+512(%rip),%xmm7 + vmovdqu 0(%rsi,%r12,1),%xmm0 + vmovdqu 16(%rsi,%r12,1),%xmm1 + vmovdqu 32(%rsi,%r12,1),%xmm2 + vmovdqu 48(%rsi,%r12,1),%xmm3 + vpshufb %xmm7,%xmm0,%xmm0 + leaq K256(%rip),%rbp + vpshufb %xmm7,%xmm1,%xmm1 + vpshufb %xmm7,%xmm2,%xmm2 + vpaddd 0(%rbp),%xmm0,%xmm4 + vpshufb %xmm7,%xmm3,%xmm3 + vpaddd 32(%rbp),%xmm1,%xmm5 + vpaddd 64(%rbp),%xmm2,%xmm6 + vpaddd 96(%rbp),%xmm3,%xmm7 + vmovdqa %xmm4,0(%rsp) + movl %eax,%r14d + vmovdqa %xmm5,16(%rsp) + movl %ebx,%esi + vmovdqa %xmm6,32(%rsp) + xorl %ecx,%esi + vmovdqa %xmm7,48(%rsp) + movl %r8d,%r13d + jmp L$xop_00_47 + +.p2align 4 +L$xop_00_47: + subq $-32*4,%rbp + vmovdqu (%r12),%xmm9 + movq %r12,64+0(%rsp) + vpalignr $4,%xmm0,%xmm1,%xmm4 + rorl $14,%r13d + movl %r14d,%eax + vpalignr $4,%xmm2,%xmm3,%xmm7 + movl %r9d,%r12d + xorl %r8d,%r13d +.byte 143,232,120,194,236,14 + rorl $9,%r14d + xorl %r10d,%r12d + vpsrld $3,%xmm4,%xmm4 + rorl $5,%r13d + xorl %eax,%r14d + vpaddd %xmm7,%xmm0,%xmm0 + andl %r8d,%r12d + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d +.byte 143,232,120,194,245,11 + rorl $11,%r14d + xorl %r10d,%r12d + vpxor %xmm5,%xmm4,%xmm4 + xorl %ebx,%r15d + rorl $6,%r13d + addl %r12d,%r11d + andl %r15d,%esi +.byte 143,232,120,194,251,13 + xorl %eax,%r14d + addl %r13d,%r11d + vpxor %xmm6,%xmm4,%xmm4 + xorl %ebx,%esi + addl %r11d,%edx + vpsrld $10,%xmm3,%xmm6 + rorl $2,%r14d + addl %esi,%r11d + vpaddd %xmm4,%xmm0,%xmm0 + movl %edx,%r13d + addl %r11d,%r14d +.byte 143,232,120,194,239,2 + rorl $14,%r13d + movl %r14d,%r11d + vpxor %xmm6,%xmm7,%xmm7 + movl %r8d,%r12d + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%r12d + vpxor %xmm5,%xmm7,%xmm7 + rorl $5,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + vpxor %xmm8,%xmm9,%xmm9 + xorl %edx,%r13d + vpsrldq $8,%xmm7,%xmm7 + addl 4(%rsp),%r10d + movl %r11d,%esi + rorl $11,%r14d + xorl %r9d,%r12d + vpaddd %xmm7,%xmm0,%xmm0 + xorl %eax,%esi + rorl $6,%r13d + addl %r12d,%r10d + andl %esi,%r15d +.byte 143,232,120,194,248,13 + xorl %r11d,%r14d + addl %r13d,%r10d + vpsrld $10,%xmm0,%xmm6 + xorl %eax,%r15d + addl %r10d,%ecx +.byte 143,232,120,194,239,2 + rorl $2,%r14d + addl %r15d,%r10d + vpxor %xmm6,%xmm7,%xmm7 + movl %ecx,%r13d + addl %r10d,%r14d + rorl $14,%r13d + movl %r14d,%r10d + vpxor %xmm5,%xmm7,%xmm7 + movl %edx,%r12d + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r12d + vpslldq $8,%xmm7,%xmm7 + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %ecx,%r13d + vpaddd %xmm7,%xmm0,%xmm0 + addl 8(%rsp),%r9d + movl %r10d,%r15d + rorl $11,%r14d + xorl %r8d,%r12d + vpaddd 0(%rbp),%xmm0,%xmm6 + xorl %r11d,%r15d + rorl $6,%r13d + addl %r12d,%r9d + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%esi + addl %r9d,%ebx + rorl $2,%r14d + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + rorl $14,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%esi + rorl $11,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + rorl $6,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + rorl $2,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,0(%rsp) + vpalignr $4,%xmm1,%xmm2,%xmm4 + rorl $14,%r13d + movl %r14d,%r8d + vpalignr $4,%xmm3,%xmm0,%xmm7 + movl %ebx,%r12d + xorl %eax,%r13d +.byte 143,232,120,194,236,14 + rorl $9,%r14d + xorl %ecx,%r12d + vpsrld $3,%xmm4,%xmm4 + rorl $5,%r13d + xorl %r8d,%r14d + vpaddd %xmm7,%xmm1,%xmm1 + andl %eax,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d +.byte 143,232,120,194,245,11 + rorl $11,%r14d + xorl %ecx,%r12d + vpxor %xmm5,%xmm4,%xmm4 + xorl %r9d,%r15d + rorl $6,%r13d + addl %r12d,%edx + andl %r15d,%esi +.byte 143,232,120,194,248,13 + xorl %r8d,%r14d + addl %r13d,%edx + vpxor %xmm6,%xmm4,%xmm4 + xorl %r9d,%esi + addl %edx,%r11d + vpsrld $10,%xmm0,%xmm6 + rorl $2,%r14d + addl %esi,%edx + vpaddd %xmm4,%xmm1,%xmm1 + movl %r11d,%r13d + addl %edx,%r14d +.byte 143,232,120,194,239,2 + rorl $14,%r13d + movl %r14d,%edx + vpxor %xmm6,%xmm7,%xmm7 + movl %eax,%r12d + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%r12d + vpxor %xmm5,%xmm7,%xmm7 + rorl $5,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r11d,%r13d + vpsrldq $8,%xmm7,%xmm7 + addl 20(%rsp),%ecx + movl %edx,%esi + rorl $11,%r14d + xorl %ebx,%r12d + vpaddd %xmm7,%xmm1,%xmm1 + xorl %r8d,%esi + rorl $6,%r13d + addl %r12d,%ecx + andl %esi,%r15d +.byte 143,232,120,194,249,13 + xorl %edx,%r14d + addl %r13d,%ecx + vpsrld $10,%xmm1,%xmm6 + xorl %r8d,%r15d + addl %ecx,%r10d +.byte 143,232,120,194,239,2 + rorl $2,%r14d + addl %r15d,%ecx + vpxor %xmm6,%xmm7,%xmm7 + movl %r10d,%r13d + addl %ecx,%r14d + rorl $14,%r13d + movl %r14d,%ecx + vpxor %xmm5,%xmm7,%xmm7 + movl %r11d,%r12d + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r12d + vpslldq $8,%xmm7,%xmm7 + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r10d,%r13d + vpaddd %xmm7,%xmm1,%xmm1 + addl 24(%rsp),%ebx + movl %ecx,%r15d + rorl $11,%r14d + xorl %eax,%r12d + vpaddd 32(%rbp),%xmm1,%xmm6 + xorl %edx,%r15d + rorl $6,%r13d + addl %r12d,%ebx + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%esi + addl %ebx,%r9d + rorl $2,%r14d + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + rorl $14,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%esi + rorl $11,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + rorl $6,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + rorl $2,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,16(%rsp) + vpalignr $4,%xmm2,%xmm3,%xmm4 + rorl $14,%r13d + movl %r14d,%eax + vpalignr $4,%xmm0,%xmm1,%xmm7 + movl %r9d,%r12d + xorl %r8d,%r13d +.byte 143,232,120,194,236,14 + rorl $9,%r14d + xorl %r10d,%r12d + vpsrld $3,%xmm4,%xmm4 + rorl $5,%r13d + xorl %eax,%r14d + vpaddd %xmm7,%xmm2,%xmm2 + andl %r8d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d +.byte 143,232,120,194,245,11 + rorl $11,%r14d + xorl %r10d,%r12d + vpxor %xmm5,%xmm4,%xmm4 + xorl %ebx,%r15d + rorl $6,%r13d + addl %r12d,%r11d + andl %r15d,%esi +.byte 143,232,120,194,249,13 + xorl %eax,%r14d + addl %r13d,%r11d + vpxor %xmm6,%xmm4,%xmm4 + xorl %ebx,%esi + addl %r11d,%edx + vpsrld $10,%xmm1,%xmm6 + rorl $2,%r14d + addl %esi,%r11d + vpaddd %xmm4,%xmm2,%xmm2 + movl %edx,%r13d + addl %r11d,%r14d +.byte 143,232,120,194,239,2 + rorl $14,%r13d + movl %r14d,%r11d + vpxor %xmm6,%xmm7,%xmm7 + movl %r8d,%r12d + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%r12d + vpxor %xmm5,%xmm7,%xmm7 + rorl $5,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %edx,%r13d + vpsrldq $8,%xmm7,%xmm7 + addl 36(%rsp),%r10d + movl %r11d,%esi + rorl $11,%r14d + xorl %r9d,%r12d + vpaddd %xmm7,%xmm2,%xmm2 + xorl %eax,%esi + rorl $6,%r13d + addl %r12d,%r10d + andl %esi,%r15d +.byte 143,232,120,194,250,13 + xorl %r11d,%r14d + addl %r13d,%r10d + vpsrld $10,%xmm2,%xmm6 + xorl %eax,%r15d + addl %r10d,%ecx +.byte 143,232,120,194,239,2 + rorl $2,%r14d + addl %r15d,%r10d + vpxor %xmm6,%xmm7,%xmm7 + movl %ecx,%r13d + addl %r10d,%r14d + rorl $14,%r13d + movl %r14d,%r10d + vpxor %xmm5,%xmm7,%xmm7 + movl %edx,%r12d + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r12d + vpslldq $8,%xmm7,%xmm7 + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %ecx,%r13d + vpaddd %xmm7,%xmm2,%xmm2 + addl 40(%rsp),%r9d + movl %r10d,%r15d + rorl $11,%r14d + xorl %r8d,%r12d + vpaddd 64(%rbp),%xmm2,%xmm6 + xorl %r11d,%r15d + rorl $6,%r13d + addl %r12d,%r9d + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%esi + addl %r9d,%ebx + rorl $2,%r14d + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + rorl $14,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%esi + rorl $11,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + rorl $6,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + rorl $2,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,32(%rsp) + vpalignr $4,%xmm3,%xmm0,%xmm4 + rorl $14,%r13d + movl %r14d,%r8d + vpalignr $4,%xmm1,%xmm2,%xmm7 + movl %ebx,%r12d + xorl %eax,%r13d +.byte 143,232,120,194,236,14 + rorl $9,%r14d + xorl %ecx,%r12d + vpsrld $3,%xmm4,%xmm4 + rorl $5,%r13d + xorl %r8d,%r14d + vpaddd %xmm7,%xmm3,%xmm3 + andl %eax,%r12d + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d +.byte 143,232,120,194,245,11 + rorl $11,%r14d + xorl %ecx,%r12d + vpxor %xmm5,%xmm4,%xmm4 + xorl %r9d,%r15d + rorl $6,%r13d + addl %r12d,%edx + andl %r15d,%esi +.byte 143,232,120,194,250,13 + xorl %r8d,%r14d + addl %r13d,%edx + vpxor %xmm6,%xmm4,%xmm4 + xorl %r9d,%esi + addl %edx,%r11d + vpsrld $10,%xmm2,%xmm6 + rorl $2,%r14d + addl %esi,%edx + vpaddd %xmm4,%xmm3,%xmm3 + movl %r11d,%r13d + addl %edx,%r14d +.byte 143,232,120,194,239,2 + rorl $14,%r13d + movl %r14d,%edx + vpxor %xmm6,%xmm7,%xmm7 + movl %eax,%r12d + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%r12d + vpxor %xmm5,%xmm7,%xmm7 + rorl $5,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r11d,%r13d + vpsrldq $8,%xmm7,%xmm7 + addl 52(%rsp),%ecx + movl %edx,%esi + rorl $11,%r14d + xorl %ebx,%r12d + vpaddd %xmm7,%xmm3,%xmm3 + xorl %r8d,%esi + rorl $6,%r13d + addl %r12d,%ecx + andl %esi,%r15d +.byte 143,232,120,194,251,13 + xorl %edx,%r14d + addl %r13d,%ecx + vpsrld $10,%xmm3,%xmm6 + xorl %r8d,%r15d + addl %ecx,%r10d +.byte 143,232,120,194,239,2 + rorl $2,%r14d + addl %r15d,%ecx + vpxor %xmm6,%xmm7,%xmm7 + movl %r10d,%r13d + addl %ecx,%r14d + rorl $14,%r13d + movl %r14d,%ecx + vpxor %xmm5,%xmm7,%xmm7 + movl %r11d,%r12d + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r12d + vpslldq $8,%xmm7,%xmm7 + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r10d,%r13d + vpaddd %xmm7,%xmm3,%xmm3 + addl 56(%rsp),%ebx + movl %ecx,%r15d + rorl $11,%r14d + xorl %eax,%r12d + vpaddd 96(%rbp),%xmm3,%xmm6 + xorl %edx,%r15d + rorl $6,%r13d + addl %r12d,%ebx + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%esi + addl %ebx,%r9d + rorl $2,%r14d + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + rorl $14,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%esi + rorl $11,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + rorl $6,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + rorl $2,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,48(%rsp) + movq 64+0(%rsp),%r12 + vpand %xmm14,%xmm11,%xmm11 + movq 64+8(%rsp),%r15 + vpor %xmm11,%xmm8,%xmm8 + vmovdqu %xmm8,(%r15,%r12,1) + leaq 16(%r12),%r12 + cmpb $0,131(%rbp) + jne L$xop_00_47 + vmovdqu (%r12),%xmm9 + movq %r12,64+0(%rsp) + rorl $14,%r13d + movl %r14d,%eax + movl %r9d,%r12d + xorl %r8d,%r13d + rorl $9,%r14d + xorl %r10d,%r12d + rorl $5,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + rorl $11,%r14d + xorl %r10d,%r12d + xorl %ebx,%r15d + rorl $6,%r13d + addl %r12d,%r11d + andl %r15d,%esi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%esi + addl %r11d,%edx + rorl $2,%r14d + addl %esi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + rorl $14,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%r12d + rorl $5,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + vpxor %xmm8,%xmm9,%xmm9 + xorl %edx,%r13d + addl 4(%rsp),%r10d + movl %r11d,%esi + rorl $11,%r14d + xorl %r9d,%r12d + xorl %eax,%esi + rorl $6,%r13d + addl %r12d,%r10d + andl %esi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + addl %r10d,%ecx + rorl $2,%r14d + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + rorl $14,%r13d + movl %r14d,%r10d + movl %edx,%r12d + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r12d + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %ecx,%r13d + addl 8(%rsp),%r9d + movl %r10d,%r15d + rorl $11,%r14d + xorl %r8d,%r12d + xorl %r11d,%r15d + rorl $6,%r13d + addl %r12d,%r9d + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%esi + addl %r9d,%ebx + rorl $2,%r14d + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + rorl $14,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%esi + rorl $11,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + rorl $6,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + rorl $2,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + rorl $14,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + xorl %eax,%r13d + rorl $9,%r14d + xorl %ecx,%r12d + rorl $5,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + rorl $11,%r14d + xorl %ecx,%r12d + xorl %r9d,%r15d + rorl $6,%r13d + addl %r12d,%edx + andl %r15d,%esi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%esi + addl %edx,%r11d + rorl $2,%r14d + addl %esi,%edx + movl %r11d,%r13d + addl %edx,%r14d + rorl $14,%r13d + movl %r14d,%edx + movl %eax,%r12d + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%r12d + rorl $5,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r11d,%r13d + addl 20(%rsp),%ecx + movl %edx,%esi + rorl $11,%r14d + xorl %ebx,%r12d + xorl %r8d,%esi + rorl $6,%r13d + addl %r12d,%ecx + andl %esi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + addl %ecx,%r10d + rorl $2,%r14d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + rorl $14,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r12d + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r10d,%r13d + addl 24(%rsp),%ebx + movl %ecx,%r15d + rorl $11,%r14d + xorl %eax,%r12d + xorl %edx,%r15d + rorl $6,%r13d + addl %r12d,%ebx + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%esi + addl %ebx,%r9d + rorl $2,%r14d + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + rorl $14,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%esi + rorl $11,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + rorl $6,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + rorl $2,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + rorl $14,%r13d + movl %r14d,%eax + movl %r9d,%r12d + xorl %r8d,%r13d + rorl $9,%r14d + xorl %r10d,%r12d + rorl $5,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + rorl $11,%r14d + xorl %r10d,%r12d + xorl %ebx,%r15d + rorl $6,%r13d + addl %r12d,%r11d + andl %r15d,%esi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%esi + addl %r11d,%edx + rorl $2,%r14d + addl %esi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + rorl $14,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%r12d + rorl $5,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %edx,%r13d + addl 36(%rsp),%r10d + movl %r11d,%esi + rorl $11,%r14d + xorl %r9d,%r12d + xorl %eax,%esi + rorl $6,%r13d + addl %r12d,%r10d + andl %esi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + addl %r10d,%ecx + rorl $2,%r14d + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + rorl $14,%r13d + movl %r14d,%r10d + movl %edx,%r12d + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r12d + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %ecx,%r13d + addl 40(%rsp),%r9d + movl %r10d,%r15d + rorl $11,%r14d + xorl %r8d,%r12d + xorl %r11d,%r15d + rorl $6,%r13d + addl %r12d,%r9d + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%esi + addl %r9d,%ebx + rorl $2,%r14d + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + rorl $14,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%esi + rorl $11,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + rorl $6,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + rorl $2,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + rorl $14,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + xorl %eax,%r13d + rorl $9,%r14d + xorl %ecx,%r12d + rorl $5,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + rorl $11,%r14d + xorl %ecx,%r12d + xorl %r9d,%r15d + rorl $6,%r13d + addl %r12d,%edx + andl %r15d,%esi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%esi + addl %edx,%r11d + rorl $2,%r14d + addl %esi,%edx + movl %r11d,%r13d + addl %edx,%r14d + rorl $14,%r13d + movl %r14d,%edx + movl %eax,%r12d + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%r12d + rorl $5,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r11d,%r13d + addl 52(%rsp),%ecx + movl %edx,%esi + rorl $11,%r14d + xorl %ebx,%r12d + xorl %r8d,%esi + rorl $6,%r13d + addl %r12d,%ecx + andl %esi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + addl %ecx,%r10d + rorl $2,%r14d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + rorl $14,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r12d + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r10d,%r13d + addl 56(%rsp),%ebx + movl %ecx,%r15d + rorl $11,%r14d + xorl %eax,%r12d + xorl %edx,%r15d + rorl $6,%r13d + addl %r12d,%ebx + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%esi + addl %ebx,%r9d + rorl $2,%r14d + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + rorl $14,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%esi + rorl $11,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + rorl $6,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + rorl $2,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + movq 64+0(%rsp),%r12 + movq 64+8(%rsp),%r13 + movq 64+40(%rsp),%r15 + movq 64+48(%rsp),%rsi + + vpand %xmm14,%xmm11,%xmm11 + movl %r14d,%eax + vpor %xmm11,%xmm8,%xmm8 + vmovdqu %xmm8,(%r12,%r13,1) + leaq 16(%r12),%r12 + + addl 0(%r15),%eax + addl 4(%r15),%ebx + addl 8(%r15),%ecx + addl 12(%r15),%edx + addl 16(%r15),%r8d + addl 20(%r15),%r9d + addl 24(%r15),%r10d + addl 28(%r15),%r11d + + cmpq 64+16(%rsp),%r12 + + movl %eax,0(%r15) + movl %ebx,4(%r15) + movl %ecx,8(%r15) + movl %edx,12(%r15) + movl %r8d,16(%r15) + movl %r9d,20(%r15) + movl %r10d,24(%r15) + movl %r11d,28(%r15) + + jb L$loop_xop + + movq 64+32(%rsp),%r8 + movq 120(%rsp),%rsi + + vmovdqu %xmm8,(%r8) + vzeroall + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue_xop: + .byte 0xf3,0xc3 + + + +.p2align 6 +aesni_cbc_sha256_enc_avx: + +L$avx_shortcut: + movq 8(%rsp),%r10 + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $128,%rsp + andq $-64,%rsp + + shlq $6,%rdx + subq %rdi,%rsi + subq %rdi,%r10 + addq %rdi,%rdx + + + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + + movq %r8,64+32(%rsp) + movq %r9,64+40(%rsp) + movq %r10,64+48(%rsp) + movq %rax,120(%rsp) + +L$prologue_avx: + vzeroall + + movq %rdi,%r12 + leaq 128(%rcx),%rdi + leaq K256+544(%rip),%r13 + movl 240-128(%rdi),%r14d + movq %r9,%r15 + movq %r10,%rsi + vmovdqu (%r8),%xmm8 + subq $9,%r14 + + movl 0(%r15),%eax + movl 4(%r15),%ebx + movl 8(%r15),%ecx + movl 12(%r15),%edx + movl 16(%r15),%r8d + movl 20(%r15),%r9d + movl 24(%r15),%r10d + movl 28(%r15),%r11d + + vmovdqa 0(%r13,%r14,8),%xmm14 + vmovdqa 16(%r13,%r14,8),%xmm13 + vmovdqa 32(%r13,%r14,8),%xmm12 + vmovdqu 0-128(%rdi),%xmm10 + jmp L$loop_avx +.p2align 4 +L$loop_avx: + vmovdqa K256+512(%rip),%xmm7 + vmovdqu 0(%rsi,%r12,1),%xmm0 + vmovdqu 16(%rsi,%r12,1),%xmm1 + vmovdqu 32(%rsi,%r12,1),%xmm2 + vmovdqu 48(%rsi,%r12,1),%xmm3 + vpshufb %xmm7,%xmm0,%xmm0 + leaq K256(%rip),%rbp + vpshufb %xmm7,%xmm1,%xmm1 + vpshufb %xmm7,%xmm2,%xmm2 + vpaddd 0(%rbp),%xmm0,%xmm4 + vpshufb %xmm7,%xmm3,%xmm3 + vpaddd 32(%rbp),%xmm1,%xmm5 + vpaddd 64(%rbp),%xmm2,%xmm6 + vpaddd 96(%rbp),%xmm3,%xmm7 + vmovdqa %xmm4,0(%rsp) + movl %eax,%r14d + vmovdqa %xmm5,16(%rsp) + movl %ebx,%esi + vmovdqa %xmm6,32(%rsp) + xorl %ecx,%esi + vmovdqa %xmm7,48(%rsp) + movl %r8d,%r13d + jmp L$avx_00_47 + +.p2align 4 +L$avx_00_47: + subq $-32*4,%rbp + vmovdqu (%r12),%xmm9 + movq %r12,64+0(%rsp) + vpalignr $4,%xmm0,%xmm1,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + vpalignr $4,%xmm2,%xmm3,%xmm7 + xorl %r8d,%r13d + shrdl $9,%r14d,%r14d + xorl %r10d,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpaddd %xmm7,%xmm0,%xmm0 + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + vpsrld $3,%xmm4,%xmm7 + shrdl $11,%r14d,%r14d + xorl %r10d,%r12d + xorl %ebx,%r15d + vpslld $14,%xmm4,%xmm5 + shrdl $6,%r13d,%r13d + addl %r12d,%r11d + andl %r15d,%esi + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%esi + vpshufd $250,%xmm3,%xmm7 + addl %r11d,%edx + shrdl $2,%r14d,%r14d + addl %esi,%r11d + vpsrld $11,%xmm6,%xmm6 + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%r11d + movl %r8d,%r12d + xorl %edx,%r13d + vpslld $11,%xmm5,%xmm5 + shrdl $9,%r14d,%r14d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %r11d,%r14d + andl %edx,%r12d + vpxor %xmm8,%xmm9,%xmm9 + xorl %edx,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 4(%rsp),%r10d + movl %r11d,%esi + shrdl $11,%r14d,%r14d + vpxor %xmm5,%xmm4,%xmm4 + xorl %r9d,%r12d + xorl %eax,%esi + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + addl %r12d,%r10d + andl %esi,%r15d + xorl %r11d,%r14d + vpaddd %xmm4,%xmm0,%xmm0 + addl %r13d,%r10d + xorl %eax,%r15d + addl %r10d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + shrdl $2,%r14d,%r14d + addl %r15d,%r10d + movl %ecx,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + vpxor %xmm7,%xmm6,%xmm6 + movl %edx,%r12d + xorl %ecx,%r13d + shrdl $9,%r14d,%r14d + vpshufd $132,%xmm6,%xmm6 + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + vpsrldq $8,%xmm6,%xmm6 + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %ecx,%r13d + addl 8(%rsp),%r9d + vpaddd %xmm6,%xmm0,%xmm0 + movl %r10d,%r15d + shrdl $11,%r14d,%r14d + xorl %r8d,%r12d + vpshufd $80,%xmm0,%xmm7 + xorl %r11d,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%r9d + vpsrld $10,%xmm7,%xmm6 + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + vpsrlq $17,%xmm7,%xmm7 + xorl %r11d,%esi + addl %r9d,%ebx + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + vpsrlq $2,%xmm7,%xmm7 + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + vpxor %xmm7,%xmm6,%xmm6 + xorl %ebx,%r13d + shrdl $9,%r14d,%r14d + xorl %edx,%r12d + vpshufd $232,%xmm6,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vpslldq $8,%xmm6,%xmm6 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%esi + vpaddd %xmm6,%xmm0,%xmm0 + shrdl $11,%r14d,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + vpaddd 0(%rbp),%xmm0,%xmm6 + shrdl $6,%r13d,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + shrdl $2,%r14d,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,0(%rsp) + vpalignr $4,%xmm1,%xmm2,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + vpalignr $4,%xmm3,%xmm0,%xmm7 + xorl %eax,%r13d + shrdl $9,%r14d,%r14d + xorl %ecx,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpaddd %xmm7,%xmm1,%xmm1 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + vpsrld $3,%xmm4,%xmm7 + shrdl $11,%r14d,%r14d + xorl %ecx,%r12d + xorl %r9d,%r15d + vpslld $14,%xmm4,%xmm5 + shrdl $6,%r13d,%r13d + addl %r12d,%edx + andl %r15d,%esi + vpxor %xmm6,%xmm7,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%esi + vpshufd $250,%xmm0,%xmm7 + addl %edx,%r11d + shrdl $2,%r14d,%r14d + addl %esi,%edx + vpsrld $11,%xmm6,%xmm6 + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%edx + movl %eax,%r12d + xorl %r11d,%r13d + vpslld $11,%xmm5,%xmm5 + shrdl $9,%r14d,%r14d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %edx,%r14d + andl %r11d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r11d,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 20(%rsp),%ecx + movl %edx,%esi + shrdl $11,%r14d,%r14d + vpxor %xmm5,%xmm4,%xmm4 + xorl %ebx,%r12d + xorl %r8d,%esi + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + addl %r12d,%ecx + andl %esi,%r15d + xorl %edx,%r14d + vpaddd %xmm4,%xmm1,%xmm1 + addl %r13d,%ecx + xorl %r8d,%r15d + addl %ecx,%r10d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $2,%r14d,%r14d + addl %r15d,%ecx + movl %r10d,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + movl %r11d,%r12d + xorl %r10d,%r13d + shrdl $9,%r14d,%r14d + vpshufd $132,%xmm6,%xmm6 + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + vpsrldq $8,%xmm6,%xmm6 + andl %r10d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r10d,%r13d + addl 24(%rsp),%ebx + vpaddd %xmm6,%xmm1,%xmm1 + movl %ecx,%r15d + shrdl $11,%r14d,%r14d + xorl %eax,%r12d + vpshufd $80,%xmm1,%xmm7 + xorl %edx,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%ebx + vpsrld $10,%xmm7,%xmm6 + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + vpsrlq $17,%xmm7,%xmm7 + xorl %edx,%esi + addl %ebx,%r9d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + vpsrlq $2,%xmm7,%xmm7 + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + vpxor %xmm7,%xmm6,%xmm6 + xorl %r9d,%r13d + shrdl $9,%r14d,%r14d + xorl %r11d,%r12d + vpshufd $232,%xmm6,%xmm6 + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpslldq $8,%xmm6,%xmm6 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%esi + vpaddd %xmm6,%xmm1,%xmm1 + shrdl $11,%r14d,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + vpaddd 32(%rbp),%xmm1,%xmm6 + shrdl $6,%r13d,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + shrdl $2,%r14d,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,16(%rsp) + vpalignr $4,%xmm2,%xmm3,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + vpalignr $4,%xmm0,%xmm1,%xmm7 + xorl %r8d,%r13d + shrdl $9,%r14d,%r14d + xorl %r10d,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpaddd %xmm7,%xmm2,%xmm2 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + vpsrld $3,%xmm4,%xmm7 + shrdl $11,%r14d,%r14d + xorl %r10d,%r12d + xorl %ebx,%r15d + vpslld $14,%xmm4,%xmm5 + shrdl $6,%r13d,%r13d + addl %r12d,%r11d + andl %r15d,%esi + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%esi + vpshufd $250,%xmm1,%xmm7 + addl %r11d,%edx + shrdl $2,%r14d,%r14d + addl %esi,%r11d + vpsrld $11,%xmm6,%xmm6 + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%r11d + movl %r8d,%r12d + xorl %edx,%r13d + vpslld $11,%xmm5,%xmm5 + shrdl $9,%r14d,%r14d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %r11d,%r14d + andl %edx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %edx,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 36(%rsp),%r10d + movl %r11d,%esi + shrdl $11,%r14d,%r14d + vpxor %xmm5,%xmm4,%xmm4 + xorl %r9d,%r12d + xorl %eax,%esi + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + addl %r12d,%r10d + andl %esi,%r15d + xorl %r11d,%r14d + vpaddd %xmm4,%xmm2,%xmm2 + addl %r13d,%r10d + xorl %eax,%r15d + addl %r10d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + shrdl $2,%r14d,%r14d + addl %r15d,%r10d + movl %ecx,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + vpxor %xmm7,%xmm6,%xmm6 + movl %edx,%r12d + xorl %ecx,%r13d + shrdl $9,%r14d,%r14d + vpshufd $132,%xmm6,%xmm6 + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + vpsrldq $8,%xmm6,%xmm6 + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %ecx,%r13d + addl 40(%rsp),%r9d + vpaddd %xmm6,%xmm2,%xmm2 + movl %r10d,%r15d + shrdl $11,%r14d,%r14d + xorl %r8d,%r12d + vpshufd $80,%xmm2,%xmm7 + xorl %r11d,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%r9d + vpsrld $10,%xmm7,%xmm6 + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + vpsrlq $17,%xmm7,%xmm7 + xorl %r11d,%esi + addl %r9d,%ebx + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + vpsrlq $2,%xmm7,%xmm7 + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + vpxor %xmm7,%xmm6,%xmm6 + xorl %ebx,%r13d + shrdl $9,%r14d,%r14d + xorl %edx,%r12d + vpshufd $232,%xmm6,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vpslldq $8,%xmm6,%xmm6 + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%esi + vpaddd %xmm6,%xmm2,%xmm2 + shrdl $11,%r14d,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + vpaddd 64(%rbp),%xmm2,%xmm6 + shrdl $6,%r13d,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + shrdl $2,%r14d,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,32(%rsp) + vpalignr $4,%xmm3,%xmm0,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + vpalignr $4,%xmm1,%xmm2,%xmm7 + xorl %eax,%r13d + shrdl $9,%r14d,%r14d + xorl %ecx,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpaddd %xmm7,%xmm3,%xmm3 + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + vpsrld $3,%xmm4,%xmm7 + shrdl $11,%r14d,%r14d + xorl %ecx,%r12d + xorl %r9d,%r15d + vpslld $14,%xmm4,%xmm5 + shrdl $6,%r13d,%r13d + addl %r12d,%edx + andl %r15d,%esi + vpxor %xmm6,%xmm7,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%esi + vpshufd $250,%xmm2,%xmm7 + addl %edx,%r11d + shrdl $2,%r14d,%r14d + addl %esi,%edx + vpsrld $11,%xmm6,%xmm6 + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%edx + movl %eax,%r12d + xorl %r11d,%r13d + vpslld $11,%xmm5,%xmm5 + shrdl $9,%r14d,%r14d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %edx,%r14d + andl %r11d,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r11d,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 52(%rsp),%ecx + movl %edx,%esi + shrdl $11,%r14d,%r14d + vpxor %xmm5,%xmm4,%xmm4 + xorl %ebx,%r12d + xorl %r8d,%esi + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + addl %r12d,%ecx + andl %esi,%r15d + xorl %edx,%r14d + vpaddd %xmm4,%xmm3,%xmm3 + addl %r13d,%ecx + xorl %r8d,%r15d + addl %ecx,%r10d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $2,%r14d,%r14d + addl %r15d,%ecx + movl %r10d,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + movl %r11d,%r12d + xorl %r10d,%r13d + shrdl $9,%r14d,%r14d + vpshufd $132,%xmm6,%xmm6 + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + vpsrldq $8,%xmm6,%xmm6 + andl %r10d,%r12d + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r10d,%r13d + addl 56(%rsp),%ebx + vpaddd %xmm6,%xmm3,%xmm3 + movl %ecx,%r15d + shrdl $11,%r14d,%r14d + xorl %eax,%r12d + vpshufd $80,%xmm3,%xmm7 + xorl %edx,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%ebx + vpsrld $10,%xmm7,%xmm6 + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + vpsrlq $17,%xmm7,%xmm7 + xorl %edx,%esi + addl %ebx,%r9d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + vpsrlq $2,%xmm7,%xmm7 + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + vpxor %xmm7,%xmm6,%xmm6 + xorl %r9d,%r13d + shrdl $9,%r14d,%r14d + xorl %r11d,%r12d + vpshufd $232,%xmm6,%xmm6 + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpslldq $8,%xmm6,%xmm6 + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%esi + vpaddd %xmm6,%xmm3,%xmm3 + shrdl $11,%r14d,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + vpaddd 96(%rbp),%xmm3,%xmm6 + shrdl $6,%r13d,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + shrdl $2,%r14d,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,48(%rsp) + movq 64+0(%rsp),%r12 + vpand %xmm14,%xmm11,%xmm11 + movq 64+8(%rsp),%r15 + vpor %xmm11,%xmm8,%xmm8 + vmovdqu %xmm8,(%r15,%r12,1) + leaq 16(%r12),%r12 + cmpb $0,131(%rbp) + jne L$avx_00_47 + vmovdqu (%r12),%xmm9 + movq %r12,64+0(%rsp) + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + xorl %r8d,%r13d + shrdl $9,%r14d,%r14d + xorl %r10d,%r12d + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + shrdl $11,%r14d,%r14d + xorl %r10d,%r12d + xorl %ebx,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%r11d + andl %r15d,%esi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%esi + addl %r11d,%edx + shrdl $2,%r14d,%r14d + addl %esi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + xorl %edx,%r13d + shrdl $9,%r14d,%r14d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + vpxor %xmm8,%xmm9,%xmm9 + xorl %edx,%r13d + addl 4(%rsp),%r10d + movl %r11d,%esi + shrdl $11,%r14d,%r14d + xorl %r9d,%r12d + xorl %eax,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%r10d + andl %esi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + addl %r10d,%ecx + shrdl $2,%r14d,%r14d + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + movl %edx,%r12d + xorl %ecx,%r13d + shrdl $9,%r14d,%r14d + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %ecx,%r13d + addl 8(%rsp),%r9d + movl %r10d,%r15d + shrdl $11,%r14d,%r14d + xorl %r8d,%r12d + xorl %r11d,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%r9d + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%esi + addl %r9d,%ebx + shrdl $2,%r14d,%r14d + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + xorl %ebx,%r13d + shrdl $9,%r14d,%r14d + xorl %edx,%r12d + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%esi + shrdl $11,%r14d,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + shrdl $2,%r14d,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + xorl %eax,%r13d + shrdl $9,%r14d,%r14d + xorl %ecx,%r12d + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + shrdl $11,%r14d,%r14d + xorl %ecx,%r12d + xorl %r9d,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%edx + andl %r15d,%esi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%esi + addl %edx,%r11d + shrdl $2,%r14d,%r14d + addl %esi,%edx + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%edx + movl %eax,%r12d + xorl %r11d,%r13d + shrdl $9,%r14d,%r14d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r11d,%r13d + addl 20(%rsp),%ecx + movl %edx,%esi + shrdl $11,%r14d,%r14d + xorl %ebx,%r12d + xorl %r8d,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%ecx + andl %esi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + addl %ecx,%r10d + shrdl $2,%r14d,%r14d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + xorl %r10d,%r13d + shrdl $9,%r14d,%r14d + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r10d,%r13d + addl 24(%rsp),%ebx + movl %ecx,%r15d + shrdl $11,%r14d,%r14d + xorl %eax,%r12d + xorl %edx,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%ebx + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%esi + addl %ebx,%r9d + shrdl $2,%r14d,%r14d + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + xorl %r9d,%r13d + shrdl $9,%r14d,%r14d + xorl %r11d,%r12d + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%esi + shrdl $11,%r14d,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + shrdl $2,%r14d,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + xorl %r8d,%r13d + shrdl $9,%r14d,%r14d + xorl %r10d,%r12d + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + shrdl $11,%r14d,%r14d + xorl %r10d,%r12d + xorl %ebx,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%r11d + andl %r15d,%esi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%esi + addl %r11d,%edx + shrdl $2,%r14d,%r14d + addl %esi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + xorl %edx,%r13d + shrdl $9,%r14d,%r14d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %edx,%r13d + addl 36(%rsp),%r10d + movl %r11d,%esi + shrdl $11,%r14d,%r14d + xorl %r9d,%r12d + xorl %eax,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%r10d + andl %esi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + addl %r10d,%ecx + shrdl $2,%r14d,%r14d + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + movl %edx,%r12d + xorl %ecx,%r13d + shrdl $9,%r14d,%r14d + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %ecx,%r13d + addl 40(%rsp),%r9d + movl %r10d,%r15d + shrdl $11,%r14d,%r14d + xorl %r8d,%r12d + xorl %r11d,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%r9d + andl %r15d,%esi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%esi + addl %r9d,%ebx + shrdl $2,%r14d,%r14d + addl %esi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + xorl %ebx,%r13d + shrdl $9,%r14d,%r14d + xorl %edx,%r12d + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%esi + shrdl $11,%r14d,%r14d + xorl %edx,%r12d + xorl %r10d,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%r8d + andl %esi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + addl %r8d,%eax + shrdl $2,%r14d,%r14d + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + xorl %eax,%r13d + shrdl $9,%r14d,%r14d + xorl %ecx,%r12d + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + shrdl $11,%r14d,%r14d + xorl %ecx,%r12d + xorl %r9d,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%edx + andl %r15d,%esi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%esi + addl %edx,%r11d + shrdl $2,%r14d,%r14d + addl %esi,%edx + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%edx + movl %eax,%r12d + xorl %r11d,%r13d + shrdl $9,%r14d,%r14d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r11d,%r13d + addl 52(%rsp),%ecx + movl %edx,%esi + shrdl $11,%r14d,%r14d + xorl %ebx,%r12d + xorl %r8d,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%ecx + andl %esi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + addl %ecx,%r10d + shrdl $2,%r14d,%r14d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + xorl %r10d,%r13d + shrdl $9,%r14d,%r14d + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r10d,%r13d + addl 56(%rsp),%ebx + movl %ecx,%r15d + shrdl $11,%r14d,%r14d + xorl %eax,%r12d + xorl %edx,%r15d + shrdl $6,%r13d,%r13d + addl %r12d,%ebx + andl %r15d,%esi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%esi + addl %ebx,%r9d + shrdl $2,%r14d,%r14d + addl %esi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + xorl %r9d,%r13d + shrdl $9,%r14d,%r14d + xorl %r11d,%r12d + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%esi + shrdl $11,%r14d,%r14d + xorl %r11d,%r12d + xorl %ecx,%esi + shrdl $6,%r13d,%r13d + addl %r12d,%eax + andl %esi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + addl %eax,%r8d + shrdl $2,%r14d,%r14d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + movq 64+0(%rsp),%r12 + movq 64+8(%rsp),%r13 + movq 64+40(%rsp),%r15 + movq 64+48(%rsp),%rsi + + vpand %xmm14,%xmm11,%xmm11 + movl %r14d,%eax + vpor %xmm11,%xmm8,%xmm8 + vmovdqu %xmm8,(%r12,%r13,1) + leaq 16(%r12),%r12 + + addl 0(%r15),%eax + addl 4(%r15),%ebx + addl 8(%r15),%ecx + addl 12(%r15),%edx + addl 16(%r15),%r8d + addl 20(%r15),%r9d + addl 24(%r15),%r10d + addl 28(%r15),%r11d + + cmpq 64+16(%rsp),%r12 + + movl %eax,0(%r15) + movl %ebx,4(%r15) + movl %ecx,8(%r15) + movl %edx,12(%r15) + movl %r8d,16(%r15) + movl %r9d,20(%r15) + movl %r10d,24(%r15) + movl %r11d,28(%r15) + jb L$loop_avx + + movq 64+32(%rsp),%r8 + movq 120(%rsp),%rsi + + vmovdqu %xmm8,(%r8) + vzeroall + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue_avx: + .byte 0xf3,0xc3 + + + +.p2align 6 +aesni_cbc_sha256_enc_avx2: + +L$avx2_shortcut: + movq 8(%rsp),%r10 + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $576,%rsp + andq $-1024,%rsp + addq $448,%rsp + + shlq $6,%rdx + subq %rdi,%rsi + subq %rdi,%r10 + addq %rdi,%rdx + + + + movq %rdx,64+16(%rsp) + + movq %r8,64+32(%rsp) + movq %r9,64+40(%rsp) + movq %r10,64+48(%rsp) + movq %rax,120(%rsp) + +L$prologue_avx2: + vzeroall + + movq %rdi,%r13 + vpinsrq $1,%rsi,%xmm15,%xmm15 + leaq 128(%rcx),%rdi + leaq K256+544(%rip),%r12 + movl 240-128(%rdi),%r14d + movq %r9,%r15 + movq %r10,%rsi + vmovdqu (%r8),%xmm8 + leaq -9(%r14),%r14 + + vmovdqa 0(%r12,%r14,8),%xmm14 + vmovdqa 16(%r12,%r14,8),%xmm13 + vmovdqa 32(%r12,%r14,8),%xmm12 + + subq $-64,%r13 + movl 0(%r15),%eax + leaq (%rsi,%r13,1),%r12 + movl 4(%r15),%ebx + cmpq %rdx,%r13 + movl 8(%r15),%ecx + cmoveq %rsp,%r12 + movl 12(%r15),%edx + movl 16(%r15),%r8d + movl 20(%r15),%r9d + movl 24(%r15),%r10d + movl 28(%r15),%r11d + vmovdqu 0-128(%rdi),%xmm10 + jmp L$oop_avx2 +.p2align 4 +L$oop_avx2: + vmovdqa K256+512(%rip),%ymm7 + vmovdqu -64+0(%rsi,%r13,1),%xmm0 + vmovdqu -64+16(%rsi,%r13,1),%xmm1 + vmovdqu -64+32(%rsi,%r13,1),%xmm2 + vmovdqu -64+48(%rsi,%r13,1),%xmm3 + + vinserti128 $1,(%r12),%ymm0,%ymm0 + vinserti128 $1,16(%r12),%ymm1,%ymm1 + vpshufb %ymm7,%ymm0,%ymm0 + vinserti128 $1,32(%r12),%ymm2,%ymm2 + vpshufb %ymm7,%ymm1,%ymm1 + vinserti128 $1,48(%r12),%ymm3,%ymm3 + + leaq K256(%rip),%rbp + vpshufb %ymm7,%ymm2,%ymm2 + leaq -64(%r13),%r13 + vpaddd 0(%rbp),%ymm0,%ymm4 + vpshufb %ymm7,%ymm3,%ymm3 + vpaddd 32(%rbp),%ymm1,%ymm5 + vpaddd 64(%rbp),%ymm2,%ymm6 + vpaddd 96(%rbp),%ymm3,%ymm7 + vmovdqa %ymm4,0(%rsp) + xorl %r14d,%r14d + vmovdqa %ymm5,32(%rsp) + + movq 120(%rsp),%rsi + + leaq -64(%rsp),%rsp + + + + movq %rsi,-8(%rsp) + + movl %ebx,%esi + vmovdqa %ymm6,0(%rsp) + xorl %ecx,%esi + vmovdqa %ymm7,32(%rsp) + movl %r9d,%r12d + subq $-32*4,%rbp + jmp L$avx2_00_47 + +.p2align 4 +L$avx2_00_47: + vmovdqu (%r13),%xmm9 + vpinsrq $0,%r13,%xmm15,%xmm15 + leaq -64(%rsp),%rsp + + + pushq 64-8(%rsp) + + leaq 8(%rsp),%rsp + + vpalignr $4,%ymm0,%ymm1,%ymm4 + addl 0+128(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + vpalignr $4,%ymm2,%ymm3,%ymm7 + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + vpsrld $7,%ymm4,%ymm6 + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + vpaddd %ymm7,%ymm0,%ymm0 + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%esi + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ebx,%esi + vpshufd $250,%ymm3,%ymm7 + xorl %r13d,%r14d + leal (%r11,%rsi,1),%r11d + movl %r8d,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 4+128(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%edx,%esi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + vpslld $11,%ymm5,%ymm5 + andnl %r9d,%edx,%r12d + xorl %esi,%r13d + rorxl $6,%edx,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%esi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%esi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + vpsrlq $17,%ymm7,%ymm7 + andl %esi,%r15d + vpxor %xmm8,%xmm9,%xmm9 + xorl %r12d,%r14d + xorl %eax,%r15d + vpaddd %ymm4,%ymm0,%ymm0 + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 8+128(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + vpxor %ymm7,%ymm6,%ymm6 + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + vpshufd $132,%ymm6,%ymm6 + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + vpsrldq $8,%ymm6,%ymm6 + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + vpaddd %ymm6,%ymm0,%ymm0 + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + vpshufd $80,%ymm0,%ymm7 + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r11d,%esi + vpsrld $10,%ymm7,%ymm6 + xorl %r13d,%r14d + leal (%r9,%rsi,1),%r9d + movl %ecx,%r12d + vpsrlq $17,%ymm7,%ymm7 + addl 12+128(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + vpxor %ymm7,%ymm6,%ymm6 + rorxl $11,%ebx,%esi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + vpsrlq $2,%ymm7,%ymm7 + andnl %edx,%ebx,%r12d + xorl %esi,%r13d + rorxl $6,%ebx,%r14d + vpxor %ymm7,%ymm6,%ymm6 + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%esi + vpshufd $232,%ymm6,%ymm6 + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%esi + vpslldq $8,%ymm6,%ymm6 + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + vpaddd %ymm6,%ymm0,%ymm0 + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r10d,%r15d + vpaddd 0(%rbp),%ymm0,%ymm6 + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + vmovdqa %ymm6,0(%rsp) + vpalignr $4,%ymm1,%ymm2,%ymm4 + addl 32+128(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + vpalignr $4,%ymm3,%ymm0,%ymm7 + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + vpsrld $7,%ymm4,%ymm6 + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + vpaddd %ymm7,%ymm1,%ymm1 + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r9d,%esi + vpshufd $250,%ymm0,%ymm7 + xorl %r13d,%r14d + leal (%rdx,%rsi,1),%edx + movl %eax,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 36+128(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%r11d,%esi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + vpslld $11,%ymm5,%ymm5 + andnl %ebx,%r11d,%r12d + xorl %esi,%r13d + rorxl $6,%r11d,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%esi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%esi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + vpsrlq $17,%ymm7,%ymm7 + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r8d,%r15d + vpaddd %ymm4,%ymm1,%ymm1 + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 40+128(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + vpxor %ymm7,%ymm6,%ymm6 + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + vpshufd $132,%ymm6,%ymm6 + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + vpsrldq $8,%ymm6,%ymm6 + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + vpaddd %ymm6,%ymm1,%ymm1 + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + vpshufd $80,%ymm1,%ymm7 + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %edx,%esi + vpsrld $10,%ymm7,%ymm6 + xorl %r13d,%r14d + leal (%rbx,%rsi,1),%ebx + movl %r10d,%r12d + vpsrlq $17,%ymm7,%ymm7 + addl 44+128(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + vpxor %ymm7,%ymm6,%ymm6 + rorxl $11,%r9d,%esi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + vpsrlq $2,%ymm7,%ymm7 + andnl %r11d,%r9d,%r12d + xorl %esi,%r13d + rorxl $6,%r9d,%r14d + vpxor %ymm7,%ymm6,%ymm6 + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%esi + vpshufd $232,%ymm6,%ymm6 + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%esi + vpslldq $8,%ymm6,%ymm6 + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + vpaddd %ymm6,%ymm1,%ymm1 + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ecx,%r15d + vpaddd 32(%rbp),%ymm1,%ymm6 + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + vmovdqa %ymm6,32(%rsp) + leaq -64(%rsp),%rsp + + + pushq 64-8(%rsp) + + leaq 8(%rsp),%rsp + + vpalignr $4,%ymm2,%ymm3,%ymm4 + addl 0+128(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + vpalignr $4,%ymm0,%ymm1,%ymm7 + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + vpsrld $7,%ymm4,%ymm6 + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + vpaddd %ymm7,%ymm2,%ymm2 + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ebx,%esi + vpshufd $250,%ymm1,%ymm7 + xorl %r13d,%r14d + leal (%r11,%rsi,1),%r11d + movl %r8d,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 4+128(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%edx,%esi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + vpslld $11,%ymm5,%ymm5 + andnl %r9d,%edx,%r12d + xorl %esi,%r13d + rorxl $6,%edx,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%esi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%esi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + vpsrlq $17,%ymm7,%ymm7 + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %eax,%r15d + vpaddd %ymm4,%ymm2,%ymm2 + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 8+128(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + vpxor %ymm7,%ymm6,%ymm6 + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + vpshufd $132,%ymm6,%ymm6 + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + vpsrldq $8,%ymm6,%ymm6 + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + vpaddd %ymm6,%ymm2,%ymm2 + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + vpshufd $80,%ymm2,%ymm7 + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r11d,%esi + vpsrld $10,%ymm7,%ymm6 + xorl %r13d,%r14d + leal (%r9,%rsi,1),%r9d + movl %ecx,%r12d + vpsrlq $17,%ymm7,%ymm7 + addl 12+128(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + vpxor %ymm7,%ymm6,%ymm6 + rorxl $11,%ebx,%esi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + vpsrlq $2,%ymm7,%ymm7 + andnl %edx,%ebx,%r12d + xorl %esi,%r13d + rorxl $6,%ebx,%r14d + vpxor %ymm7,%ymm6,%ymm6 + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%esi + vpshufd $232,%ymm6,%ymm6 + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%esi + vpslldq $8,%ymm6,%ymm6 + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + vpaddd %ymm6,%ymm2,%ymm2 + andl %esi,%r15d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r10d,%r15d + vpaddd 64(%rbp),%ymm2,%ymm6 + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + vmovdqa %ymm6,0(%rsp) + vpalignr $4,%ymm3,%ymm0,%ymm4 + addl 32+128(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + vpalignr $4,%ymm1,%ymm2,%ymm7 + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + vpsrld $7,%ymm4,%ymm6 + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + vpaddd %ymm7,%ymm3,%ymm3 + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%esi + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r9d,%esi + vpshufd $250,%ymm2,%ymm7 + xorl %r13d,%r14d + leal (%rdx,%rsi,1),%edx + movl %eax,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 36+128(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%r11d,%esi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + vpslld $11,%ymm5,%ymm5 + andnl %ebx,%r11d,%r12d + xorl %esi,%r13d + rorxl $6,%r11d,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%esi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%esi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + vpsrlq $17,%ymm7,%ymm7 + andl %esi,%r15d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r8d,%r15d + vpaddd %ymm4,%ymm3,%ymm3 + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 40+128(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + vpxor %ymm7,%ymm6,%ymm6 + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + vpshufd $132,%ymm6,%ymm6 + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + vpsrldq $8,%ymm6,%ymm6 + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + vpaddd %ymm6,%ymm3,%ymm3 + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + vpshufd $80,%ymm3,%ymm7 + andl %r15d,%esi + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %edx,%esi + vpsrld $10,%ymm7,%ymm6 + xorl %r13d,%r14d + leal (%rbx,%rsi,1),%ebx + movl %r10d,%r12d + vpsrlq $17,%ymm7,%ymm7 + addl 44+128(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + vpxor %ymm7,%ymm6,%ymm6 + rorxl $11,%r9d,%esi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + vpsrlq $2,%ymm7,%ymm7 + andnl %r11d,%r9d,%r12d + xorl %esi,%r13d + rorxl $6,%r9d,%r14d + vpxor %ymm7,%ymm6,%ymm6 + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%esi + vpshufd $232,%ymm6,%ymm6 + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%esi + vpslldq $8,%ymm6,%ymm6 + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + vpaddd %ymm6,%ymm3,%ymm3 + andl %esi,%r15d + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ecx,%r15d + vpaddd 96(%rbp),%ymm3,%ymm6 + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + vmovdqa %ymm6,32(%rsp) + vmovq %xmm15,%r13 + vpextrq $1,%xmm15,%r15 + vpand %xmm14,%xmm11,%xmm11 + vpor %xmm11,%xmm8,%xmm8 + vmovdqu %xmm8,(%r15,%r13,1) + leaq 16(%r13),%r13 + leaq 128(%rbp),%rbp + cmpb $0,3(%rbp) + jne L$avx2_00_47 + vmovdqu (%r13),%xmm9 + vpinsrq $0,%r13,%xmm15,%xmm15 + addl 0+64(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%esi + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ebx,%esi + xorl %r13d,%r14d + leal (%r11,%rsi,1),%r11d + movl %r8d,%r12d + addl 4+64(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%esi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %esi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%esi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%esi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %esi,%r15d + vpxor %xmm8,%xmm9,%xmm9 + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8+64(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r11d,%esi + xorl %r13d,%r14d + leal (%r9,%rsi,1),%r9d + movl %ecx,%r12d + addl 12+64(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%esi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %esi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%esi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%esi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32+64(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r9d,%esi + xorl %r13d,%r14d + leal (%rdx,%rsi,1),%edx + movl %eax,%r12d + addl 36+64(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%esi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %esi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%esi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%esi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40+64(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %edx,%esi + xorl %r13d,%r14d + leal (%rbx,%rsi,1),%ebx + movl %r10d,%r12d + addl 44+64(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%esi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %esi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%esi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%esi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + addl 0(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ebx,%esi + xorl %r13d,%r14d + leal (%r11,%rsi,1),%r11d + movl %r8d,%r12d + addl 4(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%esi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %esi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%esi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%esi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r11d,%esi + xorl %r13d,%r14d + leal (%r9,%rsi,1),%r9d + movl %ecx,%r12d + addl 12(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%esi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %esi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%esi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%esi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %esi,%r15d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%esi + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r9d,%esi + xorl %r13d,%r14d + leal (%rdx,%rsi,1),%edx + movl %eax,%r12d + addl 36(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%esi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %esi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%esi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%esi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %esi,%r15d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%esi + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %edx,%esi + xorl %r13d,%r14d + leal (%rbx,%rsi,1),%ebx + movl %r10d,%r12d + addl 44(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%esi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %esi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%esi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%esi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %esi,%r15d + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + vpextrq $1,%xmm15,%r12 + vmovq %xmm15,%r13 + movq 552(%rsp),%r15 + addl %r14d,%eax + leaq 448(%rsp),%rbp + + vpand %xmm14,%xmm11,%xmm11 + vpor %xmm11,%xmm8,%xmm8 + vmovdqu %xmm8,(%r12,%r13,1) + leaq 16(%r13),%r13 + + addl 0(%r15),%eax + addl 4(%r15),%ebx + addl 8(%r15),%ecx + addl 12(%r15),%edx + addl 16(%r15),%r8d + addl 20(%r15),%r9d + addl 24(%r15),%r10d + addl 28(%r15),%r11d + + movl %eax,0(%r15) + movl %ebx,4(%r15) + movl %ecx,8(%r15) + movl %edx,12(%r15) + movl %r8d,16(%r15) + movl %r9d,20(%r15) + movl %r10d,24(%r15) + movl %r11d,28(%r15) + + cmpq 80(%rbp),%r13 + je L$done_avx2 + + xorl %r14d,%r14d + movl %ebx,%esi + movl %r9d,%r12d + xorl %ecx,%esi + jmp L$ower_avx2 +.p2align 4 +L$ower_avx2: + vmovdqu (%r13),%xmm9 + vpinsrq $0,%r13,%xmm15,%xmm15 + addl 0+16(%rbp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%esi + vpxor %xmm10,%xmm9,%xmm9 + vmovdqu 16-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ebx,%esi + xorl %r13d,%r14d + leal (%r11,%rsi,1),%r11d + movl %r8d,%r12d + addl 4+16(%rbp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%esi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %esi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%esi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%esi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %esi,%r15d + vpxor %xmm8,%xmm9,%xmm9 + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8+16(%rbp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 32-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r11d,%esi + xorl %r13d,%r14d + leal (%r9,%rsi,1),%r9d + movl %ecx,%r12d + addl 12+16(%rbp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%esi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %esi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%esi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%esi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 48-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32+16(%rbp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r9d,%esi + xorl %r13d,%r14d + leal (%rdx,%rsi,1),%edx + movl %eax,%r12d + addl 36+16(%rbp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%esi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %esi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%esi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%esi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 80-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40+16(%rbp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 96-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %edx,%esi + xorl %r13d,%r14d + leal (%rbx,%rsi,1),%ebx + movl %r10d,%r12d + addl 44+16(%rbp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%esi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %esi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%esi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%esi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 112-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + leaq -64(%rbp),%rbp + addl 0+16(%rbp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 128-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ebx,%esi + xorl %r13d,%r14d + leal (%r11,%rsi,1),%r11d + movl %r8d,%r12d + addl 4+16(%rbp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%esi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %esi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%esi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%esi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %esi,%r15d + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 144-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8+16(%rbp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%esi + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r11d,%esi + xorl %r13d,%r14d + leal (%r9,%rsi,1),%r9d + movl %ecx,%r12d + addl 12+16(%rbp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%esi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %esi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%esi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%esi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %esi,%r15d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 176-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32+16(%rbp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%esi + vpand %xmm12,%xmm11,%xmm8 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 192-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r9d,%esi + xorl %r13d,%r14d + leal (%rdx,%rsi,1),%edx + movl %eax,%r12d + addl 36+16(%rbp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%esi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %esi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%esi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%esi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %esi,%r15d + vaesenclast %xmm10,%xmm9,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 208-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40+16(%rbp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%esi + vpand %xmm13,%xmm11,%xmm11 + vaesenc %xmm10,%xmm9,%xmm9 + vmovdqu 224-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %edx,%esi + xorl %r13d,%r14d + leal (%rbx,%rsi,1),%ebx + movl %r10d,%r12d + addl 44+16(%rbp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%esi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %esi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%esi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%esi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %esi,%r15d + vpor %xmm11,%xmm8,%xmm8 + vaesenclast %xmm10,%xmm9,%xmm11 + vmovdqu 0-128(%rdi),%xmm10 + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + vmovq %xmm15,%r13 + vpextrq $1,%xmm15,%r15 + vpand %xmm14,%xmm11,%xmm11 + vpor %xmm11,%xmm8,%xmm8 + leaq -64(%rbp),%rbp + vmovdqu %xmm8,(%r15,%r13,1) + leaq 16(%r13),%r13 + cmpq %rsp,%rbp + jae L$ower_avx2 + + movq 552(%rsp),%r15 + leaq 64(%r13),%r13 + movq 560(%rsp),%rsi + addl %r14d,%eax + leaq 448(%rsp),%rsp + + addl 0(%r15),%eax + addl 4(%r15),%ebx + addl 8(%r15),%ecx + addl 12(%r15),%edx + addl 16(%r15),%r8d + addl 20(%r15),%r9d + addl 24(%r15),%r10d + leaq (%rsi,%r13,1),%r12 + addl 28(%r15),%r11d + + cmpq 64+16(%rsp),%r13 + + movl %eax,0(%r15) + cmoveq %rsp,%r12 + movl %ebx,4(%r15) + movl %ecx,8(%r15) + movl %edx,12(%r15) + movl %r8d,16(%r15) + movl %r9d,20(%r15) + movl %r10d,24(%r15) + movl %r11d,28(%r15) + + jbe L$oop_avx2 + leaq (%rsp),%rbp + + + + +L$done_avx2: + movq 64+32(%rbp),%r8 + movq 64+56(%rbp),%rsi + + vmovdqu %xmm8,(%r8) + vzeroall + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue_avx2: + .byte 0xf3,0xc3 + + + +.p2align 5 +aesni_cbc_sha256_enc_shaext: + + movq 8(%rsp),%r10 + leaq K256+128(%rip),%rax + movdqu (%r9),%xmm1 + movdqu 16(%r9),%xmm2 + movdqa 512-128(%rax),%xmm3 + + movl 240(%rcx),%r11d + subq %rdi,%rsi + movups (%rcx),%xmm15 + movups (%r8),%xmm6 + movups 16(%rcx),%xmm4 + leaq 112(%rcx),%rcx + + pshufd $0x1b,%xmm1,%xmm0 + pshufd $0xb1,%xmm1,%xmm1 + pshufd $0x1b,%xmm2,%xmm2 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,202,8 + punpcklqdq %xmm0,%xmm2 + + jmp L$oop_shaext + +.p2align 4 +L$oop_shaext: + movdqu (%r10),%xmm10 + movdqu 16(%r10),%xmm11 + movdqu 32(%r10),%xmm12 +.byte 102,68,15,56,0,211 + movdqu 48(%r10),%xmm13 + + movdqa 0-128(%rax),%xmm0 + paddd %xmm10,%xmm0 +.byte 102,68,15,56,0,219 + movdqa %xmm2,%xmm9 + movdqa %xmm1,%xmm8 + movups 0(%rdi),%xmm14 + xorps %xmm15,%xmm14 + xorps %xmm14,%xmm6 + movups -80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movups -64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,202 + + movdqa 32-128(%rax),%xmm0 + paddd %xmm11,%xmm0 +.byte 102,68,15,56,0,227 + leaq 64(%r10),%r10 + movups -48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movups -32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,202 + + movdqa 64-128(%rax),%xmm0 + paddd %xmm12,%xmm0 +.byte 102,68,15,56,0,235 +.byte 69,15,56,204,211 + movups -16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm13,%xmm3 +.byte 102,65,15,58,15,220,4 + paddd %xmm3,%xmm10 + movups 0(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,202 + + movdqa 96-128(%rax),%xmm0 + paddd %xmm13,%xmm0 +.byte 69,15,56,205,213 +.byte 69,15,56,204,220 + movups 16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movups 32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movdqa %xmm10,%xmm3 +.byte 102,65,15,58,15,221,4 + paddd %xmm3,%xmm11 +.byte 15,56,203,202 + movdqa 128-128(%rax),%xmm0 + paddd %xmm10,%xmm0 +.byte 69,15,56,205,218 +.byte 69,15,56,204,229 + movups 48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm11,%xmm3 +.byte 102,65,15,58,15,218,4 + paddd %xmm3,%xmm12 + cmpl $11,%r11d + jb L$aesenclast1 + movups 64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + je L$aesenclast1 + movups 96(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 112(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +L$aesenclast1: + aesenclast %xmm5,%xmm6 + movups 16-112(%rcx),%xmm4 + nop +.byte 15,56,203,202 + movups 16(%rdi),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm6,0(%rsi,%rdi,1) + xorps %xmm14,%xmm6 + movups -80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + movdqa 160-128(%rax),%xmm0 + paddd %xmm11,%xmm0 +.byte 69,15,56,205,227 +.byte 69,15,56,204,234 + movups -64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm12,%xmm3 +.byte 102,65,15,58,15,219,4 + paddd %xmm3,%xmm13 + movups -48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 192-128(%rax),%xmm0 + paddd %xmm12,%xmm0 +.byte 69,15,56,205,236 +.byte 69,15,56,204,211 + movups -32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm13,%xmm3 +.byte 102,65,15,58,15,220,4 + paddd %xmm3,%xmm10 + movups -16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 224-128(%rax),%xmm0 + paddd %xmm13,%xmm0 +.byte 69,15,56,205,213 +.byte 69,15,56,204,220 + movups 0(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm10,%xmm3 +.byte 102,65,15,58,15,221,4 + paddd %xmm3,%xmm11 + movups 16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 256-128(%rax),%xmm0 + paddd %xmm10,%xmm0 +.byte 69,15,56,205,218 +.byte 69,15,56,204,229 + movups 32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm11,%xmm3 +.byte 102,65,15,58,15,218,4 + paddd %xmm3,%xmm12 + movups 48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + cmpl $11,%r11d + jb L$aesenclast2 + movups 64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + je L$aesenclast2 + movups 96(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 112(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +L$aesenclast2: + aesenclast %xmm5,%xmm6 + movups 16-112(%rcx),%xmm4 + nop +.byte 15,56,203,202 + movups 32(%rdi),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm6,16(%rsi,%rdi,1) + xorps %xmm14,%xmm6 + movups -80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + movdqa 288-128(%rax),%xmm0 + paddd %xmm11,%xmm0 +.byte 69,15,56,205,227 +.byte 69,15,56,204,234 + movups -64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm12,%xmm3 +.byte 102,65,15,58,15,219,4 + paddd %xmm3,%xmm13 + movups -48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 320-128(%rax),%xmm0 + paddd %xmm12,%xmm0 +.byte 69,15,56,205,236 +.byte 69,15,56,204,211 + movups -32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm13,%xmm3 +.byte 102,65,15,58,15,220,4 + paddd %xmm3,%xmm10 + movups -16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 352-128(%rax),%xmm0 + paddd %xmm13,%xmm0 +.byte 69,15,56,205,213 +.byte 69,15,56,204,220 + movups 0(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm10,%xmm3 +.byte 102,65,15,58,15,221,4 + paddd %xmm3,%xmm11 + movups 16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 384-128(%rax),%xmm0 + paddd %xmm10,%xmm0 +.byte 69,15,56,205,218 +.byte 69,15,56,204,229 + movups 32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm11,%xmm3 +.byte 102,65,15,58,15,218,4 + paddd %xmm3,%xmm12 + movups 48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + movdqa 416-128(%rax),%xmm0 + paddd %xmm11,%xmm0 +.byte 69,15,56,205,227 +.byte 69,15,56,204,234 + cmpl $11,%r11d + jb L$aesenclast3 + movups 64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + je L$aesenclast3 + movups 96(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 112(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +L$aesenclast3: + aesenclast %xmm5,%xmm6 + movups 16-112(%rcx),%xmm4 + nop +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm12,%xmm3 +.byte 102,65,15,58,15,219,4 + paddd %xmm3,%xmm13 + movups 48(%rdi),%xmm14 + xorps %xmm15,%xmm14 + movups %xmm6,32(%rsi,%rdi,1) + xorps %xmm14,%xmm6 + movups -80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + movups -64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,202 + + movdqa 448-128(%rax),%xmm0 + paddd %xmm12,%xmm0 +.byte 69,15,56,205,236 + movdqa %xmm7,%xmm3 + movups -48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movups -32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,202 + + movdqa 480-128(%rax),%xmm0 + paddd %xmm13,%xmm0 + movups -16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + movups 0(%rcx),%xmm4 + aesenc %xmm5,%xmm6 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movups 16(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +.byte 15,56,203,202 + + movups 32(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 48(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + cmpl $11,%r11d + jb L$aesenclast4 + movups 64(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 80(%rcx),%xmm5 + aesenc %xmm4,%xmm6 + je L$aesenclast4 + movups 96(%rcx),%xmm4 + aesenc %xmm5,%xmm6 + movups 112(%rcx),%xmm5 + aesenc %xmm4,%xmm6 +L$aesenclast4: + aesenclast %xmm5,%xmm6 + movups 16-112(%rcx),%xmm4 + nop + + paddd %xmm9,%xmm2 + paddd %xmm8,%xmm1 + + decq %rdx + movups %xmm6,48(%rsi,%rdi,1) + leaq 64(%rdi),%rdi + jnz L$oop_shaext + + pshufd $0xb1,%xmm2,%xmm2 + pshufd $0x1b,%xmm1,%xmm3 + pshufd $0xb1,%xmm1,%xmm1 + punpckhqdq %xmm2,%xmm1 +.byte 102,15,58,15,211,8 + + movups %xmm6,(%r8) + movdqu %xmm1,(%r9) + movdqu %xmm2,16(%r9) + .byte 0xf3,0xc3 + + diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-x86_64.s new file mode 100644 index 0000000..924900d --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/aes/aesni-x86_64.s @@ -0,0 +1,4464 @@ +.text + +.globl _aesni_encrypt + +.p2align 4 +_aesni_encrypt: + + movups (%rdi),%xmm2 + movl 240(%rdx),%eax + movups (%rdx),%xmm0 + movups 16(%rdx),%xmm1 + leaq 32(%rdx),%rdx + xorps %xmm0,%xmm2 +L$oop_enc1_1: +.byte 102,15,56,220,209 + decl %eax + movups (%rdx),%xmm1 + leaq 16(%rdx),%rdx + jnz L$oop_enc1_1 +.byte 102,15,56,221,209 + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + .byte 0xf3,0xc3 + + + +.globl _aesni_decrypt + +.p2align 4 +_aesni_decrypt: + + movups (%rdi),%xmm2 + movl 240(%rdx),%eax + movups (%rdx),%xmm0 + movups 16(%rdx),%xmm1 + leaq 32(%rdx),%rdx + xorps %xmm0,%xmm2 +L$oop_dec1_2: +.byte 102,15,56,222,209 + decl %eax + movups (%rdx),%xmm1 + leaq 16(%rdx),%rdx + jnz L$oop_dec1_2 +.byte 102,15,56,223,209 + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + .byte 0xf3,0xc3 + + + +.p2align 4 +_aesni_encrypt2: + + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + movups 32(%rcx),%xmm0 + leaq 32(%rcx,%rax,1),%rcx + negq %rax + addq $16,%rax + +L$enc_loop2: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$enc_loop2 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 + .byte 0xf3,0xc3 + + + +.p2align 4 +_aesni_decrypt2: + + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + movups 32(%rcx),%xmm0 + leaq 32(%rcx,%rax,1),%rcx + negq %rax + addq $16,%rax + +L$dec_loop2: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$dec_loop2 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,223,208 +.byte 102,15,56,223,216 + .byte 0xf3,0xc3 + + + +.p2align 4 +_aesni_encrypt3: + + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + xorps %xmm0,%xmm4 + movups 32(%rcx),%xmm0 + leaq 32(%rcx,%rax,1),%rcx + negq %rax + addq $16,%rax + +L$enc_loop3: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$enc_loop3 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 +.byte 102,15,56,221,224 + .byte 0xf3,0xc3 + + + +.p2align 4 +_aesni_decrypt3: + + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + xorps %xmm0,%xmm4 + movups 32(%rcx),%xmm0 + leaq 32(%rcx,%rax,1),%rcx + negq %rax + addq $16,%rax + +L$dec_loop3: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$dec_loop3 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,223,208 +.byte 102,15,56,223,216 +.byte 102,15,56,223,224 + .byte 0xf3,0xc3 + + + +.p2align 4 +_aesni_encrypt4: + + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + xorps %xmm0,%xmm4 + xorps %xmm0,%xmm5 + movups 32(%rcx),%xmm0 + leaq 32(%rcx,%rax,1),%rcx + negq %rax +.byte 0x0f,0x1f,0x00 + addq $16,%rax + +L$enc_loop4: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$enc_loop4 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 +.byte 102,15,56,221,224 +.byte 102,15,56,221,232 + .byte 0xf3,0xc3 + + + +.p2align 4 +_aesni_decrypt4: + + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + xorps %xmm0,%xmm4 + xorps %xmm0,%xmm5 + movups 32(%rcx),%xmm0 + leaq 32(%rcx,%rax,1),%rcx + negq %rax +.byte 0x0f,0x1f,0x00 + addq $16,%rax + +L$dec_loop4: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$dec_loop4 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,223,208 +.byte 102,15,56,223,216 +.byte 102,15,56,223,224 +.byte 102,15,56,223,232 + .byte 0xf3,0xc3 + + + +.p2align 4 +_aesni_encrypt6: + + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + pxor %xmm0,%xmm3 + pxor %xmm0,%xmm4 +.byte 102,15,56,220,209 + leaq 32(%rcx,%rax,1),%rcx + negq %rax +.byte 102,15,56,220,217 + pxor %xmm0,%xmm5 + pxor %xmm0,%xmm6 +.byte 102,15,56,220,225 + pxor %xmm0,%xmm7 + movups (%rcx,%rax,1),%xmm0 + addq $16,%rax + jmp L$enc_loop6_enter +.p2align 4 +L$enc_loop6: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +L$enc_loop6_enter: +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$enc_loop6 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 +.byte 102,15,56,221,224 +.byte 102,15,56,221,232 +.byte 102,15,56,221,240 +.byte 102,15,56,221,248 + .byte 0xf3,0xc3 + + + +.p2align 4 +_aesni_decrypt6: + + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + pxor %xmm0,%xmm3 + pxor %xmm0,%xmm4 +.byte 102,15,56,222,209 + leaq 32(%rcx,%rax,1),%rcx + negq %rax +.byte 102,15,56,222,217 + pxor %xmm0,%xmm5 + pxor %xmm0,%xmm6 +.byte 102,15,56,222,225 + pxor %xmm0,%xmm7 + movups (%rcx,%rax,1),%xmm0 + addq $16,%rax + jmp L$dec_loop6_enter +.p2align 4 +L$dec_loop6: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +L$dec_loop6_enter: +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$dec_loop6 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,15,56,223,208 +.byte 102,15,56,223,216 +.byte 102,15,56,223,224 +.byte 102,15,56,223,232 +.byte 102,15,56,223,240 +.byte 102,15,56,223,248 + .byte 0xf3,0xc3 + + + +.p2align 4 +_aesni_encrypt8: + + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + pxor %xmm0,%xmm4 + pxor %xmm0,%xmm5 + pxor %xmm0,%xmm6 + leaq 32(%rcx,%rax,1),%rcx + negq %rax +.byte 102,15,56,220,209 + pxor %xmm0,%xmm7 + pxor %xmm0,%xmm8 +.byte 102,15,56,220,217 + pxor %xmm0,%xmm9 + movups (%rcx,%rax,1),%xmm0 + addq $16,%rax + jmp L$enc_loop8_inner +.p2align 4 +L$enc_loop8: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +L$enc_loop8_inner: +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 +L$enc_loop8_enter: + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$enc_loop8 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 +.byte 102,15,56,221,224 +.byte 102,15,56,221,232 +.byte 102,15,56,221,240 +.byte 102,15,56,221,248 +.byte 102,68,15,56,221,192 +.byte 102,68,15,56,221,200 + .byte 0xf3,0xc3 + + + +.p2align 4 +_aesni_decrypt8: + + movups (%rcx),%xmm0 + shll $4,%eax + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm2 + xorps %xmm0,%xmm3 + pxor %xmm0,%xmm4 + pxor %xmm0,%xmm5 + pxor %xmm0,%xmm6 + leaq 32(%rcx,%rax,1),%rcx + negq %rax +.byte 102,15,56,222,209 + pxor %xmm0,%xmm7 + pxor %xmm0,%xmm8 +.byte 102,15,56,222,217 + pxor %xmm0,%xmm9 + movups (%rcx,%rax,1),%xmm0 + addq $16,%rax + jmp L$dec_loop8_inner +.p2align 4 +L$dec_loop8: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +L$dec_loop8_inner: +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 +L$dec_loop8_enter: + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$dec_loop8 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 +.byte 102,15,56,223,208 +.byte 102,15,56,223,216 +.byte 102,15,56,223,224 +.byte 102,15,56,223,232 +.byte 102,15,56,223,240 +.byte 102,15,56,223,248 +.byte 102,68,15,56,223,192 +.byte 102,68,15,56,223,200 + .byte 0xf3,0xc3 + + +.globl _aesni_ecb_encrypt + +.p2align 4 +_aesni_ecb_encrypt: + + andq $-16,%rdx + jz L$ecb_ret + + movl 240(%rcx),%eax + movups (%rcx),%xmm0 + movq %rcx,%r11 + movl %eax,%r10d + testl %r8d,%r8d + jz L$ecb_decrypt + + cmpq $0x80,%rdx + jb L$ecb_enc_tail + + movdqu (%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqu 32(%rdi),%xmm4 + movdqu 48(%rdi),%xmm5 + movdqu 64(%rdi),%xmm6 + movdqu 80(%rdi),%xmm7 + movdqu 96(%rdi),%xmm8 + movdqu 112(%rdi),%xmm9 + leaq 128(%rdi),%rdi + subq $0x80,%rdx + jmp L$ecb_enc_loop8_enter +.p2align 4 +L$ecb_enc_loop8: + movups %xmm2,(%rsi) + movq %r11,%rcx + movdqu (%rdi),%xmm2 + movl %r10d,%eax + movups %xmm3,16(%rsi) + movdqu 16(%rdi),%xmm3 + movups %xmm4,32(%rsi) + movdqu 32(%rdi),%xmm4 + movups %xmm5,48(%rsi) + movdqu 48(%rdi),%xmm5 + movups %xmm6,64(%rsi) + movdqu 64(%rdi),%xmm6 + movups %xmm7,80(%rsi) + movdqu 80(%rdi),%xmm7 + movups %xmm8,96(%rsi) + movdqu 96(%rdi),%xmm8 + movups %xmm9,112(%rsi) + leaq 128(%rsi),%rsi + movdqu 112(%rdi),%xmm9 + leaq 128(%rdi),%rdi +L$ecb_enc_loop8_enter: + + call _aesni_encrypt8 + + subq $0x80,%rdx + jnc L$ecb_enc_loop8 + + movups %xmm2,(%rsi) + movq %r11,%rcx + movups %xmm3,16(%rsi) + movl %r10d,%eax + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + movups %xmm6,64(%rsi) + movups %xmm7,80(%rsi) + movups %xmm8,96(%rsi) + movups %xmm9,112(%rsi) + leaq 128(%rsi),%rsi + addq $0x80,%rdx + jz L$ecb_ret + +L$ecb_enc_tail: + movups (%rdi),%xmm2 + cmpq $0x20,%rdx + jb L$ecb_enc_one + movups 16(%rdi),%xmm3 + je L$ecb_enc_two + movups 32(%rdi),%xmm4 + cmpq $0x40,%rdx + jb L$ecb_enc_three + movups 48(%rdi),%xmm5 + je L$ecb_enc_four + movups 64(%rdi),%xmm6 + cmpq $0x60,%rdx + jb L$ecb_enc_five + movups 80(%rdi),%xmm7 + je L$ecb_enc_six + movdqu 96(%rdi),%xmm8 + xorps %xmm9,%xmm9 + call _aesni_encrypt8 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + movups %xmm6,64(%rsi) + movups %xmm7,80(%rsi) + movups %xmm8,96(%rsi) + jmp L$ecb_ret +.p2align 4 +L$ecb_enc_one: + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +L$oop_enc1_3: +.byte 102,15,56,220,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz L$oop_enc1_3 +.byte 102,15,56,221,209 + movups %xmm2,(%rsi) + jmp L$ecb_ret +.p2align 4 +L$ecb_enc_two: + call _aesni_encrypt2 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + jmp L$ecb_ret +.p2align 4 +L$ecb_enc_three: + call _aesni_encrypt3 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + jmp L$ecb_ret +.p2align 4 +L$ecb_enc_four: + call _aesni_encrypt4 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + jmp L$ecb_ret +.p2align 4 +L$ecb_enc_five: + xorps %xmm7,%xmm7 + call _aesni_encrypt6 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + movups %xmm6,64(%rsi) + jmp L$ecb_ret +.p2align 4 +L$ecb_enc_six: + call _aesni_encrypt6 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + movups %xmm6,64(%rsi) + movups %xmm7,80(%rsi) + jmp L$ecb_ret + +.p2align 4 +L$ecb_decrypt: + cmpq $0x80,%rdx + jb L$ecb_dec_tail + + movdqu (%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqu 32(%rdi),%xmm4 + movdqu 48(%rdi),%xmm5 + movdqu 64(%rdi),%xmm6 + movdqu 80(%rdi),%xmm7 + movdqu 96(%rdi),%xmm8 + movdqu 112(%rdi),%xmm9 + leaq 128(%rdi),%rdi + subq $0x80,%rdx + jmp L$ecb_dec_loop8_enter +.p2align 4 +L$ecb_dec_loop8: + movups %xmm2,(%rsi) + movq %r11,%rcx + movdqu (%rdi),%xmm2 + movl %r10d,%eax + movups %xmm3,16(%rsi) + movdqu 16(%rdi),%xmm3 + movups %xmm4,32(%rsi) + movdqu 32(%rdi),%xmm4 + movups %xmm5,48(%rsi) + movdqu 48(%rdi),%xmm5 + movups %xmm6,64(%rsi) + movdqu 64(%rdi),%xmm6 + movups %xmm7,80(%rsi) + movdqu 80(%rdi),%xmm7 + movups %xmm8,96(%rsi) + movdqu 96(%rdi),%xmm8 + movups %xmm9,112(%rsi) + leaq 128(%rsi),%rsi + movdqu 112(%rdi),%xmm9 + leaq 128(%rdi),%rdi +L$ecb_dec_loop8_enter: + + call _aesni_decrypt8 + + movups (%r11),%xmm0 + subq $0x80,%rdx + jnc L$ecb_dec_loop8 + + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movq %r11,%rcx + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movl %r10d,%eax + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + movups %xmm6,64(%rsi) + pxor %xmm6,%xmm6 + movups %xmm7,80(%rsi) + pxor %xmm7,%xmm7 + movups %xmm8,96(%rsi) + pxor %xmm8,%xmm8 + movups %xmm9,112(%rsi) + pxor %xmm9,%xmm9 + leaq 128(%rsi),%rsi + addq $0x80,%rdx + jz L$ecb_ret + +L$ecb_dec_tail: + movups (%rdi),%xmm2 + cmpq $0x20,%rdx + jb L$ecb_dec_one + movups 16(%rdi),%xmm3 + je L$ecb_dec_two + movups 32(%rdi),%xmm4 + cmpq $0x40,%rdx + jb L$ecb_dec_three + movups 48(%rdi),%xmm5 + je L$ecb_dec_four + movups 64(%rdi),%xmm6 + cmpq $0x60,%rdx + jb L$ecb_dec_five + movups 80(%rdi),%xmm7 + je L$ecb_dec_six + movups 96(%rdi),%xmm8 + movups (%rcx),%xmm0 + xorps %xmm9,%xmm9 + call _aesni_decrypt8 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + movups %xmm6,64(%rsi) + pxor %xmm6,%xmm6 + movups %xmm7,80(%rsi) + pxor %xmm7,%xmm7 + movups %xmm8,96(%rsi) + pxor %xmm8,%xmm8 + pxor %xmm9,%xmm9 + jmp L$ecb_ret +.p2align 4 +L$ecb_dec_one: + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +L$oop_dec1_4: +.byte 102,15,56,222,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz L$oop_dec1_4 +.byte 102,15,56,223,209 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + jmp L$ecb_ret +.p2align 4 +L$ecb_dec_two: + call _aesni_decrypt2 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + jmp L$ecb_ret +.p2align 4 +L$ecb_dec_three: + call _aesni_decrypt3 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + jmp L$ecb_ret +.p2align 4 +L$ecb_dec_four: + call _aesni_decrypt4 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + jmp L$ecb_ret +.p2align 4 +L$ecb_dec_five: + xorps %xmm7,%xmm7 + call _aesni_decrypt6 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + movups %xmm6,64(%rsi) + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + jmp L$ecb_ret +.p2align 4 +L$ecb_dec_six: + call _aesni_decrypt6 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + movups %xmm6,64(%rsi) + pxor %xmm6,%xmm6 + movups %xmm7,80(%rsi) + pxor %xmm7,%xmm7 + +L$ecb_ret: + xorps %xmm0,%xmm0 + pxor %xmm1,%xmm1 + .byte 0xf3,0xc3 + + +.globl _aesni_ccm64_encrypt_blocks + +.p2align 4 +_aesni_ccm64_encrypt_blocks: + + movl 240(%rcx),%eax + movdqu (%r8),%xmm6 + movdqa L$increment64(%rip),%xmm9 + movdqa L$bswap_mask(%rip),%xmm7 + + shll $4,%eax + movl $16,%r10d + leaq 0(%rcx),%r11 + movdqu (%r9),%xmm3 + movdqa %xmm6,%xmm2 + leaq 32(%rcx,%rax,1),%rcx +.byte 102,15,56,0,247 + subq %rax,%r10 + jmp L$ccm64_enc_outer +.p2align 4 +L$ccm64_enc_outer: + movups (%r11),%xmm0 + movq %r10,%rax + movups (%rdi),%xmm8 + + xorps %xmm0,%xmm2 + movups 16(%r11),%xmm1 + xorps %xmm8,%xmm0 + xorps %xmm0,%xmm3 + movups 32(%r11),%xmm0 + +L$ccm64_enc2_loop: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$ccm64_enc2_loop +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + paddq %xmm9,%xmm6 + decq %rdx +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 + + leaq 16(%rdi),%rdi + xorps %xmm2,%xmm8 + movdqa %xmm6,%xmm2 + movups %xmm8,(%rsi) +.byte 102,15,56,0,215 + leaq 16(%rsi),%rsi + jnz L$ccm64_enc_outer + + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + movups %xmm3,(%r9) + pxor %xmm3,%xmm3 + pxor %xmm8,%xmm8 + pxor %xmm6,%xmm6 + .byte 0xf3,0xc3 + + +.globl _aesni_ccm64_decrypt_blocks + +.p2align 4 +_aesni_ccm64_decrypt_blocks: + + movl 240(%rcx),%eax + movups (%r8),%xmm6 + movdqu (%r9),%xmm3 + movdqa L$increment64(%rip),%xmm9 + movdqa L$bswap_mask(%rip),%xmm7 + + movaps %xmm6,%xmm2 + movl %eax,%r10d + movq %rcx,%r11 +.byte 102,15,56,0,247 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +L$oop_enc1_5: +.byte 102,15,56,220,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz L$oop_enc1_5 +.byte 102,15,56,221,209 + shll $4,%r10d + movl $16,%eax + movups (%rdi),%xmm8 + paddq %xmm9,%xmm6 + leaq 16(%rdi),%rdi + subq %r10,%rax + leaq 32(%r11,%r10,1),%rcx + movq %rax,%r10 + jmp L$ccm64_dec_outer +.p2align 4 +L$ccm64_dec_outer: + xorps %xmm2,%xmm8 + movdqa %xmm6,%xmm2 + movups %xmm8,(%rsi) + leaq 16(%rsi),%rsi +.byte 102,15,56,0,215 + + subq $1,%rdx + jz L$ccm64_dec_break + + movups (%r11),%xmm0 + movq %r10,%rax + movups 16(%r11),%xmm1 + xorps %xmm0,%xmm8 + xorps %xmm0,%xmm2 + xorps %xmm8,%xmm3 + movups 32(%r11),%xmm0 + jmp L$ccm64_dec2_loop +.p2align 4 +L$ccm64_dec2_loop: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$ccm64_dec2_loop + movups (%rdi),%xmm8 + paddq %xmm9,%xmm6 +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,221,208 +.byte 102,15,56,221,216 + leaq 16(%rdi),%rdi + jmp L$ccm64_dec_outer + +.p2align 4 +L$ccm64_dec_break: + + movl 240(%r11),%eax + movups (%r11),%xmm0 + movups 16(%r11),%xmm1 + xorps %xmm0,%xmm8 + leaq 32(%r11),%r11 + xorps %xmm8,%xmm3 +L$oop_enc1_6: +.byte 102,15,56,220,217 + decl %eax + movups (%r11),%xmm1 + leaq 16(%r11),%r11 + jnz L$oop_enc1_6 +.byte 102,15,56,221,217 + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + movups %xmm3,(%r9) + pxor %xmm3,%xmm3 + pxor %xmm8,%xmm8 + pxor %xmm6,%xmm6 + .byte 0xf3,0xc3 + + +.globl _aesni_ctr32_encrypt_blocks + +.p2align 4 +_aesni_ctr32_encrypt_blocks: + + cmpq $1,%rdx + jne L$ctr32_bulk + + + + movups (%r8),%xmm2 + movups (%rdi),%xmm3 + movl 240(%rcx),%edx + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +L$oop_enc1_7: +.byte 102,15,56,220,209 + decl %edx + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz L$oop_enc1_7 +.byte 102,15,56,221,209 + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + xorps %xmm3,%xmm2 + pxor %xmm3,%xmm3 + movups %xmm2,(%rsi) + xorps %xmm2,%xmm2 + jmp L$ctr32_epilogue + +.p2align 4 +L$ctr32_bulk: + leaq (%rsp),%r11 + + pushq %rbp + + subq $128,%rsp + andq $-16,%rsp + + + + + movdqu (%r8),%xmm2 + movdqu (%rcx),%xmm0 + movl 12(%r8),%r8d + pxor %xmm0,%xmm2 + movl 12(%rcx),%ebp + movdqa %xmm2,0(%rsp) + bswapl %r8d + movdqa %xmm2,%xmm3 + movdqa %xmm2,%xmm4 + movdqa %xmm2,%xmm5 + movdqa %xmm2,64(%rsp) + movdqa %xmm2,80(%rsp) + movdqa %xmm2,96(%rsp) + movq %rdx,%r10 + movdqa %xmm2,112(%rsp) + + leaq 1(%r8),%rax + leaq 2(%r8),%rdx + bswapl %eax + bswapl %edx + xorl %ebp,%eax + xorl %ebp,%edx +.byte 102,15,58,34,216,3 + leaq 3(%r8),%rax + movdqa %xmm3,16(%rsp) +.byte 102,15,58,34,226,3 + bswapl %eax + movq %r10,%rdx + leaq 4(%r8),%r10 + movdqa %xmm4,32(%rsp) + xorl %ebp,%eax + bswapl %r10d +.byte 102,15,58,34,232,3 + xorl %ebp,%r10d + movdqa %xmm5,48(%rsp) + leaq 5(%r8),%r9 + movl %r10d,64+12(%rsp) + bswapl %r9d + leaq 6(%r8),%r10 + movl 240(%rcx),%eax + xorl %ebp,%r9d + bswapl %r10d + movl %r9d,80+12(%rsp) + xorl %ebp,%r10d + leaq 7(%r8),%r9 + movl %r10d,96+12(%rsp) + bswapl %r9d + movl _OPENSSL_ia32cap_P+4(%rip),%r10d + xorl %ebp,%r9d + andl $71303168,%r10d + movl %r9d,112+12(%rsp) + + movups 16(%rcx),%xmm1 + + movdqa 64(%rsp),%xmm6 + movdqa 80(%rsp),%xmm7 + + cmpq $8,%rdx + jb L$ctr32_tail + + subq $6,%rdx + cmpl $4194304,%r10d + je L$ctr32_6x + + leaq 128(%rcx),%rcx + subq $2,%rdx + jmp L$ctr32_loop8 + +.p2align 4 +L$ctr32_6x: + shll $4,%eax + movl $48,%r10d + bswapl %ebp + leaq 32(%rcx,%rax,1),%rcx + subq %rax,%r10 + jmp L$ctr32_loop6 + +.p2align 4 +L$ctr32_loop6: + addl $6,%r8d + movups -48(%rcx,%r10,1),%xmm0 +.byte 102,15,56,220,209 + movl %r8d,%eax + xorl %ebp,%eax +.byte 102,15,56,220,217 +.byte 0x0f,0x38,0xf1,0x44,0x24,12 + leal 1(%r8),%eax +.byte 102,15,56,220,225 + xorl %ebp,%eax +.byte 0x0f,0x38,0xf1,0x44,0x24,28 +.byte 102,15,56,220,233 + leal 2(%r8),%eax + xorl %ebp,%eax +.byte 102,15,56,220,241 +.byte 0x0f,0x38,0xf1,0x44,0x24,44 + leal 3(%r8),%eax +.byte 102,15,56,220,249 + movups -32(%rcx,%r10,1),%xmm1 + xorl %ebp,%eax + +.byte 102,15,56,220,208 +.byte 0x0f,0x38,0xf1,0x44,0x24,60 + leal 4(%r8),%eax +.byte 102,15,56,220,216 + xorl %ebp,%eax +.byte 0x0f,0x38,0xf1,0x44,0x24,76 +.byte 102,15,56,220,224 + leal 5(%r8),%eax + xorl %ebp,%eax +.byte 102,15,56,220,232 +.byte 0x0f,0x38,0xf1,0x44,0x24,92 + movq %r10,%rax +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 + movups -16(%rcx,%r10,1),%xmm0 + + call L$enc_loop6 + + movdqu (%rdi),%xmm8 + movdqu 16(%rdi),%xmm9 + movdqu 32(%rdi),%xmm10 + movdqu 48(%rdi),%xmm11 + movdqu 64(%rdi),%xmm12 + movdqu 80(%rdi),%xmm13 + leaq 96(%rdi),%rdi + movups -64(%rcx,%r10,1),%xmm1 + pxor %xmm2,%xmm8 + movaps 0(%rsp),%xmm2 + pxor %xmm3,%xmm9 + movaps 16(%rsp),%xmm3 + pxor %xmm4,%xmm10 + movaps 32(%rsp),%xmm4 + pxor %xmm5,%xmm11 + movaps 48(%rsp),%xmm5 + pxor %xmm6,%xmm12 + movaps 64(%rsp),%xmm6 + pxor %xmm7,%xmm13 + movaps 80(%rsp),%xmm7 + movdqu %xmm8,(%rsi) + movdqu %xmm9,16(%rsi) + movdqu %xmm10,32(%rsi) + movdqu %xmm11,48(%rsi) + movdqu %xmm12,64(%rsi) + movdqu %xmm13,80(%rsi) + leaq 96(%rsi),%rsi + + subq $6,%rdx + jnc L$ctr32_loop6 + + addq $6,%rdx + jz L$ctr32_done + + leal -48(%r10),%eax + leaq -80(%rcx,%r10,1),%rcx + negl %eax + shrl $4,%eax + jmp L$ctr32_tail + +.p2align 5 +L$ctr32_loop8: + addl $8,%r8d + movdqa 96(%rsp),%xmm8 +.byte 102,15,56,220,209 + movl %r8d,%r9d + movdqa 112(%rsp),%xmm9 +.byte 102,15,56,220,217 + bswapl %r9d + movups 32-128(%rcx),%xmm0 +.byte 102,15,56,220,225 + xorl %ebp,%r9d + nop +.byte 102,15,56,220,233 + movl %r9d,0+12(%rsp) + leaq 1(%r8),%r9 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movups 48-128(%rcx),%xmm1 + bswapl %r9d +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 + xorl %ebp,%r9d +.byte 0x66,0x90 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movl %r9d,16+12(%rsp) + leaq 2(%r8),%r9 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups 64-128(%rcx),%xmm0 + bswapl %r9d +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + xorl %ebp,%r9d +.byte 0x66,0x90 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movl %r9d,32+12(%rsp) + leaq 3(%r8),%r9 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movups 80-128(%rcx),%xmm1 + bswapl %r9d +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 + xorl %ebp,%r9d +.byte 0x66,0x90 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movl %r9d,48+12(%rsp) + leaq 4(%r8),%r9 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups 96-128(%rcx),%xmm0 + bswapl %r9d +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + xorl %ebp,%r9d +.byte 0x66,0x90 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movl %r9d,64+12(%rsp) + leaq 5(%r8),%r9 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movups 112-128(%rcx),%xmm1 + bswapl %r9d +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 + xorl %ebp,%r9d +.byte 0x66,0x90 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movl %r9d,80+12(%rsp) + leaq 6(%r8),%r9 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups 128-128(%rcx),%xmm0 + bswapl %r9d +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + xorl %ebp,%r9d +.byte 0x66,0x90 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movl %r9d,96+12(%rsp) + leaq 7(%r8),%r9 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movups 144-128(%rcx),%xmm1 + bswapl %r9d +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 + xorl %ebp,%r9d + movdqu 0(%rdi),%xmm10 +.byte 102,15,56,220,232 + movl %r9d,112+12(%rsp) + cmpl $11,%eax +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups 160-128(%rcx),%xmm0 + + jb L$ctr32_enc_done + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movups 176-128(%rcx),%xmm1 + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups 192-128(%rcx),%xmm0 + je L$ctr32_enc_done + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movups 208-128(%rcx),%xmm1 + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 +.byte 102,68,15,56,220,192 +.byte 102,68,15,56,220,200 + movups 224-128(%rcx),%xmm0 + jmp L$ctr32_enc_done + +.p2align 4 +L$ctr32_enc_done: + movdqu 16(%rdi),%xmm11 + pxor %xmm0,%xmm10 + movdqu 32(%rdi),%xmm12 + pxor %xmm0,%xmm11 + movdqu 48(%rdi),%xmm13 + pxor %xmm0,%xmm12 + movdqu 64(%rdi),%xmm14 + pxor %xmm0,%xmm13 + movdqu 80(%rdi),%xmm15 + pxor %xmm0,%xmm14 + pxor %xmm0,%xmm15 +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 +.byte 102,68,15,56,220,201 + movdqu 96(%rdi),%xmm1 + leaq 128(%rdi),%rdi + +.byte 102,65,15,56,221,210 + pxor %xmm0,%xmm1 + movdqu 112-128(%rdi),%xmm10 +.byte 102,65,15,56,221,219 + pxor %xmm0,%xmm10 + movdqa 0(%rsp),%xmm11 +.byte 102,65,15,56,221,228 +.byte 102,65,15,56,221,237 + movdqa 16(%rsp),%xmm12 + movdqa 32(%rsp),%xmm13 +.byte 102,65,15,56,221,246 +.byte 102,65,15,56,221,255 + movdqa 48(%rsp),%xmm14 + movdqa 64(%rsp),%xmm15 +.byte 102,68,15,56,221,193 + movdqa 80(%rsp),%xmm0 + movups 16-128(%rcx),%xmm1 +.byte 102,69,15,56,221,202 + + movups %xmm2,(%rsi) + movdqa %xmm11,%xmm2 + movups %xmm3,16(%rsi) + movdqa %xmm12,%xmm3 + movups %xmm4,32(%rsi) + movdqa %xmm13,%xmm4 + movups %xmm5,48(%rsi) + movdqa %xmm14,%xmm5 + movups %xmm6,64(%rsi) + movdqa %xmm15,%xmm6 + movups %xmm7,80(%rsi) + movdqa %xmm0,%xmm7 + movups %xmm8,96(%rsi) + movups %xmm9,112(%rsi) + leaq 128(%rsi),%rsi + + subq $8,%rdx + jnc L$ctr32_loop8 + + addq $8,%rdx + jz L$ctr32_done + leaq -128(%rcx),%rcx + +L$ctr32_tail: + + + leaq 16(%rcx),%rcx + cmpq $4,%rdx + jb L$ctr32_loop3 + je L$ctr32_loop4 + + + shll $4,%eax + movdqa 96(%rsp),%xmm8 + pxor %xmm9,%xmm9 + + movups 16(%rcx),%xmm0 +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 + leaq 32-16(%rcx,%rax,1),%rcx + negq %rax +.byte 102,15,56,220,225 + addq $16,%rax + movups (%rdi),%xmm10 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 + movups 16(%rdi),%xmm11 + movups 32(%rdi),%xmm12 +.byte 102,15,56,220,249 +.byte 102,68,15,56,220,193 + + call L$enc_loop8_enter + + movdqu 48(%rdi),%xmm13 + pxor %xmm10,%xmm2 + movdqu 64(%rdi),%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm13,%xmm5 + movdqu %xmm4,32(%rsi) + pxor %xmm10,%xmm6 + movdqu %xmm5,48(%rsi) + movdqu %xmm6,64(%rsi) + cmpq $6,%rdx + jb L$ctr32_done + + movups 80(%rdi),%xmm11 + xorps %xmm11,%xmm7 + movups %xmm7,80(%rsi) + je L$ctr32_done + + movups 96(%rdi),%xmm12 + xorps %xmm12,%xmm8 + movups %xmm8,96(%rsi) + jmp L$ctr32_done + +.p2align 5 +L$ctr32_loop4: +.byte 102,15,56,220,209 + leaq 16(%rcx),%rcx + decl %eax +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups (%rcx),%xmm1 + jnz L$ctr32_loop4 +.byte 102,15,56,221,209 +.byte 102,15,56,221,217 + movups (%rdi),%xmm10 + movups 16(%rdi),%xmm11 +.byte 102,15,56,221,225 +.byte 102,15,56,221,233 + movups 32(%rdi),%xmm12 + movups 48(%rdi),%xmm13 + + xorps %xmm10,%xmm2 + movups %xmm2,(%rsi) + xorps %xmm11,%xmm3 + movups %xmm3,16(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm4,32(%rsi) + pxor %xmm13,%xmm5 + movdqu %xmm5,48(%rsi) + jmp L$ctr32_done + +.p2align 5 +L$ctr32_loop3: +.byte 102,15,56,220,209 + leaq 16(%rcx),%rcx + decl %eax +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 + movups (%rcx),%xmm1 + jnz L$ctr32_loop3 +.byte 102,15,56,221,209 +.byte 102,15,56,221,217 +.byte 102,15,56,221,225 + + movups (%rdi),%xmm10 + xorps %xmm10,%xmm2 + movups %xmm2,(%rsi) + cmpq $2,%rdx + jb L$ctr32_done + + movups 16(%rdi),%xmm11 + xorps %xmm11,%xmm3 + movups %xmm3,16(%rsi) + je L$ctr32_done + + movups 32(%rdi),%xmm12 + xorps %xmm12,%xmm4 + movups %xmm4,32(%rsi) + +L$ctr32_done: + xorps %xmm0,%xmm0 + xorl %ebp,%ebp + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + movaps %xmm0,0(%rsp) + pxor %xmm8,%xmm8 + movaps %xmm0,16(%rsp) + pxor %xmm9,%xmm9 + movaps %xmm0,32(%rsp) + pxor %xmm10,%xmm10 + movaps %xmm0,48(%rsp) + pxor %xmm11,%xmm11 + movaps %xmm0,64(%rsp) + pxor %xmm12,%xmm12 + movaps %xmm0,80(%rsp) + pxor %xmm13,%xmm13 + movaps %xmm0,96(%rsp) + pxor %xmm14,%xmm14 + movaps %xmm0,112(%rsp) + pxor %xmm15,%xmm15 + movq -8(%r11),%rbp + + leaq (%r11),%rsp + +L$ctr32_epilogue: + .byte 0xf3,0xc3 + + +.globl _aesni_xts_encrypt + +.p2align 4 +_aesni_xts_encrypt: + + leaq (%rsp),%r11 + + pushq %rbp + + subq $112,%rsp + andq $-16,%rsp + movups (%r9),%xmm2 + movl 240(%r8),%eax + movl 240(%rcx),%r10d + movups (%r8),%xmm0 + movups 16(%r8),%xmm1 + leaq 32(%r8),%r8 + xorps %xmm0,%xmm2 +L$oop_enc1_8: +.byte 102,15,56,220,209 + decl %eax + movups (%r8),%xmm1 + leaq 16(%r8),%r8 + jnz L$oop_enc1_8 +.byte 102,15,56,221,209 + movups (%rcx),%xmm0 + movq %rcx,%rbp + movl %r10d,%eax + shll $4,%r10d + movq %rdx,%r9 + andq $-16,%rdx + + movups 16(%rcx,%r10,1),%xmm1 + + movdqa L$xts_magic(%rip),%xmm8 + movdqa %xmm2,%xmm15 + pshufd $0x5f,%xmm2,%xmm9 + pxor %xmm0,%xmm1 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm10 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm10 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm11 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm11 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm12 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm12 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm13 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm13 + pxor %xmm14,%xmm15 + movdqa %xmm15,%xmm14 + psrad $31,%xmm9 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm9 + pxor %xmm0,%xmm14 + pxor %xmm9,%xmm15 + movaps %xmm1,96(%rsp) + + subq $96,%rdx + jc L$xts_enc_short + + movl $16+96,%eax + leaq 32(%rbp,%r10,1),%rcx + subq %r10,%rax + movups 16(%rbp),%xmm1 + movq %rax,%r10 + leaq L$xts_magic(%rip),%r8 + jmp L$xts_enc_grandloop + +.p2align 5 +L$xts_enc_grandloop: + movdqu 0(%rdi),%xmm2 + movdqa %xmm0,%xmm8 + movdqu 16(%rdi),%xmm3 + pxor %xmm10,%xmm2 + movdqu 32(%rdi),%xmm4 + pxor %xmm11,%xmm3 +.byte 102,15,56,220,209 + movdqu 48(%rdi),%xmm5 + pxor %xmm12,%xmm4 +.byte 102,15,56,220,217 + movdqu 64(%rdi),%xmm6 + pxor %xmm13,%xmm5 +.byte 102,15,56,220,225 + movdqu 80(%rdi),%xmm7 + pxor %xmm15,%xmm8 + movdqa 96(%rsp),%xmm9 + pxor %xmm14,%xmm6 +.byte 102,15,56,220,233 + movups 32(%rbp),%xmm0 + leaq 96(%rdi),%rdi + pxor %xmm8,%xmm7 + + pxor %xmm9,%xmm10 +.byte 102,15,56,220,241 + pxor %xmm9,%xmm11 + movdqa %xmm10,0(%rsp) +.byte 102,15,56,220,249 + movups 48(%rbp),%xmm1 + pxor %xmm9,%xmm12 + +.byte 102,15,56,220,208 + pxor %xmm9,%xmm13 + movdqa %xmm11,16(%rsp) +.byte 102,15,56,220,216 + pxor %xmm9,%xmm14 + movdqa %xmm12,32(%rsp) +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + pxor %xmm9,%xmm8 + movdqa %xmm14,64(%rsp) +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 + movups 64(%rbp),%xmm0 + movdqa %xmm8,80(%rsp) + pshufd $0x5f,%xmm15,%xmm9 + jmp L$xts_enc_loop6 +.p2align 5 +L$xts_enc_loop6: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 + movups -64(%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 + movups -80(%rcx,%rax,1),%xmm0 + jnz L$xts_enc_loop6 + + movdqa (%r8),%xmm8 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 +.byte 102,15,56,220,209 + paddq %xmm15,%xmm15 + psrad $31,%xmm14 +.byte 102,15,56,220,217 + pand %xmm8,%xmm14 + movups (%rbp),%xmm10 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 + pxor %xmm14,%xmm15 + movaps %xmm10,%xmm11 +.byte 102,15,56,220,249 + movups -64(%rcx),%xmm1 + + movdqa %xmm9,%xmm14 +.byte 102,15,56,220,208 + paddd %xmm9,%xmm9 + pxor %xmm15,%xmm10 +.byte 102,15,56,220,216 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + pand %xmm8,%xmm14 + movaps %xmm11,%xmm12 +.byte 102,15,56,220,240 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 +.byte 102,15,56,220,248 + movups -48(%rcx),%xmm0 + + paddd %xmm9,%xmm9 +.byte 102,15,56,220,209 + pxor %xmm15,%xmm11 + psrad $31,%xmm14 +.byte 102,15,56,220,217 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movdqa %xmm13,48(%rsp) + pxor %xmm14,%xmm15 +.byte 102,15,56,220,241 + movaps %xmm12,%xmm13 + movdqa %xmm9,%xmm14 +.byte 102,15,56,220,249 + movups -32(%rcx),%xmm1 + + paddd %xmm9,%xmm9 +.byte 102,15,56,220,208 + pxor %xmm15,%xmm12 + psrad $31,%xmm14 +.byte 102,15,56,220,216 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 + pxor %xmm14,%xmm15 + movaps %xmm13,%xmm14 +.byte 102,15,56,220,248 + + movdqa %xmm9,%xmm0 + paddd %xmm9,%xmm9 +.byte 102,15,56,220,209 + pxor %xmm15,%xmm13 + psrad $31,%xmm0 +.byte 102,15,56,220,217 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm0 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + pxor %xmm0,%xmm15 + movups (%rbp),%xmm0 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 + movups 16(%rbp),%xmm1 + + pxor %xmm15,%xmm14 +.byte 102,15,56,221,84,36,0 + psrad $31,%xmm9 + paddq %xmm15,%xmm15 +.byte 102,15,56,221,92,36,16 +.byte 102,15,56,221,100,36,32 + pand %xmm8,%xmm9 + movq %r10,%rax +.byte 102,15,56,221,108,36,48 +.byte 102,15,56,221,116,36,64 +.byte 102,15,56,221,124,36,80 + pxor %xmm9,%xmm15 + + leaq 96(%rsi),%rsi + movups %xmm2,-96(%rsi) + movups %xmm3,-80(%rsi) + movups %xmm4,-64(%rsi) + movups %xmm5,-48(%rsi) + movups %xmm6,-32(%rsi) + movups %xmm7,-16(%rsi) + subq $96,%rdx + jnc L$xts_enc_grandloop + + movl $16+96,%eax + subl %r10d,%eax + movq %rbp,%rcx + shrl $4,%eax + +L$xts_enc_short: + + movl %eax,%r10d + pxor %xmm0,%xmm10 + addq $96,%rdx + jz L$xts_enc_done + + pxor %xmm0,%xmm11 + cmpq $0x20,%rdx + jb L$xts_enc_one + pxor %xmm0,%xmm12 + je L$xts_enc_two + + pxor %xmm0,%xmm13 + cmpq $0x40,%rdx + jb L$xts_enc_three + pxor %xmm0,%xmm14 + je L$xts_enc_four + + movdqu (%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqu 32(%rdi),%xmm4 + pxor %xmm10,%xmm2 + movdqu 48(%rdi),%xmm5 + pxor %xmm11,%xmm3 + movdqu 64(%rdi),%xmm6 + leaq 80(%rdi),%rdi + pxor %xmm12,%xmm4 + pxor %xmm13,%xmm5 + pxor %xmm14,%xmm6 + pxor %xmm7,%xmm7 + + call _aesni_encrypt6 + + xorps %xmm10,%xmm2 + movdqa %xmm15,%xmm10 + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + movdqu %xmm2,(%rsi) + xorps %xmm13,%xmm5 + movdqu %xmm3,16(%rsi) + xorps %xmm14,%xmm6 + movdqu %xmm4,32(%rsi) + movdqu %xmm5,48(%rsi) + movdqu %xmm6,64(%rsi) + leaq 80(%rsi),%rsi + jmp L$xts_enc_done + +.p2align 4 +L$xts_enc_one: + movups (%rdi),%xmm2 + leaq 16(%rdi),%rdi + xorps %xmm10,%xmm2 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +L$oop_enc1_9: +.byte 102,15,56,220,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz L$oop_enc1_9 +.byte 102,15,56,221,209 + xorps %xmm10,%xmm2 + movdqa %xmm11,%xmm10 + movups %xmm2,(%rsi) + leaq 16(%rsi),%rsi + jmp L$xts_enc_done + +.p2align 4 +L$xts_enc_two: + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 + leaq 32(%rdi),%rdi + xorps %xmm10,%xmm2 + xorps %xmm11,%xmm3 + + call _aesni_encrypt2 + + xorps %xmm10,%xmm2 + movdqa %xmm12,%xmm10 + xorps %xmm11,%xmm3 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + leaq 32(%rsi),%rsi + jmp L$xts_enc_done + +.p2align 4 +L$xts_enc_three: + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 + movups 32(%rdi),%xmm4 + leaq 48(%rdi),%rdi + xorps %xmm10,%xmm2 + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + + call _aesni_encrypt3 + + xorps %xmm10,%xmm2 + movdqa %xmm13,%xmm10 + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + leaq 48(%rsi),%rsi + jmp L$xts_enc_done + +.p2align 4 +L$xts_enc_four: + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 + movups 32(%rdi),%xmm4 + xorps %xmm10,%xmm2 + movups 48(%rdi),%xmm5 + leaq 64(%rdi),%rdi + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + xorps %xmm13,%xmm5 + + call _aesni_encrypt4 + + pxor %xmm10,%xmm2 + movdqa %xmm14,%xmm10 + pxor %xmm11,%xmm3 + pxor %xmm12,%xmm4 + movdqu %xmm2,(%rsi) + pxor %xmm13,%xmm5 + movdqu %xmm3,16(%rsi) + movdqu %xmm4,32(%rsi) + movdqu %xmm5,48(%rsi) + leaq 64(%rsi),%rsi + jmp L$xts_enc_done + +.p2align 4 +L$xts_enc_done: + andq $15,%r9 + jz L$xts_enc_ret + movq %r9,%rdx + +L$xts_enc_steal: + movzbl (%rdi),%eax + movzbl -16(%rsi),%ecx + leaq 1(%rdi),%rdi + movb %al,-16(%rsi) + movb %cl,0(%rsi) + leaq 1(%rsi),%rsi + subq $1,%rdx + jnz L$xts_enc_steal + + subq %r9,%rsi + movq %rbp,%rcx + movl %r10d,%eax + + movups -16(%rsi),%xmm2 + xorps %xmm10,%xmm2 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +L$oop_enc1_10: +.byte 102,15,56,220,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz L$oop_enc1_10 +.byte 102,15,56,221,209 + xorps %xmm10,%xmm2 + movups %xmm2,-16(%rsi) + +L$xts_enc_ret: + xorps %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + movaps %xmm0,0(%rsp) + pxor %xmm8,%xmm8 + movaps %xmm0,16(%rsp) + pxor %xmm9,%xmm9 + movaps %xmm0,32(%rsp) + pxor %xmm10,%xmm10 + movaps %xmm0,48(%rsp) + pxor %xmm11,%xmm11 + movaps %xmm0,64(%rsp) + pxor %xmm12,%xmm12 + movaps %xmm0,80(%rsp) + pxor %xmm13,%xmm13 + movaps %xmm0,96(%rsp) + pxor %xmm14,%xmm14 + pxor %xmm15,%xmm15 + movq -8(%r11),%rbp + + leaq (%r11),%rsp + +L$xts_enc_epilogue: + .byte 0xf3,0xc3 + + +.globl _aesni_xts_decrypt + +.p2align 4 +_aesni_xts_decrypt: + + leaq (%rsp),%r11 + + pushq %rbp + + subq $112,%rsp + andq $-16,%rsp + movups (%r9),%xmm2 + movl 240(%r8),%eax + movl 240(%rcx),%r10d + movups (%r8),%xmm0 + movups 16(%r8),%xmm1 + leaq 32(%r8),%r8 + xorps %xmm0,%xmm2 +L$oop_enc1_11: +.byte 102,15,56,220,209 + decl %eax + movups (%r8),%xmm1 + leaq 16(%r8),%r8 + jnz L$oop_enc1_11 +.byte 102,15,56,221,209 + xorl %eax,%eax + testq $15,%rdx + setnz %al + shlq $4,%rax + subq %rax,%rdx + + movups (%rcx),%xmm0 + movq %rcx,%rbp + movl %r10d,%eax + shll $4,%r10d + movq %rdx,%r9 + andq $-16,%rdx + + movups 16(%rcx,%r10,1),%xmm1 + + movdqa L$xts_magic(%rip),%xmm8 + movdqa %xmm2,%xmm15 + pshufd $0x5f,%xmm2,%xmm9 + pxor %xmm0,%xmm1 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm10 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm10 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm11 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm11 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm12 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm12 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 + movdqa %xmm15,%xmm13 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 + pxor %xmm0,%xmm13 + pxor %xmm14,%xmm15 + movdqa %xmm15,%xmm14 + psrad $31,%xmm9 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm9 + pxor %xmm0,%xmm14 + pxor %xmm9,%xmm15 + movaps %xmm1,96(%rsp) + + subq $96,%rdx + jc L$xts_dec_short + + movl $16+96,%eax + leaq 32(%rbp,%r10,1),%rcx + subq %r10,%rax + movups 16(%rbp),%xmm1 + movq %rax,%r10 + leaq L$xts_magic(%rip),%r8 + jmp L$xts_dec_grandloop + +.p2align 5 +L$xts_dec_grandloop: + movdqu 0(%rdi),%xmm2 + movdqa %xmm0,%xmm8 + movdqu 16(%rdi),%xmm3 + pxor %xmm10,%xmm2 + movdqu 32(%rdi),%xmm4 + pxor %xmm11,%xmm3 +.byte 102,15,56,222,209 + movdqu 48(%rdi),%xmm5 + pxor %xmm12,%xmm4 +.byte 102,15,56,222,217 + movdqu 64(%rdi),%xmm6 + pxor %xmm13,%xmm5 +.byte 102,15,56,222,225 + movdqu 80(%rdi),%xmm7 + pxor %xmm15,%xmm8 + movdqa 96(%rsp),%xmm9 + pxor %xmm14,%xmm6 +.byte 102,15,56,222,233 + movups 32(%rbp),%xmm0 + leaq 96(%rdi),%rdi + pxor %xmm8,%xmm7 + + pxor %xmm9,%xmm10 +.byte 102,15,56,222,241 + pxor %xmm9,%xmm11 + movdqa %xmm10,0(%rsp) +.byte 102,15,56,222,249 + movups 48(%rbp),%xmm1 + pxor %xmm9,%xmm12 + +.byte 102,15,56,222,208 + pxor %xmm9,%xmm13 + movdqa %xmm11,16(%rsp) +.byte 102,15,56,222,216 + pxor %xmm9,%xmm14 + movdqa %xmm12,32(%rsp) +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + pxor %xmm9,%xmm8 + movdqa %xmm14,64(%rsp) +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 + movups 64(%rbp),%xmm0 + movdqa %xmm8,80(%rsp) + pshufd $0x5f,%xmm15,%xmm9 + jmp L$xts_dec_loop6 +.p2align 5 +L$xts_dec_loop6: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 + movups -64(%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 + movups -80(%rcx,%rax,1),%xmm0 + jnz L$xts_dec_loop6 + + movdqa (%r8),%xmm8 + movdqa %xmm9,%xmm14 + paddd %xmm9,%xmm9 +.byte 102,15,56,222,209 + paddq %xmm15,%xmm15 + psrad $31,%xmm14 +.byte 102,15,56,222,217 + pand %xmm8,%xmm14 + movups (%rbp),%xmm10 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 + pxor %xmm14,%xmm15 + movaps %xmm10,%xmm11 +.byte 102,15,56,222,249 + movups -64(%rcx),%xmm1 + + movdqa %xmm9,%xmm14 +.byte 102,15,56,222,208 + paddd %xmm9,%xmm9 + pxor %xmm15,%xmm10 +.byte 102,15,56,222,216 + psrad $31,%xmm14 + paddq %xmm15,%xmm15 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + pand %xmm8,%xmm14 + movaps %xmm11,%xmm12 +.byte 102,15,56,222,240 + pxor %xmm14,%xmm15 + movdqa %xmm9,%xmm14 +.byte 102,15,56,222,248 + movups -48(%rcx),%xmm0 + + paddd %xmm9,%xmm9 +.byte 102,15,56,222,209 + pxor %xmm15,%xmm11 + psrad $31,%xmm14 +.byte 102,15,56,222,217 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movdqa %xmm13,48(%rsp) + pxor %xmm14,%xmm15 +.byte 102,15,56,222,241 + movaps %xmm12,%xmm13 + movdqa %xmm9,%xmm14 +.byte 102,15,56,222,249 + movups -32(%rcx),%xmm1 + + paddd %xmm9,%xmm9 +.byte 102,15,56,222,208 + pxor %xmm15,%xmm12 + psrad $31,%xmm14 +.byte 102,15,56,222,216 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm14 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 + pxor %xmm14,%xmm15 + movaps %xmm13,%xmm14 +.byte 102,15,56,222,248 + + movdqa %xmm9,%xmm0 + paddd %xmm9,%xmm9 +.byte 102,15,56,222,209 + pxor %xmm15,%xmm13 + psrad $31,%xmm0 +.byte 102,15,56,222,217 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm0 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + pxor %xmm0,%xmm15 + movups (%rbp),%xmm0 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 + movups 16(%rbp),%xmm1 + + pxor %xmm15,%xmm14 +.byte 102,15,56,223,84,36,0 + psrad $31,%xmm9 + paddq %xmm15,%xmm15 +.byte 102,15,56,223,92,36,16 +.byte 102,15,56,223,100,36,32 + pand %xmm8,%xmm9 + movq %r10,%rax +.byte 102,15,56,223,108,36,48 +.byte 102,15,56,223,116,36,64 +.byte 102,15,56,223,124,36,80 + pxor %xmm9,%xmm15 + + leaq 96(%rsi),%rsi + movups %xmm2,-96(%rsi) + movups %xmm3,-80(%rsi) + movups %xmm4,-64(%rsi) + movups %xmm5,-48(%rsi) + movups %xmm6,-32(%rsi) + movups %xmm7,-16(%rsi) + subq $96,%rdx + jnc L$xts_dec_grandloop + + movl $16+96,%eax + subl %r10d,%eax + movq %rbp,%rcx + shrl $4,%eax + +L$xts_dec_short: + + movl %eax,%r10d + pxor %xmm0,%xmm10 + pxor %xmm0,%xmm11 + addq $96,%rdx + jz L$xts_dec_done + + pxor %xmm0,%xmm12 + cmpq $0x20,%rdx + jb L$xts_dec_one + pxor %xmm0,%xmm13 + je L$xts_dec_two + + pxor %xmm0,%xmm14 + cmpq $0x40,%rdx + jb L$xts_dec_three + je L$xts_dec_four + + movdqu (%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqu 32(%rdi),%xmm4 + pxor %xmm10,%xmm2 + movdqu 48(%rdi),%xmm5 + pxor %xmm11,%xmm3 + movdqu 64(%rdi),%xmm6 + leaq 80(%rdi),%rdi + pxor %xmm12,%xmm4 + pxor %xmm13,%xmm5 + pxor %xmm14,%xmm6 + + call _aesni_decrypt6 + + xorps %xmm10,%xmm2 + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + movdqu %xmm2,(%rsi) + xorps %xmm13,%xmm5 + movdqu %xmm3,16(%rsi) + xorps %xmm14,%xmm6 + movdqu %xmm4,32(%rsi) + pxor %xmm14,%xmm14 + movdqu %xmm5,48(%rsi) + pcmpgtd %xmm15,%xmm14 + movdqu %xmm6,64(%rsi) + leaq 80(%rsi),%rsi + pshufd $0x13,%xmm14,%xmm11 + andq $15,%r9 + jz L$xts_dec_ret + + movdqa %xmm15,%xmm10 + paddq %xmm15,%xmm15 + pand %xmm8,%xmm11 + pxor %xmm15,%xmm11 + jmp L$xts_dec_done2 + +.p2align 4 +L$xts_dec_one: + movups (%rdi),%xmm2 + leaq 16(%rdi),%rdi + xorps %xmm10,%xmm2 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +L$oop_dec1_12: +.byte 102,15,56,222,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz L$oop_dec1_12 +.byte 102,15,56,223,209 + xorps %xmm10,%xmm2 + movdqa %xmm11,%xmm10 + movups %xmm2,(%rsi) + movdqa %xmm12,%xmm11 + leaq 16(%rsi),%rsi + jmp L$xts_dec_done + +.p2align 4 +L$xts_dec_two: + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 + leaq 32(%rdi),%rdi + xorps %xmm10,%xmm2 + xorps %xmm11,%xmm3 + + call _aesni_decrypt2 + + xorps %xmm10,%xmm2 + movdqa %xmm12,%xmm10 + xorps %xmm11,%xmm3 + movdqa %xmm13,%xmm11 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + leaq 32(%rsi),%rsi + jmp L$xts_dec_done + +.p2align 4 +L$xts_dec_three: + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 + movups 32(%rdi),%xmm4 + leaq 48(%rdi),%rdi + xorps %xmm10,%xmm2 + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + + call _aesni_decrypt3 + + xorps %xmm10,%xmm2 + movdqa %xmm13,%xmm10 + xorps %xmm11,%xmm3 + movdqa %xmm14,%xmm11 + xorps %xmm12,%xmm4 + movups %xmm2,(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + leaq 48(%rsi),%rsi + jmp L$xts_dec_done + +.p2align 4 +L$xts_dec_four: + movups (%rdi),%xmm2 + movups 16(%rdi),%xmm3 + movups 32(%rdi),%xmm4 + xorps %xmm10,%xmm2 + movups 48(%rdi),%xmm5 + leaq 64(%rdi),%rdi + xorps %xmm11,%xmm3 + xorps %xmm12,%xmm4 + xorps %xmm13,%xmm5 + + call _aesni_decrypt4 + + pxor %xmm10,%xmm2 + movdqa %xmm14,%xmm10 + pxor %xmm11,%xmm3 + movdqa %xmm15,%xmm11 + pxor %xmm12,%xmm4 + movdqu %xmm2,(%rsi) + pxor %xmm13,%xmm5 + movdqu %xmm3,16(%rsi) + movdqu %xmm4,32(%rsi) + movdqu %xmm5,48(%rsi) + leaq 64(%rsi),%rsi + jmp L$xts_dec_done + +.p2align 4 +L$xts_dec_done: + andq $15,%r9 + jz L$xts_dec_ret +L$xts_dec_done2: + movq %r9,%rdx + movq %rbp,%rcx + movl %r10d,%eax + + movups (%rdi),%xmm2 + xorps %xmm11,%xmm2 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +L$oop_dec1_13: +.byte 102,15,56,222,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz L$oop_dec1_13 +.byte 102,15,56,223,209 + xorps %xmm11,%xmm2 + movups %xmm2,(%rsi) + +L$xts_dec_steal: + movzbl 16(%rdi),%eax + movzbl (%rsi),%ecx + leaq 1(%rdi),%rdi + movb %al,(%rsi) + movb %cl,16(%rsi) + leaq 1(%rsi),%rsi + subq $1,%rdx + jnz L$xts_dec_steal + + subq %r9,%rsi + movq %rbp,%rcx + movl %r10d,%eax + + movups (%rsi),%xmm2 + xorps %xmm10,%xmm2 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +L$oop_dec1_14: +.byte 102,15,56,222,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz L$oop_dec1_14 +.byte 102,15,56,223,209 + xorps %xmm10,%xmm2 + movups %xmm2,(%rsi) + +L$xts_dec_ret: + xorps %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + movaps %xmm0,0(%rsp) + pxor %xmm8,%xmm8 + movaps %xmm0,16(%rsp) + pxor %xmm9,%xmm9 + movaps %xmm0,32(%rsp) + pxor %xmm10,%xmm10 + movaps %xmm0,48(%rsp) + pxor %xmm11,%xmm11 + movaps %xmm0,64(%rsp) + pxor %xmm12,%xmm12 + movaps %xmm0,80(%rsp) + pxor %xmm13,%xmm13 + movaps %xmm0,96(%rsp) + pxor %xmm14,%xmm14 + pxor %xmm15,%xmm15 + movq -8(%r11),%rbp + + leaq (%r11),%rsp + +L$xts_dec_epilogue: + .byte 0xf3,0xc3 + + +.globl _aesni_ocb_encrypt + +.p2align 5 +_aesni_ocb_encrypt: + + leaq (%rsp),%rax + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + movq 8(%rax),%rbx + movq 8+8(%rax),%rbp + + movl 240(%rcx),%r10d + movq %rcx,%r11 + shll $4,%r10d + movups (%rcx),%xmm9 + movups 16(%rcx,%r10,1),%xmm1 + + movdqu (%r9),%xmm15 + pxor %xmm1,%xmm9 + pxor %xmm1,%xmm15 + + movl $16+32,%eax + leaq 32(%r11,%r10,1),%rcx + movups 16(%r11),%xmm1 + subq %r10,%rax + movq %rax,%r10 + + movdqu (%rbx),%xmm10 + movdqu (%rbp),%xmm8 + + testq $1,%r8 + jnz L$ocb_enc_odd + + bsfq %r8,%r12 + addq $1,%r8 + shlq $4,%r12 + movdqu (%rbx,%r12,1),%xmm7 + movdqu (%rdi),%xmm2 + leaq 16(%rdi),%rdi + + call __ocb_encrypt1 + + movdqa %xmm7,%xmm15 + movups %xmm2,(%rsi) + leaq 16(%rsi),%rsi + subq $1,%rdx + jz L$ocb_enc_done + +L$ocb_enc_odd: + leaq 1(%r8),%r12 + leaq 3(%r8),%r13 + leaq 5(%r8),%r14 + leaq 6(%r8),%r8 + bsfq %r12,%r12 + bsfq %r13,%r13 + bsfq %r14,%r14 + shlq $4,%r12 + shlq $4,%r13 + shlq $4,%r14 + + subq $6,%rdx + jc L$ocb_enc_short + jmp L$ocb_enc_grandloop + +.p2align 5 +L$ocb_enc_grandloop: + movdqu 0(%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqu 32(%rdi),%xmm4 + movdqu 48(%rdi),%xmm5 + movdqu 64(%rdi),%xmm6 + movdqu 80(%rdi),%xmm7 + leaq 96(%rdi),%rdi + + call __ocb_encrypt6 + + movups %xmm2,0(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + movups %xmm6,64(%rsi) + movups %xmm7,80(%rsi) + leaq 96(%rsi),%rsi + subq $6,%rdx + jnc L$ocb_enc_grandloop + +L$ocb_enc_short: + addq $6,%rdx + jz L$ocb_enc_done + + movdqu 0(%rdi),%xmm2 + cmpq $2,%rdx + jb L$ocb_enc_one + movdqu 16(%rdi),%xmm3 + je L$ocb_enc_two + + movdqu 32(%rdi),%xmm4 + cmpq $4,%rdx + jb L$ocb_enc_three + movdqu 48(%rdi),%xmm5 + je L$ocb_enc_four + + movdqu 64(%rdi),%xmm6 + pxor %xmm7,%xmm7 + + call __ocb_encrypt6 + + movdqa %xmm14,%xmm15 + movups %xmm2,0(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + movups %xmm6,64(%rsi) + + jmp L$ocb_enc_done + +.p2align 4 +L$ocb_enc_one: + movdqa %xmm10,%xmm7 + + call __ocb_encrypt1 + + movdqa %xmm7,%xmm15 + movups %xmm2,0(%rsi) + jmp L$ocb_enc_done + +.p2align 4 +L$ocb_enc_two: + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + + call __ocb_encrypt4 + + movdqa %xmm11,%xmm15 + movups %xmm2,0(%rsi) + movups %xmm3,16(%rsi) + + jmp L$ocb_enc_done + +.p2align 4 +L$ocb_enc_three: + pxor %xmm5,%xmm5 + + call __ocb_encrypt4 + + movdqa %xmm12,%xmm15 + movups %xmm2,0(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + + jmp L$ocb_enc_done + +.p2align 4 +L$ocb_enc_four: + call __ocb_encrypt4 + + movdqa %xmm13,%xmm15 + movups %xmm2,0(%rsi) + movups %xmm3,16(%rsi) + movups %xmm4,32(%rsi) + movups %xmm5,48(%rsi) + +L$ocb_enc_done: + pxor %xmm0,%xmm15 + movdqu %xmm8,(%rbp) + movdqu %xmm15,(%r9) + + xorps %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + pxor %xmm8,%xmm8 + pxor %xmm9,%xmm9 + pxor %xmm10,%xmm10 + pxor %xmm11,%xmm11 + pxor %xmm12,%xmm12 + pxor %xmm13,%xmm13 + pxor %xmm14,%xmm14 + pxor %xmm15,%xmm15 + leaq 40(%rsp),%rax + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$ocb_enc_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ocb_encrypt6: + + pxor %xmm9,%xmm15 + movdqu (%rbx,%r12,1),%xmm11 + movdqa %xmm10,%xmm12 + movdqu (%rbx,%r13,1),%xmm13 + movdqa %xmm10,%xmm14 + pxor %xmm15,%xmm10 + movdqu (%rbx,%r14,1),%xmm15 + pxor %xmm10,%xmm11 + pxor %xmm2,%xmm8 + pxor %xmm10,%xmm2 + pxor %xmm11,%xmm12 + pxor %xmm3,%xmm8 + pxor %xmm11,%xmm3 + pxor %xmm12,%xmm13 + pxor %xmm4,%xmm8 + pxor %xmm12,%xmm4 + pxor %xmm13,%xmm14 + pxor %xmm5,%xmm8 + pxor %xmm13,%xmm5 + pxor %xmm14,%xmm15 + pxor %xmm6,%xmm8 + pxor %xmm14,%xmm6 + pxor %xmm7,%xmm8 + pxor %xmm15,%xmm7 + movups 32(%r11),%xmm0 + + leaq 1(%r8),%r12 + leaq 3(%r8),%r13 + leaq 5(%r8),%r14 + addq $6,%r8 + pxor %xmm9,%xmm10 + bsfq %r12,%r12 + bsfq %r13,%r13 + bsfq %r14,%r14 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + pxor %xmm9,%xmm11 + pxor %xmm9,%xmm12 +.byte 102,15,56,220,241 + pxor %xmm9,%xmm13 + pxor %xmm9,%xmm14 +.byte 102,15,56,220,249 + movups 48(%r11),%xmm1 + pxor %xmm9,%xmm15 + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 + movups 64(%r11),%xmm0 + shlq $4,%r12 + shlq $4,%r13 + jmp L$ocb_enc_loop6 + +.p2align 5 +L$ocb_enc_loop6: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 +.byte 102,15,56,220,240 +.byte 102,15,56,220,248 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$ocb_enc_loop6 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 +.byte 102,15,56,220,241 +.byte 102,15,56,220,249 + movups 16(%r11),%xmm1 + shlq $4,%r14 + +.byte 102,65,15,56,221,210 + movdqu (%rbx),%xmm10 + movq %r10,%rax +.byte 102,65,15,56,221,219 +.byte 102,65,15,56,221,228 +.byte 102,65,15,56,221,237 +.byte 102,65,15,56,221,246 +.byte 102,65,15,56,221,255 + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ocb_encrypt4: + + pxor %xmm9,%xmm15 + movdqu (%rbx,%r12,1),%xmm11 + movdqa %xmm10,%xmm12 + movdqu (%rbx,%r13,1),%xmm13 + pxor %xmm15,%xmm10 + pxor %xmm10,%xmm11 + pxor %xmm2,%xmm8 + pxor %xmm10,%xmm2 + pxor %xmm11,%xmm12 + pxor %xmm3,%xmm8 + pxor %xmm11,%xmm3 + pxor %xmm12,%xmm13 + pxor %xmm4,%xmm8 + pxor %xmm12,%xmm4 + pxor %xmm5,%xmm8 + pxor %xmm13,%xmm5 + movups 32(%r11),%xmm0 + + pxor %xmm9,%xmm10 + pxor %xmm9,%xmm11 + pxor %xmm9,%xmm12 + pxor %xmm9,%xmm13 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups 48(%r11),%xmm1 + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups 64(%r11),%xmm0 + jmp L$ocb_enc_loop4 + +.p2align 5 +L$ocb_enc_loop4: +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,220,208 +.byte 102,15,56,220,216 +.byte 102,15,56,220,224 +.byte 102,15,56,220,232 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$ocb_enc_loop4 + +.byte 102,15,56,220,209 +.byte 102,15,56,220,217 +.byte 102,15,56,220,225 +.byte 102,15,56,220,233 + movups 16(%r11),%xmm1 + movq %r10,%rax + +.byte 102,65,15,56,221,210 +.byte 102,65,15,56,221,219 +.byte 102,65,15,56,221,228 +.byte 102,65,15,56,221,237 + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ocb_encrypt1: + + pxor %xmm15,%xmm7 + pxor %xmm9,%xmm7 + pxor %xmm2,%xmm8 + pxor %xmm7,%xmm2 + movups 32(%r11),%xmm0 + +.byte 102,15,56,220,209 + movups 48(%r11),%xmm1 + pxor %xmm9,%xmm7 + +.byte 102,15,56,220,208 + movups 64(%r11),%xmm0 + jmp L$ocb_enc_loop1 + +.p2align 5 +L$ocb_enc_loop1: +.byte 102,15,56,220,209 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,220,208 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$ocb_enc_loop1 + +.byte 102,15,56,220,209 + movups 16(%r11),%xmm1 + movq %r10,%rax + +.byte 102,15,56,221,215 + .byte 0xf3,0xc3 + + + +.globl _aesni_ocb_decrypt + +.p2align 5 +_aesni_ocb_decrypt: + + leaq (%rsp),%rax + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + movq 8(%rax),%rbx + movq 8+8(%rax),%rbp + + movl 240(%rcx),%r10d + movq %rcx,%r11 + shll $4,%r10d + movups (%rcx),%xmm9 + movups 16(%rcx,%r10,1),%xmm1 + + movdqu (%r9),%xmm15 + pxor %xmm1,%xmm9 + pxor %xmm1,%xmm15 + + movl $16+32,%eax + leaq 32(%r11,%r10,1),%rcx + movups 16(%r11),%xmm1 + subq %r10,%rax + movq %rax,%r10 + + movdqu (%rbx),%xmm10 + movdqu (%rbp),%xmm8 + + testq $1,%r8 + jnz L$ocb_dec_odd + + bsfq %r8,%r12 + addq $1,%r8 + shlq $4,%r12 + movdqu (%rbx,%r12,1),%xmm7 + movdqu (%rdi),%xmm2 + leaq 16(%rdi),%rdi + + call __ocb_decrypt1 + + movdqa %xmm7,%xmm15 + movups %xmm2,(%rsi) + xorps %xmm2,%xmm8 + leaq 16(%rsi),%rsi + subq $1,%rdx + jz L$ocb_dec_done + +L$ocb_dec_odd: + leaq 1(%r8),%r12 + leaq 3(%r8),%r13 + leaq 5(%r8),%r14 + leaq 6(%r8),%r8 + bsfq %r12,%r12 + bsfq %r13,%r13 + bsfq %r14,%r14 + shlq $4,%r12 + shlq $4,%r13 + shlq $4,%r14 + + subq $6,%rdx + jc L$ocb_dec_short + jmp L$ocb_dec_grandloop + +.p2align 5 +L$ocb_dec_grandloop: + movdqu 0(%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqu 32(%rdi),%xmm4 + movdqu 48(%rdi),%xmm5 + movdqu 64(%rdi),%xmm6 + movdqu 80(%rdi),%xmm7 + leaq 96(%rdi),%rdi + + call __ocb_decrypt6 + + movups %xmm2,0(%rsi) + pxor %xmm2,%xmm8 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm8 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm8 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm8 + movups %xmm6,64(%rsi) + pxor %xmm6,%xmm8 + movups %xmm7,80(%rsi) + pxor %xmm7,%xmm8 + leaq 96(%rsi),%rsi + subq $6,%rdx + jnc L$ocb_dec_grandloop + +L$ocb_dec_short: + addq $6,%rdx + jz L$ocb_dec_done + + movdqu 0(%rdi),%xmm2 + cmpq $2,%rdx + jb L$ocb_dec_one + movdqu 16(%rdi),%xmm3 + je L$ocb_dec_two + + movdqu 32(%rdi),%xmm4 + cmpq $4,%rdx + jb L$ocb_dec_three + movdqu 48(%rdi),%xmm5 + je L$ocb_dec_four + + movdqu 64(%rdi),%xmm6 + pxor %xmm7,%xmm7 + + call __ocb_decrypt6 + + movdqa %xmm14,%xmm15 + movups %xmm2,0(%rsi) + pxor %xmm2,%xmm8 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm8 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm8 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm8 + movups %xmm6,64(%rsi) + pxor %xmm6,%xmm8 + + jmp L$ocb_dec_done + +.p2align 4 +L$ocb_dec_one: + movdqa %xmm10,%xmm7 + + call __ocb_decrypt1 + + movdqa %xmm7,%xmm15 + movups %xmm2,0(%rsi) + xorps %xmm2,%xmm8 + jmp L$ocb_dec_done + +.p2align 4 +L$ocb_dec_two: + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + + call __ocb_decrypt4 + + movdqa %xmm11,%xmm15 + movups %xmm2,0(%rsi) + xorps %xmm2,%xmm8 + movups %xmm3,16(%rsi) + xorps %xmm3,%xmm8 + + jmp L$ocb_dec_done + +.p2align 4 +L$ocb_dec_three: + pxor %xmm5,%xmm5 + + call __ocb_decrypt4 + + movdqa %xmm12,%xmm15 + movups %xmm2,0(%rsi) + xorps %xmm2,%xmm8 + movups %xmm3,16(%rsi) + xorps %xmm3,%xmm8 + movups %xmm4,32(%rsi) + xorps %xmm4,%xmm8 + + jmp L$ocb_dec_done + +.p2align 4 +L$ocb_dec_four: + call __ocb_decrypt4 + + movdqa %xmm13,%xmm15 + movups %xmm2,0(%rsi) + pxor %xmm2,%xmm8 + movups %xmm3,16(%rsi) + pxor %xmm3,%xmm8 + movups %xmm4,32(%rsi) + pxor %xmm4,%xmm8 + movups %xmm5,48(%rsi) + pxor %xmm5,%xmm8 + +L$ocb_dec_done: + pxor %xmm0,%xmm15 + movdqu %xmm8,(%rbp) + movdqu %xmm15,(%r9) + + xorps %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + pxor %xmm8,%xmm8 + pxor %xmm9,%xmm9 + pxor %xmm10,%xmm10 + pxor %xmm11,%xmm11 + pxor %xmm12,%xmm12 + pxor %xmm13,%xmm13 + pxor %xmm14,%xmm14 + pxor %xmm15,%xmm15 + leaq 40(%rsp),%rax + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$ocb_dec_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ocb_decrypt6: + + pxor %xmm9,%xmm15 + movdqu (%rbx,%r12,1),%xmm11 + movdqa %xmm10,%xmm12 + movdqu (%rbx,%r13,1),%xmm13 + movdqa %xmm10,%xmm14 + pxor %xmm15,%xmm10 + movdqu (%rbx,%r14,1),%xmm15 + pxor %xmm10,%xmm11 + pxor %xmm10,%xmm2 + pxor %xmm11,%xmm12 + pxor %xmm11,%xmm3 + pxor %xmm12,%xmm13 + pxor %xmm12,%xmm4 + pxor %xmm13,%xmm14 + pxor %xmm13,%xmm5 + pxor %xmm14,%xmm15 + pxor %xmm14,%xmm6 + pxor %xmm15,%xmm7 + movups 32(%r11),%xmm0 + + leaq 1(%r8),%r12 + leaq 3(%r8),%r13 + leaq 5(%r8),%r14 + addq $6,%r8 + pxor %xmm9,%xmm10 + bsfq %r12,%r12 + bsfq %r13,%r13 + bsfq %r14,%r14 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + pxor %xmm9,%xmm11 + pxor %xmm9,%xmm12 +.byte 102,15,56,222,241 + pxor %xmm9,%xmm13 + pxor %xmm9,%xmm14 +.byte 102,15,56,222,249 + movups 48(%r11),%xmm1 + pxor %xmm9,%xmm15 + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 + movups 64(%r11),%xmm0 + shlq $4,%r12 + shlq $4,%r13 + jmp L$ocb_dec_loop6 + +.p2align 5 +L$ocb_dec_loop6: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$ocb_dec_loop6 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 + movups 16(%r11),%xmm1 + shlq $4,%r14 + +.byte 102,65,15,56,223,210 + movdqu (%rbx),%xmm10 + movq %r10,%rax +.byte 102,65,15,56,223,219 +.byte 102,65,15,56,223,228 +.byte 102,65,15,56,223,237 +.byte 102,65,15,56,223,246 +.byte 102,65,15,56,223,255 + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ocb_decrypt4: + + pxor %xmm9,%xmm15 + movdqu (%rbx,%r12,1),%xmm11 + movdqa %xmm10,%xmm12 + movdqu (%rbx,%r13,1),%xmm13 + pxor %xmm15,%xmm10 + pxor %xmm10,%xmm11 + pxor %xmm10,%xmm2 + pxor %xmm11,%xmm12 + pxor %xmm11,%xmm3 + pxor %xmm12,%xmm13 + pxor %xmm12,%xmm4 + pxor %xmm13,%xmm5 + movups 32(%r11),%xmm0 + + pxor %xmm9,%xmm10 + pxor %xmm9,%xmm11 + pxor %xmm9,%xmm12 + pxor %xmm9,%xmm13 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups 48(%r11),%xmm1 + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups 64(%r11),%xmm0 + jmp L$ocb_dec_loop4 + +.p2align 5 +L$ocb_dec_loop4: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$ocb_dec_loop4 + +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + movups 16(%r11),%xmm1 + movq %r10,%rax + +.byte 102,65,15,56,223,210 +.byte 102,65,15,56,223,219 +.byte 102,65,15,56,223,228 +.byte 102,65,15,56,223,237 + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ocb_decrypt1: + + pxor %xmm15,%xmm7 + pxor %xmm9,%xmm7 + pxor %xmm7,%xmm2 + movups 32(%r11),%xmm0 + +.byte 102,15,56,222,209 + movups 48(%r11),%xmm1 + pxor %xmm9,%xmm7 + +.byte 102,15,56,222,208 + movups 64(%r11),%xmm0 + jmp L$ocb_dec_loop1 + +.p2align 5 +L$ocb_dec_loop1: +.byte 102,15,56,222,209 + movups (%rcx,%rax,1),%xmm1 + addq $32,%rax + +.byte 102,15,56,222,208 + movups -16(%rcx,%rax,1),%xmm0 + jnz L$ocb_dec_loop1 + +.byte 102,15,56,222,209 + movups 16(%r11),%xmm1 + movq %r10,%rax + +.byte 102,15,56,223,215 + .byte 0xf3,0xc3 + + +.globl _aesni_cbc_encrypt + +.p2align 4 +_aesni_cbc_encrypt: + + testq %rdx,%rdx + jz L$cbc_ret + + movl 240(%rcx),%r10d + movq %rcx,%r11 + testl %r9d,%r9d + jz L$cbc_decrypt + + movups (%r8),%xmm2 + movl %r10d,%eax + cmpq $16,%rdx + jb L$cbc_enc_tail + subq $16,%rdx + jmp L$cbc_enc_loop +.p2align 4 +L$cbc_enc_loop: + movups (%rdi),%xmm3 + leaq 16(%rdi),%rdi + + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + xorps %xmm0,%xmm3 + leaq 32(%rcx),%rcx + xorps %xmm3,%xmm2 +L$oop_enc1_15: +.byte 102,15,56,220,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz L$oop_enc1_15 +.byte 102,15,56,221,209 + movl %r10d,%eax + movq %r11,%rcx + movups %xmm2,0(%rsi) + leaq 16(%rsi),%rsi + subq $16,%rdx + jnc L$cbc_enc_loop + addq $16,%rdx + jnz L$cbc_enc_tail + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + movups %xmm2,(%r8) + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + jmp L$cbc_ret + +L$cbc_enc_tail: + movq %rdx,%rcx + xchgq %rdi,%rsi +.long 0x9066A4F3 + movl $16,%ecx + subq %rdx,%rcx + xorl %eax,%eax +.long 0x9066AAF3 + leaq -16(%rdi),%rdi + movl %r10d,%eax + movq %rdi,%rsi + movq %r11,%rcx + xorq %rdx,%rdx + jmp L$cbc_enc_loop + +.p2align 4 +L$cbc_decrypt: + cmpq $16,%rdx + jne L$cbc_decrypt_bulk + + + + movdqu (%rdi),%xmm2 + movdqu (%r8),%xmm3 + movdqa %xmm2,%xmm4 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +L$oop_dec1_16: +.byte 102,15,56,222,209 + decl %r10d + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz L$oop_dec1_16 +.byte 102,15,56,223,209 + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + movdqu %xmm4,(%r8) + xorps %xmm3,%xmm2 + pxor %xmm3,%xmm3 + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + jmp L$cbc_ret +.p2align 4 +L$cbc_decrypt_bulk: + leaq (%rsp),%r11 + + pushq %rbp + + subq $16,%rsp + andq $-16,%rsp + movq %rcx,%rbp + movups (%r8),%xmm10 + movl %r10d,%eax + cmpq $0x50,%rdx + jbe L$cbc_dec_tail + + movups (%rcx),%xmm0 + movdqu 0(%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqa %xmm2,%xmm11 + movdqu 32(%rdi),%xmm4 + movdqa %xmm3,%xmm12 + movdqu 48(%rdi),%xmm5 + movdqa %xmm4,%xmm13 + movdqu 64(%rdi),%xmm6 + movdqa %xmm5,%xmm14 + movdqu 80(%rdi),%xmm7 + movdqa %xmm6,%xmm15 + movl _OPENSSL_ia32cap_P+4(%rip),%r9d + cmpq $0x70,%rdx + jbe L$cbc_dec_six_or_seven + + andl $71303168,%r9d + subq $0x50,%rdx + cmpl $4194304,%r9d + je L$cbc_dec_loop6_enter + subq $0x20,%rdx + leaq 112(%rcx),%rcx + jmp L$cbc_dec_loop8_enter +.p2align 4 +L$cbc_dec_loop8: + movups %xmm9,(%rsi) + leaq 16(%rsi),%rsi +L$cbc_dec_loop8_enter: + movdqu 96(%rdi),%xmm8 + pxor %xmm0,%xmm2 + movdqu 112(%rdi),%xmm9 + pxor %xmm0,%xmm3 + movups 16-112(%rcx),%xmm1 + pxor %xmm0,%xmm4 + movq $-1,%rbp + cmpq $0x70,%rdx + pxor %xmm0,%xmm5 + pxor %xmm0,%xmm6 + pxor %xmm0,%xmm7 + pxor %xmm0,%xmm8 + +.byte 102,15,56,222,209 + pxor %xmm0,%xmm9 + movups 32-112(%rcx),%xmm0 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 + adcq $0,%rbp + andq $128,%rbp +.byte 102,68,15,56,222,201 + addq %rdi,%rbp + movups 48-112(%rcx),%xmm1 +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups 64-112(%rcx),%xmm0 + nop +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 + movups 80-112(%rcx),%xmm1 + nop +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups 96-112(%rcx),%xmm0 + nop +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 + movups 112-112(%rcx),%xmm1 + nop +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups 128-112(%rcx),%xmm0 + nop +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 + movups 144-112(%rcx),%xmm1 + cmpl $11,%eax +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups 160-112(%rcx),%xmm0 + jb L$cbc_dec_done +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 + movups 176-112(%rcx),%xmm1 + nop +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups 192-112(%rcx),%xmm0 + je L$cbc_dec_done +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 + movups 208-112(%rcx),%xmm1 + nop +.byte 102,15,56,222,208 +.byte 102,15,56,222,216 +.byte 102,15,56,222,224 +.byte 102,15,56,222,232 +.byte 102,15,56,222,240 +.byte 102,15,56,222,248 +.byte 102,68,15,56,222,192 +.byte 102,68,15,56,222,200 + movups 224-112(%rcx),%xmm0 + jmp L$cbc_dec_done +.p2align 4 +L$cbc_dec_done: +.byte 102,15,56,222,209 +.byte 102,15,56,222,217 + pxor %xmm0,%xmm10 + pxor %xmm0,%xmm11 +.byte 102,15,56,222,225 +.byte 102,15,56,222,233 + pxor %xmm0,%xmm12 + pxor %xmm0,%xmm13 +.byte 102,15,56,222,241 +.byte 102,15,56,222,249 + pxor %xmm0,%xmm14 + pxor %xmm0,%xmm15 +.byte 102,68,15,56,222,193 +.byte 102,68,15,56,222,201 + movdqu 80(%rdi),%xmm1 + +.byte 102,65,15,56,223,210 + movdqu 96(%rdi),%xmm10 + pxor %xmm0,%xmm1 +.byte 102,65,15,56,223,219 + pxor %xmm0,%xmm10 + movdqu 112(%rdi),%xmm0 +.byte 102,65,15,56,223,228 + leaq 128(%rdi),%rdi + movdqu 0(%rbp),%xmm11 +.byte 102,65,15,56,223,237 +.byte 102,65,15,56,223,246 + movdqu 16(%rbp),%xmm12 + movdqu 32(%rbp),%xmm13 +.byte 102,65,15,56,223,255 +.byte 102,68,15,56,223,193 + movdqu 48(%rbp),%xmm14 + movdqu 64(%rbp),%xmm15 +.byte 102,69,15,56,223,202 + movdqa %xmm0,%xmm10 + movdqu 80(%rbp),%xmm1 + movups -112(%rcx),%xmm0 + + movups %xmm2,(%rsi) + movdqa %xmm11,%xmm2 + movups %xmm3,16(%rsi) + movdqa %xmm12,%xmm3 + movups %xmm4,32(%rsi) + movdqa %xmm13,%xmm4 + movups %xmm5,48(%rsi) + movdqa %xmm14,%xmm5 + movups %xmm6,64(%rsi) + movdqa %xmm15,%xmm6 + movups %xmm7,80(%rsi) + movdqa %xmm1,%xmm7 + movups %xmm8,96(%rsi) + leaq 112(%rsi),%rsi + + subq $0x80,%rdx + ja L$cbc_dec_loop8 + + movaps %xmm9,%xmm2 + leaq -112(%rcx),%rcx + addq $0x70,%rdx + jle L$cbc_dec_clear_tail_collected + movups %xmm9,(%rsi) + leaq 16(%rsi),%rsi + cmpq $0x50,%rdx + jbe L$cbc_dec_tail + + movaps %xmm11,%xmm2 +L$cbc_dec_six_or_seven: + cmpq $0x60,%rdx + ja L$cbc_dec_seven + + movaps %xmm7,%xmm8 + call _aesni_decrypt6 + pxor %xmm10,%xmm2 + movaps %xmm8,%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + pxor %xmm13,%xmm5 + movdqu %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + pxor %xmm14,%xmm6 + movdqu %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + pxor %xmm15,%xmm7 + movdqu %xmm6,64(%rsi) + pxor %xmm6,%xmm6 + leaq 80(%rsi),%rsi + movdqa %xmm7,%xmm2 + pxor %xmm7,%xmm7 + jmp L$cbc_dec_tail_collected + +.p2align 4 +L$cbc_dec_seven: + movups 96(%rdi),%xmm8 + xorps %xmm9,%xmm9 + call _aesni_decrypt8 + movups 80(%rdi),%xmm9 + pxor %xmm10,%xmm2 + movups 96(%rdi),%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + pxor %xmm13,%xmm5 + movdqu %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + pxor %xmm14,%xmm6 + movdqu %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + pxor %xmm15,%xmm7 + movdqu %xmm6,64(%rsi) + pxor %xmm6,%xmm6 + pxor %xmm9,%xmm8 + movdqu %xmm7,80(%rsi) + pxor %xmm7,%xmm7 + leaq 96(%rsi),%rsi + movdqa %xmm8,%xmm2 + pxor %xmm8,%xmm8 + pxor %xmm9,%xmm9 + jmp L$cbc_dec_tail_collected + +.p2align 4 +L$cbc_dec_loop6: + movups %xmm7,(%rsi) + leaq 16(%rsi),%rsi + movdqu 0(%rdi),%xmm2 + movdqu 16(%rdi),%xmm3 + movdqa %xmm2,%xmm11 + movdqu 32(%rdi),%xmm4 + movdqa %xmm3,%xmm12 + movdqu 48(%rdi),%xmm5 + movdqa %xmm4,%xmm13 + movdqu 64(%rdi),%xmm6 + movdqa %xmm5,%xmm14 + movdqu 80(%rdi),%xmm7 + movdqa %xmm6,%xmm15 +L$cbc_dec_loop6_enter: + leaq 96(%rdi),%rdi + movdqa %xmm7,%xmm8 + + call _aesni_decrypt6 + + pxor %xmm10,%xmm2 + movdqa %xmm8,%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm13,%xmm5 + movdqu %xmm4,32(%rsi) + pxor %xmm14,%xmm6 + movq %rbp,%rcx + movdqu %xmm5,48(%rsi) + pxor %xmm15,%xmm7 + movl %r10d,%eax + movdqu %xmm6,64(%rsi) + leaq 80(%rsi),%rsi + subq $0x60,%rdx + ja L$cbc_dec_loop6 + + movdqa %xmm7,%xmm2 + addq $0x50,%rdx + jle L$cbc_dec_clear_tail_collected + movups %xmm7,(%rsi) + leaq 16(%rsi),%rsi + +L$cbc_dec_tail: + movups (%rdi),%xmm2 + subq $0x10,%rdx + jbe L$cbc_dec_one + + movups 16(%rdi),%xmm3 + movaps %xmm2,%xmm11 + subq $0x10,%rdx + jbe L$cbc_dec_two + + movups 32(%rdi),%xmm4 + movaps %xmm3,%xmm12 + subq $0x10,%rdx + jbe L$cbc_dec_three + + movups 48(%rdi),%xmm5 + movaps %xmm4,%xmm13 + subq $0x10,%rdx + jbe L$cbc_dec_four + + movups 64(%rdi),%xmm6 + movaps %xmm5,%xmm14 + movaps %xmm6,%xmm15 + xorps %xmm7,%xmm7 + call _aesni_decrypt6 + pxor %xmm10,%xmm2 + movaps %xmm15,%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + pxor %xmm13,%xmm5 + movdqu %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + pxor %xmm14,%xmm6 + movdqu %xmm5,48(%rsi) + pxor %xmm5,%xmm5 + leaq 64(%rsi),%rsi + movdqa %xmm6,%xmm2 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + subq $0x10,%rdx + jmp L$cbc_dec_tail_collected + +.p2align 4 +L$cbc_dec_one: + movaps %xmm2,%xmm11 + movups (%rcx),%xmm0 + movups 16(%rcx),%xmm1 + leaq 32(%rcx),%rcx + xorps %xmm0,%xmm2 +L$oop_dec1_17: +.byte 102,15,56,222,209 + decl %eax + movups (%rcx),%xmm1 + leaq 16(%rcx),%rcx + jnz L$oop_dec1_17 +.byte 102,15,56,223,209 + xorps %xmm10,%xmm2 + movaps %xmm11,%xmm10 + jmp L$cbc_dec_tail_collected +.p2align 4 +L$cbc_dec_two: + movaps %xmm3,%xmm12 + call _aesni_decrypt2 + pxor %xmm10,%xmm2 + movaps %xmm12,%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + movdqa %xmm3,%xmm2 + pxor %xmm3,%xmm3 + leaq 16(%rsi),%rsi + jmp L$cbc_dec_tail_collected +.p2align 4 +L$cbc_dec_three: + movaps %xmm4,%xmm13 + call _aesni_decrypt3 + pxor %xmm10,%xmm2 + movaps %xmm13,%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + movdqa %xmm4,%xmm2 + pxor %xmm4,%xmm4 + leaq 32(%rsi),%rsi + jmp L$cbc_dec_tail_collected +.p2align 4 +L$cbc_dec_four: + movaps %xmm5,%xmm14 + call _aesni_decrypt4 + pxor %xmm10,%xmm2 + movaps %xmm14,%xmm10 + pxor %xmm11,%xmm3 + movdqu %xmm2,(%rsi) + pxor %xmm12,%xmm4 + movdqu %xmm3,16(%rsi) + pxor %xmm3,%xmm3 + pxor %xmm13,%xmm5 + movdqu %xmm4,32(%rsi) + pxor %xmm4,%xmm4 + movdqa %xmm5,%xmm2 + pxor %xmm5,%xmm5 + leaq 48(%rsi),%rsi + jmp L$cbc_dec_tail_collected + +.p2align 4 +L$cbc_dec_clear_tail_collected: + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + pxor %xmm8,%xmm8 + pxor %xmm9,%xmm9 +L$cbc_dec_tail_collected: + movups %xmm10,(%r8) + andq $15,%rdx + jnz L$cbc_dec_tail_partial + movups %xmm2,(%rsi) + pxor %xmm2,%xmm2 + jmp L$cbc_dec_ret +.p2align 4 +L$cbc_dec_tail_partial: + movaps %xmm2,(%rsp) + pxor %xmm2,%xmm2 + movq $16,%rcx + movq %rsi,%rdi + subq %rdx,%rcx + leaq (%rsp),%rsi +.long 0x9066A4F3 + movdqa %xmm2,(%rsp) + +L$cbc_dec_ret: + xorps %xmm0,%xmm0 + pxor %xmm1,%xmm1 + movq -8(%r11),%rbp + + leaq (%r11),%rsp + +L$cbc_ret: + .byte 0xf3,0xc3 + + +.globl _aesni_set_decrypt_key + +.p2align 4 +_aesni_set_decrypt_key: + +.byte 0x48,0x83,0xEC,0x08 + + call __aesni_set_encrypt_key + shll $4,%esi + testl %eax,%eax + jnz L$dec_key_ret + leaq 16(%rdx,%rsi,1),%rdi + + movups (%rdx),%xmm0 + movups (%rdi),%xmm1 + movups %xmm0,(%rdi) + movups %xmm1,(%rdx) + leaq 16(%rdx),%rdx + leaq -16(%rdi),%rdi + +L$dec_key_inverse: + movups (%rdx),%xmm0 + movups (%rdi),%xmm1 +.byte 102,15,56,219,192 +.byte 102,15,56,219,201 + leaq 16(%rdx),%rdx + leaq -16(%rdi),%rdi + movups %xmm0,16(%rdi) + movups %xmm1,-16(%rdx) + cmpq %rdx,%rdi + ja L$dec_key_inverse + + movups (%rdx),%xmm0 +.byte 102,15,56,219,192 + pxor %xmm1,%xmm1 + movups %xmm0,(%rdi) + pxor %xmm0,%xmm0 +L$dec_key_ret: + addq $8,%rsp + + .byte 0xf3,0xc3 + +L$SEH_end_set_decrypt_key: + +.globl _aesni_set_encrypt_key + +.p2align 4 +_aesni_set_encrypt_key: +__aesni_set_encrypt_key: + +.byte 0x48,0x83,0xEC,0x08 + + movq $-1,%rax + testq %rdi,%rdi + jz L$enc_key_ret + testq %rdx,%rdx + jz L$enc_key_ret + + movl $268437504,%r10d + movups (%rdi),%xmm0 + xorps %xmm4,%xmm4 + andl _OPENSSL_ia32cap_P+4(%rip),%r10d + leaq 16(%rdx),%rax + cmpl $256,%esi + je L$14rounds + cmpl $192,%esi + je L$12rounds + cmpl $128,%esi + jne L$bad_keybits + +L$10rounds: + movl $9,%esi + cmpl $268435456,%r10d + je L$10rounds_alt + + movups %xmm0,(%rdx) +.byte 102,15,58,223,200,1 + call L$key_expansion_128_cold +.byte 102,15,58,223,200,2 + call L$key_expansion_128 +.byte 102,15,58,223,200,4 + call L$key_expansion_128 +.byte 102,15,58,223,200,8 + call L$key_expansion_128 +.byte 102,15,58,223,200,16 + call L$key_expansion_128 +.byte 102,15,58,223,200,32 + call L$key_expansion_128 +.byte 102,15,58,223,200,64 + call L$key_expansion_128 +.byte 102,15,58,223,200,128 + call L$key_expansion_128 +.byte 102,15,58,223,200,27 + call L$key_expansion_128 +.byte 102,15,58,223,200,54 + call L$key_expansion_128 + movups %xmm0,(%rax) + movl %esi,80(%rax) + xorl %eax,%eax + jmp L$enc_key_ret + +.p2align 4 +L$10rounds_alt: + movdqa L$key_rotate(%rip),%xmm5 + movl $8,%r10d + movdqa L$key_rcon1(%rip),%xmm4 + movdqa %xmm0,%xmm2 + movdqu %xmm0,(%rdx) + jmp L$oop_key128 + +.p2align 4 +L$oop_key128: +.byte 102,15,56,0,197 +.byte 102,15,56,221,196 + pslld $1,%xmm4 + leaq 16(%rax),%rax + + movdqa %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm3,%xmm2 + + pxor %xmm2,%xmm0 + movdqu %xmm0,-16(%rax) + movdqa %xmm0,%xmm2 + + decl %r10d + jnz L$oop_key128 + + movdqa L$key_rcon1b(%rip),%xmm4 + +.byte 102,15,56,0,197 +.byte 102,15,56,221,196 + pslld $1,%xmm4 + + movdqa %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm3,%xmm2 + + pxor %xmm2,%xmm0 + movdqu %xmm0,(%rax) + + movdqa %xmm0,%xmm2 +.byte 102,15,56,0,197 +.byte 102,15,56,221,196 + + movdqa %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm2,%xmm3 + pslldq $4,%xmm2 + pxor %xmm3,%xmm2 + + pxor %xmm2,%xmm0 + movdqu %xmm0,16(%rax) + + movl %esi,96(%rax) + xorl %eax,%eax + jmp L$enc_key_ret + +.p2align 4 +L$12rounds: + movq 16(%rdi),%xmm2 + movl $11,%esi + cmpl $268435456,%r10d + je L$12rounds_alt + + movups %xmm0,(%rdx) +.byte 102,15,58,223,202,1 + call L$key_expansion_192a_cold +.byte 102,15,58,223,202,2 + call L$key_expansion_192b +.byte 102,15,58,223,202,4 + call L$key_expansion_192a +.byte 102,15,58,223,202,8 + call L$key_expansion_192b +.byte 102,15,58,223,202,16 + call L$key_expansion_192a +.byte 102,15,58,223,202,32 + call L$key_expansion_192b +.byte 102,15,58,223,202,64 + call L$key_expansion_192a +.byte 102,15,58,223,202,128 + call L$key_expansion_192b + movups %xmm0,(%rax) + movl %esi,48(%rax) + xorq %rax,%rax + jmp L$enc_key_ret + +.p2align 4 +L$12rounds_alt: + movdqa L$key_rotate192(%rip),%xmm5 + movdqa L$key_rcon1(%rip),%xmm4 + movl $8,%r10d + movdqu %xmm0,(%rdx) + jmp L$oop_key192 + +.p2align 4 +L$oop_key192: + movq %xmm2,0(%rax) + movdqa %xmm2,%xmm1 +.byte 102,15,56,0,213 +.byte 102,15,56,221,212 + pslld $1,%xmm4 + leaq 24(%rax),%rax + + movdqa %xmm0,%xmm3 + pslldq $4,%xmm0 + pxor %xmm0,%xmm3 + pslldq $4,%xmm0 + pxor %xmm0,%xmm3 + pslldq $4,%xmm0 + pxor %xmm3,%xmm0 + + pshufd $0xff,%xmm0,%xmm3 + pxor %xmm1,%xmm3 + pslldq $4,%xmm1 + pxor %xmm1,%xmm3 + + pxor %xmm2,%xmm0 + pxor %xmm3,%xmm2 + movdqu %xmm0,-16(%rax) + + decl %r10d + jnz L$oop_key192 + + movl %esi,32(%rax) + xorl %eax,%eax + jmp L$enc_key_ret + +.p2align 4 +L$14rounds: + movups 16(%rdi),%xmm2 + movl $13,%esi + leaq 16(%rax),%rax + cmpl $268435456,%r10d + je L$14rounds_alt + + movups %xmm0,(%rdx) + movups %xmm2,16(%rdx) +.byte 102,15,58,223,202,1 + call L$key_expansion_256a_cold +.byte 102,15,58,223,200,1 + call L$key_expansion_256b +.byte 102,15,58,223,202,2 + call L$key_expansion_256a +.byte 102,15,58,223,200,2 + call L$key_expansion_256b +.byte 102,15,58,223,202,4 + call L$key_expansion_256a +.byte 102,15,58,223,200,4 + call L$key_expansion_256b +.byte 102,15,58,223,202,8 + call L$key_expansion_256a +.byte 102,15,58,223,200,8 + call L$key_expansion_256b +.byte 102,15,58,223,202,16 + call L$key_expansion_256a +.byte 102,15,58,223,200,16 + call L$key_expansion_256b +.byte 102,15,58,223,202,32 + call L$key_expansion_256a +.byte 102,15,58,223,200,32 + call L$key_expansion_256b +.byte 102,15,58,223,202,64 + call L$key_expansion_256a + movups %xmm0,(%rax) + movl %esi,16(%rax) + xorq %rax,%rax + jmp L$enc_key_ret + +.p2align 4 +L$14rounds_alt: + movdqa L$key_rotate(%rip),%xmm5 + movdqa L$key_rcon1(%rip),%xmm4 + movl $7,%r10d + movdqu %xmm0,0(%rdx) + movdqa %xmm2,%xmm1 + movdqu %xmm2,16(%rdx) + jmp L$oop_key256 + +.p2align 4 +L$oop_key256: +.byte 102,15,56,0,213 +.byte 102,15,56,221,212 + + movdqa %xmm0,%xmm3 + pslldq $4,%xmm0 + pxor %xmm0,%xmm3 + pslldq $4,%xmm0 + pxor %xmm0,%xmm3 + pslldq $4,%xmm0 + pxor %xmm3,%xmm0 + pslld $1,%xmm4 + + pxor %xmm2,%xmm0 + movdqu %xmm0,(%rax) + + decl %r10d + jz L$done_key256 + + pshufd $0xff,%xmm0,%xmm2 + pxor %xmm3,%xmm3 +.byte 102,15,56,221,211 + + movdqa %xmm1,%xmm3 + pslldq $4,%xmm1 + pxor %xmm1,%xmm3 + pslldq $4,%xmm1 + pxor %xmm1,%xmm3 + pslldq $4,%xmm1 + pxor %xmm3,%xmm1 + + pxor %xmm1,%xmm2 + movdqu %xmm2,16(%rax) + leaq 32(%rax),%rax + movdqa %xmm2,%xmm1 + + jmp L$oop_key256 + +L$done_key256: + movl %esi,16(%rax) + xorl %eax,%eax + jmp L$enc_key_ret + +.p2align 4 +L$bad_keybits: + movq $-2,%rax +L$enc_key_ret: + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + addq $8,%rsp + + .byte 0xf3,0xc3 +L$SEH_end_set_encrypt_key: + +.p2align 4 +L$key_expansion_128: + movups %xmm0,(%rax) + leaq 16(%rax),%rax +L$key_expansion_128_cold: + shufps $16,%xmm0,%xmm4 + xorps %xmm4,%xmm0 + shufps $140,%xmm0,%xmm4 + xorps %xmm4,%xmm0 + shufps $255,%xmm1,%xmm1 + xorps %xmm1,%xmm0 + .byte 0xf3,0xc3 + +.p2align 4 +L$key_expansion_192a: + movups %xmm0,(%rax) + leaq 16(%rax),%rax +L$key_expansion_192a_cold: + movaps %xmm2,%xmm5 +L$key_expansion_192b_warm: + shufps $16,%xmm0,%xmm4 + movdqa %xmm2,%xmm3 + xorps %xmm4,%xmm0 + shufps $140,%xmm0,%xmm4 + pslldq $4,%xmm3 + xorps %xmm4,%xmm0 + pshufd $85,%xmm1,%xmm1 + pxor %xmm3,%xmm2 + pxor %xmm1,%xmm0 + pshufd $255,%xmm0,%xmm3 + pxor %xmm3,%xmm2 + .byte 0xf3,0xc3 + +.p2align 4 +L$key_expansion_192b: + movaps %xmm0,%xmm3 + shufps $68,%xmm0,%xmm5 + movups %xmm5,(%rax) + shufps $78,%xmm2,%xmm3 + movups %xmm3,16(%rax) + leaq 32(%rax),%rax + jmp L$key_expansion_192b_warm + +.p2align 4 +L$key_expansion_256a: + movups %xmm2,(%rax) + leaq 16(%rax),%rax +L$key_expansion_256a_cold: + shufps $16,%xmm0,%xmm4 + xorps %xmm4,%xmm0 + shufps $140,%xmm0,%xmm4 + xorps %xmm4,%xmm0 + shufps $255,%xmm1,%xmm1 + xorps %xmm1,%xmm0 + .byte 0xf3,0xc3 + +.p2align 4 +L$key_expansion_256b: + movups %xmm0,(%rax) + leaq 16(%rax),%rax + + shufps $16,%xmm2,%xmm4 + xorps %xmm4,%xmm2 + shufps $140,%xmm2,%xmm4 + xorps %xmm4,%xmm2 + shufps $170,%xmm1,%xmm1 + xorps %xmm1,%xmm2 + .byte 0xf3,0xc3 + + + +.p2align 6 +L$bswap_mask: +.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +L$increment32: +.long 6,6,6,0 +L$increment64: +.long 1,0,0,0 +L$xts_magic: +.long 0x87,0,1,0 +L$increment1: +.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +L$key_rotate: +.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d +L$key_rotate192: +.long 0x04070605,0x04070605,0x04070605,0x04070605 +L$key_rcon1: +.long 1,1,1,1 +L$key_rcon1b: +.long 0x1b,0x1b,0x1b,0x1b + +.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.p2align 6 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/aes/vpaes-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/aes/vpaes-x86_64.s new file mode 100644 index 0000000..79e834a --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/aes/vpaes-x86_64.s @@ -0,0 +1,853 @@ +.text + + + + + + + + + + + + + + + + + +.p2align 4 +_vpaes_encrypt_core: + + movq %rdx,%r9 + movq $16,%r11 + movl 240(%rdx),%eax + movdqa %xmm9,%xmm1 + movdqa L$k_ipt(%rip),%xmm2 + pandn %xmm0,%xmm1 + movdqu (%r9),%xmm5 + psrld $4,%xmm1 + pand %xmm9,%xmm0 +.byte 102,15,56,0,208 + movdqa L$k_ipt+16(%rip),%xmm0 +.byte 102,15,56,0,193 + pxor %xmm5,%xmm2 + addq $16,%r9 + pxor %xmm2,%xmm0 + leaq L$k_mc_backward(%rip),%r10 + jmp L$enc_entry + +.p2align 4 +L$enc_loop: + + movdqa %xmm13,%xmm4 + movdqa %xmm12,%xmm0 +.byte 102,15,56,0,226 +.byte 102,15,56,0,195 + pxor %xmm5,%xmm4 + movdqa %xmm15,%xmm5 + pxor %xmm4,%xmm0 + movdqa -64(%r11,%r10,1),%xmm1 +.byte 102,15,56,0,234 + movdqa (%r11,%r10,1),%xmm4 + movdqa %xmm14,%xmm2 +.byte 102,15,56,0,211 + movdqa %xmm0,%xmm3 + pxor %xmm5,%xmm2 +.byte 102,15,56,0,193 + addq $16,%r9 + pxor %xmm2,%xmm0 +.byte 102,15,56,0,220 + addq $16,%r11 + pxor %xmm0,%xmm3 +.byte 102,15,56,0,193 + andq $0x30,%r11 + subq $1,%rax + pxor %xmm3,%xmm0 + +L$enc_entry: + + movdqa %xmm9,%xmm1 + movdqa %xmm11,%xmm5 + pandn %xmm0,%xmm1 + psrld $4,%xmm1 + pand %xmm9,%xmm0 +.byte 102,15,56,0,232 + movdqa %xmm10,%xmm3 + pxor %xmm1,%xmm0 +.byte 102,15,56,0,217 + movdqa %xmm10,%xmm4 + pxor %xmm5,%xmm3 +.byte 102,15,56,0,224 + movdqa %xmm10,%xmm2 + pxor %xmm5,%xmm4 +.byte 102,15,56,0,211 + movdqa %xmm10,%xmm3 + pxor %xmm0,%xmm2 +.byte 102,15,56,0,220 + movdqu (%r9),%xmm5 + pxor %xmm1,%xmm3 + jnz L$enc_loop + + + movdqa -96(%r10),%xmm4 + movdqa -80(%r10),%xmm0 +.byte 102,15,56,0,226 + pxor %xmm5,%xmm4 +.byte 102,15,56,0,195 + movdqa 64(%r11,%r10,1),%xmm1 + pxor %xmm4,%xmm0 +.byte 102,15,56,0,193 + .byte 0xf3,0xc3 + + + + + + + + + +.p2align 4 +_vpaes_decrypt_core: + + movq %rdx,%r9 + movl 240(%rdx),%eax + movdqa %xmm9,%xmm1 + movdqa L$k_dipt(%rip),%xmm2 + pandn %xmm0,%xmm1 + movq %rax,%r11 + psrld $4,%xmm1 + movdqu (%r9),%xmm5 + shlq $4,%r11 + pand %xmm9,%xmm0 +.byte 102,15,56,0,208 + movdqa L$k_dipt+16(%rip),%xmm0 + xorq $0x30,%r11 + leaq L$k_dsbd(%rip),%r10 +.byte 102,15,56,0,193 + andq $0x30,%r11 + pxor %xmm5,%xmm2 + movdqa L$k_mc_forward+48(%rip),%xmm5 + pxor %xmm2,%xmm0 + addq $16,%r9 + addq %r10,%r11 + jmp L$dec_entry + +.p2align 4 +L$dec_loop: + + + + movdqa -32(%r10),%xmm4 + movdqa -16(%r10),%xmm1 +.byte 102,15,56,0,226 +.byte 102,15,56,0,203 + pxor %xmm4,%xmm0 + movdqa 0(%r10),%xmm4 + pxor %xmm1,%xmm0 + movdqa 16(%r10),%xmm1 + +.byte 102,15,56,0,226 +.byte 102,15,56,0,197 +.byte 102,15,56,0,203 + pxor %xmm4,%xmm0 + movdqa 32(%r10),%xmm4 + pxor %xmm1,%xmm0 + movdqa 48(%r10),%xmm1 + +.byte 102,15,56,0,226 +.byte 102,15,56,0,197 +.byte 102,15,56,0,203 + pxor %xmm4,%xmm0 + movdqa 64(%r10),%xmm4 + pxor %xmm1,%xmm0 + movdqa 80(%r10),%xmm1 + +.byte 102,15,56,0,226 +.byte 102,15,56,0,197 +.byte 102,15,56,0,203 + pxor %xmm4,%xmm0 + addq $16,%r9 +.byte 102,15,58,15,237,12 + pxor %xmm1,%xmm0 + subq $1,%rax + +L$dec_entry: + + movdqa %xmm9,%xmm1 + pandn %xmm0,%xmm1 + movdqa %xmm11,%xmm2 + psrld $4,%xmm1 + pand %xmm9,%xmm0 +.byte 102,15,56,0,208 + movdqa %xmm10,%xmm3 + pxor %xmm1,%xmm0 +.byte 102,15,56,0,217 + movdqa %xmm10,%xmm4 + pxor %xmm2,%xmm3 +.byte 102,15,56,0,224 + pxor %xmm2,%xmm4 + movdqa %xmm10,%xmm2 +.byte 102,15,56,0,211 + movdqa %xmm10,%xmm3 + pxor %xmm0,%xmm2 +.byte 102,15,56,0,220 + movdqu (%r9),%xmm0 + pxor %xmm1,%xmm3 + jnz L$dec_loop + + + movdqa 96(%r10),%xmm4 +.byte 102,15,56,0,226 + pxor %xmm0,%xmm4 + movdqa 112(%r10),%xmm0 + movdqa -352(%r11),%xmm2 +.byte 102,15,56,0,195 + pxor %xmm4,%xmm0 +.byte 102,15,56,0,194 + .byte 0xf3,0xc3 + + + + + + + + + +.p2align 4 +_vpaes_schedule_core: + + + + + + + call _vpaes_preheat + movdqa L$k_rcon(%rip),%xmm8 + movdqu (%rdi),%xmm0 + + + movdqa %xmm0,%xmm3 + leaq L$k_ipt(%rip),%r11 + call _vpaes_schedule_transform + movdqa %xmm0,%xmm7 + + leaq L$k_sr(%rip),%r10 + testq %rcx,%rcx + jnz L$schedule_am_decrypting + + + movdqu %xmm0,(%rdx) + jmp L$schedule_go + +L$schedule_am_decrypting: + + movdqa (%r8,%r10,1),%xmm1 +.byte 102,15,56,0,217 + movdqu %xmm3,(%rdx) + xorq $0x30,%r8 + +L$schedule_go: + cmpl $192,%esi + ja L$schedule_256 + je L$schedule_192 + + + + + + + + + + +L$schedule_128: + movl $10,%esi + +L$oop_schedule_128: + call _vpaes_schedule_round + decq %rsi + jz L$schedule_mangle_last + call _vpaes_schedule_mangle + jmp L$oop_schedule_128 + + + + + + + + + + + + + + + + +.p2align 4 +L$schedule_192: + movdqu 8(%rdi),%xmm0 + call _vpaes_schedule_transform + movdqa %xmm0,%xmm6 + pxor %xmm4,%xmm4 + movhlps %xmm4,%xmm6 + movl $4,%esi + +L$oop_schedule_192: + call _vpaes_schedule_round +.byte 102,15,58,15,198,8 + call _vpaes_schedule_mangle + call _vpaes_schedule_192_smear + call _vpaes_schedule_mangle + call _vpaes_schedule_round + decq %rsi + jz L$schedule_mangle_last + call _vpaes_schedule_mangle + call _vpaes_schedule_192_smear + jmp L$oop_schedule_192 + + + + + + + + + + + +.p2align 4 +L$schedule_256: + movdqu 16(%rdi),%xmm0 + call _vpaes_schedule_transform + movl $7,%esi + +L$oop_schedule_256: + call _vpaes_schedule_mangle + movdqa %xmm0,%xmm6 + + + call _vpaes_schedule_round + decq %rsi + jz L$schedule_mangle_last + call _vpaes_schedule_mangle + + + pshufd $0xFF,%xmm0,%xmm0 + movdqa %xmm7,%xmm5 + movdqa %xmm6,%xmm7 + call _vpaes_schedule_low_round + movdqa %xmm5,%xmm7 + + jmp L$oop_schedule_256 + + + + + + + + + + + + +.p2align 4 +L$schedule_mangle_last: + + leaq L$k_deskew(%rip),%r11 + testq %rcx,%rcx + jnz L$schedule_mangle_last_dec + + + movdqa (%r8,%r10,1),%xmm1 +.byte 102,15,56,0,193 + leaq L$k_opt(%rip),%r11 + addq $32,%rdx + +L$schedule_mangle_last_dec: + addq $-16,%rdx + pxor L$k_s63(%rip),%xmm0 + call _vpaes_schedule_transform + movdqu %xmm0,(%rdx) + + + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + .byte 0xf3,0xc3 + + + + + + + + + + + + + + + + + + +.p2align 4 +_vpaes_schedule_192_smear: + + pshufd $0x80,%xmm6,%xmm1 + pshufd $0xFE,%xmm7,%xmm0 + pxor %xmm1,%xmm6 + pxor %xmm1,%xmm1 + pxor %xmm0,%xmm6 + movdqa %xmm6,%xmm0 + movhlps %xmm1,%xmm6 + .byte 0xf3,0xc3 + + + + + + + + + + + + + + + + + + + + + + +.p2align 4 +_vpaes_schedule_round: + + + pxor %xmm1,%xmm1 +.byte 102,65,15,58,15,200,15 +.byte 102,69,15,58,15,192,15 + pxor %xmm1,%xmm7 + + + pshufd $0xFF,%xmm0,%xmm0 +.byte 102,15,58,15,192,1 + + + + +_vpaes_schedule_low_round: + + movdqa %xmm7,%xmm1 + pslldq $4,%xmm7 + pxor %xmm1,%xmm7 + movdqa %xmm7,%xmm1 + pslldq $8,%xmm7 + pxor %xmm1,%xmm7 + pxor L$k_s63(%rip),%xmm7 + + + movdqa %xmm9,%xmm1 + pandn %xmm0,%xmm1 + psrld $4,%xmm1 + pand %xmm9,%xmm0 + movdqa %xmm11,%xmm2 +.byte 102,15,56,0,208 + pxor %xmm1,%xmm0 + movdqa %xmm10,%xmm3 +.byte 102,15,56,0,217 + pxor %xmm2,%xmm3 + movdqa %xmm10,%xmm4 +.byte 102,15,56,0,224 + pxor %xmm2,%xmm4 + movdqa %xmm10,%xmm2 +.byte 102,15,56,0,211 + pxor %xmm0,%xmm2 + movdqa %xmm10,%xmm3 +.byte 102,15,56,0,220 + pxor %xmm1,%xmm3 + movdqa %xmm13,%xmm4 +.byte 102,15,56,0,226 + movdqa %xmm12,%xmm0 +.byte 102,15,56,0,195 + pxor %xmm4,%xmm0 + + + pxor %xmm7,%xmm0 + movdqa %xmm0,%xmm7 + .byte 0xf3,0xc3 + + + + + + + + + + + + + +.p2align 4 +_vpaes_schedule_transform: + + movdqa %xmm9,%xmm1 + pandn %xmm0,%xmm1 + psrld $4,%xmm1 + pand %xmm9,%xmm0 + movdqa (%r11),%xmm2 +.byte 102,15,56,0,208 + movdqa 16(%r11),%xmm0 +.byte 102,15,56,0,193 + pxor %xmm2,%xmm0 + .byte 0xf3,0xc3 + + + + + + + + + + + + + + + + + + + + + + + + + + + +.p2align 4 +_vpaes_schedule_mangle: + + movdqa %xmm0,%xmm4 + movdqa L$k_mc_forward(%rip),%xmm5 + testq %rcx,%rcx + jnz L$schedule_mangle_dec + + + addq $16,%rdx + pxor L$k_s63(%rip),%xmm4 +.byte 102,15,56,0,229 + movdqa %xmm4,%xmm3 +.byte 102,15,56,0,229 + pxor %xmm4,%xmm3 +.byte 102,15,56,0,229 + pxor %xmm4,%xmm3 + + jmp L$schedule_mangle_both +.p2align 4 +L$schedule_mangle_dec: + + leaq L$k_dksd(%rip),%r11 + movdqa %xmm9,%xmm1 + pandn %xmm4,%xmm1 + psrld $4,%xmm1 + pand %xmm9,%xmm4 + + movdqa 0(%r11),%xmm2 +.byte 102,15,56,0,212 + movdqa 16(%r11),%xmm3 +.byte 102,15,56,0,217 + pxor %xmm2,%xmm3 +.byte 102,15,56,0,221 + + movdqa 32(%r11),%xmm2 +.byte 102,15,56,0,212 + pxor %xmm3,%xmm2 + movdqa 48(%r11),%xmm3 +.byte 102,15,56,0,217 + pxor %xmm2,%xmm3 +.byte 102,15,56,0,221 + + movdqa 64(%r11),%xmm2 +.byte 102,15,56,0,212 + pxor %xmm3,%xmm2 + movdqa 80(%r11),%xmm3 +.byte 102,15,56,0,217 + pxor %xmm2,%xmm3 +.byte 102,15,56,0,221 + + movdqa 96(%r11),%xmm2 +.byte 102,15,56,0,212 + pxor %xmm3,%xmm2 + movdqa 112(%r11),%xmm3 +.byte 102,15,56,0,217 + pxor %xmm2,%xmm3 + + addq $-16,%rdx + +L$schedule_mangle_both: + movdqa (%r8,%r10,1),%xmm1 +.byte 102,15,56,0,217 + addq $-16,%r8 + andq $0x30,%r8 + movdqu %xmm3,(%rdx) + .byte 0xf3,0xc3 + + + + + + +.globl _vpaes_set_encrypt_key + +.p2align 4 +_vpaes_set_encrypt_key: + + movl %esi,%eax + shrl $5,%eax + addl $5,%eax + movl %eax,240(%rdx) + + movl $0,%ecx + movl $0x30,%r8d + call _vpaes_schedule_core + xorl %eax,%eax + .byte 0xf3,0xc3 + + + +.globl _vpaes_set_decrypt_key + +.p2align 4 +_vpaes_set_decrypt_key: + + movl %esi,%eax + shrl $5,%eax + addl $5,%eax + movl %eax,240(%rdx) + shll $4,%eax + leaq 16(%rdx,%rax,1),%rdx + + movl $1,%ecx + movl %esi,%r8d + shrl $1,%r8d + andl $32,%r8d + xorl $32,%r8d + call _vpaes_schedule_core + xorl %eax,%eax + .byte 0xf3,0xc3 + + + +.globl _vpaes_encrypt + +.p2align 4 +_vpaes_encrypt: + + movdqu (%rdi),%xmm0 + call _vpaes_preheat + call _vpaes_encrypt_core + movdqu %xmm0,(%rsi) + .byte 0xf3,0xc3 + + + +.globl _vpaes_decrypt + +.p2align 4 +_vpaes_decrypt: + + movdqu (%rdi),%xmm0 + call _vpaes_preheat + call _vpaes_decrypt_core + movdqu %xmm0,(%rsi) + .byte 0xf3,0xc3 + + +.globl _vpaes_cbc_encrypt + +.p2align 4 +_vpaes_cbc_encrypt: + + xchgq %rcx,%rdx + subq $16,%rcx + jc L$cbc_abort + movdqu (%r8),%xmm6 + subq %rdi,%rsi + call _vpaes_preheat + cmpl $0,%r9d + je L$cbc_dec_loop + jmp L$cbc_enc_loop +.p2align 4 +L$cbc_enc_loop: + movdqu (%rdi),%xmm0 + pxor %xmm6,%xmm0 + call _vpaes_encrypt_core + movdqa %xmm0,%xmm6 + movdqu %xmm0,(%rsi,%rdi,1) + leaq 16(%rdi),%rdi + subq $16,%rcx + jnc L$cbc_enc_loop + jmp L$cbc_done +.p2align 4 +L$cbc_dec_loop: + movdqu (%rdi),%xmm0 + movdqa %xmm0,%xmm7 + call _vpaes_decrypt_core + pxor %xmm6,%xmm0 + movdqa %xmm7,%xmm6 + movdqu %xmm0,(%rsi,%rdi,1) + leaq 16(%rdi),%rdi + subq $16,%rcx + jnc L$cbc_dec_loop +L$cbc_done: + movdqu %xmm6,(%r8) +L$cbc_abort: + .byte 0xf3,0xc3 + + + + + + + + + +.p2align 4 +_vpaes_preheat: + + leaq L$k_s0F(%rip),%r10 + movdqa -32(%r10),%xmm10 + movdqa -16(%r10),%xmm11 + movdqa 0(%r10),%xmm9 + movdqa 48(%r10),%xmm13 + movdqa 64(%r10),%xmm12 + movdqa 80(%r10),%xmm15 + movdqa 96(%r10),%xmm14 + .byte 0xf3,0xc3 + + + + + + + + +.p2align 6 +_vpaes_consts: +L$k_inv: +.quad 0x0E05060F0D080180, 0x040703090A0B0C02 +.quad 0x01040A060F0B0780, 0x030D0E0C02050809 + +L$k_s0F: +.quad 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F + +L$k_ipt: +.quad 0xC2B2E8985A2A7000, 0xCABAE09052227808 +.quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81 + +L$k_sb1: +.quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544 +.quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF +L$k_sb2: +.quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD +.quad 0x69EB88400AE12900, 0xC2A163C8AB82234A +L$k_sbo: +.quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878 +.quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA + +L$k_mc_forward: +.quad 0x0407060500030201, 0x0C0F0E0D080B0A09 +.quad 0x080B0A0904070605, 0x000302010C0F0E0D +.quad 0x0C0F0E0D080B0A09, 0x0407060500030201 +.quad 0x000302010C0F0E0D, 0x080B0A0904070605 + +L$k_mc_backward: +.quad 0x0605040702010003, 0x0E0D0C0F0A09080B +.quad 0x020100030E0D0C0F, 0x0A09080B06050407 +.quad 0x0E0D0C0F0A09080B, 0x0605040702010003 +.quad 0x0A09080B06050407, 0x020100030E0D0C0F + +L$k_sr: +.quad 0x0706050403020100, 0x0F0E0D0C0B0A0908 +.quad 0x030E09040F0A0500, 0x0B06010C07020D08 +.quad 0x0F060D040B020900, 0x070E050C030A0108 +.quad 0x0B0E0104070A0D00, 0x0306090C0F020508 + +L$k_rcon: +.quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81 + +L$k_s63: +.quad 0x5B5B5B5B5B5B5B5B, 0x5B5B5B5B5B5B5B5B + +L$k_opt: +.quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808 +.quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0 + +L$k_deskew: +.quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A +.quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77 + + + + + +L$k_dksd: +.quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9 +.quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E +L$k_dksb: +.quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99 +.quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8 +L$k_dkse: +.quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086 +.quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487 +L$k_dks9: +.quad 0xB6116FC87ED9A700, 0x4AED933482255BFC +.quad 0x4576516227143300, 0x8BB89FACE9DAFDCE + + + + + +L$k_dipt: +.quad 0x0F505B040B545F00, 0x154A411E114E451A +.quad 0x86E383E660056500, 0x12771772F491F194 + +L$k_dsb9: +.quad 0x851C03539A86D600, 0xCAD51F504F994CC9 +.quad 0xC03B1789ECD74900, 0x725E2C9EB2FBA565 +L$k_dsbd: +.quad 0x7D57CCDFE6B1A200, 0xF56E9B13882A4439 +.quad 0x3CE2FAF724C6CB00, 0x2931180D15DEEFD3 +L$k_dsbb: +.quad 0xD022649296B44200, 0x602646F6B0F2D404 +.quad 0xC19498A6CD596700, 0xF3FF0C3E3255AA6B +L$k_dsbe: +.quad 0x46F2929626D4D000, 0x2242600464B4F6B0 +.quad 0x0C55A6CDFFAAC100, 0x9467F36B98593E32 +L$k_dsbo: +.quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D +.quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C +.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 +.p2align 6 + diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/bn/rsaz-avx2.s b/vere/ext/openssl/gen/macos-x86_64/crypto/bn/rsaz-avx2.s new file mode 100644 index 0000000..de597b1 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/bn/rsaz-avx2.s @@ -0,0 +1,1744 @@ +.text + +.globl _rsaz_1024_sqr_avx2 + +.p2align 6 +_rsaz_1024_sqr_avx2: + + leaq (%rsp),%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + vzeroupper + movq %rax,%rbp + + movq %rdx,%r13 + subq $832,%rsp + movq %r13,%r15 + subq $-128,%rdi + subq $-128,%rsi + subq $-128,%r13 + + andq $4095,%r15 + addq $320,%r15 + shrq $12,%r15 + vpxor %ymm9,%ymm9,%ymm9 + jz L$sqr_1024_no_n_copy + + + + + + subq $320,%rsp + vmovdqu 0-128(%r13),%ymm0 + andq $-2048,%rsp + vmovdqu 32-128(%r13),%ymm1 + vmovdqu 64-128(%r13),%ymm2 + vmovdqu 96-128(%r13),%ymm3 + vmovdqu 128-128(%r13),%ymm4 + vmovdqu 160-128(%r13),%ymm5 + vmovdqu 192-128(%r13),%ymm6 + vmovdqu 224-128(%r13),%ymm7 + vmovdqu 256-128(%r13),%ymm8 + leaq 832+128(%rsp),%r13 + vmovdqu %ymm0,0-128(%r13) + vmovdqu %ymm1,32-128(%r13) + vmovdqu %ymm2,64-128(%r13) + vmovdqu %ymm3,96-128(%r13) + vmovdqu %ymm4,128-128(%r13) + vmovdqu %ymm5,160-128(%r13) + vmovdqu %ymm6,192-128(%r13) + vmovdqu %ymm7,224-128(%r13) + vmovdqu %ymm8,256-128(%r13) + vmovdqu %ymm9,288-128(%r13) + +L$sqr_1024_no_n_copy: + andq $-1024,%rsp + + vmovdqu 32-128(%rsi),%ymm1 + vmovdqu 64-128(%rsi),%ymm2 + vmovdqu 96-128(%rsi),%ymm3 + vmovdqu 128-128(%rsi),%ymm4 + vmovdqu 160-128(%rsi),%ymm5 + vmovdqu 192-128(%rsi),%ymm6 + vmovdqu 224-128(%rsi),%ymm7 + vmovdqu 256-128(%rsi),%ymm8 + + leaq 192(%rsp),%rbx + vmovdqu L$and_mask(%rip),%ymm15 + jmp L$OOP_GRANDE_SQR_1024 + +.p2align 5 +L$OOP_GRANDE_SQR_1024: + leaq 576+128(%rsp),%r9 + leaq 448(%rsp),%r12 + + + + + vpaddq %ymm1,%ymm1,%ymm1 + vpbroadcastq 0-128(%rsi),%ymm10 + vpaddq %ymm2,%ymm2,%ymm2 + vmovdqa %ymm1,0-128(%r9) + vpaddq %ymm3,%ymm3,%ymm3 + vmovdqa %ymm2,32-128(%r9) + vpaddq %ymm4,%ymm4,%ymm4 + vmovdqa %ymm3,64-128(%r9) + vpaddq %ymm5,%ymm5,%ymm5 + vmovdqa %ymm4,96-128(%r9) + vpaddq %ymm6,%ymm6,%ymm6 + vmovdqa %ymm5,128-128(%r9) + vpaddq %ymm7,%ymm7,%ymm7 + vmovdqa %ymm6,160-128(%r9) + vpaddq %ymm8,%ymm8,%ymm8 + vmovdqa %ymm7,192-128(%r9) + vpxor %ymm9,%ymm9,%ymm9 + vmovdqa %ymm8,224-128(%r9) + + vpmuludq 0-128(%rsi),%ymm10,%ymm0 + vpbroadcastq 32-128(%rsi),%ymm11 + vmovdqu %ymm9,288-192(%rbx) + vpmuludq %ymm10,%ymm1,%ymm1 + vmovdqu %ymm9,320-448(%r12) + vpmuludq %ymm10,%ymm2,%ymm2 + vmovdqu %ymm9,352-448(%r12) + vpmuludq %ymm10,%ymm3,%ymm3 + vmovdqu %ymm9,384-448(%r12) + vpmuludq %ymm10,%ymm4,%ymm4 + vmovdqu %ymm9,416-448(%r12) + vpmuludq %ymm10,%ymm5,%ymm5 + vmovdqu %ymm9,448-448(%r12) + vpmuludq %ymm10,%ymm6,%ymm6 + vmovdqu %ymm9,480-448(%r12) + vpmuludq %ymm10,%ymm7,%ymm7 + vmovdqu %ymm9,512-448(%r12) + vpmuludq %ymm10,%ymm8,%ymm8 + vpbroadcastq 64-128(%rsi),%ymm10 + vmovdqu %ymm9,544-448(%r12) + + movq %rsi,%r15 + movl $4,%r14d + jmp L$sqr_entry_1024 +.p2align 5 +L$OOP_SQR_1024: + vpbroadcastq 32-128(%r15),%ymm11 + vpmuludq 0-128(%rsi),%ymm10,%ymm0 + vpaddq 0-192(%rbx),%ymm0,%ymm0 + vpmuludq 0-128(%r9),%ymm10,%ymm1 + vpaddq 32-192(%rbx),%ymm1,%ymm1 + vpmuludq 32-128(%r9),%ymm10,%ymm2 + vpaddq 64-192(%rbx),%ymm2,%ymm2 + vpmuludq 64-128(%r9),%ymm10,%ymm3 + vpaddq 96-192(%rbx),%ymm3,%ymm3 + vpmuludq 96-128(%r9),%ymm10,%ymm4 + vpaddq 128-192(%rbx),%ymm4,%ymm4 + vpmuludq 128-128(%r9),%ymm10,%ymm5 + vpaddq 160-192(%rbx),%ymm5,%ymm5 + vpmuludq 160-128(%r9),%ymm10,%ymm6 + vpaddq 192-192(%rbx),%ymm6,%ymm6 + vpmuludq 192-128(%r9),%ymm10,%ymm7 + vpaddq 224-192(%rbx),%ymm7,%ymm7 + vpmuludq 224-128(%r9),%ymm10,%ymm8 + vpbroadcastq 64-128(%r15),%ymm10 + vpaddq 256-192(%rbx),%ymm8,%ymm8 +L$sqr_entry_1024: + vmovdqu %ymm0,0-192(%rbx) + vmovdqu %ymm1,32-192(%rbx) + + vpmuludq 32-128(%rsi),%ymm11,%ymm12 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq 32-128(%r9),%ymm11,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpmuludq 64-128(%r9),%ymm11,%ymm13 + vpaddq %ymm13,%ymm4,%ymm4 + vpmuludq 96-128(%r9),%ymm11,%ymm12 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq 128-128(%r9),%ymm11,%ymm14 + vpaddq %ymm14,%ymm6,%ymm6 + vpmuludq 160-128(%r9),%ymm11,%ymm13 + vpaddq %ymm13,%ymm7,%ymm7 + vpmuludq 192-128(%r9),%ymm11,%ymm12 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq 224-128(%r9),%ymm11,%ymm0 + vpbroadcastq 96-128(%r15),%ymm11 + vpaddq 288-192(%rbx),%ymm0,%ymm0 + + vmovdqu %ymm2,64-192(%rbx) + vmovdqu %ymm3,96-192(%rbx) + + vpmuludq 64-128(%rsi),%ymm10,%ymm13 + vpaddq %ymm13,%ymm4,%ymm4 + vpmuludq 64-128(%r9),%ymm10,%ymm12 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq 96-128(%r9),%ymm10,%ymm14 + vpaddq %ymm14,%ymm6,%ymm6 + vpmuludq 128-128(%r9),%ymm10,%ymm13 + vpaddq %ymm13,%ymm7,%ymm7 + vpmuludq 160-128(%r9),%ymm10,%ymm12 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq 192-128(%r9),%ymm10,%ymm14 + vpaddq %ymm14,%ymm0,%ymm0 + vpmuludq 224-128(%r9),%ymm10,%ymm1 + vpbroadcastq 128-128(%r15),%ymm10 + vpaddq 320-448(%r12),%ymm1,%ymm1 + + vmovdqu %ymm4,128-192(%rbx) + vmovdqu %ymm5,160-192(%rbx) + + vpmuludq 96-128(%rsi),%ymm11,%ymm12 + vpaddq %ymm12,%ymm6,%ymm6 + vpmuludq 96-128(%r9),%ymm11,%ymm14 + vpaddq %ymm14,%ymm7,%ymm7 + vpmuludq 128-128(%r9),%ymm11,%ymm13 + vpaddq %ymm13,%ymm8,%ymm8 + vpmuludq 160-128(%r9),%ymm11,%ymm12 + vpaddq %ymm12,%ymm0,%ymm0 + vpmuludq 192-128(%r9),%ymm11,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpmuludq 224-128(%r9),%ymm11,%ymm2 + vpbroadcastq 160-128(%r15),%ymm11 + vpaddq 352-448(%r12),%ymm2,%ymm2 + + vmovdqu %ymm6,192-192(%rbx) + vmovdqu %ymm7,224-192(%rbx) + + vpmuludq 128-128(%rsi),%ymm10,%ymm12 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq 128-128(%r9),%ymm10,%ymm14 + vpaddq %ymm14,%ymm0,%ymm0 + vpmuludq 160-128(%r9),%ymm10,%ymm13 + vpaddq %ymm13,%ymm1,%ymm1 + vpmuludq 192-128(%r9),%ymm10,%ymm12 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq 224-128(%r9),%ymm10,%ymm3 + vpbroadcastq 192-128(%r15),%ymm10 + vpaddq 384-448(%r12),%ymm3,%ymm3 + + vmovdqu %ymm8,256-192(%rbx) + vmovdqu %ymm0,288-192(%rbx) + leaq 8(%rbx),%rbx + + vpmuludq 160-128(%rsi),%ymm11,%ymm13 + vpaddq %ymm13,%ymm1,%ymm1 + vpmuludq 160-128(%r9),%ymm11,%ymm12 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq 192-128(%r9),%ymm11,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpmuludq 224-128(%r9),%ymm11,%ymm4 + vpbroadcastq 224-128(%r15),%ymm11 + vpaddq 416-448(%r12),%ymm4,%ymm4 + + vmovdqu %ymm1,320-448(%r12) + vmovdqu %ymm2,352-448(%r12) + + vpmuludq 192-128(%rsi),%ymm10,%ymm12 + vpaddq %ymm12,%ymm3,%ymm3 + vpmuludq 192-128(%r9),%ymm10,%ymm14 + vpbroadcastq 256-128(%r15),%ymm0 + vpaddq %ymm14,%ymm4,%ymm4 + vpmuludq 224-128(%r9),%ymm10,%ymm5 + vpbroadcastq 0+8-128(%r15),%ymm10 + vpaddq 448-448(%r12),%ymm5,%ymm5 + + vmovdqu %ymm3,384-448(%r12) + vmovdqu %ymm4,416-448(%r12) + leaq 8(%r15),%r15 + + vpmuludq 224-128(%rsi),%ymm11,%ymm12 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq 224-128(%r9),%ymm11,%ymm6 + vpaddq 480-448(%r12),%ymm6,%ymm6 + + vpmuludq 256-128(%rsi),%ymm0,%ymm7 + vmovdqu %ymm5,448-448(%r12) + vpaddq 512-448(%r12),%ymm7,%ymm7 + vmovdqu %ymm6,480-448(%r12) + vmovdqu %ymm7,512-448(%r12) + leaq 8(%r12),%r12 + + decl %r14d + jnz L$OOP_SQR_1024 + + vmovdqu 256(%rsp),%ymm8 + vmovdqu 288(%rsp),%ymm1 + vmovdqu 320(%rsp),%ymm2 + leaq 192(%rsp),%rbx + + vpsrlq $29,%ymm8,%ymm14 + vpand %ymm15,%ymm8,%ymm8 + vpsrlq $29,%ymm1,%ymm11 + vpand %ymm15,%ymm1,%ymm1 + + vpermq $0x93,%ymm14,%ymm14 + vpxor %ymm9,%ymm9,%ymm9 + vpermq $0x93,%ymm11,%ymm11 + + vpblendd $3,%ymm9,%ymm14,%ymm10 + vpblendd $3,%ymm14,%ymm11,%ymm14 + vpaddq %ymm10,%ymm8,%ymm8 + vpblendd $3,%ymm11,%ymm9,%ymm11 + vpaddq %ymm14,%ymm1,%ymm1 + vpaddq %ymm11,%ymm2,%ymm2 + vmovdqu %ymm1,288-192(%rbx) + vmovdqu %ymm2,320-192(%rbx) + + movq (%rsp),%rax + movq 8(%rsp),%r10 + movq 16(%rsp),%r11 + movq 24(%rsp),%r12 + vmovdqu 32(%rsp),%ymm1 + vmovdqu 64-192(%rbx),%ymm2 + vmovdqu 96-192(%rbx),%ymm3 + vmovdqu 128-192(%rbx),%ymm4 + vmovdqu 160-192(%rbx),%ymm5 + vmovdqu 192-192(%rbx),%ymm6 + vmovdqu 224-192(%rbx),%ymm7 + + movq %rax,%r9 + imull %ecx,%eax + andl $0x1fffffff,%eax + vmovd %eax,%xmm12 + + movq %rax,%rdx + imulq -128(%r13),%rax + vpbroadcastq %xmm12,%ymm12 + addq %rax,%r9 + movq %rdx,%rax + imulq 8-128(%r13),%rax + shrq $29,%r9 + addq %rax,%r10 + movq %rdx,%rax + imulq 16-128(%r13),%rax + addq %r9,%r10 + addq %rax,%r11 + imulq 24-128(%r13),%rdx + addq %rdx,%r12 + + movq %r10,%rax + imull %ecx,%eax + andl $0x1fffffff,%eax + + movl $9,%r14d + jmp L$OOP_REDUCE_1024 + +.p2align 5 +L$OOP_REDUCE_1024: + vmovd %eax,%xmm13 + vpbroadcastq %xmm13,%ymm13 + + vpmuludq 32-128(%r13),%ymm12,%ymm10 + movq %rax,%rdx + imulq -128(%r13),%rax + vpaddq %ymm10,%ymm1,%ymm1 + addq %rax,%r10 + vpmuludq 64-128(%r13),%ymm12,%ymm14 + movq %rdx,%rax + imulq 8-128(%r13),%rax + vpaddq %ymm14,%ymm2,%ymm2 + vpmuludq 96-128(%r13),%ymm12,%ymm11 +.byte 0x67 + addq %rax,%r11 +.byte 0x67 + movq %rdx,%rax + imulq 16-128(%r13),%rax + shrq $29,%r10 + vpaddq %ymm11,%ymm3,%ymm3 + vpmuludq 128-128(%r13),%ymm12,%ymm10 + addq %rax,%r12 + addq %r10,%r11 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 160-128(%r13),%ymm12,%ymm14 + movq %r11,%rax + imull %ecx,%eax + vpaddq %ymm14,%ymm5,%ymm5 + vpmuludq 192-128(%r13),%ymm12,%ymm11 + andl $0x1fffffff,%eax + vpaddq %ymm11,%ymm6,%ymm6 + vpmuludq 224-128(%r13),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 256-128(%r13),%ymm12,%ymm14 + vmovd %eax,%xmm12 + + vpaddq %ymm14,%ymm8,%ymm8 + + vpbroadcastq %xmm12,%ymm12 + + vpmuludq 32-8-128(%r13),%ymm13,%ymm11 + vmovdqu 96-8-128(%r13),%ymm14 + movq %rax,%rdx + imulq -128(%r13),%rax + vpaddq %ymm11,%ymm1,%ymm1 + vpmuludq 64-8-128(%r13),%ymm13,%ymm10 + vmovdqu 128-8-128(%r13),%ymm11 + addq %rax,%r11 + movq %rdx,%rax + imulq 8-128(%r13),%rax + vpaddq %ymm10,%ymm2,%ymm2 + addq %r12,%rax + shrq $29,%r11 + vpmuludq %ymm13,%ymm14,%ymm14 + vmovdqu 160-8-128(%r13),%ymm10 + addq %r11,%rax + vpaddq %ymm14,%ymm3,%ymm3 + vpmuludq %ymm13,%ymm11,%ymm11 + vmovdqu 192-8-128(%r13),%ymm14 +.byte 0x67 + movq %rax,%r12 + imull %ecx,%eax + vpaddq %ymm11,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm10,%ymm10 +.byte 0xc4,0x41,0x7e,0x6f,0x9d,0x58,0x00,0x00,0x00 + andl $0x1fffffff,%eax + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm13,%ymm14,%ymm14 + vmovdqu 256-8-128(%r13),%ymm10 + vpaddq %ymm14,%ymm6,%ymm6 + vpmuludq %ymm13,%ymm11,%ymm11 + vmovdqu 288-8-128(%r13),%ymm9 + vmovd %eax,%xmm0 + imulq -128(%r13),%rax + vpaddq %ymm11,%ymm7,%ymm7 + vpmuludq %ymm13,%ymm10,%ymm10 + vmovdqu 32-16-128(%r13),%ymm14 + vpbroadcastq %xmm0,%ymm0 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm13,%ymm9,%ymm9 + vmovdqu 64-16-128(%r13),%ymm11 + addq %rax,%r12 + + vmovdqu 32-24-128(%r13),%ymm13 + vpmuludq %ymm12,%ymm14,%ymm14 + vmovdqu 96-16-128(%r13),%ymm10 + vpaddq %ymm14,%ymm1,%ymm1 + vpmuludq %ymm0,%ymm13,%ymm13 + vpmuludq %ymm12,%ymm11,%ymm11 +.byte 0xc4,0x41,0x7e,0x6f,0xb5,0xf0,0xff,0xff,0xff + vpaddq %ymm1,%ymm13,%ymm13 + vpaddq %ymm11,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm10,%ymm10 + vmovdqu 160-16-128(%r13),%ymm11 +.byte 0x67 + vmovq %xmm13,%rax + vmovdqu %ymm13,(%rsp) + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm12,%ymm14,%ymm14 + vmovdqu 192-16-128(%r13),%ymm10 + vpaddq %ymm14,%ymm4,%ymm4 + vpmuludq %ymm12,%ymm11,%ymm11 + vmovdqu 224-16-128(%r13),%ymm14 + vpaddq %ymm11,%ymm5,%ymm5 + vpmuludq %ymm12,%ymm10,%ymm10 + vmovdqu 256-16-128(%r13),%ymm11 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm12,%ymm14,%ymm14 + shrq $29,%r12 + vmovdqu 288-16-128(%r13),%ymm10 + addq %r12,%rax + vpaddq %ymm14,%ymm7,%ymm7 + vpmuludq %ymm12,%ymm11,%ymm11 + + movq %rax,%r9 + imull %ecx,%eax + vpaddq %ymm11,%ymm8,%ymm8 + vpmuludq %ymm12,%ymm10,%ymm10 + andl $0x1fffffff,%eax + vmovd %eax,%xmm12 + vmovdqu 96-24-128(%r13),%ymm11 +.byte 0x67 + vpaddq %ymm10,%ymm9,%ymm9 + vpbroadcastq %xmm12,%ymm12 + + vpmuludq 64-24-128(%r13),%ymm0,%ymm14 + vmovdqu 128-24-128(%r13),%ymm10 + movq %rax,%rdx + imulq -128(%r13),%rax + movq 8(%rsp),%r10 + vpaddq %ymm14,%ymm2,%ymm1 + vpmuludq %ymm0,%ymm11,%ymm11 + vmovdqu 160-24-128(%r13),%ymm14 + addq %rax,%r9 + movq %rdx,%rax + imulq 8-128(%r13),%rax +.byte 0x67 + shrq $29,%r9 + movq 16(%rsp),%r11 + vpaddq %ymm11,%ymm3,%ymm2 + vpmuludq %ymm0,%ymm10,%ymm10 + vmovdqu 192-24-128(%r13),%ymm11 + addq %rax,%r10 + movq %rdx,%rax + imulq 16-128(%r13),%rax + vpaddq %ymm10,%ymm4,%ymm3 + vpmuludq %ymm0,%ymm14,%ymm14 + vmovdqu 224-24-128(%r13),%ymm10 + imulq 24-128(%r13),%rdx + addq %rax,%r11 + leaq (%r9,%r10,1),%rax + vpaddq %ymm14,%ymm5,%ymm4 + vpmuludq %ymm0,%ymm11,%ymm11 + vmovdqu 256-24-128(%r13),%ymm14 + movq %rax,%r10 + imull %ecx,%eax + vpmuludq %ymm0,%ymm10,%ymm10 + vpaddq %ymm11,%ymm6,%ymm5 + vmovdqu 288-24-128(%r13),%ymm11 + andl $0x1fffffff,%eax + vpaddq %ymm10,%ymm7,%ymm6 + vpmuludq %ymm0,%ymm14,%ymm14 + addq 24(%rsp),%rdx + vpaddq %ymm14,%ymm8,%ymm7 + vpmuludq %ymm0,%ymm11,%ymm11 + vpaddq %ymm11,%ymm9,%ymm8 + vmovq %r12,%xmm9 + movq %rdx,%r12 + + decl %r14d + jnz L$OOP_REDUCE_1024 + leaq 448(%rsp),%r12 + vpaddq %ymm9,%ymm13,%ymm0 + vpxor %ymm9,%ymm9,%ymm9 + + vpaddq 288-192(%rbx),%ymm0,%ymm0 + vpaddq 320-448(%r12),%ymm1,%ymm1 + vpaddq 352-448(%r12),%ymm2,%ymm2 + vpaddq 384-448(%r12),%ymm3,%ymm3 + vpaddq 416-448(%r12),%ymm4,%ymm4 + vpaddq 448-448(%r12),%ymm5,%ymm5 + vpaddq 480-448(%r12),%ymm6,%ymm6 + vpaddq 512-448(%r12),%ymm7,%ymm7 + vpaddq 544-448(%r12),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm14 + vpand %ymm15,%ymm0,%ymm0 + vpsrlq $29,%ymm1,%ymm11 + vpand %ymm15,%ymm1,%ymm1 + vpsrlq $29,%ymm2,%ymm12 + vpermq $0x93,%ymm14,%ymm14 + vpand %ymm15,%ymm2,%ymm2 + vpsrlq $29,%ymm3,%ymm13 + vpermq $0x93,%ymm11,%ymm11 + vpand %ymm15,%ymm3,%ymm3 + vpermq $0x93,%ymm12,%ymm12 + + vpblendd $3,%ymm9,%ymm14,%ymm10 + vpermq $0x93,%ymm13,%ymm13 + vpblendd $3,%ymm14,%ymm11,%ymm14 + vpaddq %ymm10,%ymm0,%ymm0 + vpblendd $3,%ymm11,%ymm12,%ymm11 + vpaddq %ymm14,%ymm1,%ymm1 + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm11,%ymm2,%ymm2 + vpblendd $3,%ymm13,%ymm9,%ymm13 + vpaddq %ymm12,%ymm3,%ymm3 + vpaddq %ymm13,%ymm4,%ymm4 + + vpsrlq $29,%ymm0,%ymm14 + vpand %ymm15,%ymm0,%ymm0 + vpsrlq $29,%ymm1,%ymm11 + vpand %ymm15,%ymm1,%ymm1 + vpsrlq $29,%ymm2,%ymm12 + vpermq $0x93,%ymm14,%ymm14 + vpand %ymm15,%ymm2,%ymm2 + vpsrlq $29,%ymm3,%ymm13 + vpermq $0x93,%ymm11,%ymm11 + vpand %ymm15,%ymm3,%ymm3 + vpermq $0x93,%ymm12,%ymm12 + + vpblendd $3,%ymm9,%ymm14,%ymm10 + vpermq $0x93,%ymm13,%ymm13 + vpblendd $3,%ymm14,%ymm11,%ymm14 + vpaddq %ymm10,%ymm0,%ymm0 + vpblendd $3,%ymm11,%ymm12,%ymm11 + vpaddq %ymm14,%ymm1,%ymm1 + vmovdqu %ymm0,0-128(%rdi) + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm11,%ymm2,%ymm2 + vmovdqu %ymm1,32-128(%rdi) + vpblendd $3,%ymm13,%ymm9,%ymm13 + vpaddq %ymm12,%ymm3,%ymm3 + vmovdqu %ymm2,64-128(%rdi) + vpaddq %ymm13,%ymm4,%ymm4 + vmovdqu %ymm3,96-128(%rdi) + vpsrlq $29,%ymm4,%ymm14 + vpand %ymm15,%ymm4,%ymm4 + vpsrlq $29,%ymm5,%ymm11 + vpand %ymm15,%ymm5,%ymm5 + vpsrlq $29,%ymm6,%ymm12 + vpermq $0x93,%ymm14,%ymm14 + vpand %ymm15,%ymm6,%ymm6 + vpsrlq $29,%ymm7,%ymm13 + vpermq $0x93,%ymm11,%ymm11 + vpand %ymm15,%ymm7,%ymm7 + vpsrlq $29,%ymm8,%ymm0 + vpermq $0x93,%ymm12,%ymm12 + vpand %ymm15,%ymm8,%ymm8 + vpermq $0x93,%ymm13,%ymm13 + + vpblendd $3,%ymm9,%ymm14,%ymm10 + vpermq $0x93,%ymm0,%ymm0 + vpblendd $3,%ymm14,%ymm11,%ymm14 + vpaddq %ymm10,%ymm4,%ymm4 + vpblendd $3,%ymm11,%ymm12,%ymm11 + vpaddq %ymm14,%ymm5,%ymm5 + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm11,%ymm6,%ymm6 + vpblendd $3,%ymm13,%ymm0,%ymm13 + vpaddq %ymm12,%ymm7,%ymm7 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm4,%ymm14 + vpand %ymm15,%ymm4,%ymm4 + vpsrlq $29,%ymm5,%ymm11 + vpand %ymm15,%ymm5,%ymm5 + vpsrlq $29,%ymm6,%ymm12 + vpermq $0x93,%ymm14,%ymm14 + vpand %ymm15,%ymm6,%ymm6 + vpsrlq $29,%ymm7,%ymm13 + vpermq $0x93,%ymm11,%ymm11 + vpand %ymm15,%ymm7,%ymm7 + vpsrlq $29,%ymm8,%ymm0 + vpermq $0x93,%ymm12,%ymm12 + vpand %ymm15,%ymm8,%ymm8 + vpermq $0x93,%ymm13,%ymm13 + + vpblendd $3,%ymm9,%ymm14,%ymm10 + vpermq $0x93,%ymm0,%ymm0 + vpblendd $3,%ymm14,%ymm11,%ymm14 + vpaddq %ymm10,%ymm4,%ymm4 + vpblendd $3,%ymm11,%ymm12,%ymm11 + vpaddq %ymm14,%ymm5,%ymm5 + vmovdqu %ymm4,128-128(%rdi) + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm11,%ymm6,%ymm6 + vmovdqu %ymm5,160-128(%rdi) + vpblendd $3,%ymm13,%ymm0,%ymm13 + vpaddq %ymm12,%ymm7,%ymm7 + vmovdqu %ymm6,192-128(%rdi) + vpaddq %ymm13,%ymm8,%ymm8 + vmovdqu %ymm7,224-128(%rdi) + vmovdqu %ymm8,256-128(%rdi) + + movq %rdi,%rsi + decl %r8d + jne L$OOP_GRANDE_SQR_1024 + + vzeroall + movq %rbp,%rax + + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$sqr_1024_epilogue: + .byte 0xf3,0xc3 + + +.globl _rsaz_1024_mul_avx2 + +.p2align 6 +_rsaz_1024_mul_avx2: + + leaq (%rsp),%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + movq %rax,%rbp + + vzeroall + movq %rdx,%r13 + subq $64,%rsp + + + + + + +.byte 0x67,0x67 + movq %rsi,%r15 + andq $4095,%r15 + addq $320,%r15 + shrq $12,%r15 + movq %rsi,%r15 + cmovnzq %r13,%rsi + cmovnzq %r15,%r13 + + movq %rcx,%r15 + subq $-128,%rsi + subq $-128,%rcx + subq $-128,%rdi + + andq $4095,%r15 + addq $320,%r15 +.byte 0x67,0x67 + shrq $12,%r15 + jz L$mul_1024_no_n_copy + + + + + + subq $320,%rsp + vmovdqu 0-128(%rcx),%ymm0 + andq $-512,%rsp + vmovdqu 32-128(%rcx),%ymm1 + vmovdqu 64-128(%rcx),%ymm2 + vmovdqu 96-128(%rcx),%ymm3 + vmovdqu 128-128(%rcx),%ymm4 + vmovdqu 160-128(%rcx),%ymm5 + vmovdqu 192-128(%rcx),%ymm6 + vmovdqu 224-128(%rcx),%ymm7 + vmovdqu 256-128(%rcx),%ymm8 + leaq 64+128(%rsp),%rcx + vmovdqu %ymm0,0-128(%rcx) + vpxor %ymm0,%ymm0,%ymm0 + vmovdqu %ymm1,32-128(%rcx) + vpxor %ymm1,%ymm1,%ymm1 + vmovdqu %ymm2,64-128(%rcx) + vpxor %ymm2,%ymm2,%ymm2 + vmovdqu %ymm3,96-128(%rcx) + vpxor %ymm3,%ymm3,%ymm3 + vmovdqu %ymm4,128-128(%rcx) + vpxor %ymm4,%ymm4,%ymm4 + vmovdqu %ymm5,160-128(%rcx) + vpxor %ymm5,%ymm5,%ymm5 + vmovdqu %ymm6,192-128(%rcx) + vpxor %ymm6,%ymm6,%ymm6 + vmovdqu %ymm7,224-128(%rcx) + vpxor %ymm7,%ymm7,%ymm7 + vmovdqu %ymm8,256-128(%rcx) + vmovdqa %ymm0,%ymm8 + vmovdqu %ymm9,288-128(%rcx) +L$mul_1024_no_n_copy: + andq $-64,%rsp + + movq (%r13),%rbx + vpbroadcastq (%r13),%ymm10 + vmovdqu %ymm0,(%rsp) + xorq %r9,%r9 +.byte 0x67 + xorq %r10,%r10 + xorq %r11,%r11 + xorq %r12,%r12 + + vmovdqu L$and_mask(%rip),%ymm15 + movl $9,%r14d + vmovdqu %ymm9,288-128(%rdi) + jmp L$oop_mul_1024 + +.p2align 5 +L$oop_mul_1024: + vpsrlq $29,%ymm3,%ymm9 + movq %rbx,%rax + imulq -128(%rsi),%rax + addq %r9,%rax + movq %rbx,%r10 + imulq 8-128(%rsi),%r10 + addq 8(%rsp),%r10 + + movq %rax,%r9 + imull %r8d,%eax + andl $0x1fffffff,%eax + + movq %rbx,%r11 + imulq 16-128(%rsi),%r11 + addq 16(%rsp),%r11 + + movq %rbx,%r12 + imulq 24-128(%rsi),%r12 + addq 24(%rsp),%r12 + vpmuludq 32-128(%rsi),%ymm10,%ymm0 + vmovd %eax,%xmm11 + vpaddq %ymm0,%ymm1,%ymm1 + vpmuludq 64-128(%rsi),%ymm10,%ymm12 + vpbroadcastq %xmm11,%ymm11 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq 96-128(%rsi),%ymm10,%ymm13 + vpand %ymm15,%ymm3,%ymm3 + vpaddq %ymm13,%ymm3,%ymm3 + vpmuludq 128-128(%rsi),%ymm10,%ymm0 + vpaddq %ymm0,%ymm4,%ymm4 + vpmuludq 160-128(%rsi),%ymm10,%ymm12 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq 192-128(%rsi),%ymm10,%ymm13 + vpaddq %ymm13,%ymm6,%ymm6 + vpmuludq 224-128(%rsi),%ymm10,%ymm0 + vpermq $0x93,%ymm9,%ymm9 + vpaddq %ymm0,%ymm7,%ymm7 + vpmuludq 256-128(%rsi),%ymm10,%ymm12 + vpbroadcastq 8(%r13),%ymm10 + vpaddq %ymm12,%ymm8,%ymm8 + + movq %rax,%rdx + imulq -128(%rcx),%rax + addq %rax,%r9 + movq %rdx,%rax + imulq 8-128(%rcx),%rax + addq %rax,%r10 + movq %rdx,%rax + imulq 16-128(%rcx),%rax + addq %rax,%r11 + shrq $29,%r9 + imulq 24-128(%rcx),%rdx + addq %rdx,%r12 + addq %r9,%r10 + + vpmuludq 32-128(%rcx),%ymm11,%ymm13 + vmovq %xmm10,%rbx + vpaddq %ymm13,%ymm1,%ymm1 + vpmuludq 64-128(%rcx),%ymm11,%ymm0 + vpaddq %ymm0,%ymm2,%ymm2 + vpmuludq 96-128(%rcx),%ymm11,%ymm12 + vpaddq %ymm12,%ymm3,%ymm3 + vpmuludq 128-128(%rcx),%ymm11,%ymm13 + vpaddq %ymm13,%ymm4,%ymm4 + vpmuludq 160-128(%rcx),%ymm11,%ymm0 + vpaddq %ymm0,%ymm5,%ymm5 + vpmuludq 192-128(%rcx),%ymm11,%ymm12 + vpaddq %ymm12,%ymm6,%ymm6 + vpmuludq 224-128(%rcx),%ymm11,%ymm13 + vpblendd $3,%ymm14,%ymm9,%ymm12 + vpaddq %ymm13,%ymm7,%ymm7 + vpmuludq 256-128(%rcx),%ymm11,%ymm0 + vpaddq %ymm12,%ymm3,%ymm3 + vpaddq %ymm0,%ymm8,%ymm8 + + movq %rbx,%rax + imulq -128(%rsi),%rax + addq %rax,%r10 + vmovdqu -8+32-128(%rsi),%ymm12 + movq %rbx,%rax + imulq 8-128(%rsi),%rax + addq %rax,%r11 + vmovdqu -8+64-128(%rsi),%ymm13 + + movq %r10,%rax + vpblendd $0xfc,%ymm14,%ymm9,%ymm9 + imull %r8d,%eax + vpaddq %ymm9,%ymm4,%ymm4 + andl $0x1fffffff,%eax + + imulq 16-128(%rsi),%rbx + addq %rbx,%r12 + vpmuludq %ymm10,%ymm12,%ymm12 + vmovd %eax,%xmm11 + vmovdqu -8+96-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm1,%ymm1 + vpmuludq %ymm10,%ymm13,%ymm13 + vpbroadcastq %xmm11,%ymm11 + vmovdqu -8+128-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm2,%ymm2 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovdqu -8+160-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm3,%ymm3 + vpmuludq %ymm10,%ymm12,%ymm12 + vmovdqu -8+192-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm4,%ymm4 + vpmuludq %ymm10,%ymm13,%ymm13 + vmovdqu -8+224-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm5,%ymm5 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovdqu -8+256-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm6,%ymm6 + vpmuludq %ymm10,%ymm12,%ymm12 + vmovdqu -8+288-128(%rsi),%ymm9 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq %ymm10,%ymm13,%ymm13 + vpaddq %ymm13,%ymm8,%ymm8 + vpmuludq %ymm10,%ymm9,%ymm9 + vpbroadcastq 16(%r13),%ymm10 + + movq %rax,%rdx + imulq -128(%rcx),%rax + addq %rax,%r10 + vmovdqu -8+32-128(%rcx),%ymm0 + movq %rdx,%rax + imulq 8-128(%rcx),%rax + addq %rax,%r11 + vmovdqu -8+64-128(%rcx),%ymm12 + shrq $29,%r10 + imulq 16-128(%rcx),%rdx + addq %rdx,%r12 + addq %r10,%r11 + + vpmuludq %ymm11,%ymm0,%ymm0 + vmovq %xmm10,%rbx + vmovdqu -8+96-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm1,%ymm1 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu -8+128-128(%rcx),%ymm0 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -8+160-128(%rcx),%ymm12 + vpaddq %ymm13,%ymm3,%ymm3 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovdqu -8+192-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm4,%ymm4 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu -8+224-128(%rcx),%ymm0 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -8+256-128(%rcx),%ymm12 + vpaddq %ymm13,%ymm6,%ymm6 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovdqu -8+288-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm7,%ymm7 + vpmuludq %ymm11,%ymm12,%ymm12 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq %ymm11,%ymm13,%ymm13 + vpaddq %ymm13,%ymm9,%ymm9 + + vmovdqu -16+32-128(%rsi),%ymm0 + movq %rbx,%rax + imulq -128(%rsi),%rax + addq %r11,%rax + + vmovdqu -16+64-128(%rsi),%ymm12 + movq %rax,%r11 + imull %r8d,%eax + andl $0x1fffffff,%eax + + imulq 8-128(%rsi),%rbx + addq %rbx,%r12 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovd %eax,%xmm11 + vmovdqu -16+96-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm1,%ymm1 + vpmuludq %ymm10,%ymm12,%ymm12 + vpbroadcastq %xmm11,%ymm11 + vmovdqu -16+128-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq %ymm10,%ymm13,%ymm13 + vmovdqu -16+160-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm3,%ymm3 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovdqu -16+192-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm4,%ymm4 + vpmuludq %ymm10,%ymm12,%ymm12 + vmovdqu -16+224-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq %ymm10,%ymm13,%ymm13 + vmovdqu -16+256-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm6,%ymm6 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovdqu -16+288-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm7,%ymm7 + vpmuludq %ymm10,%ymm12,%ymm12 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq %ymm10,%ymm13,%ymm13 + vpbroadcastq 24(%r13),%ymm10 + vpaddq %ymm13,%ymm9,%ymm9 + + vmovdqu -16+32-128(%rcx),%ymm0 + movq %rax,%rdx + imulq -128(%rcx),%rax + addq %rax,%r11 + vmovdqu -16+64-128(%rcx),%ymm12 + imulq 8-128(%rcx),%rdx + addq %rdx,%r12 + shrq $29,%r11 + + vpmuludq %ymm11,%ymm0,%ymm0 + vmovq %xmm10,%rbx + vmovdqu -16+96-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm1,%ymm1 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu -16+128-128(%rcx),%ymm0 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -16+160-128(%rcx),%ymm12 + vpaddq %ymm13,%ymm3,%ymm3 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovdqu -16+192-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm4,%ymm4 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu -16+224-128(%rcx),%ymm0 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -16+256-128(%rcx),%ymm12 + vpaddq %ymm13,%ymm6,%ymm6 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovdqu -16+288-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm7,%ymm7 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu -24+32-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -24+64-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm9,%ymm9 + + addq %r11,%r12 + imulq -128(%rsi),%rbx + addq %rbx,%r12 + + movq %r12,%rax + imull %r8d,%eax + andl $0x1fffffff,%eax + + vpmuludq %ymm10,%ymm0,%ymm0 + vmovd %eax,%xmm11 + vmovdqu -24+96-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm1,%ymm1 + vpmuludq %ymm10,%ymm12,%ymm12 + vpbroadcastq %xmm11,%ymm11 + vmovdqu -24+128-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm2,%ymm2 + vpmuludq %ymm10,%ymm13,%ymm13 + vmovdqu -24+160-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm3,%ymm3 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovdqu -24+192-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm4,%ymm4 + vpmuludq %ymm10,%ymm12,%ymm12 + vmovdqu -24+224-128(%rsi),%ymm0 + vpaddq %ymm12,%ymm5,%ymm5 + vpmuludq %ymm10,%ymm13,%ymm13 + vmovdqu -24+256-128(%rsi),%ymm12 + vpaddq %ymm13,%ymm6,%ymm6 + vpmuludq %ymm10,%ymm0,%ymm0 + vmovdqu -24+288-128(%rsi),%ymm13 + vpaddq %ymm0,%ymm7,%ymm7 + vpmuludq %ymm10,%ymm12,%ymm12 + vpaddq %ymm12,%ymm8,%ymm8 + vpmuludq %ymm10,%ymm13,%ymm13 + vpbroadcastq 32(%r13),%ymm10 + vpaddq %ymm13,%ymm9,%ymm9 + addq $32,%r13 + + vmovdqu -24+32-128(%rcx),%ymm0 + imulq -128(%rcx),%rax + addq %rax,%r12 + shrq $29,%r12 + + vmovdqu -24+64-128(%rcx),%ymm12 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovq %xmm10,%rbx + vmovdqu -24+96-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm1,%ymm0 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu %ymm0,(%rsp) + vpaddq %ymm12,%ymm2,%ymm1 + vmovdqu -24+128-128(%rcx),%ymm0 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -24+160-128(%rcx),%ymm12 + vpaddq %ymm13,%ymm3,%ymm2 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovdqu -24+192-128(%rcx),%ymm13 + vpaddq %ymm0,%ymm4,%ymm3 + vpmuludq %ymm11,%ymm12,%ymm12 + vmovdqu -24+224-128(%rcx),%ymm0 + vpaddq %ymm12,%ymm5,%ymm4 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovdqu -24+256-128(%rcx),%ymm12 + vpaddq %ymm13,%ymm6,%ymm5 + vpmuludq %ymm11,%ymm0,%ymm0 + vmovdqu -24+288-128(%rcx),%ymm13 + movq %r12,%r9 + vpaddq %ymm0,%ymm7,%ymm6 + vpmuludq %ymm11,%ymm12,%ymm12 + addq (%rsp),%r9 + vpaddq %ymm12,%ymm8,%ymm7 + vpmuludq %ymm11,%ymm13,%ymm13 + vmovq %r12,%xmm12 + vpaddq %ymm13,%ymm9,%ymm8 + + decl %r14d + jnz L$oop_mul_1024 + vpaddq (%rsp),%ymm12,%ymm0 + + vpsrlq $29,%ymm0,%ymm12 + vpand %ymm15,%ymm0,%ymm0 + vpsrlq $29,%ymm1,%ymm13 + vpand %ymm15,%ymm1,%ymm1 + vpsrlq $29,%ymm2,%ymm10 + vpermq $0x93,%ymm12,%ymm12 + vpand %ymm15,%ymm2,%ymm2 + vpsrlq $29,%ymm3,%ymm11 + vpermq $0x93,%ymm13,%ymm13 + vpand %ymm15,%ymm3,%ymm3 + + vpblendd $3,%ymm14,%ymm12,%ymm9 + vpermq $0x93,%ymm10,%ymm10 + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpermq $0x93,%ymm11,%ymm11 + vpaddq %ymm9,%ymm0,%ymm0 + vpblendd $3,%ymm13,%ymm10,%ymm13 + vpaddq %ymm12,%ymm1,%ymm1 + vpblendd $3,%ymm10,%ymm11,%ymm10 + vpaddq %ymm13,%ymm2,%ymm2 + vpblendd $3,%ymm11,%ymm14,%ymm11 + vpaddq %ymm10,%ymm3,%ymm3 + vpaddq %ymm11,%ymm4,%ymm4 + + vpsrlq $29,%ymm0,%ymm12 + vpand %ymm15,%ymm0,%ymm0 + vpsrlq $29,%ymm1,%ymm13 + vpand %ymm15,%ymm1,%ymm1 + vpsrlq $29,%ymm2,%ymm10 + vpermq $0x93,%ymm12,%ymm12 + vpand %ymm15,%ymm2,%ymm2 + vpsrlq $29,%ymm3,%ymm11 + vpermq $0x93,%ymm13,%ymm13 + vpand %ymm15,%ymm3,%ymm3 + vpermq $0x93,%ymm10,%ymm10 + + vpblendd $3,%ymm14,%ymm12,%ymm9 + vpermq $0x93,%ymm11,%ymm11 + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm9,%ymm0,%ymm0 + vpblendd $3,%ymm13,%ymm10,%ymm13 + vpaddq %ymm12,%ymm1,%ymm1 + vpblendd $3,%ymm10,%ymm11,%ymm10 + vpaddq %ymm13,%ymm2,%ymm2 + vpblendd $3,%ymm11,%ymm14,%ymm11 + vpaddq %ymm10,%ymm3,%ymm3 + vpaddq %ymm11,%ymm4,%ymm4 + + vmovdqu %ymm0,0-128(%rdi) + vmovdqu %ymm1,32-128(%rdi) + vmovdqu %ymm2,64-128(%rdi) + vmovdqu %ymm3,96-128(%rdi) + vpsrlq $29,%ymm4,%ymm12 + vpand %ymm15,%ymm4,%ymm4 + vpsrlq $29,%ymm5,%ymm13 + vpand %ymm15,%ymm5,%ymm5 + vpsrlq $29,%ymm6,%ymm10 + vpermq $0x93,%ymm12,%ymm12 + vpand %ymm15,%ymm6,%ymm6 + vpsrlq $29,%ymm7,%ymm11 + vpermq $0x93,%ymm13,%ymm13 + vpand %ymm15,%ymm7,%ymm7 + vpsrlq $29,%ymm8,%ymm0 + vpermq $0x93,%ymm10,%ymm10 + vpand %ymm15,%ymm8,%ymm8 + vpermq $0x93,%ymm11,%ymm11 + + vpblendd $3,%ymm14,%ymm12,%ymm9 + vpermq $0x93,%ymm0,%ymm0 + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm9,%ymm4,%ymm4 + vpblendd $3,%ymm13,%ymm10,%ymm13 + vpaddq %ymm12,%ymm5,%ymm5 + vpblendd $3,%ymm10,%ymm11,%ymm10 + vpaddq %ymm13,%ymm6,%ymm6 + vpblendd $3,%ymm11,%ymm0,%ymm11 + vpaddq %ymm10,%ymm7,%ymm7 + vpaddq %ymm11,%ymm8,%ymm8 + + vpsrlq $29,%ymm4,%ymm12 + vpand %ymm15,%ymm4,%ymm4 + vpsrlq $29,%ymm5,%ymm13 + vpand %ymm15,%ymm5,%ymm5 + vpsrlq $29,%ymm6,%ymm10 + vpermq $0x93,%ymm12,%ymm12 + vpand %ymm15,%ymm6,%ymm6 + vpsrlq $29,%ymm7,%ymm11 + vpermq $0x93,%ymm13,%ymm13 + vpand %ymm15,%ymm7,%ymm7 + vpsrlq $29,%ymm8,%ymm0 + vpermq $0x93,%ymm10,%ymm10 + vpand %ymm15,%ymm8,%ymm8 + vpermq $0x93,%ymm11,%ymm11 + + vpblendd $3,%ymm14,%ymm12,%ymm9 + vpermq $0x93,%ymm0,%ymm0 + vpblendd $3,%ymm12,%ymm13,%ymm12 + vpaddq %ymm9,%ymm4,%ymm4 + vpblendd $3,%ymm13,%ymm10,%ymm13 + vpaddq %ymm12,%ymm5,%ymm5 + vpblendd $3,%ymm10,%ymm11,%ymm10 + vpaddq %ymm13,%ymm6,%ymm6 + vpblendd $3,%ymm11,%ymm0,%ymm11 + vpaddq %ymm10,%ymm7,%ymm7 + vpaddq %ymm11,%ymm8,%ymm8 + + vmovdqu %ymm4,128-128(%rdi) + vmovdqu %ymm5,160-128(%rdi) + vmovdqu %ymm6,192-128(%rdi) + vmovdqu %ymm7,224-128(%rdi) + vmovdqu %ymm8,256-128(%rdi) + vzeroupper + + movq %rbp,%rax + + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$mul_1024_epilogue: + .byte 0xf3,0xc3 + + +.globl _rsaz_1024_red2norm_avx2 + +.p2align 5 +_rsaz_1024_red2norm_avx2: + + subq $-128,%rsi + xorq %rax,%rax + movq -128(%rsi),%r8 + movq -120(%rsi),%r9 + movq -112(%rsi),%r10 + shlq $0,%r8 + shlq $29,%r9 + movq %r10,%r11 + shlq $58,%r10 + shrq $6,%r11 + addq %r8,%rax + addq %r9,%rax + addq %r10,%rax + adcq $0,%r11 + movq %rax,0(%rdi) + movq %r11,%rax + movq -104(%rsi),%r8 + movq -96(%rsi),%r9 + shlq $23,%r8 + movq %r9,%r10 + shlq $52,%r9 + shrq $12,%r10 + addq %r8,%rax + addq %r9,%rax + adcq $0,%r10 + movq %rax,8(%rdi) + movq %r10,%rax + movq -88(%rsi),%r11 + movq -80(%rsi),%r8 + shlq $17,%r11 + movq %r8,%r9 + shlq $46,%r8 + shrq $18,%r9 + addq %r11,%rax + addq %r8,%rax + adcq $0,%r9 + movq %rax,16(%rdi) + movq %r9,%rax + movq -72(%rsi),%r10 + movq -64(%rsi),%r11 + shlq $11,%r10 + movq %r11,%r8 + shlq $40,%r11 + shrq $24,%r8 + addq %r10,%rax + addq %r11,%rax + adcq $0,%r8 + movq %rax,24(%rdi) + movq %r8,%rax + movq -56(%rsi),%r9 + movq -48(%rsi),%r10 + movq -40(%rsi),%r11 + shlq $5,%r9 + shlq $34,%r10 + movq %r11,%r8 + shlq $63,%r11 + shrq $1,%r8 + addq %r9,%rax + addq %r10,%rax + addq %r11,%rax + adcq $0,%r8 + movq %rax,32(%rdi) + movq %r8,%rax + movq -32(%rsi),%r9 + movq -24(%rsi),%r10 + shlq $28,%r9 + movq %r10,%r11 + shlq $57,%r10 + shrq $7,%r11 + addq %r9,%rax + addq %r10,%rax + adcq $0,%r11 + movq %rax,40(%rdi) + movq %r11,%rax + movq -16(%rsi),%r8 + movq -8(%rsi),%r9 + shlq $22,%r8 + movq %r9,%r10 + shlq $51,%r9 + shrq $13,%r10 + addq %r8,%rax + addq %r9,%rax + adcq $0,%r10 + movq %rax,48(%rdi) + movq %r10,%rax + movq 0(%rsi),%r11 + movq 8(%rsi),%r8 + shlq $16,%r11 + movq %r8,%r9 + shlq $45,%r8 + shrq $19,%r9 + addq %r11,%rax + addq %r8,%rax + adcq $0,%r9 + movq %rax,56(%rdi) + movq %r9,%rax + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + shlq $10,%r10 + movq %r11,%r8 + shlq $39,%r11 + shrq $25,%r8 + addq %r10,%rax + addq %r11,%rax + adcq $0,%r8 + movq %rax,64(%rdi) + movq %r8,%rax + movq 32(%rsi),%r9 + movq 40(%rsi),%r10 + movq 48(%rsi),%r11 + shlq $4,%r9 + shlq $33,%r10 + movq %r11,%r8 + shlq $62,%r11 + shrq $2,%r8 + addq %r9,%rax + addq %r10,%rax + addq %r11,%rax + adcq $0,%r8 + movq %rax,72(%rdi) + movq %r8,%rax + movq 56(%rsi),%r9 + movq 64(%rsi),%r10 + shlq $27,%r9 + movq %r10,%r11 + shlq $56,%r10 + shrq $8,%r11 + addq %r9,%rax + addq %r10,%rax + adcq $0,%r11 + movq %rax,80(%rdi) + movq %r11,%rax + movq 72(%rsi),%r8 + movq 80(%rsi),%r9 + shlq $21,%r8 + movq %r9,%r10 + shlq $50,%r9 + shrq $14,%r10 + addq %r8,%rax + addq %r9,%rax + adcq $0,%r10 + movq %rax,88(%rdi) + movq %r10,%rax + movq 88(%rsi),%r11 + movq 96(%rsi),%r8 + shlq $15,%r11 + movq %r8,%r9 + shlq $44,%r8 + shrq $20,%r9 + addq %r11,%rax + addq %r8,%rax + adcq $0,%r9 + movq %rax,96(%rdi) + movq %r9,%rax + movq 104(%rsi),%r10 + movq 112(%rsi),%r11 + shlq $9,%r10 + movq %r11,%r8 + shlq $38,%r11 + shrq $26,%r8 + addq %r10,%rax + addq %r11,%rax + adcq $0,%r8 + movq %rax,104(%rdi) + movq %r8,%rax + movq 120(%rsi),%r9 + movq 128(%rsi),%r10 + movq 136(%rsi),%r11 + shlq $3,%r9 + shlq $32,%r10 + movq %r11,%r8 + shlq $61,%r11 + shrq $3,%r8 + addq %r9,%rax + addq %r10,%rax + addq %r11,%rax + adcq $0,%r8 + movq %rax,112(%rdi) + movq %r8,%rax + movq 144(%rsi),%r9 + movq 152(%rsi),%r10 + shlq $26,%r9 + movq %r10,%r11 + shlq $55,%r10 + shrq $9,%r11 + addq %r9,%rax + addq %r10,%rax + adcq $0,%r11 + movq %rax,120(%rdi) + movq %r11,%rax + .byte 0xf3,0xc3 + + + +.globl _rsaz_1024_norm2red_avx2 + +.p2align 5 +_rsaz_1024_norm2red_avx2: + + subq $-128,%rdi + movq (%rsi),%r8 + movl $0x1fffffff,%eax + movq 8(%rsi),%r9 + movq %r8,%r11 + shrq $0,%r11 + andq %rax,%r11 + movq %r11,-128(%rdi) + movq %r8,%r10 + shrq $29,%r10 + andq %rax,%r10 + movq %r10,-120(%rdi) + shrdq $58,%r9,%r8 + andq %rax,%r8 + movq %r8,-112(%rdi) + movq 16(%rsi),%r10 + movq %r9,%r8 + shrq $23,%r8 + andq %rax,%r8 + movq %r8,-104(%rdi) + shrdq $52,%r10,%r9 + andq %rax,%r9 + movq %r9,-96(%rdi) + movq 24(%rsi),%r11 + movq %r10,%r9 + shrq $17,%r9 + andq %rax,%r9 + movq %r9,-88(%rdi) + shrdq $46,%r11,%r10 + andq %rax,%r10 + movq %r10,-80(%rdi) + movq 32(%rsi),%r8 + movq %r11,%r10 + shrq $11,%r10 + andq %rax,%r10 + movq %r10,-72(%rdi) + shrdq $40,%r8,%r11 + andq %rax,%r11 + movq %r11,-64(%rdi) + movq 40(%rsi),%r9 + movq %r8,%r11 + shrq $5,%r11 + andq %rax,%r11 + movq %r11,-56(%rdi) + movq %r8,%r10 + shrq $34,%r10 + andq %rax,%r10 + movq %r10,-48(%rdi) + shrdq $63,%r9,%r8 + andq %rax,%r8 + movq %r8,-40(%rdi) + movq 48(%rsi),%r10 + movq %r9,%r8 + shrq $28,%r8 + andq %rax,%r8 + movq %r8,-32(%rdi) + shrdq $57,%r10,%r9 + andq %rax,%r9 + movq %r9,-24(%rdi) + movq 56(%rsi),%r11 + movq %r10,%r9 + shrq $22,%r9 + andq %rax,%r9 + movq %r9,-16(%rdi) + shrdq $51,%r11,%r10 + andq %rax,%r10 + movq %r10,-8(%rdi) + movq 64(%rsi),%r8 + movq %r11,%r10 + shrq $16,%r10 + andq %rax,%r10 + movq %r10,0(%rdi) + shrdq $45,%r8,%r11 + andq %rax,%r11 + movq %r11,8(%rdi) + movq 72(%rsi),%r9 + movq %r8,%r11 + shrq $10,%r11 + andq %rax,%r11 + movq %r11,16(%rdi) + shrdq $39,%r9,%r8 + andq %rax,%r8 + movq %r8,24(%rdi) + movq 80(%rsi),%r10 + movq %r9,%r8 + shrq $4,%r8 + andq %rax,%r8 + movq %r8,32(%rdi) + movq %r9,%r11 + shrq $33,%r11 + andq %rax,%r11 + movq %r11,40(%rdi) + shrdq $62,%r10,%r9 + andq %rax,%r9 + movq %r9,48(%rdi) + movq 88(%rsi),%r11 + movq %r10,%r9 + shrq $27,%r9 + andq %rax,%r9 + movq %r9,56(%rdi) + shrdq $56,%r11,%r10 + andq %rax,%r10 + movq %r10,64(%rdi) + movq 96(%rsi),%r8 + movq %r11,%r10 + shrq $21,%r10 + andq %rax,%r10 + movq %r10,72(%rdi) + shrdq $50,%r8,%r11 + andq %rax,%r11 + movq %r11,80(%rdi) + movq 104(%rsi),%r9 + movq %r8,%r11 + shrq $15,%r11 + andq %rax,%r11 + movq %r11,88(%rdi) + shrdq $44,%r9,%r8 + andq %rax,%r8 + movq %r8,96(%rdi) + movq 112(%rsi),%r10 + movq %r9,%r8 + shrq $9,%r8 + andq %rax,%r8 + movq %r8,104(%rdi) + shrdq $38,%r10,%r9 + andq %rax,%r9 + movq %r9,112(%rdi) + movq 120(%rsi),%r11 + movq %r10,%r9 + shrq $3,%r9 + andq %rax,%r9 + movq %r9,120(%rdi) + movq %r10,%r8 + shrq $32,%r8 + andq %rax,%r8 + movq %r8,128(%rdi) + shrdq $61,%r11,%r10 + andq %rax,%r10 + movq %r10,136(%rdi) + xorq %r8,%r8 + movq %r11,%r10 + shrq $26,%r10 + andq %rax,%r10 + movq %r10,144(%rdi) + shrdq $55,%r8,%r11 + andq %rax,%r11 + movq %r11,152(%rdi) + movq %r8,160(%rdi) + movq %r8,168(%rdi) + movq %r8,176(%rdi) + movq %r8,184(%rdi) + .byte 0xf3,0xc3 + + +.globl _rsaz_1024_scatter5_avx2 + +.p2align 5 +_rsaz_1024_scatter5_avx2: + + vzeroupper + vmovdqu L$scatter_permd(%rip),%ymm5 + shll $4,%edx + leaq (%rdi,%rdx,1),%rdi + movl $9,%eax + jmp L$oop_scatter_1024 + +.p2align 5 +L$oop_scatter_1024: + vmovdqu (%rsi),%ymm0 + leaq 32(%rsi),%rsi + vpermd %ymm0,%ymm5,%ymm0 + vmovdqu %xmm0,(%rdi) + leaq 512(%rdi),%rdi + decl %eax + jnz L$oop_scatter_1024 + + vzeroupper + .byte 0xf3,0xc3 + + + +.globl _rsaz_1024_gather5_avx2 + +.p2align 5 +_rsaz_1024_gather5_avx2: + + vzeroupper + movq %rsp,%r11 + + leaq -256(%rsp),%rsp + andq $-32,%rsp + leaq L$inc(%rip),%r10 + leaq -128(%rsp),%rax + + vmovd %edx,%xmm4 + vmovdqa (%r10),%ymm0 + vmovdqa 32(%r10),%ymm1 + vmovdqa 64(%r10),%ymm5 + vpbroadcastd %xmm4,%ymm4 + + vpaddd %ymm5,%ymm0,%ymm2 + vpcmpeqd %ymm4,%ymm0,%ymm0 + vpaddd %ymm5,%ymm1,%ymm3 + vpcmpeqd %ymm4,%ymm1,%ymm1 + vmovdqa %ymm0,0+128(%rax) + vpaddd %ymm5,%ymm2,%ymm0 + vpcmpeqd %ymm4,%ymm2,%ymm2 + vmovdqa %ymm1,32+128(%rax) + vpaddd %ymm5,%ymm3,%ymm1 + vpcmpeqd %ymm4,%ymm3,%ymm3 + vmovdqa %ymm2,64+128(%rax) + vpaddd %ymm5,%ymm0,%ymm2 + vpcmpeqd %ymm4,%ymm0,%ymm0 + vmovdqa %ymm3,96+128(%rax) + vpaddd %ymm5,%ymm1,%ymm3 + vpcmpeqd %ymm4,%ymm1,%ymm1 + vmovdqa %ymm0,128+128(%rax) + vpaddd %ymm5,%ymm2,%ymm8 + vpcmpeqd %ymm4,%ymm2,%ymm2 + vmovdqa %ymm1,160+128(%rax) + vpaddd %ymm5,%ymm3,%ymm9 + vpcmpeqd %ymm4,%ymm3,%ymm3 + vmovdqa %ymm2,192+128(%rax) + vpaddd %ymm5,%ymm8,%ymm10 + vpcmpeqd %ymm4,%ymm8,%ymm8 + vmovdqa %ymm3,224+128(%rax) + vpaddd %ymm5,%ymm9,%ymm11 + vpcmpeqd %ymm4,%ymm9,%ymm9 + vpaddd %ymm5,%ymm10,%ymm12 + vpcmpeqd %ymm4,%ymm10,%ymm10 + vpaddd %ymm5,%ymm11,%ymm13 + vpcmpeqd %ymm4,%ymm11,%ymm11 + vpaddd %ymm5,%ymm12,%ymm14 + vpcmpeqd %ymm4,%ymm12,%ymm12 + vpaddd %ymm5,%ymm13,%ymm15 + vpcmpeqd %ymm4,%ymm13,%ymm13 + vpcmpeqd %ymm4,%ymm14,%ymm14 + vpcmpeqd %ymm4,%ymm15,%ymm15 + + vmovdqa -32(%r10),%ymm7 + leaq 128(%rsi),%rsi + movl $9,%edx + +L$oop_gather_1024: + vmovdqa 0-128(%rsi),%ymm0 + vmovdqa 32-128(%rsi),%ymm1 + vmovdqa 64-128(%rsi),%ymm2 + vmovdqa 96-128(%rsi),%ymm3 + vpand 0+128(%rax),%ymm0,%ymm0 + vpand 32+128(%rax),%ymm1,%ymm1 + vpand 64+128(%rax),%ymm2,%ymm2 + vpor %ymm0,%ymm1,%ymm4 + vpand 96+128(%rax),%ymm3,%ymm3 + vmovdqa 128-128(%rsi),%ymm0 + vmovdqa 160-128(%rsi),%ymm1 + vpor %ymm2,%ymm3,%ymm5 + vmovdqa 192-128(%rsi),%ymm2 + vmovdqa 224-128(%rsi),%ymm3 + vpand 128+128(%rax),%ymm0,%ymm0 + vpand 160+128(%rax),%ymm1,%ymm1 + vpand 192+128(%rax),%ymm2,%ymm2 + vpor %ymm0,%ymm4,%ymm4 + vpand 224+128(%rax),%ymm3,%ymm3 + vpand 256-128(%rsi),%ymm8,%ymm0 + vpor %ymm1,%ymm5,%ymm5 + vpand 288-128(%rsi),%ymm9,%ymm1 + vpor %ymm2,%ymm4,%ymm4 + vpand 320-128(%rsi),%ymm10,%ymm2 + vpor %ymm3,%ymm5,%ymm5 + vpand 352-128(%rsi),%ymm11,%ymm3 + vpor %ymm0,%ymm4,%ymm4 + vpand 384-128(%rsi),%ymm12,%ymm0 + vpor %ymm1,%ymm5,%ymm5 + vpand 416-128(%rsi),%ymm13,%ymm1 + vpor %ymm2,%ymm4,%ymm4 + vpand 448-128(%rsi),%ymm14,%ymm2 + vpor %ymm3,%ymm5,%ymm5 + vpand 480-128(%rsi),%ymm15,%ymm3 + leaq 512(%rsi),%rsi + vpor %ymm0,%ymm4,%ymm4 + vpor %ymm1,%ymm5,%ymm5 + vpor %ymm2,%ymm4,%ymm4 + vpor %ymm3,%ymm5,%ymm5 + + vpor %ymm5,%ymm4,%ymm4 + vextracti128 $1,%ymm4,%xmm5 + vpor %xmm4,%xmm5,%xmm5 + vpermd %ymm5,%ymm7,%ymm5 + vmovdqu %ymm5,(%rdi) + leaq 32(%rdi),%rdi + decl %edx + jnz L$oop_gather_1024 + + vpxor %ymm0,%ymm0,%ymm0 + vmovdqu %ymm0,(%rdi) + vzeroupper + leaq (%r11),%rsp + + .byte 0xf3,0xc3 + +L$SEH_end_rsaz_1024_gather5: + + +.globl _rsaz_avx2_eligible + +.p2align 5 +_rsaz_avx2_eligible: + movl _OPENSSL_ia32cap_P+8(%rip),%eax + movl $524544,%ecx + movl $0,%edx + andl %eax,%ecx + cmpl $524544,%ecx + cmovel %edx,%eax + andl $32,%eax + shrl $5,%eax + .byte 0xf3,0xc3 + + +.p2align 6 +L$and_mask: +.quad 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff +L$scatter_permd: +.long 0,2,4,6,7,7,7,7 +L$gather_permd: +.long 0,7,1,7,2,7,3,7 +L$inc: +.long 0,0,0,0, 1,1,1,1 +.long 2,2,2,2, 3,3,3,3 +.long 4,4,4,4, 4,4,4,4 +.p2align 6 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/bn/rsaz-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/bn/rsaz-x86_64.s new file mode 100644 index 0000000..b572410 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/bn/rsaz-x86_64.s @@ -0,0 +1,1985 @@ +.text + + + +.globl _rsaz_512_sqr + +.p2align 5 +_rsaz_512_sqr: + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + subq $128+24,%rsp + +L$sqr_body: +.byte 102,72,15,110,202 + movq (%rsi),%rdx + movq 8(%rsi),%rax + movq %rcx,128(%rsp) + movl $0x80100,%r11d + andl _OPENSSL_ia32cap_P+8(%rip),%r11d + cmpl $0x80100,%r11d + je L$oop_sqrx + jmp L$oop_sqr + +.p2align 5 +L$oop_sqr: + movl %r8d,128+8(%rsp) + + movq %rdx,%rbx + movq %rax,%rbp + mulq %rdx + movq %rax,%r8 + movq 16(%rsi),%rax + movq %rdx,%r9 + + mulq %rbx + addq %rax,%r9 + movq 24(%rsi),%rax + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r10 + movq 32(%rsi),%rax + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r11 + movq 40(%rsi),%rax + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r12 + movq 48(%rsi),%rax + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r13 + movq 56(%rsi),%rax + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + addq %rax,%r14 + movq %rbx,%rax + adcq $0,%rdx + + xorq %rcx,%rcx + addq %r8,%r8 + movq %rdx,%r15 + adcq $0,%rcx + + mulq %rax + addq %r8,%rdx + adcq $0,%rcx + + movq %rax,(%rsp) + movq %rdx,8(%rsp) + + + movq 16(%rsi),%rax + mulq %rbp + addq %rax,%r10 + movq 24(%rsi),%rax + movq %rdx,%rbx + adcq $0,%rbx + + mulq %rbp + addq %rax,%r11 + movq 32(%rsi),%rax + adcq $0,%rdx + addq %rbx,%r11 + movq %rdx,%rbx + adcq $0,%rbx + + mulq %rbp + addq %rax,%r12 + movq 40(%rsi),%rax + adcq $0,%rdx + addq %rbx,%r12 + movq %rdx,%rbx + adcq $0,%rbx + + mulq %rbp + addq %rax,%r13 + movq 48(%rsi),%rax + adcq $0,%rdx + addq %rbx,%r13 + movq %rdx,%rbx + adcq $0,%rbx + + mulq %rbp + addq %rax,%r14 + movq 56(%rsi),%rax + adcq $0,%rdx + addq %rbx,%r14 + movq %rdx,%rbx + adcq $0,%rbx + + mulq %rbp + addq %rax,%r15 + movq %rbp,%rax + adcq $0,%rdx + addq %rbx,%r15 + adcq $0,%rdx + + xorq %rbx,%rbx + addq %r9,%r9 + movq %rdx,%r8 + adcq %r10,%r10 + adcq $0,%rbx + + mulq %rax + + addq %rcx,%rax + movq 16(%rsi),%rbp + addq %rax,%r9 + movq 24(%rsi),%rax + adcq %rdx,%r10 + adcq $0,%rbx + + movq %r9,16(%rsp) + movq %r10,24(%rsp) + + + mulq %rbp + addq %rax,%r12 + movq 32(%rsi),%rax + movq %rdx,%rcx + adcq $0,%rcx + + mulq %rbp + addq %rax,%r13 + movq 40(%rsi),%rax + adcq $0,%rdx + addq %rcx,%r13 + movq %rdx,%rcx + adcq $0,%rcx + + mulq %rbp + addq %rax,%r14 + movq 48(%rsi),%rax + adcq $0,%rdx + addq %rcx,%r14 + movq %rdx,%rcx + adcq $0,%rcx + + mulq %rbp + addq %rax,%r15 + movq 56(%rsi),%rax + adcq $0,%rdx + addq %rcx,%r15 + movq %rdx,%rcx + adcq $0,%rcx + + mulq %rbp + addq %rax,%r8 + movq %rbp,%rax + adcq $0,%rdx + addq %rcx,%r8 + adcq $0,%rdx + + xorq %rcx,%rcx + addq %r11,%r11 + movq %rdx,%r9 + adcq %r12,%r12 + adcq $0,%rcx + + mulq %rax + + addq %rbx,%rax + movq 24(%rsi),%r10 + addq %rax,%r11 + movq 32(%rsi),%rax + adcq %rdx,%r12 + adcq $0,%rcx + + movq %r11,32(%rsp) + movq %r12,40(%rsp) + + + movq %rax,%r11 + mulq %r10 + addq %rax,%r14 + movq 40(%rsi),%rax + movq %rdx,%rbx + adcq $0,%rbx + + movq %rax,%r12 + mulq %r10 + addq %rax,%r15 + movq 48(%rsi),%rax + adcq $0,%rdx + addq %rbx,%r15 + movq %rdx,%rbx + adcq $0,%rbx + + movq %rax,%rbp + mulq %r10 + addq %rax,%r8 + movq 56(%rsi),%rax + adcq $0,%rdx + addq %rbx,%r8 + movq %rdx,%rbx + adcq $0,%rbx + + mulq %r10 + addq %rax,%r9 + movq %r10,%rax + adcq $0,%rdx + addq %rbx,%r9 + adcq $0,%rdx + + xorq %rbx,%rbx + addq %r13,%r13 + movq %rdx,%r10 + adcq %r14,%r14 + adcq $0,%rbx + + mulq %rax + + addq %rcx,%rax + addq %rax,%r13 + movq %r12,%rax + adcq %rdx,%r14 + adcq $0,%rbx + + movq %r13,48(%rsp) + movq %r14,56(%rsp) + + + mulq %r11 + addq %rax,%r8 + movq %rbp,%rax + movq %rdx,%rcx + adcq $0,%rcx + + mulq %r11 + addq %rax,%r9 + movq 56(%rsi),%rax + adcq $0,%rdx + addq %rcx,%r9 + movq %rdx,%rcx + adcq $0,%rcx + + movq %rax,%r14 + mulq %r11 + addq %rax,%r10 + movq %r11,%rax + adcq $0,%rdx + addq %rcx,%r10 + adcq $0,%rdx + + xorq %rcx,%rcx + addq %r15,%r15 + movq %rdx,%r11 + adcq %r8,%r8 + adcq $0,%rcx + + mulq %rax + + addq %rbx,%rax + addq %rax,%r15 + movq %rbp,%rax + adcq %rdx,%r8 + adcq $0,%rcx + + movq %r15,64(%rsp) + movq %r8,72(%rsp) + + + mulq %r12 + addq %rax,%r10 + movq %r14,%rax + movq %rdx,%rbx + adcq $0,%rbx + + mulq %r12 + addq %rax,%r11 + movq %r12,%rax + adcq $0,%rdx + addq %rbx,%r11 + adcq $0,%rdx + + xorq %rbx,%rbx + addq %r9,%r9 + movq %rdx,%r12 + adcq %r10,%r10 + adcq $0,%rbx + + mulq %rax + + addq %rcx,%rax + addq %rax,%r9 + movq %r14,%rax + adcq %rdx,%r10 + adcq $0,%rbx + + movq %r9,80(%rsp) + movq %r10,88(%rsp) + + + mulq %rbp + addq %rax,%r12 + movq %rbp,%rax + adcq $0,%rdx + + xorq %rcx,%rcx + addq %r11,%r11 + movq %rdx,%r13 + adcq %r12,%r12 + adcq $0,%rcx + + mulq %rax + + addq %rbx,%rax + addq %rax,%r11 + movq %r14,%rax + adcq %rdx,%r12 + adcq $0,%rcx + + movq %r11,96(%rsp) + movq %r12,104(%rsp) + + + xorq %rbx,%rbx + addq %r13,%r13 + adcq $0,%rbx + + mulq %rax + + addq %rcx,%rax + addq %r13,%rax + adcq %rbx,%rdx + + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 +.byte 102,72,15,126,205 + + movq %rax,112(%rsp) + movq %rdx,120(%rsp) + + call __rsaz_512_reduce + + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + adcq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + sbbq %rcx,%rcx + + call __rsaz_512_subtract + + movq %r8,%rdx + movq %r9,%rax + movl 128+8(%rsp),%r8d + movq %rdi,%rsi + + decl %r8d + jnz L$oop_sqr + jmp L$sqr_tail + +.p2align 5 +L$oop_sqrx: + movl %r8d,128+8(%rsp) +.byte 102,72,15,110,199 + + mulxq %rax,%r8,%r9 + movq %rax,%rbx + + mulxq 16(%rsi),%rcx,%r10 + xorq %rbp,%rbp + + mulxq 24(%rsi),%rax,%r11 + adcxq %rcx,%r9 + +.byte 0xc4,0x62,0xf3,0xf6,0xa6,0x20,0x00,0x00,0x00 + adcxq %rax,%r10 + +.byte 0xc4,0x62,0xfb,0xf6,0xae,0x28,0x00,0x00,0x00 + adcxq %rcx,%r11 + + mulxq 48(%rsi),%rcx,%r14 + adcxq %rax,%r12 + adcxq %rcx,%r13 + + mulxq 56(%rsi),%rax,%r15 + adcxq %rax,%r14 + adcxq %rbp,%r15 + + mulxq %rdx,%rax,%rdi + movq %rbx,%rdx + xorq %rcx,%rcx + adoxq %r8,%r8 + adcxq %rdi,%r8 + adoxq %rbp,%rcx + adcxq %rbp,%rcx + + movq %rax,(%rsp) + movq %r8,8(%rsp) + + +.byte 0xc4,0xe2,0xfb,0xf6,0x9e,0x10,0x00,0x00,0x00 + adoxq %rax,%r10 + adcxq %rbx,%r11 + + mulxq 24(%rsi),%rdi,%r8 + adoxq %rdi,%r11 +.byte 0x66 + adcxq %r8,%r12 + + mulxq 32(%rsi),%rax,%rbx + adoxq %rax,%r12 + adcxq %rbx,%r13 + + mulxq 40(%rsi),%rdi,%r8 + adoxq %rdi,%r13 + adcxq %r8,%r14 + +.byte 0xc4,0xe2,0xfb,0xf6,0x9e,0x30,0x00,0x00,0x00 + adoxq %rax,%r14 + adcxq %rbx,%r15 + +.byte 0xc4,0x62,0xc3,0xf6,0x86,0x38,0x00,0x00,0x00 + adoxq %rdi,%r15 + adcxq %rbp,%r8 + mulxq %rdx,%rax,%rdi + adoxq %rbp,%r8 +.byte 0x48,0x8b,0x96,0x10,0x00,0x00,0x00 + + xorq %rbx,%rbx + adoxq %r9,%r9 + + adcxq %rcx,%rax + adoxq %r10,%r10 + adcxq %rax,%r9 + adoxq %rbp,%rbx + adcxq %rdi,%r10 + adcxq %rbp,%rbx + + movq %r9,16(%rsp) +.byte 0x4c,0x89,0x94,0x24,0x18,0x00,0x00,0x00 + + + mulxq 24(%rsi),%rdi,%r9 + adoxq %rdi,%r12 + adcxq %r9,%r13 + + mulxq 32(%rsi),%rax,%rcx + adoxq %rax,%r13 + adcxq %rcx,%r14 + +.byte 0xc4,0x62,0xc3,0xf6,0x8e,0x28,0x00,0x00,0x00 + adoxq %rdi,%r14 + adcxq %r9,%r15 + +.byte 0xc4,0xe2,0xfb,0xf6,0x8e,0x30,0x00,0x00,0x00 + adoxq %rax,%r15 + adcxq %rcx,%r8 + + mulxq 56(%rsi),%rdi,%r9 + adoxq %rdi,%r8 + adcxq %rbp,%r9 + mulxq %rdx,%rax,%rdi + adoxq %rbp,%r9 + movq 24(%rsi),%rdx + + xorq %rcx,%rcx + adoxq %r11,%r11 + + adcxq %rbx,%rax + adoxq %r12,%r12 + adcxq %rax,%r11 + adoxq %rbp,%rcx + adcxq %rdi,%r12 + adcxq %rbp,%rcx + + movq %r11,32(%rsp) + movq %r12,40(%rsp) + + + mulxq 32(%rsi),%rax,%rbx + adoxq %rax,%r14 + adcxq %rbx,%r15 + + mulxq 40(%rsi),%rdi,%r10 + adoxq %rdi,%r15 + adcxq %r10,%r8 + + mulxq 48(%rsi),%rax,%rbx + adoxq %rax,%r8 + adcxq %rbx,%r9 + + mulxq 56(%rsi),%rdi,%r10 + adoxq %rdi,%r9 + adcxq %rbp,%r10 + mulxq %rdx,%rax,%rdi + adoxq %rbp,%r10 + movq 32(%rsi),%rdx + + xorq %rbx,%rbx + adoxq %r13,%r13 + + adcxq %rcx,%rax + adoxq %r14,%r14 + adcxq %rax,%r13 + adoxq %rbp,%rbx + adcxq %rdi,%r14 + adcxq %rbp,%rbx + + movq %r13,48(%rsp) + movq %r14,56(%rsp) + + + mulxq 40(%rsi),%rdi,%r11 + adoxq %rdi,%r8 + adcxq %r11,%r9 + + mulxq 48(%rsi),%rax,%rcx + adoxq %rax,%r9 + adcxq %rcx,%r10 + + mulxq 56(%rsi),%rdi,%r11 + adoxq %rdi,%r10 + adcxq %rbp,%r11 + mulxq %rdx,%rax,%rdi + movq 40(%rsi),%rdx + adoxq %rbp,%r11 + + xorq %rcx,%rcx + adoxq %r15,%r15 + + adcxq %rbx,%rax + adoxq %r8,%r8 + adcxq %rax,%r15 + adoxq %rbp,%rcx + adcxq %rdi,%r8 + adcxq %rbp,%rcx + + movq %r15,64(%rsp) + movq %r8,72(%rsp) + + +.byte 0xc4,0xe2,0xfb,0xf6,0x9e,0x30,0x00,0x00,0x00 + adoxq %rax,%r10 + adcxq %rbx,%r11 + +.byte 0xc4,0x62,0xc3,0xf6,0xa6,0x38,0x00,0x00,0x00 + adoxq %rdi,%r11 + adcxq %rbp,%r12 + mulxq %rdx,%rax,%rdi + adoxq %rbp,%r12 + movq 48(%rsi),%rdx + + xorq %rbx,%rbx + adoxq %r9,%r9 + + adcxq %rcx,%rax + adoxq %r10,%r10 + adcxq %rax,%r9 + adcxq %rdi,%r10 + adoxq %rbp,%rbx + adcxq %rbp,%rbx + + movq %r9,80(%rsp) + movq %r10,88(%rsp) + + +.byte 0xc4,0x62,0xfb,0xf6,0xae,0x38,0x00,0x00,0x00 + adoxq %rax,%r12 + adoxq %rbp,%r13 + + mulxq %rdx,%rax,%rdi + xorq %rcx,%rcx + movq 56(%rsi),%rdx + adoxq %r11,%r11 + + adcxq %rbx,%rax + adoxq %r12,%r12 + adcxq %rax,%r11 + adoxq %rbp,%rcx + adcxq %rdi,%r12 + adcxq %rbp,%rcx + +.byte 0x4c,0x89,0x9c,0x24,0x60,0x00,0x00,0x00 +.byte 0x4c,0x89,0xa4,0x24,0x68,0x00,0x00,0x00 + + + mulxq %rdx,%rax,%rdx + xorq %rbx,%rbx + adoxq %r13,%r13 + + adcxq %rcx,%rax + adoxq %rbp,%rbx + adcxq %r13,%rax + adcxq %rdx,%rbx + +.byte 102,72,15,126,199 +.byte 102,72,15,126,205 + + movq 128(%rsp),%rdx + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + movq %rax,112(%rsp) + movq %rbx,120(%rsp) + + call __rsaz_512_reducex + + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + adcq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + sbbq %rcx,%rcx + + call __rsaz_512_subtract + + movq %r8,%rdx + movq %r9,%rax + movl 128+8(%rsp),%r8d + movq %rdi,%rsi + + decl %r8d + jnz L$oop_sqrx + +L$sqr_tail: + + leaq 128+24+48(%rsp),%rax + + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$sqr_epilogue: + .byte 0xf3,0xc3 + + +.globl _rsaz_512_mul + +.p2align 5 +_rsaz_512_mul: + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + subq $128+24,%rsp + +L$mul_body: +.byte 102,72,15,110,199 +.byte 102,72,15,110,201 + movq %r8,128(%rsp) + movl $0x80100,%r11d + andl _OPENSSL_ia32cap_P+8(%rip),%r11d + cmpl $0x80100,%r11d + je L$mulx + movq (%rdx),%rbx + movq %rdx,%rbp + call __rsaz_512_mul + +.byte 102,72,15,126,199 +.byte 102,72,15,126,205 + + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + call __rsaz_512_reduce + jmp L$mul_tail + +.p2align 5 +L$mulx: + movq %rdx,%rbp + movq (%rdx),%rdx + call __rsaz_512_mulx + +.byte 102,72,15,126,199 +.byte 102,72,15,126,205 + + movq 128(%rsp),%rdx + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + call __rsaz_512_reducex +L$mul_tail: + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + adcq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + sbbq %rcx,%rcx + + call __rsaz_512_subtract + + leaq 128+24+48(%rsp),%rax + + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$mul_epilogue: + .byte 0xf3,0xc3 + + +.globl _rsaz_512_mul_gather4 + +.p2align 5 +_rsaz_512_mul_gather4: + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + subq $152,%rsp + +L$mul_gather4_body: + movd %r9d,%xmm8 + movdqa L$inc+16(%rip),%xmm1 + movdqa L$inc(%rip),%xmm0 + + pshufd $0,%xmm8,%xmm8 + movdqa %xmm1,%xmm7 + movdqa %xmm1,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm8,%xmm0 + movdqa %xmm7,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm8,%xmm1 + movdqa %xmm7,%xmm4 + paddd %xmm2,%xmm3 + pcmpeqd %xmm8,%xmm2 + movdqa %xmm7,%xmm5 + paddd %xmm3,%xmm4 + pcmpeqd %xmm8,%xmm3 + movdqa %xmm7,%xmm6 + paddd %xmm4,%xmm5 + pcmpeqd %xmm8,%xmm4 + paddd %xmm5,%xmm6 + pcmpeqd %xmm8,%xmm5 + paddd %xmm6,%xmm7 + pcmpeqd %xmm8,%xmm6 + pcmpeqd %xmm8,%xmm7 + + movdqa 0(%rdx),%xmm8 + movdqa 16(%rdx),%xmm9 + movdqa 32(%rdx),%xmm10 + movdqa 48(%rdx),%xmm11 + pand %xmm0,%xmm8 + movdqa 64(%rdx),%xmm12 + pand %xmm1,%xmm9 + movdqa 80(%rdx),%xmm13 + pand %xmm2,%xmm10 + movdqa 96(%rdx),%xmm14 + pand %xmm3,%xmm11 + movdqa 112(%rdx),%xmm15 + leaq 128(%rdx),%rbp + pand %xmm4,%xmm12 + pand %xmm5,%xmm13 + pand %xmm6,%xmm14 + pand %xmm7,%xmm15 + por %xmm10,%xmm8 + por %xmm11,%xmm9 + por %xmm12,%xmm8 + por %xmm13,%xmm9 + por %xmm14,%xmm8 + por %xmm15,%xmm9 + + por %xmm9,%xmm8 + pshufd $0x4e,%xmm8,%xmm9 + por %xmm9,%xmm8 + movl $0x80100,%r11d + andl _OPENSSL_ia32cap_P+8(%rip),%r11d + cmpl $0x80100,%r11d + je L$mulx_gather +.byte 102,76,15,126,195 + + movq %r8,128(%rsp) + movq %rdi,128+8(%rsp) + movq %rcx,128+16(%rsp) + + movq (%rsi),%rax + movq 8(%rsi),%rcx + mulq %rbx + movq %rax,(%rsp) + movq %rcx,%rax + movq %rdx,%r8 + + mulq %rbx + addq %rax,%r8 + movq 16(%rsi),%rax + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r9 + movq 24(%rsi),%rax + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r10 + movq 32(%rsi),%rax + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r11 + movq 40(%rsi),%rax + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r12 + movq 48(%rsi),%rax + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r13 + movq 56(%rsi),%rax + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + addq %rax,%r14 + movq (%rsi),%rax + movq %rdx,%r15 + adcq $0,%r15 + + leaq 8(%rsp),%rdi + movl $7,%ecx + jmp L$oop_mul_gather + +.p2align 5 +L$oop_mul_gather: + movdqa 0(%rbp),%xmm8 + movdqa 16(%rbp),%xmm9 + movdqa 32(%rbp),%xmm10 + movdqa 48(%rbp),%xmm11 + pand %xmm0,%xmm8 + movdqa 64(%rbp),%xmm12 + pand %xmm1,%xmm9 + movdqa 80(%rbp),%xmm13 + pand %xmm2,%xmm10 + movdqa 96(%rbp),%xmm14 + pand %xmm3,%xmm11 + movdqa 112(%rbp),%xmm15 + leaq 128(%rbp),%rbp + pand %xmm4,%xmm12 + pand %xmm5,%xmm13 + pand %xmm6,%xmm14 + pand %xmm7,%xmm15 + por %xmm10,%xmm8 + por %xmm11,%xmm9 + por %xmm12,%xmm8 + por %xmm13,%xmm9 + por %xmm14,%xmm8 + por %xmm15,%xmm9 + + por %xmm9,%xmm8 + pshufd $0x4e,%xmm8,%xmm9 + por %xmm9,%xmm8 +.byte 102,76,15,126,195 + + mulq %rbx + addq %rax,%r8 + movq 8(%rsi),%rax + movq %r8,(%rdi) + movq %rdx,%r8 + adcq $0,%r8 + + mulq %rbx + addq %rax,%r9 + movq 16(%rsi),%rax + adcq $0,%rdx + addq %r9,%r8 + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r10 + movq 24(%rsi),%rax + adcq $0,%rdx + addq %r10,%r9 + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r11 + movq 32(%rsi),%rax + adcq $0,%rdx + addq %r11,%r10 + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r12 + movq 40(%rsi),%rax + adcq $0,%rdx + addq %r12,%r11 + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r13 + movq 48(%rsi),%rax + adcq $0,%rdx + addq %r13,%r12 + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r14 + movq 56(%rsi),%rax + adcq $0,%rdx + addq %r14,%r13 + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + addq %rax,%r15 + movq (%rsi),%rax + adcq $0,%rdx + addq %r15,%r14 + movq %rdx,%r15 + adcq $0,%r15 + + leaq 8(%rdi),%rdi + + decl %ecx + jnz L$oop_mul_gather + + movq %r8,(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + movq 128+8(%rsp),%rdi + movq 128+16(%rsp),%rbp + + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + call __rsaz_512_reduce + jmp L$mul_gather_tail + +.p2align 5 +L$mulx_gather: +.byte 102,76,15,126,194 + + movq %r8,128(%rsp) + movq %rdi,128+8(%rsp) + movq %rcx,128+16(%rsp) + + mulxq (%rsi),%rbx,%r8 + movq %rbx,(%rsp) + xorl %edi,%edi + + mulxq 8(%rsi),%rax,%r9 + + mulxq 16(%rsi),%rbx,%r10 + adcxq %rax,%r8 + + mulxq 24(%rsi),%rax,%r11 + adcxq %rbx,%r9 + + mulxq 32(%rsi),%rbx,%r12 + adcxq %rax,%r10 + + mulxq 40(%rsi),%rax,%r13 + adcxq %rbx,%r11 + + mulxq 48(%rsi),%rbx,%r14 + adcxq %rax,%r12 + + mulxq 56(%rsi),%rax,%r15 + adcxq %rbx,%r13 + adcxq %rax,%r14 +.byte 0x67 + movq %r8,%rbx + adcxq %rdi,%r15 + + movq $-7,%rcx + jmp L$oop_mulx_gather + +.p2align 5 +L$oop_mulx_gather: + movdqa 0(%rbp),%xmm8 + movdqa 16(%rbp),%xmm9 + movdqa 32(%rbp),%xmm10 + movdqa 48(%rbp),%xmm11 + pand %xmm0,%xmm8 + movdqa 64(%rbp),%xmm12 + pand %xmm1,%xmm9 + movdqa 80(%rbp),%xmm13 + pand %xmm2,%xmm10 + movdqa 96(%rbp),%xmm14 + pand %xmm3,%xmm11 + movdqa 112(%rbp),%xmm15 + leaq 128(%rbp),%rbp + pand %xmm4,%xmm12 + pand %xmm5,%xmm13 + pand %xmm6,%xmm14 + pand %xmm7,%xmm15 + por %xmm10,%xmm8 + por %xmm11,%xmm9 + por %xmm12,%xmm8 + por %xmm13,%xmm9 + por %xmm14,%xmm8 + por %xmm15,%xmm9 + + por %xmm9,%xmm8 + pshufd $0x4e,%xmm8,%xmm9 + por %xmm9,%xmm8 +.byte 102,76,15,126,194 + +.byte 0xc4,0x62,0xfb,0xf6,0x86,0x00,0x00,0x00,0x00 + adcxq %rax,%rbx + adoxq %r9,%r8 + + mulxq 8(%rsi),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rsi),%rax,%r10 + adcxq %rax,%r9 + adoxq %r11,%r10 + +.byte 0xc4,0x62,0xfb,0xf6,0x9e,0x18,0x00,0x00,0x00 + adcxq %rax,%r10 + adoxq %r12,%r11 + + mulxq 32(%rsi),%rax,%r12 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rsi),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + +.byte 0xc4,0x62,0xfb,0xf6,0xb6,0x30,0x00,0x00,0x00 + adcxq %rax,%r13 +.byte 0x67 + adoxq %r15,%r14 + + mulxq 56(%rsi),%rax,%r15 + movq %rbx,64(%rsp,%rcx,8) + adcxq %rax,%r14 + adoxq %rdi,%r15 + movq %r8,%rbx + adcxq %rdi,%r15 + + incq %rcx + jnz L$oop_mulx_gather + + movq %r8,64(%rsp) + movq %r9,64+8(%rsp) + movq %r10,64+16(%rsp) + movq %r11,64+24(%rsp) + movq %r12,64+32(%rsp) + movq %r13,64+40(%rsp) + movq %r14,64+48(%rsp) + movq %r15,64+56(%rsp) + + movq 128(%rsp),%rdx + movq 128+8(%rsp),%rdi + movq 128+16(%rsp),%rbp + + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + call __rsaz_512_reducex + +L$mul_gather_tail: + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + adcq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + sbbq %rcx,%rcx + + call __rsaz_512_subtract + + leaq 128+24+48(%rsp),%rax + + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$mul_gather4_epilogue: + .byte 0xf3,0xc3 + + +.globl _rsaz_512_mul_scatter4 + +.p2align 5 +_rsaz_512_mul_scatter4: + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + movl %r9d,%r9d + subq $128+24,%rsp + +L$mul_scatter4_body: + leaq (%r8,%r9,8),%r8 +.byte 102,72,15,110,199 +.byte 102,72,15,110,202 +.byte 102,73,15,110,208 + movq %rcx,128(%rsp) + + movq %rdi,%rbp + movl $0x80100,%r11d + andl _OPENSSL_ia32cap_P+8(%rip),%r11d + cmpl $0x80100,%r11d + je L$mulx_scatter + movq (%rdi),%rbx + call __rsaz_512_mul + +.byte 102,72,15,126,199 +.byte 102,72,15,126,205 + + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + call __rsaz_512_reduce + jmp L$mul_scatter_tail + +.p2align 5 +L$mulx_scatter: + movq (%rdi),%rdx + call __rsaz_512_mulx + +.byte 102,72,15,126,199 +.byte 102,72,15,126,205 + + movq 128(%rsp),%rdx + movq (%rsp),%r8 + movq 8(%rsp),%r9 + movq 16(%rsp),%r10 + movq 24(%rsp),%r11 + movq 32(%rsp),%r12 + movq 40(%rsp),%r13 + movq 48(%rsp),%r14 + movq 56(%rsp),%r15 + + call __rsaz_512_reducex + +L$mul_scatter_tail: + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + adcq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 +.byte 102,72,15,126,214 + sbbq %rcx,%rcx + + call __rsaz_512_subtract + + movq %r8,0(%rsi) + movq %r9,128(%rsi) + movq %r10,256(%rsi) + movq %r11,384(%rsi) + movq %r12,512(%rsi) + movq %r13,640(%rsi) + movq %r14,768(%rsi) + movq %r15,896(%rsi) + + leaq 128+24+48(%rsp),%rax + + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$mul_scatter4_epilogue: + .byte 0xf3,0xc3 + + +.globl _rsaz_512_mul_by_one + +.p2align 5 +_rsaz_512_mul_by_one: + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + subq $128+24,%rsp + +L$mul_by_one_body: + movl _OPENSSL_ia32cap_P+8(%rip),%eax + movq %rdx,%rbp + movq %rcx,128(%rsp) + + movq (%rsi),%r8 + pxor %xmm0,%xmm0 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + movq 32(%rsi),%r12 + movq 40(%rsi),%r13 + movq 48(%rsi),%r14 + movq 56(%rsi),%r15 + + movdqa %xmm0,(%rsp) + movdqa %xmm0,16(%rsp) + movdqa %xmm0,32(%rsp) + movdqa %xmm0,48(%rsp) + movdqa %xmm0,64(%rsp) + movdqa %xmm0,80(%rsp) + movdqa %xmm0,96(%rsp) + andl $0x80100,%eax + cmpl $0x80100,%eax + je L$by_one_callx + call __rsaz_512_reduce + jmp L$by_one_tail +.p2align 5 +L$by_one_callx: + movq 128(%rsp),%rdx + call __rsaz_512_reducex +L$by_one_tail: + movq %r8,(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + leaq 128+24+48(%rsp),%rax + + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$mul_by_one_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +__rsaz_512_reduce: + + movq %r8,%rbx + imulq 128+8(%rsp),%rbx + movq 0(%rbp),%rax + movl $8,%ecx + jmp L$reduction_loop + +.p2align 5 +L$reduction_loop: + mulq %rbx + movq 8(%rbp),%rax + negq %r8 + movq %rdx,%r8 + adcq $0,%r8 + + mulq %rbx + addq %rax,%r9 + movq 16(%rbp),%rax + adcq $0,%rdx + addq %r9,%r8 + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r10 + movq 24(%rbp),%rax + adcq $0,%rdx + addq %r10,%r9 + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r11 + movq 32(%rbp),%rax + adcq $0,%rdx + addq %r11,%r10 + movq 128+8(%rsp),%rsi + + + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbx + addq %rax,%r12 + movq 40(%rbp),%rax + adcq $0,%rdx + imulq %r8,%rsi + addq %r12,%r11 + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r13 + movq 48(%rbp),%rax + adcq $0,%rdx + addq %r13,%r12 + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r14 + movq 56(%rbp),%rax + adcq $0,%rdx + addq %r14,%r13 + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + movq %rsi,%rbx + addq %rax,%r15 + movq 0(%rbp),%rax + adcq $0,%rdx + addq %r15,%r14 + movq %rdx,%r15 + adcq $0,%r15 + + decl %ecx + jne L$reduction_loop + + .byte 0xf3,0xc3 + + + +.p2align 5 +__rsaz_512_reducex: + + + imulq %r8,%rdx + xorq %rsi,%rsi + movl $8,%ecx + jmp L$reduction_loopx + +.p2align 5 +L$reduction_loopx: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rbx,%rax + adoxq %r9,%r8 + + mulxq 8(%rbp),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rbx,%r10 + adcxq %rbx,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rbx,%r11 + adcxq %rbx,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x00 + movq %rdx,%rax + movq %r8,%rdx + adcxq %rbx,%r11 + adoxq %r13,%r12 + + mulxq 128+8(%rsp),%rbx,%rdx + movq %rax,%rdx + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + +.byte 0xc4,0x62,0xfb,0xf6,0xb5,0x30,0x00,0x00,0x00 + adcxq %rax,%r13 + adoxq %r15,%r14 + + mulxq 56(%rbp),%rax,%r15 + movq %rbx,%rdx + adcxq %rax,%r14 + adoxq %rsi,%r15 + adcxq %rsi,%r15 + + decl %ecx + jne L$reduction_loopx + + .byte 0xf3,0xc3 + + + +.p2align 5 +__rsaz_512_subtract: + + movq %r8,(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + movq 0(%rbp),%r8 + movq 8(%rbp),%r9 + negq %r8 + notq %r9 + andq %rcx,%r8 + movq 16(%rbp),%r10 + andq %rcx,%r9 + notq %r10 + movq 24(%rbp),%r11 + andq %rcx,%r10 + notq %r11 + movq 32(%rbp),%r12 + andq %rcx,%r11 + notq %r12 + movq 40(%rbp),%r13 + andq %rcx,%r12 + notq %r13 + movq 48(%rbp),%r14 + andq %rcx,%r13 + notq %r14 + movq 56(%rbp),%r15 + andq %rcx,%r14 + notq %r15 + andq %rcx,%r15 + + addq (%rdi),%r8 + adcq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + + movq %r8,(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + .byte 0xf3,0xc3 + + + +.p2align 5 +__rsaz_512_mul: + + leaq 8(%rsp),%rdi + + movq (%rsi),%rax + mulq %rbx + movq %rax,(%rdi) + movq 8(%rsi),%rax + movq %rdx,%r8 + + mulq %rbx + addq %rax,%r8 + movq 16(%rsi),%rax + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r9 + movq 24(%rsi),%rax + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r10 + movq 32(%rsi),%rax + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r11 + movq 40(%rsi),%rax + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r12 + movq 48(%rsi),%rax + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r13 + movq 56(%rsi),%rax + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + addq %rax,%r14 + movq (%rsi),%rax + movq %rdx,%r15 + adcq $0,%r15 + + leaq 8(%rbp),%rbp + leaq 8(%rdi),%rdi + + movl $7,%ecx + jmp L$oop_mul + +.p2align 5 +L$oop_mul: + movq (%rbp),%rbx + mulq %rbx + addq %rax,%r8 + movq 8(%rsi),%rax + movq %r8,(%rdi) + movq %rdx,%r8 + adcq $0,%r8 + + mulq %rbx + addq %rax,%r9 + movq 16(%rsi),%rax + adcq $0,%rdx + addq %r9,%r8 + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r10 + movq 24(%rsi),%rax + adcq $0,%rdx + addq %r10,%r9 + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r11 + movq 32(%rsi),%rax + adcq $0,%rdx + addq %r11,%r10 + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r12 + movq 40(%rsi),%rax + adcq $0,%rdx + addq %r12,%r11 + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r13 + movq 48(%rsi),%rax + adcq $0,%rdx + addq %r13,%r12 + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r14 + movq 56(%rsi),%rax + adcq $0,%rdx + addq %r14,%r13 + movq %rdx,%r14 + leaq 8(%rbp),%rbp + adcq $0,%r14 + + mulq %rbx + addq %rax,%r15 + movq (%rsi),%rax + adcq $0,%rdx + addq %r15,%r14 + movq %rdx,%r15 + adcq $0,%r15 + + leaq 8(%rdi),%rdi + + decl %ecx + jnz L$oop_mul + + movq %r8,(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + .byte 0xf3,0xc3 + + + +.p2align 5 +__rsaz_512_mulx: + + mulxq (%rsi),%rbx,%r8 + movq $-6,%rcx + + mulxq 8(%rsi),%rax,%r9 + movq %rbx,8(%rsp) + + mulxq 16(%rsi),%rbx,%r10 + adcq %rax,%r8 + + mulxq 24(%rsi),%rax,%r11 + adcq %rbx,%r9 + + mulxq 32(%rsi),%rbx,%r12 + adcq %rax,%r10 + + mulxq 40(%rsi),%rax,%r13 + adcq %rbx,%r11 + + mulxq 48(%rsi),%rbx,%r14 + adcq %rax,%r12 + + mulxq 56(%rsi),%rax,%r15 + movq 8(%rbp),%rdx + adcq %rbx,%r13 + adcq %rax,%r14 + adcq $0,%r15 + + xorq %rdi,%rdi + jmp L$oop_mulx + +.p2align 5 +L$oop_mulx: + movq %r8,%rbx + mulxq (%rsi),%rax,%r8 + adcxq %rax,%rbx + adoxq %r9,%r8 + + mulxq 8(%rsi),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rsi),%rax,%r10 + adcxq %rax,%r9 + adoxq %r11,%r10 + + mulxq 24(%rsi),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + +.byte 0x3e,0xc4,0x62,0xfb,0xf6,0xa6,0x20,0x00,0x00,0x00 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rsi),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rsi),%rax,%r14 + adcxq %rax,%r13 + adoxq %r15,%r14 + + mulxq 56(%rsi),%rax,%r15 + movq 64(%rbp,%rcx,8),%rdx + movq %rbx,8+64-8(%rsp,%rcx,8) + adcxq %rax,%r14 + adoxq %rdi,%r15 + adcxq %rdi,%r15 + + incq %rcx + jnz L$oop_mulx + + movq %r8,%rbx + mulxq (%rsi),%rax,%r8 + adcxq %rax,%rbx + adoxq %r9,%r8 + +.byte 0xc4,0x62,0xfb,0xf6,0x8e,0x08,0x00,0x00,0x00 + adcxq %rax,%r8 + adoxq %r10,%r9 + +.byte 0xc4,0x62,0xfb,0xf6,0x96,0x10,0x00,0x00,0x00 + adcxq %rax,%r9 + adoxq %r11,%r10 + + mulxq 24(%rsi),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + + mulxq 32(%rsi),%rax,%r12 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rsi),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + +.byte 0xc4,0x62,0xfb,0xf6,0xb6,0x30,0x00,0x00,0x00 + adcxq %rax,%r13 + adoxq %r15,%r14 + +.byte 0xc4,0x62,0xfb,0xf6,0xbe,0x38,0x00,0x00,0x00 + adcxq %rax,%r14 + adoxq %rdi,%r15 + adcxq %rdi,%r15 + + movq %rbx,8+64-8(%rsp) + movq %r8,8+64(%rsp) + movq %r9,8+64+8(%rsp) + movq %r10,8+64+16(%rsp) + movq %r11,8+64+24(%rsp) + movq %r12,8+64+32(%rsp) + movq %r13,8+64+40(%rsp) + movq %r14,8+64+48(%rsp) + movq %r15,8+64+56(%rsp) + + .byte 0xf3,0xc3 + + +.globl _rsaz_512_scatter4 + +.p2align 4 +_rsaz_512_scatter4: + + leaq (%rdi,%rdx,8),%rdi + movl $8,%r9d + jmp L$oop_scatter +.p2align 4 +L$oop_scatter: + movq (%rsi),%rax + leaq 8(%rsi),%rsi + movq %rax,(%rdi) + leaq 128(%rdi),%rdi + decl %r9d + jnz L$oop_scatter + .byte 0xf3,0xc3 + + + +.globl _rsaz_512_gather4 + +.p2align 4 +_rsaz_512_gather4: + + movd %edx,%xmm8 + movdqa L$inc+16(%rip),%xmm1 + movdqa L$inc(%rip),%xmm0 + + pshufd $0,%xmm8,%xmm8 + movdqa %xmm1,%xmm7 + movdqa %xmm1,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm8,%xmm0 + movdqa %xmm7,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm8,%xmm1 + movdqa %xmm7,%xmm4 + paddd %xmm2,%xmm3 + pcmpeqd %xmm8,%xmm2 + movdqa %xmm7,%xmm5 + paddd %xmm3,%xmm4 + pcmpeqd %xmm8,%xmm3 + movdqa %xmm7,%xmm6 + paddd %xmm4,%xmm5 + pcmpeqd %xmm8,%xmm4 + paddd %xmm5,%xmm6 + pcmpeqd %xmm8,%xmm5 + paddd %xmm6,%xmm7 + pcmpeqd %xmm8,%xmm6 + pcmpeqd %xmm8,%xmm7 + movl $8,%r9d + jmp L$oop_gather +.p2align 4 +L$oop_gather: + movdqa 0(%rsi),%xmm8 + movdqa 16(%rsi),%xmm9 + movdqa 32(%rsi),%xmm10 + movdqa 48(%rsi),%xmm11 + pand %xmm0,%xmm8 + movdqa 64(%rsi),%xmm12 + pand %xmm1,%xmm9 + movdqa 80(%rsi),%xmm13 + pand %xmm2,%xmm10 + movdqa 96(%rsi),%xmm14 + pand %xmm3,%xmm11 + movdqa 112(%rsi),%xmm15 + leaq 128(%rsi),%rsi + pand %xmm4,%xmm12 + pand %xmm5,%xmm13 + pand %xmm6,%xmm14 + pand %xmm7,%xmm15 + por %xmm10,%xmm8 + por %xmm11,%xmm9 + por %xmm12,%xmm8 + por %xmm13,%xmm9 + por %xmm14,%xmm8 + por %xmm15,%xmm9 + + por %xmm9,%xmm8 + pshufd $0x4e,%xmm8,%xmm9 + por %xmm9,%xmm8 + movq %xmm8,(%rdi) + leaq 8(%rdi),%rdi + decl %r9d + jnz L$oop_gather + .byte 0xf3,0xc3 +L$SEH_end_rsaz_512_gather4: + + + +.p2align 6 +L$inc: +.long 0,0, 1,1 +.long 2,2, 2,2 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/bn/x86_64-gf2m.s b/vere/ext/openssl/gen/macos-x86_64/crypto/bn/x86_64-gf2m.s new file mode 100644 index 0000000..4137d59 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/bn/x86_64-gf2m.s @@ -0,0 +1,311 @@ +.text + + +.p2align 4 +_mul_1x1: + + subq $128+8,%rsp + + movq $-1,%r9 + leaq (%rax,%rax,1),%rsi + shrq $3,%r9 + leaq (,%rax,4),%rdi + andq %rax,%r9 + leaq (,%rax,8),%r12 + sarq $63,%rax + leaq (%r9,%r9,1),%r10 + sarq $63,%rsi + leaq (,%r9,4),%r11 + andq %rbp,%rax + sarq $63,%rdi + movq %rax,%rdx + shlq $63,%rax + andq %rbp,%rsi + shrq $1,%rdx + movq %rsi,%rcx + shlq $62,%rsi + andq %rbp,%rdi + shrq $2,%rcx + xorq %rsi,%rax + movq %rdi,%rbx + shlq $61,%rdi + xorq %rcx,%rdx + shrq $3,%rbx + xorq %rdi,%rax + xorq %rbx,%rdx + + movq %r9,%r13 + movq $0,0(%rsp) + xorq %r10,%r13 + movq %r9,8(%rsp) + movq %r11,%r14 + movq %r10,16(%rsp) + xorq %r12,%r14 + movq %r13,24(%rsp) + + xorq %r11,%r9 + movq %r11,32(%rsp) + xorq %r11,%r10 + movq %r9,40(%rsp) + xorq %r11,%r13 + movq %r10,48(%rsp) + xorq %r14,%r9 + movq %r13,56(%rsp) + xorq %r14,%r10 + + movq %r12,64(%rsp) + xorq %r14,%r13 + movq %r9,72(%rsp) + xorq %r11,%r9 + movq %r10,80(%rsp) + xorq %r11,%r10 + movq %r13,88(%rsp) + + xorq %r11,%r13 + movq %r14,96(%rsp) + movq %r8,%rsi + movq %r9,104(%rsp) + andq %rbp,%rsi + movq %r10,112(%rsp) + shrq $4,%rbp + movq %r13,120(%rsp) + movq %r8,%rdi + andq %rbp,%rdi + shrq $4,%rbp + + movq (%rsp,%rsi,8),%xmm0 + movq %r8,%rsi + andq %rbp,%rsi + shrq $4,%rbp + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $4,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $60,%rbx + xorq %rcx,%rax + pslldq $1,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $12,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $52,%rbx + xorq %rcx,%rax + pslldq $2,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $20,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $44,%rbx + xorq %rcx,%rax + pslldq $3,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $28,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $36,%rbx + xorq %rcx,%rax + pslldq $4,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $36,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $28,%rbx + xorq %rcx,%rax + pslldq $5,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $44,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $20,%rbx + xorq %rcx,%rax + pslldq $6,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %r8,%rdi + movq %rcx,%rbx + shlq $52,%rcx + andq %rbp,%rdi + movq (%rsp,%rsi,8),%xmm1 + shrq $12,%rbx + xorq %rcx,%rax + pslldq $7,%xmm1 + movq %r8,%rsi + shrq $4,%rbp + xorq %rbx,%rdx + andq %rbp,%rsi + shrq $4,%rbp + pxor %xmm1,%xmm0 + movq (%rsp,%rdi,8),%rcx + movq %rcx,%rbx + shlq $60,%rcx +.byte 102,72,15,126,198 + shrq $4,%rbx + xorq %rcx,%rax + psrldq $8,%xmm0 + xorq %rbx,%rdx +.byte 102,72,15,126,199 + xorq %rsi,%rax + xorq %rdi,%rdx + + addq $128+8,%rsp + + .byte 0xf3,0xc3 +L$end_mul_1x1: + + + +.globl _bn_GF2m_mul_2x2 + +.p2align 4 +_bn_GF2m_mul_2x2: + + movq %rsp,%rax + movq _OPENSSL_ia32cap_P(%rip),%r10 + btq $33,%r10 + jnc L$vanilla_mul_2x2 + +.byte 102,72,15,110,198 +.byte 102,72,15,110,201 +.byte 102,72,15,110,210 +.byte 102,73,15,110,216 + movdqa %xmm0,%xmm4 + movdqa %xmm1,%xmm5 +.byte 102,15,58,68,193,0 + pxor %xmm2,%xmm4 + pxor %xmm3,%xmm5 +.byte 102,15,58,68,211,0 +.byte 102,15,58,68,229,0 + xorps %xmm0,%xmm4 + xorps %xmm2,%xmm4 + movdqa %xmm4,%xmm5 + pslldq $8,%xmm4 + psrldq $8,%xmm5 + pxor %xmm4,%xmm2 + pxor %xmm5,%xmm0 + movdqu %xmm2,0(%rdi) + movdqu %xmm0,16(%rdi) + .byte 0xf3,0xc3 + +.p2align 4 +L$vanilla_mul_2x2: + leaq -136(%rsp),%rsp + + movq %r14,80(%rsp) + + movq %r13,88(%rsp) + + movq %r12,96(%rsp) + + movq %rbp,104(%rsp) + + movq %rbx,112(%rsp) + +L$body_mul_2x2: + movq %rdi,32(%rsp) + movq %rsi,40(%rsp) + movq %rdx,48(%rsp) + movq %rcx,56(%rsp) + movq %r8,64(%rsp) + + movq $0xf,%r8 + movq %rsi,%rax + movq %rcx,%rbp + call _mul_1x1 + movq %rax,16(%rsp) + movq %rdx,24(%rsp) + + movq 48(%rsp),%rax + movq 64(%rsp),%rbp + call _mul_1x1 + movq %rax,0(%rsp) + movq %rdx,8(%rsp) + + movq 40(%rsp),%rax + movq 56(%rsp),%rbp + xorq 48(%rsp),%rax + xorq 64(%rsp),%rbp + call _mul_1x1 + movq 0(%rsp),%rbx + movq 8(%rsp),%rcx + movq 16(%rsp),%rdi + movq 24(%rsp),%rsi + movq 32(%rsp),%rbp + + xorq %rdx,%rax + xorq %rcx,%rdx + xorq %rbx,%rax + movq %rbx,0(%rbp) + xorq %rdi,%rdx + movq %rsi,24(%rbp) + xorq %rsi,%rax + xorq %rsi,%rdx + xorq %rdx,%rax + movq %rdx,16(%rbp) + movq %rax,8(%rbp) + + movq 80(%rsp),%r14 + + movq 88(%rsp),%r13 + + movq 96(%rsp),%r12 + + movq 104(%rsp),%rbp + + movq 112(%rsp),%rbx + + leaq 136(%rsp),%rsp + +L$epilogue_mul_2x2: + .byte 0xf3,0xc3 +L$end_mul_2x2: + + +.byte 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.p2align 4 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/bn/x86_64-mont.s b/vere/ext/openssl/gen/macos-x86_64/crypto/bn/x86_64-mont.s new file mode 100644 index 0000000..5abe369 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/bn/x86_64-mont.s @@ -0,0 +1,1239 @@ +.text + + + +.globl _bn_mul_mont + +.p2align 4 +_bn_mul_mont: + + movl %r9d,%r9d + movq %rsp,%rax + + testl $3,%r9d + jnz L$mul_enter + cmpl $8,%r9d + jb L$mul_enter + movl _OPENSSL_ia32cap_P+8(%rip),%r11d + cmpq %rsi,%rdx + jne L$mul4x_enter + testl $7,%r9d + jz L$sqr8x_enter + jmp L$mul4x_enter + +.p2align 4 +L$mul_enter: + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + negq %r9 + movq %rsp,%r11 + leaq -16(%rsp,%r9,8),%r10 + negq %r9 + andq $-1024,%r10 + + + + + + + + + + subq %r10,%r11 + andq $-4096,%r11 + leaq (%r10,%r11,1),%rsp + movq (%rsp),%r11 + cmpq %r10,%rsp + ja L$mul_page_walk + jmp L$mul_page_walk_done + +.p2align 4 +L$mul_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r11 + cmpq %r10,%rsp + ja L$mul_page_walk +L$mul_page_walk_done: + + movq %rax,8(%rsp,%r9,8) + +L$mul_body: + movq %rdx,%r12 + movq (%r8),%r8 + movq (%r12),%rbx + movq (%rsi),%rax + + xorq %r14,%r14 + xorq %r15,%r15 + + movq %r8,%rbp + mulq %rbx + movq %rax,%r10 + movq (%rcx),%rax + + imulq %r10,%rbp + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi),%rax + adcq $0,%rdx + movq %rdx,%r13 + + leaq 1(%r15),%r15 + jmp L$1st_enter + +.p2align 4 +L$1st: + addq %rax,%r13 + movq (%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r11,%r13 + movq %r10,%r11 + adcq $0,%rdx + movq %r13,-16(%rsp,%r15,8) + movq %rdx,%r13 + +L$1st_enter: + mulq %rbx + addq %rax,%r11 + movq (%rcx,%r15,8),%rax + adcq $0,%rdx + leaq 1(%r15),%r15 + movq %rdx,%r10 + + mulq %rbp + cmpq %r9,%r15 + jne L$1st + + addq %rax,%r13 + movq (%rsi),%rax + adcq $0,%rdx + addq %r11,%r13 + adcq $0,%rdx + movq %r13,-16(%rsp,%r15,8) + movq %rdx,%r13 + movq %r10,%r11 + + xorq %rdx,%rdx + addq %r11,%r13 + adcq $0,%rdx + movq %r13,-8(%rsp,%r9,8) + movq %rdx,(%rsp,%r9,8) + + leaq 1(%r14),%r14 + jmp L$outer +.p2align 4 +L$outer: + movq (%r12,%r14,8),%rbx + xorq %r15,%r15 + movq %r8,%rbp + movq (%rsp),%r10 + mulq %rbx + addq %rax,%r10 + movq (%rcx),%rax + adcq $0,%rdx + + imulq %r10,%rbp + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi),%rax + adcq $0,%rdx + movq 8(%rsp),%r10 + movq %rdx,%r13 + + leaq 1(%r15),%r15 + jmp L$inner_enter + +.p2align 4 +L$inner: + addq %rax,%r13 + movq (%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + movq (%rsp,%r15,8),%r10 + adcq $0,%rdx + movq %r13,-16(%rsp,%r15,8) + movq %rdx,%r13 + +L$inner_enter: + mulq %rbx + addq %rax,%r11 + movq (%rcx,%r15,8),%rax + adcq $0,%rdx + addq %r11,%r10 + movq %rdx,%r11 + adcq $0,%r11 + leaq 1(%r15),%r15 + + mulq %rbp + cmpq %r9,%r15 + jne L$inner + + addq %rax,%r13 + movq (%rsi),%rax + adcq $0,%rdx + addq %r10,%r13 + movq (%rsp,%r15,8),%r10 + adcq $0,%rdx + movq %r13,-16(%rsp,%r15,8) + movq %rdx,%r13 + + xorq %rdx,%rdx + addq %r11,%r13 + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-8(%rsp,%r9,8) + movq %rdx,(%rsp,%r9,8) + + leaq 1(%r14),%r14 + cmpq %r9,%r14 + jb L$outer + + xorq %r14,%r14 + movq (%rsp),%rax + movq %r9,%r15 + +.p2align 4 +L$sub: sbbq (%rcx,%r14,8),%rax + movq %rax,(%rdi,%r14,8) + movq 8(%rsp,%r14,8),%rax + leaq 1(%r14),%r14 + decq %r15 + jnz L$sub + + sbbq $0,%rax + movq $-1,%rbx + xorq %rax,%rbx + xorq %r14,%r14 + movq %r9,%r15 + +L$copy: + movq (%rdi,%r14,8),%rcx + movq (%rsp,%r14,8),%rdx + andq %rbx,%rcx + andq %rax,%rdx + movq %r9,(%rsp,%r14,8) + orq %rcx,%rdx + movq %rdx,(%rdi,%r14,8) + leaq 1(%r14),%r14 + subq $1,%r15 + jnz L$copy + + movq 8(%rsp,%r9,8),%rsi + + movq $1,%rax + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$mul_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 4 +bn_mul4x_mont: + + movl %r9d,%r9d + movq %rsp,%rax + +L$mul4x_enter: + andl $0x80100,%r11d + cmpl $0x80100,%r11d + je L$mulx4x_enter + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + negq %r9 + movq %rsp,%r11 + leaq -32(%rsp,%r9,8),%r10 + negq %r9 + andq $-1024,%r10 + + subq %r10,%r11 + andq $-4096,%r11 + leaq (%r10,%r11,1),%rsp + movq (%rsp),%r11 + cmpq %r10,%rsp + ja L$mul4x_page_walk + jmp L$mul4x_page_walk_done + +L$mul4x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r11 + cmpq %r10,%rsp + ja L$mul4x_page_walk +L$mul4x_page_walk_done: + + movq %rax,8(%rsp,%r9,8) + +L$mul4x_body: + movq %rdi,16(%rsp,%r9,8) + movq %rdx,%r12 + movq (%r8),%r8 + movq (%r12),%rbx + movq (%rsi),%rax + + xorq %r14,%r14 + xorq %r15,%r15 + + movq %r8,%rbp + mulq %rbx + movq %rax,%r10 + movq (%rcx),%rax + + imulq %r10,%rbp + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi),%rax + adcq $0,%rdx + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq 16(%rsi),%rax + adcq $0,%rdx + addq %r11,%rdi + leaq 4(%r15),%r15 + adcq $0,%rdx + movq %rdi,(%rsp) + movq %rdx,%r13 + jmp L$1st4x +.p2align 4 +L$1st4x: + mulq %rbx + addq %rax,%r10 + movq -16(%rcx,%r15,8),%rax + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-24(%rsp,%r15,8) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx,%r15,8),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-16(%rsp,%r15,8) + movq %rdx,%r13 + + mulq %rbx + addq %rax,%r10 + movq (%rcx,%r15,8),%rax + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq 8(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-8(%rsp,%r15,8) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx,%r15,8),%rax + adcq $0,%rdx + leaq 4(%r15),%r15 + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq -16(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-32(%rsp,%r15,8) + movq %rdx,%r13 + cmpq %r9,%r15 + jb L$1st4x + + mulq %rbx + addq %rax,%r10 + movq -16(%rcx,%r15,8),%rax + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-24(%rsp,%r15,8) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx,%r15,8),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-16(%rsp,%r15,8) + movq %rdx,%r13 + + xorq %rdi,%rdi + addq %r10,%r13 + adcq $0,%rdi + movq %r13,-8(%rsp,%r15,8) + movq %rdi,(%rsp,%r15,8) + + leaq 1(%r14),%r14 +.p2align 2 +L$outer4x: + movq (%r12,%r14,8),%rbx + xorq %r15,%r15 + movq (%rsp),%r10 + movq %r8,%rbp + mulq %rbx + addq %rax,%r10 + movq (%rcx),%rax + adcq $0,%rdx + + imulq %r10,%rbp + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi),%rax + adcq $0,%rdx + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx),%rax + adcq $0,%rdx + addq 8(%rsp),%r11 + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq 16(%rsi),%rax + adcq $0,%rdx + addq %r11,%rdi + leaq 4(%r15),%r15 + adcq $0,%rdx + movq %rdi,(%rsp) + movq %rdx,%r13 + jmp L$inner4x +.p2align 4 +L$inner4x: + mulq %rbx + addq %rax,%r10 + movq -16(%rcx,%r15,8),%rax + adcq $0,%rdx + addq -16(%rsp,%r15,8),%r10 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-24(%rsp,%r15,8) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx,%r15,8),%rax + adcq $0,%rdx + addq -8(%rsp,%r15,8),%r11 + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-16(%rsp,%r15,8) + movq %rdx,%r13 + + mulq %rbx + addq %rax,%r10 + movq (%rcx,%r15,8),%rax + adcq $0,%rdx + addq (%rsp,%r15,8),%r10 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq 8(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-8(%rsp,%r15,8) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx,%r15,8),%rax + adcq $0,%rdx + addq 8(%rsp,%r15,8),%r11 + adcq $0,%rdx + leaq 4(%r15),%r15 + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq -16(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-32(%rsp,%r15,8) + movq %rdx,%r13 + cmpq %r9,%r15 + jb L$inner4x + + mulq %rbx + addq %rax,%r10 + movq -16(%rcx,%r15,8),%rax + adcq $0,%rdx + addq -16(%rsp,%r15,8),%r10 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-24(%rsp,%r15,8) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx,%r15,8),%rax + adcq $0,%rdx + addq -8(%rsp,%r15,8),%r11 + adcq $0,%rdx + leaq 1(%r14),%r14 + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-16(%rsp,%r15,8) + movq %rdx,%r13 + + xorq %rdi,%rdi + addq %r10,%r13 + adcq $0,%rdi + addq (%rsp,%r9,8),%r13 + adcq $0,%rdi + movq %r13,-8(%rsp,%r15,8) + movq %rdi,(%rsp,%r15,8) + + cmpq %r9,%r14 + jb L$outer4x + movq 16(%rsp,%r9,8),%rdi + leaq -4(%r9),%r15 + movq 0(%rsp),%rax + movq 8(%rsp),%rdx + shrq $2,%r15 + leaq (%rsp),%rsi + xorq %r14,%r14 + + subq 0(%rcx),%rax + movq 16(%rsi),%rbx + movq 24(%rsi),%rbp + sbbq 8(%rcx),%rdx + +L$sub4x: + movq %rax,0(%rdi,%r14,8) + movq %rdx,8(%rdi,%r14,8) + sbbq 16(%rcx,%r14,8),%rbx + movq 32(%rsi,%r14,8),%rax + movq 40(%rsi,%r14,8),%rdx + sbbq 24(%rcx,%r14,8),%rbp + movq %rbx,16(%rdi,%r14,8) + movq %rbp,24(%rdi,%r14,8) + sbbq 32(%rcx,%r14,8),%rax + movq 48(%rsi,%r14,8),%rbx + movq 56(%rsi,%r14,8),%rbp + sbbq 40(%rcx,%r14,8),%rdx + leaq 4(%r14),%r14 + decq %r15 + jnz L$sub4x + + movq %rax,0(%rdi,%r14,8) + movq 32(%rsi,%r14,8),%rax + sbbq 16(%rcx,%r14,8),%rbx + movq %rdx,8(%rdi,%r14,8) + sbbq 24(%rcx,%r14,8),%rbp + movq %rbx,16(%rdi,%r14,8) + + sbbq $0,%rax + movq %rbp,24(%rdi,%r14,8) + pxor %xmm0,%xmm0 +.byte 102,72,15,110,224 + pcmpeqd %xmm5,%xmm5 + pshufd $0,%xmm4,%xmm4 + movq %r9,%r15 + pxor %xmm4,%xmm5 + shrq $2,%r15 + xorl %eax,%eax + + jmp L$copy4x +.p2align 4 +L$copy4x: + movdqa (%rsp,%rax,1),%xmm1 + movdqu (%rdi,%rax,1),%xmm2 + pand %xmm4,%xmm1 + pand %xmm5,%xmm2 + movdqa 16(%rsp,%rax,1),%xmm3 + movdqa %xmm0,(%rsp,%rax,1) + por %xmm2,%xmm1 + movdqu 16(%rdi,%rax,1),%xmm2 + movdqu %xmm1,(%rdi,%rax,1) + pand %xmm4,%xmm3 + pand %xmm5,%xmm2 + movdqa %xmm0,16(%rsp,%rax,1) + por %xmm2,%xmm3 + movdqu %xmm3,16(%rdi,%rax,1) + leaq 32(%rax),%rax + decq %r15 + jnz L$copy4x + movq 8(%rsp,%r9,8),%rsi + + movq $1,%rax + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$mul4x_epilogue: + .byte 0xf3,0xc3 + + + + + + +.p2align 5 +bn_sqr8x_mont: + + movq %rsp,%rax + +L$sqr8x_enter: + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$sqr8x_prologue: + + movl %r9d,%r10d + shll $3,%r9d + shlq $3+2,%r10 + negq %r9 + + + + + + + leaq -64(%rsp,%r9,2),%r11 + movq %rsp,%rbp + movq (%r8),%r8 + subq %rsi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb L$sqr8x_sp_alt + subq %r11,%rbp + leaq -64(%rbp,%r9,2),%rbp + jmp L$sqr8x_sp_done + +.p2align 5 +L$sqr8x_sp_alt: + leaq 4096-64(,%r9,2),%r10 + leaq -64(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +L$sqr8x_sp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$sqr8x_page_walk + jmp L$sqr8x_page_walk_done + +.p2align 4 +L$sqr8x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$sqr8x_page_walk +L$sqr8x_page_walk_done: + + movq %r9,%r10 + negq %r9 + + movq %r8,32(%rsp) + movq %rax,40(%rsp) + +L$sqr8x_body: + +.byte 102,72,15,110,209 + pxor %xmm0,%xmm0 +.byte 102,72,15,110,207 +.byte 102,73,15,110,218 + movl _OPENSSL_ia32cap_P+8(%rip),%eax + andl $0x80100,%eax + cmpl $0x80100,%eax + jne L$sqr8x_nox + + call _bn_sqrx8x_internal + + + + + leaq (%r8,%rcx,1),%rbx + movq %rcx,%r9 + movq %rcx,%rdx +.byte 102,72,15,126,207 + sarq $3+2,%rcx + jmp L$sqr8x_sub + +.p2align 5 +L$sqr8x_nox: + call _bn_sqr8x_internal + + + + + leaq (%rdi,%r9,1),%rbx + movq %r9,%rcx + movq %r9,%rdx +.byte 102,72,15,126,207 + sarq $3+2,%rcx + jmp L$sqr8x_sub + +.p2align 5 +L$sqr8x_sub: + movq 0(%rbx),%r12 + movq 8(%rbx),%r13 + movq 16(%rbx),%r14 + movq 24(%rbx),%r15 + leaq 32(%rbx),%rbx + sbbq 0(%rbp),%r12 + sbbq 8(%rbp),%r13 + sbbq 16(%rbp),%r14 + sbbq 24(%rbp),%r15 + leaq 32(%rbp),%rbp + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r14,16(%rdi) + movq %r15,24(%rdi) + leaq 32(%rdi),%rdi + incq %rcx + jnz L$sqr8x_sub + + sbbq $0,%rax + leaq (%rbx,%r9,1),%rbx + leaq (%rdi,%r9,1),%rdi + +.byte 102,72,15,110,200 + pxor %xmm0,%xmm0 + pshufd $0,%xmm1,%xmm1 + movq 40(%rsp),%rsi + + jmp L$sqr8x_cond_copy + +.p2align 5 +L$sqr8x_cond_copy: + movdqa 0(%rbx),%xmm2 + movdqa 16(%rbx),%xmm3 + leaq 32(%rbx),%rbx + movdqu 0(%rdi),%xmm4 + movdqu 16(%rdi),%xmm5 + leaq 32(%rdi),%rdi + movdqa %xmm0,-32(%rbx) + movdqa %xmm0,-16(%rbx) + movdqa %xmm0,-32(%rbx,%rdx,1) + movdqa %xmm0,-16(%rbx,%rdx,1) + pcmpeqd %xmm1,%xmm0 + pand %xmm1,%xmm2 + pand %xmm1,%xmm3 + pand %xmm0,%xmm4 + pand %xmm0,%xmm5 + pxor %xmm0,%xmm0 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqu %xmm4,-32(%rdi) + movdqu %xmm5,-16(%rdi) + addq $32,%r9 + jnz L$sqr8x_cond_copy + + movq $1,%rax + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$sqr8x_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +bn_mulx4x_mont: + + movq %rsp,%rax + +L$mulx4x_enter: + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$mulx4x_prologue: + + shll $3,%r9d + xorq %r10,%r10 + subq %r9,%r10 + movq (%r8),%r8 + leaq -72(%rsp,%r10,1),%rbp + andq $-128,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$mulx4x_page_walk + jmp L$mulx4x_page_walk_done + +.p2align 4 +L$mulx4x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$mulx4x_page_walk +L$mulx4x_page_walk_done: + + leaq (%rdx,%r9,1),%r10 + + + + + + + + + + + + + movq %r9,0(%rsp) + shrq $5,%r9 + movq %r10,16(%rsp) + subq $1,%r9 + movq %r8,24(%rsp) + movq %rdi,32(%rsp) + movq %rax,40(%rsp) + + movq %r9,48(%rsp) + jmp L$mulx4x_body + +.p2align 5 +L$mulx4x_body: + leaq 8(%rdx),%rdi + movq (%rdx),%rdx + leaq 64+32(%rsp),%rbx + movq %rdx,%r9 + + mulxq 0(%rsi),%r8,%rax + mulxq 8(%rsi),%r11,%r14 + addq %rax,%r11 + movq %rdi,8(%rsp) + mulxq 16(%rsi),%r12,%r13 + adcq %r14,%r12 + adcq $0,%r13 + + movq %r8,%rdi + imulq 24(%rsp),%r8 + xorq %rbp,%rbp + + mulxq 24(%rsi),%rax,%r14 + movq %r8,%rdx + leaq 32(%rsi),%rsi + adcxq %rax,%r13 + adcxq %rbp,%r14 + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%rdi + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 +.byte 0xc4,0x62,0xfb,0xf6,0xa1,0x10,0x00,0x00,0x00 + movq 48(%rsp),%rdi + movq %r10,-32(%rbx) + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-24(%rbx) + adcxq %rax,%r12 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r12,-16(%rbx) + + jmp L$mulx4x_1st + +.p2align 5 +L$mulx4x_1st: + adcxq %rbp,%r15 + mulxq 0(%rsi),%r10,%rax + adcxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 +.byte 0x67,0x67 + movq %r8,%rdx + adcxq %rax,%r13 + adcxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + movq %r11,-32(%rbx) + adoxq %r15,%r13 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r13,-16(%rbx) + + decq %rdi + jnz L$mulx4x_1st + + movq 0(%rsp),%rax + movq 8(%rsp),%rdi + adcq %rbp,%r15 + addq %r15,%r14 + sbbq %r15,%r15 + movq %r14,-8(%rbx) + jmp L$mulx4x_outer + +.p2align 5 +L$mulx4x_outer: + movq (%rdi),%rdx + leaq 8(%rdi),%rdi + subq %rax,%rsi + movq %r15,(%rbx) + leaq 64+32(%rsp),%rbx + subq %rax,%rcx + + mulxq 0(%rsi),%r8,%r11 + xorl %ebp,%ebp + movq %rdx,%r9 + mulxq 8(%rsi),%r14,%r12 + adoxq -32(%rbx),%r8 + adcxq %r14,%r11 + mulxq 16(%rsi),%r15,%r13 + adoxq -24(%rbx),%r11 + adcxq %r15,%r12 + adoxq -16(%rbx),%r12 + adcxq %rbp,%r13 + adoxq %rbp,%r13 + + movq %rdi,8(%rsp) + movq %r8,%r15 + imulq 24(%rsp),%r8 + xorl %ebp,%ebp + + mulxq 24(%rsi),%rax,%r14 + movq %r8,%rdx + adcxq %rax,%r13 + adoxq -8(%rbx),%r13 + adcxq %rbp,%r14 + leaq 32(%rsi),%rsi + adoxq %rbp,%r14 + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%r15 + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + mulxq 16(%rcx),%rax,%r12 + movq %r10,-32(%rbx) + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-24(%rbx) + leaq 32(%rcx),%rcx + adcxq %rax,%r12 + adoxq %rbp,%r15 + movq 48(%rsp),%rdi + movq %r12,-16(%rbx) + + jmp L$mulx4x_inner + +.p2align 5 +L$mulx4x_inner: + mulxq 0(%rsi),%r10,%rax + adcxq %rbp,%r15 + adoxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq 0(%rbx),%r10 + adoxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq 8(%rbx),%r11 + adoxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 + movq %r8,%rdx + adcxq 16(%rbx),%r12 + adoxq %rax,%r13 + adcxq 24(%rbx),%r13 + adoxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + adcxq %rbp,%r14 + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + adoxq %r15,%r13 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-32(%rbx) + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r13,-16(%rbx) + + decq %rdi + jnz L$mulx4x_inner + + movq 0(%rsp),%rax + movq 8(%rsp),%rdi + adcq %rbp,%r15 + subq 0(%rbx),%rbp + adcq %r15,%r14 + sbbq %r15,%r15 + movq %r14,-8(%rbx) + + cmpq 16(%rsp),%rdi + jne L$mulx4x_outer + + leaq 64(%rsp),%rbx + subq %rax,%rcx + negq %r15 + movq %rax,%rdx + shrq $3+2,%rax + movq 32(%rsp),%rdi + jmp L$mulx4x_sub + +.p2align 5 +L$mulx4x_sub: + movq 0(%rbx),%r11 + movq 8(%rbx),%r12 + movq 16(%rbx),%r13 + movq 24(%rbx),%r14 + leaq 32(%rbx),%rbx + sbbq 0(%rcx),%r11 + sbbq 8(%rcx),%r12 + sbbq 16(%rcx),%r13 + sbbq 24(%rcx),%r14 + leaq 32(%rcx),%rcx + movq %r11,0(%rdi) + movq %r12,8(%rdi) + movq %r13,16(%rdi) + movq %r14,24(%rdi) + leaq 32(%rdi),%rdi + decq %rax + jnz L$mulx4x_sub + + sbbq $0,%r15 + leaq 64(%rsp),%rbx + subq %rdx,%rdi + +.byte 102,73,15,110,207 + pxor %xmm0,%xmm0 + pshufd $0,%xmm1,%xmm1 + movq 40(%rsp),%rsi + + jmp L$mulx4x_cond_copy + +.p2align 5 +L$mulx4x_cond_copy: + movdqa 0(%rbx),%xmm2 + movdqa 16(%rbx),%xmm3 + leaq 32(%rbx),%rbx + movdqu 0(%rdi),%xmm4 + movdqu 16(%rdi),%xmm5 + leaq 32(%rdi),%rdi + movdqa %xmm0,-32(%rbx) + movdqa %xmm0,-16(%rbx) + pcmpeqd %xmm1,%xmm0 + pand %xmm1,%xmm2 + pand %xmm1,%xmm3 + pand %xmm0,%xmm4 + pand %xmm0,%xmm5 + pxor %xmm0,%xmm0 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqu %xmm4,-32(%rdi) + movdqu %xmm5,-16(%rdi) + subq $32,%rdx + jnz L$mulx4x_cond_copy + + movq %rdx,(%rbx) + + movq $1,%rax + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$mulx4x_epilogue: + .byte 0xf3,0xc3 + + +.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.p2align 4 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/bn/x86_64-mont5.s b/vere/ext/openssl/gen/macos-x86_64/crypto/bn/x86_64-mont5.s new file mode 100644 index 0000000..8520cd9 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/bn/x86_64-mont5.s @@ -0,0 +1,3603 @@ +.text + + + +.globl _bn_mul_mont_gather5 + +.p2align 6 +_bn_mul_mont_gather5: + + movl %r9d,%r9d + movq %rsp,%rax + + testl $7,%r9d + jnz L$mul_enter + movl _OPENSSL_ia32cap_P+8(%rip),%r11d + jmp L$mul4x_enter + +.p2align 4 +L$mul_enter: + movd 8(%rsp),%xmm5 + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + negq %r9 + movq %rsp,%r11 + leaq -280(%rsp,%r9,8),%r10 + negq %r9 + andq $-1024,%r10 + + + + + + + + + + subq %r10,%r11 + andq $-4096,%r11 + leaq (%r10,%r11,1),%rsp + movq (%rsp),%r11 + cmpq %r10,%rsp + ja L$mul_page_walk + jmp L$mul_page_walk_done + +L$mul_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r11 + cmpq %r10,%rsp + ja L$mul_page_walk +L$mul_page_walk_done: + + leaq L$inc(%rip),%r10 + movq %rax,8(%rsp,%r9,8) + +L$mul_body: + + leaq 128(%rdx),%r12 + movdqa 0(%r10),%xmm0 + movdqa 16(%r10),%xmm1 + leaq 24-112(%rsp,%r9,8),%r10 + andq $-16,%r10 + + pshufd $0,%xmm5,%xmm5 + movdqa %xmm1,%xmm4 + movdqa %xmm1,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 +.byte 0x67 + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,112(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,128(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,144(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,160(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,176(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,192(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,208(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,224(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,240(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,256(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,272(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,288(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,304(%r10) + + paddd %xmm2,%xmm3 +.byte 0x67 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,320(%r10) + + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,336(%r10) + pand 64(%r12),%xmm0 + + pand 80(%r12),%xmm1 + pand 96(%r12),%xmm2 + movdqa %xmm3,352(%r10) + pand 112(%r12),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -128(%r12),%xmm4 + movdqa -112(%r12),%xmm5 + movdqa -96(%r12),%xmm2 + pand 112(%r10),%xmm4 + movdqa -80(%r12),%xmm3 + pand 128(%r10),%xmm5 + por %xmm4,%xmm0 + pand 144(%r10),%xmm2 + por %xmm5,%xmm1 + pand 160(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -64(%r12),%xmm4 + movdqa -48(%r12),%xmm5 + movdqa -32(%r12),%xmm2 + pand 176(%r10),%xmm4 + movdqa -16(%r12),%xmm3 + pand 192(%r10),%xmm5 + por %xmm4,%xmm0 + pand 208(%r10),%xmm2 + por %xmm5,%xmm1 + pand 224(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa 0(%r12),%xmm4 + movdqa 16(%r12),%xmm5 + movdqa 32(%r12),%xmm2 + pand 240(%r10),%xmm4 + movdqa 48(%r12),%xmm3 + pand 256(%r10),%xmm5 + por %xmm4,%xmm0 + pand 272(%r10),%xmm2 + por %xmm5,%xmm1 + pand 288(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + por %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 + por %xmm1,%xmm0 + leaq 256(%r12),%r12 +.byte 102,72,15,126,195 + + movq (%r8),%r8 + movq (%rsi),%rax + + xorq %r14,%r14 + xorq %r15,%r15 + + movq %r8,%rbp + mulq %rbx + movq %rax,%r10 + movq (%rcx),%rax + + imulq %r10,%rbp + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi),%rax + adcq $0,%rdx + movq %rdx,%r13 + + leaq 1(%r15),%r15 + jmp L$1st_enter + +.p2align 4 +L$1st: + addq %rax,%r13 + movq (%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r11,%r13 + movq %r10,%r11 + adcq $0,%rdx + movq %r13,-16(%rsp,%r15,8) + movq %rdx,%r13 + +L$1st_enter: + mulq %rbx + addq %rax,%r11 + movq (%rcx,%r15,8),%rax + adcq $0,%rdx + leaq 1(%r15),%r15 + movq %rdx,%r10 + + mulq %rbp + cmpq %r9,%r15 + jne L$1st + + + addq %rax,%r13 + adcq $0,%rdx + addq %r11,%r13 + adcq $0,%rdx + movq %r13,-16(%rsp,%r9,8) + movq %rdx,%r13 + movq %r10,%r11 + + xorq %rdx,%rdx + addq %r11,%r13 + adcq $0,%rdx + movq %r13,-8(%rsp,%r9,8) + movq %rdx,(%rsp,%r9,8) + + leaq 1(%r14),%r14 + jmp L$outer +.p2align 4 +L$outer: + leaq 24+128(%rsp,%r9,8),%rdx + andq $-16,%rdx + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + movdqa -128(%r12),%xmm0 + movdqa -112(%r12),%xmm1 + movdqa -96(%r12),%xmm2 + movdqa -80(%r12),%xmm3 + pand -128(%rdx),%xmm0 + pand -112(%rdx),%xmm1 + por %xmm0,%xmm4 + pand -96(%rdx),%xmm2 + por %xmm1,%xmm5 + pand -80(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa -64(%r12),%xmm0 + movdqa -48(%r12),%xmm1 + movdqa -32(%r12),%xmm2 + movdqa -16(%r12),%xmm3 + pand -64(%rdx),%xmm0 + pand -48(%rdx),%xmm1 + por %xmm0,%xmm4 + pand -32(%rdx),%xmm2 + por %xmm1,%xmm5 + pand -16(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 0(%r12),%xmm0 + movdqa 16(%r12),%xmm1 + movdqa 32(%r12),%xmm2 + movdqa 48(%r12),%xmm3 + pand 0(%rdx),%xmm0 + pand 16(%rdx),%xmm1 + por %xmm0,%xmm4 + pand 32(%rdx),%xmm2 + por %xmm1,%xmm5 + pand 48(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 64(%r12),%xmm0 + movdqa 80(%r12),%xmm1 + movdqa 96(%r12),%xmm2 + movdqa 112(%r12),%xmm3 + pand 64(%rdx),%xmm0 + pand 80(%rdx),%xmm1 + por %xmm0,%xmm4 + pand 96(%rdx),%xmm2 + por %xmm1,%xmm5 + pand 112(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 + por %xmm4,%xmm0 + leaq 256(%r12),%r12 + + movq (%rsi),%rax +.byte 102,72,15,126,195 + + xorq %r15,%r15 + movq %r8,%rbp + movq (%rsp),%r10 + + mulq %rbx + addq %rax,%r10 + movq (%rcx),%rax + adcq $0,%rdx + + imulq %r10,%rbp + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi),%rax + adcq $0,%rdx + movq 8(%rsp),%r10 + movq %rdx,%r13 + + leaq 1(%r15),%r15 + jmp L$inner_enter + +.p2align 4 +L$inner: + addq %rax,%r13 + movq (%rsi,%r15,8),%rax + adcq $0,%rdx + addq %r10,%r13 + movq (%rsp,%r15,8),%r10 + adcq $0,%rdx + movq %r13,-16(%rsp,%r15,8) + movq %rdx,%r13 + +L$inner_enter: + mulq %rbx + addq %rax,%r11 + movq (%rcx,%r15,8),%rax + adcq $0,%rdx + addq %r11,%r10 + movq %rdx,%r11 + adcq $0,%r11 + leaq 1(%r15),%r15 + + mulq %rbp + cmpq %r9,%r15 + jne L$inner + + addq %rax,%r13 + adcq $0,%rdx + addq %r10,%r13 + movq (%rsp,%r9,8),%r10 + adcq $0,%rdx + movq %r13,-16(%rsp,%r9,8) + movq %rdx,%r13 + + xorq %rdx,%rdx + addq %r11,%r13 + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-8(%rsp,%r9,8) + movq %rdx,(%rsp,%r9,8) + + leaq 1(%r14),%r14 + cmpq %r9,%r14 + jb L$outer + + xorq %r14,%r14 + movq (%rsp),%rax + leaq (%rsp),%rsi + movq %r9,%r15 + jmp L$sub +.p2align 4 +L$sub: sbbq (%rcx,%r14,8),%rax + movq %rax,(%rdi,%r14,8) + movq 8(%rsi,%r14,8),%rax + leaq 1(%r14),%r14 + decq %r15 + jnz L$sub + + sbbq $0,%rax + movq $-1,%rbx + xorq %rax,%rbx + xorq %r14,%r14 + movq %r9,%r15 + +L$copy: + movq (%rdi,%r14,8),%rcx + movq (%rsp,%r14,8),%rdx + andq %rbx,%rcx + andq %rax,%rdx + movq %r14,(%rsp,%r14,8) + orq %rcx,%rdx + movq %rdx,(%rdi,%r14,8) + leaq 1(%r14),%r14 + subq $1,%r15 + jnz L$copy + + movq 8(%rsp,%r9,8),%rsi + + movq $1,%rax + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$mul_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +bn_mul4x_mont_gather5: + +.byte 0x67 + movq %rsp,%rax + +L$mul4x_enter: + andl $0x80108,%r11d + cmpl $0x80108,%r11d + je L$mulx4x_enter + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$mul4x_prologue: + +.byte 0x67 + shll $3,%r9d + leaq (%r9,%r9,2),%r10 + negq %r9 + + + + + + + + + + + leaq -320(%rsp,%r9,2),%r11 + movq %rsp,%rbp + subq %rdi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb L$mul4xsp_alt + subq %r11,%rbp + leaq -320(%rbp,%r9,2),%rbp + jmp L$mul4xsp_done + +.p2align 5 +L$mul4xsp_alt: + leaq 4096-320(,%r9,2),%r10 + leaq -320(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +L$mul4xsp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$mul4x_page_walk + jmp L$mul4x_page_walk_done + +L$mul4x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$mul4x_page_walk +L$mul4x_page_walk_done: + + negq %r9 + + movq %rax,40(%rsp) + +L$mul4x_body: + + call mul4x_internal + + movq 40(%rsp),%rsi + + movq $1,%rax + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$mul4x_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 5 +mul4x_internal: + + shlq $5,%r9 + movd 8(%rax),%xmm5 + leaq L$inc(%rip),%rax + leaq 128(%rdx,%r9,1),%r13 + shrq $5,%r9 + movdqa 0(%rax),%xmm0 + movdqa 16(%rax),%xmm1 + leaq 88-112(%rsp,%r9,1),%r10 + leaq 128(%rdx),%r12 + + pshufd $0,%xmm5,%xmm5 + movdqa %xmm1,%xmm4 +.byte 0x67,0x67 + movdqa %xmm1,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 +.byte 0x67 + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,112(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,128(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,144(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,160(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,176(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,192(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,208(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,224(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,240(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,256(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,272(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,288(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,304(%r10) + + paddd %xmm2,%xmm3 +.byte 0x67 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,320(%r10) + + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,336(%r10) + pand 64(%r12),%xmm0 + + pand 80(%r12),%xmm1 + pand 96(%r12),%xmm2 + movdqa %xmm3,352(%r10) + pand 112(%r12),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -128(%r12),%xmm4 + movdqa -112(%r12),%xmm5 + movdqa -96(%r12),%xmm2 + pand 112(%r10),%xmm4 + movdqa -80(%r12),%xmm3 + pand 128(%r10),%xmm5 + por %xmm4,%xmm0 + pand 144(%r10),%xmm2 + por %xmm5,%xmm1 + pand 160(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -64(%r12),%xmm4 + movdqa -48(%r12),%xmm5 + movdqa -32(%r12),%xmm2 + pand 176(%r10),%xmm4 + movdqa -16(%r12),%xmm3 + pand 192(%r10),%xmm5 + por %xmm4,%xmm0 + pand 208(%r10),%xmm2 + por %xmm5,%xmm1 + pand 224(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa 0(%r12),%xmm4 + movdqa 16(%r12),%xmm5 + movdqa 32(%r12),%xmm2 + pand 240(%r10),%xmm4 + movdqa 48(%r12),%xmm3 + pand 256(%r10),%xmm5 + por %xmm4,%xmm0 + pand 272(%r10),%xmm2 + por %xmm5,%xmm1 + pand 288(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + por %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 + por %xmm1,%xmm0 + leaq 256(%r12),%r12 +.byte 102,72,15,126,195 + + movq %r13,16+8(%rsp) + movq %rdi,56+8(%rsp) + + movq (%r8),%r8 + movq (%rsi),%rax + leaq (%rsi,%r9,1),%rsi + negq %r9 + + movq %r8,%rbp + mulq %rbx + movq %rax,%r10 + movq (%rcx),%rax + + imulq %r10,%rbp + leaq 64+8(%rsp),%r14 + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi,%r9,1),%rax + adcq $0,%rdx + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq 16(%rsi,%r9,1),%rax + adcq $0,%rdx + addq %r11,%rdi + leaq 32(%r9),%r15 + leaq 32(%rcx),%rcx + adcq $0,%rdx + movq %rdi,(%r14) + movq %rdx,%r13 + jmp L$1st4x + +.p2align 5 +L$1st4x: + mulq %rbx + addq %rax,%r10 + movq -16(%rcx),%rax + leaq 32(%r14),%r14 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-24(%r14) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-16(%r14) + movq %rdx,%r13 + + mulq %rbx + addq %rax,%r10 + movq 0(%rcx),%rax + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq 8(%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-8(%r14) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq 16(%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r11,%rdi + leaq 32(%rcx),%rcx + adcq $0,%rdx + movq %rdi,(%r14) + movq %rdx,%r13 + + addq $32,%r15 + jnz L$1st4x + + mulq %rbx + addq %rax,%r10 + movq -16(%rcx),%rax + leaq 32(%r14),%r14 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %r13,-24(%r14) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx),%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi,%r9,1),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %rdi,-16(%r14) + movq %rdx,%r13 + + leaq (%rcx,%r9,1),%rcx + + xorq %rdi,%rdi + addq %r10,%r13 + adcq $0,%rdi + movq %r13,-8(%r14) + + jmp L$outer4x + +.p2align 5 +L$outer4x: + leaq 16+128(%r14),%rdx + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + movdqa -128(%r12),%xmm0 + movdqa -112(%r12),%xmm1 + movdqa -96(%r12),%xmm2 + movdqa -80(%r12),%xmm3 + pand -128(%rdx),%xmm0 + pand -112(%rdx),%xmm1 + por %xmm0,%xmm4 + pand -96(%rdx),%xmm2 + por %xmm1,%xmm5 + pand -80(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa -64(%r12),%xmm0 + movdqa -48(%r12),%xmm1 + movdqa -32(%r12),%xmm2 + movdqa -16(%r12),%xmm3 + pand -64(%rdx),%xmm0 + pand -48(%rdx),%xmm1 + por %xmm0,%xmm4 + pand -32(%rdx),%xmm2 + por %xmm1,%xmm5 + pand -16(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 0(%r12),%xmm0 + movdqa 16(%r12),%xmm1 + movdqa 32(%r12),%xmm2 + movdqa 48(%r12),%xmm3 + pand 0(%rdx),%xmm0 + pand 16(%rdx),%xmm1 + por %xmm0,%xmm4 + pand 32(%rdx),%xmm2 + por %xmm1,%xmm5 + pand 48(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 64(%r12),%xmm0 + movdqa 80(%r12),%xmm1 + movdqa 96(%r12),%xmm2 + movdqa 112(%r12),%xmm3 + pand 64(%rdx),%xmm0 + pand 80(%rdx),%xmm1 + por %xmm0,%xmm4 + pand 96(%rdx),%xmm2 + por %xmm1,%xmm5 + pand 112(%rdx),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 + por %xmm4,%xmm0 + leaq 256(%r12),%r12 +.byte 102,72,15,126,195 + + movq (%r14,%r9,1),%r10 + movq %r8,%rbp + mulq %rbx + addq %rax,%r10 + movq (%rcx),%rax + adcq $0,%rdx + + imulq %r10,%rbp + movq %rdx,%r11 + movq %rdi,(%r14) + + leaq (%r14,%r9,1),%r14 + + mulq %rbp + addq %rax,%r10 + movq 8(%rsi,%r9,1),%rax + adcq $0,%rdx + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx),%rax + adcq $0,%rdx + addq 8(%r14),%r11 + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq 16(%rsi,%r9,1),%rax + adcq $0,%rdx + addq %r11,%rdi + leaq 32(%r9),%r15 + leaq 32(%rcx),%rcx + adcq $0,%rdx + movq %rdx,%r13 + jmp L$inner4x + +.p2align 5 +L$inner4x: + mulq %rbx + addq %rax,%r10 + movq -16(%rcx),%rax + adcq $0,%rdx + addq 16(%r14),%r10 + leaq 32(%r14),%r14 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %rdi,-32(%r14) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq -8(%rcx),%rax + adcq $0,%rdx + addq -8(%r14),%r11 + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %r13,-24(%r14) + movq %rdx,%r13 + + mulq %rbx + addq %rax,%r10 + movq 0(%rcx),%rax + adcq $0,%rdx + addq (%r14),%r10 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq 8(%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %rdi,-16(%r14) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq 8(%rcx),%rax + adcq $0,%rdx + addq 8(%r14),%r11 + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq 16(%rsi,%r15,1),%rax + adcq $0,%rdx + addq %r11,%rdi + leaq 32(%rcx),%rcx + adcq $0,%rdx + movq %r13,-8(%r14) + movq %rdx,%r13 + + addq $32,%r15 + jnz L$inner4x + + mulq %rbx + addq %rax,%r10 + movq -16(%rcx),%rax + adcq $0,%rdx + addq 16(%r14),%r10 + leaq 32(%r14),%r14 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %rbp + addq %rax,%r13 + movq -8(%rsi),%rax + adcq $0,%rdx + addq %r10,%r13 + adcq $0,%rdx + movq %rdi,-32(%r14) + movq %rdx,%rdi + + mulq %rbx + addq %rax,%r11 + movq %rbp,%rax + movq -8(%rcx),%rbp + adcq $0,%rdx + addq -8(%r14),%r11 + adcq $0,%rdx + movq %rdx,%r10 + + mulq %rbp + addq %rax,%rdi + movq (%rsi,%r9,1),%rax + adcq $0,%rdx + addq %r11,%rdi + adcq $0,%rdx + movq %r13,-24(%r14) + movq %rdx,%r13 + + movq %rdi,-16(%r14) + leaq (%rcx,%r9,1),%rcx + + xorq %rdi,%rdi + addq %r10,%r13 + adcq $0,%rdi + addq (%r14),%r13 + adcq $0,%rdi + movq %r13,-8(%r14) + + cmpq 16+8(%rsp),%r12 + jb L$outer4x + xorq %rax,%rax + subq %r13,%rbp + adcq %r15,%r15 + orq %r15,%rdi + subq %rdi,%rax + leaq (%r14,%r9,1),%rbx + movq (%rcx),%r12 + leaq (%rcx),%rbp + movq %r9,%rcx + sarq $3+2,%rcx + movq 56+8(%rsp),%rdi + decq %r12 + xorq %r10,%r10 + movq 8(%rbp),%r13 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 + jmp L$sqr4x_sub_entry + + +.globl _bn_power5 + +.p2align 5 +_bn_power5: + + movq %rsp,%rax + + movl _OPENSSL_ia32cap_P+8(%rip),%r11d + andl $0x80108,%r11d + cmpl $0x80108,%r11d + je L$powerx5_enter + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$power5_prologue: + + shll $3,%r9d + leal (%r9,%r9,2),%r10d + negq %r9 + movq (%r8),%r8 + + + + + + + + + leaq -320(%rsp,%r9,2),%r11 + movq %rsp,%rbp + subq %rdi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb L$pwr_sp_alt + subq %r11,%rbp + leaq -320(%rbp,%r9,2),%rbp + jmp L$pwr_sp_done + +.p2align 5 +L$pwr_sp_alt: + leaq 4096-320(,%r9,2),%r10 + leaq -320(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +L$pwr_sp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$pwr_page_walk + jmp L$pwr_page_walk_done + +L$pwr_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$pwr_page_walk +L$pwr_page_walk_done: + + movq %r9,%r10 + negq %r9 + + + + + + + + + + + movq %r8,32(%rsp) + movq %rax,40(%rsp) + +L$power5_body: +.byte 102,72,15,110,207 +.byte 102,72,15,110,209 +.byte 102,73,15,110,218 +.byte 102,72,15,110,226 + + call __bn_sqr8x_internal + call __bn_post4x_internal + call __bn_sqr8x_internal + call __bn_post4x_internal + call __bn_sqr8x_internal + call __bn_post4x_internal + call __bn_sqr8x_internal + call __bn_post4x_internal + call __bn_sqr8x_internal + call __bn_post4x_internal + +.byte 102,72,15,126,209 +.byte 102,72,15,126,226 + movq %rsi,%rdi + movq 40(%rsp),%rax + leaq 32(%rsp),%r8 + + call mul4x_internal + + movq 40(%rsp),%rsi + + movq $1,%rax + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$power5_epilogue: + .byte 0xf3,0xc3 + + + +.globl _bn_sqr8x_internal +.private_extern _bn_sqr8x_internal + +.p2align 5 +_bn_sqr8x_internal: +__bn_sqr8x_internal: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + leaq 32(%r10),%rbp + leaq (%rsi,%r9,1),%rsi + + movq %r9,%rcx + + + movq -32(%rsi,%rbp,1),%r14 + leaq 48+8(%rsp,%r9,2),%rdi + movq -24(%rsi,%rbp,1),%rax + leaq -32(%rdi,%rbp,1),%rdi + movq -16(%rsi,%rbp,1),%rbx + movq %rax,%r15 + + mulq %r14 + movq %rax,%r10 + movq %rbx,%rax + movq %rdx,%r11 + movq %r10,-24(%rdi,%rbp,1) + + mulq %r14 + addq %rax,%r11 + movq %rbx,%rax + adcq $0,%rdx + movq %r11,-16(%rdi,%rbp,1) + movq %rdx,%r10 + + + movq -8(%rsi,%rbp,1),%rbx + mulq %r15 + movq %rax,%r12 + movq %rbx,%rax + movq %rdx,%r13 + + leaq (%rbp),%rcx + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + movq %rdx,%r11 + adcq $0,%r11 + addq %r12,%r10 + adcq $0,%r11 + movq %r10,-8(%rdi,%rcx,1) + jmp L$sqr4x_1st + +.p2align 5 +L$sqr4x_1st: + movq (%rsi,%rcx,1),%rbx + mulq %r15 + addq %rax,%r13 + movq %rbx,%rax + movq %rdx,%r12 + adcq $0,%r12 + + mulq %r14 + addq %rax,%r11 + movq %rbx,%rax + movq 8(%rsi,%rcx,1),%rbx + movq %rdx,%r10 + adcq $0,%r10 + addq %r13,%r11 + adcq $0,%r10 + + + mulq %r15 + addq %rax,%r12 + movq %rbx,%rax + movq %r11,(%rdi,%rcx,1) + movq %rdx,%r13 + adcq $0,%r13 + + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + movq 16(%rsi,%rcx,1),%rbx + movq %rdx,%r11 + adcq $0,%r11 + addq %r12,%r10 + adcq $0,%r11 + + mulq %r15 + addq %rax,%r13 + movq %rbx,%rax + movq %r10,8(%rdi,%rcx,1) + movq %rdx,%r12 + adcq $0,%r12 + + mulq %r14 + addq %rax,%r11 + movq %rbx,%rax + movq 24(%rsi,%rcx,1),%rbx + movq %rdx,%r10 + adcq $0,%r10 + addq %r13,%r11 + adcq $0,%r10 + + + mulq %r15 + addq %rax,%r12 + movq %rbx,%rax + movq %r11,16(%rdi,%rcx,1) + movq %rdx,%r13 + adcq $0,%r13 + leaq 32(%rcx),%rcx + + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + movq %rdx,%r11 + adcq $0,%r11 + addq %r12,%r10 + adcq $0,%r11 + movq %r10,-8(%rdi,%rcx,1) + + cmpq $0,%rcx + jne L$sqr4x_1st + + mulq %r15 + addq %rax,%r13 + leaq 16(%rbp),%rbp + adcq $0,%rdx + addq %r11,%r13 + adcq $0,%rdx + + movq %r13,(%rdi) + movq %rdx,%r12 + movq %rdx,8(%rdi) + jmp L$sqr4x_outer + +.p2align 5 +L$sqr4x_outer: + movq -32(%rsi,%rbp,1),%r14 + leaq 48+8(%rsp,%r9,2),%rdi + movq -24(%rsi,%rbp,1),%rax + leaq -32(%rdi,%rbp,1),%rdi + movq -16(%rsi,%rbp,1),%rbx + movq %rax,%r15 + + mulq %r14 + movq -24(%rdi,%rbp,1),%r10 + addq %rax,%r10 + movq %rbx,%rax + adcq $0,%rdx + movq %r10,-24(%rdi,%rbp,1) + movq %rdx,%r11 + + mulq %r14 + addq %rax,%r11 + movq %rbx,%rax + adcq $0,%rdx + addq -16(%rdi,%rbp,1),%r11 + movq %rdx,%r10 + adcq $0,%r10 + movq %r11,-16(%rdi,%rbp,1) + + xorq %r12,%r12 + + movq -8(%rsi,%rbp,1),%rbx + mulq %r15 + addq %rax,%r12 + movq %rbx,%rax + adcq $0,%rdx + addq -8(%rdi,%rbp,1),%r12 + movq %rdx,%r13 + adcq $0,%r13 + + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + adcq $0,%rdx + addq %r12,%r10 + movq %rdx,%r11 + adcq $0,%r11 + movq %r10,-8(%rdi,%rbp,1) + + leaq (%rbp),%rcx + jmp L$sqr4x_inner + +.p2align 5 +L$sqr4x_inner: + movq (%rsi,%rcx,1),%rbx + mulq %r15 + addq %rax,%r13 + movq %rbx,%rax + movq %rdx,%r12 + adcq $0,%r12 + addq (%rdi,%rcx,1),%r13 + adcq $0,%r12 + +.byte 0x67 + mulq %r14 + addq %rax,%r11 + movq %rbx,%rax + movq 8(%rsi,%rcx,1),%rbx + movq %rdx,%r10 + adcq $0,%r10 + addq %r13,%r11 + adcq $0,%r10 + + mulq %r15 + addq %rax,%r12 + movq %r11,(%rdi,%rcx,1) + movq %rbx,%rax + movq %rdx,%r13 + adcq $0,%r13 + addq 8(%rdi,%rcx,1),%r12 + leaq 16(%rcx),%rcx + adcq $0,%r13 + + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + adcq $0,%rdx + addq %r12,%r10 + movq %rdx,%r11 + adcq $0,%r11 + movq %r10,-8(%rdi,%rcx,1) + + cmpq $0,%rcx + jne L$sqr4x_inner + +.byte 0x67 + mulq %r15 + addq %rax,%r13 + adcq $0,%rdx + addq %r11,%r13 + adcq $0,%rdx + + movq %r13,(%rdi) + movq %rdx,%r12 + movq %rdx,8(%rdi) + + addq $16,%rbp + jnz L$sqr4x_outer + + + movq -32(%rsi),%r14 + leaq 48+8(%rsp,%r9,2),%rdi + movq -24(%rsi),%rax + leaq -32(%rdi,%rbp,1),%rdi + movq -16(%rsi),%rbx + movq %rax,%r15 + + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + movq %rdx,%r11 + adcq $0,%r11 + + mulq %r14 + addq %rax,%r11 + movq %rbx,%rax + movq %r10,-24(%rdi) + movq %rdx,%r10 + adcq $0,%r10 + addq %r13,%r11 + movq -8(%rsi),%rbx + adcq $0,%r10 + + mulq %r15 + addq %rax,%r12 + movq %rbx,%rax + movq %r11,-16(%rdi) + movq %rdx,%r13 + adcq $0,%r13 + + mulq %r14 + addq %rax,%r10 + movq %rbx,%rax + movq %rdx,%r11 + adcq $0,%r11 + addq %r12,%r10 + adcq $0,%r11 + movq %r10,-8(%rdi) + + mulq %r15 + addq %rax,%r13 + movq -16(%rsi),%rax + adcq $0,%rdx + addq %r11,%r13 + adcq $0,%rdx + + movq %r13,(%rdi) + movq %rdx,%r12 + movq %rdx,8(%rdi) + + mulq %rbx + addq $16,%rbp + xorq %r14,%r14 + subq %r9,%rbp + xorq %r15,%r15 + + addq %r12,%rax + adcq $0,%rdx + movq %rax,8(%rdi) + movq %rdx,16(%rdi) + movq %r15,24(%rdi) + + movq -16(%rsi,%rbp,1),%rax + leaq 48+8(%rsp),%rdi + xorq %r10,%r10 + movq 8(%rdi),%r11 + + leaq (%r14,%r10,2),%r12 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r13 + shrq $63,%r11 + orq %r10,%r13 + movq 16(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq 24(%rdi),%r11 + adcq %rax,%r12 + movq -8(%rsi,%rbp,1),%rax + movq %r12,(%rdi) + adcq %rdx,%r13 + + leaq (%r14,%r10,2),%rbx + movq %r13,8(%rdi) + sbbq %r15,%r15 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r8 + shrq $63,%r11 + orq %r10,%r8 + movq 32(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq 40(%rdi),%r11 + adcq %rax,%rbx + movq 0(%rsi,%rbp,1),%rax + movq %rbx,16(%rdi) + adcq %rdx,%r8 + leaq 16(%rbp),%rbp + movq %r8,24(%rdi) + sbbq %r15,%r15 + leaq 64(%rdi),%rdi + jmp L$sqr4x_shift_n_add + +.p2align 5 +L$sqr4x_shift_n_add: + leaq (%r14,%r10,2),%r12 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r13 + shrq $63,%r11 + orq %r10,%r13 + movq -16(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq -8(%rdi),%r11 + adcq %rax,%r12 + movq -8(%rsi,%rbp,1),%rax + movq %r12,-32(%rdi) + adcq %rdx,%r13 + + leaq (%r14,%r10,2),%rbx + movq %r13,-24(%rdi) + sbbq %r15,%r15 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r8 + shrq $63,%r11 + orq %r10,%r8 + movq 0(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq 8(%rdi),%r11 + adcq %rax,%rbx + movq 0(%rsi,%rbp,1),%rax + movq %rbx,-16(%rdi) + adcq %rdx,%r8 + + leaq (%r14,%r10,2),%r12 + movq %r8,-8(%rdi) + sbbq %r15,%r15 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r13 + shrq $63,%r11 + orq %r10,%r13 + movq 16(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq 24(%rdi),%r11 + adcq %rax,%r12 + movq 8(%rsi,%rbp,1),%rax + movq %r12,0(%rdi) + adcq %rdx,%r13 + + leaq (%r14,%r10,2),%rbx + movq %r13,8(%rdi) + sbbq %r15,%r15 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r8 + shrq $63,%r11 + orq %r10,%r8 + movq 32(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq 40(%rdi),%r11 + adcq %rax,%rbx + movq 16(%rsi,%rbp,1),%rax + movq %rbx,16(%rdi) + adcq %rdx,%r8 + movq %r8,24(%rdi) + sbbq %r15,%r15 + leaq 64(%rdi),%rdi + addq $32,%rbp + jnz L$sqr4x_shift_n_add + + leaq (%r14,%r10,2),%r12 +.byte 0x67 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r13 + shrq $63,%r11 + orq %r10,%r13 + movq -16(%rdi),%r10 + movq %r11,%r14 + mulq %rax + negq %r15 + movq -8(%rdi),%r11 + adcq %rax,%r12 + movq -8(%rsi),%rax + movq %r12,-32(%rdi) + adcq %rdx,%r13 + + leaq (%r14,%r10,2),%rbx + movq %r13,-24(%rdi) + sbbq %r15,%r15 + shrq $63,%r10 + leaq (%rcx,%r11,2),%r8 + shrq $63,%r11 + orq %r10,%r8 + mulq %rax + negq %r15 + adcq %rax,%rbx + adcq %rdx,%r8 + movq %rbx,-16(%rdi) + movq %r8,-8(%rdi) +.byte 102,72,15,126,213 +__bn_sqr8x_reduction: + xorq %rax,%rax + leaq (%r9,%rbp,1),%rcx + leaq 48+8(%rsp,%r9,2),%rdx + movq %rcx,0+8(%rsp) + leaq 48+8(%rsp,%r9,1),%rdi + movq %rdx,8+8(%rsp) + negq %r9 + jmp L$8x_reduction_loop + +.p2align 5 +L$8x_reduction_loop: + leaq (%rdi,%r9,1),%rdi +.byte 0x66 + movq 0(%rdi),%rbx + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + movq 32(%rdi),%r12 + movq 40(%rdi),%r13 + movq 48(%rdi),%r14 + movq 56(%rdi),%r15 + movq %rax,(%rdx) + leaq 64(%rdi),%rdi + +.byte 0x67 + movq %rbx,%r8 + imulq 32+8(%rsp),%rbx + movq 0(%rbp),%rax + movl $8,%ecx + jmp L$8x_reduce + +.p2align 5 +L$8x_reduce: + mulq %rbx + movq 8(%rbp),%rax + negq %r8 + movq %rdx,%r8 + adcq $0,%r8 + + mulq %rbx + addq %rax,%r9 + movq 16(%rbp),%rax + adcq $0,%rdx + addq %r9,%r8 + movq %rbx,48-8+8(%rsp,%rcx,8) + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r10 + movq 24(%rbp),%rax + adcq $0,%rdx + addq %r10,%r9 + movq 32+8(%rsp),%rsi + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r11 + movq 32(%rbp),%rax + adcq $0,%rdx + imulq %r8,%rsi + addq %r11,%r10 + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r12 + movq 40(%rbp),%rax + adcq $0,%rdx + addq %r12,%r11 + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r13 + movq 48(%rbp),%rax + adcq $0,%rdx + addq %r13,%r12 + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r14 + movq 56(%rbp),%rax + adcq $0,%rdx + addq %r14,%r13 + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + movq %rsi,%rbx + addq %rax,%r15 + movq 0(%rbp),%rax + adcq $0,%rdx + addq %r15,%r14 + movq %rdx,%r15 + adcq $0,%r15 + + decl %ecx + jnz L$8x_reduce + + leaq 64(%rbp),%rbp + xorq %rax,%rax + movq 8+8(%rsp),%rdx + cmpq 0+8(%rsp),%rbp + jae L$8x_no_tail + +.byte 0x66 + addq 0(%rdi),%r8 + adcq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + sbbq %rsi,%rsi + + movq 48+56+8(%rsp),%rbx + movl $8,%ecx + movq 0(%rbp),%rax + jmp L$8x_tail + +.p2align 5 +L$8x_tail: + mulq %rbx + addq %rax,%r8 + movq 8(%rbp),%rax + movq %r8,(%rdi) + movq %rdx,%r8 + adcq $0,%r8 + + mulq %rbx + addq %rax,%r9 + movq 16(%rbp),%rax + adcq $0,%rdx + addq %r9,%r8 + leaq 8(%rdi),%rdi + movq %rdx,%r9 + adcq $0,%r9 + + mulq %rbx + addq %rax,%r10 + movq 24(%rbp),%rax + adcq $0,%rdx + addq %r10,%r9 + movq %rdx,%r10 + adcq $0,%r10 + + mulq %rbx + addq %rax,%r11 + movq 32(%rbp),%rax + adcq $0,%rdx + addq %r11,%r10 + movq %rdx,%r11 + adcq $0,%r11 + + mulq %rbx + addq %rax,%r12 + movq 40(%rbp),%rax + adcq $0,%rdx + addq %r12,%r11 + movq %rdx,%r12 + adcq $0,%r12 + + mulq %rbx + addq %rax,%r13 + movq 48(%rbp),%rax + adcq $0,%rdx + addq %r13,%r12 + movq %rdx,%r13 + adcq $0,%r13 + + mulq %rbx + addq %rax,%r14 + movq 56(%rbp),%rax + adcq $0,%rdx + addq %r14,%r13 + movq %rdx,%r14 + adcq $0,%r14 + + mulq %rbx + movq 48-16+8(%rsp,%rcx,8),%rbx + addq %rax,%r15 + adcq $0,%rdx + addq %r15,%r14 + movq 0(%rbp),%rax + movq %rdx,%r15 + adcq $0,%r15 + + decl %ecx + jnz L$8x_tail + + leaq 64(%rbp),%rbp + movq 8+8(%rsp),%rdx + cmpq 0+8(%rsp),%rbp + jae L$8x_tail_done + + movq 48+56+8(%rsp),%rbx + negq %rsi + movq 0(%rbp),%rax + adcq 0(%rdi),%r8 + adcq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + sbbq %rsi,%rsi + + movl $8,%ecx + jmp L$8x_tail + +.p2align 5 +L$8x_tail_done: + xorq %rax,%rax + addq (%rdx),%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + adcq $0,%r12 + adcq $0,%r13 + adcq $0,%r14 + adcq $0,%r15 + adcq $0,%rax + + negq %rsi +L$8x_no_tail: + adcq 0(%rdi),%r8 + adcq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + adcq $0,%rax + movq -8(%rbp),%rcx + xorq %rsi,%rsi + +.byte 102,72,15,126,213 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) +.byte 102,73,15,126,217 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + leaq 64(%rdi),%rdi + + cmpq %rdx,%rdi + jb L$8x_reduction_loop + .byte 0xf3,0xc3 + + + +.p2align 5 +__bn_post4x_internal: + + movq 0(%rbp),%r12 + leaq (%rdi,%r9,1),%rbx + movq %r9,%rcx +.byte 102,72,15,126,207 + negq %rax +.byte 102,72,15,126,206 + sarq $3+2,%rcx + decq %r12 + xorq %r10,%r10 + movq 8(%rbp),%r13 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 + jmp L$sqr4x_sub_entry + +.p2align 4 +L$sqr4x_sub: + movq 0(%rbp),%r12 + movq 8(%rbp),%r13 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 +L$sqr4x_sub_entry: + leaq 32(%rbp),%rbp + notq %r12 + notq %r13 + notq %r14 + notq %r15 + andq %rax,%r12 + andq %rax,%r13 + andq %rax,%r14 + andq %rax,%r15 + + negq %r10 + adcq 0(%rbx),%r12 + adcq 8(%rbx),%r13 + adcq 16(%rbx),%r14 + adcq 24(%rbx),%r15 + movq %r12,0(%rdi) + leaq 32(%rbx),%rbx + movq %r13,8(%rdi) + sbbq %r10,%r10 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + leaq 32(%rdi),%rdi + + incq %rcx + jnz L$sqr4x_sub + + movq %r9,%r10 + negq %r9 + .byte 0xf3,0xc3 + + + +.p2align 5 +bn_mulx4x_mont_gather5: + + movq %rsp,%rax + +L$mulx4x_enter: + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$mulx4x_prologue: + + shll $3,%r9d + leaq (%r9,%r9,2),%r10 + negq %r9 + movq (%r8),%r8 + + + + + + + + + + + leaq -320(%rsp,%r9,2),%r11 + movq %rsp,%rbp + subq %rdi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb L$mulx4xsp_alt + subq %r11,%rbp + leaq -320(%rbp,%r9,2),%rbp + jmp L$mulx4xsp_done + +L$mulx4xsp_alt: + leaq 4096-320(,%r9,2),%r10 + leaq -320(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +L$mulx4xsp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$mulx4x_page_walk + jmp L$mulx4x_page_walk_done + +L$mulx4x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$mulx4x_page_walk +L$mulx4x_page_walk_done: + + + + + + + + + + + + + + movq %r8,32(%rsp) + movq %rax,40(%rsp) + +L$mulx4x_body: + call mulx4x_internal + + movq 40(%rsp),%rsi + + movq $1,%rax + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$mulx4x_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 5 +mulx4x_internal: + + movq %r9,8(%rsp) + movq %r9,%r10 + negq %r9 + shlq $5,%r9 + negq %r10 + leaq 128(%rdx,%r9,1),%r13 + shrq $5+5,%r9 + movd 8(%rax),%xmm5 + subq $1,%r9 + leaq L$inc(%rip),%rax + movq %r13,16+8(%rsp) + movq %r9,24+8(%rsp) + movq %rdi,56+8(%rsp) + movdqa 0(%rax),%xmm0 + movdqa 16(%rax),%xmm1 + leaq 88-112(%rsp,%r10,1),%r10 + leaq 128(%rdx),%rdi + + pshufd $0,%xmm5,%xmm5 + movdqa %xmm1,%xmm4 +.byte 0x67 + movdqa %xmm1,%xmm2 +.byte 0x67 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,112(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,128(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,144(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,160(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,176(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,192(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,208(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,224(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,240(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,256(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,272(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,288(%r10) + movdqa %xmm4,%xmm3 +.byte 0x67 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,304(%r10) + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,320(%r10) + + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,336(%r10) + + pand 64(%rdi),%xmm0 + pand 80(%rdi),%xmm1 + pand 96(%rdi),%xmm2 + movdqa %xmm3,352(%r10) + pand 112(%rdi),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -128(%rdi),%xmm4 + movdqa -112(%rdi),%xmm5 + movdqa -96(%rdi),%xmm2 + pand 112(%r10),%xmm4 + movdqa -80(%rdi),%xmm3 + pand 128(%r10),%xmm5 + por %xmm4,%xmm0 + pand 144(%r10),%xmm2 + por %xmm5,%xmm1 + pand 160(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -64(%rdi),%xmm4 + movdqa -48(%rdi),%xmm5 + movdqa -32(%rdi),%xmm2 + pand 176(%r10),%xmm4 + movdqa -16(%rdi),%xmm3 + pand 192(%r10),%xmm5 + por %xmm4,%xmm0 + pand 208(%r10),%xmm2 + por %xmm5,%xmm1 + pand 224(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa 0(%rdi),%xmm4 + movdqa 16(%rdi),%xmm5 + movdqa 32(%rdi),%xmm2 + pand 240(%r10),%xmm4 + movdqa 48(%rdi),%xmm3 + pand 256(%r10),%xmm5 + por %xmm4,%xmm0 + pand 272(%r10),%xmm2 + por %xmm5,%xmm1 + pand 288(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + pxor %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 + por %xmm1,%xmm0 + leaq 256(%rdi),%rdi +.byte 102,72,15,126,194 + leaq 64+32+8(%rsp),%rbx + + movq %rdx,%r9 + mulxq 0(%rsi),%r8,%rax + mulxq 8(%rsi),%r11,%r12 + addq %rax,%r11 + mulxq 16(%rsi),%rax,%r13 + adcq %rax,%r12 + adcq $0,%r13 + mulxq 24(%rsi),%rax,%r14 + + movq %r8,%r15 + imulq 32+8(%rsp),%r8 + xorq %rbp,%rbp + movq %r8,%rdx + + movq %rdi,8+8(%rsp) + + leaq 32(%rsi),%rsi + adcxq %rax,%r13 + adcxq %rbp,%r14 + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%r15 + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + mulxq 16(%rcx),%rax,%r12 + movq 24+8(%rsp),%rdi + movq %r10,-32(%rbx) + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-24(%rbx) + adcxq %rax,%r12 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r12,-16(%rbx) + jmp L$mulx4x_1st + +.p2align 5 +L$mulx4x_1st: + adcxq %rbp,%r15 + mulxq 0(%rsi),%r10,%rax + adcxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 +.byte 0x67,0x67 + movq %r8,%rdx + adcxq %rax,%r13 + adcxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + movq %r11,-32(%rbx) + adoxq %r15,%r13 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r13,-16(%rbx) + + decq %rdi + jnz L$mulx4x_1st + + movq 8(%rsp),%rax + adcq %rbp,%r15 + leaq (%rsi,%rax,1),%rsi + addq %r15,%r14 + movq 8+8(%rsp),%rdi + adcq %rbp,%rbp + movq %r14,-8(%rbx) + jmp L$mulx4x_outer + +.p2align 5 +L$mulx4x_outer: + leaq 16-256(%rbx),%r10 + pxor %xmm4,%xmm4 +.byte 0x67,0x67 + pxor %xmm5,%xmm5 + movdqa -128(%rdi),%xmm0 + movdqa -112(%rdi),%xmm1 + movdqa -96(%rdi),%xmm2 + pand 256(%r10),%xmm0 + movdqa -80(%rdi),%xmm3 + pand 272(%r10),%xmm1 + por %xmm0,%xmm4 + pand 288(%r10),%xmm2 + por %xmm1,%xmm5 + pand 304(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa -64(%rdi),%xmm0 + movdqa -48(%rdi),%xmm1 + movdqa -32(%rdi),%xmm2 + pand 320(%r10),%xmm0 + movdqa -16(%rdi),%xmm3 + pand 336(%r10),%xmm1 + por %xmm0,%xmm4 + pand 352(%r10),%xmm2 + por %xmm1,%xmm5 + pand 368(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 0(%rdi),%xmm0 + movdqa 16(%rdi),%xmm1 + movdqa 32(%rdi),%xmm2 + pand 384(%r10),%xmm0 + movdqa 48(%rdi),%xmm3 + pand 400(%r10),%xmm1 + por %xmm0,%xmm4 + pand 416(%r10),%xmm2 + por %xmm1,%xmm5 + pand 432(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 64(%rdi),%xmm0 + movdqa 80(%rdi),%xmm1 + movdqa 96(%rdi),%xmm2 + pand 448(%r10),%xmm0 + movdqa 112(%rdi),%xmm3 + pand 464(%r10),%xmm1 + por %xmm0,%xmm4 + pand 480(%r10),%xmm2 + por %xmm1,%xmm5 + pand 496(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 + por %xmm4,%xmm0 + leaq 256(%rdi),%rdi +.byte 102,72,15,126,194 + + movq %rbp,(%rbx) + leaq 32(%rbx,%rax,1),%rbx + mulxq 0(%rsi),%r8,%r11 + xorq %rbp,%rbp + movq %rdx,%r9 + mulxq 8(%rsi),%r14,%r12 + adoxq -32(%rbx),%r8 + adcxq %r14,%r11 + mulxq 16(%rsi),%r15,%r13 + adoxq -24(%rbx),%r11 + adcxq %r15,%r12 + mulxq 24(%rsi),%rdx,%r14 + adoxq -16(%rbx),%r12 + adcxq %rdx,%r13 + leaq (%rcx,%rax,1),%rcx + leaq 32(%rsi),%rsi + adoxq -8(%rbx),%r13 + adcxq %rbp,%r14 + adoxq %rbp,%r14 + + movq %r8,%r15 + imulq 32+8(%rsp),%r8 + + movq %r8,%rdx + xorq %rbp,%rbp + movq %rdi,8+8(%rsp) + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%r15 + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + mulxq 16(%rcx),%rax,%r12 + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq 24+8(%rsp),%rdi + movq %r10,-32(%rbx) + adcxq %rax,%r12 + movq %r11,-24(%rbx) + adoxq %rbp,%r15 + movq %r12,-16(%rbx) + leaq 32(%rcx),%rcx + jmp L$mulx4x_inner + +.p2align 5 +L$mulx4x_inner: + mulxq 0(%rsi),%r10,%rax + adcxq %rbp,%r15 + adoxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq 0(%rbx),%r10 + adoxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq 8(%rbx),%r11 + adoxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 + movq %r8,%rdx + adcxq 16(%rbx),%r12 + adoxq %rax,%r13 + adcxq 24(%rbx),%r13 + adoxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + adcxq %rbp,%r14 + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + adoxq %r15,%r13 + movq %r11,-32(%rbx) + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + leaq 32(%rcx),%rcx + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + movq %r13,-16(%rbx) + + decq %rdi + jnz L$mulx4x_inner + + movq 0+8(%rsp),%rax + adcq %rbp,%r15 + subq 0(%rbx),%rdi + movq 8+8(%rsp),%rdi + movq 16+8(%rsp),%r10 + adcq %r15,%r14 + leaq (%rsi,%rax,1),%rsi + adcq %rbp,%rbp + movq %r14,-8(%rbx) + + cmpq %r10,%rdi + jb L$mulx4x_outer + + movq -8(%rcx),%r10 + movq %rbp,%r8 + movq (%rcx,%rax,1),%r12 + leaq (%rcx,%rax,1),%rbp + movq %rax,%rcx + leaq (%rbx,%rax,1),%rdi + xorl %eax,%eax + xorq %r15,%r15 + subq %r14,%r10 + adcq %r15,%r15 + orq %r15,%r8 + sarq $3+2,%rcx + subq %r8,%rax + movq 56+8(%rsp),%rdx + decq %r12 + movq 8(%rbp),%r13 + xorq %r8,%r8 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 + jmp L$sqrx4x_sub_entry + + + +.p2align 5 +bn_powerx5: + + movq %rsp,%rax + +L$powerx5_enter: + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$powerx5_prologue: + + shll $3,%r9d + leaq (%r9,%r9,2),%r10 + negq %r9 + movq (%r8),%r8 + + + + + + + + + leaq -320(%rsp,%r9,2),%r11 + movq %rsp,%rbp + subq %rdi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb L$pwrx_sp_alt + subq %r11,%rbp + leaq -320(%rbp,%r9,2),%rbp + jmp L$pwrx_sp_done + +.p2align 5 +L$pwrx_sp_alt: + leaq 4096-320(,%r9,2),%r10 + leaq -320(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +L$pwrx_sp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$pwrx_page_walk + jmp L$pwrx_page_walk_done + +L$pwrx_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$pwrx_page_walk +L$pwrx_page_walk_done: + + movq %r9,%r10 + negq %r9 + + + + + + + + + + + + + pxor %xmm0,%xmm0 +.byte 102,72,15,110,207 +.byte 102,72,15,110,209 +.byte 102,73,15,110,218 +.byte 102,72,15,110,226 + movq %r8,32(%rsp) + movq %rax,40(%rsp) + +L$powerx5_body: + + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + + movq %r10,%r9 + movq %rsi,%rdi +.byte 102,72,15,126,209 +.byte 102,72,15,126,226 + movq 40(%rsp),%rax + + call mulx4x_internal + + movq 40(%rsp),%rsi + + movq $1,%rax + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$powerx5_epilogue: + .byte 0xf3,0xc3 + + + +.globl _bn_sqrx8x_internal +.private_extern _bn_sqrx8x_internal + +.p2align 5 +_bn_sqrx8x_internal: +__bn_sqrx8x_internal: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + leaq 48+8(%rsp),%rdi + leaq (%rsi,%r9,1),%rbp + movq %r9,0+8(%rsp) + movq %rbp,8+8(%rsp) + jmp L$sqr8x_zero_start + +.p2align 5 +.byte 0x66,0x66,0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 +L$sqrx8x_zero: +.byte 0x3e + movdqa %xmm0,0(%rdi) + movdqa %xmm0,16(%rdi) + movdqa %xmm0,32(%rdi) + movdqa %xmm0,48(%rdi) +L$sqr8x_zero_start: + movdqa %xmm0,64(%rdi) + movdqa %xmm0,80(%rdi) + movdqa %xmm0,96(%rdi) + movdqa %xmm0,112(%rdi) + leaq 128(%rdi),%rdi + subq $64,%r9 + jnz L$sqrx8x_zero + + movq 0(%rsi),%rdx + + xorq %r10,%r10 + xorq %r11,%r11 + xorq %r12,%r12 + xorq %r13,%r13 + xorq %r14,%r14 + xorq %r15,%r15 + leaq 48+8(%rsp),%rdi + xorq %rbp,%rbp + jmp L$sqrx8x_outer_loop + +.p2align 5 +L$sqrx8x_outer_loop: + mulxq 8(%rsi),%r8,%rax + adcxq %r9,%r8 + adoxq %rax,%r10 + mulxq 16(%rsi),%r9,%rax + adcxq %r10,%r9 + adoxq %rax,%r11 +.byte 0xc4,0xe2,0xab,0xf6,0x86,0x18,0x00,0x00,0x00 + adcxq %r11,%r10 + adoxq %rax,%r12 +.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x20,0x00,0x00,0x00 + adcxq %r12,%r11 + adoxq %rax,%r13 + mulxq 40(%rsi),%r12,%rax + adcxq %r13,%r12 + adoxq %rax,%r14 + mulxq 48(%rsi),%r13,%rax + adcxq %r14,%r13 + adoxq %r15,%rax + mulxq 56(%rsi),%r14,%r15 + movq 8(%rsi),%rdx + adcxq %rax,%r14 + adoxq %rbp,%r15 + adcq 64(%rdi),%r15 + movq %r8,8(%rdi) + movq %r9,16(%rdi) + sbbq %rcx,%rcx + xorq %rbp,%rbp + + + mulxq 16(%rsi),%r8,%rbx + mulxq 24(%rsi),%r9,%rax + adcxq %r10,%r8 + adoxq %rbx,%r9 + mulxq 32(%rsi),%r10,%rbx + adcxq %r11,%r9 + adoxq %rax,%r10 +.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x28,0x00,0x00,0x00 + adcxq %r12,%r10 + adoxq %rbx,%r11 +.byte 0xc4,0xe2,0x9b,0xf6,0x9e,0x30,0x00,0x00,0x00 + adcxq %r13,%r11 + adoxq %r14,%r12 +.byte 0xc4,0x62,0x93,0xf6,0xb6,0x38,0x00,0x00,0x00 + movq 16(%rsi),%rdx + adcxq %rax,%r12 + adoxq %rbx,%r13 + adcxq %r15,%r13 + adoxq %rbp,%r14 + adcxq %rbp,%r14 + + movq %r8,24(%rdi) + movq %r9,32(%rdi) + + mulxq 24(%rsi),%r8,%rbx + mulxq 32(%rsi),%r9,%rax + adcxq %r10,%r8 + adoxq %rbx,%r9 + mulxq 40(%rsi),%r10,%rbx + adcxq %r11,%r9 + adoxq %rax,%r10 +.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x30,0x00,0x00,0x00 + adcxq %r12,%r10 + adoxq %r13,%r11 +.byte 0xc4,0x62,0x9b,0xf6,0xae,0x38,0x00,0x00,0x00 +.byte 0x3e + movq 24(%rsi),%rdx + adcxq %rbx,%r11 + adoxq %rax,%r12 + adcxq %r14,%r12 + movq %r8,40(%rdi) + movq %r9,48(%rdi) + mulxq 32(%rsi),%r8,%rax + adoxq %rbp,%r13 + adcxq %rbp,%r13 + + mulxq 40(%rsi),%r9,%rbx + adcxq %r10,%r8 + adoxq %rax,%r9 + mulxq 48(%rsi),%r10,%rax + adcxq %r11,%r9 + adoxq %r12,%r10 + mulxq 56(%rsi),%r11,%r12 + movq 32(%rsi),%rdx + movq 40(%rsi),%r14 + adcxq %rbx,%r10 + adoxq %rax,%r11 + movq 48(%rsi),%r15 + adcxq %r13,%r11 + adoxq %rbp,%r12 + adcxq %rbp,%r12 + + movq %r8,56(%rdi) + movq %r9,64(%rdi) + + mulxq %r14,%r9,%rax + movq 56(%rsi),%r8 + adcxq %r10,%r9 + mulxq %r15,%r10,%rbx + adoxq %rax,%r10 + adcxq %r11,%r10 + mulxq %r8,%r11,%rax + movq %r14,%rdx + adoxq %rbx,%r11 + adcxq %r12,%r11 + + adcxq %rbp,%rax + + mulxq %r15,%r14,%rbx + mulxq %r8,%r12,%r13 + movq %r15,%rdx + leaq 64(%rsi),%rsi + adcxq %r14,%r11 + adoxq %rbx,%r12 + adcxq %rax,%r12 + adoxq %rbp,%r13 + +.byte 0x67,0x67 + mulxq %r8,%r8,%r14 + adcxq %r8,%r13 + adcxq %rbp,%r14 + + cmpq 8+8(%rsp),%rsi + je L$sqrx8x_outer_break + + negq %rcx + movq $-8,%rcx + movq %rbp,%r15 + movq 64(%rdi),%r8 + adcxq 72(%rdi),%r9 + adcxq 80(%rdi),%r10 + adcxq 88(%rdi),%r11 + adcq 96(%rdi),%r12 + adcq 104(%rdi),%r13 + adcq 112(%rdi),%r14 + adcq 120(%rdi),%r15 + leaq (%rsi),%rbp + leaq 128(%rdi),%rdi + sbbq %rax,%rax + + movq -64(%rsi),%rdx + movq %rax,16+8(%rsp) + movq %rdi,24+8(%rsp) + + + xorl %eax,%eax + jmp L$sqrx8x_loop + +.p2align 5 +L$sqrx8x_loop: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rax,%rbx + adoxq %r9,%r8 + + mulxq 8(%rbp),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rax,%r10 + adcxq %rax,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rbp),%rax,%r14 + movq %rbx,(%rdi,%rcx,8) + movl $0,%ebx + adcxq %rax,%r13 + adoxq %r15,%r14 + +.byte 0xc4,0x62,0xfb,0xf6,0xbd,0x38,0x00,0x00,0x00 + movq 8(%rsi,%rcx,8),%rdx + adcxq %rax,%r14 + adoxq %rbx,%r15 + adcxq %rbx,%r15 + +.byte 0x67 + incq %rcx + jnz L$sqrx8x_loop + + leaq 64(%rbp),%rbp + movq $-8,%rcx + cmpq 8+8(%rsp),%rbp + je L$sqrx8x_break + + subq 16+8(%rsp),%rbx +.byte 0x66 + movq -64(%rsi),%rdx + adcxq 0(%rdi),%r8 + adcxq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + leaq 64(%rdi),%rdi +.byte 0x67 + sbbq %rax,%rax + xorl %ebx,%ebx + movq %rax,16+8(%rsp) + jmp L$sqrx8x_loop + +.p2align 5 +L$sqrx8x_break: + xorq %rbp,%rbp + subq 16+8(%rsp),%rbx + adcxq %rbp,%r8 + movq 24+8(%rsp),%rcx + adcxq %rbp,%r9 + movq 0(%rsi),%rdx + adcq $0,%r10 + movq %r8,0(%rdi) + adcq $0,%r11 + adcq $0,%r12 + adcq $0,%r13 + adcq $0,%r14 + adcq $0,%r15 + cmpq %rcx,%rdi + je L$sqrx8x_outer_loop + + movq %r9,8(%rdi) + movq 8(%rcx),%r9 + movq %r10,16(%rdi) + movq 16(%rcx),%r10 + movq %r11,24(%rdi) + movq 24(%rcx),%r11 + movq %r12,32(%rdi) + movq 32(%rcx),%r12 + movq %r13,40(%rdi) + movq 40(%rcx),%r13 + movq %r14,48(%rdi) + movq 48(%rcx),%r14 + movq %r15,56(%rdi) + movq 56(%rcx),%r15 + movq %rcx,%rdi + jmp L$sqrx8x_outer_loop + +.p2align 5 +L$sqrx8x_outer_break: + movq %r9,72(%rdi) +.byte 102,72,15,126,217 + movq %r10,80(%rdi) + movq %r11,88(%rdi) + movq %r12,96(%rdi) + movq %r13,104(%rdi) + movq %r14,112(%rdi) + leaq 48+8(%rsp),%rdi + movq (%rsi,%rcx,1),%rdx + + movq 8(%rdi),%r11 + xorq %r10,%r10 + movq 0+8(%rsp),%r9 + adoxq %r11,%r11 + movq 16(%rdi),%r12 + movq 24(%rdi),%r13 + + +.p2align 5 +L$sqrx4x_shift_n_add: + mulxq %rdx,%rax,%rbx + adoxq %r12,%r12 + adcxq %r10,%rax +.byte 0x48,0x8b,0x94,0x0e,0x08,0x00,0x00,0x00 +.byte 0x4c,0x8b,0x97,0x20,0x00,0x00,0x00 + adoxq %r13,%r13 + adcxq %r11,%rbx + movq 40(%rdi),%r11 + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + + mulxq %rdx,%rax,%rbx + adoxq %r10,%r10 + adcxq %r12,%rax + movq 16(%rsi,%rcx,1),%rdx + movq 48(%rdi),%r12 + adoxq %r11,%r11 + adcxq %r13,%rbx + movq 56(%rdi),%r13 + movq %rax,16(%rdi) + movq %rbx,24(%rdi) + + mulxq %rdx,%rax,%rbx + adoxq %r12,%r12 + adcxq %r10,%rax + movq 24(%rsi,%rcx,1),%rdx + leaq 32(%rcx),%rcx + movq 64(%rdi),%r10 + adoxq %r13,%r13 + adcxq %r11,%rbx + movq 72(%rdi),%r11 + movq %rax,32(%rdi) + movq %rbx,40(%rdi) + + mulxq %rdx,%rax,%rbx + adoxq %r10,%r10 + adcxq %r12,%rax + jrcxz L$sqrx4x_shift_n_add_break +.byte 0x48,0x8b,0x94,0x0e,0x00,0x00,0x00,0x00 + adoxq %r11,%r11 + adcxq %r13,%rbx + movq 80(%rdi),%r12 + movq 88(%rdi),%r13 + movq %rax,48(%rdi) + movq %rbx,56(%rdi) + leaq 64(%rdi),%rdi + nop + jmp L$sqrx4x_shift_n_add + +.p2align 5 +L$sqrx4x_shift_n_add_break: + adcxq %r13,%rbx + movq %rax,48(%rdi) + movq %rbx,56(%rdi) + leaq 64(%rdi),%rdi +.byte 102,72,15,126,213 +__bn_sqrx8x_reduction: + xorl %eax,%eax + movq 32+8(%rsp),%rbx + movq 48+8(%rsp),%rdx + leaq -64(%rbp,%r9,1),%rcx + + movq %rcx,0+8(%rsp) + movq %rdi,8+8(%rsp) + + leaq 48+8(%rsp),%rdi + jmp L$sqrx8x_reduction_loop + +.p2align 5 +L$sqrx8x_reduction_loop: + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + movq 32(%rdi),%r12 + movq %rdx,%r8 + imulq %rbx,%rdx + movq 40(%rdi),%r13 + movq 48(%rdi),%r14 + movq 56(%rdi),%r15 + movq %rax,24+8(%rsp) + + leaq 64(%rdi),%rdi + xorq %rsi,%rsi + movq $-8,%rcx + jmp L$sqrx8x_reduce + +.p2align 5 +L$sqrx8x_reduce: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rbx,%rax + adoxq %r9,%r8 + + mulxq 8(%rbp),%rbx,%r9 + adcxq %rbx,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rbx,%r10 + adcxq %rbx,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rbx,%r11 + adcxq %rbx,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x00 + movq %rdx,%rax + movq %r8,%rdx + adcxq %rbx,%r11 + adoxq %r13,%r12 + + mulxq 32+8(%rsp),%rbx,%rdx + movq %rax,%rdx + movq %rax,64+48+8(%rsp,%rcx,8) + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rbp),%rax,%r14 + adcxq %rax,%r13 + adoxq %r15,%r14 + + mulxq 56(%rbp),%rax,%r15 + movq %rbx,%rdx + adcxq %rax,%r14 + adoxq %rsi,%r15 + adcxq %rsi,%r15 + +.byte 0x67,0x67,0x67 + incq %rcx + jnz L$sqrx8x_reduce + + movq %rsi,%rax + cmpq 0+8(%rsp),%rbp + jae L$sqrx8x_no_tail + + movq 48+8(%rsp),%rdx + addq 0(%rdi),%r8 + leaq 64(%rbp),%rbp + movq $-8,%rcx + adcxq 8(%rdi),%r9 + adcxq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + leaq 64(%rdi),%rdi + sbbq %rax,%rax + + xorq %rsi,%rsi + movq %rax,16+8(%rsp) + jmp L$sqrx8x_tail + +.p2align 5 +L$sqrx8x_tail: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rax,%rbx + adoxq %r9,%r8 + + mulxq 8(%rbp),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rax,%r10 + adcxq %rax,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rbp),%rax,%r14 + adcxq %rax,%r13 + adoxq %r15,%r14 + + mulxq 56(%rbp),%rax,%r15 + movq 72+48+8(%rsp,%rcx,8),%rdx + adcxq %rax,%r14 + adoxq %rsi,%r15 + movq %rbx,(%rdi,%rcx,8) + movq %r8,%rbx + adcxq %rsi,%r15 + + incq %rcx + jnz L$sqrx8x_tail + + cmpq 0+8(%rsp),%rbp + jae L$sqrx8x_tail_done + + subq 16+8(%rsp),%rsi + movq 48+8(%rsp),%rdx + leaq 64(%rbp),%rbp + adcq 0(%rdi),%r8 + adcq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + leaq 64(%rdi),%rdi + sbbq %rax,%rax + subq $8,%rcx + + xorq %rsi,%rsi + movq %rax,16+8(%rsp) + jmp L$sqrx8x_tail + +.p2align 5 +L$sqrx8x_tail_done: + xorq %rax,%rax + addq 24+8(%rsp),%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + adcq $0,%r12 + adcq $0,%r13 + adcq $0,%r14 + adcq $0,%r15 + adcq $0,%rax + + subq 16+8(%rsp),%rsi +L$sqrx8x_no_tail: + adcq 0(%rdi),%r8 +.byte 102,72,15,126,217 + adcq 8(%rdi),%r9 + movq 56(%rbp),%rsi +.byte 102,72,15,126,213 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + adcq $0,%rax + + movq 32+8(%rsp),%rbx + movq 64(%rdi,%rcx,1),%rdx + + movq %r8,0(%rdi) + leaq 64(%rdi),%r8 + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + leaq 64(%rdi,%rcx,1),%rdi + cmpq 8+8(%rsp),%r8 + jb L$sqrx8x_reduction_loop + .byte 0xf3,0xc3 + + +.p2align 5 +__bn_postx4x_internal: + + movq 0(%rbp),%r12 + movq %rcx,%r10 + movq %rcx,%r9 + negq %rax + sarq $3+2,%rcx + +.byte 102,72,15,126,202 +.byte 102,72,15,126,206 + decq %r12 + movq 8(%rbp),%r13 + xorq %r8,%r8 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 + jmp L$sqrx4x_sub_entry + +.p2align 4 +L$sqrx4x_sub: + movq 0(%rbp),%r12 + movq 8(%rbp),%r13 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 +L$sqrx4x_sub_entry: + andnq %rax,%r12,%r12 + leaq 32(%rbp),%rbp + andnq %rax,%r13,%r13 + andnq %rax,%r14,%r14 + andnq %rax,%r15,%r15 + + negq %r8 + adcq 0(%rdi),%r12 + adcq 8(%rdi),%r13 + adcq 16(%rdi),%r14 + adcq 24(%rdi),%r15 + movq %r12,0(%rdx) + leaq 32(%rdi),%rdi + movq %r13,8(%rdx) + sbbq %r8,%r8 + movq %r14,16(%rdx) + movq %r15,24(%rdx) + leaq 32(%rdx),%rdx + + incq %rcx + jnz L$sqrx4x_sub + + negq %r9 + + .byte 0xf3,0xc3 + + +.globl _bn_get_bits5 + +.p2align 4 +_bn_get_bits5: + + leaq 0(%rdi),%r10 + leaq 1(%rdi),%r11 + movl %esi,%ecx + shrl $4,%esi + andl $15,%ecx + leal -8(%rcx),%eax + cmpl $11,%ecx + cmovaq %r11,%r10 + cmoval %eax,%ecx + movzwl (%r10,%rsi,2),%eax + shrl %cl,%eax + andl $31,%eax + .byte 0xf3,0xc3 + + + +.globl _bn_scatter5 + +.p2align 4 +_bn_scatter5: + + cmpl $0,%esi + jz L$scatter_epilogue + leaq (%rdx,%rcx,8),%rdx +L$scatter: + movq (%rdi),%rax + leaq 8(%rdi),%rdi + movq %rax,(%rdx) + leaq 256(%rdx),%rdx + subl $1,%esi + jnz L$scatter +L$scatter_epilogue: + .byte 0xf3,0xc3 + + + +.globl _bn_gather5 + +.p2align 5 +_bn_gather5: +L$SEH_begin_bn_gather5: + + +.byte 0x4c,0x8d,0x14,0x24 +.byte 0x48,0x81,0xec,0x08,0x01,0x00,0x00 + leaq L$inc(%rip),%rax + andq $-16,%rsp + + movd %ecx,%xmm5 + movdqa 0(%rax),%xmm0 + movdqa 16(%rax),%xmm1 + leaq 128(%rdx),%r11 + leaq 128(%rsp),%rax + + pshufd $0,%xmm5,%xmm5 + movdqa %xmm1,%xmm4 + movdqa %xmm1,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm4,%xmm3 + + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,-128(%rax) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,-112(%rax) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,-96(%rax) + movdqa %xmm4,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,-80(%rax) + movdqa %xmm4,%xmm3 + + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,-64(%rax) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,-48(%rax) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,-32(%rax) + movdqa %xmm4,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,-16(%rax) + movdqa %xmm4,%xmm3 + + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,0(%rax) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,16(%rax) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,32(%rax) + movdqa %xmm4,%xmm2 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,48(%rax) + movdqa %xmm4,%xmm3 + + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,64(%rax) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,80(%rax) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,96(%rax) + movdqa %xmm4,%xmm2 + movdqa %xmm3,112(%rax) + jmp L$gather + +.p2align 5 +L$gather: + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + movdqa -128(%r11),%xmm0 + movdqa -112(%r11),%xmm1 + movdqa -96(%r11),%xmm2 + pand -128(%rax),%xmm0 + movdqa -80(%r11),%xmm3 + pand -112(%rax),%xmm1 + por %xmm0,%xmm4 + pand -96(%rax),%xmm2 + por %xmm1,%xmm5 + pand -80(%rax),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa -64(%r11),%xmm0 + movdqa -48(%r11),%xmm1 + movdqa -32(%r11),%xmm2 + pand -64(%rax),%xmm0 + movdqa -16(%r11),%xmm3 + pand -48(%rax),%xmm1 + por %xmm0,%xmm4 + pand -32(%rax),%xmm2 + por %xmm1,%xmm5 + pand -16(%rax),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 0(%r11),%xmm0 + movdqa 16(%r11),%xmm1 + movdqa 32(%r11),%xmm2 + pand 0(%rax),%xmm0 + movdqa 48(%r11),%xmm3 + pand 16(%rax),%xmm1 + por %xmm0,%xmm4 + pand 32(%rax),%xmm2 + por %xmm1,%xmm5 + pand 48(%rax),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 64(%r11),%xmm0 + movdqa 80(%r11),%xmm1 + movdqa 96(%r11),%xmm2 + pand 64(%rax),%xmm0 + movdqa 112(%r11),%xmm3 + pand 80(%rax),%xmm1 + por %xmm0,%xmm4 + pand 96(%rax),%xmm2 + por %xmm1,%xmm5 + pand 112(%rax),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + por %xmm5,%xmm4 + leaq 256(%r11),%r11 + pshufd $0x4e,%xmm4,%xmm0 + por %xmm4,%xmm0 + movq %xmm0,(%rdi) + leaq 8(%rdi),%rdi + subl $1,%esi + jnz L$gather + + leaq (%r10),%rsp + .byte 0xf3,0xc3 +L$SEH_end_bn_gather5: + + +.p2align 6 +L$inc: +.long 0,0, 1,1 +.long 2,2, 2,2 +.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115,99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/camellia/cmll-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/camellia/cmll-x86_64.s new file mode 100644 index 0000000..d815175 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/camellia/cmll-x86_64.s @@ -0,0 +1,1903 @@ +.text + + +.globl _Camellia_EncryptBlock + +.p2align 4 +_Camellia_EncryptBlock: + + movl $128,%eax + subl %edi,%eax + movl $3,%edi + adcl $0,%edi + jmp L$enc_rounds + + + +.globl _Camellia_EncryptBlock_Rounds + +.p2align 4 +L$enc_rounds: +_Camellia_EncryptBlock_Rounds: + + pushq %rbx + + pushq %rbp + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$enc_prologue: + + + movq %rcx,%r13 + movq %rdx,%r14 + + shll $6,%edi + leaq L$Camellia_SBOX(%rip),%rbp + leaq (%r14,%rdi,1),%r15 + + movl 0(%rsi),%r8d + movl 4(%rsi),%r9d + movl 8(%rsi),%r10d + bswapl %r8d + movl 12(%rsi),%r11d + bswapl %r9d + bswapl %r10d + bswapl %r11d + + call _x86_64_Camellia_encrypt + + bswapl %r8d + bswapl %r9d + bswapl %r10d + movl %r8d,0(%r13) + bswapl %r11d + movl %r9d,4(%r13) + movl %r10d,8(%r13) + movl %r11d,12(%r13) + + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%rbp + + movq 32(%rsp),%rbx + + leaq 40(%rsp),%rsp + +L$enc_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 4 +_x86_64_Camellia_encrypt: + + xorl 0(%r14),%r9d + xorl 4(%r14),%r8d + xorl 8(%r14),%r11d + xorl 12(%r14),%r10d +.p2align 4 +L$eloop: + movl 16(%r14),%ebx + movl 20(%r14),%eax + + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 24(%r14),%ebx + movl 28(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 32(%r14),%ebx + movl 36(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 40(%r14),%ebx + movl 44(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 48(%r14),%ebx + movl 52(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 56(%r14),%ebx + movl 60(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 64(%r14),%ebx + movl 68(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + leaq 64(%r14),%r14 + cmpq %r15,%r14 + movl 8(%r14),%edx + movl 12(%r14),%ecx + je L$edone + + andl %r8d,%eax + orl %r11d,%edx + roll $1,%eax + xorl %edx,%r10d + xorl %eax,%r9d + andl %r10d,%ecx + orl %r9d,%ebx + roll $1,%ecx + xorl %ebx,%r8d + xorl %ecx,%r11d + jmp L$eloop + +.p2align 4 +L$edone: + xorl %r10d,%eax + xorl %r11d,%ebx + xorl %r8d,%ecx + xorl %r9d,%edx + + movl %eax,%r8d + movl %ebx,%r9d + movl %ecx,%r10d + movl %edx,%r11d + +.byte 0xf3,0xc3 + + + + +.globl _Camellia_DecryptBlock + +.p2align 4 +_Camellia_DecryptBlock: + + movl $128,%eax + subl %edi,%eax + movl $3,%edi + adcl $0,%edi + jmp L$dec_rounds + + + +.globl _Camellia_DecryptBlock_Rounds + +.p2align 4 +L$dec_rounds: +_Camellia_DecryptBlock_Rounds: + + pushq %rbx + + pushq %rbp + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$dec_prologue: + + + movq %rcx,%r13 + movq %rdx,%r15 + + shll $6,%edi + leaq L$Camellia_SBOX(%rip),%rbp + leaq (%r15,%rdi,1),%r14 + + movl 0(%rsi),%r8d + movl 4(%rsi),%r9d + movl 8(%rsi),%r10d + bswapl %r8d + movl 12(%rsi),%r11d + bswapl %r9d + bswapl %r10d + bswapl %r11d + + call _x86_64_Camellia_decrypt + + bswapl %r8d + bswapl %r9d + bswapl %r10d + movl %r8d,0(%r13) + bswapl %r11d + movl %r9d,4(%r13) + movl %r10d,8(%r13) + movl %r11d,12(%r13) + + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%rbp + + movq 32(%rsp),%rbx + + leaq 40(%rsp),%rsp + +L$dec_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 4 +_x86_64_Camellia_decrypt: + + xorl 0(%r14),%r9d + xorl 4(%r14),%r8d + xorl 8(%r14),%r11d + xorl 12(%r14),%r10d +.p2align 4 +L$dloop: + movl -8(%r14),%ebx + movl -4(%r14),%eax + + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl -16(%r14),%ebx + movl -12(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl -24(%r14),%ebx + movl -20(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl -32(%r14),%ebx + movl -28(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl -40(%r14),%ebx + movl -36(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl -48(%r14),%ebx + movl -44(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl -56(%r14),%ebx + movl -52(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + leaq -64(%r14),%r14 + cmpq %r15,%r14 + movl 0(%r14),%edx + movl 4(%r14),%ecx + je L$ddone + + andl %r8d,%eax + orl %r11d,%edx + roll $1,%eax + xorl %edx,%r10d + xorl %eax,%r9d + andl %r10d,%ecx + orl %r9d,%ebx + roll $1,%ecx + xorl %ebx,%r8d + xorl %ecx,%r11d + + jmp L$dloop + +.p2align 4 +L$ddone: + xorl %r10d,%ecx + xorl %r11d,%edx + xorl %r8d,%eax + xorl %r9d,%ebx + + movl %ecx,%r8d + movl %edx,%r9d + movl %eax,%r10d + movl %ebx,%r11d + +.byte 0xf3,0xc3 + + +.globl _Camellia_Ekeygen + +.p2align 4 +_Camellia_Ekeygen: + + pushq %rbx + + pushq %rbp + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$key_prologue: + + movl %edi,%r15d + movq %rdx,%r13 + + movl 0(%rsi),%r8d + movl 4(%rsi),%r9d + movl 8(%rsi),%r10d + movl 12(%rsi),%r11d + + bswapl %r8d + bswapl %r9d + bswapl %r10d + bswapl %r11d + movl %r9d,0(%r13) + movl %r8d,4(%r13) + movl %r11d,8(%r13) + movl %r10d,12(%r13) + cmpq $128,%r15 + je L$1st128 + + movl 16(%rsi),%r8d + movl 20(%rsi),%r9d + cmpq $192,%r15 + je L$1st192 + movl 24(%rsi),%r10d + movl 28(%rsi),%r11d + jmp L$1st256 +L$1st192: + movl %r8d,%r10d + movl %r9d,%r11d + notl %r10d + notl %r11d +L$1st256: + bswapl %r8d + bswapl %r9d + bswapl %r10d + bswapl %r11d + movl %r9d,32(%r13) + movl %r8d,36(%r13) + movl %r11d,40(%r13) + movl %r10d,44(%r13) + xorl 0(%r13),%r9d + xorl 4(%r13),%r8d + xorl 8(%r13),%r11d + xorl 12(%r13),%r10d + +L$1st128: + leaq L$Camellia_SIGMA(%rip),%r14 + leaq L$Camellia_SBOX(%rip),%rbp + + movl 0(%r14),%ebx + movl 4(%r14),%eax + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 8(%r14),%ebx + movl 12(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 16(%r14),%ebx + movl 20(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + xorl 0(%r13),%r9d + xorl 4(%r13),%r8d + xorl 8(%r13),%r11d + xorl 12(%r13),%r10d + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 24(%r14),%ebx + movl 28(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 32(%r14),%ebx + movl 36(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + cmpq $128,%r15 + jne L$2nd256 + + leaq 128(%r13),%r13 + shlq $32,%r8 + shlq $32,%r10 + orq %r9,%r8 + orq %r11,%r10 + movq -128(%r13),%rax + movq -120(%r13),%rbx + movq %r8,-112(%r13) + movq %r10,-104(%r13) + movq %rax,%r11 + shlq $15,%rax + movq %rbx,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%rax + shlq $15,%rbx + orq %r11,%rbx + movq %rax,-96(%r13) + movq %rbx,-88(%r13) + movq %r8,%r11 + shlq $15,%r8 + movq %r10,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%r8 + shlq $15,%r10 + orq %r11,%r10 + movq %r8,-80(%r13) + movq %r10,-72(%r13) + movq %r8,%r11 + shlq $15,%r8 + movq %r10,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%r8 + shlq $15,%r10 + orq %r11,%r10 + movq %r8,-64(%r13) + movq %r10,-56(%r13) + movq %rax,%r11 + shlq $30,%rax + movq %rbx,%r9 + shrq $34,%r9 + shrq $34,%r11 + orq %r9,%rax + shlq $30,%rbx + orq %r11,%rbx + movq %rax,-48(%r13) + movq %rbx,-40(%r13) + movq %r8,%r11 + shlq $15,%r8 + movq %r10,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%r8 + shlq $15,%r10 + orq %r11,%r10 + movq %r8,-32(%r13) + movq %rax,%r11 + shlq $15,%rax + movq %rbx,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%rax + shlq $15,%rbx + orq %r11,%rbx + movq %rbx,-24(%r13) + movq %r8,%r11 + shlq $15,%r8 + movq %r10,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%r8 + shlq $15,%r10 + orq %r11,%r10 + movq %r8,-16(%r13) + movq %r10,-8(%r13) + movq %rax,%r11 + shlq $17,%rax + movq %rbx,%r9 + shrq $47,%r9 + shrq $47,%r11 + orq %r9,%rax + shlq $17,%rbx + orq %r11,%rbx + movq %rax,0(%r13) + movq %rbx,8(%r13) + movq %rax,%r11 + shlq $17,%rax + movq %rbx,%r9 + shrq $47,%r9 + shrq $47,%r11 + orq %r9,%rax + shlq $17,%rbx + orq %r11,%rbx + movq %rax,16(%r13) + movq %rbx,24(%r13) + movq %r8,%r11 + shlq $34,%r8 + movq %r10,%r9 + shrq $30,%r9 + shrq $30,%r11 + orq %r9,%r8 + shlq $34,%r10 + orq %r11,%r10 + movq %r8,32(%r13) + movq %r10,40(%r13) + movq %rax,%r11 + shlq $17,%rax + movq %rbx,%r9 + shrq $47,%r9 + shrq $47,%r11 + orq %r9,%rax + shlq $17,%rbx + orq %r11,%rbx + movq %rax,48(%r13) + movq %rbx,56(%r13) + movq %r8,%r11 + shlq $17,%r8 + movq %r10,%r9 + shrq $47,%r9 + shrq $47,%r11 + orq %r9,%r8 + shlq $17,%r10 + orq %r11,%r10 + movq %r8,64(%r13) + movq %r10,72(%r13) + movl $3,%eax + jmp L$done +.p2align 4 +L$2nd256: + movl %r9d,48(%r13) + movl %r8d,52(%r13) + movl %r11d,56(%r13) + movl %r10d,60(%r13) + xorl 32(%r13),%r9d + xorl 36(%r13),%r8d + xorl 40(%r13),%r11d + xorl 44(%r13),%r10d + xorl %r8d,%eax + xorl %r9d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 40(%r14),%ebx + movl 44(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r10d + xorl %ecx,%r11d + xorl %edx,%r11d + xorl %r10d,%eax + xorl %r11d,%ebx + movzbl %ah,%esi + movzbl %bl,%edi + movl 2052(%rbp,%rsi,8),%edx + movl 0(%rbp,%rdi,8),%ecx + movzbl %al,%esi + shrl $16,%eax + movzbl %bh,%edi + xorl 4(%rbp,%rsi,8),%edx + shrl $16,%ebx + xorl 4(%rbp,%rdi,8),%ecx + movzbl %ah,%esi + movzbl %bl,%edi + xorl 0(%rbp,%rsi,8),%edx + xorl 2052(%rbp,%rdi,8),%ecx + movzbl %al,%esi + movzbl %bh,%edi + xorl 2048(%rbp,%rsi,8),%edx + xorl 2048(%rbp,%rdi,8),%ecx + movl 48(%r14),%ebx + movl 52(%r14),%eax + xorl %edx,%ecx + rorl $8,%edx + xorl %ecx,%r8d + xorl %ecx,%r9d + xorl %edx,%r9d + movq 0(%r13),%rax + movq 8(%r13),%rbx + movq 32(%r13),%rcx + movq 40(%r13),%rdx + movq 48(%r13),%r14 + movq 56(%r13),%r15 + leaq 128(%r13),%r13 + shlq $32,%r8 + shlq $32,%r10 + orq %r9,%r8 + orq %r11,%r10 + movq %r8,-112(%r13) + movq %r10,-104(%r13) + movq %rcx,%r11 + shlq $15,%rcx + movq %rdx,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%rcx + shlq $15,%rdx + orq %r11,%rdx + movq %rcx,-96(%r13) + movq %rdx,-88(%r13) + movq %r14,%r11 + shlq $15,%r14 + movq %r15,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%r14 + shlq $15,%r15 + orq %r11,%r15 + movq %r14,-80(%r13) + movq %r15,-72(%r13) + movq %rcx,%r11 + shlq $15,%rcx + movq %rdx,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%rcx + shlq $15,%rdx + orq %r11,%rdx + movq %rcx,-64(%r13) + movq %rdx,-56(%r13) + movq %r8,%r11 + shlq $30,%r8 + movq %r10,%r9 + shrq $34,%r9 + shrq $34,%r11 + orq %r9,%r8 + shlq $30,%r10 + orq %r11,%r10 + movq %r8,-48(%r13) + movq %r10,-40(%r13) + movq %rax,%r11 + shlq $45,%rax + movq %rbx,%r9 + shrq $19,%r9 + shrq $19,%r11 + orq %r9,%rax + shlq $45,%rbx + orq %r11,%rbx + movq %rax,-32(%r13) + movq %rbx,-24(%r13) + movq %r14,%r11 + shlq $30,%r14 + movq %r15,%r9 + shrq $34,%r9 + shrq $34,%r11 + orq %r9,%r14 + shlq $30,%r15 + orq %r11,%r15 + movq %r14,-16(%r13) + movq %r15,-8(%r13) + movq %rax,%r11 + shlq $15,%rax + movq %rbx,%r9 + shrq $49,%r9 + shrq $49,%r11 + orq %r9,%rax + shlq $15,%rbx + orq %r11,%rbx + movq %rax,0(%r13) + movq %rbx,8(%r13) + movq %rcx,%r11 + shlq $30,%rcx + movq %rdx,%r9 + shrq $34,%r9 + shrq $34,%r11 + orq %r9,%rcx + shlq $30,%rdx + orq %r11,%rdx + movq %rcx,16(%r13) + movq %rdx,24(%r13) + movq %r8,%r11 + shlq $30,%r8 + movq %r10,%r9 + shrq $34,%r9 + shrq $34,%r11 + orq %r9,%r8 + shlq $30,%r10 + orq %r11,%r10 + movq %r8,32(%r13) + movq %r10,40(%r13) + movq %rax,%r11 + shlq $17,%rax + movq %rbx,%r9 + shrq $47,%r9 + shrq $47,%r11 + orq %r9,%rax + shlq $17,%rbx + orq %r11,%rbx + movq %rax,48(%r13) + movq %rbx,56(%r13) + movq %r14,%r11 + shlq $32,%r14 + movq %r15,%r9 + shrq $32,%r9 + shrq $32,%r11 + orq %r9,%r14 + shlq $32,%r15 + orq %r11,%r15 + movq %r14,64(%r13) + movq %r15,72(%r13) + movq %rcx,%r11 + shlq $34,%rcx + movq %rdx,%r9 + shrq $30,%r9 + shrq $30,%r11 + orq %r9,%rcx + shlq $34,%rdx + orq %r11,%rdx + movq %rcx,80(%r13) + movq %rdx,88(%r13) + movq %r14,%r11 + shlq $17,%r14 + movq %r15,%r9 + shrq $47,%r9 + shrq $47,%r11 + orq %r9,%r14 + shlq $17,%r15 + orq %r11,%r15 + movq %r14,96(%r13) + movq %r15,104(%r13) + movq %rax,%r11 + shlq $34,%rax + movq %rbx,%r9 + shrq $30,%r9 + shrq $30,%r11 + orq %r9,%rax + shlq $34,%rbx + orq %r11,%rbx + movq %rax,112(%r13) + movq %rbx,120(%r13) + movq %r8,%r11 + shlq $51,%r8 + movq %r10,%r9 + shrq $13,%r9 + shrq $13,%r11 + orq %r9,%r8 + shlq $51,%r10 + orq %r11,%r10 + movq %r8,128(%r13) + movq %r10,136(%r13) + movl $4,%eax +L$done: + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%rbp + + movq 32(%rsp),%rbx + + leaq 40(%rsp),%rsp + +L$key_epilogue: + .byte 0xf3,0xc3 + + +.p2align 6 +L$Camellia_SIGMA: +.long 0x3bcc908b, 0xa09e667f, 0x4caa73b2, 0xb67ae858 +.long 0xe94f82be, 0xc6ef372f, 0xf1d36f1c, 0x54ff53a5 +.long 0xde682d1d, 0x10e527fa, 0xb3e6c1fd, 0xb05688c2 +.long 0, 0, 0, 0 +L$Camellia_SBOX: +.long 0x70707000,0x70700070 +.long 0x82828200,0x2c2c002c +.long 0x2c2c2c00,0xb3b300b3 +.long 0xececec00,0xc0c000c0 +.long 0xb3b3b300,0xe4e400e4 +.long 0x27272700,0x57570057 +.long 0xc0c0c000,0xeaea00ea +.long 0xe5e5e500,0xaeae00ae +.long 0xe4e4e400,0x23230023 +.long 0x85858500,0x6b6b006b +.long 0x57575700,0x45450045 +.long 0x35353500,0xa5a500a5 +.long 0xeaeaea00,0xeded00ed +.long 0x0c0c0c00,0x4f4f004f +.long 0xaeaeae00,0x1d1d001d +.long 0x41414100,0x92920092 +.long 0x23232300,0x86860086 +.long 0xefefef00,0xafaf00af +.long 0x6b6b6b00,0x7c7c007c +.long 0x93939300,0x1f1f001f +.long 0x45454500,0x3e3e003e +.long 0x19191900,0xdcdc00dc +.long 0xa5a5a500,0x5e5e005e +.long 0x21212100,0x0b0b000b +.long 0xededed00,0xa6a600a6 +.long 0x0e0e0e00,0x39390039 +.long 0x4f4f4f00,0xd5d500d5 +.long 0x4e4e4e00,0x5d5d005d +.long 0x1d1d1d00,0xd9d900d9 +.long 0x65656500,0x5a5a005a +.long 0x92929200,0x51510051 +.long 0xbdbdbd00,0x6c6c006c +.long 0x86868600,0x8b8b008b +.long 0xb8b8b800,0x9a9a009a +.long 0xafafaf00,0xfbfb00fb +.long 0x8f8f8f00,0xb0b000b0 +.long 0x7c7c7c00,0x74740074 +.long 0xebebeb00,0x2b2b002b +.long 0x1f1f1f00,0xf0f000f0 +.long 0xcecece00,0x84840084 +.long 0x3e3e3e00,0xdfdf00df +.long 0x30303000,0xcbcb00cb +.long 0xdcdcdc00,0x34340034 +.long 0x5f5f5f00,0x76760076 +.long 0x5e5e5e00,0x6d6d006d +.long 0xc5c5c500,0xa9a900a9 +.long 0x0b0b0b00,0xd1d100d1 +.long 0x1a1a1a00,0x04040004 +.long 0xa6a6a600,0x14140014 +.long 0xe1e1e100,0x3a3a003a +.long 0x39393900,0xdede00de +.long 0xcacaca00,0x11110011 +.long 0xd5d5d500,0x32320032 +.long 0x47474700,0x9c9c009c +.long 0x5d5d5d00,0x53530053 +.long 0x3d3d3d00,0xf2f200f2 +.long 0xd9d9d900,0xfefe00fe +.long 0x01010100,0xcfcf00cf +.long 0x5a5a5a00,0xc3c300c3 +.long 0xd6d6d600,0x7a7a007a +.long 0x51515100,0x24240024 +.long 0x56565600,0xe8e800e8 +.long 0x6c6c6c00,0x60600060 +.long 0x4d4d4d00,0x69690069 +.long 0x8b8b8b00,0xaaaa00aa +.long 0x0d0d0d00,0xa0a000a0 +.long 0x9a9a9a00,0xa1a100a1 +.long 0x66666600,0x62620062 +.long 0xfbfbfb00,0x54540054 +.long 0xcccccc00,0x1e1e001e +.long 0xb0b0b000,0xe0e000e0 +.long 0x2d2d2d00,0x64640064 +.long 0x74747400,0x10100010 +.long 0x12121200,0x00000000 +.long 0x2b2b2b00,0xa3a300a3 +.long 0x20202000,0x75750075 +.long 0xf0f0f000,0x8a8a008a +.long 0xb1b1b100,0xe6e600e6 +.long 0x84848400,0x09090009 +.long 0x99999900,0xdddd00dd +.long 0xdfdfdf00,0x87870087 +.long 0x4c4c4c00,0x83830083 +.long 0xcbcbcb00,0xcdcd00cd +.long 0xc2c2c200,0x90900090 +.long 0x34343400,0x73730073 +.long 0x7e7e7e00,0xf6f600f6 +.long 0x76767600,0x9d9d009d +.long 0x05050500,0xbfbf00bf +.long 0x6d6d6d00,0x52520052 +.long 0xb7b7b700,0xd8d800d8 +.long 0xa9a9a900,0xc8c800c8 +.long 0x31313100,0xc6c600c6 +.long 0xd1d1d100,0x81810081 +.long 0x17171700,0x6f6f006f +.long 0x04040400,0x13130013 +.long 0xd7d7d700,0x63630063 +.long 0x14141400,0xe9e900e9 +.long 0x58585800,0xa7a700a7 +.long 0x3a3a3a00,0x9f9f009f +.long 0x61616100,0xbcbc00bc +.long 0xdedede00,0x29290029 +.long 0x1b1b1b00,0xf9f900f9 +.long 0x11111100,0x2f2f002f +.long 0x1c1c1c00,0xb4b400b4 +.long 0x32323200,0x78780078 +.long 0x0f0f0f00,0x06060006 +.long 0x9c9c9c00,0xe7e700e7 +.long 0x16161600,0x71710071 +.long 0x53535300,0xd4d400d4 +.long 0x18181800,0xabab00ab +.long 0xf2f2f200,0x88880088 +.long 0x22222200,0x8d8d008d +.long 0xfefefe00,0x72720072 +.long 0x44444400,0xb9b900b9 +.long 0xcfcfcf00,0xf8f800f8 +.long 0xb2b2b200,0xacac00ac +.long 0xc3c3c300,0x36360036 +.long 0xb5b5b500,0x2a2a002a +.long 0x7a7a7a00,0x3c3c003c +.long 0x91919100,0xf1f100f1 +.long 0x24242400,0x40400040 +.long 0x08080800,0xd3d300d3 +.long 0xe8e8e800,0xbbbb00bb +.long 0xa8a8a800,0x43430043 +.long 0x60606000,0x15150015 +.long 0xfcfcfc00,0xadad00ad +.long 0x69696900,0x77770077 +.long 0x50505000,0x80800080 +.long 0xaaaaaa00,0x82820082 +.long 0xd0d0d000,0xecec00ec +.long 0xa0a0a000,0x27270027 +.long 0x7d7d7d00,0xe5e500e5 +.long 0xa1a1a100,0x85850085 +.long 0x89898900,0x35350035 +.long 0x62626200,0x0c0c000c +.long 0x97979700,0x41410041 +.long 0x54545400,0xefef00ef +.long 0x5b5b5b00,0x93930093 +.long 0x1e1e1e00,0x19190019 +.long 0x95959500,0x21210021 +.long 0xe0e0e000,0x0e0e000e +.long 0xffffff00,0x4e4e004e +.long 0x64646400,0x65650065 +.long 0xd2d2d200,0xbdbd00bd +.long 0x10101000,0xb8b800b8 +.long 0xc4c4c400,0x8f8f008f +.long 0x00000000,0xebeb00eb +.long 0x48484800,0xcece00ce +.long 0xa3a3a300,0x30300030 +.long 0xf7f7f700,0x5f5f005f +.long 0x75757500,0xc5c500c5 +.long 0xdbdbdb00,0x1a1a001a +.long 0x8a8a8a00,0xe1e100e1 +.long 0x03030300,0xcaca00ca +.long 0xe6e6e600,0x47470047 +.long 0xdadada00,0x3d3d003d +.long 0x09090900,0x01010001 +.long 0x3f3f3f00,0xd6d600d6 +.long 0xdddddd00,0x56560056 +.long 0x94949400,0x4d4d004d +.long 0x87878700,0x0d0d000d +.long 0x5c5c5c00,0x66660066 +.long 0x83838300,0xcccc00cc +.long 0x02020200,0x2d2d002d +.long 0xcdcdcd00,0x12120012 +.long 0x4a4a4a00,0x20200020 +.long 0x90909000,0xb1b100b1 +.long 0x33333300,0x99990099 +.long 0x73737300,0x4c4c004c +.long 0x67676700,0xc2c200c2 +.long 0xf6f6f600,0x7e7e007e +.long 0xf3f3f300,0x05050005 +.long 0x9d9d9d00,0xb7b700b7 +.long 0x7f7f7f00,0x31310031 +.long 0xbfbfbf00,0x17170017 +.long 0xe2e2e200,0xd7d700d7 +.long 0x52525200,0x58580058 +.long 0x9b9b9b00,0x61610061 +.long 0xd8d8d800,0x1b1b001b +.long 0x26262600,0x1c1c001c +.long 0xc8c8c800,0x0f0f000f +.long 0x37373700,0x16160016 +.long 0xc6c6c600,0x18180018 +.long 0x3b3b3b00,0x22220022 +.long 0x81818100,0x44440044 +.long 0x96969600,0xb2b200b2 +.long 0x6f6f6f00,0xb5b500b5 +.long 0x4b4b4b00,0x91910091 +.long 0x13131300,0x08080008 +.long 0xbebebe00,0xa8a800a8 +.long 0x63636300,0xfcfc00fc +.long 0x2e2e2e00,0x50500050 +.long 0xe9e9e900,0xd0d000d0 +.long 0x79797900,0x7d7d007d +.long 0xa7a7a700,0x89890089 +.long 0x8c8c8c00,0x97970097 +.long 0x9f9f9f00,0x5b5b005b +.long 0x6e6e6e00,0x95950095 +.long 0xbcbcbc00,0xffff00ff +.long 0x8e8e8e00,0xd2d200d2 +.long 0x29292900,0xc4c400c4 +.long 0xf5f5f500,0x48480048 +.long 0xf9f9f900,0xf7f700f7 +.long 0xb6b6b600,0xdbdb00db +.long 0x2f2f2f00,0x03030003 +.long 0xfdfdfd00,0xdada00da +.long 0xb4b4b400,0x3f3f003f +.long 0x59595900,0x94940094 +.long 0x78787800,0x5c5c005c +.long 0x98989800,0x02020002 +.long 0x06060600,0x4a4a004a +.long 0x6a6a6a00,0x33330033 +.long 0xe7e7e700,0x67670067 +.long 0x46464600,0xf3f300f3 +.long 0x71717100,0x7f7f007f +.long 0xbababa00,0xe2e200e2 +.long 0xd4d4d400,0x9b9b009b +.long 0x25252500,0x26260026 +.long 0xababab00,0x37370037 +.long 0x42424200,0x3b3b003b +.long 0x88888800,0x96960096 +.long 0xa2a2a200,0x4b4b004b +.long 0x8d8d8d00,0xbebe00be +.long 0xfafafa00,0x2e2e002e +.long 0x72727200,0x79790079 +.long 0x07070700,0x8c8c008c +.long 0xb9b9b900,0x6e6e006e +.long 0x55555500,0x8e8e008e +.long 0xf8f8f800,0xf5f500f5 +.long 0xeeeeee00,0xb6b600b6 +.long 0xacacac00,0xfdfd00fd +.long 0x0a0a0a00,0x59590059 +.long 0x36363600,0x98980098 +.long 0x49494900,0x6a6a006a +.long 0x2a2a2a00,0x46460046 +.long 0x68686800,0xbaba00ba +.long 0x3c3c3c00,0x25250025 +.long 0x38383800,0x42420042 +.long 0xf1f1f100,0xa2a200a2 +.long 0xa4a4a400,0xfafa00fa +.long 0x40404000,0x07070007 +.long 0x28282800,0x55550055 +.long 0xd3d3d300,0xeeee00ee +.long 0x7b7b7b00,0x0a0a000a +.long 0xbbbbbb00,0x49490049 +.long 0xc9c9c900,0x68680068 +.long 0x43434300,0x38380038 +.long 0xc1c1c100,0xa4a400a4 +.long 0x15151500,0x28280028 +.long 0xe3e3e300,0x7b7b007b +.long 0xadadad00,0xc9c900c9 +.long 0xf4f4f400,0xc1c100c1 +.long 0x77777700,0xe3e300e3 +.long 0xc7c7c700,0xf4f400f4 +.long 0x80808000,0xc7c700c7 +.long 0x9e9e9e00,0x9e9e009e +.long 0x00e0e0e0,0x38003838 +.long 0x00050505,0x41004141 +.long 0x00585858,0x16001616 +.long 0x00d9d9d9,0x76007676 +.long 0x00676767,0xd900d9d9 +.long 0x004e4e4e,0x93009393 +.long 0x00818181,0x60006060 +.long 0x00cbcbcb,0xf200f2f2 +.long 0x00c9c9c9,0x72007272 +.long 0x000b0b0b,0xc200c2c2 +.long 0x00aeaeae,0xab00abab +.long 0x006a6a6a,0x9a009a9a +.long 0x00d5d5d5,0x75007575 +.long 0x00181818,0x06000606 +.long 0x005d5d5d,0x57005757 +.long 0x00828282,0xa000a0a0 +.long 0x00464646,0x91009191 +.long 0x00dfdfdf,0xf700f7f7 +.long 0x00d6d6d6,0xb500b5b5 +.long 0x00272727,0xc900c9c9 +.long 0x008a8a8a,0xa200a2a2 +.long 0x00323232,0x8c008c8c +.long 0x004b4b4b,0xd200d2d2 +.long 0x00424242,0x90009090 +.long 0x00dbdbdb,0xf600f6f6 +.long 0x001c1c1c,0x07000707 +.long 0x009e9e9e,0xa700a7a7 +.long 0x009c9c9c,0x27002727 +.long 0x003a3a3a,0x8e008e8e +.long 0x00cacaca,0xb200b2b2 +.long 0x00252525,0x49004949 +.long 0x007b7b7b,0xde00dede +.long 0x000d0d0d,0x43004343 +.long 0x00717171,0x5c005c5c +.long 0x005f5f5f,0xd700d7d7 +.long 0x001f1f1f,0xc700c7c7 +.long 0x00f8f8f8,0x3e003e3e +.long 0x00d7d7d7,0xf500f5f5 +.long 0x003e3e3e,0x8f008f8f +.long 0x009d9d9d,0x67006767 +.long 0x007c7c7c,0x1f001f1f +.long 0x00606060,0x18001818 +.long 0x00b9b9b9,0x6e006e6e +.long 0x00bebebe,0xaf00afaf +.long 0x00bcbcbc,0x2f002f2f +.long 0x008b8b8b,0xe200e2e2 +.long 0x00161616,0x85008585 +.long 0x00343434,0x0d000d0d +.long 0x004d4d4d,0x53005353 +.long 0x00c3c3c3,0xf000f0f0 +.long 0x00727272,0x9c009c9c +.long 0x00959595,0x65006565 +.long 0x00ababab,0xea00eaea +.long 0x008e8e8e,0xa300a3a3 +.long 0x00bababa,0xae00aeae +.long 0x007a7a7a,0x9e009e9e +.long 0x00b3b3b3,0xec00ecec +.long 0x00020202,0x80008080 +.long 0x00b4b4b4,0x2d002d2d +.long 0x00adadad,0x6b006b6b +.long 0x00a2a2a2,0xa800a8a8 +.long 0x00acacac,0x2b002b2b +.long 0x00d8d8d8,0x36003636 +.long 0x009a9a9a,0xa600a6a6 +.long 0x00171717,0xc500c5c5 +.long 0x001a1a1a,0x86008686 +.long 0x00353535,0x4d004d4d +.long 0x00cccccc,0x33003333 +.long 0x00f7f7f7,0xfd00fdfd +.long 0x00999999,0x66006666 +.long 0x00616161,0x58005858 +.long 0x005a5a5a,0x96009696 +.long 0x00e8e8e8,0x3a003a3a +.long 0x00242424,0x09000909 +.long 0x00565656,0x95009595 +.long 0x00404040,0x10001010 +.long 0x00e1e1e1,0x78007878 +.long 0x00636363,0xd800d8d8 +.long 0x00090909,0x42004242 +.long 0x00333333,0xcc00cccc +.long 0x00bfbfbf,0xef00efef +.long 0x00989898,0x26002626 +.long 0x00979797,0xe500e5e5 +.long 0x00858585,0x61006161 +.long 0x00686868,0x1a001a1a +.long 0x00fcfcfc,0x3f003f3f +.long 0x00ececec,0x3b003b3b +.long 0x000a0a0a,0x82008282 +.long 0x00dadada,0xb600b6b6 +.long 0x006f6f6f,0xdb00dbdb +.long 0x00535353,0xd400d4d4 +.long 0x00626262,0x98009898 +.long 0x00a3a3a3,0xe800e8e8 +.long 0x002e2e2e,0x8b008b8b +.long 0x00080808,0x02000202 +.long 0x00afafaf,0xeb00ebeb +.long 0x00282828,0x0a000a0a +.long 0x00b0b0b0,0x2c002c2c +.long 0x00747474,0x1d001d1d +.long 0x00c2c2c2,0xb000b0b0 +.long 0x00bdbdbd,0x6f006f6f +.long 0x00363636,0x8d008d8d +.long 0x00222222,0x88008888 +.long 0x00383838,0x0e000e0e +.long 0x00646464,0x19001919 +.long 0x001e1e1e,0x87008787 +.long 0x00393939,0x4e004e4e +.long 0x002c2c2c,0x0b000b0b +.long 0x00a6a6a6,0xa900a9a9 +.long 0x00303030,0x0c000c0c +.long 0x00e5e5e5,0x79007979 +.long 0x00444444,0x11001111 +.long 0x00fdfdfd,0x7f007f7f +.long 0x00888888,0x22002222 +.long 0x009f9f9f,0xe700e7e7 +.long 0x00656565,0x59005959 +.long 0x00878787,0xe100e1e1 +.long 0x006b6b6b,0xda00dada +.long 0x00f4f4f4,0x3d003d3d +.long 0x00232323,0xc800c8c8 +.long 0x00484848,0x12001212 +.long 0x00101010,0x04000404 +.long 0x00d1d1d1,0x74007474 +.long 0x00515151,0x54005454 +.long 0x00c0c0c0,0x30003030 +.long 0x00f9f9f9,0x7e007e7e +.long 0x00d2d2d2,0xb400b4b4 +.long 0x00a0a0a0,0x28002828 +.long 0x00555555,0x55005555 +.long 0x00a1a1a1,0x68006868 +.long 0x00414141,0x50005050 +.long 0x00fafafa,0xbe00bebe +.long 0x00434343,0xd000d0d0 +.long 0x00131313,0xc400c4c4 +.long 0x00c4c4c4,0x31003131 +.long 0x002f2f2f,0xcb00cbcb +.long 0x00a8a8a8,0x2a002a2a +.long 0x00b6b6b6,0xad00adad +.long 0x003c3c3c,0x0f000f0f +.long 0x002b2b2b,0xca00caca +.long 0x00c1c1c1,0x70007070 +.long 0x00ffffff,0xff00ffff +.long 0x00c8c8c8,0x32003232 +.long 0x00a5a5a5,0x69006969 +.long 0x00202020,0x08000808 +.long 0x00898989,0x62006262 +.long 0x00000000,0x00000000 +.long 0x00909090,0x24002424 +.long 0x00474747,0xd100d1d1 +.long 0x00efefef,0xfb00fbfb +.long 0x00eaeaea,0xba00baba +.long 0x00b7b7b7,0xed00eded +.long 0x00151515,0x45004545 +.long 0x00060606,0x81008181 +.long 0x00cdcdcd,0x73007373 +.long 0x00b5b5b5,0x6d006d6d +.long 0x00121212,0x84008484 +.long 0x007e7e7e,0x9f009f9f +.long 0x00bbbbbb,0xee00eeee +.long 0x00292929,0x4a004a4a +.long 0x000f0f0f,0xc300c3c3 +.long 0x00b8b8b8,0x2e002e2e +.long 0x00070707,0xc100c1c1 +.long 0x00040404,0x01000101 +.long 0x009b9b9b,0xe600e6e6 +.long 0x00949494,0x25002525 +.long 0x00212121,0x48004848 +.long 0x00666666,0x99009999 +.long 0x00e6e6e6,0xb900b9b9 +.long 0x00cecece,0xb300b3b3 +.long 0x00ededed,0x7b007b7b +.long 0x00e7e7e7,0xf900f9f9 +.long 0x003b3b3b,0xce00cece +.long 0x00fefefe,0xbf00bfbf +.long 0x007f7f7f,0xdf00dfdf +.long 0x00c5c5c5,0x71007171 +.long 0x00a4a4a4,0x29002929 +.long 0x00373737,0xcd00cdcd +.long 0x00b1b1b1,0x6c006c6c +.long 0x004c4c4c,0x13001313 +.long 0x00919191,0x64006464 +.long 0x006e6e6e,0x9b009b9b +.long 0x008d8d8d,0x63006363 +.long 0x00767676,0x9d009d9d +.long 0x00030303,0xc000c0c0 +.long 0x002d2d2d,0x4b004b4b +.long 0x00dedede,0xb700b7b7 +.long 0x00969696,0xa500a5a5 +.long 0x00262626,0x89008989 +.long 0x007d7d7d,0x5f005f5f +.long 0x00c6c6c6,0xb100b1b1 +.long 0x005c5c5c,0x17001717 +.long 0x00d3d3d3,0xf400f4f4 +.long 0x00f2f2f2,0xbc00bcbc +.long 0x004f4f4f,0xd300d3d3 +.long 0x00191919,0x46004646 +.long 0x003f3f3f,0xcf00cfcf +.long 0x00dcdcdc,0x37003737 +.long 0x00797979,0x5e005e5e +.long 0x001d1d1d,0x47004747 +.long 0x00525252,0x94009494 +.long 0x00ebebeb,0xfa00fafa +.long 0x00f3f3f3,0xfc00fcfc +.long 0x006d6d6d,0x5b005b5b +.long 0x005e5e5e,0x97009797 +.long 0x00fbfbfb,0xfe00fefe +.long 0x00696969,0x5a005a5a +.long 0x00b2b2b2,0xac00acac +.long 0x00f0f0f0,0x3c003c3c +.long 0x00313131,0x4c004c4c +.long 0x000c0c0c,0x03000303 +.long 0x00d4d4d4,0x35003535 +.long 0x00cfcfcf,0xf300f3f3 +.long 0x008c8c8c,0x23002323 +.long 0x00e2e2e2,0xb800b8b8 +.long 0x00757575,0x5d005d5d +.long 0x00a9a9a9,0x6a006a6a +.long 0x004a4a4a,0x92009292 +.long 0x00575757,0xd500d5d5 +.long 0x00848484,0x21002121 +.long 0x00111111,0x44004444 +.long 0x00454545,0x51005151 +.long 0x001b1b1b,0xc600c6c6 +.long 0x00f5f5f5,0x7d007d7d +.long 0x00e4e4e4,0x39003939 +.long 0x000e0e0e,0x83008383 +.long 0x00737373,0xdc00dcdc +.long 0x00aaaaaa,0xaa00aaaa +.long 0x00f1f1f1,0x7c007c7c +.long 0x00dddddd,0x77007777 +.long 0x00595959,0x56005656 +.long 0x00141414,0x05000505 +.long 0x006c6c6c,0x1b001b1b +.long 0x00929292,0xa400a4a4 +.long 0x00545454,0x15001515 +.long 0x00d0d0d0,0x34003434 +.long 0x00787878,0x1e001e1e +.long 0x00707070,0x1c001c1c +.long 0x00e3e3e3,0xf800f8f8 +.long 0x00494949,0x52005252 +.long 0x00808080,0x20002020 +.long 0x00505050,0x14001414 +.long 0x00a7a7a7,0xe900e9e9 +.long 0x00f6f6f6,0xbd00bdbd +.long 0x00777777,0xdd00dddd +.long 0x00939393,0xe400e4e4 +.long 0x00868686,0xa100a1a1 +.long 0x00838383,0xe000e0e0 +.long 0x002a2a2a,0x8a008a8a +.long 0x00c7c7c7,0xf100f1f1 +.long 0x005b5b5b,0xd600d6d6 +.long 0x00e9e9e9,0x7a007a7a +.long 0x00eeeeee,0xbb00bbbb +.long 0x008f8f8f,0xe300e3e3 +.long 0x00010101,0x40004040 +.long 0x003d3d3d,0x4f004f4f +.globl _Camellia_cbc_encrypt + +.p2align 4 +_Camellia_cbc_encrypt: + + cmpq $0,%rdx + je L$cbc_abort + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$cbc_prologue: + + movq %rsp,%rbp + + subq $64,%rsp + andq $-64,%rsp + + + + leaq -64-63(%rcx),%r10 + subq %rsp,%r10 + negq %r10 + andq $0x3C0,%r10 + subq %r10,%rsp + + + movq %rdi,%r12 + movq %rsi,%r13 + movq %r8,%rbx + movq %rcx,%r14 + movl 272(%rcx),%r15d + + movq %r8,40(%rsp) + movq %rbp,48(%rsp) + + +L$cbc_body: + leaq L$Camellia_SBOX(%rip),%rbp + + movl $32,%ecx +.p2align 2 +L$cbc_prefetch_sbox: + movq 0(%rbp),%rax + movq 32(%rbp),%rsi + movq 64(%rbp),%rdi + movq 96(%rbp),%r11 + leaq 128(%rbp),%rbp + loop L$cbc_prefetch_sbox + subq $4096,%rbp + shlq $6,%r15 + movq %rdx,%rcx + leaq (%r14,%r15,1),%r15 + + cmpl $0,%r9d + je L$CBC_DECRYPT + + andq $-16,%rdx + andq $15,%rcx + leaq (%r12,%rdx,1),%rdx + movq %r14,0(%rsp) + movq %rdx,8(%rsp) + movq %rcx,16(%rsp) + + cmpq %r12,%rdx + movl 0(%rbx),%r8d + movl 4(%rbx),%r9d + movl 8(%rbx),%r10d + movl 12(%rbx),%r11d + je L$cbc_enc_tail + jmp L$cbc_eloop + +.p2align 4 +L$cbc_eloop: + xorl 0(%r12),%r8d + xorl 4(%r12),%r9d + xorl 8(%r12),%r10d + bswapl %r8d + xorl 12(%r12),%r11d + bswapl %r9d + bswapl %r10d + bswapl %r11d + + call _x86_64_Camellia_encrypt + + movq 0(%rsp),%r14 + bswapl %r8d + movq 8(%rsp),%rdx + bswapl %r9d + movq 16(%rsp),%rcx + bswapl %r10d + movl %r8d,0(%r13) + bswapl %r11d + movl %r9d,4(%r13) + movl %r10d,8(%r13) + leaq 16(%r12),%r12 + movl %r11d,12(%r13) + cmpq %rdx,%r12 + leaq 16(%r13),%r13 + jne L$cbc_eloop + + cmpq $0,%rcx + jne L$cbc_enc_tail + + movq 40(%rsp),%r13 + movl %r8d,0(%r13) + movl %r9d,4(%r13) + movl %r10d,8(%r13) + movl %r11d,12(%r13) + jmp L$cbc_done + +.p2align 4 +L$cbc_enc_tail: + xorq %rax,%rax + movq %rax,0+24(%rsp) + movq %rax,8+24(%rsp) + movq %rax,16(%rsp) + +L$cbc_enc_pushf: + pushfq + cld + movq %r12,%rsi + leaq 8+24(%rsp),%rdi +.long 0x9066A4F3 + popfq +L$cbc_enc_popf: + + leaq 24(%rsp),%r12 + leaq 16+24(%rsp),%rax + movq %rax,8(%rsp) + jmp L$cbc_eloop + +.p2align 4 +L$CBC_DECRYPT: + xchgq %r14,%r15 + addq $15,%rdx + andq $15,%rcx + andq $-16,%rdx + movq %r14,0(%rsp) + leaq (%r12,%rdx,1),%rdx + movq %rdx,8(%rsp) + movq %rcx,16(%rsp) + + movq (%rbx),%rax + movq 8(%rbx),%rbx + jmp L$cbc_dloop +.p2align 4 +L$cbc_dloop: + movl 0(%r12),%r8d + movl 4(%r12),%r9d + movl 8(%r12),%r10d + bswapl %r8d + movl 12(%r12),%r11d + bswapl %r9d + movq %rax,0+24(%rsp) + bswapl %r10d + movq %rbx,8+24(%rsp) + bswapl %r11d + + call _x86_64_Camellia_decrypt + + movq 0(%rsp),%r14 + movq 8(%rsp),%rdx + movq 16(%rsp),%rcx + + bswapl %r8d + movq (%r12),%rax + bswapl %r9d + movq 8(%r12),%rbx + bswapl %r10d + xorl 0+24(%rsp),%r8d + bswapl %r11d + xorl 4+24(%rsp),%r9d + xorl 8+24(%rsp),%r10d + leaq 16(%r12),%r12 + xorl 12+24(%rsp),%r11d + cmpq %rdx,%r12 + je L$cbc_ddone + + movl %r8d,0(%r13) + movl %r9d,4(%r13) + movl %r10d,8(%r13) + movl %r11d,12(%r13) + + leaq 16(%r13),%r13 + jmp L$cbc_dloop + +.p2align 4 +L$cbc_ddone: + movq 40(%rsp),%rdx + cmpq $0,%rcx + jne L$cbc_dec_tail + + movl %r8d,0(%r13) + movl %r9d,4(%r13) + movl %r10d,8(%r13) + movl %r11d,12(%r13) + + movq %rax,(%rdx) + movq %rbx,8(%rdx) + jmp L$cbc_done +.p2align 4 +L$cbc_dec_tail: + movl %r8d,0+24(%rsp) + movl %r9d,4+24(%rsp) + movl %r10d,8+24(%rsp) + movl %r11d,12+24(%rsp) + +L$cbc_dec_pushf: + pushfq + cld + leaq 8+24(%rsp),%rsi + leaq (%r13),%rdi +.long 0x9066A4F3 + popfq +L$cbc_dec_popf: + + movq %rax,(%rdx) + movq %rbx,8(%rdx) + jmp L$cbc_done + +.p2align 4 +L$cbc_done: + movq 48(%rsp),%rcx + + movq 0(%rcx),%r15 + + movq 8(%rcx),%r14 + + movq 16(%rcx),%r13 + + movq 24(%rcx),%r12 + + movq 32(%rcx),%rbp + + movq 40(%rcx),%rbx + + leaq 48(%rcx),%rsp + +L$cbc_abort: + .byte 0xf3,0xc3 + + + +.byte 67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54,95,54,52,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/chacha/chacha-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/chacha/chacha-x86_64.s new file mode 100644 index 0000000..fd8910b --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/chacha/chacha-x86_64.s @@ -0,0 +1,2187 @@ +.text + + + +.p2align 6 +L$zero: +.long 0,0,0,0 +L$one: +.long 1,0,0,0 +L$inc: +.long 0,1,2,3 +L$four: +.long 4,4,4,4 +L$incy: +.long 0,2,4,6,1,3,5,7 +L$eight: +.long 8,8,8,8,8,8,8,8 +L$rot16: +.byte 0x2,0x3,0x0,0x1, 0x6,0x7,0x4,0x5, 0xa,0xb,0x8,0x9, 0xe,0xf,0xc,0xd +L$rot24: +.byte 0x3,0x0,0x1,0x2, 0x7,0x4,0x5,0x6, 0xb,0x8,0x9,0xa, 0xf,0xc,0xd,0xe +L$twoy: +.long 2,0,0,0, 2,0,0,0 +.p2align 6 +L$zeroz: +.long 0,0,0,0, 1,0,0,0, 2,0,0,0, 3,0,0,0 +L$fourz: +.long 4,0,0,0, 4,0,0,0, 4,0,0,0, 4,0,0,0 +L$incz: +.long 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +L$sixteen: +.long 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 +L$sigma: +.byte 101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107,0 +.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.globl _ChaCha20_ctr32 + +.p2align 6 +_ChaCha20_ctr32: + + cmpq $0,%rdx + je L$no_data + movq _OPENSSL_ia32cap_P+4(%rip),%r10 + testl $512,%r10d + jnz L$ChaCha20_ssse3 + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $64+24,%rsp + +L$ctr32_body: + + + movdqu (%rcx),%xmm1 + movdqu 16(%rcx),%xmm2 + movdqu (%r8),%xmm3 + movdqa L$one(%rip),%xmm4 + + + movdqa %xmm1,16(%rsp) + movdqa %xmm2,32(%rsp) + movdqa %xmm3,48(%rsp) + movq %rdx,%rbp + jmp L$oop_outer + +.p2align 5 +L$oop_outer: + movl $0x61707865,%eax + movl $0x3320646e,%ebx + movl $0x79622d32,%ecx + movl $0x6b206574,%edx + movl 16(%rsp),%r8d + movl 20(%rsp),%r9d + movl 24(%rsp),%r10d + movl 28(%rsp),%r11d + movd %xmm3,%r12d + movl 52(%rsp),%r13d + movl 56(%rsp),%r14d + movl 60(%rsp),%r15d + + movq %rbp,64+0(%rsp) + movl $10,%ebp + movq %rsi,64+8(%rsp) +.byte 102,72,15,126,214 + movq %rdi,64+16(%rsp) + movq %rsi,%rdi + shrq $32,%rdi + jmp L$oop + +.p2align 5 +L$oop: + addl %r8d,%eax + xorl %eax,%r12d + roll $16,%r12d + addl %r9d,%ebx + xorl %ebx,%r13d + roll $16,%r13d + addl %r12d,%esi + xorl %esi,%r8d + roll $12,%r8d + addl %r13d,%edi + xorl %edi,%r9d + roll $12,%r9d + addl %r8d,%eax + xorl %eax,%r12d + roll $8,%r12d + addl %r9d,%ebx + xorl %ebx,%r13d + roll $8,%r13d + addl %r12d,%esi + xorl %esi,%r8d + roll $7,%r8d + addl %r13d,%edi + xorl %edi,%r9d + roll $7,%r9d + movl %esi,32(%rsp) + movl %edi,36(%rsp) + movl 40(%rsp),%esi + movl 44(%rsp),%edi + addl %r10d,%ecx + xorl %ecx,%r14d + roll $16,%r14d + addl %r11d,%edx + xorl %edx,%r15d + roll $16,%r15d + addl %r14d,%esi + xorl %esi,%r10d + roll $12,%r10d + addl %r15d,%edi + xorl %edi,%r11d + roll $12,%r11d + addl %r10d,%ecx + xorl %ecx,%r14d + roll $8,%r14d + addl %r11d,%edx + xorl %edx,%r15d + roll $8,%r15d + addl %r14d,%esi + xorl %esi,%r10d + roll $7,%r10d + addl %r15d,%edi + xorl %edi,%r11d + roll $7,%r11d + addl %r9d,%eax + xorl %eax,%r15d + roll $16,%r15d + addl %r10d,%ebx + xorl %ebx,%r12d + roll $16,%r12d + addl %r15d,%esi + xorl %esi,%r9d + roll $12,%r9d + addl %r12d,%edi + xorl %edi,%r10d + roll $12,%r10d + addl %r9d,%eax + xorl %eax,%r15d + roll $8,%r15d + addl %r10d,%ebx + xorl %ebx,%r12d + roll $8,%r12d + addl %r15d,%esi + xorl %esi,%r9d + roll $7,%r9d + addl %r12d,%edi + xorl %edi,%r10d + roll $7,%r10d + movl %esi,40(%rsp) + movl %edi,44(%rsp) + movl 32(%rsp),%esi + movl 36(%rsp),%edi + addl %r11d,%ecx + xorl %ecx,%r13d + roll $16,%r13d + addl %r8d,%edx + xorl %edx,%r14d + roll $16,%r14d + addl %r13d,%esi + xorl %esi,%r11d + roll $12,%r11d + addl %r14d,%edi + xorl %edi,%r8d + roll $12,%r8d + addl %r11d,%ecx + xorl %ecx,%r13d + roll $8,%r13d + addl %r8d,%edx + xorl %edx,%r14d + roll $8,%r14d + addl %r13d,%esi + xorl %esi,%r11d + roll $7,%r11d + addl %r14d,%edi + xorl %edi,%r8d + roll $7,%r8d + decl %ebp + jnz L$oop + movl %edi,36(%rsp) + movl %esi,32(%rsp) + movq 64(%rsp),%rbp + movdqa %xmm2,%xmm1 + movq 64+8(%rsp),%rsi + paddd %xmm4,%xmm3 + movq 64+16(%rsp),%rdi + + addl $0x61707865,%eax + addl $0x3320646e,%ebx + addl $0x79622d32,%ecx + addl $0x6b206574,%edx + addl 16(%rsp),%r8d + addl 20(%rsp),%r9d + addl 24(%rsp),%r10d + addl 28(%rsp),%r11d + addl 48(%rsp),%r12d + addl 52(%rsp),%r13d + addl 56(%rsp),%r14d + addl 60(%rsp),%r15d + paddd 32(%rsp),%xmm1 + + cmpq $64,%rbp + jb L$tail + + xorl 0(%rsi),%eax + xorl 4(%rsi),%ebx + xorl 8(%rsi),%ecx + xorl 12(%rsi),%edx + xorl 16(%rsi),%r8d + xorl 20(%rsi),%r9d + xorl 24(%rsi),%r10d + xorl 28(%rsi),%r11d + movdqu 32(%rsi),%xmm0 + xorl 48(%rsi),%r12d + xorl 52(%rsi),%r13d + xorl 56(%rsi),%r14d + xorl 60(%rsi),%r15d + leaq 64(%rsi),%rsi + pxor %xmm1,%xmm0 + + movdqa %xmm2,32(%rsp) + movd %xmm3,48(%rsp) + + movl %eax,0(%rdi) + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + movdqu %xmm0,32(%rdi) + movl %r12d,48(%rdi) + movl %r13d,52(%rdi) + movl %r14d,56(%rdi) + movl %r15d,60(%rdi) + leaq 64(%rdi),%rdi + + subq $64,%rbp + jnz L$oop_outer + + jmp L$done + +.p2align 4 +L$tail: + movl %eax,0(%rsp) + movl %ebx,4(%rsp) + xorq %rbx,%rbx + movl %ecx,8(%rsp) + movl %edx,12(%rsp) + movl %r8d,16(%rsp) + movl %r9d,20(%rsp) + movl %r10d,24(%rsp) + movl %r11d,28(%rsp) + movdqa %xmm1,32(%rsp) + movl %r12d,48(%rsp) + movl %r13d,52(%rsp) + movl %r14d,56(%rsp) + movl %r15d,60(%rsp) + +L$oop_tail: + movzbl (%rsi,%rbx,1),%eax + movzbl (%rsp,%rbx,1),%edx + leaq 1(%rbx),%rbx + xorl %edx,%eax + movb %al,-1(%rdi,%rbx,1) + decq %rbp + jnz L$oop_tail + +L$done: + leaq 64+24+48(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$no_data: + .byte 0xf3,0xc3 + + + +.p2align 5 +ChaCha20_ssse3: + +L$ChaCha20_ssse3: + movq %rsp,%r9 + + testl $2048,%r10d + jnz L$ChaCha20_4xop + cmpq $128,%rdx + je L$ChaCha20_128 + ja L$ChaCha20_4x + +L$do_sse3_after_all: + subq $64+8,%rsp + movdqa L$sigma(%rip),%xmm0 + movdqu (%rcx),%xmm1 + movdqu 16(%rcx),%xmm2 + movdqu (%r8),%xmm3 + movdqa L$rot16(%rip),%xmm6 + movdqa L$rot24(%rip),%xmm7 + + movdqa %xmm0,0(%rsp) + movdqa %xmm1,16(%rsp) + movdqa %xmm2,32(%rsp) + movdqa %xmm3,48(%rsp) + movq $10,%r8 + jmp L$oop_ssse3 + +.p2align 5 +L$oop_outer_ssse3: + movdqa L$one(%rip),%xmm3 + movdqa 0(%rsp),%xmm0 + movdqa 16(%rsp),%xmm1 + movdqa 32(%rsp),%xmm2 + paddd 48(%rsp),%xmm3 + movq $10,%r8 + movdqa %xmm3,48(%rsp) + jmp L$oop_ssse3 + +.p2align 5 +L$oop_ssse3: + paddd %xmm1,%xmm0 + pxor %xmm0,%xmm3 +.byte 102,15,56,0,222 + paddd %xmm3,%xmm2 + pxor %xmm2,%xmm1 + movdqa %xmm1,%xmm4 + psrld $20,%xmm1 + pslld $12,%xmm4 + por %xmm4,%xmm1 + paddd %xmm1,%xmm0 + pxor %xmm0,%xmm3 +.byte 102,15,56,0,223 + paddd %xmm3,%xmm2 + pxor %xmm2,%xmm1 + movdqa %xmm1,%xmm4 + psrld $25,%xmm1 + pslld $7,%xmm4 + por %xmm4,%xmm1 + pshufd $78,%xmm2,%xmm2 + pshufd $57,%xmm1,%xmm1 + pshufd $147,%xmm3,%xmm3 + nop + paddd %xmm1,%xmm0 + pxor %xmm0,%xmm3 +.byte 102,15,56,0,222 + paddd %xmm3,%xmm2 + pxor %xmm2,%xmm1 + movdqa %xmm1,%xmm4 + psrld $20,%xmm1 + pslld $12,%xmm4 + por %xmm4,%xmm1 + paddd %xmm1,%xmm0 + pxor %xmm0,%xmm3 +.byte 102,15,56,0,223 + paddd %xmm3,%xmm2 + pxor %xmm2,%xmm1 + movdqa %xmm1,%xmm4 + psrld $25,%xmm1 + pslld $7,%xmm4 + por %xmm4,%xmm1 + pshufd $78,%xmm2,%xmm2 + pshufd $147,%xmm1,%xmm1 + pshufd $57,%xmm3,%xmm3 + decq %r8 + jnz L$oop_ssse3 + paddd 0(%rsp),%xmm0 + paddd 16(%rsp),%xmm1 + paddd 32(%rsp),%xmm2 + paddd 48(%rsp),%xmm3 + + cmpq $64,%rdx + jb L$tail_ssse3 + + movdqu 0(%rsi),%xmm4 + movdqu 16(%rsi),%xmm5 + pxor %xmm4,%xmm0 + movdqu 32(%rsi),%xmm4 + pxor %xmm5,%xmm1 + movdqu 48(%rsi),%xmm5 + leaq 64(%rsi),%rsi + pxor %xmm4,%xmm2 + pxor %xmm5,%xmm3 + + movdqu %xmm0,0(%rdi) + movdqu %xmm1,16(%rdi) + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + leaq 64(%rdi),%rdi + + subq $64,%rdx + jnz L$oop_outer_ssse3 + + jmp L$done_ssse3 + +.p2align 4 +L$tail_ssse3: + movdqa %xmm0,0(%rsp) + movdqa %xmm1,16(%rsp) + movdqa %xmm2,32(%rsp) + movdqa %xmm3,48(%rsp) + xorq %r8,%r8 + +L$oop_tail_ssse3: + movzbl (%rsi,%r8,1),%eax + movzbl (%rsp,%r8,1),%ecx + leaq 1(%r8),%r8 + xorl %ecx,%eax + movb %al,-1(%rdi,%r8,1) + decq %rdx + jnz L$oop_tail_ssse3 + +L$done_ssse3: + leaq (%r9),%rsp + +L$ssse3_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +ChaCha20_128: + +L$ChaCha20_128: + movq %rsp,%r9 + + subq $64+8,%rsp + movdqa L$sigma(%rip),%xmm8 + movdqu (%rcx),%xmm9 + movdqu 16(%rcx),%xmm2 + movdqu (%r8),%xmm3 + movdqa L$one(%rip),%xmm1 + movdqa L$rot16(%rip),%xmm6 + movdqa L$rot24(%rip),%xmm7 + + movdqa %xmm8,%xmm10 + movdqa %xmm8,0(%rsp) + movdqa %xmm9,%xmm11 + movdqa %xmm9,16(%rsp) + movdqa %xmm2,%xmm0 + movdqa %xmm2,32(%rsp) + paddd %xmm3,%xmm1 + movdqa %xmm3,48(%rsp) + movq $10,%r8 + jmp L$oop_128 + +.p2align 5 +L$oop_128: + paddd %xmm9,%xmm8 + pxor %xmm8,%xmm3 + paddd %xmm11,%xmm10 + pxor %xmm10,%xmm1 +.byte 102,15,56,0,222 +.byte 102,15,56,0,206 + paddd %xmm3,%xmm2 + paddd %xmm1,%xmm0 + pxor %xmm2,%xmm9 + pxor %xmm0,%xmm11 + movdqa %xmm9,%xmm4 + psrld $20,%xmm9 + movdqa %xmm11,%xmm5 + pslld $12,%xmm4 + psrld $20,%xmm11 + por %xmm4,%xmm9 + pslld $12,%xmm5 + por %xmm5,%xmm11 + paddd %xmm9,%xmm8 + pxor %xmm8,%xmm3 + paddd %xmm11,%xmm10 + pxor %xmm10,%xmm1 +.byte 102,15,56,0,223 +.byte 102,15,56,0,207 + paddd %xmm3,%xmm2 + paddd %xmm1,%xmm0 + pxor %xmm2,%xmm9 + pxor %xmm0,%xmm11 + movdqa %xmm9,%xmm4 + psrld $25,%xmm9 + movdqa %xmm11,%xmm5 + pslld $7,%xmm4 + psrld $25,%xmm11 + por %xmm4,%xmm9 + pslld $7,%xmm5 + por %xmm5,%xmm11 + pshufd $78,%xmm2,%xmm2 + pshufd $57,%xmm9,%xmm9 + pshufd $147,%xmm3,%xmm3 + pshufd $78,%xmm0,%xmm0 + pshufd $57,%xmm11,%xmm11 + pshufd $147,%xmm1,%xmm1 + paddd %xmm9,%xmm8 + pxor %xmm8,%xmm3 + paddd %xmm11,%xmm10 + pxor %xmm10,%xmm1 +.byte 102,15,56,0,222 +.byte 102,15,56,0,206 + paddd %xmm3,%xmm2 + paddd %xmm1,%xmm0 + pxor %xmm2,%xmm9 + pxor %xmm0,%xmm11 + movdqa %xmm9,%xmm4 + psrld $20,%xmm9 + movdqa %xmm11,%xmm5 + pslld $12,%xmm4 + psrld $20,%xmm11 + por %xmm4,%xmm9 + pslld $12,%xmm5 + por %xmm5,%xmm11 + paddd %xmm9,%xmm8 + pxor %xmm8,%xmm3 + paddd %xmm11,%xmm10 + pxor %xmm10,%xmm1 +.byte 102,15,56,0,223 +.byte 102,15,56,0,207 + paddd %xmm3,%xmm2 + paddd %xmm1,%xmm0 + pxor %xmm2,%xmm9 + pxor %xmm0,%xmm11 + movdqa %xmm9,%xmm4 + psrld $25,%xmm9 + movdqa %xmm11,%xmm5 + pslld $7,%xmm4 + psrld $25,%xmm11 + por %xmm4,%xmm9 + pslld $7,%xmm5 + por %xmm5,%xmm11 + pshufd $78,%xmm2,%xmm2 + pshufd $147,%xmm9,%xmm9 + pshufd $57,%xmm3,%xmm3 + pshufd $78,%xmm0,%xmm0 + pshufd $147,%xmm11,%xmm11 + pshufd $57,%xmm1,%xmm1 + decq %r8 + jnz L$oop_128 + paddd 0(%rsp),%xmm8 + paddd 16(%rsp),%xmm9 + paddd 32(%rsp),%xmm2 + paddd 48(%rsp),%xmm3 + paddd L$one(%rip),%xmm1 + paddd 0(%rsp),%xmm10 + paddd 16(%rsp),%xmm11 + paddd 32(%rsp),%xmm0 + paddd 48(%rsp),%xmm1 + + movdqu 0(%rsi),%xmm4 + movdqu 16(%rsi),%xmm5 + pxor %xmm4,%xmm8 + movdqu 32(%rsi),%xmm4 + pxor %xmm5,%xmm9 + movdqu 48(%rsi),%xmm5 + pxor %xmm4,%xmm2 + movdqu 64(%rsi),%xmm4 + pxor %xmm5,%xmm3 + movdqu 80(%rsi),%xmm5 + pxor %xmm4,%xmm10 + movdqu 96(%rsi),%xmm4 + pxor %xmm5,%xmm11 + movdqu 112(%rsi),%xmm5 + pxor %xmm4,%xmm0 + pxor %xmm5,%xmm1 + + movdqu %xmm8,0(%rdi) + movdqu %xmm9,16(%rdi) + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + movdqu %xmm10,64(%rdi) + movdqu %xmm11,80(%rdi) + movdqu %xmm0,96(%rdi) + movdqu %xmm1,112(%rdi) + leaq (%r9),%rsp + +L$128_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +ChaCha20_4x: + +L$ChaCha20_4x: + movq %rsp,%r9 + + movq %r10,%r11 + shrq $32,%r10 + testq $32,%r10 + jnz L$ChaCha20_8x + cmpq $192,%rdx + ja L$proceed4x + + andq $71303168,%r11 + cmpq $4194304,%r11 + je L$do_sse3_after_all + +L$proceed4x: + subq $0x140+8,%rsp + movdqa L$sigma(%rip),%xmm11 + movdqu (%rcx),%xmm15 + movdqu 16(%rcx),%xmm7 + movdqu (%r8),%xmm3 + leaq 256(%rsp),%rcx + leaq L$rot16(%rip),%r10 + leaq L$rot24(%rip),%r11 + + pshufd $0x00,%xmm11,%xmm8 + pshufd $0x55,%xmm11,%xmm9 + movdqa %xmm8,64(%rsp) + pshufd $0xaa,%xmm11,%xmm10 + movdqa %xmm9,80(%rsp) + pshufd $0xff,%xmm11,%xmm11 + movdqa %xmm10,96(%rsp) + movdqa %xmm11,112(%rsp) + + pshufd $0x00,%xmm15,%xmm12 + pshufd $0x55,%xmm15,%xmm13 + movdqa %xmm12,128-256(%rcx) + pshufd $0xaa,%xmm15,%xmm14 + movdqa %xmm13,144-256(%rcx) + pshufd $0xff,%xmm15,%xmm15 + movdqa %xmm14,160-256(%rcx) + movdqa %xmm15,176-256(%rcx) + + pshufd $0x00,%xmm7,%xmm4 + pshufd $0x55,%xmm7,%xmm5 + movdqa %xmm4,192-256(%rcx) + pshufd $0xaa,%xmm7,%xmm6 + movdqa %xmm5,208-256(%rcx) + pshufd $0xff,%xmm7,%xmm7 + movdqa %xmm6,224-256(%rcx) + movdqa %xmm7,240-256(%rcx) + + pshufd $0x00,%xmm3,%xmm0 + pshufd $0x55,%xmm3,%xmm1 + paddd L$inc(%rip),%xmm0 + pshufd $0xaa,%xmm3,%xmm2 + movdqa %xmm1,272-256(%rcx) + pshufd $0xff,%xmm3,%xmm3 + movdqa %xmm2,288-256(%rcx) + movdqa %xmm3,304-256(%rcx) + + jmp L$oop_enter4x + +.p2align 5 +L$oop_outer4x: + movdqa 64(%rsp),%xmm8 + movdqa 80(%rsp),%xmm9 + movdqa 96(%rsp),%xmm10 + movdqa 112(%rsp),%xmm11 + movdqa 128-256(%rcx),%xmm12 + movdqa 144-256(%rcx),%xmm13 + movdqa 160-256(%rcx),%xmm14 + movdqa 176-256(%rcx),%xmm15 + movdqa 192-256(%rcx),%xmm4 + movdqa 208-256(%rcx),%xmm5 + movdqa 224-256(%rcx),%xmm6 + movdqa 240-256(%rcx),%xmm7 + movdqa 256-256(%rcx),%xmm0 + movdqa 272-256(%rcx),%xmm1 + movdqa 288-256(%rcx),%xmm2 + movdqa 304-256(%rcx),%xmm3 + paddd L$four(%rip),%xmm0 + +L$oop_enter4x: + movdqa %xmm6,32(%rsp) + movdqa %xmm7,48(%rsp) + movdqa (%r10),%xmm7 + movl $10,%eax + movdqa %xmm0,256-256(%rcx) + jmp L$oop4x + +.p2align 5 +L$oop4x: + paddd %xmm12,%xmm8 + paddd %xmm13,%xmm9 + pxor %xmm8,%xmm0 + pxor %xmm9,%xmm1 +.byte 102,15,56,0,199 +.byte 102,15,56,0,207 + paddd %xmm0,%xmm4 + paddd %xmm1,%xmm5 + pxor %xmm4,%xmm12 + pxor %xmm5,%xmm13 + movdqa %xmm12,%xmm6 + pslld $12,%xmm12 + psrld $20,%xmm6 + movdqa %xmm13,%xmm7 + pslld $12,%xmm13 + por %xmm6,%xmm12 + psrld $20,%xmm7 + movdqa (%r11),%xmm6 + por %xmm7,%xmm13 + paddd %xmm12,%xmm8 + paddd %xmm13,%xmm9 + pxor %xmm8,%xmm0 + pxor %xmm9,%xmm1 +.byte 102,15,56,0,198 +.byte 102,15,56,0,206 + paddd %xmm0,%xmm4 + paddd %xmm1,%xmm5 + pxor %xmm4,%xmm12 + pxor %xmm5,%xmm13 + movdqa %xmm12,%xmm7 + pslld $7,%xmm12 + psrld $25,%xmm7 + movdqa %xmm13,%xmm6 + pslld $7,%xmm13 + por %xmm7,%xmm12 + psrld $25,%xmm6 + movdqa (%r10),%xmm7 + por %xmm6,%xmm13 + movdqa %xmm4,0(%rsp) + movdqa %xmm5,16(%rsp) + movdqa 32(%rsp),%xmm4 + movdqa 48(%rsp),%xmm5 + paddd %xmm14,%xmm10 + paddd %xmm15,%xmm11 + pxor %xmm10,%xmm2 + pxor %xmm11,%xmm3 +.byte 102,15,56,0,215 +.byte 102,15,56,0,223 + paddd %xmm2,%xmm4 + paddd %xmm3,%xmm5 + pxor %xmm4,%xmm14 + pxor %xmm5,%xmm15 + movdqa %xmm14,%xmm6 + pslld $12,%xmm14 + psrld $20,%xmm6 + movdqa %xmm15,%xmm7 + pslld $12,%xmm15 + por %xmm6,%xmm14 + psrld $20,%xmm7 + movdqa (%r11),%xmm6 + por %xmm7,%xmm15 + paddd %xmm14,%xmm10 + paddd %xmm15,%xmm11 + pxor %xmm10,%xmm2 + pxor %xmm11,%xmm3 +.byte 102,15,56,0,214 +.byte 102,15,56,0,222 + paddd %xmm2,%xmm4 + paddd %xmm3,%xmm5 + pxor %xmm4,%xmm14 + pxor %xmm5,%xmm15 + movdqa %xmm14,%xmm7 + pslld $7,%xmm14 + psrld $25,%xmm7 + movdqa %xmm15,%xmm6 + pslld $7,%xmm15 + por %xmm7,%xmm14 + psrld $25,%xmm6 + movdqa (%r10),%xmm7 + por %xmm6,%xmm15 + paddd %xmm13,%xmm8 + paddd %xmm14,%xmm9 + pxor %xmm8,%xmm3 + pxor %xmm9,%xmm0 +.byte 102,15,56,0,223 +.byte 102,15,56,0,199 + paddd %xmm3,%xmm4 + paddd %xmm0,%xmm5 + pxor %xmm4,%xmm13 + pxor %xmm5,%xmm14 + movdqa %xmm13,%xmm6 + pslld $12,%xmm13 + psrld $20,%xmm6 + movdqa %xmm14,%xmm7 + pslld $12,%xmm14 + por %xmm6,%xmm13 + psrld $20,%xmm7 + movdqa (%r11),%xmm6 + por %xmm7,%xmm14 + paddd %xmm13,%xmm8 + paddd %xmm14,%xmm9 + pxor %xmm8,%xmm3 + pxor %xmm9,%xmm0 +.byte 102,15,56,0,222 +.byte 102,15,56,0,198 + paddd %xmm3,%xmm4 + paddd %xmm0,%xmm5 + pxor %xmm4,%xmm13 + pxor %xmm5,%xmm14 + movdqa %xmm13,%xmm7 + pslld $7,%xmm13 + psrld $25,%xmm7 + movdqa %xmm14,%xmm6 + pslld $7,%xmm14 + por %xmm7,%xmm13 + psrld $25,%xmm6 + movdqa (%r10),%xmm7 + por %xmm6,%xmm14 + movdqa %xmm4,32(%rsp) + movdqa %xmm5,48(%rsp) + movdqa 0(%rsp),%xmm4 + movdqa 16(%rsp),%xmm5 + paddd %xmm15,%xmm10 + paddd %xmm12,%xmm11 + pxor %xmm10,%xmm1 + pxor %xmm11,%xmm2 +.byte 102,15,56,0,207 +.byte 102,15,56,0,215 + paddd %xmm1,%xmm4 + paddd %xmm2,%xmm5 + pxor %xmm4,%xmm15 + pxor %xmm5,%xmm12 + movdqa %xmm15,%xmm6 + pslld $12,%xmm15 + psrld $20,%xmm6 + movdqa %xmm12,%xmm7 + pslld $12,%xmm12 + por %xmm6,%xmm15 + psrld $20,%xmm7 + movdqa (%r11),%xmm6 + por %xmm7,%xmm12 + paddd %xmm15,%xmm10 + paddd %xmm12,%xmm11 + pxor %xmm10,%xmm1 + pxor %xmm11,%xmm2 +.byte 102,15,56,0,206 +.byte 102,15,56,0,214 + paddd %xmm1,%xmm4 + paddd %xmm2,%xmm5 + pxor %xmm4,%xmm15 + pxor %xmm5,%xmm12 + movdqa %xmm15,%xmm7 + pslld $7,%xmm15 + psrld $25,%xmm7 + movdqa %xmm12,%xmm6 + pslld $7,%xmm12 + por %xmm7,%xmm15 + psrld $25,%xmm6 + movdqa (%r10),%xmm7 + por %xmm6,%xmm12 + decl %eax + jnz L$oop4x + + paddd 64(%rsp),%xmm8 + paddd 80(%rsp),%xmm9 + paddd 96(%rsp),%xmm10 + paddd 112(%rsp),%xmm11 + + movdqa %xmm8,%xmm6 + punpckldq %xmm9,%xmm8 + movdqa %xmm10,%xmm7 + punpckldq %xmm11,%xmm10 + punpckhdq %xmm9,%xmm6 + punpckhdq %xmm11,%xmm7 + movdqa %xmm8,%xmm9 + punpcklqdq %xmm10,%xmm8 + movdqa %xmm6,%xmm11 + punpcklqdq %xmm7,%xmm6 + punpckhqdq %xmm10,%xmm9 + punpckhqdq %xmm7,%xmm11 + paddd 128-256(%rcx),%xmm12 + paddd 144-256(%rcx),%xmm13 + paddd 160-256(%rcx),%xmm14 + paddd 176-256(%rcx),%xmm15 + + movdqa %xmm8,0(%rsp) + movdqa %xmm9,16(%rsp) + movdqa 32(%rsp),%xmm8 + movdqa 48(%rsp),%xmm9 + + movdqa %xmm12,%xmm10 + punpckldq %xmm13,%xmm12 + movdqa %xmm14,%xmm7 + punpckldq %xmm15,%xmm14 + punpckhdq %xmm13,%xmm10 + punpckhdq %xmm15,%xmm7 + movdqa %xmm12,%xmm13 + punpcklqdq %xmm14,%xmm12 + movdqa %xmm10,%xmm15 + punpcklqdq %xmm7,%xmm10 + punpckhqdq %xmm14,%xmm13 + punpckhqdq %xmm7,%xmm15 + paddd 192-256(%rcx),%xmm4 + paddd 208-256(%rcx),%xmm5 + paddd 224-256(%rcx),%xmm8 + paddd 240-256(%rcx),%xmm9 + + movdqa %xmm6,32(%rsp) + movdqa %xmm11,48(%rsp) + + movdqa %xmm4,%xmm14 + punpckldq %xmm5,%xmm4 + movdqa %xmm8,%xmm7 + punpckldq %xmm9,%xmm8 + punpckhdq %xmm5,%xmm14 + punpckhdq %xmm9,%xmm7 + movdqa %xmm4,%xmm5 + punpcklqdq %xmm8,%xmm4 + movdqa %xmm14,%xmm9 + punpcklqdq %xmm7,%xmm14 + punpckhqdq %xmm8,%xmm5 + punpckhqdq %xmm7,%xmm9 + paddd 256-256(%rcx),%xmm0 + paddd 272-256(%rcx),%xmm1 + paddd 288-256(%rcx),%xmm2 + paddd 304-256(%rcx),%xmm3 + + movdqa %xmm0,%xmm8 + punpckldq %xmm1,%xmm0 + movdqa %xmm2,%xmm7 + punpckldq %xmm3,%xmm2 + punpckhdq %xmm1,%xmm8 + punpckhdq %xmm3,%xmm7 + movdqa %xmm0,%xmm1 + punpcklqdq %xmm2,%xmm0 + movdqa %xmm8,%xmm3 + punpcklqdq %xmm7,%xmm8 + punpckhqdq %xmm2,%xmm1 + punpckhqdq %xmm7,%xmm3 + cmpq $256,%rdx + jb L$tail4x + + movdqu 0(%rsi),%xmm6 + movdqu 16(%rsi),%xmm11 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm7 + pxor 0(%rsp),%xmm6 + pxor %xmm12,%xmm11 + pxor %xmm4,%xmm2 + pxor %xmm0,%xmm7 + + movdqu %xmm6,0(%rdi) + movdqu 64(%rsi),%xmm6 + movdqu %xmm11,16(%rdi) + movdqu 80(%rsi),%xmm11 + movdqu %xmm2,32(%rdi) + movdqu 96(%rsi),%xmm2 + movdqu %xmm7,48(%rdi) + movdqu 112(%rsi),%xmm7 + leaq 128(%rsi),%rsi + pxor 16(%rsp),%xmm6 + pxor %xmm13,%xmm11 + pxor %xmm5,%xmm2 + pxor %xmm1,%xmm7 + + movdqu %xmm6,64(%rdi) + movdqu 0(%rsi),%xmm6 + movdqu %xmm11,80(%rdi) + movdqu 16(%rsi),%xmm11 + movdqu %xmm2,96(%rdi) + movdqu 32(%rsi),%xmm2 + movdqu %xmm7,112(%rdi) + leaq 128(%rdi),%rdi + movdqu 48(%rsi),%xmm7 + pxor 32(%rsp),%xmm6 + pxor %xmm10,%xmm11 + pxor %xmm14,%xmm2 + pxor %xmm8,%xmm7 + + movdqu %xmm6,0(%rdi) + movdqu 64(%rsi),%xmm6 + movdqu %xmm11,16(%rdi) + movdqu 80(%rsi),%xmm11 + movdqu %xmm2,32(%rdi) + movdqu 96(%rsi),%xmm2 + movdqu %xmm7,48(%rdi) + movdqu 112(%rsi),%xmm7 + leaq 128(%rsi),%rsi + pxor 48(%rsp),%xmm6 + pxor %xmm15,%xmm11 + pxor %xmm9,%xmm2 + pxor %xmm3,%xmm7 + movdqu %xmm6,64(%rdi) + movdqu %xmm11,80(%rdi) + movdqu %xmm2,96(%rdi) + movdqu %xmm7,112(%rdi) + leaq 128(%rdi),%rdi + + subq $256,%rdx + jnz L$oop_outer4x + + jmp L$done4x + +L$tail4x: + cmpq $192,%rdx + jae L$192_or_more4x + cmpq $128,%rdx + jae L$128_or_more4x + cmpq $64,%rdx + jae L$64_or_more4x + + + xorq %r10,%r10 + + movdqa %xmm12,16(%rsp) + movdqa %xmm4,32(%rsp) + movdqa %xmm0,48(%rsp) + jmp L$oop_tail4x + +.p2align 5 +L$64_or_more4x: + movdqu 0(%rsi),%xmm6 + movdqu 16(%rsi),%xmm11 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm7 + pxor 0(%rsp),%xmm6 + pxor %xmm12,%xmm11 + pxor %xmm4,%xmm2 + pxor %xmm0,%xmm7 + movdqu %xmm6,0(%rdi) + movdqu %xmm11,16(%rdi) + movdqu %xmm2,32(%rdi) + movdqu %xmm7,48(%rdi) + je L$done4x + + movdqa 16(%rsp),%xmm6 + leaq 64(%rsi),%rsi + xorq %r10,%r10 + movdqa %xmm6,0(%rsp) + movdqa %xmm13,16(%rsp) + leaq 64(%rdi),%rdi + movdqa %xmm5,32(%rsp) + subq $64,%rdx + movdqa %xmm1,48(%rsp) + jmp L$oop_tail4x + +.p2align 5 +L$128_or_more4x: + movdqu 0(%rsi),%xmm6 + movdqu 16(%rsi),%xmm11 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm7 + pxor 0(%rsp),%xmm6 + pxor %xmm12,%xmm11 + pxor %xmm4,%xmm2 + pxor %xmm0,%xmm7 + + movdqu %xmm6,0(%rdi) + movdqu 64(%rsi),%xmm6 + movdqu %xmm11,16(%rdi) + movdqu 80(%rsi),%xmm11 + movdqu %xmm2,32(%rdi) + movdqu 96(%rsi),%xmm2 + movdqu %xmm7,48(%rdi) + movdqu 112(%rsi),%xmm7 + pxor 16(%rsp),%xmm6 + pxor %xmm13,%xmm11 + pxor %xmm5,%xmm2 + pxor %xmm1,%xmm7 + movdqu %xmm6,64(%rdi) + movdqu %xmm11,80(%rdi) + movdqu %xmm2,96(%rdi) + movdqu %xmm7,112(%rdi) + je L$done4x + + movdqa 32(%rsp),%xmm6 + leaq 128(%rsi),%rsi + xorq %r10,%r10 + movdqa %xmm6,0(%rsp) + movdqa %xmm10,16(%rsp) + leaq 128(%rdi),%rdi + movdqa %xmm14,32(%rsp) + subq $128,%rdx + movdqa %xmm8,48(%rsp) + jmp L$oop_tail4x + +.p2align 5 +L$192_or_more4x: + movdqu 0(%rsi),%xmm6 + movdqu 16(%rsi),%xmm11 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm7 + pxor 0(%rsp),%xmm6 + pxor %xmm12,%xmm11 + pxor %xmm4,%xmm2 + pxor %xmm0,%xmm7 + + movdqu %xmm6,0(%rdi) + movdqu 64(%rsi),%xmm6 + movdqu %xmm11,16(%rdi) + movdqu 80(%rsi),%xmm11 + movdqu %xmm2,32(%rdi) + movdqu 96(%rsi),%xmm2 + movdqu %xmm7,48(%rdi) + movdqu 112(%rsi),%xmm7 + leaq 128(%rsi),%rsi + pxor 16(%rsp),%xmm6 + pxor %xmm13,%xmm11 + pxor %xmm5,%xmm2 + pxor %xmm1,%xmm7 + + movdqu %xmm6,64(%rdi) + movdqu 0(%rsi),%xmm6 + movdqu %xmm11,80(%rdi) + movdqu 16(%rsi),%xmm11 + movdqu %xmm2,96(%rdi) + movdqu 32(%rsi),%xmm2 + movdqu %xmm7,112(%rdi) + leaq 128(%rdi),%rdi + movdqu 48(%rsi),%xmm7 + pxor 32(%rsp),%xmm6 + pxor %xmm10,%xmm11 + pxor %xmm14,%xmm2 + pxor %xmm8,%xmm7 + movdqu %xmm6,0(%rdi) + movdqu %xmm11,16(%rdi) + movdqu %xmm2,32(%rdi) + movdqu %xmm7,48(%rdi) + je L$done4x + + movdqa 48(%rsp),%xmm6 + leaq 64(%rsi),%rsi + xorq %r10,%r10 + movdqa %xmm6,0(%rsp) + movdqa %xmm15,16(%rsp) + leaq 64(%rdi),%rdi + movdqa %xmm9,32(%rsp) + subq $192,%rdx + movdqa %xmm3,48(%rsp) + +L$oop_tail4x: + movzbl (%rsi,%r10,1),%eax + movzbl (%rsp,%r10,1),%ecx + leaq 1(%r10),%r10 + xorl %ecx,%eax + movb %al,-1(%rdi,%r10,1) + decq %rdx + jnz L$oop_tail4x + +L$done4x: + leaq (%r9),%rsp + +L$4x_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +ChaCha20_4xop: + +L$ChaCha20_4xop: + movq %rsp,%r9 + + subq $0x140+8,%rsp + vzeroupper + + vmovdqa L$sigma(%rip),%xmm11 + vmovdqu (%rcx),%xmm3 + vmovdqu 16(%rcx),%xmm15 + vmovdqu (%r8),%xmm7 + leaq 256(%rsp),%rcx + + vpshufd $0x00,%xmm11,%xmm8 + vpshufd $0x55,%xmm11,%xmm9 + vmovdqa %xmm8,64(%rsp) + vpshufd $0xaa,%xmm11,%xmm10 + vmovdqa %xmm9,80(%rsp) + vpshufd $0xff,%xmm11,%xmm11 + vmovdqa %xmm10,96(%rsp) + vmovdqa %xmm11,112(%rsp) + + vpshufd $0x00,%xmm3,%xmm0 + vpshufd $0x55,%xmm3,%xmm1 + vmovdqa %xmm0,128-256(%rcx) + vpshufd $0xaa,%xmm3,%xmm2 + vmovdqa %xmm1,144-256(%rcx) + vpshufd $0xff,%xmm3,%xmm3 + vmovdqa %xmm2,160-256(%rcx) + vmovdqa %xmm3,176-256(%rcx) + + vpshufd $0x00,%xmm15,%xmm12 + vpshufd $0x55,%xmm15,%xmm13 + vmovdqa %xmm12,192-256(%rcx) + vpshufd $0xaa,%xmm15,%xmm14 + vmovdqa %xmm13,208-256(%rcx) + vpshufd $0xff,%xmm15,%xmm15 + vmovdqa %xmm14,224-256(%rcx) + vmovdqa %xmm15,240-256(%rcx) + + vpshufd $0x00,%xmm7,%xmm4 + vpshufd $0x55,%xmm7,%xmm5 + vpaddd L$inc(%rip),%xmm4,%xmm4 + vpshufd $0xaa,%xmm7,%xmm6 + vmovdqa %xmm5,272-256(%rcx) + vpshufd $0xff,%xmm7,%xmm7 + vmovdqa %xmm6,288-256(%rcx) + vmovdqa %xmm7,304-256(%rcx) + + jmp L$oop_enter4xop + +.p2align 5 +L$oop_outer4xop: + vmovdqa 64(%rsp),%xmm8 + vmovdqa 80(%rsp),%xmm9 + vmovdqa 96(%rsp),%xmm10 + vmovdqa 112(%rsp),%xmm11 + vmovdqa 128-256(%rcx),%xmm0 + vmovdqa 144-256(%rcx),%xmm1 + vmovdqa 160-256(%rcx),%xmm2 + vmovdqa 176-256(%rcx),%xmm3 + vmovdqa 192-256(%rcx),%xmm12 + vmovdqa 208-256(%rcx),%xmm13 + vmovdqa 224-256(%rcx),%xmm14 + vmovdqa 240-256(%rcx),%xmm15 + vmovdqa 256-256(%rcx),%xmm4 + vmovdqa 272-256(%rcx),%xmm5 + vmovdqa 288-256(%rcx),%xmm6 + vmovdqa 304-256(%rcx),%xmm7 + vpaddd L$four(%rip),%xmm4,%xmm4 + +L$oop_enter4xop: + movl $10,%eax + vmovdqa %xmm4,256-256(%rcx) + jmp L$oop4xop + +.p2align 5 +L$oop4xop: + vpaddd %xmm0,%xmm8,%xmm8 + vpaddd %xmm1,%xmm9,%xmm9 + vpaddd %xmm2,%xmm10,%xmm10 + vpaddd %xmm3,%xmm11,%xmm11 + vpxor %xmm4,%xmm8,%xmm4 + vpxor %xmm5,%xmm9,%xmm5 + vpxor %xmm6,%xmm10,%xmm6 + vpxor %xmm7,%xmm11,%xmm7 +.byte 143,232,120,194,228,16 +.byte 143,232,120,194,237,16 +.byte 143,232,120,194,246,16 +.byte 143,232,120,194,255,16 + vpaddd %xmm4,%xmm12,%xmm12 + vpaddd %xmm5,%xmm13,%xmm13 + vpaddd %xmm6,%xmm14,%xmm14 + vpaddd %xmm7,%xmm15,%xmm15 + vpxor %xmm0,%xmm12,%xmm0 + vpxor %xmm1,%xmm13,%xmm1 + vpxor %xmm14,%xmm2,%xmm2 + vpxor %xmm15,%xmm3,%xmm3 +.byte 143,232,120,194,192,12 +.byte 143,232,120,194,201,12 +.byte 143,232,120,194,210,12 +.byte 143,232,120,194,219,12 + vpaddd %xmm8,%xmm0,%xmm8 + vpaddd %xmm9,%xmm1,%xmm9 + vpaddd %xmm2,%xmm10,%xmm10 + vpaddd %xmm3,%xmm11,%xmm11 + vpxor %xmm4,%xmm8,%xmm4 + vpxor %xmm5,%xmm9,%xmm5 + vpxor %xmm6,%xmm10,%xmm6 + vpxor %xmm7,%xmm11,%xmm7 +.byte 143,232,120,194,228,8 +.byte 143,232,120,194,237,8 +.byte 143,232,120,194,246,8 +.byte 143,232,120,194,255,8 + vpaddd %xmm4,%xmm12,%xmm12 + vpaddd %xmm5,%xmm13,%xmm13 + vpaddd %xmm6,%xmm14,%xmm14 + vpaddd %xmm7,%xmm15,%xmm15 + vpxor %xmm0,%xmm12,%xmm0 + vpxor %xmm1,%xmm13,%xmm1 + vpxor %xmm14,%xmm2,%xmm2 + vpxor %xmm15,%xmm3,%xmm3 +.byte 143,232,120,194,192,7 +.byte 143,232,120,194,201,7 +.byte 143,232,120,194,210,7 +.byte 143,232,120,194,219,7 + vpaddd %xmm1,%xmm8,%xmm8 + vpaddd %xmm2,%xmm9,%xmm9 + vpaddd %xmm3,%xmm10,%xmm10 + vpaddd %xmm0,%xmm11,%xmm11 + vpxor %xmm7,%xmm8,%xmm7 + vpxor %xmm4,%xmm9,%xmm4 + vpxor %xmm5,%xmm10,%xmm5 + vpxor %xmm6,%xmm11,%xmm6 +.byte 143,232,120,194,255,16 +.byte 143,232,120,194,228,16 +.byte 143,232,120,194,237,16 +.byte 143,232,120,194,246,16 + vpaddd %xmm7,%xmm14,%xmm14 + vpaddd %xmm4,%xmm15,%xmm15 + vpaddd %xmm5,%xmm12,%xmm12 + vpaddd %xmm6,%xmm13,%xmm13 + vpxor %xmm1,%xmm14,%xmm1 + vpxor %xmm2,%xmm15,%xmm2 + vpxor %xmm12,%xmm3,%xmm3 + vpxor %xmm13,%xmm0,%xmm0 +.byte 143,232,120,194,201,12 +.byte 143,232,120,194,210,12 +.byte 143,232,120,194,219,12 +.byte 143,232,120,194,192,12 + vpaddd %xmm8,%xmm1,%xmm8 + vpaddd %xmm9,%xmm2,%xmm9 + vpaddd %xmm3,%xmm10,%xmm10 + vpaddd %xmm0,%xmm11,%xmm11 + vpxor %xmm7,%xmm8,%xmm7 + vpxor %xmm4,%xmm9,%xmm4 + vpxor %xmm5,%xmm10,%xmm5 + vpxor %xmm6,%xmm11,%xmm6 +.byte 143,232,120,194,255,8 +.byte 143,232,120,194,228,8 +.byte 143,232,120,194,237,8 +.byte 143,232,120,194,246,8 + vpaddd %xmm7,%xmm14,%xmm14 + vpaddd %xmm4,%xmm15,%xmm15 + vpaddd %xmm5,%xmm12,%xmm12 + vpaddd %xmm6,%xmm13,%xmm13 + vpxor %xmm1,%xmm14,%xmm1 + vpxor %xmm2,%xmm15,%xmm2 + vpxor %xmm12,%xmm3,%xmm3 + vpxor %xmm13,%xmm0,%xmm0 +.byte 143,232,120,194,201,7 +.byte 143,232,120,194,210,7 +.byte 143,232,120,194,219,7 +.byte 143,232,120,194,192,7 + decl %eax + jnz L$oop4xop + + vpaddd 64(%rsp),%xmm8,%xmm8 + vpaddd 80(%rsp),%xmm9,%xmm9 + vpaddd 96(%rsp),%xmm10,%xmm10 + vpaddd 112(%rsp),%xmm11,%xmm11 + + vmovdqa %xmm14,32(%rsp) + vmovdqa %xmm15,48(%rsp) + + vpunpckldq %xmm9,%xmm8,%xmm14 + vpunpckldq %xmm11,%xmm10,%xmm15 + vpunpckhdq %xmm9,%xmm8,%xmm8 + vpunpckhdq %xmm11,%xmm10,%xmm10 + vpunpcklqdq %xmm15,%xmm14,%xmm9 + vpunpckhqdq %xmm15,%xmm14,%xmm14 + vpunpcklqdq %xmm10,%xmm8,%xmm11 + vpunpckhqdq %xmm10,%xmm8,%xmm8 + vpaddd 128-256(%rcx),%xmm0,%xmm0 + vpaddd 144-256(%rcx),%xmm1,%xmm1 + vpaddd 160-256(%rcx),%xmm2,%xmm2 + vpaddd 176-256(%rcx),%xmm3,%xmm3 + + vmovdqa %xmm9,0(%rsp) + vmovdqa %xmm14,16(%rsp) + vmovdqa 32(%rsp),%xmm9 + vmovdqa 48(%rsp),%xmm14 + + vpunpckldq %xmm1,%xmm0,%xmm10 + vpunpckldq %xmm3,%xmm2,%xmm15 + vpunpckhdq %xmm1,%xmm0,%xmm0 + vpunpckhdq %xmm3,%xmm2,%xmm2 + vpunpcklqdq %xmm15,%xmm10,%xmm1 + vpunpckhqdq %xmm15,%xmm10,%xmm10 + vpunpcklqdq %xmm2,%xmm0,%xmm3 + vpunpckhqdq %xmm2,%xmm0,%xmm0 + vpaddd 192-256(%rcx),%xmm12,%xmm12 + vpaddd 208-256(%rcx),%xmm13,%xmm13 + vpaddd 224-256(%rcx),%xmm9,%xmm9 + vpaddd 240-256(%rcx),%xmm14,%xmm14 + + vpunpckldq %xmm13,%xmm12,%xmm2 + vpunpckldq %xmm14,%xmm9,%xmm15 + vpunpckhdq %xmm13,%xmm12,%xmm12 + vpunpckhdq %xmm14,%xmm9,%xmm9 + vpunpcklqdq %xmm15,%xmm2,%xmm13 + vpunpckhqdq %xmm15,%xmm2,%xmm2 + vpunpcklqdq %xmm9,%xmm12,%xmm14 + vpunpckhqdq %xmm9,%xmm12,%xmm12 + vpaddd 256-256(%rcx),%xmm4,%xmm4 + vpaddd 272-256(%rcx),%xmm5,%xmm5 + vpaddd 288-256(%rcx),%xmm6,%xmm6 + vpaddd 304-256(%rcx),%xmm7,%xmm7 + + vpunpckldq %xmm5,%xmm4,%xmm9 + vpunpckldq %xmm7,%xmm6,%xmm15 + vpunpckhdq %xmm5,%xmm4,%xmm4 + vpunpckhdq %xmm7,%xmm6,%xmm6 + vpunpcklqdq %xmm15,%xmm9,%xmm5 + vpunpckhqdq %xmm15,%xmm9,%xmm9 + vpunpcklqdq %xmm6,%xmm4,%xmm7 + vpunpckhqdq %xmm6,%xmm4,%xmm4 + vmovdqa 0(%rsp),%xmm6 + vmovdqa 16(%rsp),%xmm15 + + cmpq $256,%rdx + jb L$tail4xop + + vpxor 0(%rsi),%xmm6,%xmm6 + vpxor 16(%rsi),%xmm1,%xmm1 + vpxor 32(%rsi),%xmm13,%xmm13 + vpxor 48(%rsi),%xmm5,%xmm5 + vpxor 64(%rsi),%xmm15,%xmm15 + vpxor 80(%rsi),%xmm10,%xmm10 + vpxor 96(%rsi),%xmm2,%xmm2 + vpxor 112(%rsi),%xmm9,%xmm9 + leaq 128(%rsi),%rsi + vpxor 0(%rsi),%xmm11,%xmm11 + vpxor 16(%rsi),%xmm3,%xmm3 + vpxor 32(%rsi),%xmm14,%xmm14 + vpxor 48(%rsi),%xmm7,%xmm7 + vpxor 64(%rsi),%xmm8,%xmm8 + vpxor 80(%rsi),%xmm0,%xmm0 + vpxor 96(%rsi),%xmm12,%xmm12 + vpxor 112(%rsi),%xmm4,%xmm4 + leaq 128(%rsi),%rsi + + vmovdqu %xmm6,0(%rdi) + vmovdqu %xmm1,16(%rdi) + vmovdqu %xmm13,32(%rdi) + vmovdqu %xmm5,48(%rdi) + vmovdqu %xmm15,64(%rdi) + vmovdqu %xmm10,80(%rdi) + vmovdqu %xmm2,96(%rdi) + vmovdqu %xmm9,112(%rdi) + leaq 128(%rdi),%rdi + vmovdqu %xmm11,0(%rdi) + vmovdqu %xmm3,16(%rdi) + vmovdqu %xmm14,32(%rdi) + vmovdqu %xmm7,48(%rdi) + vmovdqu %xmm8,64(%rdi) + vmovdqu %xmm0,80(%rdi) + vmovdqu %xmm12,96(%rdi) + vmovdqu %xmm4,112(%rdi) + leaq 128(%rdi),%rdi + + subq $256,%rdx + jnz L$oop_outer4xop + + jmp L$done4xop + +.p2align 5 +L$tail4xop: + cmpq $192,%rdx + jae L$192_or_more4xop + cmpq $128,%rdx + jae L$128_or_more4xop + cmpq $64,%rdx + jae L$64_or_more4xop + + xorq %r10,%r10 + vmovdqa %xmm6,0(%rsp) + vmovdqa %xmm1,16(%rsp) + vmovdqa %xmm13,32(%rsp) + vmovdqa %xmm5,48(%rsp) + jmp L$oop_tail4xop + +.p2align 5 +L$64_or_more4xop: + vpxor 0(%rsi),%xmm6,%xmm6 + vpxor 16(%rsi),%xmm1,%xmm1 + vpxor 32(%rsi),%xmm13,%xmm13 + vpxor 48(%rsi),%xmm5,%xmm5 + vmovdqu %xmm6,0(%rdi) + vmovdqu %xmm1,16(%rdi) + vmovdqu %xmm13,32(%rdi) + vmovdqu %xmm5,48(%rdi) + je L$done4xop + + leaq 64(%rsi),%rsi + vmovdqa %xmm15,0(%rsp) + xorq %r10,%r10 + vmovdqa %xmm10,16(%rsp) + leaq 64(%rdi),%rdi + vmovdqa %xmm2,32(%rsp) + subq $64,%rdx + vmovdqa %xmm9,48(%rsp) + jmp L$oop_tail4xop + +.p2align 5 +L$128_or_more4xop: + vpxor 0(%rsi),%xmm6,%xmm6 + vpxor 16(%rsi),%xmm1,%xmm1 + vpxor 32(%rsi),%xmm13,%xmm13 + vpxor 48(%rsi),%xmm5,%xmm5 + vpxor 64(%rsi),%xmm15,%xmm15 + vpxor 80(%rsi),%xmm10,%xmm10 + vpxor 96(%rsi),%xmm2,%xmm2 + vpxor 112(%rsi),%xmm9,%xmm9 + + vmovdqu %xmm6,0(%rdi) + vmovdqu %xmm1,16(%rdi) + vmovdqu %xmm13,32(%rdi) + vmovdqu %xmm5,48(%rdi) + vmovdqu %xmm15,64(%rdi) + vmovdqu %xmm10,80(%rdi) + vmovdqu %xmm2,96(%rdi) + vmovdqu %xmm9,112(%rdi) + je L$done4xop + + leaq 128(%rsi),%rsi + vmovdqa %xmm11,0(%rsp) + xorq %r10,%r10 + vmovdqa %xmm3,16(%rsp) + leaq 128(%rdi),%rdi + vmovdqa %xmm14,32(%rsp) + subq $128,%rdx + vmovdqa %xmm7,48(%rsp) + jmp L$oop_tail4xop + +.p2align 5 +L$192_or_more4xop: + vpxor 0(%rsi),%xmm6,%xmm6 + vpxor 16(%rsi),%xmm1,%xmm1 + vpxor 32(%rsi),%xmm13,%xmm13 + vpxor 48(%rsi),%xmm5,%xmm5 + vpxor 64(%rsi),%xmm15,%xmm15 + vpxor 80(%rsi),%xmm10,%xmm10 + vpxor 96(%rsi),%xmm2,%xmm2 + vpxor 112(%rsi),%xmm9,%xmm9 + leaq 128(%rsi),%rsi + vpxor 0(%rsi),%xmm11,%xmm11 + vpxor 16(%rsi),%xmm3,%xmm3 + vpxor 32(%rsi),%xmm14,%xmm14 + vpxor 48(%rsi),%xmm7,%xmm7 + + vmovdqu %xmm6,0(%rdi) + vmovdqu %xmm1,16(%rdi) + vmovdqu %xmm13,32(%rdi) + vmovdqu %xmm5,48(%rdi) + vmovdqu %xmm15,64(%rdi) + vmovdqu %xmm10,80(%rdi) + vmovdqu %xmm2,96(%rdi) + vmovdqu %xmm9,112(%rdi) + leaq 128(%rdi),%rdi + vmovdqu %xmm11,0(%rdi) + vmovdqu %xmm3,16(%rdi) + vmovdqu %xmm14,32(%rdi) + vmovdqu %xmm7,48(%rdi) + je L$done4xop + + leaq 64(%rsi),%rsi + vmovdqa %xmm8,0(%rsp) + xorq %r10,%r10 + vmovdqa %xmm0,16(%rsp) + leaq 64(%rdi),%rdi + vmovdqa %xmm12,32(%rsp) + subq $192,%rdx + vmovdqa %xmm4,48(%rsp) + +L$oop_tail4xop: + movzbl (%rsi,%r10,1),%eax + movzbl (%rsp,%r10,1),%ecx + leaq 1(%r10),%r10 + xorl %ecx,%eax + movb %al,-1(%rdi,%r10,1) + decq %rdx + jnz L$oop_tail4xop + +L$done4xop: + vzeroupper + leaq (%r9),%rsp + +L$4xop_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +ChaCha20_8x: + +L$ChaCha20_8x: + movq %rsp,%r9 + + subq $0x280+8,%rsp + andq $-32,%rsp + vzeroupper + + + + + + + + + + + vbroadcasti128 L$sigma(%rip),%ymm11 + vbroadcasti128 (%rcx),%ymm3 + vbroadcasti128 16(%rcx),%ymm15 + vbroadcasti128 (%r8),%ymm7 + leaq 256(%rsp),%rcx + leaq 512(%rsp),%rax + leaq L$rot16(%rip),%r10 + leaq L$rot24(%rip),%r11 + + vpshufd $0x00,%ymm11,%ymm8 + vpshufd $0x55,%ymm11,%ymm9 + vmovdqa %ymm8,128-256(%rcx) + vpshufd $0xaa,%ymm11,%ymm10 + vmovdqa %ymm9,160-256(%rcx) + vpshufd $0xff,%ymm11,%ymm11 + vmovdqa %ymm10,192-256(%rcx) + vmovdqa %ymm11,224-256(%rcx) + + vpshufd $0x00,%ymm3,%ymm0 + vpshufd $0x55,%ymm3,%ymm1 + vmovdqa %ymm0,256-256(%rcx) + vpshufd $0xaa,%ymm3,%ymm2 + vmovdqa %ymm1,288-256(%rcx) + vpshufd $0xff,%ymm3,%ymm3 + vmovdqa %ymm2,320-256(%rcx) + vmovdqa %ymm3,352-256(%rcx) + + vpshufd $0x00,%ymm15,%ymm12 + vpshufd $0x55,%ymm15,%ymm13 + vmovdqa %ymm12,384-512(%rax) + vpshufd $0xaa,%ymm15,%ymm14 + vmovdqa %ymm13,416-512(%rax) + vpshufd $0xff,%ymm15,%ymm15 + vmovdqa %ymm14,448-512(%rax) + vmovdqa %ymm15,480-512(%rax) + + vpshufd $0x00,%ymm7,%ymm4 + vpshufd $0x55,%ymm7,%ymm5 + vpaddd L$incy(%rip),%ymm4,%ymm4 + vpshufd $0xaa,%ymm7,%ymm6 + vmovdqa %ymm5,544-512(%rax) + vpshufd $0xff,%ymm7,%ymm7 + vmovdqa %ymm6,576-512(%rax) + vmovdqa %ymm7,608-512(%rax) + + jmp L$oop_enter8x + +.p2align 5 +L$oop_outer8x: + vmovdqa 128-256(%rcx),%ymm8 + vmovdqa 160-256(%rcx),%ymm9 + vmovdqa 192-256(%rcx),%ymm10 + vmovdqa 224-256(%rcx),%ymm11 + vmovdqa 256-256(%rcx),%ymm0 + vmovdqa 288-256(%rcx),%ymm1 + vmovdqa 320-256(%rcx),%ymm2 + vmovdqa 352-256(%rcx),%ymm3 + vmovdqa 384-512(%rax),%ymm12 + vmovdqa 416-512(%rax),%ymm13 + vmovdqa 448-512(%rax),%ymm14 + vmovdqa 480-512(%rax),%ymm15 + vmovdqa 512-512(%rax),%ymm4 + vmovdqa 544-512(%rax),%ymm5 + vmovdqa 576-512(%rax),%ymm6 + vmovdqa 608-512(%rax),%ymm7 + vpaddd L$eight(%rip),%ymm4,%ymm4 + +L$oop_enter8x: + vmovdqa %ymm14,64(%rsp) + vmovdqa %ymm15,96(%rsp) + vbroadcasti128 (%r10),%ymm15 + vmovdqa %ymm4,512-512(%rax) + movl $10,%eax + jmp L$oop8x + +.p2align 5 +L$oop8x: + vpaddd %ymm0,%ymm8,%ymm8 + vpxor %ymm4,%ymm8,%ymm4 + vpshufb %ymm15,%ymm4,%ymm4 + vpaddd %ymm1,%ymm9,%ymm9 + vpxor %ymm5,%ymm9,%ymm5 + vpshufb %ymm15,%ymm5,%ymm5 + vpaddd %ymm4,%ymm12,%ymm12 + vpxor %ymm0,%ymm12,%ymm0 + vpslld $12,%ymm0,%ymm14 + vpsrld $20,%ymm0,%ymm0 + vpor %ymm0,%ymm14,%ymm0 + vbroadcasti128 (%r11),%ymm14 + vpaddd %ymm5,%ymm13,%ymm13 + vpxor %ymm1,%ymm13,%ymm1 + vpslld $12,%ymm1,%ymm15 + vpsrld $20,%ymm1,%ymm1 + vpor %ymm1,%ymm15,%ymm1 + vpaddd %ymm0,%ymm8,%ymm8 + vpxor %ymm4,%ymm8,%ymm4 + vpshufb %ymm14,%ymm4,%ymm4 + vpaddd %ymm1,%ymm9,%ymm9 + vpxor %ymm5,%ymm9,%ymm5 + vpshufb %ymm14,%ymm5,%ymm5 + vpaddd %ymm4,%ymm12,%ymm12 + vpxor %ymm0,%ymm12,%ymm0 + vpslld $7,%ymm0,%ymm15 + vpsrld $25,%ymm0,%ymm0 + vpor %ymm0,%ymm15,%ymm0 + vbroadcasti128 (%r10),%ymm15 + vpaddd %ymm5,%ymm13,%ymm13 + vpxor %ymm1,%ymm13,%ymm1 + vpslld $7,%ymm1,%ymm14 + vpsrld $25,%ymm1,%ymm1 + vpor %ymm1,%ymm14,%ymm1 + vmovdqa %ymm12,0(%rsp) + vmovdqa %ymm13,32(%rsp) + vmovdqa 64(%rsp),%ymm12 + vmovdqa 96(%rsp),%ymm13 + vpaddd %ymm2,%ymm10,%ymm10 + vpxor %ymm6,%ymm10,%ymm6 + vpshufb %ymm15,%ymm6,%ymm6 + vpaddd %ymm3,%ymm11,%ymm11 + vpxor %ymm7,%ymm11,%ymm7 + vpshufb %ymm15,%ymm7,%ymm7 + vpaddd %ymm6,%ymm12,%ymm12 + vpxor %ymm2,%ymm12,%ymm2 + vpslld $12,%ymm2,%ymm14 + vpsrld $20,%ymm2,%ymm2 + vpor %ymm2,%ymm14,%ymm2 + vbroadcasti128 (%r11),%ymm14 + vpaddd %ymm7,%ymm13,%ymm13 + vpxor %ymm3,%ymm13,%ymm3 + vpslld $12,%ymm3,%ymm15 + vpsrld $20,%ymm3,%ymm3 + vpor %ymm3,%ymm15,%ymm3 + vpaddd %ymm2,%ymm10,%ymm10 + vpxor %ymm6,%ymm10,%ymm6 + vpshufb %ymm14,%ymm6,%ymm6 + vpaddd %ymm3,%ymm11,%ymm11 + vpxor %ymm7,%ymm11,%ymm7 + vpshufb %ymm14,%ymm7,%ymm7 + vpaddd %ymm6,%ymm12,%ymm12 + vpxor %ymm2,%ymm12,%ymm2 + vpslld $7,%ymm2,%ymm15 + vpsrld $25,%ymm2,%ymm2 + vpor %ymm2,%ymm15,%ymm2 + vbroadcasti128 (%r10),%ymm15 + vpaddd %ymm7,%ymm13,%ymm13 + vpxor %ymm3,%ymm13,%ymm3 + vpslld $7,%ymm3,%ymm14 + vpsrld $25,%ymm3,%ymm3 + vpor %ymm3,%ymm14,%ymm3 + vpaddd %ymm1,%ymm8,%ymm8 + vpxor %ymm7,%ymm8,%ymm7 + vpshufb %ymm15,%ymm7,%ymm7 + vpaddd %ymm2,%ymm9,%ymm9 + vpxor %ymm4,%ymm9,%ymm4 + vpshufb %ymm15,%ymm4,%ymm4 + vpaddd %ymm7,%ymm12,%ymm12 + vpxor %ymm1,%ymm12,%ymm1 + vpslld $12,%ymm1,%ymm14 + vpsrld $20,%ymm1,%ymm1 + vpor %ymm1,%ymm14,%ymm1 + vbroadcasti128 (%r11),%ymm14 + vpaddd %ymm4,%ymm13,%ymm13 + vpxor %ymm2,%ymm13,%ymm2 + vpslld $12,%ymm2,%ymm15 + vpsrld $20,%ymm2,%ymm2 + vpor %ymm2,%ymm15,%ymm2 + vpaddd %ymm1,%ymm8,%ymm8 + vpxor %ymm7,%ymm8,%ymm7 + vpshufb %ymm14,%ymm7,%ymm7 + vpaddd %ymm2,%ymm9,%ymm9 + vpxor %ymm4,%ymm9,%ymm4 + vpshufb %ymm14,%ymm4,%ymm4 + vpaddd %ymm7,%ymm12,%ymm12 + vpxor %ymm1,%ymm12,%ymm1 + vpslld $7,%ymm1,%ymm15 + vpsrld $25,%ymm1,%ymm1 + vpor %ymm1,%ymm15,%ymm1 + vbroadcasti128 (%r10),%ymm15 + vpaddd %ymm4,%ymm13,%ymm13 + vpxor %ymm2,%ymm13,%ymm2 + vpslld $7,%ymm2,%ymm14 + vpsrld $25,%ymm2,%ymm2 + vpor %ymm2,%ymm14,%ymm2 + vmovdqa %ymm12,64(%rsp) + vmovdqa %ymm13,96(%rsp) + vmovdqa 0(%rsp),%ymm12 + vmovdqa 32(%rsp),%ymm13 + vpaddd %ymm3,%ymm10,%ymm10 + vpxor %ymm5,%ymm10,%ymm5 + vpshufb %ymm15,%ymm5,%ymm5 + vpaddd %ymm0,%ymm11,%ymm11 + vpxor %ymm6,%ymm11,%ymm6 + vpshufb %ymm15,%ymm6,%ymm6 + vpaddd %ymm5,%ymm12,%ymm12 + vpxor %ymm3,%ymm12,%ymm3 + vpslld $12,%ymm3,%ymm14 + vpsrld $20,%ymm3,%ymm3 + vpor %ymm3,%ymm14,%ymm3 + vbroadcasti128 (%r11),%ymm14 + vpaddd %ymm6,%ymm13,%ymm13 + vpxor %ymm0,%ymm13,%ymm0 + vpslld $12,%ymm0,%ymm15 + vpsrld $20,%ymm0,%ymm0 + vpor %ymm0,%ymm15,%ymm0 + vpaddd %ymm3,%ymm10,%ymm10 + vpxor %ymm5,%ymm10,%ymm5 + vpshufb %ymm14,%ymm5,%ymm5 + vpaddd %ymm0,%ymm11,%ymm11 + vpxor %ymm6,%ymm11,%ymm6 + vpshufb %ymm14,%ymm6,%ymm6 + vpaddd %ymm5,%ymm12,%ymm12 + vpxor %ymm3,%ymm12,%ymm3 + vpslld $7,%ymm3,%ymm15 + vpsrld $25,%ymm3,%ymm3 + vpor %ymm3,%ymm15,%ymm3 + vbroadcasti128 (%r10),%ymm15 + vpaddd %ymm6,%ymm13,%ymm13 + vpxor %ymm0,%ymm13,%ymm0 + vpslld $7,%ymm0,%ymm14 + vpsrld $25,%ymm0,%ymm0 + vpor %ymm0,%ymm14,%ymm0 + decl %eax + jnz L$oop8x + + leaq 512(%rsp),%rax + vpaddd 128-256(%rcx),%ymm8,%ymm8 + vpaddd 160-256(%rcx),%ymm9,%ymm9 + vpaddd 192-256(%rcx),%ymm10,%ymm10 + vpaddd 224-256(%rcx),%ymm11,%ymm11 + + vpunpckldq %ymm9,%ymm8,%ymm14 + vpunpckldq %ymm11,%ymm10,%ymm15 + vpunpckhdq %ymm9,%ymm8,%ymm8 + vpunpckhdq %ymm11,%ymm10,%ymm10 + vpunpcklqdq %ymm15,%ymm14,%ymm9 + vpunpckhqdq %ymm15,%ymm14,%ymm14 + vpunpcklqdq %ymm10,%ymm8,%ymm11 + vpunpckhqdq %ymm10,%ymm8,%ymm8 + vpaddd 256-256(%rcx),%ymm0,%ymm0 + vpaddd 288-256(%rcx),%ymm1,%ymm1 + vpaddd 320-256(%rcx),%ymm2,%ymm2 + vpaddd 352-256(%rcx),%ymm3,%ymm3 + + vpunpckldq %ymm1,%ymm0,%ymm10 + vpunpckldq %ymm3,%ymm2,%ymm15 + vpunpckhdq %ymm1,%ymm0,%ymm0 + vpunpckhdq %ymm3,%ymm2,%ymm2 + vpunpcklqdq %ymm15,%ymm10,%ymm1 + vpunpckhqdq %ymm15,%ymm10,%ymm10 + vpunpcklqdq %ymm2,%ymm0,%ymm3 + vpunpckhqdq %ymm2,%ymm0,%ymm0 + vperm2i128 $0x20,%ymm1,%ymm9,%ymm15 + vperm2i128 $0x31,%ymm1,%ymm9,%ymm1 + vperm2i128 $0x20,%ymm10,%ymm14,%ymm9 + vperm2i128 $0x31,%ymm10,%ymm14,%ymm10 + vperm2i128 $0x20,%ymm3,%ymm11,%ymm14 + vperm2i128 $0x31,%ymm3,%ymm11,%ymm3 + vperm2i128 $0x20,%ymm0,%ymm8,%ymm11 + vperm2i128 $0x31,%ymm0,%ymm8,%ymm0 + vmovdqa %ymm15,0(%rsp) + vmovdqa %ymm9,32(%rsp) + vmovdqa 64(%rsp),%ymm15 + vmovdqa 96(%rsp),%ymm9 + + vpaddd 384-512(%rax),%ymm12,%ymm12 + vpaddd 416-512(%rax),%ymm13,%ymm13 + vpaddd 448-512(%rax),%ymm15,%ymm15 + vpaddd 480-512(%rax),%ymm9,%ymm9 + + vpunpckldq %ymm13,%ymm12,%ymm2 + vpunpckldq %ymm9,%ymm15,%ymm8 + vpunpckhdq %ymm13,%ymm12,%ymm12 + vpunpckhdq %ymm9,%ymm15,%ymm15 + vpunpcklqdq %ymm8,%ymm2,%ymm13 + vpunpckhqdq %ymm8,%ymm2,%ymm2 + vpunpcklqdq %ymm15,%ymm12,%ymm9 + vpunpckhqdq %ymm15,%ymm12,%ymm12 + vpaddd 512-512(%rax),%ymm4,%ymm4 + vpaddd 544-512(%rax),%ymm5,%ymm5 + vpaddd 576-512(%rax),%ymm6,%ymm6 + vpaddd 608-512(%rax),%ymm7,%ymm7 + + vpunpckldq %ymm5,%ymm4,%ymm15 + vpunpckldq %ymm7,%ymm6,%ymm8 + vpunpckhdq %ymm5,%ymm4,%ymm4 + vpunpckhdq %ymm7,%ymm6,%ymm6 + vpunpcklqdq %ymm8,%ymm15,%ymm5 + vpunpckhqdq %ymm8,%ymm15,%ymm15 + vpunpcklqdq %ymm6,%ymm4,%ymm7 + vpunpckhqdq %ymm6,%ymm4,%ymm4 + vperm2i128 $0x20,%ymm5,%ymm13,%ymm8 + vperm2i128 $0x31,%ymm5,%ymm13,%ymm5 + vperm2i128 $0x20,%ymm15,%ymm2,%ymm13 + vperm2i128 $0x31,%ymm15,%ymm2,%ymm15 + vperm2i128 $0x20,%ymm7,%ymm9,%ymm2 + vperm2i128 $0x31,%ymm7,%ymm9,%ymm7 + vperm2i128 $0x20,%ymm4,%ymm12,%ymm9 + vperm2i128 $0x31,%ymm4,%ymm12,%ymm4 + vmovdqa 0(%rsp),%ymm6 + vmovdqa 32(%rsp),%ymm12 + + cmpq $512,%rdx + jb L$tail8x + + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + leaq 128(%rsi),%rsi + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + leaq 128(%rdi),%rdi + + vpxor 0(%rsi),%ymm12,%ymm12 + vpxor 32(%rsi),%ymm13,%ymm13 + vpxor 64(%rsi),%ymm10,%ymm10 + vpxor 96(%rsi),%ymm15,%ymm15 + leaq 128(%rsi),%rsi + vmovdqu %ymm12,0(%rdi) + vmovdqu %ymm13,32(%rdi) + vmovdqu %ymm10,64(%rdi) + vmovdqu %ymm15,96(%rdi) + leaq 128(%rdi),%rdi + + vpxor 0(%rsi),%ymm14,%ymm14 + vpxor 32(%rsi),%ymm2,%ymm2 + vpxor 64(%rsi),%ymm3,%ymm3 + vpxor 96(%rsi),%ymm7,%ymm7 + leaq 128(%rsi),%rsi + vmovdqu %ymm14,0(%rdi) + vmovdqu %ymm2,32(%rdi) + vmovdqu %ymm3,64(%rdi) + vmovdqu %ymm7,96(%rdi) + leaq 128(%rdi),%rdi + + vpxor 0(%rsi),%ymm11,%ymm11 + vpxor 32(%rsi),%ymm9,%ymm9 + vpxor 64(%rsi),%ymm0,%ymm0 + vpxor 96(%rsi),%ymm4,%ymm4 + leaq 128(%rsi),%rsi + vmovdqu %ymm11,0(%rdi) + vmovdqu %ymm9,32(%rdi) + vmovdqu %ymm0,64(%rdi) + vmovdqu %ymm4,96(%rdi) + leaq 128(%rdi),%rdi + + subq $512,%rdx + jnz L$oop_outer8x + + jmp L$done8x + +L$tail8x: + cmpq $448,%rdx + jae L$448_or_more8x + cmpq $384,%rdx + jae L$384_or_more8x + cmpq $320,%rdx + jae L$320_or_more8x + cmpq $256,%rdx + jae L$256_or_more8x + cmpq $192,%rdx + jae L$192_or_more8x + cmpq $128,%rdx + jae L$128_or_more8x + cmpq $64,%rdx + jae L$64_or_more8x + + xorq %r10,%r10 + vmovdqa %ymm6,0(%rsp) + vmovdqa %ymm8,32(%rsp) + jmp L$oop_tail8x + +.p2align 5 +L$64_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + je L$done8x + + leaq 64(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm1,0(%rsp) + leaq 64(%rdi),%rdi + subq $64,%rdx + vmovdqa %ymm5,32(%rsp) + jmp L$oop_tail8x + +.p2align 5 +L$128_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + je L$done8x + + leaq 128(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm12,0(%rsp) + leaq 128(%rdi),%rdi + subq $128,%rdx + vmovdqa %ymm13,32(%rsp) + jmp L$oop_tail8x + +.p2align 5 +L$192_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + vpxor 128(%rsi),%ymm12,%ymm12 + vpxor 160(%rsi),%ymm13,%ymm13 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + vmovdqu %ymm12,128(%rdi) + vmovdqu %ymm13,160(%rdi) + je L$done8x + + leaq 192(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm10,0(%rsp) + leaq 192(%rdi),%rdi + subq $192,%rdx + vmovdqa %ymm15,32(%rsp) + jmp L$oop_tail8x + +.p2align 5 +L$256_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + vpxor 128(%rsi),%ymm12,%ymm12 + vpxor 160(%rsi),%ymm13,%ymm13 + vpxor 192(%rsi),%ymm10,%ymm10 + vpxor 224(%rsi),%ymm15,%ymm15 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + vmovdqu %ymm12,128(%rdi) + vmovdqu %ymm13,160(%rdi) + vmovdqu %ymm10,192(%rdi) + vmovdqu %ymm15,224(%rdi) + je L$done8x + + leaq 256(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm14,0(%rsp) + leaq 256(%rdi),%rdi + subq $256,%rdx + vmovdqa %ymm2,32(%rsp) + jmp L$oop_tail8x + +.p2align 5 +L$320_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + vpxor 128(%rsi),%ymm12,%ymm12 + vpxor 160(%rsi),%ymm13,%ymm13 + vpxor 192(%rsi),%ymm10,%ymm10 + vpxor 224(%rsi),%ymm15,%ymm15 + vpxor 256(%rsi),%ymm14,%ymm14 + vpxor 288(%rsi),%ymm2,%ymm2 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + vmovdqu %ymm12,128(%rdi) + vmovdqu %ymm13,160(%rdi) + vmovdqu %ymm10,192(%rdi) + vmovdqu %ymm15,224(%rdi) + vmovdqu %ymm14,256(%rdi) + vmovdqu %ymm2,288(%rdi) + je L$done8x + + leaq 320(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm3,0(%rsp) + leaq 320(%rdi),%rdi + subq $320,%rdx + vmovdqa %ymm7,32(%rsp) + jmp L$oop_tail8x + +.p2align 5 +L$384_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + vpxor 128(%rsi),%ymm12,%ymm12 + vpxor 160(%rsi),%ymm13,%ymm13 + vpxor 192(%rsi),%ymm10,%ymm10 + vpxor 224(%rsi),%ymm15,%ymm15 + vpxor 256(%rsi),%ymm14,%ymm14 + vpxor 288(%rsi),%ymm2,%ymm2 + vpxor 320(%rsi),%ymm3,%ymm3 + vpxor 352(%rsi),%ymm7,%ymm7 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + vmovdqu %ymm12,128(%rdi) + vmovdqu %ymm13,160(%rdi) + vmovdqu %ymm10,192(%rdi) + vmovdqu %ymm15,224(%rdi) + vmovdqu %ymm14,256(%rdi) + vmovdqu %ymm2,288(%rdi) + vmovdqu %ymm3,320(%rdi) + vmovdqu %ymm7,352(%rdi) + je L$done8x + + leaq 384(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm11,0(%rsp) + leaq 384(%rdi),%rdi + subq $384,%rdx + vmovdqa %ymm9,32(%rsp) + jmp L$oop_tail8x + +.p2align 5 +L$448_or_more8x: + vpxor 0(%rsi),%ymm6,%ymm6 + vpxor 32(%rsi),%ymm8,%ymm8 + vpxor 64(%rsi),%ymm1,%ymm1 + vpxor 96(%rsi),%ymm5,%ymm5 + vpxor 128(%rsi),%ymm12,%ymm12 + vpxor 160(%rsi),%ymm13,%ymm13 + vpxor 192(%rsi),%ymm10,%ymm10 + vpxor 224(%rsi),%ymm15,%ymm15 + vpxor 256(%rsi),%ymm14,%ymm14 + vpxor 288(%rsi),%ymm2,%ymm2 + vpxor 320(%rsi),%ymm3,%ymm3 + vpxor 352(%rsi),%ymm7,%ymm7 + vpxor 384(%rsi),%ymm11,%ymm11 + vpxor 416(%rsi),%ymm9,%ymm9 + vmovdqu %ymm6,0(%rdi) + vmovdqu %ymm8,32(%rdi) + vmovdqu %ymm1,64(%rdi) + vmovdqu %ymm5,96(%rdi) + vmovdqu %ymm12,128(%rdi) + vmovdqu %ymm13,160(%rdi) + vmovdqu %ymm10,192(%rdi) + vmovdqu %ymm15,224(%rdi) + vmovdqu %ymm14,256(%rdi) + vmovdqu %ymm2,288(%rdi) + vmovdqu %ymm3,320(%rdi) + vmovdqu %ymm7,352(%rdi) + vmovdqu %ymm11,384(%rdi) + vmovdqu %ymm9,416(%rdi) + je L$done8x + + leaq 448(%rsi),%rsi + xorq %r10,%r10 + vmovdqa %ymm0,0(%rsp) + leaq 448(%rdi),%rdi + subq $448,%rdx + vmovdqa %ymm4,32(%rsp) + +L$oop_tail8x: + movzbl (%rsi,%r10,1),%eax + movzbl (%rsp,%r10,1),%ecx + leaq 1(%r10),%r10 + xorl %ecx,%eax + movb %al,-1(%rdi,%r10,1) + decq %rdx + jnz L$oop_tail8x + +L$done8x: + vzeroall + leaq (%r9),%rsp + +L$8x_epilogue: + .byte 0xf3,0xc3 + + diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/ec/ecp_nistz256-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/ec/ecp_nistz256-x86_64.s new file mode 100644 index 0000000..dc6bed3 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/ec/ecp_nistz256-x86_64.s @@ -0,0 +1,7257 @@ +.text +.globl _ecp_nistz256_precomputed + +.p2align 12 +_ecp_nistz256_precomputed: +.long 0x18a9143c,0x79e730d4,0x5fedb601,0x75ba95fc,0x77622510,0x79fb732b,0xa53755c6,0x18905f76,0xce95560a,0xddf25357,0xba19e45c,0x8b4ab8e4,0xdd21f325,0xd2e88688,0x25885d85,0x8571ff18 +.long 0x10ddd64d,0x850046d4,0xa433827d,0xaa6ae3c1,0x8d1490d9,0x73220503,0x3dcf3a3b,0xf6bb32e4,0x61bee1a5,0x2f3648d3,0xeb236ff8,0x152cd7cb,0x92042dbe,0x19a8fb0e,0x0a5b8a3b,0x78c57751 +.long 0x4eebc127,0xffac3f90,0x087d81fb,0xb027f84a,0x87cbbc98,0x66ad77dd,0xb6ff747e,0x26936a3f,0xc983a7eb,0xb04c5c1f,0x0861fe1a,0x583e47ad,0x1a2ee98e,0x78820831,0xe587cc07,0xd5f06a29 +.long 0x46918dcc,0x74b0b50d,0xc623c173,0x4650a6ed,0xe8100af2,0x0cdaacac,0x41b0176b,0x577362f5,0xe4cbaba6,0x2d96f24c,0xfad6f447,0x17628471,0xe5ddd22e,0x6b6c36de,0x4c5ab863,0x84b14c39 +.long 0xc45c61f5,0xbe1b8aae,0x94b9537d,0x90ec649a,0xd076c20c,0x941cb5aa,0x890523c8,0xc9079605,0xe7ba4f10,0xeb309b4a,0xe5eb882b,0x73c568ef,0x7e7a1f68,0x3540a987,0x2dd1e916,0x73a076bb +.long 0x3e77664a,0x40394737,0x346cee3e,0x55ae744f,0x5b17a3ad,0xd50a961a,0x54213673,0x13074b59,0xd377e44b,0x93d36220,0xadff14b5,0x299c2b53,0xef639f11,0xf424d44c,0x4a07f75f,0xa4c9916d +.long 0xa0173b4f,0x0746354e,0xd23c00f7,0x2bd20213,0x0c23bb08,0xf43eaab5,0xc3123e03,0x13ba5119,0x3f5b9d4d,0x2847d030,0x5da67bdd,0x6742f2f2,0x77c94195,0xef933bdc,0x6e240867,0xeaedd915 +.long 0x9499a78f,0x27f14cd1,0x6f9b3455,0x462ab5c5,0xf02cfc6b,0x8f90f02a,0xb265230d,0xb763891e,0x532d4977,0xf59da3a9,0xcf9eba15,0x21e3327d,0xbe60bbf0,0x123c7b84,0x7706df76,0x56ec12f2 +.long 0x264e20e8,0x75c96e8f,0x59a7a841,0xabe6bfed,0x44c8eb00,0x2cc09c04,0xf0c4e16b,0xe05b3080,0xa45f3314,0x1eb7777a,0xce5d45e3,0x56af7bed,0x88b12f1a,0x2b6e019a,0xfd835f9b,0x086659cd +.long 0x9dc21ec8,0x2c18dbd1,0x0fcf8139,0x98f9868a,0x48250b49,0x737d2cd6,0x24b3428f,0xcc61c947,0x80dd9e76,0x0c2b4078,0x383fbe08,0xc43a8991,0x779be5d2,0x5f7d2d65,0xeb3b4ab5,0x78719a54 +.long 0x6245e404,0xea7d260a,0x6e7fdfe0,0x9de40795,0x8dac1ab5,0x1ff3a415,0x649c9073,0x3e7090f1,0x2b944e88,0x1a768561,0xe57f61c8,0x250f939e,0x1ead643d,0x0c0daa89,0xe125b88e,0x68930023 +.long 0xd2697768,0x04b71aa7,0xca345a33,0xabdedef5,0xee37385e,0x2409d29d,0xcb83e156,0x4ee1df77,0x1cbb5b43,0x0cac12d9,0xca895637,0x170ed2f6,0x8ade6d66,0x28228cfa,0x53238aca,0x7ff57c95 +.long 0x4b2ed709,0xccc42563,0x856fd30d,0x0e356769,0x559e9811,0xbcbcd43f,0x5395b759,0x738477ac,0xc00ee17f,0x35752b90,0x742ed2e3,0x68748390,0xbd1f5bc1,0x7cd06422,0xc9e7b797,0xfbc08769 +.long 0xb0cf664a,0xa242a35b,0x7f9707e3,0x126e48f7,0xc6832660,0x1717bf54,0xfd12c72e,0xfaae7332,0x995d586b,0x27b52db7,0x832237c2,0xbe29569e,0x2a65e7db,0xe8e4193e,0x2eaa1bbb,0x152706dc +.long 0xbc60055b,0x72bcd8b7,0x56e27e4b,0x03cc23ee,0xe4819370,0xee337424,0x0ad3da09,0xe2aa0e43,0x6383c45d,0x40b8524f,0x42a41b25,0xd7663554,0x778a4797,0x64efa6de,0x7079adf4,0x2042170a +.long 0x0bc6fb80,0x808b0b65,0x3ffe2e6b,0x5882e075,0x2c83f549,0xd5ef2f7c,0x9103b723,0x54d63c80,0x52a23f9b,0xf2f11bd6,0x4b0b6587,0x3670c319,0xb1580e9e,0x55c4623b,0x01efe220,0x64edf7b2 +.long 0xd53c5c9d,0x97091dcb,0xac0a177b,0xf17624b6,0x2cfe2dff,0xb0f13975,0x6c7a574e,0xc1a35c0a,0x93e79987,0x227d3146,0xe89cb80e,0x0575bf30,0x0d1883bb,0x2f4e247f,0x3274c3d0,0xebd51226 +.long 0x56ada97a,0x5f3e51c8,0x8f8b403e,0x4afc964d,0x412e2979,0xa6f247ab,0x6f80ebda,0x675abd1b,0x5e485a1d,0x66a2bd72,0x8f4f0b3c,0x4b2a5caf,0x1b847bba,0x2626927f,0x0502394d,0x6c6fc7d9 +.long 0xa5659ae8,0xfea912ba,0x25e1a16e,0x68363aba,0x752c41ac,0xb8842277,0x2897c3fc,0xfe545c28,0xdc4c696b,0x2d36e9e7,0xfba977c5,0x5806244a,0xe39508c1,0x85665e9b,0x6d12597b,0xf720ee25 +.long 0xd2337a31,0x8a979129,0x0f862bdc,0x5916868f,0x5dd283ba,0x048099d9,0xfe5bfb4e,0xe2d1eeb6,0x7884005d,0x82ef1c41,0xffffcbae,0xa2d4ec17,0x8aa95e66,0x9161c53f,0xc5fee0d0,0x5ee104e1 +.long 0xc135b208,0x562e4cec,0x4783f47d,0x74e1b265,0x5a3f3b30,0x6d2a506c,0xc16762fc,0xecead9f4,0xe286e5b9,0xf29dd4b2,0x83bb3c61,0x1b0fadc0,0x7fac29a4,0x7a75023e,0xc9477fa3,0xc086d5f1 +.long 0x2f6f3076,0x0fc61135,0xe3912a9a,0xc99ffa23,0xd2f8ba3d,0x6a0b0685,0xe93358a4,0xfdc777e8,0x35415f04,0x94a787bb,0x4d23fea4,0x640c2d6a,0x153a35b5,0x9de917da,0x5d5cd074,0x793e8d07 +.long 0x2de45068,0xf4f87653,0x9e2e1f6e,0x37c7a7e8,0xa3584069,0xd0825fa2,0x1727bf42,0xaf2cea7c,0x9e4785a9,0x0360a4fb,0x27299f4a,0xe5fda49c,0x71ac2f71,0x48068e13,0x9077666f,0x83d0687b +.long 0x15d02819,0x6d3883b2,0x40dd9a35,0x6d0d7550,0x1d2b469f,0x61d7cbf9,0x2efc3115,0xf97b232f,0xb24bcbc7,0xa551d750,0x88a1e356,0x11ea4949,0x93cb7501,0x7669f031,0xca737b8a,0x595dc55e +.long 0xd837879f,0xa4a319ac,0xed6b67b0,0x6fc1b49e,0x32f1f3af,0xe3959933,0x65432a2e,0x966742eb,0xb4966228,0x4b8dc9fe,0x43f43950,0x96cc6312,0xc9b731ee,0x12068859,0x56f79968,0x7b948dc3 +.long 0xed1f8008,0x61e4ad32,0xd8b17538,0xe6c9267a,0x857ff6fb,0x1ac7c5eb,0x55f2fb10,0x994baaa8,0x1d248018,0x84cf14e1,0x628ac508,0x5a39898b,0x5fa944f5,0x14fde97b,0xd12e5ac7,0xed178030 +.long 0x97e2feb4,0x042c2af4,0xaebf7313,0xd36a42d7,0x084ffdd7,0x49d2c9eb,0x2ef7c76a,0x9f8aa54b,0x09895e70,0x9200b7ba,0xddb7fb58,0x3bd0c66f,0x78eb4cbb,0x2d97d108,0xd84bde31,0x2d431068 +.long 0x172ccd1f,0x4b523eb7,0x30a6a892,0x7323cb28,0xcfe153eb,0x97082ec0,0xf2aadb97,0xe97f6b6a,0xd1a83da1,0x1d3d393e,0x804b2a68,0xa6a7f9c7,0x2d0cb71e,0x4a688b48,0x40585278,0xa9b4cc5f +.long 0xcb66e132,0x5e5db46a,0x0d925880,0xf1be963a,0x0317b9e2,0x944a7027,0x48603d48,0xe266f959,0x5c208899,0x98db6673,0xa2fb18a3,0x90472447,0x777c619f,0x8a966939,0x2a3be21b,0x3798142a +.long 0x3298b343,0xb4241cb1,0xb44f65a1,0xa3a14e49,0x3ac77acd,0xc5f4d6cd,0x52b6fc3c,0xd0288cb5,0x1c040abc,0xd5cc8c2f,0x06bf9b4a,0xb675511e,0x9b3aa441,0xd667da37,0x51601f72,0x460d45ce +.long 0x6755ff89,0xe2f73c69,0x473017e6,0xdd3cf7e7,0x3cf7600d,0x8ef5689d,0xb1fc87b4,0x948dc4f8,0x4ea53299,0xd9e9fe81,0x98eb6028,0x2d921ca2,0x0c9803fc,0xfaecedfd,0x4d7b4745,0xf38ae891 +.long 0xc5e3a3d8,0xd8c5fccf,0x4079dfbf,0xbefd904c,0xfead0197,0xbc6d6a58,0x695532a4,0x39227077,0xdbef42f5,0x09e23e6d,0x480a9908,0x7e449b64,0xad9a2e40,0x7b969c1a,0x9591c2a4,0x6231d792 +.long 0x0f664534,0x87151456,0x4b68f103,0x85ceae7c,0x65578ab9,0xac09c4ae,0xf044b10c,0x33ec6868,0x3a8ec1f1,0x6ac4832b,0x5847d5ef,0x5509d128,0x763f1574,0xf909604f,0xc32f63c4,0xb16c4303 +.long 0x7ca23cd3,0xb6ab2014,0xa391849d,0xcaa7a5c6,0x75678d94,0x5b0673a3,0xdd303e64,0xc982ddd4,0x5db6f971,0xfd7b000b,0x6f876f92,0xbba2cb1f,0x3c569426,0xc77332a3,0x570d74f8,0xa159100c +.long 0xdec67ef5,0xfd16847f,0x233e76b7,0x742ee464,0xefc2b4c8,0x0b8e4134,0x42a3e521,0xca640b86,0x8ceb6aa9,0x653a0190,0x547852d5,0x313c300c,0x6b237af7,0x24e4ab12,0x8bb47af8,0x2ba90162 +.long 0xa8219bb7,0x3d5e58d6,0x1b06c57f,0xc691d0bd,0xd257576e,0x0ae4cb10,0xd54a3dc3,0x3569656c,0x94cda03a,0xe5ebaebd,0x162bfe13,0x934e82d3,0xe251a0c6,0x450ac0ba,0xdd6da526,0x480b9e11 +.long 0x8cce08b5,0x00467bc5,0x7f178d55,0xb636458c,0xa677d806,0xc5748bae,0xdfa394eb,0x2763a387,0x7d3cebb6,0xa12b448a,0x6f20d850,0xe7adda3e,0x1558462c,0xf63ebce5,0x620088a8,0x58b36143 +.long 0x4d63c0ee,0x8a2cc3ca,0x0fe948ce,0x51233117,0x222ef33b,0x7463fd85,0x7c603d6c,0xadf0c7dc,0xfe7765e5,0x0ec32d3b,0xbf380409,0xccaab359,0x8e59319c,0xbdaa84d6,0x9c80c34d,0xd9a4c280 +.long 0xa059c142,0xa9d89488,0xff0b9346,0x6f5ae714,0x16fb3664,0x068f237d,0x363186ac,0x5853e4c4,0x63c52f98,0xe2d87d23,0x81828876,0x2ec4a766,0xe14e7b1c,0x47b864fa,0x69192408,0x0c0bc0e5 +.long 0xb82e9f3e,0xe4d7681d,0xdf25e13c,0x83200f0b,0x66f27280,0x8909984c,0x75f73227,0x462d7b00,0xf2651798,0xd90ba188,0x36ab1c34,0x74c6e18c,0x5ef54359,0xab256ea3,0xd1aa702f,0x03466612 +.long 0x2ed22e91,0x624d6049,0x6f072822,0x6fdfe0b5,0x39ce2271,0xeeca1115,0xdb01614f,0x98100a4f,0xa35c628f,0xb6b0daa2,0xc87e9a47,0xb6f94d2e,0x1d57d9ce,0xc6773259,0x03884a7b,0xf70bfeec +.long 0xed2bad01,0x5fb35ccf,0x1da6a5c7,0xa155cbe3,0x30a92f8f,0xc2e2594c,0x5bfafe43,0x649c89ce,0xe9ff257a,0xd158667d,0xf32c50ae,0x9b359611,0x906014cf,0x4b00b20b,0x89bc7d3d,0xf3a8cfe3 +.long 0x248a7d06,0x4ff23ffd,0x878873fa,0x80c5bfb4,0x05745981,0xb7d9ad90,0x3db01994,0x179c85db,0x61a6966c,0xba41b062,0xeadce5a8,0x4d82d052,0xa5e6a318,0x9e91cd3b,0x95b2dda0,0x47795f4f +.long 0xd55a897c,0xecfd7c1f,0xb29110fb,0x009194ab,0xe381d3b0,0x5f0e2046,0xa98dd291,0x5f3425f6,0x730d50da,0xbfa06687,0x4b083b7f,0x0423446c,0xd69d3417,0x397a247d,0x387ba42a,0xeb629f90 +.long 0xd5cd79bf,0x1ee426cc,0x946c6e18,0x0032940b,0x57477f58,0x1b1e8ae0,0x6d823278,0xe94f7d34,0x782ba21a,0xc747cb96,0xf72b33a5,0xc5254469,0xc7f80c81,0x772ef6de,0x2cd9e6b5,0xd73acbfe +.long 0x49ee90d9,0x4075b5b1,0xa06e9eba,0x785c339a,0xabf825e0,0xa1030d5b,0xa42931dc,0xcec684c3,0xc1586e63,0x42ab62c9,0x5ab43f2b,0x45431d66,0x55f7835d,0x57c8b2c0,0xc1b7f865,0x033da338 +.long 0xcaa76097,0x283c7513,0x36c83906,0x0a624fa9,0x715af2c7,0x6b20afec,0xeba78bfd,0x4b969974,0xd921d60e,0x220755cc,0x7baeca13,0x9b944e10,0x5ded93d4,0x04819d51,0x6dddfd27,0x9bbff86e +.long 0x77adc612,0x6b344130,0xbbd803a0,0xa7496529,0x6d8805bd,0x1a1baaa7,0x470343ad,0xc8403902,0x175adff1,0x39f59f66,0xb7d8c5b7,0x0b26d7fb,0x529d75e3,0xa875f5ce,0x41325cc2,0x85efc7e9 +.long 0x1ff6acd3,0x21950b42,0x53dc6909,0xffe70484,0x28766127,0xff4cd0b2,0x4fb7db2b,0xabdbe608,0x5e1109e8,0x837c9228,0xf4645b5a,0x26147d27,0xf7818ed8,0x4d78f592,0xf247fa36,0xd394077e +.long 0x488c171a,0x0fb9c2d0,0x13685278,0xa78bfbaa,0xd5b1fa6a,0xedfbe268,0x2b7eaba7,0x0dceb8db,0x9ae2b710,0xbf9e8089,0xa4449c96,0xefde7ae6,0xcc143a46,0x43b7716b,0xc3628c13,0xd7d34194 +.long 0x3b3f64c9,0x508cec1c,0x1e5edf3f,0xe20bc0ba,0x2f4318d4,0xda1deb85,0x5c3fa443,0xd20ebe0d,0x73241ea3,0x370b4ea7,0x5e1a5f65,0x61f1511c,0x82681c62,0x99a5e23d,0xa2f54c2d,0xd731e383 +.long 0x83445904,0x2692f36e,0xaf45f9c0,0x2e0ec469,0xc67528b7,0x905a3201,0xd0e5e542,0x88f77f34,0x5864687c,0xf67a8d29,0x22df3562,0x23b92eae,0x9bbec39e,0x5c27014b,0x9c0f0f8d,0x7ef2f226 +.long 0x546c4d8d,0x97359638,0x92f24679,0x5f9c3fc4,0xa8c8acd9,0x912e8bed,0x306634b0,0xec3a318d,0xc31cb264,0x80167f41,0x522113f2,0x3db82f6f,0xdcafe197,0xb155bcd2,0x43465283,0xfba1da59 +.long 0xb212cf53,0xa0425b8e,0xf8557c5f,0x4f2e512e,0x25c4d56c,0xc1286ff9,0xee26c851,0xbb8a0fea,0xe7d6107e,0xc28f70d2,0xe76265aa,0x7ee0c444,0x1d1936b1,0x3df277a4,0xea9595eb,0x1a556e3f +.long 0xe7305683,0x258bbbf9,0x07ef5be6,0x31eea5bf,0x46c814c1,0x0deb0e4a,0xa7b730dd,0x5cee8449,0xa0182bde,0xeab495c5,0x9e27a6b4,0xee759f87,0x80e518ca,0xc2cf6a68,0xf14cf3f4,0x25e8013f +.long 0x7e8d7a14,0x8fc44140,0x9556f36a,0xbb1ff3ca,0x14600044,0x6a844385,0x7451ae63,0xba3f0c4a,0x1f9af32a,0xdfcac25b,0xb1f2214b,0x01e0db86,0xa4b596ac,0x4e9a5bc2,0x026c2c08,0x83927681 +.long 0x7acaca28,0x3ec832e7,0xc7385b29,0x1bfeea57,0xfd1eaf38,0x068212e3,0x6acf8ccc,0xc1329830,0x2aac9e59,0xb909f2db,0xb661782a,0x5748060d,0xc79b7a01,0xc5ab2632,0x00017626,0xda44c6c6 +.long 0xa7ea82f0,0xf26c00e8,0xe4299aaf,0x99cac80d,0x7ed78be1,0xd66fe3b6,0x648d02cd,0x305f725f,0x623fb21b,0x33ed1bc4,0x7a6319ad,0xfa70533e,0xbe5ffb3e,0x17ab562d,0x56674741,0x06374994 +.long 0x5c46aa8e,0x69d44ed6,0xa8d063d1,0x2100d5d3,0xa2d17c36,0xcb9727ea,0x8add53b7,0x4c2bab1b,0x15426704,0xa084e90c,0xa837ebea,0x778afcd3,0x7ce477f8,0x6651f701,0x46fb7a8b,0xa0624998 +.long 0xed8a6e19,0xdc1e6828,0x4189d9c7,0x33fc2336,0x671c39bc,0x026f8fe2,0xbc6f9915,0xd40c4ccd,0xf80e75ca,0xafa135bb,0x22adff2c,0x12c651a0,0x4f51ad96,0xc40a04bd,0xbbe4e832,0x04820109 +.long 0x7f4c04cc,0x3667eb1a,0xa9404f84,0x59556621,0x7eceb50a,0x71cdf653,0x9b8335fa,0x994a44a6,0xdbeb9b69,0xd7faf819,0xeed4350d,0x473c5680,0xda44bba2,0xb6658466,0x872bdbf3,0x0d1bc780 +.long 0xa1962f91,0xe535f175,0xed58f5a7,0x6ed7e061,0x2089a233,0x177aa4c0,0xe539b413,0x0dbcb03a,0xbb32e38e,0xe3dc424e,0x6806701e,0x6472e5ef,0x814be9ee,0xdd47ff98,0x35ace009,0x6b60cfff +.long 0x9ff91fe5,0xb8d3d931,0xf0518eed,0x039c4800,0x9182cb26,0x95c37632,0x82fc568d,0x0763a434,0x383e76ba,0x707c04d5,0x824e8197,0xac98b930,0x91230de0,0x92bf7c8f,0x40959b70,0x90876a01 +.long 0x05968b80,0xdb6d96f3,0x089f73b9,0x380a0913,0xc2c61e01,0x7da70b83,0x569b38c7,0x95fb8394,0x80edfe2f,0x9a3c6512,0x8faeaf82,0x8f726bb9,0x78424bf8,0x8010a4a0,0x0e844970,0x29672044 +.long 0x7a2ad62a,0x63c5cb81,0xac62ff54,0x7ef2b6b9,0xb3ad9db5,0x3749bba4,0x46d5a617,0xad311f2c,0xc2ff3b6d,0xb77a8087,0x367834ff,0xb46feaf3,0x75d6b138,0xf8aa266d,0xec008188,0xfa38d320 +.long 0x696946fc,0x486d8ffa,0xb9cba56d,0x50fbc6d8,0x90f35a15,0x7e3d423e,0xc0dd962c,0x7c3da195,0x3cfd5d8b,0xe673fdb0,0x889dfca5,0x0704b7c2,0xf52305aa,0xf6ce581f,0x914d5e53,0x399d49eb +.long 0x6ec293cd,0x380a496d,0x8e7051f5,0x733dbda7,0xb849140a,0x037e388d,0x5946dbf6,0xee4b32b0,0xcae368d1,0xb1c4fda9,0xfdb0b2f3,0x5001a7b0,0x2e3ac46e,0x6df59374,0x39b3e656,0x4af675f2 +.long 0x39949296,0x44e38110,0x361db1b5,0x5b63827b,0x206eaff5,0x3e5323ed,0xc21f4290,0x942370d2,0xe0d985a1,0xf2caaf2e,0x7239846d,0x192cc64b,0xae6312f8,0x7c0b8f47,0x96620108,0x7dc61f91 +.long 0xc2da7de9,0xb830fb5b,0x0ff8d3be,0xd0e643df,0x188a9641,0x31ee77ba,0xbcf6d502,0x4e8aa3aa,0x9a49110f,0xf9fb6532,0x2dd6b220,0xd18317f6,0x52c3ea5a,0x7e3ced41,0x7d579c4a,0x0d296a14 +.long 0xed4c3717,0x35d6a53e,0x3d0ed2a3,0x9f8240cf,0xe5543aa5,0x8c0d4d05,0xdd33b4b4,0x45d5bbfb,0x137fd28e,0xfa04cc73,0xc73b3ffd,0x862ac6ef,0x31f51ef2,0x403ff9f5,0xbc73f5a2,0x34d5e0fc +.long 0x08913f4f,0xf2526820,0xeac93d95,0xea20ed61,0x6ca6b26c,0x51ed38b4,0xea4327b0,0x8662dcbc,0x725d2aaa,0x6daf295c,0x8e52dcda,0xbad2752f,0x0b17dacc,0x2210e721,0xd51e8232,0xa37f7912 +.long 0x44cc3add,0x4f7081e1,0x87be82cf,0xd5ffa1d6,0x0edd6472,0x89890b6c,0x3ed17863,0xada26e1a,0x63483caa,0x276f2715,0x2f6077fd,0xe6924cd9,0x0a466e3c,0x05a7fe98,0xb1902d1f,0xf1c794b0 +.long 0x82a8042c,0xe5213688,0xcd278298,0xd931cfaf,0xf597a740,0x069a0ae0,0xeb59107c,0x0adbb3f3,0x5eaa8eb8,0x983e951e,0x11b48e78,0xe663a8b5,0x8a03f2c5,0x1631cc0d,0x11e271e2,0x7577c11e +.long 0x08369a90,0x33b2385c,0x190eb4f8,0x2990c59b,0xc68eac80,0x819a6145,0x2ec4a014,0x7a786d62,0x20ac3a8d,0x33faadbe,0x5aba2d30,0x31a21781,0xdba4f565,0x209d2742,0x55aa0fbb,0xdb2ce9e3 +.long 0x168984df,0x8cef334b,0x33879638,0xe81dce17,0x263720f0,0xf6e6949c,0xf593cbec,0x5c56feaf,0xfde58c84,0x8bff5601,0x2eccb314,0x74e24117,0x4c9a8a78,0xbcf01b61,0x544c9868,0xa233e35e +.long 0x8bd7aff1,0xb3156bf3,0x1d81b146,0x1b5ee4cb,0xd628a915,0x7ba1ac41,0xfd89699e,0x8f3a8f9c,0xa0748be7,0x7329b9c9,0xa92e621f,0x1d391c95,0x4d10a837,0xe51e6b21,0x4947b435,0xd255f53a +.long 0xf1788ee3,0x07669e04,0xa86938a2,0xc14f27af,0xe93a01c0,0x8b47a334,0xd9366808,0xff627438,0xca2a5965,0x7a0985d8,0xd6e9b9b3,0x3d9a5542,0x4cf972e8,0xc23eb80b,0x4fdf72fd,0x5c1c33bb +.long 0x74a86108,0x0c4a58d4,0xee4c5d90,0xf8048a8f,0xe86d4c80,0xe3c7c924,0x056a1e60,0x28c889de,0xb214a040,0x57e2662e,0x37e10347,0xe8c48e98,0x80ac748a,0x87742862,0x186b06f2,0xf1c24022 +.long 0x5f74040a,0xac2dd4c3,0xfceac957,0x409aeb71,0x55c4ec23,0x4fbad782,0x8a7b76ec,0xb359ed61,0xed6f4a60,0x12744926,0x4b912de3,0xe21e8d7f,0xfc705a59,0xe2575a59,0xed2dbc0e,0x72f1d4de +.long 0xeb7926b8,0x3d2b24b9,0xcdbe5509,0xbff88cb3,0xe4dd640b,0xd0f399af,0x2f76ed45,0x3c5fe130,0x3764fb3d,0x6f3562f4,0x3151b62d,0x7b5af318,0xd79ce5f3,0xd5bd0bc7,0xec66890f,0xfdaf6b20 +.long 0x6063540c,0x735c67ec,0xe5f9cb8f,0x50b259c2,0x3f99c6ab,0xb8734f9a,0xa3a7bc85,0xf8cc13d5,0xc5217659,0x80c1b305,0x4ec12a54,0xfe5364d4,0x681345fe,0xbd87045e,0x582f897f,0x7f8efeb1 +.long 0xd5923359,0xe8cbf1e5,0x539b9fb0,0xdb0cea9d,0x49859b98,0x0c5b34cf,0xa4403cc6,0x5e583c56,0xd48185b7,0x11fc1a2d,0x6e521787,0xc93fbc7e,0x05105b8b,0x47e7a058,0xdb8260c8,0x7b4d4d58 +.long 0x46eb842a,0xe33930b0,0x7bdae56d,0x8e844a9a,0x13f7fdfc,0x34ef3a9e,0x636ca176,0xb3768f82,0x4e09e61c,0x2821f4e0,0xa0c7cddc,0x414dc3a1,0x54945fcd,0xd5379437,0xb3555ff1,0x151b6eef +.long 0x6339c083,0xb31bd613,0xdfb64701,0x39ff8155,0xe29604ab,0x7c3388d2,0xa6b10442,0x1e19084b,0xeccd47ef,0x17cf54c0,0x4a5dfb30,0x89693385,0x47daf9f6,0x69d023fb,0x7d91d959,0x9222840b +.long 0x803bac62,0x439108f5,0x379bd45f,0x0b7dd91d,0xca63c581,0xd651e827,0x509c104f,0x5c5d75f6,0x1f2dc308,0x7d5fc738,0xd98454be,0x20faa7bf,0xa517b031,0x95374bee,0x642692ac,0xf036b9b1 +.long 0x39842194,0xc5106109,0x49d05295,0xb7e2353e,0xefb42ee0,0xfc8c1d5c,0x08ce811c,0xe04884eb,0x7419f40e,0xf1f75d81,0xa995c241,0x5b0ac162,0xc4c55646,0x120921bb,0x8d33cf97,0x713520c2 +.long 0xe98c5100,0xb4a65a5c,0x2ddd0f5a,0x6cec871d,0x9ba2e78b,0x251f0b7f,0xce3a2a5f,0x224a8434,0x25f5c46f,0x26827f61,0x48545ec0,0x6a22bedc,0xb1bb5cdc,0x25ae5fa0,0xfcb9b98f,0xd693682f +.long 0x91e5d7d3,0x32027fe8,0x73a07678,0xf14b7d17,0xc0dfdd61,0xf88497b3,0x2a8c4f48,0xf7c2eec0,0x3756e621,0xaa5573f4,0x1825b948,0xc013a240,0x63878572,0x1c03b345,0x653a4184,0xa0472bea +.long 0x0ac69a80,0xf4222e27,0xf51e54f6,0x34096d25,0x8fffa591,0x00a648cb,0x69b6527f,0x4e87acdc,0xe285ccb4,0x0575e037,0x50ddcf52,0x188089e4,0x870ff719,0xaa96c9a8,0x1fc7e369,0x74a56cd8 +.long 0x1726931a,0x41d04ee2,0x3660ecfd,0x0bbbb2c8,0x24818e18,0xa6ef6de5,0xe7d57887,0xe421cc51,0xbea87be6,0xf127d208,0xb1cdd682,0x16a475d3,0x439b63f7,0x9db1b684,0xf0f113b6,0x5359b3db +.long 0x8bf06e31,0xdfccf1de,0xdd383901,0x1fdf8f44,0x5017e7d2,0x10775cad,0x58d11eef,0xdfc3a597,0xb1ecff10,0x6ec9c8a0,0x28400549,0xee6ed6cc,0x1b4f8d73,0xb5ad7bae,0xe00aaab9,0x61b4f11d +.long 0xd4eff2d7,0x7b32d69b,0x4288b60f,0x88ae6771,0x37a1e723,0x159461b4,0x570aae8c,0x1f3d4789,0x7f9871da,0x869118c0,0xf635e278,0x35fbda78,0xe1541dac,0x738f3641,0xc0dae45f,0x6794b13a +.long 0x09cc0917,0x065064ac,0xc68540fd,0x27c53729,0xef227671,0x0d2d4c8e,0xa1785a04,0xd23a9f80,0x52650359,0x98c59528,0x74a1acad,0xfa09ad01,0x0b55bf5c,0x082d5a29,0x419b8084,0xa40f1c67 +.long 0xdcc18770,0x3a5c752e,0x8825c3a5,0x4baf1f2f,0x21b153ed,0xebd63f74,0xb2f64723,0xa2383e47,0x2646d19a,0xe7bf620a,0x03c83ffd,0x56cb44ec,0x4f6be9f1,0xaf7267c9,0xc06bb5e9,0x8b2dfd7b +.long 0xa672c5c7,0xb87072f2,0x0d53c5e2,0xeacb11c8,0xff435932,0x22dac29d,0x4408693c,0x37bdb99d,0x2899c20f,0xf6e62fb6,0x447ece24,0x3535d512,0xff577ce3,0xfbdc6b88,0x190575f2,0x726693bd +.long 0xab4b35a2,0x6772b0e5,0xf5eeaacf,0x1d8b6001,0x795b9580,0x728f7ce4,0x41fb81da,0x4a20ed2a,0x4fec01e6,0x9f685cd4,0xa7ff50ad,0x3ed7ddcc,0x0c2d97fd,0x460fd264,0xeb82f4f9,0x3a241426 +.long 0x6a8ea820,0x17d1df2c,0xf22cc254,0xb2b50d3b,0xb7291426,0x03856cba,0x04f5ee39,0x87fd26ae,0x02bee4ba,0x9cb696cc,0x06820fd6,0x53121804,0x0212e985,0xa5dfc269,0x160f9a09,0x666f7ffa +.long 0xbccd9617,0xc503cd33,0xba7730a3,0x365dede4,0x5ddb0786,0x798c6355,0xfc9cd3bc,0xa6c3200e,0xe5e35efd,0x060ffb2c,0x5555a1c1,0x99a4e25b,0xf70b3751,0x11d95375,0x160e1bf6,0x0a57354a +.long 0xf8e4b065,0xecb3ae4b,0x2e53022b,0x07a834c4,0x8692ed96,0x1cd300b3,0x61ee14ec,0x16a6f792,0x6a8649ed,0x8f1063c6,0x869f3e14,0xfbcdfcfe,0x00a7b3ec,0x2cfb97c1,0x7130c2f1,0xcea49b3c +.long 0xe9d96488,0x462d044f,0x8182a0c1,0x4b53d52e,0x0391e9e9,0x84b6ddd3,0xb1741a09,0x80ab7b48,0x27d3317f,0xec0e15d4,0x1a64671e,0x8dfc1ddb,0xd49c5b92,0x93cc5d5f,0x3674a331,0xc995d53d +.long 0x090090ae,0x302e41ec,0xedb06830,0x2278a0cc,0xfbc99690,0x1d025932,0xb80d68da,0x0c32fbd2,0xf341a6c1,0xd79146da,0x1bef68a0,0xae0ba139,0x8d774b3a,0xc6b8a563,0x880ba4d7,0x1cf307bd +.long 0x19803511,0xc033bdc7,0x8888c3be,0xa9f97b3b,0x85c6d05e,0x3d68aebc,0x193919eb,0xc3b88a9d,0xc48b0ee3,0x2d300748,0x07a746c1,0x7506bc7c,0x6e6d57f3,0xfc48437c,0xcfeaa91a,0x5bd71587 +.long 0xc1bc5225,0xa4ed0408,0x2719226d,0xd0b946db,0x758d2d43,0x109ecd62,0x2751759b,0x75c8485a,0x9ce4177a,0xb0b75f49,0x79c10c3d,0x4fa61a1e,0xa167fcd7,0xc062d300,0x750f0fa8,0x4df3874c +.long 0x83dfedc9,0x29ae2cf9,0x8d87631a,0xf8437134,0x7429c8d2,0xaf571711,0x146d9272,0x18d15867,0x69769bb7,0x83053ecf,0xc479ab82,0xc55eb856,0x21b0f4b2,0x5ef7791c,0x3d491525,0xaa5956ba +.long 0x9fe20eba,0x407a96c2,0xe52a5ad3,0xf27168bb,0xbf1d9d89,0x43b60ab3,0x710e727a,0xe45c51ef,0x099b4221,0xdfca5276,0x2557a159,0x8dc6407c,0x91035895,0x0ead8335,0x9c55dc32,0x0a9db957 +.long 0xdf61bc76,0xe40736d3,0x3f778cdb,0x13a619c0,0xc56ea28f,0x6dd921a4,0x2fa647b4,0x76a52433,0xac5bdc5d,0x23591891,0xbac7dc01,0xff4a1a72,0x62df8453,0x9905e261,0xe63b265f,0x3ac045df +.long 0xad53dba7,0x8a3f341b,0x837b625a,0x8ec269cc,0x3ae31189,0xd71a2782,0x55e96120,0x8fb4f9a3,0xff9875cf,0x804af823,0x5d442a9b,0x23224f57,0xecc62679,0x1c4d3b9e,0xa0e7ddb1,0x91da22fb +.long 0x6c04a661,0xa370324d,0x5e376d17,0x9710d3b6,0x3044e357,0xed8c98f0,0x6422701c,0xc364ebbe,0x7733d61c,0x347f5d51,0xcea826c3,0xd55644b9,0x55a25548,0x80c6e0ad,0x844220a7,0x0aa7641d +.long 0x31810660,0x1438ec81,0xde4b4043,0x9dfa6507,0xcc3e0273,0x10b515d8,0x28d8cfb2,0x1b6066dd,0x9c9efebd,0xd3b04591,0xa21c1ff4,0x425d4bdf,0xd57607d3,0x5fe5af19,0x54481084,0xbbf773f7 +.long 0x94b03ed1,0x8435bd69,0x634cc546,0xd9ad1de3,0x00e420ca,0x2cf423fc,0xa03096dd,0xeed26d80,0xa4db09d2,0xd7f60be7,0x960622f7,0xf47f569d,0x7296c729,0xe5925fd7,0x26ca2715,0xeff2db26 +.long 0xb913e759,0xa6fcd014,0x8ff4de93,0x53da4786,0xc32068e1,0x14616d79,0xccdf352e,0xb187d664,0x1dc90b59,0xf7afb650,0x7daa1b26,0x8170e943,0x700c0a84,0xc8e3bdd8,0x6482bdfa,0x6e8d345f +.long 0xc5c5ea50,0x84cfbfa1,0x67960681,0xd3baf14c,0x0dd50942,0x26398403,0x4716a663,0xe4b7839c,0xe7de6dc0,0xd5f1f794,0x622aa7ce,0x5cd0f4d4,0x59acfeec,0x5295f3f1,0x953e0607,0x8d933552 +.long 0x776c5722,0xc7db8ec5,0x2b5f290c,0xdc467e62,0x4ff425a9,0xd4297e70,0x0cf7bb72,0x4be924c1,0xa1892131,0x0d5dc5ae,0xa705c992,0x8bf8a8e3,0x7a305ac5,0x73a0b064,0x9a8c77a8,0x00c9ca4e +.long 0x83774bdd,0x5dfee80f,0x85734485,0x63131602,0x914a69a9,0xa1b524ae,0xd4e300d7,0xebc2ffaf,0x7cfa46a5,0x52c93db7,0x21653b50,0x71e6161f,0xa4bc580a,0x3574fc57,0xe1bc1253,0xc09015dd +.long 0xd174d7aa,0x4b7b47b2,0xf3a15d04,0x4072d8e8,0xd6fa07ed,0xeeb7d47f,0xedbdafb1,0x6f2b9ff9,0x3760fe8a,0x18c51615,0xf06c6c13,0x7a96e6bf,0x0ea2d071,0x4d7a0410,0x0be2a5ce,0xa1914e9b +.long 0xd8a3c5cf,0x5726e357,0x2abb2b13,0x1197ecc3,0x31ae88dd,0x6c0d7f7f,0xfdbb3efe,0x15b20d1a,0x70584039,0xcd06aa26,0xa7dc9747,0x2277c969,0x7855d815,0xbca69587,0x5188b32a,0x899ea238 +.long 0x760c1c9d,0x37d9228b,0x9b5c18da,0xc7efbb11,0x19f6dbc5,0x7f0d1bc8,0x07e6905b,0x4875384b,0x3ba8cd86,0xc7c50baa,0xc2905de0,0xb0ce40fb,0x7a231952,0x70840673,0xcf43de26,0xa912a262 +.long 0xeb5b76c1,0x9c38ddcc,0x26fc0ab4,0x746f5285,0xd62c269f,0x52a63a50,0x99458621,0x60049c55,0x3c2f7c9e,0xe7f48f82,0x917d5cf3,0x6bd99043,0x8701f469,0xeb1317a8,0x9a449fe0,0xbd3fe2ed +.long 0x12ef3d36,0x421e79ca,0x3e7ea5de,0x9ee3c36c,0xcdff36f7,0xe48198b5,0xc6b82228,0xaff4f967,0xc47adb7e,0x15e19dd0,0x032e7dfa,0x45699b23,0x1fae026a,0x40680c8b,0x550dbf4d,0x5a347a48 +.long 0x3cef0d7d,0xe652533b,0x2bbb4381,0xd94f7b18,0x0e80f500,0x838752be,0x9e9c9bfb,0x8e6e2488,0x16caca6a,0xc9751697,0x38531ad9,0x866c49d8,0x7151ade1,0xc917e239,0x6037c407,0x2d016ec1 +.long 0x00eac3f9,0xa407ccc9,0xe2ed4748,0x835f6280,0x1cc98e0d,0xcc54c347,0xdcb572eb,0x0e969937,0x8f30c9cb,0x1b16c8e8,0x373c4661,0xa606ae75,0x35502cab,0x47aa689b,0x4d9bb64f,0xf89014ae +.long 0x31c71f7b,0x202f6a9c,0x296ffe5c,0x01f95aa3,0x53cec3a3,0x5fc06014,0x5f498a45,0xeb991237,0x5d91ba87,0xae9a935e,0x0b564a19,0xc6ac6281,0x3bd44e69,0x8a8fe81c,0x9dd11d45,0x7c8b467f +.long 0xea5b8e69,0xf772251f,0xc5b75fbc,0xaeecb3bd,0x887ff0e5,0x1aca3331,0x19f0a131,0xbe5d49ff,0xe5c8646f,0x582c13aa,0x20e19980,0xdbaa12e8,0xf7abbd94,0x8f40f31a,0x1dfc7663,0x1f13f5a8 +.long 0xaceb4fc0,0x5d81f1ee,0x5e6f0f42,0x36256002,0x751370c8,0x4b67d6d7,0x03e80589,0x2608b698,0x05268301,0xcfc0d2fc,0x40309212,0xa6943d39,0x1fd0e1c2,0x192a90c2,0x37f1dc76,0xb209f113 +.long 0x97bf1298,0xefcc5e06,0x219d639e,0xcbdb6730,0xb81e8c6f,0xd009c116,0x1a7ce2e5,0xa3ffdde3,0xa914d3ba,0xc53fbaaa,0x88df85ee,0x836d500f,0x66ee0751,0xd98dc71b,0x714516fd,0x5a3d7005 +.long 0x39eedbba,0x21d3634d,0x0455a46d,0x35cd2e68,0xf9d7eb0c,0xc8cafe65,0x00cefb3e,0xbda3ce9e,0x2c9cf7a4,0xddc17a60,0x7bcb8773,0x01572ee4,0x8c7548df,0xa92b2b01,0xa84600e3,0x732fd309 +.long 0x16543a40,0xe22109c7,0xfede3c6c,0x9acafd36,0x6824e614,0xfb206852,0xda25dca0,0x2a4544a9,0x91d60b06,0x25985262,0x28753545,0x281b7be9,0x90f13b27,0xec667b1a,0x940e2eb4,0x33a83aff +.long 0xd5d721d5,0x80009862,0x5bd3a182,0x0c3357a3,0x7aa2cda4,0x27f3a83b,0xf6f83085,0xb58ae74e,0x2e6dad6b,0x2a911a81,0xf43d6c5b,0xde286051,0xf996c4d8,0x4bdccc41,0x0ae1e24e,0xe7312ec0 +.long 0x6e6485b3,0xf8d112e7,0x771c52f8,0x4d3e24db,0x684a2f6d,0x48e3ee41,0x21d95551,0x7161957d,0xcdb12a6c,0x19631283,0x2e50e164,0xbf3fa882,0x3166cc73,0xf6254b63,0xaee8cc38,0x3aefa7ae +.long 0x3b36f9fd,0x79b0fe62,0xfde19fc0,0x26543b23,0x958482ef,0x136e64a0,0x9b095825,0x23f63771,0xb6a1142e,0x14cfd596,0x335aac0b,0x5ea6aac6,0xf3081dd5,0x86a0e8bd,0x003dc12a,0x5fb89d79 +.long 0xf72e34d4,0xf615c33a,0x110eec35,0x0bd9ea40,0xc1dea34e,0x1c12bc5b,0x49ae4699,0x686584c9,0x8c97b942,0x13ad95d3,0x4e5c7562,0x4609561a,0xf2737f89,0x9e94a4ae,0x371c78b6,0xf57594c6 +.long 0xe3779ee3,0x0f0165fc,0xbd495d9e,0xe00e7f9d,0x20284e7a,0x1fa4efa2,0x47ac6219,0x4564bade,0xc4708e8e,0x90e6312a,0xa71e9adf,0x4f5725fb,0x3d684b9f,0xe95f55ae,0x1e94b415,0x47f7ccb1 +.long 0x8d946581,0x7322851b,0xbdf4a012,0xf0d13133,0x6584dae0,0xa3510f69,0x3c9f6c6d,0x03a7c171,0xe475381a,0x5be97f38,0x85823334,0xca1ba422,0x0be17dda,0xf83cc5c7,0x0b918c0f,0x158b1494 +.long 0x522e6b69,0xda3a77e5,0xbbcd6c18,0x69c908c3,0xd924fd56,0x1f1b9e48,0xaa4bb3f7,0x37c64e36,0xee478d7d,0x5a4fdbdf,0x0193f7a0,0xba75c8bc,0x56cd16df,0x84bc1e84,0x46fad151,0x1fb08f08 +.long 0x842e9f30,0x8a7cabf9,0x5eab83af,0xa331d4bf,0x017f2a6a,0xd272cfba,0x83aba0e3,0x27560abc,0x0e3a6b75,0x94b83387,0x6b9f50f5,0x25c6aea2,0xb5fdf6d0,0x803d691d,0xe6333514,0x03b77509 +.long 0x61a341c1,0x36178903,0x0cfd6142,0x3604dc60,0x8533316c,0x022295eb,0x44af2922,0x3dbde4ac,0x1c7eef69,0x898afc5d,0xd14f4fa1,0x58896805,0x203c21ca,0x05002160,0x40ef730b,0x6f0d1f30 +.long 0x196224f8,0x8e8c44d4,0x374d079d,0x75a4ab95,0x7d48f123,0x79085ecc,0x1bf65ad8,0x56f04d31,0xbda602b2,0xe220bf1c,0xf9612c69,0x73ee1742,0x084fd06b,0x76008fc8,0xf11380d1,0x4000ef9f +.long 0x12cfe297,0x48201b4b,0x292f74e5,0x3eee129c,0xc9e874e8,0xe1fe114e,0x92c5fc41,0x899b055c,0x3a39c8cf,0x4e477a64,0x78963cc9,0x82f09efe,0xd333f863,0x6fd3fd8f,0xdc949c63,0x85132b2a +.long 0x516eb17b,0x7e06a3ab,0xd2c7372b,0x73bec06f,0xba896da6,0xe4f74f55,0x8e9eb40f,0xbb4afef8,0xe61d66b0,0x2d75bec8,0xef29300b,0x02bda4b4,0x026baa5a,0x8bbaa8de,0xa07f4440,0xff54befd +.long 0xbe7a2af3,0xbd9b8b1d,0x4fb74a72,0xec51caa9,0x63879697,0xb9937a4b,0xec2687d5,0x7c9a9d20,0x6ef5f014,0x1773e44f,0xe90c6900,0x8abcf412,0x8142161e,0x387bd022,0xfcb6ff2a,0x50393755 +.long 0xed6def63,0x9813fd56,0x7d53106c,0x53cf6482,0x431f7ac1,0x991a35bd,0x63e65faf,0xf1e274dd,0x44cc7880,0xf63ffa3c,0x7c256981,0x411a426b,0x93a420e0,0xb698b9fd,0xae53f8fe,0x89fdddc0 +.long 0x32398baa,0x766e0722,0x5cfca031,0x205fee42,0x7a029cf2,0xa49f5341,0x4023890d,0xa88c68b8,0x7337aaa8,0xbc275041,0x0eb384f4,0x9ed364ad,0x29aba92f,0xe0816f85,0x04e38a88,0x2e9e1941 +.long 0x3dafd2d5,0x57eef44a,0x97ed98d8,0x35d1fae5,0x2307f9b1,0x50628c09,0xd6cba5c6,0x09d84aae,0x88aaa691,0x67071bc7,0xafe6cb03,0x2dea57a9,0x3d78ac01,0xdfe11bb4,0x7fd7aa51,0x7286418c +.long 0x77f7195a,0xfabf7709,0xadeb838f,0x8ec86167,0xbb4f012d,0xea1285a8,0x9a3eab3f,0xd6883503,0x309004c2,0xee5d24f8,0x13ffe95e,0xa96e4b76,0xbd223ea4,0x0cdffe12,0xb6739a53,0x8f5c2ee5 +.long 0xdd968198,0x5cb4aaa5,0x72413a6c,0xfa131c52,0x9536d903,0x53d46a90,0x48606d8e,0xb270f0d3,0xa053a3bc,0x518c7564,0x1a86caef,0x088254b7,0x0ab5efd0,0xb3ba8cb4,0x4605945d,0x5c59900e +.long 0xa1887395,0xecace1dd,0x932a65de,0x40960f36,0x3aa95529,0x9611ff5c,0x7c1e5a36,0xc58215b0,0xf0e1a524,0xd48c9b58,0xf590dfb8,0xb406856b,0x9cd95662,0xc7605e04,0xa33ecf82,0x0dd036ee +.long 0xc33156b3,0xa50171ac,0x4a80172e,0xf09d24ea,0x76dc8eef,0x4e1f72c6,0x5e3d44ee,0xe60caadc,0x979b1d8f,0x006ef8a6,0x97788d26,0x60908a1c,0x266feec0,0x6e08f95b,0x22e8c94e,0x618427c2 +.long 0x59145a65,0x3d613339,0xfa406337,0xcd9bc368,0x2d8a52a0,0x82d11be3,0x97a1c590,0xf6877b27,0xf5cbdb25,0x837a819b,0xde090249,0x2a4fd1d8,0x74990e5f,0x622a7de7,0x7945511b,0x840fa5a0 +.long 0x6558842d,0x30b974be,0x17f3d0a6,0x70df8c64,0x7542e46d,0x7c803520,0xe4ecc823,0x7251fe7f,0x5e9aac9a,0xe59134cb,0xf0045d71,0x11bb0934,0xdbcb1d4e,0x53e5d9b5,0x92defc91,0x8d97a905 +.long 0x7946d3f9,0xfe289327,0x07472273,0xe132bd24,0x1eb6ae86,0xeeeb510c,0xf0595067,0x777708c5,0x1297029e,0x18e2c8cd,0xbbf9305e,0x2c61095c,0x6b85d6d9,0xe466c258,0xda1ea530,0x8ac06c36 +.long 0xa1304668,0xa365dc39,0x07f89606,0xe4a9c885,0xacc7228d,0x65a4898f,0x84ca8303,0x3e2347ff,0xea7d23a3,0xa5f6fb77,0x672a71cd,0x2fac257d,0x7e6a44d3,0x6908bef8,0x891d3d7a,0x8ff87566 +.long 0x6b0cf82e,0xe58e90b3,0x2615b5e7,0x6438d246,0x669c145a,0x07b1f8fc,0x36f1e1cb,0xb0d8b2da,0xd9184c4d,0x54d5dadb,0xf93d9976,0x3dbb18d5,0xd1147d47,0x0a3e0f56,0xa0a48609,0x2afa8c8d +.long 0xbc36742c,0x275353e8,0xeea0ed90,0x898f427e,0x3e477b00,0x26f4947e,0x308741e3,0x8ad8848a,0xd74a2a46,0x6c703c38,0x9ba17ba2,0x5e3e05a9,0x4ab9a9e4,0xc1fa6f66,0x3841d6ec,0x474a2d9a +.long 0x653ae326,0x871239ad,0xa74cbb43,0x14bcf72a,0x20d4c083,0x8737650e,0x110ed4af,0x3df86536,0xb53ca555,0xd2d86fe7,0xabd5d538,0x688cb00d,0x1ad38468,0xcf81bda3,0xf01167b6,0x7ccfe3cc +.long 0x6c4c1fe6,0xcf4f47e0,0x298bbb79,0x557e1f1a,0x30d45a14,0xf93b974f,0x0baf97c4,0x174a1d2d,0xc51fbf53,0x7a003b30,0xee68b225,0xd8940991,0x1c0f4173,0x5b0aa7b7,0xa20a7153,0x975797c9 +.long 0xe3533d77,0x26e08c07,0x2e341c99,0xd7222e6a,0x8d2dc4ed,0x9d60ec3d,0x7c476cf8,0xbdfe0d8f,0x1d056605,0x1fe59ab6,0x86a8551f,0xa9ea9df6,0x47fb8d8c,0x8489941e,0x4a7f1b10,0xfeb874eb +.long 0x7ee0d98f,0xfe5fea86,0xdbf61864,0x201ad34b,0x37c031d4,0x45d8fe47,0x795f0822,0xd5f49fae,0xc7f4a40c,0xdb0fb291,0x730ddd92,0x2e69d9c1,0x49d76987,0x754e1054,0x7662db87,0x8a24911d +.long 0x60a71676,0x61fc1810,0xf66a8ad1,0xe852d1a8,0x6417231e,0x172bbd65,0x3babb11f,0x0d6de7bd,0xc8e347f8,0x6fde6f88,0x9bd99cc3,0x1c587547,0x34076950,0x78e54ed0,0x796e83ba,0x97f0f334 +.long 0x4924867a,0xe4dbe1ce,0x60b84917,0xbd5f51b0,0x3cb09a79,0x37530040,0xff1743d8,0xdb3fe0f8,0x556fa9db,0xed7894d8,0x23412fbf,0xfa262169,0xba7b9291,0x563be0db,0x0c9fb234,0x6ca8b8c0 +.long 0xbd763802,0xed406aa9,0x65303da1,0xc21486a0,0xc7e62ec4,0x61ae291e,0xdf99333e,0x622a0492,0xbb7a8ee0,0x7fd80c9d,0x6c01aedb,0xdc2ed3bc,0x08be74ec,0x35c35a12,0x469f671f,0xd540cb1a +.long 0xcf84f6c7,0xd16ced4e,0x2d090f43,0x8561fb9c,0x6f239db4,0x7e693d79,0x77bd0d94,0xa736f928,0x2c1950ee,0x07b4d929,0x56dc11b3,0xda177543,0x7a6a878e,0xa5dfbbaa,0x4decb08a,0x1c70cb29 +.long 0x6f0f7c50,0xfba28c8b,0x854dcc6d,0xa8eba2b8,0x36b78642,0x5ff8e89a,0xf6873adf,0x070c1c8e,0x6484d2e4,0xbbd3c371,0x0d414129,0xfb78318f,0x6ad93b0b,0x2621a39c,0xa9e917f7,0x979d74c2 +.long 0x61fb0428,0xfc195647,0xbee624d4,0x4d78954a,0xb8ae86fd,0xb94896e0,0xc91c8b13,0x6667ac0c,0x43bcf832,0x9f180512,0xa0010137,0xfbadf8b7,0xb3ba8aa7,0xc69b4089,0xe687ce85,0xfac4bacd +.long 0x977eab40,0x9164088d,0x2760b390,0x51f4c5b6,0x340dd553,0xd238238f,0xdb1d31c9,0x358566c3,0x5068f5ff,0x3a5ad69e,0xdaff6b06,0xf31435fc,0xd6debff0,0xae549a5b,0x75e01331,0x59e5f0b7 +.long 0x98559acf,0x5d492fb8,0x4db79b50,0x96018c2e,0x609f66aa,0x55f4a48f,0x4900a14f,0x1943b3af,0x15a40d39,0xc22496df,0x4c20f7c5,0xb2a44684,0x3b98404c,0x76a35afa,0xff5d1b77,0xbec75725 +.long 0xbea06444,0xb67aa163,0xf724b6f2,0x27e95bb2,0xd238c8ab,0x3c20e3e9,0xddd6ae17,0x1213754e,0x716e0f74,0x8c431020,0xffc095c2,0x6679c82e,0xd0ac2932,0x2eb3adf4,0x01bb7a76,0x2cc970d3 +.long 0x740f0e66,0x70c71f2f,0x2b6b23cc,0x545c616b,0xb40a8bd7,0x4528cfcb,0x2ab27722,0xff839633,0x025ac99a,0x049127d9,0x2b63e33b,0xd314d4a0,0x28d84519,0xc8c310e7,0xb3bc84ba,0x0fcb8983 +.long 0x38634818,0x2cc52261,0xb44c2e0b,0x501814f4,0x54dfdba3,0xf7e181aa,0xe759718c,0xcfd58ff0,0xd3b507a8,0xf90cdb14,0xc50bdad8,0x57bd478e,0x50e5f9aa,0x29c197e2,0xe40bc855,0x4db6eef8 +.long 0xd1fc0654,0x2cc8f21a,0x81269d73,0xc71cc963,0x077f49f9,0xecfbb204,0xca56b793,0xdde92571,0xf97ad8f7,0x9abed6a3,0x924de3bd,0xe6c19d3f,0xa140a800,0x8dce92f4,0x1337af07,0x85f44d1e +.long 0x09d64c52,0x5953c08b,0xf5df9749,0xa1b5e49f,0x52735f7d,0x336a8fb8,0x9add676b,0xb332b6db,0xb4511aa4,0x558b88a0,0xdbd5cc55,0x09788752,0xd8cd52bd,0x16b43b9c,0xc2a2696b,0x7f0bc5a0 +.long 0xc11f61ef,0x146e12d4,0x3a83e79e,0x9ce10754,0x6cbfca15,0x08ec73d9,0x5b49653f,0x09ff29ad,0xe7da946e,0xe31b72bd,0xee80a4f2,0xebf9eb3b,0x17598ce4,0xd1aabd08,0x53f37e80,0x18b5fef4 +.long 0x5958cd79,0xd5d5cdd3,0x1d373114,0x3580a1b5,0xfa935726,0xa36e4c91,0xef20d760,0xa38c534d,0x2ff5845b,0x7088e40a,0xbd78177f,0xe5bb40bd,0x857f9920,0x4f06a7a8,0xe968f05d,0xe3cc3e50 +.long 0xe5682d26,0x1d68b7fe,0xaec7f87c,0x5206f76f,0x041951ab,0x41110530,0xd4b5a71a,0x58ec52c1,0x0f75cf9a,0xf3488f99,0xba82d0d5,0xf411951f,0x618895ab,0x27ee75be,0x6d8aab14,0xeae060d4 +.long 0x7fb54dc2,0x9ae1df73,0x25963649,0x1f3e391b,0xfe055081,0x242ec32a,0x8491c9bd,0x5bd450ef,0x981eb389,0x367efc67,0x3a0550d5,0xed7e1928,0xab3ce75c,0x362e776b,0x1f24c523,0xe890e308 +.long 0xfeccef76,0xb961b682,0x8bba6d92,0x8b8e11f5,0x2b2375c4,0x8f2ccc4c,0xe2f86cfa,0x0d7f7a52,0x9efe5633,0xfd94d30a,0x5451f934,0x2d8d246b,0x244e6a00,0x2234c6e3,0xddec8c50,0xde2b5b0d +.long 0xbf776f5b,0x2ce53c5a,0x60357b05,0x6f724071,0x71bf3f7a,0xb2593717,0x440c4a9f,0x87d2501c,0x87b05340,0x440552e1,0x21624c32,0xb7bf7cc8,0x22facddb,0x4155a6ce,0x889837ef,0x5a4228cb +.long 0xfd4fd671,0xef87d6d6,0xc2daa10e,0xa233687e,0x03c0eb96,0x75622244,0x8bf19be6,0x7632d184,0x40735ff4,0x05d0f8e9,0xc00931f1,0x3a3e6e13,0xdafe3f18,0x31ccde6a,0xcfe51207,0xf381366a +.long 0x60167d92,0x24c222a9,0x7529f18c,0x62f9d6f8,0x0353b114,0x412397c0,0xef808043,0x334d89dc,0x2a4383ce,0xd9ec63ba,0x5cf92ba0,0xcec8e937,0xc8be74c0,0xfb8b4288,0x105d4391,0x67d6912f +.long 0x1b913149,0x7b996c46,0x3a4e02da,0x36aae2ef,0x972de594,0xb68aa003,0x4ec6d545,0x284ec70d,0x61391d54,0xf3d2b2d0,0xfe114e92,0x69c5d5d6,0xb4482dff,0xbe0f00b5,0xf5bf33c5,0xe1596fa5 +.long 0x96a71cba,0x10595b56,0xfdcadeb7,0x944938b2,0xfccd8471,0xa282da4c,0x0d37bfe1,0x98ec05f3,0x0698304a,0xe171ce1b,0x21bdf79b,0x2d691444,0x1b21dec1,0xd0cd3b74,0x16a15f71,0x712ecd8b +.long 0x00fd56e1,0x8d4c00a7,0xf9527c18,0x02ec9692,0x4a3e42e1,0x21c44937,0x1392ae0a,0x9176fbab,0x44b7b618,0x8726f1ba,0xf1de491c,0xb4d7aae9,0x07b582c0,0xf91df7b9,0xef60aa3a,0x7e116c30 +.long 0x466265d7,0x99270f81,0x4df7adf0,0xb15b6fe2,0xf9738f7f,0xfe33b2d3,0xd6d70f95,0x48553ab9,0xc21e94db,0x2cc72ac8,0xbdc0bbee,0x795ac38d,0x2e40478f,0x0a1be449,0x052bde55,0x81bd3394 +.long 0x56b3c4f2,0x63c8dbe9,0x904177cc,0x017a99cf,0x4d010fc1,0x947bbddb,0xbb2c9b21,0xacf9b00b,0x47173611,0x2970bc8d,0xac7d756f,0x1a4cbe08,0x67d541a2,0x06d9f4aa,0x59c2cf44,0xa3e8b689 +.long 0x4d88f1dd,0xaad066da,0x7ad35dea,0xc604f165,0x4478ca67,0x7edc0720,0xba02ce06,0xa10dfae0,0xaf36f4e4,0xeceb1c76,0xaf3f8f48,0x994b2292,0x77c8a68c,0xbf9ed77b,0x51744c9d,0x74f544ea +.long 0x8113a757,0x82d05bb9,0x8a9885e4,0x4ef2d2b4,0x1aa7865f,0x1e332be5,0x290d1a52,0x22b76b18,0x44351683,0x308a2310,0xa3f22840,0x9d861896,0x841ed947,0x5959ddcd,0x154b73bf,0x0def0c94 +.long 0x4c7c15e0,0xf0105417,0x3a277c32,0x539bfb02,0xf9dccf5f,0xe699268e,0x0247a3bd,0x9f5796a5,0x4f157269,0x8b839de8,0x7a30196b,0xc825c1e5,0xdc8a5a91,0x6ef0aabc,0x498b7fe6,0xf4a8ce6c +.long 0x70cbac78,0x1cce35a7,0xf6b23958,0x83488e9b,0xd76cb011,0x0341a070,0xae1b2658,0xda6c9d06,0xdd648c52,0xb701fb30,0x52fb9fd1,0x994ca02c,0x6f563086,0x06933117,0x17856bab,0x3d2b8100 +.long 0x5963a46e,0xe89f48c8,0xa99e61c7,0x658ab875,0x4b8517b4,0x6e296f87,0xfc1bc656,0x36c4fcdc,0xa3906def,0xde5227a1,0x62418945,0x9fe95f57,0xfdd96cde,0x20c91e81,0xda4480de,0x5adbe47e +.long 0x396de2b6,0xa009370f,0xf0ecc7bd,0x98583d4b,0xe51d0672,0xf44f6b57,0x556b1984,0x03d6b078,0xb0b64912,0x27dbdd93,0x15687b09,0x9b3a3434,0x51ec20a9,0x0dba6461,0xff28187c,0xec93db7f +.long 0x66e48bdd,0x00ff8c24,0x11ccd78e,0x2514f2f9,0xe1250603,0xeba11f4f,0x243fa156,0x8a22cd41,0xb283e4c6,0xa4e58df4,0x8b39783f,0x78c29859,0xa5259809,0x5235aee2,0x0e0227dd,0xc16284b5 +.long 0x1338830d,0xa5f57916,0xd2123fca,0x6d4b8a6b,0xf9c546f8,0x236ea68a,0xfa608d36,0xc1d36873,0x8d436d13,0xcd76e495,0x8fb080af,0xd4d9c221,0xe8ad3fb5,0x665c1728,0xb3d572e0,0xcf1ebe4d +.long 0x584c5e20,0xa7a8746a,0xb9dc7035,0x267e4ea1,0xb9548c9b,0x593a15cf,0x4bd012f3,0x5e6e2135,0x8c8f936e,0xdf31cc6a,0xb5c241dc,0x8af84d04,0x345efb86,0x63990a6f,0xb9b962cb,0x6fef4e61 +.long 0x25722608,0xf6368f09,0x131cf5c6,0x131260db,0xfab4f7ac,0x40eb353b,0x37eee829,0x85c78880,0xc3bdf24e,0x4c1581ff,0xf5c3c5a8,0x5bff75cb,0xa14e6f40,0x35e8c83f,0x0295e0ca,0xb81d1c0f +.long 0xf43a730f,0xfcde7cc8,0x33ab590e,0xe89b6f3c,0xad03240b,0xc823f529,0x98bea5db,0x82b79afe,0x962fe5de,0x568f2856,0x60c591f3,0x0c590adb,0x4a28a858,0x1fc74a14,0xb3203f4c,0x3b662498 +.long 0x6c39765a,0x91e3cf0d,0xac3cca0b,0xa2db3acd,0xcb953b50,0x288f2f08,0xcf43cf1a,0x2414582c,0x60eee9a8,0x8dec8bbc,0x729aa042,0x54c79f02,0x6532f5d5,0xd81cd5ec,0xcf82e15f,0xa672303a +.long 0x719c0563,0x376aafa8,0xbc5fc79f,0xcd8ad2dc,0xcb750cd3,0x303fdb9f,0x4418b08e,0x14ff052f,0x3e2d6520,0xf75084cf,0x144ed509,0x7ebdf0f8,0xd3f25b98,0xf43bf0f2,0xa354d837,0x86ad71cf +.long 0x26f43572,0xb827fe92,0x5d824758,0xdfd3ab5b,0x539094c1,0x315dd23a,0x66623d68,0x85c0e37a,0x7be19ae0,0x575c7972,0xdf0d36b5,0x616a3396,0x26b1ff7e,0xa1ebb3c8,0x140ad453,0x635b9485 +.long 0xda430c0b,0x92bf3cda,0x3a96dac6,0x4702850e,0x15ac326a,0xc91cf0a5,0xab8c25e4,0x95de4f49,0xe265c17c,0xb01bad09,0x087b3881,0x24e45464,0xe1fac5ca,0xd43e583c,0x6ead97a6,0xe17cb318 +.long 0x74dcec46,0x6cc39243,0x54c2b73f,0x33cfc02d,0xf26cd99c,0x82917844,0xd1773f89,0x8819dd95,0x0871f427,0x09572aa6,0xf6f01c34,0x8e0cf365,0xbff1f5af,0x7fa52988,0xe75e8e50,0x4eb357ea +.long 0x868af75d,0xd9d0c8c4,0x45c8c7ea,0xd7325cff,0xcc81ecb0,0xab471996,0x611824ed,0xff5d55f3,0x1977a0ee,0xbe314541,0x722038c6,0x5085c4c5,0xf94bb495,0x2d5335bf,0xc8e2a082,0x894ad8a6 +.long 0xada35438,0x5c3e2341,0x049b8c4e,0xf4a9fc89,0x9f17cf34,0xbeeb355a,0x6c91fe10,0x3f311e0e,0x92ab9891,0xc2d20038,0x3e8ce9a9,0x257bdcc1,0x88c53bee,0x1b2d9789,0xcdba143a,0x927ce89a +.long 0x523db280,0xb0a32cca,0x50d43783,0x5c889f8a,0x4897d16f,0x503e04b3,0x08f5f2e8,0x8cdb6e78,0x179c8e74,0x6ab91cf0,0x48211d60,0xd8874e52,0xea851200,0xf948d4d5,0xe6f9840a,0x4076d41e +.long 0x47b517ea,0xc20e263c,0x30685e5e,0x79a448fd,0xf90631a0,0xe55f6f78,0xa79e6346,0x88a790b1,0x80969fe8,0x62160c7d,0x41491bb9,0x54f92fd4,0x5c957526,0xa6645c23,0xbea3ce7b,0xf44cc5ae +.long 0x8b1e68b7,0xf7628327,0x303f29d3,0xc731ad7a,0x57d03ecb,0xfe5a9ca9,0x41bc97a7,0x96c0d50c,0x9b4f7f24,0xc4669fe7,0x3d9967ef,0xfdd781d8,0x5d2c208d,0x7892c7c3,0xae545cb3,0x8bf64f7c +.long 0x467be912,0xc01f862c,0xc73d30cc,0xf4c85ee9,0x6ab83ec7,0x1fa6f4be,0x4e3e3cf9,0xa07a3c1c,0x0c00beb3,0x87f8ef45,0x000d4c3e,0x30e2c2b3,0xfe08bf5b,0x1aa00b94,0x9224ef52,0x32c133aa +.long 0x32e5685d,0x38df16bb,0x58e6f544,0x68a9e069,0xcdc5ebc6,0x495aaff7,0x378b135f,0xf894a645,0x09e27ecf,0xf316350a,0x58f7179d,0xeced201e,0xe97861ba,0x2eec273c,0xd693be2e,0x47ec2cae +.long 0xf68367ce,0xfa4c97c4,0xbe5a5755,0xe4f47d0b,0xb298a979,0x17de815d,0xc177dc7d,0xd7eca659,0x49ded0a3,0x20fdbb71,0xfb34d3c5,0x4cb2aad4,0x60858a33,0x2cf31d28,0xa24aa40f,0x3b6873ef +.long 0x2c11bb37,0x540234b2,0xed4c74a3,0x2d0366dd,0xeec5f25d,0xf9a968da,0x67b63142,0x36601068,0x68d7b6d4,0x07cd6d2c,0x0c842942,0xa8f74f09,0x7768b1ee,0xe2751404,0xfe62aee4,0x4b5f7e89 +.long 0x89070d26,0xc6a77177,0xdd1c8bc7,0xa1f28e4e,0x469e1f17,0xea5f4f06,0xfbdb78e0,0x78fc242a,0x8b0588f1,0xc9c7c592,0x1535921e,0xb6b7a0fd,0xbde5ae35,0xcc5bdb91,0x12ff1864,0xb42c485e +.long 0xdbab98aa,0xa1113e13,0xa17b1024,0xde9d469b,0xc0462d3a,0x23f48b37,0x7c5c078d,0x3752e537,0x15544eb9,0xe3a86add,0x80fba279,0xf013aea7,0xf22001b5,0x8b5bb76c,0xf02891ab,0xe617ba14 +.long 0x936219d3,0xd39182a6,0xae51cb19,0x5ce1f194,0xbf07a74c,0xc78f8598,0x22cbf1bc,0x6d7158f2,0xe300ce18,0x3b846b21,0x2d11275d,0x35fba630,0xa0239b9b,0x5fe25c36,0xdf05d940,0xd8beb35d +.long 0x1f7e320d,0x4db02bb0,0x6da320ea,0x0641c364,0x821389a3,0x6d95fa5d,0x8fcd8e3d,0x92699748,0xceb6c143,0x316fef17,0xd933762b,0x67fcb841,0x118b17f8,0xbb837e35,0x9fd24821,0x4b92552f +.long 0x46aca793,0xae6bc70e,0xe579311b,0x1cf0b0e4,0x5802f716,0x8dc631be,0xbddbee4d,0x099bdc6f,0x0caf8b05,0xcc352bb2,0x72d63df2,0xf74d505a,0x91c4f408,0xb9876d4b,0x9e229b2d,0x1ce18473 +.long 0x83abdb4a,0x49507597,0xdee84b18,0x850fbcb6,0x609e67dc,0x6325236e,0x9336c6d8,0x04d831d9,0xfa12d45d,0x8deaae3b,0x4746e246,0xe425f8ce,0x24f5f31e,0x8004c175,0xad62c3b7,0xaca16d8f +.long 0x9152f934,0x0dc15a6a,0xed0e12c1,0xf1235e5d,0xda477dac,0xc33c06ec,0xb2ea0006,0x76be8732,0x0c0cd313,0xcf3f7831,0xa614260d,0x3c524553,0xcab22d15,0x31a756f8,0x77827a20,0x03ee10d1 +.long 0x1994ef20,0xd1e059b2,0x638ae318,0x2a653b69,0x2f699010,0x70d5eb58,0x09f5f84a,0x279739f7,0x8b799336,0x5da4663c,0x203c37eb,0xfdfdf14d,0xa1dbfb2d,0x32d8a9dc,0x77d48f9b,0xab40cff0 +.long 0xd20b42d5,0xc018b383,0x9f78845f,0xf9a810ef,0xbdba9df0,0x40af3753,0x131dfdf9,0xb90bdcfc,0xf01ab782,0x18720591,0x6af12a88,0xc823f211,0x0dc14401,0xa51b80f3,0xfb2dfbe3,0xde248f77 +.long 0x0cafe751,0xef5a44e5,0xd4dcd221,0x73997c9c,0xde854024,0x32fd86d1,0xa09b84bb,0xd5b53adc,0xdcedd8d1,0x008d7a11,0x74b32c84,0x406bd1c8,0x05dde8b1,0x5d4472ff,0xfce2b32f,0x2e25f2cd +.long 0x29dfc254,0xbec0dd5e,0x2b98b267,0x4455fcf6,0xc72df2ad,0x0b4d43a5,0x48a75397,0xea70e6be,0x5820f3bf,0x2aad6169,0x9e37f68f,0xf410d2dd,0x7be5ac83,0x70fb7dba,0x36ec3eec,0x636bb645 +.long 0x9754e21c,0x27104ea3,0x8d63c373,0xbc87a3e6,0x4109db9a,0x483351d7,0x60134da7,0x0fa724e3,0xb0720b16,0x9ff44c29,0x06aceead,0x2dd0cf13,0xe26929a6,0x5942758c,0xb766a92b,0x96c5db92 +.long 0x5f18395e,0xcec7d4c0,0x1f80d032,0xd3f22744,0xcb86075b,0x7a68b37a,0xafef92db,0x074764dd,0x7bc7f389,0xded1e950,0xb9756460,0xc580c850,0x7da48157,0xaeeec2a4,0x82c587b3,0x3f0b4e7f +.long 0xa9f19c53,0x231c6de8,0x6974e34e,0x5717bd73,0xf1508fa9,0xd9e1d216,0xdadaa124,0x9f112361,0x823b7348,0x80145e31,0xac634069,0x4dd8f0d5,0x2297c258,0xe3d82fc7,0x9cee7431,0x276fcfee +.long 0x2bc0aea9,0x8eb61b5e,0xde329431,0x4f668fd5,0x38e4b87e,0x03a32ab1,0x73d0ef0b,0xe1374517,0x853ac983,0x1a46f7e6,0x68e78a57,0xc3bdf42e,0x2ea96dd1,0xacf20785,0xf1638460,0xa10649b9 +.long 0x879fbbed,0xf2369f0b,0xda9d1869,0x0ff0ae86,0x56766f45,0x5251d759,0x2be8d0fc,0x4984d8c0,0xd21008f0,0x7ecc95a6,0x3a1a1c49,0x29bd54a0,0xd26c50f3,0xab9828c5,0x51d0d251,0x32c0087c +.long 0x0c1cdb26,0x9bac3ce6,0x557ca205,0xcd94d947,0x9db1fdcd,0x1b1bd598,0xa3d8b149,0x0eda0108,0x56152fcc,0x95066610,0xe7192b33,0xc2f037e6,0xc92e05a4,0xdeffb41a,0xc2f6c62e,0x1105f6c2 +.long 0x8733913c,0x68e73500,0x3f3adc40,0xcce86163,0x38a278e9,0xf407a942,0x2ab21292,0xd13c1b9d,0x1c74cf5c,0x93ed7ec7,0xf1a4c1b4,0x8887dc48,0x4b3a11f1,0x3830ff30,0x58937cb6,0x358c5a3c +.long 0x89022829,0x027dc404,0x3b798f79,0x40e93977,0x38be6ead,0x90ad3337,0xf34c0a5d,0x9c23f6bc,0xfbffd8bb,0xd1711a35,0x1949d3dd,0x60fcfb49,0x7825d93a,0x09c8ef4b,0xa0a8c968,0x24233cff +.long 0xe6d982af,0x67ade46c,0xe7544d7c,0xebb6bf3e,0x3d8bd087,0xd6b9ba76,0x4dc61280,0x46fe382d,0xb5bdbd75,0xbd39a7e8,0xb8f228fe,0xab381331,0xce1c4300,0x0709a77c,0xf337ceac,0x6a247e56 +.long 0x636288be,0x8f34f21b,0xc8a7c305,0x9dfdca74,0xea919e04,0x6decfd1b,0x8e1991f8,0xcdf2688d,0xd0f8a67e,0xe607df44,0x0b58d010,0xd985df4b,0x0c24f8f4,0x57f834c5,0xa0bf01ae,0xe976ef56 +.long 0xa1c32373,0x536395ac,0x734c0a13,0x351027aa,0x5e6bd5bc,0xd2f1b5d6,0x223debed,0x2b539e24,0x0eaa1d71,0xd4994cec,0x661dcf65,0x2a83381d,0x7b54c740,0x5f1aed2f,0xd6dda5ee,0x0bea3fa5 +.long 0x36cc6134,0x9d4fb684,0xc0a443dd,0x8eb9bbf3,0x383b7d2a,0xfc500e2e,0x5b775257,0x7aad621c,0x0a8f7cc0,0x69284d74,0x07562d65,0xe820c2ce,0x499758ee,0xbf9531b9,0x6ee0cc2d,0x73e95ca5 +.long 0xfbaf50a5,0xf61790ab,0x684e0750,0xdf55e76b,0xf176b005,0xec516da7,0x7a2dddc7,0x575553bb,0x553afa73,0x37c87ca3,0x4d55c251,0x315f3ffc,0xaf3e5d35,0xe846442a,0x6495ff28,0x61b91149 +.long 0xfa326dc3,0x23cc95d3,0x18fc2cea,0x1df4da1f,0xd0a37d59,0x24bf9adc,0x320d6e1e,0xb6710053,0x618344d1,0x96f9667e,0xa06445af,0xcc7ce042,0xd68dbc3a,0xa02d8514,0x280b5a5b,0x4ea109e4 +.long 0xb40961bf,0x5741a7ac,0x6aa56bfa,0x4ada5937,0x02b765d1,0x7feb9145,0xe6ad1582,0x561e97be,0xda3982f5,0xbbc4a5b6,0xb546f468,0x0c2659ed,0x59612d20,0xb8e7e6aa,0xac19e8e0,0xd83dfe20 +.long 0xb835398c,0x8530c45f,0xb38a41c2,0x6106a8bf,0x35f5dcdb,0x21e8f9a6,0xcae498ed,0x39707137,0xd8249f00,0x70c23834,0xab2537a0,0x9f14b58f,0x5f61c0c2,0xd043c365,0x09a194a7,0xdc5926d6 +.long 0x8e77738a,0xddec0339,0xfba46426,0xd07a63ef,0xee7f6e86,0x2e58e79c,0xff32d241,0xe59b0459,0x20fa0338,0xc5ec84e5,0xeaff5ace,0x97939ac8,0xb4a38313,0x0310a4e3,0x8f9d9885,0x9115fba2 +.long 0x5fadf8c3,0x8dd710c2,0xce19c0e2,0x66be38a2,0x4cfe5022,0xd42a279c,0x0e24e1b8,0x597bb530,0xc153ca7f,0x3cde86b7,0x707d63bd,0xa8d30fb3,0xbd60d21e,0xac905f92,0x7b9a54ab,0x98e7ffb6 +.long 0xe9726a30,0xd7147df8,0xafce3533,0xb5e216ff,0x2ff1ec40,0xb550b799,0xa1e953fd,0x6b613b87,0x792d5610,0x87b88dba,0xa190fbe1,0x2ee1270a,0x2ef581da,0x02f4e2dc,0xeff82a95,0x016530e4 +.long 0x8fd6ee89,0xcbb93dfd,0x46848fff,0x16d3d986,0x1da47adf,0x600eff24,0x0ad47a71,0x1b9754a0,0x70c33b98,0x8f9266df,0xdf34186e,0xaadc87ae,0x4ad24132,0x0d2ce8e1,0x19946eba,0x8a47cbfc +.long 0x62b5f3af,0x47feeb66,0x0abb3734,0xcefab561,0x19f35cb1,0x449de60e,0x157f0eb9,0x39f8db14,0x3c61bfd6,0xffaecc5b,0x41216703,0xa5a4d41d,0x224e1cc2,0x7f8fabed,0x871ad953,0x0d5a8186 +.long 0xd22da9a9,0xf10774f7,0xcc8a9b0d,0x45b8a678,0xbdc32cff,0xd9c2e722,0x337202a5,0xbf71b5f5,0x69fc4db9,0x95c57f2f,0x765d01e1,0xb6dad34c,0xcb904635,0x7e0bd13f,0x763a588c,0x61751253 +.long 0x81af2c2d,0xd85c2997,0x81b9d7da,0xc0f7d9c4,0x08533e8d,0x838a34ae,0x311d8311,0x15c4cb08,0x8e121e14,0x97f83285,0x85000a5f,0xeea7dc1e,0x5d256274,0x0c6059b6,0xb95075c0,0xec9beace +.long 0x1df97828,0x173daad7,0xa8937877,0xbf851cb5,0x01646f3c,0xb083c594,0x50c6d352,0x3bad30cf,0x496bbcea,0xfeb2b202,0x18a1e8ba,0x3cf9fd4f,0x1c066029,0xd26de7ff,0x4e9ed4f8,0x39c81e9e +.long 0x7b390d35,0xd8be0cb9,0x964aab27,0x01df2bbd,0xc3ef64f8,0x3e8c1a65,0x716ed1dd,0x567291d1,0x5f5406d3,0x95499c6c,0x5ba8e23f,0x71fdda39,0xd5096ece,0xcfeb320e,0xca66dd16,0xbe7ba92b +.long 0xc6fb5a7d,0x4608d36b,0x6d2dd0e0,0xe3eea15a,0x8f97a36a,0x75b0a3eb,0x1c83de1e,0xf59814cc,0x1c33c23f,0x56c9c5b0,0x6faa4136,0xa96c1da4,0xde316551,0x46bf2074,0x1f756c8f,0x3b866e7b +.long 0x1495ed6b,0x727727d8,0xb682dce7,0xb2394243,0x758610f3,0x8ab8454e,0x857d72a4,0xc243ce84,0xdbbf370f,0x7b320d71,0x78e0f7ca,0xff9afa37,0xea7b523f,0x0119d1e0,0x058c7d42,0xb997f8cb +.long 0x37bbb184,0x285bcd2a,0xa45d1fa6,0x51dcec49,0xe29634cb,0x6ade3b64,0x26b86ef1,0x080c94a7,0x2283fbe3,0xba583db1,0x5a9315ed,0x902bddc8,0x86964bec,0x07c1ccb3,0xb6258301,0x78f4eacf +.long 0x56f90823,0x4bdf3a49,0x741d777b,0xba0f5080,0xf38bf760,0x091d71c3,0x9b625b02,0x9633d50f,0xb8c9de61,0x03ecb743,0x5de74720,0xb4751254,0x74ce1cb2,0x9f9defc9,0x00bd32ef,0x774a4f6a +.long 0x73848f22,0xaca385f7,0xf3f8558e,0x53dad716,0x93c471f9,0xab7b34b0,0x19644bc7,0xf530e069,0xdd59d31a,0x3d9fb1ff,0x08daa795,0x4382e0df,0xd5cc88d7,0x165c6f4b,0x4a18c900,0xeaa392d5 +.long 0x648024ee,0x94203c67,0x8c2fabcd,0x188763f2,0xbbaec835,0xa80f87ac,0xf29d8d54,0x632c96e0,0x4c00a95e,0x29b0a60e,0xe011e9fa,0x2ef17f40,0x15b77223,0xf6c0e1d1,0x14b04e32,0xaaec2c62 +.long 0x3d84e58c,0xd35688d8,0x958571db,0x2af5094c,0x760682a6,0x4fff7e19,0xe39a407c,0x4cb27077,0x4ff0e321,0x0f59c547,0x1b34c8ff,0x169f34a6,0x52bc1ba7,0x2bff1096,0x83583544,0xa25423b7 +.long 0x0ac8b782,0x5d55d5d5,0x2db3c892,0xff6622ec,0x6b8bb642,0x48fce741,0x69d7e3dc,0x31d6998c,0xcadcaed0,0xdbaf8004,0xd81d053c,0x801b0142,0x59630ec6,0x94b189fc,0xaf762c8e,0x120e9934 +.long 0xfdc6a404,0x53a29aa4,0xa1909948,0x19d8e01e,0xd7e89681,0x3cfcabf1,0x4e132d37,0x3321a50d,0xe9a86111,0xd0496863,0x06a3bc65,0x8c0cde61,0xfc9f8eef,0xaf866c49,0xff7f5141,0x2066350e +.long 0xe56ddfbd,0x4f8a4689,0xfe32983a,0xea1b0c07,0x873cb8cb,0x2b317462,0x2d93229f,0x658deddc,0x0f64ef58,0x65efaf4d,0x730cc7a8,0xfe43287d,0x3d047d70,0xaebc0c72,0xd92d26c9,0x92efa539 +.long 0x94b56526,0x06e78457,0x0961002d,0x415cb80f,0x76dcb10f,0x89e5c565,0xff9259fe,0x8bbb6982,0x9abc2668,0x4fe8795b,0x1e678fb1,0xb5d4f534,0x7b7da2b9,0x6601f3be,0xa13d6805,0x98da59e2 +.long 0x01799a52,0x190d8ea6,0xb86d2952,0xa20cec41,0x7fff2a7c,0x3062ffb2,0x79f19d37,0x741b32e5,0x4eb57d47,0xf80d8181,0x16aef06b,0x7a2d0ed4,0x1cecb588,0x09735fb0,0xc6061f5b,0x1641caaa +.long 0x20151427,0x7f99824f,0x92430206,0x206828b6,0xe1112357,0xaa9097d7,0x09e414ec,0xacf9a2f2,0x27915356,0xdbdac9da,0x001efee3,0x7e0734b7,0xd2b288e2,0x54fab5bb,0xf62dd09c,0x4c630fc4 +.long 0x1ac2703b,0x8537107a,0x6bc857b5,0xb49258d8,0xbcdaccd1,0x57df14de,0xc4ae8529,0x24ab68d7,0x734e59d0,0x7ed8b5d4,0xc495cc80,0x5f8740c8,0x291db9b3,0x84aedd5a,0x4fb995be,0x80b360f8 +.long 0x5fa067d1,0xae915f5d,0x9668960c,0x4134b57f,0xa48edaac,0xbd3656d6,0xfc1d7436,0xdac1e3e4,0xd81fbb26,0x674ff869,0xb26c33d4,0x449ed3ec,0xd94203e8,0x85138705,0xbeeb6f4a,0xccde538b +.long 0xa61a76fa,0x55d5c68d,0xca1554dc,0x598b441d,0x773b279c,0xd39923b9,0x36bf9efc,0x33331d3c,0x298de399,0x2d4c848e,0xa1a27f56,0xcfdb8e77,0x57b8ab70,0x94c855ea,0x6f7879ba,0xdcdb9dae +.long 0x019f2a59,0x7bdff8c2,0xcb4fbc74,0xb3ce5bb3,0x8a9173dd,0xea907f68,0x95a75439,0x6cd3d0d3,0xefed021c,0x92ecc4d6,0x6a77339a,0x09a9f9b0,0x7188c64a,0x87ca6b15,0x44899158,0x10c29968 +.long 0xed6e82ef,0x5859a229,0x65ebaf4e,0x16f338e3,0x5ead67ae,0x0cd31387,0x54ef0bb4,0x1c73d228,0x74a5c8c7,0x4cb55131,0x7f69ad6a,0x01cd2970,0xe966f87e,0xa04d00dd,0x0b7b0321,0xd96fe447 +.long 0x88fbd381,0x342ac06e,0x5c35a493,0x02cd4a84,0x54f1bbcd,0xe8fa89de,0x2575ed4c,0x341d6367,0xd238202b,0xebe357fb,0xa984ead9,0x600b4d1a,0x52436ea0,0xc35c9f44,0xa370751b,0x96fe0a39 +.long 0x7f636a38,0x4c4f0736,0x0e76d5cb,0x9f943fb7,0xa8b68b8b,0xb03510ba,0x9ed07a1f,0xc246780a,0x6d549fc2,0x3c051415,0x607781ca,0xc2953f31,0xd8d95413,0x955e2c69,0x7bd282e3,0xb300fadc +.long 0x87e9189f,0x81fe7b50,0xf42dda27,0xdb17375c,0xcf0a5904,0x22f7d896,0xebe348e6,0xa0e57c5a,0xf40e3c80,0xa61011d3,0x8db705c5,0xb1189321,0x50fedec3,0x4ed9309e,0x4d6d5c1d,0xdcf14a10 +.long 0x55691342,0x056c265b,0x91049dc7,0xe8e08504,0xc9bae20a,0x131329f5,0xd9dccdb4,0x96c8b3e8,0xfb4ee6b4,0x8c5ff838,0x41e8ccf0,0xfc5a9aeb,0xfae050c6,0x7417b764,0x00452080,0x0953c3d7 +.long 0x38dfe7e8,0x21372682,0x2bb79d4b,0xea417e15,0x76e7cf2d,0x59641f1c,0xea0bcfcc,0x271e3059,0x7253ecbd,0x624c7dfd,0x4fca6186,0x2f552e25,0x4d866e9c,0xcbf84ecd,0xf68d4610,0x73967709 +.long 0xc27901b4,0xa14b1163,0x899b8bf3,0xfd9236e0,0xcbc6da0a,0x42b091ec,0x5ad1d297,0xbb1dac6f,0xa91cf76e,0x80e61d53,0xd31f1ee7,0x4110a412,0x13efcf77,0x2d87c3ba,0xdf450d76,0x1f374bb4 +.long 0x0d188dab,0x5e78e2f2,0xf4b885ef,0xe3968ed0,0x7314570f,0x46c0568e,0x01170521,0x31616338,0x4f0c8afe,0x18e1e7e2,0xdeea78da,0x4caa75ff,0x7c5d8a51,0x82db67f2,0x6f505370,0x36a44d86 +.long 0x0333974f,0xd72c5bda,0x27a70146,0x5db516ae,0x210ef921,0x34705281,0x0c9c38e5,0xbff17a8f,0x12476da1,0x78f4814e,0x33c16980,0xc1e16613,0x424d4bca,0x9e5b386f,0xc85740de,0x4c274e87 +.long 0x6c2f5226,0xb6a9b88d,0x550d7ca8,0x14d1b944,0x1fc41709,0x580c85fc,0x54c6d519,0xc1da368b,0xd5113cf7,0x2b0785ce,0x5a34708f,0x0670f633,0x15cc3f88,0x46e23767,0x50c72c8f,0x1b480cfa +.long 0x4147519a,0x20288602,0x26b372f0,0xd0981eac,0xa785ebc8,0xa9d4a7ca,0xdbdf58e9,0xd953c50d,0xfd590f8f,0x9d6361cc,0x44e6c917,0x72e9626b,0x22eb64cf,0x7fd96110,0x9eb288f3,0x863ebb7e +.long 0x6aca8ee7,0x6e6ab761,0xd7b40358,0x97d10b39,0x1e5feb0d,0x1687d377,0x8265a27a,0xc83e50e4,0xc954b313,0x8f75a9fe,0x310d1f61,0xcc2e8f47,0x6557d0e0,0xf5ba81c5,0x3eaf6207,0x25f9680c +.long 0x4354080b,0xf95c6609,0x7bf2fe1c,0x5225bfa5,0x5c7d98fa,0xc5c004e2,0x019aaf60,0x3561bf1c,0xba151474,0x5e6f9f17,0xb04f6eca,0xdec2f934,0x269acb1e,0x64e368a1,0x0cdda493,0x1332d9e4 +.long 0xdf23de05,0x60d6cf69,0x009339a0,0x66d17da2,0x0a693923,0x9fcac985,0xed7c6a6d,0xbcf057fc,0xf0b5662c,0xc3c5c8c5,0xdcba4f24,0x25318dd8,0x082b69ff,0x60e8cb75,0x1e728c01,0x7c23b3ee +.long 0x097e4403,0x15e10a0a,0x19854665,0xcb3d0a86,0xd67d4826,0x88d8e211,0x0b9d2839,0xb39af66e,0xbd475ca8,0xa5f94588,0xc077b80b,0xe06b7966,0xda27c26c,0xfedb1485,0xfe0fd5e0,0xd290d33a +.long 0xf34fb0fa,0xa40bcc47,0x1fb1ab09,0xb4760cc8,0xa273bfe3,0x8fca0993,0xf70b213c,0x13e4fe07,0xfdb05163,0x3bcdb992,0x0c2b19b6,0x8c484b11,0xaaf2e3e2,0x1acb815f,0xb89ff1b4,0xc6905935 +.long 0x586e74e1,0xb2ad6f9d,0x67b80484,0x488883ad,0x369c3ddb,0x758aa2c7,0x9f9afd31,0x8ab74e69,0x5e21beb1,0x10fc2d28,0x318c42f9,0x3484518a,0x53cf40c3,0x377427dc,0x391bc1d9,0x9de0781a +.long 0x693807e1,0x8faee858,0x4e81ccc7,0xa3865327,0x6f835b84,0x02c30ff2,0x0d3d38d4,0xb604437b,0x5ca1823d,0xb3fc8a98,0x03be0324,0xb82f7ec9,0xcf684a33,0xee36d761,0x9f29bf7d,0x5a01df0e +.long 0x1306583d,0x686202f3,0x437c622e,0x05b10da0,0x076a7bc8,0xbf9aaa0f,0x8f8f4e43,0x25e94efb,0xfa3dc26d,0x8a35c9b7,0x96ff03c5,0xe0e5fb93,0xebc394ce,0xa77e3843,0x8361de60,0xcede6595 +.long 0xa1993545,0xd27c22f6,0x24d671ba,0xab01cc36,0xa169c28e,0x63fa2877,0x2eb08376,0x925ef904,0x53aa0b32,0x3b2fa3cf,0x71c49d7a,0xb27beb5b,0xd105e27f,0xb60e1834,0x4f68570d,0xd6089788 +.long 0xd6fbc2ac,0x23094ce0,0x815ff551,0x738037a1,0x6bef119c,0xda73b1bb,0xeef506ba,0xdcf6c430,0xe3ef104a,0x00e4fe7b,0x0a065628,0xebdd9a2c,0x8792043e,0x853a81c3,0xb3b59108,0x22ad6ece +.long 0x39cd297d,0x9fb813c0,0x05bda5d9,0x8ec7e16e,0x0d104b96,0x2834797c,0x7c511510,0xcc11a2e7,0x96ee6380,0x96ca5a53,0xcea38742,0x054c8655,0xd54dfa7d,0xb5946852,0x1f4ab207,0x97c422e7 +.long 0x0c22b540,0xbf907509,0xb7c267d4,0x2cde42aa,0x5ab0d693,0xba18f9ed,0x6e4660d9,0x3ba62aa6,0xab9ea96a,0xb24bf97b,0xe3b60e32,0x5d039642,0x7c4d9bd5,0x4e6a4506,0x7ed4a6a4,0x666c5b9e +.long 0x8edbd7cc,0xfa3fdcd9,0xc6ccd753,0x4660bb87,0x21e6b64f,0x9ae90820,0xb36bfb3f,0x8a56a713,0x5726d47f,0xabfce096,0x0b1a9a7f,0x9eed01b2,0x4eb74a37,0x30e9cad4,0x53e9666d,0x7b2524cc +.long 0x8f4b002f,0x6a29683b,0x41f4fc20,0xc2200d7a,0x3a338acc,0xcf3af47a,0xe7128975,0x6539a4fb,0xc33c7fcf,0xcec31c14,0xc7be322b,0x7eb6799b,0x6646f623,0x119ef4e9,0x54d7299b,0x7b7a26a5 +.long 0x403f46f2,0xcb37f08d,0x1a0ec0c7,0x94b8fc43,0xc332142f,0xbb8514e3,0xe80d2a7a,0xf3ed2c33,0xb639126c,0x8d2080af,0xe3553ade,0xf7b6be60,0x1c7e2b09,0x3950aa9f,0x6410f02b,0x847ff958 +.long 0x678a31b0,0x877b7cf5,0x3998b620,0xd50301ae,0xc00fb396,0x734257c5,0x04e672a6,0xf9fb18a0,0xe8758851,0xff8bd8eb,0x5d99ba44,0x1e64e4c6,0x7dfd93b7,0x4b8eaedf,0x04e76b8c,0xba2f2a98 +.long 0xe8053433,0x7d790cba,0x3d2c9585,0xc8e725a0,0xcdd8f5ed,0x58c5c476,0xefa9fe1d,0xd106b952,0x0eff13a9,0x3c5c775b,0xe057b930,0x242442ba,0xc9b70cbd,0xe9f458d4,0xa3cdb89a,0x69b71448 +.long 0x0e2ed742,0x41ee46f6,0x40067493,0x573f1045,0x9d54c304,0xb1e154ff,0x8d3a7502,0x2ad0436a,0x431a8121,0xee4aaa2d,0x886f11ed,0xcd38b3ab,0x034a0eb7,0x57d49ea6,0xf7e85e58,0xd2b773bd +.long 0x9b5c1f14,0x4a559ac4,0x3e54df2b,0xc444be1a,0xeda41891,0x13aad704,0x5eb5c788,0xcd927bec,0xe48c8a34,0xeb3c8516,0x4b546669,0x1b7ac812,0x594df8ec,0x1815f896,0x79227865,0x87c6a79c +.long 0x9b56ddbd,0xae02a2f0,0x8a2f1cf3,0x1339b5ac,0x839dff0d,0xf2b569c7,0xfee9a43d,0xb0b9e864,0x77bb064e,0x4ff8ca41,0xfd249f63,0x145a2812,0xf86f689a,0x3ab7beac,0x01d35f5e,0x9bafec27 +.long 0x4265aa91,0x28054c65,0x035efe42,0xa4b18304,0x9639dec7,0x6887b0e6,0x3d52aea5,0xf4b8f6ad,0x971a8a13,0xfb9293cc,0x4c934d07,0x3f159e5d,0x09acbc29,0x2c50e9b1,0x7154d129,0x08eb65e6 +.long 0x30b75c3e,0x4feff589,0x94491c93,0x0bb82fe2,0x89af62bb,0xd8ac377a,0x9685e49f,0xd7b51490,0x04497f19,0xabca9a7b,0x1a7ad13f,0x1b35ed0a,0x3ec86ed6,0x6b601e21,0xce0c76f1,0xda91fcb9 +.long 0xd7ab27e1,0x9e28507b,0x63945b7b,0x7c19a555,0xaafc9827,0x6b43f0a1,0x3aa55b91,0x443b4fbd,0x6962c88f,0x962b2e65,0xce0db0ca,0x139da8d4,0x1b8d6c4f,0xb93f05dd,0x180b9824,0x779cdff7 +.long 0xae57c7b7,0xbba23fdd,0x1b932522,0x345342f2,0x556d4aa3,0xfd9c80fe,0x6525bb61,0xa03907ba,0xff218933,0x38b010e1,0xaa52117b,0xc066b654,0x94f2e6ea,0x8e141920,0x0d32f2b2,0x66a27dca +.long 0x048b3717,0x69c7f993,0xb178ae1c,0xbf5a989a,0x564f1d6b,0x49fa9058,0xd31fde4e,0x27ec6e15,0x7276e7fc,0x4cce0373,0x89d6bf02,0x64086d79,0x4ccdd979,0x5a72f046,0x47775631,0x909c3566 +.long 0x75dd7125,0x1c07bc6b,0x87a0428d,0xb4c6bc97,0xfdeb6b9d,0x507ece52,0xb2c95432,0xfca56512,0xd0e8bd06,0x15d97181,0xc6bb46ea,0x384dd317,0x3952b624,0x5441ea20,0x4e7dc2fb,0xbcf70dee +.long 0x6628e8c3,0x372b016e,0xb60a7522,0x07a0d667,0x0a344ee2,0xcf05751b,0x118bdeec,0x0ec09a48,0xd83dce46,0x6e4b3d4e,0x99d2fc6e,0x43a6316d,0x56cf044c,0xa99d8989,0xae3e5fb7,0x7c7f4454 +.long 0xfbabbe92,0xb2e6b121,0xe1330076,0x281850fb,0x97890015,0x093581ec,0x75ff77f5,0x69b1dded,0xab105105,0x7cf0b18f,0xa89ccfef,0x953ced31,0xeb914009,0x3151f85f,0x88ed48ad,0x3c9f1b87 +.long 0x4a7eadcb,0xc9aba1a1,0x522e71cf,0x928e7501,0x3a2e4f83,0xeaede727,0x1ce3bbd3,0x467e10d1,0xb955dcf0,0xf3442ac3,0xd3d5e527,0xba96307d,0xfd77f474,0xf763a10e,0x6a6e1ff0,0x5d744bd0 +.long 0xa777899e,0xd287282a,0xd03f3cde,0xe20eda8f,0x50b07d31,0x6a7e75bb,0x6f379de4,0x0b7e2a94,0x19f593cf,0x31cb64ad,0x1e76ef1d,0x7b1a9e4f,0xb62d609c,0xe18c9c9d,0xe779a650,0x439bad6d +.long 0xe032f144,0x219d9066,0xe8b2ec6a,0x1db632b8,0xfda12f78,0xff0d0fd4,0x2a25d265,0x56fb4c2d,0x255a03f1,0x5f4e2ee1,0xe96af176,0x61cd6af2,0xd068bc97,0xe0317ba8,0x264b988e,0x927d6bab +.long 0xe90fb21e,0xa18f07e0,0xbba7fca1,0x00fd2b80,0x95cd67b5,0x20387f27,0xd39707f7,0x5b89a4e7,0x894407ce,0x8f83ad3f,0x6c226132,0xa0025b94,0xf906c13b,0xc79563c7,0x4e7bb025,0x5f548f31 +.long 0xeac6d113,0x2b4c6b8f,0x0e813c76,0xa67e3f9c,0x3fe1f4b9,0x3982717c,0x26d8050e,0x58865819,0xf7f06f20,0x99f3640c,0x2a66ebc2,0xdc610216,0x767a1e08,0x52f2c175,0x5999871b,0x05660e1a +.long 0x6d3c4693,0x6b0f1762,0x37ed7bea,0xf0e7d627,0xb75b226d,0xc51758c7,0x1f91613b,0x40a88628,0xbbb38ce0,0x889dbaa7,0xbddcad81,0xe0404b65,0x8bc9671f,0xfebccd3a,0xee1f5375,0xfbf9a357 +.long 0x28f33398,0x5dc169b0,0x72e90f65,0xb07ec11d,0xfaab1eb1,0xae7f3b4a,0x5f17538a,0xd970195e,0x0181e640,0x52b05cbe,0x2643313d,0xf5debd62,0x5df31f82,0x76148154,0x3a9e13c5,0x23e03b33 +.long 0x4fde0c1f,0xff758949,0xe5b6ec20,0xbf8a1abe,0x87e1db6c,0x702278fb,0x35ed658f,0xc447ad7a,0x03d0ccf2,0x48d4aa38,0x819a7c03,0x80acb338,0x6e17cecc,0x9bc7c89e,0x03be1d82,0x46736b8b +.long 0xc0432f96,0xd65d7b60,0xdeb5442f,0xddebe7a3,0x7dff69a2,0x79a25307,0x02cf3122,0x37a56d94,0xf2350d0a,0x8bab8aed,0x037b0d9a,0x13c3f276,0x44c65cae,0xc664957c,0xc2e71a88,0x88b44089 +.long 0x5cb02664,0xdb88e5a3,0x8686c72e,0x5d4c0bf1,0xa682d53e,0xea3d9b62,0x0b2ad431,0x9b605ef4,0xc69645d0,0x71bac202,0x6a1b66e7,0xa115f03a,0x158f4dc4,0xfe2c563a,0x4d12a78c,0xf715b3a0 +.long 0xd413213a,0x8f7f0a48,0xc04becdb,0x2035806d,0x5d8587f5,0xecd34a99,0x9f6d3a71,0x4d8c3079,0x8d95a8f6,0x1b2a2a67,0xf2110d0d,0xc58c9d7d,0xcf8fba3f,0xdeee81d5,0x0c7cdf68,0xa42be3c0 +.long 0xd43b5eaa,0x2126f742,0xdfa59b85,0x054a0766,0x126bfd45,0x9d0d5e36,0x384f8a8f,0xa1f8fbd7,0xd563fccc,0x317680f5,0xf280a928,0x48ca5055,0x27b578cf,0xe00b81b2,0x2994a514,0x10aad918 +.long 0xb7bdc953,0xd9e07b62,0x5bc086dd,0x9f0f6ff2,0x655eee77,0x09d1ccff,0x5bef7df1,0x45475f79,0x86f702cc,0x3faa28fa,0x0f021f07,0x92e60905,0x7f8fa8c6,0xe9e62968,0xf036ea2c,0xbd71419a +.long 0x6028da9a,0x171ee1cc,0xc251f573,0x5352fe1a,0x3fa997f4,0xf8ff236e,0xa5749d5f,0xd831b6c9,0xe350e2c2,0x7c872e1d,0x1e0ce403,0xc56240d9,0x6974f5cb,0xf9deb077,0x961c3728,0x7d50ba87 +.long 0x5a3a2518,0xd6f89426,0xc6303d43,0xcf817799,0x619e5696,0x510a0471,0x3a5e307b,0xab049ff6,0xfeb13ec7,0xe4cdf9b0,0x9d8ff90c,0xd5e97117,0x9afa96af,0xf6f64d06,0x9d2012a2,0x00d0bf5e +.long 0x358bcdc0,0xe63f301f,0x0a9d47f8,0x07689e99,0x4f43d43a,0x1f689e2f,0x90920904,0x4d542a16,0x9ca0a707,0xaea293d5,0x8ac68065,0xd061fe45,0x0090008c,0x1033bf1b,0xc08a6db6,0x29749558 +.long 0xc1d5d034,0x74b5fc59,0x67e215e0,0xf712e9f6,0x860200e6,0xfd520cbd,0x3ea22588,0x0229acb4,0xfff0c82e,0x9cd1e14c,0x59c69e73,0x87684b62,0x96ccb989,0xda85e61c,0xa3d06493,0x2d5dbb02 +.long 0xe86b173c,0xf22ad33a,0xa79ff0e3,0xe8e41ea5,0xdd0d0c10,0x01d2d725,0x032d28f9,0x31f39088,0x7829839e,0x7b3f71e1,0x4502ae58,0x0cf691b4,0xbefc6115,0xef658dbd,0xb3ab5314,0xa5cd6ee5 +.long 0x5f1d2347,0x206c8d7b,0x4cc2253a,0x794645ba,0x58389e08,0xd517d8ff,0x9f847288,0x4fa20dee,0xd797770a,0xeba072d8,0xbf429e26,0x7360c91d,0x80af8279,0x7200a3b3,0x82dadce3,0x6a1c9150 +.long 0xc35d8794,0x0ee6d3a7,0x0356bae5,0x042e6558,0x643322fd,0x9f59698d,0x50a61967,0x9379ae15,0xfcc9981e,0x64b9ae62,0x6d2934c6,0xaed3d631,0x5e4e65eb,0x2454b302,0xf9950428,0xab09f647 +.long 0x22248acc,0xb2083a12,0x3264e366,0x1f6ec0ef,0x5afdee28,0x5659b704,0xe6430bb5,0x7a823a40,0xe1900a79,0x24592a04,0xc9ee6576,0xcde09d4a,0x4b5ea54a,0x52b6463f,0xd3ca65a7,0x1efe9ed3 +.long 0x305406dd,0xe27a6dbe,0xdd5d1957,0x8eb7dc7f,0x387d4d8f,0xf54a6876,0xc7762de4,0x9c479409,0x99b30778,0xbe4d5b5d,0x6e793682,0x25380c56,0xdac740e3,0x602d37f3,0x1566e4ae,0x140deabe +.long 0xafd32acf,0x4481d067,0xe1f71ccf,0xd8f0fcca,0xb596f2da,0xd208dd0c,0x9aad93f9,0xd049d730,0x42ab580e,0xc79f263d,0x23f707b4,0x09411bb1,0x835e0eda,0x8cfde1ff,0x90f03402,0x72707490 +.long 0xc49a861e,0xeaee6126,0xe14f0d06,0x024f3b65,0xc69bfc17,0x51a3f1e8,0xa7686381,0xc3c3a8e9,0xb103d4c8,0x3400752c,0x9218b36b,0x02bc4613,0x7651504a,0xc67f75eb,0xd02aebfa,0xd6848b56 +.long 0xc30fa92b,0xbd9802e6,0x9a552784,0x5a70d96d,0x3f83169b,0x9085c4ea,0x06908228,0xfa9423bb,0xfe97a5b9,0x2ffebe12,0x71b99118,0x85da6049,0x63178846,0x9cbc2f7f,0x9153218e,0xfd96bc70 +.long 0x1782269b,0x958381db,0x2597e550,0xae34bf79,0x5f385153,0xbb5c6064,0xe3088048,0x6f0e96af,0x77884456,0xbf6a0215,0x69310ea7,0xb3b5688c,0x04fad2de,0x17c94295,0x17896d4d,0xe020f0e5 +.long 0x0976505f,0x730ba0ab,0x095e2ec5,0x567f6813,0x6331ab71,0x47062010,0x41d22b9f,0x72cfa977,0x8a2373da,0x33e55ead,0x7ba45a68,0xa8d0d5f4,0x03029d15,0xba1d8f9c,0xfc55b9f3,0x8f34f1cc +.long 0xbbe5a1a9,0xcca4428d,0x3126bd67,0x8187fd5f,0x48105826,0x0036973a,0xb8bd61a0,0xa39b6663,0x2d65a808,0x6d42deef,0x94636b19,0x4969044f,0xdd5d564c,0xf611ee47,0xd2873077,0x7b2f3a49 +.long 0x300eb294,0x94157d45,0x169c1494,0x2b2a656e,0xd3a47aa9,0xc000dd76,0xa6243ea4,0xa2864e4f,0xdb89842e,0x82716c47,0x61479fb7,0x12dfd7d7,0xe0b2f6dc,0x3b9a2c56,0xd7f85d67,0x46be862a +.long 0x0f82b214,0x03b0d8dd,0xf103cbc6,0x460c34f9,0x18d79e19,0xf32e5c03,0xa84117f8,0x8b8888ba,0xc0722677,0x8f3c37dc,0x1c1c0f27,0x10d21be9,0xe0f7a0c6,0xd47c8468,0xadecc0e0,0x9bf02213 +.long 0x42b48b99,0x0baa7d12,0x48424096,0x1bcb665d,0xebfb5cfb,0x8b847cd6,0x9ad4d10d,0x87c2ae56,0x0de36726,0xf1cbb122,0x3fdfbd21,0xe7043c68,0x4e79d460,0x4bd0826a,0x4bd1a2cb,0x11f5e598 +.long 0xb7fe7b6e,0x97554160,0x400a3fb2,0x7d16189a,0xe328ca1e,0xd73e9bea,0xe793d8cc,0x0dd04b97,0x506db8cc,0xa9c83c9b,0xcf38814c,0x5cd47aae,0xb64b45e6,0x26fc430d,0xd818ea84,0x079b5499 +.long 0xc1c24a3b,0xebb01102,0x1c161c1a,0xca24e568,0x36f00a4a,0x103eea69,0x76176c7b,0x9ad76ee8,0x538e0ff7,0x97451fc2,0x6604b3b0,0x94f89809,0x3249cfd7,0x6311436e,0x41224f69,0x27b4a7bd +.long 0xe0ac2941,0x03b5d21a,0xc2d31937,0x279b0254,0xcac992d0,0x3307c052,0xefa8b1f3,0x6aa7cb92,0x0d37c7a5,0x5a182580,0x342d5422,0x13380c37,0xd5d2ef92,0x92ac2d66,0x030c63c6,0x035a70c9 +.long 0x4ce4f152,0xc16025dd,0xf9df7c06,0x1f419a71,0x91e4bb14,0x6d5b2214,0x839fb4ce,0xfc43c6cc,0x925d6b2d,0x49f06591,0x62186598,0x4b37d9d3,0xd01b1629,0x8c54a971,0x51d50e05,0xe1a9c29f +.long 0x71ba1861,0x5109b785,0xd0c8f93d,0x48b22d5c,0x8633bb93,0xe8fa84a7,0x5aebbd08,0x53fba6ba,0xe5eea7d8,0x7ff27df3,0x68ca7158,0x521c8796,0xce6f1a05,0xb9d5133b,0xfd0ebee4,0x2d50cd53 +.long 0xc5a3ef16,0xc82115d6,0xba079221,0x993eff9d,0x4b5da81c,0xe4da2c5e,0x8033fd85,0x9a89dbdb,0x2b892891,0x60819ebf,0x5d14a4d5,0x53902b21,0xd7fda421,0x6ac35051,0x61c83284,0xcc6ab885 +.long 0xf74cff17,0x14eba133,0xecb813f2,0x240aaa03,0x6f665bee,0xcfbb6540,0xa425ad73,0x084b1fe4,0xd081f6a6,0x009d5d16,0xeef82c90,0x35304fe8,0xaa9eaa22,0xf20346d5,0xac1c91e3,0x0ada9f07 +.long 0x968a6144,0xa6e21678,0x07b31a1e,0x54c1f77c,0x5781fbe1,0xd6bb787e,0xe31f1c4a,0x61bd2ee0,0x781105fc,0xf25aa1e9,0x7b2f8e80,0x9cf2971f,0xcdff919b,0x26d15412,0x34bc896e,0x01db4ebe +.long 0xb40df1cf,0x7d9b3e23,0x94e971b4,0x59337373,0x669cf921,0xbf57bd14,0x0c1a1064,0x865daedf,0x83279125,0x3eb70bd3,0x34ecdaab,0xbc3d5b9f,0x5f755caf,0x91e3ed7e,0xd41e6f02,0x49699f54 +.long 0xd4a7a15b,0x185770e1,0xeaac87e7,0x08f3587a,0x473133ea,0x352018db,0x04fd30fc,0x674ce719,0x088b3e0e,0x7b8d9835,0x5d0d47a1,0x7a0356a9,0x6474a3c4,0x9d9e7659,0xff66966c,0x61ea48a7 +.long 0x0f3e4834,0x30417758,0x17a9afcb,0xfdbb21c2,0x2f9a67b3,0x756fa17f,0xa245c1a8,0x2a6b2421,0x4af02291,0x64be2794,0x2a5804fe,0xade465c6,0xa6f08fd7,0x8dffbd39,0xaa14403b,0xc4efa84c +.long 0x442b0f5c,0xa1b91b2a,0xcf997736,0xb748e317,0xcee90e16,0x8d1b62bf,0x0b2078c0,0x907ae271,0x0c9bcddd,0xdf31534b,0x39adce83,0x043fb054,0xd826846a,0x99031043,0xb144f393,0x61a9c0d6 +.long 0x47718427,0xdab48046,0x6e830f8b,0xdf17ff9b,0xe49a1347,0x408d7ee8,0x91c1d4ae,0x6ac71e23,0x1defd73c,0xc8cbb9fd,0xbbbbfec5,0x19840657,0x9e7ef8ea,0x39db1cb5,0x64105f30,0x78aa8296 +.long 0xa3738c29,0xa3d9b7f0,0xbc3250a3,0x0a2f235a,0x445e4caf,0x55e506f6,0x33475f7a,0x0974f73d,0x5ba2f5a8,0xd37dbba3,0x6af40066,0x542c6e63,0xc5d73e2c,0x26d99b53,0x6c3ca33e,0x06060d7d +.long 0x065fef4a,0xcdbef1c2,0xfd5b92e3,0x77e60f7d,0x26708350,0xd7c549f0,0x34f121bf,0x201b3ad0,0x0334fc14,0x5fcac2a1,0x344552f6,0x8a9a9e09,0x97653082,0x7dd8a1d3,0x79d4f289,0x5fc0738f +.long 0x17d2d8c3,0x787d244d,0x70830684,0xeffc6345,0xe4f73ae5,0x5ddb96dd,0x172549a5,0x8efb14b1,0x2245ae7a,0x6eb73eee,0xea11f13e,0xbca4061e,0x30b01f5d,0xb577421d,0x782e152c,0xaa688b24 +.long 0xbd3502ba,0x67608e71,0xb4de75a0,0x4ef41f24,0xfd6125e5,0xb08dde5e,0xa409543f,0xde484825,0x65cc2295,0x1f198d98,0x6e0edfa2,0x428a3771,0xadf35fc7,0x4f9697a2,0xf7cac3c7,0x01a43c79 +.long 0x0fd3659a,0xb05d7059,0xbb7f2d9a,0x8927f30c,0x8cf984d3,0x4023d1ac,0x02897a45,0x32125ed3,0x3d414205,0xfb572dad,0xe3fa82a9,0x73000ef2,0xf10a5581,0x4c0868e9,0x6b0b3ca5,0x5b61fc67 +.long 0x7cae440c,0xc1258d5b,0x402b7531,0x21c08b41,0xde932321,0xf61a8955,0x2d1408af,0x3568faf8,0x9ecf965b,0x71b15e99,0xe917276f,0xf14ed248,0x820cf9e2,0xc6f4caa1,0x18d83c7e,0x681b20b2 +.long 0xc6c01120,0x6cde738d,0xae70e0db,0x71db0813,0x74afe18c,0x95fc0644,0x129e2be7,0x34619053,0xdb2a3b15,0x80615cea,0xdb4c7073,0x0a49a19e,0x8fd2d367,0x0e1b84c8,0x033fb8aa,0xd74bf462 +.long 0x533ef217,0x889f6d65,0xc3ca2e87,0x7158c7e4,0xdc2b4167,0xfb670dfb,0x844c257f,0x75910a01,0xcf88577d,0xf336bf07,0xe45e2ace,0x22245250,0x7ca23d85,0x2ed92e8d,0x2b812f58,0x29f8be4c +.long 0x076fe12b,0xdd9ebaa7,0xae1537f9,0x3f2400cb,0x17bdfb46,0x1aa93528,0x67883b41,0xc0f98430,0x0170911d,0x5590ede1,0x34d4b17f,0x7562f5bb,0x1826b8d2,0xe1fa1df2,0x6bd80d59,0xb40b796a +.long 0x3467ba92,0xd65bf197,0xf70954b0,0x8c9b46db,0x0e78f15d,0x97c8a0f3,0x85a4c961,0xa8f3a69a,0x61e4ce9b,0x4242660f,0x6ea6790c,0xbf06aab3,0xec986416,0xc6706f8e,0x9a9fc225,0x9e56dec1 +.long 0x9a9898d9,0x527c46f4,0x5633cdef,0xd799e77b,0x7d9e4297,0x24eacc16,0x6b1cb734,0xabb61cea,0xf778443c,0xbee2e8a7,0x29de2fe6,0x3bb42bf1,0x3003bb6f,0xcbed86a1,0xd781cdf6,0xd3918e6c +.long 0x9a5103f1,0x4bee3271,0xf50eac06,0x5243efc6,0x6adcc119,0xb8e122cb,0xc0b80a08,0x1b7faa84,0x6dfcd08c,0x32c3d1bd,0x0be427de,0x129dec4e,0x1d263c83,0x98ab679c,0xcef64eff,0xafc83cb7 +.long 0x2fa6be76,0x85eb6088,0x1328cbfe,0x892585fb,0xcf618dda,0xc154d3ed,0x3abaf26e,0xc44f601b,0x2be1fdfd,0x7bf57d0b,0x21137fee,0xa833bd2d,0x2db591a8,0x9353af36,0x5562a056,0xc76f26dc +.long 0x3fdf5a51,0x1d87e47d,0x55c9cab0,0x7afb5f93,0x89e0586e,0x91bbf58f,0x0d843709,0x7c72c018,0x99b5c3dc,0xa9a5aafb,0x3844aeb0,0xa48a0f1d,0xb667e482,0x7178b7dd,0x6e23a59a,0x453985e9 +.long 0x01b25dd8,0x4a54c860,0xfb897c8a,0x0dd37f48,0x0ea90cd9,0x5f8aa610,0x16d5830d,0xc8892c68,0xef514ca5,0xeb4befc0,0xe72c9ee6,0x478eb679,0xdbc40d5f,0x9bca20da,0xdde4f64a,0xf015de21 +.long 0xeaf4b8a5,0xaa6a4de0,0x4bc60e32,0x68cfd9ca,0x7fd15e70,0x668a4b01,0xf27dc09d,0xd9f0694a,0xba708bcd,0xf6c3cad5,0x5bb95c2a,0x5cd2ba69,0x33c0a58f,0xaa28c1d3,0xabc77870,0x23e274e3 +.long 0xdfd20a4a,0x44c3692d,0x81a66653,0x091c5fd3,0x09a0757d,0x6c0bb691,0x667343ea,0x9072e8b9,0x80848bec,0x31d40eb0,0x79fd36cc,0x95bd480a,0x65ed43f5,0x01a77c61,0x2e0d40bf,0xafccd127 +.long 0x1cc1884b,0xeccfc82d,0x5d4753b4,0xc85ac201,0x658e099f,0xc7a6caac,0x04b27390,0xcf46369e,0x506467ea,0xe2e7d049,0x37cdeccc,0x481b63a2,0xed80143a,0x4029abd8,0xbcb00b88,0x28bfe3c7 +.long 0x0643d84a,0x3bec1009,0xabd11041,0x885f3668,0xf83a34d6,0xdb02432c,0x719ceebe,0x32f7b360,0xdad1fe7a,0xf06c7837,0x5441a0b0,0x60a157a9,0xe2d47550,0x704970e9,0x271b9020,0xcd2bd553 +.long 0x33e24a0b,0xff57f82f,0xf2565079,0x9cbee23f,0xeb5f5825,0x16353427,0xe948d662,0x276feec4,0xda10032b,0xd1b62bc6,0xf0e72a53,0x718351dd,0x2420e7ba,0x93452076,0x3a00118d,0x96368fff +.long 0x150a49e4,0x00ce2d26,0x3f04706b,0x0c28b636,0x58b196d0,0xbad65a46,0xec9f8b7c,0x6c8455fc,0x2d71867e,0xe90c895f,0xedf9f38c,0x5c0be31b,0xd8f6ec04,0x2a37a15e,0x8cd85251,0x239639e7 +.long 0x9c7c4c6b,0xd8975315,0xd7409af7,0x603aa3c0,0x007132fb,0xb8d53d0c,0xa6849238,0x68d12af7,0xbf5d9279,0xbe0607e7,0xaada74ce,0x9aa50055,0xba7e8ccb,0xe81079cb,0xa5f4ff5e,0x610c71d1 +.long 0x5aa07093,0x9e2ee1a7,0xa75da47c,0xca84004b,0x3de75401,0x074d3951,0xbb311592,0xf938f756,0x00a43421,0x96197618,0x07bc78c8,0x39a25362,0x0a171276,0x278f710a,0x8d1a8f08,0xb28446ea +.long 0xe3b6a661,0x184781bf,0xe6d279f7,0x7751cb1d,0xc59eb662,0xf8ff95d6,0x58d3dea7,0x186d90b7,0xdfb4f754,0x0e4bb6c1,0x2b2801dc,0x5c5cf56b,0x1f54564d,0xc561e452,0xf0dd7f13,0xb4fb8c60 +.long 0x33ff98c7,0xf8849630,0xcf17769c,0x9619fffa,0x1bfdd80a,0xf8090bf6,0x422cfe63,0x14d9a149,0x6f6df9ea,0xb354c360,0x218f17ea,0xdbcf770d,0x79eb3480,0x207db7c8,0x559b6a26,0x213dbda8 +.long 0x29fc81b3,0xac4c200b,0x171d87c1,0xebc3e09f,0x1481aa9e,0x91799530,0x92e114fa,0x051b92e1,0xecb5537f,0xdf8f92e9,0x290c7483,0x44b1b2cc,0x2adeb016,0xa711455a,0x81a10c2c,0x964b6856 +.long 0xcec03623,0x4f159d99,0xef3271ea,0x05532225,0xc5ee4849,0xb231bea3,0x7094f103,0x57a54f50,0x9598b352,0x3e2d421d,0x67412ab4,0xe865a49c,0x1cc3a912,0xd2998a25,0x0c74d65d,0x5d092808 +.long 0x4088567a,0x73f45908,0x1f214a61,0xeb6b280e,0xcaf0c13d,0x8c9adc34,0xf561fb80,0x39d12938,0xbc6edfb4,0xb2dc3a5e,0xfe4d210e,0x7485b1b1,0xe186ae72,0x062e0400,0x6eeb3b88,0x91e32d5c +.long 0x4be59224,0x6df574d7,0x716d55f3,0xebc88ccc,0xcad6ed33,0x26c2e6d0,0x0d3e8b10,0xc6e21e7d,0x5bcc36bb,0x2cc5840e,0x7da74f69,0x9292445e,0x4e5193a8,0x8be8d321,0x8df06413,0x3ec23629 +.long 0xb134defa,0xc7e9ae85,0x1bb2d475,0x6073b1d0,0x2863c00d,0xb9ad615e,0x525f4ac4,0x9e29493d,0x4e9acf4f,0xc32b1dea,0xa50db88d,0x3e1f01c8,0x04da916c,0xb05d70ea,0xd865803e,0x714b0d0a +.long 0x9920cb5e,0x4bd493fc,0x92c7a3ac,0x5b44b1f7,0xbcec9235,0xa2a77293,0xcd378553,0x5ee06e87,0xda621607,0xceff8173,0x99f5d290,0x2bb03e4c,0xa6f734ac,0x2945106a,0xd25c4732,0xb5056604 +.long 0xe079afee,0x5945920c,0x6789831f,0x686e17a0,0xb74a5ae5,0x5966bee8,0x1e258d46,0x38a673a2,0x83141c95,0xbd1cc1f2,0x0e96e486,0x3b2ecf4f,0x74e5fc78,0xcd3aa896,0x2482fa7a,0x415ec10c +.long 0x80503380,0x15234419,0xd314b392,0x513d917a,0x63caecae,0xb0b52f4e,0x2dc7780b,0x07bf22ad,0xe4306839,0xe761e8a1,0x5dd7feaa,0x1b3be962,0x74c778f1,0x4fe728de,0x5e0070f6,0xf1fa0bda +.long 0x6ec3f510,0x85205a31,0xd2980475,0x2c7e4a14,0x6f30ebfd,0xde3c19c0,0xd4b7e644,0xdb1c1f38,0x5dce364a,0xfe291a75,0x058f5be3,0xb7b22a3c,0x37fea38c,0x2cd2c302,0x2e17be17,0x2930967a +.long 0x0c061c65,0x87f009de,0xedc6ed44,0xcb014aac,0x3bafb1eb,0x49bd1cb4,0x282d3688,0x81bd8b5c,0xf01a17af,0x1cdab87e,0xe710063b,0x21f37ac4,0x42fc8193,0x5a6c5676,0x56a6015c,0xf4753e70 +.long 0xa15b0a44,0x020f795e,0x8958a958,0x8f37c8d7,0xa4b675b5,0x63b7e89b,0x0fc31aea,0xb4fb0c0c,0xa7ff1f2e,0xed95e639,0x619614fb,0x9880f5a3,0x947151ab,0xdeb6ff02,0xa868dcdb,0x5bc5118c +.long 0x4c20cea5,0xd8da2055,0x14c4d69a,0xcac2776e,0x622d599b,0xcccb22c1,0x68a9bb50,0xa4ddb653,0x1b4941b4,0x2c4ff151,0x6efba588,0xe1ff19b4,0xc48345e0,0x35034363,0x1e29dfc4,0x45542e3d +.long 0x349f7aed,0xf197cb91,0x8fca8420,0x3b2b5a00,0x23aaf6d8,0x7c175ee8,0x35af32b6,0x54dcf421,0x27d6561e,0x0ba14307,0xd175b1e2,0x879d5ee4,0x99807db5,0xc7c43673,0x9cd55bcd,0x77a54455 +.long 0x0105c072,0xe6c2ff13,0x8dda7da4,0x18f7a99f,0x0e2d35c1,0x4c301820,0xd9cc6c82,0x06a53ca0,0xf1aa1d9e,0xaa21cc1e,0x4a75b1e8,0x32414334,0x0ebe9fdc,0x2a6d1328,0x98a4755a,0x16bd173f +.long 0x2133ffd9,0xfbb9b245,0x830f1a20,0x39a8b2f1,0xd5a1f52a,0x484bc97d,0xa40eddf8,0xd6aebf56,0x76ccdac6,0x32257acb,0x1586ff27,0xaf4d36ec,0xf8de7dd1,0x8eaa8863,0x88647c16,0x0045d5cf +.long 0xc005979d,0xa6f3d574,0x6a40e350,0xc2072b42,0x8de2ecf9,0xfca5c156,0xa515344e,0xa8c8bf5b,0x114df14a,0x97aee555,0xfdc5ec6b,0xd4374a4d,0x2ca85418,0x754cc28f,0xd3c41f78,0x71cb9e27 +.long 0x03605c39,0x89105079,0xa142c96c,0xf0843d9e,0x16923684,0xf3744934,0xfa0a2893,0x732caa2f,0x61160170,0xb2e8c270,0x437fbaa3,0xc32788cc,0xa6eda3ac,0x39cd818e,0x9e2b2e07,0xe2e94239 +.long 0x0260e52a,0x6967d39b,0x90653325,0xd42585cc,0x21ca7954,0x0d9bd605,0x81ed57b3,0x4fa20877,0xe34a0bbe,0x60c1eff8,0x84f6ef64,0x56b0040c,0xb1af8483,0x28be2b24,0xf5531614,0xb2278163 +.long 0x5922ac1c,0x8df27545,0xa52b3f63,0xa7b3ef5c,0x71de57c4,0x8e77b214,0x834c008b,0x31682c10,0x4bd55d31,0xc76824f0,0x17b61c71,0xb6d1c086,0xc2a5089d,0x31db0903,0x184e5d3f,0x9c092172 +.long 0xc00cc638,0xdd7ced5b,0x61278fc2,0x1a2015eb,0x6a37f8d6,0x2e8e5288,0xe79933ad,0xc457786f,0x2c51211a,0xb3fe4cce,0x24c20498,0xad9b10b2,0xd28db5e5,0x90d87a4f,0x3aca2fc3,0x698cd105 +.long 0xe91b536d,0x4f112d07,0x9eba09d6,0xceb982f2,0x197c396f,0x3c157b2c,0x7b66eb24,0xe23c2d41,0x3f330d37,0x480c57d9,0x79108deb,0xb3a4c8a1,0xcb199ce5,0x702388de,0xb944a8d4,0x0b019211 +.long 0x840bb336,0x24f2a692,0xa669fa7b,0x7c353bdc,0xdec9c300,0xda20d6fc,0xa13a4f17,0x625fbe2f,0xdbc17328,0xa2b1b61a,0xa9515621,0x008965bf,0xc620ff46,0x49690939,0x8717e91c,0x182dd27d +.long 0xea6c3997,0x5ace5035,0xc2610bef,0x54259aaa,0x3c80dd39,0xef18bb3f,0x5fc3fa39,0x6910b95b,0x43e09aee,0xfce2f510,0xa7675665,0xced56c9f,0xd872db61,0x10e265ac,0xae9fce69,0x6982812e +.long 0xce800998,0x29be11c6,0xb90360d9,0x72bb1752,0x5a4ad590,0x2c193197,0x9fc1dbc0,0x2ba2f548,0xe490ebe0,0x7fe4eebb,0x7fae11c0,0x12a0a4cd,0xe903ba37,0x7197cf81,0xde1c6dd8,0xcf7d4aa8 +.long 0x3fd5684c,0x92af6bf4,0x80360aa1,0x2b26eecf,0x00546a82,0xbd960f30,0xf59ad8fe,0x407b3c43,0x249c82ba,0x86cae5fe,0x2463744c,0x9e0faec7,0x94916272,0x87f551e8,0x6ceb0615,0x033f9344 +.long 0x8be82e84,0x1e5eb0d1,0x7a582fef,0x89967f0e,0xa6e921fa,0xbcf687d5,0xd37a09ba,0xdfee4cf3,0xb493c465,0x94f06965,0x7635c030,0x638b9a1c,0x66f05e9f,0x76667864,0xc04da725,0xccaf6808 +.long 0x768fccfc,0xca2eb690,0xb835b362,0xf402d37d,0xe2fdfcce,0x0efac0d0,0xb638d990,0xefc9cdef,0xd1669a8b,0x2af12b72,0x5774ccbd,0x33c536bc,0xfb34870e,0x30b21909,0x7df25aca,0xc38fa2f7 +.long 0xbf81f3f5,0x74c5f02b,0xaf7e4581,0x0525a5ae,0x433c54ae,0x88d2aaba,0x806a56c5,0xed9775db,0xc0edb37d,0xd320738a,0x66cc1f51,0x25fdb6ee,0x10600d76,0xac661d17,0xbdd1ed76,0x931ec1f3 +.long 0x19ee43f1,0x65c11d62,0x60829d97,0x5cd57c3e,0x984be6e8,0xd26c91a3,0x8b0c53bd,0xf08d9309,0xc016e4ea,0x94bc9e5b,0x11d43d2b,0xd3916839,0x73701155,0x886c5ad7,0x20b00715,0xe0377626 +.long 0xaa80ba59,0x7f01c9ec,0x68538e51,0x3083411a,0xe88128af,0x970370f1,0x91dec14b,0x625cc3db,0x01ac3107,0xfef9666c,0xd5057ac3,0xb2a8d577,0x92be5df7,0xb0f26299,0x00353924,0xf579c8e5 +.long 0x1341ed7a,0xb8fa3d93,0xa7b59d49,0x4223272c,0x83b8c4a4,0x3dcb1947,0xed1302e4,0x4e413c01,0xe17e44ce,0x6d999127,0x33b3adfb,0xee86bf75,0x25aa96ca,0xf6902fe6,0xe5aae47d,0xb73540e4 +.long 0x1b4a158c,0x32801d7b,0x27e2a369,0xe571c99e,0x10d9f197,0x40cb76c0,0x3167c0ae,0xc308c289,0xeb7958f2,0xa6ef9dd3,0x300879b1,0xa7226dfc,0x7edf0636,0x6cd0b362,0x7bc37eed,0x4efbce6c +.long 0x8d699021,0x75f92a05,0x772566e3,0x586d4c79,0x761ad23a,0x378ca5f1,0x1465a8ac,0x650d86fc,0x842ba251,0x7a4ed457,0x42234933,0x6b65e3e6,0x31aad657,0xaf1543b7,0xcbfec369,0xa4cefe98 +.long 0x9f47befb,0xb587da90,0x41312d13,0x6562e9fb,0xeff1cefe,0xa691ea59,0x05fc4cf6,0xcc30477a,0x0b0ffd3d,0xa1632461,0x5b355956,0xa1f16f3b,0x4224ec24,0x5b148d53,0xf977012a,0xdc834e7b +.long 0xb2c69dbc,0x7bfc5e75,0x03c3da6c,0x3aa77a29,0xca910271,0xde0df03c,0x7806dc55,0xcbd5ca4a,0x6db476cb,0xe1ca5807,0x5f37a31e,0xfde15d62,0xf41af416,0xf49af520,0x7d342db5,0x96c5c5b1 +.long 0xeb4ceb9b,0x155c43b7,0x4e77371a,0x2e993010,0x675d43af,0x1d2987da,0x8599fd72,0xef2bc1c0,0x9342f6b2,0x96894b7b,0x7c8e71f0,0x201eadf2,0x4a1f3efc,0xf3479d9f,0x702a9704,0xe0f8a742 +.long 0xb3eba40c,0xeafd44b6,0xc1c1e0d0,0xf9739f29,0x619d505e,0x0091471a,0x9d7c263e,0xc15f9c96,0x83afbe33,0x5be47285,0x04f1e092,0xa3b6d6af,0x751a9d11,0xe76526b9,0x9a4ae4d2,0x2ec5b26d +.long 0x02f6fb8d,0xeb66f4d9,0x96912164,0x4063c561,0x80ef3000,0xeb7050c1,0xeaa5b3f0,0x288d1c33,0x07806fd8,0xe87c68d6,0x4bbbf50f,0xb2f7f9d5,0xac8d6627,0x25972f3a,0x10e8c13b,0xf8547774 +.long 0x872b4a60,0xcc50ef6c,0x4613521b,0xab2a34a4,0x983e15d1,0x39c5c190,0x59905512,0x61dde5df,0x9f2275f3,0xe417f621,0x451d894b,0x0750c8b6,0x78b0bdaa,0x75b04ab9,0x458589bd,0x3bfd9fd4 +.long 0xee9120b6,0xf1013e30,0x23a4743e,0x2b51af93,0x48d14d9e,0xea96ffae,0x698a1d32,0x71dc0dbe,0x0180cca4,0x914962d2,0xc3568963,0x1ae60677,0x437bc444,0x8cf227b1,0xc9962c7a,0xc650c83b +.long 0xfe7ccfc4,0x23c2c7dd,0x1b929d48,0xf925c89d,0x06783c33,0x4460f74b,0xa590475a,0xac2c8d49,0xb807bba0,0xfb40b407,0x69ff8f3a,0x9d1e362d,0xcbef64a4,0xa33e9681,0x332fb4b2,0x67ece5fa +.long 0x739f10e3,0x6900a99b,0xff525925,0xc3341ca9,0xa9e2d041,0xee18a626,0x29580ddd,0xa5a83685,0x9d7de3cd,0xf3470c81,0x2062cf9c,0xedf02586,0xc010edb0,0xf43522fa,0x13a4b1ae,0x30314135 +.long 0xdb22b94b,0xc792e02a,0xa1eaa45b,0x993d8ae9,0xcd1e1c63,0x8aad6cd3,0xc5ce688a,0x89529ca7,0xe572a253,0x2ccee3aa,0x02a21efb,0xe02b6438,0xc9430358,0xa7091b6e,0x9d7db504,0x06d1b1fa +.long 0xc4744733,0x58846d32,0x379f9e34,0x40517c71,0x130ef6ca,0x2f65655f,0xf1f3503f,0x526e4488,0x7ee4a976,0x8467bd17,0x921363d1,0x1d9dc913,0xb069e041,0xd8d24c33,0x2cdf7f51,0x5eb5da0a +.long 0x197b994f,0x1c0f3cb1,0x2843eae9,0x3c95a6c5,0xa6097ea5,0x7766ffc9,0xd723b867,0x7bea4093,0x4db378f9,0xb48e1f73,0xe37b77ac,0x70025b00,0xaf24ad46,0x943dc8e7,0x16d00a85,0xb98a15ac +.long 0x2743b004,0x3adc38ba,0x334415ee,0xb1c7f4f7,0x1e62d05a,0xea43df8f,0x9d76a3b6,0x32618905,0xa23a0f46,0x2fbd0bb5,0x6a01918c,0x5bc971db,0xb4743f94,0x7801d94a,0x676ae22b,0xb94df65e +.long 0xaf95894c,0xaafcbfab,0x276b2241,0x7b9bdc07,0x5bdda48b,0xeaf98362,0xa3fcb4df,0x5977faf2,0x052c4b5b,0xbed042ef,0x067591f0,0x9fe87f71,0x22f24ec7,0xc89c73ca,0xe64a9f1b,0x7d37fa9e +.long 0x15562627,0x2710841a,0xc243b034,0x2c01a613,0x2bc68609,0x1d135c56,0x8b03f1f6,0xc2ca1715,0x3eb81d82,0xc9966c2d,0x8f6df13e,0xc02abf4a,0x8f72b43b,0x77b34bd7,0x360c82b0,0xaff6218f +.long 0x8d55b9d2,0x0aa5726c,0x99e9bffb,0xdc0adbe9,0xefb9e72a,0x9097549c,0x9dfb3111,0x16755712,0xf26847f9,0xdd8bf984,0xdfb30cb7,0xbcb8e387,0x5171ef9c,0xc1fd32a7,0x389b363f,0x977f3fc7 +.long 0xf4babda0,0x116eaf2b,0xf7113c8e,0xfeab68bd,0xb7def526,0xd1e3f064,0xe0b3fa02,0x1ac30885,0x40142d9d,0x1c5a6e7b,0x30921c0b,0x839b5603,0x36a116a3,0x48f301fa,0xcfd9ee6d,0x380e1107 +.long 0x58854be1,0x7945ead8,0xcbd4d49d,0x4111c12e,0x3a29c2ef,0xece3b1ec,0x8d3616f5,0x6356d404,0x594d320e,0x9f0d6a8f,0xf651ccd2,0x0989316d,0x0f8fdde4,0x6c32117a,0xa26a9bbc,0x9abe5cc5 +.long 0x9723f671,0xcff560fb,0x7f3d593c,0x21b2a12d,0x24ba0696,0xe4cb18da,0xc3543384,0x186e2220,0x88312c29,0x722f64e0,0x17dc7752,0x94282a99,0x5a85ee89,0x62467bbf,0xf10076a0,0xf435c650 +.long 0x43b3a50b,0xc9ff1539,0x1a53efbc,0x7132130c,0xf7b0c5b7,0x31bfe063,0x4ea994cc,0xb0179a7d,0xc85f455b,0x12d064b3,0x8f6e0062,0x47259328,0xb875d6d9,0xf64e590b,0xad92bcc7,0x22dd6225 +.long 0xb9c3bd6d,0xb658038e,0xfbba27c8,0x00cdb0d6,0x1062c45d,0x0c681337,0x2d33407d,0xd8515b8c,0x8cbb5ecf,0xcb8f699e,0xc608d7d8,0x8c4347f8,0xbb3e00db,0x2c11850a,0xecb49d19,0x20a8dafd +.long 0x45ee2f40,0xbd781480,0x416b60cf,0x75e354af,0x8d49a8c4,0xde0b58a1,0xfa359536,0xe40e94e2,0x62accd76,0xbd4fa59f,0x8c762837,0x05cf466a,0x448c277b,0xb5abda99,0x48b13740,0x5a9e01bf +.long 0x326aad8d,0x9d457798,0xc396f7e7,0xbdef4954,0xc253e292,0x6fb274a2,0x1cfe53e7,0x2800bf0a,0x44438fd4,0x22426d31,0x5e259f9a,0xef233923,0x03f66264,0x4188503c,0x7f9fdfab,0x9e5e7f13 +.long 0x5fcc1aba,0x565eb76c,0x59b5bff8,0xea632548,0xaab6d3fa,0x5587c087,0x6ce39c1b,0x92b639ea,0x953b135c,0x0706e782,0x425268ef,0x7308912e,0x090e7469,0x599e92c7,0x9bc35e75,0x83b90f52 +.long 0x244975b3,0x4750b3d0,0x11965d72,0xf3a44358,0x9c8dc751,0x179c6774,0xd23d9ff0,0xff18cdfe,0x2028e247,0xc4013833,0xf3bfbc79,0x96e280e2,0xd0880a84,0xf60417bd,0x2a568151,0x263c9f3d +.long 0x2d2ce811,0x36be15b3,0xf8291d21,0x846dc0c2,0x789fcfdb,0x5cfa0ecb,0xd7535b9a,0x45a0beed,0x96d69af1,0xec8e9f07,0x599ab6dc,0x31a7c5b8,0xf9e2e09f,0xd36d45ef,0xdcee954b,0x3cf49ef1 +.long 0x086cff9b,0x6be34cf3,0x39a3360f,0x88dbd491,0x0dbfbd1d,0x1e96b8cc,0xcb7e2552,0xc1e5f7bf,0x28819d98,0x0547b214,0x7aea9dcb,0xc770dd9c,0x041d68c8,0xaef0d4c7,0x13cb9ba8,0xcc2b9818 +.long 0xfe86c607,0x7fc7bc76,0x502a9a95,0x6b7b9337,0xd14dab63,0x1948dc27,0xdae047be,0x249dd198,0xa981a202,0xe8356584,0x3a893387,0x3531dd18,0xc85c7209,0x1be11f90,0xe2a52b5a,0x93d2fe1e +.long 0xec6d6b97,0x8225bfe2,0xbd0aa5de,0x9cf6d6f4,0x54779f5f,0x911459cb,0x86aeb1f3,0x5649cddb,0x3f26ce5a,0x32133579,0x550f431e,0xc289a102,0x73b84c6f,0x559dcfda,0xee3ac4d7,0x84973819 +.long 0xf2606a82,0xb51e55e6,0x90f2fb57,0xe25f7061,0xb1a4e37c,0xacef6c2a,0x5dcf2706,0x864e359d,0x7ce57316,0x479e6b18,0x3a96b23d,0x2cab2500,0x8ef16df7,0xed489862,0xef3758b5,0x2056538c +.long 0xf15d3101,0xa7df865e,0x61b553d7,0x80c5533a,0x4ed14294,0x366e1997,0xb3c0bcd6,0x6620741f,0xedc45418,0x21d1d9c4,0xc1cc4a9d,0x005b859e,0xa1c462f0,0xdf01f630,0xf26820c7,0x15d06cf3 +.long 0x3484be47,0x9f7f24ee,0x4a0c902f,0x2ff33e96,0x5a0bc453,0x00bdf457,0x1aa238db,0x2378dfaf,0x856720f2,0x272420ec,0x96797291,0x2ad9d95b,0x768a1558,0xd1242cc6,0x5cc86aa8,0x2e287f8b +.long 0x990cecaa,0x796873d0,0x675d4080,0xade55f81,0x21f0cd84,0x2645eea3,0xb4e17d02,0x7a1efa0f,0x037cc061,0xf6858420,0xd5d43e12,0x682e05f0,0x27218710,0x59c36994,0x3f7cd2fc,0x85cbba4d +.long 0x7a3cd22a,0x726f9729,0x4a628397,0x9f8cd5dc,0xc23165ed,0x17b93ab9,0x122823d4,0xff5f5dbf,0x654a446d,0xc1e4e4b5,0x677257ba,0xd1a9496f,0xde766a56,0x6387ba94,0x521ec74a,0x23608bc8 +.long 0x6688c4d4,0x16a522d7,0x07373abd,0x9d6b4282,0xb42efaa3,0xa62f07ac,0xe3b90180,0xf73e00f7,0x49421c3e,0x36175fec,0x3dcf2678,0xc4e44f9b,0x7220f09f,0x76df436b,0x3aa8b6cf,0x172755fb +.long 0x446139cc,0xbab89d57,0x5fe0208f,0x0a0a6e02,0x11e5d399,0xcdbb63e2,0xa8977f0b,0x33ecaa12,0xf7c42664,0x59598b21,0xab65d08a,0xb3e91b32,0xf4502526,0x035822ee,0x720a82a9,0x1dcf0176 +.long 0x3d589e02,0x50f8598f,0xb1d63d2c,0xdf0478ff,0x1571cd07,0x8b8068bd,0xd79670cd,0x30c3aa4f,0x941ade7f,0x25e8fd4b,0x32790011,0x3d1debdc,0x3a3f9ff0,0x65b6dcbd,0x793de69c,0x282736a4 +.long 0xd41d3bd3,0xef69a0c3,0x07a26bde,0xb533b8c9,0xdb2edf9f,0xe2801d97,0xe1877af0,0xdc4a8269,0x3d590dbe,0x6c1c5851,0xee4e9357,0x84632f6b,0x79b33374,0xd36d36b7,0x9bbca2e6,0xb46833e3 +.long 0xf7fc0586,0x37893913,0x66bf4719,0x385315f7,0xb31855dc,0x72c56293,0x849061fe,0xd1416d4e,0x51047213,0xbeb3ab78,0xf040c996,0x447f6e61,0x638b1d0c,0xd06d310d,0xbad1522e,0xe28a413f +.long 0x82003f86,0x685a76cb,0x0bcdbca3,0x610d07f7,0x9ca4c455,0x6ff66021,0xcea10eec,0x7df39b87,0xe22db218,0xb9255f96,0x08a34c44,0x8cc6d9eb,0x859f9276,0xcd4ffb86,0x50d07335,0x8fa15eb2 +.long 0xcf2c24b5,0xdf553845,0x52f9c3ba,0x89f66a9f,0xe4a7ceb3,0x8f22b5b9,0x0e134686,0xaffef809,0x8eb8fac2,0x3e53e1c6,0x28aec98e,0x93c1e4eb,0x32a43bcb,0xb6b91ec5,0xb2d74a51,0x2dbfa947 +.long 0xca84bad7,0xe065d190,0xad58e65c,0xfb13919f,0xf1cb6e31,0x3c41718b,0x06d05c3f,0x688969f0,0x21264d45,0xd4f94ce7,0x7367532b,0xfdfb65e9,0x0945a39d,0x5b1be8b1,0x2b8baf3b,0x229f789c +.long 0x6f49f15d,0xd8f41f3e,0x907f0792,0x678ce828,0xfca6e867,0xc69ace82,0xd01dcc89,0x106451ae,0x19fc32d2,0x1bb4f7f0,0xb00c52d2,0x64633dfc,0xad9ea445,0x8f13549a,0xfb323705,0x99a3bf50 +.long 0x534d4dbc,0x0c9625a2,0xc2a2fea3,0x45b8f1d1,0xa530fc1a,0x76ec21a1,0x9e5bd734,0x4bac9c2a,0x7b4e3587,0x5996d76a,0x1182d9e3,0x0045cdee,0x1207f13d,0x1aee24b9,0x97345a41,0x66452e97 +.long 0x9f950cd0,0x16e5b054,0xd7fdd075,0x9cc72fb1,0x66249663,0x6edd61e7,0xf043cccb,0xde4caa4d,0x55c7ac17,0x11b1f57a,0x1a85e24d,0x779cbd44,0xe46081e7,0x78030f86,0x8e20f643,0xfd4a6032 +.long 0x0a750c0f,0xcc7a6488,0x4e548e83,0x39bacfe3,0x0c110f05,0x3d418c76,0xb1f11588,0x3e4daa4c,0x5ffc69ff,0x2733e7b5,0x92053127,0x46f147bc,0xd722df94,0x885b2434,0xe6fc6b7c,0x6a444f65 +.long 0xc3f16ea8,0x7a1a465a,0xb2f1d11c,0x115a461d,0x6c68a172,0x4767dd95,0xd13a4698,0x3392f2eb,0xe526cdc7,0xc7a99ccd,0x22292b81,0x8e537fdc,0xa6d39198,0x76d8cf69,0x2446852d,0xffc5ff43 +.long 0xa90567e6,0x97b14f7e,0xb6ae5cb7,0x513257b7,0x9f10903d,0x85454a3c,0x69bc3724,0xd8d2c9ad,0x6b29cb44,0x38da9324,0x77c8cbac,0xb540a21d,0x01918e42,0x9bbfe435,0x56c3614e,0xfffa707a +.long 0xd4e353b7,0x0ce4e3f1,0xef46b0a0,0x062d8a14,0x574b73fd,0x6408d5ab,0xd3273ffd,0xbc41d1c9,0x6be77800,0x3538e1e7,0xc5655031,0x71fe8b37,0x6b9b331a,0x1cd91621,0xbb388f73,0xad825d0b +.long 0x1cb76219,0x56c2e05b,0x71567e7e,0x0ec0bf91,0x61c4c910,0xe7076f86,0xbabc04d9,0xd67b085b,0x5e93a96a,0x9fb90459,0xfbdc249a,0x7526c1ea,0xecdd0bb7,0x0d44d367,0x9dc0d695,0x95399917 +.long 0x9e240d18,0x61360ee9,0xb4b94466,0x057cdcac,0x2fe5325c,0xe7667cd1,0x21974e3b,0x1fa297b5,0xdb083d76,0xfa4081e7,0xf206bd15,0x31993be6,0x14c19f8c,0x8949269b,0xa9d92357,0x21468d72 +.long 0xa4c506ec,0x2ccbc583,0xd1acfe97,0x957ed188,0x12f1aea2,0x8baed833,0x8325362d,0xef2a6cb4,0x8e195c43,0x130dde42,0x0e6050c6,0xc842025a,0x08686a5d,0x2da972a7,0xe508b4a8,0xb52999a1 +.long 0x10a5a8bd,0xd9f090b9,0x096864da,0xca91d249,0x3f67dbc1,0x8e6a93be,0xf5f4764c,0xacae6fba,0xd21411a0,0x1563c6e0,0xda0a4ad8,0x28fa787f,0x908c8030,0xd524491c,0x4c795f07,0x1257ba0e +.long 0xceca9754,0x83f49167,0x4b7939a0,0x426d2cf6,0x723fd0bf,0x2555e355,0xc4f144e2,0xa96e6d06,0x87880e61,0x4768a8dd,0xe508e4d5,0x15543815,0xb1b65e15,0x09d7e772,0xac302fa0,0x63439dd6 +.long 0xc14e35c2,0xb93f802f,0x4341333c,0x71735b7c,0x16d4f362,0x03a25104,0xbf433c8e,0x3f4d069b,0xf78f5a7c,0x0d83ae01,0x7c4eed07,0x50a8ffbe,0x76e10f83,0xc74f8906,0x9ddaf8e1,0x7d080966 +.long 0x698e04cc,0xb11df8e1,0x169005c8,0x877be203,0x4f3c6179,0x32749e8c,0x7853fc05,0x2dbc9d0a,0x9454d937,0x187d4f93,0xb4800e1b,0xe682ce9d,0x165e68e8,0xa9129ad8,0xbe7f785b,0x0fe29735 +.long 0x5b9e02b7,0x5303f40c,0x35ee04e8,0xa37c9692,0x34d6632b,0x5f46cc20,0x96ac545b,0x55ef72b2,0x7b91b062,0xabec5c1f,0xbb33e821,0x0a79e1c7,0x3a9f4117,0xbb04b428,0xfd2a475a,0x0de1f28f +.long 0x3a4434b4,0x31019ccf,0x1a7954dc,0xa3458111,0xe34972a7,0xa9dac80d,0x74f6b8dd,0xb043d054,0x11137b1a,0x021c319e,0xed5cc03f,0x00a754ce,0xcbea5ad4,0x0aa2c794,0x70c015b6,0x093e67f4 +.long 0xc97e3f6b,0x72cdfee9,0xb6da7461,0xc10bcab4,0xb59806b9,0x3b02d2fc,0xa1de6f47,0x85185e89,0x0eb6c4d4,0x39e6931f,0xd4fa5b04,0x4d4440bd,0x34be7eb8,0x5418786e,0x9d7259bc,0x6380e521 +.long 0xd598d710,0x20ac0351,0xcb3a4da4,0x272c4166,0xca71de1f,0xdb82fe1a,0xd8f54b0f,0x746e79f2,0x4b573e9b,0x6e7fc736,0xfd4b5040,0x75d03f46,0x0b98d87b,0x5c1cc36d,0x1f472da1,0x513ba3f1 +.long 0xabb177dd,0x79d0af26,0x7891d564,0xf82ab568,0x72232173,0x2b6768a9,0x8c1f6619,0xefbb3bb0,0xa6d18358,0xb29c11db,0xb0916d3a,0x519e2797,0x9188e290,0xd4dc18f0,0x98b0ca7f,0x648e86e3 +.long 0x983c38b5,0x859d3145,0x637abc8b,0xb14f176c,0xcaff7be6,0x2793fb9d,0x35a66a5a,0xebe5a55f,0x9f87dc59,0x7cec1dcd,0xfbdbf560,0x7c595cd3,0x26eb3257,0x5b543b22,0xc4c935fd,0x69080646 +.long 0x81e9ede3,0x7f2e4403,0xcaf6df0a,0x243c3894,0x1c073b11,0x7c605bb1,0xba6a4a62,0xcd06a541,0x49d4e2e5,0x29168949,0x4af66880,0x33649d07,0xe9a85035,0xbfc0c885,0xfc410f4b,0xb4e52113 +.long 0x78a6513b,0xdca3b706,0x9edb1943,0x92ea4a2a,0xdb6e2dd8,0x02642216,0x9fd57894,0x9b45d0b4,0xc69d11ae,0x114e70db,0x4c57595f,0x1477dd19,0xec77c272,0xbc2208b4,0xdb68f59c,0x95c5b4d7 +.long 0x42e532b7,0xb8c4fc63,0x9ae35290,0x386ba422,0xd201ecbc,0xfb5dda42,0xa0e38fd6,0x2353dc8b,0x68f7e978,0x9a0b85ea,0x2ad6d11f,0x96ec5682,0xe5f6886d,0x5e279d6c,0x3cb1914d,0xd3fe03cd +.long 0x7ea67c77,0xfe541fa4,0xe3ea810c,0x952bd2af,0x8d01d374,0x791fef56,0x0f11336e,0xa3a1c621,0xc7ec6d79,0x5ad0d5a9,0x3225c342,0xff7038af,0xbc69601b,0x003c6689,0x45e8747d,0x25059bc7 +.long 0xf2086fbf,0xfa4965b2,0x86916078,0xf6840ea6,0x70081d6c,0xd7ac7620,0xb5328645,0xe600da31,0x529b8a80,0x01916f63,0x2d7d6f3e,0xe80e4858,0xd664ca7c,0x29eb0fe8,0xe7b43b0c,0xf017637b +.long 0x76cb2566,0x9a75c806,0xb24892d9,0x8f76acb1,0x1f08fe45,0x7ae7b9cc,0x6a4907d8,0x19ef7329,0x5f228bf0,0x2db4ab71,0x817032d7,0xf3cdea39,0xdcabe3c0,0x0b1f482e,0xbb86325c,0x3baf76b4 +.long 0x10089465,0xd49065e0,0x8e77c596,0x3bab5d29,0x193dbd95,0x7636c3a6,0xb246e499,0xdef5d294,0x286b2475,0xb22c58b9,0xcd80862b,0xa0b93939,0xf0992388,0x3002c83a,0xeacbe14c,0x6de01f9b +.long 0xadd70482,0x6aac688e,0x7b4a4e8a,0x708de92a,0x758a6eef,0x75b6dd73,0x725b3c43,0xea4bf352,0x87912868,0x10041f2c,0xef09297a,0xb1b1be95,0xa9f3860a,0x19ae23c5,0x515dcf4b,0xc4f0f839 +.long 0x97f6306a,0x3c7ecca3,0x68a3a4b0,0x744c44ae,0xb3a1d8a2,0x69cd13a0,0x5256b578,0x7cad0a1e,0x33791d9e,0xea653fcd,0x74b2e05f,0x9cc2a05d,0xfd7affa2,0x73b391dc,0xb6b05442,0xddb7091e +.long 0x8538a5c6,0xc71e27bf,0x89abff17,0x195c63dd,0x1b71e3da,0xfd315285,0xfa680fa0,0x9cbdfda7,0x849d7eab,0x9db876ca,0x3c273271,0xebe2764b,0xf208dcea,0x663357e3,0x565b1b70,0x8c5bd833 +.long 0x9837fc0d,0xccc3b4f5,0xa79cf00f,0x9b641ba8,0xdfdf3990,0x7428243d,0x020786b1,0x83a594c4,0x526c4502,0xb712451a,0x6adb3f93,0x9d39438e,0xe9ff0ccd,0xfdb261e3,0xe07af4c3,0x80344e3c +.long 0x2fa4f126,0x75900d7c,0x5c99a232,0x08a3b865,0xdb25e0c3,0x2478b6bf,0x71db2edf,0x482cc2c2,0x5f321bb8,0x37df7e64,0x9a8005b4,0x8a93821b,0xcc8c1958,0x3fa2f10c,0x2c269d0a,0x0d332218 +.long 0xe246b0e6,0x20ab8119,0xd349fd17,0xb39781e4,0xb31aa100,0xd293231e,0xbb032168,0x4b779c97,0xc8470500,0x4b3f19e1,0x0c4c869d,0x45b7efe9,0xa1a6bbcc,0xdb84f38a,0xb2fddbc1,0x3b59cb15 +.long 0x3fd165e8,0xba5514df,0x061f8811,0x499fd6a9,0xbfef9f00,0x72cd1fe0,0x79ad7e8a,0x120a4bb9,0x5f4a5ac5,0xf2ffd095,0x95a7a2f0,0xcfd174f1,0x9d17baf1,0xd42301ba,0x77f22089,0xd2fa487a +.long 0xb1dc77e1,0x9cb09efe,0x21c99682,0xe9566939,0x6c6067bb,0x8c546901,0x61c24456,0xfd378574,0x81796b33,0x2b6a6cbe,0x58e87f8b,0x62d550f6,0x7f1b01b4,0x1b763e1c,0x1b1b5e12,0x4b93cfea +.long 0x1d531696,0xb9345238,0x88cdde69,0x57201c00,0x9a86afc7,0xdde92251,0xbd35cea8,0xe3043895,0x8555970d,0x7608c1e1,0x2535935e,0x8267dfa9,0x322ea38b,0xd4c60a57,0x804ef8b5,0xe0bf7977 +.long 0xc06fece4,0x1a0dab28,0x94e7b49d,0xd405991e,0x706dab28,0xc542b6d2,0xa91618fb,0xcb228da3,0x107d1cea,0x224e4164,0xd0f5d8f1,0xeb9fdab3,0x0d6e41cd,0xc02ba386,0x9b1f7146,0x676a72c5 +.long 0x4d6cb00b,0xffd6dd98,0xde2e8d7c,0xcef9c5ca,0x641c7936,0xa1bbf5d7,0xee8f772e,0x1b95b230,0xe8ac25b1,0xf765a92e,0x3a18b7c6,0xceb04cfc,0x0acc8966,0x27944cef,0x434c1004,0xcbb3c957 +.long 0xa43ff93c,0x9c9971a1,0xa1e358a9,0x5bc2db17,0xa8d9bc82,0x45b4862e,0x2201e052,0x70ebfbfb,0x92871591,0xafdf64c7,0xb42d0219,0xea5bcae6,0x2ad8f03c,0xde536c55,0xa76aa33c,0xcd6c3f4d +.long 0x0bca6de3,0xbeb5f623,0xb1e706fd,0xdd20dd99,0xac9059d4,0x90b3ff9d,0x7ccccc4e,0x2d7b2902,0xce98840f,0x8a090a59,0x8410680a,0xa5d947e0,0x923379a5,0x49ae346a,0xb28a3156,0x7dbc84f9 +.long 0x54a1aff2,0xfd40d916,0x3a78fb9b,0xabf318ba,0x3029f95e,0x50152ed8,0xc58ad7fa,0x9fc1dd77,0x13595c17,0x5fa57915,0x8f62b3a9,0xb9504668,0xff3055b0,0x907b5b24,0x9a84f125,0x2e995e35 +.long 0x7e9bbcfb,0x87dacf69,0xe86d96e3,0x95d0c1d6,0x2d95a75c,0x65726e3c,0xacd27f21,0x2c3c9001,0x6c973f57,0x1deab561,0xa5221643,0x108b7e2c,0xc4ef79d4,0x5fee9859,0x40d4b8c6,0xbd62b88a +.long 0x197c75d6,0xb4dd29c4,0xb7076feb,0x266a6df2,0x4bf2df11,0x9512d0ea,0x6b0cc9ec,0x1320c24f,0x01a59596,0x6bb1e0e1,0xeff9aaac,0x8317c5bb,0x385aa6c9,0x65bb405e,0x8f07988f,0x613439c1 +.long 0x16a66e91,0xd730049f,0xfa1b0e0d,0xe97f2820,0x304c28ea,0x4131e003,0x526bac62,0x820ab732,0x28714423,0xb2ac9ef9,0xadb10cb2,0x54ecfffa,0xf886a4cc,0x8781476e,0xdb2f8d49,0x4b2c87b5 +.long 0x0a44295d,0xe857cd20,0x58c6b044,0x707d7d21,0xf596757c,0xae8521f9,0x67b2b714,0x87448f03,0x5ebcd58d,0x13a9bc45,0x9122d3c1,0x79bcced9,0x9e076642,0x3c644247,0x2df4767d,0x0cf22778 +.long 0x71d444b6,0x5e61aee4,0xc5084a1d,0x211236bf,0x4fd3eaf6,0x7e15bc9a,0xab622bf5,0x68df2c34,0x59bf4f36,0x9e674f0f,0xd7f34d73,0xf883669b,0x31497b1d,0xc48ac1b8,0x5106703b,0x323b925d +.long 0x74082008,0x22156f42,0xc8482bcb,0xeffc521a,0x12173479,0x5c6831bf,0xc4739490,0xcaa2528f,0x8f1b3c4d,0x84d2102a,0x2d9bec0d,0xcf64dfc1,0x78a546ef,0x433febad,0x7b73cef1,0x1f621ec3 +.long 0x37338615,0x6aecd627,0x01d8edf6,0x162082ab,0x19e86b66,0x833a8119,0xd299b5db,0x6023a251,0xbbf04b89,0xf5bb0c3a,0xae749a44,0x6735eb69,0x4713de3b,0xd0e058c5,0x2c3d4ccd,0xfdf2593e +.long 0xfdd23667,0x1b8f414e,0xfa2015ee,0xdd52aaca,0xbd9625ff,0x3e31b517,0x8db5918c,0x5ec9322d,0xa96f5294,0xbc73ac85,0x61a0666a,0x82aa5bf3,0xbf08ac42,0x49755810,0x891cedfc,0xd21cdfd5 +.long 0x67f8be10,0x918cb57b,0x56ffa726,0x365d1a7c,0x6532de93,0x2435c504,0x2674cd02,0xc0fc5e10,0x9cbbb142,0x6e51fcf8,0xafc50692,0x1d436e5a,0x3fbcae22,0x766bffff,0xfd55d3b8,0x3148c2fd +.long 0x233222fa,0x52c7fdc9,0xe419fb6b,0x89ff1092,0x25254977,0x3cd6db99,0x1cf12ca7,0x2e85a161,0xdc810bc9,0xadd2547c,0x9d257c22,0xea3f458f,0x27d6b19b,0x642c1fbe,0x140481a6,0xed07e6b5 +.long 0x86d2e0f8,0x6ada1d42,0x0e8a9fd5,0xe5920122,0x708c1b49,0x02c936af,0x2b4bfaff,0x60f30fee,0x858e6a61,0x6637ad06,0x3fd374d0,0xce4c7767,0x7188defb,0x39d54b2d,0xf56a6b66,0xa8c9d250 +.long 0xb24fe1dc,0x58fc0f5e,0x6b73f24c,0x9eaf9dee,0x33650705,0xa90d588b,0xaf2ec729,0xde5b62c5,0xd3c2b36e,0x5c72cfae,0x034435da,0x868c19d5,0xe17ee145,0x88605f93,0x77a5d5b1,0xaa60c4ee +.long 0x3b60c472,0xbcf5bfd2,0xeb1d3049,0xaf4ef13c,0xe13895c9,0x373f44fc,0x0cbc9822,0xf29b382f,0x73efaef6,0x1bfcb853,0xa8c96f40,0xcf56ac9c,0x7a191e24,0xd7adf109,0xbf8a8dc2,0x98035f44 +.long 0x1e750c84,0xf40a71b9,0x5dc6c469,0xc57f7b0c,0x6fbc19c1,0x49a0e79c,0xa48ebdb8,0x6b0f5889,0xa07c4e9f,0x5d3fd084,0xab27de14,0xc3830111,0x33e08dcc,0x0e4929fe,0x40bb73a3,0xf4a5ad24 +.long 0x490f97ca,0xde86c2bf,0x67a1ce18,0x288f09c6,0x1844478d,0x364bb886,0xceedb040,0x7840fa42,0x5a631b37,0x1269fdd2,0xa47c8b7d,0x94761f1e,0x481c6266,0xfc0c2e17,0x3daa5fa7,0x85e16ea2 +.long 0x92491048,0xccd86033,0xf4d402d7,0x0c2f6963,0xdf6a865c,0x6336f7df,0xb5c02a87,0x0a2a463c,0xbf2f12ee,0xb0e29be7,0x66bad988,0xf0a22002,0x9123c1d7,0x27f87e03,0x328a8c98,0x21669c55 +.long 0x92f14529,0x186b9803,0x63954df3,0xd3d056cc,0x175a46f6,0x2f03fd58,0x11558558,0x63e34ebe,0x5b80cfa5,0xe13fedee,0xd401dbd1,0xe872a120,0xe8a9d667,0x52657616,0xe08d6693,0xbc8da4b6 +.long 0x1b703e75,0x370fb9bb,0xd4338363,0x6773b186,0xecef7bff,0x18dad378,0x995677da,0xaac787ed,0x0437164b,0x4801ea8b,0x73fe795e,0xf430ad20,0x8ee5eb73,0xb164154d,0x108f7c0e,0x0884ecd8 +.long 0x5f520698,0x0e6ec096,0x44f7b8d9,0x640631fe,0xa35a68b9,0x92fd34fc,0x4d40cf4e,0x9c5a4b66,0x80b6783d,0x949454bf,0x3a320a10,0x80e701fe,0x1a0a39b2,0x8d1a564a,0x320587db,0x1436d53d +.long 0x6556c362,0xf5096e6d,0xe2455d7e,0xbc23a3c0,0x807230f9,0x3a7aee54,0x22ae82fd,0x9ba1cfa6,0x99c5d706,0x833a057a,0x842315c9,0x8be85f4b,0x66a72f12,0xd083179a,0xcdcc73cd,0x2fc77d5d +.long 0x5616ee30,0x22b88a80,0xe7ab1083,0xfb09548f,0x511270cd,0x8ad6ab0d,0x6924d9ab,0x61f6c57a,0x90aecb08,0xa0f7bf72,0x0df784a4,0x849f87c9,0xcfaf1d03,0x27c79c15,0xc463face,0xbbf9f675 +.long 0x765ba543,0x91502c65,0x42ea60dd,0x18ce3cac,0x6e43ecb3,0xe5cee6ac,0x68f2aeeb,0x63e4e910,0xc85932ee,0x26234fa3,0x4c90c44d,0x96883e8b,0xa18a50f6,0x29b9e738,0x3f0420df,0xbfc62b2a +.long 0x6d3e1fa9,0xd22a7d90,0xfe05b8a3,0x17115618,0xbb2b9c01,0x2a0c9926,0xe07e76a2,0xc739fcc6,0x165e439a,0x540e9157,0x6a9063d8,0x06353a62,0x61e927a3,0x84d95594,0xe2e0be7f,0x013b9b26 +.long 0x973497f1,0x4feaec3b,0x093ebc2d,0x15c0f94e,0x33af0583,0x6af5f227,0xc61f3340,0x0c2af206,0x4457397c,0xd25dbdf1,0xcabcbae0,0x2e8ed017,0xc2815306,0xe3010938,0xe8c6cd68,0xbaa99337 +.long 0x3b0ec7de,0x08513182,0x58df05df,0x1e1b822b,0xa5c3b683,0x5c14842f,0x3eba34ce,0x98fe977e,0x0d5e8873,0xfd2316c2,0xbd0d427d,0xe48d839a,0x623fc961,0x495b2218,0xb46fba5e,0x24ee56e7 +.long 0x91e4de58,0x9184a55b,0xdfdea288,0xa7488ca5,0xa8dcc943,0xa723862e,0x849dc0fc,0x92d762b2,0x091ff4a9,0x3c444a12,0x0cada274,0x581113fa,0x30d8eae2,0xb9de0a45,0xdf6b41ea,0x5e0fcd85 +.long 0xc094dbb5,0x6233ea68,0xd968d410,0xb77d062e,0x58b3002d,0x3e719bbc,0x3dc49d58,0x68e7dd3d,0x013a5e58,0x8d825740,0x3c9e3c1b,0x21311747,0x7c99b6ab,0x0cb0a2a7,0xc2f888f2,0x5c48a3b3 +.long 0x991724f3,0xc7913e91,0x39cbd686,0x5eda799c,0x63d4fc1e,0xddb595c7,0xac4fed54,0x6b63b80b,0x7e5fb516,0x6ea0fc69,0xd0f1c964,0x737708ba,0x11a92ca5,0x9628745f,0x9a86967a,0x61f37958 +.long 0xaa665072,0x9af39b2c,0xefd324ef,0x78322fa4,0xc327bd31,0x3d153394,0x3129dab0,0x81d5f271,0xf48027f5,0xc72e0c42,0x8536e717,0xaa40cdbc,0x2d369d0f,0xf45a657a,0xea7f74e6,0xb03bbfc4 +.long 0x0d738ded,0x46a8c418,0xe0de5729,0x6f1a5bb0,0x8ba81675,0xf10230b9,0x112b33d4,0x32c6f30c,0xd8fffb62,0x7559129d,0xb459bf05,0x6a281b47,0xfa3b6776,0x77c1bd3a,0x7829973a,0x0709b380 +.long 0xa3326505,0x8c26b232,0xee1d41bf,0x38d69272,0xffe32afa,0x0459453e,0x7cb3ea87,0xce8143ad,0x7e6ab666,0x932ec1fa,0x22286264,0x6cd2d230,0x6736f8ed,0x459a46fe,0x9eca85bb,0x50bf0d00 +.long 0x877a21ec,0x0b825852,0x0f537a94,0x300414a7,0x21a9a6a2,0x3f1cba40,0x76943c00,0x50824eee,0xf83cba5d,0xa0dbfcec,0x93b4f3c0,0xf9538148,0x48f24dd7,0x61744162,0xe4fb09dd,0x5322d64d +.long 0x3d9325f3,0x57447384,0xf371cb84,0xa9bef2d0,0xa61e36c5,0x77d2188b,0xc602df72,0xbbd6a7d7,0x8f61bc0b,0xba3aa902,0x6ed0b6a1,0xf49085ed,0xae6e8298,0x8bc625d6,0xa2e9c01d,0x832b0b1d +.long 0xf1f0ced1,0xa337c447,0x9492dd2b,0x800cc793,0xbea08efa,0x4b93151d,0xde0a741e,0x820cf3f8,0x1c0f7d13,0xff1982dc,0x84dde6ca,0xef921960,0x45f96ee3,0x1ad7d972,0x29dea0c7,0x319c8dbe +.long 0x7b82b99b,0xd3ea3871,0x470eb624,0x75922d4d,0x3b95d466,0x8f66ec54,0xbee1e346,0x66e673cc,0xb5f2b89a,0x6afe67c4,0x290e5cd3,0x3de9c1e6,0x310a2ada,0x8c278bb6,0x0bdb323b,0x420fa384 +.long 0x0eb919b0,0x0ae1d63b,0xa74b9620,0xd74ee51d,0xa674290c,0x395458d0,0x4620a510,0x324c930f,0xfbac27d4,0x2d1f4d19,0x9bedeeac,0x4086e8ca,0x9b679ab8,0x0cdd211b,0x7090fec4,0x5970167d +.long 0xfaf1fc63,0x3420f2c9,0x328c8bb4,0x616d333a,0x57f1fe4a,0x7d65364c,0x55e5c73a,0x9343e877,0xe970e78c,0x5795176b,0x60533627,0xa36ccebf,0x09cdfc1b,0xfc7c7380,0xb3fec326,0xb39a2afe +.long 0x6224408a,0xb7ff1ba1,0x247cfc5e,0xcc856e92,0xc18bc493,0x01f102e7,0x2091c727,0x4613ab74,0xc420bf2b,0xaa25e89c,0x90337ec2,0x00a53176,0x7d025fc7,0xd2be9f43,0x6e6fe3dc,0x3316fb85 +.long 0x9ac50814,0x27520af5,0x9a8e4223,0xfdf95e78,0x56bec5a0,0xb7e7df2a,0xdf159e5d,0xf7022f7d,0xcac1fe8f,0x93eeeab1,0x37451168,0x8040188c,0xd967dce6,0x7ee8aa8a,0x3abc9299,0xfa0e79e7 +.long 0x2064cfd1,0x67332cfc,0xb0651934,0x339c31de,0x2a3bcbea,0x719b28d5,0x9d6ae5c6,0xee74c82b,0xbaf28ee6,0x0927d05e,0x9d719028,0x82cecf2c,0xddb30289,0x0b0d353e,0xfddb2e29,0xfe4bb977 +.long 0x640bfd9e,0xbb5bb990,0x82f62108,0xd226e277,0x02ffdd56,0x4bf00985,0x2ca1b1b5,0x7756758a,0x5285fe91,0xc32b62a3,0x8c9cd140,0xedbc546a,0xaf5cb008,0x1e47a013,0x073ce8f2,0xbca7e720 +.long 0x17a91cae,0xe10b2ab8,0x08e27f63,0xb89aab65,0xdba3ddf9,0x7b3074a7,0x330c2972,0x1c20ce09,0x5fcf7e33,0x6b9917b4,0x945ceb42,0xe6793743,0x5c633d19,0x18fc2215,0xc7485474,0xad1adb3c +.long 0x6424c49b,0x646f9679,0x67c241c9,0xf888dfe8,0x24f68b49,0xe12d4b93,0xa571df20,0x9a6b62d8,0x179483cb,0x81b4b26d,0x9511fae2,0x666f9632,0xd53aa51f,0xd281b3e4,0x7f3dbd16,0x7f96a765 +.long 0x074a30ce,0xa7f8b5bf,0x005a32e6,0xd7f52107,0x50237ed4,0x6f9e0907,0x8096fa2b,0x2f21da47,0xeec863a0,0xf3e19cb4,0x9527620a,0xd18f77fd,0x407c1cf8,0x9505c81c,0x1b6ec284,0x9998db4e +.long 0xc247d44d,0x7e3389e5,0x3f4f3d80,0x12507141,0x4a78a6c7,0xd4ba0110,0x767720be,0x312874a0,0x75944370,0xded059a6,0x3b2c0bdd,0xd6123d90,0x51c108e3,0xa56b717b,0x070623e9,0x9bb7940e +.long 0x84ac066c,0x794e2d59,0xe68c69a0,0xf5954a92,0x4fd99dcc,0x28c52458,0xb1012517,0x60e639fc,0x7de79248,0xc2e60125,0xf12fc6d7,0xe9ef6404,0x2a3b5d32,0x4c4f2808,0xc768eb8a,0x865ad32e +.long 0x13fb70b6,0xac02331b,0x95599b27,0x037b44c1,0x60bd082c,0x1a860fc4,0xc980cd01,0xa2e25745,0x1da0263e,0xee3387a8,0x2d10f3d6,0x931bfb95,0xa1f24a32,0x5b687270,0xca494b86,0xf140e65d +.long 0xb2f1ac7a,0x4f4ddf91,0x760fee27,0xf99eaabb,0x49c228e5,0x57f4008a,0x1cf713bb,0x090be440,0x5004f022,0xac91fbe4,0x569e1af6,0xd838c2c2,0x0f1daaa5,0xd6c7d20b,0x1bbb02c0,0xaa063ac1 +.long 0x59558a78,0x0938a422,0x8435da2f,0x5343c669,0x034410dc,0x96f67b18,0x84510804,0x7cc1e424,0x16dfbb7d,0x86a1543f,0x5b5bd592,0x921fa942,0xb33dd03c,0x9dcccb6e,0xb843f51e,0x8581ddd9 +.long 0x81d73c9e,0x54935fcb,0x0a5e97ab,0x6d07e979,0xcf3a6bab,0x4dc7b30a,0x170bee11,0x147ab1f3,0x9fafdee4,0x0aaf8e3d,0x538a8b95,0xfab3dbcb,0x6ef13871,0x405df4b3,0x088d5a49,0xf1f4e9cb +.long 0x66b33f1d,0x9bcd24d3,0x5ce445c0,0x3b97b820,0xba93ff61,0xe2926549,0x4dafe616,0xd9c341ce,0x16efb6f3,0xfb30a76e,0x605b953c,0xdf24b8ca,0xc2fffb9f,0x8bd52afe,0xe19d0b96,0xbbac5ff7 +.long 0x459afccd,0x43c01b87,0xb7432652,0x6bd45143,0x55b5d78e,0x84734530,0x1554ba7d,0x81088fdb,0x1e269375,0xada0a52c,0x2dc5ec10,0xf9f037c4,0x94bfbc11,0xc0660607,0xc9c40d2f,0xc0a630bb +.long 0xab64c31e,0x5efc797e,0x74507144,0xffdb1dab,0x1ca6790c,0xf6124287,0xe69bf1bf,0xe9609d81,0x00d24fc9,0xdb898595,0xe51fb417,0x9c750333,0xfef7bbde,0x51830a91,0x945f585c,0x0ce67dc8 +.long 0x4763eb50,0x9a730ed4,0xc1ab0d66,0x24a0e221,0x648748f3,0x643b6393,0x6d3c6291,0x1982daa1,0x8bbc5549,0x6f00a9f7,0x7f36384e,0x7a1783e1,0xde977f50,0xe8346323,0xb245502a,0x91ab688d +.long 0x6d0bdd66,0x331ab6b5,0x64b71229,0x0a6ef32e,0xfe7c352f,0x1028150e,0xce7b39d3,0x27e04350,0xc1070c82,0x2a3c8acd,0x80c9feef,0xfb2034d3,0x709f3729,0x2d729621,0x62cb4549,0x8df290bf +.long 0xfc2e4326,0x02f99f33,0x5eddf032,0x3b30076d,0x0c652fb5,0xbb21f8cf,0xed91cf7b,0x314fb49e,0x2f700750,0xa013eca5,0x712a4575,0x2b9e3c23,0xaf30fbb0,0xe5355557,0x7c77e771,0x1ada3516 +.long 0x7b135670,0x45f6ecb2,0x7cfc202e,0xe85d19df,0x58d1be9f,0x0f1b50c7,0xead2e344,0x5ebf2c0a,0xabc199c9,0x1531fe4e,0x56bab0ae,0xc7032592,0x6c1fec54,0x16ab2e48,0x04280188,0x0f87fda8 +.long 0x609e4a74,0xdc9f46fc,0xba667f91,0x2a44a143,0xb4d83436,0xbc3d8b95,0xc7bd2958,0xa01e4bd0,0x73483c90,0x7b182932,0xa7c7b598,0xa79c6aa1,0xeaaac07e,0xbf3983c6,0x96e0d4e6,0x8f18181e +.long 0x051af62b,0x8553d37c,0x0bf94496,0xe9a998eb,0xb0d59aa1,0xe0844f9f,0xe6afb813,0x983fd558,0x65d69804,0x9670c0ca,0x6ea5ff2d,0x732b22de,0x5fd8623b,0xd7640ba9,0xa6351782,0x9f619163 +.long 0xacee5043,0x0bfc27ee,0x2eb10f02,0xae419e73,0x8943fb05,0x19c028d1,0xff13aa2a,0x71f01cf7,0x8887a132,0x7790737e,0x66318410,0x67513309,0x7ddb795e,0x9819e8a3,0xdad100b2,0xfecb8ef5 +.long 0x3021926a,0x59f74a22,0x6f9b4c1c,0xb7c28a49,0x912ad0ab,0xed1a733f,0x01a5659c,0x42a910af,0x7bd68cab,0x3842c6e0,0x76d70ac8,0x2b57fa38,0x3c53aaeb,0x8a6707a8,0x65b4db18,0x62c1c510 +.long 0xb2d09dc7,0x8de2c1fb,0x266bd23b,0xc3dfed12,0xd5b27db6,0x927d039b,0x103243da,0x2fb2f0f1,0x80be7399,0xf855a07b,0x1f9f27a8,0xed9327ce,0x729bdef7,0xa0bd99c7,0x28250d88,0x2b67125e +.long 0x8670ced7,0x784b26e8,0xc31bd3b4,0xe3dfe41f,0xbcc85cbc,0x9e353a06,0x60178a9d,0x302e2909,0xa6eac16e,0x860abf11,0xaa2b3aac,0x76447000,0x850afdab,0x46ff9d19,0xfdb2d4c1,0x35bdd6a5 +.long 0x7e5c9ce9,0xe82594b0,0x20af346e,0x0f379e53,0xbc65ad4a,0x608b31e3,0x267c4826,0x710c6b12,0x71954cf1,0x51c966f9,0x0d0aa215,0xb1cec793,0x86bd23a8,0x1f155989,0xf9452e86,0xae2ff99c +.long 0x340ceaa2,0xd8dd953c,0x2e2e9333,0x26355275,0x8586f06d,0x15d4e5f9,0xf7cab546,0xd6bf94a8,0xb76a9af0,0x33c59a0a,0xba095af7,0x52740ab3,0x24389ca0,0xc444de8a,0x706da0cb,0xcc6f9863 +.long 0x6b2515cf,0xb5a741a7,0x9585c749,0x71c41601,0xe683de97,0x78350d4f,0x63d0b5f5,0x31d61524,0xfbce090b,0x7a0cc5e1,0xfbcb2a5b,0xaac927ed,0x20d84c35,0xe920de49,0x22b4de26,0x8c06a0b6 +.long 0xafe7ddf3,0xd34dd58b,0xc1e6e55b,0x55851fed,0x960696e7,0xd1395616,0x5f22705f,0x940304b2,0xb0a2a860,0x6f43f861,0x0e7cc981,0xcf121282,0x0ab64a96,0x12186212,0xb789383c,0x09215b9a +.long 0x37387c09,0x311eb305,0xf03ee760,0xc5832fce,0x32f7ea19,0x30358f58,0x91d53551,0xe01d3c34,0xda48ea80,0x1ca5ee41,0xcf4fa4c1,0x34e71e8e,0x7af1e1c7,0x312abd25,0x2153f4a5,0xe3afcdeb +.long 0x00235e9a,0x9d5c84d7,0x8c4c836f,0x0308d3f4,0x89332de5,0xc0a66b04,0x89e566ef,0x610dd399,0xd1ac1635,0xf8eea460,0x20a2c0df,0x84cbb3fb,0xe74a48c5,0x40afb488,0xd326b150,0x29738198 +.long 0xa6d74081,0x2a17747f,0x55a26214,0x60ea4c05,0x1f88c5fe,0x53514bb4,0x7e83426c,0xedd64567,0x96460b25,0xd5d6cbec,0x68dc115e,0xa12fd0ce,0x697840ea,0xc5bc3ed2,0xa6331e31,0x969876a8 +.long 0x472ff580,0x60c36217,0x4ad41393,0xf4229705,0xa03b8b92,0x4bd99ef0,0xc144f4f6,0x501c7317,0x18464945,0x159009b3,0x74c5c6be,0x6d5e594c,0x321a3660,0x2d587011,0x3898d022,0xd1e184b1 +.long 0x4c6a7e04,0x5ba04752,0x45550b65,0x47fa1e2b,0x48c0a9a5,0x9419daf0,0x7c243236,0x66362953,0x5cb12a88,0xcd0744b1,0x2b646188,0x561b6f9a,0x66c2c0c0,0x599415a5,0x0f83f09a,0xbe3f0859 +.long 0xb92041b8,0x9141c5be,0x26477d0d,0x01ae38c7,0xd12c7a94,0xca8b71f3,0x765c70db,0xfab5b31f,0x487443e9,0x76ae7492,0x990d1349,0x8595a310,0x7d460a37,0xf8dbeda8,0x1e45a38f,0x7f7ad082 +.long 0x1059705a,0xed1d4db6,0xe6b9c697,0xa3dd492a,0x6eb38bd5,0x4b92ee3a,0x67cc0bb7,0xbab2609d,0x6e70ee82,0x7fc4fe89,0x13e6b7e3,0xeff2c56e,0x34d26fca,0x9b18959e,0x889d6b45,0x2517ab66 +.long 0xbdefdd4f,0xf167b4e0,0xf366e401,0x69958465,0xa73bbec0,0x5aa368ab,0x7b240c21,0x12148709,0x18969006,0x378c3233,0xe1fe53d1,0xcb4d73ce,0x130c4361,0x5f50a80e,0x7ef5212b,0xd67f5951 +.long 0x9e70c72e,0xf145e21e,0x5566d2fb,0xb2e52e29,0x032397f5,0x44eaba4a,0x7e31a7de,0x5e56937b,0x456c61e1,0x68dcf517,0xa8b0a388,0xbc2e954a,0x60a8b755,0xe3552fa7,0x73ad0cde,0x03442dae +.long 0xceb26210,0x37ffe747,0x787baef9,0x983545e8,0x86a3de31,0x8b8c8535,0xfacd46db,0xc621dbcb,0x59266fbb,0x82e442e9,0x339d471c,0xa3514c37,0x62cdad96,0x3a11b771,0xecf9bdf0,0xf0cb3b3c +.long 0x478e2135,0x3fcbdbce,0xbda35342,0x7547b5cf,0x8a677af6,0xa97e81f1,0x28817987,0xc8c2bf83,0x45580985,0xdf07eaaf,0xc93b45cb,0xc68d1f05,0xc77b4cac,0x106aa2fe,0x04a7ae86,0x4c1d8afc +.long 0x9eb45ab2,0xdb41c3fd,0xd4b22e74,0x5b234b5b,0xf215958a,0xda253dec,0xa04edfa0,0x67e0606e,0xef751b11,0xabbbf070,0xf6f06dce,0xf352f175,0x6839f6b4,0xdfc4b6af,0x9959848e,0x53ddf9a8 +.long 0xc21520b0,0xda49c379,0xdbd5d1b6,0x90864ff0,0x5f49c7f7,0x2f055d23,0xa796b2d8,0xe51e4e6a,0x5c9dc340,0xc361a67f,0xbca7c620,0x5ad53c37,0x32c756d0,0xda1d6588,0x8bb67e13,0xad60d911 +.long 0x0eeec8c6,0xd6c47bdf,0x078a1821,0x4a27fec1,0xc3099524,0x081f7415,0x82cd8060,0x8effdf0b,0x65842df8,0xdb70ec1c,0xd319a901,0x8821b358,0xde42b529,0x72ee56ee,0x236e4286,0x5bb39592 +.long 0xfd6f7140,0xd1183316,0xbd8e81f7,0xf9fadb5b,0x5a02d962,0x701d5e0c,0x1b601324,0xfdee4dbf,0x35d7620e,0xbed17407,0xf48c0012,0x04e3c2c3,0x3455449a,0x9ee29da7,0x91a836c4,0x562cdef4 +.long 0x47701097,0x8f682a5f,0xff88d0c2,0x617125d8,0x57bb86dd,0x948fda24,0x289f7286,0x348abb8f,0x99d94bbd,0xeb10eab5,0x4684d160,0xd51ba28e,0x30c8f41a,0xabe0e51c,0x13254f4a,0x66588b45 +.long 0xfad097a5,0x147ebf01,0x610e815d,0x49883ea8,0x8a11de56,0xe44d60ba,0x827a7a6d,0xa970de6e,0x5e17fc19,0x2be41424,0x01214057,0xd833c657,0x363e723f,0x1375813b,0xe6a52e9b,0x6820bb88 +.long 0xd875d56a,0x7e7f6970,0x51fbf6bf,0xd6a0a9ac,0xa3083c12,0x54ba8790,0x6ae7eb64,0xebaeb23d,0xb99a907a,0xa8685c3a,0x026bf40b,0xf1e74550,0xc802cd9e,0x7b73a027,0x4fef4635,0x9a8a927c +.long 0x08191224,0xe1b6f60c,0xde4ec091,0xc4126ebb,0x4ae38d84,0xe1dff4dc,0x4f2ef985,0xde3f57db,0xd446a1dd,0x34964337,0x859e77f6,0x7bf217a0,0x8e1d13f5,0x8ff10527,0x74eeae27,0xa304ef03 +.long 0xd19dfa5a,0xfc6f5e47,0x7fad982b,0xdb007de3,0x613715f5,0x28205ad1,0x7889529e,0x251e6729,0x1ae98e78,0x72705184,0x271cac32,0xf818537d,0xb7f410f5,0xc8a15b7e,0x81f62393,0xc474356f +.long 0xc242316b,0x92dbdc5a,0xdbf4aff5,0xabe060ac,0x909a8ec6,0x6e8c38fe,0x6116cb94,0x43e514e5,0x07d784f9,0x2078fa38,0xf4b5b357,0x1161a880,0x13adea3d,0x5283ce79,0xcc6a910b,0x0756c3e6 +.long 0xaaa79697,0x60bcfe01,0x56391db1,0x04a73b29,0x189b45a0,0xdd8dad47,0x48d5b8d9,0xbfac0dd0,0x7d3d2ec2,0x34ab3af5,0x207bd3af,0x6fa2fc2d,0x66550ded,0x9ff40092,0x1fd5b913,0x719b3e87 +.long 0x6d17fbc7,0xa573a496,0x73d2b24e,0x0cd1a70a,0xb2676937,0x34e2c5ca,0xbf669f21,0xe7050b06,0x1ede9046,0xfbe948b6,0x97662659,0xa0530051,0xf10124c5,0x58cbd4ed,0xdd6c06c8,0xde2646e4 +.long 0x8cad38c0,0x332f8108,0x6bd68ae2,0x471b7e90,0x0d8e27a3,0x56ac3fb2,0x136b4b0d,0xb54660db,0xa6fd8de4,0x123a1e11,0xa37799ef,0x44dbffea,0xce6ac17c,0x4540b977,0xaf60acef,0x495173a8 +.long 0x391c2a82,0x9ebb284d,0x158308e8,0xbcdd4863,0x83f1edca,0x006f16ec,0x695dc6c8,0xa13e2c37,0x4a057a87,0x2ab756f0,0xa6b48f98,0xa8765500,0x68651c44,0x4252face,0xe1765e02,0xa52b540b +.long 0x16a0d2bb,0x4f922fc5,0x1a623499,0x0d5cc16c,0x57c62c8b,0x9241cf3a,0xfd1b667f,0x2f5e6961,0xf5a01797,0x5c15c70b,0x60956192,0x3d20b44d,0x071fdb52,0x04911b37,0x8d6f0f7b,0xf648f916 +.long 0xe60b7cf7,0x6dc1acaf,0x84a9d869,0x25860a50,0xe7ba8ac4,0x56fc6f09,0x6148d29e,0x828c5bd0,0xdc55ae5f,0xac6b435e,0xc0117411,0xa527f56c,0xfd24342c,0x94d5045e,0x70b67c0d,0x2c4c0a35 +.long 0xfac61d9a,0x027cc8b8,0xe3c6fe8a,0x7d25e062,0xe5bff503,0xe08805bf,0x6ff632f7,0x13271e6c,0x232f76a5,0x55dca6c0,0x701ef426,0x8957c32d,0xa10a5178,0xee728bcb,0xb62c5173,0x5ea60411 +.long 0xd0b8892b,0xfc4e964e,0x9301bb74,0x9ea17683,0xfcc48626,0x6265c5ae,0xbb3e9102,0xe60cf82e,0xd4df5531,0x57adf797,0x8deeefe2,0x235b59a1,0x3f306eb1,0x60adcf58,0x3d09492d,0x105c2753 +.long 0xb5def996,0x4090914b,0x233dd1e7,0x1cb69c83,0x9b3d5e76,0xc1e9c1d3,0xfccf6012,0x1f3338ed,0x2f5378a8,0xb1e95d0d,0x2f00cd21,0xacf4c2c7,0xeb5fe290,0x6e984240,0x248088ae,0xd66c038d +.long 0xf94d70cf,0x804d264a,0x7314bf7e,0xbdb802ef,0x4333ed02,0x8fb54de2,0x285635d9,0x740461e0,0x365e9383,0x4113b2c8,0x3fdef652,0xea762c83,0x47b956c1,0x4eec6e2e,0x65620fa4,0xa3d814be +.long 0xb4d8bc50,0x9ad5462b,0xa9195770,0x181c0b16,0x78412a68,0xebd4fe1c,0xc0dff48c,0xae0341bc,0x7003e866,0xb6bc45cf,0x8a24a41b,0xf11a6dea,0xd04c24c2,0x5407151a,0xda5b7b68,0x62c9d27d +.long 0x88cceff6,0x2e964235,0x8b07ed69,0x8594c54f,0xc84d0d0d,0x1578e73c,0xff532868,0x7b4e1055,0xb5ec995a,0xa348c0d5,0x14289a54,0xbf4b9d55,0x58fbd777,0x9ba155a6,0x1a84491d,0x186ed7a8 +.long 0x614c0900,0xd4992b30,0xbd00c24b,0xda98d121,0x7ec4bfa1,0x7f534dc8,0x37dc34bc,0x4a5ff674,0x1d7ea1d7,0x68c196b8,0x80a6d208,0x38cf2893,0xe3cbbd6e,0xfd56cd09,0x4205a5b6,0xec72e27e +.long 0xa44f77f7,0x15ea68f5,0xb43c52bc,0x7aa5f9fd,0x94f0e609,0x86ff676f,0x2e2d432b,0xa4cde963,0xeee470af,0x8cafa0c0,0x8a3f5ec8,0x84137d0e,0xfaa31231,0xebb40411,0x6f7f7ccf,0xa239c13f +.long 0xa8afd30b,0x32865719,0x8a826dce,0x86798328,0xc4a8fbe0,0xdf04e891,0xebf56ad3,0xbb6b6e1b,0x471f1ff0,0x0a695b11,0xbe15baf0,0xd76c3389,0xbe96c43e,0x018edb95,0x90794158,0xf2beaaf4 +.long 0xc3076a27,0x152db09e,0xe416545d,0x5e82908e,0x356d6f2e,0xa2c41272,0x31fd74e1,0xdc9c9642,0x519bf615,0x66ceb88d,0x05a2274e,0xe29ecd76,0xbf5e2fa0,0x3a0473c4,0x64284e67,0x6b6eb671 +.long 0xb88756dd,0xe8b97932,0xf17e3e61,0xed4e8652,0x3ee1c4a4,0xc2dd1499,0x597f8c0e,0xc0aaee17,0x6c168af3,0x15c4edb9,0xb39ae875,0x6563c7bf,0x20adb436,0xadfadb6f,0x9a042ac0,0xad55e8c9 +.long 0xb76da1f5,0x975a1ed8,0xa58acb94,0x10dfa466,0xac060282,0x8dd7f7e3,0x572a051e,0x6813e66a,0x350cb901,0xb4ccae1e,0x50cb7822,0xb653d656,0xdfab3b87,0x42484710,0x9b670fd0,0xcd7ee537 +.long 0x523b8bf6,0x0a50b12e,0x8f910c1b,0x8009eb5b,0x4a167588,0xf535af82,0xfb2a2abd,0x0f835f9c,0x2afceb62,0xf59b2931,0x169d383f,0xc797df2a,0x66ac02b0,0xeb3f5fb0,0xdaa2d0ca,0x029d4c6f +.long 0xafab4bc5,0xd4059bc1,0x56783247,0x833f5c6f,0x8d2d3605,0xb5346630,0xd34d8433,0x83387891,0xadd9419a,0xd973b30f,0xafe3fce8,0xbcca1099,0x0809aac6,0x08178315,0x540f0f11,0x01b7f21a +.long 0x909523c8,0x65c29219,0xa3a1c741,0xa62f648f,0x60c9e55a,0x88598d4f,0x0e4f347a,0xbce9141b,0x35f9b988,0x9af97d84,0x320475b6,0x0210da62,0x9191476c,0x3c076e22,0x44fc7834,0x7520dbd9 +.long 0xc1ab1bbd,0x6a6b2cfe,0xdc650938,0xef8a65be,0x805d7bc4,0x72855540,0xed11fdfd,0xda389396,0x74660876,0xa9d5bd36,0xb45dff35,0x11d67c54,0xa4f5da94,0x6af7d148,0xc0bbeb31,0xbb8d4c3f +.long 0xe0a1b12a,0x87a7ebd1,0x770ba95f,0x1e4ef88d,0xdc2ae9cb,0x8c33345c,0x01cc8403,0xcecf1276,0x1b39b80f,0x687c012e,0x35c33ba4,0xfd90d0ad,0x5c9661c2,0xa3ef5a67,0xe017429e,0x368fc88e +.long 0x196a2fa2,0xd30c6761,0xbd5b312e,0x931b9817,0x72f54a31,0xba01000c,0x66eaa541,0xa203d2c8,0x98939db3,0xf2abdee0,0x3e606c02,0xe37d6c2c,0x521ff643,0xf2921574,0xd7e2fca3,0x2781b3c4 +.long 0x7850ec06,0x664300b0,0x7d3a10cf,0xac5a38b9,0xe34ab39d,0x9233188d,0x5072cbb9,0xe77057e4,0xb59e78df,0xbcf0c042,0x1d97de52,0x4cfc91e8,0x3ee0ca4a,0x4661a26c,0xfb8507bc,0x5620a4c1 +.long 0x049f842c,0x4b44d4aa,0x1540e82b,0xceabc5d5,0x15c6f156,0x306710fd,0x63db1d72,0xbe5ae52b,0x334957f1,0x06f1e7e6,0x31144a70,0x57e388f0,0xdf96447b,0xfb69bb2f,0x73e38a12,0x0f78ebd3 +.long 0x2b7ce542,0xb8222605,0x7472bde1,0xe6d4ce99,0x09d2f4da,0x53e16ebe,0x53b92b2e,0x180ff42e,0x2c34a1c6,0xc59bcc02,0x422c46c2,0x3803d6f9,0x5c14a8a2,0x18aff74f,0x10a08b28,0x55aebf80 +.long 0x7135593f,0x66097d58,0x2be570cd,0x32e6eff7,0x2a8c860d,0x584e6a10,0xa2eb4163,0xcd185890,0x6d97e134,0x7ceae99d,0xdd8447ce,0xd42c6b70,0xb8c50273,0x59ddbb4a,0x3cf34e1e,0x03c612df +.long 0x04b6c5a0,0x84b9ca15,0x18f0e3a3,0x35216f39,0xbd986c00,0x3ec2d2bc,0xd19228fe,0x8bf546d9,0x4cd623c3,0xd1c655a4,0x502b8e5a,0x366ce718,0xeea0bfe7,0x2cfc84b4,0xcf443e8e,0xe01d5cee +.long 0x036520f8,0x8ec045d9,0x92d40e98,0xdfb3c3d1,0xcc559a04,0x0bac4cce,0x240ea6b1,0x35eccae5,0xf8a5a0ac,0x180b32db,0xeb699700,0x547972a5,0xca26bca0,0xa3765801,0xa647f25a,0x57e09d0e +.long 0x2fdd23cc,0xb956970e,0x5682e971,0xb80288bc,0x9ae86ebc,0xe6e6d91e,0x8c9f1939,0x0564c83f,0x39560368,0x551932a2,0x049c28e2,0xe893752b,0xa6a158c3,0x0b03cee5,0x04964263,0xe12d656b +.long 0x63e3bc1d,0x4b47554e,0x45044ff7,0xc719b6a2,0xe48daa07,0x4f24d30a,0xc8c1edc3,0xa3f37556,0x0700d360,0x9a47bf76,0x822ae4e2,0xbb1a1824,0x89f1fb4c,0x22e275a3,0x9968c5f5,0x72b1aa23 +.long 0xbe063f64,0xa75feaca,0xbce47a09,0x9b392f43,0x1ad07aca,0xd4241509,0x8d26cd0f,0x4b0c591b,0x92f1169a,0x2d42ddfd,0x4cbf2392,0x63aeb1ac,0x0691a2af,0x1de9e877,0xd98021da,0xebe79af7 +.long 0x40e50acf,0xcfdf2a4e,0xaf01d665,0xf0a98ad7,0x1831be1f,0xefb640bf,0x80e9ada0,0x6fe8bd2f,0x6cafbc91,0x94c103a1,0x8308e08c,0x170f8759,0x9780ff4f,0x5de2d2ab,0x45b201f2,0x666466bc +.long 0xf5b343bc,0x58af2010,0xf2f142fe,0x0f2e400a,0xa85f4bdf,0x3483bfde,0x03bfeaa9,0xf0b1d093,0xc7081603,0x2ea01b95,0x3dba1097,0xe943e4c9,0xb438f3a6,0x47be92ad,0xe5bf6636,0x00bb7742 +.long 0x824297b4,0x136b7083,0x5584455f,0x9d0e5580,0xf1c7d69e,0xab48cedc,0x2a256e76,0x53a9e481,0x65eb2413,0x0402b0e0,0x8fc407a7,0xdadbbb84,0x8d7f5492,0xa65cd5a4,0x74bae294,0x21d44293 +.long 0x3b5f1cc4,0x66917ce6,0xce872e62,0x37ae52ea,0x2905f244,0xbb087b72,0x1e6af74f,0x12077086,0x1058edea,0x4b644e49,0xb638ca1d,0x827510e3,0x6038591c,0x8cf2b704,0xfe635063,0xffc8b47a +.long 0x1b4d5e63,0x3ae220e6,0x9d961b4b,0xbd864742,0x9bd16bed,0x610c107e,0x1127147b,0x4270352a,0x64cfc50e,0x7d17ffe6,0x1e36cb42,0x50dee01a,0x35dc5f9a,0x068a7622,0xdf53f62c,0x9a08d536 +.long 0x6be5f7de,0x4ed71457,0xc2263c9e,0xd93006f8,0xcacacb36,0xe073694c,0x3ae118ab,0x2ff7a5b4,0xcd871236,0x3cce53f1,0xc2aa6d52,0xf156a39d,0xb198d76d,0x9cc5f271,0x81383d39,0xbc615b6f +.long 0xde3eee6b,0xa54538e8,0xab910d91,0x58c77538,0x58d278bd,0x31e5bdbc,0xb963acae,0x3cde4adf,0x5302169c,0xb1881fd2,0xa989ed8b,0x8ca60fa0,0xff96a0ee,0xa1999458,0xac6c283d,0xc1141f03 +.long 0x6dfafed3,0x7677408d,0x39661588,0x33a01653,0x0b726fa0,0x3c9c15ec,0x6c9b56da,0x090cfd93,0xa3c40af5,0xe34f4bae,0xd21129f1,0x3469eadb,0x1e207ce8,0xcc51674a,0xc83b1ef9,0x1e293b24 +.long 0x1e6c0bb4,0x17173d13,0x90776d35,0x19004695,0x6de6f922,0xe7980e34,0xf4dd9a22,0x873554cb,0xcbf18a51,0x0316c627,0x3032c081,0x4d93651b,0x3946834d,0x207f2771,0x30cdbf80,0x2c08d7b4 +.long 0x86df2a61,0x137a4fb4,0xecf7b4a2,0xa1ed9c07,0x7bd042ff,0xb2e460e2,0x5f62f5ec,0xb7f5e2fa,0xcc2423b7,0x7aa6ec6b,0xba63eea7,0x75ce0a7f,0xf250a6e1,0x67a45fb1,0xe53cdc9f,0x93bc919c +.long 0x871942df,0x9271f56f,0x7859ad66,0x2372ff6f,0x33cb1a78,0x5f4c2b96,0x5838aa83,0xe3e29101,0xe4e8110c,0xa7ed1611,0x330198ce,0x2a2d70d5,0x6720efe0,0xbdf132e8,0x66a471bf,0xe61a8962 +.long 0x825808bd,0x796d3a85,0x3fd6e902,0x51dc3cb7,0x916219d1,0x643c768a,0xa2ad7d32,0x36cd7685,0xb22922a4,0xe3db9d05,0xdba29660,0x6494c87e,0xbcd2ebc7,0xf0ac91df,0x45107f8d,0x4deb57a0 +.long 0xc3d12a73,0x42271f59,0xa5c2c51d,0x5f71687c,0x05797bcb,0xcb1f50c6,0xd6d34eb0,0x29ed0ed9,0x4683c2eb,0xe5fe5b47,0x97447c46,0x4956eeb5,0x71207167,0x5b163a43,0x0248c5ef,0x93fa2fed +.long 0x31f63950,0x67930af2,0x14caa2c9,0xa77797c1,0x27ac7e62,0x526e80ee,0x58b28aec,0xe1e6e626,0xb3c9fef0,0x636178b0,0x6d5f90be,0xaf7752e0,0xeece51cf,0x94ecaf18,0xca806e1f,0x2864d0ed +.long 0x97c69134,0x6de2e383,0xeb291293,0x5a42c316,0x6a60bae0,0xc7779219,0x6b7599d1,0xa24de346,0xb75d4941,0x49d374aa,0x2d501ff0,0x98900586,0xeb7974cf,0x9f16d40e,0xcdd8c115,0x1033860b +.long 0x2094cec3,0xb6c69ac8,0x403b770c,0x9976fb88,0x4859590d,0x1dea026c,0x8562d1fd,0xb6acbb46,0x44569d85,0x7cd6c461,0x97f0891d,0xc3190a36,0x48d5a17d,0xc6f53195,0xd749abc8,0x7d919966 +.long 0xdd1c8a20,0x65104837,0x2f683419,0x7e5410c8,0xbe94022e,0x958c3ca8,0x6145dac2,0x605c3197,0x01683d54,0x3fc07501,0x595b1234,0x1d7127c5,0x9481277f,0x10b8f87c,0xe65a1adb,0x677db2a8 +.long 0xddce3345,0xec2fccaa,0x012a4350,0x2a6811b7,0xac598bdc,0x96760ff1,0xd1bf4128,0x054d652a,0x92a21005,0x0a1151d4,0x33110fdf,0xad7f3971,0x1960100f,0x8c95928c,0x7bf03362,0x6c91c825 +.long 0xce309f06,0xc8c8b2a2,0xca27204b,0xfdb27b59,0x0848e32e,0xd223eaa5,0xe7bfaf1e,0xb93e4b2e,0x44aa3ded,0xc5308ae6,0xc015d573,0x317a666a,0x1a979707,0xc888ce23,0x0d5c4958,0xf141c1e6 +.long 0x61906373,0xb53b7de5,0xeb999595,0x858dbade,0xa59e5c36,0x8cbb47b2,0xdcf4e842,0x660318b3,0x12ba4b7a,0xbd161ccd,0xf8c8282a,0xf399daab,0xeeb2130d,0x1587633a,0xda38dd7d,0xa465311a +.long 0x64d3779b,0x5f75eec8,0xad64c171,0x3c5d0476,0x2a914428,0x87410371,0x90e2fc29,0x8096a891,0x23b3ebc2,0xd3d2ae9d,0xa580cfd6,0x90bdd6db,0xc5b01f6c,0x52dbb7f3,0xe102a2dc,0xe68eded4 +.long 0x99eb6df0,0x17785b77,0x7386b779,0x26c3cc51,0x6417a48e,0x345ed988,0x07d6ef31,0xe990b4e4,0x2586abba,0x0f456b7e,0x59c96e9a,0x239ca6a5,0xe2eb4206,0xe327459c,0xa002b90a,0x3a4c3313 +.long 0xf6a3f6fb,0x2a114806,0x85c251dd,0xad5cad2f,0xf5a784d3,0x92c1f613,0x349766d5,0xec7bfacf,0x3e23cb3b,0x04b3cd33,0xc5a64b2d,0x3979fe84,0x7e589106,0x192e2720,0xa15b527f,0xa60c43d1 +.long 0xbe7cf3a6,0x2dae9082,0xbc967274,0xcc86ba92,0xaea0a8a9,0xf28a2ce8,0x6ee988b3,0x404ca6d9,0x005921b8,0xfd7e9c5d,0x44e79bf9,0xf56297f1,0x0d75ddc2,0xa163b460,0xa1f2be87,0x30b23616 +.long 0xbfe50e2b,0x4b070d21,0xe1bfede1,0x7ef8cfd0,0x2aac4ae0,0xadba0011,0xb9ebd033,0x2a3e7d01,0xe38d9d1c,0x995277ec,0x9c5d2de3,0xb500249e,0xf13ca8c9,0x8912b820,0x877793af,0xc8798114 +.long 0xec3f1dec,0x19e6125d,0x911178da,0x07b1f040,0x904a6738,0xd93ededa,0x0bebedcd,0x55187a5a,0xeb329d41,0xf7d04722,0xf170b391,0xf449099e,0xca99f828,0xfd317a69,0x34a4976d,0x50c3db2b +.long 0x3757b392,0xe9ba7784,0xaa3ca05a,0x326caefd,0xf1e593d4,0x78e5293b,0x0d98fd13,0x7842a937,0x5f96b10d,0xe694bf96,0x06a8cd05,0x373a9df6,0xe8f0c7fc,0x997d1e51,0x63fd972e,0x1d019790 +.long 0x5499fb32,0x0064d858,0x77a8aeb7,0x7b67bad9,0x2d08eec5,0x1d3eb977,0xcbabae1d,0x5fc047a6,0xe54a64bb,0x0577d159,0xc43497e4,0x8862201b,0x2ce0608d,0xad6b4e28,0x0b167aac,0x8b687b7d +.long 0x8b2ecfa9,0x6ed4d367,0xa90c3c38,0x24dfe62d,0x3fe5c42b,0xa1862e10,0xd5732a9f,0x1ca73dca,0x76bb87ad,0x35f038b7,0xf242b81f,0x674976ab,0xb0fd90cd,0x4f2bde7e,0xa7fdf092,0x6efc172e +.long 0x92222f1f,0x3806b69b,0x6cf7ae70,0x5a2459ca,0xa85217ee,0x6789f69c,0xe3dc85ac,0x5f232b5e,0x48e9e516,0x660e3ec5,0x3197eb31,0x124b4e47,0xaafcca23,0x10a0cb13,0x8213224f,0x7bd63ba4 +.long 0x290a7f4f,0xaffad7cc,0x0286b461,0x6b409c9e,0xffa407af,0x58ab809f,0xc68ac073,0xc3122eed,0x4ef24d7e,0x17bf9e50,0x3e2a5811,0x5d929794,0x02902e01,0x519bc867,0x39c8a851,0x76bba5da +.long 0xda94951e,0xe9f9669c,0x66b8d418,0x4b6af58d,0x17d426a4,0xfa321074,0x9dde6027,0xc78e66a9,0x4a53b964,0x0516c083,0xff602330,0xfc659d38,0x58c5c897,0x0ab55e5c,0x838bc5df,0x985099b2 +.long 0xc52fc238,0x061d9efc,0x6ac1da3f,0x712b2728,0x9283fe08,0xfb658149,0xb8aaa2f7,0x4954ac94,0x7fb2e74f,0x85c0ada4,0xb89926b0,0xee8ba98e,0x23d1af5b,0xe4f9d37d,0xba9b015e,0x14ccdbf9 +.long 0x7bfe7178,0xb674481b,0x65405868,0x4e1debae,0xc48c867d,0x061b2821,0x513b30ea,0x69c15b35,0x36871088,0x3b4a1666,0x1220b1ff,0xe5e29f5d,0x233d9f4d,0x4b82bb35,0x18cdc675,0x4e076333 +.long 0xa3e6fced,0x0d53f5c7,0xf45fbdeb,0xe8cbbdd5,0x13339a70,0xf85c01df,0x142ceb81,0x0ff71880,0xbd70437a,0x4c4e8774,0xba0bda6a,0x5fb32891,0xf18bd26e,0x1cdbebd2,0x03a9d522,0x2f9526f1 +.long 0x92c4d684,0x40ce3051,0x7612efcd,0x8b04d725,0x6f9cae20,0xb9dcda36,0xf058856c,0x0edc4d24,0x85427900,0x64f2e6bf,0xdc09dfea,0x3de81295,0x379bf26c,0xd41b4487,0x6df135a9,0x50b62c6d +.long 0xc72dfe67,0xd4f8e3b4,0x90e19fdf,0xc416b0f6,0x4c13bd35,0x18b9098d,0x15b8cb9e,0xac11118a,0xf0062841,0xf598a318,0x89f356f4,0xbfe0602f,0x30177a0c,0x7ae3637e,0x61136537,0x34097747 +.long 0xd005832a,0x0db2fb5e,0x91042e4f,0x5f5efd3b,0xed70f8ca,0x8c4ffdc6,0xb52da9cc,0xe4645d0b,0xc9001d1f,0x9596f58b,0x4e117205,0x52c8f0bc,0xe398a084,0xfd4aa0d2,0x104f49de,0x815bfe3a +.long 0x23885e5f,0x97e5443f,0xe8433aab,0xf72f8f99,0xe4d4e604,0xbd00b154,0xe5e173ff,0xd0b35e6a,0x9164722d,0x57b2a048,0x88761ec8,0x3e3c665b,0x3da83832,0x6bdd1397,0x73dafe3b,0x3c8b1a1e +.long 0x54317cac,0x4497ace6,0x521771b3,0xbe600ab9,0xb0dfe8b8,0xb42e409e,0x3942310f,0x386a67d7,0x4431cc28,0x25548d8d,0x985dc524,0xa7cff142,0x93c4be32,0x4d60f5a1,0xd071c6e1,0x83ebd5c8 +.long 0xb1fd2b0b,0xba3a80a7,0x5bec33e8,0x9b3ad396,0x79743fb3,0xb3868d61,0xfdb462fa,0xcfd169fc,0x9ce0a6af,0xd3b499d7,0xe42d3ff8,0x55dc1cf1,0xc6c3e1b2,0x04fb9e6c,0x6f69a474,0x47e6961d +.long 0xe548b37b,0x54eb3acc,0x84d40549,0xb38e7542,0x7b341b4f,0x8c3daa51,0x690bf7fa,0x2f6928ec,0x86ce6c41,0x0496b323,0x10adadcd,0x01be1c55,0x4bb5faf9,0xc04e67e7,0xe15c9985,0x3cbaf678 +.long 0x50ca4247,0x8cd12145,0xe7dd30aa,0xba1aa47a,0xe58fee24,0x2f81ddf1,0xeec9b0e8,0x03452936,0x243aea96,0x8bdc3b81,0x15c3d0e5,0x9a2919af,0x10948361,0x9ea640ec,0x6e0bcccf,0x5ac86d5b +.long 0xc36cf440,0xf892d918,0xc939719c,0xaed3e837,0xc0218b64,0xb07b08d2,0xce9790dd,0x6f1bcbba,0x60919b8e,0x4a84d6ed,0x8ac1f9eb,0xd8900791,0x0dd5daef,0xf84941aa,0x67fd62c5,0xb22fe40a +.long 0x157f2db3,0x97e15ba2,0x8e28ca9c,0xbda2fc8f,0x37b9f454,0x5d050da4,0x2379d72e,0x3d57eb57,0xfb5ee997,0xe9b5eba2,0xe11538ca,0x01648ca2,0xf6327974,0x32bb76f6,0xff3f4bb7,0x338f14b8 +.long 0xd7ab9a2d,0x524d226a,0x7dfae958,0x9c00090d,0x8751d8c2,0x0ba5f539,0x3ab8262d,0x8afcbcdd,0xe99d043b,0x57392729,0xaebc943a,0xef51263b,0x20862935,0x9feace93,0xb06c817b,0x639efc03 +.long 0x66b4be7a,0x1fe054b3,0x84a37a1e,0x3f25a9de,0x78d75cd9,0xf39ef1ad,0x5062c1b5,0xd7b58f49,0xff563436,0x6f74f9a9,0xe8af51e7,0xf718ff29,0x15e97fec,0x5234d313,0x292f1c0a,0xb6a8e2b1 +.long 0x327720c1,0xa7f53aa8,0xba092cc8,0x956ca322,0x28746c4d,0x8f03d64a,0x66d0d392,0x51fe1782,0x3c832c80,0xd19b34db,0x6da2e3b4,0x60dccc5c,0x0a104ccc,0x245dd62e,0x620b21fd,0xa7ab1de1 +.long 0x3893d123,0xb293ae0b,0xb15ee71c,0xf7b75783,0x42a9468b,0x5aa3c614,0xdb15d744,0xd686123c,0xa7ab4116,0x8c616891,0xa4e6a459,0x6fcd72c8,0x77e5fad7,0xac219110,0x704fa46b,0xfb6a20e7 +.long 0x341d81dc,0xe839be7d,0x32148379,0xcddb6889,0xf7026ead,0xda6211a1,0xf4d1cc5e,0xf3b2575f,0xa7a73ae6,0x40cfc8f6,0x61d5b483,0x83879a5e,0x41a50ebc,0xc5acb1ed,0x3c07d8fa,0x59a60cc8 +.long 0xb1876262,0x1b73bdce,0x12af4ee9,0x2b0d79f0,0xd46e1d07,0x8bcf3b0b,0xe45d152f,0x17d6af9d,0x6d736451,0x73520461,0x56b0bf5a,0x43cbbd97,0xd5999b9d,0xb0833a5b,0xeb72e398,0x702614f0 +.long 0x59c3e9f8,0x0aadf01a,0xce6b3d16,0x40200e77,0xdeddafad,0xda22bdd3,0x310d72e1,0x76dedaf4,0x4bc2e88f,0x49ef807c,0x146dd5a5,0x6ba81291,0x7d8d59e9,0xa1a4077a,0x802db349,0x87b6a2e7 +.long 0x1b4e598e,0xd5679997,0x06fe4b1d,0xf499ef1f,0xfcb267c5,0x3978d3ae,0x235786d0,0xb582b557,0x1715cb07,0x32b3b2ca,0x8480241d,0x4c3de6a2,0xcb571ecd,0x63b5ffed,0xed2fe9a9,0xeaf53900 +.long 0xc3b81990,0xdec98d4a,0x9e0cc8fe,0x1cb83722,0xd2b427b9,0xfe0b0491,0xe983a66c,0x0f2386ac,0xb3291213,0x930c4d1e,0x59a62ae4,0xa2f82b2e,0xf93e89e3,0x77233853,0x11777c7f,0x7f8063ac +.long 0x59ad2877,0xff0eb567,0x9865c754,0x6f454642,0x236e9a84,0xe6fe701a,0x06e40fc3,0xc586ef16,0x24bafad9,0x3f62b6e0,0x64da906a,0xc8b42bd2,0xda3276a0,0xc98e1eb4,0x06cbf852,0x30d0e5fc +.long 0xe8b4dfd4,0x1b6b2ae1,0x8301cbac,0xd754d5c7,0x112a39ac,0x66097629,0x93ba4ab9,0xf86b5999,0x99f9d581,0x26c9dea7,0xc2fafeaa,0x0473b1a8,0x3b2505a5,0x1469af55,0xd6a43323,0x227d16d7 +.long 0xad3d97f9,0x3316f73c,0x1f137455,0x52bf3bb5,0x09954e7c,0x953eafeb,0xdd732411,0xa721dfed,0x141d4579,0xb4929821,0xaa3bd435,0x3411321c,0x17fa6015,0xafb355aa,0x18e42f0e,0xb4e7ef4a +.long 0x59371000,0x604ac97c,0x7f759c18,0xe1c48c70,0xa5db6b65,0x3f62ecc5,0x38a21495,0x0a78b173,0xbcc8ad94,0x6be1819d,0xd89c3400,0x70dc04f6,0xa6b4840a,0x462557b4,0x60bd21c0,0x544c6ade +.long 0x907a544b,0x6a00f24e,0x313da210,0xa7520dcb,0x11e4994b,0xfe939b75,0xbc275d70,0x918b6ba6,0x644be892,0xd3e5e0fc,0xfdaf6c42,0x707a9816,0xf15c13fe,0x60145567,0xe130a54a,0x4818ebaa +.long 0x58d2f767,0x28aad3ad,0xd7e7c773,0xdc5267fd,0xc3afcc98,0x4919cc88,0x2db8cd4b,0xaa2e6ab0,0xd0c63eaa,0xd46fec04,0x19ffa832,0xa1cb92c5,0xe43a631f,0x678dd178,0x3dc788b3,0xfb5ae1cd +.long 0x6e77de04,0x68b4fb90,0xf06dbb97,0x7992bcf0,0xc417c01d,0x896e6a13,0xb956be01,0x8d96332c,0x413aa2b9,0x902fc93a,0xfc98c8a5,0x99a4d915,0x565f1137,0x52c29407,0x21e4f281,0x4072690f +.long 0x02ff6072,0x36e607cf,0x8ad98cdc,0xa47d2ca9,0xf5f56609,0xbf471d1e,0xf264ada0,0xbcf86623,0xaa9e5cb6,0xb70c0687,0x17401c6c,0xc98124f2,0xd4a61435,0x8189635f,0xa9d98ea6,0xd28fb8af +.long 0x40c251f8,0xb9a67c2a,0xa2da44be,0x88cd5d87,0xe09b5423,0x437deb96,0x64287dc1,0x150467db,0xcdabb839,0xe161debb,0xf1839a3e,0xa79e9742,0x652d202b,0xbb8dd3c2,0xe9f97d96,0x7b3e67f7 +.long 0xb1cb6ac9,0x5aa5d78f,0xca1d0d45,0xffa13e8e,0x2ba5bf95,0x369295dd,0x39aff05e,0xd68bd1f8,0x26d783f2,0xaf0d86f9,0xfc3aafc1,0x543a59b3,0x7b7da97c,0x3fcf81d2,0xd25dee46,0xc990a056 +.long 0x519cce2c,0x3e6775b8,0xae13d863,0xfc9af71f,0x47c1605c,0x774a4a6f,0x2fd205e8,0x46ba4245,0xd3fd524d,0xa06feea4,0x6de1acc2,0x1e724641,0x334e2b42,0xf53816f1,0x922f0024,0x49e5918e +.long 0x65c7322d,0x439530b6,0xb3c1b3fb,0xcf12cc01,0x0172f685,0xc70b0186,0x1b58391d,0xb915ee22,0xa317db24,0x9afdf03b,0x17b8ffc4,0x87dec659,0xe4d3d050,0x7f46597b,0x006500e7,0x80a1c1ed +.long 0x78bf030e,0x84902a96,0x50560148,0xfb5e9c9a,0x63362426,0x6dae0a92,0xa9e30c40,0xdcaeecf4,0x518d0c6b,0xc0d887bb,0xcb985b9d,0x99181152,0xef7bc381,0xad186898,0x9ee46201,0x18168ffb +.long 0x2502753c,0x9a04cdaa,0x51407c41,0xbb279e26,0xf23564e5,0xeacb03aa,0x71e61016,0x18336582,0xeb809877,0x8684b8c4,0xea0e672e,0xb336e18d,0x34ee5867,0xefb601f0,0x1341cfd1,0x2733edbe +.long 0x26025c3c,0xb15e809a,0x9350df88,0xe6e981a6,0x8502fd8e,0x92376237,0x0c12be9b,0x4791f216,0x25f02425,0xb7256789,0x7a974443,0xec863194,0xfb41cc52,0x7c0ce882,0xf25c07f2,0xc266ff7e +.long 0x017025f3,0x3d4da8c3,0xfb9579b4,0xefcf628c,0x1f3716ec,0x5c4d0016,0x6801116e,0x9c27ebc4,0x1da1767e,0x5eba0ea1,0x47004c57,0xfe151452,0x8c2373b7,0x3ace6df6,0x5dbc37ac,0x75c3dffe +.long 0xddc925fc,0x3dc32a73,0x2f65ee0b,0xb679c841,0x451cbfeb,0x715a3295,0xf76e9a29,0xd9889768,0xb28ad247,0xec20ce7f,0x00894d79,0xe99146c4,0x9f5e3ea7,0x71457d7c,0x38030031,0x097b2662 +.long 0xcf9f82a8,0xdb7f6ae6,0x438f473a,0x319decb9,0x283856c3,0xa63ab386,0xb06a361b,0x13e3172f,0x7d5a006c,0x2959f8dc,0x75fba752,0x2dbc27c6,0x87c22c9e,0xc1227ab2,0x71a268b2,0x06f61f75 +.long 0x04779ce2,0x1b6bb971,0x0aadcb1d,0xaca83812,0xaeaab2d5,0x297ae0bc,0x5bfb9f13,0xa5c14ee7,0xf17a62c7,0xaa00c583,0x173759f6,0x39eb962c,0x86c9a88f,0x1eeba1d4,0xdf016c5e,0x0ab6c37a +.long 0xa28a0749,0xa2a147db,0xee519165,0x246c20d6,0xd3810715,0x5068d1b1,0x748160b9,0xb1e7018c,0xf380ff62,0x03f5b1fa,0xf3cb2c1e,0xef7fb1dd,0xfc91a7da,0xeab539a8,0xf3f9b561,0x83ddb707 +.long 0xfe7df7a4,0xc550e211,0x063f6f40,0xa7cd07f2,0x2976879c,0xb0de3635,0xe55741da,0xb5f83f85,0xf3d8ac3d,0x4ea9d25e,0x62819f02,0x6fe2066f,0xcef4a564,0x4ab2b9c2,0x5ffa2de3,0x1e155d96 +.long 0xc3a72d00,0x0eb0a19b,0x8513c31b,0x4037665b,0x04c64637,0x2fb2b6bf,0x08cdc639,0x45c34d6e,0xf01fd796,0x56f1e10f,0xfe3667b8,0x4dfb8101,0x9021d0c0,0xe0eda253,0x8a06c6ab,0x7a94e9ff +.long 0xbb9aa882,0x2d3bb0d9,0xec05fd10,0xea20e4e5,0x1a1ca64e,0xed7eeb5f,0xc6327cbd,0x2fa6b43c,0x3aa91121,0xb577e3cf,0x3a34079b,0x8c6bd5ea,0x60e02fc0,0xd7e5ba39,0x90141bf8,0xf16dd2c3 +.long 0x80101b98,0xb57276d9,0xb82f0f66,0x760883fd,0x4bc3eff3,0x89d7de75,0x5dc2ab40,0x03b60643,0xe05beeac,0xcd6e53df,0xbc3325cd,0xf2f1e862,0x774f03c3,0xdd0f7921,0x4552cc1b,0x97ca7221 +.long 0x1cd19f72,0x5a0d6afe,0xf183fbeb,0xa20915dc,0x832c403c,0x9fda4b40,0xbe425442,0x32738edd,0xb5eccf1a,0x469a1df6,0x28bbe1f0,0x4b5aff42,0x570dfc93,0x31359d7f,0xf0088628,0xa18be235 +.long 0xb00ed3a9,0xa5b30fba,0x73cdf8be,0x34c61374,0xabc56797,0x2c5c5f46,0xb82a8ae2,0x5cecf93d,0xa968fbf0,0x7d3dbe41,0x1a5c7f3d,0xd23d4583,0xc087a9c7,0xf28f69a0,0x474471ca,0xc2d75471 +.long 0x4eb732ec,0x36ec9f4a,0xb1ca6bed,0x6c943bbd,0xf2457892,0xd64535e1,0xf7e2ac06,0x8b84a8ea,0x2499dd5f,0xe0936cd3,0x0ed04e57,0x12053d7e,0xe4305d9d,0x4bdd0076,0x1f67f0a2,0x34a527b9 +.long 0x9cec46ea,0xe79a4af0,0x658b9bc7,0xb15347a1,0x35af2f75,0x6bd2796f,0x4051c435,0xac957990,0xc33a655d,0x2669dda3,0x88514aa3,0x5d503c2e,0x3753dd41,0xdfa11337,0x0b754f78,0x3f054673 +.long 0x496125bd,0xbf185677,0x3775006c,0xfb0023c8,0x3a037899,0xfa0f072f,0x0e4aea57,0x4222b6eb,0x7866d25a,0x3dde5e76,0x4837aa6f,0xb6eb04f8,0x2cf1cdb8,0x5315591a,0x2d4e683c,0x6dfb4f41 +.long 0x48ee1f3a,0x7e923ea4,0x05a2afd5,0x9604d9f7,0x40ea4948,0xbe1d4a33,0xb44cbd2f,0x5b45f1f4,0x4acc757e,0x5faf8376,0x63d68ff7,0xa7cf9ab8,0xdf0e404b,0x8ad62f69,0x12bdafdf,0xd65f33c2 +.long 0xa377b14e,0xc365de15,0x8e39f60c,0x6bf5463b,0x2ce68148,0x62030d2d,0xe6f843a8,0xd95867ef,0xef5ab017,0xd39a0244,0x4ab55d12,0x0bd2d8c1,0x41639169,0xc9503db3,0xf7660c8a,0x2d4e25b0 +.long 0xe224c5d7,0x760cb3b5,0x68616919,0xfa3baf8c,0x8d142552,0x9fbca113,0x7669ebf5,0x1ab18bf1,0x9bdf25dd,0x55e6f53e,0xcb6cd154,0x04cc0bf3,0x95e89080,0x595bef49,0x104a9ac1,0xfe9459a8 +.long 0xcce9bb32,0xad2d89ca,0xf7de8285,0xddea65e1,0xb351bd4b,0x62ed8c35,0x0c0e19a7,0x4150ff36,0x345f4e47,0x86e3c801,0x203a266c,0x3bf21f71,0x855b1f13,0x7ae110d4,0x07262517,0x5d6aaf6a +.long 0x813d28f1,0x1e0f12e1,0x7ad7a523,0x6000e11d,0xc744a17b,0xc7d8deef,0x14c05a00,0x1e990b48,0x93e976d5,0x68fddaee,0x46610d63,0x696241d1,0x893dda88,0xb204e7c3,0x6a3a6946,0x8bccfa65 +.long 0xc5cd1411,0xb59425b4,0xff3658b1,0x701b4042,0x4784cf93,0xe3e56bca,0x8fe68d60,0x27de5f15,0xf8d53f19,0x4ab9cfce,0xa40a730d,0xddb10311,0x4eee0a8a,0x6fa73cd1,0x5249719d,0xfd548748 +.long 0xa8123ef0,0x49d66316,0xe7f95438,0x73c32db4,0x0d9e7854,0x2e2ed209,0x9d9f0507,0xf98a9329,0x0c6aa20a,0xc5d33cf6,0x75279bb2,0x9a32ba14,0x774a7307,0x7e3202cb,0xe8c42dbd,0x64ed4bc4 +.long 0xd4caed0d,0xc20f1a06,0x171d22b3,0xb8021407,0xd13268d7,0xd426ca04,0x25f4d126,0x92377007,0x71f21a85,0x4204cbc3,0xf82369ba,0x18461b7a,0x3fc858f9,0xc0c07d31,0xe2bab569,0x5deb5a50 +.long 0xd5eea89e,0xd5959d46,0x08437f4b,0xfdff8424,0x3cfe254f,0xf21071e4,0x95468321,0x72417696,0x102cae3e,0x5d8288b9,0xf1965dff,0x2d143e3d,0xa078d847,0x00c9a376,0x26028731,0x6fc0da31 +.long 0xe45083a2,0xa2baeadf,0x5e5b4bcd,0x66bc7218,0xd04b8e7f,0x2c826442,0x6c4b586b,0xc19f5451,0x5b7eeed5,0x60182c49,0x7aa9dfa1,0xd9954ecd,0xc73884ad,0xa403a8ec,0x9bb39041,0x7fb17de2 +.long 0xabb020e8,0x694b64c5,0x19c4eec7,0x3d18c184,0x1c4793e5,0x9c4673ef,0x056092e6,0xc7b8aeb5,0xf0f8c16b,0x3aa1ca43,0xd679b2f6,0x224ed5ec,0x55a205c9,0x0d56eeaf,0x4b8e028b,0xbfe115ba +.long 0x3927f4fe,0x97e60849,0x759aa7c5,0xf91fbf94,0x6be90a51,0x985af769,0x78ccb823,0xc1277b78,0xe7a75952,0x395b656e,0x928da5f5,0x00df7de0,0x4ca4454f,0x09c23175,0x7aa2d3c1,0x4ec971f4 +.long 0xe75d9ccc,0x45c3c507,0x3dc90306,0x63b7be8a,0x5db44bdc,0x37e09c66,0x6841c6a2,0x50d60da1,0x08df1b12,0x6f9b65ee,0x7ff089df,0x38734879,0x3fe8013d,0x9c331a66,0x5f42fcc8,0x017f5de9 +.long 0xe8e57567,0x43077866,0xf9fcdb18,0xc9f781ce,0x9b12e174,0x38131dda,0x8a03752a,0x25d84aa3,0x4d0c0ce2,0x45e09e09,0x92bebba5,0x1564008b,0xa87284c7,0xf7e8ad31,0x97e7bbaa,0xb7c4b46c +.long 0x97acf4ec,0x3e22a7b3,0x5ea8b640,0x0426c400,0x4e969285,0x5e3295a6,0xa6a45670,0x22aabc59,0x5f5942bc,0xb929714c,0xfa3182ed,0x9a6168bd,0x104152ba,0x2216a665,0xb6926368,0x46908d03 +.long 0x5a1251fb,0xa9f5d874,0xc72725c7,0x967747a8,0x31ffe89e,0x195c33e5,0xe964935e,0x609d210f,0x2fe12227,0xcafd6ca8,0x0426469d,0xaf9b5b96,0x5693183c,0x2e9ee04c,0xc8146fef,0x1084a333 +.long 0xaed1d1f7,0x96649933,0x50563090,0x566eaff3,0xad2e39cf,0x345057f0,0x1f832124,0x148ff65b,0xcf94cf0d,0x042e89d4,0x520c58b3,0x319bec84,0x5361aa0d,0x2a267626,0x8fbc87ad,0xc86fa302 +.long 0x5c8b06d5,0xfc83d2ab,0xfe4eac46,0xb1a785a2,0x846f7779,0xb99315bc,0xef9ea505,0xcf31d816,0x15d7dc85,0x2391fe6a,0xb4016b33,0x2f132b04,0x181cb4c7,0x29547fe3,0x650155a1,0xdb66d8a6 +.long 0xadc1696f,0x6b66d7e1,0x0acd72d0,0x98ebe593,0xcc1b7435,0x65f24550,0xb4b9a5ec,0xce231393,0xdb067df9,0x234a22d4,0xcaff9b00,0x98dda095,0x6100c9c1,0x1bbc75a0,0x939cf695,0x1560a9c8 +.long 0x99e0925f,0xcf006d3e,0x6322375a,0x2dd74a96,0xb56af5ba,0xc58b446a,0xe0b9b4f1,0x50292683,0x1aeaffa3,0xe2c34cb4,0x9b9587c1,0x8b17203f,0xead1350c,0x6d559207,0xfb7f9604,0x2b66a215 +.long 0xfe51bf74,0x0850325e,0x5e460094,0x9c4f579e,0x76da2f25,0x5c87b92a,0x6febef33,0x889de4e0,0x646083ce,0x6900ec06,0xbfe12773,0xbe2a0335,0xc5344110,0xadd1da35,0xb802cd20,0x757568b7 +.long 0x00f7e6c8,0x75559779,0x0facd2f0,0x38e8b94f,0x03fde375,0xfea1f3af,0x75881dfc,0x5e11a1d8,0xc1e2f2ef,0xb3a6b02e,0xc605a6c5,0x193d2bbb,0x339a0b2d,0x325ffeee,0x9e0c8846,0x27b6a724 +.long 0xf1c367ca,0xe4050f1c,0xc90fbc7d,0x9bc85a9b,0xe1a11032,0xa373c4a2,0xad0393a9,0xb64232b7,0x167dad29,0xf5577eb0,0x94b78ab2,0x1604f301,0xe829348b,0x0baa94af,0x41654342,0x77fbd8dd +.long 0xb964e39a,0xdab50ea5,0xd0d3c76e,0xd4c29e3c,0x56d11964,0x80dae67c,0xe5ffcc2f,0x7307a8bf,0x91708c3b,0x65bbc1aa,0x28bf0eeb,0xa151e62c,0x6fa34db7,0x6cb53381,0xa29403a8,0x5139e05c +.long 0x94a7cd2e,0x6ff651b4,0x0699336c,0x5671ffd1,0x979a896a,0x6f5fd2cc,0xd8148cef,0x11e893a8,0x65cf7b10,0x988906a1,0xc50d8485,0x81b67178,0x8a35b3de,0x7c0deb35,0xc1d29799,0x423ac855 +.long 0xdac50b74,0xaf580d87,0x5869734c,0x28b2b89f,0x874e28fb,0x99a3b936,0x25f3f73a,0xbb2c9190,0x84a9d5b7,0x199f6918,0x7e770374,0x7ebe2325,0x0738efe2,0xf442e107,0xcf9082d2,0xcf9f3f56 +.long 0x09618708,0x719f69e1,0xc183f9b1,0xcc9e8364,0x366a21af,0xec203a95,0x068b141f,0x6aec5d6d,0x994f04e9,0xee2df78a,0x271245b0,0xb39ccae8,0x97e43f4f,0xb875a4a9,0xdb2cea98,0x507dfe11 +.long 0x489b03e9,0x4fbf81cb,0x6ec414fa,0xdb86ec5b,0xf51b3ae5,0xfad444f9,0x1914e3fe,0xca7d33d6,0x0ae6c4d0,0xa9c32f5c,0x73969568,0xa9ca1d1e,0x1aa7467e,0x98043c31,0xe21b5ac6,0xe832e75c +.long 0x5232123d,0x314b7aea,0x65ae86db,0x08307c8c,0xaa4668ed,0x06e7165c,0xb4d3ec39,0xb170458b,0xc19bb986,0x4d2e3ec6,0xae0304ed,0xc5f34846,0x6c9f9722,0x917695a0,0x4cab1c0a,0x6c7f7317 +.long 0x9d6d2e8b,0x6295940e,0x549f7c97,0xd318b8c1,0x97713885,0x22453204,0xa8a440fe,0x468d834b,0xbfba796e,0xd81fe5b2,0x6d71f116,0x152364db,0xb5b66e53,0xbb8c7c59,0x2641a192,0x0b12c61b +.long 0xfcf0a7fd,0x31f14802,0x5488b01e,0x42fd0789,0x9952b498,0x71d78d6d,0x07ac5201,0x8eb572d9,0x4d194a88,0xe0a2a44c,0xba017e66,0xd2b63fd9,0xf888aefc,0x78efc6c8,0x4a881a11,0xb76f6bda +.long 0xb46c2397,0x187f314b,0x5ded2819,0x004cf566,0x38764d34,0xa9ea5704,0x78084709,0xbba45217,0x1171121e,0x06474571,0xe7c9b671,0xad7b7eb1,0x730f7507,0xdacfbc40,0xc7ad7bd1,0x178cd8c6 +.long 0xb2a67238,0xbf0be101,0xaf9c14f2,0x3556d367,0xa5662075,0x104b7831,0x79d9e60a,0x58ca59bb,0xa569a73b,0x4bc45392,0x5698f6c9,0x517a52e8,0xaeadd755,0x85643da5,0x2a581b84,0x1aed0cd5 +.long 0x80af1372,0xb9b4ff84,0xf1ba5d1f,0x244c3113,0xf5f98d31,0x2a5dacbe,0x4375bc2a,0x2c3323e8,0x5594b1dd,0x17a3ab4a,0xceb4797e,0xa1928bfb,0xe4886a19,0xe83af245,0x72b5a74a,0x8979d546 +.long 0x19f9e967,0xa0f726bc,0xe8fbbf4e,0xd9d03152,0xb7707d40,0xcfd6f51d,0x63f6e6e0,0x633084d9,0x55667eaf,0xedcd9cdc,0x2e44d56f,0x73b7f92b,0x4e962b14,0xfb2e39b6,0xf671fcbf,0x7d408f6e +.long 0x164a89bb,0xcc634ddc,0x3ef3bd05,0x74a42bb2,0x428decbb,0x1280dbb2,0x402c8596,0x6103f6bb,0x355a5752,0xfa2bf581,0x00946674,0x562f96a8,0x6da0223b,0x4e4ca16d,0x28d3aa25,0xfe47819f +.long 0xf8dfcf8a,0x9eea3075,0x95669825,0xa284f0aa,0x867d3fd8,0xb3fca250,0x269d691e,0x20757b5f,0x93b8a5de,0xf2c24020,0xebc06da6,0xd3f93359,0xb2739c33,0x1178293e,0xbcd686e5,0xd2a3e770 +.long 0xcd941534,0xa76f49f4,0xe3c71c0e,0x0d37406b,0x3b97f7e3,0x172d9397,0xbd7fd0de,0xec17e239,0x6f496ba2,0xe3290551,0x36ad50e7,0x6a693172,0x83e7eff5,0xc4e539a2,0x18e1b4cf,0x752737e7 +.long 0x68af43ee,0xa2f7932c,0x703d00bd,0x5502468e,0x2fb061f5,0xe5dc978f,0x28c815ad,0xc9a1904a,0x470c56a4,0xd3af538d,0x193d8ced,0x159abc5f,0x20108ef3,0x2a37245f,0x223f7178,0xfa17081e +.long 0x10c8c0f5,0x27b0fb2b,0x40650547,0x2102c3ea,0x8ac3bfa7,0x594564df,0x509dad96,0x98102033,0xf1d18a13,0x6989643f,0xd7fc5af0,0x35eebd91,0xfaeaafd8,0x078d096a,0xdef3de98,0xb7a89341 +.long 0xecf2a73a,0x2a206e8d,0x8e551994,0x066a6397,0xb98d53a2,0x3a6a088a,0x2d1124aa,0x0ce7c67c,0x759a113c,0x48cec671,0x4f6f67fa,0xe3b373d3,0xfd36727b,0x5455d479,0xa13c0d81,0xe5a428ee +.long 0x1c86682b,0xb853dbc8,0xb8d02b2a,0xb78d2727,0x8ebc329a,0xaaf69bed,0x293b2148,0xdb6b40b3,0xb8c4961f,0xe42ea77d,0x20e5e0ab,0xb1a12f7c,0x79e8b05e,0xa0ec5274,0xfab60a80,0x68027391 +.long 0x16b1bd5e,0x6bfeea5f,0x4de30ad3,0xf957e420,0x6a353b9e,0xcbaf664e,0x26d14feb,0x5c873312,0xb65f57cb,0x4e87f98c,0x5e0cdd41,0xdb60a621,0xa6881440,0x67c16865,0x46ab52aa,0x1093ef1a +.long 0x3f4ece64,0xc095afb5,0x7604551a,0x6a6bb02e,0x0b26b8cd,0x55d44b4e,0xf971268a,0xe5f9a999,0x11a7de84,0xc08ec425,0xfda469dd,0x83568095,0x6c6c90a2,0x737bfba1,0xbe229831,0x1cb9c4a0 +.long 0xbb2eec64,0x93bccbba,0xda03adbe,0xa0c23b64,0xe0e86ac4,0x5f7aa00a,0xfc1401e6,0x470b941e,0x9df43574,0x5ad8d679,0x0f65d810,0x4ccfb8a9,0xaa7fbd81,0x1bce80e3,0x9508d20a,0x273291ad +.long 0x42a92806,0xf5c4b46b,0xa86ab44a,0x810684ec,0xca0bc9f8,0x4591640b,0x5c4b6054,0xb5efcdfc,0x6e9edd12,0x16fc8907,0xd4d792f9,0xe29d0b50,0x9b03116d,0xa45fd01c,0xc81765a4,0x85035235 +.long 0xb4b4b67c,0x1fe2a9b2,0xe8020604,0xc1d10df0,0xbc8058d8,0x9d64abfc,0x712a0fbb,0x8943b9b2,0x3b3def04,0x90eed914,0x4ce775ff,0x85ab3aa2,0x7bbc9040,0x605fd4ca,0xe2c75dfb,0x8b34a564 +.long 0x10358560,0x41ffc94a,0x9e5c28aa,0x2d8a5072,0x4cc7eb15,0xe915a0fc,0x8f6d0f5d,0xe9efab05,0xd19e9b91,0xdbab47a9,0x0276154c,0x8cfed745,0x2cfede0d,0x154357ae,0x19f5a4ef,0x520630df +.long 0xe382360f,0x25759f7c,0x88bf5857,0xb6db05c9,0x6c58d46c,0x2917d61d,0xfd20cb7a,0x14f8e491,0x11c20340,0xb68a727a,0xaf7ccbb6,0x0386f86f,0xfee09a20,0x5c8bc6cc,0xbb7eea35,0x7d76ff4a +.long 0xdb15be7a,0xa7bdebe7,0xd89f0302,0x67a08054,0xc1193364,0x56bf0ea9,0x62837ebe,0xc8244467,0x20d841b8,0x32bd8e8b,0xdbb8a54f,0x127a0548,0x63b20236,0x83dd4ca6,0x203491fa,0x87714718 +.long 0xaa8a5288,0x4dabcaaa,0xaf23a1c9,0x91cc0c8a,0x3f220e0c,0x34c72c6a,0x1232144a,0xbcc20bdf,0xa20ede1b,0x6e2f42da,0x74a00515,0xc441f00c,0x734b8c4b,0xbf46a5b6,0x7b56c9a4,0x57409503 +.long 0xe4585d45,0x9f735261,0x6734e642,0x9231faed,0xbe70ee6c,0x1158a176,0x7c3501bf,0x35f1068d,0xa2d26115,0x6beef900,0xef0afee3,0x649406f2,0xbc2420a1,0x3f43a60a,0xd5aee4ac,0x509002a7 +.long 0x3ff3571b,0xb46836a5,0x837927c1,0x24f98b78,0x4533c716,0x6254256a,0xd07ee196,0xf27abb0b,0x5c6d5bfd,0xd7cf64fc,0xf0cd7a77,0x6915c751,0x8798f534,0xd9f59012,0xf81d8b5f,0x772b0da8 +.long 0x2e03fa69,0x1244260c,0x3be1a374,0x36cf0e3a,0xef06b960,0x6e7c1633,0x671f90f6,0xa71a4c55,0x33c673db,0x7a941251,0x73e8c131,0xc0bea510,0xd4f6c734,0x61a8a699,0x341ed001,0x25e78c88 +.long 0x8e2f7d90,0x5c18acf8,0x77be32cd,0xfdbf33d7,0xd2eb5ee9,0x0a085cd7,0xb3201115,0x2d702cfb,0x85c88ce8,0xb6e0ebdb,0x1e01d617,0x23a3ce3c,0x567333ac,0x3041618e,0x157edb6b,0x9dd0fd8f +.long 0xb57872b8,0x27f74702,0x657d5fe1,0x2ef26b4f,0x57cf3d40,0x95426f0a,0x65a6067a,0x847e2ad1,0x09996a74,0xd474d9a0,0x2a26115c,0x16a56acd,0xd16f4d43,0x02a615c3,0xaadb85b7,0xcc3fc965 +.long 0xce07d1b0,0x386bda73,0x58ad4178,0xd82910c2,0xcd2617f4,0x124f82cf,0xef691770,0xcc2f5e8d,0xb8c30ccc,0x82702550,0x1a8e575a,0x7b856aea,0xb1ab9459,0xbb822fef,0xec24e38e,0x085928bc +.long 0xba8f4b4d,0x5d0402ec,0x00b4d58b,0xc07cd4ba,0x29227e7a,0x5d8dffd5,0x31bf386f,0x61d44d0c,0x135e6f4d,0xe486dc2b,0xe79410ef,0x680962eb,0xf10088b5,0xa61bd343,0xe2e28686,0x6aa76076 +.long 0x8fb98871,0x80463d11,0xbbc76aff,0xcb26f5c3,0xfbe03614,0xd4ab8edd,0xc0cf2dee,0xc8eb579b,0xc93bae41,0xcc004c15,0x3aeca3b2,0x46fbae5d,0x0f1e9ab1,0x671235cf,0x9ec285c1,0xadfba934 +.long 0xf216c980,0x88ded013,0xf79e0bc1,0xc8ac4fb8,0xfb97a237,0xa29b89c6,0x9922d8e7,0xb697b780,0xddb945b5,0x3142c639,0xe094c3a9,0x447b06c7,0x72266c90,0xcdcb3642,0xa9385046,0x633aad08 +.long 0xb57c6477,0xa36c936b,0xe94dbcc6,0x871f8b64,0xa591a67b,0x28d0fb62,0xc1d926f5,0x9d40e081,0xf2d84b5a,0x3111eaf6,0xa565b644,0x228993f9,0x2c83188b,0x0ccbf592,0x3df3e197,0xf87b30ab +.long 0x7642bca8,0xb8658b31,0x52800f17,0x1a032d7f,0x79bf9445,0x051dcae5,0x54a2e253,0xeba6b8ee,0xd4485692,0x5c8b9cad,0x8986e9be,0x84bda40e,0x2f0db448,0xd16d16a4,0xa14d4188,0x8ec80050 +.long 0x98fa7aaa,0xb2b26107,0xf073aa4e,0x41209ee4,0xf2d6b19b,0xf1570359,0xfc577caf,0xcbe6868c,0x32c04dd3,0x186c4bdc,0xcfeee397,0xa6c35fae,0xf086c0cf,0xb4a1b312,0xd9461fe2,0xe0a5ccc6 +.long 0x1536189f,0xc32278aa,0xba6df571,0x1126c55f,0xb194560e,0x0f71a602,0x324bd6e1,0x8b2d7405,0x3738be71,0x8481939e,0x1a4d97a9,0xb5090b1a,0xf05ba915,0x116c65a3,0xaae448aa,0x21863ad3 +.long 0xa7aae5d3,0xd24e2679,0x0de5c1c4,0x7076013d,0xbb05b629,0x2d50f8ba,0x6e66efbb,0x73c1abe2,0xf2488af7,0xefd4b422,0x663ba575,0xe4105d02,0x53a69457,0x7eb60a8b,0xc945973b,0x62210008 +.long 0x77a50ec6,0xfb255478,0x0a37a72c,0xbf0392f7,0x4be18e7a,0xa0a7a19c,0x25b1e0af,0x90d8ea16,0xef953f57,0x7582a293,0xbdc5465a,0x90a64d05,0xe2510717,0xca79c497,0x18cb641f,0x560dbb7c +.long 0x4b66abfb,0x1d8e3286,0x59030900,0xd26f52e5,0x5584941a,0x1ee3f643,0x569f5958,0x6d3b3730,0x4789dba5,0x9ff2a62f,0x72b5c9b7,0x91fcb815,0x6c8f9a0e,0xf446cb7d,0x39b7ecb5,0x48f625c1 +.long 0x1c6219b8,0xbabae801,0x28ac2f23,0xe7a562d9,0x26e20588,0xe1b48732,0x775af051,0x06ee1cad,0xfaff79f7,0xda29ae43,0x652ee9e0,0xc141a412,0x195f4bd0,0x1e127f6f,0x072f34f8,0x29c6ab4f +.long 0x30448112,0x7b7c1477,0xe4a38656,0x82b51af1,0x2f315010,0x2bf2028a,0x6ea88cd4,0xc9a4a01f,0x257e5818,0xf63e95d8,0xb4519b16,0xdd8efa10,0x0da910bf,0xed8973e0,0x5c0fe4a9,0xed49d077 +.long 0xb7caee1e,0xac3aac5e,0xa7f4da57,0x1033898d,0x5c6669b9,0x42145c0e,0xc1aa2aa0,0x42daa688,0x1a1d885a,0x629cc15c,0xf4b76817,0x25572ec0,0x9c8f8f28,0x8312e435,0x81965490,0x8107f8cd +.long 0x6fa6110c,0x516ff3a3,0xfb93561f,0x74fb1eb1,0x8457522b,0x6c0c9047,0x6bb8bdc6,0xcfd32104,0xcc80ad57,0x2d6884a2,0x86a9b637,0x7c27fc35,0xadf4e8cd,0x3461baed,0x617242f0,0x1d56251a +.long 0xc955bef4,0x0b80d209,0x06adb047,0xdf02cad2,0x5ec74fee,0xf0d7cb91,0x1111ba44,0xd2503375,0xdf53cb36,0x9671755e,0x3368551b,0x54dcb612,0xc8a025a4,0x66d69aac,0xe77ef445,0x6be946c6 +.long 0xa995e094,0x719946d1,0xe51e04d8,0x65e848f6,0x6a1e3113,0xe62f3300,0x501de503,0x1541c7c1,0xf4acfade,0x4daac9fa,0x44cd0b71,0x0e585897,0x0a51cd77,0x544fd869,0x0031016d,0x60fc20ed +.long 0xa4276867,0x58b404ec,0x34f34993,0x46f6c3cc,0xc636e5bd,0x477ca007,0x7c458b47,0x8018f5e5,0xe47b668f,0xa1202270,0xee14f203,0xcef48ccd,0x62ff9b4d,0x23f98bae,0xc589eddd,0x55acc035 +.long 0x64db4444,0x3fe712af,0xbecdd480,0x19e9d634,0xa930978a,0xe08bc047,0xa1280733,0x2dbf24ec,0x2cd706b2,0x3c0ae38c,0x359017b9,0x5b012a5b,0x72e0f5ae,0x3943c38c,0x57176fa3,0x786167ea +.long 0x594881dc,0xe5f9897d,0xcfb820c1,0x6b5efad8,0xd55018de,0xb2179093,0x0bac56ce,0x39ad7d32,0x2cfc0e81,0xb55122e0,0xf6d89daa,0x117c4661,0xcb64fa09,0x362d01e1,0x3e9c4ddd,0x6a309b4e +.long 0xabea49b1,0xfa979fb7,0x10e2c6c5,0xb4b1d27d,0x23afde7a,0xbd61c2c4,0x9786d358,0xeb6614f8,0x7f6f7459,0x4a5d816b,0x09360e7b,0xe431a44f,0xc309914c,0x8c27a032,0xcaede3d8,0xcea5d68a +.long 0x3a0a3f95,0x3668f665,0x7ceba27b,0x89369416,0xe4728fe9,0x89981fad,0x8a093562,0x7102c8a0,0x235d21c8,0xbb80310e,0xbefb7f7b,0x505e55d1,0x12958a67,0xa0a90811,0x4d851fef,0xd67e106a +.long 0x431dd80e,0xb84011a9,0x73306cd9,0xeb7c7cca,0xd1b3b730,0x20fadd29,0xfe37b3d3,0x83858b5b,0xb6251d5c,0xbf4cd193,0x1352d952,0x1cca1fd3,0x90fbc051,0xc66157a4,0x89b98636,0x7990a638 +.long 0x87dec0e1,0xe5aa692a,0xf7b39d00,0x010ded8d,0x54cfa0b5,0x7b1b80c8,0xa0f8ea28,0x66beb876,0x3476cd0e,0x50d7f531,0xb08d3949,0xa63d0e65,0x53479fc6,0x1a09eea9,0xf499e742,0x82ae9891 +.long 0x5ca7d866,0xab58b910,0x3adb3b34,0x582967e2,0xcceac0bc,0x89ae4447,0x7bf56af5,0x919c667c,0x60f5dcd7,0x9aec17b1,0xddcaadbc,0xec697b9f,0x463467f5,0x0b98f341,0xa967132f,0xb187f1f7 +.long 0x214aeb18,0x90fe7a1d,0x741432f7,0x1506af3c,0xe591a0c4,0xbb5565f9,0xb44f1bc3,0x10d41a77,0xa84bde96,0xa09d65e4,0xf20a6a1c,0x42f060d8,0xf27f9ce7,0x652a3bfd,0x3b3d739f,0xb6bdb65c +.long 0xec7fae9f,0xeb5ddcb6,0xefb66e5a,0x995f2714,0x69445d52,0xdee95d8e,0x09e27620,0x1b6c2d46,0x8129d716,0x32621c31,0x0958c1aa,0xb03909f1,0x1af4af63,0x8c468ef9,0xfba5cdf6,0x162c429f +.long 0x753b9371,0x2f682343,0x5f1f9cd7,0x29cab45a,0xb245db96,0x571623ab,0x3fd79999,0xc507db09,0xaf036c32,0x4e2ef652,0x05018e5c,0x86f0cc78,0xab8be350,0xc10a73d4,0x7e826327,0x6519b397 +.long 0x9c053df7,0xe8cb5eef,0xb300ea6f,0x8de25b37,0xc849cffb,0xdb03fa92,0xe84169bb,0x242e43a7,0xdd6f958e,0xe4fa51f4,0xf4445a8d,0x6925a77f,0xe90d8949,0xe6e72a50,0x2b1f6390,0xc66648e3 +.long 0x173e460c,0xb2ab1957,0x30704590,0x1bbbce75,0xdb1c7162,0xc0a90dbd,0x15cdd65d,0x505e399e,0x57797ab7,0x68434dcb,0x6a2ca8e8,0x60ad35ba,0xde3336c1,0x4bfdb1e0,0xd8b39015,0xbbef99eb +.long 0x1711ebec,0x6c3b96f3,0xce98fdc4,0x2da40f1f,0x57b4411f,0xb99774d3,0x15b65bb6,0x87c8bdf4,0xc2eef12d,0xda3a89e3,0x3c7471f3,0xde95bb9b,0xd812c594,0x600f225b,0x2b75a56b,0x54907c5d +.long 0x8db60e35,0xa93cc5f0,0xfa833319,0x743e3cd6,0xf81683c9,0x7dad5c41,0x9c34107e,0x70c1e7d9,0xa6be0907,0x0edc4a39,0x86d0b7d3,0x36d47035,0x272bfa60,0x8c76da03,0x0f08a414,0x0b4a07ea +.long 0x45c1dd53,0x699e4d29,0x231debb5,0xcadc5898,0xa77f00e0,0xdf49fcc7,0xa73e5a0e,0x93057bbf,0x027a4cd1,0x2f8b7ecd,0xc614011a,0x114734b3,0x67677c68,0xe7a01db7,0x7e273f4f,0x89d9be5e +.long 0x089808ef,0xd225cb2e,0xd59e4107,0xf1f7a27d,0x8211b9c9,0x53afc761,0xe6819159,0x0361bc67,0x7f071426,0x2a865d0b,0xe7072567,0x6a3c1810,0x0d6bcabd,0x3e3bca1e,0x408591bc,0xa1b02bc1 +.long 0x31fba239,0xe0deee59,0x98bd91d1,0xf47424d3,0x071a3c1d,0x0f8886f4,0xa819233b,0x3f7d41e8,0xcf6eb998,0x708623c2,0x609a287f,0x86bb49af,0x63c90762,0x942bb249,0x55a9654b,0x0ef6eea5 +.long 0x36f5defe,0x5f6d2d72,0x56f99176,0xfa9922dc,0xf78ce0c7,0x6c8c5ece,0xbe09b55e,0x7b44589d,0x9ea83770,0xe11b3bca,0x2ab71547,0xd7fa2c7f,0x2a1ddcc0,0x2a3dd6fa,0x5a7b7707,0x09acb430 +.long 0x649d4e57,0x4add4a2e,0x1917526e,0xcd53a2b0,0x20b44ac4,0xc5262330,0xbaa2c31d,0x4028746a,0x64291d4c,0x51318390,0xee5ad909,0xbf48f151,0x7b185681,0xcce57f59,0x4854d442,0x7c3ac1b0 +.long 0xc093c171,0x65587dc3,0x24f42b65,0xae7acb24,0x955996cb,0x5a338adb,0x6051f91b,0xc8e65675,0x28b8d0b1,0x66711fba,0xb6c10a90,0x15d74137,0x3a232a80,0x70cdd7eb,0x6191ed24,0xc9e2f07f +.long 0xf79588c0,0xa80d1db6,0xb55768cc,0xfa52fc69,0x7f54438a,0x0b4df1ae,0xf9b46a4f,0x0cadd1a7,0x1803dd6f,0xb40ea6b3,0x55eaae35,0x488e4fa5,0x382e4e16,0x9f047d55,0x2f6e0c98,0xc9b5b7e0 +.long 0x95762649,0x6b1bd2d3,0xc7aea3f6,0xa9604ee7,0x6dc6f896,0x3646ff27,0x2860bad1,0x9bf0e7f5,0x7cb44b92,0x2d92c821,0xaea9c182,0xa2f5ce63,0x9154a5fd,0xd0a2afb1,0x95801da6,0x482e474c +.long 0xb611c24b,0xc19972d0,0x60a8f351,0x1d468e65,0x7bcf6421,0xeb758069,0x88fbc491,0xec9dd0ee,0x956c2e32,0x5b59d2bf,0xdcddf94e,0x73dc6864,0xbcee7665,0xfd5e2321,0x5e9a06c4,0xa7b4f8ef +.long 0x7280f855,0xfba918dd,0x8baec688,0xbbaac260,0x33400f42,0xa3b3f00f,0x66f2e6e4,0x3d2dba29,0x98509375,0xb6f71a94,0xcea423cc,0x8f33031f,0x4807e6fb,0x009b8dd0,0x5cdb954c,0x5163cfe5 +.long 0xcf41c6e8,0x03cc8f17,0x037b925c,0xf1f03c2a,0x66d2427c,0xc39c19cc,0x7b6c18e4,0x823d24ba,0x901f0b4f,0x32ef9013,0xf8941c2e,0x684360f1,0x2c28092e,0x0ebaff52,0x256c932f,0x7891e4e3 +.long 0xac445e3d,0x51264319,0x8ea74381,0x553432e7,0x67e9c50a,0xe6eeaa69,0x62e628c7,0x27ced284,0x7a4afa57,0x3f96d375,0xe484c150,0xde0a14c3,0x38bd9923,0x364a24eb,0xe5177422,0x1df18da0 +.long 0xd8d38a9b,0x174e8f82,0xe7de1391,0x2e97c600,0xa1c175dd,0xc5709850,0x32ae5035,0x969041a0,0x76a2086b,0xcbfd533b,0xd7c2e8fe,0xd6bba71b,0x099dfb67,0xb2d58ee6,0x064a85d9,0x3a8b342d +.long 0x522f9be3,0x3bc07649,0xdf1f49a8,0x690c075b,0x3854ec42,0x80e1aee8,0x17689dc7,0x2a7dbf44,0x3faf4078,0xc004fc0e,0xdf11862c,0xb2f02e9e,0xa0a1b7b3,0xf10a5e0f,0x8936ec80,0x30aca623 +.long 0x02f40d9a,0xf83cbf05,0x2c318a4d,0x4681c468,0x0e9c2674,0x98575618,0x1847092e,0xbe79d046,0x78bd01e0,0xaf1e480a,0x72a51db9,0x6dd359e4,0xe3afbab6,0x62ce3821,0x17733199,0xc5cee5b6 +.long 0x6ffd9fbb,0xe08b30d4,0x36c610b7,0x6e5bc699,0x9ce262cf,0xf343cff2,0x68b914c1,0xca2e4e35,0x16de36c5,0x011d64c0,0x42e2b829,0xe0b10fdd,0x6685aaf8,0x78942981,0x230ede97,0xe7511708 +.long 0x3b922bf8,0x671ed8fc,0x4c29b133,0xe4d8c0a0,0x3b6e99c4,0x87eb1239,0x8793beba,0xaff3974c,0x2c18df9b,0x03749405,0x91007139,0xc5c3a293,0xe37a0b95,0x6a77234f,0xb661c96b,0x02c29a21 +.long 0x141ecf61,0xc3aaf1d6,0x3bb22f53,0x9195509e,0x22d51357,0x29597404,0x537bed60,0x1b083822,0xe07289f0,0xcd7d6e35,0x6dd86eff,0x1f94c48c,0xeb0f9cfa,0xc8bb1f82,0x1b2eb97d,0x9ee0b7e6 +.long 0x34d74e31,0x5a52fe2e,0x3bf79ab6,0xa352c310,0xabfeeb8f,0x97ff6c5a,0xf5c97305,0xbfbe8fef,0xa7904608,0xd6081ce6,0xc4fca249,0x1f812f3a,0xb9e5e200,0x9b24bc9a,0x38012ee8,0x91022c67 +.long 0x30a713a1,0xe83d9c5d,0x84ef0f93,0x4876e3f0,0xc1fbf928,0xc9777029,0xbce7d2a4,0xef7a6bb3,0xdfa2a659,0xb8067228,0xd877a48f,0xd5cd3398,0x025d0f3f,0xbea4fd8f,0x2eae7c2b,0xd67d2e35 +.long 0xcc5f4394,0x184de7d7,0x4536e142,0xb5551b5c,0xd34aa60a,0x2e89b212,0xf50051d5,0x14a96fea,0x0d12bb0b,0x4e21ef74,0x60b9677e,0xc522f020,0x2df7731d,0x8b12e467,0x7b326d31,0x39f80382 +.long 0x39024a94,0xdfb8630c,0x97319452,0xaacb96a8,0xeda3867c,0xd68a3961,0x77c4ffca,0x0c58e2b0,0x4da919fa,0x3d545d63,0xf15e2289,0xef79b69a,0x808bab10,0x54bc3d3d,0x45f82c37,0xc8ab3007 +.long 0x7c4a658a,0xc12738b6,0x40e72182,0xb3c47639,0x8798e44f,0x3b77be46,0x17a7f85f,0xdc047df2,0x5e59d92d,0x2439d4c5,0xe8e64d8d,0xcedca475,0x87ca9b16,0xa724cd0d,0xa5540dfe,0x35e4fd59 +.long 0xe4bcf6b1,0xf8c1ff18,0x295018fa,0x856d6285,0x3263c949,0x433f665c,0xa1f21409,0xa6a76dd6,0xcc7b4f79,0x17d32334,0x06720e4a,0xa1d03122,0x81d9bed5,0xadb6661d,0x11db15d1,0xf0d6fb02 +.long 0x1fb747d2,0x7fd11ad5,0x3033762b,0xab50f959,0xfbefaf5a,0x2a7e711b,0x3fef2bbf,0xc7393278,0x0df6f9be,0xe29fa244,0x71efd215,0x9092757b,0x4f3d6fd9,0xee60e311,0x0acfb78b,0x338542d4 +.long 0x38961a0f,0x44a23f08,0x986987ca,0x1426eade,0x4a863cc6,0x36e6ee2e,0x628b8b79,0x48059420,0x7396e1de,0x30303ad8,0x38c5aad1,0x5c8bdc48,0x5c8f5066,0x3e40e11f,0x8d246bbd,0xabd6e768 +.long 0x23330a01,0x68aa40bb,0xc34eafa0,0xd23f5ee4,0x5de02c21,0x3bbee315,0xd1d8dd06,0x18dd4397,0x122d7b44,0x3ba1939a,0xa33870d6,0xe6d3b40a,0x1c4fe3f8,0x8e620f70,0xd3a50cbf,0xf6bba1a5 +.long 0xcfc0aee0,0x4a78bde5,0xc08c50bd,0x847edc46,0xad63c9b2,0xbaa2439c,0x10fc2acb,0xceb4a728,0x26da033d,0xa419e40e,0x03e02683,0x6cc3889d,0xfdccf725,0x1cd28559,0x8d13d208,0x0fd7e0f1 +.long 0x1f0df9d4,0x01b9733b,0xa2b5e4f3,0x8cc2c5f3,0x3a304fd4,0x43053bfa,0x0a9f1aa7,0x8e87665c,0xd73dc965,0x087f29ec,0x3e9023db,0x15ace455,0x2bce28b4,0x2370e309,0xb6b1e84a,0xf9723442 +.long 0xb72d9f26,0xbeee662e,0xf0e47109,0xb19396de,0xe13289d0,0x85b1fa73,0x54e58e32,0x436cf77e,0xe990ef77,0x0ec833b3,0x1b11fc25,0x7373e3ed,0x0fc332ce,0xbe0eda87,0x8d7ea856,0xced04970 +.long 0x7e977ca0,0xf85ff785,0xdfdd5d2b,0xb66ee8da,0x905af461,0xf5e37950,0x966d487c,0x587b9090,0x32ba0127,0x6a198a1b,0x141615ac,0xa7720e07,0x996ef2f2,0xa23f3499,0x470bcb3d,0xef5f64b4 +.long 0x92b8c559,0xa526a962,0x69740a0f,0x0c14aac0,0xa6bdc0a5,0x0d41a9e3,0x9c48aef4,0x97d52106,0x3e7c253b,0xcf16bd30,0x47fdedc1,0xcc834b1a,0x373aab2e,0x7362c6e5,0xc5f590ff,0x264ed85e +.long 0x66d41870,0x7a46d9c0,0x4787ba09,0xa50c20b1,0xe3d44635,0x185e7e51,0x31e2d8dc,0xb3b3e080,0xa179e9d9,0xbed1e558,0x74a76781,0x2daa3f79,0x3a40864f,0x4372baf2,0x4fe75cb5,0x46900c54 +.long 0xf76765d0,0xb95f171e,0x95c87502,0x4ad726d2,0x4d7c99bd,0x2ec769da,0xc36cdfa8,0x5e2ddd19,0xa93e6dea,0xc22117fc,0x93771123,0xe8a2583b,0xfa08a3a2,0xbe2f6089,0x8f0e1112,0x4809d5ed +.long 0xda7a095e,0x3b414aa3,0x26f5aadd,0x9049acf1,0x6be8b84a,0x78d46a4d,0xb732b9b3,0xd66b1963,0xde6e9555,0x5c2ac2a0,0xb5bd8770,0xcf52d098,0x0fd28921,0x15a15fa6,0x8b27536d,0x56ccb81e +.long 0x9f4ccbb8,0x0f0d8ab8,0xdb221729,0xed5f44d2,0x00bed10c,0x43141988,0x1d735b8b,0xc94348a4,0x29ef8479,0x79f3e9c4,0x614c693f,0x4c13a4e3,0x8e143a14,0x32c9af56,0xe29ac5c4,0xbc517799 +.long 0x2774856f,0x05e17992,0x6c1bf55f,0x6e52fb05,0xe4f19e16,0xaeda4225,0xaf5ccb26,0x70f4728a,0xb2947f22,0x5d2118d1,0x281d6fb9,0xc827ea16,0x8cf0eabd,0x8412328d,0x03ef9dcf,0x45ee9fb2 +.long 0xbb937d63,0x8e700421,0xcc4b37a6,0xdf8ff2d5,0x5ced7b68,0xa4c0d5b2,0xc7308f59,0x6537c1ef,0x3b37f8e8,0x25ce6a26,0xdeebc6ce,0x170e9a9b,0x8728d72c,0xdd037952,0x850154bc,0x445b0e55 +.long 0x83a7337b,0x4b7d0e06,0xffecf249,0x1e3416d4,0x66a2b71f,0x24840eff,0xb37cc26d,0xd0d9a50a,0x6fe28ef7,0xe2198150,0x23324c7f,0x3cc5ef16,0x769b5263,0x220f3455,0xa10bf475,0xe2ade2f1 +.long 0x458d3671,0x28cd20fa,0x2dc4847b,0x1549722c,0x591941e3,0x6dd01e55,0x27128ccb,0x0e6fbcea,0x3bef0262,0xae1a1e6b,0x8f54e103,0xfa8c472c,0x72c052ec,0x7539c0a8,0x5a3490e9,0xd7b27369 +.long 0x71684349,0x143fe1f1,0x32e19b97,0x36b4722e,0x90980aff,0xdc059227,0x9e13d674,0x175c9c88,0x6e6bfdb1,0xa7de5b22,0xbedb4b46,0x5ea5b7b2,0xd34a6e44,0xd5570191,0xa24ff7e6,0xfcf60d2e +.long 0x677819e1,0x614a392d,0xaa5a29e8,0x7be74c7e,0x63c85f3f,0xab50fece,0x46cab337,0xaca2e2a9,0x122a6fe3,0x7f700388,0x882a04a8,0xdb69f703,0xcf7aed57,0x9a77935d,0x8d91c86f,0xdf16207c +.long 0x63ed9998,0x2fca49ab,0xa77ddf96,0xa3125c44,0x24344072,0x05dd8a86,0xfec3fb56,0xa023dda2,0x0c743032,0x421b41fc,0x5e438639,0x4f2120c1,0xc83c1b07,0xfb7cae51,0xcac2171a,0xb2370caa +.long 0x6cc820fb,0x2eb2d962,0xb85a44bf,0x59feee5c,0x5b6598f0,0x94620fca,0x7e314051,0x6b922cae,0x106bed4e,0xff8745ad,0xdfa1e9ab,0x546e71f5,0x1ec29487,0x935c1e48,0x4d936530,0x9509216c +.long 0x85c9a2db,0xc7ca3067,0x6be8606f,0xd6ae5152,0xe14c651d,0x09dbcae6,0x9bc32f96,0xc9536e23,0x34521b03,0xa90535a9,0x878756ff,0xf39c526c,0x8aedf03c,0x383172ec,0xefe0c034,0x20a8075e +.long 0x64026422,0xf22f9c62,0x24b9d076,0x8dd10780,0x3bef2950,0x944c742a,0x88a2b00b,0x55b9502e,0x86a09817,0xa59e14b4,0x47bb4071,0xa39dd3ac,0x3be0592f,0x55137f66,0xc9e63f5b,0x07fcafd4 +.long 0x346eb226,0x963652ee,0xec2facb7,0x7dfab085,0x691add26,0x273bf2b8,0xf2b46c44,0x30d74540,0xf2c2d065,0x05e8e73e,0xd42eeac9,0xff9b8a00,0x97209d22,0x2fcbd205,0xde14ea2c,0xeb740ffa +.long 0xa8aef518,0xc71ff913,0xfff4cfa2,0x7bfc74bb,0xb6b36048,0x1716680c,0x9ef79af1,0x121b2cce,0xa01eb3d3,0xbff3c836,0x5f79077b,0x50eb1c6a,0xa004bbcf,0xa48c32d6,0x7d64f61d,0x47a59316 +.long 0x93102016,0x6068147f,0x94d12576,0x12c5f654,0xc9bc6b91,0xefb071a7,0x6e23ea95,0x7c2da0c5,0xd4a1dd5d,0xf4fd45b6,0x9122b13c,0x3e7ad9b6,0xe6f57a48,0x342ca118,0x06f8288f,0x1c2e94a7 +.long 0x5a97d231,0x99e68f07,0x4d838758,0x7c80de97,0x05872727,0xbce0f5d0,0x19c4d016,0xbe5d95c2,0x9c2492ee,0x921d5cb1,0x404d6fb3,0x42192dc1,0x32f988d3,0x4c84dcd1,0xa17b8e85,0xde26d61f +.long 0x137c7408,0xc466dcb6,0x36a266da,0x9a38d7b6,0x83bebf1b,0x7ef5cb06,0x0fd014e3,0xe5cdcbbf,0xf65965a0,0x30aa376d,0xebb3e95e,0x60fe88c2,0x66ee6f20,0x33fd0b61,0x3f41f0a0,0x8827dcdb +.long 0x0c56c690,0xbf8a9d24,0xddb7641d,0x40265dad,0x3a6b662b,0x522b05bf,0xb1478c9b,0x466d1dfe,0x1484469b,0xaa616962,0x02df8f9f,0x0db60549,0x3cb8bf51,0xc37bca02,0x21371ce8,0x5effe346 +.long 0xff112c32,0xe8f65264,0x7b971fb2,0x8a9c736d,0x7b75080d,0xa4f19470,0x8839c59b,0xfc3f2c5a,0x5aeb49c2,0x1d6c777e,0xda1addfe,0xf3db034d,0x5535affc,0xd76fee5a,0xb92251fd,0x0853ac70 +.long 0x8b2a29d5,0x37e3d594,0x4de00ddb,0x28f1f457,0xf42c328b,0x8083c1b5,0xe493c73b,0xd8ef1d8f,0x41dc61bd,0x96fb6260,0x27ee2f8a,0xf74e8a9d,0x2c946a5d,0x7c605a80,0x3839ccfd,0xeed48d65 +.long 0x3a29467a,0x9894344f,0xc51eba6d,0xde81e949,0xa5e5c2f2,0xdaea066b,0x08c8c7b3,0x3fc8a614,0x06d0de9f,0x7adff88f,0x3b75ce0a,0xbbc11cf5,0xfbbc87d5,0x9fbb7acc,0x7badfde2,0xa1458e26 +.long 0xe039c256,0x1cb43668,0x7c17fd5d,0x5f26fb8b,0x79aa062b,0xeee426af,0xd78fbf04,0x072002d0,0xe84fb7e3,0x4c9ca237,0x0c82133d,0xb401d8a1,0x6d7e4181,0xaaa52592,0x73dbb152,0xe9430833 +.long 0xbe24319a,0xf92dda31,0xe095a8e7,0x03f7d28b,0x98782185,0xa52fe840,0x29c24dbc,0x276ddafe,0x1d7a64eb,0x80cd5496,0x7f1dbe42,0xe4360889,0x8438d2d5,0x2f81a877,0x85169036,0x7e4d52a8 +.long 0x1d59715d,0x19e3d5b1,0xd788983e,0xc7eaa762,0xabf1f248,0xe5a730b0,0xfae3fd83,0xfbab8084,0x53765b2f,0x65e50d21,0xfa127f3d,0xbdd4e083,0x397b1b10,0x9cf3c074,0xb1b59fd3,0x59f8090c +.long 0x615faa8f,0x7b15fd9d,0x968554ed,0x8fa1eb40,0x7aa44882,0x7bb4447e,0x029fff32,0x2bb2d0d1,0x6caa6d2f,0x075e2a64,0x22e7351b,0x8eb879de,0x9a506c62,0xbcd5624e,0xa87e24dc,0x218eaef0 +.long 0x44ddfa35,0x37e56847,0xdab3f747,0x9ccfc5c5,0x1ee96cf4,0x9ac1df3f,0x3b480b8f,0x0c0571a1,0x4b3a7b3c,0x2fbeb3d5,0x5dcdbb99,0x35c03669,0xb2415b3a,0x52a0f5dc,0x4413ed9a,0xd57759b4 +.long 0x3d30a2c5,0x1fe647d8,0xf78a81dc,0x0857f77e,0x131a4a9b,0x11d5a334,0x29d393f5,0xc0a94af9,0xdaa6ec1a,0xbc3a5c0b,0x88d2d7ed,0xba9fe493,0xbb614797,0xbb4335b4,0x72f83533,0x991c4d68 +.long 0xd2f01cb3,0x53258c28,0xd75db0b1,0x93d6eaa3,0xe87d0db4,0x419a2b0d,0xd8fe8493,0xa1e48f03,0xc508b23a,0xf747faf6,0x35d53549,0xf137571a,0xfcf9b838,0x9f5e58e2,0xa7fd3cf5,0xc7186cee +.long 0xe978a1d3,0x77b868ce,0x7ab92d04,0xe3a68b33,0x87a5b862,0x51029794,0x3a61d41d,0x5f0606c3,0x6f9326f1,0x2814be27,0xc6fe3c2e,0x2f521c14,0xacdf7351,0x17464d7d,0x777f7e44,0x10f5f9d3 +.long 0x269fb37d,0xce8e616b,0x7de62de5,0xaaf73804,0x4fdd4153,0xaba11175,0x3770b49b,0x515759ba,0xaa423a61,0x8b09ebf8,0xcd41fb92,0x592245a1,0x9b4c8936,0x1cba8ec1,0xaf36710e,0xa87e91e3 +.long 0x3d34a2e3,0x1fd84ce4,0xb43b5d61,0xee3759ce,0x619186c7,0x895bc78c,0xcbb9725a,0xf19c3809,0xde744b1f,0xc0be21aa,0x60f8056b,0xa7d222b0,0xb23efe11,0x74be6157,0x0cd68253,0x6fab2b4f +.long 0x4bf1d725,0xad33ea5f,0x4f6c950f,0x9c1d8ee2,0xa377af06,0x544ee78a,0x94a113e1,0x54f489bb,0x992fb7e8,0x8f11d634,0xa2a44347,0x0169a7aa,0x95020e00,0x1d49d4af,0xe08e120b,0x95945722 +.long 0xa4d32282,0xb6e33878,0x48020ae7,0xe36e029d,0x37a9b750,0xe05847fb,0xb29e3819,0xf876812c,0xd23a17f0,0x84ad138e,0xf0b3950e,0x6d7b4480,0x2fd67ae0,0xdfa8aef4,0x52333af6,0x8d3eea24 +.long 0xb15d5acc,0x0d052075,0xbd815bc4,0xc6d9c79f,0xdfa36cf2,0x8dcafd88,0x38aa9070,0x908ccbe2,0xba35afce,0x638722c4,0xfd6abf0b,0x5a3da8b0,0xc9c335c1,0x2dce252c,0x65aa799b,0x84e7f0de +.long 0xb99a72cb,0x2101a522,0x87618016,0x06de6e67,0xe6f3653e,0x5ff8c7cd,0xc7a6754a,0x0a821ab5,0x7cb0b5a2,0x7e3fa52b,0xc9048790,0xa7fb121c,0x06ce053a,0x1a725020,0x04e929b0,0xb490a31f +.long 0x62dd61ad,0xe17be47d,0x6be01371,0x781a961c,0xdae3cbba,0x1063bfd3,0x7f73c9ba,0x35647406,0x2736a129,0xf50e957b,0xed13f256,0xa6313702,0x3a19fcc5,0x9436ee65,0xe7a4c8b6,0xcf2bdb29 +.long 0xc5f95cd8,0xb06b1244,0xf4ab95f4,0xda8c8af0,0xb9e5836d,0x1bae59c2,0x3acffffc,0x07d51e7e,0xc2ccbcda,0x01e15e6a,0x8528c3e0,0x3bc1923f,0xa49fead4,0x43324577,0x2aa7a711,0x61a1b884 +.long 0x700230ef,0xf9a86e08,0xbd19adf8,0x0af585a1,0xf55ad8f2,0x7645f361,0x46c3614c,0x6e676223,0x4e774d3f,0x23cb257c,0xac102d1b,0x82a38513,0x7b126aa5,0x9bcddd88,0xeefd3ee4,0xe716998b +.long 0xfb167583,0x4239d571,0xd16c8f8a,0xdd011c78,0x69a27519,0x271c2895,0xd2d64b6a,0x9ce0a3b7,0xd5ec6738,0x8c977289,0x8840ef6b,0xa3b49f9a,0x9a453419,0x808c14c9,0x0cf0a2d5,0x5c00295b +.long 0x1d4bcc76,0x524414fb,0x459a88f1,0xb07691d2,0xf70d110f,0x77f43263,0xb7abf9f3,0x64ada5e0,0x5b544cf5,0xafd0f94e,0xfd2713fe,0xb4a13a15,0x250c74f4,0xb99b7d6e,0x20324e45,0x097f2f73 +.long 0xaffa8208,0x994b37d8,0xdc29aafc,0xc3c31b0b,0x7a3a607f,0x3da74651,0xfe6955d6,0xd8e1b8c1,0xc8418682,0x716e1815,0x7dc91d97,0x541d487f,0xc6996982,0x48a04669,0x83a6502e,0xf39cab15 +.long 0xe68db055,0x025801a0,0xba3338d5,0xf3569758,0xee2afa84,0xb0c8c0aa,0xfb6562d1,0x4f6985d3,0x132ed17a,0x351f1f15,0xc04365fe,0x510ed0b4,0xe5b1f066,0xa3f98138,0x32df03dc,0xbc9d95d6 +.long 0x19abd09e,0xa83ccf6e,0x4ff17edb,0x0b4097c1,0xd64a06ce,0x58a5c478,0x544a58fd,0x2ddcc3fd,0x9e8153b8,0xd449503d,0x7774179b,0x3324fd02,0xdbd9120c,0xaf5d47c8,0x34fa94db,0xeb860162 +.long 0x972f07f4,0x5817bdd1,0xd27bbceb,0xe5579e2e,0x5f11e5a6,0x86847a1f,0x7c3cf048,0xb39ed255,0xa2f62e55,0xe1076417,0x1bcf82a2,0x6b9ab38f,0x7aeb29f9,0x4bb7c319,0x17227a46,0xf6d17da3 +.long 0x0f968c00,0xab53ddbd,0x000c880b,0xa03da7ec,0x6a9ad24d,0x7b239624,0x01ec60d0,0x612c0401,0x109f5df1,0x70d10493,0x80af7550,0xfbda4030,0xc6b9a9b3,0x30b93f95,0x007d9418,0x0c74ec71 +.long 0x6edb951f,0x94175564,0x7f22c282,0x5f4a9d78,0xb38d1196,0xb7870895,0xa228ce7c,0xbc593df3,0x6af3641a,0xc78c5bd4,0x3d9b3dcc,0x7802200b,0x8be33304,0x0dc73f32,0x61ffb79a,0x847ed87d +.long 0x6d671192,0xf85c974e,0xde16f60f,0x1e14100a,0x95c38797,0x45cb0d5a,0x9b022da4,0x18923bba,0xbbe7e86e,0xef2be899,0x216067bf,0x4a1510ee,0x84d5ce3e,0xd98c8154,0xf92a2b90,0x1af777f0 +.long 0x4ef65724,0x9fbcb400,0x3c0ca6fe,0x3e04a4c9,0x55002994,0xfb3e2cb5,0x5363ecab,0x1f3a93c5,0x3923555b,0x1fe00efe,0x1e1751ea,0x744bedd9,0x6ab69357,0x3fb2db59,0xf5e6618b,0x8dbd7365 +.long 0xdf1ea40e,0x99d53099,0x57d61e64,0xb3f24a0b,0x596eb812,0xd088a198,0x5762940b,0x22c8361b,0xf9c0d95c,0x66f01f97,0x8e43cdae,0x88461172,0xb72b15c3,0x11599a7f,0x420d95cc,0x135a7536 +.long 0x5f7ae2f6,0x2dcdf0f7,0xd7fa6da2,0x15fc6e1d,0xd1d441b6,0x81ca829a,0x04a106b6,0x84c10cf8,0xa73fbbd0,0xa9b26c95,0x4d8f6ee8,0x7f24e0cb,0x1e25a043,0x48b45937,0x036f3dfe,0xf8a74fca +.long 0xc9f84296,0x1ed46585,0x3bc278b0,0x7fbaa8fb,0x6c4fcbd0,0xa8e96cd4,0x73b60a5f,0x940a1202,0x55a4aec8,0x34aae120,0xdbd742f0,0x550e9a74,0x228c68ab,0x794456d7,0xa4e25ec6,0x492f8868 +.long 0xb2d8f398,0x682915ad,0x5b84c953,0xf13b51cc,0x5bb917d6,0xcda90ab8,0x4ea3dee1,0x4b615560,0x0a52c1c8,0x578b4e85,0x20b75fc4,0xeab1a695,0xaa0bb3c6,0x60c14f3c,0xb8216094,0x220f448a +.long 0xb0e63d34,0x4fe7ee31,0xa9e54fab,0xf4600572,0xd5e7b5a4,0xc0493334,0x06d54831,0x8589fb92,0x6583553a,0xaa70f5cc,0xe25649e5,0x0879094a,0x10044652,0xcc904507,0x02541c4f,0xebb0696d +.long 0xb9718710,0x5a171fde,0xf374a9f5,0x38f1bed8,0xba39bdc1,0xc8c582e1,0x908cc0ce,0xfc457b0a,0x883841e2,0x9a187fd4,0x38725381,0x8ec25b39,0x96f84395,0x2553ed05,0x6f6c6897,0x095c7661 +.long 0x4bdc5610,0x917ac85c,0x179eb301,0xb2885fe4,0x8b78bdcc,0x5fc65547,0xe59e4699,0x4a9fc893,0x3ce299af,0xbb7ff0cd,0xadf38b20,0x195be9b3,0xd38ddb8f,0x6a929c87,0xb21a51b9,0x55fcc99c +.long 0x721a4593,0x2b695b4c,0x768eaac2,0xed1e9a15,0x7489f914,0xfb63d71c,0x78118910,0xf98ba31c,0x9b128eb4,0x80291373,0xd448af4a,0x7801214e,0x55418dd3,0xdbd2e22b,0xd3998242,0xeffb3c0d +.long 0xc7bf3827,0xdfa6077c,0x47f8238f,0xf2165bcb,0x8564d554,0xfe37cf68,0x0a81fb98,0xe5f825c4,0xffed4d6f,0x43cc4f67,0xb50a34b0,0xbc609578,0x5041faf1,0x8aa8fcf9,0x651773b6,0x5659f053 +.long 0x6044d63b,0xe87582c3,0x0cdb0ca0,0xa6089409,0xbfb2bcf6,0x8c993e0f,0x45985cfc,0xfc64a719,0x83dbedba,0x15c4da80,0x2be67df7,0x804ae112,0xa23defde,0xda4c9658,0x5156e0d3,0x12002ddd +.long 0x5dd21b96,0xe68eae89,0xcf44624d,0x8b99f28b,0x1ec8897a,0x0ae00808,0x6712f76e,0xdd0a9303,0x4e233de4,0x96237522,0x2b36a8a5,0x192445b1,0x023993d9,0xabf9ff74,0x2aad4a8f,0x21f37bf4 +.long 0xf8bd2bbd,0x340a4349,0x4868195d,0x1d902cd9,0xe5fdb6f1,0x3d27bbf1,0x124f9f1c,0x7a5ab088,0xf7a09e03,0xc466ab06,0x31f2c123,0x2f8a1977,0x041b6657,0xda355dc7,0x8ece2a7c,0xcb840d12 +.long 0x7db32675,0xb600ad9f,0x07a06f1b,0x78fea133,0xb31f6094,0x5d032269,0x83ec37aa,0x07753ef5,0x9c0bea78,0x03485aed,0xbc3f4524,0x41bb3989,0x697f726d,0x09403761,0xdf394820,0x6109beb3 +.long 0x3b6d1145,0x804111ea,0xa8582654,0xb6271ea9,0x24e66562,0x619615e6,0xd7b6ad9c,0xa2554945,0x99bfe35f,0xd9c4985e,0x7b51cdf6,0x9770ccc0,0x92881832,0x7c327013,0x286b26d1,0x8777d45f +.long 0xd847999d,0x9bbeda22,0xc3525d32,0x03aa33b6,0x28a959a1,0x4b7b96d4,0x31e5d234,0xbb3786e5,0x6961f247,0xaeb5d3ce,0x02f93d3f,0x20aa85af,0xd7a7ae4f,0x9cd1ad3d,0x781adaa8,0xbf6688f0 +.long 0x7469cead,0xb1b40e86,0x309fca48,0x1904c524,0x4b54bbc7,0x9b7312af,0x593affa2,0xbe24bf8f,0xbd98764b,0xbe5e0790,0xa26e299e,0xa0f45f17,0x6b8fe4c7,0x4af0d2c2,0x8ae8a3e6,0xef170db1 +.long 0x29e0ccc1,0x0e8d61a0,0x60ad36ca,0xcd53e87e,0xc8173822,0x328c6623,0xa496be55,0x7ee1767d,0x648945af,0x89f13259,0x25c8009c,0x9e45a5fd,0x1f61ab8c,0xaf2febd9,0x8a275385,0x43f6bc86 +.long 0xf2142e79,0x87792348,0xc6e6238a,0x17d89259,0x4a839d9b,0x7536d2f6,0x76a1fbdc,0x1f428fce,0x0db06dfe,0x1c109601,0x50a3a3cc,0xbfc16bc1,0x9b30f41b,0xf9cbd9ec,0x00138cce,0x5b5da0d6 +.long 0x56ef96a7,0xec1d0a48,0x982bf842,0xb47eb848,0xec3f700d,0x66deae32,0xaa1181e0,0x4e43c42c,0xd1a4aa2a,0xa1d72a31,0xc004f3ce,0x440d4668,0x45fe8a7a,0x0d6a2d3b,0xfb128365,0x820e52e2 +.long 0x25e51b09,0x29ac5fcf,0x2023d159,0x180cd2bf,0xa1ebf90e,0xa9892171,0x7c132181,0xf97c4c87,0xc03dbb7e,0x9f1dc724,0x018cbbe4,0xae043765,0x0767d153,0xfb0b2a36,0x249cbaeb,0xa8e2f4d6 +.long 0xd95ea168,0x172a5247,0x2970764a,0x1758fada,0x1d978169,0xac803a51,0xde77e01b,0x299cfe2e,0xb0a98927,0x652a1e17,0x20014495,0x2e26e1d1,0x7175b56a,0x7ae0af9f,0xd64b9f95,0xc2e22a80 +.long 0xd90a060a,0x4d0ff9fb,0xbaf38085,0x496a27db,0xda776bcf,0x32305401,0x725f209e,0xb8cdcef6,0x436a0bba,0x61ba0f37,0x76860049,0x263fa108,0xda3542cf,0x92beb98e,0xd5849538,0xa2d4d14a +.long 0x12e9a1bc,0x989b9d68,0x5f6e3268,0x61d9075c,0x99ace638,0x352c6aa9,0x920f43ff,0xde4e4a55,0xd673c017,0xe5e4144a,0x6f6e05ea,0x667417ae,0xdcd1bd56,0x613416ae,0x86693711,0x5eb36201 +.long 0x3a1aa914,0x2d7bc504,0x76dc5975,0x175a1299,0x3fc8125c,0xe900e0f2,0x11198875,0x569ef68c,0x63a113b4,0x9012db63,0x98835766,0xe3bd3f56,0x76412dea,0xa5c94a52,0xaa735e5c,0xad9e2a09 +.long 0x508b65e9,0x405a984c,0x6df1a0d1,0xbde4a1d1,0xdfba80da,0x1a9433a1,0x9440ad2e,0xe9192ff9,0x5099fe92,0x9f649696,0x0b27a54a,0x25ddb65c,0xc590da61,0x178279dd,0xfbde681a,0x5479a999 +.long 0x013fe162,0xd0e84e05,0x632d471b,0xbe11dc92,0xfc0e089f,0xdf0b0c45,0x4c144025,0x04fb15b0,0x13c99927,0xa61d5fc2,0x3de2eb35,0xa033e9e0,0xb8dacbb4,0xf8185d5c,0x8644549d,0x9a88e265 +.long 0x54671ff6,0xf717af62,0x5fa58603,0x4bd4241b,0xe67773c0,0x06fba40b,0x6a2847e9,0xc1d933d2,0x689e2c70,0xf4f5acf3,0x46bafd31,0x92aab0e7,0x3473f6e5,0x798d76aa,0x93141934,0xcc6641db +.long 0xd31e535e,0xcae27757,0x87c2ee11,0x04cc43b6,0x2e029ffa,0x8d1f9675,0xe4cc7a2c,0xc2150672,0x8d68b013,0x3b03c1e0,0xedf298f3,0xa9d6816f,0xa2804464,0x1bfbb529,0x5db22125,0x95a52fae +.long 0x0e1cb64e,0x55b32160,0x7e7fc9fe,0x004828f6,0x1bb0fb93,0x13394b82,0x35f1a920,0xb6293a2d,0xd145d2d9,0xde35ef21,0xbb8fa603,0xbe6225b3,0x32cf252d,0x00fc8f6b,0x117cf8c2,0xa28e52e6 +.long 0x4c371e6d,0x9d1dc89b,0x36ef0f28,0xcebe0675,0xa4292f81,0x5de05d09,0x353e3083,0xa8303593,0x7e37a9bb,0xa1715b0a,0x2b8faec3,0x8c56f61e,0x33c9b102,0x52507431,0xa44431f0,0x0130cefc +.long 0xbd865cfb,0x56039fa0,0xbc5f1dd7,0x4b03e578,0xbabe7224,0x40edf2e4,0x3a1988f6,0xc752496d,0x564beb6b,0xd1572d3b,0x39a1c608,0x0db1d110,0x16f60126,0x568d1934,0xf354af33,0x05ae9668 +.long 0xc92544f2,0x19de6d37,0xa35837d5,0xcc084353,0x1a514ece,0xcbb6869c,0x2e1d1066,0xb633e728,0x936c581c,0xf15dd69f,0x7439c4f9,0x96e7b8ce,0x2e448a5b,0x5e676f48,0xfd916bbb,0xb2ca7d5b +.long 0xf5024025,0xd55a2541,0xe4c2d937,0x47bc5769,0x0362189f,0x7d31b92a,0xef7816f9,0x83f3086e,0xb587579a,0xf9f46d94,0x30e76c5f,0xec2d22d8,0xb000ffcf,0x27d57461,0x364ffc2c,0xbb7e65f9 +.long 0x6652a220,0x7c7c9477,0xd696c981,0x61618f89,0x89effff3,0x5021701d,0x7c314163,0xf2c8ff8e,0x8efb4d3e,0x2da413ad,0xce176d95,0x937b5adf,0x2a67d51c,0x22867d34,0x18eb3ac9,0x262b9b10 +.long 0xc43ff28b,0x4e314fe4,0x6a664e7a,0x76476627,0xb7a565c2,0x3e90e40b,0xc1acf831,0x8588993a,0x8f938829,0xd7b501d6,0x3edd7d4c,0x996627ee,0x90cd34c7,0x37d44a62,0xf3833e8d,0xa8327499 +.long 0x4bf50353,0x2e18917d,0x556765fb,0x85dd726b,0x93d5ab66,0x54fe65d6,0x915c25fe,0x3ddbaced,0x12f22e85,0xa799d9a4,0x6d06f6bc,0xe2a24867,0x43ca1637,0xf4f1ee56,0x61ece30a,0xfda2828b +.long 0xa2dee7a6,0x758c1a3e,0x734b2284,0xdcde2f3c,0x4eaba6ad,0xaba445d2,0x76cee0a7,0x35aaf668,0xe5aa049a,0x7e0b04a9,0x91103e84,0xe74083ad,0x40afecc3,0xbeb183ce,0xea043f7a,0x6b89de9f +.long 0xfe67ba66,0x0e299d23,0x93cf2f34,0x91450760,0x97fcf913,0xf45b5ea9,0x8bd7ddda,0x5be00843,0xd53ff04d,0x358c3e05,0x5de91ef7,0xbf7ccdc3,0xb69ec1a0,0xad684dbf,0x801fd997,0x367e7cf2 +.long 0xb0dc8595,0x0ca1f3b7,0x9f1d9f2e,0x27de4608,0xbadd82a7,0x1af3bf39,0x65862448,0x79356a79,0xf5f9a052,0xc0602345,0x139a42f9,0x1a8b0f89,0x844d40fc,0xb53eee42,0x4e5b6368,0x93b0bfe5 +.long 0xc024789c,0x5434dd02,0x41b57bfc,0x90dca9ea,0x243398df,0x8aa898e2,0x894a94bb,0xf607c834,0xc2c99b76,0xbb07be97,0x18c29302,0x6576ba67,0xe703a88c,0x3d79efcc,0xb6a0d106,0xf259ced7 +.long 0xc8de610b,0x0f893a5d,0x67e223ce,0xe8c515fb,0x4ead6dc5,0x7774bfa6,0x925c728f,0x89d20f95,0x098583ce,0x7a1e0966,0x93f2a7d7,0xa2eedb94,0x4c304d4a,0x1b282097,0xc077282d,0x0842e3da +.long 0x3b9e2d7b,0xe4d972a3,0xc48218ff,0x7cc60b27,0x84149d91,0x8fc70838,0x2f461ecc,0x5c04346f,0x614650a9,0xebe9fdf2,0xc1f666ac,0x5e35b537,0x88babc83,0x645613d1,0xc5e1c93e,0x88cace3a +.long 0x3de92e23,0x209ca375,0x5fbbb6e3,0xccb03cc8,0xd7b1487e,0xccb90f03,0xc710941f,0xfa9c2a38,0x6724ceed,0x756c3823,0x192d0323,0x3a902258,0xea5e038e,0xb150e519,0xc7427591,0xdcba2865 +.long 0x78890732,0xe549237f,0x53fcb4d9,0xc443bef9,0xeb3480d6,0x9884d8a6,0x3048b186,0x8a35b6a1,0x65e9a90a,0xb4e44716,0x653006c0,0x45bf380d,0x4fe9ae3b,0x8f3f820d,0x979a3b71,0x244a35a0 +.long 0x74cd06ff,0xa1010e9d,0xaca3eeac,0x9c17c7df,0x8063aa2b,0x74c86cd3,0x734614ff,0x8595c4b3,0x990f62cc,0xa3de00ca,0xca0c3be5,0xd9bed213,0xdf8ce9f5,0x7886078a,0x5cd44444,0xddb27ce3 +.long 0x58926ddd,0xed374a66,0x908015b8,0x138b2d49,0xde1f7ab8,0x886c6579,0xc3020b7a,0x888b9aa0,0x3a96e355,0xd3ec034e,0xf30fbe9a,0xba65b0b8,0xff21367a,0x064c8e50,0x0b04b46e,0x1f508ea4 +.long 0x747c866c,0x98561a49,0x0518a062,0xbbb1e5fe,0xecdc3608,0x20ff4e8b,0x20184027,0x7f55cded,0xf38c85f0,0x8d73ec95,0x8bc3b8c3,0x5b589fdf,0x0f12b66f,0xbe95dd98,0x0e338e01,0xf5bd1a09 +.long 0x5e915918,0x65163ae5,0x86f8a46b,0x6158d6d9,0xeeebf99c,0x8466b538,0xbca477ef,0xca8761f6,0x9ebbc601,0xaf3449c2,0xe0c3ae2f,0xef3b0f41,0x5de63752,0xaa6c577d,0x64682a51,0xe9166601 +.long 0xfc15aa1e,0x5a3097be,0xb54b0745,0x40d12548,0x519a5f12,0x5bad4706,0xa439dee6,0xed03f717,0x4a02c499,0x0794bb6c,0xcffe71d2,0xf725083d,0x0f3adcaf,0x2cad7519,0x43729310,0x7f68ea1c +.long 0xb7ffd977,0xe747c8c7,0x80761a22,0xec104c35,0x5a3ffb83,0x8395ebaf,0xe4b63db7,0xfb3261f4,0xd883e544,0x53544960,0x8cc2eeb8,0x13520d70,0xd3d65f99,0x08f6337b,0x781cf95b,0x83997db2 +.long 0x0dbd2c01,0xce6ff106,0x1f9ce934,0x4f8eea6b,0x0e993921,0x546f7c4b,0x5e753fc7,0x6236a324,0xa16022e9,0x65a41f84,0x43d1dbb2,0x0c18d878,0x2d4cef9c,0x73c55640,0x70444c74,0xa0428108 +.long 0x9afdfb3c,0x68e4f15e,0x5bdfb6df,0x49a56143,0x5f823d97,0xa9bc1bd4,0xea111c2a,0xbceb5970,0xb269bbc4,0x366b455f,0xe9bc5d62,0x7cd85e1e,0x4f18b086,0xc743c41c,0x95294fb9,0xa4b40990 +.long 0x26ee8382,0x9c7c581d,0x359d638e,0xcf17dcc5,0xb728ae3d,0xee8273ab,0xf821f047,0x1d112926,0x50491a74,0x11498477,0xfde0dfb9,0x687fa761,0x7ea435ab,0x2c258022,0x91ce7e3f,0x6b8bdb94 +.long 0x3bf834aa,0x4c5b5dc9,0x4f6c7e4b,0x04371819,0x3736bcad,0xc284e00a,0x21ae8f8d,0x0d881118,0xf48c8e33,0xf9cf0f82,0xa1bf40db,0xa11fd075,0xdc2733e5,0xdceab0de,0x8e986bd7,0xc560a8b5 +.long 0x3929d097,0x48dd1fe2,0x92f188f1,0x3885b290,0xda6fcdac,0x0f2ae613,0xb662a46c,0x9054303e,0x0738042a,0xb6871e44,0xbdaf6449,0x98e6a977,0xd1c9df1b,0xd8bc0650,0x36e098f9,0xef3d6451 +.long 0xb6d72d28,0x03fbae82,0xf5d84080,0x77ca9db1,0xa58efc1c,0x8a112cff,0xc564cb4a,0x518d761c,0xf0d1b5ce,0x69b5740e,0xe9eb1785,0x717039cc,0x22f53382,0x3fe29f90,0x6bc7c95c,0x8e54ba56 +.long 0xf7f91d0f,0x9c806d8a,0xa82a5728,0x3b61b0f1,0x94d76754,0x4640032d,0x47d834c6,0x273eb5de,0x7b4e4d53,0x2988abf7,0xde401777,0xb7ce66bf,0x715071b3,0x9fba6b32,0xad3a1a98,0x82413c24 +.long 0xe0e8ad93,0x5b7fc8c4,0x5fab868d,0xb5679aee,0x2b3946f3,0xb1f9d2fa,0x5685b50a,0x458897dc,0x89d0caf3,0x1e98c930,0x78642e92,0x39564c5f,0x0dbdaf18,0x1b77729a,0x579e82e6,0xf9170722 +.long 0xe4515fa5,0x680c0317,0xfb0c790f,0xf85cff84,0x6d2e0765,0xc7a82aab,0x35c82b32,0x7446bca9,0x6d63184f,0x5de607aa,0x262803a6,0x7c1a46a8,0xaebe8035,0xd218313d,0xc73c51f8,0x92113ffd +.long 0x12e7e46c,0x4b38e083,0x56126bd5,0x69d0a37a,0x73c07e04,0xfb3f324b,0x8fda7267,0xa0c22f67,0x4d2c7d8f,0x8f2c0051,0xcbe2cae5,0xbc45ced3,0xa8f0f277,0xe1c6cf07,0x1eb99a98,0xbc392312 +.long 0x3cc8ac85,0x75537b7e,0xdd02753b,0x8d725f57,0xb737df2f,0xfd05ff64,0xf6d2531d,0x55fe8712,0x6ab6b01c,0x57ce04a9,0x7cd93724,0x69a02a89,0xcf86699b,0x4f82ac35,0x9cb4b232,0x8242d3ad +.long 0xd62105e5,0x713d0f65,0x2d29be61,0xbb222bfa,0x6cfbef09,0xf2f9a79e,0xd5d6782f,0xfc24d8d3,0xd4129967,0x5db77085,0xdc3c2a43,0xdb81c3cc,0x05d8d9a3,0x9d655fc0,0x54298026,0x3f5d057a +.long 0x88c54694,0x1157f56d,0x9b09573e,0xb26baba5,0x22adffd1,0x2cab03b0,0xdd69f383,0x60a412c8,0x54b25039,0xed76e98b,0x687e714d,0xd4ee67d3,0x7b00b594,0x87739648,0xc9ef709b,0xce419775 +.long 0x1c203a40,0x40f76f85,0xeafd8f91,0x30d352d6,0x95578dd2,0xaf196d3d,0x77cc3f3d,0xea4bb3d7,0xb98e782b,0x42a5bd03,0x0624920d,0xac958c40,0xfc56fcc8,0xb838134c,0x89572e5e,0x86ec4ccf +.long 0x9be47be0,0x69c43526,0xcb28fea1,0x323b7dd8,0x3a6c67e5,0xfa5538ba,0x1d378e46,0xef921d70,0x3c4b880e,0xf92961fc,0x98940a67,0x3f6f914e,0xfef0ff39,0xa990eb0a,0xf0eeff9c,0xa6c2920f +.long 0x51b8d9a3,0xca804166,0x0ffb0db1,0x42531bc9,0xaa82e7ce,0x72ce4718,0xdf574741,0x6e199913,0xd5d36946,0xd5f1b13d,0xf68f0194,0x8255dc65,0x8710d230,0xdc9df4cd,0x138c1988,0x3453c20f +.long 0x89a6ef01,0x9af98dc0,0x9857df85,0x4dbcc3f0,0x5c1ad924,0x34805601,0xd0493046,0x40448da5,0x4ee343e2,0xf629926d,0x90e8a301,0x6343f1bd,0x40815b3f,0xefc93491,0xde8f66fb,0xf882a423 +.long 0xe7db9f57,0x3a12d5f4,0x3c384c27,0x7dfba38a,0x6fc660b1,0x7a904bfd,0x2773b21c,0xeb6c5db3,0x1cdfe049,0xc350ee66,0x44540f29,0x9baac0ce,0xa5ec6aad,0xbc57b6ab,0x0a7c1baa,0x167ce8c3 +.long 0x53fb2b56,0xb23a03a5,0x4e057f78,0x6ce141e7,0x89e490d9,0x796525c3,0xa31a7e75,0x0bc95725,0x1220fd06,0x1ec56791,0x408b0bd6,0x716e3a3c,0xe8ebeba9,0x31cd6bf7,0xbee6b670,0xa7326ca6 +.long 0xcd090c43,0x3d9f851c,0xf12c3988,0x561e8f13,0x904b7be4,0x50490b6a,0x0410737b,0x61690ce1,0x0f009052,0x299e9a37,0xf026092e,0x258758f0,0xfdfcdc0f,0x9fa255f3,0xc0e1bcd2,0xdbc9fb1f +.long 0x24651840,0x35f9dd6e,0xa5c59abc,0xdca45a84,0xecca4938,0x103d396f,0xb97b3f29,0x4532da0a,0x1999a6bf,0xc4135ea5,0x5e6bf2ee,0x3aa9505a,0x3f5be093,0xf77cef06,0xa943152e,0x97d1a0f8 +.long 0x2e1c21dd,0x2cb0ebba,0x2c6797c4,0xf41b29fc,0xb300101f,0xc6e17321,0xd0d79a89,0x4422b0e9,0x92f1bfc4,0x49e4901c,0xe1e10ed9,0x06ab1f8f,0xdb2926b8,0x84d35577,0x356e8ec2,0xca349d39 +.long 0x343bf1a9,0x70b63d32,0x37d1a6b1,0x8fd3bd28,0x316865b4,0x0454879c,0xc458efa2,0xee959ff6,0x9706dc3f,0x0461dcf8,0x164e4b2e,0x737db0e2,0x2f8843c8,0x09262680,0x7745e6f6,0x54498bbc +.long 0xa29e24af,0x359473fa,0x70aa87a1,0xfcc3c454,0x00573ace,0xfd2c4bf5,0x28dd1965,0xb65b514e,0x2193e393,0xe46ae7cf,0xf5444d97,0x60e9a4e1,0x00ff38ed,0xe7594e96,0x0a0e0f02,0x43d84d2f +.long 0xee398a21,0x8b6db141,0xe3bcc5be,0xb88a56ae,0x373460ea,0x0a1aa52f,0x160bb19b,0x20da1a56,0x65bf0384,0xfb54999d,0x5d5a180e,0x71a14d24,0x21737b04,0xbc44db7b,0x01dd8e92,0xd84fcb18 +.long 0xfa44b479,0x80de937b,0x5c98fd4f,0x53505499,0x28f08727,0x1edb12ab,0xa5f3ef53,0x4c58b582,0x8327f246,0xbfb236d8,0x4d7df320,0xc3a3bfaa,0xb96024f2,0xecd96c59,0x7f4e0433,0xfc293a53 +.long 0x5acf6e10,0x5341352b,0xafe652c3,0xc50343fd,0x18577a7f,0x4af3792d,0xaf16823d,0xe1a4c617,0x33425d0a,0x9b26d0cd,0x9b7bc47f,0x306399ed,0x706bb20b,0x2a792f33,0x98111055,0x31219614 +.long 0x87f5d28b,0x864ec064,0x962277fd,0x11392d91,0xbb6aed5f,0xb5aa7942,0x47e799d9,0x080094dc,0x208ba19b,0x4afa588c,0x8512f284,0xd3e7570f,0x02f5799a,0xcbae64e6,0x514b9492,0xdeebe7ef +.long 0xe5c298ff,0x30300f98,0x3678361f,0x17f561be,0x98cb9a16,0xf52ff312,0x5562d490,0x6233c3bc,0x92e3a2cb,0x7bfa15a1,0xe6365119,0x961bcfd1,0x2c8c53b1,0x3bdd29bf,0x822844ba,0x739704df +.long 0x7e7b754b,0x7dacfb58,0xa806c9b9,0x23360791,0x23504452,0xe7eb88c9,0x852c1783,0x2983e996,0x958d881d,0xdd4ae529,0x262c7b3c,0x026bae03,0x960b52d1,0x3a6f9193,0x92696cfb,0xd0980f90 +.long 0xd5f30851,0x4c1f428c,0x2a4f6630,0x94dfed27,0xfc5d48a4,0x4df53772,0x933260ce,0xdd2d5a2f,0xd44cc7a5,0x574115bd,0xbd12533a,0x4ba6b20d,0x243057c9,0x30e93cb8,0x14de320e,0x794c486a +.long 0xf21496e4,0xe925d4ce,0xec696331,0xf951d198,0x3e8d812f,0x9810e2de,0x389294ab,0xd0a47259,0x0e3bab66,0x513ba2b5,0xabad306f,0x462caff5,0xaf04c49e,0xe2dc6d59,0xe0b84b0b,0x1aeb8750 +.long 0x2f7d0ca2,0xc034f12f,0xe06acf2f,0x6d2e8128,0x21facc2f,0x801f4f83,0xf40ef607,0xa1170c03,0x7805a99c,0xfe0a1d4f,0xcc26aba5,0xbde56a36,0x35531f40,0x5b1629d0,0x9afa6108,0xac212c2b +.long 0x15697be5,0x30a06bf3,0x2c63c7c1,0x6f0545dc,0x7ccdadaf,0x5d8cb842,0xac7015bb,0xd52e379b,0xf462c23e,0xc4f56147,0x46bc24b0,0xd44a4298,0xe2856d4f,0xbc73d23a,0x0832bcdf,0x61cedd8c +.long 0x99f241d7,0x60953556,0x001a349d,0xee4adbd7,0xaa89e491,0x0b35bf6a,0x136f7546,0x7f0076f4,0x9264da3d,0xd19a18ba,0x62a7a28b,0x6eb2d2cd,0x8761c971,0xcdba941f,0xa3be4a5d,0x1550518b +.long 0x57d0b70c,0xd0e8e2f0,0xcd133ba3,0xeea8612e,0x44416aec,0x814670f0,0x30775061,0x424db6c3,0x16213fd1,0xd96039d1,0x18a3478f,0xc61e7fa5,0xcb0c5021,0xa805bdcc,0x0cc616dd,0xbdd6f3a8 +.long 0x5d97f7e2,0x06009667,0xaf0bf4b6,0x31db0fc1,0x5491627a,0x23680ed4,0x7d741fb1,0xb99a3c66,0x36b1ff92,0xe9bb5f55,0x512b388d,0x29738577,0x50fcf263,0xdb8a2ce7,0x6c4f7b47,0x385346d4 +.long 0x31631f9e,0xbe86c5ef,0x03a57a29,0xbf91da21,0x7b23f821,0xc3b1f796,0x770db354,0x0f7d00d2,0xd8fe79da,0x8ffc6c3b,0xd525c996,0xcc5e8c40,0xcfff632a,0x4640991d,0x67112528,0x64d97e8c +.long 0x02f1cd1e,0xc232d973,0x1dd212a4,0xce87eacb,0xe69802f7,0x6e4c8c73,0x1fffddbd,0x12ef0290,0x1bcea6e2,0x941ec74e,0x3cb92cbb,0xd0b54024,0x7e8f9d05,0x809fb9d4,0xf2992aae,0x3bf16159 +.long 0xf8a7a838,0xad40f279,0x05615660,0x11aea631,0xa01f6fa1,0xbf52e6f1,0x3dc2aec9,0xef046995,0xd8080711,0x785dbec9,0x9fdedf76,0xe1aec60a,0xfa21c126,0xece797b5,0x05e52732,0xc66e898f +.long 0x08811fdb,0x39bb69c4,0x2fc7f082,0x8bfe1ef8,0x174f4138,0xc8e7a393,0xd58d1f98,0xfba8ad1d,0xbfd2fd5b,0xbc21d0ce,0x6ee60d61,0x0b839a82,0xafd22253,0xaacf7658,0xaae396b3,0xb526bed8 +.long 0x38564464,0xccc1bbc2,0x8c45bc73,0x9e3ff947,0x58188a78,0xcde9bca3,0xd73bf8f7,0x138b8ee0,0x4123c489,0x5c7e234c,0xfa643297,0x66e69368,0x39a15fa3,0x0629eeee,0xa9e2a927,0x95fab881 +.long 0xeafbb1e1,0xb2497007,0xe75b7a93,0xd75c9ce6,0xefb68d78,0x3558352d,0x223f6396,0xa2f26699,0xe469b17a,0xeb911ecf,0xe72d3ec2,0x62545779,0x82cb113f,0x8ea47de7,0x4e1fa98d,0xebe4b086 +.long 0x8cdfedb1,0xec2d5ed7,0xfe211a74,0xa535c077,0x11d244c5,0x9678109b,0xbe299a76,0xf17c8bfb,0xfb11fbc4,0xb651412e,0x94ab3f65,0xea0b5482,0x0cf78243,0xd8dffd95,0xce0361d4,0x2e719e57 +.long 0x304ddc5b,0x9007f085,0x4daba2ea,0x095e8c6d,0x3f9d28a9,0x5a33cdb4,0xe2283003,0x85b95cd8,0xb9744733,0xbcd6c819,0xfc7f5783,0x29c5f538,0xd59038e4,0x6c49b2fa,0x3bbe1018,0x68349cc1 +.long 0x21830ee5,0xcc490c1d,0xe9bfa297,0x36f9c4ee,0x48de1a94,0x58fd7294,0x4e8f2cdc,0xaadb13a8,0x81313dba,0x515eaaa0,0xc2152dd8,0xc76bb468,0xa653dbf8,0x357f8d75,0xb14ac143,0xe4d8c4d1 +.long 0xb055cb40,0xbdb8e675,0x977b5167,0x898f8e7b,0xb82fb863,0xecc65651,0x6d88f01f,0x56544814,0x263a75a9,0xb0928e95,0x1a22fcda,0xcfb6836f,0x3f3bd37c,0x651d14db,0xb6ad4664,0x1d3837fb +.long 0xff4f94ab,0x7c5fb538,0x6d7fb8f2,0x7243c712,0xa85c5287,0xef13d60c,0x4bb8dd1b,0x18cfb7c7,0x72908219,0x82f9bfe6,0x9d5144ab,0x35c4592b,0x9cf4b42f,0x52734f37,0x8c60ddc4,0x6bac55e7 +.long 0x94dea0f6,0xb5cd811e,0xe18cc1a3,0x259ecae4,0x15e660f8,0x6a0e836e,0x0e02bff2,0x6c639ea6,0x7e1026fd,0x8721b8cb,0x63261942,0x9e73b50b,0x77f01da3,0xb8c70974,0x8268f57f,0x1839e6a6 +.long 0x5150b805,0x571b9415,0xf92c7097,0x1892389e,0x4a084b95,0x8d69c18e,0xbe5b495c,0x7014c512,0x1b07523c,0x4780db36,0x2c1c64fa,0x2f6219ce,0x602c105a,0xc38b81b0,0x5dc8e360,0xab4f4f20 +.long 0xcf7d62d2,0x20d3c982,0x23ba8150,0x1f36e29d,0x92763f9e,0x48ae0bf0,0x1d3a7007,0x7a527e6b,0x581a85e3,0xb4a89097,0xdc158be5,0x1f1a520f,0x167d726e,0xf98db37d,0x1113e862,0x8802786e +.long 0x36f09ab0,0xefb2149e,0x4a10bb5b,0x03f163ca,0x06e20998,0xd0297045,0x1b5a3bab,0x56f0af00,0x70880e0d,0x7af4cfec,0xbe3d913f,0x7332a66f,0x7eceb4bd,0x32e6c84a,0x9c228f55,0xedc4a79a +.long 0xc55c4496,0xc37c7dd0,0x25bbabd2,0xa6a96357,0xadd7f363,0x5b7e63f2,0x2e73f1df,0x9dce3782,0xb2b91f71,0xe1e5a16a,0x5ba0163c,0xe4489823,0xf6e515ad,0xf2759c32,0x8615eecf,0xa5e2f1f8 +.long 0xabded551,0x74519be7,0xc8b74410,0x03d358b8,0x0e10d9a9,0x4d00b10b,0x28da52b7,0x6392b0b1,0x0b75c904,0x6744a298,0xa8f7f96c,0xc305b0ae,0x182cf932,0x042e421d,0x9e4636ca,0xf6fc5d50 +.long 0xd64cc78c,0x795847c9,0x9b6cb27b,0x6c50621b,0xdf8022ab,0x07099bf8,0xc04eda1d,0x48f862eb,0xe1603c16,0xd12732ed,0x5c9a9450,0x19a80e0f,0xb429b4fc,0xe2257f54,0x45460515,0x66d3b2c6 +.long 0x822e37be,0x6ca4f87e,0x253bda4e,0x73f237b4,0x41190aeb,0xf747f3a2,0x804cf284,0xf06fa36f,0xfc621c12,0x0a6bbb6e,0x40b80ec6,0x5d624b64,0x7ba556f3,0x4b072425,0x3e2d20a8,0x7fa0c354 +.long 0xe3229d41,0xe921fa31,0x94531bd4,0xa929c652,0xa6d38209,0x84156027,0x6bdb97bd,0xf3d69f73,0x16833631,0x8906d19a,0x03d51be3,0x68a34c2e,0x0e511cd8,0xcb59583b,0xfdc132a8,0x99ce6bfd +.long 0xffcdb463,0x3facdaaa,0x34a38b08,0x658bbc1a,0xf1a9078d,0x12a801f8,0x6ab855de,0x1567bcf9,0x3572359b,0xe08498e0,0x8659e68b,0xcf0353e5,0x7d23807c,0xbb86e9c8,0x2198e8a2,0xbc08728d +.long 0x453cadd6,0x8de2b7bc,0xbc0bc1f8,0x203900a7,0xa6abd3af,0xbcd86e47,0x8502effb,0x911cac12,0xec965469,0x2d550242,0x29e0017e,0x0e9f7692,0x65979885,0x633f078f,0x4cf751ef,0xfb87d449 +.long 0xfc25419a,0xe1790e4b,0x4bff3cfd,0x36467203,0x25b6e83f,0xc8db6386,0x6cad6fd2,0x6cc69f23,0x6bc68bb9,0x0219e45a,0x297f7334,0xe43d79b6,0x465dc97c,0x7d445368,0x2a0b949a,0x4b9eea32 +.long 0x6102d021,0x1b96c6ba,0x2f4461ea,0xeaafac78,0xc49f19a8,0xd4b85c41,0xcf538875,0x275c28e4,0xdd2e54e0,0x35451a9d,0x0605618b,0x6991adb5,0x7b36cd24,0x5b8b4bcd,0x56f37216,0x372a4f8c +.long 0xa6a5da60,0xc890bd73,0xdc4c9ff0,0x6f083da0,0xf0536e57,0xf4e14d94,0xaaec8243,0xf9ee1eda,0x8bdcf8e7,0x571241ec,0x0b041e26,0xa5db8271,0xe3fff040,0x9a0b9a99,0x7c271202,0xcaaf21dd +.long 0x4f0dd2e8,0xb4e2b2e1,0x0a377ac7,0xe77e7c4f,0x0d7a2198,0x69202c3f,0x28200eb8,0xf759b7ff,0xdcfe314e,0xc87526ed,0x53d5cf99,0xeb84c524,0x515138b6,0xb1b52ace,0x23fca3f4,0x5aa7ff8c +.long 0xb9791a26,0xff0b13c3,0xcdd58b16,0x960022da,0x57aad2de,0xdbd55c92,0xf30fe619,0x3baaaaa3,0x0d881efd,0x9a4b2346,0x46325e2a,0x506416c0,0x035c18d4,0x91381e76,0xf27817b0,0xb3bb68be +.long 0x5116f937,0x15bfb8bf,0xc1268943,0x7c64a586,0x8419a2c8,0x71e25cc3,0x8335f463,0x9fd6b0c4,0xe8ee0e0e,0x4bf0ba3c,0x298c21fa,0x6f6fba60,0xae66bee0,0x57d57b39,0x22672544,0x292d5130 +.long 0xbab093b3,0xf451105d,0x02839986,0x012f59b9,0x3474a89c,0x8a915802,0x2de03e97,0x048c919c,0x91071cd5,0xc476a2b5,0x034970a5,0x791ed89a,0xe1b7994b,0x89bd9042,0xa1057ffd,0x8eaf5179 +.long 0xd551ee10,0x6066e2a2,0x727e09a6,0x87a8f1d8,0x2c01148d,0x00d08bab,0x424f33fe,0x6da8e4f1,0xcf9a4e71,0x466d17f0,0x3bf5cb19,0xff502010,0xd062ecc0,0xdccf97d8,0x81d80ac4,0x80c0d9af +.long 0x033f2876,0xe87771d8,0x7d5cc3db,0xb0186ec6,0x3bc9bc1d,0x58e8bb80,0x6f6ef60e,0x4d1395cc,0x186244a0,0xa73c62d6,0x110a5b53,0x918e5f23,0x741b7eab,0xed4878ca,0xdbe03e51,0x3038d71a +.long 0xa93c3246,0x840204b7,0xa0b9b4cd,0x21ab6069,0xb1d64218,0xf5fa6e2b,0xf3d56191,0x1de6ad0e,0xff1929c7,0x570aaa88,0x640e87b5,0xc6df4c6b,0xc65f0ccc,0xde8a74f2,0xe6f6cc01,0x8b972fd5 +.long 0x0b846531,0x3fff36b6,0x10a5e475,0xba7e45e6,0x4145b6c5,0x84a1d10e,0x5e046d9d,0xf1f7f91a,0x44de90d7,0x0317a692,0xf199c15e,0x951a1d4a,0xc9d73deb,0x91f78046,0xfab8224f,0x74c82828 +.long 0xe7560b90,0xaa6778fc,0xa7e824ce,0xb4073e61,0xd642eba8,0xff0d693c,0x5dccef38,0x7ce2e57a,0x1df1ad46,0x89c2c789,0x098346fd,0x83a06922,0xda2fc177,0x2d715d72,0x85b6cf1d,0x7b6dd71d +.long 0x73fa9cb0,0xc60a6d0a,0x328bf5a9,0xedd3992e,0x832c8c82,0xc380ddd0,0xa2a0bf50,0xd182d410,0xd9a528db,0x7d9d7438,0xcaf53994,0xe8b1a0e9,0x0e19987c,0xddd6e5fe,0x190b059d,0xacb8df03 +.long 0x8300129f,0x53703a32,0x68c43bfd,0x1f637662,0x00e54051,0xbcbd1913,0x7bf5a8c5,0x812fcc62,0x29fb85da,0x3f969d5f,0x694759e8,0x72f4e00a,0x790726b7,0x426b6e52,0x3bdbb209,0x617bbc87 +.long 0x97aee317,0x511f8bb9,0xe81536a8,0x812a4096,0x3ac09b9b,0x137dfe59,0xba8c9a7a,0x0682238f,0xaeccb4bd,0x7072ead6,0x692ba633,0x6a34e9aa,0x6fff9d33,0xc82eaec2,0x1d4d2b62,0xfb753512 +.long 0x1d7aadab,0x1a0445ff,0xd5f6a67c,0x65d38260,0x91cfb26f,0x6e62fb08,0x5c7d91d6,0xef1e0fa5,0x33db72cd,0x47e7c7ba,0xfa7c74b2,0x017cbc09,0xf50a503c,0x3c931590,0x616baa42,0xcac54f60 +.long 0xb2369f0f,0x9b6cd380,0x23c76151,0x97d3a70d,0x9862a9c6,0x5f9dd6fc,0x12312f51,0x044c4ab2,0x834a2ddc,0x035ea0fd,0xcc7b826d,0x49e6b862,0x62fce490,0xb03d6883,0xb37e36e9,0x62f2497a +.long 0xc6458293,0x04b005b6,0xe8d10af7,0x36bb5276,0x8ee617b8,0xacf2dc13,0xb004b3d4,0x470d2d35,0xfeeb1b77,0x06790832,0x85657f9c,0x2bb75c39,0xc0f60004,0xd70bd4ed,0x219b018b,0xfe797ecc +.long 0x753aebcc,0x9b5bec2a,0xc939eca5,0xdaf9f3dc,0xd095ad09,0xd6bc6833,0xdaa4d2fc,0x98abdd51,0x8d168be5,0xd9840a31,0x2325a23c,0xcf7c10e0,0x7e6ecfaf,0xa5c02aa0,0xb5bfdf18,0x2462e7e6 +.long 0xa0cc3f12,0xab2d8a8b,0xbc672a29,0x68dd485d,0x596f2cd3,0x72039752,0xa0cf3d8d,0x5d3eea67,0xe6602671,0x810a1a81,0x14026c0c,0x8f144a40,0x76b50f85,0xbc753a6d,0x645cd4a4,0xc4dc21e8 +.long 0x521d0378,0xc5262dea,0x05011c6f,0x802b8e0e,0x0b4c19ea,0x1ba19cbb,0xebf0aaec,0x21db64b5,0x70342f9d,0x1f394ee9,0x1bc44a14,0x93a10aee,0x3efd0baa,0xa7eed31b,0x1d154e65,0x6e7c824e +.long 0x9966e7ee,0xee23fa81,0x05b7920d,0x64ec4aa8,0x2d90aad4,0x2d44462d,0xdf277ad5,0xf44dd195,0xbb46b6a1,0x8d6471f1,0xfd885090,0x1e65d313,0x13a977b4,0x33a800f5,0x0797e1ef,0xaca9d721 +.long 0xfcff6a17,0x9a5a85a0,0x1eca7cee,0x9970a3f3,0xc9504be3,0xbb9f0d6b,0xadd24ee2,0xe0c504be,0x77fcc2f4,0x7e09d956,0x65bb5fc4,0xef1a5227,0x8b9286aa,0x145d4fb1,0x6649028b,0x66fd0c5d +.long 0x1bf4581c,0x98857ceb,0xaca7b166,0xe635e186,0x659722ac,0x278ddd22,0x1db68007,0xa0903c4c,0x48f21402,0x366e4589,0xb96abda2,0x31b49c14,0xe0403190,0x329c4b09,0xd29f43fe,0x97197ca3 +.long 0x274983d8,0x8073dd1e,0x55717c8f,0xda1a3bde,0x0361f9d1,0xfd3d4da2,0x4c7de1ce,0x1332d081,0xaa6d0e10,0x9b7ef7a3,0xf54f1c4a,0x17db2e73,0x4cd35567,0xaf3dffae,0xe56f4e71,0xaaa2f406 +.long 0x7ace3fc7,0x8966759e,0x45a8d8c6,0x9594eacf,0x91834e0e,0x8de3bd8b,0x548c0421,0xafe4ca53,0xe6ee81c6,0xfdd7e856,0x6b891a3a,0x8f671beb,0xfae63829,0xf7a58f2b,0x9c11ac9f,0x9ab186fb +.long 0x10b5be76,0x8d6eb369,0xfb040bcd,0x046b7739,0xcb73de88,0xccb4529f,0xcf26be03,0x1df0fefc,0xbcfcd027,0xad7757a6,0xbb3165ca,0xa8786c75,0x7e99a4d9,0xe9db1e34,0xb06c504b,0x99ee86df +.long 0xc15c9f0a,0x5b7c2ddd,0x4295989e,0xdf87a734,0x03d08fda,0x59ece47c,0xad5fc702,0xb074d3dd,0x51a03776,0x20407903,0x2a608007,0x2bb1f77b,0xe1153185,0x25c58f4f,0x766e6447,0xe6df62f6 +.long 0xed51275a,0xefb3d1be,0x2f0f483f,0x5de47dc7,0x97c2bedf,0x7932d98e,0x0219f8a1,0xd5c11927,0xa73a294e,0x9d751200,0x9dc20172,0x5f88434a,0xa26f506a,0xd28d9fd3,0x9d1dcd48,0xa890cd31 +.long 0x70f4d3b4,0x0aebaec1,0x0ffc8d00,0xfd1a1369,0x57d57838,0xb9d9c240,0x68bac361,0x45929d26,0x25b15ca6,0x5a2cd060,0x6e474446,0x4b3c83e1,0xee1e5134,0x1aac7578,0xc91e2f41,0xa418f5d6 +.long 0x213ed68b,0x6936fc8a,0x510a5224,0x860ae7ed,0xdef09b53,0x63660335,0xcd79c98d,0x641b2897,0x01110f35,0x29bd38e1,0x648b1937,0x79c26f42,0x9d9164f4,0x64dae519,0x0265c273,0xd85a2310 +.long 0x4b07e2b1,0x7173dd5d,0x8d9ea221,0xd144c4cb,0x1105ab14,0xe8b04ea4,0xfe80d8f1,0x92dda542,0xcf03dce6,0xe9982fa8,0x1a22cffc,0x8b5ea965,0x3fad88c4,0xf7f4ea7f,0x6a5ba95c,0x62db773e +.long 0x93f24567,0xd20f02fb,0x315257ca,0xfd46c69a,0x8bcab987,0x0ac74cc7,0x5ceca2f5,0x46f31c01,0x888b219e,0x40aedb59,0xe1fccd02,0xe50ecc37,0x911f816c,0x1bcd9dad,0x8db9b00c,0x583cc1ec +.long 0xa483bf11,0xf3cd2e66,0xb1b2c169,0xfa08a6f5,0x4be9fa28,0xf375e245,0x5b6d011f,0x99a7ffec,0xc4ae62da,0x6a3ebddb,0x374aef5d,0x6cea00ae,0x9d4d05bc,0xab5fb98d,0xd560f252,0x7cba1423 +.long 0x208490de,0x49b2cc21,0xbcfb2879,0x1ca66ec3,0x1b6fb16f,0x7f1166b7,0x65fe5db3,0xfff63e08,0x8b2610be,0xb8345abe,0x39de3df4,0xb732ed80,0x211c32b4,0x0e24ed50,0x848ff27d,0xd10d8a69 +.long 0xed4de248,0xc1074398,0x10488927,0xd7cedace,0x85673e13,0xa4aa6bf8,0x6daf30af,0xb46bae91,0xfcef7ad8,0x07088472,0xd4b35e97,0x61151608,0xdde29986,0xbcfe8f26,0xd5a34c79,0xeb84c4c7 +.long 0x164e1214,0xc1eec55c,0xa147bb03,0x891be86d,0x0ba96835,0x9fab4d10,0xa5c1ae9f,0xbf01e9b8,0xb186ebc0,0x6b4de139,0x85b91bca,0xd5c74c26,0xc2d93854,0x5086a99c,0xa7a9dfbc,0xeed62a7b +.long 0x76b7618a,0x8778ed6f,0x03b66062,0xbff750a5,0xb65186db,0x4cb7be22,0xcc3a6d13,0x369dfbf0,0x7191a321,0xc7dab26c,0x40ed718e,0x9edac3f9,0xd0cfd183,0xbc142b36,0x7c991693,0xc8af82f6 +.long 0x97ce0b2a,0xb3d1e4d8,0xc3a55cdf,0xe6d7c87f,0x68b81afe,0x35846b95,0xd3c239d8,0x018d12af,0x01206e15,0x2b2c6208,0xa3b882c6,0xe0e42453,0xa50162d5,0x854470a3,0x7017a62a,0x08157478 +.long 0x820357c7,0x18bd3fb4,0x6f1458ad,0x992039ae,0x25b44aa1,0x9a1df3c5,0xed3d5281,0x2d780357,0xc77ad4d4,0x58cf7e4d,0xf9df4fc4,0xd49a7998,0x1d71205e,0x4465a8b5,0x649254aa,0xa0ee0ea6 +.long 0xab7bd771,0x4b5eeecf,0x35c262b9,0x6c873073,0x3c9d61e7,0xdc5bd648,0x321460d2,0x233d6d54,0xfc195bcc,0xd20c5626,0x04d78b63,0x25445958,0x17ec8ef3,0xe03fcb3d,0x46b8f781,0x54b690d1 +.long 0x21230646,0x82fa2c8a,0x084f418c,0xf51aabb9,0x1a30ba43,0xff4fbec1,0x743c9df7,0x6a5acf73,0xd635b4d5,0x1da2b357,0xecd5c1da,0xc3de68dd,0xd61af0dd,0xa689080b,0xd665bf99,0xdea5938a +.long 0xfe637294,0x0231d71a,0xa5a81cd8,0x01968aa6,0x048e63b5,0x11252d50,0x6ca007e9,0xc446bc52,0x96d6134b,0xef8c50a6,0x9e09a05c,0x9361fbf5,0xdca3291a,0xf17f85a6,0xff251a21,0xb178d548 +.long 0xa4df3915,0x87f6374b,0x2fd5d608,0x566ce1bf,0x7de35102,0x425cba4d,0x58c5d5e2,0x6b745f8f,0x63122edf,0x88402af6,0x3b989a89,0x3190f9ed,0xebba3156,0x4ad3d387,0xc7c469a5,0xef385ad9 +.long 0x3f642c29,0xb08281de,0x910ffb88,0x20be0888,0xd5292546,0xf353dd4a,0x8377a262,0x3f1627de,0xeefcd638,0xa5faa013,0x74cc77c3,0x8f3bf626,0xa348f55e,0x32618f65,0x9fefeb9e,0x5787c0dc +.long 0xd9a23e44,0xf1673aa2,0x4e10690d,0x88dfa993,0x2bf91108,0x1ced1b36,0x3af48649,0x9193ceca,0x2d738fc5,0xfb34327d,0x975fee6c,0x6697b037,0xc04079a5,0x2f485da0,0x2feaa1ac,0x2cdf5735 +.long 0xbd55659e,0x76944420,0x4376090c,0x7973e32b,0x163b591a,0x86bb4fe1,0xc196f0ca,0x10441aed,0x045ad915,0x3b431f4a,0xa4afacb1,0x6c11b437,0x71fdbbd8,0x30b0c7db,0xeda65acd,0xb642931f +.long 0x9c92b235,0x4baae6e8,0x6b3993a1,0xa73bbd0e,0x693dd031,0xd06d60ec,0x7156881c,0x03cab91b,0x1db3574b,0xd615862f,0x64bb061a,0x485b0185,0xa0181e06,0x27434988,0xc1c0c757,0x2cd61ad4 +.long 0x2ff9f403,0x3effed5a,0x62239029,0x8dc98d8b,0x1f17b70d,0x2206021e,0xbf510015,0xafbec0ca,0x80130dfa,0x9fed7164,0x8a02dcf5,0x306dc2b5,0xfeb10fc0,0x48f06620,0x5a57cf51,0x78d1e1d5 +.long 0x192ef710,0xadef8c5a,0x3b7431f9,0x88afbd4b,0x64250c9e,0x7e1f7407,0xb58bec07,0x6e31318d,0x24f89b4e,0xfd4fc4b8,0x48c36a2a,0x65a5dd88,0xf024baa7,0x4f1eccff,0xcba94650,0x22a21cf2 +.long 0x42a554f7,0x95d29dee,0x002ec4ba,0x828983a5,0x8badb73d,0x8112a1f7,0xa27c1839,0x79ea8897,0xd065fd83,0x8969a5a7,0xb262a0bc,0xf49af791,0xaf2b5127,0xfcdea8b6,0x564c2dbc,0x10e913e1 +.long 0xbc21ef51,0x51239d14,0x4ce57292,0xe51c3ceb,0x47bbcc3b,0x795ff068,0xbd7e11e6,0x86b46e1e,0x80041ef4,0x0ea6ba23,0x6262342e,0xd72fe505,0x31d294d4,0x8abc6dfd,0x1278c2c9,0xbbe017a2 +.long 0xb389328a,0xb1fcfa09,0xd01771b5,0x322fbc62,0x60b045bf,0x04c0d063,0x10e52d01,0xdb652edc,0x03ec6627,0x50ef932c,0xc1ee50e3,0xde1b3b2d,0xdc37a90d,0x5ab7bdc5,0x31e33a96,0xfea67213 +.long 0x4f2999aa,0x6482b5cb,0xb8cbf0dd,0x38476cc6,0x173405bb,0x93ebfacb,0xe52369ec,0x15cdafe7,0xd935b7db,0xd42d5ba4,0x1c99a4cd,0x648b6004,0xa3b5545b,0x785101bd,0x9dd67faf,0x4bf2c38a +.long 0x4442449c,0xb1aadc63,0x33ad4fb8,0xe0e9921a,0xaa686d82,0x5c552313,0x465d866c,0xdee635fa,0x18ee6e8a,0xbc3c224a,0xed42e02f,0xeed748a6,0xd474cd08,0xe70f930a,0xfff24adf,0x774ea6ec +.long 0xf3480d4a,0x03e2de1c,0xbc8acf1a,0xf0d8edc7,0x68295a9c,0xf23e3303,0xc546a97d,0xfadd5f68,0x96f8acb1,0x895597ad,0x671bdae2,0xbddd49d5,0x21dd43f4,0x16fcd528,0x6619141a,0xa5a45412 +.long 0xc360e25a,0x8ce9b6bf,0x075a1a78,0xe6425195,0x481732f4,0x9dc756a8,0x5432b57a,0x83c0440f,0xd720281f,0xc670b3f1,0xd135e051,0x2205910e,0xdb052be7,0xded14b0e,0xc568ea39,0x697b3d27 +.long 0xfb3ff9ed,0x2e599b9a,0x17f6515c,0x28c2e0ab,0x474da449,0x1cbee4fd,0x4f364452,0x071279a4,0x01fbe855,0x97abff66,0x5fda51c4,0x3ee394e8,0x67597c0b,0x190385f6,0xa27ee34b,0x6e9fccc6 +.long 0x14092ebb,0x0b89de93,0x428e240c,0xf17256bd,0x93d2f064,0xcf89a7f3,0xe1ed3b14,0x4f57841e,0xe708d855,0x4ee14405,0x03f1c3d0,0x856aae72,0xbdd7eed5,0xc8e5424f,0x73ab4270,0x3333e4ef +.long 0xdda492f8,0x3bc77ade,0x78297205,0xc11a3aea,0x34931b4c,0x5e89a3e7,0x9f5694bb,0x17512e2e,0x177bf8b6,0x5dc349f3,0x08c7ff3e,0x232ea4ba,0xf511145d,0x9c4f9d16,0x33b379c3,0xccf109a3 +.long 0xa1f25897,0xe75e7a88,0xa1b5d4d8,0x7ac6961f,0x08f3ed5c,0xe3e10773,0x0a892dfb,0x208a54ec,0x78660710,0xbe826e19,0x237df2c8,0x0cf70a97,0xed704da5,0x418a7340,0x08ca33fd,0xa3eeb9a9 +.long 0x169bca96,0x49d96233,0x2da6aafb,0x04d286d4,0xa0c2fa94,0xc09606ec,0x23ff0fb3,0x8869d0d5,0xd0150d65,0xa99937e5,0x240c14c9,0xa92e2503,0x108e2d49,0x656bf945,0xa2f59e2b,0x152a733a +.long 0x8434a920,0xb4323d58,0x622103c5,0xc0af8e93,0x938dbf9a,0x667518ef,0x83a9cdf2,0xa1843073,0x5447ab80,0x350a94aa,0xc75a3d61,0xe5e5a325,0x68411a9e,0x74ba507f,0x594f70c5,0x10581fc1 +.long 0x80eb24a9,0x60e28570,0x488e0cfd,0x7bedfb4d,0xc259cdb8,0x721ebbd7,0xbc6390a9,0x0b0da855,0xde314c70,0x2b4d04db,0x6c32e846,0xcdbf1fbc,0xb162fc9e,0x33833eab,0xb0dd3ab7,0x9939b48b +.long 0xcb0c9c8c,0x5aaa98a7,0x81c4375c,0x75105f30,0x5ef1c90f,0xceee5057,0xc23a17bf,0xb31e065f,0xd4b6d45a,0x5364d275,0x62ec8996,0xd363f3ad,0x4391c65b,0xb5d21239,0xebb41b47,0x84564765 +.long 0x37107c78,0x20d18ecc,0x570c2a66,0xacff3b6b,0x9bd0d845,0x22f975d9,0xba178fa0,0xef0a0c46,0x76b6028e,0x1a419651,0x248612d4,0xc49ec674,0x7338af55,0x5b6ac4f2,0x7bee5a36,0x06145e62 +.long 0xe75746b5,0x33e95d07,0xc40c78be,0x1c1e1f6d,0x222ff8e2,0x967833ef,0xb49180ad,0x4bedcf6a,0x3d7a4c8a,0x6b37e9c1,0x6ddfe760,0x2748887c,0xaa3a5bbc,0xf7055123,0x7bbb8e74,0x954ff225 +.long 0x97c3dfb9,0xc42b8ab1,0xcf168154,0x55a549b0,0xc1b50692,0xad6748e7,0x6fc5cbcb,0x2775780f,0xe1c9d7c8,0x4eab80b8,0x3fdbcd56,0x8c69dae1,0x9969eace,0x47e6b4fb,0xa705cb5a,0x002f1085 +.long 0x6d3fea55,0x4e23ca44,0xf4810568,0xb4ae9c86,0x2a62f27d,0x47bfb91b,0xd9bac28c,0x60deb4c9,0x7de6c34c,0xa892d894,0x4494587d,0x4ee68259,0x1a3f8a5b,0x914ee14e,0x28700385,0xbb113eaa +.long 0x2115b4c9,0x81ca03b9,0x8908cad1,0x7c163d38,0xaa18179a,0xc912a118,0x886e3081,0xe09ed750,0x26f516ca,0xa676e3fa,0x8e732f91,0x753cacf7,0x833da8b4,0x51592aea,0x4cbea8aa,0xc626f42f +.long 0xa7b56eaf,0xef9dc899,0x34ef7316,0x00c0e52c,0xfe818a86,0x5b1e4e24,0xc538be47,0x9d31e20d,0x3ed68974,0x22eb932d,0x7c4e87c4,0xe44bbc08,0x0dde9aef,0x4121086e,0x134f4345,0x8e6b9cff +.long 0x711b0eb9,0x96892c1f,0x780ab954,0xb905f2c8,0xa20792db,0xace26309,0x0684e126,0xec8ac9b3,0xb40a2447,0x486ad8b6,0x9fe3fb24,0x60121fc1,0x1a8e3b3f,0x5626fccf,0x6ad1f394,0x4e568622 +.long 0x196aa5a1,0xda7aae0d,0x1041b5fb,0xe0df8c77,0x26b318b7,0x451465d9,0x7ab136e9,0xc29b6e55,0x71148463,0x2c2ab48b,0x64454a76,0xb5738de3,0x5a03abe4,0x54ccf9a0,0x0427d58e,0x377c0296 +.long 0x2bb39c1f,0x73f5f0b9,0xe608d8c5,0x14373f2c,0x00fbb805,0xdcbfd314,0x83afdcfb,0xdf18fb20,0x42b3523f,0x81a57f42,0x87f650fb,0xe958532d,0x8b0a7d7c,0xaa8dc8b6,0x150166be,0x1b75dfb7 +.long 0x2d7d1413,0x90e4f7c9,0x9834f597,0x67e2d6b5,0xa808c3e8,0x4fd4f4f9,0xd5281ec1,0xaf8237e0,0x84687cee,0x25ab5fdc,0xa5b26c09,0xc5ded6b1,0xc8ea7650,0x8e4a5aec,0x14cc417f,0x23b73e5c +.long 0x3037bf52,0x2bfb4318,0x78c725d7,0xb61e6db5,0xbbb3e5d7,0x8efd4060,0xdbac488e,0x2e014701,0x360aa449,0xac75cf9a,0x79634d08,0xb70cfd05,0xfffb15ef,0xa591536d,0xd07c106c,0xb2c37582 +.long 0xf50225f9,0xb4293fdc,0xb0e12b03,0xc52e175c,0xd0a8bf64,0xf649c3ba,0xeb8ae3c6,0x745a8fef,0x58321bc3,0x30d7e5a3,0x0bc4df48,0xb1732be7,0xe9ea5058,0x1f217993,0x3e4fd745,0xf7a71cde +.long 0x894c5bbb,0x86cc533e,0x69d83082,0x6915c7d9,0x5815c244,0xa6aa2d05,0x49b22ce5,0xaeeee592,0x78135486,0x89e39d13,0x16b76f2f,0x3a275c1f,0xe036e8f5,0xdb6bcc1b,0x5e4709f5,0x4df69b21 +.long 0x2d0f39aa,0xa188b250,0x15a85947,0x622118bb,0xfde0f4fa,0x2ebf520f,0x4860e539,0xa40e9f29,0x22b57f0f,0x7b6a51eb,0x7e80644a,0x849a33b9,0x1cf095fe,0x50e5d16f,0xec55f002,0xd754b54e +.long 0x236f4a98,0x5cfbbb22,0x066800bb,0x0b0c59e9,0x5a9a7774,0x4ac69a8f,0xd6bec948,0x2b33f804,0x32e6c466,0xb3729295,0x4e599c73,0x68956d0f,0x155c31cc,0xa47a249f,0xe1ce284e,0x24d80f0d +.long 0x988baf01,0xcd821dfb,0xdbb16647,0xe6331a7d,0x094cb960,0x1eb8ad33,0xc91bbca5,0x593cca38,0x26567456,0x384aac8d,0xc04b6490,0x40fa0309,0xdab6c8f6,0x97834cd6,0x3f91e55f,0x68a7318d +.long 0xfc4d3157,0xa00fd04e,0x2bf3bdea,0xb56f8ab2,0x4fa57172,0x014f5648,0x450abdb3,0x948c5860,0x0ebd4f08,0x342b5df0,0x0e82938e,0x3e5168cd,0xb0df5dd0,0x7aedc1ce,0xe5732516,0x6bbbc6d9 +.long 0x605daaa6,0xc7bfd486,0xbb9a6c9e,0x46fd72b7,0xa124fb89,0xe4847fb1,0xa2d8ffbc,0x75959cbd,0xc8a588ee,0x42579f65,0xb80b499d,0x368c92e6,0x999a5df1,0xea4ef6cd,0x936fe604,0xaa73bb7f +.long 0x6457d188,0xf347a70d,0x8b7a388b,0x86eda86b,0x0ccd6013,0xb7cdff06,0xd0053fb2,0xbeb1b6c7,0x99240a9f,0x0b022387,0x776189b2,0x1bbb384f,0x9066193a,0x8695e71e,0x06ffac7e,0x2eb50097 +.long 0x4a7d2caa,0x0654a9c0,0xa5aaa290,0x6f3fb3d1,0xff476e8f,0x835db041,0xc42295e4,0x540b8b0b,0x05e214f5,0xa5c73ac9,0x56a0b638,0x9a74075a,0xce9e680b,0x2e4b1090,0x6b8d9afa,0x57a5b479 +.long 0x26bfe65c,0x0dca48e7,0x7290c307,0x097e391c,0x6669e72e,0x683c462e,0x062559ac,0xf505be1e,0xe3a3035a,0x5fbe3ea1,0x9cd50da8,0x6431ebf6,0x1f6407f2,0xfd169d5c,0x60fce6b8,0x8d838a95 +.long 0x650006f0,0x2a2bfa7f,0x50c0fbb2,0xdfd7dad3,0xccf9ad96,0x92452495,0xd95635f9,0x183bf494,0x4a7bd989,0x02d5df43,0xa5431095,0x505385cc,0xfd43f53e,0xdd98e67d,0x500c34a9,0xd61e1a6c +.long 0x4a8a3d62,0x5a4b46c6,0x247743d2,0x8469c4d0,0x88f7e433,0x2bb3a13d,0x01be5849,0x62b23a10,0xa63d1a4c,0xe83596b4,0x7d183f3e,0x454e7fea,0x17afb01c,0x643fce61,0x1c4c3638,0x4e65e5e6 +.long 0xef74c45b,0x41d85ea1,0xae328506,0x2cfbfa66,0x3ada7da9,0x98b078f5,0xec752fbb,0xd985fe37,0x5a0148b4,0xeece68fe,0x2d78136d,0x6f9a55c7,0xd2b729ce,0x232dccc4,0x90aafbc4,0xa27e0dfd +.long 0x12b4603e,0x96474452,0x6b706d14,0xa876c551,0x69a9d412,0xdf145fcf,0x2d479c34,0xe2ab75b7,0x1a23ff97,0x12df9a76,0x5d359d10,0xc6138992,0xfa835f22,0x6e51c7ae,0xc0fcc4d9,0x69a79cb1 +.long 0x594cc7e1,0xf57f350d,0x3350ab79,0x3079ca63,0x9aff594a,0x226fb614,0x6d59a62b,0x35afec02,0x06ed2c6e,0x9bee46f4,0x7d939a57,0x58da1735,0x8fd1797e,0x44c50402,0x5ccea6ca,0xd8853e7c +.long 0xa35fcd5f,0x4065508d,0x495ccaeb,0x8965df8c,0x12e1a962,0x0f2da850,0xc1cf1cc4,0xee471b94,0x0a08fb75,0xcef19bc8,0x81de3591,0x704958f5,0x3aef4f88,0x2867f8b2,0xea9f9a5f,0x8d749384 +.long 0x8c9049f4,0x1b385537,0x7b92d8b6,0x5be948f3,0xb6e2bd6b,0xd96f725d,0x958c454d,0x37a222bc,0x8809bf61,0xe7c61abb,0x1346f18d,0x46f07fbc,0xe87c0d1c,0xfb567a7a,0x7ef3d07a,0x84a461c8 +.long 0xd9278d98,0x0a5adce6,0x9dfc73e1,0x24d94813,0x054321c3,0x4f3528b6,0x692ea706,0x2e03fdde,0x47b533c0,0x10e60619,0x2ca3c055,0x1a8bc73f,0x1bb62b8f,0xae58d4b2,0x584a24e3,0xb2045a73 +.long 0xbd76e195,0x3ab3d5af,0x6938a810,0x478dd1ad,0x6ee3d5cb,0x6ffab393,0x22b361e4,0xdfb693db,0x51dbf1a7,0xf9694496,0x08a2e762,0xcab4b4ef,0xd39bba9a,0xe8c92f25,0xf1464d96,0x850e61bc +.long 0xdc09508b,0xb7e830e3,0x74317655,0xfaf6d2cf,0xdf690355,0x72606ceb,0xd0c3ded6,0x48bb92b3,0x5c7cf892,0x65b75484,0xd5d5f01f,0xf6cd7ac9,0x96401d69,0xc2c30a59,0xed921878,0x91268650 +.long 0xb78c558f,0x380bf913,0xc8afdaa9,0x43c0baeb,0x54f169d3,0x377f61d5,0xae5ff20b,0xf8da07e3,0xa8a90ea8,0xb676c49d,0x83a29b21,0x81c1ff2b,0x2ad8d276,0x383297ac,0xba89f982,0x3001122f +.long 0x6718e448,0xe1d794be,0x7c3e6e13,0x246c1482,0x5d26b5ef,0x56646ef8,0x88069cdd,0x80f5091e,0x724bdd38,0xc5992e2f,0x8471e8c7,0x02e915b4,0x0d0ff2a9,0x96ff320a,0x4384d1a0,0xbf886487 +.long 0xc93f72d6,0xbbe1e6a6,0xcad800ea,0xd5f75d12,0xe7acf117,0xfa40a09f,0x7581a355,0x32c8cdd5,0x7023c499,0x74221992,0x38ec3901,0xa8afe5d7,0xa90e83f0,0x5691afcb,0x0b8f8eac,0x41bcaa03 +.long 0x8d2668d5,0xe38b5ff9,0x7ad81965,0x0715281a,0x03c6ce11,0x1bc8fc7c,0x8b650436,0xcbbee6e2,0x0cdb9808,0x06b00fe8,0xfe3ed315,0x17d6e066,0x4d0b5018,0x2e9d38c6,0x844dcaef,0xab8bfd56 +.long 0x513aed8b,0x42894a59,0x314bd07a,0xf77f3b6d,0x8e42b582,0xbbdecb8f,0xd2390fe6,0xf10e2fa8,0x62a2f201,0xefb95022,0x50ee32b0,0x4d59ea50,0x6da789a8,0xd87f7728,0xf79492c4,0xcf98a2cf +.long 0x720943c2,0xf9577239,0x3990b9d0,0xba044cf5,0x95f2884a,0x5aa8e823,0x0278a0af,0x834de6ed,0x5f25bd12,0xc8e1ee9a,0x6f7ab271,0x9259ceaa,0x77d00b76,0x7e6d97a2,0xa437832a,0x5c0c6eea +.long 0x5606b81d,0x5232c20f,0x0d991ee5,0xabd7b375,0x8632d951,0x4d2bfe35,0x98ed9364,0x78f85146,0xf30c3282,0x951873f0,0xa789230b,0x0da8ac80,0x5398967f,0x3ac7789c,0xbdda0fb5,0xa69b8f7f +.long 0x6add8545,0xe5db7717,0x72c49b66,0x1b71cb66,0x68421d77,0xd8560739,0x83e3afea,0x03840fe8,0x1ec69977,0xb391dad5,0x307f6726,0xae243fb9,0xe8ca160c,0xc88ac87b,0x4ce355f4,0x5174cced +.long 0xe58ba37d,0x98a35966,0x7817335d,0xfdcc8da2,0x83fbc7bf,0x5b752830,0xd9c96984,0x68e419d4,0x02a40380,0x409a39f4,0x1fe977bc,0x88940faf,0x8f8edea6,0xc640a94b,0xed11547d,0x1e22cd17 +.long 0x59ffc3e2,0xe28568ce,0xc1dee4e7,0x60aa1b55,0x837cb363,0xc67497c8,0x105a2bf2,0x06fb438a,0x500d8e20,0x30357ec4,0x0670db10,0x1ad9095d,0xc73b7cfd,0x7f589a05,0x880d6d28,0xf544607d +.long 0xa20ef103,0x17ba93b1,0x6ba6577b,0xad859130,0x6fa214a0,0x65c91cf6,0x27990da5,0xd7d49c6c,0x20bb569d,0xecd9ec8d,0xeeffbc33,0xbd4b2502,0x6bed0467,0x2056ca5a,0x5b63728c,0x7916a1f7 +.long 0x53a4f566,0xd4f9497d,0x97b56810,0x89734664,0x0494a621,0xf8e1da74,0x8d011c68,0x82546a93,0xc61ac162,0x1f3acb19,0xabad0d3e,0x52f8fa9c,0xb4b7ea43,0x15356523,0xae608125,0x5a16ad61 +.long 0x4faed184,0xb0bcb87f,0x5029f45f,0x5f236b1d,0x0bc6b1fc,0xd42c7607,0x68aefce3,0xc644324e,0x5c5d8446,0x8e191d59,0x13ae1979,0xc0208077,0x3ba59cc7,0xadcaee55,0xa2cb81ba,0x20ed6d6b +.long 0xb6efcffc,0x0952ba19,0x97c0b87c,0x60f12d68,0x9caa30bc,0x4ee2c7c4,0x97fbff4e,0x767238b7,0x501b5d92,0xebc73921,0xc2a37737,0x3279e3df,0x6d197543,0x9fc12bc8,0x0a40db4e,0xfa94dc6f +.long 0x530ccbbd,0x7392b41a,0xea823525,0x87c82146,0x05d98d0c,0xa52f984c,0x5ef6974c,0x2ae57d73,0x3042a6dd,0x9377f7bf,0x19647a64,0xb1a007c0,0x0cca9767,0xfaa9079a,0xf68f72d5,0x3d81a25b +.long 0xff81578e,0x752067f8,0x9045447d,0x78622150,0x0505aa6f,0xc0c22fcf,0x6bed1c77,0x1030f0a6,0x1f0bd739,0x31f29f15,0xe6debe85,0x2d7989c7,0x8e677e98,0x5c070e72,0x06e81fd5,0x0a817bd3 +.long 0xb0f2ac95,0xc110d830,0xab20e64e,0x48d0995a,0x7729cd9a,0x0f3e00e1,0xdd556946,0x2a570c20,0x4e86214d,0x912dbcfd,0xcf615498,0x2d014ee2,0x3530d76e,0x55e2b1e6,0xfd0fd6d1,0xc5135ae4 +.long 0xd4f3049f,0x0066273a,0xe7087477,0xbb8e9893,0x14c6e5fd,0x2dba1ddb,0x51f57e6c,0xdba37886,0x5a72f2cf,0x5aaee0a6,0x7bea5642,0x1208bfbf,0x67872c37,0xf5c6aa3b,0x43f93224,0xd726e083 +.long 0x061f1658,0x1854daa5,0xdf0cd2b3,0xc0016df1,0x833d50de,0xc2a3f23e,0xbbbd3017,0x73b681d2,0x3ac343c0,0x2f046dc4,0x85716421,0x9c847e7d,0x0917eed4,0xe1e13c91,0x63a1b9c6,0x3fc9eebd +.long 0x7fe02299,0x0f816a72,0x294f3319,0x6335ccc2,0x4745c5be,0x3820179f,0x922f066e,0xe647b782,0x02cafb8a,0xc22e49de,0xfcc2eccc,0x299bc2ff,0x6e0e8282,0x9a8feea2,0xfe893205,0xa627278b +.long 0x7933e47b,0xa7e19733,0x2e766402,0xf4ff6b13,0x98440d9f,0xa4d8be0a,0x38938808,0x658f5c2f,0xc95b3b3e,0x90b75677,0x3137b6ff,0xfa044269,0x43c47c29,0x077b039b,0x8a6445b2,0xcca95dd3 +.long 0x2333fc4c,0x0b498ba4,0xf736a1b1,0x274f8e68,0x5f1d4b2e,0x6ca348fd,0xa8f10199,0x24d3be78,0xca14f530,0x8535f858,0x5b982e51,0xa6e7f163,0x36e1bf62,0x847c8512,0x03448418,0xf6a7c58e +.long 0xf9374ab6,0x583f3703,0x6e564145,0x864f9195,0x22526d50,0x33bc3f48,0x1262a496,0x9f323c80,0x3f046a9a,0xaa97a7ae,0xdf8a039a,0x70da183e,0x52aa0ba6,0x5b68f71c,0x21459c2d,0x9be0fe51 +.long 0xcbc613e5,0xc1e17eb6,0x497ea61c,0x33131d55,0xaf7eded5,0x2f69d39e,0xde6af11b,0x73c2f434,0xa4a375fa,0x4ca52493,0xb833c5c2,0x5f06787c,0x3e6e71cf,0x814e091f,0x8b746666,0x76451f57 +.long 0x694db7e0,0x80f9bdef,0xb9fcddc6,0xedca8787,0x03b8dce1,0x51981c34,0x70e10ba1,0x4274dcf1,0x6def6d1a,0xf72743b8,0xebdb1866,0xd25b1670,0x050c6f58,0xc4491e8c,0x87fbd7f5,0x2be2b2ab +.long 0xd111f8ec,0x3e0e5c9d,0xb7c4e760,0xbcc33f8d,0xbd392a51,0x702f9a91,0xc132e92d,0x7da4a795,0x0bb1151b,0x1a0b0ae3,0x02e32251,0x54febac8,0x694e9e78,0xea3a5082,0xe4fe40b8,0xe58ffec1 +.long 0xd1e0cf9e,0xf85592fc,0xc0e7b2e8,0xdea75f0d,0xc135584e,0xc04215cf,0x2f57092a,0x174fc727,0xeb930bea,0xe7277877,0x5eb02a5a,0x504caccb,0xf5241b9b,0xf9fe08f7,0x8d5ca954,0xe7fb62f4 +.long 0x29c4120b,0xfbb8349d,0xc0d0d915,0x9f94391f,0x5410ba51,0xc4074fa7,0x150a5911,0xa66adbf6,0x34bfca38,0xc164543c,0xb9e1ccfc,0xe0f27560,0xe820219c,0x99da0f53,0xc6b4997a,0xe8234498 +.long 0x9d4c5423,0xcfb88b76,0xb0521c49,0x9e56eb10,0xbe8700a1,0x418e0b5e,0xf93cb58a,0x00cbaad6,0xd92a5e67,0xe923fbde,0x1f347f11,0xca4979ac,0x6bc0585b,0x89162d85,0xac3c70e3,0xdd6254af +.long 0x516e19e4,0x7b23c513,0xc5c4d593,0x56e2e847,0x5ce71ef6,0x9f727d73,0xf79a44c5,0x5b6304a6,0x3ab7e433,0x6638a736,0xfe742f83,0x1adea470,0x5b7fc19f,0xe054b854,0xba1d0698,0xf935381a +.long 0x799e9a74,0x546eab2d,0xa949f729,0x96239e0e,0x7090055a,0xca274c6b,0x9020c9b0,0x835142c3,0xa2e8807f,0xa405667a,0x1aa3d39e,0x29f2c085,0x42fc72f5,0xcc555d64,0xfbeacb3c,0xe856e0e7 +.long 0x918e4936,0xb5504f9d,0xb2513982,0x65035ef6,0x6f4d9cb9,0x0553a0c2,0xbea85509,0x6cb10d56,0xa242da11,0x48d957b7,0x672b7268,0x16a4d3dd,0x8502a96b,0x3d7e637c,0x730d463b,0x27c7032b +.long 0xe4136a14,0xbdc02b18,0x678e32bf,0xbacf969d,0xdd9c3c03,0xc98d89a3,0x23becc4f,0x7b92420a,0xc64d565c,0xd4b41f78,0x10f28295,0x9f969d00,0xb13d051a,0xec7f7f76,0xa92da585,0x08945e1e +.long 0x5846426f,0x55366b7d,0x247d441d,0xe7d09e89,0x736fbf48,0x510b404d,0xe784bd7d,0x7fa003d0,0x17fd9596,0x25f7614f,0x35cb98db,0x49e0e0a1,0x2e83a76a,0x2c65957b,0xcddbe0f8,0x5d40da8d +.long 0x050bad24,0xf2b8c405,0xc2aa4823,0x8918426d,0xa38365a7,0x2aeab3dd,0x7c91b690,0x72031717,0x60a94120,0x8b00d699,0xe99eaeec,0x478a255d,0x6f60aafd,0xbf656a5f,0x5dee77b3,0xdfd7cb75 +.long 0xa595939d,0x37f68bb4,0x28740217,0x03556479,0x84ad7612,0x8e740e7c,0x9044695f,0xd89bc843,0x85a9184d,0xf7f3da5d,0x9fc0b074,0x562563bb,0xf88a888e,0x06d2e6aa,0x161fbe7c,0x612d8643 +.long 0xf64085e7,0x465edba7,0x29aa8511,0xb230f304,0xcda2d188,0x53388426,0x4b666649,0x90885735,0x652f54f6,0x6f02ff9a,0x5fae2bf0,0x65c82294,0x62f5eee3,0x7816ade0,0xfcc56d70,0xdcdbdf43 +.long 0x54530bb2,0x9fb3bba3,0xcb0869ea,0xbde3ef77,0x0b431163,0x89bc9046,0xe4819a35,0x4d03d7d2,0x43b6a782,0x33ae4f9e,0x9c88a686,0x216db307,0x00ffedd9,0x91dd88e0,0x12bd4840,0xb280da9f +.long 0x1635e741,0x32a7cb8a,0x78be02a7,0xfe14008a,0x1b7ae030,0x3fafb334,0x5add0ce9,0x7fd508e7,0xd607ad51,0x72c83219,0x8d40964a,0x0f229c0a,0x1c878da2,0x1be2c336,0xeab2ab86,0xe0c96742 +.long 0x3e538cd7,0x458f8691,0x8e08ad53,0xa7001f6c,0xbf5d15ff,0x52b8c6e6,0x011215dd,0x548234a4,0x3d5b4045,0xff5a9d2d,0x4a904190,0xb0ffeeb6,0x48607f8b,0x55a3aca4,0x30a0672a,0x8cbd665c +.long 0x42583068,0x87f834e0,0xf3f6e683,0x02da2aeb,0x05c12248,0x6b763e5d,0x65a8aefc,0x7230378f,0x71e8e5ca,0x93bd80b5,0xb3b62524,0x53ab041c,0x6c9c552e,0x1b860513,0xd5524e66,0xe84d402c +.long 0xf37f5937,0xa37f3573,0xd1e4fca5,0xeb0f6c7d,0xac8ab0fc,0x2965a554,0x274676ac,0x17fbf56c,0xacf7d720,0x2e2f6bd9,0x10224766,0x41fc8f88,0x85d53bef,0x517a14b3,0x7d76a7d1,0xdae327a5 +.long 0xc4818267,0x6ad0a065,0x37c1bbc1,0x33aa189b,0x27392a92,0x64970b52,0x2d1535ea,0x21699a1c,0xc2d7a7fd,0xcd20779c,0x99c83cf2,0xe3186059,0x72c0b8c7,0x9b69440b,0x7b9e0e4d,0xa81497d7 +.long 0x1f5f82dc,0x515d5c89,0x6361079e,0x9a7f67d7,0x11a35330,0xa8da81e3,0x4b18be1b,0xe44990c4,0xaf103e59,0xc7d5ed95,0x8dac9261,0xece8aba7,0x9394b8d3,0xbe82b099,0x16adfe83,0x6830f09a +.long 0x88172d01,0x250a29b4,0xcaff9e02,0x8b20bd65,0xe8a6329a,0xb8a7661e,0xd3fce920,0x4520304d,0x2b47f7ef,0xae45da1f,0x5bffc540,0xe07f5288,0x3464f874,0xf7997009,0xa6fa1f38,0x2244c2cd +.long 0x94d7d9b1,0x43c41ac1,0xc82e7f17,0x5bafdd82,0x5fda0fca,0xdf0614c1,0xa8ae37ad,0x74b043a7,0x9e71734c,0x3ba6afa1,0x9c450f2e,0x15d5437e,0x67e242b1,0x4a5883fe,0x2c1953c2,0x5143bdc2 +.long 0xfc5e8920,0x542b8b53,0x9a9cee08,0x363bf9a8,0xc3486e08,0x02375f10,0x8c5e70d2,0x2037543b,0x625640b4,0x7109bccc,0x8bc62c3b,0xcbc1051e,0x803f26ea,0xf8455fed,0xeb372424,0x6badceab +.long 0x6b53f5f9,0xa2a9ce7c,0x1b176d99,0x64246595,0xb95c081b,0xb1298d36,0x1d9a9ee6,0x53505bb8,0xf2ba70b0,0x3f6f9e61,0x8afad453,0xd07e16c9,0xe7eb4a6a,0x9f1694bb,0x3cb0bc8e,0xdfebced9 +.long 0x53868c8b,0x92d3dcdc,0x386107a6,0x174311a2,0x689b4e64,0x4109e07c,0x2df3dcb6,0x30e4587f,0x0811b3b2,0x841aea31,0x0cce43ea,0x6144d41d,0x2a9a7803,0x464c4581,0x3e158930,0xd03d371f +.long 0xb1f3390b,0xc676d7f2,0xa5b61272,0x9f7a1b8c,0xc2e127a9,0x4ebebfc9,0x5dd997bf,0x4602500c,0x4711230f,0x7f09771c,0x020f09c1,0x058eb37c,0xfee5e38b,0xab693d4b,0x4653cbc0,0x9289eb1f +.long 0xd51b9cf5,0xbecf46ab,0x9f0121af,0xd2aa9c02,0xe90dc274,0x36aaf7d2,0x48b95a3c,0x909e4ea0,0x6f32dbdb,0xe6b70496,0x8b030b3e,0x672188a0,0xcfb617e2,0xeeffe5b3,0x7c82709e,0x87e947de +.long 0x1770f5a7,0xa44d2b39,0x0e44eb82,0xe4d4d791,0x3f69712a,0x42e69d1e,0xac6a820e,0xbf11c4d6,0x42c4224c,0xb5e7f3e5,0x449d941c,0xd6b4e81c,0x5450e878,0x5d72bd16,0xee25ac54,0x6a61e28a +.long 0xe6f1cd95,0x33272094,0x0d18673f,0x7512f30d,0x5afc1464,0x32f7a4ca,0x6bbb977b,0x2f095656,0xa8226200,0x586f47ca,0x1ac07369,0x02c868ad,0xc613acbe,0x4ef2b845,0x0386054c,0x43d7563e +.long 0xab952578,0x54da9dc7,0x26e84d0b,0xb5423df2,0x9b872042,0xa8b64eeb,0x5990f6df,0xac205782,0x21f4c77a,0x4ff696eb,0xaab273af,0x1a79c3e4,0x9436b3f1,0x29bc922e,0xd6d9a27a,0xff807ef8 +.long 0x778f22a0,0x82acea3d,0x5b5e7469,0xfb10b2e8,0x2818ee7d,0xc0b16980,0xc91c1a2f,0x011afff4,0xad124418,0x95a6d126,0xe72e295f,0x31c081a5,0xf2f4db75,0x36bb283a,0x7acef462,0xd115540f +.long 0x33f6746c,0xc7f3a8f8,0xfea990ca,0x21e46f65,0xcaddb0a9,0x915fd5c5,0x78614555,0xbd41f016,0x426ffb58,0x346f4434,0x14dbc204,0x80559436,0x5a969b7f,0xf3dd20fe,0xe899a39a,0x9d59e956 +.long 0x8ad4cf4b,0xf1b0971c,0x2ffb8fb8,0x03448860,0x65340ba4,0xf071ac3c,0xb27fd758,0x408d0596,0x98c364b0,0xe7c78ea4,0x051e8ab5,0xa4aac4a5,0x485d9002,0xb9e1d560,0x88844455,0x9acd518a +.long 0xd06f56c0,0xe4ca688f,0xdf027972,0xa48af70d,0x5e9a609d,0x691f0f04,0xee61270e,0xa9dd82cd,0xa0ef18d3,0x8903ca63,0x3d6ca3bd,0x9fb7ee35,0xabf47d03,0xa7b4a09c,0x1c67de8e,0x4cdada01 +.long 0x9355a244,0x52003749,0x4f2151a9,0xe77fd2b6,0x66b4efcb,0x695d6cf6,0xda2cfe25,0xc5a0cacf,0xef811865,0x104efe5c,0x9ea5cc3d,0xf52813e8,0x40b58dbc,0x855683dc,0x175fcb11,0x0338ecde +.long 0x74921592,0xf9a05637,0xb9bb9d31,0xb4f1261d,0x4e9c5459,0x551429b7,0x6ea71f53,0xbe182e6f,0xdfc50573,0xd3a3b07c,0x62be8d44,0x9ba1afda,0x52ab65d3,0x9bcfd2cb,0xa9571802,0xdf11d547 +.long 0x02a2404a,0x099403ee,0x21088a71,0x497406f4,0x5004ae71,0x99479409,0xa812c362,0xbdb42078,0xd8828442,0x2b72a30f,0xfcb5ed1c,0x283add27,0x66a40015,0xf7c0e200,0x08b295ef,0x3e3be641 +.long 0xe038a675,0xac127dc1,0x8c5c6320,0x729deff3,0xa90d2c53,0xb7df8fd4,0x681e7cd3,0x9b74b0ec,0xdab407e5,0x5cb5a623,0x76b340c6,0xcdbd3615,0x7d28392c,0xa184415a,0xe96f7830,0xc184c1d8 +.long 0x81d3a80f,0xc3204f19,0xc8e02432,0xfde0c841,0x8149e0c1,0x78203b3e,0x08053a73,0x5904bdbb,0x101b6805,0x30fc1dd1,0x49aa6d49,0x43c223bc,0x7a174087,0x9ed67141,0xd5997008,0x311469a0 +.long 0x5e43fc61,0xb189b684,0xe0d3ab57,0xf3282375,0xb1181da8,0x4fa34b67,0x99ee52b8,0x621ed0b2,0xad990676,0x9b178de1,0x56d54065,0xd51de67b,0x7538c201,0x2a2c27c4,0x38a40f5c,0x33856ec8 +.long 0xbe6cdcde,0x2522fc15,0x9f0c6f89,0x1e603f33,0x103e30a6,0x7994edc3,0x220c853e,0x033a00db,0xf7bb7fd7,0xd3cfa409,0x462d18f6,0x70f8781e,0x687fe295,0xbbd82980,0x595669f3,0x6eef4c32 +.long 0x2f7e85c3,0x86a9303b,0x71988f9b,0x5fce4621,0xc138acb5,0x5b935bf6,0x25661212,0x30ea7d67,0xe51ab9a2,0xef1eb5f4,0xae067c78,0x0587c98a,0x77ca9ca6,0xb3ce1b3c,0x54b5f057,0x2a553d4d +.long 0x4da29ec2,0xc7898236,0xb9c57316,0xdbdd5d13,0x2cd80d47,0xc57d6e6b,0xfe9e7391,0x80b460cf,0xf963c31e,0x98648cab,0xcc4d32fd,0x67f9f633,0xfdf7c687,0x0af42a9d,0x0b015ea7,0x55f292a3 +.long 0xcd21ab3d,0x89e468b2,0xc393d392,0xe504f022,0xa5013af9,0xab21e1d4,0xc2c28acb,0xe3283f78,0x226bf99f,0xf38b35f6,0x0e291e69,0xe8354274,0xb20c162d,0x61673a15,0xb04fbdbe,0xc101dc75 +.long 0x255bd617,0x8323b4c2,0x6c2a9154,0x6c969693,0x62679387,0xc6e65860,0xb8c88e23,0x8e01db0c,0x893a5559,0x33c42873,0x47a3e149,0x7630f04b,0xddcf35f8,0xb5d80805,0x77dfe732,0x582ca080 +.long 0x0b1894a0,0x2c7156e1,0xd81c68c0,0x92034001,0xc8b115b5,0xed225d00,0x83b907f2,0x237f9c22,0x4470e2c0,0x0ea2f32f,0x58be4e95,0xb725f7c1,0xb1ae5463,0x0f1dcafa,0x1ba2fc04,0x59ed5187 +.long 0xd0115d4d,0xf6e0f316,0xd3691599,0x5180b12f,0x527f0a41,0x157e32c9,0xa8e0ecc0,0x7b0b081d,0xbf4f0dd0,0x6dbaaa8a,0x4d252696,0x99b289c7,0xdbf864fe,0x79b7755e,0x76cad3ab,0x6974e2b1 +.long 0x06ddd657,0x35dbbee2,0x2ff3a96d,0xe7cbdd11,0x076be758,0x88381968,0x08c91f5d,0x2d737e72,0x86ec3776,0x5f83ab62,0x945fa7a1,0x98aa649d,0x72ef0933,0xf477ec37,0x098c17b1,0x66f52b1e +.long 0xd803738b,0x9eec58fb,0xe4e86aa4,0x91aaade7,0xa5b51492,0x6b1ae617,0xbbc45974,0x63272121,0x862c5129,0x7e0e28f0,0x3321a4a0,0x0a8f79a9,0x5041c88f,0xe26d1664,0x53233e3a,0x0571b805 +.long 0xc9520711,0xd1b0ccde,0x3c8b84bf,0x55a9e4ed,0xa1fef314,0x9426bd39,0x6eb93f2b,0x4f5f638e,0x2bf9341b,0xba2a1ed3,0x4d42d5a9,0xd63c1321,0x316dc7c5,0xd2964a89,0xca511851,0xd1759606 +.long 0xf9e6ed35,0xd8a9201f,0x6736925a,0xb7b5ee45,0x99581af7,0x0a83fbbc,0x64eeb051,0x3076bc40,0x02dec312,0x5511c98c,0x238dcb78,0x270de898,0x539c08c9,0x2cf4cf9c,0x38d3b06e,0xa70cb65e +.long 0xcfe57bbd,0xb12ec10e,0x35a0c2b5,0x82c7b656,0x161c67bd,0xddc7d5cd,0xae3a32cc,0xe32e8985,0xd11a5529,0x7aba9444,0x2427fa1a,0xe964ed02,0x24a1770a,0x1528392d,0x12c72fcd,0xa152ce2c +.long 0x8ec07649,0x714553a4,0x459dd453,0x18b4c290,0x7b64b110,0xea32b714,0x2e6f07a2,0xb871bfa5,0x9e2e3c9b,0xb67112e5,0x44aa90f6,0xfbf250e5,0xbd539006,0xf77aedb8,0xd172a66f,0x3b0cdf9a +.long 0xf8c51187,0xedf69fea,0x741e4da7,0x05bb67ec,0x08114345,0x47df0f32,0xbb9792b1,0x56facb07,0x8f6229e4,0xf3e007e9,0x526fba0f,0x62d103f4,0xb0339d79,0x4f33bef7,0xb59bfec1,0x9841357b +.long 0xc34e6705,0xfa8dbb59,0x7fdaa84c,0xc3c7180b,0xa4108537,0xf95872fc,0x932a3e5a,0x8750cc3b,0xb7275d7d,0xb61cc69d,0x2e59b2e9,0xffa0168b,0x6ecbb493,0xca032abc,0x2c9082d8,0x1d86dbd3 +.long 0xe28ef5ba,0xae1e0b67,0xcb18e169,0x2c9a4699,0x1e6bbd20,0x0ecd0e33,0xaf5e81d2,0x571b360e,0x101c1d45,0xcd9fea58,0x18880452,0x6651788e,0x1f8dd446,0xa9972635,0xe37281d0,0x44bed022 +.long 0x33da525d,0x094b2b2d,0x13144fd8,0xf193678e,0xf4c1061d,0xb8ab5ba4,0xdccbe0f4,0x4343b5fa,0x63812713,0xa8702371,0xf7611d93,0x47bf6d2d,0xbd21e1d7,0x46729b8c,0xd629e77d,0x7484d4e0 +.long 0x60dbac1f,0x830e6eea,0xda06a2f7,0x23d8c484,0x50ca535b,0x896714b0,0xebd97a9b,0xdc8d3644,0xb12177b4,0x106ef9fa,0x534d5d9c,0xf79bf464,0xa6ab360b,0x2537a349,0xa00c744f,0xc7c54253 +.long 0xe5911a76,0xb3c7a047,0x647f1ee7,0x61ffa5c8,0x8f56ab42,0x15aed36f,0xa3ff9ac9,0x6a0d41b0,0xcc30d357,0x68f469f5,0x6b72be96,0xbe9adf81,0x903ad461,0x1cd926fe,0xcaca441b,0x7e89e38f +.long 0xfacf69d4,0xf0f82de5,0x4775344c,0x363b7e76,0xb2e36d04,0x6894f312,0x11d1c9a5,0x3c6cb4fe,0x4008e1f2,0x85d9c339,0x249f326c,0x5e9a85ea,0x678c5e06,0xdc35c60a,0x9f86fba9,0xc08b944f +.long 0x89f71f0f,0xde40c02c,0xff3da3c0,0xad8f3e31,0x42125ded,0x3ea5096b,0xa7379183,0x13879cbf,0x6b306a0b,0x6f4714a5,0x67646c5e,0x359c2ea6,0x07726368,0xfacf8943,0x65ff431e,0x07a58935 +.long 0x68754ab0,0x24d661d1,0x6f429a76,0x801fce1d,0xa58ce769,0xc068a85f,0x5d5eca2b,0xedc35c54,0xa3f660d1,0xea31276f,0xb8fc7167,0xa0184ebe,0x1d8db0ae,0x0f20f21a,0x56c35e12,0xd96d095f +.long 0xf8c2a25b,0xedf402b5,0x059204b6,0x1bb772b9,0x19b4e34c,0x50cbeae2,0x3fa0845a,0x93109d80,0x8ef59fb5,0x54f7ccf7,0x88070963,0x3b438fe2,0x31f3ba9b,0x9e28c659,0xead9da92,0x9cc31b46 +.long 0xb733aa5f,0x3c2f0ba9,0xf05af235,0xdece47cb,0xa2ac82a5,0xf8e3f715,0x2203f18a,0xc97ba641,0x09c11060,0xc3af5504,0x46af512d,0x56ea2c05,0xf3f28146,0xfac28daf,0x959ef494,0x87fab43a +.long 0xd4c5105f,0x09891641,0x6d7fbd65,0x1ae80f8e,0xbee6bdb0,0x9d67225f,0x7fc4d860,0x3b433b59,0x93e85638,0x44e66db6,0xe3e9862f,0xf7b59252,0x665c32ec,0xdb785157,0xae362f50,0x702fefd7 +.long 0x0fefb0c3,0x3754475d,0x46d7c35d,0xd48fb56b,0x363798a4,0xa070b633,0x8fdb98e6,0xae89f3d2,0x6363d14c,0x970b89c8,0x67abd27d,0x89817521,0x44d5a021,0x9bf7d474,0xcac72aee,0xb3083baf +.long 0xbe949a44,0x389741de,0x546a4fa5,0x638e9388,0xa0047bdc,0x3fe6419c,0xaaea57ca,0x7047f648,0x41fbab17,0x54e48a90,0x576bdba2,0xda8e0b28,0xc72afddc,0xe807eebc,0xf42577bf,0x07d3336d +.long 0xbfe20925,0x62a8c244,0x8fdce867,0x91c19ac3,0xdd387063,0x5a96a5d5,0x21d324f6,0x61d587d4,0xa37173ea,0xe87673a2,0x53778b65,0x23848008,0x05bab43e,0x10f8441e,0x4621efbe,0xfa11fe12 +.long 0x81685d7b,0x047b772e,0xbf34a976,0x23f27d81,0x915f48ef,0xc27608e2,0xa521d5c3,0x3b0b43fa,0x63ca7284,0x7613fb26,0x1d4db837,0x7f5729b4,0x583b526b,0x87b14898,0xbbadd3d1,0x00b732a6 +.long 0x2048e396,0x8e02f426,0x383d9de4,0x436b50b6,0x471e85ad,0xf78d3481,0xd005c8d6,0x8b01ea6a,0x97015c07,0xd3c7afee,0x4e3ba2ae,0x46cdf1a9,0x83d3a1d2,0x7a42e501,0xb541dff4,0xd54b5268 +.long 0x4e23e9bc,0x3f24cf30,0x126e3624,0x4387f816,0x3b0b6d61,0x26a46a03,0x8b2d777c,0xaf1bc845,0x527de79c,0x25c401ba,0x4261bbb6,0x0e1346d4,0x287b4bc7,0x4b96c44b,0x5254562f,0x658493c7 +.long 0xb8a24a20,0x23f949fe,0xf52ca53f,0x17ebfed1,0xbcfb4853,0x9b691bbe,0x6278a05d,0x5617ff6b,0xe3c99ebd,0x241b34c5,0x1784156a,0xfc64242e,0x695d67df,0x4206482f,0xee27c011,0xb967ce0e +.long 0x21c80b5d,0x65db3751,0xa31ecca0,0x2e7a563c,0x5238a07e,0xe56ffc4e,0x32ced854,0x3d6c2966,0xaf70b885,0xe99d7d1a,0x2d686459,0xafc3bad9,0x0cc8ba5b,0x9c78bf46,0x18955aa3,0x5a439519 +.long 0x5fe4e314,0xf8b517a8,0xfcb8906f,0xe60234d0,0xf2061b23,0xffe542ac,0x6b4cb59c,0x287e191f,0x09d877d8,0x21857ddc,0x14678941,0x1c23478c,0xb6e05ea4,0xbbf0c056,0xb01594fe,0x82da4b53 +.long 0xfadb8608,0xf7526791,0x7b74cdf6,0x049e832d,0xc2b90a34,0xa43581cc,0x9360b10c,0x73639eb8,0xe1e4a71b,0x4fba331f,0x8072f919,0x6ffd6b93,0x65679032,0x6e53271c,0xf14272ce,0x67206444 +.long 0xb2335834,0xc0f734a3,0x90ef6860,0x9526205a,0x04e2bb0d,0xcb8be717,0x02f383fa,0x2418871e,0x4082c157,0xd7177681,0x29c20073,0xcc914ad0,0xe587e728,0xf186c1eb,0x61bcd5fd,0x6fdb3c22 +.long 0xf2f9f8e9,0x30d014a6,0x4fec49d2,0x963ece23,0x9605a8d9,0x862025c5,0x19f8929a,0x39874445,0x12bf476a,0x01b6ff65,0x09cf7d91,0x598a64d8,0x93be56ca,0xd7ec7749,0xcbb33615,0x10899785 +.long 0x02eee3ad,0xb8a092fd,0x30145270,0xa86b3d35,0x8512b675,0x323d98c6,0x62ebb40f,0x4b8bc785,0x413f9cde,0x7d301f54,0x2bab5664,0xa5e4fb4f,0x1cbfec23,0x1d2b252d,0xe177120d,0xfcd576bb +.long 0x83731a34,0x04427d3e,0xed836e8e,0x2bb9028e,0xb612ca7c,0xb36acff8,0xd3d9c73a,0xb88fe5ef,0xedea4eb3,0xbe2a6bc6,0x488eec77,0x43b93133,0xb17106e1,0xf41ff566,0x654efa32,0x469e9172 +.long 0x41c23fa3,0xb4480f04,0xc1989a2e,0xb4712eb0,0x93a29ca7,0x3ccbba0f,0xd619428c,0x6e205c14,0xb3641686,0x90db7957,0x45ac8b4e,0x0432691d,0xf64e0350,0x07a759ac,0x9c972517,0x0514d89c +.long 0xa8e67fc3,0x1701147f,0xab2085be,0x9e2e0b8b,0xac284e57,0xd5651824,0x74893664,0x890d4325,0xc55e68a3,0x8a7c5e6e,0x4339c85a,0xbf12e90b,0xf922b655,0x31846b85,0x0bf4d700,0x9a54ce4d +.long 0xf1a14295,0xd7f4e83a,0xb285d4f9,0x916f955c,0x99ffdaba,0xe57bb0e0,0xeab0d152,0x28a43034,0xb8a9cef8,0x0a36ffa2,0xb9ec051a,0x5517407e,0xea68e672,0x9c796096,0xfb3c77fb,0x853db5fb +.long 0xe864a51a,0x21474ba9,0x6e8a1b8b,0x6c267699,0x94120a28,0x7c823626,0x8383a5db,0xe61e9a48,0x9f84216d,0x7dd75003,0xad43cd85,0xab020d07,0xda12c659,0x9437ae48,0xe65452ad,0x6449c2eb +.long 0x2cf9d7c1,0xcc7c4c1c,0xee95e5ab,0x1320886a,0xbeae170c,0xbb7b9056,0xdbc0d662,0xc8a5b250,0xc11d2303,0x4ed81432,0x1f03769f,0x7da66912,0x84539828,0x3ac7a5fd,0x3bccdd02,0x14dada94 +.long 0x7ef6b0d1,0x8b84c321,0x7c933f22,0x52a9477a,0xfd440b82,0x5ef6728a,0x6ce4bd5e,0x5c3bd859,0xf22c2d3e,0x918b80f5,0xb7bb6cc5,0x368d5040,0x2695a11c,0xb66142a1,0xeb19ea70,0x60ac583a +.long 0x0eab2437,0x317cbb98,0x5e2654c8,0x8cc08c55,0xe6d8307f,0xfe2d6520,0x57428993,0xe9f147f3,0xd2fd6cf1,0x5f9c7d14,0x2d4fcbb0,0xa3ecd064,0x8e7341f7,0xad83fef0,0x3a63115c,0x643f23a0 +.long 0xe65ab743,0xd38a78ab,0x35edc89c,0xbf7c75b1,0x530df568,0x3dd8752e,0xe308c682,0xf85c4a76,0xe68acf37,0x4c9955b2,0xab32af85,0xa544df3d,0xa25cf493,0x4b8ec3f5,0x1a622feb,0x4d8f2764 +.long 0xf0dcbc49,0x7bb4f7aa,0x70bbb45b,0x7de551f9,0x9f2ca2e5,0xcfd0f3e4,0x1f5c76ef,0xece58709,0x167d79ae,0x32920edd,0xfa7d7ec1,0x039df8a2,0xbb30af91,0xf46206c0,0x22676b59,0x1ff5e2f5 +.long 0x6ea51d66,0x11f4a039,0x807d7a26,0x506c1445,0x755a9b24,0x60da5705,0x1f1a319e,0x8fc8cc32,0x9433d67d,0x83642d4d,0x6a7dd296,0x7fa5cb8f,0x9b7bde07,0x576591db,0x419716fb,0x13173d25 +.long 0xd5b340ff,0xea30599d,0xb0fe76c5,0xfc6b5297,0xab8f5adc,0x1c6968c8,0x901c928d,0xf723c7f5,0x9773d402,0x4203c321,0x1b51dd47,0xdf7c6aa3,0x552be23c,0x3d49e37a,0x0b5a6e87,0x57febee8 +.long 0x7bd8e739,0xc5ecbee4,0xae63bf75,0x79d44994,0x38fb8923,0x168bd00f,0xd0533130,0x75d48ee4,0xdb5cdf33,0x554f77aa,0x3c696769,0x3396e896,0xd3fd674e,0x2fdddbf2,0x99d0e3e5,0xbbb8f6ee +.long 0xcbae2f70,0x51b90651,0x93aaa8eb,0xefc4bc05,0xdd1df499,0x8ecd8689,0x22f367a5,0x1aee99a8,0xae8274c5,0x95d485b9,0x7d30b39c,0x6c14d445,0xbcc1ef81,0xbafea90b,0xa459a2ed,0x7c5f317a +.long 0x4ef44227,0x01211075,0xdc20f496,0xa17bed6e,0x819853cd,0x0cdfe424,0xf71e2ce7,0x13793298,0xdbbe307b,0x3c1f3078,0x76ee9936,0x6dd1c20e,0x423caa20,0x23ee4b57,0x8efb840e,0x4ac3793b +.long 0xed1f8ca0,0x934438eb,0x4ebb25a2,0x3e546658,0xc069896f,0xc415af0e,0x9a5aa43d,0xc13eddb0,0xd49eb8f6,0x7a04204f,0xd74f1670,0xd0d5bdfc,0x56fc0558,0x3697e286,0x01cebade,0x10207371 +.long 0x0647a82b,0x5f87e690,0x8f40054f,0x908e0ed4,0x79853803,0xa9f633d4,0x4a28b252,0x8ed13c9a,0x1f460f64,0x3e2ef676,0x36d06336,0x53930b9b,0x8fc4979b,0x347073ac,0x5ecd5597,0x84380e0e +.long 0xc4fe3c39,0xe3b22c6b,0x6c7bebdf,0xba4a8153,0x25693459,0xf23ab6b7,0x14922b11,0x53bc3770,0x5afc60db,0x4645c8ab,0x20b9f2a3,0xaa022355,0xce0fc507,0x52a2954c,0x7ce1c2e7,0x8c2731bb +.long 0x18a0339d,0xf39608ab,0x3735436c,0xac7a658d,0xcd992b4f,0xb22c2b07,0xf40dcfd4,0x4e83daec,0x2f39ea3e,0x8a34c7be,0xb0a56d2e,0xef0c005f,0x6edd8038,0x62731f6a,0x4e3cb075,0x5721d740 +.long 0xfbeeee1b,0x1ea41511,0xef1d0c05,0xd1ef5e73,0x73c07d35,0x42feefd1,0x8a329493,0xe530a00a,0xf15ebfb0,0x5d55b7fe,0xd322491a,0x549de03c,0x745b3237,0xf7b5f602,0x1ab6e2b6,0x3632a3a2 +.long 0x0ef59f78,0x0d3bba89,0xc9e52b9a,0x0dfc6443,0x72631447,0x1dc79699,0xb3be20b1,0xef033917,0xb1383948,0x0c92735d,0xc0dd7d7d,0xc1fc29a2,0x403ed068,0x6485b697,0xaac93bdc,0x13bfaab3 +.long 0x0deeaf52,0x410dc6a9,0x4c641c15,0xb003fb02,0x5bc504c4,0x1384978c,0x864a6a77,0x37640487,0x222a77da,0x05991bc6,0x5e47eb11,0x62260a57,0xf21b432c,0xc7af6613,0xab4953e9,0x22f3acc9 +.long 0x8e41d155,0x52934922,0x3ac059ef,0x4d024568,0x4d884411,0xb0201755,0xa59a178f,0xce8055cf,0xf6204549,0xcd77d1af,0xc7066759,0xa0a00a3e,0x0272c229,0x471071ef,0xd3c4b6b0,0x009bcf6b +.long 0x22305177,0x2a2638a8,0x41645bbf,0xd51d59df,0xc0a7a3c0,0xa81142fd,0x4c7063ee,0xa17eca6d,0x60d9dcec,0x0bb887ed,0x20ad2455,0xd6d28e51,0xa67102ba,0xebed6308,0x8bffa408,0x042c3114 +.long 0x8aa68e30,0xfd099ac5,0x1483513e,0x7a6a3d7c,0xba2d8f0c,0xffcc6b75,0x1e78b954,0x54dacf96,0xa4a9af89,0xf645696f,0x06ac98ec,0x3a411940,0x22a67a20,0x41b8b3f6,0x99dec626,0x2d0b1e0f +.long 0x40be34e8,0x27c89192,0x91907f35,0xc7162b37,0xa956702b,0x90188ec1,0xdf93769c,0xca132f7d,0x0e2025b4,0x3ece44f9,0x0c62f14c,0x67aaec69,0x22e3cc11,0xad741418,0x7ff9a50e,0xcf9b75c3 +.long 0x4d348272,0x02fa2b16,0x9959d56d,0xbd99d61a,0x18762916,0xbc4f19db,0x49c1ac80,0xcc7cce50,0xd846bd83,0x4d59ebaa,0xa9202849,0x8775a9dc,0x6e1f4ca9,0x07ec4ae1,0xba893f11,0x27eb5875 +.long 0x662cc565,0x00284d51,0x0db4138d,0x82353a6b,0xaa32a594,0xd9c7aaaa,0xa5669c47,0xf5528b5e,0x2f23c5ff,0xf3220231,0x6affa3a1,0xe3e8147a,0x202ddda0,0xfb423d5c,0x6b871bd4,0x3d6414ac +.long 0xa51a168a,0x586f82e1,0x48ae5448,0xb712c671,0x76233eb8,0x9a2e4bd1,0x78811ca9,0x0188223a,0xf7c18de1,0x553c5e21,0xb27bb286,0x7682e451,0x0e51e929,0x3ed036b3,0xec9cb34f,0xf487211b +.long 0x0c24efc8,0x0d094277,0xbef737a4,0x0349fd04,0x514cdd28,0x6d1c9dd2,0x30da9521,0x29c135ff,0xf78b0b6f,0xea6e4508,0x678c143c,0x176f5dd2,0x4be21e65,0x08148418,0xe7df38c4,0x27f7525c +.long 0x748ab1a4,0x1fb70e09,0x5efe4433,0x9cba50a0,0x15f75af2,0x7846c7a6,0x5ee73ea8,0x2a7c2c57,0x3f0a449a,0x42e566a4,0xad90fc3d,0x45474c3b,0x8b61d057,0x7447be3d,0x3a4ec092,0x3e9d1cf1 +.long 0xf380a6e6,0x1603e453,0x9b1437c2,0x0b86e431,0xef29610a,0x7a4173f2,0xf03d57f7,0x8fa729a7,0x6c9c217e,0x3e186f6e,0x91919524,0xbe1d3079,0x153d4fb1,0x92a62a70,0xd68c2f71,0x32ed3e34 +.long 0x9eb1a8b7,0xd785027f,0xc5b22fe8,0xbc37eb77,0xb9d6a191,0x466b34f0,0x9a05f816,0x008a89af,0x7d42c10a,0x19b028fb,0x49b3f6b8,0x7fe8c92f,0xa5a0ade3,0x58907cc0,0x559d1a7c,0xb3154f51 +.long 0xd9790ed6,0x5066efb6,0xa6aa793b,0xa77a0cbc,0x223e042e,0x1a915f3c,0x69c5874b,0x1c5def04,0x73b6c1da,0x0e830078,0xfcd8557a,0x55cf85d2,0x0460f3b1,0x0f7c7c76,0x46e58063,0x87052acb +.long 0x907eae66,0x09212b80,0x4d721c89,0x3cb068e0,0xdd45ac1c,0xa87941ae,0x0daa0dbb,0xde8d5c0d,0xe3502e6e,0xda421fdc,0x4d89a084,0xc8944201,0xf0c24bfb,0x7307ba5e,0x20bde0ef,0xda212beb +.long 0xf82ce682,0xea2da24b,0x07f71fe4,0x058d3816,0x5ffad8de,0x35a02462,0xaadcefab,0xcd7b05dc,0x1d9f54ec,0xd442f8ed,0xb2d3b5ca,0x8be3d618,0xe06b2ce2,0xe2220ed0,0x1b0da4c0,0x82699a5f +.long 0x71c0c3a7,0x3ff106f5,0x0d34180c,0x8f580f5a,0x22d7d375,0x4ebb120e,0xe9513675,0x5e5782cc,0x99c82a70,0x2275580c,0x15ea8c4c,0xe8359fbf,0x7b415e70,0x53b48db8,0x100c6014,0xaacf2240 +.long 0xe4652f1d,0x9faaccf5,0xd56157b2,0xbd6fdd2a,0x6261ec50,0xa4f4fb1f,0x476bcd52,0x244e55ad,0x047d320b,0x881c9305,0x6181263f,0x1ca983d5,0x278fb8ee,0x354e9a44,0x396e4964,0xad2dbc0f +.long 0x9268b3de,0x723f3aa2,0xe6e0609a,0x0d1ca29a,0x6cf44252,0x794866aa,0x01af87ed,0x0b59f3e3,0x7f4a6c51,0xe234e5ff,0x61dc2f7e,0xa8768fd2,0x0a94d81f,0xdafc7332,0x06938ce1,0xd7f84282 +.long 0x0546063e,0xae0b3c0e,0x5d61abc6,0x7fbadcb2,0x369ac400,0xd5d7a2c9,0xae67d10c,0xa5978d09,0x4f85eaac,0x290f211e,0xfacac681,0xe61e2ad1,0x388384cd,0xae125225,0xccfde30f,0xa7fb68e9 +.long 0x3daed4c2,0x7a59b936,0x2606f789,0x80a9aa40,0xf6a6d90a,0xb40c1ea5,0x514d5885,0x948364d3,0x70985182,0x062ebc60,0x33310895,0xa6db5b0e,0xe329c2f5,0x64a12175,0x90ea237e,0xc5f25bd2 +.long 0x2d0a4c23,0x7915c524,0x6bb3cc52,0xeb5d26e4,0xc09e2c92,0x369a9116,0xcf182cf8,0x0c527f92,0x2aede0ac,0x9e591938,0x6cc34939,0xb2922208,0x99a34361,0x3c9d8962,0xc1905fe6,0x3c81836d +.long 0xa001ec5a,0x4bfeb57f,0xa0dc5dba,0xe993f5bb,0x724a1380,0x47884109,0x32fe9a04,0x8a0369ab,0x8c927db8,0xea068d60,0x94655741,0xbf5f37cf,0x04b6c7ea,0x47d402a2,0x6af259cb,0x4551c295 +.long 0xed77ee8b,0x698b71e7,0xf309d5c7,0xbddf7bd0,0x34e780ca,0x6201c22c,0x4c295ef4,0xab04f7d8,0x4313a8ce,0x1c947294,0x92ca4cfe,0xe532e4ac,0xd0a7a97a,0x89738f80,0xa580fd5b,0xec088c88 +.long 0x42ce9e51,0x612b1ecc,0xb25fdd2a,0x8f9840fd,0x01e7f839,0x3cda78c0,0xece05480,0x546b3d3a,0x80d30916,0x271719a9,0x584c20c4,0x45497107,0x5bc78608,0xaf8f9478,0x277e2a4c,0x28c7d484 +.long 0x88a2ffe4,0xfce01767,0x28e169a5,0xdc506a35,0x7af9c93a,0x0ea10861,0x03fa0e08,0x1ed24361,0xa3d694e7,0x96eaaa92,0xef50bc74,0xc0f43b4d,0x64114db4,0xce6aa58c,0x7c000fd4,0x8218e8ea +.long 0x185f8844,0xac815dfb,0x1557abfb,0xcd7e90cb,0xafbfecdf,0x23d16655,0x085cac4a,0x80f3271f,0xd0e62f47,0x7fc39aa7,0x460a48e5,0x88d519d1,0xd28f101e,0x59559ac4,0xca9ae816,0x7981d9e9 +.long 0x9ac38203,0x5c38652c,0x57657fe5,0x86eaf87f,0xe21f5416,0x568fc472,0xe7e597b5,0x2afff39c,0x256d4eab,0x3adbbb07,0x8285ab89,0x22598692,0x041caefe,0x35f8112a,0xa5064c8b,0x95df02e3 +.long 0xc7004bf3,0x4d63356e,0xdb83c7de,0x230a08f4,0x8709a7b7,0xca27b270,0xcb9abd2d,0x0d1c4cc4,0x7550fee8,0x8a0bc66e,0x9cf7247e,0x369cd4c7,0x92b5b7e7,0x75562e84,0x5802af7b,0x8fed0da0 +.long 0xe48fb889,0x6a7091c2,0x7b8a9d06,0x26882c13,0x1b82a0e2,0xa2498663,0x3518152d,0x844ed736,0xd86e27c7,0x282f476f,0x04afefdc,0xa04edaca,0x6119e34d,0x8b256ebc,0x0787d78b,0x56a413e9 +.long 0x5a74be50,0x82ee061d,0xdea16ff5,0xe41781c4,0x99bfc8a2,0xe0b0c81e,0x0b547e2d,0x624f4d69,0xbdcc9ae4,0x3a83545d,0x409b1e8e,0x2573dbb6,0xa6c93539,0x482960c4,0x5ae18798,0xf01059ad +.long 0x3112795f,0x715c9f97,0x984e6ee1,0xe8244437,0xecb66bcd,0x55cb4858,0xabaffbee,0x7c136735,0x5dbec38e,0x54661595,0x388ad153,0x51c0782c,0xc6e0952f,0x9ba4c53a,0x1b21dfa8,0x27e6782a +.long 0x4ed2dbc2,0x682f903d,0x7c3b2d83,0x0eba59c8,0x9c7e9335,0x8e9dc84d,0x0eb226d7,0x5f9b21b0,0xaf267bae,0xe33bd394,0xbe2e15ae,0xaa86cc25,0x6a8ec500,0x4f0bf67d,0xf9630658,0x5846aa44 +.long 0xe2c2bf15,0xfeb09740,0xa9e99704,0x627a2205,0xc2fbc565,0xec8d73d0,0xc20c8de8,0x223eed8f,0xa8363b49,0x1ee32583,0xc9c2b0a6,0x1a0b6cb9,0x90dbc85c,0x49f7c3d2,0x1ef4c1ac,0xa8dfbb97 +.long 0x65c7c2ab,0xafb34d4c,0xe2c5ea84,0x1d4610e7,0x973c4ab5,0x893f6d1b,0x945ba5c4,0xa3cdd7e9,0x064417ee,0x60514983,0xad6bdf2b,0x1459b23c,0x5cf726c3,0x23b2c341,0x32d6354a,0x3a829635 +.long 0xab192c18,0x294f901f,0x7030164f,0xec5fcbfe,0xe2246ba6,0xe2e2fcb7,0x221a1a0c,0x1e7c88b3,0xc92d88c5,0x72c7dd93,0x1106fb59,0x41c2148e,0xa0f60f14,0x547dd4f5,0x63960f31,0xed9b52b2 +.long 0xb0a5b358,0x6c8349eb,0x9e7e2ed6,0xb154c5c2,0xeda462db,0xcad5eccf,0x2de66b69,0xf2d6dbe4,0x8665e5b2,0x426aedf3,0x7b7f5723,0x488a8513,0x8bcbb386,0x15cc43b3,0xd791d879,0x27ad0af3 +.long 0x846e364f,0xc16c236e,0xdea50ca0,0x7f33527c,0x0926b86d,0xc4810775,0x0598e70c,0x6c2a3609,0xf024e924,0xa6755e52,0x9db4afca,0xe0fa07a4,0x66831790,0x15c3ce7d,0xa6cbb0d6,0x5b4ef350 +.long 0xb6205969,0x2c4aafc4,0xf6c7854f,0x42563f02,0x1d983b48,0x016aced5,0x99949755,0xfeb356d8,0xd1a39bd7,0x8c2a2c81,0xe6934ae9,0x8f44340f,0x447904da,0x148cf91c,0x0f51a926,0x7340185f +.long 0x7409ab46,0x2f8f00fb,0x80e289b2,0x057e78e6,0xa888e5d1,0x03e5022c,0x9dede4e2,0x3c87111a,0x7809460b,0x5b9b0e1c,0x71c9abc7,0xe751c852,0xc7cc1dc9,0x8b944e28,0x1d3cfa08,0x4f201ffa +.long 0x3e6721ce,0x02fc905c,0xd0b3674c,0xd52d70da,0x18810da4,0x5dc2e5ca,0x5c69dd99,0xa984b273,0x84de5ca4,0x63b92527,0xc852dec4,0x2f1c9872,0xc2e3de09,0x18b03593,0x9813dc2f,0x19d70b01 +.long 0xa6dc1d29,0x42806b2d,0xf871e144,0xd3030009,0xaaf49276,0xa1feb333,0xc70bc04b,0xb5583b9e,0x95695f20,0x1db0be78,0x89d012b5,0xfc841811,0x05f61643,0x6409f272,0xd5883128,0x40d34174 +.long 0x67419833,0xd79196f5,0x863b7b08,0x6059e252,0x1c56700c,0x84da1817,0xb28d3ec4,0x5758ee56,0x013b0ea6,0x7da2771d,0x54c5e9b9,0xfddf524b,0x24305d80,0x7df4faf8,0x3a97763f,0x58f5c1bf +.long 0x7c696042,0xa5af37f1,0x4a2538de,0xd4cba22c,0x9ea42600,0x211cb995,0x7b069889,0xcd105f41,0xddb81e74,0xb1e1cf19,0x5157b8ca,0x472f2d89,0xee9db885,0x086fb008,0x0f26d131,0x365cd570 +.long 0xa2be7053,0x284b02bb,0x7ab9a6d6,0xdcbbf7c6,0x20f7a530,0x4425559c,0x188767c8,0x961f2dfa,0x70dc80c4,0xe2fd9435,0xf0784120,0x104d6b63,0x53567122,0x7f592bc1,0xf688ad77,0xf6bc1246 +.long 0x0f15dde9,0x05214c05,0x0d5f2b82,0xa47a76a8,0x62e82b62,0xbb254d30,0x3ec955ee,0x11a05fe0,0x9d529b36,0x7eaff46e,0x8f9e3df6,0x55ab1301,0x99317698,0xc463e371,0xccda47ad,0xfd251438 +.long 0x23d695ea,0xca9c3547,0x16e589b5,0x48ce626e,0xb187d086,0x6b5b64c7,0xb2207948,0xd02e1794,0x7198111d,0x8b58e98f,0xdcf9c3cc,0x90ca6305,0xf34089b0,0x5691fe72,0xfc7c80ff,0x60941af1 +.long 0x22eb51e5,0xa09bc0a2,0xaa9cf09a,0xc0bb7244,0x80159f06,0x36a8077f,0xdddc560e,0x8b5c989e,0x512e1f43,0x19d2f316,0xad08ff62,0x02eac554,0x07d20b4e,0x012ab84c,0xd6d4e4e1,0x37d1e115 +.long 0xab7b19a8,0xb6443e1a,0xdef8cd45,0xf08d067e,0x685e03da,0x63adf3e9,0x4792b916,0xcf15a10e,0xb738a425,0xf44bcce5,0x9636b2fd,0xebe131d5,0x7850d605,0x94068841,0xb40d749d,0x09684eaa +.long 0x72ba075b,0x8c3c669c,0xba469015,0x89f78b55,0x3e9f8ba8,0x5706aade,0xb32d7ed7,0x6d8bd565,0x805f08d6,0x25f4e63b,0xc3bcc1b5,0x7f48200d,0xb025d847,0x4e801968,0x87cbe0a8,0x74afac04 +.long 0x7e63d690,0x43ed2c2b,0x0223cdb8,0xefb6bbf0,0x2884d3fe,0x4fec3cae,0xd75e25a4,0x065ecce6,0x69f79071,0x6c2294ce,0x044b8666,0x0d9a8e5f,0x17b69d8f,0x5009f238,0xc5dfdaf7,0x3c29f8fe +.long 0xebae68c4,0x9067528f,0x30c5ba21,0x5b385632,0x1fdd1aec,0x540df119,0xcfba4c78,0xcf37825b,0xbeb11454,0x77eff980,0x60c1b066,0x40a1a991,0xf889a1c7,0xe8018980,0x76c24be0,0xb9c52ae9 +.long 0x45650ef4,0x05fbbcce,0x8aa29ac7,0xae000f10,0x4f04c470,0x884b7172,0x19bb5c25,0x7cd4fde2,0xe8840869,0x6477b22a,0x5fbd0686,0xa8868859,0x1116dfba,0xf23cc02e,0xd87d7776,0x76cd563f +.long 0xa9d82abf,0xe2a37598,0xe6c170f5,0x5f188ccb,0x5066b087,0x81682200,0xc7155ada,0xda22c212,0xfbddb479,0x151e5d3a,0x6d715b99,0x4b606b84,0xf997cb2e,0x4a73b54b,0x3ecd8b66,0x9a1bfe43 +.long 0x2a67d48a,0x1c312809,0x031fa9e2,0xcd6a671e,0x0e43a34a,0xbec3312a,0x55ef47d3,0x1d935639,0x8fea73ea,0x5ea02489,0xa035afb2,0x8247b364,0x5265b54c,0xb58300a6,0x722c7148,0x3286662f +.long 0xb4ec4c20,0xb77fd76b,0x0f3fe3fd,0xf0a12fa7,0x41d8c7e8,0xf845bbf5,0x5ec10aa8,0xe4d969ca,0x43e232a3,0x4c0053b7,0x37f8a45a,0xdc7a3fac,0x20d81c8f,0x3c4261c5,0xb00eab00,0xfd4b3453 +.long 0xd36e3062,0x76d48f86,0xa143ff02,0x626c5277,0xaf76f42e,0x538174de,0x6407ceac,0x2267aa86,0x72e572d5,0xfad76351,0xba7330eb,0xab861af7,0x418d8657,0xa0a1c8c7,0x20289a52,0x988821cb +.long 0xcccc18ad,0x79732522,0xf1a6e027,0xaadf3f8d,0x17c2354d,0xf7382c93,0xd818b689,0x5ce1680c,0xd9ecbee9,0x359ebbfc,0x1cae62ac,0x4330689c,0xc51ac38a,0xb55ce5b4,0xfe238ee8,0x7921dfea +.long 0x271d1ca5,0x3972bef8,0xe8aabd18,0x3e423bc7,0x44a3e5e3,0x57b09f3f,0x7b444d66,0x5da886ae,0xa9964375,0x68206634,0x699cd0ff,0x356a2fa3,0xdba515e9,0xaf0faa24,0xb321d79a,0x536e1f5c +.long 0x5c04e4ea,0xd3b9913a,0xd6f11513,0xd549dcfe,0x79fd1d94,0xee227bf5,0xb43f2c67,0x9f35afee,0xf1314f53,0xd2638d24,0xcabcd822,0x62baf948,0x4ef48db0,0x5542de29,0xfc5f6bb2,0xb3eb6a04 +.long 0x1208e16a,0x23c110ae,0xf8363e24,0x1a4d15b5,0x164be00b,0x30716844,0xf6f4690d,0xa8e24824,0x90b170cf,0x548773a2,0x42f191f4,0xa1bef331,0x9247aa97,0x70f418d0,0x48be9147,0xea06028e +.long 0xdbfb894e,0xe13122f3,0xce274b18,0xbe9b79f6,0xca58aadf,0x85a49de5,0x11487351,0x24957758,0xbb939099,0x111def61,0x26d13694,0x1d6a974a,0xd3fc253b,0x4474b4ce,0x4c5db15e,0x3a1485e6 +.long 0x147c15b4,0xe79667b4,0x7bc61301,0xe34f553b,0x17094381,0x032b80f8,0x723eaa21,0x55d8bafd,0xf1c0e74e,0x5a987995,0xebba289c,0x5a9b292e,0xeb4c8251,0x413cd4b2,0xd162db0a,0x98b5d243 +.long 0x68342520,0xbb47bf66,0xbaa862d1,0x08d68949,0xe906abcd,0x11f349c7,0xed7bf00e,0x454ce985,0xb55b803b,0xacab5c9e,0x31e3c16d,0xb03468ea,0xd273bf12,0x5c24213d,0x71587887,0x211538eb +.long 0x731dea2d,0x198e4a2f,0x74ed7b2a,0xd5856cf2,0x13a664fe,0x86a632eb,0xbda41291,0x932cd909,0xc0c4ddc0,0x850e95d4,0x347fc2c9,0xc0f422f8,0x86076bcb,0xe68cbec4,0xcd6cd286,0xf9e7c0c0 +.long 0x0f5f27ca,0x65994ddb,0xa80d59ff,0xe85461fb,0x66601023,0xff05481a,0xfc9ebbfb,0xc665427a,0x7587fd52,0xb0571a69,0x8d49efce,0x935289f8,0xea420688,0x61becc60,0x13a786af,0xb22639d9 +.long 0x361ecf90,0x1a8e6220,0x25506463,0x001f23e0,0x0a5c2b79,0xe4ae9b5d,0xd8149db5,0xebc9cdad,0x934aa728,0xb33164a1,0xae9b60f3,0x750eb00e,0x9b9cfbfd,0x5a91615b,0xef45f7f6,0x97015cbf +.long 0xbf5151df,0xb462c4a5,0xb07118f2,0x21adcc41,0x043fa42c,0xd60c545b,0xe96be1ab,0xfc21aa54,0x4e51ea80,0xe84bc32f,0x259b5d8d,0x3dae45f0,0xc38f1b5e,0xbb73c7eb,0xe8ae617d,0xe405a74a +.long 0x9f1c56bd,0xbb1ae9c6,0x49f196a4,0x8c176b98,0x6875092b,0xc448f311,0x9f976033,0xb5afe3de,0x145813e5,0xa8dafd49,0xe2b34226,0x687fc4d9,0x4c7ff57f,0xf2dfc92d,0x401f1b46,0x004e3fc1 +.long 0x1430c9ab,0x5afddab6,0x2238e997,0x0bdd41d3,0x418042ae,0xf0947430,0xcdddc4cb,0x71f9adda,0xc52dd907,0x7090c016,0x29e2047f,0xd9bdf44d,0x1b1011a6,0xe6f1fe80,0xd9acdc78,0xb63accbc +.long 0x1272a95b,0xcfc7e235,0xa6276ac8,0x0c667717,0xe2d7eef7,0x3c0d3709,0x9a685b3e,0x5add2b06,0x14ea5d65,0x363ad32d,0x8d7dd506,0xf8e01f06,0x75b4aac6,0xc9ea2213,0x0d353466,0xed2a2bf9 +.long 0xe9d3a7c3,0x439d79b5,0x81b7f34b,0x8e0ee5a6,0x1dc4ba75,0xcf3dacf5,0xeb3310c7,0x1d3d1773,0x7747ae83,0xa8e67112,0x197d6b40,0x31f43160,0xcd961400,0x0521ccee,0xf6535768,0x67246f11 +.long 0xef0c3133,0x702fcc5a,0x7e16693b,0x247cc45d,0xc729b749,0xfd484e49,0xb218320f,0x522cef7d,0x59ab93b3,0xe56ef405,0x9f181071,0x225fba11,0x15330ed0,0x33bd6595,0x1ddb32f7,0xc4be69d5 +.long 0x0448087c,0x264c7668,0x71432dae,0xac30903f,0x00f9bf47,0x3851b266,0x6cdd6d03,0x400ed311,0xf8fd2424,0x045e79fe,0xfa6da98b,0xfdfd974a,0x0c1e673a,0x45c9f641,0x5b2c5168,0x76f2e733 +.long 0x2a601753,0x1adaebb5,0xc57c2d49,0xb286514c,0x1e0bfd24,0xd8769670,0x04478922,0x950c547e,0xe5d32bfe,0xd1d41969,0x750d6c3e,0x30bc1472,0xe0e27f3a,0x8f3679fe,0xa4a6ee0c,0x8f64a7dc +.long 0x633dfb1f,0x2fe59937,0x977f2547,0xea82c395,0x661ea646,0xcbdfdf1a,0xb9085451,0xc7ccc591,0x81761e13,0x82177962,0x9196885c,0xda57596f,0x28ffbd70,0xbc17e849,0x2671d36f,0x1e6e0a41 +.long 0x4152fcf5,0x61ae872c,0x9e77e754,0x441c87b0,0xa34dff09,0xd0799dd5,0x88a6b171,0x766b4e44,0x11f1c792,0xdc06a512,0x4be35c3e,0xea02ae93,0xe90c469e,0xe5ca4d6d,0x56e4ff5c,0x4df4368e +.long 0x4baef62e,0x7817acab,0xa85b91e8,0x9f5a2202,0x6ce57610,0x9666ebe6,0xf73bfe03,0x32ad31f3,0x25bcf4d6,0x628330a4,0x515056e6,0xea950593,0xe1332156,0x59811c89,0x8c11b2d7,0xc89cf1fe +.long 0x04e60cc0,0x75b63913,0x4625d375,0xce811e8d,0x2d26e562,0x030e43fc,0x608d36a0,0xfbb30b4b,0x48528118,0x634ff82c,0xcd285911,0x7c6fe085,0x99358f28,0x7f2830c0,0x665e6c09,0x2e60a95e +.long 0x9b785dbf,0x08407d3d,0xa759bce7,0x530889ab,0x52f61239,0xf228e0e6,0x6879be3c,0x2b6d1461,0x51a7bbf7,0xe6902c04,0x76f24a64,0x30ad99f0,0x98bc6da0,0x66d9317a,0xcb596ac0,0xf4f877f3 +.long 0x4c44f119,0xb05ff62d,0xe9b77416,0x4555f536,0x8caed63b,0xc7c0d059,0xc358b2a9,0x0cd2b7ce,0x46945fa3,0x3f33287b,0xd67c8791,0xf8785b20,0x9637bd08,0xc54a7a61,0x18be79d7,0x54d4598c +.long 0xc46d7ce1,0x889e5acb,0x8b085877,0x9a515bb7,0x0b7a5050,0xfac1a03d,0xf2926035,0x7d3e738a,0x2a6cb0eb,0x861cc2ce,0x8f7adc79,0x6f2e2955,0x33016376,0x61c4d451,0x5ad59090,0xd9fd2c80 +.long 0xb2b836a1,0xe5a83738,0x7c0d6622,0x855b41a0,0x7cc19af1,0x186fe317,0xfdd99acb,0x6465c1ff,0x6974b99e,0x46e5c23f,0xa2717cbe,0x75a7cf8b,0x062be658,0x4d2ebc3f,0x5f209c98,0x094b4447 +.long 0xb940cb5a,0x4af285ed,0x7cc82f10,0x6706d792,0x030526fa,0xc8c8776c,0xa0da9140,0xfa8e6f76,0x591ee4f0,0x77ea9d34,0x40274166,0x5f46e337,0xea671457,0x1bdf98bb,0x862a1fe2,0xd7c08b46 +.long 0x1c08ad63,0x46cc303c,0x4c845e7b,0x99543440,0x48f36bf7,0x1b8fbdb5,0x8c8273a7,0x5b82c392,0x928435d5,0x08f712c4,0x79330380,0x071cf0f1,0xa8da054a,0xc74c2d24,0x43c46b5c,0xcb0e7201 +.long 0xc0b7eff3,0x0ad7337a,0xc5e48b3c,0x8552225e,0x73f13a5f,0xe6f78b0c,0x82349cbe,0x5e70062e,0xe7073969,0x6b8d5048,0xc33cb3d2,0x392d2a29,0x4ecaa20f,0xee4f727c,0x2ccde707,0xa068c99e +.long 0xb87a2913,0xfcd5651f,0x3cc252f0,0xea3e3c15,0x3b6cd3e4,0x777d92df,0xc5a732e7,0x7a414143,0xa71ff493,0xa895951a,0xbbd37cf6,0xfe980c92,0xdecfeeff,0x45bd5e64,0xa44c43e9,0x910dc2a9 +.long 0xcca9f54d,0xcb403f26,0x9303f6db,0x928bbdfb,0xa9eee67c,0x3c37951e,0xf79961c3,0x3bd61a52,0x395c9a79,0x09a238e6,0x61eb352d,0x6940ca2d,0xc1875631,0x7d1e5c5e,0x1e1b20d1,0x1e19742c +.long 0x23fc2e6e,0x4633d908,0x08959149,0xa76e29a9,0x84ed7da5,0x61069d9c,0x5dbcad51,0x0baa11cf,0x961849da,0xd01eec64,0xaf3d8c28,0x93b75f1f,0x1ca2ee44,0x57bc4f9f,0x00e00558,0x5a26322d +.long 0x61a023ef,0x1888d658,0xb9e5246e,0x1d72aab4,0xe5563ec0,0xa9a26348,0xc3439a43,0xa0971963,0xadb9b5b7,0x567dd54b,0xc45a524b,0x73fac1a1,0xfe38e608,0x8fe97ef7,0x3f384f48,0x608748d2 +.long 0xc486094f,0xb0571794,0x8bf3a8d6,0x869254a3,0x310b0e25,0x148a8dd1,0x9aa3f7d8,0x99ab9f3f,0x6706c02e,0x0927c68a,0x69790e6c,0x22b5e76c,0x6c71376c,0x6c325260,0x09ef6657,0x53a57690 +.long 0xedffcf3a,0x8d63f852,0x3c0a6f55,0xb4d2ed04,0x12519b9e,0xdb3aa8de,0x1e0a569a,0x5d38e9c4,0x303747e2,0x871528bf,0xf5b5c18d,0xa208e77c,0xca6bf923,0x9d129c88,0xbf02839f,0xbcbf197f +.long 0x27323194,0x9b9bf030,0x339ca59d,0x3b055a8b,0x0f669520,0xb46b2312,0x497e5f24,0x19789f1f,0xaaf01801,0x9c499468,0x8b69d59c,0x72ee1190,0xacf4c079,0x8bd39595,0x8e0cd048,0x3ee11ece +.long 0x1ed66f18,0xebde86ec,0xd61fce43,0x225d906b,0xe8bed74d,0x5cab07d6,0x27855ab7,0x16e4617f,0xb2fbc3dd,0x6568aadd,0x8aeddf5b,0xedb5484f,0x6dcf2fad,0x878f20e8,0x615f5699,0x3516497c +.long 0xfa181e69,0xef0a3fec,0x30d69a98,0x9ea02f81,0x66eab95d,0xb2e9cf8e,0x24720021,0x520f2beb,0x1df84361,0x621c540a,0x71fa6d5d,0x12037721,0x0ff5f6ff,0x6e3c7b51,0xabb2bef3,0x817a069b +.long 0xb294cda6,0x83572fb6,0xb9039f34,0x6ce9bf75,0x095cbb21,0x20e012f0,0xd063f0da,0xa0aecc1b,0xf02909e5,0x57c21c3a,0x48ce9cdc,0xc7d59ecf,0x8ae336f8,0x2732b844,0x3f4f85f4,0x056e3723 +.long 0x89e800ca,0x8a10b531,0x145208fd,0x50fe0c17,0xb714ba37,0x9e43c0d3,0x34189acc,0x427d200e,0xe616e2c0,0x05dee24f,0xee1854c1,0x9c25f4c8,0x8f342a73,0x4d3222a5,0xa027c952,0x0807804f +.long 0x4f0d56f3,0xc222653a,0xca28b805,0x961e4047,0x4a73434b,0x2c03f8b0,0xab712a19,0x4c966787,0x864fee42,0xcc196c42,0x5b0ece5c,0xc1be93da,0xc131c159,0xa87d9f22,0xdce45655,0x2bb6d593 +.long 0xb809b7ce,0x22c49ec9,0xe2c72c2c,0x8a41486b,0xfea0bf36,0x813b9420,0xa66dac69,0xb3d36ee9,0x328cc987,0x6fddc08a,0x3a326461,0x0a3bcd2c,0xd810dbba,0x7103c49d,0x4b78a4c4,0xf9d81a28 +.long 0xe4d55941,0x3de865ad,0x30384087,0xdedafa5e,0x4ef18b9b,0x6f414abb,0xfaee5268,0x9ee9ea42,0x37a55a4a,0x260faa16,0x015f93b9,0xeb19a514,0x9e9c3598,0x51d7ebd2,0x1932178e,0x523fc56d +.long 0xb98fe684,0x501d070c,0x124a1458,0xd60fbe9a,0x92bc6b3f,0xa45761c8,0xfe6f27cb,0xf5384858,0xb59e763b,0x4b0271f7,0x5b5a8e5e,0x3d4606a9,0x05a48292,0x1eda5d9b,0xe6fec446,0xda7731d0 +.long 0x90d45871,0xa3e33693,0x06166d8d,0xe9764040,0x89a90403,0xb5c33682,0x72f1d637,0x4bd17983,0xd5d2c53a,0xa616679e,0xfdcf3b87,0x5ec4bcd8,0xb66a694e,0xae6d7613,0xe3fc27e5,0x7460fc76 +.long 0x95caabee,0x70469b82,0x889501e3,0xde024ca5,0x076ed265,0x6bdadc06,0x5a0ef8b2,0x0cb1236b,0x0972ebf9,0x4065ddbf,0x22aca432,0xf1dd3875,0x744aff76,0xa88b97cf,0xfe8e3d24,0xd1359afd +.long 0x91502cf3,0x52a3ba2b,0x084db75d,0x2c3832a8,0xde30b1c9,0x04a12ddd,0xe31fd60c,0x7802eabc,0xa37fddab,0x33707327,0xfaafa973,0x65d6f2ab,0x11e6f91a,0x3525c5b8,0x5f46530b,0x76aeb0c9 +.long 0x2f93a675,0xe8815ff6,0x05f48679,0xa6ec9684,0x358ae884,0x6dcbb556,0xe19e3873,0x0af61472,0xa5f696be,0x72334372,0x6f22fb70,0xc65e57ea,0x946cea90,0x268da30c,0x65681b2a,0x136a8a87 +.long 0x0f9f44d4,0xad5e81dc,0x2c46585a,0xf09a6960,0xc447d1b1,0xd1649164,0x879dc8b1,0x3b4b36c8,0x3b6b234c,0x20d4177b,0x1730d9d0,0x096a2505,0xef80531d,0x0611b9b8,0x64bb495d,0xba904b3b +.long 0x93a3147a,0x1192d9d4,0x9a565545,0x9f30a5dc,0x6ef07212,0x90b1f9cb,0x0d87fc13,0x29958546,0xc17db9ba,0xd3323eff,0xcb1644a8,0xcb18548c,0x4f49ffbc,0x18a306d4,0x4c2e8684,0x28d658f1 +.long 0xa99f8c71,0x44ba60cd,0x4bf742ff,0x67b7abdb,0x914b3f99,0x66310f9c,0xf412c161,0xae430a32,0x88ace52f,0x1e6776d3,0x52d7067d,0x4bc0fa24,0x8f07cd1b,0x03c286aa,0xa985b2c1,0x4cb8f38c +.long 0x8c3bff36,0x83ccbe80,0x5263e575,0x005a0bd2,0x259bdcd1,0x460d7dda,0xfa5cab6b,0x4a1c5642,0x9fe4fc88,0x2b7bdbb9,0xcc97bbb5,0x09418e28,0xa12321ae,0xd8274fb4,0x5c87b64e,0xb137007d +.long 0xc63c4962,0x80531fe1,0x981fdb25,0x50541e89,0xfd4c2b6b,0xdc1291a1,0xa6df4fca,0xc0693a17,0x0117f203,0xb2c4604e,0x0a99b8d0,0x245f1963,0xc6212c44,0xaedc20aa,0x520f52a8,0xb1ed4e56 +.long 0xf8547be3,0xfe48f575,0xa9e45f98,0x0a7033cd,0x18c50100,0x4b45d3a9,0xa61d41da,0xb2a6cd6a,0x57933c6b,0x60bbb4f5,0x2b0d7ffc,0xa7538ebd,0x8cd626b6,0x9ea3ab8d,0x3601625a,0x8273a484 +.long 0x0168e508,0x88859845,0x99a94abd,0x8cbc9bb2,0xfab0a671,0x713ac792,0x6c9ebffc,0xa3995b19,0x1239e152,0xe711668e,0xbbb8dff4,0x56892558,0xdbf17963,0x8bfc7dab,0xb3de1253,0x5b59fe5a +.long 0x34a9f7ae,0x7e3320eb,0xd751efe4,0xe5e8cf72,0xd9be2f37,0x7ea003bc,0xb6c08ef7,0xc0f551a0,0x038f6725,0x56606268,0x6d92d3b6,0x1dd38e35,0xc3cbd686,0x07dfce7c,0x651c5da8,0x4e549e04 +.long 0x08b19340,0x4058f93b,0xcac6d89d,0xc2fae6f4,0x8f159cc7,0x4bad8a8c,0xcb0b601c,0x0ddba4b3,0x1dd95f8c,0xda4fc7b5,0xcea5c255,0x1d163cd7,0x274a8c4c,0x30707d06,0x2802e9ce,0x79d9e008 +.long 0xe6ddd505,0x02a29ebf,0xb50bed1a,0x37064e74,0xa7327d57,0x3f6bae65,0xf83920bc,0x3846f5f1,0x60df1b9b,0x87c37491,0x2d1da29f,0x4cfb2895,0x4ed1743c,0x10a478ca,0x3edd47c6,0x390c6030 +.long 0x8c0a78de,0x8f3e5312,0x1e85df70,0xccd02bda,0xa61b6582,0xd6c75c03,0xfc0eebd1,0x0762921c,0xd85010c0,0xd34d0823,0x0044cf1f,0xd73aaacb,0xa3b5e78a,0xfb4159bb,0xe5826f3f,0x2287c7f7 +.long 0x580b1a01,0x4aeaf742,0x60423b79,0xf080415d,0xa7dea144,0xe12622cd,0x59d62472,0x49ea4996,0x571f3913,0xb42991ef,0xf5b25a8a,0x0610f214,0x30b79e8f,0x47adc585,0x07a065a2,0xf90e3df6 +.long 0x43e2e034,0x5d0a5deb,0x444024aa,0x53fb5a34,0x6b0c9f7f,0xa8628c68,0xac563656,0x9c69c29c,0xbace47b6,0x5a231feb,0x9ea5a2ec,0xbdce0289,0x9463853e,0x05da1fac,0x509e78aa,0x96812c52 +.long 0x57151692,0xd3fb5771,0xd98e1c44,0xeb2721f8,0x32399be1,0xc0506087,0xd979d8b8,0xda5a5511,0xc6f56780,0x737ed55d,0x0dc7a7f4,0xe20d3004,0xf5941a03,0x02ce7301,0xed30f83a,0x91ef5215 +.long 0x4092d85f,0x28727fc1,0x5c49e41a,0x72d223c6,0xba6a4d81,0xa7cf30a2,0xb030d87d,0x7c086209,0xfc588b09,0x04844c7d,0x5874bbb0,0x728cd499,0xe84c0495,0xcc1281ee,0xec31958f,0x0769b5ba +.long 0xf99c2471,0x665c228b,0x191eb110,0xf2d8a11b,0xd36d7024,0x4594f494,0xcdcb25a1,0x482ded8b,0xdadd4885,0xc958a9d8,0xf1d2b547,0x7004477e,0x2a0af550,0x0a45f6ef,0x2f8d6351,0x4fc739d6 +.long 0x786f08a9,0x75cdaf27,0x42c2737f,0x8700bb26,0x1c4e2670,0x855a7141,0x15076fef,0x810188c1,0xabcd3297,0xc251d0c9,0xf48108eb,0xae4c8967,0x18ceed30,0xbd146de7,0xc986bced,0xf9d4f07a +.long 0x83fa1e08,0x5ad98ed5,0xbeabd1fb,0x7780d33e,0x903b1196,0xe330513c,0xa47bc8c4,0xba11de9e,0x02c2d064,0x684334da,0xa48de23b,0x7ecf360d,0x0a9089d8,0x57a1b474,0xff36734c,0xf28fa439 +.long 0xea4570b3,0xf2a482cb,0xa5ebcee9,0xee65d68b,0xb9694cd5,0x988d0036,0x37885d32,0x53edd0e9,0xbeb9bc6d,0xe37e3307,0x9f5c6768,0xe9abb907,0x51f2160f,0x4396ccd5,0x47336da6,0x2500888c +.long 0x926fce43,0x383f9ed9,0x04da2930,0x809dd1c7,0x8a4cb227,0x30f6f596,0x73a56b38,0x0d700c7f,0xab64a065,0x1825ea33,0x1338df80,0xaab9b735,0x9b63f57f,0x1516100d,0x27a6a634,0x2574395a +.long 0x700a1acd,0xb5560fb6,0xfd999681,0xe823fd73,0x6cb4e1ba,0xda915d1f,0x6ebe00a3,0x0d030118,0x89fca8cd,0x744fb0c9,0xf9da0e0b,0x970d01db,0x7931d76f,0x0ad8c564,0xf659b96a,0xb15737bf +.long 0xa8b484e7,0xdc9933e8,0x7a26dec7,0xb2fdbdf9,0x9f1f0136,0x2349e9a4,0x70fddddb,0x7860368e,0xf9ad3e18,0xd93d2c1c,0x689f4e79,0x6d6c5f17,0xb24ff1b6,0x7a544d91,0xfe16cd8c,0x3e12a5eb +.long 0xa56b872f,0x543574e9,0xfcf68ea2,0xa1ad550c,0x3f560ef7,0x689e37d2,0xc9d47a8b,0x8c54b9ca,0x088ac342,0x46d40a4a,0x1576c6d0,0xec450c7c,0x1f9689e9,0xb589e31c,0xb8781718,0xdacf2602 +.long 0xc8cb6b42,0xa89237c6,0xb96ef381,0x1326fc93,0xb5f07825,0x55d56c6d,0x7449e22d,0xacba2eea,0x633c3000,0x74e0887a,0xd7cbcf71,0xcb6cd172,0xc36cf1be,0x309e81de,0x60ae399b,0x07a18a6d +.long 0x9edce57e,0xb36c2679,0xdf001d41,0x52b892f4,0x16a1f2c6,0xd884ae5d,0xefcc370a,0x9b329424,0xbd2e21df,0x3120daf2,0x02470a99,0x55298d2d,0xa05db32e,0x0b78af6c,0x601f5636,0x5c76a331 +.long 0xf8a4f29c,0xaae861ff,0xd68f8d49,0x70dc9240,0x81b1321c,0x960e649f,0x8792e4ce,0x3d2c801b,0x42521876,0xf479f772,0x416c79b1,0x0bed93bc,0x263e5bc9,0xa67fbc05,0x521db049,0x01e8e630 +.long 0xc6f3431e,0x76f26738,0xe3267541,0xe609cb02,0x818c877c,0xb10cff2d,0x786a13cb,0x1f0e75ce,0x1158544d,0xf4fdca64,0x6cb71ed0,0x5d777e89,0xa9aa4755,0x3c233737,0xe527ab40,0x7b453192 +.long 0x39f05ffe,0xdb59f688,0x6d82574e,0x8f4f4be0,0xee292d1b,0xcce3450c,0x61ccd086,0xaa448a12,0xf7914967,0xabce91b3,0x1908a5ed,0x4537f09b,0xf51042e7,0xa812421e,0xec0b3a34,0xfaf5cebc +.long 0x4ca6b39a,0x730ffd87,0x02efd342,0x70fb72ed,0xd75c8edb,0xeb4735f9,0xc278aa51,0xc11f2157,0xbf3bfebf,0xc459f635,0x6bd9601f,0x3a1ff0b4,0xc420cb73,0xc9d12823,0x3c2915a3,0x3e9af3e2 +.long 0xb41c3440,0xe0c82c72,0xe3039a5f,0x175239e5,0x558795a3,0xe1084b8a,0xd01e5c60,0x328d0a1d,0xd3788a04,0x0a495f2e,0x66c11a9f,0x25d8ff16,0x9ed692d6,0xf5155f05,0x4f425fe4,0x954fa107 +.long 0xe98aaa99,0xd16aabf2,0x96b0f88a,0x90cd8ba0,0xc154026a,0x957f4782,0x52af56d2,0x54ee0734,0x45b4147a,0xbcf89e54,0x9a52816c,0x3d102f21,0x39b62e77,0x6808517e,0x69169ad8,0x92e25421 +.long 0xbb608558,0xd721d871,0xf6d4ff9b,0x60e4ebae,0x41f2763e,0x0ba10819,0x51ee3247,0xca2e45be,0x2bfd7a5f,0x66d172ec,0x74d0b12d,0x528a8f2f,0xdabe70dc,0xe17f1e38,0x9f93983c,0x1d5d7316 +.long 0xdf423e31,0x51b2184a,0xaedb1a10,0xcb417291,0x625bcab9,0x2054ca93,0xa98998f0,0x54396860,0xa54ae57e,0x4e53f6c4,0xee648e9d,0x0ffeb590,0x6afaf6bc,0xfbbdaadc,0xaa3bfb8a,0xf88ae796 +.long 0xd2359ed9,0x209f1d44,0xf3544ce2,0xac68dd03,0xfd51e569,0xf378da47,0x2cc80097,0xe1abd860,0x343b6e3a,0x23ca18d9,0xb40a1bae,0x480797e8,0x533f3e67,0xd1f0c717,0x06e6cdfc,0x44896970 +.long 0x52a82e8d,0x8ca21055,0x78460cdc,0xb2caf785,0xe9037178,0x4c1b7b62,0xdb514b58,0xefc09d2c,0x9113be5c,0x5f2df9ee,0xb3f9271c,0x2fbda78f,0x8f83fc54,0xe09a81af,0x8afb5141,0x06b13866 +.long 0x43e3865d,0x38f6480f,0x1ddf47d9,0x72dd77a8,0x4c205ff7,0xf2a8e971,0x9d088ad8,0x46d449d8,0x185d706f,0x926619ea,0xc7dd7f62,0xe47e02eb,0x8cbc2031,0xe7f120a7,0x998d4ac9,0xc18bef00 +.long 0x6bdf22da,0x18f37a9c,0x90dc82df,0xefbc432f,0x5d703651,0xc52cef8e,0xd99881a5,0x82887ba0,0xb920ec1d,0x7cec9dda,0xec3e8d3b,0xd0d7e8c3,0x4ca88747,0x445bc395,0x9fd53535,0xedeaa2e0 +.long 0x6cc87475,0x461b1d93,0x6d2383bd,0xd92a52e2,0xd7903546,0xfabccb59,0x3d14b112,0x6111a761,0xb3d5f612,0x0ae584fe,0x60e828ec,0x5ea69b8d,0x54087030,0x6c078985,0xac4821fe,0x649cab04 +.long 0x8bdce214,0x25ecedcf,0x86af7361,0xb5622f72,0x7038b9e2,0x0e1227aa,0xac20fa77,0xd0efb273,0x79df975b,0x817ff88b,0x1999503e,0x856bf286,0x5038ec46,0xb4d5351f,0xfc42af6e,0x740a52c5 +.long 0x2cbb1a3f,0x2e38bb15,0x17a83429,0xc3eb99fe,0xdd66bb74,0xca4fcbf1,0xcde5e8fc,0x880784d6,0xb4e7a0be,0xddc84c1c,0xbd15a72f,0x8780510d,0x81ec30e1,0x44bcf1af,0x0a61073e,0x141e50a8 +.long 0x47be87ae,0x0d955718,0xf76a4372,0x68a61417,0xc607c3d3,0xf57e7e87,0x5252f332,0x043afaf8,0x1552a4d2,0xcc14e121,0xbb4d4ab4,0xb6dee692,0xa03816a4,0xb6ab74c8,0x6f394a29,0x84001ae4 +.long 0xd795fb45,0x5bed8344,0xb79f55a5,0x57326e7d,0x4accdffc,0xc9533ce0,0x3993fa04,0x53473caf,0xa13df4c8,0x7906eb93,0x97cbe46f,0xa73e51f6,0x0ae4ccf8,0xd1ab3ae1,0x8a5b3dbc,0x25614508 +.long 0x11a71b27,0x61eff962,0x6bb7fa39,0xdf71412b,0x2bd7f3ef,0xb31ba6b8,0x69180d29,0xb0b9c415,0x014cdde5,0xeec14552,0x227b4bbb,0x702c624b,0xd3e988f3,0x2b15e8c2,0xa4f7fd04,0xee3bcc6d +.long 0x42ac6c85,0x9d00822a,0x1df9f2b7,0x2db0cea6,0x42de1e58,0xd7cad2ab,0x2d6fbb61,0x346ed526,0x1a2faf09,0xb3962995,0x7c25612e,0x2fa8a580,0x7cf56490,0x30ae04da,0x0eea3961,0x75662908 +.long 0x3d080847,0x3609f5c5,0x5241d4f6,0xcb081d39,0x77961a63,0xb4fb3810,0x2abb66fc,0xc20c5984,0xf902f245,0x3d40aa7c,0x4e536b1e,0x9cb12736,0x99b3134f,0x5eda24da,0x5cd011af,0xafbd9c69 +.long 0xc7088c7d,0x9a16e30a,0x3207389f,0x5ab65710,0xe7407a53,0x1b09547f,0x4fdc6eab,0x2322f9d7,0x7430de4d,0xc0f2f22d,0xe68ca9a9,0x19382696,0x918e5868,0x17f1eff1,0x586f4204,0xe3b5b635 +.long 0x3fbc4341,0x146ef980,0x5b5eed4e,0x359f2c80,0x7482e41d,0x9f35744e,0xf3b224c2,0x9a9ac3ec,0x91fc50ae,0x9161a6fe,0xc613fa7c,0x89ccc66b,0xc732f15a,0x89268b14,0xb467ed03,0x7cd6f4e2 +.long 0xce56b40e,0xfbf79869,0xc02dde98,0xf93e094c,0xedee2cd7,0xefe0c3a8,0xb268fd42,0x90f3ffc0,0x08241aed,0x81a7fd56,0x00b1afe8,0x95ab7ad8,0x3e310d52,0x40127056,0x09d9fc43,0xd3ffdeb1 +.long 0xd11a8594,0xc8f85c91,0x31cf6db8,0x2e74d258,0x02b5dfd0,0x829c7ca3,0x69143c86,0xe389cfbe,0x941768d8,0xd01b6405,0x03bf825d,0x45103995,0x56cd17e2,0xcc4ee166,0xba037e79,0xbea3c283 +.long 0xd9a47520,0x4e1ac06e,0xaf852404,0xfbfe18aa,0x8087648a,0x5615f8e2,0xb9d150d9,0x7301e47e,0xb299b977,0x79f9f9dd,0xa5b78314,0x76697a7b,0x7d7c90e7,0x10d67468,0x937210b5,0x7afffe03 +.long 0x28c22cee,0x5aef3e4b,0x09fd55ae,0xefb0ecd8,0x0d2a5d6a,0x4cea7132,0x01db6357,0x9cfb5fa1,0xf36e1ac5,0x395e0b57,0x36cafb7d,0x008fa9ad,0x5308c4db,0x8f6cdf70,0x95ed2477,0x51527a37 +.long 0x5bd21311,0xba0dee30,0x909c90d7,0x6ed41b22,0x7c8696d3,0xc5f6b758,0x3ce83a80,0x0db8eaa8,0xb24b4b6f,0xd297fe37,0x522d1f0d,0xfe58afe8,0x8c98dbd9,0x97358736,0x9454a527,0x6bc226ca +.long 0xce53c2d0,0xa12b384e,0x5e4606da,0x779d897d,0x73ec12b0,0xa53e47b0,0x5756f1ad,0x462dbbba,0xcafe37b6,0x69fe09f2,0xecce2e17,0x273d1ebf,0x3cf607fd,0x8ac1d538,0x12e10c25,0x8035f7ff +.long 0x7e6c5520,0x854d34c7,0xdcb9ea58,0xc27df9ef,0xd686666d,0x405f2369,0x0417aa85,0x29d1febf,0x93470afe,0x9846819e,0xe2a27f9e,0x3e6a9669,0xe31e6504,0x24d008a2,0x9cb7680a,0xdba7cecf +.long 0x338d6e43,0xecaff541,0x4541d5cc,0x56f7dd73,0x96bc88ca,0xb5d426de,0x9ed3a2c3,0x48d94f6b,0x2ef8279c,0x6354a3bb,0x0b1867f2,0xd575465b,0x95225151,0xef99b0ff,0xf94500d8,0xf3e19d88 +.long 0xe32dd620,0x92a83268,0x627849a2,0x913ec99f,0x2c378882,0xedd8fdfa,0xee6f8cfe,0xaf96f33e,0xdc3fa8a5,0xc06737e5,0xb0b03a1d,0x236bb531,0x89f037b0,0x33e59f29,0xd9a12a53,0x13f9b5a7 +.long 0x51efb310,0x0d0df6ce,0x958df5be,0xcb5b2eb4,0x36158e59,0xd6459e29,0x1466e336,0x82aae2b9,0x411aa636,0xfb658a39,0xd4c0a933,0x7152ecc5,0x49f026b7,0xf10c758a,0xcb09311f,0xf4837f97 +.long 0xc753c45f,0xddfb02c4,0xf9c840fe,0x18ca81b6,0xb0f8a3e6,0x846fd09a,0xe7733dbc,0xb1162add,0x236e3ab6,0x7070ad20,0xb2a56326,0xf88cdaf5,0x997cbc7a,0x05fc8719,0x4b665272,0x442cd452 +.long 0xb71698f5,0x7807f364,0x9f7b605e,0x6ba418d2,0xa03b2cbb,0xfd20b00f,0xda54386f,0x883eca37,0xf3437f24,0xff0be43f,0xa48bb33c,0xe910b432,0x329df765,0x4963a128,0xbe2fe6f7,0xac1dd556 +.long 0x24a0a3fc,0x557610f9,0xe881c3f9,0x38e17bf4,0xed0dac99,0x6ba84faf,0x59eeb918,0xd4a222c3,0x13f542b6,0xc79c1dbe,0xe425d457,0x1fc65e0d,0x1debb779,0xeffb754f,0x9e08af60,0x638d8fd0 +.long 0x626332d5,0x994f523a,0x5561bb44,0x7bc38833,0x3d845ea2,0x005ed4b0,0xc2a1f08a,0xd39d3ee1,0xe7676b0d,0x6561fdd3,0xfb706017,0x620e35ff,0xf264f9a8,0x36ce424f,0xda2681f7,0xc4c3419f +.long 0x69beb6e8,0xfb6afd2f,0x6d700d03,0x3a50b993,0x0c83a14f,0xc840b2ad,0x54085bef,0x573207be,0x09fe7e5b,0x5af882e3,0x3b40a7e1,0x957678a4,0x543056e2,0x172d4bdd,0x0df13c0a,0x9c1b26b4 +.long 0xf405ff06,0x1c30861c,0x486e828b,0xebac86bd,0x636933fc,0xe791a971,0x7aeee947,0x50e7c2be,0xfa90d767,0xc3d4a095,0xe670ab7b,0xae60eb7b,0x397b056d,0x17633a64,0x105012aa,0x93a21f33 +.long 0xabb88643,0x663c370b,0x22e21599,0x91df36d7,0x8b761671,0x183ba835,0x728f3bf1,0x381eea1d,0x39966e6c,0xb9b2f1ba,0xe7295492,0x7c464a28,0x09b26b7f,0x0fd5f70a,0xfbe009df,0xa9aba1f9 +.long 0x369b87ad,0x857c1f22,0x32fca556,0x3c00e5d9,0x90b06466,0x1ad74cab,0x550faaf2,0xa7112386,0x6d9bd5f5,0x7435e198,0x59c3463f,0x2dcc7e38,0xca7bd4b2,0xdc7df748,0x9dec2f31,0x13cd4c08 +.long 0xe3237710,0x0d3b5df8,0xcbd2f7b0,0x0dadb26e,0xe4aa082b,0x9f5966ab,0x350e966e,0x666ec8de,0xee524216,0x1bfd1ed5,0x41dab0b6,0xcd93c59b,0xd186d6ba,0x658a8435,0x159d1195,0x1b7d34d2 +.long 0x22caf46b,0x5936e460,0x9a96fe4f,0x6a45dd8f,0xb98f474e,0xf7925434,0x0053ef15,0x41410412,0x41de97bf,0x71cf8d12,0xbd80bef4,0xb8547b61,0xc4db0037,0xb47d3970,0xfef20dff,0xf1bcd328 +.long 0x10caad67,0x31a92e09,0x5531a1e1,0x1f591960,0x5f4fc840,0x3bb852e0,0x93a72c6c,0x63e297ca,0x49abad67,0x3c2b0b2e,0xed3db0d9,0x6ec405fc,0x7fef1d40,0xdc14a530,0x280896fc,0xccd19846 +.long 0x9bb81648,0x00f83176,0x653120d0,0xd69eb485,0x4ccabc62,0xd17d75f4,0xb749fcb1,0x34a07f82,0xbbfb5554,0x2c3af787,0x62e283f8,0xb06ed4d0,0xa19213a0,0x5722889f,0xdcf3c7b4,0x162b085e +.long 0xe0dd3eca,0xbcaecb31,0xe52f13a5,0xc6237fbc,0x27bac297,0xcc2b6b03,0xb917f54a,0x2ae1cac5,0x7845ae4f,0x474807d4,0xce5972e0,0xfec7dd92,0x1d7915bb,0xc3bd2541,0xd94907ca,0x66f85dc4 +.long 0xbdbcf0ca,0xd981b888,0xdf279e9f,0xd75f5da6,0x7054e934,0x128bbf24,0x81db134b,0x3c6ff6e5,0x047d26e4,0x795b7cf4,0x5049ec37,0xf370f7b8,0xced945af,0xc6712d4d,0x095642bc,0xdf30b5ec +.long 0x4896246e,0x9b034c62,0xee90bbd1,0x5652c016,0x87fedb73,0xeb38636f,0x0135a613,0x5e32f847,0xcf933c83,0x0703b312,0x1a7f47e6,0xd05bb76e,0x949c2415,0x825e4f0c,0x7250d6f8,0x569e5622 +.long 0x6568013e,0xbbe9eb3a,0x22f243fc,0x8dbd203f,0xb342734a,0x9dbd7694,0x46afa984,0x8f6d12f8,0xc9eade29,0xb98610a2,0x47dd0f18,0xbab4f323,0x671c0d46,0x5779737b,0xd3e0a42a,0x10b6a7c6 +.long 0x3035b41c,0xfb19ddf3,0x99c45895,0xd336343f,0x54c857e5,0x61fe4938,0xae4e57d5,0xc4d506be,0xbbc33f75,0x3cd8c8cb,0x9262c77d,0x7281f08a,0xf11a2823,0x083f4ea6,0x9fba2e33,0x8895041e +.long 0x9c438edf,0xfcdfea49,0x91edba44,0x7678dcc3,0xe2ba50f0,0xf07b3b87,0x43948c1b,0xc13888ef,0x1140af42,0xc2135ad4,0x926ed1a7,0x8e5104f3,0x88f6695f,0xf24430cb,0x6d73c120,0x0ce0637b +.long 0xfe631e8f,0xb2db01e6,0xd7bdd24b,0x1c5563d7,0x369ad44f,0x8daea3ba,0x8187a9f9,0x000c81b6,0xaae1fd9a,0x5f48a951,0x8d5aed8a,0xe35626c7,0x0498c622,0x20952763,0x773aa504,0x76d17634 +.long 0xeb300f7a,0x36d90dda,0xedb5e801,0x9dcf7dfc,0x74d5244c,0x645cb268,0x348e3aa2,0xa127ee79,0x575f1dbb,0x488acc53,0x80e6161e,0x95037e85,0x292650d0,0x57e59283,0x14938216,0xabe67d99 +.long 0x3f8e1065,0x3c7f944b,0x330e8924,0xed908cb6,0x6f530136,0x08ee8fd5,0xd7ffc169,0x2227b7d5,0xb5cd6dd5,0x4f55c893,0xa62796e8,0x82225e11,0xcb18e12c,0x5c6cead1,0x84f5a51a,0x4381ae0c +.long 0x7fafa4c8,0x345913d3,0x0491aac0,0x3d918082,0x3e69264c,0x9347871f,0xb4f4f0cd,0xbea9dd3c,0x3eadd3e7,0xbda5d067,0x0573bcd8,0x0033c1b8,0x5da2486c,0x25589379,0x86abbee7,0xcb89ee5b +.long 0x22532e5d,0x8fe0a8f3,0x727dfc4c,0xb6410ff0,0x226726db,0x619b9d58,0x7a2b2dc7,0x5ec25669,0x4c3beb01,0xaf4d2e06,0x7acea556,0x852123d0,0xf783487a,0x0e9470fa,0x5664b3eb,0x75a7ea04 +.long 0x6798e4ba,0x4ad78f35,0xc7d0e091,0x9214e6e5,0xb1290403,0xc420b488,0xfc295749,0x64049e0a,0x3ae9841f,0x03ef5af1,0xb0b662a6,0xdbe4ca19,0xfa453458,0x46845c5f,0x10b66722,0xf8dabf19 +.long 0xcce2793b,0xb650f0aa,0xc5ec47c1,0x71db851e,0x3b234fa9,0x3eb78f3e,0xfc0106ce,0xb0c60f35,0x774eadbd,0x05427121,0xce323863,0x25367faf,0xcd086976,0x7541b5c9,0xdc507ad1,0x4ff069e2 +.long 0x8776e667,0x74145256,0xb23c6bb5,0x6e76142c,0x1b3a8a87,0xdbf30712,0x98450836,0x60e7363e,0xb7366d80,0x5741450e,0x4837dbdf,0xe4ee14ca,0x69d4316f,0xa765eb9b,0x8ef43825,0x04548dca +.long 0x5ae888eb,0x9c9f4e4c,0x56e9ac99,0x733abb51,0xba6ac029,0xdaad3c20,0x2ba3e38e,0x9b8dd3d3,0x0bc5d11a,0xa9bb4c92,0x9c5f88a3,0xf20127a7,0x161d3cb8,0x4f52b06e,0x6afaf0a6,0x26c1ff09 +.long 0x7189e71f,0x32670d2f,0x5ecf91e7,0xc6438748,0xdb757a21,0x15758e57,0x290a9ce5,0x427d09f8,0x38384a7a,0x846a308f,0xb0732b99,0xaac3acb4,0x17845819,0x9e941009,0xa7ce5e03,0x95cba111 +.long 0xb00009c4,0x6f3d4f7f,0x8ff28b5f,0xb8396c27,0x1c97975d,0xb1a9ae43,0xe5d9fed5,0x9d7ba8af,0x34f485b6,0x338cf09f,0x64122516,0xbc0ddacc,0x05d471fe,0xa450da12,0x628dd8c9,0x4c3a6250 +.long 0xd1295837,0x69c7d103,0x3807eb2f,0xa2893e50,0xbdb41491,0xd6e1e1de,0x5e138235,0xc630745b,0x48661ae1,0xc892109e,0xea2b2674,0x8d17e7eb,0xc328d6b5,0x00ec0f87,0xf079ff9e,0x6d858645 +.long 0x19115ead,0x6cdf243e,0x4bac4fcf,0x1ce1393e,0x9c29f25b,0x2c960ed0,0x9d388a05,0x59be4d8e,0xd0def72b,0x0d46e06c,0xe0342748,0xb923db5d,0x936d4a3d,0xf7d3aacd,0x0b0b099e,0x558519cc +.long 0x827097ef,0x3ea8ebf8,0xd054f55d,0x259353db,0x6d2ed089,0x84c89abc,0x8e096a7c,0x5c548b69,0x994b995d,0xd587f616,0xa5845601,0x4d1531f6,0x451fd9f0,0x792ab31e,0x65adf6ca,0xc8b57bb2 +.long 0x1cd5ad73,0x68440fcb,0x6144da4f,0xb9c860e6,0x8462beb8,0x2ab286aa,0xef46797f,0xcc6b8fff,0x20c8a471,0xac820da4,0x77ff7faf,0x69ae05a1,0xbfb5da77,0xb9163f39,0x2c73ab7a,0xbd03e590 +.long 0xb2940d9e,0x7e862b5e,0x4b9af564,0x3c663d86,0xbde3033d,0xd8309031,0xd42c5bc6,0x298231b2,0x552ad093,0x42090d2c,0xff854695,0xa4799d1c,0xd31f0d00,0x0a88b5d6,0xa2f26b46,0xf8b40825 +.long 0xf1bd7218,0xec29b1ed,0x4b24c86e,0xd491c53b,0x3395ea65,0xd2fe588f,0x4456ef15,0x6f3764f7,0xcdc34800,0xdb43116d,0xc1e33955,0xcdbcd456,0x74ab286b,0xefdb5540,0xd18c5d7c,0x948c7a51 +.long 0x7378058e,0xeb81aa37,0x04411154,0x41c746a1,0xfb828ac7,0xa10c73bc,0x9d972b29,0x6439be91,0x43a2fbad,0x4bf3b4b0,0x82b5e840,0x39e6dadf,0x6397bd4c,0x4f716408,0x7f1eeccb,0x0f7de568 +.long 0xd2ffbfc1,0x5865c5a1,0x4ccb6451,0xf74211fa,0xc0b32558,0x66368a88,0x9ad7812e,0x5b539dc2,0x2f3af6f6,0x579483d0,0x99934ece,0x52132078,0xdcc9e983,0x50b9650f,0xaee42b8a,0xca989ec9 +.long 0xd6f62f99,0x6a44c829,0x4c2a7c0c,0x8f06a309,0x98a0cb0a,0x4ea2b3a0,0xbeee8364,0x5c547b70,0x682afe11,0x461d40e1,0x7b41c0a8,0x9e0fc77a,0xe20d5d36,0x79e4aefd,0x32dd9f63,0x2916e520 +.long 0x3f883faf,0xf59e52e8,0x2b868d35,0x396f9639,0x4ca19881,0xc902a9df,0xdb2401a6,0x0fc96822,0x66f1c68d,0x41237587,0xfb476c0d,0x10fc6de3,0x841f5d90,0xf8b6b579,0xfa24f44a,0x2ba8446c +.long 0xef4a9975,0xa237b920,0x2330435f,0x60bb6004,0xcfb7e7b5,0xd6f4ab5a,0x83435391,0xb2ac5097,0xb0d1ea67,0xf036ee2f,0x74c56230,0xae779a6a,0xab838ae6,0x59bff8c8,0x9b38e6f0,0xcd83ca99 +.long 0xe33deed3,0xbb27bef5,0x001892a8,0xe6356f6f,0x7adfbd3e,0xbf3be6cc,0x33d1ac9d,0xaecbc81c,0xe6e861dc,0xe4feb909,0x53f5f801,0x90a247a4,0x27346e57,0x01c50acb,0x461acc1b,0xce29242e +.long 0x2f998a91,0x04dd214a,0xd4baf27b,0x271ee9b1,0xe8c26722,0x7e3027d1,0x1820dce5,0x21d1645c,0x7501779c,0x086f242c,0xfa0e8009,0xf0061407,0x60187129,0xf23ce477,0x0fde9bd0,0x05bbdedb +.long 0x25d98473,0x682f4832,0x5c658427,0xf207fe85,0x4166ffa1,0xb6fdd7ba,0x9eed799d,0x0c314056,0x4107e28f,0x0db8048f,0x41216840,0x74ed3871,0x56a3c06e,0x74489f8f,0x12777134,0x1e1c005b +.long 0xf37ec3c3,0xdb332a73,0xdd59eba0,0xc65259bd,0xdb4d3257,0x2291709c,0xbd389390,0x9a793b25,0xe43756f0,0xf39fe34b,0x9afb56c9,0x2f76bdce,0x61208b27,0x9f37867a,0x089972c3,0xea1d4307 +.long 0x8bdf623a,0x8c595330,0x8441fb7d,0x5f5accda,0x32ddfd95,0xfafa9418,0x0fde9be7,0x6ad40c5a,0xaeca8709,0x43faba89,0x2c248a9d,0xc64a7cf1,0x72637a76,0x16620252,0x22b8d1bb,0xaee1c791 +.long 0x21a843b2,0xf0f798fd,0x8d005cb1,0x56e4ed4d,0x1f0d8abe,0x355f7780,0x34522326,0x197b04cf,0xfd42c13f,0x41f9b31f,0xb40f933d,0x5ef7feb2,0x5d60bad4,0x27326f42,0x8c92cf89,0x027ecdb2 +.long 0x4e3352fe,0x04aae4d1,0x73591b90,0x08414d2f,0xb7da7d60,0x5ed6124e,0x4d13d4ec,0xb985b931,0x96bf36f9,0xa592d3ab,0xbbdf51df,0x012dbed5,0xdf6c177d,0xa57963c0,0x87ca29cf,0x010ec869 +.long 0xbf926dff,0xba1700f6,0xf4bf6bc2,0x7c9fdbd1,0x64da11f5,0xdc18dc8f,0xd938ae75,0xa6074b7a,0xe84f44a4,0x14270066,0xd27b954e,0x99998d38,0xb4f38e9a,0xc1be8ab2,0x15c01016,0x8bb55bbf +.long 0x0ea2ab30,0xf73472b4,0xf73d68dd,0xd365a340,0x19c2e1eb,0xc01a7168,0x34061719,0x32f49e37,0x01d8b4d6,0xb73c57f1,0x26b47700,0x03c8423c,0xa4d8826a,0x321d0bc8,0x4bc0e638,0x6004213c +.long 0xc1c06681,0xf78c64a1,0xef018e50,0x16e0a16f,0xdb42b2b3,0x31cbdf91,0xe0d36f58,0xf8f4ffce,0x4cc5e3e0,0xcdcc71cd,0xa129e3e0,0xd55c7cfa,0x0fb2cbf1,0xccdb6ba0,0xc4bce3cb,0x6aba0005 +.long 0xd232cfc4,0x501cdb30,0xd58a3cef,0x9ddcf12e,0x87e09149,0x02d2cf9c,0x2c976257,0xdc5d7ec7,0x0b50d7dd,0x6447986e,0x807f112a,0x88fdbaf7,0xb00ae9f6,0x58c9822a,0x6d3d27e0,0x6abfb950 +.long 0x8a429f4f,0xd0a74487,0xdb516609,0x0649712b,0xe769b5df,0xb826ba57,0x1fc7aaf2,0x82335df2,0x5c93d995,0x2389f067,0x68677be6,0x59ac367a,0x21d9951b,0xa77985ff,0x85011cce,0x038956fb +.long 0xbb734e37,0x608e48cb,0x2be5b26f,0xc08c0bf2,0xf9b1a0d9,0x17bbdd3b,0x10483319,0xeac7d898,0xbc1a6dea,0xc95c4baf,0x172aafdb,0xfdd0e2bf,0x8235c41a,0x40373cbc,0xfb6f41d5,0x14303f21 +.long 0x0408f237,0xba063621,0xecd2d1ed,0xcad3b09a,0x52abb6a2,0x4667855a,0xaa8b417b,0xba9157dc,0x4f013efb,0xfe7f3507,0xaa38c4a2,0x1b112c4b,0x9ba64345,0xa1406a60,0x6993c80b,0xe53cba33 +.long 0xded40d23,0x45466063,0x54908e25,0x3d5f1f4d,0x403c3c31,0x9ebefe62,0x0672a624,0x274ea0b5,0x451d1b71,0xff818d99,0x8f79cf79,0x80e82643,0x73ce37f5,0xa165df13,0xfe3a21fd,0xa744ef4f +.long 0xcf551396,0x73f1e7f5,0x868c676b,0xc616898e,0x8c442c36,0x671c28c7,0x5e0a317d,0xcfe5e558,0x7051f476,0x1242d818,0x14f03442,0x56fad2a6,0x0a44d0f6,0x262068bc,0xce6edf4e,0xdfa2cd6e +.long 0xd15d1517,0x0f43813a,0x377d44f5,0x61214cb2,0xc639b35f,0xd399aa29,0x54c51c19,0x42136d71,0x08417221,0x9774711b,0x52545a57,0x0a5546b3,0x1150582d,0x80624c41,0xfbc555bc,0x9ec5c418 +.long 0x771849f1,0x2c87dcad,0x01d7bf6f,0xb0c932c5,0x89116eb2,0x6aa5cd3e,0x51ca7bd3,0xd378c25a,0x9e6e3e31,0xc612a0da,0xb68ad5d0,0x0417a54d,0x22c6edb8,0x00451e4a,0xb42827ce,0x9fbfe019 +.long 0xba9384a2,0x2fa92505,0x64ad69c1,0x21b8596e,0x983b35a6,0x8f4fcc49,0x72754672,0xde093760,0xf7bffe6d,0x2f14ccc8,0x5d94263d,0x27566bff,0x2df3ec30,0xb5b4e9c6,0x3e6ea6ba,0x94f1d7d5 +.long 0xaaca5e9b,0x97b7851a,0x56713b97,0x518aa521,0x150a61f6,0x3357e8c7,0xec2c2b69,0x7842e7e2,0x6868a548,0x8dffaf65,0xe068fc81,0xd963bd82,0x65917733,0x64da5c8b,0x7b247328,0x927090ff +.long 0xd298c241,0x214bc9a7,0x56807cfd,0xe3b697ba,0x4564eadb,0xef1c7802,0xb48149c5,0xdde8cdcf,0x5a4d2604,0x946bf0a7,0x6c1538af,0x27154d7f,0xde5b1fcc,0x95cc9230,0x66864f82,0xd88519e9 +.long 0x7cb1282c,0xb828dd1a,0xbe46973a,0xa08d7626,0xe708d6b2,0x6baf8d40,0x4daeb3f3,0x72571fa1,0xf22dfd98,0x85b1732f,0x0087108d,0x87ab01a7,0x5988207a,0xaaaafea8,0x69f00755,0xccc832f8 +.long 0x36ff3bf0,0x964d950e,0xf0b34638,0x8ad20f6f,0xb5d7585f,0x4d9177b3,0xef3f019f,0xcf839760,0x8288c545,0x582fc5b3,0x13116bd1,0x2f8e4e9b,0x332120ef,0xf91e1b2f,0x2a17dd23,0xcf568724 +.long 0xca8d9d1a,0x488f1185,0xd987ded2,0xadf2c77d,0x60c46124,0x5f3039f0,0x71e095f4,0xe5d70b75,0x6260e70f,0x82d58650,0xf750d105,0x39d75ea7,0x75bac364,0x8cf3d0b1,0x21d01329,0xf3a7564d +.long 0x2f52d2a7,0x182f04cd,0xe2df565a,0x4fde149a,0xa79fb2f7,0xb80c5eec,0x22ddc897,0xab491d7b,0xc6312c7f,0x99d76c18,0x6aa41a57,0xca0d5f3d,0xd15363a0,0x71207325,0xbeb252c2,0xe82aa265 +.long 0xec3128c2,0x94ab4700,0x8e383f49,0x6c76d862,0xc03024eb,0xdc36b150,0x53daac69,0xfb439477,0x8dc79623,0xfc68764a,0xb440fbb2,0x5b86995d,0xccc5ee0d,0xd66879bf,0x95aa8bd3,0x05228942 +.long 0x1e6a75c1,0xb51a40a5,0x0ea7d817,0x24327c76,0x07774597,0x06630182,0x97fa7164,0xd6fdbec3,0x13c90f48,0x20c99dfb,0x686ef263,0xd6ac5273,0xfef64eeb,0xc6a50bdc,0x86fdfc32,0xcd87b281 +.long 0x3fcd3efc,0xb24aa43e,0xb8088e9a,0xdd26c034,0xbd3d46ea,0xa5ef4dc9,0x8a4c6a6f,0xa2f99d58,0x2f1da46c,0xddabd355,0x1afacdd1,0x72c3f8ce,0x92d40578,0xd90c4eee,0xca623b94,0xd28bb41f +.long 0x745edc11,0x50fc0711,0x3dc87558,0x9dd9ad7d,0xb49d1e64,0xce6931fb,0xc98bd0f9,0x6c77a0a2,0x6baf7cb1,0x62b9a629,0xccf72d22,0xcf065f91,0x79639071,0x7203cce9,0xf9cb732f,0x09ae4885 +.long 0xee8314f3,0x5e7c3bec,0xdbea298f,0x1c068aed,0x7c80acec,0x08d381f1,0xe330495b,0x03b56be8,0x9222882d,0xaeffb8f2,0xc4af8bf7,0x95ff38f6,0x1fc57d8c,0x50e32d35,0x17b444f0,0x6635be52 +.long 0xa5177900,0x04d15276,0xf6858752,0x4e1dbb47,0xc615796c,0x5b475622,0x691867bf,0xa6fa0387,0x2844c6d0,0xed7f5d56,0x03a2477d,0xc633cf9b,0x2d3721d6,0xf6be5c40,0xe9fd68e6,0xaf312eb7 +.long 0xe7417ce1,0x242792d2,0x970ee7f5,0xff42bc71,0x5c67a41e,0x1ff4dc6d,0x20882a58,0x77709b7b,0xbe217f2c,0x3554731d,0x5bb72177,0x2af2a8cd,0x591dd059,0x58eee769,0x4bba6477,0xbb2930c9 +.long 0x7d930cfc,0x863ee047,0x396fd1f4,0x4c262ad1,0x039af7e1,0xf4765bc8,0x5ba104f6,0x2519834b,0xd105f961,0x7cd61b4c,0xd63bca54,0xa5415da5,0x88a1f17c,0x778280a0,0x2329512c,0xc4968949 +.long 0xcecdaa7a,0x174a9126,0x0b13247b,0xfc8c7e0e,0x3484c1c4,0x29c110d2,0x831dfc3b,0xf8eb8757,0xc0067452,0x022f0212,0x7b9b926c,0x3f6f69ee,0xef42daf4,0x09032da0,0x83f80de4,0x79f00ade +.long 0x81236c97,0x6210db71,0x3ee0781f,0x74f7685b,0xa3e41372,0x4df7da7b,0xb1a1553e,0x2aae38b1,0xf6dd9d1b,0x1688e222,0x5b8b6487,0x57695448,0x4b2edeaa,0x478d2127,0x1e85956a,0xb2818fa5 +.long 0xf176f2c0,0x1e6addda,0xe2572658,0x01ca4604,0x85342ffb,0x0a404ded,0x441838d6,0x8cf60f96,0xc9071c4a,0x9bbc691c,0x34442803,0xfd588744,0x809c0d81,0x97101c85,0x8c456f7f,0xa7fb754c +.long 0xd51805e1,0xc95f3c5c,0xb299dca8,0xab4ccd39,0x47eaf500,0x3e03d20b,0xd7b80893,0xfa3165c1,0xe160e552,0x005e8b54,0x9019d11f,0xdc4972ba,0x0c9a4a7a,0x21a6972e,0x37840fd7,0xa52c258f +.long 0xc1e99d81,0xf8559ff4,0xa3c617c0,0x08e1a7d6,0x248c6ba7,0xb398fd43,0xd1283794,0x6ffedd91,0xd629d208,0x8a6a59d2,0x3490530e,0xa9d141d5,0x38505989,0x42f6fc18,0x479d94ee,0x09bf250d +.long 0xb3822790,0x223ad3b1,0x93b8971c,0x6c5926c0,0x75f7fa62,0x609efc7e,0x1ec2d989,0x45d66a6d,0x987d2792,0x4422d663,0x3eb31d2b,0x4a73caad,0xa32cb9e6,0xf06c2ac1,0x91aeba84,0xd9445c5f +.long 0xaf71013f,0x6af7a1d5,0x0bedc946,0xe68216e5,0xd27370a0,0xf4cba30b,0x870421cc,0x7981afbf,0x9449f0e1,0x02496a67,0x0a47edae,0x86cfc4be,0xb1feca22,0x3073c936,0x03f8f8fb,0xf5694612 +.long 0x901515ea,0xd063b723,0x749cf038,0x4c6c77a5,0xab9e5059,0x6361e360,0xa76a37c0,0x596cf171,0x6530ae7a,0x800f53fa,0x0792a7a6,0x0f5e631e,0xefdb81c9,0x5cc29c24,0x3f9c40ba,0xa269e868 +.long 0x2cb7191e,0xec14f9e1,0xe5b08ea6,0x78ea1bd8,0x46332bb9,0x3c65aa9b,0xbf80ce25,0x84cc22b3,0xd49d5bf1,0x0098e9e9,0x19087da4,0xcd4ec1c6,0xaef6e357,0x3c9d07c5,0x9f8f64b8,0x839a0268 +.long 0xc6d8607f,0xc5e9eb62,0x6aa995e4,0x759689f5,0xbbb48317,0x70464669,0xe402417d,0x921474bf,0x2a354c8c,0xcabe135b,0x812fa4b5,0xd51e52d2,0x53311fe8,0xec741096,0xb864514b,0x4f774535 +.long 0x5bde48f8,0xbcadd671,0x2189bc7d,0xc9703873,0xc709ee8a,0x5d45299e,0x845aaff8,0xd1287ee2,0xdb1dbf1f,0x7d1f8874,0x990c88d6,0xea46588b,0x84368313,0x60ba649a,0x60d543ae,0xd5fdcbce +.long 0x810d5ab0,0x90b46d43,0x04d7e5cc,0x6739d8f9,0x0d337c33,0x021c1a58,0x68e67c40,0x00a61162,0x379f0a1f,0x95ef413b,0xe9e2ab95,0xfe126605,0x2f5f199c,0x67578b85,0x2cb84913,0xf5c00329 +.long 0x37577dd8,0xf7956430,0x29c5fe88,0x83b82af4,0xcdbdc132,0x9c1bea26,0x9c04339e,0x589fa086,0xb13799df,0x033e9538,0xd295d034,0x85fa8b21,0xbd9ddcca,0xdf17f73f,0xddb66334,0xf32bd122 +.long 0x858b044c,0x55ef88a7,0x5aa9e397,0x1f0d69c2,0x40d85559,0x55fd9cc3,0x7785ddb2,0xc774df72,0xd3bd2e1c,0x5dcce9f6,0xa85dfed0,0xeb30da20,0xd3ed09c4,0x5ed7f5bb,0x82a9c1bd,0x7d42a35c +.long 0x9890272d,0xcf3de995,0x3e713a10,0x75f3432a,0xe28227b8,0x5e13479f,0xfefacdc8,0xb8561ea9,0x8332aafd,0xa6a297a0,0x73809b62,0x9b0d8bb5,0x0c63036f,0xd2fa1cfd,0xbd64bda8,0x7a16eb55 +.long 0x78e62ddc,0x3f5cf5f6,0x07fd752b,0x2267c454,0x5e437bbe,0x5e361b6b,0x8354e075,0x95c59501,0xf2b254d9,0xec725f85,0x2cb52b4e,0x844b617d,0xcf425fb5,0xed8554f5,0x2af9f312,0xab67703e +.long 0x3cf48283,0x4cc34ec1,0x9c8a705e,0xb09daa25,0x5b7d4f84,0xd1e9d0d0,0xdb38929d,0x4df6ef64,0xaa21ba46,0xe16b0763,0xa293f8fb,0xc6b1d178,0xd520aabf,0x0ff5b602,0xc339397a,0x94d671bd +.long 0x4f5792fa,0x7c7d98cf,0x11215261,0x7c5e0d67,0xa7c5a6d4,0x9b19a631,0x7a45274d,0xc8511a62,0xa5a60d99,0x0c16621c,0xcf5e48cb,0xf7fbab88,0xf7ddee08,0xab1e6ca2,0xe7867f3c,0x83bd08ce +.long 0x2ac13e27,0xf7e48e8a,0x4eb1a9f5,0x4494f6df,0x981f0a62,0xedbf84eb,0x536438f0,0x49badc32,0x004f7571,0x50bea541,0xdf1c94ee,0xbac67d10,0xb727bc31,0x253d73a1,0x30686e28,0xb3d01cf2 +.long 0x55fd0b8b,0x51b77b1b,0xfeec3173,0xa099d183,0x670e72b7,0x202b1fb7,0xa8e1635f,0xadc88b33,0xf989d905,0x34e8216a,0x29b58d01,0xc2e68d20,0x6fe55a93,0x11f81c92,0x8f296f40,0x15f1462a +.long 0xea3d62f2,0x1915d375,0x01c8977d,0xa17765a3,0xe47b26f6,0x7559710a,0x535077a5,0xe0bd29c8,0x08d84858,0x615f976d,0x69ced5c1,0x370dfe85,0xa734fa56,0xbbc7503c,0x91ac4574,0xfbb9f1ec +.long 0x060dd7ef,0x95d7ec53,0x6e657979,0xeef2dacd,0xe2a08235,0x54511af3,0x1f4aea3d,0x1e324aa4,0xe6e67671,0x550e7e71,0xbf52faf7,0xbccd5190,0x223cc62a,0xf880d316,0x2b32eb5d,0x0d402c7e +.long 0x306a5a3b,0xa40bc039,0x96783a1b,0x4e0a41fd,0x0253cdd4,0xa1e8d39a,0xc7388638,0x6480be26,0x2285f382,0xee365e1d,0xec0b5c36,0x188d8d8f,0x1f0f4d82,0x34ef1a48,0xa487d29a,0x1a8f43e1 +.long 0x77aefb3a,0x8168226d,0x1e72c253,0xf69a751e,0xe9594df1,0x8e04359a,0xd14c0467,0x475ffd7d,0x3844e95c,0xb5a2c2b1,0xdd12ef94,0x85caf647,0xf1063d00,0x1ecd2a9f,0x23843311,0x1dd2e229 +.long 0x73d17244,0x38f0e09d,0x8fc653f1,0x3ede7746,0xdc20e21c,0xae4459f5,0x6a8599ea,0x00db2ffa,0x30cfd905,0x11682c39,0xa5c112a6,0x4934d074,0x568bfe95,0xbdf063c5,0x016c441a,0x779a440a +.long 0x97d6fbdc,0x0c23f218,0xe0776aac,0xd3a5cd87,0xd712e8db,0xcee37f72,0x26f74e8d,0xfb28c70d,0xb61301a0,0xffe0c728,0xd3724354,0xa6282168,0x768ffedc,0x7ff4cb00,0x03b02de9,0xc51b3088 +.long 0x3902dda5,0xa5a8147c,0xfe6973b4,0x35d2f706,0xc257457e,0x5ac2efcf,0x8700611b,0x933f48d4,0x4912beb2,0xc365af88,0x162edf94,0x7f5a4de6,0x0c32f34b,0xc646ba7c,0xb2091074,0x632c6af3 +.long 0x753e43a9,0x58d4f2e3,0x24d4e23f,0x70e1d217,0xafede6a6,0xb24bf729,0x710c8b60,0x7f4a94d8,0x8d4faa6a,0xaad90a96,0xb066b690,0xd9ed0b32,0x78b6dbfd,0x52fcd37b,0x8bd2b431,0x0b64615e +.long 0xcfb9fad5,0x228e2048,0x240b76bd,0xbeaa386d,0x90dad7bc,0x2d6681c8,0x06d38f5e,0x3e553fc3,0x9d5f9750,0xf27cdb9b,0xd28c5b0e,0x3e85c52a,0x5247c39b,0x190795af,0xbddd6828,0x547831eb +.long 0x4a82f424,0xf327a227,0x7e47f89d,0x36919c78,0x43c7392c,0xe4783919,0x2316fefe,0xf101b9aa,0x1c5009d2,0xbcdc9e9c,0x9cd18345,0xfb55ea13,0xa3ce77c7,0xf5b5e231,0xd2f2cb3d,0xde6b4527 +.long 0x9bb26f5f,0x10f6a333,0x044d85b6,0x1e85db8e,0x94197e54,0xc3697a08,0xa7cb4ea8,0x65e18cc0,0xa471fe6e,0xa38c4f50,0x2f13439c,0xf031747a,0xc007318b,0x53c4a6ba,0x1deccb3d,0xa8da3ee5 +.long 0x558216b1,0x0555b31c,0x2f79e6c2,0x90c7810c,0xfe8eed3c,0x9b669f4d,0xe0fac126,0x70398ec8,0xf701b235,0xa96a449e,0xeb94f395,0x0ceecdb3,0xd0cb7431,0x285fc368,0x16a18c64,0x0d37bb52 +.long 0xb880d2dd,0x05110d38,0x65930d57,0xa60f177b,0xf36235f5,0x7da34a67,0x183816b9,0x47f5e17c,0xdb394af4,0xc7664b57,0x7036f789,0x39ba215d,0x2f27b472,0x46d2ca0e,0xf73a84b7,0xc42647ee +.long 0x64488f1d,0x44bc7545,0xf4cf85d5,0xaa922708,0x53e4df63,0x721a01d5,0x5db46ced,0x649c0c51,0x3cffcb6c,0x6bf0d64e,0x50f71d96,0xe3bf93fe,0xbcc194a0,0x75044558,0x6afdc554,0x16ae3372 +.long 0x5ca48f3f,0xbfc01adf,0xe22a9b84,0x64352f06,0xc1099e4a,0xcee54da1,0xfa1b89c0,0xbbda54e8,0x6f6e55fb,0x166a3df5,0x20176f88,0x1ca44a24,0xdfb7b5ff,0x936afd88,0x8611d4a0,0xe34c2437 +.long 0x86142103,0x7effbb75,0x1f34fc4d,0x6704ba1b,0x10c1b122,0x7c2a468f,0x8c6aace9,0x36b3a610,0x75a0d050,0xabfcc0a7,0x3ce33e32,0x066f9197,0x29fe09be,0xce905ef4,0xa8376351,0x89ee25ba +.long 0xfd29dc76,0x2a3ede22,0x36f17260,0x7fd32ed9,0x284b4126,0x0cadcf68,0xa7951fc8,0x63422f08,0x0807e199,0x562b24f4,0x22ad4490,0xfe9ce5d1,0x0db2b1b4,0xc2f51b10,0xe4541d0d,0xeb3613ff +.long 0x2680813b,0xbd2c4a05,0x561b08d6,0x527aa55d,0xa7205558,0xa9f8a40e,0x243d0bec,0xe3eea56f,0xa0ff58b3,0x7b853817,0x1a69e627,0xb67d3f65,0xa869b5d6,0x0b76bbb9,0x546723ed,0xa3afeb82 +.long 0x3e554892,0x5f24416d,0x430e2a45,0x8413b53d,0x9032a2a0,0x99c56aee,0xeec367b1,0x09432bf6,0xdaf0ecc1,0x552850c6,0x5bc92048,0x49ebce55,0x54811307,0xdfb66ba6,0x6f298597,0x1b84f797 +.long 0x8d1d7a0d,0x79590481,0x3a6fa556,0xd9fabe03,0xba9e5d35,0xa40f9c59,0xf6247577,0xcb1771c1,0xe9a6312b,0x542a47ca,0x552dd8c5,0xa34b3560,0x0d794716,0xfdf94de0,0x9c623094,0xd46124a9 +.long 0x68afe8b4,0x56b7435d,0x6c0d8ea1,0x27f20540,0x73186898,0x12b77e14,0x7479490f,0xdbc3dd46,0xc03b0c05,0x951a9842,0x7921bc96,0x8b1b3bb3,0x2b202e0a,0xa573b346,0x47254d56,0x77e4665d +.long 0xd23e3984,0x08b70dfc,0xebd14236,0xab86e8bc,0x57114ba7,0xaa3e07f8,0xab0ef4f2,0x5ac71689,0x0139d9af,0x88fca384,0x76644af0,0x72733f88,0x65d74f4a,0xf122f72a,0xa5626c7a,0x13931577 +.long 0x70f8d5a4,0xd5b5d9eb,0xd7bbb228,0x375adde7,0x0c1c0b32,0x31e88b86,0x173edbaa,0xd1f568c4,0x5459df02,0x1592fc83,0x0fcd9a7e,0x2beac0fb,0x1b473b0a,0xb0a6fdb8,0x0fe8fc48,0xe3224c6f +.long 0xe87edf5b,0x680bd00e,0x20e77cf5,0x30385f02,0x4d42d1b2,0xe9ab98c0,0xd3816d77,0x72d191d2,0x0917d9e5,0x1564daca,0x1f8fed7f,0x394eab59,0x7fbb3896,0xa209aa8d,0xbe6ac98e,0x5564f3b9 +.long 0xd73654ef,0xead21d05,0x13d78d74,0x68d1a9c4,0x6d4973a0,0x61e01708,0x46e6d32a,0x83da3500,0x68ae0118,0x6a3dfca4,0xd02da069,0xa1b9a4c9,0xebab8302,0x0b2ff9c7,0x944ba436,0x98af07c3 +.long 0x995f0f9f,0x85997326,0x71b58bc6,0x467fade0,0xbd625a2b,0x47e4495a,0x33c3b8cd,0xfdd2d01d,0xc693f9fa,0x2c38ae28,0x348f7999,0x48622329,0x2161f583,0x97bf738e,0x565e8cc9,0x15ee2fa7 +.long 0x5777e189,0xa1a5c845,0x456f2829,0xcc10bee0,0xda762bd5,0x8ad95c56,0xe9d91da8,0x152e2214,0x7cb23c74,0x975b0e72,0xa90c66df,0xfd5d7670,0x225ffc53,0xb5b5b8ad,0xfaded2ae,0xab6dff73 +.long 0x6f4cbe9d,0xebd56781,0x6a574bd7,0x0ed8b249,0x81a881fa,0x41c246fe,0xc3db9c70,0x91564805,0x5b862809,0xd7c12b08,0x55858d7b,0x1facd1f1,0xaf09e92a,0x7693747c,0x189a425f,0x3b69dcba +.long 0x967365ef,0x0be28e9f,0xe801f5c9,0x57300eb2,0xd583352f,0x93b8ac6a,0xcd05b2b7,0xa2cf1f89,0x4dcc40cc,0x7c0c9b74,0xada523fb,0xfee38c45,0x1099cc4d,0xb49a4dec,0x69f069c6,0x325c377f +.long 0x476cc9ff,0xe12458ce,0xc6d4cb63,0x580e0b6c,0x9072289b,0xd561c8b7,0xa619e6da,0x0377f264,0x88e591a5,0x26685362,0x7523ca2b,0xa453a7bd,0xc1df4533,0x8a9536d2,0xbe972f79,0xc8e50f2f +.long 0x6d3549cf,0xd433e50f,0xfacd665e,0x6f33696f,0xce11fcb4,0x695bfdac,0xaf7c9860,0x810ee252,0x7159bb2c,0x65450fe1,0x758b357b,0xf7dfbebe,0xd69fea72,0x2b057e74,0x92731745,0xd485717a +.long 0xee36860c,0x896c42e8,0x4113c22d,0xdaf04dfd,0x44104213,0x1adbb7b7,0x1fd394ea,0xe5fd5fa1,0x1a4e0551,0x68235d94,0x18d10151,0x6772cfbe,0x09984523,0x276071e3,0x5a56ba98,0xe4e879de +.long 0x285b9491,0xaaafafb0,0x1e4c705e,0x01a0be88,0x2ad9caab,0xff1d4f5d,0xc37a233f,0x6e349a4a,0x4a1c6a16,0xcf1c1246,0x29383260,0xd99e6b66,0x5f6d5471,0xea3d4366,0xff8cc89b,0x36974d04 +.long 0xcfe89d80,0xc26c49a1,0xda9c8371,0xb42c026d,0xdad066d2,0xca6c013a,0x56a4f3ee,0xfb8f7228,0xd850935b,0x08b579ec,0xd631e1b3,0x34c1a74c,0xac198534,0xcb5fe596,0xe1f24f25,0x39ff21f6 +.long 0x8f929057,0x27f29e14,0xc0c853df,0x7a64ae06,0x58e9c5ce,0x256cd183,0xded092a5,0x9d9cce82,0x6e93b7c7,0xcc6e5979,0x31bb9e27,0xe1e47092,0xaa9e29a0,0xb70b3083,0x3785e644,0xbf181a75 +.long 0x8ead09f7,0xf53f2c65,0x9780d14d,0x1335e1d5,0xcd1b66bc,0x69cc20e0,0xbbe0bfc8,0x9b670a37,0x28efbeed,0xce53dc81,0x8326a6e5,0x0c74e77c,0xb88e9a63,0x3604e0d2,0x13dc2248,0xbab38fca +.long 0x5c0a3f1e,0x8ed6e8c8,0x7c87c37f,0xbcad2492,0x9ee3b78d,0xfdfb62bb,0xcbceba46,0xeba8e477,0xeeaede4b,0x37d38cb0,0x7976deb6,0x0bc498e8,0x6b6147fb,0xb2944c04,0xf71f9609,0x8b123f35 +.long 0xde79dc24,0xa155dcc7,0x558f69cd,0xf1168a32,0x0d1850df,0xbac21595,0xb204c848,0x15c8295b,0x7d8184ff,0xf661aa36,0x30447bdb,0xc396228e,0xbde4a59e,0x11cd5143,0x6beab5e6,0xe3a26e3b +.long 0x1402b9d0,0xd3b3a13f,0x2c7bc863,0x573441c3,0x578c3e6e,0x4b301ec4,0x0adaf57e,0xc26fc9c4,0x7493cea3,0x96e71bfd,0x1af81456,0xd05d4b3f,0x6a8c608f,0xdaca2a8a,0x0725b276,0x53ef07f6 +.long 0x7824fc56,0x07a5fbd2,0x13289077,0x34675218,0xe0c48349,0x5bf69fd5,0xb6aa7875,0xa613ddd3,0x5450d866,0x7f78c19c,0x8f84a481,0x46f4409c,0x90fce239,0x9f1d1928,0xb2ce44b9,0x016c4168 +.long 0xc7435978,0xbae023f0,0x20e30e19,0xb152c888,0xe3fa6faf,0x9c241645,0x84823e60,0x735d95c1,0x03955317,0x03197573,0xf03b4995,0x0b4b02a9,0x70274600,0x076bf559,0xaaf57508,0x32c5cc53 +.long 0x60624129,0xe8af6d1f,0x9a5e2b5e,0xb7bc5d64,0x5f082d72,0x3814b048,0xce19677a,0x76f267f2,0xb36eed93,0x626c630f,0x3bf56803,0x55230cd7,0xce2736a0,0x78837949,0xaa6c55f1,0x0d792d60 +.long 0xd5c7c5d2,0x0318dbfd,0x072b342d,0xb38f8da7,0x7b8de38a,0x3569bddc,0xa1c94842,0xf25b5887,0x2946ad60,0xb2d5b284,0xe9d1707e,0x854f29ad,0x2c6a4509,0xaa5159dc,0x57189837,0x899f94c0 +.long 0xf4a55b03,0xcf6adc51,0x35e3b2d5,0x261762de,0x04827b51,0x4cc43012,0xc6021442,0xcd22a113,0x247c9569,0xce2fd61a,0xd152beca,0x59a50973,0x63a716d4,0x6c835a11,0x187dedcf,0xc26455ed +.long 0x49ce89e7,0x27f536e0,0xcc890cb5,0x18908539,0xd83c2aa1,0x308909ab,0x1ab73bd3,0xecd3142b,0xb3f5ab84,0x6a85bf59,0xf2bea4c6,0x3c320a68,0x6da4541f,0xad8dc538,0xb7c41186,0xeaf34eb0 +.long 0x977c97c4,0x1c780129,0xc57eb9fa,0x5ff9beeb,0xc822c478,0xa24d0524,0x461cd415,0xfd8eec2a,0xf027458c,0xfbde194e,0x1d1be115,0xb4ff5319,0x4866d6f4,0x63f874d9,0xb21ad0c9,0x35c75015 +.long 0x46ac49d2,0xa6b5c9d6,0x83137aa9,0x42c77c0b,0x68225a38,0x24d000fc,0x2fe1e907,0x0f63cfc8,0xc6441f95,0x22d1b01b,0xec8e448f,0x7d38f719,0x787fb1ba,0x9b33fa5f,0x190158df,0x94dcfda1 +.long 0x5f6d4a09,0xc47cb339,0xee52b826,0x6b4f355c,0xf51b930a,0x3d100f5d,0x9f668f69,0xf4512fac,0x206c4c74,0x546781d5,0xcb4d2e48,0xd021d4d4,0xca085c2d,0x494a54c2,0x520850a8,0xf1dbaca4 +.long 0x490a1aca,0x63c79326,0x41526b02,0xcb64dd9c,0xa2979258,0xbb772591,0x48d97846,0x3f582970,0x7c213ba7,0xd66b70d1,0xe8a0ced4,0xc28febb5,0xc10338c1,0x6b911831,0xbf0126f3,0x0d54e389 +.long 0x4af206ee,0x7048d460,0x77e97cb9,0x786c88f6,0xac64802e,0xd4375ae1,0xd53ec11c,0x469bcfe1,0x47062230,0xfc9b340d,0xc5b4a3ac,0xe743bb57,0x59ef45ac,0xfe00b4aa,0x59edf188,0x29a4ef23 +.long 0xb483689b,0x40242efe,0x513ac262,0x2575d3f6,0x0ca6db72,0xf30037c8,0x98864be2,0xc9fcce82,0x0149362d,0x84a112ff,0x1c4ae971,0x95e57582,0x945cf86c,0x1fa4b1a8,0x0b024a2f,0x4525a734 +.long 0x8f338360,0xe76c8b62,0x28edf32b,0x483ff593,0x298b1aec,0x67e8e90a,0x736d9a21,0x9caab338,0x66892709,0x5c09d2fd,0xb55a1d41,0x2496b4dc,0xe24a4394,0x93f5fb1a,0x6fa8f6c1,0x08c75049 +.long 0xc905d85f,0xcaead1c2,0x0733ae57,0xe9d7f790,0xf07cdd94,0x24c9a65c,0xa4b55931,0x7389359c,0x367e45f7,0xf58709b7,0xcb7e7adc,0x1f203067,0xc7b72818,0x82444bff,0xbaac8033,0x07303b35 +.long 0xd13b7ea1,0x1e1ee4e4,0xe0e74180,0xe6489b24,0x7e70ef70,0xa5f2c610,0xbdd10894,0xa1655412,0x7af4194e,0x555ebefb,0x8e89bd9c,0x533c1c3c,0x89895856,0x735b9b57,0x567f5c15,0x15fb3cd2 +.long 0x526f09fd,0x057fed45,0x8128240a,0xe8a4f10c,0xff2bfd8d,0x9332efc4,0xbd35aa31,0x214e77a0,0x14faa40e,0x32896d73,0x01e5f186,0x767867ec,0x17a1813e,0xc9adf8f1,0x54741795,0xcb6cda78 +.long 0x349d51aa,0xb7521b6d,0xe3c7b8e9,0xf56b5a9e,0x32a096df,0xc6f1e5c9,0xa3635024,0x083667c4,0x18087f2f,0x365ea135,0xd136e45d,0xf1b8eaac,0x73aec989,0xc8a0e484,0x142c9259,0xd75a324b +.long 0x01dae185,0xb7b4d001,0x9b7a94bc,0x45434e0b,0xfbd8cb0b,0xf54339af,0xe98ef49e,0xdcc4569e,0x09a51299,0x7789318a,0xb2b025d8,0x81b4d206,0xfae85792,0xf64aa418,0xacd7baf7,0x3e50258f +.long 0x2996864b,0xdce84cdb,0x1f485fa4,0xa2e67089,0x534c6a5a,0xb28b2bb6,0xc94b9d39,0x31a7ec6b,0xd6bc20da,0x1d217766,0x86761190,0x4acdb5ec,0x73701063,0x68726328,0x2128c29b,0x4d24ee7c +.long 0xa19fd868,0xc072ebd3,0xdb8ddd3b,0x612e481c,0x1a64d852,0xb4e1d754,0xc4c6c4ab,0x00ef95ac,0xaa0a6c46,0x1536d2ed,0x43774790,0x61294086,0x343fda10,0x54af25e8,0xfd25d6f2,0x9ff9d98d +.long 0x468b8835,0x0746af7c,0x730ecea7,0x977a31cb,0xc2cf4a81,0xa5096b80,0x6458c37a,0xaa986833,0xa6bd9d34,0x6af29bf3,0x33c5d854,0x6a62fe9b,0xb7133b5e,0x50e6c304,0x7d6e6848,0x04b60159 +.long 0x5579bea4,0x4cd296df,0x5ceedaf1,0x10e35ac8,0xe3bcc5b1,0x04c4c5fd,0x89412cf9,0x95f9ee8a,0x82b6eb0f,0x2c9459ee,0x95c2aadd,0x2e845765,0xd327fcfe,0x774a84ae,0x0368d476,0xd8c93722 +.long 0xf83e8a3b,0x0dbd5748,0x8d2495f3,0xa579aa96,0xae496e9b,0x535996a0,0xb7f9bcc2,0x07afbfe9,0x5b7bd293,0x3ac1dc6d,0x7022323d,0x3b592cff,0x9c0a3e76,0xba0deb98,0x4b197acb,0x18e78e9f +.long 0x296c36ef,0x211cde10,0x82c4da77,0x7ee89672,0xa57836da,0xb617d270,0x9cb7560b,0xf0cd9c31,0xe455fe90,0x01fdcbf7,0x7e7334f3,0x3fb53cbb,0x4e7de4ec,0x781e2ea4,0x0b384fd0,0x8adab3ad +.long 0x53d64829,0x129eee2f,0xa261492b,0x7a471e17,0xe4cb4a2c,0xe4f9adb9,0x97ba2c2d,0x3d359f6f,0x0aacd697,0x346c6786,0x75c2f8a8,0x92b444c3,0xd85df44e,0xc79fa117,0x398ddf31,0x56782372 +.long 0xbbbab3b8,0x60e690f2,0x8b04816b,0x4851f8ae,0x9c92e4d2,0xc72046ab,0x7cf3136b,0x518c74a1,0xf9877d4c,0xff4eb50a,0xa919cabb,0x14578d90,0xac5eb2b6,0x8218f8c4,0x542016e4,0xa3ccc547 +.long 0x327f8349,0x025bf48e,0xf43cb641,0xf3e97346,0x500f1085,0xdc2bafdf,0x2f063055,0x57167876,0x411925a6,0x5bd914b9,0xa1123de5,0x7c078d48,0x182b165d,0xee6bf835,0xba519727,0xb11b5e5b +.long 0x1eea7b85,0xe33ea76c,0x92d4f85e,0x2352b461,0xafe115bb,0xf101d334,0x889175a3,0xfabc1294,0x5233f925,0x7f6bcdc0,0xe77fec55,0xe0a802db,0x8069b659,0xbdb47b75,0xf98fbd74,0x1c5e12de +.long 0x4b8457ee,0x869c58c6,0x4f7ea9f7,0xa5360f69,0xf460b38f,0xe576c09f,0x22b7fb36,0x6b70d548,0x3bfae315,0x3fd237f1,0xcbdff369,0x33797852,0x25b516f9,0x97df25f5,0xba38ad2d,0x46f388f2 +.long 0x89d8ddbb,0x656c4658,0x70f38ee8,0x8830b26e,0xde1212b0,0x4320fd5c,0xe4a2edb2,0xc34f30cf,0x56ab64b8,0xabb131a3,0xd99c5d26,0x7f77f0cc,0xbf981d94,0x66856a37,0x738bd76e,0x19e76d09 +.long 0x96238f39,0xe76c8ac3,0xa830b366,0xc0a482be,0x0b4eb499,0xb7b8eaff,0x4bfb4865,0x8ecd83bc,0xa2f3776f,0x971b2cb7,0xf4b88adf,0xb42176a4,0xbe1fa446,0xb9617df5,0xcd031bd2,0x8b32d508 +.long 0x53b618c0,0x1c6bd47d,0x6a227923,0xc424f46c,0xdd92d964,0x7303ffde,0x71b5abf2,0xe9712878,0xf815561d,0x8f48a632,0xd3c055d1,0x85f48ff5,0x7525684f,0x222a1427,0x67360cc3,0xd0d841a0 +.long 0x0b9267c6,0x4245a926,0xcf07f863,0xc78913f1,0x4d0d9e24,0xaa844c8e,0x3d5f9017,0xa42ad522,0xa2c989d5,0xbd371749,0xe1f5e78e,0x928292df,0x0a1ea6da,0x493b383e,0x13aee529,0x5136fd8d +.long 0xf2c34a99,0x860c44b1,0xbf5855ac,0x3b00aca4,0xfaaf37be,0xabf6aaa0,0x2a53ec08,0x65f43682,0xa11b12e1,0x1d9a5801,0xe20ed475,0x78a7ab2c,0x9a41e0d5,0x0de1067e,0x305023ea,0x30473f5f +.long 0x169c7d97,0xdd3ae09d,0xcfaef9cd,0x5cd5baa4,0x65a44803,0x5cd7440b,0x47f364de,0xdc13966a,0x2b8357c1,0x077b2be8,0xe9d57c2a,0x0cb1b4c5,0x05ff363e,0x7a4ceb32,0xca35a9ef,0xf310fa4d +.long 0xf97f68c6,0xdbb7b352,0x0b02cf58,0x0c773b50,0x3c1f96d9,0xea2e4821,0xeee01815,0xffb357b0,0xe0f28039,0xb9c924cd,0x46a3fbe4,0x0b36c95a,0x5e46db6c,0x1faaaea4,0x1928aaff,0xcae575c3 +.long 0xa70dab86,0x7f671302,0x71c58cfc,0xfcbd12a9,0xbee0cb92,0xcbef9acf,0xf8c1b583,0x573da0b9,0x0d41d550,0x4752fcfe,0x2155cffe,0xe7eec0e3,0x545ae248,0x0fc39fcb,0x8065f44e,0x522cb8d1 +.long 0x70cbb96c,0x263c962a,0xbcd124a9,0xe034362a,0x3c2ae58d,0xf120db28,0xfef6d507,0xb9a38d49,0x1ff140fd,0xb1fd2a82,0x20aee7e0,0xbd162f30,0xcb251949,0x4e17a5d4,0x4f7e1c3d,0x2aebcb83 +.long 0x937b0527,0x608eb25f,0xeb7d9997,0xf42e1e47,0xb8a53a29,0xeba699c4,0xe091b536,0x1f921c71,0x5b26bbd5,0xcce29e7b,0x3b61a680,0x7a8ef5ed,0xba1f1c7e,0xe5ef8043,0x18158dda,0x16ea8217 +.long 0x599ff0f9,0x01778a2b,0x8104fc6b,0x68a923d7,0xda694ff3,0x5bfa44df,0xf7667f12,0x4f7199db,0xe46f2a79,0xc06d8ff6,0xe9f8131d,0x08b5dead,0xabb4ce7c,0x02519a59,0xb42aec3e,0xc4f710bc +.long 0x78bde41a,0x3d77b057,0xb4186b5a,0x6474bf80,0x88c65741,0x048b3f67,0x03c7c154,0xc64519de,0x0edfcc4f,0xdf073846,0x48f1aa6b,0x319aa737,0xca909f77,0x8b9f8a02,0x7580bfef,0x90258139 +.long 0xc0c22719,0xd8bfd3ca,0xc9ca151e,0xc60209e4,0xd9a1a69c,0x7a744ab5,0x14937f8f,0x6de5048b,0xe115ac04,0x171938d8,0x1c6b16d2,0x7df70940,0x7f8e94e7,0xa6aeb663,0x2a2cf094,0xc130388e +.long 0x77f54e6e,0x1850be84,0x65d60fe5,0x9f258a72,0x6c9146d6,0xff7ff0c0,0xe63a830b,0x039aaf90,0x9460342f,0x38f27a73,0x3f795f8a,0x4703148c,0x9681a97e,0x1bb5467b,0xecaeb594,0x00931ba5 +.long 0x786f337c,0xcdb6719d,0xe704397d,0xd9c01cd2,0x555c2fef,0x0f4a3f20,0x7c0af223,0x00452509,0x84db8e76,0x54a58047,0x93c8aa06,0x3bacf1aa,0xf7919422,0x11ca957c,0x78cdaa40,0x50641053 +.long 0x9f7144ae,0x7a303874,0x43d4acfd,0x170c963f,0x58ddd3ef,0x5e148149,0x9e72dba8,0xa7bde582,0x6fa68750,0x0769da8b,0x572e0249,0xfa64e532,0x2619ad31,0xfcaadf9d,0xa7b349cd,0x87882daa +.long 0x6c67a775,0x9f6eb731,0xefc5d0b1,0xcb10471a,0xe1b806b2,0xb433750c,0x57b1ae7e,0x19c5714d,0xed03fd3f,0xc0dc8b7b,0x31bc194e,0xdd03344f,0x8c6320b5,0xa66c52a7,0xd0b6fd93,0x8bc82ce3 +.long 0xb35f1341,0xf8e13501,0x25a43e42,0xe53156dd,0x4daeb85c,0xd3adf27e,0xbbeddeb5,0xb81d8379,0x2e435867,0x1b0b546e,0xeba5dd60,0x9020eb94,0x8210cb9d,0x37d91161,0x5c91f1cf,0x4c596b31 +.long 0x0e0b040d,0xb228a90f,0x45ff897f,0xbaf02d82,0x00fa6122,0x2aac79e6,0x8e36f557,0x24828817,0x113ec356,0xb9521d31,0x15eff1f8,0x9e48861e,0xe0d41715,0x2aa1d412,0x53f131b8,0x71f86203 +.long 0x3fd19408,0xf60da8da,0x278d9d99,0x4aa716dc,0xa8c51c90,0x394531f7,0xf59db51c,0xb560b0e8,0xfa34bdad,0xa28fc992,0x9cd4f8bd,0xf024fa14,0x23a9d0d3,0x5cf530f7,0xe28c9b56,0x615ca193 +.long 0x6f73c51e,0x6d2a483d,0xea0dc2dd,0xa4cb2412,0x1eb917ff,0x50663c41,0xeade299e,0x3d3a74cf,0x4a7a9202,0x29b3990f,0xa7b15c3d,0xa9bccf59,0xa5df9208,0x66a3ccdc,0x43f2f929,0x48027c14 +.long 0x40b557f0,0xd385377c,0xcd684660,0xe001c366,0xe2183a27,0x1b18ed6b,0x63210329,0x879738d8,0xbda94882,0xa687c74b,0xa684b299,0xd1bbcc48,0x863b3724,0xaf6f1112,0x2c8ce9f8,0x6943d1b4 +.long 0x098cafb4,0xe044a3bb,0x60d48caf,0x27ed2310,0x3a31b84d,0x542b5675,0xfcddbed7,0xcbf3dd50,0x41b1d830,0x25031f16,0xcb0c1e27,0xa7ec851d,0xb5ae75db,0xac1c8fe0,0x08c52120,0xb24c7557 +.long 0x1d4636c3,0x57f811dc,0x681a9939,0xf8436526,0x9c81adb3,0x1f6bc6d9,0x5b7d80d4,0x840f8ac3,0xf4387f1a,0x731a9811,0xb5156880,0x7c501cd3,0xdfe68867,0xa5ca4a07,0x5fcea120,0xf123d8f0 +.long 0xd607039e,0x1fbb0e71,0xcd3a4546,0x2b70e215,0x53324091,0x32d2f01d,0x180ab19b,0xb796ff08,0x3c57c4aa,0x32d87a86,0xb7c49a27,0x2aed9caf,0x31630d98,0x9fb35eac,0x5c3e20a3,0x338e8cdf +.long 0x66cde8db,0x80f16182,0x2d72fd36,0x4e159980,0x9b6e5072,0xd7b8f13b,0x3b7b5dc1,0xf5213907,0x8ce4396e,0x4d431f1d,0xa7ed2142,0x37a1a680,0xd01aaf6b,0xbf375696,0xe63aab66,0xaa1c0c54 +.long 0x4ed80940,0x3014368b,0x7a6fcedd,0x67e6d056,0xca97579f,0x7c208c49,0xa23597f6,0xfe3d7a81,0x7e096ae2,0x5e203202,0x24b39366,0xb1f3e1e7,0x2fdcdffc,0x26da26f3,0x6097be83,0x79422f1d +.long 0x9db3b381,0x263a2cfb,0xd4df0a4b,0x9c3a2dee,0x7d04e61f,0x728d06e9,0x42449325,0x8b1adfbc,0x7e053a1b,0x6ec1d939,0x66daf707,0xee2be5c7,0x810ac7ab,0x80ba1e14,0xf530f174,0xdd2ae778 +.long 0x205b9d8b,0x0435d97a,0x056756d4,0x6eb8f064,0xb6f8210e,0xd5e88a8b,0xec9fd9ea,0x070ef12d,0x3bcc876a,0x4d849505,0xa7404ce3,0x12a75338,0xb8a1db5e,0xd22b49e1,0x14bfa5ad,0xec1f2051 +.long 0xb6828f36,0xadbaeb79,0x01bd5b9e,0x9d7a0258,0x1e844b0c,0xeda01e0d,0x887edfc9,0x4b625175,0x9669b621,0x14109fdd,0xf6f87b98,0x88a2ca56,0x170df6bc,0xfe2eb788,0xffa473f9,0x0cea06f4 +.long 0xc4e83d33,0x43ed81b5,0x5efd488b,0xd9f35879,0x9deb4d0f,0x164a620f,0xac6a7394,0xc6927bdb,0x9f9e0f03,0x45c28df7,0xfcd7e1a9,0x2868661e,0xffa348f1,0x7cf4e8d0,0x398538e0,0x6bd4c284 +.long 0x289a8619,0x2618a091,0x6671b173,0xef796e60,0x9090c632,0x664e46e5,0x1e66f8fb,0xa38062d4,0x0573274e,0x6c744a20,0xa9271394,0xd07b67e4,0x6bdc0e20,0x391223b2,0xeb0a05a7,0xbe2d93f1 +.long 0x3f36d141,0xf23e2e53,0x4dfca442,0xe84bb3d4,0x6b7c023a,0xb804a48d,0x76431c3b,0x1e16a8fa,0xddd472e0,0x1b5452ad,0x0d1ee127,0x7d405ee7,0xffa27599,0x50fc6f1d,0xbf391b35,0x351ac53c +.long 0x4444896b,0x7efa14b8,0xf94027fb,0x64974d2f,0xde84487d,0xefdcd0e8,0x2b48989b,0x8c45b260,0xd8463487,0xa8fcbbc2,0x3fbc476c,0xd1b2b3f7,0xc8f443c0,0x21d005b7,0x40c0139c,0x518f2e67 +.long 0x06d75fc1,0x56036e8c,0x3249a89f,0x2dcf7bb7,0xe245e7dd,0x81dd1d3d,0xebd6e2a7,0xf578dc4b,0xdf2ce7a0,0x4c028903,0x9c39afac,0xaee36288,0x146404ab,0xdc847c31,0xa4e97818,0x6304c0d8 +.long 0xa91f6791,0xae51dca2,0x9baa9efc,0x2abe4190,0x559c7ac1,0xd9d2e2f4,0xfc9f773a,0xe82f4b51,0x4073e81c,0xa7713027,0xfbb596fc,0xc0276fac,0xa684f70c,0x1d819fc9,0xc9f7b1e0,0x29b47fdd +.long 0x459b1940,0x358de103,0x5b013e93,0xec881c59,0x49532ad3,0x51574c93,0xb37b46de,0x2db1d445,0xdf239fd8,0xc6445b87,0x151d24ee,0xc718af75,0xf43c6259,0xaea1c4a4,0x70be02f7,0x40c0e5d7 +.long 0x721b33f2,0x6a4590f4,0xfedf04ea,0x2124f1fb,0x9745efe7,0xf8e53cde,0x65f046d9,0xe7e10432,0xe4d0c7e6,0xc3fca28e,0x87253b1b,0x847e339a,0x3743e643,0x9b595348,0x4fd12fc5,0xcb6a0a0b +.long 0x27d02dcc,0xfb6836c3,0x7a68bcc2,0x5ad00982,0x005e912d,0x1b24b44c,0x811fdcfe,0xcc83d20f,0x666fba0c,0x36527ec1,0x14754635,0x69948197,0x556da9c2,0xfcdcb1a8,0x81a732b2,0xa5934267 +.long 0xa714181d,0xec1214ed,0x6067b341,0x609ac13b,0xa545df1f,0xff4b4c97,0x34d2076b,0xa1240501,0x1409ca97,0x6efa0c23,0x20638c43,0x254cc1a8,0xdcfb46cd,0xd4e363af,0x03942a27,0x62c2adc3 +.long 0x56e46483,0xc67b9df0,0x63736356,0xa55abb20,0xc551bc52,0xab93c098,0xb15fe64b,0x382b49f9,0x4dff8d47,0x9ec221ad,0x437df4d6,0x79caf615,0xbb456509,0x5f13dc64,0x191f0714,0xe4c589d9 +.long 0x3fd40e09,0x27b6a8ab,0x77313ea9,0xe455842e,0x1f55988b,0x8b51d1e2,0x062bbbfc,0x5716dd73,0x4e8bf3de,0x633c11e5,0x1b85be3b,0x9a0e77b6,0x0911cca6,0x56510729,0xefa6590f,0x27e76495 +.long 0x070d3aab,0xe4ac8b33,0x9a2cd5e5,0x2643672b,0x1cfc9173,0x52eff79b,0x90a7c13f,0x665ca49b,0xb3efb998,0x5a8dda59,0x052f1341,0x8a5b922d,0x3cf9a530,0xae9ebbab,0xf56da4d7,0x35986e7b +.long 0xff3513cc,0x3a636b5c,0x3198f7dd,0xbb0cf8ba,0x41f16f86,0xb8d40522,0xde13a7bf,0x760575d8,0x9f7aa181,0x36f74e16,0xf509ed1c,0x163a3ecf,0x3c40a491,0x6aead61f,0xdfe8fcaa,0x158c95fc +.long 0x13cda46f,0xa3991b6e,0x342faed0,0x79482415,0x666b5970,0xf3ba5bde,0xb26ab6dd,0x1d52e6bc,0x8608dd3d,0x768ba1e7,0xea076586,0x4930db2a,0xe7dc1afa,0xd9575714,0xf7c58817,0x1fc7bf7d +.long 0xd9eee96c,0x6b47accd,0xe58cec37,0x0ca277fb,0xe702c42a,0x113fe413,0xc47cbe51,0xdd1764ee,0x7b3ed739,0x041e7cde,0x5ce9e1c0,0x50cb7459,0x2925b212,0x35568513,0x001b081c,0x7cff95c4 +.long 0x8088b454,0x63ee4cbd,0x9a9e0c8a,0xdb7f32f7,0x6b2447cb,0xb377d418,0xd370219b,0xe3e982aa,0xc2a2a593,0x06ccc1e4,0x0773f24f,0x72c36865,0x95859423,0xa13b4da7,0x75040c8f,0x8bbf1d33 +.long 0xda50c991,0x726f0973,0x822d6ee2,0x48afcd5b,0x20fd7771,0xe5fc718b,0xfd0807a1,0xb9e8e77d,0x99a7703d,0x7f5e0f44,0x618e36f3,0x6972930e,0x23807bbe,0x2b7c77b8,0xcb27ff50,0xe5b82405 +.long 0xbd379062,0xba8b8be3,0x2dce4a92,0xd64b7a1d,0xb2952e37,0x040a73c5,0xd438aeca,0x0a9e252e,0xc39d3bcb,0xdd43956b,0xb32b2d63,0x1a31ca00,0x5c417a18,0xd67133b8,0x2ef442c8,0xd08e4790 +.long 0x255c0980,0x98cb1ae9,0x2b4a739f,0x4bd86381,0x1e4a45a1,0x5a5c31e1,0x9cb0db2f,0x1e5d55fe,0x8ff5cc29,0x74661b06,0x0eb8a4f4,0x026b389f,0x58848c24,0x536b21a4,0x81dc72b0,0x2e5bf8ec +.long 0xad886aac,0x03c187d0,0xb771b645,0x5c16878a,0xc74045ab,0xb07dfc6f,0x7800caed,0x2c6360bf,0xb9c972a3,0x24295bb5,0x7c9a6dba,0xc9e6f88e,0x92a79aa6,0x90ffbf24,0x41c26ac2,0xde29d50a +.long 0xd309cbe6,0x9f0af483,0xe0bced4f,0x5b020d8a,0xb38023e3,0x606e986d,0x1abc6933,0xad8f2c9d,0xe7400e93,0x19292e1d,0x52be5e4d,0xfe3e18a9,0x2e0680bf,0xe8e9771d,0xc54db063,0x8c5bec98 +.long 0x74a55d1f,0x2af9662a,0x046f66d8,0xe3fbf28f,0xd4dc4794,0xa3a72ab4,0x5c7c2dd8,0x09779f45,0xc3d19d8d,0xd893bdaf,0x57d6a6df,0xd5a75094,0x952e6255,0x8cf8fef9,0xda9a8aff,0x3da67cfb +.long 0x2c160dcd,0x4c23f62a,0x8f90eaef,0x34e6c5e3,0xa9a65d5a,0x35865519,0x8fd38a3d,0x07c48aae,0x50068527,0xb7e7aeda,0x1c90936a,0x2c09ef23,0xe879324c,0x31ecfeb6,0xfb0ec938,0xa0871f6b +.long 0xd84d835d,0xb1f0fb68,0x861dc1e6,0xc90caf39,0x7594f8d7,0x12e5b046,0x65012b92,0x26897ae2,0xa4d6755d,0xbcf68a08,0x0991fbda,0x403ee41c,0x3bbf17e8,0x733e343e,0x679b3d65,0xd2c7980d +.long 0xd2e11305,0x33056232,0xf3c07a6f,0x966be492,0xbb15509d,0x6a8878ff,0x0a9b59a4,0xff221101,0xabe30129,0x6c9f564a,0x336e64cf,0xc6f2c940,0x8b0c8022,0x0fe75262,0x6ae8db87,0xbe0267e9 +.long 0x93bc042b,0x22e192f1,0xb237c458,0xf085b534,0x832c4168,0xa0d192bd,0xbdf6271d,0x7a76e9e3,0xb88911b5,0x52a882fa,0xb4db0eb5,0xc85345e4,0x81a7c3ff,0xa3be02a6,0xf0ec0469,0x51889c8c +.long 0xa5e829e5,0x9d031369,0x1607aa41,0xcbb4c6fc,0x241d84c1,0x75ac59a6,0x8829e0ee,0xc043f2bf,0x8ea5e185,0x82a38f75,0xd87cbd9f,0x8bda40b9,0x2d8fc601,0x9e65e75e,0xa35690b3,0x3d515f74 +.long 0xda79e5ac,0x534acf4f,0x8630215f,0x68b83b3a,0xd085756e,0x5c748b2e,0xe5d37cb2,0xb0317258,0xc5ccc2c4,0x6735841a,0x3d9d5069,0x7d7dc96b,0xfd1754bd,0xa147e410,0xd399ddd5,0x65296e94 +.long 0xbc8fa5bc,0xf6b5b2d0,0x500c277b,0x8a5ead67,0xdfa08a5d,0x214625e6,0x959cf047,0x51fdfedc,0x289fca32,0x6bc9430b,0x9d9bdc3f,0xe36ff0cf,0x58ea0ede,0x2fe187cb,0x5a900b3f,0xed66af20 +.long 0x5fa9f4d6,0x00e0968b,0x37a362e7,0x2d4066ce,0xbd07e772,0xa99a9748,0x06a4f1d0,0x710989c0,0xce40cbd8,0xd5dedf35,0x1743293d,0xab55c5f0,0x8aa24e2c,0x766f1144,0x605fbcb4,0x94d874f8 +.long 0xa518001b,0xa365f0e8,0x9d04ef0f,0xee605eb6,0xba8d4d25,0x5a3915cd,0xb5113472,0x44c0e1b8,0x8b6740dc,0xcbb024e8,0xee1d4f0c,0x89087a53,0x1fc4e372,0xa88fa05c,0xaf8b3af2,0x8bf395cb +.long 0xdeb8568b,0x1e71c9a1,0x80fb3d32,0xa35daea0,0x2cf8fb81,0xe8b6f266,0x9490696a,0x6d51afe8,0x51803a19,0x81beac6e,0x86219080,0xe3d24b7f,0xdf6f463c,0x727cfd9d,0x72284ee8,0x8c6865ca +.long 0xb743f4ef,0x32c88b7d,0xe7d11dce,0x3793909b,0x2ff2ebe8,0xd398f922,0xe5e49796,0x2c70ca44,0xcb1131b1,0xdf4d9929,0x25888e79,0x7826f298,0xf1d8740a,0x4d3a112c,0x270afa8b,0x00384cb6 +.long 0x3ab48095,0xcb64125b,0x62d05106,0x3451c256,0xa4955845,0xd73d577d,0xbf9f4433,0x39570c16,0xadecf263,0xd7dfaad3,0xdc76e102,0xf1c3d8d1,0x54c6a836,0x5e774a58,0x3e92d47b,0xdad4b672 +.long 0xf0d796a0,0xbe7e990f,0xdf0e8b02,0x5fc62478,0x030c00ad,0x8aae8bf4,0x9004ba0f,0x3d2db93b,0xd85d5ddc,0xe48c8a79,0x6bb07f34,0xe907caa7,0xa39eaed5,0x58db343a,0xadaf5724,0x0ea6e007 +.long 0xd23233f3,0xe00df169,0x77cb637f,0x3e322796,0x1da0cf6c,0x1f897c0e,0x31d6bbdd,0xa651f5d8,0x1a230c76,0xdd61af19,0xcdaa5e4a,0xbd527272,0xd0abcd7e,0xca753636,0x370bd8dc,0x78bdd37c +.long 0x17cd93fe,0xc23916c2,0xdadce6e2,0x65b97a4d,0x174e42f8,0xe04ed4eb,0xbb21480a,0x1491ccaa,0x23196332,0x145a8280,0x587b479a,0x3c3862d7,0x01dcd0ed,0x9f4a88a3,0x3ea12f1f,0x4da2b7ef +.long 0xb126e48e,0xf8e7ae33,0xf494e237,0x404a0b32,0xc55acadb,0x9beac474,0xcbec9fd9,0x4ee5cf3b,0x7df3c8c3,0x336b33b9,0xb76808fd,0xbd905fe3,0xaa45c16a,0x8f436981,0x3dd27b62,0x255c5bfa +.long 0xc3dd9b4d,0x71965cbf,0xfc068a87,0xce23edbf,0x745b029b,0xb78d4725,0xcefdd9bd,0x74610713,0x1266bf52,0x7116f75f,0x18e49bb6,0x02046722,0x3d6f19e3,0xdf43df9f,0xe685cb2f,0xef1bc7d0 +.long 0x7078c432,0xcddb27c1,0xb77fedb7,0xe1961b9c,0xc2290570,0x1edc2f5c,0x19cbd886,0x2c3fefca,0xc2af389a,0xcf880a36,0xbda71cea,0x96c610fd,0x32aa8463,0xf03977a9,0x8586d90a,0x8eb7763f +.long 0x2a296e77,0x3f342454,0x42837a35,0xc8718683,0x6a09c731,0x7dc71090,0x51b816db,0x54778ffb,0xaf06defd,0x6b33bfec,0x8592b70b,0xfe3c105f,0x61da6114,0xf937fda4,0x4c266ad7,0x3c13e651 +.long 0x855938e8,0xe363a829,0x9de54b72,0x2eeb5d9e,0x20ccfab9,0xbeb93b0e,0x25e61a25,0x3dffbb5f,0x1acc093d,0x7f655e43,0x3964ce61,0x0cb6cc3d,0xe5e9b460,0x6ab283a1,0xa1c7e72d,0x55d787c5 +.long 0xdeadbf02,0x4d2efd47,0xac459068,0x11e80219,0x71f311f0,0x810c7626,0x4ab6ef53,0xfa17ef8d,0x93e43bff,0xaf47fd25,0x0be40632,0x5cb5ff3f,0x8ee61da3,0x54687106,0xb08afd0f,0x7764196e +.long 0xf0290a8f,0x831ab3ed,0xcb47c387,0xcae81966,0x184efb4f,0xaad7dece,0x4749110e,0xdcfc53b3,0x4cb632f9,0x6698f23c,0xb91f8067,0xc42a1ad6,0x6284180a,0xb116a81d,0xe901326f,0xebedf5f8 +.long 0x97e3e044,0xf2274c9f,0x11d09fc9,0x42018520,0xd18e6e23,0x56a65f17,0x352b683c,0x2ea61e2a,0x575eaa94,0x27d291bc,0xb8ff522d,0x9e7bc721,0xa7f04d6f,0x5f7268bf,0xaba41748,0x5868c73f +.long 0x7be0eead,0x9f85c2db,0xff719135,0x511e7842,0xc5ea90d7,0x5a06b1e9,0x26fab631,0x0c19e283,0xe9206c55,0x8af8f0cf,0x3553c06a,0x89389cb4,0xf65f8004,0x39dbed97,0xc508991d,0x0621b037 +.long 0x96e78cc4,0x1c52e635,0x0c06b4a8,0x5385c8b2,0xb0e87d03,0xd84ddfdb,0x934bafad,0xc49dfb66,0x59f70772,0x7071e170,0x3a1db56b,0x3a073a84,0x3b8af190,0x03494903,0xd32920f0,0x7d882de3 +.long 0xb2cf8940,0x91633f0a,0x6f948f51,0x72b0b178,0x782653c8,0x2d28dc30,0xdb903a05,0x88829849,0x6a19d2bb,0xb8095d0c,0x86f782cb,0x4b9e7f0c,0x2d907064,0x7af73988,0x8b32643c,0xd12be0fe +.long 0x0e165dc3,0x358ed23d,0x4e2378ce,0x3d47ce62,0xfeb8a087,0x7e2bb0b9,0xe29e10b9,0x3246e8ae,0x03ce2b4d,0x459f4ec7,0xbbc077cf,0xe9b4ca1b,0x0e9940c1,0x2613b4f2,0x047d1eb1,0xfc598bb9 +.long 0x45036099,0x9744c62b,0x167c65d8,0xa9dee742,0xdabe1943,0x0c511525,0x93c6c624,0xda110554,0x651a3be2,0xae00a52c,0x884449a6,0xcda5111d,0xff33bed1,0x063c06f4,0x0d3d76b4,0x73baaf9a +.long 0x7fc63668,0x52fb0c9d,0x0c039cde,0x6886c9dd,0x55b22351,0x602bd599,0x360c7c13,0xb00cab02,0x81b69442,0x8cb616bc,0xb55c3cee,0x41486700,0xf49ba278,0x71093281,0x64a50710,0xad956d9c +.long 0x638a7e81,0x9561f28b,0x5980ddc3,0x54155cdf,0xd26f247a,0xb2db4a96,0x4787d100,0x9d774e4e,0x078637d2,0x1a9e6e2e,0x5e0ae06a,0x1c363e2d,0xe9cfa354,0x7493483e,0x7f74b98d,0x76843cb3 +.long 0xd4b66947,0xbaca6591,0x04460a8c,0xb452ce98,0x43768f55,0x6830d246,0x7dff12df,0xf4197ed8,0x400dd0f7,0x6521b472,0x4b1e7093,0x59f5ca8f,0x080338ae,0x6feff11b,0xa29ca3c6,0x0ada31f6 +.long 0x94a2c215,0x24794eb6,0x05a57ab4,0xd83a43ab,0x2a6f89fe,0x264a543a,0xdd5ec7c2,0x2c2a3868,0x8439d9b2,0xd3373940,0x0acd1f11,0x715ea672,0xe7e6cc19,0x42c1d235,0xb990585c,0x81ce6e96 +.long 0xd809c7bd,0x04e5dfe0,0x8f1050ab,0xd7b2580c,0xd8a4176f,0x6d91ad78,0x4e2e897c,0x0af556ee,0x921de0ac,0x162a8b73,0x7ea78400,0x52ac9c22,0xefce2174,0xee2a4eea,0x6d637f79,0xbe61844e +.long 0x789a283b,0x0491f1bc,0x880836f4,0x72d3ac3d,0x88e5402d,0xaa1c5ea3,0xd5cc473d,0x1b192421,0x9dc84cac,0x5c0b9998,0x9c6e75b8,0xb0a8482d,0x3a191ce2,0x639961d0,0x6d837930,0xda3bc865 +.long 0x056e6f8f,0xca990653,0x64d133a7,0x84861c41,0x746abe40,0x8b403276,0xebf8e303,0xb7b4d51a,0x220a255d,0x05b43211,0x02419e6e,0xc997152c,0x630c2fea,0x76ff47b6,0x281fdade,0x50518677 +.long 0xcf902b0b,0x3283b8ba,0x37db303b,0x8d4b4eb5,0x755011bc,0xcc89f42d,0xdd09d19b,0xb43d74bb,0x8adba350,0x65746bc9,0xb51c1927,0x364eaf8c,0x10ad72ec,0x13c76596,0xf8d40c20,0x30045121 +.long 0xea7b979b,0x6d2d99b7,0xe6fb3bcd,0xcd78cd74,0x86cffbfe,0x11e45a9e,0x637024f6,0x78a61cf4,0x3d502295,0xd06bc872,0x458cb288,0xf1376854,0x342f8586,0xb9db26a1,0x4beee09e,0xf33effcf +.long 0xb30cfb3a,0xd7e0c4cd,0x6c9db4c8,0x6d09b8c1,0x07c8d9df,0x40ba1a42,0x1c52c66d,0x6fd495f7,0x275264da,0xfb0e169f,0xe57d8362,0x80c2b746,0x49ad7222,0xedd987f7,0x4398ec7b,0xfdc229af +.long 0x52666a58,0xb0d1ed84,0xe6a9c3c2,0x4bcb6e00,0x26906408,0x3c57411c,0x13556400,0xcfc20755,0x5294dba3,0xa08b1c50,0x8b7dd31e,0xa30ba286,0x991eca74,0xd70ba90e,0xe762c2b9,0x094e142c +.long 0x979f3925,0xb81d783e,0xaf4c89a7,0x1efd130a,0xfd1bf7fa,0x525c2144,0x1b265a9e,0x4b296904,0xb9db65b6,0xed8e9634,0x03599d8a,0x35c82e32,0x403563f3,0xdaa7a54f,0x022c38ab,0x9df088ad +.long 0xbb3fd30a,0xe5cfb066,0xeff0354e,0x429169da,0x3524e36c,0x809cf852,0x0155be1d,0x136f4fb3,0x1fbba712,0x4826af01,0x506ba1a1,0x6ef0f0b4,0x77aea73e,0xd9928b31,0x5eaa244e,0xe2bf6af2 +.long 0x4237b64b,0x8d084f12,0xe3ecfd07,0x688ebe99,0xf6845dd8,0x57b8a70c,0x5da4a325,0x808fc59c,0xa3585862,0xa9032b2b,0xedf29386,0xb66825d5,0x431ec29b,0xb5a5a8db,0x3a1e8dc8,0xbb143a98 +.long 0x12ae381b,0x35ee94ce,0x86ccda90,0x3a7f176c,0x4606eaca,0xc63a657e,0x43cd04df,0x9ae5a380,0xed251b46,0x9bec8d15,0xcaca5e64,0x1f5d6d30,0x9ff20f07,0x347b3b35,0xf7e4b286,0x4d65f034 +.long 0xf111661e,0x9e93ba24,0xb105eb04,0xedced484,0xf424b578,0x96dc9ba1,0xe83e9069,0xbf8f66b7,0xd7ed8216,0x872d4df4,0x8e2cbecf,0xbf07f377,0x98e73754,0x4281d899,0x8aab8708,0xfec85fbb +.long 0xa5ba5b0b,0x9a3c0dee,0x42d05299,0xe6a116ce,0xe9b02d42,0xae9775fe,0xa1545cb6,0x72b05200,0x31a3b4ea,0xbc506f7d,0x8bbd9b32,0xe5893078,0xe4b12a97,0xc8bc5f37,0x4a73b671,0x6b000c06 +.long 0x765fa7d0,0x13b5bf22,0x1d6a5370,0x59805bf0,0x4280db98,0x67a5e29d,0x776b1ce3,0x4f53916f,0x33ddf626,0x714ff61f,0xa085d103,0x4206238e,0xe5809ee3,0x1c50d4b7,0x85f8eb1d,0x999f450d +.long 0xe4c79e9b,0x658a6051,0xc66a9fea,0x1394cb73,0xc6be7b23,0x27f31ed5,0x5aa6f8fe,0xf4c88f36,0x4aaa499e,0x0fb0721f,0xe3fb2a6b,0x68b3a7d5,0x3a92851d,0xa788097d,0xe96f4913,0x060e7f8a +.long 0x1a3a93bc,0x82eebe73,0xa21adc1a,0x42bbf465,0xef030efd,0xc10b6fa4,0x87b097bb,0x247aa4c7,0xf60c77da,0x8b8dc632,0xc223523e,0x6ffbc26a,0x344579cf,0xa4f6ff11,0x980250f6,0x5825653c +.long 0xbc1aa2b9,0xb2dd097e,0x37a0333a,0x07889393,0x37a0db38,0x1cf55e71,0x792c1613,0x2648487f,0x3fcef261,0xdad01336,0x0eabf129,0x6239c81d,0x9d276be2,0x8ee761de,0x1eda6ad3,0x406a7a34 +.long 0x4a493b31,0x4bf367ba,0x9bf7f026,0x54f20a52,0x9795914b,0xb696e062,0x8bf236ac,0xcddab96d,0xed25ea13,0x4ff2c70a,0x81cbbbe7,0xfa1d09eb,0x468544c5,0x88fc8c87,0x696b3317,0x847a670d +.long 0x64bcb626,0xf133421e,0x26dee0b5,0xaea638c8,0xb310346c,0xd6e7680b,0xd5d4ced3,0xe06f4097,0x7512a30b,0x09961452,0xe589a59a,0xf3d867fd,0x52d0c180,0x2e73254f,0x333c74ac,0x9063d8a3 +.long 0xd314e7bc,0xeda6c595,0x467899ed,0x2ee7464b,0x0a1ed5d3,0x1cef423c,0x69cc7613,0x217e76ea,0xe7cda917,0x27ccce1f,0x8a893f16,0x12d8016b,0x9fc74f6b,0xbcd6de84,0xf3144e61,0xfa5817e2 +.long 0x0821ee4c,0x1f354164,0x0bc61992,0x1583eab4,0x1d72879f,0x7490caf6,0xf76ae7b2,0x998ad9f3,0xa41157f7,0x1e181950,0xe8da3a7e,0xa9d7e1e6,0x8426b95f,0x963784eb,0x542e2a10,0x0ee4ed6e +.long 0xac751e7b,0xb79d4cc5,0xfd4211bd,0x93f96472,0xc8de4fc6,0x8c72d3d2,0xdf44f064,0x7b69cbf5,0xf4bf94e1,0x3da90ca2,0xf12894e2,0x1a5325f8,0x7917d60b,0x0a437f6c,0x96c9cb5d,0x9be70486 +.long 0xe1dc5c05,0xb4d880bf,0xeebeeb57,0xd738adda,0xdf0fe6a3,0x6f0119d3,0x66eaaf5a,0x5c686e55,0xdfd0b7ec,0x9cb10b50,0x6a497c21,0xbdd0264b,0x8c546c96,0xfc093514,0x79dbf42a,0x58a947fa +.long 0x49ccd6d7,0xc0b48d4e,0x88bd5580,0xff8fb02c,0x07d473b2,0xc75235e9,0xa2188af3,0x4fab1ac5,0x97576ec0,0x030fa3bc,0x0b7e7d2f,0xe8c946e8,0x70305600,0x40a5c9cc,0xc8b013b4,0x6d8260a9 +.long 0x70bba85c,0x0368304f,0xa4a0d311,0xad090da1,0x2415eec1,0x7170e870,0x8461ea47,0xbfba35fe,0xc1e91938,0x6279019a,0x1afc415f,0xa47638f3,0xbcba0e0f,0x36c65cbb,0x034e2c48,0x02160efb +.long 0x615cd9e4,0xe6c51073,0xf1243c06,0x498ec047,0xb17b3d8c,0x3e5a8809,0x0cc565f1,0x5cd99e61,0x7851dafe,0x81e312df,0xa79061e2,0xf156f5ba,0x880c590e,0x80d62b71,0x0a39faa1,0xbec9746f +.long 0xc8ed1f7a,0x1d98a9c1,0xa81d5ff2,0x09e43bb5,0x0da0794a,0xd5f00f68,0x661aa836,0x412050d9,0x90747e40,0xa89f7c4e,0xb62a3686,0x6dc05ebb,0x308e3353,0xdf4de847,0x9fb53bb9,0x53868fbb +.long 0xcfdcf7dd,0x2b09d2c3,0x723fcab4,0x41a9fce3,0x07f57ca3,0x73d905f7,0xac8e1555,0x080f9fb1,0x9ba7a531,0x7c088e84,0xed9a147f,0x07d35586,0xaf48c336,0x602846ab,0x0ccf0e79,0x7320fd32 +.long 0xb18bd1ff,0xaa780798,0xafdd2905,0x52c2e300,0x434267cd,0xf27ea3d6,0x15605b5f,0x8b96d16d,0x4b45706b,0x7bb31049,0x743d25f8,0xe7f58b8e,0x87f30076,0xe9b5e45b,0x5d053d5a,0xd19448d6 +.long 0xd3210a04,0x1ecc8cb9,0xdafb5269,0x6bc7d463,0x67c3489f,0x3e59b10a,0x65641e1b,0x1769788c,0xbd6cb838,0x8a53b82d,0x236d5f22,0x7066d6e6,0x6908536e,0x03aa1c61,0x66ae9809,0xc971da0d +.long 0xc49a2fac,0x01b3a86b,0x3092e77a,0x3b8420c0,0x7d6fb556,0x02057300,0xbff40a87,0x6941b2a1,0x0658ff2a,0x140b6308,0x3424ab36,0x87804363,0x5751e299,0x0253bd51,0x449c3e3a,0xc75bcd76 +.long 0x7f8f875d,0x92eb4090,0x56c26bbf,0x9c9d754e,0x8110bbe7,0x158cea61,0x745f91ea,0x62a6b802,0xc6e7394b,0xa79c41aa,0xad57ef10,0x445b6a83,0x6ea6f40c,0x0c5277eb,0x88633365,0x319fe96b +.long 0x385f63cb,0x0b0fc61f,0x22bdd127,0x41250c84,0x09e942c2,0x67d153f1,0xc021ad5d,0x60920d08,0x724d81a5,0x229f5746,0x5bba3299,0xb7ffb892,0xde413032,0x518c51a1,0x3c2fd94c,0x2a9bfe77 +.long 0x3191f4fd,0xcbcde239,0xd3d6ada1,0x43093e16,0x58769606,0x184579f3,0xd236625c,0x2c94a8b3,0x5c437d8e,0x6922b9c0,0xd8d9f3c8,0x3d4ae423,0x2e7090a2,0xf72c31c1,0xd76a55bd,0x4ac3f5f3 +.long 0x6b6af991,0x342508fc,0x1b5cebbd,0x0d527100,0xdd440dd7,0xb84740d0,0x780162fd,0x748ef841,0xdfc6fafb,0xa8dbfe0e,0xf7300f27,0xeadfdf05,0xfeba4ec9,0x7d06555f,0x9e25fa97,0x12c56f83 +.long 0xd39b8c34,0x77f84203,0x3125eddb,0xed8b1be6,0xf6e39dc5,0x5bbf2441,0x6a5d678a,0xb00f6ee6,0x57d0ea99,0xba456ecf,0x17e06c43,0xdcae0f58,0x0f5b4baa,0x01643de4,0xd161b9be,0x2c324341 +.long 0xe126d468,0x80177f55,0x76748e09,0xed325f1f,0xcfa9bdc2,0x6116004a,0x3a9fb468,0x2d8607e6,0x6009d660,0x0e573e27,0x8d10c5a1,0x3a525d2e,0x3b9009a0,0xd26cb45c,0xde9d7448,0xb6b0cdc0 +.long 0xe1337c26,0x949c9976,0xd73d68e5,0x6faadebd,0xf1b768d9,0x9e158614,0x9cc4f069,0x22dfa557,0xbe93c6d6,0xccd6da17,0xa504f5b9,0x24866c61,0x8d694da1,0x2121353c,0x0140b8c6,0x1c6ca580 +.long 0xe964021e,0xc245ad8c,0x032b82b3,0xb83bffba,0x47ef9898,0xfaa220c6,0x982c948a,0x7e8d3ac6,0xbc2d124a,0x1faa2091,0x05b15ff4,0xbd54c3dd,0xc87c6fb7,0x386bf3ab,0xfdeb6f66,0xfb2b0563 +.long 0x5b45afb4,0x4e77c557,0xefb8912d,0xe9ded649,0x42f6e557,0x7ec9bbf5,0x62671f00,0x2570dfff,0x88e084bd,0x2b3bfb78,0xf37fe5b4,0xa024b238,0x95649aee,0x44e7dc04,0x5e7ec1d8,0x498ca255 +.long 0xaaa07e86,0x3bc766ea,0xf3608586,0x0db6facb,0xbdc259c8,0xbadd2549,0x041c649f,0x95af3c6e,0x02e30afb,0xb36a928c,0x008a88b8,0x9b5356ad,0xcf1d9e9d,0x4b67a5f1,0xa5d8d8ce,0xc6542e47 +.long 0x7adfb6cc,0x73061fe8,0x98678141,0xcc826fd3,0x3c80515a,0x00e758b1,0x41485083,0x6afe3247,0xb6ae8a75,0x0fcb08b9,0x4acf51e1,0xb8cf388d,0x6961b9d6,0x344a5560,0x6a97fd0c,0x1a6778b8 +.long 0xecc4c7e3,0xd840fdc1,0x16db68cc,0xde9fe47d,0xa3e216aa,0xe95f89de,0x9594a8be,0x84f1a6a4,0x5a7b162b,0x7ddc7d72,0xadc817a3,0xc5cfda19,0x78b58d46,0x80a5d350,0x82978f19,0x93365b13 +.long 0x26a1fc90,0x2e44d225,0x4d70705d,0x0d6d10d2,0xd70c45f4,0xd94b6b10,0xb216c079,0x0f201022,0x658fde41,0xcec966c5,0x7e27601d,0xa8d2bc7d,0xff230be7,0xbfcce3e1,0x0033ffb5,0x3394ff6b +.long 0x8132c9af,0xd890c509,0x361e7868,0xaac4b0eb,0xe82d15aa,0x5194ded3,0x23ae6b7d,0x4550bd2e,0xea5399d4,0x3fda318e,0x91638b80,0xd989bffa,0xa14aa12d,0x5ea124d0,0x3667b944,0x1fb1b899 +.long 0x44c44d6a,0x95ec7969,0x57e86137,0x91df144a,0x73adac44,0x915fd620,0x59a83801,0x8f01732d,0x3aa0a633,0xec579d25,0xc9d6d59c,0x06de5e7c,0xb1ef8010,0xc132f958,0xe65c1a02,0x29476f96 +.long 0xd34c3565,0x336a77c0,0x1b9f1e9e,0xef1105b2,0xf9e08002,0x63e6d08b,0xc613809e,0x9aff2f21,0x3a80e75d,0xb5754f85,0x6bbda681,0xde71853e,0x8197fd7a,0x86f041df,0x127817fa,0x8b332e08 +.long 0xb9c20cda,0x05d99be8,0xd5cd0c98,0x89f7aad5,0x5bb94183,0x7ef936fe,0xb05cd7f2,0x92ca0753,0x74a1e035,0x9d65db11,0x13eaea92,0x02628cc8,0x49e4fbf2,0xf2d9e242,0xe384f8b7,0x94fdfd9b +.long 0x63428c6b,0x65f56054,0x90b409a5,0x2f7205b2,0xff45ae11,0xf778bb78,0xc5ee53b2,0xa13045be,0x03ef77fe,0xe00a14ff,0xffef8bef,0x689cd59f,0x1e9ade22,0x3578f0ed,0x6268b6a8,0xe99f3ec0 +.long 0xea1b3c3e,0xa2057d91,0xb8823a4a,0x2d1a7053,0x2cca451e,0xabbb336a,0x2218bb5d,0xcd2466e3,0xc8cb762d,0x3ac1f42f,0x7690211f,0x7e312aae,0x45d07450,0xebb9bd73,0x46c2213f,0x207c4b82 +.long 0x375913ec,0x99d425c1,0x67908220,0x94e45e96,0xcd67dbf6,0xc08f3087,0xc0887056,0xa5670fbe,0x66f5b8fc,0x6717b64a,0x786fec28,0xd5a56aea,0xc0ff4952,0xa8c3f55f,0x457ac49b,0xa77fefae +.long 0x98379d44,0x29882d7c,0x509edc8a,0xd000bdfb,0xe66fe464,0xc6f95979,0xfa61bde0,0x504a6115,0xeffea31a,0x56b3b871,0xf0c21a54,0x2d3de26d,0x834753bf,0x21dbff31,0x69269d86,0xe67ecf49 +.long 0x151fe690,0x7a176952,0x7f2adb5f,0x03515804,0xd1b62a8d,0xee794b15,0xaae454e6,0xf004ceec,0xf0386fac,0x0897ea7c,0xd1fca751,0x3b62ff12,0x1b7a04ec,0x154181df,0xfb5847ec,0x2008e04a +.long 0x41dbd772,0xd147148e,0x22942654,0x2b419f73,0xe9c544f7,0x669f30d3,0xc8540149,0x52a2c223,0x634dfb02,0x5da9ee14,0xf47869f3,0x5f074ff0,0xa3933acc,0x74ee878d,0x4fe35ed1,0xe6510651 +.long 0xf1012e7a,0xb3eb9482,0xa8a566ae,0x51013cc0,0x47c00d3b,0xdd5e9243,0x946bb0e5,0x7fde089d,0xc731b4b3,0x030754fe,0x99fda062,0x12a136a4,0x5a1a35bc,0x7c1064b8,0x446c84ef,0xbf1f5763 +.long 0xa16d4b34,0xed29a56d,0xdca21c4f,0x7fba9d09,0x6d8de486,0x66d7ac00,0x73a2a5e1,0x60061987,0x9da28ff0,0x8b400f86,0x43c4599c,0x3133f708,0xee28cb0d,0x9911c9b8,0x8e0af61d,0xcd7e2874 +.long 0x72ed91fc,0x5a85f0f2,0x9cd4a373,0x85214f31,0x1925253c,0x881fe5be,0x91e8bc76,0xd8dc98e0,0x585cc3a2,0x7120affe,0x735bf97a,0x724952ed,0x3eb34581,0x5581e7dc,0xe52ee57d,0x5cbff4f2 +.long 0x87d8cc7b,0x8d320a0e,0xf1d280d0,0x9beaa7f3,0x9beec704,0x7a0b9571,0x5b7f0057,0x9126332e,0x8ed3bd6d,0x01fbc1b4,0xd945eb24,0x35bb2c12,0x9a8ae255,0x6404694e,0x8d6abfb3,0xb6092eec +.long 0xcc058865,0x4d76143f,0x6e249922,0x7b0a5af2,0x6a50d353,0x8aef9440,0x64f0e07a,0xe11e4bcc,0xa14a90fa,0x4472993a,0xba0c51d4,0x7706e20c,0x1532672d,0xf403292f,0x21829382,0x52573bfa +.long 0x3b5bdb83,0x6a7bb6a9,0xa4a72318,0x08da65c0,0x63eb065f,0xc58d22aa,0x1b15d685,0x1717596c,0xb266d88b,0x112df0d0,0x5941945a,0xf688ae97,0x7c292cac,0x487386e3,0x57d6985c,0x42f3b50d +.long 0x6a90fc34,0x6da4f998,0x65ca8a8d,0xc8f257d3,0x6951f762,0xc2feabca,0x74c323ac,0xe1bc81d0,0x251a2a12,0x1bc68f67,0xbe8a70dc,0x10d86587,0xf0f84d2e,0xd648af7f,0x6a43ac92,0xf0aa9ebc +.long 0x27596893,0x69e3be04,0x45bf452b,0xb6bb02a6,0xf4c698c8,0x0875c11a,0xbece3794,0x6652b5c7,0x4f5c0499,0x7b3755fd,0xb5532b38,0x6ea16558,0xa2e96ef7,0xd1c69889,0x61ed8f48,0x9c773c3a +.long 0x9b323abc,0x2b653a40,0xf0e1d791,0xe26605e1,0x4a87157a,0x45d41064,0xcbbce616,0x8f9a78b7,0xc407eddd,0xcf1e44aa,0xa35b964f,0x81ddd1d8,0xfd083999,0x473e339e,0x8e796802,0x6c94bdde +.long 0x8545d185,0x5a304ada,0x738bb8cb,0x82ae44ea,0xdf87e10e,0x628a35e3,0xa15b9fe3,0xd3624f3d,0x14be4254,0xcc44209b,0xbdbc2ea5,0x7d0efcbc,0x04c37bbe,0x1f603362,0x56a5852c,0x21f363f5 +.long 0xa8501550,0xa1503d1c,0xd8ab10bb,0x2251e0e1,0x6961c51c,0xde129c96,0x81910f68,0x1f7246a4,0x5f2591f2,0x2eb744ee,0x5e627157,0x3c47d33f,0x22f3bd68,0x4d6d62c9,0xcb8df856,0x6120a64b +.long 0x7b5d07df,0x3a9ac6c0,0x7ef39783,0xa92b9558,0xab3a9b4f,0xe128a134,0xb1252f05,0x41c18807,0x80ba9b1c,0xfc7ed089,0xc532a9dd,0xac8dc6de,0x55246809,0xbf829cef,0x5b4ee80f,0x101b784f +.long 0xb6f11603,0xc09945bb,0x41d2801e,0x57b09dbe,0xa97534a8,0xfba5202f,0xc17b9614,0x7fd8ae5f,0x78308435,0xa50ba666,0xd3868c4d,0x9572f77c,0x2dd7aab0,0x0cef7bfd,0x2c7c79ff,0xe7958e08 +.long 0x25346689,0x81262e42,0xb07c7004,0x716da290,0xb7950ee3,0x35f911ea,0x261d21b5,0x6fd72969,0x08b640d3,0x52389803,0x887f12a1,0x5b0026ee,0x742e9311,0x20e21660,0x5ff77ff7,0x0ef6d541 +.long 0xf9c41135,0x969127f0,0x68a64993,0xf21d60c9,0xe541875c,0x656e5d0c,0xa1d3c233,0xf1e0f84e,0x06002d60,0x9bcca359,0x06191552,0xbe2da60c,0x61181ec3,0x5da8bbae,0x65806f19,0x9f04b823 +.long 0xd4b79bb8,0xf1604a7d,0x52c878c8,0xaee806fb,0x8d47b8e8,0x34144f11,0x949f9054,0x72edf52b,0x2127015a,0xebfca84e,0x9cb7cef3,0x9051d0c0,0x296deec8,0x86e8fe58,0x41010d74,0x33b28188 +.long 0x171b445f,0x01079383,0x8131ad4c,0x9bcf21e3,0xc93987e8,0x8cdfe205,0xc92e8c8f,0xe63f4152,0x30add43d,0x729462a9,0xc980f05a,0x62ebb143,0x3b06e968,0x4f3954e5,0x242cf6b1,0xfe1d75ad +.long 0xaf8685c8,0x5f95c6c7,0x2f8f01aa,0xd4c1c8ce,0x2574692a,0xc44bbe32,0xd4a4a068,0xb8003478,0x2eca3cdb,0x7c8fc6e5,0xec04d399,0xea1db16b,0x8f2bc5cf,0xb05bc82e,0xf44793d2,0x763d517f +.long 0x08bd98d0,0x4451c1b8,0x6575f240,0x644b1cd4,0x7375d270,0x6907eb33,0xfa2286bd,0x56c8bebd,0xc4632b46,0xc713d2ac,0xafd60242,0x17da427a,0xc95c7546,0x313065b7,0xbf17a3de,0xf8239898 +.long 0x4c830320,0xf3b7963f,0x903203e3,0x842c7aa0,0xe7327afb,0xaf22ca0a,0x967609b6,0x38e13092,0x757558f1,0x73b8fb62,0xf7eca8c1,0x3cc3e831,0xf6331627,0xe4174474,0xc3c40234,0xa77989ca +.long 0x44a081e0,0xe5fd17a1,0xb70e296a,0xd797fb7d,0x481f719c,0x2b472b30,0xfe6f8c52,0x0e632a98,0xc5f0c284,0x89ccd116,0x2d987c62,0xf51088af,0x4c2de6cf,0x2a2bccda,0xf679f0f9,0x810f9efe +.long 0x7ffe4b3e,0xb0f394b9,0xe5fa5d21,0x0b691d21,0x9dfbbc75,0xb0bd7747,0xfaf78b00,0xd2830fda,0x52434f57,0xf78c249c,0x98096dab,0x4b1f7545,0x8ff8c0b3,0x73bf6f94,0x454e134c,0x34aef03d +.long 0xb7ac7ec5,0xf8d151f4,0xe50da7d5,0xd6ceb95a,0xdc3a0eb8,0xa1b492b0,0xb3dd2863,0x75157b69,0xc5413d62,0xe2c4c74e,0xbc5fc4c7,0xbe329ff7,0x60fa9dda,0x835a2aea,0x7445cb87,0xf117f5ad +.long 0xb0166f7a,0xae8317f4,0xceec74e6,0xfbd3e3f7,0xe0874bfd,0xfdb516ac,0xc681f3a3,0x3d846019,0x7c1620b0,0x0b12ee5c,0x2b63c501,0xba68b4dd,0x6668c51e,0xac03cd32,0x4e0bcb5b,0x2a6279f7 +.long 0x6ae85c10,0x17bd69b0,0x1dfdd3a6,0x72946979,0x2c078bec,0xd9a03268,0xbfd68a52,0x41c6a658,0x0e023900,0xcdea1024,0xb10d144d,0xbaeec121,0x058ab8dc,0x5a600e74,0xbb89ccdd,0x1333af21 +.long 0x3aaba1f1,0xdf25eae0,0x3b7144cf,0x2cada16e,0x71ab98bc,0x657ee27d,0x7a6fc96e,0x99088b4c,0x3549dbd4,0x05d5c0a0,0xf158c3ac,0x42cbdf8f,0x87edd685,0x3fb6b3b0,0x86f064d0,0x22071cf6 +.long 0xff2811e5,0xd2d6721f,0xfe7fae8c,0xdb81b703,0xd3f1f7bb,0x3cfb74ef,0x16cdeb5d,0x0cdbcd76,0x566a808c,0x4f39642a,0x340064d6,0x02b74454,0x0528fa6f,0xfabbadca,0xd3fc0bb6,0xe4c3074c +.long 0xb796d219,0xb32cb8b0,0x34741dd9,0xc3e95f4f,0x68edf6f5,0x87212125,0xa2b9cb8e,0x7a03aee4,0xf53a89aa,0x0cd3c376,0x948a28dc,0x0d8af9b1,0x902ab04f,0xcf86a3f4,0x7f42002d,0x8aacb62a +.long 0xf62ffd52,0x106985eb,0x5797bf10,0xe670b54e,0xc5e30aef,0x4b405209,0x4365b5e9,0x12c97a20,0x1fe32093,0x104646ce,0x3907a8c9,0x13cb4ff6,0xd46e726b,0x8b9f30d1,0xaba0f499,0xe1985e21 +.long 0x10a230cd,0xc573dea9,0xcd30f947,0x24f46a93,0xabe2010a,0xf2623fcf,0x73f00e4f,0x3f278cb2,0x50b920eb,0xed55c67d,0x8e760571,0xf1cb9a2d,0x0895b709,0x7c50d109,0x190d4369,0x4207cf07 +.long 0xc4127fe1,0x3b027e81,0x3ae9c566,0xa9f8b9ad,0xacbfbba5,0x5ab10851,0x569556f5,0xa747d648,0x2ba97bf7,0xcc172b5c,0xbcfa3324,0x15e0f77d,0x7686279d,0xa345b797,0xe38003d3,0x5a723480 +.long 0x8f5fcda8,0xfd8e139f,0xbdee5bfd,0xf3e558c4,0xe33f9f77,0xd76cbaf4,0x71771969,0x3a4c97a4,0xf6dce6a7,0xda27e84b,0x13e6c2d1,0xff373d96,0xd759a6e9,0xf115193c,0x63d2262c,0x3f9b7025 +.long 0x317cd062,0xd9764a31,0x199f8332,0x30779d8e,0x16b11b0b,0xd8074106,0x78aeaed8,0x7917ab9f,0x28fb1d8e,0xb67a9cbe,0x136eda33,0x2e313563,0xa371a86c,0x010b7069,0x6744e6b7,0x44d90fa2 +.long 0xd6b3e243,0x68190867,0x59048c48,0x9fe6cd9d,0x95731538,0xb900b028,0x32cae04f,0xa012062f,0x9399d082,0x8107c8bc,0x41df12e2,0x47e8c54a,0xb6ef3f73,0x14ba5117,0x81362f0b,0x22260bea +.long 0x1a18cc20,0x90ea261e,0x2321d636,0x2192999f,0xe311b6a0,0xef64d314,0x3b54a1f5,0xd7401e4c,0x6fbca2ba,0x19019983,0x8fbffc4b,0x46ad3293,0x3786bf40,0xa142d3f6,0xb67039fc,0xeb5cbc26 +.long 0x252bd479,0x9cb0ae6c,0x12b5848f,0x05e0f88a,0xa5c97663,0x78f6d2b2,0xc162225c,0x6f6e149b,0xde601a89,0xe602235c,0xf373be1f,0xd17bbe98,0xa8471827,0xcaf49a5b,0x18aaa116,0x7e1a0a85 +.long 0x270580c3,0x6c833196,0xf1c98a14,0x1e233839,0xae34e0a5,0x67b2f7b4,0xd8ce7289,0x47ac8745,0x100dd467,0x2b74779a,0x4ee50d09,0x274a4337,0x83608bc9,0x603dcf13,0xc89e8388,0xcd9da6c3 +.long 0x355116ac,0x2660199f,0xb6d18eed,0xcc38bb59,0x2f4bc071,0x3075f31f,0x265dc57e,0x9774457f,0xc6db88bb,0x06a6a9c8,0x4ec98e04,0x6429d07f,0x05ecaa8b,0x8d05e57b,0x7872ea7b,0x20f140b1 +.long 0xca494693,0xdf8c0f09,0xf252e909,0x48d3a020,0x57b14b12,0x4c5c29af,0xbf47ad1c,0x7e6fa37d,0x49a0c938,0x66e7b506,0x6be5f41f,0xb72c0d48,0xb2359412,0x6a6242b8,0x8e859480,0xcd35c774 +.long 0x87baa627,0x12536fea,0xf72aa680,0x58c1fec1,0x601e5dc9,0x6c29b637,0xde9e01b9,0x9e3c3c1c,0x2bcfe0b0,0xefc8127b,0x2a12f50d,0x35107102,0x4879b397,0x6ccd6cb1,0xf8a82f21,0xf792f804 +.long 0xa9b46402,0x509d4804,0xc10f0850,0xedddf85d,0x4b6208aa,0x928410dc,0x391012dc,0xf6229c46,0x7727b9b6,0xc5a7c41e,0xaa444842,0x289e4e4b,0xe9a947ea,0x049ba1d9,0x83c8debc,0x44f9e47f +.long 0x611f8b8e,0xfa77a1fe,0xf518f427,0xfd2e416a,0x114ebac3,0xc5fffa70,0x5d89697b,0xfe57c4e9,0xb1aaf613,0xfdd053ac,0xea585a45,0x31df210f,0x24985034,0x318cc10e,0x5f1d6130,0x1a38efd1 +.long 0x0b1e9e21,0xbf86f237,0x1dbe88aa,0xb258514d,0x90c1baf9,0x1e38a588,0xbdb9b692,0x2936a01e,0x6dd5b20c,0xd576de98,0x70f98ecf,0xb586bf71,0xc42d2fd7,0xcccf0f12,0xfb35bd7b,0x8717e61c +.long 0x35e6fc06,0x8b1e5722,0x0b3e13d5,0x3477728f,0xaa8a7372,0x150c294d,0x3bfa528a,0xc0291d43,0xcec5a196,0xc6c8bc67,0x5c2e8a7c,0xdeeb31e4,0xfb6e1c51,0xba93e244,0x2e28e156,0xb9f8b71b +.long 0x968a2ab9,0xce65a287,0x46bbcb1f,0xe3c5ce69,0xe7ae3f30,0xf8c835b9,0xff72b82b,0x16bbee26,0xfd42cd22,0x665e2017,0xf8b1d2a0,0x1e139970,0x79204932,0x125cda29,0x49c3bee5,0x7aee94a5 +.long 0x89821a66,0x68c70160,0x8f981669,0xf7c37678,0x48cc3645,0xd90829fc,0xd70addfc,0x346af049,0x370bf29c,0x2057b232,0x42e650ee,0xf90c73ce,0xa126ab90,0xe03386ea,0x975a087b,0x0e266e7e +.long 0x0fca65d9,0x80578eb9,0x16af45b8,0x7e2989ea,0xcac75a4e,0x7438212d,0x4fef36b8,0x38c7ca39,0xd402676a,0x8650c494,0xf72c7c48,0x26ab5a66,0xce3a464e,0x4e6cb426,0x2b72f841,0xf8f99896 +.long 0x1a335cc8,0x8c318491,0x6a5913e4,0x563459ba,0xc7b32919,0x1b920d61,0xa02425ad,0x805ab8b6,0x8d006086,0x2ac512da,0xbcf5c0fd,0x6ca4846a,0xac2138d7,0xafea51d8,0x344cd443,0xcb647545 +.long 0xbd7d9040,0x0429ee8f,0x819b9c96,0xee66a2de,0xdea7d744,0x54f9ec25,0x671721bb,0x2ffea642,0x114344ea,0x4f19dbd1,0xfd0dbc8b,0x04304536,0x29ec7f91,0x014b50aa,0xbb06014d,0xb5fc22fe +.long 0x1ee682e0,0x60d963a9,0xfe85c727,0xdf48abc0,0x2e707c2d,0x0cadba13,0xa645aeff,0xde608d3a,0xedafd883,0x05f1c28b,0xbd94de1f,0x3c362ede,0x13593e41,0x8dd0629d,0x766d6eaf,0x0a5e736f +.long 0xf68cf9d1,0xbfa92311,0xc1797556,0xa4f9ef87,0x5601c209,0x10d75a1f,0x09b07361,0x651c374c,0x88b5cead,0x49950b58,0x6fa9dbaa,0x0ef00058,0x4e15f33a,0xf51ddc26,0x2ef46140,0x1f8b5ca6 +.long 0xee9523f0,0x343ac0a3,0x975ea978,0xbb75eab2,0x107387f4,0x1bccf332,0x9ab0062e,0x790f9259,0x1e4f6a5f,0xf1a363ad,0x62519a50,0x06e08b84,0x7265f1ee,0x60915187,0x93ae985e,0x6a80ca34 +.long 0xaaba4864,0x81b29768,0x8d52a7d6,0xb13cabf2,0x8ead03f1,0xb5c36348,0x81c7c1c0,0xc932ad95,0xcae1e27b,0x5452708e,0x1b0df648,0x9dac4269,0xdfcdb8bc,0x233e3f0c,0xec540174,0xe6ceccdf +.long 0x95081181,0xbd0d845e,0x699355d5,0xcc8a7920,0xc3b375a8,0x111c0f6d,0xfd51e0dc,0xfd95bc6b,0x6888523a,0x4a106a26,0xcb01a06d,0x4d142bd6,0xadb9b397,0x79bfd289,0xe9863914,0x0bdbfb94 +.long 0x1660f6a6,0x29d8a229,0x551c042d,0x7f6abcd6,0x0ac3ffe8,0x13039deb,0xec8523fb,0xa01be628,0x0ca1c328,0x6ea34103,0xb903928e,0xc74114bd,0x9e9144b0,0x8aa4ff4e,0x7f9a4b17,0x7064091f +.long 0xe447f2c4,0xa3f4f521,0x604291f0,0x81b8da7a,0x7d5926de,0xd680bc46,0x34a1202f,0x84f21fd5,0x4e9df3d8,0x1d1e3181,0x39ab8d34,0x1ca4861a,0x5b19aa4a,0x809ddeec,0x4d329366,0x59f72f7e +.long 0x386d5087,0xa2f93f41,0xdd67d64f,0x40bf739c,0x66702158,0xb4494205,0x73b1e178,0xc33c65be,0x38ca6153,0xcdcd657c,0xdc791976,0x97f4519a,0xcd6e1f39,0xcc7c7f29,0x7e3c3932,0x38de9cfb +.long 0x7b793f85,0xe448eba3,0xf067e914,0xe9f8dbf9,0xf114ae87,0xc0390266,0xcd6a8e2a,0x39ed75a7,0x7ffba390,0xadb14848,0x6af9bc09,0x67f8cb8b,0x9c7476db,0x322c3848,0x52a538d6,0xa320fecf +.long 0xb2aced2b,0xe0493002,0x616bd430,0xdfba1809,0xc331be70,0x531c4644,0x90d2e450,0xbc04d32e,0x0f9f142d,0x1805a0d1,0x47ee5a23,0x2c44a0c5,0x3989b4e3,0x31875a43,0x0c063481,0x6b1949fd +.long 0xbe0f4492,0x2dfb9e08,0xe9d5e517,0x3ff0da03,0xf79466a8,0x03dbe9a1,0x15ea9932,0x0b87bcd0,0xab1f58ab,0xeb64fc83,0x817edc8a,0x6d9598da,0x1d3b67e5,0x699cff66,0x92635853,0x645c0f29 +.long 0xeabaf21c,0x253cdd82,0x2241659e,0x82b9602a,0x2d9f7091,0x2cae07ec,0x8b48cd9b,0xbe4c720c,0x6f08d6c9,0x6ce5bc03,0xaf10bf40,0x36e8a997,0x3e10ff12,0x83422d21,0xbcc12494,0x7b26d3eb +.long 0xc9469ad6,0xb240d2d0,0x30afa05b,0xc4a11b4d,0xdd6ba286,0x4b604ace,0x3ee2864c,0x18486600,0x8d9ce5be,0x5869d6ba,0xff4bfb0d,0x0d8f68c5,0x5700cf73,0xb69f210b,0x6d37c135,0x61f6653a +.long 0x5aff5a48,0xff3d432b,0x72ba3a69,0x0d81c4b9,0xfa1899ef,0xee879ae9,0x2d6acafd,0xbac7e2a0,0x1c664399,0xd6d93f6c,0x5bcb135d,0x4c288de1,0x9dab7cbf,0x83031dab,0x3abbf5f0,0xfe23feb0 +.long 0xcdedca85,0x9f1b2466,0x1a09538c,0x140bb710,0x5e11115d,0xac8ae851,0x6f03f59e,0x0d63ff67,0x7d234afb,0x755e5551,0x7e208fc1,0x61c2db4e,0xf28a4b5d,0xaa9859ce,0x34af030f,0xbdd6d4fc +.long 0x3be01cb1,0xd1c4a26d,0x243aa07c,0x9ba14ffc,0xb2503502,0xf95cd3a9,0x7d2a93ab,0xe379bc06,0xd4ca8d68,0x3efc18e9,0x80bb412a,0x083558ec,0x9645a968,0xd903b940,0x9ba6054f,0xa499f0b6 +.long 0xb8349abe,0x208b573c,0x30b4fc1c,0x3baab3e5,0xcb524990,0x87e978ba,0xccdf0e80,0x3524194e,0x7d4bcc42,0x62711725,0xb90109ba,0xe90a3d9b,0x1323e1e0,0x3b1bdd57,0x5eae1599,0xb78e9bd5 +.long 0x9e03d278,0x0794b746,0xd70e6297,0x80178605,0x99c97855,0x171792f8,0xf5a86b5c,0x11b393ee,0xd8884f27,0x48ef6582,0xbf19ba5f,0xbd44737a,0xa42062c6,0x8698de4c,0x61ce9c54,0x8975eb80 +.long 0xd7fe71f3,0xd50e57c7,0xbc97ce38,0x15342190,0x4df07b63,0x51bda2de,0x200eb87d,0xba12aeae,0xa9b4f8f6,0xabe135d2,0xfad6d99c,0x04619d65,0x7994937c,0x4a6683a7,0x6f94f09a,0x7a778c8b +.long 0x20a71b89,0x8c508623,0x1c229165,0x241a2aed,0xaaf83a99,0x352be595,0x1562bac8,0x9fbfee7f,0x5c4017e3,0xeaf658b9,0x15120b86,0x1dc7f9e0,0x4c034d6f,0xd84f13dd,0xeaea3038,0x283dd737 +.long 0xcd85d6a2,0x197f2609,0xfae60177,0x6ebbc345,0x4e12fede,0xb80f031b,0x07a2186b,0xde55d0c2,0x24dcdd5a,0x1fb3e37f,0x7ed191fb,0x8d602da5,0x76023e0d,0x108fb056,0x459c20c0,0x70178c71 +.long 0x3fe54cf0,0xfad5a386,0x02bbb475,0xa4a3ec4f,0x919d94d7,0x1aa5ec20,0xa81e4ab3,0x5d3b63b5,0x5ad3d2af,0x7fa733d8,0xd1ac7a37,0xfbc586dd,0x40779614,0x282925de,0xe74a242a,0xfe0ffffb +.long 0x906151e5,0x3f39e67f,0x55e10649,0xcea27f5f,0xc17cf7b7,0xdca1d4e1,0x2fe2362d,0x0c326d12,0x7dd35df3,0x05f7ac33,0xc396dbdf,0x0c3b7639,0x03b7db1c,0x0912f5ac,0x5c9ed4a9,0x9dea4b70 +.long 0xaae3f639,0x475e6e53,0xfc278bac,0xfaba0e7c,0x9490375f,0x16f9e221,0xa5a7ed0a,0xaebf9746,0xf41ad5d6,0x45f9af3f,0xb2e99224,0x03c4623c,0xb3cf56aa,0x82c5bb5c,0x34567ed3,0x64311819 +.long 0x8be489ac,0xec57f211,0xb9a1104b,0x2821895d,0x6064e007,0x610dc875,0x5b20d0fe,0x8e526f3f,0x5b645aee,0x6e71ca77,0x800e10ff,0x3d1dcb9f,0x189cf6de,0x36b51162,0x6bb17353,0x2c5a3e30 +.long 0x2a6c6fbf,0xc186cd3e,0x4bf97906,0xa74516fa,0x279d6901,0x5b4b8f4b,0x2b573743,0x0c4e57b4,0xb6e386b6,0x75fdb229,0x99deac27,0xb46793fd,0xcf712629,0xeeec47ea,0xcbc3b2dd,0xe965f3c4 +.long 0x425c6559,0x8dd1fb83,0x0af06fda,0x7fc00ee6,0x33d956df,0xe98c9225,0x4fbdc8a2,0x0f1ef335,0xb79b8ea2,0x2abb5145,0xbdbff288,0x40fd2945,0xd7185db7,0x6a814ac4,0xc084609a,0xc4329d6f +.long 0xed1be45d,0xc9ba7b52,0xe4cd2c74,0x891dd20d,0x824139b1,0x5a4d4a7f,0xb873c710,0x66c17716,0x2843c4e0,0x5e5bc141,0xb97eb5bf,0xd5ac4817,0x450c95c7,0xc0f8af54,0x318406c5,0xc91b3fa0 +.long 0xab9d97f8,0x360c340a,0x90a2d611,0xfb57bd07,0xa6a6f7e5,0x4339ae3c,0x2feb8a10,0x9c1fcd2a,0xc7ea7432,0x972bcca9,0x308076f6,0x1b0b924c,0x2a5b4ca5,0x80b2814a,0x61ef3b29,0x2f78f55b +.long 0xc18a414f,0xf838744a,0x903d0a86,0xc611eaae,0x2a453f55,0x94dabc16,0x14efb279,0xe6f2e3da,0x9320dc3c,0x5b7a6017,0x8df6b5a4,0x692e382f,0x2d40fa90,0x3f5e15e0,0x643dd318,0xc87883ae +.long 0x53544774,0x511053e4,0x3adba2bc,0x834d0ecc,0xbae371f5,0x4215d7f7,0x6c8663bc,0xfcfd57bf,0xd6901b1d,0xded2383d,0xb5587dc3,0x3b49fbb4,0x07625f62,0xfd44a08d,0x9de9b762,0x3ee4d65b +.long 0x0d63d1fa,0x64e5137d,0x02a9d89f,0x658fc052,0x50436309,0x48894874,0xd598da61,0xe9ae30f8,0x818baf91,0x2ed710d1,0x8b6a0c20,0xe27e9e06,0x1c1a6b44,0x1e28dcfb,0xd6ac57dc,0x883acb64 +.long 0xc2c6ff70,0x8735728d,0xc5dc2235,0x79d6122f,0x19e277f9,0x23f5d003,0xdded8cc7,0x7ee84e25,0x63cd880a,0x91a8afb0,0x3574af60,0x3f3ea7c6,0x02de7f42,0x0cfcdc84,0xb31aa152,0x62d0792f +.long 0x8a5807ce,0x8e1b4e43,0xe4109a7e,0xad283893,0xafd59dda,0xc30cc9cb,0x3d8d8093,0xf65f36c6,0xa60d32b2,0xdf31469e,0x3e8191c8,0xee93df4b,0x355bdeb5,0x9c1017c5,0x8616aa28,0xd2623185 +.long 0xdec31a21,0xb02c83f9,0x6ad9d573,0x988c8b23,0xa57be365,0x53e983ae,0x646f834e,0xe968734d,0x5da6309b,0x9137ea8f,0xc1f1ce16,0x10f3a624,0xca440921,0x782a9ea2,0x5b46f1b5,0xdf94739e +.long 0xcce85c9b,0x9f9be006,0xa4c7c2d3,0x360e70d6,0xaefa1e60,0x2cd5beea,0x8c3d2b6d,0x64cf63c0,0xe1cf6f90,0xfb107fa3,0xd5e044e6,0xb7e937c6,0xce34db9f,0x74e8ca78,0x3e210bd0,0x4f8b36c1 +.long 0x34a35ea8,0x1df165a4,0x4d4412f6,0x3418e0f7,0x518836c3,0x5af1f8af,0x130e1965,0x42ceef4d,0x543a1957,0x5560ca0b,0x886cb123,0xc33761e5,0xfe98ed30,0x66624b1f,0x1090997d,0xf772f4bf +.long 0x4885d410,0xf4e540bb,0x9ba5f8d7,0x7287f810,0xde98dfb1,0x22d0d865,0xbcfbb8a3,0x49ff51a1,0x6bc3012e,0xb6b6fa53,0x170d541d,0x3d31fd72,0x4b0f4966,0x8018724f,0x87dbde07,0x79e7399f +.long 0xf4f8b16a,0x56f8410e,0xc47b266a,0x97241afe,0x6d9c87c1,0x0a406b8e,0xcd42ab1b,0x803f3e02,0x04dbec69,0x7f0309a8,0x3bbad05f,0xa83b85f7,0xad8e197f,0xc6097273,0x5067adc1,0xc097440e +.long 0x3524ff16,0x730eafb6,0x823fc6ce,0xd7f9b51e,0x443e4ac0,0x27bd0d32,0x4d66f217,0x40c59ad9,0x17c387a4,0x6c33136f,0xeb86804d,0x5043b8d5,0x675a73c9,0x74970312,0xf16669b6,0x838fdb31 +.long 0x418e7ddd,0xc507b6dd,0x472f19d6,0x39888d93,0x0c27eb4d,0x7eae26be,0xfbabb884,0x17b53ed3,0x2b01ae4f,0xfc27021b,0xcf488682,0x88462e87,0x215e2d87,0xbee096ec,0xd242e29b,0xeb2fea9a +.long 0xb821fc28,0x5d985b5f,0xdc1e2ad2,0x89d2e197,0x9030ba62,0x55b566b8,0x4f41b1c6,0xe3fd41b5,0xb9a96d61,0xb738ac2e,0x369443f4,0x7f8567ca,0xf803a440,0x8698622d,0x8fe2f4dc,0x2b586236 +.long 0x56b95bce,0xbbcc00c7,0x616da680,0x5ec03906,0x72214252,0x79162ee6,0x86a892d2,0x43132b63,0x2f3263bf,0x4bdd3ff2,0x9cd0a142,0xd5b3733c,0x44415ccb,0x592eaa82,0x8d5474ea,0x663e8924 +.long 0x5236344e,0x8058a25e,0xbda76ee6,0x82e8df9d,0x11cc3d22,0xdcf6efd8,0x3b4ab529,0x00089cda,0xbd38a3db,0x91d3a071,0xef72b925,0x4ea97fc0,0xea3edf75,0x0c9fc15b,0xa4348ed3,0x5a6297cd +.long 0xce7c42d4,0x0d38ab35,0x82feab10,0x9fd493ef,0x82111b45,0x46056b6d,0x73efc5c3,0xda11dae1,0x5545a7fb,0xdc740278,0x40d507e6,0xbdb2601c,0x7066fa58,0x121dfeeb,0x39ae8c2a,0x214369a8 +.long 0x06e0956c,0x195709cb,0x010cd34b,0x4c9d254f,0x0471a532,0xf51e13f7,0x1e73054d,0xe19d6791,0xdb5c7be3,0xf702a628,0xb24dde05,0xc7141218,0xf29b2e2e,0xdc18233c,0x85342dba,0x3a6bd1e8 +.long 0xb311898c,0x3f747fa0,0xcd0eac65,0xe2a272e4,0xf914d0bc,0x4bba5851,0xc4a43ee3,0x7a1a9660,0xa1c8cde9,0xe5a367ce,0x7271abe3,0x9d958ba9,0x3d1615cd,0xf3ff7eb6,0xf5ae20b0,0xa2280dce +.long 0xcf640147,0x56dba5c1,0x5e83d118,0xea5a2e3d,0xda24c511,0x04cd6b6d,0xe854d214,0x1c0f4671,0x69565381,0x91a6b7a9,0xdecf1f5b,0xdc966240,0xfcf5d009,0x1b22d21c,0x9021dbd5,0x2a05f641 +.long 0xd4312483,0x8c0ed566,0x643e216f,0x5179a95d,0x17044493,0xcc185fec,0x54991a21,0xb3063339,0x0081a726,0xd801ecdb,0x4fa89bbb,0x0149b0c6,0x4391b6b9,0xafe9065a,0xd633f3a3,0xedc92786 +.long 0xae6a8e13,0xe408c24a,0x9f3897ab,0x85833fde,0xd81a0715,0x43800e7e,0xb44ffc5f,0xde08e346,0xcdeff2e0,0x7094184c,0x165eaed1,0x49f9387b,0x777c468a,0x635d6129,0x538c2dd8,0x8c0dcfd1 +.long 0x7a6a308b,0xd6d9d9e3,0x4c2767d3,0x62375830,0xf38cbeb6,0x874a8bc6,0xccb6fd9e,0xd94d3f1a,0xba21f248,0x92a9735b,0x6cd1efb0,0x272ad0e5,0x05b03284,0x7437b69c,0x6948c225,0xe7f04702 +.long 0xcba2ecec,0x8a56c04a,0xe3a73e41,0x0c181270,0x03e93725,0x6cb34e9d,0x496521a9,0xf77c8713,0xfa7f9f90,0x94569183,0x8c9707ad,0xf2e7aa4c,0x26c1c9a3,0xced2c9ba,0x40197507,0x9109fe96 +.long 0xe9adfe1c,0x9ae868a9,0x314e39bb,0x3984403d,0xf2fe378f,0xb5875720,0xba44a628,0x33f901e0,0x3652438c,0xea1125fe,0x9dd1f20b,0xae9ec4e6,0xbebf7fbd,0x1e740d9e,0x42dbe79c,0x6dbd3ddc +.long 0xedd36776,0x62082aec,0xe9859039,0xf612c478,0x032f7065,0xa493b201,0x4ff9b211,0xebd4d8f2,0xaac4cb32,0x3f23a0aa,0x15ed4005,0xea3aadb7,0xafa27e63,0xacf17ea4,0xc11fd66c,0x56125c1a +.long 0x3794f8dc,0x266344a4,0x483c5c36,0xdcca923a,0x3f9d10a0,0x2d6b6bbf,0x81d9bdf3,0xb320c5ca,0x47b50a95,0x620e28ff,0xcef03371,0x933e3b01,0x99100153,0xf081bf85,0xc3a8c8d6,0x183be9a0 +.long 0xd6bbe24d,0x4e3ddc5a,0x53843795,0xc6c74630,0x65ec2d4c,0x78193dd7,0xcd3c89b2,0xb8df26cc,0x5a483f8d,0x98dbe399,0x7dd3313a,0x72d8a957,0xab0bd375,0x65087294,0x7c259d16,0xfcd89248 +.long 0x7613aa81,0x8a9443d7,0x85fe6584,0x80100800,0x7fb10288,0x70fc4dbc,0xe86beee8,0xf58280d3,0x7c978c38,0x14fdd82f,0x0de44d7b,0xdf1204c1,0x4160252f,0xa08a1c84,0xc17646a5,0x591554ca +.long 0xa05bd525,0x214a37d6,0x07957b3c,0x48d5f09b,0xd7109bc9,0x0247cdcb,0x30599ce7,0x40f9e4bb,0xf46ad2ec,0xc325fa03,0xc3e3f9ee,0x00f766cf,0xd43a4577,0xab556668,0x3ee03b93,0x68d30a61 +.long 0x77b46a08,0x7ddc81ea,0xc7480699,0xcf5a6477,0x6633f683,0x43a8cb34,0x92363c60,0x1b867e6b,0x1f60558e,0x43921114,0x2f41450e,0xcdbcdd63,0xcc630e8b,0x7fc04601,0x97038b43,0xea7c66d5 +.long 0x04e99fd8,0x7259b8a5,0x4785549a,0x98a8dd12,0x840552e1,0x0e459a7c,0x4bb0909e,0xcdfcf4d0,0x53758da7,0x34a86db2,0xeac997e1,0xe643bb83,0x530c5b7e,0x96400bd7,0xb41c8b52,0x9f97af87 +.long 0xfbeee3f9,0x34fc8820,0x49091afd,0x93e53490,0x9a31f35c,0x764b9be5,0x57e3d924,0x71f37864,0x943aa75e,0x02fb34e0,0xab8ff6e4,0xa18c9c58,0x33cf0d19,0x080f31b1,0x083518a7,0x5c9682db +.long 0xb709c3de,0x873d4ca6,0x3575b8f0,0x64a84262,0x020154bb,0x6275da1f,0xd17cf1ab,0x97678caa,0x951a95c3,0x8779795f,0x50fccc08,0xdd35b163,0x33d8f031,0x32709627,0x498dd85c,0x3c5ab10a +.long 0x41dca566,0xb6c185c3,0xd8622aa3,0x7de7feda,0x901b6dfb,0x99e84d92,0x7c4ad288,0x30a02b0e,0x2fd3cf36,0xc7c81daa,0xdf89e59f,0xd1319547,0xcd496733,0xb2be8184,0x93d3412b,0xd5f449eb +.long 0x25fe531d,0x7ea41b1b,0x6a1d5646,0xf9797432,0x2bde501a,0x86067f72,0x0c85e89c,0xf91481c0,0xf8b05bc6,0xca8ee465,0x02e83cda,0x1844e1cf,0xb4dbe33b,0xca82114a,0x4eabfde2,0x0f9f8769 +.long 0x38b27fe2,0x4936b1c0,0xaba402df,0x63b6359b,0x656bdbab,0x40c0ea2f,0x6580c39c,0x9c992a89,0x2a60aed1,0x600e8f15,0xe0bf49df,0xeb089ca4,0x2d42d99a,0x9c233d7d,0x4c6bc2fa,0x648d3f95 +.long 0xe1add3f3,0xdcc383a8,0x4f64a348,0xf42c0c6a,0x0030dbdb,0x2abd176f,0x7d6c215e,0x4de501a3,0x4b9a64bc,0x4a107c1f,0x2496cd59,0xa77f0ad3,0x7688dffb,0xfb78ac62,0x67937d8e,0x7025a2ca +.long 0xd1a8f4e7,0xfde8b2d1,0x7354927c,0xf5b3da47,0xd9205735,0xe48606a3,0xe177b917,0xac477cc6,0xa883239a,0xfb1f73d2,0xcc8b8357,0xe12572f6,0xfb1f4f86,0x9d355e9c,0xd9f3ec6e,0x89b795f8 +.long 0xb54398dc,0x27be56f1,0x3fedeed5,0x1890efd7,0x9c6d0140,0x62f77f1f,0x596f0ee4,0x7ef0e314,0xcc61dab3,0x50ca6631,0xf4866e4f,0x4a39801d,0xae363b39,0x66c8d032,0x2ead66aa,0x22c591e5 +.long 0xde02a53e,0x954ba308,0xd389f357,0x2a6c060f,0xfbf40b66,0xe6cfcde8,0xc6340ce1,0x8e02fc56,0x73adb4ba,0xe4957795,0xa7b03805,0x7b86122c,0x0c8e6fa6,0x63f83512,0x057d7804,0x83660ea0 +.long 0x21ba473c,0xbad79105,0xded5389d,0xb6c50bee,0xaa7c9bc0,0xee2caf4d,0x8c4e98a7,0xd97b8de4,0xab3bbddb,0xa9f63e70,0x2597815a,0x3898aabf,0xac15b3d9,0x7659af89,0x703ce784,0xedf7725b +.long 0xe085116b,0x25470fab,0x87285310,0x04a43375,0xe2bfd52f,0x4e39187e,0x7d9ebc74,0x36166b44,0xfd4b322c,0x92ad433c,0xba79ab51,0x726aa817,0xc1db15eb,0xf96eacd8,0x0476be63,0xfaf71e91 +.long 0x641fad98,0xdd69a640,0x29622559,0xb7995918,0xde4199dc,0x03c6daa5,0xad545eb4,0x92cadc97,0x256534e4,0x1028238b,0x8595409a,0x73e80ce6,0xd05dc59b,0x690d4c66,0x981dee80,0xc95f7b8f +.long 0xd856ac25,0xf4337014,0xac524dca,0x441bd9dd,0x5f0499f5,0x640b3d85,0xd5fda182,0x39cf84a9,0xb2aa95a0,0x04e7b055,0x0ddf1860,0x29e33f0a,0x423f6b43,0x082e74b5,0x0aaa2b0f,0x217edeb9 +.long 0x83cbea55,0x58b83f35,0xbc185d70,0xc485ee4d,0x1e5f6992,0x833ff03b,0xcf0c0dd5,0xb5b9b9cc,0x4e9e8a50,0x7caaee8e,0x6269dafd,0x462e907b,0xfbe791c6,0x6ed5cee9,0xed430790,0x68ca3259 +.long 0x13b5ba88,0x2b72bdf2,0x35ef0ac4,0x60294c8a,0x19b99b08,0x9c3230ed,0x6c2589aa,0x560fff17,0xd6770374,0x552b8487,0x9a56f685,0xa373202d,0x45f175d9,0xd3e7f907,0xd080d810,0x3c2f315f +.long 0x7b9520e8,0x1130e9dd,0x0af037b5,0xc078f9e2,0x1e9c104c,0x38cd2ec7,0xc472fe92,0x0f684368,0x6247e7ef,0xd3f1b5ed,0x396dfe21,0xb32d33a9,0x4a9aa2c2,0x46f59cf4,0xff0f7e41,0x69cd5168 +.long 0x4b3234da,0x3f59da0f,0xb4579ebe,0xcf0b0235,0x6d2476c7,0x6d1cbb25,0x9dc30f08,0x4f0837e6,0x906f6e98,0x9a4075bb,0xc761e7d1,0x253bb434,0x6e73af10,0xde2e645f,0x0c5f131c,0xb89a4060 +.long 0xb8cc037f,0xd12840c5,0x7405bb47,0x3d093a5b,0x206348b8,0x6202c253,0xc55a3ca7,0xbf5d57fc,0x8c3bef48,0x89f6c90c,0x5a0a960a,0x23ac7623,0x552b42ab,0xdfbd3d6b,0x132061f6,0x3ef22458 +.long 0xc97e6516,0xd74e9bda,0xc230f49e,0x88779360,0x1e74ea49,0xa6ec1de3,0x3fb645a2,0x581dcee5,0x8f483f14,0xbaef2391,0xd137d13b,0x6d2dddfc,0xd2743a42,0x54cde50e,0xe4d97e67,0x89a34fc5 +.long 0x12e08ce5,0x13f1f5b3,0xa7f0b2ca,0xa80540b8,0x01982805,0x854bcf77,0x233bea04,0xb8653ffd,0x02b0b4c9,0x8e7b8787,0x9acb170a,0x2675261f,0x930c14e5,0x061a9d90,0xdef0abea,0xb59b30e0 +.long 0x0200ec7d,0x1dc19ea6,0x0bce132b,0xb6f4a3f9,0xf13e27e0,0xb8d5de90,0x1fade16f,0xbaee5ef0,0xe4c6cf38,0x6f406aaa,0xd1369815,0xab4cfe06,0xefd550c6,0x0dcffe87,0x75ff7d39,0x9d4f59c7 +.long 0x51deb6ad,0xb02553b1,0xb1877749,0x812399a4,0xca6006e1,0xce90f71f,0xb02b6e77,0xc32363a6,0xdc36c64d,0x02284fbe,0xa7e1ae61,0x86c81e31,0xb909d94a,0x2576c7e5,0x818b2bb0,0x8b6f7d02 +.long 0x56faa38a,0xeca3ed07,0x9305bb54,0xa3790e6c,0x7bc73061,0xd784eeda,0x6dd50614,0xbd56d369,0x229a8aa9,0xd6575949,0x4595ec28,0xdcca8f47,0x06ab4fe6,0x814305c1,0x24f43f16,0xc8c39768 +.long 0x523f2b36,0xe2a45f36,0x920d93bb,0x995c6493,0x90f1632b,0xf8afdab7,0x1c295954,0x79ebbecd,0x79592f48,0xc7bb3ddb,0x5f88e998,0x67216a7b,0xbc01193e,0xd91f098b,0xb1db83fc,0xf7d928a5 +.long 0xe991f600,0x55e38417,0x2981a934,0x2a91113e,0x06b13bde,0xcbc9d648,0x0755ff44,0xb011b6ac,0x045ec613,0x6f4cb518,0xc2f5930a,0x522d2d31,0x382e65de,0x5acae1af,0x27bc966f,0x57643067 +.long 0x1c7193f0,0x5e12705d,0x3be8858e,0xf0f32f47,0x96c6dfc7,0x785c3d7d,0xbf31795d,0xd75b4a20,0x342659d4,0x91acf17b,0x44f0378f,0xe596ea34,0xce52129d,0x4515708f,0x79f2f585,0x17387e1e +.long 0x49dee168,0x72cfd2e9,0x3e2af239,0x1ae05223,0x1d94066a,0x009e75be,0x38abf413,0x6cca31c7,0x9bc49908,0xb50bd61d,0xf5e2bc1e,0x4a9b4a8c,0x946f83ac,0xeb6cc5f7,0xebffab28,0x27da93fc +.long 0x4821c8c5,0xea314c96,0xa83c15f4,0x8de49ded,0x7af33004,0x7a64cf20,0xc9627e10,0x45f1bfeb,0x54b9df60,0x878b0626,0xa95c0b33,0x5e4fdc3c,0xc2035d8e,0xe54a37ca,0x80f20b8c,0x9087cda9 +.long 0x8319ade4,0x36f61c23,0xde8cfdf8,0x766f287a,0x346f3705,0x48821948,0x16e4f4a2,0x49a7b853,0x5cedadfd,0xb9b3f8a7,0x8db2a815,0x8f562815,0x01f68f95,0xc0b7d554,0x688a208e,0x12971e27 +.long 0xd0ff34fc,0xc9f8b696,0x1222718c,0x20824de2,0x0c95284d,0x7213cf9f,0xdc158240,0xe2ad741b,0x54043ccf,0x0ee3a6df,0xd84412b3,0x16ff479b,0xdfc98af0,0xf6c74ee0,0x52fcd2fb,0xa78a169f +.long 0x99c930e9,0xd8ae8746,0x49e117a5,0x1d33e858,0x6624759f,0x7581fcb4,0x5bedc01d,0xde50644f,0xcaf3155e,0xbeec5d00,0xbc73e75f,0x672d66ac,0x270b01db,0x86b9d8c6,0x50f55b79,0xd249ef83 +.long 0x73978fe3,0x6131d6d4,0x754b00a1,0xcc4e4542,0x57dfcfe9,0x4e05df05,0x51ef6bf0,0x94b29cdd,0x9bc7edf2,0xe4530cff,0xd3da65f3,0x8ac236fd,0xc8eb0b48,0x0faf7d5f,0x660eb039,0x4d2de14c +.long 0x60430e54,0xc006bba7,0xda3289ab,0x10a2d0d6,0xd7979c59,0x9c037a5d,0xa116d944,0x04d1f3d3,0x8a0983cd,0x9ff22473,0xc883cabb,0x28e25b38,0x47a58995,0xe968dba5,0x774eebdf,0x2c80b505 +.long 0x4a953beb,0xee763b71,0x1642e7f6,0x502e223f,0x61d5e722,0x6fe4b641,0xdbef5316,0x9d37c5b0,0xf8330bc7,0x0115ed70,0x75a72789,0x139850e6,0xffceccc2,0x27d7faec,0x4fd9f7f6,0x3016a860 +.long 0x4cd8f64c,0xc492ec64,0x279d7b51,0x58a2d790,0x1fc75256,0x0ced1fc5,0x8f433017,0x3e658aed,0x05da59eb,0x0b61942e,0x0ddc3722,0xba3d60a3,0x742e7f87,0x7c311cd1,0xf6b01b6e,0x6473ffee +.long 0x692ac542,0x8303604f,0x227b91d3,0xf079ffe1,0x15aaf9bd,0x19f63e63,0xf1f344fb,0xf99ee565,0xd6219199,0x8a1d661f,0xd48ce41c,0x8c883bc6,0x3c74d904,0x1065118f,0x0faf8b1b,0x713889ee +.long 0x81a1b3be,0x972b3f8f,0xce2764a0,0x4f3ce145,0x28c4f5f7,0xe2d0f1cc,0xc7f3985b,0xdeee0c0d,0xd39e25c3,0x7df4adc0,0xc467a080,0x40619820,0x61cf5a58,0x440ebc93,0x422ad600,0x527729a6 +.long 0xb1b76ba6,0xca6c0937,0x4d2026dc,0x1a2eab85,0x19d9ae0a,0xb1715e15,0xbac4a026,0xf1ad9199,0x07ea7b0e,0x35b3dfb8,0x3ed9eb89,0xedf5496f,0x2d6d08ab,0x8932e5ff,0x25bd2731,0xf314874e +.long 0x3f73f449,0xefb26a75,0x8d44fc79,0x1d1c94f8,0x3bc0dc4d,0x49f0fbc5,0x3698a0d0,0xb747ea0b,0x228d291e,0x5218c3fe,0x43c129d6,0x35b804b5,0xd1acc516,0xfac859b8,0x95d6e668,0x6c10697d +.long 0x0876fd4e,0xc38e438f,0x83d2f383,0x45f0c307,0xb10934cb,0x203cc2ec,0x2c9d46ee,0x6a8f2439,0x65ccde7b,0xf16b431b,0x27e76a6f,0x41e2cd18,0x4e3484d7,0xb9c8cf8f,0x8315244a,0x64426efd +.long 0xfc94dea3,0x1c0a8e44,0xdad6a0b0,0x34c8cdbf,0x04113cef,0x919c3840,0x15490ffa,0xfd32fba4,0x795dcfb7,0x58d190f6,0x83588baf,0xfef01b03,0xca1fc1c0,0x9e6d1d63,0xf0a41ac9,0x53173f96 +.long 0xba16f73b,0x2b1d402a,0x8cf9b9fc,0x2fb31014,0x446ef7bf,0x2d51e60e,0xb91e1745,0xc731021b,0x4fee99d4,0x9d3b4724,0xfac5c1ea,0x4bca48b6,0xbbea9af7,0x70f5f514,0x974c283a,0x751f55a5 +.long 0xcb452fdb,0x6e30251a,0x50f30650,0x31ee6965,0x933548d9,0xb0b3e508,0xf4b0ef5b,0xb8949a4f,0x3c88f3bd,0x208b8326,0xdb1d9989,0xab147c30,0x44d4df03,0xed6515fd,0xe72eb0c5,0x17a12f75 +.long 0x36cf69db,0x3b59796d,0x56670c18,0x1219eee9,0x7a070d8e,0xfe3341f7,0xa327f90c,0x9b70130b,0x0ae18e0e,0x36a32462,0x46c0a638,0x2021a623,0xc62eb0d4,0x251b5817,0x4c762293,0x87bfbcdf +.long 0xcdd61d64,0xf78ab505,0xc8c18857,0x8c7a53fc,0x16147515,0xa653ce6f,0xea7d52d5,0x9c923aa5,0x5c18871f,0xc24709cb,0x73b3cc74,0x7d53bec8,0xfdd1d4c4,0x59264aff,0x240da582,0x5555917e +.long 0x548f5a0e,0xcae8bbda,0x3bbfbbe1,0x1910eaba,0x7677afc3,0xae579685,0x73ff0b5c,0x49ea61f1,0x4f7c3922,0x78655478,0x20c68eef,0x95d337cd,0xdf779ab9,0x68f1e1e5,0xb5cf69a8,0x14b491b0 +.long 0x28e3fe89,0x7a6cbbe0,0xc5aac0eb,0xe7e1fee4,0x697e5140,0x7f47eda5,0xb454921f,0x4f450137,0x95cd8185,0xdb625f84,0xcdb2e583,0x74be0ba1,0xdd5e6de4,0xaee4fd7c,0xe8101739,0x4251437d +.long 0xac620366,0x686d72a0,0xb6d59344,0x4be3fb9c,0xa1eb75b9,0x6e8b44e7,0x91a5c10c,0x84e39da3,0xb38f0409,0x37cc1490,0x2c2ade82,0x02951943,0x1190a2d8,0x9b688783,0x231182ba,0x25627d14 +.long 0x658a6d87,0x6eb550aa,0xcf9c7325,0x1405aaa7,0x5c8748c9,0xd147142e,0x53ede0e0,0x7f637e4f,0x14ffad2c,0xf8ca2776,0xbafb6791,0xe58fb1bd,0xbf8f93fc,0x17158c23,0x0a4a4655,0x7f15b373 +.long 0xd842ca72,0x39d4add2,0x3ed96305,0xa71e4391,0x6700be14,0x5bb09cbe,0xd8befcf6,0x68d69d54,0x37183bcf,0xa45f5367,0x3370dff7,0x7152b7bb,0xbf12525b,0xcf887baa,0xd6d1e3cd,0xe7ac7bdd +.long 0x81fdad90,0x25914f78,0x0d2cf6ab,0xcf638f56,0xcc054de5,0xb90bc03f,0x18b06350,0x932811a7,0x9bbd11ff,0x2f00b330,0xb4044974,0x76108a6f,0xa851d266,0x801bb9e0,0xbf8990c1,0x0dd099be +.long 0xabe32986,0x58c5aaaa,0x50d59c27,0x0fe9dd2a,0x8d307305,0x84951ff4,0x86529b78,0x6c23f829,0x0b136a79,0x50bb2218,0x77a20996,0x7e2174de,0xc0bb4da6,0x6f00a4b9,0xefdde8da,0x89a25a17 +.long 0xc11ee01d,0xf728a27e,0xe5f10dfb,0xf900553a,0x02ec893c,0x189a83c8,0x23f66d77,0x3ca5bdc1,0x97eada9f,0x98781537,0x10256230,0x59c50ab3,0x323c69b3,0x346042d9,0x2c460449,0x1b715a6d +.long 0x6ae06e0b,0xa41dd476,0x9d42e25f,0xcdd7888e,0x56b25a20,0x0f395f74,0x8700e27e,0xeadfe0ae,0x69950093,0xb09d52a9,0x327f8d40,0x3525d9cb,0x67df886a,0xb8235a94,0x035faec2,0x77e4b0dd +.long 0x517d7061,0x115eb20a,0x6c2df683,0x77fe3433,0xcdc6fc67,0x6870ddc7,0x0b87de83,0xb1610588,0xd9c4ddbe,0x343584ca,0x3d754be2,0xb3164f1c,0xc1e6c894,0x0731ed3a,0x4f6b904c,0x26327dec +.long 0x97b5cd32,0x9d49c6de,0xb5eceecd,0x40835dae,0xd9ded7fe,0xc66350ed,0x7a678804,0x8aeebb5c,0x5b8ee9ec,0x51d42fb7,0x8e3ca118,0xd7a17bdd,0x2ef4400e,0x40d7511a,0x875a66f4,0xc48990ac +.long 0x2199e347,0x8de07d2a,0x2a39e051,0xbee75556,0x916e51dc,0x56918786,0x4a2d89ec,0xeb191313,0x37d341ed,0x6679610d,0x56d51c2b,0x434fbb41,0xd7492dba,0xe54b7ee7,0x59021493,0xaa33a79a +.long 0xe4bd6d3d,0x49fc5054,0x5ab551d0,0x09540f04,0x4942d3a6,0x8acc9085,0x2d28323b,0x231af02f,0x0992c163,0x93458cac,0x888e3bb4,0x1fef8e71,0xbe8c268c,0x27578da5,0xe805ec00,0xcc8be792 +.long 0xc61c3855,0x29267bae,0x58c1fd3b,0xebff429d,0x8c0b93b8,0x22d886c0,0x2ddb8953,0xca5e00b2,0xc3fed8b7,0xcf330117,0x819c01f6,0xd49ac6fa,0x3c0fbd54,0x6ddaa6bd,0x8049a2cf,0x91743068 +.long 0xaff2ef81,0xd67f981e,0x2818ae80,0xc3654d35,0x1b2aa892,0x81d05044,0x3d099328,0x2db067bf,0x703dcc97,0xe7c79e86,0xe133e215,0xe66f9b37,0xe39a7a5c,0xcdf119a6,0x876f1b61,0x47c60de3 +.long 0xd860f1b2,0x6e405939,0xf5ed4d4a,0x3e9a1dbc,0xc9b6bcbd,0x3f23619e,0x734e4497,0x5ee790cf,0x5bdaf9bb,0xf0a834b1,0x4ca295f0,0x02cedda7,0xcb8e378c,0x4619aa2b,0xcc987ea4,0xe5613244 +.long 0x76b23a50,0x0bc022cc,0x0a6c21ce,0x4a2793ad,0x89cac3f5,0x38328780,0xcba26d56,0x29176f1b,0x4f6f59eb,0x06296187,0x8bdc658e,0x86e9bca9,0x57e30402,0x2ca9c4d3,0x516a09bb,0x5438b216 +.long 0x7672765a,0x0a6a063c,0x0547b9bf,0x37a3ce64,0x98b1a633,0x42c099c8,0x05ee6961,0xb5ab800d,0x11a5acd6,0xf1963f59,0x46201063,0xbaee6157,0xa596210a,0x36d9a649,0x1ba7138c,0xaed04363 +.long 0xa4a82b76,0xcf817d1c,0xf3806be9,0x5586960e,0x09dc6bb5,0x7ab67c89,0x114fe7eb,0x52ace7a0,0xcbbc9b70,0xcd987618,0x604ca5e1,0x4f06fd5a,0x6dbde133,0x90af14ca,0x948a3264,0x1afe4322 +.long 0xc44b2c6c,0xa70d2ca6,0x0ef87dfe,0xab726799,0x2e696377,0x310f64dc,0x4c8126a0,0x49b42e68,0xcea0b176,0x0ea444c3,0xcb269182,0x53a8ddf7,0xbbba9dcb,0xf3e674eb,0xd8669d33,0x0d2878a8 +.long 0xd019b6a3,0x04b935d5,0x406f1e46,0xbb5cf88e,0x5b57c111,0xa1912d16,0x19ebfd78,0x9803fc21,0xc07764a9,0x4f231c9e,0xb75bd055,0xd93286ee,0x8ee6c9de,0x83a9457d,0x6087ec90,0x04695915 +.long 0x58d6cd46,0x14c6dd8a,0x8e6634d2,0x9cb633b5,0xf81bc328,0xc1305047,0x26a177e5,0x12ede0e2,0x065a6f4f,0x332cca62,0x67be487b,0xc3a47ecd,0x0f47ed1c,0x741eb187,0xe7598b14,0x99e66e58 +.long 0x63d0ff12,0x6f0544ca,0xb610a05f,0xe5efc784,0x7cad7b47,0xf72917b1,0xf2cac0c0,0x3ff6ea20,0xf21db8b7,0xcc23791b,0xd7d93565,0x7dac70b1,0x694bdaad,0x682cda1d,0x1023516d,0xeb88bb8c +.long 0xdfdbeb1b,0xc4c634b4,0xb4ee4dea,0x22f5ca72,0xe6524821,0x1045a368,0x052b18b2,0xed9e8a3f,0xb961f49a,0x9b7f2cb1,0x7b009670,0x7fee2ec1,0x22507a6d,0x350d8754,0x4db55f1d,0x561bd711 +.long 0x320bbcaf,0x4c189ccc,0xdf1de48c,0x568434cf,0x0fa8f128,0x6af1b00e,0x8907583c,0xf0ba9d02,0x32ff9f60,0x735a4004,0xc25dcf33,0x3dd8e4b6,0x42c74cef,0xf2230f16,0x013fa8ad,0xd8117623 +.long 0xf51fe76e,0x36822876,0x11d62589,0x8a6811cc,0x46225718,0xc3fc7e65,0xc82fdbcd,0xb7df2c9f,0xdd7b205b,0x3b1d4e52,0x47a2e414,0xb6959478,0xefa91148,0x05e4d793,0xfd2e9675,0xb47ed446 +.long 0x04c9d9bf,0x1a7098b9,0x1b793048,0x661e2881,0xb01ee461,0xb1a16966,0x2954746f,0xbc521308,0x2477de50,0xc909a0fc,0x7dbd51ef,0xd80bb41c,0x53294905,0xa85be7ec,0x83958f97,0x6d465b18 +.long 0xfb6840fd,0x16f6f330,0x3401e6c8,0xfaaeb214,0xccb5b4f8,0xaf83d30f,0x266dec4b,0x22885739,0x7bc467df,0x51b4367c,0xd842d27a,0x926562e3,0x0fea14a6,0xdfcb6614,0xf2734cd9,0xeb394dae +.long 0x11c0be98,0x3eeae5d2,0x814e8165,0xb1e6ed11,0xe52bce1c,0x191086bc,0xa75a04da,0x14b74cc6,0x8c060985,0x63cf1186,0x2dbd7f7c,0x071047de,0xce0942ca,0x4e433b8b,0xd8fec61d,0xecbac447 +.long 0xebf3232f,0x8f0ed0e2,0xc52a2edd,0xfff80f9e,0x75b55fdb,0xad9ab433,0xe42e0c11,0x73ca7820,0xe6251b46,0x6dace0a0,0x4c0d932d,0x89bc6b5c,0x095da19a,0x3438cd77,0x8d48bdfb,0x2f24a939 +.long 0x766561b7,0x99b47e46,0x0ed0322a,0x736600e6,0x638e1865,0x06a47cb1,0xcb136000,0x927c1c2d,0x0cc5df69,0x29542337,0x09d649a9,0x99b37c02,0x6aefdb27,0xc5f0043c,0x1be95c27,0x6cdd9987 +.long 0x390420d2,0x69850931,0x0983efa4,0x299c40ac,0xaf39aead,0x3a05e778,0x43a45193,0x84274408,0x91a711a0,0x6bcd0fb9,0x9f52ab17,0x461592c8,0xda3c6ed6,0xb49302b4,0x330d7067,0xc51fddc7 +.long 0xda50d531,0x94babeb6,0xa6a7b9da,0x521b840d,0x404bdc89,0x5305151e,0xd0d07449,0x1bcde201,0x3b76a59a,0xf427a78b,0x07791a1b,0xf84841ce,0xbf91ed1c,0xebd314be,0xbf172943,0x8e61d34c +.long 0x5541b892,0x1d5dc451,0xfc9d9e54,0xb186ee41,0xd5bf610d,0x9d9f345e,0xf6acca9f,0x3e7ba65d,0xa8369486,0x9dda787a,0x8eb5ba53,0x09f9dab7,0xd6481bc3,0x5afb2033,0xafa62104,0x76f4ce30 +.long 0xf4f066b5,0xa8fa00cf,0x461dafc2,0x89ab5143,0xa3389998,0x44339ed7,0xbc214903,0x2ff862f1,0xb05556e3,0x2c88f985,0x3467081e,0xcd96058e,0xedc637ea,0x7d6a4176,0x36a5acdc,0xe1743d09 +.long 0x7eb37726,0x66fd72e2,0x1481a037,0xf7fa264e,0x45f4aa79,0x9fbd3bde,0x767c3e22,0xed1e0147,0x82e7abe2,0x7621f979,0x45f633f8,0x19eedc72,0x6137bf3a,0xe69b155e,0x414ee94e,0xa0ad13ce +.long 0x1c0e651a,0x93e3d524,0x02ce227e,0xab1a6e2a,0x4ab27eca,0xe7af1797,0xbd444f39,0x245446de,0x56c07613,0x59e22a21,0xf4275498,0x43deafce,0x67fd0946,0x10834ccb,0x47406edf,0xa75841e5 +.long 0x7b0ac93d,0xebd6a677,0x78f5e0d7,0xa6e37b0d,0x76f5492b,0x2516c096,0x9ac05f3a,0x1e4bf888,0x4df0ba2b,0xcdb42ce0,0x5062341b,0x935d5cfd,0x82acac20,0x8a303333,0x5198b00e,0x429438c4 +.long 0x049d33fa,0x1d083bc9,0x946f67ff,0x58b82dda,0x67a1d6a3,0xac3e2db8,0x1798aac8,0x62e6bead,0xde46c58c,0xfc85980f,0x69c8d7be,0xa7f69379,0x837b35ec,0x23557927,0xe0790c0c,0x06a933d8 +.long 0x077ff55d,0x827c0e9b,0xbb26e680,0x53977798,0x1d9cb54f,0x59530874,0x4aac53ef,0xcca3f449,0xa07eda0f,0x11dc5c87,0xfd6400c8,0xc138bccf,0x13e5da72,0x549680d3,0x4540617e,0xc93eed82 +.long 0x4d0b75c0,0xfd3db157,0x6386075b,0x9716eb42,0x817b2c16,0x0639605c,0xf1e4f201,0x09915109,0x5cca6c3b,0x35c9a928,0x3505c900,0xb25f7d1a,0x630480c4,0xeb9f7d20,0x2a1a501c,0xc3c7b8c6 +.long 0x5a1f8e24,0x3f99183c,0x9dd255f0,0xfdb118fa,0xc27f62a6,0xb9b18b90,0x396ec191,0xe8f732f7,0x0be786ab,0x524a2d91,0x0ac5a0f5,0x5d32adef,0x9725f694,0x9b53d4d6,0x0510ba89,0x032a76c6 +.long 0xebeb1544,0x840391a3,0x3ed73ac3,0x44b7b88c,0x256cb8b3,0xd24bae7a,0xe394cb12,0x7ceb151a,0x5bc1e6a8,0xbd6b66d0,0x090f07bf,0xec70cecb,0x7d937589,0x270644ed,0x5f1dccfe,0xee9e1a3d +.long 0x745b98d2,0xb0d40a84,0x2556ed40,0xda429a21,0x85148cb9,0xf676eced,0xded18936,0x5a22d40c,0x70e8a4ce,0x3bc4b9e5,0x9eae0379,0xbfd1445b,0x1a0bd47e,0xf23f2c0c,0xe1845531,0xa9c0bb31 +.long 0x0a4c3f6b,0x9ddc4d60,0x2c15ef44,0xbdfaad79,0x7f484acc,0xce55a236,0x055b1f15,0x08653ca7,0x538873a3,0x2efa8724,0xace1c7e7,0x09299e5d,0xade332ba,0x07afab66,0x92dd71b7,0x9be1fdf6 +.long 0x5758b11c,0xa49b5d59,0xc8654f40,0x0b852893,0x52379447,0xb63ef6f4,0x105e690c,0xd4957d29,0x646559b0,0x7d484363,0x49788a8e,0xf4a8273c,0x34ce54a9,0xee406cb8,0xf86fda9b,0x1e1c260f +.long 0xcf6a4a81,0xe150e228,0x1b488772,0x1fa3b6a3,0xc5a9c15b,0x1e6ff110,0x8ad6aa47,0xc6133b91,0x9dffa978,0x8ac5d55c,0x5f3965f2,0xba1d1c1d,0x7732b52f,0xf969f4e0,0xa5172a07,0xfceecdb5 +.long 0x10f2b8f5,0xb0120a5f,0x5c4c2f63,0xc83a6cdf,0xf8f9c213,0x4d47a491,0xd3f1bbd5,0xd9e1cce5,0xaba7e372,0x0d91bc7c,0xdfd1a2db,0xfcdc74c8,0x374618e5,0x05efa800,0x15a7925e,0x11216969 +.long 0xf6021c5d,0xd4c89823,0xeff14423,0x880d5e84,0x6dcd1396,0x6523bc5a,0x113c978b,0xd1acfdfc,0xbbb66840,0xb0c164e8,0x72b58459,0xf7f4301e,0xa638e8ec,0xc29ad4a6,0x46b78699,0xf5ab8961 +.long 0x0e954750,0x9dbd7974,0x64f9d2c6,0x0121de88,0xd985232e,0x2e597b42,0x53451777,0x55b6c3c5,0x519cb9fb,0xbb53e547,0x8428600d,0xf134019f,0xe081791a,0x5a473176,0x35fb0c08,0x2f3e2263 +.long 0x73d273b0,0xb28c3017,0x7721ef9a,0xccd21076,0xb650dc39,0x054cc292,0x6188045e,0x662246de,0x6b83c0d1,0x904b52fa,0x97e9cd46,0xa72df267,0x899725e4,0x886b43cd,0xd849ff22,0x2b651688 +.long 0x02f34533,0x60479b79,0x0c77c148,0x5e354c14,0xa8537c78,0xb4bb7581,0xefe1495f,0x188043d7,0x8c1d5026,0x9ba12f42,0x93d4aaab,0x2e0c8a26,0xaa57c450,0xbdba7b8b,0x9bbdafef,0x140c9ad6 +.long 0x25ac0f18,0x2067aa42,0x04d1fbf3,0xf7b1295b,0xa4b04824,0x14829111,0x33bd5e91,0x2ce3f192,0x8f2e1b72,0x9c7a1d55,0x302aa243,0xfe932286,0xd4be9554,0x497ca7b4,0xe0547a6e,0xb8e821b8 +.long 0x67e573e0,0xfb2838be,0x4084c44b,0x05891db9,0x96c1c2c5,0x91311373,0xd958444b,0x6aebfa3f,0xe56e55c1,0xac9cdce9,0x2caa46d0,0x7148ced3,0xb61fe8eb,0x2e10c7ef,0xff97cf4d,0x9fd835da +.long 0x081e9387,0xa36da109,0x8c935828,0xfb9780d7,0xe540b015,0xd5940332,0xe0f466fa,0xc9d7b51b,0xd6d9f671,0xfaadcd41,0xb1a2ac17,0xba6c1e28,0xed201e5f,0x066a7833,0xf90f462b,0x19d99719 +.long 0x060b5f61,0xf431f462,0x7bd057c2,0xa56f46b4,0x47e1bf65,0x348dca6c,0x41bcf1ff,0x9a38783e,0xda710718,0x7a5d33a9,0x2e0aeaf6,0x5a779987,0x2d29d187,0xca87314d,0xc687d733,0xfa0edc3e +.long 0x6a31e09b,0x9df33621,0xc1350e35,0xde89e44d,0x4ca0cf52,0x29214871,0x0b88a538,0xdf379672,0x2591d61b,0xc92a510a,0x585b447b,0x79aa87d7,0xe5287f77,0xf67db604,0x5efe7a80,0x1697c8bf +.long 0xcb198ac7,0x1c894849,0x0f264665,0xa884a93d,0x9b200678,0x2da964ef,0x009834e6,0x3c351b87,0xe2c4b44b,0xafb2ef9f,0x3326790c,0x580f6c47,0x0b02264a,0xb8480521,0x42a194e2,0x8ba6f9e2 +.long 0x8fb54738,0xfc87975f,0x27c3ead3,0x35160788,0xb74a085a,0x834116d2,0xa62fe996,0x53c99a73,0x5b81c51b,0x87585be0,0xbe0852b7,0x925bafa8,0xa84d19a7,0x76a4fafd,0x585206d4,0x39a45982 +.long 0x5eb03c0e,0x499b6ab6,0x72bc3fde,0xf19b7954,0x6e3a80d2,0xa86b5b9c,0x6d42819f,0xe4377508,0xbb3ee8a3,0xc1663650,0xb132075f,0x75eb14fc,0x7ad834f6,0xa8ccc906,0xe6e92ffd,0xea6a2474 +.long 0x0f8d6758,0x9d72fd95,0x408c07dd,0xcb84e101,0xa5e23221,0xb9114bfd,0xe94e742c,0x358b5fe2,0x95f40e75,0x1c0577ec,0x3d73f3d6,0xf0155451,0xbd1b9b66,0x9d55cd67,0xaf8d63c7,0x63e86e78 +.long 0xd3c095f1,0x39d934ab,0xe4b76d71,0x04b261be,0xe73e6984,0x1d2e6970,0x5e5fcb11,0x879fb23b,0xdfd75490,0x11506c72,0x61bcf1c1,0x3a97d085,0xbf5e7007,0x43201d82,0x798232a7,0x7f0ac52f +.long 0x6eb564d4,0x2715cbc4,0x9e570e29,0x8d6c752c,0x9ef5fd5d,0xf80247c8,0xd53eb514,0xc3c66b46,0x0f87de56,0x9666b401,0xc6c603b5,0xce62c06f,0x7e4fc942,0xae7b4c60,0x663a9c19,0x38ac0b77 +.long 0x4b049136,0xcb4d20ee,0x356a4613,0x8b63bf12,0x70e08128,0x1221aef6,0x4acb6b16,0xe62d8c51,0x379e7896,0x71f64a67,0xcafd7fa5,0xb25237a2,0x3841ba6a,0xf077bd98,0x3cd16e7e,0xc4ac0244 +.long 0x21fea4ca,0x548ba869,0xf3dfdac1,0xd36d0817,0xf4685faf,0x09d8d71f,0xc52c459a,0x8eff66be,0x0b57235e,0x182faee7,0x0106712b,0xee3c39b1,0xc0fcdcb0,0x5107331f,0xa51054ba,0x669fb9dc +.long 0x319d7682,0xb25101fb,0x0a982fee,0xb0293129,0x0261b344,0x51c1c9b9,0xbfd371fa,0x0e008c5b,0x0278ca33,0xd866dd1c,0xe5aa53b1,0x666f76a6,0x6013a2cf,0xe5cfb779,0xa3521836,0x1d3a1aad +.long 0x73faa485,0xcedd2531,0xc0a76878,0xc8ee6c4f,0x2a11667d,0xddbccfc9,0x1c2f695a,0x1a418ea9,0x51f73971,0xdb11bd92,0xda2ed89f,0x3e4b3c82,0xe73e0319,0x9a44f3f4,0x303431af,0xd1e3de0f +.long 0x50f75f9c,0x3c5604ff,0x7e752b22,0x1d8eddf3,0x3c9a1118,0x0ef074dd,0xccb86d7b,0xd0ffc172,0x037d90f2,0xabd1ece3,0x6055856c,0xe3f307d6,0x7e4c6daf,0x422f9328,0x334879a0,0x902aac66 +.long 0x94cdfade,0xb6a1e7bf,0x7fc6d634,0x6c97e1ed,0xa2fb63f8,0x662ad24d,0xa5928405,0xf81be1b9,0xd14b4206,0x86d765e4,0x8fa0db65,0xbecc2e0e,0xb17fc76c,0xa28838e0,0xe37cf24e,0xe49a602a +.long 0x567193ec,0x76b4131a,0xe5f6e70b,0xaf3c305a,0x031eebdd,0x9587bd39,0x71bbe831,0x5709def8,0x0eb2b669,0x57059983,0x875b7029,0x4d80ce1b,0x0364ac16,0x838a7da8,0xbe1c83ab,0x2f431d23 +.long 0xf9294dd3,0xe56812a6,0x9b4b0d77,0xb448d01f,0x04e8305c,0xf3ae6061,0x94d8c63e,0x2bead645,0x84fd8b07,0x0a85434d,0xf7a9dee5,0x537b983f,0xef55bd85,0xedcc5f18,0x21c6cf8b,0x2041af62 +.long 0xb940c71e,0x8e52874c,0xdb5f4b3a,0x211935a9,0x301b1dc3,0x94350492,0x29958620,0x33d2646d,0xef911404,0x16b0d64b,0x9a3c5ef4,0x9d1f25ea,0x4a352c78,0x20f200eb,0x4bd0b428,0x43929f2c +.long 0xc7196e29,0xa5656667,0x9391be48,0x7992c2f0,0x9ee0cd6e,0xaaa97cbd,0x3dc8c9bf,0x51b0310c,0xdd9f22cb,0x237f8acf,0xb585d584,0xbb1d81a1,0x8c416388,0x8d5d85f5,0x42fe474f,0x0d6e5a5a +.long 0x38235d4e,0xe7812766,0x496e3298,0x1c62bd67,0x3f175bc8,0x8378660c,0x17afdd4d,0x4d04e189,0x85a8068c,0x32a81601,0x92b29a85,0xdb58e4e1,0xc70d8a3b,0xe8a65b86,0x98a0403b,0x5f0e6f4e +.long 0x69ed2370,0x08129684,0x0871ee26,0x34dc30bd,0x7c9c5b05,0x3a5ce948,0x43a90c87,0x7d487b80,0xdd0e7179,0x4089ba37,0xb4041811,0x45f80191,0x98747ba5,0x1c3e1058,0x6e1ae592,0x98c4e13a +.long 0xe82c9f9e,0xd44636e6,0xc33a1043,0x711db87c,0xaa8aec05,0x6f431263,0x2744a4aa,0x43ff120d,0xae77779b,0xd3bd892f,0x8cdc9f82,0xf0fe0cc9,0xf1c5b1bc,0xca5f7fe6,0x44929a72,0xcc63a682 +.long 0x09dbe19a,0xc7eaba0c,0x6b5c73c2,0x2f3585ad,0x0ae50c30,0x8ab8924b,0x638b30ba,0x17fcd27a,0x10b3d5a5,0xaf414d34,0x2a9accf1,0x09c107d2,0x946a6242,0x15dac49f,0xd707d642,0xaec3df2a +.long 0x3f894ae0,0x2c2492b7,0xb75f18ce,0xf59df3e5,0x8f53cad0,0x7cb740d2,0xc4f01294,0x3eb585fb,0x32c7f717,0x17da0c86,0xaf943f4c,0xeb8c795b,0xf67c51d2,0x4ee23fb5,0x68889949,0xef187575 +.long 0x0389168b,0xa6b4bdb2,0xea577d03,0xc4ecd258,0x55743082,0x3a63782b,0xc72f08cd,0x6f678f4c,0x65e58dd8,0x553511cf,0xd402c0cd,0xd53b4e3e,0xa037c14c,0x37de3e29,0xc05712aa,0x86b6c516 +.long 0xb38dff6f,0x2834da3e,0xea636be8,0xbe012c52,0x61dd37f8,0x292d238c,0x8f8142db,0x0e54523f,0x036a05d8,0xe31eb436,0x1e93c0ff,0x83e3cdff,0x50821ddf,0x3fd2fe0f,0xff9eb33b,0xc8e19b0d +.long 0xb569a5fe,0xc8cc943f,0xd4342d75,0xad0090d4,0xcaeca000,0x82090b4b,0x1bd410eb,0xca39687f,0x65959d77,0xe7bb0df7,0x9c964999,0x39d78218,0xb2415451,0xd87f62e8,0xbed76108,0xe5efb774 +.long 0xe822f0d0,0x3ea011a4,0x5a8704f8,0xbc647ad1,0x50c6820f,0xbb315b35,0xb7e76bec,0x863dec3d,0xf017bfc7,0x01ff5d3a,0x976b8229,0x20054439,0x0bbd0d3b,0x067fca37,0x7f5e3d0f,0xf63dde64 +.long 0x2a4c94e9,0x22dbefb3,0x96f8278a,0xafbff0fe,0x3503793d,0x80aea0b1,0x5f06cd29,0xb2238029,0x8ec3feca,0x65703e57,0x393e7053,0x06c38314,0x7c6734c4,0xa0b751eb,0xc59f0f1e,0xd2e8a435 +.long 0x5e9ca895,0x147d9052,0x972072df,0x2f4dd31e,0xe6c6755c,0xa16fda8e,0xcf196558,0xc66826ff,0x0cf43895,0x1f1a76a3,0x83c3097b,0xa9d604e0,0x66390e0e,0xe1908309,0xb3c85eff,0xa50bf753 +.long 0xf6a70251,0x0696bdde,0x3c6ab16a,0x548b801b,0xa4d08762,0x37fcf704,0xdff76c4e,0x090b3def,0x69cb9158,0x87e8cb89,0x995ece43,0x44a90744,0x0ad9fbf5,0xf85395f4,0x4fb0c82d,0x49b0f6c5 +.long 0xadf7cccf,0x75d9bc15,0xdfa1e1b0,0x81a3e5d6,0x249bc17e,0x8c39e444,0x8ea7fd43,0xf37dccb2,0x907fba12,0xda654873,0x4a372904,0x35daa6da,0x6283a6c5,0x0564cfc6,0x4a9395bf,0xd09fa4f6 +.long 0xaeb19a36,0x688e9ec9,0xc7bfbfb4,0xd913f1ce,0x61c2faa6,0x797b9a3c,0x6a0a9c12,0x2f979bec,0x359679ec,0xb5969d0f,0x079b0460,0xebcf523d,0x10fab870,0xfd6b0008,0x9373a39c,0x3f2edcda +.long 0x6f568431,0x0d64f9a7,0x02f8898c,0xf848c27c,0x260b5bd5,0xf418ade1,0x6973dee8,0xc1f3e323,0x26c185dd,0x46e9319c,0x546f0ac4,0x6d85b7d8,0x247f9d57,0x427965f2,0xb0035f48,0xb519b636 +.long 0xab87d59c,0x6b6163a9,0x39caaa11,0xff9f58c3,0x3177387b,0x4ac39cde,0x873e77f9,0x5f6557c2,0x36a83041,0x67504006,0x75ef196c,0x9b1c96ca,0xb08c7940,0xf34283de,0x1128c316,0x7ea09644 +.long 0x6aa39dff,0xb510b3b5,0x9f8e4d8c,0x59b43da2,0x9e4c4b9f,0xa8ce31fd,0xc1303c01,0x0e20be26,0xe8ee47c9,0x18187182,0x7db98101,0xd9687cdb,0xa1e14ff6,0x7a520e4d,0x8836d572,0x429808ba +.long 0x4944b663,0xa37ca60d,0xa3f91ae5,0xf901f7a9,0x9e36e3b1,0xe4e3e76e,0x29d93250,0x9aa219cf,0x056a2512,0x347fe275,0xde65d95c,0xa4d643d9,0x699fc3ed,0x9669d396,0xcf8c6bbe,0xb598dee2 +.long 0xdda9e5c6,0x682ac1e5,0xcaa9fc95,0x4e0d3c72,0x772bea44,0x17faaade,0xab0009c8,0x5ef8428c,0x460ff016,0xcc4ce47a,0x725281cb,0xda6d12bf,0x0223aad2,0x44c67848,0x36256e28,0x6e342afa +.long 0x93a37c04,0x1400bb0b,0xdd10bd96,0x62b1bc9b,0x0dac46b7,0x7251adeb,0x7be4ef51,0x7d33b92e,0xe61fa29a,0x28b2a94b,0x06422233,0x4b2be13f,0x330d8d37,0x36d6d062,0xb28ca005,0x5ef80e1e +.long 0x6d16768e,0x174d4699,0x628bf217,0x9fc4ff6a,0x154e490d,0x77705a94,0x8d2d997a,0x9d96dd28,0xce5d72c4,0x77e2d9d8,0xc11c714f,0x9d06c5a4,0x79e4a03e,0x02aa5136,0x030ff28b,0x1386b3c2 +.long 0xfb283f61,0xfe82e8a6,0xf3abc3fb,0x7df203e5,0x3a4d3622,0xeec7c351,0xdf762761,0xf7d17dbf,0x522055f0,0xc3956e44,0x8fa748db,0xde3012db,0xbf1dcc14,0xca9fcb63,0xbe4e2f3a,0xa56d9dcf +.long 0x8bcec9c2,0xb86186b6,0x680b9f06,0x7cf24df9,0xc0d29281,0xc46b45ea,0x07b10e12,0xfff42bc5,0x4d289427,0x12263c40,0xb4848ec4,0x3d5f1899,0xd040800c,0x11f97010,0x300feb20,0xb4c5f529 +.long 0xde94fdcb,0xcc543f8f,0xc7c2f05e,0xe96af739,0x882692e1,0xaa5e0036,0x950d4ae9,0x09c75b68,0xb5932a7a,0x62f63df2,0xde0979ad,0x2658252e,0xb5e69631,0x2a19343f,0x525b666b,0x718c7501 +.long 0xea40dc3a,0x26a42d69,0xaecc018f,0xdc84ad22,0x3270f04a,0x25c36c7b,0x50fa72ed,0x46ba6d47,0x93e58a8e,0x6c37d1c5,0x120c088c,0xa2394731,0xcb6e86da,0xc3be4263,0x7126d038,0x2c417d36 +.long 0x8b6f8efa,0x5b70f9c5,0x37718536,0x671a2faa,0xb539c92b,0xd3ced3c6,0xa31203c2,0xe56f1bd9,0x9ff3c8eb,0x8b096ec4,0x43491cea,0x2deae432,0x17943794,0x2465c6eb,0x20586843,0x5d267e66 +.long 0xb07159d0,0x9d3d116d,0xc1896210,0xae07a67f,0xbb961579,0x8fc84d87,0x1c1f8dd6,0x30009e49,0xe3132819,0x8a8caf22,0xf23ab4ff,0xcffa197c,0x205dd687,0x58103a44,0x0ded67a2,0x57b796c3 +.long 0xa1779ad7,0x0b9c3a6c,0x357c09c5,0xa33cfe2e,0x3db4a57e,0x2ea29315,0x8ebeb52e,0x91959695,0xe546c879,0x118db9a6,0x6295c8d6,0x8e996df4,0x55ec806b,0xdd990484,0x165c1035,0x24f291ca +.long 0x440e2229,0xcca523bb,0x73ef4d04,0x324673a2,0x3e11ec39,0xaf3adf34,0xdc5968d3,0x6136d7f1,0xb053a927,0x7a7b2899,0xae067ecd,0x3eaa2661,0x02779cd9,0x8549b9c8,0xc53385ea,0x061d7940 +.long 0xf06d18bd,0x3e0ba883,0xb2700843,0x4ba6de53,0x591a9e4d,0xb966b668,0x7f4fa0ed,0x93f67567,0x4347237b,0x5a02711b,0xe794608e,0xbc041e2f,0x70f73d8c,0x55af10f5,0xbb7564f7,0xd2d4d4f7 +.long 0xb3e93ce7,0xd7d27a89,0x5d3a2c1b,0xf7b5a875,0x255b218a,0xb29e68a0,0x8af76754,0xb533837e,0x579fab2e,0xd1b05a73,0xecd74385,0xb41055a1,0x445e9115,0xb2369274,0xf520274e,0x2972a7c4 +.long 0xf678e68a,0x6c08334e,0x99b057ed,0x4e4160f0,0x52ccb69a,0x3cfe11b8,0x21c8f772,0x2fd1823a,0x3298f055,0xdf7f072f,0xfec74a6e,0x8c0566f9,0x5bb4d041,0xe549e019,0x9208d850,0x7c3930ba +.long 0xaaa2902b,0xe07141fc,0xe4f69ad3,0x539ad799,0x813f9ffd,0xa6453f94,0x375bc2f7,0xc58d3c48,0x5dc64e96,0xb3326fad,0xb240e354,0x3aafcaa9,0xaca1e7a9,0x1d1b0903,0x1211b8a0,0x4ceb9767 +.long 0xe32a858e,0xeca83e49,0xae907bad,0x4c32892e,0x2eb9b494,0xd5b42ab6,0x1eabae1b,0x7fde3ee2,0xcaf54957,0x13b5ab09,0xe5f5d5d5,0xbfb028be,0x2003e2c0,0x928a0650,0x67476843,0x90793aac +.long 0xc81710a0,0x5e942e79,0x27ccadd4,0x557e4a36,0x4bcf6d0c,0x72a2bc56,0x26d7b80c,0x09ee5f43,0xd4292f19,0x6b70dbe9,0x63f16b18,0x56f74c26,0x35fbb42a,0xc23db0f7,0x6ae10040,0xb606bdf6 +.long 0x044573ac,0x1eb15d4d,0x556b0ba4,0x7dc3cf86,0xc60df6f7,0x97af9a33,0xa716ce8c,0x0b1ef85c,0xc96958be,0x2922f884,0x35690963,0x7c32fa94,0xeaa00061,0x2d7f667c,0x3547365c,0xeaaf7c17 +.long 0x87032d58,0x1eb4de46,0x5e2c79e0,0xc54f3d83,0x5d04ef23,0x07818df4,0x673d41b4,0x55faa9c8,0x89b95355,0xced64f6f,0xb7415c84,0x4860d2ea,0x050ebad3,0x5fdb9bd2,0x6685a5bf,0xdb53e0cc +.long 0x9feb6593,0xb830c031,0x6accff17,0xdd87f310,0x9f555c10,0x2303ebab,0x287e7065,0x94603695,0x2e83358c,0xf88311c3,0xeefb0178,0x508dd9b4,0x2dba8652,0x7ca23706,0x0047abe5,0x62aac5a3 +.long 0x8b1ea7b3,0x9a61d2a0,0xae8b1485,0xd495ab63,0x87052f99,0x38740f84,0xb2974eea,0x178ebe5b,0x5b36d17f,0x030bbcca,0xaaf86eea,0xb5e4cce3,0x68f8e9e0,0xb51a0220,0x09eb3e75,0xa4348796 +.long 0xeef1a752,0xbe592309,0x6f2aa1ed,0x5d7162d7,0x0f007dd2,0xaebfb5ed,0xc89edd22,0x255e14b2,0x0303b697,0xba85e072,0xf05720ff,0xc5d17e25,0x5128ebb6,0x02b58d6e,0xd754e113,0x2c80242d +.long 0xabfae1ca,0x919fca5f,0x1a21459b,0x937afaac,0x1f66a4d2,0x9e0ca91c,0x23ec1331,0x194cc7f3,0x8aa11690,0xad25143a,0x09b59e08,0xbe40ad8d,0xe750860a,0x37d60d9b,0xc6bf434c,0x6c53b008 +.long 0x1356eb80,0xb572415d,0x9578ded8,0xb8bf9da3,0x5e8fb38b,0x22658e36,0x5af8cb22,0x9b70ce22,0x829a8180,0x7c00018a,0xb81ed295,0x84329f93,0x5f3cea83,0x7c343ea2,0x67586536,0x38f8655f +.long 0x1d3ec517,0xa661a0d0,0x512321ae,0x98744652,0xeca92598,0x084ca591,0x1dcb3feb,0xa9bb9dc9,0x78b4c240,0x14c54355,0x610cafdc,0x5ed62a3b,0x1b38846b,0x07512f37,0xb0e38161,0x571bb70a +.long 0x2da705d2,0xb556b95b,0xb1a08f98,0x3ef8ada6,0xddecfbe5,0x85302ca7,0x943105cd,0x0e530573,0x21a9255d,0x60554d55,0xf2f3802a,0x63a32fa1,0xcd477875,0x35c8c5b0,0x6ad42da1,0x97f458ea +.long 0xeb6b242d,0x832d7080,0x3b71e246,0xd30bd023,0xbe31139d,0x7027991b,0x462e4e53,0x68797e91,0x6b4e185a,0x423fe20a,0x42d9b707,0x82f2c67e,0x4cf7811b,0x25c81768,0x045bb95d,0xbd53005e +.long 0x9d8e68fd,0xe5f649be,0x1b044320,0xdb0f0533,0xe0c33398,0xf6fde9b3,0x66c8cfae,0x92f4209b,0x1a739d4b,0xe9d1afcc,0xa28ab8de,0x09aea75f,0xeac6f1d0,0x14375fb5,0x708f7aa5,0x6420b560 +.long 0x6254dc41,0x9eae499c,0x7a837e7e,0x7e293924,0x090524a7,0x74aec08c,0x8d6f55f2,0xf82b9219,0x1402cec5,0x493c962e,0xfa2f30e7,0x9f17ca17,0xe9b879cb,0xbcd783e8,0x5a6f145f,0xea3d8c14 +.long 0x5e0dee6e,0xdede15e7,0xdc628aa2,0x74f24872,0x7861bb93,0xd3e9c4fe,0x6187b2e0,0x56d4822a,0xc59826f9,0xb66417cf,0x2408169e,0xca260969,0xc79ef885,0xedf69d06,0xdc7d138f,0x00031f8a +.long 0x0ebcf726,0x103c46e6,0x6231470e,0x4482b831,0x487c2109,0x6f6dfaca,0x62e666ef,0x2e0ace97,0x1f8d1f42,0x3246a9d3,0x574944d2,0x1b1e83f1,0xa57f334b,0x13dfa63a,0x9f025d81,0x0cf8daed +.long 0x00ee11c1,0x30d78ea8,0xb5e3dd75,0xeb053cd4,0xd58c43c5,0x9b65b13e,0xbd151663,0xc3ad49bd,0xb6427990,0x99fd8e41,0x707eae1e,0x12cf15bd,0x1aabb71e,0x29ad4f1b,0x07545d0e,0x5143e74d +.long 0xc88bdee1,0x30266336,0x5876767c,0x25f29306,0xc6731996,0x9c078571,0xed552951,0xc88690b2,0x852705b4,0x274f2c2d,0x4e09552d,0xb0bf8d44,0x986575d1,0x7628beeb,0x7f864651,0x407be238 +.long 0xa639fc6b,0x0e5e3049,0x86003625,0xe75c35d9,0x5dcc1646,0x0cf35bd8,0x6c26273a,0x8bcaced2,0xb5536742,0xe22ecf1d,0x1a9e068b,0x013dd897,0x8a7909c5,0x17f411cb,0x861dd506,0x5757ac98 +.long 0x1e935abb,0x85de1f0d,0x154de37a,0xdefd10b4,0x369cebb5,0xb8d9e392,0x761324be,0x54d5ef9b,0x74f17e26,0x4d6341ba,0x78c1dde4,0xc0a0e3c8,0x87d918fd,0xa6d77581,0x02ca3a13,0x66876015 +.long 0xf36658f0,0xc7313e9c,0x71f8057e,0xc433ef1c,0x1b6a835a,0x85326246,0x7c86394c,0xc8f05398,0xe983c4a1,0xff398cdf,0x03b7b931,0xbf5e8162,0xb7b9045b,0x93193c46,0xa4a6e46b,0x1e4ebf5d +.long 0x43a24fe7,0xf9942a60,0xffb3492b,0x29c1191e,0x902fde05,0x9f662449,0x6713c32d,0xc792a7ac,0xb737982c,0x2fd88ad8,0xa21e60e3,0x7e3a0319,0x7383591a,0x09b0de44,0x8310a456,0x6df141ee +.long 0xe6d6f471,0xaec1a039,0x1198d12e,0x14b2ba0f,0x3aeee5ac,0xebc1a160,0xe0b964ce,0x401f4836,0x4fd03f66,0x2ee43796,0xdd8f3f12,0x3fdb4e49,0x29380f18,0x6ef267f6,0x8da64d16,0x3e8e9670 +.long 0x207674f1,0xbc19180c,0x33ae8fdb,0x112e09a7,0x6aaeb71e,0x99667554,0xe101b1c7,0x79432af1,0xde2ddec6,0xd5eb558f,0x5357753f,0x81392d1f,0x3ae1158a,0xa7a76b97,0x4a899991,0x416fbbff +.long 0x0d4a9dcf,0x9e65fdfd,0x944ddf12,0x7bc29e48,0x3c856866,0xbc1a92d9,0x6e98dfe2,0x273c6905,0xcdfaa6b8,0x69fce418,0x5061c69f,0x606bd823,0x6af75e27,0x42d495a0,0x6d873a1f,0x8ed3d505 +.long 0x6ab25b6a,0xaf552841,0x2b1a4523,0xc6c0ffc7,0x21c99e03,0xab18827b,0x9034691b,0x060e8648,0x93c7f398,0x5207f90f,0x82f8d10b,0x9f4a96cb,0x3ad0f9e3,0xdd71cd79,0xfc3a54f5,0x84f435d2 +.long 0x8e33787f,0x4b03c55b,0xa6384673,0xef42f975,0x5051b9f0,0xff7304f7,0x741c87c2,0x18aca1dc,0x2d4bfe80,0x56f120a7,0x053e732c,0xfd823b3d,0x7537ca16,0x11bccfe4,0x1b5a996b,0xdf6c9c74 +.long 0x904fc3fa,0xee7332c7,0xc7e3636a,0x14a23f45,0xf091d9aa,0xc38659c3,0xb12d8540,0x4a995e5d,0xf3a5598a,0x20a53bec,0xb1eaa995,0x56534b17,0xbf04e03c,0x9ed3dca4,0xd8d56268,0x716c563a +.long 0x1d6178e7,0x27ba77a4,0x68a1ff8e,0xe4c80c40,0x0a13f63d,0x75011099,0xa61d46f3,0x7bf33521,0x10b365bb,0x0aff218e,0x0fd7ea75,0x81021804,0xa4b3a925,0x05a3fd8a,0x9b3db4e6,0xb829e75f +.long 0x4d53e5fb,0x6bdc75a5,0xd52717e3,0x04a5dc02,0xe9a42ec2,0x86af502f,0x2630e382,0x8867e8fb,0xbec9889b,0xbf845c6e,0xcb47c98d,0x54f491f2,0x790c2a12,0xa3091fba,0xc20f708b,0xd7f6fd78 +.long 0xacde5e17,0xa569ac30,0x6852b4d7,0xd0f996d0,0x4609ae54,0xe51d4bb5,0x0daed061,0x3fa37d17,0x34b8fb41,0x62a88684,0x9efb64f1,0x99a2acbd,0x6448e1f2,0xb75c1a5e,0x42b5a069,0xfa99951a +.long 0x2f3b26e7,0x6d956e89,0xda875247,0xf4709860,0x2482dda3,0x3ad15179,0x017d82f0,0xd64110e3,0xfad414e4,0x14928d2c,0x2ed02b24,0x2b155f58,0xcb821bf1,0x481a141b,0x4f81f5da,0x12e3c770 +.long 0x9fff8381,0xe49c5de5,0x5bbec894,0x11053232,0x454d88c4,0xa0d051cc,0x1f8e531b,0x4f6db89c,0xca563a44,0x34fe3fd6,0x58da8ab9,0x7f5c2215,0x9474f0a1,0x8445016d,0xcb7d8a0a,0x17d34d61 +.long 0x1c474019,0x8e9d3910,0xd52ceefb,0xcaff2629,0xc1622c2b,0xf9cf3e32,0xe9071a05,0xd4b95e3c,0x1594438c,0xfbbca61f,0x04aadedf,0x1eb6e6a6,0x68e14940,0x853027f4,0xdfabda9c,0x221d322a +.long 0xb7cb179a,0xed8ea9f6,0xb7934dcc,0xdc7b764d,0x5e09180d,0xfcb13940,0xb47dc2dd,0x6629a6bf,0x9f5a915e,0xbfc55e4e,0x6204441e,0xb1db9d37,0x930c5f53,0xf82d68cf,0xcbb605b1,0x17d3a142 +.long 0x308780f2,0xdd5944ea,0x3845f5e4,0xdc8de761,0x7624d7a3,0x6beaba7d,0x304df11e,0x1e709afd,0x02170456,0x95364376,0xc8f94b64,0xbf204b3a,0x5680ca68,0x4e53af7c,0xe0c67574,0x0526074a +.long 0xecd92af6,0x95d8cef8,0x6cd1745a,0xe6b9fa7a,0xa325c3e4,0x3d546d3d,0x9ae93aae,0x1f57691d,0x9d2e1a33,0xe891f3fe,0xac063d35,0xd430093f,0x5513a327,0xeda59b12,0x5536f18f,0xdc2134f3 +.long 0x5c210286,0xaa51fe2c,0x1cab658c,0x3f68aaee,0xf9357292,0x5a23a00b,0x7efdabed,0x9a626f39,0x199d78e3,0xfe2b3bf3,0x71bbc345,0xb7a2af77,0x1e59802c,0x3d19827a,0xb487a51c,0x823bbc15 +.long 0x99d0a422,0x856139f2,0xf456c6fb,0x9ac3df65,0x701f8bd6,0xaddf65c6,0x3758df87,0x149f321e,0x721b7eba,0xb1ecf714,0x31a3312a,0xe17df098,0xd5c4d581,0xdb2fd6ec,0x8fcea1b3,0xfd02996f +.long 0x7882f14f,0xe29fa63e,0x07c6cadc,0xc9f6dc35,0xb882bed0,0x46f22d6f,0xd118e52c,0x1a45755b,0x7c4608cf,0x9f2c7c27,0x568012c2,0x7ccbdf32,0x61729b0e,0xfcb0aedd,0xf7d75dbf,0x7ca2ca9e +.long 0x6f640f62,0xf58fecb1,0x39f51946,0xe274b92b,0x6288af44,0x7f4dfc04,0xeac329e5,0x0a91f32a,0xd6aaba31,0x43ad274b,0x0f6884f9,0x719a1640,0xdaf91e20,0x685d29f6,0x27e49d52,0x5ec1cc33 +.long 0x3b54a059,0x38f4de96,0xefbcfdb3,0x0e0015e5,0x4dbb8da6,0x177d23d9,0x97a617ad,0x98724aa2,0xfdb6558e,0x30f0885b,0xc7899a96,0xf9f7a28a,0x872dc112,0xd2ae8ac8,0x73c3c459,0xfa0642ca +.long 0xe7dfc8d6,0x15296981,0x1fb5b94a,0x67cd4450,0x0eddfd37,0x0ec71cf1,0x9a8eddc7,0xc7e5eeb3,0x81d95028,0x02ac8e3d,0x70b0e35d,0x0088f172,0xe1881fe3,0xec041fab,0xd99e7faa,0x62cf71b8 +.long 0xe0f222c2,0x5043dea7,0x72e65142,0x309d42ac,0x9216cd30,0x94fe9ddd,0x0f87feec,0xd6539c7d,0x432ac7d7,0x03c5a57c,0x327fda10,0x72692cf0,0x280698de,0xec28c85f,0x7ec283b1,0x2331fb46 +.long 0x2867e633,0xd34bfa32,0x0a9cc815,0x78709a82,0x875e2fa5,0xb7fe6964,0x9e98bfb5,0x25cc064f,0x493a65c5,0x9eb0151c,0x53182464,0x5fb5d941,0xf04618e2,0x69e6f130,0xf89c8ab6,0xa8ecec22 +.long 0xb96209bd,0xcd6ac88b,0xb3e1c9e0,0x65fa8cdb,0x4a8d8eac,0xa47d22f5,0x8d33f963,0x83895cdf,0xb56cd3d1,0xa8adca59,0xdaf38232,0x10c8350b,0xa5080a9f,0x2b161fb3,0x3af65b3a,0xbe7f5c64 +.long 0x97403a11,0x2c754039,0x121b96af,0x94626cf7,0x6a983ec2,0x431de7c4,0x52cc3df7,0x3780dd3a,0x2baf8e3b,0xe28a0e46,0x51d299ae,0xabe68aad,0x647a2408,0x603eb8f9,0x5c750981,0x14c61ed6 +.long 0xc53352e7,0x88b34414,0x1337d46e,0x5a34889c,0xf95f2bc8,0x612c1560,0xd4807a3a,0x8a3f8441,0x5224da68,0x680d9e97,0xc3eb00e9,0x60cd6e88,0x9a6bc375,0x3875a98e,0x4fd554c2,0xdc80f924 +.long 0x6ac77407,0x6c4b3415,0x25420681,0xa1e5ea8f,0x4607a458,0x541bfa14,0x96d7fbf9,0x5dbc7e7a,0x31590a47,0x646a851b,0x15ee6df8,0x039e85ba,0xd7b43fc0,0xd19fa231,0x299a0e04,0x84bc8be8 +.long 0xf20df03a,0x2b9d2936,0x8608d472,0x24054382,0x9149202a,0x76b6ba04,0x3670e7b7,0xb21c3831,0xd6fdee10,0xddd93059,0x78488e71,0x9da47ad3,0xa0fcfb25,0x99cc1dfd,0x64696954,0x42abde10 +.long 0x17eab9fe,0x14cc15fc,0xd3e70972,0xd6e863e4,0x6432112c,0x29a7765c,0x5b0774d8,0x88660001,0x2c088eae,0x3729175a,0x8230b8d4,0x13afbcae,0x915f4379,0x44768151,0xd8d22812,0xf086431a +.long 0xc298b974,0x37461955,0xf8711e04,0x905fb5f0,0xfe969d18,0x787abf3a,0x6f6a494e,0x392167c2,0x28c511da,0xfc7a0d2d,0xb66a262d,0xf127c7dc,0xfd63fdf0,0xf9c4bb95,0x3913ef46,0x90016589 +.long 0x11aa600d,0x74d2a73c,0x9fb5ab52,0x2f5379bd,0x7fb70068,0xe49e53a4,0x404aa9a7,0x68dd39e5,0x2ecaa9c3,0xb9b0cf57,0xe824826b,0xba0e103b,0x4631a3c4,0x60c2198b,0xfa8966a2,0xc5ff84ab +.long 0xac95aff8,0x2d6ebe22,0xb5a46d09,0x1c9bb6db,0x53ee4f8d,0x419062da,0xbb97efef,0x7b9042d0,0x830cf6bd,0x0f87f080,0x6ec8a6c6,0x4861d19a,0x202f01aa,0xd3a0daa1,0xf25afbd5,0xb0111674 +.long 0x1afb20d9,0x6d00d6cf,0x40671bc5,0x13695000,0x2485ea9b,0x913ab0dc,0x9eef61ac,0x1f2bed06,0x6d799e20,0x850c8217,0x3271c2de,0x93415f37,0x6c4f5910,0x5afb06e9,0xc4e9e421,0x688a52df +.long 0xe2a9a6db,0x30495ba3,0x58f9268b,0x4601303d,0x7eb0f04f,0xbe3b0dad,0x4456936d,0x4ea47250,0xd33fd3e7,0x8caf8798,0xeb433708,0x1ccd8a89,0x87fd50ad,0x9effe3e8,0x6b29c4df,0xbe240a56 +.long 0xca0e7ebd,0xec4ffd98,0xe748616e,0xf586783a,0xc77baa99,0xa5b00d8f,0xb4f34c9c,0x0acada29,0x0fe723ac,0x36dad67d,0x39c36c1e,0x1d8e53a5,0x1f4bea41,0xe4dd342d,0xebc9e4e0,0x64fd5e35 +.long 0x57908805,0x96f01f90,0x5ed480dd,0xb5b9ea3d,0x3efd2dd0,0x366c5dc2,0x6e9dfa27,0xed2fe305,0x6e9197e2,0x4575e892,0xab502a5d,0x11719c09,0xe81f213f,0x264c7bec,0x55f5c457,0x741b9241 +.long 0x49a5f4f4,0x78ac7b68,0x9fc45b7d,0xf91d70a2,0xb0f5f355,0x39b05544,0xeef930d9,0x11f06bce,0x038d05e1,0xdb84d25d,0xbacc1d51,0x04838ee5,0x9e8ee00b,0x9da3ce86,0xc36eda1f,0xc3412057 +.long 0x64d9c2f4,0xae80b913,0xa010a8ff,0x7468bac3,0x37359d41,0xdfd20037,0x15efeacc,0x1a0f5ab8,0x659d0ce0,0x7c25ad2f,0x6785cff1,0x4011bcbb,0x7e2192c7,0x128b9912,0x13ccb0e8,0xa549d8e1 +.long 0xc85438b1,0x805588d8,0xbc25cb27,0x5680332d,0x1a4bfdf4,0xdcd1bc96,0x706f6566,0x779ff428,0xf059987a,0x8bbee998,0xcc686de7,0xf6ce8cf2,0x953cfdb2,0xf8ad3c4a,0x2205da36,0xd1d426d9 +.long 0xc781a241,0xb3c0f13f,0xd75362a8,0x3e89360e,0xc8a91184,0xccd05863,0xefa8a7f4,0x9bd0c9b7,0x8a912a4b,0x97ee4d53,0xbcf518fd,0xde5e15f8,0xc467e1e0,0x6a055bf8,0x1587e256,0x10be4b4b +.long 0x668621c9,0xd90c14f2,0xab9c92c1,0xd5518f51,0xd6d47b3c,0x8e6a0100,0x66716175,0xcbe980dd,0xddd83683,0x500d3f10,0x99cac73c,0x3b6cb35d,0x6083d550,0x53730c8b,0xdf0a1987,0xcf159767 +.long 0x43ad73b3,0x84bfcf53,0x4f035a94,0x1b528c20,0x33eeac69,0x4294edf7,0x817f3240,0xb6283e83,0x0a5f25b1,0xc3fdc959,0x5844ee22,0xefaf8aa5,0xdbdde4de,0xde269ba5,0xc56133bf,0xe3347160 +.long 0x8d9ea9f8,0xc1184219,0xf3fc1ab5,0x090de5db,0x0bf22cda,0x404c37b1,0xf5618894,0x7de20ec8,0xecdaecab,0x754c588e,0x88342743,0x6ca4b0ed,0xf4a938ec,0x76f08bdd,0x91493ccb,0xd182de89 +.long 0xc8a4186a,0xd652c53e,0x946d8e33,0xb3e878db,0x5f37663c,0x088453c0,0xb407748b,0x5cd9daaa,0x586d5e72,0xa1f5197f,0xc443ca59,0x47500be8,0xe2652424,0x78ef35b2,0x6dd7767d,0x09c5d26f +.long 0xa74d3f7b,0x7175a79a,0xcf5ea459,0x0428fd8d,0xa5d1746d,0x511cb97c,0xe71d1278,0x36363939,0x10350bf4,0xcf2df955,0x60aae782,0xb3817439,0x3e688809,0xa748c0e4,0xd7a5a006,0x98021fbf +.long 0x0e367a98,0x9076a70c,0x0f62b7c2,0xbea1bc15,0x30fe0343,0x2645a68c,0x699dc14f,0xacaffa78,0x457bf9c4,0xf4469964,0x0d2ead83,0x0db6407b,0xb2c6f3eb,0x68d56cad,0xf376356c,0x3b512e73 +.long 0xfce10408,0xe43b0e1f,0x5a5e257d,0x89ddc003,0x0362e5b3,0xb0ae0d12,0xb0519161,0x07f983c7,0x5d5231e7,0xc2e94d15,0x0b4f9513,0xcff22aed,0x6ad0b0b5,0xb02588dd,0x11d0dcd5,0xb967d1ac +.long 0xcf777b6c,0x8dac6bc6,0x4c6d1959,0x0062bdbd,0x0ef5cc85,0x53da71b5,0x4006f14f,0x07012c7d,0xac47800d,0x4617f962,0xc102ed75,0x53365f2b,0x4ab8c9d3,0xb422efcb,0x34af31c9,0x195cb26b +.long 0x05f2c4ce,0x3a926e29,0x9856966c,0xbd2bdecb,0x85527015,0x5d16ab3a,0x4486c231,0x9f81609e,0xda350002,0xd8b96b2c,0xfa1b7d36,0xbd054690,0xe71d79bc,0xdc90ebf5,0x08964e4e,0xf241b6f9 +.long 0x2fe3cd4c,0x7c838643,0xb4bc633c,0xe0f33acb,0x3d139f1f,0xb4a9ecec,0xdc4a1f49,0x05ce69cd,0xf5f98aaf,0xa19d1b16,0x6f23e0ef,0x45bb71d6,0x46cdfdd3,0x33789fcd,0xcee040ca,0x9b8e2978 +.long 0xae0a6828,0x9c69b246,0x7078d5aa,0xba533d24,0x7bb4fbdb,0x7a2e42c0,0x7035385c,0xcfb4879a,0x3281705b,0x8c3dd30b,0x404fe081,0x7e361c6c,0x3f604edf,0x7b21649c,0xe52ffe47,0x5dbf6a3f +.long 0x4b54d9bf,0xc41b7c23,0x3511c3d9,0x1374e681,0xc1b2b758,0x1863bf16,0x1e9e6a96,0x90e78507,0x5d86f174,0xab4bf98d,0x85e96fe4,0xd74e0bd3,0xcac5d344,0x8afde39f,0xbd91b847,0x90946dbc +.long 0xfe1a838c,0xf5b42358,0x620ac9d8,0x05aae6c5,0xa1ce5a0b,0x8e193bd8,0x4dabfd72,0x8f710571,0x182caaac,0x8d8fdd48,0x040745cf,0x8c4aeefa,0xf3b93e6d,0x73c6c30a,0x16f42011,0x991241f3 +.long 0xe457a477,0xa0158eea,0xee6ddc05,0xd19857db,0x18c41671,0xb3265224,0x3c2c0d58,0x3ffdfc7e,0x26ee7cda,0x3a3a5254,0xdf02c3a8,0x341b0869,0x723bbfc8,0xa023bf42,0x14452691,0x3d15002a +.long 0x85edfa30,0x5ef7324c,0x87d4f3da,0x25976554,0xdcb50c86,0x352f5bc0,0x4832a96c,0x8f6927b0,0x55f2f94c,0xd08ee1ba,0x344b45fa,0x6a996f99,0xa8aa455d,0xe133cb8d,0x758dc1f7,0x5d0721ec +.long 0x79e5fb67,0x6ba7a920,0x70aa725e,0xe1331feb,0x7df5d837,0x5080ccf5,0x7ff72e21,0xe4cae01d,0x0412a77d,0xd9243ee6,0xdf449025,0x06ff7cac,0x23ef5a31,0xbe75f7cd,0x0ddef7a8,0xbc957822 +.long 0xb0ce1c55,0x8cf7230c,0x0bbfb607,0x5b534d05,0x0e16363b,0xee1ef113,0xb4999e82,0x27e0aa7a,0x79362c41,0xce1dac2d,0x91bb6cb0,0x67920c90,0x2223df24,0x1e648d63,0xe32e8f28,0x0f7d9eef +.long 0xfa833834,0x6943f39a,0xa6328562,0x22951722,0x4170fc10,0x81d63dd5,0xaecc2e6d,0x9f5fa58f,0xe77d9a3b,0xb66c8725,0x6384ebe0,0x11235cea,0x5845e24a,0x06a8c118,0xebd093b1,0x0137b286 +.long 0x44ace150,0xc589e1ce,0x4381e97c,0xe0f8d3d9,0x62c5a4b8,0x59e99b11,0xfd0ec9f9,0x90d262f7,0x283e13c9,0xfbc854c9,0xaedc7085,0x2d04fde7,0x47dcbecb,0x057d7765,0x9a76fa5f,0x8dbdf591 +.long 0x0de1e578,0xd0150695,0xe9f72bc6,0x2e1463e7,0x1b39eca5,0xffa68441,0x7c037f2f,0x673c8530,0x747f91da,0xd0d6a600,0xc9cb78e9,0xb08d43e1,0x27b5cef5,0x0fc0c644,0xa60a2fd6,0x5c1d160a +.long 0x28c8e13b,0xf98cae53,0xb2eddcd1,0x375f10c4,0x5cce06ad,0xd4eb8b7f,0x80a2e1ef,0xb4669f45,0x5bbd8699,0xd593f9d0,0xe7976d13,0x5528a4c9,0x1c7e28d3,0x3923e095,0x3f6bb577,0xb9293790 +.long 0xc42bd6d2,0xdb567d6a,0xbb1f96ae,0x6df86468,0x4843b28e,0x0efe5b1a,0x6379b240,0x961bbb05,0x70a6a26b,0xb6caf5f0,0x328e6e39,0x70686c0d,0x895fc8d3,0x80da06cf,0xb363fdc9,0x804d8810 +.long 0x207f1670,0xbe22877b,0x4e615291,0x9b0dd188,0x97a3c2bf,0x625ae8dc,0x439b86e8,0x08584ef7,0xdcd898ff,0xde7190a5,0x2058ee3d,0x26286c40,0x5f87b1c1,0x3db0b217,0x102a6db5,0xcc334771 +.long 0x2f770fb1,0xd99de954,0x4cd7535e,0x97c1c620,0x3f09cefc,0xd3b6c448,0x5a63b4f8,0xd725af15,0xc01e20ec,0x0c95d24f,0x9ae7121f,0xdfd37494,0xec77b7ec,0x7d6ddb72,0x0353a4ae,0xfe079d3b +.long 0x2e6ac8d2,0x3066e70a,0x106e5c05,0x9c6b5a43,0xede59b8c,0x52d3c6f5,0xfccec9ae,0x30d6a5c3,0x4fc0a9ef,0xedec7c22,0x95c16ced,0x190ff083,0x94de0fde,0xbe12ec8f,0x852d3433,0x0d131ab8 +.long 0x85701291,0x42ace07e,0x194061a8,0x94793ed9,0xd7f4a485,0x30e83ed6,0xf9eeff4d,0x9eec7269,0x0c9d8005,0x90acba59,0x1e79b9d1,0x5feca458,0x1d506a1e,0x8fbe5427,0x2439cfa7,0xa32b2c8e +.long 0x73dd0b4e,0x1671c173,0x44a054c6,0x37a28214,0x4e8b53f1,0x81760a1b,0xf9f93b9e,0xa6c04224,0xcf671e3c,0x18784b34,0xcda9b994,0x81bbecd2,0xb2ab3848,0x38831979,0xf2e03c2d,0xef54feb7 +.long 0xfb8088fa,0xcf197ca7,0x4ddc96c5,0x01427247,0x30777176,0xa2d2550a,0x4d0cf71d,0x53469898,0x3a2aaac6,0x6ce937b8,0x5af38d9b,0xe9f91dc3,0xc8bf2899,0x2598ad83,0xb5536c16,0x8e706ac9 +.long 0xf688dc98,0x40dc7495,0x124c4afc,0x26490cd7,0x1f18775c,0xe651ec84,0xb4fdaf4a,0x393ea6c3,0x7f338e0d,0x1e1f3343,0x6053e7b5,0x39fb832b,0x619e14d5,0x46e702da,0xcdeef6e0,0x859cacd1 +.long 0x4462007d,0x63b99ce7,0x4cb5f5b7,0xb8ab48a5,0xf55edde7,0x9ec673d2,0x8cfaefda,0xd1567f74,0x0887bcec,0x46381b6b,0xe178f3c2,0x694497ce,0x1e6266cb,0x5e6525e3,0x697d6413,0x5931de26 +.long 0x0e58d493,0x87f8df7c,0x58b73f12,0xb1ae5ed0,0xdea0c34d,0xc368f784,0x859a91a0,0x9bd0a120,0xcc863c68,0xb00d88b7,0x3d1f4d65,0x3a1cc11e,0x0aa85593,0xea38e0e7,0x7dc4aee8,0x37f13e98 +.long 0xbc947bad,0x10d38667,0x2a36ee2e,0x738e07ce,0xc577fcac,0xc93470cd,0x2782470d,0xdee1b616,0x2e793d12,0x36a25e67,0xe0f186da,0xd6aa6cae,0x80e07af7,0x474d0fd9,0xba8a5cd4,0xf7cdc47d +.long 0xab15247f,0x28af6d9d,0x493a537f,0x7c789c10,0x23a334e7,0x7ac9b110,0x12c9c277,0x0236ac09,0x1d7a5144,0xa7e5bd25,0xf13ec4ec,0x098b9c2a,0xd3f0abca,0x3639daca,0xa23960f9,0x642da81a +.long 0x4f7269b1,0x7d2e5c05,0xe287c385,0xfcf30777,0xf2a46f21,0x10edc84f,0x4f43fa36,0x35441757,0xfd703431,0xf1327899,0x16dd587a,0xa438d7a6,0xe9c8352d,0x65c34c57,0x5cc5a24e,0xa728edab +.long 0x42531689,0xaed78abc,0x010963ef,0x0a51a0e8,0xd717d9b3,0x5776fa0a,0x7dd3428b,0xf356c239,0x8d3a3dac,0x29903fff,0x3d94491f,0x409597fa,0xbf4a56a4,0x4cd7a5ff,0x8adab462,0xe5096474 +.long 0x5c3427b0,0xa97b5126,0xd282c9bd,0x6401405c,0x222c5c45,0x3629f8d7,0xe8d50aed,0xb1c02c16,0xd9635bc9,0xbea2ed75,0x6e24552f,0x226790c7,0x65f1d066,0x3c33f2a3,0x6dfccc2e,0x2a43463e +.long 0xdb483761,0x8cc3453a,0x65d5672b,0xe7cc6085,0xde3efc87,0x277ed6cb,0x69234eaf,0x19f2f368,0x5c0b800b,0x9aaf4317,0x8b6da6e2,0x1f1e7c89,0xb94ec75e,0x6cfb4715,0x453118c2,0xd590dd5f +.long 0x1f17a34c,0x14e49da1,0x235a1456,0x5420ab39,0x2f50363b,0xb7637241,0xc3fabb6e,0x7b15d623,0xe274e49c,0xa0ef40b1,0x96b1860a,0x5cf50744,0x66afe5a4,0xd6583fbf,0xf47e3e9a,0x44240510 +.long 0x11b2d595,0x99254343,0xeec8df57,0xf1367499,0x3e73dd05,0x3cb12c61,0x7dac102a,0xd248c033,0xa77739f5,0xcf154f13,0x23d2af42,0xbf4288cb,0x32e4a1cf,0xaa64c9b6,0xc8a208f3,0xee8c07a8 +.long 0x6fe8393f,0xe10d4999,0xe91f3a32,0x0f809a3f,0x802f63c8,0x61096d1c,0x57750d3d,0x289e1462,0x9889feea,0xed06167e,0xe0993909,0xd5c9c0e2,0x56508ac6,0x46fca0d8,0x4f1b8e83,0x91826047 +.long 0x9a4a2751,0x4f2c877a,0xcae6fead,0x71bd0072,0x06aa1941,0x38df8dcc,0x63beeaa8,0x5a074b4c,0xc1cec8ed,0xd6d65934,0xaabc03bd,0xa6ecb49e,0xde8a8415,0xaade91c2,0x691136e0,0xcfb0efdf +.long 0x23ab3495,0x11af45ee,0x0b77463d,0xa132df88,0x815d06f4,0x8923c15c,0x0d61a436,0xc3ceb3f5,0xe88fb1da,0xaf52291d,0x1da12179,0xea057974,0xd2fef720,0xb0d7218c,0x8e1d8845,0x6c0899c9 +.long 0x752ddad7,0x98157504,0xa1a68a97,0xd60bd74f,0xf658fb99,0x7047a3a9,0x5f8511e4,0x1f5d86d6,0x4b5a6d88,0xb8a4bc42,0x1abefa7d,0x69eb2c33,0x13c9c510,0x95bf39e8,0xd48aab43,0xf571960a +.long 0x704e23c6,0x7e8cfbcf,0x28aaa65b,0xc71b7d22,0x245e3c83,0xa041b2bd,0xd21854ff,0x69b98834,0x963bfeec,0x89d227a3,0xde7da7cb,0x99947aaa,0xee68a9b1,0x1d9ee9db,0x698ec368,0x0a08f003 +.long 0x78ef2487,0xe9ea4094,0x02cfec26,0xc8d2d415,0xb7dcf328,0xc52f9a6e,0x85b6a937,0x0ed489e3,0xbef3366e,0x9b94986b,0xedddddb8,0x0de59c70,0xeadddbe2,0xffdb748c,0x8266ea40,0x9b9784bb +.long 0x1a93507a,0x142b5502,0x8d3c06cf,0xb4cd1187,0x91ec3f40,0xdf70e76a,0x4e7553c2,0x484e81ad,0x272e9d6e,0x830f87b5,0xc6ff514a,0xea1c93e5,0xc4192a8e,0x67cc2adc,0x42f4535a,0xc77e27e2 +.long 0xd2b713c5,0x9cdbab36,0xcf7b0cd3,0x86274ea0,0x09af826b,0x784680f3,0x0c72dea3,0xbfcc837a,0xd6529b73,0xa8bdfe9d,0x63a88002,0x708aa228,0xc91d45b9,0x6c7a9a54,0xfd004f56,0xdf1a38bb +.long 0xb8bad853,0x2e8c9a26,0x3723eae7,0x2d52cea3,0x56ca2830,0x054d6d81,0x9a8dc411,0xa3317d14,0xfd4ddeda,0xa08662fe,0xb55d792b,0xed2a153a,0xbfc6e944,0x7035c16a,0x00171cf3,0xb6bc5834 +.long 0x83d102b6,0xe27152b3,0x0646b848,0xfe695a47,0x916e6d37,0xa5bb09d8,0x0d17015e,0xb4269d64,0x0a1d2285,0x8d8156a1,0x46d26d72,0xfeef6c51,0x4c5434a7,0x9dac57c8,0x59d39e31,0x0282e5be +.long 0x721c486d,0xedfff181,0xbc58824e,0x301baf10,0x00570031,0x8136a6aa,0x1cddde68,0x55aaf78c,0x59c63952,0x26829371,0x8bc25baf,0x3a3bd274,0xb7e52dc3,0xecdf8657,0xfd78e6c8,0x2dd8c087 +.long 0xf5531461,0x20553274,0x5d95499b,0x8b4a1281,0x1a80f9d2,0xe2c8763a,0x4ddec758,0xd1dbe32b,0x30c34169,0xaf12210d,0x78baa533,0xba74a953,0xa438f254,0x3d133c6e,0x201bef5b,0xa431531a +.long 0xf669d7ec,0x15295e22,0x357fb515,0xca374f64,0xeaa3fdb3,0x8a8406ff,0xdf3f2da8,0x106ae448,0x33c8e9a1,0x8f9b0a90,0x71ad5885,0x234645e2,0x1c0aed14,0x3d083224,0x7a942d46,0xf10a7d3e +.long 0x40d5c9be,0x7c11deee,0xba84ed98,0xb2bae7ff,0xaad58ddd,0x93e97139,0x3f6d1fa3,0x3d872796,0x8569ff13,0x483aca81,0x9a600f72,0x8b89a5fb,0xc06f2b86,0x4cbc27c3,0x63ad9c0b,0x22130713 +.long 0x48ac2840,0xb5358b1e,0xecba9477,0x18311294,0xa6946b43,0xda58f990,0x9ab41819,0x3098baf9,0x4198da52,0x66c4c158,0x146bfd1b,0xab4fc17c,0xbf36a908,0x2f0a4c3c,0x58cf7838,0x2ae9e34b +.long 0x3fa11b1f,0xf411529e,0x974af2b4,0x21e43677,0xc230793b,0x7c20958e,0x16e840f3,0x710ea885,0xc5dc67cf,0xfc0b21fc,0x88405718,0x08d51647,0xcfe49eb7,0xd955c21f,0x56dd4a1f,0x9722a5d5 +.long 0xc861baa5,0xc9ef50e2,0x9505ac3e,0xc0c21a5d,0x8b7c063f,0xaf6b9a33,0x2f4779c1,0xc6370339,0x638167c3,0x22df99c7,0x795db30c,0xfe6ffe76,0xa4854989,0x2b822d33,0x30563aa5,0xfef031dd +.long 0xd57c667f,0x16b09f82,0xcc0b76f1,0xc70312ce,0xc9118aec,0xbf04a9e6,0x3409d133,0x82fcb419,0xab45d44d,0x1a8ab385,0x617b83a3,0xfba07222,0x58e81b52,0xb05f50dd,0x21ce5aff,0x1d8db553 +.long 0xe344a873,0x3097b8d4,0xfe36d53e,0x7d8d116d,0x7875e750,0x6db22f58,0x43e144ea,0x2dc5e373,0xe799eb95,0xc05f32e6,0x6899e6ec,0xe9e5f4df,0x1fab23d5,0xbdc3bd68,0x73af60e6,0xb72b8ab7 +.long 0x2cecc84a,0x8db27ae0,0x7bdb871c,0x600016d8,0xd7c46f58,0x42a44b13,0xc3a77d39,0xb8919727,0xdafd6088,0xcfc6bbbd,0x6bd20d39,0x1a740146,0x98c41072,0x8c747abd,0xbdf68ea1,0x4c91e765 +.long 0x08819a78,0x7c95e5ca,0xc9587921,0xcf48b729,0xdebbcc7d,0x091c7c5f,0xf0e05149,0x6f287404,0x26cd44ec,0xf83b5ac2,0xcfea250e,0x88ae32a6,0x1d06ebc5,0x6ac5047a,0xd434f781,0xc7e550b4 +.long 0x5c727bd2,0x61ab1cf2,0x1cf915b0,0x2e4badb1,0xf69d3920,0x1b4dadec,0xf14c1dfe,0xe61b1ca6,0xbd6bd51f,0x90b479cc,0x8045ec30,0x8024e401,0x25ef0e62,0xcab29ca3,0x49e4ebc0,0x4f2e9416 +.long 0x0ccced58,0x45eb40ec,0x0da44f98,0x25cd4b9c,0x871812c6,0x43e06458,0x16cef651,0x99f80d55,0xce6dc153,0x571340c9,0xd8665521,0x138d5117,0x4e07014d,0xacdb45bc,0x84b60b91,0x2f34bb38 +.long 0x2ae8921e,0xf44a4fd2,0x892ba1e2,0xb039288e,0xb1c180b2,0x9da50174,0x1693dc87,0x6b70ab66,0xe7057481,0x7e9babc9,0x9c80dc41,0x4581ddef,0x51294682,0x0c890da9,0x3f4736e5,0x0b5629d3 +.long 0xb06f5b41,0x2340c79e,0x4e243469,0xa42e84ce,0x045a71a9,0xf9a20135,0xd27b6fb6,0xefbfb415,0x9d33cd6f,0x25ebea23,0xaa6c0af8,0x9caedb88,0xd9ce6f96,0x53dc7e9a,0x51e0b15a,0x3897f9fd +.long 0x8e5d788e,0xf51cb1f8,0xe1d490ee,0x1aec7ba8,0xcc58cb3c,0x265991e0,0x9fc3ad31,0x9f306e8c,0x5040a0ac,0x5fed006e,0xfb476f2e,0xca9d5043,0xbeea7a23,0xa19c06e8,0x0edabb63,0xd2865801 +.long 0x6967469a,0xdb92293f,0x8d8a8ed8,0x2894d839,0xbbc77122,0x87c9e406,0x2ea3a26a,0x8671c6f1,0xd7de9853,0xe42df8d6,0xb1f2bcc7,0x2e3ce346,0x899d50cf,0xda601dfc,0xfb1b598f,0xbfc913de +.long 0xe61f7908,0x81c4909f,0x9bbc7b29,0x192e304f,0xc104b338,0xc3ed8738,0x783f5d61,0xedbe9e47,0x2db30660,0x0c06e9be,0xc0eb7d8e,0xda3e613f,0x322e096e,0xd8fa3e97,0xd336e247,0xfebd91e8 +.long 0xdf655a49,0x8f13ccc4,0x5eb20210,0xa9e00dfc,0xc656b6ea,0x84631d0f,0xd8c0d947,0x93a058cd,0x67bd3448,0x6846904a,0xf394fd5c,0x4a3d4e1a,0xdb225f52,0xc102c1a5,0xfc4f5e9a,0xe3455bba +.long 0x4b9ad1ce,0x6b36985b,0x5bb7f793,0xa9818536,0x48b1a416,0x6c25e1d0,0x3c81bee7,0x1381dd53,0x7a4a7620,0xd2a30d61,0x39b8944c,0xc8412926,0x7a97c33a,0x3c1c6fbe,0x938664e7,0x941e541d +.long 0x4a34f239,0x417499e8,0xb90402d5,0x15fdb83c,0x433aa832,0xb75f46bf,0x63215db1,0xb61e15af,0xa127f89a,0xaabe59d4,0x07e816da,0x5d541e0c,0xa618b692,0xaaba0659,0x17266026,0x55327733 +.long 0x95f57552,0xaf53a0fc,0x6cacb0c9,0x32947650,0xc821be01,0x253ff58d,0xa06f1146,0xb0309531,0x05c2e54d,0x59bbbdf5,0x26e8dd22,0x158f27ad,0x397e1e53,0xcc5b7ffb,0x7fc1e50d,0xae03f65b +.long 0x9c95f0f9,0xa9784ebd,0x24640771,0x5ed9deb2,0x035561c4,0x31244af7,0x7ee857de,0x87332f3a,0x2b9e0d88,0x09e16e9e,0x56a06049,0x52d910f4,0xa9592f48,0x507ed477,0x2365d678,0x85cb917b +.long 0x4c8998d1,0xf8511c93,0x730ea58f,0x2186a3f1,0xb2029db0,0x50189626,0x02ceb75a,0x9137a6d9,0x748bc82c,0x2fe17f37,0x80469f8c,0x87c2e931,0xbf891aa2,0x850f71cd,0x75ec3d8d,0x0ca1b89b +.long 0x5e1cd3cd,0x516c43aa,0x9a887c28,0x89397808,0xddea1f9f,0x0059c699,0x8e6868f7,0x7737d6fa,0x60f1524b,0x6d93746a,0xba052aa7,0x36985e55,0xed923ea5,0x41b1d322,0x25852a11,0x3429759f +.long 0x092e9f41,0xbeca6ec3,0x62256bbd,0x3a238c66,0x70ad487d,0xd82958ea,0x65610d93,0x4ac8aaf9,0x5e4ccab0,0x3fa101b1,0x9de14bfb,0x9bf430f2,0x6531899d,0xa10f5cc6,0xea8ce17d,0x590005fb +.long 0x24544cb6,0xc437912f,0xd79ac2e3,0x9987b71a,0xc058a212,0x13e3d9dd,0xd2de9606,0x00075aac,0x6cac8369,0x80ab508b,0xf54f6c89,0x87842be7,0x6bc532a4,0xa7ad663d,0x78a91bc8,0x67813de7 +.long 0xc3427239,0x5dcb61ce,0xc56934d9,0x5f3c7cf0,0xe3191591,0xc079e0fb,0xb01aada7,0xe40896bd,0x0492d25f,0x8d466791,0xe7408276,0x8aeb30c9,0x9287aacc,0xe9437495,0x79fe03d4,0x23d4708d +.long 0xd0c05199,0x8cda9cf2,0xfae78454,0x502fbc22,0xf572a182,0xc0bda9df,0x6158b372,0x5f9b71b8,0x2b82dd07,0xe0f33a59,0x9523032e,0x76302735,0xc4505a32,0x7fe1a721,0xf796409f,0x7b6e3e82 +.long 0x35d0b34a,0xe3417bc0,0x8327c0a7,0x440b386b,0xac0362d1,0x8fb7262d,0xe0cdf943,0x2c41114c,0xad95a0b1,0x2ba5cef1,0x67d54362,0xc09b37a8,0x01e486c9,0x26d6cdd2,0x42ff9297,0x20477abf +.long 0x292a9287,0xa004dcb3,0x77b092c7,0xddc15cf6,0x806c0605,0x083a8464,0x3db997b0,0x4a68df70,0x05bf7dd0,0x9c134e45,0x8ccf7f8c,0xa4e63d39,0x41b5f8af,0xa6e6517f,0xad7bc1cc,0xaa8b9342 +.long 0x1e706ad9,0x126f35b5,0xc3a9ebdf,0xb99cebb4,0xbf608d90,0xa75389af,0xc6c89858,0x76113c4f,0x97e2b5aa,0x80de8eb0,0x63b91304,0x7e1022cc,0x6ccc066c,0x3bdab605,0xb2edf900,0x33cbb144 +.long 0x7af715d2,0xc4176471,0xd0134a96,0xe2f7f594,0xa41ec956,0x2c1873ef,0x77821304,0xe4e7b4f6,0x88d5374a,0xe5c8ff97,0x80823d5b,0x2b915e63,0xb2ee8fe2,0xea6bc755,0xe7112651,0x6657624c +.long 0xdace5aca,0x157af101,0x11a6a267,0xc4fdbcf2,0xc49c8609,0xdaddf340,0xe9604a65,0x97e49f52,0x937e2ad5,0x9be8e790,0x326e17f1,0x846e2508,0x0bbbc0dc,0x3f38007a,0xb11e16d6,0xcf03603f +.long 0x7442f1d5,0xd6f800e0,0x66e0e3ab,0x475607d1,0xb7c64047,0x82807f16,0xa749883d,0x8858e1e3,0x8231ee10,0x5859120b,0x638a1ece,0x1b80e7eb,0xc6aa73a4,0xcb72525a,0x844423ac,0xa7cdea3d +.long 0xf8ae7c38,0x5ed0c007,0x3d740192,0x6db07a5c,0x5fe36db3,0xbe5e9c2a,0x76e95046,0xd5b9d57a,0x8eba20f2,0x54ac32e7,0x71b9a352,0xef11ca8f,0xff98a658,0x305e373e,0x823eb667,0xffe5a100 +.long 0xe51732d2,0x57477b11,0x2538fc0e,0xdfd6eb28,0x3b39eec5,0x5c43b0cc,0xcb36cc57,0x6af12778,0x06c425ae,0x70b0852d,0x5c221b9b,0x6df92f8c,0xce826d9c,0x6c8d4f9e,0xb49359c3,0xf59aba7b +.long 0xda64309d,0x5c8ed8d5,0x91b30704,0x61a6de56,0x2f9b5808,0xd6b52f6a,0x98c958a7,0x0eee4194,0x771e4caa,0xcddd9aab,0x78bc21be,0x83965dfd,0xb3b504f5,0x02affce3,0x561c8291,0x30847a21 +.long 0x52bfda05,0xd2eb2cf1,0x6197b98c,0xe0e4c4e9,0xf8a1726f,0x1d35076c,0x2db11e3d,0x6c06085b,0x4463ba14,0x15c0c4d7,0x0030238c,0x9d292f83,0x3727536d,0x1311ee8b,0xbeaedc1e,0xfeea86ef +.long 0x66131e2e,0xb9d18cd3,0x80fe2682,0xf31d974f,0xe4160289,0xb6e49e0f,0x08e92799,0x7c48ec0b,0xd1989aa7,0x818111d8,0xebf926f9,0xb34fa0aa,0xa245474a,0xdb5fe2f5,0x3c7ca756,0xf80a6ebb +.long 0xafa05dd8,0xa7f96054,0xfcaf119e,0x26dfcf21,0x0564bb59,0xe20ef2e3,0x61cb02b8,0xef4dca50,0x65d30672,0xcda7838a,0xfd657e86,0x8b08d534,0x46d595c8,0x4c5b4395,0x425cb836,0x39b58725 +.long 0x3de9abe3,0x8ea61059,0x9cdc03be,0x40434881,0xcfedce8c,0x9b261245,0xcf5234a1,0x78c318b4,0xfde24c99,0x510bcf16,0xa2c2ff5d,0x2a77cb75,0x27960fb4,0x9c895c2b,0xb0eda42b,0xd30ce975 +.long 0x1a62cc26,0xfda85393,0x50c0e052,0x23c69b96,0xbfc633f3,0xa227df15,0x1bae7d48,0x2ac78848,0x187d073d,0x487878f9,0x967f807d,0x6c2be919,0x336e6d8f,0x765861d8,0xce528a43,0x88b8974c +.long 0xff57d051,0x09521177,0xfb6a1961,0x2ff38037,0xa3d76ad4,0xfc0aba74,0x25a7ec17,0x7c764803,0x48879bc8,0x7532d75f,0x58ce6bc1,0xea7eacc0,0x8e896c16,0xc82176b4,0x2c750fed,0x9a30e0b2 +.long 0x421d3aa4,0xc37e2c2e,0xe84fa840,0xf926407c,0x1454e41c,0x18abc03d,0x3f7af644,0x26605ecd,0xd6a5eabf,0x242341a6,0x216b668e,0x1edb84f4,0x04010102,0xd836edb8,0x945e1d8c,0x5b337ce7 +.long 0xc055dc14,0xd2075c77,0x81d89cdf,0x2a0ffa25,0x6ffdcbaf,0x8ce815ea,0xfb648867,0xa3428878,0x884655fb,0x277699cf,0x364d3e41,0xfa5b5bd6,0x441e1cb7,0x01f680c6,0xb70a7d67,0x3fd61e66 +.long 0xcc78cf66,0x666ba2dc,0x6fdbff77,0xb3018174,0x168d4668,0x8d4dd0db,0x1dab3a2a,0x259455d0,0xcde3acec,0xf58564c5,0x13adb276,0x77141925,0x8a303f65,0x527d725d,0xe6f38f7b,0x55deb6c9 +.long 0xb1fa70fb,0xfd5bb657,0xd8073a00,0xfa07f50f,0xbca02500,0xf72e3aa7,0x9975740d,0xf68f895d,0x5cae2a6a,0x30112060,0x02874842,0x01bd7218,0x7ce47bd3,0x3d423891,0x789544f6,0xa66663c1 +.long 0x3272d838,0x864d05d7,0xfa6295c5,0xe22924f9,0x6c2fda32,0x8189593f,0xb184b544,0x330d7189,0xbde1f714,0x79efa62c,0xe5cb1a63,0x35771c94,0x641c8332,0x2f4826b8,0xc8cee854,0x00a894fb +.long 0x36194d40,0xb4b9a39b,0x77612601,0xe857a7c5,0x4ecf2f58,0xf4209dd2,0x5a033487,0x82b9e66d,0xe4e8b9dd,0xc1e36934,0xa42377d7,0xd2372c9d,0x0e3ae43b,0x51dc94c7,0x04474f6f,0x4c57761e +.long 0x1058a318,0xdcdacd0a,0x78053a9a,0x369cf3f5,0x31c68de2,0xc6c3de50,0x3c4b6d9f,0x4653a576,0xaa4e5c97,0x1688dd5a,0xb7ab3c74,0x5be80aa1,0xbc65c283,0x70cefe7c,0x06867091,0x57f95f13 +.long 0x4415503b,0xa39114e2,0x4cbb17e9,0xc08ff7c6,0xd7dec966,0x1eff674d,0x53376f63,0x6d4690af,0xea74237b,0xff6fe32e,0xcd57508e,0xc436d17e,0xedcc40fe,0x15aa28e1,0x581bbb44,0x0d769c04 +.long 0x34eaacda,0xc240b6de,0x2ba0f1de,0xd9e116e8,0x79438e55,0xcbe45ec7,0x96f752d7,0x91787c9d,0xf129ac2f,0x897f532b,0x5a36e22c,0xd307b7c8,0x749fb8f3,0x91940675,0x157fdb28,0xd14f95d0 +.long 0x6ae55043,0xfe51d029,0x44a87de1,0x8931e98f,0x09e4fee2,0xe57f1cc6,0x4e072d92,0x0d063b67,0xed0e4316,0x70a998b9,0x306aca46,0xe74a736b,0x4fda97c7,0xecf0fbf2,0x3e178d93,0xa40f65cb +.long 0x16df4285,0x16253604,0xd0c56ae2,0xb0c9babb,0xcfc5cfc3,0x73032b19,0x09752056,0xe497e5c3,0x164bda96,0x12096bb4,0xa0b74da1,0x1ee42419,0x403826ba,0x8fc36243,0xdc09e660,0x0c8f0069 +.long 0xc27253c9,0x8667e981,0x92b36a45,0x05a6aefb,0x9cb7bb46,0xa62c4b36,0x11f7027b,0x8394f375,0x5f109d0f,0x747bc79c,0x5b8cc60a,0xcad88a76,0x58f09e68,0x80c5a66b,0xf6127eac,0xe753d451 +.long 0x5b0ec6f5,0xc44b74a1,0x5289b2b8,0x47989fe4,0x58d6fc73,0x745f8484,0xf61c70ab,0xec362a6f,0xb3a8ad41,0x070c98a7,0x7b63db51,0x73a20fc0,0xf44c35f4,0xed2c2173,0x9acc9dca,0x8a56149d +.long 0x9ac6e0f4,0x98f17881,0xa413b5ed,0x360fdeaf,0xa300b0fd,0x0625b8f4,0x5b3222d3,0xf1f4d76a,0x587f76b8,0x9d6f5109,0x2317fdb5,0x8b4ee08d,0x8c68b095,0x88089bb7,0x5808d9b9,0x95570e9a +.long 0x35d33ae7,0xa395c36f,0x50bb5a94,0x200ea123,0x0bafe84b,0x20c789bd,0x0919276a,0x243ef52d,0xe23ae233,0x3934c577,0xa460d1ec,0xb93807af,0xf8fa76a4,0xb72a53b1,0xc3ca4491,0xd8914cb0 +.long 0x3fb42622,0x2e128494,0x500907d5,0x3b2700ac,0x1a95ec63,0xf370fb09,0x31b6dfbd,0xf8f30be2,0x69e55f15,0xf2b2f8d2,0xcc1323e9,0x1fead851,0xd9e5eef6,0xfa366010,0xe316107e,0x64d487b0 +.long 0xd23ddc82,0x4c076b86,0x7e0143f0,0x03fd344c,0x317af2c5,0xa95362ff,0xe18b7a4f,0x0add3db7,0x8260e01b,0x9c673e3f,0x54a1cc91,0xfbeb49e5,0x92f2e433,0x91351bf2,0x851141eb,0xc755e7ec +.long 0x29607745,0xc9a95139,0xa26f2b28,0x0ca07420,0x4bc6f9dd,0xcb2790e7,0xadcaffc0,0x345bbb58,0xbe0f27a2,0xc65ea38c,0x641fcb56,0x67c24d7c,0xa9e2c757,0x2c25f0a7,0x16f16c49,0x93f5cdb0 +.long 0xc5ee30a1,0x2ca5a9d7,0xb909b729,0xd1593635,0xdadeff48,0x804ce9f3,0xb07c30c3,0xec464751,0x9e49af6a,0x89d65ff3,0x6f3d01bc,0xf2d6238a,0x0bced843,0x1095561e,0xc8a13fd8,0x51789e12 +.long 0x763231df,0xd633f929,0xe7cbddef,0x46df9f7d,0xcb265da8,0x01c889c0,0xaf4336d2,0xfce1ad10,0xfc6a0a7e,0x8d110df6,0x6da425dc,0xdd431b98,0x1834aabe,0xcdc4aeab,0x8439b7fc,0x84deb124 +.long 0x3c2a5998,0x8796f169,0x7947190d,0x9b9247b4,0x11597014,0x55b9d9a5,0x7b1566ee,0x7e9dd70d,0xcbcd5e64,0x94ad78f7,0x9bd4c032,0x0359ac17,0x7cc222ae,0x3b11baaf,0xba78e812,0xa6a6e284 +.long 0x24cea1a0,0x8392053f,0x33621491,0xc97bce4a,0x35399ee9,0x7eb1db34,0xece81ad1,0x473f78ef,0xf63d3d0d,0x41d72fe0,0xafab62fc,0xe620b880,0x93158383,0x92096bc9,0x8f896f6c,0x41a21357 +.long 0xc7dcfcab,0x1b5ee2fa,0x9546e007,0x650acfde,0xb1b02e07,0xc081b749,0xf9eca03d,0xda9e41a0,0x175a54ab,0x013ba727,0xea5d8d10,0xca0cd190,0x95fd96a9,0x85ea52c0,0xbc5c3940,0x2c591b9f +.long 0x2bad4d5f,0x6fb4d4e4,0xfef0059b,0xfa4c3590,0xf5122294,0x6a10218a,0xa85751d1,0x9a78a81a,0xa98e84e7,0x04f20579,0x4997e5b5,0xfe1242c0,0xca21e1e4,0xe77a273b,0x9411939d,0xfcc8b1ef +.long 0x92d0487a,0xe20ea302,0x294b91fe,0x1442dbec,0xbb6b0e8f,0x1f7a4afe,0x6889c318,0x1700ef74,0x70f1fc62,0xf5bbffc3,0x69c79cca,0x3b31d4b6,0xa7f6340d,0xe8bc2aab,0xa725e10a,0xb0b08ab4 +.long 0xae340050,0x44f05701,0x1cf0c569,0xba4b3016,0xfbe19a51,0x5aa29f83,0xb71d752e,0x1b9ed428,0xeb4819f5,0x1666e54e,0x9e18b75b,0x616cdfed,0x3ee27b0b,0x112ed5be,0x44c7de4d,0xfbf28319 +.long 0xe0e60d84,0xd685ec85,0x1db7ee78,0x68037e30,0x003c4d6e,0x5b65bdcd,0x93e29a6a,0x33e7363a,0x08d0756c,0x995b3a61,0x2faf134b,0xd727f85c,0x1d337823,0xfac6edf7,0x0439b8b4,0x99b9aa50 +.long 0xe2b4e075,0x722eb104,0x437c4926,0x49987295,0x46a9b82d,0xb1e4c0e4,0x57a006f5,0xd0cb3197,0xd7808c56,0xf3de0f7d,0x51f89772,0xb5c54d8f,0xadbd31aa,0x500a114a,0x295f6cab,0x9afaaaa6 +.long 0x04cf667a,0x94705e21,0x9d3935d7,0xfc2a811b,0x6d09267c,0x560b0280,0xf780e53b,0xf19ed119,0x067b6269,0xf0227c09,0x5caef599,0x967b8533,0x68efeebc,0x155b9243,0xc497bae6,0xcd6d34f5 +.long 0x6cceb370,0x1dd8d5d3,0xa78d7bf9,0x2aeac579,0x70b67a62,0x5d65017d,0x17c53f67,0x70c8e44f,0x86a34d09,0xd1fc0950,0xe7134907,0xe0fca256,0x80fdd315,0xe24fa29c,0xd87499ad,0x2c4acd03 +.long 0x3b5a9ba6,0xbaaf7517,0x12e51a51,0xb9cbe1f6,0x5e154897,0xd88edae3,0x77b66ca0,0xe4309c3c,0xf67f3746,0xf5555805,0xa36401ff,0x85fc37ba,0xd9499a53,0xdf86e2ca,0xecbc955b,0x6270b2a3 +.long 0x974ad33b,0xafae64f5,0xfe7b2df1,0x04d85977,0x4ab03f73,0x2a3db3ff,0x8702740a,0x0b87878a,0x5a061732,0x6d263f01,0xa32a1901,0xc25430ce,0xdb155018,0xf7ebab3d,0x63a9b78e,0x3a86f693 +.long 0xda9f3804,0x349ae368,0xa164349c,0x470f07fe,0x8562baa5,0xd52f4cc9,0x2b290df3,0xc74a9e86,0x43471a24,0xd3a1aa35,0xb8194511,0x239446be,0x81dcd44d,0xbec2dd00,0xc42ac82d,0xca3d7f0f +.long 0xfdaf4520,0x1f3db085,0x4549daf2,0xbb6d3e80,0x19ad5c42,0xf5969d8a,0xdbfd1511,0x7052b13d,0x682b9060,0x11890d1b,0xac34452c,0xa71d3883,0x783805b4,0xa438055b,0x4725b23e,0x43241277 +.long 0x4901bbed,0xf20cf96e,0xf432a2bb,0x6419c710,0xdfa9cd7d,0x57a0fbb9,0x00daa249,0x589111e4,0x7b60554e,0x19809a33,0xede283a4,0xea5f8887,0x503bfd35,0x2d713802,0x585d2a53,0x151bb0af +.long 0x43b30ca8,0x40b08f74,0xd9934583,0xe10b5bba,0xb51110ad,0xe8a546d6,0x28e0b6c5,0x1dd50e66,0xcff2b821,0x292e9d54,0x47281760,0x3882555d,0x3724d6e3,0x134838f8,0x22ddcda1,0xf2c679e0 +.long 0x6d2a5768,0x40ee8815,0x1c1e7e2d,0x7f227bd2,0xd04ff443,0x487ba134,0xc614e54b,0x76e2ff3d,0xa3177ec7,0x36b88d6f,0x2328fff5,0xbf731d51,0x49ba158e,0x758caea2,0x02938188,0x5ab8ff4c +.long 0x35edc56d,0x33e16056,0x7e940d79,0x5a69d349,0x03866dcb,0x6c4fd001,0x4893cdef,0x20a38f57,0xfac3a15b,0xfbf3e790,0x7a4f8e6b,0x6ed7ea2e,0xbc3aca86,0xa663eb4f,0x080d53f7,0x22061ea5 +.long 0xf546783f,0x2480dfe6,0x5a0a641e,0xd38bc6da,0x2ede8965,0xfb093cd1,0xacb455cf,0x89654db4,0x26e1adee,0x413cbf9a,0x373294d4,0x291f3764,0x648083fe,0x00797257,0x208cc341,0x25f504d3 +.long 0xc3a0ee43,0x635a8e5e,0x679898ff,0x70aaebca,0x5dc63d56,0x9ee9f547,0xffb34d00,0xce987966,0x5e26310a,0xf9f86b19,0x382a8ca8,0x9e435484,0xc2352fe4,0x253bcb81,0x4474b571,0xa4eac8b0 +.long 0xc1ad8cf8,0xc1b97512,0x99e0b697,0x193b4e9e,0x01e85df0,0x939d2716,0xcd44eafd,0x4fb265b3,0xe51e1ae2,0x321e7dcd,0xe3d8b096,0x8e3a8ca6,0x52604998,0x8de46cb0,0x39072aa7,0x91099ad8 +.long 0x93aa96b8,0x2617f91c,0x7fca2e13,0x0fc8716b,0x95328723,0xa7106f5e,0x262e6522,0xd1c9c40b,0x42b7c094,0xb9bafe86,0x1543c021,0x1873439d,0x5cbefd5d,0xe1baa5de,0x521e8aff,0xa363fc5e +.long 0xf862eaac,0xefe6320d,0x22c647dc,0x14419c63,0x4e46d428,0x0e06707c,0x4a178f8f,0xcb6c834f,0xd30f917c,0x0f993a45,0x9879afee,0xd4c4b049,0x70500063,0xb6142a1e,0xa5d9d605,0x7c9b41c3 +.long 0x2f8ba2c7,0xbc00fc2f,0x7c67aa28,0x0966eb2f,0x5a786972,0x13f7b516,0x8a2fbba0,0x3bfb7557,0x5a2b9620,0x131c4f23,0x6faf46be,0xbff3ed27,0x7e172323,0x9b4473d1,0x339f6246,0x421e8878 +.long 0x25a41632,0x0fa8587a,0xa35b6c93,0xc0814124,0x59ebb8db,0x2b18a9f5,0x76edb29c,0x264e3357,0xc87c51e2,0xaf245ccd,0x501e6214,0x16b3015b,0x0a3882ce,0xbb31c560,0xfec11e04,0x6961bb94 +.long 0xeff7a3a0,0x3b825b8d,0xb1df7326,0xbec33738,0x99604a1f,0x68ad747c,0x9a3bd499,0xd154c934,0x1cc7a906,0xac33506f,0x6c560e8f,0x73bb5392,0x263e3944,0x6428fcbe,0x1c387434,0xc11828d5 +.long 0x3e4b12ff,0x3cd04be1,0x2d88667c,0xc3aad9f9,0x248120cf,0xc52ddcf8,0x2a389532,0x985a892e,0x3bb85fa0,0xfbb4b21b,0x8dfc6269,0xf95375e0,0x7ee2acea,0xfb4fb06c,0x309c4d1f,0x6785426e +.long 0xd8ceb147,0x659b17c8,0xb70a5554,0x9b649eee,0xac6bc634,0x6b7fa0b5,0x1d6e732f,0xd99fe2c7,0x8d3abba2,0x30e6e762,0xa797b799,0x18fee6e7,0xc696464d,0x5c9d360d,0x27bfde12,0xe3baeb48 +.long 0xf23206d5,0x2bf5db47,0x1d260152,0x2f6d3420,0x3f8ff89a,0x17b87653,0x378fa458,0x5157c30c,0x2d4fb936,0x7517c5c5,0xe6518cdc,0xef22f7ac,0xbf847a64,0xdeb483e6,0x92e0fa89,0xf5084558 +.long 0xdf7304d4,0xab9659d8,0xff210e8e,0xb71bcf1b,0xd73fbd60,0xa9a2438b,0x5d11b4de,0x4595cd1f,0x4835859d,0x9c0d329a,0x7dbb6e56,0x4a0f0d2d,0xdf928a4e,0xc6038e5e,0x8f5ad154,0xc9429621 +.long 0xf23f2d92,0x91213462,0x60b94078,0x6cab71bd,0x176cde20,0x6bdd0a63,0xee4d54bc,0x54c9b20c,0x9f2ac02f,0x3cd2d8aa,0x206eedb0,0x03f8e617,0x93086434,0xc7f68e16,0x92dd3db9,0x831469c5 +.long 0x8f981354,0x8521df24,0x3588a259,0x587e23ec,0xd7a0992c,0xcbedf281,0x38961407,0x06930a55,0xbe5bbe21,0x09320deb,0x2491817f,0xa7ffa5b5,0x09065160,0xe6c8b4d9,0xfff6d2a9,0xac4f3992 +.long 0x3ae9c1bd,0x7aa7a158,0xe37ce240,0xe0af6d98,0x28ab38b4,0xe54342d9,0x0a1c98ca,0xe8b75007,0xe02358f2,0xefce86af,0xea921228,0x31b8b856,0x0a1c67fc,0x052a1912,0xe3aead59,0xb4069ea4 +.long 0x7fa03cb3,0x3232d6e2,0x0fdd7d88,0xdb938e5b,0x2ccbfc5d,0x04c1d2cd,0xaf3a580f,0xd2f45c12,0x7883e614,0x592620b5,0xbe7c5f26,0x5fd27e68,0x1567e1e3,0x139e45a9,0x44d8aaaf,0x2cc71d2d +.long 0xe36d0757,0x4a9090cd,0xd9a29382,0xf722d7b1,0x04b48ddf,0xfb7fb04c,0xebe16f43,0x628ad2a7,0x20226040,0xcd3fbfb5,0x5104b6c4,0x6c34ecb1,0xc903c188,0x30c0754e,0x2d23cab0,0xec336b08 +.long 0x1e206ee5,0x473d62a2,0x8c49a633,0xf1e27480,0xe9f6b2c3,0x87ab956c,0x62b606ea,0x61830b48,0xe78e815f,0x67cd6846,0x4c02082a,0xfe40139f,0x952ec365,0x52bbbfcb,0x6b9836ab,0x74c11642 +.long 0x558df019,0x9f51439e,0xac712b27,0x230da4ba,0x55185a24,0x518919e3,0x84b78f50,0x4dcefcdd,0xa47d4c5a,0xa7d90fb2,0xb30e009e,0x55ac9abf,0x74eed273,0xfd2fc359,0xdbea8faf,0xb72d824c +.long 0x4513e2ca,0xce721a74,0x38240b2c,0x0b418612,0xd5baa450,0x05199968,0x2b0e8c25,0xeb1757ed,0x3dfac6d5,0x6ebc3e28,0x48a237f5,0xb2431e2e,0x52f61499,0x2acb5e23,0xe06c936b,0x5558a2a7 +.long 0xcbb13d1b,0xd213f923,0x5bfb9bfe,0x98799f42,0x701144a9,0x1ae8ddc9,0x4c5595ee,0x0b8b3bb6,0x3ecebb21,0x0ea9ef2e,0x3671f9a7,0x17cb6c4b,0x726f1d1f,0x47ef464f,0x6943a276,0x171b9484 +.long 0x7ef0329c,0x51a4ae2d,0x91c4402a,0x08509222,0xafd45bbc,0x64a61d35,0x3035a851,0x38f096fe,0xa1dec027,0xc7468b74,0x4fc7dcba,0xe8cf10e7,0xf4a06353,0xea35ff40,0x8b77dd66,0x0b4c0dfa +.long 0xde7e5c19,0x779b8552,0xc1c0256c,0xfab28609,0xabd4743d,0x64f58eee,0x7b6cc93b,0x4e8ef838,0x4cb1bf3d,0xee650d26,0x73dedf61,0x4c1f9d09,0xbfb70ced,0xaef7c9d7,0x1641de1e,0x1ec0507e +.long 0xcde45079,0xcd7e5cc7,0x516ac9e4,0xde173c9a,0xc170315c,0x517a8494,0x91d8e8fb,0x438fd905,0xc7d9630b,0x5145c506,0xf47d4d75,0x6457a87b,0x0d9a80e8,0xd31646bf,0xcef3aabe,0x453add2b +.long 0xa607419d,0xc9941109,0xbb6bca80,0xfaa71e62,0x07c431f3,0x34158c13,0x992bc47a,0x594abebc,0xeb78399f,0x6dfea691,0x3f42cba4,0x48aafb35,0x077c04f0,0xedcd65af,0xe884491a,0x1a29a366 +.long 0x1c21f2bf,0x023a40e5,0xa5057aee,0xf99a513c,0xbcab072e,0xa3fe7e25,0x40e32bcf,0x8568d2e1,0xd3f69d9f,0x904594eb,0x07affab1,0x181a9733,0xb6e330f4,0xe4d68d76,0xc75a7fc1,0x87a6dafb +.long 0xef7d9289,0x549db2b5,0x197f015a,0x2480d4a8,0xc40493b6,0x61d5590b,0x6f780331,0x3a55b52e,0x309eadb0,0x40eb8115,0x92e5c625,0xdea7de5a,0xcc6a3d5a,0x64d631f0,0x93e8dd61,0x9d5e9d7c +.long 0x206d3ffc,0xf297bef5,0x7d808bd4,0x23d5e033,0xd24cf5ba,0x4a4f6912,0x09cdaa8a,0xe4d8163b,0xd3082e8e,0x0e0de9ef,0x0192f360,0x4fe1246c,0x4b8eee0a,0x1f900150,0xf1da391b,0x5219da81 +.long 0xf7ea25aa,0x7bf6a5c1,0xfbb07d5f,0xd165e6bf,0x89e78671,0xe3539361,0x2bac4219,0xa3fcac89,0xf0baa8ab,0xdfab6fd4,0xe2c1c2e5,0x5a4adac1,0x40d85849,0x6cd75e31,0x19b39181,0xce263fea +.long 0x07032c72,0xcb6803d3,0x790968c8,0x7f40d5ce,0xdce978f0,0xa6de86bd,0x368f751c,0x25547c4f,0x65fb2a9e,0xb1e685fd,0x1eb9179c,0xce69336f,0x12504442,0xb15d1c27,0xb911a06b,0xb7df465c +.long 0x315980cd,0xb8d804a3,0xfa3bebf7,0x693bc492,0x2253c504,0x3578aeee,0xcd2474a2,0x158de498,0xcfda8368,0x1331f5c7,0x78d7177e,0xd2d7bbb3,0xf3c1e46e,0xdf61133a,0xd30e7be8,0x5836ce7d +.long 0x94f834cb,0x83084f19,0x429ed782,0xd35653d4,0x59e58243,0xa542f16f,0x0470a22d,0xc2b52f65,0x18f23d96,0xe3b6221b,0x3f5252b4,0xcb05abac,0x87d61402,0xca00938b,0x411933e4,0x2f186cdd +.long 0x9a29a5c5,0xe042ece5,0x3b6c8402,0xb19b3c07,0x19d92684,0xc97667c7,0xebc66372,0xb5624622,0x3c04fa02,0x0cb96e65,0x8eaa39aa,0x83a7176c,0xeaa1633f,0x2033561d,0x4533df73,0x45a9d086 +.long 0x3dc090bc,0xe0542c1d,0xaa59c167,0x82c996ef,0x0ee7fc4d,0xe3f735e8,0x7c35db79,0x7b179393,0xf8c5dbfd,0xb6419e25,0x1f327b04,0x4d9d7a1e,0x298dfca8,0x979f6f9b,0x8de9366a,0xc7c5dff1 +.long 0x04c82bdd,0x1b7a588d,0xf8319dfd,0x68005534,0xd8eb9580,0xde8a55b5,0x8d5bca81,0x5ea886da,0x252a0b4d,0xe8530a01,0x35eaa0a1,0x1bffb4fe,0xd8e99563,0x2ad828b1,0x95f9cd87,0x7de96ef5 +.long 0xd77d970c,0x4abb2d0c,0xd33ef9cb,0x03cfb933,0x8b211fe9,0xb0547c01,0xa56ed1c6,0x2fe64809,0xc2ac98cc,0xcb7d5624,0x1a393e33,0x2a1372c0,0x29660521,0xc8d1ec1c,0xb37ac3e9,0xf3d31b04 +.long 0x5ece6e7c,0xa29ae9df,0x0facfb55,0x0603ac8f,0xdda233a5,0xcfe85b7a,0xbd75f0b8,0xe618919f,0x99bf1603,0xf555a3d2,0xf184255a,0x1f43afc9,0x319a3e02,0xdcdaf341,0x03903a39,0xd3b117ef +.long 0x65d1d131,0xe095da13,0xc37ad03e,0x86f16367,0x462cd8dd,0x5f37389e,0xd67a60e6,0xc103fa04,0xf4b478f0,0x57c34344,0xe117c98d,0xce91edd8,0x231fc12e,0x001777b0,0xb207bccb,0x11ae47f2 +.long 0x20f8a242,0xd983cf8d,0xf22e1ad8,0x7aff5b1d,0x7fc4feb3,0x68fd11d0,0xb0f1c3e1,0x5d53ae90,0xec041803,0x50fb7905,0x14404888,0x85e3c977,0xac628d8f,0x0e67faed,0x6668532c,0x2e865150 +.long 0x6a67a6b0,0x15acaaa4,0xb25cec41,0xf4cdee25,0xe4c6701e,0x49ee565a,0xfc7d63d8,0x2a04ca66,0xef0543fb,0xeb105018,0xd1b0d81d,0xf709a4f5,0x2915d333,0x5b906ee6,0x96f1f0ab,0xf4a87412 +.long 0x4d82f4c2,0xb6b82fa7,0x6804efb3,0x90725a60,0xadc3425e,0xbc82ec46,0x2787843e,0xb7b80581,0xdd1fc74c,0xdf46d91c,0xe783a6c4,0xdc1c62cb,0x1a04cbba,0x59d1b9f3,0x95e40764,0xd87f6f72 +.long 0x317f4a76,0x02b4cfc1,0x91036bce,0x8d2703eb,0xa5e72a56,0x98206cc6,0xcf53fb0f,0x57be9ed1,0xef0b17ac,0x09374571,0xd9181b38,0x74b2655e,0x89935d0e,0xc8f80ea8,0x91529936,0xc0d9e942 +.long 0x1e84e0e5,0x19686041,0xaea34c93,0xa5db84d3,0x7073a732,0xf9d5bb19,0x6bcfd7c0,0xb8d2fe56,0xf3eb82fa,0x45775f36,0xfdff8b58,0x8cb20ccc,0x8374c110,0x1659b65f,0x330c789a,0xb8b4a422 +.long 0x6fe8208b,0x75e3c3ea,0x286e78fe,0xbd74b9e4,0xd7d93a1a,0x0be2e81b,0xdd0a5aae,0x7ed06e27,0x6be8b800,0x721f5a58,0xd846db28,0x428299d1,0x5be88ed3,0x95cb8e6b,0x1c034e11,0xc3186b23 +.long 0x8977d99b,0xa6312c9e,0x83f531e7,0xbe944331,0x18d3b1d4,0x8232c0c2,0xe1247b73,0x617aae8b,0x282aec3b,0x40153fc4,0xf7b8f823,0xc6063d2f,0x3304f94c,0x68f10e58,0xee676346,0x31efae74 +.long 0x40a9b97c,0xbadb6c6d,0x4f666256,0x14702c63,0x5184b2e3,0xdeb954f1,0x94b6ca40,0x5184a526,0x003c32ea,0xfff05337,0x205974c7,0x5aa374dd,0x4b0dd71a,0x9a763854,0xdeb947ec,0x459cd27f +.long 0x459c2b92,0xa6e28161,0x75ee8ef5,0x2f020fa8,0x30b06310,0xb132ec2d,0xbc6a4530,0xc3e15899,0xaa3f451a,0xdc5f53fe,0xc2d9acac,0x3a3c7f23,0x6b27e58b,0x2ec2f892,0xd742799f,0x68466ee7 +.long 0x1fa26613,0x98324dd4,0xbdc29d63,0xa2dc6dab,0xd712d657,0xf9675faa,0x21fd8d15,0x813994be,0xfd4f7553,0x5ccbb722,0xf3a36b20,0x5135ff8b,0x69559df5,0x44be28af,0x9d41bf30,0x40b65bed +.long 0x3734e520,0xd98bf2a4,0x209bdcba,0x5e3abbe3,0xbc945b35,0x77c76553,0xc6ef14aa,0x5331c093,0x76b60c80,0x518ffe29,0x7ace16f8,0x2285593b,0xbe2b9784,0xab1f64cc,0xab2421b6,0xe8f2c0d9 +.long 0xc1df065c,0x617d7174,0x5f6578fa,0xafeeb5ab,0x263b54a8,0x16ff1329,0xc990dce3,0x45c55808,0xecc8c177,0x42eab6c0,0x5982ecaa,0x799ea9b5,0xb607ef8e,0xf65da244,0x32a3fc2c,0x8ab226ce +.long 0x7ea973dc,0x745741e5,0x20888f2e,0x5c00ca70,0x45fd9cf1,0x7cdce3cf,0x5507f872,0x8a741ef1,0x196b4cec,0x47c51c2f,0xc97ea618,0x70d08e43,0x15b18a2b,0x930da15c,0x2f610514,0x33b6c678 +.long 0x07ac9794,0xc662e4f8,0xba06cb79,0x1eccf050,0xe7d954e5,0x1ff08623,0x24cf71c3,0x6ef2c5fb,0x67978453,0xb2c063d2,0x1d654af8,0xa0cf3796,0x7ebdaa37,0x7cb242ea,0xb86747e0,0x206e0b10 +.long 0xd5ecfefc,0x481dae5f,0xc2bff8fc,0x07084fd8,0xea324596,0x8040a01a,0xd4de4036,0x4c646980,0xd65abfc3,0x9eb8ab4e,0x13541ec7,0xe01cb91f,0xfd695012,0x8f029adb,0x3c7569ec,0x9ae28483 +.long 0xa66d80a1,0xa5614c9e,0x75f5f911,0x680a3e44,0xceba4fc1,0x0c07b14d,0xa13071c1,0x891c285b,0x799ece3c,0xcac67ceb,0x41e07e27,0x29b910a9,0xf2e43123,0x66bdb409,0x7ac9ecbe,0x06f8b137 +.long 0x38547090,0x5981fafd,0x85e3415d,0x19ab8b9f,0xc7e31b27,0xfc28c194,0x6fbcbb42,0x843be0aa,0xa6db836c,0xf3b1ed43,0x01a45c05,0x2a1330e4,0x95c1a377,0x4f19f3c5,0x44b5ee33,0xa85f39d0 +.long 0x4ae52834,0x3da18e6d,0x7423dcb0,0x5a403b39,0xf2374aef,0xbb555e0a,0x1e8ca111,0x2ad599c4,0x014b3bf8,0x1b3a2fb9,0xf66d5007,0x73092684,0xc4340102,0x079f1426,0x8fddf4de,0x1827cf81 +.long 0xf10ff927,0xc83605f6,0x23739fc6,0xd3871451,0xcac1c2cc,0x6d163450,0xa2ec1ac5,0x6b521296,0x6e3cb4a5,0x0606c4f9,0x778abff7,0xe47d3f41,0xbe8e3a45,0x425a8d5e,0xa6102160,0x53ea9e97 +.long 0x39cbb688,0x477a106e,0xf3386d32,0x532401d2,0xb1b9b421,0x8e564f64,0x81dad33f,0xca9b8388,0x2093913e,0xb1422b4e,0x69bc8112,0x533d2f92,0xebe7b2c7,0x3fa017be,0xcaf197c6,0xb2767c4a +.long 0xaedbae9f,0xc925ff87,0x36880a54,0x7daf0eb9,0x9c4d0e71,0x9284ddf5,0x316f8cf5,0x1581cf93,0x3ac1f452,0x3eeca887,0xfb6aeffe,0xb417fce9,0xeefb8dc3,0xa5918046,0x02209400,0x73d318ac +.long 0x728693e5,0xe800400f,0x339927ed,0xe87d814b,0x57ea9910,0x93e94d3b,0x2245fb69,0xff8a35b6,0x7f200d34,0x043853d7,0x0f653ce1,0x470f1e68,0x59a06379,0x81ac05bd,0x03930c29,0xa14052c2 +.long 0x26bc2797,0x6b72fab5,0x99f16771,0x13670d16,0x1e3e48d1,0x00170052,0xb7adf678,0x978fe401,0xd41c5dd4,0x55ecfb92,0xc7b27da5,0x5ff8e247,0x013fb606,0xe7518272,0x2f547a3c,0x5768d7e5 +.long 0x60017a5f,0xbb24eaa3,0x9c64ce9b,0x6b18e6e4,0x103dde07,0xc225c655,0x7592f7ea,0xfc3672ae,0xd06283a1,0x9606ad77,0xe4d59d99,0x542fc650,0x2a40e7c2,0xabb57c49,0xa8db9f55,0xac948f13 +.long 0xb04465c3,0x6d4c9682,0x6468bd15,0xe3d062fa,0x5f318d7e,0xa51729ac,0x9eb6fc95,0x1fc87df6,0x0591f652,0x63d146a8,0x589621aa,0xa861b8f7,0xce31348c,0x59f5f15a,0x440da6da,0x8f663391 +.long 0xb591ffa3,0xcfa778ac,0x4cdfebce,0x027ca9c5,0x444ea6b3,0xbe8e05a5,0xa78d8254,0x8aab4e69,0xb474d6b8,0x2437f04f,0x045b3855,0x6597ffd4,0xca47ecaa,0xbb0aea4e,0x85c7ebfc,0x568aae83 +.long 0xc73b2383,0x0e966e64,0xd17d8762,0x49eb3447,0x8da05dab,0xde107821,0x016b7236,0x443d8baa,0xea7610d6,0x163b63a5,0xce1ca979,0xe47e4185,0x80baa132,0xae648b65,0x0e0d5b64,0xebf53de2 +.long 0xd3c8c1ca,0x8d3bfcb4,0x5d04b309,0x0d914ef3,0x3de7d395,0x55ef6415,0x26b850e8,0xbde1666f,0xd449ab19,0xdbe1ca6e,0xe89a2672,0x8902b322,0xdacb7a53,0xb1674b7e,0xf52523ff,0x8e9faf6e +.long 0x9a85788b,0x6ba535da,0xbd0626d4,0xd21f03ae,0xe873dc64,0x099f8c47,0x018ec97e,0xcda8564d,0xde92c68c,0x3e8d7a5c,0x73323cc4,0x78e035a1,0xf880ff7c,0x3ef26275,0x273eedaa,0xa4ee3dff +.long 0xaf4e18f8,0x58823507,0x0672f328,0x967ec9b5,0x559d3186,0x9ded19d9,0x6cdce39c,0x5e2ab3de,0x11c226df,0xabad6e4d,0x87723014,0xf9783f43,0x1a885719,0x9a49a0cf,0x90da9dbf,0xfc0c1a5a +.long 0x571d92ac,0x8bbaec49,0x4692517f,0x569e85fe,0xa14ea4af,0x8333b014,0x12e5c5ad,0x32f2a62f,0x06d89b85,0x98c2ce3a,0x2ff77a08,0xb90741aa,0x01f795a2,0x2530defc,0x84b3c199,0xd6e5ba0b +.long 0x12e4c936,0x7d8e8451,0xbd0be17b,0xae419f7d,0x22262bc9,0xa583fc8c,0x91bfe2bd,0x6b842ac7,0x440d6827,0x33cef4e9,0xef81fb14,0x5f69f4de,0x234fbb92,0xf16cf6f6,0xd9e7e158,0x76ae3fc3 +.long 0xe9740b33,0x4e89f6c2,0x4962d6a1,0x677bc85d,0x68d10d15,0x6c6d8a7f,0x0257b1cd,0x5f9a7224,0x4ad85961,0x7096b916,0xe657ab4a,0x5f8c47f7,0xf7461d7e,0xde57d7d0,0x80ce5ee2,0x7eb6094d +.long 0x34190547,0x0b1e1dfd,0xf05dd150,0x8a394f43,0x97df44e6,0x0a9eb24d,0x87675719,0x78ca06bf,0x6ffeec22,0x6f0b3462,0x36cdd8fb,0x9d91bcea,0xa105be47,0xac83363c,0x069710e3,0x81ba76c1 +.long 0x28c682c6,0x3d1b24cb,0x8612575b,0x27f25228,0xe8e66e98,0xb587c779,0x405eb1fe,0x7b0c03e9,0x15b548e7,0xfdf0d030,0x38b36af7,0xa8be76e0,0x4f310c40,0x4cdab04a,0xf47ecaec,0x6287223e +.long 0x8b399320,0x678e6055,0xc01e4646,0x61fe3fa6,0x03261a5e,0xc482866b,0x5c2f244a,0xdfcf45b8,0x2f684b43,0x8fab9a51,0xc7220a66,0xf796c654,0xf5afa58f,0x1d90707e,0x4fdbe0de,0x2c421d97 +.long 0xaf2ebc2f,0xc4f4cda3,0xcb4efe24,0xa0af843d,0x9ccd10b1,0x53b857c1,0x914d3e04,0xddc9d1eb,0x62771deb,0x7bdec8bb,0x91c5aa81,0x829277aa,0x832391ae,0x7af18dd6,0xc71a84ca,0x1740f316 +.long 0xeeaf8c49,0x8928e99a,0x6e24d728,0xee7aa73d,0xe72b156c,0x4c5007c2,0xed408a1d,0x5fcf57c5,0xb6057604,0x9f719e39,0xc2868bbf,0x7d343c01,0x7e103e2d,0x2cca254b,0xf131bea2,0xe6eb38a9 +.long 0x8be762b4,0xb33e624f,0x058e3413,0x2a9ee4d1,0x67d805fa,0x968e6369,0x7db8bfd7,0x9848949b,0xd23a8417,0x5308d7e5,0xf3e29da5,0x892f3b1d,0x3dee471f,0xc95c139e,0xd757e089,0x8631594d +.long 0xde918dcc,0xe0c82a3c,0x26fdcf4b,0x2e7b5994,0x32cb1b2d,0x82c50249,0x7657ae07,0xea613a9d,0xf1fdc9f7,0xc2eb5f6c,0x879fe682,0xb6eae8b8,0x591cbc7f,0x253dfee0,0x3e1290e6,0x000da713 +.long 0x1f095615,0x1083e2ea,0x14e68c33,0x0a28ad77,0x3d8818be,0x6bfc0252,0xf35850cd,0xb585113a,0x30df8aa1,0x7d935f0b,0x4ab7e3ac,0xaddda07c,0x552f00cb,0x92c34299,0x2909df6c,0xc33ed1de +.long 0x80e87766,0x22c2195d,0x9ddf4ac0,0x9e99e6d8,0x65e74934,0x09642e4e,0xff1ff241,0x2610ffa2,0x751c8159,0x4d1d47d4,0xaf3a9363,0x697b4985,0x87477c33,0x0318ca46,0x9441eff3,0xa90cb565 +.long 0x36f024cb,0x58bb3848,0x36016168,0x85be1f77,0xdc7e07f1,0x6c59587c,0xaf1d8f02,0x191be071,0xcca5e55c,0xbf169fa5,0xf7d04eac,0x3864ba3c,0x8d7d05db,0x915e367f,0xa6549e5d,0xb48a876d +.long 0x580e40a2,0xef89c656,0x728068bc,0xf194ed8c,0xa47990c9,0x74528045,0x5e1a4649,0xf53fc7d7,0x78593e7d,0xbec5ae9b,0x41db65d7,0x2cac4ee3,0x04a3d39b,0xa8c1eb24,0x03f8f3ef,0x53b7d634 +.long 0x3e07113c,0x2dc40d48,0x7d8b63ae,0x6e4a5d39,0x79684c2b,0x5582a94b,0x622da26c,0x932b33d4,0x0dbbf08d,0xf534f651,0x64c23a52,0x211d07c9,0xee5bdc9b,0x0eeece0f,0xf7015558,0xdf178168 +.long 0x0a712229,0xd4294635,0x09273f8c,0x93cbe448,0x8f13bc83,0x00b095ef,0x8798978c,0xbb741972,0x56dbe6e7,0x9d7309a2,0x5a5d39ec,0xe578ec56,0x851f9a31,0x3961151b,0xe5709eb4,0x2da7715d +.long 0x53dfabf0,0x867f3017,0xb8e39259,0x728d2078,0x815d9958,0x5c75a0cd,0x16603be1,0xf84867a6,0x70e35b1c,0xc865b13d,0x19b03e2c,0x02414468,0xac1f3121,0xe46041da,0x6f028a7c,0x7c9017ad +.long 0x0a482873,0xabc96de9,0xb77e54d4,0x4265d6b1,0xa57d88e7,0x68c38e79,0x9ce82de3,0xd461d766,0x64a7e489,0x817a9ec5,0xa0def5f2,0xcc5675cd,0x985d494e,0x9a00e785,0x1b03514a,0xc626833f +.long 0x83cdd60e,0xabe7905a,0xa1170184,0x50602fb5,0xb023642a,0x689886cd,0xa6e1fb00,0xd568d090,0x0259217f,0x5b1922c7,0xc43141e4,0x93831cd9,0x0c95f86e,0xdfca3587,0x568ae828,0xdec2057a +.long 0xf98a759a,0xc44ea599,0xf7c23c1d,0x55a0a7a2,0x94c4f687,0xd5ffb6e6,0x12848478,0x3563cce2,0xe7b1fbe1,0x812b3517,0x4f7338e0,0x8a7dc979,0x52d048db,0x211ecee9,0xc86ea3b8,0x2eea4056 +.long 0xba772b34,0xd8cb68a7,0x5f4e2541,0xe16ed341,0x0fec14db,0x9b32f6a6,0x391698be,0xeee376f7,0x83674c02,0xe9a7aa17,0x5843022a,0x65832f97,0x5ba4990f,0x29f3a8da,0xfb8e3216,0x79a59c3a +.long 0xbd19bb16,0x9cdc4d2e,0xb3262d86,0xc6c7cfd0,0x969c0b47,0xd4ce14d0,0x13e56128,0x1fa352b7,0x973db6d3,0x383d55b8,0xe8e5b7bf,0x71836850,0xe6bb571f,0xc7714596,0x2d5b2dd2,0x259df31f +.long 0x913cc16d,0x568f8925,0xe1a26f5a,0x18bc5b6d,0xf5f499ae,0xdfa413be,0xc3f0ae84,0xf8835dec,0x65a40ab0,0xb6e60bd8,0x194b377e,0x65596439,0x92084a69,0xbcd85625,0x4f23ede0,0x5ce433b9 +.long 0x6ad65143,0xe8e8f04f,0xd6e14af6,0x11511827,0x8295c0c7,0x3d390a10,0x621eba16,0x71e29ee4,0x63717b46,0xa588fc09,0xe06ad4a2,0x02be02fe,0x04c22b22,0x931558c6,0x12f3c849,0xbb4d4bd6 +.long 0x20efd662,0x54a4f496,0xc5952d14,0x92ba6d20,0xcc9784c2,0x2db8ea1e,0x4b353644,0x81cc10ca,0x4b4d7f6c,0x40b570ad,0x84a1dcd2,0x5c9f1d96,0x3147e797,0x01379f81,0x2bd499f5,0xe5c6097b +.long 0x328e5e20,0x40dcafa6,0x54815550,0xf7b5244a,0x47bfc978,0xb9a4f118,0xd25825b1,0x0ea0e79f,0x646c7ecf,0xa50f96eb,0x446dea9d,0xeb811493,0xdfabcf69,0x2af04677,0xc713f6e8,0xbe3a068f +.long 0x42e06189,0x860d523d,0x4e3aff13,0xbf077941,0xc1b20650,0x0b616dca,0x2131300d,0xe66dd6d1,0xff99abde,0xd4a0fd67,0xc7aac50d,0xc9903550,0x7c46b2d7,0x022ecf8b,0x3abf92af,0x3333b1e8 +.long 0x6c491c14,0x11cc113c,0x80dd3f88,0x05976688,0x29d932ed,0xf5b4d9e7,0xa2c38b6d,0xe982aad8,0x8be0dcf0,0x6f925347,0x65ca53f2,0x700080ae,0x443ca77f,0xd8131156,0xec51f984,0xe92d6942 +.long 0x85dfe9ae,0xd2a08af8,0x4d2a86ca,0xd825d9a5,0x39dff020,0x2c53988d,0x430cdc40,0xf38b135a,0x62a7150b,0x0c918ae0,0x0c340e9b,0xf31fd8de,0x4dbbf02e,0xafa0e7ae,0x5eba6239,0x5847fb2a +.long 0xdccbac8b,0x6b1647dc,0x06f485c8,0xb642aa78,0x7038ecdf,0x873f3765,0xfa49d3fe,0x2ce5e865,0xc98c4400,0xea223788,0xf1fa5279,0x8104a8cd,0x06becfd7,0xbcf7cc7a,0xc8f974ae,0x49424316 +.long 0x84d6365d,0xc0da65e7,0x8f759fb8,0xbcb7443f,0x7ae81930,0x35c712b1,0x4c6e08ab,0x80428dff,0xa4faf843,0xf19dafef,0xffa9855f,0xced8538d,0xbe3ac7ce,0x20ac409c,0x882da71e,0x358c1fb6 +.long 0xfd349961,0xafa9c0e5,0x8421c2fc,0x2b2cfa51,0xf3a28d38,0x2a80db17,0x5d138e7e,0xa8aba539,0x6e96eb8d,0x52012d1d,0xcbaf9622,0x65d8dea0,0xb264f56c,0x57735447,0x1b6c8da2,0xbeebef3f +.long 0xce785254,0xfc346d98,0xbb64a161,0xd50e8d72,0x49794add,0xc03567c7,0x752c7ef6,0x15a76065,0x961f23d6,0x59f3a222,0x73ecc0b0,0x378e4438,0x5a82fde4,0xc74be434,0xd8b9cf34,0xae509af2 +.long 0x577f44a1,0x4a61ee46,0xb611deeb,0xe09b748c,0xf5f7b884,0xc0481b2c,0x61acfa6b,0x35626678,0xbf8d21e6,0x37f4c518,0xb205a76d,0x22d96531,0x954073c0,0x37fb85e1,0x65b3a567,0xbceafe4f +.long 0xbe42a582,0xefecdef7,0x65046be6,0xd3fc6080,0x09e8dba9,0xc9af13c8,0x641491ff,0x1e6c9847,0xd30c31f7,0x3b574925,0xac2a2122,0xb7eb72ba,0xef0859e7,0x776a0dac,0x21900942,0x06fec314 +.long 0xf8c22049,0x2464bc10,0x875ebf69,0x9bfbcce7,0x4336326b,0xd7a88e2a,0x5bc2acfa,0xda05261c,0xeba7efc8,0xc29f5bdc,0x25dbbf2e,0x471237ca,0x2975f127,0xa72773f2,0x04d0b326,0xdc744e8e +.long 0xa56edb73,0x38a7ed16,0x2c007e70,0x64357e37,0x5080b400,0xa167d15b,0x23de4be1,0x07b41164,0x74c89883,0xb2d91e32,0x2882e7ed,0x3c162821,0x7503e482,0xad6b36ba,0x0ea34331,0x48434e8e +.long 0x2c7ae0b9,0x79f4f24f,0x1939b44a,0xc46fbf81,0x56595eb1,0x76fefae8,0xcd5f29c7,0x417b66ab,0xc5ceec20,0x5f2332b2,0xe1a1cae2,0xd69661ff,0x9b0286e6,0x5ede7e52,0xe276b993,0x9d062529 +.long 0x7e50122b,0x324794b0,0x4af07ca5,0xdd744f8b,0xd63fc97b,0x30a12f08,0x76626d9d,0x39650f1a,0x1fa38477,0x101b47f7,0xd4dc124f,0x3d815f19,0xb26eb58a,0x1569ae95,0x95fb1887,0xc3cde188 +.long 0xf9539a48,0x54e9f37b,0x7408c1a5,0xb0100e06,0xea580cbb,0x821d9811,0x86e50c56,0x8af52d35,0xdbbf698b,0xdfbd9d47,0x03dc1c73,0x2961a1ea,0xe76a5df8,0x203d38f8,0x6def707a,0x08a53a68 +.long 0x1bee45d4,0x26eefb48,0x3c688036,0xb3cee346,0xc42f2469,0x463c5315,0x81378162,0x19d84d2e,0x1c4d349f,0x22d7c3c5,0x163d59c5,0x65965844,0xb8abceae,0xcf198c56,0x628559d5,0x6fb1fb1b +.long 0x07bf8fe3,0x8bbffd06,0x3467734b,0x46259c58,0x35f7f0d3,0xd8953cea,0xd65b0ff1,0x1f0bece2,0xf3c72914,0xf7d5b4b3,0x3cb53389,0x29e8ea95,0x836b6d46,0x4a365626,0xea174fde,0xe849f910 +.long 0xf4737f21,0x7ec62fbb,0x6209f5ac,0xd8dba5ab,0xa5f9adbe,0x24b5d7a9,0xa61dc768,0x707d28f7,0xcaa999ea,0x7711460b,0x1c92e4cc,0xba7b174d,0x18d4bf2d,0x3c4bab66,0xeb8bd279,0xb8f0c980 +.long 0x324b4737,0x024bea9a,0x32a83bca,0xfba9e423,0xa232dced,0x6e635643,0x2571c8ba,0x99619367,0x54b7032b,0xe8c9f357,0x2442d54a,0xf936b3ba,0x8290c65a,0x2263f0f0,0xee2c7fdb,0x48989780 +.long 0x13d4f95e,0xadc5d55a,0xad9b8500,0x737cff85,0x8a73f43d,0x271c557b,0xe18bc476,0xbed617a4,0x7dfd8ab2,0x66245401,0x3a2870aa,0xae7b89ae,0x23a7e545,0x1b555f53,0xbe057e4c,0x6791e247 +.long 0x324fa34d,0x860136ad,0x4cbeae28,0xea111447,0xbedd3299,0x023a4270,0xc1c35c34,0x3d5c3a7f,0x8d0412d2,0xb0f6db67,0xfcdc6b9a,0xd92625e2,0x4e28a982,0x92ae5ccc,0x47a3ce7e,0xea251c36 +.long 0x790691bf,0x9d658932,0x06b736ae,0xed610589,0xc0d63b6e,0x712c2f04,0xc63d488f,0x5cf06fd5,0xd9588e41,0x97363fac,0x2b93257e,0x1f9bf762,0x667acace,0xa9d1ffc4,0x0a061ecf,0x1cf4a1aa +.long 0xdc1818d0,0x40e48a49,0xa3621ab0,0x0643ff39,0xe39ef639,0x5768640c,0x04d86854,0x1fc099ea,0xeccd28fd,0x9130b9c3,0x7eec54ab,0xd743cbd2,0xe5b475b6,0x052b146f,0x900a7d1f,0x058d9a82 +.long 0x91262b72,0x65e02292,0xbb0edf03,0x96f924f9,0xfe206842,0x5cfa59c8,0x5eafa720,0xf6037004,0x18d7dd96,0x5f30699e,0xcbab2495,0x381e8782,0xdd8be949,0x91669b46,0x26aae8ef,0xb40606f5 +.long 0xfc6751a4,0x2812b839,0xfba800ef,0x16196214,0x4c1a2875,0x4398d5ca,0x653d8349,0x720c00ee,0xd820007c,0xc2699eb0,0xa39b5825,0x880ee660,0x471f6984,0x70694694,0xe3dda99a,0xf7d16ea8 +.long 0xc0519a23,0x28d675b2,0x4f6952e3,0x9ebf94fe,0xa2294a8a,0xf28bb767,0xfe0af3f5,0x85512b4d,0x99b16a0d,0x18958ba8,0xba7548a7,0x95c2430c,0xa16be615,0xb30d1b10,0x85bfb74c,0xe3ebbb97 +.long 0x18549fdb,0xa3273cfe,0x4fcdb792,0xf6e200bf,0x83aba56c,0x54a76e18,0x89ef6aa2,0x73ec66f6,0xd1b9a305,0x8d17add7,0xb7ae1b9d,0xa959c5b9,0x6bcc094a,0x88643522,0xd7d429b9,0xcc5616c4 +.long 0xe6a33f7c,0xa6dada01,0x9d4e70ad,0xc6217a07,0x09c15b7c,0xd619a818,0x0e80c854,0xea06b329,0xa5f5e7b9,0x174811ce,0x787c65f4,0x66dfc310,0x3316ab54,0x4ea7bd69,0x1dcc0f70,0xc12c4acb +.long 0x1e407dd9,0xe4308d1a,0x91afa997,0xe8a3587c,0xab77b7a5,0xea296c12,0x673c0d52,0xb5ad49e4,0x7006085a,0x40f9b2b2,0x87bf6ec2,0xa88ff340,0x4e3066a6,0x978603b1,0xb5e486e2,0xb3f99fc2 +.long 0xb2e63645,0x07b53f5e,0x84c84232,0xbe57e547,0x7214d5cf,0xd779c216,0x029a3aca,0x617969cd,0x8a7017a0,0xd17668cd,0xbe9b7ee8,0x77b4d19a,0x9c161776,0x58fd0e93,0xd5968a72,0xa8c4f4ef +.long 0x67b3de77,0x296071cc,0x634f7905,0xae3c0b8e,0x8a7100c9,0x67e440c2,0xeb4b9b42,0xbb8c3c1b,0xc51b3583,0x6d71e8ea,0x9525e642,0x7591f5af,0x13f509f3,0xf73a2f7b,0x5619ac9b,0x618487aa +.long 0x9d61718a,0x3a72e5f7,0x7592d28c,0x00413bcc,0x963c35cf,0x7d9b11d3,0xb90a46ed,0x77623bcf,0xdcdd2a50,0xdeef273b,0x0601846e,0x4a741f9b,0x0ec6e929,0x33b89e51,0x8b7f22cd,0xcb02319f +.long 0x084bae24,0xbbe1500d,0x343d2693,0x2f0ae8d7,0x7cdef811,0xacffb5f2,0x263fb94f,0xaa0c030a,0xa0f442de,0x6eef0d61,0x27b139d3,0xf92e1817,0x0ad8bc28,0x1ae6deb7,0xc0514130,0xa89e38dc +.long 0xd2fdca23,0x81eeb865,0xcc8ef895,0x5a15ee08,0x01905614,0x768fa10a,0x880ee19b,0xeff5b8ef,0xcb1c8a0e,0xf0c0cabb,0xb8c838f9,0x2e1ee9cd,0x8a4a14c0,0x0587d8b8,0x2ff698e5,0xf6f27896 +.long 0x89ee6256,0xed38ef1c,0x6b353b45,0xf44ee1fe,0x70e903b3,0x9115c0c7,0x818f31df,0xc78ec0a1,0xb7dccbc6,0x6c003324,0x163bbc25,0xd96dd1f3,0x5cedd805,0x33aa82dd,0x7f7eb2f1,0x123aae4f +.long 0xa26262cd,0x1723fcf5,0x0060ebd5,0x1f7f4d5d,0xb2eaa3af,0xf19c5c01,0x9790accf,0x2ccb9b14,0x52324aa6,0x1f9c1cad,0x7247df54,0x63200526,0xbac96f82,0x5732fe42,0x01a1c384,0x52fe771f +.long 0xb1001684,0x546ca13d,0xa1709f75,0xb56b4eee,0xd5db8672,0x266545a9,0x1e8f3cfb,0xed971c90,0xe3a07b29,0x4e7d8691,0xe4b696b9,0x7570d9ec,0x7bc7e9ae,0xdc5fa067,0xc82c4844,0x68b44caf +.long 0xbf44da80,0x519d34b3,0x5ab32e66,0x283834f9,0x6278a000,0x6e608797,0x627312f6,0x1e62960e,0xe6901c55,0x9b87b27b,0x24fdbc1f,0x80e78538,0x2facc27d,0xbbbc0951,0xac143b5a,0x06394239 +.long 0x376c1944,0x35bb4a40,0x63da1511,0x7cb62694,0xb7148a3b,0xafd29161,0x4e2ea2ee,0xa6f9d9ed,0x880dd212,0x15dc2ca2,0xa61139a9,0x903c3813,0x6c0f8785,0x2aa7b46d,0x901c60ff,0x36ce2871 +.long 0xe10d9c12,0xc683b028,0x032f33d3,0x7573baa2,0x67a31b58,0x87a9b1f6,0xf4ffae12,0xfd3ed11a,0x0cb2748e,0x83dcaa9a,0x5d6fdf16,0x8239f018,0x72753941,0xba67b49c,0xc321cb36,0x2beec455 +.long 0x3f8b84ce,0x88015606,0x8d38c86f,0x76417083,0x598953dd,0x054f1ca7,0x4e8e7429,0xc939e110,0x5a914f2f,0x9b1ac2b3,0xe74b8f9c,0x39e35ed3,0x781b2fb0,0xd0debdb2,0x2d997ba2,0x1585638f +.long 0x9e2fce99,0x9c4b646e,0x1e80857f,0x68a21081,0x3643b52a,0x06d54e44,0x0d8eb843,0xde8d6d63,0x42146a0a,0x70321563,0x5eaa3622,0x8ba826f2,0x86138787,0x227a58bd,0x10281d37,0x43b6c03c +.long 0xb54dde39,0x6326afbb,0xdb6f2d5f,0x744e5e8a,0xcff158e1,0x48b2a99a,0xef87918f,0xa93c8fa0,0xde058c5c,0x2182f956,0x936f9e7a,0x216235d2,0xd2e31e67,0xace0c0db,0xf23ac3e7,0xc96449bf +.long 0x170693bd,0x7e9a2874,0xa45e6335,0xa28e14fd,0x56427344,0x5757f6b3,0xacf8edf9,0x822e4556,0xe6a285cd,0x2b7a6ee2,0xa9df3af0,0x5866f211,0xf845b844,0x40dde2dd,0x110e5e49,0x986c3726 +.long 0xf7172277,0x73680c2a,0x0cccb244,0x57b94f0f,0x2d438ca7,0xbdff7267,0xcf4663fd,0xbad1ce11,0xd8f71cae,0x9813ed9d,0x961fdaa6,0xf43272a6,0xbd6d1637,0xbeff0119,0x30361978,0xfebc4f91 +.long 0x2f41deff,0x02b37a95,0xe63b89b7,0x0e44a59a,0x143ff951,0x673257dc,0xd752baf4,0x19c02205,0xc4b7d692,0x46c23069,0xfd1502ac,0x2e6392c3,0x1b220846,0x6057b1a2,0x0c1b5b63,0xe51ff946 +.long 0x566c5c43,0x6e85cb51,0x3597f046,0xcff9c919,0x4994d94a,0x9354e90c,0x2147927d,0xe0a39332,0x0dc1eb2b,0x8427fac1,0x2ff319fa,0x88cfd8c2,0x01965274,0xe2d4e684,0x67aaa746,0xfa2e067d +.long 0x3e5f9f11,0xb6d92a7f,0xd6cb3b8e,0x9afe153a,0xddf800bd,0x4d1a6dd7,0xcaf17e19,0xf6c13cc0,0x325fc3ee,0x15f6c58e,0xa31dc3b2,0x71095400,0xafa3d3e7,0x168e7c07,0x94c7ae2d,0x3f8417a1 +.long 0x813b230d,0xec234772,0x17344427,0x634d0f5f,0xd77fc56a,0x11548ab1,0xce06af77,0x7fab1750,0x4f7c4f83,0xb62c10a7,0x220a67d9,0xa7d2edc4,0x921209a0,0x1c404170,0xface59f0,0x0b9815a0 +.long 0x319540c3,0x2842589b,0xa283d6f8,0x18490f59,0xdaae9fcb,0xa2731f84,0xc3683ba0,0x3db6d960,0x14611069,0xc85c63bb,0x0788bf05,0xb19436af,0x347460d2,0x905459df,0xe11a7db1,0x73f6e094 +.long 0xb6357f37,0xdc7f938e,0x2bd8aa62,0xc5d00f79,0x2ca979fc,0xc878dcb9,0xeb023a99,0x37e83ed9,0x1560bf3d,0x6b23e273,0x1d0fae61,0x1086e459,0x9a9414bd,0x78248316,0xf0ea9ea1,0x1b956bc0 +.long 0xc31b9c38,0x7b85bb91,0x48ef57b5,0x0c5aa90b,0xaf3bab6f,0xdedeb169,0x2d373685,0xe610ad73,0x02ba8e15,0xf13870df,0x8ca7f771,0x0337edb6,0xb62c036c,0xe4acf747,0xb6b94e81,0xd921d576 +.long 0x2c422f7a,0xdbc86439,0xed348898,0xfb635362,0xc45bfcd1,0x83084668,0x2b315e11,0xc357c9e3,0x5b2e5b8c,0xb173b540,0xe102b9a4,0x7e946931,0x7b0fb199,0x17c890eb,0xd61b662b,0xec225a83 +.long 0xee3c76cb,0xf306a3c8,0xd32a1f6e,0x3cf11623,0x6863e956,0xe6d5ab64,0x5c005c26,0x3b8a4cbe,0x9ce6bb27,0xdcd529a5,0x04d4b16f,0xc4afaa52,0x7923798d,0xb0624a26,0x6b307fab,0x85e56df6 +.long 0x2bf29698,0x0281893c,0xd7ce7603,0x91fc19a4,0xad9a558f,0x75a5dca3,0x4d50bf77,0x40ceb3fa,0xbc9ba369,0x1baf6060,0x597888c2,0x927e1037,0x86a34c07,0xd936bf19,0xc34ae980,0xd4cf10c1 +.long 0x859dd614,0x3a3e5334,0x18d0c8ee,0x9c475b5b,0x07cd51d5,0x63080d1f,0xb88b4326,0xc9c0d0a6,0xc234296f,0x1ac98691,0x94887fb6,0x2a0a83a4,0x0cea9cf2,0x56511427,0xa24802f5,0x5230a6e8 +.long 0x72e3d5c1,0xf7a2bf0f,0x4f21439e,0x37717446,0x9ce30334,0xfedcbf25,0x7ce202f9,0xe0030a78,0x1202e9ca,0x6f2d9ebf,0x75e6e591,0xe79dde6c,0xf1dac4f8,0xf52072af,0xbb9b404d,0x6c8d087e +.long 0xbce913af,0xad0fc73d,0x458a07cb,0x909e587b,0xd4f00c8a,0x1300da84,0xb54466ac,0x425cd048,0x90e9d8bf,0xb59cb9be,0x3e431b0e,0x991616db,0x531aecff,0xd3aa117a,0x59f4dc3b,0x91af92d3 +.long 0xe93fda29,0x9b1ec292,0xe97d91bc,0x76bb6c17,0xaface1e6,0x7509d95f,0xbe855ae3,0x3653fe47,0x0f680e75,0x73180b28,0xeeb6c26c,0x75eefd1b,0xb66d4236,0xa4cdf29f,0x6b5821d8,0x2d70a997 +.long 0x20445c36,0x7a3ee207,0x59877174,0x71d1ac82,0x949f73e9,0x0fc539f7,0x982e3081,0xd05cf3d7,0x7b1c7129,0x8758e20b,0x569e61f2,0xffadcc20,0x59544c2d,0xb05d3a2f,0x9fff5e53,0xbe16f5c1 +.long 0xaad58135,0x73cf65b8,0x037aa5be,0x622c2119,0x646fd6a0,0x79373b3f,0x0d3978cf,0x0e029db5,0x94fba037,0x8bdfc437,0x620797a6,0xaefbd687,0xbd30d38e,0x3fa5382b,0x585d7464,0x7627cfbf +.long 0x4e4ca463,0xb2330fef,0x3566cc63,0xbcef7287,0xcf780900,0xd161d2ca,0x5b54827d,0x135dc539,0x27bf1bc6,0x638f052e,0x07dfa06c,0x10a224f0,0x6d3321da,0xe973586d,0x26152c8f,0x8b0c5738 +.long 0x34606074,0x07ef4f2a,0xa0f7047a,0x80fe7fe8,0xe1a0e306,0x3d1a8152,0x88da5222,0x32cf43d8,0x5f02ffe6,0xbf89a95f,0x806ad3ea,0x3d9eb9a4,0x79c8e55e,0x012c17bb,0x99c81dac,0xfdcd1a74 +.long 0xb9556098,0x7043178b,0x801c3886,0x4090a1df,0x9b67b912,0x759800ff,0x232620c8,0x3e5c0304,0x70dceeca,0x4b9d3c4b,0x181f648e,0xbb2d3c15,0x6e33345c,0xf981d837,0x0cf2297a,0xb626289b +.long 0x8baebdcf,0x766ac659,0x75df01e5,0x1a28ae09,0x375876d8,0xb71283da,0x607b9800,0x4865a96d,0x237936b2,0x25dd1bcd,0x60417494,0x332f4f4b,0x370a2147,0xd0923d68,0xdc842203,0x497f5dfb +.long 0x32be5e0f,0x9dc74cbd,0x17a01375,0x7475bcb7,0x50d872b1,0x438477c9,0xffe1d63d,0xcec67879,0xd8578c70,0x9b006014,0x78bb6b8b,0xc9ad99a8,0x11fb3806,0x6799008e,0xcd44cab3,0xcfe81435 +.long 0x2f4fb344,0xa2ee1582,0x483fa6eb,0xb8823450,0x652c7749,0x622d323d,0xbeb0a15b,0xd8474a98,0x5d1c00d0,0xe43c154d,0x0e3e7aac,0x7fd581d9,0x2525ddf8,0x2b44c619,0xb8ae9739,0x67a033eb +.long 0x9ef2d2e4,0x113ffec1,0xd5a0ea7f,0x1bf6767e,0x03714c0a,0x57fff75e,0x0a23e9ee,0xa23c422e,0x540f83af,0xdd5f6b2d,0x55ea46a7,0xc2c2c27e,0x672a1208,0xeb6b4246,0xae634f7a,0xd13599f7 +.long 0xd7b32c6e,0xcf914b5c,0xeaf61814,0x61a5a640,0x208a1bbb,0x8dc3df8b,0xb6d79aa5,0xef627fd6,0xc4c86bc8,0x44232ffc,0x061539fe,0xe6f9231b,0x958b9533,0x1d04f25a,0x49e8c885,0x180cf934 +.long 0x9884aaf7,0x89689595,0x07b348a6,0xb1959be3,0x3c147c87,0x96250e57,0xdd0c61f8,0xae0efb3a,0xca8c325e,0xed00745e,0xecff3f70,0x3c911696,0x319ad41d,0x73acbc65,0xf0b1c7ef,0x7b01a020 +.long 0x63a1483f,0xea32b293,0x7a248f96,0x89eabe71,0x343157e5,0x9c6231d3,0xdf3c546d,0x93a375e5,0x6a2afe69,0xe76e9343,0xe166c88e,0xc4f89100,0x4f872093,0x248efd0d,0x8fe0ea61,0xae0eb3ea +.long 0x9d79046e,0xaf89790d,0x6cee0976,0x4d650f2d,0x43071eca,0xa3935d9a,0x283b0bfe,0x66fcd2c9,0x696605f1,0x0e665eb5,0xa54cd38d,0xe77e5d07,0x43d950cf,0x90ee050a,0xd32e69b5,0x86ddebda +.long 0xfddf7415,0x6ad94a3d,0x3f6e8d5a,0xf7fa1309,0xe9957f75,0xc4831d1d,0xd5817447,0x7de28501,0x9e2aeb6b,0x6f1d7078,0xf67a53c2,0xba2b9ff4,0xdf9defc3,0x36963767,0x0d38022c,0x479deed3 +.long 0x3a8631e8,0xd2edb89b,0x7a213746,0x8de855de,0xb00c5f11,0xb2056cb7,0x2c9b85e4,0xdeaefbd0,0xd150892d,0x03f39a8d,0x218b7985,0x37b84686,0xb7375f1a,0x36296dd8,0xb78e898e,0x472cd4b1 +.long 0xe9f05de9,0x15dff651,0x2ce98ba9,0xd4045069,0x9b38024c,0x8466a7ae,0xe5a6b5ef,0xb910e700,0xb3aa8f0d,0xae1c56ea,0x7eee74a6,0xbab2a507,0x4b4c4620,0x0dca11e2,0x4c47d1f4,0xfd896e2e +.long 0x308fbd93,0xeb45ae53,0x02c36fda,0x46cd5a2e,0xbaa48385,0x6a3d4e90,0x9dbe9960,0xdd55e62e,0x2a81ede7,0xa1406aa0,0xf9274ea7,0x6860dd14,0x80414f86,0xcfdcb0c2,0x22f94327,0xff410b10 +.long 0x49ad467b,0x5a33cc38,0x0a7335f1,0xefb48b6c,0xb153a360,0x14fb54a4,0xb52469cc,0x604aa9d2,0x754e48e9,0x5e9dc486,0x37471e8e,0x693cb455,0x8d3b37b6,0xfb2fd7cd,0xcf09ff07,0x63345e16 +.long 0x23a5d896,0x9910ba6b,0x7fe4364e,0x1fe19e35,0x9a33c677,0x6e1da8c3,0x29fd9fd0,0x15b4488b,0x1a1f22bf,0x1f439254,0xab8163e8,0x920a8a70,0x07e5658e,0x3fd1b249,0xb6ec839b,0xf2c4f79c +.long 0x4aa38d1b,0x1abbc3d0,0xb5d9510e,0x3b0db35c,0x3e60dec0,0x1754ac78,0xea099b33,0x53272fd7,0x07a8e107,0x5fb0494f,0x6a8191fa,0x4a89e137,0x3c4ad544,0xa113b7f6,0x6cb9897b,0x88a2e909 +.long 0xb44a3f84,0x17d55de3,0x17c6c690,0xacb2f344,0x10232390,0x32088168,0x6c733bf7,0xf2e8a61f,0x9c2d7652,0xa774aab6,0xed95c5bc,0xfb5307e3,0x4981f110,0xa05c73c2,0xa39458c9,0x1baae31c +.long 0xcbea62e7,0x1def185b,0xeaf63059,0xe8ac9eae,0x9921851c,0x098a8cfd,0x3abe2f5b,0xd959c3f1,0x20e40ae5,0xa4f19525,0x07a24aa1,0x320789e3,0x7392b2bc,0x259e6927,0x1918668b,0x58f6c667 +.long 0xc55d2d8b,0xce1db2bb,0xf4f6ca56,0x41d58bb7,0x8f877614,0x7650b680,0xf4c349ed,0x905e16ba,0xf661acac,0xed415140,0xcb2270af,0x3b8784f0,0x8a402cba,0x3bc280ac,0x0937921a,0xd53f7146 +.long 0xe5681e83,0xc03c8ee5,0xf6ac9e4a,0x62126105,0x936b1a38,0x9503a53f,0x782fecbd,0x3d45e2d4,0x76e8ae98,0x69a5c439,0xbfb4b00e,0xb53b2eeb,0x72386c89,0xf1674712,0x4268bce4,0x30ca34a2 +.long 0x78341730,0x7f1ed86c,0xb525e248,0x8ef5beb8,0xb74fbf38,0xbbc489fd,0x91a0b382,0x38a92a0e,0x22433ccf,0x7a77ba3f,0xa29f05a9,0xde8362d6,0x61189afc,0x7f6a30ea,0x59ef114f,0x693b5505 +.long 0xcd1797a1,0x50266bc0,0xf4b7af2d,0xea17b47e,0x3df9483e,0xd6c4025c,0xa37b18c9,0x8cbb9d9f,0x4d8424cf,0x91cbfd9c,0xab1c3506,0xdb7048f1,0x028206a3,0x9eaf641f,0x25bdf6ce,0xf986f3f9 +.long 0x224c08dc,0x262143b5,0x81b50c91,0x2bbb09b4,0xaca8c84f,0xc16ed709,0xb2850ca8,0xa6210d9d,0x09cb54d6,0x6d8df67a,0x500919a4,0x91eef6e0,0x0f132857,0x90f61381,0xf8d5028b,0x9acede47 +.long 0x90b771c3,0x844d1b71,0xba6426be,0x563b71e4,0xbdb802ff,0x2efa2e83,0xab5b4a41,0x3410cbab,0x30da84dd,0x555b2d26,0xee1cc29a,0xd0711ae9,0x2f547792,0xcf3e8c60,0xdc678b35,0x03d7d5de +.long 0xced806b8,0x071a2fa8,0x697f1478,0x222e6134,0xabfcdbbf,0xdc16fd5d,0x121b53b8,0x44912ebf,0x2496c27c,0xac943674,0x1ffc26b0,0x8ea3176c,0x13debf2c,0xb6e224ac,0xf372a832,0x524cc235 +.long 0x9f6f1b18,0xd706e1d8,0x44cce35b,0x2552f005,0xa88e31fc,0x8c8326c2,0xf9552047,0xb5468b2c,0x3ff90f2b,0xce683e88,0x2f0a5423,0x77947bdf,0xed56e328,0xd0a1b28b,0xc20134ac,0xaee35253 +.long 0x3567962f,0x7e98367d,0x8188bffb,0x379ed61f,0xfaf130a1,0x73bba348,0x904ed734,0x6c1f75e1,0x3b4a79fc,0x18956642,0x54ef4493,0xf20bc83d,0x9111eca1,0x836d425d,0x009a8dcf,0xe5b5c318 +.long 0x13221bc5,0x3360b25d,0x6b3eeaf7,0x707baad2,0x743a95a1,0xd7279ed8,0x969e809f,0x7450a875,0xe5d0338f,0x32b6bd53,0x2b883bbc,0x1e77f7af,0x1063ecd0,0x90da12cc,0xc315be47,0xe2697b58 +.long 0xda85d534,0x2771a5bd,0xff980eea,0x53e78c1f,0x900385e7,0xadf1cf84,0xc9387b62,0x7d3b14f6,0xcb8f2bd2,0x170e74b0,0x827fa993,0x2d50b486,0xf6f32bab,0xcdbe8c9a,0xc3b93ab8,0x55e906b0 +.long 0x8fe280d1,0x747f22fc,0xb2e114ab,0xcd8e0de5,0xe10b68b0,0x5ab7dbeb,0xa480d4b2,0x9dc63a9c,0x4be1495f,0x78d4bc3b,0x9359122d,0x25eb3db8,0x0809cbdc,0x3f8ac05b,0xd37c702f,0xbf4187bb +.long 0x1416a6a5,0x84cea069,0x43ef881c,0x8f860c79,0x38038a5d,0x41311f8a,0xfc612067,0xe78c2ec0,0x5ad73581,0x494d2e81,0x59604097,0xb4cc9e00,0xf3612cba,0xff558aec,0x9e36c39e,0x35beef7a +.long 0xdbcf41b9,0x1845c7cf,0xaea997c0,0x5703662a,0xe402f6d8,0x8b925afe,0x4dd72162,0xd0a1b1ae,0x03c41c4b,0x9f47b375,0x0391d042,0xa023829b,0x503b8b0a,0x5f5045c3,0x98c010e5,0x123c2688 +.long 0x36ba06ee,0x324ec0cc,0x3dd2cc0c,0xface3115,0xf333e91f,0xb364f3be,0x28e832b0,0xef8aff73,0x2d05841b,0x1e9bad04,0x356a21e2,0x42f0e3df,0x4add627e,0xa3270bcb,0xd322e711,0xb09a8158 +.long 0x0fee104a,0x86e326a1,0x3703f65d,0xad7788f8,0x47bc4833,0x7e765430,0x2b9b893a,0x6cee582b,0xe8f55a7b,0x9cd2a167,0xd9e4190d,0xefbee3c6,0xd40c2e9d,0x33ee7185,0xa380b548,0x844cc9c5 +.long 0x66926e04,0x323f8ecd,0x8110c1ba,0x0001e38f,0xfc6a7f07,0x8dbcac12,0x0cec0827,0xd65e1d58,0xbe76ca2d,0xd2cd4141,0xe892f33a,0x7895cf5c,0x367139d2,0x956d230d,0xd012c4c1,0xa91abd3e +.long 0x87eb36bf,0x34fa4883,0x914b8fb4,0xc5f07102,0xadb9c95f,0x90f0e579,0x28888195,0xfe6ea8cb,0xedfa9284,0x7b9b5065,0x2b8c8d65,0x6c510bd2,0xcbe8aafd,0xd7b8ebef,0x96b1da07,0xedb3af98 +.long 0x6295d426,0x28ff779d,0x3fa3ad7b,0x0c4f6ac7,0x8b8e2604,0xec44d054,0x8b0050e1,0x9b32a66d,0xf0476ce2,0x1f943366,0xa602c7b4,0x7554d953,0x524f2809,0xbe35aca6,0xfd4edbea,0xb6881229 +.long 0x508efb63,0xe8cd0c8f,0x6abcefc7,0x9eb5b5c8,0xb441ab4f,0xf5621f5f,0xb76a2b22,0x79e6c046,0xe37a1f69,0x74a4792c,0x03542b60,0xcbd252cb,0xb3c20bd3,0x785f65d5,0x4fabc60c,0x8dea6143 +.long 0xde673629,0x45e21446,0x703c2d21,0x57f7aa1e,0x98c868c7,0xa0e99b7f,0x8b641676,0x4e42f66d,0x91077896,0x602884dc,0xc2c9885b,0xa0d690cf,0x3b9a5187,0xfeb4da33,0x153c87ee,0x5f789598 +.long 0x52b16dba,0x2192dd47,0x3524c1b1,0xdeefc0e6,0xe4383693,0x465ea76e,0x361b8d98,0x79401711,0xf21a15cb,0xa5f9ace9,0xefee9aeb,0x73d26163,0xe677016c,0xcca844b3,0x57eaee06,0x6c122b07 +.long 0x15f09690,0xb782dce7,0x2dfc0fc9,0x508b9b12,0x65d89fc6,0x9015ab4b,0xd6d5bb0f,0x5e79dab7,0x6c775aa2,0x64f021f0,0x37c7eca1,0xdf09d8cc,0xef2fa506,0x9a761367,0x5b81eec6,0xed4ca476 +.long 0x10bbb8b5,0x262ede36,0x0641ada3,0x0737ce83,0xe9831ccc,0x4c94288a,0x8065e635,0x487fc1ce,0xb8bb3659,0xb13d7ab3,0x855e4120,0xdea5df3e,0x85eb0244,0xb9a18573,0xa7cfe0a3,0x1a1b8ea3 +.long 0x67b0867c,0x3b837119,0x9d364520,0x8d5e0d08,0xd930f0e3,0x52dccc1e,0xbf20bbaf,0xefbbcec7,0x0263ad10,0x99cffcab,0xfcd18f8a,0xd8199e6d,0xe9f10617,0x64e2773f,0x08704848,0x0079e8e1 +.long 0x8a342283,0x1169989f,0xa83012e6,0x8097799c,0x8a6a9001,0xece966cb,0x072ac7fc,0x93b3afef,0x2db3d5ba,0xe6893a2a,0x89bf4fdc,0x263dc462,0xe0396673,0x8852dfc9,0x3af362b6,0x7ac70895 +.long 0x5c2f342b,0xbb9cce4d,0xb52d7aae,0xbf80907a,0x2161bcd0,0x97f3d3cd,0x0962744d,0xb25b0834,0x6c3a1dda,0xc5b18ea5,0x06c92317,0xfe4ec7eb,0xad1c4afe,0xb787b890,0x0ede801a,0xdccd9a92 +.long 0xdb58da1f,0x9ac6ddda,0xb8cae6ee,0x22bbc12f,0x815c4a43,0xc6f8bced,0xf96480c7,0x8105a92c,0x7a859d51,0x0dc3dbf3,0x3041196b,0xe3ec7ce6,0x0d1067c9,0xd9f64b25,0x3d1f8dd8,0xf2321321 +.long 0x76497ee8,0x8b5c619c,0xc717370e,0x5d2b0ac6,0x4fcf68e1,0x98204cb6,0x62bc6792,0x0bdec211,0xa63b1011,0x6973ccef,0xe0de1ac5,0xf9e3fa97,0x3d0e0c8b,0x5efb693e,0xd2d4fcb4,0x037248e9 +.long 0x1ec34f9e,0x80802dc9,0x33810603,0xd8772d35,0x530cb4f3,0x3f06d66c,0xc475c129,0x7be5ed0d,0x31e82b10,0xcb9e3c19,0xc9ff6b4c,0xc63d2857,0x92a1b45e,0xb92118c6,0x7285bbca,0x0aec4414 +.long 0x1e29a3ef,0xfc189ae7,0x4c93302e,0xcbe906f0,0xceaae10e,0xd0107914,0xb68e19f8,0xb7a23f34,0xefd2119d,0xe9d875c2,0xfcadc9c8,0x03198c6e,0x4da17113,0x65591bf6,0x3d443038,0x3cf0bbf8 +.long 0x2b724759,0xae485bb7,0xb2d4c63a,0x945353e1,0xde7d6f2c,0x82159d07,0x4ec5b109,0x389caef3,0xdb65ef14,0x4a8ebb53,0xdd99de43,0x2dc2cb7e,0x83f2405f,0x816fa3ed,0xc14208a3,0x73429bb9 +.long 0xb01e6e27,0xb618d590,0xe180b2dc,0x047e2ccd,0x04aea4a9,0xd1b299b5,0x9fa403a4,0x412c9e1e,0x79407552,0x88d28a36,0xf332b8e3,0x49c50136,0xe668de19,0x3a1b6fcc,0x75122b97,0x178851bc +.long 0xfb85fa4c,0xb1e13752,0x383c8ce9,0xd61257ce,0xd2f74dae,0xd43da670,0xbf846bbb,0xa35aa23f,0x4421fc83,0x5e74235d,0xc363473b,0xf6df8ee0,0x3c4aa158,0x34d7f52a,0x9bc6d22e,0x50d05aab +.long 0xa64785f4,0x8c56e735,0x5f29cd07,0xbc56637b,0x3ee35067,0x53b2bb80,0xdc919270,0x50235a0f,0xf2c4aa65,0x191ab6d8,0x8396023b,0xc3475831,0xf0f805ba,0x80400ba5,0x5ec0f80f,0x8881065b +.long 0xcc1b5e83,0xc370e522,0x860b8bfb,0xde2d4ad1,0x67b256df,0xad364df0,0xe0138997,0x8f12502e,0x7783920a,0x503fa0dc,0xc0bc866a,0xe80014ad,0xd3064ba6,0x3f89b744,0xcba5dba5,0x03511dcd +.long 0x95a7b1a2,0x197dd46d,0x3c6341fb,0x9c4e7ad6,0x484c2ece,0x426eca29,0xde7f4f8a,0x9211e489,0xc78ef1f4,0x14997f6e,0x06574586,0x2b2c0910,0x1c3eede8,0x17286a6e,0x0f60e018,0x25f92e47 +.long 0x31890a36,0x805c5646,0x57feea5b,0x703ef600,0xaf3c3030,0x389f747c,0x54dd3739,0xe0e5daeb,0xc9c9f155,0xfe24a4c3,0xb5393962,0x7e4bf176,0xaf20bf29,0x37183de2,0xf95a8c3b,0x4a1bd7b5 +.long 0x46191d3d,0xa83b9699,0x7b87f257,0x281fc8dd,0x54107588,0xb18e2c13,0x9b2bafe8,0x6372def7,0x0d8972ca,0xdaf4bb48,0x56167a3f,0x3f2dd4b7,0x84310cf4,0x1eace32d,0xe42700aa,0xe3bcefaf +.long 0xd785e73d,0x5fe5691e,0x2ea60467,0xa5db5ab6,0xdfc6514a,0x02e23d41,0xe03c3665,0x35e8048e,0x1adaa0f8,0x3f8b118f,0x84ce1a5a,0x28ec3b45,0x2c6646b8,0xe8cacc6e,0xdbd0e40f,0x1343d185 +.long 0xcaaa358c,0xe5d7f844,0x9924182a,0x1a1db7e4,0x9c875d9a,0xd64cd42d,0x042eeec8,0xb37b515f,0x7b165fbe,0x4d4dd409,0xe206eff3,0xfc322ed9,0x59b7e17e,0x7dee4102,0x8236ca00,0x55a481c0 +.long 0xc23fc975,0x8c885312,0x05d6297b,0x15715806,0xf78edd39,0xa078868e,0x03c45e52,0x956b31e0,0xff7b33a6,0x470275d5,0x0c7e673f,0xc8d5dc3a,0x7e2f2598,0x419227b4,0x4c14a975,0x8b37b634 +.long 0x8b11888c,0xd0667ed6,0x803e25dc,0x5e0e8c3e,0xb987a24a,0x34e5d0dc,0xae920323,0x9f40ac3b,0x34e0f63a,0x5463de95,0x6b6328f9,0xa128bf92,0xda64f1b7,0x491ccd7c,0xc47bde35,0x7ef1ec27 +.long 0xa36a2737,0xa857240f,0x63621bc1,0x35dc1366,0xd4fb6897,0x7a3a6453,0xc929319d,0x80f1a439,0xf8cb0ba0,0xfc18274b,0x8078c5eb,0xb0b53766,0x1e01d0ef,0xfb0d4924,0x372ab09c,0x50d7c67d +.long 0x3aeac968,0xb4e370af,0xc4b63266,0xe4f7fee9,0xe3ac5664,0xb4acd4c2,0xceb38cbf,0xf8910bd2,0xc9c0726e,0x1c3ae50c,0xd97b40bf,0x15309569,0xfd5a5a1b,0x70884b7f,0xef8314cd,0x3890896a +.long 0xa5618c93,0x58e1515c,0x77d942d1,0xe665432b,0xb6f767a8,0xb32181bf,0x3a604110,0x753794e8,0xe8c0dbcc,0x09afeb7c,0x598673a3,0x31e02613,0x7d46db00,0x5d98e557,0x9d985b28,0xfc21fb8c +.long 0xb0843e0b,0xc9040116,0x69b04531,0x53b1b3a8,0x85d7d830,0xdd1649f0,0xcb7427e8,0xbb3bcc87,0xc93dce83,0x77261100,0xa1922a2a,0x7e79da61,0xf3149ce8,0x587a2b02,0xde92ec83,0x147e1384 +.long 0xaf077f30,0x484c83d3,0x0658b53a,0xea78f844,0x027aec53,0x912076c2,0x93c8177d,0xf34714e3,0xc2376c84,0x37ef5d15,0x3d1aa783,0x8315b659,0xef852a90,0x3a75c484,0x16086bd4,0x0ba0c58a +.long 0x529a6d48,0x29688d7a,0xc2f19203,0x9c7f250d,0x682e2df9,0x123042fb,0xad8121bc,0x2b7587e7,0xe0182a65,0x30fc0233,0xe3e1128a,0xb82ecf87,0x93fb098f,0x71682861,0x85e9e6a7,0x043e21ae +.long 0x66c834ea,0xab5b49d6,0x47414287,0x3be43e18,0x219a2a47,0xf40fb859,0xcc58df3c,0x0e6559e9,0x0c6615b4,0xfe1dfe8e,0x56459d70,0x14abc8fd,0x05de0386,0x7be0fa8e,0xe9035c7c,0x8e63ef68 +.long 0x53b31e91,0x116401b4,0x4436b4d8,0x0cba7ad4,0x107afd66,0x9151f9a0,0x1f0ee4c4,0xafaca8d0,0x9ee9761c,0x75fe5c1d,0xf0c0588f,0x3497a16b,0x0304804c,0x3ee2bebd,0xc2c990b9,0xa8fb9a60 +.long 0x39251114,0xd14d32fe,0xcac73366,0x36bf25bc,0xdba7495c,0xc9562c66,0x46ad348b,0x324d301b,0xd670407e,0x9f46620c,0xe3733a01,0x0ea8d4f1,0xb0c324e0,0xd396d532,0x03c317cd,0x5b211a0e +.long 0x5ffe7b37,0x090d7d20,0x1747d2da,0x3b7f3efb,0xb54fc519,0xa2cb525f,0xf66a971e,0x6e220932,0xb486d440,0xddc160df,0x3fe13465,0x7fcfec46,0x76e4c151,0x83da7e4e,0xd8d302b5,0xd6fa48a1 +.long 0x5872cd88,0xc6304f26,0x278b90a1,0x806c1d3c,0xcaf0bc1c,0x3553e725,0xbb9d8d5c,0xff59e603,0x7a0b85dd,0xa4550f32,0x93ecc217,0xdec5720a,0x69d62213,0x0b88b741,0x5b365955,0x7212f245 +.long 0xb5cae787,0x20764111,0x1dfd3124,0x13cb7f58,0x1175aefb,0x2dca77da,0xffaae775,0xeb75466b,0xdb6cff32,0x74d76f3b,0x61fcda9a,0x7440f37a,0xb525028b,0x1bb3ac92,0xa1975f29,0x20fbf8f7 +.long 0xdf83097f,0x982692e1,0x554b0800,0x28738f6c,0xa2ce2f2f,0xdc703717,0x40814194,0x7913b93c,0x1fe89636,0x04924593,0xf78834a6,0x7b98443f,0x5114a5a1,0x11c6ab01,0xffba5f4c,0x60deb383 +.long 0x01a982e6,0x4caa54c6,0x3491cd26,0x1dd35e11,0x7cbd6b05,0x973c315f,0x52494724,0xcab00775,0x6565e15a,0x04659b1f,0x8c8fb026,0xbf30f529,0xa8a0de37,0xfc21641b,0xfa5e5114,0xe9c7a366 +.long 0x52f03ad8,0xdb849ca5,0x024e35c0,0xc7e8dbe9,0xcfc3c789,0xa1a2bbac,0x9c26f262,0xbf733e7d,0xb8444823,0x882ffbf5,0x6bf8483b,0xb7224e88,0x65bef640,0x53023b8b,0xd4d5f8cd,0xaabfec91 +.long 0x079ea1bd,0xa40e1510,0xd05d5d26,0x1ad9addc,0x13e68d4f,0xdb3f2eab,0x640f803f,0x1cff1ae2,0xd4cee117,0xe0e7b749,0x4036d909,0x8e9f275b,0x8f4d4c38,0xce34e31d,0xd75130fc,0x22b37f69 +.long 0xb4014604,0x83e0f1fd,0x89415078,0xa8ce9919,0x41792efe,0x82375b75,0x97d4515b,0x4f59bf5c,0x923a277d,0xac4f324f,0x650f3406,0xd9bc9b7d,0x8a39bc51,0xc6fa87d1,0x5ccc108f,0x82588530 +.long 0x82e4c634,0x5ced3c9f,0x3a4464f8,0x8efb8314,0x7a1dca25,0xe706381b,0x5a2a412b,0x6cd15a3c,0xbfcd8fb5,0x9347a8fd,0x6e54cd22,0x31db2eef,0xf8d8932f,0xc4aeb11e,0x344411af,0x11e7c1ed +.long 0xdc9a151e,0x2653050c,0x3bb0a859,0x9edbfc08,0xfd5691e7,0x926c81c7,0x6f39019a,0x9c1b2342,0x7f8474b9,0x64a81c8b,0x01761819,0x90657c07,0x55e0375a,0x390b3331,0xb6ebc47d,0xc676c626 +.long 0xb7d6dee8,0x51623247,0x79659313,0x0948d927,0xe9ab35ed,0x99700161,0x8ddde408,0x06cc32b4,0x061ef338,0x6f2fd664,0xc202e9ed,0x1606fa02,0x929ba99b,0x55388bc1,0x1e81df69,0xc4428c5e +.long 0xf91b0b2a,0xce2028ae,0xf03dfd3f,0xce870a23,0x0affe8ed,0x66ec2c87,0x284d0c00,0xb205fb46,0x44cefa48,0xbf5dffe7,0xa19876d7,0xb6fc37a8,0x08b72863,0xbecfa84c,0x2576374f,0xd7205ff5 +.long 0x8887de41,0x80330d32,0x869ea534,0x5de0df0c,0x3c56ea17,0x13f42753,0x452b1a78,0xeb1f6069,0xe30ea15c,0x50474396,0xc1494125,0x575816a1,0xfe6bb38f,0xbe1ce55b,0x96ae30f7,0xb901a948 +.long 0xd8fc3548,0xe5af0f08,0xd73bfd08,0x5010b5d0,0x53fe655a,0x993d2880,0x1c1309fd,0x99f2630b,0xb4e3b76f,0xd8677baf,0xb840784b,0x14e51ddc,0xbf0092ce,0x326c750c,0xf528320f,0xc83d306b +.long 0x77d4715c,0xc4456715,0x6b703235,0xd30019f9,0xd669e986,0x207ccb2e,0xf6dbfc28,0x57c824af,0xd8f92a23,0xf0eb532f,0x9bb98fd2,0x4a557fd4,0xc1e6199a,0xa57acea7,0x8b94b1ed,0x0c663820 +.long 0xf83a9266,0x9b42be8f,0x0101bd45,0xc7741c97,0x07bd9ceb,0x95770c11,0x8b2e0744,0x1f50250a,0x1477b654,0xf762eec8,0x15efe59a,0xc65b900e,0x9546a897,0x88c96148,0xc30b4d7c,0x7e8025b3 +.long 0x12045cf9,0xae4065ef,0x9ccce8bd,0x6fcb2caf,0xf2cf6525,0x1fa0ba4e,0xcb72c312,0xf683125d,0xe312410e,0xa01da4ea,0x6cd8e830,0x67e28677,0x98fb3f07,0xabd95752,0xeef649a5,0x05f11e11 +.long 0x9d3472c2,0xba47faef,0xc77d1345,0x3adff697,0xdd15afee,0x4761fa04,0xb9e69462,0x64f1f61a,0x9bfb9093,0xfa691fab,0xa1133dfe,0x3df8ae8f,0x58cc710d,0xcd5f8967,0x16c7fe79,0xfbb88d50 +.long 0xe88c50d1,0x8e011b4c,0xa8771c4f,0x7532e807,0xe2278ee4,0x64c78a48,0x3845072a,0x0b283e83,0x49e69274,0x98a6f291,0x1868b21c,0xb96e9668,0xb1a8908e,0x38f0adc2,0x1feb829d,0x90afcff7 +.long 0x210b0856,0x9915a383,0xdef04889,0xa5a80602,0x7c64d509,0x800e9af9,0xb8996f6f,0x81382d0b,0x81927e27,0x490eba53,0x4af50182,0x46c63b32,0xd3ad62ce,0x784c5fd9,0xf8ae8736,0xe4fa1870 +.long 0xd7466b25,0x4ec9d0bc,0xdb235c65,0x84ddbe1a,0x163c1688,0x5e2645ee,0x00eba747,0x570bd00e,0x128bfa0f,0xfa51b629,0x6c1d3b68,0x92fce1bd,0xb66778b1,0x3e7361dc,0x5561d2bb,0x9c7d249d +.long 0x0bbc6229,0xa40b28bf,0xdfd91497,0x1c83c05e,0xf083df05,0x5f9f5154,0xeee66c9d,0xbac38b3c,0xec0dfcfd,0xf71db7e3,0x8b0a8416,0xf2ecda8e,0x7812aa66,0x52fddd86,0x4e6f4272,0x2896ef10 +.long 0x0fe9a745,0xff27186a,0x49ca70db,0x08249fcd,0x441cac49,0x7425a2e6,0xece5ff57,0xf4a0885a,0x7d7ead58,0x6e2cb731,0x1898d104,0xf96cf7d6,0x4f2c9a89,0xafe67c9d,0x1c7bf5bc,0x89895a50 +.long 0x573cecfa,0xdc7cb8e5,0xd15f03e6,0x66497eae,0x3f084420,0x6bc0de69,0xacd532b0,0x323b9b36,0x0115a3c1,0xcfed390a,0x2d65ca0e,0x9414c40b,0x2f530c78,0x641406bd,0x833438f2,0x29369a44 +.long 0x903fa271,0x996884f5,0xb9da921e,0xe6da0fd2,0x5db01e54,0xa6f2f269,0x6876214e,0x1ee3e9bd,0xe27a9497,0xa26e181c,0x8e215e04,0x36d254e4,0x252cabca,0x42f32a6c,0x80b57614,0x99481487 +.long 0x40d9cae1,0x4c4dfe69,0x11a10f09,0x05869580,0x3491b64b,0xca287b57,0x3fd4a53b,0x77862d5d,0x50349126,0xbf94856e,0x71c5268f,0x2be30bd1,0xcbb650a6,0x10393f19,0x778cf9fd,0x639531fe +.long 0xb2935359,0x02556a11,0xaf8c126e,0xda38aa96,0x0960167f,0x47dbe6c2,0x501901cd,0x37bbabb6,0x2c947778,0xb6e979e0,0x7a1a1dc6,0xd69a5175,0x9d9faf0c,0xc3ed5095,0x1d5fa5f0,0x4dd9c096 +.long 0x64f16ea8,0xa0c4304d,0x7e718623,0x8b1cac16,0x7c67f03e,0x0b576546,0xcbd88c01,0x559cf5ad,0x0e2af19a,0x074877bb,0xa1228c92,0x1f717ec1,0x326e8920,0x70bcb800,0x4f312804,0xec6e2c5c +.long 0x3fca4752,0x426aea7d,0x2211f62a,0xf12c0949,0x7be7b6b5,0x24beecd8,0x36d7a27d,0xb77eaf4c,0xfda78fd3,0x154c2781,0x264eeabe,0x848a83b0,0x4ffe2bc4,0x81287ef0,0xb6b6fc2a,0x7b6d88c6 +.long 0xce417d99,0x805fb947,0x8b916cc4,0x4b93dcc3,0x21273323,0x72e65bb3,0x6ea9886e,0xbcc1badd,0x4bc5ee85,0x0e223011,0xc18ee1e4,0xa561be74,0xa6bcf1f1,0x762fd2d4,0x95231489,0x50e6a5a4 +.long 0xa00b500b,0xca96001f,0x5d7dcdf5,0x5c098cfc,0x8c446a85,0xa64e2d2e,0x971f3c62,0xbae9bcf1,0x8435a2c5,0x4ec22683,0x4bad4643,0x8ceaed6c,0xccccf4e3,0xe9f8fb47,0x1ce3b21e,0xbd4f3fa4 +.long 0xa3db3292,0xd79fb110,0xb536c66a,0xe28a37da,0x8e49e6a9,0x279ce87b,0xfdcec8e3,0x70ccfe8d,0x3ba464b2,0x2193e4e0,0xaca9a398,0x0f39d60e,0xf82c12ab,0x7d7932af,0x91e7e0f7,0xd8ff50ed +.long 0xfa28a7e0,0xea961058,0x0bf5ec74,0xc726cf25,0xdb229666,0xe74d55c8,0xa57f5799,0x0bd9abbf,0x4dfc47b3,0x7479ef07,0x0c52f91d,0xd9c65fc3,0x36a8bde2,0x8e0283fe,0x7d4b7280,0xa32a8b5e +.long 0x12e83233,0x6a677c61,0xdcc9bf28,0x0fbb3512,0x0d780f61,0x562e8ea5,0x1dc4e89c,0x0db8b22b,0x89be0144,0x0a6fd1fb,0xca57113b,0x8c77d246,0xff09c91c,0x4639075d,0x5060824c,0x5b47b17f +.long 0x16287b52,0x58aea2b0,0xd0cd8eb0,0xa1343520,0xc5d58573,0x6148b4d0,0x291c68ae,0xdd2b6170,0x1da3b3b7,0xa61b3929,0x08c4ac10,0x5f946d79,0x7217d583,0x4105d4a5,0x25e6de5e,0x5061da3d +.long 0xec1b4991,0x3113940d,0x36f485ae,0xf12195e1,0x731a2ee0,0xa7507fb2,0x6e9e196e,0x95057a8e,0x2e130136,0xa3c2c911,0x33c60d15,0x97dfbb36,0xb300ee2b,0xcaf3c581,0xf4bac8b8,0x77f25d90 +.long 0x6d840cd6,0xdb1c4f98,0xe634288c,0x471d62c0,0xcec8a161,0x8ec2f85e,0xfa6f4ae2,0x41f37cbc,0x4b709985,0x6793a20f,0xefa8985b,0x7a7bd33b,0x938e6446,0x2c6a3fbd,0x2a8d47c1,0x19042619 +.long 0xcc36975f,0x16848667,0x9d5f1dfb,0x02acf168,0x613baa94,0x62d41ad4,0x9f684670,0xb56fbb92,0xe9e40569,0xce610d0d,0x35489fef,0x7b99c65f,0x3df18b97,0x0c88ad1b,0x5d0e9edb,0x81b7d9be +.long 0xc716cc0a,0xd85218c0,0x85691c49,0xf4b5ff90,0xce356ac6,0xa4fd666b,0x4b327a7a,0x17c72895,0xda6be7de,0xf93d5085,0x3301d34e,0xff71530e,0xd8f448e8,0x4cd96442,0x2ed18ffa,0x9283d331 +.long 0x2a849870,0x4d33dd99,0x41576335,0xa716964b,0x179be0e5,0xff5e3a9b,0x83b13632,0x5b9d6b1b,0xa52f313b,0x3b8bd7d4,0x637a4660,0xc9dd95a0,0x0b3e218f,0x30035962,0xc7b28a3c,0xce1481a3 +.long 0x43228d83,0xab41b43a,0x4ad63f99,0x24ae1c30,0x46a51229,0x8e525f1a,0xcd26d2b4,0x14af860f,0x3f714aa1,0xd6baef61,0xeb78795e,0xf51865ad,0xe6a9d694,0xd3e21fce,0x8a37b527,0x82ceb1dd + +.text + + + +.p2align 6 +L$poly: +.quad 0xffffffffffffffff, 0x00000000ffffffff, 0x0000000000000000, 0xffffffff00000001 + + +L$RR: +.quad 0x0000000000000003, 0xfffffffbffffffff, 0xfffffffffffffffe, 0x00000004fffffffd + +L$One: +.long 1,1,1,1,1,1,1,1 +L$Two: +.long 2,2,2,2,2,2,2,2 +L$Three: +.long 3,3,3,3,3,3,3,3 +L$ONE_mont: +.quad 0x0000000000000001, 0xffffffff00000000, 0xffffffffffffffff, 0x00000000fffffffe + + +L$ord: +.quad 0xf3b9cac2fc632551, 0xbce6faada7179e84, 0xffffffffffffffff, 0xffffffff00000000 +L$ordK: +.quad 0xccd1c8aaee00bc4f + +.globl _ecp_nistz256_mul_by_2 + +.p2align 6 +_ecp_nistz256_mul_by_2: + + pushq %r12 + + pushq %r13 + +L$mul_by_2_body: + + movq 0(%rsi),%r8 + xorq %r13,%r13 + movq 8(%rsi),%r9 + addq %r8,%r8 + movq 16(%rsi),%r10 + adcq %r9,%r9 + movq 24(%rsi),%r11 + leaq L$poly(%rip),%rsi + movq %r8,%rax + adcq %r10,%r10 + adcq %r11,%r11 + movq %r9,%rdx + adcq $0,%r13 + + subq 0(%rsi),%r8 + movq %r10,%rcx + sbbq 8(%rsi),%r9 + sbbq 16(%rsi),%r10 + movq %r11,%r12 + sbbq 24(%rsi),%r11 + sbbq $0,%r13 + + cmovcq %rax,%r8 + cmovcq %rdx,%r9 + movq %r8,0(%rdi) + cmovcq %rcx,%r10 + movq %r9,8(%rdi) + cmovcq %r12,%r11 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 + + movq 8(%rsp),%r12 + + leaq 16(%rsp),%rsp + +L$mul_by_2_epilogue: + .byte 0xf3,0xc3 + + + + + +.globl _ecp_nistz256_div_by_2 + +.p2align 5 +_ecp_nistz256_div_by_2: + + pushq %r12 + + pushq %r13 + +L$div_by_2_body: + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq %r8,%rax + movq 24(%rsi),%r11 + leaq L$poly(%rip),%rsi + + movq %r9,%rdx + xorq %r13,%r13 + addq 0(%rsi),%r8 + movq %r10,%rcx + adcq 8(%rsi),%r9 + adcq 16(%rsi),%r10 + movq %r11,%r12 + adcq 24(%rsi),%r11 + adcq $0,%r13 + xorq %rsi,%rsi + testq $1,%rax + + cmovzq %rax,%r8 + cmovzq %rdx,%r9 + cmovzq %rcx,%r10 + cmovzq %r12,%r11 + cmovzq %rsi,%r13 + + movq %r9,%rax + shrq $1,%r8 + shlq $63,%rax + movq %r10,%rdx + shrq $1,%r9 + orq %rax,%r8 + shlq $63,%rdx + movq %r11,%rcx + shrq $1,%r10 + orq %rdx,%r9 + shlq $63,%rcx + shrq $1,%r11 + shlq $63,%r13 + orq %rcx,%r10 + orq %r13,%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 + + movq 8(%rsp),%r12 + + leaq 16(%rsp),%rsp + +L$div_by_2_epilogue: + .byte 0xf3,0xc3 + + + + + +.globl _ecp_nistz256_mul_by_3 + +.p2align 5 +_ecp_nistz256_mul_by_3: + + pushq %r12 + + pushq %r13 + +L$mul_by_3_body: + + movq 0(%rsi),%r8 + xorq %r13,%r13 + movq 8(%rsi),%r9 + addq %r8,%r8 + movq 16(%rsi),%r10 + adcq %r9,%r9 + movq 24(%rsi),%r11 + movq %r8,%rax + adcq %r10,%r10 + adcq %r11,%r11 + movq %r9,%rdx + adcq $0,%r13 + + subq $-1,%r8 + movq %r10,%rcx + sbbq L$poly+8(%rip),%r9 + sbbq $0,%r10 + movq %r11,%r12 + sbbq L$poly+24(%rip),%r11 + sbbq $0,%r13 + + cmovcq %rax,%r8 + cmovcq %rdx,%r9 + cmovcq %rcx,%r10 + cmovcq %r12,%r11 + + xorq %r13,%r13 + addq 0(%rsi),%r8 + adcq 8(%rsi),%r9 + movq %r8,%rax + adcq 16(%rsi),%r10 + adcq 24(%rsi),%r11 + movq %r9,%rdx + adcq $0,%r13 + + subq $-1,%r8 + movq %r10,%rcx + sbbq L$poly+8(%rip),%r9 + sbbq $0,%r10 + movq %r11,%r12 + sbbq L$poly+24(%rip),%r11 + sbbq $0,%r13 + + cmovcq %rax,%r8 + cmovcq %rdx,%r9 + movq %r8,0(%rdi) + cmovcq %rcx,%r10 + movq %r9,8(%rdi) + cmovcq %r12,%r11 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 + + movq 8(%rsp),%r12 + + leaq 16(%rsp),%rsp + +L$mul_by_3_epilogue: + .byte 0xf3,0xc3 + + + + + +.globl _ecp_nistz256_add + +.p2align 5 +_ecp_nistz256_add: + + pushq %r12 + + pushq %r13 + +L$add_body: + + movq 0(%rsi),%r8 + xorq %r13,%r13 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + leaq L$poly(%rip),%rsi + + addq 0(%rdx),%r8 + adcq 8(%rdx),%r9 + movq %r8,%rax + adcq 16(%rdx),%r10 + adcq 24(%rdx),%r11 + movq %r9,%rdx + adcq $0,%r13 + + subq 0(%rsi),%r8 + movq %r10,%rcx + sbbq 8(%rsi),%r9 + sbbq 16(%rsi),%r10 + movq %r11,%r12 + sbbq 24(%rsi),%r11 + sbbq $0,%r13 + + cmovcq %rax,%r8 + cmovcq %rdx,%r9 + movq %r8,0(%rdi) + cmovcq %rcx,%r10 + movq %r9,8(%rdi) + cmovcq %r12,%r11 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 + + movq 8(%rsp),%r12 + + leaq 16(%rsp),%rsp + +L$add_epilogue: + .byte 0xf3,0xc3 + + + + + +.globl _ecp_nistz256_sub + +.p2align 5 +_ecp_nistz256_sub: + + pushq %r12 + + pushq %r13 + +L$sub_body: + + movq 0(%rsi),%r8 + xorq %r13,%r13 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + leaq L$poly(%rip),%rsi + + subq 0(%rdx),%r8 + sbbq 8(%rdx),%r9 + movq %r8,%rax + sbbq 16(%rdx),%r10 + sbbq 24(%rdx),%r11 + movq %r9,%rdx + sbbq $0,%r13 + + addq 0(%rsi),%r8 + movq %r10,%rcx + adcq 8(%rsi),%r9 + adcq 16(%rsi),%r10 + movq %r11,%r12 + adcq 24(%rsi),%r11 + testq %r13,%r13 + + cmovzq %rax,%r8 + cmovzq %rdx,%r9 + movq %r8,0(%rdi) + cmovzq %rcx,%r10 + movq %r9,8(%rdi) + cmovzq %r12,%r11 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 + + movq 8(%rsp),%r12 + + leaq 16(%rsp),%rsp + +L$sub_epilogue: + .byte 0xf3,0xc3 + + + + + +.globl _ecp_nistz256_neg + +.p2align 5 +_ecp_nistz256_neg: + + pushq %r12 + + pushq %r13 + +L$neg_body: + + xorq %r8,%r8 + xorq %r9,%r9 + xorq %r10,%r10 + xorq %r11,%r11 + xorq %r13,%r13 + + subq 0(%rsi),%r8 + sbbq 8(%rsi),%r9 + sbbq 16(%rsi),%r10 + movq %r8,%rax + sbbq 24(%rsi),%r11 + leaq L$poly(%rip),%rsi + movq %r9,%rdx + sbbq $0,%r13 + + addq 0(%rsi),%r8 + movq %r10,%rcx + adcq 8(%rsi),%r9 + adcq 16(%rsi),%r10 + movq %r11,%r12 + adcq 24(%rsi),%r11 + testq %r13,%r13 + + cmovzq %rax,%r8 + cmovzq %rdx,%r9 + movq %r8,0(%rdi) + cmovzq %rcx,%r10 + movq %r9,8(%rdi) + cmovzq %r12,%r11 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 + + movq 8(%rsp),%r12 + + leaq 16(%rsp),%rsp + +L$neg_epilogue: + .byte 0xf3,0xc3 + + + + + + + + +.globl _ecp_nistz256_ord_mul_mont + +.p2align 5 +_ecp_nistz256_ord_mul_mont: + + movl $0x80100,%ecx + andl _OPENSSL_ia32cap_P+8(%rip),%ecx + cmpl $0x80100,%ecx + je L$ecp_nistz256_ord_mul_montx + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$ord_mul_body: + + movq 0(%rdx),%rax + movq %rdx,%rbx + leaq L$ord(%rip),%r14 + movq L$ordK(%rip),%r15 + + + movq %rax,%rcx + mulq 0(%rsi) + movq %rax,%r8 + movq %rcx,%rax + movq %rdx,%r9 + + mulq 8(%rsi) + addq %rax,%r9 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq 16(%rsi) + addq %rax,%r10 + movq %rcx,%rax + adcq $0,%rdx + + movq %r8,%r13 + imulq %r15,%r8 + + movq %rdx,%r11 + mulq 24(%rsi) + addq %rax,%r11 + movq %r8,%rax + adcq $0,%rdx + movq %rdx,%r12 + + + mulq 0(%r14) + movq %r8,%rbp + addq %rax,%r13 + movq %r8,%rax + adcq $0,%rdx + movq %rdx,%rcx + + subq %r8,%r10 + sbbq $0,%r8 + + mulq 8(%r14) + addq %rcx,%r9 + adcq $0,%rdx + addq %rax,%r9 + movq %rbp,%rax + adcq %rdx,%r10 + movq %rbp,%rdx + adcq $0,%r8 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r11 + movq 8(%rbx),%rax + sbbq %rdx,%rbp + + addq %r8,%r11 + adcq %rbp,%r12 + adcq $0,%r13 + + + movq %rax,%rcx + mulq 0(%rsi) + addq %rax,%r9 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq 8(%rsi) + addq %rbp,%r10 + adcq $0,%rdx + addq %rax,%r10 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq 16(%rsi) + addq %rbp,%r11 + adcq $0,%rdx + addq %rax,%r11 + movq %rcx,%rax + adcq $0,%rdx + + movq %r9,%rcx + imulq %r15,%r9 + + movq %rdx,%rbp + mulq 24(%rsi) + addq %rbp,%r12 + adcq $0,%rdx + xorq %r8,%r8 + addq %rax,%r12 + movq %r9,%rax + adcq %rdx,%r13 + adcq $0,%r8 + + + mulq 0(%r14) + movq %r9,%rbp + addq %rax,%rcx + movq %r9,%rax + adcq %rdx,%rcx + + subq %r9,%r11 + sbbq $0,%r9 + + mulq 8(%r14) + addq %rcx,%r10 + adcq $0,%rdx + addq %rax,%r10 + movq %rbp,%rax + adcq %rdx,%r11 + movq %rbp,%rdx + adcq $0,%r9 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r12 + movq 16(%rbx),%rax + sbbq %rdx,%rbp + + addq %r9,%r12 + adcq %rbp,%r13 + adcq $0,%r8 + + + movq %rax,%rcx + mulq 0(%rsi) + addq %rax,%r10 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq 8(%rsi) + addq %rbp,%r11 + adcq $0,%rdx + addq %rax,%r11 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq 16(%rsi) + addq %rbp,%r12 + adcq $0,%rdx + addq %rax,%r12 + movq %rcx,%rax + adcq $0,%rdx + + movq %r10,%rcx + imulq %r15,%r10 + + movq %rdx,%rbp + mulq 24(%rsi) + addq %rbp,%r13 + adcq $0,%rdx + xorq %r9,%r9 + addq %rax,%r13 + movq %r10,%rax + adcq %rdx,%r8 + adcq $0,%r9 + + + mulq 0(%r14) + movq %r10,%rbp + addq %rax,%rcx + movq %r10,%rax + adcq %rdx,%rcx + + subq %r10,%r12 + sbbq $0,%r10 + + mulq 8(%r14) + addq %rcx,%r11 + adcq $0,%rdx + addq %rax,%r11 + movq %rbp,%rax + adcq %rdx,%r12 + movq %rbp,%rdx + adcq $0,%r10 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r13 + movq 24(%rbx),%rax + sbbq %rdx,%rbp + + addq %r10,%r13 + adcq %rbp,%r8 + adcq $0,%r9 + + + movq %rax,%rcx + mulq 0(%rsi) + addq %rax,%r11 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq 8(%rsi) + addq %rbp,%r12 + adcq $0,%rdx + addq %rax,%r12 + movq %rcx,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq 16(%rsi) + addq %rbp,%r13 + adcq $0,%rdx + addq %rax,%r13 + movq %rcx,%rax + adcq $0,%rdx + + movq %r11,%rcx + imulq %r15,%r11 + + movq %rdx,%rbp + mulq 24(%rsi) + addq %rbp,%r8 + adcq $0,%rdx + xorq %r10,%r10 + addq %rax,%r8 + movq %r11,%rax + adcq %rdx,%r9 + adcq $0,%r10 + + + mulq 0(%r14) + movq %r11,%rbp + addq %rax,%rcx + movq %r11,%rax + adcq %rdx,%rcx + + subq %r11,%r13 + sbbq $0,%r11 + + mulq 8(%r14) + addq %rcx,%r12 + adcq $0,%rdx + addq %rax,%r12 + movq %rbp,%rax + adcq %rdx,%r13 + movq %rbp,%rdx + adcq $0,%r11 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r8 + sbbq %rdx,%rbp + + addq %r11,%r8 + adcq %rbp,%r9 + adcq $0,%r10 + + + movq %r12,%rsi + subq 0(%r14),%r12 + movq %r13,%r11 + sbbq 8(%r14),%r13 + movq %r8,%rcx + sbbq 16(%r14),%r8 + movq %r9,%rbp + sbbq 24(%r14),%r9 + sbbq $0,%r10 + + cmovcq %rsi,%r12 + cmovcq %r11,%r13 + cmovcq %rcx,%r8 + cmovcq %rbp,%r9 + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbx + + movq 40(%rsp),%rbp + + leaq 48(%rsp),%rsp + +L$ord_mul_epilogue: + .byte 0xf3,0xc3 + + + + + + + + + +.globl _ecp_nistz256_ord_sqr_mont + +.p2align 5 +_ecp_nistz256_ord_sqr_mont: + + movl $0x80100,%ecx + andl _OPENSSL_ia32cap_P+8(%rip),%ecx + cmpl $0x80100,%ecx + je L$ecp_nistz256_ord_sqr_montx + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$ord_sqr_body: + + movq 0(%rsi),%r8 + movq 8(%rsi),%rax + movq 16(%rsi),%r14 + movq 24(%rsi),%r15 + leaq L$ord(%rip),%rsi + movq %rdx,%rbx + jmp L$oop_ord_sqr + +.p2align 5 +L$oop_ord_sqr: + + movq %rax,%rbp + mulq %r8 + movq %rax,%r9 +.byte 102,72,15,110,205 + movq %r14,%rax + movq %rdx,%r10 + + mulq %r8 + addq %rax,%r10 + movq %r15,%rax +.byte 102,73,15,110,214 + adcq $0,%rdx + movq %rdx,%r11 + + mulq %r8 + addq %rax,%r11 + movq %r15,%rax +.byte 102,73,15,110,223 + adcq $0,%rdx + movq %rdx,%r12 + + + mulq %r14 + movq %rax,%r13 + movq %r14,%rax + movq %rdx,%r14 + + + mulq %rbp + addq %rax,%r11 + movq %r15,%rax + adcq $0,%rdx + movq %rdx,%r15 + + mulq %rbp + addq %rax,%r12 + adcq $0,%rdx + + addq %r15,%r12 + adcq %rdx,%r13 + adcq $0,%r14 + + + xorq %r15,%r15 + movq %r8,%rax + addq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + adcq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq $0,%r15 + + + mulq %rax + movq %rax,%r8 +.byte 102,72,15,126,200 + movq %rdx,%rbp + + mulq %rax + addq %rbp,%r9 + adcq %rax,%r10 +.byte 102,72,15,126,208 + adcq $0,%rdx + movq %rdx,%rbp + + mulq %rax + addq %rbp,%r11 + adcq %rax,%r12 +.byte 102,72,15,126,216 + adcq $0,%rdx + movq %rdx,%rbp + + movq %r8,%rcx + imulq 32(%rsi),%r8 + + mulq %rax + addq %rbp,%r13 + adcq %rax,%r14 + movq 0(%rsi),%rax + adcq %rdx,%r15 + + + mulq %r8 + movq %r8,%rbp + addq %rax,%rcx + movq 8(%rsi),%rax + adcq %rdx,%rcx + + subq %r8,%r10 + sbbq $0,%rbp + + mulq %r8 + addq %rcx,%r9 + adcq $0,%rdx + addq %rax,%r9 + movq %r8,%rax + adcq %rdx,%r10 + movq %r8,%rdx + adcq $0,%rbp + + movq %r9,%rcx + imulq 32(%rsi),%r9 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r11 + movq 0(%rsi),%rax + sbbq %rdx,%r8 + + addq %rbp,%r11 + adcq $0,%r8 + + + mulq %r9 + movq %r9,%rbp + addq %rax,%rcx + movq 8(%rsi),%rax + adcq %rdx,%rcx + + subq %r9,%r11 + sbbq $0,%rbp + + mulq %r9 + addq %rcx,%r10 + adcq $0,%rdx + addq %rax,%r10 + movq %r9,%rax + adcq %rdx,%r11 + movq %r9,%rdx + adcq $0,%rbp + + movq %r10,%rcx + imulq 32(%rsi),%r10 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r8 + movq 0(%rsi),%rax + sbbq %rdx,%r9 + + addq %rbp,%r8 + adcq $0,%r9 + + + mulq %r10 + movq %r10,%rbp + addq %rax,%rcx + movq 8(%rsi),%rax + adcq %rdx,%rcx + + subq %r10,%r8 + sbbq $0,%rbp + + mulq %r10 + addq %rcx,%r11 + adcq $0,%rdx + addq %rax,%r11 + movq %r10,%rax + adcq %rdx,%r8 + movq %r10,%rdx + adcq $0,%rbp + + movq %r11,%rcx + imulq 32(%rsi),%r11 + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r9 + movq 0(%rsi),%rax + sbbq %rdx,%r10 + + addq %rbp,%r9 + adcq $0,%r10 + + + mulq %r11 + movq %r11,%rbp + addq %rax,%rcx + movq 8(%rsi),%rax + adcq %rdx,%rcx + + subq %r11,%r9 + sbbq $0,%rbp + + mulq %r11 + addq %rcx,%r8 + adcq $0,%rdx + addq %rax,%r8 + movq %r11,%rax + adcq %rdx,%r9 + movq %r11,%rdx + adcq $0,%rbp + + shlq $32,%rax + shrq $32,%rdx + subq %rax,%r10 + sbbq %rdx,%r11 + + addq %rbp,%r10 + adcq $0,%r11 + + + xorq %rdx,%rdx + addq %r12,%r8 + adcq %r13,%r9 + movq %r8,%r12 + adcq %r14,%r10 + adcq %r15,%r11 + movq %r9,%rax + adcq $0,%rdx + + + subq 0(%rsi),%r8 + movq %r10,%r14 + sbbq 8(%rsi),%r9 + sbbq 16(%rsi),%r10 + movq %r11,%r15 + sbbq 24(%rsi),%r11 + sbbq $0,%rdx + + cmovcq %r12,%r8 + cmovncq %r9,%rax + cmovncq %r10,%r14 + cmovncq %r11,%r15 + + decq %rbx + jnz L$oop_ord_sqr + + movq %r8,0(%rdi) + movq %rax,8(%rdi) + pxor %xmm1,%xmm1 + movq %r14,16(%rdi) + pxor %xmm2,%xmm2 + movq %r15,24(%rdi) + pxor %xmm3,%xmm3 + + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbx + + movq 40(%rsp),%rbp + + leaq 48(%rsp),%rsp + +L$ord_sqr_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 5 +ecp_nistz256_ord_mul_montx: + +L$ecp_nistz256_ord_mul_montx: + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$ord_mulx_body: + + movq %rdx,%rbx + movq 0(%rdx),%rdx + movq 0(%rsi),%r9 + movq 8(%rsi),%r10 + movq 16(%rsi),%r11 + movq 24(%rsi),%r12 + leaq -128(%rsi),%rsi + leaq L$ord-128(%rip),%r14 + movq L$ordK(%rip),%r15 + + + mulxq %r9,%r8,%r9 + mulxq %r10,%rcx,%r10 + mulxq %r11,%rbp,%r11 + addq %rcx,%r9 + mulxq %r12,%rcx,%r12 + movq %r8,%rdx + mulxq %r15,%rdx,%rax + adcq %rbp,%r10 + adcq %rcx,%r11 + adcq $0,%r12 + + + xorq %r13,%r13 + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r8 + adoxq %rbp,%r9 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 24+128(%r14),%rcx,%rbp + movq 8(%rbx),%rdx + adcxq %rcx,%r11 + adoxq %rbp,%r12 + adcxq %r8,%r12 + adoxq %r8,%r13 + adcq $0,%r13 + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r9,%rdx + mulxq %r15,%rdx,%rax + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + adcxq %r8,%r13 + adoxq %r8,%r8 + adcq $0,%r8 + + + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 24+128(%r14),%rcx,%rbp + movq 16(%rbx),%rdx + adcxq %rcx,%r12 + adoxq %rbp,%r13 + adcxq %r9,%r13 + adoxq %r9,%r8 + adcq $0,%r8 + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r10,%rdx + mulxq %r15,%rdx,%rax + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + adcxq %r9,%r8 + adoxq %r9,%r9 + adcq $0,%r9 + + + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 24+128(%r14),%rcx,%rbp + movq 24(%rbx),%rdx + adcxq %rcx,%r13 + adoxq %rbp,%r8 + adcxq %r10,%r8 + adoxq %r10,%r9 + adcq $0,%r9 + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r11,%rdx + mulxq %r15,%rdx,%rax + adcxq %rcx,%r8 + adoxq %rbp,%r9 + + adcxq %r10,%r9 + adoxq %r10,%r10 + adcq $0,%r10 + + + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + mulxq 24+128(%r14),%rcx,%rbp + leaq 128(%r14),%r14 + movq %r12,%rbx + adcxq %rcx,%r8 + adoxq %rbp,%r9 + movq %r13,%rdx + adcxq %r11,%r9 + adoxq %r11,%r10 + adcq $0,%r10 + + + + movq %r8,%rcx + subq 0(%r14),%r12 + sbbq 8(%r14),%r13 + sbbq 16(%r14),%r8 + movq %r9,%rbp + sbbq 24(%r14),%r9 + sbbq $0,%r10 + + cmovcq %rbx,%r12 + cmovcq %rdx,%r13 + cmovcq %rcx,%r8 + cmovcq %rbp,%r9 + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbx + + movq 40(%rsp),%rbp + + leaq 48(%rsp),%rsp + +L$ord_mulx_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 5 +ecp_nistz256_ord_sqr_montx: + +L$ecp_nistz256_ord_sqr_montx: + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$ord_sqrx_body: + + movq %rdx,%rbx + movq 0(%rsi),%rdx + movq 8(%rsi),%r14 + movq 16(%rsi),%r15 + movq 24(%rsi),%r8 + leaq L$ord(%rip),%rsi + jmp L$oop_ord_sqrx + +.p2align 5 +L$oop_ord_sqrx: + mulxq %r14,%r9,%r10 + mulxq %r15,%rcx,%r11 + movq %rdx,%rax +.byte 102,73,15,110,206 + mulxq %r8,%rbp,%r12 + movq %r14,%rdx + addq %rcx,%r10 +.byte 102,73,15,110,215 + adcq %rbp,%r11 + adcq $0,%r12 + xorq %r13,%r13 + + mulxq %r15,%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq %r8,%rcx,%rbp + movq %r15,%rdx + adcxq %rcx,%r12 + adoxq %rbp,%r13 + adcq $0,%r13 + + mulxq %r8,%rcx,%r14 + movq %rax,%rdx +.byte 102,73,15,110,216 + xorq %r15,%r15 + adcxq %r9,%r9 + adoxq %rcx,%r13 + adcxq %r10,%r10 + adoxq %r15,%r14 + + + mulxq %rdx,%r8,%rbp +.byte 102,72,15,126,202 + adcxq %r11,%r11 + adoxq %rbp,%r9 + adcxq %r12,%r12 + mulxq %rdx,%rcx,%rax +.byte 102,72,15,126,210 + adcxq %r13,%r13 + adoxq %rcx,%r10 + adcxq %r14,%r14 + mulxq %rdx,%rcx,%rbp +.byte 0x67 +.byte 102,72,15,126,218 + adoxq %rax,%r11 + adcxq %r15,%r15 + adoxq %rcx,%r12 + adoxq %rbp,%r13 + mulxq %rdx,%rcx,%rax + adoxq %rcx,%r14 + adoxq %rax,%r15 + + + movq %r8,%rdx + mulxq 32(%rsi),%rdx,%rcx + + xorq %rax,%rax + mulxq 0(%rsi),%rcx,%rbp + adcxq %rcx,%r8 + adoxq %rbp,%r9 + mulxq 8(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + mulxq 16(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + mulxq 24(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r8 + adcxq %rax,%r8 + + + movq %r9,%rdx + mulxq 32(%rsi),%rdx,%rcx + + mulxq 0(%rsi),%rcx,%rbp + adoxq %rcx,%r9 + adcxq %rbp,%r10 + mulxq 8(%rsi),%rcx,%rbp + adoxq %rcx,%r10 + adcxq %rbp,%r11 + mulxq 16(%rsi),%rcx,%rbp + adoxq %rcx,%r11 + adcxq %rbp,%r8 + mulxq 24(%rsi),%rcx,%rbp + adoxq %rcx,%r8 + adcxq %rbp,%r9 + adoxq %rax,%r9 + + + movq %r10,%rdx + mulxq 32(%rsi),%rdx,%rcx + + mulxq 0(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + mulxq 8(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r8 + mulxq 16(%rsi),%rcx,%rbp + adcxq %rcx,%r8 + adoxq %rbp,%r9 + mulxq 24(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + adcxq %rax,%r10 + + + movq %r11,%rdx + mulxq 32(%rsi),%rdx,%rcx + + mulxq 0(%rsi),%rcx,%rbp + adoxq %rcx,%r11 + adcxq %rbp,%r8 + mulxq 8(%rsi),%rcx,%rbp + adoxq %rcx,%r8 + adcxq %rbp,%r9 + mulxq 16(%rsi),%rcx,%rbp + adoxq %rcx,%r9 + adcxq %rbp,%r10 + mulxq 24(%rsi),%rcx,%rbp + adoxq %rcx,%r10 + adcxq %rbp,%r11 + adoxq %rax,%r11 + + + addq %r8,%r12 + adcq %r13,%r9 + movq %r12,%rdx + adcq %r14,%r10 + adcq %r15,%r11 + movq %r9,%r14 + adcq $0,%rax + + + subq 0(%rsi),%r12 + movq %r10,%r15 + sbbq 8(%rsi),%r9 + sbbq 16(%rsi),%r10 + movq %r11,%r8 + sbbq 24(%rsi),%r11 + sbbq $0,%rax + + cmovncq %r12,%rdx + cmovncq %r9,%r14 + cmovncq %r10,%r15 + cmovncq %r11,%r8 + + decq %rbx + jnz L$oop_ord_sqrx + + movq %rdx,0(%rdi) + movq %r14,8(%rdi) + pxor %xmm1,%xmm1 + movq %r15,16(%rdi) + pxor %xmm2,%xmm2 + movq %r8,24(%rdi) + pxor %xmm3,%xmm3 + + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbx + + movq 40(%rsp),%rbp + + leaq 48(%rsp),%rsp + +L$ord_sqrx_epilogue: + .byte 0xf3,0xc3 + + + + + + +.globl _ecp_nistz256_to_mont + +.p2align 5 +_ecp_nistz256_to_mont: + + movl $0x80100,%ecx + andl _OPENSSL_ia32cap_P+8(%rip),%ecx + leaq L$RR(%rip),%rdx + jmp L$mul_mont + + + + + + + + + +.globl _ecp_nistz256_mul_mont + +.p2align 5 +_ecp_nistz256_mul_mont: + + movl $0x80100,%ecx + andl _OPENSSL_ia32cap_P+8(%rip),%ecx +L$mul_mont: + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$mul_body: + cmpl $0x80100,%ecx + je L$mul_montx + movq %rdx,%rbx + movq 0(%rdx),%rax + movq 0(%rsi),%r9 + movq 8(%rsi),%r10 + movq 16(%rsi),%r11 + movq 24(%rsi),%r12 + + call __ecp_nistz256_mul_montq + jmp L$mul_mont_done + +.p2align 5 +L$mul_montx: + movq %rdx,%rbx + movq 0(%rdx),%rdx + movq 0(%rsi),%r9 + movq 8(%rsi),%r10 + movq 16(%rsi),%r11 + movq 24(%rsi),%r12 + leaq -128(%rsi),%rsi + + call __ecp_nistz256_mul_montx +L$mul_mont_done: + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbx + + movq 40(%rsp),%rbp + + leaq 48(%rsp),%rsp + +L$mul_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ecp_nistz256_mul_montq: + + + + movq %rax,%rbp + mulq %r9 + movq L$poly+8(%rip),%r14 + movq %rax,%r8 + movq %rbp,%rax + movq %rdx,%r9 + + mulq %r10 + movq L$poly+24(%rip),%r15 + addq %rax,%r9 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%r10 + + mulq %r11 + addq %rax,%r10 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%r11 + + mulq %r12 + addq %rax,%r11 + movq %r8,%rax + adcq $0,%rdx + xorq %r13,%r13 + movq %rdx,%r12 + + + + + + + + + + + movq %r8,%rbp + shlq $32,%r8 + mulq %r15 + shrq $32,%rbp + addq %r8,%r9 + adcq %rbp,%r10 + adcq %rax,%r11 + movq 8(%rbx),%rax + adcq %rdx,%r12 + adcq $0,%r13 + xorq %r8,%r8 + + + + movq %rax,%rbp + mulq 0(%rsi) + addq %rax,%r9 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 8(%rsi) + addq %rcx,%r10 + adcq $0,%rdx + addq %rax,%r10 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 16(%rsi) + addq %rcx,%r11 + adcq $0,%rdx + addq %rax,%r11 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 24(%rsi) + addq %rcx,%r12 + adcq $0,%rdx + addq %rax,%r12 + movq %r9,%rax + adcq %rdx,%r13 + adcq $0,%r8 + + + + movq %r9,%rbp + shlq $32,%r9 + mulq %r15 + shrq $32,%rbp + addq %r9,%r10 + adcq %rbp,%r11 + adcq %rax,%r12 + movq 16(%rbx),%rax + adcq %rdx,%r13 + adcq $0,%r8 + xorq %r9,%r9 + + + + movq %rax,%rbp + mulq 0(%rsi) + addq %rax,%r10 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 8(%rsi) + addq %rcx,%r11 + adcq $0,%rdx + addq %rax,%r11 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 16(%rsi) + addq %rcx,%r12 + adcq $0,%rdx + addq %rax,%r12 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 24(%rsi) + addq %rcx,%r13 + adcq $0,%rdx + addq %rax,%r13 + movq %r10,%rax + adcq %rdx,%r8 + adcq $0,%r9 + + + + movq %r10,%rbp + shlq $32,%r10 + mulq %r15 + shrq $32,%rbp + addq %r10,%r11 + adcq %rbp,%r12 + adcq %rax,%r13 + movq 24(%rbx),%rax + adcq %rdx,%r8 + adcq $0,%r9 + xorq %r10,%r10 + + + + movq %rax,%rbp + mulq 0(%rsi) + addq %rax,%r11 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 8(%rsi) + addq %rcx,%r12 + adcq $0,%rdx + addq %rax,%r12 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 16(%rsi) + addq %rcx,%r13 + adcq $0,%rdx + addq %rax,%r13 + movq %rbp,%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq 24(%rsi) + addq %rcx,%r8 + adcq $0,%rdx + addq %rax,%r8 + movq %r11,%rax + adcq %rdx,%r9 + adcq $0,%r10 + + + + movq %r11,%rbp + shlq $32,%r11 + mulq %r15 + shrq $32,%rbp + addq %r11,%r12 + adcq %rbp,%r13 + movq %r12,%rcx + adcq %rax,%r8 + adcq %rdx,%r9 + movq %r13,%rbp + adcq $0,%r10 + + + + subq $-1,%r12 + movq %r8,%rbx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%rdx + sbbq %r15,%r9 + sbbq $0,%r10 + + cmovcq %rcx,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rbx,%r8 + movq %r13,8(%rdi) + cmovcq %rdx,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 + + + + + + + + + + +.globl _ecp_nistz256_sqr_mont + +.p2align 5 +_ecp_nistz256_sqr_mont: + + movl $0x80100,%ecx + andl _OPENSSL_ia32cap_P+8(%rip),%ecx + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$sqr_body: + cmpl $0x80100,%ecx + je L$sqr_montx + movq 0(%rsi),%rax + movq 8(%rsi),%r14 + movq 16(%rsi),%r15 + movq 24(%rsi),%r8 + + call __ecp_nistz256_sqr_montq + jmp L$sqr_mont_done + +.p2align 5 +L$sqr_montx: + movq 0(%rsi),%rdx + movq 8(%rsi),%r14 + movq 16(%rsi),%r15 + movq 24(%rsi),%r8 + leaq -128(%rsi),%rsi + + call __ecp_nistz256_sqr_montx +L$sqr_mont_done: + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbx + + movq 40(%rsp),%rbp + + leaq 48(%rsp),%rsp + +L$sqr_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ecp_nistz256_sqr_montq: + + movq %rax,%r13 + mulq %r14 + movq %rax,%r9 + movq %r15,%rax + movq %rdx,%r10 + + mulq %r13 + addq %rax,%r10 + movq %r8,%rax + adcq $0,%rdx + movq %rdx,%r11 + + mulq %r13 + addq %rax,%r11 + movq %r15,%rax + adcq $0,%rdx + movq %rdx,%r12 + + + mulq %r14 + addq %rax,%r11 + movq %r8,%rax + adcq $0,%rdx + movq %rdx,%rbp + + mulq %r14 + addq %rax,%r12 + movq %r8,%rax + adcq $0,%rdx + addq %rbp,%r12 + movq %rdx,%r13 + adcq $0,%r13 + + + mulq %r15 + xorq %r15,%r15 + addq %rax,%r13 + movq 0(%rsi),%rax + movq %rdx,%r14 + adcq $0,%r14 + + addq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + adcq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq $0,%r15 + + mulq %rax + movq %rax,%r8 + movq 8(%rsi),%rax + movq %rdx,%rcx + + mulq %rax + addq %rcx,%r9 + adcq %rax,%r10 + movq 16(%rsi),%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq %rax + addq %rcx,%r11 + adcq %rax,%r12 + movq 24(%rsi),%rax + adcq $0,%rdx + movq %rdx,%rcx + + mulq %rax + addq %rcx,%r13 + adcq %rax,%r14 + movq %r8,%rax + adcq %rdx,%r15 + + movq L$poly+8(%rip),%rsi + movq L$poly+24(%rip),%rbp + + + + + movq %r8,%rcx + shlq $32,%r8 + mulq %rbp + shrq $32,%rcx + addq %r8,%r9 + adcq %rcx,%r10 + adcq %rax,%r11 + movq %r9,%rax + adcq $0,%rdx + + + + movq %r9,%rcx + shlq $32,%r9 + movq %rdx,%r8 + mulq %rbp + shrq $32,%rcx + addq %r9,%r10 + adcq %rcx,%r11 + adcq %rax,%r8 + movq %r10,%rax + adcq $0,%rdx + + + + movq %r10,%rcx + shlq $32,%r10 + movq %rdx,%r9 + mulq %rbp + shrq $32,%rcx + addq %r10,%r11 + adcq %rcx,%r8 + adcq %rax,%r9 + movq %r11,%rax + adcq $0,%rdx + + + + movq %r11,%rcx + shlq $32,%r11 + movq %rdx,%r10 + mulq %rbp + shrq $32,%rcx + addq %r11,%r8 + adcq %rcx,%r9 + adcq %rax,%r10 + adcq $0,%rdx + xorq %r11,%r11 + + + + addq %r8,%r12 + adcq %r9,%r13 + movq %r12,%r8 + adcq %r10,%r14 + adcq %rdx,%r15 + movq %r13,%r9 + adcq $0,%r11 + + subq $-1,%r12 + movq %r14,%r10 + sbbq %rsi,%r13 + sbbq $0,%r14 + movq %r15,%rcx + sbbq %rbp,%r15 + sbbq $0,%r11 + + cmovcq %r8,%r12 + cmovcq %r9,%r13 + movq %r12,0(%rdi) + cmovcq %r10,%r14 + movq %r13,8(%rdi) + cmovcq %rcx,%r15 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + + .byte 0xf3,0xc3 + + + +.p2align 5 +__ecp_nistz256_mul_montx: + + + + mulxq %r9,%r8,%r9 + mulxq %r10,%rcx,%r10 + movq $32,%r14 + xorq %r13,%r13 + mulxq %r11,%rbp,%r11 + movq L$poly+24(%rip),%r15 + adcq %rcx,%r9 + mulxq %r12,%rcx,%r12 + movq %r8,%rdx + adcq %rbp,%r10 + shlxq %r14,%r8,%rbp + adcq %rcx,%r11 + shrxq %r14,%r8,%rcx + adcq $0,%r12 + + + + addq %rbp,%r9 + adcq %rcx,%r10 + + mulxq %r15,%rcx,%rbp + movq 8(%rbx),%rdx + adcq %rcx,%r11 + adcq %rbp,%r12 + adcq $0,%r13 + xorq %r8,%r8 + + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r9,%rdx + adcxq %rcx,%r12 + shlxq %r14,%r9,%rcx + adoxq %rbp,%r13 + shrxq %r14,%r9,%rbp + + adcxq %r8,%r13 + adoxq %r8,%r8 + adcq $0,%r8 + + + + addq %rcx,%r10 + adcq %rbp,%r11 + + mulxq %r15,%rcx,%rbp + movq 16(%rbx),%rdx + adcq %rcx,%r12 + adcq %rbp,%r13 + adcq $0,%r8 + xorq %r9,%r9 + + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r10,%rdx + adcxq %rcx,%r13 + shlxq %r14,%r10,%rcx + adoxq %rbp,%r8 + shrxq %r14,%r10,%rbp + + adcxq %r9,%r8 + adoxq %r9,%r9 + adcq $0,%r9 + + + + addq %rcx,%r11 + adcq %rbp,%r12 + + mulxq %r15,%rcx,%rbp + movq 24(%rbx),%rdx + adcq %rcx,%r13 + adcq %rbp,%r8 + adcq $0,%r9 + xorq %r10,%r10 + + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r11,%rdx + adcxq %rcx,%r8 + shlxq %r14,%r11,%rcx + adoxq %rbp,%r9 + shrxq %r14,%r11,%rbp + + adcxq %r10,%r9 + adoxq %r10,%r10 + adcq $0,%r10 + + + + addq %rcx,%r12 + adcq %rbp,%r13 + + mulxq %r15,%rcx,%rbp + movq %r12,%rbx + movq L$poly+8(%rip),%r14 + adcq %rcx,%r8 + movq %r13,%rdx + adcq %rbp,%r9 + adcq $0,%r10 + + + + xorl %eax,%eax + movq %r8,%rcx + sbbq $-1,%r12 + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%rbp + sbbq %r15,%r9 + sbbq $0,%r10 + + cmovcq %rbx,%r12 + cmovcq %rdx,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %rbp,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ecp_nistz256_sqr_montx: + + mulxq %r14,%r9,%r10 + mulxq %r15,%rcx,%r11 + xorl %eax,%eax + adcq %rcx,%r10 + mulxq %r8,%rbp,%r12 + movq %r14,%rdx + adcq %rbp,%r11 + adcq $0,%r12 + xorq %r13,%r13 + + + mulxq %r15,%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq %r8,%rcx,%rbp + movq %r15,%rdx + adcxq %rcx,%r12 + adoxq %rbp,%r13 + adcq $0,%r13 + + + mulxq %r8,%rcx,%r14 + movq 0+128(%rsi),%rdx + xorq %r15,%r15 + adcxq %r9,%r9 + adoxq %rcx,%r13 + adcxq %r10,%r10 + adoxq %r15,%r14 + + mulxq %rdx,%r8,%rbp + movq 8+128(%rsi),%rdx + adcxq %r11,%r11 + adoxq %rbp,%r9 + adcxq %r12,%r12 + mulxq %rdx,%rcx,%rax + movq 16+128(%rsi),%rdx + adcxq %r13,%r13 + adoxq %rcx,%r10 + adcxq %r14,%r14 +.byte 0x67 + mulxq %rdx,%rcx,%rbp + movq 24+128(%rsi),%rdx + adoxq %rax,%r11 + adcxq %r15,%r15 + adoxq %rcx,%r12 + movq $32,%rsi + adoxq %rbp,%r13 +.byte 0x67,0x67 + mulxq %rdx,%rcx,%rax + movq L$poly+24(%rip),%rdx + adoxq %rcx,%r14 + shlxq %rsi,%r8,%rcx + adoxq %rax,%r15 + shrxq %rsi,%r8,%rax + movq %rdx,%rbp + + + addq %rcx,%r9 + adcq %rax,%r10 + + mulxq %r8,%rcx,%r8 + adcq %rcx,%r11 + shlxq %rsi,%r9,%rcx + adcq $0,%r8 + shrxq %rsi,%r9,%rax + + + addq %rcx,%r10 + adcq %rax,%r11 + + mulxq %r9,%rcx,%r9 + adcq %rcx,%r8 + shlxq %rsi,%r10,%rcx + adcq $0,%r9 + shrxq %rsi,%r10,%rax + + + addq %rcx,%r11 + adcq %rax,%r8 + + mulxq %r10,%rcx,%r10 + adcq %rcx,%r9 + shlxq %rsi,%r11,%rcx + adcq $0,%r10 + shrxq %rsi,%r11,%rax + + + addq %rcx,%r8 + adcq %rax,%r9 + + mulxq %r11,%rcx,%r11 + adcq %rcx,%r10 + adcq $0,%r11 + + xorq %rdx,%rdx + addq %r8,%r12 + movq L$poly+8(%rip),%rsi + adcq %r9,%r13 + movq %r12,%r8 + adcq %r10,%r14 + adcq %r11,%r15 + movq %r13,%r9 + adcq $0,%rdx + + subq $-1,%r12 + movq %r14,%r10 + sbbq %rsi,%r13 + sbbq $0,%r14 + movq %r15,%r11 + sbbq %rbp,%r15 + sbbq $0,%rdx + + cmovcq %r8,%r12 + cmovcq %r9,%r13 + movq %r12,0(%rdi) + cmovcq %r10,%r14 + movq %r13,8(%rdi) + cmovcq %r11,%r15 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + + .byte 0xf3,0xc3 + + + + + + + + +.globl _ecp_nistz256_from_mont + +.p2align 5 +_ecp_nistz256_from_mont: + + pushq %r12 + + pushq %r13 + +L$from_body: + + movq 0(%rsi),%rax + movq L$poly+24(%rip),%r13 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + movq %rax,%r8 + movq L$poly+8(%rip),%r12 + + + + movq %rax,%rcx + shlq $32,%r8 + mulq %r13 + shrq $32,%rcx + addq %r8,%r9 + adcq %rcx,%r10 + adcq %rax,%r11 + movq %r9,%rax + adcq $0,%rdx + + + + movq %r9,%rcx + shlq $32,%r9 + movq %rdx,%r8 + mulq %r13 + shrq $32,%rcx + addq %r9,%r10 + adcq %rcx,%r11 + adcq %rax,%r8 + movq %r10,%rax + adcq $0,%rdx + + + + movq %r10,%rcx + shlq $32,%r10 + movq %rdx,%r9 + mulq %r13 + shrq $32,%rcx + addq %r10,%r11 + adcq %rcx,%r8 + adcq %rax,%r9 + movq %r11,%rax + adcq $0,%rdx + + + + movq %r11,%rcx + shlq $32,%r11 + movq %rdx,%r10 + mulq %r13 + shrq $32,%rcx + addq %r11,%r8 + adcq %rcx,%r9 + movq %r8,%rcx + adcq %rax,%r10 + movq %r9,%rsi + adcq $0,%rdx + + + + subq $-1,%r8 + movq %r10,%rax + sbbq %r12,%r9 + sbbq $0,%r10 + movq %rdx,%r11 + sbbq %r13,%rdx + sbbq %r13,%r13 + + cmovnzq %rcx,%r8 + cmovnzq %rsi,%r9 + movq %r8,0(%rdi) + cmovnzq %rax,%r10 + movq %r9,8(%rdi) + cmovzq %rdx,%r11 + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 0(%rsp),%r13 + + movq 8(%rsp),%r12 + + leaq 16(%rsp),%rsp + +L$from_epilogue: + .byte 0xf3,0xc3 + + + + +.globl _ecp_nistz256_scatter_w5 + +.p2align 5 +_ecp_nistz256_scatter_w5: + + leal -3(%rdx,%rdx,2),%edx + movdqa 0(%rsi),%xmm0 + shll $5,%edx + movdqa 16(%rsi),%xmm1 + movdqa 32(%rsi),%xmm2 + movdqa 48(%rsi),%xmm3 + movdqa 64(%rsi),%xmm4 + movdqa 80(%rsi),%xmm5 + movdqa %xmm0,0(%rdi,%rdx,1) + movdqa %xmm1,16(%rdi,%rdx,1) + movdqa %xmm2,32(%rdi,%rdx,1) + movdqa %xmm3,48(%rdi,%rdx,1) + movdqa %xmm4,64(%rdi,%rdx,1) + movdqa %xmm5,80(%rdi,%rdx,1) + + .byte 0xf3,0xc3 + + + + + +.globl _ecp_nistz256_gather_w5 + +.p2align 5 +_ecp_nistz256_gather_w5: + + movl _OPENSSL_ia32cap_P+8(%rip),%eax + testl $32,%eax + jnz L$avx2_gather_w5 + movdqa L$One(%rip),%xmm0 + movd %edx,%xmm1 + + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + + movdqa %xmm0,%xmm8 + pshufd $0,%xmm1,%xmm1 + + movq $16,%rax +L$select_loop_sse_w5: + + movdqa %xmm8,%xmm15 + paddd %xmm0,%xmm8 + pcmpeqd %xmm1,%xmm15 + + movdqa 0(%rsi),%xmm9 + movdqa 16(%rsi),%xmm10 + movdqa 32(%rsi),%xmm11 + movdqa 48(%rsi),%xmm12 + movdqa 64(%rsi),%xmm13 + movdqa 80(%rsi),%xmm14 + leaq 96(%rsi),%rsi + + pand %xmm15,%xmm9 + pand %xmm15,%xmm10 + por %xmm9,%xmm2 + pand %xmm15,%xmm11 + por %xmm10,%xmm3 + pand %xmm15,%xmm12 + por %xmm11,%xmm4 + pand %xmm15,%xmm13 + por %xmm12,%xmm5 + pand %xmm15,%xmm14 + por %xmm13,%xmm6 + por %xmm14,%xmm7 + + decq %rax + jnz L$select_loop_sse_w5 + + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + movdqu %xmm4,32(%rdi) + movdqu %xmm5,48(%rdi) + movdqu %xmm6,64(%rdi) + movdqu %xmm7,80(%rdi) + .byte 0xf3,0xc3 + +L$SEH_end_ecp_nistz256_gather_w5: + + + + +.globl _ecp_nistz256_scatter_w7 + +.p2align 5 +_ecp_nistz256_scatter_w7: + + movdqu 0(%rsi),%xmm0 + shll $6,%edx + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqa %xmm0,0(%rdi,%rdx,1) + movdqa %xmm1,16(%rdi,%rdx,1) + movdqa %xmm2,32(%rdi,%rdx,1) + movdqa %xmm3,48(%rdi,%rdx,1) + + .byte 0xf3,0xc3 + + + + + +.globl _ecp_nistz256_gather_w7 + +.p2align 5 +_ecp_nistz256_gather_w7: + + movl _OPENSSL_ia32cap_P+8(%rip),%eax + testl $32,%eax + jnz L$avx2_gather_w7 + movdqa L$One(%rip),%xmm8 + movd %edx,%xmm1 + + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + + movdqa %xmm8,%xmm0 + pshufd $0,%xmm1,%xmm1 + movq $64,%rax + +L$select_loop_sse_w7: + movdqa %xmm8,%xmm15 + paddd %xmm0,%xmm8 + movdqa 0(%rsi),%xmm9 + movdqa 16(%rsi),%xmm10 + pcmpeqd %xmm1,%xmm15 + movdqa 32(%rsi),%xmm11 + movdqa 48(%rsi),%xmm12 + leaq 64(%rsi),%rsi + + pand %xmm15,%xmm9 + pand %xmm15,%xmm10 + por %xmm9,%xmm2 + pand %xmm15,%xmm11 + por %xmm10,%xmm3 + pand %xmm15,%xmm12 + por %xmm11,%xmm4 + prefetcht0 255(%rsi) + por %xmm12,%xmm5 + + decq %rax + jnz L$select_loop_sse_w7 + + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + movdqu %xmm4,32(%rdi) + movdqu %xmm5,48(%rdi) + .byte 0xf3,0xc3 + +L$SEH_end_ecp_nistz256_gather_w7: + + + + +.p2align 5 +ecp_nistz256_avx2_gather_w5: + +L$avx2_gather_w5: + vzeroupper + vmovdqa L$Two(%rip),%ymm0 + + vpxor %ymm2,%ymm2,%ymm2 + vpxor %ymm3,%ymm3,%ymm3 + vpxor %ymm4,%ymm4,%ymm4 + + vmovdqa L$One(%rip),%ymm5 + vmovdqa L$Two(%rip),%ymm10 + + vmovd %edx,%xmm1 + vpermd %ymm1,%ymm2,%ymm1 + + movq $8,%rax +L$select_loop_avx2_w5: + + vmovdqa 0(%rsi),%ymm6 + vmovdqa 32(%rsi),%ymm7 + vmovdqa 64(%rsi),%ymm8 + + vmovdqa 96(%rsi),%ymm11 + vmovdqa 128(%rsi),%ymm12 + vmovdqa 160(%rsi),%ymm13 + + vpcmpeqd %ymm1,%ymm5,%ymm9 + vpcmpeqd %ymm1,%ymm10,%ymm14 + + vpaddd %ymm0,%ymm5,%ymm5 + vpaddd %ymm0,%ymm10,%ymm10 + leaq 192(%rsi),%rsi + + vpand %ymm9,%ymm6,%ymm6 + vpand %ymm9,%ymm7,%ymm7 + vpand %ymm9,%ymm8,%ymm8 + vpand %ymm14,%ymm11,%ymm11 + vpand %ymm14,%ymm12,%ymm12 + vpand %ymm14,%ymm13,%ymm13 + + vpxor %ymm6,%ymm2,%ymm2 + vpxor %ymm7,%ymm3,%ymm3 + vpxor %ymm8,%ymm4,%ymm4 + vpxor %ymm11,%ymm2,%ymm2 + vpxor %ymm12,%ymm3,%ymm3 + vpxor %ymm13,%ymm4,%ymm4 + + decq %rax + jnz L$select_loop_avx2_w5 + + vmovdqu %ymm2,0(%rdi) + vmovdqu %ymm3,32(%rdi) + vmovdqu %ymm4,64(%rdi) + vzeroupper + .byte 0xf3,0xc3 + +L$SEH_end_ecp_nistz256_avx2_gather_w5: + + + + +.globl _ecp_nistz256_avx2_gather_w7 + +.p2align 5 +_ecp_nistz256_avx2_gather_w7: + +L$avx2_gather_w7: + vzeroupper + vmovdqa L$Three(%rip),%ymm0 + + vpxor %ymm2,%ymm2,%ymm2 + vpxor %ymm3,%ymm3,%ymm3 + + vmovdqa L$One(%rip),%ymm4 + vmovdqa L$Two(%rip),%ymm8 + vmovdqa L$Three(%rip),%ymm12 + + vmovd %edx,%xmm1 + vpermd %ymm1,%ymm2,%ymm1 + + + movq $21,%rax +L$select_loop_avx2_w7: + + vmovdqa 0(%rsi),%ymm5 + vmovdqa 32(%rsi),%ymm6 + + vmovdqa 64(%rsi),%ymm9 + vmovdqa 96(%rsi),%ymm10 + + vmovdqa 128(%rsi),%ymm13 + vmovdqa 160(%rsi),%ymm14 + + vpcmpeqd %ymm1,%ymm4,%ymm7 + vpcmpeqd %ymm1,%ymm8,%ymm11 + vpcmpeqd %ymm1,%ymm12,%ymm15 + + vpaddd %ymm0,%ymm4,%ymm4 + vpaddd %ymm0,%ymm8,%ymm8 + vpaddd %ymm0,%ymm12,%ymm12 + leaq 192(%rsi),%rsi + + vpand %ymm7,%ymm5,%ymm5 + vpand %ymm7,%ymm6,%ymm6 + vpand %ymm11,%ymm9,%ymm9 + vpand %ymm11,%ymm10,%ymm10 + vpand %ymm15,%ymm13,%ymm13 + vpand %ymm15,%ymm14,%ymm14 + + vpxor %ymm5,%ymm2,%ymm2 + vpxor %ymm6,%ymm3,%ymm3 + vpxor %ymm9,%ymm2,%ymm2 + vpxor %ymm10,%ymm3,%ymm3 + vpxor %ymm13,%ymm2,%ymm2 + vpxor %ymm14,%ymm3,%ymm3 + + decq %rax + jnz L$select_loop_avx2_w7 + + + vmovdqa 0(%rsi),%ymm5 + vmovdqa 32(%rsi),%ymm6 + + vpcmpeqd %ymm1,%ymm4,%ymm7 + + vpand %ymm7,%ymm5,%ymm5 + vpand %ymm7,%ymm6,%ymm6 + + vpxor %ymm5,%ymm2,%ymm2 + vpxor %ymm6,%ymm3,%ymm3 + + vmovdqu %ymm2,0(%rdi) + vmovdqu %ymm3,32(%rdi) + vzeroupper + .byte 0xf3,0xc3 + +L$SEH_end_ecp_nistz256_avx2_gather_w7: + + +.p2align 5 +__ecp_nistz256_add_toq: + + xorq %r11,%r11 + addq 0(%rbx),%r12 + adcq 8(%rbx),%r13 + movq %r12,%rax + adcq 16(%rbx),%r8 + adcq 24(%rbx),%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ecp_nistz256_sub_fromq: + + subq 0(%rbx),%r12 + sbbq 8(%rbx),%r13 + movq %r12,%rax + sbbq 16(%rbx),%r8 + sbbq 24(%rbx),%r9 + movq %r13,%rbp + sbbq %r11,%r11 + + addq $-1,%r12 + movq %r8,%rcx + adcq %r14,%r13 + adcq $0,%r8 + movq %r9,%r10 + adcq %r15,%r9 + testq %r11,%r11 + + cmovzq %rax,%r12 + cmovzq %rbp,%r13 + movq %r12,0(%rdi) + cmovzq %rcx,%r8 + movq %r13,8(%rdi) + cmovzq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ecp_nistz256_subq: + + subq %r12,%rax + sbbq %r13,%rbp + movq %rax,%r12 + sbbq %r8,%rcx + sbbq %r9,%r10 + movq %rbp,%r13 + sbbq %r11,%r11 + + addq $-1,%rax + movq %rcx,%r8 + adcq %r14,%rbp + adcq $0,%rcx + movq %r10,%r9 + adcq %r15,%r10 + testq %r11,%r11 + + cmovnzq %rax,%r12 + cmovnzq %rbp,%r13 + cmovnzq %rcx,%r8 + cmovnzq %r10,%r9 + + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ecp_nistz256_mul_by_2q: + + xorq %r11,%r11 + addq %r12,%r12 + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 + + +.globl _ecp_nistz256_point_double + +.p2align 5 +_ecp_nistz256_point_double: + + movl $0x80100,%ecx + andl _OPENSSL_ia32cap_P+8(%rip),%ecx + cmpl $0x80100,%ecx + je L$point_doublex + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $160+8,%rsp + +L$point_doubleq_body: + +L$point_double_shortcutq: + movdqu 0(%rsi),%xmm0 + movq %rsi,%rbx + movdqu 16(%rsi),%xmm1 + movq 32+0(%rsi),%r12 + movq 32+8(%rsi),%r13 + movq 32+16(%rsi),%r8 + movq 32+24(%rsi),%r9 + movq L$poly+8(%rip),%r14 + movq L$poly+24(%rip),%r15 + movdqa %xmm0,96(%rsp) + movdqa %xmm1,96+16(%rsp) + leaq 32(%rdi),%r10 + leaq 64(%rdi),%r11 +.byte 102,72,15,110,199 +.byte 102,73,15,110,202 +.byte 102,73,15,110,211 + + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_by_2q + + movq 64+0(%rsi),%rax + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + leaq 64-0(%rsi),%rsi + leaq 64(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 0+0(%rsp),%rax + movq 8+0(%rsp),%r14 + leaq 0+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 + leaq 0(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 32(%rbx),%rax + movq 64+0(%rbx),%r9 + movq 64+8(%rbx),%r10 + movq 64+16(%rbx),%r11 + movq 64+24(%rbx),%r12 + leaq 64-0(%rbx),%rsi + leaq 32(%rbx),%rbx +.byte 102,72,15,126,215 + call __ecp_nistz256_mul_montq + call __ecp_nistz256_mul_by_2q + + movq 96+0(%rsp),%r12 + movq 96+8(%rsp),%r13 + leaq 64(%rsp),%rbx + movq 96+16(%rsp),%r8 + movq 96+24(%rsp),%r9 + leaq 32(%rsp),%rdi + call __ecp_nistz256_add_toq + + movq 96+0(%rsp),%r12 + movq 96+8(%rsp),%r13 + leaq 64(%rsp),%rbx + movq 96+16(%rsp),%r8 + movq 96+24(%rsp),%r9 + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + movq 0+0(%rsp),%rax + movq 8+0(%rsp),%r14 + leaq 0+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 +.byte 102,72,15,126,207 + call __ecp_nistz256_sqr_montq + xorq %r9,%r9 + movq %r12,%rax + addq $-1,%r12 + movq %r13,%r10 + adcq %rsi,%r13 + movq %r14,%rcx + adcq $0,%r14 + movq %r15,%r8 + adcq %rbp,%r15 + adcq $0,%r9 + xorq %rsi,%rsi + testq $1,%rax + + cmovzq %rax,%r12 + cmovzq %r10,%r13 + cmovzq %rcx,%r14 + cmovzq %r8,%r15 + cmovzq %rsi,%r9 + + movq %r13,%rax + shrq $1,%r12 + shlq $63,%rax + movq %r14,%r10 + shrq $1,%r13 + orq %rax,%r12 + shlq $63,%r10 + movq %r15,%rcx + shrq $1,%r14 + orq %r10,%r13 + shlq $63,%rcx + movq %r12,0(%rdi) + shrq $1,%r15 + movq %r13,8(%rdi) + shlq $63,%r9 + orq %rcx,%r14 + orq %r9,%r15 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + movq 64(%rsp),%rax + leaq 64(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_by_2q + + leaq 32(%rsp),%rbx + leaq 32(%rsp),%rdi + call __ecp_nistz256_add_toq + + movq 96(%rsp),%rax + leaq 96(%rsp),%rbx + movq 0+0(%rsp),%r9 + movq 8+0(%rsp),%r10 + leaq 0+0(%rsp),%rsi + movq 16+0(%rsp),%r11 + movq 24+0(%rsp),%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_by_2q + + movq 0+32(%rsp),%rax + movq 8+32(%rsp),%r14 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r15 + movq 24+32(%rsp),%r8 +.byte 102,72,15,126,199 + call __ecp_nistz256_sqr_montq + + leaq 128(%rsp),%rbx + movq %r14,%r8 + movq %r15,%r9 + movq %rsi,%r14 + movq %rbp,%r15 + call __ecp_nistz256_sub_fromq + + movq 0+0(%rsp),%rax + movq 0+8(%rsp),%rbp + movq 0+16(%rsp),%rcx + movq 0+24(%rsp),%r10 + leaq 0(%rsp),%rdi + call __ecp_nistz256_subq + + movq 32(%rsp),%rax + leaq 32(%rsp),%rbx + movq %r12,%r14 + xorl %ecx,%ecx + movq %r12,0+0(%rsp) + movq %r13,%r10 + movq %r13,0+8(%rsp) + cmovzq %r8,%r11 + movq %r8,0+16(%rsp) + leaq 0-0(%rsp),%rsi + cmovzq %r9,%r12 + movq %r9,0+24(%rsp) + movq %r14,%r9 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montq + +.byte 102,72,15,126,203 +.byte 102,72,15,126,207 + call __ecp_nistz256_sub_fromq + + leaq 160+56(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbx + + movq -8(%rsi),%rbp + + leaq (%rsi),%rsp + +L$point_doubleq_epilogue: + .byte 0xf3,0xc3 + + +.globl _ecp_nistz256_point_add + +.p2align 5 +_ecp_nistz256_point_add: + + movl $0x80100,%ecx + andl _OPENSSL_ia32cap_P+8(%rip),%ecx + cmpl $0x80100,%ecx + je L$point_addx + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $576+8,%rsp + +L$point_addq_body: + + movdqu 0(%rsi),%xmm0 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqu 64(%rsi),%xmm4 + movdqu 80(%rsi),%xmm5 + movq %rsi,%rbx + movq %rdx,%rsi + movdqa %xmm0,384(%rsp) + movdqa %xmm1,384+16(%rsp) + movdqa %xmm2,416(%rsp) + movdqa %xmm3,416+16(%rsp) + movdqa %xmm4,448(%rsp) + movdqa %xmm5,448+16(%rsp) + por %xmm4,%xmm5 + + movdqu 0(%rsi),%xmm0 + pshufd $0xb1,%xmm5,%xmm3 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + por %xmm3,%xmm5 + movdqu 48(%rsi),%xmm3 + movq 64+0(%rsi),%rax + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + movdqa %xmm0,480(%rsp) + pshufd $0x1e,%xmm5,%xmm4 + movdqa %xmm1,480+16(%rsp) + movdqu 64(%rsi),%xmm0 + movdqu 80(%rsi),%xmm1 + movdqa %xmm2,512(%rsp) + movdqa %xmm3,512+16(%rsp) + por %xmm4,%xmm5 + pxor %xmm4,%xmm4 + por %xmm0,%xmm1 +.byte 102,72,15,110,199 + + leaq 64-0(%rsi),%rsi + movq %rax,544+0(%rsp) + movq %r14,544+8(%rsp) + movq %r15,544+16(%rsp) + movq %r8,544+24(%rsp) + leaq 96(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + pcmpeqd %xmm4,%xmm5 + pshufd $0xb1,%xmm1,%xmm4 + por %xmm1,%xmm4 + pshufd $0,%xmm5,%xmm5 + pshufd $0x1e,%xmm4,%xmm3 + por %xmm3,%xmm4 + pxor %xmm3,%xmm3 + pcmpeqd %xmm3,%xmm4 + pshufd $0,%xmm4,%xmm4 + movq 64+0(%rbx),%rax + movq 64+8(%rbx),%r14 + movq 64+16(%rbx),%r15 + movq 64+24(%rbx),%r8 +.byte 102,72,15,110,203 + + leaq 64-0(%rbx),%rsi + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 544(%rsp),%rax + leaq 544(%rsp),%rbx + movq 0+96(%rsp),%r9 + movq 8+96(%rsp),%r10 + leaq 0+96(%rsp),%rsi + movq 16+96(%rsp),%r11 + movq 24+96(%rsp),%r12 + leaq 224(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 448(%rsp),%rax + leaq 448(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 416(%rsp),%rax + leaq 416(%rsp),%rbx + movq 0+224(%rsp),%r9 + movq 8+224(%rsp),%r10 + leaq 0+224(%rsp),%rsi + movq 16+224(%rsp),%r11 + movq 24+224(%rsp),%r12 + leaq 224(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 512(%rsp),%rax + leaq 512(%rsp),%rbx + movq 0+256(%rsp),%r9 + movq 8+256(%rsp),%r10 + leaq 0+256(%rsp),%rsi + movq 16+256(%rsp),%r11 + movq 24+256(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 224(%rsp),%rbx + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + orq %r13,%r12 + movdqa %xmm4,%xmm2 + orq %r8,%r12 + orq %r9,%r12 + por %xmm5,%xmm2 +.byte 102,73,15,110,220 + + movq 384(%rsp),%rax + leaq 384(%rsp),%rbx + movq 0+96(%rsp),%r9 + movq 8+96(%rsp),%r10 + leaq 0+96(%rsp),%rsi + movq 16+96(%rsp),%r11 + movq 24+96(%rsp),%r12 + leaq 160(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 480(%rsp),%rax + leaq 480(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 192(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 160(%rsp),%rbx + leaq 0(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + orq %r13,%r12 + orq %r8,%r12 + orq %r9,%r12 + +.byte 102,73,15,126,208 +.byte 102,73,15,126,217 + + orq %r8,%r12 + orq %r9,%r12 + + +.byte 0x3e + jnz L$add_proceedq + +L$add_doubleq: +.byte 102,72,15,126,206 +.byte 102,72,15,126,199 + addq $416,%rsp + + jmp L$point_double_shortcutq + + +.p2align 5 +L$add_proceedq: + movq 0+64(%rsp),%rax + movq 8+64(%rsp),%r14 + leaq 0+64(%rsp),%rsi + movq 16+64(%rsp),%r15 + movq 24+64(%rsp),%r8 + leaq 96(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 448(%rsp),%rax + leaq 448(%rsp),%rbx + movq 0+0(%rsp),%r9 + movq 8+0(%rsp),%r10 + leaq 0+0(%rsp),%rsi + movq 16+0(%rsp),%r11 + movq 24+0(%rsp),%r12 + leaq 352(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 0+0(%rsp),%rax + movq 8+0(%rsp),%r14 + leaq 0+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 544(%rsp),%rax + leaq 544(%rsp),%rbx + movq 0+352(%rsp),%r9 + movq 8+352(%rsp),%r10 + leaq 0+352(%rsp),%rsi + movq 16+352(%rsp),%r11 + movq 24+352(%rsp),%r12 + leaq 352(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 0(%rsp),%rax + leaq 0(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 160(%rsp),%rax + leaq 160(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 192(%rsp),%rdi + call __ecp_nistz256_mul_montq + + + + + xorq %r11,%r11 + addq %r12,%r12 + leaq 96(%rsp),%rsi + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + movq 0(%rsi),%rax + cmovcq %rbp,%r13 + movq 8(%rsi),%rbp + cmovcq %rcx,%r8 + movq 16(%rsi),%rcx + cmovcq %r10,%r9 + movq 24(%rsi),%r10 + + call __ecp_nistz256_subq + + leaq 128(%rsp),%rbx + leaq 288(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + movq 192+0(%rsp),%rax + movq 192+8(%rsp),%rbp + movq 192+16(%rsp),%rcx + movq 192+24(%rsp),%r10 + leaq 320(%rsp),%rdi + + call __ecp_nistz256_subq + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + movq 128(%rsp),%rax + leaq 128(%rsp),%rbx + movq 0+224(%rsp),%r9 + movq 8+224(%rsp),%r10 + leaq 0+224(%rsp),%rsi + movq 16+224(%rsp),%r11 + movq 24+224(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 320(%rsp),%rax + leaq 320(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq 0+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 320(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 256(%rsp),%rbx + leaq 320(%rsp),%rdi + call __ecp_nistz256_sub_fromq + +.byte 102,72,15,126,199 + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 352(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 352+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 544(%rsp),%xmm2 + pand 544+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 448(%rsp),%xmm2 + pand 448+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,64(%rdi) + movdqu %xmm3,80(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 288(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 288+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 480(%rsp),%xmm2 + pand 480+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 384(%rsp),%xmm2 + pand 384+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 320(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 320+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 512(%rsp),%xmm2 + pand 512+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 416(%rsp),%xmm2 + pand 416+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + +L$add_doneq: + leaq 576+56(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbx + + movq -8(%rsi),%rbp + + leaq (%rsi),%rsp + +L$point_addq_epilogue: + .byte 0xf3,0xc3 + + +.globl _ecp_nistz256_point_add_affine + +.p2align 5 +_ecp_nistz256_point_add_affine: + + movl $0x80100,%ecx + andl _OPENSSL_ia32cap_P+8(%rip),%ecx + cmpl $0x80100,%ecx + je L$point_add_affinex + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $480+8,%rsp + +L$add_affineq_body: + + movdqu 0(%rsi),%xmm0 + movq %rdx,%rbx + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqu 64(%rsi),%xmm4 + movdqu 80(%rsi),%xmm5 + movq 64+0(%rsi),%rax + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + movdqa %xmm0,320(%rsp) + movdqa %xmm1,320+16(%rsp) + movdqa %xmm2,352(%rsp) + movdqa %xmm3,352+16(%rsp) + movdqa %xmm4,384(%rsp) + movdqa %xmm5,384+16(%rsp) + por %xmm4,%xmm5 + + movdqu 0(%rbx),%xmm0 + pshufd $0xb1,%xmm5,%xmm3 + movdqu 16(%rbx),%xmm1 + movdqu 32(%rbx),%xmm2 + por %xmm3,%xmm5 + movdqu 48(%rbx),%xmm3 + movdqa %xmm0,416(%rsp) + pshufd $0x1e,%xmm5,%xmm4 + movdqa %xmm1,416+16(%rsp) + por %xmm0,%xmm1 +.byte 102,72,15,110,199 + movdqa %xmm2,448(%rsp) + movdqa %xmm3,448+16(%rsp) + por %xmm2,%xmm3 + por %xmm4,%xmm5 + pxor %xmm4,%xmm4 + por %xmm1,%xmm3 + + leaq 64-0(%rsi),%rsi + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + pcmpeqd %xmm4,%xmm5 + pshufd $0xb1,%xmm3,%xmm4 + movq 0(%rbx),%rax + + movq %r12,%r9 + por %xmm3,%xmm4 + pshufd $0,%xmm5,%xmm5 + pshufd $0x1e,%xmm4,%xmm3 + movq %r13,%r10 + por %xmm3,%xmm4 + pxor %xmm3,%xmm3 + movq %r14,%r11 + pcmpeqd %xmm3,%xmm4 + pshufd $0,%xmm4,%xmm4 + + leaq 32-0(%rsp),%rsi + movq %r15,%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 320(%rsp),%rbx + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + movq 384(%rsp),%rax + leaq 384(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 384(%rsp),%rax + leaq 384(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq 0+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 288(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 448(%rsp),%rax + leaq 448(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq 0+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 352(%rsp),%rbx + leaq 96(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + movq 0+64(%rsp),%rax + movq 8+64(%rsp),%r14 + leaq 0+64(%rsp),%rsi + movq 16+64(%rsp),%r15 + movq 24+64(%rsp),%r8 + leaq 128(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 0+96(%rsp),%rax + movq 8+96(%rsp),%r14 + leaq 0+96(%rsp),%rsi + movq 16+96(%rsp),%r15 + movq 24+96(%rsp),%r8 + leaq 192(%rsp),%rdi + call __ecp_nistz256_sqr_montq + + movq 128(%rsp),%rax + leaq 128(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq 0+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 160(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 320(%rsp),%rax + leaq 320(%rsp),%rbx + movq 0+128(%rsp),%r9 + movq 8+128(%rsp),%r10 + leaq 0+128(%rsp),%rsi + movq 16+128(%rsp),%r11 + movq 24+128(%rsp),%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montq + + + + + xorq %r11,%r11 + addq %r12,%r12 + leaq 192(%rsp),%rsi + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + movq 0(%rsi),%rax + cmovcq %rbp,%r13 + movq 8(%rsi),%rbp + cmovcq %rcx,%r8 + movq 16(%rsi),%rcx + cmovcq %r10,%r9 + movq 24(%rsi),%r10 + + call __ecp_nistz256_subq + + leaq 160(%rsp),%rbx + leaq 224(%rsp),%rdi + call __ecp_nistz256_sub_fromq + + movq 0+0(%rsp),%rax + movq 0+8(%rsp),%rbp + movq 0+16(%rsp),%rcx + movq 0+24(%rsp),%r10 + leaq 64(%rsp),%rdi + + call __ecp_nistz256_subq + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + movq 352(%rsp),%rax + leaq 352(%rsp),%rbx + movq 0+160(%rsp),%r9 + movq 8+160(%rsp),%r10 + leaq 0+160(%rsp),%rsi + movq 16+160(%rsp),%r11 + movq 24+160(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montq + + movq 96(%rsp),%rax + leaq 96(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq 0+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 64(%rsp),%rdi + call __ecp_nistz256_mul_montq + + leaq 32(%rsp),%rbx + leaq 256(%rsp),%rdi + call __ecp_nistz256_sub_fromq + +.byte 102,72,15,126,199 + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 288(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 288+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand L$ONE_mont(%rip),%xmm2 + pand L$ONE_mont+16(%rip),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 384(%rsp),%xmm2 + pand 384+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,64(%rdi) + movdqu %xmm3,80(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 224(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 224+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 416(%rsp),%xmm2 + pand 416+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 320(%rsp),%xmm2 + pand 320+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 256(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 256+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 448(%rsp),%xmm2 + pand 448+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 352(%rsp),%xmm2 + pand 352+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + + leaq 480+56(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbx + + movq -8(%rsi),%rbp + + leaq (%rsi),%rsp + +L$add_affineq_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +__ecp_nistz256_add_tox: + + xorq %r11,%r11 + adcq 0(%rbx),%r12 + adcq 8(%rbx),%r13 + movq %r12,%rax + adcq 16(%rbx),%r8 + adcq 24(%rbx),%r9 + movq %r13,%rbp + adcq $0,%r11 + + xorq %r10,%r10 + sbbq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ecp_nistz256_sub_fromx: + + xorq %r11,%r11 + sbbq 0(%rbx),%r12 + sbbq 8(%rbx),%r13 + movq %r12,%rax + sbbq 16(%rbx),%r8 + sbbq 24(%rbx),%r9 + movq %r13,%rbp + sbbq $0,%r11 + + xorq %r10,%r10 + adcq $-1,%r12 + movq %r8,%rcx + adcq %r14,%r13 + adcq $0,%r8 + movq %r9,%r10 + adcq %r15,%r9 + + btq $0,%r11 + cmovncq %rax,%r12 + cmovncq %rbp,%r13 + movq %r12,0(%rdi) + cmovncq %rcx,%r8 + movq %r13,8(%rdi) + cmovncq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ecp_nistz256_subx: + + xorq %r11,%r11 + sbbq %r12,%rax + sbbq %r13,%rbp + movq %rax,%r12 + sbbq %r8,%rcx + sbbq %r9,%r10 + movq %rbp,%r13 + sbbq $0,%r11 + + xorq %r9,%r9 + adcq $-1,%rax + movq %rcx,%r8 + adcq %r14,%rbp + adcq $0,%rcx + movq %r10,%r9 + adcq %r15,%r10 + + btq $0,%r11 + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + cmovcq %rcx,%r8 + cmovcq %r10,%r9 + + .byte 0xf3,0xc3 + + + + +.p2align 5 +__ecp_nistz256_mul_by_2x: + + xorq %r11,%r11 + adcq %r12,%r12 + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + xorq %r10,%r10 + sbbq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 + + + +.p2align 5 +ecp_nistz256_point_doublex: + +L$point_doublex: + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $160+8,%rsp + +L$point_doublex_body: + +L$point_double_shortcutx: + movdqu 0(%rsi),%xmm0 + movq %rsi,%rbx + movdqu 16(%rsi),%xmm1 + movq 32+0(%rsi),%r12 + movq 32+8(%rsi),%r13 + movq 32+16(%rsi),%r8 + movq 32+24(%rsi),%r9 + movq L$poly+8(%rip),%r14 + movq L$poly+24(%rip),%r15 + movdqa %xmm0,96(%rsp) + movdqa %xmm1,96+16(%rsp) + leaq 32(%rdi),%r10 + leaq 64(%rdi),%r11 +.byte 102,72,15,110,199 +.byte 102,73,15,110,202 +.byte 102,73,15,110,211 + + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_by_2x + + movq 64+0(%rsi),%rdx + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + leaq 64-128(%rsi),%rsi + leaq 64(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 0+0(%rsp),%rdx + movq 8+0(%rsp),%r14 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 + leaq 0(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 32(%rbx),%rdx + movq 64+0(%rbx),%r9 + movq 64+8(%rbx),%r10 + movq 64+16(%rbx),%r11 + movq 64+24(%rbx),%r12 + leaq 64-128(%rbx),%rsi + leaq 32(%rbx),%rbx +.byte 102,72,15,126,215 + call __ecp_nistz256_mul_montx + call __ecp_nistz256_mul_by_2x + + movq 96+0(%rsp),%r12 + movq 96+8(%rsp),%r13 + leaq 64(%rsp),%rbx + movq 96+16(%rsp),%r8 + movq 96+24(%rsp),%r9 + leaq 32(%rsp),%rdi + call __ecp_nistz256_add_tox + + movq 96+0(%rsp),%r12 + movq 96+8(%rsp),%r13 + leaq 64(%rsp),%rbx + movq 96+16(%rsp),%r8 + movq 96+24(%rsp),%r9 + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 0+0(%rsp),%rdx + movq 8+0(%rsp),%r14 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 +.byte 102,72,15,126,207 + call __ecp_nistz256_sqr_montx + xorq %r9,%r9 + movq %r12,%rax + addq $-1,%r12 + movq %r13,%r10 + adcq %rsi,%r13 + movq %r14,%rcx + adcq $0,%r14 + movq %r15,%r8 + adcq %rbp,%r15 + adcq $0,%r9 + xorq %rsi,%rsi + testq $1,%rax + + cmovzq %rax,%r12 + cmovzq %r10,%r13 + cmovzq %rcx,%r14 + cmovzq %r8,%r15 + cmovzq %rsi,%r9 + + movq %r13,%rax + shrq $1,%r12 + shlq $63,%rax + movq %r14,%r10 + shrq $1,%r13 + orq %rax,%r12 + shlq $63,%r10 + movq %r15,%rcx + shrq $1,%r14 + orq %r10,%r13 + shlq $63,%rcx + movq %r12,0(%rdi) + shrq $1,%r15 + movq %r13,8(%rdi) + shlq $63,%r9 + orq %rcx,%r14 + orq %r9,%r15 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + movq 64(%rsp),%rdx + leaq 64(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_by_2x + + leaq 32(%rsp),%rbx + leaq 32(%rsp),%rdi + call __ecp_nistz256_add_tox + + movq 96(%rsp),%rdx + leaq 96(%rsp),%rbx + movq 0+0(%rsp),%r9 + movq 8+0(%rsp),%r10 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r11 + movq 24+0(%rsp),%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_by_2x + + movq 0+32(%rsp),%rdx + movq 8+32(%rsp),%r14 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r15 + movq 24+32(%rsp),%r8 +.byte 102,72,15,126,199 + call __ecp_nistz256_sqr_montx + + leaq 128(%rsp),%rbx + movq %r14,%r8 + movq %r15,%r9 + movq %rsi,%r14 + movq %rbp,%r15 + call __ecp_nistz256_sub_fromx + + movq 0+0(%rsp),%rax + movq 0+8(%rsp),%rbp + movq 0+16(%rsp),%rcx + movq 0+24(%rsp),%r10 + leaq 0(%rsp),%rdi + call __ecp_nistz256_subx + + movq 32(%rsp),%rdx + leaq 32(%rsp),%rbx + movq %r12,%r14 + xorl %ecx,%ecx + movq %r12,0+0(%rsp) + movq %r13,%r10 + movq %r13,0+8(%rsp) + cmovzq %r8,%r11 + movq %r8,0+16(%rsp) + leaq 0-128(%rsp),%rsi + cmovzq %r9,%r12 + movq %r9,0+24(%rsp) + movq %r14,%r9 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + +.byte 102,72,15,126,203 +.byte 102,72,15,126,207 + call __ecp_nistz256_sub_fromx + + leaq 160+56(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbx + + movq -8(%rsi),%rbp + + leaq (%rsi),%rsp + +L$point_doublex_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +ecp_nistz256_point_addx: + +L$point_addx: + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $576+8,%rsp + +L$point_addx_body: + + movdqu 0(%rsi),%xmm0 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqu 64(%rsi),%xmm4 + movdqu 80(%rsi),%xmm5 + movq %rsi,%rbx + movq %rdx,%rsi + movdqa %xmm0,384(%rsp) + movdqa %xmm1,384+16(%rsp) + movdqa %xmm2,416(%rsp) + movdqa %xmm3,416+16(%rsp) + movdqa %xmm4,448(%rsp) + movdqa %xmm5,448+16(%rsp) + por %xmm4,%xmm5 + + movdqu 0(%rsi),%xmm0 + pshufd $0xb1,%xmm5,%xmm3 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + por %xmm3,%xmm5 + movdqu 48(%rsi),%xmm3 + movq 64+0(%rsi),%rdx + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + movdqa %xmm0,480(%rsp) + pshufd $0x1e,%xmm5,%xmm4 + movdqa %xmm1,480+16(%rsp) + movdqu 64(%rsi),%xmm0 + movdqu 80(%rsi),%xmm1 + movdqa %xmm2,512(%rsp) + movdqa %xmm3,512+16(%rsp) + por %xmm4,%xmm5 + pxor %xmm4,%xmm4 + por %xmm0,%xmm1 +.byte 102,72,15,110,199 + + leaq 64-128(%rsi),%rsi + movq %rdx,544+0(%rsp) + movq %r14,544+8(%rsp) + movq %r15,544+16(%rsp) + movq %r8,544+24(%rsp) + leaq 96(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + pcmpeqd %xmm4,%xmm5 + pshufd $0xb1,%xmm1,%xmm4 + por %xmm1,%xmm4 + pshufd $0,%xmm5,%xmm5 + pshufd $0x1e,%xmm4,%xmm3 + por %xmm3,%xmm4 + pxor %xmm3,%xmm3 + pcmpeqd %xmm3,%xmm4 + pshufd $0,%xmm4,%xmm4 + movq 64+0(%rbx),%rdx + movq 64+8(%rbx),%r14 + movq 64+16(%rbx),%r15 + movq 64+24(%rbx),%r8 +.byte 102,72,15,110,203 + + leaq 64-128(%rbx),%rsi + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 544(%rsp),%rdx + leaq 544(%rsp),%rbx + movq 0+96(%rsp),%r9 + movq 8+96(%rsp),%r10 + leaq -128+96(%rsp),%rsi + movq 16+96(%rsp),%r11 + movq 24+96(%rsp),%r12 + leaq 224(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 448(%rsp),%rdx + leaq 448(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 416(%rsp),%rdx + leaq 416(%rsp),%rbx + movq 0+224(%rsp),%r9 + movq 8+224(%rsp),%r10 + leaq -128+224(%rsp),%rsi + movq 16+224(%rsp),%r11 + movq 24+224(%rsp),%r12 + leaq 224(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 512(%rsp),%rdx + leaq 512(%rsp),%rbx + movq 0+256(%rsp),%r9 + movq 8+256(%rsp),%r10 + leaq -128+256(%rsp),%rsi + movq 16+256(%rsp),%r11 + movq 24+256(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 224(%rsp),%rbx + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + orq %r13,%r12 + movdqa %xmm4,%xmm2 + orq %r8,%r12 + orq %r9,%r12 + por %xmm5,%xmm2 +.byte 102,73,15,110,220 + + movq 384(%rsp),%rdx + leaq 384(%rsp),%rbx + movq 0+96(%rsp),%r9 + movq 8+96(%rsp),%r10 + leaq -128+96(%rsp),%rsi + movq 16+96(%rsp),%r11 + movq 24+96(%rsp),%r12 + leaq 160(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 480(%rsp),%rdx + leaq 480(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 192(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 160(%rsp),%rbx + leaq 0(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + orq %r13,%r12 + orq %r8,%r12 + orq %r9,%r12 + +.byte 102,73,15,126,208 +.byte 102,73,15,126,217 + + orq %r8,%r12 + orq %r9,%r12 + + +.byte 0x3e + jnz L$add_proceedx + +L$add_doublex: +.byte 102,72,15,126,206 +.byte 102,72,15,126,199 + addq $416,%rsp + + jmp L$point_double_shortcutx + + +.p2align 5 +L$add_proceedx: + movq 0+64(%rsp),%rdx + movq 8+64(%rsp),%r14 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r15 + movq 24+64(%rsp),%r8 + leaq 96(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 448(%rsp),%rdx + leaq 448(%rsp),%rbx + movq 0+0(%rsp),%r9 + movq 8+0(%rsp),%r10 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r11 + movq 24+0(%rsp),%r12 + leaq 352(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 0+0(%rsp),%rdx + movq 8+0(%rsp),%r14 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 544(%rsp),%rdx + leaq 544(%rsp),%rbx + movq 0+352(%rsp),%r9 + movq 8+352(%rsp),%r10 + leaq -128+352(%rsp),%rsi + movq 16+352(%rsp),%r11 + movq 24+352(%rsp),%r12 + leaq 352(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 0(%rsp),%rdx + leaq 0(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 160(%rsp),%rdx + leaq 160(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 192(%rsp),%rdi + call __ecp_nistz256_mul_montx + + + + + xorq %r11,%r11 + addq %r12,%r12 + leaq 96(%rsp),%rsi + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + movq 0(%rsi),%rax + cmovcq %rbp,%r13 + movq 8(%rsi),%rbp + cmovcq %rcx,%r8 + movq 16(%rsi),%rcx + cmovcq %r10,%r9 + movq 24(%rsi),%r10 + + call __ecp_nistz256_subx + + leaq 128(%rsp),%rbx + leaq 288(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 192+0(%rsp),%rax + movq 192+8(%rsp),%rbp + movq 192+16(%rsp),%rcx + movq 192+24(%rsp),%r10 + leaq 320(%rsp),%rdi + + call __ecp_nistz256_subx + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + movq 128(%rsp),%rdx + leaq 128(%rsp),%rbx + movq 0+224(%rsp),%r9 + movq 8+224(%rsp),%r10 + leaq -128+224(%rsp),%rsi + movq 16+224(%rsp),%r11 + movq 24+224(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 320(%rsp),%rdx + leaq 320(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 320(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 256(%rsp),%rbx + leaq 320(%rsp),%rdi + call __ecp_nistz256_sub_fromx + +.byte 102,72,15,126,199 + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 352(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 352+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 544(%rsp),%xmm2 + pand 544+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 448(%rsp),%xmm2 + pand 448+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,64(%rdi) + movdqu %xmm3,80(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 288(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 288+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 480(%rsp),%xmm2 + pand 480+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 384(%rsp),%xmm2 + pand 384+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 320(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 320+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 512(%rsp),%xmm2 + pand 512+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 416(%rsp),%xmm2 + pand 416+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + +L$add_donex: + leaq 576+56(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbx + + movq -8(%rsi),%rbp + + leaq (%rsi),%rsp + +L$point_addx_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +ecp_nistz256_point_add_affinex: + +L$point_add_affinex: + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $480+8,%rsp + +L$add_affinex_body: + + movdqu 0(%rsi),%xmm0 + movq %rdx,%rbx + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqu 64(%rsi),%xmm4 + movdqu 80(%rsi),%xmm5 + movq 64+0(%rsi),%rdx + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + movdqa %xmm0,320(%rsp) + movdqa %xmm1,320+16(%rsp) + movdqa %xmm2,352(%rsp) + movdqa %xmm3,352+16(%rsp) + movdqa %xmm4,384(%rsp) + movdqa %xmm5,384+16(%rsp) + por %xmm4,%xmm5 + + movdqu 0(%rbx),%xmm0 + pshufd $0xb1,%xmm5,%xmm3 + movdqu 16(%rbx),%xmm1 + movdqu 32(%rbx),%xmm2 + por %xmm3,%xmm5 + movdqu 48(%rbx),%xmm3 + movdqa %xmm0,416(%rsp) + pshufd $0x1e,%xmm5,%xmm4 + movdqa %xmm1,416+16(%rsp) + por %xmm0,%xmm1 +.byte 102,72,15,110,199 + movdqa %xmm2,448(%rsp) + movdqa %xmm3,448+16(%rsp) + por %xmm2,%xmm3 + por %xmm4,%xmm5 + pxor %xmm4,%xmm4 + por %xmm1,%xmm3 + + leaq 64-128(%rsi),%rsi + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + pcmpeqd %xmm4,%xmm5 + pshufd $0xb1,%xmm3,%xmm4 + movq 0(%rbx),%rdx + + movq %r12,%r9 + por %xmm3,%xmm4 + pshufd $0,%xmm5,%xmm5 + pshufd $0x1e,%xmm4,%xmm3 + movq %r13,%r10 + por %xmm3,%xmm4 + pxor %xmm3,%xmm3 + movq %r14,%r11 + pcmpeqd %xmm3,%xmm4 + pshufd $0,%xmm4,%xmm4 + + leaq 32-128(%rsp),%rsi + movq %r15,%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 320(%rsp),%rbx + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 384(%rsp),%rdx + leaq 384(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 384(%rsp),%rdx + leaq 384(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 288(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 448(%rsp),%rdx + leaq 448(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 352(%rsp),%rbx + leaq 96(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 0+64(%rsp),%rdx + movq 8+64(%rsp),%r14 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r15 + movq 24+64(%rsp),%r8 + leaq 128(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 0+96(%rsp),%rdx + movq 8+96(%rsp),%r14 + leaq -128+96(%rsp),%rsi + movq 16+96(%rsp),%r15 + movq 24+96(%rsp),%r8 + leaq 192(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 128(%rsp),%rdx + leaq 128(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 160(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 320(%rsp),%rdx + leaq 320(%rsp),%rbx + movq 0+128(%rsp),%r9 + movq 8+128(%rsp),%r10 + leaq -128+128(%rsp),%rsi + movq 16+128(%rsp),%r11 + movq 24+128(%rsp),%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + + + + + xorq %r11,%r11 + addq %r12,%r12 + leaq 192(%rsp),%rsi + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + movq 0(%rsi),%rax + cmovcq %rbp,%r13 + movq 8(%rsi),%rbp + cmovcq %rcx,%r8 + movq 16(%rsi),%rcx + cmovcq %r10,%r9 + movq 24(%rsi),%r10 + + call __ecp_nistz256_subx + + leaq 160(%rsp),%rbx + leaq 224(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 0+0(%rsp),%rax + movq 0+8(%rsp),%rbp + movq 0+16(%rsp),%rcx + movq 0+24(%rsp),%r10 + leaq 64(%rsp),%rdi + + call __ecp_nistz256_subx + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + movq 352(%rsp),%rdx + leaq 352(%rsp),%rbx + movq 0+160(%rsp),%r9 + movq 8+160(%rsp),%r10 + leaq -128+160(%rsp),%rsi + movq 16+160(%rsp),%r11 + movq 24+160(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 96(%rsp),%rdx + leaq 96(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 64(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 32(%rsp),%rbx + leaq 256(%rsp),%rdi + call __ecp_nistz256_sub_fromx + +.byte 102,72,15,126,199 + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 288(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 288+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand L$ONE_mont(%rip),%xmm2 + pand L$ONE_mont+16(%rip),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 384(%rsp),%xmm2 + pand 384+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,64(%rdi) + movdqu %xmm3,80(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 224(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 224+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 416(%rsp),%xmm2 + pand 416+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 320(%rsp),%xmm2 + pand 320+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 256(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 256+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 448(%rsp),%xmm2 + pand 448+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 352(%rsp),%xmm2 + pand 352+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + + leaq 480+56(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbx + + movq -8(%rsi),%rbp + + leaq (%rsi),%rsp + +L$add_affinex_epilogue: + .byte 0xf3,0xc3 + + diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/ec/x25519-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/ec/x25519-x86_64.s new file mode 100644 index 0000000..158e849 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/ec/x25519-x86_64.s @@ -0,0 +1,770 @@ +.text + +.globl _x25519_fe51_mul + +.p2align 5 +_x25519_fe51_mul: + + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + leaq -40(%rsp),%rsp + +L$fe51_mul_body: + + movq 0(%rsi),%rax + movq 0(%rdx),%r11 + movq 8(%rdx),%r12 + movq 16(%rdx),%r13 + movq 24(%rdx),%rbp + movq 32(%rdx),%r14 + + movq %rdi,32(%rsp) + movq %rax,%rdi + mulq %r11 + movq %r11,0(%rsp) + movq %rax,%rbx + movq %rdi,%rax + movq %rdx,%rcx + mulq %r12 + movq %r12,8(%rsp) + movq %rax,%r8 + movq %rdi,%rax + leaq (%r14,%r14,8),%r15 + movq %rdx,%r9 + mulq %r13 + movq %r13,16(%rsp) + movq %rax,%r10 + movq %rdi,%rax + leaq (%r14,%r15,2),%rdi + movq %rdx,%r11 + mulq %rbp + movq %rax,%r12 + movq 0(%rsi),%rax + movq %rdx,%r13 + mulq %r14 + movq %rax,%r14 + movq 8(%rsi),%rax + movq %rdx,%r15 + + mulq %rdi + addq %rax,%rbx + movq 16(%rsi),%rax + adcq %rdx,%rcx + mulq %rdi + addq %rax,%r8 + movq 24(%rsi),%rax + adcq %rdx,%r9 + mulq %rdi + addq %rax,%r10 + movq 32(%rsi),%rax + adcq %rdx,%r11 + mulq %rdi + imulq $19,%rbp,%rdi + addq %rax,%r12 + movq 8(%rsi),%rax + adcq %rdx,%r13 + mulq %rbp + movq 16(%rsp),%rbp + addq %rax,%r14 + movq 16(%rsi),%rax + adcq %rdx,%r15 + + mulq %rdi + addq %rax,%rbx + movq 24(%rsi),%rax + adcq %rdx,%rcx + mulq %rdi + addq %rax,%r8 + movq 32(%rsi),%rax + adcq %rdx,%r9 + mulq %rdi + imulq $19,%rbp,%rdi + addq %rax,%r10 + movq 8(%rsi),%rax + adcq %rdx,%r11 + mulq %rbp + addq %rax,%r12 + movq 16(%rsi),%rax + adcq %rdx,%r13 + mulq %rbp + movq 8(%rsp),%rbp + addq %rax,%r14 + movq 24(%rsi),%rax + adcq %rdx,%r15 + + mulq %rdi + addq %rax,%rbx + movq 32(%rsi),%rax + adcq %rdx,%rcx + mulq %rdi + addq %rax,%r8 + movq 8(%rsi),%rax + adcq %rdx,%r9 + mulq %rbp + imulq $19,%rbp,%rdi + addq %rax,%r10 + movq 16(%rsi),%rax + adcq %rdx,%r11 + mulq %rbp + addq %rax,%r12 + movq 24(%rsi),%rax + adcq %rdx,%r13 + mulq %rbp + movq 0(%rsp),%rbp + addq %rax,%r14 + movq 32(%rsi),%rax + adcq %rdx,%r15 + + mulq %rdi + addq %rax,%rbx + movq 8(%rsi),%rax + adcq %rdx,%rcx + mulq %rbp + addq %rax,%r8 + movq 16(%rsi),%rax + adcq %rdx,%r9 + mulq %rbp + addq %rax,%r10 + movq 24(%rsi),%rax + adcq %rdx,%r11 + mulq %rbp + addq %rax,%r12 + movq 32(%rsi),%rax + adcq %rdx,%r13 + mulq %rbp + addq %rax,%r14 + adcq %rdx,%r15 + + movq 32(%rsp),%rdi + jmp L$reduce51 +L$fe51_mul_epilogue: + + + +.globl _x25519_fe51_sqr + +.p2align 5 +_x25519_fe51_sqr: + + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + leaq -40(%rsp),%rsp + +L$fe51_sqr_body: + + movq 0(%rsi),%rax + movq 16(%rsi),%r15 + movq 32(%rsi),%rbp + + movq %rdi,32(%rsp) + leaq (%rax,%rax,1),%r14 + mulq %rax + movq %rax,%rbx + movq 8(%rsi),%rax + movq %rdx,%rcx + mulq %r14 + movq %rax,%r8 + movq %r15,%rax + movq %r15,0(%rsp) + movq %rdx,%r9 + mulq %r14 + movq %rax,%r10 + movq 24(%rsi),%rax + movq %rdx,%r11 + imulq $19,%rbp,%rdi + mulq %r14 + movq %rax,%r12 + movq %rbp,%rax + movq %rdx,%r13 + mulq %r14 + movq %rax,%r14 + movq %rbp,%rax + movq %rdx,%r15 + + mulq %rdi + addq %rax,%r12 + movq 8(%rsi),%rax + adcq %rdx,%r13 + + movq 24(%rsi),%rsi + leaq (%rax,%rax,1),%rbp + mulq %rax + addq %rax,%r10 + movq 0(%rsp),%rax + adcq %rdx,%r11 + mulq %rbp + addq %rax,%r12 + movq %rbp,%rax + adcq %rdx,%r13 + mulq %rsi + addq %rax,%r14 + movq %rbp,%rax + adcq %rdx,%r15 + imulq $19,%rsi,%rbp + mulq %rdi + addq %rax,%rbx + leaq (%rsi,%rsi,1),%rax + adcq %rdx,%rcx + + mulq %rdi + addq %rax,%r10 + movq %rsi,%rax + adcq %rdx,%r11 + mulq %rbp + addq %rax,%r8 + movq 0(%rsp),%rax + adcq %rdx,%r9 + + leaq (%rax,%rax,1),%rsi + mulq %rax + addq %rax,%r14 + movq %rbp,%rax + adcq %rdx,%r15 + mulq %rsi + addq %rax,%rbx + movq %rsi,%rax + adcq %rdx,%rcx + mulq %rdi + addq %rax,%r8 + adcq %rdx,%r9 + + movq 32(%rsp),%rdi + jmp L$reduce51 + +.p2align 5 +L$reduce51: + movq $0x7ffffffffffff,%rbp + + movq %r10,%rdx + shrq $51,%r10 + shlq $13,%r11 + andq %rbp,%rdx + orq %r10,%r11 + addq %r11,%r12 + adcq $0,%r13 + + movq %rbx,%rax + shrq $51,%rbx + shlq $13,%rcx + andq %rbp,%rax + orq %rbx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + + movq %r12,%rbx + shrq $51,%r12 + shlq $13,%r13 + andq %rbp,%rbx + orq %r12,%r13 + addq %r13,%r14 + adcq $0,%r15 + + movq %r8,%rcx + shrq $51,%r8 + shlq $13,%r9 + andq %rbp,%rcx + orq %r8,%r9 + addq %r9,%rdx + + movq %r14,%r10 + shrq $51,%r14 + shlq $13,%r15 + andq %rbp,%r10 + orq %r14,%r15 + + leaq (%r15,%r15,8),%r14 + leaq (%r15,%r14,2),%r15 + addq %r15,%rax + + movq %rdx,%r8 + andq %rbp,%rdx + shrq $51,%r8 + addq %r8,%rbx + + movq %rax,%r9 + andq %rbp,%rax + shrq $51,%r9 + addq %r9,%rcx + + movq %rax,0(%rdi) + movq %rcx,8(%rdi) + movq %rdx,16(%rdi) + movq %rbx,24(%rdi) + movq %r10,32(%rdi) + + movq 40(%rsp),%r15 + + movq 48(%rsp),%r14 + + movq 56(%rsp),%r13 + + movq 64(%rsp),%r12 + + movq 72(%rsp),%rbx + + movq 80(%rsp),%rbp + + leaq 88(%rsp),%rsp + +L$fe51_sqr_epilogue: + .byte 0xf3,0xc3 + + + +.globl _x25519_fe51_mul121666 + +.p2align 5 +_x25519_fe51_mul121666: + + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + leaq -40(%rsp),%rsp + +L$fe51_mul121666_body: + movl $121666,%eax + + mulq 0(%rsi) + movq %rax,%rbx + movl $121666,%eax + movq %rdx,%rcx + mulq 8(%rsi) + movq %rax,%r8 + movl $121666,%eax + movq %rdx,%r9 + mulq 16(%rsi) + movq %rax,%r10 + movl $121666,%eax + movq %rdx,%r11 + mulq 24(%rsi) + movq %rax,%r12 + movl $121666,%eax + movq %rdx,%r13 + mulq 32(%rsi) + movq %rax,%r14 + movq %rdx,%r15 + + jmp L$reduce51 +L$fe51_mul121666_epilogue: + + + +.globl _x25519_fe64_eligible + +.p2align 5 +_x25519_fe64_eligible: + + movl _OPENSSL_ia32cap_P+8(%rip),%ecx + xorl %eax,%eax + andl $0x80100,%ecx + cmpl $0x80100,%ecx + cmovel %ecx,%eax + .byte 0xf3,0xc3 + + + +.globl _x25519_fe64_mul + +.p2align 5 +_x25519_fe64_mul: + + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + pushq %rdi + + leaq -16(%rsp),%rsp + +L$fe64_mul_body: + + movq %rdx,%rax + movq 0(%rdx),%rbp + movq 0(%rsi),%rdx + movq 8(%rax),%rcx + movq 16(%rax),%r14 + movq 24(%rax),%r15 + + mulxq %rbp,%r8,%rax + xorl %edi,%edi + mulxq %rcx,%r9,%rbx + adcxq %rax,%r9 + mulxq %r14,%r10,%rax + adcxq %rbx,%r10 + mulxq %r15,%r11,%r12 + movq 8(%rsi),%rdx + adcxq %rax,%r11 + movq %r14,(%rsp) + adcxq %rdi,%r12 + + mulxq %rbp,%rax,%rbx + adoxq %rax,%r9 + adcxq %rbx,%r10 + mulxq %rcx,%rax,%rbx + adoxq %rax,%r10 + adcxq %rbx,%r11 + mulxq %r14,%rax,%rbx + adoxq %rax,%r11 + adcxq %rbx,%r12 + mulxq %r15,%rax,%r13 + movq 16(%rsi),%rdx + adoxq %rax,%r12 + adcxq %rdi,%r13 + adoxq %rdi,%r13 + + mulxq %rbp,%rax,%rbx + adcxq %rax,%r10 + adoxq %rbx,%r11 + mulxq %rcx,%rax,%rbx + adcxq %rax,%r11 + adoxq %rbx,%r12 + mulxq %r14,%rax,%rbx + adcxq %rax,%r12 + adoxq %rbx,%r13 + mulxq %r15,%rax,%r14 + movq 24(%rsi),%rdx + adcxq %rax,%r13 + adoxq %rdi,%r14 + adcxq %rdi,%r14 + + mulxq %rbp,%rax,%rbx + adoxq %rax,%r11 + adcxq %rbx,%r12 + mulxq %rcx,%rax,%rbx + adoxq %rax,%r12 + adcxq %rbx,%r13 + mulxq (%rsp),%rax,%rbx + adoxq %rax,%r13 + adcxq %rbx,%r14 + mulxq %r15,%rax,%r15 + movl $38,%edx + adoxq %rax,%r14 + adcxq %rdi,%r15 + adoxq %rdi,%r15 + + jmp L$reduce64 +L$fe64_mul_epilogue: + + + +.globl _x25519_fe64_sqr + +.p2align 5 +_x25519_fe64_sqr: + + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + pushq %rdi + + leaq -16(%rsp),%rsp + +L$fe64_sqr_body: + + movq 0(%rsi),%rdx + movq 8(%rsi),%rcx + movq 16(%rsi),%rbp + movq 24(%rsi),%rsi + + + mulxq %rdx,%r8,%r15 + mulxq %rcx,%r9,%rax + xorl %edi,%edi + mulxq %rbp,%r10,%rbx + adcxq %rax,%r10 + mulxq %rsi,%r11,%r12 + movq %rcx,%rdx + adcxq %rbx,%r11 + adcxq %rdi,%r12 + + + mulxq %rbp,%rax,%rbx + adoxq %rax,%r11 + adcxq %rbx,%r12 + mulxq %rsi,%rax,%r13 + movq %rbp,%rdx + adoxq %rax,%r12 + adcxq %rdi,%r13 + + + mulxq %rsi,%rax,%r14 + movq %rcx,%rdx + adoxq %rax,%r13 + adcxq %rdi,%r14 + adoxq %rdi,%r14 + + adcxq %r9,%r9 + adoxq %r15,%r9 + adcxq %r10,%r10 + mulxq %rdx,%rax,%rbx + movq %rbp,%rdx + adcxq %r11,%r11 + adoxq %rax,%r10 + adcxq %r12,%r12 + adoxq %rbx,%r11 + mulxq %rdx,%rax,%rbx + movq %rsi,%rdx + adcxq %r13,%r13 + adoxq %rax,%r12 + adcxq %r14,%r14 + adoxq %rbx,%r13 + mulxq %rdx,%rax,%r15 + movl $38,%edx + adoxq %rax,%r14 + adcxq %rdi,%r15 + adoxq %rdi,%r15 + jmp L$reduce64 + +.p2align 5 +L$reduce64: + mulxq %r12,%rax,%rbx + adcxq %rax,%r8 + adoxq %rbx,%r9 + mulxq %r13,%rax,%rbx + adcxq %rax,%r9 + adoxq %rbx,%r10 + mulxq %r14,%rax,%rbx + adcxq %rax,%r10 + adoxq %rbx,%r11 + mulxq %r15,%rax,%r12 + adcxq %rax,%r11 + adoxq %rdi,%r12 + adcxq %rdi,%r12 + + movq 16(%rsp),%rdi + imulq %rdx,%r12 + + addq %r12,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + sbbq %rax,%rax + andq $38,%rax + + addq %rax,%r8 + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r8,0(%rdi) + + movq 24(%rsp),%r15 + + movq 32(%rsp),%r14 + + movq 40(%rsp),%r13 + + movq 48(%rsp),%r12 + + movq 56(%rsp),%rbx + + movq 64(%rsp),%rbp + + leaq 72(%rsp),%rsp + +L$fe64_sqr_epilogue: + .byte 0xf3,0xc3 + + + +.globl _x25519_fe64_mul121666 + +.p2align 5 +_x25519_fe64_mul121666: +L$fe64_mul121666_body: + + movl $121666,%edx + mulxq 0(%rsi),%r8,%rcx + mulxq 8(%rsi),%r9,%rax + addq %rcx,%r9 + mulxq 16(%rsi),%r10,%rcx + adcq %rax,%r10 + mulxq 24(%rsi),%r11,%rax + adcq %rcx,%r11 + adcq $0,%rax + + imulq $38,%rax,%rax + + addq %rax,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + sbbq %rax,%rax + andq $38,%rax + + addq %rax,%r8 + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r8,0(%rdi) + +L$fe64_mul121666_epilogue: + .byte 0xf3,0xc3 + + + +.globl _x25519_fe64_add + +.p2align 5 +_x25519_fe64_add: +L$fe64_add_body: + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + addq 0(%rdx),%r8 + adcq 8(%rdx),%r9 + adcq 16(%rdx),%r10 + adcq 24(%rdx),%r11 + + sbbq %rax,%rax + andq $38,%rax + + addq %rax,%r8 + adcq $0,%r9 + adcq $0,%r10 + movq %r9,8(%rdi) + adcq $0,%r11 + movq %r10,16(%rdi) + sbbq %rax,%rax + movq %r11,24(%rdi) + andq $38,%rax + + addq %rax,%r8 + movq %r8,0(%rdi) + +L$fe64_add_epilogue: + .byte 0xf3,0xc3 + + + +.globl _x25519_fe64_sub + +.p2align 5 +_x25519_fe64_sub: +L$fe64_sub_body: + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + subq 0(%rdx),%r8 + sbbq 8(%rdx),%r9 + sbbq 16(%rdx),%r10 + sbbq 24(%rdx),%r11 + + sbbq %rax,%rax + andq $38,%rax + + subq %rax,%r8 + sbbq $0,%r9 + sbbq $0,%r10 + movq %r9,8(%rdi) + sbbq $0,%r11 + movq %r10,16(%rdi) + sbbq %rax,%rax + movq %r11,24(%rdi) + andq $38,%rax + + subq %rax,%r8 + movq %r8,0(%rdi) + +L$fe64_sub_epilogue: + .byte 0xf3,0xc3 + + + +.globl _x25519_fe64_tobytes + +.p2align 5 +_x25519_fe64_tobytes: +L$fe64_to_body: + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + + leaq (%r11,%r11,1),%rax + sarq $63,%r11 + shrq $1,%rax + andq $19,%r11 + addq $19,%r11 + + addq %r11,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%rax + + leaq (%rax,%rax,1),%r11 + sarq $63,%rax + shrq $1,%r11 + notq %rax + andq $19,%rax + + subq %rax,%r8 + sbbq $0,%r9 + sbbq $0,%r10 + sbbq $0,%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + +L$fe64_to_epilogue: + .byte 0xf3,0xc3 + + +.byte 88,50,53,53,49,57,32,112,114,105,109,105,116,105,118,101,115,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/md5/md5-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/md5/md5-x86_64.s new file mode 100644 index 0000000..285c32c --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/md5/md5-x86_64.s @@ -0,0 +1,678 @@ +.text +.p2align 4 + +.globl _md5_block_asm_data_order + +_md5_block_asm_data_order: + + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r14 + + pushq %r15 + +L$prologue: + + + + + movq %rdi,%rbp + shlq $6,%rdx + leaq (%rsi,%rdx,1),%rdi + movl 0(%rbp),%eax + movl 4(%rbp),%ebx + movl 8(%rbp),%ecx + movl 12(%rbp),%edx + + + + + + + + cmpq %rdi,%rsi + je L$end + + +L$loop: + movl %eax,%r8d + movl %ebx,%r9d + movl %ecx,%r14d + movl %edx,%r15d + movl 0(%rsi),%r10d + movl %edx,%r11d + xorl %ecx,%r11d + leal -680876936(%rax,%r10,1),%eax + andl %ebx,%r11d + movl 4(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%eax + roll $7,%eax + movl %ecx,%r11d + addl %ebx,%eax + xorl %ebx,%r11d + leal -389564586(%rdx,%r10,1),%edx + andl %eax,%r11d + movl 8(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%edx + roll $12,%edx + movl %ebx,%r11d + addl %eax,%edx + xorl %eax,%r11d + leal 606105819(%rcx,%r10,1),%ecx + andl %edx,%r11d + movl 12(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%ecx + roll $17,%ecx + movl %eax,%r11d + addl %edx,%ecx + xorl %edx,%r11d + leal -1044525330(%rbx,%r10,1),%ebx + andl %ecx,%r11d + movl 16(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ebx + roll $22,%ebx + movl %edx,%r11d + addl %ecx,%ebx + xorl %ecx,%r11d + leal -176418897(%rax,%r10,1),%eax + andl %ebx,%r11d + movl 20(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%eax + roll $7,%eax + movl %ecx,%r11d + addl %ebx,%eax + xorl %ebx,%r11d + leal 1200080426(%rdx,%r10,1),%edx + andl %eax,%r11d + movl 24(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%edx + roll $12,%edx + movl %ebx,%r11d + addl %eax,%edx + xorl %eax,%r11d + leal -1473231341(%rcx,%r10,1),%ecx + andl %edx,%r11d + movl 28(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%ecx + roll $17,%ecx + movl %eax,%r11d + addl %edx,%ecx + xorl %edx,%r11d + leal -45705983(%rbx,%r10,1),%ebx + andl %ecx,%r11d + movl 32(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ebx + roll $22,%ebx + movl %edx,%r11d + addl %ecx,%ebx + xorl %ecx,%r11d + leal 1770035416(%rax,%r10,1),%eax + andl %ebx,%r11d + movl 36(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%eax + roll $7,%eax + movl %ecx,%r11d + addl %ebx,%eax + xorl %ebx,%r11d + leal -1958414417(%rdx,%r10,1),%edx + andl %eax,%r11d + movl 40(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%edx + roll $12,%edx + movl %ebx,%r11d + addl %eax,%edx + xorl %eax,%r11d + leal -42063(%rcx,%r10,1),%ecx + andl %edx,%r11d + movl 44(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%ecx + roll $17,%ecx + movl %eax,%r11d + addl %edx,%ecx + xorl %edx,%r11d + leal -1990404162(%rbx,%r10,1),%ebx + andl %ecx,%r11d + movl 48(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ebx + roll $22,%ebx + movl %edx,%r11d + addl %ecx,%ebx + xorl %ecx,%r11d + leal 1804603682(%rax,%r10,1),%eax + andl %ebx,%r11d + movl 52(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%eax + roll $7,%eax + movl %ecx,%r11d + addl %ebx,%eax + xorl %ebx,%r11d + leal -40341101(%rdx,%r10,1),%edx + andl %eax,%r11d + movl 56(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%edx + roll $12,%edx + movl %ebx,%r11d + addl %eax,%edx + xorl %eax,%r11d + leal -1502002290(%rcx,%r10,1),%ecx + andl %edx,%r11d + movl 60(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%ecx + roll $17,%ecx + movl %eax,%r11d + addl %edx,%ecx + xorl %edx,%r11d + leal 1236535329(%rbx,%r10,1),%ebx + andl %ecx,%r11d + movl 4(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ebx + roll $22,%ebx + movl %edx,%r11d + addl %ecx,%ebx + movl %edx,%r11d + movl %edx,%r12d + notl %r11d + andl %ebx,%r12d + leal -165796510(%rax,%r10,1),%eax + andl %ecx,%r11d + movl 24(%rsi),%r10d + orl %r11d,%r12d + movl %ecx,%r11d + addl %r12d,%eax + movl %ecx,%r12d + roll $5,%eax + addl %ebx,%eax + notl %r11d + andl %eax,%r12d + leal -1069501632(%rdx,%r10,1),%edx + andl %ebx,%r11d + movl 44(%rsi),%r10d + orl %r11d,%r12d + movl %ebx,%r11d + addl %r12d,%edx + movl %ebx,%r12d + roll $9,%edx + addl %eax,%edx + notl %r11d + andl %edx,%r12d + leal 643717713(%rcx,%r10,1),%ecx + andl %eax,%r11d + movl 0(%rsi),%r10d + orl %r11d,%r12d + movl %eax,%r11d + addl %r12d,%ecx + movl %eax,%r12d + roll $14,%ecx + addl %edx,%ecx + notl %r11d + andl %ecx,%r12d + leal -373897302(%rbx,%r10,1),%ebx + andl %edx,%r11d + movl 20(%rsi),%r10d + orl %r11d,%r12d + movl %edx,%r11d + addl %r12d,%ebx + movl %edx,%r12d + roll $20,%ebx + addl %ecx,%ebx + notl %r11d + andl %ebx,%r12d + leal -701558691(%rax,%r10,1),%eax + andl %ecx,%r11d + movl 40(%rsi),%r10d + orl %r11d,%r12d + movl %ecx,%r11d + addl %r12d,%eax + movl %ecx,%r12d + roll $5,%eax + addl %ebx,%eax + notl %r11d + andl %eax,%r12d + leal 38016083(%rdx,%r10,1),%edx + andl %ebx,%r11d + movl 60(%rsi),%r10d + orl %r11d,%r12d + movl %ebx,%r11d + addl %r12d,%edx + movl %ebx,%r12d + roll $9,%edx + addl %eax,%edx + notl %r11d + andl %edx,%r12d + leal -660478335(%rcx,%r10,1),%ecx + andl %eax,%r11d + movl 16(%rsi),%r10d + orl %r11d,%r12d + movl %eax,%r11d + addl %r12d,%ecx + movl %eax,%r12d + roll $14,%ecx + addl %edx,%ecx + notl %r11d + andl %ecx,%r12d + leal -405537848(%rbx,%r10,1),%ebx + andl %edx,%r11d + movl 36(%rsi),%r10d + orl %r11d,%r12d + movl %edx,%r11d + addl %r12d,%ebx + movl %edx,%r12d + roll $20,%ebx + addl %ecx,%ebx + notl %r11d + andl %ebx,%r12d + leal 568446438(%rax,%r10,1),%eax + andl %ecx,%r11d + movl 56(%rsi),%r10d + orl %r11d,%r12d + movl %ecx,%r11d + addl %r12d,%eax + movl %ecx,%r12d + roll $5,%eax + addl %ebx,%eax + notl %r11d + andl %eax,%r12d + leal -1019803690(%rdx,%r10,1),%edx + andl %ebx,%r11d + movl 12(%rsi),%r10d + orl %r11d,%r12d + movl %ebx,%r11d + addl %r12d,%edx + movl %ebx,%r12d + roll $9,%edx + addl %eax,%edx + notl %r11d + andl %edx,%r12d + leal -187363961(%rcx,%r10,1),%ecx + andl %eax,%r11d + movl 32(%rsi),%r10d + orl %r11d,%r12d + movl %eax,%r11d + addl %r12d,%ecx + movl %eax,%r12d + roll $14,%ecx + addl %edx,%ecx + notl %r11d + andl %ecx,%r12d + leal 1163531501(%rbx,%r10,1),%ebx + andl %edx,%r11d + movl 52(%rsi),%r10d + orl %r11d,%r12d + movl %edx,%r11d + addl %r12d,%ebx + movl %edx,%r12d + roll $20,%ebx + addl %ecx,%ebx + notl %r11d + andl %ebx,%r12d + leal -1444681467(%rax,%r10,1),%eax + andl %ecx,%r11d + movl 8(%rsi),%r10d + orl %r11d,%r12d + movl %ecx,%r11d + addl %r12d,%eax + movl %ecx,%r12d + roll $5,%eax + addl %ebx,%eax + notl %r11d + andl %eax,%r12d + leal -51403784(%rdx,%r10,1),%edx + andl %ebx,%r11d + movl 28(%rsi),%r10d + orl %r11d,%r12d + movl %ebx,%r11d + addl %r12d,%edx + movl %ebx,%r12d + roll $9,%edx + addl %eax,%edx + notl %r11d + andl %edx,%r12d + leal 1735328473(%rcx,%r10,1),%ecx + andl %eax,%r11d + movl 48(%rsi),%r10d + orl %r11d,%r12d + movl %eax,%r11d + addl %r12d,%ecx + movl %eax,%r12d + roll $14,%ecx + addl %edx,%ecx + notl %r11d + andl %ecx,%r12d + leal -1926607734(%rbx,%r10,1),%ebx + andl %edx,%r11d + movl 20(%rsi),%r10d + orl %r11d,%r12d + movl %edx,%r11d + addl %r12d,%ebx + movl %edx,%r12d + roll $20,%ebx + addl %ecx,%ebx + movl %ecx,%r11d + leal -378558(%rax,%r10,1),%eax + xorl %edx,%r11d + movl 32(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%eax + movl %ebx,%r11d + roll $4,%eax + addl %ebx,%eax + leal -2022574463(%rdx,%r10,1),%edx + xorl %ecx,%r11d + movl 44(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%edx + roll $11,%edx + movl %eax,%r11d + addl %eax,%edx + leal 1839030562(%rcx,%r10,1),%ecx + xorl %ebx,%r11d + movl 56(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ecx + movl %edx,%r11d + roll $16,%ecx + addl %edx,%ecx + leal -35309556(%rbx,%r10,1),%ebx + xorl %eax,%r11d + movl 4(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%ebx + roll $23,%ebx + movl %ecx,%r11d + addl %ecx,%ebx + leal -1530992060(%rax,%r10,1),%eax + xorl %edx,%r11d + movl 16(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%eax + movl %ebx,%r11d + roll $4,%eax + addl %ebx,%eax + leal 1272893353(%rdx,%r10,1),%edx + xorl %ecx,%r11d + movl 28(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%edx + roll $11,%edx + movl %eax,%r11d + addl %eax,%edx + leal -155497632(%rcx,%r10,1),%ecx + xorl %ebx,%r11d + movl 40(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ecx + movl %edx,%r11d + roll $16,%ecx + addl %edx,%ecx + leal -1094730640(%rbx,%r10,1),%ebx + xorl %eax,%r11d + movl 52(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%ebx + roll $23,%ebx + movl %ecx,%r11d + addl %ecx,%ebx + leal 681279174(%rax,%r10,1),%eax + xorl %edx,%r11d + movl 0(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%eax + movl %ebx,%r11d + roll $4,%eax + addl %ebx,%eax + leal -358537222(%rdx,%r10,1),%edx + xorl %ecx,%r11d + movl 12(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%edx + roll $11,%edx + movl %eax,%r11d + addl %eax,%edx + leal -722521979(%rcx,%r10,1),%ecx + xorl %ebx,%r11d + movl 24(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ecx + movl %edx,%r11d + roll $16,%ecx + addl %edx,%ecx + leal 76029189(%rbx,%r10,1),%ebx + xorl %eax,%r11d + movl 36(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%ebx + roll $23,%ebx + movl %ecx,%r11d + addl %ecx,%ebx + leal -640364487(%rax,%r10,1),%eax + xorl %edx,%r11d + movl 48(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%eax + movl %ebx,%r11d + roll $4,%eax + addl %ebx,%eax + leal -421815835(%rdx,%r10,1),%edx + xorl %ecx,%r11d + movl 60(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%edx + roll $11,%edx + movl %eax,%r11d + addl %eax,%edx + leal 530742520(%rcx,%r10,1),%ecx + xorl %ebx,%r11d + movl 8(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ecx + movl %edx,%r11d + roll $16,%ecx + addl %edx,%ecx + leal -995338651(%rbx,%r10,1),%ebx + xorl %eax,%r11d + movl 0(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%ebx + roll $23,%ebx + movl %ecx,%r11d + addl %ecx,%ebx + movl $0xffffffff,%r11d + xorl %edx,%r11d + leal -198630844(%rax,%r10,1),%eax + orl %ebx,%r11d + movl 28(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%eax + movl $0xffffffff,%r11d + roll $6,%eax + xorl %ecx,%r11d + addl %ebx,%eax + leal 1126891415(%rdx,%r10,1),%edx + orl %eax,%r11d + movl 56(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%edx + movl $0xffffffff,%r11d + roll $10,%edx + xorl %ebx,%r11d + addl %eax,%edx + leal -1416354905(%rcx,%r10,1),%ecx + orl %edx,%r11d + movl 20(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ecx + movl $0xffffffff,%r11d + roll $15,%ecx + xorl %eax,%r11d + addl %edx,%ecx + leal -57434055(%rbx,%r10,1),%ebx + orl %ecx,%r11d + movl 48(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ebx + movl $0xffffffff,%r11d + roll $21,%ebx + xorl %edx,%r11d + addl %ecx,%ebx + leal 1700485571(%rax,%r10,1),%eax + orl %ebx,%r11d + movl 12(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%eax + movl $0xffffffff,%r11d + roll $6,%eax + xorl %ecx,%r11d + addl %ebx,%eax + leal -1894986606(%rdx,%r10,1),%edx + orl %eax,%r11d + movl 40(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%edx + movl $0xffffffff,%r11d + roll $10,%edx + xorl %ebx,%r11d + addl %eax,%edx + leal -1051523(%rcx,%r10,1),%ecx + orl %edx,%r11d + movl 4(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ecx + movl $0xffffffff,%r11d + roll $15,%ecx + xorl %eax,%r11d + addl %edx,%ecx + leal -2054922799(%rbx,%r10,1),%ebx + orl %ecx,%r11d + movl 32(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ebx + movl $0xffffffff,%r11d + roll $21,%ebx + xorl %edx,%r11d + addl %ecx,%ebx + leal 1873313359(%rax,%r10,1),%eax + orl %ebx,%r11d + movl 60(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%eax + movl $0xffffffff,%r11d + roll $6,%eax + xorl %ecx,%r11d + addl %ebx,%eax + leal -30611744(%rdx,%r10,1),%edx + orl %eax,%r11d + movl 24(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%edx + movl $0xffffffff,%r11d + roll $10,%edx + xorl %ebx,%r11d + addl %eax,%edx + leal -1560198380(%rcx,%r10,1),%ecx + orl %edx,%r11d + movl 52(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ecx + movl $0xffffffff,%r11d + roll $15,%ecx + xorl %eax,%r11d + addl %edx,%ecx + leal 1309151649(%rbx,%r10,1),%ebx + orl %ecx,%r11d + movl 16(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ebx + movl $0xffffffff,%r11d + roll $21,%ebx + xorl %edx,%r11d + addl %ecx,%ebx + leal -145523070(%rax,%r10,1),%eax + orl %ebx,%r11d + movl 44(%rsi),%r10d + xorl %ecx,%r11d + addl %r11d,%eax + movl $0xffffffff,%r11d + roll $6,%eax + xorl %ecx,%r11d + addl %ebx,%eax + leal -1120210379(%rdx,%r10,1),%edx + orl %eax,%r11d + movl 8(%rsi),%r10d + xorl %ebx,%r11d + addl %r11d,%edx + movl $0xffffffff,%r11d + roll $10,%edx + xorl %ebx,%r11d + addl %eax,%edx + leal 718787259(%rcx,%r10,1),%ecx + orl %edx,%r11d + movl 36(%rsi),%r10d + xorl %eax,%r11d + addl %r11d,%ecx + movl $0xffffffff,%r11d + roll $15,%ecx + xorl %eax,%r11d + addl %edx,%ecx + leal -343485551(%rbx,%r10,1),%ebx + orl %ecx,%r11d + movl 0(%rsi),%r10d + xorl %edx,%r11d + addl %r11d,%ebx + movl $0xffffffff,%r11d + roll $21,%ebx + xorl %edx,%r11d + addl %ecx,%ebx + + addl %r8d,%eax + addl %r9d,%ebx + addl %r14d,%ecx + addl %r15d,%edx + + + addq $64,%rsi + cmpq %rdi,%rsi + jb L$loop + + +L$end: + movl %eax,0(%rbp) + movl %ebx,4(%rbp) + movl %ecx,8(%rbp) + movl %edx,12(%rbp) + + movq (%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r12 + + movq 24(%rsp),%rbx + + movq 32(%rsp),%rbp + + addq $40,%rsp + +L$epilogue: + .byte 0xf3,0xc3 + + diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/modes/aesni-gcm-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/modes/aesni-gcm-x86_64.s new file mode 100644 index 0000000..c26df9d --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/modes/aesni-gcm-x86_64.s @@ -0,0 +1,789 @@ +.text + + +.p2align 5 +_aesni_ctr32_ghash_6x: + + vmovdqu 32(%r11),%xmm2 + subq $6,%rdx + vpxor %xmm4,%xmm4,%xmm4 + vmovdqu 0-128(%rcx),%xmm15 + vpaddb %xmm2,%xmm1,%xmm10 + vpaddb %xmm2,%xmm10,%xmm11 + vpaddb %xmm2,%xmm11,%xmm12 + vpaddb %xmm2,%xmm12,%xmm13 + vpaddb %xmm2,%xmm13,%xmm14 + vpxor %xmm15,%xmm1,%xmm9 + vmovdqu %xmm4,16+8(%rsp) + jmp L$oop6x + +.p2align 5 +L$oop6x: + addl $100663296,%ebx + jc L$handle_ctr32 + vmovdqu 0-32(%r9),%xmm3 + vpaddb %xmm2,%xmm14,%xmm1 + vpxor %xmm15,%xmm10,%xmm10 + vpxor %xmm15,%xmm11,%xmm11 + +L$resume_ctr32: + vmovdqu %xmm1,(%r8) + vpclmulqdq $0x10,%xmm3,%xmm7,%xmm5 + vpxor %xmm15,%xmm12,%xmm12 + vmovups 16-128(%rcx),%xmm2 + vpclmulqdq $0x01,%xmm3,%xmm7,%xmm6 + xorq %r12,%r12 + cmpq %r14,%r15 + + vaesenc %xmm2,%xmm9,%xmm9 + vmovdqu 48+8(%rsp),%xmm0 + vpxor %xmm15,%xmm13,%xmm13 + vpclmulqdq $0x00,%xmm3,%xmm7,%xmm1 + vaesenc %xmm2,%xmm10,%xmm10 + vpxor %xmm15,%xmm14,%xmm14 + setnc %r12b + vpclmulqdq $0x11,%xmm3,%xmm7,%xmm7 + vaesenc %xmm2,%xmm11,%xmm11 + vmovdqu 16-32(%r9),%xmm3 + negq %r12 + vaesenc %xmm2,%xmm12,%xmm12 + vpxor %xmm5,%xmm6,%xmm6 + vpclmulqdq $0x00,%xmm3,%xmm0,%xmm5 + vpxor %xmm4,%xmm8,%xmm8 + vaesenc %xmm2,%xmm13,%xmm13 + vpxor %xmm5,%xmm1,%xmm4 + andq $0x60,%r12 + vmovups 32-128(%rcx),%xmm15 + vpclmulqdq $0x10,%xmm3,%xmm0,%xmm1 + vaesenc %xmm2,%xmm14,%xmm14 + + vpclmulqdq $0x01,%xmm3,%xmm0,%xmm2 + leaq (%r14,%r12,1),%r14 + vaesenc %xmm15,%xmm9,%xmm9 + vpxor 16+8(%rsp),%xmm8,%xmm8 + vpclmulqdq $0x11,%xmm3,%xmm0,%xmm3 + vmovdqu 64+8(%rsp),%xmm0 + vaesenc %xmm15,%xmm10,%xmm10 + movbeq 88(%r14),%r13 + vaesenc %xmm15,%xmm11,%xmm11 + movbeq 80(%r14),%r12 + vaesenc %xmm15,%xmm12,%xmm12 + movq %r13,32+8(%rsp) + vaesenc %xmm15,%xmm13,%xmm13 + movq %r12,40+8(%rsp) + vmovdqu 48-32(%r9),%xmm5 + vaesenc %xmm15,%xmm14,%xmm14 + + vmovups 48-128(%rcx),%xmm15 + vpxor %xmm1,%xmm6,%xmm6 + vpclmulqdq $0x00,%xmm5,%xmm0,%xmm1 + vaesenc %xmm15,%xmm9,%xmm9 + vpxor %xmm2,%xmm6,%xmm6 + vpclmulqdq $0x10,%xmm5,%xmm0,%xmm2 + vaesenc %xmm15,%xmm10,%xmm10 + vpxor %xmm3,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm5,%xmm0,%xmm3 + vaesenc %xmm15,%xmm11,%xmm11 + vpclmulqdq $0x11,%xmm5,%xmm0,%xmm5 + vmovdqu 80+8(%rsp),%xmm0 + vaesenc %xmm15,%xmm12,%xmm12 + vaesenc %xmm15,%xmm13,%xmm13 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqu 64-32(%r9),%xmm1 + vaesenc %xmm15,%xmm14,%xmm14 + + vmovups 64-128(%rcx),%xmm15 + vpxor %xmm2,%xmm6,%xmm6 + vpclmulqdq $0x00,%xmm1,%xmm0,%xmm2 + vaesenc %xmm15,%xmm9,%xmm9 + vpxor %xmm3,%xmm6,%xmm6 + vpclmulqdq $0x10,%xmm1,%xmm0,%xmm3 + vaesenc %xmm15,%xmm10,%xmm10 + movbeq 72(%r14),%r13 + vpxor %xmm5,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm1,%xmm0,%xmm5 + vaesenc %xmm15,%xmm11,%xmm11 + movbeq 64(%r14),%r12 + vpclmulqdq $0x11,%xmm1,%xmm0,%xmm1 + vmovdqu 96+8(%rsp),%xmm0 + vaesenc %xmm15,%xmm12,%xmm12 + movq %r13,48+8(%rsp) + vaesenc %xmm15,%xmm13,%xmm13 + movq %r12,56+8(%rsp) + vpxor %xmm2,%xmm4,%xmm4 + vmovdqu 96-32(%r9),%xmm2 + vaesenc %xmm15,%xmm14,%xmm14 + + vmovups 80-128(%rcx),%xmm15 + vpxor %xmm3,%xmm6,%xmm6 + vpclmulqdq $0x00,%xmm2,%xmm0,%xmm3 + vaesenc %xmm15,%xmm9,%xmm9 + vpxor %xmm5,%xmm6,%xmm6 + vpclmulqdq $0x10,%xmm2,%xmm0,%xmm5 + vaesenc %xmm15,%xmm10,%xmm10 + movbeq 56(%r14),%r13 + vpxor %xmm1,%xmm7,%xmm7 + vpclmulqdq $0x01,%xmm2,%xmm0,%xmm1 + vpxor 112+8(%rsp),%xmm8,%xmm8 + vaesenc %xmm15,%xmm11,%xmm11 + movbeq 48(%r14),%r12 + vpclmulqdq $0x11,%xmm2,%xmm0,%xmm2 + vaesenc %xmm15,%xmm12,%xmm12 + movq %r13,64+8(%rsp) + vaesenc %xmm15,%xmm13,%xmm13 + movq %r12,72+8(%rsp) + vpxor %xmm3,%xmm4,%xmm4 + vmovdqu 112-32(%r9),%xmm3 + vaesenc %xmm15,%xmm14,%xmm14 + + vmovups 96-128(%rcx),%xmm15 + vpxor %xmm5,%xmm6,%xmm6 + vpclmulqdq $0x10,%xmm3,%xmm8,%xmm5 + vaesenc %xmm15,%xmm9,%xmm9 + vpxor %xmm1,%xmm6,%xmm6 + vpclmulqdq $0x01,%xmm3,%xmm8,%xmm1 + vaesenc %xmm15,%xmm10,%xmm10 + movbeq 40(%r14),%r13 + vpxor %xmm2,%xmm7,%xmm7 + vpclmulqdq $0x00,%xmm3,%xmm8,%xmm2 + vaesenc %xmm15,%xmm11,%xmm11 + movbeq 32(%r14),%r12 + vpclmulqdq $0x11,%xmm3,%xmm8,%xmm8 + vaesenc %xmm15,%xmm12,%xmm12 + movq %r13,80+8(%rsp) + vaesenc %xmm15,%xmm13,%xmm13 + movq %r12,88+8(%rsp) + vpxor %xmm5,%xmm6,%xmm6 + vaesenc %xmm15,%xmm14,%xmm14 + vpxor %xmm1,%xmm6,%xmm6 + + vmovups 112-128(%rcx),%xmm15 + vpslldq $8,%xmm6,%xmm5 + vpxor %xmm2,%xmm4,%xmm4 + vmovdqu 16(%r11),%xmm3 + + vaesenc %xmm15,%xmm9,%xmm9 + vpxor %xmm8,%xmm7,%xmm7 + vaesenc %xmm15,%xmm10,%xmm10 + vpxor %xmm5,%xmm4,%xmm4 + movbeq 24(%r14),%r13 + vaesenc %xmm15,%xmm11,%xmm11 + movbeq 16(%r14),%r12 + vpalignr $8,%xmm4,%xmm4,%xmm0 + vpclmulqdq $0x10,%xmm3,%xmm4,%xmm4 + movq %r13,96+8(%rsp) + vaesenc %xmm15,%xmm12,%xmm12 + movq %r12,104+8(%rsp) + vaesenc %xmm15,%xmm13,%xmm13 + vmovups 128-128(%rcx),%xmm1 + vaesenc %xmm15,%xmm14,%xmm14 + + vaesenc %xmm1,%xmm9,%xmm9 + vmovups 144-128(%rcx),%xmm15 + vaesenc %xmm1,%xmm10,%xmm10 + vpsrldq $8,%xmm6,%xmm6 + vaesenc %xmm1,%xmm11,%xmm11 + vpxor %xmm6,%xmm7,%xmm7 + vaesenc %xmm1,%xmm12,%xmm12 + vpxor %xmm0,%xmm4,%xmm4 + movbeq 8(%r14),%r13 + vaesenc %xmm1,%xmm13,%xmm13 + movbeq 0(%r14),%r12 + vaesenc %xmm1,%xmm14,%xmm14 + vmovups 160-128(%rcx),%xmm1 + cmpl $11,%ebp + jb L$enc_tail + + vaesenc %xmm15,%xmm9,%xmm9 + vaesenc %xmm15,%xmm10,%xmm10 + vaesenc %xmm15,%xmm11,%xmm11 + vaesenc %xmm15,%xmm12,%xmm12 + vaesenc %xmm15,%xmm13,%xmm13 + vaesenc %xmm15,%xmm14,%xmm14 + + vaesenc %xmm1,%xmm9,%xmm9 + vaesenc %xmm1,%xmm10,%xmm10 + vaesenc %xmm1,%xmm11,%xmm11 + vaesenc %xmm1,%xmm12,%xmm12 + vaesenc %xmm1,%xmm13,%xmm13 + vmovups 176-128(%rcx),%xmm15 + vaesenc %xmm1,%xmm14,%xmm14 + vmovups 192-128(%rcx),%xmm1 + je L$enc_tail + + vaesenc %xmm15,%xmm9,%xmm9 + vaesenc %xmm15,%xmm10,%xmm10 + vaesenc %xmm15,%xmm11,%xmm11 + vaesenc %xmm15,%xmm12,%xmm12 + vaesenc %xmm15,%xmm13,%xmm13 + vaesenc %xmm15,%xmm14,%xmm14 + + vaesenc %xmm1,%xmm9,%xmm9 + vaesenc %xmm1,%xmm10,%xmm10 + vaesenc %xmm1,%xmm11,%xmm11 + vaesenc %xmm1,%xmm12,%xmm12 + vaesenc %xmm1,%xmm13,%xmm13 + vmovups 208-128(%rcx),%xmm15 + vaesenc %xmm1,%xmm14,%xmm14 + vmovups 224-128(%rcx),%xmm1 + jmp L$enc_tail + +.p2align 5 +L$handle_ctr32: + vmovdqu (%r11),%xmm0 + vpshufb %xmm0,%xmm1,%xmm6 + vmovdqu 48(%r11),%xmm5 + vpaddd 64(%r11),%xmm6,%xmm10 + vpaddd %xmm5,%xmm6,%xmm11 + vmovdqu 0-32(%r9),%xmm3 + vpaddd %xmm5,%xmm10,%xmm12 + vpshufb %xmm0,%xmm10,%xmm10 + vpaddd %xmm5,%xmm11,%xmm13 + vpshufb %xmm0,%xmm11,%xmm11 + vpxor %xmm15,%xmm10,%xmm10 + vpaddd %xmm5,%xmm12,%xmm14 + vpshufb %xmm0,%xmm12,%xmm12 + vpxor %xmm15,%xmm11,%xmm11 + vpaddd %xmm5,%xmm13,%xmm1 + vpshufb %xmm0,%xmm13,%xmm13 + vpshufb %xmm0,%xmm14,%xmm14 + vpshufb %xmm0,%xmm1,%xmm1 + jmp L$resume_ctr32 + +.p2align 5 +L$enc_tail: + vaesenc %xmm15,%xmm9,%xmm9 + vmovdqu %xmm7,16+8(%rsp) + vpalignr $8,%xmm4,%xmm4,%xmm8 + vaesenc %xmm15,%xmm10,%xmm10 + vpclmulqdq $0x10,%xmm3,%xmm4,%xmm4 + vpxor 0(%rdi),%xmm1,%xmm2 + vaesenc %xmm15,%xmm11,%xmm11 + vpxor 16(%rdi),%xmm1,%xmm0 + vaesenc %xmm15,%xmm12,%xmm12 + vpxor 32(%rdi),%xmm1,%xmm5 + vaesenc %xmm15,%xmm13,%xmm13 + vpxor 48(%rdi),%xmm1,%xmm6 + vaesenc %xmm15,%xmm14,%xmm14 + vpxor 64(%rdi),%xmm1,%xmm7 + vpxor 80(%rdi),%xmm1,%xmm3 + vmovdqu (%r8),%xmm1 + + vaesenclast %xmm2,%xmm9,%xmm9 + vmovdqu 32(%r11),%xmm2 + vaesenclast %xmm0,%xmm10,%xmm10 + vpaddb %xmm2,%xmm1,%xmm0 + movq %r13,112+8(%rsp) + leaq 96(%rdi),%rdi + vaesenclast %xmm5,%xmm11,%xmm11 + vpaddb %xmm2,%xmm0,%xmm5 + movq %r12,120+8(%rsp) + leaq 96(%rsi),%rsi + vmovdqu 0-128(%rcx),%xmm15 + vaesenclast %xmm6,%xmm12,%xmm12 + vpaddb %xmm2,%xmm5,%xmm6 + vaesenclast %xmm7,%xmm13,%xmm13 + vpaddb %xmm2,%xmm6,%xmm7 + vaesenclast %xmm3,%xmm14,%xmm14 + vpaddb %xmm2,%xmm7,%xmm3 + + addq $0x60,%r10 + subq $0x6,%rdx + jc L$6x_done + + vmovups %xmm9,-96(%rsi) + vpxor %xmm15,%xmm1,%xmm9 + vmovups %xmm10,-80(%rsi) + vmovdqa %xmm0,%xmm10 + vmovups %xmm11,-64(%rsi) + vmovdqa %xmm5,%xmm11 + vmovups %xmm12,-48(%rsi) + vmovdqa %xmm6,%xmm12 + vmovups %xmm13,-32(%rsi) + vmovdqa %xmm7,%xmm13 + vmovups %xmm14,-16(%rsi) + vmovdqa %xmm3,%xmm14 + vmovdqu 32+8(%rsp),%xmm7 + jmp L$oop6x + +L$6x_done: + vpxor 16+8(%rsp),%xmm8,%xmm8 + vpxor %xmm4,%xmm8,%xmm8 + + .byte 0xf3,0xc3 + + +.globl _aesni_gcm_decrypt + +.p2align 5 +_aesni_gcm_decrypt: + + xorq %r10,%r10 + cmpq $0x60,%rdx + jb L$gcm_dec_abort + + leaq (%rsp),%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + vzeroupper + + vmovdqu (%r8),%xmm1 + addq $-128,%rsp + movl 12(%r8),%ebx + leaq L$bswap_mask(%rip),%r11 + leaq -128(%rcx),%r14 + movq $0xf80,%r15 + vmovdqu (%r9),%xmm8 + andq $-128,%rsp + vmovdqu (%r11),%xmm0 + leaq 128(%rcx),%rcx + leaq 32+32(%r9),%r9 + movl 240-128(%rcx),%ebp + vpshufb %xmm0,%xmm8,%xmm8 + + andq %r15,%r14 + andq %rsp,%r15 + subq %r14,%r15 + jc L$dec_no_key_aliasing + cmpq $768,%r15 + jnc L$dec_no_key_aliasing + subq %r15,%rsp +L$dec_no_key_aliasing: + + vmovdqu 80(%rdi),%xmm7 + leaq (%rdi),%r14 + vmovdqu 64(%rdi),%xmm4 + leaq -192(%rdi,%rdx,1),%r15 + vmovdqu 48(%rdi),%xmm5 + shrq $4,%rdx + xorq %r10,%r10 + vmovdqu 32(%rdi),%xmm6 + vpshufb %xmm0,%xmm7,%xmm7 + vmovdqu 16(%rdi),%xmm2 + vpshufb %xmm0,%xmm4,%xmm4 + vmovdqu (%rdi),%xmm3 + vpshufb %xmm0,%xmm5,%xmm5 + vmovdqu %xmm4,48(%rsp) + vpshufb %xmm0,%xmm6,%xmm6 + vmovdqu %xmm5,64(%rsp) + vpshufb %xmm0,%xmm2,%xmm2 + vmovdqu %xmm6,80(%rsp) + vpshufb %xmm0,%xmm3,%xmm3 + vmovdqu %xmm2,96(%rsp) + vmovdqu %xmm3,112(%rsp) + + call _aesni_ctr32_ghash_6x + + vmovups %xmm9,-96(%rsi) + vmovups %xmm10,-80(%rsi) + vmovups %xmm11,-64(%rsi) + vmovups %xmm12,-48(%rsi) + vmovups %xmm13,-32(%rsi) + vmovups %xmm14,-16(%rsi) + + vpshufb (%r11),%xmm8,%xmm8 + vmovdqu %xmm8,-64(%r9) + + vzeroupper + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$gcm_dec_abort: + movq %r10,%rax + .byte 0xf3,0xc3 + + + +.p2align 5 +_aesni_ctr32_6x: + + vmovdqu 0-128(%rcx),%xmm4 + vmovdqu 32(%r11),%xmm2 + leaq -1(%rbp),%r13 + vmovups 16-128(%rcx),%xmm15 + leaq 32-128(%rcx),%r12 + vpxor %xmm4,%xmm1,%xmm9 + addl $100663296,%ebx + jc L$handle_ctr32_2 + vpaddb %xmm2,%xmm1,%xmm10 + vpaddb %xmm2,%xmm10,%xmm11 + vpxor %xmm4,%xmm10,%xmm10 + vpaddb %xmm2,%xmm11,%xmm12 + vpxor %xmm4,%xmm11,%xmm11 + vpaddb %xmm2,%xmm12,%xmm13 + vpxor %xmm4,%xmm12,%xmm12 + vpaddb %xmm2,%xmm13,%xmm14 + vpxor %xmm4,%xmm13,%xmm13 + vpaddb %xmm2,%xmm14,%xmm1 + vpxor %xmm4,%xmm14,%xmm14 + jmp L$oop_ctr32 + +.p2align 4 +L$oop_ctr32: + vaesenc %xmm15,%xmm9,%xmm9 + vaesenc %xmm15,%xmm10,%xmm10 + vaesenc %xmm15,%xmm11,%xmm11 + vaesenc %xmm15,%xmm12,%xmm12 + vaesenc %xmm15,%xmm13,%xmm13 + vaesenc %xmm15,%xmm14,%xmm14 + vmovups (%r12),%xmm15 + leaq 16(%r12),%r12 + decl %r13d + jnz L$oop_ctr32 + + vmovdqu (%r12),%xmm3 + vaesenc %xmm15,%xmm9,%xmm9 + vpxor 0(%rdi),%xmm3,%xmm4 + vaesenc %xmm15,%xmm10,%xmm10 + vpxor 16(%rdi),%xmm3,%xmm5 + vaesenc %xmm15,%xmm11,%xmm11 + vpxor 32(%rdi),%xmm3,%xmm6 + vaesenc %xmm15,%xmm12,%xmm12 + vpxor 48(%rdi),%xmm3,%xmm8 + vaesenc %xmm15,%xmm13,%xmm13 + vpxor 64(%rdi),%xmm3,%xmm2 + vaesenc %xmm15,%xmm14,%xmm14 + vpxor 80(%rdi),%xmm3,%xmm3 + leaq 96(%rdi),%rdi + + vaesenclast %xmm4,%xmm9,%xmm9 + vaesenclast %xmm5,%xmm10,%xmm10 + vaesenclast %xmm6,%xmm11,%xmm11 + vaesenclast %xmm8,%xmm12,%xmm12 + vaesenclast %xmm2,%xmm13,%xmm13 + vaesenclast %xmm3,%xmm14,%xmm14 + vmovups %xmm9,0(%rsi) + vmovups %xmm10,16(%rsi) + vmovups %xmm11,32(%rsi) + vmovups %xmm12,48(%rsi) + vmovups %xmm13,64(%rsi) + vmovups %xmm14,80(%rsi) + leaq 96(%rsi),%rsi + + .byte 0xf3,0xc3 +.p2align 5 +L$handle_ctr32_2: + vpshufb %xmm0,%xmm1,%xmm6 + vmovdqu 48(%r11),%xmm5 + vpaddd 64(%r11),%xmm6,%xmm10 + vpaddd %xmm5,%xmm6,%xmm11 + vpaddd %xmm5,%xmm10,%xmm12 + vpshufb %xmm0,%xmm10,%xmm10 + vpaddd %xmm5,%xmm11,%xmm13 + vpshufb %xmm0,%xmm11,%xmm11 + vpxor %xmm4,%xmm10,%xmm10 + vpaddd %xmm5,%xmm12,%xmm14 + vpshufb %xmm0,%xmm12,%xmm12 + vpxor %xmm4,%xmm11,%xmm11 + vpaddd %xmm5,%xmm13,%xmm1 + vpshufb %xmm0,%xmm13,%xmm13 + vpxor %xmm4,%xmm12,%xmm12 + vpshufb %xmm0,%xmm14,%xmm14 + vpxor %xmm4,%xmm13,%xmm13 + vpshufb %xmm0,%xmm1,%xmm1 + vpxor %xmm4,%xmm14,%xmm14 + jmp L$oop_ctr32 + + + +.globl _aesni_gcm_encrypt + +.p2align 5 +_aesni_gcm_encrypt: + + xorq %r10,%r10 + cmpq $288,%rdx + jb L$gcm_enc_abort + + leaq (%rsp),%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + vzeroupper + + vmovdqu (%r8),%xmm1 + addq $-128,%rsp + movl 12(%r8),%ebx + leaq L$bswap_mask(%rip),%r11 + leaq -128(%rcx),%r14 + movq $0xf80,%r15 + leaq 128(%rcx),%rcx + vmovdqu (%r11),%xmm0 + andq $-128,%rsp + movl 240-128(%rcx),%ebp + + andq %r15,%r14 + andq %rsp,%r15 + subq %r14,%r15 + jc L$enc_no_key_aliasing + cmpq $768,%r15 + jnc L$enc_no_key_aliasing + subq %r15,%rsp +L$enc_no_key_aliasing: + + leaq (%rsi),%r14 + leaq -192(%rsi,%rdx,1),%r15 + shrq $4,%rdx + + call _aesni_ctr32_6x + vpshufb %xmm0,%xmm9,%xmm8 + vpshufb %xmm0,%xmm10,%xmm2 + vmovdqu %xmm8,112(%rsp) + vpshufb %xmm0,%xmm11,%xmm4 + vmovdqu %xmm2,96(%rsp) + vpshufb %xmm0,%xmm12,%xmm5 + vmovdqu %xmm4,80(%rsp) + vpshufb %xmm0,%xmm13,%xmm6 + vmovdqu %xmm5,64(%rsp) + vpshufb %xmm0,%xmm14,%xmm7 + vmovdqu %xmm6,48(%rsp) + + call _aesni_ctr32_6x + + vmovdqu (%r9),%xmm8 + leaq 32+32(%r9),%r9 + subq $12,%rdx + movq $192,%r10 + vpshufb %xmm0,%xmm8,%xmm8 + + call _aesni_ctr32_ghash_6x + vmovdqu 32(%rsp),%xmm7 + vmovdqu (%r11),%xmm0 + vmovdqu 0-32(%r9),%xmm3 + vpunpckhqdq %xmm7,%xmm7,%xmm1 + vmovdqu 32-32(%r9),%xmm15 + vmovups %xmm9,-96(%rsi) + vpshufb %xmm0,%xmm9,%xmm9 + vpxor %xmm7,%xmm1,%xmm1 + vmovups %xmm10,-80(%rsi) + vpshufb %xmm0,%xmm10,%xmm10 + vmovups %xmm11,-64(%rsi) + vpshufb %xmm0,%xmm11,%xmm11 + vmovups %xmm12,-48(%rsi) + vpshufb %xmm0,%xmm12,%xmm12 + vmovups %xmm13,-32(%rsi) + vpshufb %xmm0,%xmm13,%xmm13 + vmovups %xmm14,-16(%rsi) + vpshufb %xmm0,%xmm14,%xmm14 + vmovdqu %xmm9,16(%rsp) + vmovdqu 48(%rsp),%xmm6 + vmovdqu 16-32(%r9),%xmm0 + vpunpckhqdq %xmm6,%xmm6,%xmm2 + vpclmulqdq $0x00,%xmm3,%xmm7,%xmm5 + vpxor %xmm6,%xmm2,%xmm2 + vpclmulqdq $0x11,%xmm3,%xmm7,%xmm7 + vpclmulqdq $0x00,%xmm15,%xmm1,%xmm1 + + vmovdqu 64(%rsp),%xmm9 + vpclmulqdq $0x00,%xmm0,%xmm6,%xmm4 + vmovdqu 48-32(%r9),%xmm3 + vpxor %xmm5,%xmm4,%xmm4 + vpunpckhqdq %xmm9,%xmm9,%xmm5 + vpclmulqdq $0x11,%xmm0,%xmm6,%xmm6 + vpxor %xmm9,%xmm5,%xmm5 + vpxor %xmm7,%xmm6,%xmm6 + vpclmulqdq $0x10,%xmm15,%xmm2,%xmm2 + vmovdqu 80-32(%r9),%xmm15 + vpxor %xmm1,%xmm2,%xmm2 + + vmovdqu 80(%rsp),%xmm1 + vpclmulqdq $0x00,%xmm3,%xmm9,%xmm7 + vmovdqu 64-32(%r9),%xmm0 + vpxor %xmm4,%xmm7,%xmm7 + vpunpckhqdq %xmm1,%xmm1,%xmm4 + vpclmulqdq $0x11,%xmm3,%xmm9,%xmm9 + vpxor %xmm1,%xmm4,%xmm4 + vpxor %xmm6,%xmm9,%xmm9 + vpclmulqdq $0x00,%xmm15,%xmm5,%xmm5 + vpxor %xmm2,%xmm5,%xmm5 + + vmovdqu 96(%rsp),%xmm2 + vpclmulqdq $0x00,%xmm0,%xmm1,%xmm6 + vmovdqu 96-32(%r9),%xmm3 + vpxor %xmm7,%xmm6,%xmm6 + vpunpckhqdq %xmm2,%xmm2,%xmm7 + vpclmulqdq $0x11,%xmm0,%xmm1,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpxor %xmm9,%xmm1,%xmm1 + vpclmulqdq $0x10,%xmm15,%xmm4,%xmm4 + vmovdqu 128-32(%r9),%xmm15 + vpxor %xmm5,%xmm4,%xmm4 + + vpxor 112(%rsp),%xmm8,%xmm8 + vpclmulqdq $0x00,%xmm3,%xmm2,%xmm5 + vmovdqu 112-32(%r9),%xmm0 + vpunpckhqdq %xmm8,%xmm8,%xmm9 + vpxor %xmm6,%xmm5,%xmm5 + vpclmulqdq $0x11,%xmm3,%xmm2,%xmm2 + vpxor %xmm8,%xmm9,%xmm9 + vpxor %xmm1,%xmm2,%xmm2 + vpclmulqdq $0x00,%xmm15,%xmm7,%xmm7 + vpxor %xmm4,%xmm7,%xmm4 + + vpclmulqdq $0x00,%xmm0,%xmm8,%xmm6 + vmovdqu 0-32(%r9),%xmm3 + vpunpckhqdq %xmm14,%xmm14,%xmm1 + vpclmulqdq $0x11,%xmm0,%xmm8,%xmm8 + vpxor %xmm14,%xmm1,%xmm1 + vpxor %xmm5,%xmm6,%xmm5 + vpclmulqdq $0x10,%xmm15,%xmm9,%xmm9 + vmovdqu 32-32(%r9),%xmm15 + vpxor %xmm2,%xmm8,%xmm7 + vpxor %xmm4,%xmm9,%xmm6 + + vmovdqu 16-32(%r9),%xmm0 + vpxor %xmm5,%xmm7,%xmm9 + vpclmulqdq $0x00,%xmm3,%xmm14,%xmm4 + vpxor %xmm9,%xmm6,%xmm6 + vpunpckhqdq %xmm13,%xmm13,%xmm2 + vpclmulqdq $0x11,%xmm3,%xmm14,%xmm14 + vpxor %xmm13,%xmm2,%xmm2 + vpslldq $8,%xmm6,%xmm9 + vpclmulqdq $0x00,%xmm15,%xmm1,%xmm1 + vpxor %xmm9,%xmm5,%xmm8 + vpsrldq $8,%xmm6,%xmm6 + vpxor %xmm6,%xmm7,%xmm7 + + vpclmulqdq $0x00,%xmm0,%xmm13,%xmm5 + vmovdqu 48-32(%r9),%xmm3 + vpxor %xmm4,%xmm5,%xmm5 + vpunpckhqdq %xmm12,%xmm12,%xmm9 + vpclmulqdq $0x11,%xmm0,%xmm13,%xmm13 + vpxor %xmm12,%xmm9,%xmm9 + vpxor %xmm14,%xmm13,%xmm13 + vpalignr $8,%xmm8,%xmm8,%xmm14 + vpclmulqdq $0x10,%xmm15,%xmm2,%xmm2 + vmovdqu 80-32(%r9),%xmm15 + vpxor %xmm1,%xmm2,%xmm2 + + vpclmulqdq $0x00,%xmm3,%xmm12,%xmm4 + vmovdqu 64-32(%r9),%xmm0 + vpxor %xmm5,%xmm4,%xmm4 + vpunpckhqdq %xmm11,%xmm11,%xmm1 + vpclmulqdq $0x11,%xmm3,%xmm12,%xmm12 + vpxor %xmm11,%xmm1,%xmm1 + vpxor %xmm13,%xmm12,%xmm12 + vxorps 16(%rsp),%xmm7,%xmm7 + vpclmulqdq $0x00,%xmm15,%xmm9,%xmm9 + vpxor %xmm2,%xmm9,%xmm9 + + vpclmulqdq $0x10,16(%r11),%xmm8,%xmm8 + vxorps %xmm14,%xmm8,%xmm8 + + vpclmulqdq $0x00,%xmm0,%xmm11,%xmm5 + vmovdqu 96-32(%r9),%xmm3 + vpxor %xmm4,%xmm5,%xmm5 + vpunpckhqdq %xmm10,%xmm10,%xmm2 + vpclmulqdq $0x11,%xmm0,%xmm11,%xmm11 + vpxor %xmm10,%xmm2,%xmm2 + vpalignr $8,%xmm8,%xmm8,%xmm14 + vpxor %xmm12,%xmm11,%xmm11 + vpclmulqdq $0x10,%xmm15,%xmm1,%xmm1 + vmovdqu 128-32(%r9),%xmm15 + vpxor %xmm9,%xmm1,%xmm1 + + vxorps %xmm7,%xmm14,%xmm14 + vpclmulqdq $0x10,16(%r11),%xmm8,%xmm8 + vxorps %xmm14,%xmm8,%xmm8 + + vpclmulqdq $0x00,%xmm3,%xmm10,%xmm4 + vmovdqu 112-32(%r9),%xmm0 + vpxor %xmm5,%xmm4,%xmm4 + vpunpckhqdq %xmm8,%xmm8,%xmm9 + vpclmulqdq $0x11,%xmm3,%xmm10,%xmm10 + vpxor %xmm8,%xmm9,%xmm9 + vpxor %xmm11,%xmm10,%xmm10 + vpclmulqdq $0x00,%xmm15,%xmm2,%xmm2 + vpxor %xmm1,%xmm2,%xmm2 + + vpclmulqdq $0x00,%xmm0,%xmm8,%xmm5 + vpclmulqdq $0x11,%xmm0,%xmm8,%xmm7 + vpxor %xmm4,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm15,%xmm9,%xmm6 + vpxor %xmm10,%xmm7,%xmm7 + vpxor %xmm2,%xmm6,%xmm6 + + vpxor %xmm5,%xmm7,%xmm4 + vpxor %xmm4,%xmm6,%xmm6 + vpslldq $8,%xmm6,%xmm1 + vmovdqu 16(%r11),%xmm3 + vpsrldq $8,%xmm6,%xmm6 + vpxor %xmm1,%xmm5,%xmm8 + vpxor %xmm6,%xmm7,%xmm7 + + vpalignr $8,%xmm8,%xmm8,%xmm2 + vpclmulqdq $0x10,%xmm3,%xmm8,%xmm8 + vpxor %xmm2,%xmm8,%xmm8 + + vpalignr $8,%xmm8,%xmm8,%xmm2 + vpclmulqdq $0x10,%xmm3,%xmm8,%xmm8 + vpxor %xmm7,%xmm2,%xmm2 + vpxor %xmm2,%xmm8,%xmm8 + vpshufb (%r11),%xmm8,%xmm8 + vmovdqu %xmm8,-64(%r9) + + vzeroupper + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$gcm_enc_abort: + movq %r10,%rax + .byte 0xf3,0xc3 + + +.p2align 6 +L$bswap_mask: +.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +L$poly: +.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 +L$one_msb: +.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +L$two_lsb: +.byte 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +L$one_lsb: +.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +.byte 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.p2align 6 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/modes/ghash-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/modes/ghash-x86_64.s new file mode 100644 index 0000000..3623d18 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/modes/ghash-x86_64.s @@ -0,0 +1,1835 @@ +.text + + +.globl _gcm_gmult_4bit + +.p2align 4 +_gcm_gmult_4bit: + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $280,%rsp + +L$gmult_prologue: + + movzbq 15(%rdi),%r8 + leaq L$rem_4bit(%rip),%r11 + xorq %rax,%rax + xorq %rbx,%rbx + movb %r8b,%al + movb %r8b,%bl + shlb $4,%al + movq $14,%rcx + movq 8(%rsi,%rax,1),%r8 + movq (%rsi,%rax,1),%r9 + andb $0xf0,%bl + movq %r8,%rdx + jmp L$oop1 + +.p2align 4 +L$oop1: + shrq $4,%r8 + andq $0xf,%rdx + movq %r9,%r10 + movb (%rdi,%rcx,1),%al + shrq $4,%r9 + xorq 8(%rsi,%rbx,1),%r8 + shlq $60,%r10 + xorq (%rsi,%rbx,1),%r9 + movb %al,%bl + xorq (%r11,%rdx,8),%r9 + movq %r8,%rdx + shlb $4,%al + xorq %r10,%r8 + decq %rcx + js L$break1 + + shrq $4,%r8 + andq $0xf,%rdx + movq %r9,%r10 + shrq $4,%r9 + xorq 8(%rsi,%rax,1),%r8 + shlq $60,%r10 + xorq (%rsi,%rax,1),%r9 + andb $0xf0,%bl + xorq (%r11,%rdx,8),%r9 + movq %r8,%rdx + xorq %r10,%r8 + jmp L$oop1 + +.p2align 4 +L$break1: + shrq $4,%r8 + andq $0xf,%rdx + movq %r9,%r10 + shrq $4,%r9 + xorq 8(%rsi,%rax,1),%r8 + shlq $60,%r10 + xorq (%rsi,%rax,1),%r9 + andb $0xf0,%bl + xorq (%r11,%rdx,8),%r9 + movq %r8,%rdx + xorq %r10,%r8 + + shrq $4,%r8 + andq $0xf,%rdx + movq %r9,%r10 + shrq $4,%r9 + xorq 8(%rsi,%rbx,1),%r8 + shlq $60,%r10 + xorq (%rsi,%rbx,1),%r9 + xorq %r10,%r8 + xorq (%r11,%rdx,8),%r9 + + bswapq %r8 + bswapq %r9 + movq %r8,8(%rdi) + movq %r9,(%rdi) + + leaq 280+48(%rsp),%rsi + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$gmult_epilogue: + .byte 0xf3,0xc3 + + +.globl _gcm_ghash_4bit + +.p2align 4 +_gcm_ghash_4bit: + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $280,%rsp + +L$ghash_prologue: + movq %rdx,%r14 + movq %rcx,%r15 + subq $-128,%rsi + leaq 16+128(%rsp),%rbp + xorl %edx,%edx + movq 0+0-128(%rsi),%r8 + movq 0+8-128(%rsi),%rax + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq 16+0-128(%rsi),%r9 + shlb $4,%dl + movq 16+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,0(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,0(%rbp) + movq 32+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,0-128(%rbp) + movq 32+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,1(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,8(%rbp) + movq 48+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,8-128(%rbp) + movq 48+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,2(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,16(%rbp) + movq 64+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,16-128(%rbp) + movq 64+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,3(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,24(%rbp) + movq 80+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,24-128(%rbp) + movq 80+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,4(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,32(%rbp) + movq 96+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,32-128(%rbp) + movq 96+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,5(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,40(%rbp) + movq 112+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,40-128(%rbp) + movq 112+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,6(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,48(%rbp) + movq 128+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,48-128(%rbp) + movq 128+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,7(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,56(%rbp) + movq 144+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,56-128(%rbp) + movq 144+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,8(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,64(%rbp) + movq 160+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,64-128(%rbp) + movq 160+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,9(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,72(%rbp) + movq 176+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,72-128(%rbp) + movq 176+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,10(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,80(%rbp) + movq 192+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,80-128(%rbp) + movq 192+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,11(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,88(%rbp) + movq 208+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,88-128(%rbp) + movq 208+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,12(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,96(%rbp) + movq 224+0-128(%rsi),%r8 + shlb $4,%dl + movq %rax,96-128(%rbp) + movq 224+8-128(%rsi),%rax + shlq $60,%r10 + movb %dl,13(%rsp) + orq %r10,%rbx + movb %al,%dl + shrq $4,%rax + movq %r8,%r10 + shrq $4,%r8 + movq %r9,104(%rbp) + movq 240+0-128(%rsi),%r9 + shlb $4,%dl + movq %rbx,104-128(%rbp) + movq 240+8-128(%rsi),%rbx + shlq $60,%r10 + movb %dl,14(%rsp) + orq %r10,%rax + movb %bl,%dl + shrq $4,%rbx + movq %r9,%r10 + shrq $4,%r9 + movq %r8,112(%rbp) + shlb $4,%dl + movq %rax,112-128(%rbp) + shlq $60,%r10 + movb %dl,15(%rsp) + orq %r10,%rbx + movq %r9,120(%rbp) + movq %rbx,120-128(%rbp) + addq $-128,%rsi + movq 8(%rdi),%r8 + movq 0(%rdi),%r9 + addq %r14,%r15 + leaq L$rem_8bit(%rip),%r11 + jmp L$outer_loop +.p2align 4 +L$outer_loop: + xorq (%r14),%r9 + movq 8(%r14),%rdx + leaq 16(%r14),%r14 + xorq %r8,%rdx + movq %r9,(%rdi) + movq %rdx,8(%rdi) + shrq $32,%rdx + xorq %rax,%rax + roll $8,%edx + movb %dl,%al + movzbl %dl,%ebx + shlb $4,%al + shrl $4,%ebx + roll $8,%edx + movq 8(%rsi,%rax,1),%r8 + movq (%rsi,%rax,1),%r9 + movb %dl,%al + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + xorq %r8,%r12 + movq %r9,%r10 + shrq $8,%r8 + movzbq %r12b,%r12 + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + movl 8(%rdi),%edx + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + movl 4(%rdi),%edx + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + movl 0(%rdi),%edx + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + shrl $4,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r12,2),%r12 + movzbl %dl,%ebx + shlb $4,%al + movzbq (%rsp,%rcx,1),%r13 + shrl $4,%ebx + shlq $48,%r12 + xorq %r8,%r13 + movq %r9,%r10 + xorq %r12,%r9 + shrq $8,%r8 + movzbq %r13b,%r13 + shrq $8,%r9 + xorq -128(%rbp,%rcx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rcx,8),%r9 + roll $8,%edx + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + movb %dl,%al + xorq %r10,%r8 + movzwq (%r11,%r13,2),%r13 + movzbl %dl,%ecx + shlb $4,%al + movzbq (%rsp,%rbx,1),%r12 + andl $240,%ecx + shlq $48,%r13 + xorq %r8,%r12 + movq %r9,%r10 + xorq %r13,%r9 + shrq $8,%r8 + movzbq %r12b,%r12 + movl -4(%rdi),%edx + shrq $8,%r9 + xorq -128(%rbp,%rbx,8),%r8 + shlq $56,%r10 + xorq (%rbp,%rbx,8),%r9 + movzwq (%r11,%r12,2),%r12 + xorq 8(%rsi,%rax,1),%r8 + xorq (%rsi,%rax,1),%r9 + shlq $48,%r12 + xorq %r10,%r8 + xorq %r12,%r9 + movzbq %r8b,%r13 + shrq $4,%r8 + movq %r9,%r10 + shlb $4,%r13b + shrq $4,%r9 + xorq 8(%rsi,%rcx,1),%r8 + movzwq (%r11,%r13,2),%r13 + shlq $60,%r10 + xorq (%rsi,%rcx,1),%r9 + xorq %r10,%r8 + shlq $48,%r13 + bswapq %r8 + xorq %r13,%r9 + bswapq %r9 + cmpq %r15,%r14 + jb L$outer_loop + movq %r8,8(%rdi) + movq %r9,(%rdi) + + leaq 280+48(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq 0(%rsi),%rsp + +L$ghash_epilogue: + .byte 0xf3,0xc3 + + +.globl _gcm_init_clmul + +.p2align 4 +_gcm_init_clmul: + +L$_init_clmul: + movdqu (%rsi),%xmm2 + pshufd $78,%xmm2,%xmm2 + + + pshufd $255,%xmm2,%xmm4 + movdqa %xmm2,%xmm3 + psllq $1,%xmm2 + pxor %xmm5,%xmm5 + psrlq $63,%xmm3 + pcmpgtd %xmm4,%xmm5 + pslldq $8,%xmm3 + por %xmm3,%xmm2 + + + pand L$0x1c2_polynomial(%rip),%xmm5 + pxor %xmm5,%xmm2 + + + pshufd $78,%xmm2,%xmm6 + movdqa %xmm2,%xmm0 + pxor %xmm2,%xmm6 + movdqa %xmm0,%xmm1 + pshufd $78,%xmm0,%xmm3 + pxor %xmm0,%xmm3 +.byte 102,15,58,68,194,0 +.byte 102,15,58,68,202,17 +.byte 102,15,58,68,222,0 + pxor %xmm0,%xmm3 + pxor %xmm1,%xmm3 + + movdqa %xmm3,%xmm4 + psrldq $8,%xmm3 + pslldq $8,%xmm4 + pxor %xmm3,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 + pshufd $78,%xmm2,%xmm3 + pshufd $78,%xmm0,%xmm4 + pxor %xmm2,%xmm3 + movdqu %xmm2,0(%rdi) + pxor %xmm0,%xmm4 + movdqu %xmm0,16(%rdi) +.byte 102,15,58,15,227,8 + movdqu %xmm4,32(%rdi) + movdqa %xmm0,%xmm1 + pshufd $78,%xmm0,%xmm3 + pxor %xmm0,%xmm3 +.byte 102,15,58,68,194,0 +.byte 102,15,58,68,202,17 +.byte 102,15,58,68,222,0 + pxor %xmm0,%xmm3 + pxor %xmm1,%xmm3 + + movdqa %xmm3,%xmm4 + psrldq $8,%xmm3 + pslldq $8,%xmm4 + pxor %xmm3,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 + movdqa %xmm0,%xmm5 + movdqa %xmm0,%xmm1 + pshufd $78,%xmm0,%xmm3 + pxor %xmm0,%xmm3 +.byte 102,15,58,68,194,0 +.byte 102,15,58,68,202,17 +.byte 102,15,58,68,222,0 + pxor %xmm0,%xmm3 + pxor %xmm1,%xmm3 + + movdqa %xmm3,%xmm4 + psrldq $8,%xmm3 + pslldq $8,%xmm4 + pxor %xmm3,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 + pshufd $78,%xmm5,%xmm3 + pshufd $78,%xmm0,%xmm4 + pxor %xmm5,%xmm3 + movdqu %xmm5,48(%rdi) + pxor %xmm0,%xmm4 + movdqu %xmm0,64(%rdi) +.byte 102,15,58,15,227,8 + movdqu %xmm4,80(%rdi) + .byte 0xf3,0xc3 + + +.globl _gcm_gmult_clmul + +.p2align 4 +_gcm_gmult_clmul: + +L$_gmult_clmul: + movdqu (%rdi),%xmm0 + movdqa L$bswap_mask(%rip),%xmm5 + movdqu (%rsi),%xmm2 + movdqu 32(%rsi),%xmm4 +.byte 102,15,56,0,197 + movdqa %xmm0,%xmm1 + pshufd $78,%xmm0,%xmm3 + pxor %xmm0,%xmm3 +.byte 102,15,58,68,194,0 +.byte 102,15,58,68,202,17 +.byte 102,15,58,68,220,0 + pxor %xmm0,%xmm3 + pxor %xmm1,%xmm3 + + movdqa %xmm3,%xmm4 + psrldq $8,%xmm3 + pslldq $8,%xmm4 + pxor %xmm3,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 +.byte 102,15,56,0,197 + movdqu %xmm0,(%rdi) + .byte 0xf3,0xc3 + + +.globl _gcm_ghash_clmul + +.p2align 5 +_gcm_ghash_clmul: + +L$_ghash_clmul: + movdqa L$bswap_mask(%rip),%xmm10 + + movdqu (%rdi),%xmm0 + movdqu (%rsi),%xmm2 + movdqu 32(%rsi),%xmm7 +.byte 102,65,15,56,0,194 + + subq $0x10,%rcx + jz L$odd_tail + + movdqu 16(%rsi),%xmm6 + movl _OPENSSL_ia32cap_P+4(%rip),%eax + cmpq $0x30,%rcx + jb L$skip4x + + andl $71303168,%eax + cmpl $4194304,%eax + je L$skip4x + + subq $0x30,%rcx + movq $0xA040608020C0E000,%rax + movdqu 48(%rsi),%xmm14 + movdqu 64(%rsi),%xmm15 + + + + + movdqu 48(%rdx),%xmm3 + movdqu 32(%rdx),%xmm11 +.byte 102,65,15,56,0,218 +.byte 102,69,15,56,0,218 + movdqa %xmm3,%xmm5 + pshufd $78,%xmm3,%xmm4 + pxor %xmm3,%xmm4 +.byte 102,15,58,68,218,0 +.byte 102,15,58,68,234,17 +.byte 102,15,58,68,231,0 + + movdqa %xmm11,%xmm13 + pshufd $78,%xmm11,%xmm12 + pxor %xmm11,%xmm12 +.byte 102,68,15,58,68,222,0 +.byte 102,68,15,58,68,238,17 +.byte 102,68,15,58,68,231,16 + xorps %xmm11,%xmm3 + xorps %xmm13,%xmm5 + movups 80(%rsi),%xmm7 + xorps %xmm12,%xmm4 + + movdqu 16(%rdx),%xmm11 + movdqu 0(%rdx),%xmm8 +.byte 102,69,15,56,0,218 +.byte 102,69,15,56,0,194 + movdqa %xmm11,%xmm13 + pshufd $78,%xmm11,%xmm12 + pxor %xmm8,%xmm0 + pxor %xmm11,%xmm12 +.byte 102,69,15,58,68,222,0 + movdqa %xmm0,%xmm1 + pshufd $78,%xmm0,%xmm8 + pxor %xmm0,%xmm8 +.byte 102,69,15,58,68,238,17 +.byte 102,68,15,58,68,231,0 + xorps %xmm11,%xmm3 + xorps %xmm13,%xmm5 + + leaq 64(%rdx),%rdx + subq $0x40,%rcx + jc L$tail4x + + jmp L$mod4_loop +.p2align 5 +L$mod4_loop: +.byte 102,65,15,58,68,199,0 + xorps %xmm12,%xmm4 + movdqu 48(%rdx),%xmm11 +.byte 102,69,15,56,0,218 +.byte 102,65,15,58,68,207,17 + xorps %xmm3,%xmm0 + movdqu 32(%rdx),%xmm3 + movdqa %xmm11,%xmm13 +.byte 102,68,15,58,68,199,16 + pshufd $78,%xmm11,%xmm12 + xorps %xmm5,%xmm1 + pxor %xmm11,%xmm12 +.byte 102,65,15,56,0,218 + movups 32(%rsi),%xmm7 + xorps %xmm4,%xmm8 +.byte 102,68,15,58,68,218,0 + pshufd $78,%xmm3,%xmm4 + + pxor %xmm0,%xmm8 + movdqa %xmm3,%xmm5 + pxor %xmm1,%xmm8 + pxor %xmm3,%xmm4 + movdqa %xmm8,%xmm9 +.byte 102,68,15,58,68,234,17 + pslldq $8,%xmm8 + psrldq $8,%xmm9 + pxor %xmm8,%xmm0 + movdqa L$7_mask(%rip),%xmm8 + pxor %xmm9,%xmm1 +.byte 102,76,15,110,200 + + pand %xmm0,%xmm8 +.byte 102,69,15,56,0,200 + pxor %xmm0,%xmm9 +.byte 102,68,15,58,68,231,0 + psllq $57,%xmm9 + movdqa %xmm9,%xmm8 + pslldq $8,%xmm9 +.byte 102,15,58,68,222,0 + psrldq $8,%xmm8 + pxor %xmm9,%xmm0 + pxor %xmm8,%xmm1 + movdqu 0(%rdx),%xmm8 + + movdqa %xmm0,%xmm9 + psrlq $1,%xmm0 +.byte 102,15,58,68,238,17 + xorps %xmm11,%xmm3 + movdqu 16(%rdx),%xmm11 +.byte 102,69,15,56,0,218 +.byte 102,15,58,68,231,16 + xorps %xmm13,%xmm5 + movups 80(%rsi),%xmm7 +.byte 102,69,15,56,0,194 + pxor %xmm9,%xmm1 + pxor %xmm0,%xmm9 + psrlq $5,%xmm0 + + movdqa %xmm11,%xmm13 + pxor %xmm12,%xmm4 + pshufd $78,%xmm11,%xmm12 + pxor %xmm9,%xmm0 + pxor %xmm8,%xmm1 + pxor %xmm11,%xmm12 +.byte 102,69,15,58,68,222,0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 + movdqa %xmm0,%xmm1 +.byte 102,69,15,58,68,238,17 + xorps %xmm11,%xmm3 + pshufd $78,%xmm0,%xmm8 + pxor %xmm0,%xmm8 + +.byte 102,68,15,58,68,231,0 + xorps %xmm13,%xmm5 + + leaq 64(%rdx),%rdx + subq $0x40,%rcx + jnc L$mod4_loop + +L$tail4x: +.byte 102,65,15,58,68,199,0 +.byte 102,65,15,58,68,207,17 +.byte 102,68,15,58,68,199,16 + xorps %xmm12,%xmm4 + xorps %xmm3,%xmm0 + xorps %xmm5,%xmm1 + pxor %xmm0,%xmm1 + pxor %xmm4,%xmm8 + + pxor %xmm1,%xmm8 + pxor %xmm0,%xmm1 + + movdqa %xmm8,%xmm9 + psrldq $8,%xmm8 + pslldq $8,%xmm9 + pxor %xmm8,%xmm1 + pxor %xmm9,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 + addq $0x40,%rcx + jz L$done + movdqu 32(%rsi),%xmm7 + subq $0x10,%rcx + jz L$odd_tail +L$skip4x: + + + + + + movdqu (%rdx),%xmm8 + movdqu 16(%rdx),%xmm3 +.byte 102,69,15,56,0,194 +.byte 102,65,15,56,0,218 + pxor %xmm8,%xmm0 + + movdqa %xmm3,%xmm5 + pshufd $78,%xmm3,%xmm4 + pxor %xmm3,%xmm4 +.byte 102,15,58,68,218,0 +.byte 102,15,58,68,234,17 +.byte 102,15,58,68,231,0 + + leaq 32(%rdx),%rdx + nop + subq $0x20,%rcx + jbe L$even_tail + nop + jmp L$mod_loop + +.p2align 5 +L$mod_loop: + movdqa %xmm0,%xmm1 + movdqa %xmm4,%xmm8 + pshufd $78,%xmm0,%xmm4 + pxor %xmm0,%xmm4 + +.byte 102,15,58,68,198,0 +.byte 102,15,58,68,206,17 +.byte 102,15,58,68,231,16 + + pxor %xmm3,%xmm0 + pxor %xmm5,%xmm1 + movdqu (%rdx),%xmm9 + pxor %xmm0,%xmm8 +.byte 102,69,15,56,0,202 + movdqu 16(%rdx),%xmm3 + + pxor %xmm1,%xmm8 + pxor %xmm9,%xmm1 + pxor %xmm8,%xmm4 +.byte 102,65,15,56,0,218 + movdqa %xmm4,%xmm8 + psrldq $8,%xmm8 + pslldq $8,%xmm4 + pxor %xmm8,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm3,%xmm5 + + movdqa %xmm0,%xmm9 + movdqa %xmm0,%xmm8 + psllq $5,%xmm0 + pxor %xmm0,%xmm8 +.byte 102,15,58,68,218,0 + psllq $1,%xmm0 + pxor %xmm8,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm8 + pslldq $8,%xmm0 + psrldq $8,%xmm8 + pxor %xmm9,%xmm0 + pshufd $78,%xmm5,%xmm4 + pxor %xmm8,%xmm1 + pxor %xmm5,%xmm4 + + movdqa %xmm0,%xmm9 + psrlq $1,%xmm0 +.byte 102,15,58,68,234,17 + pxor %xmm9,%xmm1 + pxor %xmm0,%xmm9 + psrlq $5,%xmm0 + pxor %xmm9,%xmm0 + leaq 32(%rdx),%rdx + psrlq $1,%xmm0 +.byte 102,15,58,68,231,0 + pxor %xmm1,%xmm0 + + subq $0x20,%rcx + ja L$mod_loop + +L$even_tail: + movdqa %xmm0,%xmm1 + movdqa %xmm4,%xmm8 + pshufd $78,%xmm0,%xmm4 + pxor %xmm0,%xmm4 + +.byte 102,15,58,68,198,0 +.byte 102,15,58,68,206,17 +.byte 102,15,58,68,231,16 + + pxor %xmm3,%xmm0 + pxor %xmm5,%xmm1 + pxor %xmm0,%xmm8 + pxor %xmm1,%xmm8 + pxor %xmm8,%xmm4 + movdqa %xmm4,%xmm8 + psrldq $8,%xmm8 + pslldq $8,%xmm4 + pxor %xmm8,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 + testq %rcx,%rcx + jnz L$done + +L$odd_tail: + movdqu (%rdx),%xmm8 +.byte 102,69,15,56,0,194 + pxor %xmm8,%xmm0 + movdqa %xmm0,%xmm1 + pshufd $78,%xmm0,%xmm3 + pxor %xmm0,%xmm3 +.byte 102,15,58,68,194,0 +.byte 102,15,58,68,202,17 +.byte 102,15,58,68,223,0 + pxor %xmm0,%xmm3 + pxor %xmm1,%xmm3 + + movdqa %xmm3,%xmm4 + psrldq $8,%xmm3 + pslldq $8,%xmm4 + pxor %xmm3,%xmm1 + pxor %xmm4,%xmm0 + + movdqa %xmm0,%xmm4 + movdqa %xmm0,%xmm3 + psllq $5,%xmm0 + pxor %xmm0,%xmm3 + psllq $1,%xmm0 + pxor %xmm3,%xmm0 + psllq $57,%xmm0 + movdqa %xmm0,%xmm3 + pslldq $8,%xmm0 + psrldq $8,%xmm3 + pxor %xmm4,%xmm0 + pxor %xmm3,%xmm1 + + + movdqa %xmm0,%xmm4 + psrlq $1,%xmm0 + pxor %xmm4,%xmm1 + pxor %xmm0,%xmm4 + psrlq $5,%xmm0 + pxor %xmm4,%xmm0 + psrlq $1,%xmm0 + pxor %xmm1,%xmm0 +L$done: +.byte 102,65,15,56,0,194 + movdqu %xmm0,(%rdi) + .byte 0xf3,0xc3 + + +.globl _gcm_init_avx + +.p2align 5 +_gcm_init_avx: + + vzeroupper + + vmovdqu (%rsi),%xmm2 + vpshufd $78,%xmm2,%xmm2 + + + vpshufd $255,%xmm2,%xmm4 + vpsrlq $63,%xmm2,%xmm3 + vpsllq $1,%xmm2,%xmm2 + vpxor %xmm5,%xmm5,%xmm5 + vpcmpgtd %xmm4,%xmm5,%xmm5 + vpslldq $8,%xmm3,%xmm3 + vpor %xmm3,%xmm2,%xmm2 + + + vpand L$0x1c2_polynomial(%rip),%xmm5,%xmm5 + vpxor %xmm5,%xmm2,%xmm2 + + vpunpckhqdq %xmm2,%xmm2,%xmm6 + vmovdqa %xmm2,%xmm0 + vpxor %xmm2,%xmm6,%xmm6 + movq $4,%r10 + jmp L$init_start_avx +.p2align 5 +L$init_loop_avx: + vpalignr $8,%xmm3,%xmm4,%xmm5 + vmovdqu %xmm5,-16(%rdi) + vpunpckhqdq %xmm0,%xmm0,%xmm3 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x11,%xmm2,%xmm0,%xmm1 + vpclmulqdq $0x00,%xmm2,%xmm0,%xmm0 + vpclmulqdq $0x00,%xmm6,%xmm3,%xmm3 + vpxor %xmm0,%xmm1,%xmm4 + vpxor %xmm4,%xmm3,%xmm3 + + vpslldq $8,%xmm3,%xmm4 + vpsrldq $8,%xmm3,%xmm3 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm3,%xmm1,%xmm1 + vpsllq $57,%xmm0,%xmm3 + vpsllq $62,%xmm0,%xmm4 + vpxor %xmm3,%xmm4,%xmm4 + vpsllq $63,%xmm0,%xmm3 + vpxor %xmm3,%xmm4,%xmm4 + vpslldq $8,%xmm4,%xmm3 + vpsrldq $8,%xmm4,%xmm4 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm4,%xmm1,%xmm1 + + vpsrlq $1,%xmm0,%xmm4 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpsrlq $5,%xmm4,%xmm4 + vpxor %xmm4,%xmm0,%xmm0 + vpsrlq $1,%xmm0,%xmm0 + vpxor %xmm1,%xmm0,%xmm0 +L$init_start_avx: + vmovdqa %xmm0,%xmm5 + vpunpckhqdq %xmm0,%xmm0,%xmm3 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x11,%xmm2,%xmm0,%xmm1 + vpclmulqdq $0x00,%xmm2,%xmm0,%xmm0 + vpclmulqdq $0x00,%xmm6,%xmm3,%xmm3 + vpxor %xmm0,%xmm1,%xmm4 + vpxor %xmm4,%xmm3,%xmm3 + + vpslldq $8,%xmm3,%xmm4 + vpsrldq $8,%xmm3,%xmm3 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm3,%xmm1,%xmm1 + vpsllq $57,%xmm0,%xmm3 + vpsllq $62,%xmm0,%xmm4 + vpxor %xmm3,%xmm4,%xmm4 + vpsllq $63,%xmm0,%xmm3 + vpxor %xmm3,%xmm4,%xmm4 + vpslldq $8,%xmm4,%xmm3 + vpsrldq $8,%xmm4,%xmm4 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm4,%xmm1,%xmm1 + + vpsrlq $1,%xmm0,%xmm4 + vpxor %xmm0,%xmm1,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpsrlq $5,%xmm4,%xmm4 + vpxor %xmm4,%xmm0,%xmm0 + vpsrlq $1,%xmm0,%xmm0 + vpxor %xmm1,%xmm0,%xmm0 + vpshufd $78,%xmm5,%xmm3 + vpshufd $78,%xmm0,%xmm4 + vpxor %xmm5,%xmm3,%xmm3 + vmovdqu %xmm5,0(%rdi) + vpxor %xmm0,%xmm4,%xmm4 + vmovdqu %xmm0,16(%rdi) + leaq 48(%rdi),%rdi + subq $1,%r10 + jnz L$init_loop_avx + + vpalignr $8,%xmm4,%xmm3,%xmm5 + vmovdqu %xmm5,-16(%rdi) + + vzeroupper + .byte 0xf3,0xc3 + + +.globl _gcm_gmult_avx + +.p2align 5 +_gcm_gmult_avx: + + jmp L$_gmult_clmul + + +.globl _gcm_ghash_avx + +.p2align 5 +_gcm_ghash_avx: + + vzeroupper + + vmovdqu (%rdi),%xmm10 + leaq L$0x1c2_polynomial(%rip),%r10 + leaq 64(%rsi),%rsi + vmovdqu L$bswap_mask(%rip),%xmm13 + vpshufb %xmm13,%xmm10,%xmm10 + cmpq $0x80,%rcx + jb L$short_avx + subq $0x80,%rcx + + vmovdqu 112(%rdx),%xmm14 + vmovdqu 0-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm14 + vmovdqu 32-64(%rsi),%xmm7 + + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vmovdqu 96(%rdx),%xmm15 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpxor %xmm14,%xmm9,%xmm9 + vpshufb %xmm13,%xmm15,%xmm15 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 16-64(%rsi),%xmm6 + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vmovdqu 80(%rdx),%xmm14 + vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2 + vpxor %xmm15,%xmm8,%xmm8 + + vpshufb %xmm13,%xmm14,%xmm14 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4 + vmovdqu 48-64(%rsi),%xmm6 + vpxor %xmm14,%xmm9,%xmm9 + vmovdqu 64(%rdx),%xmm15 + vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5 + vmovdqu 80-64(%rsi),%xmm7 + + vpshufb %xmm13,%xmm15,%xmm15 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpxor %xmm1,%xmm4,%xmm4 + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 64-64(%rsi),%xmm6 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2 + vpxor %xmm15,%xmm8,%xmm8 + + vmovdqu 48(%rdx),%xmm14 + vpxor %xmm3,%xmm0,%xmm0 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3 + vpxor %xmm4,%xmm1,%xmm1 + vpshufb %xmm13,%xmm14,%xmm14 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4 + vmovdqu 96-64(%rsi),%xmm6 + vpxor %xmm5,%xmm2,%xmm2 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5 + vmovdqu 128-64(%rsi),%xmm7 + vpxor %xmm14,%xmm9,%xmm9 + + vmovdqu 32(%rdx),%xmm15 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpxor %xmm1,%xmm4,%xmm4 + vpshufb %xmm13,%xmm15,%xmm15 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 112-64(%rsi),%xmm6 + vpxor %xmm2,%xmm5,%xmm5 + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2 + vpxor %xmm15,%xmm8,%xmm8 + + vmovdqu 16(%rdx),%xmm14 + vpxor %xmm3,%xmm0,%xmm0 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3 + vpxor %xmm4,%xmm1,%xmm1 + vpshufb %xmm13,%xmm14,%xmm14 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4 + vmovdqu 144-64(%rsi),%xmm6 + vpxor %xmm5,%xmm2,%xmm2 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5 + vmovdqu 176-64(%rsi),%xmm7 + vpxor %xmm14,%xmm9,%xmm9 + + vmovdqu (%rdx),%xmm15 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpxor %xmm1,%xmm4,%xmm4 + vpshufb %xmm13,%xmm15,%xmm15 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 160-64(%rsi),%xmm6 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x10,%xmm7,%xmm9,%xmm2 + + leaq 128(%rdx),%rdx + cmpq $0x80,%rcx + jb L$tail_avx + + vpxor %xmm10,%xmm15,%xmm15 + subq $0x80,%rcx + jmp L$oop8x_avx + +.p2align 5 +L$oop8x_avx: + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vmovdqu 112(%rdx),%xmm14 + vpxor %xmm0,%xmm3,%xmm3 + vpxor %xmm15,%xmm8,%xmm8 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm10 + vpshufb %xmm13,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm11 + vmovdqu 0-64(%rsi),%xmm6 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm12 + vmovdqu 32-64(%rsi),%xmm7 + vpxor %xmm14,%xmm9,%xmm9 + + vmovdqu 96(%rdx),%xmm15 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpxor %xmm3,%xmm10,%xmm10 + vpshufb %xmm13,%xmm15,%xmm15 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vxorps %xmm4,%xmm11,%xmm11 + vmovdqu 16-64(%rsi),%xmm6 + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2 + vpxor %xmm5,%xmm12,%xmm12 + vxorps %xmm15,%xmm8,%xmm8 + + vmovdqu 80(%rdx),%xmm14 + vpxor %xmm10,%xmm12,%xmm12 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3 + vpxor %xmm11,%xmm12,%xmm12 + vpslldq $8,%xmm12,%xmm9 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4 + vpsrldq $8,%xmm12,%xmm12 + vpxor %xmm9,%xmm10,%xmm10 + vmovdqu 48-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm14 + vxorps %xmm12,%xmm11,%xmm11 + vpxor %xmm1,%xmm4,%xmm4 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5 + vmovdqu 80-64(%rsi),%xmm7 + vpxor %xmm14,%xmm9,%xmm9 + vpxor %xmm2,%xmm5,%xmm5 + + vmovdqu 64(%rdx),%xmm15 + vpalignr $8,%xmm10,%xmm10,%xmm12 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpshufb %xmm13,%xmm15,%xmm15 + vpxor %xmm3,%xmm0,%xmm0 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 64-64(%rsi),%xmm6 + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm4,%xmm1,%xmm1 + vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2 + vxorps %xmm15,%xmm8,%xmm8 + vpxor %xmm5,%xmm2,%xmm2 + + vmovdqu 48(%rdx),%xmm14 + vpclmulqdq $0x10,(%r10),%xmm10,%xmm10 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3 + vpshufb %xmm13,%xmm14,%xmm14 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4 + vmovdqu 96-64(%rsi),%xmm6 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5 + vmovdqu 128-64(%rsi),%xmm7 + vpxor %xmm14,%xmm9,%xmm9 + vpxor %xmm2,%xmm5,%xmm5 + + vmovdqu 32(%rdx),%xmm15 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpshufb %xmm13,%xmm15,%xmm15 + vpxor %xmm3,%xmm0,%xmm0 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 112-64(%rsi),%xmm6 + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm4,%xmm1,%xmm1 + vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2 + vpxor %xmm15,%xmm8,%xmm8 + vpxor %xmm5,%xmm2,%xmm2 + vxorps %xmm12,%xmm10,%xmm10 + + vmovdqu 16(%rdx),%xmm14 + vpalignr $8,%xmm10,%xmm10,%xmm12 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3 + vpshufb %xmm13,%xmm14,%xmm14 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4 + vmovdqu 144-64(%rsi),%xmm6 + vpclmulqdq $0x10,(%r10),%xmm10,%xmm10 + vxorps %xmm11,%xmm12,%xmm12 + vpunpckhqdq %xmm14,%xmm14,%xmm9 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5 + vmovdqu 176-64(%rsi),%xmm7 + vpxor %xmm14,%xmm9,%xmm9 + vpxor %xmm2,%xmm5,%xmm5 + + vmovdqu (%rdx),%xmm15 + vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0 + vpshufb %xmm13,%xmm15,%xmm15 + vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1 + vmovdqu 160-64(%rsi),%xmm6 + vpxor %xmm12,%xmm15,%xmm15 + vpclmulqdq $0x10,%xmm7,%xmm9,%xmm2 + vpxor %xmm10,%xmm15,%xmm15 + + leaq 128(%rdx),%rdx + subq $0x80,%rcx + jnc L$oop8x_avx + + addq $0x80,%rcx + jmp L$tail_no_xor_avx + +.p2align 5 +L$short_avx: + vmovdqu -16(%rdx,%rcx,1),%xmm14 + leaq (%rdx,%rcx,1),%rdx + vmovdqu 0-64(%rsi),%xmm6 + vmovdqu 32-64(%rsi),%xmm7 + vpshufb %xmm13,%xmm14,%xmm15 + + vmovdqa %xmm0,%xmm3 + vmovdqa %xmm1,%xmm4 + vmovdqa %xmm2,%xmm5 + subq $0x10,%rcx + jz L$tail_avx + + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu -32(%rdx),%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vmovdqu 16-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm15 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + vpsrldq $8,%xmm7,%xmm7 + subq $0x10,%rcx + jz L$tail_avx + + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu -48(%rdx),%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vmovdqu 48-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm15 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + vmovdqu 80-64(%rsi),%xmm7 + subq $0x10,%rcx + jz L$tail_avx + + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu -64(%rdx),%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vmovdqu 64-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm15 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + vpsrldq $8,%xmm7,%xmm7 + subq $0x10,%rcx + jz L$tail_avx + + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu -80(%rdx),%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vmovdqu 96-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm15 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + vmovdqu 128-64(%rsi),%xmm7 + subq $0x10,%rcx + jz L$tail_avx + + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu -96(%rdx),%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vmovdqu 112-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm15 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + vpsrldq $8,%xmm7,%xmm7 + subq $0x10,%rcx + jz L$tail_avx + + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vmovdqu -112(%rdx),%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vmovdqu 144-64(%rsi),%xmm6 + vpshufb %xmm13,%xmm14,%xmm15 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + vmovq 184-64(%rsi),%xmm7 + subq $0x10,%rcx + jmp L$tail_avx + +.p2align 5 +L$tail_avx: + vpxor %xmm10,%xmm15,%xmm15 +L$tail_no_xor_avx: + vpunpckhqdq %xmm15,%xmm15,%xmm8 + vpxor %xmm0,%xmm3,%xmm3 + vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0 + vpxor %xmm15,%xmm8,%xmm8 + vpxor %xmm1,%xmm4,%xmm4 + vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1 + vpxor %xmm2,%xmm5,%xmm5 + vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2 + + vmovdqu (%r10),%xmm12 + + vpxor %xmm0,%xmm3,%xmm10 + vpxor %xmm1,%xmm4,%xmm11 + vpxor %xmm2,%xmm5,%xmm5 + + vpxor %xmm10,%xmm5,%xmm5 + vpxor %xmm11,%xmm5,%xmm5 + vpslldq $8,%xmm5,%xmm9 + vpsrldq $8,%xmm5,%xmm5 + vpxor %xmm9,%xmm10,%xmm10 + vpxor %xmm5,%xmm11,%xmm11 + + vpclmulqdq $0x10,%xmm12,%xmm10,%xmm9 + vpalignr $8,%xmm10,%xmm10,%xmm10 + vpxor %xmm9,%xmm10,%xmm10 + + vpclmulqdq $0x10,%xmm12,%xmm10,%xmm9 + vpalignr $8,%xmm10,%xmm10,%xmm10 + vpxor %xmm11,%xmm10,%xmm10 + vpxor %xmm9,%xmm10,%xmm10 + + cmpq $0,%rcx + jne L$short_avx + + vpshufb %xmm13,%xmm10,%xmm10 + vmovdqu %xmm10,(%rdi) + vzeroupper + .byte 0xf3,0xc3 + + +.p2align 6 +L$bswap_mask: +.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +L$0x1c2_polynomial: +.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 +L$7_mask: +.long 7,0,7,0 +L$7_mask_poly: +.long 7,0,450,0 +.p2align 6 + +L$rem_4bit: +.long 0,0,0,471859200,0,943718400,0,610271232 +.long 0,1887436800,0,1822425088,0,1220542464,0,1423966208 +.long 0,3774873600,0,4246732800,0,3644850176,0,3311403008 +.long 0,2441084928,0,2376073216,0,2847932416,0,3051356160 + +L$rem_8bit: +.value 0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E +.value 0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E +.value 0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E +.value 0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E +.value 0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E +.value 0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E +.value 0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E +.value 0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E +.value 0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE +.value 0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE +.value 0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE +.value 0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE +.value 0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E +.value 0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E +.value 0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE +.value 0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE +.value 0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E +.value 0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E +.value 0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E +.value 0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E +.value 0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E +.value 0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E +.value 0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E +.value 0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E +.value 0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE +.value 0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE +.value 0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE +.value 0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE +.value 0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E +.value 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E +.value 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE +.value 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE + +.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.p2align 6 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/poly1305/poly1305-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/poly1305/poly1305-x86_64.s new file mode 100644 index 0000000..a5d240b --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/poly1305/poly1305-x86_64.s @@ -0,0 +1,2038 @@ +.text + + + +.globl _poly1305_init +.private_extern _poly1305_init +.globl _poly1305_blocks +.private_extern _poly1305_blocks +.globl _poly1305_emit +.private_extern _poly1305_emit + + +.p2align 5 +_poly1305_init: + + xorq %rax,%rax + movq %rax,0(%rdi) + movq %rax,8(%rdi) + movq %rax,16(%rdi) + + cmpq $0,%rsi + je L$no_key + + leaq _poly1305_blocks(%rip),%r10 + leaq _poly1305_emit(%rip),%r11 + movq _OPENSSL_ia32cap_P+4(%rip),%r9 + leaq poly1305_blocks_avx(%rip),%rax + leaq poly1305_emit_avx(%rip),%rcx + btq $28,%r9 + cmovcq %rax,%r10 + cmovcq %rcx,%r11 + leaq poly1305_blocks_avx2(%rip),%rax + btq $37,%r9 + cmovcq %rax,%r10 + movq $0x0ffffffc0fffffff,%rax + movq $0x0ffffffc0ffffffc,%rcx + andq 0(%rsi),%rax + andq 8(%rsi),%rcx + movq %rax,24(%rdi) + movq %rcx,32(%rdi) + movq %r10,0(%rdx) + movq %r11,8(%rdx) + movl $1,%eax +L$no_key: + .byte 0xf3,0xc3 + + + + +.p2align 5 +_poly1305_blocks: + +L$blocks: + shrq $4,%rdx + jz L$no_data + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$blocks_body: + + movq %rdx,%r15 + + movq 24(%rdi),%r11 + movq 32(%rdi),%r13 + + movq 0(%rdi),%r14 + movq 8(%rdi),%rbx + movq 16(%rdi),%rbp + + movq %r13,%r12 + shrq $2,%r13 + movq %r12,%rax + addq %r12,%r13 + jmp L$oop + +.p2align 5 +L$oop: + addq 0(%rsi),%r14 + adcq 8(%rsi),%rbx + leaq 16(%rsi),%rsi + adcq %rcx,%rbp + mulq %r14 + movq %rax,%r9 + movq %r11,%rax + movq %rdx,%r10 + + mulq %r14 + movq %rax,%r14 + movq %r11,%rax + movq %rdx,%r8 + + mulq %rbx + addq %rax,%r9 + movq %r13,%rax + adcq %rdx,%r10 + + mulq %rbx + movq %rbp,%rbx + addq %rax,%r14 + adcq %rdx,%r8 + + imulq %r13,%rbx + addq %rbx,%r9 + movq %r8,%rbx + adcq $0,%r10 + + imulq %r11,%rbp + addq %r9,%rbx + movq $-4,%rax + adcq %rbp,%r10 + + andq %r10,%rax + movq %r10,%rbp + shrq $2,%r10 + andq $3,%rbp + addq %r10,%rax + addq %rax,%r14 + adcq $0,%rbx + adcq $0,%rbp + movq %r12,%rax + decq %r15 + jnz L$oop + + movq %r14,0(%rdi) + movq %rbx,8(%rdi) + movq %rbp,16(%rdi) + + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbp + + movq 40(%rsp),%rbx + + leaq 48(%rsp),%rsp + +L$no_data: +L$blocks_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 5 +_poly1305_emit: + +L$emit: + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + + movq %r8,%rax + addq $5,%r8 + movq %r9,%rcx + adcq $0,%r9 + adcq $0,%r10 + shrq $2,%r10 + cmovnzq %r8,%rax + cmovnzq %r9,%rcx + + addq 0(%rdx),%rax + adcq 8(%rdx),%rcx + movq %rax,0(%rsi) + movq %rcx,8(%rsi) + + .byte 0xf3,0xc3 + + + +.p2align 5 +__poly1305_block: + + mulq %r14 + movq %rax,%r9 + movq %r11,%rax + movq %rdx,%r10 + + mulq %r14 + movq %rax,%r14 + movq %r11,%rax + movq %rdx,%r8 + + mulq %rbx + addq %rax,%r9 + movq %r13,%rax + adcq %rdx,%r10 + + mulq %rbx + movq %rbp,%rbx + addq %rax,%r14 + adcq %rdx,%r8 + + imulq %r13,%rbx + addq %rbx,%r9 + movq %r8,%rbx + adcq $0,%r10 + + imulq %r11,%rbp + addq %r9,%rbx + movq $-4,%rax + adcq %rbp,%r10 + + andq %r10,%rax + movq %r10,%rbp + shrq $2,%r10 + andq $3,%rbp + addq %r10,%rax + addq %rax,%r14 + adcq $0,%rbx + adcq $0,%rbp + .byte 0xf3,0xc3 + + + + +.p2align 5 +__poly1305_init_avx: + + movq %r11,%r14 + movq %r12,%rbx + xorq %rbp,%rbp + + leaq 48+64(%rdi),%rdi + + movq %r12,%rax + call __poly1305_block + + movl $0x3ffffff,%eax + movl $0x3ffffff,%edx + movq %r14,%r8 + andl %r14d,%eax + movq %r11,%r9 + andl %r11d,%edx + movl %eax,-64(%rdi) + shrq $26,%r8 + movl %edx,-60(%rdi) + shrq $26,%r9 + + movl $0x3ffffff,%eax + movl $0x3ffffff,%edx + andl %r8d,%eax + andl %r9d,%edx + movl %eax,-48(%rdi) + leal (%rax,%rax,4),%eax + movl %edx,-44(%rdi) + leal (%rdx,%rdx,4),%edx + movl %eax,-32(%rdi) + shrq $26,%r8 + movl %edx,-28(%rdi) + shrq $26,%r9 + + movq %rbx,%rax + movq %r12,%rdx + shlq $12,%rax + shlq $12,%rdx + orq %r8,%rax + orq %r9,%rdx + andl $0x3ffffff,%eax + andl $0x3ffffff,%edx + movl %eax,-16(%rdi) + leal (%rax,%rax,4),%eax + movl %edx,-12(%rdi) + leal (%rdx,%rdx,4),%edx + movl %eax,0(%rdi) + movq %rbx,%r8 + movl %edx,4(%rdi) + movq %r12,%r9 + + movl $0x3ffffff,%eax + movl $0x3ffffff,%edx + shrq $14,%r8 + shrq $14,%r9 + andl %r8d,%eax + andl %r9d,%edx + movl %eax,16(%rdi) + leal (%rax,%rax,4),%eax + movl %edx,20(%rdi) + leal (%rdx,%rdx,4),%edx + movl %eax,32(%rdi) + shrq $26,%r8 + movl %edx,36(%rdi) + shrq $26,%r9 + + movq %rbp,%rax + shlq $24,%rax + orq %rax,%r8 + movl %r8d,48(%rdi) + leaq (%r8,%r8,4),%r8 + movl %r9d,52(%rdi) + leaq (%r9,%r9,4),%r9 + movl %r8d,64(%rdi) + movl %r9d,68(%rdi) + + movq %r12,%rax + call __poly1305_block + + movl $0x3ffffff,%eax + movq %r14,%r8 + andl %r14d,%eax + shrq $26,%r8 + movl %eax,-52(%rdi) + + movl $0x3ffffff,%edx + andl %r8d,%edx + movl %edx,-36(%rdi) + leal (%rdx,%rdx,4),%edx + shrq $26,%r8 + movl %edx,-20(%rdi) + + movq %rbx,%rax + shlq $12,%rax + orq %r8,%rax + andl $0x3ffffff,%eax + movl %eax,-4(%rdi) + leal (%rax,%rax,4),%eax + movq %rbx,%r8 + movl %eax,12(%rdi) + + movl $0x3ffffff,%edx + shrq $14,%r8 + andl %r8d,%edx + movl %edx,28(%rdi) + leal (%rdx,%rdx,4),%edx + shrq $26,%r8 + movl %edx,44(%rdi) + + movq %rbp,%rax + shlq $24,%rax + orq %rax,%r8 + movl %r8d,60(%rdi) + leaq (%r8,%r8,4),%r8 + movl %r8d,76(%rdi) + + movq %r12,%rax + call __poly1305_block + + movl $0x3ffffff,%eax + movq %r14,%r8 + andl %r14d,%eax + shrq $26,%r8 + movl %eax,-56(%rdi) + + movl $0x3ffffff,%edx + andl %r8d,%edx + movl %edx,-40(%rdi) + leal (%rdx,%rdx,4),%edx + shrq $26,%r8 + movl %edx,-24(%rdi) + + movq %rbx,%rax + shlq $12,%rax + orq %r8,%rax + andl $0x3ffffff,%eax + movl %eax,-8(%rdi) + leal (%rax,%rax,4),%eax + movq %rbx,%r8 + movl %eax,8(%rdi) + + movl $0x3ffffff,%edx + shrq $14,%r8 + andl %r8d,%edx + movl %edx,24(%rdi) + leal (%rdx,%rdx,4),%edx + shrq $26,%r8 + movl %edx,40(%rdi) + + movq %rbp,%rax + shlq $24,%rax + orq %rax,%r8 + movl %r8d,56(%rdi) + leaq (%r8,%r8,4),%r8 + movl %r8d,72(%rdi) + + leaq -48-64(%rdi),%rdi + .byte 0xf3,0xc3 + + + + +.p2align 5 +poly1305_blocks_avx: + + movl 20(%rdi),%r8d + cmpq $128,%rdx + jae L$blocks_avx + testl %r8d,%r8d + jz L$blocks + +L$blocks_avx: + andq $-16,%rdx + jz L$no_data_avx + + vzeroupper + + testl %r8d,%r8d + jz L$base2_64_avx + + testq $31,%rdx + jz L$even_avx + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$blocks_avx_body: + + movq %rdx,%r15 + + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movl 16(%rdi),%ebp + + movq 24(%rdi),%r11 + movq 32(%rdi),%r13 + + + movl %r8d,%r14d + andq $-2147483648,%r8 + movq %r9,%r12 + movl %r9d,%ebx + andq $-2147483648,%r9 + + shrq $6,%r8 + shlq $52,%r12 + addq %r8,%r14 + shrq $12,%rbx + shrq $18,%r9 + addq %r12,%r14 + adcq %r9,%rbx + + movq %rbp,%r8 + shlq $40,%r8 + shrq $24,%rbp + addq %r8,%rbx + adcq $0,%rbp + + movq $-4,%r9 + movq %rbp,%r8 + andq %rbp,%r9 + shrq $2,%r8 + andq $3,%rbp + addq %r9,%r8 + addq %r8,%r14 + adcq $0,%rbx + adcq $0,%rbp + + movq %r13,%r12 + movq %r13,%rax + shrq $2,%r13 + addq %r12,%r13 + + addq 0(%rsi),%r14 + adcq 8(%rsi),%rbx + leaq 16(%rsi),%rsi + adcq %rcx,%rbp + + call __poly1305_block + + testq %rcx,%rcx + jz L$store_base2_64_avx + + + movq %r14,%rax + movq %r14,%rdx + shrq $52,%r14 + movq %rbx,%r11 + movq %rbx,%r12 + shrq $26,%rdx + andq $0x3ffffff,%rax + shlq $12,%r11 + andq $0x3ffffff,%rdx + shrq $14,%rbx + orq %r11,%r14 + shlq $24,%rbp + andq $0x3ffffff,%r14 + shrq $40,%r12 + andq $0x3ffffff,%rbx + orq %r12,%rbp + + subq $16,%r15 + jz L$store_base2_26_avx + + vmovd %eax,%xmm0 + vmovd %edx,%xmm1 + vmovd %r14d,%xmm2 + vmovd %ebx,%xmm3 + vmovd %ebp,%xmm4 + jmp L$proceed_avx + +.p2align 5 +L$store_base2_64_avx: + movq %r14,0(%rdi) + movq %rbx,8(%rdi) + movq %rbp,16(%rdi) + jmp L$done_avx + +.p2align 4 +L$store_base2_26_avx: + movl %eax,0(%rdi) + movl %edx,4(%rdi) + movl %r14d,8(%rdi) + movl %ebx,12(%rdi) + movl %ebp,16(%rdi) +.p2align 4 +L$done_avx: + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbp + + movq 40(%rsp),%rbx + + leaq 48(%rsp),%rsp + +L$no_data_avx: +L$blocks_avx_epilogue: + .byte 0xf3,0xc3 + + +.p2align 5 +L$base2_64_avx: + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$base2_64_avx_body: + + movq %rdx,%r15 + + movq 24(%rdi),%r11 + movq 32(%rdi),%r13 + + movq 0(%rdi),%r14 + movq 8(%rdi),%rbx + movl 16(%rdi),%ebp + + movq %r13,%r12 + movq %r13,%rax + shrq $2,%r13 + addq %r12,%r13 + + testq $31,%rdx + jz L$init_avx + + addq 0(%rsi),%r14 + adcq 8(%rsi),%rbx + leaq 16(%rsi),%rsi + adcq %rcx,%rbp + subq $16,%r15 + + call __poly1305_block + +L$init_avx: + + movq %r14,%rax + movq %r14,%rdx + shrq $52,%r14 + movq %rbx,%r8 + movq %rbx,%r9 + shrq $26,%rdx + andq $0x3ffffff,%rax + shlq $12,%r8 + andq $0x3ffffff,%rdx + shrq $14,%rbx + orq %r8,%r14 + shlq $24,%rbp + andq $0x3ffffff,%r14 + shrq $40,%r9 + andq $0x3ffffff,%rbx + orq %r9,%rbp + + vmovd %eax,%xmm0 + vmovd %edx,%xmm1 + vmovd %r14d,%xmm2 + vmovd %ebx,%xmm3 + vmovd %ebp,%xmm4 + movl $1,20(%rdi) + + call __poly1305_init_avx + +L$proceed_avx: + movq %r15,%rdx + + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbp + + movq 40(%rsp),%rbx + + leaq 48(%rsp),%rax + leaq 48(%rsp),%rsp + +L$base2_64_avx_epilogue: + jmp L$do_avx + + +.p2align 5 +L$even_avx: + + vmovd 0(%rdi),%xmm0 + vmovd 4(%rdi),%xmm1 + vmovd 8(%rdi),%xmm2 + vmovd 12(%rdi),%xmm3 + vmovd 16(%rdi),%xmm4 + +L$do_avx: + leaq -88(%rsp),%r11 + + subq $0x178,%rsp + subq $64,%rdx + leaq -32(%rsi),%rax + cmovcq %rax,%rsi + + vmovdqu 48(%rdi),%xmm14 + leaq 112(%rdi),%rdi + leaq L$const(%rip),%rcx + + + + vmovdqu 32(%rsi),%xmm5 + vmovdqu 48(%rsi),%xmm6 + vmovdqa 64(%rcx),%xmm15 + + vpsrldq $6,%xmm5,%xmm7 + vpsrldq $6,%xmm6,%xmm8 + vpunpckhqdq %xmm6,%xmm5,%xmm9 + vpunpcklqdq %xmm6,%xmm5,%xmm5 + vpunpcklqdq %xmm8,%xmm7,%xmm8 + + vpsrlq $40,%xmm9,%xmm9 + vpsrlq $26,%xmm5,%xmm6 + vpand %xmm15,%xmm5,%xmm5 + vpsrlq $4,%xmm8,%xmm7 + vpand %xmm15,%xmm6,%xmm6 + vpsrlq $30,%xmm8,%xmm8 + vpand %xmm15,%xmm7,%xmm7 + vpand %xmm15,%xmm8,%xmm8 + vpor 32(%rcx),%xmm9,%xmm9 + + jbe L$skip_loop_avx + + + vmovdqu -48(%rdi),%xmm11 + vmovdqu -32(%rdi),%xmm12 + vpshufd $0xEE,%xmm14,%xmm13 + vpshufd $0x44,%xmm14,%xmm10 + vmovdqa %xmm13,-144(%r11) + vmovdqa %xmm10,0(%rsp) + vpshufd $0xEE,%xmm11,%xmm14 + vmovdqu -16(%rdi),%xmm10 + vpshufd $0x44,%xmm11,%xmm11 + vmovdqa %xmm14,-128(%r11) + vmovdqa %xmm11,16(%rsp) + vpshufd $0xEE,%xmm12,%xmm13 + vmovdqu 0(%rdi),%xmm11 + vpshufd $0x44,%xmm12,%xmm12 + vmovdqa %xmm13,-112(%r11) + vmovdqa %xmm12,32(%rsp) + vpshufd $0xEE,%xmm10,%xmm14 + vmovdqu 16(%rdi),%xmm12 + vpshufd $0x44,%xmm10,%xmm10 + vmovdqa %xmm14,-96(%r11) + vmovdqa %xmm10,48(%rsp) + vpshufd $0xEE,%xmm11,%xmm13 + vmovdqu 32(%rdi),%xmm10 + vpshufd $0x44,%xmm11,%xmm11 + vmovdqa %xmm13,-80(%r11) + vmovdqa %xmm11,64(%rsp) + vpshufd $0xEE,%xmm12,%xmm14 + vmovdqu 48(%rdi),%xmm11 + vpshufd $0x44,%xmm12,%xmm12 + vmovdqa %xmm14,-64(%r11) + vmovdqa %xmm12,80(%rsp) + vpshufd $0xEE,%xmm10,%xmm13 + vmovdqu 64(%rdi),%xmm12 + vpshufd $0x44,%xmm10,%xmm10 + vmovdqa %xmm13,-48(%r11) + vmovdqa %xmm10,96(%rsp) + vpshufd $0xEE,%xmm11,%xmm14 + vpshufd $0x44,%xmm11,%xmm11 + vmovdqa %xmm14,-32(%r11) + vmovdqa %xmm11,112(%rsp) + vpshufd $0xEE,%xmm12,%xmm13 + vmovdqa 0(%rsp),%xmm14 + vpshufd $0x44,%xmm12,%xmm12 + vmovdqa %xmm13,-16(%r11) + vmovdqa %xmm12,128(%rsp) + + jmp L$oop_avx + +.p2align 5 +L$oop_avx: + + + + + + + + + + + + + + + + + + + + + vpmuludq %xmm5,%xmm14,%xmm10 + vpmuludq %xmm6,%xmm14,%xmm11 + vmovdqa %xmm2,32(%r11) + vpmuludq %xmm7,%xmm14,%xmm12 + vmovdqa 16(%rsp),%xmm2 + vpmuludq %xmm8,%xmm14,%xmm13 + vpmuludq %xmm9,%xmm14,%xmm14 + + vmovdqa %xmm0,0(%r11) + vpmuludq 32(%rsp),%xmm9,%xmm0 + vmovdqa %xmm1,16(%r11) + vpmuludq %xmm8,%xmm2,%xmm1 + vpaddq %xmm0,%xmm10,%xmm10 + vpaddq %xmm1,%xmm14,%xmm14 + vmovdqa %xmm3,48(%r11) + vpmuludq %xmm7,%xmm2,%xmm0 + vpmuludq %xmm6,%xmm2,%xmm1 + vpaddq %xmm0,%xmm13,%xmm13 + vmovdqa 48(%rsp),%xmm3 + vpaddq %xmm1,%xmm12,%xmm12 + vmovdqa %xmm4,64(%r11) + vpmuludq %xmm5,%xmm2,%xmm2 + vpmuludq %xmm7,%xmm3,%xmm0 + vpaddq %xmm2,%xmm11,%xmm11 + + vmovdqa 64(%rsp),%xmm4 + vpaddq %xmm0,%xmm14,%xmm14 + vpmuludq %xmm6,%xmm3,%xmm1 + vpmuludq %xmm5,%xmm3,%xmm3 + vpaddq %xmm1,%xmm13,%xmm13 + vmovdqa 80(%rsp),%xmm2 + vpaddq %xmm3,%xmm12,%xmm12 + vpmuludq %xmm9,%xmm4,%xmm0 + vpmuludq %xmm8,%xmm4,%xmm4 + vpaddq %xmm0,%xmm11,%xmm11 + vmovdqa 96(%rsp),%xmm3 + vpaddq %xmm4,%xmm10,%xmm10 + + vmovdqa 128(%rsp),%xmm4 + vpmuludq %xmm6,%xmm2,%xmm1 + vpmuludq %xmm5,%xmm2,%xmm2 + vpaddq %xmm1,%xmm14,%xmm14 + vpaddq %xmm2,%xmm13,%xmm13 + vpmuludq %xmm9,%xmm3,%xmm0 + vpmuludq %xmm8,%xmm3,%xmm1 + vpaddq %xmm0,%xmm12,%xmm12 + vmovdqu 0(%rsi),%xmm0 + vpaddq %xmm1,%xmm11,%xmm11 + vpmuludq %xmm7,%xmm3,%xmm3 + vpmuludq %xmm7,%xmm4,%xmm7 + vpaddq %xmm3,%xmm10,%xmm10 + + vmovdqu 16(%rsi),%xmm1 + vpaddq %xmm7,%xmm11,%xmm11 + vpmuludq %xmm8,%xmm4,%xmm8 + vpmuludq %xmm9,%xmm4,%xmm9 + vpsrldq $6,%xmm0,%xmm2 + vpaddq %xmm8,%xmm12,%xmm12 + vpaddq %xmm9,%xmm13,%xmm13 + vpsrldq $6,%xmm1,%xmm3 + vpmuludq 112(%rsp),%xmm5,%xmm9 + vpmuludq %xmm6,%xmm4,%xmm5 + vpunpckhqdq %xmm1,%xmm0,%xmm4 + vpaddq %xmm9,%xmm14,%xmm14 + vmovdqa -144(%r11),%xmm9 + vpaddq %xmm5,%xmm10,%xmm10 + + vpunpcklqdq %xmm1,%xmm0,%xmm0 + vpunpcklqdq %xmm3,%xmm2,%xmm3 + + + vpsrldq $5,%xmm4,%xmm4 + vpsrlq $26,%xmm0,%xmm1 + vpand %xmm15,%xmm0,%xmm0 + vpsrlq $4,%xmm3,%xmm2 + vpand %xmm15,%xmm1,%xmm1 + vpand 0(%rcx),%xmm4,%xmm4 + vpsrlq $30,%xmm3,%xmm3 + vpand %xmm15,%xmm2,%xmm2 + vpand %xmm15,%xmm3,%xmm3 + vpor 32(%rcx),%xmm4,%xmm4 + + vpaddq 0(%r11),%xmm0,%xmm0 + vpaddq 16(%r11),%xmm1,%xmm1 + vpaddq 32(%r11),%xmm2,%xmm2 + vpaddq 48(%r11),%xmm3,%xmm3 + vpaddq 64(%r11),%xmm4,%xmm4 + + leaq 32(%rsi),%rax + leaq 64(%rsi),%rsi + subq $64,%rdx + cmovcq %rax,%rsi + + + + + + + + + + + vpmuludq %xmm0,%xmm9,%xmm5 + vpmuludq %xmm1,%xmm9,%xmm6 + vpaddq %xmm5,%xmm10,%xmm10 + vpaddq %xmm6,%xmm11,%xmm11 + vmovdqa -128(%r11),%xmm7 + vpmuludq %xmm2,%xmm9,%xmm5 + vpmuludq %xmm3,%xmm9,%xmm6 + vpaddq %xmm5,%xmm12,%xmm12 + vpaddq %xmm6,%xmm13,%xmm13 + vpmuludq %xmm4,%xmm9,%xmm9 + vpmuludq -112(%r11),%xmm4,%xmm5 + vpaddq %xmm9,%xmm14,%xmm14 + + vpaddq %xmm5,%xmm10,%xmm10 + vpmuludq %xmm2,%xmm7,%xmm6 + vpmuludq %xmm3,%xmm7,%xmm5 + vpaddq %xmm6,%xmm13,%xmm13 + vmovdqa -96(%r11),%xmm8 + vpaddq %xmm5,%xmm14,%xmm14 + vpmuludq %xmm1,%xmm7,%xmm6 + vpmuludq %xmm0,%xmm7,%xmm7 + vpaddq %xmm6,%xmm12,%xmm12 + vpaddq %xmm7,%xmm11,%xmm11 + + vmovdqa -80(%r11),%xmm9 + vpmuludq %xmm2,%xmm8,%xmm5 + vpmuludq %xmm1,%xmm8,%xmm6 + vpaddq %xmm5,%xmm14,%xmm14 + vpaddq %xmm6,%xmm13,%xmm13 + vmovdqa -64(%r11),%xmm7 + vpmuludq %xmm0,%xmm8,%xmm8 + vpmuludq %xmm4,%xmm9,%xmm5 + vpaddq %xmm8,%xmm12,%xmm12 + vpaddq %xmm5,%xmm11,%xmm11 + vmovdqa -48(%r11),%xmm8 + vpmuludq %xmm3,%xmm9,%xmm9 + vpmuludq %xmm1,%xmm7,%xmm6 + vpaddq %xmm9,%xmm10,%xmm10 + + vmovdqa -16(%r11),%xmm9 + vpaddq %xmm6,%xmm14,%xmm14 + vpmuludq %xmm0,%xmm7,%xmm7 + vpmuludq %xmm4,%xmm8,%xmm5 + vpaddq %xmm7,%xmm13,%xmm13 + vpaddq %xmm5,%xmm12,%xmm12 + vmovdqu 32(%rsi),%xmm5 + vpmuludq %xmm3,%xmm8,%xmm7 + vpmuludq %xmm2,%xmm8,%xmm8 + vpaddq %xmm7,%xmm11,%xmm11 + vmovdqu 48(%rsi),%xmm6 + vpaddq %xmm8,%xmm10,%xmm10 + + vpmuludq %xmm2,%xmm9,%xmm2 + vpmuludq %xmm3,%xmm9,%xmm3 + vpsrldq $6,%xmm5,%xmm7 + vpaddq %xmm2,%xmm11,%xmm11 + vpmuludq %xmm4,%xmm9,%xmm4 + vpsrldq $6,%xmm6,%xmm8 + vpaddq %xmm3,%xmm12,%xmm2 + vpaddq %xmm4,%xmm13,%xmm3 + vpmuludq -32(%r11),%xmm0,%xmm4 + vpmuludq %xmm1,%xmm9,%xmm0 + vpunpckhqdq %xmm6,%xmm5,%xmm9 + vpaddq %xmm4,%xmm14,%xmm4 + vpaddq %xmm0,%xmm10,%xmm0 + + vpunpcklqdq %xmm6,%xmm5,%xmm5 + vpunpcklqdq %xmm8,%xmm7,%xmm8 + + + vpsrldq $5,%xmm9,%xmm9 + vpsrlq $26,%xmm5,%xmm6 + vmovdqa 0(%rsp),%xmm14 + vpand %xmm15,%xmm5,%xmm5 + vpsrlq $4,%xmm8,%xmm7 + vpand %xmm15,%xmm6,%xmm6 + vpand 0(%rcx),%xmm9,%xmm9 + vpsrlq $30,%xmm8,%xmm8 + vpand %xmm15,%xmm7,%xmm7 + vpand %xmm15,%xmm8,%xmm8 + vpor 32(%rcx),%xmm9,%xmm9 + + + + + + vpsrlq $26,%xmm3,%xmm13 + vpand %xmm15,%xmm3,%xmm3 + vpaddq %xmm13,%xmm4,%xmm4 + + vpsrlq $26,%xmm0,%xmm10 + vpand %xmm15,%xmm0,%xmm0 + vpaddq %xmm10,%xmm11,%xmm1 + + vpsrlq $26,%xmm4,%xmm10 + vpand %xmm15,%xmm4,%xmm4 + + vpsrlq $26,%xmm1,%xmm11 + vpand %xmm15,%xmm1,%xmm1 + vpaddq %xmm11,%xmm2,%xmm2 + + vpaddq %xmm10,%xmm0,%xmm0 + vpsllq $2,%xmm10,%xmm10 + vpaddq %xmm10,%xmm0,%xmm0 + + vpsrlq $26,%xmm2,%xmm12 + vpand %xmm15,%xmm2,%xmm2 + vpaddq %xmm12,%xmm3,%xmm3 + + vpsrlq $26,%xmm0,%xmm10 + vpand %xmm15,%xmm0,%xmm0 + vpaddq %xmm10,%xmm1,%xmm1 + + vpsrlq $26,%xmm3,%xmm13 + vpand %xmm15,%xmm3,%xmm3 + vpaddq %xmm13,%xmm4,%xmm4 + + ja L$oop_avx + +L$skip_loop_avx: + + + + vpshufd $0x10,%xmm14,%xmm14 + addq $32,%rdx + jnz L$ong_tail_avx + + vpaddq %xmm2,%xmm7,%xmm7 + vpaddq %xmm0,%xmm5,%xmm5 + vpaddq %xmm1,%xmm6,%xmm6 + vpaddq %xmm3,%xmm8,%xmm8 + vpaddq %xmm4,%xmm9,%xmm9 + +L$ong_tail_avx: + vmovdqa %xmm2,32(%r11) + vmovdqa %xmm0,0(%r11) + vmovdqa %xmm1,16(%r11) + vmovdqa %xmm3,48(%r11) + vmovdqa %xmm4,64(%r11) + + + + + + + + vpmuludq %xmm7,%xmm14,%xmm12 + vpmuludq %xmm5,%xmm14,%xmm10 + vpshufd $0x10,-48(%rdi),%xmm2 + vpmuludq %xmm6,%xmm14,%xmm11 + vpmuludq %xmm8,%xmm14,%xmm13 + vpmuludq %xmm9,%xmm14,%xmm14 + + vpmuludq %xmm8,%xmm2,%xmm0 + vpaddq %xmm0,%xmm14,%xmm14 + vpshufd $0x10,-32(%rdi),%xmm3 + vpmuludq %xmm7,%xmm2,%xmm1 + vpaddq %xmm1,%xmm13,%xmm13 + vpshufd $0x10,-16(%rdi),%xmm4 + vpmuludq %xmm6,%xmm2,%xmm0 + vpaddq %xmm0,%xmm12,%xmm12 + vpmuludq %xmm5,%xmm2,%xmm2 + vpaddq %xmm2,%xmm11,%xmm11 + vpmuludq %xmm9,%xmm3,%xmm3 + vpaddq %xmm3,%xmm10,%xmm10 + + vpshufd $0x10,0(%rdi),%xmm2 + vpmuludq %xmm7,%xmm4,%xmm1 + vpaddq %xmm1,%xmm14,%xmm14 + vpmuludq %xmm6,%xmm4,%xmm0 + vpaddq %xmm0,%xmm13,%xmm13 + vpshufd $0x10,16(%rdi),%xmm3 + vpmuludq %xmm5,%xmm4,%xmm4 + vpaddq %xmm4,%xmm12,%xmm12 + vpmuludq %xmm9,%xmm2,%xmm1 + vpaddq %xmm1,%xmm11,%xmm11 + vpshufd $0x10,32(%rdi),%xmm4 + vpmuludq %xmm8,%xmm2,%xmm2 + vpaddq %xmm2,%xmm10,%xmm10 + + vpmuludq %xmm6,%xmm3,%xmm0 + vpaddq %xmm0,%xmm14,%xmm14 + vpmuludq %xmm5,%xmm3,%xmm3 + vpaddq %xmm3,%xmm13,%xmm13 + vpshufd $0x10,48(%rdi),%xmm2 + vpmuludq %xmm9,%xmm4,%xmm1 + vpaddq %xmm1,%xmm12,%xmm12 + vpshufd $0x10,64(%rdi),%xmm3 + vpmuludq %xmm8,%xmm4,%xmm0 + vpaddq %xmm0,%xmm11,%xmm11 + vpmuludq %xmm7,%xmm4,%xmm4 + vpaddq %xmm4,%xmm10,%xmm10 + + vpmuludq %xmm5,%xmm2,%xmm2 + vpaddq %xmm2,%xmm14,%xmm14 + vpmuludq %xmm9,%xmm3,%xmm1 + vpaddq %xmm1,%xmm13,%xmm13 + vpmuludq %xmm8,%xmm3,%xmm0 + vpaddq %xmm0,%xmm12,%xmm12 + vpmuludq %xmm7,%xmm3,%xmm1 + vpaddq %xmm1,%xmm11,%xmm11 + vpmuludq %xmm6,%xmm3,%xmm3 + vpaddq %xmm3,%xmm10,%xmm10 + + jz L$short_tail_avx + + vmovdqu 0(%rsi),%xmm0 + vmovdqu 16(%rsi),%xmm1 + + vpsrldq $6,%xmm0,%xmm2 + vpsrldq $6,%xmm1,%xmm3 + vpunpckhqdq %xmm1,%xmm0,%xmm4 + vpunpcklqdq %xmm1,%xmm0,%xmm0 + vpunpcklqdq %xmm3,%xmm2,%xmm3 + + vpsrlq $40,%xmm4,%xmm4 + vpsrlq $26,%xmm0,%xmm1 + vpand %xmm15,%xmm0,%xmm0 + vpsrlq $4,%xmm3,%xmm2 + vpand %xmm15,%xmm1,%xmm1 + vpsrlq $30,%xmm3,%xmm3 + vpand %xmm15,%xmm2,%xmm2 + vpand %xmm15,%xmm3,%xmm3 + vpor 32(%rcx),%xmm4,%xmm4 + + vpshufd $0x32,-64(%rdi),%xmm9 + vpaddq 0(%r11),%xmm0,%xmm0 + vpaddq 16(%r11),%xmm1,%xmm1 + vpaddq 32(%r11),%xmm2,%xmm2 + vpaddq 48(%r11),%xmm3,%xmm3 + vpaddq 64(%r11),%xmm4,%xmm4 + + + + + vpmuludq %xmm0,%xmm9,%xmm5 + vpaddq %xmm5,%xmm10,%xmm10 + vpmuludq %xmm1,%xmm9,%xmm6 + vpaddq %xmm6,%xmm11,%xmm11 + vpmuludq %xmm2,%xmm9,%xmm5 + vpaddq %xmm5,%xmm12,%xmm12 + vpshufd $0x32,-48(%rdi),%xmm7 + vpmuludq %xmm3,%xmm9,%xmm6 + vpaddq %xmm6,%xmm13,%xmm13 + vpmuludq %xmm4,%xmm9,%xmm9 + vpaddq %xmm9,%xmm14,%xmm14 + + vpmuludq %xmm3,%xmm7,%xmm5 + vpaddq %xmm5,%xmm14,%xmm14 + vpshufd $0x32,-32(%rdi),%xmm8 + vpmuludq %xmm2,%xmm7,%xmm6 + vpaddq %xmm6,%xmm13,%xmm13 + vpshufd $0x32,-16(%rdi),%xmm9 + vpmuludq %xmm1,%xmm7,%xmm5 + vpaddq %xmm5,%xmm12,%xmm12 + vpmuludq %xmm0,%xmm7,%xmm7 + vpaddq %xmm7,%xmm11,%xmm11 + vpmuludq %xmm4,%xmm8,%xmm8 + vpaddq %xmm8,%xmm10,%xmm10 + + vpshufd $0x32,0(%rdi),%xmm7 + vpmuludq %xmm2,%xmm9,%xmm6 + vpaddq %xmm6,%xmm14,%xmm14 + vpmuludq %xmm1,%xmm9,%xmm5 + vpaddq %xmm5,%xmm13,%xmm13 + vpshufd $0x32,16(%rdi),%xmm8 + vpmuludq %xmm0,%xmm9,%xmm9 + vpaddq %xmm9,%xmm12,%xmm12 + vpmuludq %xmm4,%xmm7,%xmm6 + vpaddq %xmm6,%xmm11,%xmm11 + vpshufd $0x32,32(%rdi),%xmm9 + vpmuludq %xmm3,%xmm7,%xmm7 + vpaddq %xmm7,%xmm10,%xmm10 + + vpmuludq %xmm1,%xmm8,%xmm5 + vpaddq %xmm5,%xmm14,%xmm14 + vpmuludq %xmm0,%xmm8,%xmm8 + vpaddq %xmm8,%xmm13,%xmm13 + vpshufd $0x32,48(%rdi),%xmm7 + vpmuludq %xmm4,%xmm9,%xmm6 + vpaddq %xmm6,%xmm12,%xmm12 + vpshufd $0x32,64(%rdi),%xmm8 + vpmuludq %xmm3,%xmm9,%xmm5 + vpaddq %xmm5,%xmm11,%xmm11 + vpmuludq %xmm2,%xmm9,%xmm9 + vpaddq %xmm9,%xmm10,%xmm10 + + vpmuludq %xmm0,%xmm7,%xmm7 + vpaddq %xmm7,%xmm14,%xmm14 + vpmuludq %xmm4,%xmm8,%xmm6 + vpaddq %xmm6,%xmm13,%xmm13 + vpmuludq %xmm3,%xmm8,%xmm5 + vpaddq %xmm5,%xmm12,%xmm12 + vpmuludq %xmm2,%xmm8,%xmm6 + vpaddq %xmm6,%xmm11,%xmm11 + vpmuludq %xmm1,%xmm8,%xmm8 + vpaddq %xmm8,%xmm10,%xmm10 + +L$short_tail_avx: + + + + vpsrldq $8,%xmm14,%xmm9 + vpsrldq $8,%xmm13,%xmm8 + vpsrldq $8,%xmm11,%xmm6 + vpsrldq $8,%xmm10,%xmm5 + vpsrldq $8,%xmm12,%xmm7 + vpaddq %xmm8,%xmm13,%xmm13 + vpaddq %xmm9,%xmm14,%xmm14 + vpaddq %xmm5,%xmm10,%xmm10 + vpaddq %xmm6,%xmm11,%xmm11 + vpaddq %xmm7,%xmm12,%xmm12 + + + + + vpsrlq $26,%xmm13,%xmm3 + vpand %xmm15,%xmm13,%xmm13 + vpaddq %xmm3,%xmm14,%xmm14 + + vpsrlq $26,%xmm10,%xmm0 + vpand %xmm15,%xmm10,%xmm10 + vpaddq %xmm0,%xmm11,%xmm11 + + vpsrlq $26,%xmm14,%xmm4 + vpand %xmm15,%xmm14,%xmm14 + + vpsrlq $26,%xmm11,%xmm1 + vpand %xmm15,%xmm11,%xmm11 + vpaddq %xmm1,%xmm12,%xmm12 + + vpaddq %xmm4,%xmm10,%xmm10 + vpsllq $2,%xmm4,%xmm4 + vpaddq %xmm4,%xmm10,%xmm10 + + vpsrlq $26,%xmm12,%xmm2 + vpand %xmm15,%xmm12,%xmm12 + vpaddq %xmm2,%xmm13,%xmm13 + + vpsrlq $26,%xmm10,%xmm0 + vpand %xmm15,%xmm10,%xmm10 + vpaddq %xmm0,%xmm11,%xmm11 + + vpsrlq $26,%xmm13,%xmm3 + vpand %xmm15,%xmm13,%xmm13 + vpaddq %xmm3,%xmm14,%xmm14 + + vmovd %xmm10,-112(%rdi) + vmovd %xmm11,-108(%rdi) + vmovd %xmm12,-104(%rdi) + vmovd %xmm13,-100(%rdi) + vmovd %xmm14,-96(%rdi) + leaq 88(%r11),%rsp + + vzeroupper + .byte 0xf3,0xc3 + + + + +.p2align 5 +poly1305_emit_avx: + + cmpl $0,20(%rdi) + je L$emit + + movl 0(%rdi),%eax + movl 4(%rdi),%ecx + movl 8(%rdi),%r8d + movl 12(%rdi),%r11d + movl 16(%rdi),%r10d + + shlq $26,%rcx + movq %r8,%r9 + shlq $52,%r8 + addq %rcx,%rax + shrq $12,%r9 + addq %rax,%r8 + adcq $0,%r9 + + shlq $14,%r11 + movq %r10,%rax + shrq $24,%r10 + addq %r11,%r9 + shlq $40,%rax + addq %rax,%r9 + adcq $0,%r10 + + movq %r10,%rax + movq %r10,%rcx + andq $3,%r10 + shrq $2,%rax + andq $-4,%rcx + addq %rcx,%rax + addq %rax,%r8 + adcq $0,%r9 + adcq $0,%r10 + + movq %r8,%rax + addq $5,%r8 + movq %r9,%rcx + adcq $0,%r9 + adcq $0,%r10 + shrq $2,%r10 + cmovnzq %r8,%rax + cmovnzq %r9,%rcx + + addq 0(%rdx),%rax + adcq 8(%rdx),%rcx + movq %rax,0(%rsi) + movq %rcx,8(%rsi) + + .byte 0xf3,0xc3 + + + +.p2align 5 +poly1305_blocks_avx2: + + movl 20(%rdi),%r8d + cmpq $128,%rdx + jae L$blocks_avx2 + testl %r8d,%r8d + jz L$blocks + +L$blocks_avx2: + andq $-16,%rdx + jz L$no_data_avx2 + + vzeroupper + + testl %r8d,%r8d + jz L$base2_64_avx2 + + testq $63,%rdx + jz L$even_avx2 + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$blocks_avx2_body: + + movq %rdx,%r15 + + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movl 16(%rdi),%ebp + + movq 24(%rdi),%r11 + movq 32(%rdi),%r13 + + + movl %r8d,%r14d + andq $-2147483648,%r8 + movq %r9,%r12 + movl %r9d,%ebx + andq $-2147483648,%r9 + + shrq $6,%r8 + shlq $52,%r12 + addq %r8,%r14 + shrq $12,%rbx + shrq $18,%r9 + addq %r12,%r14 + adcq %r9,%rbx + + movq %rbp,%r8 + shlq $40,%r8 + shrq $24,%rbp + addq %r8,%rbx + adcq $0,%rbp + + movq $-4,%r9 + movq %rbp,%r8 + andq %rbp,%r9 + shrq $2,%r8 + andq $3,%rbp + addq %r9,%r8 + addq %r8,%r14 + adcq $0,%rbx + adcq $0,%rbp + + movq %r13,%r12 + movq %r13,%rax + shrq $2,%r13 + addq %r12,%r13 + +L$base2_26_pre_avx2: + addq 0(%rsi),%r14 + adcq 8(%rsi),%rbx + leaq 16(%rsi),%rsi + adcq %rcx,%rbp + subq $16,%r15 + + call __poly1305_block + movq %r12,%rax + + testq $63,%r15 + jnz L$base2_26_pre_avx2 + + testq %rcx,%rcx + jz L$store_base2_64_avx2 + + + movq %r14,%rax + movq %r14,%rdx + shrq $52,%r14 + movq %rbx,%r11 + movq %rbx,%r12 + shrq $26,%rdx + andq $0x3ffffff,%rax + shlq $12,%r11 + andq $0x3ffffff,%rdx + shrq $14,%rbx + orq %r11,%r14 + shlq $24,%rbp + andq $0x3ffffff,%r14 + shrq $40,%r12 + andq $0x3ffffff,%rbx + orq %r12,%rbp + + testq %r15,%r15 + jz L$store_base2_26_avx2 + + vmovd %eax,%xmm0 + vmovd %edx,%xmm1 + vmovd %r14d,%xmm2 + vmovd %ebx,%xmm3 + vmovd %ebp,%xmm4 + jmp L$proceed_avx2 + +.p2align 5 +L$store_base2_64_avx2: + movq %r14,0(%rdi) + movq %rbx,8(%rdi) + movq %rbp,16(%rdi) + jmp L$done_avx2 + +.p2align 4 +L$store_base2_26_avx2: + movl %eax,0(%rdi) + movl %edx,4(%rdi) + movl %r14d,8(%rdi) + movl %ebx,12(%rdi) + movl %ebp,16(%rdi) +.p2align 4 +L$done_avx2: + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbp + + movq 40(%rsp),%rbx + + leaq 48(%rsp),%rsp + +L$no_data_avx2: +L$blocks_avx2_epilogue: + .byte 0xf3,0xc3 + + +.p2align 5 +L$base2_64_avx2: + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$base2_64_avx2_body: + + movq %rdx,%r15 + + movq 24(%rdi),%r11 + movq 32(%rdi),%r13 + + movq 0(%rdi),%r14 + movq 8(%rdi),%rbx + movl 16(%rdi),%ebp + + movq %r13,%r12 + movq %r13,%rax + shrq $2,%r13 + addq %r12,%r13 + + testq $63,%rdx + jz L$init_avx2 + +L$base2_64_pre_avx2: + addq 0(%rsi),%r14 + adcq 8(%rsi),%rbx + leaq 16(%rsi),%rsi + adcq %rcx,%rbp + subq $16,%r15 + + call __poly1305_block + movq %r12,%rax + + testq $63,%r15 + jnz L$base2_64_pre_avx2 + +L$init_avx2: + + movq %r14,%rax + movq %r14,%rdx + shrq $52,%r14 + movq %rbx,%r8 + movq %rbx,%r9 + shrq $26,%rdx + andq $0x3ffffff,%rax + shlq $12,%r8 + andq $0x3ffffff,%rdx + shrq $14,%rbx + orq %r8,%r14 + shlq $24,%rbp + andq $0x3ffffff,%r14 + shrq $40,%r9 + andq $0x3ffffff,%rbx + orq %r9,%rbp + + vmovd %eax,%xmm0 + vmovd %edx,%xmm1 + vmovd %r14d,%xmm2 + vmovd %ebx,%xmm3 + vmovd %ebp,%xmm4 + movl $1,20(%rdi) + + call __poly1305_init_avx + +L$proceed_avx2: + movq %r15,%rdx + movl _OPENSSL_ia32cap_P+8(%rip),%r10d + movl $3221291008,%r11d + + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbp + + movq 40(%rsp),%rbx + + leaq 48(%rsp),%rax + leaq 48(%rsp),%rsp + +L$base2_64_avx2_epilogue: + jmp L$do_avx2 + + +.p2align 5 +L$even_avx2: + + movl _OPENSSL_ia32cap_P+8(%rip),%r10d + vmovd 0(%rdi),%xmm0 + vmovd 4(%rdi),%xmm1 + vmovd 8(%rdi),%xmm2 + vmovd 12(%rdi),%xmm3 + vmovd 16(%rdi),%xmm4 + +L$do_avx2: + leaq -8(%rsp),%r11 + + subq $0x128,%rsp + leaq L$const(%rip),%rcx + leaq 48+64(%rdi),%rdi + vmovdqa 96(%rcx),%ymm7 + + + vmovdqu -64(%rdi),%xmm9 + andq $-512,%rsp + vmovdqu -48(%rdi),%xmm10 + vmovdqu -32(%rdi),%xmm6 + vmovdqu -16(%rdi),%xmm11 + vmovdqu 0(%rdi),%xmm12 + vmovdqu 16(%rdi),%xmm13 + leaq 144(%rsp),%rax + vmovdqu 32(%rdi),%xmm14 + vpermd %ymm9,%ymm7,%ymm9 + vmovdqu 48(%rdi),%xmm15 + vpermd %ymm10,%ymm7,%ymm10 + vmovdqu 64(%rdi),%xmm5 + vpermd %ymm6,%ymm7,%ymm6 + vmovdqa %ymm9,0(%rsp) + vpermd %ymm11,%ymm7,%ymm11 + vmovdqa %ymm10,32-144(%rax) + vpermd %ymm12,%ymm7,%ymm12 + vmovdqa %ymm6,64-144(%rax) + vpermd %ymm13,%ymm7,%ymm13 + vmovdqa %ymm11,96-144(%rax) + vpermd %ymm14,%ymm7,%ymm14 + vmovdqa %ymm12,128-144(%rax) + vpermd %ymm15,%ymm7,%ymm15 + vmovdqa %ymm13,160-144(%rax) + vpermd %ymm5,%ymm7,%ymm5 + vmovdqa %ymm14,192-144(%rax) + vmovdqa %ymm15,224-144(%rax) + vmovdqa %ymm5,256-144(%rax) + vmovdqa 64(%rcx),%ymm5 + + + + vmovdqu 0(%rsi),%xmm7 + vmovdqu 16(%rsi),%xmm8 + vinserti128 $1,32(%rsi),%ymm7,%ymm7 + vinserti128 $1,48(%rsi),%ymm8,%ymm8 + leaq 64(%rsi),%rsi + + vpsrldq $6,%ymm7,%ymm9 + vpsrldq $6,%ymm8,%ymm10 + vpunpckhqdq %ymm8,%ymm7,%ymm6 + vpunpcklqdq %ymm10,%ymm9,%ymm9 + vpunpcklqdq %ymm8,%ymm7,%ymm7 + + vpsrlq $30,%ymm9,%ymm10 + vpsrlq $4,%ymm9,%ymm9 + vpsrlq $26,%ymm7,%ymm8 + vpsrlq $40,%ymm6,%ymm6 + vpand %ymm5,%ymm9,%ymm9 + vpand %ymm5,%ymm7,%ymm7 + vpand %ymm5,%ymm8,%ymm8 + vpand %ymm5,%ymm10,%ymm10 + vpor 32(%rcx),%ymm6,%ymm6 + + vpaddq %ymm2,%ymm9,%ymm2 + subq $64,%rdx + jz L$tail_avx2 + jmp L$oop_avx2 + +.p2align 5 +L$oop_avx2: + + + + + + + + + vpaddq %ymm0,%ymm7,%ymm0 + vmovdqa 0(%rsp),%ymm7 + vpaddq %ymm1,%ymm8,%ymm1 + vmovdqa 32(%rsp),%ymm8 + vpaddq %ymm3,%ymm10,%ymm3 + vmovdqa 96(%rsp),%ymm9 + vpaddq %ymm4,%ymm6,%ymm4 + vmovdqa 48(%rax),%ymm10 + vmovdqa 112(%rax),%ymm5 + + + + + + + + + + + + + + + + + vpmuludq %ymm2,%ymm7,%ymm13 + vpmuludq %ymm2,%ymm8,%ymm14 + vpmuludq %ymm2,%ymm9,%ymm15 + vpmuludq %ymm2,%ymm10,%ymm11 + vpmuludq %ymm2,%ymm5,%ymm12 + + vpmuludq %ymm0,%ymm8,%ymm6 + vpmuludq %ymm1,%ymm8,%ymm2 + vpaddq %ymm6,%ymm12,%ymm12 + vpaddq %ymm2,%ymm13,%ymm13 + vpmuludq %ymm3,%ymm8,%ymm6 + vpmuludq 64(%rsp),%ymm4,%ymm2 + vpaddq %ymm6,%ymm15,%ymm15 + vpaddq %ymm2,%ymm11,%ymm11 + vmovdqa -16(%rax),%ymm8 + + vpmuludq %ymm0,%ymm7,%ymm6 + vpmuludq %ymm1,%ymm7,%ymm2 + vpaddq %ymm6,%ymm11,%ymm11 + vpaddq %ymm2,%ymm12,%ymm12 + vpmuludq %ymm3,%ymm7,%ymm6 + vpmuludq %ymm4,%ymm7,%ymm2 + vmovdqu 0(%rsi),%xmm7 + vpaddq %ymm6,%ymm14,%ymm14 + vpaddq %ymm2,%ymm15,%ymm15 + vinserti128 $1,32(%rsi),%ymm7,%ymm7 + + vpmuludq %ymm3,%ymm8,%ymm6 + vpmuludq %ymm4,%ymm8,%ymm2 + vmovdqu 16(%rsi),%xmm8 + vpaddq %ymm6,%ymm11,%ymm11 + vpaddq %ymm2,%ymm12,%ymm12 + vmovdqa 16(%rax),%ymm2 + vpmuludq %ymm1,%ymm9,%ymm6 + vpmuludq %ymm0,%ymm9,%ymm9 + vpaddq %ymm6,%ymm14,%ymm14 + vpaddq %ymm9,%ymm13,%ymm13 + vinserti128 $1,48(%rsi),%ymm8,%ymm8 + leaq 64(%rsi),%rsi + + vpmuludq %ymm1,%ymm2,%ymm6 + vpmuludq %ymm0,%ymm2,%ymm2 + vpsrldq $6,%ymm7,%ymm9 + vpaddq %ymm6,%ymm15,%ymm15 + vpaddq %ymm2,%ymm14,%ymm14 + vpmuludq %ymm3,%ymm10,%ymm6 + vpmuludq %ymm4,%ymm10,%ymm2 + vpsrldq $6,%ymm8,%ymm10 + vpaddq %ymm6,%ymm12,%ymm12 + vpaddq %ymm2,%ymm13,%ymm13 + vpunpckhqdq %ymm8,%ymm7,%ymm6 + + vpmuludq %ymm3,%ymm5,%ymm3 + vpmuludq %ymm4,%ymm5,%ymm4 + vpunpcklqdq %ymm8,%ymm7,%ymm7 + vpaddq %ymm3,%ymm13,%ymm2 + vpaddq %ymm4,%ymm14,%ymm3 + vpunpcklqdq %ymm10,%ymm9,%ymm10 + vpmuludq 80(%rax),%ymm0,%ymm4 + vpmuludq %ymm1,%ymm5,%ymm0 + vmovdqa 64(%rcx),%ymm5 + vpaddq %ymm4,%ymm15,%ymm4 + vpaddq %ymm0,%ymm11,%ymm0 + + + + + vpsrlq $26,%ymm3,%ymm14 + vpand %ymm5,%ymm3,%ymm3 + vpaddq %ymm14,%ymm4,%ymm4 + + vpsrlq $26,%ymm0,%ymm11 + vpand %ymm5,%ymm0,%ymm0 + vpaddq %ymm11,%ymm12,%ymm1 + + vpsrlq $26,%ymm4,%ymm15 + vpand %ymm5,%ymm4,%ymm4 + + vpsrlq $4,%ymm10,%ymm9 + + vpsrlq $26,%ymm1,%ymm12 + vpand %ymm5,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $2,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + + vpand %ymm5,%ymm9,%ymm9 + vpsrlq $26,%ymm7,%ymm8 + + vpsrlq $26,%ymm2,%ymm13 + vpand %ymm5,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + + vpaddq %ymm9,%ymm2,%ymm2 + vpsrlq $30,%ymm10,%ymm10 + + vpsrlq $26,%ymm0,%ymm11 + vpand %ymm5,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + + vpsrlq $40,%ymm6,%ymm6 + + vpsrlq $26,%ymm3,%ymm14 + vpand %ymm5,%ymm3,%ymm3 + vpaddq %ymm14,%ymm4,%ymm4 + + vpand %ymm5,%ymm7,%ymm7 + vpand %ymm5,%ymm8,%ymm8 + vpand %ymm5,%ymm10,%ymm10 + vpor 32(%rcx),%ymm6,%ymm6 + + subq $64,%rdx + jnz L$oop_avx2 + +.byte 0x66,0x90 +L$tail_avx2: + + + + + + + + vpaddq %ymm0,%ymm7,%ymm0 + vmovdqu 4(%rsp),%ymm7 + vpaddq %ymm1,%ymm8,%ymm1 + vmovdqu 36(%rsp),%ymm8 + vpaddq %ymm3,%ymm10,%ymm3 + vmovdqu 100(%rsp),%ymm9 + vpaddq %ymm4,%ymm6,%ymm4 + vmovdqu 52(%rax),%ymm10 + vmovdqu 116(%rax),%ymm5 + + vpmuludq %ymm2,%ymm7,%ymm13 + vpmuludq %ymm2,%ymm8,%ymm14 + vpmuludq %ymm2,%ymm9,%ymm15 + vpmuludq %ymm2,%ymm10,%ymm11 + vpmuludq %ymm2,%ymm5,%ymm12 + + vpmuludq %ymm0,%ymm8,%ymm6 + vpmuludq %ymm1,%ymm8,%ymm2 + vpaddq %ymm6,%ymm12,%ymm12 + vpaddq %ymm2,%ymm13,%ymm13 + vpmuludq %ymm3,%ymm8,%ymm6 + vpmuludq 68(%rsp),%ymm4,%ymm2 + vpaddq %ymm6,%ymm15,%ymm15 + vpaddq %ymm2,%ymm11,%ymm11 + + vpmuludq %ymm0,%ymm7,%ymm6 + vpmuludq %ymm1,%ymm7,%ymm2 + vpaddq %ymm6,%ymm11,%ymm11 + vmovdqu -12(%rax),%ymm8 + vpaddq %ymm2,%ymm12,%ymm12 + vpmuludq %ymm3,%ymm7,%ymm6 + vpmuludq %ymm4,%ymm7,%ymm2 + vpaddq %ymm6,%ymm14,%ymm14 + vpaddq %ymm2,%ymm15,%ymm15 + + vpmuludq %ymm3,%ymm8,%ymm6 + vpmuludq %ymm4,%ymm8,%ymm2 + vpaddq %ymm6,%ymm11,%ymm11 + vpaddq %ymm2,%ymm12,%ymm12 + vmovdqu 20(%rax),%ymm2 + vpmuludq %ymm1,%ymm9,%ymm6 + vpmuludq %ymm0,%ymm9,%ymm9 + vpaddq %ymm6,%ymm14,%ymm14 + vpaddq %ymm9,%ymm13,%ymm13 + + vpmuludq %ymm1,%ymm2,%ymm6 + vpmuludq %ymm0,%ymm2,%ymm2 + vpaddq %ymm6,%ymm15,%ymm15 + vpaddq %ymm2,%ymm14,%ymm14 + vpmuludq %ymm3,%ymm10,%ymm6 + vpmuludq %ymm4,%ymm10,%ymm2 + vpaddq %ymm6,%ymm12,%ymm12 + vpaddq %ymm2,%ymm13,%ymm13 + + vpmuludq %ymm3,%ymm5,%ymm3 + vpmuludq %ymm4,%ymm5,%ymm4 + vpaddq %ymm3,%ymm13,%ymm2 + vpaddq %ymm4,%ymm14,%ymm3 + vpmuludq 84(%rax),%ymm0,%ymm4 + vpmuludq %ymm1,%ymm5,%ymm0 + vmovdqa 64(%rcx),%ymm5 + vpaddq %ymm4,%ymm15,%ymm4 + vpaddq %ymm0,%ymm11,%ymm0 + + + + + vpsrldq $8,%ymm12,%ymm8 + vpsrldq $8,%ymm2,%ymm9 + vpsrldq $8,%ymm3,%ymm10 + vpsrldq $8,%ymm4,%ymm6 + vpsrldq $8,%ymm0,%ymm7 + vpaddq %ymm8,%ymm12,%ymm12 + vpaddq %ymm9,%ymm2,%ymm2 + vpaddq %ymm10,%ymm3,%ymm3 + vpaddq %ymm6,%ymm4,%ymm4 + vpaddq %ymm7,%ymm0,%ymm0 + + vpermq $0x2,%ymm3,%ymm10 + vpermq $0x2,%ymm4,%ymm6 + vpermq $0x2,%ymm0,%ymm7 + vpermq $0x2,%ymm12,%ymm8 + vpermq $0x2,%ymm2,%ymm9 + vpaddq %ymm10,%ymm3,%ymm3 + vpaddq %ymm6,%ymm4,%ymm4 + vpaddq %ymm7,%ymm0,%ymm0 + vpaddq %ymm8,%ymm12,%ymm12 + vpaddq %ymm9,%ymm2,%ymm2 + + + + + vpsrlq $26,%ymm3,%ymm14 + vpand %ymm5,%ymm3,%ymm3 + vpaddq %ymm14,%ymm4,%ymm4 + + vpsrlq $26,%ymm0,%ymm11 + vpand %ymm5,%ymm0,%ymm0 + vpaddq %ymm11,%ymm12,%ymm1 + + vpsrlq $26,%ymm4,%ymm15 + vpand %ymm5,%ymm4,%ymm4 + + vpsrlq $26,%ymm1,%ymm12 + vpand %ymm5,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $2,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + + vpsrlq $26,%ymm2,%ymm13 + vpand %ymm5,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + + vpsrlq $26,%ymm0,%ymm11 + vpand %ymm5,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + + vpsrlq $26,%ymm3,%ymm14 + vpand %ymm5,%ymm3,%ymm3 + vpaddq %ymm14,%ymm4,%ymm4 + + vmovd %xmm0,-112(%rdi) + vmovd %xmm1,-108(%rdi) + vmovd %xmm2,-104(%rdi) + vmovd %xmm3,-100(%rdi) + vmovd %xmm4,-96(%rdi) + leaq 8(%r11),%rsp + + vzeroupper + .byte 0xf3,0xc3 + + +.p2align 6 +L$const: +L$mask24: +.long 0x0ffffff,0,0x0ffffff,0,0x0ffffff,0,0x0ffffff,0 +L$129: +.long 16777216,0,16777216,0,16777216,0,16777216,0 +L$mask26: +.long 0x3ffffff,0,0x3ffffff,0,0x3ffffff,0,0x3ffffff,0 +L$permd_avx2: +.long 2,2,2,3,2,0,2,1 +L$permd_avx512: +.long 0,0,0,1, 0,2,0,3, 0,4,0,5, 0,6,0,7 + +L$2_44_inp_permd: +.long 0,1,1,2,2,3,7,7 +L$2_44_inp_shift: +.quad 0,12,24,64 +L$2_44_mask: +.quad 0xfffffffffff,0xfffffffffff,0x3ffffffffff,0xffffffffffffffff +L$2_44_shift_rgt: +.quad 44,44,42,64 +L$2_44_shift_lft: +.quad 8,8,10,64 + +.p2align 6 +L$x_mask44: +.quad 0xfffffffffff,0xfffffffffff,0xfffffffffff,0xfffffffffff +.quad 0xfffffffffff,0xfffffffffff,0xfffffffffff,0xfffffffffff +L$x_mask42: +.quad 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff +.quad 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff +.byte 80,111,108,121,49,51,48,53,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.p2align 4 +.globl _xor128_encrypt_n_pad + +.p2align 4 +_xor128_encrypt_n_pad: + + subq %rdx,%rsi + subq %rdx,%rdi + movq %rcx,%r10 + shrq $4,%rcx + jz L$tail_enc + nop +L$oop_enc_xmm: + movdqu (%rsi,%rdx,1),%xmm0 + pxor (%rdx),%xmm0 + movdqu %xmm0,(%rdi,%rdx,1) + movdqa %xmm0,(%rdx) + leaq 16(%rdx),%rdx + decq %rcx + jnz L$oop_enc_xmm + + andq $15,%r10 + jz L$done_enc + +L$tail_enc: + movq $16,%rcx + subq %r10,%rcx + xorl %eax,%eax +L$oop_enc_byte: + movb (%rsi,%rdx,1),%al + xorb (%rdx),%al + movb %al,(%rdi,%rdx,1) + movb %al,(%rdx) + leaq 1(%rdx),%rdx + decq %r10 + jnz L$oop_enc_byte + + xorl %eax,%eax +L$oop_enc_pad: + movb %al,(%rdx) + leaq 1(%rdx),%rdx + decq %rcx + jnz L$oop_enc_pad + +L$done_enc: + movq %rdx,%rax + .byte 0xf3,0xc3 + + + +.globl _xor128_decrypt_n_pad + +.p2align 4 +_xor128_decrypt_n_pad: + + subq %rdx,%rsi + subq %rdx,%rdi + movq %rcx,%r10 + shrq $4,%rcx + jz L$tail_dec + nop +L$oop_dec_xmm: + movdqu (%rsi,%rdx,1),%xmm0 + movdqa (%rdx),%xmm1 + pxor %xmm0,%xmm1 + movdqu %xmm1,(%rdi,%rdx,1) + movdqa %xmm0,(%rdx) + leaq 16(%rdx),%rdx + decq %rcx + jnz L$oop_dec_xmm + + pxor %xmm1,%xmm1 + andq $15,%r10 + jz L$done_dec + +L$tail_dec: + movq $16,%rcx + subq %r10,%rcx + xorl %eax,%eax + xorq %r11,%r11 +L$oop_dec_byte: + movb (%rsi,%rdx,1),%r11b + movb (%rdx),%al + xorb %r11b,%al + movb %al,(%rdi,%rdx,1) + movb %r11b,(%rdx) + leaq 1(%rdx),%rdx + decq %r10 + jnz L$oop_dec_byte + + xorl %eax,%eax +L$oop_dec_pad: + movb %al,(%rdx) + leaq 1(%rdx),%rdx + decq %rcx + jnz L$oop_dec_pad + +L$done_dec: + movq %rdx,%rax + .byte 0xf3,0xc3 + + diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/rc4/rc4-md5-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/rc4/rc4-md5-x86_64.s new file mode 100644 index 0000000..435976a --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/rc4/rc4-md5-x86_64.s @@ -0,0 +1,1275 @@ +.text +.p2align 4 + +.globl _rc4_md5_enc + +_rc4_md5_enc: + + cmpq $0,%r9 + je L$abort + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $40,%rsp + +L$body: + movq %rcx,%r11 + movq %r9,%r12 + movq %rsi,%r13 + movq %rdx,%r14 + movq %r8,%r15 + xorq %rbp,%rbp + xorq %rcx,%rcx + + leaq 8(%rdi),%rdi + movb -8(%rdi),%bpl + movb -4(%rdi),%cl + + incb %bpl + subq %r13,%r14 + movl (%rdi,%rbp,4),%eax + addb %al,%cl + leaq (%rdi,%rbp,4),%rsi + shlq $6,%r12 + addq %r15,%r12 + movq %r12,16(%rsp) + + movq %r11,24(%rsp) + movl 0(%r11),%r8d + movl 4(%r11),%r9d + movl 8(%r11),%r10d + movl 12(%r11),%r11d + jmp L$oop + +.p2align 4 +L$oop: + movl %r8d,0(%rsp) + movl %r9d,4(%rsp) + movl %r10d,8(%rsp) + movl %r11d,%r12d + movl %r11d,12(%rsp) + pxor %xmm0,%xmm0 + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 0(%r15),%r8d + addb %dl,%al + movl 4(%rsi),%ebx + addl $3614090360,%r8d + xorl %r11d,%r12d + movzbl %al,%eax + movl %edx,0(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $7,%r8d + movl %r10d,%r12d + movd (%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + pxor %xmm1,%xmm1 + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 4(%r15),%r11d + addb %dl,%bl + movl 8(%rsi),%eax + addl $3905402710,%r11d + xorl %r10d,%r12d + movzbl %bl,%ebx + movl %edx,4(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $12,%r11d + movl %r9d,%r12d + movd (%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 8(%r15),%r10d + addb %dl,%al + movl 12(%rsi),%ebx + addl $606105819,%r10d + xorl %r9d,%r12d + movzbl %al,%eax + movl %edx,8(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $17,%r10d + movl %r8d,%r12d + pinsrw $1,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 12(%r15),%r9d + addb %dl,%bl + movl 16(%rsi),%eax + addl $3250441966,%r9d + xorl %r8d,%r12d + movzbl %bl,%ebx + movl %edx,12(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $22,%r9d + movl %r11d,%r12d + pinsrw $1,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 16(%r15),%r8d + addb %dl,%al + movl 20(%rsi),%ebx + addl $4118548399,%r8d + xorl %r11d,%r12d + movzbl %al,%eax + movl %edx,16(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $7,%r8d + movl %r10d,%r12d + pinsrw $2,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 20(%r15),%r11d + addb %dl,%bl + movl 24(%rsi),%eax + addl $1200080426,%r11d + xorl %r10d,%r12d + movzbl %bl,%ebx + movl %edx,20(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $12,%r11d + movl %r9d,%r12d + pinsrw $2,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 24(%r15),%r10d + addb %dl,%al + movl 28(%rsi),%ebx + addl $2821735955,%r10d + xorl %r9d,%r12d + movzbl %al,%eax + movl %edx,24(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $17,%r10d + movl %r8d,%r12d + pinsrw $3,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 28(%r15),%r9d + addb %dl,%bl + movl 32(%rsi),%eax + addl $4249261313,%r9d + xorl %r8d,%r12d + movzbl %bl,%ebx + movl %edx,28(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $22,%r9d + movl %r11d,%r12d + pinsrw $3,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 32(%r15),%r8d + addb %dl,%al + movl 36(%rsi),%ebx + addl $1770035416,%r8d + xorl %r11d,%r12d + movzbl %al,%eax + movl %edx,32(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $7,%r8d + movl %r10d,%r12d + pinsrw $4,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 36(%r15),%r11d + addb %dl,%bl + movl 40(%rsi),%eax + addl $2336552879,%r11d + xorl %r10d,%r12d + movzbl %bl,%ebx + movl %edx,36(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $12,%r11d + movl %r9d,%r12d + pinsrw $4,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 40(%r15),%r10d + addb %dl,%al + movl 44(%rsi),%ebx + addl $4294925233,%r10d + xorl %r9d,%r12d + movzbl %al,%eax + movl %edx,40(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $17,%r10d + movl %r8d,%r12d + pinsrw $5,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 44(%r15),%r9d + addb %dl,%bl + movl 48(%rsi),%eax + addl $2304563134,%r9d + xorl %r8d,%r12d + movzbl %bl,%ebx + movl %edx,44(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $22,%r9d + movl %r11d,%r12d + pinsrw $5,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 48(%r15),%r8d + addb %dl,%al + movl 52(%rsi),%ebx + addl $1804603682,%r8d + xorl %r11d,%r12d + movzbl %al,%eax + movl %edx,48(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $7,%r8d + movl %r10d,%r12d + pinsrw $6,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 52(%r15),%r11d + addb %dl,%bl + movl 56(%rsi),%eax + addl $4254626195,%r11d + xorl %r10d,%r12d + movzbl %bl,%ebx + movl %edx,52(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $12,%r11d + movl %r9d,%r12d + pinsrw $6,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 56(%r15),%r10d + addb %dl,%al + movl 60(%rsi),%ebx + addl $2792965006,%r10d + xorl %r9d,%r12d + movzbl %al,%eax + movl %edx,56(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $17,%r10d + movl %r8d,%r12d + pinsrw $7,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movdqu (%r13),%xmm2 + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 60(%r15),%r9d + addb %dl,%bl + movl 64(%rsi),%eax + addl $1236535329,%r9d + xorl %r8d,%r12d + movzbl %bl,%ebx + movl %edx,60(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $22,%r9d + movl %r10d,%r12d + pinsrw $7,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + psllq $8,%xmm1 + pxor %xmm0,%xmm2 + pxor %xmm1,%xmm2 + pxor %xmm0,%xmm0 + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 4(%r15),%r8d + addb %dl,%al + movl 68(%rsi),%ebx + addl $4129170786,%r8d + xorl %r10d,%r12d + movzbl %al,%eax + movl %edx,64(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $5,%r8d + movl %r9d,%r12d + movd (%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + pxor %xmm1,%xmm1 + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 24(%r15),%r11d + addb %dl,%bl + movl 72(%rsi),%eax + addl $3225465664,%r11d + xorl %r9d,%r12d + movzbl %bl,%ebx + movl %edx,68(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $9,%r11d + movl %r8d,%r12d + movd (%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 44(%r15),%r10d + addb %dl,%al + movl 76(%rsi),%ebx + addl $643717713,%r10d + xorl %r8d,%r12d + movzbl %al,%eax + movl %edx,72(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $14,%r10d + movl %r11d,%r12d + pinsrw $1,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 0(%r15),%r9d + addb %dl,%bl + movl 80(%rsi),%eax + addl $3921069994,%r9d + xorl %r11d,%r12d + movzbl %bl,%ebx + movl %edx,76(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $20,%r9d + movl %r10d,%r12d + pinsrw $1,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 20(%r15),%r8d + addb %dl,%al + movl 84(%rsi),%ebx + addl $3593408605,%r8d + xorl %r10d,%r12d + movzbl %al,%eax + movl %edx,80(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $5,%r8d + movl %r9d,%r12d + pinsrw $2,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 40(%r15),%r11d + addb %dl,%bl + movl 88(%rsi),%eax + addl $38016083,%r11d + xorl %r9d,%r12d + movzbl %bl,%ebx + movl %edx,84(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $9,%r11d + movl %r8d,%r12d + pinsrw $2,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 60(%r15),%r10d + addb %dl,%al + movl 92(%rsi),%ebx + addl $3634488961,%r10d + xorl %r8d,%r12d + movzbl %al,%eax + movl %edx,88(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $14,%r10d + movl %r11d,%r12d + pinsrw $3,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 16(%r15),%r9d + addb %dl,%bl + movl 96(%rsi),%eax + addl $3889429448,%r9d + xorl %r11d,%r12d + movzbl %bl,%ebx + movl %edx,92(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $20,%r9d + movl %r10d,%r12d + pinsrw $3,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 36(%r15),%r8d + addb %dl,%al + movl 100(%rsi),%ebx + addl $568446438,%r8d + xorl %r10d,%r12d + movzbl %al,%eax + movl %edx,96(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $5,%r8d + movl %r9d,%r12d + pinsrw $4,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 56(%r15),%r11d + addb %dl,%bl + movl 104(%rsi),%eax + addl $3275163606,%r11d + xorl %r9d,%r12d + movzbl %bl,%ebx + movl %edx,100(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $9,%r11d + movl %r8d,%r12d + pinsrw $4,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 12(%r15),%r10d + addb %dl,%al + movl 108(%rsi),%ebx + addl $4107603335,%r10d + xorl %r8d,%r12d + movzbl %al,%eax + movl %edx,104(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $14,%r10d + movl %r11d,%r12d + pinsrw $5,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 32(%r15),%r9d + addb %dl,%bl + movl 112(%rsi),%eax + addl $1163531501,%r9d + xorl %r11d,%r12d + movzbl %bl,%ebx + movl %edx,108(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $20,%r9d + movl %r10d,%r12d + pinsrw $5,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r11d,%r12d + addl 52(%r15),%r8d + addb %dl,%al + movl 116(%rsi),%ebx + addl $2850285829,%r8d + xorl %r10d,%r12d + movzbl %al,%eax + movl %edx,112(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $5,%r8d + movl %r9d,%r12d + pinsrw $6,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r10d,%r12d + addl 8(%r15),%r11d + addb %dl,%bl + movl 120(%rsi),%eax + addl $4243563512,%r11d + xorl %r9d,%r12d + movzbl %bl,%ebx + movl %edx,116(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $9,%r11d + movl %r8d,%r12d + pinsrw $6,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + andl %r9d,%r12d + addl 28(%r15),%r10d + addb %dl,%al + movl 124(%rsi),%ebx + addl $1735328473,%r10d + xorl %r8d,%r12d + movzbl %al,%eax + movl %edx,120(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $14,%r10d + movl %r11d,%r12d + pinsrw $7,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movdqu 16(%r13),%xmm3 + addb $32,%bpl + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + andl %r8d,%r12d + addl 48(%r15),%r9d + addb %dl,%bl + movl 0(%rdi,%rbp,4),%eax + addl $2368359562,%r9d + xorl %r11d,%r12d + movzbl %bl,%ebx + movl %edx,124(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $20,%r9d + movl %r11d,%r12d + pinsrw $7,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movq %rcx,%rsi + xorq %rcx,%rcx + movb %sil,%cl + leaq (%rdi,%rbp,4),%rsi + psllq $8,%xmm1 + pxor %xmm0,%xmm3 + pxor %xmm1,%xmm3 + pxor %xmm0,%xmm0 + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r9d,%r12d + addl 20(%r15),%r8d + addb %dl,%al + movl 4(%rsi),%ebx + addl $4294588738,%r8d + movzbl %al,%eax + addl %r12d,%r8d + movl %edx,0(%rsi) + addb %bl,%cl + roll $4,%r8d + movl %r10d,%r12d + movd (%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + pxor %xmm1,%xmm1 + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r8d,%r12d + addl 32(%r15),%r11d + addb %dl,%bl + movl 8(%rsi),%eax + addl $2272392833,%r11d + movzbl %bl,%ebx + addl %r12d,%r11d + movl %edx,4(%rsi) + addb %al,%cl + roll $11,%r11d + movl %r9d,%r12d + movd (%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r11d,%r12d + addl 44(%r15),%r10d + addb %dl,%al + movl 12(%rsi),%ebx + addl $1839030562,%r10d + movzbl %al,%eax + addl %r12d,%r10d + movl %edx,8(%rsi) + addb %bl,%cl + roll $16,%r10d + movl %r8d,%r12d + pinsrw $1,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r10d,%r12d + addl 56(%r15),%r9d + addb %dl,%bl + movl 16(%rsi),%eax + addl $4259657740,%r9d + movzbl %bl,%ebx + addl %r12d,%r9d + movl %edx,12(%rsi) + addb %al,%cl + roll $23,%r9d + movl %r11d,%r12d + pinsrw $1,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r9d,%r12d + addl 4(%r15),%r8d + addb %dl,%al + movl 20(%rsi),%ebx + addl $2763975236,%r8d + movzbl %al,%eax + addl %r12d,%r8d + movl %edx,16(%rsi) + addb %bl,%cl + roll $4,%r8d + movl %r10d,%r12d + pinsrw $2,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r8d,%r12d + addl 16(%r15),%r11d + addb %dl,%bl + movl 24(%rsi),%eax + addl $1272893353,%r11d + movzbl %bl,%ebx + addl %r12d,%r11d + movl %edx,20(%rsi) + addb %al,%cl + roll $11,%r11d + movl %r9d,%r12d + pinsrw $2,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r11d,%r12d + addl 28(%r15),%r10d + addb %dl,%al + movl 28(%rsi),%ebx + addl $4139469664,%r10d + movzbl %al,%eax + addl %r12d,%r10d + movl %edx,24(%rsi) + addb %bl,%cl + roll $16,%r10d + movl %r8d,%r12d + pinsrw $3,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r10d,%r12d + addl 40(%r15),%r9d + addb %dl,%bl + movl 32(%rsi),%eax + addl $3200236656,%r9d + movzbl %bl,%ebx + addl %r12d,%r9d + movl %edx,28(%rsi) + addb %al,%cl + roll $23,%r9d + movl %r11d,%r12d + pinsrw $3,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r9d,%r12d + addl 52(%r15),%r8d + addb %dl,%al + movl 36(%rsi),%ebx + addl $681279174,%r8d + movzbl %al,%eax + addl %r12d,%r8d + movl %edx,32(%rsi) + addb %bl,%cl + roll $4,%r8d + movl %r10d,%r12d + pinsrw $4,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r8d,%r12d + addl 0(%r15),%r11d + addb %dl,%bl + movl 40(%rsi),%eax + addl $3936430074,%r11d + movzbl %bl,%ebx + addl %r12d,%r11d + movl %edx,36(%rsi) + addb %al,%cl + roll $11,%r11d + movl %r9d,%r12d + pinsrw $4,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r11d,%r12d + addl 12(%r15),%r10d + addb %dl,%al + movl 44(%rsi),%ebx + addl $3572445317,%r10d + movzbl %al,%eax + addl %r12d,%r10d + movl %edx,40(%rsi) + addb %bl,%cl + roll $16,%r10d + movl %r8d,%r12d + pinsrw $5,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r10d,%r12d + addl 24(%r15),%r9d + addb %dl,%bl + movl 48(%rsi),%eax + addl $76029189,%r9d + movzbl %bl,%ebx + addl %r12d,%r9d + movl %edx,44(%rsi) + addb %al,%cl + roll $23,%r9d + movl %r11d,%r12d + pinsrw $5,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r9d,%r12d + addl 36(%r15),%r8d + addb %dl,%al + movl 52(%rsi),%ebx + addl $3654602809,%r8d + movzbl %al,%eax + addl %r12d,%r8d + movl %edx,48(%rsi) + addb %bl,%cl + roll $4,%r8d + movl %r10d,%r12d + pinsrw $6,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r8d,%r12d + addl 48(%r15),%r11d + addb %dl,%bl + movl 56(%rsi),%eax + addl $3873151461,%r11d + movzbl %bl,%ebx + addl %r12d,%r11d + movl %edx,52(%rsi) + addb %al,%cl + roll $11,%r11d + movl %r9d,%r12d + pinsrw $6,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %eax,(%rdi,%rcx,4) + xorl %r11d,%r12d + addl 60(%r15),%r10d + addb %dl,%al + movl 60(%rsi),%ebx + addl $530742520,%r10d + movzbl %al,%eax + addl %r12d,%r10d + movl %edx,56(%rsi) + addb %bl,%cl + roll $16,%r10d + movl %r8d,%r12d + pinsrw $7,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movdqu 32(%r13),%xmm4 + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %ebx,(%rdi,%rcx,4) + xorl %r10d,%r12d + addl 8(%r15),%r9d + addb %dl,%bl + movl 64(%rsi),%eax + addl $3299628645,%r9d + movzbl %bl,%ebx + addl %r12d,%r9d + movl %edx,60(%rsi) + addb %al,%cl + roll $23,%r9d + movl $-1,%r12d + pinsrw $7,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + psllq $8,%xmm1 + pxor %xmm0,%xmm4 + pxor %xmm1,%xmm4 + pxor %xmm0,%xmm0 + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r9d,%r12d + addl 0(%r15),%r8d + addb %dl,%al + movl 68(%rsi),%ebx + addl $4096336452,%r8d + movzbl %al,%eax + xorl %r10d,%r12d + movl %edx,64(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $6,%r8d + movl $-1,%r12d + movd (%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + pxor %xmm1,%xmm1 + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r8d,%r12d + addl 28(%r15),%r11d + addb %dl,%bl + movl 72(%rsi),%eax + addl $1126891415,%r11d + movzbl %bl,%ebx + xorl %r9d,%r12d + movl %edx,68(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $10,%r11d + movl $-1,%r12d + movd (%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r11d,%r12d + addl 56(%r15),%r10d + addb %dl,%al + movl 76(%rsi),%ebx + addl $2878612391,%r10d + movzbl %al,%eax + xorl %r8d,%r12d + movl %edx,72(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $15,%r10d + movl $-1,%r12d + pinsrw $1,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r10d,%r12d + addl 20(%r15),%r9d + addb %dl,%bl + movl 80(%rsi),%eax + addl $4237533241,%r9d + movzbl %bl,%ebx + xorl %r11d,%r12d + movl %edx,76(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $21,%r9d + movl $-1,%r12d + pinsrw $1,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r9d,%r12d + addl 48(%r15),%r8d + addb %dl,%al + movl 84(%rsi),%ebx + addl $1700485571,%r8d + movzbl %al,%eax + xorl %r10d,%r12d + movl %edx,80(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $6,%r8d + movl $-1,%r12d + pinsrw $2,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r8d,%r12d + addl 12(%r15),%r11d + addb %dl,%bl + movl 88(%rsi),%eax + addl $2399980690,%r11d + movzbl %bl,%ebx + xorl %r9d,%r12d + movl %edx,84(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $10,%r11d + movl $-1,%r12d + pinsrw $2,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r11d,%r12d + addl 40(%r15),%r10d + addb %dl,%al + movl 92(%rsi),%ebx + addl $4293915773,%r10d + movzbl %al,%eax + xorl %r8d,%r12d + movl %edx,88(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $15,%r10d + movl $-1,%r12d + pinsrw $3,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r10d,%r12d + addl 4(%r15),%r9d + addb %dl,%bl + movl 96(%rsi),%eax + addl $2240044497,%r9d + movzbl %bl,%ebx + xorl %r11d,%r12d + movl %edx,92(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $21,%r9d + movl $-1,%r12d + pinsrw $3,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r9d,%r12d + addl 32(%r15),%r8d + addb %dl,%al + movl 100(%rsi),%ebx + addl $1873313359,%r8d + movzbl %al,%eax + xorl %r10d,%r12d + movl %edx,96(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $6,%r8d + movl $-1,%r12d + pinsrw $4,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r8d,%r12d + addl 60(%r15),%r11d + addb %dl,%bl + movl 104(%rsi),%eax + addl $4264355552,%r11d + movzbl %bl,%ebx + xorl %r9d,%r12d + movl %edx,100(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $10,%r11d + movl $-1,%r12d + pinsrw $4,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r11d,%r12d + addl 24(%r15),%r10d + addb %dl,%al + movl 108(%rsi),%ebx + addl $2734768916,%r10d + movzbl %al,%eax + xorl %r8d,%r12d + movl %edx,104(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $15,%r10d + movl $-1,%r12d + pinsrw $5,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r10d,%r12d + addl 52(%r15),%r9d + addb %dl,%bl + movl 112(%rsi),%eax + addl $1309151649,%r9d + movzbl %bl,%ebx + xorl %r11d,%r12d + movl %edx,108(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $21,%r9d + movl $-1,%r12d + pinsrw $5,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movl (%rdi,%rcx,4),%edx + xorl %r11d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r9d,%r12d + addl 16(%r15),%r8d + addb %dl,%al + movl 116(%rsi),%ebx + addl $4149444226,%r8d + movzbl %al,%eax + xorl %r10d,%r12d + movl %edx,112(%rsi) + addl %r12d,%r8d + addb %bl,%cl + roll $6,%r8d + movl $-1,%r12d + pinsrw $6,(%rdi,%rax,4),%xmm0 + + addl %r9d,%r8d + movl (%rdi,%rcx,4),%edx + xorl %r10d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r8d,%r12d + addl 44(%r15),%r11d + addb %dl,%bl + movl 120(%rsi),%eax + addl $3174756917,%r11d + movzbl %bl,%ebx + xorl %r9d,%r12d + movl %edx,116(%rsi) + addl %r12d,%r11d + addb %al,%cl + roll $10,%r11d + movl $-1,%r12d + pinsrw $6,(%rdi,%rbx,4),%xmm1 + + addl %r8d,%r11d + movl (%rdi,%rcx,4),%edx + xorl %r9d,%r12d + movl %eax,(%rdi,%rcx,4) + orl %r11d,%r12d + addl 8(%r15),%r10d + addb %dl,%al + movl 124(%rsi),%ebx + addl $718787259,%r10d + movzbl %al,%eax + xorl %r8d,%r12d + movl %edx,120(%rsi) + addl %r12d,%r10d + addb %bl,%cl + roll $15,%r10d + movl $-1,%r12d + pinsrw $7,(%rdi,%rax,4),%xmm0 + + addl %r11d,%r10d + movdqu 48(%r13),%xmm5 + addb $32,%bpl + movl (%rdi,%rcx,4),%edx + xorl %r8d,%r12d + movl %ebx,(%rdi,%rcx,4) + orl %r10d,%r12d + addl 36(%r15),%r9d + addb %dl,%bl + movl 0(%rdi,%rbp,4),%eax + addl $3951481745,%r9d + movzbl %bl,%ebx + xorl %r11d,%r12d + movl %edx,124(%rsi) + addl %r12d,%r9d + addb %al,%cl + roll $21,%r9d + movl $-1,%r12d + pinsrw $7,(%rdi,%rbx,4),%xmm1 + + addl %r10d,%r9d + movq %rbp,%rsi + xorq %rbp,%rbp + movb %sil,%bpl + movq %rcx,%rsi + xorq %rcx,%rcx + movb %sil,%cl + leaq (%rdi,%rbp,4),%rsi + psllq $8,%xmm1 + pxor %xmm0,%xmm5 + pxor %xmm1,%xmm5 + addl 0(%rsp),%r8d + addl 4(%rsp),%r9d + addl 8(%rsp),%r10d + addl 12(%rsp),%r11d + + movdqu %xmm2,(%r14,%r13,1) + movdqu %xmm3,16(%r14,%r13,1) + movdqu %xmm4,32(%r14,%r13,1) + movdqu %xmm5,48(%r14,%r13,1) + leaq 64(%r15),%r15 + leaq 64(%r13),%r13 + cmpq 16(%rsp),%r15 + jb L$oop + + movq 24(%rsp),%r12 + subb %al,%cl + movl %r8d,0(%r12) + movl %r9d,4(%r12) + movl %r10d,8(%r12) + movl %r11d,12(%r12) + subb $1,%bpl + movl %ebp,-8(%rdi) + movl %ecx,-4(%rdi) + + movq 40(%rsp),%r15 + + movq 48(%rsp),%r14 + + movq 56(%rsp),%r13 + + movq 64(%rsp),%r12 + + movq 72(%rsp),%rbp + + movq 80(%rsp),%rbx + + leaq 88(%rsp),%rsp + +L$epilogue: +L$abort: + .byte 0xf3,0xc3 + + diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/rc4/rc4-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/rc4/rc4-x86_64.s new file mode 100644 index 0000000..8b6186f --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/rc4/rc4-x86_64.s @@ -0,0 +1,629 @@ +.text + + +.globl _RC4 + +.p2align 4 +_RC4: + + orq %rsi,%rsi + jne L$entry + .byte 0xf3,0xc3 +L$entry: + pushq %rbx + + pushq %r12 + + pushq %r13 + +L$prologue: + movq %rsi,%r11 + movq %rdx,%r12 + movq %rcx,%r13 + xorq %r10,%r10 + xorq %rcx,%rcx + + leaq 8(%rdi),%rdi + movb -8(%rdi),%r10b + movb -4(%rdi),%cl + cmpl $-1,256(%rdi) + je L$RC4_CHAR + movl _OPENSSL_ia32cap_P(%rip),%r8d + xorq %rbx,%rbx + incb %r10b + subq %r10,%rbx + subq %r12,%r13 + movl (%rdi,%r10,4),%eax + testq $-16,%r11 + jz L$loop1 + btl $30,%r8d + jc L$intel + andq $7,%rbx + leaq 1(%r10),%rsi + jz L$oop8 + subq %rbx,%r11 +L$oop8_warmup: + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl %edx,(%rdi,%r10,4) + addb %dl,%al + incb %r10b + movl (%rdi,%rax,4),%edx + movl (%rdi,%r10,4),%eax + xorb (%r12),%dl + movb %dl,(%r12,%r13,1) + leaq 1(%r12),%r12 + decq %rbx + jnz L$oop8_warmup + + leaq 1(%r10),%rsi + jmp L$oop8 +.p2align 4 +L$oop8: + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl 0(%rdi,%rsi,4),%ebx + rorq $8,%r8 + movl %edx,0(%rdi,%r10,4) + addb %al,%dl + movb (%rdi,%rdx,4),%r8b + addb %bl,%cl + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + movl 4(%rdi,%rsi,4),%eax + rorq $8,%r8 + movl %edx,4(%rdi,%r10,4) + addb %bl,%dl + movb (%rdi,%rdx,4),%r8b + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl 8(%rdi,%rsi,4),%ebx + rorq $8,%r8 + movl %edx,8(%rdi,%r10,4) + addb %al,%dl + movb (%rdi,%rdx,4),%r8b + addb %bl,%cl + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + movl 12(%rdi,%rsi,4),%eax + rorq $8,%r8 + movl %edx,12(%rdi,%r10,4) + addb %bl,%dl + movb (%rdi,%rdx,4),%r8b + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl 16(%rdi,%rsi,4),%ebx + rorq $8,%r8 + movl %edx,16(%rdi,%r10,4) + addb %al,%dl + movb (%rdi,%rdx,4),%r8b + addb %bl,%cl + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + movl 20(%rdi,%rsi,4),%eax + rorq $8,%r8 + movl %edx,20(%rdi,%r10,4) + addb %bl,%dl + movb (%rdi,%rdx,4),%r8b + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl 24(%rdi,%rsi,4),%ebx + rorq $8,%r8 + movl %edx,24(%rdi,%r10,4) + addb %al,%dl + movb (%rdi,%rdx,4),%r8b + addb $8,%sil + addb %bl,%cl + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + movl -4(%rdi,%rsi,4),%eax + rorq $8,%r8 + movl %edx,28(%rdi,%r10,4) + addb %bl,%dl + movb (%rdi,%rdx,4),%r8b + addb $8,%r10b + rorq $8,%r8 + subq $8,%r11 + + xorq (%r12),%r8 + movq %r8,(%r12,%r13,1) + leaq 8(%r12),%r12 + + testq $-8,%r11 + jnz L$oop8 + cmpq $0,%r11 + jne L$loop1 + jmp L$exit + +.p2align 4 +L$intel: + testq $-32,%r11 + jz L$loop1 + andq $15,%rbx + jz L$oop16_is_hot + subq %rbx,%r11 +L$oop16_warmup: + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl %edx,(%rdi,%r10,4) + addb %dl,%al + incb %r10b + movl (%rdi,%rax,4),%edx + movl (%rdi,%r10,4),%eax + xorb (%r12),%dl + movb %dl,(%r12,%r13,1) + leaq 1(%r12),%r12 + decq %rbx + jnz L$oop16_warmup + + movq %rcx,%rbx + xorq %rcx,%rcx + movb %bl,%cl + +L$oop16_is_hot: + leaq (%rdi,%r10,4),%rsi + addb %al,%cl + movl (%rdi,%rcx,4),%edx + pxor %xmm0,%xmm0 + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 4(%rsi),%ebx + movzbl %al,%eax + movl %edx,0(%rsi) + addb %bl,%cl + pinsrw $0,(%rdi,%rax,4),%xmm0 + jmp L$oop16_enter +.p2align 4 +L$oop16: + addb %al,%cl + movl (%rdi,%rcx,4),%edx + pxor %xmm0,%xmm2 + psllq $8,%xmm1 + pxor %xmm0,%xmm0 + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 4(%rsi),%ebx + movzbl %al,%eax + movl %edx,0(%rsi) + pxor %xmm1,%xmm2 + addb %bl,%cl + pinsrw $0,(%rdi,%rax,4),%xmm0 + movdqu %xmm2,(%r12,%r13,1) + leaq 16(%r12),%r12 +L$oop16_enter: + movl (%rdi,%rcx,4),%edx + pxor %xmm1,%xmm1 + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 8(%rsi),%eax + movzbl %bl,%ebx + movl %edx,4(%rsi) + addb %al,%cl + pinsrw $0,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 12(%rsi),%ebx + movzbl %al,%eax + movl %edx,8(%rsi) + addb %bl,%cl + pinsrw $1,(%rdi,%rax,4),%xmm0 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 16(%rsi),%eax + movzbl %bl,%ebx + movl %edx,12(%rsi) + addb %al,%cl + pinsrw $1,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 20(%rsi),%ebx + movzbl %al,%eax + movl %edx,16(%rsi) + addb %bl,%cl + pinsrw $2,(%rdi,%rax,4),%xmm0 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 24(%rsi),%eax + movzbl %bl,%ebx + movl %edx,20(%rsi) + addb %al,%cl + pinsrw $2,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 28(%rsi),%ebx + movzbl %al,%eax + movl %edx,24(%rsi) + addb %bl,%cl + pinsrw $3,(%rdi,%rax,4),%xmm0 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 32(%rsi),%eax + movzbl %bl,%ebx + movl %edx,28(%rsi) + addb %al,%cl + pinsrw $3,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 36(%rsi),%ebx + movzbl %al,%eax + movl %edx,32(%rsi) + addb %bl,%cl + pinsrw $4,(%rdi,%rax,4),%xmm0 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 40(%rsi),%eax + movzbl %bl,%ebx + movl %edx,36(%rsi) + addb %al,%cl + pinsrw $4,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 44(%rsi),%ebx + movzbl %al,%eax + movl %edx,40(%rsi) + addb %bl,%cl + pinsrw $5,(%rdi,%rax,4),%xmm0 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 48(%rsi),%eax + movzbl %bl,%ebx + movl %edx,44(%rsi) + addb %al,%cl + pinsrw $5,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 52(%rsi),%ebx + movzbl %al,%eax + movl %edx,48(%rsi) + addb %bl,%cl + pinsrw $6,(%rdi,%rax,4),%xmm0 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movl 56(%rsi),%eax + movzbl %bl,%ebx + movl %edx,52(%rsi) + addb %al,%cl + pinsrw $6,(%rdi,%rbx,4),%xmm1 + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + addb %dl,%al + movl 60(%rsi),%ebx + movzbl %al,%eax + movl %edx,56(%rsi) + addb %bl,%cl + pinsrw $7,(%rdi,%rax,4),%xmm0 + addb $16,%r10b + movdqu (%r12),%xmm2 + movl (%rdi,%rcx,4),%edx + movl %ebx,(%rdi,%rcx,4) + addb %dl,%bl + movzbl %bl,%ebx + movl %edx,60(%rsi) + leaq (%rdi,%r10,4),%rsi + pinsrw $7,(%rdi,%rbx,4),%xmm1 + movl (%rsi),%eax + movq %rcx,%rbx + xorq %rcx,%rcx + subq $16,%r11 + movb %bl,%cl + testq $-16,%r11 + jnz L$oop16 + + psllq $8,%xmm1 + pxor %xmm0,%xmm2 + pxor %xmm1,%xmm2 + movdqu %xmm2,(%r12,%r13,1) + leaq 16(%r12),%r12 + + cmpq $0,%r11 + jne L$loop1 + jmp L$exit + +.p2align 4 +L$loop1: + addb %al,%cl + movl (%rdi,%rcx,4),%edx + movl %eax,(%rdi,%rcx,4) + movl %edx,(%rdi,%r10,4) + addb %dl,%al + incb %r10b + movl (%rdi,%rax,4),%edx + movl (%rdi,%r10,4),%eax + xorb (%r12),%dl + movb %dl,(%r12,%r13,1) + leaq 1(%r12),%r12 + decq %r11 + jnz L$loop1 + jmp L$exit + +.p2align 4 +L$RC4_CHAR: + addb $1,%r10b + movzbl (%rdi,%r10,1),%eax + testq $-8,%r11 + jz L$cloop1 + jmp L$cloop8 +.p2align 4 +L$cloop8: + movl (%r12),%r8d + movl 4(%r12),%r9d + addb %al,%cl + leaq 1(%r10),%rsi + movzbl (%rdi,%rcx,1),%edx + movzbl %sil,%esi + movzbl (%rdi,%rsi,1),%ebx + movb %al,(%rdi,%rcx,1) + cmpq %rsi,%rcx + movb %dl,(%rdi,%r10,1) + jne L$cmov0 + movq %rax,%rbx +L$cmov0: + addb %al,%dl + xorb (%rdi,%rdx,1),%r8b + rorl $8,%r8d + addb %bl,%cl + leaq 1(%rsi),%r10 + movzbl (%rdi,%rcx,1),%edx + movzbl %r10b,%r10d + movzbl (%rdi,%r10,1),%eax + movb %bl,(%rdi,%rcx,1) + cmpq %r10,%rcx + movb %dl,(%rdi,%rsi,1) + jne L$cmov1 + movq %rbx,%rax +L$cmov1: + addb %bl,%dl + xorb (%rdi,%rdx,1),%r8b + rorl $8,%r8d + addb %al,%cl + leaq 1(%r10),%rsi + movzbl (%rdi,%rcx,1),%edx + movzbl %sil,%esi + movzbl (%rdi,%rsi,1),%ebx + movb %al,(%rdi,%rcx,1) + cmpq %rsi,%rcx + movb %dl,(%rdi,%r10,1) + jne L$cmov2 + movq %rax,%rbx +L$cmov2: + addb %al,%dl + xorb (%rdi,%rdx,1),%r8b + rorl $8,%r8d + addb %bl,%cl + leaq 1(%rsi),%r10 + movzbl (%rdi,%rcx,1),%edx + movzbl %r10b,%r10d + movzbl (%rdi,%r10,1),%eax + movb %bl,(%rdi,%rcx,1) + cmpq %r10,%rcx + movb %dl,(%rdi,%rsi,1) + jne L$cmov3 + movq %rbx,%rax +L$cmov3: + addb %bl,%dl + xorb (%rdi,%rdx,1),%r8b + rorl $8,%r8d + addb %al,%cl + leaq 1(%r10),%rsi + movzbl (%rdi,%rcx,1),%edx + movzbl %sil,%esi + movzbl (%rdi,%rsi,1),%ebx + movb %al,(%rdi,%rcx,1) + cmpq %rsi,%rcx + movb %dl,(%rdi,%r10,1) + jne L$cmov4 + movq %rax,%rbx +L$cmov4: + addb %al,%dl + xorb (%rdi,%rdx,1),%r9b + rorl $8,%r9d + addb %bl,%cl + leaq 1(%rsi),%r10 + movzbl (%rdi,%rcx,1),%edx + movzbl %r10b,%r10d + movzbl (%rdi,%r10,1),%eax + movb %bl,(%rdi,%rcx,1) + cmpq %r10,%rcx + movb %dl,(%rdi,%rsi,1) + jne L$cmov5 + movq %rbx,%rax +L$cmov5: + addb %bl,%dl + xorb (%rdi,%rdx,1),%r9b + rorl $8,%r9d + addb %al,%cl + leaq 1(%r10),%rsi + movzbl (%rdi,%rcx,1),%edx + movzbl %sil,%esi + movzbl (%rdi,%rsi,1),%ebx + movb %al,(%rdi,%rcx,1) + cmpq %rsi,%rcx + movb %dl,(%rdi,%r10,1) + jne L$cmov6 + movq %rax,%rbx +L$cmov6: + addb %al,%dl + xorb (%rdi,%rdx,1),%r9b + rorl $8,%r9d + addb %bl,%cl + leaq 1(%rsi),%r10 + movzbl (%rdi,%rcx,1),%edx + movzbl %r10b,%r10d + movzbl (%rdi,%r10,1),%eax + movb %bl,(%rdi,%rcx,1) + cmpq %r10,%rcx + movb %dl,(%rdi,%rsi,1) + jne L$cmov7 + movq %rbx,%rax +L$cmov7: + addb %bl,%dl + xorb (%rdi,%rdx,1),%r9b + rorl $8,%r9d + leaq -8(%r11),%r11 + movl %r8d,(%r13) + leaq 8(%r12),%r12 + movl %r9d,4(%r13) + leaq 8(%r13),%r13 + + testq $-8,%r11 + jnz L$cloop8 + cmpq $0,%r11 + jne L$cloop1 + jmp L$exit +.p2align 4 +L$cloop1: + addb %al,%cl + movzbl %cl,%ecx + movzbl (%rdi,%rcx,1),%edx + movb %al,(%rdi,%rcx,1) + movb %dl,(%rdi,%r10,1) + addb %al,%dl + addb $1,%r10b + movzbl %dl,%edx + movzbl %r10b,%r10d + movzbl (%rdi,%rdx,1),%edx + movzbl (%rdi,%r10,1),%eax + xorb (%r12),%dl + leaq 1(%r12),%r12 + movb %dl,(%r13) + leaq 1(%r13),%r13 + subq $1,%r11 + jnz L$cloop1 + jmp L$exit + +.p2align 4 +L$exit: + subb $1,%r10b + movl %r10d,-8(%rdi) + movl %ecx,-4(%rdi) + + movq (%rsp),%r13 + + movq 8(%rsp),%r12 + + movq 16(%rsp),%rbx + + addq $24,%rsp + +L$epilogue: + .byte 0xf3,0xc3 + + +.globl _RC4_set_key + +.p2align 4 +_RC4_set_key: + + leaq 8(%rdi),%rdi + leaq (%rdx,%rsi,1),%rdx + negq %rsi + movq %rsi,%rcx + xorl %eax,%eax + xorq %r9,%r9 + xorq %r10,%r10 + xorq %r11,%r11 + + movl _OPENSSL_ia32cap_P(%rip),%r8d + btl $20,%r8d + jc L$c1stloop + jmp L$w1stloop + +.p2align 4 +L$w1stloop: + movl %eax,(%rdi,%rax,4) + addb $1,%al + jnc L$w1stloop + + xorq %r9,%r9 + xorq %r8,%r8 +.p2align 4 +L$w2ndloop: + movl (%rdi,%r9,4),%r10d + addb (%rdx,%rsi,1),%r8b + addb %r10b,%r8b + addq $1,%rsi + movl (%rdi,%r8,4),%r11d + cmovzq %rcx,%rsi + movl %r10d,(%rdi,%r8,4) + movl %r11d,(%rdi,%r9,4) + addb $1,%r9b + jnc L$w2ndloop + jmp L$exit_key + +.p2align 4 +L$c1stloop: + movb %al,(%rdi,%rax,1) + addb $1,%al + jnc L$c1stloop + + xorq %r9,%r9 + xorq %r8,%r8 +.p2align 4 +L$c2ndloop: + movb (%rdi,%r9,1),%r10b + addb (%rdx,%rsi,1),%r8b + addb %r10b,%r8b + addq $1,%rsi + movb (%rdi,%r8,1),%r11b + jnz L$cnowrap + movq %rcx,%rsi +L$cnowrap: + movb %r10b,(%rdi,%r8,1) + movb %r11b,(%rdi,%r9,1) + addb $1,%r9b + jnc L$c2ndloop + movl $-1,256(%rdi) + +.p2align 4 +L$exit_key: + xorl %eax,%eax + movl %eax,-8(%rdi) + movl %eax,-4(%rdi) + .byte 0xf3,0xc3 + + + +.globl _RC4_options + +.p2align 4 +_RC4_options: + + leaq L$opts(%rip),%rax + movl _OPENSSL_ia32cap_P(%rip),%edx + btl $20,%edx + jc L$8xchar + btl $30,%edx + jnc L$done + addq $25,%rax + .byte 0xf3,0xc3 +L$8xchar: + addq $12,%rax +L$done: + .byte 0xf3,0xc3 + +.p2align 6 +L$opts: +.byte 114,99,52,40,56,120,44,105,110,116,41,0 +.byte 114,99,52,40,56,120,44,99,104,97,114,41,0 +.byte 114,99,52,40,49,54,120,44,105,110,116,41,0 +.byte 82,67,52,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.p2align 6 + diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/sha/keccak1600-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/sha/keccak1600-x86_64.s new file mode 100644 index 0000000..5105d98 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/sha/keccak1600-x86_64.s @@ -0,0 +1,494 @@ +.text + + +.p2align 5 +__KeccakF1600: + + movq 60(%rdi),%rax + movq 68(%rdi),%rbx + movq 76(%rdi),%rcx + movq 84(%rdi),%rdx + movq 92(%rdi),%rbp + jmp L$oop + +.p2align 5 +L$oop: + movq -100(%rdi),%r8 + movq -52(%rdi),%r9 + movq -4(%rdi),%r10 + movq 44(%rdi),%r11 + + xorq -84(%rdi),%rcx + xorq -76(%rdi),%rdx + xorq %r8,%rax + xorq -92(%rdi),%rbx + xorq -44(%rdi),%rcx + xorq -60(%rdi),%rax + movq %rbp,%r12 + xorq -68(%rdi),%rbp + + xorq %r10,%rcx + xorq -20(%rdi),%rax + xorq -36(%rdi),%rdx + xorq %r9,%rbx + xorq -28(%rdi),%rbp + + xorq 36(%rdi),%rcx + xorq 20(%rdi),%rax + xorq 4(%rdi),%rdx + xorq -12(%rdi),%rbx + xorq 12(%rdi),%rbp + + movq %rcx,%r13 + rolq $1,%rcx + xorq %rax,%rcx + xorq %r11,%rdx + + rolq $1,%rax + xorq %rdx,%rax + xorq 28(%rdi),%rbx + + rolq $1,%rdx + xorq %rbx,%rdx + xorq 52(%rdi),%rbp + + rolq $1,%rbx + xorq %rbp,%rbx + + rolq $1,%rbp + xorq %r13,%rbp + xorq %rcx,%r9 + xorq %rdx,%r10 + rolq $44,%r9 + xorq %rbp,%r11 + xorq %rax,%r12 + rolq $43,%r10 + xorq %rbx,%r8 + movq %r9,%r13 + rolq $21,%r11 + orq %r10,%r9 + xorq %r8,%r9 + rolq $14,%r12 + + xorq (%r15),%r9 + leaq 8(%r15),%r15 + + movq %r12,%r14 + andq %r11,%r12 + movq %r9,-100(%rsi) + xorq %r10,%r12 + notq %r10 + movq %r12,-84(%rsi) + + orq %r11,%r10 + movq 76(%rdi),%r12 + xorq %r13,%r10 + movq %r10,-92(%rsi) + + andq %r8,%r13 + movq -28(%rdi),%r9 + xorq %r14,%r13 + movq -20(%rdi),%r10 + movq %r13,-68(%rsi) + + orq %r8,%r14 + movq -76(%rdi),%r8 + xorq %r11,%r14 + movq 28(%rdi),%r11 + movq %r14,-76(%rsi) + + + xorq %rbp,%r8 + xorq %rdx,%r12 + rolq $28,%r8 + xorq %rcx,%r11 + xorq %rax,%r9 + rolq $61,%r12 + rolq $45,%r11 + xorq %rbx,%r10 + rolq $20,%r9 + movq %r8,%r13 + orq %r12,%r8 + rolq $3,%r10 + + xorq %r11,%r8 + movq %r8,-36(%rsi) + + movq %r9,%r14 + andq %r13,%r9 + movq -92(%rdi),%r8 + xorq %r12,%r9 + notq %r12 + movq %r9,-28(%rsi) + + orq %r11,%r12 + movq -44(%rdi),%r9 + xorq %r10,%r12 + movq %r12,-44(%rsi) + + andq %r10,%r11 + movq 60(%rdi),%r12 + xorq %r14,%r11 + movq %r11,-52(%rsi) + + orq %r10,%r14 + movq 4(%rdi),%r10 + xorq %r13,%r14 + movq 52(%rdi),%r11 + movq %r14,-60(%rsi) + + + xorq %rbp,%r10 + xorq %rax,%r11 + rolq $25,%r10 + xorq %rdx,%r9 + rolq $8,%r11 + xorq %rbx,%r12 + rolq $6,%r9 + xorq %rcx,%r8 + rolq $18,%r12 + movq %r10,%r13 + andq %r11,%r10 + rolq $1,%r8 + + notq %r11 + xorq %r9,%r10 + movq %r10,-12(%rsi) + + movq %r12,%r14 + andq %r11,%r12 + movq -12(%rdi),%r10 + xorq %r13,%r12 + movq %r12,-4(%rsi) + + orq %r9,%r13 + movq 84(%rdi),%r12 + xorq %r8,%r13 + movq %r13,-20(%rsi) + + andq %r8,%r9 + xorq %r14,%r9 + movq %r9,12(%rsi) + + orq %r8,%r14 + movq -60(%rdi),%r9 + xorq %r11,%r14 + movq 36(%rdi),%r11 + movq %r14,4(%rsi) + + + movq -68(%rdi),%r8 + + xorq %rcx,%r10 + xorq %rdx,%r11 + rolq $10,%r10 + xorq %rbx,%r9 + rolq $15,%r11 + xorq %rbp,%r12 + rolq $36,%r9 + xorq %rax,%r8 + rolq $56,%r12 + movq %r10,%r13 + orq %r11,%r10 + rolq $27,%r8 + + notq %r11 + xorq %r9,%r10 + movq %r10,28(%rsi) + + movq %r12,%r14 + orq %r11,%r12 + xorq %r13,%r12 + movq %r12,36(%rsi) + + andq %r9,%r13 + xorq %r8,%r13 + movq %r13,20(%rsi) + + orq %r8,%r9 + xorq %r14,%r9 + movq %r9,52(%rsi) + + andq %r14,%r8 + xorq %r11,%r8 + movq %r8,44(%rsi) + + + xorq -84(%rdi),%rdx + xorq -36(%rdi),%rbp + rolq $62,%rdx + xorq 68(%rdi),%rcx + rolq $55,%rbp + xorq 12(%rdi),%rax + rolq $2,%rcx + xorq 20(%rdi),%rbx + xchgq %rsi,%rdi + rolq $39,%rax + rolq $41,%rbx + movq %rdx,%r13 + andq %rbp,%rdx + notq %rbp + xorq %rcx,%rdx + movq %rdx,92(%rdi) + + movq %rax,%r14 + andq %rbp,%rax + xorq %r13,%rax + movq %rax,60(%rdi) + + orq %rcx,%r13 + xorq %rbx,%r13 + movq %r13,84(%rdi) + + andq %rbx,%rcx + xorq %r14,%rcx + movq %rcx,76(%rdi) + + orq %r14,%rbx + xorq %rbp,%rbx + movq %rbx,68(%rdi) + + movq %rdx,%rbp + movq %r13,%rdx + + testq $255,%r15 + jnz L$oop + + leaq -192(%r15),%r15 + .byte 0xf3,0xc3 + + + + +.p2align 5 +KeccakF1600: + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + leaq 100(%rdi),%rdi + subq $200,%rsp + + + notq -92(%rdi) + notq -84(%rdi) + notq -36(%rdi) + notq -4(%rdi) + notq 36(%rdi) + notq 60(%rdi) + + leaq iotas(%rip),%r15 + leaq 100(%rsp),%rsi + + call __KeccakF1600 + + notq -92(%rdi) + notq -84(%rdi) + notq -36(%rdi) + notq -4(%rdi) + notq 36(%rdi) + notq 60(%rdi) + leaq -100(%rdi),%rdi + + addq $200,%rsp + + + popq %r15 + + popq %r14 + + popq %r13 + + popq %r12 + + popq %rbp + + popq %rbx + + .byte 0xf3,0xc3 + + +.globl _SHA3_absorb + +.p2align 5 +_SHA3_absorb: + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + leaq 100(%rdi),%rdi + subq $232,%rsp + + + movq %rsi,%r9 + leaq 100(%rsp),%rsi + + notq -92(%rdi) + notq -84(%rdi) + notq -36(%rdi) + notq -4(%rdi) + notq 36(%rdi) + notq 60(%rdi) + leaq iotas(%rip),%r15 + + movq %rcx,216-100(%rsi) + +L$oop_absorb: + cmpq %rcx,%rdx + jc L$done_absorb + + shrq $3,%rcx + leaq -100(%rdi),%r8 + +L$block_absorb: + movq (%r9),%rax + leaq 8(%r9),%r9 + xorq (%r8),%rax + leaq 8(%r8),%r8 + subq $8,%rdx + movq %rax,-8(%r8) + subq $1,%rcx + jnz L$block_absorb + + movq %r9,200-100(%rsi) + movq %rdx,208-100(%rsi) + call __KeccakF1600 + movq 200-100(%rsi),%r9 + movq 208-100(%rsi),%rdx + movq 216-100(%rsi),%rcx + jmp L$oop_absorb + +.p2align 5 +L$done_absorb: + movq %rdx,%rax + + notq -92(%rdi) + notq -84(%rdi) + notq -36(%rdi) + notq -4(%rdi) + notq 36(%rdi) + notq 60(%rdi) + + addq $232,%rsp + + + popq %r15 + + popq %r14 + + popq %r13 + + popq %r12 + + popq %rbp + + popq %rbx + + .byte 0xf3,0xc3 + + +.globl _SHA3_squeeze + +.p2align 5 +_SHA3_squeeze: + + pushq %r12 + + pushq %r13 + + pushq %r14 + + + shrq $3,%rcx + movq %rdi,%r8 + movq %rsi,%r12 + movq %rdx,%r13 + movq %rcx,%r14 + jmp L$oop_squeeze + +.p2align 5 +L$oop_squeeze: + cmpq $8,%r13 + jb L$tail_squeeze + + movq (%r8),%rax + leaq 8(%r8),%r8 + movq %rax,(%r12) + leaq 8(%r12),%r12 + subq $8,%r13 + jz L$done_squeeze + + subq $1,%rcx + jnz L$oop_squeeze + + call KeccakF1600 + movq %rdi,%r8 + movq %r14,%rcx + jmp L$oop_squeeze + +L$tail_squeeze: + movq %r8,%rsi + movq %r12,%rdi + movq %r13,%rcx +.byte 0xf3,0xa4 + +L$done_squeeze: + popq %r14 + + popq %r13 + + popq %r12 + + .byte 0xf3,0xc3 + + +.p2align 8 +.quad 0,0,0,0,0,0,0,0 + +iotas: +.quad 0x0000000000000001 +.quad 0x0000000000008082 +.quad 0x800000000000808a +.quad 0x8000000080008000 +.quad 0x000000000000808b +.quad 0x0000000080000001 +.quad 0x8000000080008081 +.quad 0x8000000000008009 +.quad 0x000000000000008a +.quad 0x0000000000000088 +.quad 0x0000000080008009 +.quad 0x000000008000000a +.quad 0x000000008000808b +.quad 0x800000000000008b +.quad 0x8000000000008089 +.quad 0x8000000000008003 +.quad 0x8000000000008002 +.quad 0x8000000000000080 +.quad 0x000000000000800a +.quad 0x800000008000000a +.quad 0x8000000080008081 +.quad 0x8000000000008080 +.quad 0x0000000080000001 +.quad 0x8000000080008008 + +.byte 75,101,99,99,97,107,45,49,54,48,48,32,97,98,115,111,114,98,32,97,110,100,32,115,113,117,101,101,122,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha1-mb-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha1-mb-x86_64.s new file mode 100644 index 0000000..b2009fb --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha1-mb-x86_64.s @@ -0,0 +1,7267 @@ +.text + + + +.globl _sha1_multi_block + +.p2align 5 +_sha1_multi_block: + + movq _OPENSSL_ia32cap_P+4(%rip),%rcx + btq $61,%rcx + jc _shaext_shortcut + testl $268435456,%ecx + jnz _avx_shortcut + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + subq $288,%rsp + andq $-256,%rsp + movq %rax,272(%rsp) + +L$body: + leaq K_XX_XX(%rip),%rbp + leaq 256(%rsp),%rbx + +L$oop_grande: + movl %edx,280(%rsp) + xorl %edx,%edx + movq 0(%rsi),%r8 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rbp,%r8 + movq 16(%rsi),%r9 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rbp,%r9 + movq 32(%rsi),%r10 + movl 40(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,8(%rbx) + cmovleq %rbp,%r10 + movq 48(%rsi),%r11 + movl 56(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,12(%rbx) + cmovleq %rbp,%r11 + testl %edx,%edx + jz L$done + + movdqu 0(%rdi),%xmm10 + leaq 128(%rsp),%rax + movdqu 32(%rdi),%xmm11 + movdqu 64(%rdi),%xmm12 + movdqu 96(%rdi),%xmm13 + movdqu 128(%rdi),%xmm14 + movdqa 96(%rbp),%xmm5 + movdqa -32(%rbp),%xmm15 + jmp L$oop + +.p2align 5 +L$oop: + movd (%r8),%xmm0 + leaq 64(%r8),%r8 + movd (%r9),%xmm2 + leaq 64(%r9),%r9 + movd (%r10),%xmm3 + leaq 64(%r10),%r10 + movd (%r11),%xmm4 + leaq 64(%r11),%r11 + punpckldq %xmm3,%xmm0 + movd -60(%r8),%xmm1 + punpckldq %xmm4,%xmm2 + movd -60(%r9),%xmm9 + punpckldq %xmm2,%xmm0 + movd -60(%r10),%xmm8 +.byte 102,15,56,0,197 + movd -60(%r11),%xmm7 + punpckldq %xmm8,%xmm1 + movdqa %xmm10,%xmm8 + paddd %xmm15,%xmm14 + punpckldq %xmm7,%xmm9 + movdqa %xmm11,%xmm7 + movdqa %xmm11,%xmm6 + pslld $5,%xmm8 + pandn %xmm13,%xmm7 + pand %xmm12,%xmm6 + punpckldq %xmm9,%xmm1 + movdqa %xmm10,%xmm9 + + movdqa %xmm0,0-128(%rax) + paddd %xmm0,%xmm14 + movd -56(%r8),%xmm2 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm11,%xmm7 + + por %xmm9,%xmm8 + movd -56(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 +.byte 102,15,56,0,205 + movd -56(%r10),%xmm8 + por %xmm7,%xmm11 + movd -56(%r11),%xmm7 + punpckldq %xmm8,%xmm2 + movdqa %xmm14,%xmm8 + paddd %xmm15,%xmm13 + punpckldq %xmm7,%xmm9 + movdqa %xmm10,%xmm7 + movdqa %xmm10,%xmm6 + pslld $5,%xmm8 + pandn %xmm12,%xmm7 + pand %xmm11,%xmm6 + punpckldq %xmm9,%xmm2 + movdqa %xmm14,%xmm9 + + movdqa %xmm1,16-128(%rax) + paddd %xmm1,%xmm13 + movd -52(%r8),%xmm3 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm10,%xmm7 + + por %xmm9,%xmm8 + movd -52(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 +.byte 102,15,56,0,213 + movd -52(%r10),%xmm8 + por %xmm7,%xmm10 + movd -52(%r11),%xmm7 + punpckldq %xmm8,%xmm3 + movdqa %xmm13,%xmm8 + paddd %xmm15,%xmm12 + punpckldq %xmm7,%xmm9 + movdqa %xmm14,%xmm7 + movdqa %xmm14,%xmm6 + pslld $5,%xmm8 + pandn %xmm11,%xmm7 + pand %xmm10,%xmm6 + punpckldq %xmm9,%xmm3 + movdqa %xmm13,%xmm9 + + movdqa %xmm2,32-128(%rax) + paddd %xmm2,%xmm12 + movd -48(%r8),%xmm4 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm14,%xmm7 + + por %xmm9,%xmm8 + movd -48(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 +.byte 102,15,56,0,221 + movd -48(%r10),%xmm8 + por %xmm7,%xmm14 + movd -48(%r11),%xmm7 + punpckldq %xmm8,%xmm4 + movdqa %xmm12,%xmm8 + paddd %xmm15,%xmm11 + punpckldq %xmm7,%xmm9 + movdqa %xmm13,%xmm7 + movdqa %xmm13,%xmm6 + pslld $5,%xmm8 + pandn %xmm10,%xmm7 + pand %xmm14,%xmm6 + punpckldq %xmm9,%xmm4 + movdqa %xmm12,%xmm9 + + movdqa %xmm3,48-128(%rax) + paddd %xmm3,%xmm11 + movd -44(%r8),%xmm0 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm13,%xmm7 + + por %xmm9,%xmm8 + movd -44(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 +.byte 102,15,56,0,229 + movd -44(%r10),%xmm8 + por %xmm7,%xmm13 + movd -44(%r11),%xmm7 + punpckldq %xmm8,%xmm0 + movdqa %xmm11,%xmm8 + paddd %xmm15,%xmm10 + punpckldq %xmm7,%xmm9 + movdqa %xmm12,%xmm7 + movdqa %xmm12,%xmm6 + pslld $5,%xmm8 + pandn %xmm14,%xmm7 + pand %xmm13,%xmm6 + punpckldq %xmm9,%xmm0 + movdqa %xmm11,%xmm9 + + movdqa %xmm4,64-128(%rax) + paddd %xmm4,%xmm10 + movd -40(%r8),%xmm1 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm12,%xmm7 + + por %xmm9,%xmm8 + movd -40(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 +.byte 102,15,56,0,197 + movd -40(%r10),%xmm8 + por %xmm7,%xmm12 + movd -40(%r11),%xmm7 + punpckldq %xmm8,%xmm1 + movdqa %xmm10,%xmm8 + paddd %xmm15,%xmm14 + punpckldq %xmm7,%xmm9 + movdqa %xmm11,%xmm7 + movdqa %xmm11,%xmm6 + pslld $5,%xmm8 + pandn %xmm13,%xmm7 + pand %xmm12,%xmm6 + punpckldq %xmm9,%xmm1 + movdqa %xmm10,%xmm9 + + movdqa %xmm0,80-128(%rax) + paddd %xmm0,%xmm14 + movd -36(%r8),%xmm2 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm11,%xmm7 + + por %xmm9,%xmm8 + movd -36(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 +.byte 102,15,56,0,205 + movd -36(%r10),%xmm8 + por %xmm7,%xmm11 + movd -36(%r11),%xmm7 + punpckldq %xmm8,%xmm2 + movdqa %xmm14,%xmm8 + paddd %xmm15,%xmm13 + punpckldq %xmm7,%xmm9 + movdqa %xmm10,%xmm7 + movdqa %xmm10,%xmm6 + pslld $5,%xmm8 + pandn %xmm12,%xmm7 + pand %xmm11,%xmm6 + punpckldq %xmm9,%xmm2 + movdqa %xmm14,%xmm9 + + movdqa %xmm1,96-128(%rax) + paddd %xmm1,%xmm13 + movd -32(%r8),%xmm3 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm10,%xmm7 + + por %xmm9,%xmm8 + movd -32(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 +.byte 102,15,56,0,213 + movd -32(%r10),%xmm8 + por %xmm7,%xmm10 + movd -32(%r11),%xmm7 + punpckldq %xmm8,%xmm3 + movdqa %xmm13,%xmm8 + paddd %xmm15,%xmm12 + punpckldq %xmm7,%xmm9 + movdqa %xmm14,%xmm7 + movdqa %xmm14,%xmm6 + pslld $5,%xmm8 + pandn %xmm11,%xmm7 + pand %xmm10,%xmm6 + punpckldq %xmm9,%xmm3 + movdqa %xmm13,%xmm9 + + movdqa %xmm2,112-128(%rax) + paddd %xmm2,%xmm12 + movd -28(%r8),%xmm4 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm14,%xmm7 + + por %xmm9,%xmm8 + movd -28(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 +.byte 102,15,56,0,221 + movd -28(%r10),%xmm8 + por %xmm7,%xmm14 + movd -28(%r11),%xmm7 + punpckldq %xmm8,%xmm4 + movdqa %xmm12,%xmm8 + paddd %xmm15,%xmm11 + punpckldq %xmm7,%xmm9 + movdqa %xmm13,%xmm7 + movdqa %xmm13,%xmm6 + pslld $5,%xmm8 + pandn %xmm10,%xmm7 + pand %xmm14,%xmm6 + punpckldq %xmm9,%xmm4 + movdqa %xmm12,%xmm9 + + movdqa %xmm3,128-128(%rax) + paddd %xmm3,%xmm11 + movd -24(%r8),%xmm0 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm13,%xmm7 + + por %xmm9,%xmm8 + movd -24(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 +.byte 102,15,56,0,229 + movd -24(%r10),%xmm8 + por %xmm7,%xmm13 + movd -24(%r11),%xmm7 + punpckldq %xmm8,%xmm0 + movdqa %xmm11,%xmm8 + paddd %xmm15,%xmm10 + punpckldq %xmm7,%xmm9 + movdqa %xmm12,%xmm7 + movdqa %xmm12,%xmm6 + pslld $5,%xmm8 + pandn %xmm14,%xmm7 + pand %xmm13,%xmm6 + punpckldq %xmm9,%xmm0 + movdqa %xmm11,%xmm9 + + movdqa %xmm4,144-128(%rax) + paddd %xmm4,%xmm10 + movd -20(%r8),%xmm1 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm12,%xmm7 + + por %xmm9,%xmm8 + movd -20(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 +.byte 102,15,56,0,197 + movd -20(%r10),%xmm8 + por %xmm7,%xmm12 + movd -20(%r11),%xmm7 + punpckldq %xmm8,%xmm1 + movdqa %xmm10,%xmm8 + paddd %xmm15,%xmm14 + punpckldq %xmm7,%xmm9 + movdqa %xmm11,%xmm7 + movdqa %xmm11,%xmm6 + pslld $5,%xmm8 + pandn %xmm13,%xmm7 + pand %xmm12,%xmm6 + punpckldq %xmm9,%xmm1 + movdqa %xmm10,%xmm9 + + movdqa %xmm0,160-128(%rax) + paddd %xmm0,%xmm14 + movd -16(%r8),%xmm2 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm11,%xmm7 + + por %xmm9,%xmm8 + movd -16(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 +.byte 102,15,56,0,205 + movd -16(%r10),%xmm8 + por %xmm7,%xmm11 + movd -16(%r11),%xmm7 + punpckldq %xmm8,%xmm2 + movdqa %xmm14,%xmm8 + paddd %xmm15,%xmm13 + punpckldq %xmm7,%xmm9 + movdqa %xmm10,%xmm7 + movdqa %xmm10,%xmm6 + pslld $5,%xmm8 + pandn %xmm12,%xmm7 + pand %xmm11,%xmm6 + punpckldq %xmm9,%xmm2 + movdqa %xmm14,%xmm9 + + movdqa %xmm1,176-128(%rax) + paddd %xmm1,%xmm13 + movd -12(%r8),%xmm3 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm10,%xmm7 + + por %xmm9,%xmm8 + movd -12(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 +.byte 102,15,56,0,213 + movd -12(%r10),%xmm8 + por %xmm7,%xmm10 + movd -12(%r11),%xmm7 + punpckldq %xmm8,%xmm3 + movdqa %xmm13,%xmm8 + paddd %xmm15,%xmm12 + punpckldq %xmm7,%xmm9 + movdqa %xmm14,%xmm7 + movdqa %xmm14,%xmm6 + pslld $5,%xmm8 + pandn %xmm11,%xmm7 + pand %xmm10,%xmm6 + punpckldq %xmm9,%xmm3 + movdqa %xmm13,%xmm9 + + movdqa %xmm2,192-128(%rax) + paddd %xmm2,%xmm12 + movd -8(%r8),%xmm4 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm14,%xmm7 + + por %xmm9,%xmm8 + movd -8(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 +.byte 102,15,56,0,221 + movd -8(%r10),%xmm8 + por %xmm7,%xmm14 + movd -8(%r11),%xmm7 + punpckldq %xmm8,%xmm4 + movdqa %xmm12,%xmm8 + paddd %xmm15,%xmm11 + punpckldq %xmm7,%xmm9 + movdqa %xmm13,%xmm7 + movdqa %xmm13,%xmm6 + pslld $5,%xmm8 + pandn %xmm10,%xmm7 + pand %xmm14,%xmm6 + punpckldq %xmm9,%xmm4 + movdqa %xmm12,%xmm9 + + movdqa %xmm3,208-128(%rax) + paddd %xmm3,%xmm11 + movd -4(%r8),%xmm0 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm13,%xmm7 + + por %xmm9,%xmm8 + movd -4(%r9),%xmm9 + pslld $30,%xmm7 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 +.byte 102,15,56,0,229 + movd -4(%r10),%xmm8 + por %xmm7,%xmm13 + movdqa 0-128(%rax),%xmm1 + movd -4(%r11),%xmm7 + punpckldq %xmm8,%xmm0 + movdqa %xmm11,%xmm8 + paddd %xmm15,%xmm10 + punpckldq %xmm7,%xmm9 + movdqa %xmm12,%xmm7 + movdqa %xmm12,%xmm6 + pslld $5,%xmm8 + prefetcht0 63(%r8) + pandn %xmm14,%xmm7 + pand %xmm13,%xmm6 + punpckldq %xmm9,%xmm0 + movdqa %xmm11,%xmm9 + + movdqa %xmm4,224-128(%rax) + paddd %xmm4,%xmm10 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + movdqa %xmm12,%xmm7 + prefetcht0 63(%r9) + + por %xmm9,%xmm8 + pslld $30,%xmm7 + paddd %xmm6,%xmm10 + prefetcht0 63(%r10) + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 +.byte 102,15,56,0,197 + prefetcht0 63(%r11) + por %xmm7,%xmm12 + movdqa 16-128(%rax),%xmm2 + pxor %xmm3,%xmm1 + movdqa 32-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + pxor 128-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + movdqa %xmm11,%xmm7 + pslld $5,%xmm8 + pxor %xmm3,%xmm1 + movdqa %xmm11,%xmm6 + pandn %xmm13,%xmm7 + movdqa %xmm1,%xmm5 + pand %xmm12,%xmm6 + movdqa %xmm10,%xmm9 + psrld $31,%xmm5 + paddd %xmm1,%xmm1 + + movdqa %xmm0,240-128(%rax) + paddd %xmm0,%xmm14 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + + movdqa %xmm11,%xmm7 + por %xmm9,%xmm8 + pslld $30,%xmm7 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 48-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + pxor 144-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + movdqa %xmm10,%xmm7 + pslld $5,%xmm8 + pxor %xmm4,%xmm2 + movdqa %xmm10,%xmm6 + pandn %xmm12,%xmm7 + movdqa %xmm2,%xmm5 + pand %xmm11,%xmm6 + movdqa %xmm14,%xmm9 + psrld $31,%xmm5 + paddd %xmm2,%xmm2 + + movdqa %xmm1,0-128(%rax) + paddd %xmm1,%xmm13 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + + movdqa %xmm10,%xmm7 + por %xmm9,%xmm8 + pslld $30,%xmm7 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 64-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + pxor 160-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + movdqa %xmm14,%xmm7 + pslld $5,%xmm8 + pxor %xmm0,%xmm3 + movdqa %xmm14,%xmm6 + pandn %xmm11,%xmm7 + movdqa %xmm3,%xmm5 + pand %xmm10,%xmm6 + movdqa %xmm13,%xmm9 + psrld $31,%xmm5 + paddd %xmm3,%xmm3 + + movdqa %xmm2,16-128(%rax) + paddd %xmm2,%xmm12 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + + movdqa %xmm14,%xmm7 + por %xmm9,%xmm8 + pslld $30,%xmm7 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 80-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + pxor 176-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + movdqa %xmm13,%xmm7 + pslld $5,%xmm8 + pxor %xmm1,%xmm4 + movdqa %xmm13,%xmm6 + pandn %xmm10,%xmm7 + movdqa %xmm4,%xmm5 + pand %xmm14,%xmm6 + movdqa %xmm12,%xmm9 + psrld $31,%xmm5 + paddd %xmm4,%xmm4 + + movdqa %xmm3,32-128(%rax) + paddd %xmm3,%xmm11 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + + movdqa %xmm13,%xmm7 + por %xmm9,%xmm8 + pslld $30,%xmm7 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 96-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + pxor 192-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + movdqa %xmm12,%xmm7 + pslld $5,%xmm8 + pxor %xmm2,%xmm0 + movdqa %xmm12,%xmm6 + pandn %xmm14,%xmm7 + movdqa %xmm0,%xmm5 + pand %xmm13,%xmm6 + movdqa %xmm11,%xmm9 + psrld $31,%xmm5 + paddd %xmm0,%xmm0 + + movdqa %xmm4,48-128(%rax) + paddd %xmm4,%xmm10 + psrld $27,%xmm9 + pxor %xmm7,%xmm6 + + movdqa %xmm12,%xmm7 + por %xmm9,%xmm8 + pslld $30,%xmm7 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + movdqa 0(%rbp),%xmm15 + pxor %xmm3,%xmm1 + movdqa 112-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 208-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,64-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 128-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 224-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,80-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 144-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 240-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + movdqa %xmm2,96-128(%rax) + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 160-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 0-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + movdqa %xmm3,112-128(%rax) + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 176-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 16-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + movdqa %xmm4,128-128(%rax) + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 192-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 32-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,144-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 208-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 48-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,160-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 224-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 64-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + movdqa %xmm2,176-128(%rax) + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 240-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 80-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + movdqa %xmm3,192-128(%rax) + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 0-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 96-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + movdqa %xmm4,208-128(%rax) + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 16-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 112-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,224-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 32-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 128-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,240-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 48-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 144-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + movdqa %xmm2,0-128(%rax) + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 64-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 160-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + movdqa %xmm3,16-128(%rax) + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 80-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 176-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + movdqa %xmm4,32-128(%rax) + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 96-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 192-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,48-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 112-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 208-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,64-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 128-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 224-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + movdqa %xmm2,80-128(%rax) + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 144-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 240-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + movdqa %xmm3,96-128(%rax) + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 160-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 0-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + movdqa %xmm4,112-128(%rax) + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + movdqa 32(%rbp),%xmm15 + pxor %xmm3,%xmm1 + movdqa 176-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm7 + pxor 16-128(%rax),%xmm1 + pxor %xmm3,%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + movdqa %xmm10,%xmm9 + pand %xmm12,%xmm7 + + movdqa %xmm13,%xmm6 + movdqa %xmm1,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm14 + pxor %xmm12,%xmm6 + + movdqa %xmm0,128-128(%rax) + paddd %xmm0,%xmm14 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm11,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + paddd %xmm1,%xmm1 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 192-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm7 + pxor 32-128(%rax),%xmm2 + pxor %xmm4,%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + movdqa %xmm14,%xmm9 + pand %xmm11,%xmm7 + + movdqa %xmm12,%xmm6 + movdqa %xmm2,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm13 + pxor %xmm11,%xmm6 + + movdqa %xmm1,144-128(%rax) + paddd %xmm1,%xmm13 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm10,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + paddd %xmm2,%xmm2 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 208-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm7 + pxor 48-128(%rax),%xmm3 + pxor %xmm0,%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + movdqa %xmm13,%xmm9 + pand %xmm10,%xmm7 + + movdqa %xmm11,%xmm6 + movdqa %xmm3,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm12 + pxor %xmm10,%xmm6 + + movdqa %xmm2,160-128(%rax) + paddd %xmm2,%xmm12 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm14,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + paddd %xmm3,%xmm3 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 224-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm7 + pxor 64-128(%rax),%xmm4 + pxor %xmm1,%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + movdqa %xmm12,%xmm9 + pand %xmm14,%xmm7 + + movdqa %xmm10,%xmm6 + movdqa %xmm4,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm11 + pxor %xmm14,%xmm6 + + movdqa %xmm3,176-128(%rax) + paddd %xmm3,%xmm11 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm13,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + paddd %xmm4,%xmm4 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 240-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm7 + pxor 80-128(%rax),%xmm0 + pxor %xmm2,%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + movdqa %xmm11,%xmm9 + pand %xmm13,%xmm7 + + movdqa %xmm14,%xmm6 + movdqa %xmm0,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm10 + pxor %xmm13,%xmm6 + + movdqa %xmm4,192-128(%rax) + paddd %xmm4,%xmm10 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm12,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + paddd %xmm0,%xmm0 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 0-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm7 + pxor 96-128(%rax),%xmm1 + pxor %xmm3,%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + movdqa %xmm10,%xmm9 + pand %xmm12,%xmm7 + + movdqa %xmm13,%xmm6 + movdqa %xmm1,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm14 + pxor %xmm12,%xmm6 + + movdqa %xmm0,208-128(%rax) + paddd %xmm0,%xmm14 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm11,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + paddd %xmm1,%xmm1 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 16-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm7 + pxor 112-128(%rax),%xmm2 + pxor %xmm4,%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + movdqa %xmm14,%xmm9 + pand %xmm11,%xmm7 + + movdqa %xmm12,%xmm6 + movdqa %xmm2,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm13 + pxor %xmm11,%xmm6 + + movdqa %xmm1,224-128(%rax) + paddd %xmm1,%xmm13 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm10,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + paddd %xmm2,%xmm2 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 32-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm7 + pxor 128-128(%rax),%xmm3 + pxor %xmm0,%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + movdqa %xmm13,%xmm9 + pand %xmm10,%xmm7 + + movdqa %xmm11,%xmm6 + movdqa %xmm3,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm12 + pxor %xmm10,%xmm6 + + movdqa %xmm2,240-128(%rax) + paddd %xmm2,%xmm12 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm14,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + paddd %xmm3,%xmm3 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 48-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm7 + pxor 144-128(%rax),%xmm4 + pxor %xmm1,%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + movdqa %xmm12,%xmm9 + pand %xmm14,%xmm7 + + movdqa %xmm10,%xmm6 + movdqa %xmm4,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm11 + pxor %xmm14,%xmm6 + + movdqa %xmm3,0-128(%rax) + paddd %xmm3,%xmm11 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm13,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + paddd %xmm4,%xmm4 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 64-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm7 + pxor 160-128(%rax),%xmm0 + pxor %xmm2,%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + movdqa %xmm11,%xmm9 + pand %xmm13,%xmm7 + + movdqa %xmm14,%xmm6 + movdqa %xmm0,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm10 + pxor %xmm13,%xmm6 + + movdqa %xmm4,16-128(%rax) + paddd %xmm4,%xmm10 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm12,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + paddd %xmm0,%xmm0 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 80-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm7 + pxor 176-128(%rax),%xmm1 + pxor %xmm3,%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + movdqa %xmm10,%xmm9 + pand %xmm12,%xmm7 + + movdqa %xmm13,%xmm6 + movdqa %xmm1,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm14 + pxor %xmm12,%xmm6 + + movdqa %xmm0,32-128(%rax) + paddd %xmm0,%xmm14 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm11,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + paddd %xmm1,%xmm1 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 96-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm7 + pxor 192-128(%rax),%xmm2 + pxor %xmm4,%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + movdqa %xmm14,%xmm9 + pand %xmm11,%xmm7 + + movdqa %xmm12,%xmm6 + movdqa %xmm2,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm13 + pxor %xmm11,%xmm6 + + movdqa %xmm1,48-128(%rax) + paddd %xmm1,%xmm13 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm10,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + paddd %xmm2,%xmm2 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 112-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm7 + pxor 208-128(%rax),%xmm3 + pxor %xmm0,%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + movdqa %xmm13,%xmm9 + pand %xmm10,%xmm7 + + movdqa %xmm11,%xmm6 + movdqa %xmm3,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm12 + pxor %xmm10,%xmm6 + + movdqa %xmm2,64-128(%rax) + paddd %xmm2,%xmm12 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm14,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + paddd %xmm3,%xmm3 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 128-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm7 + pxor 224-128(%rax),%xmm4 + pxor %xmm1,%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + movdqa %xmm12,%xmm9 + pand %xmm14,%xmm7 + + movdqa %xmm10,%xmm6 + movdqa %xmm4,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm11 + pxor %xmm14,%xmm6 + + movdqa %xmm3,80-128(%rax) + paddd %xmm3,%xmm11 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm13,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + paddd %xmm4,%xmm4 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 144-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm7 + pxor 240-128(%rax),%xmm0 + pxor %xmm2,%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + movdqa %xmm11,%xmm9 + pand %xmm13,%xmm7 + + movdqa %xmm14,%xmm6 + movdqa %xmm0,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm10 + pxor %xmm13,%xmm6 + + movdqa %xmm4,96-128(%rax) + paddd %xmm4,%xmm10 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm12,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + paddd %xmm0,%xmm0 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 160-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm7 + pxor 0-128(%rax),%xmm1 + pxor %xmm3,%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + movdqa %xmm10,%xmm9 + pand %xmm12,%xmm7 + + movdqa %xmm13,%xmm6 + movdqa %xmm1,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm14 + pxor %xmm12,%xmm6 + + movdqa %xmm0,112-128(%rax) + paddd %xmm0,%xmm14 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm11,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + paddd %xmm1,%xmm1 + paddd %xmm6,%xmm14 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 176-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm7 + pxor 16-128(%rax),%xmm2 + pxor %xmm4,%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + movdqa %xmm14,%xmm9 + pand %xmm11,%xmm7 + + movdqa %xmm12,%xmm6 + movdqa %xmm2,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm13 + pxor %xmm11,%xmm6 + + movdqa %xmm1,128-128(%rax) + paddd %xmm1,%xmm13 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm10,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + paddd %xmm2,%xmm2 + paddd %xmm6,%xmm13 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 192-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm7 + pxor 32-128(%rax),%xmm3 + pxor %xmm0,%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + movdqa %xmm13,%xmm9 + pand %xmm10,%xmm7 + + movdqa %xmm11,%xmm6 + movdqa %xmm3,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm12 + pxor %xmm10,%xmm6 + + movdqa %xmm2,144-128(%rax) + paddd %xmm2,%xmm12 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm14,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + paddd %xmm3,%xmm3 + paddd %xmm6,%xmm12 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 208-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm7 + pxor 48-128(%rax),%xmm4 + pxor %xmm1,%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + movdqa %xmm12,%xmm9 + pand %xmm14,%xmm7 + + movdqa %xmm10,%xmm6 + movdqa %xmm4,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm11 + pxor %xmm14,%xmm6 + + movdqa %xmm3,160-128(%rax) + paddd %xmm3,%xmm11 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm13,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + paddd %xmm4,%xmm4 + paddd %xmm6,%xmm11 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 224-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm7 + pxor 64-128(%rax),%xmm0 + pxor %xmm2,%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + movdqa %xmm11,%xmm9 + pand %xmm13,%xmm7 + + movdqa %xmm14,%xmm6 + movdqa %xmm0,%xmm5 + psrld $27,%xmm9 + paddd %xmm7,%xmm10 + pxor %xmm13,%xmm6 + + movdqa %xmm4,176-128(%rax) + paddd %xmm4,%xmm10 + por %xmm9,%xmm8 + psrld $31,%xmm5 + pand %xmm12,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + paddd %xmm0,%xmm0 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + movdqa 64(%rbp),%xmm15 + pxor %xmm3,%xmm1 + movdqa 240-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 80-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,192-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 0-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 96-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,208-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 16-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 112-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + movdqa %xmm2,224-128(%rax) + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 32-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 128-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + movdqa %xmm3,240-128(%rax) + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 48-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 144-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + movdqa %xmm4,0-128(%rax) + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 64-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 160-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,16-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 80-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 176-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,32-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 96-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 192-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + movdqa %xmm2,48-128(%rax) + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 112-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 208-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + movdqa %xmm3,64-128(%rax) + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 128-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 224-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + movdqa %xmm4,80-128(%rax) + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 144-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 240-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + movdqa %xmm0,96-128(%rax) + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 160-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 0-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + movdqa %xmm1,112-128(%rax) + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 176-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 16-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 192-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 32-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + pxor %xmm2,%xmm0 + movdqa 208-128(%rax),%xmm2 + + movdqa %xmm11,%xmm8 + movdqa %xmm14,%xmm6 + pxor 48-128(%rax),%xmm0 + paddd %xmm15,%xmm10 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + paddd %xmm4,%xmm10 + pxor %xmm2,%xmm0 + psrld $27,%xmm9 + pxor %xmm13,%xmm6 + movdqa %xmm12,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm0,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm10 + paddd %xmm0,%xmm0 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm5,%xmm0 + por %xmm7,%xmm12 + pxor %xmm3,%xmm1 + movdqa 224-128(%rax),%xmm3 + + movdqa %xmm10,%xmm8 + movdqa %xmm13,%xmm6 + pxor 64-128(%rax),%xmm1 + paddd %xmm15,%xmm14 + pslld $5,%xmm8 + pxor %xmm11,%xmm6 + + movdqa %xmm10,%xmm9 + paddd %xmm0,%xmm14 + pxor %xmm3,%xmm1 + psrld $27,%xmm9 + pxor %xmm12,%xmm6 + movdqa %xmm11,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm1,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm14 + paddd %xmm1,%xmm1 + + psrld $2,%xmm11 + paddd %xmm8,%xmm14 + por %xmm5,%xmm1 + por %xmm7,%xmm11 + pxor %xmm4,%xmm2 + movdqa 240-128(%rax),%xmm4 + + movdqa %xmm14,%xmm8 + movdqa %xmm12,%xmm6 + pxor 80-128(%rax),%xmm2 + paddd %xmm15,%xmm13 + pslld $5,%xmm8 + pxor %xmm10,%xmm6 + + movdqa %xmm14,%xmm9 + paddd %xmm1,%xmm13 + pxor %xmm4,%xmm2 + psrld $27,%xmm9 + pxor %xmm11,%xmm6 + movdqa %xmm10,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm2,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm13 + paddd %xmm2,%xmm2 + + psrld $2,%xmm10 + paddd %xmm8,%xmm13 + por %xmm5,%xmm2 + por %xmm7,%xmm10 + pxor %xmm0,%xmm3 + movdqa 0-128(%rax),%xmm0 + + movdqa %xmm13,%xmm8 + movdqa %xmm11,%xmm6 + pxor 96-128(%rax),%xmm3 + paddd %xmm15,%xmm12 + pslld $5,%xmm8 + pxor %xmm14,%xmm6 + + movdqa %xmm13,%xmm9 + paddd %xmm2,%xmm12 + pxor %xmm0,%xmm3 + psrld $27,%xmm9 + pxor %xmm10,%xmm6 + movdqa %xmm14,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm3,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm12 + paddd %xmm3,%xmm3 + + psrld $2,%xmm14 + paddd %xmm8,%xmm12 + por %xmm5,%xmm3 + por %xmm7,%xmm14 + pxor %xmm1,%xmm4 + movdqa 16-128(%rax),%xmm1 + + movdqa %xmm12,%xmm8 + movdqa %xmm10,%xmm6 + pxor 112-128(%rax),%xmm4 + paddd %xmm15,%xmm11 + pslld $5,%xmm8 + pxor %xmm13,%xmm6 + + movdqa %xmm12,%xmm9 + paddd %xmm3,%xmm11 + pxor %xmm1,%xmm4 + psrld $27,%xmm9 + pxor %xmm14,%xmm6 + movdqa %xmm13,%xmm7 + + pslld $30,%xmm7 + movdqa %xmm4,%xmm5 + por %xmm9,%xmm8 + psrld $31,%xmm5 + paddd %xmm6,%xmm11 + paddd %xmm4,%xmm4 + + psrld $2,%xmm13 + paddd %xmm8,%xmm11 + por %xmm5,%xmm4 + por %xmm7,%xmm13 + movdqa %xmm11,%xmm8 + paddd %xmm15,%xmm10 + movdqa %xmm14,%xmm6 + pslld $5,%xmm8 + pxor %xmm12,%xmm6 + + movdqa %xmm11,%xmm9 + paddd %xmm4,%xmm10 + psrld $27,%xmm9 + movdqa %xmm12,%xmm7 + pxor %xmm13,%xmm6 + + pslld $30,%xmm7 + por %xmm9,%xmm8 + paddd %xmm6,%xmm10 + + psrld $2,%xmm12 + paddd %xmm8,%xmm10 + por %xmm7,%xmm12 + movdqa (%rbx),%xmm0 + movl $1,%ecx + cmpl 0(%rbx),%ecx + pxor %xmm8,%xmm8 + cmovgeq %rbp,%r8 + cmpl 4(%rbx),%ecx + movdqa %xmm0,%xmm1 + cmovgeq %rbp,%r9 + cmpl 8(%rbx),%ecx + pcmpgtd %xmm8,%xmm1 + cmovgeq %rbp,%r10 + cmpl 12(%rbx),%ecx + paddd %xmm1,%xmm0 + cmovgeq %rbp,%r11 + + movdqu 0(%rdi),%xmm6 + pand %xmm1,%xmm10 + movdqu 32(%rdi),%xmm7 + pand %xmm1,%xmm11 + paddd %xmm6,%xmm10 + movdqu 64(%rdi),%xmm8 + pand %xmm1,%xmm12 + paddd %xmm7,%xmm11 + movdqu 96(%rdi),%xmm9 + pand %xmm1,%xmm13 + paddd %xmm8,%xmm12 + movdqu 128(%rdi),%xmm5 + pand %xmm1,%xmm14 + movdqu %xmm10,0(%rdi) + paddd %xmm9,%xmm13 + movdqu %xmm11,32(%rdi) + paddd %xmm5,%xmm14 + movdqu %xmm12,64(%rdi) + movdqu %xmm13,96(%rdi) + movdqu %xmm14,128(%rdi) + + movdqa %xmm0,(%rbx) + movdqa 96(%rbp),%xmm5 + movdqa -32(%rbp),%xmm15 + decl %edx + jnz L$oop + + movl 280(%rsp),%edx + leaq 16(%rdi),%rdi + leaq 64(%rsi),%rsi + decl %edx + jnz L$oop_grande + +L$done: + movq 272(%rsp),%rax + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +sha1_multi_block_shaext: + +_shaext_shortcut: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + subq $288,%rsp + shll $1,%edx + andq $-256,%rsp + leaq 64(%rdi),%rdi + movq %rax,272(%rsp) +L$body_shaext: + leaq 256(%rsp),%rbx + movdqa K_XX_XX+128(%rip),%xmm3 + +L$oop_grande_shaext: + movl %edx,280(%rsp) + xorl %edx,%edx + movq 0(%rsi),%r8 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rsp,%r8 + movq 16(%rsi),%r9 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rsp,%r9 + testl %edx,%edx + jz L$done_shaext + + movq 0-64(%rdi),%xmm0 + movq 32-64(%rdi),%xmm4 + movq 64-64(%rdi),%xmm5 + movq 96-64(%rdi),%xmm6 + movq 128-64(%rdi),%xmm7 + + punpckldq %xmm4,%xmm0 + punpckldq %xmm6,%xmm5 + + movdqa %xmm0,%xmm8 + punpcklqdq %xmm5,%xmm0 + punpckhqdq %xmm5,%xmm8 + + pshufd $63,%xmm7,%xmm1 + pshufd $127,%xmm7,%xmm9 + pshufd $27,%xmm0,%xmm0 + pshufd $27,%xmm8,%xmm8 + jmp L$oop_shaext + +.p2align 5 +L$oop_shaext: + movdqu 0(%r8),%xmm4 + movdqu 0(%r9),%xmm11 + movdqu 16(%r8),%xmm5 + movdqu 16(%r9),%xmm12 + movdqu 32(%r8),%xmm6 +.byte 102,15,56,0,227 + movdqu 32(%r9),%xmm13 +.byte 102,68,15,56,0,219 + movdqu 48(%r8),%xmm7 + leaq 64(%r8),%r8 +.byte 102,15,56,0,235 + movdqu 48(%r9),%xmm14 + leaq 64(%r9),%r9 +.byte 102,68,15,56,0,227 + + movdqa %xmm1,80(%rsp) + paddd %xmm4,%xmm1 + movdqa %xmm9,112(%rsp) + paddd %xmm11,%xmm9 + movdqa %xmm0,64(%rsp) + movdqa %xmm0,%xmm2 + movdqa %xmm8,96(%rsp) + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,0 +.byte 15,56,200,213 +.byte 69,15,58,204,193,0 +.byte 69,15,56,200,212 +.byte 102,15,56,0,243 + prefetcht0 127(%r8) +.byte 15,56,201,229 +.byte 102,68,15,56,0,235 + prefetcht0 127(%r9) +.byte 69,15,56,201,220 + +.byte 102,15,56,0,251 + movdqa %xmm0,%xmm1 +.byte 102,68,15,56,0,243 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,0 +.byte 15,56,200,206 +.byte 69,15,58,204,194,0 +.byte 69,15,56,200,205 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + pxor %xmm13,%xmm11 +.byte 69,15,56,201,229 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,0 +.byte 15,56,200,215 +.byte 69,15,58,204,193,0 +.byte 69,15,56,200,214 +.byte 15,56,202,231 +.byte 69,15,56,202,222 + pxor %xmm7,%xmm5 +.byte 15,56,201,247 + pxor %xmm14,%xmm12 +.byte 69,15,56,201,238 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,0 +.byte 15,56,200,204 +.byte 69,15,58,204,194,0 +.byte 69,15,56,200,203 +.byte 15,56,202,236 +.byte 69,15,56,202,227 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 + pxor %xmm11,%xmm13 +.byte 69,15,56,201,243 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,0 +.byte 15,56,200,213 +.byte 69,15,58,204,193,0 +.byte 69,15,56,200,212 +.byte 15,56,202,245 +.byte 69,15,56,202,236 + pxor %xmm5,%xmm7 +.byte 15,56,201,229 + pxor %xmm12,%xmm14 +.byte 69,15,56,201,220 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,1 +.byte 15,56,200,206 +.byte 69,15,58,204,194,1 +.byte 69,15,56,200,205 +.byte 15,56,202,254 +.byte 69,15,56,202,245 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + pxor %xmm13,%xmm11 +.byte 69,15,56,201,229 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,1 +.byte 15,56,200,215 +.byte 69,15,58,204,193,1 +.byte 69,15,56,200,214 +.byte 15,56,202,231 +.byte 69,15,56,202,222 + pxor %xmm7,%xmm5 +.byte 15,56,201,247 + pxor %xmm14,%xmm12 +.byte 69,15,56,201,238 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,1 +.byte 15,56,200,204 +.byte 69,15,58,204,194,1 +.byte 69,15,56,200,203 +.byte 15,56,202,236 +.byte 69,15,56,202,227 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 + pxor %xmm11,%xmm13 +.byte 69,15,56,201,243 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,1 +.byte 15,56,200,213 +.byte 69,15,58,204,193,1 +.byte 69,15,56,200,212 +.byte 15,56,202,245 +.byte 69,15,56,202,236 + pxor %xmm5,%xmm7 +.byte 15,56,201,229 + pxor %xmm12,%xmm14 +.byte 69,15,56,201,220 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,1 +.byte 15,56,200,206 +.byte 69,15,58,204,194,1 +.byte 69,15,56,200,205 +.byte 15,56,202,254 +.byte 69,15,56,202,245 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + pxor %xmm13,%xmm11 +.byte 69,15,56,201,229 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,2 +.byte 15,56,200,215 +.byte 69,15,58,204,193,2 +.byte 69,15,56,200,214 +.byte 15,56,202,231 +.byte 69,15,56,202,222 + pxor %xmm7,%xmm5 +.byte 15,56,201,247 + pxor %xmm14,%xmm12 +.byte 69,15,56,201,238 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,2 +.byte 15,56,200,204 +.byte 69,15,58,204,194,2 +.byte 69,15,56,200,203 +.byte 15,56,202,236 +.byte 69,15,56,202,227 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 + pxor %xmm11,%xmm13 +.byte 69,15,56,201,243 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,2 +.byte 15,56,200,213 +.byte 69,15,58,204,193,2 +.byte 69,15,56,200,212 +.byte 15,56,202,245 +.byte 69,15,56,202,236 + pxor %xmm5,%xmm7 +.byte 15,56,201,229 + pxor %xmm12,%xmm14 +.byte 69,15,56,201,220 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,2 +.byte 15,56,200,206 +.byte 69,15,58,204,194,2 +.byte 69,15,56,200,205 +.byte 15,56,202,254 +.byte 69,15,56,202,245 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 + pxor %xmm13,%xmm11 +.byte 69,15,56,201,229 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,2 +.byte 15,56,200,215 +.byte 69,15,58,204,193,2 +.byte 69,15,56,200,214 +.byte 15,56,202,231 +.byte 69,15,56,202,222 + pxor %xmm7,%xmm5 +.byte 15,56,201,247 + pxor %xmm14,%xmm12 +.byte 69,15,56,201,238 + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,3 +.byte 15,56,200,204 +.byte 69,15,58,204,194,3 +.byte 69,15,56,200,203 +.byte 15,56,202,236 +.byte 69,15,56,202,227 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 + pxor %xmm11,%xmm13 +.byte 69,15,56,201,243 + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,3 +.byte 15,56,200,213 +.byte 69,15,58,204,193,3 +.byte 69,15,56,200,212 +.byte 15,56,202,245 +.byte 69,15,56,202,236 + pxor %xmm5,%xmm7 + pxor %xmm12,%xmm14 + + movl $1,%ecx + pxor %xmm4,%xmm4 + cmpl 0(%rbx),%ecx + cmovgeq %rsp,%r8 + + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,3 +.byte 15,56,200,206 +.byte 69,15,58,204,194,3 +.byte 69,15,56,200,205 +.byte 15,56,202,254 +.byte 69,15,56,202,245 + + cmpl 4(%rbx),%ecx + cmovgeq %rsp,%r9 + movq (%rbx),%xmm6 + + movdqa %xmm0,%xmm2 + movdqa %xmm8,%xmm10 +.byte 15,58,204,193,3 +.byte 15,56,200,215 +.byte 69,15,58,204,193,3 +.byte 69,15,56,200,214 + + pshufd $0x00,%xmm6,%xmm11 + pshufd $0x55,%xmm6,%xmm12 + movdqa %xmm6,%xmm7 + pcmpgtd %xmm4,%xmm11 + pcmpgtd %xmm4,%xmm12 + + movdqa %xmm0,%xmm1 + movdqa %xmm8,%xmm9 +.byte 15,58,204,194,3 +.byte 15,56,200,204 +.byte 69,15,58,204,194,3 +.byte 68,15,56,200,204 + + pcmpgtd %xmm4,%xmm7 + pand %xmm11,%xmm0 + pand %xmm11,%xmm1 + pand %xmm12,%xmm8 + pand %xmm12,%xmm9 + paddd %xmm7,%xmm6 + + paddd 64(%rsp),%xmm0 + paddd 80(%rsp),%xmm1 + paddd 96(%rsp),%xmm8 + paddd 112(%rsp),%xmm9 + + movq %xmm6,(%rbx) + decl %edx + jnz L$oop_shaext + + movl 280(%rsp),%edx + + pshufd $27,%xmm0,%xmm0 + pshufd $27,%xmm8,%xmm8 + + movdqa %xmm0,%xmm6 + punpckldq %xmm8,%xmm0 + punpckhdq %xmm8,%xmm6 + punpckhdq %xmm9,%xmm1 + movq %xmm0,0-64(%rdi) + psrldq $8,%xmm0 + movq %xmm6,64-64(%rdi) + psrldq $8,%xmm6 + movq %xmm0,32-64(%rdi) + psrldq $8,%xmm1 + movq %xmm6,96-64(%rdi) + movq %xmm1,128-64(%rdi) + + leaq 8(%rdi),%rdi + leaq 32(%rsi),%rsi + decl %edx + jnz L$oop_grande_shaext + +L$done_shaext: + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$epilogue_shaext: + .byte 0xf3,0xc3 + + + +.p2align 5 +sha1_multi_block_avx: + +_avx_shortcut: + shrq $32,%rcx + cmpl $2,%edx + jb L$avx + testl $32,%ecx + jnz _avx2_shortcut + jmp L$avx +.p2align 5 +L$avx: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + subq $288,%rsp + andq $-256,%rsp + movq %rax,272(%rsp) + +L$body_avx: + leaq K_XX_XX(%rip),%rbp + leaq 256(%rsp),%rbx + + vzeroupper +L$oop_grande_avx: + movl %edx,280(%rsp) + xorl %edx,%edx + movq 0(%rsi),%r8 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rbp,%r8 + movq 16(%rsi),%r9 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rbp,%r9 + movq 32(%rsi),%r10 + movl 40(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,8(%rbx) + cmovleq %rbp,%r10 + movq 48(%rsi),%r11 + movl 56(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,12(%rbx) + cmovleq %rbp,%r11 + testl %edx,%edx + jz L$done_avx + + vmovdqu 0(%rdi),%xmm10 + leaq 128(%rsp),%rax + vmovdqu 32(%rdi),%xmm11 + vmovdqu 64(%rdi),%xmm12 + vmovdqu 96(%rdi),%xmm13 + vmovdqu 128(%rdi),%xmm14 + vmovdqu 96(%rbp),%xmm5 + jmp L$oop_avx + +.p2align 5 +L$oop_avx: + vmovdqa -32(%rbp),%xmm15 + vmovd (%r8),%xmm0 + leaq 64(%r8),%r8 + vmovd (%r9),%xmm2 + leaq 64(%r9),%r9 + vpinsrd $1,(%r10),%xmm0,%xmm0 + leaq 64(%r10),%r10 + vpinsrd $1,(%r11),%xmm2,%xmm2 + leaq 64(%r11),%r11 + vmovd -60(%r8),%xmm1 + vpunpckldq %xmm2,%xmm0,%xmm0 + vmovd -60(%r9),%xmm9 + vpshufb %xmm5,%xmm0,%xmm0 + vpinsrd $1,-60(%r10),%xmm1,%xmm1 + vpinsrd $1,-60(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpandn %xmm13,%xmm11,%xmm7 + vpand %xmm12,%xmm11,%xmm6 + + vmovdqa %xmm0,0-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpunpckldq %xmm9,%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -56(%r8),%xmm2 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -56(%r9),%xmm9 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpshufb %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpinsrd $1,-56(%r10),%xmm2,%xmm2 + vpinsrd $1,-56(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpandn %xmm12,%xmm10,%xmm7 + vpand %xmm11,%xmm10,%xmm6 + + vmovdqa %xmm1,16-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpunpckldq %xmm9,%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -52(%r8),%xmm3 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -52(%r9),%xmm9 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpshufb %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpinsrd $1,-52(%r10),%xmm3,%xmm3 + vpinsrd $1,-52(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpandn %xmm11,%xmm14,%xmm7 + vpand %xmm10,%xmm14,%xmm6 + + vmovdqa %xmm2,32-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpunpckldq %xmm9,%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -48(%r8),%xmm4 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -48(%r9),%xmm9 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpshufb %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpinsrd $1,-48(%r10),%xmm4,%xmm4 + vpinsrd $1,-48(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpandn %xmm10,%xmm13,%xmm7 + vpand %xmm14,%xmm13,%xmm6 + + vmovdqa %xmm3,48-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpunpckldq %xmm9,%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -44(%r8),%xmm0 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -44(%r9),%xmm9 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpshufb %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpinsrd $1,-44(%r10),%xmm0,%xmm0 + vpinsrd $1,-44(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpandn %xmm14,%xmm12,%xmm7 + vpand %xmm13,%xmm12,%xmm6 + + vmovdqa %xmm4,64-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpunpckldq %xmm9,%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -40(%r8),%xmm1 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -40(%r9),%xmm9 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpshufb %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpinsrd $1,-40(%r10),%xmm1,%xmm1 + vpinsrd $1,-40(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpandn %xmm13,%xmm11,%xmm7 + vpand %xmm12,%xmm11,%xmm6 + + vmovdqa %xmm0,80-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpunpckldq %xmm9,%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -36(%r8),%xmm2 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -36(%r9),%xmm9 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpshufb %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpinsrd $1,-36(%r10),%xmm2,%xmm2 + vpinsrd $1,-36(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpandn %xmm12,%xmm10,%xmm7 + vpand %xmm11,%xmm10,%xmm6 + + vmovdqa %xmm1,96-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpunpckldq %xmm9,%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -32(%r8),%xmm3 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -32(%r9),%xmm9 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpshufb %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpinsrd $1,-32(%r10),%xmm3,%xmm3 + vpinsrd $1,-32(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpandn %xmm11,%xmm14,%xmm7 + vpand %xmm10,%xmm14,%xmm6 + + vmovdqa %xmm2,112-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpunpckldq %xmm9,%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -28(%r8),%xmm4 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -28(%r9),%xmm9 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpshufb %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpinsrd $1,-28(%r10),%xmm4,%xmm4 + vpinsrd $1,-28(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpandn %xmm10,%xmm13,%xmm7 + vpand %xmm14,%xmm13,%xmm6 + + vmovdqa %xmm3,128-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpunpckldq %xmm9,%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -24(%r8),%xmm0 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -24(%r9),%xmm9 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpshufb %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpinsrd $1,-24(%r10),%xmm0,%xmm0 + vpinsrd $1,-24(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpandn %xmm14,%xmm12,%xmm7 + vpand %xmm13,%xmm12,%xmm6 + + vmovdqa %xmm4,144-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpunpckldq %xmm9,%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -20(%r8),%xmm1 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -20(%r9),%xmm9 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpshufb %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpinsrd $1,-20(%r10),%xmm1,%xmm1 + vpinsrd $1,-20(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpandn %xmm13,%xmm11,%xmm7 + vpand %xmm12,%xmm11,%xmm6 + + vmovdqa %xmm0,160-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpunpckldq %xmm9,%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -16(%r8),%xmm2 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -16(%r9),%xmm9 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpshufb %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpinsrd $1,-16(%r10),%xmm2,%xmm2 + vpinsrd $1,-16(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpandn %xmm12,%xmm10,%xmm7 + vpand %xmm11,%xmm10,%xmm6 + + vmovdqa %xmm1,176-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpunpckldq %xmm9,%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -12(%r8),%xmm3 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -12(%r9),%xmm9 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpshufb %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpinsrd $1,-12(%r10),%xmm3,%xmm3 + vpinsrd $1,-12(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpandn %xmm11,%xmm14,%xmm7 + vpand %xmm10,%xmm14,%xmm6 + + vmovdqa %xmm2,192-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpunpckldq %xmm9,%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -8(%r8),%xmm4 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -8(%r9),%xmm9 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpshufb %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpinsrd $1,-8(%r10),%xmm4,%xmm4 + vpinsrd $1,-8(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpandn %xmm10,%xmm13,%xmm7 + vpand %xmm14,%xmm13,%xmm6 + + vmovdqa %xmm3,208-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpunpckldq %xmm9,%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vmovd -4(%r8),%xmm0 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vmovd -4(%r9),%xmm9 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpshufb %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vmovdqa 0-128(%rax),%xmm1 + vpinsrd $1,-4(%r10),%xmm0,%xmm0 + vpinsrd $1,-4(%r11),%xmm9,%xmm9 + vpaddd %xmm15,%xmm10,%xmm10 + prefetcht0 63(%r8) + vpslld $5,%xmm11,%xmm8 + vpandn %xmm14,%xmm12,%xmm7 + vpand %xmm13,%xmm12,%xmm6 + + vmovdqa %xmm4,224-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpunpckldq %xmm9,%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + prefetcht0 63(%r9) + vpxor %xmm7,%xmm6,%xmm6 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + prefetcht0 63(%r10) + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + prefetcht0 63(%r11) + vpshufb %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vmovdqa 16-128(%rax),%xmm2 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 32-128(%rax),%xmm3 + + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpandn %xmm13,%xmm11,%xmm7 + + vpand %xmm12,%xmm11,%xmm6 + + vmovdqa %xmm0,240-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 128-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 48-128(%rax),%xmm4 + + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpandn %xmm12,%xmm10,%xmm7 + + vpand %xmm11,%xmm10,%xmm6 + + vmovdqa %xmm1,0-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 144-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 64-128(%rax),%xmm0 + + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpandn %xmm11,%xmm14,%xmm7 + + vpand %xmm10,%xmm14,%xmm6 + + vmovdqa %xmm2,16-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 160-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 80-128(%rax),%xmm1 + + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpandn %xmm10,%xmm13,%xmm7 + + vpand %xmm14,%xmm13,%xmm6 + + vmovdqa %xmm3,32-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 176-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 96-128(%rax),%xmm2 + + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpandn %xmm14,%xmm12,%xmm7 + + vpand %xmm13,%xmm12,%xmm6 + + vmovdqa %xmm4,48-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 192-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm7,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vmovdqa 0(%rbp),%xmm15 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 112-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,64-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 208-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 128-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,80-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 224-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 144-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vmovdqa %xmm2,96-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 240-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 160-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vmovdqa %xmm3,112-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 0-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 176-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vmovdqa %xmm4,128-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 16-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 192-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,144-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 32-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 208-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,160-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 48-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 224-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vmovdqa %xmm2,176-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 64-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 240-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vmovdqa %xmm3,192-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 80-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 0-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vmovdqa %xmm4,208-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 96-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 16-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,224-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 112-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 32-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,240-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 128-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 48-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vmovdqa %xmm2,0-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 144-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 64-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vmovdqa %xmm3,16-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 160-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 80-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vmovdqa %xmm4,32-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 176-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 96-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,48-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 192-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 112-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,64-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 208-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 128-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vmovdqa %xmm2,80-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 224-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 144-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vmovdqa %xmm3,96-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 240-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 160-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vmovdqa %xmm4,112-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 0-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vmovdqa 32(%rbp),%xmm15 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 176-128(%rax),%xmm3 + + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpand %xmm12,%xmm13,%xmm7 + vpxor 16-128(%rax),%xmm1,%xmm1 + + vpaddd %xmm7,%xmm14,%xmm14 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm13,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vmovdqu %xmm0,128-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm1,%xmm5 + vpand %xmm11,%xmm6,%xmm6 + vpaddd %xmm1,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 192-128(%rax),%xmm4 + + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpand %xmm11,%xmm12,%xmm7 + vpxor 32-128(%rax),%xmm2,%xmm2 + + vpaddd %xmm7,%xmm13,%xmm13 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm12,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vmovdqu %xmm1,144-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm2,%xmm5 + vpand %xmm10,%xmm6,%xmm6 + vpaddd %xmm2,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 208-128(%rax),%xmm0 + + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpand %xmm10,%xmm11,%xmm7 + vpxor 48-128(%rax),%xmm3,%xmm3 + + vpaddd %xmm7,%xmm12,%xmm12 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm11,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vmovdqu %xmm2,160-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm3,%xmm5 + vpand %xmm14,%xmm6,%xmm6 + vpaddd %xmm3,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 224-128(%rax),%xmm1 + + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpand %xmm14,%xmm10,%xmm7 + vpxor 64-128(%rax),%xmm4,%xmm4 + + vpaddd %xmm7,%xmm11,%xmm11 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm10,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vmovdqu %xmm3,176-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm4,%xmm5 + vpand %xmm13,%xmm6,%xmm6 + vpaddd %xmm4,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 240-128(%rax),%xmm2 + + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpand %xmm13,%xmm14,%xmm7 + vpxor 80-128(%rax),%xmm0,%xmm0 + + vpaddd %xmm7,%xmm10,%xmm10 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm14,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vmovdqu %xmm4,192-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm0,%xmm5 + vpand %xmm12,%xmm6,%xmm6 + vpaddd %xmm0,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 0-128(%rax),%xmm3 + + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpand %xmm12,%xmm13,%xmm7 + vpxor 96-128(%rax),%xmm1,%xmm1 + + vpaddd %xmm7,%xmm14,%xmm14 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm13,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vmovdqu %xmm0,208-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm1,%xmm5 + vpand %xmm11,%xmm6,%xmm6 + vpaddd %xmm1,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 16-128(%rax),%xmm4 + + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpand %xmm11,%xmm12,%xmm7 + vpxor 112-128(%rax),%xmm2,%xmm2 + + vpaddd %xmm7,%xmm13,%xmm13 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm12,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vmovdqu %xmm1,224-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm2,%xmm5 + vpand %xmm10,%xmm6,%xmm6 + vpaddd %xmm2,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 32-128(%rax),%xmm0 + + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpand %xmm10,%xmm11,%xmm7 + vpxor 128-128(%rax),%xmm3,%xmm3 + + vpaddd %xmm7,%xmm12,%xmm12 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm11,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vmovdqu %xmm2,240-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm3,%xmm5 + vpand %xmm14,%xmm6,%xmm6 + vpaddd %xmm3,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 48-128(%rax),%xmm1 + + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpand %xmm14,%xmm10,%xmm7 + vpxor 144-128(%rax),%xmm4,%xmm4 + + vpaddd %xmm7,%xmm11,%xmm11 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm10,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vmovdqu %xmm3,0-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm4,%xmm5 + vpand %xmm13,%xmm6,%xmm6 + vpaddd %xmm4,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 64-128(%rax),%xmm2 + + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpand %xmm13,%xmm14,%xmm7 + vpxor 160-128(%rax),%xmm0,%xmm0 + + vpaddd %xmm7,%xmm10,%xmm10 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm14,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vmovdqu %xmm4,16-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm0,%xmm5 + vpand %xmm12,%xmm6,%xmm6 + vpaddd %xmm0,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 80-128(%rax),%xmm3 + + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpand %xmm12,%xmm13,%xmm7 + vpxor 176-128(%rax),%xmm1,%xmm1 + + vpaddd %xmm7,%xmm14,%xmm14 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm13,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vmovdqu %xmm0,32-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm1,%xmm5 + vpand %xmm11,%xmm6,%xmm6 + vpaddd %xmm1,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 96-128(%rax),%xmm4 + + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpand %xmm11,%xmm12,%xmm7 + vpxor 192-128(%rax),%xmm2,%xmm2 + + vpaddd %xmm7,%xmm13,%xmm13 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm12,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vmovdqu %xmm1,48-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm2,%xmm5 + vpand %xmm10,%xmm6,%xmm6 + vpaddd %xmm2,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 112-128(%rax),%xmm0 + + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpand %xmm10,%xmm11,%xmm7 + vpxor 208-128(%rax),%xmm3,%xmm3 + + vpaddd %xmm7,%xmm12,%xmm12 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm11,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vmovdqu %xmm2,64-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm3,%xmm5 + vpand %xmm14,%xmm6,%xmm6 + vpaddd %xmm3,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 128-128(%rax),%xmm1 + + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpand %xmm14,%xmm10,%xmm7 + vpxor 224-128(%rax),%xmm4,%xmm4 + + vpaddd %xmm7,%xmm11,%xmm11 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm10,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vmovdqu %xmm3,80-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm4,%xmm5 + vpand %xmm13,%xmm6,%xmm6 + vpaddd %xmm4,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 144-128(%rax),%xmm2 + + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpand %xmm13,%xmm14,%xmm7 + vpxor 240-128(%rax),%xmm0,%xmm0 + + vpaddd %xmm7,%xmm10,%xmm10 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm14,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vmovdqu %xmm4,96-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm0,%xmm5 + vpand %xmm12,%xmm6,%xmm6 + vpaddd %xmm0,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 160-128(%rax),%xmm3 + + vpaddd %xmm15,%xmm14,%xmm14 + vpslld $5,%xmm10,%xmm8 + vpand %xmm12,%xmm13,%xmm7 + vpxor 0-128(%rax),%xmm1,%xmm1 + + vpaddd %xmm7,%xmm14,%xmm14 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm13,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vmovdqu %xmm0,112-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm1,%xmm5 + vpand %xmm11,%xmm6,%xmm6 + vpaddd %xmm1,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpaddd %xmm6,%xmm14,%xmm14 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 176-128(%rax),%xmm4 + + vpaddd %xmm15,%xmm13,%xmm13 + vpslld $5,%xmm14,%xmm8 + vpand %xmm11,%xmm12,%xmm7 + vpxor 16-128(%rax),%xmm2,%xmm2 + + vpaddd %xmm7,%xmm13,%xmm13 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm12,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vmovdqu %xmm1,128-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm2,%xmm5 + vpand %xmm10,%xmm6,%xmm6 + vpaddd %xmm2,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpaddd %xmm6,%xmm13,%xmm13 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 192-128(%rax),%xmm0 + + vpaddd %xmm15,%xmm12,%xmm12 + vpslld $5,%xmm13,%xmm8 + vpand %xmm10,%xmm11,%xmm7 + vpxor 32-128(%rax),%xmm3,%xmm3 + + vpaddd %xmm7,%xmm12,%xmm12 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm11,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vmovdqu %xmm2,144-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm3,%xmm5 + vpand %xmm14,%xmm6,%xmm6 + vpaddd %xmm3,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpaddd %xmm6,%xmm12,%xmm12 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 208-128(%rax),%xmm1 + + vpaddd %xmm15,%xmm11,%xmm11 + vpslld $5,%xmm12,%xmm8 + vpand %xmm14,%xmm10,%xmm7 + vpxor 48-128(%rax),%xmm4,%xmm4 + + vpaddd %xmm7,%xmm11,%xmm11 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm10,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vmovdqu %xmm3,160-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm4,%xmm5 + vpand %xmm13,%xmm6,%xmm6 + vpaddd %xmm4,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpaddd %xmm6,%xmm11,%xmm11 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 224-128(%rax),%xmm2 + + vpaddd %xmm15,%xmm10,%xmm10 + vpslld $5,%xmm11,%xmm8 + vpand %xmm13,%xmm14,%xmm7 + vpxor 64-128(%rax),%xmm0,%xmm0 + + vpaddd %xmm7,%xmm10,%xmm10 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm14,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vmovdqu %xmm4,176-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpor %xmm9,%xmm8,%xmm8 + vpsrld $31,%xmm0,%xmm5 + vpand %xmm12,%xmm6,%xmm6 + vpaddd %xmm0,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vmovdqa 64(%rbp),%xmm15 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 240-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,192-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 80-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 0-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,208-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 96-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 16-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vmovdqa %xmm2,224-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 112-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 32-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vmovdqa %xmm3,240-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 128-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 48-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vmovdqa %xmm4,0-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 144-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 64-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,16-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 160-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 80-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,32-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 176-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 96-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vmovdqa %xmm2,48-128(%rax) + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 192-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 112-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vmovdqa %xmm3,64-128(%rax) + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 208-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 128-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vmovdqa %xmm4,80-128(%rax) + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 224-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 144-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vmovdqa %xmm0,96-128(%rax) + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 240-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 160-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vmovdqa %xmm1,112-128(%rax) + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 0-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 176-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 16-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 192-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 32-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpxor %xmm2,%xmm0,%xmm0 + vmovdqa 208-128(%rax),%xmm2 + + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + vpaddd %xmm4,%xmm10,%xmm10 + vpxor 48-128(%rax),%xmm0,%xmm0 + vpsrld $27,%xmm11,%xmm9 + vpxor %xmm13,%xmm6,%xmm6 + vpxor %xmm2,%xmm0,%xmm0 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + vpsrld $31,%xmm0,%xmm5 + vpaddd %xmm0,%xmm0,%xmm0 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm5,%xmm0,%xmm0 + vpor %xmm7,%xmm12,%xmm12 + vpxor %xmm3,%xmm1,%xmm1 + vmovdqa 224-128(%rax),%xmm3 + + vpslld $5,%xmm10,%xmm8 + vpaddd %xmm15,%xmm14,%xmm14 + vpxor %xmm11,%xmm13,%xmm6 + vpaddd %xmm0,%xmm14,%xmm14 + vpxor 64-128(%rax),%xmm1,%xmm1 + vpsrld $27,%xmm10,%xmm9 + vpxor %xmm12,%xmm6,%xmm6 + vpxor %xmm3,%xmm1,%xmm1 + + vpslld $30,%xmm11,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm14,%xmm14 + vpsrld $31,%xmm1,%xmm5 + vpaddd %xmm1,%xmm1,%xmm1 + + vpsrld $2,%xmm11,%xmm11 + vpaddd %xmm8,%xmm14,%xmm14 + vpor %xmm5,%xmm1,%xmm1 + vpor %xmm7,%xmm11,%xmm11 + vpxor %xmm4,%xmm2,%xmm2 + vmovdqa 240-128(%rax),%xmm4 + + vpslld $5,%xmm14,%xmm8 + vpaddd %xmm15,%xmm13,%xmm13 + vpxor %xmm10,%xmm12,%xmm6 + vpaddd %xmm1,%xmm13,%xmm13 + vpxor 80-128(%rax),%xmm2,%xmm2 + vpsrld $27,%xmm14,%xmm9 + vpxor %xmm11,%xmm6,%xmm6 + vpxor %xmm4,%xmm2,%xmm2 + + vpslld $30,%xmm10,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm13,%xmm13 + vpsrld $31,%xmm2,%xmm5 + vpaddd %xmm2,%xmm2,%xmm2 + + vpsrld $2,%xmm10,%xmm10 + vpaddd %xmm8,%xmm13,%xmm13 + vpor %xmm5,%xmm2,%xmm2 + vpor %xmm7,%xmm10,%xmm10 + vpxor %xmm0,%xmm3,%xmm3 + vmovdqa 0-128(%rax),%xmm0 + + vpslld $5,%xmm13,%xmm8 + vpaddd %xmm15,%xmm12,%xmm12 + vpxor %xmm14,%xmm11,%xmm6 + vpaddd %xmm2,%xmm12,%xmm12 + vpxor 96-128(%rax),%xmm3,%xmm3 + vpsrld $27,%xmm13,%xmm9 + vpxor %xmm10,%xmm6,%xmm6 + vpxor %xmm0,%xmm3,%xmm3 + + vpslld $30,%xmm14,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + vpsrld $31,%xmm3,%xmm5 + vpaddd %xmm3,%xmm3,%xmm3 + + vpsrld $2,%xmm14,%xmm14 + vpaddd %xmm8,%xmm12,%xmm12 + vpor %xmm5,%xmm3,%xmm3 + vpor %xmm7,%xmm14,%xmm14 + vpxor %xmm1,%xmm4,%xmm4 + vmovdqa 16-128(%rax),%xmm1 + + vpslld $5,%xmm12,%xmm8 + vpaddd %xmm15,%xmm11,%xmm11 + vpxor %xmm13,%xmm10,%xmm6 + vpaddd %xmm3,%xmm11,%xmm11 + vpxor 112-128(%rax),%xmm4,%xmm4 + vpsrld $27,%xmm12,%xmm9 + vpxor %xmm14,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm4 + + vpslld $30,%xmm13,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm11,%xmm11 + vpsrld $31,%xmm4,%xmm5 + vpaddd %xmm4,%xmm4,%xmm4 + + vpsrld $2,%xmm13,%xmm13 + vpaddd %xmm8,%xmm11,%xmm11 + vpor %xmm5,%xmm4,%xmm4 + vpor %xmm7,%xmm13,%xmm13 + vpslld $5,%xmm11,%xmm8 + vpaddd %xmm15,%xmm10,%xmm10 + vpxor %xmm12,%xmm14,%xmm6 + + vpsrld $27,%xmm11,%xmm9 + vpaddd %xmm4,%xmm10,%xmm10 + vpxor %xmm13,%xmm6,%xmm6 + + vpslld $30,%xmm12,%xmm7 + vpor %xmm9,%xmm8,%xmm8 + vpaddd %xmm6,%xmm10,%xmm10 + + vpsrld $2,%xmm12,%xmm12 + vpaddd %xmm8,%xmm10,%xmm10 + vpor %xmm7,%xmm12,%xmm12 + movl $1,%ecx + cmpl 0(%rbx),%ecx + cmovgeq %rbp,%r8 + cmpl 4(%rbx),%ecx + cmovgeq %rbp,%r9 + cmpl 8(%rbx),%ecx + cmovgeq %rbp,%r10 + cmpl 12(%rbx),%ecx + cmovgeq %rbp,%r11 + vmovdqu (%rbx),%xmm6 + vpxor %xmm8,%xmm8,%xmm8 + vmovdqa %xmm6,%xmm7 + vpcmpgtd %xmm8,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + + vpand %xmm7,%xmm10,%xmm10 + vpand %xmm7,%xmm11,%xmm11 + vpaddd 0(%rdi),%xmm10,%xmm10 + vpand %xmm7,%xmm12,%xmm12 + vpaddd 32(%rdi),%xmm11,%xmm11 + vpand %xmm7,%xmm13,%xmm13 + vpaddd 64(%rdi),%xmm12,%xmm12 + vpand %xmm7,%xmm14,%xmm14 + vpaddd 96(%rdi),%xmm13,%xmm13 + vpaddd 128(%rdi),%xmm14,%xmm14 + vmovdqu %xmm10,0(%rdi) + vmovdqu %xmm11,32(%rdi) + vmovdqu %xmm12,64(%rdi) + vmovdqu %xmm13,96(%rdi) + vmovdqu %xmm14,128(%rdi) + + vmovdqu %xmm6,(%rbx) + vmovdqu 96(%rbp),%xmm5 + decl %edx + jnz L$oop_avx + + movl 280(%rsp),%edx + leaq 16(%rdi),%rdi + leaq 64(%rsi),%rsi + decl %edx + jnz L$oop_grande_avx + +L$done_avx: + movq 272(%rsp),%rax + + vzeroupper + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$epilogue_avx: + .byte 0xf3,0xc3 + + + +.p2align 5 +sha1_multi_block_avx2: + +_avx2_shortcut: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $576,%rsp + andq $-256,%rsp + movq %rax,544(%rsp) + +L$body_avx2: + leaq K_XX_XX(%rip),%rbp + shrl $1,%edx + + vzeroupper +L$oop_grande_avx2: + movl %edx,552(%rsp) + xorl %edx,%edx + leaq 512(%rsp),%rbx + movq 0(%rsi),%r12 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rbp,%r12 + movq 16(%rsi),%r13 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rbp,%r13 + movq 32(%rsi),%r14 + movl 40(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,8(%rbx) + cmovleq %rbp,%r14 + movq 48(%rsi),%r15 + movl 56(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,12(%rbx) + cmovleq %rbp,%r15 + movq 64(%rsi),%r8 + movl 72(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,16(%rbx) + cmovleq %rbp,%r8 + movq 80(%rsi),%r9 + movl 88(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,20(%rbx) + cmovleq %rbp,%r9 + movq 96(%rsi),%r10 + movl 104(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,24(%rbx) + cmovleq %rbp,%r10 + movq 112(%rsi),%r11 + movl 120(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,28(%rbx) + cmovleq %rbp,%r11 + vmovdqu 0(%rdi),%ymm0 + leaq 128(%rsp),%rax + vmovdqu 32(%rdi),%ymm1 + leaq 256+128(%rsp),%rbx + vmovdqu 64(%rdi),%ymm2 + vmovdqu 96(%rdi),%ymm3 + vmovdqu 128(%rdi),%ymm4 + vmovdqu 96(%rbp),%ymm9 + jmp L$oop_avx2 + +.p2align 5 +L$oop_avx2: + vmovdqa -32(%rbp),%ymm15 + vmovd (%r12),%xmm10 + leaq 64(%r12),%r12 + vmovd (%r8),%xmm12 + leaq 64(%r8),%r8 + vmovd (%r13),%xmm7 + leaq 64(%r13),%r13 + vmovd (%r9),%xmm6 + leaq 64(%r9),%r9 + vpinsrd $1,(%r14),%xmm10,%xmm10 + leaq 64(%r14),%r14 + vpinsrd $1,(%r10),%xmm12,%xmm12 + leaq 64(%r10),%r10 + vpinsrd $1,(%r15),%xmm7,%xmm7 + leaq 64(%r15),%r15 + vpunpckldq %ymm7,%ymm10,%ymm10 + vpinsrd $1,(%r11),%xmm6,%xmm6 + leaq 64(%r11),%r11 + vpunpckldq %ymm6,%ymm12,%ymm12 + vmovd -60(%r12),%xmm11 + vinserti128 $1,%xmm12,%ymm10,%ymm10 + vmovd -60(%r8),%xmm8 + vpshufb %ymm9,%ymm10,%ymm10 + vmovd -60(%r13),%xmm7 + vmovd -60(%r9),%xmm6 + vpinsrd $1,-60(%r14),%xmm11,%xmm11 + vpinsrd $1,-60(%r10),%xmm8,%xmm8 + vpinsrd $1,-60(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm11,%ymm11 + vpinsrd $1,-60(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpandn %ymm3,%ymm1,%ymm6 + vpand %ymm2,%ymm1,%ymm5 + + vmovdqa %ymm10,0-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vinserti128 $1,%xmm8,%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -56(%r12),%xmm12 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -56(%r8),%xmm8 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpshufb %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vmovd -56(%r13),%xmm7 + vmovd -56(%r9),%xmm6 + vpinsrd $1,-56(%r14),%xmm12,%xmm12 + vpinsrd $1,-56(%r10),%xmm8,%xmm8 + vpinsrd $1,-56(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm12,%ymm12 + vpinsrd $1,-56(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpandn %ymm2,%ymm0,%ymm6 + vpand %ymm1,%ymm0,%ymm5 + + vmovdqa %ymm11,32-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vinserti128 $1,%xmm8,%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -52(%r12),%xmm13 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -52(%r8),%xmm8 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpshufb %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vmovd -52(%r13),%xmm7 + vmovd -52(%r9),%xmm6 + vpinsrd $1,-52(%r14),%xmm13,%xmm13 + vpinsrd $1,-52(%r10),%xmm8,%xmm8 + vpinsrd $1,-52(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm13,%ymm13 + vpinsrd $1,-52(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpandn %ymm1,%ymm4,%ymm6 + vpand %ymm0,%ymm4,%ymm5 + + vmovdqa %ymm12,64-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vinserti128 $1,%xmm8,%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -48(%r12),%xmm14 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -48(%r8),%xmm8 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpshufb %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vmovd -48(%r13),%xmm7 + vmovd -48(%r9),%xmm6 + vpinsrd $1,-48(%r14),%xmm14,%xmm14 + vpinsrd $1,-48(%r10),%xmm8,%xmm8 + vpinsrd $1,-48(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm14,%ymm14 + vpinsrd $1,-48(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpandn %ymm0,%ymm3,%ymm6 + vpand %ymm4,%ymm3,%ymm5 + + vmovdqa %ymm13,96-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vinserti128 $1,%xmm8,%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -44(%r12),%xmm10 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -44(%r8),%xmm8 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpshufb %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vmovd -44(%r13),%xmm7 + vmovd -44(%r9),%xmm6 + vpinsrd $1,-44(%r14),%xmm10,%xmm10 + vpinsrd $1,-44(%r10),%xmm8,%xmm8 + vpinsrd $1,-44(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm10,%ymm10 + vpinsrd $1,-44(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpandn %ymm4,%ymm2,%ymm6 + vpand %ymm3,%ymm2,%ymm5 + + vmovdqa %ymm14,128-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vinserti128 $1,%xmm8,%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -40(%r12),%xmm11 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -40(%r8),%xmm8 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpshufb %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vmovd -40(%r13),%xmm7 + vmovd -40(%r9),%xmm6 + vpinsrd $1,-40(%r14),%xmm11,%xmm11 + vpinsrd $1,-40(%r10),%xmm8,%xmm8 + vpinsrd $1,-40(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm11,%ymm11 + vpinsrd $1,-40(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpandn %ymm3,%ymm1,%ymm6 + vpand %ymm2,%ymm1,%ymm5 + + vmovdqa %ymm10,160-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vinserti128 $1,%xmm8,%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -36(%r12),%xmm12 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -36(%r8),%xmm8 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpshufb %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vmovd -36(%r13),%xmm7 + vmovd -36(%r9),%xmm6 + vpinsrd $1,-36(%r14),%xmm12,%xmm12 + vpinsrd $1,-36(%r10),%xmm8,%xmm8 + vpinsrd $1,-36(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm12,%ymm12 + vpinsrd $1,-36(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpandn %ymm2,%ymm0,%ymm6 + vpand %ymm1,%ymm0,%ymm5 + + vmovdqa %ymm11,192-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vinserti128 $1,%xmm8,%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -32(%r12),%xmm13 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -32(%r8),%xmm8 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpshufb %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vmovd -32(%r13),%xmm7 + vmovd -32(%r9),%xmm6 + vpinsrd $1,-32(%r14),%xmm13,%xmm13 + vpinsrd $1,-32(%r10),%xmm8,%xmm8 + vpinsrd $1,-32(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm13,%ymm13 + vpinsrd $1,-32(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpandn %ymm1,%ymm4,%ymm6 + vpand %ymm0,%ymm4,%ymm5 + + vmovdqa %ymm12,224-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vinserti128 $1,%xmm8,%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -28(%r12),%xmm14 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -28(%r8),%xmm8 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpshufb %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vmovd -28(%r13),%xmm7 + vmovd -28(%r9),%xmm6 + vpinsrd $1,-28(%r14),%xmm14,%xmm14 + vpinsrd $1,-28(%r10),%xmm8,%xmm8 + vpinsrd $1,-28(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm14,%ymm14 + vpinsrd $1,-28(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpandn %ymm0,%ymm3,%ymm6 + vpand %ymm4,%ymm3,%ymm5 + + vmovdqa %ymm13,256-256-128(%rbx) + vpaddd %ymm13,%ymm1,%ymm1 + vinserti128 $1,%xmm8,%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -24(%r12),%xmm10 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -24(%r8),%xmm8 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpshufb %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vmovd -24(%r13),%xmm7 + vmovd -24(%r9),%xmm6 + vpinsrd $1,-24(%r14),%xmm10,%xmm10 + vpinsrd $1,-24(%r10),%xmm8,%xmm8 + vpinsrd $1,-24(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm10,%ymm10 + vpinsrd $1,-24(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpandn %ymm4,%ymm2,%ymm6 + vpand %ymm3,%ymm2,%ymm5 + + vmovdqa %ymm14,288-256-128(%rbx) + vpaddd %ymm14,%ymm0,%ymm0 + vinserti128 $1,%xmm8,%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -20(%r12),%xmm11 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -20(%r8),%xmm8 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpshufb %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vmovd -20(%r13),%xmm7 + vmovd -20(%r9),%xmm6 + vpinsrd $1,-20(%r14),%xmm11,%xmm11 + vpinsrd $1,-20(%r10),%xmm8,%xmm8 + vpinsrd $1,-20(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm11,%ymm11 + vpinsrd $1,-20(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpandn %ymm3,%ymm1,%ymm6 + vpand %ymm2,%ymm1,%ymm5 + + vmovdqa %ymm10,320-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vinserti128 $1,%xmm8,%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -16(%r12),%xmm12 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -16(%r8),%xmm8 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpshufb %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vmovd -16(%r13),%xmm7 + vmovd -16(%r9),%xmm6 + vpinsrd $1,-16(%r14),%xmm12,%xmm12 + vpinsrd $1,-16(%r10),%xmm8,%xmm8 + vpinsrd $1,-16(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm12,%ymm12 + vpinsrd $1,-16(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpandn %ymm2,%ymm0,%ymm6 + vpand %ymm1,%ymm0,%ymm5 + + vmovdqa %ymm11,352-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vinserti128 $1,%xmm8,%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -12(%r12),%xmm13 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -12(%r8),%xmm8 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpshufb %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vmovd -12(%r13),%xmm7 + vmovd -12(%r9),%xmm6 + vpinsrd $1,-12(%r14),%xmm13,%xmm13 + vpinsrd $1,-12(%r10),%xmm8,%xmm8 + vpinsrd $1,-12(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm13,%ymm13 + vpinsrd $1,-12(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpandn %ymm1,%ymm4,%ymm6 + vpand %ymm0,%ymm4,%ymm5 + + vmovdqa %ymm12,384-256-128(%rbx) + vpaddd %ymm12,%ymm2,%ymm2 + vinserti128 $1,%xmm8,%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -8(%r12),%xmm14 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -8(%r8),%xmm8 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpshufb %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vmovd -8(%r13),%xmm7 + vmovd -8(%r9),%xmm6 + vpinsrd $1,-8(%r14),%xmm14,%xmm14 + vpinsrd $1,-8(%r10),%xmm8,%xmm8 + vpinsrd $1,-8(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm14,%ymm14 + vpinsrd $1,-8(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpandn %ymm0,%ymm3,%ymm6 + vpand %ymm4,%ymm3,%ymm5 + + vmovdqa %ymm13,416-256-128(%rbx) + vpaddd %ymm13,%ymm1,%ymm1 + vinserti128 $1,%xmm8,%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vmovd -4(%r12),%xmm10 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vmovd -4(%r8),%xmm8 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpshufb %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vmovdqa 0-128(%rax),%ymm11 + vmovd -4(%r13),%xmm7 + vmovd -4(%r9),%xmm6 + vpinsrd $1,-4(%r14),%xmm10,%xmm10 + vpinsrd $1,-4(%r10),%xmm8,%xmm8 + vpinsrd $1,-4(%r15),%xmm7,%xmm7 + vpunpckldq %ymm7,%ymm10,%ymm10 + vpinsrd $1,-4(%r11),%xmm6,%xmm6 + vpunpckldq %ymm6,%ymm8,%ymm8 + vpaddd %ymm15,%ymm0,%ymm0 + prefetcht0 63(%r12) + vpslld $5,%ymm1,%ymm7 + vpandn %ymm4,%ymm2,%ymm6 + vpand %ymm3,%ymm2,%ymm5 + + vmovdqa %ymm14,448-256-128(%rbx) + vpaddd %ymm14,%ymm0,%ymm0 + vinserti128 $1,%xmm8,%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + prefetcht0 63(%r13) + vpxor %ymm6,%ymm5,%ymm5 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + prefetcht0 63(%r14) + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + prefetcht0 63(%r15) + vpshufb %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vmovdqa 32-128(%rax),%ymm12 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 64-128(%rax),%ymm13 + + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpandn %ymm3,%ymm1,%ymm6 + prefetcht0 63(%r8) + vpand %ymm2,%ymm1,%ymm5 + + vmovdqa %ymm10,480-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 256-256-128(%rbx),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + prefetcht0 63(%r9) + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + prefetcht0 63(%r10) + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + prefetcht0 63(%r11) + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 96-128(%rax),%ymm14 + + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpandn %ymm2,%ymm0,%ymm6 + + vpand %ymm1,%ymm0,%ymm5 + + vmovdqa %ymm11,0-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 288-256-128(%rbx),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 128-128(%rax),%ymm10 + + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpandn %ymm1,%ymm4,%ymm6 + + vpand %ymm0,%ymm4,%ymm5 + + vmovdqa %ymm12,32-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 320-256-128(%rbx),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 160-128(%rax),%ymm11 + + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpandn %ymm0,%ymm3,%ymm6 + + vpand %ymm4,%ymm3,%ymm5 + + vmovdqa %ymm13,64-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 352-256-128(%rbx),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 192-128(%rax),%ymm12 + + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpandn %ymm4,%ymm2,%ymm6 + + vpand %ymm3,%ymm2,%ymm5 + + vmovdqa %ymm14,96-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 384-256-128(%rbx),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm6,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vmovdqa 0(%rbp),%ymm15 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 224-128(%rax),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,128-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 416-256-128(%rbx),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 256-256-128(%rbx),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,160-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 448-256-128(%rbx),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 288-256-128(%rbx),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vmovdqa %ymm12,192-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 480-256-128(%rbx),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 320-256-128(%rbx),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vmovdqa %ymm13,224-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 0-128(%rax),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 352-256-128(%rbx),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vmovdqa %ymm14,256-256-128(%rbx) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 32-128(%rax),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 384-256-128(%rbx),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,288-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 64-128(%rax),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 416-256-128(%rbx),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,320-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 96-128(%rax),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 448-256-128(%rbx),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vmovdqa %ymm12,352-256-128(%rbx) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 128-128(%rax),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 480-256-128(%rbx),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vmovdqa %ymm13,384-256-128(%rbx) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 160-128(%rax),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 0-128(%rax),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vmovdqa %ymm14,416-256-128(%rbx) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 192-128(%rax),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 32-128(%rax),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,448-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 224-128(%rax),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 64-128(%rax),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,480-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 256-256-128(%rbx),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 96-128(%rax),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vmovdqa %ymm12,0-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 288-256-128(%rbx),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 128-128(%rax),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vmovdqa %ymm13,32-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 320-256-128(%rbx),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 160-128(%rax),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vmovdqa %ymm14,64-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 352-256-128(%rbx),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 192-128(%rax),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,96-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 384-256-128(%rbx),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 224-128(%rax),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,128-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 416-256-128(%rbx),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 256-256-128(%rbx),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vmovdqa %ymm12,160-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 448-256-128(%rbx),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 288-256-128(%rbx),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vmovdqa %ymm13,192-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 480-256-128(%rbx),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 320-256-128(%rbx),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vmovdqa %ymm14,224-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 0-128(%rax),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vmovdqa 32(%rbp),%ymm15 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 352-256-128(%rbx),%ymm13 + + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpand %ymm2,%ymm3,%ymm6 + vpxor 32-128(%rax),%ymm11,%ymm11 + + vpaddd %ymm6,%ymm4,%ymm4 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm3,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vmovdqu %ymm10,256-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm11,%ymm9 + vpand %ymm1,%ymm5,%ymm5 + vpaddd %ymm11,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 384-256-128(%rbx),%ymm14 + + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpand %ymm1,%ymm2,%ymm6 + vpxor 64-128(%rax),%ymm12,%ymm12 + + vpaddd %ymm6,%ymm3,%ymm3 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm2,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vmovdqu %ymm11,288-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm12,%ymm9 + vpand %ymm0,%ymm5,%ymm5 + vpaddd %ymm12,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 416-256-128(%rbx),%ymm10 + + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpand %ymm0,%ymm1,%ymm6 + vpxor 96-128(%rax),%ymm13,%ymm13 + + vpaddd %ymm6,%ymm2,%ymm2 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm1,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vmovdqu %ymm12,320-256-128(%rbx) + vpaddd %ymm12,%ymm2,%ymm2 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm13,%ymm9 + vpand %ymm4,%ymm5,%ymm5 + vpaddd %ymm13,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 448-256-128(%rbx),%ymm11 + + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpand %ymm4,%ymm0,%ymm6 + vpxor 128-128(%rax),%ymm14,%ymm14 + + vpaddd %ymm6,%ymm1,%ymm1 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm0,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vmovdqu %ymm13,352-256-128(%rbx) + vpaddd %ymm13,%ymm1,%ymm1 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm14,%ymm9 + vpand %ymm3,%ymm5,%ymm5 + vpaddd %ymm14,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 480-256-128(%rbx),%ymm12 + + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpand %ymm3,%ymm4,%ymm6 + vpxor 160-128(%rax),%ymm10,%ymm10 + + vpaddd %ymm6,%ymm0,%ymm0 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm4,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vmovdqu %ymm14,384-256-128(%rbx) + vpaddd %ymm14,%ymm0,%ymm0 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm10,%ymm9 + vpand %ymm2,%ymm5,%ymm5 + vpaddd %ymm10,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 0-128(%rax),%ymm13 + + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpand %ymm2,%ymm3,%ymm6 + vpxor 192-128(%rax),%ymm11,%ymm11 + + vpaddd %ymm6,%ymm4,%ymm4 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm3,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vmovdqu %ymm10,416-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm11,%ymm9 + vpand %ymm1,%ymm5,%ymm5 + vpaddd %ymm11,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 32-128(%rax),%ymm14 + + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpand %ymm1,%ymm2,%ymm6 + vpxor 224-128(%rax),%ymm12,%ymm12 + + vpaddd %ymm6,%ymm3,%ymm3 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm2,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vmovdqu %ymm11,448-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm12,%ymm9 + vpand %ymm0,%ymm5,%ymm5 + vpaddd %ymm12,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 64-128(%rax),%ymm10 + + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpand %ymm0,%ymm1,%ymm6 + vpxor 256-256-128(%rbx),%ymm13,%ymm13 + + vpaddd %ymm6,%ymm2,%ymm2 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm1,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vmovdqu %ymm12,480-256-128(%rbx) + vpaddd %ymm12,%ymm2,%ymm2 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm13,%ymm9 + vpand %ymm4,%ymm5,%ymm5 + vpaddd %ymm13,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 96-128(%rax),%ymm11 + + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpand %ymm4,%ymm0,%ymm6 + vpxor 288-256-128(%rbx),%ymm14,%ymm14 + + vpaddd %ymm6,%ymm1,%ymm1 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm0,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vmovdqu %ymm13,0-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm14,%ymm9 + vpand %ymm3,%ymm5,%ymm5 + vpaddd %ymm14,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 128-128(%rax),%ymm12 + + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpand %ymm3,%ymm4,%ymm6 + vpxor 320-256-128(%rbx),%ymm10,%ymm10 + + vpaddd %ymm6,%ymm0,%ymm0 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm4,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vmovdqu %ymm14,32-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm10,%ymm9 + vpand %ymm2,%ymm5,%ymm5 + vpaddd %ymm10,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 160-128(%rax),%ymm13 + + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpand %ymm2,%ymm3,%ymm6 + vpxor 352-256-128(%rbx),%ymm11,%ymm11 + + vpaddd %ymm6,%ymm4,%ymm4 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm3,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vmovdqu %ymm10,64-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm11,%ymm9 + vpand %ymm1,%ymm5,%ymm5 + vpaddd %ymm11,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 192-128(%rax),%ymm14 + + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpand %ymm1,%ymm2,%ymm6 + vpxor 384-256-128(%rbx),%ymm12,%ymm12 + + vpaddd %ymm6,%ymm3,%ymm3 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm2,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vmovdqu %ymm11,96-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm12,%ymm9 + vpand %ymm0,%ymm5,%ymm5 + vpaddd %ymm12,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 224-128(%rax),%ymm10 + + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpand %ymm0,%ymm1,%ymm6 + vpxor 416-256-128(%rbx),%ymm13,%ymm13 + + vpaddd %ymm6,%ymm2,%ymm2 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm1,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vmovdqu %ymm12,128-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm13,%ymm9 + vpand %ymm4,%ymm5,%ymm5 + vpaddd %ymm13,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 256-256-128(%rbx),%ymm11 + + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpand %ymm4,%ymm0,%ymm6 + vpxor 448-256-128(%rbx),%ymm14,%ymm14 + + vpaddd %ymm6,%ymm1,%ymm1 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm0,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vmovdqu %ymm13,160-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm14,%ymm9 + vpand %ymm3,%ymm5,%ymm5 + vpaddd %ymm14,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 288-256-128(%rbx),%ymm12 + + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpand %ymm3,%ymm4,%ymm6 + vpxor 480-256-128(%rbx),%ymm10,%ymm10 + + vpaddd %ymm6,%ymm0,%ymm0 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm4,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vmovdqu %ymm14,192-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm10,%ymm9 + vpand %ymm2,%ymm5,%ymm5 + vpaddd %ymm10,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 320-256-128(%rbx),%ymm13 + + vpaddd %ymm15,%ymm4,%ymm4 + vpslld $5,%ymm0,%ymm7 + vpand %ymm2,%ymm3,%ymm6 + vpxor 0-128(%rax),%ymm11,%ymm11 + + vpaddd %ymm6,%ymm4,%ymm4 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm3,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vmovdqu %ymm10,224-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm11,%ymm9 + vpand %ymm1,%ymm5,%ymm5 + vpaddd %ymm11,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpaddd %ymm5,%ymm4,%ymm4 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 352-256-128(%rbx),%ymm14 + + vpaddd %ymm15,%ymm3,%ymm3 + vpslld $5,%ymm4,%ymm7 + vpand %ymm1,%ymm2,%ymm6 + vpxor 32-128(%rax),%ymm12,%ymm12 + + vpaddd %ymm6,%ymm3,%ymm3 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm2,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vmovdqu %ymm11,256-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm12,%ymm9 + vpand %ymm0,%ymm5,%ymm5 + vpaddd %ymm12,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpaddd %ymm5,%ymm3,%ymm3 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 384-256-128(%rbx),%ymm10 + + vpaddd %ymm15,%ymm2,%ymm2 + vpslld $5,%ymm3,%ymm7 + vpand %ymm0,%ymm1,%ymm6 + vpxor 64-128(%rax),%ymm13,%ymm13 + + vpaddd %ymm6,%ymm2,%ymm2 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm1,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vmovdqu %ymm12,288-256-128(%rbx) + vpaddd %ymm12,%ymm2,%ymm2 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm13,%ymm9 + vpand %ymm4,%ymm5,%ymm5 + vpaddd %ymm13,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpaddd %ymm5,%ymm2,%ymm2 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 416-256-128(%rbx),%ymm11 + + vpaddd %ymm15,%ymm1,%ymm1 + vpslld $5,%ymm2,%ymm7 + vpand %ymm4,%ymm0,%ymm6 + vpxor 96-128(%rax),%ymm14,%ymm14 + + vpaddd %ymm6,%ymm1,%ymm1 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm0,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vmovdqu %ymm13,320-256-128(%rbx) + vpaddd %ymm13,%ymm1,%ymm1 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm14,%ymm9 + vpand %ymm3,%ymm5,%ymm5 + vpaddd %ymm14,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpaddd %ymm5,%ymm1,%ymm1 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 448-256-128(%rbx),%ymm12 + + vpaddd %ymm15,%ymm0,%ymm0 + vpslld $5,%ymm1,%ymm7 + vpand %ymm3,%ymm4,%ymm6 + vpxor 128-128(%rax),%ymm10,%ymm10 + + vpaddd %ymm6,%ymm0,%ymm0 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm4,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vmovdqu %ymm14,352-256-128(%rbx) + vpaddd %ymm14,%ymm0,%ymm0 + vpor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm10,%ymm9 + vpand %ymm2,%ymm5,%ymm5 + vpaddd %ymm10,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vmovdqa 64(%rbp),%ymm15 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 480-256-128(%rbx),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,384-256-128(%rbx) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 160-128(%rax),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 0-128(%rax),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,416-256-128(%rbx) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 192-128(%rax),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 32-128(%rax),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vmovdqa %ymm12,448-256-128(%rbx) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 224-128(%rax),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 64-128(%rax),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vmovdqa %ymm13,480-256-128(%rbx) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 256-256-128(%rbx),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 96-128(%rax),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vmovdqa %ymm14,0-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 288-256-128(%rbx),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 128-128(%rax),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,32-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 320-256-128(%rbx),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 160-128(%rax),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,64-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 352-256-128(%rbx),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 192-128(%rax),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vmovdqa %ymm12,96-128(%rax) + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 384-256-128(%rbx),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 224-128(%rax),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vmovdqa %ymm13,128-128(%rax) + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 416-256-128(%rbx),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 256-256-128(%rbx),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vmovdqa %ymm14,160-128(%rax) + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 448-256-128(%rbx),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 288-256-128(%rbx),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vmovdqa %ymm10,192-128(%rax) + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 480-256-128(%rbx),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 320-256-128(%rbx),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vmovdqa %ymm11,224-128(%rax) + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 0-128(%rax),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 352-256-128(%rbx),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 32-128(%rax),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 384-256-128(%rbx),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 64-128(%rax),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpxor %ymm12,%ymm10,%ymm10 + vmovdqa 416-256-128(%rbx),%ymm12 + + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + vpaddd %ymm14,%ymm0,%ymm0 + vpxor 96-128(%rax),%ymm10,%ymm10 + vpsrld $27,%ymm1,%ymm8 + vpxor %ymm3,%ymm5,%ymm5 + vpxor %ymm12,%ymm10,%ymm10 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + vpsrld $31,%ymm10,%ymm9 + vpaddd %ymm10,%ymm10,%ymm10 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm9,%ymm10,%ymm10 + vpor %ymm6,%ymm2,%ymm2 + vpxor %ymm13,%ymm11,%ymm11 + vmovdqa 448-256-128(%rbx),%ymm13 + + vpslld $5,%ymm0,%ymm7 + vpaddd %ymm15,%ymm4,%ymm4 + vpxor %ymm1,%ymm3,%ymm5 + vpaddd %ymm10,%ymm4,%ymm4 + vpxor 128-128(%rax),%ymm11,%ymm11 + vpsrld $27,%ymm0,%ymm8 + vpxor %ymm2,%ymm5,%ymm5 + vpxor %ymm13,%ymm11,%ymm11 + + vpslld $30,%ymm1,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm4,%ymm4 + vpsrld $31,%ymm11,%ymm9 + vpaddd %ymm11,%ymm11,%ymm11 + + vpsrld $2,%ymm1,%ymm1 + vpaddd %ymm7,%ymm4,%ymm4 + vpor %ymm9,%ymm11,%ymm11 + vpor %ymm6,%ymm1,%ymm1 + vpxor %ymm14,%ymm12,%ymm12 + vmovdqa 480-256-128(%rbx),%ymm14 + + vpslld $5,%ymm4,%ymm7 + vpaddd %ymm15,%ymm3,%ymm3 + vpxor %ymm0,%ymm2,%ymm5 + vpaddd %ymm11,%ymm3,%ymm3 + vpxor 160-128(%rax),%ymm12,%ymm12 + vpsrld $27,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm14,%ymm12,%ymm12 + + vpslld $30,%ymm0,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm3,%ymm3 + vpsrld $31,%ymm12,%ymm9 + vpaddd %ymm12,%ymm12,%ymm12 + + vpsrld $2,%ymm0,%ymm0 + vpaddd %ymm7,%ymm3,%ymm3 + vpor %ymm9,%ymm12,%ymm12 + vpor %ymm6,%ymm0,%ymm0 + vpxor %ymm10,%ymm13,%ymm13 + vmovdqa 0-128(%rax),%ymm10 + + vpslld $5,%ymm3,%ymm7 + vpaddd %ymm15,%ymm2,%ymm2 + vpxor %ymm4,%ymm1,%ymm5 + vpaddd %ymm12,%ymm2,%ymm2 + vpxor 192-128(%rax),%ymm13,%ymm13 + vpsrld $27,%ymm3,%ymm8 + vpxor %ymm0,%ymm5,%ymm5 + vpxor %ymm10,%ymm13,%ymm13 + + vpslld $30,%ymm4,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm2,%ymm2 + vpsrld $31,%ymm13,%ymm9 + vpaddd %ymm13,%ymm13,%ymm13 + + vpsrld $2,%ymm4,%ymm4 + vpaddd %ymm7,%ymm2,%ymm2 + vpor %ymm9,%ymm13,%ymm13 + vpor %ymm6,%ymm4,%ymm4 + vpxor %ymm11,%ymm14,%ymm14 + vmovdqa 32-128(%rax),%ymm11 + + vpslld $5,%ymm2,%ymm7 + vpaddd %ymm15,%ymm1,%ymm1 + vpxor %ymm3,%ymm0,%ymm5 + vpaddd %ymm13,%ymm1,%ymm1 + vpxor 224-128(%rax),%ymm14,%ymm14 + vpsrld $27,%ymm2,%ymm8 + vpxor %ymm4,%ymm5,%ymm5 + vpxor %ymm11,%ymm14,%ymm14 + + vpslld $30,%ymm3,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm1,%ymm1 + vpsrld $31,%ymm14,%ymm9 + vpaddd %ymm14,%ymm14,%ymm14 + + vpsrld $2,%ymm3,%ymm3 + vpaddd %ymm7,%ymm1,%ymm1 + vpor %ymm9,%ymm14,%ymm14 + vpor %ymm6,%ymm3,%ymm3 + vpslld $5,%ymm1,%ymm7 + vpaddd %ymm15,%ymm0,%ymm0 + vpxor %ymm2,%ymm4,%ymm5 + + vpsrld $27,%ymm1,%ymm8 + vpaddd %ymm14,%ymm0,%ymm0 + vpxor %ymm3,%ymm5,%ymm5 + + vpslld $30,%ymm2,%ymm6 + vpor %ymm8,%ymm7,%ymm7 + vpaddd %ymm5,%ymm0,%ymm0 + + vpsrld $2,%ymm2,%ymm2 + vpaddd %ymm7,%ymm0,%ymm0 + vpor %ymm6,%ymm2,%ymm2 + movl $1,%ecx + leaq 512(%rsp),%rbx + cmpl 0(%rbx),%ecx + cmovgeq %rbp,%r12 + cmpl 4(%rbx),%ecx + cmovgeq %rbp,%r13 + cmpl 8(%rbx),%ecx + cmovgeq %rbp,%r14 + cmpl 12(%rbx),%ecx + cmovgeq %rbp,%r15 + cmpl 16(%rbx),%ecx + cmovgeq %rbp,%r8 + cmpl 20(%rbx),%ecx + cmovgeq %rbp,%r9 + cmpl 24(%rbx),%ecx + cmovgeq %rbp,%r10 + cmpl 28(%rbx),%ecx + cmovgeq %rbp,%r11 + vmovdqu (%rbx),%ymm5 + vpxor %ymm7,%ymm7,%ymm7 + vmovdqa %ymm5,%ymm6 + vpcmpgtd %ymm7,%ymm6,%ymm6 + vpaddd %ymm6,%ymm5,%ymm5 + + vpand %ymm6,%ymm0,%ymm0 + vpand %ymm6,%ymm1,%ymm1 + vpaddd 0(%rdi),%ymm0,%ymm0 + vpand %ymm6,%ymm2,%ymm2 + vpaddd 32(%rdi),%ymm1,%ymm1 + vpand %ymm6,%ymm3,%ymm3 + vpaddd 64(%rdi),%ymm2,%ymm2 + vpand %ymm6,%ymm4,%ymm4 + vpaddd 96(%rdi),%ymm3,%ymm3 + vpaddd 128(%rdi),%ymm4,%ymm4 + vmovdqu %ymm0,0(%rdi) + vmovdqu %ymm1,32(%rdi) + vmovdqu %ymm2,64(%rdi) + vmovdqu %ymm3,96(%rdi) + vmovdqu %ymm4,128(%rdi) + + vmovdqu %ymm5,(%rbx) + leaq 256+128(%rsp),%rbx + vmovdqu 96(%rbp),%ymm9 + decl %edx + jnz L$oop_avx2 + + + + + + + +L$done_avx2: + movq 544(%rsp),%rax + + vzeroupper + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$epilogue_avx2: + .byte 0xf3,0xc3 + + + +.p2align 8 +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 +K_XX_XX: +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 +.byte 83,72,65,49,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha1-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha1-x86_64.s new file mode 100644 index 0000000..fb22d41 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha1-x86_64.s @@ -0,0 +1,5450 @@ +.text + + +.globl _sha1_block_data_order + +.p2align 4 +_sha1_block_data_order: + + movl _OPENSSL_ia32cap_P+0(%rip),%r9d + movl _OPENSSL_ia32cap_P+4(%rip),%r8d + movl _OPENSSL_ia32cap_P+8(%rip),%r10d + testl $512,%r8d + jz L$ialu + testl $536870912,%r10d + jnz _shaext_shortcut + andl $296,%r10d + cmpl $296,%r10d + je _avx2_shortcut + andl $268435456,%r8d + andl $1073741824,%r9d + orl %r9d,%r8d + cmpl $1342177280,%r8d + je _avx_shortcut + jmp _ssse3_shortcut + +.p2align 4 +L$ialu: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + movq %rdi,%r8 + subq $72,%rsp + movq %rsi,%r9 + andq $-64,%rsp + movq %rdx,%r10 + movq %rax,64(%rsp) + +L$prologue: + + movl 0(%r8),%esi + movl 4(%r8),%edi + movl 8(%r8),%r11d + movl 12(%r8),%r12d + movl 16(%r8),%r13d + jmp L$loop + +.p2align 4 +L$loop: + movl 0(%r9),%edx + bswapl %edx + movl 4(%r9),%ebp + movl %r12d,%eax + movl %edx,0(%rsp) + movl %esi,%ecx + bswapl %ebp + xorl %r11d,%eax + roll $5,%ecx + andl %edi,%eax + leal 1518500249(%rdx,%r13,1),%r13d + addl %ecx,%r13d + xorl %r12d,%eax + roll $30,%edi + addl %eax,%r13d + movl 8(%r9),%r14d + movl %r11d,%eax + movl %ebp,4(%rsp) + movl %r13d,%ecx + bswapl %r14d + xorl %edi,%eax + roll $5,%ecx + andl %esi,%eax + leal 1518500249(%rbp,%r12,1),%r12d + addl %ecx,%r12d + xorl %r11d,%eax + roll $30,%esi + addl %eax,%r12d + movl 12(%r9),%edx + movl %edi,%eax + movl %r14d,8(%rsp) + movl %r12d,%ecx + bswapl %edx + xorl %esi,%eax + roll $5,%ecx + andl %r13d,%eax + leal 1518500249(%r14,%r11,1),%r11d + addl %ecx,%r11d + xorl %edi,%eax + roll $30,%r13d + addl %eax,%r11d + movl 16(%r9),%ebp + movl %esi,%eax + movl %edx,12(%rsp) + movl %r11d,%ecx + bswapl %ebp + xorl %r13d,%eax + roll $5,%ecx + andl %r12d,%eax + leal 1518500249(%rdx,%rdi,1),%edi + addl %ecx,%edi + xorl %esi,%eax + roll $30,%r12d + addl %eax,%edi + movl 20(%r9),%r14d + movl %r13d,%eax + movl %ebp,16(%rsp) + movl %edi,%ecx + bswapl %r14d + xorl %r12d,%eax + roll $5,%ecx + andl %r11d,%eax + leal 1518500249(%rbp,%rsi,1),%esi + addl %ecx,%esi + xorl %r13d,%eax + roll $30,%r11d + addl %eax,%esi + movl 24(%r9),%edx + movl %r12d,%eax + movl %r14d,20(%rsp) + movl %esi,%ecx + bswapl %edx + xorl %r11d,%eax + roll $5,%ecx + andl %edi,%eax + leal 1518500249(%r14,%r13,1),%r13d + addl %ecx,%r13d + xorl %r12d,%eax + roll $30,%edi + addl %eax,%r13d + movl 28(%r9),%ebp + movl %r11d,%eax + movl %edx,24(%rsp) + movl %r13d,%ecx + bswapl %ebp + xorl %edi,%eax + roll $5,%ecx + andl %esi,%eax + leal 1518500249(%rdx,%r12,1),%r12d + addl %ecx,%r12d + xorl %r11d,%eax + roll $30,%esi + addl %eax,%r12d + movl 32(%r9),%r14d + movl %edi,%eax + movl %ebp,28(%rsp) + movl %r12d,%ecx + bswapl %r14d + xorl %esi,%eax + roll $5,%ecx + andl %r13d,%eax + leal 1518500249(%rbp,%r11,1),%r11d + addl %ecx,%r11d + xorl %edi,%eax + roll $30,%r13d + addl %eax,%r11d + movl 36(%r9),%edx + movl %esi,%eax + movl %r14d,32(%rsp) + movl %r11d,%ecx + bswapl %edx + xorl %r13d,%eax + roll $5,%ecx + andl %r12d,%eax + leal 1518500249(%r14,%rdi,1),%edi + addl %ecx,%edi + xorl %esi,%eax + roll $30,%r12d + addl %eax,%edi + movl 40(%r9),%ebp + movl %r13d,%eax + movl %edx,36(%rsp) + movl %edi,%ecx + bswapl %ebp + xorl %r12d,%eax + roll $5,%ecx + andl %r11d,%eax + leal 1518500249(%rdx,%rsi,1),%esi + addl %ecx,%esi + xorl %r13d,%eax + roll $30,%r11d + addl %eax,%esi + movl 44(%r9),%r14d + movl %r12d,%eax + movl %ebp,40(%rsp) + movl %esi,%ecx + bswapl %r14d + xorl %r11d,%eax + roll $5,%ecx + andl %edi,%eax + leal 1518500249(%rbp,%r13,1),%r13d + addl %ecx,%r13d + xorl %r12d,%eax + roll $30,%edi + addl %eax,%r13d + movl 48(%r9),%edx + movl %r11d,%eax + movl %r14d,44(%rsp) + movl %r13d,%ecx + bswapl %edx + xorl %edi,%eax + roll $5,%ecx + andl %esi,%eax + leal 1518500249(%r14,%r12,1),%r12d + addl %ecx,%r12d + xorl %r11d,%eax + roll $30,%esi + addl %eax,%r12d + movl 52(%r9),%ebp + movl %edi,%eax + movl %edx,48(%rsp) + movl %r12d,%ecx + bswapl %ebp + xorl %esi,%eax + roll $5,%ecx + andl %r13d,%eax + leal 1518500249(%rdx,%r11,1),%r11d + addl %ecx,%r11d + xorl %edi,%eax + roll $30,%r13d + addl %eax,%r11d + movl 56(%r9),%r14d + movl %esi,%eax + movl %ebp,52(%rsp) + movl %r11d,%ecx + bswapl %r14d + xorl %r13d,%eax + roll $5,%ecx + andl %r12d,%eax + leal 1518500249(%rbp,%rdi,1),%edi + addl %ecx,%edi + xorl %esi,%eax + roll $30,%r12d + addl %eax,%edi + movl 60(%r9),%edx + movl %r13d,%eax + movl %r14d,56(%rsp) + movl %edi,%ecx + bswapl %edx + xorl %r12d,%eax + roll $5,%ecx + andl %r11d,%eax + leal 1518500249(%r14,%rsi,1),%esi + addl %ecx,%esi + xorl %r13d,%eax + roll $30,%r11d + addl %eax,%esi + xorl 0(%rsp),%ebp + movl %r12d,%eax + movl %edx,60(%rsp) + movl %esi,%ecx + xorl 8(%rsp),%ebp + xorl %r11d,%eax + roll $5,%ecx + xorl 32(%rsp),%ebp + andl %edi,%eax + leal 1518500249(%rdx,%r13,1),%r13d + roll $30,%edi + xorl %r12d,%eax + addl %ecx,%r13d + roll $1,%ebp + addl %eax,%r13d + xorl 4(%rsp),%r14d + movl %r11d,%eax + movl %ebp,0(%rsp) + movl %r13d,%ecx + xorl 12(%rsp),%r14d + xorl %edi,%eax + roll $5,%ecx + xorl 36(%rsp),%r14d + andl %esi,%eax + leal 1518500249(%rbp,%r12,1),%r12d + roll $30,%esi + xorl %r11d,%eax + addl %ecx,%r12d + roll $1,%r14d + addl %eax,%r12d + xorl 8(%rsp),%edx + movl %edi,%eax + movl %r14d,4(%rsp) + movl %r12d,%ecx + xorl 16(%rsp),%edx + xorl %esi,%eax + roll $5,%ecx + xorl 40(%rsp),%edx + andl %r13d,%eax + leal 1518500249(%r14,%r11,1),%r11d + roll $30,%r13d + xorl %edi,%eax + addl %ecx,%r11d + roll $1,%edx + addl %eax,%r11d + xorl 12(%rsp),%ebp + movl %esi,%eax + movl %edx,8(%rsp) + movl %r11d,%ecx + xorl 20(%rsp),%ebp + xorl %r13d,%eax + roll $5,%ecx + xorl 44(%rsp),%ebp + andl %r12d,%eax + leal 1518500249(%rdx,%rdi,1),%edi + roll $30,%r12d + xorl %esi,%eax + addl %ecx,%edi + roll $1,%ebp + addl %eax,%edi + xorl 16(%rsp),%r14d + movl %r13d,%eax + movl %ebp,12(%rsp) + movl %edi,%ecx + xorl 24(%rsp),%r14d + xorl %r12d,%eax + roll $5,%ecx + xorl 48(%rsp),%r14d + andl %r11d,%eax + leal 1518500249(%rbp,%rsi,1),%esi + roll $30,%r11d + xorl %r13d,%eax + addl %ecx,%esi + roll $1,%r14d + addl %eax,%esi + xorl 20(%rsp),%edx + movl %edi,%eax + movl %r14d,16(%rsp) + movl %esi,%ecx + xorl 28(%rsp),%edx + xorl %r12d,%eax + roll $5,%ecx + xorl 52(%rsp),%edx + leal 1859775393(%r14,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%edx + xorl 24(%rsp),%ebp + movl %esi,%eax + movl %edx,20(%rsp) + movl %r13d,%ecx + xorl 32(%rsp),%ebp + xorl %r11d,%eax + roll $5,%ecx + xorl 56(%rsp),%ebp + leal 1859775393(%rdx,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%ebp + xorl 28(%rsp),%r14d + movl %r13d,%eax + movl %ebp,24(%rsp) + movl %r12d,%ecx + xorl 36(%rsp),%r14d + xorl %edi,%eax + roll $5,%ecx + xorl 60(%rsp),%r14d + leal 1859775393(%rbp,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%r14d + xorl 32(%rsp),%edx + movl %r12d,%eax + movl %r14d,28(%rsp) + movl %r11d,%ecx + xorl 40(%rsp),%edx + xorl %esi,%eax + roll $5,%ecx + xorl 0(%rsp),%edx + leal 1859775393(%r14,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%edx + xorl 36(%rsp),%ebp + movl %r11d,%eax + movl %edx,32(%rsp) + movl %edi,%ecx + xorl 44(%rsp),%ebp + xorl %r13d,%eax + roll $5,%ecx + xorl 4(%rsp),%ebp + leal 1859775393(%rdx,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%ebp + xorl 40(%rsp),%r14d + movl %edi,%eax + movl %ebp,36(%rsp) + movl %esi,%ecx + xorl 48(%rsp),%r14d + xorl %r12d,%eax + roll $5,%ecx + xorl 8(%rsp),%r14d + leal 1859775393(%rbp,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%r14d + xorl 44(%rsp),%edx + movl %esi,%eax + movl %r14d,40(%rsp) + movl %r13d,%ecx + xorl 52(%rsp),%edx + xorl %r11d,%eax + roll $5,%ecx + xorl 12(%rsp),%edx + leal 1859775393(%r14,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%edx + xorl 48(%rsp),%ebp + movl %r13d,%eax + movl %edx,44(%rsp) + movl %r12d,%ecx + xorl 56(%rsp),%ebp + xorl %edi,%eax + roll $5,%ecx + xorl 16(%rsp),%ebp + leal 1859775393(%rdx,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%ebp + xorl 52(%rsp),%r14d + movl %r12d,%eax + movl %ebp,48(%rsp) + movl %r11d,%ecx + xorl 60(%rsp),%r14d + xorl %esi,%eax + roll $5,%ecx + xorl 20(%rsp),%r14d + leal 1859775393(%rbp,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%r14d + xorl 56(%rsp),%edx + movl %r11d,%eax + movl %r14d,52(%rsp) + movl %edi,%ecx + xorl 0(%rsp),%edx + xorl %r13d,%eax + roll $5,%ecx + xorl 24(%rsp),%edx + leal 1859775393(%r14,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%edx + xorl 60(%rsp),%ebp + movl %edi,%eax + movl %edx,56(%rsp) + movl %esi,%ecx + xorl 4(%rsp),%ebp + xorl %r12d,%eax + roll $5,%ecx + xorl 28(%rsp),%ebp + leal 1859775393(%rdx,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%ebp + xorl 0(%rsp),%r14d + movl %esi,%eax + movl %ebp,60(%rsp) + movl %r13d,%ecx + xorl 8(%rsp),%r14d + xorl %r11d,%eax + roll $5,%ecx + xorl 32(%rsp),%r14d + leal 1859775393(%rbp,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%r14d + xorl 4(%rsp),%edx + movl %r13d,%eax + movl %r14d,0(%rsp) + movl %r12d,%ecx + xorl 12(%rsp),%edx + xorl %edi,%eax + roll $5,%ecx + xorl 36(%rsp),%edx + leal 1859775393(%r14,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%edx + xorl 8(%rsp),%ebp + movl %r12d,%eax + movl %edx,4(%rsp) + movl %r11d,%ecx + xorl 16(%rsp),%ebp + xorl %esi,%eax + roll $5,%ecx + xorl 40(%rsp),%ebp + leal 1859775393(%rdx,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%ebp + xorl 12(%rsp),%r14d + movl %r11d,%eax + movl %ebp,8(%rsp) + movl %edi,%ecx + xorl 20(%rsp),%r14d + xorl %r13d,%eax + roll $5,%ecx + xorl 44(%rsp),%r14d + leal 1859775393(%rbp,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%r14d + xorl 16(%rsp),%edx + movl %edi,%eax + movl %r14d,12(%rsp) + movl %esi,%ecx + xorl 24(%rsp),%edx + xorl %r12d,%eax + roll $5,%ecx + xorl 48(%rsp),%edx + leal 1859775393(%r14,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%edx + xorl 20(%rsp),%ebp + movl %esi,%eax + movl %edx,16(%rsp) + movl %r13d,%ecx + xorl 28(%rsp),%ebp + xorl %r11d,%eax + roll $5,%ecx + xorl 52(%rsp),%ebp + leal 1859775393(%rdx,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%ebp + xorl 24(%rsp),%r14d + movl %r13d,%eax + movl %ebp,20(%rsp) + movl %r12d,%ecx + xorl 32(%rsp),%r14d + xorl %edi,%eax + roll $5,%ecx + xorl 56(%rsp),%r14d + leal 1859775393(%rbp,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%r14d + xorl 28(%rsp),%edx + movl %r12d,%eax + movl %r14d,24(%rsp) + movl %r11d,%ecx + xorl 36(%rsp),%edx + xorl %esi,%eax + roll $5,%ecx + xorl 60(%rsp),%edx + leal 1859775393(%r14,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%edx + xorl 32(%rsp),%ebp + movl %r11d,%eax + movl %edx,28(%rsp) + movl %edi,%ecx + xorl 40(%rsp),%ebp + xorl %r13d,%eax + roll $5,%ecx + xorl 0(%rsp),%ebp + leal 1859775393(%rdx,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%ebp + xorl 36(%rsp),%r14d + movl %r12d,%eax + movl %ebp,32(%rsp) + movl %r12d,%ebx + xorl 44(%rsp),%r14d + andl %r11d,%eax + movl %esi,%ecx + xorl 4(%rsp),%r14d + leal -1894007588(%rbp,%r13,1),%r13d + xorl %r11d,%ebx + roll $5,%ecx + addl %eax,%r13d + roll $1,%r14d + andl %edi,%ebx + addl %ecx,%r13d + roll $30,%edi + addl %ebx,%r13d + xorl 40(%rsp),%edx + movl %r11d,%eax + movl %r14d,36(%rsp) + movl %r11d,%ebx + xorl 48(%rsp),%edx + andl %edi,%eax + movl %r13d,%ecx + xorl 8(%rsp),%edx + leal -1894007588(%r14,%r12,1),%r12d + xorl %edi,%ebx + roll $5,%ecx + addl %eax,%r12d + roll $1,%edx + andl %esi,%ebx + addl %ecx,%r12d + roll $30,%esi + addl %ebx,%r12d + xorl 44(%rsp),%ebp + movl %edi,%eax + movl %edx,40(%rsp) + movl %edi,%ebx + xorl 52(%rsp),%ebp + andl %esi,%eax + movl %r12d,%ecx + xorl 12(%rsp),%ebp + leal -1894007588(%rdx,%r11,1),%r11d + xorl %esi,%ebx + roll $5,%ecx + addl %eax,%r11d + roll $1,%ebp + andl %r13d,%ebx + addl %ecx,%r11d + roll $30,%r13d + addl %ebx,%r11d + xorl 48(%rsp),%r14d + movl %esi,%eax + movl %ebp,44(%rsp) + movl %esi,%ebx + xorl 56(%rsp),%r14d + andl %r13d,%eax + movl %r11d,%ecx + xorl 16(%rsp),%r14d + leal -1894007588(%rbp,%rdi,1),%edi + xorl %r13d,%ebx + roll $5,%ecx + addl %eax,%edi + roll $1,%r14d + andl %r12d,%ebx + addl %ecx,%edi + roll $30,%r12d + addl %ebx,%edi + xorl 52(%rsp),%edx + movl %r13d,%eax + movl %r14d,48(%rsp) + movl %r13d,%ebx + xorl 60(%rsp),%edx + andl %r12d,%eax + movl %edi,%ecx + xorl 20(%rsp),%edx + leal -1894007588(%r14,%rsi,1),%esi + xorl %r12d,%ebx + roll $5,%ecx + addl %eax,%esi + roll $1,%edx + andl %r11d,%ebx + addl %ecx,%esi + roll $30,%r11d + addl %ebx,%esi + xorl 56(%rsp),%ebp + movl %r12d,%eax + movl %edx,52(%rsp) + movl %r12d,%ebx + xorl 0(%rsp),%ebp + andl %r11d,%eax + movl %esi,%ecx + xorl 24(%rsp),%ebp + leal -1894007588(%rdx,%r13,1),%r13d + xorl %r11d,%ebx + roll $5,%ecx + addl %eax,%r13d + roll $1,%ebp + andl %edi,%ebx + addl %ecx,%r13d + roll $30,%edi + addl %ebx,%r13d + xorl 60(%rsp),%r14d + movl %r11d,%eax + movl %ebp,56(%rsp) + movl %r11d,%ebx + xorl 4(%rsp),%r14d + andl %edi,%eax + movl %r13d,%ecx + xorl 28(%rsp),%r14d + leal -1894007588(%rbp,%r12,1),%r12d + xorl %edi,%ebx + roll $5,%ecx + addl %eax,%r12d + roll $1,%r14d + andl %esi,%ebx + addl %ecx,%r12d + roll $30,%esi + addl %ebx,%r12d + xorl 0(%rsp),%edx + movl %edi,%eax + movl %r14d,60(%rsp) + movl %edi,%ebx + xorl 8(%rsp),%edx + andl %esi,%eax + movl %r12d,%ecx + xorl 32(%rsp),%edx + leal -1894007588(%r14,%r11,1),%r11d + xorl %esi,%ebx + roll $5,%ecx + addl %eax,%r11d + roll $1,%edx + andl %r13d,%ebx + addl %ecx,%r11d + roll $30,%r13d + addl %ebx,%r11d + xorl 4(%rsp),%ebp + movl %esi,%eax + movl %edx,0(%rsp) + movl %esi,%ebx + xorl 12(%rsp),%ebp + andl %r13d,%eax + movl %r11d,%ecx + xorl 36(%rsp),%ebp + leal -1894007588(%rdx,%rdi,1),%edi + xorl %r13d,%ebx + roll $5,%ecx + addl %eax,%edi + roll $1,%ebp + andl %r12d,%ebx + addl %ecx,%edi + roll $30,%r12d + addl %ebx,%edi + xorl 8(%rsp),%r14d + movl %r13d,%eax + movl %ebp,4(%rsp) + movl %r13d,%ebx + xorl 16(%rsp),%r14d + andl %r12d,%eax + movl %edi,%ecx + xorl 40(%rsp),%r14d + leal -1894007588(%rbp,%rsi,1),%esi + xorl %r12d,%ebx + roll $5,%ecx + addl %eax,%esi + roll $1,%r14d + andl %r11d,%ebx + addl %ecx,%esi + roll $30,%r11d + addl %ebx,%esi + xorl 12(%rsp),%edx + movl %r12d,%eax + movl %r14d,8(%rsp) + movl %r12d,%ebx + xorl 20(%rsp),%edx + andl %r11d,%eax + movl %esi,%ecx + xorl 44(%rsp),%edx + leal -1894007588(%r14,%r13,1),%r13d + xorl %r11d,%ebx + roll $5,%ecx + addl %eax,%r13d + roll $1,%edx + andl %edi,%ebx + addl %ecx,%r13d + roll $30,%edi + addl %ebx,%r13d + xorl 16(%rsp),%ebp + movl %r11d,%eax + movl %edx,12(%rsp) + movl %r11d,%ebx + xorl 24(%rsp),%ebp + andl %edi,%eax + movl %r13d,%ecx + xorl 48(%rsp),%ebp + leal -1894007588(%rdx,%r12,1),%r12d + xorl %edi,%ebx + roll $5,%ecx + addl %eax,%r12d + roll $1,%ebp + andl %esi,%ebx + addl %ecx,%r12d + roll $30,%esi + addl %ebx,%r12d + xorl 20(%rsp),%r14d + movl %edi,%eax + movl %ebp,16(%rsp) + movl %edi,%ebx + xorl 28(%rsp),%r14d + andl %esi,%eax + movl %r12d,%ecx + xorl 52(%rsp),%r14d + leal -1894007588(%rbp,%r11,1),%r11d + xorl %esi,%ebx + roll $5,%ecx + addl %eax,%r11d + roll $1,%r14d + andl %r13d,%ebx + addl %ecx,%r11d + roll $30,%r13d + addl %ebx,%r11d + xorl 24(%rsp),%edx + movl %esi,%eax + movl %r14d,20(%rsp) + movl %esi,%ebx + xorl 32(%rsp),%edx + andl %r13d,%eax + movl %r11d,%ecx + xorl 56(%rsp),%edx + leal -1894007588(%r14,%rdi,1),%edi + xorl %r13d,%ebx + roll $5,%ecx + addl %eax,%edi + roll $1,%edx + andl %r12d,%ebx + addl %ecx,%edi + roll $30,%r12d + addl %ebx,%edi + xorl 28(%rsp),%ebp + movl %r13d,%eax + movl %edx,24(%rsp) + movl %r13d,%ebx + xorl 36(%rsp),%ebp + andl %r12d,%eax + movl %edi,%ecx + xorl 60(%rsp),%ebp + leal -1894007588(%rdx,%rsi,1),%esi + xorl %r12d,%ebx + roll $5,%ecx + addl %eax,%esi + roll $1,%ebp + andl %r11d,%ebx + addl %ecx,%esi + roll $30,%r11d + addl %ebx,%esi + xorl 32(%rsp),%r14d + movl %r12d,%eax + movl %ebp,28(%rsp) + movl %r12d,%ebx + xorl 40(%rsp),%r14d + andl %r11d,%eax + movl %esi,%ecx + xorl 0(%rsp),%r14d + leal -1894007588(%rbp,%r13,1),%r13d + xorl %r11d,%ebx + roll $5,%ecx + addl %eax,%r13d + roll $1,%r14d + andl %edi,%ebx + addl %ecx,%r13d + roll $30,%edi + addl %ebx,%r13d + xorl 36(%rsp),%edx + movl %r11d,%eax + movl %r14d,32(%rsp) + movl %r11d,%ebx + xorl 44(%rsp),%edx + andl %edi,%eax + movl %r13d,%ecx + xorl 4(%rsp),%edx + leal -1894007588(%r14,%r12,1),%r12d + xorl %edi,%ebx + roll $5,%ecx + addl %eax,%r12d + roll $1,%edx + andl %esi,%ebx + addl %ecx,%r12d + roll $30,%esi + addl %ebx,%r12d + xorl 40(%rsp),%ebp + movl %edi,%eax + movl %edx,36(%rsp) + movl %edi,%ebx + xorl 48(%rsp),%ebp + andl %esi,%eax + movl %r12d,%ecx + xorl 8(%rsp),%ebp + leal -1894007588(%rdx,%r11,1),%r11d + xorl %esi,%ebx + roll $5,%ecx + addl %eax,%r11d + roll $1,%ebp + andl %r13d,%ebx + addl %ecx,%r11d + roll $30,%r13d + addl %ebx,%r11d + xorl 44(%rsp),%r14d + movl %esi,%eax + movl %ebp,40(%rsp) + movl %esi,%ebx + xorl 52(%rsp),%r14d + andl %r13d,%eax + movl %r11d,%ecx + xorl 12(%rsp),%r14d + leal -1894007588(%rbp,%rdi,1),%edi + xorl %r13d,%ebx + roll $5,%ecx + addl %eax,%edi + roll $1,%r14d + andl %r12d,%ebx + addl %ecx,%edi + roll $30,%r12d + addl %ebx,%edi + xorl 48(%rsp),%edx + movl %r13d,%eax + movl %r14d,44(%rsp) + movl %r13d,%ebx + xorl 56(%rsp),%edx + andl %r12d,%eax + movl %edi,%ecx + xorl 16(%rsp),%edx + leal -1894007588(%r14,%rsi,1),%esi + xorl %r12d,%ebx + roll $5,%ecx + addl %eax,%esi + roll $1,%edx + andl %r11d,%ebx + addl %ecx,%esi + roll $30,%r11d + addl %ebx,%esi + xorl 52(%rsp),%ebp + movl %edi,%eax + movl %edx,48(%rsp) + movl %esi,%ecx + xorl 60(%rsp),%ebp + xorl %r12d,%eax + roll $5,%ecx + xorl 20(%rsp),%ebp + leal -899497514(%rdx,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%ebp + xorl 56(%rsp),%r14d + movl %esi,%eax + movl %ebp,52(%rsp) + movl %r13d,%ecx + xorl 0(%rsp),%r14d + xorl %r11d,%eax + roll $5,%ecx + xorl 24(%rsp),%r14d + leal -899497514(%rbp,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%r14d + xorl 60(%rsp),%edx + movl %r13d,%eax + movl %r14d,56(%rsp) + movl %r12d,%ecx + xorl 4(%rsp),%edx + xorl %edi,%eax + roll $5,%ecx + xorl 28(%rsp),%edx + leal -899497514(%r14,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%edx + xorl 0(%rsp),%ebp + movl %r12d,%eax + movl %edx,60(%rsp) + movl %r11d,%ecx + xorl 8(%rsp),%ebp + xorl %esi,%eax + roll $5,%ecx + xorl 32(%rsp),%ebp + leal -899497514(%rdx,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%ebp + xorl 4(%rsp),%r14d + movl %r11d,%eax + movl %ebp,0(%rsp) + movl %edi,%ecx + xorl 12(%rsp),%r14d + xorl %r13d,%eax + roll $5,%ecx + xorl 36(%rsp),%r14d + leal -899497514(%rbp,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%r14d + xorl 8(%rsp),%edx + movl %edi,%eax + movl %r14d,4(%rsp) + movl %esi,%ecx + xorl 16(%rsp),%edx + xorl %r12d,%eax + roll $5,%ecx + xorl 40(%rsp),%edx + leal -899497514(%r14,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%edx + xorl 12(%rsp),%ebp + movl %esi,%eax + movl %edx,8(%rsp) + movl %r13d,%ecx + xorl 20(%rsp),%ebp + xorl %r11d,%eax + roll $5,%ecx + xorl 44(%rsp),%ebp + leal -899497514(%rdx,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%ebp + xorl 16(%rsp),%r14d + movl %r13d,%eax + movl %ebp,12(%rsp) + movl %r12d,%ecx + xorl 24(%rsp),%r14d + xorl %edi,%eax + roll $5,%ecx + xorl 48(%rsp),%r14d + leal -899497514(%rbp,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%r14d + xorl 20(%rsp),%edx + movl %r12d,%eax + movl %r14d,16(%rsp) + movl %r11d,%ecx + xorl 28(%rsp),%edx + xorl %esi,%eax + roll $5,%ecx + xorl 52(%rsp),%edx + leal -899497514(%r14,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%edx + xorl 24(%rsp),%ebp + movl %r11d,%eax + movl %edx,20(%rsp) + movl %edi,%ecx + xorl 32(%rsp),%ebp + xorl %r13d,%eax + roll $5,%ecx + xorl 56(%rsp),%ebp + leal -899497514(%rdx,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%ebp + xorl 28(%rsp),%r14d + movl %edi,%eax + movl %ebp,24(%rsp) + movl %esi,%ecx + xorl 36(%rsp),%r14d + xorl %r12d,%eax + roll $5,%ecx + xorl 60(%rsp),%r14d + leal -899497514(%rbp,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%r14d + xorl 32(%rsp),%edx + movl %esi,%eax + movl %r14d,28(%rsp) + movl %r13d,%ecx + xorl 40(%rsp),%edx + xorl %r11d,%eax + roll $5,%ecx + xorl 0(%rsp),%edx + leal -899497514(%r14,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%edx + xorl 36(%rsp),%ebp + movl %r13d,%eax + + movl %r12d,%ecx + xorl 44(%rsp),%ebp + xorl %edi,%eax + roll $5,%ecx + xorl 4(%rsp),%ebp + leal -899497514(%rdx,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%ebp + xorl 40(%rsp),%r14d + movl %r12d,%eax + + movl %r11d,%ecx + xorl 48(%rsp),%r14d + xorl %esi,%eax + roll $5,%ecx + xorl 8(%rsp),%r14d + leal -899497514(%rbp,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%r14d + xorl 44(%rsp),%edx + movl %r11d,%eax + + movl %edi,%ecx + xorl 52(%rsp),%edx + xorl %r13d,%eax + roll $5,%ecx + xorl 12(%rsp),%edx + leal -899497514(%r14,%rsi,1),%esi + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + roll $1,%edx + xorl 48(%rsp),%ebp + movl %edi,%eax + + movl %esi,%ecx + xorl 56(%rsp),%ebp + xorl %r12d,%eax + roll $5,%ecx + xorl 16(%rsp),%ebp + leal -899497514(%rdx,%r13,1),%r13d + xorl %r11d,%eax + addl %ecx,%r13d + roll $30,%edi + addl %eax,%r13d + roll $1,%ebp + xorl 52(%rsp),%r14d + movl %esi,%eax + + movl %r13d,%ecx + xorl 60(%rsp),%r14d + xorl %r11d,%eax + roll $5,%ecx + xorl 20(%rsp),%r14d + leal -899497514(%rbp,%r12,1),%r12d + xorl %edi,%eax + addl %ecx,%r12d + roll $30,%esi + addl %eax,%r12d + roll $1,%r14d + xorl 56(%rsp),%edx + movl %r13d,%eax + + movl %r12d,%ecx + xorl 0(%rsp),%edx + xorl %edi,%eax + roll $5,%ecx + xorl 24(%rsp),%edx + leal -899497514(%r14,%r11,1),%r11d + xorl %esi,%eax + addl %ecx,%r11d + roll $30,%r13d + addl %eax,%r11d + roll $1,%edx + xorl 60(%rsp),%ebp + movl %r12d,%eax + + movl %r11d,%ecx + xorl 4(%rsp),%ebp + xorl %esi,%eax + roll $5,%ecx + xorl 28(%rsp),%ebp + leal -899497514(%rdx,%rdi,1),%edi + xorl %r13d,%eax + addl %ecx,%edi + roll $30,%r12d + addl %eax,%edi + roll $1,%ebp + movl %r11d,%eax + movl %edi,%ecx + xorl %r13d,%eax + leal -899497514(%rbp,%rsi,1),%esi + roll $5,%ecx + xorl %r12d,%eax + addl %ecx,%esi + roll $30,%r11d + addl %eax,%esi + addl 0(%r8),%esi + addl 4(%r8),%edi + addl 8(%r8),%r11d + addl 12(%r8),%r12d + addl 16(%r8),%r13d + movl %esi,0(%r8) + movl %edi,4(%r8) + movl %r11d,8(%r8) + movl %r12d,12(%r8) + movl %r13d,16(%r8) + + subq $1,%r10 + leaq 64(%r9),%r9 + jnz L$loop + + movq 64(%rsp),%rsi + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +sha1_block_data_order_shaext: +_shaext_shortcut: + + movdqu (%rdi),%xmm0 + movd 16(%rdi),%xmm1 + movdqa K_XX_XX+160(%rip),%xmm3 + + movdqu (%rsi),%xmm4 + pshufd $27,%xmm0,%xmm0 + movdqu 16(%rsi),%xmm5 + pshufd $27,%xmm1,%xmm1 + movdqu 32(%rsi),%xmm6 +.byte 102,15,56,0,227 + movdqu 48(%rsi),%xmm7 +.byte 102,15,56,0,235 +.byte 102,15,56,0,243 + movdqa %xmm1,%xmm9 +.byte 102,15,56,0,251 + jmp L$oop_shaext + +.p2align 4 +L$oop_shaext: + decq %rdx + leaq 64(%rsi),%r8 + paddd %xmm4,%xmm1 + cmovneq %r8,%rsi + movdqa %xmm0,%xmm8 +.byte 15,56,201,229 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,0 +.byte 15,56,200,213 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 +.byte 15,56,202,231 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,0 +.byte 15,56,200,206 + pxor %xmm7,%xmm5 +.byte 15,56,202,236 +.byte 15,56,201,247 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,0 +.byte 15,56,200,215 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 +.byte 15,56,202,245 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,0 +.byte 15,56,200,204 + pxor %xmm5,%xmm7 +.byte 15,56,202,254 +.byte 15,56,201,229 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,0 +.byte 15,56,200,213 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 +.byte 15,56,202,231 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,1 +.byte 15,56,200,206 + pxor %xmm7,%xmm5 +.byte 15,56,202,236 +.byte 15,56,201,247 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,1 +.byte 15,56,200,215 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 +.byte 15,56,202,245 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,1 +.byte 15,56,200,204 + pxor %xmm5,%xmm7 +.byte 15,56,202,254 +.byte 15,56,201,229 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,1 +.byte 15,56,200,213 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 +.byte 15,56,202,231 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,1 +.byte 15,56,200,206 + pxor %xmm7,%xmm5 +.byte 15,56,202,236 +.byte 15,56,201,247 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,2 +.byte 15,56,200,215 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 +.byte 15,56,202,245 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,2 +.byte 15,56,200,204 + pxor %xmm5,%xmm7 +.byte 15,56,202,254 +.byte 15,56,201,229 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,2 +.byte 15,56,200,213 + pxor %xmm6,%xmm4 +.byte 15,56,201,238 +.byte 15,56,202,231 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,2 +.byte 15,56,200,206 + pxor %xmm7,%xmm5 +.byte 15,56,202,236 +.byte 15,56,201,247 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,2 +.byte 15,56,200,215 + pxor %xmm4,%xmm6 +.byte 15,56,201,252 +.byte 15,56,202,245 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,3 +.byte 15,56,200,204 + pxor %xmm5,%xmm7 +.byte 15,56,202,254 + movdqu (%rsi),%xmm4 + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,3 +.byte 15,56,200,213 + movdqu 16(%rsi),%xmm5 +.byte 102,15,56,0,227 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,3 +.byte 15,56,200,206 + movdqu 32(%rsi),%xmm6 +.byte 102,15,56,0,235 + + movdqa %xmm0,%xmm2 +.byte 15,58,204,193,3 +.byte 15,56,200,215 + movdqu 48(%rsi),%xmm7 +.byte 102,15,56,0,243 + + movdqa %xmm0,%xmm1 +.byte 15,58,204,194,3 +.byte 65,15,56,200,201 +.byte 102,15,56,0,251 + + paddd %xmm8,%xmm0 + movdqa %xmm1,%xmm9 + + jnz L$oop_shaext + + pshufd $27,%xmm0,%xmm0 + pshufd $27,%xmm1,%xmm1 + movdqu %xmm0,(%rdi) + movd %xmm1,16(%rdi) + .byte 0xf3,0xc3 + + + +.p2align 4 +sha1_block_data_order_ssse3: +_ssse3_shortcut: + + movq %rsp,%r11 + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + leaq -64(%rsp),%rsp + andq $-64,%rsp + movq %rdi,%r8 + movq %rsi,%r9 + movq %rdx,%r10 + + shlq $6,%r10 + addq %r9,%r10 + leaq K_XX_XX+64(%rip),%r14 + + movl 0(%r8),%eax + movl 4(%r8),%ebx + movl 8(%r8),%ecx + movl 12(%r8),%edx + movl %ebx,%esi + movl 16(%r8),%ebp + movl %ecx,%edi + xorl %edx,%edi + andl %edi,%esi + + movdqa 64(%r14),%xmm6 + movdqa -64(%r14),%xmm9 + movdqu 0(%r9),%xmm0 + movdqu 16(%r9),%xmm1 + movdqu 32(%r9),%xmm2 + movdqu 48(%r9),%xmm3 +.byte 102,15,56,0,198 +.byte 102,15,56,0,206 +.byte 102,15,56,0,214 + addq $64,%r9 + paddd %xmm9,%xmm0 +.byte 102,15,56,0,222 + paddd %xmm9,%xmm1 + paddd %xmm9,%xmm2 + movdqa %xmm0,0(%rsp) + psubd %xmm9,%xmm0 + movdqa %xmm1,16(%rsp) + psubd %xmm9,%xmm1 + movdqa %xmm2,32(%rsp) + psubd %xmm9,%xmm2 + jmp L$oop_ssse3 +.p2align 4 +L$oop_ssse3: + rorl $2,%ebx + pshufd $238,%xmm0,%xmm4 + xorl %edx,%esi + movdqa %xmm3,%xmm8 + paddd %xmm3,%xmm9 + movl %eax,%edi + addl 0(%rsp),%ebp + punpcklqdq %xmm1,%xmm4 + xorl %ecx,%ebx + roll $5,%eax + addl %esi,%ebp + psrldq $4,%xmm8 + andl %ebx,%edi + xorl %ecx,%ebx + pxor %xmm0,%xmm4 + addl %eax,%ebp + rorl $7,%eax + pxor %xmm2,%xmm8 + xorl %ecx,%edi + movl %ebp,%esi + addl 4(%rsp),%edx + pxor %xmm8,%xmm4 + xorl %ebx,%eax + roll $5,%ebp + movdqa %xmm9,48(%rsp) + addl %edi,%edx + andl %eax,%esi + movdqa %xmm4,%xmm10 + xorl %ebx,%eax + addl %ebp,%edx + rorl $7,%ebp + movdqa %xmm4,%xmm8 + xorl %ebx,%esi + pslldq $12,%xmm10 + paddd %xmm4,%xmm4 + movl %edx,%edi + addl 8(%rsp),%ecx + psrld $31,%xmm8 + xorl %eax,%ebp + roll $5,%edx + addl %esi,%ecx + movdqa %xmm10,%xmm9 + andl %ebp,%edi + xorl %eax,%ebp + psrld $30,%xmm10 + addl %edx,%ecx + rorl $7,%edx + por %xmm8,%xmm4 + xorl %eax,%edi + movl %ecx,%esi + addl 12(%rsp),%ebx + pslld $2,%xmm9 + pxor %xmm10,%xmm4 + xorl %ebp,%edx + movdqa -64(%r14),%xmm10 + roll $5,%ecx + addl %edi,%ebx + andl %edx,%esi + pxor %xmm9,%xmm4 + xorl %ebp,%edx + addl %ecx,%ebx + rorl $7,%ecx + pshufd $238,%xmm1,%xmm5 + xorl %ebp,%esi + movdqa %xmm4,%xmm9 + paddd %xmm4,%xmm10 + movl %ebx,%edi + addl 16(%rsp),%eax + punpcklqdq %xmm2,%xmm5 + xorl %edx,%ecx + roll $5,%ebx + addl %esi,%eax + psrldq $4,%xmm9 + andl %ecx,%edi + xorl %edx,%ecx + pxor %xmm1,%xmm5 + addl %ebx,%eax + rorl $7,%ebx + pxor %xmm3,%xmm9 + xorl %edx,%edi + movl %eax,%esi + addl 20(%rsp),%ebp + pxor %xmm9,%xmm5 + xorl %ecx,%ebx + roll $5,%eax + movdqa %xmm10,0(%rsp) + addl %edi,%ebp + andl %ebx,%esi + movdqa %xmm5,%xmm8 + xorl %ecx,%ebx + addl %eax,%ebp + rorl $7,%eax + movdqa %xmm5,%xmm9 + xorl %ecx,%esi + pslldq $12,%xmm8 + paddd %xmm5,%xmm5 + movl %ebp,%edi + addl 24(%rsp),%edx + psrld $31,%xmm9 + xorl %ebx,%eax + roll $5,%ebp + addl %esi,%edx + movdqa %xmm8,%xmm10 + andl %eax,%edi + xorl %ebx,%eax + psrld $30,%xmm8 + addl %ebp,%edx + rorl $7,%ebp + por %xmm9,%xmm5 + xorl %ebx,%edi + movl %edx,%esi + addl 28(%rsp),%ecx + pslld $2,%xmm10 + pxor %xmm8,%xmm5 + xorl %eax,%ebp + movdqa -32(%r14),%xmm8 + roll $5,%edx + addl %edi,%ecx + andl %ebp,%esi + pxor %xmm10,%xmm5 + xorl %eax,%ebp + addl %edx,%ecx + rorl $7,%edx + pshufd $238,%xmm2,%xmm6 + xorl %eax,%esi + movdqa %xmm5,%xmm10 + paddd %xmm5,%xmm8 + movl %ecx,%edi + addl 32(%rsp),%ebx + punpcklqdq %xmm3,%xmm6 + xorl %ebp,%edx + roll $5,%ecx + addl %esi,%ebx + psrldq $4,%xmm10 + andl %edx,%edi + xorl %ebp,%edx + pxor %xmm2,%xmm6 + addl %ecx,%ebx + rorl $7,%ecx + pxor %xmm4,%xmm10 + xorl %ebp,%edi + movl %ebx,%esi + addl 36(%rsp),%eax + pxor %xmm10,%xmm6 + xorl %edx,%ecx + roll $5,%ebx + movdqa %xmm8,16(%rsp) + addl %edi,%eax + andl %ecx,%esi + movdqa %xmm6,%xmm9 + xorl %edx,%ecx + addl %ebx,%eax + rorl $7,%ebx + movdqa %xmm6,%xmm10 + xorl %edx,%esi + pslldq $12,%xmm9 + paddd %xmm6,%xmm6 + movl %eax,%edi + addl 40(%rsp),%ebp + psrld $31,%xmm10 + xorl %ecx,%ebx + roll $5,%eax + addl %esi,%ebp + movdqa %xmm9,%xmm8 + andl %ebx,%edi + xorl %ecx,%ebx + psrld $30,%xmm9 + addl %eax,%ebp + rorl $7,%eax + por %xmm10,%xmm6 + xorl %ecx,%edi + movl %ebp,%esi + addl 44(%rsp),%edx + pslld $2,%xmm8 + pxor %xmm9,%xmm6 + xorl %ebx,%eax + movdqa -32(%r14),%xmm9 + roll $5,%ebp + addl %edi,%edx + andl %eax,%esi + pxor %xmm8,%xmm6 + xorl %ebx,%eax + addl %ebp,%edx + rorl $7,%ebp + pshufd $238,%xmm3,%xmm7 + xorl %ebx,%esi + movdqa %xmm6,%xmm8 + paddd %xmm6,%xmm9 + movl %edx,%edi + addl 48(%rsp),%ecx + punpcklqdq %xmm4,%xmm7 + xorl %eax,%ebp + roll $5,%edx + addl %esi,%ecx + psrldq $4,%xmm8 + andl %ebp,%edi + xorl %eax,%ebp + pxor %xmm3,%xmm7 + addl %edx,%ecx + rorl $7,%edx + pxor %xmm5,%xmm8 + xorl %eax,%edi + movl %ecx,%esi + addl 52(%rsp),%ebx + pxor %xmm8,%xmm7 + xorl %ebp,%edx + roll $5,%ecx + movdqa %xmm9,32(%rsp) + addl %edi,%ebx + andl %edx,%esi + movdqa %xmm7,%xmm10 + xorl %ebp,%edx + addl %ecx,%ebx + rorl $7,%ecx + movdqa %xmm7,%xmm8 + xorl %ebp,%esi + pslldq $12,%xmm10 + paddd %xmm7,%xmm7 + movl %ebx,%edi + addl 56(%rsp),%eax + psrld $31,%xmm8 + xorl %edx,%ecx + roll $5,%ebx + addl %esi,%eax + movdqa %xmm10,%xmm9 + andl %ecx,%edi + xorl %edx,%ecx + psrld $30,%xmm10 + addl %ebx,%eax + rorl $7,%ebx + por %xmm8,%xmm7 + xorl %edx,%edi + movl %eax,%esi + addl 60(%rsp),%ebp + pslld $2,%xmm9 + pxor %xmm10,%xmm7 + xorl %ecx,%ebx + movdqa -32(%r14),%xmm10 + roll $5,%eax + addl %edi,%ebp + andl %ebx,%esi + pxor %xmm9,%xmm7 + pshufd $238,%xmm6,%xmm9 + xorl %ecx,%ebx + addl %eax,%ebp + rorl $7,%eax + pxor %xmm4,%xmm0 + xorl %ecx,%esi + movl %ebp,%edi + addl 0(%rsp),%edx + punpcklqdq %xmm7,%xmm9 + xorl %ebx,%eax + roll $5,%ebp + pxor %xmm1,%xmm0 + addl %esi,%edx + andl %eax,%edi + movdqa %xmm10,%xmm8 + xorl %ebx,%eax + paddd %xmm7,%xmm10 + addl %ebp,%edx + pxor %xmm9,%xmm0 + rorl $7,%ebp + xorl %ebx,%edi + movl %edx,%esi + addl 4(%rsp),%ecx + movdqa %xmm0,%xmm9 + xorl %eax,%ebp + roll $5,%edx + movdqa %xmm10,48(%rsp) + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + pslld $2,%xmm0 + addl %edx,%ecx + rorl $7,%edx + psrld $30,%xmm9 + xorl %eax,%esi + movl %ecx,%edi + addl 8(%rsp),%ebx + por %xmm9,%xmm0 + xorl %ebp,%edx + roll $5,%ecx + pshufd $238,%xmm7,%xmm10 + addl %esi,%ebx + andl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 12(%rsp),%eax + xorl %ebp,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + rorl $7,%ecx + addl %ebx,%eax + pxor %xmm5,%xmm1 + addl 16(%rsp),%ebp + xorl %ecx,%esi + punpcklqdq %xmm0,%xmm10 + movl %eax,%edi + roll $5,%eax + pxor %xmm2,%xmm1 + addl %esi,%ebp + xorl %ecx,%edi + movdqa %xmm8,%xmm9 + rorl $7,%ebx + paddd %xmm0,%xmm8 + addl %eax,%ebp + pxor %xmm10,%xmm1 + addl 20(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + movdqa %xmm1,%xmm10 + addl %edi,%edx + xorl %ebx,%esi + movdqa %xmm8,0(%rsp) + rorl $7,%eax + addl %ebp,%edx + addl 24(%rsp),%ecx + pslld $2,%xmm1 + xorl %eax,%esi + movl %edx,%edi + psrld $30,%xmm10 + roll $5,%edx + addl %esi,%ecx + xorl %eax,%edi + rorl $7,%ebp + por %xmm10,%xmm1 + addl %edx,%ecx + addl 28(%rsp),%ebx + pshufd $238,%xmm0,%xmm8 + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + addl %ecx,%ebx + pxor %xmm6,%xmm2 + addl 32(%rsp),%eax + xorl %edx,%esi + punpcklqdq %xmm1,%xmm8 + movl %ebx,%edi + roll $5,%ebx + pxor %xmm3,%xmm2 + addl %esi,%eax + xorl %edx,%edi + movdqa 0(%r14),%xmm10 + rorl $7,%ecx + paddd %xmm1,%xmm9 + addl %ebx,%eax + pxor %xmm8,%xmm2 + addl 36(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + movdqa %xmm2,%xmm8 + addl %edi,%ebp + xorl %ecx,%esi + movdqa %xmm9,16(%rsp) + rorl $7,%ebx + addl %eax,%ebp + addl 40(%rsp),%edx + pslld $2,%xmm2 + xorl %ebx,%esi + movl %ebp,%edi + psrld $30,%xmm8 + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + por %xmm8,%xmm2 + addl %ebp,%edx + addl 44(%rsp),%ecx + pshufd $238,%xmm1,%xmm9 + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + addl %edi,%ecx + xorl %eax,%esi + rorl $7,%ebp + addl %edx,%ecx + pxor %xmm7,%xmm3 + addl 48(%rsp),%ebx + xorl %ebp,%esi + punpcklqdq %xmm2,%xmm9 + movl %ecx,%edi + roll $5,%ecx + pxor %xmm4,%xmm3 + addl %esi,%ebx + xorl %ebp,%edi + movdqa %xmm10,%xmm8 + rorl $7,%edx + paddd %xmm2,%xmm10 + addl %ecx,%ebx + pxor %xmm9,%xmm3 + addl 52(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + movdqa %xmm3,%xmm9 + addl %edi,%eax + xorl %edx,%esi + movdqa %xmm10,32(%rsp) + rorl $7,%ecx + addl %ebx,%eax + addl 56(%rsp),%ebp + pslld $2,%xmm3 + xorl %ecx,%esi + movl %eax,%edi + psrld $30,%xmm9 + roll $5,%eax + addl %esi,%ebp + xorl %ecx,%edi + rorl $7,%ebx + por %xmm9,%xmm3 + addl %eax,%ebp + addl 60(%rsp),%edx + pshufd $238,%xmm2,%xmm10 + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + addl %edi,%edx + xorl %ebx,%esi + rorl $7,%eax + addl %ebp,%edx + pxor %xmm0,%xmm4 + addl 0(%rsp),%ecx + xorl %eax,%esi + punpcklqdq %xmm3,%xmm10 + movl %edx,%edi + roll $5,%edx + pxor %xmm5,%xmm4 + addl %esi,%ecx + xorl %eax,%edi + movdqa %xmm8,%xmm9 + rorl $7,%ebp + paddd %xmm3,%xmm8 + addl %edx,%ecx + pxor %xmm10,%xmm4 + addl 4(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + movdqa %xmm4,%xmm10 + addl %edi,%ebx + xorl %ebp,%esi + movdqa %xmm8,48(%rsp) + rorl $7,%edx + addl %ecx,%ebx + addl 8(%rsp),%eax + pslld $2,%xmm4 + xorl %edx,%esi + movl %ebx,%edi + psrld $30,%xmm10 + roll $5,%ebx + addl %esi,%eax + xorl %edx,%edi + rorl $7,%ecx + por %xmm10,%xmm4 + addl %ebx,%eax + addl 12(%rsp),%ebp + pshufd $238,%xmm3,%xmm8 + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + pxor %xmm1,%xmm5 + addl 16(%rsp),%edx + xorl %ebx,%esi + punpcklqdq %xmm4,%xmm8 + movl %ebp,%edi + roll $5,%ebp + pxor %xmm6,%xmm5 + addl %esi,%edx + xorl %ebx,%edi + movdqa %xmm9,%xmm10 + rorl $7,%eax + paddd %xmm4,%xmm9 + addl %ebp,%edx + pxor %xmm8,%xmm5 + addl 20(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + movdqa %xmm5,%xmm8 + addl %edi,%ecx + xorl %eax,%esi + movdqa %xmm9,0(%rsp) + rorl $7,%ebp + addl %edx,%ecx + addl 24(%rsp),%ebx + pslld $2,%xmm5 + xorl %ebp,%esi + movl %ecx,%edi + psrld $30,%xmm8 + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + por %xmm8,%xmm5 + addl %ecx,%ebx + addl 28(%rsp),%eax + pshufd $238,%xmm4,%xmm9 + rorl $7,%ecx + movl %ebx,%esi + xorl %edx,%edi + roll $5,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + pxor %xmm2,%xmm6 + addl 32(%rsp),%ebp + andl %ecx,%esi + xorl %edx,%ecx + rorl $7,%ebx + punpcklqdq %xmm5,%xmm9 + movl %eax,%edi + xorl %ecx,%esi + pxor %xmm7,%xmm6 + roll $5,%eax + addl %esi,%ebp + movdqa %xmm10,%xmm8 + xorl %ebx,%edi + paddd %xmm5,%xmm10 + xorl %ecx,%ebx + pxor %xmm9,%xmm6 + addl %eax,%ebp + addl 36(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + rorl $7,%eax + movdqa %xmm6,%xmm9 + movl %ebp,%esi + xorl %ebx,%edi + movdqa %xmm10,16(%rsp) + roll $5,%ebp + addl %edi,%edx + xorl %eax,%esi + pslld $2,%xmm6 + xorl %ebx,%eax + addl %ebp,%edx + psrld $30,%xmm9 + addl 40(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + por %xmm9,%xmm6 + rorl $7,%ebp + movl %edx,%edi + xorl %eax,%esi + roll $5,%edx + pshufd $238,%xmm5,%xmm10 + addl %esi,%ecx + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 44(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + rorl $7,%edx + movl %ecx,%esi + xorl %ebp,%edi + roll $5,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + pxor %xmm3,%xmm7 + addl 48(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + rorl $7,%ecx + punpcklqdq %xmm6,%xmm10 + movl %ebx,%edi + xorl %edx,%esi + pxor %xmm0,%xmm7 + roll $5,%ebx + addl %esi,%eax + movdqa 32(%r14),%xmm9 + xorl %ecx,%edi + paddd %xmm6,%xmm8 + xorl %edx,%ecx + pxor %xmm10,%xmm7 + addl %ebx,%eax + addl 52(%rsp),%ebp + andl %ecx,%edi + xorl %edx,%ecx + rorl $7,%ebx + movdqa %xmm7,%xmm10 + movl %eax,%esi + xorl %ecx,%edi + movdqa %xmm8,32(%rsp) + roll $5,%eax + addl %edi,%ebp + xorl %ebx,%esi + pslld $2,%xmm7 + xorl %ecx,%ebx + addl %eax,%ebp + psrld $30,%xmm10 + addl 56(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + por %xmm10,%xmm7 + rorl $7,%eax + movl %ebp,%edi + xorl %ebx,%esi + roll $5,%ebp + pshufd $238,%xmm6,%xmm8 + addl %esi,%edx + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 60(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + rorl $7,%ebp + movl %edx,%esi + xorl %eax,%edi + roll $5,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + pxor %xmm4,%xmm0 + addl 0(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + rorl $7,%edx + punpcklqdq %xmm7,%xmm8 + movl %ecx,%edi + xorl %ebp,%esi + pxor %xmm1,%xmm0 + roll $5,%ecx + addl %esi,%ebx + movdqa %xmm9,%xmm10 + xorl %edx,%edi + paddd %xmm7,%xmm9 + xorl %ebp,%edx + pxor %xmm8,%xmm0 + addl %ecx,%ebx + addl 4(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + rorl $7,%ecx + movdqa %xmm0,%xmm8 + movl %ebx,%esi + xorl %edx,%edi + movdqa %xmm9,48(%rsp) + roll $5,%ebx + addl %edi,%eax + xorl %ecx,%esi + pslld $2,%xmm0 + xorl %edx,%ecx + addl %ebx,%eax + psrld $30,%xmm8 + addl 8(%rsp),%ebp + andl %ecx,%esi + xorl %edx,%ecx + por %xmm8,%xmm0 + rorl $7,%ebx + movl %eax,%edi + xorl %ecx,%esi + roll $5,%eax + pshufd $238,%xmm7,%xmm9 + addl %esi,%ebp + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 12(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + rorl $7,%eax + movl %ebp,%esi + xorl %ebx,%edi + roll $5,%ebp + addl %edi,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + pxor %xmm5,%xmm1 + addl 16(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + rorl $7,%ebp + punpcklqdq %xmm0,%xmm9 + movl %edx,%edi + xorl %eax,%esi + pxor %xmm2,%xmm1 + roll $5,%edx + addl %esi,%ecx + movdqa %xmm10,%xmm8 + xorl %ebp,%edi + paddd %xmm0,%xmm10 + xorl %eax,%ebp + pxor %xmm9,%xmm1 + addl %edx,%ecx + addl 20(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + rorl $7,%edx + movdqa %xmm1,%xmm9 + movl %ecx,%esi + xorl %ebp,%edi + movdqa %xmm10,0(%rsp) + roll $5,%ecx + addl %edi,%ebx + xorl %edx,%esi + pslld $2,%xmm1 + xorl %ebp,%edx + addl %ecx,%ebx + psrld $30,%xmm9 + addl 24(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + por %xmm9,%xmm1 + rorl $7,%ecx + movl %ebx,%edi + xorl %edx,%esi + roll $5,%ebx + pshufd $238,%xmm0,%xmm10 + addl %esi,%eax + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 28(%rsp),%ebp + andl %ecx,%edi + xorl %edx,%ecx + rorl $7,%ebx + movl %eax,%esi + xorl %ecx,%edi + roll $5,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + pxor %xmm6,%xmm2 + addl 32(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + rorl $7,%eax + punpcklqdq %xmm1,%xmm10 + movl %ebp,%edi + xorl %ebx,%esi + pxor %xmm3,%xmm2 + roll $5,%ebp + addl %esi,%edx + movdqa %xmm8,%xmm9 + xorl %eax,%edi + paddd %xmm1,%xmm8 + xorl %ebx,%eax + pxor %xmm10,%xmm2 + addl %ebp,%edx + addl 36(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + rorl $7,%ebp + movdqa %xmm2,%xmm10 + movl %edx,%esi + xorl %eax,%edi + movdqa %xmm8,16(%rsp) + roll $5,%edx + addl %edi,%ecx + xorl %ebp,%esi + pslld $2,%xmm2 + xorl %eax,%ebp + addl %edx,%ecx + psrld $30,%xmm10 + addl 40(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + por %xmm10,%xmm2 + rorl $7,%edx + movl %ecx,%edi + xorl %ebp,%esi + roll $5,%ecx + pshufd $238,%xmm1,%xmm8 + addl %esi,%ebx + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 44(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + rorl $7,%ecx + movl %ebx,%esi + xorl %edx,%edi + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + addl %ebx,%eax + pxor %xmm7,%xmm3 + addl 48(%rsp),%ebp + xorl %ecx,%esi + punpcklqdq %xmm2,%xmm8 + movl %eax,%edi + roll $5,%eax + pxor %xmm4,%xmm3 + addl %esi,%ebp + xorl %ecx,%edi + movdqa %xmm9,%xmm10 + rorl $7,%ebx + paddd %xmm2,%xmm9 + addl %eax,%ebp + pxor %xmm8,%xmm3 + addl 52(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + movdqa %xmm3,%xmm8 + addl %edi,%edx + xorl %ebx,%esi + movdqa %xmm9,32(%rsp) + rorl $7,%eax + addl %ebp,%edx + addl 56(%rsp),%ecx + pslld $2,%xmm3 + xorl %eax,%esi + movl %edx,%edi + psrld $30,%xmm8 + roll $5,%edx + addl %esi,%ecx + xorl %eax,%edi + rorl $7,%ebp + por %xmm8,%xmm3 + addl %edx,%ecx + addl 60(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + addl %ecx,%ebx + addl 0(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + roll $5,%ebx + paddd %xmm3,%xmm10 + addl %esi,%eax + xorl %edx,%edi + movdqa %xmm10,48(%rsp) + rorl $7,%ecx + addl %ebx,%eax + addl 4(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + addl 8(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + addl %ebp,%edx + addl 12(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + addl %edi,%ecx + xorl %eax,%esi + rorl $7,%ebp + addl %edx,%ecx + cmpq %r10,%r9 + je L$done_ssse3 + movdqa 64(%r14),%xmm6 + movdqa -64(%r14),%xmm9 + movdqu 0(%r9),%xmm0 + movdqu 16(%r9),%xmm1 + movdqu 32(%r9),%xmm2 + movdqu 48(%r9),%xmm3 +.byte 102,15,56,0,198 + addq $64,%r9 + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi +.byte 102,15,56,0,206 + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + paddd %xmm9,%xmm0 + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + movdqa %xmm0,0(%rsp) + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + rorl $7,%ecx + psubd %xmm9,%xmm0 + addl %ebx,%eax + addl 24(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + roll $5,%eax + addl %esi,%ebp + xorl %ecx,%edi + rorl $7,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + addl %edi,%edx + xorl %ebx,%esi + rorl $7,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi +.byte 102,15,56,0,214 + roll $5,%edx + addl %esi,%ecx + xorl %eax,%edi + rorl $7,%ebp + paddd %xmm9,%xmm1 + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + movdqa %xmm1,16(%rsp) + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + psubd %xmm9,%xmm1 + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + roll $5,%ebx + addl %esi,%eax + xorl %edx,%edi + rorl $7,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi +.byte 102,15,56,0,222 + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + paddd %xmm9,%xmm2 + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + movdqa %xmm2,32(%rsp) + roll $5,%edx + addl %edi,%ecx + xorl %eax,%esi + rorl $7,%ebp + psubd %xmm9,%xmm2 + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + rorl $7,%ecx + addl %ebx,%eax + addl 0(%r8),%eax + addl 4(%r8),%esi + addl 8(%r8),%ecx + addl 12(%r8),%edx + movl %eax,0(%r8) + addl 16(%r8),%ebp + movl %esi,4(%r8) + movl %esi,%ebx + movl %ecx,8(%r8) + movl %ecx,%edi + movl %edx,12(%r8) + xorl %edx,%edi + movl %ebp,16(%r8) + andl %edi,%esi + jmp L$oop_ssse3 + +.p2align 4 +L$done_ssse3: + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + xorl %edx,%esi + rorl $7,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + roll $5,%eax + addl %esi,%ebp + xorl %ecx,%edi + rorl $7,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + roll $5,%ebp + addl %edi,%edx + xorl %ebx,%esi + rorl $7,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + roll $5,%edx + addl %esi,%ecx + xorl %eax,%edi + rorl $7,%ebp + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + roll $5,%ecx + addl %edi,%ebx + xorl %ebp,%esi + rorl $7,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + roll $5,%ebx + addl %esi,%eax + xorl %edx,%edi + rorl $7,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + roll $5,%eax + addl %edi,%ebp + xorl %ecx,%esi + rorl $7,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + roll $5,%ebp + addl %esi,%edx + xorl %ebx,%edi + rorl $7,%eax + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + roll $5,%edx + addl %edi,%ecx + xorl %eax,%esi + rorl $7,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + roll $5,%ecx + addl %esi,%ebx + xorl %ebp,%edi + rorl $7,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + roll $5,%ebx + addl %edi,%eax + rorl $7,%ecx + addl %ebx,%eax + addl 0(%r8),%eax + addl 4(%r8),%esi + addl 8(%r8),%ecx + movl %eax,0(%r8) + addl 12(%r8),%edx + movl %esi,4(%r8) + addl 16(%r8),%ebp + movl %ecx,8(%r8) + movl %edx,12(%r8) + movl %ebp,16(%r8) + movq -40(%r11),%r14 + + movq -32(%r11),%r13 + + movq -24(%r11),%r12 + + movq -16(%r11),%rbp + + movq -8(%r11),%rbx + + leaq (%r11),%rsp + +L$epilogue_ssse3: + .byte 0xf3,0xc3 + + + +.p2align 4 +sha1_block_data_order_avx: +_avx_shortcut: + + movq %rsp,%r11 + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + leaq -64(%rsp),%rsp + vzeroupper + andq $-64,%rsp + movq %rdi,%r8 + movq %rsi,%r9 + movq %rdx,%r10 + + shlq $6,%r10 + addq %r9,%r10 + leaq K_XX_XX+64(%rip),%r14 + + movl 0(%r8),%eax + movl 4(%r8),%ebx + movl 8(%r8),%ecx + movl 12(%r8),%edx + movl %ebx,%esi + movl 16(%r8),%ebp + movl %ecx,%edi + xorl %edx,%edi + andl %edi,%esi + + vmovdqa 64(%r14),%xmm6 + vmovdqa -64(%r14),%xmm11 + vmovdqu 0(%r9),%xmm0 + vmovdqu 16(%r9),%xmm1 + vmovdqu 32(%r9),%xmm2 + vmovdqu 48(%r9),%xmm3 + vpshufb %xmm6,%xmm0,%xmm0 + addq $64,%r9 + vpshufb %xmm6,%xmm1,%xmm1 + vpshufb %xmm6,%xmm2,%xmm2 + vpshufb %xmm6,%xmm3,%xmm3 + vpaddd %xmm11,%xmm0,%xmm4 + vpaddd %xmm11,%xmm1,%xmm5 + vpaddd %xmm11,%xmm2,%xmm6 + vmovdqa %xmm4,0(%rsp) + vmovdqa %xmm5,16(%rsp) + vmovdqa %xmm6,32(%rsp) + jmp L$oop_avx +.p2align 4 +L$oop_avx: + shrdl $2,%ebx,%ebx + xorl %edx,%esi + vpalignr $8,%xmm0,%xmm1,%xmm4 + movl %eax,%edi + addl 0(%rsp),%ebp + vpaddd %xmm3,%xmm11,%xmm9 + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrldq $4,%xmm3,%xmm8 + addl %esi,%ebp + andl %ebx,%edi + vpxor %xmm0,%xmm4,%xmm4 + xorl %ecx,%ebx + addl %eax,%ebp + vpxor %xmm2,%xmm8,%xmm8 + shrdl $7,%eax,%eax + xorl %ecx,%edi + movl %ebp,%esi + addl 4(%rsp),%edx + vpxor %xmm8,%xmm4,%xmm4 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vmovdqa %xmm9,48(%rsp) + addl %edi,%edx + andl %eax,%esi + vpsrld $31,%xmm4,%xmm8 + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%esi + vpslldq $12,%xmm4,%xmm10 + vpaddd %xmm4,%xmm4,%xmm4 + movl %edx,%edi + addl 8(%rsp),%ecx + xorl %eax,%ebp + shldl $5,%edx,%edx + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm4,%xmm4 + addl %esi,%ecx + andl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm4,%xmm4 + shrdl $7,%edx,%edx + xorl %eax,%edi + movl %ecx,%esi + addl 12(%rsp),%ebx + vpxor %xmm10,%xmm4,%xmm4 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + addl %edi,%ebx + andl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %ebp,%esi + vpalignr $8,%xmm1,%xmm2,%xmm5 + movl %ebx,%edi + addl 16(%rsp),%eax + vpaddd %xmm4,%xmm11,%xmm9 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrldq $4,%xmm4,%xmm8 + addl %esi,%eax + andl %ecx,%edi + vpxor %xmm1,%xmm5,%xmm5 + xorl %edx,%ecx + addl %ebx,%eax + vpxor %xmm3,%xmm8,%xmm8 + shrdl $7,%ebx,%ebx + xorl %edx,%edi + movl %eax,%esi + addl 20(%rsp),%ebp + vpxor %xmm8,%xmm5,%xmm5 + xorl %ecx,%ebx + shldl $5,%eax,%eax + vmovdqa %xmm9,0(%rsp) + addl %edi,%ebp + andl %ebx,%esi + vpsrld $31,%xmm5,%xmm8 + xorl %ecx,%ebx + addl %eax,%ebp + shrdl $7,%eax,%eax + xorl %ecx,%esi + vpslldq $12,%xmm5,%xmm10 + vpaddd %xmm5,%xmm5,%xmm5 + movl %ebp,%edi + addl 24(%rsp),%edx + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm5,%xmm5 + addl %esi,%edx + andl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm5,%xmm5 + shrdl $7,%ebp,%ebp + xorl %ebx,%edi + movl %edx,%esi + addl 28(%rsp),%ecx + vpxor %xmm10,%xmm5,%xmm5 + xorl %eax,%ebp + shldl $5,%edx,%edx + vmovdqa -32(%r14),%xmm11 + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + vpalignr $8,%xmm2,%xmm3,%xmm6 + movl %ecx,%edi + addl 32(%rsp),%ebx + vpaddd %xmm5,%xmm11,%xmm9 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + vpsrldq $4,%xmm5,%xmm8 + addl %esi,%ebx + andl %edx,%edi + vpxor %xmm2,%xmm6,%xmm6 + xorl %ebp,%edx + addl %ecx,%ebx + vpxor %xmm4,%xmm8,%xmm8 + shrdl $7,%ecx,%ecx + xorl %ebp,%edi + movl %ebx,%esi + addl 36(%rsp),%eax + vpxor %xmm8,%xmm6,%xmm6 + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vmovdqa %xmm9,16(%rsp) + addl %edi,%eax + andl %ecx,%esi + vpsrld $31,%xmm6,%xmm8 + xorl %edx,%ecx + addl %ebx,%eax + shrdl $7,%ebx,%ebx + xorl %edx,%esi + vpslldq $12,%xmm6,%xmm10 + vpaddd %xmm6,%xmm6,%xmm6 + movl %eax,%edi + addl 40(%rsp),%ebp + xorl %ecx,%ebx + shldl $5,%eax,%eax + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm6,%xmm6 + addl %esi,%ebp + andl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm6,%xmm6 + shrdl $7,%eax,%eax + xorl %ecx,%edi + movl %ebp,%esi + addl 44(%rsp),%edx + vpxor %xmm10,%xmm6,%xmm6 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + addl %edi,%edx + andl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%esi + vpalignr $8,%xmm3,%xmm4,%xmm7 + movl %edx,%edi + addl 48(%rsp),%ecx + vpaddd %xmm6,%xmm11,%xmm9 + xorl %eax,%ebp + shldl $5,%edx,%edx + vpsrldq $4,%xmm6,%xmm8 + addl %esi,%ecx + andl %ebp,%edi + vpxor %xmm3,%xmm7,%xmm7 + xorl %eax,%ebp + addl %edx,%ecx + vpxor %xmm5,%xmm8,%xmm8 + shrdl $7,%edx,%edx + xorl %eax,%edi + movl %ecx,%esi + addl 52(%rsp),%ebx + vpxor %xmm8,%xmm7,%xmm7 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + vmovdqa %xmm9,32(%rsp) + addl %edi,%ebx + andl %edx,%esi + vpsrld $31,%xmm7,%xmm8 + xorl %ebp,%edx + addl %ecx,%ebx + shrdl $7,%ecx,%ecx + xorl %ebp,%esi + vpslldq $12,%xmm7,%xmm10 + vpaddd %xmm7,%xmm7,%xmm7 + movl %ebx,%edi + addl 56(%rsp),%eax + xorl %edx,%ecx + shldl $5,%ebx,%ebx + vpsrld $30,%xmm10,%xmm9 + vpor %xmm8,%xmm7,%xmm7 + addl %esi,%eax + andl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + vpslld $2,%xmm10,%xmm10 + vpxor %xmm9,%xmm7,%xmm7 + shrdl $7,%ebx,%ebx + xorl %edx,%edi + movl %eax,%esi + addl 60(%rsp),%ebp + vpxor %xmm10,%xmm7,%xmm7 + xorl %ecx,%ebx + shldl $5,%eax,%eax + addl %edi,%ebp + andl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm6,%xmm7,%xmm8 + vpxor %xmm4,%xmm0,%xmm0 + shrdl $7,%eax,%eax + xorl %ecx,%esi + movl %ebp,%edi + addl 0(%rsp),%edx + vpxor %xmm1,%xmm0,%xmm0 + xorl %ebx,%eax + shldl $5,%ebp,%ebp + vpaddd %xmm7,%xmm11,%xmm9 + addl %esi,%edx + andl %eax,%edi + vpxor %xmm8,%xmm0,%xmm0 + xorl %ebx,%eax + addl %ebp,%edx + shrdl $7,%ebp,%ebp + xorl %ebx,%edi + vpsrld $30,%xmm0,%xmm8 + vmovdqa %xmm9,48(%rsp) + movl %edx,%esi + addl 4(%rsp),%ecx + xorl %eax,%ebp + shldl $5,%edx,%edx + vpslld $2,%xmm0,%xmm0 + addl %edi,%ecx + andl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + shrdl $7,%edx,%edx + xorl %eax,%esi + movl %ecx,%edi + addl 8(%rsp),%ebx + vpor %xmm8,%xmm0,%xmm0 + xorl %ebp,%edx + shldl $5,%ecx,%ecx + addl %esi,%ebx + andl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 12(%rsp),%eax + xorl %ebp,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm7,%xmm0,%xmm8 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + vpxor %xmm2,%xmm1,%xmm1 + addl %esi,%ebp + xorl %ecx,%edi + vpaddd %xmm0,%xmm11,%xmm9 + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpxor %xmm8,%xmm1,%xmm1 + addl 20(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + vpsrld $30,%xmm1,%xmm8 + vmovdqa %xmm9,0(%rsp) + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpslld $2,%xmm1,%xmm1 + addl 24(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpor %xmm8,%xmm1,%xmm1 + addl 28(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpalignr $8,%xmm0,%xmm1,%xmm8 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + vpxor %xmm3,%xmm2,%xmm2 + addl %esi,%eax + xorl %edx,%edi + vpaddd %xmm1,%xmm11,%xmm9 + vmovdqa 0(%r14),%xmm11 + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpxor %xmm8,%xmm2,%xmm2 + addl 36(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + vpsrld $30,%xmm2,%xmm8 + vmovdqa %xmm9,16(%rsp) + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpslld $2,%xmm2,%xmm2 + addl 40(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpor %xmm8,%xmm2,%xmm2 + addl 44(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpalignr $8,%xmm1,%xmm2,%xmm8 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + vpxor %xmm4,%xmm3,%xmm3 + addl %esi,%ebx + xorl %ebp,%edi + vpaddd %xmm2,%xmm11,%xmm9 + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpxor %xmm8,%xmm3,%xmm3 + addl 52(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + vpsrld $30,%xmm3,%xmm8 + vmovdqa %xmm9,32(%rsp) + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpslld $2,%xmm3,%xmm3 + addl 56(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpor %xmm8,%xmm3,%xmm3 + addl 60(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpalignr $8,%xmm2,%xmm3,%xmm8 + vpxor %xmm0,%xmm4,%xmm4 + addl 0(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + vpxor %xmm5,%xmm4,%xmm4 + addl %esi,%ecx + xorl %eax,%edi + vpaddd %xmm3,%xmm11,%xmm9 + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpxor %xmm8,%xmm4,%xmm4 + addl 4(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + vpsrld $30,%xmm4,%xmm8 + vmovdqa %xmm9,48(%rsp) + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpslld $2,%xmm4,%xmm4 + addl 8(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vpor %xmm8,%xmm4,%xmm4 + addl 12(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm3,%xmm4,%xmm8 + vpxor %xmm1,%xmm5,%xmm5 + addl 16(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + vpxor %xmm6,%xmm5,%xmm5 + addl %esi,%edx + xorl %ebx,%edi + vpaddd %xmm4,%xmm11,%xmm9 + shrdl $7,%eax,%eax + addl %ebp,%edx + vpxor %xmm8,%xmm5,%xmm5 + addl 20(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + vpsrld $30,%xmm5,%xmm8 + vmovdqa %xmm9,0(%rsp) + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpslld $2,%xmm5,%xmm5 + addl 24(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vpor %xmm8,%xmm5,%xmm5 + addl 28(%rsp),%eax + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + vpalignr $8,%xmm4,%xmm5,%xmm8 + vpxor %xmm2,%xmm6,%xmm6 + addl 32(%rsp),%ebp + andl %ecx,%esi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + vpxor %xmm7,%xmm6,%xmm6 + movl %eax,%edi + xorl %ecx,%esi + vpaddd %xmm5,%xmm11,%xmm9 + shldl $5,%eax,%eax + addl %esi,%ebp + vpxor %xmm8,%xmm6,%xmm6 + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 36(%rsp),%edx + vpsrld $30,%xmm6,%xmm8 + vmovdqa %xmm9,16(%rsp) + andl %ebx,%edi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%esi + vpslld $2,%xmm6,%xmm6 + xorl %ebx,%edi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + addl 40(%rsp),%ecx + andl %eax,%esi + vpor %xmm8,%xmm6,%xmm6 + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%edi + xorl %eax,%esi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 44(%rsp),%ebx + andl %ebp,%edi + xorl %eax,%ebp + shrdl $7,%edx,%edx + movl %ecx,%esi + xorl %ebp,%edi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + vpalignr $8,%xmm5,%xmm6,%xmm8 + vpxor %xmm3,%xmm7,%xmm7 + addl 48(%rsp),%eax + andl %edx,%esi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + vpxor %xmm0,%xmm7,%xmm7 + movl %ebx,%edi + xorl %edx,%esi + vpaddd %xmm6,%xmm11,%xmm9 + vmovdqa 32(%r14),%xmm11 + shldl $5,%ebx,%ebx + addl %esi,%eax + vpxor %xmm8,%xmm7,%xmm7 + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 52(%rsp),%ebp + vpsrld $30,%xmm7,%xmm8 + vmovdqa %xmm9,32(%rsp) + andl %ecx,%edi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + vpslld $2,%xmm7,%xmm7 + xorl %ecx,%edi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + addl 56(%rsp),%edx + andl %ebx,%esi + vpor %xmm8,%xmm7,%xmm7 + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%edi + xorl %ebx,%esi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 60(%rsp),%ecx + andl %eax,%edi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%esi + xorl %eax,%edi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + vpalignr $8,%xmm6,%xmm7,%xmm8 + vpxor %xmm4,%xmm0,%xmm0 + addl 0(%rsp),%ebx + andl %ebp,%esi + xorl %eax,%ebp + shrdl $7,%edx,%edx + vpxor %xmm1,%xmm0,%xmm0 + movl %ecx,%edi + xorl %ebp,%esi + vpaddd %xmm7,%xmm11,%xmm9 + shldl $5,%ecx,%ecx + addl %esi,%ebx + vpxor %xmm8,%xmm0,%xmm0 + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 4(%rsp),%eax + vpsrld $30,%xmm0,%xmm8 + vmovdqa %xmm9,48(%rsp) + andl %edx,%edi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + vpslld $2,%xmm0,%xmm0 + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %ecx,%esi + xorl %edx,%ecx + addl %ebx,%eax + addl 8(%rsp),%ebp + andl %ecx,%esi + vpor %xmm8,%xmm0,%xmm0 + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%edi + xorl %ecx,%esi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ebx,%edi + xorl %ecx,%ebx + addl %eax,%ebp + addl 12(%rsp),%edx + andl %ebx,%edi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + movl %ebp,%esi + xorl %ebx,%edi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %eax,%esi + xorl %ebx,%eax + addl %ebp,%edx + vpalignr $8,%xmm7,%xmm0,%xmm8 + vpxor %xmm5,%xmm1,%xmm1 + addl 16(%rsp),%ecx + andl %eax,%esi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + vpxor %xmm2,%xmm1,%xmm1 + movl %edx,%edi + xorl %eax,%esi + vpaddd %xmm0,%xmm11,%xmm9 + shldl $5,%edx,%edx + addl %esi,%ecx + vpxor %xmm8,%xmm1,%xmm1 + xorl %ebp,%edi + xorl %eax,%ebp + addl %edx,%ecx + addl 20(%rsp),%ebx + vpsrld $30,%xmm1,%xmm8 + vmovdqa %xmm9,0(%rsp) + andl %ebp,%edi + xorl %eax,%ebp + shrdl $7,%edx,%edx + movl %ecx,%esi + vpslld $2,%xmm1,%xmm1 + xorl %ebp,%edi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %edx,%esi + xorl %ebp,%edx + addl %ecx,%ebx + addl 24(%rsp),%eax + andl %edx,%esi + vpor %xmm8,%xmm1,%xmm1 + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%edi + xorl %edx,%esi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %ecx,%edi + xorl %edx,%ecx + addl %ebx,%eax + addl 28(%rsp),%ebp + andl %ecx,%edi + xorl %edx,%ecx + shrdl $7,%ebx,%ebx + movl %eax,%esi + xorl %ecx,%edi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ebx,%esi + xorl %ecx,%ebx + addl %eax,%ebp + vpalignr $8,%xmm0,%xmm1,%xmm8 + vpxor %xmm6,%xmm2,%xmm2 + addl 32(%rsp),%edx + andl %ebx,%esi + xorl %ecx,%ebx + shrdl $7,%eax,%eax + vpxor %xmm3,%xmm2,%xmm2 + movl %ebp,%edi + xorl %ebx,%esi + vpaddd %xmm1,%xmm11,%xmm9 + shldl $5,%ebp,%ebp + addl %esi,%edx + vpxor %xmm8,%xmm2,%xmm2 + xorl %eax,%edi + xorl %ebx,%eax + addl %ebp,%edx + addl 36(%rsp),%ecx + vpsrld $30,%xmm2,%xmm8 + vmovdqa %xmm9,16(%rsp) + andl %eax,%edi + xorl %ebx,%eax + shrdl $7,%ebp,%ebp + movl %edx,%esi + vpslld $2,%xmm2,%xmm2 + xorl %eax,%edi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %ebp,%esi + xorl %eax,%ebp + addl %edx,%ecx + addl 40(%rsp),%ebx + andl %ebp,%esi + vpor %xmm8,%xmm2,%xmm2 + xorl %eax,%ebp + shrdl $7,%edx,%edx + movl %ecx,%edi + xorl %ebp,%esi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %edx,%edi + xorl %ebp,%edx + addl %ecx,%ebx + addl 44(%rsp),%eax + andl %edx,%edi + xorl %ebp,%edx + shrdl $7,%ecx,%ecx + movl %ebx,%esi + xorl %edx,%edi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + addl %ebx,%eax + vpalignr $8,%xmm1,%xmm2,%xmm8 + vpxor %xmm7,%xmm3,%xmm3 + addl 48(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + vpxor %xmm4,%xmm3,%xmm3 + addl %esi,%ebp + xorl %ecx,%edi + vpaddd %xmm2,%xmm11,%xmm9 + shrdl $7,%ebx,%ebx + addl %eax,%ebp + vpxor %xmm8,%xmm3,%xmm3 + addl 52(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + vpsrld $30,%xmm3,%xmm8 + vmovdqa %xmm9,32(%rsp) + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + vpslld $2,%xmm3,%xmm3 + addl 56(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vpor %xmm8,%xmm3,%xmm3 + addl 60(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 0(%rsp),%eax + vpaddd %xmm3,%xmm11,%xmm9 + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + vmovdqa %xmm9,48(%rsp) + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 4(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 8(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 12(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + cmpq %r10,%r9 + je L$done_avx + vmovdqa 64(%r14),%xmm6 + vmovdqa -64(%r14),%xmm11 + vmovdqu 0(%r9),%xmm0 + vmovdqu 16(%r9),%xmm1 + vmovdqu 32(%r9),%xmm2 + vmovdqu 48(%r9),%xmm3 + vpshufb %xmm6,%xmm0,%xmm0 + addq $64,%r9 + addl 16(%rsp),%ebx + xorl %ebp,%esi + vpshufb %xmm6,%xmm1,%xmm1 + movl %ecx,%edi + shldl $5,%ecx,%ecx + vpaddd %xmm11,%xmm0,%xmm4 + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + vmovdqa %xmm4,0(%rsp) + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + vpshufb %xmm6,%xmm2,%xmm2 + movl %edx,%edi + shldl $5,%edx,%edx + vpaddd %xmm11,%xmm1,%xmm5 + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + vmovdqa %xmm5,16(%rsp) + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + vpshufb %xmm6,%xmm3,%xmm3 + movl %ebp,%edi + shldl $5,%ebp,%ebp + vpaddd %xmm11,%xmm2,%xmm6 + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + vmovdqa %xmm6,32(%rsp) + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 0(%r8),%eax + addl 4(%r8),%esi + addl 8(%r8),%ecx + addl 12(%r8),%edx + movl %eax,0(%r8) + addl 16(%r8),%ebp + movl %esi,4(%r8) + movl %esi,%ebx + movl %ecx,8(%r8) + movl %ecx,%edi + movl %edx,12(%r8) + xorl %edx,%edi + movl %ebp,16(%r8) + andl %edi,%esi + jmp L$oop_avx + +.p2align 4 +L$done_avx: + addl 16(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 20(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + xorl %edx,%esi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 24(%rsp),%ebp + xorl %ecx,%esi + movl %eax,%edi + shldl $5,%eax,%eax + addl %esi,%ebp + xorl %ecx,%edi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 28(%rsp),%edx + xorl %ebx,%edi + movl %ebp,%esi + shldl $5,%ebp,%ebp + addl %edi,%edx + xorl %ebx,%esi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 32(%rsp),%ecx + xorl %eax,%esi + movl %edx,%edi + shldl $5,%edx,%edx + addl %esi,%ecx + xorl %eax,%edi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 36(%rsp),%ebx + xorl %ebp,%edi + movl %ecx,%esi + shldl $5,%ecx,%ecx + addl %edi,%ebx + xorl %ebp,%esi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 40(%rsp),%eax + xorl %edx,%esi + movl %ebx,%edi + shldl $5,%ebx,%ebx + addl %esi,%eax + xorl %edx,%edi + shrdl $7,%ecx,%ecx + addl %ebx,%eax + addl 44(%rsp),%ebp + xorl %ecx,%edi + movl %eax,%esi + shldl $5,%eax,%eax + addl %edi,%ebp + xorl %ecx,%esi + shrdl $7,%ebx,%ebx + addl %eax,%ebp + addl 48(%rsp),%edx + xorl %ebx,%esi + movl %ebp,%edi + shldl $5,%ebp,%ebp + addl %esi,%edx + xorl %ebx,%edi + shrdl $7,%eax,%eax + addl %ebp,%edx + addl 52(%rsp),%ecx + xorl %eax,%edi + movl %edx,%esi + shldl $5,%edx,%edx + addl %edi,%ecx + xorl %eax,%esi + shrdl $7,%ebp,%ebp + addl %edx,%ecx + addl 56(%rsp),%ebx + xorl %ebp,%esi + movl %ecx,%edi + shldl $5,%ecx,%ecx + addl %esi,%ebx + xorl %ebp,%edi + shrdl $7,%edx,%edx + addl %ecx,%ebx + addl 60(%rsp),%eax + xorl %edx,%edi + movl %ebx,%esi + shldl $5,%ebx,%ebx + addl %edi,%eax + shrdl $7,%ecx,%ecx + addl %ebx,%eax + vzeroupper + + addl 0(%r8),%eax + addl 4(%r8),%esi + addl 8(%r8),%ecx + movl %eax,0(%r8) + addl 12(%r8),%edx + movl %esi,4(%r8) + addl 16(%r8),%ebp + movl %ecx,8(%r8) + movl %edx,12(%r8) + movl %ebp,16(%r8) + movq -40(%r11),%r14 + + movq -32(%r11),%r13 + + movq -24(%r11),%r12 + + movq -16(%r11),%rbp + + movq -8(%r11),%rbx + + leaq (%r11),%rsp + +L$epilogue_avx: + .byte 0xf3,0xc3 + + + +.p2align 4 +sha1_block_data_order_avx2: +_avx2_shortcut: + + movq %rsp,%r11 + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + vzeroupper + movq %rdi,%r8 + movq %rsi,%r9 + movq %rdx,%r10 + + leaq -640(%rsp),%rsp + shlq $6,%r10 + leaq 64(%r9),%r13 + andq $-128,%rsp + addq %r9,%r10 + leaq K_XX_XX+64(%rip),%r14 + + movl 0(%r8),%eax + cmpq %r10,%r13 + cmovaeq %r9,%r13 + movl 4(%r8),%ebp + movl 8(%r8),%ecx + movl 12(%r8),%edx + movl 16(%r8),%esi + vmovdqu 64(%r14),%ymm6 + + vmovdqu (%r9),%xmm0 + vmovdqu 16(%r9),%xmm1 + vmovdqu 32(%r9),%xmm2 + vmovdqu 48(%r9),%xmm3 + leaq 64(%r9),%r9 + vinserti128 $1,(%r13),%ymm0,%ymm0 + vinserti128 $1,16(%r13),%ymm1,%ymm1 + vpshufb %ymm6,%ymm0,%ymm0 + vinserti128 $1,32(%r13),%ymm2,%ymm2 + vpshufb %ymm6,%ymm1,%ymm1 + vinserti128 $1,48(%r13),%ymm3,%ymm3 + vpshufb %ymm6,%ymm2,%ymm2 + vmovdqu -64(%r14),%ymm11 + vpshufb %ymm6,%ymm3,%ymm3 + + vpaddd %ymm11,%ymm0,%ymm4 + vpaddd %ymm11,%ymm1,%ymm5 + vmovdqu %ymm4,0(%rsp) + vpaddd %ymm11,%ymm2,%ymm6 + vmovdqu %ymm5,32(%rsp) + vpaddd %ymm11,%ymm3,%ymm7 + vmovdqu %ymm6,64(%rsp) + vmovdqu %ymm7,96(%rsp) + vpalignr $8,%ymm0,%ymm1,%ymm4 + vpsrldq $4,%ymm3,%ymm8 + vpxor %ymm0,%ymm4,%ymm4 + vpxor %ymm2,%ymm8,%ymm8 + vpxor %ymm8,%ymm4,%ymm4 + vpsrld $31,%ymm4,%ymm8 + vpslldq $12,%ymm4,%ymm10 + vpaddd %ymm4,%ymm4,%ymm4 + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm4,%ymm4 + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm4,%ymm4 + vpxor %ymm10,%ymm4,%ymm4 + vpaddd %ymm11,%ymm4,%ymm9 + vmovdqu %ymm9,128(%rsp) + vpalignr $8,%ymm1,%ymm2,%ymm5 + vpsrldq $4,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm3,%ymm8,%ymm8 + vpxor %ymm8,%ymm5,%ymm5 + vpsrld $31,%ymm5,%ymm8 + vmovdqu -32(%r14),%ymm11 + vpslldq $12,%ymm5,%ymm10 + vpaddd %ymm5,%ymm5,%ymm5 + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm5,%ymm5 + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm5,%ymm5 + vpxor %ymm10,%ymm5,%ymm5 + vpaddd %ymm11,%ymm5,%ymm9 + vmovdqu %ymm9,160(%rsp) + vpalignr $8,%ymm2,%ymm3,%ymm6 + vpsrldq $4,%ymm5,%ymm8 + vpxor %ymm2,%ymm6,%ymm6 + vpxor %ymm4,%ymm8,%ymm8 + vpxor %ymm8,%ymm6,%ymm6 + vpsrld $31,%ymm6,%ymm8 + vpslldq $12,%ymm6,%ymm10 + vpaddd %ymm6,%ymm6,%ymm6 + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm6,%ymm6 + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm6,%ymm6 + vpxor %ymm10,%ymm6,%ymm6 + vpaddd %ymm11,%ymm6,%ymm9 + vmovdqu %ymm9,192(%rsp) + vpalignr $8,%ymm3,%ymm4,%ymm7 + vpsrldq $4,%ymm6,%ymm8 + vpxor %ymm3,%ymm7,%ymm7 + vpxor %ymm5,%ymm8,%ymm8 + vpxor %ymm8,%ymm7,%ymm7 + vpsrld $31,%ymm7,%ymm8 + vpslldq $12,%ymm7,%ymm10 + vpaddd %ymm7,%ymm7,%ymm7 + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm7,%ymm7 + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm7,%ymm7 + vpxor %ymm10,%ymm7,%ymm7 + vpaddd %ymm11,%ymm7,%ymm9 + vmovdqu %ymm9,224(%rsp) + leaq 128(%rsp),%r13 + jmp L$oop_avx2 +.p2align 5 +L$oop_avx2: + rorxl $2,%ebp,%ebx + andnl %edx,%ebp,%edi + andl %ecx,%ebp + xorl %edi,%ebp + jmp L$align32_1 +.p2align 5 +L$align32_1: + vpalignr $8,%ymm6,%ymm7,%ymm8 + vpxor %ymm4,%ymm0,%ymm0 + addl -128(%r13),%esi + andnl %ecx,%eax,%edi + vpxor %ymm1,%ymm0,%ymm0 + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + vpxor %ymm8,%ymm0,%ymm0 + andl %ebx,%eax + addl %r12d,%esi + xorl %edi,%eax + vpsrld $30,%ymm0,%ymm8 + vpslld $2,%ymm0,%ymm0 + addl -124(%r13),%edx + andnl %ebx,%esi,%edi + addl %eax,%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + andl %ebp,%esi + vpor %ymm8,%ymm0,%ymm0 + addl %r12d,%edx + xorl %edi,%esi + addl -120(%r13),%ecx + andnl %ebp,%edx,%edi + vpaddd %ymm11,%ymm0,%ymm9 + addl %esi,%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + andl %eax,%edx + vmovdqu %ymm9,256(%rsp) + addl %r12d,%ecx + xorl %edi,%edx + addl -116(%r13),%ebx + andnl %eax,%ecx,%edi + addl %edx,%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + andl %esi,%ecx + addl %r12d,%ebx + xorl %edi,%ecx + addl -96(%r13),%ebp + andnl %esi,%ebx,%edi + addl %ecx,%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + andl %edx,%ebx + addl %r12d,%ebp + xorl %edi,%ebx + vpalignr $8,%ymm7,%ymm0,%ymm8 + vpxor %ymm5,%ymm1,%ymm1 + addl -92(%r13),%eax + andnl %edx,%ebp,%edi + vpxor %ymm2,%ymm1,%ymm1 + addl %ebx,%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + vpxor %ymm8,%ymm1,%ymm1 + andl %ecx,%ebp + addl %r12d,%eax + xorl %edi,%ebp + vpsrld $30,%ymm1,%ymm8 + vpslld $2,%ymm1,%ymm1 + addl -88(%r13),%esi + andnl %ecx,%eax,%edi + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + vpor %ymm8,%ymm1,%ymm1 + addl %r12d,%esi + xorl %edi,%eax + addl -84(%r13),%edx + andnl %ebx,%esi,%edi + vpaddd %ymm11,%ymm1,%ymm9 + addl %eax,%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + andl %ebp,%esi + vmovdqu %ymm9,288(%rsp) + addl %r12d,%edx + xorl %edi,%esi + addl -64(%r13),%ecx + andnl %ebp,%edx,%edi + addl %esi,%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + andl %eax,%edx + addl %r12d,%ecx + xorl %edi,%edx + addl -60(%r13),%ebx + andnl %eax,%ecx,%edi + addl %edx,%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + andl %esi,%ecx + addl %r12d,%ebx + xorl %edi,%ecx + vpalignr $8,%ymm0,%ymm1,%ymm8 + vpxor %ymm6,%ymm2,%ymm2 + addl -56(%r13),%ebp + andnl %esi,%ebx,%edi + vpxor %ymm3,%ymm2,%ymm2 + vmovdqu 0(%r14),%ymm11 + addl %ecx,%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + vpxor %ymm8,%ymm2,%ymm2 + andl %edx,%ebx + addl %r12d,%ebp + xorl %edi,%ebx + vpsrld $30,%ymm2,%ymm8 + vpslld $2,%ymm2,%ymm2 + addl -52(%r13),%eax + andnl %edx,%ebp,%edi + addl %ebx,%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + andl %ecx,%ebp + vpor %ymm8,%ymm2,%ymm2 + addl %r12d,%eax + xorl %edi,%ebp + addl -32(%r13),%esi + andnl %ecx,%eax,%edi + vpaddd %ymm11,%ymm2,%ymm9 + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + vmovdqu %ymm9,320(%rsp) + addl %r12d,%esi + xorl %edi,%eax + addl -28(%r13),%edx + andnl %ebx,%esi,%edi + addl %eax,%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + andl %ebp,%esi + addl %r12d,%edx + xorl %edi,%esi + addl -24(%r13),%ecx + andnl %ebp,%edx,%edi + addl %esi,%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + andl %eax,%edx + addl %r12d,%ecx + xorl %edi,%edx + vpalignr $8,%ymm1,%ymm2,%ymm8 + vpxor %ymm7,%ymm3,%ymm3 + addl -20(%r13),%ebx + andnl %eax,%ecx,%edi + vpxor %ymm4,%ymm3,%ymm3 + addl %edx,%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + vpxor %ymm8,%ymm3,%ymm3 + andl %esi,%ecx + addl %r12d,%ebx + xorl %edi,%ecx + vpsrld $30,%ymm3,%ymm8 + vpslld $2,%ymm3,%ymm3 + addl 0(%r13),%ebp + andnl %esi,%ebx,%edi + addl %ecx,%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + andl %edx,%ebx + vpor %ymm8,%ymm3,%ymm3 + addl %r12d,%ebp + xorl %edi,%ebx + addl 4(%r13),%eax + andnl %edx,%ebp,%edi + vpaddd %ymm11,%ymm3,%ymm9 + addl %ebx,%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + andl %ecx,%ebp + vmovdqu %ymm9,352(%rsp) + addl %r12d,%eax + xorl %edi,%ebp + addl 8(%r13),%esi + andnl %ecx,%eax,%edi + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + addl %r12d,%esi + xorl %edi,%eax + addl 12(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + vpalignr $8,%ymm2,%ymm3,%ymm8 + vpxor %ymm0,%ymm4,%ymm4 + addl 32(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + vpxor %ymm5,%ymm4,%ymm4 + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + vpxor %ymm8,%ymm4,%ymm4 + addl %r12d,%ecx + xorl %ebp,%edx + addl 36(%r13),%ebx + vpsrld $30,%ymm4,%ymm8 + vpslld $2,%ymm4,%ymm4 + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + vpor %ymm8,%ymm4,%ymm4 + addl 40(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + vpaddd %ymm11,%ymm4,%ymm9 + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl 44(%r13),%eax + vmovdqu %ymm9,384(%rsp) + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl 64(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + vpalignr $8,%ymm3,%ymm4,%ymm8 + vpxor %ymm1,%ymm5,%ymm5 + addl 68(%r13),%edx + leal (%rdx,%rax,1),%edx + vpxor %ymm6,%ymm5,%ymm5 + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + vpxor %ymm8,%ymm5,%ymm5 + addl %r12d,%edx + xorl %ebx,%esi + addl 72(%r13),%ecx + vpsrld $30,%ymm5,%ymm8 + vpslld $2,%ymm5,%ymm5 + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + vpor %ymm8,%ymm5,%ymm5 + addl 76(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + vpaddd %ymm11,%ymm5,%ymm9 + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl 96(%r13),%ebp + vmovdqu %ymm9,416(%rsp) + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl 100(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + vpalignr $8,%ymm4,%ymm5,%ymm8 + vpxor %ymm2,%ymm6,%ymm6 + addl 104(%r13),%esi + leal (%rsi,%rbp,1),%esi + vpxor %ymm7,%ymm6,%ymm6 + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + vpxor %ymm8,%ymm6,%ymm6 + addl %r12d,%esi + xorl %ecx,%eax + addl 108(%r13),%edx + leaq 256(%r13),%r13 + vpsrld $30,%ymm6,%ymm8 + vpslld $2,%ymm6,%ymm6 + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + vpor %ymm8,%ymm6,%ymm6 + addl -128(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + vpaddd %ymm11,%ymm6,%ymm9 + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -124(%r13),%ebx + vmovdqu %ymm9,448(%rsp) + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl -120(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + vpalignr $8,%ymm5,%ymm6,%ymm8 + vpxor %ymm3,%ymm7,%ymm7 + addl -116(%r13),%eax + leal (%rax,%rbx,1),%eax + vpxor %ymm0,%ymm7,%ymm7 + vmovdqu 32(%r14),%ymm11 + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + vpxor %ymm8,%ymm7,%ymm7 + addl %r12d,%eax + xorl %edx,%ebp + addl -96(%r13),%esi + vpsrld $30,%ymm7,%ymm8 + vpslld $2,%ymm7,%ymm7 + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + vpor %ymm8,%ymm7,%ymm7 + addl -92(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + vpaddd %ymm11,%ymm7,%ymm9 + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl -88(%r13),%ecx + vmovdqu %ymm9,480(%rsp) + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -84(%r13),%ebx + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + andl %edi,%ecx + jmp L$align32_2 +.p2align 5 +L$align32_2: + vpalignr $8,%ymm6,%ymm7,%ymm8 + vpxor %ymm4,%ymm0,%ymm0 + addl -64(%r13),%ebp + xorl %esi,%ecx + vpxor %ymm1,%ymm0,%ymm0 + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + vpxor %ymm8,%ymm0,%ymm0 + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + vpsrld $30,%ymm0,%ymm8 + vpslld $2,%ymm0,%ymm0 + addl %r12d,%ebp + andl %edi,%ebx + addl -60(%r13),%eax + xorl %edx,%ebx + movl %ecx,%edi + xorl %edx,%edi + vpor %ymm8,%ymm0,%ymm0 + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + vpaddd %ymm11,%ymm0,%ymm9 + addl %r12d,%eax + andl %edi,%ebp + addl -56(%r13),%esi + xorl %ecx,%ebp + vmovdqu %ymm9,512(%rsp) + movl %ebx,%edi + xorl %ecx,%edi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + andl %edi,%eax + addl -52(%r13),%edx + xorl %ebx,%eax + movl %ebp,%edi + xorl %ebx,%edi + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + andl %edi,%esi + addl -32(%r13),%ecx + xorl %ebp,%esi + movl %eax,%edi + xorl %ebp,%edi + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + andl %edi,%edx + vpalignr $8,%ymm7,%ymm0,%ymm8 + vpxor %ymm5,%ymm1,%ymm1 + addl -28(%r13),%ebx + xorl %eax,%edx + vpxor %ymm2,%ymm1,%ymm1 + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + vpxor %ymm8,%ymm1,%ymm1 + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + vpsrld $30,%ymm1,%ymm8 + vpslld $2,%ymm1,%ymm1 + addl %r12d,%ebx + andl %edi,%ecx + addl -24(%r13),%ebp + xorl %esi,%ecx + movl %edx,%edi + xorl %esi,%edi + vpor %ymm8,%ymm1,%ymm1 + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + vpaddd %ymm11,%ymm1,%ymm9 + addl %r12d,%ebp + andl %edi,%ebx + addl -20(%r13),%eax + xorl %edx,%ebx + vmovdqu %ymm9,544(%rsp) + movl %ecx,%edi + xorl %edx,%edi + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + andl %edi,%ebp + addl 0(%r13),%esi + xorl %ecx,%ebp + movl %ebx,%edi + xorl %ecx,%edi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + andl %edi,%eax + addl 4(%r13),%edx + xorl %ebx,%eax + movl %ebp,%edi + xorl %ebx,%edi + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + andl %edi,%esi + vpalignr $8,%ymm0,%ymm1,%ymm8 + vpxor %ymm6,%ymm2,%ymm2 + addl 8(%r13),%ecx + xorl %ebp,%esi + vpxor %ymm3,%ymm2,%ymm2 + movl %eax,%edi + xorl %ebp,%edi + leal (%rcx,%rsi,1),%ecx + vpxor %ymm8,%ymm2,%ymm2 + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + vpsrld $30,%ymm2,%ymm8 + vpslld $2,%ymm2,%ymm2 + addl %r12d,%ecx + andl %edi,%edx + addl 12(%r13),%ebx + xorl %eax,%edx + movl %esi,%edi + xorl %eax,%edi + vpor %ymm8,%ymm2,%ymm2 + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + vpaddd %ymm11,%ymm2,%ymm9 + addl %r12d,%ebx + andl %edi,%ecx + addl 32(%r13),%ebp + xorl %esi,%ecx + vmovdqu %ymm9,576(%rsp) + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + andl %edi,%ebx + addl 36(%r13),%eax + xorl %edx,%ebx + movl %ecx,%edi + xorl %edx,%edi + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + andl %edi,%ebp + addl 40(%r13),%esi + xorl %ecx,%ebp + movl %ebx,%edi + xorl %ecx,%edi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + andl %edi,%eax + vpalignr $8,%ymm1,%ymm2,%ymm8 + vpxor %ymm7,%ymm3,%ymm3 + addl 44(%r13),%edx + xorl %ebx,%eax + vpxor %ymm4,%ymm3,%ymm3 + movl %ebp,%edi + xorl %ebx,%edi + leal (%rdx,%rax,1),%edx + vpxor %ymm8,%ymm3,%ymm3 + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + vpsrld $30,%ymm3,%ymm8 + vpslld $2,%ymm3,%ymm3 + addl %r12d,%edx + andl %edi,%esi + addl 64(%r13),%ecx + xorl %ebp,%esi + movl %eax,%edi + xorl %ebp,%edi + vpor %ymm8,%ymm3,%ymm3 + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + vpaddd %ymm11,%ymm3,%ymm9 + addl %r12d,%ecx + andl %edi,%edx + addl 68(%r13),%ebx + xorl %eax,%edx + vmovdqu %ymm9,608(%rsp) + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + andl %edi,%ecx + addl 72(%r13),%ebp + xorl %esi,%ecx + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + andl %edi,%ebx + addl 76(%r13),%eax + xorl %edx,%ebx + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl 96(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl 100(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl 104(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl 108(%r13),%ebx + leaq 256(%r13),%r13 + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl -128(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl -124(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl -120(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl -116(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl -96(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -92(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl -88(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl -84(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl -64(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl -60(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl -56(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -52(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl -32(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl -28(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl -24(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl -20(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + addl %r12d,%edx + leaq 128(%r9),%r13 + leaq 128(%r9),%rdi + cmpq %r10,%r13 + cmovaeq %r9,%r13 + + + addl 0(%r8),%edx + addl 4(%r8),%esi + addl 8(%r8),%ebp + movl %edx,0(%r8) + addl 12(%r8),%ebx + movl %esi,4(%r8) + movl %edx,%eax + addl 16(%r8),%ecx + movl %ebp,%r12d + movl %ebp,8(%r8) + movl %ebx,%edx + + movl %ebx,12(%r8) + movl %esi,%ebp + movl %ecx,16(%r8) + + movl %ecx,%esi + movl %r12d,%ecx + + + cmpq %r10,%r9 + je L$done_avx2 + vmovdqu 64(%r14),%ymm6 + cmpq %r10,%rdi + ja L$ast_avx2 + + vmovdqu -64(%rdi),%xmm0 + vmovdqu -48(%rdi),%xmm1 + vmovdqu -32(%rdi),%xmm2 + vmovdqu -16(%rdi),%xmm3 + vinserti128 $1,0(%r13),%ymm0,%ymm0 + vinserti128 $1,16(%r13),%ymm1,%ymm1 + vinserti128 $1,32(%r13),%ymm2,%ymm2 + vinserti128 $1,48(%r13),%ymm3,%ymm3 + jmp L$ast_avx2 + +.p2align 5 +L$ast_avx2: + leaq 128+16(%rsp),%r13 + rorxl $2,%ebp,%ebx + andnl %edx,%ebp,%edi + andl %ecx,%ebp + xorl %edi,%ebp + subq $-128,%r9 + addl -128(%r13),%esi + andnl %ecx,%eax,%edi + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + addl %r12d,%esi + xorl %edi,%eax + addl -124(%r13),%edx + andnl %ebx,%esi,%edi + addl %eax,%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + andl %ebp,%esi + addl %r12d,%edx + xorl %edi,%esi + addl -120(%r13),%ecx + andnl %ebp,%edx,%edi + addl %esi,%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + andl %eax,%edx + addl %r12d,%ecx + xorl %edi,%edx + addl -116(%r13),%ebx + andnl %eax,%ecx,%edi + addl %edx,%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + andl %esi,%ecx + addl %r12d,%ebx + xorl %edi,%ecx + addl -96(%r13),%ebp + andnl %esi,%ebx,%edi + addl %ecx,%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + andl %edx,%ebx + addl %r12d,%ebp + xorl %edi,%ebx + addl -92(%r13),%eax + andnl %edx,%ebp,%edi + addl %ebx,%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + andl %ecx,%ebp + addl %r12d,%eax + xorl %edi,%ebp + addl -88(%r13),%esi + andnl %ecx,%eax,%edi + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + addl %r12d,%esi + xorl %edi,%eax + addl -84(%r13),%edx + andnl %ebx,%esi,%edi + addl %eax,%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + andl %ebp,%esi + addl %r12d,%edx + xorl %edi,%esi + addl -64(%r13),%ecx + andnl %ebp,%edx,%edi + addl %esi,%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + andl %eax,%edx + addl %r12d,%ecx + xorl %edi,%edx + addl -60(%r13),%ebx + andnl %eax,%ecx,%edi + addl %edx,%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + andl %esi,%ecx + addl %r12d,%ebx + xorl %edi,%ecx + addl -56(%r13),%ebp + andnl %esi,%ebx,%edi + addl %ecx,%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + andl %edx,%ebx + addl %r12d,%ebp + xorl %edi,%ebx + addl -52(%r13),%eax + andnl %edx,%ebp,%edi + addl %ebx,%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + andl %ecx,%ebp + addl %r12d,%eax + xorl %edi,%ebp + addl -32(%r13),%esi + andnl %ecx,%eax,%edi + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + addl %r12d,%esi + xorl %edi,%eax + addl -28(%r13),%edx + andnl %ebx,%esi,%edi + addl %eax,%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + andl %ebp,%esi + addl %r12d,%edx + xorl %edi,%esi + addl -24(%r13),%ecx + andnl %ebp,%edx,%edi + addl %esi,%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + andl %eax,%edx + addl %r12d,%ecx + xorl %edi,%edx + addl -20(%r13),%ebx + andnl %eax,%ecx,%edi + addl %edx,%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + andl %esi,%ecx + addl %r12d,%ebx + xorl %edi,%ecx + addl 0(%r13),%ebp + andnl %esi,%ebx,%edi + addl %ecx,%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + andl %edx,%ebx + addl %r12d,%ebp + xorl %edi,%ebx + addl 4(%r13),%eax + andnl %edx,%ebp,%edi + addl %ebx,%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + andl %ecx,%ebp + addl %r12d,%eax + xorl %edi,%ebp + addl 8(%r13),%esi + andnl %ecx,%eax,%edi + addl %ebp,%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + andl %ebx,%eax + addl %r12d,%esi + xorl %edi,%eax + addl 12(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl 32(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl 36(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl 40(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl 44(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl 64(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + vmovdqu -64(%r14),%ymm11 + vpshufb %ymm6,%ymm0,%ymm0 + addl 68(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl 72(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl 76(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl 96(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl 100(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + vpshufb %ymm6,%ymm1,%ymm1 + vpaddd %ymm11,%ymm0,%ymm8 + addl 104(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl 108(%r13),%edx + leaq 256(%r13),%r13 + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl -128(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -124(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl -120(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + vmovdqu %ymm8,0(%rsp) + vpshufb %ymm6,%ymm2,%ymm2 + vpaddd %ymm11,%ymm1,%ymm9 + addl -116(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl -96(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl -92(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + addl -88(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -84(%r13),%ebx + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + andl %edi,%ecx + vmovdqu %ymm9,32(%rsp) + vpshufb %ymm6,%ymm3,%ymm3 + vpaddd %ymm11,%ymm2,%ymm6 + addl -64(%r13),%ebp + xorl %esi,%ecx + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + andl %edi,%ebx + addl -60(%r13),%eax + xorl %edx,%ebx + movl %ecx,%edi + xorl %edx,%edi + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + andl %edi,%ebp + addl -56(%r13),%esi + xorl %ecx,%ebp + movl %ebx,%edi + xorl %ecx,%edi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + andl %edi,%eax + addl -52(%r13),%edx + xorl %ebx,%eax + movl %ebp,%edi + xorl %ebx,%edi + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + andl %edi,%esi + addl -32(%r13),%ecx + xorl %ebp,%esi + movl %eax,%edi + xorl %ebp,%edi + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + andl %edi,%edx + jmp L$align32_3 +.p2align 5 +L$align32_3: + vmovdqu %ymm6,64(%rsp) + vpaddd %ymm11,%ymm3,%ymm7 + addl -28(%r13),%ebx + xorl %eax,%edx + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + andl %edi,%ecx + addl -24(%r13),%ebp + xorl %esi,%ecx + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + andl %edi,%ebx + addl -20(%r13),%eax + xorl %edx,%ebx + movl %ecx,%edi + xorl %edx,%edi + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + andl %edi,%ebp + addl 0(%r13),%esi + xorl %ecx,%ebp + movl %ebx,%edi + xorl %ecx,%edi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + andl %edi,%eax + addl 4(%r13),%edx + xorl %ebx,%eax + movl %ebp,%edi + xorl %ebx,%edi + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + andl %edi,%esi + vmovdqu %ymm7,96(%rsp) + addl 8(%r13),%ecx + xorl %ebp,%esi + movl %eax,%edi + xorl %ebp,%edi + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + andl %edi,%edx + addl 12(%r13),%ebx + xorl %eax,%edx + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + andl %edi,%ecx + addl 32(%r13),%ebp + xorl %esi,%ecx + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + andl %edi,%ebx + addl 36(%r13),%eax + xorl %edx,%ebx + movl %ecx,%edi + xorl %edx,%edi + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + andl %edi,%ebp + addl 40(%r13),%esi + xorl %ecx,%ebp + movl %ebx,%edi + xorl %ecx,%edi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + andl %edi,%eax + vpalignr $8,%ymm0,%ymm1,%ymm4 + addl 44(%r13),%edx + xorl %ebx,%eax + movl %ebp,%edi + xorl %ebx,%edi + vpsrldq $4,%ymm3,%ymm8 + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + vpxor %ymm0,%ymm4,%ymm4 + vpxor %ymm2,%ymm8,%ymm8 + xorl %ebp,%esi + addl %r12d,%edx + vpxor %ymm8,%ymm4,%ymm4 + andl %edi,%esi + addl 64(%r13),%ecx + xorl %ebp,%esi + movl %eax,%edi + vpsrld $31,%ymm4,%ymm8 + xorl %ebp,%edi + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + vpslldq $12,%ymm4,%ymm10 + vpaddd %ymm4,%ymm4,%ymm4 + rorxl $2,%edx,%esi + xorl %eax,%edx + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm4,%ymm4 + addl %r12d,%ecx + andl %edi,%edx + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm4,%ymm4 + addl 68(%r13),%ebx + xorl %eax,%edx + vpxor %ymm10,%ymm4,%ymm4 + movl %esi,%edi + xorl %eax,%edi + leal (%rbx,%rdx,1),%ebx + vpaddd %ymm11,%ymm4,%ymm9 + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + vmovdqu %ymm9,128(%rsp) + addl %r12d,%ebx + andl %edi,%ecx + addl 72(%r13),%ebp + xorl %esi,%ecx + movl %edx,%edi + xorl %esi,%edi + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + andl %edi,%ebx + addl 76(%r13),%eax + xorl %edx,%ebx + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + vpalignr $8,%ymm1,%ymm2,%ymm5 + addl 96(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + vpsrldq $4,%ymm4,%ymm8 + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + vpxor %ymm1,%ymm5,%ymm5 + vpxor %ymm3,%ymm8,%ymm8 + addl 100(%r13),%edx + leal (%rdx,%rax,1),%edx + vpxor %ymm8,%ymm5,%ymm5 + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + xorl %ebp,%esi + addl %r12d,%edx + vpsrld $31,%ymm5,%ymm8 + vmovdqu -32(%r14),%ymm11 + xorl %ebx,%esi + addl 104(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + vpslldq $12,%ymm5,%ymm10 + vpaddd %ymm5,%ymm5,%ymm5 + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm5,%ymm5 + xorl %eax,%edx + addl %r12d,%ecx + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm5,%ymm5 + xorl %ebp,%edx + addl 108(%r13),%ebx + leaq 256(%r13),%r13 + vpxor %ymm10,%ymm5,%ymm5 + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + vpaddd %ymm11,%ymm5,%ymm9 + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + vmovdqu %ymm9,160(%rsp) + addl -128(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + vpalignr $8,%ymm2,%ymm3,%ymm6 + addl -124(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + vpsrldq $4,%ymm5,%ymm8 + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + vpxor %ymm2,%ymm6,%ymm6 + vpxor %ymm4,%ymm8,%ymm8 + addl -120(%r13),%esi + leal (%rsi,%rbp,1),%esi + vpxor %ymm8,%ymm6,%ymm6 + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + vpsrld $31,%ymm6,%ymm8 + xorl %ecx,%eax + addl -116(%r13),%edx + leal (%rdx,%rax,1),%edx + vpslldq $12,%ymm6,%ymm10 + vpaddd %ymm6,%ymm6,%ymm6 + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm6,%ymm6 + xorl %ebp,%esi + addl %r12d,%edx + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm6,%ymm6 + xorl %ebx,%esi + addl -96(%r13),%ecx + vpxor %ymm10,%ymm6,%ymm6 + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + vpaddd %ymm11,%ymm6,%ymm9 + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + vmovdqu %ymm9,192(%rsp) + addl -92(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + vpalignr $8,%ymm3,%ymm4,%ymm7 + addl -88(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + vpsrldq $4,%ymm6,%ymm8 + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + vpxor %ymm3,%ymm7,%ymm7 + vpxor %ymm5,%ymm8,%ymm8 + addl -84(%r13),%eax + leal (%rax,%rbx,1),%eax + vpxor %ymm8,%ymm7,%ymm7 + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + vpsrld $31,%ymm7,%ymm8 + xorl %edx,%ebp + addl -64(%r13),%esi + leal (%rsi,%rbp,1),%esi + vpslldq $12,%ymm7,%ymm10 + vpaddd %ymm7,%ymm7,%ymm7 + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + vpsrld $30,%ymm10,%ymm9 + vpor %ymm8,%ymm7,%ymm7 + xorl %ebx,%eax + addl %r12d,%esi + vpslld $2,%ymm10,%ymm10 + vpxor %ymm9,%ymm7,%ymm7 + xorl %ecx,%eax + addl -60(%r13),%edx + vpxor %ymm10,%ymm7,%ymm7 + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + rorxl $2,%esi,%eax + vpaddd %ymm11,%ymm7,%ymm9 + xorl %ebp,%esi + addl %r12d,%edx + xorl %ebx,%esi + vmovdqu %ymm9,224(%rsp) + addl -56(%r13),%ecx + leal (%rcx,%rsi,1),%ecx + rorxl $27,%edx,%r12d + rorxl $2,%edx,%esi + xorl %eax,%edx + addl %r12d,%ecx + xorl %ebp,%edx + addl -52(%r13),%ebx + leal (%rbx,%rdx,1),%ebx + rorxl $27,%ecx,%r12d + rorxl $2,%ecx,%edx + xorl %esi,%ecx + addl %r12d,%ebx + xorl %eax,%ecx + addl -32(%r13),%ebp + leal (%rcx,%rbp,1),%ebp + rorxl $27,%ebx,%r12d + rorxl $2,%ebx,%ecx + xorl %edx,%ebx + addl %r12d,%ebp + xorl %esi,%ebx + addl -28(%r13),%eax + leal (%rax,%rbx,1),%eax + rorxl $27,%ebp,%r12d + rorxl $2,%ebp,%ebx + xorl %ecx,%ebp + addl %r12d,%eax + xorl %edx,%ebp + addl -24(%r13),%esi + leal (%rsi,%rbp,1),%esi + rorxl $27,%eax,%r12d + rorxl $2,%eax,%ebp + xorl %ebx,%eax + addl %r12d,%esi + xorl %ecx,%eax + addl -20(%r13),%edx + leal (%rdx,%rax,1),%edx + rorxl $27,%esi,%r12d + addl %r12d,%edx + leaq 128(%rsp),%r13 + + + addl 0(%r8),%edx + addl 4(%r8),%esi + addl 8(%r8),%ebp + movl %edx,0(%r8) + addl 12(%r8),%ebx + movl %esi,4(%r8) + movl %edx,%eax + addl 16(%r8),%ecx + movl %ebp,%r12d + movl %ebp,8(%r8) + movl %ebx,%edx + + movl %ebx,12(%r8) + movl %esi,%ebp + movl %ecx,16(%r8) + + movl %ecx,%esi + movl %r12d,%ecx + + + cmpq %r10,%r9 + jbe L$oop_avx2 + +L$done_avx2: + vzeroupper + movq -40(%r11),%r14 + + movq -32(%r11),%r13 + + movq -24(%r11),%r12 + + movq -16(%r11),%rbp + + movq -8(%r11),%rbx + + leaq (%r11),%rsp + +L$epilogue_avx2: + .byte 0xf3,0xc3 + + +.p2align 6 +K_XX_XX: +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 +.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.p2align 6 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha256-mb-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha256-mb-x86_64.s new file mode 100644 index 0000000..bab9a56 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha256-mb-x86_64.s @@ -0,0 +1,7948 @@ +.text + + + +.globl _sha256_multi_block + +.p2align 5 +_sha256_multi_block: + + movq _OPENSSL_ia32cap_P+4(%rip),%rcx + btq $61,%rcx + jc _shaext_shortcut + testl $268435456,%ecx + jnz _avx_shortcut + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + subq $288,%rsp + andq $-256,%rsp + movq %rax,272(%rsp) + +L$body: + leaq K256+128(%rip),%rbp + leaq 256(%rsp),%rbx + leaq 128(%rdi),%rdi + +L$oop_grande: + movl %edx,280(%rsp) + xorl %edx,%edx + movq 0(%rsi),%r8 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rbp,%r8 + movq 16(%rsi),%r9 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rbp,%r9 + movq 32(%rsi),%r10 + movl 40(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,8(%rbx) + cmovleq %rbp,%r10 + movq 48(%rsi),%r11 + movl 56(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,12(%rbx) + cmovleq %rbp,%r11 + testl %edx,%edx + jz L$done + + movdqu 0-128(%rdi),%xmm8 + leaq 128(%rsp),%rax + movdqu 32-128(%rdi),%xmm9 + movdqu 64-128(%rdi),%xmm10 + movdqu 96-128(%rdi),%xmm11 + movdqu 128-128(%rdi),%xmm12 + movdqu 160-128(%rdi),%xmm13 + movdqu 192-128(%rdi),%xmm14 + movdqu 224-128(%rdi),%xmm15 + movdqu L$pbswap(%rip),%xmm6 + jmp L$oop + +.p2align 5 +L$oop: + movdqa %xmm10,%xmm4 + pxor %xmm9,%xmm4 + movd 0(%r8),%xmm5 + movd 0(%r9),%xmm0 + movd 0(%r10),%xmm1 + movd 0(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm12,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm12,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm12,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,0-128(%rax) + paddd %xmm15,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -128(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm12,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm14,%xmm0 + pand %xmm13,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm8,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm9,%xmm3 + movdqa %xmm8,%xmm7 + pslld $10,%xmm2 + pxor %xmm8,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm9,%xmm15 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm15 + paddd %xmm5,%xmm11 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm15 + paddd %xmm7,%xmm15 + movd 4(%r8),%xmm5 + movd 4(%r9),%xmm0 + movd 4(%r10),%xmm1 + movd 4(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm11,%xmm7 + + movdqa %xmm11,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm11,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,16-128(%rax) + paddd %xmm14,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -96(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm11,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm13,%xmm0 + pand %xmm12,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm15,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm8,%xmm4 + movdqa %xmm15,%xmm7 + pslld $10,%xmm2 + pxor %xmm15,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm8,%xmm14 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm14 + paddd %xmm5,%xmm10 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm14 + paddd %xmm7,%xmm14 + movd 8(%r8),%xmm5 + movd 8(%r9),%xmm0 + movd 8(%r10),%xmm1 + movd 8(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm10,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm10,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm10,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,32-128(%rax) + paddd %xmm13,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm10,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm12,%xmm0 + pand %xmm11,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm14,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm15,%xmm3 + movdqa %xmm14,%xmm7 + pslld $10,%xmm2 + pxor %xmm14,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm15,%xmm13 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm13 + paddd %xmm5,%xmm9 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm13 + paddd %xmm7,%xmm13 + movd 12(%r8),%xmm5 + movd 12(%r9),%xmm0 + movd 12(%r10),%xmm1 + movd 12(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm9,%xmm7 + + movdqa %xmm9,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm9,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,48-128(%rax) + paddd %xmm12,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -32(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm9,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm11,%xmm0 + pand %xmm10,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm13,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm14,%xmm4 + movdqa %xmm13,%xmm7 + pslld $10,%xmm2 + pxor %xmm13,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm14,%xmm12 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm12 + paddd %xmm5,%xmm8 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm12 + paddd %xmm7,%xmm12 + movd 16(%r8),%xmm5 + movd 16(%r9),%xmm0 + movd 16(%r10),%xmm1 + movd 16(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm8,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm8,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm8,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,64-128(%rax) + paddd %xmm11,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 0(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm8,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm10,%xmm0 + pand %xmm9,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm12,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm13,%xmm3 + movdqa %xmm12,%xmm7 + pslld $10,%xmm2 + pxor %xmm12,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm13,%xmm11 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm11 + paddd %xmm5,%xmm15 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm11 + paddd %xmm7,%xmm11 + movd 20(%r8),%xmm5 + movd 20(%r9),%xmm0 + movd 20(%r10),%xmm1 + movd 20(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm15,%xmm7 + + movdqa %xmm15,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm15,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,80-128(%rax) + paddd %xmm10,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 32(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm15,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm9,%xmm0 + pand %xmm8,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm11,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm12,%xmm4 + movdqa %xmm11,%xmm7 + pslld $10,%xmm2 + pxor %xmm11,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm12,%xmm10 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm10 + paddd %xmm5,%xmm14 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm10 + paddd %xmm7,%xmm10 + movd 24(%r8),%xmm5 + movd 24(%r9),%xmm0 + movd 24(%r10),%xmm1 + movd 24(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm14,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm14,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm14,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,96-128(%rax) + paddd %xmm9,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm14,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm8,%xmm0 + pand %xmm15,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm10,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm11,%xmm3 + movdqa %xmm10,%xmm7 + pslld $10,%xmm2 + pxor %xmm10,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm11,%xmm9 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm9 + paddd %xmm5,%xmm13 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm9 + paddd %xmm7,%xmm9 + movd 28(%r8),%xmm5 + movd 28(%r9),%xmm0 + movd 28(%r10),%xmm1 + movd 28(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm13,%xmm7 + + movdqa %xmm13,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm13,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,112-128(%rax) + paddd %xmm8,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 96(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm13,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm15,%xmm0 + pand %xmm14,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm9,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm10,%xmm4 + movdqa %xmm9,%xmm7 + pslld $10,%xmm2 + pxor %xmm9,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm10,%xmm8 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm8 + paddd %xmm5,%xmm12 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm8 + paddd %xmm7,%xmm8 + leaq 256(%rbp),%rbp + movd 32(%r8),%xmm5 + movd 32(%r9),%xmm0 + movd 32(%r10),%xmm1 + movd 32(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm12,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm12,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm12,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,128-128(%rax) + paddd %xmm15,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -128(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm12,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm14,%xmm0 + pand %xmm13,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm8,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm9,%xmm3 + movdqa %xmm8,%xmm7 + pslld $10,%xmm2 + pxor %xmm8,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm9,%xmm15 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm15 + paddd %xmm5,%xmm11 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm15 + paddd %xmm7,%xmm15 + movd 36(%r8),%xmm5 + movd 36(%r9),%xmm0 + movd 36(%r10),%xmm1 + movd 36(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm11,%xmm7 + + movdqa %xmm11,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm11,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,144-128(%rax) + paddd %xmm14,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -96(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm11,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm13,%xmm0 + pand %xmm12,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm15,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm8,%xmm4 + movdqa %xmm15,%xmm7 + pslld $10,%xmm2 + pxor %xmm15,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm8,%xmm14 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm14 + paddd %xmm5,%xmm10 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm14 + paddd %xmm7,%xmm14 + movd 40(%r8),%xmm5 + movd 40(%r9),%xmm0 + movd 40(%r10),%xmm1 + movd 40(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm10,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm10,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm10,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,160-128(%rax) + paddd %xmm13,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm10,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm12,%xmm0 + pand %xmm11,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm14,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm15,%xmm3 + movdqa %xmm14,%xmm7 + pslld $10,%xmm2 + pxor %xmm14,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm15,%xmm13 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm13 + paddd %xmm5,%xmm9 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm13 + paddd %xmm7,%xmm13 + movd 44(%r8),%xmm5 + movd 44(%r9),%xmm0 + movd 44(%r10),%xmm1 + movd 44(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm9,%xmm7 + + movdqa %xmm9,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm9,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,176-128(%rax) + paddd %xmm12,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -32(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm9,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm11,%xmm0 + pand %xmm10,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm13,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm14,%xmm4 + movdqa %xmm13,%xmm7 + pslld $10,%xmm2 + pxor %xmm13,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm14,%xmm12 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm12 + paddd %xmm5,%xmm8 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm12 + paddd %xmm7,%xmm12 + movd 48(%r8),%xmm5 + movd 48(%r9),%xmm0 + movd 48(%r10),%xmm1 + movd 48(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm8,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm8,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm8,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,192-128(%rax) + paddd %xmm11,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 0(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm8,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm10,%xmm0 + pand %xmm9,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm12,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm13,%xmm3 + movdqa %xmm12,%xmm7 + pslld $10,%xmm2 + pxor %xmm12,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm13,%xmm11 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm11 + paddd %xmm5,%xmm15 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm11 + paddd %xmm7,%xmm11 + movd 52(%r8),%xmm5 + movd 52(%r9),%xmm0 + movd 52(%r10),%xmm1 + movd 52(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm15,%xmm7 + + movdqa %xmm15,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm15,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,208-128(%rax) + paddd %xmm10,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 32(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm15,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm9,%xmm0 + pand %xmm8,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm11,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm12,%xmm4 + movdqa %xmm11,%xmm7 + pslld $10,%xmm2 + pxor %xmm11,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm12,%xmm10 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm10 + paddd %xmm5,%xmm14 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm10 + paddd %xmm7,%xmm10 + movd 56(%r8),%xmm5 + movd 56(%r9),%xmm0 + movd 56(%r10),%xmm1 + movd 56(%r11),%xmm2 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm14,%xmm7 +.byte 102,15,56,0,238 + movdqa %xmm14,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm14,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,224-128(%rax) + paddd %xmm9,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm14,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm8,%xmm0 + pand %xmm15,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm10,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm11,%xmm3 + movdqa %xmm10,%xmm7 + pslld $10,%xmm2 + pxor %xmm10,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm11,%xmm9 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm9 + paddd %xmm5,%xmm13 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm9 + paddd %xmm7,%xmm9 + movd 60(%r8),%xmm5 + leaq 64(%r8),%r8 + movd 60(%r9),%xmm0 + leaq 64(%r9),%r9 + movd 60(%r10),%xmm1 + leaq 64(%r10),%r10 + movd 60(%r11),%xmm2 + leaq 64(%r11),%r11 + punpckldq %xmm1,%xmm5 + punpckldq %xmm2,%xmm0 + punpckldq %xmm0,%xmm5 + movdqa %xmm13,%xmm7 + + movdqa %xmm13,%xmm2 +.byte 102,15,56,0,238 + psrld $6,%xmm7 + movdqa %xmm13,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,240-128(%rax) + paddd %xmm8,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 96(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm13,%xmm0 + prefetcht0 63(%r8) + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm15,%xmm0 + pand %xmm14,%xmm4 + pxor %xmm1,%xmm7 + + prefetcht0 63(%r9) + movdqa %xmm9,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm4,%xmm0 + movdqa %xmm10,%xmm4 + movdqa %xmm9,%xmm7 + pslld $10,%xmm2 + pxor %xmm9,%xmm4 + + prefetcht0 63(%r10) + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + prefetcht0 63(%r11) + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm10,%xmm8 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm8 + paddd %xmm5,%xmm12 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm8 + paddd %xmm7,%xmm8 + leaq 256(%rbp),%rbp + movdqu 0-128(%rax),%xmm5 + movl $3,%ecx + jmp L$oop_16_xx +.p2align 5 +L$oop_16_xx: + movdqa 16-128(%rax),%xmm6 + paddd 144-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 224-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm12,%xmm7 + + movdqa %xmm12,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm12,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,0-128(%rax) + paddd %xmm15,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -128(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm12,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm14,%xmm0 + pand %xmm13,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm8,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm9,%xmm3 + movdqa %xmm8,%xmm7 + pslld $10,%xmm2 + pxor %xmm8,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm9,%xmm15 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm15 + paddd %xmm5,%xmm11 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm15 + paddd %xmm7,%xmm15 + movdqa 32-128(%rax),%xmm5 + paddd 160-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 240-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm11,%xmm7 + + movdqa %xmm11,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm11,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,16-128(%rax) + paddd %xmm14,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -96(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm11,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm13,%xmm0 + pand %xmm12,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm15,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm8,%xmm4 + movdqa %xmm15,%xmm7 + pslld $10,%xmm2 + pxor %xmm15,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm8,%xmm14 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm14 + paddd %xmm6,%xmm10 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm14 + paddd %xmm7,%xmm14 + movdqa 48-128(%rax),%xmm6 + paddd 176-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 0-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm10,%xmm7 + + movdqa %xmm10,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm10,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,32-128(%rax) + paddd %xmm13,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm10,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm12,%xmm0 + pand %xmm11,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm14,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm15,%xmm3 + movdqa %xmm14,%xmm7 + pslld $10,%xmm2 + pxor %xmm14,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm15,%xmm13 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm13 + paddd %xmm5,%xmm9 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm13 + paddd %xmm7,%xmm13 + movdqa 64-128(%rax),%xmm5 + paddd 192-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 16-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm9,%xmm7 + + movdqa %xmm9,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm9,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,48-128(%rax) + paddd %xmm12,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -32(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm9,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm11,%xmm0 + pand %xmm10,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm13,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm14,%xmm4 + movdqa %xmm13,%xmm7 + pslld $10,%xmm2 + pxor %xmm13,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm14,%xmm12 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm12 + paddd %xmm6,%xmm8 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm12 + paddd %xmm7,%xmm12 + movdqa 80-128(%rax),%xmm6 + paddd 208-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 32-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm8,%xmm7 + + movdqa %xmm8,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm8,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,64-128(%rax) + paddd %xmm11,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 0(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm8,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm10,%xmm0 + pand %xmm9,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm12,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm13,%xmm3 + movdqa %xmm12,%xmm7 + pslld $10,%xmm2 + pxor %xmm12,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm13,%xmm11 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm11 + paddd %xmm5,%xmm15 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm11 + paddd %xmm7,%xmm11 + movdqa 96-128(%rax),%xmm5 + paddd 224-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 48-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm15,%xmm7 + + movdqa %xmm15,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm15,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,80-128(%rax) + paddd %xmm10,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 32(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm15,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm9,%xmm0 + pand %xmm8,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm11,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm12,%xmm4 + movdqa %xmm11,%xmm7 + pslld $10,%xmm2 + pxor %xmm11,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm12,%xmm10 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm10 + paddd %xmm6,%xmm14 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm10 + paddd %xmm7,%xmm10 + movdqa 112-128(%rax),%xmm6 + paddd 240-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 64-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm14,%xmm7 + + movdqa %xmm14,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm14,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,96-128(%rax) + paddd %xmm9,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm14,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm8,%xmm0 + pand %xmm15,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm10,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm11,%xmm3 + movdqa %xmm10,%xmm7 + pslld $10,%xmm2 + pxor %xmm10,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm11,%xmm9 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm9 + paddd %xmm5,%xmm13 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm9 + paddd %xmm7,%xmm9 + movdqa 128-128(%rax),%xmm5 + paddd 0-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 80-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm13,%xmm7 + + movdqa %xmm13,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm13,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,112-128(%rax) + paddd %xmm8,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 96(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm13,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm15,%xmm0 + pand %xmm14,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm9,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm10,%xmm4 + movdqa %xmm9,%xmm7 + pslld $10,%xmm2 + pxor %xmm9,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm10,%xmm8 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm8 + paddd %xmm6,%xmm12 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm8 + paddd %xmm7,%xmm8 + leaq 256(%rbp),%rbp + movdqa 144-128(%rax),%xmm6 + paddd 16-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 96-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm12,%xmm7 + + movdqa %xmm12,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm12,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,128-128(%rax) + paddd %xmm15,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -128(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm12,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm14,%xmm0 + pand %xmm13,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm8,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm9,%xmm3 + movdqa %xmm8,%xmm7 + pslld $10,%xmm2 + pxor %xmm8,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm9,%xmm15 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm15 + paddd %xmm5,%xmm11 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm15 + paddd %xmm7,%xmm15 + movdqa 160-128(%rax),%xmm5 + paddd 32-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 112-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm11,%xmm7 + + movdqa %xmm11,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm11,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,144-128(%rax) + paddd %xmm14,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -96(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm11,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm13,%xmm0 + pand %xmm12,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm15,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm8,%xmm4 + movdqa %xmm15,%xmm7 + pslld $10,%xmm2 + pxor %xmm15,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm8,%xmm14 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm14 + paddd %xmm6,%xmm10 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm14 + paddd %xmm7,%xmm14 + movdqa 176-128(%rax),%xmm6 + paddd 48-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 128-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm10,%xmm7 + + movdqa %xmm10,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm10,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,160-128(%rax) + paddd %xmm13,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm10,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm12,%xmm0 + pand %xmm11,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm14,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm15,%xmm3 + movdqa %xmm14,%xmm7 + pslld $10,%xmm2 + pxor %xmm14,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm15,%xmm13 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm13 + paddd %xmm5,%xmm9 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm13 + paddd %xmm7,%xmm13 + movdqa 192-128(%rax),%xmm5 + paddd 64-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 144-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm9,%xmm7 + + movdqa %xmm9,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm9,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,176-128(%rax) + paddd %xmm12,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd -32(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm9,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm11,%xmm0 + pand %xmm10,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm13,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm14,%xmm4 + movdqa %xmm13,%xmm7 + pslld $10,%xmm2 + pxor %xmm13,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm14,%xmm12 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm12 + paddd %xmm6,%xmm8 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm12 + paddd %xmm7,%xmm12 + movdqa 208-128(%rax),%xmm6 + paddd 80-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 160-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm8,%xmm7 + + movdqa %xmm8,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm8,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,192-128(%rax) + paddd %xmm11,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 0(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm8,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm8,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm10,%xmm0 + pand %xmm9,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm12,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm12,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm13,%xmm3 + movdqa %xmm12,%xmm7 + pslld $10,%xmm2 + pxor %xmm12,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm13,%xmm11 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm11 + paddd %xmm5,%xmm15 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm11 + paddd %xmm7,%xmm11 + movdqa 224-128(%rax),%xmm5 + paddd 96-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 176-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm15,%xmm7 + + movdqa %xmm15,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm15,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,208-128(%rax) + paddd %xmm10,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 32(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm15,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm15,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm9,%xmm0 + pand %xmm8,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm11,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm11,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm12,%xmm4 + movdqa %xmm11,%xmm7 + pslld $10,%xmm2 + pxor %xmm11,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm12,%xmm10 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm10 + paddd %xmm6,%xmm14 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm10 + paddd %xmm7,%xmm10 + movdqa 240-128(%rax),%xmm6 + paddd 112-128(%rax),%xmm5 + + movdqa %xmm6,%xmm7 + movdqa %xmm6,%xmm1 + psrld $3,%xmm7 + movdqa %xmm6,%xmm2 + + psrld $7,%xmm1 + movdqa 192-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm3 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm3,%xmm1 + + psrld $17,%xmm3 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + psrld $19-17,%xmm3 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm3,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm5 + movdqa %xmm14,%xmm7 + + movdqa %xmm14,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm14,%xmm1 + pslld $7,%xmm2 + movdqa %xmm5,224-128(%rax) + paddd %xmm9,%xmm5 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 64(%rbp),%xmm5 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm14,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm14,%xmm3 + pslld $26-21,%xmm2 + pandn %xmm8,%xmm0 + pand %xmm15,%xmm3 + pxor %xmm1,%xmm7 + + + movdqa %xmm10,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm10,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm5 + pxor %xmm3,%xmm0 + movdqa %xmm11,%xmm3 + movdqa %xmm10,%xmm7 + pslld $10,%xmm2 + pxor %xmm10,%xmm3 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm5 + pslld $19-10,%xmm2 + pand %xmm3,%xmm4 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm11,%xmm9 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm4,%xmm9 + paddd %xmm5,%xmm13 + pxor %xmm2,%xmm7 + + paddd %xmm5,%xmm9 + paddd %xmm7,%xmm9 + movdqa 0-128(%rax),%xmm5 + paddd 128-128(%rax),%xmm6 + + movdqa %xmm5,%xmm7 + movdqa %xmm5,%xmm1 + psrld $3,%xmm7 + movdqa %xmm5,%xmm2 + + psrld $7,%xmm1 + movdqa 208-128(%rax),%xmm0 + pslld $14,%xmm2 + pxor %xmm1,%xmm7 + psrld $18-7,%xmm1 + movdqa %xmm0,%xmm4 + pxor %xmm2,%xmm7 + pslld $25-14,%xmm2 + pxor %xmm1,%xmm7 + psrld $10,%xmm0 + movdqa %xmm4,%xmm1 + + psrld $17,%xmm4 + pxor %xmm2,%xmm7 + pslld $13,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + psrld $19-17,%xmm4 + pxor %xmm1,%xmm0 + pslld $15-13,%xmm1 + pxor %xmm4,%xmm0 + pxor %xmm1,%xmm0 + paddd %xmm0,%xmm6 + movdqa %xmm13,%xmm7 + + movdqa %xmm13,%xmm2 + + psrld $6,%xmm7 + movdqa %xmm13,%xmm1 + pslld $7,%xmm2 + movdqa %xmm6,240-128(%rax) + paddd %xmm8,%xmm6 + + psrld $11,%xmm1 + pxor %xmm2,%xmm7 + pslld $21-7,%xmm2 + paddd 96(%rbp),%xmm6 + pxor %xmm1,%xmm7 + + psrld $25-11,%xmm1 + movdqa %xmm13,%xmm0 + + pxor %xmm2,%xmm7 + movdqa %xmm13,%xmm4 + pslld $26-21,%xmm2 + pandn %xmm15,%xmm0 + pand %xmm14,%xmm4 + pxor %xmm1,%xmm7 + + + movdqa %xmm9,%xmm1 + pxor %xmm2,%xmm7 + movdqa %xmm9,%xmm2 + psrld $2,%xmm1 + paddd %xmm7,%xmm6 + pxor %xmm4,%xmm0 + movdqa %xmm10,%xmm4 + movdqa %xmm9,%xmm7 + pslld $10,%xmm2 + pxor %xmm9,%xmm4 + + + psrld $13,%xmm7 + pxor %xmm2,%xmm1 + paddd %xmm0,%xmm6 + pslld $19-10,%xmm2 + pand %xmm4,%xmm3 + pxor %xmm7,%xmm1 + + + psrld $22-13,%xmm7 + pxor %xmm2,%xmm1 + movdqa %xmm10,%xmm8 + pslld $30-19,%xmm2 + pxor %xmm1,%xmm7 + pxor %xmm3,%xmm8 + paddd %xmm6,%xmm12 + pxor %xmm2,%xmm7 + + paddd %xmm6,%xmm8 + paddd %xmm7,%xmm8 + leaq 256(%rbp),%rbp + decl %ecx + jnz L$oop_16_xx + + movl $1,%ecx + leaq K256+128(%rip),%rbp + + movdqa (%rbx),%xmm7 + cmpl 0(%rbx),%ecx + pxor %xmm0,%xmm0 + cmovgeq %rbp,%r8 + cmpl 4(%rbx),%ecx + movdqa %xmm7,%xmm6 + cmovgeq %rbp,%r9 + cmpl 8(%rbx),%ecx + pcmpgtd %xmm0,%xmm6 + cmovgeq %rbp,%r10 + cmpl 12(%rbx),%ecx + paddd %xmm6,%xmm7 + cmovgeq %rbp,%r11 + + movdqu 0-128(%rdi),%xmm0 + pand %xmm6,%xmm8 + movdqu 32-128(%rdi),%xmm1 + pand %xmm6,%xmm9 + movdqu 64-128(%rdi),%xmm2 + pand %xmm6,%xmm10 + movdqu 96-128(%rdi),%xmm5 + pand %xmm6,%xmm11 + paddd %xmm0,%xmm8 + movdqu 128-128(%rdi),%xmm0 + pand %xmm6,%xmm12 + paddd %xmm1,%xmm9 + movdqu 160-128(%rdi),%xmm1 + pand %xmm6,%xmm13 + paddd %xmm2,%xmm10 + movdqu 192-128(%rdi),%xmm2 + pand %xmm6,%xmm14 + paddd %xmm5,%xmm11 + movdqu 224-128(%rdi),%xmm5 + pand %xmm6,%xmm15 + paddd %xmm0,%xmm12 + paddd %xmm1,%xmm13 + movdqu %xmm8,0-128(%rdi) + paddd %xmm2,%xmm14 + movdqu %xmm9,32-128(%rdi) + paddd %xmm5,%xmm15 + movdqu %xmm10,64-128(%rdi) + movdqu %xmm11,96-128(%rdi) + movdqu %xmm12,128-128(%rdi) + movdqu %xmm13,160-128(%rdi) + movdqu %xmm14,192-128(%rdi) + movdqu %xmm15,224-128(%rdi) + + movdqa %xmm7,(%rbx) + movdqa L$pbswap(%rip),%xmm6 + decl %edx + jnz L$oop + + movl 280(%rsp),%edx + leaq 16(%rdi),%rdi + leaq 64(%rsi),%rsi + decl %edx + jnz L$oop_grande + +L$done: + movq 272(%rsp),%rax + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +sha256_multi_block_shaext: + +_shaext_shortcut: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + subq $288,%rsp + shll $1,%edx + andq $-256,%rsp + leaq 128(%rdi),%rdi + movq %rax,272(%rsp) +L$body_shaext: + leaq 256(%rsp),%rbx + leaq K256_shaext+128(%rip),%rbp + +L$oop_grande_shaext: + movl %edx,280(%rsp) + xorl %edx,%edx + movq 0(%rsi),%r8 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rsp,%r8 + movq 16(%rsi),%r9 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rsp,%r9 + testl %edx,%edx + jz L$done_shaext + + movq 0-128(%rdi),%xmm12 + movq 32-128(%rdi),%xmm4 + movq 64-128(%rdi),%xmm13 + movq 96-128(%rdi),%xmm5 + movq 128-128(%rdi),%xmm8 + movq 160-128(%rdi),%xmm9 + movq 192-128(%rdi),%xmm10 + movq 224-128(%rdi),%xmm11 + + punpckldq %xmm4,%xmm12 + punpckldq %xmm5,%xmm13 + punpckldq %xmm9,%xmm8 + punpckldq %xmm11,%xmm10 + movdqa K256_shaext-16(%rip),%xmm3 + + movdqa %xmm12,%xmm14 + movdqa %xmm13,%xmm15 + punpcklqdq %xmm8,%xmm12 + punpcklqdq %xmm10,%xmm13 + punpckhqdq %xmm8,%xmm14 + punpckhqdq %xmm10,%xmm15 + + pshufd $27,%xmm12,%xmm12 + pshufd $27,%xmm13,%xmm13 + pshufd $27,%xmm14,%xmm14 + pshufd $27,%xmm15,%xmm15 + jmp L$oop_shaext + +.p2align 5 +L$oop_shaext: + movdqu 0(%r8),%xmm4 + movdqu 0(%r9),%xmm8 + movdqu 16(%r8),%xmm5 + movdqu 16(%r9),%xmm9 + movdqu 32(%r8),%xmm6 +.byte 102,15,56,0,227 + movdqu 32(%r9),%xmm10 +.byte 102,68,15,56,0,195 + movdqu 48(%r8),%xmm7 + leaq 64(%r8),%r8 + movdqu 48(%r9),%xmm11 + leaq 64(%r9),%r9 + + movdqa 0-128(%rbp),%xmm0 +.byte 102,15,56,0,235 + paddd %xmm4,%xmm0 + pxor %xmm12,%xmm4 + movdqa %xmm0,%xmm1 + movdqa 0-128(%rbp),%xmm2 +.byte 102,68,15,56,0,203 + paddd %xmm8,%xmm2 + movdqa %xmm13,80(%rsp) +.byte 69,15,56,203,236 + pxor %xmm14,%xmm8 + movdqa %xmm2,%xmm0 + movdqa %xmm15,112(%rsp) +.byte 69,15,56,203,254 + pshufd $0x0e,%xmm1,%xmm0 + pxor %xmm12,%xmm4 + movdqa %xmm12,64(%rsp) +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + pxor %xmm14,%xmm8 + movdqa %xmm14,96(%rsp) + movdqa 16-128(%rbp),%xmm1 + paddd %xmm5,%xmm1 +.byte 102,15,56,0,243 +.byte 69,15,56,203,247 + + movdqa %xmm1,%xmm0 + movdqa 16-128(%rbp),%xmm2 + paddd %xmm9,%xmm2 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + prefetcht0 127(%r8) +.byte 102,15,56,0,251 +.byte 102,68,15,56,0,211 + prefetcht0 127(%r9) +.byte 69,15,56,203,254 + pshufd $0x0e,%xmm1,%xmm0 +.byte 102,68,15,56,0,219 +.byte 15,56,204,229 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 32-128(%rbp),%xmm1 + paddd %xmm6,%xmm1 +.byte 69,15,56,203,247 + + movdqa %xmm1,%xmm0 + movdqa 32-128(%rbp),%xmm2 + paddd %xmm10,%xmm2 +.byte 69,15,56,203,236 +.byte 69,15,56,204,193 + movdqa %xmm2,%xmm0 + movdqa %xmm7,%xmm3 +.byte 69,15,56,203,254 + pshufd $0x0e,%xmm1,%xmm0 +.byte 102,15,58,15,222,4 + paddd %xmm3,%xmm4 + movdqa %xmm11,%xmm3 +.byte 102,65,15,58,15,218,4 +.byte 15,56,204,238 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 48-128(%rbp),%xmm1 + paddd %xmm7,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,202 + + movdqa %xmm1,%xmm0 + movdqa 48-128(%rbp),%xmm2 + paddd %xmm3,%xmm8 + paddd %xmm11,%xmm2 +.byte 15,56,205,231 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm4,%xmm3 +.byte 102,15,58,15,223,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,195 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm5 + movdqa %xmm8,%xmm3 +.byte 102,65,15,58,15,219,4 +.byte 15,56,204,247 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 64-128(%rbp),%xmm1 + paddd %xmm4,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,211 + movdqa %xmm1,%xmm0 + movdqa 64-128(%rbp),%xmm2 + paddd %xmm3,%xmm9 + paddd %xmm8,%xmm2 +.byte 15,56,205,236 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm5,%xmm3 +.byte 102,15,58,15,220,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,200 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm6 + movdqa %xmm9,%xmm3 +.byte 102,65,15,58,15,216,4 +.byte 15,56,204,252 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 80-128(%rbp),%xmm1 + paddd %xmm5,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,216 + movdqa %xmm1,%xmm0 + movdqa 80-128(%rbp),%xmm2 + paddd %xmm3,%xmm10 + paddd %xmm9,%xmm2 +.byte 15,56,205,245 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm6,%xmm3 +.byte 102,15,58,15,221,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,209 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm7 + movdqa %xmm10,%xmm3 +.byte 102,65,15,58,15,217,4 +.byte 15,56,204,229 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 96-128(%rbp),%xmm1 + paddd %xmm6,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,193 + movdqa %xmm1,%xmm0 + movdqa 96-128(%rbp),%xmm2 + paddd %xmm3,%xmm11 + paddd %xmm10,%xmm2 +.byte 15,56,205,254 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm7,%xmm3 +.byte 102,15,58,15,222,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,218 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm4 + movdqa %xmm11,%xmm3 +.byte 102,65,15,58,15,218,4 +.byte 15,56,204,238 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 112-128(%rbp),%xmm1 + paddd %xmm7,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,202 + movdqa %xmm1,%xmm0 + movdqa 112-128(%rbp),%xmm2 + paddd %xmm3,%xmm8 + paddd %xmm11,%xmm2 +.byte 15,56,205,231 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm4,%xmm3 +.byte 102,15,58,15,223,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,195 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm5 + movdqa %xmm8,%xmm3 +.byte 102,65,15,58,15,219,4 +.byte 15,56,204,247 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 128-128(%rbp),%xmm1 + paddd %xmm4,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,211 + movdqa %xmm1,%xmm0 + movdqa 128-128(%rbp),%xmm2 + paddd %xmm3,%xmm9 + paddd %xmm8,%xmm2 +.byte 15,56,205,236 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm5,%xmm3 +.byte 102,15,58,15,220,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,200 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm6 + movdqa %xmm9,%xmm3 +.byte 102,65,15,58,15,216,4 +.byte 15,56,204,252 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 144-128(%rbp),%xmm1 + paddd %xmm5,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,216 + movdqa %xmm1,%xmm0 + movdqa 144-128(%rbp),%xmm2 + paddd %xmm3,%xmm10 + paddd %xmm9,%xmm2 +.byte 15,56,205,245 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm6,%xmm3 +.byte 102,15,58,15,221,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,209 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm7 + movdqa %xmm10,%xmm3 +.byte 102,65,15,58,15,217,4 +.byte 15,56,204,229 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 160-128(%rbp),%xmm1 + paddd %xmm6,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,193 + movdqa %xmm1,%xmm0 + movdqa 160-128(%rbp),%xmm2 + paddd %xmm3,%xmm11 + paddd %xmm10,%xmm2 +.byte 15,56,205,254 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm7,%xmm3 +.byte 102,15,58,15,222,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,218 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm4 + movdqa %xmm11,%xmm3 +.byte 102,65,15,58,15,218,4 +.byte 15,56,204,238 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 176-128(%rbp),%xmm1 + paddd %xmm7,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,202 + movdqa %xmm1,%xmm0 + movdqa 176-128(%rbp),%xmm2 + paddd %xmm3,%xmm8 + paddd %xmm11,%xmm2 +.byte 15,56,205,231 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm4,%xmm3 +.byte 102,15,58,15,223,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,195 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm5 + movdqa %xmm8,%xmm3 +.byte 102,65,15,58,15,219,4 +.byte 15,56,204,247 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 192-128(%rbp),%xmm1 + paddd %xmm4,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,211 + movdqa %xmm1,%xmm0 + movdqa 192-128(%rbp),%xmm2 + paddd %xmm3,%xmm9 + paddd %xmm8,%xmm2 +.byte 15,56,205,236 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm5,%xmm3 +.byte 102,15,58,15,220,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,200 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm6 + movdqa %xmm9,%xmm3 +.byte 102,65,15,58,15,216,4 +.byte 15,56,204,252 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 208-128(%rbp),%xmm1 + paddd %xmm5,%xmm1 +.byte 69,15,56,203,247 +.byte 69,15,56,204,216 + movdqa %xmm1,%xmm0 + movdqa 208-128(%rbp),%xmm2 + paddd %xmm3,%xmm10 + paddd %xmm9,%xmm2 +.byte 15,56,205,245 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movdqa %xmm6,%xmm3 +.byte 102,15,58,15,221,4 +.byte 69,15,56,203,254 +.byte 69,15,56,205,209 + pshufd $0x0e,%xmm1,%xmm0 + paddd %xmm3,%xmm7 + movdqa %xmm10,%xmm3 +.byte 102,65,15,58,15,217,4 + nop +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 224-128(%rbp),%xmm1 + paddd %xmm6,%xmm1 +.byte 69,15,56,203,247 + + movdqa %xmm1,%xmm0 + movdqa 224-128(%rbp),%xmm2 + paddd %xmm3,%xmm11 + paddd %xmm10,%xmm2 +.byte 15,56,205,254 + nop +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + movl $1,%ecx + pxor %xmm6,%xmm6 +.byte 69,15,56,203,254 +.byte 69,15,56,205,218 + pshufd $0x0e,%xmm1,%xmm0 + movdqa 240-128(%rbp),%xmm1 + paddd %xmm7,%xmm1 + movq (%rbx),%xmm7 + nop +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + movdqa 240-128(%rbp),%xmm2 + paddd %xmm11,%xmm2 +.byte 69,15,56,203,247 + + movdqa %xmm1,%xmm0 + cmpl 0(%rbx),%ecx + cmovgeq %rsp,%r8 + cmpl 4(%rbx),%ecx + cmovgeq %rsp,%r9 + pshufd $0x00,%xmm7,%xmm9 +.byte 69,15,56,203,236 + movdqa %xmm2,%xmm0 + pshufd $0x55,%xmm7,%xmm10 + movdqa %xmm7,%xmm11 +.byte 69,15,56,203,254 + pshufd $0x0e,%xmm1,%xmm0 + pcmpgtd %xmm6,%xmm9 + pcmpgtd %xmm6,%xmm10 +.byte 69,15,56,203,229 + pshufd $0x0e,%xmm2,%xmm0 + pcmpgtd %xmm6,%xmm11 + movdqa K256_shaext-16(%rip),%xmm3 +.byte 69,15,56,203,247 + + pand %xmm9,%xmm13 + pand %xmm10,%xmm15 + pand %xmm9,%xmm12 + pand %xmm10,%xmm14 + paddd %xmm7,%xmm11 + + paddd 80(%rsp),%xmm13 + paddd 112(%rsp),%xmm15 + paddd 64(%rsp),%xmm12 + paddd 96(%rsp),%xmm14 + + movq %xmm11,(%rbx) + decl %edx + jnz L$oop_shaext + + movl 280(%rsp),%edx + + pshufd $27,%xmm12,%xmm12 + pshufd $27,%xmm13,%xmm13 + pshufd $27,%xmm14,%xmm14 + pshufd $27,%xmm15,%xmm15 + + movdqa %xmm12,%xmm5 + movdqa %xmm13,%xmm6 + punpckldq %xmm14,%xmm12 + punpckhdq %xmm14,%xmm5 + punpckldq %xmm15,%xmm13 + punpckhdq %xmm15,%xmm6 + + movq %xmm12,0-128(%rdi) + psrldq $8,%xmm12 + movq %xmm5,128-128(%rdi) + psrldq $8,%xmm5 + movq %xmm12,32-128(%rdi) + movq %xmm5,160-128(%rdi) + + movq %xmm13,64-128(%rdi) + psrldq $8,%xmm13 + movq %xmm6,192-128(%rdi) + psrldq $8,%xmm6 + movq %xmm13,96-128(%rdi) + movq %xmm6,224-128(%rdi) + + leaq 8(%rdi),%rdi + leaq 32(%rsi),%rsi + decl %edx + jnz L$oop_grande_shaext + +L$done_shaext: + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$epilogue_shaext: + .byte 0xf3,0xc3 + + + +.p2align 5 +sha256_multi_block_avx: + +_avx_shortcut: + shrq $32,%rcx + cmpl $2,%edx + jb L$avx + testl $32,%ecx + jnz _avx2_shortcut + jmp L$avx +.p2align 5 +L$avx: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + subq $288,%rsp + andq $-256,%rsp + movq %rax,272(%rsp) + +L$body_avx: + leaq K256+128(%rip),%rbp + leaq 256(%rsp),%rbx + leaq 128(%rdi),%rdi + +L$oop_grande_avx: + movl %edx,280(%rsp) + xorl %edx,%edx + movq 0(%rsi),%r8 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rbp,%r8 + movq 16(%rsi),%r9 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rbp,%r9 + movq 32(%rsi),%r10 + movl 40(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,8(%rbx) + cmovleq %rbp,%r10 + movq 48(%rsi),%r11 + movl 56(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,12(%rbx) + cmovleq %rbp,%r11 + testl %edx,%edx + jz L$done_avx + + vmovdqu 0-128(%rdi),%xmm8 + leaq 128(%rsp),%rax + vmovdqu 32-128(%rdi),%xmm9 + vmovdqu 64-128(%rdi),%xmm10 + vmovdqu 96-128(%rdi),%xmm11 + vmovdqu 128-128(%rdi),%xmm12 + vmovdqu 160-128(%rdi),%xmm13 + vmovdqu 192-128(%rdi),%xmm14 + vmovdqu 224-128(%rdi),%xmm15 + vmovdqu L$pbswap(%rip),%xmm6 + jmp L$oop_avx + +.p2align 5 +L$oop_avx: + vpxor %xmm9,%xmm10,%xmm4 + vmovd 0(%r8),%xmm5 + vmovd 0(%r9),%xmm0 + vpinsrd $1,0(%r10),%xmm5,%xmm5 + vpinsrd $1,0(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm12,%xmm7 + vpslld $26,%xmm12,%xmm2 + vmovdqu %xmm5,0-128(%rax) + vpaddd %xmm15,%xmm5,%xmm5 + + vpsrld $11,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm12,%xmm2 + vpaddd -128(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm12,%xmm2 + vpandn %xmm14,%xmm12,%xmm0 + vpand %xmm13,%xmm12,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm8,%xmm15 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm8,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm8,%xmm9,%xmm3 + + vpxor %xmm1,%xmm15,%xmm15 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm8,%xmm1 + + vpslld $19,%xmm8,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm15,%xmm7 + + vpsrld $22,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm8,%xmm2 + vpxor %xmm4,%xmm9,%xmm15 + vpaddd %xmm5,%xmm11,%xmm11 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm15,%xmm15 + vpaddd %xmm7,%xmm15,%xmm15 + vmovd 4(%r8),%xmm5 + vmovd 4(%r9),%xmm0 + vpinsrd $1,4(%r10),%xmm5,%xmm5 + vpinsrd $1,4(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm11,%xmm7 + vpslld $26,%xmm11,%xmm2 + vmovdqu %xmm5,16-128(%rax) + vpaddd %xmm14,%xmm5,%xmm5 + + vpsrld $11,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm11,%xmm2 + vpaddd -96(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm11,%xmm2 + vpandn %xmm13,%xmm11,%xmm0 + vpand %xmm12,%xmm11,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm15,%xmm14 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm15,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm15,%xmm8,%xmm4 + + vpxor %xmm1,%xmm14,%xmm14 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm15,%xmm1 + + vpslld $19,%xmm15,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm14,%xmm7 + + vpsrld $22,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm15,%xmm2 + vpxor %xmm3,%xmm8,%xmm14 + vpaddd %xmm5,%xmm10,%xmm10 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm14,%xmm14 + vpaddd %xmm7,%xmm14,%xmm14 + vmovd 8(%r8),%xmm5 + vmovd 8(%r9),%xmm0 + vpinsrd $1,8(%r10),%xmm5,%xmm5 + vpinsrd $1,8(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm10,%xmm7 + vpslld $26,%xmm10,%xmm2 + vmovdqu %xmm5,32-128(%rax) + vpaddd %xmm13,%xmm5,%xmm5 + + vpsrld $11,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm10,%xmm2 + vpaddd -64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm10,%xmm2 + vpandn %xmm12,%xmm10,%xmm0 + vpand %xmm11,%xmm10,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm14,%xmm13 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm14,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm14,%xmm15,%xmm3 + + vpxor %xmm1,%xmm13,%xmm13 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm14,%xmm1 + + vpslld $19,%xmm14,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm13,%xmm7 + + vpsrld $22,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm14,%xmm2 + vpxor %xmm4,%xmm15,%xmm13 + vpaddd %xmm5,%xmm9,%xmm9 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm13,%xmm13 + vpaddd %xmm7,%xmm13,%xmm13 + vmovd 12(%r8),%xmm5 + vmovd 12(%r9),%xmm0 + vpinsrd $1,12(%r10),%xmm5,%xmm5 + vpinsrd $1,12(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm9,%xmm7 + vpslld $26,%xmm9,%xmm2 + vmovdqu %xmm5,48-128(%rax) + vpaddd %xmm12,%xmm5,%xmm5 + + vpsrld $11,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm9,%xmm2 + vpaddd -32(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm9,%xmm2 + vpandn %xmm11,%xmm9,%xmm0 + vpand %xmm10,%xmm9,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm13,%xmm12 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm13,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm13,%xmm14,%xmm4 + + vpxor %xmm1,%xmm12,%xmm12 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm13,%xmm1 + + vpslld $19,%xmm13,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm12,%xmm7 + + vpsrld $22,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm13,%xmm2 + vpxor %xmm3,%xmm14,%xmm12 + vpaddd %xmm5,%xmm8,%xmm8 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm12,%xmm12 + vpaddd %xmm7,%xmm12,%xmm12 + vmovd 16(%r8),%xmm5 + vmovd 16(%r9),%xmm0 + vpinsrd $1,16(%r10),%xmm5,%xmm5 + vpinsrd $1,16(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm8,%xmm7 + vpslld $26,%xmm8,%xmm2 + vmovdqu %xmm5,64-128(%rax) + vpaddd %xmm11,%xmm5,%xmm5 + + vpsrld $11,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm8,%xmm2 + vpaddd 0(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm8,%xmm2 + vpandn %xmm10,%xmm8,%xmm0 + vpand %xmm9,%xmm8,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm12,%xmm11 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm12,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm12,%xmm13,%xmm3 + + vpxor %xmm1,%xmm11,%xmm11 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm12,%xmm1 + + vpslld $19,%xmm12,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm11,%xmm7 + + vpsrld $22,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm12,%xmm2 + vpxor %xmm4,%xmm13,%xmm11 + vpaddd %xmm5,%xmm15,%xmm15 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm11,%xmm11 + vpaddd %xmm7,%xmm11,%xmm11 + vmovd 20(%r8),%xmm5 + vmovd 20(%r9),%xmm0 + vpinsrd $1,20(%r10),%xmm5,%xmm5 + vpinsrd $1,20(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm15,%xmm7 + vpslld $26,%xmm15,%xmm2 + vmovdqu %xmm5,80-128(%rax) + vpaddd %xmm10,%xmm5,%xmm5 + + vpsrld $11,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm15,%xmm2 + vpaddd 32(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm15,%xmm2 + vpandn %xmm9,%xmm15,%xmm0 + vpand %xmm8,%xmm15,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm11,%xmm10 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm11,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm11,%xmm12,%xmm4 + + vpxor %xmm1,%xmm10,%xmm10 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm11,%xmm1 + + vpslld $19,%xmm11,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm10,%xmm7 + + vpsrld $22,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm11,%xmm2 + vpxor %xmm3,%xmm12,%xmm10 + vpaddd %xmm5,%xmm14,%xmm14 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm10,%xmm10 + vpaddd %xmm7,%xmm10,%xmm10 + vmovd 24(%r8),%xmm5 + vmovd 24(%r9),%xmm0 + vpinsrd $1,24(%r10),%xmm5,%xmm5 + vpinsrd $1,24(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm14,%xmm7 + vpslld $26,%xmm14,%xmm2 + vmovdqu %xmm5,96-128(%rax) + vpaddd %xmm9,%xmm5,%xmm5 + + vpsrld $11,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm14,%xmm2 + vpaddd 64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm14,%xmm2 + vpandn %xmm8,%xmm14,%xmm0 + vpand %xmm15,%xmm14,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm10,%xmm9 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm10,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm10,%xmm11,%xmm3 + + vpxor %xmm1,%xmm9,%xmm9 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm10,%xmm1 + + vpslld $19,%xmm10,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm9,%xmm7 + + vpsrld $22,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm10,%xmm2 + vpxor %xmm4,%xmm11,%xmm9 + vpaddd %xmm5,%xmm13,%xmm13 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm9,%xmm9 + vpaddd %xmm7,%xmm9,%xmm9 + vmovd 28(%r8),%xmm5 + vmovd 28(%r9),%xmm0 + vpinsrd $1,28(%r10),%xmm5,%xmm5 + vpinsrd $1,28(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm13,%xmm7 + vpslld $26,%xmm13,%xmm2 + vmovdqu %xmm5,112-128(%rax) + vpaddd %xmm8,%xmm5,%xmm5 + + vpsrld $11,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm13,%xmm2 + vpaddd 96(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm13,%xmm2 + vpandn %xmm15,%xmm13,%xmm0 + vpand %xmm14,%xmm13,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm9,%xmm8 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm9,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm9,%xmm10,%xmm4 + + vpxor %xmm1,%xmm8,%xmm8 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm9,%xmm1 + + vpslld $19,%xmm9,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm8,%xmm7 + + vpsrld $22,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm9,%xmm2 + vpxor %xmm3,%xmm10,%xmm8 + vpaddd %xmm5,%xmm12,%xmm12 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm8,%xmm8 + vpaddd %xmm7,%xmm8,%xmm8 + addq $256,%rbp + vmovd 32(%r8),%xmm5 + vmovd 32(%r9),%xmm0 + vpinsrd $1,32(%r10),%xmm5,%xmm5 + vpinsrd $1,32(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm12,%xmm7 + vpslld $26,%xmm12,%xmm2 + vmovdqu %xmm5,128-128(%rax) + vpaddd %xmm15,%xmm5,%xmm5 + + vpsrld $11,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm12,%xmm2 + vpaddd -128(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm12,%xmm2 + vpandn %xmm14,%xmm12,%xmm0 + vpand %xmm13,%xmm12,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm8,%xmm15 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm8,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm8,%xmm9,%xmm3 + + vpxor %xmm1,%xmm15,%xmm15 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm8,%xmm1 + + vpslld $19,%xmm8,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm15,%xmm7 + + vpsrld $22,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm8,%xmm2 + vpxor %xmm4,%xmm9,%xmm15 + vpaddd %xmm5,%xmm11,%xmm11 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm15,%xmm15 + vpaddd %xmm7,%xmm15,%xmm15 + vmovd 36(%r8),%xmm5 + vmovd 36(%r9),%xmm0 + vpinsrd $1,36(%r10),%xmm5,%xmm5 + vpinsrd $1,36(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm11,%xmm7 + vpslld $26,%xmm11,%xmm2 + vmovdqu %xmm5,144-128(%rax) + vpaddd %xmm14,%xmm5,%xmm5 + + vpsrld $11,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm11,%xmm2 + vpaddd -96(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm11,%xmm2 + vpandn %xmm13,%xmm11,%xmm0 + vpand %xmm12,%xmm11,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm15,%xmm14 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm15,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm15,%xmm8,%xmm4 + + vpxor %xmm1,%xmm14,%xmm14 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm15,%xmm1 + + vpslld $19,%xmm15,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm14,%xmm7 + + vpsrld $22,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm15,%xmm2 + vpxor %xmm3,%xmm8,%xmm14 + vpaddd %xmm5,%xmm10,%xmm10 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm14,%xmm14 + vpaddd %xmm7,%xmm14,%xmm14 + vmovd 40(%r8),%xmm5 + vmovd 40(%r9),%xmm0 + vpinsrd $1,40(%r10),%xmm5,%xmm5 + vpinsrd $1,40(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm10,%xmm7 + vpslld $26,%xmm10,%xmm2 + vmovdqu %xmm5,160-128(%rax) + vpaddd %xmm13,%xmm5,%xmm5 + + vpsrld $11,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm10,%xmm2 + vpaddd -64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm10,%xmm2 + vpandn %xmm12,%xmm10,%xmm0 + vpand %xmm11,%xmm10,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm14,%xmm13 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm14,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm14,%xmm15,%xmm3 + + vpxor %xmm1,%xmm13,%xmm13 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm14,%xmm1 + + vpslld $19,%xmm14,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm13,%xmm7 + + vpsrld $22,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm14,%xmm2 + vpxor %xmm4,%xmm15,%xmm13 + vpaddd %xmm5,%xmm9,%xmm9 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm13,%xmm13 + vpaddd %xmm7,%xmm13,%xmm13 + vmovd 44(%r8),%xmm5 + vmovd 44(%r9),%xmm0 + vpinsrd $1,44(%r10),%xmm5,%xmm5 + vpinsrd $1,44(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm9,%xmm7 + vpslld $26,%xmm9,%xmm2 + vmovdqu %xmm5,176-128(%rax) + vpaddd %xmm12,%xmm5,%xmm5 + + vpsrld $11,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm9,%xmm2 + vpaddd -32(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm9,%xmm2 + vpandn %xmm11,%xmm9,%xmm0 + vpand %xmm10,%xmm9,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm13,%xmm12 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm13,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm13,%xmm14,%xmm4 + + vpxor %xmm1,%xmm12,%xmm12 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm13,%xmm1 + + vpslld $19,%xmm13,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm12,%xmm7 + + vpsrld $22,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm13,%xmm2 + vpxor %xmm3,%xmm14,%xmm12 + vpaddd %xmm5,%xmm8,%xmm8 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm12,%xmm12 + vpaddd %xmm7,%xmm12,%xmm12 + vmovd 48(%r8),%xmm5 + vmovd 48(%r9),%xmm0 + vpinsrd $1,48(%r10),%xmm5,%xmm5 + vpinsrd $1,48(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm8,%xmm7 + vpslld $26,%xmm8,%xmm2 + vmovdqu %xmm5,192-128(%rax) + vpaddd %xmm11,%xmm5,%xmm5 + + vpsrld $11,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm8,%xmm2 + vpaddd 0(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm8,%xmm2 + vpandn %xmm10,%xmm8,%xmm0 + vpand %xmm9,%xmm8,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm12,%xmm11 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm12,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm12,%xmm13,%xmm3 + + vpxor %xmm1,%xmm11,%xmm11 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm12,%xmm1 + + vpslld $19,%xmm12,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm11,%xmm7 + + vpsrld $22,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm12,%xmm2 + vpxor %xmm4,%xmm13,%xmm11 + vpaddd %xmm5,%xmm15,%xmm15 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm11,%xmm11 + vpaddd %xmm7,%xmm11,%xmm11 + vmovd 52(%r8),%xmm5 + vmovd 52(%r9),%xmm0 + vpinsrd $1,52(%r10),%xmm5,%xmm5 + vpinsrd $1,52(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm15,%xmm7 + vpslld $26,%xmm15,%xmm2 + vmovdqu %xmm5,208-128(%rax) + vpaddd %xmm10,%xmm5,%xmm5 + + vpsrld $11,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm15,%xmm2 + vpaddd 32(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm15,%xmm2 + vpandn %xmm9,%xmm15,%xmm0 + vpand %xmm8,%xmm15,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm11,%xmm10 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm11,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm11,%xmm12,%xmm4 + + vpxor %xmm1,%xmm10,%xmm10 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm11,%xmm1 + + vpslld $19,%xmm11,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm10,%xmm7 + + vpsrld $22,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm11,%xmm2 + vpxor %xmm3,%xmm12,%xmm10 + vpaddd %xmm5,%xmm14,%xmm14 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm10,%xmm10 + vpaddd %xmm7,%xmm10,%xmm10 + vmovd 56(%r8),%xmm5 + vmovd 56(%r9),%xmm0 + vpinsrd $1,56(%r10),%xmm5,%xmm5 + vpinsrd $1,56(%r11),%xmm0,%xmm0 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm14,%xmm7 + vpslld $26,%xmm14,%xmm2 + vmovdqu %xmm5,224-128(%rax) + vpaddd %xmm9,%xmm5,%xmm5 + + vpsrld $11,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm14,%xmm2 + vpaddd 64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm14,%xmm2 + vpandn %xmm8,%xmm14,%xmm0 + vpand %xmm15,%xmm14,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm10,%xmm9 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm10,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm10,%xmm11,%xmm3 + + vpxor %xmm1,%xmm9,%xmm9 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm10,%xmm1 + + vpslld $19,%xmm10,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm9,%xmm7 + + vpsrld $22,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm10,%xmm2 + vpxor %xmm4,%xmm11,%xmm9 + vpaddd %xmm5,%xmm13,%xmm13 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm9,%xmm9 + vpaddd %xmm7,%xmm9,%xmm9 + vmovd 60(%r8),%xmm5 + leaq 64(%r8),%r8 + vmovd 60(%r9),%xmm0 + leaq 64(%r9),%r9 + vpinsrd $1,60(%r10),%xmm5,%xmm5 + leaq 64(%r10),%r10 + vpinsrd $1,60(%r11),%xmm0,%xmm0 + leaq 64(%r11),%r11 + vpunpckldq %xmm0,%xmm5,%xmm5 + vpshufb %xmm6,%xmm5,%xmm5 + vpsrld $6,%xmm13,%xmm7 + vpslld $26,%xmm13,%xmm2 + vmovdqu %xmm5,240-128(%rax) + vpaddd %xmm8,%xmm5,%xmm5 + + vpsrld $11,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm13,%xmm2 + vpaddd 96(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + prefetcht0 63(%r8) + vpslld $7,%xmm13,%xmm2 + vpandn %xmm15,%xmm13,%xmm0 + vpand %xmm14,%xmm13,%xmm4 + prefetcht0 63(%r9) + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm9,%xmm8 + vpxor %xmm2,%xmm7,%xmm7 + prefetcht0 63(%r10) + vpslld $30,%xmm9,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm9,%xmm10,%xmm4 + prefetcht0 63(%r11) + vpxor %xmm1,%xmm8,%xmm8 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm9,%xmm1 + + vpslld $19,%xmm9,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm8,%xmm7 + + vpsrld $22,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm9,%xmm2 + vpxor %xmm3,%xmm10,%xmm8 + vpaddd %xmm5,%xmm12,%xmm12 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm8,%xmm8 + vpaddd %xmm7,%xmm8,%xmm8 + addq $256,%rbp + vmovdqu 0-128(%rax),%xmm5 + movl $3,%ecx + jmp L$oop_16_xx_avx +.p2align 5 +L$oop_16_xx_avx: + vmovdqu 16-128(%rax),%xmm6 + vpaddd 144-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 224-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm12,%xmm7 + vpslld $26,%xmm12,%xmm2 + vmovdqu %xmm5,0-128(%rax) + vpaddd %xmm15,%xmm5,%xmm5 + + vpsrld $11,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm12,%xmm2 + vpaddd -128(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm12,%xmm2 + vpandn %xmm14,%xmm12,%xmm0 + vpand %xmm13,%xmm12,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm8,%xmm15 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm8,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm8,%xmm9,%xmm3 + + vpxor %xmm1,%xmm15,%xmm15 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm8,%xmm1 + + vpslld $19,%xmm8,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm15,%xmm7 + + vpsrld $22,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm8,%xmm2 + vpxor %xmm4,%xmm9,%xmm15 + vpaddd %xmm5,%xmm11,%xmm11 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm15,%xmm15 + vpaddd %xmm7,%xmm15,%xmm15 + vmovdqu 32-128(%rax),%xmm5 + vpaddd 160-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 240-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm11,%xmm7 + vpslld $26,%xmm11,%xmm2 + vmovdqu %xmm6,16-128(%rax) + vpaddd %xmm14,%xmm6,%xmm6 + + vpsrld $11,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm11,%xmm2 + vpaddd -96(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm11,%xmm2 + vpandn %xmm13,%xmm11,%xmm0 + vpand %xmm12,%xmm11,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm15,%xmm14 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm15,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm15,%xmm8,%xmm4 + + vpxor %xmm1,%xmm14,%xmm14 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm15,%xmm1 + + vpslld $19,%xmm15,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm14,%xmm7 + + vpsrld $22,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm15,%xmm2 + vpxor %xmm3,%xmm8,%xmm14 + vpaddd %xmm6,%xmm10,%xmm10 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm14,%xmm14 + vpaddd %xmm7,%xmm14,%xmm14 + vmovdqu 48-128(%rax),%xmm6 + vpaddd 176-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 0-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm10,%xmm7 + vpslld $26,%xmm10,%xmm2 + vmovdqu %xmm5,32-128(%rax) + vpaddd %xmm13,%xmm5,%xmm5 + + vpsrld $11,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm10,%xmm2 + vpaddd -64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm10,%xmm2 + vpandn %xmm12,%xmm10,%xmm0 + vpand %xmm11,%xmm10,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm14,%xmm13 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm14,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm14,%xmm15,%xmm3 + + vpxor %xmm1,%xmm13,%xmm13 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm14,%xmm1 + + vpslld $19,%xmm14,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm13,%xmm7 + + vpsrld $22,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm14,%xmm2 + vpxor %xmm4,%xmm15,%xmm13 + vpaddd %xmm5,%xmm9,%xmm9 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm13,%xmm13 + vpaddd %xmm7,%xmm13,%xmm13 + vmovdqu 64-128(%rax),%xmm5 + vpaddd 192-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 16-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm9,%xmm7 + vpslld $26,%xmm9,%xmm2 + vmovdqu %xmm6,48-128(%rax) + vpaddd %xmm12,%xmm6,%xmm6 + + vpsrld $11,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm9,%xmm2 + vpaddd -32(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm9,%xmm2 + vpandn %xmm11,%xmm9,%xmm0 + vpand %xmm10,%xmm9,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm13,%xmm12 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm13,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm13,%xmm14,%xmm4 + + vpxor %xmm1,%xmm12,%xmm12 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm13,%xmm1 + + vpslld $19,%xmm13,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm12,%xmm7 + + vpsrld $22,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm13,%xmm2 + vpxor %xmm3,%xmm14,%xmm12 + vpaddd %xmm6,%xmm8,%xmm8 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm12,%xmm12 + vpaddd %xmm7,%xmm12,%xmm12 + vmovdqu 80-128(%rax),%xmm6 + vpaddd 208-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 32-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm8,%xmm7 + vpslld $26,%xmm8,%xmm2 + vmovdqu %xmm5,64-128(%rax) + vpaddd %xmm11,%xmm5,%xmm5 + + vpsrld $11,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm8,%xmm2 + vpaddd 0(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm8,%xmm2 + vpandn %xmm10,%xmm8,%xmm0 + vpand %xmm9,%xmm8,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm12,%xmm11 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm12,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm12,%xmm13,%xmm3 + + vpxor %xmm1,%xmm11,%xmm11 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm12,%xmm1 + + vpslld $19,%xmm12,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm11,%xmm7 + + vpsrld $22,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm12,%xmm2 + vpxor %xmm4,%xmm13,%xmm11 + vpaddd %xmm5,%xmm15,%xmm15 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm11,%xmm11 + vpaddd %xmm7,%xmm11,%xmm11 + vmovdqu 96-128(%rax),%xmm5 + vpaddd 224-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 48-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm15,%xmm7 + vpslld $26,%xmm15,%xmm2 + vmovdqu %xmm6,80-128(%rax) + vpaddd %xmm10,%xmm6,%xmm6 + + vpsrld $11,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm15,%xmm2 + vpaddd 32(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm15,%xmm2 + vpandn %xmm9,%xmm15,%xmm0 + vpand %xmm8,%xmm15,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm11,%xmm10 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm11,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm11,%xmm12,%xmm4 + + vpxor %xmm1,%xmm10,%xmm10 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm11,%xmm1 + + vpslld $19,%xmm11,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm10,%xmm7 + + vpsrld $22,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm11,%xmm2 + vpxor %xmm3,%xmm12,%xmm10 + vpaddd %xmm6,%xmm14,%xmm14 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm10,%xmm10 + vpaddd %xmm7,%xmm10,%xmm10 + vmovdqu 112-128(%rax),%xmm6 + vpaddd 240-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 64-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm14,%xmm7 + vpslld $26,%xmm14,%xmm2 + vmovdqu %xmm5,96-128(%rax) + vpaddd %xmm9,%xmm5,%xmm5 + + vpsrld $11,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm14,%xmm2 + vpaddd 64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm14,%xmm2 + vpandn %xmm8,%xmm14,%xmm0 + vpand %xmm15,%xmm14,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm10,%xmm9 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm10,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm10,%xmm11,%xmm3 + + vpxor %xmm1,%xmm9,%xmm9 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm10,%xmm1 + + vpslld $19,%xmm10,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm9,%xmm7 + + vpsrld $22,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm10,%xmm2 + vpxor %xmm4,%xmm11,%xmm9 + vpaddd %xmm5,%xmm13,%xmm13 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm9,%xmm9 + vpaddd %xmm7,%xmm9,%xmm9 + vmovdqu 128-128(%rax),%xmm5 + vpaddd 0-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 80-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm13,%xmm7 + vpslld $26,%xmm13,%xmm2 + vmovdqu %xmm6,112-128(%rax) + vpaddd %xmm8,%xmm6,%xmm6 + + vpsrld $11,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm13,%xmm2 + vpaddd 96(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm13,%xmm2 + vpandn %xmm15,%xmm13,%xmm0 + vpand %xmm14,%xmm13,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm9,%xmm8 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm9,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm9,%xmm10,%xmm4 + + vpxor %xmm1,%xmm8,%xmm8 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm9,%xmm1 + + vpslld $19,%xmm9,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm8,%xmm7 + + vpsrld $22,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm9,%xmm2 + vpxor %xmm3,%xmm10,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm8,%xmm8 + vpaddd %xmm7,%xmm8,%xmm8 + addq $256,%rbp + vmovdqu 144-128(%rax),%xmm6 + vpaddd 16-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 96-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm12,%xmm7 + vpslld $26,%xmm12,%xmm2 + vmovdqu %xmm5,128-128(%rax) + vpaddd %xmm15,%xmm5,%xmm5 + + vpsrld $11,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm12,%xmm2 + vpaddd -128(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm12,%xmm2 + vpandn %xmm14,%xmm12,%xmm0 + vpand %xmm13,%xmm12,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm8,%xmm15 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm8,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm8,%xmm9,%xmm3 + + vpxor %xmm1,%xmm15,%xmm15 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm8,%xmm1 + + vpslld $19,%xmm8,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm15,%xmm7 + + vpsrld $22,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm8,%xmm2 + vpxor %xmm4,%xmm9,%xmm15 + vpaddd %xmm5,%xmm11,%xmm11 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm15,%xmm15 + vpaddd %xmm7,%xmm15,%xmm15 + vmovdqu 160-128(%rax),%xmm5 + vpaddd 32-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 112-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm11,%xmm7 + vpslld $26,%xmm11,%xmm2 + vmovdqu %xmm6,144-128(%rax) + vpaddd %xmm14,%xmm6,%xmm6 + + vpsrld $11,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm11,%xmm2 + vpaddd -96(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm11,%xmm2 + vpandn %xmm13,%xmm11,%xmm0 + vpand %xmm12,%xmm11,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm15,%xmm14 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm15,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm15,%xmm8,%xmm4 + + vpxor %xmm1,%xmm14,%xmm14 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm15,%xmm1 + + vpslld $19,%xmm15,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm14,%xmm7 + + vpsrld $22,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm15,%xmm2 + vpxor %xmm3,%xmm8,%xmm14 + vpaddd %xmm6,%xmm10,%xmm10 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm14,%xmm14 + vpaddd %xmm7,%xmm14,%xmm14 + vmovdqu 176-128(%rax),%xmm6 + vpaddd 48-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 128-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm10,%xmm7 + vpslld $26,%xmm10,%xmm2 + vmovdqu %xmm5,160-128(%rax) + vpaddd %xmm13,%xmm5,%xmm5 + + vpsrld $11,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm10,%xmm2 + vpaddd -64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm10,%xmm2 + vpandn %xmm12,%xmm10,%xmm0 + vpand %xmm11,%xmm10,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm14,%xmm13 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm14,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm14,%xmm15,%xmm3 + + vpxor %xmm1,%xmm13,%xmm13 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm14,%xmm1 + + vpslld $19,%xmm14,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm13,%xmm7 + + vpsrld $22,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm14,%xmm2 + vpxor %xmm4,%xmm15,%xmm13 + vpaddd %xmm5,%xmm9,%xmm9 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm13,%xmm13 + vpaddd %xmm7,%xmm13,%xmm13 + vmovdqu 192-128(%rax),%xmm5 + vpaddd 64-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 144-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm9,%xmm7 + vpslld $26,%xmm9,%xmm2 + vmovdqu %xmm6,176-128(%rax) + vpaddd %xmm12,%xmm6,%xmm6 + + vpsrld $11,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm9,%xmm2 + vpaddd -32(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm9,%xmm2 + vpandn %xmm11,%xmm9,%xmm0 + vpand %xmm10,%xmm9,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm13,%xmm12 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm13,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm13,%xmm14,%xmm4 + + vpxor %xmm1,%xmm12,%xmm12 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm13,%xmm1 + + vpslld $19,%xmm13,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm12,%xmm7 + + vpsrld $22,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm13,%xmm2 + vpxor %xmm3,%xmm14,%xmm12 + vpaddd %xmm6,%xmm8,%xmm8 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm12,%xmm12 + vpaddd %xmm7,%xmm12,%xmm12 + vmovdqu 208-128(%rax),%xmm6 + vpaddd 80-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 160-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm8,%xmm7 + vpslld $26,%xmm8,%xmm2 + vmovdqu %xmm5,192-128(%rax) + vpaddd %xmm11,%xmm5,%xmm5 + + vpsrld $11,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm8,%xmm2 + vpaddd 0(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm8,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm8,%xmm2 + vpandn %xmm10,%xmm8,%xmm0 + vpand %xmm9,%xmm8,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm12,%xmm11 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm12,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm12,%xmm13,%xmm3 + + vpxor %xmm1,%xmm11,%xmm11 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm12,%xmm1 + + vpslld $19,%xmm12,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm11,%xmm7 + + vpsrld $22,%xmm12,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm12,%xmm2 + vpxor %xmm4,%xmm13,%xmm11 + vpaddd %xmm5,%xmm15,%xmm15 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm11,%xmm11 + vpaddd %xmm7,%xmm11,%xmm11 + vmovdqu 224-128(%rax),%xmm5 + vpaddd 96-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 176-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm15,%xmm7 + vpslld $26,%xmm15,%xmm2 + vmovdqu %xmm6,208-128(%rax) + vpaddd %xmm10,%xmm6,%xmm6 + + vpsrld $11,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm15,%xmm2 + vpaddd 32(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm15,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm15,%xmm2 + vpandn %xmm9,%xmm15,%xmm0 + vpand %xmm8,%xmm15,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm11,%xmm10 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm11,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm11,%xmm12,%xmm4 + + vpxor %xmm1,%xmm10,%xmm10 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm11,%xmm1 + + vpslld $19,%xmm11,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm10,%xmm7 + + vpsrld $22,%xmm11,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm11,%xmm2 + vpxor %xmm3,%xmm12,%xmm10 + vpaddd %xmm6,%xmm14,%xmm14 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm10,%xmm10 + vpaddd %xmm7,%xmm10,%xmm10 + vmovdqu 240-128(%rax),%xmm6 + vpaddd 112-128(%rax),%xmm5,%xmm5 + + vpsrld $3,%xmm6,%xmm7 + vpsrld $7,%xmm6,%xmm1 + vpslld $25,%xmm6,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm6,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm6,%xmm2 + vmovdqu 192-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm5,%xmm5 + vpxor %xmm1,%xmm3,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm5,%xmm5 + vpsrld $6,%xmm14,%xmm7 + vpslld $26,%xmm14,%xmm2 + vmovdqu %xmm5,224-128(%rax) + vpaddd %xmm9,%xmm5,%xmm5 + + vpsrld $11,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm14,%xmm2 + vpaddd 64(%rbp),%xmm5,%xmm5 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm14,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm14,%xmm2 + vpandn %xmm8,%xmm14,%xmm0 + vpand %xmm15,%xmm14,%xmm3 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm10,%xmm9 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm10,%xmm1 + vpxor %xmm3,%xmm0,%xmm0 + vpxor %xmm10,%xmm11,%xmm3 + + vpxor %xmm1,%xmm9,%xmm9 + vpaddd %xmm7,%xmm5,%xmm5 + + vpsrld $13,%xmm10,%xmm1 + + vpslld $19,%xmm10,%xmm2 + vpaddd %xmm0,%xmm5,%xmm5 + vpand %xmm3,%xmm4,%xmm4 + + vpxor %xmm1,%xmm9,%xmm7 + + vpsrld $22,%xmm10,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm10,%xmm2 + vpxor %xmm4,%xmm11,%xmm9 + vpaddd %xmm5,%xmm13,%xmm13 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm5,%xmm9,%xmm9 + vpaddd %xmm7,%xmm9,%xmm9 + vmovdqu 0-128(%rax),%xmm5 + vpaddd 128-128(%rax),%xmm6,%xmm6 + + vpsrld $3,%xmm5,%xmm7 + vpsrld $7,%xmm5,%xmm1 + vpslld $25,%xmm5,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $18,%xmm5,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $14,%xmm5,%xmm2 + vmovdqu 208-128(%rax),%xmm0 + vpsrld $10,%xmm0,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + vpsrld $17,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $15,%xmm0,%xmm2 + vpaddd %xmm7,%xmm6,%xmm6 + vpxor %xmm1,%xmm4,%xmm7 + vpsrld $19,%xmm0,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $13,%xmm0,%xmm2 + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + vpaddd %xmm7,%xmm6,%xmm6 + vpsrld $6,%xmm13,%xmm7 + vpslld $26,%xmm13,%xmm2 + vmovdqu %xmm6,240-128(%rax) + vpaddd %xmm8,%xmm6,%xmm6 + + vpsrld $11,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + vpslld $21,%xmm13,%xmm2 + vpaddd 96(%rbp),%xmm6,%xmm6 + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $25,%xmm13,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $7,%xmm13,%xmm2 + vpandn %xmm15,%xmm13,%xmm0 + vpand %xmm14,%xmm13,%xmm4 + + vpxor %xmm1,%xmm7,%xmm7 + + vpsrld $2,%xmm9,%xmm8 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $30,%xmm9,%xmm1 + vpxor %xmm4,%xmm0,%xmm0 + vpxor %xmm9,%xmm10,%xmm4 + + vpxor %xmm1,%xmm8,%xmm8 + vpaddd %xmm7,%xmm6,%xmm6 + + vpsrld $13,%xmm9,%xmm1 + + vpslld $19,%xmm9,%xmm2 + vpaddd %xmm0,%xmm6,%xmm6 + vpand %xmm4,%xmm3,%xmm3 + + vpxor %xmm1,%xmm8,%xmm7 + + vpsrld $22,%xmm9,%xmm1 + vpxor %xmm2,%xmm7,%xmm7 + + vpslld $10,%xmm9,%xmm2 + vpxor %xmm3,%xmm10,%xmm8 + vpaddd %xmm6,%xmm12,%xmm12 + + vpxor %xmm1,%xmm7,%xmm7 + vpxor %xmm2,%xmm7,%xmm7 + + vpaddd %xmm6,%xmm8,%xmm8 + vpaddd %xmm7,%xmm8,%xmm8 + addq $256,%rbp + decl %ecx + jnz L$oop_16_xx_avx + + movl $1,%ecx + leaq K256+128(%rip),%rbp + cmpl 0(%rbx),%ecx + cmovgeq %rbp,%r8 + cmpl 4(%rbx),%ecx + cmovgeq %rbp,%r9 + cmpl 8(%rbx),%ecx + cmovgeq %rbp,%r10 + cmpl 12(%rbx),%ecx + cmovgeq %rbp,%r11 + vmovdqa (%rbx),%xmm7 + vpxor %xmm0,%xmm0,%xmm0 + vmovdqa %xmm7,%xmm6 + vpcmpgtd %xmm0,%xmm6,%xmm6 + vpaddd %xmm6,%xmm7,%xmm7 + + vmovdqu 0-128(%rdi),%xmm0 + vpand %xmm6,%xmm8,%xmm8 + vmovdqu 32-128(%rdi),%xmm1 + vpand %xmm6,%xmm9,%xmm9 + vmovdqu 64-128(%rdi),%xmm2 + vpand %xmm6,%xmm10,%xmm10 + vmovdqu 96-128(%rdi),%xmm5 + vpand %xmm6,%xmm11,%xmm11 + vpaddd %xmm0,%xmm8,%xmm8 + vmovdqu 128-128(%rdi),%xmm0 + vpand %xmm6,%xmm12,%xmm12 + vpaddd %xmm1,%xmm9,%xmm9 + vmovdqu 160-128(%rdi),%xmm1 + vpand %xmm6,%xmm13,%xmm13 + vpaddd %xmm2,%xmm10,%xmm10 + vmovdqu 192-128(%rdi),%xmm2 + vpand %xmm6,%xmm14,%xmm14 + vpaddd %xmm5,%xmm11,%xmm11 + vmovdqu 224-128(%rdi),%xmm5 + vpand %xmm6,%xmm15,%xmm15 + vpaddd %xmm0,%xmm12,%xmm12 + vpaddd %xmm1,%xmm13,%xmm13 + vmovdqu %xmm8,0-128(%rdi) + vpaddd %xmm2,%xmm14,%xmm14 + vmovdqu %xmm9,32-128(%rdi) + vpaddd %xmm5,%xmm15,%xmm15 + vmovdqu %xmm10,64-128(%rdi) + vmovdqu %xmm11,96-128(%rdi) + vmovdqu %xmm12,128-128(%rdi) + vmovdqu %xmm13,160-128(%rdi) + vmovdqu %xmm14,192-128(%rdi) + vmovdqu %xmm15,224-128(%rdi) + + vmovdqu %xmm7,(%rbx) + vmovdqu L$pbswap(%rip),%xmm6 + decl %edx + jnz L$oop_avx + + movl 280(%rsp),%edx + leaq 16(%rdi),%rdi + leaq 64(%rsi),%rsi + decl %edx + jnz L$oop_grande_avx + +L$done_avx: + movq 272(%rsp),%rax + + vzeroupper + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$epilogue_avx: + .byte 0xf3,0xc3 + + + +.p2align 5 +sha256_multi_block_avx2: + +_avx2_shortcut: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $576,%rsp + andq $-256,%rsp + movq %rax,544(%rsp) + +L$body_avx2: + leaq K256+128(%rip),%rbp + leaq 128(%rdi),%rdi + +L$oop_grande_avx2: + movl %edx,552(%rsp) + xorl %edx,%edx + leaq 512(%rsp),%rbx + movq 0(%rsi),%r12 + movl 8(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,0(%rbx) + cmovleq %rbp,%r12 + movq 16(%rsi),%r13 + movl 24(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,4(%rbx) + cmovleq %rbp,%r13 + movq 32(%rsi),%r14 + movl 40(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,8(%rbx) + cmovleq %rbp,%r14 + movq 48(%rsi),%r15 + movl 56(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,12(%rbx) + cmovleq %rbp,%r15 + movq 64(%rsi),%r8 + movl 72(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,16(%rbx) + cmovleq %rbp,%r8 + movq 80(%rsi),%r9 + movl 88(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,20(%rbx) + cmovleq %rbp,%r9 + movq 96(%rsi),%r10 + movl 104(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,24(%rbx) + cmovleq %rbp,%r10 + movq 112(%rsi),%r11 + movl 120(%rsi),%ecx + cmpl %edx,%ecx + cmovgl %ecx,%edx + testl %ecx,%ecx + movl %ecx,28(%rbx) + cmovleq %rbp,%r11 + vmovdqu 0-128(%rdi),%ymm8 + leaq 128(%rsp),%rax + vmovdqu 32-128(%rdi),%ymm9 + leaq 256+128(%rsp),%rbx + vmovdqu 64-128(%rdi),%ymm10 + vmovdqu 96-128(%rdi),%ymm11 + vmovdqu 128-128(%rdi),%ymm12 + vmovdqu 160-128(%rdi),%ymm13 + vmovdqu 192-128(%rdi),%ymm14 + vmovdqu 224-128(%rdi),%ymm15 + vmovdqu L$pbswap(%rip),%ymm6 + jmp L$oop_avx2 + +.p2align 5 +L$oop_avx2: + vpxor %ymm9,%ymm10,%ymm4 + vmovd 0(%r12),%xmm5 + vmovd 0(%r8),%xmm0 + vmovd 0(%r13),%xmm1 + vmovd 0(%r9),%xmm2 + vpinsrd $1,0(%r14),%xmm5,%xmm5 + vpinsrd $1,0(%r10),%xmm0,%xmm0 + vpinsrd $1,0(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,0(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm12,%ymm7 + vpslld $26,%ymm12,%ymm2 + vmovdqu %ymm5,0-128(%rax) + vpaddd %ymm15,%ymm5,%ymm5 + + vpsrld $11,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm12,%ymm2 + vpaddd -128(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm12,%ymm2 + vpandn %ymm14,%ymm12,%ymm0 + vpand %ymm13,%ymm12,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm8,%ymm15 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm8,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm8,%ymm9,%ymm3 + + vpxor %ymm1,%ymm15,%ymm15 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm8,%ymm1 + + vpslld $19,%ymm8,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm15,%ymm7 + + vpsrld $22,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm8,%ymm2 + vpxor %ymm4,%ymm9,%ymm15 + vpaddd %ymm5,%ymm11,%ymm11 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm15,%ymm15 + vpaddd %ymm7,%ymm15,%ymm15 + vmovd 4(%r12),%xmm5 + vmovd 4(%r8),%xmm0 + vmovd 4(%r13),%xmm1 + vmovd 4(%r9),%xmm2 + vpinsrd $1,4(%r14),%xmm5,%xmm5 + vpinsrd $1,4(%r10),%xmm0,%xmm0 + vpinsrd $1,4(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,4(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm11,%ymm7 + vpslld $26,%ymm11,%ymm2 + vmovdqu %ymm5,32-128(%rax) + vpaddd %ymm14,%ymm5,%ymm5 + + vpsrld $11,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm11,%ymm2 + vpaddd -96(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm11,%ymm2 + vpandn %ymm13,%ymm11,%ymm0 + vpand %ymm12,%ymm11,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm15,%ymm14 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm15,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm15,%ymm8,%ymm4 + + vpxor %ymm1,%ymm14,%ymm14 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm15,%ymm1 + + vpslld $19,%ymm15,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm14,%ymm7 + + vpsrld $22,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm15,%ymm2 + vpxor %ymm3,%ymm8,%ymm14 + vpaddd %ymm5,%ymm10,%ymm10 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm14,%ymm14 + vpaddd %ymm7,%ymm14,%ymm14 + vmovd 8(%r12),%xmm5 + vmovd 8(%r8),%xmm0 + vmovd 8(%r13),%xmm1 + vmovd 8(%r9),%xmm2 + vpinsrd $1,8(%r14),%xmm5,%xmm5 + vpinsrd $1,8(%r10),%xmm0,%xmm0 + vpinsrd $1,8(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,8(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm10,%ymm7 + vpslld $26,%ymm10,%ymm2 + vmovdqu %ymm5,64-128(%rax) + vpaddd %ymm13,%ymm5,%ymm5 + + vpsrld $11,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm10,%ymm2 + vpaddd -64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm10,%ymm2 + vpandn %ymm12,%ymm10,%ymm0 + vpand %ymm11,%ymm10,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm14,%ymm13 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm14,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm14,%ymm15,%ymm3 + + vpxor %ymm1,%ymm13,%ymm13 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm14,%ymm1 + + vpslld $19,%ymm14,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm13,%ymm7 + + vpsrld $22,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm14,%ymm2 + vpxor %ymm4,%ymm15,%ymm13 + vpaddd %ymm5,%ymm9,%ymm9 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm13,%ymm13 + vpaddd %ymm7,%ymm13,%ymm13 + vmovd 12(%r12),%xmm5 + vmovd 12(%r8),%xmm0 + vmovd 12(%r13),%xmm1 + vmovd 12(%r9),%xmm2 + vpinsrd $1,12(%r14),%xmm5,%xmm5 + vpinsrd $1,12(%r10),%xmm0,%xmm0 + vpinsrd $1,12(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,12(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm9,%ymm7 + vpslld $26,%ymm9,%ymm2 + vmovdqu %ymm5,96-128(%rax) + vpaddd %ymm12,%ymm5,%ymm5 + + vpsrld $11,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm9,%ymm2 + vpaddd -32(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm9,%ymm2 + vpandn %ymm11,%ymm9,%ymm0 + vpand %ymm10,%ymm9,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm13,%ymm12 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm13,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm13,%ymm14,%ymm4 + + vpxor %ymm1,%ymm12,%ymm12 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm13,%ymm1 + + vpslld $19,%ymm13,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm12,%ymm7 + + vpsrld $22,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm13,%ymm2 + vpxor %ymm3,%ymm14,%ymm12 + vpaddd %ymm5,%ymm8,%ymm8 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm12,%ymm12 + vpaddd %ymm7,%ymm12,%ymm12 + vmovd 16(%r12),%xmm5 + vmovd 16(%r8),%xmm0 + vmovd 16(%r13),%xmm1 + vmovd 16(%r9),%xmm2 + vpinsrd $1,16(%r14),%xmm5,%xmm5 + vpinsrd $1,16(%r10),%xmm0,%xmm0 + vpinsrd $1,16(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,16(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm8,%ymm7 + vpslld $26,%ymm8,%ymm2 + vmovdqu %ymm5,128-128(%rax) + vpaddd %ymm11,%ymm5,%ymm5 + + vpsrld $11,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm8,%ymm2 + vpaddd 0(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm8,%ymm2 + vpandn %ymm10,%ymm8,%ymm0 + vpand %ymm9,%ymm8,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm12,%ymm11 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm12,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm12,%ymm13,%ymm3 + + vpxor %ymm1,%ymm11,%ymm11 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm12,%ymm1 + + vpslld $19,%ymm12,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm11,%ymm7 + + vpsrld $22,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm12,%ymm2 + vpxor %ymm4,%ymm13,%ymm11 + vpaddd %ymm5,%ymm15,%ymm15 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm11,%ymm11 + vpaddd %ymm7,%ymm11,%ymm11 + vmovd 20(%r12),%xmm5 + vmovd 20(%r8),%xmm0 + vmovd 20(%r13),%xmm1 + vmovd 20(%r9),%xmm2 + vpinsrd $1,20(%r14),%xmm5,%xmm5 + vpinsrd $1,20(%r10),%xmm0,%xmm0 + vpinsrd $1,20(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,20(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm15,%ymm7 + vpslld $26,%ymm15,%ymm2 + vmovdqu %ymm5,160-128(%rax) + vpaddd %ymm10,%ymm5,%ymm5 + + vpsrld $11,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm15,%ymm2 + vpaddd 32(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm15,%ymm2 + vpandn %ymm9,%ymm15,%ymm0 + vpand %ymm8,%ymm15,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm11,%ymm10 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm11,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm11,%ymm12,%ymm4 + + vpxor %ymm1,%ymm10,%ymm10 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm11,%ymm1 + + vpslld $19,%ymm11,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm10,%ymm7 + + vpsrld $22,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm11,%ymm2 + vpxor %ymm3,%ymm12,%ymm10 + vpaddd %ymm5,%ymm14,%ymm14 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm10,%ymm10 + vpaddd %ymm7,%ymm10,%ymm10 + vmovd 24(%r12),%xmm5 + vmovd 24(%r8),%xmm0 + vmovd 24(%r13),%xmm1 + vmovd 24(%r9),%xmm2 + vpinsrd $1,24(%r14),%xmm5,%xmm5 + vpinsrd $1,24(%r10),%xmm0,%xmm0 + vpinsrd $1,24(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,24(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm14,%ymm7 + vpslld $26,%ymm14,%ymm2 + vmovdqu %ymm5,192-128(%rax) + vpaddd %ymm9,%ymm5,%ymm5 + + vpsrld $11,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm14,%ymm2 + vpaddd 64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm14,%ymm2 + vpandn %ymm8,%ymm14,%ymm0 + vpand %ymm15,%ymm14,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm10,%ymm9 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm10,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm10,%ymm11,%ymm3 + + vpxor %ymm1,%ymm9,%ymm9 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm10,%ymm1 + + vpslld $19,%ymm10,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm9,%ymm7 + + vpsrld $22,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm10,%ymm2 + vpxor %ymm4,%ymm11,%ymm9 + vpaddd %ymm5,%ymm13,%ymm13 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm9,%ymm9 + vpaddd %ymm7,%ymm9,%ymm9 + vmovd 28(%r12),%xmm5 + vmovd 28(%r8),%xmm0 + vmovd 28(%r13),%xmm1 + vmovd 28(%r9),%xmm2 + vpinsrd $1,28(%r14),%xmm5,%xmm5 + vpinsrd $1,28(%r10),%xmm0,%xmm0 + vpinsrd $1,28(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,28(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm13,%ymm7 + vpslld $26,%ymm13,%ymm2 + vmovdqu %ymm5,224-128(%rax) + vpaddd %ymm8,%ymm5,%ymm5 + + vpsrld $11,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm13,%ymm2 + vpaddd 96(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm13,%ymm2 + vpandn %ymm15,%ymm13,%ymm0 + vpand %ymm14,%ymm13,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm9,%ymm8 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm9,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm9,%ymm10,%ymm4 + + vpxor %ymm1,%ymm8,%ymm8 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm9,%ymm1 + + vpslld $19,%ymm9,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm8,%ymm7 + + vpsrld $22,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm9,%ymm2 + vpxor %ymm3,%ymm10,%ymm8 + vpaddd %ymm5,%ymm12,%ymm12 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm8,%ymm8 + vpaddd %ymm7,%ymm8,%ymm8 + addq $256,%rbp + vmovd 32(%r12),%xmm5 + vmovd 32(%r8),%xmm0 + vmovd 32(%r13),%xmm1 + vmovd 32(%r9),%xmm2 + vpinsrd $1,32(%r14),%xmm5,%xmm5 + vpinsrd $1,32(%r10),%xmm0,%xmm0 + vpinsrd $1,32(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,32(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm12,%ymm7 + vpslld $26,%ymm12,%ymm2 + vmovdqu %ymm5,256-256-128(%rbx) + vpaddd %ymm15,%ymm5,%ymm5 + + vpsrld $11,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm12,%ymm2 + vpaddd -128(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm12,%ymm2 + vpandn %ymm14,%ymm12,%ymm0 + vpand %ymm13,%ymm12,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm8,%ymm15 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm8,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm8,%ymm9,%ymm3 + + vpxor %ymm1,%ymm15,%ymm15 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm8,%ymm1 + + vpslld $19,%ymm8,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm15,%ymm7 + + vpsrld $22,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm8,%ymm2 + vpxor %ymm4,%ymm9,%ymm15 + vpaddd %ymm5,%ymm11,%ymm11 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm15,%ymm15 + vpaddd %ymm7,%ymm15,%ymm15 + vmovd 36(%r12),%xmm5 + vmovd 36(%r8),%xmm0 + vmovd 36(%r13),%xmm1 + vmovd 36(%r9),%xmm2 + vpinsrd $1,36(%r14),%xmm5,%xmm5 + vpinsrd $1,36(%r10),%xmm0,%xmm0 + vpinsrd $1,36(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,36(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm11,%ymm7 + vpslld $26,%ymm11,%ymm2 + vmovdqu %ymm5,288-256-128(%rbx) + vpaddd %ymm14,%ymm5,%ymm5 + + vpsrld $11,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm11,%ymm2 + vpaddd -96(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm11,%ymm2 + vpandn %ymm13,%ymm11,%ymm0 + vpand %ymm12,%ymm11,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm15,%ymm14 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm15,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm15,%ymm8,%ymm4 + + vpxor %ymm1,%ymm14,%ymm14 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm15,%ymm1 + + vpslld $19,%ymm15,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm14,%ymm7 + + vpsrld $22,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm15,%ymm2 + vpxor %ymm3,%ymm8,%ymm14 + vpaddd %ymm5,%ymm10,%ymm10 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm14,%ymm14 + vpaddd %ymm7,%ymm14,%ymm14 + vmovd 40(%r12),%xmm5 + vmovd 40(%r8),%xmm0 + vmovd 40(%r13),%xmm1 + vmovd 40(%r9),%xmm2 + vpinsrd $1,40(%r14),%xmm5,%xmm5 + vpinsrd $1,40(%r10),%xmm0,%xmm0 + vpinsrd $1,40(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,40(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm10,%ymm7 + vpslld $26,%ymm10,%ymm2 + vmovdqu %ymm5,320-256-128(%rbx) + vpaddd %ymm13,%ymm5,%ymm5 + + vpsrld $11,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm10,%ymm2 + vpaddd -64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm10,%ymm2 + vpandn %ymm12,%ymm10,%ymm0 + vpand %ymm11,%ymm10,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm14,%ymm13 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm14,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm14,%ymm15,%ymm3 + + vpxor %ymm1,%ymm13,%ymm13 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm14,%ymm1 + + vpslld $19,%ymm14,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm13,%ymm7 + + vpsrld $22,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm14,%ymm2 + vpxor %ymm4,%ymm15,%ymm13 + vpaddd %ymm5,%ymm9,%ymm9 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm13,%ymm13 + vpaddd %ymm7,%ymm13,%ymm13 + vmovd 44(%r12),%xmm5 + vmovd 44(%r8),%xmm0 + vmovd 44(%r13),%xmm1 + vmovd 44(%r9),%xmm2 + vpinsrd $1,44(%r14),%xmm5,%xmm5 + vpinsrd $1,44(%r10),%xmm0,%xmm0 + vpinsrd $1,44(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,44(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm9,%ymm7 + vpslld $26,%ymm9,%ymm2 + vmovdqu %ymm5,352-256-128(%rbx) + vpaddd %ymm12,%ymm5,%ymm5 + + vpsrld $11,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm9,%ymm2 + vpaddd -32(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm9,%ymm2 + vpandn %ymm11,%ymm9,%ymm0 + vpand %ymm10,%ymm9,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm13,%ymm12 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm13,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm13,%ymm14,%ymm4 + + vpxor %ymm1,%ymm12,%ymm12 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm13,%ymm1 + + vpslld $19,%ymm13,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm12,%ymm7 + + vpsrld $22,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm13,%ymm2 + vpxor %ymm3,%ymm14,%ymm12 + vpaddd %ymm5,%ymm8,%ymm8 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm12,%ymm12 + vpaddd %ymm7,%ymm12,%ymm12 + vmovd 48(%r12),%xmm5 + vmovd 48(%r8),%xmm0 + vmovd 48(%r13),%xmm1 + vmovd 48(%r9),%xmm2 + vpinsrd $1,48(%r14),%xmm5,%xmm5 + vpinsrd $1,48(%r10),%xmm0,%xmm0 + vpinsrd $1,48(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,48(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm8,%ymm7 + vpslld $26,%ymm8,%ymm2 + vmovdqu %ymm5,384-256-128(%rbx) + vpaddd %ymm11,%ymm5,%ymm5 + + vpsrld $11,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm8,%ymm2 + vpaddd 0(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm8,%ymm2 + vpandn %ymm10,%ymm8,%ymm0 + vpand %ymm9,%ymm8,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm12,%ymm11 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm12,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm12,%ymm13,%ymm3 + + vpxor %ymm1,%ymm11,%ymm11 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm12,%ymm1 + + vpslld $19,%ymm12,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm11,%ymm7 + + vpsrld $22,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm12,%ymm2 + vpxor %ymm4,%ymm13,%ymm11 + vpaddd %ymm5,%ymm15,%ymm15 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm11,%ymm11 + vpaddd %ymm7,%ymm11,%ymm11 + vmovd 52(%r12),%xmm5 + vmovd 52(%r8),%xmm0 + vmovd 52(%r13),%xmm1 + vmovd 52(%r9),%xmm2 + vpinsrd $1,52(%r14),%xmm5,%xmm5 + vpinsrd $1,52(%r10),%xmm0,%xmm0 + vpinsrd $1,52(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,52(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm15,%ymm7 + vpslld $26,%ymm15,%ymm2 + vmovdqu %ymm5,416-256-128(%rbx) + vpaddd %ymm10,%ymm5,%ymm5 + + vpsrld $11,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm15,%ymm2 + vpaddd 32(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm15,%ymm2 + vpandn %ymm9,%ymm15,%ymm0 + vpand %ymm8,%ymm15,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm11,%ymm10 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm11,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm11,%ymm12,%ymm4 + + vpxor %ymm1,%ymm10,%ymm10 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm11,%ymm1 + + vpslld $19,%ymm11,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm10,%ymm7 + + vpsrld $22,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm11,%ymm2 + vpxor %ymm3,%ymm12,%ymm10 + vpaddd %ymm5,%ymm14,%ymm14 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm10,%ymm10 + vpaddd %ymm7,%ymm10,%ymm10 + vmovd 56(%r12),%xmm5 + vmovd 56(%r8),%xmm0 + vmovd 56(%r13),%xmm1 + vmovd 56(%r9),%xmm2 + vpinsrd $1,56(%r14),%xmm5,%xmm5 + vpinsrd $1,56(%r10),%xmm0,%xmm0 + vpinsrd $1,56(%r15),%xmm1,%xmm1 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,56(%r11),%xmm2,%xmm2 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm14,%ymm7 + vpslld $26,%ymm14,%ymm2 + vmovdqu %ymm5,448-256-128(%rbx) + vpaddd %ymm9,%ymm5,%ymm5 + + vpsrld $11,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm14,%ymm2 + vpaddd 64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm14,%ymm2 + vpandn %ymm8,%ymm14,%ymm0 + vpand %ymm15,%ymm14,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm10,%ymm9 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm10,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm10,%ymm11,%ymm3 + + vpxor %ymm1,%ymm9,%ymm9 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm10,%ymm1 + + vpslld $19,%ymm10,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm9,%ymm7 + + vpsrld $22,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm10,%ymm2 + vpxor %ymm4,%ymm11,%ymm9 + vpaddd %ymm5,%ymm13,%ymm13 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm9,%ymm9 + vpaddd %ymm7,%ymm9,%ymm9 + vmovd 60(%r12),%xmm5 + leaq 64(%r12),%r12 + vmovd 60(%r8),%xmm0 + leaq 64(%r8),%r8 + vmovd 60(%r13),%xmm1 + leaq 64(%r13),%r13 + vmovd 60(%r9),%xmm2 + leaq 64(%r9),%r9 + vpinsrd $1,60(%r14),%xmm5,%xmm5 + leaq 64(%r14),%r14 + vpinsrd $1,60(%r10),%xmm0,%xmm0 + leaq 64(%r10),%r10 + vpinsrd $1,60(%r15),%xmm1,%xmm1 + leaq 64(%r15),%r15 + vpunpckldq %ymm1,%ymm5,%ymm5 + vpinsrd $1,60(%r11),%xmm2,%xmm2 + leaq 64(%r11),%r11 + vpunpckldq %ymm2,%ymm0,%ymm0 + vinserti128 $1,%xmm0,%ymm5,%ymm5 + vpshufb %ymm6,%ymm5,%ymm5 + vpsrld $6,%ymm13,%ymm7 + vpslld $26,%ymm13,%ymm2 + vmovdqu %ymm5,480-256-128(%rbx) + vpaddd %ymm8,%ymm5,%ymm5 + + vpsrld $11,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm13,%ymm2 + vpaddd 96(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + prefetcht0 63(%r12) + vpslld $7,%ymm13,%ymm2 + vpandn %ymm15,%ymm13,%ymm0 + vpand %ymm14,%ymm13,%ymm4 + prefetcht0 63(%r13) + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm9,%ymm8 + vpxor %ymm2,%ymm7,%ymm7 + prefetcht0 63(%r14) + vpslld $30,%ymm9,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm9,%ymm10,%ymm4 + prefetcht0 63(%r15) + vpxor %ymm1,%ymm8,%ymm8 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm9,%ymm1 + prefetcht0 63(%r8) + vpslld $19,%ymm9,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm4,%ymm3,%ymm3 + prefetcht0 63(%r9) + vpxor %ymm1,%ymm8,%ymm7 + + vpsrld $22,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + prefetcht0 63(%r10) + vpslld $10,%ymm9,%ymm2 + vpxor %ymm3,%ymm10,%ymm8 + vpaddd %ymm5,%ymm12,%ymm12 + prefetcht0 63(%r11) + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm8,%ymm8 + vpaddd %ymm7,%ymm8,%ymm8 + addq $256,%rbp + vmovdqu 0-128(%rax),%ymm5 + movl $3,%ecx + jmp L$oop_16_xx_avx2 +.p2align 5 +L$oop_16_xx_avx2: + vmovdqu 32-128(%rax),%ymm6 + vpaddd 288-256-128(%rbx),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 448-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm12,%ymm7 + vpslld $26,%ymm12,%ymm2 + vmovdqu %ymm5,0-128(%rax) + vpaddd %ymm15,%ymm5,%ymm5 + + vpsrld $11,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm12,%ymm2 + vpaddd -128(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm12,%ymm2 + vpandn %ymm14,%ymm12,%ymm0 + vpand %ymm13,%ymm12,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm8,%ymm15 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm8,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm8,%ymm9,%ymm3 + + vpxor %ymm1,%ymm15,%ymm15 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm8,%ymm1 + + vpslld $19,%ymm8,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm15,%ymm7 + + vpsrld $22,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm8,%ymm2 + vpxor %ymm4,%ymm9,%ymm15 + vpaddd %ymm5,%ymm11,%ymm11 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm15,%ymm15 + vpaddd %ymm7,%ymm15,%ymm15 + vmovdqu 64-128(%rax),%ymm5 + vpaddd 320-256-128(%rbx),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 480-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm11,%ymm7 + vpslld $26,%ymm11,%ymm2 + vmovdqu %ymm6,32-128(%rax) + vpaddd %ymm14,%ymm6,%ymm6 + + vpsrld $11,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm11,%ymm2 + vpaddd -96(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm11,%ymm2 + vpandn %ymm13,%ymm11,%ymm0 + vpand %ymm12,%ymm11,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm15,%ymm14 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm15,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm15,%ymm8,%ymm4 + + vpxor %ymm1,%ymm14,%ymm14 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm15,%ymm1 + + vpslld $19,%ymm15,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm14,%ymm7 + + vpsrld $22,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm15,%ymm2 + vpxor %ymm3,%ymm8,%ymm14 + vpaddd %ymm6,%ymm10,%ymm10 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm14,%ymm14 + vpaddd %ymm7,%ymm14,%ymm14 + vmovdqu 96-128(%rax),%ymm6 + vpaddd 352-256-128(%rbx),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 0-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm10,%ymm7 + vpslld $26,%ymm10,%ymm2 + vmovdqu %ymm5,64-128(%rax) + vpaddd %ymm13,%ymm5,%ymm5 + + vpsrld $11,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm10,%ymm2 + vpaddd -64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm10,%ymm2 + vpandn %ymm12,%ymm10,%ymm0 + vpand %ymm11,%ymm10,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm14,%ymm13 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm14,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm14,%ymm15,%ymm3 + + vpxor %ymm1,%ymm13,%ymm13 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm14,%ymm1 + + vpslld $19,%ymm14,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm13,%ymm7 + + vpsrld $22,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm14,%ymm2 + vpxor %ymm4,%ymm15,%ymm13 + vpaddd %ymm5,%ymm9,%ymm9 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm13,%ymm13 + vpaddd %ymm7,%ymm13,%ymm13 + vmovdqu 128-128(%rax),%ymm5 + vpaddd 384-256-128(%rbx),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 32-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm9,%ymm7 + vpslld $26,%ymm9,%ymm2 + vmovdqu %ymm6,96-128(%rax) + vpaddd %ymm12,%ymm6,%ymm6 + + vpsrld $11,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm9,%ymm2 + vpaddd -32(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm9,%ymm2 + vpandn %ymm11,%ymm9,%ymm0 + vpand %ymm10,%ymm9,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm13,%ymm12 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm13,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm13,%ymm14,%ymm4 + + vpxor %ymm1,%ymm12,%ymm12 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm13,%ymm1 + + vpslld $19,%ymm13,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm12,%ymm7 + + vpsrld $22,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm13,%ymm2 + vpxor %ymm3,%ymm14,%ymm12 + vpaddd %ymm6,%ymm8,%ymm8 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm12,%ymm12 + vpaddd %ymm7,%ymm12,%ymm12 + vmovdqu 160-128(%rax),%ymm6 + vpaddd 416-256-128(%rbx),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 64-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm8,%ymm7 + vpslld $26,%ymm8,%ymm2 + vmovdqu %ymm5,128-128(%rax) + vpaddd %ymm11,%ymm5,%ymm5 + + vpsrld $11,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm8,%ymm2 + vpaddd 0(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm8,%ymm2 + vpandn %ymm10,%ymm8,%ymm0 + vpand %ymm9,%ymm8,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm12,%ymm11 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm12,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm12,%ymm13,%ymm3 + + vpxor %ymm1,%ymm11,%ymm11 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm12,%ymm1 + + vpslld $19,%ymm12,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm11,%ymm7 + + vpsrld $22,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm12,%ymm2 + vpxor %ymm4,%ymm13,%ymm11 + vpaddd %ymm5,%ymm15,%ymm15 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm11,%ymm11 + vpaddd %ymm7,%ymm11,%ymm11 + vmovdqu 192-128(%rax),%ymm5 + vpaddd 448-256-128(%rbx),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 96-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm15,%ymm7 + vpslld $26,%ymm15,%ymm2 + vmovdqu %ymm6,160-128(%rax) + vpaddd %ymm10,%ymm6,%ymm6 + + vpsrld $11,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm15,%ymm2 + vpaddd 32(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm15,%ymm2 + vpandn %ymm9,%ymm15,%ymm0 + vpand %ymm8,%ymm15,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm11,%ymm10 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm11,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm11,%ymm12,%ymm4 + + vpxor %ymm1,%ymm10,%ymm10 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm11,%ymm1 + + vpslld $19,%ymm11,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm10,%ymm7 + + vpsrld $22,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm11,%ymm2 + vpxor %ymm3,%ymm12,%ymm10 + vpaddd %ymm6,%ymm14,%ymm14 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm10,%ymm10 + vpaddd %ymm7,%ymm10,%ymm10 + vmovdqu 224-128(%rax),%ymm6 + vpaddd 480-256-128(%rbx),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 128-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm14,%ymm7 + vpslld $26,%ymm14,%ymm2 + vmovdqu %ymm5,192-128(%rax) + vpaddd %ymm9,%ymm5,%ymm5 + + vpsrld $11,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm14,%ymm2 + vpaddd 64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm14,%ymm2 + vpandn %ymm8,%ymm14,%ymm0 + vpand %ymm15,%ymm14,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm10,%ymm9 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm10,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm10,%ymm11,%ymm3 + + vpxor %ymm1,%ymm9,%ymm9 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm10,%ymm1 + + vpslld $19,%ymm10,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm9,%ymm7 + + vpsrld $22,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm10,%ymm2 + vpxor %ymm4,%ymm11,%ymm9 + vpaddd %ymm5,%ymm13,%ymm13 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm9,%ymm9 + vpaddd %ymm7,%ymm9,%ymm9 + vmovdqu 256-256-128(%rbx),%ymm5 + vpaddd 0-128(%rax),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 160-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm13,%ymm7 + vpslld $26,%ymm13,%ymm2 + vmovdqu %ymm6,224-128(%rax) + vpaddd %ymm8,%ymm6,%ymm6 + + vpsrld $11,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm13,%ymm2 + vpaddd 96(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm13,%ymm2 + vpandn %ymm15,%ymm13,%ymm0 + vpand %ymm14,%ymm13,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm9,%ymm8 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm9,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm9,%ymm10,%ymm4 + + vpxor %ymm1,%ymm8,%ymm8 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm9,%ymm1 + + vpslld $19,%ymm9,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm8,%ymm7 + + vpsrld $22,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm9,%ymm2 + vpxor %ymm3,%ymm10,%ymm8 + vpaddd %ymm6,%ymm12,%ymm12 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm8,%ymm8 + vpaddd %ymm7,%ymm8,%ymm8 + addq $256,%rbp + vmovdqu 288-256-128(%rbx),%ymm6 + vpaddd 32-128(%rax),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 192-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm12,%ymm7 + vpslld $26,%ymm12,%ymm2 + vmovdqu %ymm5,256-256-128(%rbx) + vpaddd %ymm15,%ymm5,%ymm5 + + vpsrld $11,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm12,%ymm2 + vpaddd -128(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm12,%ymm2 + vpandn %ymm14,%ymm12,%ymm0 + vpand %ymm13,%ymm12,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm8,%ymm15 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm8,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm8,%ymm9,%ymm3 + + vpxor %ymm1,%ymm15,%ymm15 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm8,%ymm1 + + vpslld $19,%ymm8,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm15,%ymm7 + + vpsrld $22,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm8,%ymm2 + vpxor %ymm4,%ymm9,%ymm15 + vpaddd %ymm5,%ymm11,%ymm11 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm15,%ymm15 + vpaddd %ymm7,%ymm15,%ymm15 + vmovdqu 320-256-128(%rbx),%ymm5 + vpaddd 64-128(%rax),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 224-128(%rax),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm11,%ymm7 + vpslld $26,%ymm11,%ymm2 + vmovdqu %ymm6,288-256-128(%rbx) + vpaddd %ymm14,%ymm6,%ymm6 + + vpsrld $11,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm11,%ymm2 + vpaddd -96(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm11,%ymm2 + vpandn %ymm13,%ymm11,%ymm0 + vpand %ymm12,%ymm11,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm15,%ymm14 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm15,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm15,%ymm8,%ymm4 + + vpxor %ymm1,%ymm14,%ymm14 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm15,%ymm1 + + vpslld $19,%ymm15,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm14,%ymm7 + + vpsrld $22,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm15,%ymm2 + vpxor %ymm3,%ymm8,%ymm14 + vpaddd %ymm6,%ymm10,%ymm10 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm14,%ymm14 + vpaddd %ymm7,%ymm14,%ymm14 + vmovdqu 352-256-128(%rbx),%ymm6 + vpaddd 96-128(%rax),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 256-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm10,%ymm7 + vpslld $26,%ymm10,%ymm2 + vmovdqu %ymm5,320-256-128(%rbx) + vpaddd %ymm13,%ymm5,%ymm5 + + vpsrld $11,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm10,%ymm2 + vpaddd -64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm10,%ymm2 + vpandn %ymm12,%ymm10,%ymm0 + vpand %ymm11,%ymm10,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm14,%ymm13 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm14,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm14,%ymm15,%ymm3 + + vpxor %ymm1,%ymm13,%ymm13 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm14,%ymm1 + + vpslld $19,%ymm14,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm13,%ymm7 + + vpsrld $22,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm14,%ymm2 + vpxor %ymm4,%ymm15,%ymm13 + vpaddd %ymm5,%ymm9,%ymm9 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm13,%ymm13 + vpaddd %ymm7,%ymm13,%ymm13 + vmovdqu 384-256-128(%rbx),%ymm5 + vpaddd 128-128(%rax),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 288-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm9,%ymm7 + vpslld $26,%ymm9,%ymm2 + vmovdqu %ymm6,352-256-128(%rbx) + vpaddd %ymm12,%ymm6,%ymm6 + + vpsrld $11,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm9,%ymm2 + vpaddd -32(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm9,%ymm2 + vpandn %ymm11,%ymm9,%ymm0 + vpand %ymm10,%ymm9,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm13,%ymm12 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm13,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm13,%ymm14,%ymm4 + + vpxor %ymm1,%ymm12,%ymm12 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm13,%ymm1 + + vpslld $19,%ymm13,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm12,%ymm7 + + vpsrld $22,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm13,%ymm2 + vpxor %ymm3,%ymm14,%ymm12 + vpaddd %ymm6,%ymm8,%ymm8 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm12,%ymm12 + vpaddd %ymm7,%ymm12,%ymm12 + vmovdqu 416-256-128(%rbx),%ymm6 + vpaddd 160-128(%rax),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 320-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm8,%ymm7 + vpslld $26,%ymm8,%ymm2 + vmovdqu %ymm5,384-256-128(%rbx) + vpaddd %ymm11,%ymm5,%ymm5 + + vpsrld $11,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm8,%ymm2 + vpaddd 0(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm8,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm8,%ymm2 + vpandn %ymm10,%ymm8,%ymm0 + vpand %ymm9,%ymm8,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm12,%ymm11 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm12,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm12,%ymm13,%ymm3 + + vpxor %ymm1,%ymm11,%ymm11 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm12,%ymm1 + + vpslld $19,%ymm12,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm11,%ymm7 + + vpsrld $22,%ymm12,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm12,%ymm2 + vpxor %ymm4,%ymm13,%ymm11 + vpaddd %ymm5,%ymm15,%ymm15 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm11,%ymm11 + vpaddd %ymm7,%ymm11,%ymm11 + vmovdqu 448-256-128(%rbx),%ymm5 + vpaddd 192-128(%rax),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 352-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm15,%ymm7 + vpslld $26,%ymm15,%ymm2 + vmovdqu %ymm6,416-256-128(%rbx) + vpaddd %ymm10,%ymm6,%ymm6 + + vpsrld $11,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm15,%ymm2 + vpaddd 32(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm15,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm15,%ymm2 + vpandn %ymm9,%ymm15,%ymm0 + vpand %ymm8,%ymm15,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm11,%ymm10 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm11,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm11,%ymm12,%ymm4 + + vpxor %ymm1,%ymm10,%ymm10 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm11,%ymm1 + + vpslld $19,%ymm11,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm10,%ymm7 + + vpsrld $22,%ymm11,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm11,%ymm2 + vpxor %ymm3,%ymm12,%ymm10 + vpaddd %ymm6,%ymm14,%ymm14 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm10,%ymm10 + vpaddd %ymm7,%ymm10,%ymm10 + vmovdqu 480-256-128(%rbx),%ymm6 + vpaddd 224-128(%rax),%ymm5,%ymm5 + + vpsrld $3,%ymm6,%ymm7 + vpsrld $7,%ymm6,%ymm1 + vpslld $25,%ymm6,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm6,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm6,%ymm2 + vmovdqu 384-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm5,%ymm5 + vpxor %ymm1,%ymm3,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm5,%ymm5 + vpsrld $6,%ymm14,%ymm7 + vpslld $26,%ymm14,%ymm2 + vmovdqu %ymm5,448-256-128(%rbx) + vpaddd %ymm9,%ymm5,%ymm5 + + vpsrld $11,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm14,%ymm2 + vpaddd 64(%rbp),%ymm5,%ymm5 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm14,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm14,%ymm2 + vpandn %ymm8,%ymm14,%ymm0 + vpand %ymm15,%ymm14,%ymm3 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm10,%ymm9 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm10,%ymm1 + vpxor %ymm3,%ymm0,%ymm0 + vpxor %ymm10,%ymm11,%ymm3 + + vpxor %ymm1,%ymm9,%ymm9 + vpaddd %ymm7,%ymm5,%ymm5 + + vpsrld $13,%ymm10,%ymm1 + + vpslld $19,%ymm10,%ymm2 + vpaddd %ymm0,%ymm5,%ymm5 + vpand %ymm3,%ymm4,%ymm4 + + vpxor %ymm1,%ymm9,%ymm7 + + vpsrld $22,%ymm10,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm10,%ymm2 + vpxor %ymm4,%ymm11,%ymm9 + vpaddd %ymm5,%ymm13,%ymm13 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm5,%ymm9,%ymm9 + vpaddd %ymm7,%ymm9,%ymm9 + vmovdqu 0-128(%rax),%ymm5 + vpaddd 256-256-128(%rbx),%ymm6,%ymm6 + + vpsrld $3,%ymm5,%ymm7 + vpsrld $7,%ymm5,%ymm1 + vpslld $25,%ymm5,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $18,%ymm5,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $14,%ymm5,%ymm2 + vmovdqu 416-256-128(%rbx),%ymm0 + vpsrld $10,%ymm0,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + vpsrld $17,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $15,%ymm0,%ymm2 + vpaddd %ymm7,%ymm6,%ymm6 + vpxor %ymm1,%ymm4,%ymm7 + vpsrld $19,%ymm0,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $13,%ymm0,%ymm2 + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + vpaddd %ymm7,%ymm6,%ymm6 + vpsrld $6,%ymm13,%ymm7 + vpslld $26,%ymm13,%ymm2 + vmovdqu %ymm6,480-256-128(%rbx) + vpaddd %ymm8,%ymm6,%ymm6 + + vpsrld $11,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + vpslld $21,%ymm13,%ymm2 + vpaddd 96(%rbp),%ymm6,%ymm6 + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $25,%ymm13,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $7,%ymm13,%ymm2 + vpandn %ymm15,%ymm13,%ymm0 + vpand %ymm14,%ymm13,%ymm4 + + vpxor %ymm1,%ymm7,%ymm7 + + vpsrld $2,%ymm9,%ymm8 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $30,%ymm9,%ymm1 + vpxor %ymm4,%ymm0,%ymm0 + vpxor %ymm9,%ymm10,%ymm4 + + vpxor %ymm1,%ymm8,%ymm8 + vpaddd %ymm7,%ymm6,%ymm6 + + vpsrld $13,%ymm9,%ymm1 + + vpslld $19,%ymm9,%ymm2 + vpaddd %ymm0,%ymm6,%ymm6 + vpand %ymm4,%ymm3,%ymm3 + + vpxor %ymm1,%ymm8,%ymm7 + + vpsrld $22,%ymm9,%ymm1 + vpxor %ymm2,%ymm7,%ymm7 + + vpslld $10,%ymm9,%ymm2 + vpxor %ymm3,%ymm10,%ymm8 + vpaddd %ymm6,%ymm12,%ymm12 + + vpxor %ymm1,%ymm7,%ymm7 + vpxor %ymm2,%ymm7,%ymm7 + + vpaddd %ymm6,%ymm8,%ymm8 + vpaddd %ymm7,%ymm8,%ymm8 + addq $256,%rbp + decl %ecx + jnz L$oop_16_xx_avx2 + + movl $1,%ecx + leaq 512(%rsp),%rbx + leaq K256+128(%rip),%rbp + cmpl 0(%rbx),%ecx + cmovgeq %rbp,%r12 + cmpl 4(%rbx),%ecx + cmovgeq %rbp,%r13 + cmpl 8(%rbx),%ecx + cmovgeq %rbp,%r14 + cmpl 12(%rbx),%ecx + cmovgeq %rbp,%r15 + cmpl 16(%rbx),%ecx + cmovgeq %rbp,%r8 + cmpl 20(%rbx),%ecx + cmovgeq %rbp,%r9 + cmpl 24(%rbx),%ecx + cmovgeq %rbp,%r10 + cmpl 28(%rbx),%ecx + cmovgeq %rbp,%r11 + vmovdqa (%rbx),%ymm7 + vpxor %ymm0,%ymm0,%ymm0 + vmovdqa %ymm7,%ymm6 + vpcmpgtd %ymm0,%ymm6,%ymm6 + vpaddd %ymm6,%ymm7,%ymm7 + + vmovdqu 0-128(%rdi),%ymm0 + vpand %ymm6,%ymm8,%ymm8 + vmovdqu 32-128(%rdi),%ymm1 + vpand %ymm6,%ymm9,%ymm9 + vmovdqu 64-128(%rdi),%ymm2 + vpand %ymm6,%ymm10,%ymm10 + vmovdqu 96-128(%rdi),%ymm5 + vpand %ymm6,%ymm11,%ymm11 + vpaddd %ymm0,%ymm8,%ymm8 + vmovdqu 128-128(%rdi),%ymm0 + vpand %ymm6,%ymm12,%ymm12 + vpaddd %ymm1,%ymm9,%ymm9 + vmovdqu 160-128(%rdi),%ymm1 + vpand %ymm6,%ymm13,%ymm13 + vpaddd %ymm2,%ymm10,%ymm10 + vmovdqu 192-128(%rdi),%ymm2 + vpand %ymm6,%ymm14,%ymm14 + vpaddd %ymm5,%ymm11,%ymm11 + vmovdqu 224-128(%rdi),%ymm5 + vpand %ymm6,%ymm15,%ymm15 + vpaddd %ymm0,%ymm12,%ymm12 + vpaddd %ymm1,%ymm13,%ymm13 + vmovdqu %ymm8,0-128(%rdi) + vpaddd %ymm2,%ymm14,%ymm14 + vmovdqu %ymm9,32-128(%rdi) + vpaddd %ymm5,%ymm15,%ymm15 + vmovdqu %ymm10,64-128(%rdi) + vmovdqu %ymm11,96-128(%rdi) + vmovdqu %ymm12,128-128(%rdi) + vmovdqu %ymm13,160-128(%rdi) + vmovdqu %ymm14,192-128(%rdi) + vmovdqu %ymm15,224-128(%rdi) + + vmovdqu %ymm7,(%rbx) + leaq 256+128(%rsp),%rbx + vmovdqu L$pbswap(%rip),%ymm6 + decl %edx + jnz L$oop_avx2 + + + + + + + +L$done_avx2: + movq 544(%rsp),%rax + + vzeroupper + movq -48(%rax),%r15 + + movq -40(%rax),%r14 + + movq -32(%rax),%r13 + + movq -24(%rax),%r12 + + movq -16(%rax),%rbp + + movq -8(%rax),%rbx + + leaq (%rax),%rsp + +L$epilogue_avx2: + .byte 0xf3,0xc3 + + +.p2align 8 +K256: +.long 1116352408,1116352408,1116352408,1116352408 +.long 1116352408,1116352408,1116352408,1116352408 +.long 1899447441,1899447441,1899447441,1899447441 +.long 1899447441,1899447441,1899447441,1899447441 +.long 3049323471,3049323471,3049323471,3049323471 +.long 3049323471,3049323471,3049323471,3049323471 +.long 3921009573,3921009573,3921009573,3921009573 +.long 3921009573,3921009573,3921009573,3921009573 +.long 961987163,961987163,961987163,961987163 +.long 961987163,961987163,961987163,961987163 +.long 1508970993,1508970993,1508970993,1508970993 +.long 1508970993,1508970993,1508970993,1508970993 +.long 2453635748,2453635748,2453635748,2453635748 +.long 2453635748,2453635748,2453635748,2453635748 +.long 2870763221,2870763221,2870763221,2870763221 +.long 2870763221,2870763221,2870763221,2870763221 +.long 3624381080,3624381080,3624381080,3624381080 +.long 3624381080,3624381080,3624381080,3624381080 +.long 310598401,310598401,310598401,310598401 +.long 310598401,310598401,310598401,310598401 +.long 607225278,607225278,607225278,607225278 +.long 607225278,607225278,607225278,607225278 +.long 1426881987,1426881987,1426881987,1426881987 +.long 1426881987,1426881987,1426881987,1426881987 +.long 1925078388,1925078388,1925078388,1925078388 +.long 1925078388,1925078388,1925078388,1925078388 +.long 2162078206,2162078206,2162078206,2162078206 +.long 2162078206,2162078206,2162078206,2162078206 +.long 2614888103,2614888103,2614888103,2614888103 +.long 2614888103,2614888103,2614888103,2614888103 +.long 3248222580,3248222580,3248222580,3248222580 +.long 3248222580,3248222580,3248222580,3248222580 +.long 3835390401,3835390401,3835390401,3835390401 +.long 3835390401,3835390401,3835390401,3835390401 +.long 4022224774,4022224774,4022224774,4022224774 +.long 4022224774,4022224774,4022224774,4022224774 +.long 264347078,264347078,264347078,264347078 +.long 264347078,264347078,264347078,264347078 +.long 604807628,604807628,604807628,604807628 +.long 604807628,604807628,604807628,604807628 +.long 770255983,770255983,770255983,770255983 +.long 770255983,770255983,770255983,770255983 +.long 1249150122,1249150122,1249150122,1249150122 +.long 1249150122,1249150122,1249150122,1249150122 +.long 1555081692,1555081692,1555081692,1555081692 +.long 1555081692,1555081692,1555081692,1555081692 +.long 1996064986,1996064986,1996064986,1996064986 +.long 1996064986,1996064986,1996064986,1996064986 +.long 2554220882,2554220882,2554220882,2554220882 +.long 2554220882,2554220882,2554220882,2554220882 +.long 2821834349,2821834349,2821834349,2821834349 +.long 2821834349,2821834349,2821834349,2821834349 +.long 2952996808,2952996808,2952996808,2952996808 +.long 2952996808,2952996808,2952996808,2952996808 +.long 3210313671,3210313671,3210313671,3210313671 +.long 3210313671,3210313671,3210313671,3210313671 +.long 3336571891,3336571891,3336571891,3336571891 +.long 3336571891,3336571891,3336571891,3336571891 +.long 3584528711,3584528711,3584528711,3584528711 +.long 3584528711,3584528711,3584528711,3584528711 +.long 113926993,113926993,113926993,113926993 +.long 113926993,113926993,113926993,113926993 +.long 338241895,338241895,338241895,338241895 +.long 338241895,338241895,338241895,338241895 +.long 666307205,666307205,666307205,666307205 +.long 666307205,666307205,666307205,666307205 +.long 773529912,773529912,773529912,773529912 +.long 773529912,773529912,773529912,773529912 +.long 1294757372,1294757372,1294757372,1294757372 +.long 1294757372,1294757372,1294757372,1294757372 +.long 1396182291,1396182291,1396182291,1396182291 +.long 1396182291,1396182291,1396182291,1396182291 +.long 1695183700,1695183700,1695183700,1695183700 +.long 1695183700,1695183700,1695183700,1695183700 +.long 1986661051,1986661051,1986661051,1986661051 +.long 1986661051,1986661051,1986661051,1986661051 +.long 2177026350,2177026350,2177026350,2177026350 +.long 2177026350,2177026350,2177026350,2177026350 +.long 2456956037,2456956037,2456956037,2456956037 +.long 2456956037,2456956037,2456956037,2456956037 +.long 2730485921,2730485921,2730485921,2730485921 +.long 2730485921,2730485921,2730485921,2730485921 +.long 2820302411,2820302411,2820302411,2820302411 +.long 2820302411,2820302411,2820302411,2820302411 +.long 3259730800,3259730800,3259730800,3259730800 +.long 3259730800,3259730800,3259730800,3259730800 +.long 3345764771,3345764771,3345764771,3345764771 +.long 3345764771,3345764771,3345764771,3345764771 +.long 3516065817,3516065817,3516065817,3516065817 +.long 3516065817,3516065817,3516065817,3516065817 +.long 3600352804,3600352804,3600352804,3600352804 +.long 3600352804,3600352804,3600352804,3600352804 +.long 4094571909,4094571909,4094571909,4094571909 +.long 4094571909,4094571909,4094571909,4094571909 +.long 275423344,275423344,275423344,275423344 +.long 275423344,275423344,275423344,275423344 +.long 430227734,430227734,430227734,430227734 +.long 430227734,430227734,430227734,430227734 +.long 506948616,506948616,506948616,506948616 +.long 506948616,506948616,506948616,506948616 +.long 659060556,659060556,659060556,659060556 +.long 659060556,659060556,659060556,659060556 +.long 883997877,883997877,883997877,883997877 +.long 883997877,883997877,883997877,883997877 +.long 958139571,958139571,958139571,958139571 +.long 958139571,958139571,958139571,958139571 +.long 1322822218,1322822218,1322822218,1322822218 +.long 1322822218,1322822218,1322822218,1322822218 +.long 1537002063,1537002063,1537002063,1537002063 +.long 1537002063,1537002063,1537002063,1537002063 +.long 1747873779,1747873779,1747873779,1747873779 +.long 1747873779,1747873779,1747873779,1747873779 +.long 1955562222,1955562222,1955562222,1955562222 +.long 1955562222,1955562222,1955562222,1955562222 +.long 2024104815,2024104815,2024104815,2024104815 +.long 2024104815,2024104815,2024104815,2024104815 +.long 2227730452,2227730452,2227730452,2227730452 +.long 2227730452,2227730452,2227730452,2227730452 +.long 2361852424,2361852424,2361852424,2361852424 +.long 2361852424,2361852424,2361852424,2361852424 +.long 2428436474,2428436474,2428436474,2428436474 +.long 2428436474,2428436474,2428436474,2428436474 +.long 2756734187,2756734187,2756734187,2756734187 +.long 2756734187,2756734187,2756734187,2756734187 +.long 3204031479,3204031479,3204031479,3204031479 +.long 3204031479,3204031479,3204031479,3204031479 +.long 3329325298,3329325298,3329325298,3329325298 +.long 3329325298,3329325298,3329325298,3329325298 +L$pbswap: +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +K256_shaext: +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 +.byte 83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha256-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha256-x86_64.s new file mode 100644 index 0000000..3952a77 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha256-x86_64.s @@ -0,0 +1,5456 @@ +.text + + +.globl _sha256_block_data_order + +.p2align 4 +_sha256_block_data_order: + + leaq _OPENSSL_ia32cap_P(%rip),%r11 + movl 0(%r11),%r9d + movl 4(%r11),%r10d + movl 8(%r11),%r11d + testl $536870912,%r11d + jnz _shaext_shortcut + andl $296,%r11d + cmpl $296,%r11d + je L$avx2_shortcut + andl $1073741824,%r9d + andl $268435968,%r10d + orl %r9d,%r10d + cmpl $1342177792,%r10d + je L$avx_shortcut + testl $512,%r10d + jnz L$ssse3_shortcut + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + shlq $4,%rdx + subq $64+32,%rsp + leaq (%rsi,%rdx,4),%rdx + andq $-64,%rsp + movq %rdi,64+0(%rsp) + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + movq %rax,88(%rsp) + +L$prologue: + + movl 0(%rdi),%eax + movl 4(%rdi),%ebx + movl 8(%rdi),%ecx + movl 12(%rdi),%edx + movl 16(%rdi),%r8d + movl 20(%rdi),%r9d + movl 24(%rdi),%r10d + movl 28(%rdi),%r11d + jmp L$loop + +.p2align 4 +L$loop: + movl %ebx,%edi + leaq K256(%rip),%rbp + xorl %ecx,%edi + movl 0(%rsi),%r12d + movl %r8d,%r13d + movl %eax,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r9d,%r15d + + xorl %r8d,%r13d + rorl $9,%r14d + xorl %r10d,%r15d + + movl %r12d,0(%rsp) + xorl %eax,%r14d + andl %r8d,%r15d + + rorl $5,%r13d + addl %r11d,%r12d + xorl %r10d,%r15d + + rorl $11,%r14d + xorl %r8d,%r13d + addl %r15d,%r12d + + movl %eax,%r15d + addl (%rbp),%r12d + xorl %eax,%r14d + + xorl %ebx,%r15d + rorl $6,%r13d + movl %ebx,%r11d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r11d + addl %r12d,%edx + addl %r12d,%r11d + + leaq 4(%rbp),%rbp + addl %r14d,%r11d + movl 4(%rsi),%r12d + movl %edx,%r13d + movl %r11d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r8d,%edi + + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%edi + + movl %r12d,4(%rsp) + xorl %r11d,%r14d + andl %edx,%edi + + rorl $5,%r13d + addl %r10d,%r12d + xorl %r9d,%edi + + rorl $11,%r14d + xorl %edx,%r13d + addl %edi,%r12d + + movl %r11d,%edi + addl (%rbp),%r12d + xorl %r11d,%r14d + + xorl %eax,%edi + rorl $6,%r13d + movl %eax,%r10d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r10d + addl %r12d,%ecx + addl %r12d,%r10d + + leaq 4(%rbp),%rbp + addl %r14d,%r10d + movl 8(%rsi),%r12d + movl %ecx,%r13d + movl %r10d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %edx,%r15d + + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r15d + + movl %r12d,8(%rsp) + xorl %r10d,%r14d + andl %ecx,%r15d + + rorl $5,%r13d + addl %r9d,%r12d + xorl %r8d,%r15d + + rorl $11,%r14d + xorl %ecx,%r13d + addl %r15d,%r12d + + movl %r10d,%r15d + addl (%rbp),%r12d + xorl %r10d,%r14d + + xorl %r11d,%r15d + rorl $6,%r13d + movl %r11d,%r9d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r9d + addl %r12d,%ebx + addl %r12d,%r9d + + leaq 4(%rbp),%rbp + addl %r14d,%r9d + movl 12(%rsi),%r12d + movl %ebx,%r13d + movl %r9d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %ecx,%edi + + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%edi + + movl %r12d,12(%rsp) + xorl %r9d,%r14d + andl %ebx,%edi + + rorl $5,%r13d + addl %r8d,%r12d + xorl %edx,%edi + + rorl $11,%r14d + xorl %ebx,%r13d + addl %edi,%r12d + + movl %r9d,%edi + addl (%rbp),%r12d + xorl %r9d,%r14d + + xorl %r10d,%edi + rorl $6,%r13d + movl %r10d,%r8d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r8d + addl %r12d,%eax + addl %r12d,%r8d + + leaq 20(%rbp),%rbp + addl %r14d,%r8d + movl 16(%rsi),%r12d + movl %eax,%r13d + movl %r8d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %ebx,%r15d + + xorl %eax,%r13d + rorl $9,%r14d + xorl %ecx,%r15d + + movl %r12d,16(%rsp) + xorl %r8d,%r14d + andl %eax,%r15d + + rorl $5,%r13d + addl %edx,%r12d + xorl %ecx,%r15d + + rorl $11,%r14d + xorl %eax,%r13d + addl %r15d,%r12d + + movl %r8d,%r15d + addl (%rbp),%r12d + xorl %r8d,%r14d + + xorl %r9d,%r15d + rorl $6,%r13d + movl %r9d,%edx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%edx + addl %r12d,%r11d + addl %r12d,%edx + + leaq 4(%rbp),%rbp + addl %r14d,%edx + movl 20(%rsi),%r12d + movl %r11d,%r13d + movl %edx,%r14d + bswapl %r12d + rorl $14,%r13d + movl %eax,%edi + + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%edi + + movl %r12d,20(%rsp) + xorl %edx,%r14d + andl %r11d,%edi + + rorl $5,%r13d + addl %ecx,%r12d + xorl %ebx,%edi + + rorl $11,%r14d + xorl %r11d,%r13d + addl %edi,%r12d + + movl %edx,%edi + addl (%rbp),%r12d + xorl %edx,%r14d + + xorl %r8d,%edi + rorl $6,%r13d + movl %r8d,%ecx + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%ecx + addl %r12d,%r10d + addl %r12d,%ecx + + leaq 4(%rbp),%rbp + addl %r14d,%ecx + movl 24(%rsi),%r12d + movl %r10d,%r13d + movl %ecx,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r11d,%r15d + + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r15d + + movl %r12d,24(%rsp) + xorl %ecx,%r14d + andl %r10d,%r15d + + rorl $5,%r13d + addl %ebx,%r12d + xorl %eax,%r15d + + rorl $11,%r14d + xorl %r10d,%r13d + addl %r15d,%r12d + + movl %ecx,%r15d + addl (%rbp),%r12d + xorl %ecx,%r14d + + xorl %edx,%r15d + rorl $6,%r13d + movl %edx,%ebx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%ebx + addl %r12d,%r9d + addl %r12d,%ebx + + leaq 4(%rbp),%rbp + addl %r14d,%ebx + movl 28(%rsi),%r12d + movl %r9d,%r13d + movl %ebx,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r10d,%edi + + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%edi + + movl %r12d,28(%rsp) + xorl %ebx,%r14d + andl %r9d,%edi + + rorl $5,%r13d + addl %eax,%r12d + xorl %r11d,%edi + + rorl $11,%r14d + xorl %r9d,%r13d + addl %edi,%r12d + + movl %ebx,%edi + addl (%rbp),%r12d + xorl %ebx,%r14d + + xorl %ecx,%edi + rorl $6,%r13d + movl %ecx,%eax + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%eax + addl %r12d,%r8d + addl %r12d,%eax + + leaq 20(%rbp),%rbp + addl %r14d,%eax + movl 32(%rsi),%r12d + movl %r8d,%r13d + movl %eax,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r9d,%r15d + + xorl %r8d,%r13d + rorl $9,%r14d + xorl %r10d,%r15d + + movl %r12d,32(%rsp) + xorl %eax,%r14d + andl %r8d,%r15d + + rorl $5,%r13d + addl %r11d,%r12d + xorl %r10d,%r15d + + rorl $11,%r14d + xorl %r8d,%r13d + addl %r15d,%r12d + + movl %eax,%r15d + addl (%rbp),%r12d + xorl %eax,%r14d + + xorl %ebx,%r15d + rorl $6,%r13d + movl %ebx,%r11d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r11d + addl %r12d,%edx + addl %r12d,%r11d + + leaq 4(%rbp),%rbp + addl %r14d,%r11d + movl 36(%rsi),%r12d + movl %edx,%r13d + movl %r11d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r8d,%edi + + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%edi + + movl %r12d,36(%rsp) + xorl %r11d,%r14d + andl %edx,%edi + + rorl $5,%r13d + addl %r10d,%r12d + xorl %r9d,%edi + + rorl $11,%r14d + xorl %edx,%r13d + addl %edi,%r12d + + movl %r11d,%edi + addl (%rbp),%r12d + xorl %r11d,%r14d + + xorl %eax,%edi + rorl $6,%r13d + movl %eax,%r10d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r10d + addl %r12d,%ecx + addl %r12d,%r10d + + leaq 4(%rbp),%rbp + addl %r14d,%r10d + movl 40(%rsi),%r12d + movl %ecx,%r13d + movl %r10d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %edx,%r15d + + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r15d + + movl %r12d,40(%rsp) + xorl %r10d,%r14d + andl %ecx,%r15d + + rorl $5,%r13d + addl %r9d,%r12d + xorl %r8d,%r15d + + rorl $11,%r14d + xorl %ecx,%r13d + addl %r15d,%r12d + + movl %r10d,%r15d + addl (%rbp),%r12d + xorl %r10d,%r14d + + xorl %r11d,%r15d + rorl $6,%r13d + movl %r11d,%r9d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r9d + addl %r12d,%ebx + addl %r12d,%r9d + + leaq 4(%rbp),%rbp + addl %r14d,%r9d + movl 44(%rsi),%r12d + movl %ebx,%r13d + movl %r9d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %ecx,%edi + + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%edi + + movl %r12d,44(%rsp) + xorl %r9d,%r14d + andl %ebx,%edi + + rorl $5,%r13d + addl %r8d,%r12d + xorl %edx,%edi + + rorl $11,%r14d + xorl %ebx,%r13d + addl %edi,%r12d + + movl %r9d,%edi + addl (%rbp),%r12d + xorl %r9d,%r14d + + xorl %r10d,%edi + rorl $6,%r13d + movl %r10d,%r8d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r8d + addl %r12d,%eax + addl %r12d,%r8d + + leaq 20(%rbp),%rbp + addl %r14d,%r8d + movl 48(%rsi),%r12d + movl %eax,%r13d + movl %r8d,%r14d + bswapl %r12d + rorl $14,%r13d + movl %ebx,%r15d + + xorl %eax,%r13d + rorl $9,%r14d + xorl %ecx,%r15d + + movl %r12d,48(%rsp) + xorl %r8d,%r14d + andl %eax,%r15d + + rorl $5,%r13d + addl %edx,%r12d + xorl %ecx,%r15d + + rorl $11,%r14d + xorl %eax,%r13d + addl %r15d,%r12d + + movl %r8d,%r15d + addl (%rbp),%r12d + xorl %r8d,%r14d + + xorl %r9d,%r15d + rorl $6,%r13d + movl %r9d,%edx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%edx + addl %r12d,%r11d + addl %r12d,%edx + + leaq 4(%rbp),%rbp + addl %r14d,%edx + movl 52(%rsi),%r12d + movl %r11d,%r13d + movl %edx,%r14d + bswapl %r12d + rorl $14,%r13d + movl %eax,%edi + + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%edi + + movl %r12d,52(%rsp) + xorl %edx,%r14d + andl %r11d,%edi + + rorl $5,%r13d + addl %ecx,%r12d + xorl %ebx,%edi + + rorl $11,%r14d + xorl %r11d,%r13d + addl %edi,%r12d + + movl %edx,%edi + addl (%rbp),%r12d + xorl %edx,%r14d + + xorl %r8d,%edi + rorl $6,%r13d + movl %r8d,%ecx + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%ecx + addl %r12d,%r10d + addl %r12d,%ecx + + leaq 4(%rbp),%rbp + addl %r14d,%ecx + movl 56(%rsi),%r12d + movl %r10d,%r13d + movl %ecx,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r11d,%r15d + + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r15d + + movl %r12d,56(%rsp) + xorl %ecx,%r14d + andl %r10d,%r15d + + rorl $5,%r13d + addl %ebx,%r12d + xorl %eax,%r15d + + rorl $11,%r14d + xorl %r10d,%r13d + addl %r15d,%r12d + + movl %ecx,%r15d + addl (%rbp),%r12d + xorl %ecx,%r14d + + xorl %edx,%r15d + rorl $6,%r13d + movl %edx,%ebx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%ebx + addl %r12d,%r9d + addl %r12d,%ebx + + leaq 4(%rbp),%rbp + addl %r14d,%ebx + movl 60(%rsi),%r12d + movl %r9d,%r13d + movl %ebx,%r14d + bswapl %r12d + rorl $14,%r13d + movl %r10d,%edi + + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%edi + + movl %r12d,60(%rsp) + xorl %ebx,%r14d + andl %r9d,%edi + + rorl $5,%r13d + addl %eax,%r12d + xorl %r11d,%edi + + rorl $11,%r14d + xorl %r9d,%r13d + addl %edi,%r12d + + movl %ebx,%edi + addl (%rbp),%r12d + xorl %ebx,%r14d + + xorl %ecx,%edi + rorl $6,%r13d + movl %ecx,%eax + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%eax + addl %r12d,%r8d + addl %r12d,%eax + + leaq 20(%rbp),%rbp + jmp L$rounds_16_xx +.p2align 4 +L$rounds_16_xx: + movl 4(%rsp),%r13d + movl 56(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%eax + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 36(%rsp),%r12d + + addl 0(%rsp),%r12d + movl %r8d,%r13d + addl %r15d,%r12d + movl %eax,%r14d + rorl $14,%r13d + movl %r9d,%r15d + + xorl %r8d,%r13d + rorl $9,%r14d + xorl %r10d,%r15d + + movl %r12d,0(%rsp) + xorl %eax,%r14d + andl %r8d,%r15d + + rorl $5,%r13d + addl %r11d,%r12d + xorl %r10d,%r15d + + rorl $11,%r14d + xorl %r8d,%r13d + addl %r15d,%r12d + + movl %eax,%r15d + addl (%rbp),%r12d + xorl %eax,%r14d + + xorl %ebx,%r15d + rorl $6,%r13d + movl %ebx,%r11d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r11d + addl %r12d,%edx + addl %r12d,%r11d + + leaq 4(%rbp),%rbp + movl 8(%rsp),%r13d + movl 60(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r11d + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 40(%rsp),%r12d + + addl 4(%rsp),%r12d + movl %edx,%r13d + addl %edi,%r12d + movl %r11d,%r14d + rorl $14,%r13d + movl %r8d,%edi + + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%edi + + movl %r12d,4(%rsp) + xorl %r11d,%r14d + andl %edx,%edi + + rorl $5,%r13d + addl %r10d,%r12d + xorl %r9d,%edi + + rorl $11,%r14d + xorl %edx,%r13d + addl %edi,%r12d + + movl %r11d,%edi + addl (%rbp),%r12d + xorl %r11d,%r14d + + xorl %eax,%edi + rorl $6,%r13d + movl %eax,%r10d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r10d + addl %r12d,%ecx + addl %r12d,%r10d + + leaq 4(%rbp),%rbp + movl 12(%rsp),%r13d + movl 0(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r10d + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 44(%rsp),%r12d + + addl 8(%rsp),%r12d + movl %ecx,%r13d + addl %r15d,%r12d + movl %r10d,%r14d + rorl $14,%r13d + movl %edx,%r15d + + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r15d + + movl %r12d,8(%rsp) + xorl %r10d,%r14d + andl %ecx,%r15d + + rorl $5,%r13d + addl %r9d,%r12d + xorl %r8d,%r15d + + rorl $11,%r14d + xorl %ecx,%r13d + addl %r15d,%r12d + + movl %r10d,%r15d + addl (%rbp),%r12d + xorl %r10d,%r14d + + xorl %r11d,%r15d + rorl $6,%r13d + movl %r11d,%r9d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r9d + addl %r12d,%ebx + addl %r12d,%r9d + + leaq 4(%rbp),%rbp + movl 16(%rsp),%r13d + movl 4(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r9d + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 48(%rsp),%r12d + + addl 12(%rsp),%r12d + movl %ebx,%r13d + addl %edi,%r12d + movl %r9d,%r14d + rorl $14,%r13d + movl %ecx,%edi + + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%edi + + movl %r12d,12(%rsp) + xorl %r9d,%r14d + andl %ebx,%edi + + rorl $5,%r13d + addl %r8d,%r12d + xorl %edx,%edi + + rorl $11,%r14d + xorl %ebx,%r13d + addl %edi,%r12d + + movl %r9d,%edi + addl (%rbp),%r12d + xorl %r9d,%r14d + + xorl %r10d,%edi + rorl $6,%r13d + movl %r10d,%r8d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r8d + addl %r12d,%eax + addl %r12d,%r8d + + leaq 20(%rbp),%rbp + movl 20(%rsp),%r13d + movl 8(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r8d + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 52(%rsp),%r12d + + addl 16(%rsp),%r12d + movl %eax,%r13d + addl %r15d,%r12d + movl %r8d,%r14d + rorl $14,%r13d + movl %ebx,%r15d + + xorl %eax,%r13d + rorl $9,%r14d + xorl %ecx,%r15d + + movl %r12d,16(%rsp) + xorl %r8d,%r14d + andl %eax,%r15d + + rorl $5,%r13d + addl %edx,%r12d + xorl %ecx,%r15d + + rorl $11,%r14d + xorl %eax,%r13d + addl %r15d,%r12d + + movl %r8d,%r15d + addl (%rbp),%r12d + xorl %r8d,%r14d + + xorl %r9d,%r15d + rorl $6,%r13d + movl %r9d,%edx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%edx + addl %r12d,%r11d + addl %r12d,%edx + + leaq 4(%rbp),%rbp + movl 24(%rsp),%r13d + movl 12(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%edx + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 56(%rsp),%r12d + + addl 20(%rsp),%r12d + movl %r11d,%r13d + addl %edi,%r12d + movl %edx,%r14d + rorl $14,%r13d + movl %eax,%edi + + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%edi + + movl %r12d,20(%rsp) + xorl %edx,%r14d + andl %r11d,%edi + + rorl $5,%r13d + addl %ecx,%r12d + xorl %ebx,%edi + + rorl $11,%r14d + xorl %r11d,%r13d + addl %edi,%r12d + + movl %edx,%edi + addl (%rbp),%r12d + xorl %edx,%r14d + + xorl %r8d,%edi + rorl $6,%r13d + movl %r8d,%ecx + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%ecx + addl %r12d,%r10d + addl %r12d,%ecx + + leaq 4(%rbp),%rbp + movl 28(%rsp),%r13d + movl 16(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%ecx + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 60(%rsp),%r12d + + addl 24(%rsp),%r12d + movl %r10d,%r13d + addl %r15d,%r12d + movl %ecx,%r14d + rorl $14,%r13d + movl %r11d,%r15d + + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r15d + + movl %r12d,24(%rsp) + xorl %ecx,%r14d + andl %r10d,%r15d + + rorl $5,%r13d + addl %ebx,%r12d + xorl %eax,%r15d + + rorl $11,%r14d + xorl %r10d,%r13d + addl %r15d,%r12d + + movl %ecx,%r15d + addl (%rbp),%r12d + xorl %ecx,%r14d + + xorl %edx,%r15d + rorl $6,%r13d + movl %edx,%ebx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%ebx + addl %r12d,%r9d + addl %r12d,%ebx + + leaq 4(%rbp),%rbp + movl 32(%rsp),%r13d + movl 20(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%ebx + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 0(%rsp),%r12d + + addl 28(%rsp),%r12d + movl %r9d,%r13d + addl %edi,%r12d + movl %ebx,%r14d + rorl $14,%r13d + movl %r10d,%edi + + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%edi + + movl %r12d,28(%rsp) + xorl %ebx,%r14d + andl %r9d,%edi + + rorl $5,%r13d + addl %eax,%r12d + xorl %r11d,%edi + + rorl $11,%r14d + xorl %r9d,%r13d + addl %edi,%r12d + + movl %ebx,%edi + addl (%rbp),%r12d + xorl %ebx,%r14d + + xorl %ecx,%edi + rorl $6,%r13d + movl %ecx,%eax + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%eax + addl %r12d,%r8d + addl %r12d,%eax + + leaq 20(%rbp),%rbp + movl 36(%rsp),%r13d + movl 24(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%eax + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 4(%rsp),%r12d + + addl 32(%rsp),%r12d + movl %r8d,%r13d + addl %r15d,%r12d + movl %eax,%r14d + rorl $14,%r13d + movl %r9d,%r15d + + xorl %r8d,%r13d + rorl $9,%r14d + xorl %r10d,%r15d + + movl %r12d,32(%rsp) + xorl %eax,%r14d + andl %r8d,%r15d + + rorl $5,%r13d + addl %r11d,%r12d + xorl %r10d,%r15d + + rorl $11,%r14d + xorl %r8d,%r13d + addl %r15d,%r12d + + movl %eax,%r15d + addl (%rbp),%r12d + xorl %eax,%r14d + + xorl %ebx,%r15d + rorl $6,%r13d + movl %ebx,%r11d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r11d + addl %r12d,%edx + addl %r12d,%r11d + + leaq 4(%rbp),%rbp + movl 40(%rsp),%r13d + movl 28(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r11d + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 8(%rsp),%r12d + + addl 36(%rsp),%r12d + movl %edx,%r13d + addl %edi,%r12d + movl %r11d,%r14d + rorl $14,%r13d + movl %r8d,%edi + + xorl %edx,%r13d + rorl $9,%r14d + xorl %r9d,%edi + + movl %r12d,36(%rsp) + xorl %r11d,%r14d + andl %edx,%edi + + rorl $5,%r13d + addl %r10d,%r12d + xorl %r9d,%edi + + rorl $11,%r14d + xorl %edx,%r13d + addl %edi,%r12d + + movl %r11d,%edi + addl (%rbp),%r12d + xorl %r11d,%r14d + + xorl %eax,%edi + rorl $6,%r13d + movl %eax,%r10d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r10d + addl %r12d,%ecx + addl %r12d,%r10d + + leaq 4(%rbp),%rbp + movl 44(%rsp),%r13d + movl 32(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r10d + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 12(%rsp),%r12d + + addl 40(%rsp),%r12d + movl %ecx,%r13d + addl %r15d,%r12d + movl %r10d,%r14d + rorl $14,%r13d + movl %edx,%r15d + + xorl %ecx,%r13d + rorl $9,%r14d + xorl %r8d,%r15d + + movl %r12d,40(%rsp) + xorl %r10d,%r14d + andl %ecx,%r15d + + rorl $5,%r13d + addl %r9d,%r12d + xorl %r8d,%r15d + + rorl $11,%r14d + xorl %ecx,%r13d + addl %r15d,%r12d + + movl %r10d,%r15d + addl (%rbp),%r12d + xorl %r10d,%r14d + + xorl %r11d,%r15d + rorl $6,%r13d + movl %r11d,%r9d + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%r9d + addl %r12d,%ebx + addl %r12d,%r9d + + leaq 4(%rbp),%rbp + movl 48(%rsp),%r13d + movl 36(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r9d + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 16(%rsp),%r12d + + addl 44(%rsp),%r12d + movl %ebx,%r13d + addl %edi,%r12d + movl %r9d,%r14d + rorl $14,%r13d + movl %ecx,%edi + + xorl %ebx,%r13d + rorl $9,%r14d + xorl %edx,%edi + + movl %r12d,44(%rsp) + xorl %r9d,%r14d + andl %ebx,%edi + + rorl $5,%r13d + addl %r8d,%r12d + xorl %edx,%edi + + rorl $11,%r14d + xorl %ebx,%r13d + addl %edi,%r12d + + movl %r9d,%edi + addl (%rbp),%r12d + xorl %r9d,%r14d + + xorl %r10d,%edi + rorl $6,%r13d + movl %r10d,%r8d + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%r8d + addl %r12d,%eax + addl %r12d,%r8d + + leaq 20(%rbp),%rbp + movl 52(%rsp),%r13d + movl 40(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%r8d + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 20(%rsp),%r12d + + addl 48(%rsp),%r12d + movl %eax,%r13d + addl %r15d,%r12d + movl %r8d,%r14d + rorl $14,%r13d + movl %ebx,%r15d + + xorl %eax,%r13d + rorl $9,%r14d + xorl %ecx,%r15d + + movl %r12d,48(%rsp) + xorl %r8d,%r14d + andl %eax,%r15d + + rorl $5,%r13d + addl %edx,%r12d + xorl %ecx,%r15d + + rorl $11,%r14d + xorl %eax,%r13d + addl %r15d,%r12d + + movl %r8d,%r15d + addl (%rbp),%r12d + xorl %r8d,%r14d + + xorl %r9d,%r15d + rorl $6,%r13d + movl %r9d,%edx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%edx + addl %r12d,%r11d + addl %r12d,%edx + + leaq 4(%rbp),%rbp + movl 56(%rsp),%r13d + movl 44(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%edx + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 24(%rsp),%r12d + + addl 52(%rsp),%r12d + movl %r11d,%r13d + addl %edi,%r12d + movl %edx,%r14d + rorl $14,%r13d + movl %eax,%edi + + xorl %r11d,%r13d + rorl $9,%r14d + xorl %ebx,%edi + + movl %r12d,52(%rsp) + xorl %edx,%r14d + andl %r11d,%edi + + rorl $5,%r13d + addl %ecx,%r12d + xorl %ebx,%edi + + rorl $11,%r14d + xorl %r11d,%r13d + addl %edi,%r12d + + movl %edx,%edi + addl (%rbp),%r12d + xorl %edx,%r14d + + xorl %r8d,%edi + rorl $6,%r13d + movl %r8d,%ecx + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%ecx + addl %r12d,%r10d + addl %r12d,%ecx + + leaq 4(%rbp),%rbp + movl 60(%rsp),%r13d + movl 48(%rsp),%r15d + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%ecx + movl %r15d,%r14d + rorl $2,%r15d + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%r15d + shrl $10,%r14d + + rorl $17,%r15d + xorl %r13d,%r12d + xorl %r14d,%r15d + addl 28(%rsp),%r12d + + addl 56(%rsp),%r12d + movl %r10d,%r13d + addl %r15d,%r12d + movl %ecx,%r14d + rorl $14,%r13d + movl %r11d,%r15d + + xorl %r10d,%r13d + rorl $9,%r14d + xorl %eax,%r15d + + movl %r12d,56(%rsp) + xorl %ecx,%r14d + andl %r10d,%r15d + + rorl $5,%r13d + addl %ebx,%r12d + xorl %eax,%r15d + + rorl $11,%r14d + xorl %r10d,%r13d + addl %r15d,%r12d + + movl %ecx,%r15d + addl (%rbp),%r12d + xorl %ecx,%r14d + + xorl %edx,%r15d + rorl $6,%r13d + movl %edx,%ebx + + andl %r15d,%edi + rorl $2,%r14d + addl %r13d,%r12d + + xorl %edi,%ebx + addl %r12d,%r9d + addl %r12d,%ebx + + leaq 4(%rbp),%rbp + movl 0(%rsp),%r13d + movl 52(%rsp),%edi + + movl %r13d,%r12d + rorl $11,%r13d + addl %r14d,%ebx + movl %edi,%r14d + rorl $2,%edi + + xorl %r12d,%r13d + shrl $3,%r12d + rorl $7,%r13d + xorl %r14d,%edi + shrl $10,%r14d + + rorl $17,%edi + xorl %r13d,%r12d + xorl %r14d,%edi + addl 32(%rsp),%r12d + + addl 60(%rsp),%r12d + movl %r9d,%r13d + addl %edi,%r12d + movl %ebx,%r14d + rorl $14,%r13d + movl %r10d,%edi + + xorl %r9d,%r13d + rorl $9,%r14d + xorl %r11d,%edi + + movl %r12d,60(%rsp) + xorl %ebx,%r14d + andl %r9d,%edi + + rorl $5,%r13d + addl %eax,%r12d + xorl %r11d,%edi + + rorl $11,%r14d + xorl %r9d,%r13d + addl %edi,%r12d + + movl %ebx,%edi + addl (%rbp),%r12d + xorl %ebx,%r14d + + xorl %ecx,%edi + rorl $6,%r13d + movl %ecx,%eax + + andl %edi,%r15d + rorl $2,%r14d + addl %r13d,%r12d + + xorl %r15d,%eax + addl %r12d,%r8d + addl %r12d,%eax + + leaq 20(%rbp),%rbp + cmpb $0,3(%rbp) + jnz L$rounds_16_xx + + movq 64+0(%rsp),%rdi + addl %r14d,%eax + leaq 64(%rsi),%rsi + + addl 0(%rdi),%eax + addl 4(%rdi),%ebx + addl 8(%rdi),%ecx + addl 12(%rdi),%edx + addl 16(%rdi),%r8d + addl 20(%rdi),%r9d + addl 24(%rdi),%r10d + addl 28(%rdi),%r11d + + cmpq 64+16(%rsp),%rsi + + movl %eax,0(%rdi) + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + jb L$loop + + movq 88(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue: + .byte 0xf3,0xc3 + + +.p2align 6 + +K256: +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 + +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +.long 0x03020100,0x0b0a0908,0xffffffff,0xffffffff +.long 0x03020100,0x0b0a0908,0xffffffff,0xffffffff +.long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 +.long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 +.byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 + +.p2align 6 +sha256_block_data_order_shaext: +_shaext_shortcut: + + leaq K256+128(%rip),%rcx + movdqu (%rdi),%xmm1 + movdqu 16(%rdi),%xmm2 + movdqa 512-128(%rcx),%xmm7 + + pshufd $0x1b,%xmm1,%xmm0 + pshufd $0xb1,%xmm1,%xmm1 + pshufd $0x1b,%xmm2,%xmm2 + movdqa %xmm7,%xmm8 +.byte 102,15,58,15,202,8 + punpcklqdq %xmm0,%xmm2 + jmp L$oop_shaext + +.p2align 4 +L$oop_shaext: + movdqu (%rsi),%xmm3 + movdqu 16(%rsi),%xmm4 + movdqu 32(%rsi),%xmm5 +.byte 102,15,56,0,223 + movdqu 48(%rsi),%xmm6 + + movdqa 0-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 102,15,56,0,231 + movdqa %xmm2,%xmm10 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + nop + movdqa %xmm1,%xmm9 +.byte 15,56,203,202 + + movdqa 32-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 102,15,56,0,239 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + leaq 64(%rsi),%rsi +.byte 15,56,204,220 +.byte 15,56,203,202 + + movdqa 64-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 102,15,56,0,247 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm6,%xmm7 +.byte 102,15,58,15,253,4 + nop + paddd %xmm7,%xmm3 +.byte 15,56,204,229 +.byte 15,56,203,202 + + movdqa 96-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 +.byte 15,56,205,222 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,254,4 + nop + paddd %xmm7,%xmm4 +.byte 15,56,204,238 +.byte 15,56,203,202 + movdqa 128-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 15,56,205,227 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm4,%xmm7 +.byte 102,15,58,15,251,4 + nop + paddd %xmm7,%xmm5 +.byte 15,56,204,243 +.byte 15,56,203,202 + movdqa 160-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 15,56,205,236 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm5,%xmm7 +.byte 102,15,58,15,252,4 + nop + paddd %xmm7,%xmm6 +.byte 15,56,204,220 +.byte 15,56,203,202 + movdqa 192-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 15,56,205,245 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm6,%xmm7 +.byte 102,15,58,15,253,4 + nop + paddd %xmm7,%xmm3 +.byte 15,56,204,229 +.byte 15,56,203,202 + movdqa 224-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 +.byte 15,56,205,222 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,254,4 + nop + paddd %xmm7,%xmm4 +.byte 15,56,204,238 +.byte 15,56,203,202 + movdqa 256-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 15,56,205,227 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm4,%xmm7 +.byte 102,15,58,15,251,4 + nop + paddd %xmm7,%xmm5 +.byte 15,56,204,243 +.byte 15,56,203,202 + movdqa 288-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 15,56,205,236 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm5,%xmm7 +.byte 102,15,58,15,252,4 + nop + paddd %xmm7,%xmm6 +.byte 15,56,204,220 +.byte 15,56,203,202 + movdqa 320-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 15,56,205,245 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm6,%xmm7 +.byte 102,15,58,15,253,4 + nop + paddd %xmm7,%xmm3 +.byte 15,56,204,229 +.byte 15,56,203,202 + movdqa 352-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 +.byte 15,56,205,222 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm3,%xmm7 +.byte 102,15,58,15,254,4 + nop + paddd %xmm7,%xmm4 +.byte 15,56,204,238 +.byte 15,56,203,202 + movdqa 384-128(%rcx),%xmm0 + paddd %xmm3,%xmm0 +.byte 15,56,205,227 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm4,%xmm7 +.byte 102,15,58,15,251,4 + nop + paddd %xmm7,%xmm5 +.byte 15,56,204,243 +.byte 15,56,203,202 + movdqa 416-128(%rcx),%xmm0 + paddd %xmm4,%xmm0 +.byte 15,56,205,236 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + movdqa %xmm5,%xmm7 +.byte 102,15,58,15,252,4 +.byte 15,56,203,202 + paddd %xmm7,%xmm6 + + movdqa 448-128(%rcx),%xmm0 + paddd %xmm5,%xmm0 +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 +.byte 15,56,205,245 + movdqa %xmm8,%xmm7 +.byte 15,56,203,202 + + movdqa 480-128(%rcx),%xmm0 + paddd %xmm6,%xmm0 + nop +.byte 15,56,203,209 + pshufd $0x0e,%xmm0,%xmm0 + decq %rdx + nop +.byte 15,56,203,202 + + paddd %xmm10,%xmm2 + paddd %xmm9,%xmm1 + jnz L$oop_shaext + + pshufd $0xb1,%xmm2,%xmm2 + pshufd $0x1b,%xmm1,%xmm7 + pshufd $0xb1,%xmm1,%xmm1 + punpckhqdq %xmm2,%xmm1 +.byte 102,15,58,15,215,8 + + movdqu %xmm1,(%rdi) + movdqu %xmm2,16(%rdi) + .byte 0xf3,0xc3 + + + +.p2align 6 +sha256_block_data_order_ssse3: + +L$ssse3_shortcut: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + shlq $4,%rdx + subq $96,%rsp + leaq (%rsi,%rdx,4),%rdx + andq $-64,%rsp + movq %rdi,64+0(%rsp) + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + movq %rax,88(%rsp) + +L$prologue_ssse3: + + movl 0(%rdi),%eax + movl 4(%rdi),%ebx + movl 8(%rdi),%ecx + movl 12(%rdi),%edx + movl 16(%rdi),%r8d + movl 20(%rdi),%r9d + movl 24(%rdi),%r10d + movl 28(%rdi),%r11d + + + jmp L$loop_ssse3 +.p2align 4 +L$loop_ssse3: + movdqa K256+512(%rip),%xmm7 + movdqu 0(%rsi),%xmm0 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 +.byte 102,15,56,0,199 + movdqu 48(%rsi),%xmm3 + leaq K256(%rip),%rbp +.byte 102,15,56,0,207 + movdqa 0(%rbp),%xmm4 + movdqa 32(%rbp),%xmm5 +.byte 102,15,56,0,215 + paddd %xmm0,%xmm4 + movdqa 64(%rbp),%xmm6 +.byte 102,15,56,0,223 + movdqa 96(%rbp),%xmm7 + paddd %xmm1,%xmm5 + paddd %xmm2,%xmm6 + paddd %xmm3,%xmm7 + movdqa %xmm4,0(%rsp) + movl %eax,%r14d + movdqa %xmm5,16(%rsp) + movl %ebx,%edi + movdqa %xmm6,32(%rsp) + xorl %ecx,%edi + movdqa %xmm7,48(%rsp) + movl %r8d,%r13d + jmp L$ssse3_00_47 + +.p2align 4 +L$ssse3_00_47: + subq $-128,%rbp + rorl $14,%r13d + movdqa %xmm1,%xmm4 + movl %r14d,%eax + movl %r9d,%r12d + movdqa %xmm3,%xmm7 + rorl $9,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + rorl $5,%r13d + xorl %eax,%r14d +.byte 102,15,58,15,224,4 + andl %r8d,%r12d + xorl %r8d,%r13d +.byte 102,15,58,15,250,4 + addl 0(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + rorl $11,%r14d + movdqa %xmm4,%xmm5 + xorl %ebx,%r15d + addl %r12d,%r11d + movdqa %xmm4,%xmm6 + rorl $6,%r13d + andl %r15d,%edi + psrld $3,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + paddd %xmm7,%xmm0 + rorl $2,%r14d + addl %r11d,%edx + psrld $7,%xmm6 + addl %edi,%r11d + movl %edx,%r13d + pshufd $250,%xmm3,%xmm7 + addl %r11d,%r14d + rorl $14,%r13d + pslld $14,%xmm5 + movl %r14d,%r11d + movl %r8d,%r12d + pxor %xmm6,%xmm4 + rorl $9,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + rorl $5,%r13d + psrld $11,%xmm6 + xorl %r11d,%r14d + pxor %xmm5,%xmm4 + andl %edx,%r12d + xorl %edx,%r13d + pslld $11,%xmm5 + addl 4(%rsp),%r10d + movl %r11d,%edi + pxor %xmm6,%xmm4 + xorl %r9d,%r12d + rorl $11,%r14d + movdqa %xmm7,%xmm6 + xorl %eax,%edi + addl %r12d,%r10d + pxor %xmm5,%xmm4 + rorl $6,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + psrld $10,%xmm7 + addl %r13d,%r10d + xorl %eax,%r15d + paddd %xmm4,%xmm0 + rorl $2,%r14d + addl %r10d,%ecx + psrlq $17,%xmm6 + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + pxor %xmm6,%xmm7 + rorl $14,%r13d + movl %r14d,%r10d + movl %edx,%r12d + rorl $9,%r14d + psrlq $2,%xmm6 + xorl %ecx,%r13d + xorl %r8d,%r12d + pxor %xmm6,%xmm7 + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + pshufd $128,%xmm7,%xmm7 + xorl %ecx,%r13d + addl 8(%rsp),%r9d + movl %r10d,%r15d + psrldq $8,%xmm7 + xorl %r8d,%r12d + rorl $11,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + rorl $6,%r13d + paddd %xmm7,%xmm0 + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + pshufd $80,%xmm0,%xmm7 + xorl %r11d,%edi + rorl $2,%r14d + addl %r9d,%ebx + movdqa %xmm7,%xmm6 + addl %edi,%r9d + movl %ebx,%r13d + psrld $10,%xmm7 + addl %r9d,%r14d + rorl $14,%r13d + psrlq $17,%xmm6 + movl %r14d,%r9d + movl %ecx,%r12d + pxor %xmm6,%xmm7 + rorl $9,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + psrlq $2,%xmm6 + andl %ebx,%r12d + xorl %ebx,%r13d + addl 12(%rsp),%r8d + pxor %xmm6,%xmm7 + movl %r9d,%edi + xorl %edx,%r12d + rorl $11,%r14d + pshufd $8,%xmm7,%xmm7 + xorl %r10d,%edi + addl %r12d,%r8d + movdqa 0(%rbp),%xmm6 + rorl $6,%r13d + andl %edi,%r15d + pslldq $8,%xmm7 + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + paddd %xmm7,%xmm0 + rorl $2,%r14d + addl %r8d,%eax + addl %r15d,%r8d + paddd %xmm0,%xmm6 + movl %eax,%r13d + addl %r8d,%r14d + movdqa %xmm6,0(%rsp) + rorl $14,%r13d + movdqa %xmm2,%xmm4 + movl %r14d,%r8d + movl %ebx,%r12d + movdqa %xmm0,%xmm7 + rorl $9,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + rorl $5,%r13d + xorl %r8d,%r14d +.byte 102,15,58,15,225,4 + andl %eax,%r12d + xorl %eax,%r13d +.byte 102,15,58,15,251,4 + addl 16(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + rorl $11,%r14d + movdqa %xmm4,%xmm5 + xorl %r9d,%r15d + addl %r12d,%edx + movdqa %xmm4,%xmm6 + rorl $6,%r13d + andl %r15d,%edi + psrld $3,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + paddd %xmm7,%xmm1 + rorl $2,%r14d + addl %edx,%r11d + psrld $7,%xmm6 + addl %edi,%edx + movl %r11d,%r13d + pshufd $250,%xmm0,%xmm7 + addl %edx,%r14d + rorl $14,%r13d + pslld $14,%xmm5 + movl %r14d,%edx + movl %eax,%r12d + pxor %xmm6,%xmm4 + rorl $9,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + rorl $5,%r13d + psrld $11,%xmm6 + xorl %edx,%r14d + pxor %xmm5,%xmm4 + andl %r11d,%r12d + xorl %r11d,%r13d + pslld $11,%xmm5 + addl 20(%rsp),%ecx + movl %edx,%edi + pxor %xmm6,%xmm4 + xorl %ebx,%r12d + rorl $11,%r14d + movdqa %xmm7,%xmm6 + xorl %r8d,%edi + addl %r12d,%ecx + pxor %xmm5,%xmm4 + rorl $6,%r13d + andl %edi,%r15d + xorl %edx,%r14d + psrld $10,%xmm7 + addl %r13d,%ecx + xorl %r8d,%r15d + paddd %xmm4,%xmm1 + rorl $2,%r14d + addl %ecx,%r10d + psrlq $17,%xmm6 + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + pxor %xmm6,%xmm7 + rorl $14,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + rorl $9,%r14d + psrlq $2,%xmm6 + xorl %r10d,%r13d + xorl %eax,%r12d + pxor %xmm6,%xmm7 + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + pshufd $128,%xmm7,%xmm7 + xorl %r10d,%r13d + addl 24(%rsp),%ebx + movl %ecx,%r15d + psrldq $8,%xmm7 + xorl %eax,%r12d + rorl $11,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + rorl $6,%r13d + paddd %xmm7,%xmm1 + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + pshufd $80,%xmm1,%xmm7 + xorl %edx,%edi + rorl $2,%r14d + addl %ebx,%r9d + movdqa %xmm7,%xmm6 + addl %edi,%ebx + movl %r9d,%r13d + psrld $10,%xmm7 + addl %ebx,%r14d + rorl $14,%r13d + psrlq $17,%xmm6 + movl %r14d,%ebx + movl %r10d,%r12d + pxor %xmm6,%xmm7 + rorl $9,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + psrlq $2,%xmm6 + andl %r9d,%r12d + xorl %r9d,%r13d + addl 28(%rsp),%eax + pxor %xmm6,%xmm7 + movl %ebx,%edi + xorl %r11d,%r12d + rorl $11,%r14d + pshufd $8,%xmm7,%xmm7 + xorl %ecx,%edi + addl %r12d,%eax + movdqa 32(%rbp),%xmm6 + rorl $6,%r13d + andl %edi,%r15d + pslldq $8,%xmm7 + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + paddd %xmm7,%xmm1 + rorl $2,%r14d + addl %eax,%r8d + addl %r15d,%eax + paddd %xmm1,%xmm6 + movl %r8d,%r13d + addl %eax,%r14d + movdqa %xmm6,16(%rsp) + rorl $14,%r13d + movdqa %xmm3,%xmm4 + movl %r14d,%eax + movl %r9d,%r12d + movdqa %xmm1,%xmm7 + rorl $9,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + rorl $5,%r13d + xorl %eax,%r14d +.byte 102,15,58,15,226,4 + andl %r8d,%r12d + xorl %r8d,%r13d +.byte 102,15,58,15,248,4 + addl 32(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + rorl $11,%r14d + movdqa %xmm4,%xmm5 + xorl %ebx,%r15d + addl %r12d,%r11d + movdqa %xmm4,%xmm6 + rorl $6,%r13d + andl %r15d,%edi + psrld $3,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + paddd %xmm7,%xmm2 + rorl $2,%r14d + addl %r11d,%edx + psrld $7,%xmm6 + addl %edi,%r11d + movl %edx,%r13d + pshufd $250,%xmm1,%xmm7 + addl %r11d,%r14d + rorl $14,%r13d + pslld $14,%xmm5 + movl %r14d,%r11d + movl %r8d,%r12d + pxor %xmm6,%xmm4 + rorl $9,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + rorl $5,%r13d + psrld $11,%xmm6 + xorl %r11d,%r14d + pxor %xmm5,%xmm4 + andl %edx,%r12d + xorl %edx,%r13d + pslld $11,%xmm5 + addl 36(%rsp),%r10d + movl %r11d,%edi + pxor %xmm6,%xmm4 + xorl %r9d,%r12d + rorl $11,%r14d + movdqa %xmm7,%xmm6 + xorl %eax,%edi + addl %r12d,%r10d + pxor %xmm5,%xmm4 + rorl $6,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + psrld $10,%xmm7 + addl %r13d,%r10d + xorl %eax,%r15d + paddd %xmm4,%xmm2 + rorl $2,%r14d + addl %r10d,%ecx + psrlq $17,%xmm6 + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + pxor %xmm6,%xmm7 + rorl $14,%r13d + movl %r14d,%r10d + movl %edx,%r12d + rorl $9,%r14d + psrlq $2,%xmm6 + xorl %ecx,%r13d + xorl %r8d,%r12d + pxor %xmm6,%xmm7 + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + pshufd $128,%xmm7,%xmm7 + xorl %ecx,%r13d + addl 40(%rsp),%r9d + movl %r10d,%r15d + psrldq $8,%xmm7 + xorl %r8d,%r12d + rorl $11,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + rorl $6,%r13d + paddd %xmm7,%xmm2 + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + pshufd $80,%xmm2,%xmm7 + xorl %r11d,%edi + rorl $2,%r14d + addl %r9d,%ebx + movdqa %xmm7,%xmm6 + addl %edi,%r9d + movl %ebx,%r13d + psrld $10,%xmm7 + addl %r9d,%r14d + rorl $14,%r13d + psrlq $17,%xmm6 + movl %r14d,%r9d + movl %ecx,%r12d + pxor %xmm6,%xmm7 + rorl $9,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + psrlq $2,%xmm6 + andl %ebx,%r12d + xorl %ebx,%r13d + addl 44(%rsp),%r8d + pxor %xmm6,%xmm7 + movl %r9d,%edi + xorl %edx,%r12d + rorl $11,%r14d + pshufd $8,%xmm7,%xmm7 + xorl %r10d,%edi + addl %r12d,%r8d + movdqa 64(%rbp),%xmm6 + rorl $6,%r13d + andl %edi,%r15d + pslldq $8,%xmm7 + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + paddd %xmm7,%xmm2 + rorl $2,%r14d + addl %r8d,%eax + addl %r15d,%r8d + paddd %xmm2,%xmm6 + movl %eax,%r13d + addl %r8d,%r14d + movdqa %xmm6,32(%rsp) + rorl $14,%r13d + movdqa %xmm0,%xmm4 + movl %r14d,%r8d + movl %ebx,%r12d + movdqa %xmm2,%xmm7 + rorl $9,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + rorl $5,%r13d + xorl %r8d,%r14d +.byte 102,15,58,15,227,4 + andl %eax,%r12d + xorl %eax,%r13d +.byte 102,15,58,15,249,4 + addl 48(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + rorl $11,%r14d + movdqa %xmm4,%xmm5 + xorl %r9d,%r15d + addl %r12d,%edx + movdqa %xmm4,%xmm6 + rorl $6,%r13d + andl %r15d,%edi + psrld $3,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + paddd %xmm7,%xmm3 + rorl $2,%r14d + addl %edx,%r11d + psrld $7,%xmm6 + addl %edi,%edx + movl %r11d,%r13d + pshufd $250,%xmm2,%xmm7 + addl %edx,%r14d + rorl $14,%r13d + pslld $14,%xmm5 + movl %r14d,%edx + movl %eax,%r12d + pxor %xmm6,%xmm4 + rorl $9,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + rorl $5,%r13d + psrld $11,%xmm6 + xorl %edx,%r14d + pxor %xmm5,%xmm4 + andl %r11d,%r12d + xorl %r11d,%r13d + pslld $11,%xmm5 + addl 52(%rsp),%ecx + movl %edx,%edi + pxor %xmm6,%xmm4 + xorl %ebx,%r12d + rorl $11,%r14d + movdqa %xmm7,%xmm6 + xorl %r8d,%edi + addl %r12d,%ecx + pxor %xmm5,%xmm4 + rorl $6,%r13d + andl %edi,%r15d + xorl %edx,%r14d + psrld $10,%xmm7 + addl %r13d,%ecx + xorl %r8d,%r15d + paddd %xmm4,%xmm3 + rorl $2,%r14d + addl %ecx,%r10d + psrlq $17,%xmm6 + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + pxor %xmm6,%xmm7 + rorl $14,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + rorl $9,%r14d + psrlq $2,%xmm6 + xorl %r10d,%r13d + xorl %eax,%r12d + pxor %xmm6,%xmm7 + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + pshufd $128,%xmm7,%xmm7 + xorl %r10d,%r13d + addl 56(%rsp),%ebx + movl %ecx,%r15d + psrldq $8,%xmm7 + xorl %eax,%r12d + rorl $11,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + rorl $6,%r13d + paddd %xmm7,%xmm3 + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + pshufd $80,%xmm3,%xmm7 + xorl %edx,%edi + rorl $2,%r14d + addl %ebx,%r9d + movdqa %xmm7,%xmm6 + addl %edi,%ebx + movl %r9d,%r13d + psrld $10,%xmm7 + addl %ebx,%r14d + rorl $14,%r13d + psrlq $17,%xmm6 + movl %r14d,%ebx + movl %r10d,%r12d + pxor %xmm6,%xmm7 + rorl $9,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + psrlq $2,%xmm6 + andl %r9d,%r12d + xorl %r9d,%r13d + addl 60(%rsp),%eax + pxor %xmm6,%xmm7 + movl %ebx,%edi + xorl %r11d,%r12d + rorl $11,%r14d + pshufd $8,%xmm7,%xmm7 + xorl %ecx,%edi + addl %r12d,%eax + movdqa 96(%rbp),%xmm6 + rorl $6,%r13d + andl %edi,%r15d + pslldq $8,%xmm7 + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + paddd %xmm7,%xmm3 + rorl $2,%r14d + addl %eax,%r8d + addl %r15d,%eax + paddd %xmm3,%xmm6 + movl %r8d,%r13d + addl %eax,%r14d + movdqa %xmm6,48(%rsp) + cmpb $0,131(%rbp) + jne L$ssse3_00_47 + rorl $14,%r13d + movl %r14d,%eax + movl %r9d,%r12d + rorl $9,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + rorl $5,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + rorl $11,%r14d + xorl %ebx,%r15d + addl %r12d,%r11d + rorl $6,%r13d + andl %r15d,%edi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + rorl $2,%r14d + addl %r11d,%edx + addl %edi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + rorl $14,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + rorl $9,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + rorl $5,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + addl 4(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + rorl $11,%r14d + xorl %eax,%edi + addl %r12d,%r10d + rorl $6,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + rorl $2,%r14d + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + rorl $14,%r13d + movl %r14d,%r10d + movl %edx,%r12d + rorl $9,%r14d + xorl %ecx,%r13d + xorl %r8d,%r12d + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + xorl %ecx,%r13d + addl 8(%rsp),%r9d + movl %r10d,%r15d + xorl %r8d,%r12d + rorl $11,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + rorl $6,%r13d + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%edi + rorl $2,%r14d + addl %r9d,%ebx + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + rorl $14,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + rorl $9,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + rorl $11,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + rorl $6,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + rorl $2,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + rorl $14,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + rorl $9,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + rorl $5,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + rorl $11,%r14d + xorl %r9d,%r15d + addl %r12d,%edx + rorl $6,%r13d + andl %r15d,%edi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + rorl $2,%r14d + addl %edx,%r11d + addl %edi,%edx + movl %r11d,%r13d + addl %edx,%r14d + rorl $14,%r13d + movl %r14d,%edx + movl %eax,%r12d + rorl $9,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + rorl $5,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + addl 20(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + rorl $11,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + rorl $6,%r13d + andl %edi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + rorl $2,%r14d + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + rorl $14,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + rorl $9,%r14d + xorl %r10d,%r13d + xorl %eax,%r12d + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + xorl %r10d,%r13d + addl 24(%rsp),%ebx + movl %ecx,%r15d + xorl %eax,%r12d + rorl $11,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + rorl $6,%r13d + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%edi + rorl $2,%r14d + addl %ebx,%r9d + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + rorl $14,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + rorl $9,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + rorl $11,%r14d + xorl %ecx,%edi + addl %r12d,%eax + rorl $6,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + rorl $2,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + rorl $14,%r13d + movl %r14d,%eax + movl %r9d,%r12d + rorl $9,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + rorl $5,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + rorl $11,%r14d + xorl %ebx,%r15d + addl %r12d,%r11d + rorl $6,%r13d + andl %r15d,%edi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + rorl $2,%r14d + addl %r11d,%edx + addl %edi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + rorl $14,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + rorl $9,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + rorl $5,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + addl 36(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + rorl $11,%r14d + xorl %eax,%edi + addl %r12d,%r10d + rorl $6,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + rorl $2,%r14d + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + rorl $14,%r13d + movl %r14d,%r10d + movl %edx,%r12d + rorl $9,%r14d + xorl %ecx,%r13d + xorl %r8d,%r12d + rorl $5,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + xorl %ecx,%r13d + addl 40(%rsp),%r9d + movl %r10d,%r15d + xorl %r8d,%r12d + rorl $11,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + rorl $6,%r13d + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%edi + rorl $2,%r14d + addl %r9d,%ebx + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + rorl $14,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + rorl $9,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + rorl $5,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + rorl $11,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + rorl $6,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + rorl $2,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + rorl $14,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + rorl $9,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + rorl $5,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + rorl $11,%r14d + xorl %r9d,%r15d + addl %r12d,%edx + rorl $6,%r13d + andl %r15d,%edi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + rorl $2,%r14d + addl %edx,%r11d + addl %edi,%edx + movl %r11d,%r13d + addl %edx,%r14d + rorl $14,%r13d + movl %r14d,%edx + movl %eax,%r12d + rorl $9,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + rorl $5,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + addl 52(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + rorl $11,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + rorl $6,%r13d + andl %edi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + rorl $2,%r14d + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + rorl $14,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + rorl $9,%r14d + xorl %r10d,%r13d + xorl %eax,%r12d + rorl $5,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + xorl %r10d,%r13d + addl 56(%rsp),%ebx + movl %ecx,%r15d + xorl %eax,%r12d + rorl $11,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + rorl $6,%r13d + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%edi + rorl $2,%r14d + addl %ebx,%r9d + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + rorl $14,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + rorl $9,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + rorl $5,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + rorl $11,%r14d + xorl %ecx,%edi + addl %r12d,%eax + rorl $6,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + rorl $2,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + movq 64+0(%rsp),%rdi + movl %r14d,%eax + + addl 0(%rdi),%eax + leaq 64(%rsi),%rsi + addl 4(%rdi),%ebx + addl 8(%rdi),%ecx + addl 12(%rdi),%edx + addl 16(%rdi),%r8d + addl 20(%rdi),%r9d + addl 24(%rdi),%r10d + addl 28(%rdi),%r11d + + cmpq 64+16(%rsp),%rsi + + movl %eax,0(%rdi) + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + jb L$loop_ssse3 + + movq 88(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue_ssse3: + .byte 0xf3,0xc3 + + + +.p2align 6 +sha256_block_data_order_avx: + +L$avx_shortcut: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + shlq $4,%rdx + subq $96,%rsp + leaq (%rsi,%rdx,4),%rdx + andq $-64,%rsp + movq %rdi,64+0(%rsp) + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + movq %rax,88(%rsp) + +L$prologue_avx: + + vzeroupper + movl 0(%rdi),%eax + movl 4(%rdi),%ebx + movl 8(%rdi),%ecx + movl 12(%rdi),%edx + movl 16(%rdi),%r8d + movl 20(%rdi),%r9d + movl 24(%rdi),%r10d + movl 28(%rdi),%r11d + vmovdqa K256+512+32(%rip),%xmm8 + vmovdqa K256+512+64(%rip),%xmm9 + jmp L$loop_avx +.p2align 4 +L$loop_avx: + vmovdqa K256+512(%rip),%xmm7 + vmovdqu 0(%rsi),%xmm0 + vmovdqu 16(%rsi),%xmm1 + vmovdqu 32(%rsi),%xmm2 + vmovdqu 48(%rsi),%xmm3 + vpshufb %xmm7,%xmm0,%xmm0 + leaq K256(%rip),%rbp + vpshufb %xmm7,%xmm1,%xmm1 + vpshufb %xmm7,%xmm2,%xmm2 + vpaddd 0(%rbp),%xmm0,%xmm4 + vpshufb %xmm7,%xmm3,%xmm3 + vpaddd 32(%rbp),%xmm1,%xmm5 + vpaddd 64(%rbp),%xmm2,%xmm6 + vpaddd 96(%rbp),%xmm3,%xmm7 + vmovdqa %xmm4,0(%rsp) + movl %eax,%r14d + vmovdqa %xmm5,16(%rsp) + movl %ebx,%edi + vmovdqa %xmm6,32(%rsp) + xorl %ecx,%edi + vmovdqa %xmm7,48(%rsp) + movl %r8d,%r13d + jmp L$avx_00_47 + +.p2align 4 +L$avx_00_47: + subq $-128,%rbp + vpalignr $4,%xmm0,%xmm1,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + vpalignr $4,%xmm2,%xmm3,%xmm7 + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpaddd %xmm7,%xmm0,%xmm0 + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + vpshufd $250,%xmm3,%xmm7 + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + vpsrld $11,%xmm6,%xmm6 + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 4(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + vpaddd %xmm4,%xmm0,%xmm0 + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + vpxor %xmm7,%xmm6,%xmm6 + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + vpaddd %xmm6,%xmm0,%xmm0 + andl %ecx,%r12d + xorl %ecx,%r13d + addl 8(%rsp),%r9d + vpshufd $80,%xmm0,%xmm7 + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + vpxor %xmm7,%xmm6,%xmm6 + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + vpaddd %xmm6,%xmm0,%xmm0 + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vpaddd 0(%rbp),%xmm0,%xmm6 + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,0(%rsp) + vpalignr $4,%xmm1,%xmm2,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + vpalignr $4,%xmm3,%xmm0,%xmm7 + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpaddd %xmm7,%xmm1,%xmm1 + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + vpshufd $250,%xmm0,%xmm7 + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + vpsrld $11,%xmm6,%xmm6 + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 20(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + vpaddd %xmm4,%xmm1,%xmm1 + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + vpaddd %xmm6,%xmm1,%xmm1 + andl %r10d,%r12d + xorl %r10d,%r13d + addl 24(%rsp),%ebx + vpshufd $80,%xmm1,%xmm7 + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + vpxor %xmm7,%xmm6,%xmm6 + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + vpaddd %xmm6,%xmm1,%xmm1 + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpaddd 32(%rbp),%xmm1,%xmm6 + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,16(%rsp) + vpalignr $4,%xmm2,%xmm3,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + vpalignr $4,%xmm0,%xmm1,%xmm7 + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + vpaddd %xmm7,%xmm2,%xmm2 + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + vpshufd $250,%xmm1,%xmm7 + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + vpsrld $11,%xmm6,%xmm6 + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 36(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + vpaddd %xmm4,%xmm2,%xmm2 + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + vpxor %xmm7,%xmm6,%xmm6 + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + vpaddd %xmm6,%xmm2,%xmm2 + andl %ecx,%r12d + xorl %ecx,%r13d + addl 40(%rsp),%r9d + vpshufd $80,%xmm2,%xmm7 + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + vpxor %xmm7,%xmm6,%xmm6 + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + vpaddd %xmm6,%xmm2,%xmm2 + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + vpaddd 64(%rbp),%xmm2,%xmm6 + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + vmovdqa %xmm6,32(%rsp) + vpalignr $4,%xmm3,%xmm0,%xmm4 + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + vpalignr $4,%xmm1,%xmm2,%xmm7 + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + vpsrld $7,%xmm4,%xmm6 + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + vpaddd %xmm7,%xmm3,%xmm3 + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + vpsrld $3,%xmm4,%xmm7 + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + vpslld $14,%xmm4,%xmm5 + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + vpxor %xmm6,%xmm7,%xmm4 + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + vpshufd $250,%xmm2,%xmm7 + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + vpsrld $11,%xmm6,%xmm6 + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + vpxor %xmm5,%xmm4,%xmm4 + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + vpslld $11,%xmm5,%xmm5 + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + vpxor %xmm6,%xmm4,%xmm4 + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + vpsrld $10,%xmm7,%xmm6 + addl 52(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + vpxor %xmm5,%xmm4,%xmm4 + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + vpsrlq $17,%xmm7,%xmm7 + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + vpaddd %xmm4,%xmm3,%xmm3 + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + vpxor %xmm7,%xmm6,%xmm6 + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + vpsrlq $2,%xmm7,%xmm7 + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + vpxor %xmm7,%xmm6,%xmm6 + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + vpshufb %xmm8,%xmm6,%xmm6 + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + vpaddd %xmm6,%xmm3,%xmm3 + andl %r10d,%r12d + xorl %r10d,%r13d + addl 56(%rsp),%ebx + vpshufd $80,%xmm3,%xmm7 + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + vpsrld $10,%xmm7,%xmm6 + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + vpsrlq $17,%xmm7,%xmm7 + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + vpxor %xmm7,%xmm6,%xmm6 + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + vpsrlq $2,%xmm7,%xmm7 + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + vpxor %xmm7,%xmm6,%xmm6 + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + vpshufb %xmm9,%xmm6,%xmm6 + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + vpaddd %xmm6,%xmm3,%xmm3 + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + vpaddd 96(%rbp),%xmm3,%xmm6 + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + vmovdqa %xmm6,48(%rsp) + cmpb $0,131(%rbp) + jne L$avx_00_47 + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + xorl %r8d,%r13d + addl 0(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + addl 4(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + xorl %ecx,%r13d + addl 8(%rsp),%r9d + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + xorl %ebx,%r13d + addl 12(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + xorl %eax,%r13d + addl 16(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + addl 20(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + xorl %r10d,%r13d + addl 24(%rsp),%ebx + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + xorl %r9d,%r13d + addl 28(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%eax + movl %r9d,%r12d + shrdl $9,%r14d,%r14d + xorl %r8d,%r13d + xorl %r10d,%r12d + shrdl $5,%r13d,%r13d + xorl %eax,%r14d + andl %r8d,%r12d + xorl %r8d,%r13d + addl 32(%rsp),%r11d + movl %eax,%r15d + xorl %r10d,%r12d + shrdl $11,%r14d,%r14d + xorl %ebx,%r15d + addl %r12d,%r11d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %eax,%r14d + addl %r13d,%r11d + xorl %ebx,%edi + shrdl $2,%r14d,%r14d + addl %r11d,%edx + addl %edi,%r11d + movl %edx,%r13d + addl %r11d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r11d + movl %r8d,%r12d + shrdl $9,%r14d,%r14d + xorl %edx,%r13d + xorl %r9d,%r12d + shrdl $5,%r13d,%r13d + xorl %r11d,%r14d + andl %edx,%r12d + xorl %edx,%r13d + addl 36(%rsp),%r10d + movl %r11d,%edi + xorl %r9d,%r12d + shrdl $11,%r14d,%r14d + xorl %eax,%edi + addl %r12d,%r10d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r11d,%r14d + addl %r13d,%r10d + xorl %eax,%r15d + shrdl $2,%r14d,%r14d + addl %r10d,%ecx + addl %r15d,%r10d + movl %ecx,%r13d + addl %r10d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r10d + movl %edx,%r12d + shrdl $9,%r14d,%r14d + xorl %ecx,%r13d + xorl %r8d,%r12d + shrdl $5,%r13d,%r13d + xorl %r10d,%r14d + andl %ecx,%r12d + xorl %ecx,%r13d + addl 40(%rsp),%r9d + movl %r10d,%r15d + xorl %r8d,%r12d + shrdl $11,%r14d,%r14d + xorl %r11d,%r15d + addl %r12d,%r9d + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r10d,%r14d + addl %r13d,%r9d + xorl %r11d,%edi + shrdl $2,%r14d,%r14d + addl %r9d,%ebx + addl %edi,%r9d + movl %ebx,%r13d + addl %r9d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r9d + movl %ecx,%r12d + shrdl $9,%r14d,%r14d + xorl %ebx,%r13d + xorl %edx,%r12d + shrdl $5,%r13d,%r13d + xorl %r9d,%r14d + andl %ebx,%r12d + xorl %ebx,%r13d + addl 44(%rsp),%r8d + movl %r9d,%edi + xorl %edx,%r12d + shrdl $11,%r14d,%r14d + xorl %r10d,%edi + addl %r12d,%r8d + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %r9d,%r14d + addl %r13d,%r8d + xorl %r10d,%r15d + shrdl $2,%r14d,%r14d + addl %r8d,%eax + addl %r15d,%r8d + movl %eax,%r13d + addl %r8d,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%r8d + movl %ebx,%r12d + shrdl $9,%r14d,%r14d + xorl %eax,%r13d + xorl %ecx,%r12d + shrdl $5,%r13d,%r13d + xorl %r8d,%r14d + andl %eax,%r12d + xorl %eax,%r13d + addl 48(%rsp),%edx + movl %r8d,%r15d + xorl %ecx,%r12d + shrdl $11,%r14d,%r14d + xorl %r9d,%r15d + addl %r12d,%edx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %r8d,%r14d + addl %r13d,%edx + xorl %r9d,%edi + shrdl $2,%r14d,%r14d + addl %edx,%r11d + addl %edi,%edx + movl %r11d,%r13d + addl %edx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%edx + movl %eax,%r12d + shrdl $9,%r14d,%r14d + xorl %r11d,%r13d + xorl %ebx,%r12d + shrdl $5,%r13d,%r13d + xorl %edx,%r14d + andl %r11d,%r12d + xorl %r11d,%r13d + addl 52(%rsp),%ecx + movl %edx,%edi + xorl %ebx,%r12d + shrdl $11,%r14d,%r14d + xorl %r8d,%edi + addl %r12d,%ecx + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %edx,%r14d + addl %r13d,%ecx + xorl %r8d,%r15d + shrdl $2,%r14d,%r14d + addl %ecx,%r10d + addl %r15d,%ecx + movl %r10d,%r13d + addl %ecx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ecx + movl %r11d,%r12d + shrdl $9,%r14d,%r14d + xorl %r10d,%r13d + xorl %eax,%r12d + shrdl $5,%r13d,%r13d + xorl %ecx,%r14d + andl %r10d,%r12d + xorl %r10d,%r13d + addl 56(%rsp),%ebx + movl %ecx,%r15d + xorl %eax,%r12d + shrdl $11,%r14d,%r14d + xorl %edx,%r15d + addl %r12d,%ebx + shrdl $6,%r13d,%r13d + andl %r15d,%edi + xorl %ecx,%r14d + addl %r13d,%ebx + xorl %edx,%edi + shrdl $2,%r14d,%r14d + addl %ebx,%r9d + addl %edi,%ebx + movl %r9d,%r13d + addl %ebx,%r14d + shrdl $14,%r13d,%r13d + movl %r14d,%ebx + movl %r10d,%r12d + shrdl $9,%r14d,%r14d + xorl %r9d,%r13d + xorl %r11d,%r12d + shrdl $5,%r13d,%r13d + xorl %ebx,%r14d + andl %r9d,%r12d + xorl %r9d,%r13d + addl 60(%rsp),%eax + movl %ebx,%edi + xorl %r11d,%r12d + shrdl $11,%r14d,%r14d + xorl %ecx,%edi + addl %r12d,%eax + shrdl $6,%r13d,%r13d + andl %edi,%r15d + xorl %ebx,%r14d + addl %r13d,%eax + xorl %ecx,%r15d + shrdl $2,%r14d,%r14d + addl %eax,%r8d + addl %r15d,%eax + movl %r8d,%r13d + addl %eax,%r14d + movq 64+0(%rsp),%rdi + movl %r14d,%eax + + addl 0(%rdi),%eax + leaq 64(%rsi),%rsi + addl 4(%rdi),%ebx + addl 8(%rdi),%ecx + addl 12(%rdi),%edx + addl 16(%rdi),%r8d + addl 20(%rdi),%r9d + addl 24(%rdi),%r10d + addl 28(%rdi),%r11d + + cmpq 64+16(%rsp),%rsi + + movl %eax,0(%rdi) + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + jb L$loop_avx + + movq 88(%rsp),%rsi + + vzeroupper + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue_avx: + .byte 0xf3,0xc3 + + + +.p2align 6 +sha256_block_data_order_avx2: + +L$avx2_shortcut: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $544,%rsp + shlq $4,%rdx + andq $-1024,%rsp + leaq (%rsi,%rdx,4),%rdx + addq $448,%rsp + movq %rdi,64+0(%rsp) + movq %rsi,64+8(%rsp) + movq %rdx,64+16(%rsp) + movq %rax,88(%rsp) + +L$prologue_avx2: + + vzeroupper + subq $-64,%rsi + movl 0(%rdi),%eax + movq %rsi,%r12 + movl 4(%rdi),%ebx + cmpq %rdx,%rsi + movl 8(%rdi),%ecx + cmoveq %rsp,%r12 + movl 12(%rdi),%edx + movl 16(%rdi),%r8d + movl 20(%rdi),%r9d + movl 24(%rdi),%r10d + movl 28(%rdi),%r11d + vmovdqa K256+512+32(%rip),%ymm8 + vmovdqa K256+512+64(%rip),%ymm9 + jmp L$oop_avx2 +.p2align 4 +L$oop_avx2: + vmovdqa K256+512(%rip),%ymm7 + vmovdqu -64+0(%rsi),%xmm0 + vmovdqu -64+16(%rsi),%xmm1 + vmovdqu -64+32(%rsi),%xmm2 + vmovdqu -64+48(%rsi),%xmm3 + + vinserti128 $1,(%r12),%ymm0,%ymm0 + vinserti128 $1,16(%r12),%ymm1,%ymm1 + vpshufb %ymm7,%ymm0,%ymm0 + vinserti128 $1,32(%r12),%ymm2,%ymm2 + vpshufb %ymm7,%ymm1,%ymm1 + vinserti128 $1,48(%r12),%ymm3,%ymm3 + + leaq K256(%rip),%rbp + vpshufb %ymm7,%ymm2,%ymm2 + vpaddd 0(%rbp),%ymm0,%ymm4 + vpshufb %ymm7,%ymm3,%ymm3 + vpaddd 32(%rbp),%ymm1,%ymm5 + vpaddd 64(%rbp),%ymm2,%ymm6 + vpaddd 96(%rbp),%ymm3,%ymm7 + vmovdqa %ymm4,0(%rsp) + xorl %r14d,%r14d + vmovdqa %ymm5,32(%rsp) + + movq 88(%rsp),%rdi + + leaq -64(%rsp),%rsp + + + + movq %rdi,-8(%rsp) + + movl %ebx,%edi + vmovdqa %ymm6,0(%rsp) + xorl %ecx,%edi + vmovdqa %ymm7,32(%rsp) + movl %r9d,%r12d + subq $-32*4,%rbp + jmp L$avx2_00_47 + +.p2align 4 +L$avx2_00_47: + leaq -64(%rsp),%rsp + + + pushq 64-8(%rsp) + + leaq 8(%rsp),%rsp + + vpalignr $4,%ymm0,%ymm1,%ymm4 + addl 0+128(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + vpalignr $4,%ymm2,%ymm3,%ymm7 + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + vpsrld $7,%ymm4,%ymm6 + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + vpaddd %ymm7,%ymm0,%ymm0 + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %ebx,%edi + vpshufd $250,%ymm3,%ymm7 + xorl %r13d,%r14d + leal (%r11,%rdi,1),%r11d + movl %r8d,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 4+128(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%edx,%edi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + vpslld $11,%ymm5,%ymm5 + andnl %r9d,%edx,%r12d + xorl %edi,%r13d + rorxl $6,%edx,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%edi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%edi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + vpsrlq $17,%ymm7,%ymm7 + andl %edi,%r15d + xorl %r12d,%r14d + xorl %eax,%r15d + vpaddd %ymm4,%ymm0,%ymm0 + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 8+128(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + vpxor %ymm7,%ymm6,%ymm6 + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + vpshufb %ymm8,%ymm6,%ymm6 + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + vpaddd %ymm6,%ymm0,%ymm0 + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + vpshufd $80,%ymm0,%ymm7 + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + vpsrld $10,%ymm7,%ymm6 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r11d,%edi + vpsrlq $17,%ymm7,%ymm7 + xorl %r13d,%r14d + leal (%r9,%rdi,1),%r9d + movl %ecx,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 12+128(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%ebx,%edi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + vpxor %ymm7,%ymm6,%ymm6 + andnl %edx,%ebx,%r12d + xorl %edi,%r13d + rorxl $6,%ebx,%r14d + vpshufb %ymm9,%ymm6,%ymm6 + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%edi + vpaddd %ymm6,%ymm0,%ymm0 + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%edi + vpaddd 0(%rbp),%ymm0,%ymm6 + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + vmovdqa %ymm6,0(%rsp) + vpalignr $4,%ymm1,%ymm2,%ymm4 + addl 32+128(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + vpalignr $4,%ymm3,%ymm0,%ymm7 + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + vpsrld $7,%ymm4,%ymm6 + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + vpaddd %ymm7,%ymm1,%ymm1 + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r9d,%edi + vpshufd $250,%ymm0,%ymm7 + xorl %r13d,%r14d + leal (%rdx,%rdi,1),%edx + movl %eax,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 36+128(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%r11d,%edi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + vpslld $11,%ymm5,%ymm5 + andnl %ebx,%r11d,%r12d + xorl %edi,%r13d + rorxl $6,%r11d,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%edi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%edi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + vpsrlq $17,%ymm7,%ymm7 + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r8d,%r15d + vpaddd %ymm4,%ymm1,%ymm1 + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 40+128(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + vpxor %ymm7,%ymm6,%ymm6 + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + vpshufb %ymm8,%ymm6,%ymm6 + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + vpaddd %ymm6,%ymm1,%ymm1 + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + vpshufd $80,%ymm1,%ymm7 + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + vpsrld $10,%ymm7,%ymm6 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %edx,%edi + vpsrlq $17,%ymm7,%ymm7 + xorl %r13d,%r14d + leal (%rbx,%rdi,1),%ebx + movl %r10d,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 44+128(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%r9d,%edi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + vpxor %ymm7,%ymm6,%ymm6 + andnl %r11d,%r9d,%r12d + xorl %edi,%r13d + rorxl $6,%r9d,%r14d + vpshufb %ymm9,%ymm6,%ymm6 + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%edi + vpaddd %ymm6,%ymm1,%ymm1 + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%edi + vpaddd 32(%rbp),%ymm1,%ymm6 + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + vmovdqa %ymm6,32(%rsp) + leaq -64(%rsp),%rsp + + + pushq 64-8(%rsp) + + leaq 8(%rsp),%rsp + + vpalignr $4,%ymm2,%ymm3,%ymm4 + addl 0+128(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + vpalignr $4,%ymm0,%ymm1,%ymm7 + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + vpsrld $7,%ymm4,%ymm6 + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + vpaddd %ymm7,%ymm2,%ymm2 + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %ebx,%edi + vpshufd $250,%ymm1,%ymm7 + xorl %r13d,%r14d + leal (%r11,%rdi,1),%r11d + movl %r8d,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 4+128(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%edx,%edi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + vpslld $11,%ymm5,%ymm5 + andnl %r9d,%edx,%r12d + xorl %edi,%r13d + rorxl $6,%edx,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%edi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%edi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + vpsrlq $17,%ymm7,%ymm7 + andl %edi,%r15d + xorl %r12d,%r14d + xorl %eax,%r15d + vpaddd %ymm4,%ymm2,%ymm2 + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 8+128(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + vpxor %ymm7,%ymm6,%ymm6 + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + vpshufb %ymm8,%ymm6,%ymm6 + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + vpaddd %ymm6,%ymm2,%ymm2 + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + vpshufd $80,%ymm2,%ymm7 + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + vpsrld $10,%ymm7,%ymm6 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r11d,%edi + vpsrlq $17,%ymm7,%ymm7 + xorl %r13d,%r14d + leal (%r9,%rdi,1),%r9d + movl %ecx,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 12+128(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%ebx,%edi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + vpxor %ymm7,%ymm6,%ymm6 + andnl %edx,%ebx,%r12d + xorl %edi,%r13d + rorxl $6,%ebx,%r14d + vpshufb %ymm9,%ymm6,%ymm6 + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%edi + vpaddd %ymm6,%ymm2,%ymm2 + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%edi + vpaddd 64(%rbp),%ymm2,%ymm6 + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + vmovdqa %ymm6,0(%rsp) + vpalignr $4,%ymm3,%ymm0,%ymm4 + addl 32+128(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + vpalignr $4,%ymm1,%ymm2,%ymm7 + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + vpsrld $7,%ymm4,%ymm6 + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + vpaddd %ymm7,%ymm3,%ymm3 + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + vpsrld $3,%ymm4,%ymm7 + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + vpslld $14,%ymm4,%ymm5 + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + vpxor %ymm6,%ymm7,%ymm4 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r9d,%edi + vpshufd $250,%ymm2,%ymm7 + xorl %r13d,%r14d + leal (%rdx,%rdi,1),%edx + movl %eax,%r12d + vpsrld $11,%ymm6,%ymm6 + addl 36+128(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + vpxor %ymm5,%ymm4,%ymm4 + rorxl $11,%r11d,%edi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + vpslld $11,%ymm5,%ymm5 + andnl %ebx,%r11d,%r12d + xorl %edi,%r13d + rorxl $6,%r11d,%r14d + vpxor %ymm6,%ymm4,%ymm4 + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%edi + vpsrld $10,%ymm7,%ymm6 + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%edi + vpxor %ymm5,%ymm4,%ymm4 + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + vpsrlq $17,%ymm7,%ymm7 + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r8d,%r15d + vpaddd %ymm4,%ymm3,%ymm3 + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 40+128(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + vpxor %ymm7,%ymm6,%ymm6 + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + vpshufb %ymm8,%ymm6,%ymm6 + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + vpaddd %ymm6,%ymm3,%ymm3 + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + vpshufd $80,%ymm3,%ymm7 + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + vpsrld $10,%ymm7,%ymm6 + andl %r15d,%edi + xorl %r12d,%r14d + xorl %edx,%edi + vpsrlq $17,%ymm7,%ymm7 + xorl %r13d,%r14d + leal (%rbx,%rdi,1),%ebx + movl %r10d,%r12d + vpxor %ymm7,%ymm6,%ymm6 + addl 44+128(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + vpsrlq $2,%ymm7,%ymm7 + rorxl $11,%r9d,%edi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + vpxor %ymm7,%ymm6,%ymm6 + andnl %r11d,%r9d,%r12d + xorl %edi,%r13d + rorxl $6,%r9d,%r14d + vpshufb %ymm9,%ymm6,%ymm6 + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%edi + vpaddd %ymm6,%ymm3,%ymm3 + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%edi + vpaddd 96(%rbp),%ymm3,%ymm6 + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + vmovdqa %ymm6,32(%rsp) + leaq 128(%rbp),%rbp + cmpb $0,3(%rbp) + jne L$avx2_00_47 + addl 0+64(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%edi + xorl %r12d,%r14d + xorl %ebx,%edi + xorl %r13d,%r14d + leal (%r11,%rdi,1),%r11d + movl %r8d,%r12d + addl 4+64(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%edi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %edi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%edi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%edi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %edi,%r15d + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8+64(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r11d,%edi + xorl %r13d,%r14d + leal (%r9,%rdi,1),%r9d + movl %ecx,%r12d + addl 12+64(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%edi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %edi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%edi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%edi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32+64(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r9d,%edi + xorl %r13d,%r14d + leal (%rdx,%rdi,1),%edx + movl %eax,%r12d + addl 36+64(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%edi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %edi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%edi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%edi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40+64(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%edi + xorl %r12d,%r14d + xorl %edx,%edi + xorl %r13d,%r14d + leal (%rbx,%rdi,1),%ebx + movl %r10d,%r12d + addl 44+64(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%edi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %edi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%edi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%edi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + addl 0(%rsp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%edi + xorl %r12d,%r14d + xorl %ebx,%edi + xorl %r13d,%r14d + leal (%r11,%rdi,1),%r11d + movl %r8d,%r12d + addl 4(%rsp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%edi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %edi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%edi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%edi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %edi,%r15d + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8(%rsp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r11d,%edi + xorl %r13d,%r14d + leal (%r9,%rdi,1),%r9d + movl %ecx,%r12d + addl 12(%rsp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%edi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %edi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%edi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%edi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32(%rsp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r9d,%edi + xorl %r13d,%r14d + leal (%rdx,%rdi,1),%edx + movl %eax,%r12d + addl 36(%rsp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%edi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %edi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%edi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%edi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40(%rsp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%edi + xorl %r12d,%r14d + xorl %edx,%edi + xorl %r13d,%r14d + leal (%rbx,%rdi,1),%ebx + movl %r10d,%r12d + addl 44(%rsp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%edi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %edi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%edi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%edi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + movq 512(%rsp),%rdi + addl %r14d,%eax + + leaq 448(%rsp),%rbp + + addl 0(%rdi),%eax + addl 4(%rdi),%ebx + addl 8(%rdi),%ecx + addl 12(%rdi),%edx + addl 16(%rdi),%r8d + addl 20(%rdi),%r9d + addl 24(%rdi),%r10d + addl 28(%rdi),%r11d + + movl %eax,0(%rdi) + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + + cmpq 80(%rbp),%rsi + je L$done_avx2 + + xorl %r14d,%r14d + movl %ebx,%edi + xorl %ecx,%edi + movl %r9d,%r12d + jmp L$ower_avx2 +.p2align 4 +L$ower_avx2: + addl 0+16(%rbp),%r11d + andl %r8d,%r12d + rorxl $25,%r8d,%r13d + rorxl $11,%r8d,%r15d + leal (%rax,%r14,1),%eax + leal (%r11,%r12,1),%r11d + andnl %r10d,%r8d,%r12d + xorl %r15d,%r13d + rorxl $6,%r8d,%r14d + leal (%r11,%r12,1),%r11d + xorl %r14d,%r13d + movl %eax,%r15d + rorxl $22,%eax,%r12d + leal (%r11,%r13,1),%r11d + xorl %ebx,%r15d + rorxl $13,%eax,%r14d + rorxl $2,%eax,%r13d + leal (%rdx,%r11,1),%edx + andl %r15d,%edi + xorl %r12d,%r14d + xorl %ebx,%edi + xorl %r13d,%r14d + leal (%r11,%rdi,1),%r11d + movl %r8d,%r12d + addl 4+16(%rbp),%r10d + andl %edx,%r12d + rorxl $25,%edx,%r13d + rorxl $11,%edx,%edi + leal (%r11,%r14,1),%r11d + leal (%r10,%r12,1),%r10d + andnl %r9d,%edx,%r12d + xorl %edi,%r13d + rorxl $6,%edx,%r14d + leal (%r10,%r12,1),%r10d + xorl %r14d,%r13d + movl %r11d,%edi + rorxl $22,%r11d,%r12d + leal (%r10,%r13,1),%r10d + xorl %eax,%edi + rorxl $13,%r11d,%r14d + rorxl $2,%r11d,%r13d + leal (%rcx,%r10,1),%ecx + andl %edi,%r15d + xorl %r12d,%r14d + xorl %eax,%r15d + xorl %r13d,%r14d + leal (%r10,%r15,1),%r10d + movl %edx,%r12d + addl 8+16(%rbp),%r9d + andl %ecx,%r12d + rorxl $25,%ecx,%r13d + rorxl $11,%ecx,%r15d + leal (%r10,%r14,1),%r10d + leal (%r9,%r12,1),%r9d + andnl %r8d,%ecx,%r12d + xorl %r15d,%r13d + rorxl $6,%ecx,%r14d + leal (%r9,%r12,1),%r9d + xorl %r14d,%r13d + movl %r10d,%r15d + rorxl $22,%r10d,%r12d + leal (%r9,%r13,1),%r9d + xorl %r11d,%r15d + rorxl $13,%r10d,%r14d + rorxl $2,%r10d,%r13d + leal (%rbx,%r9,1),%ebx + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r11d,%edi + xorl %r13d,%r14d + leal (%r9,%rdi,1),%r9d + movl %ecx,%r12d + addl 12+16(%rbp),%r8d + andl %ebx,%r12d + rorxl $25,%ebx,%r13d + rorxl $11,%ebx,%edi + leal (%r9,%r14,1),%r9d + leal (%r8,%r12,1),%r8d + andnl %edx,%ebx,%r12d + xorl %edi,%r13d + rorxl $6,%ebx,%r14d + leal (%r8,%r12,1),%r8d + xorl %r14d,%r13d + movl %r9d,%edi + rorxl $22,%r9d,%r12d + leal (%r8,%r13,1),%r8d + xorl %r10d,%edi + rorxl $13,%r9d,%r14d + rorxl $2,%r9d,%r13d + leal (%rax,%r8,1),%eax + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r10d,%r15d + xorl %r13d,%r14d + leal (%r8,%r15,1),%r8d + movl %ebx,%r12d + addl 32+16(%rbp),%edx + andl %eax,%r12d + rorxl $25,%eax,%r13d + rorxl $11,%eax,%r15d + leal (%r8,%r14,1),%r8d + leal (%rdx,%r12,1),%edx + andnl %ecx,%eax,%r12d + xorl %r15d,%r13d + rorxl $6,%eax,%r14d + leal (%rdx,%r12,1),%edx + xorl %r14d,%r13d + movl %r8d,%r15d + rorxl $22,%r8d,%r12d + leal (%rdx,%r13,1),%edx + xorl %r9d,%r15d + rorxl $13,%r8d,%r14d + rorxl $2,%r8d,%r13d + leal (%r11,%rdx,1),%r11d + andl %r15d,%edi + xorl %r12d,%r14d + xorl %r9d,%edi + xorl %r13d,%r14d + leal (%rdx,%rdi,1),%edx + movl %eax,%r12d + addl 36+16(%rbp),%ecx + andl %r11d,%r12d + rorxl $25,%r11d,%r13d + rorxl $11,%r11d,%edi + leal (%rdx,%r14,1),%edx + leal (%rcx,%r12,1),%ecx + andnl %ebx,%r11d,%r12d + xorl %edi,%r13d + rorxl $6,%r11d,%r14d + leal (%rcx,%r12,1),%ecx + xorl %r14d,%r13d + movl %edx,%edi + rorxl $22,%edx,%r12d + leal (%rcx,%r13,1),%ecx + xorl %r8d,%edi + rorxl $13,%edx,%r14d + rorxl $2,%edx,%r13d + leal (%r10,%rcx,1),%r10d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %r8d,%r15d + xorl %r13d,%r14d + leal (%rcx,%r15,1),%ecx + movl %r11d,%r12d + addl 40+16(%rbp),%ebx + andl %r10d,%r12d + rorxl $25,%r10d,%r13d + rorxl $11,%r10d,%r15d + leal (%rcx,%r14,1),%ecx + leal (%rbx,%r12,1),%ebx + andnl %eax,%r10d,%r12d + xorl %r15d,%r13d + rorxl $6,%r10d,%r14d + leal (%rbx,%r12,1),%ebx + xorl %r14d,%r13d + movl %ecx,%r15d + rorxl $22,%ecx,%r12d + leal (%rbx,%r13,1),%ebx + xorl %edx,%r15d + rorxl $13,%ecx,%r14d + rorxl $2,%ecx,%r13d + leal (%r9,%rbx,1),%r9d + andl %r15d,%edi + xorl %r12d,%r14d + xorl %edx,%edi + xorl %r13d,%r14d + leal (%rbx,%rdi,1),%ebx + movl %r10d,%r12d + addl 44+16(%rbp),%eax + andl %r9d,%r12d + rorxl $25,%r9d,%r13d + rorxl $11,%r9d,%edi + leal (%rbx,%r14,1),%ebx + leal (%rax,%r12,1),%eax + andnl %r11d,%r9d,%r12d + xorl %edi,%r13d + rorxl $6,%r9d,%r14d + leal (%rax,%r12,1),%eax + xorl %r14d,%r13d + movl %ebx,%edi + rorxl $22,%ebx,%r12d + leal (%rax,%r13,1),%eax + xorl %ecx,%edi + rorxl $13,%ebx,%r14d + rorxl $2,%ebx,%r13d + leal (%r8,%rax,1),%r8d + andl %edi,%r15d + xorl %r12d,%r14d + xorl %ecx,%r15d + xorl %r13d,%r14d + leal (%rax,%r15,1),%eax + movl %r9d,%r12d + leaq -64(%rbp),%rbp + cmpq %rsp,%rbp + jae L$ower_avx2 + + movq 512(%rsp),%rdi + addl %r14d,%eax + + leaq 448(%rsp),%rsp + + + + addl 0(%rdi),%eax + addl 4(%rdi),%ebx + addl 8(%rdi),%ecx + addl 12(%rdi),%edx + addl 16(%rdi),%r8d + addl 20(%rdi),%r9d + leaq 128(%rsi),%rsi + addl 24(%rdi),%r10d + movq %rsi,%r12 + addl 28(%rdi),%r11d + cmpq 64+16(%rsp),%rsi + + movl %eax,0(%rdi) + cmoveq %rsp,%r12 + movl %ebx,4(%rdi) + movl %ecx,8(%rdi) + movl %edx,12(%rdi) + movl %r8d,16(%rdi) + movl %r9d,20(%rdi) + movl %r10d,24(%rdi) + movl %r11d,28(%rdi) + + jbe L$oop_avx2 + leaq (%rsp),%rbp + + + + +L$done_avx2: + movq 88(%rbp),%rsi + + vzeroupper + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue_avx2: + .byte 0xf3,0xc3 + + diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha512-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha512-x86_64.s new file mode 100644 index 0000000..6348b0a --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/sha/sha512-x86_64.s @@ -0,0 +1,5461 @@ +.text + + +.globl _sha512_block_data_order + +.p2align 4 +_sha512_block_data_order: + + leaq _OPENSSL_ia32cap_P(%rip),%r11 + movl 0(%r11),%r9d + movl 4(%r11),%r10d + movl 8(%r11),%r11d + testl $2048,%r10d + jnz L$xop_shortcut + andl $296,%r11d + cmpl $296,%r11d + je L$avx2_shortcut + andl $1073741824,%r9d + andl $268435968,%r10d + orl %r9d,%r10d + cmpl $1342177792,%r10d + je L$avx_shortcut + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + shlq $4,%rdx + subq $128+32,%rsp + leaq (%rsi,%rdx,8),%rdx + andq $-64,%rsp + movq %rdi,128+0(%rsp) + movq %rsi,128+8(%rsp) + movq %rdx,128+16(%rsp) + movq %rax,152(%rsp) + +L$prologue: + + movq 0(%rdi),%rax + movq 8(%rdi),%rbx + movq 16(%rdi),%rcx + movq 24(%rdi),%rdx + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + jmp L$loop + +.p2align 4 +L$loop: + movq %rbx,%rdi + leaq K512(%rip),%rbp + xorq %rcx,%rdi + movq 0(%rsi),%r12 + movq %r8,%r13 + movq %rax,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r9,%r15 + + xorq %r8,%r13 + rorq $5,%r14 + xorq %r10,%r15 + + movq %r12,0(%rsp) + xorq %rax,%r14 + andq %r8,%r15 + + rorq $4,%r13 + addq %r11,%r12 + xorq %r10,%r15 + + rorq $6,%r14 + xorq %r8,%r13 + addq %r15,%r12 + + movq %rax,%r15 + addq (%rbp),%r12 + xorq %rax,%r14 + + xorq %rbx,%r15 + rorq $14,%r13 + movq %rbx,%r11 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r11 + addq %r12,%rdx + addq %r12,%r11 + + leaq 8(%rbp),%rbp + addq %r14,%r11 + movq 8(%rsi),%r12 + movq %rdx,%r13 + movq %r11,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r8,%rdi + + xorq %rdx,%r13 + rorq $5,%r14 + xorq %r9,%rdi + + movq %r12,8(%rsp) + xorq %r11,%r14 + andq %rdx,%rdi + + rorq $4,%r13 + addq %r10,%r12 + xorq %r9,%rdi + + rorq $6,%r14 + xorq %rdx,%r13 + addq %rdi,%r12 + + movq %r11,%rdi + addq (%rbp),%r12 + xorq %r11,%r14 + + xorq %rax,%rdi + rorq $14,%r13 + movq %rax,%r10 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r10 + addq %r12,%rcx + addq %r12,%r10 + + leaq 24(%rbp),%rbp + addq %r14,%r10 + movq 16(%rsi),%r12 + movq %rcx,%r13 + movq %r10,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rdx,%r15 + + xorq %rcx,%r13 + rorq $5,%r14 + xorq %r8,%r15 + + movq %r12,16(%rsp) + xorq %r10,%r14 + andq %rcx,%r15 + + rorq $4,%r13 + addq %r9,%r12 + xorq %r8,%r15 + + rorq $6,%r14 + xorq %rcx,%r13 + addq %r15,%r12 + + movq %r10,%r15 + addq (%rbp),%r12 + xorq %r10,%r14 + + xorq %r11,%r15 + rorq $14,%r13 + movq %r11,%r9 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r9 + addq %r12,%rbx + addq %r12,%r9 + + leaq 8(%rbp),%rbp + addq %r14,%r9 + movq 24(%rsi),%r12 + movq %rbx,%r13 + movq %r9,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rcx,%rdi + + xorq %rbx,%r13 + rorq $5,%r14 + xorq %rdx,%rdi + + movq %r12,24(%rsp) + xorq %r9,%r14 + andq %rbx,%rdi + + rorq $4,%r13 + addq %r8,%r12 + xorq %rdx,%rdi + + rorq $6,%r14 + xorq %rbx,%r13 + addq %rdi,%r12 + + movq %r9,%rdi + addq (%rbp),%r12 + xorq %r9,%r14 + + xorq %r10,%rdi + rorq $14,%r13 + movq %r10,%r8 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r8 + addq %r12,%rax + addq %r12,%r8 + + leaq 24(%rbp),%rbp + addq %r14,%r8 + movq 32(%rsi),%r12 + movq %rax,%r13 + movq %r8,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rbx,%r15 + + xorq %rax,%r13 + rorq $5,%r14 + xorq %rcx,%r15 + + movq %r12,32(%rsp) + xorq %r8,%r14 + andq %rax,%r15 + + rorq $4,%r13 + addq %rdx,%r12 + xorq %rcx,%r15 + + rorq $6,%r14 + xorq %rax,%r13 + addq %r15,%r12 + + movq %r8,%r15 + addq (%rbp),%r12 + xorq %r8,%r14 + + xorq %r9,%r15 + rorq $14,%r13 + movq %r9,%rdx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rdx + addq %r12,%r11 + addq %r12,%rdx + + leaq 8(%rbp),%rbp + addq %r14,%rdx + movq 40(%rsi),%r12 + movq %r11,%r13 + movq %rdx,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rax,%rdi + + xorq %r11,%r13 + rorq $5,%r14 + xorq %rbx,%rdi + + movq %r12,40(%rsp) + xorq %rdx,%r14 + andq %r11,%rdi + + rorq $4,%r13 + addq %rcx,%r12 + xorq %rbx,%rdi + + rorq $6,%r14 + xorq %r11,%r13 + addq %rdi,%r12 + + movq %rdx,%rdi + addq (%rbp),%r12 + xorq %rdx,%r14 + + xorq %r8,%rdi + rorq $14,%r13 + movq %r8,%rcx + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rcx + addq %r12,%r10 + addq %r12,%rcx + + leaq 24(%rbp),%rbp + addq %r14,%rcx + movq 48(%rsi),%r12 + movq %r10,%r13 + movq %rcx,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r11,%r15 + + xorq %r10,%r13 + rorq $5,%r14 + xorq %rax,%r15 + + movq %r12,48(%rsp) + xorq %rcx,%r14 + andq %r10,%r15 + + rorq $4,%r13 + addq %rbx,%r12 + xorq %rax,%r15 + + rorq $6,%r14 + xorq %r10,%r13 + addq %r15,%r12 + + movq %rcx,%r15 + addq (%rbp),%r12 + xorq %rcx,%r14 + + xorq %rdx,%r15 + rorq $14,%r13 + movq %rdx,%rbx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rbx + addq %r12,%r9 + addq %r12,%rbx + + leaq 8(%rbp),%rbp + addq %r14,%rbx + movq 56(%rsi),%r12 + movq %r9,%r13 + movq %rbx,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r10,%rdi + + xorq %r9,%r13 + rorq $5,%r14 + xorq %r11,%rdi + + movq %r12,56(%rsp) + xorq %rbx,%r14 + andq %r9,%rdi + + rorq $4,%r13 + addq %rax,%r12 + xorq %r11,%rdi + + rorq $6,%r14 + xorq %r9,%r13 + addq %rdi,%r12 + + movq %rbx,%rdi + addq (%rbp),%r12 + xorq %rbx,%r14 + + xorq %rcx,%rdi + rorq $14,%r13 + movq %rcx,%rax + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rax + addq %r12,%r8 + addq %r12,%rax + + leaq 24(%rbp),%rbp + addq %r14,%rax + movq 64(%rsi),%r12 + movq %r8,%r13 + movq %rax,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r9,%r15 + + xorq %r8,%r13 + rorq $5,%r14 + xorq %r10,%r15 + + movq %r12,64(%rsp) + xorq %rax,%r14 + andq %r8,%r15 + + rorq $4,%r13 + addq %r11,%r12 + xorq %r10,%r15 + + rorq $6,%r14 + xorq %r8,%r13 + addq %r15,%r12 + + movq %rax,%r15 + addq (%rbp),%r12 + xorq %rax,%r14 + + xorq %rbx,%r15 + rorq $14,%r13 + movq %rbx,%r11 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r11 + addq %r12,%rdx + addq %r12,%r11 + + leaq 8(%rbp),%rbp + addq %r14,%r11 + movq 72(%rsi),%r12 + movq %rdx,%r13 + movq %r11,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r8,%rdi + + xorq %rdx,%r13 + rorq $5,%r14 + xorq %r9,%rdi + + movq %r12,72(%rsp) + xorq %r11,%r14 + andq %rdx,%rdi + + rorq $4,%r13 + addq %r10,%r12 + xorq %r9,%rdi + + rorq $6,%r14 + xorq %rdx,%r13 + addq %rdi,%r12 + + movq %r11,%rdi + addq (%rbp),%r12 + xorq %r11,%r14 + + xorq %rax,%rdi + rorq $14,%r13 + movq %rax,%r10 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r10 + addq %r12,%rcx + addq %r12,%r10 + + leaq 24(%rbp),%rbp + addq %r14,%r10 + movq 80(%rsi),%r12 + movq %rcx,%r13 + movq %r10,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rdx,%r15 + + xorq %rcx,%r13 + rorq $5,%r14 + xorq %r8,%r15 + + movq %r12,80(%rsp) + xorq %r10,%r14 + andq %rcx,%r15 + + rorq $4,%r13 + addq %r9,%r12 + xorq %r8,%r15 + + rorq $6,%r14 + xorq %rcx,%r13 + addq %r15,%r12 + + movq %r10,%r15 + addq (%rbp),%r12 + xorq %r10,%r14 + + xorq %r11,%r15 + rorq $14,%r13 + movq %r11,%r9 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r9 + addq %r12,%rbx + addq %r12,%r9 + + leaq 8(%rbp),%rbp + addq %r14,%r9 + movq 88(%rsi),%r12 + movq %rbx,%r13 + movq %r9,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rcx,%rdi + + xorq %rbx,%r13 + rorq $5,%r14 + xorq %rdx,%rdi + + movq %r12,88(%rsp) + xorq %r9,%r14 + andq %rbx,%rdi + + rorq $4,%r13 + addq %r8,%r12 + xorq %rdx,%rdi + + rorq $6,%r14 + xorq %rbx,%r13 + addq %rdi,%r12 + + movq %r9,%rdi + addq (%rbp),%r12 + xorq %r9,%r14 + + xorq %r10,%rdi + rorq $14,%r13 + movq %r10,%r8 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r8 + addq %r12,%rax + addq %r12,%r8 + + leaq 24(%rbp),%rbp + addq %r14,%r8 + movq 96(%rsi),%r12 + movq %rax,%r13 + movq %r8,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rbx,%r15 + + xorq %rax,%r13 + rorq $5,%r14 + xorq %rcx,%r15 + + movq %r12,96(%rsp) + xorq %r8,%r14 + andq %rax,%r15 + + rorq $4,%r13 + addq %rdx,%r12 + xorq %rcx,%r15 + + rorq $6,%r14 + xorq %rax,%r13 + addq %r15,%r12 + + movq %r8,%r15 + addq (%rbp),%r12 + xorq %r8,%r14 + + xorq %r9,%r15 + rorq $14,%r13 + movq %r9,%rdx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rdx + addq %r12,%r11 + addq %r12,%rdx + + leaq 8(%rbp),%rbp + addq %r14,%rdx + movq 104(%rsi),%r12 + movq %r11,%r13 + movq %rdx,%r14 + bswapq %r12 + rorq $23,%r13 + movq %rax,%rdi + + xorq %r11,%r13 + rorq $5,%r14 + xorq %rbx,%rdi + + movq %r12,104(%rsp) + xorq %rdx,%r14 + andq %r11,%rdi + + rorq $4,%r13 + addq %rcx,%r12 + xorq %rbx,%rdi + + rorq $6,%r14 + xorq %r11,%r13 + addq %rdi,%r12 + + movq %rdx,%rdi + addq (%rbp),%r12 + xorq %rdx,%r14 + + xorq %r8,%rdi + rorq $14,%r13 + movq %r8,%rcx + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rcx + addq %r12,%r10 + addq %r12,%rcx + + leaq 24(%rbp),%rbp + addq %r14,%rcx + movq 112(%rsi),%r12 + movq %r10,%r13 + movq %rcx,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r11,%r15 + + xorq %r10,%r13 + rorq $5,%r14 + xorq %rax,%r15 + + movq %r12,112(%rsp) + xorq %rcx,%r14 + andq %r10,%r15 + + rorq $4,%r13 + addq %rbx,%r12 + xorq %rax,%r15 + + rorq $6,%r14 + xorq %r10,%r13 + addq %r15,%r12 + + movq %rcx,%r15 + addq (%rbp),%r12 + xorq %rcx,%r14 + + xorq %rdx,%r15 + rorq $14,%r13 + movq %rdx,%rbx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rbx + addq %r12,%r9 + addq %r12,%rbx + + leaq 8(%rbp),%rbp + addq %r14,%rbx + movq 120(%rsi),%r12 + movq %r9,%r13 + movq %rbx,%r14 + bswapq %r12 + rorq $23,%r13 + movq %r10,%rdi + + xorq %r9,%r13 + rorq $5,%r14 + xorq %r11,%rdi + + movq %r12,120(%rsp) + xorq %rbx,%r14 + andq %r9,%rdi + + rorq $4,%r13 + addq %rax,%r12 + xorq %r11,%rdi + + rorq $6,%r14 + xorq %r9,%r13 + addq %rdi,%r12 + + movq %rbx,%rdi + addq (%rbp),%r12 + xorq %rbx,%r14 + + xorq %rcx,%rdi + rorq $14,%r13 + movq %rcx,%rax + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rax + addq %r12,%r8 + addq %r12,%rax + + leaq 24(%rbp),%rbp + jmp L$rounds_16_xx +.p2align 4 +L$rounds_16_xx: + movq 8(%rsp),%r13 + movq 112(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rax + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 72(%rsp),%r12 + + addq 0(%rsp),%r12 + movq %r8,%r13 + addq %r15,%r12 + movq %rax,%r14 + rorq $23,%r13 + movq %r9,%r15 + + xorq %r8,%r13 + rorq $5,%r14 + xorq %r10,%r15 + + movq %r12,0(%rsp) + xorq %rax,%r14 + andq %r8,%r15 + + rorq $4,%r13 + addq %r11,%r12 + xorq %r10,%r15 + + rorq $6,%r14 + xorq %r8,%r13 + addq %r15,%r12 + + movq %rax,%r15 + addq (%rbp),%r12 + xorq %rax,%r14 + + xorq %rbx,%r15 + rorq $14,%r13 + movq %rbx,%r11 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r11 + addq %r12,%rdx + addq %r12,%r11 + + leaq 8(%rbp),%rbp + movq 16(%rsp),%r13 + movq 120(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r11 + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 80(%rsp),%r12 + + addq 8(%rsp),%r12 + movq %rdx,%r13 + addq %rdi,%r12 + movq %r11,%r14 + rorq $23,%r13 + movq %r8,%rdi + + xorq %rdx,%r13 + rorq $5,%r14 + xorq %r9,%rdi + + movq %r12,8(%rsp) + xorq %r11,%r14 + andq %rdx,%rdi + + rorq $4,%r13 + addq %r10,%r12 + xorq %r9,%rdi + + rorq $6,%r14 + xorq %rdx,%r13 + addq %rdi,%r12 + + movq %r11,%rdi + addq (%rbp),%r12 + xorq %r11,%r14 + + xorq %rax,%rdi + rorq $14,%r13 + movq %rax,%r10 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r10 + addq %r12,%rcx + addq %r12,%r10 + + leaq 24(%rbp),%rbp + movq 24(%rsp),%r13 + movq 0(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r10 + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 88(%rsp),%r12 + + addq 16(%rsp),%r12 + movq %rcx,%r13 + addq %r15,%r12 + movq %r10,%r14 + rorq $23,%r13 + movq %rdx,%r15 + + xorq %rcx,%r13 + rorq $5,%r14 + xorq %r8,%r15 + + movq %r12,16(%rsp) + xorq %r10,%r14 + andq %rcx,%r15 + + rorq $4,%r13 + addq %r9,%r12 + xorq %r8,%r15 + + rorq $6,%r14 + xorq %rcx,%r13 + addq %r15,%r12 + + movq %r10,%r15 + addq (%rbp),%r12 + xorq %r10,%r14 + + xorq %r11,%r15 + rorq $14,%r13 + movq %r11,%r9 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r9 + addq %r12,%rbx + addq %r12,%r9 + + leaq 8(%rbp),%rbp + movq 32(%rsp),%r13 + movq 8(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r9 + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 96(%rsp),%r12 + + addq 24(%rsp),%r12 + movq %rbx,%r13 + addq %rdi,%r12 + movq %r9,%r14 + rorq $23,%r13 + movq %rcx,%rdi + + xorq %rbx,%r13 + rorq $5,%r14 + xorq %rdx,%rdi + + movq %r12,24(%rsp) + xorq %r9,%r14 + andq %rbx,%rdi + + rorq $4,%r13 + addq %r8,%r12 + xorq %rdx,%rdi + + rorq $6,%r14 + xorq %rbx,%r13 + addq %rdi,%r12 + + movq %r9,%rdi + addq (%rbp),%r12 + xorq %r9,%r14 + + xorq %r10,%rdi + rorq $14,%r13 + movq %r10,%r8 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r8 + addq %r12,%rax + addq %r12,%r8 + + leaq 24(%rbp),%rbp + movq 40(%rsp),%r13 + movq 16(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r8 + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 104(%rsp),%r12 + + addq 32(%rsp),%r12 + movq %rax,%r13 + addq %r15,%r12 + movq %r8,%r14 + rorq $23,%r13 + movq %rbx,%r15 + + xorq %rax,%r13 + rorq $5,%r14 + xorq %rcx,%r15 + + movq %r12,32(%rsp) + xorq %r8,%r14 + andq %rax,%r15 + + rorq $4,%r13 + addq %rdx,%r12 + xorq %rcx,%r15 + + rorq $6,%r14 + xorq %rax,%r13 + addq %r15,%r12 + + movq %r8,%r15 + addq (%rbp),%r12 + xorq %r8,%r14 + + xorq %r9,%r15 + rorq $14,%r13 + movq %r9,%rdx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rdx + addq %r12,%r11 + addq %r12,%rdx + + leaq 8(%rbp),%rbp + movq 48(%rsp),%r13 + movq 24(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rdx + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 112(%rsp),%r12 + + addq 40(%rsp),%r12 + movq %r11,%r13 + addq %rdi,%r12 + movq %rdx,%r14 + rorq $23,%r13 + movq %rax,%rdi + + xorq %r11,%r13 + rorq $5,%r14 + xorq %rbx,%rdi + + movq %r12,40(%rsp) + xorq %rdx,%r14 + andq %r11,%rdi + + rorq $4,%r13 + addq %rcx,%r12 + xorq %rbx,%rdi + + rorq $6,%r14 + xorq %r11,%r13 + addq %rdi,%r12 + + movq %rdx,%rdi + addq (%rbp),%r12 + xorq %rdx,%r14 + + xorq %r8,%rdi + rorq $14,%r13 + movq %r8,%rcx + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rcx + addq %r12,%r10 + addq %r12,%rcx + + leaq 24(%rbp),%rbp + movq 56(%rsp),%r13 + movq 32(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rcx + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 120(%rsp),%r12 + + addq 48(%rsp),%r12 + movq %r10,%r13 + addq %r15,%r12 + movq %rcx,%r14 + rorq $23,%r13 + movq %r11,%r15 + + xorq %r10,%r13 + rorq $5,%r14 + xorq %rax,%r15 + + movq %r12,48(%rsp) + xorq %rcx,%r14 + andq %r10,%r15 + + rorq $4,%r13 + addq %rbx,%r12 + xorq %rax,%r15 + + rorq $6,%r14 + xorq %r10,%r13 + addq %r15,%r12 + + movq %rcx,%r15 + addq (%rbp),%r12 + xorq %rcx,%r14 + + xorq %rdx,%r15 + rorq $14,%r13 + movq %rdx,%rbx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rbx + addq %r12,%r9 + addq %r12,%rbx + + leaq 8(%rbp),%rbp + movq 64(%rsp),%r13 + movq 40(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rbx + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 0(%rsp),%r12 + + addq 56(%rsp),%r12 + movq %r9,%r13 + addq %rdi,%r12 + movq %rbx,%r14 + rorq $23,%r13 + movq %r10,%rdi + + xorq %r9,%r13 + rorq $5,%r14 + xorq %r11,%rdi + + movq %r12,56(%rsp) + xorq %rbx,%r14 + andq %r9,%rdi + + rorq $4,%r13 + addq %rax,%r12 + xorq %r11,%rdi + + rorq $6,%r14 + xorq %r9,%r13 + addq %rdi,%r12 + + movq %rbx,%rdi + addq (%rbp),%r12 + xorq %rbx,%r14 + + xorq %rcx,%rdi + rorq $14,%r13 + movq %rcx,%rax + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rax + addq %r12,%r8 + addq %r12,%rax + + leaq 24(%rbp),%rbp + movq 72(%rsp),%r13 + movq 48(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rax + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 8(%rsp),%r12 + + addq 64(%rsp),%r12 + movq %r8,%r13 + addq %r15,%r12 + movq %rax,%r14 + rorq $23,%r13 + movq %r9,%r15 + + xorq %r8,%r13 + rorq $5,%r14 + xorq %r10,%r15 + + movq %r12,64(%rsp) + xorq %rax,%r14 + andq %r8,%r15 + + rorq $4,%r13 + addq %r11,%r12 + xorq %r10,%r15 + + rorq $6,%r14 + xorq %r8,%r13 + addq %r15,%r12 + + movq %rax,%r15 + addq (%rbp),%r12 + xorq %rax,%r14 + + xorq %rbx,%r15 + rorq $14,%r13 + movq %rbx,%r11 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r11 + addq %r12,%rdx + addq %r12,%r11 + + leaq 8(%rbp),%rbp + movq 80(%rsp),%r13 + movq 56(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r11 + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 16(%rsp),%r12 + + addq 72(%rsp),%r12 + movq %rdx,%r13 + addq %rdi,%r12 + movq %r11,%r14 + rorq $23,%r13 + movq %r8,%rdi + + xorq %rdx,%r13 + rorq $5,%r14 + xorq %r9,%rdi + + movq %r12,72(%rsp) + xorq %r11,%r14 + andq %rdx,%rdi + + rorq $4,%r13 + addq %r10,%r12 + xorq %r9,%rdi + + rorq $6,%r14 + xorq %rdx,%r13 + addq %rdi,%r12 + + movq %r11,%rdi + addq (%rbp),%r12 + xorq %r11,%r14 + + xorq %rax,%rdi + rorq $14,%r13 + movq %rax,%r10 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r10 + addq %r12,%rcx + addq %r12,%r10 + + leaq 24(%rbp),%rbp + movq 88(%rsp),%r13 + movq 64(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r10 + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 24(%rsp),%r12 + + addq 80(%rsp),%r12 + movq %rcx,%r13 + addq %r15,%r12 + movq %r10,%r14 + rorq $23,%r13 + movq %rdx,%r15 + + xorq %rcx,%r13 + rorq $5,%r14 + xorq %r8,%r15 + + movq %r12,80(%rsp) + xorq %r10,%r14 + andq %rcx,%r15 + + rorq $4,%r13 + addq %r9,%r12 + xorq %r8,%r15 + + rorq $6,%r14 + xorq %rcx,%r13 + addq %r15,%r12 + + movq %r10,%r15 + addq (%rbp),%r12 + xorq %r10,%r14 + + xorq %r11,%r15 + rorq $14,%r13 + movq %r11,%r9 + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%r9 + addq %r12,%rbx + addq %r12,%r9 + + leaq 8(%rbp),%rbp + movq 96(%rsp),%r13 + movq 72(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r9 + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 32(%rsp),%r12 + + addq 88(%rsp),%r12 + movq %rbx,%r13 + addq %rdi,%r12 + movq %r9,%r14 + rorq $23,%r13 + movq %rcx,%rdi + + xorq %rbx,%r13 + rorq $5,%r14 + xorq %rdx,%rdi + + movq %r12,88(%rsp) + xorq %r9,%r14 + andq %rbx,%rdi + + rorq $4,%r13 + addq %r8,%r12 + xorq %rdx,%rdi + + rorq $6,%r14 + xorq %rbx,%r13 + addq %rdi,%r12 + + movq %r9,%rdi + addq (%rbp),%r12 + xorq %r9,%r14 + + xorq %r10,%rdi + rorq $14,%r13 + movq %r10,%r8 + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%r8 + addq %r12,%rax + addq %r12,%r8 + + leaq 24(%rbp),%rbp + movq 104(%rsp),%r13 + movq 80(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%r8 + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 40(%rsp),%r12 + + addq 96(%rsp),%r12 + movq %rax,%r13 + addq %r15,%r12 + movq %r8,%r14 + rorq $23,%r13 + movq %rbx,%r15 + + xorq %rax,%r13 + rorq $5,%r14 + xorq %rcx,%r15 + + movq %r12,96(%rsp) + xorq %r8,%r14 + andq %rax,%r15 + + rorq $4,%r13 + addq %rdx,%r12 + xorq %rcx,%r15 + + rorq $6,%r14 + xorq %rax,%r13 + addq %r15,%r12 + + movq %r8,%r15 + addq (%rbp),%r12 + xorq %r8,%r14 + + xorq %r9,%r15 + rorq $14,%r13 + movq %r9,%rdx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rdx + addq %r12,%r11 + addq %r12,%rdx + + leaq 8(%rbp),%rbp + movq 112(%rsp),%r13 + movq 88(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rdx + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 48(%rsp),%r12 + + addq 104(%rsp),%r12 + movq %r11,%r13 + addq %rdi,%r12 + movq %rdx,%r14 + rorq $23,%r13 + movq %rax,%rdi + + xorq %r11,%r13 + rorq $5,%r14 + xorq %rbx,%rdi + + movq %r12,104(%rsp) + xorq %rdx,%r14 + andq %r11,%rdi + + rorq $4,%r13 + addq %rcx,%r12 + xorq %rbx,%rdi + + rorq $6,%r14 + xorq %r11,%r13 + addq %rdi,%r12 + + movq %rdx,%rdi + addq (%rbp),%r12 + xorq %rdx,%r14 + + xorq %r8,%rdi + rorq $14,%r13 + movq %r8,%rcx + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rcx + addq %r12,%r10 + addq %r12,%rcx + + leaq 24(%rbp),%rbp + movq 120(%rsp),%r13 + movq 96(%rsp),%r15 + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rcx + movq %r15,%r14 + rorq $42,%r15 + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%r15 + shrq $6,%r14 + + rorq $19,%r15 + xorq %r13,%r12 + xorq %r14,%r15 + addq 56(%rsp),%r12 + + addq 112(%rsp),%r12 + movq %r10,%r13 + addq %r15,%r12 + movq %rcx,%r14 + rorq $23,%r13 + movq %r11,%r15 + + xorq %r10,%r13 + rorq $5,%r14 + xorq %rax,%r15 + + movq %r12,112(%rsp) + xorq %rcx,%r14 + andq %r10,%r15 + + rorq $4,%r13 + addq %rbx,%r12 + xorq %rax,%r15 + + rorq $6,%r14 + xorq %r10,%r13 + addq %r15,%r12 + + movq %rcx,%r15 + addq (%rbp),%r12 + xorq %rcx,%r14 + + xorq %rdx,%r15 + rorq $14,%r13 + movq %rdx,%rbx + + andq %r15,%rdi + rorq $28,%r14 + addq %r13,%r12 + + xorq %rdi,%rbx + addq %r12,%r9 + addq %r12,%rbx + + leaq 8(%rbp),%rbp + movq 0(%rsp),%r13 + movq 104(%rsp),%rdi + + movq %r13,%r12 + rorq $7,%r13 + addq %r14,%rbx + movq %rdi,%r14 + rorq $42,%rdi + + xorq %r12,%r13 + shrq $7,%r12 + rorq $1,%r13 + xorq %r14,%rdi + shrq $6,%r14 + + rorq $19,%rdi + xorq %r13,%r12 + xorq %r14,%rdi + addq 64(%rsp),%r12 + + addq 120(%rsp),%r12 + movq %r9,%r13 + addq %rdi,%r12 + movq %rbx,%r14 + rorq $23,%r13 + movq %r10,%rdi + + xorq %r9,%r13 + rorq $5,%r14 + xorq %r11,%rdi + + movq %r12,120(%rsp) + xorq %rbx,%r14 + andq %r9,%rdi + + rorq $4,%r13 + addq %rax,%r12 + xorq %r11,%rdi + + rorq $6,%r14 + xorq %r9,%r13 + addq %rdi,%r12 + + movq %rbx,%rdi + addq (%rbp),%r12 + xorq %rbx,%r14 + + xorq %rcx,%rdi + rorq $14,%r13 + movq %rcx,%rax + + andq %rdi,%r15 + rorq $28,%r14 + addq %r13,%r12 + + xorq %r15,%rax + addq %r12,%r8 + addq %r12,%rax + + leaq 24(%rbp),%rbp + cmpb $0,7(%rbp) + jnz L$rounds_16_xx + + movq 128+0(%rsp),%rdi + addq %r14,%rax + leaq 128(%rsi),%rsi + + addq 0(%rdi),%rax + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + addq 48(%rdi),%r10 + addq 56(%rdi),%r11 + + cmpq 128+16(%rsp),%rsi + + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + jb L$loop + + movq 152(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue: + .byte 0xf3,0xc3 + + +.p2align 6 + +K512: +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0x06ca6351e003826f,0x142929670a0e6e70 +.quad 0x06ca6351e003826f,0x142929670a0e6e70 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6 +.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6 +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 + +.quad 0x0001020304050607,0x08090a0b0c0d0e0f +.quad 0x0001020304050607,0x08090a0b0c0d0e0f +.byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 + +.p2align 6 +sha512_block_data_order_xop: + +L$xop_shortcut: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + shlq $4,%rdx + subq $160,%rsp + leaq (%rsi,%rdx,8),%rdx + andq $-64,%rsp + movq %rdi,128+0(%rsp) + movq %rsi,128+8(%rsp) + movq %rdx,128+16(%rsp) + movq %rax,152(%rsp) + +L$prologue_xop: + + vzeroupper + movq 0(%rdi),%rax + movq 8(%rdi),%rbx + movq 16(%rdi),%rcx + movq 24(%rdi),%rdx + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + jmp L$loop_xop +.p2align 4 +L$loop_xop: + vmovdqa K512+1280(%rip),%xmm11 + vmovdqu 0(%rsi),%xmm0 + leaq K512+128(%rip),%rbp + vmovdqu 16(%rsi),%xmm1 + vmovdqu 32(%rsi),%xmm2 + vpshufb %xmm11,%xmm0,%xmm0 + vmovdqu 48(%rsi),%xmm3 + vpshufb %xmm11,%xmm1,%xmm1 + vmovdqu 64(%rsi),%xmm4 + vpshufb %xmm11,%xmm2,%xmm2 + vmovdqu 80(%rsi),%xmm5 + vpshufb %xmm11,%xmm3,%xmm3 + vmovdqu 96(%rsi),%xmm6 + vpshufb %xmm11,%xmm4,%xmm4 + vmovdqu 112(%rsi),%xmm7 + vpshufb %xmm11,%xmm5,%xmm5 + vpaddq -128(%rbp),%xmm0,%xmm8 + vpshufb %xmm11,%xmm6,%xmm6 + vpaddq -96(%rbp),%xmm1,%xmm9 + vpshufb %xmm11,%xmm7,%xmm7 + vpaddq -64(%rbp),%xmm2,%xmm10 + vpaddq -32(%rbp),%xmm3,%xmm11 + vmovdqa %xmm8,0(%rsp) + vpaddq 0(%rbp),%xmm4,%xmm8 + vmovdqa %xmm9,16(%rsp) + vpaddq 32(%rbp),%xmm5,%xmm9 + vmovdqa %xmm10,32(%rsp) + vpaddq 64(%rbp),%xmm6,%xmm10 + vmovdqa %xmm11,48(%rsp) + vpaddq 96(%rbp),%xmm7,%xmm11 + vmovdqa %xmm8,64(%rsp) + movq %rax,%r14 + vmovdqa %xmm9,80(%rsp) + movq %rbx,%rdi + vmovdqa %xmm10,96(%rsp) + xorq %rcx,%rdi + vmovdqa %xmm11,112(%rsp) + movq %r8,%r13 + jmp L$xop_00_47 + +.p2align 4 +L$xop_00_47: + addq $256,%rbp + vpalignr $8,%xmm0,%xmm1,%xmm8 + rorq $23,%r13 + movq %r14,%rax + vpalignr $8,%xmm4,%xmm5,%xmm11 + movq %r9,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r8,%r13 + xorq %r10,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rax,%r14 + vpaddq %xmm11,%xmm0,%xmm0 + andq %r8,%r12 + xorq %r8,%r13 + addq 0(%rsp),%r11 + movq %rax,%r15 +.byte 143,72,120,195,209,7 + xorq %r10,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,223,3 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm7,%xmm10 + addq %r11,%rdx + addq %rdi,%r11 + vpaddq %xmm8,%xmm0,%xmm0 + movq %rdx,%r13 + addq %r11,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r11 + vpxor %xmm10,%xmm11,%xmm11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + vpaddq %xmm11,%xmm0,%xmm0 + addq 8(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + vpaddq -128(%rbp),%xmm0,%xmm10 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,0(%rsp) + vpalignr $8,%xmm1,%xmm2,%xmm8 + rorq $23,%r13 + movq %r14,%r10 + vpalignr $8,%xmm5,%xmm6,%xmm11 + movq %rdx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rcx,%r13 + xorq %r8,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r10,%r14 + vpaddq %xmm11,%xmm1,%xmm1 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 16(%rsp),%r9 + movq %r10,%r15 +.byte 143,72,120,195,209,7 + xorq %r8,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,216,3 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm0,%xmm10 + addq %r9,%rbx + addq %rdi,%r9 + vpaddq %xmm8,%xmm1,%xmm1 + movq %rbx,%r13 + addq %r9,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r9 + vpxor %xmm10,%xmm11,%xmm11 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + vpaddq %xmm11,%xmm1,%xmm1 + addq 24(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + vpaddq -96(%rbp),%xmm1,%xmm10 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,16(%rsp) + vpalignr $8,%xmm2,%xmm3,%xmm8 + rorq $23,%r13 + movq %r14,%r8 + vpalignr $8,%xmm6,%xmm7,%xmm11 + movq %rbx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rax,%r13 + xorq %rcx,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r8,%r14 + vpaddq %xmm11,%xmm2,%xmm2 + andq %rax,%r12 + xorq %rax,%r13 + addq 32(%rsp),%rdx + movq %r8,%r15 +.byte 143,72,120,195,209,7 + xorq %rcx,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,217,3 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm1,%xmm10 + addq %rdx,%r11 + addq %rdi,%rdx + vpaddq %xmm8,%xmm2,%xmm2 + movq %r11,%r13 + addq %rdx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rdx + vpxor %xmm10,%xmm11,%xmm11 + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + vpaddq %xmm11,%xmm2,%xmm2 + addq 40(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + vpaddq -64(%rbp),%xmm2,%xmm10 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,32(%rsp) + vpalignr $8,%xmm3,%xmm4,%xmm8 + rorq $23,%r13 + movq %r14,%rcx + vpalignr $8,%xmm7,%xmm0,%xmm11 + movq %r11,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r10,%r13 + xorq %rax,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rcx,%r14 + vpaddq %xmm11,%xmm3,%xmm3 + andq %r10,%r12 + xorq %r10,%r13 + addq 48(%rsp),%rbx + movq %rcx,%r15 +.byte 143,72,120,195,209,7 + xorq %rax,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,218,3 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm2,%xmm10 + addq %rbx,%r9 + addq %rdi,%rbx + vpaddq %xmm8,%xmm3,%xmm3 + movq %r9,%r13 + addq %rbx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rbx + vpxor %xmm10,%xmm11,%xmm11 + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + vpaddq %xmm11,%xmm3,%xmm3 + addq 56(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + vpaddq -32(%rbp),%xmm3,%xmm10 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,48(%rsp) + vpalignr $8,%xmm4,%xmm5,%xmm8 + rorq $23,%r13 + movq %r14,%rax + vpalignr $8,%xmm0,%xmm1,%xmm11 + movq %r9,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r8,%r13 + xorq %r10,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rax,%r14 + vpaddq %xmm11,%xmm4,%xmm4 + andq %r8,%r12 + xorq %r8,%r13 + addq 64(%rsp),%r11 + movq %rax,%r15 +.byte 143,72,120,195,209,7 + xorq %r10,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,219,3 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm3,%xmm10 + addq %r11,%rdx + addq %rdi,%r11 + vpaddq %xmm8,%xmm4,%xmm4 + movq %rdx,%r13 + addq %r11,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r11 + vpxor %xmm10,%xmm11,%xmm11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + vpaddq %xmm11,%xmm4,%xmm4 + addq 72(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + vpaddq 0(%rbp),%xmm4,%xmm10 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,64(%rsp) + vpalignr $8,%xmm5,%xmm6,%xmm8 + rorq $23,%r13 + movq %r14,%r10 + vpalignr $8,%xmm1,%xmm2,%xmm11 + movq %rdx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rcx,%r13 + xorq %r8,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r10,%r14 + vpaddq %xmm11,%xmm5,%xmm5 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 80(%rsp),%r9 + movq %r10,%r15 +.byte 143,72,120,195,209,7 + xorq %r8,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,220,3 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm4,%xmm10 + addq %r9,%rbx + addq %rdi,%r9 + vpaddq %xmm8,%xmm5,%xmm5 + movq %rbx,%r13 + addq %r9,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%r9 + vpxor %xmm10,%xmm11,%xmm11 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + vpaddq %xmm11,%xmm5,%xmm5 + addq 88(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + vpaddq 32(%rbp),%xmm5,%xmm10 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,80(%rsp) + vpalignr $8,%xmm6,%xmm7,%xmm8 + rorq $23,%r13 + movq %r14,%r8 + vpalignr $8,%xmm2,%xmm3,%xmm11 + movq %rbx,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %rax,%r13 + xorq %rcx,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %r8,%r14 + vpaddq %xmm11,%xmm6,%xmm6 + andq %rax,%r12 + xorq %rax,%r13 + addq 96(%rsp),%rdx + movq %r8,%r15 +.byte 143,72,120,195,209,7 + xorq %rcx,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,221,3 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm5,%xmm10 + addq %rdx,%r11 + addq %rdi,%rdx + vpaddq %xmm8,%xmm6,%xmm6 + movq %r11,%r13 + addq %rdx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rdx + vpxor %xmm10,%xmm11,%xmm11 + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + vpaddq %xmm11,%xmm6,%xmm6 + addq 104(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + vpaddq 64(%rbp),%xmm6,%xmm10 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,96(%rsp) + vpalignr $8,%xmm7,%xmm0,%xmm8 + rorq $23,%r13 + movq %r14,%rcx + vpalignr $8,%xmm3,%xmm4,%xmm11 + movq %r11,%r12 + rorq $5,%r14 +.byte 143,72,120,195,200,56 + xorq %r10,%r13 + xorq %rax,%r12 + vpsrlq $7,%xmm8,%xmm8 + rorq $4,%r13 + xorq %rcx,%r14 + vpaddq %xmm11,%xmm7,%xmm7 + andq %r10,%r12 + xorq %r10,%r13 + addq 112(%rsp),%rbx + movq %rcx,%r15 +.byte 143,72,120,195,209,7 + xorq %rax,%r12 + rorq $6,%r14 + vpxor %xmm9,%xmm8,%xmm8 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi +.byte 143,104,120,195,222,3 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + rorq $28,%r14 + vpsrlq $6,%xmm6,%xmm10 + addq %rbx,%r9 + addq %rdi,%rbx + vpaddq %xmm8,%xmm7,%xmm7 + movq %r9,%r13 + addq %rbx,%r14 +.byte 143,72,120,195,203,42 + rorq $23,%r13 + movq %r14,%rbx + vpxor %xmm10,%xmm11,%xmm11 + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm9,%xmm11,%xmm11 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + vpaddq %xmm11,%xmm7,%xmm7 + addq 120(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + vpaddq 96(%rbp),%xmm7,%xmm10 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,112(%rsp) + cmpb $0,135(%rbp) + jne L$xop_00_47 + rorq $23,%r13 + movq %r14,%rax + movq %r9,%r12 + rorq $5,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + rorq $4,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 0(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + rorq $6,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + rorq $28,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + rorq $23,%r13 + movq %r14,%r11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 8(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + rorq $23,%r13 + movq %r14,%r10 + movq %rdx,%r12 + rorq $5,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + rorq $4,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 16(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + rorq $6,%r14 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + rorq $28,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + rorq $23,%r13 + movq %r14,%r9 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 24(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + rorq $23,%r13 + movq %r14,%r8 + movq %rbx,%r12 + rorq $5,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + rorq $4,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 32(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + rorq $6,%r14 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + rorq $28,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + rorq $23,%r13 + movq %r14,%rdx + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 40(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + rorq $23,%r13 + movq %r14,%rcx + movq %r11,%r12 + rorq $5,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + rorq $4,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 48(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + rorq $6,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + rorq $28,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + rorq $23,%r13 + movq %r14,%rbx + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 56(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + rorq $23,%r13 + movq %r14,%rax + movq %r9,%r12 + rorq $5,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + rorq $4,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 64(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + rorq $6,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + rorq $14,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + rorq $28,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + rorq $23,%r13 + movq %r14,%r11 + movq %r8,%r12 + rorq $5,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + rorq $4,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 72(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + rorq $6,%r14 + xorq %rax,%rdi + addq %r12,%r10 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + rorq $28,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + rorq $23,%r13 + movq %r14,%r10 + movq %rdx,%r12 + rorq $5,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + rorq $4,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 80(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + rorq $6,%r14 + xorq %r11,%r15 + addq %r12,%r9 + rorq $14,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + rorq $28,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + rorq $23,%r13 + movq %r14,%r9 + movq %rcx,%r12 + rorq $5,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + rorq $4,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 88(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + rorq $6,%r14 + xorq %r10,%rdi + addq %r12,%r8 + rorq $14,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + rorq $28,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + rorq $23,%r13 + movq %r14,%r8 + movq %rbx,%r12 + rorq $5,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + rorq $4,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 96(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + rorq $6,%r14 + xorq %r9,%r15 + addq %r12,%rdx + rorq $14,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + rorq $28,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + rorq $23,%r13 + movq %r14,%rdx + movq %rax,%r12 + rorq $5,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + rorq $4,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 104(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + rorq $6,%r14 + xorq %r8,%rdi + addq %r12,%rcx + rorq $14,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + rorq $28,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + rorq $23,%r13 + movq %r14,%rcx + movq %r11,%r12 + rorq $5,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + rorq $4,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 112(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + rorq $6,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + rorq $14,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + rorq $28,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + rorq $23,%r13 + movq %r14,%rbx + movq %r10,%r12 + rorq $5,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + rorq $4,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 120(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + rorq $6,%r14 + xorq %rcx,%rdi + addq %r12,%rax + rorq $14,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + rorq $28,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + movq 128+0(%rsp),%rdi + movq %r14,%rax + + addq 0(%rdi),%rax + leaq 128(%rsi),%rsi + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + addq 48(%rdi),%r10 + addq 56(%rdi),%r11 + + cmpq 128+16(%rsp),%rsi + + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + jb L$loop_xop + + movq 152(%rsp),%rsi + + vzeroupper + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue_xop: + .byte 0xf3,0xc3 + + + +.p2align 6 +sha512_block_data_order_avx: + +L$avx_shortcut: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + shlq $4,%rdx + subq $160,%rsp + leaq (%rsi,%rdx,8),%rdx + andq $-64,%rsp + movq %rdi,128+0(%rsp) + movq %rsi,128+8(%rsp) + movq %rdx,128+16(%rsp) + movq %rax,152(%rsp) + +L$prologue_avx: + + vzeroupper + movq 0(%rdi),%rax + movq 8(%rdi),%rbx + movq 16(%rdi),%rcx + movq 24(%rdi),%rdx + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + jmp L$loop_avx +.p2align 4 +L$loop_avx: + vmovdqa K512+1280(%rip),%xmm11 + vmovdqu 0(%rsi),%xmm0 + leaq K512+128(%rip),%rbp + vmovdqu 16(%rsi),%xmm1 + vmovdqu 32(%rsi),%xmm2 + vpshufb %xmm11,%xmm0,%xmm0 + vmovdqu 48(%rsi),%xmm3 + vpshufb %xmm11,%xmm1,%xmm1 + vmovdqu 64(%rsi),%xmm4 + vpshufb %xmm11,%xmm2,%xmm2 + vmovdqu 80(%rsi),%xmm5 + vpshufb %xmm11,%xmm3,%xmm3 + vmovdqu 96(%rsi),%xmm6 + vpshufb %xmm11,%xmm4,%xmm4 + vmovdqu 112(%rsi),%xmm7 + vpshufb %xmm11,%xmm5,%xmm5 + vpaddq -128(%rbp),%xmm0,%xmm8 + vpshufb %xmm11,%xmm6,%xmm6 + vpaddq -96(%rbp),%xmm1,%xmm9 + vpshufb %xmm11,%xmm7,%xmm7 + vpaddq -64(%rbp),%xmm2,%xmm10 + vpaddq -32(%rbp),%xmm3,%xmm11 + vmovdqa %xmm8,0(%rsp) + vpaddq 0(%rbp),%xmm4,%xmm8 + vmovdqa %xmm9,16(%rsp) + vpaddq 32(%rbp),%xmm5,%xmm9 + vmovdqa %xmm10,32(%rsp) + vpaddq 64(%rbp),%xmm6,%xmm10 + vmovdqa %xmm11,48(%rsp) + vpaddq 96(%rbp),%xmm7,%xmm11 + vmovdqa %xmm8,64(%rsp) + movq %rax,%r14 + vmovdqa %xmm9,80(%rsp) + movq %rbx,%rdi + vmovdqa %xmm10,96(%rsp) + xorq %rcx,%rdi + vmovdqa %xmm11,112(%rsp) + movq %r8,%r13 + jmp L$avx_00_47 + +.p2align 4 +L$avx_00_47: + addq $256,%rbp + vpalignr $8,%xmm0,%xmm1,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rax + vpalignr $8,%xmm4,%xmm5,%xmm11 + movq %r9,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r8,%r13 + xorq %r10,%r12 + vpaddq %xmm11,%xmm0,%xmm0 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r8,%r12 + xorq %r8,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 0(%rsp),%r11 + movq %rax,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rbx,%r15 + addq %r12,%r11 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm7,%xmm11 + addq %r11,%rdx + addq %rdi,%r11 + vpxor %xmm9,%xmm8,%xmm8 + movq %rdx,%r13 + addq %r11,%r14 + vpsllq $3,%xmm7,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r11 + vpaddq %xmm8,%xmm0,%xmm0 + movq %r8,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm7,%xmm9 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rdx,%r12 + xorq %rdx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 8(%rsp),%r10 + movq %r11,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r9,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rax,%rdi + addq %r12,%r10 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm0,%xmm0 + xorq %r11,%r14 + addq %r13,%r10 + vpaddq -128(%rbp),%xmm0,%xmm10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,0(%rsp) + vpalignr $8,%xmm1,%xmm2,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r10 + vpalignr $8,%xmm5,%xmm6,%xmm11 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rcx,%r13 + xorq %r8,%r12 + vpaddq %xmm11,%xmm1,%xmm1 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rcx,%r12 + xorq %rcx,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 16(%rsp),%r9 + movq %r10,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r11,%r15 + addq %r12,%r9 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm0,%xmm11 + addq %r9,%rbx + addq %rdi,%r9 + vpxor %xmm9,%xmm8,%xmm8 + movq %rbx,%r13 + addq %r9,%r14 + vpsllq $3,%xmm0,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r9 + vpaddq %xmm8,%xmm1,%xmm1 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm0,%xmm9 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rbx,%r12 + xorq %rbx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 24(%rsp),%r8 + movq %r9,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r10,%rdi + addq %r12,%r8 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm1,%xmm1 + xorq %r9,%r14 + addq %r13,%r8 + vpaddq -96(%rbp),%xmm1,%xmm10 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,16(%rsp) + vpalignr $8,%xmm2,%xmm3,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r8 + vpalignr $8,%xmm6,%xmm7,%xmm11 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rax,%r13 + xorq %rcx,%r12 + vpaddq %xmm11,%xmm2,%xmm2 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rax,%r12 + xorq %rax,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 32(%rsp),%rdx + movq %r8,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r9,%r15 + addq %r12,%rdx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm1,%xmm11 + addq %rdx,%r11 + addq %rdi,%rdx + vpxor %xmm9,%xmm8,%xmm8 + movq %r11,%r13 + addq %rdx,%r14 + vpsllq $3,%xmm1,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rdx + vpaddq %xmm8,%xmm2,%xmm2 + movq %rax,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm1,%xmm9 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r11,%r12 + xorq %r11,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 40(%rsp),%rcx + movq %rdx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r8,%rdi + addq %r12,%rcx + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm2,%xmm2 + xorq %rdx,%r14 + addq %r13,%rcx + vpaddq -64(%rbp),%xmm2,%xmm10 + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,32(%rsp) + vpalignr $8,%xmm3,%xmm4,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rcx + vpalignr $8,%xmm7,%xmm0,%xmm11 + movq %r11,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r10,%r13 + xorq %rax,%r12 + vpaddq %xmm11,%xmm3,%xmm3 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r10,%r12 + xorq %r10,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 48(%rsp),%rbx + movq %rcx,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rdx,%r15 + addq %r12,%rbx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm2,%xmm11 + addq %rbx,%r9 + addq %rdi,%rbx + vpxor %xmm9,%xmm8,%xmm8 + movq %r9,%r13 + addq %rbx,%r14 + vpsllq $3,%xmm2,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rbx + vpaddq %xmm8,%xmm3,%xmm3 + movq %r10,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm2,%xmm9 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r9,%r12 + xorq %r9,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 56(%rsp),%rax + movq %rbx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r11,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rcx,%rdi + addq %r12,%rax + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm3,%xmm3 + xorq %rbx,%r14 + addq %r13,%rax + vpaddq -32(%rbp),%xmm3,%xmm10 + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,48(%rsp) + vpalignr $8,%xmm4,%xmm5,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rax + vpalignr $8,%xmm0,%xmm1,%xmm11 + movq %r9,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r8,%r13 + xorq %r10,%r12 + vpaddq %xmm11,%xmm4,%xmm4 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r8,%r12 + xorq %r8,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 64(%rsp),%r11 + movq %rax,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rbx,%r15 + addq %r12,%r11 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rax,%r14 + addq %r13,%r11 + vpxor %xmm10,%xmm8,%xmm8 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm3,%xmm11 + addq %r11,%rdx + addq %rdi,%r11 + vpxor %xmm9,%xmm8,%xmm8 + movq %rdx,%r13 + addq %r11,%r14 + vpsllq $3,%xmm3,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r11 + vpaddq %xmm8,%xmm4,%xmm4 + movq %r8,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm3,%xmm9 + xorq %rdx,%r13 + xorq %r9,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rdx,%r12 + xorq %rdx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 72(%rsp),%r10 + movq %r11,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r9,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rax,%rdi + addq %r12,%r10 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm4,%xmm4 + xorq %r11,%r14 + addq %r13,%r10 + vpaddq 0(%rbp),%xmm4,%xmm10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + vmovdqa %xmm10,64(%rsp) + vpalignr $8,%xmm5,%xmm6,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r10 + vpalignr $8,%xmm1,%xmm2,%xmm11 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rcx,%r13 + xorq %r8,%r12 + vpaddq %xmm11,%xmm5,%xmm5 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rcx,%r12 + xorq %rcx,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 80(%rsp),%r9 + movq %r10,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r11,%r15 + addq %r12,%r9 + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r10,%r14 + addq %r13,%r9 + vpxor %xmm10,%xmm8,%xmm8 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm4,%xmm11 + addq %r9,%rbx + addq %rdi,%r9 + vpxor %xmm9,%xmm8,%xmm8 + movq %rbx,%r13 + addq %r9,%r14 + vpsllq $3,%xmm4,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%r9 + vpaddq %xmm8,%xmm5,%xmm5 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm4,%xmm9 + xorq %rbx,%r13 + xorq %rdx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %rbx,%r12 + xorq %rbx,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 88(%rsp),%r8 + movq %r9,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r10,%rdi + addq %r12,%r8 + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm5,%xmm5 + xorq %r9,%r14 + addq %r13,%r8 + vpaddq 32(%rbp),%xmm5,%xmm10 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + vmovdqa %xmm10,80(%rsp) + vpalignr $8,%xmm6,%xmm7,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%r8 + vpalignr $8,%xmm2,%xmm3,%xmm11 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %rax,%r13 + xorq %rcx,%r12 + vpaddq %xmm11,%xmm6,%xmm6 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %rax,%r12 + xorq %rax,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 96(%rsp),%rdx + movq %r8,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %r9,%r15 + addq %r12,%rdx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %r8,%r14 + addq %r13,%rdx + vpxor %xmm10,%xmm8,%xmm8 + xorq %r9,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm5,%xmm11 + addq %rdx,%r11 + addq %rdi,%rdx + vpxor %xmm9,%xmm8,%xmm8 + movq %r11,%r13 + addq %rdx,%r14 + vpsllq $3,%xmm5,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rdx + vpaddq %xmm8,%xmm6,%xmm6 + movq %rax,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm5,%xmm9 + xorq %r11,%r13 + xorq %rbx,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r11,%r12 + xorq %r11,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 104(%rsp),%rcx + movq %rdx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %r8,%rdi + addq %r12,%rcx + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm6,%xmm6 + xorq %rdx,%r14 + addq %r13,%rcx + vpaddq 64(%rbp),%xmm6,%xmm10 + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + vmovdqa %xmm10,96(%rsp) + vpalignr $8,%xmm7,%xmm0,%xmm8 + shrdq $23,%r13,%r13 + movq %r14,%rcx + vpalignr $8,%xmm3,%xmm4,%xmm11 + movq %r11,%r12 + shrdq $5,%r14,%r14 + vpsrlq $1,%xmm8,%xmm10 + xorq %r10,%r13 + xorq %rax,%r12 + vpaddq %xmm11,%xmm7,%xmm7 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + vpsrlq $7,%xmm8,%xmm11 + andq %r10,%r12 + xorq %r10,%r13 + vpsllq $56,%xmm8,%xmm9 + addq 112(%rsp),%rbx + movq %rcx,%r15 + vpxor %xmm10,%xmm11,%xmm8 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + vpsrlq $7,%xmm10,%xmm10 + xorq %rdx,%r15 + addq %r12,%rbx + vpxor %xmm9,%xmm8,%xmm8 + shrdq $14,%r13,%r13 + andq %r15,%rdi + vpsllq $7,%xmm9,%xmm9 + xorq %rcx,%r14 + addq %r13,%rbx + vpxor %xmm10,%xmm8,%xmm8 + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + vpsrlq $6,%xmm6,%xmm11 + addq %rbx,%r9 + addq %rdi,%rbx + vpxor %xmm9,%xmm8,%xmm8 + movq %r9,%r13 + addq %rbx,%r14 + vpsllq $3,%xmm6,%xmm10 + shrdq $23,%r13,%r13 + movq %r14,%rbx + vpaddq %xmm8,%xmm7,%xmm7 + movq %r10,%r12 + shrdq $5,%r14,%r14 + vpsrlq $19,%xmm6,%xmm9 + xorq %r9,%r13 + xorq %r11,%r12 + vpxor %xmm10,%xmm11,%xmm11 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + vpsllq $42,%xmm10,%xmm10 + andq %r9,%r12 + xorq %r9,%r13 + vpxor %xmm9,%xmm11,%xmm11 + addq 120(%rsp),%rax + movq %rbx,%rdi + vpsrlq $42,%xmm9,%xmm9 + xorq %r11,%r12 + shrdq $6,%r14,%r14 + vpxor %xmm10,%xmm11,%xmm11 + xorq %rcx,%rdi + addq %r12,%rax + vpxor %xmm9,%xmm11,%xmm11 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + vpaddq %xmm11,%xmm7,%xmm7 + xorq %rbx,%r14 + addq %r13,%rax + vpaddq 96(%rbp),%xmm7,%xmm10 + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + vmovdqa %xmm10,112(%rsp) + cmpb $0,135(%rbp) + jne L$avx_00_47 + shrdq $23,%r13,%r13 + movq %r14,%rax + movq %r9,%r12 + shrdq $5,%r14,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 0(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r11 + movq %r8,%r12 + shrdq $5,%r14,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 8(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + shrdq $6,%r14,%r14 + xorq %rax,%rdi + addq %r12,%r10 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r10 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 16(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + xorq %r11,%r15 + addq %r12,%r9 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r9 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 24(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + xorq %r10,%rdi + addq %r12,%r8 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r8 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 32(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + xorq %r9,%r15 + addq %r12,%rdx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + shrdq $28,%r14,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rdx + movq %rax,%r12 + shrdq $5,%r14,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 40(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + xorq %r8,%rdi + addq %r12,%rcx + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rcx + movq %r11,%r12 + shrdq $5,%r14,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 48(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rbx + movq %r10,%r12 + shrdq $5,%r14,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 56(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + shrdq $6,%r14,%r14 + xorq %rcx,%rdi + addq %r12,%rax + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rax + movq %r9,%r12 + shrdq $5,%r14,%r14 + xorq %r8,%r13 + xorq %r10,%r12 + shrdq $4,%r13,%r13 + xorq %rax,%r14 + andq %r8,%r12 + xorq %r8,%r13 + addq 64(%rsp),%r11 + movq %rax,%r15 + xorq %r10,%r12 + shrdq $6,%r14,%r14 + xorq %rbx,%r15 + addq %r12,%r11 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rax,%r14 + addq %r13,%r11 + xorq %rbx,%rdi + shrdq $28,%r14,%r14 + addq %r11,%rdx + addq %rdi,%r11 + movq %rdx,%r13 + addq %r11,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r11 + movq %r8,%r12 + shrdq $5,%r14,%r14 + xorq %rdx,%r13 + xorq %r9,%r12 + shrdq $4,%r13,%r13 + xorq %r11,%r14 + andq %rdx,%r12 + xorq %rdx,%r13 + addq 72(%rsp),%r10 + movq %r11,%rdi + xorq %r9,%r12 + shrdq $6,%r14,%r14 + xorq %rax,%rdi + addq %r12,%r10 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r11,%r14 + addq %r13,%r10 + xorq %rax,%r15 + shrdq $28,%r14,%r14 + addq %r10,%rcx + addq %r15,%r10 + movq %rcx,%r13 + addq %r10,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r10 + movq %rdx,%r12 + shrdq $5,%r14,%r14 + xorq %rcx,%r13 + xorq %r8,%r12 + shrdq $4,%r13,%r13 + xorq %r10,%r14 + andq %rcx,%r12 + xorq %rcx,%r13 + addq 80(%rsp),%r9 + movq %r10,%r15 + xorq %r8,%r12 + shrdq $6,%r14,%r14 + xorq %r11,%r15 + addq %r12,%r9 + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r10,%r14 + addq %r13,%r9 + xorq %r11,%rdi + shrdq $28,%r14,%r14 + addq %r9,%rbx + addq %rdi,%r9 + movq %rbx,%r13 + addq %r9,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r9 + movq %rcx,%r12 + shrdq $5,%r14,%r14 + xorq %rbx,%r13 + xorq %rdx,%r12 + shrdq $4,%r13,%r13 + xorq %r9,%r14 + andq %rbx,%r12 + xorq %rbx,%r13 + addq 88(%rsp),%r8 + movq %r9,%rdi + xorq %rdx,%r12 + shrdq $6,%r14,%r14 + xorq %r10,%rdi + addq %r12,%r8 + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %r9,%r14 + addq %r13,%r8 + xorq %r10,%r15 + shrdq $28,%r14,%r14 + addq %r8,%rax + addq %r15,%r8 + movq %rax,%r13 + addq %r8,%r14 + shrdq $23,%r13,%r13 + movq %r14,%r8 + movq %rbx,%r12 + shrdq $5,%r14,%r14 + xorq %rax,%r13 + xorq %rcx,%r12 + shrdq $4,%r13,%r13 + xorq %r8,%r14 + andq %rax,%r12 + xorq %rax,%r13 + addq 96(%rsp),%rdx + movq %r8,%r15 + xorq %rcx,%r12 + shrdq $6,%r14,%r14 + xorq %r9,%r15 + addq %r12,%rdx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %r8,%r14 + addq %r13,%rdx + xorq %r9,%rdi + shrdq $28,%r14,%r14 + addq %rdx,%r11 + addq %rdi,%rdx + movq %r11,%r13 + addq %rdx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rdx + movq %rax,%r12 + shrdq $5,%r14,%r14 + xorq %r11,%r13 + xorq %rbx,%r12 + shrdq $4,%r13,%r13 + xorq %rdx,%r14 + andq %r11,%r12 + xorq %r11,%r13 + addq 104(%rsp),%rcx + movq %rdx,%rdi + xorq %rbx,%r12 + shrdq $6,%r14,%r14 + xorq %r8,%rdi + addq %r12,%rcx + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rdx,%r14 + addq %r13,%rcx + xorq %r8,%r15 + shrdq $28,%r14,%r14 + addq %rcx,%r10 + addq %r15,%rcx + movq %r10,%r13 + addq %rcx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rcx + movq %r11,%r12 + shrdq $5,%r14,%r14 + xorq %r10,%r13 + xorq %rax,%r12 + shrdq $4,%r13,%r13 + xorq %rcx,%r14 + andq %r10,%r12 + xorq %r10,%r13 + addq 112(%rsp),%rbx + movq %rcx,%r15 + xorq %rax,%r12 + shrdq $6,%r14,%r14 + xorq %rdx,%r15 + addq %r12,%rbx + shrdq $14,%r13,%r13 + andq %r15,%rdi + xorq %rcx,%r14 + addq %r13,%rbx + xorq %rdx,%rdi + shrdq $28,%r14,%r14 + addq %rbx,%r9 + addq %rdi,%rbx + movq %r9,%r13 + addq %rbx,%r14 + shrdq $23,%r13,%r13 + movq %r14,%rbx + movq %r10,%r12 + shrdq $5,%r14,%r14 + xorq %r9,%r13 + xorq %r11,%r12 + shrdq $4,%r13,%r13 + xorq %rbx,%r14 + andq %r9,%r12 + xorq %r9,%r13 + addq 120(%rsp),%rax + movq %rbx,%rdi + xorq %r11,%r12 + shrdq $6,%r14,%r14 + xorq %rcx,%rdi + addq %r12,%rax + shrdq $14,%r13,%r13 + andq %rdi,%r15 + xorq %rbx,%r14 + addq %r13,%rax + xorq %rcx,%r15 + shrdq $28,%r14,%r14 + addq %rax,%r8 + addq %r15,%rax + movq %r8,%r13 + addq %rax,%r14 + movq 128+0(%rsp),%rdi + movq %r14,%rax + + addq 0(%rdi),%rax + leaq 128(%rsi),%rsi + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + addq 48(%rdi),%r10 + addq 56(%rdi),%r11 + + cmpq 128+16(%rsp),%rsi + + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + jb L$loop_avx + + movq 152(%rsp),%rsi + + vzeroupper + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue_avx: + .byte 0xf3,0xc3 + + + +.p2align 6 +sha512_block_data_order_avx2: + +L$avx2_shortcut: + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $1312,%rsp + shlq $4,%rdx + andq $-2048,%rsp + leaq (%rsi,%rdx,8),%rdx + addq $1152,%rsp + movq %rdi,128+0(%rsp) + movq %rsi,128+8(%rsp) + movq %rdx,128+16(%rsp) + movq %rax,152(%rsp) + +L$prologue_avx2: + + vzeroupper + subq $-128,%rsi + movq 0(%rdi),%rax + movq %rsi,%r12 + movq 8(%rdi),%rbx + cmpq %rdx,%rsi + movq 16(%rdi),%rcx + cmoveq %rsp,%r12 + movq 24(%rdi),%rdx + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + jmp L$oop_avx2 +.p2align 4 +L$oop_avx2: + vmovdqu -128(%rsi),%xmm0 + vmovdqu -128+16(%rsi),%xmm1 + vmovdqu -128+32(%rsi),%xmm2 + leaq K512+128(%rip),%rbp + vmovdqu -128+48(%rsi),%xmm3 + vmovdqu -128+64(%rsi),%xmm4 + vmovdqu -128+80(%rsi),%xmm5 + vmovdqu -128+96(%rsi),%xmm6 + vmovdqu -128+112(%rsi),%xmm7 + + vmovdqa 1152(%rbp),%ymm10 + vinserti128 $1,(%r12),%ymm0,%ymm0 + vinserti128 $1,16(%r12),%ymm1,%ymm1 + vpshufb %ymm10,%ymm0,%ymm0 + vinserti128 $1,32(%r12),%ymm2,%ymm2 + vpshufb %ymm10,%ymm1,%ymm1 + vinserti128 $1,48(%r12),%ymm3,%ymm3 + vpshufb %ymm10,%ymm2,%ymm2 + vinserti128 $1,64(%r12),%ymm4,%ymm4 + vpshufb %ymm10,%ymm3,%ymm3 + vinserti128 $1,80(%r12),%ymm5,%ymm5 + vpshufb %ymm10,%ymm4,%ymm4 + vinserti128 $1,96(%r12),%ymm6,%ymm6 + vpshufb %ymm10,%ymm5,%ymm5 + vinserti128 $1,112(%r12),%ymm7,%ymm7 + + vpaddq -128(%rbp),%ymm0,%ymm8 + vpshufb %ymm10,%ymm6,%ymm6 + vpaddq -96(%rbp),%ymm1,%ymm9 + vpshufb %ymm10,%ymm7,%ymm7 + vpaddq -64(%rbp),%ymm2,%ymm10 + vpaddq -32(%rbp),%ymm3,%ymm11 + vmovdqa %ymm8,0(%rsp) + vpaddq 0(%rbp),%ymm4,%ymm8 + vmovdqa %ymm9,32(%rsp) + vpaddq 32(%rbp),%ymm5,%ymm9 + vmovdqa %ymm10,64(%rsp) + vpaddq 64(%rbp),%ymm6,%ymm10 + vmovdqa %ymm11,96(%rsp) + + movq 152(%rsp),%rdi + + leaq -128(%rsp),%rsp + + + + movq %rdi,-8(%rsp) + + vpaddq 96(%rbp),%ymm7,%ymm11 + vmovdqa %ymm8,0(%rsp) + xorq %r14,%r14 + vmovdqa %ymm9,32(%rsp) + movq %rbx,%rdi + vmovdqa %ymm10,64(%rsp) + xorq %rcx,%rdi + vmovdqa %ymm11,96(%rsp) + movq %r9,%r12 + addq $32*8,%rbp + jmp L$avx2_00_47 + +.p2align 4 +L$avx2_00_47: + leaq -128(%rsp),%rsp + + + pushq 128-8(%rsp) + + leaq 8(%rsp),%rsp + + vpalignr $8,%ymm0,%ymm1,%ymm8 + addq 0+256(%rsp),%r11 + andq %r8,%r12 + rorxq $41,%r8,%r13 + vpalignr $8,%ymm4,%ymm5,%ymm11 + rorxq $18,%r8,%r15 + leaq (%rax,%r14,1),%rax + leaq (%r11,%r12,1),%r11 + vpsrlq $1,%ymm8,%ymm10 + andnq %r10,%r8,%r12 + xorq %r15,%r13 + rorxq $14,%r8,%r14 + vpaddq %ymm11,%ymm0,%ymm0 + vpsrlq $7,%ymm8,%ymm11 + leaq (%r11,%r12,1),%r11 + xorq %r14,%r13 + movq %rax,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%rax,%r12 + leaq (%r11,%r13,1),%r11 + xorq %rbx,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%rax,%r14 + rorxq $28,%rax,%r13 + leaq (%rdx,%r11,1),%rdx + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rbx,%rdi + vpsrlq $6,%ymm7,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%r11,%rdi,1),%r11 + movq %r8,%r12 + vpsllq $3,%ymm7,%ymm10 + vpaddq %ymm8,%ymm0,%ymm0 + addq 8+256(%rsp),%r10 + andq %rdx,%r12 + rorxq $41,%rdx,%r13 + vpsrlq $19,%ymm7,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%rdx,%rdi + leaq (%r11,%r14,1),%r11 + leaq (%r10,%r12,1),%r10 + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %r9,%rdx,%r12 + xorq %rdi,%r13 + rorxq $14,%rdx,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%r10,%r12,1),%r10 + xorq %r14,%r13 + movq %r11,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%r11,%r12 + leaq (%r10,%r13,1),%r10 + xorq %rax,%rdi + vpaddq %ymm11,%ymm0,%ymm0 + rorxq $34,%r11,%r14 + rorxq $28,%r11,%r13 + leaq (%rcx,%r10,1),%rcx + vpaddq -128(%rbp),%ymm0,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rax,%r15 + xorq %r13,%r14 + leaq (%r10,%r15,1),%r10 + movq %rdx,%r12 + vmovdqa %ymm10,0(%rsp) + vpalignr $8,%ymm1,%ymm2,%ymm8 + addq 32+256(%rsp),%r9 + andq %rcx,%r12 + rorxq $41,%rcx,%r13 + vpalignr $8,%ymm5,%ymm6,%ymm11 + rorxq $18,%rcx,%r15 + leaq (%r10,%r14,1),%r10 + leaq (%r9,%r12,1),%r9 + vpsrlq $1,%ymm8,%ymm10 + andnq %r8,%rcx,%r12 + xorq %r15,%r13 + rorxq $14,%rcx,%r14 + vpaddq %ymm11,%ymm1,%ymm1 + vpsrlq $7,%ymm8,%ymm11 + leaq (%r9,%r12,1),%r9 + xorq %r14,%r13 + movq %r10,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%r10,%r12 + leaq (%r9,%r13,1),%r9 + xorq %r11,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%r10,%r14 + rorxq $28,%r10,%r13 + leaq (%rbx,%r9,1),%rbx + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r11,%rdi + vpsrlq $6,%ymm0,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%r9,%rdi,1),%r9 + movq %rcx,%r12 + vpsllq $3,%ymm0,%ymm10 + vpaddq %ymm8,%ymm1,%ymm1 + addq 40+256(%rsp),%r8 + andq %rbx,%r12 + rorxq $41,%rbx,%r13 + vpsrlq $19,%ymm0,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%rbx,%rdi + leaq (%r9,%r14,1),%r9 + leaq (%r8,%r12,1),%r8 + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %rdx,%rbx,%r12 + xorq %rdi,%r13 + rorxq $14,%rbx,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%r8,%r12,1),%r8 + xorq %r14,%r13 + movq %r9,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%r9,%r12 + leaq (%r8,%r13,1),%r8 + xorq %r10,%rdi + vpaddq %ymm11,%ymm1,%ymm1 + rorxq $34,%r9,%r14 + rorxq $28,%r9,%r13 + leaq (%rax,%r8,1),%rax + vpaddq -96(%rbp),%ymm1,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r10,%r15 + xorq %r13,%r14 + leaq (%r8,%r15,1),%r8 + movq %rbx,%r12 + vmovdqa %ymm10,32(%rsp) + vpalignr $8,%ymm2,%ymm3,%ymm8 + addq 64+256(%rsp),%rdx + andq %rax,%r12 + rorxq $41,%rax,%r13 + vpalignr $8,%ymm6,%ymm7,%ymm11 + rorxq $18,%rax,%r15 + leaq (%r8,%r14,1),%r8 + leaq (%rdx,%r12,1),%rdx + vpsrlq $1,%ymm8,%ymm10 + andnq %rcx,%rax,%r12 + xorq %r15,%r13 + rorxq $14,%rax,%r14 + vpaddq %ymm11,%ymm2,%ymm2 + vpsrlq $7,%ymm8,%ymm11 + leaq (%rdx,%r12,1),%rdx + xorq %r14,%r13 + movq %r8,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%r8,%r12 + leaq (%rdx,%r13,1),%rdx + xorq %r9,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%r8,%r14 + rorxq $28,%r8,%r13 + leaq (%r11,%rdx,1),%r11 + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r9,%rdi + vpsrlq $6,%ymm1,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%rdx,%rdi,1),%rdx + movq %rax,%r12 + vpsllq $3,%ymm1,%ymm10 + vpaddq %ymm8,%ymm2,%ymm2 + addq 72+256(%rsp),%rcx + andq %r11,%r12 + rorxq $41,%r11,%r13 + vpsrlq $19,%ymm1,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%r11,%rdi + leaq (%rdx,%r14,1),%rdx + leaq (%rcx,%r12,1),%rcx + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %rbx,%r11,%r12 + xorq %rdi,%r13 + rorxq $14,%r11,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%rcx,%r12,1),%rcx + xorq %r14,%r13 + movq %rdx,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%rdx,%r12 + leaq (%rcx,%r13,1),%rcx + xorq %r8,%rdi + vpaddq %ymm11,%ymm2,%ymm2 + rorxq $34,%rdx,%r14 + rorxq $28,%rdx,%r13 + leaq (%r10,%rcx,1),%r10 + vpaddq -64(%rbp),%ymm2,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r8,%r15 + xorq %r13,%r14 + leaq (%rcx,%r15,1),%rcx + movq %r11,%r12 + vmovdqa %ymm10,64(%rsp) + vpalignr $8,%ymm3,%ymm4,%ymm8 + addq 96+256(%rsp),%rbx + andq %r10,%r12 + rorxq $41,%r10,%r13 + vpalignr $8,%ymm7,%ymm0,%ymm11 + rorxq $18,%r10,%r15 + leaq (%rcx,%r14,1),%rcx + leaq (%rbx,%r12,1),%rbx + vpsrlq $1,%ymm8,%ymm10 + andnq %rax,%r10,%r12 + xorq %r15,%r13 + rorxq $14,%r10,%r14 + vpaddq %ymm11,%ymm3,%ymm3 + vpsrlq $7,%ymm8,%ymm11 + leaq (%rbx,%r12,1),%rbx + xorq %r14,%r13 + movq %rcx,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%rcx,%r12 + leaq (%rbx,%r13,1),%rbx + xorq %rdx,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%rcx,%r14 + rorxq $28,%rcx,%r13 + leaq (%r9,%rbx,1),%r9 + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rdx,%rdi + vpsrlq $6,%ymm2,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%rbx,%rdi,1),%rbx + movq %r10,%r12 + vpsllq $3,%ymm2,%ymm10 + vpaddq %ymm8,%ymm3,%ymm3 + addq 104+256(%rsp),%rax + andq %r9,%r12 + rorxq $41,%r9,%r13 + vpsrlq $19,%ymm2,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%r9,%rdi + leaq (%rbx,%r14,1),%rbx + leaq (%rax,%r12,1),%rax + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %r11,%r9,%r12 + xorq %rdi,%r13 + rorxq $14,%r9,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%rax,%r12,1),%rax + xorq %r14,%r13 + movq %rbx,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%rbx,%r12 + leaq (%rax,%r13,1),%rax + xorq %rcx,%rdi + vpaddq %ymm11,%ymm3,%ymm3 + rorxq $34,%rbx,%r14 + rorxq $28,%rbx,%r13 + leaq (%r8,%rax,1),%r8 + vpaddq -32(%rbp),%ymm3,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rcx,%r15 + xorq %r13,%r14 + leaq (%rax,%r15,1),%rax + movq %r9,%r12 + vmovdqa %ymm10,96(%rsp) + leaq -128(%rsp),%rsp + + + pushq 128-8(%rsp) + + leaq 8(%rsp),%rsp + + vpalignr $8,%ymm4,%ymm5,%ymm8 + addq 0+256(%rsp),%r11 + andq %r8,%r12 + rorxq $41,%r8,%r13 + vpalignr $8,%ymm0,%ymm1,%ymm11 + rorxq $18,%r8,%r15 + leaq (%rax,%r14,1),%rax + leaq (%r11,%r12,1),%r11 + vpsrlq $1,%ymm8,%ymm10 + andnq %r10,%r8,%r12 + xorq %r15,%r13 + rorxq $14,%r8,%r14 + vpaddq %ymm11,%ymm4,%ymm4 + vpsrlq $7,%ymm8,%ymm11 + leaq (%r11,%r12,1),%r11 + xorq %r14,%r13 + movq %rax,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%rax,%r12 + leaq (%r11,%r13,1),%r11 + xorq %rbx,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%rax,%r14 + rorxq $28,%rax,%r13 + leaq (%rdx,%r11,1),%rdx + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rbx,%rdi + vpsrlq $6,%ymm3,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%r11,%rdi,1),%r11 + movq %r8,%r12 + vpsllq $3,%ymm3,%ymm10 + vpaddq %ymm8,%ymm4,%ymm4 + addq 8+256(%rsp),%r10 + andq %rdx,%r12 + rorxq $41,%rdx,%r13 + vpsrlq $19,%ymm3,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%rdx,%rdi + leaq (%r11,%r14,1),%r11 + leaq (%r10,%r12,1),%r10 + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %r9,%rdx,%r12 + xorq %rdi,%r13 + rorxq $14,%rdx,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%r10,%r12,1),%r10 + xorq %r14,%r13 + movq %r11,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%r11,%r12 + leaq (%r10,%r13,1),%r10 + xorq %rax,%rdi + vpaddq %ymm11,%ymm4,%ymm4 + rorxq $34,%r11,%r14 + rorxq $28,%r11,%r13 + leaq (%rcx,%r10,1),%rcx + vpaddq 0(%rbp),%ymm4,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rax,%r15 + xorq %r13,%r14 + leaq (%r10,%r15,1),%r10 + movq %rdx,%r12 + vmovdqa %ymm10,0(%rsp) + vpalignr $8,%ymm5,%ymm6,%ymm8 + addq 32+256(%rsp),%r9 + andq %rcx,%r12 + rorxq $41,%rcx,%r13 + vpalignr $8,%ymm1,%ymm2,%ymm11 + rorxq $18,%rcx,%r15 + leaq (%r10,%r14,1),%r10 + leaq (%r9,%r12,1),%r9 + vpsrlq $1,%ymm8,%ymm10 + andnq %r8,%rcx,%r12 + xorq %r15,%r13 + rorxq $14,%rcx,%r14 + vpaddq %ymm11,%ymm5,%ymm5 + vpsrlq $7,%ymm8,%ymm11 + leaq (%r9,%r12,1),%r9 + xorq %r14,%r13 + movq %r10,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%r10,%r12 + leaq (%r9,%r13,1),%r9 + xorq %r11,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%r10,%r14 + rorxq $28,%r10,%r13 + leaq (%rbx,%r9,1),%rbx + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r11,%rdi + vpsrlq $6,%ymm4,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%r9,%rdi,1),%r9 + movq %rcx,%r12 + vpsllq $3,%ymm4,%ymm10 + vpaddq %ymm8,%ymm5,%ymm5 + addq 40+256(%rsp),%r8 + andq %rbx,%r12 + rorxq $41,%rbx,%r13 + vpsrlq $19,%ymm4,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%rbx,%rdi + leaq (%r9,%r14,1),%r9 + leaq (%r8,%r12,1),%r8 + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %rdx,%rbx,%r12 + xorq %rdi,%r13 + rorxq $14,%rbx,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%r8,%r12,1),%r8 + xorq %r14,%r13 + movq %r9,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%r9,%r12 + leaq (%r8,%r13,1),%r8 + xorq %r10,%rdi + vpaddq %ymm11,%ymm5,%ymm5 + rorxq $34,%r9,%r14 + rorxq $28,%r9,%r13 + leaq (%rax,%r8,1),%rax + vpaddq 32(%rbp),%ymm5,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r10,%r15 + xorq %r13,%r14 + leaq (%r8,%r15,1),%r8 + movq %rbx,%r12 + vmovdqa %ymm10,32(%rsp) + vpalignr $8,%ymm6,%ymm7,%ymm8 + addq 64+256(%rsp),%rdx + andq %rax,%r12 + rorxq $41,%rax,%r13 + vpalignr $8,%ymm2,%ymm3,%ymm11 + rorxq $18,%rax,%r15 + leaq (%r8,%r14,1),%r8 + leaq (%rdx,%r12,1),%rdx + vpsrlq $1,%ymm8,%ymm10 + andnq %rcx,%rax,%r12 + xorq %r15,%r13 + rorxq $14,%rax,%r14 + vpaddq %ymm11,%ymm6,%ymm6 + vpsrlq $7,%ymm8,%ymm11 + leaq (%rdx,%r12,1),%rdx + xorq %r14,%r13 + movq %r8,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%r8,%r12 + leaq (%rdx,%r13,1),%rdx + xorq %r9,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%r8,%r14 + rorxq $28,%r8,%r13 + leaq (%r11,%rdx,1),%r11 + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r9,%rdi + vpsrlq $6,%ymm5,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%rdx,%rdi,1),%rdx + movq %rax,%r12 + vpsllq $3,%ymm5,%ymm10 + vpaddq %ymm8,%ymm6,%ymm6 + addq 72+256(%rsp),%rcx + andq %r11,%r12 + rorxq $41,%r11,%r13 + vpsrlq $19,%ymm5,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%r11,%rdi + leaq (%rdx,%r14,1),%rdx + leaq (%rcx,%r12,1),%rcx + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %rbx,%r11,%r12 + xorq %rdi,%r13 + rorxq $14,%r11,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%rcx,%r12,1),%rcx + xorq %r14,%r13 + movq %rdx,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%rdx,%r12 + leaq (%rcx,%r13,1),%rcx + xorq %r8,%rdi + vpaddq %ymm11,%ymm6,%ymm6 + rorxq $34,%rdx,%r14 + rorxq $28,%rdx,%r13 + leaq (%r10,%rcx,1),%r10 + vpaddq 64(%rbp),%ymm6,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r8,%r15 + xorq %r13,%r14 + leaq (%rcx,%r15,1),%rcx + movq %r11,%r12 + vmovdqa %ymm10,64(%rsp) + vpalignr $8,%ymm7,%ymm0,%ymm8 + addq 96+256(%rsp),%rbx + andq %r10,%r12 + rorxq $41,%r10,%r13 + vpalignr $8,%ymm3,%ymm4,%ymm11 + rorxq $18,%r10,%r15 + leaq (%rcx,%r14,1),%rcx + leaq (%rbx,%r12,1),%rbx + vpsrlq $1,%ymm8,%ymm10 + andnq %rax,%r10,%r12 + xorq %r15,%r13 + rorxq $14,%r10,%r14 + vpaddq %ymm11,%ymm7,%ymm7 + vpsrlq $7,%ymm8,%ymm11 + leaq (%rbx,%r12,1),%rbx + xorq %r14,%r13 + movq %rcx,%r15 + vpsllq $56,%ymm8,%ymm9 + vpxor %ymm10,%ymm11,%ymm8 + rorxq $39,%rcx,%r12 + leaq (%rbx,%r13,1),%rbx + xorq %rdx,%r15 + vpsrlq $7,%ymm10,%ymm10 + vpxor %ymm9,%ymm8,%ymm8 + rorxq $34,%rcx,%r14 + rorxq $28,%rcx,%r13 + leaq (%r9,%rbx,1),%r9 + vpsllq $7,%ymm9,%ymm9 + vpxor %ymm10,%ymm8,%ymm8 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rdx,%rdi + vpsrlq $6,%ymm6,%ymm11 + vpxor %ymm9,%ymm8,%ymm8 + xorq %r13,%r14 + leaq (%rbx,%rdi,1),%rbx + movq %r10,%r12 + vpsllq $3,%ymm6,%ymm10 + vpaddq %ymm8,%ymm7,%ymm7 + addq 104+256(%rsp),%rax + andq %r9,%r12 + rorxq $41,%r9,%r13 + vpsrlq $19,%ymm6,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + rorxq $18,%r9,%rdi + leaq (%rbx,%r14,1),%rbx + leaq (%rax,%r12,1),%rax + vpsllq $42,%ymm10,%ymm10 + vpxor %ymm9,%ymm11,%ymm11 + andnq %r11,%r9,%r12 + xorq %rdi,%r13 + rorxq $14,%r9,%r14 + vpsrlq $42,%ymm9,%ymm9 + vpxor %ymm10,%ymm11,%ymm11 + leaq (%rax,%r12,1),%rax + xorq %r14,%r13 + movq %rbx,%rdi + vpxor %ymm9,%ymm11,%ymm11 + rorxq $39,%rbx,%r12 + leaq (%rax,%r13,1),%rax + xorq %rcx,%rdi + vpaddq %ymm11,%ymm7,%ymm7 + rorxq $34,%rbx,%r14 + rorxq $28,%rbx,%r13 + leaq (%r8,%rax,1),%r8 + vpaddq 96(%rbp),%ymm7,%ymm10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rcx,%r15 + xorq %r13,%r14 + leaq (%rax,%r15,1),%rax + movq %r9,%r12 + vmovdqa %ymm10,96(%rsp) + leaq 256(%rbp),%rbp + cmpb $0,-121(%rbp) + jne L$avx2_00_47 + addq 0+128(%rsp),%r11 + andq %r8,%r12 + rorxq $41,%r8,%r13 + rorxq $18,%r8,%r15 + leaq (%rax,%r14,1),%rax + leaq (%r11,%r12,1),%r11 + andnq %r10,%r8,%r12 + xorq %r15,%r13 + rorxq $14,%r8,%r14 + leaq (%r11,%r12,1),%r11 + xorq %r14,%r13 + movq %rax,%r15 + rorxq $39,%rax,%r12 + leaq (%r11,%r13,1),%r11 + xorq %rbx,%r15 + rorxq $34,%rax,%r14 + rorxq $28,%rax,%r13 + leaq (%rdx,%r11,1),%rdx + andq %r15,%rdi + xorq %r12,%r14 + xorq %rbx,%rdi + xorq %r13,%r14 + leaq (%r11,%rdi,1),%r11 + movq %r8,%r12 + addq 8+128(%rsp),%r10 + andq %rdx,%r12 + rorxq $41,%rdx,%r13 + rorxq $18,%rdx,%rdi + leaq (%r11,%r14,1),%r11 + leaq (%r10,%r12,1),%r10 + andnq %r9,%rdx,%r12 + xorq %rdi,%r13 + rorxq $14,%rdx,%r14 + leaq (%r10,%r12,1),%r10 + xorq %r14,%r13 + movq %r11,%rdi + rorxq $39,%r11,%r12 + leaq (%r10,%r13,1),%r10 + xorq %rax,%rdi + rorxq $34,%r11,%r14 + rorxq $28,%r11,%r13 + leaq (%rcx,%r10,1),%rcx + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rax,%r15 + xorq %r13,%r14 + leaq (%r10,%r15,1),%r10 + movq %rdx,%r12 + addq 32+128(%rsp),%r9 + andq %rcx,%r12 + rorxq $41,%rcx,%r13 + rorxq $18,%rcx,%r15 + leaq (%r10,%r14,1),%r10 + leaq (%r9,%r12,1),%r9 + andnq %r8,%rcx,%r12 + xorq %r15,%r13 + rorxq $14,%rcx,%r14 + leaq (%r9,%r12,1),%r9 + xorq %r14,%r13 + movq %r10,%r15 + rorxq $39,%r10,%r12 + leaq (%r9,%r13,1),%r9 + xorq %r11,%r15 + rorxq $34,%r10,%r14 + rorxq $28,%r10,%r13 + leaq (%rbx,%r9,1),%rbx + andq %r15,%rdi + xorq %r12,%r14 + xorq %r11,%rdi + xorq %r13,%r14 + leaq (%r9,%rdi,1),%r9 + movq %rcx,%r12 + addq 40+128(%rsp),%r8 + andq %rbx,%r12 + rorxq $41,%rbx,%r13 + rorxq $18,%rbx,%rdi + leaq (%r9,%r14,1),%r9 + leaq (%r8,%r12,1),%r8 + andnq %rdx,%rbx,%r12 + xorq %rdi,%r13 + rorxq $14,%rbx,%r14 + leaq (%r8,%r12,1),%r8 + xorq %r14,%r13 + movq %r9,%rdi + rorxq $39,%r9,%r12 + leaq (%r8,%r13,1),%r8 + xorq %r10,%rdi + rorxq $34,%r9,%r14 + rorxq $28,%r9,%r13 + leaq (%rax,%r8,1),%rax + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r10,%r15 + xorq %r13,%r14 + leaq (%r8,%r15,1),%r8 + movq %rbx,%r12 + addq 64+128(%rsp),%rdx + andq %rax,%r12 + rorxq $41,%rax,%r13 + rorxq $18,%rax,%r15 + leaq (%r8,%r14,1),%r8 + leaq (%rdx,%r12,1),%rdx + andnq %rcx,%rax,%r12 + xorq %r15,%r13 + rorxq $14,%rax,%r14 + leaq (%rdx,%r12,1),%rdx + xorq %r14,%r13 + movq %r8,%r15 + rorxq $39,%r8,%r12 + leaq (%rdx,%r13,1),%rdx + xorq %r9,%r15 + rorxq $34,%r8,%r14 + rorxq $28,%r8,%r13 + leaq (%r11,%rdx,1),%r11 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r9,%rdi + xorq %r13,%r14 + leaq (%rdx,%rdi,1),%rdx + movq %rax,%r12 + addq 72+128(%rsp),%rcx + andq %r11,%r12 + rorxq $41,%r11,%r13 + rorxq $18,%r11,%rdi + leaq (%rdx,%r14,1),%rdx + leaq (%rcx,%r12,1),%rcx + andnq %rbx,%r11,%r12 + xorq %rdi,%r13 + rorxq $14,%r11,%r14 + leaq (%rcx,%r12,1),%rcx + xorq %r14,%r13 + movq %rdx,%rdi + rorxq $39,%rdx,%r12 + leaq (%rcx,%r13,1),%rcx + xorq %r8,%rdi + rorxq $34,%rdx,%r14 + rorxq $28,%rdx,%r13 + leaq (%r10,%rcx,1),%r10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r8,%r15 + xorq %r13,%r14 + leaq (%rcx,%r15,1),%rcx + movq %r11,%r12 + addq 96+128(%rsp),%rbx + andq %r10,%r12 + rorxq $41,%r10,%r13 + rorxq $18,%r10,%r15 + leaq (%rcx,%r14,1),%rcx + leaq (%rbx,%r12,1),%rbx + andnq %rax,%r10,%r12 + xorq %r15,%r13 + rorxq $14,%r10,%r14 + leaq (%rbx,%r12,1),%rbx + xorq %r14,%r13 + movq %rcx,%r15 + rorxq $39,%rcx,%r12 + leaq (%rbx,%r13,1),%rbx + xorq %rdx,%r15 + rorxq $34,%rcx,%r14 + rorxq $28,%rcx,%r13 + leaq (%r9,%rbx,1),%r9 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rdx,%rdi + xorq %r13,%r14 + leaq (%rbx,%rdi,1),%rbx + movq %r10,%r12 + addq 104+128(%rsp),%rax + andq %r9,%r12 + rorxq $41,%r9,%r13 + rorxq $18,%r9,%rdi + leaq (%rbx,%r14,1),%rbx + leaq (%rax,%r12,1),%rax + andnq %r11,%r9,%r12 + xorq %rdi,%r13 + rorxq $14,%r9,%r14 + leaq (%rax,%r12,1),%rax + xorq %r14,%r13 + movq %rbx,%rdi + rorxq $39,%rbx,%r12 + leaq (%rax,%r13,1),%rax + xorq %rcx,%rdi + rorxq $34,%rbx,%r14 + rorxq $28,%rbx,%r13 + leaq (%r8,%rax,1),%r8 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rcx,%r15 + xorq %r13,%r14 + leaq (%rax,%r15,1),%rax + movq %r9,%r12 + addq 0(%rsp),%r11 + andq %r8,%r12 + rorxq $41,%r8,%r13 + rorxq $18,%r8,%r15 + leaq (%rax,%r14,1),%rax + leaq (%r11,%r12,1),%r11 + andnq %r10,%r8,%r12 + xorq %r15,%r13 + rorxq $14,%r8,%r14 + leaq (%r11,%r12,1),%r11 + xorq %r14,%r13 + movq %rax,%r15 + rorxq $39,%rax,%r12 + leaq (%r11,%r13,1),%r11 + xorq %rbx,%r15 + rorxq $34,%rax,%r14 + rorxq $28,%rax,%r13 + leaq (%rdx,%r11,1),%rdx + andq %r15,%rdi + xorq %r12,%r14 + xorq %rbx,%rdi + xorq %r13,%r14 + leaq (%r11,%rdi,1),%r11 + movq %r8,%r12 + addq 8(%rsp),%r10 + andq %rdx,%r12 + rorxq $41,%rdx,%r13 + rorxq $18,%rdx,%rdi + leaq (%r11,%r14,1),%r11 + leaq (%r10,%r12,1),%r10 + andnq %r9,%rdx,%r12 + xorq %rdi,%r13 + rorxq $14,%rdx,%r14 + leaq (%r10,%r12,1),%r10 + xorq %r14,%r13 + movq %r11,%rdi + rorxq $39,%r11,%r12 + leaq (%r10,%r13,1),%r10 + xorq %rax,%rdi + rorxq $34,%r11,%r14 + rorxq $28,%r11,%r13 + leaq (%rcx,%r10,1),%rcx + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rax,%r15 + xorq %r13,%r14 + leaq (%r10,%r15,1),%r10 + movq %rdx,%r12 + addq 32(%rsp),%r9 + andq %rcx,%r12 + rorxq $41,%rcx,%r13 + rorxq $18,%rcx,%r15 + leaq (%r10,%r14,1),%r10 + leaq (%r9,%r12,1),%r9 + andnq %r8,%rcx,%r12 + xorq %r15,%r13 + rorxq $14,%rcx,%r14 + leaq (%r9,%r12,1),%r9 + xorq %r14,%r13 + movq %r10,%r15 + rorxq $39,%r10,%r12 + leaq (%r9,%r13,1),%r9 + xorq %r11,%r15 + rorxq $34,%r10,%r14 + rorxq $28,%r10,%r13 + leaq (%rbx,%r9,1),%rbx + andq %r15,%rdi + xorq %r12,%r14 + xorq %r11,%rdi + xorq %r13,%r14 + leaq (%r9,%rdi,1),%r9 + movq %rcx,%r12 + addq 40(%rsp),%r8 + andq %rbx,%r12 + rorxq $41,%rbx,%r13 + rorxq $18,%rbx,%rdi + leaq (%r9,%r14,1),%r9 + leaq (%r8,%r12,1),%r8 + andnq %rdx,%rbx,%r12 + xorq %rdi,%r13 + rorxq $14,%rbx,%r14 + leaq (%r8,%r12,1),%r8 + xorq %r14,%r13 + movq %r9,%rdi + rorxq $39,%r9,%r12 + leaq (%r8,%r13,1),%r8 + xorq %r10,%rdi + rorxq $34,%r9,%r14 + rorxq $28,%r9,%r13 + leaq (%rax,%r8,1),%rax + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r10,%r15 + xorq %r13,%r14 + leaq (%r8,%r15,1),%r8 + movq %rbx,%r12 + addq 64(%rsp),%rdx + andq %rax,%r12 + rorxq $41,%rax,%r13 + rorxq $18,%rax,%r15 + leaq (%r8,%r14,1),%r8 + leaq (%rdx,%r12,1),%rdx + andnq %rcx,%rax,%r12 + xorq %r15,%r13 + rorxq $14,%rax,%r14 + leaq (%rdx,%r12,1),%rdx + xorq %r14,%r13 + movq %r8,%r15 + rorxq $39,%r8,%r12 + leaq (%rdx,%r13,1),%rdx + xorq %r9,%r15 + rorxq $34,%r8,%r14 + rorxq $28,%r8,%r13 + leaq (%r11,%rdx,1),%r11 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r9,%rdi + xorq %r13,%r14 + leaq (%rdx,%rdi,1),%rdx + movq %rax,%r12 + addq 72(%rsp),%rcx + andq %r11,%r12 + rorxq $41,%r11,%r13 + rorxq $18,%r11,%rdi + leaq (%rdx,%r14,1),%rdx + leaq (%rcx,%r12,1),%rcx + andnq %rbx,%r11,%r12 + xorq %rdi,%r13 + rorxq $14,%r11,%r14 + leaq (%rcx,%r12,1),%rcx + xorq %r14,%r13 + movq %rdx,%rdi + rorxq $39,%rdx,%r12 + leaq (%rcx,%r13,1),%rcx + xorq %r8,%rdi + rorxq $34,%rdx,%r14 + rorxq $28,%rdx,%r13 + leaq (%r10,%rcx,1),%r10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r8,%r15 + xorq %r13,%r14 + leaq (%rcx,%r15,1),%rcx + movq %r11,%r12 + addq 96(%rsp),%rbx + andq %r10,%r12 + rorxq $41,%r10,%r13 + rorxq $18,%r10,%r15 + leaq (%rcx,%r14,1),%rcx + leaq (%rbx,%r12,1),%rbx + andnq %rax,%r10,%r12 + xorq %r15,%r13 + rorxq $14,%r10,%r14 + leaq (%rbx,%r12,1),%rbx + xorq %r14,%r13 + movq %rcx,%r15 + rorxq $39,%rcx,%r12 + leaq (%rbx,%r13,1),%rbx + xorq %rdx,%r15 + rorxq $34,%rcx,%r14 + rorxq $28,%rcx,%r13 + leaq (%r9,%rbx,1),%r9 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rdx,%rdi + xorq %r13,%r14 + leaq (%rbx,%rdi,1),%rbx + movq %r10,%r12 + addq 104(%rsp),%rax + andq %r9,%r12 + rorxq $41,%r9,%r13 + rorxq $18,%r9,%rdi + leaq (%rbx,%r14,1),%rbx + leaq (%rax,%r12,1),%rax + andnq %r11,%r9,%r12 + xorq %rdi,%r13 + rorxq $14,%r9,%r14 + leaq (%rax,%r12,1),%rax + xorq %r14,%r13 + movq %rbx,%rdi + rorxq $39,%rbx,%r12 + leaq (%rax,%r13,1),%rax + xorq %rcx,%rdi + rorxq $34,%rbx,%r14 + rorxq $28,%rbx,%r13 + leaq (%r8,%rax,1),%r8 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rcx,%r15 + xorq %r13,%r14 + leaq (%rax,%r15,1),%rax + movq %r9,%r12 + movq 1280(%rsp),%rdi + addq %r14,%rax + + leaq 1152(%rsp),%rbp + + addq 0(%rdi),%rax + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + addq 48(%rdi),%r10 + addq 56(%rdi),%r11 + + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + cmpq 144(%rbp),%rsi + je L$done_avx2 + + xorq %r14,%r14 + movq %rbx,%rdi + xorq %rcx,%rdi + movq %r9,%r12 + jmp L$ower_avx2 +.p2align 4 +L$ower_avx2: + addq 0+16(%rbp),%r11 + andq %r8,%r12 + rorxq $41,%r8,%r13 + rorxq $18,%r8,%r15 + leaq (%rax,%r14,1),%rax + leaq (%r11,%r12,1),%r11 + andnq %r10,%r8,%r12 + xorq %r15,%r13 + rorxq $14,%r8,%r14 + leaq (%r11,%r12,1),%r11 + xorq %r14,%r13 + movq %rax,%r15 + rorxq $39,%rax,%r12 + leaq (%r11,%r13,1),%r11 + xorq %rbx,%r15 + rorxq $34,%rax,%r14 + rorxq $28,%rax,%r13 + leaq (%rdx,%r11,1),%rdx + andq %r15,%rdi + xorq %r12,%r14 + xorq %rbx,%rdi + xorq %r13,%r14 + leaq (%r11,%rdi,1),%r11 + movq %r8,%r12 + addq 8+16(%rbp),%r10 + andq %rdx,%r12 + rorxq $41,%rdx,%r13 + rorxq $18,%rdx,%rdi + leaq (%r11,%r14,1),%r11 + leaq (%r10,%r12,1),%r10 + andnq %r9,%rdx,%r12 + xorq %rdi,%r13 + rorxq $14,%rdx,%r14 + leaq (%r10,%r12,1),%r10 + xorq %r14,%r13 + movq %r11,%rdi + rorxq $39,%r11,%r12 + leaq (%r10,%r13,1),%r10 + xorq %rax,%rdi + rorxq $34,%r11,%r14 + rorxq $28,%r11,%r13 + leaq (%rcx,%r10,1),%rcx + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rax,%r15 + xorq %r13,%r14 + leaq (%r10,%r15,1),%r10 + movq %rdx,%r12 + addq 32+16(%rbp),%r9 + andq %rcx,%r12 + rorxq $41,%rcx,%r13 + rorxq $18,%rcx,%r15 + leaq (%r10,%r14,1),%r10 + leaq (%r9,%r12,1),%r9 + andnq %r8,%rcx,%r12 + xorq %r15,%r13 + rorxq $14,%rcx,%r14 + leaq (%r9,%r12,1),%r9 + xorq %r14,%r13 + movq %r10,%r15 + rorxq $39,%r10,%r12 + leaq (%r9,%r13,1),%r9 + xorq %r11,%r15 + rorxq $34,%r10,%r14 + rorxq $28,%r10,%r13 + leaq (%rbx,%r9,1),%rbx + andq %r15,%rdi + xorq %r12,%r14 + xorq %r11,%rdi + xorq %r13,%r14 + leaq (%r9,%rdi,1),%r9 + movq %rcx,%r12 + addq 40+16(%rbp),%r8 + andq %rbx,%r12 + rorxq $41,%rbx,%r13 + rorxq $18,%rbx,%rdi + leaq (%r9,%r14,1),%r9 + leaq (%r8,%r12,1),%r8 + andnq %rdx,%rbx,%r12 + xorq %rdi,%r13 + rorxq $14,%rbx,%r14 + leaq (%r8,%r12,1),%r8 + xorq %r14,%r13 + movq %r9,%rdi + rorxq $39,%r9,%r12 + leaq (%r8,%r13,1),%r8 + xorq %r10,%rdi + rorxq $34,%r9,%r14 + rorxq $28,%r9,%r13 + leaq (%rax,%r8,1),%rax + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r10,%r15 + xorq %r13,%r14 + leaq (%r8,%r15,1),%r8 + movq %rbx,%r12 + addq 64+16(%rbp),%rdx + andq %rax,%r12 + rorxq $41,%rax,%r13 + rorxq $18,%rax,%r15 + leaq (%r8,%r14,1),%r8 + leaq (%rdx,%r12,1),%rdx + andnq %rcx,%rax,%r12 + xorq %r15,%r13 + rorxq $14,%rax,%r14 + leaq (%rdx,%r12,1),%rdx + xorq %r14,%r13 + movq %r8,%r15 + rorxq $39,%r8,%r12 + leaq (%rdx,%r13,1),%rdx + xorq %r9,%r15 + rorxq $34,%r8,%r14 + rorxq $28,%r8,%r13 + leaq (%r11,%rdx,1),%r11 + andq %r15,%rdi + xorq %r12,%r14 + xorq %r9,%rdi + xorq %r13,%r14 + leaq (%rdx,%rdi,1),%rdx + movq %rax,%r12 + addq 72+16(%rbp),%rcx + andq %r11,%r12 + rorxq $41,%r11,%r13 + rorxq $18,%r11,%rdi + leaq (%rdx,%r14,1),%rdx + leaq (%rcx,%r12,1),%rcx + andnq %rbx,%r11,%r12 + xorq %rdi,%r13 + rorxq $14,%r11,%r14 + leaq (%rcx,%r12,1),%rcx + xorq %r14,%r13 + movq %rdx,%rdi + rorxq $39,%rdx,%r12 + leaq (%rcx,%r13,1),%rcx + xorq %r8,%rdi + rorxq $34,%rdx,%r14 + rorxq $28,%rdx,%r13 + leaq (%r10,%rcx,1),%r10 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %r8,%r15 + xorq %r13,%r14 + leaq (%rcx,%r15,1),%rcx + movq %r11,%r12 + addq 96+16(%rbp),%rbx + andq %r10,%r12 + rorxq $41,%r10,%r13 + rorxq $18,%r10,%r15 + leaq (%rcx,%r14,1),%rcx + leaq (%rbx,%r12,1),%rbx + andnq %rax,%r10,%r12 + xorq %r15,%r13 + rorxq $14,%r10,%r14 + leaq (%rbx,%r12,1),%rbx + xorq %r14,%r13 + movq %rcx,%r15 + rorxq $39,%rcx,%r12 + leaq (%rbx,%r13,1),%rbx + xorq %rdx,%r15 + rorxq $34,%rcx,%r14 + rorxq $28,%rcx,%r13 + leaq (%r9,%rbx,1),%r9 + andq %r15,%rdi + xorq %r12,%r14 + xorq %rdx,%rdi + xorq %r13,%r14 + leaq (%rbx,%rdi,1),%rbx + movq %r10,%r12 + addq 104+16(%rbp),%rax + andq %r9,%r12 + rorxq $41,%r9,%r13 + rorxq $18,%r9,%rdi + leaq (%rbx,%r14,1),%rbx + leaq (%rax,%r12,1),%rax + andnq %r11,%r9,%r12 + xorq %rdi,%r13 + rorxq $14,%r9,%r14 + leaq (%rax,%r12,1),%rax + xorq %r14,%r13 + movq %rbx,%rdi + rorxq $39,%rbx,%r12 + leaq (%rax,%r13,1),%rax + xorq %rcx,%rdi + rorxq $34,%rbx,%r14 + rorxq $28,%rbx,%r13 + leaq (%r8,%rax,1),%r8 + andq %rdi,%r15 + xorq %r12,%r14 + xorq %rcx,%r15 + xorq %r13,%r14 + leaq (%rax,%r15,1),%rax + movq %r9,%r12 + leaq -128(%rbp),%rbp + cmpq %rsp,%rbp + jae L$ower_avx2 + + movq 1280(%rsp),%rdi + addq %r14,%rax + + leaq 1152(%rsp),%rsp + + + + addq 0(%rdi),%rax + addq 8(%rdi),%rbx + addq 16(%rdi),%rcx + addq 24(%rdi),%rdx + addq 32(%rdi),%r8 + addq 40(%rdi),%r9 + leaq 256(%rsi),%rsi + addq 48(%rdi),%r10 + movq %rsi,%r12 + addq 56(%rdi),%r11 + cmpq 128+16(%rsp),%rsi + + movq %rax,0(%rdi) + cmoveq %rsp,%r12 + movq %rbx,8(%rdi) + movq %rcx,16(%rdi) + movq %rdx,24(%rdi) + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + jbe L$oop_avx2 + leaq (%rsp),%rbp + + + + +L$done_avx2: + movq 152(%rbp),%rsi + + vzeroupper + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue_avx2: + .byte 0xf3,0xc3 + + diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/whrlpool/wp-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/crypto/whrlpool/wp-x86_64.s new file mode 100644 index 0000000..2c94c14 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/whrlpool/wp-x86_64.s @@ -0,0 +1,879 @@ +.text + +.globl _whirlpool_block + +.p2align 4 +_whirlpool_block: + + movq %rsp,%rax + + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + + subq $128+40,%rsp + andq $-64,%rsp + + leaq 128(%rsp),%r10 + movq %rdi,0(%r10) + movq %rsi,8(%r10) + movq %rdx,16(%r10) + movq %rax,32(%r10) + +L$prologue: + + movq %r10,%rbx + leaq L$table(%rip),%rbp + + xorq %rcx,%rcx + xorq %rdx,%rdx + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + movq 32(%rdi),%r12 + movq 40(%rdi),%r13 + movq 48(%rdi),%r14 + movq 56(%rdi),%r15 +L$outerloop: + movq %r8,0(%rsp) + movq %r9,8(%rsp) + movq %r10,16(%rsp) + movq %r11,24(%rsp) + movq %r12,32(%rsp) + movq %r13,40(%rsp) + movq %r14,48(%rsp) + movq %r15,56(%rsp) + xorq 0(%rsi),%r8 + xorq 8(%rsi),%r9 + xorq 16(%rsi),%r10 + xorq 24(%rsi),%r11 + xorq 32(%rsi),%r12 + xorq 40(%rsi),%r13 + xorq 48(%rsi),%r14 + xorq 56(%rsi),%r15 + movq %r8,64+0(%rsp) + movq %r9,64+8(%rsp) + movq %r10,64+16(%rsp) + movq %r11,64+24(%rsp) + movq %r12,64+32(%rsp) + movq %r13,64+40(%rsp) + movq %r14,64+48(%rsp) + movq %r15,64+56(%rsp) + xorq %rsi,%rsi + movq %rsi,24(%rbx) + jmp L$round +.p2align 4 +L$round: + movq 4096(%rbp,%rsi,8),%r8 + movl 0(%rsp),%eax + movl 4(%rsp),%ebx + movzbl %al,%ecx + movzbl %ah,%edx + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r8 + movq 7(%rbp,%rdi,8),%r9 + movl 0+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + movq 6(%rbp,%rsi,8),%r10 + movq 5(%rbp,%rdi,8),%r11 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + movq 4(%rbp,%rsi,8),%r12 + movq 3(%rbp,%rdi,8),%r13 + movl 0+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + movq 2(%rbp,%rsi,8),%r14 + movq 1(%rbp,%rdi,8),%r15 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r9 + xorq 7(%rbp,%rdi,8),%r10 + movl 8+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r11 + xorq 5(%rbp,%rdi,8),%r12 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r13 + xorq 3(%rbp,%rdi,8),%r14 + movl 8+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r15 + xorq 1(%rbp,%rdi,8),%r8 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r10 + xorq 7(%rbp,%rdi,8),%r11 + movl 16+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r12 + xorq 5(%rbp,%rdi,8),%r13 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r14 + xorq 3(%rbp,%rdi,8),%r15 + movl 16+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r8 + xorq 1(%rbp,%rdi,8),%r9 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r11 + xorq 7(%rbp,%rdi,8),%r12 + movl 24+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r13 + xorq 5(%rbp,%rdi,8),%r14 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r15 + xorq 3(%rbp,%rdi,8),%r8 + movl 24+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r9 + xorq 1(%rbp,%rdi,8),%r10 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r12 + xorq 7(%rbp,%rdi,8),%r13 + movl 32+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r14 + xorq 5(%rbp,%rdi,8),%r15 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r8 + xorq 3(%rbp,%rdi,8),%r9 + movl 32+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r10 + xorq 1(%rbp,%rdi,8),%r11 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r13 + xorq 7(%rbp,%rdi,8),%r14 + movl 40+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r15 + xorq 5(%rbp,%rdi,8),%r8 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r9 + xorq 3(%rbp,%rdi,8),%r10 + movl 40+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r11 + xorq 1(%rbp,%rdi,8),%r12 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r14 + xorq 7(%rbp,%rdi,8),%r15 + movl 48+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r8 + xorq 5(%rbp,%rdi,8),%r9 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r10 + xorq 3(%rbp,%rdi,8),%r11 + movl 48+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r12 + xorq 1(%rbp,%rdi,8),%r13 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r15 + xorq 7(%rbp,%rdi,8),%r8 + movl 56+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r9 + xorq 5(%rbp,%rdi,8),%r10 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r11 + xorq 3(%rbp,%rdi,8),%r12 + movl 56+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r13 + xorq 1(%rbp,%rdi,8),%r14 + movq %r8,0(%rsp) + movq %r9,8(%rsp) + movq %r10,16(%rsp) + movq %r11,24(%rsp) + movq %r12,32(%rsp) + movq %r13,40(%rsp) + movq %r14,48(%rsp) + movq %r15,56(%rsp) + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r8 + xorq 7(%rbp,%rdi,8),%r9 + movl 64+0+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r10 + xorq 5(%rbp,%rdi,8),%r11 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r12 + xorq 3(%rbp,%rdi,8),%r13 + movl 64+0+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r14 + xorq 1(%rbp,%rdi,8),%r15 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r9 + xorq 7(%rbp,%rdi,8),%r10 + movl 64+8+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r11 + xorq 5(%rbp,%rdi,8),%r12 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r13 + xorq 3(%rbp,%rdi,8),%r14 + movl 64+8+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r15 + xorq 1(%rbp,%rdi,8),%r8 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r10 + xorq 7(%rbp,%rdi,8),%r11 + movl 64+16+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r12 + xorq 5(%rbp,%rdi,8),%r13 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r14 + xorq 3(%rbp,%rdi,8),%r15 + movl 64+16+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r8 + xorq 1(%rbp,%rdi,8),%r9 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r11 + xorq 7(%rbp,%rdi,8),%r12 + movl 64+24+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r13 + xorq 5(%rbp,%rdi,8),%r14 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r15 + xorq 3(%rbp,%rdi,8),%r8 + movl 64+24+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r9 + xorq 1(%rbp,%rdi,8),%r10 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r12 + xorq 7(%rbp,%rdi,8),%r13 + movl 64+32+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r14 + xorq 5(%rbp,%rdi,8),%r15 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r8 + xorq 3(%rbp,%rdi,8),%r9 + movl 64+32+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r10 + xorq 1(%rbp,%rdi,8),%r11 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r13 + xorq 7(%rbp,%rdi,8),%r14 + movl 64+40+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r15 + xorq 5(%rbp,%rdi,8),%r8 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r9 + xorq 3(%rbp,%rdi,8),%r10 + movl 64+40+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r11 + xorq 1(%rbp,%rdi,8),%r12 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r14 + xorq 7(%rbp,%rdi,8),%r15 + movl 64+48+8(%rsp),%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r8 + xorq 5(%rbp,%rdi,8),%r9 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r10 + xorq 3(%rbp,%rdi,8),%r11 + movl 64+48+8+4(%rsp),%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r12 + xorq 1(%rbp,%rdi,8),%r13 + shrl $16,%eax + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 0(%rbp,%rsi,8),%r15 + xorq 7(%rbp,%rdi,8),%r8 + + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 6(%rbp,%rsi,8),%r9 + xorq 5(%rbp,%rdi,8),%r10 + shrl $16,%ebx + leaq (%rcx,%rcx,1),%rsi + movzbl %bl,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %bh,%edx + xorq 4(%rbp,%rsi,8),%r11 + xorq 3(%rbp,%rdi,8),%r12 + + leaq (%rcx,%rcx,1),%rsi + movzbl %al,%ecx + leaq (%rdx,%rdx,1),%rdi + movzbl %ah,%edx + xorq 2(%rbp,%rsi,8),%r13 + xorq 1(%rbp,%rdi,8),%r14 + leaq 128(%rsp),%rbx + movq 24(%rbx),%rsi + addq $1,%rsi + cmpq $10,%rsi + je L$roundsdone + + movq %rsi,24(%rbx) + movq %r8,64+0(%rsp) + movq %r9,64+8(%rsp) + movq %r10,64+16(%rsp) + movq %r11,64+24(%rsp) + movq %r12,64+32(%rsp) + movq %r13,64+40(%rsp) + movq %r14,64+48(%rsp) + movq %r15,64+56(%rsp) + jmp L$round +.p2align 4 +L$roundsdone: + movq 0(%rbx),%rdi + movq 8(%rbx),%rsi + movq 16(%rbx),%rax + xorq 0(%rsi),%r8 + xorq 8(%rsi),%r9 + xorq 16(%rsi),%r10 + xorq 24(%rsi),%r11 + xorq 32(%rsi),%r12 + xorq 40(%rsi),%r13 + xorq 48(%rsi),%r14 + xorq 56(%rsi),%r15 + xorq 0(%rdi),%r8 + xorq 8(%rdi),%r9 + xorq 16(%rdi),%r10 + xorq 24(%rdi),%r11 + xorq 32(%rdi),%r12 + xorq 40(%rdi),%r13 + xorq 48(%rdi),%r14 + xorq 56(%rdi),%r15 + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + leaq 64(%rsi),%rsi + subq $1,%rax + jz L$alldone + movq %rsi,8(%rbx) + movq %rax,16(%rbx) + jmp L$outerloop +L$alldone: + movq 32(%rbx),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$epilogue: + .byte 0xf3,0xc3 + + + +.p2align 6 + +L$table: +.byte 24,24,96,24,192,120,48,216,24,24,96,24,192,120,48,216 +.byte 35,35,140,35,5,175,70,38,35,35,140,35,5,175,70,38 +.byte 198,198,63,198,126,249,145,184,198,198,63,198,126,249,145,184 +.byte 232,232,135,232,19,111,205,251,232,232,135,232,19,111,205,251 +.byte 135,135,38,135,76,161,19,203,135,135,38,135,76,161,19,203 +.byte 184,184,218,184,169,98,109,17,184,184,218,184,169,98,109,17 +.byte 1,1,4,1,8,5,2,9,1,1,4,1,8,5,2,9 +.byte 79,79,33,79,66,110,158,13,79,79,33,79,66,110,158,13 +.byte 54,54,216,54,173,238,108,155,54,54,216,54,173,238,108,155 +.byte 166,166,162,166,89,4,81,255,166,166,162,166,89,4,81,255 +.byte 210,210,111,210,222,189,185,12,210,210,111,210,222,189,185,12 +.byte 245,245,243,245,251,6,247,14,245,245,243,245,251,6,247,14 +.byte 121,121,249,121,239,128,242,150,121,121,249,121,239,128,242,150 +.byte 111,111,161,111,95,206,222,48,111,111,161,111,95,206,222,48 +.byte 145,145,126,145,252,239,63,109,145,145,126,145,252,239,63,109 +.byte 82,82,85,82,170,7,164,248,82,82,85,82,170,7,164,248 +.byte 96,96,157,96,39,253,192,71,96,96,157,96,39,253,192,71 +.byte 188,188,202,188,137,118,101,53,188,188,202,188,137,118,101,53 +.byte 155,155,86,155,172,205,43,55,155,155,86,155,172,205,43,55 +.byte 142,142,2,142,4,140,1,138,142,142,2,142,4,140,1,138 +.byte 163,163,182,163,113,21,91,210,163,163,182,163,113,21,91,210 +.byte 12,12,48,12,96,60,24,108,12,12,48,12,96,60,24,108 +.byte 123,123,241,123,255,138,246,132,123,123,241,123,255,138,246,132 +.byte 53,53,212,53,181,225,106,128,53,53,212,53,181,225,106,128 +.byte 29,29,116,29,232,105,58,245,29,29,116,29,232,105,58,245 +.byte 224,224,167,224,83,71,221,179,224,224,167,224,83,71,221,179 +.byte 215,215,123,215,246,172,179,33,215,215,123,215,246,172,179,33 +.byte 194,194,47,194,94,237,153,156,194,194,47,194,94,237,153,156 +.byte 46,46,184,46,109,150,92,67,46,46,184,46,109,150,92,67 +.byte 75,75,49,75,98,122,150,41,75,75,49,75,98,122,150,41 +.byte 254,254,223,254,163,33,225,93,254,254,223,254,163,33,225,93 +.byte 87,87,65,87,130,22,174,213,87,87,65,87,130,22,174,213 +.byte 21,21,84,21,168,65,42,189,21,21,84,21,168,65,42,189 +.byte 119,119,193,119,159,182,238,232,119,119,193,119,159,182,238,232 +.byte 55,55,220,55,165,235,110,146,55,55,220,55,165,235,110,146 +.byte 229,229,179,229,123,86,215,158,229,229,179,229,123,86,215,158 +.byte 159,159,70,159,140,217,35,19,159,159,70,159,140,217,35,19 +.byte 240,240,231,240,211,23,253,35,240,240,231,240,211,23,253,35 +.byte 74,74,53,74,106,127,148,32,74,74,53,74,106,127,148,32 +.byte 218,218,79,218,158,149,169,68,218,218,79,218,158,149,169,68 +.byte 88,88,125,88,250,37,176,162,88,88,125,88,250,37,176,162 +.byte 201,201,3,201,6,202,143,207,201,201,3,201,6,202,143,207 +.byte 41,41,164,41,85,141,82,124,41,41,164,41,85,141,82,124 +.byte 10,10,40,10,80,34,20,90,10,10,40,10,80,34,20,90 +.byte 177,177,254,177,225,79,127,80,177,177,254,177,225,79,127,80 +.byte 160,160,186,160,105,26,93,201,160,160,186,160,105,26,93,201 +.byte 107,107,177,107,127,218,214,20,107,107,177,107,127,218,214,20 +.byte 133,133,46,133,92,171,23,217,133,133,46,133,92,171,23,217 +.byte 189,189,206,189,129,115,103,60,189,189,206,189,129,115,103,60 +.byte 93,93,105,93,210,52,186,143,93,93,105,93,210,52,186,143 +.byte 16,16,64,16,128,80,32,144,16,16,64,16,128,80,32,144 +.byte 244,244,247,244,243,3,245,7,244,244,247,244,243,3,245,7 +.byte 203,203,11,203,22,192,139,221,203,203,11,203,22,192,139,221 +.byte 62,62,248,62,237,198,124,211,62,62,248,62,237,198,124,211 +.byte 5,5,20,5,40,17,10,45,5,5,20,5,40,17,10,45 +.byte 103,103,129,103,31,230,206,120,103,103,129,103,31,230,206,120 +.byte 228,228,183,228,115,83,213,151,228,228,183,228,115,83,213,151 +.byte 39,39,156,39,37,187,78,2,39,39,156,39,37,187,78,2 +.byte 65,65,25,65,50,88,130,115,65,65,25,65,50,88,130,115 +.byte 139,139,22,139,44,157,11,167,139,139,22,139,44,157,11,167 +.byte 167,167,166,167,81,1,83,246,167,167,166,167,81,1,83,246 +.byte 125,125,233,125,207,148,250,178,125,125,233,125,207,148,250,178 +.byte 149,149,110,149,220,251,55,73,149,149,110,149,220,251,55,73 +.byte 216,216,71,216,142,159,173,86,216,216,71,216,142,159,173,86 +.byte 251,251,203,251,139,48,235,112,251,251,203,251,139,48,235,112 +.byte 238,238,159,238,35,113,193,205,238,238,159,238,35,113,193,205 +.byte 124,124,237,124,199,145,248,187,124,124,237,124,199,145,248,187 +.byte 102,102,133,102,23,227,204,113,102,102,133,102,23,227,204,113 +.byte 221,221,83,221,166,142,167,123,221,221,83,221,166,142,167,123 +.byte 23,23,92,23,184,75,46,175,23,23,92,23,184,75,46,175 +.byte 71,71,1,71,2,70,142,69,71,71,1,71,2,70,142,69 +.byte 158,158,66,158,132,220,33,26,158,158,66,158,132,220,33,26 +.byte 202,202,15,202,30,197,137,212,202,202,15,202,30,197,137,212 +.byte 45,45,180,45,117,153,90,88,45,45,180,45,117,153,90,88 +.byte 191,191,198,191,145,121,99,46,191,191,198,191,145,121,99,46 +.byte 7,7,28,7,56,27,14,63,7,7,28,7,56,27,14,63 +.byte 173,173,142,173,1,35,71,172,173,173,142,173,1,35,71,172 +.byte 90,90,117,90,234,47,180,176,90,90,117,90,234,47,180,176 +.byte 131,131,54,131,108,181,27,239,131,131,54,131,108,181,27,239 +.byte 51,51,204,51,133,255,102,182,51,51,204,51,133,255,102,182 +.byte 99,99,145,99,63,242,198,92,99,99,145,99,63,242,198,92 +.byte 2,2,8,2,16,10,4,18,2,2,8,2,16,10,4,18 +.byte 170,170,146,170,57,56,73,147,170,170,146,170,57,56,73,147 +.byte 113,113,217,113,175,168,226,222,113,113,217,113,175,168,226,222 +.byte 200,200,7,200,14,207,141,198,200,200,7,200,14,207,141,198 +.byte 25,25,100,25,200,125,50,209,25,25,100,25,200,125,50,209 +.byte 73,73,57,73,114,112,146,59,73,73,57,73,114,112,146,59 +.byte 217,217,67,217,134,154,175,95,217,217,67,217,134,154,175,95 +.byte 242,242,239,242,195,29,249,49,242,242,239,242,195,29,249,49 +.byte 227,227,171,227,75,72,219,168,227,227,171,227,75,72,219,168 +.byte 91,91,113,91,226,42,182,185,91,91,113,91,226,42,182,185 +.byte 136,136,26,136,52,146,13,188,136,136,26,136,52,146,13,188 +.byte 154,154,82,154,164,200,41,62,154,154,82,154,164,200,41,62 +.byte 38,38,152,38,45,190,76,11,38,38,152,38,45,190,76,11 +.byte 50,50,200,50,141,250,100,191,50,50,200,50,141,250,100,191 +.byte 176,176,250,176,233,74,125,89,176,176,250,176,233,74,125,89 +.byte 233,233,131,233,27,106,207,242,233,233,131,233,27,106,207,242 +.byte 15,15,60,15,120,51,30,119,15,15,60,15,120,51,30,119 +.byte 213,213,115,213,230,166,183,51,213,213,115,213,230,166,183,51 +.byte 128,128,58,128,116,186,29,244,128,128,58,128,116,186,29,244 +.byte 190,190,194,190,153,124,97,39,190,190,194,190,153,124,97,39 +.byte 205,205,19,205,38,222,135,235,205,205,19,205,38,222,135,235 +.byte 52,52,208,52,189,228,104,137,52,52,208,52,189,228,104,137 +.byte 72,72,61,72,122,117,144,50,72,72,61,72,122,117,144,50 +.byte 255,255,219,255,171,36,227,84,255,255,219,255,171,36,227,84 +.byte 122,122,245,122,247,143,244,141,122,122,245,122,247,143,244,141 +.byte 144,144,122,144,244,234,61,100,144,144,122,144,244,234,61,100 +.byte 95,95,97,95,194,62,190,157,95,95,97,95,194,62,190,157 +.byte 32,32,128,32,29,160,64,61,32,32,128,32,29,160,64,61 +.byte 104,104,189,104,103,213,208,15,104,104,189,104,103,213,208,15 +.byte 26,26,104,26,208,114,52,202,26,26,104,26,208,114,52,202 +.byte 174,174,130,174,25,44,65,183,174,174,130,174,25,44,65,183 +.byte 180,180,234,180,201,94,117,125,180,180,234,180,201,94,117,125 +.byte 84,84,77,84,154,25,168,206,84,84,77,84,154,25,168,206 +.byte 147,147,118,147,236,229,59,127,147,147,118,147,236,229,59,127 +.byte 34,34,136,34,13,170,68,47,34,34,136,34,13,170,68,47 +.byte 100,100,141,100,7,233,200,99,100,100,141,100,7,233,200,99 +.byte 241,241,227,241,219,18,255,42,241,241,227,241,219,18,255,42 +.byte 115,115,209,115,191,162,230,204,115,115,209,115,191,162,230,204 +.byte 18,18,72,18,144,90,36,130,18,18,72,18,144,90,36,130 +.byte 64,64,29,64,58,93,128,122,64,64,29,64,58,93,128,122 +.byte 8,8,32,8,64,40,16,72,8,8,32,8,64,40,16,72 +.byte 195,195,43,195,86,232,155,149,195,195,43,195,86,232,155,149 +.byte 236,236,151,236,51,123,197,223,236,236,151,236,51,123,197,223 +.byte 219,219,75,219,150,144,171,77,219,219,75,219,150,144,171,77 +.byte 161,161,190,161,97,31,95,192,161,161,190,161,97,31,95,192 +.byte 141,141,14,141,28,131,7,145,141,141,14,141,28,131,7,145 +.byte 61,61,244,61,245,201,122,200,61,61,244,61,245,201,122,200 +.byte 151,151,102,151,204,241,51,91,151,151,102,151,204,241,51,91 +.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +.byte 207,207,27,207,54,212,131,249,207,207,27,207,54,212,131,249 +.byte 43,43,172,43,69,135,86,110,43,43,172,43,69,135,86,110 +.byte 118,118,197,118,151,179,236,225,118,118,197,118,151,179,236,225 +.byte 130,130,50,130,100,176,25,230,130,130,50,130,100,176,25,230 +.byte 214,214,127,214,254,169,177,40,214,214,127,214,254,169,177,40 +.byte 27,27,108,27,216,119,54,195,27,27,108,27,216,119,54,195 +.byte 181,181,238,181,193,91,119,116,181,181,238,181,193,91,119,116 +.byte 175,175,134,175,17,41,67,190,175,175,134,175,17,41,67,190 +.byte 106,106,181,106,119,223,212,29,106,106,181,106,119,223,212,29 +.byte 80,80,93,80,186,13,160,234,80,80,93,80,186,13,160,234 +.byte 69,69,9,69,18,76,138,87,69,69,9,69,18,76,138,87 +.byte 243,243,235,243,203,24,251,56,243,243,235,243,203,24,251,56 +.byte 48,48,192,48,157,240,96,173,48,48,192,48,157,240,96,173 +.byte 239,239,155,239,43,116,195,196,239,239,155,239,43,116,195,196 +.byte 63,63,252,63,229,195,126,218,63,63,252,63,229,195,126,218 +.byte 85,85,73,85,146,28,170,199,85,85,73,85,146,28,170,199 +.byte 162,162,178,162,121,16,89,219,162,162,178,162,121,16,89,219 +.byte 234,234,143,234,3,101,201,233,234,234,143,234,3,101,201,233 +.byte 101,101,137,101,15,236,202,106,101,101,137,101,15,236,202,106 +.byte 186,186,210,186,185,104,105,3,186,186,210,186,185,104,105,3 +.byte 47,47,188,47,101,147,94,74,47,47,188,47,101,147,94,74 +.byte 192,192,39,192,78,231,157,142,192,192,39,192,78,231,157,142 +.byte 222,222,95,222,190,129,161,96,222,222,95,222,190,129,161,96 +.byte 28,28,112,28,224,108,56,252,28,28,112,28,224,108,56,252 +.byte 253,253,211,253,187,46,231,70,253,253,211,253,187,46,231,70 +.byte 77,77,41,77,82,100,154,31,77,77,41,77,82,100,154,31 +.byte 146,146,114,146,228,224,57,118,146,146,114,146,228,224,57,118 +.byte 117,117,201,117,143,188,234,250,117,117,201,117,143,188,234,250 +.byte 6,6,24,6,48,30,12,54,6,6,24,6,48,30,12,54 +.byte 138,138,18,138,36,152,9,174,138,138,18,138,36,152,9,174 +.byte 178,178,242,178,249,64,121,75,178,178,242,178,249,64,121,75 +.byte 230,230,191,230,99,89,209,133,230,230,191,230,99,89,209,133 +.byte 14,14,56,14,112,54,28,126,14,14,56,14,112,54,28,126 +.byte 31,31,124,31,248,99,62,231,31,31,124,31,248,99,62,231 +.byte 98,98,149,98,55,247,196,85,98,98,149,98,55,247,196,85 +.byte 212,212,119,212,238,163,181,58,212,212,119,212,238,163,181,58 +.byte 168,168,154,168,41,50,77,129,168,168,154,168,41,50,77,129 +.byte 150,150,98,150,196,244,49,82,150,150,98,150,196,244,49,82 +.byte 249,249,195,249,155,58,239,98,249,249,195,249,155,58,239,98 +.byte 197,197,51,197,102,246,151,163,197,197,51,197,102,246,151,163 +.byte 37,37,148,37,53,177,74,16,37,37,148,37,53,177,74,16 +.byte 89,89,121,89,242,32,178,171,89,89,121,89,242,32,178,171 +.byte 132,132,42,132,84,174,21,208,132,132,42,132,84,174,21,208 +.byte 114,114,213,114,183,167,228,197,114,114,213,114,183,167,228,197 +.byte 57,57,228,57,213,221,114,236,57,57,228,57,213,221,114,236 +.byte 76,76,45,76,90,97,152,22,76,76,45,76,90,97,152,22 +.byte 94,94,101,94,202,59,188,148,94,94,101,94,202,59,188,148 +.byte 120,120,253,120,231,133,240,159,120,120,253,120,231,133,240,159 +.byte 56,56,224,56,221,216,112,229,56,56,224,56,221,216,112,229 +.byte 140,140,10,140,20,134,5,152,140,140,10,140,20,134,5,152 +.byte 209,209,99,209,198,178,191,23,209,209,99,209,198,178,191,23 +.byte 165,165,174,165,65,11,87,228,165,165,174,165,65,11,87,228 +.byte 226,226,175,226,67,77,217,161,226,226,175,226,67,77,217,161 +.byte 97,97,153,97,47,248,194,78,97,97,153,97,47,248,194,78 +.byte 179,179,246,179,241,69,123,66,179,179,246,179,241,69,123,66 +.byte 33,33,132,33,21,165,66,52,33,33,132,33,21,165,66,52 +.byte 156,156,74,156,148,214,37,8,156,156,74,156,148,214,37,8 +.byte 30,30,120,30,240,102,60,238,30,30,120,30,240,102,60,238 +.byte 67,67,17,67,34,82,134,97,67,67,17,67,34,82,134,97 +.byte 199,199,59,199,118,252,147,177,199,199,59,199,118,252,147,177 +.byte 252,252,215,252,179,43,229,79,252,252,215,252,179,43,229,79 +.byte 4,4,16,4,32,20,8,36,4,4,16,4,32,20,8,36 +.byte 81,81,89,81,178,8,162,227,81,81,89,81,178,8,162,227 +.byte 153,153,94,153,188,199,47,37,153,153,94,153,188,199,47,37 +.byte 109,109,169,109,79,196,218,34,109,109,169,109,79,196,218,34 +.byte 13,13,52,13,104,57,26,101,13,13,52,13,104,57,26,101 +.byte 250,250,207,250,131,53,233,121,250,250,207,250,131,53,233,121 +.byte 223,223,91,223,182,132,163,105,223,223,91,223,182,132,163,105 +.byte 126,126,229,126,215,155,252,169,126,126,229,126,215,155,252,169 +.byte 36,36,144,36,61,180,72,25,36,36,144,36,61,180,72,25 +.byte 59,59,236,59,197,215,118,254,59,59,236,59,197,215,118,254 +.byte 171,171,150,171,49,61,75,154,171,171,150,171,49,61,75,154 +.byte 206,206,31,206,62,209,129,240,206,206,31,206,62,209,129,240 +.byte 17,17,68,17,136,85,34,153,17,17,68,17,136,85,34,153 +.byte 143,143,6,143,12,137,3,131,143,143,6,143,12,137,3,131 +.byte 78,78,37,78,74,107,156,4,78,78,37,78,74,107,156,4 +.byte 183,183,230,183,209,81,115,102,183,183,230,183,209,81,115,102 +.byte 235,235,139,235,11,96,203,224,235,235,139,235,11,96,203,224 +.byte 60,60,240,60,253,204,120,193,60,60,240,60,253,204,120,193 +.byte 129,129,62,129,124,191,31,253,129,129,62,129,124,191,31,253 +.byte 148,148,106,148,212,254,53,64,148,148,106,148,212,254,53,64 +.byte 247,247,251,247,235,12,243,28,247,247,251,247,235,12,243,28 +.byte 185,185,222,185,161,103,111,24,185,185,222,185,161,103,111,24 +.byte 19,19,76,19,152,95,38,139,19,19,76,19,152,95,38,139 +.byte 44,44,176,44,125,156,88,81,44,44,176,44,125,156,88,81 +.byte 211,211,107,211,214,184,187,5,211,211,107,211,214,184,187,5 +.byte 231,231,187,231,107,92,211,140,231,231,187,231,107,92,211,140 +.byte 110,110,165,110,87,203,220,57,110,110,165,110,87,203,220,57 +.byte 196,196,55,196,110,243,149,170,196,196,55,196,110,243,149,170 +.byte 3,3,12,3,24,15,6,27,3,3,12,3,24,15,6,27 +.byte 86,86,69,86,138,19,172,220,86,86,69,86,138,19,172,220 +.byte 68,68,13,68,26,73,136,94,68,68,13,68,26,73,136,94 +.byte 127,127,225,127,223,158,254,160,127,127,225,127,223,158,254,160 +.byte 169,169,158,169,33,55,79,136,169,169,158,169,33,55,79,136 +.byte 42,42,168,42,77,130,84,103,42,42,168,42,77,130,84,103 +.byte 187,187,214,187,177,109,107,10,187,187,214,187,177,109,107,10 +.byte 193,193,35,193,70,226,159,135,193,193,35,193,70,226,159,135 +.byte 83,83,81,83,162,2,166,241,83,83,81,83,162,2,166,241 +.byte 220,220,87,220,174,139,165,114,220,220,87,220,174,139,165,114 +.byte 11,11,44,11,88,39,22,83,11,11,44,11,88,39,22,83 +.byte 157,157,78,157,156,211,39,1,157,157,78,157,156,211,39,1 +.byte 108,108,173,108,71,193,216,43,108,108,173,108,71,193,216,43 +.byte 49,49,196,49,149,245,98,164,49,49,196,49,149,245,98,164 +.byte 116,116,205,116,135,185,232,243,116,116,205,116,135,185,232,243 +.byte 246,246,255,246,227,9,241,21,246,246,255,246,227,9,241,21 +.byte 70,70,5,70,10,67,140,76,70,70,5,70,10,67,140,76 +.byte 172,172,138,172,9,38,69,165,172,172,138,172,9,38,69,165 +.byte 137,137,30,137,60,151,15,181,137,137,30,137,60,151,15,181 +.byte 20,20,80,20,160,68,40,180,20,20,80,20,160,68,40,180 +.byte 225,225,163,225,91,66,223,186,225,225,163,225,91,66,223,186 +.byte 22,22,88,22,176,78,44,166,22,22,88,22,176,78,44,166 +.byte 58,58,232,58,205,210,116,247,58,58,232,58,205,210,116,247 +.byte 105,105,185,105,111,208,210,6,105,105,185,105,111,208,210,6 +.byte 9,9,36,9,72,45,18,65,9,9,36,9,72,45,18,65 +.byte 112,112,221,112,167,173,224,215,112,112,221,112,167,173,224,215 +.byte 182,182,226,182,217,84,113,111,182,182,226,182,217,84,113,111 +.byte 208,208,103,208,206,183,189,30,208,208,103,208,206,183,189,30 +.byte 237,237,147,237,59,126,199,214,237,237,147,237,59,126,199,214 +.byte 204,204,23,204,46,219,133,226,204,204,23,204,46,219,133,226 +.byte 66,66,21,66,42,87,132,104,66,66,21,66,42,87,132,104 +.byte 152,152,90,152,180,194,45,44,152,152,90,152,180,194,45,44 +.byte 164,164,170,164,73,14,85,237,164,164,170,164,73,14,85,237 +.byte 40,40,160,40,93,136,80,117,40,40,160,40,93,136,80,117 +.byte 92,92,109,92,218,49,184,134,92,92,109,92,218,49,184,134 +.byte 248,248,199,248,147,63,237,107,248,248,199,248,147,63,237,107 +.byte 134,134,34,134,68,164,17,194,134,134,34,134,68,164,17,194 +.byte 24,35,198,232,135,184,1,79 +.byte 54,166,210,245,121,111,145,82 +.byte 96,188,155,142,163,12,123,53 +.byte 29,224,215,194,46,75,254,87 +.byte 21,119,55,229,159,240,74,218 +.byte 88,201,41,10,177,160,107,133 +.byte 189,93,16,244,203,62,5,103 +.byte 228,39,65,139,167,125,149,216 +.byte 251,238,124,102,221,23,71,158 +.byte 202,45,191,7,173,90,131,51 diff --git a/vere/ext/openssl/gen/macos-x86_64/crypto/x86_64cpuid.s b/vere/ext/openssl/gen/macos-x86_64/crypto/x86_64cpuid.s new file mode 100644 index 0000000..41e09df --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/crypto/x86_64cpuid.s @@ -0,0 +1,482 @@ + +.private_extern _OPENSSL_cpuid_setup +.mod_init_func + .p2align 3 + .quad _OPENSSL_cpuid_setup + +.private_extern _OPENSSL_ia32cap_P +.comm _OPENSSL_ia32cap_P,16,2 + +.text + +.globl _OPENSSL_atomic_add + +.p2align 4 +_OPENSSL_atomic_add: + + movl (%rdi),%eax +L$spin: leaq (%rsi,%rax,1),%r8 +.byte 0xf0 + cmpxchgl %r8d,(%rdi) + jne L$spin + movl %r8d,%eax +.byte 0x48,0x98 + .byte 0xf3,0xc3 + + + +.globl _OPENSSL_rdtsc + +.p2align 4 +_OPENSSL_rdtsc: + + rdtsc + shlq $32,%rdx + orq %rdx,%rax + .byte 0xf3,0xc3 + + + +.globl _OPENSSL_ia32_cpuid + +.p2align 4 +_OPENSSL_ia32_cpuid: + + movq %rbx,%r8 + + + xorl %eax,%eax + movq %rax,8(%rdi) + cpuid + movl %eax,%r11d + + xorl %eax,%eax + cmpl $0x756e6547,%ebx + setne %al + movl %eax,%r9d + cmpl $0x49656e69,%edx + setne %al + orl %eax,%r9d + cmpl $0x6c65746e,%ecx + setne %al + orl %eax,%r9d + jz L$intel + + cmpl $0x68747541,%ebx + setne %al + movl %eax,%r10d + cmpl $0x69746E65,%edx + setne %al + orl %eax,%r10d + cmpl $0x444D4163,%ecx + setne %al + orl %eax,%r10d + jnz L$intel + + + movl $0x80000000,%eax + cpuid + cmpl $0x80000001,%eax + jb L$intel + movl %eax,%r10d + movl $0x80000001,%eax + cpuid + orl %ecx,%r9d + andl $0x00000801,%r9d + + cmpl $0x80000008,%r10d + jb L$intel + + movl $0x80000008,%eax + cpuid + movzbq %cl,%r10 + incq %r10 + + movl $1,%eax + cpuid + btl $28,%edx + jnc L$generic + shrl $16,%ebx + cmpb %r10b,%bl + ja L$generic + andl $0xefffffff,%edx + jmp L$generic + +L$intel: + cmpl $4,%r11d + movl $-1,%r10d + jb L$nocacheinfo + + movl $4,%eax + movl $0,%ecx + cpuid + movl %eax,%r10d + shrl $14,%r10d + andl $0xfff,%r10d + +L$nocacheinfo: + movl $1,%eax + cpuid + movd %eax,%xmm0 + andl $0xbfefffff,%edx + cmpl $0,%r9d + jne L$notintel + orl $0x40000000,%edx + andb $15,%ah + cmpb $15,%ah + jne L$notP4 + orl $0x00100000,%edx +L$notP4: + cmpb $6,%ah + jne L$notintel + andl $0x0fff0ff0,%eax + cmpl $0x00050670,%eax + je L$knights + cmpl $0x00080650,%eax + jne L$notintel +L$knights: + andl $0xfbffffff,%ecx + +L$notintel: + btl $28,%edx + jnc L$generic + andl $0xefffffff,%edx + cmpl $0,%r10d + je L$generic + + orl $0x10000000,%edx + shrl $16,%ebx + cmpb $1,%bl + ja L$generic + andl $0xefffffff,%edx +L$generic: + andl $0x00000800,%r9d + andl $0xfffff7ff,%ecx + orl %ecx,%r9d + + movl %edx,%r10d + + cmpl $7,%r11d + jb L$no_extended_info + movl $7,%eax + xorl %ecx,%ecx + cpuid + btl $26,%r9d + jc L$notknights + andl $0xfff7ffff,%ebx +L$notknights: + movd %xmm0,%eax + andl $0x0fff0ff0,%eax + cmpl $0x00050650,%eax + jne L$notskylakex + andl $0xfffeffff,%ebx + +L$notskylakex: + movl %ebx,8(%rdi) + movl %ecx,12(%rdi) +L$no_extended_info: + + btl $27,%r9d + jnc L$clear_avx + xorl %ecx,%ecx +.byte 0x0f,0x01,0xd0 + andl $0xe6,%eax + cmpl $0xe6,%eax + je L$done + andl $0x3fdeffff,8(%rdi) + + + + + andl $6,%eax + cmpl $6,%eax + je L$done +L$clear_avx: + movl $0xefffe7ff,%eax + andl %eax,%r9d + movl $0x3fdeffdf,%eax + andl %eax,8(%rdi) +L$done: + shlq $32,%r9 + movl %r10d,%eax + movq %r8,%rbx + + orq %r9,%rax + .byte 0xf3,0xc3 + + + +.globl _OPENSSL_cleanse + +.p2align 4 +_OPENSSL_cleanse: + + xorq %rax,%rax + cmpq $15,%rsi + jae L$ot + cmpq $0,%rsi + je L$ret +L$ittle: + movb %al,(%rdi) + subq $1,%rsi + leaq 1(%rdi),%rdi + jnz L$ittle +L$ret: + .byte 0xf3,0xc3 +.p2align 4 +L$ot: + testq $7,%rdi + jz L$aligned + movb %al,(%rdi) + leaq -1(%rsi),%rsi + leaq 1(%rdi),%rdi + jmp L$ot +L$aligned: + movq %rax,(%rdi) + leaq -8(%rsi),%rsi + testq $-8,%rsi + leaq 8(%rdi),%rdi + jnz L$aligned + cmpq $0,%rsi + jne L$ittle + .byte 0xf3,0xc3 + + + +.globl _CRYPTO_memcmp + +.p2align 4 +_CRYPTO_memcmp: + + xorq %rax,%rax + xorq %r10,%r10 + cmpq $0,%rdx + je L$no_data + cmpq $16,%rdx + jne L$oop_cmp + movq (%rdi),%r10 + movq 8(%rdi),%r11 + movq $1,%rdx + xorq (%rsi),%r10 + xorq 8(%rsi),%r11 + orq %r11,%r10 + cmovnzq %rdx,%rax + .byte 0xf3,0xc3 + +.p2align 4 +L$oop_cmp: + movb (%rdi),%r10b + leaq 1(%rdi),%rdi + xorb (%rsi),%r10b + leaq 1(%rsi),%rsi + orb %r10b,%al + decq %rdx + jnz L$oop_cmp + negq %rax + shrq $63,%rax +L$no_data: + .byte 0xf3,0xc3 + + +.globl _OPENSSL_wipe_cpu + +.p2align 4 +_OPENSSL_wipe_cpu: + + pxor %xmm0,%xmm0 + pxor %xmm1,%xmm1 + pxor %xmm2,%xmm2 + pxor %xmm3,%xmm3 + pxor %xmm4,%xmm4 + pxor %xmm5,%xmm5 + pxor %xmm6,%xmm6 + pxor %xmm7,%xmm7 + pxor %xmm8,%xmm8 + pxor %xmm9,%xmm9 + pxor %xmm10,%xmm10 + pxor %xmm11,%xmm11 + pxor %xmm12,%xmm12 + pxor %xmm13,%xmm13 + pxor %xmm14,%xmm14 + pxor %xmm15,%xmm15 + xorq %rcx,%rcx + xorq %rdx,%rdx + xorq %rsi,%rsi + xorq %rdi,%rdi + xorq %r8,%r8 + xorq %r9,%r9 + xorq %r10,%r10 + xorq %r11,%r11 + leaq 8(%rsp),%rax + .byte 0xf3,0xc3 + + +.globl _OPENSSL_instrument_bus + +.p2align 4 +_OPENSSL_instrument_bus: + + movq %rdi,%r10 + movq %rsi,%rcx + movq %rsi,%r11 + + rdtsc + movl %eax,%r8d + movl $0,%r9d + clflush (%r10) +.byte 0xf0 + addl %r9d,(%r10) + jmp L$oop +.p2align 4 +L$oop: rdtsc + movl %eax,%edx + subl %r8d,%eax + movl %edx,%r8d + movl %eax,%r9d + clflush (%r10) +.byte 0xf0 + addl %eax,(%r10) + leaq 4(%r10),%r10 + subq $1,%rcx + jnz L$oop + + movq %r11,%rax + .byte 0xf3,0xc3 + + + +.globl _OPENSSL_instrument_bus2 + +.p2align 4 +_OPENSSL_instrument_bus2: + + movq %rdi,%r10 + movq %rsi,%rcx + movq %rdx,%r11 + movq %rcx,8(%rsp) + + rdtsc + movl %eax,%r8d + movl $0,%r9d + + clflush (%r10) +.byte 0xf0 + addl %r9d,(%r10) + + rdtsc + movl %eax,%edx + subl %r8d,%eax + movl %edx,%r8d + movl %eax,%r9d +L$oop2: + clflush (%r10) +.byte 0xf0 + addl %eax,(%r10) + + subq $1,%r11 + jz L$done2 + + rdtsc + movl %eax,%edx + subl %r8d,%eax + movl %edx,%r8d + cmpl %r9d,%eax + movl %eax,%r9d + movl $0,%edx + setne %dl + subq %rdx,%rcx + leaq (%r10,%rdx,4),%r10 + jnz L$oop2 + +L$done2: + movq 8(%rsp),%rax + subq %rcx,%rax + .byte 0xf3,0xc3 + + +.globl _OPENSSL_ia32_rdrand_bytes + +.p2align 4 +_OPENSSL_ia32_rdrand_bytes: + + xorq %rax,%rax + cmpq $0,%rsi + je L$done_rdrand_bytes + + movq $8,%r11 +L$oop_rdrand_bytes: +.byte 73,15,199,242 + jc L$break_rdrand_bytes + decq %r11 + jnz L$oop_rdrand_bytes + jmp L$done_rdrand_bytes + +.p2align 4 +L$break_rdrand_bytes: + cmpq $8,%rsi + jb L$tail_rdrand_bytes + movq %r10,(%rdi) + leaq 8(%rdi),%rdi + addq $8,%rax + subq $8,%rsi + jz L$done_rdrand_bytes + movq $8,%r11 + jmp L$oop_rdrand_bytes + +.p2align 4 +L$tail_rdrand_bytes: + movb %r10b,(%rdi) + leaq 1(%rdi),%rdi + incq %rax + shrq $8,%r10 + decq %rsi + jnz L$tail_rdrand_bytes + +L$done_rdrand_bytes: + xorq %r10,%r10 + .byte 0xf3,0xc3 + + +.globl _OPENSSL_ia32_rdseed_bytes + +.p2align 4 +_OPENSSL_ia32_rdseed_bytes: + + xorq %rax,%rax + cmpq $0,%rsi + je L$done_rdseed_bytes + + movq $8,%r11 +L$oop_rdseed_bytes: +.byte 73,15,199,250 + jc L$break_rdseed_bytes + decq %r11 + jnz L$oop_rdseed_bytes + jmp L$done_rdseed_bytes + +.p2align 4 +L$break_rdseed_bytes: + cmpq $8,%rsi + jb L$tail_rdseed_bytes + movq %r10,(%rdi) + leaq 8(%rdi),%rdi + addq $8,%rax + subq $8,%rsi + jz L$done_rdseed_bytes + movq $8,%r11 + jmp L$oop_rdseed_bytes + +.p2align 4 +L$tail_rdseed_bytes: + movb %r10b,(%rdi) + leaq 1(%rdi),%rdi + incq %rax + shrq $8,%r10 + decq %rsi + jnz L$tail_rdseed_bytes + +L$done_rdseed_bytes: + xorq %r10,%r10 + .byte 0xf3,0xc3 + + diff --git a/vere/ext/openssl/gen/macos-x86_64/engines/e_padlock-x86_64.s b/vere/ext/openssl/gen/macos-x86_64/engines/e_padlock-x86_64.s new file mode 100644 index 0000000..05c7a18 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/engines/e_padlock-x86_64.s @@ -0,0 +1,1037 @@ +.text +.globl _padlock_capability + +.p2align 4 +_padlock_capability: + movq %rbx,%r8 + xorl %eax,%eax + cpuid + xorl %eax,%eax + cmpl $0x746e6543,%ebx + jne L$zhaoxin + cmpl $0x48727561,%edx + jne L$noluck + cmpl $0x736c7561,%ecx + jne L$noluck + jmp L$zhaoxinEnd +L$zhaoxin: + cmpl $0x68532020,%ebx + jne L$noluck + cmpl $0x68676e61,%edx + jne L$noluck + cmpl $0x20206961,%ecx + jne L$noluck +L$zhaoxinEnd: + movl $0xC0000000,%eax + cpuid + movl %eax,%edx + xorl %eax,%eax + cmpl $0xC0000001,%edx + jb L$noluck + movl $0xC0000001,%eax + cpuid + movl %edx,%eax + andl $0xffffffef,%eax + orl $0x10,%eax +L$noluck: + movq %r8,%rbx + .byte 0xf3,0xc3 + + +.globl _padlock_key_bswap + +.p2align 4 +_padlock_key_bswap: + movl 240(%rdi),%edx + incl %edx + shll $2,%edx +L$bswap_loop: + movl (%rdi),%eax + bswapl %eax + movl %eax,(%rdi) + leaq 4(%rdi),%rdi + subl $1,%edx + jnz L$bswap_loop + .byte 0xf3,0xc3 + + +.globl _padlock_verify_context + +.p2align 4 +_padlock_verify_context: + movq %rdi,%rdx + pushf + leaq L$padlock_saved_context(%rip),%rax + call _padlock_verify_ctx + leaq 8(%rsp),%rsp + .byte 0xf3,0xc3 + + + +.p2align 4 +_padlock_verify_ctx: + movq 8(%rsp),%r8 + btq $30,%r8 + jnc L$verified + cmpq (%rax),%rdx + je L$verified + pushf + popf +L$verified: + movq %rdx,(%rax) + .byte 0xf3,0xc3 + + +.globl _padlock_reload_key + +.p2align 4 +_padlock_reload_key: + pushf + popf + .byte 0xf3,0xc3 + + +.globl _padlock_aes_block + +.p2align 4 +_padlock_aes_block: + movq %rbx,%r8 + movq $1,%rcx + leaq 32(%rdx),%rbx + leaq 16(%rdx),%rdx +.byte 0xf3,0x0f,0xa7,0xc8 + movq %r8,%rbx + .byte 0xf3,0xc3 + + +.globl _padlock_xstore + +.p2align 4 +_padlock_xstore: + movl %esi,%edx +.byte 0x0f,0xa7,0xc0 + .byte 0xf3,0xc3 + + +.globl _padlock_sha1_oneshot + +.p2align 4 +_padlock_sha1_oneshot: + movq %rdx,%rcx + movq %rdi,%rdx + movups (%rdi),%xmm0 + subq $128+8,%rsp + movl 16(%rdi),%eax + movaps %xmm0,(%rsp) + movq %rsp,%rdi + movl %eax,16(%rsp) + xorq %rax,%rax +.byte 0xf3,0x0f,0xa6,0xc8 + movaps (%rsp),%xmm0 + movl 16(%rsp),%eax + addq $128+8,%rsp + movups %xmm0,(%rdx) + movl %eax,16(%rdx) + .byte 0xf3,0xc3 + + +.globl _padlock_sha1_blocks + +.p2align 4 +_padlock_sha1_blocks: + movq %rdx,%rcx + movq %rdi,%rdx + movups (%rdi),%xmm0 + subq $128+8,%rsp + movl 16(%rdi),%eax + movaps %xmm0,(%rsp) + movq %rsp,%rdi + movl %eax,16(%rsp) + movq $-1,%rax +.byte 0xf3,0x0f,0xa6,0xc8 + movaps (%rsp),%xmm0 + movl 16(%rsp),%eax + addq $128+8,%rsp + movups %xmm0,(%rdx) + movl %eax,16(%rdx) + .byte 0xf3,0xc3 + + +.globl _padlock_sha256_oneshot + +.p2align 4 +_padlock_sha256_oneshot: + movq %rdx,%rcx + movq %rdi,%rdx + movups (%rdi),%xmm0 + subq $128+8,%rsp + movups 16(%rdi),%xmm1 + movaps %xmm0,(%rsp) + movq %rsp,%rdi + movaps %xmm1,16(%rsp) + xorq %rax,%rax +.byte 0xf3,0x0f,0xa6,0xd0 + movaps (%rsp),%xmm0 + movaps 16(%rsp),%xmm1 + addq $128+8,%rsp + movups %xmm0,(%rdx) + movups %xmm1,16(%rdx) + .byte 0xf3,0xc3 + + +.globl _padlock_sha256_blocks + +.p2align 4 +_padlock_sha256_blocks: + movq %rdx,%rcx + movq %rdi,%rdx + movups (%rdi),%xmm0 + subq $128+8,%rsp + movups 16(%rdi),%xmm1 + movaps %xmm0,(%rsp) + movq %rsp,%rdi + movaps %xmm1,16(%rsp) + movq $-1,%rax +.byte 0xf3,0x0f,0xa6,0xd0 + movaps (%rsp),%xmm0 + movaps 16(%rsp),%xmm1 + addq $128+8,%rsp + movups %xmm0,(%rdx) + movups %xmm1,16(%rdx) + .byte 0xf3,0xc3 + + +.globl _padlock_sha512_blocks + +.p2align 4 +_padlock_sha512_blocks: + movq %rdx,%rcx + movq %rdi,%rdx + movups (%rdi),%xmm0 + subq $128+8,%rsp + movups 16(%rdi),%xmm1 + movups 32(%rdi),%xmm2 + movups 48(%rdi),%xmm3 + movaps %xmm0,(%rsp) + movq %rsp,%rdi + movaps %xmm1,16(%rsp) + movaps %xmm2,32(%rsp) + movaps %xmm3,48(%rsp) +.byte 0xf3,0x0f,0xa6,0xe0 + movaps (%rsp),%xmm0 + movaps 16(%rsp),%xmm1 + movaps 32(%rsp),%xmm2 + movaps 48(%rsp),%xmm3 + addq $128+8,%rsp + movups %xmm0,(%rdx) + movups %xmm1,16(%rdx) + movups %xmm2,32(%rdx) + movups %xmm3,48(%rdx) + .byte 0xf3,0xc3 + +.globl _padlock_ecb_encrypt + +.p2align 4 +_padlock_ecb_encrypt: + pushq %rbp + pushq %rbx + + xorl %eax,%eax + testq $15,%rdx + jnz L$ecb_abort + testq $15,%rcx + jnz L$ecb_abort + leaq L$padlock_saved_context(%rip),%rax + pushf + cld + call _padlock_verify_ctx + leaq 16(%rdx),%rdx + xorl %eax,%eax + xorl %ebx,%ebx + testl $32,(%rdx) + jnz L$ecb_aligned + testq $0x0f,%rdi + setz %al + testq $0x0f,%rsi + setz %bl + testl %ebx,%eax + jnz L$ecb_aligned + negq %rax + movq $512,%rbx + notq %rax + leaq (%rsp),%rbp + cmpq %rbx,%rcx + cmovcq %rcx,%rbx + andq %rbx,%rax + movq %rcx,%rbx + negq %rax + andq $512-1,%rbx + leaq (%rax,%rbp,1),%rsp + movq $512,%rax + cmovzq %rax,%rbx + cmpq %rbx,%rcx + ja L$ecb_loop + movq %rsi,%rax + cmpq %rsp,%rbp + cmoveq %rdi,%rax + addq %rcx,%rax + negq %rax + andq $0xfff,%rax + cmpq $128,%rax + movq $-128,%rax + cmovaeq %rbx,%rax + andq %rax,%rbx + jz L$ecb_unaligned_tail + jmp L$ecb_loop +.p2align 4 +L$ecb_loop: + cmpq %rcx,%rbx + cmovaq %rcx,%rbx + movq %rdi,%r8 + movq %rsi,%r9 + movq %rcx,%r10 + movq %rbx,%rcx + movq %rbx,%r11 + testq $0x0f,%rdi + cmovnzq %rsp,%rdi + testq $0x0f,%rsi + jz L$ecb_inp_aligned + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi + movq %rbx,%rcx + movq %rdi,%rsi +L$ecb_inp_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,200 + movq %r8,%rdi + movq %r11,%rbx + testq $0x0f,%rdi + jz L$ecb_out_aligned + movq %rbx,%rcx + leaq (%rsp),%rsi + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi +L$ecb_out_aligned: + movq %r9,%rsi + movq %r10,%rcx + addq %rbx,%rdi + addq %rbx,%rsi + subq %rbx,%rcx + movq $512,%rbx + jz L$ecb_break + cmpq %rbx,%rcx + jae L$ecb_loop +L$ecb_unaligned_tail: + xorl %eax,%eax + cmpq %rsp,%rbp + cmoveq %rcx,%rax + movq %rdi,%r8 + movq %rcx,%rbx + subq %rax,%rsp + shrq $3,%rcx + leaq (%rsp),%rdi +.byte 0xf3,0x48,0xa5 + movq %rsp,%rsi + movq %r8,%rdi + movq %rbx,%rcx + jmp L$ecb_loop +.p2align 4 +L$ecb_break: + cmpq %rbp,%rsp + je L$ecb_done + + pxor %xmm0,%xmm0 + leaq (%rsp),%rax +L$ecb_bzero: + movaps %xmm0,(%rax) + leaq 16(%rax),%rax + cmpq %rax,%rbp + ja L$ecb_bzero + +L$ecb_done: + leaq (%rbp),%rsp + jmp L$ecb_exit + +.p2align 4 +L$ecb_aligned: + leaq (%rsi,%rcx,1),%rbp + negq %rbp + andq $0xfff,%rbp + xorl %eax,%eax + cmpq $128,%rbp + movq $128-1,%rbp + cmovaeq %rax,%rbp + andq %rcx,%rbp + subq %rbp,%rcx + jz L$ecb_aligned_tail + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,200 + testq %rbp,%rbp + jz L$ecb_exit + +L$ecb_aligned_tail: + movq %rdi,%r8 + movq %rbp,%rbx + movq %rbp,%rcx + leaq (%rsp),%rbp + subq %rcx,%rsp + shrq $3,%rcx + leaq (%rsp),%rdi +.byte 0xf3,0x48,0xa5 + leaq (%r8),%rdi + leaq (%rsp),%rsi + movq %rbx,%rcx + jmp L$ecb_loop +L$ecb_exit: + movl $1,%eax + leaq 8(%rsp),%rsp +L$ecb_abort: + popq %rbx + popq %rbp + .byte 0xf3,0xc3 + +.globl _padlock_cbc_encrypt + +.p2align 4 +_padlock_cbc_encrypt: + pushq %rbp + pushq %rbx + + xorl %eax,%eax + testq $15,%rdx + jnz L$cbc_abort + testq $15,%rcx + jnz L$cbc_abort + leaq L$padlock_saved_context(%rip),%rax + pushf + cld + call _padlock_verify_ctx + leaq 16(%rdx),%rdx + xorl %eax,%eax + xorl %ebx,%ebx + testl $32,(%rdx) + jnz L$cbc_aligned + testq $0x0f,%rdi + setz %al + testq $0x0f,%rsi + setz %bl + testl %ebx,%eax + jnz L$cbc_aligned + negq %rax + movq $512,%rbx + notq %rax + leaq (%rsp),%rbp + cmpq %rbx,%rcx + cmovcq %rcx,%rbx + andq %rbx,%rax + movq %rcx,%rbx + negq %rax + andq $512-1,%rbx + leaq (%rax,%rbp,1),%rsp + movq $512,%rax + cmovzq %rax,%rbx + cmpq %rbx,%rcx + ja L$cbc_loop + movq %rsi,%rax + cmpq %rsp,%rbp + cmoveq %rdi,%rax + addq %rcx,%rax + negq %rax + andq $0xfff,%rax + cmpq $64,%rax + movq $-64,%rax + cmovaeq %rbx,%rax + andq %rax,%rbx + jz L$cbc_unaligned_tail + jmp L$cbc_loop +.p2align 4 +L$cbc_loop: + cmpq %rcx,%rbx + cmovaq %rcx,%rbx + movq %rdi,%r8 + movq %rsi,%r9 + movq %rcx,%r10 + movq %rbx,%rcx + movq %rbx,%r11 + testq $0x0f,%rdi + cmovnzq %rsp,%rdi + testq $0x0f,%rsi + jz L$cbc_inp_aligned + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi + movq %rbx,%rcx + movq %rdi,%rsi +L$cbc_inp_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,208 + movdqa (%rax),%xmm0 + movdqa %xmm0,-16(%rdx) + movq %r8,%rdi + movq %r11,%rbx + testq $0x0f,%rdi + jz L$cbc_out_aligned + movq %rbx,%rcx + leaq (%rsp),%rsi + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi +L$cbc_out_aligned: + movq %r9,%rsi + movq %r10,%rcx + addq %rbx,%rdi + addq %rbx,%rsi + subq %rbx,%rcx + movq $512,%rbx + jz L$cbc_break + cmpq %rbx,%rcx + jae L$cbc_loop +L$cbc_unaligned_tail: + xorl %eax,%eax + cmpq %rsp,%rbp + cmoveq %rcx,%rax + movq %rdi,%r8 + movq %rcx,%rbx + subq %rax,%rsp + shrq $3,%rcx + leaq (%rsp),%rdi +.byte 0xf3,0x48,0xa5 + movq %rsp,%rsi + movq %r8,%rdi + movq %rbx,%rcx + jmp L$cbc_loop +.p2align 4 +L$cbc_break: + cmpq %rbp,%rsp + je L$cbc_done + + pxor %xmm0,%xmm0 + leaq (%rsp),%rax +L$cbc_bzero: + movaps %xmm0,(%rax) + leaq 16(%rax),%rax + cmpq %rax,%rbp + ja L$cbc_bzero + +L$cbc_done: + leaq (%rbp),%rsp + jmp L$cbc_exit + +.p2align 4 +L$cbc_aligned: + leaq (%rsi,%rcx,1),%rbp + negq %rbp + andq $0xfff,%rbp + xorl %eax,%eax + cmpq $64,%rbp + movq $64-1,%rbp + cmovaeq %rax,%rbp + andq %rcx,%rbp + subq %rbp,%rcx + jz L$cbc_aligned_tail + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,208 + movdqa (%rax),%xmm0 + movdqa %xmm0,-16(%rdx) + testq %rbp,%rbp + jz L$cbc_exit + +L$cbc_aligned_tail: + movq %rdi,%r8 + movq %rbp,%rbx + movq %rbp,%rcx + leaq (%rsp),%rbp + subq %rcx,%rsp + shrq $3,%rcx + leaq (%rsp),%rdi +.byte 0xf3,0x48,0xa5 + leaq (%r8),%rdi + leaq (%rsp),%rsi + movq %rbx,%rcx + jmp L$cbc_loop +L$cbc_exit: + movl $1,%eax + leaq 8(%rsp),%rsp +L$cbc_abort: + popq %rbx + popq %rbp + .byte 0xf3,0xc3 + +.globl _padlock_cfb_encrypt + +.p2align 4 +_padlock_cfb_encrypt: + pushq %rbp + pushq %rbx + + xorl %eax,%eax + testq $15,%rdx + jnz L$cfb_abort + testq $15,%rcx + jnz L$cfb_abort + leaq L$padlock_saved_context(%rip),%rax + pushf + cld + call _padlock_verify_ctx + leaq 16(%rdx),%rdx + xorl %eax,%eax + xorl %ebx,%ebx + testl $32,(%rdx) + jnz L$cfb_aligned + testq $0x0f,%rdi + setz %al + testq $0x0f,%rsi + setz %bl + testl %ebx,%eax + jnz L$cfb_aligned + negq %rax + movq $512,%rbx + notq %rax + leaq (%rsp),%rbp + cmpq %rbx,%rcx + cmovcq %rcx,%rbx + andq %rbx,%rax + movq %rcx,%rbx + negq %rax + andq $512-1,%rbx + leaq (%rax,%rbp,1),%rsp + movq $512,%rax + cmovzq %rax,%rbx + jmp L$cfb_loop +.p2align 4 +L$cfb_loop: + cmpq %rcx,%rbx + cmovaq %rcx,%rbx + movq %rdi,%r8 + movq %rsi,%r9 + movq %rcx,%r10 + movq %rbx,%rcx + movq %rbx,%r11 + testq $0x0f,%rdi + cmovnzq %rsp,%rdi + testq $0x0f,%rsi + jz L$cfb_inp_aligned + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi + movq %rbx,%rcx + movq %rdi,%rsi +L$cfb_inp_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,224 + movdqa (%rax),%xmm0 + movdqa %xmm0,-16(%rdx) + movq %r8,%rdi + movq %r11,%rbx + testq $0x0f,%rdi + jz L$cfb_out_aligned + movq %rbx,%rcx + leaq (%rsp),%rsi + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi +L$cfb_out_aligned: + movq %r9,%rsi + movq %r10,%rcx + addq %rbx,%rdi + addq %rbx,%rsi + subq %rbx,%rcx + movq $512,%rbx + jnz L$cfb_loop + cmpq %rbp,%rsp + je L$cfb_done + + pxor %xmm0,%xmm0 + leaq (%rsp),%rax +L$cfb_bzero: + movaps %xmm0,(%rax) + leaq 16(%rax),%rax + cmpq %rax,%rbp + ja L$cfb_bzero + +L$cfb_done: + leaq (%rbp),%rsp + jmp L$cfb_exit + +.p2align 4 +L$cfb_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,224 + movdqa (%rax),%xmm0 + movdqa %xmm0,-16(%rdx) +L$cfb_exit: + movl $1,%eax + leaq 8(%rsp),%rsp +L$cfb_abort: + popq %rbx + popq %rbp + .byte 0xf3,0xc3 + +.globl _padlock_ofb_encrypt + +.p2align 4 +_padlock_ofb_encrypt: + pushq %rbp + pushq %rbx + + xorl %eax,%eax + testq $15,%rdx + jnz L$ofb_abort + testq $15,%rcx + jnz L$ofb_abort + leaq L$padlock_saved_context(%rip),%rax + pushf + cld + call _padlock_verify_ctx + leaq 16(%rdx),%rdx + xorl %eax,%eax + xorl %ebx,%ebx + testl $32,(%rdx) + jnz L$ofb_aligned + testq $0x0f,%rdi + setz %al + testq $0x0f,%rsi + setz %bl + testl %ebx,%eax + jnz L$ofb_aligned + negq %rax + movq $512,%rbx + notq %rax + leaq (%rsp),%rbp + cmpq %rbx,%rcx + cmovcq %rcx,%rbx + andq %rbx,%rax + movq %rcx,%rbx + negq %rax + andq $512-1,%rbx + leaq (%rax,%rbp,1),%rsp + movq $512,%rax + cmovzq %rax,%rbx + jmp L$ofb_loop +.p2align 4 +L$ofb_loop: + cmpq %rcx,%rbx + cmovaq %rcx,%rbx + movq %rdi,%r8 + movq %rsi,%r9 + movq %rcx,%r10 + movq %rbx,%rcx + movq %rbx,%r11 + testq $0x0f,%rdi + cmovnzq %rsp,%rdi + testq $0x0f,%rsi + jz L$ofb_inp_aligned + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi + movq %rbx,%rcx + movq %rdi,%rsi +L$ofb_inp_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,232 + movdqa (%rax),%xmm0 + movdqa %xmm0,-16(%rdx) + movq %r8,%rdi + movq %r11,%rbx + testq $0x0f,%rdi + jz L$ofb_out_aligned + movq %rbx,%rcx + leaq (%rsp),%rsi + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi +L$ofb_out_aligned: + movq %r9,%rsi + movq %r10,%rcx + addq %rbx,%rdi + addq %rbx,%rsi + subq %rbx,%rcx + movq $512,%rbx + jnz L$ofb_loop + cmpq %rbp,%rsp + je L$ofb_done + + pxor %xmm0,%xmm0 + leaq (%rsp),%rax +L$ofb_bzero: + movaps %xmm0,(%rax) + leaq 16(%rax),%rax + cmpq %rax,%rbp + ja L$ofb_bzero + +L$ofb_done: + leaq (%rbp),%rsp + jmp L$ofb_exit + +.p2align 4 +L$ofb_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,232 + movdqa (%rax),%xmm0 + movdqa %xmm0,-16(%rdx) +L$ofb_exit: + movl $1,%eax + leaq 8(%rsp),%rsp +L$ofb_abort: + popq %rbx + popq %rbp + .byte 0xf3,0xc3 + +.globl _padlock_ctr32_encrypt + +.p2align 4 +_padlock_ctr32_encrypt: + pushq %rbp + pushq %rbx + + xorl %eax,%eax + testq $15,%rdx + jnz L$ctr32_abort + testq $15,%rcx + jnz L$ctr32_abort + leaq L$padlock_saved_context(%rip),%rax + pushf + cld + call _padlock_verify_ctx + leaq 16(%rdx),%rdx + xorl %eax,%eax + xorl %ebx,%ebx + testl $32,(%rdx) + jnz L$ctr32_aligned + testq $0x0f,%rdi + setz %al + testq $0x0f,%rsi + setz %bl + testl %ebx,%eax + jnz L$ctr32_aligned + negq %rax + movq $512,%rbx + notq %rax + leaq (%rsp),%rbp + cmpq %rbx,%rcx + cmovcq %rcx,%rbx + andq %rbx,%rax + movq %rcx,%rbx + negq %rax + andq $512-1,%rbx + leaq (%rax,%rbp,1),%rsp + movq $512,%rax + cmovzq %rax,%rbx +L$ctr32_reenter: + movl -4(%rdx),%eax + bswapl %eax + negl %eax + andl $31,%eax + movq $512,%rbx + shll $4,%eax + cmovzq %rbx,%rax + cmpq %rax,%rcx + cmovaq %rax,%rbx + cmovbeq %rcx,%rbx + cmpq %rbx,%rcx + ja L$ctr32_loop + movq %rsi,%rax + cmpq %rsp,%rbp + cmoveq %rdi,%rax + addq %rcx,%rax + negq %rax + andq $0xfff,%rax + cmpq $32,%rax + movq $-32,%rax + cmovaeq %rbx,%rax + andq %rax,%rbx + jz L$ctr32_unaligned_tail + jmp L$ctr32_loop +.p2align 4 +L$ctr32_loop: + cmpq %rcx,%rbx + cmovaq %rcx,%rbx + movq %rdi,%r8 + movq %rsi,%r9 + movq %rcx,%r10 + movq %rbx,%rcx + movq %rbx,%r11 + testq $0x0f,%rdi + cmovnzq %rsp,%rdi + testq $0x0f,%rsi + jz L$ctr32_inp_aligned + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi + movq %rbx,%rcx + movq %rdi,%rsi +L$ctr32_inp_aligned: + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,216 + movl -4(%rdx),%eax + testl $0xffff0000,%eax + jnz L$ctr32_no_carry + bswapl %eax + addl $0x10000,%eax + bswapl %eax + movl %eax,-4(%rdx) +L$ctr32_no_carry: + movq %r8,%rdi + movq %r11,%rbx + testq $0x0f,%rdi + jz L$ctr32_out_aligned + movq %rbx,%rcx + leaq (%rsp),%rsi + shrq $3,%rcx +.byte 0xf3,0x48,0xa5 + subq %rbx,%rdi +L$ctr32_out_aligned: + movq %r9,%rsi + movq %r10,%rcx + addq %rbx,%rdi + addq %rbx,%rsi + subq %rbx,%rcx + movq $512,%rbx + jz L$ctr32_break + cmpq %rbx,%rcx + jae L$ctr32_loop + movq %rcx,%rbx + movq %rsi,%rax + cmpq %rsp,%rbp + cmoveq %rdi,%rax + addq %rcx,%rax + negq %rax + andq $0xfff,%rax + cmpq $32,%rax + movq $-32,%rax + cmovaeq %rbx,%rax + andq %rax,%rbx + jnz L$ctr32_loop +L$ctr32_unaligned_tail: + xorl %eax,%eax + cmpq %rsp,%rbp + cmoveq %rcx,%rax + movq %rdi,%r8 + movq %rcx,%rbx + subq %rax,%rsp + shrq $3,%rcx + leaq (%rsp),%rdi +.byte 0xf3,0x48,0xa5 + movq %rsp,%rsi + movq %r8,%rdi + movq %rbx,%rcx + jmp L$ctr32_loop +.p2align 4 +L$ctr32_break: + cmpq %rbp,%rsp + je L$ctr32_done + + pxor %xmm0,%xmm0 + leaq (%rsp),%rax +L$ctr32_bzero: + movaps %xmm0,(%rax) + leaq 16(%rax),%rax + cmpq %rax,%rbp + ja L$ctr32_bzero + +L$ctr32_done: + leaq (%rbp),%rsp + jmp L$ctr32_exit + +.p2align 4 +L$ctr32_aligned: + movl -4(%rdx),%eax + bswapl %eax + negl %eax + andl $0xffff,%eax + movq $1048576,%rbx + shll $4,%eax + cmovzq %rbx,%rax + cmpq %rax,%rcx + cmovaq %rax,%rbx + cmovbeq %rcx,%rbx + jbe L$ctr32_aligned_skip + +L$ctr32_aligned_loop: + movq %rcx,%r10 + movq %rbx,%rcx + movq %rbx,%r11 + + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,216 + + movl -4(%rdx),%eax + bswapl %eax + addl $0x10000,%eax + bswapl %eax + movl %eax,-4(%rdx) + + movq %r10,%rcx + subq %r11,%rcx + movq $1048576,%rbx + jz L$ctr32_exit + cmpq %rbx,%rcx + jae L$ctr32_aligned_loop + +L$ctr32_aligned_skip: + leaq (%rsi,%rcx,1),%rbp + negq %rbp + andq $0xfff,%rbp + xorl %eax,%eax + cmpq $32,%rbp + movq $32-1,%rbp + cmovaeq %rax,%rbp + andq %rcx,%rbp + subq %rbp,%rcx + jz L$ctr32_aligned_tail + leaq -16(%rdx),%rax + leaq 16(%rdx),%rbx + shrq $4,%rcx +.byte 0xf3,0x0f,0xa7,216 + testq %rbp,%rbp + jz L$ctr32_exit + +L$ctr32_aligned_tail: + movq %rdi,%r8 + movq %rbp,%rbx + movq %rbp,%rcx + leaq (%rsp),%rbp + subq %rcx,%rsp + shrq $3,%rcx + leaq (%rsp),%rdi +.byte 0xf3,0x48,0xa5 + leaq (%r8),%rdi + leaq (%rsp),%rsi + movq %rbx,%rcx + jmp L$ctr32_loop +L$ctr32_exit: + movl $1,%eax + leaq 8(%rsp),%rsp +L$ctr32_abort: + popq %rbx + popq %rbp + .byte 0xf3,0xc3 + +.byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,95,54,52,32,109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.p2align 4 +.data +.p2align 3 +L$padlock_saved_context: +.quad 0 diff --git a/vere/ext/openssl/gen/macos-x86_64/include/crypto/bn_conf.h b/vere/ext/openssl/gen/macos-x86_64/include/crypto/bn_conf.h new file mode 100644 index 0000000..5312ef5 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/include/crypto/bn_conf.h @@ -0,0 +1,28 @@ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/bn_conf.h.in */ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_BN_CONF_H +# define OSSL_CRYPTO_BN_CONF_H + +/* + * The contents of this file are not used in the UEFI build, as + * both 32-bit and 64-bit builds are supported from a single run + * of the Configure script. + */ + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#define SIXTY_FOUR_BIT_LONG +#undef SIXTY_FOUR_BIT +#undef THIRTY_TWO_BIT + +#endif diff --git a/vere/ext/openssl/gen/macos-x86_64/include/crypto/buildinf.h b/vere/ext/openssl/gen/macos-x86_64/include/crypto/buildinf.h new file mode 100644 index 0000000..a2e410e --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/include/crypto/buildinf.h @@ -0,0 +1,44 @@ +/* + * WARNING: do not edit! + * Generated by util/mkbuildinf.pl + * + * Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define PLATFORM "platform: darwin64-x86_64-cc" +#define DATE "built on: Thu Sep 19 13:34:22 2024 UTC" + +/* + * Generate compiler_flags as an array of individual characters. This is a + * workaround for the situation where CFLAGS gets too long for a C90 string + * literal + */ +static const char compiler_flags[] = { + 'c','o','m','p','i','l','e','r',':',' ','c','c',' ','-','f','P', + 'I','C',' ','-','a','r','c','h',' ','x','8','6','_','6','4',' ', + '-','O','3',' ','-','W','a','l','l',' ','-','D','L','_','E','N', + 'D','I','A','N',' ','-','D','O','P','E','N','S','S','L','_','P', + 'I','C',' ','-','D','O','P','E','N','S','S','L','_','C','P','U', + 'I','D','_','O','B','J',' ','-','D','O','P','E','N','S','S','L', + '_','I','A','3','2','_','S','S','E','2',' ','-','D','O','P','E', + 'N','S','S','L','_','B','N','_','A','S','M','_','M','O','N','T', + ' ','-','D','O','P','E','N','S','S','L','_','B','N','_','A','S', + 'M','_','M','O','N','T','5',' ','-','D','O','P','E','N','S','S', + 'L','_','B','N','_','A','S','M','_','G','F','2','m',' ','-','D', + 'S','H','A','1','_','A','S','M',' ','-','D','S','H','A','2','5', + '6','_','A','S','M',' ','-','D','S','H','A','5','1','2','_','A', + 'S','M',' ','-','D','K','E','C','C','A','K','1','6','0','0','_', + 'A','S','M',' ','-','D','R','C','4','_','A','S','M',' ','-','D', + 'M','D','5','_','A','S','M',' ','-','D','A','E','S','N','I','_', + 'A','S','M',' ','-','D','V','P','A','E','S','_','A','S','M',' ', + '-','D','G','H','A','S','H','_','A','S','M',' ','-','D','E','C', + 'P','_','N','I','S','T','Z','2','5','6','_','A','S','M',' ','-', + 'D','X','2','5','5','1','9','_','A','S','M',' ','-','D','P','O', + 'L','Y','1','3','0','5','_','A','S','M',' ','-','D','_','R','E', + 'E','N','T','R','A','N','T',' ','-','D','N','D','E','B','U','G','\0' +}; diff --git a/vere/ext/openssl/gen/macos-x86_64/include/crypto/dso_conf.h b/vere/ext/openssl/gen/macos-x86_64/include/crypto/dso_conf.h new file mode 100644 index 0000000..e2d05cd --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/include/crypto/dso_conf.h @@ -0,0 +1,17 @@ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/dso_conf.h.in */ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_DSO_CONF_H +# define OSSL_CRYPTO_DSO_CONF_H +# define DSO_DLFCN +# define HAVE_DLFCN_H +# define DSO_EXTENSION ".dylib" +#endif diff --git a/vere/ext/openssl/gen/macos-x86_64/include/openssl/opensslconf.h b/vere/ext/openssl/gen/macos-x86_64/include/openssl/opensslconf.h new file mode 100644 index 0000000..7530b04 --- /dev/null +++ b/vere/ext/openssl/gen/macos-x86_64/include/openssl/opensslconf.h @@ -0,0 +1,203 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_SYS_MACOSX +# define OPENSSL_SYS_MACOSX 1 +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +#endif +#ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +#endif +#ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +#endif +#ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#ifndef OPENSSL_FILE +# ifdef OPENSSL_NO_FILENAMES +# define OPENSSL_FILE "" +# define OPENSSL_LINE 0 +# else +# define OPENSSL_FILE __FILE__ +# define OPENSSL_LINE __LINE__ +# endif +#endif + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# define SIXTY_FOUR_BIT_LONG +# undef SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#define RC4_INT unsigned int + +#ifdef __cplusplus +} +#endif diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-mb-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-mb-x86_64.asm new file mode 100644 index 0000000..9891df3 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-mb-x86_64.asm @@ -0,0 +1,1765 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +EXTERN OPENSSL_ia32cap_P + +global aesni_multi_cbc_encrypt + +ALIGN 32 +aesni_multi_cbc_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_multi_cbc_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + cmp edx,2 + jb NEAR $L$enc_non_avx + mov ecx,DWORD[((OPENSSL_ia32cap_P+4))] + test ecx,268435456 + jnz NEAR _avx_cbc_enc_shortcut + jmp NEAR $L$enc_non_avx +ALIGN 16 +$L$enc_non_avx: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[64+rsp],xmm10 + movaps XMMWORD[80+rsp],xmm11 + movaps XMMWORD[96+rsp],xmm12 + movaps XMMWORD[(-104)+rax],xmm13 + movaps XMMWORD[(-88)+rax],xmm14 + movaps XMMWORD[(-72)+rax],xmm15 + + + + + + + sub rsp,48 + and rsp,-64 + mov QWORD[16+rsp],rax + + +$L$enc4x_body: + movdqu xmm12,XMMWORD[rsi] + lea rsi,[120+rsi] + lea rdi,[80+rdi] + +$L$enc4x_loop_grande: + mov DWORD[24+rsp],edx + xor edx,edx + mov ecx,DWORD[((-64))+rdi] + mov r8,QWORD[((-80))+rdi] + cmp ecx,edx + mov r12,QWORD[((-72))+rdi] + cmovg edx,ecx + test ecx,ecx + movdqu xmm2,XMMWORD[((-56))+rdi] + mov DWORD[32+rsp],ecx + cmovle r8,rsp + mov ecx,DWORD[((-24))+rdi] + mov r9,QWORD[((-40))+rdi] + cmp ecx,edx + mov r13,QWORD[((-32))+rdi] + cmovg edx,ecx + test ecx,ecx + movdqu xmm3,XMMWORD[((-16))+rdi] + mov DWORD[36+rsp],ecx + cmovle r9,rsp + mov ecx,DWORD[16+rdi] + mov r10,QWORD[rdi] + cmp ecx,edx + mov r14,QWORD[8+rdi] + cmovg edx,ecx + test ecx,ecx + movdqu xmm4,XMMWORD[24+rdi] + mov DWORD[40+rsp],ecx + cmovle r10,rsp + mov ecx,DWORD[56+rdi] + mov r11,QWORD[40+rdi] + cmp ecx,edx + mov r15,QWORD[48+rdi] + cmovg edx,ecx + test ecx,ecx + movdqu xmm5,XMMWORD[64+rdi] + mov DWORD[44+rsp],ecx + cmovle r11,rsp + test edx,edx + jz NEAR $L$enc4x_done + + movups xmm1,XMMWORD[((16-120))+rsi] + pxor xmm2,xmm12 + movups xmm0,XMMWORD[((32-120))+rsi] + pxor xmm3,xmm12 + mov eax,DWORD[((240-120))+rsi] + pxor xmm4,xmm12 + movdqu xmm6,XMMWORD[r8] + pxor xmm5,xmm12 + movdqu xmm7,XMMWORD[r9] + pxor xmm2,xmm6 + movdqu xmm8,XMMWORD[r10] + pxor xmm3,xmm7 + movdqu xmm9,XMMWORD[r11] + pxor xmm4,xmm8 + pxor xmm5,xmm9 + movdqa xmm10,XMMWORD[32+rsp] + xor rbx,rbx + jmp NEAR $L$oop_enc4x + +ALIGN 32 +$L$oop_enc4x: + add rbx,16 + lea rbp,[16+rsp] + mov ecx,1 + sub rbp,rbx + +DB 102,15,56,220,209 + prefetcht0 [31+rbx*1+r8] + prefetcht0 [31+rbx*1+r9] +DB 102,15,56,220,217 + prefetcht0 [31+rbx*1+r10] + prefetcht0 [31+rbx*1+r10] +DB 102,15,56,220,225 +DB 102,15,56,220,233 + movups xmm1,XMMWORD[((48-120))+rsi] + cmp ecx,DWORD[32+rsp] +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 + cmovge r8,rbp + cmovg r12,rbp +DB 102,15,56,220,232 + movups xmm0,XMMWORD[((-56))+rsi] + cmp ecx,DWORD[36+rsp] +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 + cmovge r9,rbp + cmovg r13,rbp +DB 102,15,56,220,233 + movups xmm1,XMMWORD[((-40))+rsi] + cmp ecx,DWORD[40+rsp] +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 + cmovge r10,rbp + cmovg r14,rbp +DB 102,15,56,220,232 + movups xmm0,XMMWORD[((-24))+rsi] + cmp ecx,DWORD[44+rsp] +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 + cmovge r11,rbp + cmovg r15,rbp +DB 102,15,56,220,233 + movups xmm1,XMMWORD[((-8))+rsi] + movdqa xmm11,xmm10 +DB 102,15,56,220,208 + prefetcht0 [15+rbx*1+r12] + prefetcht0 [15+rbx*1+r13] +DB 102,15,56,220,216 + prefetcht0 [15+rbx*1+r14] + prefetcht0 [15+rbx*1+r15] +DB 102,15,56,220,224 +DB 102,15,56,220,232 + movups xmm0,XMMWORD[((128-120))+rsi] + pxor xmm12,xmm12 + +DB 102,15,56,220,209 + pcmpgtd xmm11,xmm12 + movdqu xmm12,XMMWORD[((-120))+rsi] +DB 102,15,56,220,217 + paddd xmm10,xmm11 + movdqa XMMWORD[32+rsp],xmm10 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + movups xmm1,XMMWORD[((144-120))+rsi] + + cmp eax,11 + +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 + movups xmm0,XMMWORD[((160-120))+rsi] + + jb NEAR $L$enc4x_tail + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + movups xmm1,XMMWORD[((176-120))+rsi] + +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 + movups xmm0,XMMWORD[((192-120))+rsi] + + je NEAR $L$enc4x_tail + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + movups xmm1,XMMWORD[((208-120))+rsi] + +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 + movups xmm0,XMMWORD[((224-120))+rsi] + jmp NEAR $L$enc4x_tail + +ALIGN 32 +$L$enc4x_tail: +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + movdqu xmm6,XMMWORD[rbx*1+r8] + movdqu xmm1,XMMWORD[((16-120))+rsi] + +DB 102,15,56,221,208 + movdqu xmm7,XMMWORD[rbx*1+r9] + pxor xmm6,xmm12 +DB 102,15,56,221,216 + movdqu xmm8,XMMWORD[rbx*1+r10] + pxor xmm7,xmm12 +DB 102,15,56,221,224 + movdqu xmm9,XMMWORD[rbx*1+r11] + pxor xmm8,xmm12 +DB 102,15,56,221,232 + movdqu xmm0,XMMWORD[((32-120))+rsi] + pxor xmm9,xmm12 + + movups XMMWORD[(-16)+rbx*1+r12],xmm2 + pxor xmm2,xmm6 + movups XMMWORD[(-16)+rbx*1+r13],xmm3 + pxor xmm3,xmm7 + movups XMMWORD[(-16)+rbx*1+r14],xmm4 + pxor xmm4,xmm8 + movups XMMWORD[(-16)+rbx*1+r15],xmm5 + pxor xmm5,xmm9 + + dec edx + jnz NEAR $L$oop_enc4x + + mov rax,QWORD[16+rsp] + + mov edx,DWORD[24+rsp] + + + + + + + + + + + lea rdi,[160+rdi] + dec edx + jnz NEAR $L$enc4x_loop_grande + +$L$enc4x_done: + movaps xmm6,XMMWORD[((-216))+rax] + movaps xmm7,XMMWORD[((-200))+rax] + movaps xmm8,XMMWORD[((-184))+rax] + movaps xmm9,XMMWORD[((-168))+rax] + movaps xmm10,XMMWORD[((-152))+rax] + movaps xmm11,XMMWORD[((-136))+rax] + movaps xmm12,XMMWORD[((-120))+rax] + + + + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$enc4x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_multi_cbc_encrypt: + +global aesni_multi_cbc_decrypt + +ALIGN 32 +aesni_multi_cbc_decrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_multi_cbc_decrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + cmp edx,2 + jb NEAR $L$dec_non_avx + mov ecx,DWORD[((OPENSSL_ia32cap_P+4))] + test ecx,268435456 + jnz NEAR _avx_cbc_dec_shortcut + jmp NEAR $L$dec_non_avx +ALIGN 16 +$L$dec_non_avx: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[64+rsp],xmm10 + movaps XMMWORD[80+rsp],xmm11 + movaps XMMWORD[96+rsp],xmm12 + movaps XMMWORD[(-104)+rax],xmm13 + movaps XMMWORD[(-88)+rax],xmm14 + movaps XMMWORD[(-72)+rax],xmm15 + + + + + + + sub rsp,48 + and rsp,-64 + mov QWORD[16+rsp],rax + + +$L$dec4x_body: + movdqu xmm12,XMMWORD[rsi] + lea rsi,[120+rsi] + lea rdi,[80+rdi] + +$L$dec4x_loop_grande: + mov DWORD[24+rsp],edx + xor edx,edx + mov ecx,DWORD[((-64))+rdi] + mov r8,QWORD[((-80))+rdi] + cmp ecx,edx + mov r12,QWORD[((-72))+rdi] + cmovg edx,ecx + test ecx,ecx + movdqu xmm6,XMMWORD[((-56))+rdi] + mov DWORD[32+rsp],ecx + cmovle r8,rsp + mov ecx,DWORD[((-24))+rdi] + mov r9,QWORD[((-40))+rdi] + cmp ecx,edx + mov r13,QWORD[((-32))+rdi] + cmovg edx,ecx + test ecx,ecx + movdqu xmm7,XMMWORD[((-16))+rdi] + mov DWORD[36+rsp],ecx + cmovle r9,rsp + mov ecx,DWORD[16+rdi] + mov r10,QWORD[rdi] + cmp ecx,edx + mov r14,QWORD[8+rdi] + cmovg edx,ecx + test ecx,ecx + movdqu xmm8,XMMWORD[24+rdi] + mov DWORD[40+rsp],ecx + cmovle r10,rsp + mov ecx,DWORD[56+rdi] + mov r11,QWORD[40+rdi] + cmp ecx,edx + mov r15,QWORD[48+rdi] + cmovg edx,ecx + test ecx,ecx + movdqu xmm9,XMMWORD[64+rdi] + mov DWORD[44+rsp],ecx + cmovle r11,rsp + test edx,edx + jz NEAR $L$dec4x_done + + movups xmm1,XMMWORD[((16-120))+rsi] + movups xmm0,XMMWORD[((32-120))+rsi] + mov eax,DWORD[((240-120))+rsi] + movdqu xmm2,XMMWORD[r8] + movdqu xmm3,XMMWORD[r9] + pxor xmm2,xmm12 + movdqu xmm4,XMMWORD[r10] + pxor xmm3,xmm12 + movdqu xmm5,XMMWORD[r11] + pxor xmm4,xmm12 + pxor xmm5,xmm12 + movdqa xmm10,XMMWORD[32+rsp] + xor rbx,rbx + jmp NEAR $L$oop_dec4x + +ALIGN 32 +$L$oop_dec4x: + add rbx,16 + lea rbp,[16+rsp] + mov ecx,1 + sub rbp,rbx + +DB 102,15,56,222,209 + prefetcht0 [31+rbx*1+r8] + prefetcht0 [31+rbx*1+r9] +DB 102,15,56,222,217 + prefetcht0 [31+rbx*1+r10] + prefetcht0 [31+rbx*1+r11] +DB 102,15,56,222,225 +DB 102,15,56,222,233 + movups xmm1,XMMWORD[((48-120))+rsi] + cmp ecx,DWORD[32+rsp] +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 + cmovge r8,rbp + cmovg r12,rbp +DB 102,15,56,222,232 + movups xmm0,XMMWORD[((-56))+rsi] + cmp ecx,DWORD[36+rsp] +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 + cmovge r9,rbp + cmovg r13,rbp +DB 102,15,56,222,233 + movups xmm1,XMMWORD[((-40))+rsi] + cmp ecx,DWORD[40+rsp] +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 + cmovge r10,rbp + cmovg r14,rbp +DB 102,15,56,222,232 + movups xmm0,XMMWORD[((-24))+rsi] + cmp ecx,DWORD[44+rsp] +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 + cmovge r11,rbp + cmovg r15,rbp +DB 102,15,56,222,233 + movups xmm1,XMMWORD[((-8))+rsi] + movdqa xmm11,xmm10 +DB 102,15,56,222,208 + prefetcht0 [15+rbx*1+r12] + prefetcht0 [15+rbx*1+r13] +DB 102,15,56,222,216 + prefetcht0 [15+rbx*1+r14] + prefetcht0 [15+rbx*1+r15] +DB 102,15,56,222,224 +DB 102,15,56,222,232 + movups xmm0,XMMWORD[((128-120))+rsi] + pxor xmm12,xmm12 + +DB 102,15,56,222,209 + pcmpgtd xmm11,xmm12 + movdqu xmm12,XMMWORD[((-120))+rsi] +DB 102,15,56,222,217 + paddd xmm10,xmm11 + movdqa XMMWORD[32+rsp],xmm10 +DB 102,15,56,222,225 +DB 102,15,56,222,233 + movups xmm1,XMMWORD[((144-120))+rsi] + + cmp eax,11 + +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 + movups xmm0,XMMWORD[((160-120))+rsi] + + jb NEAR $L$dec4x_tail + +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 + movups xmm1,XMMWORD[((176-120))+rsi] + +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 + movups xmm0,XMMWORD[((192-120))+rsi] + + je NEAR $L$dec4x_tail + +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 + movups xmm1,XMMWORD[((208-120))+rsi] + +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 + movups xmm0,XMMWORD[((224-120))+rsi] + jmp NEAR $L$dec4x_tail + +ALIGN 32 +$L$dec4x_tail: +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 + pxor xmm6,xmm0 + pxor xmm7,xmm0 +DB 102,15,56,222,233 + movdqu xmm1,XMMWORD[((16-120))+rsi] + pxor xmm8,xmm0 + pxor xmm9,xmm0 + movdqu xmm0,XMMWORD[((32-120))+rsi] + +DB 102,15,56,223,214 +DB 102,15,56,223,223 + movdqu xmm6,XMMWORD[((-16))+rbx*1+r8] + movdqu xmm7,XMMWORD[((-16))+rbx*1+r9] +DB 102,65,15,56,223,224 +DB 102,65,15,56,223,233 + movdqu xmm8,XMMWORD[((-16))+rbx*1+r10] + movdqu xmm9,XMMWORD[((-16))+rbx*1+r11] + + movups XMMWORD[(-16)+rbx*1+r12],xmm2 + movdqu xmm2,XMMWORD[rbx*1+r8] + movups XMMWORD[(-16)+rbx*1+r13],xmm3 + movdqu xmm3,XMMWORD[rbx*1+r9] + pxor xmm2,xmm12 + movups XMMWORD[(-16)+rbx*1+r14],xmm4 + movdqu xmm4,XMMWORD[rbx*1+r10] + pxor xmm3,xmm12 + movups XMMWORD[(-16)+rbx*1+r15],xmm5 + movdqu xmm5,XMMWORD[rbx*1+r11] + pxor xmm4,xmm12 + pxor xmm5,xmm12 + + dec edx + jnz NEAR $L$oop_dec4x + + mov rax,QWORD[16+rsp] + + mov edx,DWORD[24+rsp] + + lea rdi,[160+rdi] + dec edx + jnz NEAR $L$dec4x_loop_grande + +$L$dec4x_done: + movaps xmm6,XMMWORD[((-216))+rax] + movaps xmm7,XMMWORD[((-200))+rax] + movaps xmm8,XMMWORD[((-184))+rax] + movaps xmm9,XMMWORD[((-168))+rax] + movaps xmm10,XMMWORD[((-152))+rax] + movaps xmm11,XMMWORD[((-136))+rax] + movaps xmm12,XMMWORD[((-120))+rax] + + + + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$dec4x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_multi_cbc_decrypt: + +ALIGN 32 +aesni_multi_cbc_encrypt_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_multi_cbc_encrypt_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +_avx_cbc_enc_shortcut: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[64+rsp],xmm10 + movaps XMMWORD[80+rsp],xmm11 + movaps XMMWORD[(-120)+rax],xmm12 + movaps XMMWORD[(-104)+rax],xmm13 + movaps XMMWORD[(-88)+rax],xmm14 + movaps XMMWORD[(-72)+rax],xmm15 + + + + + + + + + sub rsp,192 + and rsp,-128 + mov QWORD[16+rsp],rax + + +$L$enc8x_body: + vzeroupper + vmovdqu xmm15,XMMWORD[rsi] + lea rsi,[120+rsi] + lea rdi,[160+rdi] + shr edx,1 + +$L$enc8x_loop_grande: + + xor edx,edx + mov ecx,DWORD[((-144))+rdi] + mov r8,QWORD[((-160))+rdi] + cmp ecx,edx + mov rbx,QWORD[((-152))+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm2,XMMWORD[((-136))+rdi] + mov DWORD[32+rsp],ecx + cmovle r8,rsp + sub rbx,r8 + mov QWORD[64+rsp],rbx + mov ecx,DWORD[((-104))+rdi] + mov r9,QWORD[((-120))+rdi] + cmp ecx,edx + mov rbp,QWORD[((-112))+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm3,XMMWORD[((-96))+rdi] + mov DWORD[36+rsp],ecx + cmovle r9,rsp + sub rbp,r9 + mov QWORD[72+rsp],rbp + mov ecx,DWORD[((-64))+rdi] + mov r10,QWORD[((-80))+rdi] + cmp ecx,edx + mov rbp,QWORD[((-72))+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm4,XMMWORD[((-56))+rdi] + mov DWORD[40+rsp],ecx + cmovle r10,rsp + sub rbp,r10 + mov QWORD[80+rsp],rbp + mov ecx,DWORD[((-24))+rdi] + mov r11,QWORD[((-40))+rdi] + cmp ecx,edx + mov rbp,QWORD[((-32))+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm5,XMMWORD[((-16))+rdi] + mov DWORD[44+rsp],ecx + cmovle r11,rsp + sub rbp,r11 + mov QWORD[88+rsp],rbp + mov ecx,DWORD[16+rdi] + mov r12,QWORD[rdi] + cmp ecx,edx + mov rbp,QWORD[8+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm6,XMMWORD[24+rdi] + mov DWORD[48+rsp],ecx + cmovle r12,rsp + sub rbp,r12 + mov QWORD[96+rsp],rbp + mov ecx,DWORD[56+rdi] + mov r13,QWORD[40+rdi] + cmp ecx,edx + mov rbp,QWORD[48+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm7,XMMWORD[64+rdi] + mov DWORD[52+rsp],ecx + cmovle r13,rsp + sub rbp,r13 + mov QWORD[104+rsp],rbp + mov ecx,DWORD[96+rdi] + mov r14,QWORD[80+rdi] + cmp ecx,edx + mov rbp,QWORD[88+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm8,XMMWORD[104+rdi] + mov DWORD[56+rsp],ecx + cmovle r14,rsp + sub rbp,r14 + mov QWORD[112+rsp],rbp + mov ecx,DWORD[136+rdi] + mov r15,QWORD[120+rdi] + cmp ecx,edx + mov rbp,QWORD[128+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm9,XMMWORD[144+rdi] + mov DWORD[60+rsp],ecx + cmovle r15,rsp + sub rbp,r15 + mov QWORD[120+rsp],rbp + test edx,edx + jz NEAR $L$enc8x_done + + vmovups xmm1,XMMWORD[((16-120))+rsi] + vmovups xmm0,XMMWORD[((32-120))+rsi] + mov eax,DWORD[((240-120))+rsi] + + vpxor xmm10,xmm15,XMMWORD[r8] + lea rbp,[128+rsp] + vpxor xmm11,xmm15,XMMWORD[r9] + vpxor xmm12,xmm15,XMMWORD[r10] + vpxor xmm13,xmm15,XMMWORD[r11] + vpxor xmm2,xmm2,xmm10 + vpxor xmm10,xmm15,XMMWORD[r12] + vpxor xmm3,xmm3,xmm11 + vpxor xmm11,xmm15,XMMWORD[r13] + vpxor xmm4,xmm4,xmm12 + vpxor xmm12,xmm15,XMMWORD[r14] + vpxor xmm5,xmm5,xmm13 + vpxor xmm13,xmm15,XMMWORD[r15] + vpxor xmm6,xmm6,xmm10 + mov ecx,1 + vpxor xmm7,xmm7,xmm11 + vpxor xmm8,xmm8,xmm12 + vpxor xmm9,xmm9,xmm13 + jmp NEAR $L$oop_enc8x + +ALIGN 32 +$L$oop_enc8x: + vaesenc xmm2,xmm2,xmm1 + cmp ecx,DWORD[((32+0))+rsp] + vaesenc xmm3,xmm3,xmm1 + prefetcht0 [31+r8] + vaesenc xmm4,xmm4,xmm1 + vaesenc xmm5,xmm5,xmm1 + lea rbx,[rbx*1+r8] + cmovge r8,rsp + vaesenc xmm6,xmm6,xmm1 + cmovg rbx,rsp + vaesenc xmm7,xmm7,xmm1 + sub rbx,r8 + vaesenc xmm8,xmm8,xmm1 + vpxor xmm10,xmm15,XMMWORD[16+r8] + mov QWORD[((64+0))+rsp],rbx + vaesenc xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[((-72))+rsi] + lea r8,[16+rbx*1+r8] + vmovdqu XMMWORD[rbp],xmm10 + vaesenc xmm2,xmm2,xmm0 + cmp ecx,DWORD[((32+4))+rsp] + mov rbx,QWORD[((64+8))+rsp] + vaesenc xmm3,xmm3,xmm0 + prefetcht0 [31+r9] + vaesenc xmm4,xmm4,xmm0 + vaesenc xmm5,xmm5,xmm0 + lea rbx,[rbx*1+r9] + cmovge r9,rsp + vaesenc xmm6,xmm6,xmm0 + cmovg rbx,rsp + vaesenc xmm7,xmm7,xmm0 + sub rbx,r9 + vaesenc xmm8,xmm8,xmm0 + vpxor xmm11,xmm15,XMMWORD[16+r9] + mov QWORD[((64+8))+rsp],rbx + vaesenc xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[((-56))+rsi] + lea r9,[16+rbx*1+r9] + vmovdqu XMMWORD[16+rbp],xmm11 + vaesenc xmm2,xmm2,xmm1 + cmp ecx,DWORD[((32+8))+rsp] + mov rbx,QWORD[((64+16))+rsp] + vaesenc xmm3,xmm3,xmm1 + prefetcht0 [31+r10] + vaesenc xmm4,xmm4,xmm1 + prefetcht0 [15+r8] + vaesenc xmm5,xmm5,xmm1 + lea rbx,[rbx*1+r10] + cmovge r10,rsp + vaesenc xmm6,xmm6,xmm1 + cmovg rbx,rsp + vaesenc xmm7,xmm7,xmm1 + sub rbx,r10 + vaesenc xmm8,xmm8,xmm1 + vpxor xmm12,xmm15,XMMWORD[16+r10] + mov QWORD[((64+16))+rsp],rbx + vaesenc xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[((-40))+rsi] + lea r10,[16+rbx*1+r10] + vmovdqu XMMWORD[32+rbp],xmm12 + vaesenc xmm2,xmm2,xmm0 + cmp ecx,DWORD[((32+12))+rsp] + mov rbx,QWORD[((64+24))+rsp] + vaesenc xmm3,xmm3,xmm0 + prefetcht0 [31+r11] + vaesenc xmm4,xmm4,xmm0 + prefetcht0 [15+r9] + vaesenc xmm5,xmm5,xmm0 + lea rbx,[rbx*1+r11] + cmovge r11,rsp + vaesenc xmm6,xmm6,xmm0 + cmovg rbx,rsp + vaesenc xmm7,xmm7,xmm0 + sub rbx,r11 + vaesenc xmm8,xmm8,xmm0 + vpxor xmm13,xmm15,XMMWORD[16+r11] + mov QWORD[((64+24))+rsp],rbx + vaesenc xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[((-24))+rsi] + lea r11,[16+rbx*1+r11] + vmovdqu XMMWORD[48+rbp],xmm13 + vaesenc xmm2,xmm2,xmm1 + cmp ecx,DWORD[((32+16))+rsp] + mov rbx,QWORD[((64+32))+rsp] + vaesenc xmm3,xmm3,xmm1 + prefetcht0 [31+r12] + vaesenc xmm4,xmm4,xmm1 + prefetcht0 [15+r10] + vaesenc xmm5,xmm5,xmm1 + lea rbx,[rbx*1+r12] + cmovge r12,rsp + vaesenc xmm6,xmm6,xmm1 + cmovg rbx,rsp + vaesenc xmm7,xmm7,xmm1 + sub rbx,r12 + vaesenc xmm8,xmm8,xmm1 + vpxor xmm10,xmm15,XMMWORD[16+r12] + mov QWORD[((64+32))+rsp],rbx + vaesenc xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[((-8))+rsi] + lea r12,[16+rbx*1+r12] + vaesenc xmm2,xmm2,xmm0 + cmp ecx,DWORD[((32+20))+rsp] + mov rbx,QWORD[((64+40))+rsp] + vaesenc xmm3,xmm3,xmm0 + prefetcht0 [31+r13] + vaesenc xmm4,xmm4,xmm0 + prefetcht0 [15+r11] + vaesenc xmm5,xmm5,xmm0 + lea rbx,[r13*1+rbx] + cmovge r13,rsp + vaesenc xmm6,xmm6,xmm0 + cmovg rbx,rsp + vaesenc xmm7,xmm7,xmm0 + sub rbx,r13 + vaesenc xmm8,xmm8,xmm0 + vpxor xmm11,xmm15,XMMWORD[16+r13] + mov QWORD[((64+40))+rsp],rbx + vaesenc xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[8+rsi] + lea r13,[16+rbx*1+r13] + vaesenc xmm2,xmm2,xmm1 + cmp ecx,DWORD[((32+24))+rsp] + mov rbx,QWORD[((64+48))+rsp] + vaesenc xmm3,xmm3,xmm1 + prefetcht0 [31+r14] + vaesenc xmm4,xmm4,xmm1 + prefetcht0 [15+r12] + vaesenc xmm5,xmm5,xmm1 + lea rbx,[rbx*1+r14] + cmovge r14,rsp + vaesenc xmm6,xmm6,xmm1 + cmovg rbx,rsp + vaesenc xmm7,xmm7,xmm1 + sub rbx,r14 + vaesenc xmm8,xmm8,xmm1 + vpxor xmm12,xmm15,XMMWORD[16+r14] + mov QWORD[((64+48))+rsp],rbx + vaesenc xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[24+rsi] + lea r14,[16+rbx*1+r14] + vaesenc xmm2,xmm2,xmm0 + cmp ecx,DWORD[((32+28))+rsp] + mov rbx,QWORD[((64+56))+rsp] + vaesenc xmm3,xmm3,xmm0 + prefetcht0 [31+r15] + vaesenc xmm4,xmm4,xmm0 + prefetcht0 [15+r13] + vaesenc xmm5,xmm5,xmm0 + lea rbx,[rbx*1+r15] + cmovge r15,rsp + vaesenc xmm6,xmm6,xmm0 + cmovg rbx,rsp + vaesenc xmm7,xmm7,xmm0 + sub rbx,r15 + vaesenc xmm8,xmm8,xmm0 + vpxor xmm13,xmm15,XMMWORD[16+r15] + mov QWORD[((64+56))+rsp],rbx + vaesenc xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[40+rsi] + lea r15,[16+rbx*1+r15] + vmovdqu xmm14,XMMWORD[32+rsp] + prefetcht0 [15+r14] + prefetcht0 [15+r15] + cmp eax,11 + jb NEAR $L$enc8x_tail + + vaesenc xmm2,xmm2,xmm1 + vaesenc xmm3,xmm3,xmm1 + vaesenc xmm4,xmm4,xmm1 + vaesenc xmm5,xmm5,xmm1 + vaesenc xmm6,xmm6,xmm1 + vaesenc xmm7,xmm7,xmm1 + vaesenc xmm8,xmm8,xmm1 + vaesenc xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[((176-120))+rsi] + + vaesenc xmm2,xmm2,xmm0 + vaesenc xmm3,xmm3,xmm0 + vaesenc xmm4,xmm4,xmm0 + vaesenc xmm5,xmm5,xmm0 + vaesenc xmm6,xmm6,xmm0 + vaesenc xmm7,xmm7,xmm0 + vaesenc xmm8,xmm8,xmm0 + vaesenc xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[((192-120))+rsi] + je NEAR $L$enc8x_tail + + vaesenc xmm2,xmm2,xmm1 + vaesenc xmm3,xmm3,xmm1 + vaesenc xmm4,xmm4,xmm1 + vaesenc xmm5,xmm5,xmm1 + vaesenc xmm6,xmm6,xmm1 + vaesenc xmm7,xmm7,xmm1 + vaesenc xmm8,xmm8,xmm1 + vaesenc xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[((208-120))+rsi] + + vaesenc xmm2,xmm2,xmm0 + vaesenc xmm3,xmm3,xmm0 + vaesenc xmm4,xmm4,xmm0 + vaesenc xmm5,xmm5,xmm0 + vaesenc xmm6,xmm6,xmm0 + vaesenc xmm7,xmm7,xmm0 + vaesenc xmm8,xmm8,xmm0 + vaesenc xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[((224-120))+rsi] + +$L$enc8x_tail: + vaesenc xmm2,xmm2,xmm1 + vpxor xmm15,xmm15,xmm15 + vaesenc xmm3,xmm3,xmm1 + vaesenc xmm4,xmm4,xmm1 + vpcmpgtd xmm15,xmm14,xmm15 + vaesenc xmm5,xmm5,xmm1 + vaesenc xmm6,xmm6,xmm1 + vpaddd xmm15,xmm15,xmm14 + vmovdqu xmm14,XMMWORD[48+rsp] + vaesenc xmm7,xmm7,xmm1 + mov rbx,QWORD[64+rsp] + vaesenc xmm8,xmm8,xmm1 + vaesenc xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[((16-120))+rsi] + + vaesenclast xmm2,xmm2,xmm0 + vmovdqa XMMWORD[32+rsp],xmm15 + vpxor xmm15,xmm15,xmm15 + vaesenclast xmm3,xmm3,xmm0 + vaesenclast xmm4,xmm4,xmm0 + vpcmpgtd xmm15,xmm14,xmm15 + vaesenclast xmm5,xmm5,xmm0 + vaesenclast xmm6,xmm6,xmm0 + vpaddd xmm14,xmm14,xmm15 + vmovdqu xmm15,XMMWORD[((-120))+rsi] + vaesenclast xmm7,xmm7,xmm0 + vaesenclast xmm8,xmm8,xmm0 + vmovdqa XMMWORD[48+rsp],xmm14 + vaesenclast xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[((32-120))+rsi] + + vmovups XMMWORD[(-16)+r8],xmm2 + sub r8,rbx + vpxor xmm2,xmm2,XMMWORD[rbp] + vmovups XMMWORD[(-16)+r9],xmm3 + sub r9,QWORD[72+rsp] + vpxor xmm3,xmm3,XMMWORD[16+rbp] + vmovups XMMWORD[(-16)+r10],xmm4 + sub r10,QWORD[80+rsp] + vpxor xmm4,xmm4,XMMWORD[32+rbp] + vmovups XMMWORD[(-16)+r11],xmm5 + sub r11,QWORD[88+rsp] + vpxor xmm5,xmm5,XMMWORD[48+rbp] + vmovups XMMWORD[(-16)+r12],xmm6 + sub r12,QWORD[96+rsp] + vpxor xmm6,xmm6,xmm10 + vmovups XMMWORD[(-16)+r13],xmm7 + sub r13,QWORD[104+rsp] + vpxor xmm7,xmm7,xmm11 + vmovups XMMWORD[(-16)+r14],xmm8 + sub r14,QWORD[112+rsp] + vpxor xmm8,xmm8,xmm12 + vmovups XMMWORD[(-16)+r15],xmm9 + sub r15,QWORD[120+rsp] + vpxor xmm9,xmm9,xmm13 + + dec edx + jnz NEAR $L$oop_enc8x + + mov rax,QWORD[16+rsp] + + + + + + +$L$enc8x_done: + vzeroupper + movaps xmm6,XMMWORD[((-216))+rax] + movaps xmm7,XMMWORD[((-200))+rax] + movaps xmm8,XMMWORD[((-184))+rax] + movaps xmm9,XMMWORD[((-168))+rax] + movaps xmm10,XMMWORD[((-152))+rax] + movaps xmm11,XMMWORD[((-136))+rax] + movaps xmm12,XMMWORD[((-120))+rax] + movaps xmm13,XMMWORD[((-104))+rax] + movaps xmm14,XMMWORD[((-88))+rax] + movaps xmm15,XMMWORD[((-72))+rax] + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$enc8x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_multi_cbc_encrypt_avx: + + +ALIGN 32 +aesni_multi_cbc_decrypt_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_multi_cbc_decrypt_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +_avx_cbc_dec_shortcut: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[64+rsp],xmm10 + movaps XMMWORD[80+rsp],xmm11 + movaps XMMWORD[(-120)+rax],xmm12 + movaps XMMWORD[(-104)+rax],xmm13 + movaps XMMWORD[(-88)+rax],xmm14 + movaps XMMWORD[(-72)+rax],xmm15 + + + + + + + + + + sub rsp,256 + and rsp,-256 + sub rsp,192 + mov QWORD[16+rsp],rax + + +$L$dec8x_body: + vzeroupper + vmovdqu xmm15,XMMWORD[rsi] + lea rsi,[120+rsi] + lea rdi,[160+rdi] + shr edx,1 + +$L$dec8x_loop_grande: + + xor edx,edx + mov ecx,DWORD[((-144))+rdi] + mov r8,QWORD[((-160))+rdi] + cmp ecx,edx + mov rbx,QWORD[((-152))+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm2,XMMWORD[((-136))+rdi] + mov DWORD[32+rsp],ecx + cmovle r8,rsp + sub rbx,r8 + mov QWORD[64+rsp],rbx + vmovdqu XMMWORD[192+rsp],xmm2 + mov ecx,DWORD[((-104))+rdi] + mov r9,QWORD[((-120))+rdi] + cmp ecx,edx + mov rbp,QWORD[((-112))+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm3,XMMWORD[((-96))+rdi] + mov DWORD[36+rsp],ecx + cmovle r9,rsp + sub rbp,r9 + mov QWORD[72+rsp],rbp + vmovdqu XMMWORD[208+rsp],xmm3 + mov ecx,DWORD[((-64))+rdi] + mov r10,QWORD[((-80))+rdi] + cmp ecx,edx + mov rbp,QWORD[((-72))+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm4,XMMWORD[((-56))+rdi] + mov DWORD[40+rsp],ecx + cmovle r10,rsp + sub rbp,r10 + mov QWORD[80+rsp],rbp + vmovdqu XMMWORD[224+rsp],xmm4 + mov ecx,DWORD[((-24))+rdi] + mov r11,QWORD[((-40))+rdi] + cmp ecx,edx + mov rbp,QWORD[((-32))+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm5,XMMWORD[((-16))+rdi] + mov DWORD[44+rsp],ecx + cmovle r11,rsp + sub rbp,r11 + mov QWORD[88+rsp],rbp + vmovdqu XMMWORD[240+rsp],xmm5 + mov ecx,DWORD[16+rdi] + mov r12,QWORD[rdi] + cmp ecx,edx + mov rbp,QWORD[8+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm6,XMMWORD[24+rdi] + mov DWORD[48+rsp],ecx + cmovle r12,rsp + sub rbp,r12 + mov QWORD[96+rsp],rbp + vmovdqu XMMWORD[256+rsp],xmm6 + mov ecx,DWORD[56+rdi] + mov r13,QWORD[40+rdi] + cmp ecx,edx + mov rbp,QWORD[48+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm7,XMMWORD[64+rdi] + mov DWORD[52+rsp],ecx + cmovle r13,rsp + sub rbp,r13 + mov QWORD[104+rsp],rbp + vmovdqu XMMWORD[272+rsp],xmm7 + mov ecx,DWORD[96+rdi] + mov r14,QWORD[80+rdi] + cmp ecx,edx + mov rbp,QWORD[88+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm8,XMMWORD[104+rdi] + mov DWORD[56+rsp],ecx + cmovle r14,rsp + sub rbp,r14 + mov QWORD[112+rsp],rbp + vmovdqu XMMWORD[288+rsp],xmm8 + mov ecx,DWORD[136+rdi] + mov r15,QWORD[120+rdi] + cmp ecx,edx + mov rbp,QWORD[128+rdi] + cmovg edx,ecx + test ecx,ecx + vmovdqu xmm9,XMMWORD[144+rdi] + mov DWORD[60+rsp],ecx + cmovle r15,rsp + sub rbp,r15 + mov QWORD[120+rsp],rbp + vmovdqu XMMWORD[304+rsp],xmm9 + test edx,edx + jz NEAR $L$dec8x_done + + vmovups xmm1,XMMWORD[((16-120))+rsi] + vmovups xmm0,XMMWORD[((32-120))+rsi] + mov eax,DWORD[((240-120))+rsi] + lea rbp,[((192+128))+rsp] + + vmovdqu xmm2,XMMWORD[r8] + vmovdqu xmm3,XMMWORD[r9] + vmovdqu xmm4,XMMWORD[r10] + vmovdqu xmm5,XMMWORD[r11] + vmovdqu xmm6,XMMWORD[r12] + vmovdqu xmm7,XMMWORD[r13] + vmovdqu xmm8,XMMWORD[r14] + vmovdqu xmm9,XMMWORD[r15] + vmovdqu XMMWORD[rbp],xmm2 + vpxor xmm2,xmm2,xmm15 + vmovdqu XMMWORD[16+rbp],xmm3 + vpxor xmm3,xmm3,xmm15 + vmovdqu XMMWORD[32+rbp],xmm4 + vpxor xmm4,xmm4,xmm15 + vmovdqu XMMWORD[48+rbp],xmm5 + vpxor xmm5,xmm5,xmm15 + vmovdqu XMMWORD[64+rbp],xmm6 + vpxor xmm6,xmm6,xmm15 + vmovdqu XMMWORD[80+rbp],xmm7 + vpxor xmm7,xmm7,xmm15 + vmovdqu XMMWORD[96+rbp],xmm8 + vpxor xmm8,xmm8,xmm15 + vmovdqu XMMWORD[112+rbp],xmm9 + vpxor xmm9,xmm9,xmm15 + xor rbp,0x80 + mov ecx,1 + jmp NEAR $L$oop_dec8x + +ALIGN 32 +$L$oop_dec8x: + vaesdec xmm2,xmm2,xmm1 + cmp ecx,DWORD[((32+0))+rsp] + vaesdec xmm3,xmm3,xmm1 + prefetcht0 [31+r8] + vaesdec xmm4,xmm4,xmm1 + vaesdec xmm5,xmm5,xmm1 + lea rbx,[rbx*1+r8] + cmovge r8,rsp + vaesdec xmm6,xmm6,xmm1 + cmovg rbx,rsp + vaesdec xmm7,xmm7,xmm1 + sub rbx,r8 + vaesdec xmm8,xmm8,xmm1 + vmovdqu xmm10,XMMWORD[16+r8] + mov QWORD[((64+0))+rsp],rbx + vaesdec xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[((-72))+rsi] + lea r8,[16+rbx*1+r8] + vmovdqu XMMWORD[128+rsp],xmm10 + vaesdec xmm2,xmm2,xmm0 + cmp ecx,DWORD[((32+4))+rsp] + mov rbx,QWORD[((64+8))+rsp] + vaesdec xmm3,xmm3,xmm0 + prefetcht0 [31+r9] + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + lea rbx,[rbx*1+r9] + cmovge r9,rsp + vaesdec xmm6,xmm6,xmm0 + cmovg rbx,rsp + vaesdec xmm7,xmm7,xmm0 + sub rbx,r9 + vaesdec xmm8,xmm8,xmm0 + vmovdqu xmm11,XMMWORD[16+r9] + mov QWORD[((64+8))+rsp],rbx + vaesdec xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[((-56))+rsi] + lea r9,[16+rbx*1+r9] + vmovdqu XMMWORD[144+rsp],xmm11 + vaesdec xmm2,xmm2,xmm1 + cmp ecx,DWORD[((32+8))+rsp] + mov rbx,QWORD[((64+16))+rsp] + vaesdec xmm3,xmm3,xmm1 + prefetcht0 [31+r10] + vaesdec xmm4,xmm4,xmm1 + prefetcht0 [15+r8] + vaesdec xmm5,xmm5,xmm1 + lea rbx,[rbx*1+r10] + cmovge r10,rsp + vaesdec xmm6,xmm6,xmm1 + cmovg rbx,rsp + vaesdec xmm7,xmm7,xmm1 + sub rbx,r10 + vaesdec xmm8,xmm8,xmm1 + vmovdqu xmm12,XMMWORD[16+r10] + mov QWORD[((64+16))+rsp],rbx + vaesdec xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[((-40))+rsi] + lea r10,[16+rbx*1+r10] + vmovdqu XMMWORD[160+rsp],xmm12 + vaesdec xmm2,xmm2,xmm0 + cmp ecx,DWORD[((32+12))+rsp] + mov rbx,QWORD[((64+24))+rsp] + vaesdec xmm3,xmm3,xmm0 + prefetcht0 [31+r11] + vaesdec xmm4,xmm4,xmm0 + prefetcht0 [15+r9] + vaesdec xmm5,xmm5,xmm0 + lea rbx,[rbx*1+r11] + cmovge r11,rsp + vaesdec xmm6,xmm6,xmm0 + cmovg rbx,rsp + vaesdec xmm7,xmm7,xmm0 + sub rbx,r11 + vaesdec xmm8,xmm8,xmm0 + vmovdqu xmm13,XMMWORD[16+r11] + mov QWORD[((64+24))+rsp],rbx + vaesdec xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[((-24))+rsi] + lea r11,[16+rbx*1+r11] + vmovdqu XMMWORD[176+rsp],xmm13 + vaesdec xmm2,xmm2,xmm1 + cmp ecx,DWORD[((32+16))+rsp] + mov rbx,QWORD[((64+32))+rsp] + vaesdec xmm3,xmm3,xmm1 + prefetcht0 [31+r12] + vaesdec xmm4,xmm4,xmm1 + prefetcht0 [15+r10] + vaesdec xmm5,xmm5,xmm1 + lea rbx,[rbx*1+r12] + cmovge r12,rsp + vaesdec xmm6,xmm6,xmm1 + cmovg rbx,rsp + vaesdec xmm7,xmm7,xmm1 + sub rbx,r12 + vaesdec xmm8,xmm8,xmm1 + vmovdqu xmm10,XMMWORD[16+r12] + mov QWORD[((64+32))+rsp],rbx + vaesdec xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[((-8))+rsi] + lea r12,[16+rbx*1+r12] + vaesdec xmm2,xmm2,xmm0 + cmp ecx,DWORD[((32+20))+rsp] + mov rbx,QWORD[((64+40))+rsp] + vaesdec xmm3,xmm3,xmm0 + prefetcht0 [31+r13] + vaesdec xmm4,xmm4,xmm0 + prefetcht0 [15+r11] + vaesdec xmm5,xmm5,xmm0 + lea rbx,[r13*1+rbx] + cmovge r13,rsp + vaesdec xmm6,xmm6,xmm0 + cmovg rbx,rsp + vaesdec xmm7,xmm7,xmm0 + sub rbx,r13 + vaesdec xmm8,xmm8,xmm0 + vmovdqu xmm11,XMMWORD[16+r13] + mov QWORD[((64+40))+rsp],rbx + vaesdec xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[8+rsi] + lea r13,[16+rbx*1+r13] + vaesdec xmm2,xmm2,xmm1 + cmp ecx,DWORD[((32+24))+rsp] + mov rbx,QWORD[((64+48))+rsp] + vaesdec xmm3,xmm3,xmm1 + prefetcht0 [31+r14] + vaesdec xmm4,xmm4,xmm1 + prefetcht0 [15+r12] + vaesdec xmm5,xmm5,xmm1 + lea rbx,[rbx*1+r14] + cmovge r14,rsp + vaesdec xmm6,xmm6,xmm1 + cmovg rbx,rsp + vaesdec xmm7,xmm7,xmm1 + sub rbx,r14 + vaesdec xmm8,xmm8,xmm1 + vmovdqu xmm12,XMMWORD[16+r14] + mov QWORD[((64+48))+rsp],rbx + vaesdec xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[24+rsi] + lea r14,[16+rbx*1+r14] + vaesdec xmm2,xmm2,xmm0 + cmp ecx,DWORD[((32+28))+rsp] + mov rbx,QWORD[((64+56))+rsp] + vaesdec xmm3,xmm3,xmm0 + prefetcht0 [31+r15] + vaesdec xmm4,xmm4,xmm0 + prefetcht0 [15+r13] + vaesdec xmm5,xmm5,xmm0 + lea rbx,[rbx*1+r15] + cmovge r15,rsp + vaesdec xmm6,xmm6,xmm0 + cmovg rbx,rsp + vaesdec xmm7,xmm7,xmm0 + sub rbx,r15 + vaesdec xmm8,xmm8,xmm0 + vmovdqu xmm13,XMMWORD[16+r15] + mov QWORD[((64+56))+rsp],rbx + vaesdec xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[40+rsi] + lea r15,[16+rbx*1+r15] + vmovdqu xmm14,XMMWORD[32+rsp] + prefetcht0 [15+r14] + prefetcht0 [15+r15] + cmp eax,11 + jb NEAR $L$dec8x_tail + + vaesdec xmm2,xmm2,xmm1 + vaesdec xmm3,xmm3,xmm1 + vaesdec xmm4,xmm4,xmm1 + vaesdec xmm5,xmm5,xmm1 + vaesdec xmm6,xmm6,xmm1 + vaesdec xmm7,xmm7,xmm1 + vaesdec xmm8,xmm8,xmm1 + vaesdec xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[((176-120))+rsi] + + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vaesdec xmm8,xmm8,xmm0 + vaesdec xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[((192-120))+rsi] + je NEAR $L$dec8x_tail + + vaesdec xmm2,xmm2,xmm1 + vaesdec xmm3,xmm3,xmm1 + vaesdec xmm4,xmm4,xmm1 + vaesdec xmm5,xmm5,xmm1 + vaesdec xmm6,xmm6,xmm1 + vaesdec xmm7,xmm7,xmm1 + vaesdec xmm8,xmm8,xmm1 + vaesdec xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[((208-120))+rsi] + + vaesdec xmm2,xmm2,xmm0 + vaesdec xmm3,xmm3,xmm0 + vaesdec xmm4,xmm4,xmm0 + vaesdec xmm5,xmm5,xmm0 + vaesdec xmm6,xmm6,xmm0 + vaesdec xmm7,xmm7,xmm0 + vaesdec xmm8,xmm8,xmm0 + vaesdec xmm9,xmm9,xmm0 + vmovups xmm0,XMMWORD[((224-120))+rsi] + +$L$dec8x_tail: + vaesdec xmm2,xmm2,xmm1 + vpxor xmm15,xmm15,xmm15 + vaesdec xmm3,xmm3,xmm1 + vaesdec xmm4,xmm4,xmm1 + vpcmpgtd xmm15,xmm14,xmm15 + vaesdec xmm5,xmm5,xmm1 + vaesdec xmm6,xmm6,xmm1 + vpaddd xmm15,xmm15,xmm14 + vmovdqu xmm14,XMMWORD[48+rsp] + vaesdec xmm7,xmm7,xmm1 + mov rbx,QWORD[64+rsp] + vaesdec xmm8,xmm8,xmm1 + vaesdec xmm9,xmm9,xmm1 + vmovups xmm1,XMMWORD[((16-120))+rsi] + + vaesdeclast xmm2,xmm2,xmm0 + vmovdqa XMMWORD[32+rsp],xmm15 + vpxor xmm15,xmm15,xmm15 + vaesdeclast xmm3,xmm3,xmm0 + vpxor xmm2,xmm2,XMMWORD[rbp] + vaesdeclast xmm4,xmm4,xmm0 + vpxor xmm3,xmm3,XMMWORD[16+rbp] + vpcmpgtd xmm15,xmm14,xmm15 + vaesdeclast xmm5,xmm5,xmm0 + vpxor xmm4,xmm4,XMMWORD[32+rbp] + vaesdeclast xmm6,xmm6,xmm0 + vpxor xmm5,xmm5,XMMWORD[48+rbp] + vpaddd xmm14,xmm14,xmm15 + vmovdqu xmm15,XMMWORD[((-120))+rsi] + vaesdeclast xmm7,xmm7,xmm0 + vpxor xmm6,xmm6,XMMWORD[64+rbp] + vaesdeclast xmm8,xmm8,xmm0 + vpxor xmm7,xmm7,XMMWORD[80+rbp] + vmovdqa XMMWORD[48+rsp],xmm14 + vaesdeclast xmm9,xmm9,xmm0 + vpxor xmm8,xmm8,XMMWORD[96+rbp] + vmovups xmm0,XMMWORD[((32-120))+rsi] + + vmovups XMMWORD[(-16)+r8],xmm2 + sub r8,rbx + vmovdqu xmm2,XMMWORD[((128+0))+rsp] + vpxor xmm9,xmm9,XMMWORD[112+rbp] + vmovups XMMWORD[(-16)+r9],xmm3 + sub r9,QWORD[72+rsp] + vmovdqu XMMWORD[rbp],xmm2 + vpxor xmm2,xmm2,xmm15 + vmovdqu xmm3,XMMWORD[((128+16))+rsp] + vmovups XMMWORD[(-16)+r10],xmm4 + sub r10,QWORD[80+rsp] + vmovdqu XMMWORD[16+rbp],xmm3 + vpxor xmm3,xmm3,xmm15 + vmovdqu xmm4,XMMWORD[((128+32))+rsp] + vmovups XMMWORD[(-16)+r11],xmm5 + sub r11,QWORD[88+rsp] + vmovdqu XMMWORD[32+rbp],xmm4 + vpxor xmm4,xmm4,xmm15 + vmovdqu xmm5,XMMWORD[((128+48))+rsp] + vmovups XMMWORD[(-16)+r12],xmm6 + sub r12,QWORD[96+rsp] + vmovdqu XMMWORD[48+rbp],xmm5 + vpxor xmm5,xmm5,xmm15 + vmovdqu XMMWORD[64+rbp],xmm10 + vpxor xmm6,xmm15,xmm10 + vmovups XMMWORD[(-16)+r13],xmm7 + sub r13,QWORD[104+rsp] + vmovdqu XMMWORD[80+rbp],xmm11 + vpxor xmm7,xmm15,xmm11 + vmovups XMMWORD[(-16)+r14],xmm8 + sub r14,QWORD[112+rsp] + vmovdqu XMMWORD[96+rbp],xmm12 + vpxor xmm8,xmm15,xmm12 + vmovups XMMWORD[(-16)+r15],xmm9 + sub r15,QWORD[120+rsp] + vmovdqu XMMWORD[112+rbp],xmm13 + vpxor xmm9,xmm15,xmm13 + + xor rbp,128 + dec edx + jnz NEAR $L$oop_dec8x + + mov rax,QWORD[16+rsp] + + + + + + +$L$dec8x_done: + vzeroupper + movaps xmm6,XMMWORD[((-216))+rax] + movaps xmm7,XMMWORD[((-200))+rax] + movaps xmm8,XMMWORD[((-184))+rax] + movaps xmm9,XMMWORD[((-168))+rax] + movaps xmm10,XMMWORD[((-152))+rax] + movaps xmm11,XMMWORD[((-136))+rax] + movaps xmm12,XMMWORD[((-120))+rax] + movaps xmm13,XMMWORD[((-104))+rax] + movaps xmm14,XMMWORD[((-88))+rax] + movaps xmm15,XMMWORD[((-72))+rax] + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$dec8x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_multi_cbc_decrypt_avx: +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$in_prologue + + mov rax,QWORD[16+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + + lea rsi,[((-56-160))+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase + DD $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase + DD $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase + DD $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase + DD $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase + DD $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase + DD $L$SEH_begin_aesni_multi_cbc_encrypt_avx wrt ..imagebase + DD $L$SEH_end_aesni_multi_cbc_encrypt_avx wrt ..imagebase + DD $L$SEH_info_aesni_multi_cbc_encrypt_avx wrt ..imagebase + DD $L$SEH_begin_aesni_multi_cbc_decrypt_avx wrt ..imagebase + DD $L$SEH_end_aesni_multi_cbc_decrypt_avx wrt ..imagebase + DD $L$SEH_info_aesni_multi_cbc_decrypt_avx wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_aesni_multi_cbc_encrypt: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue wrt ..imagebase +$L$SEH_info_aesni_multi_cbc_decrypt: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue wrt ..imagebase +$L$SEH_info_aesni_multi_cbc_encrypt_avx: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$enc8x_body wrt ..imagebase,$L$enc8x_epilogue wrt ..imagebase +$L$SEH_info_aesni_multi_cbc_decrypt_avx: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$dec8x_body wrt ..imagebase,$L$dec8x_epilogue wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-sha1-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-sha1-x86_64.asm new file mode 100644 index 0000000..ac71215 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-sha1-x86_64.asm @@ -0,0 +1,3268 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +EXTERN OPENSSL_ia32cap_P + +global aesni_cbc_sha1_enc + +ALIGN 32 +aesni_cbc_sha1_enc: + + + mov r10d,DWORD[((OPENSSL_ia32cap_P+0))] + mov r11,QWORD[((OPENSSL_ia32cap_P+4))] + bt r11,61 + jc NEAR aesni_cbc_sha1_enc_shaext + and r11d,268435456 + and r10d,1073741824 + or r10d,r11d + cmp r10d,1342177280 + je NEAR aesni_cbc_sha1_enc_avx + jmp NEAR aesni_cbc_sha1_enc_ssse3 + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +aesni_cbc_sha1_enc_ssse3: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_cbc_sha1_enc_ssse3: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov r10,QWORD[56+rsp] + + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-264))+rsp] + + + + movaps XMMWORD[(96+0)+rsp],xmm6 + movaps XMMWORD[(96+16)+rsp],xmm7 + movaps XMMWORD[(96+32)+rsp],xmm8 + movaps XMMWORD[(96+48)+rsp],xmm9 + movaps XMMWORD[(96+64)+rsp],xmm10 + movaps XMMWORD[(96+80)+rsp],xmm11 + movaps XMMWORD[(96+96)+rsp],xmm12 + movaps XMMWORD[(96+112)+rsp],xmm13 + movaps XMMWORD[(96+128)+rsp],xmm14 + movaps XMMWORD[(96+144)+rsp],xmm15 +$L$prologue_ssse3: + mov r12,rdi + mov r13,rsi + mov r14,rdx + lea r15,[112+rcx] + movdqu xmm2,XMMWORD[r8] + mov QWORD[88+rsp],r8 + shl r14,6 + sub r13,r12 + mov r8d,DWORD[((240-112))+r15] + add r14,r10 + + lea r11,[K_XX_XX] + mov eax,DWORD[r9] + mov ebx,DWORD[4+r9] + mov ecx,DWORD[8+r9] + mov edx,DWORD[12+r9] + mov esi,ebx + mov ebp,DWORD[16+r9] + mov edi,ecx + xor edi,edx + and esi,edi + + movdqa xmm3,XMMWORD[64+r11] + movdqa xmm13,XMMWORD[r11] + movdqu xmm4,XMMWORD[r10] + movdqu xmm5,XMMWORD[16+r10] + movdqu xmm6,XMMWORD[32+r10] + movdqu xmm7,XMMWORD[48+r10] +DB 102,15,56,0,227 +DB 102,15,56,0,235 +DB 102,15,56,0,243 + add r10,64 + paddd xmm4,xmm13 +DB 102,15,56,0,251 + paddd xmm5,xmm13 + paddd xmm6,xmm13 + movdqa XMMWORD[rsp],xmm4 + psubd xmm4,xmm13 + movdqa XMMWORD[16+rsp],xmm5 + psubd xmm5,xmm13 + movdqa XMMWORD[32+rsp],xmm6 + psubd xmm6,xmm13 + movups xmm15,XMMWORD[((-112))+r15] + movups xmm0,XMMWORD[((16-112))+r15] + jmp NEAR $L$oop_ssse3 +ALIGN 32 +$L$oop_ssse3: + ror ebx,2 + movups xmm14,XMMWORD[r12] + xorps xmm14,xmm15 + xorps xmm2,xmm14 + movups xmm1,XMMWORD[((-80))+r15] +DB 102,15,56,220,208 + pshufd xmm8,xmm4,238 + xor esi,edx + movdqa xmm12,xmm7 + paddd xmm13,xmm7 + mov edi,eax + add ebp,DWORD[rsp] + punpcklqdq xmm8,xmm5 + xor ebx,ecx + rol eax,5 + add ebp,esi + psrldq xmm12,4 + and edi,ebx + xor ebx,ecx + pxor xmm8,xmm4 + add ebp,eax + ror eax,7 + pxor xmm12,xmm6 + xor edi,ecx + mov esi,ebp + add edx,DWORD[4+rsp] + pxor xmm8,xmm12 + xor eax,ebx + rol ebp,5 + movdqa XMMWORD[48+rsp],xmm13 + add edx,edi + movups xmm0,XMMWORD[((-64))+r15] +DB 102,15,56,220,209 + and esi,eax + movdqa xmm3,xmm8 + xor eax,ebx + add edx,ebp + ror ebp,7 + movdqa xmm12,xmm8 + xor esi,ebx + pslldq xmm3,12 + paddd xmm8,xmm8 + mov edi,edx + add ecx,DWORD[8+rsp] + psrld xmm12,31 + xor ebp,eax + rol edx,5 + add ecx,esi + movdqa xmm13,xmm3 + and edi,ebp + xor ebp,eax + psrld xmm3,30 + add ecx,edx + ror edx,7 + por xmm8,xmm12 + xor edi,eax + mov esi,ecx + add ebx,DWORD[12+rsp] + movups xmm1,XMMWORD[((-48))+r15] +DB 102,15,56,220,208 + pslld xmm13,2 + pxor xmm8,xmm3 + xor edx,ebp + movdqa xmm3,XMMWORD[r11] + rol ecx,5 + add ebx,edi + and esi,edx + pxor xmm8,xmm13 + xor edx,ebp + add ebx,ecx + ror ecx,7 + pshufd xmm9,xmm5,238 + xor esi,ebp + movdqa xmm13,xmm8 + paddd xmm3,xmm8 + mov edi,ebx + add eax,DWORD[16+rsp] + punpcklqdq xmm9,xmm6 + xor ecx,edx + rol ebx,5 + add eax,esi + psrldq xmm13,4 + and edi,ecx + xor ecx,edx + pxor xmm9,xmm5 + add eax,ebx + ror ebx,7 + movups xmm0,XMMWORD[((-32))+r15] +DB 102,15,56,220,209 + pxor xmm13,xmm7 + xor edi,edx + mov esi,eax + add ebp,DWORD[20+rsp] + pxor xmm9,xmm13 + xor ebx,ecx + rol eax,5 + movdqa XMMWORD[rsp],xmm3 + add ebp,edi + and esi,ebx + movdqa xmm12,xmm9 + xor ebx,ecx + add ebp,eax + ror eax,7 + movdqa xmm13,xmm9 + xor esi,ecx + pslldq xmm12,12 + paddd xmm9,xmm9 + mov edi,ebp + add edx,DWORD[24+rsp] + psrld xmm13,31 + xor eax,ebx + rol ebp,5 + add edx,esi + movups xmm1,XMMWORD[((-16))+r15] +DB 102,15,56,220,208 + movdqa xmm3,xmm12 + and edi,eax + xor eax,ebx + psrld xmm12,30 + add edx,ebp + ror ebp,7 + por xmm9,xmm13 + xor edi,ebx + mov esi,edx + add ecx,DWORD[28+rsp] + pslld xmm3,2 + pxor xmm9,xmm12 + xor ebp,eax + movdqa xmm12,XMMWORD[16+r11] + rol edx,5 + add ecx,edi + and esi,ebp + pxor xmm9,xmm3 + xor ebp,eax + add ecx,edx + ror edx,7 + pshufd xmm10,xmm6,238 + xor esi,eax + movdqa xmm3,xmm9 + paddd xmm12,xmm9 + mov edi,ecx + add ebx,DWORD[32+rsp] + movups xmm0,XMMWORD[r15] +DB 102,15,56,220,209 + punpcklqdq xmm10,xmm7 + xor edx,ebp + rol ecx,5 + add ebx,esi + psrldq xmm3,4 + and edi,edx + xor edx,ebp + pxor xmm10,xmm6 + add ebx,ecx + ror ecx,7 + pxor xmm3,xmm8 + xor edi,ebp + mov esi,ebx + add eax,DWORD[36+rsp] + pxor xmm10,xmm3 + xor ecx,edx + rol ebx,5 + movdqa XMMWORD[16+rsp],xmm12 + add eax,edi + and esi,ecx + movdqa xmm13,xmm10 + xor ecx,edx + add eax,ebx + ror ebx,7 + movups xmm1,XMMWORD[16+r15] +DB 102,15,56,220,208 + movdqa xmm3,xmm10 + xor esi,edx + pslldq xmm13,12 + paddd xmm10,xmm10 + mov edi,eax + add ebp,DWORD[40+rsp] + psrld xmm3,31 + xor ebx,ecx + rol eax,5 + add ebp,esi + movdqa xmm12,xmm13 + and edi,ebx + xor ebx,ecx + psrld xmm13,30 + add ebp,eax + ror eax,7 + por xmm10,xmm3 + xor edi,ecx + mov esi,ebp + add edx,DWORD[44+rsp] + pslld xmm12,2 + pxor xmm10,xmm13 + xor eax,ebx + movdqa xmm13,XMMWORD[16+r11] + rol ebp,5 + add edx,edi + movups xmm0,XMMWORD[32+r15] +DB 102,15,56,220,209 + and esi,eax + pxor xmm10,xmm12 + xor eax,ebx + add edx,ebp + ror ebp,7 + pshufd xmm11,xmm7,238 + xor esi,ebx + movdqa xmm12,xmm10 + paddd xmm13,xmm10 + mov edi,edx + add ecx,DWORD[48+rsp] + punpcklqdq xmm11,xmm8 + xor ebp,eax + rol edx,5 + add ecx,esi + psrldq xmm12,4 + and edi,ebp + xor ebp,eax + pxor xmm11,xmm7 + add ecx,edx + ror edx,7 + pxor xmm12,xmm9 + xor edi,eax + mov esi,ecx + add ebx,DWORD[52+rsp] + movups xmm1,XMMWORD[48+r15] +DB 102,15,56,220,208 + pxor xmm11,xmm12 + xor edx,ebp + rol ecx,5 + movdqa XMMWORD[32+rsp],xmm13 + add ebx,edi + and esi,edx + movdqa xmm3,xmm11 + xor edx,ebp + add ebx,ecx + ror ecx,7 + movdqa xmm12,xmm11 + xor esi,ebp + pslldq xmm3,12 + paddd xmm11,xmm11 + mov edi,ebx + add eax,DWORD[56+rsp] + psrld xmm12,31 + xor ecx,edx + rol ebx,5 + add eax,esi + movdqa xmm13,xmm3 + and edi,ecx + xor ecx,edx + psrld xmm3,30 + add eax,ebx + ror ebx,7 + cmp r8d,11 + jb NEAR $L$aesenclast1 + movups xmm0,XMMWORD[64+r15] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[80+r15] +DB 102,15,56,220,208 + je NEAR $L$aesenclast1 + movups xmm0,XMMWORD[96+r15] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[112+r15] +DB 102,15,56,220,208 +$L$aesenclast1: +DB 102,15,56,221,209 + movups xmm0,XMMWORD[((16-112))+r15] + por xmm11,xmm12 + xor edi,edx + mov esi,eax + add ebp,DWORD[60+rsp] + pslld xmm13,2 + pxor xmm11,xmm3 + xor ebx,ecx + movdqa xmm3,XMMWORD[16+r11] + rol eax,5 + add ebp,edi + and esi,ebx + pxor xmm11,xmm13 + pshufd xmm13,xmm10,238 + xor ebx,ecx + add ebp,eax + ror eax,7 + pxor xmm4,xmm8 + xor esi,ecx + mov edi,ebp + add edx,DWORD[rsp] + punpcklqdq xmm13,xmm11 + xor eax,ebx + rol ebp,5 + pxor xmm4,xmm5 + add edx,esi + movups xmm14,XMMWORD[16+r12] + xorps xmm14,xmm15 + movups XMMWORD[r13*1+r12],xmm2 + xorps xmm2,xmm14 + movups xmm1,XMMWORD[((-80))+r15] +DB 102,15,56,220,208 + and edi,eax + movdqa xmm12,xmm3 + xor eax,ebx + paddd xmm3,xmm11 + add edx,ebp + pxor xmm4,xmm13 + ror ebp,7 + xor edi,ebx + mov esi,edx + add ecx,DWORD[4+rsp] + movdqa xmm13,xmm4 + xor ebp,eax + rol edx,5 + movdqa XMMWORD[48+rsp],xmm3 + add ecx,edi + and esi,ebp + xor ebp,eax + pslld xmm4,2 + add ecx,edx + ror edx,7 + psrld xmm13,30 + xor esi,eax + mov edi,ecx + add ebx,DWORD[8+rsp] + movups xmm0,XMMWORD[((-64))+r15] +DB 102,15,56,220,209 + por xmm4,xmm13 + xor edx,ebp + rol ecx,5 + pshufd xmm3,xmm11,238 + add ebx,esi + and edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[12+rsp] + xor edi,ebp + mov esi,ebx + rol ebx,5 + add eax,edi + xor esi,edx + ror ecx,7 + add eax,ebx + pxor xmm5,xmm9 + add ebp,DWORD[16+rsp] + movups xmm1,XMMWORD[((-48))+r15] +DB 102,15,56,220,208 + xor esi,ecx + punpcklqdq xmm3,xmm4 + mov edi,eax + rol eax,5 + pxor xmm5,xmm6 + add ebp,esi + xor edi,ecx + movdqa xmm13,xmm12 + ror ebx,7 + paddd xmm12,xmm4 + add ebp,eax + pxor xmm5,xmm3 + add edx,DWORD[20+rsp] + xor edi,ebx + mov esi,ebp + rol ebp,5 + movdqa xmm3,xmm5 + add edx,edi + xor esi,ebx + movdqa XMMWORD[rsp],xmm12 + ror eax,7 + add edx,ebp + add ecx,DWORD[24+rsp] + pslld xmm5,2 + xor esi,eax + mov edi,edx + psrld xmm3,30 + rol edx,5 + add ecx,esi + movups xmm0,XMMWORD[((-32))+r15] +DB 102,15,56,220,209 + xor edi,eax + ror ebp,7 + por xmm5,xmm3 + add ecx,edx + add ebx,DWORD[28+rsp] + pshufd xmm12,xmm4,238 + xor edi,ebp + mov esi,ecx + rol ecx,5 + add ebx,edi + xor esi,ebp + ror edx,7 + add ebx,ecx + pxor xmm6,xmm10 + add eax,DWORD[32+rsp] + xor esi,edx + punpcklqdq xmm12,xmm5 + mov edi,ebx + rol ebx,5 + pxor xmm6,xmm7 + add eax,esi + xor edi,edx + movdqa xmm3,XMMWORD[32+r11] + ror ecx,7 + paddd xmm13,xmm5 + add eax,ebx + pxor xmm6,xmm12 + add ebp,DWORD[36+rsp] + movups xmm1,XMMWORD[((-16))+r15] +DB 102,15,56,220,208 + xor edi,ecx + mov esi,eax + rol eax,5 + movdqa xmm12,xmm6 + add ebp,edi + xor esi,ecx + movdqa XMMWORD[16+rsp],xmm13 + ror ebx,7 + add ebp,eax + add edx,DWORD[40+rsp] + pslld xmm6,2 + xor esi,ebx + mov edi,ebp + psrld xmm12,30 + rol ebp,5 + add edx,esi + xor edi,ebx + ror eax,7 + por xmm6,xmm12 + add edx,ebp + add ecx,DWORD[44+rsp] + pshufd xmm13,xmm5,238 + xor edi,eax + mov esi,edx + rol edx,5 + add ecx,edi + movups xmm0,XMMWORD[r15] +DB 102,15,56,220,209 + xor esi,eax + ror ebp,7 + add ecx,edx + pxor xmm7,xmm11 + add ebx,DWORD[48+rsp] + xor esi,ebp + punpcklqdq xmm13,xmm6 + mov edi,ecx + rol ecx,5 + pxor xmm7,xmm8 + add ebx,esi + xor edi,ebp + movdqa xmm12,xmm3 + ror edx,7 + paddd xmm3,xmm6 + add ebx,ecx + pxor xmm7,xmm13 + add eax,DWORD[52+rsp] + xor edi,edx + mov esi,ebx + rol ebx,5 + movdqa xmm13,xmm7 + add eax,edi + xor esi,edx + movdqa XMMWORD[32+rsp],xmm3 + ror ecx,7 + add eax,ebx + add ebp,DWORD[56+rsp] + movups xmm1,XMMWORD[16+r15] +DB 102,15,56,220,208 + pslld xmm7,2 + xor esi,ecx + mov edi,eax + psrld xmm13,30 + rol eax,5 + add ebp,esi + xor edi,ecx + ror ebx,7 + por xmm7,xmm13 + add ebp,eax + add edx,DWORD[60+rsp] + pshufd xmm3,xmm6,238 + xor edi,ebx + mov esi,ebp + rol ebp,5 + add edx,edi + xor esi,ebx + ror eax,7 + add edx,ebp + pxor xmm8,xmm4 + add ecx,DWORD[rsp] + xor esi,eax + punpcklqdq xmm3,xmm7 + mov edi,edx + rol edx,5 + pxor xmm8,xmm9 + add ecx,esi + movups xmm0,XMMWORD[32+r15] +DB 102,15,56,220,209 + xor edi,eax + movdqa xmm13,xmm12 + ror ebp,7 + paddd xmm12,xmm7 + add ecx,edx + pxor xmm8,xmm3 + add ebx,DWORD[4+rsp] + xor edi,ebp + mov esi,ecx + rol ecx,5 + movdqa xmm3,xmm8 + add ebx,edi + xor esi,ebp + movdqa XMMWORD[48+rsp],xmm12 + ror edx,7 + add ebx,ecx + add eax,DWORD[8+rsp] + pslld xmm8,2 + xor esi,edx + mov edi,ebx + psrld xmm3,30 + rol ebx,5 + add eax,esi + xor edi,edx + ror ecx,7 + por xmm8,xmm3 + add eax,ebx + add ebp,DWORD[12+rsp] + movups xmm1,XMMWORD[48+r15] +DB 102,15,56,220,208 + pshufd xmm12,xmm7,238 + xor edi,ecx + mov esi,eax + rol eax,5 + add ebp,edi + xor esi,ecx + ror ebx,7 + add ebp,eax + pxor xmm9,xmm5 + add edx,DWORD[16+rsp] + xor esi,ebx + punpcklqdq xmm12,xmm8 + mov edi,ebp + rol ebp,5 + pxor xmm9,xmm10 + add edx,esi + xor edi,ebx + movdqa xmm3,xmm13 + ror eax,7 + paddd xmm13,xmm8 + add edx,ebp + pxor xmm9,xmm12 + add ecx,DWORD[20+rsp] + xor edi,eax + mov esi,edx + rol edx,5 + movdqa xmm12,xmm9 + add ecx,edi + cmp r8d,11 + jb NEAR $L$aesenclast2 + movups xmm0,XMMWORD[64+r15] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[80+r15] +DB 102,15,56,220,208 + je NEAR $L$aesenclast2 + movups xmm0,XMMWORD[96+r15] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[112+r15] +DB 102,15,56,220,208 +$L$aesenclast2: +DB 102,15,56,221,209 + movups xmm0,XMMWORD[((16-112))+r15] + xor esi,eax + movdqa XMMWORD[rsp],xmm13 + ror ebp,7 + add ecx,edx + add ebx,DWORD[24+rsp] + pslld xmm9,2 + xor esi,ebp + mov edi,ecx + psrld xmm12,30 + rol ecx,5 + add ebx,esi + xor edi,ebp + ror edx,7 + por xmm9,xmm12 + add ebx,ecx + add eax,DWORD[28+rsp] + pshufd xmm13,xmm8,238 + ror ecx,7 + mov esi,ebx + xor edi,edx + rol ebx,5 + add eax,edi + xor esi,ecx + xor ecx,edx + add eax,ebx + pxor xmm10,xmm6 + add ebp,DWORD[32+rsp] + movups xmm14,XMMWORD[32+r12] + xorps xmm14,xmm15 + movups XMMWORD[16+r12*1+r13],xmm2 + xorps xmm2,xmm14 + movups xmm1,XMMWORD[((-80))+r15] +DB 102,15,56,220,208 + and esi,ecx + xor ecx,edx + ror ebx,7 + punpcklqdq xmm13,xmm9 + mov edi,eax + xor esi,ecx + pxor xmm10,xmm11 + rol eax,5 + add ebp,esi + movdqa xmm12,xmm3 + xor edi,ebx + paddd xmm3,xmm9 + xor ebx,ecx + pxor xmm10,xmm13 + add ebp,eax + add edx,DWORD[36+rsp] + and edi,ebx + xor ebx,ecx + ror eax,7 + movdqa xmm13,xmm10 + mov esi,ebp + xor edi,ebx + movdqa XMMWORD[16+rsp],xmm3 + rol ebp,5 + add edx,edi + movups xmm0,XMMWORD[((-64))+r15] +DB 102,15,56,220,209 + xor esi,eax + pslld xmm10,2 + xor eax,ebx + add edx,ebp + psrld xmm13,30 + add ecx,DWORD[40+rsp] + and esi,eax + xor eax,ebx + por xmm10,xmm13 + ror ebp,7 + mov edi,edx + xor esi,eax + rol edx,5 + pshufd xmm3,xmm9,238 + add ecx,esi + xor edi,ebp + xor ebp,eax + add ecx,edx + add ebx,DWORD[44+rsp] + and edi,ebp + xor ebp,eax + ror edx,7 + movups xmm1,XMMWORD[((-48))+r15] +DB 102,15,56,220,208 + mov esi,ecx + xor edi,ebp + rol ecx,5 + add ebx,edi + xor esi,edx + xor edx,ebp + add ebx,ecx + pxor xmm11,xmm7 + add eax,DWORD[48+rsp] + and esi,edx + xor edx,ebp + ror ecx,7 + punpcklqdq xmm3,xmm10 + mov edi,ebx + xor esi,edx + pxor xmm11,xmm4 + rol ebx,5 + add eax,esi + movdqa xmm13,XMMWORD[48+r11] + xor edi,ecx + paddd xmm12,xmm10 + xor ecx,edx + pxor xmm11,xmm3 + add eax,ebx + add ebp,DWORD[52+rsp] + movups xmm0,XMMWORD[((-32))+r15] +DB 102,15,56,220,209 + and edi,ecx + xor ecx,edx + ror ebx,7 + movdqa xmm3,xmm11 + mov esi,eax + xor edi,ecx + movdqa XMMWORD[32+rsp],xmm12 + rol eax,5 + add ebp,edi + xor esi,ebx + pslld xmm11,2 + xor ebx,ecx + add ebp,eax + psrld xmm3,30 + add edx,DWORD[56+rsp] + and esi,ebx + xor ebx,ecx + por xmm11,xmm3 + ror eax,7 + mov edi,ebp + xor esi,ebx + rol ebp,5 + pshufd xmm12,xmm10,238 + add edx,esi + movups xmm1,XMMWORD[((-16))+r15] +DB 102,15,56,220,208 + xor edi,eax + xor eax,ebx + add edx,ebp + add ecx,DWORD[60+rsp] + and edi,eax + xor eax,ebx + ror ebp,7 + mov esi,edx + xor edi,eax + rol edx,5 + add ecx,edi + xor esi,ebp + xor ebp,eax + add ecx,edx + pxor xmm4,xmm8 + add ebx,DWORD[rsp] + and esi,ebp + xor ebp,eax + ror edx,7 + movups xmm0,XMMWORD[r15] +DB 102,15,56,220,209 + punpcklqdq xmm12,xmm11 + mov edi,ecx + xor esi,ebp + pxor xmm4,xmm5 + rol ecx,5 + add ebx,esi + movdqa xmm3,xmm13 + xor edi,edx + paddd xmm13,xmm11 + xor edx,ebp + pxor xmm4,xmm12 + add ebx,ecx + add eax,DWORD[4+rsp] + and edi,edx + xor edx,ebp + ror ecx,7 + movdqa xmm12,xmm4 + mov esi,ebx + xor edi,edx + movdqa XMMWORD[48+rsp],xmm13 + rol ebx,5 + add eax,edi + xor esi,ecx + pslld xmm4,2 + xor ecx,edx + add eax,ebx + psrld xmm12,30 + add ebp,DWORD[8+rsp] + movups xmm1,XMMWORD[16+r15] +DB 102,15,56,220,208 + and esi,ecx + xor ecx,edx + por xmm4,xmm12 + ror ebx,7 + mov edi,eax + xor esi,ecx + rol eax,5 + pshufd xmm13,xmm11,238 + add ebp,esi + xor edi,ebx + xor ebx,ecx + add ebp,eax + add edx,DWORD[12+rsp] + and edi,ebx + xor ebx,ecx + ror eax,7 + mov esi,ebp + xor edi,ebx + rol ebp,5 + add edx,edi + movups xmm0,XMMWORD[32+r15] +DB 102,15,56,220,209 + xor esi,eax + xor eax,ebx + add edx,ebp + pxor xmm5,xmm9 + add ecx,DWORD[16+rsp] + and esi,eax + xor eax,ebx + ror ebp,7 + punpcklqdq xmm13,xmm4 + mov edi,edx + xor esi,eax + pxor xmm5,xmm6 + rol edx,5 + add ecx,esi + movdqa xmm12,xmm3 + xor edi,ebp + paddd xmm3,xmm4 + xor ebp,eax + pxor xmm5,xmm13 + add ecx,edx + add ebx,DWORD[20+rsp] + and edi,ebp + xor ebp,eax + ror edx,7 + movups xmm1,XMMWORD[48+r15] +DB 102,15,56,220,208 + movdqa xmm13,xmm5 + mov esi,ecx + xor edi,ebp + movdqa XMMWORD[rsp],xmm3 + rol ecx,5 + add ebx,edi + xor esi,edx + pslld xmm5,2 + xor edx,ebp + add ebx,ecx + psrld xmm13,30 + add eax,DWORD[24+rsp] + and esi,edx + xor edx,ebp + por xmm5,xmm13 + ror ecx,7 + mov edi,ebx + xor esi,edx + rol ebx,5 + pshufd xmm3,xmm4,238 + add eax,esi + xor edi,ecx + xor ecx,edx + add eax,ebx + add ebp,DWORD[28+rsp] + cmp r8d,11 + jb NEAR $L$aesenclast3 + movups xmm0,XMMWORD[64+r15] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[80+r15] +DB 102,15,56,220,208 + je NEAR $L$aesenclast3 + movups xmm0,XMMWORD[96+r15] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[112+r15] +DB 102,15,56,220,208 +$L$aesenclast3: +DB 102,15,56,221,209 + movups xmm0,XMMWORD[((16-112))+r15] + and edi,ecx + xor ecx,edx + ror ebx,7 + mov esi,eax + xor edi,ecx + rol eax,5 + add ebp,edi + xor esi,ebx + xor ebx,ecx + add ebp,eax + pxor xmm6,xmm10 + add edx,DWORD[32+rsp] + and esi,ebx + xor ebx,ecx + ror eax,7 + punpcklqdq xmm3,xmm5 + mov edi,ebp + xor esi,ebx + pxor xmm6,xmm7 + rol ebp,5 + add edx,esi + movups xmm14,XMMWORD[48+r12] + xorps xmm14,xmm15 + movups XMMWORD[32+r12*1+r13],xmm2 + xorps xmm2,xmm14 + movups xmm1,XMMWORD[((-80))+r15] +DB 102,15,56,220,208 + movdqa xmm13,xmm12 + xor edi,eax + paddd xmm12,xmm5 + xor eax,ebx + pxor xmm6,xmm3 + add edx,ebp + add ecx,DWORD[36+rsp] + and edi,eax + xor eax,ebx + ror ebp,7 + movdqa xmm3,xmm6 + mov esi,edx + xor edi,eax + movdqa XMMWORD[16+rsp],xmm12 + rol edx,5 + add ecx,edi + xor esi,ebp + pslld xmm6,2 + xor ebp,eax + add ecx,edx + psrld xmm3,30 + add ebx,DWORD[40+rsp] + and esi,ebp + xor ebp,eax + por xmm6,xmm3 + ror edx,7 + movups xmm0,XMMWORD[((-64))+r15] +DB 102,15,56,220,209 + mov edi,ecx + xor esi,ebp + rol ecx,5 + pshufd xmm12,xmm5,238 + add ebx,esi + xor edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[44+rsp] + and edi,edx + xor edx,ebp + ror ecx,7 + mov esi,ebx + xor edi,edx + rol ebx,5 + add eax,edi + xor esi,edx + add eax,ebx + pxor xmm7,xmm11 + add ebp,DWORD[48+rsp] + movups xmm1,XMMWORD[((-48))+r15] +DB 102,15,56,220,208 + xor esi,ecx + punpcklqdq xmm12,xmm6 + mov edi,eax + rol eax,5 + pxor xmm7,xmm8 + add ebp,esi + xor edi,ecx + movdqa xmm3,xmm13 + ror ebx,7 + paddd xmm13,xmm6 + add ebp,eax + pxor xmm7,xmm12 + add edx,DWORD[52+rsp] + xor edi,ebx + mov esi,ebp + rol ebp,5 + movdqa xmm12,xmm7 + add edx,edi + xor esi,ebx + movdqa XMMWORD[32+rsp],xmm13 + ror eax,7 + add edx,ebp + add ecx,DWORD[56+rsp] + pslld xmm7,2 + xor esi,eax + mov edi,edx + psrld xmm12,30 + rol edx,5 + add ecx,esi + movups xmm0,XMMWORD[((-32))+r15] +DB 102,15,56,220,209 + xor edi,eax + ror ebp,7 + por xmm7,xmm12 + add ecx,edx + add ebx,DWORD[60+rsp] + xor edi,ebp + mov esi,ecx + rol ecx,5 + add ebx,edi + xor esi,ebp + ror edx,7 + add ebx,ecx + add eax,DWORD[rsp] + xor esi,edx + mov edi,ebx + rol ebx,5 + paddd xmm3,xmm7 + add eax,esi + xor edi,edx + movdqa XMMWORD[48+rsp],xmm3 + ror ecx,7 + add eax,ebx + add ebp,DWORD[4+rsp] + movups xmm1,XMMWORD[((-16))+r15] +DB 102,15,56,220,208 + xor edi,ecx + mov esi,eax + rol eax,5 + add ebp,edi + xor esi,ecx + ror ebx,7 + add ebp,eax + add edx,DWORD[8+rsp] + xor esi,ebx + mov edi,ebp + rol ebp,5 + add edx,esi + xor edi,ebx + ror eax,7 + add edx,ebp + add ecx,DWORD[12+rsp] + xor edi,eax + mov esi,edx + rol edx,5 + add ecx,edi + movups xmm0,XMMWORD[r15] +DB 102,15,56,220,209 + xor esi,eax + ror ebp,7 + add ecx,edx + cmp r10,r14 + je NEAR $L$done_ssse3 + movdqa xmm3,XMMWORD[64+r11] + movdqa xmm13,XMMWORD[r11] + movdqu xmm4,XMMWORD[r10] + movdqu xmm5,XMMWORD[16+r10] + movdqu xmm6,XMMWORD[32+r10] + movdqu xmm7,XMMWORD[48+r10] +DB 102,15,56,0,227 + add r10,64 + add ebx,DWORD[16+rsp] + xor esi,ebp + mov edi,ecx +DB 102,15,56,0,235 + rol ecx,5 + add ebx,esi + xor edi,ebp + ror edx,7 + paddd xmm4,xmm13 + add ebx,ecx + add eax,DWORD[20+rsp] + xor edi,edx + mov esi,ebx + movdqa XMMWORD[rsp],xmm4 + rol ebx,5 + add eax,edi + xor esi,edx + ror ecx,7 + psubd xmm4,xmm13 + add eax,ebx + add ebp,DWORD[24+rsp] + movups xmm1,XMMWORD[16+r15] +DB 102,15,56,220,208 + xor esi,ecx + mov edi,eax + rol eax,5 + add ebp,esi + xor edi,ecx + ror ebx,7 + add ebp,eax + add edx,DWORD[28+rsp] + xor edi,ebx + mov esi,ebp + rol ebp,5 + add edx,edi + xor esi,ebx + ror eax,7 + add edx,ebp + add ecx,DWORD[32+rsp] + xor esi,eax + mov edi,edx +DB 102,15,56,0,243 + rol edx,5 + add ecx,esi + movups xmm0,XMMWORD[32+r15] +DB 102,15,56,220,209 + xor edi,eax + ror ebp,7 + paddd xmm5,xmm13 + add ecx,edx + add ebx,DWORD[36+rsp] + xor edi,ebp + mov esi,ecx + movdqa XMMWORD[16+rsp],xmm5 + rol ecx,5 + add ebx,edi + xor esi,ebp + ror edx,7 + psubd xmm5,xmm13 + add ebx,ecx + add eax,DWORD[40+rsp] + xor esi,edx + mov edi,ebx + rol ebx,5 + add eax,esi + xor edi,edx + ror ecx,7 + add eax,ebx + add ebp,DWORD[44+rsp] + movups xmm1,XMMWORD[48+r15] +DB 102,15,56,220,208 + xor edi,ecx + mov esi,eax + rol eax,5 + add ebp,edi + xor esi,ecx + ror ebx,7 + add ebp,eax + add edx,DWORD[48+rsp] + xor esi,ebx + mov edi,ebp +DB 102,15,56,0,251 + rol ebp,5 + add edx,esi + xor edi,ebx + ror eax,7 + paddd xmm6,xmm13 + add edx,ebp + add ecx,DWORD[52+rsp] + xor edi,eax + mov esi,edx + movdqa XMMWORD[32+rsp],xmm6 + rol edx,5 + add ecx,edi + cmp r8d,11 + jb NEAR $L$aesenclast4 + movups xmm0,XMMWORD[64+r15] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[80+r15] +DB 102,15,56,220,208 + je NEAR $L$aesenclast4 + movups xmm0,XMMWORD[96+r15] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[112+r15] +DB 102,15,56,220,208 +$L$aesenclast4: +DB 102,15,56,221,209 + movups xmm0,XMMWORD[((16-112))+r15] + xor esi,eax + ror ebp,7 + psubd xmm6,xmm13 + add ecx,edx + add ebx,DWORD[56+rsp] + xor esi,ebp + mov edi,ecx + rol ecx,5 + add ebx,esi + xor edi,ebp + ror edx,7 + add ebx,ecx + add eax,DWORD[60+rsp] + xor edi,edx + mov esi,ebx + rol ebx,5 + add eax,edi + ror ecx,7 + add eax,ebx + movups XMMWORD[48+r12*1+r13],xmm2 + lea r12,[64+r12] + + add eax,DWORD[r9] + add esi,DWORD[4+r9] + add ecx,DWORD[8+r9] + add edx,DWORD[12+r9] + mov DWORD[r9],eax + add ebp,DWORD[16+r9] + mov DWORD[4+r9],esi + mov ebx,esi + mov DWORD[8+r9],ecx + mov edi,ecx + mov DWORD[12+r9],edx + xor edi,edx + mov DWORD[16+r9],ebp + and esi,edi + jmp NEAR $L$oop_ssse3 + +$L$done_ssse3: + add ebx,DWORD[16+rsp] + xor esi,ebp + mov edi,ecx + rol ecx,5 + add ebx,esi + xor edi,ebp + ror edx,7 + add ebx,ecx + add eax,DWORD[20+rsp] + xor edi,edx + mov esi,ebx + rol ebx,5 + add eax,edi + xor esi,edx + ror ecx,7 + add eax,ebx + add ebp,DWORD[24+rsp] + movups xmm1,XMMWORD[16+r15] +DB 102,15,56,220,208 + xor esi,ecx + mov edi,eax + rol eax,5 + add ebp,esi + xor edi,ecx + ror ebx,7 + add ebp,eax + add edx,DWORD[28+rsp] + xor edi,ebx + mov esi,ebp + rol ebp,5 + add edx,edi + xor esi,ebx + ror eax,7 + add edx,ebp + add ecx,DWORD[32+rsp] + xor esi,eax + mov edi,edx + rol edx,5 + add ecx,esi + movups xmm0,XMMWORD[32+r15] +DB 102,15,56,220,209 + xor edi,eax + ror ebp,7 + add ecx,edx + add ebx,DWORD[36+rsp] + xor edi,ebp + mov esi,ecx + rol ecx,5 + add ebx,edi + xor esi,ebp + ror edx,7 + add ebx,ecx + add eax,DWORD[40+rsp] + xor esi,edx + mov edi,ebx + rol ebx,5 + add eax,esi + xor edi,edx + ror ecx,7 + add eax,ebx + add ebp,DWORD[44+rsp] + movups xmm1,XMMWORD[48+r15] +DB 102,15,56,220,208 + xor edi,ecx + mov esi,eax + rol eax,5 + add ebp,edi + xor esi,ecx + ror ebx,7 + add ebp,eax + add edx,DWORD[48+rsp] + xor esi,ebx + mov edi,ebp + rol ebp,5 + add edx,esi + xor edi,ebx + ror eax,7 + add edx,ebp + add ecx,DWORD[52+rsp] + xor edi,eax + mov esi,edx + rol edx,5 + add ecx,edi + cmp r8d,11 + jb NEAR $L$aesenclast5 + movups xmm0,XMMWORD[64+r15] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[80+r15] +DB 102,15,56,220,208 + je NEAR $L$aesenclast5 + movups xmm0,XMMWORD[96+r15] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[112+r15] +DB 102,15,56,220,208 +$L$aesenclast5: +DB 102,15,56,221,209 + movups xmm0,XMMWORD[((16-112))+r15] + xor esi,eax + ror ebp,7 + add ecx,edx + add ebx,DWORD[56+rsp] + xor esi,ebp + mov edi,ecx + rol ecx,5 + add ebx,esi + xor edi,ebp + ror edx,7 + add ebx,ecx + add eax,DWORD[60+rsp] + xor edi,edx + mov esi,ebx + rol ebx,5 + add eax,edi + ror ecx,7 + add eax,ebx + movups XMMWORD[48+r12*1+r13],xmm2 + mov r8,QWORD[88+rsp] + + add eax,DWORD[r9] + add esi,DWORD[4+r9] + add ecx,DWORD[8+r9] + mov DWORD[r9],eax + add edx,DWORD[12+r9] + mov DWORD[4+r9],esi + add ebp,DWORD[16+r9] + mov DWORD[8+r9],ecx + mov DWORD[12+r9],edx + mov DWORD[16+r9],ebp + movups XMMWORD[r8],xmm2 + movaps xmm6,XMMWORD[((96+0))+rsp] + movaps xmm7,XMMWORD[((96+16))+rsp] + movaps xmm8,XMMWORD[((96+32))+rsp] + movaps xmm9,XMMWORD[((96+48))+rsp] + movaps xmm10,XMMWORD[((96+64))+rsp] + movaps xmm11,XMMWORD[((96+80))+rsp] + movaps xmm12,XMMWORD[((96+96))+rsp] + movaps xmm13,XMMWORD[((96+112))+rsp] + movaps xmm14,XMMWORD[((96+128))+rsp] + movaps xmm15,XMMWORD[((96+144))+rsp] + lea rsi,[264+rsp] + + mov r15,QWORD[rsi] + + mov r14,QWORD[8+rsi] + + mov r13,QWORD[16+rsi] + + mov r12,QWORD[24+rsi] + + mov rbp,QWORD[32+rsi] + + mov rbx,QWORD[40+rsi] + + lea rsp,[48+rsi] + +$L$epilogue_ssse3: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_cbc_sha1_enc_ssse3: + +ALIGN 32 +aesni_cbc_sha1_enc_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_cbc_sha1_enc_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov r10,QWORD[56+rsp] + + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-264))+rsp] + + + + movaps XMMWORD[(96+0)+rsp],xmm6 + movaps XMMWORD[(96+16)+rsp],xmm7 + movaps XMMWORD[(96+32)+rsp],xmm8 + movaps XMMWORD[(96+48)+rsp],xmm9 + movaps XMMWORD[(96+64)+rsp],xmm10 + movaps XMMWORD[(96+80)+rsp],xmm11 + movaps XMMWORD[(96+96)+rsp],xmm12 + movaps XMMWORD[(96+112)+rsp],xmm13 + movaps XMMWORD[(96+128)+rsp],xmm14 + movaps XMMWORD[(96+144)+rsp],xmm15 +$L$prologue_avx: + vzeroall + mov r12,rdi + mov r13,rsi + mov r14,rdx + lea r15,[112+rcx] + vmovdqu xmm12,XMMWORD[r8] + mov QWORD[88+rsp],r8 + shl r14,6 + sub r13,r12 + mov r8d,DWORD[((240-112))+r15] + add r14,r10 + + lea r11,[K_XX_XX] + mov eax,DWORD[r9] + mov ebx,DWORD[4+r9] + mov ecx,DWORD[8+r9] + mov edx,DWORD[12+r9] + mov esi,ebx + mov ebp,DWORD[16+r9] + mov edi,ecx + xor edi,edx + and esi,edi + + vmovdqa xmm6,XMMWORD[64+r11] + vmovdqa xmm10,XMMWORD[r11] + vmovdqu xmm0,XMMWORD[r10] + vmovdqu xmm1,XMMWORD[16+r10] + vmovdqu xmm2,XMMWORD[32+r10] + vmovdqu xmm3,XMMWORD[48+r10] + vpshufb xmm0,xmm0,xmm6 + add r10,64 + vpshufb xmm1,xmm1,xmm6 + vpshufb xmm2,xmm2,xmm6 + vpshufb xmm3,xmm3,xmm6 + vpaddd xmm4,xmm0,xmm10 + vpaddd xmm5,xmm1,xmm10 + vpaddd xmm6,xmm2,xmm10 + vmovdqa XMMWORD[rsp],xmm4 + vmovdqa XMMWORD[16+rsp],xmm5 + vmovdqa XMMWORD[32+rsp],xmm6 + vmovups xmm15,XMMWORD[((-112))+r15] + vmovups xmm14,XMMWORD[((16-112))+r15] + jmp NEAR $L$oop_avx +ALIGN 32 +$L$oop_avx: + shrd ebx,ebx,2 + vmovdqu xmm13,XMMWORD[r12] + vpxor xmm13,xmm13,xmm15 + vpxor xmm12,xmm12,xmm13 + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[((-80))+r15] + xor esi,edx + vpalignr xmm4,xmm1,xmm0,8 + mov edi,eax + add ebp,DWORD[rsp] + vpaddd xmm9,xmm10,xmm3 + xor ebx,ecx + shld eax,eax,5 + vpsrldq xmm8,xmm3,4 + add ebp,esi + and edi,ebx + vpxor xmm4,xmm4,xmm0 + xor ebx,ecx + add ebp,eax + vpxor xmm8,xmm8,xmm2 + shrd eax,eax,7 + xor edi,ecx + mov esi,ebp + add edx,DWORD[4+rsp] + vpxor xmm4,xmm4,xmm8 + xor eax,ebx + shld ebp,ebp,5 + vmovdqa XMMWORD[48+rsp],xmm9 + add edx,edi + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[((-64))+r15] + and esi,eax + vpsrld xmm8,xmm4,31 + xor eax,ebx + add edx,ebp + shrd ebp,ebp,7 + xor esi,ebx + vpslldq xmm9,xmm4,12 + vpaddd xmm4,xmm4,xmm4 + mov edi,edx + add ecx,DWORD[8+rsp] + xor ebp,eax + shld edx,edx,5 + vpor xmm4,xmm4,xmm8 + vpsrld xmm8,xmm9,30 + add ecx,esi + and edi,ebp + xor ebp,eax + add ecx,edx + vpslld xmm9,xmm9,2 + vpxor xmm4,xmm4,xmm8 + shrd edx,edx,7 + xor edi,eax + mov esi,ecx + add ebx,DWORD[12+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[((-48))+r15] + vpxor xmm4,xmm4,xmm9 + xor edx,ebp + shld ecx,ecx,5 + add ebx,edi + and esi,edx + xor edx,ebp + add ebx,ecx + shrd ecx,ecx,7 + xor esi,ebp + vpalignr xmm5,xmm2,xmm1,8 + mov edi,ebx + add eax,DWORD[16+rsp] + vpaddd xmm9,xmm10,xmm4 + xor ecx,edx + shld ebx,ebx,5 + vpsrldq xmm8,xmm4,4 + add eax,esi + and edi,ecx + vpxor xmm5,xmm5,xmm1 + xor ecx,edx + add eax,ebx + vpxor xmm8,xmm8,xmm3 + shrd ebx,ebx,7 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[((-32))+r15] + xor edi,edx + mov esi,eax + add ebp,DWORD[20+rsp] + vpxor xmm5,xmm5,xmm8 + xor ebx,ecx + shld eax,eax,5 + vmovdqa XMMWORD[rsp],xmm9 + add ebp,edi + and esi,ebx + vpsrld xmm8,xmm5,31 + xor ebx,ecx + add ebp,eax + shrd eax,eax,7 + xor esi,ecx + vpslldq xmm9,xmm5,12 + vpaddd xmm5,xmm5,xmm5 + mov edi,ebp + add edx,DWORD[24+rsp] + xor eax,ebx + shld ebp,ebp,5 + vpor xmm5,xmm5,xmm8 + vpsrld xmm8,xmm9,30 + add edx,esi + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[((-16))+r15] + and edi,eax + xor eax,ebx + add edx,ebp + vpslld xmm9,xmm9,2 + vpxor xmm5,xmm5,xmm8 + shrd ebp,ebp,7 + xor edi,ebx + mov esi,edx + add ecx,DWORD[28+rsp] + vpxor xmm5,xmm5,xmm9 + xor ebp,eax + shld edx,edx,5 + vmovdqa xmm10,XMMWORD[16+r11] + add ecx,edi + and esi,ebp + xor ebp,eax + add ecx,edx + shrd edx,edx,7 + xor esi,eax + vpalignr xmm6,xmm3,xmm2,8 + mov edi,ecx + add ebx,DWORD[32+rsp] + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[r15] + vpaddd xmm9,xmm10,xmm5 + xor edx,ebp + shld ecx,ecx,5 + vpsrldq xmm8,xmm5,4 + add ebx,esi + and edi,edx + vpxor xmm6,xmm6,xmm2 + xor edx,ebp + add ebx,ecx + vpxor xmm8,xmm8,xmm4 + shrd ecx,ecx,7 + xor edi,ebp + mov esi,ebx + add eax,DWORD[36+rsp] + vpxor xmm6,xmm6,xmm8 + xor ecx,edx + shld ebx,ebx,5 + vmovdqa XMMWORD[16+rsp],xmm9 + add eax,edi + and esi,ecx + vpsrld xmm8,xmm6,31 + xor ecx,edx + add eax,ebx + shrd ebx,ebx,7 + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[16+r15] + xor esi,edx + vpslldq xmm9,xmm6,12 + vpaddd xmm6,xmm6,xmm6 + mov edi,eax + add ebp,DWORD[40+rsp] + xor ebx,ecx + shld eax,eax,5 + vpor xmm6,xmm6,xmm8 + vpsrld xmm8,xmm9,30 + add ebp,esi + and edi,ebx + xor ebx,ecx + add ebp,eax + vpslld xmm9,xmm9,2 + vpxor xmm6,xmm6,xmm8 + shrd eax,eax,7 + xor edi,ecx + mov esi,ebp + add edx,DWORD[44+rsp] + vpxor xmm6,xmm6,xmm9 + xor eax,ebx + shld ebp,ebp,5 + add edx,edi + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[32+r15] + and esi,eax + xor eax,ebx + add edx,ebp + shrd ebp,ebp,7 + xor esi,ebx + vpalignr xmm7,xmm4,xmm3,8 + mov edi,edx + add ecx,DWORD[48+rsp] + vpaddd xmm9,xmm10,xmm6 + xor ebp,eax + shld edx,edx,5 + vpsrldq xmm8,xmm6,4 + add ecx,esi + and edi,ebp + vpxor xmm7,xmm7,xmm3 + xor ebp,eax + add ecx,edx + vpxor xmm8,xmm8,xmm5 + shrd edx,edx,7 + xor edi,eax + mov esi,ecx + add ebx,DWORD[52+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[48+r15] + vpxor xmm7,xmm7,xmm8 + xor edx,ebp + shld ecx,ecx,5 + vmovdqa XMMWORD[32+rsp],xmm9 + add ebx,edi + and esi,edx + vpsrld xmm8,xmm7,31 + xor edx,ebp + add ebx,ecx + shrd ecx,ecx,7 + xor esi,ebp + vpslldq xmm9,xmm7,12 + vpaddd xmm7,xmm7,xmm7 + mov edi,ebx + add eax,DWORD[56+rsp] + xor ecx,edx + shld ebx,ebx,5 + vpor xmm7,xmm7,xmm8 + vpsrld xmm8,xmm9,30 + add eax,esi + and edi,ecx + xor ecx,edx + add eax,ebx + vpslld xmm9,xmm9,2 + vpxor xmm7,xmm7,xmm8 + shrd ebx,ebx,7 + cmp r8d,11 + jb NEAR $L$vaesenclast6 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[64+r15] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[80+r15] + je NEAR $L$vaesenclast6 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[96+r15] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[112+r15] +$L$vaesenclast6: + vaesenclast xmm12,xmm12,xmm15 + vmovups xmm15,XMMWORD[((-112))+r15] + vmovups xmm14,XMMWORD[((16-112))+r15] + xor edi,edx + mov esi,eax + add ebp,DWORD[60+rsp] + vpxor xmm7,xmm7,xmm9 + xor ebx,ecx + shld eax,eax,5 + add ebp,edi + and esi,ebx + xor ebx,ecx + add ebp,eax + vpalignr xmm8,xmm7,xmm6,8 + vpxor xmm0,xmm0,xmm4 + shrd eax,eax,7 + xor esi,ecx + mov edi,ebp + add edx,DWORD[rsp] + vpxor xmm0,xmm0,xmm1 + xor eax,ebx + shld ebp,ebp,5 + vpaddd xmm9,xmm10,xmm7 + add edx,esi + vmovdqu xmm13,XMMWORD[16+r12] + vpxor xmm13,xmm13,xmm15 + vmovups XMMWORD[r13*1+r12],xmm12 + vpxor xmm12,xmm12,xmm13 + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[((-80))+r15] + and edi,eax + vpxor xmm0,xmm0,xmm8 + xor eax,ebx + add edx,ebp + shrd ebp,ebp,7 + xor edi,ebx + vpsrld xmm8,xmm0,30 + vmovdqa XMMWORD[48+rsp],xmm9 + mov esi,edx + add ecx,DWORD[4+rsp] + xor ebp,eax + shld edx,edx,5 + vpslld xmm0,xmm0,2 + add ecx,edi + and esi,ebp + xor ebp,eax + add ecx,edx + shrd edx,edx,7 + xor esi,eax + mov edi,ecx + add ebx,DWORD[8+rsp] + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[((-64))+r15] + vpor xmm0,xmm0,xmm8 + xor edx,ebp + shld ecx,ecx,5 + add ebx,esi + and edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[12+rsp] + xor edi,ebp + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + vpalignr xmm8,xmm0,xmm7,8 + vpxor xmm1,xmm1,xmm5 + add ebp,DWORD[16+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[((-48))+r15] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + vpxor xmm1,xmm1,xmm2 + add ebp,esi + xor edi,ecx + vpaddd xmm9,xmm10,xmm0 + shrd ebx,ebx,7 + add ebp,eax + vpxor xmm1,xmm1,xmm8 + add edx,DWORD[20+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + vpsrld xmm8,xmm1,30 + vmovdqa XMMWORD[rsp],xmm9 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + vpslld xmm1,xmm1,2 + add ecx,DWORD[24+rsp] + xor esi,eax + mov edi,edx + shld edx,edx,5 + add ecx,esi + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[((-32))+r15] + xor edi,eax + shrd ebp,ebp,7 + add ecx,edx + vpor xmm1,xmm1,xmm8 + add ebx,DWORD[28+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + vpalignr xmm8,xmm1,xmm0,8 + vpxor xmm2,xmm2,xmm6 + add eax,DWORD[32+rsp] + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + vpxor xmm2,xmm2,xmm3 + add eax,esi + xor edi,edx + vpaddd xmm9,xmm10,xmm1 + vmovdqa xmm10,XMMWORD[32+r11] + shrd ecx,ecx,7 + add eax,ebx + vpxor xmm2,xmm2,xmm8 + add ebp,DWORD[36+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[((-16))+r15] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + vpsrld xmm8,xmm2,30 + vmovdqa XMMWORD[16+rsp],xmm9 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + vpslld xmm2,xmm2,2 + add edx,DWORD[40+rsp] + xor esi,ebx + mov edi,ebp + shld ebp,ebp,5 + add edx,esi + xor edi,ebx + shrd eax,eax,7 + add edx,ebp + vpor xmm2,xmm2,xmm8 + add ecx,DWORD[44+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + add ecx,edi + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[r15] + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + vpalignr xmm8,xmm2,xmm1,8 + vpxor xmm3,xmm3,xmm7 + add ebx,DWORD[48+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + vpxor xmm3,xmm3,xmm4 + add ebx,esi + xor edi,ebp + vpaddd xmm9,xmm10,xmm2 + shrd edx,edx,7 + add ebx,ecx + vpxor xmm3,xmm3,xmm8 + add eax,DWORD[52+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + vpsrld xmm8,xmm3,30 + vmovdqa XMMWORD[32+rsp],xmm9 + add eax,edi + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + vpslld xmm3,xmm3,2 + add ebp,DWORD[56+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[16+r15] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + add ebp,esi + xor edi,ecx + shrd ebx,ebx,7 + add ebp,eax + vpor xmm3,xmm3,xmm8 + add edx,DWORD[60+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + vpalignr xmm8,xmm3,xmm2,8 + vpxor xmm4,xmm4,xmm0 + add ecx,DWORD[rsp] + xor esi,eax + mov edi,edx + shld edx,edx,5 + vpxor xmm4,xmm4,xmm5 + add ecx,esi + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[32+r15] + xor edi,eax + vpaddd xmm9,xmm10,xmm3 + shrd ebp,ebp,7 + add ecx,edx + vpxor xmm4,xmm4,xmm8 + add ebx,DWORD[4+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + vpsrld xmm8,xmm4,30 + vmovdqa XMMWORD[48+rsp],xmm9 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + vpslld xmm4,xmm4,2 + add eax,DWORD[8+rsp] + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + add eax,esi + xor edi,edx + shrd ecx,ecx,7 + add eax,ebx + vpor xmm4,xmm4,xmm8 + add ebp,DWORD[12+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[48+r15] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + vpalignr xmm8,xmm4,xmm3,8 + vpxor xmm5,xmm5,xmm1 + add edx,DWORD[16+rsp] + xor esi,ebx + mov edi,ebp + shld ebp,ebp,5 + vpxor xmm5,xmm5,xmm6 + add edx,esi + xor edi,ebx + vpaddd xmm9,xmm10,xmm4 + shrd eax,eax,7 + add edx,ebp + vpxor xmm5,xmm5,xmm8 + add ecx,DWORD[20+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + vpsrld xmm8,xmm5,30 + vmovdqa XMMWORD[rsp],xmm9 + add ecx,edi + cmp r8d,11 + jb NEAR $L$vaesenclast7 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[64+r15] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[80+r15] + je NEAR $L$vaesenclast7 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[96+r15] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[112+r15] +$L$vaesenclast7: + vaesenclast xmm12,xmm12,xmm15 + vmovups xmm15,XMMWORD[((-112))+r15] + vmovups xmm14,XMMWORD[((16-112))+r15] + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + vpslld xmm5,xmm5,2 + add ebx,DWORD[24+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + vpor xmm5,xmm5,xmm8 + add eax,DWORD[28+rsp] + shrd ecx,ecx,7 + mov esi,ebx + xor edi,edx + shld ebx,ebx,5 + add eax,edi + xor esi,ecx + xor ecx,edx + add eax,ebx + vpalignr xmm8,xmm5,xmm4,8 + vpxor xmm6,xmm6,xmm2 + add ebp,DWORD[32+rsp] + vmovdqu xmm13,XMMWORD[32+r12] + vpxor xmm13,xmm13,xmm15 + vmovups XMMWORD[16+r12*1+r13],xmm12 + vpxor xmm12,xmm12,xmm13 + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[((-80))+r15] + and esi,ecx + xor ecx,edx + shrd ebx,ebx,7 + vpxor xmm6,xmm6,xmm7 + mov edi,eax + xor esi,ecx + vpaddd xmm9,xmm10,xmm5 + shld eax,eax,5 + add ebp,esi + vpxor xmm6,xmm6,xmm8 + xor edi,ebx + xor ebx,ecx + add ebp,eax + add edx,DWORD[36+rsp] + vpsrld xmm8,xmm6,30 + vmovdqa XMMWORD[16+rsp],xmm9 + and edi,ebx + xor ebx,ecx + shrd eax,eax,7 + mov esi,ebp + vpslld xmm6,xmm6,2 + xor edi,ebx + shld ebp,ebp,5 + add edx,edi + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[((-64))+r15] + xor esi,eax + xor eax,ebx + add edx,ebp + add ecx,DWORD[40+rsp] + and esi,eax + vpor xmm6,xmm6,xmm8 + xor eax,ebx + shrd ebp,ebp,7 + mov edi,edx + xor esi,eax + shld edx,edx,5 + add ecx,esi + xor edi,ebp + xor ebp,eax + add ecx,edx + add ebx,DWORD[44+rsp] + and edi,ebp + xor ebp,eax + shrd edx,edx,7 + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[((-48))+r15] + mov esi,ecx + xor edi,ebp + shld ecx,ecx,5 + add ebx,edi + xor esi,edx + xor edx,ebp + add ebx,ecx + vpalignr xmm8,xmm6,xmm5,8 + vpxor xmm7,xmm7,xmm3 + add eax,DWORD[48+rsp] + and esi,edx + xor edx,ebp + shrd ecx,ecx,7 + vpxor xmm7,xmm7,xmm0 + mov edi,ebx + xor esi,edx + vpaddd xmm9,xmm10,xmm6 + vmovdqa xmm10,XMMWORD[48+r11] + shld ebx,ebx,5 + add eax,esi + vpxor xmm7,xmm7,xmm8 + xor edi,ecx + xor ecx,edx + add eax,ebx + add ebp,DWORD[52+rsp] + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[((-32))+r15] + vpsrld xmm8,xmm7,30 + vmovdqa XMMWORD[32+rsp],xmm9 + and edi,ecx + xor ecx,edx + shrd ebx,ebx,7 + mov esi,eax + vpslld xmm7,xmm7,2 + xor edi,ecx + shld eax,eax,5 + add ebp,edi + xor esi,ebx + xor ebx,ecx + add ebp,eax + add edx,DWORD[56+rsp] + and esi,ebx + vpor xmm7,xmm7,xmm8 + xor ebx,ecx + shrd eax,eax,7 + mov edi,ebp + xor esi,ebx + shld ebp,ebp,5 + add edx,esi + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[((-16))+r15] + xor edi,eax + xor eax,ebx + add edx,ebp + add ecx,DWORD[60+rsp] + and edi,eax + xor eax,ebx + shrd ebp,ebp,7 + mov esi,edx + xor edi,eax + shld edx,edx,5 + add ecx,edi + xor esi,ebp + xor ebp,eax + add ecx,edx + vpalignr xmm8,xmm7,xmm6,8 + vpxor xmm0,xmm0,xmm4 + add ebx,DWORD[rsp] + and esi,ebp + xor ebp,eax + shrd edx,edx,7 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[r15] + vpxor xmm0,xmm0,xmm1 + mov edi,ecx + xor esi,ebp + vpaddd xmm9,xmm10,xmm7 + shld ecx,ecx,5 + add ebx,esi + vpxor xmm0,xmm0,xmm8 + xor edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[4+rsp] + vpsrld xmm8,xmm0,30 + vmovdqa XMMWORD[48+rsp],xmm9 + and edi,edx + xor edx,ebp + shrd ecx,ecx,7 + mov esi,ebx + vpslld xmm0,xmm0,2 + xor edi,edx + shld ebx,ebx,5 + add eax,edi + xor esi,ecx + xor ecx,edx + add eax,ebx + add ebp,DWORD[8+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[16+r15] + and esi,ecx + vpor xmm0,xmm0,xmm8 + xor ecx,edx + shrd ebx,ebx,7 + mov edi,eax + xor esi,ecx + shld eax,eax,5 + add ebp,esi + xor edi,ebx + xor ebx,ecx + add ebp,eax + add edx,DWORD[12+rsp] + and edi,ebx + xor ebx,ecx + shrd eax,eax,7 + mov esi,ebp + xor edi,ebx + shld ebp,ebp,5 + add edx,edi + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[32+r15] + xor esi,eax + xor eax,ebx + add edx,ebp + vpalignr xmm8,xmm0,xmm7,8 + vpxor xmm1,xmm1,xmm5 + add ecx,DWORD[16+rsp] + and esi,eax + xor eax,ebx + shrd ebp,ebp,7 + vpxor xmm1,xmm1,xmm2 + mov edi,edx + xor esi,eax + vpaddd xmm9,xmm10,xmm0 + shld edx,edx,5 + add ecx,esi + vpxor xmm1,xmm1,xmm8 + xor edi,ebp + xor ebp,eax + add ecx,edx + add ebx,DWORD[20+rsp] + vpsrld xmm8,xmm1,30 + vmovdqa XMMWORD[rsp],xmm9 + and edi,ebp + xor ebp,eax + shrd edx,edx,7 + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[48+r15] + mov esi,ecx + vpslld xmm1,xmm1,2 + xor edi,ebp + shld ecx,ecx,5 + add ebx,edi + xor esi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[24+rsp] + and esi,edx + vpor xmm1,xmm1,xmm8 + xor edx,ebp + shrd ecx,ecx,7 + mov edi,ebx + xor esi,edx + shld ebx,ebx,5 + add eax,esi + xor edi,ecx + xor ecx,edx + add eax,ebx + add ebp,DWORD[28+rsp] + cmp r8d,11 + jb NEAR $L$vaesenclast8 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[64+r15] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[80+r15] + je NEAR $L$vaesenclast8 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[96+r15] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[112+r15] +$L$vaesenclast8: + vaesenclast xmm12,xmm12,xmm15 + vmovups xmm15,XMMWORD[((-112))+r15] + vmovups xmm14,XMMWORD[((16-112))+r15] + and edi,ecx + xor ecx,edx + shrd ebx,ebx,7 + mov esi,eax + xor edi,ecx + shld eax,eax,5 + add ebp,edi + xor esi,ebx + xor ebx,ecx + add ebp,eax + vpalignr xmm8,xmm1,xmm0,8 + vpxor xmm2,xmm2,xmm6 + add edx,DWORD[32+rsp] + and esi,ebx + xor ebx,ecx + shrd eax,eax,7 + vpxor xmm2,xmm2,xmm3 + mov edi,ebp + xor esi,ebx + vpaddd xmm9,xmm10,xmm1 + shld ebp,ebp,5 + add edx,esi + vmovdqu xmm13,XMMWORD[48+r12] + vpxor xmm13,xmm13,xmm15 + vmovups XMMWORD[32+r12*1+r13],xmm12 + vpxor xmm12,xmm12,xmm13 + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[((-80))+r15] + vpxor xmm2,xmm2,xmm8 + xor edi,eax + xor eax,ebx + add edx,ebp + add ecx,DWORD[36+rsp] + vpsrld xmm8,xmm2,30 + vmovdqa XMMWORD[16+rsp],xmm9 + and edi,eax + xor eax,ebx + shrd ebp,ebp,7 + mov esi,edx + vpslld xmm2,xmm2,2 + xor edi,eax + shld edx,edx,5 + add ecx,edi + xor esi,ebp + xor ebp,eax + add ecx,edx + add ebx,DWORD[40+rsp] + and esi,ebp + vpor xmm2,xmm2,xmm8 + xor ebp,eax + shrd edx,edx,7 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[((-64))+r15] + mov edi,ecx + xor esi,ebp + shld ecx,ecx,5 + add ebx,esi + xor edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[44+rsp] + and edi,edx + xor edx,ebp + shrd ecx,ecx,7 + mov esi,ebx + xor edi,edx + shld ebx,ebx,5 + add eax,edi + xor esi,edx + add eax,ebx + vpalignr xmm8,xmm2,xmm1,8 + vpxor xmm3,xmm3,xmm7 + add ebp,DWORD[48+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[((-48))+r15] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + vpxor xmm3,xmm3,xmm4 + add ebp,esi + xor edi,ecx + vpaddd xmm9,xmm10,xmm2 + shrd ebx,ebx,7 + add ebp,eax + vpxor xmm3,xmm3,xmm8 + add edx,DWORD[52+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + vpsrld xmm8,xmm3,30 + vmovdqa XMMWORD[32+rsp],xmm9 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + vpslld xmm3,xmm3,2 + add ecx,DWORD[56+rsp] + xor esi,eax + mov edi,edx + shld edx,edx,5 + add ecx,esi + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[((-32))+r15] + xor edi,eax + shrd ebp,ebp,7 + add ecx,edx + vpor xmm3,xmm3,xmm8 + add ebx,DWORD[60+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[rsp] + vpaddd xmm9,xmm10,xmm3 + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + add eax,esi + vmovdqa XMMWORD[48+rsp],xmm9 + xor edi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[4+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[((-16))+r15] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[8+rsp] + xor esi,ebx + mov edi,ebp + shld ebp,ebp,5 + add edx,esi + xor edi,ebx + shrd eax,eax,7 + add edx,ebp + add ecx,DWORD[12+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + add ecx,edi + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[r15] + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + cmp r10,r14 + je NEAR $L$done_avx + vmovdqa xmm9,XMMWORD[64+r11] + vmovdqa xmm10,XMMWORD[r11] + vmovdqu xmm0,XMMWORD[r10] + vmovdqu xmm1,XMMWORD[16+r10] + vmovdqu xmm2,XMMWORD[32+r10] + vmovdqu xmm3,XMMWORD[48+r10] + vpshufb xmm0,xmm0,xmm9 + add r10,64 + add ebx,DWORD[16+rsp] + xor esi,ebp + vpshufb xmm1,xmm1,xmm9 + mov edi,ecx + shld ecx,ecx,5 + vpaddd xmm8,xmm0,xmm10 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + vmovdqa XMMWORD[rsp],xmm8 + add eax,DWORD[20+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[24+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[16+r15] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + add ebp,esi + xor edi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[28+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + add ecx,DWORD[32+rsp] + xor esi,eax + vpshufb xmm2,xmm2,xmm9 + mov edi,edx + shld edx,edx,5 + vpaddd xmm8,xmm1,xmm10 + add ecx,esi + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[32+r15] + xor edi,eax + shrd ebp,ebp,7 + add ecx,edx + vmovdqa XMMWORD[16+rsp],xmm8 + add ebx,DWORD[36+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[40+rsp] + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + add eax,esi + xor edi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[44+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[48+r15] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[48+rsp] + xor esi,ebx + vpshufb xmm3,xmm3,xmm9 + mov edi,ebp + shld ebp,ebp,5 + vpaddd xmm8,xmm2,xmm10 + add edx,esi + xor edi,ebx + shrd eax,eax,7 + add edx,ebp + vmovdqa XMMWORD[32+rsp],xmm8 + add ecx,DWORD[52+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + add ecx,edi + cmp r8d,11 + jb NEAR $L$vaesenclast9 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[64+r15] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[80+r15] + je NEAR $L$vaesenclast9 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[96+r15] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[112+r15] +$L$vaesenclast9: + vaesenclast xmm12,xmm12,xmm15 + vmovups xmm15,XMMWORD[((-112))+r15] + vmovups xmm14,XMMWORD[((16-112))+r15] + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + add ebx,DWORD[56+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[60+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + shrd ecx,ecx,7 + add eax,ebx + vmovups XMMWORD[48+r12*1+r13],xmm12 + lea r12,[64+r12] + + add eax,DWORD[r9] + add esi,DWORD[4+r9] + add ecx,DWORD[8+r9] + add edx,DWORD[12+r9] + mov DWORD[r9],eax + add ebp,DWORD[16+r9] + mov DWORD[4+r9],esi + mov ebx,esi + mov DWORD[8+r9],ecx + mov edi,ecx + mov DWORD[12+r9],edx + xor edi,edx + mov DWORD[16+r9],ebp + and esi,edi + jmp NEAR $L$oop_avx + +$L$done_avx: + add ebx,DWORD[16+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[20+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[24+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[16+r15] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + add ebp,esi + xor edi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[28+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + add ecx,DWORD[32+rsp] + xor esi,eax + mov edi,edx + shld edx,edx,5 + add ecx,esi + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[32+r15] + xor edi,eax + shrd ebp,ebp,7 + add ecx,edx + add ebx,DWORD[36+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[40+rsp] + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + add eax,esi + xor edi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[44+rsp] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[48+r15] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[48+rsp] + xor esi,ebx + mov edi,ebp + shld ebp,ebp,5 + add edx,esi + xor edi,ebx + shrd eax,eax,7 + add edx,ebp + add ecx,DWORD[52+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + add ecx,edi + cmp r8d,11 + jb NEAR $L$vaesenclast10 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[64+r15] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[80+r15] + je NEAR $L$vaesenclast10 + vaesenc xmm12,xmm12,xmm15 + vmovups xmm14,XMMWORD[96+r15] + vaesenc xmm12,xmm12,xmm14 + vmovups xmm15,XMMWORD[112+r15] +$L$vaesenclast10: + vaesenclast xmm12,xmm12,xmm15 + vmovups xmm15,XMMWORD[((-112))+r15] + vmovups xmm14,XMMWORD[((16-112))+r15] + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + add ebx,DWORD[56+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[60+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + shrd ecx,ecx,7 + add eax,ebx + vmovups XMMWORD[48+r12*1+r13],xmm12 + mov r8,QWORD[88+rsp] + + add eax,DWORD[r9] + add esi,DWORD[4+r9] + add ecx,DWORD[8+r9] + mov DWORD[r9],eax + add edx,DWORD[12+r9] + mov DWORD[4+r9],esi + add ebp,DWORD[16+r9] + mov DWORD[8+r9],ecx + mov DWORD[12+r9],edx + mov DWORD[16+r9],ebp + vmovups XMMWORD[r8],xmm12 + vzeroall + movaps xmm6,XMMWORD[((96+0))+rsp] + movaps xmm7,XMMWORD[((96+16))+rsp] + movaps xmm8,XMMWORD[((96+32))+rsp] + movaps xmm9,XMMWORD[((96+48))+rsp] + movaps xmm10,XMMWORD[((96+64))+rsp] + movaps xmm11,XMMWORD[((96+80))+rsp] + movaps xmm12,XMMWORD[((96+96))+rsp] + movaps xmm13,XMMWORD[((96+112))+rsp] + movaps xmm14,XMMWORD[((96+128))+rsp] + movaps xmm15,XMMWORD[((96+144))+rsp] + lea rsi,[264+rsp] + + mov r15,QWORD[rsi] + + mov r14,QWORD[8+rsi] + + mov r13,QWORD[16+rsi] + + mov r12,QWORD[24+rsi] + + mov rbp,QWORD[32+rsi] + + mov rbx,QWORD[40+rsi] + + lea rsp,[48+rsi] + +$L$epilogue_avx: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_cbc_sha1_enc_avx: +ALIGN 64 +K_XX_XX: + DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 + DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 + DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc + DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 + +DB 65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115 +DB 116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52 +DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 +DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 +DB 114,103,62,0 +ALIGN 64 + +ALIGN 32 +aesni_cbc_sha1_enc_shaext: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_cbc_sha1_enc_shaext: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov r10,QWORD[56+rsp] + lea rsp,[((-168))+rsp] + movaps XMMWORD[(-8-160)+rax],xmm6 + movaps XMMWORD[(-8-144)+rax],xmm7 + movaps XMMWORD[(-8-128)+rax],xmm8 + movaps XMMWORD[(-8-112)+rax],xmm9 + movaps XMMWORD[(-8-96)+rax],xmm10 + movaps XMMWORD[(-8-80)+rax],xmm11 + movaps XMMWORD[(-8-64)+rax],xmm12 + movaps XMMWORD[(-8-48)+rax],xmm13 + movaps XMMWORD[(-8-32)+rax],xmm14 + movaps XMMWORD[(-8-16)+rax],xmm15 +$L$prologue_shaext: + movdqu xmm8,XMMWORD[r9] + movd xmm9,DWORD[16+r9] + movdqa xmm7,XMMWORD[((K_XX_XX+80))] + + mov r11d,DWORD[240+rcx] + sub rsi,rdi + movups xmm15,XMMWORD[rcx] + movups xmm2,XMMWORD[r8] + movups xmm0,XMMWORD[16+rcx] + lea rcx,[112+rcx] + + pshufd xmm8,xmm8,27 + pshufd xmm9,xmm9,27 + jmp NEAR $L$oop_shaext + +ALIGN 16 +$L$oop_shaext: + movups xmm14,XMMWORD[rdi] + xorps xmm14,xmm15 + xorps xmm2,xmm14 + movups xmm1,XMMWORD[((-80))+rcx] +DB 102,15,56,220,208 + movdqu xmm3,XMMWORD[r10] + movdqa xmm12,xmm9 +DB 102,15,56,0,223 + movdqu xmm4,XMMWORD[16+r10] + movdqa xmm11,xmm8 + movups xmm0,XMMWORD[((-64))+rcx] +DB 102,15,56,220,209 +DB 102,15,56,0,231 + + paddd xmm9,xmm3 + movdqu xmm5,XMMWORD[32+r10] + lea r10,[64+r10] + pxor xmm3,xmm12 + movups xmm1,XMMWORD[((-48))+rcx] +DB 102,15,56,220,208 + pxor xmm3,xmm12 + movdqa xmm10,xmm8 +DB 102,15,56,0,239 +DB 69,15,58,204,193,0 +DB 68,15,56,200,212 + movups xmm0,XMMWORD[((-32))+rcx] +DB 102,15,56,220,209 +DB 15,56,201,220 + movdqu xmm6,XMMWORD[((-16))+r10] + movdqa xmm9,xmm8 +DB 102,15,56,0,247 + movups xmm1,XMMWORD[((-16))+rcx] +DB 102,15,56,220,208 +DB 69,15,58,204,194,0 +DB 68,15,56,200,205 + pxor xmm3,xmm5 +DB 15,56,201,229 + movups xmm0,XMMWORD[rcx] +DB 102,15,56,220,209 + movdqa xmm10,xmm8 +DB 69,15,58,204,193,0 +DB 68,15,56,200,214 + movups xmm1,XMMWORD[16+rcx] +DB 102,15,56,220,208 +DB 15,56,202,222 + pxor xmm4,xmm6 +DB 15,56,201,238 + movups xmm0,XMMWORD[32+rcx] +DB 102,15,56,220,209 + movdqa xmm9,xmm8 +DB 69,15,58,204,194,0 +DB 68,15,56,200,203 + movups xmm1,XMMWORD[48+rcx] +DB 102,15,56,220,208 +DB 15,56,202,227 + pxor xmm5,xmm3 +DB 15,56,201,243 + cmp r11d,11 + jb NEAR $L$aesenclast11 + movups xmm0,XMMWORD[64+rcx] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[80+rcx] +DB 102,15,56,220,208 + je NEAR $L$aesenclast11 + movups xmm0,XMMWORD[96+rcx] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[112+rcx] +DB 102,15,56,220,208 +$L$aesenclast11: +DB 102,15,56,221,209 + movups xmm0,XMMWORD[((16-112))+rcx] + movdqa xmm10,xmm8 +DB 69,15,58,204,193,0 +DB 68,15,56,200,212 + movups xmm14,XMMWORD[16+rdi] + xorps xmm14,xmm15 + movups XMMWORD[rdi*1+rsi],xmm2 + xorps xmm2,xmm14 + movups xmm1,XMMWORD[((-80))+rcx] +DB 102,15,56,220,208 +DB 15,56,202,236 + pxor xmm6,xmm4 +DB 15,56,201,220 + movups xmm0,XMMWORD[((-64))+rcx] +DB 102,15,56,220,209 + movdqa xmm9,xmm8 +DB 69,15,58,204,194,1 +DB 68,15,56,200,205 + movups xmm1,XMMWORD[((-48))+rcx] +DB 102,15,56,220,208 +DB 15,56,202,245 + pxor xmm3,xmm5 +DB 15,56,201,229 + movups xmm0,XMMWORD[((-32))+rcx] +DB 102,15,56,220,209 + movdqa xmm10,xmm8 +DB 69,15,58,204,193,1 +DB 68,15,56,200,214 + movups xmm1,XMMWORD[((-16))+rcx] +DB 102,15,56,220,208 +DB 15,56,202,222 + pxor xmm4,xmm6 +DB 15,56,201,238 + movups xmm0,XMMWORD[rcx] +DB 102,15,56,220,209 + movdqa xmm9,xmm8 +DB 69,15,58,204,194,1 +DB 68,15,56,200,203 + movups xmm1,XMMWORD[16+rcx] +DB 102,15,56,220,208 +DB 15,56,202,227 + pxor xmm5,xmm3 +DB 15,56,201,243 + movups xmm0,XMMWORD[32+rcx] +DB 102,15,56,220,209 + movdqa xmm10,xmm8 +DB 69,15,58,204,193,1 +DB 68,15,56,200,212 + movups xmm1,XMMWORD[48+rcx] +DB 102,15,56,220,208 +DB 15,56,202,236 + pxor xmm6,xmm4 +DB 15,56,201,220 + cmp r11d,11 + jb NEAR $L$aesenclast12 + movups xmm0,XMMWORD[64+rcx] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[80+rcx] +DB 102,15,56,220,208 + je NEAR $L$aesenclast12 + movups xmm0,XMMWORD[96+rcx] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[112+rcx] +DB 102,15,56,220,208 +$L$aesenclast12: +DB 102,15,56,221,209 + movups xmm0,XMMWORD[((16-112))+rcx] + movdqa xmm9,xmm8 +DB 69,15,58,204,194,1 +DB 68,15,56,200,205 + movups xmm14,XMMWORD[32+rdi] + xorps xmm14,xmm15 + movups XMMWORD[16+rdi*1+rsi],xmm2 + xorps xmm2,xmm14 + movups xmm1,XMMWORD[((-80))+rcx] +DB 102,15,56,220,208 +DB 15,56,202,245 + pxor xmm3,xmm5 +DB 15,56,201,229 + movups xmm0,XMMWORD[((-64))+rcx] +DB 102,15,56,220,209 + movdqa xmm10,xmm8 +DB 69,15,58,204,193,2 +DB 68,15,56,200,214 + movups xmm1,XMMWORD[((-48))+rcx] +DB 102,15,56,220,208 +DB 15,56,202,222 + pxor xmm4,xmm6 +DB 15,56,201,238 + movups xmm0,XMMWORD[((-32))+rcx] +DB 102,15,56,220,209 + movdqa xmm9,xmm8 +DB 69,15,58,204,194,2 +DB 68,15,56,200,203 + movups xmm1,XMMWORD[((-16))+rcx] +DB 102,15,56,220,208 +DB 15,56,202,227 + pxor xmm5,xmm3 +DB 15,56,201,243 + movups xmm0,XMMWORD[rcx] +DB 102,15,56,220,209 + movdqa xmm10,xmm8 +DB 69,15,58,204,193,2 +DB 68,15,56,200,212 + movups xmm1,XMMWORD[16+rcx] +DB 102,15,56,220,208 +DB 15,56,202,236 + pxor xmm6,xmm4 +DB 15,56,201,220 + movups xmm0,XMMWORD[32+rcx] +DB 102,15,56,220,209 + movdqa xmm9,xmm8 +DB 69,15,58,204,194,2 +DB 68,15,56,200,205 + movups xmm1,XMMWORD[48+rcx] +DB 102,15,56,220,208 +DB 15,56,202,245 + pxor xmm3,xmm5 +DB 15,56,201,229 + cmp r11d,11 + jb NEAR $L$aesenclast13 + movups xmm0,XMMWORD[64+rcx] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[80+rcx] +DB 102,15,56,220,208 + je NEAR $L$aesenclast13 + movups xmm0,XMMWORD[96+rcx] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[112+rcx] +DB 102,15,56,220,208 +$L$aesenclast13: +DB 102,15,56,221,209 + movups xmm0,XMMWORD[((16-112))+rcx] + movdqa xmm10,xmm8 +DB 69,15,58,204,193,2 +DB 68,15,56,200,214 + movups xmm14,XMMWORD[48+rdi] + xorps xmm14,xmm15 + movups XMMWORD[32+rdi*1+rsi],xmm2 + xorps xmm2,xmm14 + movups xmm1,XMMWORD[((-80))+rcx] +DB 102,15,56,220,208 +DB 15,56,202,222 + pxor xmm4,xmm6 +DB 15,56,201,238 + movups xmm0,XMMWORD[((-64))+rcx] +DB 102,15,56,220,209 + movdqa xmm9,xmm8 +DB 69,15,58,204,194,3 +DB 68,15,56,200,203 + movups xmm1,XMMWORD[((-48))+rcx] +DB 102,15,56,220,208 +DB 15,56,202,227 + pxor xmm5,xmm3 +DB 15,56,201,243 + movups xmm0,XMMWORD[((-32))+rcx] +DB 102,15,56,220,209 + movdqa xmm10,xmm8 +DB 69,15,58,204,193,3 +DB 68,15,56,200,212 +DB 15,56,202,236 + pxor xmm6,xmm4 + movups xmm1,XMMWORD[((-16))+rcx] +DB 102,15,56,220,208 + movdqa xmm9,xmm8 +DB 69,15,58,204,194,3 +DB 68,15,56,200,205 +DB 15,56,202,245 + movups xmm0,XMMWORD[rcx] +DB 102,15,56,220,209 + movdqa xmm5,xmm12 + movdqa xmm10,xmm8 +DB 69,15,58,204,193,3 +DB 68,15,56,200,214 + movups xmm1,XMMWORD[16+rcx] +DB 102,15,56,220,208 + movdqa xmm9,xmm8 +DB 69,15,58,204,194,3 +DB 68,15,56,200,205 + movups xmm0,XMMWORD[32+rcx] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[48+rcx] +DB 102,15,56,220,208 + cmp r11d,11 + jb NEAR $L$aesenclast14 + movups xmm0,XMMWORD[64+rcx] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[80+rcx] +DB 102,15,56,220,208 + je NEAR $L$aesenclast14 + movups xmm0,XMMWORD[96+rcx] +DB 102,15,56,220,209 + movups xmm1,XMMWORD[112+rcx] +DB 102,15,56,220,208 +$L$aesenclast14: +DB 102,15,56,221,209 + movups xmm0,XMMWORD[((16-112))+rcx] + dec rdx + + paddd xmm8,xmm11 + movups XMMWORD[48+rdi*1+rsi],xmm2 + lea rdi,[64+rdi] + jnz NEAR $L$oop_shaext + + pshufd xmm8,xmm8,27 + pshufd xmm9,xmm9,27 + movups XMMWORD[r8],xmm2 + movdqu XMMWORD[r9],xmm8 + movd DWORD[16+r9],xmm9 + movaps xmm6,XMMWORD[((-8-160))+rax] + movaps xmm7,XMMWORD[((-8-144))+rax] + movaps xmm8,XMMWORD[((-8-128))+rax] + movaps xmm9,XMMWORD[((-8-112))+rax] + movaps xmm10,XMMWORD[((-8-96))+rax] + movaps xmm11,XMMWORD[((-8-80))+rax] + movaps xmm12,XMMWORD[((-8-64))+rax] + movaps xmm13,XMMWORD[((-8-48))+rax] + movaps xmm14,XMMWORD[((-8-32))+rax] + movaps xmm15,XMMWORD[((-8-16))+rax] + mov rsp,rax +$L$epilogue_shaext: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_cbc_sha1_enc_shaext: +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +ssse3_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + lea r10,[aesni_cbc_sha1_enc_shaext] + cmp rbx,r10 + jb NEAR $L$seh_no_shaext + + lea rsi,[rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + lea rax,[168+rax] + jmp NEAR $L$common_seh_tail +$L$seh_no_shaext: + lea rsi,[96+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + lea rax,[264+rax] + + mov r15,QWORD[rax] + mov r14,QWORD[8+rax] + mov r13,QWORD[16+rax] + mov r12,QWORD[24+rax] + mov rbp,QWORD[32+rax] + mov rbx,QWORD[40+rax] + lea rax,[48+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase + DD $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase + DD $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase + DD $L$SEH_begin_aesni_cbc_sha1_enc_avx wrt ..imagebase + DD $L$SEH_end_aesni_cbc_sha1_enc_avx wrt ..imagebase + DD $L$SEH_info_aesni_cbc_sha1_enc_avx wrt ..imagebase + DD $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase + DD $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase + DD $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_aesni_cbc_sha1_enc_ssse3: +DB 9,0,0,0 + DD ssse3_handler wrt ..imagebase + DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase +$L$SEH_info_aesni_cbc_sha1_enc_avx: +DB 9,0,0,0 + DD ssse3_handler wrt ..imagebase + DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase +$L$SEH_info_aesni_cbc_sha1_enc_shaext: +DB 9,0,0,0 + DD ssse3_handler wrt ..imagebase + DD $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-sha256-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-sha256-x86_64.asm new file mode 100644 index 0000000..17e571d --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-sha256-x86_64.asm @@ -0,0 +1,4708 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +EXTERN OPENSSL_ia32cap_P +global aesni_cbc_sha256_enc + +ALIGN 16 +aesni_cbc_sha256_enc: + + lea r11,[OPENSSL_ia32cap_P] + mov eax,1 + cmp rcx,0 + je NEAR $L$probe + mov eax,DWORD[r11] + mov r10,QWORD[4+r11] + bt r10,61 + jc NEAR aesni_cbc_sha256_enc_shaext + mov r11,r10 + shr r11,32 + + test r10d,2048 + jnz NEAR aesni_cbc_sha256_enc_xop + and r11d,296 + cmp r11d,296 + je NEAR aesni_cbc_sha256_enc_avx2 + and r10d,268435456 + jnz NEAR aesni_cbc_sha256_enc_avx + ud2 + xor eax,eax + cmp rcx,0 + je NEAR $L$probe + ud2 +$L$probe: + DB 0F3h,0C3h ;repret + + + +ALIGN 64 + +K256: + DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 + DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 + DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 + DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 + DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 + DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 + DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 + DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 + DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc + DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc + DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da + DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da + DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 + DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 + DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 + DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 + DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 + DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 + DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 + DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 + DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 + DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 + DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 + DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 + DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 + DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 + DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 + DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 + DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 + DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 + DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 + DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 + + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f + DD 0,0,0,0,0,0,0,0,-1,-1,-1,-1 + DD 0,0,0,0,0,0,0,0 +DB 65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54 +DB 32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95 +DB 54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98 +DB 121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108 +DB 46,111,114,103,62,0 +ALIGN 64 + +ALIGN 64 +aesni_cbc_sha256_enc_xop: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_cbc_sha256_enc_xop: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + +$L$xop_shortcut: + mov r10,QWORD[56+rsp] + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,288 + and rsp,-64 + + shl rdx,6 + sub rsi,rdi + sub r10,rdi + add rdx,rdi + + + mov QWORD[((64+8))+rsp],rsi + mov QWORD[((64+16))+rsp],rdx + + mov QWORD[((64+32))+rsp],r8 + mov QWORD[((64+40))+rsp],r9 + mov QWORD[((64+48))+rsp],r10 + mov QWORD[120+rsp],rax + + movaps XMMWORD[128+rsp],xmm6 + movaps XMMWORD[144+rsp],xmm7 + movaps XMMWORD[160+rsp],xmm8 + movaps XMMWORD[176+rsp],xmm9 + movaps XMMWORD[192+rsp],xmm10 + movaps XMMWORD[208+rsp],xmm11 + movaps XMMWORD[224+rsp],xmm12 + movaps XMMWORD[240+rsp],xmm13 + movaps XMMWORD[256+rsp],xmm14 + movaps XMMWORD[272+rsp],xmm15 +$L$prologue_xop: + vzeroall + + mov r12,rdi + lea rdi,[128+rcx] + lea r13,[((K256+544))] + mov r14d,DWORD[((240-128))+rdi] + mov r15,r9 + mov rsi,r10 + vmovdqu xmm8,XMMWORD[r8] + sub r14,9 + + mov eax,DWORD[r15] + mov ebx,DWORD[4+r15] + mov ecx,DWORD[8+r15] + mov edx,DWORD[12+r15] + mov r8d,DWORD[16+r15] + mov r9d,DWORD[20+r15] + mov r10d,DWORD[24+r15] + mov r11d,DWORD[28+r15] + + vmovdqa xmm14,XMMWORD[r14*8+r13] + vmovdqa xmm13,XMMWORD[16+r14*8+r13] + vmovdqa xmm12,XMMWORD[32+r14*8+r13] + vmovdqu xmm10,XMMWORD[((0-128))+rdi] + jmp NEAR $L$loop_xop +ALIGN 16 +$L$loop_xop: + vmovdqa xmm7,XMMWORD[((K256+512))] + vmovdqu xmm0,XMMWORD[r12*1+rsi] + vmovdqu xmm1,XMMWORD[16+r12*1+rsi] + vmovdqu xmm2,XMMWORD[32+r12*1+rsi] + vmovdqu xmm3,XMMWORD[48+r12*1+rsi] + vpshufb xmm0,xmm0,xmm7 + lea rbp,[K256] + vpshufb xmm1,xmm1,xmm7 + vpshufb xmm2,xmm2,xmm7 + vpaddd xmm4,xmm0,XMMWORD[rbp] + vpshufb xmm3,xmm3,xmm7 + vpaddd xmm5,xmm1,XMMWORD[32+rbp] + vpaddd xmm6,xmm2,XMMWORD[64+rbp] + vpaddd xmm7,xmm3,XMMWORD[96+rbp] + vmovdqa XMMWORD[rsp],xmm4 + mov r14d,eax + vmovdqa XMMWORD[16+rsp],xmm5 + mov esi,ebx + vmovdqa XMMWORD[32+rsp],xmm6 + xor esi,ecx + vmovdqa XMMWORD[48+rsp],xmm7 + mov r13d,r8d + jmp NEAR $L$xop_00_47 + +ALIGN 16 +$L$xop_00_47: + sub rbp,-16*2*4 + vmovdqu xmm9,XMMWORD[r12] + mov QWORD[((64+0))+rsp],r12 + vpalignr xmm4,xmm1,xmm0,4 + ror r13d,14 + mov eax,r14d + vpalignr xmm7,xmm3,xmm2,4 + mov r12d,r9d + xor r13d,r8d +DB 143,232,120,194,236,14 + ror r14d,9 + xor r12d,r10d + vpsrld xmm4,xmm4,3 + ror r13d,5 + xor r14d,eax + vpaddd xmm0,xmm0,xmm7 + and r12d,r8d + vpxor xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((16-128))+rdi] + xor r13d,r8d + add r11d,DWORD[rsp] + mov r15d,eax +DB 143,232,120,194,245,11 + ror r14d,11 + xor r12d,r10d + vpxor xmm4,xmm4,xmm5 + xor r15d,ebx + ror r13d,6 + add r11d,r12d + and esi,r15d +DB 143,232,120,194,251,13 + xor r14d,eax + add r11d,r13d + vpxor xmm4,xmm4,xmm6 + xor esi,ebx + add edx,r11d + vpsrld xmm6,xmm3,10 + ror r14d,2 + add r11d,esi + vpaddd xmm0,xmm0,xmm4 + mov r13d,edx + add r14d,r11d +DB 143,232,120,194,239,2 + ror r13d,14 + mov r11d,r14d + vpxor xmm7,xmm7,xmm6 + mov r12d,r8d + xor r13d,edx + ror r14d,9 + xor r12d,r9d + vpxor xmm7,xmm7,xmm5 + ror r13d,5 + xor r14d,r11d + and r12d,edx + vpxor xmm9,xmm9,xmm8 + xor r13d,edx + vpsrldq xmm7,xmm7,8 + add r10d,DWORD[4+rsp] + mov esi,r11d + ror r14d,11 + xor r12d,r9d + vpaddd xmm0,xmm0,xmm7 + xor esi,eax + ror r13d,6 + add r10d,r12d + and r15d,esi +DB 143,232,120,194,248,13 + xor r14d,r11d + add r10d,r13d + vpsrld xmm6,xmm0,10 + xor r15d,eax + add ecx,r10d +DB 143,232,120,194,239,2 + ror r14d,2 + add r10d,r15d + vpxor xmm7,xmm7,xmm6 + mov r13d,ecx + add r14d,r10d + ror r13d,14 + mov r10d,r14d + vpxor xmm7,xmm7,xmm5 + mov r12d,edx + xor r13d,ecx + ror r14d,9 + xor r12d,r8d + vpslldq xmm7,xmm7,8 + ror r13d,5 + xor r14d,r10d + and r12d,ecx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((32-128))+rdi] + xor r13d,ecx + vpaddd xmm0,xmm0,xmm7 + add r9d,DWORD[8+rsp] + mov r15d,r10d + ror r14d,11 + xor r12d,r8d + vpaddd xmm6,xmm0,XMMWORD[rbp] + xor r15d,r11d + ror r13d,6 + add r9d,r12d + and esi,r15d + xor r14d,r10d + add r9d,r13d + xor esi,r11d + add ebx,r9d + ror r14d,2 + add r9d,esi + mov r13d,ebx + add r14d,r9d + ror r13d,14 + mov r9d,r14d + mov r12d,ecx + xor r13d,ebx + ror r14d,9 + xor r12d,edx + ror r13d,5 + xor r14d,r9d + and r12d,ebx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((48-128))+rdi] + xor r13d,ebx + add r8d,DWORD[12+rsp] + mov esi,r9d + ror r14d,11 + xor r12d,edx + xor esi,r10d + ror r13d,6 + add r8d,r12d + and r15d,esi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + add eax,r8d + ror r14d,2 + add r8d,r15d + mov r13d,eax + add r14d,r8d + vmovdqa XMMWORD[rsp],xmm6 + vpalignr xmm4,xmm2,xmm1,4 + ror r13d,14 + mov r8d,r14d + vpalignr xmm7,xmm0,xmm3,4 + mov r12d,ebx + xor r13d,eax +DB 143,232,120,194,236,14 + ror r14d,9 + xor r12d,ecx + vpsrld xmm4,xmm4,3 + ror r13d,5 + xor r14d,r8d + vpaddd xmm1,xmm1,xmm7 + and r12d,eax + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((64-128))+rdi] + xor r13d,eax + add edx,DWORD[16+rsp] + mov r15d,r8d +DB 143,232,120,194,245,11 + ror r14d,11 + xor r12d,ecx + vpxor xmm4,xmm4,xmm5 + xor r15d,r9d + ror r13d,6 + add edx,r12d + and esi,r15d +DB 143,232,120,194,248,13 + xor r14d,r8d + add edx,r13d + vpxor xmm4,xmm4,xmm6 + xor esi,r9d + add r11d,edx + vpsrld xmm6,xmm0,10 + ror r14d,2 + add edx,esi + vpaddd xmm1,xmm1,xmm4 + mov r13d,r11d + add r14d,edx +DB 143,232,120,194,239,2 + ror r13d,14 + mov edx,r14d + vpxor xmm7,xmm7,xmm6 + mov r12d,eax + xor r13d,r11d + ror r14d,9 + xor r12d,ebx + vpxor xmm7,xmm7,xmm5 + ror r13d,5 + xor r14d,edx + and r12d,r11d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((80-128))+rdi] + xor r13d,r11d + vpsrldq xmm7,xmm7,8 + add ecx,DWORD[20+rsp] + mov esi,edx + ror r14d,11 + xor r12d,ebx + vpaddd xmm1,xmm1,xmm7 + xor esi,r8d + ror r13d,6 + add ecx,r12d + and r15d,esi +DB 143,232,120,194,249,13 + xor r14d,edx + add ecx,r13d + vpsrld xmm6,xmm1,10 + xor r15d,r8d + add r10d,ecx +DB 143,232,120,194,239,2 + ror r14d,2 + add ecx,r15d + vpxor xmm7,xmm7,xmm6 + mov r13d,r10d + add r14d,ecx + ror r13d,14 + mov ecx,r14d + vpxor xmm7,xmm7,xmm5 + mov r12d,r11d + xor r13d,r10d + ror r14d,9 + xor r12d,eax + vpslldq xmm7,xmm7,8 + ror r13d,5 + xor r14d,ecx + and r12d,r10d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((96-128))+rdi] + xor r13d,r10d + vpaddd xmm1,xmm1,xmm7 + add ebx,DWORD[24+rsp] + mov r15d,ecx + ror r14d,11 + xor r12d,eax + vpaddd xmm6,xmm1,XMMWORD[32+rbp] + xor r15d,edx + ror r13d,6 + add ebx,r12d + and esi,r15d + xor r14d,ecx + add ebx,r13d + xor esi,edx + add r9d,ebx + ror r14d,2 + add ebx,esi + mov r13d,r9d + add r14d,ebx + ror r13d,14 + mov ebx,r14d + mov r12d,r10d + xor r13d,r9d + ror r14d,9 + xor r12d,r11d + ror r13d,5 + xor r14d,ebx + and r12d,r9d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((112-128))+rdi] + xor r13d,r9d + add eax,DWORD[28+rsp] + mov esi,ebx + ror r14d,11 + xor r12d,r11d + xor esi,ecx + ror r13d,6 + add eax,r12d + and r15d,esi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + add r8d,eax + ror r14d,2 + add eax,r15d + mov r13d,r8d + add r14d,eax + vmovdqa XMMWORD[16+rsp],xmm6 + vpalignr xmm4,xmm3,xmm2,4 + ror r13d,14 + mov eax,r14d + vpalignr xmm7,xmm1,xmm0,4 + mov r12d,r9d + xor r13d,r8d +DB 143,232,120,194,236,14 + ror r14d,9 + xor r12d,r10d + vpsrld xmm4,xmm4,3 + ror r13d,5 + xor r14d,eax + vpaddd xmm2,xmm2,xmm7 + and r12d,r8d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((128-128))+rdi] + xor r13d,r8d + add r11d,DWORD[32+rsp] + mov r15d,eax +DB 143,232,120,194,245,11 + ror r14d,11 + xor r12d,r10d + vpxor xmm4,xmm4,xmm5 + xor r15d,ebx + ror r13d,6 + add r11d,r12d + and esi,r15d +DB 143,232,120,194,249,13 + xor r14d,eax + add r11d,r13d + vpxor xmm4,xmm4,xmm6 + xor esi,ebx + add edx,r11d + vpsrld xmm6,xmm1,10 + ror r14d,2 + add r11d,esi + vpaddd xmm2,xmm2,xmm4 + mov r13d,edx + add r14d,r11d +DB 143,232,120,194,239,2 + ror r13d,14 + mov r11d,r14d + vpxor xmm7,xmm7,xmm6 + mov r12d,r8d + xor r13d,edx + ror r14d,9 + xor r12d,r9d + vpxor xmm7,xmm7,xmm5 + ror r13d,5 + xor r14d,r11d + and r12d,edx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((144-128))+rdi] + xor r13d,edx + vpsrldq xmm7,xmm7,8 + add r10d,DWORD[36+rsp] + mov esi,r11d + ror r14d,11 + xor r12d,r9d + vpaddd xmm2,xmm2,xmm7 + xor esi,eax + ror r13d,6 + add r10d,r12d + and r15d,esi +DB 143,232,120,194,250,13 + xor r14d,r11d + add r10d,r13d + vpsrld xmm6,xmm2,10 + xor r15d,eax + add ecx,r10d +DB 143,232,120,194,239,2 + ror r14d,2 + add r10d,r15d + vpxor xmm7,xmm7,xmm6 + mov r13d,ecx + add r14d,r10d + ror r13d,14 + mov r10d,r14d + vpxor xmm7,xmm7,xmm5 + mov r12d,edx + xor r13d,ecx + ror r14d,9 + xor r12d,r8d + vpslldq xmm7,xmm7,8 + ror r13d,5 + xor r14d,r10d + and r12d,ecx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((160-128))+rdi] + xor r13d,ecx + vpaddd xmm2,xmm2,xmm7 + add r9d,DWORD[40+rsp] + mov r15d,r10d + ror r14d,11 + xor r12d,r8d + vpaddd xmm6,xmm2,XMMWORD[64+rbp] + xor r15d,r11d + ror r13d,6 + add r9d,r12d + and esi,r15d + xor r14d,r10d + add r9d,r13d + xor esi,r11d + add ebx,r9d + ror r14d,2 + add r9d,esi + mov r13d,ebx + add r14d,r9d + ror r13d,14 + mov r9d,r14d + mov r12d,ecx + xor r13d,ebx + ror r14d,9 + xor r12d,edx + ror r13d,5 + xor r14d,r9d + and r12d,ebx + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((176-128))+rdi] + xor r13d,ebx + add r8d,DWORD[44+rsp] + mov esi,r9d + ror r14d,11 + xor r12d,edx + xor esi,r10d + ror r13d,6 + add r8d,r12d + and r15d,esi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + add eax,r8d + ror r14d,2 + add r8d,r15d + mov r13d,eax + add r14d,r8d + vmovdqa XMMWORD[32+rsp],xmm6 + vpalignr xmm4,xmm0,xmm3,4 + ror r13d,14 + mov r8d,r14d + vpalignr xmm7,xmm2,xmm1,4 + mov r12d,ebx + xor r13d,eax +DB 143,232,120,194,236,14 + ror r14d,9 + xor r12d,ecx + vpsrld xmm4,xmm4,3 + ror r13d,5 + xor r14d,r8d + vpaddd xmm3,xmm3,xmm7 + and r12d,eax + vpand xmm8,xmm11,xmm12 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((192-128))+rdi] + xor r13d,eax + add edx,DWORD[48+rsp] + mov r15d,r8d +DB 143,232,120,194,245,11 + ror r14d,11 + xor r12d,ecx + vpxor xmm4,xmm4,xmm5 + xor r15d,r9d + ror r13d,6 + add edx,r12d + and esi,r15d +DB 143,232,120,194,250,13 + xor r14d,r8d + add edx,r13d + vpxor xmm4,xmm4,xmm6 + xor esi,r9d + add r11d,edx + vpsrld xmm6,xmm2,10 + ror r14d,2 + add edx,esi + vpaddd xmm3,xmm3,xmm4 + mov r13d,r11d + add r14d,edx +DB 143,232,120,194,239,2 + ror r13d,14 + mov edx,r14d + vpxor xmm7,xmm7,xmm6 + mov r12d,eax + xor r13d,r11d + ror r14d,9 + xor r12d,ebx + vpxor xmm7,xmm7,xmm5 + ror r13d,5 + xor r14d,edx + and r12d,r11d + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((208-128))+rdi] + xor r13d,r11d + vpsrldq xmm7,xmm7,8 + add ecx,DWORD[52+rsp] + mov esi,edx + ror r14d,11 + xor r12d,ebx + vpaddd xmm3,xmm3,xmm7 + xor esi,r8d + ror r13d,6 + add ecx,r12d + and r15d,esi +DB 143,232,120,194,251,13 + xor r14d,edx + add ecx,r13d + vpsrld xmm6,xmm3,10 + xor r15d,r8d + add r10d,ecx +DB 143,232,120,194,239,2 + ror r14d,2 + add ecx,r15d + vpxor xmm7,xmm7,xmm6 + mov r13d,r10d + add r14d,ecx + ror r13d,14 + mov ecx,r14d + vpxor xmm7,xmm7,xmm5 + mov r12d,r11d + xor r13d,r10d + ror r14d,9 + xor r12d,eax + vpslldq xmm7,xmm7,8 + ror r13d,5 + xor r14d,ecx + and r12d,r10d + vpand xmm11,xmm11,xmm13 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((224-128))+rdi] + xor r13d,r10d + vpaddd xmm3,xmm3,xmm7 + add ebx,DWORD[56+rsp] + mov r15d,ecx + ror r14d,11 + xor r12d,eax + vpaddd xmm6,xmm3,XMMWORD[96+rbp] + xor r15d,edx + ror r13d,6 + add ebx,r12d + and esi,r15d + xor r14d,ecx + add ebx,r13d + xor esi,edx + add r9d,ebx + ror r14d,2 + add ebx,esi + mov r13d,r9d + add r14d,ebx + ror r13d,14 + mov ebx,r14d + mov r12d,r10d + xor r13d,r9d + ror r14d,9 + xor r12d,r11d + ror r13d,5 + xor r14d,ebx + and r12d,r9d + vpor xmm8,xmm8,xmm11 + vaesenclast xmm11,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((0-128))+rdi] + xor r13d,r9d + add eax,DWORD[60+rsp] + mov esi,ebx + ror r14d,11 + xor r12d,r11d + xor esi,ecx + ror r13d,6 + add eax,r12d + and r15d,esi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + add r8d,eax + ror r14d,2 + add eax,r15d + mov r13d,r8d + add r14d,eax + vmovdqa XMMWORD[48+rsp],xmm6 + mov r12,QWORD[((64+0))+rsp] + vpand xmm11,xmm11,xmm14 + mov r15,QWORD[((64+8))+rsp] + vpor xmm8,xmm8,xmm11 + vmovdqu XMMWORD[r12*1+r15],xmm8 + lea r12,[16+r12] + cmp BYTE[131+rbp],0 + jne NEAR $L$xop_00_47 + vmovdqu xmm9,XMMWORD[r12] + mov QWORD[((64+0))+rsp],r12 + ror r13d,14 + mov eax,r14d + mov r12d,r9d + xor r13d,r8d + ror r14d,9 + xor r12d,r10d + ror r13d,5 + xor r14d,eax + and r12d,r8d + vpxor xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((16-128))+rdi] + xor r13d,r8d + add r11d,DWORD[rsp] + mov r15d,eax + ror r14d,11 + xor r12d,r10d + xor r15d,ebx + ror r13d,6 + add r11d,r12d + and esi,r15d + xor r14d,eax + add r11d,r13d + xor esi,ebx + add edx,r11d + ror r14d,2 + add r11d,esi + mov r13d,edx + add r14d,r11d + ror r13d,14 + mov r11d,r14d + mov r12d,r8d + xor r13d,edx + ror r14d,9 + xor r12d,r9d + ror r13d,5 + xor r14d,r11d + and r12d,edx + vpxor xmm9,xmm9,xmm8 + xor r13d,edx + add r10d,DWORD[4+rsp] + mov esi,r11d + ror r14d,11 + xor r12d,r9d + xor esi,eax + ror r13d,6 + add r10d,r12d + and r15d,esi + xor r14d,r11d + add r10d,r13d + xor r15d,eax + add ecx,r10d + ror r14d,2 + add r10d,r15d + mov r13d,ecx + add r14d,r10d + ror r13d,14 + mov r10d,r14d + mov r12d,edx + xor r13d,ecx + ror r14d,9 + xor r12d,r8d + ror r13d,5 + xor r14d,r10d + and r12d,ecx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((32-128))+rdi] + xor r13d,ecx + add r9d,DWORD[8+rsp] + mov r15d,r10d + ror r14d,11 + xor r12d,r8d + xor r15d,r11d + ror r13d,6 + add r9d,r12d + and esi,r15d + xor r14d,r10d + add r9d,r13d + xor esi,r11d + add ebx,r9d + ror r14d,2 + add r9d,esi + mov r13d,ebx + add r14d,r9d + ror r13d,14 + mov r9d,r14d + mov r12d,ecx + xor r13d,ebx + ror r14d,9 + xor r12d,edx + ror r13d,5 + xor r14d,r9d + and r12d,ebx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((48-128))+rdi] + xor r13d,ebx + add r8d,DWORD[12+rsp] + mov esi,r9d + ror r14d,11 + xor r12d,edx + xor esi,r10d + ror r13d,6 + add r8d,r12d + and r15d,esi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + add eax,r8d + ror r14d,2 + add r8d,r15d + mov r13d,eax + add r14d,r8d + ror r13d,14 + mov r8d,r14d + mov r12d,ebx + xor r13d,eax + ror r14d,9 + xor r12d,ecx + ror r13d,5 + xor r14d,r8d + and r12d,eax + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((64-128))+rdi] + xor r13d,eax + add edx,DWORD[16+rsp] + mov r15d,r8d + ror r14d,11 + xor r12d,ecx + xor r15d,r9d + ror r13d,6 + add edx,r12d + and esi,r15d + xor r14d,r8d + add edx,r13d + xor esi,r9d + add r11d,edx + ror r14d,2 + add edx,esi + mov r13d,r11d + add r14d,edx + ror r13d,14 + mov edx,r14d + mov r12d,eax + xor r13d,r11d + ror r14d,9 + xor r12d,ebx + ror r13d,5 + xor r14d,edx + and r12d,r11d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((80-128))+rdi] + xor r13d,r11d + add ecx,DWORD[20+rsp] + mov esi,edx + ror r14d,11 + xor r12d,ebx + xor esi,r8d + ror r13d,6 + add ecx,r12d + and r15d,esi + xor r14d,edx + add ecx,r13d + xor r15d,r8d + add r10d,ecx + ror r14d,2 + add ecx,r15d + mov r13d,r10d + add r14d,ecx + ror r13d,14 + mov ecx,r14d + mov r12d,r11d + xor r13d,r10d + ror r14d,9 + xor r12d,eax + ror r13d,5 + xor r14d,ecx + and r12d,r10d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((96-128))+rdi] + xor r13d,r10d + add ebx,DWORD[24+rsp] + mov r15d,ecx + ror r14d,11 + xor r12d,eax + xor r15d,edx + ror r13d,6 + add ebx,r12d + and esi,r15d + xor r14d,ecx + add ebx,r13d + xor esi,edx + add r9d,ebx + ror r14d,2 + add ebx,esi + mov r13d,r9d + add r14d,ebx + ror r13d,14 + mov ebx,r14d + mov r12d,r10d + xor r13d,r9d + ror r14d,9 + xor r12d,r11d + ror r13d,5 + xor r14d,ebx + and r12d,r9d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((112-128))+rdi] + xor r13d,r9d + add eax,DWORD[28+rsp] + mov esi,ebx + ror r14d,11 + xor r12d,r11d + xor esi,ecx + ror r13d,6 + add eax,r12d + and r15d,esi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + add r8d,eax + ror r14d,2 + add eax,r15d + mov r13d,r8d + add r14d,eax + ror r13d,14 + mov eax,r14d + mov r12d,r9d + xor r13d,r8d + ror r14d,9 + xor r12d,r10d + ror r13d,5 + xor r14d,eax + and r12d,r8d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((128-128))+rdi] + xor r13d,r8d + add r11d,DWORD[32+rsp] + mov r15d,eax + ror r14d,11 + xor r12d,r10d + xor r15d,ebx + ror r13d,6 + add r11d,r12d + and esi,r15d + xor r14d,eax + add r11d,r13d + xor esi,ebx + add edx,r11d + ror r14d,2 + add r11d,esi + mov r13d,edx + add r14d,r11d + ror r13d,14 + mov r11d,r14d + mov r12d,r8d + xor r13d,edx + ror r14d,9 + xor r12d,r9d + ror r13d,5 + xor r14d,r11d + and r12d,edx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((144-128))+rdi] + xor r13d,edx + add r10d,DWORD[36+rsp] + mov esi,r11d + ror r14d,11 + xor r12d,r9d + xor esi,eax + ror r13d,6 + add r10d,r12d + and r15d,esi + xor r14d,r11d + add r10d,r13d + xor r15d,eax + add ecx,r10d + ror r14d,2 + add r10d,r15d + mov r13d,ecx + add r14d,r10d + ror r13d,14 + mov r10d,r14d + mov r12d,edx + xor r13d,ecx + ror r14d,9 + xor r12d,r8d + ror r13d,5 + xor r14d,r10d + and r12d,ecx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((160-128))+rdi] + xor r13d,ecx + add r9d,DWORD[40+rsp] + mov r15d,r10d + ror r14d,11 + xor r12d,r8d + xor r15d,r11d + ror r13d,6 + add r9d,r12d + and esi,r15d + xor r14d,r10d + add r9d,r13d + xor esi,r11d + add ebx,r9d + ror r14d,2 + add r9d,esi + mov r13d,ebx + add r14d,r9d + ror r13d,14 + mov r9d,r14d + mov r12d,ecx + xor r13d,ebx + ror r14d,9 + xor r12d,edx + ror r13d,5 + xor r14d,r9d + and r12d,ebx + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((176-128))+rdi] + xor r13d,ebx + add r8d,DWORD[44+rsp] + mov esi,r9d + ror r14d,11 + xor r12d,edx + xor esi,r10d + ror r13d,6 + add r8d,r12d + and r15d,esi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + add eax,r8d + ror r14d,2 + add r8d,r15d + mov r13d,eax + add r14d,r8d + ror r13d,14 + mov r8d,r14d + mov r12d,ebx + xor r13d,eax + ror r14d,9 + xor r12d,ecx + ror r13d,5 + xor r14d,r8d + and r12d,eax + vpand xmm8,xmm11,xmm12 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((192-128))+rdi] + xor r13d,eax + add edx,DWORD[48+rsp] + mov r15d,r8d + ror r14d,11 + xor r12d,ecx + xor r15d,r9d + ror r13d,6 + add edx,r12d + and esi,r15d + xor r14d,r8d + add edx,r13d + xor esi,r9d + add r11d,edx + ror r14d,2 + add edx,esi + mov r13d,r11d + add r14d,edx + ror r13d,14 + mov edx,r14d + mov r12d,eax + xor r13d,r11d + ror r14d,9 + xor r12d,ebx + ror r13d,5 + xor r14d,edx + and r12d,r11d + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((208-128))+rdi] + xor r13d,r11d + add ecx,DWORD[52+rsp] + mov esi,edx + ror r14d,11 + xor r12d,ebx + xor esi,r8d + ror r13d,6 + add ecx,r12d + and r15d,esi + xor r14d,edx + add ecx,r13d + xor r15d,r8d + add r10d,ecx + ror r14d,2 + add ecx,r15d + mov r13d,r10d + add r14d,ecx + ror r13d,14 + mov ecx,r14d + mov r12d,r11d + xor r13d,r10d + ror r14d,9 + xor r12d,eax + ror r13d,5 + xor r14d,ecx + and r12d,r10d + vpand xmm11,xmm11,xmm13 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((224-128))+rdi] + xor r13d,r10d + add ebx,DWORD[56+rsp] + mov r15d,ecx + ror r14d,11 + xor r12d,eax + xor r15d,edx + ror r13d,6 + add ebx,r12d + and esi,r15d + xor r14d,ecx + add ebx,r13d + xor esi,edx + add r9d,ebx + ror r14d,2 + add ebx,esi + mov r13d,r9d + add r14d,ebx + ror r13d,14 + mov ebx,r14d + mov r12d,r10d + xor r13d,r9d + ror r14d,9 + xor r12d,r11d + ror r13d,5 + xor r14d,ebx + and r12d,r9d + vpor xmm8,xmm8,xmm11 + vaesenclast xmm11,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((0-128))+rdi] + xor r13d,r9d + add eax,DWORD[60+rsp] + mov esi,ebx + ror r14d,11 + xor r12d,r11d + xor esi,ecx + ror r13d,6 + add eax,r12d + and r15d,esi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + add r8d,eax + ror r14d,2 + add eax,r15d + mov r13d,r8d + add r14d,eax + mov r12,QWORD[((64+0))+rsp] + mov r13,QWORD[((64+8))+rsp] + mov r15,QWORD[((64+40))+rsp] + mov rsi,QWORD[((64+48))+rsp] + + vpand xmm11,xmm11,xmm14 + mov eax,r14d + vpor xmm8,xmm8,xmm11 + vmovdqu XMMWORD[r13*1+r12],xmm8 + lea r12,[16+r12] + + add eax,DWORD[r15] + add ebx,DWORD[4+r15] + add ecx,DWORD[8+r15] + add edx,DWORD[12+r15] + add r8d,DWORD[16+r15] + add r9d,DWORD[20+r15] + add r10d,DWORD[24+r15] + add r11d,DWORD[28+r15] + + cmp r12,QWORD[((64+16))+rsp] + + mov DWORD[r15],eax + mov DWORD[4+r15],ebx + mov DWORD[8+r15],ecx + mov DWORD[12+r15],edx + mov DWORD[16+r15],r8d + mov DWORD[20+r15],r9d + mov DWORD[24+r15],r10d + mov DWORD[28+r15],r11d + + jb NEAR $L$loop_xop + + mov r8,QWORD[((64+32))+rsp] + mov rsi,QWORD[120+rsp] + + vmovdqu XMMWORD[r8],xmm8 + vzeroall + movaps xmm6,XMMWORD[128+rsp] + movaps xmm7,XMMWORD[144+rsp] + movaps xmm8,XMMWORD[160+rsp] + movaps xmm9,XMMWORD[176+rsp] + movaps xmm10,XMMWORD[192+rsp] + movaps xmm11,XMMWORD[208+rsp] + movaps xmm12,XMMWORD[224+rsp] + movaps xmm13,XMMWORD[240+rsp] + movaps xmm14,XMMWORD[256+rsp] + movaps xmm15,XMMWORD[272+rsp] + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue_xop: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_cbc_sha256_enc_xop: + +ALIGN 64 +aesni_cbc_sha256_enc_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_cbc_sha256_enc_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + +$L$avx_shortcut: + mov r10,QWORD[56+rsp] + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,288 + and rsp,-64 + + shl rdx,6 + sub rsi,rdi + sub r10,rdi + add rdx,rdi + + + mov QWORD[((64+8))+rsp],rsi + mov QWORD[((64+16))+rsp],rdx + + mov QWORD[((64+32))+rsp],r8 + mov QWORD[((64+40))+rsp],r9 + mov QWORD[((64+48))+rsp],r10 + mov QWORD[120+rsp],rax + + movaps XMMWORD[128+rsp],xmm6 + movaps XMMWORD[144+rsp],xmm7 + movaps XMMWORD[160+rsp],xmm8 + movaps XMMWORD[176+rsp],xmm9 + movaps XMMWORD[192+rsp],xmm10 + movaps XMMWORD[208+rsp],xmm11 + movaps XMMWORD[224+rsp],xmm12 + movaps XMMWORD[240+rsp],xmm13 + movaps XMMWORD[256+rsp],xmm14 + movaps XMMWORD[272+rsp],xmm15 +$L$prologue_avx: + vzeroall + + mov r12,rdi + lea rdi,[128+rcx] + lea r13,[((K256+544))] + mov r14d,DWORD[((240-128))+rdi] + mov r15,r9 + mov rsi,r10 + vmovdqu xmm8,XMMWORD[r8] + sub r14,9 + + mov eax,DWORD[r15] + mov ebx,DWORD[4+r15] + mov ecx,DWORD[8+r15] + mov edx,DWORD[12+r15] + mov r8d,DWORD[16+r15] + mov r9d,DWORD[20+r15] + mov r10d,DWORD[24+r15] + mov r11d,DWORD[28+r15] + + vmovdqa xmm14,XMMWORD[r14*8+r13] + vmovdqa xmm13,XMMWORD[16+r14*8+r13] + vmovdqa xmm12,XMMWORD[32+r14*8+r13] + vmovdqu xmm10,XMMWORD[((0-128))+rdi] + jmp NEAR $L$loop_avx +ALIGN 16 +$L$loop_avx: + vmovdqa xmm7,XMMWORD[((K256+512))] + vmovdqu xmm0,XMMWORD[r12*1+rsi] + vmovdqu xmm1,XMMWORD[16+r12*1+rsi] + vmovdqu xmm2,XMMWORD[32+r12*1+rsi] + vmovdqu xmm3,XMMWORD[48+r12*1+rsi] + vpshufb xmm0,xmm0,xmm7 + lea rbp,[K256] + vpshufb xmm1,xmm1,xmm7 + vpshufb xmm2,xmm2,xmm7 + vpaddd xmm4,xmm0,XMMWORD[rbp] + vpshufb xmm3,xmm3,xmm7 + vpaddd xmm5,xmm1,XMMWORD[32+rbp] + vpaddd xmm6,xmm2,XMMWORD[64+rbp] + vpaddd xmm7,xmm3,XMMWORD[96+rbp] + vmovdqa XMMWORD[rsp],xmm4 + mov r14d,eax + vmovdqa XMMWORD[16+rsp],xmm5 + mov esi,ebx + vmovdqa XMMWORD[32+rsp],xmm6 + xor esi,ecx + vmovdqa XMMWORD[48+rsp],xmm7 + mov r13d,r8d + jmp NEAR $L$avx_00_47 + +ALIGN 16 +$L$avx_00_47: + sub rbp,-16*2*4 + vmovdqu xmm9,XMMWORD[r12] + mov QWORD[((64+0))+rsp],r12 + vpalignr xmm4,xmm1,xmm0,4 + shrd r13d,r13d,14 + mov eax,r14d + mov r12d,r9d + vpalignr xmm7,xmm3,xmm2,4 + xor r13d,r8d + shrd r14d,r14d,9 + xor r12d,r10d + vpsrld xmm6,xmm4,7 + shrd r13d,r13d,5 + xor r14d,eax + and r12d,r8d + vpaddd xmm0,xmm0,xmm7 + vpxor xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((16-128))+rdi] + xor r13d,r8d + add r11d,DWORD[rsp] + mov r15d,eax + vpsrld xmm7,xmm4,3 + shrd r14d,r14d,11 + xor r12d,r10d + xor r15d,ebx + vpslld xmm5,xmm4,14 + shrd r13d,r13d,6 + add r11d,r12d + and esi,r15d + vpxor xmm4,xmm7,xmm6 + xor r14d,eax + add r11d,r13d + xor esi,ebx + vpshufd xmm7,xmm3,250 + add edx,r11d + shrd r14d,r14d,2 + add r11d,esi + vpsrld xmm6,xmm6,11 + mov r13d,edx + add r14d,r11d + shrd r13d,r13d,14 + vpxor xmm4,xmm4,xmm5 + mov r11d,r14d + mov r12d,r8d + xor r13d,edx + vpslld xmm5,xmm5,11 + shrd r14d,r14d,9 + xor r12d,r9d + shrd r13d,r13d,5 + vpxor xmm4,xmm4,xmm6 + xor r14d,r11d + and r12d,edx + vpxor xmm9,xmm9,xmm8 + xor r13d,edx + vpsrld xmm6,xmm7,10 + add r10d,DWORD[4+rsp] + mov esi,r11d + shrd r14d,r14d,11 + vpxor xmm4,xmm4,xmm5 + xor r12d,r9d + xor esi,eax + shrd r13d,r13d,6 + vpsrlq xmm7,xmm7,17 + add r10d,r12d + and r15d,esi + xor r14d,r11d + vpaddd xmm0,xmm0,xmm4 + add r10d,r13d + xor r15d,eax + add ecx,r10d + vpxor xmm6,xmm6,xmm7 + shrd r14d,r14d,2 + add r10d,r15d + mov r13d,ecx + vpsrlq xmm7,xmm7,2 + add r14d,r10d + shrd r13d,r13d,14 + mov r10d,r14d + vpxor xmm6,xmm6,xmm7 + mov r12d,edx + xor r13d,ecx + shrd r14d,r14d,9 + vpshufd xmm6,xmm6,132 + xor r12d,r8d + shrd r13d,r13d,5 + xor r14d,r10d + vpsrldq xmm6,xmm6,8 + and r12d,ecx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((32-128))+rdi] + xor r13d,ecx + add r9d,DWORD[8+rsp] + vpaddd xmm0,xmm0,xmm6 + mov r15d,r10d + shrd r14d,r14d,11 + xor r12d,r8d + vpshufd xmm7,xmm0,80 + xor r15d,r11d + shrd r13d,r13d,6 + add r9d,r12d + vpsrld xmm6,xmm7,10 + and esi,r15d + xor r14d,r10d + add r9d,r13d + vpsrlq xmm7,xmm7,17 + xor esi,r11d + add ebx,r9d + shrd r14d,r14d,2 + vpxor xmm6,xmm6,xmm7 + add r9d,esi + mov r13d,ebx + add r14d,r9d + vpsrlq xmm7,xmm7,2 + shrd r13d,r13d,14 + mov r9d,r14d + mov r12d,ecx + vpxor xmm6,xmm6,xmm7 + xor r13d,ebx + shrd r14d,r14d,9 + xor r12d,edx + vpshufd xmm6,xmm6,232 + shrd r13d,r13d,5 + xor r14d,r9d + and r12d,ebx + vpslldq xmm6,xmm6,8 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((48-128))+rdi] + xor r13d,ebx + add r8d,DWORD[12+rsp] + mov esi,r9d + vpaddd xmm0,xmm0,xmm6 + shrd r14d,r14d,11 + xor r12d,edx + xor esi,r10d + vpaddd xmm6,xmm0,XMMWORD[rbp] + shrd r13d,r13d,6 + add r8d,r12d + and r15d,esi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + add eax,r8d + shrd r14d,r14d,2 + add r8d,r15d + mov r13d,eax + add r14d,r8d + vmovdqa XMMWORD[rsp],xmm6 + vpalignr xmm4,xmm2,xmm1,4 + shrd r13d,r13d,14 + mov r8d,r14d + mov r12d,ebx + vpalignr xmm7,xmm0,xmm3,4 + xor r13d,eax + shrd r14d,r14d,9 + xor r12d,ecx + vpsrld xmm6,xmm4,7 + shrd r13d,r13d,5 + xor r14d,r8d + and r12d,eax + vpaddd xmm1,xmm1,xmm7 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((64-128))+rdi] + xor r13d,eax + add edx,DWORD[16+rsp] + mov r15d,r8d + vpsrld xmm7,xmm4,3 + shrd r14d,r14d,11 + xor r12d,ecx + xor r15d,r9d + vpslld xmm5,xmm4,14 + shrd r13d,r13d,6 + add edx,r12d + and esi,r15d + vpxor xmm4,xmm7,xmm6 + xor r14d,r8d + add edx,r13d + xor esi,r9d + vpshufd xmm7,xmm0,250 + add r11d,edx + shrd r14d,r14d,2 + add edx,esi + vpsrld xmm6,xmm6,11 + mov r13d,r11d + add r14d,edx + shrd r13d,r13d,14 + vpxor xmm4,xmm4,xmm5 + mov edx,r14d + mov r12d,eax + xor r13d,r11d + vpslld xmm5,xmm5,11 + shrd r14d,r14d,9 + xor r12d,ebx + shrd r13d,r13d,5 + vpxor xmm4,xmm4,xmm6 + xor r14d,edx + and r12d,r11d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((80-128))+rdi] + xor r13d,r11d + vpsrld xmm6,xmm7,10 + add ecx,DWORD[20+rsp] + mov esi,edx + shrd r14d,r14d,11 + vpxor xmm4,xmm4,xmm5 + xor r12d,ebx + xor esi,r8d + shrd r13d,r13d,6 + vpsrlq xmm7,xmm7,17 + add ecx,r12d + and r15d,esi + xor r14d,edx + vpaddd xmm1,xmm1,xmm4 + add ecx,r13d + xor r15d,r8d + add r10d,ecx + vpxor xmm6,xmm6,xmm7 + shrd r14d,r14d,2 + add ecx,r15d + mov r13d,r10d + vpsrlq xmm7,xmm7,2 + add r14d,ecx + shrd r13d,r13d,14 + mov ecx,r14d + vpxor xmm6,xmm6,xmm7 + mov r12d,r11d + xor r13d,r10d + shrd r14d,r14d,9 + vpshufd xmm6,xmm6,132 + xor r12d,eax + shrd r13d,r13d,5 + xor r14d,ecx + vpsrldq xmm6,xmm6,8 + and r12d,r10d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((96-128))+rdi] + xor r13d,r10d + add ebx,DWORD[24+rsp] + vpaddd xmm1,xmm1,xmm6 + mov r15d,ecx + shrd r14d,r14d,11 + xor r12d,eax + vpshufd xmm7,xmm1,80 + xor r15d,edx + shrd r13d,r13d,6 + add ebx,r12d + vpsrld xmm6,xmm7,10 + and esi,r15d + xor r14d,ecx + add ebx,r13d + vpsrlq xmm7,xmm7,17 + xor esi,edx + add r9d,ebx + shrd r14d,r14d,2 + vpxor xmm6,xmm6,xmm7 + add ebx,esi + mov r13d,r9d + add r14d,ebx + vpsrlq xmm7,xmm7,2 + shrd r13d,r13d,14 + mov ebx,r14d + mov r12d,r10d + vpxor xmm6,xmm6,xmm7 + xor r13d,r9d + shrd r14d,r14d,9 + xor r12d,r11d + vpshufd xmm6,xmm6,232 + shrd r13d,r13d,5 + xor r14d,ebx + and r12d,r9d + vpslldq xmm6,xmm6,8 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((112-128))+rdi] + xor r13d,r9d + add eax,DWORD[28+rsp] + mov esi,ebx + vpaddd xmm1,xmm1,xmm6 + shrd r14d,r14d,11 + xor r12d,r11d + xor esi,ecx + vpaddd xmm6,xmm1,XMMWORD[32+rbp] + shrd r13d,r13d,6 + add eax,r12d + and r15d,esi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + add r8d,eax + shrd r14d,r14d,2 + add eax,r15d + mov r13d,r8d + add r14d,eax + vmovdqa XMMWORD[16+rsp],xmm6 + vpalignr xmm4,xmm3,xmm2,4 + shrd r13d,r13d,14 + mov eax,r14d + mov r12d,r9d + vpalignr xmm7,xmm1,xmm0,4 + xor r13d,r8d + shrd r14d,r14d,9 + xor r12d,r10d + vpsrld xmm6,xmm4,7 + shrd r13d,r13d,5 + xor r14d,eax + and r12d,r8d + vpaddd xmm2,xmm2,xmm7 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((128-128))+rdi] + xor r13d,r8d + add r11d,DWORD[32+rsp] + mov r15d,eax + vpsrld xmm7,xmm4,3 + shrd r14d,r14d,11 + xor r12d,r10d + xor r15d,ebx + vpslld xmm5,xmm4,14 + shrd r13d,r13d,6 + add r11d,r12d + and esi,r15d + vpxor xmm4,xmm7,xmm6 + xor r14d,eax + add r11d,r13d + xor esi,ebx + vpshufd xmm7,xmm1,250 + add edx,r11d + shrd r14d,r14d,2 + add r11d,esi + vpsrld xmm6,xmm6,11 + mov r13d,edx + add r14d,r11d + shrd r13d,r13d,14 + vpxor xmm4,xmm4,xmm5 + mov r11d,r14d + mov r12d,r8d + xor r13d,edx + vpslld xmm5,xmm5,11 + shrd r14d,r14d,9 + xor r12d,r9d + shrd r13d,r13d,5 + vpxor xmm4,xmm4,xmm6 + xor r14d,r11d + and r12d,edx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((144-128))+rdi] + xor r13d,edx + vpsrld xmm6,xmm7,10 + add r10d,DWORD[36+rsp] + mov esi,r11d + shrd r14d,r14d,11 + vpxor xmm4,xmm4,xmm5 + xor r12d,r9d + xor esi,eax + shrd r13d,r13d,6 + vpsrlq xmm7,xmm7,17 + add r10d,r12d + and r15d,esi + xor r14d,r11d + vpaddd xmm2,xmm2,xmm4 + add r10d,r13d + xor r15d,eax + add ecx,r10d + vpxor xmm6,xmm6,xmm7 + shrd r14d,r14d,2 + add r10d,r15d + mov r13d,ecx + vpsrlq xmm7,xmm7,2 + add r14d,r10d + shrd r13d,r13d,14 + mov r10d,r14d + vpxor xmm6,xmm6,xmm7 + mov r12d,edx + xor r13d,ecx + shrd r14d,r14d,9 + vpshufd xmm6,xmm6,132 + xor r12d,r8d + shrd r13d,r13d,5 + xor r14d,r10d + vpsrldq xmm6,xmm6,8 + and r12d,ecx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((160-128))+rdi] + xor r13d,ecx + add r9d,DWORD[40+rsp] + vpaddd xmm2,xmm2,xmm6 + mov r15d,r10d + shrd r14d,r14d,11 + xor r12d,r8d + vpshufd xmm7,xmm2,80 + xor r15d,r11d + shrd r13d,r13d,6 + add r9d,r12d + vpsrld xmm6,xmm7,10 + and esi,r15d + xor r14d,r10d + add r9d,r13d + vpsrlq xmm7,xmm7,17 + xor esi,r11d + add ebx,r9d + shrd r14d,r14d,2 + vpxor xmm6,xmm6,xmm7 + add r9d,esi + mov r13d,ebx + add r14d,r9d + vpsrlq xmm7,xmm7,2 + shrd r13d,r13d,14 + mov r9d,r14d + mov r12d,ecx + vpxor xmm6,xmm6,xmm7 + xor r13d,ebx + shrd r14d,r14d,9 + xor r12d,edx + vpshufd xmm6,xmm6,232 + shrd r13d,r13d,5 + xor r14d,r9d + and r12d,ebx + vpslldq xmm6,xmm6,8 + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((176-128))+rdi] + xor r13d,ebx + add r8d,DWORD[44+rsp] + mov esi,r9d + vpaddd xmm2,xmm2,xmm6 + shrd r14d,r14d,11 + xor r12d,edx + xor esi,r10d + vpaddd xmm6,xmm2,XMMWORD[64+rbp] + shrd r13d,r13d,6 + add r8d,r12d + and r15d,esi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + add eax,r8d + shrd r14d,r14d,2 + add r8d,r15d + mov r13d,eax + add r14d,r8d + vmovdqa XMMWORD[32+rsp],xmm6 + vpalignr xmm4,xmm0,xmm3,4 + shrd r13d,r13d,14 + mov r8d,r14d + mov r12d,ebx + vpalignr xmm7,xmm2,xmm1,4 + xor r13d,eax + shrd r14d,r14d,9 + xor r12d,ecx + vpsrld xmm6,xmm4,7 + shrd r13d,r13d,5 + xor r14d,r8d + and r12d,eax + vpaddd xmm3,xmm3,xmm7 + vpand xmm8,xmm11,xmm12 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((192-128))+rdi] + xor r13d,eax + add edx,DWORD[48+rsp] + mov r15d,r8d + vpsrld xmm7,xmm4,3 + shrd r14d,r14d,11 + xor r12d,ecx + xor r15d,r9d + vpslld xmm5,xmm4,14 + shrd r13d,r13d,6 + add edx,r12d + and esi,r15d + vpxor xmm4,xmm7,xmm6 + xor r14d,r8d + add edx,r13d + xor esi,r9d + vpshufd xmm7,xmm2,250 + add r11d,edx + shrd r14d,r14d,2 + add edx,esi + vpsrld xmm6,xmm6,11 + mov r13d,r11d + add r14d,edx + shrd r13d,r13d,14 + vpxor xmm4,xmm4,xmm5 + mov edx,r14d + mov r12d,eax + xor r13d,r11d + vpslld xmm5,xmm5,11 + shrd r14d,r14d,9 + xor r12d,ebx + shrd r13d,r13d,5 + vpxor xmm4,xmm4,xmm6 + xor r14d,edx + and r12d,r11d + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((208-128))+rdi] + xor r13d,r11d + vpsrld xmm6,xmm7,10 + add ecx,DWORD[52+rsp] + mov esi,edx + shrd r14d,r14d,11 + vpxor xmm4,xmm4,xmm5 + xor r12d,ebx + xor esi,r8d + shrd r13d,r13d,6 + vpsrlq xmm7,xmm7,17 + add ecx,r12d + and r15d,esi + xor r14d,edx + vpaddd xmm3,xmm3,xmm4 + add ecx,r13d + xor r15d,r8d + add r10d,ecx + vpxor xmm6,xmm6,xmm7 + shrd r14d,r14d,2 + add ecx,r15d + mov r13d,r10d + vpsrlq xmm7,xmm7,2 + add r14d,ecx + shrd r13d,r13d,14 + mov ecx,r14d + vpxor xmm6,xmm6,xmm7 + mov r12d,r11d + xor r13d,r10d + shrd r14d,r14d,9 + vpshufd xmm6,xmm6,132 + xor r12d,eax + shrd r13d,r13d,5 + xor r14d,ecx + vpsrldq xmm6,xmm6,8 + and r12d,r10d + vpand xmm11,xmm11,xmm13 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((224-128))+rdi] + xor r13d,r10d + add ebx,DWORD[56+rsp] + vpaddd xmm3,xmm3,xmm6 + mov r15d,ecx + shrd r14d,r14d,11 + xor r12d,eax + vpshufd xmm7,xmm3,80 + xor r15d,edx + shrd r13d,r13d,6 + add ebx,r12d + vpsrld xmm6,xmm7,10 + and esi,r15d + xor r14d,ecx + add ebx,r13d + vpsrlq xmm7,xmm7,17 + xor esi,edx + add r9d,ebx + shrd r14d,r14d,2 + vpxor xmm6,xmm6,xmm7 + add ebx,esi + mov r13d,r9d + add r14d,ebx + vpsrlq xmm7,xmm7,2 + shrd r13d,r13d,14 + mov ebx,r14d + mov r12d,r10d + vpxor xmm6,xmm6,xmm7 + xor r13d,r9d + shrd r14d,r14d,9 + xor r12d,r11d + vpshufd xmm6,xmm6,232 + shrd r13d,r13d,5 + xor r14d,ebx + and r12d,r9d + vpslldq xmm6,xmm6,8 + vpor xmm8,xmm8,xmm11 + vaesenclast xmm11,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((0-128))+rdi] + xor r13d,r9d + add eax,DWORD[60+rsp] + mov esi,ebx + vpaddd xmm3,xmm3,xmm6 + shrd r14d,r14d,11 + xor r12d,r11d + xor esi,ecx + vpaddd xmm6,xmm3,XMMWORD[96+rbp] + shrd r13d,r13d,6 + add eax,r12d + and r15d,esi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + add r8d,eax + shrd r14d,r14d,2 + add eax,r15d + mov r13d,r8d + add r14d,eax + vmovdqa XMMWORD[48+rsp],xmm6 + mov r12,QWORD[((64+0))+rsp] + vpand xmm11,xmm11,xmm14 + mov r15,QWORD[((64+8))+rsp] + vpor xmm8,xmm8,xmm11 + vmovdqu XMMWORD[r12*1+r15],xmm8 + lea r12,[16+r12] + cmp BYTE[131+rbp],0 + jne NEAR $L$avx_00_47 + vmovdqu xmm9,XMMWORD[r12] + mov QWORD[((64+0))+rsp],r12 + shrd r13d,r13d,14 + mov eax,r14d + mov r12d,r9d + xor r13d,r8d + shrd r14d,r14d,9 + xor r12d,r10d + shrd r13d,r13d,5 + xor r14d,eax + and r12d,r8d + vpxor xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((16-128))+rdi] + xor r13d,r8d + add r11d,DWORD[rsp] + mov r15d,eax + shrd r14d,r14d,11 + xor r12d,r10d + xor r15d,ebx + shrd r13d,r13d,6 + add r11d,r12d + and esi,r15d + xor r14d,eax + add r11d,r13d + xor esi,ebx + add edx,r11d + shrd r14d,r14d,2 + add r11d,esi + mov r13d,edx + add r14d,r11d + shrd r13d,r13d,14 + mov r11d,r14d + mov r12d,r8d + xor r13d,edx + shrd r14d,r14d,9 + xor r12d,r9d + shrd r13d,r13d,5 + xor r14d,r11d + and r12d,edx + vpxor xmm9,xmm9,xmm8 + xor r13d,edx + add r10d,DWORD[4+rsp] + mov esi,r11d + shrd r14d,r14d,11 + xor r12d,r9d + xor esi,eax + shrd r13d,r13d,6 + add r10d,r12d + and r15d,esi + xor r14d,r11d + add r10d,r13d + xor r15d,eax + add ecx,r10d + shrd r14d,r14d,2 + add r10d,r15d + mov r13d,ecx + add r14d,r10d + shrd r13d,r13d,14 + mov r10d,r14d + mov r12d,edx + xor r13d,ecx + shrd r14d,r14d,9 + xor r12d,r8d + shrd r13d,r13d,5 + xor r14d,r10d + and r12d,ecx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((32-128))+rdi] + xor r13d,ecx + add r9d,DWORD[8+rsp] + mov r15d,r10d + shrd r14d,r14d,11 + xor r12d,r8d + xor r15d,r11d + shrd r13d,r13d,6 + add r9d,r12d + and esi,r15d + xor r14d,r10d + add r9d,r13d + xor esi,r11d + add ebx,r9d + shrd r14d,r14d,2 + add r9d,esi + mov r13d,ebx + add r14d,r9d + shrd r13d,r13d,14 + mov r9d,r14d + mov r12d,ecx + xor r13d,ebx + shrd r14d,r14d,9 + xor r12d,edx + shrd r13d,r13d,5 + xor r14d,r9d + and r12d,ebx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((48-128))+rdi] + xor r13d,ebx + add r8d,DWORD[12+rsp] + mov esi,r9d + shrd r14d,r14d,11 + xor r12d,edx + xor esi,r10d + shrd r13d,r13d,6 + add r8d,r12d + and r15d,esi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + add eax,r8d + shrd r14d,r14d,2 + add r8d,r15d + mov r13d,eax + add r14d,r8d + shrd r13d,r13d,14 + mov r8d,r14d + mov r12d,ebx + xor r13d,eax + shrd r14d,r14d,9 + xor r12d,ecx + shrd r13d,r13d,5 + xor r14d,r8d + and r12d,eax + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((64-128))+rdi] + xor r13d,eax + add edx,DWORD[16+rsp] + mov r15d,r8d + shrd r14d,r14d,11 + xor r12d,ecx + xor r15d,r9d + shrd r13d,r13d,6 + add edx,r12d + and esi,r15d + xor r14d,r8d + add edx,r13d + xor esi,r9d + add r11d,edx + shrd r14d,r14d,2 + add edx,esi + mov r13d,r11d + add r14d,edx + shrd r13d,r13d,14 + mov edx,r14d + mov r12d,eax + xor r13d,r11d + shrd r14d,r14d,9 + xor r12d,ebx + shrd r13d,r13d,5 + xor r14d,edx + and r12d,r11d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((80-128))+rdi] + xor r13d,r11d + add ecx,DWORD[20+rsp] + mov esi,edx + shrd r14d,r14d,11 + xor r12d,ebx + xor esi,r8d + shrd r13d,r13d,6 + add ecx,r12d + and r15d,esi + xor r14d,edx + add ecx,r13d + xor r15d,r8d + add r10d,ecx + shrd r14d,r14d,2 + add ecx,r15d + mov r13d,r10d + add r14d,ecx + shrd r13d,r13d,14 + mov ecx,r14d + mov r12d,r11d + xor r13d,r10d + shrd r14d,r14d,9 + xor r12d,eax + shrd r13d,r13d,5 + xor r14d,ecx + and r12d,r10d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((96-128))+rdi] + xor r13d,r10d + add ebx,DWORD[24+rsp] + mov r15d,ecx + shrd r14d,r14d,11 + xor r12d,eax + xor r15d,edx + shrd r13d,r13d,6 + add ebx,r12d + and esi,r15d + xor r14d,ecx + add ebx,r13d + xor esi,edx + add r9d,ebx + shrd r14d,r14d,2 + add ebx,esi + mov r13d,r9d + add r14d,ebx + shrd r13d,r13d,14 + mov ebx,r14d + mov r12d,r10d + xor r13d,r9d + shrd r14d,r14d,9 + xor r12d,r11d + shrd r13d,r13d,5 + xor r14d,ebx + and r12d,r9d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((112-128))+rdi] + xor r13d,r9d + add eax,DWORD[28+rsp] + mov esi,ebx + shrd r14d,r14d,11 + xor r12d,r11d + xor esi,ecx + shrd r13d,r13d,6 + add eax,r12d + and r15d,esi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + add r8d,eax + shrd r14d,r14d,2 + add eax,r15d + mov r13d,r8d + add r14d,eax + shrd r13d,r13d,14 + mov eax,r14d + mov r12d,r9d + xor r13d,r8d + shrd r14d,r14d,9 + xor r12d,r10d + shrd r13d,r13d,5 + xor r14d,eax + and r12d,r8d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((128-128))+rdi] + xor r13d,r8d + add r11d,DWORD[32+rsp] + mov r15d,eax + shrd r14d,r14d,11 + xor r12d,r10d + xor r15d,ebx + shrd r13d,r13d,6 + add r11d,r12d + and esi,r15d + xor r14d,eax + add r11d,r13d + xor esi,ebx + add edx,r11d + shrd r14d,r14d,2 + add r11d,esi + mov r13d,edx + add r14d,r11d + shrd r13d,r13d,14 + mov r11d,r14d + mov r12d,r8d + xor r13d,edx + shrd r14d,r14d,9 + xor r12d,r9d + shrd r13d,r13d,5 + xor r14d,r11d + and r12d,edx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((144-128))+rdi] + xor r13d,edx + add r10d,DWORD[36+rsp] + mov esi,r11d + shrd r14d,r14d,11 + xor r12d,r9d + xor esi,eax + shrd r13d,r13d,6 + add r10d,r12d + and r15d,esi + xor r14d,r11d + add r10d,r13d + xor r15d,eax + add ecx,r10d + shrd r14d,r14d,2 + add r10d,r15d + mov r13d,ecx + add r14d,r10d + shrd r13d,r13d,14 + mov r10d,r14d + mov r12d,edx + xor r13d,ecx + shrd r14d,r14d,9 + xor r12d,r8d + shrd r13d,r13d,5 + xor r14d,r10d + and r12d,ecx + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((160-128))+rdi] + xor r13d,ecx + add r9d,DWORD[40+rsp] + mov r15d,r10d + shrd r14d,r14d,11 + xor r12d,r8d + xor r15d,r11d + shrd r13d,r13d,6 + add r9d,r12d + and esi,r15d + xor r14d,r10d + add r9d,r13d + xor esi,r11d + add ebx,r9d + shrd r14d,r14d,2 + add r9d,esi + mov r13d,ebx + add r14d,r9d + shrd r13d,r13d,14 + mov r9d,r14d + mov r12d,ecx + xor r13d,ebx + shrd r14d,r14d,9 + xor r12d,edx + shrd r13d,r13d,5 + xor r14d,r9d + and r12d,ebx + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((176-128))+rdi] + xor r13d,ebx + add r8d,DWORD[44+rsp] + mov esi,r9d + shrd r14d,r14d,11 + xor r12d,edx + xor esi,r10d + shrd r13d,r13d,6 + add r8d,r12d + and r15d,esi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + add eax,r8d + shrd r14d,r14d,2 + add r8d,r15d + mov r13d,eax + add r14d,r8d + shrd r13d,r13d,14 + mov r8d,r14d + mov r12d,ebx + xor r13d,eax + shrd r14d,r14d,9 + xor r12d,ecx + shrd r13d,r13d,5 + xor r14d,r8d + and r12d,eax + vpand xmm8,xmm11,xmm12 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((192-128))+rdi] + xor r13d,eax + add edx,DWORD[48+rsp] + mov r15d,r8d + shrd r14d,r14d,11 + xor r12d,ecx + xor r15d,r9d + shrd r13d,r13d,6 + add edx,r12d + and esi,r15d + xor r14d,r8d + add edx,r13d + xor esi,r9d + add r11d,edx + shrd r14d,r14d,2 + add edx,esi + mov r13d,r11d + add r14d,edx + shrd r13d,r13d,14 + mov edx,r14d + mov r12d,eax + xor r13d,r11d + shrd r14d,r14d,9 + xor r12d,ebx + shrd r13d,r13d,5 + xor r14d,edx + and r12d,r11d + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((208-128))+rdi] + xor r13d,r11d + add ecx,DWORD[52+rsp] + mov esi,edx + shrd r14d,r14d,11 + xor r12d,ebx + xor esi,r8d + shrd r13d,r13d,6 + add ecx,r12d + and r15d,esi + xor r14d,edx + add ecx,r13d + xor r15d,r8d + add r10d,ecx + shrd r14d,r14d,2 + add ecx,r15d + mov r13d,r10d + add r14d,ecx + shrd r13d,r13d,14 + mov ecx,r14d + mov r12d,r11d + xor r13d,r10d + shrd r14d,r14d,9 + xor r12d,eax + shrd r13d,r13d,5 + xor r14d,ecx + and r12d,r10d + vpand xmm11,xmm11,xmm13 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((224-128))+rdi] + xor r13d,r10d + add ebx,DWORD[56+rsp] + mov r15d,ecx + shrd r14d,r14d,11 + xor r12d,eax + xor r15d,edx + shrd r13d,r13d,6 + add ebx,r12d + and esi,r15d + xor r14d,ecx + add ebx,r13d + xor esi,edx + add r9d,ebx + shrd r14d,r14d,2 + add ebx,esi + mov r13d,r9d + add r14d,ebx + shrd r13d,r13d,14 + mov ebx,r14d + mov r12d,r10d + xor r13d,r9d + shrd r14d,r14d,9 + xor r12d,r11d + shrd r13d,r13d,5 + xor r14d,ebx + and r12d,r9d + vpor xmm8,xmm8,xmm11 + vaesenclast xmm11,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((0-128))+rdi] + xor r13d,r9d + add eax,DWORD[60+rsp] + mov esi,ebx + shrd r14d,r14d,11 + xor r12d,r11d + xor esi,ecx + shrd r13d,r13d,6 + add eax,r12d + and r15d,esi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + add r8d,eax + shrd r14d,r14d,2 + add eax,r15d + mov r13d,r8d + add r14d,eax + mov r12,QWORD[((64+0))+rsp] + mov r13,QWORD[((64+8))+rsp] + mov r15,QWORD[((64+40))+rsp] + mov rsi,QWORD[((64+48))+rsp] + + vpand xmm11,xmm11,xmm14 + mov eax,r14d + vpor xmm8,xmm8,xmm11 + vmovdqu XMMWORD[r13*1+r12],xmm8 + lea r12,[16+r12] + + add eax,DWORD[r15] + add ebx,DWORD[4+r15] + add ecx,DWORD[8+r15] + add edx,DWORD[12+r15] + add r8d,DWORD[16+r15] + add r9d,DWORD[20+r15] + add r10d,DWORD[24+r15] + add r11d,DWORD[28+r15] + + cmp r12,QWORD[((64+16))+rsp] + + mov DWORD[r15],eax + mov DWORD[4+r15],ebx + mov DWORD[8+r15],ecx + mov DWORD[12+r15],edx + mov DWORD[16+r15],r8d + mov DWORD[20+r15],r9d + mov DWORD[24+r15],r10d + mov DWORD[28+r15],r11d + jb NEAR $L$loop_avx + + mov r8,QWORD[((64+32))+rsp] + mov rsi,QWORD[120+rsp] + + vmovdqu XMMWORD[r8],xmm8 + vzeroall + movaps xmm6,XMMWORD[128+rsp] + movaps xmm7,XMMWORD[144+rsp] + movaps xmm8,XMMWORD[160+rsp] + movaps xmm9,XMMWORD[176+rsp] + movaps xmm10,XMMWORD[192+rsp] + movaps xmm11,XMMWORD[208+rsp] + movaps xmm12,XMMWORD[224+rsp] + movaps xmm13,XMMWORD[240+rsp] + movaps xmm14,XMMWORD[256+rsp] + movaps xmm15,XMMWORD[272+rsp] + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue_avx: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_cbc_sha256_enc_avx: + +ALIGN 64 +aesni_cbc_sha256_enc_avx2: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_cbc_sha256_enc_avx2: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + +$L$avx2_shortcut: + mov r10,QWORD[56+rsp] + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,736 + and rsp,-256*4 + add rsp,448 + + shl rdx,6 + sub rsi,rdi + sub r10,rdi + add rdx,rdi + + + + mov QWORD[((64+16))+rsp],rdx + + mov QWORD[((64+32))+rsp],r8 + mov QWORD[((64+40))+rsp],r9 + mov QWORD[((64+48))+rsp],r10 + mov QWORD[120+rsp],rax + + movaps XMMWORD[128+rsp],xmm6 + movaps XMMWORD[144+rsp],xmm7 + movaps XMMWORD[160+rsp],xmm8 + movaps XMMWORD[176+rsp],xmm9 + movaps XMMWORD[192+rsp],xmm10 + movaps XMMWORD[208+rsp],xmm11 + movaps XMMWORD[224+rsp],xmm12 + movaps XMMWORD[240+rsp],xmm13 + movaps XMMWORD[256+rsp],xmm14 + movaps XMMWORD[272+rsp],xmm15 +$L$prologue_avx2: + vzeroall + + mov r13,rdi + vpinsrq xmm15,xmm15,rsi,1 + lea rdi,[128+rcx] + lea r12,[((K256+544))] + mov r14d,DWORD[((240-128))+rdi] + mov r15,r9 + mov rsi,r10 + vmovdqu xmm8,XMMWORD[r8] + lea r14,[((-9))+r14] + + vmovdqa xmm14,XMMWORD[r14*8+r12] + vmovdqa xmm13,XMMWORD[16+r14*8+r12] + vmovdqa xmm12,XMMWORD[32+r14*8+r12] + + sub r13,-16*4 + mov eax,DWORD[r15] + lea r12,[r13*1+rsi] + mov ebx,DWORD[4+r15] + cmp r13,rdx + mov ecx,DWORD[8+r15] + cmove r12,rsp + mov edx,DWORD[12+r15] + mov r8d,DWORD[16+r15] + mov r9d,DWORD[20+r15] + mov r10d,DWORD[24+r15] + mov r11d,DWORD[28+r15] + vmovdqu xmm10,XMMWORD[((0-128))+rdi] + jmp NEAR $L$oop_avx2 +ALIGN 16 +$L$oop_avx2: + vmovdqa ymm7,YMMWORD[((K256+512))] + vmovdqu xmm0,XMMWORD[((-64+0))+r13*1+rsi] + vmovdqu xmm1,XMMWORD[((-64+16))+r13*1+rsi] + vmovdqu xmm2,XMMWORD[((-64+32))+r13*1+rsi] + vmovdqu xmm3,XMMWORD[((-64+48))+r13*1+rsi] + + vinserti128 ymm0,ymm0,XMMWORD[r12],1 + vinserti128 ymm1,ymm1,XMMWORD[16+r12],1 + vpshufb ymm0,ymm0,ymm7 + vinserti128 ymm2,ymm2,XMMWORD[32+r12],1 + vpshufb ymm1,ymm1,ymm7 + vinserti128 ymm3,ymm3,XMMWORD[48+r12],1 + + lea rbp,[K256] + vpshufb ymm2,ymm2,ymm7 + lea r13,[((-64))+r13] + vpaddd ymm4,ymm0,YMMWORD[rbp] + vpshufb ymm3,ymm3,ymm7 + vpaddd ymm5,ymm1,YMMWORD[32+rbp] + vpaddd ymm6,ymm2,YMMWORD[64+rbp] + vpaddd ymm7,ymm3,YMMWORD[96+rbp] + vmovdqa YMMWORD[rsp],ymm4 + xor r14d,r14d + vmovdqa YMMWORD[32+rsp],ymm5 + lea rsp,[((-64))+rsp] + mov esi,ebx + vmovdqa YMMWORD[rsp],ymm6 + xor esi,ecx + vmovdqa YMMWORD[32+rsp],ymm7 + mov r12d,r9d + sub rbp,-16*2*4 + jmp NEAR $L$avx2_00_47 + +ALIGN 16 +$L$avx2_00_47: + vmovdqu xmm9,XMMWORD[r13] + vpinsrq xmm15,xmm15,r13,0 + lea rsp,[((-64))+rsp] + vpalignr ymm4,ymm1,ymm0,4 + add r11d,DWORD[((0+128))+rsp] + and r12d,r8d + rorx r13d,r8d,25 + vpalignr ymm7,ymm3,ymm2,4 + rorx r15d,r8d,11 + lea eax,[r14*1+rax] + lea r11d,[r12*1+r11] + vpsrld ymm6,ymm4,7 + andn r12d,r8d,r10d + xor r13d,r15d + rorx r14d,r8d,6 + vpaddd ymm0,ymm0,ymm7 + lea r11d,[r12*1+r11] + xor r13d,r14d + mov r15d,eax + vpsrld ymm7,ymm4,3 + rorx r12d,eax,22 + lea r11d,[r13*1+r11] + xor r15d,ebx + vpslld ymm5,ymm4,14 + rorx r14d,eax,13 + rorx r13d,eax,2 + lea edx,[r11*1+rdx] + vpxor ymm4,ymm7,ymm6 + and esi,r15d + vpxor xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((16-128))+rdi] + xor r14d,r12d + xor esi,ebx + vpshufd ymm7,ymm3,250 + xor r14d,r13d + lea r11d,[rsi*1+r11] + mov r12d,r8d + vpsrld ymm6,ymm6,11 + add r10d,DWORD[((4+128))+rsp] + and r12d,edx + rorx r13d,edx,25 + vpxor ymm4,ymm4,ymm5 + rorx esi,edx,11 + lea r11d,[r14*1+r11] + lea r10d,[r12*1+r10] + vpslld ymm5,ymm5,11 + andn r12d,edx,r9d + xor r13d,esi + rorx r14d,edx,6 + vpxor ymm4,ymm4,ymm6 + lea r10d,[r12*1+r10] + xor r13d,r14d + mov esi,r11d + vpsrld ymm6,ymm7,10 + rorx r12d,r11d,22 + lea r10d,[r13*1+r10] + xor esi,eax + vpxor ymm4,ymm4,ymm5 + rorx r14d,r11d,13 + rorx r13d,r11d,2 + lea ecx,[r10*1+rcx] + vpsrlq ymm7,ymm7,17 + and r15d,esi + vpxor xmm9,xmm9,xmm8 + xor r14d,r12d + xor r15d,eax + vpaddd ymm0,ymm0,ymm4 + xor r14d,r13d + lea r10d,[r15*1+r10] + mov r12d,edx + vpxor ymm6,ymm6,ymm7 + add r9d,DWORD[((8+128))+rsp] + and r12d,ecx + rorx r13d,ecx,25 + vpsrlq ymm7,ymm7,2 + rorx r15d,ecx,11 + lea r10d,[r14*1+r10] + lea r9d,[r12*1+r9] + vpxor ymm6,ymm6,ymm7 + andn r12d,ecx,r8d + xor r13d,r15d + rorx r14d,ecx,6 + vpshufd ymm6,ymm6,132 + lea r9d,[r12*1+r9] + xor r13d,r14d + mov r15d,r10d + vpsrldq ymm6,ymm6,8 + rorx r12d,r10d,22 + lea r9d,[r13*1+r9] + xor r15d,r11d + vpaddd ymm0,ymm0,ymm6 + rorx r14d,r10d,13 + rorx r13d,r10d,2 + lea ebx,[r9*1+rbx] + vpshufd ymm7,ymm0,80 + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((32-128))+rdi] + xor r14d,r12d + xor esi,r11d + vpsrld ymm6,ymm7,10 + xor r14d,r13d + lea r9d,[rsi*1+r9] + mov r12d,ecx + vpsrlq ymm7,ymm7,17 + add r8d,DWORD[((12+128))+rsp] + and r12d,ebx + rorx r13d,ebx,25 + vpxor ymm6,ymm6,ymm7 + rorx esi,ebx,11 + lea r9d,[r14*1+r9] + lea r8d,[r12*1+r8] + vpsrlq ymm7,ymm7,2 + andn r12d,ebx,edx + xor r13d,esi + rorx r14d,ebx,6 + vpxor ymm6,ymm6,ymm7 + lea r8d,[r12*1+r8] + xor r13d,r14d + mov esi,r9d + vpshufd ymm6,ymm6,232 + rorx r12d,r9d,22 + lea r8d,[r13*1+r8] + xor esi,r10d + vpslldq ymm6,ymm6,8 + rorx r14d,r9d,13 + rorx r13d,r9d,2 + lea eax,[r8*1+rax] + vpaddd ymm0,ymm0,ymm6 + and r15d,esi + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((48-128))+rdi] + xor r14d,r12d + xor r15d,r10d + vpaddd ymm6,ymm0,YMMWORD[rbp] + xor r14d,r13d + lea r8d,[r15*1+r8] + mov r12d,ebx + vmovdqa YMMWORD[rsp],ymm6 + vpalignr ymm4,ymm2,ymm1,4 + add edx,DWORD[((32+128))+rsp] + and r12d,eax + rorx r13d,eax,25 + vpalignr ymm7,ymm0,ymm3,4 + rorx r15d,eax,11 + lea r8d,[r14*1+r8] + lea edx,[r12*1+rdx] + vpsrld ymm6,ymm4,7 + andn r12d,eax,ecx + xor r13d,r15d + rorx r14d,eax,6 + vpaddd ymm1,ymm1,ymm7 + lea edx,[r12*1+rdx] + xor r13d,r14d + mov r15d,r8d + vpsrld ymm7,ymm4,3 + rorx r12d,r8d,22 + lea edx,[r13*1+rdx] + xor r15d,r9d + vpslld ymm5,ymm4,14 + rorx r14d,r8d,13 + rorx r13d,r8d,2 + lea r11d,[rdx*1+r11] + vpxor ymm4,ymm7,ymm6 + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((64-128))+rdi] + xor r14d,r12d + xor esi,r9d + vpshufd ymm7,ymm0,250 + xor r14d,r13d + lea edx,[rsi*1+rdx] + mov r12d,eax + vpsrld ymm6,ymm6,11 + add ecx,DWORD[((36+128))+rsp] + and r12d,r11d + rorx r13d,r11d,25 + vpxor ymm4,ymm4,ymm5 + rorx esi,r11d,11 + lea edx,[r14*1+rdx] + lea ecx,[r12*1+rcx] + vpslld ymm5,ymm5,11 + andn r12d,r11d,ebx + xor r13d,esi + rorx r14d,r11d,6 + vpxor ymm4,ymm4,ymm6 + lea ecx,[r12*1+rcx] + xor r13d,r14d + mov esi,edx + vpsrld ymm6,ymm7,10 + rorx r12d,edx,22 + lea ecx,[r13*1+rcx] + xor esi,r8d + vpxor ymm4,ymm4,ymm5 + rorx r14d,edx,13 + rorx r13d,edx,2 + lea r10d,[rcx*1+r10] + vpsrlq ymm7,ymm7,17 + and r15d,esi + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((80-128))+rdi] + xor r14d,r12d + xor r15d,r8d + vpaddd ymm1,ymm1,ymm4 + xor r14d,r13d + lea ecx,[r15*1+rcx] + mov r12d,r11d + vpxor ymm6,ymm6,ymm7 + add ebx,DWORD[((40+128))+rsp] + and r12d,r10d + rorx r13d,r10d,25 + vpsrlq ymm7,ymm7,2 + rorx r15d,r10d,11 + lea ecx,[r14*1+rcx] + lea ebx,[r12*1+rbx] + vpxor ymm6,ymm6,ymm7 + andn r12d,r10d,eax + xor r13d,r15d + rorx r14d,r10d,6 + vpshufd ymm6,ymm6,132 + lea ebx,[r12*1+rbx] + xor r13d,r14d + mov r15d,ecx + vpsrldq ymm6,ymm6,8 + rorx r12d,ecx,22 + lea ebx,[r13*1+rbx] + xor r15d,edx + vpaddd ymm1,ymm1,ymm6 + rorx r14d,ecx,13 + rorx r13d,ecx,2 + lea r9d,[rbx*1+r9] + vpshufd ymm7,ymm1,80 + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((96-128))+rdi] + xor r14d,r12d + xor esi,edx + vpsrld ymm6,ymm7,10 + xor r14d,r13d + lea ebx,[rsi*1+rbx] + mov r12d,r10d + vpsrlq ymm7,ymm7,17 + add eax,DWORD[((44+128))+rsp] + and r12d,r9d + rorx r13d,r9d,25 + vpxor ymm6,ymm6,ymm7 + rorx esi,r9d,11 + lea ebx,[r14*1+rbx] + lea eax,[r12*1+rax] + vpsrlq ymm7,ymm7,2 + andn r12d,r9d,r11d + xor r13d,esi + rorx r14d,r9d,6 + vpxor ymm6,ymm6,ymm7 + lea eax,[r12*1+rax] + xor r13d,r14d + mov esi,ebx + vpshufd ymm6,ymm6,232 + rorx r12d,ebx,22 + lea eax,[r13*1+rax] + xor esi,ecx + vpslldq ymm6,ymm6,8 + rorx r14d,ebx,13 + rorx r13d,ebx,2 + lea r8d,[rax*1+r8] + vpaddd ymm1,ymm1,ymm6 + and r15d,esi + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((112-128))+rdi] + xor r14d,r12d + xor r15d,ecx + vpaddd ymm6,ymm1,YMMWORD[32+rbp] + xor r14d,r13d + lea eax,[r15*1+rax] + mov r12d,r9d + vmovdqa YMMWORD[32+rsp],ymm6 + lea rsp,[((-64))+rsp] + vpalignr ymm4,ymm3,ymm2,4 + add r11d,DWORD[((0+128))+rsp] + and r12d,r8d + rorx r13d,r8d,25 + vpalignr ymm7,ymm1,ymm0,4 + rorx r15d,r8d,11 + lea eax,[r14*1+rax] + lea r11d,[r12*1+r11] + vpsrld ymm6,ymm4,7 + andn r12d,r8d,r10d + xor r13d,r15d + rorx r14d,r8d,6 + vpaddd ymm2,ymm2,ymm7 + lea r11d,[r12*1+r11] + xor r13d,r14d + mov r15d,eax + vpsrld ymm7,ymm4,3 + rorx r12d,eax,22 + lea r11d,[r13*1+r11] + xor r15d,ebx + vpslld ymm5,ymm4,14 + rorx r14d,eax,13 + rorx r13d,eax,2 + lea edx,[r11*1+rdx] + vpxor ymm4,ymm7,ymm6 + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((128-128))+rdi] + xor r14d,r12d + xor esi,ebx + vpshufd ymm7,ymm1,250 + xor r14d,r13d + lea r11d,[rsi*1+r11] + mov r12d,r8d + vpsrld ymm6,ymm6,11 + add r10d,DWORD[((4+128))+rsp] + and r12d,edx + rorx r13d,edx,25 + vpxor ymm4,ymm4,ymm5 + rorx esi,edx,11 + lea r11d,[r14*1+r11] + lea r10d,[r12*1+r10] + vpslld ymm5,ymm5,11 + andn r12d,edx,r9d + xor r13d,esi + rorx r14d,edx,6 + vpxor ymm4,ymm4,ymm6 + lea r10d,[r12*1+r10] + xor r13d,r14d + mov esi,r11d + vpsrld ymm6,ymm7,10 + rorx r12d,r11d,22 + lea r10d,[r13*1+r10] + xor esi,eax + vpxor ymm4,ymm4,ymm5 + rorx r14d,r11d,13 + rorx r13d,r11d,2 + lea ecx,[r10*1+rcx] + vpsrlq ymm7,ymm7,17 + and r15d,esi + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((144-128))+rdi] + xor r14d,r12d + xor r15d,eax + vpaddd ymm2,ymm2,ymm4 + xor r14d,r13d + lea r10d,[r15*1+r10] + mov r12d,edx + vpxor ymm6,ymm6,ymm7 + add r9d,DWORD[((8+128))+rsp] + and r12d,ecx + rorx r13d,ecx,25 + vpsrlq ymm7,ymm7,2 + rorx r15d,ecx,11 + lea r10d,[r14*1+r10] + lea r9d,[r12*1+r9] + vpxor ymm6,ymm6,ymm7 + andn r12d,ecx,r8d + xor r13d,r15d + rorx r14d,ecx,6 + vpshufd ymm6,ymm6,132 + lea r9d,[r12*1+r9] + xor r13d,r14d + mov r15d,r10d + vpsrldq ymm6,ymm6,8 + rorx r12d,r10d,22 + lea r9d,[r13*1+r9] + xor r15d,r11d + vpaddd ymm2,ymm2,ymm6 + rorx r14d,r10d,13 + rorx r13d,r10d,2 + lea ebx,[r9*1+rbx] + vpshufd ymm7,ymm2,80 + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((160-128))+rdi] + xor r14d,r12d + xor esi,r11d + vpsrld ymm6,ymm7,10 + xor r14d,r13d + lea r9d,[rsi*1+r9] + mov r12d,ecx + vpsrlq ymm7,ymm7,17 + add r8d,DWORD[((12+128))+rsp] + and r12d,ebx + rorx r13d,ebx,25 + vpxor ymm6,ymm6,ymm7 + rorx esi,ebx,11 + lea r9d,[r14*1+r9] + lea r8d,[r12*1+r8] + vpsrlq ymm7,ymm7,2 + andn r12d,ebx,edx + xor r13d,esi + rorx r14d,ebx,6 + vpxor ymm6,ymm6,ymm7 + lea r8d,[r12*1+r8] + xor r13d,r14d + mov esi,r9d + vpshufd ymm6,ymm6,232 + rorx r12d,r9d,22 + lea r8d,[r13*1+r8] + xor esi,r10d + vpslldq ymm6,ymm6,8 + rorx r14d,r9d,13 + rorx r13d,r9d,2 + lea eax,[r8*1+rax] + vpaddd ymm2,ymm2,ymm6 + and r15d,esi + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((176-128))+rdi] + xor r14d,r12d + xor r15d,r10d + vpaddd ymm6,ymm2,YMMWORD[64+rbp] + xor r14d,r13d + lea r8d,[r15*1+r8] + mov r12d,ebx + vmovdqa YMMWORD[rsp],ymm6 + vpalignr ymm4,ymm0,ymm3,4 + add edx,DWORD[((32+128))+rsp] + and r12d,eax + rorx r13d,eax,25 + vpalignr ymm7,ymm2,ymm1,4 + rorx r15d,eax,11 + lea r8d,[r14*1+r8] + lea edx,[r12*1+rdx] + vpsrld ymm6,ymm4,7 + andn r12d,eax,ecx + xor r13d,r15d + rorx r14d,eax,6 + vpaddd ymm3,ymm3,ymm7 + lea edx,[r12*1+rdx] + xor r13d,r14d + mov r15d,r8d + vpsrld ymm7,ymm4,3 + rorx r12d,r8d,22 + lea edx,[r13*1+rdx] + xor r15d,r9d + vpslld ymm5,ymm4,14 + rorx r14d,r8d,13 + rorx r13d,r8d,2 + lea r11d,[rdx*1+r11] + vpxor ymm4,ymm7,ymm6 + and esi,r15d + vpand xmm8,xmm11,xmm12 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((192-128))+rdi] + xor r14d,r12d + xor esi,r9d + vpshufd ymm7,ymm2,250 + xor r14d,r13d + lea edx,[rsi*1+rdx] + mov r12d,eax + vpsrld ymm6,ymm6,11 + add ecx,DWORD[((36+128))+rsp] + and r12d,r11d + rorx r13d,r11d,25 + vpxor ymm4,ymm4,ymm5 + rorx esi,r11d,11 + lea edx,[r14*1+rdx] + lea ecx,[r12*1+rcx] + vpslld ymm5,ymm5,11 + andn r12d,r11d,ebx + xor r13d,esi + rorx r14d,r11d,6 + vpxor ymm4,ymm4,ymm6 + lea ecx,[r12*1+rcx] + xor r13d,r14d + mov esi,edx + vpsrld ymm6,ymm7,10 + rorx r12d,edx,22 + lea ecx,[r13*1+rcx] + xor esi,r8d + vpxor ymm4,ymm4,ymm5 + rorx r14d,edx,13 + rorx r13d,edx,2 + lea r10d,[rcx*1+r10] + vpsrlq ymm7,ymm7,17 + and r15d,esi + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((208-128))+rdi] + xor r14d,r12d + xor r15d,r8d + vpaddd ymm3,ymm3,ymm4 + xor r14d,r13d + lea ecx,[r15*1+rcx] + mov r12d,r11d + vpxor ymm6,ymm6,ymm7 + add ebx,DWORD[((40+128))+rsp] + and r12d,r10d + rorx r13d,r10d,25 + vpsrlq ymm7,ymm7,2 + rorx r15d,r10d,11 + lea ecx,[r14*1+rcx] + lea ebx,[r12*1+rbx] + vpxor ymm6,ymm6,ymm7 + andn r12d,r10d,eax + xor r13d,r15d + rorx r14d,r10d,6 + vpshufd ymm6,ymm6,132 + lea ebx,[r12*1+rbx] + xor r13d,r14d + mov r15d,ecx + vpsrldq ymm6,ymm6,8 + rorx r12d,ecx,22 + lea ebx,[r13*1+rbx] + xor r15d,edx + vpaddd ymm3,ymm3,ymm6 + rorx r14d,ecx,13 + rorx r13d,ecx,2 + lea r9d,[rbx*1+r9] + vpshufd ymm7,ymm3,80 + and esi,r15d + vpand xmm11,xmm11,xmm13 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((224-128))+rdi] + xor r14d,r12d + xor esi,edx + vpsrld ymm6,ymm7,10 + xor r14d,r13d + lea ebx,[rsi*1+rbx] + mov r12d,r10d + vpsrlq ymm7,ymm7,17 + add eax,DWORD[((44+128))+rsp] + and r12d,r9d + rorx r13d,r9d,25 + vpxor ymm6,ymm6,ymm7 + rorx esi,r9d,11 + lea ebx,[r14*1+rbx] + lea eax,[r12*1+rax] + vpsrlq ymm7,ymm7,2 + andn r12d,r9d,r11d + xor r13d,esi + rorx r14d,r9d,6 + vpxor ymm6,ymm6,ymm7 + lea eax,[r12*1+rax] + xor r13d,r14d + mov esi,ebx + vpshufd ymm6,ymm6,232 + rorx r12d,ebx,22 + lea eax,[r13*1+rax] + xor esi,ecx + vpslldq ymm6,ymm6,8 + rorx r14d,ebx,13 + rorx r13d,ebx,2 + lea r8d,[rax*1+r8] + vpaddd ymm3,ymm3,ymm6 + and r15d,esi + vpor xmm8,xmm8,xmm11 + vaesenclast xmm11,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((0-128))+rdi] + xor r14d,r12d + xor r15d,ecx + vpaddd ymm6,ymm3,YMMWORD[96+rbp] + xor r14d,r13d + lea eax,[r15*1+rax] + mov r12d,r9d + vmovdqa YMMWORD[32+rsp],ymm6 + vmovq r13,xmm15 + vpextrq r15,xmm15,1 + vpand xmm11,xmm11,xmm14 + vpor xmm8,xmm8,xmm11 + vmovdqu XMMWORD[r13*1+r15],xmm8 + lea r13,[16+r13] + lea rbp,[128+rbp] + cmp BYTE[3+rbp],0 + jne NEAR $L$avx2_00_47 + vmovdqu xmm9,XMMWORD[r13] + vpinsrq xmm15,xmm15,r13,0 + add r11d,DWORD[((0+64))+rsp] + and r12d,r8d + rorx r13d,r8d,25 + rorx r15d,r8d,11 + lea eax,[r14*1+rax] + lea r11d,[r12*1+r11] + andn r12d,r8d,r10d + xor r13d,r15d + rorx r14d,r8d,6 + lea r11d,[r12*1+r11] + xor r13d,r14d + mov r15d,eax + rorx r12d,eax,22 + lea r11d,[r13*1+r11] + xor r15d,ebx + rorx r14d,eax,13 + rorx r13d,eax,2 + lea edx,[r11*1+rdx] + and esi,r15d + vpxor xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((16-128))+rdi] + xor r14d,r12d + xor esi,ebx + xor r14d,r13d + lea r11d,[rsi*1+r11] + mov r12d,r8d + add r10d,DWORD[((4+64))+rsp] + and r12d,edx + rorx r13d,edx,25 + rorx esi,edx,11 + lea r11d,[r14*1+r11] + lea r10d,[r12*1+r10] + andn r12d,edx,r9d + xor r13d,esi + rorx r14d,edx,6 + lea r10d,[r12*1+r10] + xor r13d,r14d + mov esi,r11d + rorx r12d,r11d,22 + lea r10d,[r13*1+r10] + xor esi,eax + rorx r14d,r11d,13 + rorx r13d,r11d,2 + lea ecx,[r10*1+rcx] + and r15d,esi + vpxor xmm9,xmm9,xmm8 + xor r14d,r12d + xor r15d,eax + xor r14d,r13d + lea r10d,[r15*1+r10] + mov r12d,edx + add r9d,DWORD[((8+64))+rsp] + and r12d,ecx + rorx r13d,ecx,25 + rorx r15d,ecx,11 + lea r10d,[r14*1+r10] + lea r9d,[r12*1+r9] + andn r12d,ecx,r8d + xor r13d,r15d + rorx r14d,ecx,6 + lea r9d,[r12*1+r9] + xor r13d,r14d + mov r15d,r10d + rorx r12d,r10d,22 + lea r9d,[r13*1+r9] + xor r15d,r11d + rorx r14d,r10d,13 + rorx r13d,r10d,2 + lea ebx,[r9*1+rbx] + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((32-128))+rdi] + xor r14d,r12d + xor esi,r11d + xor r14d,r13d + lea r9d,[rsi*1+r9] + mov r12d,ecx + add r8d,DWORD[((12+64))+rsp] + and r12d,ebx + rorx r13d,ebx,25 + rorx esi,ebx,11 + lea r9d,[r14*1+r9] + lea r8d,[r12*1+r8] + andn r12d,ebx,edx + xor r13d,esi + rorx r14d,ebx,6 + lea r8d,[r12*1+r8] + xor r13d,r14d + mov esi,r9d + rorx r12d,r9d,22 + lea r8d,[r13*1+r8] + xor esi,r10d + rorx r14d,r9d,13 + rorx r13d,r9d,2 + lea eax,[r8*1+rax] + and r15d,esi + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((48-128))+rdi] + xor r14d,r12d + xor r15d,r10d + xor r14d,r13d + lea r8d,[r15*1+r8] + mov r12d,ebx + add edx,DWORD[((32+64))+rsp] + and r12d,eax + rorx r13d,eax,25 + rorx r15d,eax,11 + lea r8d,[r14*1+r8] + lea edx,[r12*1+rdx] + andn r12d,eax,ecx + xor r13d,r15d + rorx r14d,eax,6 + lea edx,[r12*1+rdx] + xor r13d,r14d + mov r15d,r8d + rorx r12d,r8d,22 + lea edx,[r13*1+rdx] + xor r15d,r9d + rorx r14d,r8d,13 + rorx r13d,r8d,2 + lea r11d,[rdx*1+r11] + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((64-128))+rdi] + xor r14d,r12d + xor esi,r9d + xor r14d,r13d + lea edx,[rsi*1+rdx] + mov r12d,eax + add ecx,DWORD[((36+64))+rsp] + and r12d,r11d + rorx r13d,r11d,25 + rorx esi,r11d,11 + lea edx,[r14*1+rdx] + lea ecx,[r12*1+rcx] + andn r12d,r11d,ebx + xor r13d,esi + rorx r14d,r11d,6 + lea ecx,[r12*1+rcx] + xor r13d,r14d + mov esi,edx + rorx r12d,edx,22 + lea ecx,[r13*1+rcx] + xor esi,r8d + rorx r14d,edx,13 + rorx r13d,edx,2 + lea r10d,[rcx*1+r10] + and r15d,esi + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((80-128))+rdi] + xor r14d,r12d + xor r15d,r8d + xor r14d,r13d + lea ecx,[r15*1+rcx] + mov r12d,r11d + add ebx,DWORD[((40+64))+rsp] + and r12d,r10d + rorx r13d,r10d,25 + rorx r15d,r10d,11 + lea ecx,[r14*1+rcx] + lea ebx,[r12*1+rbx] + andn r12d,r10d,eax + xor r13d,r15d + rorx r14d,r10d,6 + lea ebx,[r12*1+rbx] + xor r13d,r14d + mov r15d,ecx + rorx r12d,ecx,22 + lea ebx,[r13*1+rbx] + xor r15d,edx + rorx r14d,ecx,13 + rorx r13d,ecx,2 + lea r9d,[rbx*1+r9] + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((96-128))+rdi] + xor r14d,r12d + xor esi,edx + xor r14d,r13d + lea ebx,[rsi*1+rbx] + mov r12d,r10d + add eax,DWORD[((44+64))+rsp] + and r12d,r9d + rorx r13d,r9d,25 + rorx esi,r9d,11 + lea ebx,[r14*1+rbx] + lea eax,[r12*1+rax] + andn r12d,r9d,r11d + xor r13d,esi + rorx r14d,r9d,6 + lea eax,[r12*1+rax] + xor r13d,r14d + mov esi,ebx + rorx r12d,ebx,22 + lea eax,[r13*1+rax] + xor esi,ecx + rorx r14d,ebx,13 + rorx r13d,ebx,2 + lea r8d,[rax*1+r8] + and r15d,esi + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((112-128))+rdi] + xor r14d,r12d + xor r15d,ecx + xor r14d,r13d + lea eax,[r15*1+rax] + mov r12d,r9d + add r11d,DWORD[rsp] + and r12d,r8d + rorx r13d,r8d,25 + rorx r15d,r8d,11 + lea eax,[r14*1+rax] + lea r11d,[r12*1+r11] + andn r12d,r8d,r10d + xor r13d,r15d + rorx r14d,r8d,6 + lea r11d,[r12*1+r11] + xor r13d,r14d + mov r15d,eax + rorx r12d,eax,22 + lea r11d,[r13*1+r11] + xor r15d,ebx + rorx r14d,eax,13 + rorx r13d,eax,2 + lea edx,[r11*1+rdx] + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((128-128))+rdi] + xor r14d,r12d + xor esi,ebx + xor r14d,r13d + lea r11d,[rsi*1+r11] + mov r12d,r8d + add r10d,DWORD[4+rsp] + and r12d,edx + rorx r13d,edx,25 + rorx esi,edx,11 + lea r11d,[r14*1+r11] + lea r10d,[r12*1+r10] + andn r12d,edx,r9d + xor r13d,esi + rorx r14d,edx,6 + lea r10d,[r12*1+r10] + xor r13d,r14d + mov esi,r11d + rorx r12d,r11d,22 + lea r10d,[r13*1+r10] + xor esi,eax + rorx r14d,r11d,13 + rorx r13d,r11d,2 + lea ecx,[r10*1+rcx] + and r15d,esi + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((144-128))+rdi] + xor r14d,r12d + xor r15d,eax + xor r14d,r13d + lea r10d,[r15*1+r10] + mov r12d,edx + add r9d,DWORD[8+rsp] + and r12d,ecx + rorx r13d,ecx,25 + rorx r15d,ecx,11 + lea r10d,[r14*1+r10] + lea r9d,[r12*1+r9] + andn r12d,ecx,r8d + xor r13d,r15d + rorx r14d,ecx,6 + lea r9d,[r12*1+r9] + xor r13d,r14d + mov r15d,r10d + rorx r12d,r10d,22 + lea r9d,[r13*1+r9] + xor r15d,r11d + rorx r14d,r10d,13 + rorx r13d,r10d,2 + lea ebx,[r9*1+rbx] + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((160-128))+rdi] + xor r14d,r12d + xor esi,r11d + xor r14d,r13d + lea r9d,[rsi*1+r9] + mov r12d,ecx + add r8d,DWORD[12+rsp] + and r12d,ebx + rorx r13d,ebx,25 + rorx esi,ebx,11 + lea r9d,[r14*1+r9] + lea r8d,[r12*1+r8] + andn r12d,ebx,edx + xor r13d,esi + rorx r14d,ebx,6 + lea r8d,[r12*1+r8] + xor r13d,r14d + mov esi,r9d + rorx r12d,r9d,22 + lea r8d,[r13*1+r8] + xor esi,r10d + rorx r14d,r9d,13 + rorx r13d,r9d,2 + lea eax,[r8*1+rax] + and r15d,esi + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((176-128))+rdi] + xor r14d,r12d + xor r15d,r10d + xor r14d,r13d + lea r8d,[r15*1+r8] + mov r12d,ebx + add edx,DWORD[32+rsp] + and r12d,eax + rorx r13d,eax,25 + rorx r15d,eax,11 + lea r8d,[r14*1+r8] + lea edx,[r12*1+rdx] + andn r12d,eax,ecx + xor r13d,r15d + rorx r14d,eax,6 + lea edx,[r12*1+rdx] + xor r13d,r14d + mov r15d,r8d + rorx r12d,r8d,22 + lea edx,[r13*1+rdx] + xor r15d,r9d + rorx r14d,r8d,13 + rorx r13d,r8d,2 + lea r11d,[rdx*1+r11] + and esi,r15d + vpand xmm8,xmm11,xmm12 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((192-128))+rdi] + xor r14d,r12d + xor esi,r9d + xor r14d,r13d + lea edx,[rsi*1+rdx] + mov r12d,eax + add ecx,DWORD[36+rsp] + and r12d,r11d + rorx r13d,r11d,25 + rorx esi,r11d,11 + lea edx,[r14*1+rdx] + lea ecx,[r12*1+rcx] + andn r12d,r11d,ebx + xor r13d,esi + rorx r14d,r11d,6 + lea ecx,[r12*1+rcx] + xor r13d,r14d + mov esi,edx + rorx r12d,edx,22 + lea ecx,[r13*1+rcx] + xor esi,r8d + rorx r14d,edx,13 + rorx r13d,edx,2 + lea r10d,[rcx*1+r10] + and r15d,esi + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((208-128))+rdi] + xor r14d,r12d + xor r15d,r8d + xor r14d,r13d + lea ecx,[r15*1+rcx] + mov r12d,r11d + add ebx,DWORD[40+rsp] + and r12d,r10d + rorx r13d,r10d,25 + rorx r15d,r10d,11 + lea ecx,[r14*1+rcx] + lea ebx,[r12*1+rbx] + andn r12d,r10d,eax + xor r13d,r15d + rorx r14d,r10d,6 + lea ebx,[r12*1+rbx] + xor r13d,r14d + mov r15d,ecx + rorx r12d,ecx,22 + lea ebx,[r13*1+rbx] + xor r15d,edx + rorx r14d,ecx,13 + rorx r13d,ecx,2 + lea r9d,[rbx*1+r9] + and esi,r15d + vpand xmm11,xmm11,xmm13 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((224-128))+rdi] + xor r14d,r12d + xor esi,edx + xor r14d,r13d + lea ebx,[rsi*1+rbx] + mov r12d,r10d + add eax,DWORD[44+rsp] + and r12d,r9d + rorx r13d,r9d,25 + rorx esi,r9d,11 + lea ebx,[r14*1+rbx] + lea eax,[r12*1+rax] + andn r12d,r9d,r11d + xor r13d,esi + rorx r14d,r9d,6 + lea eax,[r12*1+rax] + xor r13d,r14d + mov esi,ebx + rorx r12d,ebx,22 + lea eax,[r13*1+rax] + xor esi,ecx + rorx r14d,ebx,13 + rorx r13d,ebx,2 + lea r8d,[rax*1+r8] + and r15d,esi + vpor xmm8,xmm8,xmm11 + vaesenclast xmm11,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((0-128))+rdi] + xor r14d,r12d + xor r15d,ecx + xor r14d,r13d + lea eax,[r15*1+rax] + mov r12d,r9d + vpextrq r12,xmm15,1 + vmovq r13,xmm15 + mov r15,QWORD[552+rsp] + add eax,r14d + lea rbp,[448+rsp] + + vpand xmm11,xmm11,xmm14 + vpor xmm8,xmm8,xmm11 + vmovdqu XMMWORD[r13*1+r12],xmm8 + lea r13,[16+r13] + + add eax,DWORD[r15] + add ebx,DWORD[4+r15] + add ecx,DWORD[8+r15] + add edx,DWORD[12+r15] + add r8d,DWORD[16+r15] + add r9d,DWORD[20+r15] + add r10d,DWORD[24+r15] + add r11d,DWORD[28+r15] + + mov DWORD[r15],eax + mov DWORD[4+r15],ebx + mov DWORD[8+r15],ecx + mov DWORD[12+r15],edx + mov DWORD[16+r15],r8d + mov DWORD[20+r15],r9d + mov DWORD[24+r15],r10d + mov DWORD[28+r15],r11d + + cmp r13,QWORD[80+rbp] + je NEAR $L$done_avx2 + + xor r14d,r14d + mov esi,ebx + mov r12d,r9d + xor esi,ecx + jmp NEAR $L$ower_avx2 +ALIGN 16 +$L$ower_avx2: + vmovdqu xmm9,XMMWORD[r13] + vpinsrq xmm15,xmm15,r13,0 + add r11d,DWORD[((0+16))+rbp] + and r12d,r8d + rorx r13d,r8d,25 + rorx r15d,r8d,11 + lea eax,[r14*1+rax] + lea r11d,[r12*1+r11] + andn r12d,r8d,r10d + xor r13d,r15d + rorx r14d,r8d,6 + lea r11d,[r12*1+r11] + xor r13d,r14d + mov r15d,eax + rorx r12d,eax,22 + lea r11d,[r13*1+r11] + xor r15d,ebx + rorx r14d,eax,13 + rorx r13d,eax,2 + lea edx,[r11*1+rdx] + and esi,r15d + vpxor xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((16-128))+rdi] + xor r14d,r12d + xor esi,ebx + xor r14d,r13d + lea r11d,[rsi*1+r11] + mov r12d,r8d + add r10d,DWORD[((4+16))+rbp] + and r12d,edx + rorx r13d,edx,25 + rorx esi,edx,11 + lea r11d,[r14*1+r11] + lea r10d,[r12*1+r10] + andn r12d,edx,r9d + xor r13d,esi + rorx r14d,edx,6 + lea r10d,[r12*1+r10] + xor r13d,r14d + mov esi,r11d + rorx r12d,r11d,22 + lea r10d,[r13*1+r10] + xor esi,eax + rorx r14d,r11d,13 + rorx r13d,r11d,2 + lea ecx,[r10*1+rcx] + and r15d,esi + vpxor xmm9,xmm9,xmm8 + xor r14d,r12d + xor r15d,eax + xor r14d,r13d + lea r10d,[r15*1+r10] + mov r12d,edx + add r9d,DWORD[((8+16))+rbp] + and r12d,ecx + rorx r13d,ecx,25 + rorx r15d,ecx,11 + lea r10d,[r14*1+r10] + lea r9d,[r12*1+r9] + andn r12d,ecx,r8d + xor r13d,r15d + rorx r14d,ecx,6 + lea r9d,[r12*1+r9] + xor r13d,r14d + mov r15d,r10d + rorx r12d,r10d,22 + lea r9d,[r13*1+r9] + xor r15d,r11d + rorx r14d,r10d,13 + rorx r13d,r10d,2 + lea ebx,[r9*1+rbx] + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((32-128))+rdi] + xor r14d,r12d + xor esi,r11d + xor r14d,r13d + lea r9d,[rsi*1+r9] + mov r12d,ecx + add r8d,DWORD[((12+16))+rbp] + and r12d,ebx + rorx r13d,ebx,25 + rorx esi,ebx,11 + lea r9d,[r14*1+r9] + lea r8d,[r12*1+r8] + andn r12d,ebx,edx + xor r13d,esi + rorx r14d,ebx,6 + lea r8d,[r12*1+r8] + xor r13d,r14d + mov esi,r9d + rorx r12d,r9d,22 + lea r8d,[r13*1+r8] + xor esi,r10d + rorx r14d,r9d,13 + rorx r13d,r9d,2 + lea eax,[r8*1+rax] + and r15d,esi + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((48-128))+rdi] + xor r14d,r12d + xor r15d,r10d + xor r14d,r13d + lea r8d,[r15*1+r8] + mov r12d,ebx + add edx,DWORD[((32+16))+rbp] + and r12d,eax + rorx r13d,eax,25 + rorx r15d,eax,11 + lea r8d,[r14*1+r8] + lea edx,[r12*1+rdx] + andn r12d,eax,ecx + xor r13d,r15d + rorx r14d,eax,6 + lea edx,[r12*1+rdx] + xor r13d,r14d + mov r15d,r8d + rorx r12d,r8d,22 + lea edx,[r13*1+rdx] + xor r15d,r9d + rorx r14d,r8d,13 + rorx r13d,r8d,2 + lea r11d,[rdx*1+r11] + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((64-128))+rdi] + xor r14d,r12d + xor esi,r9d + xor r14d,r13d + lea edx,[rsi*1+rdx] + mov r12d,eax + add ecx,DWORD[((36+16))+rbp] + and r12d,r11d + rorx r13d,r11d,25 + rorx esi,r11d,11 + lea edx,[r14*1+rdx] + lea ecx,[r12*1+rcx] + andn r12d,r11d,ebx + xor r13d,esi + rorx r14d,r11d,6 + lea ecx,[r12*1+rcx] + xor r13d,r14d + mov esi,edx + rorx r12d,edx,22 + lea ecx,[r13*1+rcx] + xor esi,r8d + rorx r14d,edx,13 + rorx r13d,edx,2 + lea r10d,[rcx*1+r10] + and r15d,esi + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((80-128))+rdi] + xor r14d,r12d + xor r15d,r8d + xor r14d,r13d + lea ecx,[r15*1+rcx] + mov r12d,r11d + add ebx,DWORD[((40+16))+rbp] + and r12d,r10d + rorx r13d,r10d,25 + rorx r15d,r10d,11 + lea ecx,[r14*1+rcx] + lea ebx,[r12*1+rbx] + andn r12d,r10d,eax + xor r13d,r15d + rorx r14d,r10d,6 + lea ebx,[r12*1+rbx] + xor r13d,r14d + mov r15d,ecx + rorx r12d,ecx,22 + lea ebx,[r13*1+rbx] + xor r15d,edx + rorx r14d,ecx,13 + rorx r13d,ecx,2 + lea r9d,[rbx*1+r9] + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((96-128))+rdi] + xor r14d,r12d + xor esi,edx + xor r14d,r13d + lea ebx,[rsi*1+rbx] + mov r12d,r10d + add eax,DWORD[((44+16))+rbp] + and r12d,r9d + rorx r13d,r9d,25 + rorx esi,r9d,11 + lea ebx,[r14*1+rbx] + lea eax,[r12*1+rax] + andn r12d,r9d,r11d + xor r13d,esi + rorx r14d,r9d,6 + lea eax,[r12*1+rax] + xor r13d,r14d + mov esi,ebx + rorx r12d,ebx,22 + lea eax,[r13*1+rax] + xor esi,ecx + rorx r14d,ebx,13 + rorx r13d,ebx,2 + lea r8d,[rax*1+r8] + and r15d,esi + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((112-128))+rdi] + xor r14d,r12d + xor r15d,ecx + xor r14d,r13d + lea eax,[r15*1+rax] + mov r12d,r9d + lea rbp,[((-64))+rbp] + add r11d,DWORD[((0+16))+rbp] + and r12d,r8d + rorx r13d,r8d,25 + rorx r15d,r8d,11 + lea eax,[r14*1+rax] + lea r11d,[r12*1+r11] + andn r12d,r8d,r10d + xor r13d,r15d + rorx r14d,r8d,6 + lea r11d,[r12*1+r11] + xor r13d,r14d + mov r15d,eax + rorx r12d,eax,22 + lea r11d,[r13*1+r11] + xor r15d,ebx + rorx r14d,eax,13 + rorx r13d,eax,2 + lea edx,[r11*1+rdx] + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((128-128))+rdi] + xor r14d,r12d + xor esi,ebx + xor r14d,r13d + lea r11d,[rsi*1+r11] + mov r12d,r8d + add r10d,DWORD[((4+16))+rbp] + and r12d,edx + rorx r13d,edx,25 + rorx esi,edx,11 + lea r11d,[r14*1+r11] + lea r10d,[r12*1+r10] + andn r12d,edx,r9d + xor r13d,esi + rorx r14d,edx,6 + lea r10d,[r12*1+r10] + xor r13d,r14d + mov esi,r11d + rorx r12d,r11d,22 + lea r10d,[r13*1+r10] + xor esi,eax + rorx r14d,r11d,13 + rorx r13d,r11d,2 + lea ecx,[r10*1+rcx] + and r15d,esi + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((144-128))+rdi] + xor r14d,r12d + xor r15d,eax + xor r14d,r13d + lea r10d,[r15*1+r10] + mov r12d,edx + add r9d,DWORD[((8+16))+rbp] + and r12d,ecx + rorx r13d,ecx,25 + rorx r15d,ecx,11 + lea r10d,[r14*1+r10] + lea r9d,[r12*1+r9] + andn r12d,ecx,r8d + xor r13d,r15d + rorx r14d,ecx,6 + lea r9d,[r12*1+r9] + xor r13d,r14d + mov r15d,r10d + rorx r12d,r10d,22 + lea r9d,[r13*1+r9] + xor r15d,r11d + rorx r14d,r10d,13 + rorx r13d,r10d,2 + lea ebx,[r9*1+rbx] + and esi,r15d + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((160-128))+rdi] + xor r14d,r12d + xor esi,r11d + xor r14d,r13d + lea r9d,[rsi*1+r9] + mov r12d,ecx + add r8d,DWORD[((12+16))+rbp] + and r12d,ebx + rorx r13d,ebx,25 + rorx esi,ebx,11 + lea r9d,[r14*1+r9] + lea r8d,[r12*1+r8] + andn r12d,ebx,edx + xor r13d,esi + rorx r14d,ebx,6 + lea r8d,[r12*1+r8] + xor r13d,r14d + mov esi,r9d + rorx r12d,r9d,22 + lea r8d,[r13*1+r8] + xor esi,r10d + rorx r14d,r9d,13 + rorx r13d,r9d,2 + lea eax,[r8*1+rax] + and r15d,esi + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((176-128))+rdi] + xor r14d,r12d + xor r15d,r10d + xor r14d,r13d + lea r8d,[r15*1+r8] + mov r12d,ebx + add edx,DWORD[((32+16))+rbp] + and r12d,eax + rorx r13d,eax,25 + rorx r15d,eax,11 + lea r8d,[r14*1+r8] + lea edx,[r12*1+rdx] + andn r12d,eax,ecx + xor r13d,r15d + rorx r14d,eax,6 + lea edx,[r12*1+rdx] + xor r13d,r14d + mov r15d,r8d + rorx r12d,r8d,22 + lea edx,[r13*1+rdx] + xor r15d,r9d + rorx r14d,r8d,13 + rorx r13d,r8d,2 + lea r11d,[rdx*1+r11] + and esi,r15d + vpand xmm8,xmm11,xmm12 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((192-128))+rdi] + xor r14d,r12d + xor esi,r9d + xor r14d,r13d + lea edx,[rsi*1+rdx] + mov r12d,eax + add ecx,DWORD[((36+16))+rbp] + and r12d,r11d + rorx r13d,r11d,25 + rorx esi,r11d,11 + lea edx,[r14*1+rdx] + lea ecx,[r12*1+rcx] + andn r12d,r11d,ebx + xor r13d,esi + rorx r14d,r11d,6 + lea ecx,[r12*1+rcx] + xor r13d,r14d + mov esi,edx + rorx r12d,edx,22 + lea ecx,[r13*1+rcx] + xor esi,r8d + rorx r14d,edx,13 + rorx r13d,edx,2 + lea r10d,[rcx*1+r10] + and r15d,esi + vaesenclast xmm11,xmm9,xmm10 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((208-128))+rdi] + xor r14d,r12d + xor r15d,r8d + xor r14d,r13d + lea ecx,[r15*1+rcx] + mov r12d,r11d + add ebx,DWORD[((40+16))+rbp] + and r12d,r10d + rorx r13d,r10d,25 + rorx r15d,r10d,11 + lea ecx,[r14*1+rcx] + lea ebx,[r12*1+rbx] + andn r12d,r10d,eax + xor r13d,r15d + rorx r14d,r10d,6 + lea ebx,[r12*1+rbx] + xor r13d,r14d + mov r15d,ecx + rorx r12d,ecx,22 + lea ebx,[r13*1+rbx] + xor r15d,edx + rorx r14d,ecx,13 + rorx r13d,ecx,2 + lea r9d,[rbx*1+r9] + and esi,r15d + vpand xmm11,xmm11,xmm13 + vaesenc xmm9,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((224-128))+rdi] + xor r14d,r12d + xor esi,edx + xor r14d,r13d + lea ebx,[rsi*1+rbx] + mov r12d,r10d + add eax,DWORD[((44+16))+rbp] + and r12d,r9d + rorx r13d,r9d,25 + rorx esi,r9d,11 + lea ebx,[r14*1+rbx] + lea eax,[r12*1+rax] + andn r12d,r9d,r11d + xor r13d,esi + rorx r14d,r9d,6 + lea eax,[r12*1+rax] + xor r13d,r14d + mov esi,ebx + rorx r12d,ebx,22 + lea eax,[r13*1+rax] + xor esi,ecx + rorx r14d,ebx,13 + rorx r13d,ebx,2 + lea r8d,[rax*1+r8] + and r15d,esi + vpor xmm8,xmm8,xmm11 + vaesenclast xmm11,xmm9,xmm10 + vmovdqu xmm10,XMMWORD[((0-128))+rdi] + xor r14d,r12d + xor r15d,ecx + xor r14d,r13d + lea eax,[r15*1+rax] + mov r12d,r9d + vmovq r13,xmm15 + vpextrq r15,xmm15,1 + vpand xmm11,xmm11,xmm14 + vpor xmm8,xmm8,xmm11 + lea rbp,[((-64))+rbp] + vmovdqu XMMWORD[r13*1+r15],xmm8 + lea r13,[16+r13] + cmp rbp,rsp + jae NEAR $L$ower_avx2 + + mov r15,QWORD[552+rsp] + lea r13,[64+r13] + mov rsi,QWORD[560+rsp] + add eax,r14d + lea rsp,[448+rsp] + + add eax,DWORD[r15] + add ebx,DWORD[4+r15] + add ecx,DWORD[8+r15] + add edx,DWORD[12+r15] + add r8d,DWORD[16+r15] + add r9d,DWORD[20+r15] + add r10d,DWORD[24+r15] + lea r12,[r13*1+rsi] + add r11d,DWORD[28+r15] + + cmp r13,QWORD[((64+16))+rsp] + + mov DWORD[r15],eax + cmove r12,rsp + mov DWORD[4+r15],ebx + mov DWORD[8+r15],ecx + mov DWORD[12+r15],edx + mov DWORD[16+r15],r8d + mov DWORD[20+r15],r9d + mov DWORD[24+r15],r10d + mov DWORD[28+r15],r11d + + jbe NEAR $L$oop_avx2 + lea rbp,[rsp] + + + + +$L$done_avx2: + mov r8,QWORD[((64+32))+rbp] + mov rsi,QWORD[((64+56))+rbp] + + vmovdqu XMMWORD[r8],xmm8 + vzeroall + movaps xmm6,XMMWORD[128+rbp] + movaps xmm7,XMMWORD[144+rbp] + movaps xmm8,XMMWORD[160+rbp] + movaps xmm9,XMMWORD[176+rbp] + movaps xmm10,XMMWORD[192+rbp] + movaps xmm11,XMMWORD[208+rbp] + movaps xmm12,XMMWORD[224+rbp] + movaps xmm13,XMMWORD[240+rbp] + movaps xmm14,XMMWORD[256+rbp] + movaps xmm15,XMMWORD[272+rbp] + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue_avx2: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_cbc_sha256_enc_avx2: + +ALIGN 32 +aesni_cbc_sha256_enc_shaext: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_cbc_sha256_enc_shaext: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov r10,QWORD[56+rsp] + lea rsp,[((-168))+rsp] + movaps XMMWORD[(-8-160)+rax],xmm6 + movaps XMMWORD[(-8-144)+rax],xmm7 + movaps XMMWORD[(-8-128)+rax],xmm8 + movaps XMMWORD[(-8-112)+rax],xmm9 + movaps XMMWORD[(-8-96)+rax],xmm10 + movaps XMMWORD[(-8-80)+rax],xmm11 + movaps XMMWORD[(-8-64)+rax],xmm12 + movaps XMMWORD[(-8-48)+rax],xmm13 + movaps XMMWORD[(-8-32)+rax],xmm14 + movaps XMMWORD[(-8-16)+rax],xmm15 +$L$prologue_shaext: + lea rax,[((K256+128))] + movdqu xmm1,XMMWORD[r9] + movdqu xmm2,XMMWORD[16+r9] + movdqa xmm3,XMMWORD[((512-128))+rax] + + mov r11d,DWORD[240+rcx] + sub rsi,rdi + movups xmm15,XMMWORD[rcx] + movups xmm6,XMMWORD[r8] + movups xmm4,XMMWORD[16+rcx] + lea rcx,[112+rcx] + + pshufd xmm0,xmm1,0x1b + pshufd xmm1,xmm1,0xb1 + pshufd xmm2,xmm2,0x1b + movdqa xmm7,xmm3 +DB 102,15,58,15,202,8 + punpcklqdq xmm2,xmm0 + + jmp NEAR $L$oop_shaext + +ALIGN 16 +$L$oop_shaext: + movdqu xmm10,XMMWORD[r10] + movdqu xmm11,XMMWORD[16+r10] + movdqu xmm12,XMMWORD[32+r10] +DB 102,68,15,56,0,211 + movdqu xmm13,XMMWORD[48+r10] + + movdqa xmm0,XMMWORD[((0-128))+rax] + paddd xmm0,xmm10 +DB 102,68,15,56,0,219 + movdqa xmm9,xmm2 + movdqa xmm8,xmm1 + movups xmm14,XMMWORD[rdi] + xorps xmm14,xmm15 + xorps xmm6,xmm14 + movups xmm5,XMMWORD[((-80))+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movups xmm4,XMMWORD[((-64))+rcx] + aesenc xmm6,xmm5 +DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((32-128))+rax] + paddd xmm0,xmm11 +DB 102,68,15,56,0,227 + lea r10,[64+r10] + movups xmm5,XMMWORD[((-48))+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movups xmm4,XMMWORD[((-32))+rcx] + aesenc xmm6,xmm5 +DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((64-128))+rax] + paddd xmm0,xmm12 +DB 102,68,15,56,0,235 +DB 69,15,56,204,211 + movups xmm5,XMMWORD[((-16))+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm3,xmm13 +DB 102,65,15,58,15,220,4 + paddd xmm10,xmm3 + movups xmm4,XMMWORD[rcx] + aesenc xmm6,xmm5 +DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((96-128))+rax] + paddd xmm0,xmm13 +DB 69,15,56,205,213 +DB 69,15,56,204,220 + movups xmm5,XMMWORD[16+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movups xmm4,XMMWORD[32+rcx] + aesenc xmm6,xmm5 + movdqa xmm3,xmm10 +DB 102,65,15,58,15,221,4 + paddd xmm11,xmm3 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((128-128))+rax] + paddd xmm0,xmm10 +DB 69,15,56,205,218 +DB 69,15,56,204,229 + movups xmm5,XMMWORD[48+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm3,xmm11 +DB 102,65,15,58,15,218,4 + paddd xmm12,xmm3 + cmp r11d,11 + jb NEAR $L$aesenclast1 + movups xmm4,XMMWORD[64+rcx] + aesenc xmm6,xmm5 + movups xmm5,XMMWORD[80+rcx] + aesenc xmm6,xmm4 + je NEAR $L$aesenclast1 + movups xmm4,XMMWORD[96+rcx] + aesenc xmm6,xmm5 + movups xmm5,XMMWORD[112+rcx] + aesenc xmm6,xmm4 +$L$aesenclast1: + aesenclast xmm6,xmm5 + movups xmm4,XMMWORD[((16-112))+rcx] + nop +DB 15,56,203,202 + movups xmm14,XMMWORD[16+rdi] + xorps xmm14,xmm15 + movups XMMWORD[rdi*1+rsi],xmm6 + xorps xmm6,xmm14 + movups xmm5,XMMWORD[((-80))+rcx] + aesenc xmm6,xmm4 + movdqa xmm0,XMMWORD[((160-128))+rax] + paddd xmm0,xmm11 +DB 69,15,56,205,227 +DB 69,15,56,204,234 + movups xmm4,XMMWORD[((-64))+rcx] + aesenc xmm6,xmm5 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm3,xmm12 +DB 102,65,15,58,15,219,4 + paddd xmm13,xmm3 + movups xmm5,XMMWORD[((-48))+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((192-128))+rax] + paddd xmm0,xmm12 +DB 69,15,56,205,236 +DB 69,15,56,204,211 + movups xmm4,XMMWORD[((-32))+rcx] + aesenc xmm6,xmm5 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm3,xmm13 +DB 102,65,15,58,15,220,4 + paddd xmm10,xmm3 + movups xmm5,XMMWORD[((-16))+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((224-128))+rax] + paddd xmm0,xmm13 +DB 69,15,56,205,213 +DB 69,15,56,204,220 + movups xmm4,XMMWORD[rcx] + aesenc xmm6,xmm5 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm3,xmm10 +DB 102,65,15,58,15,221,4 + paddd xmm11,xmm3 + movups xmm5,XMMWORD[16+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((256-128))+rax] + paddd xmm0,xmm10 +DB 69,15,56,205,218 +DB 69,15,56,204,229 + movups xmm4,XMMWORD[32+rcx] + aesenc xmm6,xmm5 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm3,xmm11 +DB 102,65,15,58,15,218,4 + paddd xmm12,xmm3 + movups xmm5,XMMWORD[48+rcx] + aesenc xmm6,xmm4 + cmp r11d,11 + jb NEAR $L$aesenclast2 + movups xmm4,XMMWORD[64+rcx] + aesenc xmm6,xmm5 + movups xmm5,XMMWORD[80+rcx] + aesenc xmm6,xmm4 + je NEAR $L$aesenclast2 + movups xmm4,XMMWORD[96+rcx] + aesenc xmm6,xmm5 + movups xmm5,XMMWORD[112+rcx] + aesenc xmm6,xmm4 +$L$aesenclast2: + aesenclast xmm6,xmm5 + movups xmm4,XMMWORD[((16-112))+rcx] + nop +DB 15,56,203,202 + movups xmm14,XMMWORD[32+rdi] + xorps xmm14,xmm15 + movups XMMWORD[16+rdi*1+rsi],xmm6 + xorps xmm6,xmm14 + movups xmm5,XMMWORD[((-80))+rcx] + aesenc xmm6,xmm4 + movdqa xmm0,XMMWORD[((288-128))+rax] + paddd xmm0,xmm11 +DB 69,15,56,205,227 +DB 69,15,56,204,234 + movups xmm4,XMMWORD[((-64))+rcx] + aesenc xmm6,xmm5 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm3,xmm12 +DB 102,65,15,58,15,219,4 + paddd xmm13,xmm3 + movups xmm5,XMMWORD[((-48))+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((320-128))+rax] + paddd xmm0,xmm12 +DB 69,15,56,205,236 +DB 69,15,56,204,211 + movups xmm4,XMMWORD[((-32))+rcx] + aesenc xmm6,xmm5 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm3,xmm13 +DB 102,65,15,58,15,220,4 + paddd xmm10,xmm3 + movups xmm5,XMMWORD[((-16))+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((352-128))+rax] + paddd xmm0,xmm13 +DB 69,15,56,205,213 +DB 69,15,56,204,220 + movups xmm4,XMMWORD[rcx] + aesenc xmm6,xmm5 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm3,xmm10 +DB 102,65,15,58,15,221,4 + paddd xmm11,xmm3 + movups xmm5,XMMWORD[16+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((384-128))+rax] + paddd xmm0,xmm10 +DB 69,15,56,205,218 +DB 69,15,56,204,229 + movups xmm4,XMMWORD[32+rcx] + aesenc xmm6,xmm5 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm3,xmm11 +DB 102,65,15,58,15,218,4 + paddd xmm12,xmm3 + movups xmm5,XMMWORD[48+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((416-128))+rax] + paddd xmm0,xmm11 +DB 69,15,56,205,227 +DB 69,15,56,204,234 + cmp r11d,11 + jb NEAR $L$aesenclast3 + movups xmm4,XMMWORD[64+rcx] + aesenc xmm6,xmm5 + movups xmm5,XMMWORD[80+rcx] + aesenc xmm6,xmm4 + je NEAR $L$aesenclast3 + movups xmm4,XMMWORD[96+rcx] + aesenc xmm6,xmm5 + movups xmm5,XMMWORD[112+rcx] + aesenc xmm6,xmm4 +$L$aesenclast3: + aesenclast xmm6,xmm5 + movups xmm4,XMMWORD[((16-112))+rcx] + nop +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm3,xmm12 +DB 102,65,15,58,15,219,4 + paddd xmm13,xmm3 + movups xmm14,XMMWORD[48+rdi] + xorps xmm14,xmm15 + movups XMMWORD[32+rdi*1+rsi],xmm6 + xorps xmm6,xmm14 + movups xmm5,XMMWORD[((-80))+rcx] + aesenc xmm6,xmm4 + movups xmm4,XMMWORD[((-64))+rcx] + aesenc xmm6,xmm5 +DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((448-128))+rax] + paddd xmm0,xmm12 +DB 69,15,56,205,236 + movdqa xmm3,xmm7 + movups xmm5,XMMWORD[((-48))+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movups xmm4,XMMWORD[((-32))+rcx] + aesenc xmm6,xmm5 +DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((480-128))+rax] + paddd xmm0,xmm13 + movups xmm5,XMMWORD[((-16))+rcx] + aesenc xmm6,xmm4 + movups xmm4,XMMWORD[rcx] + aesenc xmm6,xmm5 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movups xmm5,XMMWORD[16+rcx] + aesenc xmm6,xmm4 +DB 15,56,203,202 + + movups xmm4,XMMWORD[32+rcx] + aesenc xmm6,xmm5 + movups xmm5,XMMWORD[48+rcx] + aesenc xmm6,xmm4 + cmp r11d,11 + jb NEAR $L$aesenclast4 + movups xmm4,XMMWORD[64+rcx] + aesenc xmm6,xmm5 + movups xmm5,XMMWORD[80+rcx] + aesenc xmm6,xmm4 + je NEAR $L$aesenclast4 + movups xmm4,XMMWORD[96+rcx] + aesenc xmm6,xmm5 + movups xmm5,XMMWORD[112+rcx] + aesenc xmm6,xmm4 +$L$aesenclast4: + aesenclast xmm6,xmm5 + movups xmm4,XMMWORD[((16-112))+rcx] + nop + + paddd xmm2,xmm9 + paddd xmm1,xmm8 + + dec rdx + movups XMMWORD[48+rdi*1+rsi],xmm6 + lea rdi,[64+rdi] + jnz NEAR $L$oop_shaext + + pshufd xmm2,xmm2,0xb1 + pshufd xmm3,xmm1,0x1b + pshufd xmm1,xmm1,0xb1 + punpckhqdq xmm1,xmm2 +DB 102,15,58,15,211,8 + + movups XMMWORD[r8],xmm6 + movdqu XMMWORD[r9],xmm1 + movdqu XMMWORD[16+r9],xmm2 + movaps xmm6,XMMWORD[rsp] + movaps xmm7,XMMWORD[16+rsp] + movaps xmm8,XMMWORD[32+rsp] + movaps xmm9,XMMWORD[48+rsp] + movaps xmm10,XMMWORD[64+rsp] + movaps xmm11,XMMWORD[80+rsp] + movaps xmm12,XMMWORD[96+rsp] + movaps xmm13,XMMWORD[112+rsp] + movaps xmm14,XMMWORD[128+rsp] + movaps xmm15,XMMWORD[144+rsp] + lea rsp,[((8+160))+rsp] +$L$epilogue_shaext: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_cbc_sha256_enc_shaext: +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$in_prologue + lea r10,[aesni_cbc_sha256_enc_shaext] + cmp rbx,r10 + jb NEAR $L$not_in_shaext + + lea rsi,[rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + lea rax,[168+rax] + jmp NEAR $L$in_prologue +$L$not_in_shaext: + lea r10,[$L$avx2_shortcut] + cmp rbx,r10 + jb NEAR $L$not_in_avx2 + + and rax,-256*4 + add rax,448 +$L$not_in_avx2: + mov rsi,rax + mov rax,QWORD[((64+56))+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + + lea rsi,[((64+64))+rsi] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 + DD $L$SEH_begin_aesni_cbc_sha256_enc_xop wrt ..imagebase + DD $L$SEH_end_aesni_cbc_sha256_enc_xop wrt ..imagebase + DD $L$SEH_info_aesni_cbc_sha256_enc_xop wrt ..imagebase + + DD $L$SEH_begin_aesni_cbc_sha256_enc_avx wrt ..imagebase + DD $L$SEH_end_aesni_cbc_sha256_enc_avx wrt ..imagebase + DD $L$SEH_info_aesni_cbc_sha256_enc_avx wrt ..imagebase + DD $L$SEH_begin_aesni_cbc_sha256_enc_avx2 wrt ..imagebase + DD $L$SEH_end_aesni_cbc_sha256_enc_avx2 wrt ..imagebase + DD $L$SEH_info_aesni_cbc_sha256_enc_avx2 wrt ..imagebase + DD $L$SEH_begin_aesni_cbc_sha256_enc_shaext wrt ..imagebase + DD $L$SEH_end_aesni_cbc_sha256_enc_shaext wrt ..imagebase + DD $L$SEH_info_aesni_cbc_sha256_enc_shaext wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_aesni_cbc_sha256_enc_xop: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_xop wrt ..imagebase,$L$epilogue_xop wrt ..imagebase + +$L$SEH_info_aesni_cbc_sha256_enc_avx: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase +$L$SEH_info_aesni_cbc_sha256_enc_avx2: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_avx2 wrt ..imagebase,$L$epilogue_avx2 wrt ..imagebase +$L$SEH_info_aesni_cbc_sha256_enc_shaext: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-x86_64.asm new file mode 100644 index 0000000..f602724 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/aes/aesni-x86_64.asm @@ -0,0 +1,5093 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +EXTERN OPENSSL_ia32cap_P +global aesni_encrypt + +ALIGN 16 +aesni_encrypt: + + movups xmm2,XMMWORD[rcx] + mov eax,DWORD[240+r8] + movups xmm0,XMMWORD[r8] + movups xmm1,XMMWORD[16+r8] + lea r8,[32+r8] + xorps xmm2,xmm0 +$L$oop_enc1_1: +DB 102,15,56,220,209 + dec eax + movups xmm1,XMMWORD[r8] + lea r8,[16+r8] + jnz NEAR $L$oop_enc1_1 +DB 102,15,56,221,209 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + movups XMMWORD[rdx],xmm2 + pxor xmm2,xmm2 + DB 0F3h,0C3h ;repret + + + +global aesni_decrypt + +ALIGN 16 +aesni_decrypt: + + movups xmm2,XMMWORD[rcx] + mov eax,DWORD[240+r8] + movups xmm0,XMMWORD[r8] + movups xmm1,XMMWORD[16+r8] + lea r8,[32+r8] + xorps xmm2,xmm0 +$L$oop_dec1_2: +DB 102,15,56,222,209 + dec eax + movups xmm1,XMMWORD[r8] + lea r8,[16+r8] + jnz NEAR $L$oop_dec1_2 +DB 102,15,56,223,209 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + movups XMMWORD[rdx],xmm2 + pxor xmm2,xmm2 + DB 0F3h,0C3h ;repret + + + +ALIGN 16 +_aesni_encrypt2: + + movups xmm0,XMMWORD[rcx] + shl eax,4 + movups xmm1,XMMWORD[16+rcx] + xorps xmm2,xmm0 + xorps xmm3,xmm0 + movups xmm0,XMMWORD[32+rcx] + lea rcx,[32+rax*1+rcx] + neg rax + add rax,16 + +$L$enc_loop2: +DB 102,15,56,220,209 +DB 102,15,56,220,217 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$enc_loop2 + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,221,208 +DB 102,15,56,221,216 + DB 0F3h,0C3h ;repret + + + +ALIGN 16 +_aesni_decrypt2: + + movups xmm0,XMMWORD[rcx] + shl eax,4 + movups xmm1,XMMWORD[16+rcx] + xorps xmm2,xmm0 + xorps xmm3,xmm0 + movups xmm0,XMMWORD[32+rcx] + lea rcx,[32+rax*1+rcx] + neg rax + add rax,16 + +$L$dec_loop2: +DB 102,15,56,222,209 +DB 102,15,56,222,217 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 +DB 102,15,56,222,208 +DB 102,15,56,222,216 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$dec_loop2 + +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,223,208 +DB 102,15,56,223,216 + DB 0F3h,0C3h ;repret + + + +ALIGN 16 +_aesni_encrypt3: + + movups xmm0,XMMWORD[rcx] + shl eax,4 + movups xmm1,XMMWORD[16+rcx] + xorps xmm2,xmm0 + xorps xmm3,xmm0 + xorps xmm4,xmm0 + movups xmm0,XMMWORD[32+rcx] + lea rcx,[32+rax*1+rcx] + neg rax + add rax,16 + +$L$enc_loop3: +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$enc_loop3 + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,221,208 +DB 102,15,56,221,216 +DB 102,15,56,221,224 + DB 0F3h,0C3h ;repret + + + +ALIGN 16 +_aesni_decrypt3: + + movups xmm0,XMMWORD[rcx] + shl eax,4 + movups xmm1,XMMWORD[16+rcx] + xorps xmm2,xmm0 + xorps xmm3,xmm0 + xorps xmm4,xmm0 + movups xmm0,XMMWORD[32+rcx] + lea rcx,[32+rax*1+rcx] + neg rax + add rax,16 + +$L$dec_loop3: +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$dec_loop3 + +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,223,208 +DB 102,15,56,223,216 +DB 102,15,56,223,224 + DB 0F3h,0C3h ;repret + + + +ALIGN 16 +_aesni_encrypt4: + + movups xmm0,XMMWORD[rcx] + shl eax,4 + movups xmm1,XMMWORD[16+rcx] + xorps xmm2,xmm0 + xorps xmm3,xmm0 + xorps xmm4,xmm0 + xorps xmm5,xmm0 + movups xmm0,XMMWORD[32+rcx] + lea rcx,[32+rax*1+rcx] + neg rax +DB 0x0f,0x1f,0x00 + add rax,16 + +$L$enc_loop4: +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$enc_loop4 + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,221,208 +DB 102,15,56,221,216 +DB 102,15,56,221,224 +DB 102,15,56,221,232 + DB 0F3h,0C3h ;repret + + + +ALIGN 16 +_aesni_decrypt4: + + movups xmm0,XMMWORD[rcx] + shl eax,4 + movups xmm1,XMMWORD[16+rcx] + xorps xmm2,xmm0 + xorps xmm3,xmm0 + xorps xmm4,xmm0 + xorps xmm5,xmm0 + movups xmm0,XMMWORD[32+rcx] + lea rcx,[32+rax*1+rcx] + neg rax +DB 0x0f,0x1f,0x00 + add rax,16 + +$L$dec_loop4: +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$dec_loop4 + +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,223,208 +DB 102,15,56,223,216 +DB 102,15,56,223,224 +DB 102,15,56,223,232 + DB 0F3h,0C3h ;repret + + + +ALIGN 16 +_aesni_encrypt6: + + movups xmm0,XMMWORD[rcx] + shl eax,4 + movups xmm1,XMMWORD[16+rcx] + xorps xmm2,xmm0 + pxor xmm3,xmm0 + pxor xmm4,xmm0 +DB 102,15,56,220,209 + lea rcx,[32+rax*1+rcx] + neg rax +DB 102,15,56,220,217 + pxor xmm5,xmm0 + pxor xmm6,xmm0 +DB 102,15,56,220,225 + pxor xmm7,xmm0 + movups xmm0,XMMWORD[rax*1+rcx] + add rax,16 + jmp NEAR $L$enc_loop6_enter +ALIGN 16 +$L$enc_loop6: +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +$L$enc_loop6_enter: +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 +DB 102,15,56,220,240 +DB 102,15,56,220,248 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$enc_loop6 + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 +DB 102,15,56,221,208 +DB 102,15,56,221,216 +DB 102,15,56,221,224 +DB 102,15,56,221,232 +DB 102,15,56,221,240 +DB 102,15,56,221,248 + DB 0F3h,0C3h ;repret + + + +ALIGN 16 +_aesni_decrypt6: + + movups xmm0,XMMWORD[rcx] + shl eax,4 + movups xmm1,XMMWORD[16+rcx] + xorps xmm2,xmm0 + pxor xmm3,xmm0 + pxor xmm4,xmm0 +DB 102,15,56,222,209 + lea rcx,[32+rax*1+rcx] + neg rax +DB 102,15,56,222,217 + pxor xmm5,xmm0 + pxor xmm6,xmm0 +DB 102,15,56,222,225 + pxor xmm7,xmm0 + movups xmm0,XMMWORD[rax*1+rcx] + add rax,16 + jmp NEAR $L$dec_loop6_enter +ALIGN 16 +$L$dec_loop6: +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +$L$dec_loop6_enter: +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 +DB 102,15,56,222,248 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$dec_loop6 + +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 +DB 102,15,56,223,208 +DB 102,15,56,223,216 +DB 102,15,56,223,224 +DB 102,15,56,223,232 +DB 102,15,56,223,240 +DB 102,15,56,223,248 + DB 0F3h,0C3h ;repret + + + +ALIGN 16 +_aesni_encrypt8: + + movups xmm0,XMMWORD[rcx] + shl eax,4 + movups xmm1,XMMWORD[16+rcx] + xorps xmm2,xmm0 + xorps xmm3,xmm0 + pxor xmm4,xmm0 + pxor xmm5,xmm0 + pxor xmm6,xmm0 + lea rcx,[32+rax*1+rcx] + neg rax +DB 102,15,56,220,209 + pxor xmm7,xmm0 + pxor xmm8,xmm0 +DB 102,15,56,220,217 + pxor xmm9,xmm0 + movups xmm0,XMMWORD[rax*1+rcx] + add rax,16 + jmp NEAR $L$enc_loop8_inner +ALIGN 16 +$L$enc_loop8: +DB 102,15,56,220,209 +DB 102,15,56,220,217 +$L$enc_loop8_inner: +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 +DB 102,68,15,56,220,193 +DB 102,68,15,56,220,201 +$L$enc_loop8_enter: + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 +DB 102,15,56,220,240 +DB 102,15,56,220,248 +DB 102,68,15,56,220,192 +DB 102,68,15,56,220,200 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$enc_loop8 + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 +DB 102,68,15,56,220,193 +DB 102,68,15,56,220,201 +DB 102,15,56,221,208 +DB 102,15,56,221,216 +DB 102,15,56,221,224 +DB 102,15,56,221,232 +DB 102,15,56,221,240 +DB 102,15,56,221,248 +DB 102,68,15,56,221,192 +DB 102,68,15,56,221,200 + DB 0F3h,0C3h ;repret + + + +ALIGN 16 +_aesni_decrypt8: + + movups xmm0,XMMWORD[rcx] + shl eax,4 + movups xmm1,XMMWORD[16+rcx] + xorps xmm2,xmm0 + xorps xmm3,xmm0 + pxor xmm4,xmm0 + pxor xmm5,xmm0 + pxor xmm6,xmm0 + lea rcx,[32+rax*1+rcx] + neg rax +DB 102,15,56,222,209 + pxor xmm7,xmm0 + pxor xmm8,xmm0 +DB 102,15,56,222,217 + pxor xmm9,xmm0 + movups xmm0,XMMWORD[rax*1+rcx] + add rax,16 + jmp NEAR $L$dec_loop8_inner +ALIGN 16 +$L$dec_loop8: +DB 102,15,56,222,209 +DB 102,15,56,222,217 +$L$dec_loop8_inner: +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 +DB 102,68,15,56,222,193 +DB 102,68,15,56,222,201 +$L$dec_loop8_enter: + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 +DB 102,15,56,222,248 +DB 102,68,15,56,222,192 +DB 102,68,15,56,222,200 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$dec_loop8 + +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 +DB 102,68,15,56,222,193 +DB 102,68,15,56,222,201 +DB 102,15,56,223,208 +DB 102,15,56,223,216 +DB 102,15,56,223,224 +DB 102,15,56,223,232 +DB 102,15,56,223,240 +DB 102,15,56,223,248 +DB 102,68,15,56,223,192 +DB 102,68,15,56,223,200 + DB 0F3h,0C3h ;repret + + +global aesni_ecb_encrypt + +ALIGN 16 +aesni_ecb_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_ecb_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + + lea rsp,[((-88))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 +$L$ecb_enc_body: + and rdx,-16 + jz NEAR $L$ecb_ret + + mov eax,DWORD[240+rcx] + movups xmm0,XMMWORD[rcx] + mov r11,rcx + mov r10d,eax + test r8d,r8d + jz NEAR $L$ecb_decrypt + + cmp rdx,0x80 + jb NEAR $L$ecb_enc_tail + + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] + movdqu xmm4,XMMWORD[32+rdi] + movdqu xmm5,XMMWORD[48+rdi] + movdqu xmm6,XMMWORD[64+rdi] + movdqu xmm7,XMMWORD[80+rdi] + movdqu xmm8,XMMWORD[96+rdi] + movdqu xmm9,XMMWORD[112+rdi] + lea rdi,[128+rdi] + sub rdx,0x80 + jmp NEAR $L$ecb_enc_loop8_enter +ALIGN 16 +$L$ecb_enc_loop8: + movups XMMWORD[rsi],xmm2 + mov rcx,r11 + movdqu xmm2,XMMWORD[rdi] + mov eax,r10d + movups XMMWORD[16+rsi],xmm3 + movdqu xmm3,XMMWORD[16+rdi] + movups XMMWORD[32+rsi],xmm4 + movdqu xmm4,XMMWORD[32+rdi] + movups XMMWORD[48+rsi],xmm5 + movdqu xmm5,XMMWORD[48+rdi] + movups XMMWORD[64+rsi],xmm6 + movdqu xmm6,XMMWORD[64+rdi] + movups XMMWORD[80+rsi],xmm7 + movdqu xmm7,XMMWORD[80+rdi] + movups XMMWORD[96+rsi],xmm8 + movdqu xmm8,XMMWORD[96+rdi] + movups XMMWORD[112+rsi],xmm9 + lea rsi,[128+rsi] + movdqu xmm9,XMMWORD[112+rdi] + lea rdi,[128+rdi] +$L$ecb_enc_loop8_enter: + + call _aesni_encrypt8 + + sub rdx,0x80 + jnc NEAR $L$ecb_enc_loop8 + + movups XMMWORD[rsi],xmm2 + mov rcx,r11 + movups XMMWORD[16+rsi],xmm3 + mov eax,r10d + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + movups XMMWORD[64+rsi],xmm6 + movups XMMWORD[80+rsi],xmm7 + movups XMMWORD[96+rsi],xmm8 + movups XMMWORD[112+rsi],xmm9 + lea rsi,[128+rsi] + add rdx,0x80 + jz NEAR $L$ecb_ret + +$L$ecb_enc_tail: + movups xmm2,XMMWORD[rdi] + cmp rdx,0x20 + jb NEAR $L$ecb_enc_one + movups xmm3,XMMWORD[16+rdi] + je NEAR $L$ecb_enc_two + movups xmm4,XMMWORD[32+rdi] + cmp rdx,0x40 + jb NEAR $L$ecb_enc_three + movups xmm5,XMMWORD[48+rdi] + je NEAR $L$ecb_enc_four + movups xmm6,XMMWORD[64+rdi] + cmp rdx,0x60 + jb NEAR $L$ecb_enc_five + movups xmm7,XMMWORD[80+rdi] + je NEAR $L$ecb_enc_six + movdqu xmm8,XMMWORD[96+rdi] + xorps xmm9,xmm9 + call _aesni_encrypt8 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + movups XMMWORD[64+rsi],xmm6 + movups XMMWORD[80+rsi],xmm7 + movups XMMWORD[96+rsi],xmm8 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_enc_one: + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_enc1_3: +DB 102,15,56,220,209 + dec eax + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_enc1_3 +DB 102,15,56,221,209 + movups XMMWORD[rsi],xmm2 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_enc_two: + call _aesni_encrypt2 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_enc_three: + call _aesni_encrypt3 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_enc_four: + call _aesni_encrypt4 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_enc_five: + xorps xmm7,xmm7 + call _aesni_encrypt6 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + movups XMMWORD[64+rsi],xmm6 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_enc_six: + call _aesni_encrypt6 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + movups XMMWORD[64+rsi],xmm6 + movups XMMWORD[80+rsi],xmm7 + jmp NEAR $L$ecb_ret + +ALIGN 16 +$L$ecb_decrypt: + cmp rdx,0x80 + jb NEAR $L$ecb_dec_tail + + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] + movdqu xmm4,XMMWORD[32+rdi] + movdqu xmm5,XMMWORD[48+rdi] + movdqu xmm6,XMMWORD[64+rdi] + movdqu xmm7,XMMWORD[80+rdi] + movdqu xmm8,XMMWORD[96+rdi] + movdqu xmm9,XMMWORD[112+rdi] + lea rdi,[128+rdi] + sub rdx,0x80 + jmp NEAR $L$ecb_dec_loop8_enter +ALIGN 16 +$L$ecb_dec_loop8: + movups XMMWORD[rsi],xmm2 + mov rcx,r11 + movdqu xmm2,XMMWORD[rdi] + mov eax,r10d + movups XMMWORD[16+rsi],xmm3 + movdqu xmm3,XMMWORD[16+rdi] + movups XMMWORD[32+rsi],xmm4 + movdqu xmm4,XMMWORD[32+rdi] + movups XMMWORD[48+rsi],xmm5 + movdqu xmm5,XMMWORD[48+rdi] + movups XMMWORD[64+rsi],xmm6 + movdqu xmm6,XMMWORD[64+rdi] + movups XMMWORD[80+rsi],xmm7 + movdqu xmm7,XMMWORD[80+rdi] + movups XMMWORD[96+rsi],xmm8 + movdqu xmm8,XMMWORD[96+rdi] + movups XMMWORD[112+rsi],xmm9 + lea rsi,[128+rsi] + movdqu xmm9,XMMWORD[112+rdi] + lea rdi,[128+rdi] +$L$ecb_dec_loop8_enter: + + call _aesni_decrypt8 + + movups xmm0,XMMWORD[r11] + sub rdx,0x80 + jnc NEAR $L$ecb_dec_loop8 + + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + mov rcx,r11 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + mov eax,r10d + movups XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + movups XMMWORD[64+rsi],xmm6 + pxor xmm6,xmm6 + movups XMMWORD[80+rsi],xmm7 + pxor xmm7,xmm7 + movups XMMWORD[96+rsi],xmm8 + pxor xmm8,xmm8 + movups XMMWORD[112+rsi],xmm9 + pxor xmm9,xmm9 + lea rsi,[128+rsi] + add rdx,0x80 + jz NEAR $L$ecb_ret + +$L$ecb_dec_tail: + movups xmm2,XMMWORD[rdi] + cmp rdx,0x20 + jb NEAR $L$ecb_dec_one + movups xmm3,XMMWORD[16+rdi] + je NEAR $L$ecb_dec_two + movups xmm4,XMMWORD[32+rdi] + cmp rdx,0x40 + jb NEAR $L$ecb_dec_three + movups xmm5,XMMWORD[48+rdi] + je NEAR $L$ecb_dec_four + movups xmm6,XMMWORD[64+rdi] + cmp rdx,0x60 + jb NEAR $L$ecb_dec_five + movups xmm7,XMMWORD[80+rdi] + je NEAR $L$ecb_dec_six + movups xmm8,XMMWORD[96+rdi] + movups xmm0,XMMWORD[rcx] + xorps xmm9,xmm9 + call _aesni_decrypt8 + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + movups XMMWORD[64+rsi],xmm6 + pxor xmm6,xmm6 + movups XMMWORD[80+rsi],xmm7 + pxor xmm7,xmm7 + movups XMMWORD[96+rsi],xmm8 + pxor xmm8,xmm8 + pxor xmm9,xmm9 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_dec_one: + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_dec1_4: +DB 102,15,56,222,209 + dec eax + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_dec1_4 +DB 102,15,56,223,209 + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_dec_two: + call _aesni_decrypt2 + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_dec_three: + call _aesni_decrypt3 + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_dec_four: + call _aesni_decrypt4 + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_dec_five: + xorps xmm7,xmm7 + call _aesni_decrypt6 + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + movups XMMWORD[64+rsi],xmm6 + pxor xmm6,xmm6 + pxor xmm7,xmm7 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_dec_six: + call _aesni_decrypt6 + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + movups XMMWORD[64+rsi],xmm6 + pxor xmm6,xmm6 + movups XMMWORD[80+rsi],xmm7 + pxor xmm7,xmm7 + +$L$ecb_ret: + xorps xmm0,xmm0 + pxor xmm1,xmm1 + movaps xmm6,XMMWORD[rsp] + movaps XMMWORD[rsp],xmm0 + movaps xmm7,XMMWORD[16+rsp] + movaps XMMWORD[16+rsp],xmm0 + movaps xmm8,XMMWORD[32+rsp] + movaps XMMWORD[32+rsp],xmm0 + movaps xmm9,XMMWORD[48+rsp] + movaps XMMWORD[48+rsp],xmm0 + lea rsp,[88+rsp] +$L$ecb_enc_ret: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_ecb_encrypt: +global aesni_ccm64_encrypt_blocks + +ALIGN 16 +aesni_ccm64_encrypt_blocks: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_ccm64_encrypt_blocks: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + lea rsp,[((-88))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 +$L$ccm64_enc_body: + mov eax,DWORD[240+rcx] + movdqu xmm6,XMMWORD[r8] + movdqa xmm9,XMMWORD[$L$increment64] + movdqa xmm7,XMMWORD[$L$bswap_mask] + + shl eax,4 + mov r10d,16 + lea r11,[rcx] + movdqu xmm3,XMMWORD[r9] + movdqa xmm2,xmm6 + lea rcx,[32+rax*1+rcx] +DB 102,15,56,0,247 + sub r10,rax + jmp NEAR $L$ccm64_enc_outer +ALIGN 16 +$L$ccm64_enc_outer: + movups xmm0,XMMWORD[r11] + mov rax,r10 + movups xmm8,XMMWORD[rdi] + + xorps xmm2,xmm0 + movups xmm1,XMMWORD[16+r11] + xorps xmm0,xmm8 + xorps xmm3,xmm0 + movups xmm0,XMMWORD[32+r11] + +$L$ccm64_enc2_loop: +DB 102,15,56,220,209 +DB 102,15,56,220,217 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$ccm64_enc2_loop +DB 102,15,56,220,209 +DB 102,15,56,220,217 + paddq xmm6,xmm9 + dec rdx +DB 102,15,56,221,208 +DB 102,15,56,221,216 + + lea rdi,[16+rdi] + xorps xmm8,xmm2 + movdqa xmm2,xmm6 + movups XMMWORD[rsi],xmm8 +DB 102,15,56,0,215 + lea rsi,[16+rsi] + jnz NEAR $L$ccm64_enc_outer + + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + movups XMMWORD[r9],xmm3 + pxor xmm3,xmm3 + pxor xmm8,xmm8 + pxor xmm6,xmm6 + movaps xmm6,XMMWORD[rsp] + movaps XMMWORD[rsp],xmm0 + movaps xmm7,XMMWORD[16+rsp] + movaps XMMWORD[16+rsp],xmm0 + movaps xmm8,XMMWORD[32+rsp] + movaps XMMWORD[32+rsp],xmm0 + movaps xmm9,XMMWORD[48+rsp] + movaps XMMWORD[48+rsp],xmm0 + lea rsp,[88+rsp] +$L$ccm64_enc_ret: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_ccm64_encrypt_blocks: +global aesni_ccm64_decrypt_blocks + +ALIGN 16 +aesni_ccm64_decrypt_blocks: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_ccm64_decrypt_blocks: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + lea rsp,[((-88))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 +$L$ccm64_dec_body: + mov eax,DWORD[240+rcx] + movups xmm6,XMMWORD[r8] + movdqu xmm3,XMMWORD[r9] + movdqa xmm9,XMMWORD[$L$increment64] + movdqa xmm7,XMMWORD[$L$bswap_mask] + + movaps xmm2,xmm6 + mov r10d,eax + mov r11,rcx +DB 102,15,56,0,247 + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_enc1_5: +DB 102,15,56,220,209 + dec eax + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_enc1_5 +DB 102,15,56,221,209 + shl r10d,4 + mov eax,16 + movups xmm8,XMMWORD[rdi] + paddq xmm6,xmm9 + lea rdi,[16+rdi] + sub rax,r10 + lea rcx,[32+r10*1+r11] + mov r10,rax + jmp NEAR $L$ccm64_dec_outer +ALIGN 16 +$L$ccm64_dec_outer: + xorps xmm8,xmm2 + movdqa xmm2,xmm6 + movups XMMWORD[rsi],xmm8 + lea rsi,[16+rsi] +DB 102,15,56,0,215 + + sub rdx,1 + jz NEAR $L$ccm64_dec_break + + movups xmm0,XMMWORD[r11] + mov rax,r10 + movups xmm1,XMMWORD[16+r11] + xorps xmm8,xmm0 + xorps xmm2,xmm0 + xorps xmm3,xmm8 + movups xmm0,XMMWORD[32+r11] + jmp NEAR $L$ccm64_dec2_loop +ALIGN 16 +$L$ccm64_dec2_loop: +DB 102,15,56,220,209 +DB 102,15,56,220,217 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$ccm64_dec2_loop + movups xmm8,XMMWORD[rdi] + paddq xmm6,xmm9 +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,221,208 +DB 102,15,56,221,216 + lea rdi,[16+rdi] + jmp NEAR $L$ccm64_dec_outer + +ALIGN 16 +$L$ccm64_dec_break: + + mov eax,DWORD[240+r11] + movups xmm0,XMMWORD[r11] + movups xmm1,XMMWORD[16+r11] + xorps xmm8,xmm0 + lea r11,[32+r11] + xorps xmm3,xmm8 +$L$oop_enc1_6: +DB 102,15,56,220,217 + dec eax + movups xmm1,XMMWORD[r11] + lea r11,[16+r11] + jnz NEAR $L$oop_enc1_6 +DB 102,15,56,221,217 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + movups XMMWORD[r9],xmm3 + pxor xmm3,xmm3 + pxor xmm8,xmm8 + pxor xmm6,xmm6 + movaps xmm6,XMMWORD[rsp] + movaps XMMWORD[rsp],xmm0 + movaps xmm7,XMMWORD[16+rsp] + movaps XMMWORD[16+rsp],xmm0 + movaps xmm8,XMMWORD[32+rsp] + movaps XMMWORD[32+rsp],xmm0 + movaps xmm9,XMMWORD[48+rsp] + movaps XMMWORD[48+rsp],xmm0 + lea rsp,[88+rsp] +$L$ccm64_dec_ret: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_ccm64_decrypt_blocks: +global aesni_ctr32_encrypt_blocks + +ALIGN 16 +aesni_ctr32_encrypt_blocks: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_ctr32_encrypt_blocks: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + + cmp rdx,1 + jne NEAR $L$ctr32_bulk + + + + movups xmm2,XMMWORD[r8] + movups xmm3,XMMWORD[rdi] + mov edx,DWORD[240+rcx] + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_enc1_7: +DB 102,15,56,220,209 + dec edx + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_enc1_7 +DB 102,15,56,221,209 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + xorps xmm2,xmm3 + pxor xmm3,xmm3 + movups XMMWORD[rsi],xmm2 + xorps xmm2,xmm2 + jmp NEAR $L$ctr32_epilogue + +ALIGN 16 +$L$ctr32_bulk: + lea r11,[rsp] + + push rbp + + sub rsp,288 + and rsp,-16 + movaps XMMWORD[(-168)+r11],xmm6 + movaps XMMWORD[(-152)+r11],xmm7 + movaps XMMWORD[(-136)+r11],xmm8 + movaps XMMWORD[(-120)+r11],xmm9 + movaps XMMWORD[(-104)+r11],xmm10 + movaps XMMWORD[(-88)+r11],xmm11 + movaps XMMWORD[(-72)+r11],xmm12 + movaps XMMWORD[(-56)+r11],xmm13 + movaps XMMWORD[(-40)+r11],xmm14 + movaps XMMWORD[(-24)+r11],xmm15 +$L$ctr32_body: + + + + + movdqu xmm2,XMMWORD[r8] + movdqu xmm0,XMMWORD[rcx] + mov r8d,DWORD[12+r8] + pxor xmm2,xmm0 + mov ebp,DWORD[12+rcx] + movdqa XMMWORD[rsp],xmm2 + bswap r8d + movdqa xmm3,xmm2 + movdqa xmm4,xmm2 + movdqa xmm5,xmm2 + movdqa XMMWORD[64+rsp],xmm2 + movdqa XMMWORD[80+rsp],xmm2 + movdqa XMMWORD[96+rsp],xmm2 + mov r10,rdx + movdqa XMMWORD[112+rsp],xmm2 + + lea rax,[1+r8] + lea rdx,[2+r8] + bswap eax + bswap edx + xor eax,ebp + xor edx,ebp +DB 102,15,58,34,216,3 + lea rax,[3+r8] + movdqa XMMWORD[16+rsp],xmm3 +DB 102,15,58,34,226,3 + bswap eax + mov rdx,r10 + lea r10,[4+r8] + movdqa XMMWORD[32+rsp],xmm4 + xor eax,ebp + bswap r10d +DB 102,15,58,34,232,3 + xor r10d,ebp + movdqa XMMWORD[48+rsp],xmm5 + lea r9,[5+r8] + mov DWORD[((64+12))+rsp],r10d + bswap r9d + lea r10,[6+r8] + mov eax,DWORD[240+rcx] + xor r9d,ebp + bswap r10d + mov DWORD[((80+12))+rsp],r9d + xor r10d,ebp + lea r9,[7+r8] + mov DWORD[((96+12))+rsp],r10d + bswap r9d + mov r10d,DWORD[((OPENSSL_ia32cap_P+4))] + xor r9d,ebp + and r10d,71303168 + mov DWORD[((112+12))+rsp],r9d + + movups xmm1,XMMWORD[16+rcx] + + movdqa xmm6,XMMWORD[64+rsp] + movdqa xmm7,XMMWORD[80+rsp] + + cmp rdx,8 + jb NEAR $L$ctr32_tail + + sub rdx,6 + cmp r10d,4194304 + je NEAR $L$ctr32_6x + + lea rcx,[128+rcx] + sub rdx,2 + jmp NEAR $L$ctr32_loop8 + +ALIGN 16 +$L$ctr32_6x: + shl eax,4 + mov r10d,48 + bswap ebp + lea rcx,[32+rax*1+rcx] + sub r10,rax + jmp NEAR $L$ctr32_loop6 + +ALIGN 16 +$L$ctr32_loop6: + add r8d,6 + movups xmm0,XMMWORD[((-48))+r10*1+rcx] +DB 102,15,56,220,209 + mov eax,r8d + xor eax,ebp +DB 102,15,56,220,217 +DB 0x0f,0x38,0xf1,0x44,0x24,12 + lea eax,[1+r8] +DB 102,15,56,220,225 + xor eax,ebp +DB 0x0f,0x38,0xf1,0x44,0x24,28 +DB 102,15,56,220,233 + lea eax,[2+r8] + xor eax,ebp +DB 102,15,56,220,241 +DB 0x0f,0x38,0xf1,0x44,0x24,44 + lea eax,[3+r8] +DB 102,15,56,220,249 + movups xmm1,XMMWORD[((-32))+r10*1+rcx] + xor eax,ebp + +DB 102,15,56,220,208 +DB 0x0f,0x38,0xf1,0x44,0x24,60 + lea eax,[4+r8] +DB 102,15,56,220,216 + xor eax,ebp +DB 0x0f,0x38,0xf1,0x44,0x24,76 +DB 102,15,56,220,224 + lea eax,[5+r8] + xor eax,ebp +DB 102,15,56,220,232 +DB 0x0f,0x38,0xf1,0x44,0x24,92 + mov rax,r10 +DB 102,15,56,220,240 +DB 102,15,56,220,248 + movups xmm0,XMMWORD[((-16))+r10*1+rcx] + + call $L$enc_loop6 + + movdqu xmm8,XMMWORD[rdi] + movdqu xmm9,XMMWORD[16+rdi] + movdqu xmm10,XMMWORD[32+rdi] + movdqu xmm11,XMMWORD[48+rdi] + movdqu xmm12,XMMWORD[64+rdi] + movdqu xmm13,XMMWORD[80+rdi] + lea rdi,[96+rdi] + movups xmm1,XMMWORD[((-64))+r10*1+rcx] + pxor xmm8,xmm2 + movaps xmm2,XMMWORD[rsp] + pxor xmm9,xmm3 + movaps xmm3,XMMWORD[16+rsp] + pxor xmm10,xmm4 + movaps xmm4,XMMWORD[32+rsp] + pxor xmm11,xmm5 + movaps xmm5,XMMWORD[48+rsp] + pxor xmm12,xmm6 + movaps xmm6,XMMWORD[64+rsp] + pxor xmm13,xmm7 + movaps xmm7,XMMWORD[80+rsp] + movdqu XMMWORD[rsi],xmm8 + movdqu XMMWORD[16+rsi],xmm9 + movdqu XMMWORD[32+rsi],xmm10 + movdqu XMMWORD[48+rsi],xmm11 + movdqu XMMWORD[64+rsi],xmm12 + movdqu XMMWORD[80+rsi],xmm13 + lea rsi,[96+rsi] + + sub rdx,6 + jnc NEAR $L$ctr32_loop6 + + add rdx,6 + jz NEAR $L$ctr32_done + + lea eax,[((-48))+r10] + lea rcx,[((-80))+r10*1+rcx] + neg eax + shr eax,4 + jmp NEAR $L$ctr32_tail + +ALIGN 32 +$L$ctr32_loop8: + add r8d,8 + movdqa xmm8,XMMWORD[96+rsp] +DB 102,15,56,220,209 + mov r9d,r8d + movdqa xmm9,XMMWORD[112+rsp] +DB 102,15,56,220,217 + bswap r9d + movups xmm0,XMMWORD[((32-128))+rcx] +DB 102,15,56,220,225 + xor r9d,ebp + nop +DB 102,15,56,220,233 + mov DWORD[((0+12))+rsp],r9d + lea r9,[1+r8] +DB 102,15,56,220,241 +DB 102,15,56,220,249 +DB 102,68,15,56,220,193 +DB 102,68,15,56,220,201 + movups xmm1,XMMWORD[((48-128))+rcx] + bswap r9d +DB 102,15,56,220,208 +DB 102,15,56,220,216 + xor r9d,ebp +DB 0x66,0x90 +DB 102,15,56,220,224 +DB 102,15,56,220,232 + mov DWORD[((16+12))+rsp],r9d + lea r9,[2+r8] +DB 102,15,56,220,240 +DB 102,15,56,220,248 +DB 102,68,15,56,220,192 +DB 102,68,15,56,220,200 + movups xmm0,XMMWORD[((64-128))+rcx] + bswap r9d +DB 102,15,56,220,209 +DB 102,15,56,220,217 + xor r9d,ebp +DB 0x66,0x90 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + mov DWORD[((32+12))+rsp],r9d + lea r9,[3+r8] +DB 102,15,56,220,241 +DB 102,15,56,220,249 +DB 102,68,15,56,220,193 +DB 102,68,15,56,220,201 + movups xmm1,XMMWORD[((80-128))+rcx] + bswap r9d +DB 102,15,56,220,208 +DB 102,15,56,220,216 + xor r9d,ebp +DB 0x66,0x90 +DB 102,15,56,220,224 +DB 102,15,56,220,232 + mov DWORD[((48+12))+rsp],r9d + lea r9,[4+r8] +DB 102,15,56,220,240 +DB 102,15,56,220,248 +DB 102,68,15,56,220,192 +DB 102,68,15,56,220,200 + movups xmm0,XMMWORD[((96-128))+rcx] + bswap r9d +DB 102,15,56,220,209 +DB 102,15,56,220,217 + xor r9d,ebp +DB 0x66,0x90 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + mov DWORD[((64+12))+rsp],r9d + lea r9,[5+r8] +DB 102,15,56,220,241 +DB 102,15,56,220,249 +DB 102,68,15,56,220,193 +DB 102,68,15,56,220,201 + movups xmm1,XMMWORD[((112-128))+rcx] + bswap r9d +DB 102,15,56,220,208 +DB 102,15,56,220,216 + xor r9d,ebp +DB 0x66,0x90 +DB 102,15,56,220,224 +DB 102,15,56,220,232 + mov DWORD[((80+12))+rsp],r9d + lea r9,[6+r8] +DB 102,15,56,220,240 +DB 102,15,56,220,248 +DB 102,68,15,56,220,192 +DB 102,68,15,56,220,200 + movups xmm0,XMMWORD[((128-128))+rcx] + bswap r9d +DB 102,15,56,220,209 +DB 102,15,56,220,217 + xor r9d,ebp +DB 0x66,0x90 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + mov DWORD[((96+12))+rsp],r9d + lea r9,[7+r8] +DB 102,15,56,220,241 +DB 102,15,56,220,249 +DB 102,68,15,56,220,193 +DB 102,68,15,56,220,201 + movups xmm1,XMMWORD[((144-128))+rcx] + bswap r9d +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 + xor r9d,ebp + movdqu xmm10,XMMWORD[rdi] +DB 102,15,56,220,232 + mov DWORD[((112+12))+rsp],r9d + cmp eax,11 +DB 102,15,56,220,240 +DB 102,15,56,220,248 +DB 102,68,15,56,220,192 +DB 102,68,15,56,220,200 + movups xmm0,XMMWORD[((160-128))+rcx] + + jb NEAR $L$ctr32_enc_done + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 +DB 102,68,15,56,220,193 +DB 102,68,15,56,220,201 + movups xmm1,XMMWORD[((176-128))+rcx] + +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 +DB 102,15,56,220,240 +DB 102,15,56,220,248 +DB 102,68,15,56,220,192 +DB 102,68,15,56,220,200 + movups xmm0,XMMWORD[((192-128))+rcx] + je NEAR $L$ctr32_enc_done + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 +DB 102,68,15,56,220,193 +DB 102,68,15,56,220,201 + movups xmm1,XMMWORD[((208-128))+rcx] + +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 +DB 102,15,56,220,240 +DB 102,15,56,220,248 +DB 102,68,15,56,220,192 +DB 102,68,15,56,220,200 + movups xmm0,XMMWORD[((224-128))+rcx] + jmp NEAR $L$ctr32_enc_done + +ALIGN 16 +$L$ctr32_enc_done: + movdqu xmm11,XMMWORD[16+rdi] + pxor xmm10,xmm0 + movdqu xmm12,XMMWORD[32+rdi] + pxor xmm11,xmm0 + movdqu xmm13,XMMWORD[48+rdi] + pxor xmm12,xmm0 + movdqu xmm14,XMMWORD[64+rdi] + pxor xmm13,xmm0 + movdqu xmm15,XMMWORD[80+rdi] + pxor xmm14,xmm0 + pxor xmm15,xmm0 +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 +DB 102,68,15,56,220,193 +DB 102,68,15,56,220,201 + movdqu xmm1,XMMWORD[96+rdi] + lea rdi,[128+rdi] + +DB 102,65,15,56,221,210 + pxor xmm1,xmm0 + movdqu xmm10,XMMWORD[((112-128))+rdi] +DB 102,65,15,56,221,219 + pxor xmm10,xmm0 + movdqa xmm11,XMMWORD[rsp] +DB 102,65,15,56,221,228 +DB 102,65,15,56,221,237 + movdqa xmm12,XMMWORD[16+rsp] + movdqa xmm13,XMMWORD[32+rsp] +DB 102,65,15,56,221,246 +DB 102,65,15,56,221,255 + movdqa xmm14,XMMWORD[48+rsp] + movdqa xmm15,XMMWORD[64+rsp] +DB 102,68,15,56,221,193 + movdqa xmm0,XMMWORD[80+rsp] + movups xmm1,XMMWORD[((16-128))+rcx] +DB 102,69,15,56,221,202 + + movups XMMWORD[rsi],xmm2 + movdqa xmm2,xmm11 + movups XMMWORD[16+rsi],xmm3 + movdqa xmm3,xmm12 + movups XMMWORD[32+rsi],xmm4 + movdqa xmm4,xmm13 + movups XMMWORD[48+rsi],xmm5 + movdqa xmm5,xmm14 + movups XMMWORD[64+rsi],xmm6 + movdqa xmm6,xmm15 + movups XMMWORD[80+rsi],xmm7 + movdqa xmm7,xmm0 + movups XMMWORD[96+rsi],xmm8 + movups XMMWORD[112+rsi],xmm9 + lea rsi,[128+rsi] + + sub rdx,8 + jnc NEAR $L$ctr32_loop8 + + add rdx,8 + jz NEAR $L$ctr32_done + lea rcx,[((-128))+rcx] + +$L$ctr32_tail: + + + lea rcx,[16+rcx] + cmp rdx,4 + jb NEAR $L$ctr32_loop3 + je NEAR $L$ctr32_loop4 + + + shl eax,4 + movdqa xmm8,XMMWORD[96+rsp] + pxor xmm9,xmm9 + + movups xmm0,XMMWORD[16+rcx] +DB 102,15,56,220,209 +DB 102,15,56,220,217 + lea rcx,[((32-16))+rax*1+rcx] + neg rax +DB 102,15,56,220,225 + add rax,16 + movups xmm10,XMMWORD[rdi] +DB 102,15,56,220,233 +DB 102,15,56,220,241 + movups xmm11,XMMWORD[16+rdi] + movups xmm12,XMMWORD[32+rdi] +DB 102,15,56,220,249 +DB 102,68,15,56,220,193 + + call $L$enc_loop8_enter + + movdqu xmm13,XMMWORD[48+rdi] + pxor xmm2,xmm10 + movdqu xmm10,XMMWORD[64+rdi] + pxor xmm3,xmm11 + movdqu XMMWORD[rsi],xmm2 + pxor xmm4,xmm12 + movdqu XMMWORD[16+rsi],xmm3 + pxor xmm5,xmm13 + movdqu XMMWORD[32+rsi],xmm4 + pxor xmm6,xmm10 + movdqu XMMWORD[48+rsi],xmm5 + movdqu XMMWORD[64+rsi],xmm6 + cmp rdx,6 + jb NEAR $L$ctr32_done + + movups xmm11,XMMWORD[80+rdi] + xorps xmm7,xmm11 + movups XMMWORD[80+rsi],xmm7 + je NEAR $L$ctr32_done + + movups xmm12,XMMWORD[96+rdi] + xorps xmm8,xmm12 + movups XMMWORD[96+rsi],xmm8 + jmp NEAR $L$ctr32_done + +ALIGN 32 +$L$ctr32_loop4: +DB 102,15,56,220,209 + lea rcx,[16+rcx] + dec eax +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + movups xmm1,XMMWORD[rcx] + jnz NEAR $L$ctr32_loop4 +DB 102,15,56,221,209 +DB 102,15,56,221,217 + movups xmm10,XMMWORD[rdi] + movups xmm11,XMMWORD[16+rdi] +DB 102,15,56,221,225 +DB 102,15,56,221,233 + movups xmm12,XMMWORD[32+rdi] + movups xmm13,XMMWORD[48+rdi] + + xorps xmm2,xmm10 + movups XMMWORD[rsi],xmm2 + xorps xmm3,xmm11 + movups XMMWORD[16+rsi],xmm3 + pxor xmm4,xmm12 + movdqu XMMWORD[32+rsi],xmm4 + pxor xmm5,xmm13 + movdqu XMMWORD[48+rsi],xmm5 + jmp NEAR $L$ctr32_done + +ALIGN 32 +$L$ctr32_loop3: +DB 102,15,56,220,209 + lea rcx,[16+rcx] + dec eax +DB 102,15,56,220,217 +DB 102,15,56,220,225 + movups xmm1,XMMWORD[rcx] + jnz NEAR $L$ctr32_loop3 +DB 102,15,56,221,209 +DB 102,15,56,221,217 +DB 102,15,56,221,225 + + movups xmm10,XMMWORD[rdi] + xorps xmm2,xmm10 + movups XMMWORD[rsi],xmm2 + cmp rdx,2 + jb NEAR $L$ctr32_done + + movups xmm11,XMMWORD[16+rdi] + xorps xmm3,xmm11 + movups XMMWORD[16+rsi],xmm3 + je NEAR $L$ctr32_done + + movups xmm12,XMMWORD[32+rdi] + xorps xmm4,xmm12 + movups XMMWORD[32+rsi],xmm4 + +$L$ctr32_done: + xorps xmm0,xmm0 + xor ebp,ebp + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + movaps xmm6,XMMWORD[((-168))+r11] + movaps XMMWORD[(-168)+r11],xmm0 + movaps xmm7,XMMWORD[((-152))+r11] + movaps XMMWORD[(-152)+r11],xmm0 + movaps xmm8,XMMWORD[((-136))+r11] + movaps XMMWORD[(-136)+r11],xmm0 + movaps xmm9,XMMWORD[((-120))+r11] + movaps XMMWORD[(-120)+r11],xmm0 + movaps xmm10,XMMWORD[((-104))+r11] + movaps XMMWORD[(-104)+r11],xmm0 + movaps xmm11,XMMWORD[((-88))+r11] + movaps XMMWORD[(-88)+r11],xmm0 + movaps xmm12,XMMWORD[((-72))+r11] + movaps XMMWORD[(-72)+r11],xmm0 + movaps xmm13,XMMWORD[((-56))+r11] + movaps XMMWORD[(-56)+r11],xmm0 + movaps xmm14,XMMWORD[((-40))+r11] + movaps XMMWORD[(-40)+r11],xmm0 + movaps xmm15,XMMWORD[((-24))+r11] + movaps XMMWORD[(-24)+r11],xmm0 + movaps XMMWORD[rsp],xmm0 + movaps XMMWORD[16+rsp],xmm0 + movaps XMMWORD[32+rsp],xmm0 + movaps XMMWORD[48+rsp],xmm0 + movaps XMMWORD[64+rsp],xmm0 + movaps XMMWORD[80+rsp],xmm0 + movaps XMMWORD[96+rsp],xmm0 + movaps XMMWORD[112+rsp],xmm0 + mov rbp,QWORD[((-8))+r11] + + lea rsp,[r11] + +$L$ctr32_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_ctr32_encrypt_blocks: +global aesni_xts_encrypt + +ALIGN 16 +aesni_xts_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_xts_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + lea r11,[rsp] + + push rbp + + sub rsp,272 + and rsp,-16 + movaps XMMWORD[(-168)+r11],xmm6 + movaps XMMWORD[(-152)+r11],xmm7 + movaps XMMWORD[(-136)+r11],xmm8 + movaps XMMWORD[(-120)+r11],xmm9 + movaps XMMWORD[(-104)+r11],xmm10 + movaps XMMWORD[(-88)+r11],xmm11 + movaps XMMWORD[(-72)+r11],xmm12 + movaps XMMWORD[(-56)+r11],xmm13 + movaps XMMWORD[(-40)+r11],xmm14 + movaps XMMWORD[(-24)+r11],xmm15 +$L$xts_enc_body: + movups xmm2,XMMWORD[r9] + mov eax,DWORD[240+r8] + mov r10d,DWORD[240+rcx] + movups xmm0,XMMWORD[r8] + movups xmm1,XMMWORD[16+r8] + lea r8,[32+r8] + xorps xmm2,xmm0 +$L$oop_enc1_8: +DB 102,15,56,220,209 + dec eax + movups xmm1,XMMWORD[r8] + lea r8,[16+r8] + jnz NEAR $L$oop_enc1_8 +DB 102,15,56,221,209 + movups xmm0,XMMWORD[rcx] + mov rbp,rcx + mov eax,r10d + shl r10d,4 + mov r9,rdx + and rdx,-16 + + movups xmm1,XMMWORD[16+r10*1+rcx] + + movdqa xmm8,XMMWORD[$L$xts_magic] + movdqa xmm15,xmm2 + pshufd xmm9,xmm2,0x5f + pxor xmm1,xmm0 + movdqa xmm14,xmm9 + paddd xmm9,xmm9 + movdqa xmm10,xmm15 + psrad xmm14,31 + paddq xmm15,xmm15 + pand xmm14,xmm8 + pxor xmm10,xmm0 + pxor xmm15,xmm14 + movdqa xmm14,xmm9 + paddd xmm9,xmm9 + movdqa xmm11,xmm15 + psrad xmm14,31 + paddq xmm15,xmm15 + pand xmm14,xmm8 + pxor xmm11,xmm0 + pxor xmm15,xmm14 + movdqa xmm14,xmm9 + paddd xmm9,xmm9 + movdqa xmm12,xmm15 + psrad xmm14,31 + paddq xmm15,xmm15 + pand xmm14,xmm8 + pxor xmm12,xmm0 + pxor xmm15,xmm14 + movdqa xmm14,xmm9 + paddd xmm9,xmm9 + movdqa xmm13,xmm15 + psrad xmm14,31 + paddq xmm15,xmm15 + pand xmm14,xmm8 + pxor xmm13,xmm0 + pxor xmm15,xmm14 + movdqa xmm14,xmm15 + psrad xmm9,31 + paddq xmm15,xmm15 + pand xmm9,xmm8 + pxor xmm14,xmm0 + pxor xmm15,xmm9 + movaps XMMWORD[96+rsp],xmm1 + + sub rdx,16*6 + jc NEAR $L$xts_enc_short + + mov eax,16+96 + lea rcx,[32+r10*1+rbp] + sub rax,r10 + movups xmm1,XMMWORD[16+rbp] + mov r10,rax + lea r8,[$L$xts_magic] + jmp NEAR $L$xts_enc_grandloop + +ALIGN 32 +$L$xts_enc_grandloop: + movdqu xmm2,XMMWORD[rdi] + movdqa xmm8,xmm0 + movdqu xmm3,XMMWORD[16+rdi] + pxor xmm2,xmm10 + movdqu xmm4,XMMWORD[32+rdi] + pxor xmm3,xmm11 +DB 102,15,56,220,209 + movdqu xmm5,XMMWORD[48+rdi] + pxor xmm4,xmm12 +DB 102,15,56,220,217 + movdqu xmm6,XMMWORD[64+rdi] + pxor xmm5,xmm13 +DB 102,15,56,220,225 + movdqu xmm7,XMMWORD[80+rdi] + pxor xmm8,xmm15 + movdqa xmm9,XMMWORD[96+rsp] + pxor xmm6,xmm14 +DB 102,15,56,220,233 + movups xmm0,XMMWORD[32+rbp] + lea rdi,[96+rdi] + pxor xmm7,xmm8 + + pxor xmm10,xmm9 +DB 102,15,56,220,241 + pxor xmm11,xmm9 + movdqa XMMWORD[rsp],xmm10 +DB 102,15,56,220,249 + movups xmm1,XMMWORD[48+rbp] + pxor xmm12,xmm9 + +DB 102,15,56,220,208 + pxor xmm13,xmm9 + movdqa XMMWORD[16+rsp],xmm11 +DB 102,15,56,220,216 + pxor xmm14,xmm9 + movdqa XMMWORD[32+rsp],xmm12 +DB 102,15,56,220,224 +DB 102,15,56,220,232 + pxor xmm8,xmm9 + movdqa XMMWORD[64+rsp],xmm14 +DB 102,15,56,220,240 +DB 102,15,56,220,248 + movups xmm0,XMMWORD[64+rbp] + movdqa XMMWORD[80+rsp],xmm8 + pshufd xmm9,xmm15,0x5f + jmp NEAR $L$xts_enc_loop6 +ALIGN 32 +$L$xts_enc_loop6: +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 + movups xmm1,XMMWORD[((-64))+rax*1+rcx] + add rax,32 + +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 +DB 102,15,56,220,240 +DB 102,15,56,220,248 + movups xmm0,XMMWORD[((-80))+rax*1+rcx] + jnz NEAR $L$xts_enc_loop6 + + movdqa xmm8,XMMWORD[r8] + movdqa xmm14,xmm9 + paddd xmm9,xmm9 +DB 102,15,56,220,209 + paddq xmm15,xmm15 + psrad xmm14,31 +DB 102,15,56,220,217 + pand xmm14,xmm8 + movups xmm10,XMMWORD[rbp] +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 + pxor xmm15,xmm14 + movaps xmm11,xmm10 +DB 102,15,56,220,249 + movups xmm1,XMMWORD[((-64))+rcx] + + movdqa xmm14,xmm9 +DB 102,15,56,220,208 + paddd xmm9,xmm9 + pxor xmm10,xmm15 +DB 102,15,56,220,216 + psrad xmm14,31 + paddq xmm15,xmm15 +DB 102,15,56,220,224 +DB 102,15,56,220,232 + pand xmm14,xmm8 + movaps xmm12,xmm11 +DB 102,15,56,220,240 + pxor xmm15,xmm14 + movdqa xmm14,xmm9 +DB 102,15,56,220,248 + movups xmm0,XMMWORD[((-48))+rcx] + + paddd xmm9,xmm9 +DB 102,15,56,220,209 + pxor xmm11,xmm15 + psrad xmm14,31 +DB 102,15,56,220,217 + paddq xmm15,xmm15 + pand xmm14,xmm8 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + movdqa XMMWORD[48+rsp],xmm13 + pxor xmm15,xmm14 +DB 102,15,56,220,241 + movaps xmm13,xmm12 + movdqa xmm14,xmm9 +DB 102,15,56,220,249 + movups xmm1,XMMWORD[((-32))+rcx] + + paddd xmm9,xmm9 +DB 102,15,56,220,208 + pxor xmm12,xmm15 + psrad xmm14,31 +DB 102,15,56,220,216 + paddq xmm15,xmm15 + pand xmm14,xmm8 +DB 102,15,56,220,224 +DB 102,15,56,220,232 +DB 102,15,56,220,240 + pxor xmm15,xmm14 + movaps xmm14,xmm13 +DB 102,15,56,220,248 + + movdqa xmm0,xmm9 + paddd xmm9,xmm9 +DB 102,15,56,220,209 + pxor xmm13,xmm15 + psrad xmm0,31 +DB 102,15,56,220,217 + paddq xmm15,xmm15 + pand xmm0,xmm8 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + pxor xmm15,xmm0 + movups xmm0,XMMWORD[rbp] +DB 102,15,56,220,241 +DB 102,15,56,220,249 + movups xmm1,XMMWORD[16+rbp] + + pxor xmm14,xmm15 +DB 102,15,56,221,84,36,0 + psrad xmm9,31 + paddq xmm15,xmm15 +DB 102,15,56,221,92,36,16 +DB 102,15,56,221,100,36,32 + pand xmm9,xmm8 + mov rax,r10 +DB 102,15,56,221,108,36,48 +DB 102,15,56,221,116,36,64 +DB 102,15,56,221,124,36,80 + pxor xmm15,xmm9 + + lea rsi,[96+rsi] + movups XMMWORD[(-96)+rsi],xmm2 + movups XMMWORD[(-80)+rsi],xmm3 + movups XMMWORD[(-64)+rsi],xmm4 + movups XMMWORD[(-48)+rsi],xmm5 + movups XMMWORD[(-32)+rsi],xmm6 + movups XMMWORD[(-16)+rsi],xmm7 + sub rdx,16*6 + jnc NEAR $L$xts_enc_grandloop + + mov eax,16+96 + sub eax,r10d + mov rcx,rbp + shr eax,4 + +$L$xts_enc_short: + + mov r10d,eax + pxor xmm10,xmm0 + add rdx,16*6 + jz NEAR $L$xts_enc_done + + pxor xmm11,xmm0 + cmp rdx,0x20 + jb NEAR $L$xts_enc_one + pxor xmm12,xmm0 + je NEAR $L$xts_enc_two + + pxor xmm13,xmm0 + cmp rdx,0x40 + jb NEAR $L$xts_enc_three + pxor xmm14,xmm0 + je NEAR $L$xts_enc_four + + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] + movdqu xmm4,XMMWORD[32+rdi] + pxor xmm2,xmm10 + movdqu xmm5,XMMWORD[48+rdi] + pxor xmm3,xmm11 + movdqu xmm6,XMMWORD[64+rdi] + lea rdi,[80+rdi] + pxor xmm4,xmm12 + pxor xmm5,xmm13 + pxor xmm6,xmm14 + pxor xmm7,xmm7 + + call _aesni_encrypt6 + + xorps xmm2,xmm10 + movdqa xmm10,xmm15 + xorps xmm3,xmm11 + xorps xmm4,xmm12 + movdqu XMMWORD[rsi],xmm2 + xorps xmm5,xmm13 + movdqu XMMWORD[16+rsi],xmm3 + xorps xmm6,xmm14 + movdqu XMMWORD[32+rsi],xmm4 + movdqu XMMWORD[48+rsi],xmm5 + movdqu XMMWORD[64+rsi],xmm6 + lea rsi,[80+rsi] + jmp NEAR $L$xts_enc_done + +ALIGN 16 +$L$xts_enc_one: + movups xmm2,XMMWORD[rdi] + lea rdi,[16+rdi] + xorps xmm2,xmm10 + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_enc1_9: +DB 102,15,56,220,209 + dec eax + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_enc1_9 +DB 102,15,56,221,209 + xorps xmm2,xmm10 + movdqa xmm10,xmm11 + movups XMMWORD[rsi],xmm2 + lea rsi,[16+rsi] + jmp NEAR $L$xts_enc_done + +ALIGN 16 +$L$xts_enc_two: + movups xmm2,XMMWORD[rdi] + movups xmm3,XMMWORD[16+rdi] + lea rdi,[32+rdi] + xorps xmm2,xmm10 + xorps xmm3,xmm11 + + call _aesni_encrypt2 + + xorps xmm2,xmm10 + movdqa xmm10,xmm12 + xorps xmm3,xmm11 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + lea rsi,[32+rsi] + jmp NEAR $L$xts_enc_done + +ALIGN 16 +$L$xts_enc_three: + movups xmm2,XMMWORD[rdi] + movups xmm3,XMMWORD[16+rdi] + movups xmm4,XMMWORD[32+rdi] + lea rdi,[48+rdi] + xorps xmm2,xmm10 + xorps xmm3,xmm11 + xorps xmm4,xmm12 + + call _aesni_encrypt3 + + xorps xmm2,xmm10 + movdqa xmm10,xmm13 + xorps xmm3,xmm11 + xorps xmm4,xmm12 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + lea rsi,[48+rsi] + jmp NEAR $L$xts_enc_done + +ALIGN 16 +$L$xts_enc_four: + movups xmm2,XMMWORD[rdi] + movups xmm3,XMMWORD[16+rdi] + movups xmm4,XMMWORD[32+rdi] + xorps xmm2,xmm10 + movups xmm5,XMMWORD[48+rdi] + lea rdi,[64+rdi] + xorps xmm3,xmm11 + xorps xmm4,xmm12 + xorps xmm5,xmm13 + + call _aesni_encrypt4 + + pxor xmm2,xmm10 + movdqa xmm10,xmm14 + pxor xmm3,xmm11 + pxor xmm4,xmm12 + movdqu XMMWORD[rsi],xmm2 + pxor xmm5,xmm13 + movdqu XMMWORD[16+rsi],xmm3 + movdqu XMMWORD[32+rsi],xmm4 + movdqu XMMWORD[48+rsi],xmm5 + lea rsi,[64+rsi] + jmp NEAR $L$xts_enc_done + +ALIGN 16 +$L$xts_enc_done: + and r9,15 + jz NEAR $L$xts_enc_ret + mov rdx,r9 + +$L$xts_enc_steal: + movzx eax,BYTE[rdi] + movzx ecx,BYTE[((-16))+rsi] + lea rdi,[1+rdi] + mov BYTE[((-16))+rsi],al + mov BYTE[rsi],cl + lea rsi,[1+rsi] + sub rdx,1 + jnz NEAR $L$xts_enc_steal + + sub rsi,r9 + mov rcx,rbp + mov eax,r10d + + movups xmm2,XMMWORD[((-16))+rsi] + xorps xmm2,xmm10 + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_enc1_10: +DB 102,15,56,220,209 + dec eax + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_enc1_10 +DB 102,15,56,221,209 + xorps xmm2,xmm10 + movups XMMWORD[(-16)+rsi],xmm2 + +$L$xts_enc_ret: + xorps xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + movaps xmm6,XMMWORD[((-168))+r11] + movaps XMMWORD[(-168)+r11],xmm0 + movaps xmm7,XMMWORD[((-152))+r11] + movaps XMMWORD[(-152)+r11],xmm0 + movaps xmm8,XMMWORD[((-136))+r11] + movaps XMMWORD[(-136)+r11],xmm0 + movaps xmm9,XMMWORD[((-120))+r11] + movaps XMMWORD[(-120)+r11],xmm0 + movaps xmm10,XMMWORD[((-104))+r11] + movaps XMMWORD[(-104)+r11],xmm0 + movaps xmm11,XMMWORD[((-88))+r11] + movaps XMMWORD[(-88)+r11],xmm0 + movaps xmm12,XMMWORD[((-72))+r11] + movaps XMMWORD[(-72)+r11],xmm0 + movaps xmm13,XMMWORD[((-56))+r11] + movaps XMMWORD[(-56)+r11],xmm0 + movaps xmm14,XMMWORD[((-40))+r11] + movaps XMMWORD[(-40)+r11],xmm0 + movaps xmm15,XMMWORD[((-24))+r11] + movaps XMMWORD[(-24)+r11],xmm0 + movaps XMMWORD[rsp],xmm0 + movaps XMMWORD[16+rsp],xmm0 + movaps XMMWORD[32+rsp],xmm0 + movaps XMMWORD[48+rsp],xmm0 + movaps XMMWORD[64+rsp],xmm0 + movaps XMMWORD[80+rsp],xmm0 + movaps XMMWORD[96+rsp],xmm0 + mov rbp,QWORD[((-8))+r11] + + lea rsp,[r11] + +$L$xts_enc_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_xts_encrypt: +global aesni_xts_decrypt + +ALIGN 16 +aesni_xts_decrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_xts_decrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + lea r11,[rsp] + + push rbp + + sub rsp,272 + and rsp,-16 + movaps XMMWORD[(-168)+r11],xmm6 + movaps XMMWORD[(-152)+r11],xmm7 + movaps XMMWORD[(-136)+r11],xmm8 + movaps XMMWORD[(-120)+r11],xmm9 + movaps XMMWORD[(-104)+r11],xmm10 + movaps XMMWORD[(-88)+r11],xmm11 + movaps XMMWORD[(-72)+r11],xmm12 + movaps XMMWORD[(-56)+r11],xmm13 + movaps XMMWORD[(-40)+r11],xmm14 + movaps XMMWORD[(-24)+r11],xmm15 +$L$xts_dec_body: + movups xmm2,XMMWORD[r9] + mov eax,DWORD[240+r8] + mov r10d,DWORD[240+rcx] + movups xmm0,XMMWORD[r8] + movups xmm1,XMMWORD[16+r8] + lea r8,[32+r8] + xorps xmm2,xmm0 +$L$oop_enc1_11: +DB 102,15,56,220,209 + dec eax + movups xmm1,XMMWORD[r8] + lea r8,[16+r8] + jnz NEAR $L$oop_enc1_11 +DB 102,15,56,221,209 + xor eax,eax + test rdx,15 + setnz al + shl rax,4 + sub rdx,rax + + movups xmm0,XMMWORD[rcx] + mov rbp,rcx + mov eax,r10d + shl r10d,4 + mov r9,rdx + and rdx,-16 + + movups xmm1,XMMWORD[16+r10*1+rcx] + + movdqa xmm8,XMMWORD[$L$xts_magic] + movdqa xmm15,xmm2 + pshufd xmm9,xmm2,0x5f + pxor xmm1,xmm0 + movdqa xmm14,xmm9 + paddd xmm9,xmm9 + movdqa xmm10,xmm15 + psrad xmm14,31 + paddq xmm15,xmm15 + pand xmm14,xmm8 + pxor xmm10,xmm0 + pxor xmm15,xmm14 + movdqa xmm14,xmm9 + paddd xmm9,xmm9 + movdqa xmm11,xmm15 + psrad xmm14,31 + paddq xmm15,xmm15 + pand xmm14,xmm8 + pxor xmm11,xmm0 + pxor xmm15,xmm14 + movdqa xmm14,xmm9 + paddd xmm9,xmm9 + movdqa xmm12,xmm15 + psrad xmm14,31 + paddq xmm15,xmm15 + pand xmm14,xmm8 + pxor xmm12,xmm0 + pxor xmm15,xmm14 + movdqa xmm14,xmm9 + paddd xmm9,xmm9 + movdqa xmm13,xmm15 + psrad xmm14,31 + paddq xmm15,xmm15 + pand xmm14,xmm8 + pxor xmm13,xmm0 + pxor xmm15,xmm14 + movdqa xmm14,xmm15 + psrad xmm9,31 + paddq xmm15,xmm15 + pand xmm9,xmm8 + pxor xmm14,xmm0 + pxor xmm15,xmm9 + movaps XMMWORD[96+rsp],xmm1 + + sub rdx,16*6 + jc NEAR $L$xts_dec_short + + mov eax,16+96 + lea rcx,[32+r10*1+rbp] + sub rax,r10 + movups xmm1,XMMWORD[16+rbp] + mov r10,rax + lea r8,[$L$xts_magic] + jmp NEAR $L$xts_dec_grandloop + +ALIGN 32 +$L$xts_dec_grandloop: + movdqu xmm2,XMMWORD[rdi] + movdqa xmm8,xmm0 + movdqu xmm3,XMMWORD[16+rdi] + pxor xmm2,xmm10 + movdqu xmm4,XMMWORD[32+rdi] + pxor xmm3,xmm11 +DB 102,15,56,222,209 + movdqu xmm5,XMMWORD[48+rdi] + pxor xmm4,xmm12 +DB 102,15,56,222,217 + movdqu xmm6,XMMWORD[64+rdi] + pxor xmm5,xmm13 +DB 102,15,56,222,225 + movdqu xmm7,XMMWORD[80+rdi] + pxor xmm8,xmm15 + movdqa xmm9,XMMWORD[96+rsp] + pxor xmm6,xmm14 +DB 102,15,56,222,233 + movups xmm0,XMMWORD[32+rbp] + lea rdi,[96+rdi] + pxor xmm7,xmm8 + + pxor xmm10,xmm9 +DB 102,15,56,222,241 + pxor xmm11,xmm9 + movdqa XMMWORD[rsp],xmm10 +DB 102,15,56,222,249 + movups xmm1,XMMWORD[48+rbp] + pxor xmm12,xmm9 + +DB 102,15,56,222,208 + pxor xmm13,xmm9 + movdqa XMMWORD[16+rsp],xmm11 +DB 102,15,56,222,216 + pxor xmm14,xmm9 + movdqa XMMWORD[32+rsp],xmm12 +DB 102,15,56,222,224 +DB 102,15,56,222,232 + pxor xmm8,xmm9 + movdqa XMMWORD[64+rsp],xmm14 +DB 102,15,56,222,240 +DB 102,15,56,222,248 + movups xmm0,XMMWORD[64+rbp] + movdqa XMMWORD[80+rsp],xmm8 + pshufd xmm9,xmm15,0x5f + jmp NEAR $L$xts_dec_loop6 +ALIGN 32 +$L$xts_dec_loop6: +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 + movups xmm1,XMMWORD[((-64))+rax*1+rcx] + add rax,32 + +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 +DB 102,15,56,222,248 + movups xmm0,XMMWORD[((-80))+rax*1+rcx] + jnz NEAR $L$xts_dec_loop6 + + movdqa xmm8,XMMWORD[r8] + movdqa xmm14,xmm9 + paddd xmm9,xmm9 +DB 102,15,56,222,209 + paddq xmm15,xmm15 + psrad xmm14,31 +DB 102,15,56,222,217 + pand xmm14,xmm8 + movups xmm10,XMMWORD[rbp] +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 + pxor xmm15,xmm14 + movaps xmm11,xmm10 +DB 102,15,56,222,249 + movups xmm1,XMMWORD[((-64))+rcx] + + movdqa xmm14,xmm9 +DB 102,15,56,222,208 + paddd xmm9,xmm9 + pxor xmm10,xmm15 +DB 102,15,56,222,216 + psrad xmm14,31 + paddq xmm15,xmm15 +DB 102,15,56,222,224 +DB 102,15,56,222,232 + pand xmm14,xmm8 + movaps xmm12,xmm11 +DB 102,15,56,222,240 + pxor xmm15,xmm14 + movdqa xmm14,xmm9 +DB 102,15,56,222,248 + movups xmm0,XMMWORD[((-48))+rcx] + + paddd xmm9,xmm9 +DB 102,15,56,222,209 + pxor xmm11,xmm15 + psrad xmm14,31 +DB 102,15,56,222,217 + paddq xmm15,xmm15 + pand xmm14,xmm8 +DB 102,15,56,222,225 +DB 102,15,56,222,233 + movdqa XMMWORD[48+rsp],xmm13 + pxor xmm15,xmm14 +DB 102,15,56,222,241 + movaps xmm13,xmm12 + movdqa xmm14,xmm9 +DB 102,15,56,222,249 + movups xmm1,XMMWORD[((-32))+rcx] + + paddd xmm9,xmm9 +DB 102,15,56,222,208 + pxor xmm12,xmm15 + psrad xmm14,31 +DB 102,15,56,222,216 + paddq xmm15,xmm15 + pand xmm14,xmm8 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 + pxor xmm15,xmm14 + movaps xmm14,xmm13 +DB 102,15,56,222,248 + + movdqa xmm0,xmm9 + paddd xmm9,xmm9 +DB 102,15,56,222,209 + pxor xmm13,xmm15 + psrad xmm0,31 +DB 102,15,56,222,217 + paddq xmm15,xmm15 + pand xmm0,xmm8 +DB 102,15,56,222,225 +DB 102,15,56,222,233 + pxor xmm15,xmm0 + movups xmm0,XMMWORD[rbp] +DB 102,15,56,222,241 +DB 102,15,56,222,249 + movups xmm1,XMMWORD[16+rbp] + + pxor xmm14,xmm15 +DB 102,15,56,223,84,36,0 + psrad xmm9,31 + paddq xmm15,xmm15 +DB 102,15,56,223,92,36,16 +DB 102,15,56,223,100,36,32 + pand xmm9,xmm8 + mov rax,r10 +DB 102,15,56,223,108,36,48 +DB 102,15,56,223,116,36,64 +DB 102,15,56,223,124,36,80 + pxor xmm15,xmm9 + + lea rsi,[96+rsi] + movups XMMWORD[(-96)+rsi],xmm2 + movups XMMWORD[(-80)+rsi],xmm3 + movups XMMWORD[(-64)+rsi],xmm4 + movups XMMWORD[(-48)+rsi],xmm5 + movups XMMWORD[(-32)+rsi],xmm6 + movups XMMWORD[(-16)+rsi],xmm7 + sub rdx,16*6 + jnc NEAR $L$xts_dec_grandloop + + mov eax,16+96 + sub eax,r10d + mov rcx,rbp + shr eax,4 + +$L$xts_dec_short: + + mov r10d,eax + pxor xmm10,xmm0 + pxor xmm11,xmm0 + add rdx,16*6 + jz NEAR $L$xts_dec_done + + pxor xmm12,xmm0 + cmp rdx,0x20 + jb NEAR $L$xts_dec_one + pxor xmm13,xmm0 + je NEAR $L$xts_dec_two + + pxor xmm14,xmm0 + cmp rdx,0x40 + jb NEAR $L$xts_dec_three + je NEAR $L$xts_dec_four + + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] + movdqu xmm4,XMMWORD[32+rdi] + pxor xmm2,xmm10 + movdqu xmm5,XMMWORD[48+rdi] + pxor xmm3,xmm11 + movdqu xmm6,XMMWORD[64+rdi] + lea rdi,[80+rdi] + pxor xmm4,xmm12 + pxor xmm5,xmm13 + pxor xmm6,xmm14 + + call _aesni_decrypt6 + + xorps xmm2,xmm10 + xorps xmm3,xmm11 + xorps xmm4,xmm12 + movdqu XMMWORD[rsi],xmm2 + xorps xmm5,xmm13 + movdqu XMMWORD[16+rsi],xmm3 + xorps xmm6,xmm14 + movdqu XMMWORD[32+rsi],xmm4 + pxor xmm14,xmm14 + movdqu XMMWORD[48+rsi],xmm5 + pcmpgtd xmm14,xmm15 + movdqu XMMWORD[64+rsi],xmm6 + lea rsi,[80+rsi] + pshufd xmm11,xmm14,0x13 + and r9,15 + jz NEAR $L$xts_dec_ret + + movdqa xmm10,xmm15 + paddq xmm15,xmm15 + pand xmm11,xmm8 + pxor xmm11,xmm15 + jmp NEAR $L$xts_dec_done2 + +ALIGN 16 +$L$xts_dec_one: + movups xmm2,XMMWORD[rdi] + lea rdi,[16+rdi] + xorps xmm2,xmm10 + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_dec1_12: +DB 102,15,56,222,209 + dec eax + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_dec1_12 +DB 102,15,56,223,209 + xorps xmm2,xmm10 + movdqa xmm10,xmm11 + movups XMMWORD[rsi],xmm2 + movdqa xmm11,xmm12 + lea rsi,[16+rsi] + jmp NEAR $L$xts_dec_done + +ALIGN 16 +$L$xts_dec_two: + movups xmm2,XMMWORD[rdi] + movups xmm3,XMMWORD[16+rdi] + lea rdi,[32+rdi] + xorps xmm2,xmm10 + xorps xmm3,xmm11 + + call _aesni_decrypt2 + + xorps xmm2,xmm10 + movdqa xmm10,xmm12 + xorps xmm3,xmm11 + movdqa xmm11,xmm13 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + lea rsi,[32+rsi] + jmp NEAR $L$xts_dec_done + +ALIGN 16 +$L$xts_dec_three: + movups xmm2,XMMWORD[rdi] + movups xmm3,XMMWORD[16+rdi] + movups xmm4,XMMWORD[32+rdi] + lea rdi,[48+rdi] + xorps xmm2,xmm10 + xorps xmm3,xmm11 + xorps xmm4,xmm12 + + call _aesni_decrypt3 + + xorps xmm2,xmm10 + movdqa xmm10,xmm13 + xorps xmm3,xmm11 + movdqa xmm11,xmm14 + xorps xmm4,xmm12 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + lea rsi,[48+rsi] + jmp NEAR $L$xts_dec_done + +ALIGN 16 +$L$xts_dec_four: + movups xmm2,XMMWORD[rdi] + movups xmm3,XMMWORD[16+rdi] + movups xmm4,XMMWORD[32+rdi] + xorps xmm2,xmm10 + movups xmm5,XMMWORD[48+rdi] + lea rdi,[64+rdi] + xorps xmm3,xmm11 + xorps xmm4,xmm12 + xorps xmm5,xmm13 + + call _aesni_decrypt4 + + pxor xmm2,xmm10 + movdqa xmm10,xmm14 + pxor xmm3,xmm11 + movdqa xmm11,xmm15 + pxor xmm4,xmm12 + movdqu XMMWORD[rsi],xmm2 + pxor xmm5,xmm13 + movdqu XMMWORD[16+rsi],xmm3 + movdqu XMMWORD[32+rsi],xmm4 + movdqu XMMWORD[48+rsi],xmm5 + lea rsi,[64+rsi] + jmp NEAR $L$xts_dec_done + +ALIGN 16 +$L$xts_dec_done: + and r9,15 + jz NEAR $L$xts_dec_ret +$L$xts_dec_done2: + mov rdx,r9 + mov rcx,rbp + mov eax,r10d + + movups xmm2,XMMWORD[rdi] + xorps xmm2,xmm11 + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_dec1_13: +DB 102,15,56,222,209 + dec eax + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_dec1_13 +DB 102,15,56,223,209 + xorps xmm2,xmm11 + movups XMMWORD[rsi],xmm2 + +$L$xts_dec_steal: + movzx eax,BYTE[16+rdi] + movzx ecx,BYTE[rsi] + lea rdi,[1+rdi] + mov BYTE[rsi],al + mov BYTE[16+rsi],cl + lea rsi,[1+rsi] + sub rdx,1 + jnz NEAR $L$xts_dec_steal + + sub rsi,r9 + mov rcx,rbp + mov eax,r10d + + movups xmm2,XMMWORD[rsi] + xorps xmm2,xmm10 + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_dec1_14: +DB 102,15,56,222,209 + dec eax + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_dec1_14 +DB 102,15,56,223,209 + xorps xmm2,xmm10 + movups XMMWORD[rsi],xmm2 + +$L$xts_dec_ret: + xorps xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + movaps xmm6,XMMWORD[((-168))+r11] + movaps XMMWORD[(-168)+r11],xmm0 + movaps xmm7,XMMWORD[((-152))+r11] + movaps XMMWORD[(-152)+r11],xmm0 + movaps xmm8,XMMWORD[((-136))+r11] + movaps XMMWORD[(-136)+r11],xmm0 + movaps xmm9,XMMWORD[((-120))+r11] + movaps XMMWORD[(-120)+r11],xmm0 + movaps xmm10,XMMWORD[((-104))+r11] + movaps XMMWORD[(-104)+r11],xmm0 + movaps xmm11,XMMWORD[((-88))+r11] + movaps XMMWORD[(-88)+r11],xmm0 + movaps xmm12,XMMWORD[((-72))+r11] + movaps XMMWORD[(-72)+r11],xmm0 + movaps xmm13,XMMWORD[((-56))+r11] + movaps XMMWORD[(-56)+r11],xmm0 + movaps xmm14,XMMWORD[((-40))+r11] + movaps XMMWORD[(-40)+r11],xmm0 + movaps xmm15,XMMWORD[((-24))+r11] + movaps XMMWORD[(-24)+r11],xmm0 + movaps XMMWORD[rsp],xmm0 + movaps XMMWORD[16+rsp],xmm0 + movaps XMMWORD[32+rsp],xmm0 + movaps XMMWORD[48+rsp],xmm0 + movaps XMMWORD[64+rsp],xmm0 + movaps XMMWORD[80+rsp],xmm0 + movaps XMMWORD[96+rsp],xmm0 + mov rbp,QWORD[((-8))+r11] + + lea rsp,[r11] + +$L$xts_dec_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_xts_decrypt: +global aesni_ocb_encrypt + +ALIGN 32 +aesni_ocb_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_ocb_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + lea rax,[rsp] + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + lea rsp,[((-160))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[64+rsp],xmm10 + movaps XMMWORD[80+rsp],xmm11 + movaps XMMWORD[96+rsp],xmm12 + movaps XMMWORD[112+rsp],xmm13 + movaps XMMWORD[128+rsp],xmm14 + movaps XMMWORD[144+rsp],xmm15 +$L$ocb_enc_body: + mov rbx,QWORD[56+rax] + mov rbp,QWORD[((56+8))+rax] + + mov r10d,DWORD[240+rcx] + mov r11,rcx + shl r10d,4 + movups xmm9,XMMWORD[rcx] + movups xmm1,XMMWORD[16+r10*1+rcx] + + movdqu xmm15,XMMWORD[r9] + pxor xmm9,xmm1 + pxor xmm15,xmm1 + + mov eax,16+32 + lea rcx,[32+r10*1+r11] + movups xmm1,XMMWORD[16+r11] + sub rax,r10 + mov r10,rax + + movdqu xmm10,XMMWORD[rbx] + movdqu xmm8,XMMWORD[rbp] + + test r8,1 + jnz NEAR $L$ocb_enc_odd + + bsf r12,r8 + add r8,1 + shl r12,4 + movdqu xmm7,XMMWORD[r12*1+rbx] + movdqu xmm2,XMMWORD[rdi] + lea rdi,[16+rdi] + + call __ocb_encrypt1 + + movdqa xmm15,xmm7 + movups XMMWORD[rsi],xmm2 + lea rsi,[16+rsi] + sub rdx,1 + jz NEAR $L$ocb_enc_done + +$L$ocb_enc_odd: + lea r12,[1+r8] + lea r13,[3+r8] + lea r14,[5+r8] + lea r8,[6+r8] + bsf r12,r12 + bsf r13,r13 + bsf r14,r14 + shl r12,4 + shl r13,4 + shl r14,4 + + sub rdx,6 + jc NEAR $L$ocb_enc_short + jmp NEAR $L$ocb_enc_grandloop + +ALIGN 32 +$L$ocb_enc_grandloop: + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] + movdqu xmm4,XMMWORD[32+rdi] + movdqu xmm5,XMMWORD[48+rdi] + movdqu xmm6,XMMWORD[64+rdi] + movdqu xmm7,XMMWORD[80+rdi] + lea rdi,[96+rdi] + + call __ocb_encrypt6 + + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + movups XMMWORD[64+rsi],xmm6 + movups XMMWORD[80+rsi],xmm7 + lea rsi,[96+rsi] + sub rdx,6 + jnc NEAR $L$ocb_enc_grandloop + +$L$ocb_enc_short: + add rdx,6 + jz NEAR $L$ocb_enc_done + + movdqu xmm2,XMMWORD[rdi] + cmp rdx,2 + jb NEAR $L$ocb_enc_one + movdqu xmm3,XMMWORD[16+rdi] + je NEAR $L$ocb_enc_two + + movdqu xmm4,XMMWORD[32+rdi] + cmp rdx,4 + jb NEAR $L$ocb_enc_three + movdqu xmm5,XMMWORD[48+rdi] + je NEAR $L$ocb_enc_four + + movdqu xmm6,XMMWORD[64+rdi] + pxor xmm7,xmm7 + + call __ocb_encrypt6 + + movdqa xmm15,xmm14 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + movups XMMWORD[64+rsi],xmm6 + + jmp NEAR $L$ocb_enc_done + +ALIGN 16 +$L$ocb_enc_one: + movdqa xmm7,xmm10 + + call __ocb_encrypt1 + + movdqa xmm15,xmm7 + movups XMMWORD[rsi],xmm2 + jmp NEAR $L$ocb_enc_done + +ALIGN 16 +$L$ocb_enc_two: + pxor xmm4,xmm4 + pxor xmm5,xmm5 + + call __ocb_encrypt4 + + movdqa xmm15,xmm11 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + + jmp NEAR $L$ocb_enc_done + +ALIGN 16 +$L$ocb_enc_three: + pxor xmm5,xmm5 + + call __ocb_encrypt4 + + movdqa xmm15,xmm12 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + + jmp NEAR $L$ocb_enc_done + +ALIGN 16 +$L$ocb_enc_four: + call __ocb_encrypt4 + + movdqa xmm15,xmm13 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + +$L$ocb_enc_done: + pxor xmm15,xmm0 + movdqu XMMWORD[rbp],xmm8 + movdqu XMMWORD[r9],xmm15 + + xorps xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + movaps xmm6,XMMWORD[rsp] + movaps XMMWORD[rsp],xmm0 + movaps xmm7,XMMWORD[16+rsp] + movaps XMMWORD[16+rsp],xmm0 + movaps xmm8,XMMWORD[32+rsp] + movaps XMMWORD[32+rsp],xmm0 + movaps xmm9,XMMWORD[48+rsp] + movaps XMMWORD[48+rsp],xmm0 + movaps xmm10,XMMWORD[64+rsp] + movaps XMMWORD[64+rsp],xmm0 + movaps xmm11,XMMWORD[80+rsp] + movaps XMMWORD[80+rsp],xmm0 + movaps xmm12,XMMWORD[96+rsp] + movaps XMMWORD[96+rsp],xmm0 + movaps xmm13,XMMWORD[112+rsp] + movaps XMMWORD[112+rsp],xmm0 + movaps xmm14,XMMWORD[128+rsp] + movaps XMMWORD[128+rsp],xmm0 + movaps xmm15,XMMWORD[144+rsp] + movaps XMMWORD[144+rsp],xmm0 + lea rax,[((160+40))+rsp] +$L$ocb_enc_pop: + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$ocb_enc_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_ocb_encrypt: + + +ALIGN 32 +__ocb_encrypt6: + + pxor xmm15,xmm9 + movdqu xmm11,XMMWORD[r12*1+rbx] + movdqa xmm12,xmm10 + movdqu xmm13,XMMWORD[r13*1+rbx] + movdqa xmm14,xmm10 + pxor xmm10,xmm15 + movdqu xmm15,XMMWORD[r14*1+rbx] + pxor xmm11,xmm10 + pxor xmm8,xmm2 + pxor xmm2,xmm10 + pxor xmm12,xmm11 + pxor xmm8,xmm3 + pxor xmm3,xmm11 + pxor xmm13,xmm12 + pxor xmm8,xmm4 + pxor xmm4,xmm12 + pxor xmm14,xmm13 + pxor xmm8,xmm5 + pxor xmm5,xmm13 + pxor xmm15,xmm14 + pxor xmm8,xmm6 + pxor xmm6,xmm14 + pxor xmm8,xmm7 + pxor xmm7,xmm15 + movups xmm0,XMMWORD[32+r11] + + lea r12,[1+r8] + lea r13,[3+r8] + lea r14,[5+r8] + add r8,6 + pxor xmm10,xmm9 + bsf r12,r12 + bsf r13,r13 + bsf r14,r14 + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + pxor xmm11,xmm9 + pxor xmm12,xmm9 +DB 102,15,56,220,241 + pxor xmm13,xmm9 + pxor xmm14,xmm9 +DB 102,15,56,220,249 + movups xmm1,XMMWORD[48+r11] + pxor xmm15,xmm9 + +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 +DB 102,15,56,220,240 +DB 102,15,56,220,248 + movups xmm0,XMMWORD[64+r11] + shl r12,4 + shl r13,4 + jmp NEAR $L$ocb_enc_loop6 + +ALIGN 32 +$L$ocb_enc_loop6: +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 + +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 +DB 102,15,56,220,240 +DB 102,15,56,220,248 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$ocb_enc_loop6 + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 + movups xmm1,XMMWORD[16+r11] + shl r14,4 + +DB 102,65,15,56,221,210 + movdqu xmm10,XMMWORD[rbx] + mov rax,r10 +DB 102,65,15,56,221,219 +DB 102,65,15,56,221,228 +DB 102,65,15,56,221,237 +DB 102,65,15,56,221,246 +DB 102,65,15,56,221,255 + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +__ocb_encrypt4: + + pxor xmm15,xmm9 + movdqu xmm11,XMMWORD[r12*1+rbx] + movdqa xmm12,xmm10 + movdqu xmm13,XMMWORD[r13*1+rbx] + pxor xmm10,xmm15 + pxor xmm11,xmm10 + pxor xmm8,xmm2 + pxor xmm2,xmm10 + pxor xmm12,xmm11 + pxor xmm8,xmm3 + pxor xmm3,xmm11 + pxor xmm13,xmm12 + pxor xmm8,xmm4 + pxor xmm4,xmm12 + pxor xmm8,xmm5 + pxor xmm5,xmm13 + movups xmm0,XMMWORD[32+r11] + + pxor xmm10,xmm9 + pxor xmm11,xmm9 + pxor xmm12,xmm9 + pxor xmm13,xmm9 + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + movups xmm1,XMMWORD[48+r11] + +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 + movups xmm0,XMMWORD[64+r11] + jmp NEAR $L$ocb_enc_loop4 + +ALIGN 32 +$L$ocb_enc_loop4: +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 + +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$ocb_enc_loop4 + +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + movups xmm1,XMMWORD[16+r11] + mov rax,r10 + +DB 102,65,15,56,221,210 +DB 102,65,15,56,221,219 +DB 102,65,15,56,221,228 +DB 102,65,15,56,221,237 + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +__ocb_encrypt1: + + pxor xmm7,xmm15 + pxor xmm7,xmm9 + pxor xmm8,xmm2 + pxor xmm2,xmm7 + movups xmm0,XMMWORD[32+r11] + +DB 102,15,56,220,209 + movups xmm1,XMMWORD[48+r11] + pxor xmm7,xmm9 + +DB 102,15,56,220,208 + movups xmm0,XMMWORD[64+r11] + jmp NEAR $L$ocb_enc_loop1 + +ALIGN 32 +$L$ocb_enc_loop1: +DB 102,15,56,220,209 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 + +DB 102,15,56,220,208 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$ocb_enc_loop1 + +DB 102,15,56,220,209 + movups xmm1,XMMWORD[16+r11] + mov rax,r10 + +DB 102,15,56,221,215 + DB 0F3h,0C3h ;repret + + + +global aesni_ocb_decrypt + +ALIGN 32 +aesni_ocb_decrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_ocb_decrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + lea rax,[rsp] + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + lea rsp,[((-160))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[64+rsp],xmm10 + movaps XMMWORD[80+rsp],xmm11 + movaps XMMWORD[96+rsp],xmm12 + movaps XMMWORD[112+rsp],xmm13 + movaps XMMWORD[128+rsp],xmm14 + movaps XMMWORD[144+rsp],xmm15 +$L$ocb_dec_body: + mov rbx,QWORD[56+rax] + mov rbp,QWORD[((56+8))+rax] + + mov r10d,DWORD[240+rcx] + mov r11,rcx + shl r10d,4 + movups xmm9,XMMWORD[rcx] + movups xmm1,XMMWORD[16+r10*1+rcx] + + movdqu xmm15,XMMWORD[r9] + pxor xmm9,xmm1 + pxor xmm15,xmm1 + + mov eax,16+32 + lea rcx,[32+r10*1+r11] + movups xmm1,XMMWORD[16+r11] + sub rax,r10 + mov r10,rax + + movdqu xmm10,XMMWORD[rbx] + movdqu xmm8,XMMWORD[rbp] + + test r8,1 + jnz NEAR $L$ocb_dec_odd + + bsf r12,r8 + add r8,1 + shl r12,4 + movdqu xmm7,XMMWORD[r12*1+rbx] + movdqu xmm2,XMMWORD[rdi] + lea rdi,[16+rdi] + + call __ocb_decrypt1 + + movdqa xmm15,xmm7 + movups XMMWORD[rsi],xmm2 + xorps xmm8,xmm2 + lea rsi,[16+rsi] + sub rdx,1 + jz NEAR $L$ocb_dec_done + +$L$ocb_dec_odd: + lea r12,[1+r8] + lea r13,[3+r8] + lea r14,[5+r8] + lea r8,[6+r8] + bsf r12,r12 + bsf r13,r13 + bsf r14,r14 + shl r12,4 + shl r13,4 + shl r14,4 + + sub rdx,6 + jc NEAR $L$ocb_dec_short + jmp NEAR $L$ocb_dec_grandloop + +ALIGN 32 +$L$ocb_dec_grandloop: + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] + movdqu xmm4,XMMWORD[32+rdi] + movdqu xmm5,XMMWORD[48+rdi] + movdqu xmm6,XMMWORD[64+rdi] + movdqu xmm7,XMMWORD[80+rdi] + lea rdi,[96+rdi] + + call __ocb_decrypt6 + + movups XMMWORD[rsi],xmm2 + pxor xmm8,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm8,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm8,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm8,xmm5 + movups XMMWORD[64+rsi],xmm6 + pxor xmm8,xmm6 + movups XMMWORD[80+rsi],xmm7 + pxor xmm8,xmm7 + lea rsi,[96+rsi] + sub rdx,6 + jnc NEAR $L$ocb_dec_grandloop + +$L$ocb_dec_short: + add rdx,6 + jz NEAR $L$ocb_dec_done + + movdqu xmm2,XMMWORD[rdi] + cmp rdx,2 + jb NEAR $L$ocb_dec_one + movdqu xmm3,XMMWORD[16+rdi] + je NEAR $L$ocb_dec_two + + movdqu xmm4,XMMWORD[32+rdi] + cmp rdx,4 + jb NEAR $L$ocb_dec_three + movdqu xmm5,XMMWORD[48+rdi] + je NEAR $L$ocb_dec_four + + movdqu xmm6,XMMWORD[64+rdi] + pxor xmm7,xmm7 + + call __ocb_decrypt6 + + movdqa xmm15,xmm14 + movups XMMWORD[rsi],xmm2 + pxor xmm8,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm8,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm8,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm8,xmm5 + movups XMMWORD[64+rsi],xmm6 + pxor xmm8,xmm6 + + jmp NEAR $L$ocb_dec_done + +ALIGN 16 +$L$ocb_dec_one: + movdqa xmm7,xmm10 + + call __ocb_decrypt1 + + movdqa xmm15,xmm7 + movups XMMWORD[rsi],xmm2 + xorps xmm8,xmm2 + jmp NEAR $L$ocb_dec_done + +ALIGN 16 +$L$ocb_dec_two: + pxor xmm4,xmm4 + pxor xmm5,xmm5 + + call __ocb_decrypt4 + + movdqa xmm15,xmm11 + movups XMMWORD[rsi],xmm2 + xorps xmm8,xmm2 + movups XMMWORD[16+rsi],xmm3 + xorps xmm8,xmm3 + + jmp NEAR $L$ocb_dec_done + +ALIGN 16 +$L$ocb_dec_three: + pxor xmm5,xmm5 + + call __ocb_decrypt4 + + movdqa xmm15,xmm12 + movups XMMWORD[rsi],xmm2 + xorps xmm8,xmm2 + movups XMMWORD[16+rsi],xmm3 + xorps xmm8,xmm3 + movups XMMWORD[32+rsi],xmm4 + xorps xmm8,xmm4 + + jmp NEAR $L$ocb_dec_done + +ALIGN 16 +$L$ocb_dec_four: + call __ocb_decrypt4 + + movdqa xmm15,xmm13 + movups XMMWORD[rsi],xmm2 + pxor xmm8,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm8,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm8,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm8,xmm5 + +$L$ocb_dec_done: + pxor xmm15,xmm0 + movdqu XMMWORD[rbp],xmm8 + movdqu XMMWORD[r9],xmm15 + + xorps xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + movaps xmm6,XMMWORD[rsp] + movaps XMMWORD[rsp],xmm0 + movaps xmm7,XMMWORD[16+rsp] + movaps XMMWORD[16+rsp],xmm0 + movaps xmm8,XMMWORD[32+rsp] + movaps XMMWORD[32+rsp],xmm0 + movaps xmm9,XMMWORD[48+rsp] + movaps XMMWORD[48+rsp],xmm0 + movaps xmm10,XMMWORD[64+rsp] + movaps XMMWORD[64+rsp],xmm0 + movaps xmm11,XMMWORD[80+rsp] + movaps XMMWORD[80+rsp],xmm0 + movaps xmm12,XMMWORD[96+rsp] + movaps XMMWORD[96+rsp],xmm0 + movaps xmm13,XMMWORD[112+rsp] + movaps XMMWORD[112+rsp],xmm0 + movaps xmm14,XMMWORD[128+rsp] + movaps XMMWORD[128+rsp],xmm0 + movaps xmm15,XMMWORD[144+rsp] + movaps XMMWORD[144+rsp],xmm0 + lea rax,[((160+40))+rsp] +$L$ocb_dec_pop: + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$ocb_dec_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_ocb_decrypt: + + +ALIGN 32 +__ocb_decrypt6: + + pxor xmm15,xmm9 + movdqu xmm11,XMMWORD[r12*1+rbx] + movdqa xmm12,xmm10 + movdqu xmm13,XMMWORD[r13*1+rbx] + movdqa xmm14,xmm10 + pxor xmm10,xmm15 + movdqu xmm15,XMMWORD[r14*1+rbx] + pxor xmm11,xmm10 + pxor xmm2,xmm10 + pxor xmm12,xmm11 + pxor xmm3,xmm11 + pxor xmm13,xmm12 + pxor xmm4,xmm12 + pxor xmm14,xmm13 + pxor xmm5,xmm13 + pxor xmm15,xmm14 + pxor xmm6,xmm14 + pxor xmm7,xmm15 + movups xmm0,XMMWORD[32+r11] + + lea r12,[1+r8] + lea r13,[3+r8] + lea r14,[5+r8] + add r8,6 + pxor xmm10,xmm9 + bsf r12,r12 + bsf r13,r13 + bsf r14,r14 + +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 + pxor xmm11,xmm9 + pxor xmm12,xmm9 +DB 102,15,56,222,241 + pxor xmm13,xmm9 + pxor xmm14,xmm9 +DB 102,15,56,222,249 + movups xmm1,XMMWORD[48+r11] + pxor xmm15,xmm9 + +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 +DB 102,15,56,222,248 + movups xmm0,XMMWORD[64+r11] + shl r12,4 + shl r13,4 + jmp NEAR $L$ocb_dec_loop6 + +ALIGN 32 +$L$ocb_dec_loop6: +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 + +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 +DB 102,15,56,222,248 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$ocb_dec_loop6 + +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 + movups xmm1,XMMWORD[16+r11] + shl r14,4 + +DB 102,65,15,56,223,210 + movdqu xmm10,XMMWORD[rbx] + mov rax,r10 +DB 102,65,15,56,223,219 +DB 102,65,15,56,223,228 +DB 102,65,15,56,223,237 +DB 102,65,15,56,223,246 +DB 102,65,15,56,223,255 + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +__ocb_decrypt4: + + pxor xmm15,xmm9 + movdqu xmm11,XMMWORD[r12*1+rbx] + movdqa xmm12,xmm10 + movdqu xmm13,XMMWORD[r13*1+rbx] + pxor xmm10,xmm15 + pxor xmm11,xmm10 + pxor xmm2,xmm10 + pxor xmm12,xmm11 + pxor xmm3,xmm11 + pxor xmm13,xmm12 + pxor xmm4,xmm12 + pxor xmm5,xmm13 + movups xmm0,XMMWORD[32+r11] + + pxor xmm10,xmm9 + pxor xmm11,xmm9 + pxor xmm12,xmm9 + pxor xmm13,xmm9 + +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 + movups xmm1,XMMWORD[48+r11] + +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 + movups xmm0,XMMWORD[64+r11] + jmp NEAR $L$ocb_dec_loop4 + +ALIGN 32 +$L$ocb_dec_loop4: +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 + +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$ocb_dec_loop4 + +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 + movups xmm1,XMMWORD[16+r11] + mov rax,r10 + +DB 102,65,15,56,223,210 +DB 102,65,15,56,223,219 +DB 102,65,15,56,223,228 +DB 102,65,15,56,223,237 + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +__ocb_decrypt1: + + pxor xmm7,xmm15 + pxor xmm7,xmm9 + pxor xmm2,xmm7 + movups xmm0,XMMWORD[32+r11] + +DB 102,15,56,222,209 + movups xmm1,XMMWORD[48+r11] + pxor xmm7,xmm9 + +DB 102,15,56,222,208 + movups xmm0,XMMWORD[64+r11] + jmp NEAR $L$ocb_dec_loop1 + +ALIGN 32 +$L$ocb_dec_loop1: +DB 102,15,56,222,209 + movups xmm1,XMMWORD[rax*1+rcx] + add rax,32 + +DB 102,15,56,222,208 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$ocb_dec_loop1 + +DB 102,15,56,222,209 + movups xmm1,XMMWORD[16+r11] + mov rax,r10 + +DB 102,15,56,223,215 + DB 0F3h,0C3h ;repret + + +global aesni_cbc_encrypt + +ALIGN 16 +aesni_cbc_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_cbc_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + test rdx,rdx + jz NEAR $L$cbc_ret + + mov r10d,DWORD[240+rcx] + mov r11,rcx + test r9d,r9d + jz NEAR $L$cbc_decrypt + + movups xmm2,XMMWORD[r8] + mov eax,r10d + cmp rdx,16 + jb NEAR $L$cbc_enc_tail + sub rdx,16 + jmp NEAR $L$cbc_enc_loop +ALIGN 16 +$L$cbc_enc_loop: + movups xmm3,XMMWORD[rdi] + lea rdi,[16+rdi] + + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + xorps xmm3,xmm0 + lea rcx,[32+rcx] + xorps xmm2,xmm3 +$L$oop_enc1_15: +DB 102,15,56,220,209 + dec eax + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_enc1_15 +DB 102,15,56,221,209 + mov eax,r10d + mov rcx,r11 + movups XMMWORD[rsi],xmm2 + lea rsi,[16+rsi] + sub rdx,16 + jnc NEAR $L$cbc_enc_loop + add rdx,16 + jnz NEAR $L$cbc_enc_tail + pxor xmm0,xmm0 + pxor xmm1,xmm1 + movups XMMWORD[r8],xmm2 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + jmp NEAR $L$cbc_ret + +$L$cbc_enc_tail: + mov rcx,rdx + xchg rsi,rdi + DD 0x9066A4F3 + mov ecx,16 + sub rcx,rdx + xor eax,eax + DD 0x9066AAF3 + lea rdi,[((-16))+rdi] + mov eax,r10d + mov rsi,rdi + mov rcx,r11 + xor rdx,rdx + jmp NEAR $L$cbc_enc_loop + +ALIGN 16 +$L$cbc_decrypt: + cmp rdx,16 + jne NEAR $L$cbc_decrypt_bulk + + + + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[r8] + movdqa xmm4,xmm2 + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_dec1_16: +DB 102,15,56,222,209 + dec r10d + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_dec1_16 +DB 102,15,56,223,209 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + movdqu XMMWORD[r8],xmm4 + xorps xmm2,xmm3 + pxor xmm3,xmm3 + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + jmp NEAR $L$cbc_ret +ALIGN 16 +$L$cbc_decrypt_bulk: + lea r11,[rsp] + + push rbp + + sub rsp,176 + and rsp,-16 + movaps XMMWORD[16+rsp],xmm6 + movaps XMMWORD[32+rsp],xmm7 + movaps XMMWORD[48+rsp],xmm8 + movaps XMMWORD[64+rsp],xmm9 + movaps XMMWORD[80+rsp],xmm10 + movaps XMMWORD[96+rsp],xmm11 + movaps XMMWORD[112+rsp],xmm12 + movaps XMMWORD[128+rsp],xmm13 + movaps XMMWORD[144+rsp],xmm14 + movaps XMMWORD[160+rsp],xmm15 +$L$cbc_decrypt_body: + mov rbp,rcx + movups xmm10,XMMWORD[r8] + mov eax,r10d + cmp rdx,0x50 + jbe NEAR $L$cbc_dec_tail + + movups xmm0,XMMWORD[rcx] + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] + movdqa xmm11,xmm2 + movdqu xmm4,XMMWORD[32+rdi] + movdqa xmm12,xmm3 + movdqu xmm5,XMMWORD[48+rdi] + movdqa xmm13,xmm4 + movdqu xmm6,XMMWORD[64+rdi] + movdqa xmm14,xmm5 + movdqu xmm7,XMMWORD[80+rdi] + movdqa xmm15,xmm6 + mov r9d,DWORD[((OPENSSL_ia32cap_P+4))] + cmp rdx,0x70 + jbe NEAR $L$cbc_dec_six_or_seven + + and r9d,71303168 + sub rdx,0x50 + cmp r9d,4194304 + je NEAR $L$cbc_dec_loop6_enter + sub rdx,0x20 + lea rcx,[112+rcx] + jmp NEAR $L$cbc_dec_loop8_enter +ALIGN 16 +$L$cbc_dec_loop8: + movups XMMWORD[rsi],xmm9 + lea rsi,[16+rsi] +$L$cbc_dec_loop8_enter: + movdqu xmm8,XMMWORD[96+rdi] + pxor xmm2,xmm0 + movdqu xmm9,XMMWORD[112+rdi] + pxor xmm3,xmm0 + movups xmm1,XMMWORD[((16-112))+rcx] + pxor xmm4,xmm0 + mov rbp,-1 + cmp rdx,0x70 + pxor xmm5,xmm0 + pxor xmm6,xmm0 + pxor xmm7,xmm0 + pxor xmm8,xmm0 + +DB 102,15,56,222,209 + pxor xmm9,xmm0 + movups xmm0,XMMWORD[((32-112))+rcx] +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 +DB 102,68,15,56,222,193 + adc rbp,0 + and rbp,128 +DB 102,68,15,56,222,201 + add rbp,rdi + movups xmm1,XMMWORD[((48-112))+rcx] +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 +DB 102,15,56,222,248 +DB 102,68,15,56,222,192 +DB 102,68,15,56,222,200 + movups xmm0,XMMWORD[((64-112))+rcx] + nop +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 +DB 102,68,15,56,222,193 +DB 102,68,15,56,222,201 + movups xmm1,XMMWORD[((80-112))+rcx] + nop +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 +DB 102,15,56,222,248 +DB 102,68,15,56,222,192 +DB 102,68,15,56,222,200 + movups xmm0,XMMWORD[((96-112))+rcx] + nop +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 +DB 102,68,15,56,222,193 +DB 102,68,15,56,222,201 + movups xmm1,XMMWORD[((112-112))+rcx] + nop +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 +DB 102,15,56,222,248 +DB 102,68,15,56,222,192 +DB 102,68,15,56,222,200 + movups xmm0,XMMWORD[((128-112))+rcx] + nop +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 +DB 102,68,15,56,222,193 +DB 102,68,15,56,222,201 + movups xmm1,XMMWORD[((144-112))+rcx] + cmp eax,11 +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 +DB 102,15,56,222,248 +DB 102,68,15,56,222,192 +DB 102,68,15,56,222,200 + movups xmm0,XMMWORD[((160-112))+rcx] + jb NEAR $L$cbc_dec_done +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 +DB 102,68,15,56,222,193 +DB 102,68,15,56,222,201 + movups xmm1,XMMWORD[((176-112))+rcx] + nop +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 +DB 102,15,56,222,248 +DB 102,68,15,56,222,192 +DB 102,68,15,56,222,200 + movups xmm0,XMMWORD[((192-112))+rcx] + je NEAR $L$cbc_dec_done +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 +DB 102,68,15,56,222,193 +DB 102,68,15,56,222,201 + movups xmm1,XMMWORD[((208-112))+rcx] + nop +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 +DB 102,15,56,222,248 +DB 102,68,15,56,222,192 +DB 102,68,15,56,222,200 + movups xmm0,XMMWORD[((224-112))+rcx] + jmp NEAR $L$cbc_dec_done +ALIGN 16 +$L$cbc_dec_done: +DB 102,15,56,222,209 +DB 102,15,56,222,217 + pxor xmm10,xmm0 + pxor xmm11,xmm0 +DB 102,15,56,222,225 +DB 102,15,56,222,233 + pxor xmm12,xmm0 + pxor xmm13,xmm0 +DB 102,15,56,222,241 +DB 102,15,56,222,249 + pxor xmm14,xmm0 + pxor xmm15,xmm0 +DB 102,68,15,56,222,193 +DB 102,68,15,56,222,201 + movdqu xmm1,XMMWORD[80+rdi] + +DB 102,65,15,56,223,210 + movdqu xmm10,XMMWORD[96+rdi] + pxor xmm1,xmm0 +DB 102,65,15,56,223,219 + pxor xmm10,xmm0 + movdqu xmm0,XMMWORD[112+rdi] +DB 102,65,15,56,223,228 + lea rdi,[128+rdi] + movdqu xmm11,XMMWORD[rbp] +DB 102,65,15,56,223,237 +DB 102,65,15,56,223,246 + movdqu xmm12,XMMWORD[16+rbp] + movdqu xmm13,XMMWORD[32+rbp] +DB 102,65,15,56,223,255 +DB 102,68,15,56,223,193 + movdqu xmm14,XMMWORD[48+rbp] + movdqu xmm15,XMMWORD[64+rbp] +DB 102,69,15,56,223,202 + movdqa xmm10,xmm0 + movdqu xmm1,XMMWORD[80+rbp] + movups xmm0,XMMWORD[((-112))+rcx] + + movups XMMWORD[rsi],xmm2 + movdqa xmm2,xmm11 + movups XMMWORD[16+rsi],xmm3 + movdqa xmm3,xmm12 + movups XMMWORD[32+rsi],xmm4 + movdqa xmm4,xmm13 + movups XMMWORD[48+rsi],xmm5 + movdqa xmm5,xmm14 + movups XMMWORD[64+rsi],xmm6 + movdqa xmm6,xmm15 + movups XMMWORD[80+rsi],xmm7 + movdqa xmm7,xmm1 + movups XMMWORD[96+rsi],xmm8 + lea rsi,[112+rsi] + + sub rdx,0x80 + ja NEAR $L$cbc_dec_loop8 + + movaps xmm2,xmm9 + lea rcx,[((-112))+rcx] + add rdx,0x70 + jle NEAR $L$cbc_dec_clear_tail_collected + movups XMMWORD[rsi],xmm9 + lea rsi,[16+rsi] + cmp rdx,0x50 + jbe NEAR $L$cbc_dec_tail + + movaps xmm2,xmm11 +$L$cbc_dec_six_or_seven: + cmp rdx,0x60 + ja NEAR $L$cbc_dec_seven + + movaps xmm8,xmm7 + call _aesni_decrypt6 + pxor xmm2,xmm10 + movaps xmm10,xmm8 + pxor xmm3,xmm11 + movdqu XMMWORD[rsi],xmm2 + pxor xmm4,xmm12 + movdqu XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + pxor xmm5,xmm13 + movdqu XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + pxor xmm6,xmm14 + movdqu XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + pxor xmm7,xmm15 + movdqu XMMWORD[64+rsi],xmm6 + pxor xmm6,xmm6 + lea rsi,[80+rsi] + movdqa xmm2,xmm7 + pxor xmm7,xmm7 + jmp NEAR $L$cbc_dec_tail_collected + +ALIGN 16 +$L$cbc_dec_seven: + movups xmm8,XMMWORD[96+rdi] + xorps xmm9,xmm9 + call _aesni_decrypt8 + movups xmm9,XMMWORD[80+rdi] + pxor xmm2,xmm10 + movups xmm10,XMMWORD[96+rdi] + pxor xmm3,xmm11 + movdqu XMMWORD[rsi],xmm2 + pxor xmm4,xmm12 + movdqu XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + pxor xmm5,xmm13 + movdqu XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + pxor xmm6,xmm14 + movdqu XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + pxor xmm7,xmm15 + movdqu XMMWORD[64+rsi],xmm6 + pxor xmm6,xmm6 + pxor xmm8,xmm9 + movdqu XMMWORD[80+rsi],xmm7 + pxor xmm7,xmm7 + lea rsi,[96+rsi] + movdqa xmm2,xmm8 + pxor xmm8,xmm8 + pxor xmm9,xmm9 + jmp NEAR $L$cbc_dec_tail_collected + +ALIGN 16 +$L$cbc_dec_loop6: + movups XMMWORD[rsi],xmm7 + lea rsi,[16+rsi] + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] + movdqa xmm11,xmm2 + movdqu xmm4,XMMWORD[32+rdi] + movdqa xmm12,xmm3 + movdqu xmm5,XMMWORD[48+rdi] + movdqa xmm13,xmm4 + movdqu xmm6,XMMWORD[64+rdi] + movdqa xmm14,xmm5 + movdqu xmm7,XMMWORD[80+rdi] + movdqa xmm15,xmm6 +$L$cbc_dec_loop6_enter: + lea rdi,[96+rdi] + movdqa xmm8,xmm7 + + call _aesni_decrypt6 + + pxor xmm2,xmm10 + movdqa xmm10,xmm8 + pxor xmm3,xmm11 + movdqu XMMWORD[rsi],xmm2 + pxor xmm4,xmm12 + movdqu XMMWORD[16+rsi],xmm3 + pxor xmm5,xmm13 + movdqu XMMWORD[32+rsi],xmm4 + pxor xmm6,xmm14 + mov rcx,rbp + movdqu XMMWORD[48+rsi],xmm5 + pxor xmm7,xmm15 + mov eax,r10d + movdqu XMMWORD[64+rsi],xmm6 + lea rsi,[80+rsi] + sub rdx,0x60 + ja NEAR $L$cbc_dec_loop6 + + movdqa xmm2,xmm7 + add rdx,0x50 + jle NEAR $L$cbc_dec_clear_tail_collected + movups XMMWORD[rsi],xmm7 + lea rsi,[16+rsi] + +$L$cbc_dec_tail: + movups xmm2,XMMWORD[rdi] + sub rdx,0x10 + jbe NEAR $L$cbc_dec_one + + movups xmm3,XMMWORD[16+rdi] + movaps xmm11,xmm2 + sub rdx,0x10 + jbe NEAR $L$cbc_dec_two + + movups xmm4,XMMWORD[32+rdi] + movaps xmm12,xmm3 + sub rdx,0x10 + jbe NEAR $L$cbc_dec_three + + movups xmm5,XMMWORD[48+rdi] + movaps xmm13,xmm4 + sub rdx,0x10 + jbe NEAR $L$cbc_dec_four + + movups xmm6,XMMWORD[64+rdi] + movaps xmm14,xmm5 + movaps xmm15,xmm6 + xorps xmm7,xmm7 + call _aesni_decrypt6 + pxor xmm2,xmm10 + movaps xmm10,xmm15 + pxor xmm3,xmm11 + movdqu XMMWORD[rsi],xmm2 + pxor xmm4,xmm12 + movdqu XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + pxor xmm5,xmm13 + movdqu XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + pxor xmm6,xmm14 + movdqu XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + lea rsi,[64+rsi] + movdqa xmm2,xmm6 + pxor xmm6,xmm6 + pxor xmm7,xmm7 + sub rdx,0x10 + jmp NEAR $L$cbc_dec_tail_collected + +ALIGN 16 +$L$cbc_dec_one: + movaps xmm11,xmm2 + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_dec1_17: +DB 102,15,56,222,209 + dec eax + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_dec1_17 +DB 102,15,56,223,209 + xorps xmm2,xmm10 + movaps xmm10,xmm11 + jmp NEAR $L$cbc_dec_tail_collected +ALIGN 16 +$L$cbc_dec_two: + movaps xmm12,xmm3 + call _aesni_decrypt2 + pxor xmm2,xmm10 + movaps xmm10,xmm12 + pxor xmm3,xmm11 + movdqu XMMWORD[rsi],xmm2 + movdqa xmm2,xmm3 + pxor xmm3,xmm3 + lea rsi,[16+rsi] + jmp NEAR $L$cbc_dec_tail_collected +ALIGN 16 +$L$cbc_dec_three: + movaps xmm13,xmm4 + call _aesni_decrypt3 + pxor xmm2,xmm10 + movaps xmm10,xmm13 + pxor xmm3,xmm11 + movdqu XMMWORD[rsi],xmm2 + pxor xmm4,xmm12 + movdqu XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + movdqa xmm2,xmm4 + pxor xmm4,xmm4 + lea rsi,[32+rsi] + jmp NEAR $L$cbc_dec_tail_collected +ALIGN 16 +$L$cbc_dec_four: + movaps xmm14,xmm5 + call _aesni_decrypt4 + pxor xmm2,xmm10 + movaps xmm10,xmm14 + pxor xmm3,xmm11 + movdqu XMMWORD[rsi],xmm2 + pxor xmm4,xmm12 + movdqu XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + pxor xmm5,xmm13 + movdqu XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + movdqa xmm2,xmm5 + pxor xmm5,xmm5 + lea rsi,[48+rsi] + jmp NEAR $L$cbc_dec_tail_collected + +ALIGN 16 +$L$cbc_dec_clear_tail_collected: + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 +$L$cbc_dec_tail_collected: + movups XMMWORD[r8],xmm10 + and rdx,15 + jnz NEAR $L$cbc_dec_tail_partial + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + jmp NEAR $L$cbc_dec_ret +ALIGN 16 +$L$cbc_dec_tail_partial: + movaps XMMWORD[rsp],xmm2 + pxor xmm2,xmm2 + mov rcx,16 + mov rdi,rsi + sub rcx,rdx + lea rsi,[rsp] + DD 0x9066A4F3 + movdqa XMMWORD[rsp],xmm2 + +$L$cbc_dec_ret: + xorps xmm0,xmm0 + pxor xmm1,xmm1 + movaps xmm6,XMMWORD[16+rsp] + movaps XMMWORD[16+rsp],xmm0 + movaps xmm7,XMMWORD[32+rsp] + movaps XMMWORD[32+rsp],xmm0 + movaps xmm8,XMMWORD[48+rsp] + movaps XMMWORD[48+rsp],xmm0 + movaps xmm9,XMMWORD[64+rsp] + movaps XMMWORD[64+rsp],xmm0 + movaps xmm10,XMMWORD[80+rsp] + movaps XMMWORD[80+rsp],xmm0 + movaps xmm11,XMMWORD[96+rsp] + movaps XMMWORD[96+rsp],xmm0 + movaps xmm12,XMMWORD[112+rsp] + movaps XMMWORD[112+rsp],xmm0 + movaps xmm13,XMMWORD[128+rsp] + movaps XMMWORD[128+rsp],xmm0 + movaps xmm14,XMMWORD[144+rsp] + movaps XMMWORD[144+rsp],xmm0 + movaps xmm15,XMMWORD[160+rsp] + movaps XMMWORD[160+rsp],xmm0 + mov rbp,QWORD[((-8))+r11] + + lea rsp,[r11] + +$L$cbc_ret: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_cbc_encrypt: +global aesni_set_decrypt_key + +ALIGN 16 +aesni_set_decrypt_key: + +DB 0x48,0x83,0xEC,0x08 + + call __aesni_set_encrypt_key + shl edx,4 + test eax,eax + jnz NEAR $L$dec_key_ret + lea rcx,[16+rdx*1+r8] + + movups xmm0,XMMWORD[r8] + movups xmm1,XMMWORD[rcx] + movups XMMWORD[rcx],xmm0 + movups XMMWORD[r8],xmm1 + lea r8,[16+r8] + lea rcx,[((-16))+rcx] + +$L$dec_key_inverse: + movups xmm0,XMMWORD[r8] + movups xmm1,XMMWORD[rcx] +DB 102,15,56,219,192 +DB 102,15,56,219,201 + lea r8,[16+r8] + lea rcx,[((-16))+rcx] + movups XMMWORD[16+rcx],xmm0 + movups XMMWORD[(-16)+r8],xmm1 + cmp rcx,r8 + ja NEAR $L$dec_key_inverse + + movups xmm0,XMMWORD[r8] +DB 102,15,56,219,192 + pxor xmm1,xmm1 + movups XMMWORD[rcx],xmm0 + pxor xmm0,xmm0 +$L$dec_key_ret: + add rsp,8 + + DB 0F3h,0C3h ;repret + +$L$SEH_end_set_decrypt_key: + +global aesni_set_encrypt_key + +ALIGN 16 +aesni_set_encrypt_key: +__aesni_set_encrypt_key: + +DB 0x48,0x83,0xEC,0x08 + + mov rax,-1 + test rcx,rcx + jz NEAR $L$enc_key_ret + test r8,r8 + jz NEAR $L$enc_key_ret + + mov r10d,268437504 + movups xmm0,XMMWORD[rcx] + xorps xmm4,xmm4 + and r10d,DWORD[((OPENSSL_ia32cap_P+4))] + lea rax,[16+r8] + cmp edx,256 + je NEAR $L$14rounds + cmp edx,192 + je NEAR $L$12rounds + cmp edx,128 + jne NEAR $L$bad_keybits + +$L$10rounds: + mov edx,9 + cmp r10d,268435456 + je NEAR $L$10rounds_alt + + movups XMMWORD[r8],xmm0 +DB 102,15,58,223,200,1 + call $L$key_expansion_128_cold +DB 102,15,58,223,200,2 + call $L$key_expansion_128 +DB 102,15,58,223,200,4 + call $L$key_expansion_128 +DB 102,15,58,223,200,8 + call $L$key_expansion_128 +DB 102,15,58,223,200,16 + call $L$key_expansion_128 +DB 102,15,58,223,200,32 + call $L$key_expansion_128 +DB 102,15,58,223,200,64 + call $L$key_expansion_128 +DB 102,15,58,223,200,128 + call $L$key_expansion_128 +DB 102,15,58,223,200,27 + call $L$key_expansion_128 +DB 102,15,58,223,200,54 + call $L$key_expansion_128 + movups XMMWORD[rax],xmm0 + mov DWORD[80+rax],edx + xor eax,eax + jmp NEAR $L$enc_key_ret + +ALIGN 16 +$L$10rounds_alt: + movdqa xmm5,XMMWORD[$L$key_rotate] + mov r10d,8 + movdqa xmm4,XMMWORD[$L$key_rcon1] + movdqa xmm2,xmm0 + movdqu XMMWORD[r8],xmm0 + jmp NEAR $L$oop_key128 + +ALIGN 16 +$L$oop_key128: +DB 102,15,56,0,197 +DB 102,15,56,221,196 + pslld xmm4,1 + lea rax,[16+rax] + + movdqa xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm2,xmm3 + + pxor xmm0,xmm2 + movdqu XMMWORD[(-16)+rax],xmm0 + movdqa xmm2,xmm0 + + dec r10d + jnz NEAR $L$oop_key128 + + movdqa xmm4,XMMWORD[$L$key_rcon1b] + +DB 102,15,56,0,197 +DB 102,15,56,221,196 + pslld xmm4,1 + + movdqa xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm2,xmm3 + + pxor xmm0,xmm2 + movdqu XMMWORD[rax],xmm0 + + movdqa xmm2,xmm0 +DB 102,15,56,0,197 +DB 102,15,56,221,196 + + movdqa xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm2,xmm3 + + pxor xmm0,xmm2 + movdqu XMMWORD[16+rax],xmm0 + + mov DWORD[96+rax],edx + xor eax,eax + jmp NEAR $L$enc_key_ret + +ALIGN 16 +$L$12rounds: + movq xmm2,QWORD[16+rcx] + mov edx,11 + cmp r10d,268435456 + je NEAR $L$12rounds_alt + + movups XMMWORD[r8],xmm0 +DB 102,15,58,223,202,1 + call $L$key_expansion_192a_cold +DB 102,15,58,223,202,2 + call $L$key_expansion_192b +DB 102,15,58,223,202,4 + call $L$key_expansion_192a +DB 102,15,58,223,202,8 + call $L$key_expansion_192b +DB 102,15,58,223,202,16 + call $L$key_expansion_192a +DB 102,15,58,223,202,32 + call $L$key_expansion_192b +DB 102,15,58,223,202,64 + call $L$key_expansion_192a +DB 102,15,58,223,202,128 + call $L$key_expansion_192b + movups XMMWORD[rax],xmm0 + mov DWORD[48+rax],edx + xor rax,rax + jmp NEAR $L$enc_key_ret + +ALIGN 16 +$L$12rounds_alt: + movdqa xmm5,XMMWORD[$L$key_rotate192] + movdqa xmm4,XMMWORD[$L$key_rcon1] + mov r10d,8 + movdqu XMMWORD[r8],xmm0 + jmp NEAR $L$oop_key192 + +ALIGN 16 +$L$oop_key192: + movq QWORD[rax],xmm2 + movdqa xmm1,xmm2 +DB 102,15,56,0,213 +DB 102,15,56,221,212 + pslld xmm4,1 + lea rax,[24+rax] + + movdqa xmm3,xmm0 + pslldq xmm0,4 + pxor xmm3,xmm0 + pslldq xmm0,4 + pxor xmm3,xmm0 + pslldq xmm0,4 + pxor xmm0,xmm3 + + pshufd xmm3,xmm0,0xff + pxor xmm3,xmm1 + pslldq xmm1,4 + pxor xmm3,xmm1 + + pxor xmm0,xmm2 + pxor xmm2,xmm3 + movdqu XMMWORD[(-16)+rax],xmm0 + + dec r10d + jnz NEAR $L$oop_key192 + + mov DWORD[32+rax],edx + xor eax,eax + jmp NEAR $L$enc_key_ret + +ALIGN 16 +$L$14rounds: + movups xmm2,XMMWORD[16+rcx] + mov edx,13 + lea rax,[16+rax] + cmp r10d,268435456 + je NEAR $L$14rounds_alt + + movups XMMWORD[r8],xmm0 + movups XMMWORD[16+r8],xmm2 +DB 102,15,58,223,202,1 + call $L$key_expansion_256a_cold +DB 102,15,58,223,200,1 + call $L$key_expansion_256b +DB 102,15,58,223,202,2 + call $L$key_expansion_256a +DB 102,15,58,223,200,2 + call $L$key_expansion_256b +DB 102,15,58,223,202,4 + call $L$key_expansion_256a +DB 102,15,58,223,200,4 + call $L$key_expansion_256b +DB 102,15,58,223,202,8 + call $L$key_expansion_256a +DB 102,15,58,223,200,8 + call $L$key_expansion_256b +DB 102,15,58,223,202,16 + call $L$key_expansion_256a +DB 102,15,58,223,200,16 + call $L$key_expansion_256b +DB 102,15,58,223,202,32 + call $L$key_expansion_256a +DB 102,15,58,223,200,32 + call $L$key_expansion_256b +DB 102,15,58,223,202,64 + call $L$key_expansion_256a + movups XMMWORD[rax],xmm0 + mov DWORD[16+rax],edx + xor rax,rax + jmp NEAR $L$enc_key_ret + +ALIGN 16 +$L$14rounds_alt: + movdqa xmm5,XMMWORD[$L$key_rotate] + movdqa xmm4,XMMWORD[$L$key_rcon1] + mov r10d,7 + movdqu XMMWORD[r8],xmm0 + movdqa xmm1,xmm2 + movdqu XMMWORD[16+r8],xmm2 + jmp NEAR $L$oop_key256 + +ALIGN 16 +$L$oop_key256: +DB 102,15,56,0,213 +DB 102,15,56,221,212 + + movdqa xmm3,xmm0 + pslldq xmm0,4 + pxor xmm3,xmm0 + pslldq xmm0,4 + pxor xmm3,xmm0 + pslldq xmm0,4 + pxor xmm0,xmm3 + pslld xmm4,1 + + pxor xmm0,xmm2 + movdqu XMMWORD[rax],xmm0 + + dec r10d + jz NEAR $L$done_key256 + + pshufd xmm2,xmm0,0xff + pxor xmm3,xmm3 +DB 102,15,56,221,211 + + movdqa xmm3,xmm1 + pslldq xmm1,4 + pxor xmm3,xmm1 + pslldq xmm1,4 + pxor xmm3,xmm1 + pslldq xmm1,4 + pxor xmm1,xmm3 + + pxor xmm2,xmm1 + movdqu XMMWORD[16+rax],xmm2 + lea rax,[32+rax] + movdqa xmm1,xmm2 + + jmp NEAR $L$oop_key256 + +$L$done_key256: + mov DWORD[16+rax],edx + xor eax,eax + jmp NEAR $L$enc_key_ret + +ALIGN 16 +$L$bad_keybits: + mov rax,-2 +$L$enc_key_ret: + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + add rsp,8 + + DB 0F3h,0C3h ;repret +$L$SEH_end_set_encrypt_key: + +ALIGN 16 +$L$key_expansion_128: + movups XMMWORD[rax],xmm0 + lea rax,[16+rax] +$L$key_expansion_128_cold: + shufps xmm4,xmm0,16 + xorps xmm0,xmm4 + shufps xmm4,xmm0,140 + xorps xmm0,xmm4 + shufps xmm1,xmm1,255 + xorps xmm0,xmm1 + DB 0F3h,0C3h ;repret + +ALIGN 16 +$L$key_expansion_192a: + movups XMMWORD[rax],xmm0 + lea rax,[16+rax] +$L$key_expansion_192a_cold: + movaps xmm5,xmm2 +$L$key_expansion_192b_warm: + shufps xmm4,xmm0,16 + movdqa xmm3,xmm2 + xorps xmm0,xmm4 + shufps xmm4,xmm0,140 + pslldq xmm3,4 + xorps xmm0,xmm4 + pshufd xmm1,xmm1,85 + pxor xmm2,xmm3 + pxor xmm0,xmm1 + pshufd xmm3,xmm0,255 + pxor xmm2,xmm3 + DB 0F3h,0C3h ;repret + +ALIGN 16 +$L$key_expansion_192b: + movaps xmm3,xmm0 + shufps xmm5,xmm0,68 + movups XMMWORD[rax],xmm5 + shufps xmm3,xmm2,78 + movups XMMWORD[16+rax],xmm3 + lea rax,[32+rax] + jmp NEAR $L$key_expansion_192b_warm + +ALIGN 16 +$L$key_expansion_256a: + movups XMMWORD[rax],xmm2 + lea rax,[16+rax] +$L$key_expansion_256a_cold: + shufps xmm4,xmm0,16 + xorps xmm0,xmm4 + shufps xmm4,xmm0,140 + xorps xmm0,xmm4 + shufps xmm1,xmm1,255 + xorps xmm0,xmm1 + DB 0F3h,0C3h ;repret + +ALIGN 16 +$L$key_expansion_256b: + movups XMMWORD[rax],xmm0 + lea rax,[16+rax] + + shufps xmm4,xmm2,16 + xorps xmm2,xmm4 + shufps xmm4,xmm2,140 + xorps xmm2,xmm4 + shufps xmm1,xmm1,170 + xorps xmm2,xmm1 + DB 0F3h,0C3h ;repret + + + +ALIGN 64 +$L$bswap_mask: +DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +$L$increment32: + DD 6,6,6,0 +$L$increment64: + DD 1,0,0,0 +$L$xts_magic: + DD 0x87,0,1,0 +$L$increment1: +DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +$L$key_rotate: + DD 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d +$L$key_rotate192: + DD 0x04070605,0x04070605,0x04070605,0x04070605 +$L$key_rcon1: + DD 1,1,1,1 +$L$key_rcon1b: + DD 0x1b,0x1b,0x1b,0x1b + +DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 +DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 +DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 +DB 115,108,46,111,114,103,62,0 +ALIGN 64 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +ecb_ccm64_se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + lea rsi,[rax] + lea rdi,[512+r8] + mov ecx,8 + DD 0xa548f3fc + lea rax,[88+rax] + + jmp NEAR $L$common_seh_tail + + + +ALIGN 16 +ctr_xts_se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov rax,QWORD[208+r8] + + lea rsi,[((-168))+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + + mov rbp,QWORD[((-8))+rax] + mov QWORD[160+r8],rbp + jmp NEAR $L$common_seh_tail + + + +ALIGN 16 +ocb_se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov r10d,DWORD[8+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$ocb_no_xmm + + mov rax,QWORD[152+r8] + + lea rsi,[rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + lea rax,[((160+40))+rax] + +$L$ocb_no_xmm: + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + + jmp NEAR $L$common_seh_tail + + +ALIGN 16 +cbc_se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[152+r8] + mov rbx,QWORD[248+r8] + + lea r10,[$L$cbc_decrypt_bulk] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[120+r8] + + lea r10,[$L$cbc_decrypt_body] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + lea r10,[$L$cbc_ret] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + lea rsi,[16+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + + mov rax,QWORD[208+r8] + + mov rbp,QWORD[((-8))+rax] + mov QWORD[160+r8],rbp + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_aesni_ecb_encrypt wrt ..imagebase + DD $L$SEH_end_aesni_ecb_encrypt wrt ..imagebase + DD $L$SEH_info_ecb wrt ..imagebase + + DD $L$SEH_begin_aesni_ccm64_encrypt_blocks wrt ..imagebase + DD $L$SEH_end_aesni_ccm64_encrypt_blocks wrt ..imagebase + DD $L$SEH_info_ccm64_enc wrt ..imagebase + + DD $L$SEH_begin_aesni_ccm64_decrypt_blocks wrt ..imagebase + DD $L$SEH_end_aesni_ccm64_decrypt_blocks wrt ..imagebase + DD $L$SEH_info_ccm64_dec wrt ..imagebase + + DD $L$SEH_begin_aesni_ctr32_encrypt_blocks wrt ..imagebase + DD $L$SEH_end_aesni_ctr32_encrypt_blocks wrt ..imagebase + DD $L$SEH_info_ctr32 wrt ..imagebase + + DD $L$SEH_begin_aesni_xts_encrypt wrt ..imagebase + DD $L$SEH_end_aesni_xts_encrypt wrt ..imagebase + DD $L$SEH_info_xts_enc wrt ..imagebase + + DD $L$SEH_begin_aesni_xts_decrypt wrt ..imagebase + DD $L$SEH_end_aesni_xts_decrypt wrt ..imagebase + DD $L$SEH_info_xts_dec wrt ..imagebase + + DD $L$SEH_begin_aesni_ocb_encrypt wrt ..imagebase + DD $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase + DD $L$SEH_info_ocb_enc wrt ..imagebase + + DD $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase + DD $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase + DD $L$SEH_info_ocb_dec wrt ..imagebase + DD $L$SEH_begin_aesni_cbc_encrypt wrt ..imagebase + DD $L$SEH_end_aesni_cbc_encrypt wrt ..imagebase + DD $L$SEH_info_cbc wrt ..imagebase + + DD aesni_set_decrypt_key wrt ..imagebase + DD $L$SEH_end_set_decrypt_key wrt ..imagebase + DD $L$SEH_info_key wrt ..imagebase + + DD aesni_set_encrypt_key wrt ..imagebase + DD $L$SEH_end_set_encrypt_key wrt ..imagebase + DD $L$SEH_info_key wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_ecb: +DB 9,0,0,0 + DD ecb_ccm64_se_handler wrt ..imagebase + DD $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret wrt ..imagebase +$L$SEH_info_ccm64_enc: +DB 9,0,0,0 + DD ecb_ccm64_se_handler wrt ..imagebase + DD $L$ccm64_enc_body wrt ..imagebase,$L$ccm64_enc_ret wrt ..imagebase +$L$SEH_info_ccm64_dec: +DB 9,0,0,0 + DD ecb_ccm64_se_handler wrt ..imagebase + DD $L$ccm64_dec_body wrt ..imagebase,$L$ccm64_dec_ret wrt ..imagebase +$L$SEH_info_ctr32: +DB 9,0,0,0 + DD ctr_xts_se_handler wrt ..imagebase + DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase +$L$SEH_info_xts_enc: +DB 9,0,0,0 + DD ctr_xts_se_handler wrt ..imagebase + DD $L$xts_enc_body wrt ..imagebase,$L$xts_enc_epilogue wrt ..imagebase +$L$SEH_info_xts_dec: +DB 9,0,0,0 + DD ctr_xts_se_handler wrt ..imagebase + DD $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue wrt ..imagebase +$L$SEH_info_ocb_enc: +DB 9,0,0,0 + DD ocb_se_handler wrt ..imagebase + DD $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue wrt ..imagebase + DD $L$ocb_enc_pop wrt ..imagebase + DD 0 +$L$SEH_info_ocb_dec: +DB 9,0,0,0 + DD ocb_se_handler wrt ..imagebase + DD $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue wrt ..imagebase + DD $L$ocb_dec_pop wrt ..imagebase + DD 0 +$L$SEH_info_cbc: +DB 9,0,0,0 + DD cbc_se_handler wrt ..imagebase +$L$SEH_info_key: +DB 0x01,0x04,0x01,0x00 +DB 0x04,0x02,0x00,0x00 diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/aes/vpaes-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/aes/vpaes-x86_64.asm new file mode 100644 index 0000000..b681477 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/aes/vpaes-x86_64.asm @@ -0,0 +1,1163 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + + + + + + + + + + + + + + + + + +ALIGN 16 +_vpaes_encrypt_core: + + mov r9,rdx + mov r11,16 + mov eax,DWORD[240+rdx] + movdqa xmm1,xmm9 + movdqa xmm2,XMMWORD[$L$k_ipt] + pandn xmm1,xmm0 + movdqu xmm5,XMMWORD[r9] + psrld xmm1,4 + pand xmm0,xmm9 +DB 102,15,56,0,208 + movdqa xmm0,XMMWORD[(($L$k_ipt+16))] +DB 102,15,56,0,193 + pxor xmm2,xmm5 + add r9,16 + pxor xmm0,xmm2 + lea r10,[$L$k_mc_backward] + jmp NEAR $L$enc_entry + +ALIGN 16 +$L$enc_loop: + + movdqa xmm4,xmm13 + movdqa xmm0,xmm12 +DB 102,15,56,0,226 +DB 102,15,56,0,195 + pxor xmm4,xmm5 + movdqa xmm5,xmm15 + pxor xmm0,xmm4 + movdqa xmm1,XMMWORD[((-64))+r10*1+r11] +DB 102,15,56,0,234 + movdqa xmm4,XMMWORD[r10*1+r11] + movdqa xmm2,xmm14 +DB 102,15,56,0,211 + movdqa xmm3,xmm0 + pxor xmm2,xmm5 +DB 102,15,56,0,193 + add r9,16 + pxor xmm0,xmm2 +DB 102,15,56,0,220 + add r11,16 + pxor xmm3,xmm0 +DB 102,15,56,0,193 + and r11,0x30 + sub rax,1 + pxor xmm0,xmm3 + +$L$enc_entry: + + movdqa xmm1,xmm9 + movdqa xmm5,xmm11 + pandn xmm1,xmm0 + psrld xmm1,4 + pand xmm0,xmm9 +DB 102,15,56,0,232 + movdqa xmm3,xmm10 + pxor xmm0,xmm1 +DB 102,15,56,0,217 + movdqa xmm4,xmm10 + pxor xmm3,xmm5 +DB 102,15,56,0,224 + movdqa xmm2,xmm10 + pxor xmm4,xmm5 +DB 102,15,56,0,211 + movdqa xmm3,xmm10 + pxor xmm2,xmm0 +DB 102,15,56,0,220 + movdqu xmm5,XMMWORD[r9] + pxor xmm3,xmm1 + jnz NEAR $L$enc_loop + + + movdqa xmm4,XMMWORD[((-96))+r10] + movdqa xmm0,XMMWORD[((-80))+r10] +DB 102,15,56,0,226 + pxor xmm4,xmm5 +DB 102,15,56,0,195 + movdqa xmm1,XMMWORD[64+r10*1+r11] + pxor xmm0,xmm4 +DB 102,15,56,0,193 + DB 0F3h,0C3h ;repret + + + + + + + + + +ALIGN 16 +_vpaes_decrypt_core: + + mov r9,rdx + mov eax,DWORD[240+rdx] + movdqa xmm1,xmm9 + movdqa xmm2,XMMWORD[$L$k_dipt] + pandn xmm1,xmm0 + mov r11,rax + psrld xmm1,4 + movdqu xmm5,XMMWORD[r9] + shl r11,4 + pand xmm0,xmm9 +DB 102,15,56,0,208 + movdqa xmm0,XMMWORD[(($L$k_dipt+16))] + xor r11,0x30 + lea r10,[$L$k_dsbd] +DB 102,15,56,0,193 + and r11,0x30 + pxor xmm2,xmm5 + movdqa xmm5,XMMWORD[(($L$k_mc_forward+48))] + pxor xmm0,xmm2 + add r9,16 + add r11,r10 + jmp NEAR $L$dec_entry + +ALIGN 16 +$L$dec_loop: + + + + movdqa xmm4,XMMWORD[((-32))+r10] + movdqa xmm1,XMMWORD[((-16))+r10] +DB 102,15,56,0,226 +DB 102,15,56,0,203 + pxor xmm0,xmm4 + movdqa xmm4,XMMWORD[r10] + pxor xmm0,xmm1 + movdqa xmm1,XMMWORD[16+r10] + +DB 102,15,56,0,226 +DB 102,15,56,0,197 +DB 102,15,56,0,203 + pxor xmm0,xmm4 + movdqa xmm4,XMMWORD[32+r10] + pxor xmm0,xmm1 + movdqa xmm1,XMMWORD[48+r10] + +DB 102,15,56,0,226 +DB 102,15,56,0,197 +DB 102,15,56,0,203 + pxor xmm0,xmm4 + movdqa xmm4,XMMWORD[64+r10] + pxor xmm0,xmm1 + movdqa xmm1,XMMWORD[80+r10] + +DB 102,15,56,0,226 +DB 102,15,56,0,197 +DB 102,15,56,0,203 + pxor xmm0,xmm4 + add r9,16 +DB 102,15,58,15,237,12 + pxor xmm0,xmm1 + sub rax,1 + +$L$dec_entry: + + movdqa xmm1,xmm9 + pandn xmm1,xmm0 + movdqa xmm2,xmm11 + psrld xmm1,4 + pand xmm0,xmm9 +DB 102,15,56,0,208 + movdqa xmm3,xmm10 + pxor xmm0,xmm1 +DB 102,15,56,0,217 + movdqa xmm4,xmm10 + pxor xmm3,xmm2 +DB 102,15,56,0,224 + pxor xmm4,xmm2 + movdqa xmm2,xmm10 +DB 102,15,56,0,211 + movdqa xmm3,xmm10 + pxor xmm2,xmm0 +DB 102,15,56,0,220 + movdqu xmm0,XMMWORD[r9] + pxor xmm3,xmm1 + jnz NEAR $L$dec_loop + + + movdqa xmm4,XMMWORD[96+r10] +DB 102,15,56,0,226 + pxor xmm4,xmm0 + movdqa xmm0,XMMWORD[112+r10] + movdqa xmm2,XMMWORD[((-352))+r11] +DB 102,15,56,0,195 + pxor xmm0,xmm4 +DB 102,15,56,0,194 + DB 0F3h,0C3h ;repret + + + + + + + + + +ALIGN 16 +_vpaes_schedule_core: + + + + + + + call _vpaes_preheat + movdqa xmm8,XMMWORD[$L$k_rcon] + movdqu xmm0,XMMWORD[rdi] + + + movdqa xmm3,xmm0 + lea r11,[$L$k_ipt] + call _vpaes_schedule_transform + movdqa xmm7,xmm0 + + lea r10,[$L$k_sr] + test rcx,rcx + jnz NEAR $L$schedule_am_decrypting + + + movdqu XMMWORD[rdx],xmm0 + jmp NEAR $L$schedule_go + +$L$schedule_am_decrypting: + + movdqa xmm1,XMMWORD[r10*1+r8] +DB 102,15,56,0,217 + movdqu XMMWORD[rdx],xmm3 + xor r8,0x30 + +$L$schedule_go: + cmp esi,192 + ja NEAR $L$schedule_256 + je NEAR $L$schedule_192 + + + + + + + + + + +$L$schedule_128: + mov esi,10 + +$L$oop_schedule_128: + call _vpaes_schedule_round + dec rsi + jz NEAR $L$schedule_mangle_last + call _vpaes_schedule_mangle + jmp NEAR $L$oop_schedule_128 + + + + + + + + + + + + + + + + +ALIGN 16 +$L$schedule_192: + movdqu xmm0,XMMWORD[8+rdi] + call _vpaes_schedule_transform + movdqa xmm6,xmm0 + pxor xmm4,xmm4 + movhlps xmm6,xmm4 + mov esi,4 + +$L$oop_schedule_192: + call _vpaes_schedule_round +DB 102,15,58,15,198,8 + call _vpaes_schedule_mangle + call _vpaes_schedule_192_smear + call _vpaes_schedule_mangle + call _vpaes_schedule_round + dec rsi + jz NEAR $L$schedule_mangle_last + call _vpaes_schedule_mangle + call _vpaes_schedule_192_smear + jmp NEAR $L$oop_schedule_192 + + + + + + + + + + + +ALIGN 16 +$L$schedule_256: + movdqu xmm0,XMMWORD[16+rdi] + call _vpaes_schedule_transform + mov esi,7 + +$L$oop_schedule_256: + call _vpaes_schedule_mangle + movdqa xmm6,xmm0 + + + call _vpaes_schedule_round + dec rsi + jz NEAR $L$schedule_mangle_last + call _vpaes_schedule_mangle + + + pshufd xmm0,xmm0,0xFF + movdqa xmm5,xmm7 + movdqa xmm7,xmm6 + call _vpaes_schedule_low_round + movdqa xmm7,xmm5 + + jmp NEAR $L$oop_schedule_256 + + + + + + + + + + + + +ALIGN 16 +$L$schedule_mangle_last: + + lea r11,[$L$k_deskew] + test rcx,rcx + jnz NEAR $L$schedule_mangle_last_dec + + + movdqa xmm1,XMMWORD[r10*1+r8] +DB 102,15,56,0,193 + lea r11,[$L$k_opt] + add rdx,32 + +$L$schedule_mangle_last_dec: + add rdx,-16 + pxor xmm0,XMMWORD[$L$k_s63] + call _vpaes_schedule_transform + movdqu XMMWORD[rdx],xmm0 + + + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + pxor xmm6,xmm6 + pxor xmm7,xmm7 + DB 0F3h,0C3h ;repret + + + + + + + + + + + + + + + + + + +ALIGN 16 +_vpaes_schedule_192_smear: + + pshufd xmm1,xmm6,0x80 + pshufd xmm0,xmm7,0xFE + pxor xmm6,xmm1 + pxor xmm1,xmm1 + pxor xmm6,xmm0 + movdqa xmm0,xmm6 + movhlps xmm6,xmm1 + DB 0F3h,0C3h ;repret + + + + + + + + + + + + + + + + + + + + + + +ALIGN 16 +_vpaes_schedule_round: + + + pxor xmm1,xmm1 +DB 102,65,15,58,15,200,15 +DB 102,69,15,58,15,192,15 + pxor xmm7,xmm1 + + + pshufd xmm0,xmm0,0xFF +DB 102,15,58,15,192,1 + + + + +_vpaes_schedule_low_round: + + movdqa xmm1,xmm7 + pslldq xmm7,4 + pxor xmm7,xmm1 + movdqa xmm1,xmm7 + pslldq xmm7,8 + pxor xmm7,xmm1 + pxor xmm7,XMMWORD[$L$k_s63] + + + movdqa xmm1,xmm9 + pandn xmm1,xmm0 + psrld xmm1,4 + pand xmm0,xmm9 + movdqa xmm2,xmm11 +DB 102,15,56,0,208 + pxor xmm0,xmm1 + movdqa xmm3,xmm10 +DB 102,15,56,0,217 + pxor xmm3,xmm2 + movdqa xmm4,xmm10 +DB 102,15,56,0,224 + pxor xmm4,xmm2 + movdqa xmm2,xmm10 +DB 102,15,56,0,211 + pxor xmm2,xmm0 + movdqa xmm3,xmm10 +DB 102,15,56,0,220 + pxor xmm3,xmm1 + movdqa xmm4,xmm13 +DB 102,15,56,0,226 + movdqa xmm0,xmm12 +DB 102,15,56,0,195 + pxor xmm0,xmm4 + + + pxor xmm0,xmm7 + movdqa xmm7,xmm0 + DB 0F3h,0C3h ;repret + + + + + + + + + + + + + +ALIGN 16 +_vpaes_schedule_transform: + + movdqa xmm1,xmm9 + pandn xmm1,xmm0 + psrld xmm1,4 + pand xmm0,xmm9 + movdqa xmm2,XMMWORD[r11] +DB 102,15,56,0,208 + movdqa xmm0,XMMWORD[16+r11] +DB 102,15,56,0,193 + pxor xmm0,xmm2 + DB 0F3h,0C3h ;repret + + + + + + + + + + + + + + + + + + + + + + + + + + + +ALIGN 16 +_vpaes_schedule_mangle: + + movdqa xmm4,xmm0 + movdqa xmm5,XMMWORD[$L$k_mc_forward] + test rcx,rcx + jnz NEAR $L$schedule_mangle_dec + + + add rdx,16 + pxor xmm4,XMMWORD[$L$k_s63] +DB 102,15,56,0,229 + movdqa xmm3,xmm4 +DB 102,15,56,0,229 + pxor xmm3,xmm4 +DB 102,15,56,0,229 + pxor xmm3,xmm4 + + jmp NEAR $L$schedule_mangle_both +ALIGN 16 +$L$schedule_mangle_dec: + + lea r11,[$L$k_dksd] + movdqa xmm1,xmm9 + pandn xmm1,xmm4 + psrld xmm1,4 + pand xmm4,xmm9 + + movdqa xmm2,XMMWORD[r11] +DB 102,15,56,0,212 + movdqa xmm3,XMMWORD[16+r11] +DB 102,15,56,0,217 + pxor xmm3,xmm2 +DB 102,15,56,0,221 + + movdqa xmm2,XMMWORD[32+r11] +DB 102,15,56,0,212 + pxor xmm2,xmm3 + movdqa xmm3,XMMWORD[48+r11] +DB 102,15,56,0,217 + pxor xmm3,xmm2 +DB 102,15,56,0,221 + + movdqa xmm2,XMMWORD[64+r11] +DB 102,15,56,0,212 + pxor xmm2,xmm3 + movdqa xmm3,XMMWORD[80+r11] +DB 102,15,56,0,217 + pxor xmm3,xmm2 +DB 102,15,56,0,221 + + movdqa xmm2,XMMWORD[96+r11] +DB 102,15,56,0,212 + pxor xmm2,xmm3 + movdqa xmm3,XMMWORD[112+r11] +DB 102,15,56,0,217 + pxor xmm3,xmm2 + + add rdx,-16 + +$L$schedule_mangle_both: + movdqa xmm1,XMMWORD[r10*1+r8] +DB 102,15,56,0,217 + add r8,-16 + and r8,0x30 + movdqu XMMWORD[rdx],xmm3 + DB 0F3h,0C3h ;repret + + + + + + +global vpaes_set_encrypt_key + +ALIGN 16 +vpaes_set_encrypt_key: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_vpaes_set_encrypt_key: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + lea rsp,[((-184))+rsp] + movaps XMMWORD[16+rsp],xmm6 + movaps XMMWORD[32+rsp],xmm7 + movaps XMMWORD[48+rsp],xmm8 + movaps XMMWORD[64+rsp],xmm9 + movaps XMMWORD[80+rsp],xmm10 + movaps XMMWORD[96+rsp],xmm11 + movaps XMMWORD[112+rsp],xmm12 + movaps XMMWORD[128+rsp],xmm13 + movaps XMMWORD[144+rsp],xmm14 + movaps XMMWORD[160+rsp],xmm15 +$L$enc_key_body: + mov eax,esi + shr eax,5 + add eax,5 + mov DWORD[240+rdx],eax + + mov ecx,0 + mov r8d,0x30 + call _vpaes_schedule_core + movaps xmm6,XMMWORD[16+rsp] + movaps xmm7,XMMWORD[32+rsp] + movaps xmm8,XMMWORD[48+rsp] + movaps xmm9,XMMWORD[64+rsp] + movaps xmm10,XMMWORD[80+rsp] + movaps xmm11,XMMWORD[96+rsp] + movaps xmm12,XMMWORD[112+rsp] + movaps xmm13,XMMWORD[128+rsp] + movaps xmm14,XMMWORD[144+rsp] + movaps xmm15,XMMWORD[160+rsp] + lea rsp,[184+rsp] +$L$enc_key_epilogue: + xor eax,eax + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_vpaes_set_encrypt_key: + +global vpaes_set_decrypt_key + +ALIGN 16 +vpaes_set_decrypt_key: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_vpaes_set_decrypt_key: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + lea rsp,[((-184))+rsp] + movaps XMMWORD[16+rsp],xmm6 + movaps XMMWORD[32+rsp],xmm7 + movaps XMMWORD[48+rsp],xmm8 + movaps XMMWORD[64+rsp],xmm9 + movaps XMMWORD[80+rsp],xmm10 + movaps XMMWORD[96+rsp],xmm11 + movaps XMMWORD[112+rsp],xmm12 + movaps XMMWORD[128+rsp],xmm13 + movaps XMMWORD[144+rsp],xmm14 + movaps XMMWORD[160+rsp],xmm15 +$L$dec_key_body: + mov eax,esi + shr eax,5 + add eax,5 + mov DWORD[240+rdx],eax + shl eax,4 + lea rdx,[16+rax*1+rdx] + + mov ecx,1 + mov r8d,esi + shr r8d,1 + and r8d,32 + xor r8d,32 + call _vpaes_schedule_core + movaps xmm6,XMMWORD[16+rsp] + movaps xmm7,XMMWORD[32+rsp] + movaps xmm8,XMMWORD[48+rsp] + movaps xmm9,XMMWORD[64+rsp] + movaps xmm10,XMMWORD[80+rsp] + movaps xmm11,XMMWORD[96+rsp] + movaps xmm12,XMMWORD[112+rsp] + movaps xmm13,XMMWORD[128+rsp] + movaps xmm14,XMMWORD[144+rsp] + movaps xmm15,XMMWORD[160+rsp] + lea rsp,[184+rsp] +$L$dec_key_epilogue: + xor eax,eax + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_vpaes_set_decrypt_key: + +global vpaes_encrypt + +ALIGN 16 +vpaes_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_vpaes_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + lea rsp,[((-184))+rsp] + movaps XMMWORD[16+rsp],xmm6 + movaps XMMWORD[32+rsp],xmm7 + movaps XMMWORD[48+rsp],xmm8 + movaps XMMWORD[64+rsp],xmm9 + movaps XMMWORD[80+rsp],xmm10 + movaps XMMWORD[96+rsp],xmm11 + movaps XMMWORD[112+rsp],xmm12 + movaps XMMWORD[128+rsp],xmm13 + movaps XMMWORD[144+rsp],xmm14 + movaps XMMWORD[160+rsp],xmm15 +$L$enc_body: + movdqu xmm0,XMMWORD[rdi] + call _vpaes_preheat + call _vpaes_encrypt_core + movdqu XMMWORD[rsi],xmm0 + movaps xmm6,XMMWORD[16+rsp] + movaps xmm7,XMMWORD[32+rsp] + movaps xmm8,XMMWORD[48+rsp] + movaps xmm9,XMMWORD[64+rsp] + movaps xmm10,XMMWORD[80+rsp] + movaps xmm11,XMMWORD[96+rsp] + movaps xmm12,XMMWORD[112+rsp] + movaps xmm13,XMMWORD[128+rsp] + movaps xmm14,XMMWORD[144+rsp] + movaps xmm15,XMMWORD[160+rsp] + lea rsp,[184+rsp] +$L$enc_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_vpaes_encrypt: + +global vpaes_decrypt + +ALIGN 16 +vpaes_decrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_vpaes_decrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + lea rsp,[((-184))+rsp] + movaps XMMWORD[16+rsp],xmm6 + movaps XMMWORD[32+rsp],xmm7 + movaps XMMWORD[48+rsp],xmm8 + movaps XMMWORD[64+rsp],xmm9 + movaps XMMWORD[80+rsp],xmm10 + movaps XMMWORD[96+rsp],xmm11 + movaps XMMWORD[112+rsp],xmm12 + movaps XMMWORD[128+rsp],xmm13 + movaps XMMWORD[144+rsp],xmm14 + movaps XMMWORD[160+rsp],xmm15 +$L$dec_body: + movdqu xmm0,XMMWORD[rdi] + call _vpaes_preheat + call _vpaes_decrypt_core + movdqu XMMWORD[rsi],xmm0 + movaps xmm6,XMMWORD[16+rsp] + movaps xmm7,XMMWORD[32+rsp] + movaps xmm8,XMMWORD[48+rsp] + movaps xmm9,XMMWORD[64+rsp] + movaps xmm10,XMMWORD[80+rsp] + movaps xmm11,XMMWORD[96+rsp] + movaps xmm12,XMMWORD[112+rsp] + movaps xmm13,XMMWORD[128+rsp] + movaps xmm14,XMMWORD[144+rsp] + movaps xmm15,XMMWORD[160+rsp] + lea rsp,[184+rsp] +$L$dec_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_vpaes_decrypt: +global vpaes_cbc_encrypt + +ALIGN 16 +vpaes_cbc_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_vpaes_cbc_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + xchg rdx,rcx + sub rcx,16 + jc NEAR $L$cbc_abort + lea rsp,[((-184))+rsp] + movaps XMMWORD[16+rsp],xmm6 + movaps XMMWORD[32+rsp],xmm7 + movaps XMMWORD[48+rsp],xmm8 + movaps XMMWORD[64+rsp],xmm9 + movaps XMMWORD[80+rsp],xmm10 + movaps XMMWORD[96+rsp],xmm11 + movaps XMMWORD[112+rsp],xmm12 + movaps XMMWORD[128+rsp],xmm13 + movaps XMMWORD[144+rsp],xmm14 + movaps XMMWORD[160+rsp],xmm15 +$L$cbc_body: + movdqu xmm6,XMMWORD[r8] + sub rsi,rdi + call _vpaes_preheat + cmp r9d,0 + je NEAR $L$cbc_dec_loop + jmp NEAR $L$cbc_enc_loop +ALIGN 16 +$L$cbc_enc_loop: + movdqu xmm0,XMMWORD[rdi] + pxor xmm0,xmm6 + call _vpaes_encrypt_core + movdqa xmm6,xmm0 + movdqu XMMWORD[rdi*1+rsi],xmm0 + lea rdi,[16+rdi] + sub rcx,16 + jnc NEAR $L$cbc_enc_loop + jmp NEAR $L$cbc_done +ALIGN 16 +$L$cbc_dec_loop: + movdqu xmm0,XMMWORD[rdi] + movdqa xmm7,xmm0 + call _vpaes_decrypt_core + pxor xmm0,xmm6 + movdqa xmm6,xmm7 + movdqu XMMWORD[rdi*1+rsi],xmm0 + lea rdi,[16+rdi] + sub rcx,16 + jnc NEAR $L$cbc_dec_loop +$L$cbc_done: + movdqu XMMWORD[r8],xmm6 + movaps xmm6,XMMWORD[16+rsp] + movaps xmm7,XMMWORD[32+rsp] + movaps xmm8,XMMWORD[48+rsp] + movaps xmm9,XMMWORD[64+rsp] + movaps xmm10,XMMWORD[80+rsp] + movaps xmm11,XMMWORD[96+rsp] + movaps xmm12,XMMWORD[112+rsp] + movaps xmm13,XMMWORD[128+rsp] + movaps xmm14,XMMWORD[144+rsp] + movaps xmm15,XMMWORD[160+rsp] + lea rsp,[184+rsp] +$L$cbc_epilogue: +$L$cbc_abort: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_vpaes_cbc_encrypt: + + + + + + + +ALIGN 16 +_vpaes_preheat: + + lea r10,[$L$k_s0F] + movdqa xmm10,XMMWORD[((-32))+r10] + movdqa xmm11,XMMWORD[((-16))+r10] + movdqa xmm9,XMMWORD[r10] + movdqa xmm13,XMMWORD[48+r10] + movdqa xmm12,XMMWORD[64+r10] + movdqa xmm15,XMMWORD[80+r10] + movdqa xmm14,XMMWORD[96+r10] + DB 0F3h,0C3h ;repret + + + + + + + + +ALIGN 64 +_vpaes_consts: +$L$k_inv: + DQ 0x0E05060F0D080180,0x040703090A0B0C02 + DQ 0x01040A060F0B0780,0x030D0E0C02050809 + +$L$k_s0F: + DQ 0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F + +$L$k_ipt: + DQ 0xC2B2E8985A2A7000,0xCABAE09052227808 + DQ 0x4C01307D317C4D00,0xCD80B1FCB0FDCC81 + +$L$k_sb1: + DQ 0xB19BE18FCB503E00,0xA5DF7A6E142AF544 + DQ 0x3618D415FAE22300,0x3BF7CCC10D2ED9EF +$L$k_sb2: + DQ 0xE27A93C60B712400,0x5EB7E955BC982FCD + DQ 0x69EB88400AE12900,0xC2A163C8AB82234A +$L$k_sbo: + DQ 0xD0D26D176FBDC700,0x15AABF7AC502A878 + DQ 0xCFE474A55FBB6A00,0x8E1E90D1412B35FA + +$L$k_mc_forward: + DQ 0x0407060500030201,0x0C0F0E0D080B0A09 + DQ 0x080B0A0904070605,0x000302010C0F0E0D + DQ 0x0C0F0E0D080B0A09,0x0407060500030201 + DQ 0x000302010C0F0E0D,0x080B0A0904070605 + +$L$k_mc_backward: + DQ 0x0605040702010003,0x0E0D0C0F0A09080B + DQ 0x020100030E0D0C0F,0x0A09080B06050407 + DQ 0x0E0D0C0F0A09080B,0x0605040702010003 + DQ 0x0A09080B06050407,0x020100030E0D0C0F + +$L$k_sr: + DQ 0x0706050403020100,0x0F0E0D0C0B0A0908 + DQ 0x030E09040F0A0500,0x0B06010C07020D08 + DQ 0x0F060D040B020900,0x070E050C030A0108 + DQ 0x0B0E0104070A0D00,0x0306090C0F020508 + +$L$k_rcon: + DQ 0x1F8391B9AF9DEEB6,0x702A98084D7C7D81 + +$L$k_s63: + DQ 0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B + +$L$k_opt: + DQ 0xFF9F4929D6B66000,0xF7974121DEBE6808 + DQ 0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0 + +$L$k_deskew: + DQ 0x07E4A34047A4E300,0x1DFEB95A5DBEF91A + DQ 0x5F36B5DC83EA6900,0x2841C2ABF49D1E77 + + + + + +$L$k_dksd: + DQ 0xFEB91A5DA3E44700,0x0740E3A45A1DBEF9 + DQ 0x41C277F4B5368300,0x5FDC69EAAB289D1E +$L$k_dksb: + DQ 0x9A4FCA1F8550D500,0x03D653861CC94C99 + DQ 0x115BEDA7B6FC4A00,0xD993256F7E3482C8 +$L$k_dkse: + DQ 0xD5031CCA1FC9D600,0x53859A4C994F5086 + DQ 0xA23196054FDC7BE8,0xCD5EF96A20B31487 +$L$k_dks9: + DQ 0xB6116FC87ED9A700,0x4AED933482255BFC + DQ 0x4576516227143300,0x8BB89FACE9DAFDCE + + + + + +$L$k_dipt: + DQ 0x0F505B040B545F00,0x154A411E114E451A + DQ 0x86E383E660056500,0x12771772F491F194 + +$L$k_dsb9: + DQ 0x851C03539A86D600,0xCAD51F504F994CC9 + DQ 0xC03B1789ECD74900,0x725E2C9EB2FBA565 +$L$k_dsbd: + DQ 0x7D57CCDFE6B1A200,0xF56E9B13882A4439 + DQ 0x3CE2FAF724C6CB00,0x2931180D15DEEFD3 +$L$k_dsbb: + DQ 0xD022649296B44200,0x602646F6B0F2D404 + DQ 0xC19498A6CD596700,0xF3FF0C3E3255AA6B +$L$k_dsbe: + DQ 0x46F2929626D4D000,0x2242600464B4F6B0 + DQ 0x0C55A6CDFFAAC100,0x9467F36B98593E32 +$L$k_dsbo: + DQ 0x1387EA537EF94000,0xC7AA6DB9D4943E2D + DQ 0x12D7560F93441D00,0xCA4B8159D8C58E9C +DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 +DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54 +DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97 +DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32 +DB 85,110,105,118,101,114,115,105,116,121,41,0 +ALIGN 64 + +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$in_prologue + + lea rsi,[16+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + lea rax,[184+rax] + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_vpaes_set_encrypt_key wrt ..imagebase + DD $L$SEH_end_vpaes_set_encrypt_key wrt ..imagebase + DD $L$SEH_info_vpaes_set_encrypt_key wrt ..imagebase + + DD $L$SEH_begin_vpaes_set_decrypt_key wrt ..imagebase + DD $L$SEH_end_vpaes_set_decrypt_key wrt ..imagebase + DD $L$SEH_info_vpaes_set_decrypt_key wrt ..imagebase + + DD $L$SEH_begin_vpaes_encrypt wrt ..imagebase + DD $L$SEH_end_vpaes_encrypt wrt ..imagebase + DD $L$SEH_info_vpaes_encrypt wrt ..imagebase + + DD $L$SEH_begin_vpaes_decrypt wrt ..imagebase + DD $L$SEH_end_vpaes_decrypt wrt ..imagebase + DD $L$SEH_info_vpaes_decrypt wrt ..imagebase + + DD $L$SEH_begin_vpaes_cbc_encrypt wrt ..imagebase + DD $L$SEH_end_vpaes_cbc_encrypt wrt ..imagebase + DD $L$SEH_info_vpaes_cbc_encrypt wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_vpaes_set_encrypt_key: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$enc_key_body wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase +$L$SEH_info_vpaes_set_decrypt_key: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$dec_key_body wrt ..imagebase,$L$dec_key_epilogue wrt ..imagebase +$L$SEH_info_vpaes_encrypt: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$enc_body wrt ..imagebase,$L$enc_epilogue wrt ..imagebase +$L$SEH_info_vpaes_decrypt: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$dec_body wrt ..imagebase,$L$dec_epilogue wrt ..imagebase +$L$SEH_info_vpaes_cbc_encrypt: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/bn/rsaz-avx2.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/bn/rsaz-avx2.asm new file mode 100644 index 0000000..f854d17 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/bn/rsaz-avx2.asm @@ -0,0 +1,1981 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global rsaz_1024_sqr_avx2 + +ALIGN 64 +rsaz_1024_sqr_avx2: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_rsaz_1024_sqr_avx2: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + + lea rax,[rsp] + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + vzeroupper + lea rsp,[((-168))+rsp] + vmovaps XMMWORD[(-216)+rax],xmm6 + vmovaps XMMWORD[(-200)+rax],xmm7 + vmovaps XMMWORD[(-184)+rax],xmm8 + vmovaps XMMWORD[(-168)+rax],xmm9 + vmovaps XMMWORD[(-152)+rax],xmm10 + vmovaps XMMWORD[(-136)+rax],xmm11 + vmovaps XMMWORD[(-120)+rax],xmm12 + vmovaps XMMWORD[(-104)+rax],xmm13 + vmovaps XMMWORD[(-88)+rax],xmm14 + vmovaps XMMWORD[(-72)+rax],xmm15 +$L$sqr_1024_body: + mov rbp,rax + + mov r13,rdx + sub rsp,832 + mov r15,r13 + sub rdi,-128 + sub rsi,-128 + sub r13,-128 + + and r15,4095 + add r15,32*10 + shr r15,12 + vpxor ymm9,ymm9,ymm9 + jz NEAR $L$sqr_1024_no_n_copy + + + + + + sub rsp,32*10 + vmovdqu ymm0,YMMWORD[((0-128))+r13] + and rsp,-2048 + vmovdqu ymm1,YMMWORD[((32-128))+r13] + vmovdqu ymm2,YMMWORD[((64-128))+r13] + vmovdqu ymm3,YMMWORD[((96-128))+r13] + vmovdqu ymm4,YMMWORD[((128-128))+r13] + vmovdqu ymm5,YMMWORD[((160-128))+r13] + vmovdqu ymm6,YMMWORD[((192-128))+r13] + vmovdqu ymm7,YMMWORD[((224-128))+r13] + vmovdqu ymm8,YMMWORD[((256-128))+r13] + lea r13,[((832+128))+rsp] + vmovdqu YMMWORD[(0-128)+r13],ymm0 + vmovdqu YMMWORD[(32-128)+r13],ymm1 + vmovdqu YMMWORD[(64-128)+r13],ymm2 + vmovdqu YMMWORD[(96-128)+r13],ymm3 + vmovdqu YMMWORD[(128-128)+r13],ymm4 + vmovdqu YMMWORD[(160-128)+r13],ymm5 + vmovdqu YMMWORD[(192-128)+r13],ymm6 + vmovdqu YMMWORD[(224-128)+r13],ymm7 + vmovdqu YMMWORD[(256-128)+r13],ymm8 + vmovdqu YMMWORD[(288-128)+r13],ymm9 + +$L$sqr_1024_no_n_copy: + and rsp,-1024 + + vmovdqu ymm1,YMMWORD[((32-128))+rsi] + vmovdqu ymm2,YMMWORD[((64-128))+rsi] + vmovdqu ymm3,YMMWORD[((96-128))+rsi] + vmovdqu ymm4,YMMWORD[((128-128))+rsi] + vmovdqu ymm5,YMMWORD[((160-128))+rsi] + vmovdqu ymm6,YMMWORD[((192-128))+rsi] + vmovdqu ymm7,YMMWORD[((224-128))+rsi] + vmovdqu ymm8,YMMWORD[((256-128))+rsi] + + lea rbx,[192+rsp] + vmovdqu ymm15,YMMWORD[$L$and_mask] + jmp NEAR $L$OOP_GRANDE_SQR_1024 + +ALIGN 32 +$L$OOP_GRANDE_SQR_1024: + lea r9,[((576+128))+rsp] + lea r12,[448+rsp] + + + + + vpaddq ymm1,ymm1,ymm1 + vpbroadcastq ymm10,QWORD[((0-128))+rsi] + vpaddq ymm2,ymm2,ymm2 + vmovdqa YMMWORD[(0-128)+r9],ymm1 + vpaddq ymm3,ymm3,ymm3 + vmovdqa YMMWORD[(32-128)+r9],ymm2 + vpaddq ymm4,ymm4,ymm4 + vmovdqa YMMWORD[(64-128)+r9],ymm3 + vpaddq ymm5,ymm5,ymm5 + vmovdqa YMMWORD[(96-128)+r9],ymm4 + vpaddq ymm6,ymm6,ymm6 + vmovdqa YMMWORD[(128-128)+r9],ymm5 + vpaddq ymm7,ymm7,ymm7 + vmovdqa YMMWORD[(160-128)+r9],ymm6 + vpaddq ymm8,ymm8,ymm8 + vmovdqa YMMWORD[(192-128)+r9],ymm7 + vpxor ymm9,ymm9,ymm9 + vmovdqa YMMWORD[(224-128)+r9],ymm8 + + vpmuludq ymm0,ymm10,YMMWORD[((0-128))+rsi] + vpbroadcastq ymm11,QWORD[((32-128))+rsi] + vmovdqu YMMWORD[(288-192)+rbx],ymm9 + vpmuludq ymm1,ymm1,ymm10 + vmovdqu YMMWORD[(320-448)+r12],ymm9 + vpmuludq ymm2,ymm2,ymm10 + vmovdqu YMMWORD[(352-448)+r12],ymm9 + vpmuludq ymm3,ymm3,ymm10 + vmovdqu YMMWORD[(384-448)+r12],ymm9 + vpmuludq ymm4,ymm4,ymm10 + vmovdqu YMMWORD[(416-448)+r12],ymm9 + vpmuludq ymm5,ymm5,ymm10 + vmovdqu YMMWORD[(448-448)+r12],ymm9 + vpmuludq ymm6,ymm6,ymm10 + vmovdqu YMMWORD[(480-448)+r12],ymm9 + vpmuludq ymm7,ymm7,ymm10 + vmovdqu YMMWORD[(512-448)+r12],ymm9 + vpmuludq ymm8,ymm8,ymm10 + vpbroadcastq ymm10,QWORD[((64-128))+rsi] + vmovdqu YMMWORD[(544-448)+r12],ymm9 + + mov r15,rsi + mov r14d,4 + jmp NEAR $L$sqr_entry_1024 +ALIGN 32 +$L$OOP_SQR_1024: + vpbroadcastq ymm11,QWORD[((32-128))+r15] + vpmuludq ymm0,ymm10,YMMWORD[((0-128))+rsi] + vpaddq ymm0,ymm0,YMMWORD[((0-192))+rbx] + vpmuludq ymm1,ymm10,YMMWORD[((0-128))+r9] + vpaddq ymm1,ymm1,YMMWORD[((32-192))+rbx] + vpmuludq ymm2,ymm10,YMMWORD[((32-128))+r9] + vpaddq ymm2,ymm2,YMMWORD[((64-192))+rbx] + vpmuludq ymm3,ymm10,YMMWORD[((64-128))+r9] + vpaddq ymm3,ymm3,YMMWORD[((96-192))+rbx] + vpmuludq ymm4,ymm10,YMMWORD[((96-128))+r9] + vpaddq ymm4,ymm4,YMMWORD[((128-192))+rbx] + vpmuludq ymm5,ymm10,YMMWORD[((128-128))+r9] + vpaddq ymm5,ymm5,YMMWORD[((160-192))+rbx] + vpmuludq ymm6,ymm10,YMMWORD[((160-128))+r9] + vpaddq ymm6,ymm6,YMMWORD[((192-192))+rbx] + vpmuludq ymm7,ymm10,YMMWORD[((192-128))+r9] + vpaddq ymm7,ymm7,YMMWORD[((224-192))+rbx] + vpmuludq ymm8,ymm10,YMMWORD[((224-128))+r9] + vpbroadcastq ymm10,QWORD[((64-128))+r15] + vpaddq ymm8,ymm8,YMMWORD[((256-192))+rbx] +$L$sqr_entry_1024: + vmovdqu YMMWORD[(0-192)+rbx],ymm0 + vmovdqu YMMWORD[(32-192)+rbx],ymm1 + + vpmuludq ymm12,ymm11,YMMWORD[((32-128))+rsi] + vpaddq ymm2,ymm2,ymm12 + vpmuludq ymm14,ymm11,YMMWORD[((32-128))+r9] + vpaddq ymm3,ymm3,ymm14 + vpmuludq ymm13,ymm11,YMMWORD[((64-128))+r9] + vpaddq ymm4,ymm4,ymm13 + vpmuludq ymm12,ymm11,YMMWORD[((96-128))+r9] + vpaddq ymm5,ymm5,ymm12 + vpmuludq ymm14,ymm11,YMMWORD[((128-128))+r9] + vpaddq ymm6,ymm6,ymm14 + vpmuludq ymm13,ymm11,YMMWORD[((160-128))+r9] + vpaddq ymm7,ymm7,ymm13 + vpmuludq ymm12,ymm11,YMMWORD[((192-128))+r9] + vpaddq ymm8,ymm8,ymm12 + vpmuludq ymm0,ymm11,YMMWORD[((224-128))+r9] + vpbroadcastq ymm11,QWORD[((96-128))+r15] + vpaddq ymm0,ymm0,YMMWORD[((288-192))+rbx] + + vmovdqu YMMWORD[(64-192)+rbx],ymm2 + vmovdqu YMMWORD[(96-192)+rbx],ymm3 + + vpmuludq ymm13,ymm10,YMMWORD[((64-128))+rsi] + vpaddq ymm4,ymm4,ymm13 + vpmuludq ymm12,ymm10,YMMWORD[((64-128))+r9] + vpaddq ymm5,ymm5,ymm12 + vpmuludq ymm14,ymm10,YMMWORD[((96-128))+r9] + vpaddq ymm6,ymm6,ymm14 + vpmuludq ymm13,ymm10,YMMWORD[((128-128))+r9] + vpaddq ymm7,ymm7,ymm13 + vpmuludq ymm12,ymm10,YMMWORD[((160-128))+r9] + vpaddq ymm8,ymm8,ymm12 + vpmuludq ymm14,ymm10,YMMWORD[((192-128))+r9] + vpaddq ymm0,ymm0,ymm14 + vpmuludq ymm1,ymm10,YMMWORD[((224-128))+r9] + vpbroadcastq ymm10,QWORD[((128-128))+r15] + vpaddq ymm1,ymm1,YMMWORD[((320-448))+r12] + + vmovdqu YMMWORD[(128-192)+rbx],ymm4 + vmovdqu YMMWORD[(160-192)+rbx],ymm5 + + vpmuludq ymm12,ymm11,YMMWORD[((96-128))+rsi] + vpaddq ymm6,ymm6,ymm12 + vpmuludq ymm14,ymm11,YMMWORD[((96-128))+r9] + vpaddq ymm7,ymm7,ymm14 + vpmuludq ymm13,ymm11,YMMWORD[((128-128))+r9] + vpaddq ymm8,ymm8,ymm13 + vpmuludq ymm12,ymm11,YMMWORD[((160-128))+r9] + vpaddq ymm0,ymm0,ymm12 + vpmuludq ymm14,ymm11,YMMWORD[((192-128))+r9] + vpaddq ymm1,ymm1,ymm14 + vpmuludq ymm2,ymm11,YMMWORD[((224-128))+r9] + vpbroadcastq ymm11,QWORD[((160-128))+r15] + vpaddq ymm2,ymm2,YMMWORD[((352-448))+r12] + + vmovdqu YMMWORD[(192-192)+rbx],ymm6 + vmovdqu YMMWORD[(224-192)+rbx],ymm7 + + vpmuludq ymm12,ymm10,YMMWORD[((128-128))+rsi] + vpaddq ymm8,ymm8,ymm12 + vpmuludq ymm14,ymm10,YMMWORD[((128-128))+r9] + vpaddq ymm0,ymm0,ymm14 + vpmuludq ymm13,ymm10,YMMWORD[((160-128))+r9] + vpaddq ymm1,ymm1,ymm13 + vpmuludq ymm12,ymm10,YMMWORD[((192-128))+r9] + vpaddq ymm2,ymm2,ymm12 + vpmuludq ymm3,ymm10,YMMWORD[((224-128))+r9] + vpbroadcastq ymm10,QWORD[((192-128))+r15] + vpaddq ymm3,ymm3,YMMWORD[((384-448))+r12] + + vmovdqu YMMWORD[(256-192)+rbx],ymm8 + vmovdqu YMMWORD[(288-192)+rbx],ymm0 + lea rbx,[8+rbx] + + vpmuludq ymm13,ymm11,YMMWORD[((160-128))+rsi] + vpaddq ymm1,ymm1,ymm13 + vpmuludq ymm12,ymm11,YMMWORD[((160-128))+r9] + vpaddq ymm2,ymm2,ymm12 + vpmuludq ymm14,ymm11,YMMWORD[((192-128))+r9] + vpaddq ymm3,ymm3,ymm14 + vpmuludq ymm4,ymm11,YMMWORD[((224-128))+r9] + vpbroadcastq ymm11,QWORD[((224-128))+r15] + vpaddq ymm4,ymm4,YMMWORD[((416-448))+r12] + + vmovdqu YMMWORD[(320-448)+r12],ymm1 + vmovdqu YMMWORD[(352-448)+r12],ymm2 + + vpmuludq ymm12,ymm10,YMMWORD[((192-128))+rsi] + vpaddq ymm3,ymm3,ymm12 + vpmuludq ymm14,ymm10,YMMWORD[((192-128))+r9] + vpbroadcastq ymm0,QWORD[((256-128))+r15] + vpaddq ymm4,ymm4,ymm14 + vpmuludq ymm5,ymm10,YMMWORD[((224-128))+r9] + vpbroadcastq ymm10,QWORD[((0+8-128))+r15] + vpaddq ymm5,ymm5,YMMWORD[((448-448))+r12] + + vmovdqu YMMWORD[(384-448)+r12],ymm3 + vmovdqu YMMWORD[(416-448)+r12],ymm4 + lea r15,[8+r15] + + vpmuludq ymm12,ymm11,YMMWORD[((224-128))+rsi] + vpaddq ymm5,ymm5,ymm12 + vpmuludq ymm6,ymm11,YMMWORD[((224-128))+r9] + vpaddq ymm6,ymm6,YMMWORD[((480-448))+r12] + + vpmuludq ymm7,ymm0,YMMWORD[((256-128))+rsi] + vmovdqu YMMWORD[(448-448)+r12],ymm5 + vpaddq ymm7,ymm7,YMMWORD[((512-448))+r12] + vmovdqu YMMWORD[(480-448)+r12],ymm6 + vmovdqu YMMWORD[(512-448)+r12],ymm7 + lea r12,[8+r12] + + dec r14d + jnz NEAR $L$OOP_SQR_1024 + + vmovdqu ymm8,YMMWORD[256+rsp] + vmovdqu ymm1,YMMWORD[288+rsp] + vmovdqu ymm2,YMMWORD[320+rsp] + lea rbx,[192+rsp] + + vpsrlq ymm14,ymm8,29 + vpand ymm8,ymm8,ymm15 + vpsrlq ymm11,ymm1,29 + vpand ymm1,ymm1,ymm15 + + vpermq ymm14,ymm14,0x93 + vpxor ymm9,ymm9,ymm9 + vpermq ymm11,ymm11,0x93 + + vpblendd ymm10,ymm14,ymm9,3 + vpblendd ymm14,ymm11,ymm14,3 + vpaddq ymm8,ymm8,ymm10 + vpblendd ymm11,ymm9,ymm11,3 + vpaddq ymm1,ymm1,ymm14 + vpaddq ymm2,ymm2,ymm11 + vmovdqu YMMWORD[(288-192)+rbx],ymm1 + vmovdqu YMMWORD[(320-192)+rbx],ymm2 + + mov rax,QWORD[rsp] + mov r10,QWORD[8+rsp] + mov r11,QWORD[16+rsp] + mov r12,QWORD[24+rsp] + vmovdqu ymm1,YMMWORD[32+rsp] + vmovdqu ymm2,YMMWORD[((64-192))+rbx] + vmovdqu ymm3,YMMWORD[((96-192))+rbx] + vmovdqu ymm4,YMMWORD[((128-192))+rbx] + vmovdqu ymm5,YMMWORD[((160-192))+rbx] + vmovdqu ymm6,YMMWORD[((192-192))+rbx] + vmovdqu ymm7,YMMWORD[((224-192))+rbx] + + mov r9,rax + imul eax,ecx + and eax,0x1fffffff + vmovd xmm12,eax + + mov rdx,rax + imul rax,QWORD[((-128))+r13] + vpbroadcastq ymm12,xmm12 + add r9,rax + mov rax,rdx + imul rax,QWORD[((8-128))+r13] + shr r9,29 + add r10,rax + mov rax,rdx + imul rax,QWORD[((16-128))+r13] + add r10,r9 + add r11,rax + imul rdx,QWORD[((24-128))+r13] + add r12,rdx + + mov rax,r10 + imul eax,ecx + and eax,0x1fffffff + + mov r14d,9 + jmp NEAR $L$OOP_REDUCE_1024 + +ALIGN 32 +$L$OOP_REDUCE_1024: + vmovd xmm13,eax + vpbroadcastq ymm13,xmm13 + + vpmuludq ymm10,ymm12,YMMWORD[((32-128))+r13] + mov rdx,rax + imul rax,QWORD[((-128))+r13] + vpaddq ymm1,ymm1,ymm10 + add r10,rax + vpmuludq ymm14,ymm12,YMMWORD[((64-128))+r13] + mov rax,rdx + imul rax,QWORD[((8-128))+r13] + vpaddq ymm2,ymm2,ymm14 + vpmuludq ymm11,ymm12,YMMWORD[((96-128))+r13] +DB 0x67 + add r11,rax +DB 0x67 + mov rax,rdx + imul rax,QWORD[((16-128))+r13] + shr r10,29 + vpaddq ymm3,ymm3,ymm11 + vpmuludq ymm10,ymm12,YMMWORD[((128-128))+r13] + add r12,rax + add r11,r10 + vpaddq ymm4,ymm4,ymm10 + vpmuludq ymm14,ymm12,YMMWORD[((160-128))+r13] + mov rax,r11 + imul eax,ecx + vpaddq ymm5,ymm5,ymm14 + vpmuludq ymm11,ymm12,YMMWORD[((192-128))+r13] + and eax,0x1fffffff + vpaddq ymm6,ymm6,ymm11 + vpmuludq ymm10,ymm12,YMMWORD[((224-128))+r13] + vpaddq ymm7,ymm7,ymm10 + vpmuludq ymm14,ymm12,YMMWORD[((256-128))+r13] + vmovd xmm12,eax + + vpaddq ymm8,ymm8,ymm14 + + vpbroadcastq ymm12,xmm12 + + vpmuludq ymm11,ymm13,YMMWORD[((32-8-128))+r13] + vmovdqu ymm14,YMMWORD[((96-8-128))+r13] + mov rdx,rax + imul rax,QWORD[((-128))+r13] + vpaddq ymm1,ymm1,ymm11 + vpmuludq ymm10,ymm13,YMMWORD[((64-8-128))+r13] + vmovdqu ymm11,YMMWORD[((128-8-128))+r13] + add r11,rax + mov rax,rdx + imul rax,QWORD[((8-128))+r13] + vpaddq ymm2,ymm2,ymm10 + add rax,r12 + shr r11,29 + vpmuludq ymm14,ymm14,ymm13 + vmovdqu ymm10,YMMWORD[((160-8-128))+r13] + add rax,r11 + vpaddq ymm3,ymm3,ymm14 + vpmuludq ymm11,ymm11,ymm13 + vmovdqu ymm14,YMMWORD[((192-8-128))+r13] +DB 0x67 + mov r12,rax + imul eax,ecx + vpaddq ymm4,ymm4,ymm11 + vpmuludq ymm10,ymm10,ymm13 +DB 0xc4,0x41,0x7e,0x6f,0x9d,0x58,0x00,0x00,0x00 + and eax,0x1fffffff + vpaddq ymm5,ymm5,ymm10 + vpmuludq ymm14,ymm14,ymm13 + vmovdqu ymm10,YMMWORD[((256-8-128))+r13] + vpaddq ymm6,ymm6,ymm14 + vpmuludq ymm11,ymm11,ymm13 + vmovdqu ymm9,YMMWORD[((288-8-128))+r13] + vmovd xmm0,eax + imul rax,QWORD[((-128))+r13] + vpaddq ymm7,ymm7,ymm11 + vpmuludq ymm10,ymm10,ymm13 + vmovdqu ymm14,YMMWORD[((32-16-128))+r13] + vpbroadcastq ymm0,xmm0 + vpaddq ymm8,ymm8,ymm10 + vpmuludq ymm9,ymm9,ymm13 + vmovdqu ymm11,YMMWORD[((64-16-128))+r13] + add r12,rax + + vmovdqu ymm13,YMMWORD[((32-24-128))+r13] + vpmuludq ymm14,ymm14,ymm12 + vmovdqu ymm10,YMMWORD[((96-16-128))+r13] + vpaddq ymm1,ymm1,ymm14 + vpmuludq ymm13,ymm13,ymm0 + vpmuludq ymm11,ymm11,ymm12 +DB 0xc4,0x41,0x7e,0x6f,0xb5,0xf0,0xff,0xff,0xff + vpaddq ymm13,ymm13,ymm1 + vpaddq ymm2,ymm2,ymm11 + vpmuludq ymm10,ymm10,ymm12 + vmovdqu ymm11,YMMWORD[((160-16-128))+r13] +DB 0x67 + vmovq rax,xmm13 + vmovdqu YMMWORD[rsp],ymm13 + vpaddq ymm3,ymm3,ymm10 + vpmuludq ymm14,ymm14,ymm12 + vmovdqu ymm10,YMMWORD[((192-16-128))+r13] + vpaddq ymm4,ymm4,ymm14 + vpmuludq ymm11,ymm11,ymm12 + vmovdqu ymm14,YMMWORD[((224-16-128))+r13] + vpaddq ymm5,ymm5,ymm11 + vpmuludq ymm10,ymm10,ymm12 + vmovdqu ymm11,YMMWORD[((256-16-128))+r13] + vpaddq ymm6,ymm6,ymm10 + vpmuludq ymm14,ymm14,ymm12 + shr r12,29 + vmovdqu ymm10,YMMWORD[((288-16-128))+r13] + add rax,r12 + vpaddq ymm7,ymm7,ymm14 + vpmuludq ymm11,ymm11,ymm12 + + mov r9,rax + imul eax,ecx + vpaddq ymm8,ymm8,ymm11 + vpmuludq ymm10,ymm10,ymm12 + and eax,0x1fffffff + vmovd xmm12,eax + vmovdqu ymm11,YMMWORD[((96-24-128))+r13] +DB 0x67 + vpaddq ymm9,ymm9,ymm10 + vpbroadcastq ymm12,xmm12 + + vpmuludq ymm14,ymm0,YMMWORD[((64-24-128))+r13] + vmovdqu ymm10,YMMWORD[((128-24-128))+r13] + mov rdx,rax + imul rax,QWORD[((-128))+r13] + mov r10,QWORD[8+rsp] + vpaddq ymm1,ymm2,ymm14 + vpmuludq ymm11,ymm11,ymm0 + vmovdqu ymm14,YMMWORD[((160-24-128))+r13] + add r9,rax + mov rax,rdx + imul rax,QWORD[((8-128))+r13] +DB 0x67 + shr r9,29 + mov r11,QWORD[16+rsp] + vpaddq ymm2,ymm3,ymm11 + vpmuludq ymm10,ymm10,ymm0 + vmovdqu ymm11,YMMWORD[((192-24-128))+r13] + add r10,rax + mov rax,rdx + imul rax,QWORD[((16-128))+r13] + vpaddq ymm3,ymm4,ymm10 + vpmuludq ymm14,ymm14,ymm0 + vmovdqu ymm10,YMMWORD[((224-24-128))+r13] + imul rdx,QWORD[((24-128))+r13] + add r11,rax + lea rax,[r10*1+r9] + vpaddq ymm4,ymm5,ymm14 + vpmuludq ymm11,ymm11,ymm0 + vmovdqu ymm14,YMMWORD[((256-24-128))+r13] + mov r10,rax + imul eax,ecx + vpmuludq ymm10,ymm10,ymm0 + vpaddq ymm5,ymm6,ymm11 + vmovdqu ymm11,YMMWORD[((288-24-128))+r13] + and eax,0x1fffffff + vpaddq ymm6,ymm7,ymm10 + vpmuludq ymm14,ymm14,ymm0 + add rdx,QWORD[24+rsp] + vpaddq ymm7,ymm8,ymm14 + vpmuludq ymm11,ymm11,ymm0 + vpaddq ymm8,ymm9,ymm11 + vmovq xmm9,r12 + mov r12,rdx + + dec r14d + jnz NEAR $L$OOP_REDUCE_1024 + lea r12,[448+rsp] + vpaddq ymm0,ymm13,ymm9 + vpxor ymm9,ymm9,ymm9 + + vpaddq ymm0,ymm0,YMMWORD[((288-192))+rbx] + vpaddq ymm1,ymm1,YMMWORD[((320-448))+r12] + vpaddq ymm2,ymm2,YMMWORD[((352-448))+r12] + vpaddq ymm3,ymm3,YMMWORD[((384-448))+r12] + vpaddq ymm4,ymm4,YMMWORD[((416-448))+r12] + vpaddq ymm5,ymm5,YMMWORD[((448-448))+r12] + vpaddq ymm6,ymm6,YMMWORD[((480-448))+r12] + vpaddq ymm7,ymm7,YMMWORD[((512-448))+r12] + vpaddq ymm8,ymm8,YMMWORD[((544-448))+r12] + + vpsrlq ymm14,ymm0,29 + vpand ymm0,ymm0,ymm15 + vpsrlq ymm11,ymm1,29 + vpand ymm1,ymm1,ymm15 + vpsrlq ymm12,ymm2,29 + vpermq ymm14,ymm14,0x93 + vpand ymm2,ymm2,ymm15 + vpsrlq ymm13,ymm3,29 + vpermq ymm11,ymm11,0x93 + vpand ymm3,ymm3,ymm15 + vpermq ymm12,ymm12,0x93 + + vpblendd ymm10,ymm14,ymm9,3 + vpermq ymm13,ymm13,0x93 + vpblendd ymm14,ymm11,ymm14,3 + vpaddq ymm0,ymm0,ymm10 + vpblendd ymm11,ymm12,ymm11,3 + vpaddq ymm1,ymm1,ymm14 + vpblendd ymm12,ymm13,ymm12,3 + vpaddq ymm2,ymm2,ymm11 + vpblendd ymm13,ymm9,ymm13,3 + vpaddq ymm3,ymm3,ymm12 + vpaddq ymm4,ymm4,ymm13 + + vpsrlq ymm14,ymm0,29 + vpand ymm0,ymm0,ymm15 + vpsrlq ymm11,ymm1,29 + vpand ymm1,ymm1,ymm15 + vpsrlq ymm12,ymm2,29 + vpermq ymm14,ymm14,0x93 + vpand ymm2,ymm2,ymm15 + vpsrlq ymm13,ymm3,29 + vpermq ymm11,ymm11,0x93 + vpand ymm3,ymm3,ymm15 + vpermq ymm12,ymm12,0x93 + + vpblendd ymm10,ymm14,ymm9,3 + vpermq ymm13,ymm13,0x93 + vpblendd ymm14,ymm11,ymm14,3 + vpaddq ymm0,ymm0,ymm10 + vpblendd ymm11,ymm12,ymm11,3 + vpaddq ymm1,ymm1,ymm14 + vmovdqu YMMWORD[(0-128)+rdi],ymm0 + vpblendd ymm12,ymm13,ymm12,3 + vpaddq ymm2,ymm2,ymm11 + vmovdqu YMMWORD[(32-128)+rdi],ymm1 + vpblendd ymm13,ymm9,ymm13,3 + vpaddq ymm3,ymm3,ymm12 + vmovdqu YMMWORD[(64-128)+rdi],ymm2 + vpaddq ymm4,ymm4,ymm13 + vmovdqu YMMWORD[(96-128)+rdi],ymm3 + vpsrlq ymm14,ymm4,29 + vpand ymm4,ymm4,ymm15 + vpsrlq ymm11,ymm5,29 + vpand ymm5,ymm5,ymm15 + vpsrlq ymm12,ymm6,29 + vpermq ymm14,ymm14,0x93 + vpand ymm6,ymm6,ymm15 + vpsrlq ymm13,ymm7,29 + vpermq ymm11,ymm11,0x93 + vpand ymm7,ymm7,ymm15 + vpsrlq ymm0,ymm8,29 + vpermq ymm12,ymm12,0x93 + vpand ymm8,ymm8,ymm15 + vpermq ymm13,ymm13,0x93 + + vpblendd ymm10,ymm14,ymm9,3 + vpermq ymm0,ymm0,0x93 + vpblendd ymm14,ymm11,ymm14,3 + vpaddq ymm4,ymm4,ymm10 + vpblendd ymm11,ymm12,ymm11,3 + vpaddq ymm5,ymm5,ymm14 + vpblendd ymm12,ymm13,ymm12,3 + vpaddq ymm6,ymm6,ymm11 + vpblendd ymm13,ymm0,ymm13,3 + vpaddq ymm7,ymm7,ymm12 + vpaddq ymm8,ymm8,ymm13 + + vpsrlq ymm14,ymm4,29 + vpand ymm4,ymm4,ymm15 + vpsrlq ymm11,ymm5,29 + vpand ymm5,ymm5,ymm15 + vpsrlq ymm12,ymm6,29 + vpermq ymm14,ymm14,0x93 + vpand ymm6,ymm6,ymm15 + vpsrlq ymm13,ymm7,29 + vpermq ymm11,ymm11,0x93 + vpand ymm7,ymm7,ymm15 + vpsrlq ymm0,ymm8,29 + vpermq ymm12,ymm12,0x93 + vpand ymm8,ymm8,ymm15 + vpermq ymm13,ymm13,0x93 + + vpblendd ymm10,ymm14,ymm9,3 + vpermq ymm0,ymm0,0x93 + vpblendd ymm14,ymm11,ymm14,3 + vpaddq ymm4,ymm4,ymm10 + vpblendd ymm11,ymm12,ymm11,3 + vpaddq ymm5,ymm5,ymm14 + vmovdqu YMMWORD[(128-128)+rdi],ymm4 + vpblendd ymm12,ymm13,ymm12,3 + vpaddq ymm6,ymm6,ymm11 + vmovdqu YMMWORD[(160-128)+rdi],ymm5 + vpblendd ymm13,ymm0,ymm13,3 + vpaddq ymm7,ymm7,ymm12 + vmovdqu YMMWORD[(192-128)+rdi],ymm6 + vpaddq ymm8,ymm8,ymm13 + vmovdqu YMMWORD[(224-128)+rdi],ymm7 + vmovdqu YMMWORD[(256-128)+rdi],ymm8 + + mov rsi,rdi + dec r8d + jne NEAR $L$OOP_GRANDE_SQR_1024 + + vzeroall + mov rax,rbp + +$L$sqr_1024_in_tail: + movaps xmm6,XMMWORD[((-216))+rax] + movaps xmm7,XMMWORD[((-200))+rax] + movaps xmm8,XMMWORD[((-184))+rax] + movaps xmm9,XMMWORD[((-168))+rax] + movaps xmm10,XMMWORD[((-152))+rax] + movaps xmm11,XMMWORD[((-136))+rax] + movaps xmm12,XMMWORD[((-120))+rax] + movaps xmm13,XMMWORD[((-104))+rax] + movaps xmm14,XMMWORD[((-88))+rax] + movaps xmm15,XMMWORD[((-72))+rax] + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$sqr_1024_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_rsaz_1024_sqr_avx2: +global rsaz_1024_mul_avx2 + +ALIGN 64 +rsaz_1024_mul_avx2: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_rsaz_1024_mul_avx2: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + + lea rax,[rsp] + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + vzeroupper + lea rsp,[((-168))+rsp] + vmovaps XMMWORD[(-216)+rax],xmm6 + vmovaps XMMWORD[(-200)+rax],xmm7 + vmovaps XMMWORD[(-184)+rax],xmm8 + vmovaps XMMWORD[(-168)+rax],xmm9 + vmovaps XMMWORD[(-152)+rax],xmm10 + vmovaps XMMWORD[(-136)+rax],xmm11 + vmovaps XMMWORD[(-120)+rax],xmm12 + vmovaps XMMWORD[(-104)+rax],xmm13 + vmovaps XMMWORD[(-88)+rax],xmm14 + vmovaps XMMWORD[(-72)+rax],xmm15 +$L$mul_1024_body: + mov rbp,rax + + vzeroall + mov r13,rdx + sub rsp,64 + + + + + + +DB 0x67,0x67 + mov r15,rsi + and r15,4095 + add r15,32*10 + shr r15,12 + mov r15,rsi + cmovnz rsi,r13 + cmovnz r13,r15 + + mov r15,rcx + sub rsi,-128 + sub rcx,-128 + sub rdi,-128 + + and r15,4095 + add r15,32*10 +DB 0x67,0x67 + shr r15,12 + jz NEAR $L$mul_1024_no_n_copy + + + + + + sub rsp,32*10 + vmovdqu ymm0,YMMWORD[((0-128))+rcx] + and rsp,-512 + vmovdqu ymm1,YMMWORD[((32-128))+rcx] + vmovdqu ymm2,YMMWORD[((64-128))+rcx] + vmovdqu ymm3,YMMWORD[((96-128))+rcx] + vmovdqu ymm4,YMMWORD[((128-128))+rcx] + vmovdqu ymm5,YMMWORD[((160-128))+rcx] + vmovdqu ymm6,YMMWORD[((192-128))+rcx] + vmovdqu ymm7,YMMWORD[((224-128))+rcx] + vmovdqu ymm8,YMMWORD[((256-128))+rcx] + lea rcx,[((64+128))+rsp] + vmovdqu YMMWORD[(0-128)+rcx],ymm0 + vpxor ymm0,ymm0,ymm0 + vmovdqu YMMWORD[(32-128)+rcx],ymm1 + vpxor ymm1,ymm1,ymm1 + vmovdqu YMMWORD[(64-128)+rcx],ymm2 + vpxor ymm2,ymm2,ymm2 + vmovdqu YMMWORD[(96-128)+rcx],ymm3 + vpxor ymm3,ymm3,ymm3 + vmovdqu YMMWORD[(128-128)+rcx],ymm4 + vpxor ymm4,ymm4,ymm4 + vmovdqu YMMWORD[(160-128)+rcx],ymm5 + vpxor ymm5,ymm5,ymm5 + vmovdqu YMMWORD[(192-128)+rcx],ymm6 + vpxor ymm6,ymm6,ymm6 + vmovdqu YMMWORD[(224-128)+rcx],ymm7 + vpxor ymm7,ymm7,ymm7 + vmovdqu YMMWORD[(256-128)+rcx],ymm8 + vmovdqa ymm8,ymm0 + vmovdqu YMMWORD[(288-128)+rcx],ymm9 +$L$mul_1024_no_n_copy: + and rsp,-64 + + mov rbx,QWORD[r13] + vpbroadcastq ymm10,QWORD[r13] + vmovdqu YMMWORD[rsp],ymm0 + xor r9,r9 +DB 0x67 + xor r10,r10 + xor r11,r11 + xor r12,r12 + + vmovdqu ymm15,YMMWORD[$L$and_mask] + mov r14d,9 + vmovdqu YMMWORD[(288-128)+rdi],ymm9 + jmp NEAR $L$oop_mul_1024 + +ALIGN 32 +$L$oop_mul_1024: + vpsrlq ymm9,ymm3,29 + mov rax,rbx + imul rax,QWORD[((-128))+rsi] + add rax,r9 + mov r10,rbx + imul r10,QWORD[((8-128))+rsi] + add r10,QWORD[8+rsp] + + mov r9,rax + imul eax,r8d + and eax,0x1fffffff + + mov r11,rbx + imul r11,QWORD[((16-128))+rsi] + add r11,QWORD[16+rsp] + + mov r12,rbx + imul r12,QWORD[((24-128))+rsi] + add r12,QWORD[24+rsp] + vpmuludq ymm0,ymm10,YMMWORD[((32-128))+rsi] + vmovd xmm11,eax + vpaddq ymm1,ymm1,ymm0 + vpmuludq ymm12,ymm10,YMMWORD[((64-128))+rsi] + vpbroadcastq ymm11,xmm11 + vpaddq ymm2,ymm2,ymm12 + vpmuludq ymm13,ymm10,YMMWORD[((96-128))+rsi] + vpand ymm3,ymm3,ymm15 + vpaddq ymm3,ymm3,ymm13 + vpmuludq ymm0,ymm10,YMMWORD[((128-128))+rsi] + vpaddq ymm4,ymm4,ymm0 + vpmuludq ymm12,ymm10,YMMWORD[((160-128))+rsi] + vpaddq ymm5,ymm5,ymm12 + vpmuludq ymm13,ymm10,YMMWORD[((192-128))+rsi] + vpaddq ymm6,ymm6,ymm13 + vpmuludq ymm0,ymm10,YMMWORD[((224-128))+rsi] + vpermq ymm9,ymm9,0x93 + vpaddq ymm7,ymm7,ymm0 + vpmuludq ymm12,ymm10,YMMWORD[((256-128))+rsi] + vpbroadcastq ymm10,QWORD[8+r13] + vpaddq ymm8,ymm8,ymm12 + + mov rdx,rax + imul rax,QWORD[((-128))+rcx] + add r9,rax + mov rax,rdx + imul rax,QWORD[((8-128))+rcx] + add r10,rax + mov rax,rdx + imul rax,QWORD[((16-128))+rcx] + add r11,rax + shr r9,29 + imul rdx,QWORD[((24-128))+rcx] + add r12,rdx + add r10,r9 + + vpmuludq ymm13,ymm11,YMMWORD[((32-128))+rcx] + vmovq rbx,xmm10 + vpaddq ymm1,ymm1,ymm13 + vpmuludq ymm0,ymm11,YMMWORD[((64-128))+rcx] + vpaddq ymm2,ymm2,ymm0 + vpmuludq ymm12,ymm11,YMMWORD[((96-128))+rcx] + vpaddq ymm3,ymm3,ymm12 + vpmuludq ymm13,ymm11,YMMWORD[((128-128))+rcx] + vpaddq ymm4,ymm4,ymm13 + vpmuludq ymm0,ymm11,YMMWORD[((160-128))+rcx] + vpaddq ymm5,ymm5,ymm0 + vpmuludq ymm12,ymm11,YMMWORD[((192-128))+rcx] + vpaddq ymm6,ymm6,ymm12 + vpmuludq ymm13,ymm11,YMMWORD[((224-128))+rcx] + vpblendd ymm12,ymm9,ymm14,3 + vpaddq ymm7,ymm7,ymm13 + vpmuludq ymm0,ymm11,YMMWORD[((256-128))+rcx] + vpaddq ymm3,ymm3,ymm12 + vpaddq ymm8,ymm8,ymm0 + + mov rax,rbx + imul rax,QWORD[((-128))+rsi] + add r10,rax + vmovdqu ymm12,YMMWORD[((-8+32-128))+rsi] + mov rax,rbx + imul rax,QWORD[((8-128))+rsi] + add r11,rax + vmovdqu ymm13,YMMWORD[((-8+64-128))+rsi] + + mov rax,r10 + vpblendd ymm9,ymm9,ymm14,0xfc + imul eax,r8d + vpaddq ymm4,ymm4,ymm9 + and eax,0x1fffffff + + imul rbx,QWORD[((16-128))+rsi] + add r12,rbx + vpmuludq ymm12,ymm12,ymm10 + vmovd xmm11,eax + vmovdqu ymm0,YMMWORD[((-8+96-128))+rsi] + vpaddq ymm1,ymm1,ymm12 + vpmuludq ymm13,ymm13,ymm10 + vpbroadcastq ymm11,xmm11 + vmovdqu ymm12,YMMWORD[((-8+128-128))+rsi] + vpaddq ymm2,ymm2,ymm13 + vpmuludq ymm0,ymm0,ymm10 + vmovdqu ymm13,YMMWORD[((-8+160-128))+rsi] + vpaddq ymm3,ymm3,ymm0 + vpmuludq ymm12,ymm12,ymm10 + vmovdqu ymm0,YMMWORD[((-8+192-128))+rsi] + vpaddq ymm4,ymm4,ymm12 + vpmuludq ymm13,ymm13,ymm10 + vmovdqu ymm12,YMMWORD[((-8+224-128))+rsi] + vpaddq ymm5,ymm5,ymm13 + vpmuludq ymm0,ymm0,ymm10 + vmovdqu ymm13,YMMWORD[((-8+256-128))+rsi] + vpaddq ymm6,ymm6,ymm0 + vpmuludq ymm12,ymm12,ymm10 + vmovdqu ymm9,YMMWORD[((-8+288-128))+rsi] + vpaddq ymm7,ymm7,ymm12 + vpmuludq ymm13,ymm13,ymm10 + vpaddq ymm8,ymm8,ymm13 + vpmuludq ymm9,ymm9,ymm10 + vpbroadcastq ymm10,QWORD[16+r13] + + mov rdx,rax + imul rax,QWORD[((-128))+rcx] + add r10,rax + vmovdqu ymm0,YMMWORD[((-8+32-128))+rcx] + mov rax,rdx + imul rax,QWORD[((8-128))+rcx] + add r11,rax + vmovdqu ymm12,YMMWORD[((-8+64-128))+rcx] + shr r10,29 + imul rdx,QWORD[((16-128))+rcx] + add r12,rdx + add r11,r10 + + vpmuludq ymm0,ymm0,ymm11 + vmovq rbx,xmm10 + vmovdqu ymm13,YMMWORD[((-8+96-128))+rcx] + vpaddq ymm1,ymm1,ymm0 + vpmuludq ymm12,ymm12,ymm11 + vmovdqu ymm0,YMMWORD[((-8+128-128))+rcx] + vpaddq ymm2,ymm2,ymm12 + vpmuludq ymm13,ymm13,ymm11 + vmovdqu ymm12,YMMWORD[((-8+160-128))+rcx] + vpaddq ymm3,ymm3,ymm13 + vpmuludq ymm0,ymm0,ymm11 + vmovdqu ymm13,YMMWORD[((-8+192-128))+rcx] + vpaddq ymm4,ymm4,ymm0 + vpmuludq ymm12,ymm12,ymm11 + vmovdqu ymm0,YMMWORD[((-8+224-128))+rcx] + vpaddq ymm5,ymm5,ymm12 + vpmuludq ymm13,ymm13,ymm11 + vmovdqu ymm12,YMMWORD[((-8+256-128))+rcx] + vpaddq ymm6,ymm6,ymm13 + vpmuludq ymm0,ymm0,ymm11 + vmovdqu ymm13,YMMWORD[((-8+288-128))+rcx] + vpaddq ymm7,ymm7,ymm0 + vpmuludq ymm12,ymm12,ymm11 + vpaddq ymm8,ymm8,ymm12 + vpmuludq ymm13,ymm13,ymm11 + vpaddq ymm9,ymm9,ymm13 + + vmovdqu ymm0,YMMWORD[((-16+32-128))+rsi] + mov rax,rbx + imul rax,QWORD[((-128))+rsi] + add rax,r11 + + vmovdqu ymm12,YMMWORD[((-16+64-128))+rsi] + mov r11,rax + imul eax,r8d + and eax,0x1fffffff + + imul rbx,QWORD[((8-128))+rsi] + add r12,rbx + vpmuludq ymm0,ymm0,ymm10 + vmovd xmm11,eax + vmovdqu ymm13,YMMWORD[((-16+96-128))+rsi] + vpaddq ymm1,ymm1,ymm0 + vpmuludq ymm12,ymm12,ymm10 + vpbroadcastq ymm11,xmm11 + vmovdqu ymm0,YMMWORD[((-16+128-128))+rsi] + vpaddq ymm2,ymm2,ymm12 + vpmuludq ymm13,ymm13,ymm10 + vmovdqu ymm12,YMMWORD[((-16+160-128))+rsi] + vpaddq ymm3,ymm3,ymm13 + vpmuludq ymm0,ymm0,ymm10 + vmovdqu ymm13,YMMWORD[((-16+192-128))+rsi] + vpaddq ymm4,ymm4,ymm0 + vpmuludq ymm12,ymm12,ymm10 + vmovdqu ymm0,YMMWORD[((-16+224-128))+rsi] + vpaddq ymm5,ymm5,ymm12 + vpmuludq ymm13,ymm13,ymm10 + vmovdqu ymm12,YMMWORD[((-16+256-128))+rsi] + vpaddq ymm6,ymm6,ymm13 + vpmuludq ymm0,ymm0,ymm10 + vmovdqu ymm13,YMMWORD[((-16+288-128))+rsi] + vpaddq ymm7,ymm7,ymm0 + vpmuludq ymm12,ymm12,ymm10 + vpaddq ymm8,ymm8,ymm12 + vpmuludq ymm13,ymm13,ymm10 + vpbroadcastq ymm10,QWORD[24+r13] + vpaddq ymm9,ymm9,ymm13 + + vmovdqu ymm0,YMMWORD[((-16+32-128))+rcx] + mov rdx,rax + imul rax,QWORD[((-128))+rcx] + add r11,rax + vmovdqu ymm12,YMMWORD[((-16+64-128))+rcx] + imul rdx,QWORD[((8-128))+rcx] + add r12,rdx + shr r11,29 + + vpmuludq ymm0,ymm0,ymm11 + vmovq rbx,xmm10 + vmovdqu ymm13,YMMWORD[((-16+96-128))+rcx] + vpaddq ymm1,ymm1,ymm0 + vpmuludq ymm12,ymm12,ymm11 + vmovdqu ymm0,YMMWORD[((-16+128-128))+rcx] + vpaddq ymm2,ymm2,ymm12 + vpmuludq ymm13,ymm13,ymm11 + vmovdqu ymm12,YMMWORD[((-16+160-128))+rcx] + vpaddq ymm3,ymm3,ymm13 + vpmuludq ymm0,ymm0,ymm11 + vmovdqu ymm13,YMMWORD[((-16+192-128))+rcx] + vpaddq ymm4,ymm4,ymm0 + vpmuludq ymm12,ymm12,ymm11 + vmovdqu ymm0,YMMWORD[((-16+224-128))+rcx] + vpaddq ymm5,ymm5,ymm12 + vpmuludq ymm13,ymm13,ymm11 + vmovdqu ymm12,YMMWORD[((-16+256-128))+rcx] + vpaddq ymm6,ymm6,ymm13 + vpmuludq ymm0,ymm0,ymm11 + vmovdqu ymm13,YMMWORD[((-16+288-128))+rcx] + vpaddq ymm7,ymm7,ymm0 + vpmuludq ymm12,ymm12,ymm11 + vmovdqu ymm0,YMMWORD[((-24+32-128))+rsi] + vpaddq ymm8,ymm8,ymm12 + vpmuludq ymm13,ymm13,ymm11 + vmovdqu ymm12,YMMWORD[((-24+64-128))+rsi] + vpaddq ymm9,ymm9,ymm13 + + add r12,r11 + imul rbx,QWORD[((-128))+rsi] + add r12,rbx + + mov rax,r12 + imul eax,r8d + and eax,0x1fffffff + + vpmuludq ymm0,ymm0,ymm10 + vmovd xmm11,eax + vmovdqu ymm13,YMMWORD[((-24+96-128))+rsi] + vpaddq ymm1,ymm1,ymm0 + vpmuludq ymm12,ymm12,ymm10 + vpbroadcastq ymm11,xmm11 + vmovdqu ymm0,YMMWORD[((-24+128-128))+rsi] + vpaddq ymm2,ymm2,ymm12 + vpmuludq ymm13,ymm13,ymm10 + vmovdqu ymm12,YMMWORD[((-24+160-128))+rsi] + vpaddq ymm3,ymm3,ymm13 + vpmuludq ymm0,ymm0,ymm10 + vmovdqu ymm13,YMMWORD[((-24+192-128))+rsi] + vpaddq ymm4,ymm4,ymm0 + vpmuludq ymm12,ymm12,ymm10 + vmovdqu ymm0,YMMWORD[((-24+224-128))+rsi] + vpaddq ymm5,ymm5,ymm12 + vpmuludq ymm13,ymm13,ymm10 + vmovdqu ymm12,YMMWORD[((-24+256-128))+rsi] + vpaddq ymm6,ymm6,ymm13 + vpmuludq ymm0,ymm0,ymm10 + vmovdqu ymm13,YMMWORD[((-24+288-128))+rsi] + vpaddq ymm7,ymm7,ymm0 + vpmuludq ymm12,ymm12,ymm10 + vpaddq ymm8,ymm8,ymm12 + vpmuludq ymm13,ymm13,ymm10 + vpbroadcastq ymm10,QWORD[32+r13] + vpaddq ymm9,ymm9,ymm13 + add r13,32 + + vmovdqu ymm0,YMMWORD[((-24+32-128))+rcx] + imul rax,QWORD[((-128))+rcx] + add r12,rax + shr r12,29 + + vmovdqu ymm12,YMMWORD[((-24+64-128))+rcx] + vpmuludq ymm0,ymm0,ymm11 + vmovq rbx,xmm10 + vmovdqu ymm13,YMMWORD[((-24+96-128))+rcx] + vpaddq ymm0,ymm1,ymm0 + vpmuludq ymm12,ymm12,ymm11 + vmovdqu YMMWORD[rsp],ymm0 + vpaddq ymm1,ymm2,ymm12 + vmovdqu ymm0,YMMWORD[((-24+128-128))+rcx] + vpmuludq ymm13,ymm13,ymm11 + vmovdqu ymm12,YMMWORD[((-24+160-128))+rcx] + vpaddq ymm2,ymm3,ymm13 + vpmuludq ymm0,ymm0,ymm11 + vmovdqu ymm13,YMMWORD[((-24+192-128))+rcx] + vpaddq ymm3,ymm4,ymm0 + vpmuludq ymm12,ymm12,ymm11 + vmovdqu ymm0,YMMWORD[((-24+224-128))+rcx] + vpaddq ymm4,ymm5,ymm12 + vpmuludq ymm13,ymm13,ymm11 + vmovdqu ymm12,YMMWORD[((-24+256-128))+rcx] + vpaddq ymm5,ymm6,ymm13 + vpmuludq ymm0,ymm0,ymm11 + vmovdqu ymm13,YMMWORD[((-24+288-128))+rcx] + mov r9,r12 + vpaddq ymm6,ymm7,ymm0 + vpmuludq ymm12,ymm12,ymm11 + add r9,QWORD[rsp] + vpaddq ymm7,ymm8,ymm12 + vpmuludq ymm13,ymm13,ymm11 + vmovq xmm12,r12 + vpaddq ymm8,ymm9,ymm13 + + dec r14d + jnz NEAR $L$oop_mul_1024 + vpaddq ymm0,ymm12,YMMWORD[rsp] + + vpsrlq ymm12,ymm0,29 + vpand ymm0,ymm0,ymm15 + vpsrlq ymm13,ymm1,29 + vpand ymm1,ymm1,ymm15 + vpsrlq ymm10,ymm2,29 + vpermq ymm12,ymm12,0x93 + vpand ymm2,ymm2,ymm15 + vpsrlq ymm11,ymm3,29 + vpermq ymm13,ymm13,0x93 + vpand ymm3,ymm3,ymm15 + + vpblendd ymm9,ymm12,ymm14,3 + vpermq ymm10,ymm10,0x93 + vpblendd ymm12,ymm13,ymm12,3 + vpermq ymm11,ymm11,0x93 + vpaddq ymm0,ymm0,ymm9 + vpblendd ymm13,ymm10,ymm13,3 + vpaddq ymm1,ymm1,ymm12 + vpblendd ymm10,ymm11,ymm10,3 + vpaddq ymm2,ymm2,ymm13 + vpblendd ymm11,ymm14,ymm11,3 + vpaddq ymm3,ymm3,ymm10 + vpaddq ymm4,ymm4,ymm11 + + vpsrlq ymm12,ymm0,29 + vpand ymm0,ymm0,ymm15 + vpsrlq ymm13,ymm1,29 + vpand ymm1,ymm1,ymm15 + vpsrlq ymm10,ymm2,29 + vpermq ymm12,ymm12,0x93 + vpand ymm2,ymm2,ymm15 + vpsrlq ymm11,ymm3,29 + vpermq ymm13,ymm13,0x93 + vpand ymm3,ymm3,ymm15 + vpermq ymm10,ymm10,0x93 + + vpblendd ymm9,ymm12,ymm14,3 + vpermq ymm11,ymm11,0x93 + vpblendd ymm12,ymm13,ymm12,3 + vpaddq ymm0,ymm0,ymm9 + vpblendd ymm13,ymm10,ymm13,3 + vpaddq ymm1,ymm1,ymm12 + vpblendd ymm10,ymm11,ymm10,3 + vpaddq ymm2,ymm2,ymm13 + vpblendd ymm11,ymm14,ymm11,3 + vpaddq ymm3,ymm3,ymm10 + vpaddq ymm4,ymm4,ymm11 + + vmovdqu YMMWORD[(0-128)+rdi],ymm0 + vmovdqu YMMWORD[(32-128)+rdi],ymm1 + vmovdqu YMMWORD[(64-128)+rdi],ymm2 + vmovdqu YMMWORD[(96-128)+rdi],ymm3 + vpsrlq ymm12,ymm4,29 + vpand ymm4,ymm4,ymm15 + vpsrlq ymm13,ymm5,29 + vpand ymm5,ymm5,ymm15 + vpsrlq ymm10,ymm6,29 + vpermq ymm12,ymm12,0x93 + vpand ymm6,ymm6,ymm15 + vpsrlq ymm11,ymm7,29 + vpermq ymm13,ymm13,0x93 + vpand ymm7,ymm7,ymm15 + vpsrlq ymm0,ymm8,29 + vpermq ymm10,ymm10,0x93 + vpand ymm8,ymm8,ymm15 + vpermq ymm11,ymm11,0x93 + + vpblendd ymm9,ymm12,ymm14,3 + vpermq ymm0,ymm0,0x93 + vpblendd ymm12,ymm13,ymm12,3 + vpaddq ymm4,ymm4,ymm9 + vpblendd ymm13,ymm10,ymm13,3 + vpaddq ymm5,ymm5,ymm12 + vpblendd ymm10,ymm11,ymm10,3 + vpaddq ymm6,ymm6,ymm13 + vpblendd ymm11,ymm0,ymm11,3 + vpaddq ymm7,ymm7,ymm10 + vpaddq ymm8,ymm8,ymm11 + + vpsrlq ymm12,ymm4,29 + vpand ymm4,ymm4,ymm15 + vpsrlq ymm13,ymm5,29 + vpand ymm5,ymm5,ymm15 + vpsrlq ymm10,ymm6,29 + vpermq ymm12,ymm12,0x93 + vpand ymm6,ymm6,ymm15 + vpsrlq ymm11,ymm7,29 + vpermq ymm13,ymm13,0x93 + vpand ymm7,ymm7,ymm15 + vpsrlq ymm0,ymm8,29 + vpermq ymm10,ymm10,0x93 + vpand ymm8,ymm8,ymm15 + vpermq ymm11,ymm11,0x93 + + vpblendd ymm9,ymm12,ymm14,3 + vpermq ymm0,ymm0,0x93 + vpblendd ymm12,ymm13,ymm12,3 + vpaddq ymm4,ymm4,ymm9 + vpblendd ymm13,ymm10,ymm13,3 + vpaddq ymm5,ymm5,ymm12 + vpblendd ymm10,ymm11,ymm10,3 + vpaddq ymm6,ymm6,ymm13 + vpblendd ymm11,ymm0,ymm11,3 + vpaddq ymm7,ymm7,ymm10 + vpaddq ymm8,ymm8,ymm11 + + vmovdqu YMMWORD[(128-128)+rdi],ymm4 + vmovdqu YMMWORD[(160-128)+rdi],ymm5 + vmovdqu YMMWORD[(192-128)+rdi],ymm6 + vmovdqu YMMWORD[(224-128)+rdi],ymm7 + vmovdqu YMMWORD[(256-128)+rdi],ymm8 + vzeroupper + + mov rax,rbp + +$L$mul_1024_in_tail: + movaps xmm6,XMMWORD[((-216))+rax] + movaps xmm7,XMMWORD[((-200))+rax] + movaps xmm8,XMMWORD[((-184))+rax] + movaps xmm9,XMMWORD[((-168))+rax] + movaps xmm10,XMMWORD[((-152))+rax] + movaps xmm11,XMMWORD[((-136))+rax] + movaps xmm12,XMMWORD[((-120))+rax] + movaps xmm13,XMMWORD[((-104))+rax] + movaps xmm14,XMMWORD[((-88))+rax] + movaps xmm15,XMMWORD[((-72))+rax] + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$mul_1024_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_rsaz_1024_mul_avx2: +global rsaz_1024_red2norm_avx2 + +ALIGN 32 +rsaz_1024_red2norm_avx2: + + sub rdx,-128 + xor rax,rax + mov r8,QWORD[((-128))+rdx] + mov r9,QWORD[((-120))+rdx] + mov r10,QWORD[((-112))+rdx] + shl r8,0 + shl r9,29 + mov r11,r10 + shl r10,58 + shr r11,6 + add rax,r8 + add rax,r9 + add rax,r10 + adc r11,0 + mov QWORD[rcx],rax + mov rax,r11 + mov r8,QWORD[((-104))+rdx] + mov r9,QWORD[((-96))+rdx] + shl r8,23 + mov r10,r9 + shl r9,52 + shr r10,12 + add rax,r8 + add rax,r9 + adc r10,0 + mov QWORD[8+rcx],rax + mov rax,r10 + mov r11,QWORD[((-88))+rdx] + mov r8,QWORD[((-80))+rdx] + shl r11,17 + mov r9,r8 + shl r8,46 + shr r9,18 + add rax,r11 + add rax,r8 + adc r9,0 + mov QWORD[16+rcx],rax + mov rax,r9 + mov r10,QWORD[((-72))+rdx] + mov r11,QWORD[((-64))+rdx] + shl r10,11 + mov r8,r11 + shl r11,40 + shr r8,24 + add rax,r10 + add rax,r11 + adc r8,0 + mov QWORD[24+rcx],rax + mov rax,r8 + mov r9,QWORD[((-56))+rdx] + mov r10,QWORD[((-48))+rdx] + mov r11,QWORD[((-40))+rdx] + shl r9,5 + shl r10,34 + mov r8,r11 + shl r11,63 + shr r8,1 + add rax,r9 + add rax,r10 + add rax,r11 + adc r8,0 + mov QWORD[32+rcx],rax + mov rax,r8 + mov r9,QWORD[((-32))+rdx] + mov r10,QWORD[((-24))+rdx] + shl r9,28 + mov r11,r10 + shl r10,57 + shr r11,7 + add rax,r9 + add rax,r10 + adc r11,0 + mov QWORD[40+rcx],rax + mov rax,r11 + mov r8,QWORD[((-16))+rdx] + mov r9,QWORD[((-8))+rdx] + shl r8,22 + mov r10,r9 + shl r9,51 + shr r10,13 + add rax,r8 + add rax,r9 + adc r10,0 + mov QWORD[48+rcx],rax + mov rax,r10 + mov r11,QWORD[rdx] + mov r8,QWORD[8+rdx] + shl r11,16 + mov r9,r8 + shl r8,45 + shr r9,19 + add rax,r11 + add rax,r8 + adc r9,0 + mov QWORD[56+rcx],rax + mov rax,r9 + mov r10,QWORD[16+rdx] + mov r11,QWORD[24+rdx] + shl r10,10 + mov r8,r11 + shl r11,39 + shr r8,25 + add rax,r10 + add rax,r11 + adc r8,0 + mov QWORD[64+rcx],rax + mov rax,r8 + mov r9,QWORD[32+rdx] + mov r10,QWORD[40+rdx] + mov r11,QWORD[48+rdx] + shl r9,4 + shl r10,33 + mov r8,r11 + shl r11,62 + shr r8,2 + add rax,r9 + add rax,r10 + add rax,r11 + adc r8,0 + mov QWORD[72+rcx],rax + mov rax,r8 + mov r9,QWORD[56+rdx] + mov r10,QWORD[64+rdx] + shl r9,27 + mov r11,r10 + shl r10,56 + shr r11,8 + add rax,r9 + add rax,r10 + adc r11,0 + mov QWORD[80+rcx],rax + mov rax,r11 + mov r8,QWORD[72+rdx] + mov r9,QWORD[80+rdx] + shl r8,21 + mov r10,r9 + shl r9,50 + shr r10,14 + add rax,r8 + add rax,r9 + adc r10,0 + mov QWORD[88+rcx],rax + mov rax,r10 + mov r11,QWORD[88+rdx] + mov r8,QWORD[96+rdx] + shl r11,15 + mov r9,r8 + shl r8,44 + shr r9,20 + add rax,r11 + add rax,r8 + adc r9,0 + mov QWORD[96+rcx],rax + mov rax,r9 + mov r10,QWORD[104+rdx] + mov r11,QWORD[112+rdx] + shl r10,9 + mov r8,r11 + shl r11,38 + shr r8,26 + add rax,r10 + add rax,r11 + adc r8,0 + mov QWORD[104+rcx],rax + mov rax,r8 + mov r9,QWORD[120+rdx] + mov r10,QWORD[128+rdx] + mov r11,QWORD[136+rdx] + shl r9,3 + shl r10,32 + mov r8,r11 + shl r11,61 + shr r8,3 + add rax,r9 + add rax,r10 + add rax,r11 + adc r8,0 + mov QWORD[112+rcx],rax + mov rax,r8 + mov r9,QWORD[144+rdx] + mov r10,QWORD[152+rdx] + shl r9,26 + mov r11,r10 + shl r10,55 + shr r11,9 + add rax,r9 + add rax,r10 + adc r11,0 + mov QWORD[120+rcx],rax + mov rax,r11 + DB 0F3h,0C3h ;repret + + + +global rsaz_1024_norm2red_avx2 + +ALIGN 32 +rsaz_1024_norm2red_avx2: + + sub rcx,-128 + mov r8,QWORD[rdx] + mov eax,0x1fffffff + mov r9,QWORD[8+rdx] + mov r11,r8 + shr r11,0 + and r11,rax + mov QWORD[((-128))+rcx],r11 + mov r10,r8 + shr r10,29 + and r10,rax + mov QWORD[((-120))+rcx],r10 + shrd r8,r9,58 + and r8,rax + mov QWORD[((-112))+rcx],r8 + mov r10,QWORD[16+rdx] + mov r8,r9 + shr r8,23 + and r8,rax + mov QWORD[((-104))+rcx],r8 + shrd r9,r10,52 + and r9,rax + mov QWORD[((-96))+rcx],r9 + mov r11,QWORD[24+rdx] + mov r9,r10 + shr r9,17 + and r9,rax + mov QWORD[((-88))+rcx],r9 + shrd r10,r11,46 + and r10,rax + mov QWORD[((-80))+rcx],r10 + mov r8,QWORD[32+rdx] + mov r10,r11 + shr r10,11 + and r10,rax + mov QWORD[((-72))+rcx],r10 + shrd r11,r8,40 + and r11,rax + mov QWORD[((-64))+rcx],r11 + mov r9,QWORD[40+rdx] + mov r11,r8 + shr r11,5 + and r11,rax + mov QWORD[((-56))+rcx],r11 + mov r10,r8 + shr r10,34 + and r10,rax + mov QWORD[((-48))+rcx],r10 + shrd r8,r9,63 + and r8,rax + mov QWORD[((-40))+rcx],r8 + mov r10,QWORD[48+rdx] + mov r8,r9 + shr r8,28 + and r8,rax + mov QWORD[((-32))+rcx],r8 + shrd r9,r10,57 + and r9,rax + mov QWORD[((-24))+rcx],r9 + mov r11,QWORD[56+rdx] + mov r9,r10 + shr r9,22 + and r9,rax + mov QWORD[((-16))+rcx],r9 + shrd r10,r11,51 + and r10,rax + mov QWORD[((-8))+rcx],r10 + mov r8,QWORD[64+rdx] + mov r10,r11 + shr r10,16 + and r10,rax + mov QWORD[rcx],r10 + shrd r11,r8,45 + and r11,rax + mov QWORD[8+rcx],r11 + mov r9,QWORD[72+rdx] + mov r11,r8 + shr r11,10 + and r11,rax + mov QWORD[16+rcx],r11 + shrd r8,r9,39 + and r8,rax + mov QWORD[24+rcx],r8 + mov r10,QWORD[80+rdx] + mov r8,r9 + shr r8,4 + and r8,rax + mov QWORD[32+rcx],r8 + mov r11,r9 + shr r11,33 + and r11,rax + mov QWORD[40+rcx],r11 + shrd r9,r10,62 + and r9,rax + mov QWORD[48+rcx],r9 + mov r11,QWORD[88+rdx] + mov r9,r10 + shr r9,27 + and r9,rax + mov QWORD[56+rcx],r9 + shrd r10,r11,56 + and r10,rax + mov QWORD[64+rcx],r10 + mov r8,QWORD[96+rdx] + mov r10,r11 + shr r10,21 + and r10,rax + mov QWORD[72+rcx],r10 + shrd r11,r8,50 + and r11,rax + mov QWORD[80+rcx],r11 + mov r9,QWORD[104+rdx] + mov r11,r8 + shr r11,15 + and r11,rax + mov QWORD[88+rcx],r11 + shrd r8,r9,44 + and r8,rax + mov QWORD[96+rcx],r8 + mov r10,QWORD[112+rdx] + mov r8,r9 + shr r8,9 + and r8,rax + mov QWORD[104+rcx],r8 + shrd r9,r10,38 + and r9,rax + mov QWORD[112+rcx],r9 + mov r11,QWORD[120+rdx] + mov r9,r10 + shr r9,3 + and r9,rax + mov QWORD[120+rcx],r9 + mov r8,r10 + shr r8,32 + and r8,rax + mov QWORD[128+rcx],r8 + shrd r10,r11,61 + and r10,rax + mov QWORD[136+rcx],r10 + xor r8,r8 + mov r10,r11 + shr r10,26 + and r10,rax + mov QWORD[144+rcx],r10 + shrd r11,r8,55 + and r11,rax + mov QWORD[152+rcx],r11 + mov QWORD[160+rcx],r8 + mov QWORD[168+rcx],r8 + mov QWORD[176+rcx],r8 + mov QWORD[184+rcx],r8 + DB 0F3h,0C3h ;repret + + +global rsaz_1024_scatter5_avx2 + +ALIGN 32 +rsaz_1024_scatter5_avx2: + + vzeroupper + vmovdqu ymm5,YMMWORD[$L$scatter_permd] + shl r8d,4 + lea rcx,[r8*1+rcx] + mov eax,9 + jmp NEAR $L$oop_scatter_1024 + +ALIGN 32 +$L$oop_scatter_1024: + vmovdqu ymm0,YMMWORD[rdx] + lea rdx,[32+rdx] + vpermd ymm0,ymm5,ymm0 + vmovdqu XMMWORD[rcx],xmm0 + lea rcx,[512+rcx] + dec eax + jnz NEAR $L$oop_scatter_1024 + + vzeroupper + DB 0F3h,0C3h ;repret + + + +global rsaz_1024_gather5_avx2 + +ALIGN 32 +rsaz_1024_gather5_avx2: + + vzeroupper + mov r11,rsp + + lea rax,[((-136))+rsp] +$L$SEH_begin_rsaz_1024_gather5: + +DB 0x48,0x8d,0x60,0xe0 +DB 0xc5,0xf8,0x29,0x70,0xe0 +DB 0xc5,0xf8,0x29,0x78,0xf0 +DB 0xc5,0x78,0x29,0x40,0x00 +DB 0xc5,0x78,0x29,0x48,0x10 +DB 0xc5,0x78,0x29,0x50,0x20 +DB 0xc5,0x78,0x29,0x58,0x30 +DB 0xc5,0x78,0x29,0x60,0x40 +DB 0xc5,0x78,0x29,0x68,0x50 +DB 0xc5,0x78,0x29,0x70,0x60 +DB 0xc5,0x78,0x29,0x78,0x70 + lea rsp,[((-256))+rsp] + and rsp,-32 + lea r10,[$L$inc] + lea rax,[((-128))+rsp] + + vmovd xmm4,r8d + vmovdqa ymm0,YMMWORD[r10] + vmovdqa ymm1,YMMWORD[32+r10] + vmovdqa ymm5,YMMWORD[64+r10] + vpbroadcastd ymm4,xmm4 + + vpaddd ymm2,ymm0,ymm5 + vpcmpeqd ymm0,ymm0,ymm4 + vpaddd ymm3,ymm1,ymm5 + vpcmpeqd ymm1,ymm1,ymm4 + vmovdqa YMMWORD[(0+128)+rax],ymm0 + vpaddd ymm0,ymm2,ymm5 + vpcmpeqd ymm2,ymm2,ymm4 + vmovdqa YMMWORD[(32+128)+rax],ymm1 + vpaddd ymm1,ymm3,ymm5 + vpcmpeqd ymm3,ymm3,ymm4 + vmovdqa YMMWORD[(64+128)+rax],ymm2 + vpaddd ymm2,ymm0,ymm5 + vpcmpeqd ymm0,ymm0,ymm4 + vmovdqa YMMWORD[(96+128)+rax],ymm3 + vpaddd ymm3,ymm1,ymm5 + vpcmpeqd ymm1,ymm1,ymm4 + vmovdqa YMMWORD[(128+128)+rax],ymm0 + vpaddd ymm8,ymm2,ymm5 + vpcmpeqd ymm2,ymm2,ymm4 + vmovdqa YMMWORD[(160+128)+rax],ymm1 + vpaddd ymm9,ymm3,ymm5 + vpcmpeqd ymm3,ymm3,ymm4 + vmovdqa YMMWORD[(192+128)+rax],ymm2 + vpaddd ymm10,ymm8,ymm5 + vpcmpeqd ymm8,ymm8,ymm4 + vmovdqa YMMWORD[(224+128)+rax],ymm3 + vpaddd ymm11,ymm9,ymm5 + vpcmpeqd ymm9,ymm9,ymm4 + vpaddd ymm12,ymm10,ymm5 + vpcmpeqd ymm10,ymm10,ymm4 + vpaddd ymm13,ymm11,ymm5 + vpcmpeqd ymm11,ymm11,ymm4 + vpaddd ymm14,ymm12,ymm5 + vpcmpeqd ymm12,ymm12,ymm4 + vpaddd ymm15,ymm13,ymm5 + vpcmpeqd ymm13,ymm13,ymm4 + vpcmpeqd ymm14,ymm14,ymm4 + vpcmpeqd ymm15,ymm15,ymm4 + + vmovdqa ymm7,YMMWORD[((-32))+r10] + lea rdx,[128+rdx] + mov r8d,9 + +$L$oop_gather_1024: + vmovdqa ymm0,YMMWORD[((0-128))+rdx] + vmovdqa ymm1,YMMWORD[((32-128))+rdx] + vmovdqa ymm2,YMMWORD[((64-128))+rdx] + vmovdqa ymm3,YMMWORD[((96-128))+rdx] + vpand ymm0,ymm0,YMMWORD[((0+128))+rax] + vpand ymm1,ymm1,YMMWORD[((32+128))+rax] + vpand ymm2,ymm2,YMMWORD[((64+128))+rax] + vpor ymm4,ymm1,ymm0 + vpand ymm3,ymm3,YMMWORD[((96+128))+rax] + vmovdqa ymm0,YMMWORD[((128-128))+rdx] + vmovdqa ymm1,YMMWORD[((160-128))+rdx] + vpor ymm5,ymm3,ymm2 + vmovdqa ymm2,YMMWORD[((192-128))+rdx] + vmovdqa ymm3,YMMWORD[((224-128))+rdx] + vpand ymm0,ymm0,YMMWORD[((128+128))+rax] + vpand ymm1,ymm1,YMMWORD[((160+128))+rax] + vpand ymm2,ymm2,YMMWORD[((192+128))+rax] + vpor ymm4,ymm4,ymm0 + vpand ymm3,ymm3,YMMWORD[((224+128))+rax] + vpand ymm0,ymm8,YMMWORD[((256-128))+rdx] + vpor ymm5,ymm5,ymm1 + vpand ymm1,ymm9,YMMWORD[((288-128))+rdx] + vpor ymm4,ymm4,ymm2 + vpand ymm2,ymm10,YMMWORD[((320-128))+rdx] + vpor ymm5,ymm5,ymm3 + vpand ymm3,ymm11,YMMWORD[((352-128))+rdx] + vpor ymm4,ymm4,ymm0 + vpand ymm0,ymm12,YMMWORD[((384-128))+rdx] + vpor ymm5,ymm5,ymm1 + vpand ymm1,ymm13,YMMWORD[((416-128))+rdx] + vpor ymm4,ymm4,ymm2 + vpand ymm2,ymm14,YMMWORD[((448-128))+rdx] + vpor ymm5,ymm5,ymm3 + vpand ymm3,ymm15,YMMWORD[((480-128))+rdx] + lea rdx,[512+rdx] + vpor ymm4,ymm4,ymm0 + vpor ymm5,ymm5,ymm1 + vpor ymm4,ymm4,ymm2 + vpor ymm5,ymm5,ymm3 + + vpor ymm4,ymm4,ymm5 + vextracti128 xmm5,ymm4,1 + vpor xmm5,xmm5,xmm4 + vpermd ymm5,ymm7,ymm5 + vmovdqu YMMWORD[rcx],ymm5 + lea rcx,[32+rcx] + dec r8d + jnz NEAR $L$oop_gather_1024 + + vpxor ymm0,ymm0,ymm0 + vmovdqu YMMWORD[rcx],ymm0 + vzeroupper + movaps xmm6,XMMWORD[((-168))+r11] + movaps xmm7,XMMWORD[((-152))+r11] + movaps xmm8,XMMWORD[((-136))+r11] + movaps xmm9,XMMWORD[((-120))+r11] + movaps xmm10,XMMWORD[((-104))+r11] + movaps xmm11,XMMWORD[((-88))+r11] + movaps xmm12,XMMWORD[((-72))+r11] + movaps xmm13,XMMWORD[((-56))+r11] + movaps xmm14,XMMWORD[((-40))+r11] + movaps xmm15,XMMWORD[((-24))+r11] + lea rsp,[r11] + + DB 0F3h,0C3h ;repret + +$L$SEH_end_rsaz_1024_gather5: + +EXTERN OPENSSL_ia32cap_P +global rsaz_avx2_eligible + +ALIGN 32 +rsaz_avx2_eligible: + mov eax,DWORD[((OPENSSL_ia32cap_P+8))] + mov ecx,524544 + mov edx,0 + and ecx,eax + cmp ecx,524544 + cmove eax,edx + and eax,32 + shr eax,5 + DB 0F3h,0C3h ;repret + + +ALIGN 64 +$L$and_mask: + DQ 0x1fffffff,0x1fffffff,0x1fffffff,0x1fffffff +$L$scatter_permd: + DD 0,2,4,6,7,7,7,7 +$L$gather_permd: + DD 0,7,1,7,2,7,3,7 +$L$inc: + DD 0,0,0,0,1,1,1,1 + DD 2,2,2,2,3,3,3,3 + DD 4,4,4,4,4,4,4,4 +ALIGN 64 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +rsaz_se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov rbp,QWORD[160+r8] + + mov r10d,DWORD[8+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + cmovc rax,rbp + + mov r15,QWORD[((-48))+rax] + mov r14,QWORD[((-40))+rax] + mov r13,QWORD[((-32))+rax] + mov r12,QWORD[((-24))+rax] + mov rbp,QWORD[((-16))+rax] + mov rbx,QWORD[((-8))+rax] + mov QWORD[240+r8],r15 + mov QWORD[232+r8],r14 + mov QWORD[224+r8],r13 + mov QWORD[216+r8],r12 + mov QWORD[160+r8],rbp + mov QWORD[144+r8],rbx + + lea rsi,[((-216))+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_rsaz_1024_sqr_avx2 wrt ..imagebase + DD $L$SEH_end_rsaz_1024_sqr_avx2 wrt ..imagebase + DD $L$SEH_info_rsaz_1024_sqr_avx2 wrt ..imagebase + + DD $L$SEH_begin_rsaz_1024_mul_avx2 wrt ..imagebase + DD $L$SEH_end_rsaz_1024_mul_avx2 wrt ..imagebase + DD $L$SEH_info_rsaz_1024_mul_avx2 wrt ..imagebase + + DD $L$SEH_begin_rsaz_1024_gather5 wrt ..imagebase + DD $L$SEH_end_rsaz_1024_gather5 wrt ..imagebase + DD $L$SEH_info_rsaz_1024_gather5 wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_rsaz_1024_sqr_avx2: +DB 9,0,0,0 + DD rsaz_se_handler wrt ..imagebase + DD $L$sqr_1024_body wrt ..imagebase,$L$sqr_1024_epilogue wrt ..imagebase,$L$sqr_1024_in_tail wrt ..imagebase + DD 0 +$L$SEH_info_rsaz_1024_mul_avx2: +DB 9,0,0,0 + DD rsaz_se_handler wrt ..imagebase + DD $L$mul_1024_body wrt ..imagebase,$L$mul_1024_epilogue wrt ..imagebase,$L$mul_1024_in_tail wrt ..imagebase + DD 0 +$L$SEH_info_rsaz_1024_gather5: +DB 0x01,0x36,0x17,0x0b +DB 0x36,0xf8,0x09,0x00 +DB 0x31,0xe8,0x08,0x00 +DB 0x2c,0xd8,0x07,0x00 +DB 0x27,0xc8,0x06,0x00 +DB 0x22,0xb8,0x05,0x00 +DB 0x1d,0xa8,0x04,0x00 +DB 0x18,0x98,0x03,0x00 +DB 0x13,0x88,0x02,0x00 +DB 0x0e,0x78,0x01,0x00 +DB 0x09,0x68,0x00,0x00 +DB 0x04,0x01,0x15,0x00 +DB 0x00,0xb3,0x00,0x00 diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/bn/rsaz-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/bn/rsaz-x86_64.asm new file mode 100644 index 0000000..a474c5d --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/bn/rsaz-x86_64.asm @@ -0,0 +1,2261 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +EXTERN OPENSSL_ia32cap_P + +global rsaz_512_sqr + +ALIGN 32 +rsaz_512_sqr: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_rsaz_512_sqr: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + + sub rsp,128+24 + +$L$sqr_body: +DB 102,72,15,110,202 + mov rdx,QWORD[rsi] + mov rax,QWORD[8+rsi] + mov QWORD[128+rsp],rcx + mov r11d,0x80100 + and r11d,DWORD[((OPENSSL_ia32cap_P+8))] + cmp r11d,0x80100 + je NEAR $L$oop_sqrx + jmp NEAR $L$oop_sqr + +ALIGN 32 +$L$oop_sqr: + mov DWORD[((128+8))+rsp],r8d + + mov rbx,rdx + mov rbp,rax + mul rdx + mov r8,rax + mov rax,QWORD[16+rsi] + mov r9,rdx + + mul rbx + add r9,rax + mov rax,QWORD[24+rsi] + mov r10,rdx + adc r10,0 + + mul rbx + add r10,rax + mov rax,QWORD[32+rsi] + mov r11,rdx + adc r11,0 + + mul rbx + add r11,rax + mov rax,QWORD[40+rsi] + mov r12,rdx + adc r12,0 + + mul rbx + add r12,rax + mov rax,QWORD[48+rsi] + mov r13,rdx + adc r13,0 + + mul rbx + add r13,rax + mov rax,QWORD[56+rsi] + mov r14,rdx + adc r14,0 + + mul rbx + add r14,rax + mov rax,rbx + adc rdx,0 + + xor rcx,rcx + add r8,r8 + mov r15,rdx + adc rcx,0 + + mul rax + add rdx,r8 + adc rcx,0 + + mov QWORD[rsp],rax + mov QWORD[8+rsp],rdx + + + mov rax,QWORD[16+rsi] + mul rbp + add r10,rax + mov rax,QWORD[24+rsi] + mov rbx,rdx + adc rbx,0 + + mul rbp + add r11,rax + mov rax,QWORD[32+rsi] + adc rdx,0 + add r11,rbx + mov rbx,rdx + adc rbx,0 + + mul rbp + add r12,rax + mov rax,QWORD[40+rsi] + adc rdx,0 + add r12,rbx + mov rbx,rdx + adc rbx,0 + + mul rbp + add r13,rax + mov rax,QWORD[48+rsi] + adc rdx,0 + add r13,rbx + mov rbx,rdx + adc rbx,0 + + mul rbp + add r14,rax + mov rax,QWORD[56+rsi] + adc rdx,0 + add r14,rbx + mov rbx,rdx + adc rbx,0 + + mul rbp + add r15,rax + mov rax,rbp + adc rdx,0 + add r15,rbx + adc rdx,0 + + xor rbx,rbx + add r9,r9 + mov r8,rdx + adc r10,r10 + adc rbx,0 + + mul rax + + add rax,rcx + mov rbp,QWORD[16+rsi] + add r9,rax + mov rax,QWORD[24+rsi] + adc r10,rdx + adc rbx,0 + + mov QWORD[16+rsp],r9 + mov QWORD[24+rsp],r10 + + + mul rbp + add r12,rax + mov rax,QWORD[32+rsi] + mov rcx,rdx + adc rcx,0 + + mul rbp + add r13,rax + mov rax,QWORD[40+rsi] + adc rdx,0 + add r13,rcx + mov rcx,rdx + adc rcx,0 + + mul rbp + add r14,rax + mov rax,QWORD[48+rsi] + adc rdx,0 + add r14,rcx + mov rcx,rdx + adc rcx,0 + + mul rbp + add r15,rax + mov rax,QWORD[56+rsi] + adc rdx,0 + add r15,rcx + mov rcx,rdx + adc rcx,0 + + mul rbp + add r8,rax + mov rax,rbp + adc rdx,0 + add r8,rcx + adc rdx,0 + + xor rcx,rcx + add r11,r11 + mov r9,rdx + adc r12,r12 + adc rcx,0 + + mul rax + + add rax,rbx + mov r10,QWORD[24+rsi] + add r11,rax + mov rax,QWORD[32+rsi] + adc r12,rdx + adc rcx,0 + + mov QWORD[32+rsp],r11 + mov QWORD[40+rsp],r12 + + + mov r11,rax + mul r10 + add r14,rax + mov rax,QWORD[40+rsi] + mov rbx,rdx + adc rbx,0 + + mov r12,rax + mul r10 + add r15,rax + mov rax,QWORD[48+rsi] + adc rdx,0 + add r15,rbx + mov rbx,rdx + adc rbx,0 + + mov rbp,rax + mul r10 + add r8,rax + mov rax,QWORD[56+rsi] + adc rdx,0 + add r8,rbx + mov rbx,rdx + adc rbx,0 + + mul r10 + add r9,rax + mov rax,r10 + adc rdx,0 + add r9,rbx + adc rdx,0 + + xor rbx,rbx + add r13,r13 + mov r10,rdx + adc r14,r14 + adc rbx,0 + + mul rax + + add rax,rcx + add r13,rax + mov rax,r12 + adc r14,rdx + adc rbx,0 + + mov QWORD[48+rsp],r13 + mov QWORD[56+rsp],r14 + + + mul r11 + add r8,rax + mov rax,rbp + mov rcx,rdx + adc rcx,0 + + mul r11 + add r9,rax + mov rax,QWORD[56+rsi] + adc rdx,0 + add r9,rcx + mov rcx,rdx + adc rcx,0 + + mov r14,rax + mul r11 + add r10,rax + mov rax,r11 + adc rdx,0 + add r10,rcx + adc rdx,0 + + xor rcx,rcx + add r15,r15 + mov r11,rdx + adc r8,r8 + adc rcx,0 + + mul rax + + add rax,rbx + add r15,rax + mov rax,rbp + adc r8,rdx + adc rcx,0 + + mov QWORD[64+rsp],r15 + mov QWORD[72+rsp],r8 + + + mul r12 + add r10,rax + mov rax,r14 + mov rbx,rdx + adc rbx,0 + + mul r12 + add r11,rax + mov rax,r12 + adc rdx,0 + add r11,rbx + adc rdx,0 + + xor rbx,rbx + add r9,r9 + mov r12,rdx + adc r10,r10 + adc rbx,0 + + mul rax + + add rax,rcx + add r9,rax + mov rax,r14 + adc r10,rdx + adc rbx,0 + + mov QWORD[80+rsp],r9 + mov QWORD[88+rsp],r10 + + + mul rbp + add r12,rax + mov rax,rbp + adc rdx,0 + + xor rcx,rcx + add r11,r11 + mov r13,rdx + adc r12,r12 + adc rcx,0 + + mul rax + + add rax,rbx + add r11,rax + mov rax,r14 + adc r12,rdx + adc rcx,0 + + mov QWORD[96+rsp],r11 + mov QWORD[104+rsp],r12 + + + xor rbx,rbx + add r13,r13 + adc rbx,0 + + mul rax + + add rax,rcx + add rax,r13 + adc rdx,rbx + + mov r8,QWORD[rsp] + mov r9,QWORD[8+rsp] + mov r10,QWORD[16+rsp] + mov r11,QWORD[24+rsp] + mov r12,QWORD[32+rsp] + mov r13,QWORD[40+rsp] + mov r14,QWORD[48+rsp] + mov r15,QWORD[56+rsp] +DB 102,72,15,126,205 + + mov QWORD[112+rsp],rax + mov QWORD[120+rsp],rdx + + call __rsaz_512_reduce + + add r8,QWORD[64+rsp] + adc r9,QWORD[72+rsp] + adc r10,QWORD[80+rsp] + adc r11,QWORD[88+rsp] + adc r12,QWORD[96+rsp] + adc r13,QWORD[104+rsp] + adc r14,QWORD[112+rsp] + adc r15,QWORD[120+rsp] + sbb rcx,rcx + + call __rsaz_512_subtract + + mov rdx,r8 + mov rax,r9 + mov r8d,DWORD[((128+8))+rsp] + mov rsi,rdi + + dec r8d + jnz NEAR $L$oop_sqr + jmp NEAR $L$sqr_tail + +ALIGN 32 +$L$oop_sqrx: + mov DWORD[((128+8))+rsp],r8d +DB 102,72,15,110,199 + + mulx r9,r8,rax + mov rbx,rax + + mulx r10,rcx,QWORD[16+rsi] + xor rbp,rbp + + mulx r11,rax,QWORD[24+rsi] + adcx r9,rcx + +DB 0xc4,0x62,0xf3,0xf6,0xa6,0x20,0x00,0x00,0x00 + adcx r10,rax + +DB 0xc4,0x62,0xfb,0xf6,0xae,0x28,0x00,0x00,0x00 + adcx r11,rcx + + mulx r14,rcx,QWORD[48+rsi] + adcx r12,rax + adcx r13,rcx + + mulx r15,rax,QWORD[56+rsi] + adcx r14,rax + adcx r15,rbp + + mulx rdi,rax,rdx + mov rdx,rbx + xor rcx,rcx + adox r8,r8 + adcx r8,rdi + adox rcx,rbp + adcx rcx,rbp + + mov QWORD[rsp],rax + mov QWORD[8+rsp],r8 + + +DB 0xc4,0xe2,0xfb,0xf6,0x9e,0x10,0x00,0x00,0x00 + adox r10,rax + adcx r11,rbx + + mulx r8,rdi,QWORD[24+rsi] + adox r11,rdi +DB 0x66 + adcx r12,r8 + + mulx rbx,rax,QWORD[32+rsi] + adox r12,rax + adcx r13,rbx + + mulx r8,rdi,QWORD[40+rsi] + adox r13,rdi + adcx r14,r8 + +DB 0xc4,0xe2,0xfb,0xf6,0x9e,0x30,0x00,0x00,0x00 + adox r14,rax + adcx r15,rbx + +DB 0xc4,0x62,0xc3,0xf6,0x86,0x38,0x00,0x00,0x00 + adox r15,rdi + adcx r8,rbp + mulx rdi,rax,rdx + adox r8,rbp +DB 0x48,0x8b,0x96,0x10,0x00,0x00,0x00 + + xor rbx,rbx + adox r9,r9 + + adcx rax,rcx + adox r10,r10 + adcx r9,rax + adox rbx,rbp + adcx r10,rdi + adcx rbx,rbp + + mov QWORD[16+rsp],r9 +DB 0x4c,0x89,0x94,0x24,0x18,0x00,0x00,0x00 + + + mulx r9,rdi,QWORD[24+rsi] + adox r12,rdi + adcx r13,r9 + + mulx rcx,rax,QWORD[32+rsi] + adox r13,rax + adcx r14,rcx + +DB 0xc4,0x62,0xc3,0xf6,0x8e,0x28,0x00,0x00,0x00 + adox r14,rdi + adcx r15,r9 + +DB 0xc4,0xe2,0xfb,0xf6,0x8e,0x30,0x00,0x00,0x00 + adox r15,rax + adcx r8,rcx + + mulx r9,rdi,QWORD[56+rsi] + adox r8,rdi + adcx r9,rbp + mulx rdi,rax,rdx + adox r9,rbp + mov rdx,QWORD[24+rsi] + + xor rcx,rcx + adox r11,r11 + + adcx rax,rbx + adox r12,r12 + adcx r11,rax + adox rcx,rbp + adcx r12,rdi + adcx rcx,rbp + + mov QWORD[32+rsp],r11 + mov QWORD[40+rsp],r12 + + + mulx rbx,rax,QWORD[32+rsi] + adox r14,rax + adcx r15,rbx + + mulx r10,rdi,QWORD[40+rsi] + adox r15,rdi + adcx r8,r10 + + mulx rbx,rax,QWORD[48+rsi] + adox r8,rax + adcx r9,rbx + + mulx r10,rdi,QWORD[56+rsi] + adox r9,rdi + adcx r10,rbp + mulx rdi,rax,rdx + adox r10,rbp + mov rdx,QWORD[32+rsi] + + xor rbx,rbx + adox r13,r13 + + adcx rax,rcx + adox r14,r14 + adcx r13,rax + adox rbx,rbp + adcx r14,rdi + adcx rbx,rbp + + mov QWORD[48+rsp],r13 + mov QWORD[56+rsp],r14 + + + mulx r11,rdi,QWORD[40+rsi] + adox r8,rdi + adcx r9,r11 + + mulx rcx,rax,QWORD[48+rsi] + adox r9,rax + adcx r10,rcx + + mulx r11,rdi,QWORD[56+rsi] + adox r10,rdi + adcx r11,rbp + mulx rdi,rax,rdx + mov rdx,QWORD[40+rsi] + adox r11,rbp + + xor rcx,rcx + adox r15,r15 + + adcx rax,rbx + adox r8,r8 + adcx r15,rax + adox rcx,rbp + adcx r8,rdi + adcx rcx,rbp + + mov QWORD[64+rsp],r15 + mov QWORD[72+rsp],r8 + + +DB 0xc4,0xe2,0xfb,0xf6,0x9e,0x30,0x00,0x00,0x00 + adox r10,rax + adcx r11,rbx + +DB 0xc4,0x62,0xc3,0xf6,0xa6,0x38,0x00,0x00,0x00 + adox r11,rdi + adcx r12,rbp + mulx rdi,rax,rdx + adox r12,rbp + mov rdx,QWORD[48+rsi] + + xor rbx,rbx + adox r9,r9 + + adcx rax,rcx + adox r10,r10 + adcx r9,rax + adcx r10,rdi + adox rbx,rbp + adcx rbx,rbp + + mov QWORD[80+rsp],r9 + mov QWORD[88+rsp],r10 + + +DB 0xc4,0x62,0xfb,0xf6,0xae,0x38,0x00,0x00,0x00 + adox r12,rax + adox r13,rbp + + mulx rdi,rax,rdx + xor rcx,rcx + mov rdx,QWORD[56+rsi] + adox r11,r11 + + adcx rax,rbx + adox r12,r12 + adcx r11,rax + adox rcx,rbp + adcx r12,rdi + adcx rcx,rbp + +DB 0x4c,0x89,0x9c,0x24,0x60,0x00,0x00,0x00 +DB 0x4c,0x89,0xa4,0x24,0x68,0x00,0x00,0x00 + + + mulx rdx,rax,rdx + xor rbx,rbx + adox r13,r13 + + adcx rax,rcx + adox rbx,rbp + adcx rax,r13 + adcx rbx,rdx + +DB 102,72,15,126,199 +DB 102,72,15,126,205 + + mov rdx,QWORD[128+rsp] + mov r8,QWORD[rsp] + mov r9,QWORD[8+rsp] + mov r10,QWORD[16+rsp] + mov r11,QWORD[24+rsp] + mov r12,QWORD[32+rsp] + mov r13,QWORD[40+rsp] + mov r14,QWORD[48+rsp] + mov r15,QWORD[56+rsp] + + mov QWORD[112+rsp],rax + mov QWORD[120+rsp],rbx + + call __rsaz_512_reducex + + add r8,QWORD[64+rsp] + adc r9,QWORD[72+rsp] + adc r10,QWORD[80+rsp] + adc r11,QWORD[88+rsp] + adc r12,QWORD[96+rsp] + adc r13,QWORD[104+rsp] + adc r14,QWORD[112+rsp] + adc r15,QWORD[120+rsp] + sbb rcx,rcx + + call __rsaz_512_subtract + + mov rdx,r8 + mov rax,r9 + mov r8d,DWORD[((128+8))+rsp] + mov rsi,rdi + + dec r8d + jnz NEAR $L$oop_sqrx + +$L$sqr_tail: + + lea rax,[((128+24+48))+rsp] + + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$sqr_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_rsaz_512_sqr: +global rsaz_512_mul + +ALIGN 32 +rsaz_512_mul: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_rsaz_512_mul: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + + sub rsp,128+24 + +$L$mul_body: +DB 102,72,15,110,199 +DB 102,72,15,110,201 + mov QWORD[128+rsp],r8 + mov r11d,0x80100 + and r11d,DWORD[((OPENSSL_ia32cap_P+8))] + cmp r11d,0x80100 + je NEAR $L$mulx + mov rbx,QWORD[rdx] + mov rbp,rdx + call __rsaz_512_mul + +DB 102,72,15,126,199 +DB 102,72,15,126,205 + + mov r8,QWORD[rsp] + mov r9,QWORD[8+rsp] + mov r10,QWORD[16+rsp] + mov r11,QWORD[24+rsp] + mov r12,QWORD[32+rsp] + mov r13,QWORD[40+rsp] + mov r14,QWORD[48+rsp] + mov r15,QWORD[56+rsp] + + call __rsaz_512_reduce + jmp NEAR $L$mul_tail + +ALIGN 32 +$L$mulx: + mov rbp,rdx + mov rdx,QWORD[rdx] + call __rsaz_512_mulx + +DB 102,72,15,126,199 +DB 102,72,15,126,205 + + mov rdx,QWORD[128+rsp] + mov r8,QWORD[rsp] + mov r9,QWORD[8+rsp] + mov r10,QWORD[16+rsp] + mov r11,QWORD[24+rsp] + mov r12,QWORD[32+rsp] + mov r13,QWORD[40+rsp] + mov r14,QWORD[48+rsp] + mov r15,QWORD[56+rsp] + + call __rsaz_512_reducex +$L$mul_tail: + add r8,QWORD[64+rsp] + adc r9,QWORD[72+rsp] + adc r10,QWORD[80+rsp] + adc r11,QWORD[88+rsp] + adc r12,QWORD[96+rsp] + adc r13,QWORD[104+rsp] + adc r14,QWORD[112+rsp] + adc r15,QWORD[120+rsp] + sbb rcx,rcx + + call __rsaz_512_subtract + + lea rax,[((128+24+48))+rsp] + + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$mul_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_rsaz_512_mul: +global rsaz_512_mul_gather4 + +ALIGN 32 +rsaz_512_mul_gather4: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_rsaz_512_mul_gather4: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + + sub rsp,328 + + movaps XMMWORD[160+rsp],xmm6 + movaps XMMWORD[176+rsp],xmm7 + movaps XMMWORD[192+rsp],xmm8 + movaps XMMWORD[208+rsp],xmm9 + movaps XMMWORD[224+rsp],xmm10 + movaps XMMWORD[240+rsp],xmm11 + movaps XMMWORD[256+rsp],xmm12 + movaps XMMWORD[272+rsp],xmm13 + movaps XMMWORD[288+rsp],xmm14 + movaps XMMWORD[304+rsp],xmm15 +$L$mul_gather4_body: + movd xmm8,r9d + movdqa xmm1,XMMWORD[(($L$inc+16))] + movdqa xmm0,XMMWORD[$L$inc] + + pshufd xmm8,xmm8,0 + movdqa xmm7,xmm1 + movdqa xmm2,xmm1 + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm8 + movdqa xmm3,xmm7 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm8 + movdqa xmm4,xmm7 + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm8 + movdqa xmm5,xmm7 + paddd xmm4,xmm3 + pcmpeqd xmm3,xmm8 + movdqa xmm6,xmm7 + paddd xmm5,xmm4 + pcmpeqd xmm4,xmm8 + paddd xmm6,xmm5 + pcmpeqd xmm5,xmm8 + paddd xmm7,xmm6 + pcmpeqd xmm6,xmm8 + pcmpeqd xmm7,xmm8 + + movdqa xmm8,XMMWORD[rdx] + movdqa xmm9,XMMWORD[16+rdx] + movdqa xmm10,XMMWORD[32+rdx] + movdqa xmm11,XMMWORD[48+rdx] + pand xmm8,xmm0 + movdqa xmm12,XMMWORD[64+rdx] + pand xmm9,xmm1 + movdqa xmm13,XMMWORD[80+rdx] + pand xmm10,xmm2 + movdqa xmm14,XMMWORD[96+rdx] + pand xmm11,xmm3 + movdqa xmm15,XMMWORD[112+rdx] + lea rbp,[128+rdx] + pand xmm12,xmm4 + pand xmm13,xmm5 + pand xmm14,xmm6 + pand xmm15,xmm7 + por xmm8,xmm10 + por xmm9,xmm11 + por xmm8,xmm12 + por xmm9,xmm13 + por xmm8,xmm14 + por xmm9,xmm15 + + por xmm8,xmm9 + pshufd xmm9,xmm8,0x4e + por xmm8,xmm9 + mov r11d,0x80100 + and r11d,DWORD[((OPENSSL_ia32cap_P+8))] + cmp r11d,0x80100 + je NEAR $L$mulx_gather +DB 102,76,15,126,195 + + mov QWORD[128+rsp],r8 + mov QWORD[((128+8))+rsp],rdi + mov QWORD[((128+16))+rsp],rcx + + mov rax,QWORD[rsi] + mov rcx,QWORD[8+rsi] + mul rbx + mov QWORD[rsp],rax + mov rax,rcx + mov r8,rdx + + mul rbx + add r8,rax + mov rax,QWORD[16+rsi] + mov r9,rdx + adc r9,0 + + mul rbx + add r9,rax + mov rax,QWORD[24+rsi] + mov r10,rdx + adc r10,0 + + mul rbx + add r10,rax + mov rax,QWORD[32+rsi] + mov r11,rdx + adc r11,0 + + mul rbx + add r11,rax + mov rax,QWORD[40+rsi] + mov r12,rdx + adc r12,0 + + mul rbx + add r12,rax + mov rax,QWORD[48+rsi] + mov r13,rdx + adc r13,0 + + mul rbx + add r13,rax + mov rax,QWORD[56+rsi] + mov r14,rdx + adc r14,0 + + mul rbx + add r14,rax + mov rax,QWORD[rsi] + mov r15,rdx + adc r15,0 + + lea rdi,[8+rsp] + mov ecx,7 + jmp NEAR $L$oop_mul_gather + +ALIGN 32 +$L$oop_mul_gather: + movdqa xmm8,XMMWORD[rbp] + movdqa xmm9,XMMWORD[16+rbp] + movdqa xmm10,XMMWORD[32+rbp] + movdqa xmm11,XMMWORD[48+rbp] + pand xmm8,xmm0 + movdqa xmm12,XMMWORD[64+rbp] + pand xmm9,xmm1 + movdqa xmm13,XMMWORD[80+rbp] + pand xmm10,xmm2 + movdqa xmm14,XMMWORD[96+rbp] + pand xmm11,xmm3 + movdqa xmm15,XMMWORD[112+rbp] + lea rbp,[128+rbp] + pand xmm12,xmm4 + pand xmm13,xmm5 + pand xmm14,xmm6 + pand xmm15,xmm7 + por xmm8,xmm10 + por xmm9,xmm11 + por xmm8,xmm12 + por xmm9,xmm13 + por xmm8,xmm14 + por xmm9,xmm15 + + por xmm8,xmm9 + pshufd xmm9,xmm8,0x4e + por xmm8,xmm9 +DB 102,76,15,126,195 + + mul rbx + add r8,rax + mov rax,QWORD[8+rsi] + mov QWORD[rdi],r8 + mov r8,rdx + adc r8,0 + + mul rbx + add r9,rax + mov rax,QWORD[16+rsi] + adc rdx,0 + add r8,r9 + mov r9,rdx + adc r9,0 + + mul rbx + add r10,rax + mov rax,QWORD[24+rsi] + adc rdx,0 + add r9,r10 + mov r10,rdx + adc r10,0 + + mul rbx + add r11,rax + mov rax,QWORD[32+rsi] + adc rdx,0 + add r10,r11 + mov r11,rdx + adc r11,0 + + mul rbx + add r12,rax + mov rax,QWORD[40+rsi] + adc rdx,0 + add r11,r12 + mov r12,rdx + adc r12,0 + + mul rbx + add r13,rax + mov rax,QWORD[48+rsi] + adc rdx,0 + add r12,r13 + mov r13,rdx + adc r13,0 + + mul rbx + add r14,rax + mov rax,QWORD[56+rsi] + adc rdx,0 + add r13,r14 + mov r14,rdx + adc r14,0 + + mul rbx + add r15,rax + mov rax,QWORD[rsi] + adc rdx,0 + add r14,r15 + mov r15,rdx + adc r15,0 + + lea rdi,[8+rdi] + + dec ecx + jnz NEAR $L$oop_mul_gather + + mov QWORD[rdi],r8 + mov QWORD[8+rdi],r9 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + mov QWORD[32+rdi],r12 + mov QWORD[40+rdi],r13 + mov QWORD[48+rdi],r14 + mov QWORD[56+rdi],r15 + + mov rdi,QWORD[((128+8))+rsp] + mov rbp,QWORD[((128+16))+rsp] + + mov r8,QWORD[rsp] + mov r9,QWORD[8+rsp] + mov r10,QWORD[16+rsp] + mov r11,QWORD[24+rsp] + mov r12,QWORD[32+rsp] + mov r13,QWORD[40+rsp] + mov r14,QWORD[48+rsp] + mov r15,QWORD[56+rsp] + + call __rsaz_512_reduce + jmp NEAR $L$mul_gather_tail + +ALIGN 32 +$L$mulx_gather: +DB 102,76,15,126,194 + + mov QWORD[128+rsp],r8 + mov QWORD[((128+8))+rsp],rdi + mov QWORD[((128+16))+rsp],rcx + + mulx r8,rbx,QWORD[rsi] + mov QWORD[rsp],rbx + xor edi,edi + + mulx r9,rax,QWORD[8+rsi] + + mulx r10,rbx,QWORD[16+rsi] + adcx r8,rax + + mulx r11,rax,QWORD[24+rsi] + adcx r9,rbx + + mulx r12,rbx,QWORD[32+rsi] + adcx r10,rax + + mulx r13,rax,QWORD[40+rsi] + adcx r11,rbx + + mulx r14,rbx,QWORD[48+rsi] + adcx r12,rax + + mulx r15,rax,QWORD[56+rsi] + adcx r13,rbx + adcx r14,rax +DB 0x67 + mov rbx,r8 + adcx r15,rdi + + mov rcx,-7 + jmp NEAR $L$oop_mulx_gather + +ALIGN 32 +$L$oop_mulx_gather: + movdqa xmm8,XMMWORD[rbp] + movdqa xmm9,XMMWORD[16+rbp] + movdqa xmm10,XMMWORD[32+rbp] + movdqa xmm11,XMMWORD[48+rbp] + pand xmm8,xmm0 + movdqa xmm12,XMMWORD[64+rbp] + pand xmm9,xmm1 + movdqa xmm13,XMMWORD[80+rbp] + pand xmm10,xmm2 + movdqa xmm14,XMMWORD[96+rbp] + pand xmm11,xmm3 + movdqa xmm15,XMMWORD[112+rbp] + lea rbp,[128+rbp] + pand xmm12,xmm4 + pand xmm13,xmm5 + pand xmm14,xmm6 + pand xmm15,xmm7 + por xmm8,xmm10 + por xmm9,xmm11 + por xmm8,xmm12 + por xmm9,xmm13 + por xmm8,xmm14 + por xmm9,xmm15 + + por xmm8,xmm9 + pshufd xmm9,xmm8,0x4e + por xmm8,xmm9 +DB 102,76,15,126,194 + +DB 0xc4,0x62,0xfb,0xf6,0x86,0x00,0x00,0x00,0x00 + adcx rbx,rax + adox r8,r9 + + mulx r9,rax,QWORD[8+rsi] + adcx r8,rax + adox r9,r10 + + mulx r10,rax,QWORD[16+rsi] + adcx r9,rax + adox r10,r11 + +DB 0xc4,0x62,0xfb,0xf6,0x9e,0x18,0x00,0x00,0x00 + adcx r10,rax + adox r11,r12 + + mulx r12,rax,QWORD[32+rsi] + adcx r11,rax + adox r12,r13 + + mulx r13,rax,QWORD[40+rsi] + adcx r12,rax + adox r13,r14 + +DB 0xc4,0x62,0xfb,0xf6,0xb6,0x30,0x00,0x00,0x00 + adcx r13,rax +DB 0x67 + adox r14,r15 + + mulx r15,rax,QWORD[56+rsi] + mov QWORD[64+rcx*8+rsp],rbx + adcx r14,rax + adox r15,rdi + mov rbx,r8 + adcx r15,rdi + + inc rcx + jnz NEAR $L$oop_mulx_gather + + mov QWORD[64+rsp],r8 + mov QWORD[((64+8))+rsp],r9 + mov QWORD[((64+16))+rsp],r10 + mov QWORD[((64+24))+rsp],r11 + mov QWORD[((64+32))+rsp],r12 + mov QWORD[((64+40))+rsp],r13 + mov QWORD[((64+48))+rsp],r14 + mov QWORD[((64+56))+rsp],r15 + + mov rdx,QWORD[128+rsp] + mov rdi,QWORD[((128+8))+rsp] + mov rbp,QWORD[((128+16))+rsp] + + mov r8,QWORD[rsp] + mov r9,QWORD[8+rsp] + mov r10,QWORD[16+rsp] + mov r11,QWORD[24+rsp] + mov r12,QWORD[32+rsp] + mov r13,QWORD[40+rsp] + mov r14,QWORD[48+rsp] + mov r15,QWORD[56+rsp] + + call __rsaz_512_reducex + +$L$mul_gather_tail: + add r8,QWORD[64+rsp] + adc r9,QWORD[72+rsp] + adc r10,QWORD[80+rsp] + adc r11,QWORD[88+rsp] + adc r12,QWORD[96+rsp] + adc r13,QWORD[104+rsp] + adc r14,QWORD[112+rsp] + adc r15,QWORD[120+rsp] + sbb rcx,rcx + + call __rsaz_512_subtract + + lea rax,[((128+24+48))+rsp] + movaps xmm6,XMMWORD[((160-200))+rax] + movaps xmm7,XMMWORD[((176-200))+rax] + movaps xmm8,XMMWORD[((192-200))+rax] + movaps xmm9,XMMWORD[((208-200))+rax] + movaps xmm10,XMMWORD[((224-200))+rax] + movaps xmm11,XMMWORD[((240-200))+rax] + movaps xmm12,XMMWORD[((256-200))+rax] + movaps xmm13,XMMWORD[((272-200))+rax] + movaps xmm14,XMMWORD[((288-200))+rax] + movaps xmm15,XMMWORD[((304-200))+rax] + lea rax,[176+rax] + + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$mul_gather4_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_rsaz_512_mul_gather4: +global rsaz_512_mul_scatter4 + +ALIGN 32 +rsaz_512_mul_scatter4: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_rsaz_512_mul_scatter4: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + + mov r9d,r9d + sub rsp,128+24 + +$L$mul_scatter4_body: + lea r8,[r9*8+r8] +DB 102,72,15,110,199 +DB 102,72,15,110,202 +DB 102,73,15,110,208 + mov QWORD[128+rsp],rcx + + mov rbp,rdi + mov r11d,0x80100 + and r11d,DWORD[((OPENSSL_ia32cap_P+8))] + cmp r11d,0x80100 + je NEAR $L$mulx_scatter + mov rbx,QWORD[rdi] + call __rsaz_512_mul + +DB 102,72,15,126,199 +DB 102,72,15,126,205 + + mov r8,QWORD[rsp] + mov r9,QWORD[8+rsp] + mov r10,QWORD[16+rsp] + mov r11,QWORD[24+rsp] + mov r12,QWORD[32+rsp] + mov r13,QWORD[40+rsp] + mov r14,QWORD[48+rsp] + mov r15,QWORD[56+rsp] + + call __rsaz_512_reduce + jmp NEAR $L$mul_scatter_tail + +ALIGN 32 +$L$mulx_scatter: + mov rdx,QWORD[rdi] + call __rsaz_512_mulx + +DB 102,72,15,126,199 +DB 102,72,15,126,205 + + mov rdx,QWORD[128+rsp] + mov r8,QWORD[rsp] + mov r9,QWORD[8+rsp] + mov r10,QWORD[16+rsp] + mov r11,QWORD[24+rsp] + mov r12,QWORD[32+rsp] + mov r13,QWORD[40+rsp] + mov r14,QWORD[48+rsp] + mov r15,QWORD[56+rsp] + + call __rsaz_512_reducex + +$L$mul_scatter_tail: + add r8,QWORD[64+rsp] + adc r9,QWORD[72+rsp] + adc r10,QWORD[80+rsp] + adc r11,QWORD[88+rsp] + adc r12,QWORD[96+rsp] + adc r13,QWORD[104+rsp] + adc r14,QWORD[112+rsp] + adc r15,QWORD[120+rsp] +DB 102,72,15,126,214 + sbb rcx,rcx + + call __rsaz_512_subtract + + mov QWORD[rsi],r8 + mov QWORD[128+rsi],r9 + mov QWORD[256+rsi],r10 + mov QWORD[384+rsi],r11 + mov QWORD[512+rsi],r12 + mov QWORD[640+rsi],r13 + mov QWORD[768+rsi],r14 + mov QWORD[896+rsi],r15 + + lea rax,[((128+24+48))+rsp] + + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$mul_scatter4_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_rsaz_512_mul_scatter4: +global rsaz_512_mul_by_one + +ALIGN 32 +rsaz_512_mul_by_one: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_rsaz_512_mul_by_one: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + + sub rsp,128+24 + +$L$mul_by_one_body: + mov eax,DWORD[((OPENSSL_ia32cap_P+8))] + mov rbp,rdx + mov QWORD[128+rsp],rcx + + mov r8,QWORD[rsi] + pxor xmm0,xmm0 + mov r9,QWORD[8+rsi] + mov r10,QWORD[16+rsi] + mov r11,QWORD[24+rsi] + mov r12,QWORD[32+rsi] + mov r13,QWORD[40+rsi] + mov r14,QWORD[48+rsi] + mov r15,QWORD[56+rsi] + + movdqa XMMWORD[rsp],xmm0 + movdqa XMMWORD[16+rsp],xmm0 + movdqa XMMWORD[32+rsp],xmm0 + movdqa XMMWORD[48+rsp],xmm0 + movdqa XMMWORD[64+rsp],xmm0 + movdqa XMMWORD[80+rsp],xmm0 + movdqa XMMWORD[96+rsp],xmm0 + and eax,0x80100 + cmp eax,0x80100 + je NEAR $L$by_one_callx + call __rsaz_512_reduce + jmp NEAR $L$by_one_tail +ALIGN 32 +$L$by_one_callx: + mov rdx,QWORD[128+rsp] + call __rsaz_512_reducex +$L$by_one_tail: + mov QWORD[rdi],r8 + mov QWORD[8+rdi],r9 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + mov QWORD[32+rdi],r12 + mov QWORD[40+rdi],r13 + mov QWORD[48+rdi],r14 + mov QWORD[56+rdi],r15 + + lea rax,[((128+24+48))+rsp] + + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$mul_by_one_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_rsaz_512_mul_by_one: + +ALIGN 32 +__rsaz_512_reduce: + + mov rbx,r8 + imul rbx,QWORD[((128+8))+rsp] + mov rax,QWORD[rbp] + mov ecx,8 + jmp NEAR $L$reduction_loop + +ALIGN 32 +$L$reduction_loop: + mul rbx + mov rax,QWORD[8+rbp] + neg r8 + mov r8,rdx + adc r8,0 + + mul rbx + add r9,rax + mov rax,QWORD[16+rbp] + adc rdx,0 + add r8,r9 + mov r9,rdx + adc r9,0 + + mul rbx + add r10,rax + mov rax,QWORD[24+rbp] + adc rdx,0 + add r9,r10 + mov r10,rdx + adc r10,0 + + mul rbx + add r11,rax + mov rax,QWORD[32+rbp] + adc rdx,0 + add r10,r11 + mov rsi,QWORD[((128+8))+rsp] + + + adc rdx,0 + mov r11,rdx + + mul rbx + add r12,rax + mov rax,QWORD[40+rbp] + adc rdx,0 + imul rsi,r8 + add r11,r12 + mov r12,rdx + adc r12,0 + + mul rbx + add r13,rax + mov rax,QWORD[48+rbp] + adc rdx,0 + add r12,r13 + mov r13,rdx + adc r13,0 + + mul rbx + add r14,rax + mov rax,QWORD[56+rbp] + adc rdx,0 + add r13,r14 + mov r14,rdx + adc r14,0 + + mul rbx + mov rbx,rsi + add r15,rax + mov rax,QWORD[rbp] + adc rdx,0 + add r14,r15 + mov r15,rdx + adc r15,0 + + dec ecx + jne NEAR $L$reduction_loop + + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +__rsaz_512_reducex: + + + imul rdx,r8 + xor rsi,rsi + mov ecx,8 + jmp NEAR $L$reduction_loopx + +ALIGN 32 +$L$reduction_loopx: + mov rbx,r8 + mulx r8,rax,QWORD[rbp] + adcx rax,rbx + adox r8,r9 + + mulx r9,rax,QWORD[8+rbp] + adcx r8,rax + adox r9,r10 + + mulx r10,rbx,QWORD[16+rbp] + adcx r9,rbx + adox r10,r11 + + mulx r11,rbx,QWORD[24+rbp] + adcx r10,rbx + adox r11,r12 + +DB 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x00 + mov rax,rdx + mov rdx,r8 + adcx r11,rbx + adox r12,r13 + + mulx rdx,rbx,QWORD[((128+8))+rsp] + mov rdx,rax + + mulx r13,rax,QWORD[40+rbp] + adcx r12,rax + adox r13,r14 + +DB 0xc4,0x62,0xfb,0xf6,0xb5,0x30,0x00,0x00,0x00 + adcx r13,rax + adox r14,r15 + + mulx r15,rax,QWORD[56+rbp] + mov rdx,rbx + adcx r14,rax + adox r15,rsi + adcx r15,rsi + + dec ecx + jne NEAR $L$reduction_loopx + + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +__rsaz_512_subtract: + + mov QWORD[rdi],r8 + mov QWORD[8+rdi],r9 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + mov QWORD[32+rdi],r12 + mov QWORD[40+rdi],r13 + mov QWORD[48+rdi],r14 + mov QWORD[56+rdi],r15 + + mov r8,QWORD[rbp] + mov r9,QWORD[8+rbp] + neg r8 + not r9 + and r8,rcx + mov r10,QWORD[16+rbp] + and r9,rcx + not r10 + mov r11,QWORD[24+rbp] + and r10,rcx + not r11 + mov r12,QWORD[32+rbp] + and r11,rcx + not r12 + mov r13,QWORD[40+rbp] + and r12,rcx + not r13 + mov r14,QWORD[48+rbp] + and r13,rcx + not r14 + mov r15,QWORD[56+rbp] + and r14,rcx + not r15 + and r15,rcx + + add r8,QWORD[rdi] + adc r9,QWORD[8+rdi] + adc r10,QWORD[16+rdi] + adc r11,QWORD[24+rdi] + adc r12,QWORD[32+rdi] + adc r13,QWORD[40+rdi] + adc r14,QWORD[48+rdi] + adc r15,QWORD[56+rdi] + + mov QWORD[rdi],r8 + mov QWORD[8+rdi],r9 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + mov QWORD[32+rdi],r12 + mov QWORD[40+rdi],r13 + mov QWORD[48+rdi],r14 + mov QWORD[56+rdi],r15 + + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +__rsaz_512_mul: + + lea rdi,[8+rsp] + + mov rax,QWORD[rsi] + mul rbx + mov QWORD[rdi],rax + mov rax,QWORD[8+rsi] + mov r8,rdx + + mul rbx + add r8,rax + mov rax,QWORD[16+rsi] + mov r9,rdx + adc r9,0 + + mul rbx + add r9,rax + mov rax,QWORD[24+rsi] + mov r10,rdx + adc r10,0 + + mul rbx + add r10,rax + mov rax,QWORD[32+rsi] + mov r11,rdx + adc r11,0 + + mul rbx + add r11,rax + mov rax,QWORD[40+rsi] + mov r12,rdx + adc r12,0 + + mul rbx + add r12,rax + mov rax,QWORD[48+rsi] + mov r13,rdx + adc r13,0 + + mul rbx + add r13,rax + mov rax,QWORD[56+rsi] + mov r14,rdx + adc r14,0 + + mul rbx + add r14,rax + mov rax,QWORD[rsi] + mov r15,rdx + adc r15,0 + + lea rbp,[8+rbp] + lea rdi,[8+rdi] + + mov ecx,7 + jmp NEAR $L$oop_mul + +ALIGN 32 +$L$oop_mul: + mov rbx,QWORD[rbp] + mul rbx + add r8,rax + mov rax,QWORD[8+rsi] + mov QWORD[rdi],r8 + mov r8,rdx + adc r8,0 + + mul rbx + add r9,rax + mov rax,QWORD[16+rsi] + adc rdx,0 + add r8,r9 + mov r9,rdx + adc r9,0 + + mul rbx + add r10,rax + mov rax,QWORD[24+rsi] + adc rdx,0 + add r9,r10 + mov r10,rdx + adc r10,0 + + mul rbx + add r11,rax + mov rax,QWORD[32+rsi] + adc rdx,0 + add r10,r11 + mov r11,rdx + adc r11,0 + + mul rbx + add r12,rax + mov rax,QWORD[40+rsi] + adc rdx,0 + add r11,r12 + mov r12,rdx + adc r12,0 + + mul rbx + add r13,rax + mov rax,QWORD[48+rsi] + adc rdx,0 + add r12,r13 + mov r13,rdx + adc r13,0 + + mul rbx + add r14,rax + mov rax,QWORD[56+rsi] + adc rdx,0 + add r13,r14 + mov r14,rdx + lea rbp,[8+rbp] + adc r14,0 + + mul rbx + add r15,rax + mov rax,QWORD[rsi] + adc rdx,0 + add r14,r15 + mov r15,rdx + adc r15,0 + + lea rdi,[8+rdi] + + dec ecx + jnz NEAR $L$oop_mul + + mov QWORD[rdi],r8 + mov QWORD[8+rdi],r9 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + mov QWORD[32+rdi],r12 + mov QWORD[40+rdi],r13 + mov QWORD[48+rdi],r14 + mov QWORD[56+rdi],r15 + + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +__rsaz_512_mulx: + + mulx r8,rbx,QWORD[rsi] + mov rcx,-6 + + mulx r9,rax,QWORD[8+rsi] + mov QWORD[8+rsp],rbx + + mulx r10,rbx,QWORD[16+rsi] + adc r8,rax + + mulx r11,rax,QWORD[24+rsi] + adc r9,rbx + + mulx r12,rbx,QWORD[32+rsi] + adc r10,rax + + mulx r13,rax,QWORD[40+rsi] + adc r11,rbx + + mulx r14,rbx,QWORD[48+rsi] + adc r12,rax + + mulx r15,rax,QWORD[56+rsi] + mov rdx,QWORD[8+rbp] + adc r13,rbx + adc r14,rax + adc r15,0 + + xor rdi,rdi + jmp NEAR $L$oop_mulx + +ALIGN 32 +$L$oop_mulx: + mov rbx,r8 + mulx r8,rax,QWORD[rsi] + adcx rbx,rax + adox r8,r9 + + mulx r9,rax,QWORD[8+rsi] + adcx r8,rax + adox r9,r10 + + mulx r10,rax,QWORD[16+rsi] + adcx r9,rax + adox r10,r11 + + mulx r11,rax,QWORD[24+rsi] + adcx r10,rax + adox r11,r12 + +DB 0x3e,0xc4,0x62,0xfb,0xf6,0xa6,0x20,0x00,0x00,0x00 + adcx r11,rax + adox r12,r13 + + mulx r13,rax,QWORD[40+rsi] + adcx r12,rax + adox r13,r14 + + mulx r14,rax,QWORD[48+rsi] + adcx r13,rax + adox r14,r15 + + mulx r15,rax,QWORD[56+rsi] + mov rdx,QWORD[64+rcx*8+rbp] + mov QWORD[((8+64-8))+rcx*8+rsp],rbx + adcx r14,rax + adox r15,rdi + adcx r15,rdi + + inc rcx + jnz NEAR $L$oop_mulx + + mov rbx,r8 + mulx r8,rax,QWORD[rsi] + adcx rbx,rax + adox r8,r9 + +DB 0xc4,0x62,0xfb,0xf6,0x8e,0x08,0x00,0x00,0x00 + adcx r8,rax + adox r9,r10 + +DB 0xc4,0x62,0xfb,0xf6,0x96,0x10,0x00,0x00,0x00 + adcx r9,rax + adox r10,r11 + + mulx r11,rax,QWORD[24+rsi] + adcx r10,rax + adox r11,r12 + + mulx r12,rax,QWORD[32+rsi] + adcx r11,rax + adox r12,r13 + + mulx r13,rax,QWORD[40+rsi] + adcx r12,rax + adox r13,r14 + +DB 0xc4,0x62,0xfb,0xf6,0xb6,0x30,0x00,0x00,0x00 + adcx r13,rax + adox r14,r15 + +DB 0xc4,0x62,0xfb,0xf6,0xbe,0x38,0x00,0x00,0x00 + adcx r14,rax + adox r15,rdi + adcx r15,rdi + + mov QWORD[((8+64-8))+rsp],rbx + mov QWORD[((8+64))+rsp],r8 + mov QWORD[((8+64+8))+rsp],r9 + mov QWORD[((8+64+16))+rsp],r10 + mov QWORD[((8+64+24))+rsp],r11 + mov QWORD[((8+64+32))+rsp],r12 + mov QWORD[((8+64+40))+rsp],r13 + mov QWORD[((8+64+48))+rsp],r14 + mov QWORD[((8+64+56))+rsp],r15 + + DB 0F3h,0C3h ;repret + + +global rsaz_512_scatter4 + +ALIGN 16 +rsaz_512_scatter4: + + lea rcx,[r8*8+rcx] + mov r9d,8 + jmp NEAR $L$oop_scatter +ALIGN 16 +$L$oop_scatter: + mov rax,QWORD[rdx] + lea rdx,[8+rdx] + mov QWORD[rcx],rax + lea rcx,[128+rcx] + dec r9d + jnz NEAR $L$oop_scatter + DB 0F3h,0C3h ;repret + + + +global rsaz_512_gather4 + +ALIGN 16 +rsaz_512_gather4: + +$L$SEH_begin_rsaz_512_gather4: +DB 0x48,0x81,0xec,0xa8,0x00,0x00,0x00 +DB 0x0f,0x29,0x34,0x24 +DB 0x0f,0x29,0x7c,0x24,0x10 +DB 0x44,0x0f,0x29,0x44,0x24,0x20 +DB 0x44,0x0f,0x29,0x4c,0x24,0x30 +DB 0x44,0x0f,0x29,0x54,0x24,0x40 +DB 0x44,0x0f,0x29,0x5c,0x24,0x50 +DB 0x44,0x0f,0x29,0x64,0x24,0x60 +DB 0x44,0x0f,0x29,0x6c,0x24,0x70 +DB 0x44,0x0f,0x29,0xb4,0x24,0x80,0,0,0 +DB 0x44,0x0f,0x29,0xbc,0x24,0x90,0,0,0 + movd xmm8,r8d + movdqa xmm1,XMMWORD[(($L$inc+16))] + movdqa xmm0,XMMWORD[$L$inc] + + pshufd xmm8,xmm8,0 + movdqa xmm7,xmm1 + movdqa xmm2,xmm1 + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm8 + movdqa xmm3,xmm7 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm8 + movdqa xmm4,xmm7 + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm8 + movdqa xmm5,xmm7 + paddd xmm4,xmm3 + pcmpeqd xmm3,xmm8 + movdqa xmm6,xmm7 + paddd xmm5,xmm4 + pcmpeqd xmm4,xmm8 + paddd xmm6,xmm5 + pcmpeqd xmm5,xmm8 + paddd xmm7,xmm6 + pcmpeqd xmm6,xmm8 + pcmpeqd xmm7,xmm8 + mov r9d,8 + jmp NEAR $L$oop_gather +ALIGN 16 +$L$oop_gather: + movdqa xmm8,XMMWORD[rdx] + movdqa xmm9,XMMWORD[16+rdx] + movdqa xmm10,XMMWORD[32+rdx] + movdqa xmm11,XMMWORD[48+rdx] + pand xmm8,xmm0 + movdqa xmm12,XMMWORD[64+rdx] + pand xmm9,xmm1 + movdqa xmm13,XMMWORD[80+rdx] + pand xmm10,xmm2 + movdqa xmm14,XMMWORD[96+rdx] + pand xmm11,xmm3 + movdqa xmm15,XMMWORD[112+rdx] + lea rdx,[128+rdx] + pand xmm12,xmm4 + pand xmm13,xmm5 + pand xmm14,xmm6 + pand xmm15,xmm7 + por xmm8,xmm10 + por xmm9,xmm11 + por xmm8,xmm12 + por xmm9,xmm13 + por xmm8,xmm14 + por xmm9,xmm15 + + por xmm8,xmm9 + pshufd xmm9,xmm8,0x4e + por xmm8,xmm9 + movq QWORD[rcx],xmm8 + lea rcx,[8+rcx] + dec r9d + jnz NEAR $L$oop_gather + movaps xmm6,XMMWORD[rsp] + movaps xmm7,XMMWORD[16+rsp] + movaps xmm8,XMMWORD[32+rsp] + movaps xmm9,XMMWORD[48+rsp] + movaps xmm10,XMMWORD[64+rsp] + movaps xmm11,XMMWORD[80+rsp] + movaps xmm12,XMMWORD[96+rsp] + movaps xmm13,XMMWORD[112+rsp] + movaps xmm14,XMMWORD[128+rsp] + movaps xmm15,XMMWORD[144+rsp] + add rsp,0xa8 + DB 0F3h,0C3h ;repret +$L$SEH_end_rsaz_512_gather4: + + + +ALIGN 64 +$L$inc: + DD 0,0,1,1 + DD 2,2,2,2 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + lea rax,[((128+24+48))+rax] + + lea rbx,[$L$mul_gather4_epilogue] + cmp rbx,r10 + jne NEAR $L$se_not_in_mul_gather4 + + lea rax,[176+rax] + + lea rsi,[((-48-168))+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + +$L$se_not_in_mul_gather4: + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_rsaz_512_sqr wrt ..imagebase + DD $L$SEH_end_rsaz_512_sqr wrt ..imagebase + DD $L$SEH_info_rsaz_512_sqr wrt ..imagebase + + DD $L$SEH_begin_rsaz_512_mul wrt ..imagebase + DD $L$SEH_end_rsaz_512_mul wrt ..imagebase + DD $L$SEH_info_rsaz_512_mul wrt ..imagebase + + DD $L$SEH_begin_rsaz_512_mul_gather4 wrt ..imagebase + DD $L$SEH_end_rsaz_512_mul_gather4 wrt ..imagebase + DD $L$SEH_info_rsaz_512_mul_gather4 wrt ..imagebase + + DD $L$SEH_begin_rsaz_512_mul_scatter4 wrt ..imagebase + DD $L$SEH_end_rsaz_512_mul_scatter4 wrt ..imagebase + DD $L$SEH_info_rsaz_512_mul_scatter4 wrt ..imagebase + + DD $L$SEH_begin_rsaz_512_mul_by_one wrt ..imagebase + DD $L$SEH_end_rsaz_512_mul_by_one wrt ..imagebase + DD $L$SEH_info_rsaz_512_mul_by_one wrt ..imagebase + + DD $L$SEH_begin_rsaz_512_gather4 wrt ..imagebase + DD $L$SEH_end_rsaz_512_gather4 wrt ..imagebase + DD $L$SEH_info_rsaz_512_gather4 wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_rsaz_512_sqr: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$sqr_body wrt ..imagebase,$L$sqr_epilogue wrt ..imagebase +$L$SEH_info_rsaz_512_mul: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase +$L$SEH_info_rsaz_512_mul_gather4: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$mul_gather4_body wrt ..imagebase,$L$mul_gather4_epilogue wrt ..imagebase +$L$SEH_info_rsaz_512_mul_scatter4: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$mul_scatter4_body wrt ..imagebase,$L$mul_scatter4_epilogue wrt ..imagebase +$L$SEH_info_rsaz_512_mul_by_one: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$mul_by_one_body wrt ..imagebase,$L$mul_by_one_epilogue wrt ..imagebase +$L$SEH_info_rsaz_512_gather4: +DB 0x01,0x46,0x16,0x00 +DB 0x46,0xf8,0x09,0x00 +DB 0x3d,0xe8,0x08,0x00 +DB 0x34,0xd8,0x07,0x00 +DB 0x2e,0xc8,0x06,0x00 +DB 0x28,0xb8,0x05,0x00 +DB 0x22,0xa8,0x04,0x00 +DB 0x1c,0x98,0x03,0x00 +DB 0x16,0x88,0x02,0x00 +DB 0x10,0x78,0x01,0x00 +DB 0x0b,0x68,0x00,0x00 +DB 0x07,0x01,0x15,0x00 diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/bn/x86_64-gf2m.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/bn/x86_64-gf2m.asm new file mode 100644 index 0000000..8123fd1 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/bn/x86_64-gf2m.asm @@ -0,0 +1,425 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + + +ALIGN 16 +_mul_1x1: + + sub rsp,128+8 + + mov r9,-1 + lea rsi,[rax*1+rax] + shr r9,3 + lea rdi,[rax*4] + and r9,rax + lea r12,[rax*8] + sar rax,63 + lea r10,[r9*1+r9] + sar rsi,63 + lea r11,[r9*4] + and rax,rbp + sar rdi,63 + mov rdx,rax + shl rax,63 + and rsi,rbp + shr rdx,1 + mov rcx,rsi + shl rsi,62 + and rdi,rbp + shr rcx,2 + xor rax,rsi + mov rbx,rdi + shl rdi,61 + xor rdx,rcx + shr rbx,3 + xor rax,rdi + xor rdx,rbx + + mov r13,r9 + mov QWORD[rsp],0 + xor r13,r10 + mov QWORD[8+rsp],r9 + mov r14,r11 + mov QWORD[16+rsp],r10 + xor r14,r12 + mov QWORD[24+rsp],r13 + + xor r9,r11 + mov QWORD[32+rsp],r11 + xor r10,r11 + mov QWORD[40+rsp],r9 + xor r13,r11 + mov QWORD[48+rsp],r10 + xor r9,r14 + mov QWORD[56+rsp],r13 + xor r10,r14 + + mov QWORD[64+rsp],r12 + xor r13,r14 + mov QWORD[72+rsp],r9 + xor r9,r11 + mov QWORD[80+rsp],r10 + xor r10,r11 + mov QWORD[88+rsp],r13 + + xor r13,r11 + mov QWORD[96+rsp],r14 + mov rsi,r8 + mov QWORD[104+rsp],r9 + and rsi,rbp + mov QWORD[112+rsp],r10 + shr rbp,4 + mov QWORD[120+rsp],r13 + mov rdi,r8 + and rdi,rbp + shr rbp,4 + + movq xmm0,QWORD[rsi*8+rsp] + mov rsi,r8 + and rsi,rbp + shr rbp,4 + mov rcx,QWORD[rdi*8+rsp] + mov rdi,r8 + mov rbx,rcx + shl rcx,4 + and rdi,rbp + movq xmm1,QWORD[rsi*8+rsp] + shr rbx,60 + xor rax,rcx + pslldq xmm1,1 + mov rsi,r8 + shr rbp,4 + xor rdx,rbx + and rsi,rbp + shr rbp,4 + pxor xmm0,xmm1 + mov rcx,QWORD[rdi*8+rsp] + mov rdi,r8 + mov rbx,rcx + shl rcx,12 + and rdi,rbp + movq xmm1,QWORD[rsi*8+rsp] + shr rbx,52 + xor rax,rcx + pslldq xmm1,2 + mov rsi,r8 + shr rbp,4 + xor rdx,rbx + and rsi,rbp + shr rbp,4 + pxor xmm0,xmm1 + mov rcx,QWORD[rdi*8+rsp] + mov rdi,r8 + mov rbx,rcx + shl rcx,20 + and rdi,rbp + movq xmm1,QWORD[rsi*8+rsp] + shr rbx,44 + xor rax,rcx + pslldq xmm1,3 + mov rsi,r8 + shr rbp,4 + xor rdx,rbx + and rsi,rbp + shr rbp,4 + pxor xmm0,xmm1 + mov rcx,QWORD[rdi*8+rsp] + mov rdi,r8 + mov rbx,rcx + shl rcx,28 + and rdi,rbp + movq xmm1,QWORD[rsi*8+rsp] + shr rbx,36 + xor rax,rcx + pslldq xmm1,4 + mov rsi,r8 + shr rbp,4 + xor rdx,rbx + and rsi,rbp + shr rbp,4 + pxor xmm0,xmm1 + mov rcx,QWORD[rdi*8+rsp] + mov rdi,r8 + mov rbx,rcx + shl rcx,36 + and rdi,rbp + movq xmm1,QWORD[rsi*8+rsp] + shr rbx,28 + xor rax,rcx + pslldq xmm1,5 + mov rsi,r8 + shr rbp,4 + xor rdx,rbx + and rsi,rbp + shr rbp,4 + pxor xmm0,xmm1 + mov rcx,QWORD[rdi*8+rsp] + mov rdi,r8 + mov rbx,rcx + shl rcx,44 + and rdi,rbp + movq xmm1,QWORD[rsi*8+rsp] + shr rbx,20 + xor rax,rcx + pslldq xmm1,6 + mov rsi,r8 + shr rbp,4 + xor rdx,rbx + and rsi,rbp + shr rbp,4 + pxor xmm0,xmm1 + mov rcx,QWORD[rdi*8+rsp] + mov rdi,r8 + mov rbx,rcx + shl rcx,52 + and rdi,rbp + movq xmm1,QWORD[rsi*8+rsp] + shr rbx,12 + xor rax,rcx + pslldq xmm1,7 + mov rsi,r8 + shr rbp,4 + xor rdx,rbx + and rsi,rbp + shr rbp,4 + pxor xmm0,xmm1 + mov rcx,QWORD[rdi*8+rsp] + mov rbx,rcx + shl rcx,60 +DB 102,72,15,126,198 + shr rbx,4 + xor rax,rcx + psrldq xmm0,8 + xor rdx,rbx +DB 102,72,15,126,199 + xor rax,rsi + xor rdx,rdi + + add rsp,128+8 + + DB 0F3h,0C3h ;repret +$L$end_mul_1x1: + + +EXTERN OPENSSL_ia32cap_P +global bn_GF2m_mul_2x2 + +ALIGN 16 +bn_GF2m_mul_2x2: + + mov rax,rsp + mov r10,QWORD[OPENSSL_ia32cap_P] + bt r10,33 + jnc NEAR $L$vanilla_mul_2x2 + +DB 102,72,15,110,194 +DB 102,73,15,110,201 +DB 102,73,15,110,208 + movq xmm3,QWORD[40+rsp] + movdqa xmm4,xmm0 + movdqa xmm5,xmm1 +DB 102,15,58,68,193,0 + pxor xmm4,xmm2 + pxor xmm5,xmm3 +DB 102,15,58,68,211,0 +DB 102,15,58,68,229,0 + xorps xmm4,xmm0 + xorps xmm4,xmm2 + movdqa xmm5,xmm4 + pslldq xmm4,8 + psrldq xmm5,8 + pxor xmm2,xmm4 + pxor xmm0,xmm5 + movdqu XMMWORD[rcx],xmm2 + movdqu XMMWORD[16+rcx],xmm0 + DB 0F3h,0C3h ;repret + +ALIGN 16 +$L$vanilla_mul_2x2: + lea rsp,[((-136))+rsp] + + mov r10,QWORD[176+rsp] + mov QWORD[120+rsp],rdi + mov QWORD[128+rsp],rsi + mov QWORD[80+rsp],r14 + + mov QWORD[88+rsp],r13 + + mov QWORD[96+rsp],r12 + + mov QWORD[104+rsp],rbp + + mov QWORD[112+rsp],rbx + +$L$body_mul_2x2: + mov QWORD[32+rsp],rcx + mov QWORD[40+rsp],rdx + mov QWORD[48+rsp],r8 + mov QWORD[56+rsp],r9 + mov QWORD[64+rsp],r10 + + mov r8,0xf + mov rax,rdx + mov rbp,r9 + call _mul_1x1 + mov QWORD[16+rsp],rax + mov QWORD[24+rsp],rdx + + mov rax,QWORD[48+rsp] + mov rbp,QWORD[64+rsp] + call _mul_1x1 + mov QWORD[rsp],rax + mov QWORD[8+rsp],rdx + + mov rax,QWORD[40+rsp] + mov rbp,QWORD[56+rsp] + xor rax,QWORD[48+rsp] + xor rbp,QWORD[64+rsp] + call _mul_1x1 + mov rbx,QWORD[rsp] + mov rcx,QWORD[8+rsp] + mov rdi,QWORD[16+rsp] + mov rsi,QWORD[24+rsp] + mov rbp,QWORD[32+rsp] + + xor rax,rdx + xor rdx,rcx + xor rax,rbx + mov QWORD[rbp],rbx + xor rdx,rdi + mov QWORD[24+rbp],rsi + xor rax,rsi + xor rdx,rsi + xor rax,rdx + mov QWORD[16+rbp],rdx + mov QWORD[8+rbp],rax + + mov r14,QWORD[80+rsp] + + mov r13,QWORD[88+rsp] + + mov r12,QWORD[96+rsp] + + mov rbp,QWORD[104+rsp] + + mov rbx,QWORD[112+rsp] + + mov rdi,QWORD[120+rsp] + mov rsi,QWORD[128+rsp] + lea rsp,[136+rsp] + +$L$epilogue_mul_2x2: + DB 0F3h,0C3h ;repret +$L$end_mul_2x2: + + +DB 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105 +DB 99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54 +DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 +DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 +DB 111,114,103,62,0 +ALIGN 16 +EXTERN __imp_RtlVirtualUnwind + + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + lea r10,[$L$body_mul_2x2] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + lea r10,[$L$epilogue_mul_2x2] + cmp rbx,r10 + jae NEAR $L$in_prologue + + mov r14,QWORD[80+rax] + mov r13,QWORD[88+rax] + mov r12,QWORD[96+rax] + mov rbp,QWORD[104+rax] + mov rbx,QWORD[112+rax] + mov rdi,QWORD[120+rax] + mov rsi,QWORD[128+rax] + + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + + lea rax,[136+rax] + +$L$in_prologue: + mov QWORD[152+r8],rax + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD _mul_1x1 wrt ..imagebase + DD $L$end_mul_1x1 wrt ..imagebase + DD $L$SEH_info_1x1 wrt ..imagebase + + DD $L$vanilla_mul_2x2 wrt ..imagebase + DD $L$end_mul_2x2 wrt ..imagebase + DD $L$SEH_info_2x2 wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_1x1: +DB 0x01,0x07,0x02,0x00 +DB 0x07,0x01,0x11,0x00 +$L$SEH_info_2x2: +DB 9,0,0,0 + DD se_handler wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/bn/x86_64-mont.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/bn/x86_64-mont.asm new file mode 100644 index 0000000..81c2058 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/bn/x86_64-mont.asm @@ -0,0 +1,1472 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +EXTERN OPENSSL_ia32cap_P + +global bn_mul_mont + +ALIGN 16 +bn_mul_mont: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_bn_mul_mont: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov r9d,r9d + mov rax,rsp + + test r9d,3 + jnz NEAR $L$mul_enter + cmp r9d,8 + jb NEAR $L$mul_enter + mov r11d,DWORD[((OPENSSL_ia32cap_P+8))] + cmp rdx,rsi + jne NEAR $L$mul4x_enter + test r9d,7 + jz NEAR $L$sqr8x_enter + jmp NEAR $L$mul4x_enter + +ALIGN 16 +$L$mul_enter: + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + + neg r9 + mov r11,rsp + lea r10,[((-16))+r9*8+rsp] + neg r9 + and r10,-1024 + + + + + + + + + + sub r11,r10 + and r11,-4096 + lea rsp,[r11*1+r10] + mov r11,QWORD[rsp] + cmp rsp,r10 + ja NEAR $L$mul_page_walk + jmp NEAR $L$mul_page_walk_done + +ALIGN 16 +$L$mul_page_walk: + lea rsp,[((-4096))+rsp] + mov r11,QWORD[rsp] + cmp rsp,r10 + ja NEAR $L$mul_page_walk +$L$mul_page_walk_done: + + mov QWORD[8+r9*8+rsp],rax + +$L$mul_body: + mov r12,rdx + mov r8,QWORD[r8] + mov rbx,QWORD[r12] + mov rax,QWORD[rsi] + + xor r14,r14 + xor r15,r15 + + mov rbp,r8 + mul rbx + mov r10,rax + mov rax,QWORD[rcx] + + imul rbp,r10 + mov r11,rdx + + mul rbp + add r10,rax + mov rax,QWORD[8+rsi] + adc rdx,0 + mov r13,rdx + + lea r15,[1+r15] + jmp NEAR $L$1st_enter + +ALIGN 16 +$L$1st: + add r13,rax + mov rax,QWORD[r15*8+rsi] + adc rdx,0 + add r13,r11 + mov r11,r10 + adc rdx,0 + mov QWORD[((-16))+r15*8+rsp],r13 + mov r13,rdx + +$L$1st_enter: + mul rbx + add r11,rax + mov rax,QWORD[r15*8+rcx] + adc rdx,0 + lea r15,[1+r15] + mov r10,rdx + + mul rbp + cmp r15,r9 + jne NEAR $L$1st + + add r13,rax + mov rax,QWORD[rsi] + adc rdx,0 + add r13,r11 + adc rdx,0 + mov QWORD[((-16))+r15*8+rsp],r13 + mov r13,rdx + mov r11,r10 + + xor rdx,rdx + add r13,r11 + adc rdx,0 + mov QWORD[((-8))+r9*8+rsp],r13 + mov QWORD[r9*8+rsp],rdx + + lea r14,[1+r14] + jmp NEAR $L$outer +ALIGN 16 +$L$outer: + mov rbx,QWORD[r14*8+r12] + xor r15,r15 + mov rbp,r8 + mov r10,QWORD[rsp] + mul rbx + add r10,rax + mov rax,QWORD[rcx] + adc rdx,0 + + imul rbp,r10 + mov r11,rdx + + mul rbp + add r10,rax + mov rax,QWORD[8+rsi] + adc rdx,0 + mov r10,QWORD[8+rsp] + mov r13,rdx + + lea r15,[1+r15] + jmp NEAR $L$inner_enter + +ALIGN 16 +$L$inner: + add r13,rax + mov rax,QWORD[r15*8+rsi] + adc rdx,0 + add r13,r10 + mov r10,QWORD[r15*8+rsp] + adc rdx,0 + mov QWORD[((-16))+r15*8+rsp],r13 + mov r13,rdx + +$L$inner_enter: + mul rbx + add r11,rax + mov rax,QWORD[r15*8+rcx] + adc rdx,0 + add r10,r11 + mov r11,rdx + adc r11,0 + lea r15,[1+r15] + + mul rbp + cmp r15,r9 + jne NEAR $L$inner + + add r13,rax + mov rax,QWORD[rsi] + adc rdx,0 + add r13,r10 + mov r10,QWORD[r15*8+rsp] + adc rdx,0 + mov QWORD[((-16))+r15*8+rsp],r13 + mov r13,rdx + + xor rdx,rdx + add r13,r11 + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-8))+r9*8+rsp],r13 + mov QWORD[r9*8+rsp],rdx + + lea r14,[1+r14] + cmp r14,r9 + jb NEAR $L$outer + + xor r14,r14 + mov rax,QWORD[rsp] + mov r15,r9 + +ALIGN 16 +$L$sub: sbb rax,QWORD[r14*8+rcx] + mov QWORD[r14*8+rdi],rax + mov rax,QWORD[8+r14*8+rsp] + lea r14,[1+r14] + dec r15 + jnz NEAR $L$sub + + sbb rax,0 + mov rbx,-1 + xor rbx,rax + xor r14,r14 + mov r15,r9 + +$L$copy: + mov rcx,QWORD[r14*8+rdi] + mov rdx,QWORD[r14*8+rsp] + and rcx,rbx + and rdx,rax + mov QWORD[r14*8+rsp],r9 + or rdx,rcx + mov QWORD[r14*8+rdi],rdx + lea r14,[1+r14] + sub r15,1 + jnz NEAR $L$copy + + mov rsi,QWORD[8+r9*8+rsp] + + mov rax,1 + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$mul_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_bn_mul_mont: + +ALIGN 16 +bn_mul4x_mont: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_bn_mul4x_mont: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov r9d,r9d + mov rax,rsp + +$L$mul4x_enter: + and r11d,0x80100 + cmp r11d,0x80100 + je NEAR $L$mulx4x_enter + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + + neg r9 + mov r11,rsp + lea r10,[((-32))+r9*8+rsp] + neg r9 + and r10,-1024 + + sub r11,r10 + and r11,-4096 + lea rsp,[r11*1+r10] + mov r11,QWORD[rsp] + cmp rsp,r10 + ja NEAR $L$mul4x_page_walk + jmp NEAR $L$mul4x_page_walk_done + +$L$mul4x_page_walk: + lea rsp,[((-4096))+rsp] + mov r11,QWORD[rsp] + cmp rsp,r10 + ja NEAR $L$mul4x_page_walk +$L$mul4x_page_walk_done: + + mov QWORD[8+r9*8+rsp],rax + +$L$mul4x_body: + mov QWORD[16+r9*8+rsp],rdi + mov r12,rdx + mov r8,QWORD[r8] + mov rbx,QWORD[r12] + mov rax,QWORD[rsi] + + xor r14,r14 + xor r15,r15 + + mov rbp,r8 + mul rbx + mov r10,rax + mov rax,QWORD[rcx] + + imul rbp,r10 + mov r11,rdx + + mul rbp + add r10,rax + mov rax,QWORD[8+rsi] + adc rdx,0 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[8+rcx] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[16+rsi] + adc rdx,0 + add rdi,r11 + lea r15,[4+r15] + adc rdx,0 + mov QWORD[rsp],rdi + mov r13,rdx + jmp NEAR $L$1st4x +ALIGN 16 +$L$1st4x: + mul rbx + add r10,rax + mov rax,QWORD[((-16))+r15*8+rcx] + adc rdx,0 + mov r11,rdx + + mul rbp + add r13,rax + mov rax,QWORD[((-8))+r15*8+rsi] + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-24))+r15*8+rsp],r13 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[((-8))+r15*8+rcx] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[r15*8+rsi] + adc rdx,0 + add rdi,r11 + adc rdx,0 + mov QWORD[((-16))+r15*8+rsp],rdi + mov r13,rdx + + mul rbx + add r10,rax + mov rax,QWORD[r15*8+rcx] + adc rdx,0 + mov r11,rdx + + mul rbp + add r13,rax + mov rax,QWORD[8+r15*8+rsi] + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-8))+r15*8+rsp],r13 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[8+r15*8+rcx] + adc rdx,0 + lea r15,[4+r15] + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[((-16))+r15*8+rsi] + adc rdx,0 + add rdi,r11 + adc rdx,0 + mov QWORD[((-32))+r15*8+rsp],rdi + mov r13,rdx + cmp r15,r9 + jb NEAR $L$1st4x + + mul rbx + add r10,rax + mov rax,QWORD[((-16))+r15*8+rcx] + adc rdx,0 + mov r11,rdx + + mul rbp + add r13,rax + mov rax,QWORD[((-8))+r15*8+rsi] + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-24))+r15*8+rsp],r13 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[((-8))+r15*8+rcx] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[rsi] + adc rdx,0 + add rdi,r11 + adc rdx,0 + mov QWORD[((-16))+r15*8+rsp],rdi + mov r13,rdx + + xor rdi,rdi + add r13,r10 + adc rdi,0 + mov QWORD[((-8))+r15*8+rsp],r13 + mov QWORD[r15*8+rsp],rdi + + lea r14,[1+r14] +ALIGN 4 +$L$outer4x: + mov rbx,QWORD[r14*8+r12] + xor r15,r15 + mov r10,QWORD[rsp] + mov rbp,r8 + mul rbx + add r10,rax + mov rax,QWORD[rcx] + adc rdx,0 + + imul rbp,r10 + mov r11,rdx + + mul rbp + add r10,rax + mov rax,QWORD[8+rsi] + adc rdx,0 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[8+rcx] + adc rdx,0 + add r11,QWORD[8+rsp] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[16+rsi] + adc rdx,0 + add rdi,r11 + lea r15,[4+r15] + adc rdx,0 + mov QWORD[rsp],rdi + mov r13,rdx + jmp NEAR $L$inner4x +ALIGN 16 +$L$inner4x: + mul rbx + add r10,rax + mov rax,QWORD[((-16))+r15*8+rcx] + adc rdx,0 + add r10,QWORD[((-16))+r15*8+rsp] + adc rdx,0 + mov r11,rdx + + mul rbp + add r13,rax + mov rax,QWORD[((-8))+r15*8+rsi] + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-24))+r15*8+rsp],r13 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[((-8))+r15*8+rcx] + adc rdx,0 + add r11,QWORD[((-8))+r15*8+rsp] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[r15*8+rsi] + adc rdx,0 + add rdi,r11 + adc rdx,0 + mov QWORD[((-16))+r15*8+rsp],rdi + mov r13,rdx + + mul rbx + add r10,rax + mov rax,QWORD[r15*8+rcx] + adc rdx,0 + add r10,QWORD[r15*8+rsp] + adc rdx,0 + mov r11,rdx + + mul rbp + add r13,rax + mov rax,QWORD[8+r15*8+rsi] + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-8))+r15*8+rsp],r13 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[8+r15*8+rcx] + adc rdx,0 + add r11,QWORD[8+r15*8+rsp] + adc rdx,0 + lea r15,[4+r15] + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[((-16))+r15*8+rsi] + adc rdx,0 + add rdi,r11 + adc rdx,0 + mov QWORD[((-32))+r15*8+rsp],rdi + mov r13,rdx + cmp r15,r9 + jb NEAR $L$inner4x + + mul rbx + add r10,rax + mov rax,QWORD[((-16))+r15*8+rcx] + adc rdx,0 + add r10,QWORD[((-16))+r15*8+rsp] + adc rdx,0 + mov r11,rdx + + mul rbp + add r13,rax + mov rax,QWORD[((-8))+r15*8+rsi] + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-24))+r15*8+rsp],r13 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[((-8))+r15*8+rcx] + adc rdx,0 + add r11,QWORD[((-8))+r15*8+rsp] + adc rdx,0 + lea r14,[1+r14] + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[rsi] + adc rdx,0 + add rdi,r11 + adc rdx,0 + mov QWORD[((-16))+r15*8+rsp],rdi + mov r13,rdx + + xor rdi,rdi + add r13,r10 + adc rdi,0 + add r13,QWORD[r9*8+rsp] + adc rdi,0 + mov QWORD[((-8))+r15*8+rsp],r13 + mov QWORD[r15*8+rsp],rdi + + cmp r14,r9 + jb NEAR $L$outer4x + mov rdi,QWORD[16+r9*8+rsp] + lea r15,[((-4))+r9] + mov rax,QWORD[rsp] + mov rdx,QWORD[8+rsp] + shr r15,2 + lea rsi,[rsp] + xor r14,r14 + + sub rax,QWORD[rcx] + mov rbx,QWORD[16+rsi] + mov rbp,QWORD[24+rsi] + sbb rdx,QWORD[8+rcx] + +$L$sub4x: + mov QWORD[r14*8+rdi],rax + mov QWORD[8+r14*8+rdi],rdx + sbb rbx,QWORD[16+r14*8+rcx] + mov rax,QWORD[32+r14*8+rsi] + mov rdx,QWORD[40+r14*8+rsi] + sbb rbp,QWORD[24+r14*8+rcx] + mov QWORD[16+r14*8+rdi],rbx + mov QWORD[24+r14*8+rdi],rbp + sbb rax,QWORD[32+r14*8+rcx] + mov rbx,QWORD[48+r14*8+rsi] + mov rbp,QWORD[56+r14*8+rsi] + sbb rdx,QWORD[40+r14*8+rcx] + lea r14,[4+r14] + dec r15 + jnz NEAR $L$sub4x + + mov QWORD[r14*8+rdi],rax + mov rax,QWORD[32+r14*8+rsi] + sbb rbx,QWORD[16+r14*8+rcx] + mov QWORD[8+r14*8+rdi],rdx + sbb rbp,QWORD[24+r14*8+rcx] + mov QWORD[16+r14*8+rdi],rbx + + sbb rax,0 + mov QWORD[24+r14*8+rdi],rbp + pxor xmm0,xmm0 +DB 102,72,15,110,224 + pcmpeqd xmm5,xmm5 + pshufd xmm4,xmm4,0 + mov r15,r9 + pxor xmm5,xmm4 + shr r15,2 + xor eax,eax + + jmp NEAR $L$copy4x +ALIGN 16 +$L$copy4x: + movdqa xmm1,XMMWORD[rax*1+rsp] + movdqu xmm2,XMMWORD[rax*1+rdi] + pand xmm1,xmm4 + pand xmm2,xmm5 + movdqa xmm3,XMMWORD[16+rax*1+rsp] + movdqa XMMWORD[rax*1+rsp],xmm0 + por xmm1,xmm2 + movdqu xmm2,XMMWORD[16+rax*1+rdi] + movdqu XMMWORD[rax*1+rdi],xmm1 + pand xmm3,xmm4 + pand xmm2,xmm5 + movdqa XMMWORD[16+rax*1+rsp],xmm0 + por xmm3,xmm2 + movdqu XMMWORD[16+rax*1+rdi],xmm3 + lea rax,[32+rax] + dec r15 + jnz NEAR $L$copy4x + mov rsi,QWORD[8+r9*8+rsp] + + mov rax,1 + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$mul4x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_bn_mul4x_mont: +EXTERN bn_sqrx8x_internal +EXTERN bn_sqr8x_internal + + +ALIGN 32 +bn_sqr8x_mont: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_bn_sqr8x_mont: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov rax,rsp + +$L$sqr8x_enter: + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$sqr8x_prologue: + + mov r10d,r9d + shl r9d,3 + shl r10,3+2 + neg r9 + + + + + + + lea r11,[((-64))+r9*2+rsp] + mov rbp,rsp + mov r8,QWORD[r8] + sub r11,rsi + and r11,4095 + cmp r10,r11 + jb NEAR $L$sqr8x_sp_alt + sub rbp,r11 + lea rbp,[((-64))+r9*2+rbp] + jmp NEAR $L$sqr8x_sp_done + +ALIGN 32 +$L$sqr8x_sp_alt: + lea r10,[((4096-64))+r9*2] + lea rbp,[((-64))+r9*2+rbp] + sub r11,r10 + mov r10,0 + cmovc r11,r10 + sub rbp,r11 +$L$sqr8x_sp_done: + and rbp,-64 + mov r11,rsp + sub r11,rbp + and r11,-4096 + lea rsp,[rbp*1+r11] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$sqr8x_page_walk + jmp NEAR $L$sqr8x_page_walk_done + +ALIGN 16 +$L$sqr8x_page_walk: + lea rsp,[((-4096))+rsp] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$sqr8x_page_walk +$L$sqr8x_page_walk_done: + + mov r10,r9 + neg r9 + + mov QWORD[32+rsp],r8 + mov QWORD[40+rsp],rax + +$L$sqr8x_body: + +DB 102,72,15,110,209 + pxor xmm0,xmm0 +DB 102,72,15,110,207 +DB 102,73,15,110,218 + mov eax,DWORD[((OPENSSL_ia32cap_P+8))] + and eax,0x80100 + cmp eax,0x80100 + jne NEAR $L$sqr8x_nox + + call bn_sqrx8x_internal + + + + + lea rbx,[rcx*1+r8] + mov r9,rcx + mov rdx,rcx +DB 102,72,15,126,207 + sar rcx,3+2 + jmp NEAR $L$sqr8x_sub + +ALIGN 32 +$L$sqr8x_nox: + call bn_sqr8x_internal + + + + + lea rbx,[r9*1+rdi] + mov rcx,r9 + mov rdx,r9 +DB 102,72,15,126,207 + sar rcx,3+2 + jmp NEAR $L$sqr8x_sub + +ALIGN 32 +$L$sqr8x_sub: + mov r12,QWORD[rbx] + mov r13,QWORD[8+rbx] + mov r14,QWORD[16+rbx] + mov r15,QWORD[24+rbx] + lea rbx,[32+rbx] + sbb r12,QWORD[rbp] + sbb r13,QWORD[8+rbp] + sbb r14,QWORD[16+rbp] + sbb r15,QWORD[24+rbp] + lea rbp,[32+rbp] + mov QWORD[rdi],r12 + mov QWORD[8+rdi],r13 + mov QWORD[16+rdi],r14 + mov QWORD[24+rdi],r15 + lea rdi,[32+rdi] + inc rcx + jnz NEAR $L$sqr8x_sub + + sbb rax,0 + lea rbx,[r9*1+rbx] + lea rdi,[r9*1+rdi] + +DB 102,72,15,110,200 + pxor xmm0,xmm0 + pshufd xmm1,xmm1,0 + mov rsi,QWORD[40+rsp] + + jmp NEAR $L$sqr8x_cond_copy + +ALIGN 32 +$L$sqr8x_cond_copy: + movdqa xmm2,XMMWORD[rbx] + movdqa xmm3,XMMWORD[16+rbx] + lea rbx,[32+rbx] + movdqu xmm4,XMMWORD[rdi] + movdqu xmm5,XMMWORD[16+rdi] + lea rdi,[32+rdi] + movdqa XMMWORD[(-32)+rbx],xmm0 + movdqa XMMWORD[(-16)+rbx],xmm0 + movdqa XMMWORD[(-32)+rdx*1+rbx],xmm0 + movdqa XMMWORD[(-16)+rdx*1+rbx],xmm0 + pcmpeqd xmm0,xmm1 + pand xmm2,xmm1 + pand xmm3,xmm1 + pand xmm4,xmm0 + pand xmm5,xmm0 + pxor xmm0,xmm0 + por xmm4,xmm2 + por xmm5,xmm3 + movdqu XMMWORD[(-32)+rdi],xmm4 + movdqu XMMWORD[(-16)+rdi],xmm5 + add r9,32 + jnz NEAR $L$sqr8x_cond_copy + + mov rax,1 + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$sqr8x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_bn_sqr8x_mont: + +ALIGN 32 +bn_mulx4x_mont: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_bn_mulx4x_mont: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov rax,rsp + +$L$mulx4x_enter: + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$mulx4x_prologue: + + shl r9d,3 + xor r10,r10 + sub r10,r9 + mov r8,QWORD[r8] + lea rbp,[((-72))+r10*1+rsp] + and rbp,-128 + mov r11,rsp + sub r11,rbp + and r11,-4096 + lea rsp,[rbp*1+r11] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$mulx4x_page_walk + jmp NEAR $L$mulx4x_page_walk_done + +ALIGN 16 +$L$mulx4x_page_walk: + lea rsp,[((-4096))+rsp] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$mulx4x_page_walk +$L$mulx4x_page_walk_done: + + lea r10,[r9*1+rdx] + + + + + + + + + + + + + mov QWORD[rsp],r9 + shr r9,5 + mov QWORD[16+rsp],r10 + sub r9,1 + mov QWORD[24+rsp],r8 + mov QWORD[32+rsp],rdi + mov QWORD[40+rsp],rax + + mov QWORD[48+rsp],r9 + jmp NEAR $L$mulx4x_body + +ALIGN 32 +$L$mulx4x_body: + lea rdi,[8+rdx] + mov rdx,QWORD[rdx] + lea rbx,[((64+32))+rsp] + mov r9,rdx + + mulx rax,r8,QWORD[rsi] + mulx r14,r11,QWORD[8+rsi] + add r11,rax + mov QWORD[8+rsp],rdi + mulx r13,r12,QWORD[16+rsi] + adc r12,r14 + adc r13,0 + + mov rdi,r8 + imul r8,QWORD[24+rsp] + xor rbp,rbp + + mulx r14,rax,QWORD[24+rsi] + mov rdx,r8 + lea rsi,[32+rsi] + adcx r13,rax + adcx r14,rbp + + mulx r10,rax,QWORD[rcx] + adcx rdi,rax + adox r10,r11 + mulx r11,rax,QWORD[8+rcx] + adcx r10,rax + adox r11,r12 +DB 0xc4,0x62,0xfb,0xf6,0xa1,0x10,0x00,0x00,0x00 + mov rdi,QWORD[48+rsp] + mov QWORD[((-32))+rbx],r10 + adcx r11,rax + adox r12,r13 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov QWORD[((-24))+rbx],r11 + adcx r12,rax + adox r15,rbp + lea rcx,[32+rcx] + mov QWORD[((-16))+rbx],r12 + + jmp NEAR $L$mulx4x_1st + +ALIGN 32 +$L$mulx4x_1st: + adcx r15,rbp + mulx rax,r10,QWORD[rsi] + adcx r10,r14 + mulx r14,r11,QWORD[8+rsi] + adcx r11,rax + mulx rax,r12,QWORD[16+rsi] + adcx r12,r14 + mulx r14,r13,QWORD[24+rsi] +DB 0x67,0x67 + mov rdx,r8 + adcx r13,rax + adcx r14,rbp + lea rsi,[32+rsi] + lea rbx,[32+rbx] + + adox r10,r15 + mulx r15,rax,QWORD[rcx] + adcx r10,rax + adox r11,r15 + mulx r15,rax,QWORD[8+rcx] + adcx r11,rax + adox r12,r15 + mulx r15,rax,QWORD[16+rcx] + mov QWORD[((-40))+rbx],r10 + adcx r12,rax + mov QWORD[((-32))+rbx],r11 + adox r13,r15 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov QWORD[((-24))+rbx],r12 + adcx r13,rax + adox r15,rbp + lea rcx,[32+rcx] + mov QWORD[((-16))+rbx],r13 + + dec rdi + jnz NEAR $L$mulx4x_1st + + mov rax,QWORD[rsp] + mov rdi,QWORD[8+rsp] + adc r15,rbp + add r14,r15 + sbb r15,r15 + mov QWORD[((-8))+rbx],r14 + jmp NEAR $L$mulx4x_outer + +ALIGN 32 +$L$mulx4x_outer: + mov rdx,QWORD[rdi] + lea rdi,[8+rdi] + sub rsi,rax + mov QWORD[rbx],r15 + lea rbx,[((64+32))+rsp] + sub rcx,rax + + mulx r11,r8,QWORD[rsi] + xor ebp,ebp + mov r9,rdx + mulx r12,r14,QWORD[8+rsi] + adox r8,QWORD[((-32))+rbx] + adcx r11,r14 + mulx r13,r15,QWORD[16+rsi] + adox r11,QWORD[((-24))+rbx] + adcx r12,r15 + adox r12,QWORD[((-16))+rbx] + adcx r13,rbp + adox r13,rbp + + mov QWORD[8+rsp],rdi + mov r15,r8 + imul r8,QWORD[24+rsp] + xor ebp,ebp + + mulx r14,rax,QWORD[24+rsi] + mov rdx,r8 + adcx r13,rax + adox r13,QWORD[((-8))+rbx] + adcx r14,rbp + lea rsi,[32+rsi] + adox r14,rbp + + mulx r10,rax,QWORD[rcx] + adcx r15,rax + adox r10,r11 + mulx r11,rax,QWORD[8+rcx] + adcx r10,rax + adox r11,r12 + mulx r12,rax,QWORD[16+rcx] + mov QWORD[((-32))+rbx],r10 + adcx r11,rax + adox r12,r13 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov QWORD[((-24))+rbx],r11 + lea rcx,[32+rcx] + adcx r12,rax + adox r15,rbp + mov rdi,QWORD[48+rsp] + mov QWORD[((-16))+rbx],r12 + + jmp NEAR $L$mulx4x_inner + +ALIGN 32 +$L$mulx4x_inner: + mulx rax,r10,QWORD[rsi] + adcx r15,rbp + adox r10,r14 + mulx r14,r11,QWORD[8+rsi] + adcx r10,QWORD[rbx] + adox r11,rax + mulx rax,r12,QWORD[16+rsi] + adcx r11,QWORD[8+rbx] + adox r12,r14 + mulx r14,r13,QWORD[24+rsi] + mov rdx,r8 + adcx r12,QWORD[16+rbx] + adox r13,rax + adcx r13,QWORD[24+rbx] + adox r14,rbp + lea rsi,[32+rsi] + lea rbx,[32+rbx] + adcx r14,rbp + + adox r10,r15 + mulx r15,rax,QWORD[rcx] + adcx r10,rax + adox r11,r15 + mulx r15,rax,QWORD[8+rcx] + adcx r11,rax + adox r12,r15 + mulx r15,rax,QWORD[16+rcx] + mov QWORD[((-40))+rbx],r10 + adcx r12,rax + adox r13,r15 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov QWORD[((-32))+rbx],r11 + mov QWORD[((-24))+rbx],r12 + adcx r13,rax + adox r15,rbp + lea rcx,[32+rcx] + mov QWORD[((-16))+rbx],r13 + + dec rdi + jnz NEAR $L$mulx4x_inner + + mov rax,QWORD[rsp] + mov rdi,QWORD[8+rsp] + adc r15,rbp + sub rbp,QWORD[rbx] + adc r14,r15 + sbb r15,r15 + mov QWORD[((-8))+rbx],r14 + + cmp rdi,QWORD[16+rsp] + jne NEAR $L$mulx4x_outer + + lea rbx,[64+rsp] + sub rcx,rax + neg r15 + mov rdx,rax + shr rax,3+2 + mov rdi,QWORD[32+rsp] + jmp NEAR $L$mulx4x_sub + +ALIGN 32 +$L$mulx4x_sub: + mov r11,QWORD[rbx] + mov r12,QWORD[8+rbx] + mov r13,QWORD[16+rbx] + mov r14,QWORD[24+rbx] + lea rbx,[32+rbx] + sbb r11,QWORD[rcx] + sbb r12,QWORD[8+rcx] + sbb r13,QWORD[16+rcx] + sbb r14,QWORD[24+rcx] + lea rcx,[32+rcx] + mov QWORD[rdi],r11 + mov QWORD[8+rdi],r12 + mov QWORD[16+rdi],r13 + mov QWORD[24+rdi],r14 + lea rdi,[32+rdi] + dec rax + jnz NEAR $L$mulx4x_sub + + sbb r15,0 + lea rbx,[64+rsp] + sub rdi,rdx + +DB 102,73,15,110,207 + pxor xmm0,xmm0 + pshufd xmm1,xmm1,0 + mov rsi,QWORD[40+rsp] + + jmp NEAR $L$mulx4x_cond_copy + +ALIGN 32 +$L$mulx4x_cond_copy: + movdqa xmm2,XMMWORD[rbx] + movdqa xmm3,XMMWORD[16+rbx] + lea rbx,[32+rbx] + movdqu xmm4,XMMWORD[rdi] + movdqu xmm5,XMMWORD[16+rdi] + lea rdi,[32+rdi] + movdqa XMMWORD[(-32)+rbx],xmm0 + movdqa XMMWORD[(-16)+rbx],xmm0 + pcmpeqd xmm0,xmm1 + pand xmm2,xmm1 + pand xmm3,xmm1 + pand xmm4,xmm0 + pand xmm5,xmm0 + pxor xmm0,xmm0 + por xmm4,xmm2 + por xmm5,xmm3 + movdqu XMMWORD[(-32)+rdi],xmm4 + movdqu XMMWORD[(-16)+rdi],xmm5 + sub rdx,32 + jnz NEAR $L$mulx4x_cond_copy + + mov QWORD[rbx],rdx + + mov rax,1 + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$mulx4x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_bn_mulx4x_mont: +DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 +DB 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 +DB 54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83 +DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 +DB 115,108,46,111,114,103,62,0 +ALIGN 16 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +mul_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov r10,QWORD[192+r8] + mov rax,QWORD[8+r10*8+rax] + + jmp NEAR $L$common_pop_regs + + + +ALIGN 16 +sqr_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_pop_regs + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[8+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov rax,QWORD[40+rax] + +$L$common_pop_regs: + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_bn_mul_mont wrt ..imagebase + DD $L$SEH_end_bn_mul_mont wrt ..imagebase + DD $L$SEH_info_bn_mul_mont wrt ..imagebase + + DD $L$SEH_begin_bn_mul4x_mont wrt ..imagebase + DD $L$SEH_end_bn_mul4x_mont wrt ..imagebase + DD $L$SEH_info_bn_mul4x_mont wrt ..imagebase + + DD $L$SEH_begin_bn_sqr8x_mont wrt ..imagebase + DD $L$SEH_end_bn_sqr8x_mont wrt ..imagebase + DD $L$SEH_info_bn_sqr8x_mont wrt ..imagebase + DD $L$SEH_begin_bn_mulx4x_mont wrt ..imagebase + DD $L$SEH_end_bn_mulx4x_mont wrt ..imagebase + DD $L$SEH_info_bn_mulx4x_mont wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_bn_mul_mont: +DB 9,0,0,0 + DD mul_handler wrt ..imagebase + DD $L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase +$L$SEH_info_bn_mul4x_mont: +DB 9,0,0,0 + DD mul_handler wrt ..imagebase + DD $L$mul4x_body wrt ..imagebase,$L$mul4x_epilogue wrt ..imagebase +$L$SEH_info_bn_sqr8x_mont: +DB 9,0,0,0 + DD sqr_handler wrt ..imagebase + DD $L$sqr8x_prologue wrt ..imagebase,$L$sqr8x_body wrt ..imagebase,$L$sqr8x_epilogue wrt ..imagebase +ALIGN 8 +$L$SEH_info_bn_mulx4x_mont: +DB 9,0,0,0 + DD sqr_handler wrt ..imagebase + DD $L$mulx4x_prologue wrt ..imagebase,$L$mulx4x_body wrt ..imagebase,$L$mulx4x_epilogue wrt ..imagebase +ALIGN 8 diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/bn/x86_64-mont5.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/bn/x86_64-mont5.asm new file mode 100644 index 0000000..1186764 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/bn/x86_64-mont5.asm @@ -0,0 +1,3842 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +EXTERN OPENSSL_ia32cap_P + +global bn_mul_mont_gather5 + +ALIGN 64 +bn_mul_mont_gather5: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_bn_mul_mont_gather5: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov r9d,r9d + mov rax,rsp + + test r9d,7 + jnz NEAR $L$mul_enter + mov r11d,DWORD[((OPENSSL_ia32cap_P+8))] + jmp NEAR $L$mul4x_enter + +ALIGN 16 +$L$mul_enter: + movd xmm5,DWORD[56+rsp] + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + + neg r9 + mov r11,rsp + lea r10,[((-280))+r9*8+rsp] + neg r9 + and r10,-1024 + + + + + + + + + + sub r11,r10 + and r11,-4096 + lea rsp,[r11*1+r10] + mov r11,QWORD[rsp] + cmp rsp,r10 + ja NEAR $L$mul_page_walk + jmp NEAR $L$mul_page_walk_done + +$L$mul_page_walk: + lea rsp,[((-4096))+rsp] + mov r11,QWORD[rsp] + cmp rsp,r10 + ja NEAR $L$mul_page_walk +$L$mul_page_walk_done: + + lea r10,[$L$inc] + mov QWORD[8+r9*8+rsp],rax + +$L$mul_body: + + lea r12,[128+rdx] + movdqa xmm0,XMMWORD[r10] + movdqa xmm1,XMMWORD[16+r10] + lea r10,[((24-112))+r9*8+rsp] + and r10,-16 + + pshufd xmm5,xmm5,0 + movdqa xmm4,xmm1 + movdqa xmm2,xmm1 + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 +DB 0x67 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[112+r10],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[128+r10],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[144+r10],xmm2 + movdqa xmm2,xmm4 + + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[160+r10],xmm3 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[176+r10],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[192+r10],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[208+r10],xmm2 + movdqa xmm2,xmm4 + + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[224+r10],xmm3 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[240+r10],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[256+r10],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[272+r10],xmm2 + movdqa xmm2,xmm4 + + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[288+r10],xmm3 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[304+r10],xmm0 + + paddd xmm3,xmm2 +DB 0x67 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[320+r10],xmm1 + + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[336+r10],xmm2 + pand xmm0,XMMWORD[64+r12] + + pand xmm1,XMMWORD[80+r12] + pand xmm2,XMMWORD[96+r12] + movdqa XMMWORD[352+r10],xmm3 + pand xmm3,XMMWORD[112+r12] + por xmm0,xmm2 + por xmm1,xmm3 + movdqa xmm4,XMMWORD[((-128))+r12] + movdqa xmm5,XMMWORD[((-112))+r12] + movdqa xmm2,XMMWORD[((-96))+r12] + pand xmm4,XMMWORD[112+r10] + movdqa xmm3,XMMWORD[((-80))+r12] + pand xmm5,XMMWORD[128+r10] + por xmm0,xmm4 + pand xmm2,XMMWORD[144+r10] + por xmm1,xmm5 + pand xmm3,XMMWORD[160+r10] + por xmm0,xmm2 + por xmm1,xmm3 + movdqa xmm4,XMMWORD[((-64))+r12] + movdqa xmm5,XMMWORD[((-48))+r12] + movdqa xmm2,XMMWORD[((-32))+r12] + pand xmm4,XMMWORD[176+r10] + movdqa xmm3,XMMWORD[((-16))+r12] + pand xmm5,XMMWORD[192+r10] + por xmm0,xmm4 + pand xmm2,XMMWORD[208+r10] + por xmm1,xmm5 + pand xmm3,XMMWORD[224+r10] + por xmm0,xmm2 + por xmm1,xmm3 + movdqa xmm4,XMMWORD[r12] + movdqa xmm5,XMMWORD[16+r12] + movdqa xmm2,XMMWORD[32+r12] + pand xmm4,XMMWORD[240+r10] + movdqa xmm3,XMMWORD[48+r12] + pand xmm5,XMMWORD[256+r10] + por xmm0,xmm4 + pand xmm2,XMMWORD[272+r10] + por xmm1,xmm5 + pand xmm3,XMMWORD[288+r10] + por xmm0,xmm2 + por xmm1,xmm3 + por xmm0,xmm1 + pshufd xmm1,xmm0,0x4e + por xmm0,xmm1 + lea r12,[256+r12] +DB 102,72,15,126,195 + + mov r8,QWORD[r8] + mov rax,QWORD[rsi] + + xor r14,r14 + xor r15,r15 + + mov rbp,r8 + mul rbx + mov r10,rax + mov rax,QWORD[rcx] + + imul rbp,r10 + mov r11,rdx + + mul rbp + add r10,rax + mov rax,QWORD[8+rsi] + adc rdx,0 + mov r13,rdx + + lea r15,[1+r15] + jmp NEAR $L$1st_enter + +ALIGN 16 +$L$1st: + add r13,rax + mov rax,QWORD[r15*8+rsi] + adc rdx,0 + add r13,r11 + mov r11,r10 + adc rdx,0 + mov QWORD[((-16))+r15*8+rsp],r13 + mov r13,rdx + +$L$1st_enter: + mul rbx + add r11,rax + mov rax,QWORD[r15*8+rcx] + adc rdx,0 + lea r15,[1+r15] + mov r10,rdx + + mul rbp + cmp r15,r9 + jne NEAR $L$1st + + + add r13,rax + adc rdx,0 + add r13,r11 + adc rdx,0 + mov QWORD[((-16))+r9*8+rsp],r13 + mov r13,rdx + mov r11,r10 + + xor rdx,rdx + add r13,r11 + adc rdx,0 + mov QWORD[((-8))+r9*8+rsp],r13 + mov QWORD[r9*8+rsp],rdx + + lea r14,[1+r14] + jmp NEAR $L$outer +ALIGN 16 +$L$outer: + lea rdx,[((24+128))+r9*8+rsp] + and rdx,-16 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + movdqa xmm0,XMMWORD[((-128))+r12] + movdqa xmm1,XMMWORD[((-112))+r12] + movdqa xmm2,XMMWORD[((-96))+r12] + movdqa xmm3,XMMWORD[((-80))+r12] + pand xmm0,XMMWORD[((-128))+rdx] + pand xmm1,XMMWORD[((-112))+rdx] + por xmm4,xmm0 + pand xmm2,XMMWORD[((-96))+rdx] + por xmm5,xmm1 + pand xmm3,XMMWORD[((-80))+rdx] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[((-64))+r12] + movdqa xmm1,XMMWORD[((-48))+r12] + movdqa xmm2,XMMWORD[((-32))+r12] + movdqa xmm3,XMMWORD[((-16))+r12] + pand xmm0,XMMWORD[((-64))+rdx] + pand xmm1,XMMWORD[((-48))+rdx] + por xmm4,xmm0 + pand xmm2,XMMWORD[((-32))+rdx] + por xmm5,xmm1 + pand xmm3,XMMWORD[((-16))+rdx] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[r12] + movdqa xmm1,XMMWORD[16+r12] + movdqa xmm2,XMMWORD[32+r12] + movdqa xmm3,XMMWORD[48+r12] + pand xmm0,XMMWORD[rdx] + pand xmm1,XMMWORD[16+rdx] + por xmm4,xmm0 + pand xmm2,XMMWORD[32+rdx] + por xmm5,xmm1 + pand xmm3,XMMWORD[48+rdx] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[64+r12] + movdqa xmm1,XMMWORD[80+r12] + movdqa xmm2,XMMWORD[96+r12] + movdqa xmm3,XMMWORD[112+r12] + pand xmm0,XMMWORD[64+rdx] + pand xmm1,XMMWORD[80+rdx] + por xmm4,xmm0 + pand xmm2,XMMWORD[96+rdx] + por xmm5,xmm1 + pand xmm3,XMMWORD[112+rdx] + por xmm4,xmm2 + por xmm5,xmm3 + por xmm4,xmm5 + pshufd xmm0,xmm4,0x4e + por xmm0,xmm4 + lea r12,[256+r12] + + mov rax,QWORD[rsi] +DB 102,72,15,126,195 + + xor r15,r15 + mov rbp,r8 + mov r10,QWORD[rsp] + + mul rbx + add r10,rax + mov rax,QWORD[rcx] + adc rdx,0 + + imul rbp,r10 + mov r11,rdx + + mul rbp + add r10,rax + mov rax,QWORD[8+rsi] + adc rdx,0 + mov r10,QWORD[8+rsp] + mov r13,rdx + + lea r15,[1+r15] + jmp NEAR $L$inner_enter + +ALIGN 16 +$L$inner: + add r13,rax + mov rax,QWORD[r15*8+rsi] + adc rdx,0 + add r13,r10 + mov r10,QWORD[r15*8+rsp] + adc rdx,0 + mov QWORD[((-16))+r15*8+rsp],r13 + mov r13,rdx + +$L$inner_enter: + mul rbx + add r11,rax + mov rax,QWORD[r15*8+rcx] + adc rdx,0 + add r10,r11 + mov r11,rdx + adc r11,0 + lea r15,[1+r15] + + mul rbp + cmp r15,r9 + jne NEAR $L$inner + + add r13,rax + adc rdx,0 + add r13,r10 + mov r10,QWORD[r9*8+rsp] + adc rdx,0 + mov QWORD[((-16))+r9*8+rsp],r13 + mov r13,rdx + + xor rdx,rdx + add r13,r11 + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-8))+r9*8+rsp],r13 + mov QWORD[r9*8+rsp],rdx + + lea r14,[1+r14] + cmp r14,r9 + jb NEAR $L$outer + + xor r14,r14 + mov rax,QWORD[rsp] + lea rsi,[rsp] + mov r15,r9 + jmp NEAR $L$sub +ALIGN 16 +$L$sub: sbb rax,QWORD[r14*8+rcx] + mov QWORD[r14*8+rdi],rax + mov rax,QWORD[8+r14*8+rsi] + lea r14,[1+r14] + dec r15 + jnz NEAR $L$sub + + sbb rax,0 + mov rbx,-1 + xor rbx,rax + xor r14,r14 + mov r15,r9 + +$L$copy: + mov rcx,QWORD[r14*8+rdi] + mov rdx,QWORD[r14*8+rsp] + and rcx,rbx + and rdx,rax + mov QWORD[r14*8+rsp],r14 + or rdx,rcx + mov QWORD[r14*8+rdi],rdx + lea r14,[1+r14] + sub r15,1 + jnz NEAR $L$copy + + mov rsi,QWORD[8+r9*8+rsp] + + mov rax,1 + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$mul_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_bn_mul_mont_gather5: + +ALIGN 32 +bn_mul4x_mont_gather5: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_bn_mul4x_mont_gather5: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + +DB 0x67 + mov rax,rsp + +$L$mul4x_enter: + and r11d,0x80108 + cmp r11d,0x80108 + je NEAR $L$mulx4x_enter + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$mul4x_prologue: + +DB 0x67 + shl r9d,3 + lea r10,[r9*2+r9] + neg r9 + + + + + + + + + + + lea r11,[((-320))+r9*2+rsp] + mov rbp,rsp + sub r11,rdi + and r11,4095 + cmp r10,r11 + jb NEAR $L$mul4xsp_alt + sub rbp,r11 + lea rbp,[((-320))+r9*2+rbp] + jmp NEAR $L$mul4xsp_done + +ALIGN 32 +$L$mul4xsp_alt: + lea r10,[((4096-320))+r9*2] + lea rbp,[((-320))+r9*2+rbp] + sub r11,r10 + mov r10,0 + cmovc r11,r10 + sub rbp,r11 +$L$mul4xsp_done: + and rbp,-64 + mov r11,rsp + sub r11,rbp + and r11,-4096 + lea rsp,[rbp*1+r11] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$mul4x_page_walk + jmp NEAR $L$mul4x_page_walk_done + +$L$mul4x_page_walk: + lea rsp,[((-4096))+rsp] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$mul4x_page_walk +$L$mul4x_page_walk_done: + + neg r9 + + mov QWORD[40+rsp],rax + +$L$mul4x_body: + + call mul4x_internal + + mov rsi,QWORD[40+rsp] + + mov rax,1 + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$mul4x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_bn_mul4x_mont_gather5: + + +ALIGN 32 +mul4x_internal: + + shl r9,5 + movd xmm5,DWORD[56+rax] + lea rax,[$L$inc] + lea r13,[128+r9*1+rdx] + shr r9,5 + movdqa xmm0,XMMWORD[rax] + movdqa xmm1,XMMWORD[16+rax] + lea r10,[((88-112))+r9*1+rsp] + lea r12,[128+rdx] + + pshufd xmm5,xmm5,0 + movdqa xmm4,xmm1 +DB 0x67,0x67 + movdqa xmm2,xmm1 + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 +DB 0x67 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[112+r10],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[128+r10],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[144+r10],xmm2 + movdqa xmm2,xmm4 + + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[160+r10],xmm3 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[176+r10],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[192+r10],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[208+r10],xmm2 + movdqa xmm2,xmm4 + + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[224+r10],xmm3 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[240+r10],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[256+r10],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[272+r10],xmm2 + movdqa xmm2,xmm4 + + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[288+r10],xmm3 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[304+r10],xmm0 + + paddd xmm3,xmm2 +DB 0x67 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[320+r10],xmm1 + + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[336+r10],xmm2 + pand xmm0,XMMWORD[64+r12] + + pand xmm1,XMMWORD[80+r12] + pand xmm2,XMMWORD[96+r12] + movdqa XMMWORD[352+r10],xmm3 + pand xmm3,XMMWORD[112+r12] + por xmm0,xmm2 + por xmm1,xmm3 + movdqa xmm4,XMMWORD[((-128))+r12] + movdqa xmm5,XMMWORD[((-112))+r12] + movdqa xmm2,XMMWORD[((-96))+r12] + pand xmm4,XMMWORD[112+r10] + movdqa xmm3,XMMWORD[((-80))+r12] + pand xmm5,XMMWORD[128+r10] + por xmm0,xmm4 + pand xmm2,XMMWORD[144+r10] + por xmm1,xmm5 + pand xmm3,XMMWORD[160+r10] + por xmm0,xmm2 + por xmm1,xmm3 + movdqa xmm4,XMMWORD[((-64))+r12] + movdqa xmm5,XMMWORD[((-48))+r12] + movdqa xmm2,XMMWORD[((-32))+r12] + pand xmm4,XMMWORD[176+r10] + movdqa xmm3,XMMWORD[((-16))+r12] + pand xmm5,XMMWORD[192+r10] + por xmm0,xmm4 + pand xmm2,XMMWORD[208+r10] + por xmm1,xmm5 + pand xmm3,XMMWORD[224+r10] + por xmm0,xmm2 + por xmm1,xmm3 + movdqa xmm4,XMMWORD[r12] + movdqa xmm5,XMMWORD[16+r12] + movdqa xmm2,XMMWORD[32+r12] + pand xmm4,XMMWORD[240+r10] + movdqa xmm3,XMMWORD[48+r12] + pand xmm5,XMMWORD[256+r10] + por xmm0,xmm4 + pand xmm2,XMMWORD[272+r10] + por xmm1,xmm5 + pand xmm3,XMMWORD[288+r10] + por xmm0,xmm2 + por xmm1,xmm3 + por xmm0,xmm1 + pshufd xmm1,xmm0,0x4e + por xmm0,xmm1 + lea r12,[256+r12] +DB 102,72,15,126,195 + + mov QWORD[((16+8))+rsp],r13 + mov QWORD[((56+8))+rsp],rdi + + mov r8,QWORD[r8] + mov rax,QWORD[rsi] + lea rsi,[r9*1+rsi] + neg r9 + + mov rbp,r8 + mul rbx + mov r10,rax + mov rax,QWORD[rcx] + + imul rbp,r10 + lea r14,[((64+8))+rsp] + mov r11,rdx + + mul rbp + add r10,rax + mov rax,QWORD[8+r9*1+rsi] + adc rdx,0 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[8+rcx] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[16+r9*1+rsi] + adc rdx,0 + add rdi,r11 + lea r15,[32+r9] + lea rcx,[32+rcx] + adc rdx,0 + mov QWORD[r14],rdi + mov r13,rdx + jmp NEAR $L$1st4x + +ALIGN 32 +$L$1st4x: + mul rbx + add r10,rax + mov rax,QWORD[((-16))+rcx] + lea r14,[32+r14] + adc rdx,0 + mov r11,rdx + + mul rbp + add r13,rax + mov rax,QWORD[((-8))+r15*1+rsi] + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-24))+r14],r13 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[((-8))+rcx] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[r15*1+rsi] + adc rdx,0 + add rdi,r11 + adc rdx,0 + mov QWORD[((-16))+r14],rdi + mov r13,rdx + + mul rbx + add r10,rax + mov rax,QWORD[rcx] + adc rdx,0 + mov r11,rdx + + mul rbp + add r13,rax + mov rax,QWORD[8+r15*1+rsi] + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-8))+r14],r13 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[8+rcx] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[16+r15*1+rsi] + adc rdx,0 + add rdi,r11 + lea rcx,[32+rcx] + adc rdx,0 + mov QWORD[r14],rdi + mov r13,rdx + + add r15,32 + jnz NEAR $L$1st4x + + mul rbx + add r10,rax + mov rax,QWORD[((-16))+rcx] + lea r14,[32+r14] + adc rdx,0 + mov r11,rdx + + mul rbp + add r13,rax + mov rax,QWORD[((-8))+rsi] + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-24))+r14],r13 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[((-8))+rcx] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[r9*1+rsi] + adc rdx,0 + add rdi,r11 + adc rdx,0 + mov QWORD[((-16))+r14],rdi + mov r13,rdx + + lea rcx,[r9*1+rcx] + + xor rdi,rdi + add r13,r10 + adc rdi,0 + mov QWORD[((-8))+r14],r13 + + jmp NEAR $L$outer4x + +ALIGN 32 +$L$outer4x: + lea rdx,[((16+128))+r14] + pxor xmm4,xmm4 + pxor xmm5,xmm5 + movdqa xmm0,XMMWORD[((-128))+r12] + movdqa xmm1,XMMWORD[((-112))+r12] + movdqa xmm2,XMMWORD[((-96))+r12] + movdqa xmm3,XMMWORD[((-80))+r12] + pand xmm0,XMMWORD[((-128))+rdx] + pand xmm1,XMMWORD[((-112))+rdx] + por xmm4,xmm0 + pand xmm2,XMMWORD[((-96))+rdx] + por xmm5,xmm1 + pand xmm3,XMMWORD[((-80))+rdx] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[((-64))+r12] + movdqa xmm1,XMMWORD[((-48))+r12] + movdqa xmm2,XMMWORD[((-32))+r12] + movdqa xmm3,XMMWORD[((-16))+r12] + pand xmm0,XMMWORD[((-64))+rdx] + pand xmm1,XMMWORD[((-48))+rdx] + por xmm4,xmm0 + pand xmm2,XMMWORD[((-32))+rdx] + por xmm5,xmm1 + pand xmm3,XMMWORD[((-16))+rdx] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[r12] + movdqa xmm1,XMMWORD[16+r12] + movdqa xmm2,XMMWORD[32+r12] + movdqa xmm3,XMMWORD[48+r12] + pand xmm0,XMMWORD[rdx] + pand xmm1,XMMWORD[16+rdx] + por xmm4,xmm0 + pand xmm2,XMMWORD[32+rdx] + por xmm5,xmm1 + pand xmm3,XMMWORD[48+rdx] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[64+r12] + movdqa xmm1,XMMWORD[80+r12] + movdqa xmm2,XMMWORD[96+r12] + movdqa xmm3,XMMWORD[112+r12] + pand xmm0,XMMWORD[64+rdx] + pand xmm1,XMMWORD[80+rdx] + por xmm4,xmm0 + pand xmm2,XMMWORD[96+rdx] + por xmm5,xmm1 + pand xmm3,XMMWORD[112+rdx] + por xmm4,xmm2 + por xmm5,xmm3 + por xmm4,xmm5 + pshufd xmm0,xmm4,0x4e + por xmm0,xmm4 + lea r12,[256+r12] +DB 102,72,15,126,195 + + mov r10,QWORD[r9*1+r14] + mov rbp,r8 + mul rbx + add r10,rax + mov rax,QWORD[rcx] + adc rdx,0 + + imul rbp,r10 + mov r11,rdx + mov QWORD[r14],rdi + + lea r14,[r9*1+r14] + + mul rbp + add r10,rax + mov rax,QWORD[8+r9*1+rsi] + adc rdx,0 + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[8+rcx] + adc rdx,0 + add r11,QWORD[8+r14] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[16+r9*1+rsi] + adc rdx,0 + add rdi,r11 + lea r15,[32+r9] + lea rcx,[32+rcx] + adc rdx,0 + mov r13,rdx + jmp NEAR $L$inner4x + +ALIGN 32 +$L$inner4x: + mul rbx + add r10,rax + mov rax,QWORD[((-16))+rcx] + adc rdx,0 + add r10,QWORD[16+r14] + lea r14,[32+r14] + adc rdx,0 + mov r11,rdx + + mul rbp + add r13,rax + mov rax,QWORD[((-8))+r15*1+rsi] + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-32))+r14],rdi + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[((-8))+rcx] + adc rdx,0 + add r11,QWORD[((-8))+r14] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[r15*1+rsi] + adc rdx,0 + add rdi,r11 + adc rdx,0 + mov QWORD[((-24))+r14],r13 + mov r13,rdx + + mul rbx + add r10,rax + mov rax,QWORD[rcx] + adc rdx,0 + add r10,QWORD[r14] + adc rdx,0 + mov r11,rdx + + mul rbp + add r13,rax + mov rax,QWORD[8+r15*1+rsi] + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-16))+r14],rdi + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,QWORD[8+rcx] + adc rdx,0 + add r11,QWORD[8+r14] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[16+r15*1+rsi] + adc rdx,0 + add rdi,r11 + lea rcx,[32+rcx] + adc rdx,0 + mov QWORD[((-8))+r14],r13 + mov r13,rdx + + add r15,32 + jnz NEAR $L$inner4x + + mul rbx + add r10,rax + mov rax,QWORD[((-16))+rcx] + adc rdx,0 + add r10,QWORD[16+r14] + lea r14,[32+r14] + adc rdx,0 + mov r11,rdx + + mul rbp + add r13,rax + mov rax,QWORD[((-8))+rsi] + adc rdx,0 + add r13,r10 + adc rdx,0 + mov QWORD[((-32))+r14],rdi + mov rdi,rdx + + mul rbx + add r11,rax + mov rax,rbp + mov rbp,QWORD[((-8))+rcx] + adc rdx,0 + add r11,QWORD[((-8))+r14] + adc rdx,0 + mov r10,rdx + + mul rbp + add rdi,rax + mov rax,QWORD[r9*1+rsi] + adc rdx,0 + add rdi,r11 + adc rdx,0 + mov QWORD[((-24))+r14],r13 + mov r13,rdx + + mov QWORD[((-16))+r14],rdi + lea rcx,[r9*1+rcx] + + xor rdi,rdi + add r13,r10 + adc rdi,0 + add r13,QWORD[r14] + adc rdi,0 + mov QWORD[((-8))+r14],r13 + + cmp r12,QWORD[((16+8))+rsp] + jb NEAR $L$outer4x + xor rax,rax + sub rbp,r13 + adc r15,r15 + or rdi,r15 + sub rax,rdi + lea rbx,[r9*1+r14] + mov r12,QWORD[rcx] + lea rbp,[rcx] + mov rcx,r9 + sar rcx,3+2 + mov rdi,QWORD[((56+8))+rsp] + dec r12 + xor r10,r10 + mov r13,QWORD[8+rbp] + mov r14,QWORD[16+rbp] + mov r15,QWORD[24+rbp] + jmp NEAR $L$sqr4x_sub_entry + + +global bn_power5 + +ALIGN 32 +bn_power5: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_bn_power5: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov rax,rsp + + mov r11d,DWORD[((OPENSSL_ia32cap_P+8))] + and r11d,0x80108 + cmp r11d,0x80108 + je NEAR $L$powerx5_enter + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$power5_prologue: + + shl r9d,3 + lea r10d,[r9*2+r9] + neg r9 + mov r8,QWORD[r8] + + + + + + + + + lea r11,[((-320))+r9*2+rsp] + mov rbp,rsp + sub r11,rdi + and r11,4095 + cmp r10,r11 + jb NEAR $L$pwr_sp_alt + sub rbp,r11 + lea rbp,[((-320))+r9*2+rbp] + jmp NEAR $L$pwr_sp_done + +ALIGN 32 +$L$pwr_sp_alt: + lea r10,[((4096-320))+r9*2] + lea rbp,[((-320))+r9*2+rbp] + sub r11,r10 + mov r10,0 + cmovc r11,r10 + sub rbp,r11 +$L$pwr_sp_done: + and rbp,-64 + mov r11,rsp + sub r11,rbp + and r11,-4096 + lea rsp,[rbp*1+r11] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$pwr_page_walk + jmp NEAR $L$pwr_page_walk_done + +$L$pwr_page_walk: + lea rsp,[((-4096))+rsp] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$pwr_page_walk +$L$pwr_page_walk_done: + + mov r10,r9 + neg r9 + + + + + + + + + + + mov QWORD[32+rsp],r8 + mov QWORD[40+rsp],rax + +$L$power5_body: +DB 102,72,15,110,207 +DB 102,72,15,110,209 +DB 102,73,15,110,218 +DB 102,72,15,110,226 + + call __bn_sqr8x_internal + call __bn_post4x_internal + call __bn_sqr8x_internal + call __bn_post4x_internal + call __bn_sqr8x_internal + call __bn_post4x_internal + call __bn_sqr8x_internal + call __bn_post4x_internal + call __bn_sqr8x_internal + call __bn_post4x_internal + +DB 102,72,15,126,209 +DB 102,72,15,126,226 + mov rdi,rsi + mov rax,QWORD[40+rsp] + lea r8,[32+rsp] + + call mul4x_internal + + mov rsi,QWORD[40+rsp] + + mov rax,1 + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$power5_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_bn_power5: + +global bn_sqr8x_internal + + +ALIGN 32 +bn_sqr8x_internal: +__bn_sqr8x_internal: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lea rbp,[32+r10] + lea rsi,[r9*1+rsi] + + mov rcx,r9 + + + mov r14,QWORD[((-32))+rbp*1+rsi] + lea rdi,[((48+8))+r9*2+rsp] + mov rax,QWORD[((-24))+rbp*1+rsi] + lea rdi,[((-32))+rbp*1+rdi] + mov rbx,QWORD[((-16))+rbp*1+rsi] + mov r15,rax + + mul r14 + mov r10,rax + mov rax,rbx + mov r11,rdx + mov QWORD[((-24))+rbp*1+rdi],r10 + + mul r14 + add r11,rax + mov rax,rbx + adc rdx,0 + mov QWORD[((-16))+rbp*1+rdi],r11 + mov r10,rdx + + + mov rbx,QWORD[((-8))+rbp*1+rsi] + mul r15 + mov r12,rax + mov rax,rbx + mov r13,rdx + + lea rcx,[rbp] + mul r14 + add r10,rax + mov rax,rbx + mov r11,rdx + adc r11,0 + add r10,r12 + adc r11,0 + mov QWORD[((-8))+rcx*1+rdi],r10 + jmp NEAR $L$sqr4x_1st + +ALIGN 32 +$L$sqr4x_1st: + mov rbx,QWORD[rcx*1+rsi] + mul r15 + add r13,rax + mov rax,rbx + mov r12,rdx + adc r12,0 + + mul r14 + add r11,rax + mov rax,rbx + mov rbx,QWORD[8+rcx*1+rsi] + mov r10,rdx + adc r10,0 + add r11,r13 + adc r10,0 + + + mul r15 + add r12,rax + mov rax,rbx + mov QWORD[rcx*1+rdi],r11 + mov r13,rdx + adc r13,0 + + mul r14 + add r10,rax + mov rax,rbx + mov rbx,QWORD[16+rcx*1+rsi] + mov r11,rdx + adc r11,0 + add r10,r12 + adc r11,0 + + mul r15 + add r13,rax + mov rax,rbx + mov QWORD[8+rcx*1+rdi],r10 + mov r12,rdx + adc r12,0 + + mul r14 + add r11,rax + mov rax,rbx + mov rbx,QWORD[24+rcx*1+rsi] + mov r10,rdx + adc r10,0 + add r11,r13 + adc r10,0 + + + mul r15 + add r12,rax + mov rax,rbx + mov QWORD[16+rcx*1+rdi],r11 + mov r13,rdx + adc r13,0 + lea rcx,[32+rcx] + + mul r14 + add r10,rax + mov rax,rbx + mov r11,rdx + adc r11,0 + add r10,r12 + adc r11,0 + mov QWORD[((-8))+rcx*1+rdi],r10 + + cmp rcx,0 + jne NEAR $L$sqr4x_1st + + mul r15 + add r13,rax + lea rbp,[16+rbp] + adc rdx,0 + add r13,r11 + adc rdx,0 + + mov QWORD[rdi],r13 + mov r12,rdx + mov QWORD[8+rdi],rdx + jmp NEAR $L$sqr4x_outer + +ALIGN 32 +$L$sqr4x_outer: + mov r14,QWORD[((-32))+rbp*1+rsi] + lea rdi,[((48+8))+r9*2+rsp] + mov rax,QWORD[((-24))+rbp*1+rsi] + lea rdi,[((-32))+rbp*1+rdi] + mov rbx,QWORD[((-16))+rbp*1+rsi] + mov r15,rax + + mul r14 + mov r10,QWORD[((-24))+rbp*1+rdi] + add r10,rax + mov rax,rbx + adc rdx,0 + mov QWORD[((-24))+rbp*1+rdi],r10 + mov r11,rdx + + mul r14 + add r11,rax + mov rax,rbx + adc rdx,0 + add r11,QWORD[((-16))+rbp*1+rdi] + mov r10,rdx + adc r10,0 + mov QWORD[((-16))+rbp*1+rdi],r11 + + xor r12,r12 + + mov rbx,QWORD[((-8))+rbp*1+rsi] + mul r15 + add r12,rax + mov rax,rbx + adc rdx,0 + add r12,QWORD[((-8))+rbp*1+rdi] + mov r13,rdx + adc r13,0 + + mul r14 + add r10,rax + mov rax,rbx + adc rdx,0 + add r10,r12 + mov r11,rdx + adc r11,0 + mov QWORD[((-8))+rbp*1+rdi],r10 + + lea rcx,[rbp] + jmp NEAR $L$sqr4x_inner + +ALIGN 32 +$L$sqr4x_inner: + mov rbx,QWORD[rcx*1+rsi] + mul r15 + add r13,rax + mov rax,rbx + mov r12,rdx + adc r12,0 + add r13,QWORD[rcx*1+rdi] + adc r12,0 + +DB 0x67 + mul r14 + add r11,rax + mov rax,rbx + mov rbx,QWORD[8+rcx*1+rsi] + mov r10,rdx + adc r10,0 + add r11,r13 + adc r10,0 + + mul r15 + add r12,rax + mov QWORD[rcx*1+rdi],r11 + mov rax,rbx + mov r13,rdx + adc r13,0 + add r12,QWORD[8+rcx*1+rdi] + lea rcx,[16+rcx] + adc r13,0 + + mul r14 + add r10,rax + mov rax,rbx + adc rdx,0 + add r10,r12 + mov r11,rdx + adc r11,0 + mov QWORD[((-8))+rcx*1+rdi],r10 + + cmp rcx,0 + jne NEAR $L$sqr4x_inner + +DB 0x67 + mul r15 + add r13,rax + adc rdx,0 + add r13,r11 + adc rdx,0 + + mov QWORD[rdi],r13 + mov r12,rdx + mov QWORD[8+rdi],rdx + + add rbp,16 + jnz NEAR $L$sqr4x_outer + + + mov r14,QWORD[((-32))+rsi] + lea rdi,[((48+8))+r9*2+rsp] + mov rax,QWORD[((-24))+rsi] + lea rdi,[((-32))+rbp*1+rdi] + mov rbx,QWORD[((-16))+rsi] + mov r15,rax + + mul r14 + add r10,rax + mov rax,rbx + mov r11,rdx + adc r11,0 + + mul r14 + add r11,rax + mov rax,rbx + mov QWORD[((-24))+rdi],r10 + mov r10,rdx + adc r10,0 + add r11,r13 + mov rbx,QWORD[((-8))+rsi] + adc r10,0 + + mul r15 + add r12,rax + mov rax,rbx + mov QWORD[((-16))+rdi],r11 + mov r13,rdx + adc r13,0 + + mul r14 + add r10,rax + mov rax,rbx + mov r11,rdx + adc r11,0 + add r10,r12 + adc r11,0 + mov QWORD[((-8))+rdi],r10 + + mul r15 + add r13,rax + mov rax,QWORD[((-16))+rsi] + adc rdx,0 + add r13,r11 + adc rdx,0 + + mov QWORD[rdi],r13 + mov r12,rdx + mov QWORD[8+rdi],rdx + + mul rbx + add rbp,16 + xor r14,r14 + sub rbp,r9 + xor r15,r15 + + add rax,r12 + adc rdx,0 + mov QWORD[8+rdi],rax + mov QWORD[16+rdi],rdx + mov QWORD[24+rdi],r15 + + mov rax,QWORD[((-16))+rbp*1+rsi] + lea rdi,[((48+8))+rsp] + xor r10,r10 + mov r11,QWORD[8+rdi] + + lea r12,[r10*2+r14] + shr r10,63 + lea r13,[r11*2+rcx] + shr r11,63 + or r13,r10 + mov r10,QWORD[16+rdi] + mov r14,r11 + mul rax + neg r15 + mov r11,QWORD[24+rdi] + adc r12,rax + mov rax,QWORD[((-8))+rbp*1+rsi] + mov QWORD[rdi],r12 + adc r13,rdx + + lea rbx,[r10*2+r14] + mov QWORD[8+rdi],r13 + sbb r15,r15 + shr r10,63 + lea r8,[r11*2+rcx] + shr r11,63 + or r8,r10 + mov r10,QWORD[32+rdi] + mov r14,r11 + mul rax + neg r15 + mov r11,QWORD[40+rdi] + adc rbx,rax + mov rax,QWORD[rbp*1+rsi] + mov QWORD[16+rdi],rbx + adc r8,rdx + lea rbp,[16+rbp] + mov QWORD[24+rdi],r8 + sbb r15,r15 + lea rdi,[64+rdi] + jmp NEAR $L$sqr4x_shift_n_add + +ALIGN 32 +$L$sqr4x_shift_n_add: + lea r12,[r10*2+r14] + shr r10,63 + lea r13,[r11*2+rcx] + shr r11,63 + or r13,r10 + mov r10,QWORD[((-16))+rdi] + mov r14,r11 + mul rax + neg r15 + mov r11,QWORD[((-8))+rdi] + adc r12,rax + mov rax,QWORD[((-8))+rbp*1+rsi] + mov QWORD[((-32))+rdi],r12 + adc r13,rdx + + lea rbx,[r10*2+r14] + mov QWORD[((-24))+rdi],r13 + sbb r15,r15 + shr r10,63 + lea r8,[r11*2+rcx] + shr r11,63 + or r8,r10 + mov r10,QWORD[rdi] + mov r14,r11 + mul rax + neg r15 + mov r11,QWORD[8+rdi] + adc rbx,rax + mov rax,QWORD[rbp*1+rsi] + mov QWORD[((-16))+rdi],rbx + adc r8,rdx + + lea r12,[r10*2+r14] + mov QWORD[((-8))+rdi],r8 + sbb r15,r15 + shr r10,63 + lea r13,[r11*2+rcx] + shr r11,63 + or r13,r10 + mov r10,QWORD[16+rdi] + mov r14,r11 + mul rax + neg r15 + mov r11,QWORD[24+rdi] + adc r12,rax + mov rax,QWORD[8+rbp*1+rsi] + mov QWORD[rdi],r12 + adc r13,rdx + + lea rbx,[r10*2+r14] + mov QWORD[8+rdi],r13 + sbb r15,r15 + shr r10,63 + lea r8,[r11*2+rcx] + shr r11,63 + or r8,r10 + mov r10,QWORD[32+rdi] + mov r14,r11 + mul rax + neg r15 + mov r11,QWORD[40+rdi] + adc rbx,rax + mov rax,QWORD[16+rbp*1+rsi] + mov QWORD[16+rdi],rbx + adc r8,rdx + mov QWORD[24+rdi],r8 + sbb r15,r15 + lea rdi,[64+rdi] + add rbp,32 + jnz NEAR $L$sqr4x_shift_n_add + + lea r12,[r10*2+r14] +DB 0x67 + shr r10,63 + lea r13,[r11*2+rcx] + shr r11,63 + or r13,r10 + mov r10,QWORD[((-16))+rdi] + mov r14,r11 + mul rax + neg r15 + mov r11,QWORD[((-8))+rdi] + adc r12,rax + mov rax,QWORD[((-8))+rsi] + mov QWORD[((-32))+rdi],r12 + adc r13,rdx + + lea rbx,[r10*2+r14] + mov QWORD[((-24))+rdi],r13 + sbb r15,r15 + shr r10,63 + lea r8,[r11*2+rcx] + shr r11,63 + or r8,r10 + mul rax + neg r15 + adc rbx,rax + adc r8,rdx + mov QWORD[((-16))+rdi],rbx + mov QWORD[((-8))+rdi],r8 +DB 102,72,15,126,213 +__bn_sqr8x_reduction: + xor rax,rax + lea rcx,[rbp*1+r9] + lea rdx,[((48+8))+r9*2+rsp] + mov QWORD[((0+8))+rsp],rcx + lea rdi,[((48+8))+r9*1+rsp] + mov QWORD[((8+8))+rsp],rdx + neg r9 + jmp NEAR $L$8x_reduction_loop + +ALIGN 32 +$L$8x_reduction_loop: + lea rdi,[r9*1+rdi] +DB 0x66 + mov rbx,QWORD[rdi] + mov r9,QWORD[8+rdi] + mov r10,QWORD[16+rdi] + mov r11,QWORD[24+rdi] + mov r12,QWORD[32+rdi] + mov r13,QWORD[40+rdi] + mov r14,QWORD[48+rdi] + mov r15,QWORD[56+rdi] + mov QWORD[rdx],rax + lea rdi,[64+rdi] + +DB 0x67 + mov r8,rbx + imul rbx,QWORD[((32+8))+rsp] + mov rax,QWORD[rbp] + mov ecx,8 + jmp NEAR $L$8x_reduce + +ALIGN 32 +$L$8x_reduce: + mul rbx + mov rax,QWORD[8+rbp] + neg r8 + mov r8,rdx + adc r8,0 + + mul rbx + add r9,rax + mov rax,QWORD[16+rbp] + adc rdx,0 + add r8,r9 + mov QWORD[((48-8+8))+rcx*8+rsp],rbx + mov r9,rdx + adc r9,0 + + mul rbx + add r10,rax + mov rax,QWORD[24+rbp] + adc rdx,0 + add r9,r10 + mov rsi,QWORD[((32+8))+rsp] + mov r10,rdx + adc r10,0 + + mul rbx + add r11,rax + mov rax,QWORD[32+rbp] + adc rdx,0 + imul rsi,r8 + add r10,r11 + mov r11,rdx + adc r11,0 + + mul rbx + add r12,rax + mov rax,QWORD[40+rbp] + adc rdx,0 + add r11,r12 + mov r12,rdx + adc r12,0 + + mul rbx + add r13,rax + mov rax,QWORD[48+rbp] + adc rdx,0 + add r12,r13 + mov r13,rdx + adc r13,0 + + mul rbx + add r14,rax + mov rax,QWORD[56+rbp] + adc rdx,0 + add r13,r14 + mov r14,rdx + adc r14,0 + + mul rbx + mov rbx,rsi + add r15,rax + mov rax,QWORD[rbp] + adc rdx,0 + add r14,r15 + mov r15,rdx + adc r15,0 + + dec ecx + jnz NEAR $L$8x_reduce + + lea rbp,[64+rbp] + xor rax,rax + mov rdx,QWORD[((8+8))+rsp] + cmp rbp,QWORD[((0+8))+rsp] + jae NEAR $L$8x_no_tail + +DB 0x66 + add r8,QWORD[rdi] + adc r9,QWORD[8+rdi] + adc r10,QWORD[16+rdi] + adc r11,QWORD[24+rdi] + adc r12,QWORD[32+rdi] + adc r13,QWORD[40+rdi] + adc r14,QWORD[48+rdi] + adc r15,QWORD[56+rdi] + sbb rsi,rsi + + mov rbx,QWORD[((48+56+8))+rsp] + mov ecx,8 + mov rax,QWORD[rbp] + jmp NEAR $L$8x_tail + +ALIGN 32 +$L$8x_tail: + mul rbx + add r8,rax + mov rax,QWORD[8+rbp] + mov QWORD[rdi],r8 + mov r8,rdx + adc r8,0 + + mul rbx + add r9,rax + mov rax,QWORD[16+rbp] + adc rdx,0 + add r8,r9 + lea rdi,[8+rdi] + mov r9,rdx + adc r9,0 + + mul rbx + add r10,rax + mov rax,QWORD[24+rbp] + adc rdx,0 + add r9,r10 + mov r10,rdx + adc r10,0 + + mul rbx + add r11,rax + mov rax,QWORD[32+rbp] + adc rdx,0 + add r10,r11 + mov r11,rdx + adc r11,0 + + mul rbx + add r12,rax + mov rax,QWORD[40+rbp] + adc rdx,0 + add r11,r12 + mov r12,rdx + adc r12,0 + + mul rbx + add r13,rax + mov rax,QWORD[48+rbp] + adc rdx,0 + add r12,r13 + mov r13,rdx + adc r13,0 + + mul rbx + add r14,rax + mov rax,QWORD[56+rbp] + adc rdx,0 + add r13,r14 + mov r14,rdx + adc r14,0 + + mul rbx + mov rbx,QWORD[((48-16+8))+rcx*8+rsp] + add r15,rax + adc rdx,0 + add r14,r15 + mov rax,QWORD[rbp] + mov r15,rdx + adc r15,0 + + dec ecx + jnz NEAR $L$8x_tail + + lea rbp,[64+rbp] + mov rdx,QWORD[((8+8))+rsp] + cmp rbp,QWORD[((0+8))+rsp] + jae NEAR $L$8x_tail_done + + mov rbx,QWORD[((48+56+8))+rsp] + neg rsi + mov rax,QWORD[rbp] + adc r8,QWORD[rdi] + adc r9,QWORD[8+rdi] + adc r10,QWORD[16+rdi] + adc r11,QWORD[24+rdi] + adc r12,QWORD[32+rdi] + adc r13,QWORD[40+rdi] + adc r14,QWORD[48+rdi] + adc r15,QWORD[56+rdi] + sbb rsi,rsi + + mov ecx,8 + jmp NEAR $L$8x_tail + +ALIGN 32 +$L$8x_tail_done: + xor rax,rax + add r8,QWORD[rdx] + adc r9,0 + adc r10,0 + adc r11,0 + adc r12,0 + adc r13,0 + adc r14,0 + adc r15,0 + adc rax,0 + + neg rsi +$L$8x_no_tail: + adc r8,QWORD[rdi] + adc r9,QWORD[8+rdi] + adc r10,QWORD[16+rdi] + adc r11,QWORD[24+rdi] + adc r12,QWORD[32+rdi] + adc r13,QWORD[40+rdi] + adc r14,QWORD[48+rdi] + adc r15,QWORD[56+rdi] + adc rax,0 + mov rcx,QWORD[((-8))+rbp] + xor rsi,rsi + +DB 102,72,15,126,213 + + mov QWORD[rdi],r8 + mov QWORD[8+rdi],r9 +DB 102,73,15,126,217 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + mov QWORD[32+rdi],r12 + mov QWORD[40+rdi],r13 + mov QWORD[48+rdi],r14 + mov QWORD[56+rdi],r15 + lea rdi,[64+rdi] + + cmp rdi,rdx + jb NEAR $L$8x_reduction_loop + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +__bn_post4x_internal: + + mov r12,QWORD[rbp] + lea rbx,[r9*1+rdi] + mov rcx,r9 +DB 102,72,15,126,207 + neg rax +DB 102,72,15,126,206 + sar rcx,3+2 + dec r12 + xor r10,r10 + mov r13,QWORD[8+rbp] + mov r14,QWORD[16+rbp] + mov r15,QWORD[24+rbp] + jmp NEAR $L$sqr4x_sub_entry + +ALIGN 16 +$L$sqr4x_sub: + mov r12,QWORD[rbp] + mov r13,QWORD[8+rbp] + mov r14,QWORD[16+rbp] + mov r15,QWORD[24+rbp] +$L$sqr4x_sub_entry: + lea rbp,[32+rbp] + not r12 + not r13 + not r14 + not r15 + and r12,rax + and r13,rax + and r14,rax + and r15,rax + + neg r10 + adc r12,QWORD[rbx] + adc r13,QWORD[8+rbx] + adc r14,QWORD[16+rbx] + adc r15,QWORD[24+rbx] + mov QWORD[rdi],r12 + lea rbx,[32+rbx] + mov QWORD[8+rdi],r13 + sbb r10,r10 + mov QWORD[16+rdi],r14 + mov QWORD[24+rdi],r15 + lea rdi,[32+rdi] + + inc rcx + jnz NEAR $L$sqr4x_sub + + mov r10,r9 + neg r9 + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +bn_mulx4x_mont_gather5: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_bn_mulx4x_mont_gather5: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov rax,rsp + +$L$mulx4x_enter: + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$mulx4x_prologue: + + shl r9d,3 + lea r10,[r9*2+r9] + neg r9 + mov r8,QWORD[r8] + + + + + + + + + + + lea r11,[((-320))+r9*2+rsp] + mov rbp,rsp + sub r11,rdi + and r11,4095 + cmp r10,r11 + jb NEAR $L$mulx4xsp_alt + sub rbp,r11 + lea rbp,[((-320))+r9*2+rbp] + jmp NEAR $L$mulx4xsp_done + +$L$mulx4xsp_alt: + lea r10,[((4096-320))+r9*2] + lea rbp,[((-320))+r9*2+rbp] + sub r11,r10 + mov r10,0 + cmovc r11,r10 + sub rbp,r11 +$L$mulx4xsp_done: + and rbp,-64 + mov r11,rsp + sub r11,rbp + and r11,-4096 + lea rsp,[rbp*1+r11] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$mulx4x_page_walk + jmp NEAR $L$mulx4x_page_walk_done + +$L$mulx4x_page_walk: + lea rsp,[((-4096))+rsp] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$mulx4x_page_walk +$L$mulx4x_page_walk_done: + + + + + + + + + + + + + + mov QWORD[32+rsp],r8 + mov QWORD[40+rsp],rax + +$L$mulx4x_body: + call mulx4x_internal + + mov rsi,QWORD[40+rsp] + + mov rax,1 + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$mulx4x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_bn_mulx4x_mont_gather5: + + +ALIGN 32 +mulx4x_internal: + + mov QWORD[8+rsp],r9 + mov r10,r9 + neg r9 + shl r9,5 + neg r10 + lea r13,[128+r9*1+rdx] + shr r9,5+5 + movd xmm5,DWORD[56+rax] + sub r9,1 + lea rax,[$L$inc] + mov QWORD[((16+8))+rsp],r13 + mov QWORD[((24+8))+rsp],r9 + mov QWORD[((56+8))+rsp],rdi + movdqa xmm0,XMMWORD[rax] + movdqa xmm1,XMMWORD[16+rax] + lea r10,[((88-112))+r10*1+rsp] + lea rdi,[128+rdx] + + pshufd xmm5,xmm5,0 + movdqa xmm4,xmm1 +DB 0x67 + movdqa xmm2,xmm1 +DB 0x67 + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[112+r10],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[128+r10],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[144+r10],xmm2 + movdqa xmm2,xmm4 + + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[160+r10],xmm3 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[176+r10],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[192+r10],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[208+r10],xmm2 + movdqa xmm2,xmm4 + + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[224+r10],xmm3 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[240+r10],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[256+r10],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[272+r10],xmm2 + movdqa xmm2,xmm4 + + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[288+r10],xmm3 + movdqa xmm3,xmm4 +DB 0x67 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[304+r10],xmm0 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[320+r10],xmm1 + + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[336+r10],xmm2 + + pand xmm0,XMMWORD[64+rdi] + pand xmm1,XMMWORD[80+rdi] + pand xmm2,XMMWORD[96+rdi] + movdqa XMMWORD[352+r10],xmm3 + pand xmm3,XMMWORD[112+rdi] + por xmm0,xmm2 + por xmm1,xmm3 + movdqa xmm4,XMMWORD[((-128))+rdi] + movdqa xmm5,XMMWORD[((-112))+rdi] + movdqa xmm2,XMMWORD[((-96))+rdi] + pand xmm4,XMMWORD[112+r10] + movdqa xmm3,XMMWORD[((-80))+rdi] + pand xmm5,XMMWORD[128+r10] + por xmm0,xmm4 + pand xmm2,XMMWORD[144+r10] + por xmm1,xmm5 + pand xmm3,XMMWORD[160+r10] + por xmm0,xmm2 + por xmm1,xmm3 + movdqa xmm4,XMMWORD[((-64))+rdi] + movdqa xmm5,XMMWORD[((-48))+rdi] + movdqa xmm2,XMMWORD[((-32))+rdi] + pand xmm4,XMMWORD[176+r10] + movdqa xmm3,XMMWORD[((-16))+rdi] + pand xmm5,XMMWORD[192+r10] + por xmm0,xmm4 + pand xmm2,XMMWORD[208+r10] + por xmm1,xmm5 + pand xmm3,XMMWORD[224+r10] + por xmm0,xmm2 + por xmm1,xmm3 + movdqa xmm4,XMMWORD[rdi] + movdqa xmm5,XMMWORD[16+rdi] + movdqa xmm2,XMMWORD[32+rdi] + pand xmm4,XMMWORD[240+r10] + movdqa xmm3,XMMWORD[48+rdi] + pand xmm5,XMMWORD[256+r10] + por xmm0,xmm4 + pand xmm2,XMMWORD[272+r10] + por xmm1,xmm5 + pand xmm3,XMMWORD[288+r10] + por xmm0,xmm2 + por xmm1,xmm3 + pxor xmm0,xmm1 + pshufd xmm1,xmm0,0x4e + por xmm0,xmm1 + lea rdi,[256+rdi] +DB 102,72,15,126,194 + lea rbx,[((64+32+8))+rsp] + + mov r9,rdx + mulx rax,r8,QWORD[rsi] + mulx r12,r11,QWORD[8+rsi] + add r11,rax + mulx r13,rax,QWORD[16+rsi] + adc r12,rax + adc r13,0 + mulx r14,rax,QWORD[24+rsi] + + mov r15,r8 + imul r8,QWORD[((32+8))+rsp] + xor rbp,rbp + mov rdx,r8 + + mov QWORD[((8+8))+rsp],rdi + + lea rsi,[32+rsi] + adcx r13,rax + adcx r14,rbp + + mulx r10,rax,QWORD[rcx] + adcx r15,rax + adox r10,r11 + mulx r11,rax,QWORD[8+rcx] + adcx r10,rax + adox r11,r12 + mulx r12,rax,QWORD[16+rcx] + mov rdi,QWORD[((24+8))+rsp] + mov QWORD[((-32))+rbx],r10 + adcx r11,rax + adox r12,r13 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov QWORD[((-24))+rbx],r11 + adcx r12,rax + adox r15,rbp + lea rcx,[32+rcx] + mov QWORD[((-16))+rbx],r12 + jmp NEAR $L$mulx4x_1st + +ALIGN 32 +$L$mulx4x_1st: + adcx r15,rbp + mulx rax,r10,QWORD[rsi] + adcx r10,r14 + mulx r14,r11,QWORD[8+rsi] + adcx r11,rax + mulx rax,r12,QWORD[16+rsi] + adcx r12,r14 + mulx r14,r13,QWORD[24+rsi] +DB 0x67,0x67 + mov rdx,r8 + adcx r13,rax + adcx r14,rbp + lea rsi,[32+rsi] + lea rbx,[32+rbx] + + adox r10,r15 + mulx r15,rax,QWORD[rcx] + adcx r10,rax + adox r11,r15 + mulx r15,rax,QWORD[8+rcx] + adcx r11,rax + adox r12,r15 + mulx r15,rax,QWORD[16+rcx] + mov QWORD[((-40))+rbx],r10 + adcx r12,rax + mov QWORD[((-32))+rbx],r11 + adox r13,r15 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov QWORD[((-24))+rbx],r12 + adcx r13,rax + adox r15,rbp + lea rcx,[32+rcx] + mov QWORD[((-16))+rbx],r13 + + dec rdi + jnz NEAR $L$mulx4x_1st + + mov rax,QWORD[8+rsp] + adc r15,rbp + lea rsi,[rax*1+rsi] + add r14,r15 + mov rdi,QWORD[((8+8))+rsp] + adc rbp,rbp + mov QWORD[((-8))+rbx],r14 + jmp NEAR $L$mulx4x_outer + +ALIGN 32 +$L$mulx4x_outer: + lea r10,[((16-256))+rbx] + pxor xmm4,xmm4 +DB 0x67,0x67 + pxor xmm5,xmm5 + movdqa xmm0,XMMWORD[((-128))+rdi] + movdqa xmm1,XMMWORD[((-112))+rdi] + movdqa xmm2,XMMWORD[((-96))+rdi] + pand xmm0,XMMWORD[256+r10] + movdqa xmm3,XMMWORD[((-80))+rdi] + pand xmm1,XMMWORD[272+r10] + por xmm4,xmm0 + pand xmm2,XMMWORD[288+r10] + por xmm5,xmm1 + pand xmm3,XMMWORD[304+r10] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[((-64))+rdi] + movdqa xmm1,XMMWORD[((-48))+rdi] + movdqa xmm2,XMMWORD[((-32))+rdi] + pand xmm0,XMMWORD[320+r10] + movdqa xmm3,XMMWORD[((-16))+rdi] + pand xmm1,XMMWORD[336+r10] + por xmm4,xmm0 + pand xmm2,XMMWORD[352+r10] + por xmm5,xmm1 + pand xmm3,XMMWORD[368+r10] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[rdi] + movdqa xmm1,XMMWORD[16+rdi] + movdqa xmm2,XMMWORD[32+rdi] + pand xmm0,XMMWORD[384+r10] + movdqa xmm3,XMMWORD[48+rdi] + pand xmm1,XMMWORD[400+r10] + por xmm4,xmm0 + pand xmm2,XMMWORD[416+r10] + por xmm5,xmm1 + pand xmm3,XMMWORD[432+r10] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[64+rdi] + movdqa xmm1,XMMWORD[80+rdi] + movdqa xmm2,XMMWORD[96+rdi] + pand xmm0,XMMWORD[448+r10] + movdqa xmm3,XMMWORD[112+rdi] + pand xmm1,XMMWORD[464+r10] + por xmm4,xmm0 + pand xmm2,XMMWORD[480+r10] + por xmm5,xmm1 + pand xmm3,XMMWORD[496+r10] + por xmm4,xmm2 + por xmm5,xmm3 + por xmm4,xmm5 + pshufd xmm0,xmm4,0x4e + por xmm0,xmm4 + lea rdi,[256+rdi] +DB 102,72,15,126,194 + + mov QWORD[rbx],rbp + lea rbx,[32+rax*1+rbx] + mulx r11,r8,QWORD[rsi] + xor rbp,rbp + mov r9,rdx + mulx r12,r14,QWORD[8+rsi] + adox r8,QWORD[((-32))+rbx] + adcx r11,r14 + mulx r13,r15,QWORD[16+rsi] + adox r11,QWORD[((-24))+rbx] + adcx r12,r15 + mulx r14,rdx,QWORD[24+rsi] + adox r12,QWORD[((-16))+rbx] + adcx r13,rdx + lea rcx,[rax*1+rcx] + lea rsi,[32+rsi] + adox r13,QWORD[((-8))+rbx] + adcx r14,rbp + adox r14,rbp + + mov r15,r8 + imul r8,QWORD[((32+8))+rsp] + + mov rdx,r8 + xor rbp,rbp + mov QWORD[((8+8))+rsp],rdi + + mulx r10,rax,QWORD[rcx] + adcx r15,rax + adox r10,r11 + mulx r11,rax,QWORD[8+rcx] + adcx r10,rax + adox r11,r12 + mulx r12,rax,QWORD[16+rcx] + adcx r11,rax + adox r12,r13 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov rdi,QWORD[((24+8))+rsp] + mov QWORD[((-32))+rbx],r10 + adcx r12,rax + mov QWORD[((-24))+rbx],r11 + adox r15,rbp + mov QWORD[((-16))+rbx],r12 + lea rcx,[32+rcx] + jmp NEAR $L$mulx4x_inner + +ALIGN 32 +$L$mulx4x_inner: + mulx rax,r10,QWORD[rsi] + adcx r15,rbp + adox r10,r14 + mulx r14,r11,QWORD[8+rsi] + adcx r10,QWORD[rbx] + adox r11,rax + mulx rax,r12,QWORD[16+rsi] + adcx r11,QWORD[8+rbx] + adox r12,r14 + mulx r14,r13,QWORD[24+rsi] + mov rdx,r8 + adcx r12,QWORD[16+rbx] + adox r13,rax + adcx r13,QWORD[24+rbx] + adox r14,rbp + lea rsi,[32+rsi] + lea rbx,[32+rbx] + adcx r14,rbp + + adox r10,r15 + mulx r15,rax,QWORD[rcx] + adcx r10,rax + adox r11,r15 + mulx r15,rax,QWORD[8+rcx] + adcx r11,rax + adox r12,r15 + mulx r15,rax,QWORD[16+rcx] + mov QWORD[((-40))+rbx],r10 + adcx r12,rax + adox r13,r15 + mov QWORD[((-32))+rbx],r11 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + lea rcx,[32+rcx] + mov QWORD[((-24))+rbx],r12 + adcx r13,rax + adox r15,rbp + mov QWORD[((-16))+rbx],r13 + + dec rdi + jnz NEAR $L$mulx4x_inner + + mov rax,QWORD[((0+8))+rsp] + adc r15,rbp + sub rdi,QWORD[rbx] + mov rdi,QWORD[((8+8))+rsp] + mov r10,QWORD[((16+8))+rsp] + adc r14,r15 + lea rsi,[rax*1+rsi] + adc rbp,rbp + mov QWORD[((-8))+rbx],r14 + + cmp rdi,r10 + jb NEAR $L$mulx4x_outer + + mov r10,QWORD[((-8))+rcx] + mov r8,rbp + mov r12,QWORD[rax*1+rcx] + lea rbp,[rax*1+rcx] + mov rcx,rax + lea rdi,[rax*1+rbx] + xor eax,eax + xor r15,r15 + sub r10,r14 + adc r15,r15 + or r8,r15 + sar rcx,3+2 + sub rax,r8 + mov rdx,QWORD[((56+8))+rsp] + dec r12 + mov r13,QWORD[8+rbp] + xor r8,r8 + mov r14,QWORD[16+rbp] + mov r15,QWORD[24+rbp] + jmp NEAR $L$sqrx4x_sub_entry + + + +ALIGN 32 +bn_powerx5: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_bn_powerx5: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov rax,rsp + +$L$powerx5_enter: + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$powerx5_prologue: + + shl r9d,3 + lea r10,[r9*2+r9] + neg r9 + mov r8,QWORD[r8] + + + + + + + + + lea r11,[((-320))+r9*2+rsp] + mov rbp,rsp + sub r11,rdi + and r11,4095 + cmp r10,r11 + jb NEAR $L$pwrx_sp_alt + sub rbp,r11 + lea rbp,[((-320))+r9*2+rbp] + jmp NEAR $L$pwrx_sp_done + +ALIGN 32 +$L$pwrx_sp_alt: + lea r10,[((4096-320))+r9*2] + lea rbp,[((-320))+r9*2+rbp] + sub r11,r10 + mov r10,0 + cmovc r11,r10 + sub rbp,r11 +$L$pwrx_sp_done: + and rbp,-64 + mov r11,rsp + sub r11,rbp + and r11,-4096 + lea rsp,[rbp*1+r11] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$pwrx_page_walk + jmp NEAR $L$pwrx_page_walk_done + +$L$pwrx_page_walk: + lea rsp,[((-4096))+rsp] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$pwrx_page_walk +$L$pwrx_page_walk_done: + + mov r10,r9 + neg r9 + + + + + + + + + + + + + pxor xmm0,xmm0 +DB 102,72,15,110,207 +DB 102,72,15,110,209 +DB 102,73,15,110,218 +DB 102,72,15,110,226 + mov QWORD[32+rsp],r8 + mov QWORD[40+rsp],rax + +$L$powerx5_body: + + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + + mov r9,r10 + mov rdi,rsi +DB 102,72,15,126,209 +DB 102,72,15,126,226 + mov rax,QWORD[40+rsp] + + call mulx4x_internal + + mov rsi,QWORD[40+rsp] + + mov rax,1 + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$powerx5_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_bn_powerx5: + +global bn_sqrx8x_internal + + +ALIGN 32 +bn_sqrx8x_internal: +__bn_sqrx8x_internal: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lea rdi,[((48+8))+rsp] + lea rbp,[r9*1+rsi] + mov QWORD[((0+8))+rsp],r9 + mov QWORD[((8+8))+rsp],rbp + jmp NEAR $L$sqr8x_zero_start + +ALIGN 32 +DB 0x66,0x66,0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 +$L$sqrx8x_zero: +DB 0x3e + movdqa XMMWORD[rdi],xmm0 + movdqa XMMWORD[16+rdi],xmm0 + movdqa XMMWORD[32+rdi],xmm0 + movdqa XMMWORD[48+rdi],xmm0 +$L$sqr8x_zero_start: + movdqa XMMWORD[64+rdi],xmm0 + movdqa XMMWORD[80+rdi],xmm0 + movdqa XMMWORD[96+rdi],xmm0 + movdqa XMMWORD[112+rdi],xmm0 + lea rdi,[128+rdi] + sub r9,64 + jnz NEAR $L$sqrx8x_zero + + mov rdx,QWORD[rsi] + + xor r10,r10 + xor r11,r11 + xor r12,r12 + xor r13,r13 + xor r14,r14 + xor r15,r15 + lea rdi,[((48+8))+rsp] + xor rbp,rbp + jmp NEAR $L$sqrx8x_outer_loop + +ALIGN 32 +$L$sqrx8x_outer_loop: + mulx rax,r8,QWORD[8+rsi] + adcx r8,r9 + adox r10,rax + mulx rax,r9,QWORD[16+rsi] + adcx r9,r10 + adox r11,rax +DB 0xc4,0xe2,0xab,0xf6,0x86,0x18,0x00,0x00,0x00 + adcx r10,r11 + adox r12,rax +DB 0xc4,0xe2,0xa3,0xf6,0x86,0x20,0x00,0x00,0x00 + adcx r11,r12 + adox r13,rax + mulx rax,r12,QWORD[40+rsi] + adcx r12,r13 + adox r14,rax + mulx rax,r13,QWORD[48+rsi] + adcx r13,r14 + adox rax,r15 + mulx r15,r14,QWORD[56+rsi] + mov rdx,QWORD[8+rsi] + adcx r14,rax + adox r15,rbp + adc r15,QWORD[64+rdi] + mov QWORD[8+rdi],r8 + mov QWORD[16+rdi],r9 + sbb rcx,rcx + xor rbp,rbp + + + mulx rbx,r8,QWORD[16+rsi] + mulx rax,r9,QWORD[24+rsi] + adcx r8,r10 + adox r9,rbx + mulx rbx,r10,QWORD[32+rsi] + adcx r9,r11 + adox r10,rax +DB 0xc4,0xe2,0xa3,0xf6,0x86,0x28,0x00,0x00,0x00 + adcx r10,r12 + adox r11,rbx +DB 0xc4,0xe2,0x9b,0xf6,0x9e,0x30,0x00,0x00,0x00 + adcx r11,r13 + adox r12,r14 +DB 0xc4,0x62,0x93,0xf6,0xb6,0x38,0x00,0x00,0x00 + mov rdx,QWORD[16+rsi] + adcx r12,rax + adox r13,rbx + adcx r13,r15 + adox r14,rbp + adcx r14,rbp + + mov QWORD[24+rdi],r8 + mov QWORD[32+rdi],r9 + + mulx rbx,r8,QWORD[24+rsi] + mulx rax,r9,QWORD[32+rsi] + adcx r8,r10 + adox r9,rbx + mulx rbx,r10,QWORD[40+rsi] + adcx r9,r11 + adox r10,rax +DB 0xc4,0xe2,0xa3,0xf6,0x86,0x30,0x00,0x00,0x00 + adcx r10,r12 + adox r11,r13 +DB 0xc4,0x62,0x9b,0xf6,0xae,0x38,0x00,0x00,0x00 +DB 0x3e + mov rdx,QWORD[24+rsi] + adcx r11,rbx + adox r12,rax + adcx r12,r14 + mov QWORD[40+rdi],r8 + mov QWORD[48+rdi],r9 + mulx rax,r8,QWORD[32+rsi] + adox r13,rbp + adcx r13,rbp + + mulx rbx,r9,QWORD[40+rsi] + adcx r8,r10 + adox r9,rax + mulx rax,r10,QWORD[48+rsi] + adcx r9,r11 + adox r10,r12 + mulx r12,r11,QWORD[56+rsi] + mov rdx,QWORD[32+rsi] + mov r14,QWORD[40+rsi] + adcx r10,rbx + adox r11,rax + mov r15,QWORD[48+rsi] + adcx r11,r13 + adox r12,rbp + adcx r12,rbp + + mov QWORD[56+rdi],r8 + mov QWORD[64+rdi],r9 + + mulx rax,r9,r14 + mov r8,QWORD[56+rsi] + adcx r9,r10 + mulx rbx,r10,r15 + adox r10,rax + adcx r10,r11 + mulx rax,r11,r8 + mov rdx,r14 + adox r11,rbx + adcx r11,r12 + + adcx rax,rbp + + mulx rbx,r14,r15 + mulx r13,r12,r8 + mov rdx,r15 + lea rsi,[64+rsi] + adcx r11,r14 + adox r12,rbx + adcx r12,rax + adox r13,rbp + +DB 0x67,0x67 + mulx r14,r8,r8 + adcx r13,r8 + adcx r14,rbp + + cmp rsi,QWORD[((8+8))+rsp] + je NEAR $L$sqrx8x_outer_break + + neg rcx + mov rcx,-8 + mov r15,rbp + mov r8,QWORD[64+rdi] + adcx r9,QWORD[72+rdi] + adcx r10,QWORD[80+rdi] + adcx r11,QWORD[88+rdi] + adc r12,QWORD[96+rdi] + adc r13,QWORD[104+rdi] + adc r14,QWORD[112+rdi] + adc r15,QWORD[120+rdi] + lea rbp,[rsi] + lea rdi,[128+rdi] + sbb rax,rax + + mov rdx,QWORD[((-64))+rsi] + mov QWORD[((16+8))+rsp],rax + mov QWORD[((24+8))+rsp],rdi + + + xor eax,eax + jmp NEAR $L$sqrx8x_loop + +ALIGN 32 +$L$sqrx8x_loop: + mov rbx,r8 + mulx r8,rax,QWORD[rbp] + adcx rbx,rax + adox r8,r9 + + mulx r9,rax,QWORD[8+rbp] + adcx r8,rax + adox r9,r10 + + mulx r10,rax,QWORD[16+rbp] + adcx r9,rax + adox r10,r11 + + mulx r11,rax,QWORD[24+rbp] + adcx r10,rax + adox r11,r12 + +DB 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + adcx r11,rax + adox r12,r13 + + mulx r13,rax,QWORD[40+rbp] + adcx r12,rax + adox r13,r14 + + mulx r14,rax,QWORD[48+rbp] + mov QWORD[rcx*8+rdi],rbx + mov ebx,0 + adcx r13,rax + adox r14,r15 + +DB 0xc4,0x62,0xfb,0xf6,0xbd,0x38,0x00,0x00,0x00 + mov rdx,QWORD[8+rcx*8+rsi] + adcx r14,rax + adox r15,rbx + adcx r15,rbx + +DB 0x67 + inc rcx + jnz NEAR $L$sqrx8x_loop + + lea rbp,[64+rbp] + mov rcx,-8 + cmp rbp,QWORD[((8+8))+rsp] + je NEAR $L$sqrx8x_break + + sub rbx,QWORD[((16+8))+rsp] +DB 0x66 + mov rdx,QWORD[((-64))+rsi] + adcx r8,QWORD[rdi] + adcx r9,QWORD[8+rdi] + adc r10,QWORD[16+rdi] + adc r11,QWORD[24+rdi] + adc r12,QWORD[32+rdi] + adc r13,QWORD[40+rdi] + adc r14,QWORD[48+rdi] + adc r15,QWORD[56+rdi] + lea rdi,[64+rdi] +DB 0x67 + sbb rax,rax + xor ebx,ebx + mov QWORD[((16+8))+rsp],rax + jmp NEAR $L$sqrx8x_loop + +ALIGN 32 +$L$sqrx8x_break: + xor rbp,rbp + sub rbx,QWORD[((16+8))+rsp] + adcx r8,rbp + mov rcx,QWORD[((24+8))+rsp] + adcx r9,rbp + mov rdx,QWORD[rsi] + adc r10,0 + mov QWORD[rdi],r8 + adc r11,0 + adc r12,0 + adc r13,0 + adc r14,0 + adc r15,0 + cmp rdi,rcx + je NEAR $L$sqrx8x_outer_loop + + mov QWORD[8+rdi],r9 + mov r9,QWORD[8+rcx] + mov QWORD[16+rdi],r10 + mov r10,QWORD[16+rcx] + mov QWORD[24+rdi],r11 + mov r11,QWORD[24+rcx] + mov QWORD[32+rdi],r12 + mov r12,QWORD[32+rcx] + mov QWORD[40+rdi],r13 + mov r13,QWORD[40+rcx] + mov QWORD[48+rdi],r14 + mov r14,QWORD[48+rcx] + mov QWORD[56+rdi],r15 + mov r15,QWORD[56+rcx] + mov rdi,rcx + jmp NEAR $L$sqrx8x_outer_loop + +ALIGN 32 +$L$sqrx8x_outer_break: + mov QWORD[72+rdi],r9 +DB 102,72,15,126,217 + mov QWORD[80+rdi],r10 + mov QWORD[88+rdi],r11 + mov QWORD[96+rdi],r12 + mov QWORD[104+rdi],r13 + mov QWORD[112+rdi],r14 + lea rdi,[((48+8))+rsp] + mov rdx,QWORD[rcx*1+rsi] + + mov r11,QWORD[8+rdi] + xor r10,r10 + mov r9,QWORD[((0+8))+rsp] + adox r11,r11 + mov r12,QWORD[16+rdi] + mov r13,QWORD[24+rdi] + + +ALIGN 32 +$L$sqrx4x_shift_n_add: + mulx rbx,rax,rdx + adox r12,r12 + adcx rax,r10 +DB 0x48,0x8b,0x94,0x0e,0x08,0x00,0x00,0x00 +DB 0x4c,0x8b,0x97,0x20,0x00,0x00,0x00 + adox r13,r13 + adcx rbx,r11 + mov r11,QWORD[40+rdi] + mov QWORD[rdi],rax + mov QWORD[8+rdi],rbx + + mulx rbx,rax,rdx + adox r10,r10 + adcx rax,r12 + mov rdx,QWORD[16+rcx*1+rsi] + mov r12,QWORD[48+rdi] + adox r11,r11 + adcx rbx,r13 + mov r13,QWORD[56+rdi] + mov QWORD[16+rdi],rax + mov QWORD[24+rdi],rbx + + mulx rbx,rax,rdx + adox r12,r12 + adcx rax,r10 + mov rdx,QWORD[24+rcx*1+rsi] + lea rcx,[32+rcx] + mov r10,QWORD[64+rdi] + adox r13,r13 + adcx rbx,r11 + mov r11,QWORD[72+rdi] + mov QWORD[32+rdi],rax + mov QWORD[40+rdi],rbx + + mulx rbx,rax,rdx + adox r10,r10 + adcx rax,r12 + jrcxz $L$sqrx4x_shift_n_add_break +DB 0x48,0x8b,0x94,0x0e,0x00,0x00,0x00,0x00 + adox r11,r11 + adcx rbx,r13 + mov r12,QWORD[80+rdi] + mov r13,QWORD[88+rdi] + mov QWORD[48+rdi],rax + mov QWORD[56+rdi],rbx + lea rdi,[64+rdi] + nop + jmp NEAR $L$sqrx4x_shift_n_add + +ALIGN 32 +$L$sqrx4x_shift_n_add_break: + adcx rbx,r13 + mov QWORD[48+rdi],rax + mov QWORD[56+rdi],rbx + lea rdi,[64+rdi] +DB 102,72,15,126,213 +__bn_sqrx8x_reduction: + xor eax,eax + mov rbx,QWORD[((32+8))+rsp] + mov rdx,QWORD[((48+8))+rsp] + lea rcx,[((-64))+r9*1+rbp] + + mov QWORD[((0+8))+rsp],rcx + mov QWORD[((8+8))+rsp],rdi + + lea rdi,[((48+8))+rsp] + jmp NEAR $L$sqrx8x_reduction_loop + +ALIGN 32 +$L$sqrx8x_reduction_loop: + mov r9,QWORD[8+rdi] + mov r10,QWORD[16+rdi] + mov r11,QWORD[24+rdi] + mov r12,QWORD[32+rdi] + mov r8,rdx + imul rdx,rbx + mov r13,QWORD[40+rdi] + mov r14,QWORD[48+rdi] + mov r15,QWORD[56+rdi] + mov QWORD[((24+8))+rsp],rax + + lea rdi,[64+rdi] + xor rsi,rsi + mov rcx,-8 + jmp NEAR $L$sqrx8x_reduce + +ALIGN 32 +$L$sqrx8x_reduce: + mov rbx,r8 + mulx r8,rax,QWORD[rbp] + adcx rax,rbx + adox r8,r9 + + mulx r9,rbx,QWORD[8+rbp] + adcx r8,rbx + adox r9,r10 + + mulx r10,rbx,QWORD[16+rbp] + adcx r9,rbx + adox r10,r11 + + mulx r11,rbx,QWORD[24+rbp] + adcx r10,rbx + adox r11,r12 + +DB 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x00 + mov rax,rdx + mov rdx,r8 + adcx r11,rbx + adox r12,r13 + + mulx rdx,rbx,QWORD[((32+8))+rsp] + mov rdx,rax + mov QWORD[((64+48+8))+rcx*8+rsp],rax + + mulx r13,rax,QWORD[40+rbp] + adcx r12,rax + adox r13,r14 + + mulx r14,rax,QWORD[48+rbp] + adcx r13,rax + adox r14,r15 + + mulx r15,rax,QWORD[56+rbp] + mov rdx,rbx + adcx r14,rax + adox r15,rsi + adcx r15,rsi + +DB 0x67,0x67,0x67 + inc rcx + jnz NEAR $L$sqrx8x_reduce + + mov rax,rsi + cmp rbp,QWORD[((0+8))+rsp] + jae NEAR $L$sqrx8x_no_tail + + mov rdx,QWORD[((48+8))+rsp] + add r8,QWORD[rdi] + lea rbp,[64+rbp] + mov rcx,-8 + adcx r9,QWORD[8+rdi] + adcx r10,QWORD[16+rdi] + adc r11,QWORD[24+rdi] + adc r12,QWORD[32+rdi] + adc r13,QWORD[40+rdi] + adc r14,QWORD[48+rdi] + adc r15,QWORD[56+rdi] + lea rdi,[64+rdi] + sbb rax,rax + + xor rsi,rsi + mov QWORD[((16+8))+rsp],rax + jmp NEAR $L$sqrx8x_tail + +ALIGN 32 +$L$sqrx8x_tail: + mov rbx,r8 + mulx r8,rax,QWORD[rbp] + adcx rbx,rax + adox r8,r9 + + mulx r9,rax,QWORD[8+rbp] + adcx r8,rax + adox r9,r10 + + mulx r10,rax,QWORD[16+rbp] + adcx r9,rax + adox r10,r11 + + mulx r11,rax,QWORD[24+rbp] + adcx r10,rax + adox r11,r12 + +DB 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + adcx r11,rax + adox r12,r13 + + mulx r13,rax,QWORD[40+rbp] + adcx r12,rax + adox r13,r14 + + mulx r14,rax,QWORD[48+rbp] + adcx r13,rax + adox r14,r15 + + mulx r15,rax,QWORD[56+rbp] + mov rdx,QWORD[((72+48+8))+rcx*8+rsp] + adcx r14,rax + adox r15,rsi + mov QWORD[rcx*8+rdi],rbx + mov rbx,r8 + adcx r15,rsi + + inc rcx + jnz NEAR $L$sqrx8x_tail + + cmp rbp,QWORD[((0+8))+rsp] + jae NEAR $L$sqrx8x_tail_done + + sub rsi,QWORD[((16+8))+rsp] + mov rdx,QWORD[((48+8))+rsp] + lea rbp,[64+rbp] + adc r8,QWORD[rdi] + adc r9,QWORD[8+rdi] + adc r10,QWORD[16+rdi] + adc r11,QWORD[24+rdi] + adc r12,QWORD[32+rdi] + adc r13,QWORD[40+rdi] + adc r14,QWORD[48+rdi] + adc r15,QWORD[56+rdi] + lea rdi,[64+rdi] + sbb rax,rax + sub rcx,8 + + xor rsi,rsi + mov QWORD[((16+8))+rsp],rax + jmp NEAR $L$sqrx8x_tail + +ALIGN 32 +$L$sqrx8x_tail_done: + xor rax,rax + add r8,QWORD[((24+8))+rsp] + adc r9,0 + adc r10,0 + adc r11,0 + adc r12,0 + adc r13,0 + adc r14,0 + adc r15,0 + adc rax,0 + + sub rsi,QWORD[((16+8))+rsp] +$L$sqrx8x_no_tail: + adc r8,QWORD[rdi] +DB 102,72,15,126,217 + adc r9,QWORD[8+rdi] + mov rsi,QWORD[56+rbp] +DB 102,72,15,126,213 + adc r10,QWORD[16+rdi] + adc r11,QWORD[24+rdi] + adc r12,QWORD[32+rdi] + adc r13,QWORD[40+rdi] + adc r14,QWORD[48+rdi] + adc r15,QWORD[56+rdi] + adc rax,0 + + mov rbx,QWORD[((32+8))+rsp] + mov rdx,QWORD[64+rcx*1+rdi] + + mov QWORD[rdi],r8 + lea r8,[64+rdi] + mov QWORD[8+rdi],r9 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + mov QWORD[32+rdi],r12 + mov QWORD[40+rdi],r13 + mov QWORD[48+rdi],r14 + mov QWORD[56+rdi],r15 + + lea rdi,[64+rcx*1+rdi] + cmp r8,QWORD[((8+8))+rsp] + jb NEAR $L$sqrx8x_reduction_loop + DB 0F3h,0C3h ;repret + + +ALIGN 32 +__bn_postx4x_internal: + + mov r12,QWORD[rbp] + mov r10,rcx + mov r9,rcx + neg rax + sar rcx,3+2 + +DB 102,72,15,126,202 +DB 102,72,15,126,206 + dec r12 + mov r13,QWORD[8+rbp] + xor r8,r8 + mov r14,QWORD[16+rbp] + mov r15,QWORD[24+rbp] + jmp NEAR $L$sqrx4x_sub_entry + +ALIGN 16 +$L$sqrx4x_sub: + mov r12,QWORD[rbp] + mov r13,QWORD[8+rbp] + mov r14,QWORD[16+rbp] + mov r15,QWORD[24+rbp] +$L$sqrx4x_sub_entry: + andn r12,r12,rax + lea rbp,[32+rbp] + andn r13,r13,rax + andn r14,r14,rax + andn r15,r15,rax + + neg r8 + adc r12,QWORD[rdi] + adc r13,QWORD[8+rdi] + adc r14,QWORD[16+rdi] + adc r15,QWORD[24+rdi] + mov QWORD[rdx],r12 + lea rdi,[32+rdi] + mov QWORD[8+rdx],r13 + sbb r8,r8 + mov QWORD[16+rdx],r14 + mov QWORD[24+rdx],r15 + lea rdx,[32+rdx] + + inc rcx + jnz NEAR $L$sqrx4x_sub + + neg r9 + + DB 0F3h,0C3h ;repret + + +global bn_get_bits5 + +ALIGN 16 +bn_get_bits5: + + lea r10,[rcx] + lea r11,[1+rcx] + mov ecx,edx + shr edx,4 + and ecx,15 + lea eax,[((-8))+rcx] + cmp ecx,11 + cmova r10,r11 + cmova ecx,eax + movzx eax,WORD[rdx*2+r10] + shr eax,cl + and eax,31 + DB 0F3h,0C3h ;repret + + + +global bn_scatter5 + +ALIGN 16 +bn_scatter5: + + cmp edx,0 + jz NEAR $L$scatter_epilogue + lea r8,[r9*8+r8] +$L$scatter: + mov rax,QWORD[rcx] + lea rcx,[8+rcx] + mov QWORD[r8],rax + lea r8,[256+r8] + sub edx,1 + jnz NEAR $L$scatter +$L$scatter_epilogue: + DB 0F3h,0C3h ;repret + + + +global bn_gather5 + +ALIGN 32 +bn_gather5: +$L$SEH_begin_bn_gather5: + + +DB 0x4c,0x8d,0x14,0x24 +DB 0x48,0x81,0xec,0x08,0x01,0x00,0x00 + lea rax,[$L$inc] + and rsp,-16 + + movd xmm5,r9d + movdqa xmm0,XMMWORD[rax] + movdqa xmm1,XMMWORD[16+rax] + lea r11,[128+r8] + lea rax,[128+rsp] + + pshufd xmm5,xmm5,0 + movdqa xmm4,xmm1 + movdqa xmm2,xmm1 + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa xmm3,xmm4 + + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[(-128)+rax],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[(-112)+rax],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[(-96)+rax],xmm2 + movdqa xmm2,xmm4 + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[(-80)+rax],xmm3 + movdqa xmm3,xmm4 + + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[(-64)+rax],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[(-48)+rax],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[(-32)+rax],xmm2 + movdqa xmm2,xmm4 + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[(-16)+rax],xmm3 + movdqa xmm3,xmm4 + + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[rax],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[16+rax],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[32+rax],xmm2 + movdqa xmm2,xmm4 + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[48+rax],xmm3 + movdqa xmm3,xmm4 + + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[64+rax],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[80+rax],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[96+rax],xmm2 + movdqa xmm2,xmm4 + movdqa XMMWORD[112+rax],xmm3 + jmp NEAR $L$gather + +ALIGN 32 +$L$gather: + pxor xmm4,xmm4 + pxor xmm5,xmm5 + movdqa xmm0,XMMWORD[((-128))+r11] + movdqa xmm1,XMMWORD[((-112))+r11] + movdqa xmm2,XMMWORD[((-96))+r11] + pand xmm0,XMMWORD[((-128))+rax] + movdqa xmm3,XMMWORD[((-80))+r11] + pand xmm1,XMMWORD[((-112))+rax] + por xmm4,xmm0 + pand xmm2,XMMWORD[((-96))+rax] + por xmm5,xmm1 + pand xmm3,XMMWORD[((-80))+rax] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[((-64))+r11] + movdqa xmm1,XMMWORD[((-48))+r11] + movdqa xmm2,XMMWORD[((-32))+r11] + pand xmm0,XMMWORD[((-64))+rax] + movdqa xmm3,XMMWORD[((-16))+r11] + pand xmm1,XMMWORD[((-48))+rax] + por xmm4,xmm0 + pand xmm2,XMMWORD[((-32))+rax] + por xmm5,xmm1 + pand xmm3,XMMWORD[((-16))+rax] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[r11] + movdqa xmm1,XMMWORD[16+r11] + movdqa xmm2,XMMWORD[32+r11] + pand xmm0,XMMWORD[rax] + movdqa xmm3,XMMWORD[48+r11] + pand xmm1,XMMWORD[16+rax] + por xmm4,xmm0 + pand xmm2,XMMWORD[32+rax] + por xmm5,xmm1 + pand xmm3,XMMWORD[48+rax] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[64+r11] + movdqa xmm1,XMMWORD[80+r11] + movdqa xmm2,XMMWORD[96+r11] + pand xmm0,XMMWORD[64+rax] + movdqa xmm3,XMMWORD[112+r11] + pand xmm1,XMMWORD[80+rax] + por xmm4,xmm0 + pand xmm2,XMMWORD[96+rax] + por xmm5,xmm1 + pand xmm3,XMMWORD[112+rax] + por xmm4,xmm2 + por xmm5,xmm3 + por xmm4,xmm5 + lea r11,[256+r11] + pshufd xmm0,xmm4,0x4e + por xmm0,xmm4 + movq QWORD[rcx],xmm0 + lea rcx,[8+rcx] + sub edx,1 + jnz NEAR $L$gather + + lea rsp,[r10] + DB 0F3h,0C3h ;repret +$L$SEH_end_bn_gather5: + + +ALIGN 64 +$L$inc: + DD 0,0,1,1 + DD 2,2,2,2 +DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 +DB 112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115 +DB 99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111 +DB 114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79 +DB 71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111 +DB 112,101,110,115,115,108,46,111,114,103,62,0 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +mul_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_pop_regs + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[8+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + lea r10,[$L$mul_epilogue] + cmp rbx,r10 + ja NEAR $L$body_40 + + mov r10,QWORD[192+r8] + mov rax,QWORD[8+r10*8+rax] + + jmp NEAR $L$common_pop_regs + +$L$body_40: + mov rax,QWORD[40+rax] +$L$common_pop_regs: + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_bn_mul_mont_gather5 wrt ..imagebase + DD $L$SEH_end_bn_mul_mont_gather5 wrt ..imagebase + DD $L$SEH_info_bn_mul_mont_gather5 wrt ..imagebase + + DD $L$SEH_begin_bn_mul4x_mont_gather5 wrt ..imagebase + DD $L$SEH_end_bn_mul4x_mont_gather5 wrt ..imagebase + DD $L$SEH_info_bn_mul4x_mont_gather5 wrt ..imagebase + + DD $L$SEH_begin_bn_power5 wrt ..imagebase + DD $L$SEH_end_bn_power5 wrt ..imagebase + DD $L$SEH_info_bn_power5 wrt ..imagebase + DD $L$SEH_begin_bn_mulx4x_mont_gather5 wrt ..imagebase + DD $L$SEH_end_bn_mulx4x_mont_gather5 wrt ..imagebase + DD $L$SEH_info_bn_mulx4x_mont_gather5 wrt ..imagebase + + DD $L$SEH_begin_bn_powerx5 wrt ..imagebase + DD $L$SEH_end_bn_powerx5 wrt ..imagebase + DD $L$SEH_info_bn_powerx5 wrt ..imagebase + DD $L$SEH_begin_bn_gather5 wrt ..imagebase + DD $L$SEH_end_bn_gather5 wrt ..imagebase + DD $L$SEH_info_bn_gather5 wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_bn_mul_mont_gather5: +DB 9,0,0,0 + DD mul_handler wrt ..imagebase + DD $L$mul_body wrt ..imagebase,$L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase +ALIGN 8 +$L$SEH_info_bn_mul4x_mont_gather5: +DB 9,0,0,0 + DD mul_handler wrt ..imagebase + DD $L$mul4x_prologue wrt ..imagebase,$L$mul4x_body wrt ..imagebase,$L$mul4x_epilogue wrt ..imagebase +ALIGN 8 +$L$SEH_info_bn_power5: +DB 9,0,0,0 + DD mul_handler wrt ..imagebase + DD $L$power5_prologue wrt ..imagebase,$L$power5_body wrt ..imagebase,$L$power5_epilogue wrt ..imagebase +ALIGN 8 +$L$SEH_info_bn_mulx4x_mont_gather5: +DB 9,0,0,0 + DD mul_handler wrt ..imagebase + DD $L$mulx4x_prologue wrt ..imagebase,$L$mulx4x_body wrt ..imagebase,$L$mulx4x_epilogue wrt ..imagebase +ALIGN 8 +$L$SEH_info_bn_powerx5: +DB 9,0,0,0 + DD mul_handler wrt ..imagebase + DD $L$powerx5_prologue wrt ..imagebase,$L$powerx5_body wrt ..imagebase,$L$powerx5_epilogue wrt ..imagebase +ALIGN 8 +$L$SEH_info_bn_gather5: +DB 0x01,0x0b,0x03,0x0a +DB 0x0b,0x01,0x21,0x00 +DB 0x04,0xa3,0x00,0x00 +ALIGN 8 diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/camellia/cmll-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/camellia/cmll-x86_64.asm new file mode 100644 index 0000000..4cf1d32 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/camellia/cmll-x86_64.asm @@ -0,0 +1,2159 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + + +global Camellia_EncryptBlock + +ALIGN 16 +Camellia_EncryptBlock: + + mov eax,128 + sub eax,ecx + mov ecx,3 + adc ecx,0 + jmp NEAR $L$enc_rounds + + + +global Camellia_EncryptBlock_Rounds + +ALIGN 16 +$L$enc_rounds: +Camellia_EncryptBlock_Rounds: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_Camellia_EncryptBlock_Rounds: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + + push rbx + + push rbp + + push r13 + + push r14 + + push r15 + +$L$enc_prologue: + + + mov r13,rcx + mov r14,rdx + + shl edi,6 + lea rbp,[$L$Camellia_SBOX] + lea r15,[rdi*1+r14] + + mov r8d,DWORD[rsi] + mov r9d,DWORD[4+rsi] + mov r10d,DWORD[8+rsi] + bswap r8d + mov r11d,DWORD[12+rsi] + bswap r9d + bswap r10d + bswap r11d + + call _x86_64_Camellia_encrypt + + bswap r8d + bswap r9d + bswap r10d + mov DWORD[r13],r8d + bswap r11d + mov DWORD[4+r13],r9d + mov DWORD[8+r13],r10d + mov DWORD[12+r13],r11d + + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov rbp,QWORD[24+rsp] + + mov rbx,QWORD[32+rsp] + + lea rsp,[40+rsp] + +$L$enc_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_Camellia_EncryptBlock_Rounds: + + +ALIGN 16 +_x86_64_Camellia_encrypt: + + xor r9d,DWORD[r14] + xor r8d,DWORD[4+r14] + xor r11d,DWORD[8+r14] + xor r10d,DWORD[12+r14] +ALIGN 16 +$L$eloop: + mov ebx,DWORD[16+r14] + mov eax,DWORD[20+r14] + + xor eax,r8d + xor ebx,r9d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[24+r14] + mov eax,DWORD[28+r14] + xor ecx,edx + ror edx,8 + xor r10d,ecx + xor r11d,ecx + xor r11d,edx + xor eax,r10d + xor ebx,r11d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[32+r14] + mov eax,DWORD[36+r14] + xor ecx,edx + ror edx,8 + xor r8d,ecx + xor r9d,ecx + xor r9d,edx + xor eax,r8d + xor ebx,r9d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[40+r14] + mov eax,DWORD[44+r14] + xor ecx,edx + ror edx,8 + xor r10d,ecx + xor r11d,ecx + xor r11d,edx + xor eax,r10d + xor ebx,r11d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[48+r14] + mov eax,DWORD[52+r14] + xor ecx,edx + ror edx,8 + xor r8d,ecx + xor r9d,ecx + xor r9d,edx + xor eax,r8d + xor ebx,r9d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[56+r14] + mov eax,DWORD[60+r14] + xor ecx,edx + ror edx,8 + xor r10d,ecx + xor r11d,ecx + xor r11d,edx + xor eax,r10d + xor ebx,r11d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[64+r14] + mov eax,DWORD[68+r14] + xor ecx,edx + ror edx,8 + xor r8d,ecx + xor r9d,ecx + xor r9d,edx + lea r14,[64+r14] + cmp r14,r15 + mov edx,DWORD[8+r14] + mov ecx,DWORD[12+r14] + je NEAR $L$edone + + and eax,r8d + or edx,r11d + rol eax,1 + xor r10d,edx + xor r9d,eax + and ecx,r10d + or ebx,r9d + rol ecx,1 + xor r8d,ebx + xor r11d,ecx + jmp NEAR $L$eloop + +ALIGN 16 +$L$edone: + xor eax,r10d + xor ebx,r11d + xor ecx,r8d + xor edx,r9d + + mov r8d,eax + mov r9d,ebx + mov r10d,ecx + mov r11d,edx + +DB 0xf3,0xc3 + + + + +global Camellia_DecryptBlock + +ALIGN 16 +Camellia_DecryptBlock: + + mov eax,128 + sub eax,ecx + mov ecx,3 + adc ecx,0 + jmp NEAR $L$dec_rounds + + + +global Camellia_DecryptBlock_Rounds + +ALIGN 16 +$L$dec_rounds: +Camellia_DecryptBlock_Rounds: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_Camellia_DecryptBlock_Rounds: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + + push rbx + + push rbp + + push r13 + + push r14 + + push r15 + +$L$dec_prologue: + + + mov r13,rcx + mov r15,rdx + + shl edi,6 + lea rbp,[$L$Camellia_SBOX] + lea r14,[rdi*1+r15] + + mov r8d,DWORD[rsi] + mov r9d,DWORD[4+rsi] + mov r10d,DWORD[8+rsi] + bswap r8d + mov r11d,DWORD[12+rsi] + bswap r9d + bswap r10d + bswap r11d + + call _x86_64_Camellia_decrypt + + bswap r8d + bswap r9d + bswap r10d + mov DWORD[r13],r8d + bswap r11d + mov DWORD[4+r13],r9d + mov DWORD[8+r13],r10d + mov DWORD[12+r13],r11d + + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov rbp,QWORD[24+rsp] + + mov rbx,QWORD[32+rsp] + + lea rsp,[40+rsp] + +$L$dec_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_Camellia_DecryptBlock_Rounds: + + +ALIGN 16 +_x86_64_Camellia_decrypt: + + xor r9d,DWORD[r14] + xor r8d,DWORD[4+r14] + xor r11d,DWORD[8+r14] + xor r10d,DWORD[12+r14] +ALIGN 16 +$L$dloop: + mov ebx,DWORD[((-8))+r14] + mov eax,DWORD[((-4))+r14] + + xor eax,r8d + xor ebx,r9d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[((-16))+r14] + mov eax,DWORD[((-12))+r14] + xor ecx,edx + ror edx,8 + xor r10d,ecx + xor r11d,ecx + xor r11d,edx + xor eax,r10d + xor ebx,r11d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[((-24))+r14] + mov eax,DWORD[((-20))+r14] + xor ecx,edx + ror edx,8 + xor r8d,ecx + xor r9d,ecx + xor r9d,edx + xor eax,r8d + xor ebx,r9d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[((-32))+r14] + mov eax,DWORD[((-28))+r14] + xor ecx,edx + ror edx,8 + xor r10d,ecx + xor r11d,ecx + xor r11d,edx + xor eax,r10d + xor ebx,r11d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[((-40))+r14] + mov eax,DWORD[((-36))+r14] + xor ecx,edx + ror edx,8 + xor r8d,ecx + xor r9d,ecx + xor r9d,edx + xor eax,r8d + xor ebx,r9d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[((-48))+r14] + mov eax,DWORD[((-44))+r14] + xor ecx,edx + ror edx,8 + xor r10d,ecx + xor r11d,ecx + xor r11d,edx + xor eax,r10d + xor ebx,r11d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[((-56))+r14] + mov eax,DWORD[((-52))+r14] + xor ecx,edx + ror edx,8 + xor r8d,ecx + xor r9d,ecx + xor r9d,edx + lea r14,[((-64))+r14] + cmp r14,r15 + mov edx,DWORD[r14] + mov ecx,DWORD[4+r14] + je NEAR $L$ddone + + and eax,r8d + or edx,r11d + rol eax,1 + xor r10d,edx + xor r9d,eax + and ecx,r10d + or ebx,r9d + rol ecx,1 + xor r8d,ebx + xor r11d,ecx + + jmp NEAR $L$dloop + +ALIGN 16 +$L$ddone: + xor ecx,r10d + xor edx,r11d + xor eax,r8d + xor ebx,r9d + + mov r8d,ecx + mov r9d,edx + mov r10d,eax + mov r11d,ebx + +DB 0xf3,0xc3 + + +global Camellia_Ekeygen + +ALIGN 16 +Camellia_Ekeygen: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_Camellia_Ekeygen: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + push rbx + + push rbp + + push r13 + + push r14 + + push r15 + +$L$key_prologue: + + mov r15d,edi + mov r13,rdx + + mov r8d,DWORD[rsi] + mov r9d,DWORD[4+rsi] + mov r10d,DWORD[8+rsi] + mov r11d,DWORD[12+rsi] + + bswap r8d + bswap r9d + bswap r10d + bswap r11d + mov DWORD[r13],r9d + mov DWORD[4+r13],r8d + mov DWORD[8+r13],r11d + mov DWORD[12+r13],r10d + cmp r15,128 + je NEAR $L$1st128 + + mov r8d,DWORD[16+rsi] + mov r9d,DWORD[20+rsi] + cmp r15,192 + je NEAR $L$1st192 + mov r10d,DWORD[24+rsi] + mov r11d,DWORD[28+rsi] + jmp NEAR $L$1st256 +$L$1st192: + mov r10d,r8d + mov r11d,r9d + not r10d + not r11d +$L$1st256: + bswap r8d + bswap r9d + bswap r10d + bswap r11d + mov DWORD[32+r13],r9d + mov DWORD[36+r13],r8d + mov DWORD[40+r13],r11d + mov DWORD[44+r13],r10d + xor r9d,DWORD[r13] + xor r8d,DWORD[4+r13] + xor r11d,DWORD[8+r13] + xor r10d,DWORD[12+r13] + +$L$1st128: + lea r14,[$L$Camellia_SIGMA] + lea rbp,[$L$Camellia_SBOX] + + mov ebx,DWORD[r14] + mov eax,DWORD[4+r14] + xor eax,r8d + xor ebx,r9d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[8+r14] + mov eax,DWORD[12+r14] + xor ecx,edx + ror edx,8 + xor r10d,ecx + xor r11d,ecx + xor r11d,edx + xor eax,r10d + xor ebx,r11d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[16+r14] + mov eax,DWORD[20+r14] + xor ecx,edx + ror edx,8 + xor r8d,ecx + xor r9d,ecx + xor r9d,edx + xor r9d,DWORD[r13] + xor r8d,DWORD[4+r13] + xor r11d,DWORD[8+r13] + xor r10d,DWORD[12+r13] + xor eax,r8d + xor ebx,r9d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[24+r14] + mov eax,DWORD[28+r14] + xor ecx,edx + ror edx,8 + xor r10d,ecx + xor r11d,ecx + xor r11d,edx + xor eax,r10d + xor ebx,r11d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[32+r14] + mov eax,DWORD[36+r14] + xor ecx,edx + ror edx,8 + xor r8d,ecx + xor r9d,ecx + xor r9d,edx + cmp r15,128 + jne NEAR $L$2nd256 + + lea r13,[128+r13] + shl r8,32 + shl r10,32 + or r8,r9 + or r10,r11 + mov rax,QWORD[((-128))+r13] + mov rbx,QWORD[((-120))+r13] + mov QWORD[((-112))+r13],r8 + mov QWORD[((-104))+r13],r10 + mov r11,rax + shl rax,15 + mov r9,rbx + shr r9,49 + shr r11,49 + or rax,r9 + shl rbx,15 + or rbx,r11 + mov QWORD[((-96))+r13],rax + mov QWORD[((-88))+r13],rbx + mov r11,r8 + shl r8,15 + mov r9,r10 + shr r9,49 + shr r11,49 + or r8,r9 + shl r10,15 + or r10,r11 + mov QWORD[((-80))+r13],r8 + mov QWORD[((-72))+r13],r10 + mov r11,r8 + shl r8,15 + mov r9,r10 + shr r9,49 + shr r11,49 + or r8,r9 + shl r10,15 + or r10,r11 + mov QWORD[((-64))+r13],r8 + mov QWORD[((-56))+r13],r10 + mov r11,rax + shl rax,30 + mov r9,rbx + shr r9,34 + shr r11,34 + or rax,r9 + shl rbx,30 + or rbx,r11 + mov QWORD[((-48))+r13],rax + mov QWORD[((-40))+r13],rbx + mov r11,r8 + shl r8,15 + mov r9,r10 + shr r9,49 + shr r11,49 + or r8,r9 + shl r10,15 + or r10,r11 + mov QWORD[((-32))+r13],r8 + mov r11,rax + shl rax,15 + mov r9,rbx + shr r9,49 + shr r11,49 + or rax,r9 + shl rbx,15 + or rbx,r11 + mov QWORD[((-24))+r13],rbx + mov r11,r8 + shl r8,15 + mov r9,r10 + shr r9,49 + shr r11,49 + or r8,r9 + shl r10,15 + or r10,r11 + mov QWORD[((-16))+r13],r8 + mov QWORD[((-8))+r13],r10 + mov r11,rax + shl rax,17 + mov r9,rbx + shr r9,47 + shr r11,47 + or rax,r9 + shl rbx,17 + or rbx,r11 + mov QWORD[r13],rax + mov QWORD[8+r13],rbx + mov r11,rax + shl rax,17 + mov r9,rbx + shr r9,47 + shr r11,47 + or rax,r9 + shl rbx,17 + or rbx,r11 + mov QWORD[16+r13],rax + mov QWORD[24+r13],rbx + mov r11,r8 + shl r8,34 + mov r9,r10 + shr r9,30 + shr r11,30 + or r8,r9 + shl r10,34 + or r10,r11 + mov QWORD[32+r13],r8 + mov QWORD[40+r13],r10 + mov r11,rax + shl rax,17 + mov r9,rbx + shr r9,47 + shr r11,47 + or rax,r9 + shl rbx,17 + or rbx,r11 + mov QWORD[48+r13],rax + mov QWORD[56+r13],rbx + mov r11,r8 + shl r8,17 + mov r9,r10 + shr r9,47 + shr r11,47 + or r8,r9 + shl r10,17 + or r10,r11 + mov QWORD[64+r13],r8 + mov QWORD[72+r13],r10 + mov eax,3 + jmp NEAR $L$done +ALIGN 16 +$L$2nd256: + mov DWORD[48+r13],r9d + mov DWORD[52+r13],r8d + mov DWORD[56+r13],r11d + mov DWORD[60+r13],r10d + xor r9d,DWORD[32+r13] + xor r8d,DWORD[36+r13] + xor r11d,DWORD[40+r13] + xor r10d,DWORD[44+r13] + xor eax,r8d + xor ebx,r9d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[40+r14] + mov eax,DWORD[44+r14] + xor ecx,edx + ror edx,8 + xor r10d,ecx + xor r11d,ecx + xor r11d,edx + xor eax,r10d + xor ebx,r11d + movzx esi,ah + movzx edi,bl + mov edx,DWORD[2052+rsi*8+rbp] + mov ecx,DWORD[rdi*8+rbp] + movzx esi,al + shr eax,16 + movzx edi,bh + xor edx,DWORD[4+rsi*8+rbp] + shr ebx,16 + xor ecx,DWORD[4+rdi*8+rbp] + movzx esi,ah + movzx edi,bl + xor edx,DWORD[rsi*8+rbp] + xor ecx,DWORD[2052+rdi*8+rbp] + movzx esi,al + movzx edi,bh + xor edx,DWORD[2048+rsi*8+rbp] + xor ecx,DWORD[2048+rdi*8+rbp] + mov ebx,DWORD[48+r14] + mov eax,DWORD[52+r14] + xor ecx,edx + ror edx,8 + xor r8d,ecx + xor r9d,ecx + xor r9d,edx + mov rax,QWORD[r13] + mov rbx,QWORD[8+r13] + mov rcx,QWORD[32+r13] + mov rdx,QWORD[40+r13] + mov r14,QWORD[48+r13] + mov r15,QWORD[56+r13] + lea r13,[128+r13] + shl r8,32 + shl r10,32 + or r8,r9 + or r10,r11 + mov QWORD[((-112))+r13],r8 + mov QWORD[((-104))+r13],r10 + mov r11,rcx + shl rcx,15 + mov r9,rdx + shr r9,49 + shr r11,49 + or rcx,r9 + shl rdx,15 + or rdx,r11 + mov QWORD[((-96))+r13],rcx + mov QWORD[((-88))+r13],rdx + mov r11,r14 + shl r14,15 + mov r9,r15 + shr r9,49 + shr r11,49 + or r14,r9 + shl r15,15 + or r15,r11 + mov QWORD[((-80))+r13],r14 + mov QWORD[((-72))+r13],r15 + mov r11,rcx + shl rcx,15 + mov r9,rdx + shr r9,49 + shr r11,49 + or rcx,r9 + shl rdx,15 + or rdx,r11 + mov QWORD[((-64))+r13],rcx + mov QWORD[((-56))+r13],rdx + mov r11,r8 + shl r8,30 + mov r9,r10 + shr r9,34 + shr r11,34 + or r8,r9 + shl r10,30 + or r10,r11 + mov QWORD[((-48))+r13],r8 + mov QWORD[((-40))+r13],r10 + mov r11,rax + shl rax,45 + mov r9,rbx + shr r9,19 + shr r11,19 + or rax,r9 + shl rbx,45 + or rbx,r11 + mov QWORD[((-32))+r13],rax + mov QWORD[((-24))+r13],rbx + mov r11,r14 + shl r14,30 + mov r9,r15 + shr r9,34 + shr r11,34 + or r14,r9 + shl r15,30 + or r15,r11 + mov QWORD[((-16))+r13],r14 + mov QWORD[((-8))+r13],r15 + mov r11,rax + shl rax,15 + mov r9,rbx + shr r9,49 + shr r11,49 + or rax,r9 + shl rbx,15 + or rbx,r11 + mov QWORD[r13],rax + mov QWORD[8+r13],rbx + mov r11,rcx + shl rcx,30 + mov r9,rdx + shr r9,34 + shr r11,34 + or rcx,r9 + shl rdx,30 + or rdx,r11 + mov QWORD[16+r13],rcx + mov QWORD[24+r13],rdx + mov r11,r8 + shl r8,30 + mov r9,r10 + shr r9,34 + shr r11,34 + or r8,r9 + shl r10,30 + or r10,r11 + mov QWORD[32+r13],r8 + mov QWORD[40+r13],r10 + mov r11,rax + shl rax,17 + mov r9,rbx + shr r9,47 + shr r11,47 + or rax,r9 + shl rbx,17 + or rbx,r11 + mov QWORD[48+r13],rax + mov QWORD[56+r13],rbx + mov r11,r14 + shl r14,32 + mov r9,r15 + shr r9,32 + shr r11,32 + or r14,r9 + shl r15,32 + or r15,r11 + mov QWORD[64+r13],r14 + mov QWORD[72+r13],r15 + mov r11,rcx + shl rcx,34 + mov r9,rdx + shr r9,30 + shr r11,30 + or rcx,r9 + shl rdx,34 + or rdx,r11 + mov QWORD[80+r13],rcx + mov QWORD[88+r13],rdx + mov r11,r14 + shl r14,17 + mov r9,r15 + shr r9,47 + shr r11,47 + or r14,r9 + shl r15,17 + or r15,r11 + mov QWORD[96+r13],r14 + mov QWORD[104+r13],r15 + mov r11,rax + shl rax,34 + mov r9,rbx + shr r9,30 + shr r11,30 + or rax,r9 + shl rbx,34 + or rbx,r11 + mov QWORD[112+r13],rax + mov QWORD[120+r13],rbx + mov r11,r8 + shl r8,51 + mov r9,r10 + shr r9,13 + shr r11,13 + or r8,r9 + shl r10,51 + or r10,r11 + mov QWORD[128+r13],r8 + mov QWORD[136+r13],r10 + mov eax,4 +$L$done: + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov rbp,QWORD[24+rsp] + + mov rbx,QWORD[32+rsp] + + lea rsp,[40+rsp] + +$L$key_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_Camellia_Ekeygen: +ALIGN 64 +$L$Camellia_SIGMA: + DD 0x3bcc908b,0xa09e667f,0x4caa73b2,0xb67ae858 + DD 0xe94f82be,0xc6ef372f,0xf1d36f1c,0x54ff53a5 + DD 0xde682d1d,0x10e527fa,0xb3e6c1fd,0xb05688c2 + DD 0,0,0,0 +$L$Camellia_SBOX: + DD 0x70707000,0x70700070 + DD 0x82828200,0x2c2c002c + DD 0x2c2c2c00,0xb3b300b3 + DD 0xececec00,0xc0c000c0 + DD 0xb3b3b300,0xe4e400e4 + DD 0x27272700,0x57570057 + DD 0xc0c0c000,0xeaea00ea + DD 0xe5e5e500,0xaeae00ae + DD 0xe4e4e400,0x23230023 + DD 0x85858500,0x6b6b006b + DD 0x57575700,0x45450045 + DD 0x35353500,0xa5a500a5 + DD 0xeaeaea00,0xeded00ed + DD 0x0c0c0c00,0x4f4f004f + DD 0xaeaeae00,0x1d1d001d + DD 0x41414100,0x92920092 + DD 0x23232300,0x86860086 + DD 0xefefef00,0xafaf00af + DD 0x6b6b6b00,0x7c7c007c + DD 0x93939300,0x1f1f001f + DD 0x45454500,0x3e3e003e + DD 0x19191900,0xdcdc00dc + DD 0xa5a5a500,0x5e5e005e + DD 0x21212100,0x0b0b000b + DD 0xededed00,0xa6a600a6 + DD 0x0e0e0e00,0x39390039 + DD 0x4f4f4f00,0xd5d500d5 + DD 0x4e4e4e00,0x5d5d005d + DD 0x1d1d1d00,0xd9d900d9 + DD 0x65656500,0x5a5a005a + DD 0x92929200,0x51510051 + DD 0xbdbdbd00,0x6c6c006c + DD 0x86868600,0x8b8b008b + DD 0xb8b8b800,0x9a9a009a + DD 0xafafaf00,0xfbfb00fb + DD 0x8f8f8f00,0xb0b000b0 + DD 0x7c7c7c00,0x74740074 + DD 0xebebeb00,0x2b2b002b + DD 0x1f1f1f00,0xf0f000f0 + DD 0xcecece00,0x84840084 + DD 0x3e3e3e00,0xdfdf00df + DD 0x30303000,0xcbcb00cb + DD 0xdcdcdc00,0x34340034 + DD 0x5f5f5f00,0x76760076 + DD 0x5e5e5e00,0x6d6d006d + DD 0xc5c5c500,0xa9a900a9 + DD 0x0b0b0b00,0xd1d100d1 + DD 0x1a1a1a00,0x04040004 + DD 0xa6a6a600,0x14140014 + DD 0xe1e1e100,0x3a3a003a + DD 0x39393900,0xdede00de + DD 0xcacaca00,0x11110011 + DD 0xd5d5d500,0x32320032 + DD 0x47474700,0x9c9c009c + DD 0x5d5d5d00,0x53530053 + DD 0x3d3d3d00,0xf2f200f2 + DD 0xd9d9d900,0xfefe00fe + DD 0x01010100,0xcfcf00cf + DD 0x5a5a5a00,0xc3c300c3 + DD 0xd6d6d600,0x7a7a007a + DD 0x51515100,0x24240024 + DD 0x56565600,0xe8e800e8 + DD 0x6c6c6c00,0x60600060 + DD 0x4d4d4d00,0x69690069 + DD 0x8b8b8b00,0xaaaa00aa + DD 0x0d0d0d00,0xa0a000a0 + DD 0x9a9a9a00,0xa1a100a1 + DD 0x66666600,0x62620062 + DD 0xfbfbfb00,0x54540054 + DD 0xcccccc00,0x1e1e001e + DD 0xb0b0b000,0xe0e000e0 + DD 0x2d2d2d00,0x64640064 + DD 0x74747400,0x10100010 + DD 0x12121200,0x00000000 + DD 0x2b2b2b00,0xa3a300a3 + DD 0x20202000,0x75750075 + DD 0xf0f0f000,0x8a8a008a + DD 0xb1b1b100,0xe6e600e6 + DD 0x84848400,0x09090009 + DD 0x99999900,0xdddd00dd + DD 0xdfdfdf00,0x87870087 + DD 0x4c4c4c00,0x83830083 + DD 0xcbcbcb00,0xcdcd00cd + DD 0xc2c2c200,0x90900090 + DD 0x34343400,0x73730073 + DD 0x7e7e7e00,0xf6f600f6 + DD 0x76767600,0x9d9d009d + DD 0x05050500,0xbfbf00bf + DD 0x6d6d6d00,0x52520052 + DD 0xb7b7b700,0xd8d800d8 + DD 0xa9a9a900,0xc8c800c8 + DD 0x31313100,0xc6c600c6 + DD 0xd1d1d100,0x81810081 + DD 0x17171700,0x6f6f006f + DD 0x04040400,0x13130013 + DD 0xd7d7d700,0x63630063 + DD 0x14141400,0xe9e900e9 + DD 0x58585800,0xa7a700a7 + DD 0x3a3a3a00,0x9f9f009f + DD 0x61616100,0xbcbc00bc + DD 0xdedede00,0x29290029 + DD 0x1b1b1b00,0xf9f900f9 + DD 0x11111100,0x2f2f002f + DD 0x1c1c1c00,0xb4b400b4 + DD 0x32323200,0x78780078 + DD 0x0f0f0f00,0x06060006 + DD 0x9c9c9c00,0xe7e700e7 + DD 0x16161600,0x71710071 + DD 0x53535300,0xd4d400d4 + DD 0x18181800,0xabab00ab + DD 0xf2f2f200,0x88880088 + DD 0x22222200,0x8d8d008d + DD 0xfefefe00,0x72720072 + DD 0x44444400,0xb9b900b9 + DD 0xcfcfcf00,0xf8f800f8 + DD 0xb2b2b200,0xacac00ac + DD 0xc3c3c300,0x36360036 + DD 0xb5b5b500,0x2a2a002a + DD 0x7a7a7a00,0x3c3c003c + DD 0x91919100,0xf1f100f1 + DD 0x24242400,0x40400040 + DD 0x08080800,0xd3d300d3 + DD 0xe8e8e800,0xbbbb00bb + DD 0xa8a8a800,0x43430043 + DD 0x60606000,0x15150015 + DD 0xfcfcfc00,0xadad00ad + DD 0x69696900,0x77770077 + DD 0x50505000,0x80800080 + DD 0xaaaaaa00,0x82820082 + DD 0xd0d0d000,0xecec00ec + DD 0xa0a0a000,0x27270027 + DD 0x7d7d7d00,0xe5e500e5 + DD 0xa1a1a100,0x85850085 + DD 0x89898900,0x35350035 + DD 0x62626200,0x0c0c000c + DD 0x97979700,0x41410041 + DD 0x54545400,0xefef00ef + DD 0x5b5b5b00,0x93930093 + DD 0x1e1e1e00,0x19190019 + DD 0x95959500,0x21210021 + DD 0xe0e0e000,0x0e0e000e + DD 0xffffff00,0x4e4e004e + DD 0x64646400,0x65650065 + DD 0xd2d2d200,0xbdbd00bd + DD 0x10101000,0xb8b800b8 + DD 0xc4c4c400,0x8f8f008f + DD 0x00000000,0xebeb00eb + DD 0x48484800,0xcece00ce + DD 0xa3a3a300,0x30300030 + DD 0xf7f7f700,0x5f5f005f + DD 0x75757500,0xc5c500c5 + DD 0xdbdbdb00,0x1a1a001a + DD 0x8a8a8a00,0xe1e100e1 + DD 0x03030300,0xcaca00ca + DD 0xe6e6e600,0x47470047 + DD 0xdadada00,0x3d3d003d + DD 0x09090900,0x01010001 + DD 0x3f3f3f00,0xd6d600d6 + DD 0xdddddd00,0x56560056 + DD 0x94949400,0x4d4d004d + DD 0x87878700,0x0d0d000d + DD 0x5c5c5c00,0x66660066 + DD 0x83838300,0xcccc00cc + DD 0x02020200,0x2d2d002d + DD 0xcdcdcd00,0x12120012 + DD 0x4a4a4a00,0x20200020 + DD 0x90909000,0xb1b100b1 + DD 0x33333300,0x99990099 + DD 0x73737300,0x4c4c004c + DD 0x67676700,0xc2c200c2 + DD 0xf6f6f600,0x7e7e007e + DD 0xf3f3f300,0x05050005 + DD 0x9d9d9d00,0xb7b700b7 + DD 0x7f7f7f00,0x31310031 + DD 0xbfbfbf00,0x17170017 + DD 0xe2e2e200,0xd7d700d7 + DD 0x52525200,0x58580058 + DD 0x9b9b9b00,0x61610061 + DD 0xd8d8d800,0x1b1b001b + DD 0x26262600,0x1c1c001c + DD 0xc8c8c800,0x0f0f000f + DD 0x37373700,0x16160016 + DD 0xc6c6c600,0x18180018 + DD 0x3b3b3b00,0x22220022 + DD 0x81818100,0x44440044 + DD 0x96969600,0xb2b200b2 + DD 0x6f6f6f00,0xb5b500b5 + DD 0x4b4b4b00,0x91910091 + DD 0x13131300,0x08080008 + DD 0xbebebe00,0xa8a800a8 + DD 0x63636300,0xfcfc00fc + DD 0x2e2e2e00,0x50500050 + DD 0xe9e9e900,0xd0d000d0 + DD 0x79797900,0x7d7d007d + DD 0xa7a7a700,0x89890089 + DD 0x8c8c8c00,0x97970097 + DD 0x9f9f9f00,0x5b5b005b + DD 0x6e6e6e00,0x95950095 + DD 0xbcbcbc00,0xffff00ff + DD 0x8e8e8e00,0xd2d200d2 + DD 0x29292900,0xc4c400c4 + DD 0xf5f5f500,0x48480048 + DD 0xf9f9f900,0xf7f700f7 + DD 0xb6b6b600,0xdbdb00db + DD 0x2f2f2f00,0x03030003 + DD 0xfdfdfd00,0xdada00da + DD 0xb4b4b400,0x3f3f003f + DD 0x59595900,0x94940094 + DD 0x78787800,0x5c5c005c + DD 0x98989800,0x02020002 + DD 0x06060600,0x4a4a004a + DD 0x6a6a6a00,0x33330033 + DD 0xe7e7e700,0x67670067 + DD 0x46464600,0xf3f300f3 + DD 0x71717100,0x7f7f007f + DD 0xbababa00,0xe2e200e2 + DD 0xd4d4d400,0x9b9b009b + DD 0x25252500,0x26260026 + DD 0xababab00,0x37370037 + DD 0x42424200,0x3b3b003b + DD 0x88888800,0x96960096 + DD 0xa2a2a200,0x4b4b004b + DD 0x8d8d8d00,0xbebe00be + DD 0xfafafa00,0x2e2e002e + DD 0x72727200,0x79790079 + DD 0x07070700,0x8c8c008c + DD 0xb9b9b900,0x6e6e006e + DD 0x55555500,0x8e8e008e + DD 0xf8f8f800,0xf5f500f5 + DD 0xeeeeee00,0xb6b600b6 + DD 0xacacac00,0xfdfd00fd + DD 0x0a0a0a00,0x59590059 + DD 0x36363600,0x98980098 + DD 0x49494900,0x6a6a006a + DD 0x2a2a2a00,0x46460046 + DD 0x68686800,0xbaba00ba + DD 0x3c3c3c00,0x25250025 + DD 0x38383800,0x42420042 + DD 0xf1f1f100,0xa2a200a2 + DD 0xa4a4a400,0xfafa00fa + DD 0x40404000,0x07070007 + DD 0x28282800,0x55550055 + DD 0xd3d3d300,0xeeee00ee + DD 0x7b7b7b00,0x0a0a000a + DD 0xbbbbbb00,0x49490049 + DD 0xc9c9c900,0x68680068 + DD 0x43434300,0x38380038 + DD 0xc1c1c100,0xa4a400a4 + DD 0x15151500,0x28280028 + DD 0xe3e3e300,0x7b7b007b + DD 0xadadad00,0xc9c900c9 + DD 0xf4f4f400,0xc1c100c1 + DD 0x77777700,0xe3e300e3 + DD 0xc7c7c700,0xf4f400f4 + DD 0x80808000,0xc7c700c7 + DD 0x9e9e9e00,0x9e9e009e + DD 0x00e0e0e0,0x38003838 + DD 0x00050505,0x41004141 + DD 0x00585858,0x16001616 + DD 0x00d9d9d9,0x76007676 + DD 0x00676767,0xd900d9d9 + DD 0x004e4e4e,0x93009393 + DD 0x00818181,0x60006060 + DD 0x00cbcbcb,0xf200f2f2 + DD 0x00c9c9c9,0x72007272 + DD 0x000b0b0b,0xc200c2c2 + DD 0x00aeaeae,0xab00abab + DD 0x006a6a6a,0x9a009a9a + DD 0x00d5d5d5,0x75007575 + DD 0x00181818,0x06000606 + DD 0x005d5d5d,0x57005757 + DD 0x00828282,0xa000a0a0 + DD 0x00464646,0x91009191 + DD 0x00dfdfdf,0xf700f7f7 + DD 0x00d6d6d6,0xb500b5b5 + DD 0x00272727,0xc900c9c9 + DD 0x008a8a8a,0xa200a2a2 + DD 0x00323232,0x8c008c8c + DD 0x004b4b4b,0xd200d2d2 + DD 0x00424242,0x90009090 + DD 0x00dbdbdb,0xf600f6f6 + DD 0x001c1c1c,0x07000707 + DD 0x009e9e9e,0xa700a7a7 + DD 0x009c9c9c,0x27002727 + DD 0x003a3a3a,0x8e008e8e + DD 0x00cacaca,0xb200b2b2 + DD 0x00252525,0x49004949 + DD 0x007b7b7b,0xde00dede + DD 0x000d0d0d,0x43004343 + DD 0x00717171,0x5c005c5c + DD 0x005f5f5f,0xd700d7d7 + DD 0x001f1f1f,0xc700c7c7 + DD 0x00f8f8f8,0x3e003e3e + DD 0x00d7d7d7,0xf500f5f5 + DD 0x003e3e3e,0x8f008f8f + DD 0x009d9d9d,0x67006767 + DD 0x007c7c7c,0x1f001f1f + DD 0x00606060,0x18001818 + DD 0x00b9b9b9,0x6e006e6e + DD 0x00bebebe,0xaf00afaf + DD 0x00bcbcbc,0x2f002f2f + DD 0x008b8b8b,0xe200e2e2 + DD 0x00161616,0x85008585 + DD 0x00343434,0x0d000d0d + DD 0x004d4d4d,0x53005353 + DD 0x00c3c3c3,0xf000f0f0 + DD 0x00727272,0x9c009c9c + DD 0x00959595,0x65006565 + DD 0x00ababab,0xea00eaea + DD 0x008e8e8e,0xa300a3a3 + DD 0x00bababa,0xae00aeae + DD 0x007a7a7a,0x9e009e9e + DD 0x00b3b3b3,0xec00ecec + DD 0x00020202,0x80008080 + DD 0x00b4b4b4,0x2d002d2d + DD 0x00adadad,0x6b006b6b + DD 0x00a2a2a2,0xa800a8a8 + DD 0x00acacac,0x2b002b2b + DD 0x00d8d8d8,0x36003636 + DD 0x009a9a9a,0xa600a6a6 + DD 0x00171717,0xc500c5c5 + DD 0x001a1a1a,0x86008686 + DD 0x00353535,0x4d004d4d + DD 0x00cccccc,0x33003333 + DD 0x00f7f7f7,0xfd00fdfd + DD 0x00999999,0x66006666 + DD 0x00616161,0x58005858 + DD 0x005a5a5a,0x96009696 + DD 0x00e8e8e8,0x3a003a3a + DD 0x00242424,0x09000909 + DD 0x00565656,0x95009595 + DD 0x00404040,0x10001010 + DD 0x00e1e1e1,0x78007878 + DD 0x00636363,0xd800d8d8 + DD 0x00090909,0x42004242 + DD 0x00333333,0xcc00cccc + DD 0x00bfbfbf,0xef00efef + DD 0x00989898,0x26002626 + DD 0x00979797,0xe500e5e5 + DD 0x00858585,0x61006161 + DD 0x00686868,0x1a001a1a + DD 0x00fcfcfc,0x3f003f3f + DD 0x00ececec,0x3b003b3b + DD 0x000a0a0a,0x82008282 + DD 0x00dadada,0xb600b6b6 + DD 0x006f6f6f,0xdb00dbdb + DD 0x00535353,0xd400d4d4 + DD 0x00626262,0x98009898 + DD 0x00a3a3a3,0xe800e8e8 + DD 0x002e2e2e,0x8b008b8b + DD 0x00080808,0x02000202 + DD 0x00afafaf,0xeb00ebeb + DD 0x00282828,0x0a000a0a + DD 0x00b0b0b0,0x2c002c2c + DD 0x00747474,0x1d001d1d + DD 0x00c2c2c2,0xb000b0b0 + DD 0x00bdbdbd,0x6f006f6f + DD 0x00363636,0x8d008d8d + DD 0x00222222,0x88008888 + DD 0x00383838,0x0e000e0e + DD 0x00646464,0x19001919 + DD 0x001e1e1e,0x87008787 + DD 0x00393939,0x4e004e4e + DD 0x002c2c2c,0x0b000b0b + DD 0x00a6a6a6,0xa900a9a9 + DD 0x00303030,0x0c000c0c + DD 0x00e5e5e5,0x79007979 + DD 0x00444444,0x11001111 + DD 0x00fdfdfd,0x7f007f7f + DD 0x00888888,0x22002222 + DD 0x009f9f9f,0xe700e7e7 + DD 0x00656565,0x59005959 + DD 0x00878787,0xe100e1e1 + DD 0x006b6b6b,0xda00dada + DD 0x00f4f4f4,0x3d003d3d + DD 0x00232323,0xc800c8c8 + DD 0x00484848,0x12001212 + DD 0x00101010,0x04000404 + DD 0x00d1d1d1,0x74007474 + DD 0x00515151,0x54005454 + DD 0x00c0c0c0,0x30003030 + DD 0x00f9f9f9,0x7e007e7e + DD 0x00d2d2d2,0xb400b4b4 + DD 0x00a0a0a0,0x28002828 + DD 0x00555555,0x55005555 + DD 0x00a1a1a1,0x68006868 + DD 0x00414141,0x50005050 + DD 0x00fafafa,0xbe00bebe + DD 0x00434343,0xd000d0d0 + DD 0x00131313,0xc400c4c4 + DD 0x00c4c4c4,0x31003131 + DD 0x002f2f2f,0xcb00cbcb + DD 0x00a8a8a8,0x2a002a2a + DD 0x00b6b6b6,0xad00adad + DD 0x003c3c3c,0x0f000f0f + DD 0x002b2b2b,0xca00caca + DD 0x00c1c1c1,0x70007070 + DD 0x00ffffff,0xff00ffff + DD 0x00c8c8c8,0x32003232 + DD 0x00a5a5a5,0x69006969 + DD 0x00202020,0x08000808 + DD 0x00898989,0x62006262 + DD 0x00000000,0x00000000 + DD 0x00909090,0x24002424 + DD 0x00474747,0xd100d1d1 + DD 0x00efefef,0xfb00fbfb + DD 0x00eaeaea,0xba00baba + DD 0x00b7b7b7,0xed00eded + DD 0x00151515,0x45004545 + DD 0x00060606,0x81008181 + DD 0x00cdcdcd,0x73007373 + DD 0x00b5b5b5,0x6d006d6d + DD 0x00121212,0x84008484 + DD 0x007e7e7e,0x9f009f9f + DD 0x00bbbbbb,0xee00eeee + DD 0x00292929,0x4a004a4a + DD 0x000f0f0f,0xc300c3c3 + DD 0x00b8b8b8,0x2e002e2e + DD 0x00070707,0xc100c1c1 + DD 0x00040404,0x01000101 + DD 0x009b9b9b,0xe600e6e6 + DD 0x00949494,0x25002525 + DD 0x00212121,0x48004848 + DD 0x00666666,0x99009999 + DD 0x00e6e6e6,0xb900b9b9 + DD 0x00cecece,0xb300b3b3 + DD 0x00ededed,0x7b007b7b + DD 0x00e7e7e7,0xf900f9f9 + DD 0x003b3b3b,0xce00cece + DD 0x00fefefe,0xbf00bfbf + DD 0x007f7f7f,0xdf00dfdf + DD 0x00c5c5c5,0x71007171 + DD 0x00a4a4a4,0x29002929 + DD 0x00373737,0xcd00cdcd + DD 0x00b1b1b1,0x6c006c6c + DD 0x004c4c4c,0x13001313 + DD 0x00919191,0x64006464 + DD 0x006e6e6e,0x9b009b9b + DD 0x008d8d8d,0x63006363 + DD 0x00767676,0x9d009d9d + DD 0x00030303,0xc000c0c0 + DD 0x002d2d2d,0x4b004b4b + DD 0x00dedede,0xb700b7b7 + DD 0x00969696,0xa500a5a5 + DD 0x00262626,0x89008989 + DD 0x007d7d7d,0x5f005f5f + DD 0x00c6c6c6,0xb100b1b1 + DD 0x005c5c5c,0x17001717 + DD 0x00d3d3d3,0xf400f4f4 + DD 0x00f2f2f2,0xbc00bcbc + DD 0x004f4f4f,0xd300d3d3 + DD 0x00191919,0x46004646 + DD 0x003f3f3f,0xcf00cfcf + DD 0x00dcdcdc,0x37003737 + DD 0x00797979,0x5e005e5e + DD 0x001d1d1d,0x47004747 + DD 0x00525252,0x94009494 + DD 0x00ebebeb,0xfa00fafa + DD 0x00f3f3f3,0xfc00fcfc + DD 0x006d6d6d,0x5b005b5b + DD 0x005e5e5e,0x97009797 + DD 0x00fbfbfb,0xfe00fefe + DD 0x00696969,0x5a005a5a + DD 0x00b2b2b2,0xac00acac + DD 0x00f0f0f0,0x3c003c3c + DD 0x00313131,0x4c004c4c + DD 0x000c0c0c,0x03000303 + DD 0x00d4d4d4,0x35003535 + DD 0x00cfcfcf,0xf300f3f3 + DD 0x008c8c8c,0x23002323 + DD 0x00e2e2e2,0xb800b8b8 + DD 0x00757575,0x5d005d5d + DD 0x00a9a9a9,0x6a006a6a + DD 0x004a4a4a,0x92009292 + DD 0x00575757,0xd500d5d5 + DD 0x00848484,0x21002121 + DD 0x00111111,0x44004444 + DD 0x00454545,0x51005151 + DD 0x001b1b1b,0xc600c6c6 + DD 0x00f5f5f5,0x7d007d7d + DD 0x00e4e4e4,0x39003939 + DD 0x000e0e0e,0x83008383 + DD 0x00737373,0xdc00dcdc + DD 0x00aaaaaa,0xaa00aaaa + DD 0x00f1f1f1,0x7c007c7c + DD 0x00dddddd,0x77007777 + DD 0x00595959,0x56005656 + DD 0x00141414,0x05000505 + DD 0x006c6c6c,0x1b001b1b + DD 0x00929292,0xa400a4a4 + DD 0x00545454,0x15001515 + DD 0x00d0d0d0,0x34003434 + DD 0x00787878,0x1e001e1e + DD 0x00707070,0x1c001c1c + DD 0x00e3e3e3,0xf800f8f8 + DD 0x00494949,0x52005252 + DD 0x00808080,0x20002020 + DD 0x00505050,0x14001414 + DD 0x00a7a7a7,0xe900e9e9 + DD 0x00f6f6f6,0xbd00bdbd + DD 0x00777777,0xdd00dddd + DD 0x00939393,0xe400e4e4 + DD 0x00868686,0xa100a1a1 + DD 0x00838383,0xe000e0e0 + DD 0x002a2a2a,0x8a008a8a + DD 0x00c7c7c7,0xf100f1f1 + DD 0x005b5b5b,0xd600d6d6 + DD 0x00e9e9e9,0x7a007a7a + DD 0x00eeeeee,0xbb00bbbb + DD 0x008f8f8f,0xe300e3e3 + DD 0x00010101,0x40004040 + DD 0x003d3d3d,0x4f004f4f +global Camellia_cbc_encrypt + +ALIGN 16 +Camellia_cbc_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_Camellia_cbc_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + cmp rdx,0 + je NEAR $L$cbc_abort + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$cbc_prologue: + + mov rbp,rsp + + sub rsp,64 + and rsp,-64 + + + + lea r10,[((-64-63))+rcx] + sub r10,rsp + neg r10 + and r10,0x3C0 + sub rsp,r10 + + + mov r12,rdi + mov r13,rsi + mov rbx,r8 + mov r14,rcx + mov r15d,DWORD[272+rcx] + + mov QWORD[40+rsp],r8 + mov QWORD[48+rsp],rbp + + +$L$cbc_body: + lea rbp,[$L$Camellia_SBOX] + + mov ecx,32 +ALIGN 4 +$L$cbc_prefetch_sbox: + mov rax,QWORD[rbp] + mov rsi,QWORD[32+rbp] + mov rdi,QWORD[64+rbp] + mov r11,QWORD[96+rbp] + lea rbp,[128+rbp] + loop $L$cbc_prefetch_sbox + sub rbp,4096 + shl r15,6 + mov rcx,rdx + lea r15,[r15*1+r14] + + cmp r9d,0 + je NEAR $L$CBC_DECRYPT + + and rdx,-16 + and rcx,15 + lea rdx,[rdx*1+r12] + mov QWORD[rsp],r14 + mov QWORD[8+rsp],rdx + mov QWORD[16+rsp],rcx + + cmp rdx,r12 + mov r8d,DWORD[rbx] + mov r9d,DWORD[4+rbx] + mov r10d,DWORD[8+rbx] + mov r11d,DWORD[12+rbx] + je NEAR $L$cbc_enc_tail + jmp NEAR $L$cbc_eloop + +ALIGN 16 +$L$cbc_eloop: + xor r8d,DWORD[r12] + xor r9d,DWORD[4+r12] + xor r10d,DWORD[8+r12] + bswap r8d + xor r11d,DWORD[12+r12] + bswap r9d + bswap r10d + bswap r11d + + call _x86_64_Camellia_encrypt + + mov r14,QWORD[rsp] + bswap r8d + mov rdx,QWORD[8+rsp] + bswap r9d + mov rcx,QWORD[16+rsp] + bswap r10d + mov DWORD[r13],r8d + bswap r11d + mov DWORD[4+r13],r9d + mov DWORD[8+r13],r10d + lea r12,[16+r12] + mov DWORD[12+r13],r11d + cmp r12,rdx + lea r13,[16+r13] + jne NEAR $L$cbc_eloop + + cmp rcx,0 + jne NEAR $L$cbc_enc_tail + + mov r13,QWORD[40+rsp] + mov DWORD[r13],r8d + mov DWORD[4+r13],r9d + mov DWORD[8+r13],r10d + mov DWORD[12+r13],r11d + jmp NEAR $L$cbc_done + +ALIGN 16 +$L$cbc_enc_tail: + xor rax,rax + mov QWORD[((0+24))+rsp],rax + mov QWORD[((8+24))+rsp],rax + mov QWORD[16+rsp],rax + +$L$cbc_enc_pushf: + pushfq + cld + mov rsi,r12 + lea rdi,[((8+24))+rsp] + DD 0x9066A4F3 + popfq +$L$cbc_enc_popf: + + lea r12,[24+rsp] + lea rax,[((16+24))+rsp] + mov QWORD[8+rsp],rax + jmp NEAR $L$cbc_eloop + +ALIGN 16 +$L$CBC_DECRYPT: + xchg r15,r14 + add rdx,15 + and rcx,15 + and rdx,-16 + mov QWORD[rsp],r14 + lea rdx,[rdx*1+r12] + mov QWORD[8+rsp],rdx + mov QWORD[16+rsp],rcx + + mov rax,QWORD[rbx] + mov rbx,QWORD[8+rbx] + jmp NEAR $L$cbc_dloop +ALIGN 16 +$L$cbc_dloop: + mov r8d,DWORD[r12] + mov r9d,DWORD[4+r12] + mov r10d,DWORD[8+r12] + bswap r8d + mov r11d,DWORD[12+r12] + bswap r9d + mov QWORD[((0+24))+rsp],rax + bswap r10d + mov QWORD[((8+24))+rsp],rbx + bswap r11d + + call _x86_64_Camellia_decrypt + + mov r14,QWORD[rsp] + mov rdx,QWORD[8+rsp] + mov rcx,QWORD[16+rsp] + + bswap r8d + mov rax,QWORD[r12] + bswap r9d + mov rbx,QWORD[8+r12] + bswap r10d + xor r8d,DWORD[((0+24))+rsp] + bswap r11d + xor r9d,DWORD[((4+24))+rsp] + xor r10d,DWORD[((8+24))+rsp] + lea r12,[16+r12] + xor r11d,DWORD[((12+24))+rsp] + cmp r12,rdx + je NEAR $L$cbc_ddone + + mov DWORD[r13],r8d + mov DWORD[4+r13],r9d + mov DWORD[8+r13],r10d + mov DWORD[12+r13],r11d + + lea r13,[16+r13] + jmp NEAR $L$cbc_dloop + +ALIGN 16 +$L$cbc_ddone: + mov rdx,QWORD[40+rsp] + cmp rcx,0 + jne NEAR $L$cbc_dec_tail + + mov DWORD[r13],r8d + mov DWORD[4+r13],r9d + mov DWORD[8+r13],r10d + mov DWORD[12+r13],r11d + + mov QWORD[rdx],rax + mov QWORD[8+rdx],rbx + jmp NEAR $L$cbc_done +ALIGN 16 +$L$cbc_dec_tail: + mov DWORD[((0+24))+rsp],r8d + mov DWORD[((4+24))+rsp],r9d + mov DWORD[((8+24))+rsp],r10d + mov DWORD[((12+24))+rsp],r11d + +$L$cbc_dec_pushf: + pushfq + cld + lea rsi,[((8+24))+rsp] + lea rdi,[r13] + DD 0x9066A4F3 + popfq +$L$cbc_dec_popf: + + mov QWORD[rdx],rax + mov QWORD[8+rdx],rbx + jmp NEAR $L$cbc_done + +ALIGN 16 +$L$cbc_done: + mov rcx,QWORD[48+rsp] + + mov r15,QWORD[rcx] + + mov r14,QWORD[8+rcx] + + mov r13,QWORD[16+rcx] + + mov r12,QWORD[24+rcx] + + mov rbp,QWORD[32+rcx] + + mov rbx,QWORD[40+rcx] + + lea rsp,[48+rcx] + +$L$cbc_abort: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_Camellia_cbc_encrypt: + +DB 67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54 +DB 95,54,52,32,98,121,32,60,97,112,112,114,111,64,111,112 +DB 101,110,115,115,108,46,111,114,103,62,0 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +common_se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + lea rsp,[((-64))+rsp] + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$in_prologue + + lea rax,[40+rax] + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r13,QWORD[((-24))+rax] + mov r14,QWORD[((-32))+rax] + mov r15,QWORD[((-40))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + jmp NEAR $L$common_seh_exit + + + +ALIGN 16 +cbc_se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + lea rsp,[((-64))+rsp] + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + lea r10,[$L$cbc_prologue] + cmp rbx,r10 + jb NEAR $L$in_cbc_prologue + + lea r10,[$L$cbc_body] + cmp rbx,r10 + jb NEAR $L$in_cbc_frame_setup + + mov rax,QWORD[152+r8] + + lea r10,[$L$cbc_abort] + cmp rbx,r10 + jae NEAR $L$in_cbc_prologue + + + lea r10,[$L$cbc_enc_pushf] + cmp rbx,r10 + jbe NEAR $L$in_cbc_no_flag + lea rax,[8+rax] + lea r10,[$L$cbc_enc_popf] + cmp rbx,r10 + jb NEAR $L$in_cbc_no_flag + lea rax,[((-8))+rax] + lea r10,[$L$cbc_dec_pushf] + cmp rbx,r10 + jbe NEAR $L$in_cbc_no_flag + lea rax,[8+rax] + lea r10,[$L$cbc_dec_popf] + cmp rbx,r10 + jb NEAR $L$in_cbc_no_flag + lea rax,[((-8))+rax] + +$L$in_cbc_no_flag: + mov rax,QWORD[48+rax] + lea rax,[48+rax] + +$L$in_cbc_frame_setup: + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$in_cbc_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + +ALIGN 4 +$L$common_seh_exit: + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + lea rsp,[64+rsp] + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_Camellia_EncryptBlock_Rounds wrt ..imagebase + DD $L$SEH_end_Camellia_EncryptBlock_Rounds wrt ..imagebase + DD $L$SEH_info_Camellia_EncryptBlock_Rounds wrt ..imagebase + + DD $L$SEH_begin_Camellia_DecryptBlock_Rounds wrt ..imagebase + DD $L$SEH_end_Camellia_DecryptBlock_Rounds wrt ..imagebase + DD $L$SEH_info_Camellia_DecryptBlock_Rounds wrt ..imagebase + + DD $L$SEH_begin_Camellia_Ekeygen wrt ..imagebase + DD $L$SEH_end_Camellia_Ekeygen wrt ..imagebase + DD $L$SEH_info_Camellia_Ekeygen wrt ..imagebase + + DD $L$SEH_begin_Camellia_cbc_encrypt wrt ..imagebase + DD $L$SEH_end_Camellia_cbc_encrypt wrt ..imagebase + DD $L$SEH_info_Camellia_cbc_encrypt wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_Camellia_EncryptBlock_Rounds: +DB 9,0,0,0 + DD common_se_handler wrt ..imagebase + DD $L$enc_prologue wrt ..imagebase,$L$enc_epilogue wrt ..imagebase +$L$SEH_info_Camellia_DecryptBlock_Rounds: +DB 9,0,0,0 + DD common_se_handler wrt ..imagebase + DD $L$dec_prologue wrt ..imagebase,$L$dec_epilogue wrt ..imagebase +$L$SEH_info_Camellia_Ekeygen: +DB 9,0,0,0 + DD common_se_handler wrt ..imagebase + DD $L$key_prologue wrt ..imagebase,$L$key_epilogue wrt ..imagebase +$L$SEH_info_Camellia_cbc_encrypt: +DB 9,0,0,0 + DD cbc_se_handler wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/chacha/chacha-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/chacha/chacha-x86_64.asm new file mode 100644 index 0000000..4ae3fe3 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/chacha/chacha-x86_64.asm @@ -0,0 +1,3949 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +EXTERN OPENSSL_ia32cap_P + +ALIGN 64 +$L$zero: + DD 0,0,0,0 +$L$one: + DD 1,0,0,0 +$L$inc: + DD 0,1,2,3 +$L$four: + DD 4,4,4,4 +$L$incy: + DD 0,2,4,6,1,3,5,7 +$L$eight: + DD 8,8,8,8,8,8,8,8 +$L$rot16: +DB 0x2,0x3,0x0,0x1,0x6,0x7,0x4,0x5,0xa,0xb,0x8,0x9,0xe,0xf,0xc,0xd +$L$rot24: +DB 0x3,0x0,0x1,0x2,0x7,0x4,0x5,0x6,0xb,0x8,0x9,0xa,0xf,0xc,0xd,0xe +$L$twoy: + DD 2,0,0,0,2,0,0,0 +ALIGN 64 +$L$zeroz: + DD 0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0 +$L$fourz: + DD 4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0 +$L$incz: + DD 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +$L$sixteen: + DD 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 +$L$sigma: +DB 101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107 +DB 0 +DB 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54 +DB 95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32 +DB 98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115 +DB 108,46,111,114,103,62,0 +global ChaCha20_ctr32 + +ALIGN 64 +ChaCha20_ctr32: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ChaCha20_ctr32: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + + cmp rdx,0 + je NEAR $L$no_data + mov r10,QWORD[((OPENSSL_ia32cap_P+4))] + bt r10,48 + jc NEAR $L$ChaCha20_avx512 + test r10,r10 + js NEAR $L$ChaCha20_avx512vl + test r10d,512 + jnz NEAR $L$ChaCha20_ssse3 + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,64+24 + +$L$ctr32_body: + + + movdqu xmm1,XMMWORD[rcx] + movdqu xmm2,XMMWORD[16+rcx] + movdqu xmm3,XMMWORD[r8] + movdqa xmm4,XMMWORD[$L$one] + + + movdqa XMMWORD[16+rsp],xmm1 + movdqa XMMWORD[32+rsp],xmm2 + movdqa XMMWORD[48+rsp],xmm3 + mov rbp,rdx + jmp NEAR $L$oop_outer + +ALIGN 32 +$L$oop_outer: + mov eax,0x61707865 + mov ebx,0x3320646e + mov ecx,0x79622d32 + mov edx,0x6b206574 + mov r8d,DWORD[16+rsp] + mov r9d,DWORD[20+rsp] + mov r10d,DWORD[24+rsp] + mov r11d,DWORD[28+rsp] + movd r12d,xmm3 + mov r13d,DWORD[52+rsp] + mov r14d,DWORD[56+rsp] + mov r15d,DWORD[60+rsp] + + mov QWORD[((64+0))+rsp],rbp + mov ebp,10 + mov QWORD[((64+8))+rsp],rsi +DB 102,72,15,126,214 + mov QWORD[((64+16))+rsp],rdi + mov rdi,rsi + shr rdi,32 + jmp NEAR $L$oop + +ALIGN 32 +$L$oop: + add eax,r8d + xor r12d,eax + rol r12d,16 + add ebx,r9d + xor r13d,ebx + rol r13d,16 + add esi,r12d + xor r8d,esi + rol r8d,12 + add edi,r13d + xor r9d,edi + rol r9d,12 + add eax,r8d + xor r12d,eax + rol r12d,8 + add ebx,r9d + xor r13d,ebx + rol r13d,8 + add esi,r12d + xor r8d,esi + rol r8d,7 + add edi,r13d + xor r9d,edi + rol r9d,7 + mov DWORD[32+rsp],esi + mov DWORD[36+rsp],edi + mov esi,DWORD[40+rsp] + mov edi,DWORD[44+rsp] + add ecx,r10d + xor r14d,ecx + rol r14d,16 + add edx,r11d + xor r15d,edx + rol r15d,16 + add esi,r14d + xor r10d,esi + rol r10d,12 + add edi,r15d + xor r11d,edi + rol r11d,12 + add ecx,r10d + xor r14d,ecx + rol r14d,8 + add edx,r11d + xor r15d,edx + rol r15d,8 + add esi,r14d + xor r10d,esi + rol r10d,7 + add edi,r15d + xor r11d,edi + rol r11d,7 + add eax,r9d + xor r15d,eax + rol r15d,16 + add ebx,r10d + xor r12d,ebx + rol r12d,16 + add esi,r15d + xor r9d,esi + rol r9d,12 + add edi,r12d + xor r10d,edi + rol r10d,12 + add eax,r9d + xor r15d,eax + rol r15d,8 + add ebx,r10d + xor r12d,ebx + rol r12d,8 + add esi,r15d + xor r9d,esi + rol r9d,7 + add edi,r12d + xor r10d,edi + rol r10d,7 + mov DWORD[40+rsp],esi + mov DWORD[44+rsp],edi + mov esi,DWORD[32+rsp] + mov edi,DWORD[36+rsp] + add ecx,r11d + xor r13d,ecx + rol r13d,16 + add edx,r8d + xor r14d,edx + rol r14d,16 + add esi,r13d + xor r11d,esi + rol r11d,12 + add edi,r14d + xor r8d,edi + rol r8d,12 + add ecx,r11d + xor r13d,ecx + rol r13d,8 + add edx,r8d + xor r14d,edx + rol r14d,8 + add esi,r13d + xor r11d,esi + rol r11d,7 + add edi,r14d + xor r8d,edi + rol r8d,7 + dec ebp + jnz NEAR $L$oop + mov DWORD[36+rsp],edi + mov DWORD[32+rsp],esi + mov rbp,QWORD[64+rsp] + movdqa xmm1,xmm2 + mov rsi,QWORD[((64+8))+rsp] + paddd xmm3,xmm4 + mov rdi,QWORD[((64+16))+rsp] + + add eax,0x61707865 + add ebx,0x3320646e + add ecx,0x79622d32 + add edx,0x6b206574 + add r8d,DWORD[16+rsp] + add r9d,DWORD[20+rsp] + add r10d,DWORD[24+rsp] + add r11d,DWORD[28+rsp] + add r12d,DWORD[48+rsp] + add r13d,DWORD[52+rsp] + add r14d,DWORD[56+rsp] + add r15d,DWORD[60+rsp] + paddd xmm1,XMMWORD[32+rsp] + + cmp rbp,64 + jb NEAR $L$tail + + xor eax,DWORD[rsi] + xor ebx,DWORD[4+rsi] + xor ecx,DWORD[8+rsi] + xor edx,DWORD[12+rsi] + xor r8d,DWORD[16+rsi] + xor r9d,DWORD[20+rsi] + xor r10d,DWORD[24+rsi] + xor r11d,DWORD[28+rsi] + movdqu xmm0,XMMWORD[32+rsi] + xor r12d,DWORD[48+rsi] + xor r13d,DWORD[52+rsi] + xor r14d,DWORD[56+rsi] + xor r15d,DWORD[60+rsi] + lea rsi,[64+rsi] + pxor xmm0,xmm1 + + movdqa XMMWORD[32+rsp],xmm2 + movd DWORD[48+rsp],xmm3 + + mov DWORD[rdi],eax + mov DWORD[4+rdi],ebx + mov DWORD[8+rdi],ecx + mov DWORD[12+rdi],edx + mov DWORD[16+rdi],r8d + mov DWORD[20+rdi],r9d + mov DWORD[24+rdi],r10d + mov DWORD[28+rdi],r11d + movdqu XMMWORD[32+rdi],xmm0 + mov DWORD[48+rdi],r12d + mov DWORD[52+rdi],r13d + mov DWORD[56+rdi],r14d + mov DWORD[60+rdi],r15d + lea rdi,[64+rdi] + + sub rbp,64 + jnz NEAR $L$oop_outer + + jmp NEAR $L$done + +ALIGN 16 +$L$tail: + mov DWORD[rsp],eax + mov DWORD[4+rsp],ebx + xor rbx,rbx + mov DWORD[8+rsp],ecx + mov DWORD[12+rsp],edx + mov DWORD[16+rsp],r8d + mov DWORD[20+rsp],r9d + mov DWORD[24+rsp],r10d + mov DWORD[28+rsp],r11d + movdqa XMMWORD[32+rsp],xmm1 + mov DWORD[48+rsp],r12d + mov DWORD[52+rsp],r13d + mov DWORD[56+rsp],r14d + mov DWORD[60+rsp],r15d + +$L$oop_tail: + movzx eax,BYTE[rbx*1+rsi] + movzx edx,BYTE[rbx*1+rsp] + lea rbx,[1+rbx] + xor eax,edx + mov BYTE[((-1))+rbx*1+rdi],al + dec rbp + jnz NEAR $L$oop_tail + +$L$done: + lea rsi,[((64+24+48))+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$no_data: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ChaCha20_ctr32: + +ALIGN 32 +ChaCha20_ssse3: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ChaCha20_ssse3: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +$L$ChaCha20_ssse3: + mov r9,rsp + + test r10d,2048 + jnz NEAR $L$ChaCha20_4xop + cmp rdx,128 + je NEAR $L$ChaCha20_128 + ja NEAR $L$ChaCha20_4x + +$L$do_sse3_after_all: + sub rsp,64+168 + movaps XMMWORD[(-40)+r9],xmm6 + movaps XMMWORD[(-24)+r9],xmm7 +$L$ssse3_body: + movdqa xmm0,XMMWORD[$L$sigma] + movdqu xmm1,XMMWORD[rcx] + movdqu xmm2,XMMWORD[16+rcx] + movdqu xmm3,XMMWORD[r8] + movdqa xmm6,XMMWORD[$L$rot16] + movdqa xmm7,XMMWORD[$L$rot24] + + movdqa XMMWORD[rsp],xmm0 + movdqa XMMWORD[16+rsp],xmm1 + movdqa XMMWORD[32+rsp],xmm2 + movdqa XMMWORD[48+rsp],xmm3 + mov r8,10 + jmp NEAR $L$oop_ssse3 + +ALIGN 32 +$L$oop_outer_ssse3: + movdqa xmm3,XMMWORD[$L$one] + movdqa xmm0,XMMWORD[rsp] + movdqa xmm1,XMMWORD[16+rsp] + movdqa xmm2,XMMWORD[32+rsp] + paddd xmm3,XMMWORD[48+rsp] + mov r8,10 + movdqa XMMWORD[48+rsp],xmm3 + jmp NEAR $L$oop_ssse3 + +ALIGN 32 +$L$oop_ssse3: + paddd xmm0,xmm1 + pxor xmm3,xmm0 +DB 102,15,56,0,222 + paddd xmm2,xmm3 + pxor xmm1,xmm2 + movdqa xmm4,xmm1 + psrld xmm1,20 + pslld xmm4,12 + por xmm1,xmm4 + paddd xmm0,xmm1 + pxor xmm3,xmm0 +DB 102,15,56,0,223 + paddd xmm2,xmm3 + pxor xmm1,xmm2 + movdqa xmm4,xmm1 + psrld xmm1,25 + pslld xmm4,7 + por xmm1,xmm4 + pshufd xmm2,xmm2,78 + pshufd xmm1,xmm1,57 + pshufd xmm3,xmm3,147 + nop + paddd xmm0,xmm1 + pxor xmm3,xmm0 +DB 102,15,56,0,222 + paddd xmm2,xmm3 + pxor xmm1,xmm2 + movdqa xmm4,xmm1 + psrld xmm1,20 + pslld xmm4,12 + por xmm1,xmm4 + paddd xmm0,xmm1 + pxor xmm3,xmm0 +DB 102,15,56,0,223 + paddd xmm2,xmm3 + pxor xmm1,xmm2 + movdqa xmm4,xmm1 + psrld xmm1,25 + pslld xmm4,7 + por xmm1,xmm4 + pshufd xmm2,xmm2,78 + pshufd xmm1,xmm1,147 + pshufd xmm3,xmm3,57 + dec r8 + jnz NEAR $L$oop_ssse3 + paddd xmm0,XMMWORD[rsp] + paddd xmm1,XMMWORD[16+rsp] + paddd xmm2,XMMWORD[32+rsp] + paddd xmm3,XMMWORD[48+rsp] + + cmp rdx,64 + jb NEAR $L$tail_ssse3 + + movdqu xmm4,XMMWORD[rsi] + movdqu xmm5,XMMWORD[16+rsi] + pxor xmm0,xmm4 + movdqu xmm4,XMMWORD[32+rsi] + pxor xmm1,xmm5 + movdqu xmm5,XMMWORD[48+rsi] + lea rsi,[64+rsi] + pxor xmm2,xmm4 + pxor xmm3,xmm5 + + movdqu XMMWORD[rdi],xmm0 + movdqu XMMWORD[16+rdi],xmm1 + movdqu XMMWORD[32+rdi],xmm2 + movdqu XMMWORD[48+rdi],xmm3 + lea rdi,[64+rdi] + + sub rdx,64 + jnz NEAR $L$oop_outer_ssse3 + + jmp NEAR $L$done_ssse3 + +ALIGN 16 +$L$tail_ssse3: + movdqa XMMWORD[rsp],xmm0 + movdqa XMMWORD[16+rsp],xmm1 + movdqa XMMWORD[32+rsp],xmm2 + movdqa XMMWORD[48+rsp],xmm3 + xor r8,r8 + +$L$oop_tail_ssse3: + movzx eax,BYTE[r8*1+rsi] + movzx ecx,BYTE[r8*1+rsp] + lea r8,[1+r8] + xor eax,ecx + mov BYTE[((-1))+r8*1+rdi],al + dec rdx + jnz NEAR $L$oop_tail_ssse3 + +$L$done_ssse3: + movaps xmm6,XMMWORD[((-40))+r9] + movaps xmm7,XMMWORD[((-24))+r9] + lea rsp,[r9] + +$L$ssse3_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ChaCha20_ssse3: + +ALIGN 32 +ChaCha20_128: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ChaCha20_128: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +$L$ChaCha20_128: + mov r9,rsp + + sub rsp,64+104 + movaps XMMWORD[(-104)+r9],xmm6 + movaps XMMWORD[(-88)+r9],xmm7 + movaps XMMWORD[(-72)+r9],xmm8 + movaps XMMWORD[(-56)+r9],xmm9 + movaps XMMWORD[(-40)+r9],xmm10 + movaps XMMWORD[(-24)+r9],xmm11 +$L$128_body: + movdqa xmm8,XMMWORD[$L$sigma] + movdqu xmm9,XMMWORD[rcx] + movdqu xmm2,XMMWORD[16+rcx] + movdqu xmm3,XMMWORD[r8] + movdqa xmm1,XMMWORD[$L$one] + movdqa xmm6,XMMWORD[$L$rot16] + movdqa xmm7,XMMWORD[$L$rot24] + + movdqa xmm10,xmm8 + movdqa XMMWORD[rsp],xmm8 + movdqa xmm11,xmm9 + movdqa XMMWORD[16+rsp],xmm9 + movdqa xmm0,xmm2 + movdqa XMMWORD[32+rsp],xmm2 + paddd xmm1,xmm3 + movdqa XMMWORD[48+rsp],xmm3 + mov r8,10 + jmp NEAR $L$oop_128 + +ALIGN 32 +$L$oop_128: + paddd xmm8,xmm9 + pxor xmm3,xmm8 + paddd xmm10,xmm11 + pxor xmm1,xmm10 +DB 102,15,56,0,222 +DB 102,15,56,0,206 + paddd xmm2,xmm3 + paddd xmm0,xmm1 + pxor xmm9,xmm2 + pxor xmm11,xmm0 + movdqa xmm4,xmm9 + psrld xmm9,20 + movdqa xmm5,xmm11 + pslld xmm4,12 + psrld xmm11,20 + por xmm9,xmm4 + pslld xmm5,12 + por xmm11,xmm5 + paddd xmm8,xmm9 + pxor xmm3,xmm8 + paddd xmm10,xmm11 + pxor xmm1,xmm10 +DB 102,15,56,0,223 +DB 102,15,56,0,207 + paddd xmm2,xmm3 + paddd xmm0,xmm1 + pxor xmm9,xmm2 + pxor xmm11,xmm0 + movdqa xmm4,xmm9 + psrld xmm9,25 + movdqa xmm5,xmm11 + pslld xmm4,7 + psrld xmm11,25 + por xmm9,xmm4 + pslld xmm5,7 + por xmm11,xmm5 + pshufd xmm2,xmm2,78 + pshufd xmm9,xmm9,57 + pshufd xmm3,xmm3,147 + pshufd xmm0,xmm0,78 + pshufd xmm11,xmm11,57 + pshufd xmm1,xmm1,147 + paddd xmm8,xmm9 + pxor xmm3,xmm8 + paddd xmm10,xmm11 + pxor xmm1,xmm10 +DB 102,15,56,0,222 +DB 102,15,56,0,206 + paddd xmm2,xmm3 + paddd xmm0,xmm1 + pxor xmm9,xmm2 + pxor xmm11,xmm0 + movdqa xmm4,xmm9 + psrld xmm9,20 + movdqa xmm5,xmm11 + pslld xmm4,12 + psrld xmm11,20 + por xmm9,xmm4 + pslld xmm5,12 + por xmm11,xmm5 + paddd xmm8,xmm9 + pxor xmm3,xmm8 + paddd xmm10,xmm11 + pxor xmm1,xmm10 +DB 102,15,56,0,223 +DB 102,15,56,0,207 + paddd xmm2,xmm3 + paddd xmm0,xmm1 + pxor xmm9,xmm2 + pxor xmm11,xmm0 + movdqa xmm4,xmm9 + psrld xmm9,25 + movdqa xmm5,xmm11 + pslld xmm4,7 + psrld xmm11,25 + por xmm9,xmm4 + pslld xmm5,7 + por xmm11,xmm5 + pshufd xmm2,xmm2,78 + pshufd xmm9,xmm9,147 + pshufd xmm3,xmm3,57 + pshufd xmm0,xmm0,78 + pshufd xmm11,xmm11,147 + pshufd xmm1,xmm1,57 + dec r8 + jnz NEAR $L$oop_128 + paddd xmm8,XMMWORD[rsp] + paddd xmm9,XMMWORD[16+rsp] + paddd xmm2,XMMWORD[32+rsp] + paddd xmm3,XMMWORD[48+rsp] + paddd xmm1,XMMWORD[$L$one] + paddd xmm10,XMMWORD[rsp] + paddd xmm11,XMMWORD[16+rsp] + paddd xmm0,XMMWORD[32+rsp] + paddd xmm1,XMMWORD[48+rsp] + + movdqu xmm4,XMMWORD[rsi] + movdqu xmm5,XMMWORD[16+rsi] + pxor xmm8,xmm4 + movdqu xmm4,XMMWORD[32+rsi] + pxor xmm9,xmm5 + movdqu xmm5,XMMWORD[48+rsi] + pxor xmm2,xmm4 + movdqu xmm4,XMMWORD[64+rsi] + pxor xmm3,xmm5 + movdqu xmm5,XMMWORD[80+rsi] + pxor xmm10,xmm4 + movdqu xmm4,XMMWORD[96+rsi] + pxor xmm11,xmm5 + movdqu xmm5,XMMWORD[112+rsi] + pxor xmm0,xmm4 + pxor xmm1,xmm5 + + movdqu XMMWORD[rdi],xmm8 + movdqu XMMWORD[16+rdi],xmm9 + movdqu XMMWORD[32+rdi],xmm2 + movdqu XMMWORD[48+rdi],xmm3 + movdqu XMMWORD[64+rdi],xmm10 + movdqu XMMWORD[80+rdi],xmm11 + movdqu XMMWORD[96+rdi],xmm0 + movdqu XMMWORD[112+rdi],xmm1 + movaps xmm6,XMMWORD[((-104))+r9] + movaps xmm7,XMMWORD[((-88))+r9] + movaps xmm8,XMMWORD[((-72))+r9] + movaps xmm9,XMMWORD[((-56))+r9] + movaps xmm10,XMMWORD[((-40))+r9] + movaps xmm11,XMMWORD[((-24))+r9] + lea rsp,[r9] + +$L$128_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ChaCha20_128: + +ALIGN 32 +ChaCha20_4x: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ChaCha20_4x: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +$L$ChaCha20_4x: + mov r9,rsp + + mov r11,r10 + shr r10,32 + test r10,32 + jnz NEAR $L$ChaCha20_8x + cmp rdx,192 + ja NEAR $L$proceed4x + + and r11,71303168 + cmp r11,4194304 + je NEAR $L$do_sse3_after_all + +$L$proceed4x: + sub rsp,0x140+168 + movaps XMMWORD[(-168)+r9],xmm6 + movaps XMMWORD[(-152)+r9],xmm7 + movaps XMMWORD[(-136)+r9],xmm8 + movaps XMMWORD[(-120)+r9],xmm9 + movaps XMMWORD[(-104)+r9],xmm10 + movaps XMMWORD[(-88)+r9],xmm11 + movaps XMMWORD[(-72)+r9],xmm12 + movaps XMMWORD[(-56)+r9],xmm13 + movaps XMMWORD[(-40)+r9],xmm14 + movaps XMMWORD[(-24)+r9],xmm15 +$L$4x_body: + movdqa xmm11,XMMWORD[$L$sigma] + movdqu xmm15,XMMWORD[rcx] + movdqu xmm7,XMMWORD[16+rcx] + movdqu xmm3,XMMWORD[r8] + lea rcx,[256+rsp] + lea r10,[$L$rot16] + lea r11,[$L$rot24] + + pshufd xmm8,xmm11,0x00 + pshufd xmm9,xmm11,0x55 + movdqa XMMWORD[64+rsp],xmm8 + pshufd xmm10,xmm11,0xaa + movdqa XMMWORD[80+rsp],xmm9 + pshufd xmm11,xmm11,0xff + movdqa XMMWORD[96+rsp],xmm10 + movdqa XMMWORD[112+rsp],xmm11 + + pshufd xmm12,xmm15,0x00 + pshufd xmm13,xmm15,0x55 + movdqa XMMWORD[(128-256)+rcx],xmm12 + pshufd xmm14,xmm15,0xaa + movdqa XMMWORD[(144-256)+rcx],xmm13 + pshufd xmm15,xmm15,0xff + movdqa XMMWORD[(160-256)+rcx],xmm14 + movdqa XMMWORD[(176-256)+rcx],xmm15 + + pshufd xmm4,xmm7,0x00 + pshufd xmm5,xmm7,0x55 + movdqa XMMWORD[(192-256)+rcx],xmm4 + pshufd xmm6,xmm7,0xaa + movdqa XMMWORD[(208-256)+rcx],xmm5 + pshufd xmm7,xmm7,0xff + movdqa XMMWORD[(224-256)+rcx],xmm6 + movdqa XMMWORD[(240-256)+rcx],xmm7 + + pshufd xmm0,xmm3,0x00 + pshufd xmm1,xmm3,0x55 + paddd xmm0,XMMWORD[$L$inc] + pshufd xmm2,xmm3,0xaa + movdqa XMMWORD[(272-256)+rcx],xmm1 + pshufd xmm3,xmm3,0xff + movdqa XMMWORD[(288-256)+rcx],xmm2 + movdqa XMMWORD[(304-256)+rcx],xmm3 + + jmp NEAR $L$oop_enter4x + +ALIGN 32 +$L$oop_outer4x: + movdqa xmm8,XMMWORD[64+rsp] + movdqa xmm9,XMMWORD[80+rsp] + movdqa xmm10,XMMWORD[96+rsp] + movdqa xmm11,XMMWORD[112+rsp] + movdqa xmm12,XMMWORD[((128-256))+rcx] + movdqa xmm13,XMMWORD[((144-256))+rcx] + movdqa xmm14,XMMWORD[((160-256))+rcx] + movdqa xmm15,XMMWORD[((176-256))+rcx] + movdqa xmm4,XMMWORD[((192-256))+rcx] + movdqa xmm5,XMMWORD[((208-256))+rcx] + movdqa xmm6,XMMWORD[((224-256))+rcx] + movdqa xmm7,XMMWORD[((240-256))+rcx] + movdqa xmm0,XMMWORD[((256-256))+rcx] + movdqa xmm1,XMMWORD[((272-256))+rcx] + movdqa xmm2,XMMWORD[((288-256))+rcx] + movdqa xmm3,XMMWORD[((304-256))+rcx] + paddd xmm0,XMMWORD[$L$four] + +$L$oop_enter4x: + movdqa XMMWORD[32+rsp],xmm6 + movdqa XMMWORD[48+rsp],xmm7 + movdqa xmm7,XMMWORD[r10] + mov eax,10 + movdqa XMMWORD[(256-256)+rcx],xmm0 + jmp NEAR $L$oop4x + +ALIGN 32 +$L$oop4x: + paddd xmm8,xmm12 + paddd xmm9,xmm13 + pxor xmm0,xmm8 + pxor xmm1,xmm9 +DB 102,15,56,0,199 +DB 102,15,56,0,207 + paddd xmm4,xmm0 + paddd xmm5,xmm1 + pxor xmm12,xmm4 + pxor xmm13,xmm5 + movdqa xmm6,xmm12 + pslld xmm12,12 + psrld xmm6,20 + movdqa xmm7,xmm13 + pslld xmm13,12 + por xmm12,xmm6 + psrld xmm7,20 + movdqa xmm6,XMMWORD[r11] + por xmm13,xmm7 + paddd xmm8,xmm12 + paddd xmm9,xmm13 + pxor xmm0,xmm8 + pxor xmm1,xmm9 +DB 102,15,56,0,198 +DB 102,15,56,0,206 + paddd xmm4,xmm0 + paddd xmm5,xmm1 + pxor xmm12,xmm4 + pxor xmm13,xmm5 + movdqa xmm7,xmm12 + pslld xmm12,7 + psrld xmm7,25 + movdqa xmm6,xmm13 + pslld xmm13,7 + por xmm12,xmm7 + psrld xmm6,25 + movdqa xmm7,XMMWORD[r10] + por xmm13,xmm6 + movdqa XMMWORD[rsp],xmm4 + movdqa XMMWORD[16+rsp],xmm5 + movdqa xmm4,XMMWORD[32+rsp] + movdqa xmm5,XMMWORD[48+rsp] + paddd xmm10,xmm14 + paddd xmm11,xmm15 + pxor xmm2,xmm10 + pxor xmm3,xmm11 +DB 102,15,56,0,215 +DB 102,15,56,0,223 + paddd xmm4,xmm2 + paddd xmm5,xmm3 + pxor xmm14,xmm4 + pxor xmm15,xmm5 + movdqa xmm6,xmm14 + pslld xmm14,12 + psrld xmm6,20 + movdqa xmm7,xmm15 + pslld xmm15,12 + por xmm14,xmm6 + psrld xmm7,20 + movdqa xmm6,XMMWORD[r11] + por xmm15,xmm7 + paddd xmm10,xmm14 + paddd xmm11,xmm15 + pxor xmm2,xmm10 + pxor xmm3,xmm11 +DB 102,15,56,0,214 +DB 102,15,56,0,222 + paddd xmm4,xmm2 + paddd xmm5,xmm3 + pxor xmm14,xmm4 + pxor xmm15,xmm5 + movdqa xmm7,xmm14 + pslld xmm14,7 + psrld xmm7,25 + movdqa xmm6,xmm15 + pslld xmm15,7 + por xmm14,xmm7 + psrld xmm6,25 + movdqa xmm7,XMMWORD[r10] + por xmm15,xmm6 + paddd xmm8,xmm13 + paddd xmm9,xmm14 + pxor xmm3,xmm8 + pxor xmm0,xmm9 +DB 102,15,56,0,223 +DB 102,15,56,0,199 + paddd xmm4,xmm3 + paddd xmm5,xmm0 + pxor xmm13,xmm4 + pxor xmm14,xmm5 + movdqa xmm6,xmm13 + pslld xmm13,12 + psrld xmm6,20 + movdqa xmm7,xmm14 + pslld xmm14,12 + por xmm13,xmm6 + psrld xmm7,20 + movdqa xmm6,XMMWORD[r11] + por xmm14,xmm7 + paddd xmm8,xmm13 + paddd xmm9,xmm14 + pxor xmm3,xmm8 + pxor xmm0,xmm9 +DB 102,15,56,0,222 +DB 102,15,56,0,198 + paddd xmm4,xmm3 + paddd xmm5,xmm0 + pxor xmm13,xmm4 + pxor xmm14,xmm5 + movdqa xmm7,xmm13 + pslld xmm13,7 + psrld xmm7,25 + movdqa xmm6,xmm14 + pslld xmm14,7 + por xmm13,xmm7 + psrld xmm6,25 + movdqa xmm7,XMMWORD[r10] + por xmm14,xmm6 + movdqa XMMWORD[32+rsp],xmm4 + movdqa XMMWORD[48+rsp],xmm5 + movdqa xmm4,XMMWORD[rsp] + movdqa xmm5,XMMWORD[16+rsp] + paddd xmm10,xmm15 + paddd xmm11,xmm12 + pxor xmm1,xmm10 + pxor xmm2,xmm11 +DB 102,15,56,0,207 +DB 102,15,56,0,215 + paddd xmm4,xmm1 + paddd xmm5,xmm2 + pxor xmm15,xmm4 + pxor xmm12,xmm5 + movdqa xmm6,xmm15 + pslld xmm15,12 + psrld xmm6,20 + movdqa xmm7,xmm12 + pslld xmm12,12 + por xmm15,xmm6 + psrld xmm7,20 + movdqa xmm6,XMMWORD[r11] + por xmm12,xmm7 + paddd xmm10,xmm15 + paddd xmm11,xmm12 + pxor xmm1,xmm10 + pxor xmm2,xmm11 +DB 102,15,56,0,206 +DB 102,15,56,0,214 + paddd xmm4,xmm1 + paddd xmm5,xmm2 + pxor xmm15,xmm4 + pxor xmm12,xmm5 + movdqa xmm7,xmm15 + pslld xmm15,7 + psrld xmm7,25 + movdqa xmm6,xmm12 + pslld xmm12,7 + por xmm15,xmm7 + psrld xmm6,25 + movdqa xmm7,XMMWORD[r10] + por xmm12,xmm6 + dec eax + jnz NEAR $L$oop4x + + paddd xmm8,XMMWORD[64+rsp] + paddd xmm9,XMMWORD[80+rsp] + paddd xmm10,XMMWORD[96+rsp] + paddd xmm11,XMMWORD[112+rsp] + + movdqa xmm6,xmm8 + punpckldq xmm8,xmm9 + movdqa xmm7,xmm10 + punpckldq xmm10,xmm11 + punpckhdq xmm6,xmm9 + punpckhdq xmm7,xmm11 + movdqa xmm9,xmm8 + punpcklqdq xmm8,xmm10 + movdqa xmm11,xmm6 + punpcklqdq xmm6,xmm7 + punpckhqdq xmm9,xmm10 + punpckhqdq xmm11,xmm7 + paddd xmm12,XMMWORD[((128-256))+rcx] + paddd xmm13,XMMWORD[((144-256))+rcx] + paddd xmm14,XMMWORD[((160-256))+rcx] + paddd xmm15,XMMWORD[((176-256))+rcx] + + movdqa XMMWORD[rsp],xmm8 + movdqa XMMWORD[16+rsp],xmm9 + movdqa xmm8,XMMWORD[32+rsp] + movdqa xmm9,XMMWORD[48+rsp] + + movdqa xmm10,xmm12 + punpckldq xmm12,xmm13 + movdqa xmm7,xmm14 + punpckldq xmm14,xmm15 + punpckhdq xmm10,xmm13 + punpckhdq xmm7,xmm15 + movdqa xmm13,xmm12 + punpcklqdq xmm12,xmm14 + movdqa xmm15,xmm10 + punpcklqdq xmm10,xmm7 + punpckhqdq xmm13,xmm14 + punpckhqdq xmm15,xmm7 + paddd xmm4,XMMWORD[((192-256))+rcx] + paddd xmm5,XMMWORD[((208-256))+rcx] + paddd xmm8,XMMWORD[((224-256))+rcx] + paddd xmm9,XMMWORD[((240-256))+rcx] + + movdqa XMMWORD[32+rsp],xmm6 + movdqa XMMWORD[48+rsp],xmm11 + + movdqa xmm14,xmm4 + punpckldq xmm4,xmm5 + movdqa xmm7,xmm8 + punpckldq xmm8,xmm9 + punpckhdq xmm14,xmm5 + punpckhdq xmm7,xmm9 + movdqa xmm5,xmm4 + punpcklqdq xmm4,xmm8 + movdqa xmm9,xmm14 + punpcklqdq xmm14,xmm7 + punpckhqdq xmm5,xmm8 + punpckhqdq xmm9,xmm7 + paddd xmm0,XMMWORD[((256-256))+rcx] + paddd xmm1,XMMWORD[((272-256))+rcx] + paddd xmm2,XMMWORD[((288-256))+rcx] + paddd xmm3,XMMWORD[((304-256))+rcx] + + movdqa xmm8,xmm0 + punpckldq xmm0,xmm1 + movdqa xmm7,xmm2 + punpckldq xmm2,xmm3 + punpckhdq xmm8,xmm1 + punpckhdq xmm7,xmm3 + movdqa xmm1,xmm0 + punpcklqdq xmm0,xmm2 + movdqa xmm3,xmm8 + punpcklqdq xmm8,xmm7 + punpckhqdq xmm1,xmm2 + punpckhqdq xmm3,xmm7 + cmp rdx,64*4 + jb NEAR $L$tail4x + + movdqu xmm6,XMMWORD[rsi] + movdqu xmm11,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + movdqu xmm7,XMMWORD[48+rsi] + pxor xmm6,XMMWORD[rsp] + pxor xmm11,xmm12 + pxor xmm2,xmm4 + pxor xmm7,xmm0 + + movdqu XMMWORD[rdi],xmm6 + movdqu xmm6,XMMWORD[64+rsi] + movdqu XMMWORD[16+rdi],xmm11 + movdqu xmm11,XMMWORD[80+rsi] + movdqu XMMWORD[32+rdi],xmm2 + movdqu xmm2,XMMWORD[96+rsi] + movdqu XMMWORD[48+rdi],xmm7 + movdqu xmm7,XMMWORD[112+rsi] + lea rsi,[128+rsi] + pxor xmm6,XMMWORD[16+rsp] + pxor xmm11,xmm13 + pxor xmm2,xmm5 + pxor xmm7,xmm1 + + movdqu XMMWORD[64+rdi],xmm6 + movdqu xmm6,XMMWORD[rsi] + movdqu XMMWORD[80+rdi],xmm11 + movdqu xmm11,XMMWORD[16+rsi] + movdqu XMMWORD[96+rdi],xmm2 + movdqu xmm2,XMMWORD[32+rsi] + movdqu XMMWORD[112+rdi],xmm7 + lea rdi,[128+rdi] + movdqu xmm7,XMMWORD[48+rsi] + pxor xmm6,XMMWORD[32+rsp] + pxor xmm11,xmm10 + pxor xmm2,xmm14 + pxor xmm7,xmm8 + + movdqu XMMWORD[rdi],xmm6 + movdqu xmm6,XMMWORD[64+rsi] + movdqu XMMWORD[16+rdi],xmm11 + movdqu xmm11,XMMWORD[80+rsi] + movdqu XMMWORD[32+rdi],xmm2 + movdqu xmm2,XMMWORD[96+rsi] + movdqu XMMWORD[48+rdi],xmm7 + movdqu xmm7,XMMWORD[112+rsi] + lea rsi,[128+rsi] + pxor xmm6,XMMWORD[48+rsp] + pxor xmm11,xmm15 + pxor xmm2,xmm9 + pxor xmm7,xmm3 + movdqu XMMWORD[64+rdi],xmm6 + movdqu XMMWORD[80+rdi],xmm11 + movdqu XMMWORD[96+rdi],xmm2 + movdqu XMMWORD[112+rdi],xmm7 + lea rdi,[128+rdi] + + sub rdx,64*4 + jnz NEAR $L$oop_outer4x + + jmp NEAR $L$done4x + +$L$tail4x: + cmp rdx,192 + jae NEAR $L$192_or_more4x + cmp rdx,128 + jae NEAR $L$128_or_more4x + cmp rdx,64 + jae NEAR $L$64_or_more4x + + + xor r10,r10 + + movdqa XMMWORD[16+rsp],xmm12 + movdqa XMMWORD[32+rsp],xmm4 + movdqa XMMWORD[48+rsp],xmm0 + jmp NEAR $L$oop_tail4x + +ALIGN 32 +$L$64_or_more4x: + movdqu xmm6,XMMWORD[rsi] + movdqu xmm11,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + movdqu xmm7,XMMWORD[48+rsi] + pxor xmm6,XMMWORD[rsp] + pxor xmm11,xmm12 + pxor xmm2,xmm4 + pxor xmm7,xmm0 + movdqu XMMWORD[rdi],xmm6 + movdqu XMMWORD[16+rdi],xmm11 + movdqu XMMWORD[32+rdi],xmm2 + movdqu XMMWORD[48+rdi],xmm7 + je NEAR $L$done4x + + movdqa xmm6,XMMWORD[16+rsp] + lea rsi,[64+rsi] + xor r10,r10 + movdqa XMMWORD[rsp],xmm6 + movdqa XMMWORD[16+rsp],xmm13 + lea rdi,[64+rdi] + movdqa XMMWORD[32+rsp],xmm5 + sub rdx,64 + movdqa XMMWORD[48+rsp],xmm1 + jmp NEAR $L$oop_tail4x + +ALIGN 32 +$L$128_or_more4x: + movdqu xmm6,XMMWORD[rsi] + movdqu xmm11,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + movdqu xmm7,XMMWORD[48+rsi] + pxor xmm6,XMMWORD[rsp] + pxor xmm11,xmm12 + pxor xmm2,xmm4 + pxor xmm7,xmm0 + + movdqu XMMWORD[rdi],xmm6 + movdqu xmm6,XMMWORD[64+rsi] + movdqu XMMWORD[16+rdi],xmm11 + movdqu xmm11,XMMWORD[80+rsi] + movdqu XMMWORD[32+rdi],xmm2 + movdqu xmm2,XMMWORD[96+rsi] + movdqu XMMWORD[48+rdi],xmm7 + movdqu xmm7,XMMWORD[112+rsi] + pxor xmm6,XMMWORD[16+rsp] + pxor xmm11,xmm13 + pxor xmm2,xmm5 + pxor xmm7,xmm1 + movdqu XMMWORD[64+rdi],xmm6 + movdqu XMMWORD[80+rdi],xmm11 + movdqu XMMWORD[96+rdi],xmm2 + movdqu XMMWORD[112+rdi],xmm7 + je NEAR $L$done4x + + movdqa xmm6,XMMWORD[32+rsp] + lea rsi,[128+rsi] + xor r10,r10 + movdqa XMMWORD[rsp],xmm6 + movdqa XMMWORD[16+rsp],xmm10 + lea rdi,[128+rdi] + movdqa XMMWORD[32+rsp],xmm14 + sub rdx,128 + movdqa XMMWORD[48+rsp],xmm8 + jmp NEAR $L$oop_tail4x + +ALIGN 32 +$L$192_or_more4x: + movdqu xmm6,XMMWORD[rsi] + movdqu xmm11,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + movdqu xmm7,XMMWORD[48+rsi] + pxor xmm6,XMMWORD[rsp] + pxor xmm11,xmm12 + pxor xmm2,xmm4 + pxor xmm7,xmm0 + + movdqu XMMWORD[rdi],xmm6 + movdqu xmm6,XMMWORD[64+rsi] + movdqu XMMWORD[16+rdi],xmm11 + movdqu xmm11,XMMWORD[80+rsi] + movdqu XMMWORD[32+rdi],xmm2 + movdqu xmm2,XMMWORD[96+rsi] + movdqu XMMWORD[48+rdi],xmm7 + movdqu xmm7,XMMWORD[112+rsi] + lea rsi,[128+rsi] + pxor xmm6,XMMWORD[16+rsp] + pxor xmm11,xmm13 + pxor xmm2,xmm5 + pxor xmm7,xmm1 + + movdqu XMMWORD[64+rdi],xmm6 + movdqu xmm6,XMMWORD[rsi] + movdqu XMMWORD[80+rdi],xmm11 + movdqu xmm11,XMMWORD[16+rsi] + movdqu XMMWORD[96+rdi],xmm2 + movdqu xmm2,XMMWORD[32+rsi] + movdqu XMMWORD[112+rdi],xmm7 + lea rdi,[128+rdi] + movdqu xmm7,XMMWORD[48+rsi] + pxor xmm6,XMMWORD[32+rsp] + pxor xmm11,xmm10 + pxor xmm2,xmm14 + pxor xmm7,xmm8 + movdqu XMMWORD[rdi],xmm6 + movdqu XMMWORD[16+rdi],xmm11 + movdqu XMMWORD[32+rdi],xmm2 + movdqu XMMWORD[48+rdi],xmm7 + je NEAR $L$done4x + + movdqa xmm6,XMMWORD[48+rsp] + lea rsi,[64+rsi] + xor r10,r10 + movdqa XMMWORD[rsp],xmm6 + movdqa XMMWORD[16+rsp],xmm15 + lea rdi,[64+rdi] + movdqa XMMWORD[32+rsp],xmm9 + sub rdx,192 + movdqa XMMWORD[48+rsp],xmm3 + +$L$oop_tail4x: + movzx eax,BYTE[r10*1+rsi] + movzx ecx,BYTE[r10*1+rsp] + lea r10,[1+r10] + xor eax,ecx + mov BYTE[((-1))+r10*1+rdi],al + dec rdx + jnz NEAR $L$oop_tail4x + +$L$done4x: + movaps xmm6,XMMWORD[((-168))+r9] + movaps xmm7,XMMWORD[((-152))+r9] + movaps xmm8,XMMWORD[((-136))+r9] + movaps xmm9,XMMWORD[((-120))+r9] + movaps xmm10,XMMWORD[((-104))+r9] + movaps xmm11,XMMWORD[((-88))+r9] + movaps xmm12,XMMWORD[((-72))+r9] + movaps xmm13,XMMWORD[((-56))+r9] + movaps xmm14,XMMWORD[((-40))+r9] + movaps xmm15,XMMWORD[((-24))+r9] + lea rsp,[r9] + +$L$4x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ChaCha20_4x: + +ALIGN 32 +ChaCha20_4xop: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ChaCha20_4xop: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +$L$ChaCha20_4xop: + mov r9,rsp + + sub rsp,0x140+168 + movaps XMMWORD[(-168)+r9],xmm6 + movaps XMMWORD[(-152)+r9],xmm7 + movaps XMMWORD[(-136)+r9],xmm8 + movaps XMMWORD[(-120)+r9],xmm9 + movaps XMMWORD[(-104)+r9],xmm10 + movaps XMMWORD[(-88)+r9],xmm11 + movaps XMMWORD[(-72)+r9],xmm12 + movaps XMMWORD[(-56)+r9],xmm13 + movaps XMMWORD[(-40)+r9],xmm14 + movaps XMMWORD[(-24)+r9],xmm15 +$L$4xop_body: + vzeroupper + + vmovdqa xmm11,XMMWORD[$L$sigma] + vmovdqu xmm3,XMMWORD[rcx] + vmovdqu xmm15,XMMWORD[16+rcx] + vmovdqu xmm7,XMMWORD[r8] + lea rcx,[256+rsp] + + vpshufd xmm8,xmm11,0x00 + vpshufd xmm9,xmm11,0x55 + vmovdqa XMMWORD[64+rsp],xmm8 + vpshufd xmm10,xmm11,0xaa + vmovdqa XMMWORD[80+rsp],xmm9 + vpshufd xmm11,xmm11,0xff + vmovdqa XMMWORD[96+rsp],xmm10 + vmovdqa XMMWORD[112+rsp],xmm11 + + vpshufd xmm0,xmm3,0x00 + vpshufd xmm1,xmm3,0x55 + vmovdqa XMMWORD[(128-256)+rcx],xmm0 + vpshufd xmm2,xmm3,0xaa + vmovdqa XMMWORD[(144-256)+rcx],xmm1 + vpshufd xmm3,xmm3,0xff + vmovdqa XMMWORD[(160-256)+rcx],xmm2 + vmovdqa XMMWORD[(176-256)+rcx],xmm3 + + vpshufd xmm12,xmm15,0x00 + vpshufd xmm13,xmm15,0x55 + vmovdqa XMMWORD[(192-256)+rcx],xmm12 + vpshufd xmm14,xmm15,0xaa + vmovdqa XMMWORD[(208-256)+rcx],xmm13 + vpshufd xmm15,xmm15,0xff + vmovdqa XMMWORD[(224-256)+rcx],xmm14 + vmovdqa XMMWORD[(240-256)+rcx],xmm15 + + vpshufd xmm4,xmm7,0x00 + vpshufd xmm5,xmm7,0x55 + vpaddd xmm4,xmm4,XMMWORD[$L$inc] + vpshufd xmm6,xmm7,0xaa + vmovdqa XMMWORD[(272-256)+rcx],xmm5 + vpshufd xmm7,xmm7,0xff + vmovdqa XMMWORD[(288-256)+rcx],xmm6 + vmovdqa XMMWORD[(304-256)+rcx],xmm7 + + jmp NEAR $L$oop_enter4xop + +ALIGN 32 +$L$oop_outer4xop: + vmovdqa xmm8,XMMWORD[64+rsp] + vmovdqa xmm9,XMMWORD[80+rsp] + vmovdqa xmm10,XMMWORD[96+rsp] + vmovdqa xmm11,XMMWORD[112+rsp] + vmovdqa xmm0,XMMWORD[((128-256))+rcx] + vmovdqa xmm1,XMMWORD[((144-256))+rcx] + vmovdqa xmm2,XMMWORD[((160-256))+rcx] + vmovdqa xmm3,XMMWORD[((176-256))+rcx] + vmovdqa xmm12,XMMWORD[((192-256))+rcx] + vmovdqa xmm13,XMMWORD[((208-256))+rcx] + vmovdqa xmm14,XMMWORD[((224-256))+rcx] + vmovdqa xmm15,XMMWORD[((240-256))+rcx] + vmovdqa xmm4,XMMWORD[((256-256))+rcx] + vmovdqa xmm5,XMMWORD[((272-256))+rcx] + vmovdqa xmm6,XMMWORD[((288-256))+rcx] + vmovdqa xmm7,XMMWORD[((304-256))+rcx] + vpaddd xmm4,xmm4,XMMWORD[$L$four] + +$L$oop_enter4xop: + mov eax,10 + vmovdqa XMMWORD[(256-256)+rcx],xmm4 + jmp NEAR $L$oop4xop + +ALIGN 32 +$L$oop4xop: + vpaddd xmm8,xmm8,xmm0 + vpaddd xmm9,xmm9,xmm1 + vpaddd xmm10,xmm10,xmm2 + vpaddd xmm11,xmm11,xmm3 + vpxor xmm4,xmm8,xmm4 + vpxor xmm5,xmm9,xmm5 + vpxor xmm6,xmm10,xmm6 + vpxor xmm7,xmm11,xmm7 +DB 143,232,120,194,228,16 +DB 143,232,120,194,237,16 +DB 143,232,120,194,246,16 +DB 143,232,120,194,255,16 + vpaddd xmm12,xmm12,xmm4 + vpaddd xmm13,xmm13,xmm5 + vpaddd xmm14,xmm14,xmm6 + vpaddd xmm15,xmm15,xmm7 + vpxor xmm0,xmm12,xmm0 + vpxor xmm1,xmm13,xmm1 + vpxor xmm2,xmm2,xmm14 + vpxor xmm3,xmm3,xmm15 +DB 143,232,120,194,192,12 +DB 143,232,120,194,201,12 +DB 143,232,120,194,210,12 +DB 143,232,120,194,219,12 + vpaddd xmm8,xmm0,xmm8 + vpaddd xmm9,xmm1,xmm9 + vpaddd xmm10,xmm10,xmm2 + vpaddd xmm11,xmm11,xmm3 + vpxor xmm4,xmm8,xmm4 + vpxor xmm5,xmm9,xmm5 + vpxor xmm6,xmm10,xmm6 + vpxor xmm7,xmm11,xmm7 +DB 143,232,120,194,228,8 +DB 143,232,120,194,237,8 +DB 143,232,120,194,246,8 +DB 143,232,120,194,255,8 + vpaddd xmm12,xmm12,xmm4 + vpaddd xmm13,xmm13,xmm5 + vpaddd xmm14,xmm14,xmm6 + vpaddd xmm15,xmm15,xmm7 + vpxor xmm0,xmm12,xmm0 + vpxor xmm1,xmm13,xmm1 + vpxor xmm2,xmm2,xmm14 + vpxor xmm3,xmm3,xmm15 +DB 143,232,120,194,192,7 +DB 143,232,120,194,201,7 +DB 143,232,120,194,210,7 +DB 143,232,120,194,219,7 + vpaddd xmm8,xmm8,xmm1 + vpaddd xmm9,xmm9,xmm2 + vpaddd xmm10,xmm10,xmm3 + vpaddd xmm11,xmm11,xmm0 + vpxor xmm7,xmm8,xmm7 + vpxor xmm4,xmm9,xmm4 + vpxor xmm5,xmm10,xmm5 + vpxor xmm6,xmm11,xmm6 +DB 143,232,120,194,255,16 +DB 143,232,120,194,228,16 +DB 143,232,120,194,237,16 +DB 143,232,120,194,246,16 + vpaddd xmm14,xmm14,xmm7 + vpaddd xmm15,xmm15,xmm4 + vpaddd xmm12,xmm12,xmm5 + vpaddd xmm13,xmm13,xmm6 + vpxor xmm1,xmm14,xmm1 + vpxor xmm2,xmm15,xmm2 + vpxor xmm3,xmm3,xmm12 + vpxor xmm0,xmm0,xmm13 +DB 143,232,120,194,201,12 +DB 143,232,120,194,210,12 +DB 143,232,120,194,219,12 +DB 143,232,120,194,192,12 + vpaddd xmm8,xmm1,xmm8 + vpaddd xmm9,xmm2,xmm9 + vpaddd xmm10,xmm10,xmm3 + vpaddd xmm11,xmm11,xmm0 + vpxor xmm7,xmm8,xmm7 + vpxor xmm4,xmm9,xmm4 + vpxor xmm5,xmm10,xmm5 + vpxor xmm6,xmm11,xmm6 +DB 143,232,120,194,255,8 +DB 143,232,120,194,228,8 +DB 143,232,120,194,237,8 +DB 143,232,120,194,246,8 + vpaddd xmm14,xmm14,xmm7 + vpaddd xmm15,xmm15,xmm4 + vpaddd xmm12,xmm12,xmm5 + vpaddd xmm13,xmm13,xmm6 + vpxor xmm1,xmm14,xmm1 + vpxor xmm2,xmm15,xmm2 + vpxor xmm3,xmm3,xmm12 + vpxor xmm0,xmm0,xmm13 +DB 143,232,120,194,201,7 +DB 143,232,120,194,210,7 +DB 143,232,120,194,219,7 +DB 143,232,120,194,192,7 + dec eax + jnz NEAR $L$oop4xop + + vpaddd xmm8,xmm8,XMMWORD[64+rsp] + vpaddd xmm9,xmm9,XMMWORD[80+rsp] + vpaddd xmm10,xmm10,XMMWORD[96+rsp] + vpaddd xmm11,xmm11,XMMWORD[112+rsp] + + vmovdqa XMMWORD[32+rsp],xmm14 + vmovdqa XMMWORD[48+rsp],xmm15 + + vpunpckldq xmm14,xmm8,xmm9 + vpunpckldq xmm15,xmm10,xmm11 + vpunpckhdq xmm8,xmm8,xmm9 + vpunpckhdq xmm10,xmm10,xmm11 + vpunpcklqdq xmm9,xmm14,xmm15 + vpunpckhqdq xmm14,xmm14,xmm15 + vpunpcklqdq xmm11,xmm8,xmm10 + vpunpckhqdq xmm8,xmm8,xmm10 + vpaddd xmm0,xmm0,XMMWORD[((128-256))+rcx] + vpaddd xmm1,xmm1,XMMWORD[((144-256))+rcx] + vpaddd xmm2,xmm2,XMMWORD[((160-256))+rcx] + vpaddd xmm3,xmm3,XMMWORD[((176-256))+rcx] + + vmovdqa XMMWORD[rsp],xmm9 + vmovdqa XMMWORD[16+rsp],xmm14 + vmovdqa xmm9,XMMWORD[32+rsp] + vmovdqa xmm14,XMMWORD[48+rsp] + + vpunpckldq xmm10,xmm0,xmm1 + vpunpckldq xmm15,xmm2,xmm3 + vpunpckhdq xmm0,xmm0,xmm1 + vpunpckhdq xmm2,xmm2,xmm3 + vpunpcklqdq xmm1,xmm10,xmm15 + vpunpckhqdq xmm10,xmm10,xmm15 + vpunpcklqdq xmm3,xmm0,xmm2 + vpunpckhqdq xmm0,xmm0,xmm2 + vpaddd xmm12,xmm12,XMMWORD[((192-256))+rcx] + vpaddd xmm13,xmm13,XMMWORD[((208-256))+rcx] + vpaddd xmm9,xmm9,XMMWORD[((224-256))+rcx] + vpaddd xmm14,xmm14,XMMWORD[((240-256))+rcx] + + vpunpckldq xmm2,xmm12,xmm13 + vpunpckldq xmm15,xmm9,xmm14 + vpunpckhdq xmm12,xmm12,xmm13 + vpunpckhdq xmm9,xmm9,xmm14 + vpunpcklqdq xmm13,xmm2,xmm15 + vpunpckhqdq xmm2,xmm2,xmm15 + vpunpcklqdq xmm14,xmm12,xmm9 + vpunpckhqdq xmm12,xmm12,xmm9 + vpaddd xmm4,xmm4,XMMWORD[((256-256))+rcx] + vpaddd xmm5,xmm5,XMMWORD[((272-256))+rcx] + vpaddd xmm6,xmm6,XMMWORD[((288-256))+rcx] + vpaddd xmm7,xmm7,XMMWORD[((304-256))+rcx] + + vpunpckldq xmm9,xmm4,xmm5 + vpunpckldq xmm15,xmm6,xmm7 + vpunpckhdq xmm4,xmm4,xmm5 + vpunpckhdq xmm6,xmm6,xmm7 + vpunpcklqdq xmm5,xmm9,xmm15 + vpunpckhqdq xmm9,xmm9,xmm15 + vpunpcklqdq xmm7,xmm4,xmm6 + vpunpckhqdq xmm4,xmm4,xmm6 + vmovdqa xmm6,XMMWORD[rsp] + vmovdqa xmm15,XMMWORD[16+rsp] + + cmp rdx,64*4 + jb NEAR $L$tail4xop + + vpxor xmm6,xmm6,XMMWORD[rsi] + vpxor xmm1,xmm1,XMMWORD[16+rsi] + vpxor xmm13,xmm13,XMMWORD[32+rsi] + vpxor xmm5,xmm5,XMMWORD[48+rsi] + vpxor xmm15,xmm15,XMMWORD[64+rsi] + vpxor xmm10,xmm10,XMMWORD[80+rsi] + vpxor xmm2,xmm2,XMMWORD[96+rsi] + vpxor xmm9,xmm9,XMMWORD[112+rsi] + lea rsi,[128+rsi] + vpxor xmm11,xmm11,XMMWORD[rsi] + vpxor xmm3,xmm3,XMMWORD[16+rsi] + vpxor xmm14,xmm14,XMMWORD[32+rsi] + vpxor xmm7,xmm7,XMMWORD[48+rsi] + vpxor xmm8,xmm8,XMMWORD[64+rsi] + vpxor xmm0,xmm0,XMMWORD[80+rsi] + vpxor xmm12,xmm12,XMMWORD[96+rsi] + vpxor xmm4,xmm4,XMMWORD[112+rsi] + lea rsi,[128+rsi] + + vmovdqu XMMWORD[rdi],xmm6 + vmovdqu XMMWORD[16+rdi],xmm1 + vmovdqu XMMWORD[32+rdi],xmm13 + vmovdqu XMMWORD[48+rdi],xmm5 + vmovdqu XMMWORD[64+rdi],xmm15 + vmovdqu XMMWORD[80+rdi],xmm10 + vmovdqu XMMWORD[96+rdi],xmm2 + vmovdqu XMMWORD[112+rdi],xmm9 + lea rdi,[128+rdi] + vmovdqu XMMWORD[rdi],xmm11 + vmovdqu XMMWORD[16+rdi],xmm3 + vmovdqu XMMWORD[32+rdi],xmm14 + vmovdqu XMMWORD[48+rdi],xmm7 + vmovdqu XMMWORD[64+rdi],xmm8 + vmovdqu XMMWORD[80+rdi],xmm0 + vmovdqu XMMWORD[96+rdi],xmm12 + vmovdqu XMMWORD[112+rdi],xmm4 + lea rdi,[128+rdi] + + sub rdx,64*4 + jnz NEAR $L$oop_outer4xop + + jmp NEAR $L$done4xop + +ALIGN 32 +$L$tail4xop: + cmp rdx,192 + jae NEAR $L$192_or_more4xop + cmp rdx,128 + jae NEAR $L$128_or_more4xop + cmp rdx,64 + jae NEAR $L$64_or_more4xop + + xor r10,r10 + vmovdqa XMMWORD[rsp],xmm6 + vmovdqa XMMWORD[16+rsp],xmm1 + vmovdqa XMMWORD[32+rsp],xmm13 + vmovdqa XMMWORD[48+rsp],xmm5 + jmp NEAR $L$oop_tail4xop + +ALIGN 32 +$L$64_or_more4xop: + vpxor xmm6,xmm6,XMMWORD[rsi] + vpxor xmm1,xmm1,XMMWORD[16+rsi] + vpxor xmm13,xmm13,XMMWORD[32+rsi] + vpxor xmm5,xmm5,XMMWORD[48+rsi] + vmovdqu XMMWORD[rdi],xmm6 + vmovdqu XMMWORD[16+rdi],xmm1 + vmovdqu XMMWORD[32+rdi],xmm13 + vmovdqu XMMWORD[48+rdi],xmm5 + je NEAR $L$done4xop + + lea rsi,[64+rsi] + vmovdqa XMMWORD[rsp],xmm15 + xor r10,r10 + vmovdqa XMMWORD[16+rsp],xmm10 + lea rdi,[64+rdi] + vmovdqa XMMWORD[32+rsp],xmm2 + sub rdx,64 + vmovdqa XMMWORD[48+rsp],xmm9 + jmp NEAR $L$oop_tail4xop + +ALIGN 32 +$L$128_or_more4xop: + vpxor xmm6,xmm6,XMMWORD[rsi] + vpxor xmm1,xmm1,XMMWORD[16+rsi] + vpxor xmm13,xmm13,XMMWORD[32+rsi] + vpxor xmm5,xmm5,XMMWORD[48+rsi] + vpxor xmm15,xmm15,XMMWORD[64+rsi] + vpxor xmm10,xmm10,XMMWORD[80+rsi] + vpxor xmm2,xmm2,XMMWORD[96+rsi] + vpxor xmm9,xmm9,XMMWORD[112+rsi] + + vmovdqu XMMWORD[rdi],xmm6 + vmovdqu XMMWORD[16+rdi],xmm1 + vmovdqu XMMWORD[32+rdi],xmm13 + vmovdqu XMMWORD[48+rdi],xmm5 + vmovdqu XMMWORD[64+rdi],xmm15 + vmovdqu XMMWORD[80+rdi],xmm10 + vmovdqu XMMWORD[96+rdi],xmm2 + vmovdqu XMMWORD[112+rdi],xmm9 + je NEAR $L$done4xop + + lea rsi,[128+rsi] + vmovdqa XMMWORD[rsp],xmm11 + xor r10,r10 + vmovdqa XMMWORD[16+rsp],xmm3 + lea rdi,[128+rdi] + vmovdqa XMMWORD[32+rsp],xmm14 + sub rdx,128 + vmovdqa XMMWORD[48+rsp],xmm7 + jmp NEAR $L$oop_tail4xop + +ALIGN 32 +$L$192_or_more4xop: + vpxor xmm6,xmm6,XMMWORD[rsi] + vpxor xmm1,xmm1,XMMWORD[16+rsi] + vpxor xmm13,xmm13,XMMWORD[32+rsi] + vpxor xmm5,xmm5,XMMWORD[48+rsi] + vpxor xmm15,xmm15,XMMWORD[64+rsi] + vpxor xmm10,xmm10,XMMWORD[80+rsi] + vpxor xmm2,xmm2,XMMWORD[96+rsi] + vpxor xmm9,xmm9,XMMWORD[112+rsi] + lea rsi,[128+rsi] + vpxor xmm11,xmm11,XMMWORD[rsi] + vpxor xmm3,xmm3,XMMWORD[16+rsi] + vpxor xmm14,xmm14,XMMWORD[32+rsi] + vpxor xmm7,xmm7,XMMWORD[48+rsi] + + vmovdqu XMMWORD[rdi],xmm6 + vmovdqu XMMWORD[16+rdi],xmm1 + vmovdqu XMMWORD[32+rdi],xmm13 + vmovdqu XMMWORD[48+rdi],xmm5 + vmovdqu XMMWORD[64+rdi],xmm15 + vmovdqu XMMWORD[80+rdi],xmm10 + vmovdqu XMMWORD[96+rdi],xmm2 + vmovdqu XMMWORD[112+rdi],xmm9 + lea rdi,[128+rdi] + vmovdqu XMMWORD[rdi],xmm11 + vmovdqu XMMWORD[16+rdi],xmm3 + vmovdqu XMMWORD[32+rdi],xmm14 + vmovdqu XMMWORD[48+rdi],xmm7 + je NEAR $L$done4xop + + lea rsi,[64+rsi] + vmovdqa XMMWORD[rsp],xmm8 + xor r10,r10 + vmovdqa XMMWORD[16+rsp],xmm0 + lea rdi,[64+rdi] + vmovdqa XMMWORD[32+rsp],xmm12 + sub rdx,192 + vmovdqa XMMWORD[48+rsp],xmm4 + +$L$oop_tail4xop: + movzx eax,BYTE[r10*1+rsi] + movzx ecx,BYTE[r10*1+rsp] + lea r10,[1+r10] + xor eax,ecx + mov BYTE[((-1))+r10*1+rdi],al + dec rdx + jnz NEAR $L$oop_tail4xop + +$L$done4xop: + vzeroupper + movaps xmm6,XMMWORD[((-168))+r9] + movaps xmm7,XMMWORD[((-152))+r9] + movaps xmm8,XMMWORD[((-136))+r9] + movaps xmm9,XMMWORD[((-120))+r9] + movaps xmm10,XMMWORD[((-104))+r9] + movaps xmm11,XMMWORD[((-88))+r9] + movaps xmm12,XMMWORD[((-72))+r9] + movaps xmm13,XMMWORD[((-56))+r9] + movaps xmm14,XMMWORD[((-40))+r9] + movaps xmm15,XMMWORD[((-24))+r9] + lea rsp,[r9] + +$L$4xop_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ChaCha20_4xop: + +ALIGN 32 +ChaCha20_8x: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ChaCha20_8x: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +$L$ChaCha20_8x: + mov r9,rsp + + sub rsp,0x280+168 + and rsp,-32 + movaps XMMWORD[(-168)+r9],xmm6 + movaps XMMWORD[(-152)+r9],xmm7 + movaps XMMWORD[(-136)+r9],xmm8 + movaps XMMWORD[(-120)+r9],xmm9 + movaps XMMWORD[(-104)+r9],xmm10 + movaps XMMWORD[(-88)+r9],xmm11 + movaps XMMWORD[(-72)+r9],xmm12 + movaps XMMWORD[(-56)+r9],xmm13 + movaps XMMWORD[(-40)+r9],xmm14 + movaps XMMWORD[(-24)+r9],xmm15 +$L$8x_body: + vzeroupper + + + + + + + + + + + vbroadcasti128 ymm11,XMMWORD[$L$sigma] + vbroadcasti128 ymm3,XMMWORD[rcx] + vbroadcasti128 ymm15,XMMWORD[16+rcx] + vbroadcasti128 ymm7,XMMWORD[r8] + lea rcx,[256+rsp] + lea rax,[512+rsp] + lea r10,[$L$rot16] + lea r11,[$L$rot24] + + vpshufd ymm8,ymm11,0x00 + vpshufd ymm9,ymm11,0x55 + vmovdqa YMMWORD[(128-256)+rcx],ymm8 + vpshufd ymm10,ymm11,0xaa + vmovdqa YMMWORD[(160-256)+rcx],ymm9 + vpshufd ymm11,ymm11,0xff + vmovdqa YMMWORD[(192-256)+rcx],ymm10 + vmovdqa YMMWORD[(224-256)+rcx],ymm11 + + vpshufd ymm0,ymm3,0x00 + vpshufd ymm1,ymm3,0x55 + vmovdqa YMMWORD[(256-256)+rcx],ymm0 + vpshufd ymm2,ymm3,0xaa + vmovdqa YMMWORD[(288-256)+rcx],ymm1 + vpshufd ymm3,ymm3,0xff + vmovdqa YMMWORD[(320-256)+rcx],ymm2 + vmovdqa YMMWORD[(352-256)+rcx],ymm3 + + vpshufd ymm12,ymm15,0x00 + vpshufd ymm13,ymm15,0x55 + vmovdqa YMMWORD[(384-512)+rax],ymm12 + vpshufd ymm14,ymm15,0xaa + vmovdqa YMMWORD[(416-512)+rax],ymm13 + vpshufd ymm15,ymm15,0xff + vmovdqa YMMWORD[(448-512)+rax],ymm14 + vmovdqa YMMWORD[(480-512)+rax],ymm15 + + vpshufd ymm4,ymm7,0x00 + vpshufd ymm5,ymm7,0x55 + vpaddd ymm4,ymm4,YMMWORD[$L$incy] + vpshufd ymm6,ymm7,0xaa + vmovdqa YMMWORD[(544-512)+rax],ymm5 + vpshufd ymm7,ymm7,0xff + vmovdqa YMMWORD[(576-512)+rax],ymm6 + vmovdqa YMMWORD[(608-512)+rax],ymm7 + + jmp NEAR $L$oop_enter8x + +ALIGN 32 +$L$oop_outer8x: + vmovdqa ymm8,YMMWORD[((128-256))+rcx] + vmovdqa ymm9,YMMWORD[((160-256))+rcx] + vmovdqa ymm10,YMMWORD[((192-256))+rcx] + vmovdqa ymm11,YMMWORD[((224-256))+rcx] + vmovdqa ymm0,YMMWORD[((256-256))+rcx] + vmovdqa ymm1,YMMWORD[((288-256))+rcx] + vmovdqa ymm2,YMMWORD[((320-256))+rcx] + vmovdqa ymm3,YMMWORD[((352-256))+rcx] + vmovdqa ymm12,YMMWORD[((384-512))+rax] + vmovdqa ymm13,YMMWORD[((416-512))+rax] + vmovdqa ymm14,YMMWORD[((448-512))+rax] + vmovdqa ymm15,YMMWORD[((480-512))+rax] + vmovdqa ymm4,YMMWORD[((512-512))+rax] + vmovdqa ymm5,YMMWORD[((544-512))+rax] + vmovdqa ymm6,YMMWORD[((576-512))+rax] + vmovdqa ymm7,YMMWORD[((608-512))+rax] + vpaddd ymm4,ymm4,YMMWORD[$L$eight] + +$L$oop_enter8x: + vmovdqa YMMWORD[64+rsp],ymm14 + vmovdqa YMMWORD[96+rsp],ymm15 + vbroadcasti128 ymm15,XMMWORD[r10] + vmovdqa YMMWORD[(512-512)+rax],ymm4 + mov eax,10 + jmp NEAR $L$oop8x + +ALIGN 32 +$L$oop8x: + vpaddd ymm8,ymm8,ymm0 + vpxor ymm4,ymm8,ymm4 + vpshufb ymm4,ymm4,ymm15 + vpaddd ymm9,ymm9,ymm1 + vpxor ymm5,ymm9,ymm5 + vpshufb ymm5,ymm5,ymm15 + vpaddd ymm12,ymm12,ymm4 + vpxor ymm0,ymm12,ymm0 + vpslld ymm14,ymm0,12 + vpsrld ymm0,ymm0,20 + vpor ymm0,ymm14,ymm0 + vbroadcasti128 ymm14,XMMWORD[r11] + vpaddd ymm13,ymm13,ymm5 + vpxor ymm1,ymm13,ymm1 + vpslld ymm15,ymm1,12 + vpsrld ymm1,ymm1,20 + vpor ymm1,ymm15,ymm1 + vpaddd ymm8,ymm8,ymm0 + vpxor ymm4,ymm8,ymm4 + vpshufb ymm4,ymm4,ymm14 + vpaddd ymm9,ymm9,ymm1 + vpxor ymm5,ymm9,ymm5 + vpshufb ymm5,ymm5,ymm14 + vpaddd ymm12,ymm12,ymm4 + vpxor ymm0,ymm12,ymm0 + vpslld ymm15,ymm0,7 + vpsrld ymm0,ymm0,25 + vpor ymm0,ymm15,ymm0 + vbroadcasti128 ymm15,XMMWORD[r10] + vpaddd ymm13,ymm13,ymm5 + vpxor ymm1,ymm13,ymm1 + vpslld ymm14,ymm1,7 + vpsrld ymm1,ymm1,25 + vpor ymm1,ymm14,ymm1 + vmovdqa YMMWORD[rsp],ymm12 + vmovdqa YMMWORD[32+rsp],ymm13 + vmovdqa ymm12,YMMWORD[64+rsp] + vmovdqa ymm13,YMMWORD[96+rsp] + vpaddd ymm10,ymm10,ymm2 + vpxor ymm6,ymm10,ymm6 + vpshufb ymm6,ymm6,ymm15 + vpaddd ymm11,ymm11,ymm3 + vpxor ymm7,ymm11,ymm7 + vpshufb ymm7,ymm7,ymm15 + vpaddd ymm12,ymm12,ymm6 + vpxor ymm2,ymm12,ymm2 + vpslld ymm14,ymm2,12 + vpsrld ymm2,ymm2,20 + vpor ymm2,ymm14,ymm2 + vbroadcasti128 ymm14,XMMWORD[r11] + vpaddd ymm13,ymm13,ymm7 + vpxor ymm3,ymm13,ymm3 + vpslld ymm15,ymm3,12 + vpsrld ymm3,ymm3,20 + vpor ymm3,ymm15,ymm3 + vpaddd ymm10,ymm10,ymm2 + vpxor ymm6,ymm10,ymm6 + vpshufb ymm6,ymm6,ymm14 + vpaddd ymm11,ymm11,ymm3 + vpxor ymm7,ymm11,ymm7 + vpshufb ymm7,ymm7,ymm14 + vpaddd ymm12,ymm12,ymm6 + vpxor ymm2,ymm12,ymm2 + vpslld ymm15,ymm2,7 + vpsrld ymm2,ymm2,25 + vpor ymm2,ymm15,ymm2 + vbroadcasti128 ymm15,XMMWORD[r10] + vpaddd ymm13,ymm13,ymm7 + vpxor ymm3,ymm13,ymm3 + vpslld ymm14,ymm3,7 + vpsrld ymm3,ymm3,25 + vpor ymm3,ymm14,ymm3 + vpaddd ymm8,ymm8,ymm1 + vpxor ymm7,ymm8,ymm7 + vpshufb ymm7,ymm7,ymm15 + vpaddd ymm9,ymm9,ymm2 + vpxor ymm4,ymm9,ymm4 + vpshufb ymm4,ymm4,ymm15 + vpaddd ymm12,ymm12,ymm7 + vpxor ymm1,ymm12,ymm1 + vpslld ymm14,ymm1,12 + vpsrld ymm1,ymm1,20 + vpor ymm1,ymm14,ymm1 + vbroadcasti128 ymm14,XMMWORD[r11] + vpaddd ymm13,ymm13,ymm4 + vpxor ymm2,ymm13,ymm2 + vpslld ymm15,ymm2,12 + vpsrld ymm2,ymm2,20 + vpor ymm2,ymm15,ymm2 + vpaddd ymm8,ymm8,ymm1 + vpxor ymm7,ymm8,ymm7 + vpshufb ymm7,ymm7,ymm14 + vpaddd ymm9,ymm9,ymm2 + vpxor ymm4,ymm9,ymm4 + vpshufb ymm4,ymm4,ymm14 + vpaddd ymm12,ymm12,ymm7 + vpxor ymm1,ymm12,ymm1 + vpslld ymm15,ymm1,7 + vpsrld ymm1,ymm1,25 + vpor ymm1,ymm15,ymm1 + vbroadcasti128 ymm15,XMMWORD[r10] + vpaddd ymm13,ymm13,ymm4 + vpxor ymm2,ymm13,ymm2 + vpslld ymm14,ymm2,7 + vpsrld ymm2,ymm2,25 + vpor ymm2,ymm14,ymm2 + vmovdqa YMMWORD[64+rsp],ymm12 + vmovdqa YMMWORD[96+rsp],ymm13 + vmovdqa ymm12,YMMWORD[rsp] + vmovdqa ymm13,YMMWORD[32+rsp] + vpaddd ymm10,ymm10,ymm3 + vpxor ymm5,ymm10,ymm5 + vpshufb ymm5,ymm5,ymm15 + vpaddd ymm11,ymm11,ymm0 + vpxor ymm6,ymm11,ymm6 + vpshufb ymm6,ymm6,ymm15 + vpaddd ymm12,ymm12,ymm5 + vpxor ymm3,ymm12,ymm3 + vpslld ymm14,ymm3,12 + vpsrld ymm3,ymm3,20 + vpor ymm3,ymm14,ymm3 + vbroadcasti128 ymm14,XMMWORD[r11] + vpaddd ymm13,ymm13,ymm6 + vpxor ymm0,ymm13,ymm0 + vpslld ymm15,ymm0,12 + vpsrld ymm0,ymm0,20 + vpor ymm0,ymm15,ymm0 + vpaddd ymm10,ymm10,ymm3 + vpxor ymm5,ymm10,ymm5 + vpshufb ymm5,ymm5,ymm14 + vpaddd ymm11,ymm11,ymm0 + vpxor ymm6,ymm11,ymm6 + vpshufb ymm6,ymm6,ymm14 + vpaddd ymm12,ymm12,ymm5 + vpxor ymm3,ymm12,ymm3 + vpslld ymm15,ymm3,7 + vpsrld ymm3,ymm3,25 + vpor ymm3,ymm15,ymm3 + vbroadcasti128 ymm15,XMMWORD[r10] + vpaddd ymm13,ymm13,ymm6 + vpxor ymm0,ymm13,ymm0 + vpslld ymm14,ymm0,7 + vpsrld ymm0,ymm0,25 + vpor ymm0,ymm14,ymm0 + dec eax + jnz NEAR $L$oop8x + + lea rax,[512+rsp] + vpaddd ymm8,ymm8,YMMWORD[((128-256))+rcx] + vpaddd ymm9,ymm9,YMMWORD[((160-256))+rcx] + vpaddd ymm10,ymm10,YMMWORD[((192-256))+rcx] + vpaddd ymm11,ymm11,YMMWORD[((224-256))+rcx] + + vpunpckldq ymm14,ymm8,ymm9 + vpunpckldq ymm15,ymm10,ymm11 + vpunpckhdq ymm8,ymm8,ymm9 + vpunpckhdq ymm10,ymm10,ymm11 + vpunpcklqdq ymm9,ymm14,ymm15 + vpunpckhqdq ymm14,ymm14,ymm15 + vpunpcklqdq ymm11,ymm8,ymm10 + vpunpckhqdq ymm8,ymm8,ymm10 + vpaddd ymm0,ymm0,YMMWORD[((256-256))+rcx] + vpaddd ymm1,ymm1,YMMWORD[((288-256))+rcx] + vpaddd ymm2,ymm2,YMMWORD[((320-256))+rcx] + vpaddd ymm3,ymm3,YMMWORD[((352-256))+rcx] + + vpunpckldq ymm10,ymm0,ymm1 + vpunpckldq ymm15,ymm2,ymm3 + vpunpckhdq ymm0,ymm0,ymm1 + vpunpckhdq ymm2,ymm2,ymm3 + vpunpcklqdq ymm1,ymm10,ymm15 + vpunpckhqdq ymm10,ymm10,ymm15 + vpunpcklqdq ymm3,ymm0,ymm2 + vpunpckhqdq ymm0,ymm0,ymm2 + vperm2i128 ymm15,ymm9,ymm1,0x20 + vperm2i128 ymm1,ymm9,ymm1,0x31 + vperm2i128 ymm9,ymm14,ymm10,0x20 + vperm2i128 ymm10,ymm14,ymm10,0x31 + vperm2i128 ymm14,ymm11,ymm3,0x20 + vperm2i128 ymm3,ymm11,ymm3,0x31 + vperm2i128 ymm11,ymm8,ymm0,0x20 + vperm2i128 ymm0,ymm8,ymm0,0x31 + vmovdqa YMMWORD[rsp],ymm15 + vmovdqa YMMWORD[32+rsp],ymm9 + vmovdqa ymm15,YMMWORD[64+rsp] + vmovdqa ymm9,YMMWORD[96+rsp] + + vpaddd ymm12,ymm12,YMMWORD[((384-512))+rax] + vpaddd ymm13,ymm13,YMMWORD[((416-512))+rax] + vpaddd ymm15,ymm15,YMMWORD[((448-512))+rax] + vpaddd ymm9,ymm9,YMMWORD[((480-512))+rax] + + vpunpckldq ymm2,ymm12,ymm13 + vpunpckldq ymm8,ymm15,ymm9 + vpunpckhdq ymm12,ymm12,ymm13 + vpunpckhdq ymm15,ymm15,ymm9 + vpunpcklqdq ymm13,ymm2,ymm8 + vpunpckhqdq ymm2,ymm2,ymm8 + vpunpcklqdq ymm9,ymm12,ymm15 + vpunpckhqdq ymm12,ymm12,ymm15 + vpaddd ymm4,ymm4,YMMWORD[((512-512))+rax] + vpaddd ymm5,ymm5,YMMWORD[((544-512))+rax] + vpaddd ymm6,ymm6,YMMWORD[((576-512))+rax] + vpaddd ymm7,ymm7,YMMWORD[((608-512))+rax] + + vpunpckldq ymm15,ymm4,ymm5 + vpunpckldq ymm8,ymm6,ymm7 + vpunpckhdq ymm4,ymm4,ymm5 + vpunpckhdq ymm6,ymm6,ymm7 + vpunpcklqdq ymm5,ymm15,ymm8 + vpunpckhqdq ymm15,ymm15,ymm8 + vpunpcklqdq ymm7,ymm4,ymm6 + vpunpckhqdq ymm4,ymm4,ymm6 + vperm2i128 ymm8,ymm13,ymm5,0x20 + vperm2i128 ymm5,ymm13,ymm5,0x31 + vperm2i128 ymm13,ymm2,ymm15,0x20 + vperm2i128 ymm15,ymm2,ymm15,0x31 + vperm2i128 ymm2,ymm9,ymm7,0x20 + vperm2i128 ymm7,ymm9,ymm7,0x31 + vperm2i128 ymm9,ymm12,ymm4,0x20 + vperm2i128 ymm4,ymm12,ymm4,0x31 + vmovdqa ymm6,YMMWORD[rsp] + vmovdqa ymm12,YMMWORD[32+rsp] + + cmp rdx,64*8 + jb NEAR $L$tail8x + + vpxor ymm6,ymm6,YMMWORD[rsi] + vpxor ymm8,ymm8,YMMWORD[32+rsi] + vpxor ymm1,ymm1,YMMWORD[64+rsi] + vpxor ymm5,ymm5,YMMWORD[96+rsi] + lea rsi,[128+rsi] + vmovdqu YMMWORD[rdi],ymm6 + vmovdqu YMMWORD[32+rdi],ymm8 + vmovdqu YMMWORD[64+rdi],ymm1 + vmovdqu YMMWORD[96+rdi],ymm5 + lea rdi,[128+rdi] + + vpxor ymm12,ymm12,YMMWORD[rsi] + vpxor ymm13,ymm13,YMMWORD[32+rsi] + vpxor ymm10,ymm10,YMMWORD[64+rsi] + vpxor ymm15,ymm15,YMMWORD[96+rsi] + lea rsi,[128+rsi] + vmovdqu YMMWORD[rdi],ymm12 + vmovdqu YMMWORD[32+rdi],ymm13 + vmovdqu YMMWORD[64+rdi],ymm10 + vmovdqu YMMWORD[96+rdi],ymm15 + lea rdi,[128+rdi] + + vpxor ymm14,ymm14,YMMWORD[rsi] + vpxor ymm2,ymm2,YMMWORD[32+rsi] + vpxor ymm3,ymm3,YMMWORD[64+rsi] + vpxor ymm7,ymm7,YMMWORD[96+rsi] + lea rsi,[128+rsi] + vmovdqu YMMWORD[rdi],ymm14 + vmovdqu YMMWORD[32+rdi],ymm2 + vmovdqu YMMWORD[64+rdi],ymm3 + vmovdqu YMMWORD[96+rdi],ymm7 + lea rdi,[128+rdi] + + vpxor ymm11,ymm11,YMMWORD[rsi] + vpxor ymm9,ymm9,YMMWORD[32+rsi] + vpxor ymm0,ymm0,YMMWORD[64+rsi] + vpxor ymm4,ymm4,YMMWORD[96+rsi] + lea rsi,[128+rsi] + vmovdqu YMMWORD[rdi],ymm11 + vmovdqu YMMWORD[32+rdi],ymm9 + vmovdqu YMMWORD[64+rdi],ymm0 + vmovdqu YMMWORD[96+rdi],ymm4 + lea rdi,[128+rdi] + + sub rdx,64*8 + jnz NEAR $L$oop_outer8x + + jmp NEAR $L$done8x + +$L$tail8x: + cmp rdx,448 + jae NEAR $L$448_or_more8x + cmp rdx,384 + jae NEAR $L$384_or_more8x + cmp rdx,320 + jae NEAR $L$320_or_more8x + cmp rdx,256 + jae NEAR $L$256_or_more8x + cmp rdx,192 + jae NEAR $L$192_or_more8x + cmp rdx,128 + jae NEAR $L$128_or_more8x + cmp rdx,64 + jae NEAR $L$64_or_more8x + + xor r10,r10 + vmovdqa YMMWORD[rsp],ymm6 + vmovdqa YMMWORD[32+rsp],ymm8 + jmp NEAR $L$oop_tail8x + +ALIGN 32 +$L$64_or_more8x: + vpxor ymm6,ymm6,YMMWORD[rsi] + vpxor ymm8,ymm8,YMMWORD[32+rsi] + vmovdqu YMMWORD[rdi],ymm6 + vmovdqu YMMWORD[32+rdi],ymm8 + je NEAR $L$done8x + + lea rsi,[64+rsi] + xor r10,r10 + vmovdqa YMMWORD[rsp],ymm1 + lea rdi,[64+rdi] + sub rdx,64 + vmovdqa YMMWORD[32+rsp],ymm5 + jmp NEAR $L$oop_tail8x + +ALIGN 32 +$L$128_or_more8x: + vpxor ymm6,ymm6,YMMWORD[rsi] + vpxor ymm8,ymm8,YMMWORD[32+rsi] + vpxor ymm1,ymm1,YMMWORD[64+rsi] + vpxor ymm5,ymm5,YMMWORD[96+rsi] + vmovdqu YMMWORD[rdi],ymm6 + vmovdqu YMMWORD[32+rdi],ymm8 + vmovdqu YMMWORD[64+rdi],ymm1 + vmovdqu YMMWORD[96+rdi],ymm5 + je NEAR $L$done8x + + lea rsi,[128+rsi] + xor r10,r10 + vmovdqa YMMWORD[rsp],ymm12 + lea rdi,[128+rdi] + sub rdx,128 + vmovdqa YMMWORD[32+rsp],ymm13 + jmp NEAR $L$oop_tail8x + +ALIGN 32 +$L$192_or_more8x: + vpxor ymm6,ymm6,YMMWORD[rsi] + vpxor ymm8,ymm8,YMMWORD[32+rsi] + vpxor ymm1,ymm1,YMMWORD[64+rsi] + vpxor ymm5,ymm5,YMMWORD[96+rsi] + vpxor ymm12,ymm12,YMMWORD[128+rsi] + vpxor ymm13,ymm13,YMMWORD[160+rsi] + vmovdqu YMMWORD[rdi],ymm6 + vmovdqu YMMWORD[32+rdi],ymm8 + vmovdqu YMMWORD[64+rdi],ymm1 + vmovdqu YMMWORD[96+rdi],ymm5 + vmovdqu YMMWORD[128+rdi],ymm12 + vmovdqu YMMWORD[160+rdi],ymm13 + je NEAR $L$done8x + + lea rsi,[192+rsi] + xor r10,r10 + vmovdqa YMMWORD[rsp],ymm10 + lea rdi,[192+rdi] + sub rdx,192 + vmovdqa YMMWORD[32+rsp],ymm15 + jmp NEAR $L$oop_tail8x + +ALIGN 32 +$L$256_or_more8x: + vpxor ymm6,ymm6,YMMWORD[rsi] + vpxor ymm8,ymm8,YMMWORD[32+rsi] + vpxor ymm1,ymm1,YMMWORD[64+rsi] + vpxor ymm5,ymm5,YMMWORD[96+rsi] + vpxor ymm12,ymm12,YMMWORD[128+rsi] + vpxor ymm13,ymm13,YMMWORD[160+rsi] + vpxor ymm10,ymm10,YMMWORD[192+rsi] + vpxor ymm15,ymm15,YMMWORD[224+rsi] + vmovdqu YMMWORD[rdi],ymm6 + vmovdqu YMMWORD[32+rdi],ymm8 + vmovdqu YMMWORD[64+rdi],ymm1 + vmovdqu YMMWORD[96+rdi],ymm5 + vmovdqu YMMWORD[128+rdi],ymm12 + vmovdqu YMMWORD[160+rdi],ymm13 + vmovdqu YMMWORD[192+rdi],ymm10 + vmovdqu YMMWORD[224+rdi],ymm15 + je NEAR $L$done8x + + lea rsi,[256+rsi] + xor r10,r10 + vmovdqa YMMWORD[rsp],ymm14 + lea rdi,[256+rdi] + sub rdx,256 + vmovdqa YMMWORD[32+rsp],ymm2 + jmp NEAR $L$oop_tail8x + +ALIGN 32 +$L$320_or_more8x: + vpxor ymm6,ymm6,YMMWORD[rsi] + vpxor ymm8,ymm8,YMMWORD[32+rsi] + vpxor ymm1,ymm1,YMMWORD[64+rsi] + vpxor ymm5,ymm5,YMMWORD[96+rsi] + vpxor ymm12,ymm12,YMMWORD[128+rsi] + vpxor ymm13,ymm13,YMMWORD[160+rsi] + vpxor ymm10,ymm10,YMMWORD[192+rsi] + vpxor ymm15,ymm15,YMMWORD[224+rsi] + vpxor ymm14,ymm14,YMMWORD[256+rsi] + vpxor ymm2,ymm2,YMMWORD[288+rsi] + vmovdqu YMMWORD[rdi],ymm6 + vmovdqu YMMWORD[32+rdi],ymm8 + vmovdqu YMMWORD[64+rdi],ymm1 + vmovdqu YMMWORD[96+rdi],ymm5 + vmovdqu YMMWORD[128+rdi],ymm12 + vmovdqu YMMWORD[160+rdi],ymm13 + vmovdqu YMMWORD[192+rdi],ymm10 + vmovdqu YMMWORD[224+rdi],ymm15 + vmovdqu YMMWORD[256+rdi],ymm14 + vmovdqu YMMWORD[288+rdi],ymm2 + je NEAR $L$done8x + + lea rsi,[320+rsi] + xor r10,r10 + vmovdqa YMMWORD[rsp],ymm3 + lea rdi,[320+rdi] + sub rdx,320 + vmovdqa YMMWORD[32+rsp],ymm7 + jmp NEAR $L$oop_tail8x + +ALIGN 32 +$L$384_or_more8x: + vpxor ymm6,ymm6,YMMWORD[rsi] + vpxor ymm8,ymm8,YMMWORD[32+rsi] + vpxor ymm1,ymm1,YMMWORD[64+rsi] + vpxor ymm5,ymm5,YMMWORD[96+rsi] + vpxor ymm12,ymm12,YMMWORD[128+rsi] + vpxor ymm13,ymm13,YMMWORD[160+rsi] + vpxor ymm10,ymm10,YMMWORD[192+rsi] + vpxor ymm15,ymm15,YMMWORD[224+rsi] + vpxor ymm14,ymm14,YMMWORD[256+rsi] + vpxor ymm2,ymm2,YMMWORD[288+rsi] + vpxor ymm3,ymm3,YMMWORD[320+rsi] + vpxor ymm7,ymm7,YMMWORD[352+rsi] + vmovdqu YMMWORD[rdi],ymm6 + vmovdqu YMMWORD[32+rdi],ymm8 + vmovdqu YMMWORD[64+rdi],ymm1 + vmovdqu YMMWORD[96+rdi],ymm5 + vmovdqu YMMWORD[128+rdi],ymm12 + vmovdqu YMMWORD[160+rdi],ymm13 + vmovdqu YMMWORD[192+rdi],ymm10 + vmovdqu YMMWORD[224+rdi],ymm15 + vmovdqu YMMWORD[256+rdi],ymm14 + vmovdqu YMMWORD[288+rdi],ymm2 + vmovdqu YMMWORD[320+rdi],ymm3 + vmovdqu YMMWORD[352+rdi],ymm7 + je NEAR $L$done8x + + lea rsi,[384+rsi] + xor r10,r10 + vmovdqa YMMWORD[rsp],ymm11 + lea rdi,[384+rdi] + sub rdx,384 + vmovdqa YMMWORD[32+rsp],ymm9 + jmp NEAR $L$oop_tail8x + +ALIGN 32 +$L$448_or_more8x: + vpxor ymm6,ymm6,YMMWORD[rsi] + vpxor ymm8,ymm8,YMMWORD[32+rsi] + vpxor ymm1,ymm1,YMMWORD[64+rsi] + vpxor ymm5,ymm5,YMMWORD[96+rsi] + vpxor ymm12,ymm12,YMMWORD[128+rsi] + vpxor ymm13,ymm13,YMMWORD[160+rsi] + vpxor ymm10,ymm10,YMMWORD[192+rsi] + vpxor ymm15,ymm15,YMMWORD[224+rsi] + vpxor ymm14,ymm14,YMMWORD[256+rsi] + vpxor ymm2,ymm2,YMMWORD[288+rsi] + vpxor ymm3,ymm3,YMMWORD[320+rsi] + vpxor ymm7,ymm7,YMMWORD[352+rsi] + vpxor ymm11,ymm11,YMMWORD[384+rsi] + vpxor ymm9,ymm9,YMMWORD[416+rsi] + vmovdqu YMMWORD[rdi],ymm6 + vmovdqu YMMWORD[32+rdi],ymm8 + vmovdqu YMMWORD[64+rdi],ymm1 + vmovdqu YMMWORD[96+rdi],ymm5 + vmovdqu YMMWORD[128+rdi],ymm12 + vmovdqu YMMWORD[160+rdi],ymm13 + vmovdqu YMMWORD[192+rdi],ymm10 + vmovdqu YMMWORD[224+rdi],ymm15 + vmovdqu YMMWORD[256+rdi],ymm14 + vmovdqu YMMWORD[288+rdi],ymm2 + vmovdqu YMMWORD[320+rdi],ymm3 + vmovdqu YMMWORD[352+rdi],ymm7 + vmovdqu YMMWORD[384+rdi],ymm11 + vmovdqu YMMWORD[416+rdi],ymm9 + je NEAR $L$done8x + + lea rsi,[448+rsi] + xor r10,r10 + vmovdqa YMMWORD[rsp],ymm0 + lea rdi,[448+rdi] + sub rdx,448 + vmovdqa YMMWORD[32+rsp],ymm4 + +$L$oop_tail8x: + movzx eax,BYTE[r10*1+rsi] + movzx ecx,BYTE[r10*1+rsp] + lea r10,[1+r10] + xor eax,ecx + mov BYTE[((-1))+r10*1+rdi],al + dec rdx + jnz NEAR $L$oop_tail8x + +$L$done8x: + vzeroall + movaps xmm6,XMMWORD[((-168))+r9] + movaps xmm7,XMMWORD[((-152))+r9] + movaps xmm8,XMMWORD[((-136))+r9] + movaps xmm9,XMMWORD[((-120))+r9] + movaps xmm10,XMMWORD[((-104))+r9] + movaps xmm11,XMMWORD[((-88))+r9] + movaps xmm12,XMMWORD[((-72))+r9] + movaps xmm13,XMMWORD[((-56))+r9] + movaps xmm14,XMMWORD[((-40))+r9] + movaps xmm15,XMMWORD[((-24))+r9] + lea rsp,[r9] + +$L$8x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ChaCha20_8x: + +ALIGN 32 +ChaCha20_avx512: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ChaCha20_avx512: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +$L$ChaCha20_avx512: + mov r9,rsp + + cmp rdx,512 + ja NEAR $L$ChaCha20_16x + + sub rsp,64+168 + movaps XMMWORD[(-168)+r9],xmm6 + movaps XMMWORD[(-152)+r9],xmm7 + movaps XMMWORD[(-136)+r9],xmm8 + movaps XMMWORD[(-120)+r9],xmm9 + movaps XMMWORD[(-104)+r9],xmm10 + movaps XMMWORD[(-88)+r9],xmm11 + movaps XMMWORD[(-72)+r9],xmm12 + movaps XMMWORD[(-56)+r9],xmm13 + movaps XMMWORD[(-40)+r9],xmm14 + movaps XMMWORD[(-24)+r9],xmm15 +$L$avx512_body: + vbroadcasti32x4 zmm0,ZMMWORD[$L$sigma] + vbroadcasti32x4 zmm1,ZMMWORD[rcx] + vbroadcasti32x4 zmm2,ZMMWORD[16+rcx] + vbroadcasti32x4 zmm3,ZMMWORD[r8] + + vmovdqa32 zmm16,zmm0 + vmovdqa32 zmm17,zmm1 + vmovdqa32 zmm18,zmm2 + vpaddd zmm3,zmm3,ZMMWORD[$L$zeroz] + vmovdqa32 zmm20,ZMMWORD[$L$fourz] + mov r8,10 + vmovdqa32 zmm19,zmm3 + jmp NEAR $L$oop_avx512 + +ALIGN 16 +$L$oop_outer_avx512: + vmovdqa32 zmm0,zmm16 + vmovdqa32 zmm1,zmm17 + vmovdqa32 zmm2,zmm18 + vpaddd zmm3,zmm19,zmm20 + mov r8,10 + vmovdqa32 zmm19,zmm3 + jmp NEAR $L$oop_avx512 + +ALIGN 32 +$L$oop_avx512: + vpaddd zmm0,zmm0,zmm1 + vpxord zmm3,zmm3,zmm0 + vprold zmm3,zmm3,16 + vpaddd zmm2,zmm2,zmm3 + vpxord zmm1,zmm1,zmm2 + vprold zmm1,zmm1,12 + vpaddd zmm0,zmm0,zmm1 + vpxord zmm3,zmm3,zmm0 + vprold zmm3,zmm3,8 + vpaddd zmm2,zmm2,zmm3 + vpxord zmm1,zmm1,zmm2 + vprold zmm1,zmm1,7 + vpshufd zmm2,zmm2,78 + vpshufd zmm1,zmm1,57 + vpshufd zmm3,zmm3,147 + vpaddd zmm0,zmm0,zmm1 + vpxord zmm3,zmm3,zmm0 + vprold zmm3,zmm3,16 + vpaddd zmm2,zmm2,zmm3 + vpxord zmm1,zmm1,zmm2 + vprold zmm1,zmm1,12 + vpaddd zmm0,zmm0,zmm1 + vpxord zmm3,zmm3,zmm0 + vprold zmm3,zmm3,8 + vpaddd zmm2,zmm2,zmm3 + vpxord zmm1,zmm1,zmm2 + vprold zmm1,zmm1,7 + vpshufd zmm2,zmm2,78 + vpshufd zmm1,zmm1,147 + vpshufd zmm3,zmm3,57 + dec r8 + jnz NEAR $L$oop_avx512 + vpaddd zmm0,zmm0,zmm16 + vpaddd zmm1,zmm1,zmm17 + vpaddd zmm2,zmm2,zmm18 + vpaddd zmm3,zmm3,zmm19 + + sub rdx,64 + jb NEAR $L$tail64_avx512 + + vpxor xmm4,xmm0,XMMWORD[rsi] + vpxor xmm5,xmm1,XMMWORD[16+rsi] + vpxor xmm6,xmm2,XMMWORD[32+rsi] + vpxor xmm7,xmm3,XMMWORD[48+rsi] + lea rsi,[64+rsi] + + vmovdqu XMMWORD[rdi],xmm4 + vmovdqu XMMWORD[16+rdi],xmm5 + vmovdqu XMMWORD[32+rdi],xmm6 + vmovdqu XMMWORD[48+rdi],xmm7 + lea rdi,[64+rdi] + + jz NEAR $L$done_avx512 + + vextracti32x4 xmm4,zmm0,1 + vextracti32x4 xmm5,zmm1,1 + vextracti32x4 xmm6,zmm2,1 + vextracti32x4 xmm7,zmm3,1 + + sub rdx,64 + jb NEAR $L$tail_avx512 + + vpxor xmm4,xmm4,XMMWORD[rsi] + vpxor xmm5,xmm5,XMMWORD[16+rsi] + vpxor xmm6,xmm6,XMMWORD[32+rsi] + vpxor xmm7,xmm7,XMMWORD[48+rsi] + lea rsi,[64+rsi] + + vmovdqu XMMWORD[rdi],xmm4 + vmovdqu XMMWORD[16+rdi],xmm5 + vmovdqu XMMWORD[32+rdi],xmm6 + vmovdqu XMMWORD[48+rdi],xmm7 + lea rdi,[64+rdi] + + jz NEAR $L$done_avx512 + + vextracti32x4 xmm4,zmm0,2 + vextracti32x4 xmm5,zmm1,2 + vextracti32x4 xmm6,zmm2,2 + vextracti32x4 xmm7,zmm3,2 + + sub rdx,64 + jb NEAR $L$tail_avx512 + + vpxor xmm4,xmm4,XMMWORD[rsi] + vpxor xmm5,xmm5,XMMWORD[16+rsi] + vpxor xmm6,xmm6,XMMWORD[32+rsi] + vpxor xmm7,xmm7,XMMWORD[48+rsi] + lea rsi,[64+rsi] + + vmovdqu XMMWORD[rdi],xmm4 + vmovdqu XMMWORD[16+rdi],xmm5 + vmovdqu XMMWORD[32+rdi],xmm6 + vmovdqu XMMWORD[48+rdi],xmm7 + lea rdi,[64+rdi] + + jz NEAR $L$done_avx512 + + vextracti32x4 xmm4,zmm0,3 + vextracti32x4 xmm5,zmm1,3 + vextracti32x4 xmm6,zmm2,3 + vextracti32x4 xmm7,zmm3,3 + + sub rdx,64 + jb NEAR $L$tail_avx512 + + vpxor xmm4,xmm4,XMMWORD[rsi] + vpxor xmm5,xmm5,XMMWORD[16+rsi] + vpxor xmm6,xmm6,XMMWORD[32+rsi] + vpxor xmm7,xmm7,XMMWORD[48+rsi] + lea rsi,[64+rsi] + + vmovdqu XMMWORD[rdi],xmm4 + vmovdqu XMMWORD[16+rdi],xmm5 + vmovdqu XMMWORD[32+rdi],xmm6 + vmovdqu XMMWORD[48+rdi],xmm7 + lea rdi,[64+rdi] + + jnz NEAR $L$oop_outer_avx512 + + jmp NEAR $L$done_avx512 + +ALIGN 16 +$L$tail64_avx512: + vmovdqa XMMWORD[rsp],xmm0 + vmovdqa XMMWORD[16+rsp],xmm1 + vmovdqa XMMWORD[32+rsp],xmm2 + vmovdqa XMMWORD[48+rsp],xmm3 + add rdx,64 + jmp NEAR $L$oop_tail_avx512 + +ALIGN 16 +$L$tail_avx512: + vmovdqa XMMWORD[rsp],xmm4 + vmovdqa XMMWORD[16+rsp],xmm5 + vmovdqa XMMWORD[32+rsp],xmm6 + vmovdqa XMMWORD[48+rsp],xmm7 + add rdx,64 + +$L$oop_tail_avx512: + movzx eax,BYTE[r8*1+rsi] + movzx ecx,BYTE[r8*1+rsp] + lea r8,[1+r8] + xor eax,ecx + mov BYTE[((-1))+r8*1+rdi],al + dec rdx + jnz NEAR $L$oop_tail_avx512 + + vmovdqu32 ZMMWORD[rsp],zmm16 + +$L$done_avx512: + vzeroall + movaps xmm6,XMMWORD[((-168))+r9] + movaps xmm7,XMMWORD[((-152))+r9] + movaps xmm8,XMMWORD[((-136))+r9] + movaps xmm9,XMMWORD[((-120))+r9] + movaps xmm10,XMMWORD[((-104))+r9] + movaps xmm11,XMMWORD[((-88))+r9] + movaps xmm12,XMMWORD[((-72))+r9] + movaps xmm13,XMMWORD[((-56))+r9] + movaps xmm14,XMMWORD[((-40))+r9] + movaps xmm15,XMMWORD[((-24))+r9] + lea rsp,[r9] + +$L$avx512_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ChaCha20_avx512: + +ALIGN 32 +ChaCha20_avx512vl: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ChaCha20_avx512vl: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +$L$ChaCha20_avx512vl: + mov r9,rsp + + cmp rdx,128 + ja NEAR $L$ChaCha20_8xvl + + sub rsp,64+168 + movaps XMMWORD[(-168)+r9],xmm6 + movaps XMMWORD[(-152)+r9],xmm7 + movaps XMMWORD[(-136)+r9],xmm8 + movaps XMMWORD[(-120)+r9],xmm9 + movaps XMMWORD[(-104)+r9],xmm10 + movaps XMMWORD[(-88)+r9],xmm11 + movaps XMMWORD[(-72)+r9],xmm12 + movaps XMMWORD[(-56)+r9],xmm13 + movaps XMMWORD[(-40)+r9],xmm14 + movaps XMMWORD[(-24)+r9],xmm15 +$L$avx512vl_body: + vbroadcasti128 ymm0,XMMWORD[$L$sigma] + vbroadcasti128 ymm1,XMMWORD[rcx] + vbroadcasti128 ymm2,XMMWORD[16+rcx] + vbroadcasti128 ymm3,XMMWORD[r8] + + vmovdqa32 ymm16,ymm0 + vmovdqa32 ymm17,ymm1 + vmovdqa32 ymm18,ymm2 + vpaddd ymm3,ymm3,YMMWORD[$L$zeroz] + vmovdqa32 ymm20,YMMWORD[$L$twoy] + mov r8,10 + vmovdqa32 ymm19,ymm3 + jmp NEAR $L$oop_avx512vl + +ALIGN 16 +$L$oop_outer_avx512vl: + vmovdqa32 ymm2,ymm18 + vpaddd ymm3,ymm19,ymm20 + mov r8,10 + vmovdqa32 ymm19,ymm3 + jmp NEAR $L$oop_avx512vl + +ALIGN 32 +$L$oop_avx512vl: + vpaddd ymm0,ymm0,ymm1 + vpxor ymm3,ymm3,ymm0 + vprold ymm3,ymm3,16 + vpaddd ymm2,ymm2,ymm3 + vpxor ymm1,ymm1,ymm2 + vprold ymm1,ymm1,12 + vpaddd ymm0,ymm0,ymm1 + vpxor ymm3,ymm3,ymm0 + vprold ymm3,ymm3,8 + vpaddd ymm2,ymm2,ymm3 + vpxor ymm1,ymm1,ymm2 + vprold ymm1,ymm1,7 + vpshufd ymm2,ymm2,78 + vpshufd ymm1,ymm1,57 + vpshufd ymm3,ymm3,147 + vpaddd ymm0,ymm0,ymm1 + vpxor ymm3,ymm3,ymm0 + vprold ymm3,ymm3,16 + vpaddd ymm2,ymm2,ymm3 + vpxor ymm1,ymm1,ymm2 + vprold ymm1,ymm1,12 + vpaddd ymm0,ymm0,ymm1 + vpxor ymm3,ymm3,ymm0 + vprold ymm3,ymm3,8 + vpaddd ymm2,ymm2,ymm3 + vpxor ymm1,ymm1,ymm2 + vprold ymm1,ymm1,7 + vpshufd ymm2,ymm2,78 + vpshufd ymm1,ymm1,147 + vpshufd ymm3,ymm3,57 + dec r8 + jnz NEAR $L$oop_avx512vl + vpaddd ymm0,ymm0,ymm16 + vpaddd ymm1,ymm1,ymm17 + vpaddd ymm2,ymm2,ymm18 + vpaddd ymm3,ymm3,ymm19 + + sub rdx,64 + jb NEAR $L$tail64_avx512vl + + vpxor xmm4,xmm0,XMMWORD[rsi] + vpxor xmm5,xmm1,XMMWORD[16+rsi] + vpxor xmm6,xmm2,XMMWORD[32+rsi] + vpxor xmm7,xmm3,XMMWORD[48+rsi] + lea rsi,[64+rsi] + + vmovdqu XMMWORD[rdi],xmm4 + vmovdqu XMMWORD[16+rdi],xmm5 + vmovdqu XMMWORD[32+rdi],xmm6 + vmovdqu XMMWORD[48+rdi],xmm7 + lea rdi,[64+rdi] + + jz NEAR $L$done_avx512vl + + vextracti128 xmm4,ymm0,1 + vextracti128 xmm5,ymm1,1 + vextracti128 xmm6,ymm2,1 + vextracti128 xmm7,ymm3,1 + + sub rdx,64 + jb NEAR $L$tail_avx512vl + + vpxor xmm4,xmm4,XMMWORD[rsi] + vpxor xmm5,xmm5,XMMWORD[16+rsi] + vpxor xmm6,xmm6,XMMWORD[32+rsi] + vpxor xmm7,xmm7,XMMWORD[48+rsi] + lea rsi,[64+rsi] + + vmovdqu XMMWORD[rdi],xmm4 + vmovdqu XMMWORD[16+rdi],xmm5 + vmovdqu XMMWORD[32+rdi],xmm6 + vmovdqu XMMWORD[48+rdi],xmm7 + lea rdi,[64+rdi] + + vmovdqa32 ymm0,ymm16 + vmovdqa32 ymm1,ymm17 + jnz NEAR $L$oop_outer_avx512vl + + jmp NEAR $L$done_avx512vl + +ALIGN 16 +$L$tail64_avx512vl: + vmovdqa XMMWORD[rsp],xmm0 + vmovdqa XMMWORD[16+rsp],xmm1 + vmovdqa XMMWORD[32+rsp],xmm2 + vmovdqa XMMWORD[48+rsp],xmm3 + add rdx,64 + jmp NEAR $L$oop_tail_avx512vl + +ALIGN 16 +$L$tail_avx512vl: + vmovdqa XMMWORD[rsp],xmm4 + vmovdqa XMMWORD[16+rsp],xmm5 + vmovdqa XMMWORD[32+rsp],xmm6 + vmovdqa XMMWORD[48+rsp],xmm7 + add rdx,64 + +$L$oop_tail_avx512vl: + movzx eax,BYTE[r8*1+rsi] + movzx ecx,BYTE[r8*1+rsp] + lea r8,[1+r8] + xor eax,ecx + mov BYTE[((-1))+r8*1+rdi],al + dec rdx + jnz NEAR $L$oop_tail_avx512vl + + vmovdqu32 YMMWORD[rsp],ymm16 + vmovdqu32 YMMWORD[32+rsp],ymm16 + +$L$done_avx512vl: + vzeroall + movaps xmm6,XMMWORD[((-168))+r9] + movaps xmm7,XMMWORD[((-152))+r9] + movaps xmm8,XMMWORD[((-136))+r9] + movaps xmm9,XMMWORD[((-120))+r9] + movaps xmm10,XMMWORD[((-104))+r9] + movaps xmm11,XMMWORD[((-88))+r9] + movaps xmm12,XMMWORD[((-72))+r9] + movaps xmm13,XMMWORD[((-56))+r9] + movaps xmm14,XMMWORD[((-40))+r9] + movaps xmm15,XMMWORD[((-24))+r9] + lea rsp,[r9] + +$L$avx512vl_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ChaCha20_avx512vl: + +ALIGN 32 +ChaCha20_16x: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ChaCha20_16x: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +$L$ChaCha20_16x: + mov r9,rsp + + sub rsp,64+168 + and rsp,-64 + movaps XMMWORD[(-168)+r9],xmm6 + movaps XMMWORD[(-152)+r9],xmm7 + movaps XMMWORD[(-136)+r9],xmm8 + movaps XMMWORD[(-120)+r9],xmm9 + movaps XMMWORD[(-104)+r9],xmm10 + movaps XMMWORD[(-88)+r9],xmm11 + movaps XMMWORD[(-72)+r9],xmm12 + movaps XMMWORD[(-56)+r9],xmm13 + movaps XMMWORD[(-40)+r9],xmm14 + movaps XMMWORD[(-24)+r9],xmm15 +$L$16x_body: + vzeroupper + + lea r10,[$L$sigma] + vbroadcasti32x4 zmm3,ZMMWORD[r10] + vbroadcasti32x4 zmm7,ZMMWORD[rcx] + vbroadcasti32x4 zmm11,ZMMWORD[16+rcx] + vbroadcasti32x4 zmm15,ZMMWORD[r8] + + vpshufd zmm0,zmm3,0x00 + vpshufd zmm1,zmm3,0x55 + vpshufd zmm2,zmm3,0xaa + vpshufd zmm3,zmm3,0xff + vmovdqa64 zmm16,zmm0 + vmovdqa64 zmm17,zmm1 + vmovdqa64 zmm18,zmm2 + vmovdqa64 zmm19,zmm3 + + vpshufd zmm4,zmm7,0x00 + vpshufd zmm5,zmm7,0x55 + vpshufd zmm6,zmm7,0xaa + vpshufd zmm7,zmm7,0xff + vmovdqa64 zmm20,zmm4 + vmovdqa64 zmm21,zmm5 + vmovdqa64 zmm22,zmm6 + vmovdqa64 zmm23,zmm7 + + vpshufd zmm8,zmm11,0x00 + vpshufd zmm9,zmm11,0x55 + vpshufd zmm10,zmm11,0xaa + vpshufd zmm11,zmm11,0xff + vmovdqa64 zmm24,zmm8 + vmovdqa64 zmm25,zmm9 + vmovdqa64 zmm26,zmm10 + vmovdqa64 zmm27,zmm11 + + vpshufd zmm12,zmm15,0x00 + vpshufd zmm13,zmm15,0x55 + vpshufd zmm14,zmm15,0xaa + vpshufd zmm15,zmm15,0xff + vpaddd zmm12,zmm12,ZMMWORD[$L$incz] + vmovdqa64 zmm28,zmm12 + vmovdqa64 zmm29,zmm13 + vmovdqa64 zmm30,zmm14 + vmovdqa64 zmm31,zmm15 + + mov eax,10 + jmp NEAR $L$oop16x + +ALIGN 32 +$L$oop_outer16x: + vpbroadcastd zmm0,DWORD[r10] + vpbroadcastd zmm1,DWORD[4+r10] + vpbroadcastd zmm2,DWORD[8+r10] + vpbroadcastd zmm3,DWORD[12+r10] + vpaddd zmm28,zmm28,ZMMWORD[$L$sixteen] + vmovdqa64 zmm4,zmm20 + vmovdqa64 zmm5,zmm21 + vmovdqa64 zmm6,zmm22 + vmovdqa64 zmm7,zmm23 + vmovdqa64 zmm8,zmm24 + vmovdqa64 zmm9,zmm25 + vmovdqa64 zmm10,zmm26 + vmovdqa64 zmm11,zmm27 + vmovdqa64 zmm12,zmm28 + vmovdqa64 zmm13,zmm29 + vmovdqa64 zmm14,zmm30 + vmovdqa64 zmm15,zmm31 + + vmovdqa64 zmm16,zmm0 + vmovdqa64 zmm17,zmm1 + vmovdqa64 zmm18,zmm2 + vmovdqa64 zmm19,zmm3 + + mov eax,10 + jmp NEAR $L$oop16x + +ALIGN 32 +$L$oop16x: + vpaddd zmm0,zmm0,zmm4 + vpaddd zmm1,zmm1,zmm5 + vpaddd zmm2,zmm2,zmm6 + vpaddd zmm3,zmm3,zmm7 + vpxord zmm12,zmm12,zmm0 + vpxord zmm13,zmm13,zmm1 + vpxord zmm14,zmm14,zmm2 + vpxord zmm15,zmm15,zmm3 + vprold zmm12,zmm12,16 + vprold zmm13,zmm13,16 + vprold zmm14,zmm14,16 + vprold zmm15,zmm15,16 + vpaddd zmm8,zmm8,zmm12 + vpaddd zmm9,zmm9,zmm13 + vpaddd zmm10,zmm10,zmm14 + vpaddd zmm11,zmm11,zmm15 + vpxord zmm4,zmm4,zmm8 + vpxord zmm5,zmm5,zmm9 + vpxord zmm6,zmm6,zmm10 + vpxord zmm7,zmm7,zmm11 + vprold zmm4,zmm4,12 + vprold zmm5,zmm5,12 + vprold zmm6,zmm6,12 + vprold zmm7,zmm7,12 + vpaddd zmm0,zmm0,zmm4 + vpaddd zmm1,zmm1,zmm5 + vpaddd zmm2,zmm2,zmm6 + vpaddd zmm3,zmm3,zmm7 + vpxord zmm12,zmm12,zmm0 + vpxord zmm13,zmm13,zmm1 + vpxord zmm14,zmm14,zmm2 + vpxord zmm15,zmm15,zmm3 + vprold zmm12,zmm12,8 + vprold zmm13,zmm13,8 + vprold zmm14,zmm14,8 + vprold zmm15,zmm15,8 + vpaddd zmm8,zmm8,zmm12 + vpaddd zmm9,zmm9,zmm13 + vpaddd zmm10,zmm10,zmm14 + vpaddd zmm11,zmm11,zmm15 + vpxord zmm4,zmm4,zmm8 + vpxord zmm5,zmm5,zmm9 + vpxord zmm6,zmm6,zmm10 + vpxord zmm7,zmm7,zmm11 + vprold zmm4,zmm4,7 + vprold zmm5,zmm5,7 + vprold zmm6,zmm6,7 + vprold zmm7,zmm7,7 + vpaddd zmm0,zmm0,zmm5 + vpaddd zmm1,zmm1,zmm6 + vpaddd zmm2,zmm2,zmm7 + vpaddd zmm3,zmm3,zmm4 + vpxord zmm15,zmm15,zmm0 + vpxord zmm12,zmm12,zmm1 + vpxord zmm13,zmm13,zmm2 + vpxord zmm14,zmm14,zmm3 + vprold zmm15,zmm15,16 + vprold zmm12,zmm12,16 + vprold zmm13,zmm13,16 + vprold zmm14,zmm14,16 + vpaddd zmm10,zmm10,zmm15 + vpaddd zmm11,zmm11,zmm12 + vpaddd zmm8,zmm8,zmm13 + vpaddd zmm9,zmm9,zmm14 + vpxord zmm5,zmm5,zmm10 + vpxord zmm6,zmm6,zmm11 + vpxord zmm7,zmm7,zmm8 + vpxord zmm4,zmm4,zmm9 + vprold zmm5,zmm5,12 + vprold zmm6,zmm6,12 + vprold zmm7,zmm7,12 + vprold zmm4,zmm4,12 + vpaddd zmm0,zmm0,zmm5 + vpaddd zmm1,zmm1,zmm6 + vpaddd zmm2,zmm2,zmm7 + vpaddd zmm3,zmm3,zmm4 + vpxord zmm15,zmm15,zmm0 + vpxord zmm12,zmm12,zmm1 + vpxord zmm13,zmm13,zmm2 + vpxord zmm14,zmm14,zmm3 + vprold zmm15,zmm15,8 + vprold zmm12,zmm12,8 + vprold zmm13,zmm13,8 + vprold zmm14,zmm14,8 + vpaddd zmm10,zmm10,zmm15 + vpaddd zmm11,zmm11,zmm12 + vpaddd zmm8,zmm8,zmm13 + vpaddd zmm9,zmm9,zmm14 + vpxord zmm5,zmm5,zmm10 + vpxord zmm6,zmm6,zmm11 + vpxord zmm7,zmm7,zmm8 + vpxord zmm4,zmm4,zmm9 + vprold zmm5,zmm5,7 + vprold zmm6,zmm6,7 + vprold zmm7,zmm7,7 + vprold zmm4,zmm4,7 + dec eax + jnz NEAR $L$oop16x + + vpaddd zmm0,zmm0,zmm16 + vpaddd zmm1,zmm1,zmm17 + vpaddd zmm2,zmm2,zmm18 + vpaddd zmm3,zmm3,zmm19 + + vpunpckldq zmm18,zmm0,zmm1 + vpunpckldq zmm19,zmm2,zmm3 + vpunpckhdq zmm0,zmm0,zmm1 + vpunpckhdq zmm2,zmm2,zmm3 + vpunpcklqdq zmm1,zmm18,zmm19 + vpunpckhqdq zmm18,zmm18,zmm19 + vpunpcklqdq zmm3,zmm0,zmm2 + vpunpckhqdq zmm0,zmm0,zmm2 + vpaddd zmm4,zmm4,zmm20 + vpaddd zmm5,zmm5,zmm21 + vpaddd zmm6,zmm6,zmm22 + vpaddd zmm7,zmm7,zmm23 + + vpunpckldq zmm2,zmm4,zmm5 + vpunpckldq zmm19,zmm6,zmm7 + vpunpckhdq zmm4,zmm4,zmm5 + vpunpckhdq zmm6,zmm6,zmm7 + vpunpcklqdq zmm5,zmm2,zmm19 + vpunpckhqdq zmm2,zmm2,zmm19 + vpunpcklqdq zmm7,zmm4,zmm6 + vpunpckhqdq zmm4,zmm4,zmm6 + vshufi32x4 zmm19,zmm1,zmm5,0x44 + vshufi32x4 zmm5,zmm1,zmm5,0xee + vshufi32x4 zmm1,zmm18,zmm2,0x44 + vshufi32x4 zmm2,zmm18,zmm2,0xee + vshufi32x4 zmm18,zmm3,zmm7,0x44 + vshufi32x4 zmm7,zmm3,zmm7,0xee + vshufi32x4 zmm3,zmm0,zmm4,0x44 + vshufi32x4 zmm4,zmm0,zmm4,0xee + vpaddd zmm8,zmm8,zmm24 + vpaddd zmm9,zmm9,zmm25 + vpaddd zmm10,zmm10,zmm26 + vpaddd zmm11,zmm11,zmm27 + + vpunpckldq zmm6,zmm8,zmm9 + vpunpckldq zmm0,zmm10,zmm11 + vpunpckhdq zmm8,zmm8,zmm9 + vpunpckhdq zmm10,zmm10,zmm11 + vpunpcklqdq zmm9,zmm6,zmm0 + vpunpckhqdq zmm6,zmm6,zmm0 + vpunpcklqdq zmm11,zmm8,zmm10 + vpunpckhqdq zmm8,zmm8,zmm10 + vpaddd zmm12,zmm12,zmm28 + vpaddd zmm13,zmm13,zmm29 + vpaddd zmm14,zmm14,zmm30 + vpaddd zmm15,zmm15,zmm31 + + vpunpckldq zmm10,zmm12,zmm13 + vpunpckldq zmm0,zmm14,zmm15 + vpunpckhdq zmm12,zmm12,zmm13 + vpunpckhdq zmm14,zmm14,zmm15 + vpunpcklqdq zmm13,zmm10,zmm0 + vpunpckhqdq zmm10,zmm10,zmm0 + vpunpcklqdq zmm15,zmm12,zmm14 + vpunpckhqdq zmm12,zmm12,zmm14 + vshufi32x4 zmm0,zmm9,zmm13,0x44 + vshufi32x4 zmm13,zmm9,zmm13,0xee + vshufi32x4 zmm9,zmm6,zmm10,0x44 + vshufi32x4 zmm10,zmm6,zmm10,0xee + vshufi32x4 zmm6,zmm11,zmm15,0x44 + vshufi32x4 zmm15,zmm11,zmm15,0xee + vshufi32x4 zmm11,zmm8,zmm12,0x44 + vshufi32x4 zmm12,zmm8,zmm12,0xee + vshufi32x4 zmm16,zmm19,zmm0,0x88 + vshufi32x4 zmm19,zmm19,zmm0,0xdd + vshufi32x4 zmm0,zmm5,zmm13,0x88 + vshufi32x4 zmm13,zmm5,zmm13,0xdd + vshufi32x4 zmm17,zmm1,zmm9,0x88 + vshufi32x4 zmm1,zmm1,zmm9,0xdd + vshufi32x4 zmm9,zmm2,zmm10,0x88 + vshufi32x4 zmm10,zmm2,zmm10,0xdd + vshufi32x4 zmm14,zmm18,zmm6,0x88 + vshufi32x4 zmm18,zmm18,zmm6,0xdd + vshufi32x4 zmm6,zmm7,zmm15,0x88 + vshufi32x4 zmm15,zmm7,zmm15,0xdd + vshufi32x4 zmm8,zmm3,zmm11,0x88 + vshufi32x4 zmm3,zmm3,zmm11,0xdd + vshufi32x4 zmm11,zmm4,zmm12,0x88 + vshufi32x4 zmm12,zmm4,zmm12,0xdd + cmp rdx,64*16 + jb NEAR $L$tail16x + + vpxord zmm16,zmm16,ZMMWORD[rsi] + vpxord zmm17,zmm17,ZMMWORD[64+rsi] + vpxord zmm14,zmm14,ZMMWORD[128+rsi] + vpxord zmm8,zmm8,ZMMWORD[192+rsi] + vmovdqu32 ZMMWORD[rdi],zmm16 + vmovdqu32 ZMMWORD[64+rdi],zmm17 + vmovdqu32 ZMMWORD[128+rdi],zmm14 + vmovdqu32 ZMMWORD[192+rdi],zmm8 + + vpxord zmm19,zmm19,ZMMWORD[256+rsi] + vpxord zmm1,zmm1,ZMMWORD[320+rsi] + vpxord zmm18,zmm18,ZMMWORD[384+rsi] + vpxord zmm3,zmm3,ZMMWORD[448+rsi] + vmovdqu32 ZMMWORD[256+rdi],zmm19 + vmovdqu32 ZMMWORD[320+rdi],zmm1 + vmovdqu32 ZMMWORD[384+rdi],zmm18 + vmovdqu32 ZMMWORD[448+rdi],zmm3 + + vpxord zmm0,zmm0,ZMMWORD[512+rsi] + vpxord zmm9,zmm9,ZMMWORD[576+rsi] + vpxord zmm6,zmm6,ZMMWORD[640+rsi] + vpxord zmm11,zmm11,ZMMWORD[704+rsi] + vmovdqu32 ZMMWORD[512+rdi],zmm0 + vmovdqu32 ZMMWORD[576+rdi],zmm9 + vmovdqu32 ZMMWORD[640+rdi],zmm6 + vmovdqu32 ZMMWORD[704+rdi],zmm11 + + vpxord zmm13,zmm13,ZMMWORD[768+rsi] + vpxord zmm10,zmm10,ZMMWORD[832+rsi] + vpxord zmm15,zmm15,ZMMWORD[896+rsi] + vpxord zmm12,zmm12,ZMMWORD[960+rsi] + lea rsi,[1024+rsi] + vmovdqu32 ZMMWORD[768+rdi],zmm13 + vmovdqu32 ZMMWORD[832+rdi],zmm10 + vmovdqu32 ZMMWORD[896+rdi],zmm15 + vmovdqu32 ZMMWORD[960+rdi],zmm12 + lea rdi,[1024+rdi] + + sub rdx,64*16 + jnz NEAR $L$oop_outer16x + + jmp NEAR $L$done16x + +ALIGN 32 +$L$tail16x: + xor r10,r10 + sub rdi,rsi + cmp rdx,64*1 + jb NEAR $L$ess_than_64_16x + vpxord zmm16,zmm16,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm16 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm17 + lea rsi,[64+rsi] + + cmp rdx,64*2 + jb NEAR $L$ess_than_64_16x + vpxord zmm17,zmm17,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm17 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm14 + lea rsi,[64+rsi] + + cmp rdx,64*3 + jb NEAR $L$ess_than_64_16x + vpxord zmm14,zmm14,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm14 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm8 + lea rsi,[64+rsi] + + cmp rdx,64*4 + jb NEAR $L$ess_than_64_16x + vpxord zmm8,zmm8,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm8 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm19 + lea rsi,[64+rsi] + + cmp rdx,64*5 + jb NEAR $L$ess_than_64_16x + vpxord zmm19,zmm19,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm19 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm1 + lea rsi,[64+rsi] + + cmp rdx,64*6 + jb NEAR $L$ess_than_64_16x + vpxord zmm1,zmm1,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm1 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm18 + lea rsi,[64+rsi] + + cmp rdx,64*7 + jb NEAR $L$ess_than_64_16x + vpxord zmm18,zmm18,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm18 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm3 + lea rsi,[64+rsi] + + cmp rdx,64*8 + jb NEAR $L$ess_than_64_16x + vpxord zmm3,zmm3,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm3 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm0 + lea rsi,[64+rsi] + + cmp rdx,64*9 + jb NEAR $L$ess_than_64_16x + vpxord zmm0,zmm0,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm0 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm9 + lea rsi,[64+rsi] + + cmp rdx,64*10 + jb NEAR $L$ess_than_64_16x + vpxord zmm9,zmm9,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm9 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm6 + lea rsi,[64+rsi] + + cmp rdx,64*11 + jb NEAR $L$ess_than_64_16x + vpxord zmm6,zmm6,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm6 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm11 + lea rsi,[64+rsi] + + cmp rdx,64*12 + jb NEAR $L$ess_than_64_16x + vpxord zmm11,zmm11,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm11 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm13 + lea rsi,[64+rsi] + + cmp rdx,64*13 + jb NEAR $L$ess_than_64_16x + vpxord zmm13,zmm13,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm13 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm10 + lea rsi,[64+rsi] + + cmp rdx,64*14 + jb NEAR $L$ess_than_64_16x + vpxord zmm10,zmm10,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm10 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm15 + lea rsi,[64+rsi] + + cmp rdx,64*15 + jb NEAR $L$ess_than_64_16x + vpxord zmm15,zmm15,ZMMWORD[rsi] + vmovdqu32 ZMMWORD[rsi*1+rdi],zmm15 + je NEAR $L$done16x + vmovdqa32 zmm16,zmm12 + lea rsi,[64+rsi] + +$L$ess_than_64_16x: + vmovdqa32 ZMMWORD[rsp],zmm16 + lea rdi,[rsi*1+rdi] + and rdx,63 + +$L$oop_tail16x: + movzx eax,BYTE[r10*1+rsi] + movzx ecx,BYTE[r10*1+rsp] + lea r10,[1+r10] + xor eax,ecx + mov BYTE[((-1))+r10*1+rdi],al + dec rdx + jnz NEAR $L$oop_tail16x + + vpxord zmm16,zmm16,zmm16 + vmovdqa32 ZMMWORD[rsp],zmm16 + +$L$done16x: + vzeroall + movaps xmm6,XMMWORD[((-168))+r9] + movaps xmm7,XMMWORD[((-152))+r9] + movaps xmm8,XMMWORD[((-136))+r9] + movaps xmm9,XMMWORD[((-120))+r9] + movaps xmm10,XMMWORD[((-104))+r9] + movaps xmm11,XMMWORD[((-88))+r9] + movaps xmm12,XMMWORD[((-72))+r9] + movaps xmm13,XMMWORD[((-56))+r9] + movaps xmm14,XMMWORD[((-40))+r9] + movaps xmm15,XMMWORD[((-24))+r9] + lea rsp,[r9] + +$L$16x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ChaCha20_16x: + +ALIGN 32 +ChaCha20_8xvl: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ChaCha20_8xvl: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + + + +$L$ChaCha20_8xvl: + mov r9,rsp + + sub rsp,64+168 + and rsp,-64 + movaps XMMWORD[(-168)+r9],xmm6 + movaps XMMWORD[(-152)+r9],xmm7 + movaps XMMWORD[(-136)+r9],xmm8 + movaps XMMWORD[(-120)+r9],xmm9 + movaps XMMWORD[(-104)+r9],xmm10 + movaps XMMWORD[(-88)+r9],xmm11 + movaps XMMWORD[(-72)+r9],xmm12 + movaps XMMWORD[(-56)+r9],xmm13 + movaps XMMWORD[(-40)+r9],xmm14 + movaps XMMWORD[(-24)+r9],xmm15 +$L$8xvl_body: + vzeroupper + + lea r10,[$L$sigma] + vbroadcasti128 ymm3,XMMWORD[r10] + vbroadcasti128 ymm7,XMMWORD[rcx] + vbroadcasti128 ymm11,XMMWORD[16+rcx] + vbroadcasti128 ymm15,XMMWORD[r8] + + vpshufd ymm0,ymm3,0x00 + vpshufd ymm1,ymm3,0x55 + vpshufd ymm2,ymm3,0xaa + vpshufd ymm3,ymm3,0xff + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm1 + vmovdqa64 ymm18,ymm2 + vmovdqa64 ymm19,ymm3 + + vpshufd ymm4,ymm7,0x00 + vpshufd ymm5,ymm7,0x55 + vpshufd ymm6,ymm7,0xaa + vpshufd ymm7,ymm7,0xff + vmovdqa64 ymm20,ymm4 + vmovdqa64 ymm21,ymm5 + vmovdqa64 ymm22,ymm6 + vmovdqa64 ymm23,ymm7 + + vpshufd ymm8,ymm11,0x00 + vpshufd ymm9,ymm11,0x55 + vpshufd ymm10,ymm11,0xaa + vpshufd ymm11,ymm11,0xff + vmovdqa64 ymm24,ymm8 + vmovdqa64 ymm25,ymm9 + vmovdqa64 ymm26,ymm10 + vmovdqa64 ymm27,ymm11 + + vpshufd ymm12,ymm15,0x00 + vpshufd ymm13,ymm15,0x55 + vpshufd ymm14,ymm15,0xaa + vpshufd ymm15,ymm15,0xff + vpaddd ymm12,ymm12,YMMWORD[$L$incy] + vmovdqa64 ymm28,ymm12 + vmovdqa64 ymm29,ymm13 + vmovdqa64 ymm30,ymm14 + vmovdqa64 ymm31,ymm15 + + mov eax,10 + jmp NEAR $L$oop8xvl + +ALIGN 32 +$L$oop_outer8xvl: + + + vpbroadcastd ymm2,DWORD[8+r10] + vpbroadcastd ymm3,DWORD[12+r10] + vpaddd ymm28,ymm28,YMMWORD[$L$eight] + vmovdqa64 ymm4,ymm20 + vmovdqa64 ymm5,ymm21 + vmovdqa64 ymm6,ymm22 + vmovdqa64 ymm7,ymm23 + vmovdqa64 ymm8,ymm24 + vmovdqa64 ymm9,ymm25 + vmovdqa64 ymm10,ymm26 + vmovdqa64 ymm11,ymm27 + vmovdqa64 ymm12,ymm28 + vmovdqa64 ymm13,ymm29 + vmovdqa64 ymm14,ymm30 + vmovdqa64 ymm15,ymm31 + + vmovdqa64 ymm16,ymm0 + vmovdqa64 ymm17,ymm1 + vmovdqa64 ymm18,ymm2 + vmovdqa64 ymm19,ymm3 + + mov eax,10 + jmp NEAR $L$oop8xvl + +ALIGN 32 +$L$oop8xvl: + vpaddd ymm0,ymm0,ymm4 + vpaddd ymm1,ymm1,ymm5 + vpaddd ymm2,ymm2,ymm6 + vpaddd ymm3,ymm3,ymm7 + vpxor ymm12,ymm12,ymm0 + vpxor ymm13,ymm13,ymm1 + vpxor ymm14,ymm14,ymm2 + vpxor ymm15,ymm15,ymm3 + vprold ymm12,ymm12,16 + vprold ymm13,ymm13,16 + vprold ymm14,ymm14,16 + vprold ymm15,ymm15,16 + vpaddd ymm8,ymm8,ymm12 + vpaddd ymm9,ymm9,ymm13 + vpaddd ymm10,ymm10,ymm14 + vpaddd ymm11,ymm11,ymm15 + vpxor ymm4,ymm4,ymm8 + vpxor ymm5,ymm5,ymm9 + vpxor ymm6,ymm6,ymm10 + vpxor ymm7,ymm7,ymm11 + vprold ymm4,ymm4,12 + vprold ymm5,ymm5,12 + vprold ymm6,ymm6,12 + vprold ymm7,ymm7,12 + vpaddd ymm0,ymm0,ymm4 + vpaddd ymm1,ymm1,ymm5 + vpaddd ymm2,ymm2,ymm6 + vpaddd ymm3,ymm3,ymm7 + vpxor ymm12,ymm12,ymm0 + vpxor ymm13,ymm13,ymm1 + vpxor ymm14,ymm14,ymm2 + vpxor ymm15,ymm15,ymm3 + vprold ymm12,ymm12,8 + vprold ymm13,ymm13,8 + vprold ymm14,ymm14,8 + vprold ymm15,ymm15,8 + vpaddd ymm8,ymm8,ymm12 + vpaddd ymm9,ymm9,ymm13 + vpaddd ymm10,ymm10,ymm14 + vpaddd ymm11,ymm11,ymm15 + vpxor ymm4,ymm4,ymm8 + vpxor ymm5,ymm5,ymm9 + vpxor ymm6,ymm6,ymm10 + vpxor ymm7,ymm7,ymm11 + vprold ymm4,ymm4,7 + vprold ymm5,ymm5,7 + vprold ymm6,ymm6,7 + vprold ymm7,ymm7,7 + vpaddd ymm0,ymm0,ymm5 + vpaddd ymm1,ymm1,ymm6 + vpaddd ymm2,ymm2,ymm7 + vpaddd ymm3,ymm3,ymm4 + vpxor ymm15,ymm15,ymm0 + vpxor ymm12,ymm12,ymm1 + vpxor ymm13,ymm13,ymm2 + vpxor ymm14,ymm14,ymm3 + vprold ymm15,ymm15,16 + vprold ymm12,ymm12,16 + vprold ymm13,ymm13,16 + vprold ymm14,ymm14,16 + vpaddd ymm10,ymm10,ymm15 + vpaddd ymm11,ymm11,ymm12 + vpaddd ymm8,ymm8,ymm13 + vpaddd ymm9,ymm9,ymm14 + vpxor ymm5,ymm5,ymm10 + vpxor ymm6,ymm6,ymm11 + vpxor ymm7,ymm7,ymm8 + vpxor ymm4,ymm4,ymm9 + vprold ymm5,ymm5,12 + vprold ymm6,ymm6,12 + vprold ymm7,ymm7,12 + vprold ymm4,ymm4,12 + vpaddd ymm0,ymm0,ymm5 + vpaddd ymm1,ymm1,ymm6 + vpaddd ymm2,ymm2,ymm7 + vpaddd ymm3,ymm3,ymm4 + vpxor ymm15,ymm15,ymm0 + vpxor ymm12,ymm12,ymm1 + vpxor ymm13,ymm13,ymm2 + vpxor ymm14,ymm14,ymm3 + vprold ymm15,ymm15,8 + vprold ymm12,ymm12,8 + vprold ymm13,ymm13,8 + vprold ymm14,ymm14,8 + vpaddd ymm10,ymm10,ymm15 + vpaddd ymm11,ymm11,ymm12 + vpaddd ymm8,ymm8,ymm13 + vpaddd ymm9,ymm9,ymm14 + vpxor ymm5,ymm5,ymm10 + vpxor ymm6,ymm6,ymm11 + vpxor ymm7,ymm7,ymm8 + vpxor ymm4,ymm4,ymm9 + vprold ymm5,ymm5,7 + vprold ymm6,ymm6,7 + vprold ymm7,ymm7,7 + vprold ymm4,ymm4,7 + dec eax + jnz NEAR $L$oop8xvl + + vpaddd ymm0,ymm0,ymm16 + vpaddd ymm1,ymm1,ymm17 + vpaddd ymm2,ymm2,ymm18 + vpaddd ymm3,ymm3,ymm19 + + vpunpckldq ymm18,ymm0,ymm1 + vpunpckldq ymm19,ymm2,ymm3 + vpunpckhdq ymm0,ymm0,ymm1 + vpunpckhdq ymm2,ymm2,ymm3 + vpunpcklqdq ymm1,ymm18,ymm19 + vpunpckhqdq ymm18,ymm18,ymm19 + vpunpcklqdq ymm3,ymm0,ymm2 + vpunpckhqdq ymm0,ymm0,ymm2 + vpaddd ymm4,ymm4,ymm20 + vpaddd ymm5,ymm5,ymm21 + vpaddd ymm6,ymm6,ymm22 + vpaddd ymm7,ymm7,ymm23 + + vpunpckldq ymm2,ymm4,ymm5 + vpunpckldq ymm19,ymm6,ymm7 + vpunpckhdq ymm4,ymm4,ymm5 + vpunpckhdq ymm6,ymm6,ymm7 + vpunpcklqdq ymm5,ymm2,ymm19 + vpunpckhqdq ymm2,ymm2,ymm19 + vpunpcklqdq ymm7,ymm4,ymm6 + vpunpckhqdq ymm4,ymm4,ymm6 + vshufi32x4 ymm19,ymm1,ymm5,0 + vshufi32x4 ymm5,ymm1,ymm5,3 + vshufi32x4 ymm1,ymm18,ymm2,0 + vshufi32x4 ymm2,ymm18,ymm2,3 + vshufi32x4 ymm18,ymm3,ymm7,0 + vshufi32x4 ymm7,ymm3,ymm7,3 + vshufi32x4 ymm3,ymm0,ymm4,0 + vshufi32x4 ymm4,ymm0,ymm4,3 + vpaddd ymm8,ymm8,ymm24 + vpaddd ymm9,ymm9,ymm25 + vpaddd ymm10,ymm10,ymm26 + vpaddd ymm11,ymm11,ymm27 + + vpunpckldq ymm6,ymm8,ymm9 + vpunpckldq ymm0,ymm10,ymm11 + vpunpckhdq ymm8,ymm8,ymm9 + vpunpckhdq ymm10,ymm10,ymm11 + vpunpcklqdq ymm9,ymm6,ymm0 + vpunpckhqdq ymm6,ymm6,ymm0 + vpunpcklqdq ymm11,ymm8,ymm10 + vpunpckhqdq ymm8,ymm8,ymm10 + vpaddd ymm12,ymm12,ymm28 + vpaddd ymm13,ymm13,ymm29 + vpaddd ymm14,ymm14,ymm30 + vpaddd ymm15,ymm15,ymm31 + + vpunpckldq ymm10,ymm12,ymm13 + vpunpckldq ymm0,ymm14,ymm15 + vpunpckhdq ymm12,ymm12,ymm13 + vpunpckhdq ymm14,ymm14,ymm15 + vpunpcklqdq ymm13,ymm10,ymm0 + vpunpckhqdq ymm10,ymm10,ymm0 + vpunpcklqdq ymm15,ymm12,ymm14 + vpunpckhqdq ymm12,ymm12,ymm14 + vperm2i128 ymm0,ymm9,ymm13,0x20 + vperm2i128 ymm13,ymm9,ymm13,0x31 + vperm2i128 ymm9,ymm6,ymm10,0x20 + vperm2i128 ymm10,ymm6,ymm10,0x31 + vperm2i128 ymm6,ymm11,ymm15,0x20 + vperm2i128 ymm15,ymm11,ymm15,0x31 + vperm2i128 ymm11,ymm8,ymm12,0x20 + vperm2i128 ymm12,ymm8,ymm12,0x31 + cmp rdx,64*8 + jb NEAR $L$tail8xvl + + mov eax,0x80 + vpxord ymm19,ymm19,YMMWORD[rsi] + vpxor ymm0,ymm0,YMMWORD[32+rsi] + vpxor ymm5,ymm5,YMMWORD[64+rsi] + vpxor ymm13,ymm13,YMMWORD[96+rsi] + lea rsi,[rax*1+rsi] + vmovdqu32 YMMWORD[rdi],ymm19 + vmovdqu YMMWORD[32+rdi],ymm0 + vmovdqu YMMWORD[64+rdi],ymm5 + vmovdqu YMMWORD[96+rdi],ymm13 + lea rdi,[rax*1+rdi] + + vpxor ymm1,ymm1,YMMWORD[rsi] + vpxor ymm9,ymm9,YMMWORD[32+rsi] + vpxor ymm2,ymm2,YMMWORD[64+rsi] + vpxor ymm10,ymm10,YMMWORD[96+rsi] + lea rsi,[rax*1+rsi] + vmovdqu YMMWORD[rdi],ymm1 + vmovdqu YMMWORD[32+rdi],ymm9 + vmovdqu YMMWORD[64+rdi],ymm2 + vmovdqu YMMWORD[96+rdi],ymm10 + lea rdi,[rax*1+rdi] + + vpxord ymm18,ymm18,YMMWORD[rsi] + vpxor ymm6,ymm6,YMMWORD[32+rsi] + vpxor ymm7,ymm7,YMMWORD[64+rsi] + vpxor ymm15,ymm15,YMMWORD[96+rsi] + lea rsi,[rax*1+rsi] + vmovdqu32 YMMWORD[rdi],ymm18 + vmovdqu YMMWORD[32+rdi],ymm6 + vmovdqu YMMWORD[64+rdi],ymm7 + vmovdqu YMMWORD[96+rdi],ymm15 + lea rdi,[rax*1+rdi] + + vpxor ymm3,ymm3,YMMWORD[rsi] + vpxor ymm11,ymm11,YMMWORD[32+rsi] + vpxor ymm4,ymm4,YMMWORD[64+rsi] + vpxor ymm12,ymm12,YMMWORD[96+rsi] + lea rsi,[rax*1+rsi] + vmovdqu YMMWORD[rdi],ymm3 + vmovdqu YMMWORD[32+rdi],ymm11 + vmovdqu YMMWORD[64+rdi],ymm4 + vmovdqu YMMWORD[96+rdi],ymm12 + lea rdi,[rax*1+rdi] + + vpbroadcastd ymm0,DWORD[r10] + vpbroadcastd ymm1,DWORD[4+r10] + + sub rdx,64*8 + jnz NEAR $L$oop_outer8xvl + + jmp NEAR $L$done8xvl + +ALIGN 32 +$L$tail8xvl: + vmovdqa64 ymm8,ymm19 + xor r10,r10 + sub rdi,rsi + cmp rdx,64*1 + jb NEAR $L$ess_than_64_8xvl + vpxor ymm8,ymm8,YMMWORD[rsi] + vpxor ymm0,ymm0,YMMWORD[32+rsi] + vmovdqu YMMWORD[rsi*1+rdi],ymm8 + vmovdqu YMMWORD[32+rsi*1+rdi],ymm0 + je NEAR $L$done8xvl + vmovdqa ymm8,ymm5 + vmovdqa ymm0,ymm13 + lea rsi,[64+rsi] + + cmp rdx,64*2 + jb NEAR $L$ess_than_64_8xvl + vpxor ymm5,ymm5,YMMWORD[rsi] + vpxor ymm13,ymm13,YMMWORD[32+rsi] + vmovdqu YMMWORD[rsi*1+rdi],ymm5 + vmovdqu YMMWORD[32+rsi*1+rdi],ymm13 + je NEAR $L$done8xvl + vmovdqa ymm8,ymm1 + vmovdqa ymm0,ymm9 + lea rsi,[64+rsi] + + cmp rdx,64*3 + jb NEAR $L$ess_than_64_8xvl + vpxor ymm1,ymm1,YMMWORD[rsi] + vpxor ymm9,ymm9,YMMWORD[32+rsi] + vmovdqu YMMWORD[rsi*1+rdi],ymm1 + vmovdqu YMMWORD[32+rsi*1+rdi],ymm9 + je NEAR $L$done8xvl + vmovdqa ymm8,ymm2 + vmovdqa ymm0,ymm10 + lea rsi,[64+rsi] + + cmp rdx,64*4 + jb NEAR $L$ess_than_64_8xvl + vpxor ymm2,ymm2,YMMWORD[rsi] + vpxor ymm10,ymm10,YMMWORD[32+rsi] + vmovdqu YMMWORD[rsi*1+rdi],ymm2 + vmovdqu YMMWORD[32+rsi*1+rdi],ymm10 + je NEAR $L$done8xvl + vmovdqa32 ymm8,ymm18 + vmovdqa ymm0,ymm6 + lea rsi,[64+rsi] + + cmp rdx,64*5 + jb NEAR $L$ess_than_64_8xvl + vpxord ymm18,ymm18,YMMWORD[rsi] + vpxor ymm6,ymm6,YMMWORD[32+rsi] + vmovdqu32 YMMWORD[rsi*1+rdi],ymm18 + vmovdqu YMMWORD[32+rsi*1+rdi],ymm6 + je NEAR $L$done8xvl + vmovdqa ymm8,ymm7 + vmovdqa ymm0,ymm15 + lea rsi,[64+rsi] + + cmp rdx,64*6 + jb NEAR $L$ess_than_64_8xvl + vpxor ymm7,ymm7,YMMWORD[rsi] + vpxor ymm15,ymm15,YMMWORD[32+rsi] + vmovdqu YMMWORD[rsi*1+rdi],ymm7 + vmovdqu YMMWORD[32+rsi*1+rdi],ymm15 + je NEAR $L$done8xvl + vmovdqa ymm8,ymm3 + vmovdqa ymm0,ymm11 + lea rsi,[64+rsi] + + cmp rdx,64*7 + jb NEAR $L$ess_than_64_8xvl + vpxor ymm3,ymm3,YMMWORD[rsi] + vpxor ymm11,ymm11,YMMWORD[32+rsi] + vmovdqu YMMWORD[rsi*1+rdi],ymm3 + vmovdqu YMMWORD[32+rsi*1+rdi],ymm11 + je NEAR $L$done8xvl + vmovdqa ymm8,ymm4 + vmovdqa ymm0,ymm12 + lea rsi,[64+rsi] + +$L$ess_than_64_8xvl: + vmovdqa YMMWORD[rsp],ymm8 + vmovdqa YMMWORD[32+rsp],ymm0 + lea rdi,[rsi*1+rdi] + and rdx,63 + +$L$oop_tail8xvl: + movzx eax,BYTE[r10*1+rsi] + movzx ecx,BYTE[r10*1+rsp] + lea r10,[1+r10] + xor eax,ecx + mov BYTE[((-1))+r10*1+rdi],al + dec rdx + jnz NEAR $L$oop_tail8xvl + + vpxor ymm8,ymm8,ymm8 + vmovdqa YMMWORD[rsp],ymm8 + vmovdqa YMMWORD[32+rsp],ymm8 + +$L$done8xvl: + vzeroall + movaps xmm6,XMMWORD[((-168))+r9] + movaps xmm7,XMMWORD[((-152))+r9] + movaps xmm8,XMMWORD[((-136))+r9] + movaps xmm9,XMMWORD[((-120))+r9] + movaps xmm10,XMMWORD[((-104))+r9] + movaps xmm11,XMMWORD[((-88))+r9] + movaps xmm12,XMMWORD[((-72))+r9] + movaps xmm13,XMMWORD[((-56))+r9] + movaps xmm14,XMMWORD[((-40))+r9] + movaps xmm15,XMMWORD[((-24))+r9] + lea rsp,[r9] + +$L$8xvl_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ChaCha20_8xvl: +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + lea r10,[$L$ctr32_body] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + lea r10,[$L$no_data] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + lea rax,[((64+24+48))+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + + +ALIGN 16 +simd_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[192+r8] + + mov r10d,DWORD[4+r11] + mov ecx,DWORD[8+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + neg rcx + lea rsi,[((-8))+rcx*1+rax] + lea rdi,[512+r8] + neg ecx + shr ecx,3 + DD 0xa548f3fc + + jmp NEAR $L$common_seh_tail + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_ChaCha20_ctr32 wrt ..imagebase + DD $L$SEH_end_ChaCha20_ctr32 wrt ..imagebase + DD $L$SEH_info_ChaCha20_ctr32 wrt ..imagebase + + DD $L$SEH_begin_ChaCha20_ssse3 wrt ..imagebase + DD $L$SEH_end_ChaCha20_ssse3 wrt ..imagebase + DD $L$SEH_info_ChaCha20_ssse3 wrt ..imagebase + + DD $L$SEH_begin_ChaCha20_128 wrt ..imagebase + DD $L$SEH_end_ChaCha20_128 wrt ..imagebase + DD $L$SEH_info_ChaCha20_128 wrt ..imagebase + + DD $L$SEH_begin_ChaCha20_4x wrt ..imagebase + DD $L$SEH_end_ChaCha20_4x wrt ..imagebase + DD $L$SEH_info_ChaCha20_4x wrt ..imagebase + DD $L$SEH_begin_ChaCha20_4xop wrt ..imagebase + DD $L$SEH_end_ChaCha20_4xop wrt ..imagebase + DD $L$SEH_info_ChaCha20_4xop wrt ..imagebase + DD $L$SEH_begin_ChaCha20_8x wrt ..imagebase + DD $L$SEH_end_ChaCha20_8x wrt ..imagebase + DD $L$SEH_info_ChaCha20_8x wrt ..imagebase + DD $L$SEH_begin_ChaCha20_avx512 wrt ..imagebase + DD $L$SEH_end_ChaCha20_avx512 wrt ..imagebase + DD $L$SEH_info_ChaCha20_avx512 wrt ..imagebase + + DD $L$SEH_begin_ChaCha20_avx512vl wrt ..imagebase + DD $L$SEH_end_ChaCha20_avx512vl wrt ..imagebase + DD $L$SEH_info_ChaCha20_avx512vl wrt ..imagebase + + DD $L$SEH_begin_ChaCha20_16x wrt ..imagebase + DD $L$SEH_end_ChaCha20_16x wrt ..imagebase + DD $L$SEH_info_ChaCha20_16x wrt ..imagebase + + DD $L$SEH_begin_ChaCha20_8xvl wrt ..imagebase + DD $L$SEH_end_ChaCha20_8xvl wrt ..imagebase + DD $L$SEH_info_ChaCha20_8xvl wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_ChaCha20_ctr32: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + +$L$SEH_info_ChaCha20_ssse3: +DB 9,0,0,0 + DD simd_handler wrt ..imagebase + DD $L$ssse3_body wrt ..imagebase,$L$ssse3_epilogue wrt ..imagebase + DD 0x20,0 + +$L$SEH_info_ChaCha20_128: +DB 9,0,0,0 + DD simd_handler wrt ..imagebase + DD $L$128_body wrt ..imagebase,$L$128_epilogue wrt ..imagebase + DD 0x60,0 + +$L$SEH_info_ChaCha20_4x: +DB 9,0,0,0 + DD simd_handler wrt ..imagebase + DD $L$4x_body wrt ..imagebase,$L$4x_epilogue wrt ..imagebase + DD 0xa0,0 +$L$SEH_info_ChaCha20_4xop: +DB 9,0,0,0 + DD simd_handler wrt ..imagebase + DD $L$4xop_body wrt ..imagebase,$L$4xop_epilogue wrt ..imagebase + DD 0xa0,0 +$L$SEH_info_ChaCha20_8x: +DB 9,0,0,0 + DD simd_handler wrt ..imagebase + DD $L$8x_body wrt ..imagebase,$L$8x_epilogue wrt ..imagebase + DD 0xa0,0 +$L$SEH_info_ChaCha20_avx512: +DB 9,0,0,0 + DD simd_handler wrt ..imagebase + DD $L$avx512_body wrt ..imagebase,$L$avx512_epilogue wrt ..imagebase + DD 0x20,0 + +$L$SEH_info_ChaCha20_avx512vl: +DB 9,0,0,0 + DD simd_handler wrt ..imagebase + DD $L$avx512vl_body wrt ..imagebase,$L$avx512vl_epilogue wrt ..imagebase + DD 0x20,0 + +$L$SEH_info_ChaCha20_16x: +DB 9,0,0,0 + DD simd_handler wrt ..imagebase + DD $L$16x_body wrt ..imagebase,$L$16x_epilogue wrt ..imagebase + DD 0xa0,0 + +$L$SEH_info_ChaCha20_8xvl: +DB 9,0,0,0 + DD simd_handler wrt ..imagebase + DD $L$8xvl_body wrt ..imagebase,$L$8xvl_epilogue wrt ..imagebase + DD 0xa0,0 diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/ec/ecp_nistz256-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/ec/ecp_nistz256-x86_64.asm new file mode 100644 index 0000000..9930dad --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/ec/ecp_nistz256-x86_64.asm @@ -0,0 +1,7920 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +global ecp_nistz256_precomputed + +ALIGN 4096 +ecp_nistz256_precomputed: + DD 0x18a9143c,0x79e730d4,0x5fedb601,0x75ba95fc,0x77622510,0x79fb732b,0xa53755c6,0x18905f76,0xce95560a,0xddf25357,0xba19e45c,0x8b4ab8e4,0xdd21f325,0xd2e88688,0x25885d85,0x8571ff18 + DD 0x10ddd64d,0x850046d4,0xa433827d,0xaa6ae3c1,0x8d1490d9,0x73220503,0x3dcf3a3b,0xf6bb32e4,0x61bee1a5,0x2f3648d3,0xeb236ff8,0x152cd7cb,0x92042dbe,0x19a8fb0e,0x0a5b8a3b,0x78c57751 + DD 0x4eebc127,0xffac3f90,0x087d81fb,0xb027f84a,0x87cbbc98,0x66ad77dd,0xb6ff747e,0x26936a3f,0xc983a7eb,0xb04c5c1f,0x0861fe1a,0x583e47ad,0x1a2ee98e,0x78820831,0xe587cc07,0xd5f06a29 + DD 0x46918dcc,0x74b0b50d,0xc623c173,0x4650a6ed,0xe8100af2,0x0cdaacac,0x41b0176b,0x577362f5,0xe4cbaba6,0x2d96f24c,0xfad6f447,0x17628471,0xe5ddd22e,0x6b6c36de,0x4c5ab863,0x84b14c39 + DD 0xc45c61f5,0xbe1b8aae,0x94b9537d,0x90ec649a,0xd076c20c,0x941cb5aa,0x890523c8,0xc9079605,0xe7ba4f10,0xeb309b4a,0xe5eb882b,0x73c568ef,0x7e7a1f68,0x3540a987,0x2dd1e916,0x73a076bb + DD 0x3e77664a,0x40394737,0x346cee3e,0x55ae744f,0x5b17a3ad,0xd50a961a,0x54213673,0x13074b59,0xd377e44b,0x93d36220,0xadff14b5,0x299c2b53,0xef639f11,0xf424d44c,0x4a07f75f,0xa4c9916d + DD 0xa0173b4f,0x0746354e,0xd23c00f7,0x2bd20213,0x0c23bb08,0xf43eaab5,0xc3123e03,0x13ba5119,0x3f5b9d4d,0x2847d030,0x5da67bdd,0x6742f2f2,0x77c94195,0xef933bdc,0x6e240867,0xeaedd915 + DD 0x9499a78f,0x27f14cd1,0x6f9b3455,0x462ab5c5,0xf02cfc6b,0x8f90f02a,0xb265230d,0xb763891e,0x532d4977,0xf59da3a9,0xcf9eba15,0x21e3327d,0xbe60bbf0,0x123c7b84,0x7706df76,0x56ec12f2 + DD 0x264e20e8,0x75c96e8f,0x59a7a841,0xabe6bfed,0x44c8eb00,0x2cc09c04,0xf0c4e16b,0xe05b3080,0xa45f3314,0x1eb7777a,0xce5d45e3,0x56af7bed,0x88b12f1a,0x2b6e019a,0xfd835f9b,0x086659cd + DD 0x9dc21ec8,0x2c18dbd1,0x0fcf8139,0x98f9868a,0x48250b49,0x737d2cd6,0x24b3428f,0xcc61c947,0x80dd9e76,0x0c2b4078,0x383fbe08,0xc43a8991,0x779be5d2,0x5f7d2d65,0xeb3b4ab5,0x78719a54 + DD 0x6245e404,0xea7d260a,0x6e7fdfe0,0x9de40795,0x8dac1ab5,0x1ff3a415,0x649c9073,0x3e7090f1,0x2b944e88,0x1a768561,0xe57f61c8,0x250f939e,0x1ead643d,0x0c0daa89,0xe125b88e,0x68930023 + DD 0xd2697768,0x04b71aa7,0xca345a33,0xabdedef5,0xee37385e,0x2409d29d,0xcb83e156,0x4ee1df77,0x1cbb5b43,0x0cac12d9,0xca895637,0x170ed2f6,0x8ade6d66,0x28228cfa,0x53238aca,0x7ff57c95 + DD 0x4b2ed709,0xccc42563,0x856fd30d,0x0e356769,0x559e9811,0xbcbcd43f,0x5395b759,0x738477ac,0xc00ee17f,0x35752b90,0x742ed2e3,0x68748390,0xbd1f5bc1,0x7cd06422,0xc9e7b797,0xfbc08769 + DD 0xb0cf664a,0xa242a35b,0x7f9707e3,0x126e48f7,0xc6832660,0x1717bf54,0xfd12c72e,0xfaae7332,0x995d586b,0x27b52db7,0x832237c2,0xbe29569e,0x2a65e7db,0xe8e4193e,0x2eaa1bbb,0x152706dc + DD 0xbc60055b,0x72bcd8b7,0x56e27e4b,0x03cc23ee,0xe4819370,0xee337424,0x0ad3da09,0xe2aa0e43,0x6383c45d,0x40b8524f,0x42a41b25,0xd7663554,0x778a4797,0x64efa6de,0x7079adf4,0x2042170a + DD 0x0bc6fb80,0x808b0b65,0x3ffe2e6b,0x5882e075,0x2c83f549,0xd5ef2f7c,0x9103b723,0x54d63c80,0x52a23f9b,0xf2f11bd6,0x4b0b6587,0x3670c319,0xb1580e9e,0x55c4623b,0x01efe220,0x64edf7b2 + DD 0xd53c5c9d,0x97091dcb,0xac0a177b,0xf17624b6,0x2cfe2dff,0xb0f13975,0x6c7a574e,0xc1a35c0a,0x93e79987,0x227d3146,0xe89cb80e,0x0575bf30,0x0d1883bb,0x2f4e247f,0x3274c3d0,0xebd51226 + DD 0x56ada97a,0x5f3e51c8,0x8f8b403e,0x4afc964d,0x412e2979,0xa6f247ab,0x6f80ebda,0x675abd1b,0x5e485a1d,0x66a2bd72,0x8f4f0b3c,0x4b2a5caf,0x1b847bba,0x2626927f,0x0502394d,0x6c6fc7d9 + DD 0xa5659ae8,0xfea912ba,0x25e1a16e,0x68363aba,0x752c41ac,0xb8842277,0x2897c3fc,0xfe545c28,0xdc4c696b,0x2d36e9e7,0xfba977c5,0x5806244a,0xe39508c1,0x85665e9b,0x6d12597b,0xf720ee25 + DD 0xd2337a31,0x8a979129,0x0f862bdc,0x5916868f,0x5dd283ba,0x048099d9,0xfe5bfb4e,0xe2d1eeb6,0x7884005d,0x82ef1c41,0xffffcbae,0xa2d4ec17,0x8aa95e66,0x9161c53f,0xc5fee0d0,0x5ee104e1 + DD 0xc135b208,0x562e4cec,0x4783f47d,0x74e1b265,0x5a3f3b30,0x6d2a506c,0xc16762fc,0xecead9f4,0xe286e5b9,0xf29dd4b2,0x83bb3c61,0x1b0fadc0,0x7fac29a4,0x7a75023e,0xc9477fa3,0xc086d5f1 + DD 0x2f6f3076,0x0fc61135,0xe3912a9a,0xc99ffa23,0xd2f8ba3d,0x6a0b0685,0xe93358a4,0xfdc777e8,0x35415f04,0x94a787bb,0x4d23fea4,0x640c2d6a,0x153a35b5,0x9de917da,0x5d5cd074,0x793e8d07 + DD 0x2de45068,0xf4f87653,0x9e2e1f6e,0x37c7a7e8,0xa3584069,0xd0825fa2,0x1727bf42,0xaf2cea7c,0x9e4785a9,0x0360a4fb,0x27299f4a,0xe5fda49c,0x71ac2f71,0x48068e13,0x9077666f,0x83d0687b + DD 0x15d02819,0x6d3883b2,0x40dd9a35,0x6d0d7550,0x1d2b469f,0x61d7cbf9,0x2efc3115,0xf97b232f,0xb24bcbc7,0xa551d750,0x88a1e356,0x11ea4949,0x93cb7501,0x7669f031,0xca737b8a,0x595dc55e + DD 0xd837879f,0xa4a319ac,0xed6b67b0,0x6fc1b49e,0x32f1f3af,0xe3959933,0x65432a2e,0x966742eb,0xb4966228,0x4b8dc9fe,0x43f43950,0x96cc6312,0xc9b731ee,0x12068859,0x56f79968,0x7b948dc3 + DD 0xed1f8008,0x61e4ad32,0xd8b17538,0xe6c9267a,0x857ff6fb,0x1ac7c5eb,0x55f2fb10,0x994baaa8,0x1d248018,0x84cf14e1,0x628ac508,0x5a39898b,0x5fa944f5,0x14fde97b,0xd12e5ac7,0xed178030 + DD 0x97e2feb4,0x042c2af4,0xaebf7313,0xd36a42d7,0x084ffdd7,0x49d2c9eb,0x2ef7c76a,0x9f8aa54b,0x09895e70,0x9200b7ba,0xddb7fb58,0x3bd0c66f,0x78eb4cbb,0x2d97d108,0xd84bde31,0x2d431068 + DD 0x172ccd1f,0x4b523eb7,0x30a6a892,0x7323cb28,0xcfe153eb,0x97082ec0,0xf2aadb97,0xe97f6b6a,0xd1a83da1,0x1d3d393e,0x804b2a68,0xa6a7f9c7,0x2d0cb71e,0x4a688b48,0x40585278,0xa9b4cc5f + DD 0xcb66e132,0x5e5db46a,0x0d925880,0xf1be963a,0x0317b9e2,0x944a7027,0x48603d48,0xe266f959,0x5c208899,0x98db6673,0xa2fb18a3,0x90472447,0x777c619f,0x8a966939,0x2a3be21b,0x3798142a + DD 0x3298b343,0xb4241cb1,0xb44f65a1,0xa3a14e49,0x3ac77acd,0xc5f4d6cd,0x52b6fc3c,0xd0288cb5,0x1c040abc,0xd5cc8c2f,0x06bf9b4a,0xb675511e,0x9b3aa441,0xd667da37,0x51601f72,0x460d45ce + DD 0x6755ff89,0xe2f73c69,0x473017e6,0xdd3cf7e7,0x3cf7600d,0x8ef5689d,0xb1fc87b4,0x948dc4f8,0x4ea53299,0xd9e9fe81,0x98eb6028,0x2d921ca2,0x0c9803fc,0xfaecedfd,0x4d7b4745,0xf38ae891 + DD 0xc5e3a3d8,0xd8c5fccf,0x4079dfbf,0xbefd904c,0xfead0197,0xbc6d6a58,0x695532a4,0x39227077,0xdbef42f5,0x09e23e6d,0x480a9908,0x7e449b64,0xad9a2e40,0x7b969c1a,0x9591c2a4,0x6231d792 + DD 0x0f664534,0x87151456,0x4b68f103,0x85ceae7c,0x65578ab9,0xac09c4ae,0xf044b10c,0x33ec6868,0x3a8ec1f1,0x6ac4832b,0x5847d5ef,0x5509d128,0x763f1574,0xf909604f,0xc32f63c4,0xb16c4303 + DD 0x7ca23cd3,0xb6ab2014,0xa391849d,0xcaa7a5c6,0x75678d94,0x5b0673a3,0xdd303e64,0xc982ddd4,0x5db6f971,0xfd7b000b,0x6f876f92,0xbba2cb1f,0x3c569426,0xc77332a3,0x570d74f8,0xa159100c + DD 0xdec67ef5,0xfd16847f,0x233e76b7,0x742ee464,0xefc2b4c8,0x0b8e4134,0x42a3e521,0xca640b86,0x8ceb6aa9,0x653a0190,0x547852d5,0x313c300c,0x6b237af7,0x24e4ab12,0x8bb47af8,0x2ba90162 + DD 0xa8219bb7,0x3d5e58d6,0x1b06c57f,0xc691d0bd,0xd257576e,0x0ae4cb10,0xd54a3dc3,0x3569656c,0x94cda03a,0xe5ebaebd,0x162bfe13,0x934e82d3,0xe251a0c6,0x450ac0ba,0xdd6da526,0x480b9e11 + DD 0x8cce08b5,0x00467bc5,0x7f178d55,0xb636458c,0xa677d806,0xc5748bae,0xdfa394eb,0x2763a387,0x7d3cebb6,0xa12b448a,0x6f20d850,0xe7adda3e,0x1558462c,0xf63ebce5,0x620088a8,0x58b36143 + DD 0x4d63c0ee,0x8a2cc3ca,0x0fe948ce,0x51233117,0x222ef33b,0x7463fd85,0x7c603d6c,0xadf0c7dc,0xfe7765e5,0x0ec32d3b,0xbf380409,0xccaab359,0x8e59319c,0xbdaa84d6,0x9c80c34d,0xd9a4c280 + DD 0xa059c142,0xa9d89488,0xff0b9346,0x6f5ae714,0x16fb3664,0x068f237d,0x363186ac,0x5853e4c4,0x63c52f98,0xe2d87d23,0x81828876,0x2ec4a766,0xe14e7b1c,0x47b864fa,0x69192408,0x0c0bc0e5 + DD 0xb82e9f3e,0xe4d7681d,0xdf25e13c,0x83200f0b,0x66f27280,0x8909984c,0x75f73227,0x462d7b00,0xf2651798,0xd90ba188,0x36ab1c34,0x74c6e18c,0x5ef54359,0xab256ea3,0xd1aa702f,0x03466612 + DD 0x2ed22e91,0x624d6049,0x6f072822,0x6fdfe0b5,0x39ce2271,0xeeca1115,0xdb01614f,0x98100a4f,0xa35c628f,0xb6b0daa2,0xc87e9a47,0xb6f94d2e,0x1d57d9ce,0xc6773259,0x03884a7b,0xf70bfeec + DD 0xed2bad01,0x5fb35ccf,0x1da6a5c7,0xa155cbe3,0x30a92f8f,0xc2e2594c,0x5bfafe43,0x649c89ce,0xe9ff257a,0xd158667d,0xf32c50ae,0x9b359611,0x906014cf,0x4b00b20b,0x89bc7d3d,0xf3a8cfe3 + DD 0x248a7d06,0x4ff23ffd,0x878873fa,0x80c5bfb4,0x05745981,0xb7d9ad90,0x3db01994,0x179c85db,0x61a6966c,0xba41b062,0xeadce5a8,0x4d82d052,0xa5e6a318,0x9e91cd3b,0x95b2dda0,0x47795f4f + DD 0xd55a897c,0xecfd7c1f,0xb29110fb,0x009194ab,0xe381d3b0,0x5f0e2046,0xa98dd291,0x5f3425f6,0x730d50da,0xbfa06687,0x4b083b7f,0x0423446c,0xd69d3417,0x397a247d,0x387ba42a,0xeb629f90 + DD 0xd5cd79bf,0x1ee426cc,0x946c6e18,0x0032940b,0x57477f58,0x1b1e8ae0,0x6d823278,0xe94f7d34,0x782ba21a,0xc747cb96,0xf72b33a5,0xc5254469,0xc7f80c81,0x772ef6de,0x2cd9e6b5,0xd73acbfe + DD 0x49ee90d9,0x4075b5b1,0xa06e9eba,0x785c339a,0xabf825e0,0xa1030d5b,0xa42931dc,0xcec684c3,0xc1586e63,0x42ab62c9,0x5ab43f2b,0x45431d66,0x55f7835d,0x57c8b2c0,0xc1b7f865,0x033da338 + DD 0xcaa76097,0x283c7513,0x36c83906,0x0a624fa9,0x715af2c7,0x6b20afec,0xeba78bfd,0x4b969974,0xd921d60e,0x220755cc,0x7baeca13,0x9b944e10,0x5ded93d4,0x04819d51,0x6dddfd27,0x9bbff86e + DD 0x77adc612,0x6b344130,0xbbd803a0,0xa7496529,0x6d8805bd,0x1a1baaa7,0x470343ad,0xc8403902,0x175adff1,0x39f59f66,0xb7d8c5b7,0x0b26d7fb,0x529d75e3,0xa875f5ce,0x41325cc2,0x85efc7e9 + DD 0x1ff6acd3,0x21950b42,0x53dc6909,0xffe70484,0x28766127,0xff4cd0b2,0x4fb7db2b,0xabdbe608,0x5e1109e8,0x837c9228,0xf4645b5a,0x26147d27,0xf7818ed8,0x4d78f592,0xf247fa36,0xd394077e + DD 0x488c171a,0x0fb9c2d0,0x13685278,0xa78bfbaa,0xd5b1fa6a,0xedfbe268,0x2b7eaba7,0x0dceb8db,0x9ae2b710,0xbf9e8089,0xa4449c96,0xefde7ae6,0xcc143a46,0x43b7716b,0xc3628c13,0xd7d34194 + DD 0x3b3f64c9,0x508cec1c,0x1e5edf3f,0xe20bc0ba,0x2f4318d4,0xda1deb85,0x5c3fa443,0xd20ebe0d,0x73241ea3,0x370b4ea7,0x5e1a5f65,0x61f1511c,0x82681c62,0x99a5e23d,0xa2f54c2d,0xd731e383 + DD 0x83445904,0x2692f36e,0xaf45f9c0,0x2e0ec469,0xc67528b7,0x905a3201,0xd0e5e542,0x88f77f34,0x5864687c,0xf67a8d29,0x22df3562,0x23b92eae,0x9bbec39e,0x5c27014b,0x9c0f0f8d,0x7ef2f226 + DD 0x546c4d8d,0x97359638,0x92f24679,0x5f9c3fc4,0xa8c8acd9,0x912e8bed,0x306634b0,0xec3a318d,0xc31cb264,0x80167f41,0x522113f2,0x3db82f6f,0xdcafe197,0xb155bcd2,0x43465283,0xfba1da59 + DD 0xb212cf53,0xa0425b8e,0xf8557c5f,0x4f2e512e,0x25c4d56c,0xc1286ff9,0xee26c851,0xbb8a0fea,0xe7d6107e,0xc28f70d2,0xe76265aa,0x7ee0c444,0x1d1936b1,0x3df277a4,0xea9595eb,0x1a556e3f + DD 0xe7305683,0x258bbbf9,0x07ef5be6,0x31eea5bf,0x46c814c1,0x0deb0e4a,0xa7b730dd,0x5cee8449,0xa0182bde,0xeab495c5,0x9e27a6b4,0xee759f87,0x80e518ca,0xc2cf6a68,0xf14cf3f4,0x25e8013f + DD 0x7e8d7a14,0x8fc44140,0x9556f36a,0xbb1ff3ca,0x14600044,0x6a844385,0x7451ae63,0xba3f0c4a,0x1f9af32a,0xdfcac25b,0xb1f2214b,0x01e0db86,0xa4b596ac,0x4e9a5bc2,0x026c2c08,0x83927681 + DD 0x7acaca28,0x3ec832e7,0xc7385b29,0x1bfeea57,0xfd1eaf38,0x068212e3,0x6acf8ccc,0xc1329830,0x2aac9e59,0xb909f2db,0xb661782a,0x5748060d,0xc79b7a01,0xc5ab2632,0x00017626,0xda44c6c6 + DD 0xa7ea82f0,0xf26c00e8,0xe4299aaf,0x99cac80d,0x7ed78be1,0xd66fe3b6,0x648d02cd,0x305f725f,0x623fb21b,0x33ed1bc4,0x7a6319ad,0xfa70533e,0xbe5ffb3e,0x17ab562d,0x56674741,0x06374994 + DD 0x5c46aa8e,0x69d44ed6,0xa8d063d1,0x2100d5d3,0xa2d17c36,0xcb9727ea,0x8add53b7,0x4c2bab1b,0x15426704,0xa084e90c,0xa837ebea,0x778afcd3,0x7ce477f8,0x6651f701,0x46fb7a8b,0xa0624998 + DD 0xed8a6e19,0xdc1e6828,0x4189d9c7,0x33fc2336,0x671c39bc,0x026f8fe2,0xbc6f9915,0xd40c4ccd,0xf80e75ca,0xafa135bb,0x22adff2c,0x12c651a0,0x4f51ad96,0xc40a04bd,0xbbe4e832,0x04820109 + DD 0x7f4c04cc,0x3667eb1a,0xa9404f84,0x59556621,0x7eceb50a,0x71cdf653,0x9b8335fa,0x994a44a6,0xdbeb9b69,0xd7faf819,0xeed4350d,0x473c5680,0xda44bba2,0xb6658466,0x872bdbf3,0x0d1bc780 + DD 0xa1962f91,0xe535f175,0xed58f5a7,0x6ed7e061,0x2089a233,0x177aa4c0,0xe539b413,0x0dbcb03a,0xbb32e38e,0xe3dc424e,0x6806701e,0x6472e5ef,0x814be9ee,0xdd47ff98,0x35ace009,0x6b60cfff + DD 0x9ff91fe5,0xb8d3d931,0xf0518eed,0x039c4800,0x9182cb26,0x95c37632,0x82fc568d,0x0763a434,0x383e76ba,0x707c04d5,0x824e8197,0xac98b930,0x91230de0,0x92bf7c8f,0x40959b70,0x90876a01 + DD 0x05968b80,0xdb6d96f3,0x089f73b9,0x380a0913,0xc2c61e01,0x7da70b83,0x569b38c7,0x95fb8394,0x80edfe2f,0x9a3c6512,0x8faeaf82,0x8f726bb9,0x78424bf8,0x8010a4a0,0x0e844970,0x29672044 + DD 0x7a2ad62a,0x63c5cb81,0xac62ff54,0x7ef2b6b9,0xb3ad9db5,0x3749bba4,0x46d5a617,0xad311f2c,0xc2ff3b6d,0xb77a8087,0x367834ff,0xb46feaf3,0x75d6b138,0xf8aa266d,0xec008188,0xfa38d320 + DD 0x696946fc,0x486d8ffa,0xb9cba56d,0x50fbc6d8,0x90f35a15,0x7e3d423e,0xc0dd962c,0x7c3da195,0x3cfd5d8b,0xe673fdb0,0x889dfca5,0x0704b7c2,0xf52305aa,0xf6ce581f,0x914d5e53,0x399d49eb + DD 0x6ec293cd,0x380a496d,0x8e7051f5,0x733dbda7,0xb849140a,0x037e388d,0x5946dbf6,0xee4b32b0,0xcae368d1,0xb1c4fda9,0xfdb0b2f3,0x5001a7b0,0x2e3ac46e,0x6df59374,0x39b3e656,0x4af675f2 + DD 0x39949296,0x44e38110,0x361db1b5,0x5b63827b,0x206eaff5,0x3e5323ed,0xc21f4290,0x942370d2,0xe0d985a1,0xf2caaf2e,0x7239846d,0x192cc64b,0xae6312f8,0x7c0b8f47,0x96620108,0x7dc61f91 + DD 0xc2da7de9,0xb830fb5b,0x0ff8d3be,0xd0e643df,0x188a9641,0x31ee77ba,0xbcf6d502,0x4e8aa3aa,0x9a49110f,0xf9fb6532,0x2dd6b220,0xd18317f6,0x52c3ea5a,0x7e3ced41,0x7d579c4a,0x0d296a14 + DD 0xed4c3717,0x35d6a53e,0x3d0ed2a3,0x9f8240cf,0xe5543aa5,0x8c0d4d05,0xdd33b4b4,0x45d5bbfb,0x137fd28e,0xfa04cc73,0xc73b3ffd,0x862ac6ef,0x31f51ef2,0x403ff9f5,0xbc73f5a2,0x34d5e0fc + DD 0x08913f4f,0xf2526820,0xeac93d95,0xea20ed61,0x6ca6b26c,0x51ed38b4,0xea4327b0,0x8662dcbc,0x725d2aaa,0x6daf295c,0x8e52dcda,0xbad2752f,0x0b17dacc,0x2210e721,0xd51e8232,0xa37f7912 + DD 0x44cc3add,0x4f7081e1,0x87be82cf,0xd5ffa1d6,0x0edd6472,0x89890b6c,0x3ed17863,0xada26e1a,0x63483caa,0x276f2715,0x2f6077fd,0xe6924cd9,0x0a466e3c,0x05a7fe98,0xb1902d1f,0xf1c794b0 + DD 0x82a8042c,0xe5213688,0xcd278298,0xd931cfaf,0xf597a740,0x069a0ae0,0xeb59107c,0x0adbb3f3,0x5eaa8eb8,0x983e951e,0x11b48e78,0xe663a8b5,0x8a03f2c5,0x1631cc0d,0x11e271e2,0x7577c11e + DD 0x08369a90,0x33b2385c,0x190eb4f8,0x2990c59b,0xc68eac80,0x819a6145,0x2ec4a014,0x7a786d62,0x20ac3a8d,0x33faadbe,0x5aba2d30,0x31a21781,0xdba4f565,0x209d2742,0x55aa0fbb,0xdb2ce9e3 + DD 0x168984df,0x8cef334b,0x33879638,0xe81dce17,0x263720f0,0xf6e6949c,0xf593cbec,0x5c56feaf,0xfde58c84,0x8bff5601,0x2eccb314,0x74e24117,0x4c9a8a78,0xbcf01b61,0x544c9868,0xa233e35e + DD 0x8bd7aff1,0xb3156bf3,0x1d81b146,0x1b5ee4cb,0xd628a915,0x7ba1ac41,0xfd89699e,0x8f3a8f9c,0xa0748be7,0x7329b9c9,0xa92e621f,0x1d391c95,0x4d10a837,0xe51e6b21,0x4947b435,0xd255f53a + DD 0xf1788ee3,0x07669e04,0xa86938a2,0xc14f27af,0xe93a01c0,0x8b47a334,0xd9366808,0xff627438,0xca2a5965,0x7a0985d8,0xd6e9b9b3,0x3d9a5542,0x4cf972e8,0xc23eb80b,0x4fdf72fd,0x5c1c33bb + DD 0x74a86108,0x0c4a58d4,0xee4c5d90,0xf8048a8f,0xe86d4c80,0xe3c7c924,0x056a1e60,0x28c889de,0xb214a040,0x57e2662e,0x37e10347,0xe8c48e98,0x80ac748a,0x87742862,0x186b06f2,0xf1c24022 + DD 0x5f74040a,0xac2dd4c3,0xfceac957,0x409aeb71,0x55c4ec23,0x4fbad782,0x8a7b76ec,0xb359ed61,0xed6f4a60,0x12744926,0x4b912de3,0xe21e8d7f,0xfc705a59,0xe2575a59,0xed2dbc0e,0x72f1d4de + DD 0xeb7926b8,0x3d2b24b9,0xcdbe5509,0xbff88cb3,0xe4dd640b,0xd0f399af,0x2f76ed45,0x3c5fe130,0x3764fb3d,0x6f3562f4,0x3151b62d,0x7b5af318,0xd79ce5f3,0xd5bd0bc7,0xec66890f,0xfdaf6b20 + DD 0x6063540c,0x735c67ec,0xe5f9cb8f,0x50b259c2,0x3f99c6ab,0xb8734f9a,0xa3a7bc85,0xf8cc13d5,0xc5217659,0x80c1b305,0x4ec12a54,0xfe5364d4,0x681345fe,0xbd87045e,0x582f897f,0x7f8efeb1 + DD 0xd5923359,0xe8cbf1e5,0x539b9fb0,0xdb0cea9d,0x49859b98,0x0c5b34cf,0xa4403cc6,0x5e583c56,0xd48185b7,0x11fc1a2d,0x6e521787,0xc93fbc7e,0x05105b8b,0x47e7a058,0xdb8260c8,0x7b4d4d58 + DD 0x46eb842a,0xe33930b0,0x7bdae56d,0x8e844a9a,0x13f7fdfc,0x34ef3a9e,0x636ca176,0xb3768f82,0x4e09e61c,0x2821f4e0,0xa0c7cddc,0x414dc3a1,0x54945fcd,0xd5379437,0xb3555ff1,0x151b6eef + DD 0x6339c083,0xb31bd613,0xdfb64701,0x39ff8155,0xe29604ab,0x7c3388d2,0xa6b10442,0x1e19084b,0xeccd47ef,0x17cf54c0,0x4a5dfb30,0x89693385,0x47daf9f6,0x69d023fb,0x7d91d959,0x9222840b + DD 0x803bac62,0x439108f5,0x379bd45f,0x0b7dd91d,0xca63c581,0xd651e827,0x509c104f,0x5c5d75f6,0x1f2dc308,0x7d5fc738,0xd98454be,0x20faa7bf,0xa517b031,0x95374bee,0x642692ac,0xf036b9b1 + DD 0x39842194,0xc5106109,0x49d05295,0xb7e2353e,0xefb42ee0,0xfc8c1d5c,0x08ce811c,0xe04884eb,0x7419f40e,0xf1f75d81,0xa995c241,0x5b0ac162,0xc4c55646,0x120921bb,0x8d33cf97,0x713520c2 + DD 0xe98c5100,0xb4a65a5c,0x2ddd0f5a,0x6cec871d,0x9ba2e78b,0x251f0b7f,0xce3a2a5f,0x224a8434,0x25f5c46f,0x26827f61,0x48545ec0,0x6a22bedc,0xb1bb5cdc,0x25ae5fa0,0xfcb9b98f,0xd693682f + DD 0x91e5d7d3,0x32027fe8,0x73a07678,0xf14b7d17,0xc0dfdd61,0xf88497b3,0x2a8c4f48,0xf7c2eec0,0x3756e621,0xaa5573f4,0x1825b948,0xc013a240,0x63878572,0x1c03b345,0x653a4184,0xa0472bea + DD 0x0ac69a80,0xf4222e27,0xf51e54f6,0x34096d25,0x8fffa591,0x00a648cb,0x69b6527f,0x4e87acdc,0xe285ccb4,0x0575e037,0x50ddcf52,0x188089e4,0x870ff719,0xaa96c9a8,0x1fc7e369,0x74a56cd8 + DD 0x1726931a,0x41d04ee2,0x3660ecfd,0x0bbbb2c8,0x24818e18,0xa6ef6de5,0xe7d57887,0xe421cc51,0xbea87be6,0xf127d208,0xb1cdd682,0x16a475d3,0x439b63f7,0x9db1b684,0xf0f113b6,0x5359b3db + DD 0x8bf06e31,0xdfccf1de,0xdd383901,0x1fdf8f44,0x5017e7d2,0x10775cad,0x58d11eef,0xdfc3a597,0xb1ecff10,0x6ec9c8a0,0x28400549,0xee6ed6cc,0x1b4f8d73,0xb5ad7bae,0xe00aaab9,0x61b4f11d + DD 0xd4eff2d7,0x7b32d69b,0x4288b60f,0x88ae6771,0x37a1e723,0x159461b4,0x570aae8c,0x1f3d4789,0x7f9871da,0x869118c0,0xf635e278,0x35fbda78,0xe1541dac,0x738f3641,0xc0dae45f,0x6794b13a + DD 0x09cc0917,0x065064ac,0xc68540fd,0x27c53729,0xef227671,0x0d2d4c8e,0xa1785a04,0xd23a9f80,0x52650359,0x98c59528,0x74a1acad,0xfa09ad01,0x0b55bf5c,0x082d5a29,0x419b8084,0xa40f1c67 + DD 0xdcc18770,0x3a5c752e,0x8825c3a5,0x4baf1f2f,0x21b153ed,0xebd63f74,0xb2f64723,0xa2383e47,0x2646d19a,0xe7bf620a,0x03c83ffd,0x56cb44ec,0x4f6be9f1,0xaf7267c9,0xc06bb5e9,0x8b2dfd7b + DD 0xa672c5c7,0xb87072f2,0x0d53c5e2,0xeacb11c8,0xff435932,0x22dac29d,0x4408693c,0x37bdb99d,0x2899c20f,0xf6e62fb6,0x447ece24,0x3535d512,0xff577ce3,0xfbdc6b88,0x190575f2,0x726693bd + DD 0xab4b35a2,0x6772b0e5,0xf5eeaacf,0x1d8b6001,0x795b9580,0x728f7ce4,0x41fb81da,0x4a20ed2a,0x4fec01e6,0x9f685cd4,0xa7ff50ad,0x3ed7ddcc,0x0c2d97fd,0x460fd264,0xeb82f4f9,0x3a241426 + DD 0x6a8ea820,0x17d1df2c,0xf22cc254,0xb2b50d3b,0xb7291426,0x03856cba,0x04f5ee39,0x87fd26ae,0x02bee4ba,0x9cb696cc,0x06820fd6,0x53121804,0x0212e985,0xa5dfc269,0x160f9a09,0x666f7ffa + DD 0xbccd9617,0xc503cd33,0xba7730a3,0x365dede4,0x5ddb0786,0x798c6355,0xfc9cd3bc,0xa6c3200e,0xe5e35efd,0x060ffb2c,0x5555a1c1,0x99a4e25b,0xf70b3751,0x11d95375,0x160e1bf6,0x0a57354a + DD 0xf8e4b065,0xecb3ae4b,0x2e53022b,0x07a834c4,0x8692ed96,0x1cd300b3,0x61ee14ec,0x16a6f792,0x6a8649ed,0x8f1063c6,0x869f3e14,0xfbcdfcfe,0x00a7b3ec,0x2cfb97c1,0x7130c2f1,0xcea49b3c + DD 0xe9d96488,0x462d044f,0x8182a0c1,0x4b53d52e,0x0391e9e9,0x84b6ddd3,0xb1741a09,0x80ab7b48,0x27d3317f,0xec0e15d4,0x1a64671e,0x8dfc1ddb,0xd49c5b92,0x93cc5d5f,0x3674a331,0xc995d53d + DD 0x090090ae,0x302e41ec,0xedb06830,0x2278a0cc,0xfbc99690,0x1d025932,0xb80d68da,0x0c32fbd2,0xf341a6c1,0xd79146da,0x1bef68a0,0xae0ba139,0x8d774b3a,0xc6b8a563,0x880ba4d7,0x1cf307bd + DD 0x19803511,0xc033bdc7,0x8888c3be,0xa9f97b3b,0x85c6d05e,0x3d68aebc,0x193919eb,0xc3b88a9d,0xc48b0ee3,0x2d300748,0x07a746c1,0x7506bc7c,0x6e6d57f3,0xfc48437c,0xcfeaa91a,0x5bd71587 + DD 0xc1bc5225,0xa4ed0408,0x2719226d,0xd0b946db,0x758d2d43,0x109ecd62,0x2751759b,0x75c8485a,0x9ce4177a,0xb0b75f49,0x79c10c3d,0x4fa61a1e,0xa167fcd7,0xc062d300,0x750f0fa8,0x4df3874c + DD 0x83dfedc9,0x29ae2cf9,0x8d87631a,0xf8437134,0x7429c8d2,0xaf571711,0x146d9272,0x18d15867,0x69769bb7,0x83053ecf,0xc479ab82,0xc55eb856,0x21b0f4b2,0x5ef7791c,0x3d491525,0xaa5956ba + DD 0x9fe20eba,0x407a96c2,0xe52a5ad3,0xf27168bb,0xbf1d9d89,0x43b60ab3,0x710e727a,0xe45c51ef,0x099b4221,0xdfca5276,0x2557a159,0x8dc6407c,0x91035895,0x0ead8335,0x9c55dc32,0x0a9db957 + DD 0xdf61bc76,0xe40736d3,0x3f778cdb,0x13a619c0,0xc56ea28f,0x6dd921a4,0x2fa647b4,0x76a52433,0xac5bdc5d,0x23591891,0xbac7dc01,0xff4a1a72,0x62df8453,0x9905e261,0xe63b265f,0x3ac045df + DD 0xad53dba7,0x8a3f341b,0x837b625a,0x8ec269cc,0x3ae31189,0xd71a2782,0x55e96120,0x8fb4f9a3,0xff9875cf,0x804af823,0x5d442a9b,0x23224f57,0xecc62679,0x1c4d3b9e,0xa0e7ddb1,0x91da22fb + DD 0x6c04a661,0xa370324d,0x5e376d17,0x9710d3b6,0x3044e357,0xed8c98f0,0x6422701c,0xc364ebbe,0x7733d61c,0x347f5d51,0xcea826c3,0xd55644b9,0x55a25548,0x80c6e0ad,0x844220a7,0x0aa7641d + DD 0x31810660,0x1438ec81,0xde4b4043,0x9dfa6507,0xcc3e0273,0x10b515d8,0x28d8cfb2,0x1b6066dd,0x9c9efebd,0xd3b04591,0xa21c1ff4,0x425d4bdf,0xd57607d3,0x5fe5af19,0x54481084,0xbbf773f7 + DD 0x94b03ed1,0x8435bd69,0x634cc546,0xd9ad1de3,0x00e420ca,0x2cf423fc,0xa03096dd,0xeed26d80,0xa4db09d2,0xd7f60be7,0x960622f7,0xf47f569d,0x7296c729,0xe5925fd7,0x26ca2715,0xeff2db26 + DD 0xb913e759,0xa6fcd014,0x8ff4de93,0x53da4786,0xc32068e1,0x14616d79,0xccdf352e,0xb187d664,0x1dc90b59,0xf7afb650,0x7daa1b26,0x8170e943,0x700c0a84,0xc8e3bdd8,0x6482bdfa,0x6e8d345f + DD 0xc5c5ea50,0x84cfbfa1,0x67960681,0xd3baf14c,0x0dd50942,0x26398403,0x4716a663,0xe4b7839c,0xe7de6dc0,0xd5f1f794,0x622aa7ce,0x5cd0f4d4,0x59acfeec,0x5295f3f1,0x953e0607,0x8d933552 + DD 0x776c5722,0xc7db8ec5,0x2b5f290c,0xdc467e62,0x4ff425a9,0xd4297e70,0x0cf7bb72,0x4be924c1,0xa1892131,0x0d5dc5ae,0xa705c992,0x8bf8a8e3,0x7a305ac5,0x73a0b064,0x9a8c77a8,0x00c9ca4e + DD 0x83774bdd,0x5dfee80f,0x85734485,0x63131602,0x914a69a9,0xa1b524ae,0xd4e300d7,0xebc2ffaf,0x7cfa46a5,0x52c93db7,0x21653b50,0x71e6161f,0xa4bc580a,0x3574fc57,0xe1bc1253,0xc09015dd + DD 0xd174d7aa,0x4b7b47b2,0xf3a15d04,0x4072d8e8,0xd6fa07ed,0xeeb7d47f,0xedbdafb1,0x6f2b9ff9,0x3760fe8a,0x18c51615,0xf06c6c13,0x7a96e6bf,0x0ea2d071,0x4d7a0410,0x0be2a5ce,0xa1914e9b + DD 0xd8a3c5cf,0x5726e357,0x2abb2b13,0x1197ecc3,0x31ae88dd,0x6c0d7f7f,0xfdbb3efe,0x15b20d1a,0x70584039,0xcd06aa26,0xa7dc9747,0x2277c969,0x7855d815,0xbca69587,0x5188b32a,0x899ea238 + DD 0x760c1c9d,0x37d9228b,0x9b5c18da,0xc7efbb11,0x19f6dbc5,0x7f0d1bc8,0x07e6905b,0x4875384b,0x3ba8cd86,0xc7c50baa,0xc2905de0,0xb0ce40fb,0x7a231952,0x70840673,0xcf43de26,0xa912a262 + DD 0xeb5b76c1,0x9c38ddcc,0x26fc0ab4,0x746f5285,0xd62c269f,0x52a63a50,0x99458621,0x60049c55,0x3c2f7c9e,0xe7f48f82,0x917d5cf3,0x6bd99043,0x8701f469,0xeb1317a8,0x9a449fe0,0xbd3fe2ed + DD 0x12ef3d36,0x421e79ca,0x3e7ea5de,0x9ee3c36c,0xcdff36f7,0xe48198b5,0xc6b82228,0xaff4f967,0xc47adb7e,0x15e19dd0,0x032e7dfa,0x45699b23,0x1fae026a,0x40680c8b,0x550dbf4d,0x5a347a48 + DD 0x3cef0d7d,0xe652533b,0x2bbb4381,0xd94f7b18,0x0e80f500,0x838752be,0x9e9c9bfb,0x8e6e2488,0x16caca6a,0xc9751697,0x38531ad9,0x866c49d8,0x7151ade1,0xc917e239,0x6037c407,0x2d016ec1 + DD 0x00eac3f9,0xa407ccc9,0xe2ed4748,0x835f6280,0x1cc98e0d,0xcc54c347,0xdcb572eb,0x0e969937,0x8f30c9cb,0x1b16c8e8,0x373c4661,0xa606ae75,0x35502cab,0x47aa689b,0x4d9bb64f,0xf89014ae + DD 0x31c71f7b,0x202f6a9c,0x296ffe5c,0x01f95aa3,0x53cec3a3,0x5fc06014,0x5f498a45,0xeb991237,0x5d91ba87,0xae9a935e,0x0b564a19,0xc6ac6281,0x3bd44e69,0x8a8fe81c,0x9dd11d45,0x7c8b467f + DD 0xea5b8e69,0xf772251f,0xc5b75fbc,0xaeecb3bd,0x887ff0e5,0x1aca3331,0x19f0a131,0xbe5d49ff,0xe5c8646f,0x582c13aa,0x20e19980,0xdbaa12e8,0xf7abbd94,0x8f40f31a,0x1dfc7663,0x1f13f5a8 + DD 0xaceb4fc0,0x5d81f1ee,0x5e6f0f42,0x36256002,0x751370c8,0x4b67d6d7,0x03e80589,0x2608b698,0x05268301,0xcfc0d2fc,0x40309212,0xa6943d39,0x1fd0e1c2,0x192a90c2,0x37f1dc76,0xb209f113 + DD 0x97bf1298,0xefcc5e06,0x219d639e,0xcbdb6730,0xb81e8c6f,0xd009c116,0x1a7ce2e5,0xa3ffdde3,0xa914d3ba,0xc53fbaaa,0x88df85ee,0x836d500f,0x66ee0751,0xd98dc71b,0x714516fd,0x5a3d7005 + DD 0x39eedbba,0x21d3634d,0x0455a46d,0x35cd2e68,0xf9d7eb0c,0xc8cafe65,0x00cefb3e,0xbda3ce9e,0x2c9cf7a4,0xddc17a60,0x7bcb8773,0x01572ee4,0x8c7548df,0xa92b2b01,0xa84600e3,0x732fd309 + DD 0x16543a40,0xe22109c7,0xfede3c6c,0x9acafd36,0x6824e614,0xfb206852,0xda25dca0,0x2a4544a9,0x91d60b06,0x25985262,0x28753545,0x281b7be9,0x90f13b27,0xec667b1a,0x940e2eb4,0x33a83aff + DD 0xd5d721d5,0x80009862,0x5bd3a182,0x0c3357a3,0x7aa2cda4,0x27f3a83b,0xf6f83085,0xb58ae74e,0x2e6dad6b,0x2a911a81,0xf43d6c5b,0xde286051,0xf996c4d8,0x4bdccc41,0x0ae1e24e,0xe7312ec0 + DD 0x6e6485b3,0xf8d112e7,0x771c52f8,0x4d3e24db,0x684a2f6d,0x48e3ee41,0x21d95551,0x7161957d,0xcdb12a6c,0x19631283,0x2e50e164,0xbf3fa882,0x3166cc73,0xf6254b63,0xaee8cc38,0x3aefa7ae + DD 0x3b36f9fd,0x79b0fe62,0xfde19fc0,0x26543b23,0x958482ef,0x136e64a0,0x9b095825,0x23f63771,0xb6a1142e,0x14cfd596,0x335aac0b,0x5ea6aac6,0xf3081dd5,0x86a0e8bd,0x003dc12a,0x5fb89d79 + DD 0xf72e34d4,0xf615c33a,0x110eec35,0x0bd9ea40,0xc1dea34e,0x1c12bc5b,0x49ae4699,0x686584c9,0x8c97b942,0x13ad95d3,0x4e5c7562,0x4609561a,0xf2737f89,0x9e94a4ae,0x371c78b6,0xf57594c6 + DD 0xe3779ee3,0x0f0165fc,0xbd495d9e,0xe00e7f9d,0x20284e7a,0x1fa4efa2,0x47ac6219,0x4564bade,0xc4708e8e,0x90e6312a,0xa71e9adf,0x4f5725fb,0x3d684b9f,0xe95f55ae,0x1e94b415,0x47f7ccb1 + DD 0x8d946581,0x7322851b,0xbdf4a012,0xf0d13133,0x6584dae0,0xa3510f69,0x3c9f6c6d,0x03a7c171,0xe475381a,0x5be97f38,0x85823334,0xca1ba422,0x0be17dda,0xf83cc5c7,0x0b918c0f,0x158b1494 + DD 0x522e6b69,0xda3a77e5,0xbbcd6c18,0x69c908c3,0xd924fd56,0x1f1b9e48,0xaa4bb3f7,0x37c64e36,0xee478d7d,0x5a4fdbdf,0x0193f7a0,0xba75c8bc,0x56cd16df,0x84bc1e84,0x46fad151,0x1fb08f08 + DD 0x842e9f30,0x8a7cabf9,0x5eab83af,0xa331d4bf,0x017f2a6a,0xd272cfba,0x83aba0e3,0x27560abc,0x0e3a6b75,0x94b83387,0x6b9f50f5,0x25c6aea2,0xb5fdf6d0,0x803d691d,0xe6333514,0x03b77509 + DD 0x61a341c1,0x36178903,0x0cfd6142,0x3604dc60,0x8533316c,0x022295eb,0x44af2922,0x3dbde4ac,0x1c7eef69,0x898afc5d,0xd14f4fa1,0x58896805,0x203c21ca,0x05002160,0x40ef730b,0x6f0d1f30 + DD 0x196224f8,0x8e8c44d4,0x374d079d,0x75a4ab95,0x7d48f123,0x79085ecc,0x1bf65ad8,0x56f04d31,0xbda602b2,0xe220bf1c,0xf9612c69,0x73ee1742,0x084fd06b,0x76008fc8,0xf11380d1,0x4000ef9f + DD 0x12cfe297,0x48201b4b,0x292f74e5,0x3eee129c,0xc9e874e8,0xe1fe114e,0x92c5fc41,0x899b055c,0x3a39c8cf,0x4e477a64,0x78963cc9,0x82f09efe,0xd333f863,0x6fd3fd8f,0xdc949c63,0x85132b2a + DD 0x516eb17b,0x7e06a3ab,0xd2c7372b,0x73bec06f,0xba896da6,0xe4f74f55,0x8e9eb40f,0xbb4afef8,0xe61d66b0,0x2d75bec8,0xef29300b,0x02bda4b4,0x026baa5a,0x8bbaa8de,0xa07f4440,0xff54befd + DD 0xbe7a2af3,0xbd9b8b1d,0x4fb74a72,0xec51caa9,0x63879697,0xb9937a4b,0xec2687d5,0x7c9a9d20,0x6ef5f014,0x1773e44f,0xe90c6900,0x8abcf412,0x8142161e,0x387bd022,0xfcb6ff2a,0x50393755 + DD 0xed6def63,0x9813fd56,0x7d53106c,0x53cf6482,0x431f7ac1,0x991a35bd,0x63e65faf,0xf1e274dd,0x44cc7880,0xf63ffa3c,0x7c256981,0x411a426b,0x93a420e0,0xb698b9fd,0xae53f8fe,0x89fdddc0 + DD 0x32398baa,0x766e0722,0x5cfca031,0x205fee42,0x7a029cf2,0xa49f5341,0x4023890d,0xa88c68b8,0x7337aaa8,0xbc275041,0x0eb384f4,0x9ed364ad,0x29aba92f,0xe0816f85,0x04e38a88,0x2e9e1941 + DD 0x3dafd2d5,0x57eef44a,0x97ed98d8,0x35d1fae5,0x2307f9b1,0x50628c09,0xd6cba5c6,0x09d84aae,0x88aaa691,0x67071bc7,0xafe6cb03,0x2dea57a9,0x3d78ac01,0xdfe11bb4,0x7fd7aa51,0x7286418c + DD 0x77f7195a,0xfabf7709,0xadeb838f,0x8ec86167,0xbb4f012d,0xea1285a8,0x9a3eab3f,0xd6883503,0x309004c2,0xee5d24f8,0x13ffe95e,0xa96e4b76,0xbd223ea4,0x0cdffe12,0xb6739a53,0x8f5c2ee5 + DD 0xdd968198,0x5cb4aaa5,0x72413a6c,0xfa131c52,0x9536d903,0x53d46a90,0x48606d8e,0xb270f0d3,0xa053a3bc,0x518c7564,0x1a86caef,0x088254b7,0x0ab5efd0,0xb3ba8cb4,0x4605945d,0x5c59900e + DD 0xa1887395,0xecace1dd,0x932a65de,0x40960f36,0x3aa95529,0x9611ff5c,0x7c1e5a36,0xc58215b0,0xf0e1a524,0xd48c9b58,0xf590dfb8,0xb406856b,0x9cd95662,0xc7605e04,0xa33ecf82,0x0dd036ee + DD 0xc33156b3,0xa50171ac,0x4a80172e,0xf09d24ea,0x76dc8eef,0x4e1f72c6,0x5e3d44ee,0xe60caadc,0x979b1d8f,0x006ef8a6,0x97788d26,0x60908a1c,0x266feec0,0x6e08f95b,0x22e8c94e,0x618427c2 + DD 0x59145a65,0x3d613339,0xfa406337,0xcd9bc368,0x2d8a52a0,0x82d11be3,0x97a1c590,0xf6877b27,0xf5cbdb25,0x837a819b,0xde090249,0x2a4fd1d8,0x74990e5f,0x622a7de7,0x7945511b,0x840fa5a0 + DD 0x6558842d,0x30b974be,0x17f3d0a6,0x70df8c64,0x7542e46d,0x7c803520,0xe4ecc823,0x7251fe7f,0x5e9aac9a,0xe59134cb,0xf0045d71,0x11bb0934,0xdbcb1d4e,0x53e5d9b5,0x92defc91,0x8d97a905 + DD 0x7946d3f9,0xfe289327,0x07472273,0xe132bd24,0x1eb6ae86,0xeeeb510c,0xf0595067,0x777708c5,0x1297029e,0x18e2c8cd,0xbbf9305e,0x2c61095c,0x6b85d6d9,0xe466c258,0xda1ea530,0x8ac06c36 + DD 0xa1304668,0xa365dc39,0x07f89606,0xe4a9c885,0xacc7228d,0x65a4898f,0x84ca8303,0x3e2347ff,0xea7d23a3,0xa5f6fb77,0x672a71cd,0x2fac257d,0x7e6a44d3,0x6908bef8,0x891d3d7a,0x8ff87566 + DD 0x6b0cf82e,0xe58e90b3,0x2615b5e7,0x6438d246,0x669c145a,0x07b1f8fc,0x36f1e1cb,0xb0d8b2da,0xd9184c4d,0x54d5dadb,0xf93d9976,0x3dbb18d5,0xd1147d47,0x0a3e0f56,0xa0a48609,0x2afa8c8d + DD 0xbc36742c,0x275353e8,0xeea0ed90,0x898f427e,0x3e477b00,0x26f4947e,0x308741e3,0x8ad8848a,0xd74a2a46,0x6c703c38,0x9ba17ba2,0x5e3e05a9,0x4ab9a9e4,0xc1fa6f66,0x3841d6ec,0x474a2d9a + DD 0x653ae326,0x871239ad,0xa74cbb43,0x14bcf72a,0x20d4c083,0x8737650e,0x110ed4af,0x3df86536,0xb53ca555,0xd2d86fe7,0xabd5d538,0x688cb00d,0x1ad38468,0xcf81bda3,0xf01167b6,0x7ccfe3cc + DD 0x6c4c1fe6,0xcf4f47e0,0x298bbb79,0x557e1f1a,0x30d45a14,0xf93b974f,0x0baf97c4,0x174a1d2d,0xc51fbf53,0x7a003b30,0xee68b225,0xd8940991,0x1c0f4173,0x5b0aa7b7,0xa20a7153,0x975797c9 + DD 0xe3533d77,0x26e08c07,0x2e341c99,0xd7222e6a,0x8d2dc4ed,0x9d60ec3d,0x7c476cf8,0xbdfe0d8f,0x1d056605,0x1fe59ab6,0x86a8551f,0xa9ea9df6,0x47fb8d8c,0x8489941e,0x4a7f1b10,0xfeb874eb + DD 0x7ee0d98f,0xfe5fea86,0xdbf61864,0x201ad34b,0x37c031d4,0x45d8fe47,0x795f0822,0xd5f49fae,0xc7f4a40c,0xdb0fb291,0x730ddd92,0x2e69d9c1,0x49d76987,0x754e1054,0x7662db87,0x8a24911d + DD 0x60a71676,0x61fc1810,0xf66a8ad1,0xe852d1a8,0x6417231e,0x172bbd65,0x3babb11f,0x0d6de7bd,0xc8e347f8,0x6fde6f88,0x9bd99cc3,0x1c587547,0x34076950,0x78e54ed0,0x796e83ba,0x97f0f334 + DD 0x4924867a,0xe4dbe1ce,0x60b84917,0xbd5f51b0,0x3cb09a79,0x37530040,0xff1743d8,0xdb3fe0f8,0x556fa9db,0xed7894d8,0x23412fbf,0xfa262169,0xba7b9291,0x563be0db,0x0c9fb234,0x6ca8b8c0 + DD 0xbd763802,0xed406aa9,0x65303da1,0xc21486a0,0xc7e62ec4,0x61ae291e,0xdf99333e,0x622a0492,0xbb7a8ee0,0x7fd80c9d,0x6c01aedb,0xdc2ed3bc,0x08be74ec,0x35c35a12,0x469f671f,0xd540cb1a + DD 0xcf84f6c7,0xd16ced4e,0x2d090f43,0x8561fb9c,0x6f239db4,0x7e693d79,0x77bd0d94,0xa736f928,0x2c1950ee,0x07b4d929,0x56dc11b3,0xda177543,0x7a6a878e,0xa5dfbbaa,0x4decb08a,0x1c70cb29 + DD 0x6f0f7c50,0xfba28c8b,0x854dcc6d,0xa8eba2b8,0x36b78642,0x5ff8e89a,0xf6873adf,0x070c1c8e,0x6484d2e4,0xbbd3c371,0x0d414129,0xfb78318f,0x6ad93b0b,0x2621a39c,0xa9e917f7,0x979d74c2 + DD 0x61fb0428,0xfc195647,0xbee624d4,0x4d78954a,0xb8ae86fd,0xb94896e0,0xc91c8b13,0x6667ac0c,0x43bcf832,0x9f180512,0xa0010137,0xfbadf8b7,0xb3ba8aa7,0xc69b4089,0xe687ce85,0xfac4bacd + DD 0x977eab40,0x9164088d,0x2760b390,0x51f4c5b6,0x340dd553,0xd238238f,0xdb1d31c9,0x358566c3,0x5068f5ff,0x3a5ad69e,0xdaff6b06,0xf31435fc,0xd6debff0,0xae549a5b,0x75e01331,0x59e5f0b7 + DD 0x98559acf,0x5d492fb8,0x4db79b50,0x96018c2e,0x609f66aa,0x55f4a48f,0x4900a14f,0x1943b3af,0x15a40d39,0xc22496df,0x4c20f7c5,0xb2a44684,0x3b98404c,0x76a35afa,0xff5d1b77,0xbec75725 + DD 0xbea06444,0xb67aa163,0xf724b6f2,0x27e95bb2,0xd238c8ab,0x3c20e3e9,0xddd6ae17,0x1213754e,0x716e0f74,0x8c431020,0xffc095c2,0x6679c82e,0xd0ac2932,0x2eb3adf4,0x01bb7a76,0x2cc970d3 + DD 0x740f0e66,0x70c71f2f,0x2b6b23cc,0x545c616b,0xb40a8bd7,0x4528cfcb,0x2ab27722,0xff839633,0x025ac99a,0x049127d9,0x2b63e33b,0xd314d4a0,0x28d84519,0xc8c310e7,0xb3bc84ba,0x0fcb8983 + DD 0x38634818,0x2cc52261,0xb44c2e0b,0x501814f4,0x54dfdba3,0xf7e181aa,0xe759718c,0xcfd58ff0,0xd3b507a8,0xf90cdb14,0xc50bdad8,0x57bd478e,0x50e5f9aa,0x29c197e2,0xe40bc855,0x4db6eef8 + DD 0xd1fc0654,0x2cc8f21a,0x81269d73,0xc71cc963,0x077f49f9,0xecfbb204,0xca56b793,0xdde92571,0xf97ad8f7,0x9abed6a3,0x924de3bd,0xe6c19d3f,0xa140a800,0x8dce92f4,0x1337af07,0x85f44d1e + DD 0x09d64c52,0x5953c08b,0xf5df9749,0xa1b5e49f,0x52735f7d,0x336a8fb8,0x9add676b,0xb332b6db,0xb4511aa4,0x558b88a0,0xdbd5cc55,0x09788752,0xd8cd52bd,0x16b43b9c,0xc2a2696b,0x7f0bc5a0 + DD 0xc11f61ef,0x146e12d4,0x3a83e79e,0x9ce10754,0x6cbfca15,0x08ec73d9,0x5b49653f,0x09ff29ad,0xe7da946e,0xe31b72bd,0xee80a4f2,0xebf9eb3b,0x17598ce4,0xd1aabd08,0x53f37e80,0x18b5fef4 + DD 0x5958cd79,0xd5d5cdd3,0x1d373114,0x3580a1b5,0xfa935726,0xa36e4c91,0xef20d760,0xa38c534d,0x2ff5845b,0x7088e40a,0xbd78177f,0xe5bb40bd,0x857f9920,0x4f06a7a8,0xe968f05d,0xe3cc3e50 + DD 0xe5682d26,0x1d68b7fe,0xaec7f87c,0x5206f76f,0x041951ab,0x41110530,0xd4b5a71a,0x58ec52c1,0x0f75cf9a,0xf3488f99,0xba82d0d5,0xf411951f,0x618895ab,0x27ee75be,0x6d8aab14,0xeae060d4 + DD 0x7fb54dc2,0x9ae1df73,0x25963649,0x1f3e391b,0xfe055081,0x242ec32a,0x8491c9bd,0x5bd450ef,0x981eb389,0x367efc67,0x3a0550d5,0xed7e1928,0xab3ce75c,0x362e776b,0x1f24c523,0xe890e308 + DD 0xfeccef76,0xb961b682,0x8bba6d92,0x8b8e11f5,0x2b2375c4,0x8f2ccc4c,0xe2f86cfa,0x0d7f7a52,0x9efe5633,0xfd94d30a,0x5451f934,0x2d8d246b,0x244e6a00,0x2234c6e3,0xddec8c50,0xde2b5b0d + DD 0xbf776f5b,0x2ce53c5a,0x60357b05,0x6f724071,0x71bf3f7a,0xb2593717,0x440c4a9f,0x87d2501c,0x87b05340,0x440552e1,0x21624c32,0xb7bf7cc8,0x22facddb,0x4155a6ce,0x889837ef,0x5a4228cb + DD 0xfd4fd671,0xef87d6d6,0xc2daa10e,0xa233687e,0x03c0eb96,0x75622244,0x8bf19be6,0x7632d184,0x40735ff4,0x05d0f8e9,0xc00931f1,0x3a3e6e13,0xdafe3f18,0x31ccde6a,0xcfe51207,0xf381366a + DD 0x60167d92,0x24c222a9,0x7529f18c,0x62f9d6f8,0x0353b114,0x412397c0,0xef808043,0x334d89dc,0x2a4383ce,0xd9ec63ba,0x5cf92ba0,0xcec8e937,0xc8be74c0,0xfb8b4288,0x105d4391,0x67d6912f + DD 0x1b913149,0x7b996c46,0x3a4e02da,0x36aae2ef,0x972de594,0xb68aa003,0x4ec6d545,0x284ec70d,0x61391d54,0xf3d2b2d0,0xfe114e92,0x69c5d5d6,0xb4482dff,0xbe0f00b5,0xf5bf33c5,0xe1596fa5 + DD 0x96a71cba,0x10595b56,0xfdcadeb7,0x944938b2,0xfccd8471,0xa282da4c,0x0d37bfe1,0x98ec05f3,0x0698304a,0xe171ce1b,0x21bdf79b,0x2d691444,0x1b21dec1,0xd0cd3b74,0x16a15f71,0x712ecd8b + DD 0x00fd56e1,0x8d4c00a7,0xf9527c18,0x02ec9692,0x4a3e42e1,0x21c44937,0x1392ae0a,0x9176fbab,0x44b7b618,0x8726f1ba,0xf1de491c,0xb4d7aae9,0x07b582c0,0xf91df7b9,0xef60aa3a,0x7e116c30 + DD 0x466265d7,0x99270f81,0x4df7adf0,0xb15b6fe2,0xf9738f7f,0xfe33b2d3,0xd6d70f95,0x48553ab9,0xc21e94db,0x2cc72ac8,0xbdc0bbee,0x795ac38d,0x2e40478f,0x0a1be449,0x052bde55,0x81bd3394 + DD 0x56b3c4f2,0x63c8dbe9,0x904177cc,0x017a99cf,0x4d010fc1,0x947bbddb,0xbb2c9b21,0xacf9b00b,0x47173611,0x2970bc8d,0xac7d756f,0x1a4cbe08,0x67d541a2,0x06d9f4aa,0x59c2cf44,0xa3e8b689 + DD 0x4d88f1dd,0xaad066da,0x7ad35dea,0xc604f165,0x4478ca67,0x7edc0720,0xba02ce06,0xa10dfae0,0xaf36f4e4,0xeceb1c76,0xaf3f8f48,0x994b2292,0x77c8a68c,0xbf9ed77b,0x51744c9d,0x74f544ea + DD 0x8113a757,0x82d05bb9,0x8a9885e4,0x4ef2d2b4,0x1aa7865f,0x1e332be5,0x290d1a52,0x22b76b18,0x44351683,0x308a2310,0xa3f22840,0x9d861896,0x841ed947,0x5959ddcd,0x154b73bf,0x0def0c94 + DD 0x4c7c15e0,0xf0105417,0x3a277c32,0x539bfb02,0xf9dccf5f,0xe699268e,0x0247a3bd,0x9f5796a5,0x4f157269,0x8b839de8,0x7a30196b,0xc825c1e5,0xdc8a5a91,0x6ef0aabc,0x498b7fe6,0xf4a8ce6c + DD 0x70cbac78,0x1cce35a7,0xf6b23958,0x83488e9b,0xd76cb011,0x0341a070,0xae1b2658,0xda6c9d06,0xdd648c52,0xb701fb30,0x52fb9fd1,0x994ca02c,0x6f563086,0x06933117,0x17856bab,0x3d2b8100 + DD 0x5963a46e,0xe89f48c8,0xa99e61c7,0x658ab875,0x4b8517b4,0x6e296f87,0xfc1bc656,0x36c4fcdc,0xa3906def,0xde5227a1,0x62418945,0x9fe95f57,0xfdd96cde,0x20c91e81,0xda4480de,0x5adbe47e + DD 0x396de2b6,0xa009370f,0xf0ecc7bd,0x98583d4b,0xe51d0672,0xf44f6b57,0x556b1984,0x03d6b078,0xb0b64912,0x27dbdd93,0x15687b09,0x9b3a3434,0x51ec20a9,0x0dba6461,0xff28187c,0xec93db7f + DD 0x66e48bdd,0x00ff8c24,0x11ccd78e,0x2514f2f9,0xe1250603,0xeba11f4f,0x243fa156,0x8a22cd41,0xb283e4c6,0xa4e58df4,0x8b39783f,0x78c29859,0xa5259809,0x5235aee2,0x0e0227dd,0xc16284b5 + DD 0x1338830d,0xa5f57916,0xd2123fca,0x6d4b8a6b,0xf9c546f8,0x236ea68a,0xfa608d36,0xc1d36873,0x8d436d13,0xcd76e495,0x8fb080af,0xd4d9c221,0xe8ad3fb5,0x665c1728,0xb3d572e0,0xcf1ebe4d + DD 0x584c5e20,0xa7a8746a,0xb9dc7035,0x267e4ea1,0xb9548c9b,0x593a15cf,0x4bd012f3,0x5e6e2135,0x8c8f936e,0xdf31cc6a,0xb5c241dc,0x8af84d04,0x345efb86,0x63990a6f,0xb9b962cb,0x6fef4e61 + DD 0x25722608,0xf6368f09,0x131cf5c6,0x131260db,0xfab4f7ac,0x40eb353b,0x37eee829,0x85c78880,0xc3bdf24e,0x4c1581ff,0xf5c3c5a8,0x5bff75cb,0xa14e6f40,0x35e8c83f,0x0295e0ca,0xb81d1c0f + DD 0xf43a730f,0xfcde7cc8,0x33ab590e,0xe89b6f3c,0xad03240b,0xc823f529,0x98bea5db,0x82b79afe,0x962fe5de,0x568f2856,0x60c591f3,0x0c590adb,0x4a28a858,0x1fc74a14,0xb3203f4c,0x3b662498 + DD 0x6c39765a,0x91e3cf0d,0xac3cca0b,0xa2db3acd,0xcb953b50,0x288f2f08,0xcf43cf1a,0x2414582c,0x60eee9a8,0x8dec8bbc,0x729aa042,0x54c79f02,0x6532f5d5,0xd81cd5ec,0xcf82e15f,0xa672303a + DD 0x719c0563,0x376aafa8,0xbc5fc79f,0xcd8ad2dc,0xcb750cd3,0x303fdb9f,0x4418b08e,0x14ff052f,0x3e2d6520,0xf75084cf,0x144ed509,0x7ebdf0f8,0xd3f25b98,0xf43bf0f2,0xa354d837,0x86ad71cf + DD 0x26f43572,0xb827fe92,0x5d824758,0xdfd3ab5b,0x539094c1,0x315dd23a,0x66623d68,0x85c0e37a,0x7be19ae0,0x575c7972,0xdf0d36b5,0x616a3396,0x26b1ff7e,0xa1ebb3c8,0x140ad453,0x635b9485 + DD 0xda430c0b,0x92bf3cda,0x3a96dac6,0x4702850e,0x15ac326a,0xc91cf0a5,0xab8c25e4,0x95de4f49,0xe265c17c,0xb01bad09,0x087b3881,0x24e45464,0xe1fac5ca,0xd43e583c,0x6ead97a6,0xe17cb318 + DD 0x74dcec46,0x6cc39243,0x54c2b73f,0x33cfc02d,0xf26cd99c,0x82917844,0xd1773f89,0x8819dd95,0x0871f427,0x09572aa6,0xf6f01c34,0x8e0cf365,0xbff1f5af,0x7fa52988,0xe75e8e50,0x4eb357ea + DD 0x868af75d,0xd9d0c8c4,0x45c8c7ea,0xd7325cff,0xcc81ecb0,0xab471996,0x611824ed,0xff5d55f3,0x1977a0ee,0xbe314541,0x722038c6,0x5085c4c5,0xf94bb495,0x2d5335bf,0xc8e2a082,0x894ad8a6 + DD 0xada35438,0x5c3e2341,0x049b8c4e,0xf4a9fc89,0x9f17cf34,0xbeeb355a,0x6c91fe10,0x3f311e0e,0x92ab9891,0xc2d20038,0x3e8ce9a9,0x257bdcc1,0x88c53bee,0x1b2d9789,0xcdba143a,0x927ce89a + DD 0x523db280,0xb0a32cca,0x50d43783,0x5c889f8a,0x4897d16f,0x503e04b3,0x08f5f2e8,0x8cdb6e78,0x179c8e74,0x6ab91cf0,0x48211d60,0xd8874e52,0xea851200,0xf948d4d5,0xe6f9840a,0x4076d41e + DD 0x47b517ea,0xc20e263c,0x30685e5e,0x79a448fd,0xf90631a0,0xe55f6f78,0xa79e6346,0x88a790b1,0x80969fe8,0x62160c7d,0x41491bb9,0x54f92fd4,0x5c957526,0xa6645c23,0xbea3ce7b,0xf44cc5ae + DD 0x8b1e68b7,0xf7628327,0x303f29d3,0xc731ad7a,0x57d03ecb,0xfe5a9ca9,0x41bc97a7,0x96c0d50c,0x9b4f7f24,0xc4669fe7,0x3d9967ef,0xfdd781d8,0x5d2c208d,0x7892c7c3,0xae545cb3,0x8bf64f7c + DD 0x467be912,0xc01f862c,0xc73d30cc,0xf4c85ee9,0x6ab83ec7,0x1fa6f4be,0x4e3e3cf9,0xa07a3c1c,0x0c00beb3,0x87f8ef45,0x000d4c3e,0x30e2c2b3,0xfe08bf5b,0x1aa00b94,0x9224ef52,0x32c133aa + DD 0x32e5685d,0x38df16bb,0x58e6f544,0x68a9e069,0xcdc5ebc6,0x495aaff7,0x378b135f,0xf894a645,0x09e27ecf,0xf316350a,0x58f7179d,0xeced201e,0xe97861ba,0x2eec273c,0xd693be2e,0x47ec2cae + DD 0xf68367ce,0xfa4c97c4,0xbe5a5755,0xe4f47d0b,0xb298a979,0x17de815d,0xc177dc7d,0xd7eca659,0x49ded0a3,0x20fdbb71,0xfb34d3c5,0x4cb2aad4,0x60858a33,0x2cf31d28,0xa24aa40f,0x3b6873ef + DD 0x2c11bb37,0x540234b2,0xed4c74a3,0x2d0366dd,0xeec5f25d,0xf9a968da,0x67b63142,0x36601068,0x68d7b6d4,0x07cd6d2c,0x0c842942,0xa8f74f09,0x7768b1ee,0xe2751404,0xfe62aee4,0x4b5f7e89 + DD 0x89070d26,0xc6a77177,0xdd1c8bc7,0xa1f28e4e,0x469e1f17,0xea5f4f06,0xfbdb78e0,0x78fc242a,0x8b0588f1,0xc9c7c592,0x1535921e,0xb6b7a0fd,0xbde5ae35,0xcc5bdb91,0x12ff1864,0xb42c485e + DD 0xdbab98aa,0xa1113e13,0xa17b1024,0xde9d469b,0xc0462d3a,0x23f48b37,0x7c5c078d,0x3752e537,0x15544eb9,0xe3a86add,0x80fba279,0xf013aea7,0xf22001b5,0x8b5bb76c,0xf02891ab,0xe617ba14 + DD 0x936219d3,0xd39182a6,0xae51cb19,0x5ce1f194,0xbf07a74c,0xc78f8598,0x22cbf1bc,0x6d7158f2,0xe300ce18,0x3b846b21,0x2d11275d,0x35fba630,0xa0239b9b,0x5fe25c36,0xdf05d940,0xd8beb35d + DD 0x1f7e320d,0x4db02bb0,0x6da320ea,0x0641c364,0x821389a3,0x6d95fa5d,0x8fcd8e3d,0x92699748,0xceb6c143,0x316fef17,0xd933762b,0x67fcb841,0x118b17f8,0xbb837e35,0x9fd24821,0x4b92552f + DD 0x46aca793,0xae6bc70e,0xe579311b,0x1cf0b0e4,0x5802f716,0x8dc631be,0xbddbee4d,0x099bdc6f,0x0caf8b05,0xcc352bb2,0x72d63df2,0xf74d505a,0x91c4f408,0xb9876d4b,0x9e229b2d,0x1ce18473 + DD 0x83abdb4a,0x49507597,0xdee84b18,0x850fbcb6,0x609e67dc,0x6325236e,0x9336c6d8,0x04d831d9,0xfa12d45d,0x8deaae3b,0x4746e246,0xe425f8ce,0x24f5f31e,0x8004c175,0xad62c3b7,0xaca16d8f + DD 0x9152f934,0x0dc15a6a,0xed0e12c1,0xf1235e5d,0xda477dac,0xc33c06ec,0xb2ea0006,0x76be8732,0x0c0cd313,0xcf3f7831,0xa614260d,0x3c524553,0xcab22d15,0x31a756f8,0x77827a20,0x03ee10d1 + DD 0x1994ef20,0xd1e059b2,0x638ae318,0x2a653b69,0x2f699010,0x70d5eb58,0x09f5f84a,0x279739f7,0x8b799336,0x5da4663c,0x203c37eb,0xfdfdf14d,0xa1dbfb2d,0x32d8a9dc,0x77d48f9b,0xab40cff0 + DD 0xd20b42d5,0xc018b383,0x9f78845f,0xf9a810ef,0xbdba9df0,0x40af3753,0x131dfdf9,0xb90bdcfc,0xf01ab782,0x18720591,0x6af12a88,0xc823f211,0x0dc14401,0xa51b80f3,0xfb2dfbe3,0xde248f77 + DD 0x0cafe751,0xef5a44e5,0xd4dcd221,0x73997c9c,0xde854024,0x32fd86d1,0xa09b84bb,0xd5b53adc,0xdcedd8d1,0x008d7a11,0x74b32c84,0x406bd1c8,0x05dde8b1,0x5d4472ff,0xfce2b32f,0x2e25f2cd + DD 0x29dfc254,0xbec0dd5e,0x2b98b267,0x4455fcf6,0xc72df2ad,0x0b4d43a5,0x48a75397,0xea70e6be,0x5820f3bf,0x2aad6169,0x9e37f68f,0xf410d2dd,0x7be5ac83,0x70fb7dba,0x36ec3eec,0x636bb645 + DD 0x9754e21c,0x27104ea3,0x8d63c373,0xbc87a3e6,0x4109db9a,0x483351d7,0x60134da7,0x0fa724e3,0xb0720b16,0x9ff44c29,0x06aceead,0x2dd0cf13,0xe26929a6,0x5942758c,0xb766a92b,0x96c5db92 + DD 0x5f18395e,0xcec7d4c0,0x1f80d032,0xd3f22744,0xcb86075b,0x7a68b37a,0xafef92db,0x074764dd,0x7bc7f389,0xded1e950,0xb9756460,0xc580c850,0x7da48157,0xaeeec2a4,0x82c587b3,0x3f0b4e7f + DD 0xa9f19c53,0x231c6de8,0x6974e34e,0x5717bd73,0xf1508fa9,0xd9e1d216,0xdadaa124,0x9f112361,0x823b7348,0x80145e31,0xac634069,0x4dd8f0d5,0x2297c258,0xe3d82fc7,0x9cee7431,0x276fcfee + DD 0x2bc0aea9,0x8eb61b5e,0xde329431,0x4f668fd5,0x38e4b87e,0x03a32ab1,0x73d0ef0b,0xe1374517,0x853ac983,0x1a46f7e6,0x68e78a57,0xc3bdf42e,0x2ea96dd1,0xacf20785,0xf1638460,0xa10649b9 + DD 0x879fbbed,0xf2369f0b,0xda9d1869,0x0ff0ae86,0x56766f45,0x5251d759,0x2be8d0fc,0x4984d8c0,0xd21008f0,0x7ecc95a6,0x3a1a1c49,0x29bd54a0,0xd26c50f3,0xab9828c5,0x51d0d251,0x32c0087c + DD 0x0c1cdb26,0x9bac3ce6,0x557ca205,0xcd94d947,0x9db1fdcd,0x1b1bd598,0xa3d8b149,0x0eda0108,0x56152fcc,0x95066610,0xe7192b33,0xc2f037e6,0xc92e05a4,0xdeffb41a,0xc2f6c62e,0x1105f6c2 + DD 0x8733913c,0x68e73500,0x3f3adc40,0xcce86163,0x38a278e9,0xf407a942,0x2ab21292,0xd13c1b9d,0x1c74cf5c,0x93ed7ec7,0xf1a4c1b4,0x8887dc48,0x4b3a11f1,0x3830ff30,0x58937cb6,0x358c5a3c + DD 0x89022829,0x027dc404,0x3b798f79,0x40e93977,0x38be6ead,0x90ad3337,0xf34c0a5d,0x9c23f6bc,0xfbffd8bb,0xd1711a35,0x1949d3dd,0x60fcfb49,0x7825d93a,0x09c8ef4b,0xa0a8c968,0x24233cff + DD 0xe6d982af,0x67ade46c,0xe7544d7c,0xebb6bf3e,0x3d8bd087,0xd6b9ba76,0x4dc61280,0x46fe382d,0xb5bdbd75,0xbd39a7e8,0xb8f228fe,0xab381331,0xce1c4300,0x0709a77c,0xf337ceac,0x6a247e56 + DD 0x636288be,0x8f34f21b,0xc8a7c305,0x9dfdca74,0xea919e04,0x6decfd1b,0x8e1991f8,0xcdf2688d,0xd0f8a67e,0xe607df44,0x0b58d010,0xd985df4b,0x0c24f8f4,0x57f834c5,0xa0bf01ae,0xe976ef56 + DD 0xa1c32373,0x536395ac,0x734c0a13,0x351027aa,0x5e6bd5bc,0xd2f1b5d6,0x223debed,0x2b539e24,0x0eaa1d71,0xd4994cec,0x661dcf65,0x2a83381d,0x7b54c740,0x5f1aed2f,0xd6dda5ee,0x0bea3fa5 + DD 0x36cc6134,0x9d4fb684,0xc0a443dd,0x8eb9bbf3,0x383b7d2a,0xfc500e2e,0x5b775257,0x7aad621c,0x0a8f7cc0,0x69284d74,0x07562d65,0xe820c2ce,0x499758ee,0xbf9531b9,0x6ee0cc2d,0x73e95ca5 + DD 0xfbaf50a5,0xf61790ab,0x684e0750,0xdf55e76b,0xf176b005,0xec516da7,0x7a2dddc7,0x575553bb,0x553afa73,0x37c87ca3,0x4d55c251,0x315f3ffc,0xaf3e5d35,0xe846442a,0x6495ff28,0x61b91149 + DD 0xfa326dc3,0x23cc95d3,0x18fc2cea,0x1df4da1f,0xd0a37d59,0x24bf9adc,0x320d6e1e,0xb6710053,0x618344d1,0x96f9667e,0xa06445af,0xcc7ce042,0xd68dbc3a,0xa02d8514,0x280b5a5b,0x4ea109e4 + DD 0xb40961bf,0x5741a7ac,0x6aa56bfa,0x4ada5937,0x02b765d1,0x7feb9145,0xe6ad1582,0x561e97be,0xda3982f5,0xbbc4a5b6,0xb546f468,0x0c2659ed,0x59612d20,0xb8e7e6aa,0xac19e8e0,0xd83dfe20 + DD 0xb835398c,0x8530c45f,0xb38a41c2,0x6106a8bf,0x35f5dcdb,0x21e8f9a6,0xcae498ed,0x39707137,0xd8249f00,0x70c23834,0xab2537a0,0x9f14b58f,0x5f61c0c2,0xd043c365,0x09a194a7,0xdc5926d6 + DD 0x8e77738a,0xddec0339,0xfba46426,0xd07a63ef,0xee7f6e86,0x2e58e79c,0xff32d241,0xe59b0459,0x20fa0338,0xc5ec84e5,0xeaff5ace,0x97939ac8,0xb4a38313,0x0310a4e3,0x8f9d9885,0x9115fba2 + DD 0x5fadf8c3,0x8dd710c2,0xce19c0e2,0x66be38a2,0x4cfe5022,0xd42a279c,0x0e24e1b8,0x597bb530,0xc153ca7f,0x3cde86b7,0x707d63bd,0xa8d30fb3,0xbd60d21e,0xac905f92,0x7b9a54ab,0x98e7ffb6 + DD 0xe9726a30,0xd7147df8,0xafce3533,0xb5e216ff,0x2ff1ec40,0xb550b799,0xa1e953fd,0x6b613b87,0x792d5610,0x87b88dba,0xa190fbe1,0x2ee1270a,0x2ef581da,0x02f4e2dc,0xeff82a95,0x016530e4 + DD 0x8fd6ee89,0xcbb93dfd,0x46848fff,0x16d3d986,0x1da47adf,0x600eff24,0x0ad47a71,0x1b9754a0,0x70c33b98,0x8f9266df,0xdf34186e,0xaadc87ae,0x4ad24132,0x0d2ce8e1,0x19946eba,0x8a47cbfc + DD 0x62b5f3af,0x47feeb66,0x0abb3734,0xcefab561,0x19f35cb1,0x449de60e,0x157f0eb9,0x39f8db14,0x3c61bfd6,0xffaecc5b,0x41216703,0xa5a4d41d,0x224e1cc2,0x7f8fabed,0x871ad953,0x0d5a8186 + DD 0xd22da9a9,0xf10774f7,0xcc8a9b0d,0x45b8a678,0xbdc32cff,0xd9c2e722,0x337202a5,0xbf71b5f5,0x69fc4db9,0x95c57f2f,0x765d01e1,0xb6dad34c,0xcb904635,0x7e0bd13f,0x763a588c,0x61751253 + DD 0x81af2c2d,0xd85c2997,0x81b9d7da,0xc0f7d9c4,0x08533e8d,0x838a34ae,0x311d8311,0x15c4cb08,0x8e121e14,0x97f83285,0x85000a5f,0xeea7dc1e,0x5d256274,0x0c6059b6,0xb95075c0,0xec9beace + DD 0x1df97828,0x173daad7,0xa8937877,0xbf851cb5,0x01646f3c,0xb083c594,0x50c6d352,0x3bad30cf,0x496bbcea,0xfeb2b202,0x18a1e8ba,0x3cf9fd4f,0x1c066029,0xd26de7ff,0x4e9ed4f8,0x39c81e9e + DD 0x7b390d35,0xd8be0cb9,0x964aab27,0x01df2bbd,0xc3ef64f8,0x3e8c1a65,0x716ed1dd,0x567291d1,0x5f5406d3,0x95499c6c,0x5ba8e23f,0x71fdda39,0xd5096ece,0xcfeb320e,0xca66dd16,0xbe7ba92b + DD 0xc6fb5a7d,0x4608d36b,0x6d2dd0e0,0xe3eea15a,0x8f97a36a,0x75b0a3eb,0x1c83de1e,0xf59814cc,0x1c33c23f,0x56c9c5b0,0x6faa4136,0xa96c1da4,0xde316551,0x46bf2074,0x1f756c8f,0x3b866e7b + DD 0x1495ed6b,0x727727d8,0xb682dce7,0xb2394243,0x758610f3,0x8ab8454e,0x857d72a4,0xc243ce84,0xdbbf370f,0x7b320d71,0x78e0f7ca,0xff9afa37,0xea7b523f,0x0119d1e0,0x058c7d42,0xb997f8cb + DD 0x37bbb184,0x285bcd2a,0xa45d1fa6,0x51dcec49,0xe29634cb,0x6ade3b64,0x26b86ef1,0x080c94a7,0x2283fbe3,0xba583db1,0x5a9315ed,0x902bddc8,0x86964bec,0x07c1ccb3,0xb6258301,0x78f4eacf + DD 0x56f90823,0x4bdf3a49,0x741d777b,0xba0f5080,0xf38bf760,0x091d71c3,0x9b625b02,0x9633d50f,0xb8c9de61,0x03ecb743,0x5de74720,0xb4751254,0x74ce1cb2,0x9f9defc9,0x00bd32ef,0x774a4f6a + DD 0x73848f22,0xaca385f7,0xf3f8558e,0x53dad716,0x93c471f9,0xab7b34b0,0x19644bc7,0xf530e069,0xdd59d31a,0x3d9fb1ff,0x08daa795,0x4382e0df,0xd5cc88d7,0x165c6f4b,0x4a18c900,0xeaa392d5 + DD 0x648024ee,0x94203c67,0x8c2fabcd,0x188763f2,0xbbaec835,0xa80f87ac,0xf29d8d54,0x632c96e0,0x4c00a95e,0x29b0a60e,0xe011e9fa,0x2ef17f40,0x15b77223,0xf6c0e1d1,0x14b04e32,0xaaec2c62 + DD 0x3d84e58c,0xd35688d8,0x958571db,0x2af5094c,0x760682a6,0x4fff7e19,0xe39a407c,0x4cb27077,0x4ff0e321,0x0f59c547,0x1b34c8ff,0x169f34a6,0x52bc1ba7,0x2bff1096,0x83583544,0xa25423b7 + DD 0x0ac8b782,0x5d55d5d5,0x2db3c892,0xff6622ec,0x6b8bb642,0x48fce741,0x69d7e3dc,0x31d6998c,0xcadcaed0,0xdbaf8004,0xd81d053c,0x801b0142,0x59630ec6,0x94b189fc,0xaf762c8e,0x120e9934 + DD 0xfdc6a404,0x53a29aa4,0xa1909948,0x19d8e01e,0xd7e89681,0x3cfcabf1,0x4e132d37,0x3321a50d,0xe9a86111,0xd0496863,0x06a3bc65,0x8c0cde61,0xfc9f8eef,0xaf866c49,0xff7f5141,0x2066350e + DD 0xe56ddfbd,0x4f8a4689,0xfe32983a,0xea1b0c07,0x873cb8cb,0x2b317462,0x2d93229f,0x658deddc,0x0f64ef58,0x65efaf4d,0x730cc7a8,0xfe43287d,0x3d047d70,0xaebc0c72,0xd92d26c9,0x92efa539 + DD 0x94b56526,0x06e78457,0x0961002d,0x415cb80f,0x76dcb10f,0x89e5c565,0xff9259fe,0x8bbb6982,0x9abc2668,0x4fe8795b,0x1e678fb1,0xb5d4f534,0x7b7da2b9,0x6601f3be,0xa13d6805,0x98da59e2 + DD 0x01799a52,0x190d8ea6,0xb86d2952,0xa20cec41,0x7fff2a7c,0x3062ffb2,0x79f19d37,0x741b32e5,0x4eb57d47,0xf80d8181,0x16aef06b,0x7a2d0ed4,0x1cecb588,0x09735fb0,0xc6061f5b,0x1641caaa + DD 0x20151427,0x7f99824f,0x92430206,0x206828b6,0xe1112357,0xaa9097d7,0x09e414ec,0xacf9a2f2,0x27915356,0xdbdac9da,0x001efee3,0x7e0734b7,0xd2b288e2,0x54fab5bb,0xf62dd09c,0x4c630fc4 + DD 0x1ac2703b,0x8537107a,0x6bc857b5,0xb49258d8,0xbcdaccd1,0x57df14de,0xc4ae8529,0x24ab68d7,0x734e59d0,0x7ed8b5d4,0xc495cc80,0x5f8740c8,0x291db9b3,0x84aedd5a,0x4fb995be,0x80b360f8 + DD 0x5fa067d1,0xae915f5d,0x9668960c,0x4134b57f,0xa48edaac,0xbd3656d6,0xfc1d7436,0xdac1e3e4,0xd81fbb26,0x674ff869,0xb26c33d4,0x449ed3ec,0xd94203e8,0x85138705,0xbeeb6f4a,0xccde538b + DD 0xa61a76fa,0x55d5c68d,0xca1554dc,0x598b441d,0x773b279c,0xd39923b9,0x36bf9efc,0x33331d3c,0x298de399,0x2d4c848e,0xa1a27f56,0xcfdb8e77,0x57b8ab70,0x94c855ea,0x6f7879ba,0xdcdb9dae + DD 0x019f2a59,0x7bdff8c2,0xcb4fbc74,0xb3ce5bb3,0x8a9173dd,0xea907f68,0x95a75439,0x6cd3d0d3,0xefed021c,0x92ecc4d6,0x6a77339a,0x09a9f9b0,0x7188c64a,0x87ca6b15,0x44899158,0x10c29968 + DD 0xed6e82ef,0x5859a229,0x65ebaf4e,0x16f338e3,0x5ead67ae,0x0cd31387,0x54ef0bb4,0x1c73d228,0x74a5c8c7,0x4cb55131,0x7f69ad6a,0x01cd2970,0xe966f87e,0xa04d00dd,0x0b7b0321,0xd96fe447 + DD 0x88fbd381,0x342ac06e,0x5c35a493,0x02cd4a84,0x54f1bbcd,0xe8fa89de,0x2575ed4c,0x341d6367,0xd238202b,0xebe357fb,0xa984ead9,0x600b4d1a,0x52436ea0,0xc35c9f44,0xa370751b,0x96fe0a39 + DD 0x7f636a38,0x4c4f0736,0x0e76d5cb,0x9f943fb7,0xa8b68b8b,0xb03510ba,0x9ed07a1f,0xc246780a,0x6d549fc2,0x3c051415,0x607781ca,0xc2953f31,0xd8d95413,0x955e2c69,0x7bd282e3,0xb300fadc + DD 0x87e9189f,0x81fe7b50,0xf42dda27,0xdb17375c,0xcf0a5904,0x22f7d896,0xebe348e6,0xa0e57c5a,0xf40e3c80,0xa61011d3,0x8db705c5,0xb1189321,0x50fedec3,0x4ed9309e,0x4d6d5c1d,0xdcf14a10 + DD 0x55691342,0x056c265b,0x91049dc7,0xe8e08504,0xc9bae20a,0x131329f5,0xd9dccdb4,0x96c8b3e8,0xfb4ee6b4,0x8c5ff838,0x41e8ccf0,0xfc5a9aeb,0xfae050c6,0x7417b764,0x00452080,0x0953c3d7 + DD 0x38dfe7e8,0x21372682,0x2bb79d4b,0xea417e15,0x76e7cf2d,0x59641f1c,0xea0bcfcc,0x271e3059,0x7253ecbd,0x624c7dfd,0x4fca6186,0x2f552e25,0x4d866e9c,0xcbf84ecd,0xf68d4610,0x73967709 + DD 0xc27901b4,0xa14b1163,0x899b8bf3,0xfd9236e0,0xcbc6da0a,0x42b091ec,0x5ad1d297,0xbb1dac6f,0xa91cf76e,0x80e61d53,0xd31f1ee7,0x4110a412,0x13efcf77,0x2d87c3ba,0xdf450d76,0x1f374bb4 + DD 0x0d188dab,0x5e78e2f2,0xf4b885ef,0xe3968ed0,0x7314570f,0x46c0568e,0x01170521,0x31616338,0x4f0c8afe,0x18e1e7e2,0xdeea78da,0x4caa75ff,0x7c5d8a51,0x82db67f2,0x6f505370,0x36a44d86 + DD 0x0333974f,0xd72c5bda,0x27a70146,0x5db516ae,0x210ef921,0x34705281,0x0c9c38e5,0xbff17a8f,0x12476da1,0x78f4814e,0x33c16980,0xc1e16613,0x424d4bca,0x9e5b386f,0xc85740de,0x4c274e87 + DD 0x6c2f5226,0xb6a9b88d,0x550d7ca8,0x14d1b944,0x1fc41709,0x580c85fc,0x54c6d519,0xc1da368b,0xd5113cf7,0x2b0785ce,0x5a34708f,0x0670f633,0x15cc3f88,0x46e23767,0x50c72c8f,0x1b480cfa + DD 0x4147519a,0x20288602,0x26b372f0,0xd0981eac,0xa785ebc8,0xa9d4a7ca,0xdbdf58e9,0xd953c50d,0xfd590f8f,0x9d6361cc,0x44e6c917,0x72e9626b,0x22eb64cf,0x7fd96110,0x9eb288f3,0x863ebb7e + DD 0x6aca8ee7,0x6e6ab761,0xd7b40358,0x97d10b39,0x1e5feb0d,0x1687d377,0x8265a27a,0xc83e50e4,0xc954b313,0x8f75a9fe,0x310d1f61,0xcc2e8f47,0x6557d0e0,0xf5ba81c5,0x3eaf6207,0x25f9680c + DD 0x4354080b,0xf95c6609,0x7bf2fe1c,0x5225bfa5,0x5c7d98fa,0xc5c004e2,0x019aaf60,0x3561bf1c,0xba151474,0x5e6f9f17,0xb04f6eca,0xdec2f934,0x269acb1e,0x64e368a1,0x0cdda493,0x1332d9e4 + DD 0xdf23de05,0x60d6cf69,0x009339a0,0x66d17da2,0x0a693923,0x9fcac985,0xed7c6a6d,0xbcf057fc,0xf0b5662c,0xc3c5c8c5,0xdcba4f24,0x25318dd8,0x082b69ff,0x60e8cb75,0x1e728c01,0x7c23b3ee + DD 0x097e4403,0x15e10a0a,0x19854665,0xcb3d0a86,0xd67d4826,0x88d8e211,0x0b9d2839,0xb39af66e,0xbd475ca8,0xa5f94588,0xc077b80b,0xe06b7966,0xda27c26c,0xfedb1485,0xfe0fd5e0,0xd290d33a + DD 0xf34fb0fa,0xa40bcc47,0x1fb1ab09,0xb4760cc8,0xa273bfe3,0x8fca0993,0xf70b213c,0x13e4fe07,0xfdb05163,0x3bcdb992,0x0c2b19b6,0x8c484b11,0xaaf2e3e2,0x1acb815f,0xb89ff1b4,0xc6905935 + DD 0x586e74e1,0xb2ad6f9d,0x67b80484,0x488883ad,0x369c3ddb,0x758aa2c7,0x9f9afd31,0x8ab74e69,0x5e21beb1,0x10fc2d28,0x318c42f9,0x3484518a,0x53cf40c3,0x377427dc,0x391bc1d9,0x9de0781a + DD 0x693807e1,0x8faee858,0x4e81ccc7,0xa3865327,0x6f835b84,0x02c30ff2,0x0d3d38d4,0xb604437b,0x5ca1823d,0xb3fc8a98,0x03be0324,0xb82f7ec9,0xcf684a33,0xee36d761,0x9f29bf7d,0x5a01df0e + DD 0x1306583d,0x686202f3,0x437c622e,0x05b10da0,0x076a7bc8,0xbf9aaa0f,0x8f8f4e43,0x25e94efb,0xfa3dc26d,0x8a35c9b7,0x96ff03c5,0xe0e5fb93,0xebc394ce,0xa77e3843,0x8361de60,0xcede6595 + DD 0xa1993545,0xd27c22f6,0x24d671ba,0xab01cc36,0xa169c28e,0x63fa2877,0x2eb08376,0x925ef904,0x53aa0b32,0x3b2fa3cf,0x71c49d7a,0xb27beb5b,0xd105e27f,0xb60e1834,0x4f68570d,0xd6089788 + DD 0xd6fbc2ac,0x23094ce0,0x815ff551,0x738037a1,0x6bef119c,0xda73b1bb,0xeef506ba,0xdcf6c430,0xe3ef104a,0x00e4fe7b,0x0a065628,0xebdd9a2c,0x8792043e,0x853a81c3,0xb3b59108,0x22ad6ece + DD 0x39cd297d,0x9fb813c0,0x05bda5d9,0x8ec7e16e,0x0d104b96,0x2834797c,0x7c511510,0xcc11a2e7,0x96ee6380,0x96ca5a53,0xcea38742,0x054c8655,0xd54dfa7d,0xb5946852,0x1f4ab207,0x97c422e7 + DD 0x0c22b540,0xbf907509,0xb7c267d4,0x2cde42aa,0x5ab0d693,0xba18f9ed,0x6e4660d9,0x3ba62aa6,0xab9ea96a,0xb24bf97b,0xe3b60e32,0x5d039642,0x7c4d9bd5,0x4e6a4506,0x7ed4a6a4,0x666c5b9e + DD 0x8edbd7cc,0xfa3fdcd9,0xc6ccd753,0x4660bb87,0x21e6b64f,0x9ae90820,0xb36bfb3f,0x8a56a713,0x5726d47f,0xabfce096,0x0b1a9a7f,0x9eed01b2,0x4eb74a37,0x30e9cad4,0x53e9666d,0x7b2524cc + DD 0x8f4b002f,0x6a29683b,0x41f4fc20,0xc2200d7a,0x3a338acc,0xcf3af47a,0xe7128975,0x6539a4fb,0xc33c7fcf,0xcec31c14,0xc7be322b,0x7eb6799b,0x6646f623,0x119ef4e9,0x54d7299b,0x7b7a26a5 + DD 0x403f46f2,0xcb37f08d,0x1a0ec0c7,0x94b8fc43,0xc332142f,0xbb8514e3,0xe80d2a7a,0xf3ed2c33,0xb639126c,0x8d2080af,0xe3553ade,0xf7b6be60,0x1c7e2b09,0x3950aa9f,0x6410f02b,0x847ff958 + DD 0x678a31b0,0x877b7cf5,0x3998b620,0xd50301ae,0xc00fb396,0x734257c5,0x04e672a6,0xf9fb18a0,0xe8758851,0xff8bd8eb,0x5d99ba44,0x1e64e4c6,0x7dfd93b7,0x4b8eaedf,0x04e76b8c,0xba2f2a98 + DD 0xe8053433,0x7d790cba,0x3d2c9585,0xc8e725a0,0xcdd8f5ed,0x58c5c476,0xefa9fe1d,0xd106b952,0x0eff13a9,0x3c5c775b,0xe057b930,0x242442ba,0xc9b70cbd,0xe9f458d4,0xa3cdb89a,0x69b71448 + DD 0x0e2ed742,0x41ee46f6,0x40067493,0x573f1045,0x9d54c304,0xb1e154ff,0x8d3a7502,0x2ad0436a,0x431a8121,0xee4aaa2d,0x886f11ed,0xcd38b3ab,0x034a0eb7,0x57d49ea6,0xf7e85e58,0xd2b773bd + DD 0x9b5c1f14,0x4a559ac4,0x3e54df2b,0xc444be1a,0xeda41891,0x13aad704,0x5eb5c788,0xcd927bec,0xe48c8a34,0xeb3c8516,0x4b546669,0x1b7ac812,0x594df8ec,0x1815f896,0x79227865,0x87c6a79c + DD 0x9b56ddbd,0xae02a2f0,0x8a2f1cf3,0x1339b5ac,0x839dff0d,0xf2b569c7,0xfee9a43d,0xb0b9e864,0x77bb064e,0x4ff8ca41,0xfd249f63,0x145a2812,0xf86f689a,0x3ab7beac,0x01d35f5e,0x9bafec27 + DD 0x4265aa91,0x28054c65,0x035efe42,0xa4b18304,0x9639dec7,0x6887b0e6,0x3d52aea5,0xf4b8f6ad,0x971a8a13,0xfb9293cc,0x4c934d07,0x3f159e5d,0x09acbc29,0x2c50e9b1,0x7154d129,0x08eb65e6 + DD 0x30b75c3e,0x4feff589,0x94491c93,0x0bb82fe2,0x89af62bb,0xd8ac377a,0x9685e49f,0xd7b51490,0x04497f19,0xabca9a7b,0x1a7ad13f,0x1b35ed0a,0x3ec86ed6,0x6b601e21,0xce0c76f1,0xda91fcb9 + DD 0xd7ab27e1,0x9e28507b,0x63945b7b,0x7c19a555,0xaafc9827,0x6b43f0a1,0x3aa55b91,0x443b4fbd,0x6962c88f,0x962b2e65,0xce0db0ca,0x139da8d4,0x1b8d6c4f,0xb93f05dd,0x180b9824,0x779cdff7 + DD 0xae57c7b7,0xbba23fdd,0x1b932522,0x345342f2,0x556d4aa3,0xfd9c80fe,0x6525bb61,0xa03907ba,0xff218933,0x38b010e1,0xaa52117b,0xc066b654,0x94f2e6ea,0x8e141920,0x0d32f2b2,0x66a27dca + DD 0x048b3717,0x69c7f993,0xb178ae1c,0xbf5a989a,0x564f1d6b,0x49fa9058,0xd31fde4e,0x27ec6e15,0x7276e7fc,0x4cce0373,0x89d6bf02,0x64086d79,0x4ccdd979,0x5a72f046,0x47775631,0x909c3566 + DD 0x75dd7125,0x1c07bc6b,0x87a0428d,0xb4c6bc97,0xfdeb6b9d,0x507ece52,0xb2c95432,0xfca56512,0xd0e8bd06,0x15d97181,0xc6bb46ea,0x384dd317,0x3952b624,0x5441ea20,0x4e7dc2fb,0xbcf70dee + DD 0x6628e8c3,0x372b016e,0xb60a7522,0x07a0d667,0x0a344ee2,0xcf05751b,0x118bdeec,0x0ec09a48,0xd83dce46,0x6e4b3d4e,0x99d2fc6e,0x43a6316d,0x56cf044c,0xa99d8989,0xae3e5fb7,0x7c7f4454 + DD 0xfbabbe92,0xb2e6b121,0xe1330076,0x281850fb,0x97890015,0x093581ec,0x75ff77f5,0x69b1dded,0xab105105,0x7cf0b18f,0xa89ccfef,0x953ced31,0xeb914009,0x3151f85f,0x88ed48ad,0x3c9f1b87 + DD 0x4a7eadcb,0xc9aba1a1,0x522e71cf,0x928e7501,0x3a2e4f83,0xeaede727,0x1ce3bbd3,0x467e10d1,0xb955dcf0,0xf3442ac3,0xd3d5e527,0xba96307d,0xfd77f474,0xf763a10e,0x6a6e1ff0,0x5d744bd0 + DD 0xa777899e,0xd287282a,0xd03f3cde,0xe20eda8f,0x50b07d31,0x6a7e75bb,0x6f379de4,0x0b7e2a94,0x19f593cf,0x31cb64ad,0x1e76ef1d,0x7b1a9e4f,0xb62d609c,0xe18c9c9d,0xe779a650,0x439bad6d + DD 0xe032f144,0x219d9066,0xe8b2ec6a,0x1db632b8,0xfda12f78,0xff0d0fd4,0x2a25d265,0x56fb4c2d,0x255a03f1,0x5f4e2ee1,0xe96af176,0x61cd6af2,0xd068bc97,0xe0317ba8,0x264b988e,0x927d6bab + DD 0xe90fb21e,0xa18f07e0,0xbba7fca1,0x00fd2b80,0x95cd67b5,0x20387f27,0xd39707f7,0x5b89a4e7,0x894407ce,0x8f83ad3f,0x6c226132,0xa0025b94,0xf906c13b,0xc79563c7,0x4e7bb025,0x5f548f31 + DD 0xeac6d113,0x2b4c6b8f,0x0e813c76,0xa67e3f9c,0x3fe1f4b9,0x3982717c,0x26d8050e,0x58865819,0xf7f06f20,0x99f3640c,0x2a66ebc2,0xdc610216,0x767a1e08,0x52f2c175,0x5999871b,0x05660e1a + DD 0x6d3c4693,0x6b0f1762,0x37ed7bea,0xf0e7d627,0xb75b226d,0xc51758c7,0x1f91613b,0x40a88628,0xbbb38ce0,0x889dbaa7,0xbddcad81,0xe0404b65,0x8bc9671f,0xfebccd3a,0xee1f5375,0xfbf9a357 + DD 0x28f33398,0x5dc169b0,0x72e90f65,0xb07ec11d,0xfaab1eb1,0xae7f3b4a,0x5f17538a,0xd970195e,0x0181e640,0x52b05cbe,0x2643313d,0xf5debd62,0x5df31f82,0x76148154,0x3a9e13c5,0x23e03b33 + DD 0x4fde0c1f,0xff758949,0xe5b6ec20,0xbf8a1abe,0x87e1db6c,0x702278fb,0x35ed658f,0xc447ad7a,0x03d0ccf2,0x48d4aa38,0x819a7c03,0x80acb338,0x6e17cecc,0x9bc7c89e,0x03be1d82,0x46736b8b + DD 0xc0432f96,0xd65d7b60,0xdeb5442f,0xddebe7a3,0x7dff69a2,0x79a25307,0x02cf3122,0x37a56d94,0xf2350d0a,0x8bab8aed,0x037b0d9a,0x13c3f276,0x44c65cae,0xc664957c,0xc2e71a88,0x88b44089 + DD 0x5cb02664,0xdb88e5a3,0x8686c72e,0x5d4c0bf1,0xa682d53e,0xea3d9b62,0x0b2ad431,0x9b605ef4,0xc69645d0,0x71bac202,0x6a1b66e7,0xa115f03a,0x158f4dc4,0xfe2c563a,0x4d12a78c,0xf715b3a0 + DD 0xd413213a,0x8f7f0a48,0xc04becdb,0x2035806d,0x5d8587f5,0xecd34a99,0x9f6d3a71,0x4d8c3079,0x8d95a8f6,0x1b2a2a67,0xf2110d0d,0xc58c9d7d,0xcf8fba3f,0xdeee81d5,0x0c7cdf68,0xa42be3c0 + DD 0xd43b5eaa,0x2126f742,0xdfa59b85,0x054a0766,0x126bfd45,0x9d0d5e36,0x384f8a8f,0xa1f8fbd7,0xd563fccc,0x317680f5,0xf280a928,0x48ca5055,0x27b578cf,0xe00b81b2,0x2994a514,0x10aad918 + DD 0xb7bdc953,0xd9e07b62,0x5bc086dd,0x9f0f6ff2,0x655eee77,0x09d1ccff,0x5bef7df1,0x45475f79,0x86f702cc,0x3faa28fa,0x0f021f07,0x92e60905,0x7f8fa8c6,0xe9e62968,0xf036ea2c,0xbd71419a + DD 0x6028da9a,0x171ee1cc,0xc251f573,0x5352fe1a,0x3fa997f4,0xf8ff236e,0xa5749d5f,0xd831b6c9,0xe350e2c2,0x7c872e1d,0x1e0ce403,0xc56240d9,0x6974f5cb,0xf9deb077,0x961c3728,0x7d50ba87 + DD 0x5a3a2518,0xd6f89426,0xc6303d43,0xcf817799,0x619e5696,0x510a0471,0x3a5e307b,0xab049ff6,0xfeb13ec7,0xe4cdf9b0,0x9d8ff90c,0xd5e97117,0x9afa96af,0xf6f64d06,0x9d2012a2,0x00d0bf5e + DD 0x358bcdc0,0xe63f301f,0x0a9d47f8,0x07689e99,0x4f43d43a,0x1f689e2f,0x90920904,0x4d542a16,0x9ca0a707,0xaea293d5,0x8ac68065,0xd061fe45,0x0090008c,0x1033bf1b,0xc08a6db6,0x29749558 + DD 0xc1d5d034,0x74b5fc59,0x67e215e0,0xf712e9f6,0x860200e6,0xfd520cbd,0x3ea22588,0x0229acb4,0xfff0c82e,0x9cd1e14c,0x59c69e73,0x87684b62,0x96ccb989,0xda85e61c,0xa3d06493,0x2d5dbb02 + DD 0xe86b173c,0xf22ad33a,0xa79ff0e3,0xe8e41ea5,0xdd0d0c10,0x01d2d725,0x032d28f9,0x31f39088,0x7829839e,0x7b3f71e1,0x4502ae58,0x0cf691b4,0xbefc6115,0xef658dbd,0xb3ab5314,0xa5cd6ee5 + DD 0x5f1d2347,0x206c8d7b,0x4cc2253a,0x794645ba,0x58389e08,0xd517d8ff,0x9f847288,0x4fa20dee,0xd797770a,0xeba072d8,0xbf429e26,0x7360c91d,0x80af8279,0x7200a3b3,0x82dadce3,0x6a1c9150 + DD 0xc35d8794,0x0ee6d3a7,0x0356bae5,0x042e6558,0x643322fd,0x9f59698d,0x50a61967,0x9379ae15,0xfcc9981e,0x64b9ae62,0x6d2934c6,0xaed3d631,0x5e4e65eb,0x2454b302,0xf9950428,0xab09f647 + DD 0x22248acc,0xb2083a12,0x3264e366,0x1f6ec0ef,0x5afdee28,0x5659b704,0xe6430bb5,0x7a823a40,0xe1900a79,0x24592a04,0xc9ee6576,0xcde09d4a,0x4b5ea54a,0x52b6463f,0xd3ca65a7,0x1efe9ed3 + DD 0x305406dd,0xe27a6dbe,0xdd5d1957,0x8eb7dc7f,0x387d4d8f,0xf54a6876,0xc7762de4,0x9c479409,0x99b30778,0xbe4d5b5d,0x6e793682,0x25380c56,0xdac740e3,0x602d37f3,0x1566e4ae,0x140deabe + DD 0xafd32acf,0x4481d067,0xe1f71ccf,0xd8f0fcca,0xb596f2da,0xd208dd0c,0x9aad93f9,0xd049d730,0x42ab580e,0xc79f263d,0x23f707b4,0x09411bb1,0x835e0eda,0x8cfde1ff,0x90f03402,0x72707490 + DD 0xc49a861e,0xeaee6126,0xe14f0d06,0x024f3b65,0xc69bfc17,0x51a3f1e8,0xa7686381,0xc3c3a8e9,0xb103d4c8,0x3400752c,0x9218b36b,0x02bc4613,0x7651504a,0xc67f75eb,0xd02aebfa,0xd6848b56 + DD 0xc30fa92b,0xbd9802e6,0x9a552784,0x5a70d96d,0x3f83169b,0x9085c4ea,0x06908228,0xfa9423bb,0xfe97a5b9,0x2ffebe12,0x71b99118,0x85da6049,0x63178846,0x9cbc2f7f,0x9153218e,0xfd96bc70 + DD 0x1782269b,0x958381db,0x2597e550,0xae34bf79,0x5f385153,0xbb5c6064,0xe3088048,0x6f0e96af,0x77884456,0xbf6a0215,0x69310ea7,0xb3b5688c,0x04fad2de,0x17c94295,0x17896d4d,0xe020f0e5 + DD 0x0976505f,0x730ba0ab,0x095e2ec5,0x567f6813,0x6331ab71,0x47062010,0x41d22b9f,0x72cfa977,0x8a2373da,0x33e55ead,0x7ba45a68,0xa8d0d5f4,0x03029d15,0xba1d8f9c,0xfc55b9f3,0x8f34f1cc + DD 0xbbe5a1a9,0xcca4428d,0x3126bd67,0x8187fd5f,0x48105826,0x0036973a,0xb8bd61a0,0xa39b6663,0x2d65a808,0x6d42deef,0x94636b19,0x4969044f,0xdd5d564c,0xf611ee47,0xd2873077,0x7b2f3a49 + DD 0x300eb294,0x94157d45,0x169c1494,0x2b2a656e,0xd3a47aa9,0xc000dd76,0xa6243ea4,0xa2864e4f,0xdb89842e,0x82716c47,0x61479fb7,0x12dfd7d7,0xe0b2f6dc,0x3b9a2c56,0xd7f85d67,0x46be862a + DD 0x0f82b214,0x03b0d8dd,0xf103cbc6,0x460c34f9,0x18d79e19,0xf32e5c03,0xa84117f8,0x8b8888ba,0xc0722677,0x8f3c37dc,0x1c1c0f27,0x10d21be9,0xe0f7a0c6,0xd47c8468,0xadecc0e0,0x9bf02213 + DD 0x42b48b99,0x0baa7d12,0x48424096,0x1bcb665d,0xebfb5cfb,0x8b847cd6,0x9ad4d10d,0x87c2ae56,0x0de36726,0xf1cbb122,0x3fdfbd21,0xe7043c68,0x4e79d460,0x4bd0826a,0x4bd1a2cb,0x11f5e598 + DD 0xb7fe7b6e,0x97554160,0x400a3fb2,0x7d16189a,0xe328ca1e,0xd73e9bea,0xe793d8cc,0x0dd04b97,0x506db8cc,0xa9c83c9b,0xcf38814c,0x5cd47aae,0xb64b45e6,0x26fc430d,0xd818ea84,0x079b5499 + DD 0xc1c24a3b,0xebb01102,0x1c161c1a,0xca24e568,0x36f00a4a,0x103eea69,0x76176c7b,0x9ad76ee8,0x538e0ff7,0x97451fc2,0x6604b3b0,0x94f89809,0x3249cfd7,0x6311436e,0x41224f69,0x27b4a7bd + DD 0xe0ac2941,0x03b5d21a,0xc2d31937,0x279b0254,0xcac992d0,0x3307c052,0xefa8b1f3,0x6aa7cb92,0x0d37c7a5,0x5a182580,0x342d5422,0x13380c37,0xd5d2ef92,0x92ac2d66,0x030c63c6,0x035a70c9 + DD 0x4ce4f152,0xc16025dd,0xf9df7c06,0x1f419a71,0x91e4bb14,0x6d5b2214,0x839fb4ce,0xfc43c6cc,0x925d6b2d,0x49f06591,0x62186598,0x4b37d9d3,0xd01b1629,0x8c54a971,0x51d50e05,0xe1a9c29f + DD 0x71ba1861,0x5109b785,0xd0c8f93d,0x48b22d5c,0x8633bb93,0xe8fa84a7,0x5aebbd08,0x53fba6ba,0xe5eea7d8,0x7ff27df3,0x68ca7158,0x521c8796,0xce6f1a05,0xb9d5133b,0xfd0ebee4,0x2d50cd53 + DD 0xc5a3ef16,0xc82115d6,0xba079221,0x993eff9d,0x4b5da81c,0xe4da2c5e,0x8033fd85,0x9a89dbdb,0x2b892891,0x60819ebf,0x5d14a4d5,0x53902b21,0xd7fda421,0x6ac35051,0x61c83284,0xcc6ab885 + DD 0xf74cff17,0x14eba133,0xecb813f2,0x240aaa03,0x6f665bee,0xcfbb6540,0xa425ad73,0x084b1fe4,0xd081f6a6,0x009d5d16,0xeef82c90,0x35304fe8,0xaa9eaa22,0xf20346d5,0xac1c91e3,0x0ada9f07 + DD 0x968a6144,0xa6e21678,0x07b31a1e,0x54c1f77c,0x5781fbe1,0xd6bb787e,0xe31f1c4a,0x61bd2ee0,0x781105fc,0xf25aa1e9,0x7b2f8e80,0x9cf2971f,0xcdff919b,0x26d15412,0x34bc896e,0x01db4ebe + DD 0xb40df1cf,0x7d9b3e23,0x94e971b4,0x59337373,0x669cf921,0xbf57bd14,0x0c1a1064,0x865daedf,0x83279125,0x3eb70bd3,0x34ecdaab,0xbc3d5b9f,0x5f755caf,0x91e3ed7e,0xd41e6f02,0x49699f54 + DD 0xd4a7a15b,0x185770e1,0xeaac87e7,0x08f3587a,0x473133ea,0x352018db,0x04fd30fc,0x674ce719,0x088b3e0e,0x7b8d9835,0x5d0d47a1,0x7a0356a9,0x6474a3c4,0x9d9e7659,0xff66966c,0x61ea48a7 + DD 0x0f3e4834,0x30417758,0x17a9afcb,0xfdbb21c2,0x2f9a67b3,0x756fa17f,0xa245c1a8,0x2a6b2421,0x4af02291,0x64be2794,0x2a5804fe,0xade465c6,0xa6f08fd7,0x8dffbd39,0xaa14403b,0xc4efa84c + DD 0x442b0f5c,0xa1b91b2a,0xcf997736,0xb748e317,0xcee90e16,0x8d1b62bf,0x0b2078c0,0x907ae271,0x0c9bcddd,0xdf31534b,0x39adce83,0x043fb054,0xd826846a,0x99031043,0xb144f393,0x61a9c0d6 + DD 0x47718427,0xdab48046,0x6e830f8b,0xdf17ff9b,0xe49a1347,0x408d7ee8,0x91c1d4ae,0x6ac71e23,0x1defd73c,0xc8cbb9fd,0xbbbbfec5,0x19840657,0x9e7ef8ea,0x39db1cb5,0x64105f30,0x78aa8296 + DD 0xa3738c29,0xa3d9b7f0,0xbc3250a3,0x0a2f235a,0x445e4caf,0x55e506f6,0x33475f7a,0x0974f73d,0x5ba2f5a8,0xd37dbba3,0x6af40066,0x542c6e63,0xc5d73e2c,0x26d99b53,0x6c3ca33e,0x06060d7d + DD 0x065fef4a,0xcdbef1c2,0xfd5b92e3,0x77e60f7d,0x26708350,0xd7c549f0,0x34f121bf,0x201b3ad0,0x0334fc14,0x5fcac2a1,0x344552f6,0x8a9a9e09,0x97653082,0x7dd8a1d3,0x79d4f289,0x5fc0738f + DD 0x17d2d8c3,0x787d244d,0x70830684,0xeffc6345,0xe4f73ae5,0x5ddb96dd,0x172549a5,0x8efb14b1,0x2245ae7a,0x6eb73eee,0xea11f13e,0xbca4061e,0x30b01f5d,0xb577421d,0x782e152c,0xaa688b24 + DD 0xbd3502ba,0x67608e71,0xb4de75a0,0x4ef41f24,0xfd6125e5,0xb08dde5e,0xa409543f,0xde484825,0x65cc2295,0x1f198d98,0x6e0edfa2,0x428a3771,0xadf35fc7,0x4f9697a2,0xf7cac3c7,0x01a43c79 + DD 0x0fd3659a,0xb05d7059,0xbb7f2d9a,0x8927f30c,0x8cf984d3,0x4023d1ac,0x02897a45,0x32125ed3,0x3d414205,0xfb572dad,0xe3fa82a9,0x73000ef2,0xf10a5581,0x4c0868e9,0x6b0b3ca5,0x5b61fc67 + DD 0x7cae440c,0xc1258d5b,0x402b7531,0x21c08b41,0xde932321,0xf61a8955,0x2d1408af,0x3568faf8,0x9ecf965b,0x71b15e99,0xe917276f,0xf14ed248,0x820cf9e2,0xc6f4caa1,0x18d83c7e,0x681b20b2 + DD 0xc6c01120,0x6cde738d,0xae70e0db,0x71db0813,0x74afe18c,0x95fc0644,0x129e2be7,0x34619053,0xdb2a3b15,0x80615cea,0xdb4c7073,0x0a49a19e,0x8fd2d367,0x0e1b84c8,0x033fb8aa,0xd74bf462 + DD 0x533ef217,0x889f6d65,0xc3ca2e87,0x7158c7e4,0xdc2b4167,0xfb670dfb,0x844c257f,0x75910a01,0xcf88577d,0xf336bf07,0xe45e2ace,0x22245250,0x7ca23d85,0x2ed92e8d,0x2b812f58,0x29f8be4c + DD 0x076fe12b,0xdd9ebaa7,0xae1537f9,0x3f2400cb,0x17bdfb46,0x1aa93528,0x67883b41,0xc0f98430,0x0170911d,0x5590ede1,0x34d4b17f,0x7562f5bb,0x1826b8d2,0xe1fa1df2,0x6bd80d59,0xb40b796a + DD 0x3467ba92,0xd65bf197,0xf70954b0,0x8c9b46db,0x0e78f15d,0x97c8a0f3,0x85a4c961,0xa8f3a69a,0x61e4ce9b,0x4242660f,0x6ea6790c,0xbf06aab3,0xec986416,0xc6706f8e,0x9a9fc225,0x9e56dec1 + DD 0x9a9898d9,0x527c46f4,0x5633cdef,0xd799e77b,0x7d9e4297,0x24eacc16,0x6b1cb734,0xabb61cea,0xf778443c,0xbee2e8a7,0x29de2fe6,0x3bb42bf1,0x3003bb6f,0xcbed86a1,0xd781cdf6,0xd3918e6c + DD 0x9a5103f1,0x4bee3271,0xf50eac06,0x5243efc6,0x6adcc119,0xb8e122cb,0xc0b80a08,0x1b7faa84,0x6dfcd08c,0x32c3d1bd,0x0be427de,0x129dec4e,0x1d263c83,0x98ab679c,0xcef64eff,0xafc83cb7 + DD 0x2fa6be76,0x85eb6088,0x1328cbfe,0x892585fb,0xcf618dda,0xc154d3ed,0x3abaf26e,0xc44f601b,0x2be1fdfd,0x7bf57d0b,0x21137fee,0xa833bd2d,0x2db591a8,0x9353af36,0x5562a056,0xc76f26dc + DD 0x3fdf5a51,0x1d87e47d,0x55c9cab0,0x7afb5f93,0x89e0586e,0x91bbf58f,0x0d843709,0x7c72c018,0x99b5c3dc,0xa9a5aafb,0x3844aeb0,0xa48a0f1d,0xb667e482,0x7178b7dd,0x6e23a59a,0x453985e9 + DD 0x01b25dd8,0x4a54c860,0xfb897c8a,0x0dd37f48,0x0ea90cd9,0x5f8aa610,0x16d5830d,0xc8892c68,0xef514ca5,0xeb4befc0,0xe72c9ee6,0x478eb679,0xdbc40d5f,0x9bca20da,0xdde4f64a,0xf015de21 + DD 0xeaf4b8a5,0xaa6a4de0,0x4bc60e32,0x68cfd9ca,0x7fd15e70,0x668a4b01,0xf27dc09d,0xd9f0694a,0xba708bcd,0xf6c3cad5,0x5bb95c2a,0x5cd2ba69,0x33c0a58f,0xaa28c1d3,0xabc77870,0x23e274e3 + DD 0xdfd20a4a,0x44c3692d,0x81a66653,0x091c5fd3,0x09a0757d,0x6c0bb691,0x667343ea,0x9072e8b9,0x80848bec,0x31d40eb0,0x79fd36cc,0x95bd480a,0x65ed43f5,0x01a77c61,0x2e0d40bf,0xafccd127 + DD 0x1cc1884b,0xeccfc82d,0x5d4753b4,0xc85ac201,0x658e099f,0xc7a6caac,0x04b27390,0xcf46369e,0x506467ea,0xe2e7d049,0x37cdeccc,0x481b63a2,0xed80143a,0x4029abd8,0xbcb00b88,0x28bfe3c7 + DD 0x0643d84a,0x3bec1009,0xabd11041,0x885f3668,0xf83a34d6,0xdb02432c,0x719ceebe,0x32f7b360,0xdad1fe7a,0xf06c7837,0x5441a0b0,0x60a157a9,0xe2d47550,0x704970e9,0x271b9020,0xcd2bd553 + DD 0x33e24a0b,0xff57f82f,0xf2565079,0x9cbee23f,0xeb5f5825,0x16353427,0xe948d662,0x276feec4,0xda10032b,0xd1b62bc6,0xf0e72a53,0x718351dd,0x2420e7ba,0x93452076,0x3a00118d,0x96368fff + DD 0x150a49e4,0x00ce2d26,0x3f04706b,0x0c28b636,0x58b196d0,0xbad65a46,0xec9f8b7c,0x6c8455fc,0x2d71867e,0xe90c895f,0xedf9f38c,0x5c0be31b,0xd8f6ec04,0x2a37a15e,0x8cd85251,0x239639e7 + DD 0x9c7c4c6b,0xd8975315,0xd7409af7,0x603aa3c0,0x007132fb,0xb8d53d0c,0xa6849238,0x68d12af7,0xbf5d9279,0xbe0607e7,0xaada74ce,0x9aa50055,0xba7e8ccb,0xe81079cb,0xa5f4ff5e,0x610c71d1 + DD 0x5aa07093,0x9e2ee1a7,0xa75da47c,0xca84004b,0x3de75401,0x074d3951,0xbb311592,0xf938f756,0x00a43421,0x96197618,0x07bc78c8,0x39a25362,0x0a171276,0x278f710a,0x8d1a8f08,0xb28446ea + DD 0xe3b6a661,0x184781bf,0xe6d279f7,0x7751cb1d,0xc59eb662,0xf8ff95d6,0x58d3dea7,0x186d90b7,0xdfb4f754,0x0e4bb6c1,0x2b2801dc,0x5c5cf56b,0x1f54564d,0xc561e452,0xf0dd7f13,0xb4fb8c60 + DD 0x33ff98c7,0xf8849630,0xcf17769c,0x9619fffa,0x1bfdd80a,0xf8090bf6,0x422cfe63,0x14d9a149,0x6f6df9ea,0xb354c360,0x218f17ea,0xdbcf770d,0x79eb3480,0x207db7c8,0x559b6a26,0x213dbda8 + DD 0x29fc81b3,0xac4c200b,0x171d87c1,0xebc3e09f,0x1481aa9e,0x91799530,0x92e114fa,0x051b92e1,0xecb5537f,0xdf8f92e9,0x290c7483,0x44b1b2cc,0x2adeb016,0xa711455a,0x81a10c2c,0x964b6856 + DD 0xcec03623,0x4f159d99,0xef3271ea,0x05532225,0xc5ee4849,0xb231bea3,0x7094f103,0x57a54f50,0x9598b352,0x3e2d421d,0x67412ab4,0xe865a49c,0x1cc3a912,0xd2998a25,0x0c74d65d,0x5d092808 + DD 0x4088567a,0x73f45908,0x1f214a61,0xeb6b280e,0xcaf0c13d,0x8c9adc34,0xf561fb80,0x39d12938,0xbc6edfb4,0xb2dc3a5e,0xfe4d210e,0x7485b1b1,0xe186ae72,0x062e0400,0x6eeb3b88,0x91e32d5c + DD 0x4be59224,0x6df574d7,0x716d55f3,0xebc88ccc,0xcad6ed33,0x26c2e6d0,0x0d3e8b10,0xc6e21e7d,0x5bcc36bb,0x2cc5840e,0x7da74f69,0x9292445e,0x4e5193a8,0x8be8d321,0x8df06413,0x3ec23629 + DD 0xb134defa,0xc7e9ae85,0x1bb2d475,0x6073b1d0,0x2863c00d,0xb9ad615e,0x525f4ac4,0x9e29493d,0x4e9acf4f,0xc32b1dea,0xa50db88d,0x3e1f01c8,0x04da916c,0xb05d70ea,0xd865803e,0x714b0d0a + DD 0x9920cb5e,0x4bd493fc,0x92c7a3ac,0x5b44b1f7,0xbcec9235,0xa2a77293,0xcd378553,0x5ee06e87,0xda621607,0xceff8173,0x99f5d290,0x2bb03e4c,0xa6f734ac,0x2945106a,0xd25c4732,0xb5056604 + DD 0xe079afee,0x5945920c,0x6789831f,0x686e17a0,0xb74a5ae5,0x5966bee8,0x1e258d46,0x38a673a2,0x83141c95,0xbd1cc1f2,0x0e96e486,0x3b2ecf4f,0x74e5fc78,0xcd3aa896,0x2482fa7a,0x415ec10c + DD 0x80503380,0x15234419,0xd314b392,0x513d917a,0x63caecae,0xb0b52f4e,0x2dc7780b,0x07bf22ad,0xe4306839,0xe761e8a1,0x5dd7feaa,0x1b3be962,0x74c778f1,0x4fe728de,0x5e0070f6,0xf1fa0bda + DD 0x6ec3f510,0x85205a31,0xd2980475,0x2c7e4a14,0x6f30ebfd,0xde3c19c0,0xd4b7e644,0xdb1c1f38,0x5dce364a,0xfe291a75,0x058f5be3,0xb7b22a3c,0x37fea38c,0x2cd2c302,0x2e17be17,0x2930967a + DD 0x0c061c65,0x87f009de,0xedc6ed44,0xcb014aac,0x3bafb1eb,0x49bd1cb4,0x282d3688,0x81bd8b5c,0xf01a17af,0x1cdab87e,0xe710063b,0x21f37ac4,0x42fc8193,0x5a6c5676,0x56a6015c,0xf4753e70 + DD 0xa15b0a44,0x020f795e,0x8958a958,0x8f37c8d7,0xa4b675b5,0x63b7e89b,0x0fc31aea,0xb4fb0c0c,0xa7ff1f2e,0xed95e639,0x619614fb,0x9880f5a3,0x947151ab,0xdeb6ff02,0xa868dcdb,0x5bc5118c + DD 0x4c20cea5,0xd8da2055,0x14c4d69a,0xcac2776e,0x622d599b,0xcccb22c1,0x68a9bb50,0xa4ddb653,0x1b4941b4,0x2c4ff151,0x6efba588,0xe1ff19b4,0xc48345e0,0x35034363,0x1e29dfc4,0x45542e3d + DD 0x349f7aed,0xf197cb91,0x8fca8420,0x3b2b5a00,0x23aaf6d8,0x7c175ee8,0x35af32b6,0x54dcf421,0x27d6561e,0x0ba14307,0xd175b1e2,0x879d5ee4,0x99807db5,0xc7c43673,0x9cd55bcd,0x77a54455 + DD 0x0105c072,0xe6c2ff13,0x8dda7da4,0x18f7a99f,0x0e2d35c1,0x4c301820,0xd9cc6c82,0x06a53ca0,0xf1aa1d9e,0xaa21cc1e,0x4a75b1e8,0x32414334,0x0ebe9fdc,0x2a6d1328,0x98a4755a,0x16bd173f + DD 0x2133ffd9,0xfbb9b245,0x830f1a20,0x39a8b2f1,0xd5a1f52a,0x484bc97d,0xa40eddf8,0xd6aebf56,0x76ccdac6,0x32257acb,0x1586ff27,0xaf4d36ec,0xf8de7dd1,0x8eaa8863,0x88647c16,0x0045d5cf + DD 0xc005979d,0xa6f3d574,0x6a40e350,0xc2072b42,0x8de2ecf9,0xfca5c156,0xa515344e,0xa8c8bf5b,0x114df14a,0x97aee555,0xfdc5ec6b,0xd4374a4d,0x2ca85418,0x754cc28f,0xd3c41f78,0x71cb9e27 + DD 0x03605c39,0x89105079,0xa142c96c,0xf0843d9e,0x16923684,0xf3744934,0xfa0a2893,0x732caa2f,0x61160170,0xb2e8c270,0x437fbaa3,0xc32788cc,0xa6eda3ac,0x39cd818e,0x9e2b2e07,0xe2e94239 + DD 0x0260e52a,0x6967d39b,0x90653325,0xd42585cc,0x21ca7954,0x0d9bd605,0x81ed57b3,0x4fa20877,0xe34a0bbe,0x60c1eff8,0x84f6ef64,0x56b0040c,0xb1af8483,0x28be2b24,0xf5531614,0xb2278163 + DD 0x5922ac1c,0x8df27545,0xa52b3f63,0xa7b3ef5c,0x71de57c4,0x8e77b214,0x834c008b,0x31682c10,0x4bd55d31,0xc76824f0,0x17b61c71,0xb6d1c086,0xc2a5089d,0x31db0903,0x184e5d3f,0x9c092172 + DD 0xc00cc638,0xdd7ced5b,0x61278fc2,0x1a2015eb,0x6a37f8d6,0x2e8e5288,0xe79933ad,0xc457786f,0x2c51211a,0xb3fe4cce,0x24c20498,0xad9b10b2,0xd28db5e5,0x90d87a4f,0x3aca2fc3,0x698cd105 + DD 0xe91b536d,0x4f112d07,0x9eba09d6,0xceb982f2,0x197c396f,0x3c157b2c,0x7b66eb24,0xe23c2d41,0x3f330d37,0x480c57d9,0x79108deb,0xb3a4c8a1,0xcb199ce5,0x702388de,0xb944a8d4,0x0b019211 + DD 0x840bb336,0x24f2a692,0xa669fa7b,0x7c353bdc,0xdec9c300,0xda20d6fc,0xa13a4f17,0x625fbe2f,0xdbc17328,0xa2b1b61a,0xa9515621,0x008965bf,0xc620ff46,0x49690939,0x8717e91c,0x182dd27d + DD 0xea6c3997,0x5ace5035,0xc2610bef,0x54259aaa,0x3c80dd39,0xef18bb3f,0x5fc3fa39,0x6910b95b,0x43e09aee,0xfce2f510,0xa7675665,0xced56c9f,0xd872db61,0x10e265ac,0xae9fce69,0x6982812e + DD 0xce800998,0x29be11c6,0xb90360d9,0x72bb1752,0x5a4ad590,0x2c193197,0x9fc1dbc0,0x2ba2f548,0xe490ebe0,0x7fe4eebb,0x7fae11c0,0x12a0a4cd,0xe903ba37,0x7197cf81,0xde1c6dd8,0xcf7d4aa8 + DD 0x3fd5684c,0x92af6bf4,0x80360aa1,0x2b26eecf,0x00546a82,0xbd960f30,0xf59ad8fe,0x407b3c43,0x249c82ba,0x86cae5fe,0x2463744c,0x9e0faec7,0x94916272,0x87f551e8,0x6ceb0615,0x033f9344 + DD 0x8be82e84,0x1e5eb0d1,0x7a582fef,0x89967f0e,0xa6e921fa,0xbcf687d5,0xd37a09ba,0xdfee4cf3,0xb493c465,0x94f06965,0x7635c030,0x638b9a1c,0x66f05e9f,0x76667864,0xc04da725,0xccaf6808 + DD 0x768fccfc,0xca2eb690,0xb835b362,0xf402d37d,0xe2fdfcce,0x0efac0d0,0xb638d990,0xefc9cdef,0xd1669a8b,0x2af12b72,0x5774ccbd,0x33c536bc,0xfb34870e,0x30b21909,0x7df25aca,0xc38fa2f7 + DD 0xbf81f3f5,0x74c5f02b,0xaf7e4581,0x0525a5ae,0x433c54ae,0x88d2aaba,0x806a56c5,0xed9775db,0xc0edb37d,0xd320738a,0x66cc1f51,0x25fdb6ee,0x10600d76,0xac661d17,0xbdd1ed76,0x931ec1f3 + DD 0x19ee43f1,0x65c11d62,0x60829d97,0x5cd57c3e,0x984be6e8,0xd26c91a3,0x8b0c53bd,0xf08d9309,0xc016e4ea,0x94bc9e5b,0x11d43d2b,0xd3916839,0x73701155,0x886c5ad7,0x20b00715,0xe0377626 + DD 0xaa80ba59,0x7f01c9ec,0x68538e51,0x3083411a,0xe88128af,0x970370f1,0x91dec14b,0x625cc3db,0x01ac3107,0xfef9666c,0xd5057ac3,0xb2a8d577,0x92be5df7,0xb0f26299,0x00353924,0xf579c8e5 + DD 0x1341ed7a,0xb8fa3d93,0xa7b59d49,0x4223272c,0x83b8c4a4,0x3dcb1947,0xed1302e4,0x4e413c01,0xe17e44ce,0x6d999127,0x33b3adfb,0xee86bf75,0x25aa96ca,0xf6902fe6,0xe5aae47d,0xb73540e4 + DD 0x1b4a158c,0x32801d7b,0x27e2a369,0xe571c99e,0x10d9f197,0x40cb76c0,0x3167c0ae,0xc308c289,0xeb7958f2,0xa6ef9dd3,0x300879b1,0xa7226dfc,0x7edf0636,0x6cd0b362,0x7bc37eed,0x4efbce6c + DD 0x8d699021,0x75f92a05,0x772566e3,0x586d4c79,0x761ad23a,0x378ca5f1,0x1465a8ac,0x650d86fc,0x842ba251,0x7a4ed457,0x42234933,0x6b65e3e6,0x31aad657,0xaf1543b7,0xcbfec369,0xa4cefe98 + DD 0x9f47befb,0xb587da90,0x41312d13,0x6562e9fb,0xeff1cefe,0xa691ea59,0x05fc4cf6,0xcc30477a,0x0b0ffd3d,0xa1632461,0x5b355956,0xa1f16f3b,0x4224ec24,0x5b148d53,0xf977012a,0xdc834e7b + DD 0xb2c69dbc,0x7bfc5e75,0x03c3da6c,0x3aa77a29,0xca910271,0xde0df03c,0x7806dc55,0xcbd5ca4a,0x6db476cb,0xe1ca5807,0x5f37a31e,0xfde15d62,0xf41af416,0xf49af520,0x7d342db5,0x96c5c5b1 + DD 0xeb4ceb9b,0x155c43b7,0x4e77371a,0x2e993010,0x675d43af,0x1d2987da,0x8599fd72,0xef2bc1c0,0x9342f6b2,0x96894b7b,0x7c8e71f0,0x201eadf2,0x4a1f3efc,0xf3479d9f,0x702a9704,0xe0f8a742 + DD 0xb3eba40c,0xeafd44b6,0xc1c1e0d0,0xf9739f29,0x619d505e,0x0091471a,0x9d7c263e,0xc15f9c96,0x83afbe33,0x5be47285,0x04f1e092,0xa3b6d6af,0x751a9d11,0xe76526b9,0x9a4ae4d2,0x2ec5b26d + DD 0x02f6fb8d,0xeb66f4d9,0x96912164,0x4063c561,0x80ef3000,0xeb7050c1,0xeaa5b3f0,0x288d1c33,0x07806fd8,0xe87c68d6,0x4bbbf50f,0xb2f7f9d5,0xac8d6627,0x25972f3a,0x10e8c13b,0xf8547774 + DD 0x872b4a60,0xcc50ef6c,0x4613521b,0xab2a34a4,0x983e15d1,0x39c5c190,0x59905512,0x61dde5df,0x9f2275f3,0xe417f621,0x451d894b,0x0750c8b6,0x78b0bdaa,0x75b04ab9,0x458589bd,0x3bfd9fd4 + DD 0xee9120b6,0xf1013e30,0x23a4743e,0x2b51af93,0x48d14d9e,0xea96ffae,0x698a1d32,0x71dc0dbe,0x0180cca4,0x914962d2,0xc3568963,0x1ae60677,0x437bc444,0x8cf227b1,0xc9962c7a,0xc650c83b + DD 0xfe7ccfc4,0x23c2c7dd,0x1b929d48,0xf925c89d,0x06783c33,0x4460f74b,0xa590475a,0xac2c8d49,0xb807bba0,0xfb40b407,0x69ff8f3a,0x9d1e362d,0xcbef64a4,0xa33e9681,0x332fb4b2,0x67ece5fa + DD 0x739f10e3,0x6900a99b,0xff525925,0xc3341ca9,0xa9e2d041,0xee18a626,0x29580ddd,0xa5a83685,0x9d7de3cd,0xf3470c81,0x2062cf9c,0xedf02586,0xc010edb0,0xf43522fa,0x13a4b1ae,0x30314135 + DD 0xdb22b94b,0xc792e02a,0xa1eaa45b,0x993d8ae9,0xcd1e1c63,0x8aad6cd3,0xc5ce688a,0x89529ca7,0xe572a253,0x2ccee3aa,0x02a21efb,0xe02b6438,0xc9430358,0xa7091b6e,0x9d7db504,0x06d1b1fa + DD 0xc4744733,0x58846d32,0x379f9e34,0x40517c71,0x130ef6ca,0x2f65655f,0xf1f3503f,0x526e4488,0x7ee4a976,0x8467bd17,0x921363d1,0x1d9dc913,0xb069e041,0xd8d24c33,0x2cdf7f51,0x5eb5da0a + DD 0x197b994f,0x1c0f3cb1,0x2843eae9,0x3c95a6c5,0xa6097ea5,0x7766ffc9,0xd723b867,0x7bea4093,0x4db378f9,0xb48e1f73,0xe37b77ac,0x70025b00,0xaf24ad46,0x943dc8e7,0x16d00a85,0xb98a15ac + DD 0x2743b004,0x3adc38ba,0x334415ee,0xb1c7f4f7,0x1e62d05a,0xea43df8f,0x9d76a3b6,0x32618905,0xa23a0f46,0x2fbd0bb5,0x6a01918c,0x5bc971db,0xb4743f94,0x7801d94a,0x676ae22b,0xb94df65e + DD 0xaf95894c,0xaafcbfab,0x276b2241,0x7b9bdc07,0x5bdda48b,0xeaf98362,0xa3fcb4df,0x5977faf2,0x052c4b5b,0xbed042ef,0x067591f0,0x9fe87f71,0x22f24ec7,0xc89c73ca,0xe64a9f1b,0x7d37fa9e + DD 0x15562627,0x2710841a,0xc243b034,0x2c01a613,0x2bc68609,0x1d135c56,0x8b03f1f6,0xc2ca1715,0x3eb81d82,0xc9966c2d,0x8f6df13e,0xc02abf4a,0x8f72b43b,0x77b34bd7,0x360c82b0,0xaff6218f + DD 0x8d55b9d2,0x0aa5726c,0x99e9bffb,0xdc0adbe9,0xefb9e72a,0x9097549c,0x9dfb3111,0x16755712,0xf26847f9,0xdd8bf984,0xdfb30cb7,0xbcb8e387,0x5171ef9c,0xc1fd32a7,0x389b363f,0x977f3fc7 + DD 0xf4babda0,0x116eaf2b,0xf7113c8e,0xfeab68bd,0xb7def526,0xd1e3f064,0xe0b3fa02,0x1ac30885,0x40142d9d,0x1c5a6e7b,0x30921c0b,0x839b5603,0x36a116a3,0x48f301fa,0xcfd9ee6d,0x380e1107 + DD 0x58854be1,0x7945ead8,0xcbd4d49d,0x4111c12e,0x3a29c2ef,0xece3b1ec,0x8d3616f5,0x6356d404,0x594d320e,0x9f0d6a8f,0xf651ccd2,0x0989316d,0x0f8fdde4,0x6c32117a,0xa26a9bbc,0x9abe5cc5 + DD 0x9723f671,0xcff560fb,0x7f3d593c,0x21b2a12d,0x24ba0696,0xe4cb18da,0xc3543384,0x186e2220,0x88312c29,0x722f64e0,0x17dc7752,0x94282a99,0x5a85ee89,0x62467bbf,0xf10076a0,0xf435c650 + DD 0x43b3a50b,0xc9ff1539,0x1a53efbc,0x7132130c,0xf7b0c5b7,0x31bfe063,0x4ea994cc,0xb0179a7d,0xc85f455b,0x12d064b3,0x8f6e0062,0x47259328,0xb875d6d9,0xf64e590b,0xad92bcc7,0x22dd6225 + DD 0xb9c3bd6d,0xb658038e,0xfbba27c8,0x00cdb0d6,0x1062c45d,0x0c681337,0x2d33407d,0xd8515b8c,0x8cbb5ecf,0xcb8f699e,0xc608d7d8,0x8c4347f8,0xbb3e00db,0x2c11850a,0xecb49d19,0x20a8dafd + DD 0x45ee2f40,0xbd781480,0x416b60cf,0x75e354af,0x8d49a8c4,0xde0b58a1,0xfa359536,0xe40e94e2,0x62accd76,0xbd4fa59f,0x8c762837,0x05cf466a,0x448c277b,0xb5abda99,0x48b13740,0x5a9e01bf + DD 0x326aad8d,0x9d457798,0xc396f7e7,0xbdef4954,0xc253e292,0x6fb274a2,0x1cfe53e7,0x2800bf0a,0x44438fd4,0x22426d31,0x5e259f9a,0xef233923,0x03f66264,0x4188503c,0x7f9fdfab,0x9e5e7f13 + DD 0x5fcc1aba,0x565eb76c,0x59b5bff8,0xea632548,0xaab6d3fa,0x5587c087,0x6ce39c1b,0x92b639ea,0x953b135c,0x0706e782,0x425268ef,0x7308912e,0x090e7469,0x599e92c7,0x9bc35e75,0x83b90f52 + DD 0x244975b3,0x4750b3d0,0x11965d72,0xf3a44358,0x9c8dc751,0x179c6774,0xd23d9ff0,0xff18cdfe,0x2028e247,0xc4013833,0xf3bfbc79,0x96e280e2,0xd0880a84,0xf60417bd,0x2a568151,0x263c9f3d + DD 0x2d2ce811,0x36be15b3,0xf8291d21,0x846dc0c2,0x789fcfdb,0x5cfa0ecb,0xd7535b9a,0x45a0beed,0x96d69af1,0xec8e9f07,0x599ab6dc,0x31a7c5b8,0xf9e2e09f,0xd36d45ef,0xdcee954b,0x3cf49ef1 + DD 0x086cff9b,0x6be34cf3,0x39a3360f,0x88dbd491,0x0dbfbd1d,0x1e96b8cc,0xcb7e2552,0xc1e5f7bf,0x28819d98,0x0547b214,0x7aea9dcb,0xc770dd9c,0x041d68c8,0xaef0d4c7,0x13cb9ba8,0xcc2b9818 + DD 0xfe86c607,0x7fc7bc76,0x502a9a95,0x6b7b9337,0xd14dab63,0x1948dc27,0xdae047be,0x249dd198,0xa981a202,0xe8356584,0x3a893387,0x3531dd18,0xc85c7209,0x1be11f90,0xe2a52b5a,0x93d2fe1e + DD 0xec6d6b97,0x8225bfe2,0xbd0aa5de,0x9cf6d6f4,0x54779f5f,0x911459cb,0x86aeb1f3,0x5649cddb,0x3f26ce5a,0x32133579,0x550f431e,0xc289a102,0x73b84c6f,0x559dcfda,0xee3ac4d7,0x84973819 + DD 0xf2606a82,0xb51e55e6,0x90f2fb57,0xe25f7061,0xb1a4e37c,0xacef6c2a,0x5dcf2706,0x864e359d,0x7ce57316,0x479e6b18,0x3a96b23d,0x2cab2500,0x8ef16df7,0xed489862,0xef3758b5,0x2056538c + DD 0xf15d3101,0xa7df865e,0x61b553d7,0x80c5533a,0x4ed14294,0x366e1997,0xb3c0bcd6,0x6620741f,0xedc45418,0x21d1d9c4,0xc1cc4a9d,0x005b859e,0xa1c462f0,0xdf01f630,0xf26820c7,0x15d06cf3 + DD 0x3484be47,0x9f7f24ee,0x4a0c902f,0x2ff33e96,0x5a0bc453,0x00bdf457,0x1aa238db,0x2378dfaf,0x856720f2,0x272420ec,0x96797291,0x2ad9d95b,0x768a1558,0xd1242cc6,0x5cc86aa8,0x2e287f8b + DD 0x990cecaa,0x796873d0,0x675d4080,0xade55f81,0x21f0cd84,0x2645eea3,0xb4e17d02,0x7a1efa0f,0x037cc061,0xf6858420,0xd5d43e12,0x682e05f0,0x27218710,0x59c36994,0x3f7cd2fc,0x85cbba4d + DD 0x7a3cd22a,0x726f9729,0x4a628397,0x9f8cd5dc,0xc23165ed,0x17b93ab9,0x122823d4,0xff5f5dbf,0x654a446d,0xc1e4e4b5,0x677257ba,0xd1a9496f,0xde766a56,0x6387ba94,0x521ec74a,0x23608bc8 + DD 0x6688c4d4,0x16a522d7,0x07373abd,0x9d6b4282,0xb42efaa3,0xa62f07ac,0xe3b90180,0xf73e00f7,0x49421c3e,0x36175fec,0x3dcf2678,0xc4e44f9b,0x7220f09f,0x76df436b,0x3aa8b6cf,0x172755fb + DD 0x446139cc,0xbab89d57,0x5fe0208f,0x0a0a6e02,0x11e5d399,0xcdbb63e2,0xa8977f0b,0x33ecaa12,0xf7c42664,0x59598b21,0xab65d08a,0xb3e91b32,0xf4502526,0x035822ee,0x720a82a9,0x1dcf0176 + DD 0x3d589e02,0x50f8598f,0xb1d63d2c,0xdf0478ff,0x1571cd07,0x8b8068bd,0xd79670cd,0x30c3aa4f,0x941ade7f,0x25e8fd4b,0x32790011,0x3d1debdc,0x3a3f9ff0,0x65b6dcbd,0x793de69c,0x282736a4 + DD 0xd41d3bd3,0xef69a0c3,0x07a26bde,0xb533b8c9,0xdb2edf9f,0xe2801d97,0xe1877af0,0xdc4a8269,0x3d590dbe,0x6c1c5851,0xee4e9357,0x84632f6b,0x79b33374,0xd36d36b7,0x9bbca2e6,0xb46833e3 + DD 0xf7fc0586,0x37893913,0x66bf4719,0x385315f7,0xb31855dc,0x72c56293,0x849061fe,0xd1416d4e,0x51047213,0xbeb3ab78,0xf040c996,0x447f6e61,0x638b1d0c,0xd06d310d,0xbad1522e,0xe28a413f + DD 0x82003f86,0x685a76cb,0x0bcdbca3,0x610d07f7,0x9ca4c455,0x6ff66021,0xcea10eec,0x7df39b87,0xe22db218,0xb9255f96,0x08a34c44,0x8cc6d9eb,0x859f9276,0xcd4ffb86,0x50d07335,0x8fa15eb2 + DD 0xcf2c24b5,0xdf553845,0x52f9c3ba,0x89f66a9f,0xe4a7ceb3,0x8f22b5b9,0x0e134686,0xaffef809,0x8eb8fac2,0x3e53e1c6,0x28aec98e,0x93c1e4eb,0x32a43bcb,0xb6b91ec5,0xb2d74a51,0x2dbfa947 + DD 0xca84bad7,0xe065d190,0xad58e65c,0xfb13919f,0xf1cb6e31,0x3c41718b,0x06d05c3f,0x688969f0,0x21264d45,0xd4f94ce7,0x7367532b,0xfdfb65e9,0x0945a39d,0x5b1be8b1,0x2b8baf3b,0x229f789c + DD 0x6f49f15d,0xd8f41f3e,0x907f0792,0x678ce828,0xfca6e867,0xc69ace82,0xd01dcc89,0x106451ae,0x19fc32d2,0x1bb4f7f0,0xb00c52d2,0x64633dfc,0xad9ea445,0x8f13549a,0xfb323705,0x99a3bf50 + DD 0x534d4dbc,0x0c9625a2,0xc2a2fea3,0x45b8f1d1,0xa530fc1a,0x76ec21a1,0x9e5bd734,0x4bac9c2a,0x7b4e3587,0x5996d76a,0x1182d9e3,0x0045cdee,0x1207f13d,0x1aee24b9,0x97345a41,0x66452e97 + DD 0x9f950cd0,0x16e5b054,0xd7fdd075,0x9cc72fb1,0x66249663,0x6edd61e7,0xf043cccb,0xde4caa4d,0x55c7ac17,0x11b1f57a,0x1a85e24d,0x779cbd44,0xe46081e7,0x78030f86,0x8e20f643,0xfd4a6032 + DD 0x0a750c0f,0xcc7a6488,0x4e548e83,0x39bacfe3,0x0c110f05,0x3d418c76,0xb1f11588,0x3e4daa4c,0x5ffc69ff,0x2733e7b5,0x92053127,0x46f147bc,0xd722df94,0x885b2434,0xe6fc6b7c,0x6a444f65 + DD 0xc3f16ea8,0x7a1a465a,0xb2f1d11c,0x115a461d,0x6c68a172,0x4767dd95,0xd13a4698,0x3392f2eb,0xe526cdc7,0xc7a99ccd,0x22292b81,0x8e537fdc,0xa6d39198,0x76d8cf69,0x2446852d,0xffc5ff43 + DD 0xa90567e6,0x97b14f7e,0xb6ae5cb7,0x513257b7,0x9f10903d,0x85454a3c,0x69bc3724,0xd8d2c9ad,0x6b29cb44,0x38da9324,0x77c8cbac,0xb540a21d,0x01918e42,0x9bbfe435,0x56c3614e,0xfffa707a + DD 0xd4e353b7,0x0ce4e3f1,0xef46b0a0,0x062d8a14,0x574b73fd,0x6408d5ab,0xd3273ffd,0xbc41d1c9,0x6be77800,0x3538e1e7,0xc5655031,0x71fe8b37,0x6b9b331a,0x1cd91621,0xbb388f73,0xad825d0b + DD 0x1cb76219,0x56c2e05b,0x71567e7e,0x0ec0bf91,0x61c4c910,0xe7076f86,0xbabc04d9,0xd67b085b,0x5e93a96a,0x9fb90459,0xfbdc249a,0x7526c1ea,0xecdd0bb7,0x0d44d367,0x9dc0d695,0x95399917 + DD 0x9e240d18,0x61360ee9,0xb4b94466,0x057cdcac,0x2fe5325c,0xe7667cd1,0x21974e3b,0x1fa297b5,0xdb083d76,0xfa4081e7,0xf206bd15,0x31993be6,0x14c19f8c,0x8949269b,0xa9d92357,0x21468d72 + DD 0xa4c506ec,0x2ccbc583,0xd1acfe97,0x957ed188,0x12f1aea2,0x8baed833,0x8325362d,0xef2a6cb4,0x8e195c43,0x130dde42,0x0e6050c6,0xc842025a,0x08686a5d,0x2da972a7,0xe508b4a8,0xb52999a1 + DD 0x10a5a8bd,0xd9f090b9,0x096864da,0xca91d249,0x3f67dbc1,0x8e6a93be,0xf5f4764c,0xacae6fba,0xd21411a0,0x1563c6e0,0xda0a4ad8,0x28fa787f,0x908c8030,0xd524491c,0x4c795f07,0x1257ba0e + DD 0xceca9754,0x83f49167,0x4b7939a0,0x426d2cf6,0x723fd0bf,0x2555e355,0xc4f144e2,0xa96e6d06,0x87880e61,0x4768a8dd,0xe508e4d5,0x15543815,0xb1b65e15,0x09d7e772,0xac302fa0,0x63439dd6 + DD 0xc14e35c2,0xb93f802f,0x4341333c,0x71735b7c,0x16d4f362,0x03a25104,0xbf433c8e,0x3f4d069b,0xf78f5a7c,0x0d83ae01,0x7c4eed07,0x50a8ffbe,0x76e10f83,0xc74f8906,0x9ddaf8e1,0x7d080966 + DD 0x698e04cc,0xb11df8e1,0x169005c8,0x877be203,0x4f3c6179,0x32749e8c,0x7853fc05,0x2dbc9d0a,0x9454d937,0x187d4f93,0xb4800e1b,0xe682ce9d,0x165e68e8,0xa9129ad8,0xbe7f785b,0x0fe29735 + DD 0x5b9e02b7,0x5303f40c,0x35ee04e8,0xa37c9692,0x34d6632b,0x5f46cc20,0x96ac545b,0x55ef72b2,0x7b91b062,0xabec5c1f,0xbb33e821,0x0a79e1c7,0x3a9f4117,0xbb04b428,0xfd2a475a,0x0de1f28f + DD 0x3a4434b4,0x31019ccf,0x1a7954dc,0xa3458111,0xe34972a7,0xa9dac80d,0x74f6b8dd,0xb043d054,0x11137b1a,0x021c319e,0xed5cc03f,0x00a754ce,0xcbea5ad4,0x0aa2c794,0x70c015b6,0x093e67f4 + DD 0xc97e3f6b,0x72cdfee9,0xb6da7461,0xc10bcab4,0xb59806b9,0x3b02d2fc,0xa1de6f47,0x85185e89,0x0eb6c4d4,0x39e6931f,0xd4fa5b04,0x4d4440bd,0x34be7eb8,0x5418786e,0x9d7259bc,0x6380e521 + DD 0xd598d710,0x20ac0351,0xcb3a4da4,0x272c4166,0xca71de1f,0xdb82fe1a,0xd8f54b0f,0x746e79f2,0x4b573e9b,0x6e7fc736,0xfd4b5040,0x75d03f46,0x0b98d87b,0x5c1cc36d,0x1f472da1,0x513ba3f1 + DD 0xabb177dd,0x79d0af26,0x7891d564,0xf82ab568,0x72232173,0x2b6768a9,0x8c1f6619,0xefbb3bb0,0xa6d18358,0xb29c11db,0xb0916d3a,0x519e2797,0x9188e290,0xd4dc18f0,0x98b0ca7f,0x648e86e3 + DD 0x983c38b5,0x859d3145,0x637abc8b,0xb14f176c,0xcaff7be6,0x2793fb9d,0x35a66a5a,0xebe5a55f,0x9f87dc59,0x7cec1dcd,0xfbdbf560,0x7c595cd3,0x26eb3257,0x5b543b22,0xc4c935fd,0x69080646 + DD 0x81e9ede3,0x7f2e4403,0xcaf6df0a,0x243c3894,0x1c073b11,0x7c605bb1,0xba6a4a62,0xcd06a541,0x49d4e2e5,0x29168949,0x4af66880,0x33649d07,0xe9a85035,0xbfc0c885,0xfc410f4b,0xb4e52113 + DD 0x78a6513b,0xdca3b706,0x9edb1943,0x92ea4a2a,0xdb6e2dd8,0x02642216,0x9fd57894,0x9b45d0b4,0xc69d11ae,0x114e70db,0x4c57595f,0x1477dd19,0xec77c272,0xbc2208b4,0xdb68f59c,0x95c5b4d7 + DD 0x42e532b7,0xb8c4fc63,0x9ae35290,0x386ba422,0xd201ecbc,0xfb5dda42,0xa0e38fd6,0x2353dc8b,0x68f7e978,0x9a0b85ea,0x2ad6d11f,0x96ec5682,0xe5f6886d,0x5e279d6c,0x3cb1914d,0xd3fe03cd + DD 0x7ea67c77,0xfe541fa4,0xe3ea810c,0x952bd2af,0x8d01d374,0x791fef56,0x0f11336e,0xa3a1c621,0xc7ec6d79,0x5ad0d5a9,0x3225c342,0xff7038af,0xbc69601b,0x003c6689,0x45e8747d,0x25059bc7 + DD 0xf2086fbf,0xfa4965b2,0x86916078,0xf6840ea6,0x70081d6c,0xd7ac7620,0xb5328645,0xe600da31,0x529b8a80,0x01916f63,0x2d7d6f3e,0xe80e4858,0xd664ca7c,0x29eb0fe8,0xe7b43b0c,0xf017637b + DD 0x76cb2566,0x9a75c806,0xb24892d9,0x8f76acb1,0x1f08fe45,0x7ae7b9cc,0x6a4907d8,0x19ef7329,0x5f228bf0,0x2db4ab71,0x817032d7,0xf3cdea39,0xdcabe3c0,0x0b1f482e,0xbb86325c,0x3baf76b4 + DD 0x10089465,0xd49065e0,0x8e77c596,0x3bab5d29,0x193dbd95,0x7636c3a6,0xb246e499,0xdef5d294,0x286b2475,0xb22c58b9,0xcd80862b,0xa0b93939,0xf0992388,0x3002c83a,0xeacbe14c,0x6de01f9b + DD 0xadd70482,0x6aac688e,0x7b4a4e8a,0x708de92a,0x758a6eef,0x75b6dd73,0x725b3c43,0xea4bf352,0x87912868,0x10041f2c,0xef09297a,0xb1b1be95,0xa9f3860a,0x19ae23c5,0x515dcf4b,0xc4f0f839 + DD 0x97f6306a,0x3c7ecca3,0x68a3a4b0,0x744c44ae,0xb3a1d8a2,0x69cd13a0,0x5256b578,0x7cad0a1e,0x33791d9e,0xea653fcd,0x74b2e05f,0x9cc2a05d,0xfd7affa2,0x73b391dc,0xb6b05442,0xddb7091e + DD 0x8538a5c6,0xc71e27bf,0x89abff17,0x195c63dd,0x1b71e3da,0xfd315285,0xfa680fa0,0x9cbdfda7,0x849d7eab,0x9db876ca,0x3c273271,0xebe2764b,0xf208dcea,0x663357e3,0x565b1b70,0x8c5bd833 + DD 0x9837fc0d,0xccc3b4f5,0xa79cf00f,0x9b641ba8,0xdfdf3990,0x7428243d,0x020786b1,0x83a594c4,0x526c4502,0xb712451a,0x6adb3f93,0x9d39438e,0xe9ff0ccd,0xfdb261e3,0xe07af4c3,0x80344e3c + DD 0x2fa4f126,0x75900d7c,0x5c99a232,0x08a3b865,0xdb25e0c3,0x2478b6bf,0x71db2edf,0x482cc2c2,0x5f321bb8,0x37df7e64,0x9a8005b4,0x8a93821b,0xcc8c1958,0x3fa2f10c,0x2c269d0a,0x0d332218 + DD 0xe246b0e6,0x20ab8119,0xd349fd17,0xb39781e4,0xb31aa100,0xd293231e,0xbb032168,0x4b779c97,0xc8470500,0x4b3f19e1,0x0c4c869d,0x45b7efe9,0xa1a6bbcc,0xdb84f38a,0xb2fddbc1,0x3b59cb15 + DD 0x3fd165e8,0xba5514df,0x061f8811,0x499fd6a9,0xbfef9f00,0x72cd1fe0,0x79ad7e8a,0x120a4bb9,0x5f4a5ac5,0xf2ffd095,0x95a7a2f0,0xcfd174f1,0x9d17baf1,0xd42301ba,0x77f22089,0xd2fa487a + DD 0xb1dc77e1,0x9cb09efe,0x21c99682,0xe9566939,0x6c6067bb,0x8c546901,0x61c24456,0xfd378574,0x81796b33,0x2b6a6cbe,0x58e87f8b,0x62d550f6,0x7f1b01b4,0x1b763e1c,0x1b1b5e12,0x4b93cfea + DD 0x1d531696,0xb9345238,0x88cdde69,0x57201c00,0x9a86afc7,0xdde92251,0xbd35cea8,0xe3043895,0x8555970d,0x7608c1e1,0x2535935e,0x8267dfa9,0x322ea38b,0xd4c60a57,0x804ef8b5,0xe0bf7977 + DD 0xc06fece4,0x1a0dab28,0x94e7b49d,0xd405991e,0x706dab28,0xc542b6d2,0xa91618fb,0xcb228da3,0x107d1cea,0x224e4164,0xd0f5d8f1,0xeb9fdab3,0x0d6e41cd,0xc02ba386,0x9b1f7146,0x676a72c5 + DD 0x4d6cb00b,0xffd6dd98,0xde2e8d7c,0xcef9c5ca,0x641c7936,0xa1bbf5d7,0xee8f772e,0x1b95b230,0xe8ac25b1,0xf765a92e,0x3a18b7c6,0xceb04cfc,0x0acc8966,0x27944cef,0x434c1004,0xcbb3c957 + DD 0xa43ff93c,0x9c9971a1,0xa1e358a9,0x5bc2db17,0xa8d9bc82,0x45b4862e,0x2201e052,0x70ebfbfb,0x92871591,0xafdf64c7,0xb42d0219,0xea5bcae6,0x2ad8f03c,0xde536c55,0xa76aa33c,0xcd6c3f4d + DD 0x0bca6de3,0xbeb5f623,0xb1e706fd,0xdd20dd99,0xac9059d4,0x90b3ff9d,0x7ccccc4e,0x2d7b2902,0xce98840f,0x8a090a59,0x8410680a,0xa5d947e0,0x923379a5,0x49ae346a,0xb28a3156,0x7dbc84f9 + DD 0x54a1aff2,0xfd40d916,0x3a78fb9b,0xabf318ba,0x3029f95e,0x50152ed8,0xc58ad7fa,0x9fc1dd77,0x13595c17,0x5fa57915,0x8f62b3a9,0xb9504668,0xff3055b0,0x907b5b24,0x9a84f125,0x2e995e35 + DD 0x7e9bbcfb,0x87dacf69,0xe86d96e3,0x95d0c1d6,0x2d95a75c,0x65726e3c,0xacd27f21,0x2c3c9001,0x6c973f57,0x1deab561,0xa5221643,0x108b7e2c,0xc4ef79d4,0x5fee9859,0x40d4b8c6,0xbd62b88a + DD 0x197c75d6,0xb4dd29c4,0xb7076feb,0x266a6df2,0x4bf2df11,0x9512d0ea,0x6b0cc9ec,0x1320c24f,0x01a59596,0x6bb1e0e1,0xeff9aaac,0x8317c5bb,0x385aa6c9,0x65bb405e,0x8f07988f,0x613439c1 + DD 0x16a66e91,0xd730049f,0xfa1b0e0d,0xe97f2820,0x304c28ea,0x4131e003,0x526bac62,0x820ab732,0x28714423,0xb2ac9ef9,0xadb10cb2,0x54ecfffa,0xf886a4cc,0x8781476e,0xdb2f8d49,0x4b2c87b5 + DD 0x0a44295d,0xe857cd20,0x58c6b044,0x707d7d21,0xf596757c,0xae8521f9,0x67b2b714,0x87448f03,0x5ebcd58d,0x13a9bc45,0x9122d3c1,0x79bcced9,0x9e076642,0x3c644247,0x2df4767d,0x0cf22778 + DD 0x71d444b6,0x5e61aee4,0xc5084a1d,0x211236bf,0x4fd3eaf6,0x7e15bc9a,0xab622bf5,0x68df2c34,0x59bf4f36,0x9e674f0f,0xd7f34d73,0xf883669b,0x31497b1d,0xc48ac1b8,0x5106703b,0x323b925d + DD 0x74082008,0x22156f42,0xc8482bcb,0xeffc521a,0x12173479,0x5c6831bf,0xc4739490,0xcaa2528f,0x8f1b3c4d,0x84d2102a,0x2d9bec0d,0xcf64dfc1,0x78a546ef,0x433febad,0x7b73cef1,0x1f621ec3 + DD 0x37338615,0x6aecd627,0x01d8edf6,0x162082ab,0x19e86b66,0x833a8119,0xd299b5db,0x6023a251,0xbbf04b89,0xf5bb0c3a,0xae749a44,0x6735eb69,0x4713de3b,0xd0e058c5,0x2c3d4ccd,0xfdf2593e + DD 0xfdd23667,0x1b8f414e,0xfa2015ee,0xdd52aaca,0xbd9625ff,0x3e31b517,0x8db5918c,0x5ec9322d,0xa96f5294,0xbc73ac85,0x61a0666a,0x82aa5bf3,0xbf08ac42,0x49755810,0x891cedfc,0xd21cdfd5 + DD 0x67f8be10,0x918cb57b,0x56ffa726,0x365d1a7c,0x6532de93,0x2435c504,0x2674cd02,0xc0fc5e10,0x9cbbb142,0x6e51fcf8,0xafc50692,0x1d436e5a,0x3fbcae22,0x766bffff,0xfd55d3b8,0x3148c2fd + DD 0x233222fa,0x52c7fdc9,0xe419fb6b,0x89ff1092,0x25254977,0x3cd6db99,0x1cf12ca7,0x2e85a161,0xdc810bc9,0xadd2547c,0x9d257c22,0xea3f458f,0x27d6b19b,0x642c1fbe,0x140481a6,0xed07e6b5 + DD 0x86d2e0f8,0x6ada1d42,0x0e8a9fd5,0xe5920122,0x708c1b49,0x02c936af,0x2b4bfaff,0x60f30fee,0x858e6a61,0x6637ad06,0x3fd374d0,0xce4c7767,0x7188defb,0x39d54b2d,0xf56a6b66,0xa8c9d250 + DD 0xb24fe1dc,0x58fc0f5e,0x6b73f24c,0x9eaf9dee,0x33650705,0xa90d588b,0xaf2ec729,0xde5b62c5,0xd3c2b36e,0x5c72cfae,0x034435da,0x868c19d5,0xe17ee145,0x88605f93,0x77a5d5b1,0xaa60c4ee + DD 0x3b60c472,0xbcf5bfd2,0xeb1d3049,0xaf4ef13c,0xe13895c9,0x373f44fc,0x0cbc9822,0xf29b382f,0x73efaef6,0x1bfcb853,0xa8c96f40,0xcf56ac9c,0x7a191e24,0xd7adf109,0xbf8a8dc2,0x98035f44 + DD 0x1e750c84,0xf40a71b9,0x5dc6c469,0xc57f7b0c,0x6fbc19c1,0x49a0e79c,0xa48ebdb8,0x6b0f5889,0xa07c4e9f,0x5d3fd084,0xab27de14,0xc3830111,0x33e08dcc,0x0e4929fe,0x40bb73a3,0xf4a5ad24 + DD 0x490f97ca,0xde86c2bf,0x67a1ce18,0x288f09c6,0x1844478d,0x364bb886,0xceedb040,0x7840fa42,0x5a631b37,0x1269fdd2,0xa47c8b7d,0x94761f1e,0x481c6266,0xfc0c2e17,0x3daa5fa7,0x85e16ea2 + DD 0x92491048,0xccd86033,0xf4d402d7,0x0c2f6963,0xdf6a865c,0x6336f7df,0xb5c02a87,0x0a2a463c,0xbf2f12ee,0xb0e29be7,0x66bad988,0xf0a22002,0x9123c1d7,0x27f87e03,0x328a8c98,0x21669c55 + DD 0x92f14529,0x186b9803,0x63954df3,0xd3d056cc,0x175a46f6,0x2f03fd58,0x11558558,0x63e34ebe,0x5b80cfa5,0xe13fedee,0xd401dbd1,0xe872a120,0xe8a9d667,0x52657616,0xe08d6693,0xbc8da4b6 + DD 0x1b703e75,0x370fb9bb,0xd4338363,0x6773b186,0xecef7bff,0x18dad378,0x995677da,0xaac787ed,0x0437164b,0x4801ea8b,0x73fe795e,0xf430ad20,0x8ee5eb73,0xb164154d,0x108f7c0e,0x0884ecd8 + DD 0x5f520698,0x0e6ec096,0x44f7b8d9,0x640631fe,0xa35a68b9,0x92fd34fc,0x4d40cf4e,0x9c5a4b66,0x80b6783d,0x949454bf,0x3a320a10,0x80e701fe,0x1a0a39b2,0x8d1a564a,0x320587db,0x1436d53d + DD 0x6556c362,0xf5096e6d,0xe2455d7e,0xbc23a3c0,0x807230f9,0x3a7aee54,0x22ae82fd,0x9ba1cfa6,0x99c5d706,0x833a057a,0x842315c9,0x8be85f4b,0x66a72f12,0xd083179a,0xcdcc73cd,0x2fc77d5d + DD 0x5616ee30,0x22b88a80,0xe7ab1083,0xfb09548f,0x511270cd,0x8ad6ab0d,0x6924d9ab,0x61f6c57a,0x90aecb08,0xa0f7bf72,0x0df784a4,0x849f87c9,0xcfaf1d03,0x27c79c15,0xc463face,0xbbf9f675 + DD 0x765ba543,0x91502c65,0x42ea60dd,0x18ce3cac,0x6e43ecb3,0xe5cee6ac,0x68f2aeeb,0x63e4e910,0xc85932ee,0x26234fa3,0x4c90c44d,0x96883e8b,0xa18a50f6,0x29b9e738,0x3f0420df,0xbfc62b2a + DD 0x6d3e1fa9,0xd22a7d90,0xfe05b8a3,0x17115618,0xbb2b9c01,0x2a0c9926,0xe07e76a2,0xc739fcc6,0x165e439a,0x540e9157,0x6a9063d8,0x06353a62,0x61e927a3,0x84d95594,0xe2e0be7f,0x013b9b26 + DD 0x973497f1,0x4feaec3b,0x093ebc2d,0x15c0f94e,0x33af0583,0x6af5f227,0xc61f3340,0x0c2af206,0x4457397c,0xd25dbdf1,0xcabcbae0,0x2e8ed017,0xc2815306,0xe3010938,0xe8c6cd68,0xbaa99337 + DD 0x3b0ec7de,0x08513182,0x58df05df,0x1e1b822b,0xa5c3b683,0x5c14842f,0x3eba34ce,0x98fe977e,0x0d5e8873,0xfd2316c2,0xbd0d427d,0xe48d839a,0x623fc961,0x495b2218,0xb46fba5e,0x24ee56e7 + DD 0x91e4de58,0x9184a55b,0xdfdea288,0xa7488ca5,0xa8dcc943,0xa723862e,0x849dc0fc,0x92d762b2,0x091ff4a9,0x3c444a12,0x0cada274,0x581113fa,0x30d8eae2,0xb9de0a45,0xdf6b41ea,0x5e0fcd85 + DD 0xc094dbb5,0x6233ea68,0xd968d410,0xb77d062e,0x58b3002d,0x3e719bbc,0x3dc49d58,0x68e7dd3d,0x013a5e58,0x8d825740,0x3c9e3c1b,0x21311747,0x7c99b6ab,0x0cb0a2a7,0xc2f888f2,0x5c48a3b3 + DD 0x991724f3,0xc7913e91,0x39cbd686,0x5eda799c,0x63d4fc1e,0xddb595c7,0xac4fed54,0x6b63b80b,0x7e5fb516,0x6ea0fc69,0xd0f1c964,0x737708ba,0x11a92ca5,0x9628745f,0x9a86967a,0x61f37958 + DD 0xaa665072,0x9af39b2c,0xefd324ef,0x78322fa4,0xc327bd31,0x3d153394,0x3129dab0,0x81d5f271,0xf48027f5,0xc72e0c42,0x8536e717,0xaa40cdbc,0x2d369d0f,0xf45a657a,0xea7f74e6,0xb03bbfc4 + DD 0x0d738ded,0x46a8c418,0xe0de5729,0x6f1a5bb0,0x8ba81675,0xf10230b9,0x112b33d4,0x32c6f30c,0xd8fffb62,0x7559129d,0xb459bf05,0x6a281b47,0xfa3b6776,0x77c1bd3a,0x7829973a,0x0709b380 + DD 0xa3326505,0x8c26b232,0xee1d41bf,0x38d69272,0xffe32afa,0x0459453e,0x7cb3ea87,0xce8143ad,0x7e6ab666,0x932ec1fa,0x22286264,0x6cd2d230,0x6736f8ed,0x459a46fe,0x9eca85bb,0x50bf0d00 + DD 0x877a21ec,0x0b825852,0x0f537a94,0x300414a7,0x21a9a6a2,0x3f1cba40,0x76943c00,0x50824eee,0xf83cba5d,0xa0dbfcec,0x93b4f3c0,0xf9538148,0x48f24dd7,0x61744162,0xe4fb09dd,0x5322d64d + DD 0x3d9325f3,0x57447384,0xf371cb84,0xa9bef2d0,0xa61e36c5,0x77d2188b,0xc602df72,0xbbd6a7d7,0x8f61bc0b,0xba3aa902,0x6ed0b6a1,0xf49085ed,0xae6e8298,0x8bc625d6,0xa2e9c01d,0x832b0b1d + DD 0xf1f0ced1,0xa337c447,0x9492dd2b,0x800cc793,0xbea08efa,0x4b93151d,0xde0a741e,0x820cf3f8,0x1c0f7d13,0xff1982dc,0x84dde6ca,0xef921960,0x45f96ee3,0x1ad7d972,0x29dea0c7,0x319c8dbe + DD 0x7b82b99b,0xd3ea3871,0x470eb624,0x75922d4d,0x3b95d466,0x8f66ec54,0xbee1e346,0x66e673cc,0xb5f2b89a,0x6afe67c4,0x290e5cd3,0x3de9c1e6,0x310a2ada,0x8c278bb6,0x0bdb323b,0x420fa384 + DD 0x0eb919b0,0x0ae1d63b,0xa74b9620,0xd74ee51d,0xa674290c,0x395458d0,0x4620a510,0x324c930f,0xfbac27d4,0x2d1f4d19,0x9bedeeac,0x4086e8ca,0x9b679ab8,0x0cdd211b,0x7090fec4,0x5970167d + DD 0xfaf1fc63,0x3420f2c9,0x328c8bb4,0x616d333a,0x57f1fe4a,0x7d65364c,0x55e5c73a,0x9343e877,0xe970e78c,0x5795176b,0x60533627,0xa36ccebf,0x09cdfc1b,0xfc7c7380,0xb3fec326,0xb39a2afe + DD 0x6224408a,0xb7ff1ba1,0x247cfc5e,0xcc856e92,0xc18bc493,0x01f102e7,0x2091c727,0x4613ab74,0xc420bf2b,0xaa25e89c,0x90337ec2,0x00a53176,0x7d025fc7,0xd2be9f43,0x6e6fe3dc,0x3316fb85 + DD 0x9ac50814,0x27520af5,0x9a8e4223,0xfdf95e78,0x56bec5a0,0xb7e7df2a,0xdf159e5d,0xf7022f7d,0xcac1fe8f,0x93eeeab1,0x37451168,0x8040188c,0xd967dce6,0x7ee8aa8a,0x3abc9299,0xfa0e79e7 + DD 0x2064cfd1,0x67332cfc,0xb0651934,0x339c31de,0x2a3bcbea,0x719b28d5,0x9d6ae5c6,0xee74c82b,0xbaf28ee6,0x0927d05e,0x9d719028,0x82cecf2c,0xddb30289,0x0b0d353e,0xfddb2e29,0xfe4bb977 + DD 0x640bfd9e,0xbb5bb990,0x82f62108,0xd226e277,0x02ffdd56,0x4bf00985,0x2ca1b1b5,0x7756758a,0x5285fe91,0xc32b62a3,0x8c9cd140,0xedbc546a,0xaf5cb008,0x1e47a013,0x073ce8f2,0xbca7e720 + DD 0x17a91cae,0xe10b2ab8,0x08e27f63,0xb89aab65,0xdba3ddf9,0x7b3074a7,0x330c2972,0x1c20ce09,0x5fcf7e33,0x6b9917b4,0x945ceb42,0xe6793743,0x5c633d19,0x18fc2215,0xc7485474,0xad1adb3c + DD 0x6424c49b,0x646f9679,0x67c241c9,0xf888dfe8,0x24f68b49,0xe12d4b93,0xa571df20,0x9a6b62d8,0x179483cb,0x81b4b26d,0x9511fae2,0x666f9632,0xd53aa51f,0xd281b3e4,0x7f3dbd16,0x7f96a765 + DD 0x074a30ce,0xa7f8b5bf,0x005a32e6,0xd7f52107,0x50237ed4,0x6f9e0907,0x8096fa2b,0x2f21da47,0xeec863a0,0xf3e19cb4,0x9527620a,0xd18f77fd,0x407c1cf8,0x9505c81c,0x1b6ec284,0x9998db4e + DD 0xc247d44d,0x7e3389e5,0x3f4f3d80,0x12507141,0x4a78a6c7,0xd4ba0110,0x767720be,0x312874a0,0x75944370,0xded059a6,0x3b2c0bdd,0xd6123d90,0x51c108e3,0xa56b717b,0x070623e9,0x9bb7940e + DD 0x84ac066c,0x794e2d59,0xe68c69a0,0xf5954a92,0x4fd99dcc,0x28c52458,0xb1012517,0x60e639fc,0x7de79248,0xc2e60125,0xf12fc6d7,0xe9ef6404,0x2a3b5d32,0x4c4f2808,0xc768eb8a,0x865ad32e + DD 0x13fb70b6,0xac02331b,0x95599b27,0x037b44c1,0x60bd082c,0x1a860fc4,0xc980cd01,0xa2e25745,0x1da0263e,0xee3387a8,0x2d10f3d6,0x931bfb95,0xa1f24a32,0x5b687270,0xca494b86,0xf140e65d + DD 0xb2f1ac7a,0x4f4ddf91,0x760fee27,0xf99eaabb,0x49c228e5,0x57f4008a,0x1cf713bb,0x090be440,0x5004f022,0xac91fbe4,0x569e1af6,0xd838c2c2,0x0f1daaa5,0xd6c7d20b,0x1bbb02c0,0xaa063ac1 + DD 0x59558a78,0x0938a422,0x8435da2f,0x5343c669,0x034410dc,0x96f67b18,0x84510804,0x7cc1e424,0x16dfbb7d,0x86a1543f,0x5b5bd592,0x921fa942,0xb33dd03c,0x9dcccb6e,0xb843f51e,0x8581ddd9 + DD 0x81d73c9e,0x54935fcb,0x0a5e97ab,0x6d07e979,0xcf3a6bab,0x4dc7b30a,0x170bee11,0x147ab1f3,0x9fafdee4,0x0aaf8e3d,0x538a8b95,0xfab3dbcb,0x6ef13871,0x405df4b3,0x088d5a49,0xf1f4e9cb + DD 0x66b33f1d,0x9bcd24d3,0x5ce445c0,0x3b97b820,0xba93ff61,0xe2926549,0x4dafe616,0xd9c341ce,0x16efb6f3,0xfb30a76e,0x605b953c,0xdf24b8ca,0xc2fffb9f,0x8bd52afe,0xe19d0b96,0xbbac5ff7 + DD 0x459afccd,0x43c01b87,0xb7432652,0x6bd45143,0x55b5d78e,0x84734530,0x1554ba7d,0x81088fdb,0x1e269375,0xada0a52c,0x2dc5ec10,0xf9f037c4,0x94bfbc11,0xc0660607,0xc9c40d2f,0xc0a630bb + DD 0xab64c31e,0x5efc797e,0x74507144,0xffdb1dab,0x1ca6790c,0xf6124287,0xe69bf1bf,0xe9609d81,0x00d24fc9,0xdb898595,0xe51fb417,0x9c750333,0xfef7bbde,0x51830a91,0x945f585c,0x0ce67dc8 + DD 0x4763eb50,0x9a730ed4,0xc1ab0d66,0x24a0e221,0x648748f3,0x643b6393,0x6d3c6291,0x1982daa1,0x8bbc5549,0x6f00a9f7,0x7f36384e,0x7a1783e1,0xde977f50,0xe8346323,0xb245502a,0x91ab688d + DD 0x6d0bdd66,0x331ab6b5,0x64b71229,0x0a6ef32e,0xfe7c352f,0x1028150e,0xce7b39d3,0x27e04350,0xc1070c82,0x2a3c8acd,0x80c9feef,0xfb2034d3,0x709f3729,0x2d729621,0x62cb4549,0x8df290bf + DD 0xfc2e4326,0x02f99f33,0x5eddf032,0x3b30076d,0x0c652fb5,0xbb21f8cf,0xed91cf7b,0x314fb49e,0x2f700750,0xa013eca5,0x712a4575,0x2b9e3c23,0xaf30fbb0,0xe5355557,0x7c77e771,0x1ada3516 + DD 0x7b135670,0x45f6ecb2,0x7cfc202e,0xe85d19df,0x58d1be9f,0x0f1b50c7,0xead2e344,0x5ebf2c0a,0xabc199c9,0x1531fe4e,0x56bab0ae,0xc7032592,0x6c1fec54,0x16ab2e48,0x04280188,0x0f87fda8 + DD 0x609e4a74,0xdc9f46fc,0xba667f91,0x2a44a143,0xb4d83436,0xbc3d8b95,0xc7bd2958,0xa01e4bd0,0x73483c90,0x7b182932,0xa7c7b598,0xa79c6aa1,0xeaaac07e,0xbf3983c6,0x96e0d4e6,0x8f18181e + DD 0x051af62b,0x8553d37c,0x0bf94496,0xe9a998eb,0xb0d59aa1,0xe0844f9f,0xe6afb813,0x983fd558,0x65d69804,0x9670c0ca,0x6ea5ff2d,0x732b22de,0x5fd8623b,0xd7640ba9,0xa6351782,0x9f619163 + DD 0xacee5043,0x0bfc27ee,0x2eb10f02,0xae419e73,0x8943fb05,0x19c028d1,0xff13aa2a,0x71f01cf7,0x8887a132,0x7790737e,0x66318410,0x67513309,0x7ddb795e,0x9819e8a3,0xdad100b2,0xfecb8ef5 + DD 0x3021926a,0x59f74a22,0x6f9b4c1c,0xb7c28a49,0x912ad0ab,0xed1a733f,0x01a5659c,0x42a910af,0x7bd68cab,0x3842c6e0,0x76d70ac8,0x2b57fa38,0x3c53aaeb,0x8a6707a8,0x65b4db18,0x62c1c510 + DD 0xb2d09dc7,0x8de2c1fb,0x266bd23b,0xc3dfed12,0xd5b27db6,0x927d039b,0x103243da,0x2fb2f0f1,0x80be7399,0xf855a07b,0x1f9f27a8,0xed9327ce,0x729bdef7,0xa0bd99c7,0x28250d88,0x2b67125e + DD 0x8670ced7,0x784b26e8,0xc31bd3b4,0xe3dfe41f,0xbcc85cbc,0x9e353a06,0x60178a9d,0x302e2909,0xa6eac16e,0x860abf11,0xaa2b3aac,0x76447000,0x850afdab,0x46ff9d19,0xfdb2d4c1,0x35bdd6a5 + DD 0x7e5c9ce9,0xe82594b0,0x20af346e,0x0f379e53,0xbc65ad4a,0x608b31e3,0x267c4826,0x710c6b12,0x71954cf1,0x51c966f9,0x0d0aa215,0xb1cec793,0x86bd23a8,0x1f155989,0xf9452e86,0xae2ff99c + DD 0x340ceaa2,0xd8dd953c,0x2e2e9333,0x26355275,0x8586f06d,0x15d4e5f9,0xf7cab546,0xd6bf94a8,0xb76a9af0,0x33c59a0a,0xba095af7,0x52740ab3,0x24389ca0,0xc444de8a,0x706da0cb,0xcc6f9863 + DD 0x6b2515cf,0xb5a741a7,0x9585c749,0x71c41601,0xe683de97,0x78350d4f,0x63d0b5f5,0x31d61524,0xfbce090b,0x7a0cc5e1,0xfbcb2a5b,0xaac927ed,0x20d84c35,0xe920de49,0x22b4de26,0x8c06a0b6 + DD 0xafe7ddf3,0xd34dd58b,0xc1e6e55b,0x55851fed,0x960696e7,0xd1395616,0x5f22705f,0x940304b2,0xb0a2a860,0x6f43f861,0x0e7cc981,0xcf121282,0x0ab64a96,0x12186212,0xb789383c,0x09215b9a + DD 0x37387c09,0x311eb305,0xf03ee760,0xc5832fce,0x32f7ea19,0x30358f58,0x91d53551,0xe01d3c34,0xda48ea80,0x1ca5ee41,0xcf4fa4c1,0x34e71e8e,0x7af1e1c7,0x312abd25,0x2153f4a5,0xe3afcdeb + DD 0x00235e9a,0x9d5c84d7,0x8c4c836f,0x0308d3f4,0x89332de5,0xc0a66b04,0x89e566ef,0x610dd399,0xd1ac1635,0xf8eea460,0x20a2c0df,0x84cbb3fb,0xe74a48c5,0x40afb488,0xd326b150,0x29738198 + DD 0xa6d74081,0x2a17747f,0x55a26214,0x60ea4c05,0x1f88c5fe,0x53514bb4,0x7e83426c,0xedd64567,0x96460b25,0xd5d6cbec,0x68dc115e,0xa12fd0ce,0x697840ea,0xc5bc3ed2,0xa6331e31,0x969876a8 + DD 0x472ff580,0x60c36217,0x4ad41393,0xf4229705,0xa03b8b92,0x4bd99ef0,0xc144f4f6,0x501c7317,0x18464945,0x159009b3,0x74c5c6be,0x6d5e594c,0x321a3660,0x2d587011,0x3898d022,0xd1e184b1 + DD 0x4c6a7e04,0x5ba04752,0x45550b65,0x47fa1e2b,0x48c0a9a5,0x9419daf0,0x7c243236,0x66362953,0x5cb12a88,0xcd0744b1,0x2b646188,0x561b6f9a,0x66c2c0c0,0x599415a5,0x0f83f09a,0xbe3f0859 + DD 0xb92041b8,0x9141c5be,0x26477d0d,0x01ae38c7,0xd12c7a94,0xca8b71f3,0x765c70db,0xfab5b31f,0x487443e9,0x76ae7492,0x990d1349,0x8595a310,0x7d460a37,0xf8dbeda8,0x1e45a38f,0x7f7ad082 + DD 0x1059705a,0xed1d4db6,0xe6b9c697,0xa3dd492a,0x6eb38bd5,0x4b92ee3a,0x67cc0bb7,0xbab2609d,0x6e70ee82,0x7fc4fe89,0x13e6b7e3,0xeff2c56e,0x34d26fca,0x9b18959e,0x889d6b45,0x2517ab66 + DD 0xbdefdd4f,0xf167b4e0,0xf366e401,0x69958465,0xa73bbec0,0x5aa368ab,0x7b240c21,0x12148709,0x18969006,0x378c3233,0xe1fe53d1,0xcb4d73ce,0x130c4361,0x5f50a80e,0x7ef5212b,0xd67f5951 + DD 0x9e70c72e,0xf145e21e,0x5566d2fb,0xb2e52e29,0x032397f5,0x44eaba4a,0x7e31a7de,0x5e56937b,0x456c61e1,0x68dcf517,0xa8b0a388,0xbc2e954a,0x60a8b755,0xe3552fa7,0x73ad0cde,0x03442dae + DD 0xceb26210,0x37ffe747,0x787baef9,0x983545e8,0x86a3de31,0x8b8c8535,0xfacd46db,0xc621dbcb,0x59266fbb,0x82e442e9,0x339d471c,0xa3514c37,0x62cdad96,0x3a11b771,0xecf9bdf0,0xf0cb3b3c + DD 0x478e2135,0x3fcbdbce,0xbda35342,0x7547b5cf,0x8a677af6,0xa97e81f1,0x28817987,0xc8c2bf83,0x45580985,0xdf07eaaf,0xc93b45cb,0xc68d1f05,0xc77b4cac,0x106aa2fe,0x04a7ae86,0x4c1d8afc + DD 0x9eb45ab2,0xdb41c3fd,0xd4b22e74,0x5b234b5b,0xf215958a,0xda253dec,0xa04edfa0,0x67e0606e,0xef751b11,0xabbbf070,0xf6f06dce,0xf352f175,0x6839f6b4,0xdfc4b6af,0x9959848e,0x53ddf9a8 + DD 0xc21520b0,0xda49c379,0xdbd5d1b6,0x90864ff0,0x5f49c7f7,0x2f055d23,0xa796b2d8,0xe51e4e6a,0x5c9dc340,0xc361a67f,0xbca7c620,0x5ad53c37,0x32c756d0,0xda1d6588,0x8bb67e13,0xad60d911 + DD 0x0eeec8c6,0xd6c47bdf,0x078a1821,0x4a27fec1,0xc3099524,0x081f7415,0x82cd8060,0x8effdf0b,0x65842df8,0xdb70ec1c,0xd319a901,0x8821b358,0xde42b529,0x72ee56ee,0x236e4286,0x5bb39592 + DD 0xfd6f7140,0xd1183316,0xbd8e81f7,0xf9fadb5b,0x5a02d962,0x701d5e0c,0x1b601324,0xfdee4dbf,0x35d7620e,0xbed17407,0xf48c0012,0x04e3c2c3,0x3455449a,0x9ee29da7,0x91a836c4,0x562cdef4 + DD 0x47701097,0x8f682a5f,0xff88d0c2,0x617125d8,0x57bb86dd,0x948fda24,0x289f7286,0x348abb8f,0x99d94bbd,0xeb10eab5,0x4684d160,0xd51ba28e,0x30c8f41a,0xabe0e51c,0x13254f4a,0x66588b45 + DD 0xfad097a5,0x147ebf01,0x610e815d,0x49883ea8,0x8a11de56,0xe44d60ba,0x827a7a6d,0xa970de6e,0x5e17fc19,0x2be41424,0x01214057,0xd833c657,0x363e723f,0x1375813b,0xe6a52e9b,0x6820bb88 + DD 0xd875d56a,0x7e7f6970,0x51fbf6bf,0xd6a0a9ac,0xa3083c12,0x54ba8790,0x6ae7eb64,0xebaeb23d,0xb99a907a,0xa8685c3a,0x026bf40b,0xf1e74550,0xc802cd9e,0x7b73a027,0x4fef4635,0x9a8a927c + DD 0x08191224,0xe1b6f60c,0xde4ec091,0xc4126ebb,0x4ae38d84,0xe1dff4dc,0x4f2ef985,0xde3f57db,0xd446a1dd,0x34964337,0x859e77f6,0x7bf217a0,0x8e1d13f5,0x8ff10527,0x74eeae27,0xa304ef03 + DD 0xd19dfa5a,0xfc6f5e47,0x7fad982b,0xdb007de3,0x613715f5,0x28205ad1,0x7889529e,0x251e6729,0x1ae98e78,0x72705184,0x271cac32,0xf818537d,0xb7f410f5,0xc8a15b7e,0x81f62393,0xc474356f + DD 0xc242316b,0x92dbdc5a,0xdbf4aff5,0xabe060ac,0x909a8ec6,0x6e8c38fe,0x6116cb94,0x43e514e5,0x07d784f9,0x2078fa38,0xf4b5b357,0x1161a880,0x13adea3d,0x5283ce79,0xcc6a910b,0x0756c3e6 + DD 0xaaa79697,0x60bcfe01,0x56391db1,0x04a73b29,0x189b45a0,0xdd8dad47,0x48d5b8d9,0xbfac0dd0,0x7d3d2ec2,0x34ab3af5,0x207bd3af,0x6fa2fc2d,0x66550ded,0x9ff40092,0x1fd5b913,0x719b3e87 + DD 0x6d17fbc7,0xa573a496,0x73d2b24e,0x0cd1a70a,0xb2676937,0x34e2c5ca,0xbf669f21,0xe7050b06,0x1ede9046,0xfbe948b6,0x97662659,0xa0530051,0xf10124c5,0x58cbd4ed,0xdd6c06c8,0xde2646e4 + DD 0x8cad38c0,0x332f8108,0x6bd68ae2,0x471b7e90,0x0d8e27a3,0x56ac3fb2,0x136b4b0d,0xb54660db,0xa6fd8de4,0x123a1e11,0xa37799ef,0x44dbffea,0xce6ac17c,0x4540b977,0xaf60acef,0x495173a8 + DD 0x391c2a82,0x9ebb284d,0x158308e8,0xbcdd4863,0x83f1edca,0x006f16ec,0x695dc6c8,0xa13e2c37,0x4a057a87,0x2ab756f0,0xa6b48f98,0xa8765500,0x68651c44,0x4252face,0xe1765e02,0xa52b540b + DD 0x16a0d2bb,0x4f922fc5,0x1a623499,0x0d5cc16c,0x57c62c8b,0x9241cf3a,0xfd1b667f,0x2f5e6961,0xf5a01797,0x5c15c70b,0x60956192,0x3d20b44d,0x071fdb52,0x04911b37,0x8d6f0f7b,0xf648f916 + DD 0xe60b7cf7,0x6dc1acaf,0x84a9d869,0x25860a50,0xe7ba8ac4,0x56fc6f09,0x6148d29e,0x828c5bd0,0xdc55ae5f,0xac6b435e,0xc0117411,0xa527f56c,0xfd24342c,0x94d5045e,0x70b67c0d,0x2c4c0a35 + DD 0xfac61d9a,0x027cc8b8,0xe3c6fe8a,0x7d25e062,0xe5bff503,0xe08805bf,0x6ff632f7,0x13271e6c,0x232f76a5,0x55dca6c0,0x701ef426,0x8957c32d,0xa10a5178,0xee728bcb,0xb62c5173,0x5ea60411 + DD 0xd0b8892b,0xfc4e964e,0x9301bb74,0x9ea17683,0xfcc48626,0x6265c5ae,0xbb3e9102,0xe60cf82e,0xd4df5531,0x57adf797,0x8deeefe2,0x235b59a1,0x3f306eb1,0x60adcf58,0x3d09492d,0x105c2753 + DD 0xb5def996,0x4090914b,0x233dd1e7,0x1cb69c83,0x9b3d5e76,0xc1e9c1d3,0xfccf6012,0x1f3338ed,0x2f5378a8,0xb1e95d0d,0x2f00cd21,0xacf4c2c7,0xeb5fe290,0x6e984240,0x248088ae,0xd66c038d + DD 0xf94d70cf,0x804d264a,0x7314bf7e,0xbdb802ef,0x4333ed02,0x8fb54de2,0x285635d9,0x740461e0,0x365e9383,0x4113b2c8,0x3fdef652,0xea762c83,0x47b956c1,0x4eec6e2e,0x65620fa4,0xa3d814be + DD 0xb4d8bc50,0x9ad5462b,0xa9195770,0x181c0b16,0x78412a68,0xebd4fe1c,0xc0dff48c,0xae0341bc,0x7003e866,0xb6bc45cf,0x8a24a41b,0xf11a6dea,0xd04c24c2,0x5407151a,0xda5b7b68,0x62c9d27d + DD 0x88cceff6,0x2e964235,0x8b07ed69,0x8594c54f,0xc84d0d0d,0x1578e73c,0xff532868,0x7b4e1055,0xb5ec995a,0xa348c0d5,0x14289a54,0xbf4b9d55,0x58fbd777,0x9ba155a6,0x1a84491d,0x186ed7a8 + DD 0x614c0900,0xd4992b30,0xbd00c24b,0xda98d121,0x7ec4bfa1,0x7f534dc8,0x37dc34bc,0x4a5ff674,0x1d7ea1d7,0x68c196b8,0x80a6d208,0x38cf2893,0xe3cbbd6e,0xfd56cd09,0x4205a5b6,0xec72e27e + DD 0xa44f77f7,0x15ea68f5,0xb43c52bc,0x7aa5f9fd,0x94f0e609,0x86ff676f,0x2e2d432b,0xa4cde963,0xeee470af,0x8cafa0c0,0x8a3f5ec8,0x84137d0e,0xfaa31231,0xebb40411,0x6f7f7ccf,0xa239c13f + DD 0xa8afd30b,0x32865719,0x8a826dce,0x86798328,0xc4a8fbe0,0xdf04e891,0xebf56ad3,0xbb6b6e1b,0x471f1ff0,0x0a695b11,0xbe15baf0,0xd76c3389,0xbe96c43e,0x018edb95,0x90794158,0xf2beaaf4 + DD 0xc3076a27,0x152db09e,0xe416545d,0x5e82908e,0x356d6f2e,0xa2c41272,0x31fd74e1,0xdc9c9642,0x519bf615,0x66ceb88d,0x05a2274e,0xe29ecd76,0xbf5e2fa0,0x3a0473c4,0x64284e67,0x6b6eb671 + DD 0xb88756dd,0xe8b97932,0xf17e3e61,0xed4e8652,0x3ee1c4a4,0xc2dd1499,0x597f8c0e,0xc0aaee17,0x6c168af3,0x15c4edb9,0xb39ae875,0x6563c7bf,0x20adb436,0xadfadb6f,0x9a042ac0,0xad55e8c9 + DD 0xb76da1f5,0x975a1ed8,0xa58acb94,0x10dfa466,0xac060282,0x8dd7f7e3,0x572a051e,0x6813e66a,0x350cb901,0xb4ccae1e,0x50cb7822,0xb653d656,0xdfab3b87,0x42484710,0x9b670fd0,0xcd7ee537 + DD 0x523b8bf6,0x0a50b12e,0x8f910c1b,0x8009eb5b,0x4a167588,0xf535af82,0xfb2a2abd,0x0f835f9c,0x2afceb62,0xf59b2931,0x169d383f,0xc797df2a,0x66ac02b0,0xeb3f5fb0,0xdaa2d0ca,0x029d4c6f + DD 0xafab4bc5,0xd4059bc1,0x56783247,0x833f5c6f,0x8d2d3605,0xb5346630,0xd34d8433,0x83387891,0xadd9419a,0xd973b30f,0xafe3fce8,0xbcca1099,0x0809aac6,0x08178315,0x540f0f11,0x01b7f21a + DD 0x909523c8,0x65c29219,0xa3a1c741,0xa62f648f,0x60c9e55a,0x88598d4f,0x0e4f347a,0xbce9141b,0x35f9b988,0x9af97d84,0x320475b6,0x0210da62,0x9191476c,0x3c076e22,0x44fc7834,0x7520dbd9 + DD 0xc1ab1bbd,0x6a6b2cfe,0xdc650938,0xef8a65be,0x805d7bc4,0x72855540,0xed11fdfd,0xda389396,0x74660876,0xa9d5bd36,0xb45dff35,0x11d67c54,0xa4f5da94,0x6af7d148,0xc0bbeb31,0xbb8d4c3f + DD 0xe0a1b12a,0x87a7ebd1,0x770ba95f,0x1e4ef88d,0xdc2ae9cb,0x8c33345c,0x01cc8403,0xcecf1276,0x1b39b80f,0x687c012e,0x35c33ba4,0xfd90d0ad,0x5c9661c2,0xa3ef5a67,0xe017429e,0x368fc88e + DD 0x196a2fa2,0xd30c6761,0xbd5b312e,0x931b9817,0x72f54a31,0xba01000c,0x66eaa541,0xa203d2c8,0x98939db3,0xf2abdee0,0x3e606c02,0xe37d6c2c,0x521ff643,0xf2921574,0xd7e2fca3,0x2781b3c4 + DD 0x7850ec06,0x664300b0,0x7d3a10cf,0xac5a38b9,0xe34ab39d,0x9233188d,0x5072cbb9,0xe77057e4,0xb59e78df,0xbcf0c042,0x1d97de52,0x4cfc91e8,0x3ee0ca4a,0x4661a26c,0xfb8507bc,0x5620a4c1 + DD 0x049f842c,0x4b44d4aa,0x1540e82b,0xceabc5d5,0x15c6f156,0x306710fd,0x63db1d72,0xbe5ae52b,0x334957f1,0x06f1e7e6,0x31144a70,0x57e388f0,0xdf96447b,0xfb69bb2f,0x73e38a12,0x0f78ebd3 + DD 0x2b7ce542,0xb8222605,0x7472bde1,0xe6d4ce99,0x09d2f4da,0x53e16ebe,0x53b92b2e,0x180ff42e,0x2c34a1c6,0xc59bcc02,0x422c46c2,0x3803d6f9,0x5c14a8a2,0x18aff74f,0x10a08b28,0x55aebf80 + DD 0x7135593f,0x66097d58,0x2be570cd,0x32e6eff7,0x2a8c860d,0x584e6a10,0xa2eb4163,0xcd185890,0x6d97e134,0x7ceae99d,0xdd8447ce,0xd42c6b70,0xb8c50273,0x59ddbb4a,0x3cf34e1e,0x03c612df + DD 0x04b6c5a0,0x84b9ca15,0x18f0e3a3,0x35216f39,0xbd986c00,0x3ec2d2bc,0xd19228fe,0x8bf546d9,0x4cd623c3,0xd1c655a4,0x502b8e5a,0x366ce718,0xeea0bfe7,0x2cfc84b4,0xcf443e8e,0xe01d5cee + DD 0x036520f8,0x8ec045d9,0x92d40e98,0xdfb3c3d1,0xcc559a04,0x0bac4cce,0x240ea6b1,0x35eccae5,0xf8a5a0ac,0x180b32db,0xeb699700,0x547972a5,0xca26bca0,0xa3765801,0xa647f25a,0x57e09d0e + DD 0x2fdd23cc,0xb956970e,0x5682e971,0xb80288bc,0x9ae86ebc,0xe6e6d91e,0x8c9f1939,0x0564c83f,0x39560368,0x551932a2,0x049c28e2,0xe893752b,0xa6a158c3,0x0b03cee5,0x04964263,0xe12d656b + DD 0x63e3bc1d,0x4b47554e,0x45044ff7,0xc719b6a2,0xe48daa07,0x4f24d30a,0xc8c1edc3,0xa3f37556,0x0700d360,0x9a47bf76,0x822ae4e2,0xbb1a1824,0x89f1fb4c,0x22e275a3,0x9968c5f5,0x72b1aa23 + DD 0xbe063f64,0xa75feaca,0xbce47a09,0x9b392f43,0x1ad07aca,0xd4241509,0x8d26cd0f,0x4b0c591b,0x92f1169a,0x2d42ddfd,0x4cbf2392,0x63aeb1ac,0x0691a2af,0x1de9e877,0xd98021da,0xebe79af7 + DD 0x40e50acf,0xcfdf2a4e,0xaf01d665,0xf0a98ad7,0x1831be1f,0xefb640bf,0x80e9ada0,0x6fe8bd2f,0x6cafbc91,0x94c103a1,0x8308e08c,0x170f8759,0x9780ff4f,0x5de2d2ab,0x45b201f2,0x666466bc + DD 0xf5b343bc,0x58af2010,0xf2f142fe,0x0f2e400a,0xa85f4bdf,0x3483bfde,0x03bfeaa9,0xf0b1d093,0xc7081603,0x2ea01b95,0x3dba1097,0xe943e4c9,0xb438f3a6,0x47be92ad,0xe5bf6636,0x00bb7742 + DD 0x824297b4,0x136b7083,0x5584455f,0x9d0e5580,0xf1c7d69e,0xab48cedc,0x2a256e76,0x53a9e481,0x65eb2413,0x0402b0e0,0x8fc407a7,0xdadbbb84,0x8d7f5492,0xa65cd5a4,0x74bae294,0x21d44293 + DD 0x3b5f1cc4,0x66917ce6,0xce872e62,0x37ae52ea,0x2905f244,0xbb087b72,0x1e6af74f,0x12077086,0x1058edea,0x4b644e49,0xb638ca1d,0x827510e3,0x6038591c,0x8cf2b704,0xfe635063,0xffc8b47a + DD 0x1b4d5e63,0x3ae220e6,0x9d961b4b,0xbd864742,0x9bd16bed,0x610c107e,0x1127147b,0x4270352a,0x64cfc50e,0x7d17ffe6,0x1e36cb42,0x50dee01a,0x35dc5f9a,0x068a7622,0xdf53f62c,0x9a08d536 + DD 0x6be5f7de,0x4ed71457,0xc2263c9e,0xd93006f8,0xcacacb36,0xe073694c,0x3ae118ab,0x2ff7a5b4,0xcd871236,0x3cce53f1,0xc2aa6d52,0xf156a39d,0xb198d76d,0x9cc5f271,0x81383d39,0xbc615b6f + DD 0xde3eee6b,0xa54538e8,0xab910d91,0x58c77538,0x58d278bd,0x31e5bdbc,0xb963acae,0x3cde4adf,0x5302169c,0xb1881fd2,0xa989ed8b,0x8ca60fa0,0xff96a0ee,0xa1999458,0xac6c283d,0xc1141f03 + DD 0x6dfafed3,0x7677408d,0x39661588,0x33a01653,0x0b726fa0,0x3c9c15ec,0x6c9b56da,0x090cfd93,0xa3c40af5,0xe34f4bae,0xd21129f1,0x3469eadb,0x1e207ce8,0xcc51674a,0xc83b1ef9,0x1e293b24 + DD 0x1e6c0bb4,0x17173d13,0x90776d35,0x19004695,0x6de6f922,0xe7980e34,0xf4dd9a22,0x873554cb,0xcbf18a51,0x0316c627,0x3032c081,0x4d93651b,0x3946834d,0x207f2771,0x30cdbf80,0x2c08d7b4 + DD 0x86df2a61,0x137a4fb4,0xecf7b4a2,0xa1ed9c07,0x7bd042ff,0xb2e460e2,0x5f62f5ec,0xb7f5e2fa,0xcc2423b7,0x7aa6ec6b,0xba63eea7,0x75ce0a7f,0xf250a6e1,0x67a45fb1,0xe53cdc9f,0x93bc919c + DD 0x871942df,0x9271f56f,0x7859ad66,0x2372ff6f,0x33cb1a78,0x5f4c2b96,0x5838aa83,0xe3e29101,0xe4e8110c,0xa7ed1611,0x330198ce,0x2a2d70d5,0x6720efe0,0xbdf132e8,0x66a471bf,0xe61a8962 + DD 0x825808bd,0x796d3a85,0x3fd6e902,0x51dc3cb7,0x916219d1,0x643c768a,0xa2ad7d32,0x36cd7685,0xb22922a4,0xe3db9d05,0xdba29660,0x6494c87e,0xbcd2ebc7,0xf0ac91df,0x45107f8d,0x4deb57a0 + DD 0xc3d12a73,0x42271f59,0xa5c2c51d,0x5f71687c,0x05797bcb,0xcb1f50c6,0xd6d34eb0,0x29ed0ed9,0x4683c2eb,0xe5fe5b47,0x97447c46,0x4956eeb5,0x71207167,0x5b163a43,0x0248c5ef,0x93fa2fed + DD 0x31f63950,0x67930af2,0x14caa2c9,0xa77797c1,0x27ac7e62,0x526e80ee,0x58b28aec,0xe1e6e626,0xb3c9fef0,0x636178b0,0x6d5f90be,0xaf7752e0,0xeece51cf,0x94ecaf18,0xca806e1f,0x2864d0ed + DD 0x97c69134,0x6de2e383,0xeb291293,0x5a42c316,0x6a60bae0,0xc7779219,0x6b7599d1,0xa24de346,0xb75d4941,0x49d374aa,0x2d501ff0,0x98900586,0xeb7974cf,0x9f16d40e,0xcdd8c115,0x1033860b + DD 0x2094cec3,0xb6c69ac8,0x403b770c,0x9976fb88,0x4859590d,0x1dea026c,0x8562d1fd,0xb6acbb46,0x44569d85,0x7cd6c461,0x97f0891d,0xc3190a36,0x48d5a17d,0xc6f53195,0xd749abc8,0x7d919966 + DD 0xdd1c8a20,0x65104837,0x2f683419,0x7e5410c8,0xbe94022e,0x958c3ca8,0x6145dac2,0x605c3197,0x01683d54,0x3fc07501,0x595b1234,0x1d7127c5,0x9481277f,0x10b8f87c,0xe65a1adb,0x677db2a8 + DD 0xddce3345,0xec2fccaa,0x012a4350,0x2a6811b7,0xac598bdc,0x96760ff1,0xd1bf4128,0x054d652a,0x92a21005,0x0a1151d4,0x33110fdf,0xad7f3971,0x1960100f,0x8c95928c,0x7bf03362,0x6c91c825 + DD 0xce309f06,0xc8c8b2a2,0xca27204b,0xfdb27b59,0x0848e32e,0xd223eaa5,0xe7bfaf1e,0xb93e4b2e,0x44aa3ded,0xc5308ae6,0xc015d573,0x317a666a,0x1a979707,0xc888ce23,0x0d5c4958,0xf141c1e6 + DD 0x61906373,0xb53b7de5,0xeb999595,0x858dbade,0xa59e5c36,0x8cbb47b2,0xdcf4e842,0x660318b3,0x12ba4b7a,0xbd161ccd,0xf8c8282a,0xf399daab,0xeeb2130d,0x1587633a,0xda38dd7d,0xa465311a + DD 0x64d3779b,0x5f75eec8,0xad64c171,0x3c5d0476,0x2a914428,0x87410371,0x90e2fc29,0x8096a891,0x23b3ebc2,0xd3d2ae9d,0xa580cfd6,0x90bdd6db,0xc5b01f6c,0x52dbb7f3,0xe102a2dc,0xe68eded4 + DD 0x99eb6df0,0x17785b77,0x7386b779,0x26c3cc51,0x6417a48e,0x345ed988,0x07d6ef31,0xe990b4e4,0x2586abba,0x0f456b7e,0x59c96e9a,0x239ca6a5,0xe2eb4206,0xe327459c,0xa002b90a,0x3a4c3313 + DD 0xf6a3f6fb,0x2a114806,0x85c251dd,0xad5cad2f,0xf5a784d3,0x92c1f613,0x349766d5,0xec7bfacf,0x3e23cb3b,0x04b3cd33,0xc5a64b2d,0x3979fe84,0x7e589106,0x192e2720,0xa15b527f,0xa60c43d1 + DD 0xbe7cf3a6,0x2dae9082,0xbc967274,0xcc86ba92,0xaea0a8a9,0xf28a2ce8,0x6ee988b3,0x404ca6d9,0x005921b8,0xfd7e9c5d,0x44e79bf9,0xf56297f1,0x0d75ddc2,0xa163b460,0xa1f2be87,0x30b23616 + DD 0xbfe50e2b,0x4b070d21,0xe1bfede1,0x7ef8cfd0,0x2aac4ae0,0xadba0011,0xb9ebd033,0x2a3e7d01,0xe38d9d1c,0x995277ec,0x9c5d2de3,0xb500249e,0xf13ca8c9,0x8912b820,0x877793af,0xc8798114 + DD 0xec3f1dec,0x19e6125d,0x911178da,0x07b1f040,0x904a6738,0xd93ededa,0x0bebedcd,0x55187a5a,0xeb329d41,0xf7d04722,0xf170b391,0xf449099e,0xca99f828,0xfd317a69,0x34a4976d,0x50c3db2b + DD 0x3757b392,0xe9ba7784,0xaa3ca05a,0x326caefd,0xf1e593d4,0x78e5293b,0x0d98fd13,0x7842a937,0x5f96b10d,0xe694bf96,0x06a8cd05,0x373a9df6,0xe8f0c7fc,0x997d1e51,0x63fd972e,0x1d019790 + DD 0x5499fb32,0x0064d858,0x77a8aeb7,0x7b67bad9,0x2d08eec5,0x1d3eb977,0xcbabae1d,0x5fc047a6,0xe54a64bb,0x0577d159,0xc43497e4,0x8862201b,0x2ce0608d,0xad6b4e28,0x0b167aac,0x8b687b7d + DD 0x8b2ecfa9,0x6ed4d367,0xa90c3c38,0x24dfe62d,0x3fe5c42b,0xa1862e10,0xd5732a9f,0x1ca73dca,0x76bb87ad,0x35f038b7,0xf242b81f,0x674976ab,0xb0fd90cd,0x4f2bde7e,0xa7fdf092,0x6efc172e + DD 0x92222f1f,0x3806b69b,0x6cf7ae70,0x5a2459ca,0xa85217ee,0x6789f69c,0xe3dc85ac,0x5f232b5e,0x48e9e516,0x660e3ec5,0x3197eb31,0x124b4e47,0xaafcca23,0x10a0cb13,0x8213224f,0x7bd63ba4 + DD 0x290a7f4f,0xaffad7cc,0x0286b461,0x6b409c9e,0xffa407af,0x58ab809f,0xc68ac073,0xc3122eed,0x4ef24d7e,0x17bf9e50,0x3e2a5811,0x5d929794,0x02902e01,0x519bc867,0x39c8a851,0x76bba5da + DD 0xda94951e,0xe9f9669c,0x66b8d418,0x4b6af58d,0x17d426a4,0xfa321074,0x9dde6027,0xc78e66a9,0x4a53b964,0x0516c083,0xff602330,0xfc659d38,0x58c5c897,0x0ab55e5c,0x838bc5df,0x985099b2 + DD 0xc52fc238,0x061d9efc,0x6ac1da3f,0x712b2728,0x9283fe08,0xfb658149,0xb8aaa2f7,0x4954ac94,0x7fb2e74f,0x85c0ada4,0xb89926b0,0xee8ba98e,0x23d1af5b,0xe4f9d37d,0xba9b015e,0x14ccdbf9 + DD 0x7bfe7178,0xb674481b,0x65405868,0x4e1debae,0xc48c867d,0x061b2821,0x513b30ea,0x69c15b35,0x36871088,0x3b4a1666,0x1220b1ff,0xe5e29f5d,0x233d9f4d,0x4b82bb35,0x18cdc675,0x4e076333 + DD 0xa3e6fced,0x0d53f5c7,0xf45fbdeb,0xe8cbbdd5,0x13339a70,0xf85c01df,0x142ceb81,0x0ff71880,0xbd70437a,0x4c4e8774,0xba0bda6a,0x5fb32891,0xf18bd26e,0x1cdbebd2,0x03a9d522,0x2f9526f1 + DD 0x92c4d684,0x40ce3051,0x7612efcd,0x8b04d725,0x6f9cae20,0xb9dcda36,0xf058856c,0x0edc4d24,0x85427900,0x64f2e6bf,0xdc09dfea,0x3de81295,0x379bf26c,0xd41b4487,0x6df135a9,0x50b62c6d + DD 0xc72dfe67,0xd4f8e3b4,0x90e19fdf,0xc416b0f6,0x4c13bd35,0x18b9098d,0x15b8cb9e,0xac11118a,0xf0062841,0xf598a318,0x89f356f4,0xbfe0602f,0x30177a0c,0x7ae3637e,0x61136537,0x34097747 + DD 0xd005832a,0x0db2fb5e,0x91042e4f,0x5f5efd3b,0xed70f8ca,0x8c4ffdc6,0xb52da9cc,0xe4645d0b,0xc9001d1f,0x9596f58b,0x4e117205,0x52c8f0bc,0xe398a084,0xfd4aa0d2,0x104f49de,0x815bfe3a + DD 0x23885e5f,0x97e5443f,0xe8433aab,0xf72f8f99,0xe4d4e604,0xbd00b154,0xe5e173ff,0xd0b35e6a,0x9164722d,0x57b2a048,0x88761ec8,0x3e3c665b,0x3da83832,0x6bdd1397,0x73dafe3b,0x3c8b1a1e + DD 0x54317cac,0x4497ace6,0x521771b3,0xbe600ab9,0xb0dfe8b8,0xb42e409e,0x3942310f,0x386a67d7,0x4431cc28,0x25548d8d,0x985dc524,0xa7cff142,0x93c4be32,0x4d60f5a1,0xd071c6e1,0x83ebd5c8 + DD 0xb1fd2b0b,0xba3a80a7,0x5bec33e8,0x9b3ad396,0x79743fb3,0xb3868d61,0xfdb462fa,0xcfd169fc,0x9ce0a6af,0xd3b499d7,0xe42d3ff8,0x55dc1cf1,0xc6c3e1b2,0x04fb9e6c,0x6f69a474,0x47e6961d + DD 0xe548b37b,0x54eb3acc,0x84d40549,0xb38e7542,0x7b341b4f,0x8c3daa51,0x690bf7fa,0x2f6928ec,0x86ce6c41,0x0496b323,0x10adadcd,0x01be1c55,0x4bb5faf9,0xc04e67e7,0xe15c9985,0x3cbaf678 + DD 0x50ca4247,0x8cd12145,0xe7dd30aa,0xba1aa47a,0xe58fee24,0x2f81ddf1,0xeec9b0e8,0x03452936,0x243aea96,0x8bdc3b81,0x15c3d0e5,0x9a2919af,0x10948361,0x9ea640ec,0x6e0bcccf,0x5ac86d5b + DD 0xc36cf440,0xf892d918,0xc939719c,0xaed3e837,0xc0218b64,0xb07b08d2,0xce9790dd,0x6f1bcbba,0x60919b8e,0x4a84d6ed,0x8ac1f9eb,0xd8900791,0x0dd5daef,0xf84941aa,0x67fd62c5,0xb22fe40a + DD 0x157f2db3,0x97e15ba2,0x8e28ca9c,0xbda2fc8f,0x37b9f454,0x5d050da4,0x2379d72e,0x3d57eb57,0xfb5ee997,0xe9b5eba2,0xe11538ca,0x01648ca2,0xf6327974,0x32bb76f6,0xff3f4bb7,0x338f14b8 + DD 0xd7ab9a2d,0x524d226a,0x7dfae958,0x9c00090d,0x8751d8c2,0x0ba5f539,0x3ab8262d,0x8afcbcdd,0xe99d043b,0x57392729,0xaebc943a,0xef51263b,0x20862935,0x9feace93,0xb06c817b,0x639efc03 + DD 0x66b4be7a,0x1fe054b3,0x84a37a1e,0x3f25a9de,0x78d75cd9,0xf39ef1ad,0x5062c1b5,0xd7b58f49,0xff563436,0x6f74f9a9,0xe8af51e7,0xf718ff29,0x15e97fec,0x5234d313,0x292f1c0a,0xb6a8e2b1 + DD 0x327720c1,0xa7f53aa8,0xba092cc8,0x956ca322,0x28746c4d,0x8f03d64a,0x66d0d392,0x51fe1782,0x3c832c80,0xd19b34db,0x6da2e3b4,0x60dccc5c,0x0a104ccc,0x245dd62e,0x620b21fd,0xa7ab1de1 + DD 0x3893d123,0xb293ae0b,0xb15ee71c,0xf7b75783,0x42a9468b,0x5aa3c614,0xdb15d744,0xd686123c,0xa7ab4116,0x8c616891,0xa4e6a459,0x6fcd72c8,0x77e5fad7,0xac219110,0x704fa46b,0xfb6a20e7 + DD 0x341d81dc,0xe839be7d,0x32148379,0xcddb6889,0xf7026ead,0xda6211a1,0xf4d1cc5e,0xf3b2575f,0xa7a73ae6,0x40cfc8f6,0x61d5b483,0x83879a5e,0x41a50ebc,0xc5acb1ed,0x3c07d8fa,0x59a60cc8 + DD 0xb1876262,0x1b73bdce,0x12af4ee9,0x2b0d79f0,0xd46e1d07,0x8bcf3b0b,0xe45d152f,0x17d6af9d,0x6d736451,0x73520461,0x56b0bf5a,0x43cbbd97,0xd5999b9d,0xb0833a5b,0xeb72e398,0x702614f0 + DD 0x59c3e9f8,0x0aadf01a,0xce6b3d16,0x40200e77,0xdeddafad,0xda22bdd3,0x310d72e1,0x76dedaf4,0x4bc2e88f,0x49ef807c,0x146dd5a5,0x6ba81291,0x7d8d59e9,0xa1a4077a,0x802db349,0x87b6a2e7 + DD 0x1b4e598e,0xd5679997,0x06fe4b1d,0xf499ef1f,0xfcb267c5,0x3978d3ae,0x235786d0,0xb582b557,0x1715cb07,0x32b3b2ca,0x8480241d,0x4c3de6a2,0xcb571ecd,0x63b5ffed,0xed2fe9a9,0xeaf53900 + DD 0xc3b81990,0xdec98d4a,0x9e0cc8fe,0x1cb83722,0xd2b427b9,0xfe0b0491,0xe983a66c,0x0f2386ac,0xb3291213,0x930c4d1e,0x59a62ae4,0xa2f82b2e,0xf93e89e3,0x77233853,0x11777c7f,0x7f8063ac + DD 0x59ad2877,0xff0eb567,0x9865c754,0x6f454642,0x236e9a84,0xe6fe701a,0x06e40fc3,0xc586ef16,0x24bafad9,0x3f62b6e0,0x64da906a,0xc8b42bd2,0xda3276a0,0xc98e1eb4,0x06cbf852,0x30d0e5fc + DD 0xe8b4dfd4,0x1b6b2ae1,0x8301cbac,0xd754d5c7,0x112a39ac,0x66097629,0x93ba4ab9,0xf86b5999,0x99f9d581,0x26c9dea7,0xc2fafeaa,0x0473b1a8,0x3b2505a5,0x1469af55,0xd6a43323,0x227d16d7 + DD 0xad3d97f9,0x3316f73c,0x1f137455,0x52bf3bb5,0x09954e7c,0x953eafeb,0xdd732411,0xa721dfed,0x141d4579,0xb4929821,0xaa3bd435,0x3411321c,0x17fa6015,0xafb355aa,0x18e42f0e,0xb4e7ef4a + DD 0x59371000,0x604ac97c,0x7f759c18,0xe1c48c70,0xa5db6b65,0x3f62ecc5,0x38a21495,0x0a78b173,0xbcc8ad94,0x6be1819d,0xd89c3400,0x70dc04f6,0xa6b4840a,0x462557b4,0x60bd21c0,0x544c6ade + DD 0x907a544b,0x6a00f24e,0x313da210,0xa7520dcb,0x11e4994b,0xfe939b75,0xbc275d70,0x918b6ba6,0x644be892,0xd3e5e0fc,0xfdaf6c42,0x707a9816,0xf15c13fe,0x60145567,0xe130a54a,0x4818ebaa + DD 0x58d2f767,0x28aad3ad,0xd7e7c773,0xdc5267fd,0xc3afcc98,0x4919cc88,0x2db8cd4b,0xaa2e6ab0,0xd0c63eaa,0xd46fec04,0x19ffa832,0xa1cb92c5,0xe43a631f,0x678dd178,0x3dc788b3,0xfb5ae1cd + DD 0x6e77de04,0x68b4fb90,0xf06dbb97,0x7992bcf0,0xc417c01d,0x896e6a13,0xb956be01,0x8d96332c,0x413aa2b9,0x902fc93a,0xfc98c8a5,0x99a4d915,0x565f1137,0x52c29407,0x21e4f281,0x4072690f + DD 0x02ff6072,0x36e607cf,0x8ad98cdc,0xa47d2ca9,0xf5f56609,0xbf471d1e,0xf264ada0,0xbcf86623,0xaa9e5cb6,0xb70c0687,0x17401c6c,0xc98124f2,0xd4a61435,0x8189635f,0xa9d98ea6,0xd28fb8af + DD 0x40c251f8,0xb9a67c2a,0xa2da44be,0x88cd5d87,0xe09b5423,0x437deb96,0x64287dc1,0x150467db,0xcdabb839,0xe161debb,0xf1839a3e,0xa79e9742,0x652d202b,0xbb8dd3c2,0xe9f97d96,0x7b3e67f7 + DD 0xb1cb6ac9,0x5aa5d78f,0xca1d0d45,0xffa13e8e,0x2ba5bf95,0x369295dd,0x39aff05e,0xd68bd1f8,0x26d783f2,0xaf0d86f9,0xfc3aafc1,0x543a59b3,0x7b7da97c,0x3fcf81d2,0xd25dee46,0xc990a056 + DD 0x519cce2c,0x3e6775b8,0xae13d863,0xfc9af71f,0x47c1605c,0x774a4a6f,0x2fd205e8,0x46ba4245,0xd3fd524d,0xa06feea4,0x6de1acc2,0x1e724641,0x334e2b42,0xf53816f1,0x922f0024,0x49e5918e + DD 0x65c7322d,0x439530b6,0xb3c1b3fb,0xcf12cc01,0x0172f685,0xc70b0186,0x1b58391d,0xb915ee22,0xa317db24,0x9afdf03b,0x17b8ffc4,0x87dec659,0xe4d3d050,0x7f46597b,0x006500e7,0x80a1c1ed + DD 0x78bf030e,0x84902a96,0x50560148,0xfb5e9c9a,0x63362426,0x6dae0a92,0xa9e30c40,0xdcaeecf4,0x518d0c6b,0xc0d887bb,0xcb985b9d,0x99181152,0xef7bc381,0xad186898,0x9ee46201,0x18168ffb + DD 0x2502753c,0x9a04cdaa,0x51407c41,0xbb279e26,0xf23564e5,0xeacb03aa,0x71e61016,0x18336582,0xeb809877,0x8684b8c4,0xea0e672e,0xb336e18d,0x34ee5867,0xefb601f0,0x1341cfd1,0x2733edbe + DD 0x26025c3c,0xb15e809a,0x9350df88,0xe6e981a6,0x8502fd8e,0x92376237,0x0c12be9b,0x4791f216,0x25f02425,0xb7256789,0x7a974443,0xec863194,0xfb41cc52,0x7c0ce882,0xf25c07f2,0xc266ff7e + DD 0x017025f3,0x3d4da8c3,0xfb9579b4,0xefcf628c,0x1f3716ec,0x5c4d0016,0x6801116e,0x9c27ebc4,0x1da1767e,0x5eba0ea1,0x47004c57,0xfe151452,0x8c2373b7,0x3ace6df6,0x5dbc37ac,0x75c3dffe + DD 0xddc925fc,0x3dc32a73,0x2f65ee0b,0xb679c841,0x451cbfeb,0x715a3295,0xf76e9a29,0xd9889768,0xb28ad247,0xec20ce7f,0x00894d79,0xe99146c4,0x9f5e3ea7,0x71457d7c,0x38030031,0x097b2662 + DD 0xcf9f82a8,0xdb7f6ae6,0x438f473a,0x319decb9,0x283856c3,0xa63ab386,0xb06a361b,0x13e3172f,0x7d5a006c,0x2959f8dc,0x75fba752,0x2dbc27c6,0x87c22c9e,0xc1227ab2,0x71a268b2,0x06f61f75 + DD 0x04779ce2,0x1b6bb971,0x0aadcb1d,0xaca83812,0xaeaab2d5,0x297ae0bc,0x5bfb9f13,0xa5c14ee7,0xf17a62c7,0xaa00c583,0x173759f6,0x39eb962c,0x86c9a88f,0x1eeba1d4,0xdf016c5e,0x0ab6c37a + DD 0xa28a0749,0xa2a147db,0xee519165,0x246c20d6,0xd3810715,0x5068d1b1,0x748160b9,0xb1e7018c,0xf380ff62,0x03f5b1fa,0xf3cb2c1e,0xef7fb1dd,0xfc91a7da,0xeab539a8,0xf3f9b561,0x83ddb707 + DD 0xfe7df7a4,0xc550e211,0x063f6f40,0xa7cd07f2,0x2976879c,0xb0de3635,0xe55741da,0xb5f83f85,0xf3d8ac3d,0x4ea9d25e,0x62819f02,0x6fe2066f,0xcef4a564,0x4ab2b9c2,0x5ffa2de3,0x1e155d96 + DD 0xc3a72d00,0x0eb0a19b,0x8513c31b,0x4037665b,0x04c64637,0x2fb2b6bf,0x08cdc639,0x45c34d6e,0xf01fd796,0x56f1e10f,0xfe3667b8,0x4dfb8101,0x9021d0c0,0xe0eda253,0x8a06c6ab,0x7a94e9ff + DD 0xbb9aa882,0x2d3bb0d9,0xec05fd10,0xea20e4e5,0x1a1ca64e,0xed7eeb5f,0xc6327cbd,0x2fa6b43c,0x3aa91121,0xb577e3cf,0x3a34079b,0x8c6bd5ea,0x60e02fc0,0xd7e5ba39,0x90141bf8,0xf16dd2c3 + DD 0x80101b98,0xb57276d9,0xb82f0f66,0x760883fd,0x4bc3eff3,0x89d7de75,0x5dc2ab40,0x03b60643,0xe05beeac,0xcd6e53df,0xbc3325cd,0xf2f1e862,0x774f03c3,0xdd0f7921,0x4552cc1b,0x97ca7221 + DD 0x1cd19f72,0x5a0d6afe,0xf183fbeb,0xa20915dc,0x832c403c,0x9fda4b40,0xbe425442,0x32738edd,0xb5eccf1a,0x469a1df6,0x28bbe1f0,0x4b5aff42,0x570dfc93,0x31359d7f,0xf0088628,0xa18be235 + DD 0xb00ed3a9,0xa5b30fba,0x73cdf8be,0x34c61374,0xabc56797,0x2c5c5f46,0xb82a8ae2,0x5cecf93d,0xa968fbf0,0x7d3dbe41,0x1a5c7f3d,0xd23d4583,0xc087a9c7,0xf28f69a0,0x474471ca,0xc2d75471 + DD 0x4eb732ec,0x36ec9f4a,0xb1ca6bed,0x6c943bbd,0xf2457892,0xd64535e1,0xf7e2ac06,0x8b84a8ea,0x2499dd5f,0xe0936cd3,0x0ed04e57,0x12053d7e,0xe4305d9d,0x4bdd0076,0x1f67f0a2,0x34a527b9 + DD 0x9cec46ea,0xe79a4af0,0x658b9bc7,0xb15347a1,0x35af2f75,0x6bd2796f,0x4051c435,0xac957990,0xc33a655d,0x2669dda3,0x88514aa3,0x5d503c2e,0x3753dd41,0xdfa11337,0x0b754f78,0x3f054673 + DD 0x496125bd,0xbf185677,0x3775006c,0xfb0023c8,0x3a037899,0xfa0f072f,0x0e4aea57,0x4222b6eb,0x7866d25a,0x3dde5e76,0x4837aa6f,0xb6eb04f8,0x2cf1cdb8,0x5315591a,0x2d4e683c,0x6dfb4f41 + DD 0x48ee1f3a,0x7e923ea4,0x05a2afd5,0x9604d9f7,0x40ea4948,0xbe1d4a33,0xb44cbd2f,0x5b45f1f4,0x4acc757e,0x5faf8376,0x63d68ff7,0xa7cf9ab8,0xdf0e404b,0x8ad62f69,0x12bdafdf,0xd65f33c2 + DD 0xa377b14e,0xc365de15,0x8e39f60c,0x6bf5463b,0x2ce68148,0x62030d2d,0xe6f843a8,0xd95867ef,0xef5ab017,0xd39a0244,0x4ab55d12,0x0bd2d8c1,0x41639169,0xc9503db3,0xf7660c8a,0x2d4e25b0 + DD 0xe224c5d7,0x760cb3b5,0x68616919,0xfa3baf8c,0x8d142552,0x9fbca113,0x7669ebf5,0x1ab18bf1,0x9bdf25dd,0x55e6f53e,0xcb6cd154,0x04cc0bf3,0x95e89080,0x595bef49,0x104a9ac1,0xfe9459a8 + DD 0xcce9bb32,0xad2d89ca,0xf7de8285,0xddea65e1,0xb351bd4b,0x62ed8c35,0x0c0e19a7,0x4150ff36,0x345f4e47,0x86e3c801,0x203a266c,0x3bf21f71,0x855b1f13,0x7ae110d4,0x07262517,0x5d6aaf6a + DD 0x813d28f1,0x1e0f12e1,0x7ad7a523,0x6000e11d,0xc744a17b,0xc7d8deef,0x14c05a00,0x1e990b48,0x93e976d5,0x68fddaee,0x46610d63,0x696241d1,0x893dda88,0xb204e7c3,0x6a3a6946,0x8bccfa65 + DD 0xc5cd1411,0xb59425b4,0xff3658b1,0x701b4042,0x4784cf93,0xe3e56bca,0x8fe68d60,0x27de5f15,0xf8d53f19,0x4ab9cfce,0xa40a730d,0xddb10311,0x4eee0a8a,0x6fa73cd1,0x5249719d,0xfd548748 + DD 0xa8123ef0,0x49d66316,0xe7f95438,0x73c32db4,0x0d9e7854,0x2e2ed209,0x9d9f0507,0xf98a9329,0x0c6aa20a,0xc5d33cf6,0x75279bb2,0x9a32ba14,0x774a7307,0x7e3202cb,0xe8c42dbd,0x64ed4bc4 + DD 0xd4caed0d,0xc20f1a06,0x171d22b3,0xb8021407,0xd13268d7,0xd426ca04,0x25f4d126,0x92377007,0x71f21a85,0x4204cbc3,0xf82369ba,0x18461b7a,0x3fc858f9,0xc0c07d31,0xe2bab569,0x5deb5a50 + DD 0xd5eea89e,0xd5959d46,0x08437f4b,0xfdff8424,0x3cfe254f,0xf21071e4,0x95468321,0x72417696,0x102cae3e,0x5d8288b9,0xf1965dff,0x2d143e3d,0xa078d847,0x00c9a376,0x26028731,0x6fc0da31 + DD 0xe45083a2,0xa2baeadf,0x5e5b4bcd,0x66bc7218,0xd04b8e7f,0x2c826442,0x6c4b586b,0xc19f5451,0x5b7eeed5,0x60182c49,0x7aa9dfa1,0xd9954ecd,0xc73884ad,0xa403a8ec,0x9bb39041,0x7fb17de2 + DD 0xabb020e8,0x694b64c5,0x19c4eec7,0x3d18c184,0x1c4793e5,0x9c4673ef,0x056092e6,0xc7b8aeb5,0xf0f8c16b,0x3aa1ca43,0xd679b2f6,0x224ed5ec,0x55a205c9,0x0d56eeaf,0x4b8e028b,0xbfe115ba + DD 0x3927f4fe,0x97e60849,0x759aa7c5,0xf91fbf94,0x6be90a51,0x985af769,0x78ccb823,0xc1277b78,0xe7a75952,0x395b656e,0x928da5f5,0x00df7de0,0x4ca4454f,0x09c23175,0x7aa2d3c1,0x4ec971f4 + DD 0xe75d9ccc,0x45c3c507,0x3dc90306,0x63b7be8a,0x5db44bdc,0x37e09c66,0x6841c6a2,0x50d60da1,0x08df1b12,0x6f9b65ee,0x7ff089df,0x38734879,0x3fe8013d,0x9c331a66,0x5f42fcc8,0x017f5de9 + DD 0xe8e57567,0x43077866,0xf9fcdb18,0xc9f781ce,0x9b12e174,0x38131dda,0x8a03752a,0x25d84aa3,0x4d0c0ce2,0x45e09e09,0x92bebba5,0x1564008b,0xa87284c7,0xf7e8ad31,0x97e7bbaa,0xb7c4b46c + DD 0x97acf4ec,0x3e22a7b3,0x5ea8b640,0x0426c400,0x4e969285,0x5e3295a6,0xa6a45670,0x22aabc59,0x5f5942bc,0xb929714c,0xfa3182ed,0x9a6168bd,0x104152ba,0x2216a665,0xb6926368,0x46908d03 + DD 0x5a1251fb,0xa9f5d874,0xc72725c7,0x967747a8,0x31ffe89e,0x195c33e5,0xe964935e,0x609d210f,0x2fe12227,0xcafd6ca8,0x0426469d,0xaf9b5b96,0x5693183c,0x2e9ee04c,0xc8146fef,0x1084a333 + DD 0xaed1d1f7,0x96649933,0x50563090,0x566eaff3,0xad2e39cf,0x345057f0,0x1f832124,0x148ff65b,0xcf94cf0d,0x042e89d4,0x520c58b3,0x319bec84,0x5361aa0d,0x2a267626,0x8fbc87ad,0xc86fa302 + DD 0x5c8b06d5,0xfc83d2ab,0xfe4eac46,0xb1a785a2,0x846f7779,0xb99315bc,0xef9ea505,0xcf31d816,0x15d7dc85,0x2391fe6a,0xb4016b33,0x2f132b04,0x181cb4c7,0x29547fe3,0x650155a1,0xdb66d8a6 + DD 0xadc1696f,0x6b66d7e1,0x0acd72d0,0x98ebe593,0xcc1b7435,0x65f24550,0xb4b9a5ec,0xce231393,0xdb067df9,0x234a22d4,0xcaff9b00,0x98dda095,0x6100c9c1,0x1bbc75a0,0x939cf695,0x1560a9c8 + DD 0x99e0925f,0xcf006d3e,0x6322375a,0x2dd74a96,0xb56af5ba,0xc58b446a,0xe0b9b4f1,0x50292683,0x1aeaffa3,0xe2c34cb4,0x9b9587c1,0x8b17203f,0xead1350c,0x6d559207,0xfb7f9604,0x2b66a215 + DD 0xfe51bf74,0x0850325e,0x5e460094,0x9c4f579e,0x76da2f25,0x5c87b92a,0x6febef33,0x889de4e0,0x646083ce,0x6900ec06,0xbfe12773,0xbe2a0335,0xc5344110,0xadd1da35,0xb802cd20,0x757568b7 + DD 0x00f7e6c8,0x75559779,0x0facd2f0,0x38e8b94f,0x03fde375,0xfea1f3af,0x75881dfc,0x5e11a1d8,0xc1e2f2ef,0xb3a6b02e,0xc605a6c5,0x193d2bbb,0x339a0b2d,0x325ffeee,0x9e0c8846,0x27b6a724 + DD 0xf1c367ca,0xe4050f1c,0xc90fbc7d,0x9bc85a9b,0xe1a11032,0xa373c4a2,0xad0393a9,0xb64232b7,0x167dad29,0xf5577eb0,0x94b78ab2,0x1604f301,0xe829348b,0x0baa94af,0x41654342,0x77fbd8dd + DD 0xb964e39a,0xdab50ea5,0xd0d3c76e,0xd4c29e3c,0x56d11964,0x80dae67c,0xe5ffcc2f,0x7307a8bf,0x91708c3b,0x65bbc1aa,0x28bf0eeb,0xa151e62c,0x6fa34db7,0x6cb53381,0xa29403a8,0x5139e05c + DD 0x94a7cd2e,0x6ff651b4,0x0699336c,0x5671ffd1,0x979a896a,0x6f5fd2cc,0xd8148cef,0x11e893a8,0x65cf7b10,0x988906a1,0xc50d8485,0x81b67178,0x8a35b3de,0x7c0deb35,0xc1d29799,0x423ac855 + DD 0xdac50b74,0xaf580d87,0x5869734c,0x28b2b89f,0x874e28fb,0x99a3b936,0x25f3f73a,0xbb2c9190,0x84a9d5b7,0x199f6918,0x7e770374,0x7ebe2325,0x0738efe2,0xf442e107,0xcf9082d2,0xcf9f3f56 + DD 0x09618708,0x719f69e1,0xc183f9b1,0xcc9e8364,0x366a21af,0xec203a95,0x068b141f,0x6aec5d6d,0x994f04e9,0xee2df78a,0x271245b0,0xb39ccae8,0x97e43f4f,0xb875a4a9,0xdb2cea98,0x507dfe11 + DD 0x489b03e9,0x4fbf81cb,0x6ec414fa,0xdb86ec5b,0xf51b3ae5,0xfad444f9,0x1914e3fe,0xca7d33d6,0x0ae6c4d0,0xa9c32f5c,0x73969568,0xa9ca1d1e,0x1aa7467e,0x98043c31,0xe21b5ac6,0xe832e75c + DD 0x5232123d,0x314b7aea,0x65ae86db,0x08307c8c,0xaa4668ed,0x06e7165c,0xb4d3ec39,0xb170458b,0xc19bb986,0x4d2e3ec6,0xae0304ed,0xc5f34846,0x6c9f9722,0x917695a0,0x4cab1c0a,0x6c7f7317 + DD 0x9d6d2e8b,0x6295940e,0x549f7c97,0xd318b8c1,0x97713885,0x22453204,0xa8a440fe,0x468d834b,0xbfba796e,0xd81fe5b2,0x6d71f116,0x152364db,0xb5b66e53,0xbb8c7c59,0x2641a192,0x0b12c61b + DD 0xfcf0a7fd,0x31f14802,0x5488b01e,0x42fd0789,0x9952b498,0x71d78d6d,0x07ac5201,0x8eb572d9,0x4d194a88,0xe0a2a44c,0xba017e66,0xd2b63fd9,0xf888aefc,0x78efc6c8,0x4a881a11,0xb76f6bda + DD 0xb46c2397,0x187f314b,0x5ded2819,0x004cf566,0x38764d34,0xa9ea5704,0x78084709,0xbba45217,0x1171121e,0x06474571,0xe7c9b671,0xad7b7eb1,0x730f7507,0xdacfbc40,0xc7ad7bd1,0x178cd8c6 + DD 0xb2a67238,0xbf0be101,0xaf9c14f2,0x3556d367,0xa5662075,0x104b7831,0x79d9e60a,0x58ca59bb,0xa569a73b,0x4bc45392,0x5698f6c9,0x517a52e8,0xaeadd755,0x85643da5,0x2a581b84,0x1aed0cd5 + DD 0x80af1372,0xb9b4ff84,0xf1ba5d1f,0x244c3113,0xf5f98d31,0x2a5dacbe,0x4375bc2a,0x2c3323e8,0x5594b1dd,0x17a3ab4a,0xceb4797e,0xa1928bfb,0xe4886a19,0xe83af245,0x72b5a74a,0x8979d546 + DD 0x19f9e967,0xa0f726bc,0xe8fbbf4e,0xd9d03152,0xb7707d40,0xcfd6f51d,0x63f6e6e0,0x633084d9,0x55667eaf,0xedcd9cdc,0x2e44d56f,0x73b7f92b,0x4e962b14,0xfb2e39b6,0xf671fcbf,0x7d408f6e + DD 0x164a89bb,0xcc634ddc,0x3ef3bd05,0x74a42bb2,0x428decbb,0x1280dbb2,0x402c8596,0x6103f6bb,0x355a5752,0xfa2bf581,0x00946674,0x562f96a8,0x6da0223b,0x4e4ca16d,0x28d3aa25,0xfe47819f + DD 0xf8dfcf8a,0x9eea3075,0x95669825,0xa284f0aa,0x867d3fd8,0xb3fca250,0x269d691e,0x20757b5f,0x93b8a5de,0xf2c24020,0xebc06da6,0xd3f93359,0xb2739c33,0x1178293e,0xbcd686e5,0xd2a3e770 + DD 0xcd941534,0xa76f49f4,0xe3c71c0e,0x0d37406b,0x3b97f7e3,0x172d9397,0xbd7fd0de,0xec17e239,0x6f496ba2,0xe3290551,0x36ad50e7,0x6a693172,0x83e7eff5,0xc4e539a2,0x18e1b4cf,0x752737e7 + DD 0x68af43ee,0xa2f7932c,0x703d00bd,0x5502468e,0x2fb061f5,0xe5dc978f,0x28c815ad,0xc9a1904a,0x470c56a4,0xd3af538d,0x193d8ced,0x159abc5f,0x20108ef3,0x2a37245f,0x223f7178,0xfa17081e + DD 0x10c8c0f5,0x27b0fb2b,0x40650547,0x2102c3ea,0x8ac3bfa7,0x594564df,0x509dad96,0x98102033,0xf1d18a13,0x6989643f,0xd7fc5af0,0x35eebd91,0xfaeaafd8,0x078d096a,0xdef3de98,0xb7a89341 + DD 0xecf2a73a,0x2a206e8d,0x8e551994,0x066a6397,0xb98d53a2,0x3a6a088a,0x2d1124aa,0x0ce7c67c,0x759a113c,0x48cec671,0x4f6f67fa,0xe3b373d3,0xfd36727b,0x5455d479,0xa13c0d81,0xe5a428ee + DD 0x1c86682b,0xb853dbc8,0xb8d02b2a,0xb78d2727,0x8ebc329a,0xaaf69bed,0x293b2148,0xdb6b40b3,0xb8c4961f,0xe42ea77d,0x20e5e0ab,0xb1a12f7c,0x79e8b05e,0xa0ec5274,0xfab60a80,0x68027391 + DD 0x16b1bd5e,0x6bfeea5f,0x4de30ad3,0xf957e420,0x6a353b9e,0xcbaf664e,0x26d14feb,0x5c873312,0xb65f57cb,0x4e87f98c,0x5e0cdd41,0xdb60a621,0xa6881440,0x67c16865,0x46ab52aa,0x1093ef1a + DD 0x3f4ece64,0xc095afb5,0x7604551a,0x6a6bb02e,0x0b26b8cd,0x55d44b4e,0xf971268a,0xe5f9a999,0x11a7de84,0xc08ec425,0xfda469dd,0x83568095,0x6c6c90a2,0x737bfba1,0xbe229831,0x1cb9c4a0 + DD 0xbb2eec64,0x93bccbba,0xda03adbe,0xa0c23b64,0xe0e86ac4,0x5f7aa00a,0xfc1401e6,0x470b941e,0x9df43574,0x5ad8d679,0x0f65d810,0x4ccfb8a9,0xaa7fbd81,0x1bce80e3,0x9508d20a,0x273291ad + DD 0x42a92806,0xf5c4b46b,0xa86ab44a,0x810684ec,0xca0bc9f8,0x4591640b,0x5c4b6054,0xb5efcdfc,0x6e9edd12,0x16fc8907,0xd4d792f9,0xe29d0b50,0x9b03116d,0xa45fd01c,0xc81765a4,0x85035235 + DD 0xb4b4b67c,0x1fe2a9b2,0xe8020604,0xc1d10df0,0xbc8058d8,0x9d64abfc,0x712a0fbb,0x8943b9b2,0x3b3def04,0x90eed914,0x4ce775ff,0x85ab3aa2,0x7bbc9040,0x605fd4ca,0xe2c75dfb,0x8b34a564 + DD 0x10358560,0x41ffc94a,0x9e5c28aa,0x2d8a5072,0x4cc7eb15,0xe915a0fc,0x8f6d0f5d,0xe9efab05,0xd19e9b91,0xdbab47a9,0x0276154c,0x8cfed745,0x2cfede0d,0x154357ae,0x19f5a4ef,0x520630df + DD 0xe382360f,0x25759f7c,0x88bf5857,0xb6db05c9,0x6c58d46c,0x2917d61d,0xfd20cb7a,0x14f8e491,0x11c20340,0xb68a727a,0xaf7ccbb6,0x0386f86f,0xfee09a20,0x5c8bc6cc,0xbb7eea35,0x7d76ff4a + DD 0xdb15be7a,0xa7bdebe7,0xd89f0302,0x67a08054,0xc1193364,0x56bf0ea9,0x62837ebe,0xc8244467,0x20d841b8,0x32bd8e8b,0xdbb8a54f,0x127a0548,0x63b20236,0x83dd4ca6,0x203491fa,0x87714718 + DD 0xaa8a5288,0x4dabcaaa,0xaf23a1c9,0x91cc0c8a,0x3f220e0c,0x34c72c6a,0x1232144a,0xbcc20bdf,0xa20ede1b,0x6e2f42da,0x74a00515,0xc441f00c,0x734b8c4b,0xbf46a5b6,0x7b56c9a4,0x57409503 + DD 0xe4585d45,0x9f735261,0x6734e642,0x9231faed,0xbe70ee6c,0x1158a176,0x7c3501bf,0x35f1068d,0xa2d26115,0x6beef900,0xef0afee3,0x649406f2,0xbc2420a1,0x3f43a60a,0xd5aee4ac,0x509002a7 + DD 0x3ff3571b,0xb46836a5,0x837927c1,0x24f98b78,0x4533c716,0x6254256a,0xd07ee196,0xf27abb0b,0x5c6d5bfd,0xd7cf64fc,0xf0cd7a77,0x6915c751,0x8798f534,0xd9f59012,0xf81d8b5f,0x772b0da8 + DD 0x2e03fa69,0x1244260c,0x3be1a374,0x36cf0e3a,0xef06b960,0x6e7c1633,0x671f90f6,0xa71a4c55,0x33c673db,0x7a941251,0x73e8c131,0xc0bea510,0xd4f6c734,0x61a8a699,0x341ed001,0x25e78c88 + DD 0x8e2f7d90,0x5c18acf8,0x77be32cd,0xfdbf33d7,0xd2eb5ee9,0x0a085cd7,0xb3201115,0x2d702cfb,0x85c88ce8,0xb6e0ebdb,0x1e01d617,0x23a3ce3c,0x567333ac,0x3041618e,0x157edb6b,0x9dd0fd8f + DD 0xb57872b8,0x27f74702,0x657d5fe1,0x2ef26b4f,0x57cf3d40,0x95426f0a,0x65a6067a,0x847e2ad1,0x09996a74,0xd474d9a0,0x2a26115c,0x16a56acd,0xd16f4d43,0x02a615c3,0xaadb85b7,0xcc3fc965 + DD 0xce07d1b0,0x386bda73,0x58ad4178,0xd82910c2,0xcd2617f4,0x124f82cf,0xef691770,0xcc2f5e8d,0xb8c30ccc,0x82702550,0x1a8e575a,0x7b856aea,0xb1ab9459,0xbb822fef,0xec24e38e,0x085928bc + DD 0xba8f4b4d,0x5d0402ec,0x00b4d58b,0xc07cd4ba,0x29227e7a,0x5d8dffd5,0x31bf386f,0x61d44d0c,0x135e6f4d,0xe486dc2b,0xe79410ef,0x680962eb,0xf10088b5,0xa61bd343,0xe2e28686,0x6aa76076 + DD 0x8fb98871,0x80463d11,0xbbc76aff,0xcb26f5c3,0xfbe03614,0xd4ab8edd,0xc0cf2dee,0xc8eb579b,0xc93bae41,0xcc004c15,0x3aeca3b2,0x46fbae5d,0x0f1e9ab1,0x671235cf,0x9ec285c1,0xadfba934 + DD 0xf216c980,0x88ded013,0xf79e0bc1,0xc8ac4fb8,0xfb97a237,0xa29b89c6,0x9922d8e7,0xb697b780,0xddb945b5,0x3142c639,0xe094c3a9,0x447b06c7,0x72266c90,0xcdcb3642,0xa9385046,0x633aad08 + DD 0xb57c6477,0xa36c936b,0xe94dbcc6,0x871f8b64,0xa591a67b,0x28d0fb62,0xc1d926f5,0x9d40e081,0xf2d84b5a,0x3111eaf6,0xa565b644,0x228993f9,0x2c83188b,0x0ccbf592,0x3df3e197,0xf87b30ab + DD 0x7642bca8,0xb8658b31,0x52800f17,0x1a032d7f,0x79bf9445,0x051dcae5,0x54a2e253,0xeba6b8ee,0xd4485692,0x5c8b9cad,0x8986e9be,0x84bda40e,0x2f0db448,0xd16d16a4,0xa14d4188,0x8ec80050 + DD 0x98fa7aaa,0xb2b26107,0xf073aa4e,0x41209ee4,0xf2d6b19b,0xf1570359,0xfc577caf,0xcbe6868c,0x32c04dd3,0x186c4bdc,0xcfeee397,0xa6c35fae,0xf086c0cf,0xb4a1b312,0xd9461fe2,0xe0a5ccc6 + DD 0x1536189f,0xc32278aa,0xba6df571,0x1126c55f,0xb194560e,0x0f71a602,0x324bd6e1,0x8b2d7405,0x3738be71,0x8481939e,0x1a4d97a9,0xb5090b1a,0xf05ba915,0x116c65a3,0xaae448aa,0x21863ad3 + DD 0xa7aae5d3,0xd24e2679,0x0de5c1c4,0x7076013d,0xbb05b629,0x2d50f8ba,0x6e66efbb,0x73c1abe2,0xf2488af7,0xefd4b422,0x663ba575,0xe4105d02,0x53a69457,0x7eb60a8b,0xc945973b,0x62210008 + DD 0x77a50ec6,0xfb255478,0x0a37a72c,0xbf0392f7,0x4be18e7a,0xa0a7a19c,0x25b1e0af,0x90d8ea16,0xef953f57,0x7582a293,0xbdc5465a,0x90a64d05,0xe2510717,0xca79c497,0x18cb641f,0x560dbb7c + DD 0x4b66abfb,0x1d8e3286,0x59030900,0xd26f52e5,0x5584941a,0x1ee3f643,0x569f5958,0x6d3b3730,0x4789dba5,0x9ff2a62f,0x72b5c9b7,0x91fcb815,0x6c8f9a0e,0xf446cb7d,0x39b7ecb5,0x48f625c1 + DD 0x1c6219b8,0xbabae801,0x28ac2f23,0xe7a562d9,0x26e20588,0xe1b48732,0x775af051,0x06ee1cad,0xfaff79f7,0xda29ae43,0x652ee9e0,0xc141a412,0x195f4bd0,0x1e127f6f,0x072f34f8,0x29c6ab4f + DD 0x30448112,0x7b7c1477,0xe4a38656,0x82b51af1,0x2f315010,0x2bf2028a,0x6ea88cd4,0xc9a4a01f,0x257e5818,0xf63e95d8,0xb4519b16,0xdd8efa10,0x0da910bf,0xed8973e0,0x5c0fe4a9,0xed49d077 + DD 0xb7caee1e,0xac3aac5e,0xa7f4da57,0x1033898d,0x5c6669b9,0x42145c0e,0xc1aa2aa0,0x42daa688,0x1a1d885a,0x629cc15c,0xf4b76817,0x25572ec0,0x9c8f8f28,0x8312e435,0x81965490,0x8107f8cd + DD 0x6fa6110c,0x516ff3a3,0xfb93561f,0x74fb1eb1,0x8457522b,0x6c0c9047,0x6bb8bdc6,0xcfd32104,0xcc80ad57,0x2d6884a2,0x86a9b637,0x7c27fc35,0xadf4e8cd,0x3461baed,0x617242f0,0x1d56251a + DD 0xc955bef4,0x0b80d209,0x06adb047,0xdf02cad2,0x5ec74fee,0xf0d7cb91,0x1111ba44,0xd2503375,0xdf53cb36,0x9671755e,0x3368551b,0x54dcb612,0xc8a025a4,0x66d69aac,0xe77ef445,0x6be946c6 + DD 0xa995e094,0x719946d1,0xe51e04d8,0x65e848f6,0x6a1e3113,0xe62f3300,0x501de503,0x1541c7c1,0xf4acfade,0x4daac9fa,0x44cd0b71,0x0e585897,0x0a51cd77,0x544fd869,0x0031016d,0x60fc20ed + DD 0xa4276867,0x58b404ec,0x34f34993,0x46f6c3cc,0xc636e5bd,0x477ca007,0x7c458b47,0x8018f5e5,0xe47b668f,0xa1202270,0xee14f203,0xcef48ccd,0x62ff9b4d,0x23f98bae,0xc589eddd,0x55acc035 + DD 0x64db4444,0x3fe712af,0xbecdd480,0x19e9d634,0xa930978a,0xe08bc047,0xa1280733,0x2dbf24ec,0x2cd706b2,0x3c0ae38c,0x359017b9,0x5b012a5b,0x72e0f5ae,0x3943c38c,0x57176fa3,0x786167ea + DD 0x594881dc,0xe5f9897d,0xcfb820c1,0x6b5efad8,0xd55018de,0xb2179093,0x0bac56ce,0x39ad7d32,0x2cfc0e81,0xb55122e0,0xf6d89daa,0x117c4661,0xcb64fa09,0x362d01e1,0x3e9c4ddd,0x6a309b4e + DD 0xabea49b1,0xfa979fb7,0x10e2c6c5,0xb4b1d27d,0x23afde7a,0xbd61c2c4,0x9786d358,0xeb6614f8,0x7f6f7459,0x4a5d816b,0x09360e7b,0xe431a44f,0xc309914c,0x8c27a032,0xcaede3d8,0xcea5d68a + DD 0x3a0a3f95,0x3668f665,0x7ceba27b,0x89369416,0xe4728fe9,0x89981fad,0x8a093562,0x7102c8a0,0x235d21c8,0xbb80310e,0xbefb7f7b,0x505e55d1,0x12958a67,0xa0a90811,0x4d851fef,0xd67e106a + DD 0x431dd80e,0xb84011a9,0x73306cd9,0xeb7c7cca,0xd1b3b730,0x20fadd29,0xfe37b3d3,0x83858b5b,0xb6251d5c,0xbf4cd193,0x1352d952,0x1cca1fd3,0x90fbc051,0xc66157a4,0x89b98636,0x7990a638 + DD 0x87dec0e1,0xe5aa692a,0xf7b39d00,0x010ded8d,0x54cfa0b5,0x7b1b80c8,0xa0f8ea28,0x66beb876,0x3476cd0e,0x50d7f531,0xb08d3949,0xa63d0e65,0x53479fc6,0x1a09eea9,0xf499e742,0x82ae9891 + DD 0x5ca7d866,0xab58b910,0x3adb3b34,0x582967e2,0xcceac0bc,0x89ae4447,0x7bf56af5,0x919c667c,0x60f5dcd7,0x9aec17b1,0xddcaadbc,0xec697b9f,0x463467f5,0x0b98f341,0xa967132f,0xb187f1f7 + DD 0x214aeb18,0x90fe7a1d,0x741432f7,0x1506af3c,0xe591a0c4,0xbb5565f9,0xb44f1bc3,0x10d41a77,0xa84bde96,0xa09d65e4,0xf20a6a1c,0x42f060d8,0xf27f9ce7,0x652a3bfd,0x3b3d739f,0xb6bdb65c + DD 0xec7fae9f,0xeb5ddcb6,0xefb66e5a,0x995f2714,0x69445d52,0xdee95d8e,0x09e27620,0x1b6c2d46,0x8129d716,0x32621c31,0x0958c1aa,0xb03909f1,0x1af4af63,0x8c468ef9,0xfba5cdf6,0x162c429f + DD 0x753b9371,0x2f682343,0x5f1f9cd7,0x29cab45a,0xb245db96,0x571623ab,0x3fd79999,0xc507db09,0xaf036c32,0x4e2ef652,0x05018e5c,0x86f0cc78,0xab8be350,0xc10a73d4,0x7e826327,0x6519b397 + DD 0x9c053df7,0xe8cb5eef,0xb300ea6f,0x8de25b37,0xc849cffb,0xdb03fa92,0xe84169bb,0x242e43a7,0xdd6f958e,0xe4fa51f4,0xf4445a8d,0x6925a77f,0xe90d8949,0xe6e72a50,0x2b1f6390,0xc66648e3 + DD 0x173e460c,0xb2ab1957,0x30704590,0x1bbbce75,0xdb1c7162,0xc0a90dbd,0x15cdd65d,0x505e399e,0x57797ab7,0x68434dcb,0x6a2ca8e8,0x60ad35ba,0xde3336c1,0x4bfdb1e0,0xd8b39015,0xbbef99eb + DD 0x1711ebec,0x6c3b96f3,0xce98fdc4,0x2da40f1f,0x57b4411f,0xb99774d3,0x15b65bb6,0x87c8bdf4,0xc2eef12d,0xda3a89e3,0x3c7471f3,0xde95bb9b,0xd812c594,0x600f225b,0x2b75a56b,0x54907c5d + DD 0x8db60e35,0xa93cc5f0,0xfa833319,0x743e3cd6,0xf81683c9,0x7dad5c41,0x9c34107e,0x70c1e7d9,0xa6be0907,0x0edc4a39,0x86d0b7d3,0x36d47035,0x272bfa60,0x8c76da03,0x0f08a414,0x0b4a07ea + DD 0x45c1dd53,0x699e4d29,0x231debb5,0xcadc5898,0xa77f00e0,0xdf49fcc7,0xa73e5a0e,0x93057bbf,0x027a4cd1,0x2f8b7ecd,0xc614011a,0x114734b3,0x67677c68,0xe7a01db7,0x7e273f4f,0x89d9be5e + DD 0x089808ef,0xd225cb2e,0xd59e4107,0xf1f7a27d,0x8211b9c9,0x53afc761,0xe6819159,0x0361bc67,0x7f071426,0x2a865d0b,0xe7072567,0x6a3c1810,0x0d6bcabd,0x3e3bca1e,0x408591bc,0xa1b02bc1 + DD 0x31fba239,0xe0deee59,0x98bd91d1,0xf47424d3,0x071a3c1d,0x0f8886f4,0xa819233b,0x3f7d41e8,0xcf6eb998,0x708623c2,0x609a287f,0x86bb49af,0x63c90762,0x942bb249,0x55a9654b,0x0ef6eea5 + DD 0x36f5defe,0x5f6d2d72,0x56f99176,0xfa9922dc,0xf78ce0c7,0x6c8c5ece,0xbe09b55e,0x7b44589d,0x9ea83770,0xe11b3bca,0x2ab71547,0xd7fa2c7f,0x2a1ddcc0,0x2a3dd6fa,0x5a7b7707,0x09acb430 + DD 0x649d4e57,0x4add4a2e,0x1917526e,0xcd53a2b0,0x20b44ac4,0xc5262330,0xbaa2c31d,0x4028746a,0x64291d4c,0x51318390,0xee5ad909,0xbf48f151,0x7b185681,0xcce57f59,0x4854d442,0x7c3ac1b0 + DD 0xc093c171,0x65587dc3,0x24f42b65,0xae7acb24,0x955996cb,0x5a338adb,0x6051f91b,0xc8e65675,0x28b8d0b1,0x66711fba,0xb6c10a90,0x15d74137,0x3a232a80,0x70cdd7eb,0x6191ed24,0xc9e2f07f + DD 0xf79588c0,0xa80d1db6,0xb55768cc,0xfa52fc69,0x7f54438a,0x0b4df1ae,0xf9b46a4f,0x0cadd1a7,0x1803dd6f,0xb40ea6b3,0x55eaae35,0x488e4fa5,0x382e4e16,0x9f047d55,0x2f6e0c98,0xc9b5b7e0 + DD 0x95762649,0x6b1bd2d3,0xc7aea3f6,0xa9604ee7,0x6dc6f896,0x3646ff27,0x2860bad1,0x9bf0e7f5,0x7cb44b92,0x2d92c821,0xaea9c182,0xa2f5ce63,0x9154a5fd,0xd0a2afb1,0x95801da6,0x482e474c + DD 0xb611c24b,0xc19972d0,0x60a8f351,0x1d468e65,0x7bcf6421,0xeb758069,0x88fbc491,0xec9dd0ee,0x956c2e32,0x5b59d2bf,0xdcddf94e,0x73dc6864,0xbcee7665,0xfd5e2321,0x5e9a06c4,0xa7b4f8ef + DD 0x7280f855,0xfba918dd,0x8baec688,0xbbaac260,0x33400f42,0xa3b3f00f,0x66f2e6e4,0x3d2dba29,0x98509375,0xb6f71a94,0xcea423cc,0x8f33031f,0x4807e6fb,0x009b8dd0,0x5cdb954c,0x5163cfe5 + DD 0xcf41c6e8,0x03cc8f17,0x037b925c,0xf1f03c2a,0x66d2427c,0xc39c19cc,0x7b6c18e4,0x823d24ba,0x901f0b4f,0x32ef9013,0xf8941c2e,0x684360f1,0x2c28092e,0x0ebaff52,0x256c932f,0x7891e4e3 + DD 0xac445e3d,0x51264319,0x8ea74381,0x553432e7,0x67e9c50a,0xe6eeaa69,0x62e628c7,0x27ced284,0x7a4afa57,0x3f96d375,0xe484c150,0xde0a14c3,0x38bd9923,0x364a24eb,0xe5177422,0x1df18da0 + DD 0xd8d38a9b,0x174e8f82,0xe7de1391,0x2e97c600,0xa1c175dd,0xc5709850,0x32ae5035,0x969041a0,0x76a2086b,0xcbfd533b,0xd7c2e8fe,0xd6bba71b,0x099dfb67,0xb2d58ee6,0x064a85d9,0x3a8b342d + DD 0x522f9be3,0x3bc07649,0xdf1f49a8,0x690c075b,0x3854ec42,0x80e1aee8,0x17689dc7,0x2a7dbf44,0x3faf4078,0xc004fc0e,0xdf11862c,0xb2f02e9e,0xa0a1b7b3,0xf10a5e0f,0x8936ec80,0x30aca623 + DD 0x02f40d9a,0xf83cbf05,0x2c318a4d,0x4681c468,0x0e9c2674,0x98575618,0x1847092e,0xbe79d046,0x78bd01e0,0xaf1e480a,0x72a51db9,0x6dd359e4,0xe3afbab6,0x62ce3821,0x17733199,0xc5cee5b6 + DD 0x6ffd9fbb,0xe08b30d4,0x36c610b7,0x6e5bc699,0x9ce262cf,0xf343cff2,0x68b914c1,0xca2e4e35,0x16de36c5,0x011d64c0,0x42e2b829,0xe0b10fdd,0x6685aaf8,0x78942981,0x230ede97,0xe7511708 + DD 0x3b922bf8,0x671ed8fc,0x4c29b133,0xe4d8c0a0,0x3b6e99c4,0x87eb1239,0x8793beba,0xaff3974c,0x2c18df9b,0x03749405,0x91007139,0xc5c3a293,0xe37a0b95,0x6a77234f,0xb661c96b,0x02c29a21 + DD 0x141ecf61,0xc3aaf1d6,0x3bb22f53,0x9195509e,0x22d51357,0x29597404,0x537bed60,0x1b083822,0xe07289f0,0xcd7d6e35,0x6dd86eff,0x1f94c48c,0xeb0f9cfa,0xc8bb1f82,0x1b2eb97d,0x9ee0b7e6 + DD 0x34d74e31,0x5a52fe2e,0x3bf79ab6,0xa352c310,0xabfeeb8f,0x97ff6c5a,0xf5c97305,0xbfbe8fef,0xa7904608,0xd6081ce6,0xc4fca249,0x1f812f3a,0xb9e5e200,0x9b24bc9a,0x38012ee8,0x91022c67 + DD 0x30a713a1,0xe83d9c5d,0x84ef0f93,0x4876e3f0,0xc1fbf928,0xc9777029,0xbce7d2a4,0xef7a6bb3,0xdfa2a659,0xb8067228,0xd877a48f,0xd5cd3398,0x025d0f3f,0xbea4fd8f,0x2eae7c2b,0xd67d2e35 + DD 0xcc5f4394,0x184de7d7,0x4536e142,0xb5551b5c,0xd34aa60a,0x2e89b212,0xf50051d5,0x14a96fea,0x0d12bb0b,0x4e21ef74,0x60b9677e,0xc522f020,0x2df7731d,0x8b12e467,0x7b326d31,0x39f80382 + DD 0x39024a94,0xdfb8630c,0x97319452,0xaacb96a8,0xeda3867c,0xd68a3961,0x77c4ffca,0x0c58e2b0,0x4da919fa,0x3d545d63,0xf15e2289,0xef79b69a,0x808bab10,0x54bc3d3d,0x45f82c37,0xc8ab3007 + DD 0x7c4a658a,0xc12738b6,0x40e72182,0xb3c47639,0x8798e44f,0x3b77be46,0x17a7f85f,0xdc047df2,0x5e59d92d,0x2439d4c5,0xe8e64d8d,0xcedca475,0x87ca9b16,0xa724cd0d,0xa5540dfe,0x35e4fd59 + DD 0xe4bcf6b1,0xf8c1ff18,0x295018fa,0x856d6285,0x3263c949,0x433f665c,0xa1f21409,0xa6a76dd6,0xcc7b4f79,0x17d32334,0x06720e4a,0xa1d03122,0x81d9bed5,0xadb6661d,0x11db15d1,0xf0d6fb02 + DD 0x1fb747d2,0x7fd11ad5,0x3033762b,0xab50f959,0xfbefaf5a,0x2a7e711b,0x3fef2bbf,0xc7393278,0x0df6f9be,0xe29fa244,0x71efd215,0x9092757b,0x4f3d6fd9,0xee60e311,0x0acfb78b,0x338542d4 + DD 0x38961a0f,0x44a23f08,0x986987ca,0x1426eade,0x4a863cc6,0x36e6ee2e,0x628b8b79,0x48059420,0x7396e1de,0x30303ad8,0x38c5aad1,0x5c8bdc48,0x5c8f5066,0x3e40e11f,0x8d246bbd,0xabd6e768 + DD 0x23330a01,0x68aa40bb,0xc34eafa0,0xd23f5ee4,0x5de02c21,0x3bbee315,0xd1d8dd06,0x18dd4397,0x122d7b44,0x3ba1939a,0xa33870d6,0xe6d3b40a,0x1c4fe3f8,0x8e620f70,0xd3a50cbf,0xf6bba1a5 + DD 0xcfc0aee0,0x4a78bde5,0xc08c50bd,0x847edc46,0xad63c9b2,0xbaa2439c,0x10fc2acb,0xceb4a728,0x26da033d,0xa419e40e,0x03e02683,0x6cc3889d,0xfdccf725,0x1cd28559,0x8d13d208,0x0fd7e0f1 + DD 0x1f0df9d4,0x01b9733b,0xa2b5e4f3,0x8cc2c5f3,0x3a304fd4,0x43053bfa,0x0a9f1aa7,0x8e87665c,0xd73dc965,0x087f29ec,0x3e9023db,0x15ace455,0x2bce28b4,0x2370e309,0xb6b1e84a,0xf9723442 + DD 0xb72d9f26,0xbeee662e,0xf0e47109,0xb19396de,0xe13289d0,0x85b1fa73,0x54e58e32,0x436cf77e,0xe990ef77,0x0ec833b3,0x1b11fc25,0x7373e3ed,0x0fc332ce,0xbe0eda87,0x8d7ea856,0xced04970 + DD 0x7e977ca0,0xf85ff785,0xdfdd5d2b,0xb66ee8da,0x905af461,0xf5e37950,0x966d487c,0x587b9090,0x32ba0127,0x6a198a1b,0x141615ac,0xa7720e07,0x996ef2f2,0xa23f3499,0x470bcb3d,0xef5f64b4 + DD 0x92b8c559,0xa526a962,0x69740a0f,0x0c14aac0,0xa6bdc0a5,0x0d41a9e3,0x9c48aef4,0x97d52106,0x3e7c253b,0xcf16bd30,0x47fdedc1,0xcc834b1a,0x373aab2e,0x7362c6e5,0xc5f590ff,0x264ed85e + DD 0x66d41870,0x7a46d9c0,0x4787ba09,0xa50c20b1,0xe3d44635,0x185e7e51,0x31e2d8dc,0xb3b3e080,0xa179e9d9,0xbed1e558,0x74a76781,0x2daa3f79,0x3a40864f,0x4372baf2,0x4fe75cb5,0x46900c54 + DD 0xf76765d0,0xb95f171e,0x95c87502,0x4ad726d2,0x4d7c99bd,0x2ec769da,0xc36cdfa8,0x5e2ddd19,0xa93e6dea,0xc22117fc,0x93771123,0xe8a2583b,0xfa08a3a2,0xbe2f6089,0x8f0e1112,0x4809d5ed + DD 0xda7a095e,0x3b414aa3,0x26f5aadd,0x9049acf1,0x6be8b84a,0x78d46a4d,0xb732b9b3,0xd66b1963,0xde6e9555,0x5c2ac2a0,0xb5bd8770,0xcf52d098,0x0fd28921,0x15a15fa6,0x8b27536d,0x56ccb81e + DD 0x9f4ccbb8,0x0f0d8ab8,0xdb221729,0xed5f44d2,0x00bed10c,0x43141988,0x1d735b8b,0xc94348a4,0x29ef8479,0x79f3e9c4,0x614c693f,0x4c13a4e3,0x8e143a14,0x32c9af56,0xe29ac5c4,0xbc517799 + DD 0x2774856f,0x05e17992,0x6c1bf55f,0x6e52fb05,0xe4f19e16,0xaeda4225,0xaf5ccb26,0x70f4728a,0xb2947f22,0x5d2118d1,0x281d6fb9,0xc827ea16,0x8cf0eabd,0x8412328d,0x03ef9dcf,0x45ee9fb2 + DD 0xbb937d63,0x8e700421,0xcc4b37a6,0xdf8ff2d5,0x5ced7b68,0xa4c0d5b2,0xc7308f59,0x6537c1ef,0x3b37f8e8,0x25ce6a26,0xdeebc6ce,0x170e9a9b,0x8728d72c,0xdd037952,0x850154bc,0x445b0e55 + DD 0x83a7337b,0x4b7d0e06,0xffecf249,0x1e3416d4,0x66a2b71f,0x24840eff,0xb37cc26d,0xd0d9a50a,0x6fe28ef7,0xe2198150,0x23324c7f,0x3cc5ef16,0x769b5263,0x220f3455,0xa10bf475,0xe2ade2f1 + DD 0x458d3671,0x28cd20fa,0x2dc4847b,0x1549722c,0x591941e3,0x6dd01e55,0x27128ccb,0x0e6fbcea,0x3bef0262,0xae1a1e6b,0x8f54e103,0xfa8c472c,0x72c052ec,0x7539c0a8,0x5a3490e9,0xd7b27369 + DD 0x71684349,0x143fe1f1,0x32e19b97,0x36b4722e,0x90980aff,0xdc059227,0x9e13d674,0x175c9c88,0x6e6bfdb1,0xa7de5b22,0xbedb4b46,0x5ea5b7b2,0xd34a6e44,0xd5570191,0xa24ff7e6,0xfcf60d2e + DD 0x677819e1,0x614a392d,0xaa5a29e8,0x7be74c7e,0x63c85f3f,0xab50fece,0x46cab337,0xaca2e2a9,0x122a6fe3,0x7f700388,0x882a04a8,0xdb69f703,0xcf7aed57,0x9a77935d,0x8d91c86f,0xdf16207c + DD 0x63ed9998,0x2fca49ab,0xa77ddf96,0xa3125c44,0x24344072,0x05dd8a86,0xfec3fb56,0xa023dda2,0x0c743032,0x421b41fc,0x5e438639,0x4f2120c1,0xc83c1b07,0xfb7cae51,0xcac2171a,0xb2370caa + DD 0x6cc820fb,0x2eb2d962,0xb85a44bf,0x59feee5c,0x5b6598f0,0x94620fca,0x7e314051,0x6b922cae,0x106bed4e,0xff8745ad,0xdfa1e9ab,0x546e71f5,0x1ec29487,0x935c1e48,0x4d936530,0x9509216c + DD 0x85c9a2db,0xc7ca3067,0x6be8606f,0xd6ae5152,0xe14c651d,0x09dbcae6,0x9bc32f96,0xc9536e23,0x34521b03,0xa90535a9,0x878756ff,0xf39c526c,0x8aedf03c,0x383172ec,0xefe0c034,0x20a8075e + DD 0x64026422,0xf22f9c62,0x24b9d076,0x8dd10780,0x3bef2950,0x944c742a,0x88a2b00b,0x55b9502e,0x86a09817,0xa59e14b4,0x47bb4071,0xa39dd3ac,0x3be0592f,0x55137f66,0xc9e63f5b,0x07fcafd4 + DD 0x346eb226,0x963652ee,0xec2facb7,0x7dfab085,0x691add26,0x273bf2b8,0xf2b46c44,0x30d74540,0xf2c2d065,0x05e8e73e,0xd42eeac9,0xff9b8a00,0x97209d22,0x2fcbd205,0xde14ea2c,0xeb740ffa + DD 0xa8aef518,0xc71ff913,0xfff4cfa2,0x7bfc74bb,0xb6b36048,0x1716680c,0x9ef79af1,0x121b2cce,0xa01eb3d3,0xbff3c836,0x5f79077b,0x50eb1c6a,0xa004bbcf,0xa48c32d6,0x7d64f61d,0x47a59316 + DD 0x93102016,0x6068147f,0x94d12576,0x12c5f654,0xc9bc6b91,0xefb071a7,0x6e23ea95,0x7c2da0c5,0xd4a1dd5d,0xf4fd45b6,0x9122b13c,0x3e7ad9b6,0xe6f57a48,0x342ca118,0x06f8288f,0x1c2e94a7 + DD 0x5a97d231,0x99e68f07,0x4d838758,0x7c80de97,0x05872727,0xbce0f5d0,0x19c4d016,0xbe5d95c2,0x9c2492ee,0x921d5cb1,0x404d6fb3,0x42192dc1,0x32f988d3,0x4c84dcd1,0xa17b8e85,0xde26d61f + DD 0x137c7408,0xc466dcb6,0x36a266da,0x9a38d7b6,0x83bebf1b,0x7ef5cb06,0x0fd014e3,0xe5cdcbbf,0xf65965a0,0x30aa376d,0xebb3e95e,0x60fe88c2,0x66ee6f20,0x33fd0b61,0x3f41f0a0,0x8827dcdb + DD 0x0c56c690,0xbf8a9d24,0xddb7641d,0x40265dad,0x3a6b662b,0x522b05bf,0xb1478c9b,0x466d1dfe,0x1484469b,0xaa616962,0x02df8f9f,0x0db60549,0x3cb8bf51,0xc37bca02,0x21371ce8,0x5effe346 + DD 0xff112c32,0xe8f65264,0x7b971fb2,0x8a9c736d,0x7b75080d,0xa4f19470,0x8839c59b,0xfc3f2c5a,0x5aeb49c2,0x1d6c777e,0xda1addfe,0xf3db034d,0x5535affc,0xd76fee5a,0xb92251fd,0x0853ac70 + DD 0x8b2a29d5,0x37e3d594,0x4de00ddb,0x28f1f457,0xf42c328b,0x8083c1b5,0xe493c73b,0xd8ef1d8f,0x41dc61bd,0x96fb6260,0x27ee2f8a,0xf74e8a9d,0x2c946a5d,0x7c605a80,0x3839ccfd,0xeed48d65 + DD 0x3a29467a,0x9894344f,0xc51eba6d,0xde81e949,0xa5e5c2f2,0xdaea066b,0x08c8c7b3,0x3fc8a614,0x06d0de9f,0x7adff88f,0x3b75ce0a,0xbbc11cf5,0xfbbc87d5,0x9fbb7acc,0x7badfde2,0xa1458e26 + DD 0xe039c256,0x1cb43668,0x7c17fd5d,0x5f26fb8b,0x79aa062b,0xeee426af,0xd78fbf04,0x072002d0,0xe84fb7e3,0x4c9ca237,0x0c82133d,0xb401d8a1,0x6d7e4181,0xaaa52592,0x73dbb152,0xe9430833 + DD 0xbe24319a,0xf92dda31,0xe095a8e7,0x03f7d28b,0x98782185,0xa52fe840,0x29c24dbc,0x276ddafe,0x1d7a64eb,0x80cd5496,0x7f1dbe42,0xe4360889,0x8438d2d5,0x2f81a877,0x85169036,0x7e4d52a8 + DD 0x1d59715d,0x19e3d5b1,0xd788983e,0xc7eaa762,0xabf1f248,0xe5a730b0,0xfae3fd83,0xfbab8084,0x53765b2f,0x65e50d21,0xfa127f3d,0xbdd4e083,0x397b1b10,0x9cf3c074,0xb1b59fd3,0x59f8090c + DD 0x615faa8f,0x7b15fd9d,0x968554ed,0x8fa1eb40,0x7aa44882,0x7bb4447e,0x029fff32,0x2bb2d0d1,0x6caa6d2f,0x075e2a64,0x22e7351b,0x8eb879de,0x9a506c62,0xbcd5624e,0xa87e24dc,0x218eaef0 + DD 0x44ddfa35,0x37e56847,0xdab3f747,0x9ccfc5c5,0x1ee96cf4,0x9ac1df3f,0x3b480b8f,0x0c0571a1,0x4b3a7b3c,0x2fbeb3d5,0x5dcdbb99,0x35c03669,0xb2415b3a,0x52a0f5dc,0x4413ed9a,0xd57759b4 + DD 0x3d30a2c5,0x1fe647d8,0xf78a81dc,0x0857f77e,0x131a4a9b,0x11d5a334,0x29d393f5,0xc0a94af9,0xdaa6ec1a,0xbc3a5c0b,0x88d2d7ed,0xba9fe493,0xbb614797,0xbb4335b4,0x72f83533,0x991c4d68 + DD 0xd2f01cb3,0x53258c28,0xd75db0b1,0x93d6eaa3,0xe87d0db4,0x419a2b0d,0xd8fe8493,0xa1e48f03,0xc508b23a,0xf747faf6,0x35d53549,0xf137571a,0xfcf9b838,0x9f5e58e2,0xa7fd3cf5,0xc7186cee + DD 0xe978a1d3,0x77b868ce,0x7ab92d04,0xe3a68b33,0x87a5b862,0x51029794,0x3a61d41d,0x5f0606c3,0x6f9326f1,0x2814be27,0xc6fe3c2e,0x2f521c14,0xacdf7351,0x17464d7d,0x777f7e44,0x10f5f9d3 + DD 0x269fb37d,0xce8e616b,0x7de62de5,0xaaf73804,0x4fdd4153,0xaba11175,0x3770b49b,0x515759ba,0xaa423a61,0x8b09ebf8,0xcd41fb92,0x592245a1,0x9b4c8936,0x1cba8ec1,0xaf36710e,0xa87e91e3 + DD 0x3d34a2e3,0x1fd84ce4,0xb43b5d61,0xee3759ce,0x619186c7,0x895bc78c,0xcbb9725a,0xf19c3809,0xde744b1f,0xc0be21aa,0x60f8056b,0xa7d222b0,0xb23efe11,0x74be6157,0x0cd68253,0x6fab2b4f + DD 0x4bf1d725,0xad33ea5f,0x4f6c950f,0x9c1d8ee2,0xa377af06,0x544ee78a,0x94a113e1,0x54f489bb,0x992fb7e8,0x8f11d634,0xa2a44347,0x0169a7aa,0x95020e00,0x1d49d4af,0xe08e120b,0x95945722 + DD 0xa4d32282,0xb6e33878,0x48020ae7,0xe36e029d,0x37a9b750,0xe05847fb,0xb29e3819,0xf876812c,0xd23a17f0,0x84ad138e,0xf0b3950e,0x6d7b4480,0x2fd67ae0,0xdfa8aef4,0x52333af6,0x8d3eea24 + DD 0xb15d5acc,0x0d052075,0xbd815bc4,0xc6d9c79f,0xdfa36cf2,0x8dcafd88,0x38aa9070,0x908ccbe2,0xba35afce,0x638722c4,0xfd6abf0b,0x5a3da8b0,0xc9c335c1,0x2dce252c,0x65aa799b,0x84e7f0de + DD 0xb99a72cb,0x2101a522,0x87618016,0x06de6e67,0xe6f3653e,0x5ff8c7cd,0xc7a6754a,0x0a821ab5,0x7cb0b5a2,0x7e3fa52b,0xc9048790,0xa7fb121c,0x06ce053a,0x1a725020,0x04e929b0,0xb490a31f + DD 0x62dd61ad,0xe17be47d,0x6be01371,0x781a961c,0xdae3cbba,0x1063bfd3,0x7f73c9ba,0x35647406,0x2736a129,0xf50e957b,0xed13f256,0xa6313702,0x3a19fcc5,0x9436ee65,0xe7a4c8b6,0xcf2bdb29 + DD 0xc5f95cd8,0xb06b1244,0xf4ab95f4,0xda8c8af0,0xb9e5836d,0x1bae59c2,0x3acffffc,0x07d51e7e,0xc2ccbcda,0x01e15e6a,0x8528c3e0,0x3bc1923f,0xa49fead4,0x43324577,0x2aa7a711,0x61a1b884 + DD 0x700230ef,0xf9a86e08,0xbd19adf8,0x0af585a1,0xf55ad8f2,0x7645f361,0x46c3614c,0x6e676223,0x4e774d3f,0x23cb257c,0xac102d1b,0x82a38513,0x7b126aa5,0x9bcddd88,0xeefd3ee4,0xe716998b + DD 0xfb167583,0x4239d571,0xd16c8f8a,0xdd011c78,0x69a27519,0x271c2895,0xd2d64b6a,0x9ce0a3b7,0xd5ec6738,0x8c977289,0x8840ef6b,0xa3b49f9a,0x9a453419,0x808c14c9,0x0cf0a2d5,0x5c00295b + DD 0x1d4bcc76,0x524414fb,0x459a88f1,0xb07691d2,0xf70d110f,0x77f43263,0xb7abf9f3,0x64ada5e0,0x5b544cf5,0xafd0f94e,0xfd2713fe,0xb4a13a15,0x250c74f4,0xb99b7d6e,0x20324e45,0x097f2f73 + DD 0xaffa8208,0x994b37d8,0xdc29aafc,0xc3c31b0b,0x7a3a607f,0x3da74651,0xfe6955d6,0xd8e1b8c1,0xc8418682,0x716e1815,0x7dc91d97,0x541d487f,0xc6996982,0x48a04669,0x83a6502e,0xf39cab15 + DD 0xe68db055,0x025801a0,0xba3338d5,0xf3569758,0xee2afa84,0xb0c8c0aa,0xfb6562d1,0x4f6985d3,0x132ed17a,0x351f1f15,0xc04365fe,0x510ed0b4,0xe5b1f066,0xa3f98138,0x32df03dc,0xbc9d95d6 + DD 0x19abd09e,0xa83ccf6e,0x4ff17edb,0x0b4097c1,0xd64a06ce,0x58a5c478,0x544a58fd,0x2ddcc3fd,0x9e8153b8,0xd449503d,0x7774179b,0x3324fd02,0xdbd9120c,0xaf5d47c8,0x34fa94db,0xeb860162 + DD 0x972f07f4,0x5817bdd1,0xd27bbceb,0xe5579e2e,0x5f11e5a6,0x86847a1f,0x7c3cf048,0xb39ed255,0xa2f62e55,0xe1076417,0x1bcf82a2,0x6b9ab38f,0x7aeb29f9,0x4bb7c319,0x17227a46,0xf6d17da3 + DD 0x0f968c00,0xab53ddbd,0x000c880b,0xa03da7ec,0x6a9ad24d,0x7b239624,0x01ec60d0,0x612c0401,0x109f5df1,0x70d10493,0x80af7550,0xfbda4030,0xc6b9a9b3,0x30b93f95,0x007d9418,0x0c74ec71 + DD 0x6edb951f,0x94175564,0x7f22c282,0x5f4a9d78,0xb38d1196,0xb7870895,0xa228ce7c,0xbc593df3,0x6af3641a,0xc78c5bd4,0x3d9b3dcc,0x7802200b,0x8be33304,0x0dc73f32,0x61ffb79a,0x847ed87d + DD 0x6d671192,0xf85c974e,0xde16f60f,0x1e14100a,0x95c38797,0x45cb0d5a,0x9b022da4,0x18923bba,0xbbe7e86e,0xef2be899,0x216067bf,0x4a1510ee,0x84d5ce3e,0xd98c8154,0xf92a2b90,0x1af777f0 + DD 0x4ef65724,0x9fbcb400,0x3c0ca6fe,0x3e04a4c9,0x55002994,0xfb3e2cb5,0x5363ecab,0x1f3a93c5,0x3923555b,0x1fe00efe,0x1e1751ea,0x744bedd9,0x6ab69357,0x3fb2db59,0xf5e6618b,0x8dbd7365 + DD 0xdf1ea40e,0x99d53099,0x57d61e64,0xb3f24a0b,0x596eb812,0xd088a198,0x5762940b,0x22c8361b,0xf9c0d95c,0x66f01f97,0x8e43cdae,0x88461172,0xb72b15c3,0x11599a7f,0x420d95cc,0x135a7536 + DD 0x5f7ae2f6,0x2dcdf0f7,0xd7fa6da2,0x15fc6e1d,0xd1d441b6,0x81ca829a,0x04a106b6,0x84c10cf8,0xa73fbbd0,0xa9b26c95,0x4d8f6ee8,0x7f24e0cb,0x1e25a043,0x48b45937,0x036f3dfe,0xf8a74fca + DD 0xc9f84296,0x1ed46585,0x3bc278b0,0x7fbaa8fb,0x6c4fcbd0,0xa8e96cd4,0x73b60a5f,0x940a1202,0x55a4aec8,0x34aae120,0xdbd742f0,0x550e9a74,0x228c68ab,0x794456d7,0xa4e25ec6,0x492f8868 + DD 0xb2d8f398,0x682915ad,0x5b84c953,0xf13b51cc,0x5bb917d6,0xcda90ab8,0x4ea3dee1,0x4b615560,0x0a52c1c8,0x578b4e85,0x20b75fc4,0xeab1a695,0xaa0bb3c6,0x60c14f3c,0xb8216094,0x220f448a + DD 0xb0e63d34,0x4fe7ee31,0xa9e54fab,0xf4600572,0xd5e7b5a4,0xc0493334,0x06d54831,0x8589fb92,0x6583553a,0xaa70f5cc,0xe25649e5,0x0879094a,0x10044652,0xcc904507,0x02541c4f,0xebb0696d + DD 0xb9718710,0x5a171fde,0xf374a9f5,0x38f1bed8,0xba39bdc1,0xc8c582e1,0x908cc0ce,0xfc457b0a,0x883841e2,0x9a187fd4,0x38725381,0x8ec25b39,0x96f84395,0x2553ed05,0x6f6c6897,0x095c7661 + DD 0x4bdc5610,0x917ac85c,0x179eb301,0xb2885fe4,0x8b78bdcc,0x5fc65547,0xe59e4699,0x4a9fc893,0x3ce299af,0xbb7ff0cd,0xadf38b20,0x195be9b3,0xd38ddb8f,0x6a929c87,0xb21a51b9,0x55fcc99c + DD 0x721a4593,0x2b695b4c,0x768eaac2,0xed1e9a15,0x7489f914,0xfb63d71c,0x78118910,0xf98ba31c,0x9b128eb4,0x80291373,0xd448af4a,0x7801214e,0x55418dd3,0xdbd2e22b,0xd3998242,0xeffb3c0d + DD 0xc7bf3827,0xdfa6077c,0x47f8238f,0xf2165bcb,0x8564d554,0xfe37cf68,0x0a81fb98,0xe5f825c4,0xffed4d6f,0x43cc4f67,0xb50a34b0,0xbc609578,0x5041faf1,0x8aa8fcf9,0x651773b6,0x5659f053 + DD 0x6044d63b,0xe87582c3,0x0cdb0ca0,0xa6089409,0xbfb2bcf6,0x8c993e0f,0x45985cfc,0xfc64a719,0x83dbedba,0x15c4da80,0x2be67df7,0x804ae112,0xa23defde,0xda4c9658,0x5156e0d3,0x12002ddd + DD 0x5dd21b96,0xe68eae89,0xcf44624d,0x8b99f28b,0x1ec8897a,0x0ae00808,0x6712f76e,0xdd0a9303,0x4e233de4,0x96237522,0x2b36a8a5,0x192445b1,0x023993d9,0xabf9ff74,0x2aad4a8f,0x21f37bf4 + DD 0xf8bd2bbd,0x340a4349,0x4868195d,0x1d902cd9,0xe5fdb6f1,0x3d27bbf1,0x124f9f1c,0x7a5ab088,0xf7a09e03,0xc466ab06,0x31f2c123,0x2f8a1977,0x041b6657,0xda355dc7,0x8ece2a7c,0xcb840d12 + DD 0x7db32675,0xb600ad9f,0x07a06f1b,0x78fea133,0xb31f6094,0x5d032269,0x83ec37aa,0x07753ef5,0x9c0bea78,0x03485aed,0xbc3f4524,0x41bb3989,0x697f726d,0x09403761,0xdf394820,0x6109beb3 + DD 0x3b6d1145,0x804111ea,0xa8582654,0xb6271ea9,0x24e66562,0x619615e6,0xd7b6ad9c,0xa2554945,0x99bfe35f,0xd9c4985e,0x7b51cdf6,0x9770ccc0,0x92881832,0x7c327013,0x286b26d1,0x8777d45f + DD 0xd847999d,0x9bbeda22,0xc3525d32,0x03aa33b6,0x28a959a1,0x4b7b96d4,0x31e5d234,0xbb3786e5,0x6961f247,0xaeb5d3ce,0x02f93d3f,0x20aa85af,0xd7a7ae4f,0x9cd1ad3d,0x781adaa8,0xbf6688f0 + DD 0x7469cead,0xb1b40e86,0x309fca48,0x1904c524,0x4b54bbc7,0x9b7312af,0x593affa2,0xbe24bf8f,0xbd98764b,0xbe5e0790,0xa26e299e,0xa0f45f17,0x6b8fe4c7,0x4af0d2c2,0x8ae8a3e6,0xef170db1 + DD 0x29e0ccc1,0x0e8d61a0,0x60ad36ca,0xcd53e87e,0xc8173822,0x328c6623,0xa496be55,0x7ee1767d,0x648945af,0x89f13259,0x25c8009c,0x9e45a5fd,0x1f61ab8c,0xaf2febd9,0x8a275385,0x43f6bc86 + DD 0xf2142e79,0x87792348,0xc6e6238a,0x17d89259,0x4a839d9b,0x7536d2f6,0x76a1fbdc,0x1f428fce,0x0db06dfe,0x1c109601,0x50a3a3cc,0xbfc16bc1,0x9b30f41b,0xf9cbd9ec,0x00138cce,0x5b5da0d6 + DD 0x56ef96a7,0xec1d0a48,0x982bf842,0xb47eb848,0xec3f700d,0x66deae32,0xaa1181e0,0x4e43c42c,0xd1a4aa2a,0xa1d72a31,0xc004f3ce,0x440d4668,0x45fe8a7a,0x0d6a2d3b,0xfb128365,0x820e52e2 + DD 0x25e51b09,0x29ac5fcf,0x2023d159,0x180cd2bf,0xa1ebf90e,0xa9892171,0x7c132181,0xf97c4c87,0xc03dbb7e,0x9f1dc724,0x018cbbe4,0xae043765,0x0767d153,0xfb0b2a36,0x249cbaeb,0xa8e2f4d6 + DD 0xd95ea168,0x172a5247,0x2970764a,0x1758fada,0x1d978169,0xac803a51,0xde77e01b,0x299cfe2e,0xb0a98927,0x652a1e17,0x20014495,0x2e26e1d1,0x7175b56a,0x7ae0af9f,0xd64b9f95,0xc2e22a80 + DD 0xd90a060a,0x4d0ff9fb,0xbaf38085,0x496a27db,0xda776bcf,0x32305401,0x725f209e,0xb8cdcef6,0x436a0bba,0x61ba0f37,0x76860049,0x263fa108,0xda3542cf,0x92beb98e,0xd5849538,0xa2d4d14a + DD 0x12e9a1bc,0x989b9d68,0x5f6e3268,0x61d9075c,0x99ace638,0x352c6aa9,0x920f43ff,0xde4e4a55,0xd673c017,0xe5e4144a,0x6f6e05ea,0x667417ae,0xdcd1bd56,0x613416ae,0x86693711,0x5eb36201 + DD 0x3a1aa914,0x2d7bc504,0x76dc5975,0x175a1299,0x3fc8125c,0xe900e0f2,0x11198875,0x569ef68c,0x63a113b4,0x9012db63,0x98835766,0xe3bd3f56,0x76412dea,0xa5c94a52,0xaa735e5c,0xad9e2a09 + DD 0x508b65e9,0x405a984c,0x6df1a0d1,0xbde4a1d1,0xdfba80da,0x1a9433a1,0x9440ad2e,0xe9192ff9,0x5099fe92,0x9f649696,0x0b27a54a,0x25ddb65c,0xc590da61,0x178279dd,0xfbde681a,0x5479a999 + DD 0x013fe162,0xd0e84e05,0x632d471b,0xbe11dc92,0xfc0e089f,0xdf0b0c45,0x4c144025,0x04fb15b0,0x13c99927,0xa61d5fc2,0x3de2eb35,0xa033e9e0,0xb8dacbb4,0xf8185d5c,0x8644549d,0x9a88e265 + DD 0x54671ff6,0xf717af62,0x5fa58603,0x4bd4241b,0xe67773c0,0x06fba40b,0x6a2847e9,0xc1d933d2,0x689e2c70,0xf4f5acf3,0x46bafd31,0x92aab0e7,0x3473f6e5,0x798d76aa,0x93141934,0xcc6641db + DD 0xd31e535e,0xcae27757,0x87c2ee11,0x04cc43b6,0x2e029ffa,0x8d1f9675,0xe4cc7a2c,0xc2150672,0x8d68b013,0x3b03c1e0,0xedf298f3,0xa9d6816f,0xa2804464,0x1bfbb529,0x5db22125,0x95a52fae + DD 0x0e1cb64e,0x55b32160,0x7e7fc9fe,0x004828f6,0x1bb0fb93,0x13394b82,0x35f1a920,0xb6293a2d,0xd145d2d9,0xde35ef21,0xbb8fa603,0xbe6225b3,0x32cf252d,0x00fc8f6b,0x117cf8c2,0xa28e52e6 + DD 0x4c371e6d,0x9d1dc89b,0x36ef0f28,0xcebe0675,0xa4292f81,0x5de05d09,0x353e3083,0xa8303593,0x7e37a9bb,0xa1715b0a,0x2b8faec3,0x8c56f61e,0x33c9b102,0x52507431,0xa44431f0,0x0130cefc + DD 0xbd865cfb,0x56039fa0,0xbc5f1dd7,0x4b03e578,0xbabe7224,0x40edf2e4,0x3a1988f6,0xc752496d,0x564beb6b,0xd1572d3b,0x39a1c608,0x0db1d110,0x16f60126,0x568d1934,0xf354af33,0x05ae9668 + DD 0xc92544f2,0x19de6d37,0xa35837d5,0xcc084353,0x1a514ece,0xcbb6869c,0x2e1d1066,0xb633e728,0x936c581c,0xf15dd69f,0x7439c4f9,0x96e7b8ce,0x2e448a5b,0x5e676f48,0xfd916bbb,0xb2ca7d5b + DD 0xf5024025,0xd55a2541,0xe4c2d937,0x47bc5769,0x0362189f,0x7d31b92a,0xef7816f9,0x83f3086e,0xb587579a,0xf9f46d94,0x30e76c5f,0xec2d22d8,0xb000ffcf,0x27d57461,0x364ffc2c,0xbb7e65f9 + DD 0x6652a220,0x7c7c9477,0xd696c981,0x61618f89,0x89effff3,0x5021701d,0x7c314163,0xf2c8ff8e,0x8efb4d3e,0x2da413ad,0xce176d95,0x937b5adf,0x2a67d51c,0x22867d34,0x18eb3ac9,0x262b9b10 + DD 0xc43ff28b,0x4e314fe4,0x6a664e7a,0x76476627,0xb7a565c2,0x3e90e40b,0xc1acf831,0x8588993a,0x8f938829,0xd7b501d6,0x3edd7d4c,0x996627ee,0x90cd34c7,0x37d44a62,0xf3833e8d,0xa8327499 + DD 0x4bf50353,0x2e18917d,0x556765fb,0x85dd726b,0x93d5ab66,0x54fe65d6,0x915c25fe,0x3ddbaced,0x12f22e85,0xa799d9a4,0x6d06f6bc,0xe2a24867,0x43ca1637,0xf4f1ee56,0x61ece30a,0xfda2828b + DD 0xa2dee7a6,0x758c1a3e,0x734b2284,0xdcde2f3c,0x4eaba6ad,0xaba445d2,0x76cee0a7,0x35aaf668,0xe5aa049a,0x7e0b04a9,0x91103e84,0xe74083ad,0x40afecc3,0xbeb183ce,0xea043f7a,0x6b89de9f + DD 0xfe67ba66,0x0e299d23,0x93cf2f34,0x91450760,0x97fcf913,0xf45b5ea9,0x8bd7ddda,0x5be00843,0xd53ff04d,0x358c3e05,0x5de91ef7,0xbf7ccdc3,0xb69ec1a0,0xad684dbf,0x801fd997,0x367e7cf2 + DD 0xb0dc8595,0x0ca1f3b7,0x9f1d9f2e,0x27de4608,0xbadd82a7,0x1af3bf39,0x65862448,0x79356a79,0xf5f9a052,0xc0602345,0x139a42f9,0x1a8b0f89,0x844d40fc,0xb53eee42,0x4e5b6368,0x93b0bfe5 + DD 0xc024789c,0x5434dd02,0x41b57bfc,0x90dca9ea,0x243398df,0x8aa898e2,0x894a94bb,0xf607c834,0xc2c99b76,0xbb07be97,0x18c29302,0x6576ba67,0xe703a88c,0x3d79efcc,0xb6a0d106,0xf259ced7 + DD 0xc8de610b,0x0f893a5d,0x67e223ce,0xe8c515fb,0x4ead6dc5,0x7774bfa6,0x925c728f,0x89d20f95,0x098583ce,0x7a1e0966,0x93f2a7d7,0xa2eedb94,0x4c304d4a,0x1b282097,0xc077282d,0x0842e3da + DD 0x3b9e2d7b,0xe4d972a3,0xc48218ff,0x7cc60b27,0x84149d91,0x8fc70838,0x2f461ecc,0x5c04346f,0x614650a9,0xebe9fdf2,0xc1f666ac,0x5e35b537,0x88babc83,0x645613d1,0xc5e1c93e,0x88cace3a + DD 0x3de92e23,0x209ca375,0x5fbbb6e3,0xccb03cc8,0xd7b1487e,0xccb90f03,0xc710941f,0xfa9c2a38,0x6724ceed,0x756c3823,0x192d0323,0x3a902258,0xea5e038e,0xb150e519,0xc7427591,0xdcba2865 + DD 0x78890732,0xe549237f,0x53fcb4d9,0xc443bef9,0xeb3480d6,0x9884d8a6,0x3048b186,0x8a35b6a1,0x65e9a90a,0xb4e44716,0x653006c0,0x45bf380d,0x4fe9ae3b,0x8f3f820d,0x979a3b71,0x244a35a0 + DD 0x74cd06ff,0xa1010e9d,0xaca3eeac,0x9c17c7df,0x8063aa2b,0x74c86cd3,0x734614ff,0x8595c4b3,0x990f62cc,0xa3de00ca,0xca0c3be5,0xd9bed213,0xdf8ce9f5,0x7886078a,0x5cd44444,0xddb27ce3 + DD 0x58926ddd,0xed374a66,0x908015b8,0x138b2d49,0xde1f7ab8,0x886c6579,0xc3020b7a,0x888b9aa0,0x3a96e355,0xd3ec034e,0xf30fbe9a,0xba65b0b8,0xff21367a,0x064c8e50,0x0b04b46e,0x1f508ea4 + DD 0x747c866c,0x98561a49,0x0518a062,0xbbb1e5fe,0xecdc3608,0x20ff4e8b,0x20184027,0x7f55cded,0xf38c85f0,0x8d73ec95,0x8bc3b8c3,0x5b589fdf,0x0f12b66f,0xbe95dd98,0x0e338e01,0xf5bd1a09 + DD 0x5e915918,0x65163ae5,0x86f8a46b,0x6158d6d9,0xeeebf99c,0x8466b538,0xbca477ef,0xca8761f6,0x9ebbc601,0xaf3449c2,0xe0c3ae2f,0xef3b0f41,0x5de63752,0xaa6c577d,0x64682a51,0xe9166601 + DD 0xfc15aa1e,0x5a3097be,0xb54b0745,0x40d12548,0x519a5f12,0x5bad4706,0xa439dee6,0xed03f717,0x4a02c499,0x0794bb6c,0xcffe71d2,0xf725083d,0x0f3adcaf,0x2cad7519,0x43729310,0x7f68ea1c + DD 0xb7ffd977,0xe747c8c7,0x80761a22,0xec104c35,0x5a3ffb83,0x8395ebaf,0xe4b63db7,0xfb3261f4,0xd883e544,0x53544960,0x8cc2eeb8,0x13520d70,0xd3d65f99,0x08f6337b,0x781cf95b,0x83997db2 + DD 0x0dbd2c01,0xce6ff106,0x1f9ce934,0x4f8eea6b,0x0e993921,0x546f7c4b,0x5e753fc7,0x6236a324,0xa16022e9,0x65a41f84,0x43d1dbb2,0x0c18d878,0x2d4cef9c,0x73c55640,0x70444c74,0xa0428108 + DD 0x9afdfb3c,0x68e4f15e,0x5bdfb6df,0x49a56143,0x5f823d97,0xa9bc1bd4,0xea111c2a,0xbceb5970,0xb269bbc4,0x366b455f,0xe9bc5d62,0x7cd85e1e,0x4f18b086,0xc743c41c,0x95294fb9,0xa4b40990 + DD 0x26ee8382,0x9c7c581d,0x359d638e,0xcf17dcc5,0xb728ae3d,0xee8273ab,0xf821f047,0x1d112926,0x50491a74,0x11498477,0xfde0dfb9,0x687fa761,0x7ea435ab,0x2c258022,0x91ce7e3f,0x6b8bdb94 + DD 0x3bf834aa,0x4c5b5dc9,0x4f6c7e4b,0x04371819,0x3736bcad,0xc284e00a,0x21ae8f8d,0x0d881118,0xf48c8e33,0xf9cf0f82,0xa1bf40db,0xa11fd075,0xdc2733e5,0xdceab0de,0x8e986bd7,0xc560a8b5 + DD 0x3929d097,0x48dd1fe2,0x92f188f1,0x3885b290,0xda6fcdac,0x0f2ae613,0xb662a46c,0x9054303e,0x0738042a,0xb6871e44,0xbdaf6449,0x98e6a977,0xd1c9df1b,0xd8bc0650,0x36e098f9,0xef3d6451 + DD 0xb6d72d28,0x03fbae82,0xf5d84080,0x77ca9db1,0xa58efc1c,0x8a112cff,0xc564cb4a,0x518d761c,0xf0d1b5ce,0x69b5740e,0xe9eb1785,0x717039cc,0x22f53382,0x3fe29f90,0x6bc7c95c,0x8e54ba56 + DD 0xf7f91d0f,0x9c806d8a,0xa82a5728,0x3b61b0f1,0x94d76754,0x4640032d,0x47d834c6,0x273eb5de,0x7b4e4d53,0x2988abf7,0xde401777,0xb7ce66bf,0x715071b3,0x9fba6b32,0xad3a1a98,0x82413c24 + DD 0xe0e8ad93,0x5b7fc8c4,0x5fab868d,0xb5679aee,0x2b3946f3,0xb1f9d2fa,0x5685b50a,0x458897dc,0x89d0caf3,0x1e98c930,0x78642e92,0x39564c5f,0x0dbdaf18,0x1b77729a,0x579e82e6,0xf9170722 + DD 0xe4515fa5,0x680c0317,0xfb0c790f,0xf85cff84,0x6d2e0765,0xc7a82aab,0x35c82b32,0x7446bca9,0x6d63184f,0x5de607aa,0x262803a6,0x7c1a46a8,0xaebe8035,0xd218313d,0xc73c51f8,0x92113ffd + DD 0x12e7e46c,0x4b38e083,0x56126bd5,0x69d0a37a,0x73c07e04,0xfb3f324b,0x8fda7267,0xa0c22f67,0x4d2c7d8f,0x8f2c0051,0xcbe2cae5,0xbc45ced3,0xa8f0f277,0xe1c6cf07,0x1eb99a98,0xbc392312 + DD 0x3cc8ac85,0x75537b7e,0xdd02753b,0x8d725f57,0xb737df2f,0xfd05ff64,0xf6d2531d,0x55fe8712,0x6ab6b01c,0x57ce04a9,0x7cd93724,0x69a02a89,0xcf86699b,0x4f82ac35,0x9cb4b232,0x8242d3ad + DD 0xd62105e5,0x713d0f65,0x2d29be61,0xbb222bfa,0x6cfbef09,0xf2f9a79e,0xd5d6782f,0xfc24d8d3,0xd4129967,0x5db77085,0xdc3c2a43,0xdb81c3cc,0x05d8d9a3,0x9d655fc0,0x54298026,0x3f5d057a + DD 0x88c54694,0x1157f56d,0x9b09573e,0xb26baba5,0x22adffd1,0x2cab03b0,0xdd69f383,0x60a412c8,0x54b25039,0xed76e98b,0x687e714d,0xd4ee67d3,0x7b00b594,0x87739648,0xc9ef709b,0xce419775 + DD 0x1c203a40,0x40f76f85,0xeafd8f91,0x30d352d6,0x95578dd2,0xaf196d3d,0x77cc3f3d,0xea4bb3d7,0xb98e782b,0x42a5bd03,0x0624920d,0xac958c40,0xfc56fcc8,0xb838134c,0x89572e5e,0x86ec4ccf + DD 0x9be47be0,0x69c43526,0xcb28fea1,0x323b7dd8,0x3a6c67e5,0xfa5538ba,0x1d378e46,0xef921d70,0x3c4b880e,0xf92961fc,0x98940a67,0x3f6f914e,0xfef0ff39,0xa990eb0a,0xf0eeff9c,0xa6c2920f + DD 0x51b8d9a3,0xca804166,0x0ffb0db1,0x42531bc9,0xaa82e7ce,0x72ce4718,0xdf574741,0x6e199913,0xd5d36946,0xd5f1b13d,0xf68f0194,0x8255dc65,0x8710d230,0xdc9df4cd,0x138c1988,0x3453c20f + DD 0x89a6ef01,0x9af98dc0,0x9857df85,0x4dbcc3f0,0x5c1ad924,0x34805601,0xd0493046,0x40448da5,0x4ee343e2,0xf629926d,0x90e8a301,0x6343f1bd,0x40815b3f,0xefc93491,0xde8f66fb,0xf882a423 + DD 0xe7db9f57,0x3a12d5f4,0x3c384c27,0x7dfba38a,0x6fc660b1,0x7a904bfd,0x2773b21c,0xeb6c5db3,0x1cdfe049,0xc350ee66,0x44540f29,0x9baac0ce,0xa5ec6aad,0xbc57b6ab,0x0a7c1baa,0x167ce8c3 + DD 0x53fb2b56,0xb23a03a5,0x4e057f78,0x6ce141e7,0x89e490d9,0x796525c3,0xa31a7e75,0x0bc95725,0x1220fd06,0x1ec56791,0x408b0bd6,0x716e3a3c,0xe8ebeba9,0x31cd6bf7,0xbee6b670,0xa7326ca6 + DD 0xcd090c43,0x3d9f851c,0xf12c3988,0x561e8f13,0x904b7be4,0x50490b6a,0x0410737b,0x61690ce1,0x0f009052,0x299e9a37,0xf026092e,0x258758f0,0xfdfcdc0f,0x9fa255f3,0xc0e1bcd2,0xdbc9fb1f + DD 0x24651840,0x35f9dd6e,0xa5c59abc,0xdca45a84,0xecca4938,0x103d396f,0xb97b3f29,0x4532da0a,0x1999a6bf,0xc4135ea5,0x5e6bf2ee,0x3aa9505a,0x3f5be093,0xf77cef06,0xa943152e,0x97d1a0f8 + DD 0x2e1c21dd,0x2cb0ebba,0x2c6797c4,0xf41b29fc,0xb300101f,0xc6e17321,0xd0d79a89,0x4422b0e9,0x92f1bfc4,0x49e4901c,0xe1e10ed9,0x06ab1f8f,0xdb2926b8,0x84d35577,0x356e8ec2,0xca349d39 + DD 0x343bf1a9,0x70b63d32,0x37d1a6b1,0x8fd3bd28,0x316865b4,0x0454879c,0xc458efa2,0xee959ff6,0x9706dc3f,0x0461dcf8,0x164e4b2e,0x737db0e2,0x2f8843c8,0x09262680,0x7745e6f6,0x54498bbc + DD 0xa29e24af,0x359473fa,0x70aa87a1,0xfcc3c454,0x00573ace,0xfd2c4bf5,0x28dd1965,0xb65b514e,0x2193e393,0xe46ae7cf,0xf5444d97,0x60e9a4e1,0x00ff38ed,0xe7594e96,0x0a0e0f02,0x43d84d2f + DD 0xee398a21,0x8b6db141,0xe3bcc5be,0xb88a56ae,0x373460ea,0x0a1aa52f,0x160bb19b,0x20da1a56,0x65bf0384,0xfb54999d,0x5d5a180e,0x71a14d24,0x21737b04,0xbc44db7b,0x01dd8e92,0xd84fcb18 + DD 0xfa44b479,0x80de937b,0x5c98fd4f,0x53505499,0x28f08727,0x1edb12ab,0xa5f3ef53,0x4c58b582,0x8327f246,0xbfb236d8,0x4d7df320,0xc3a3bfaa,0xb96024f2,0xecd96c59,0x7f4e0433,0xfc293a53 + DD 0x5acf6e10,0x5341352b,0xafe652c3,0xc50343fd,0x18577a7f,0x4af3792d,0xaf16823d,0xe1a4c617,0x33425d0a,0x9b26d0cd,0x9b7bc47f,0x306399ed,0x706bb20b,0x2a792f33,0x98111055,0x31219614 + DD 0x87f5d28b,0x864ec064,0x962277fd,0x11392d91,0xbb6aed5f,0xb5aa7942,0x47e799d9,0x080094dc,0x208ba19b,0x4afa588c,0x8512f284,0xd3e7570f,0x02f5799a,0xcbae64e6,0x514b9492,0xdeebe7ef + DD 0xe5c298ff,0x30300f98,0x3678361f,0x17f561be,0x98cb9a16,0xf52ff312,0x5562d490,0x6233c3bc,0x92e3a2cb,0x7bfa15a1,0xe6365119,0x961bcfd1,0x2c8c53b1,0x3bdd29bf,0x822844ba,0x739704df + DD 0x7e7b754b,0x7dacfb58,0xa806c9b9,0x23360791,0x23504452,0xe7eb88c9,0x852c1783,0x2983e996,0x958d881d,0xdd4ae529,0x262c7b3c,0x026bae03,0x960b52d1,0x3a6f9193,0x92696cfb,0xd0980f90 + DD 0xd5f30851,0x4c1f428c,0x2a4f6630,0x94dfed27,0xfc5d48a4,0x4df53772,0x933260ce,0xdd2d5a2f,0xd44cc7a5,0x574115bd,0xbd12533a,0x4ba6b20d,0x243057c9,0x30e93cb8,0x14de320e,0x794c486a + DD 0xf21496e4,0xe925d4ce,0xec696331,0xf951d198,0x3e8d812f,0x9810e2de,0x389294ab,0xd0a47259,0x0e3bab66,0x513ba2b5,0xabad306f,0x462caff5,0xaf04c49e,0xe2dc6d59,0xe0b84b0b,0x1aeb8750 + DD 0x2f7d0ca2,0xc034f12f,0xe06acf2f,0x6d2e8128,0x21facc2f,0x801f4f83,0xf40ef607,0xa1170c03,0x7805a99c,0xfe0a1d4f,0xcc26aba5,0xbde56a36,0x35531f40,0x5b1629d0,0x9afa6108,0xac212c2b + DD 0x15697be5,0x30a06bf3,0x2c63c7c1,0x6f0545dc,0x7ccdadaf,0x5d8cb842,0xac7015bb,0xd52e379b,0xf462c23e,0xc4f56147,0x46bc24b0,0xd44a4298,0xe2856d4f,0xbc73d23a,0x0832bcdf,0x61cedd8c + DD 0x99f241d7,0x60953556,0x001a349d,0xee4adbd7,0xaa89e491,0x0b35bf6a,0x136f7546,0x7f0076f4,0x9264da3d,0xd19a18ba,0x62a7a28b,0x6eb2d2cd,0x8761c971,0xcdba941f,0xa3be4a5d,0x1550518b + DD 0x57d0b70c,0xd0e8e2f0,0xcd133ba3,0xeea8612e,0x44416aec,0x814670f0,0x30775061,0x424db6c3,0x16213fd1,0xd96039d1,0x18a3478f,0xc61e7fa5,0xcb0c5021,0xa805bdcc,0x0cc616dd,0xbdd6f3a8 + DD 0x5d97f7e2,0x06009667,0xaf0bf4b6,0x31db0fc1,0x5491627a,0x23680ed4,0x7d741fb1,0xb99a3c66,0x36b1ff92,0xe9bb5f55,0x512b388d,0x29738577,0x50fcf263,0xdb8a2ce7,0x6c4f7b47,0x385346d4 + DD 0x31631f9e,0xbe86c5ef,0x03a57a29,0xbf91da21,0x7b23f821,0xc3b1f796,0x770db354,0x0f7d00d2,0xd8fe79da,0x8ffc6c3b,0xd525c996,0xcc5e8c40,0xcfff632a,0x4640991d,0x67112528,0x64d97e8c + DD 0x02f1cd1e,0xc232d973,0x1dd212a4,0xce87eacb,0xe69802f7,0x6e4c8c73,0x1fffddbd,0x12ef0290,0x1bcea6e2,0x941ec74e,0x3cb92cbb,0xd0b54024,0x7e8f9d05,0x809fb9d4,0xf2992aae,0x3bf16159 + DD 0xf8a7a838,0xad40f279,0x05615660,0x11aea631,0xa01f6fa1,0xbf52e6f1,0x3dc2aec9,0xef046995,0xd8080711,0x785dbec9,0x9fdedf76,0xe1aec60a,0xfa21c126,0xece797b5,0x05e52732,0xc66e898f + DD 0x08811fdb,0x39bb69c4,0x2fc7f082,0x8bfe1ef8,0x174f4138,0xc8e7a393,0xd58d1f98,0xfba8ad1d,0xbfd2fd5b,0xbc21d0ce,0x6ee60d61,0x0b839a82,0xafd22253,0xaacf7658,0xaae396b3,0xb526bed8 + DD 0x38564464,0xccc1bbc2,0x8c45bc73,0x9e3ff947,0x58188a78,0xcde9bca3,0xd73bf8f7,0x138b8ee0,0x4123c489,0x5c7e234c,0xfa643297,0x66e69368,0x39a15fa3,0x0629eeee,0xa9e2a927,0x95fab881 + DD 0xeafbb1e1,0xb2497007,0xe75b7a93,0xd75c9ce6,0xefb68d78,0x3558352d,0x223f6396,0xa2f26699,0xe469b17a,0xeb911ecf,0xe72d3ec2,0x62545779,0x82cb113f,0x8ea47de7,0x4e1fa98d,0xebe4b086 + DD 0x8cdfedb1,0xec2d5ed7,0xfe211a74,0xa535c077,0x11d244c5,0x9678109b,0xbe299a76,0xf17c8bfb,0xfb11fbc4,0xb651412e,0x94ab3f65,0xea0b5482,0x0cf78243,0xd8dffd95,0xce0361d4,0x2e719e57 + DD 0x304ddc5b,0x9007f085,0x4daba2ea,0x095e8c6d,0x3f9d28a9,0x5a33cdb4,0xe2283003,0x85b95cd8,0xb9744733,0xbcd6c819,0xfc7f5783,0x29c5f538,0xd59038e4,0x6c49b2fa,0x3bbe1018,0x68349cc1 + DD 0x21830ee5,0xcc490c1d,0xe9bfa297,0x36f9c4ee,0x48de1a94,0x58fd7294,0x4e8f2cdc,0xaadb13a8,0x81313dba,0x515eaaa0,0xc2152dd8,0xc76bb468,0xa653dbf8,0x357f8d75,0xb14ac143,0xe4d8c4d1 + DD 0xb055cb40,0xbdb8e675,0x977b5167,0x898f8e7b,0xb82fb863,0xecc65651,0x6d88f01f,0x56544814,0x263a75a9,0xb0928e95,0x1a22fcda,0xcfb6836f,0x3f3bd37c,0x651d14db,0xb6ad4664,0x1d3837fb + DD 0xff4f94ab,0x7c5fb538,0x6d7fb8f2,0x7243c712,0xa85c5287,0xef13d60c,0x4bb8dd1b,0x18cfb7c7,0x72908219,0x82f9bfe6,0x9d5144ab,0x35c4592b,0x9cf4b42f,0x52734f37,0x8c60ddc4,0x6bac55e7 + DD 0x94dea0f6,0xb5cd811e,0xe18cc1a3,0x259ecae4,0x15e660f8,0x6a0e836e,0x0e02bff2,0x6c639ea6,0x7e1026fd,0x8721b8cb,0x63261942,0x9e73b50b,0x77f01da3,0xb8c70974,0x8268f57f,0x1839e6a6 + DD 0x5150b805,0x571b9415,0xf92c7097,0x1892389e,0x4a084b95,0x8d69c18e,0xbe5b495c,0x7014c512,0x1b07523c,0x4780db36,0x2c1c64fa,0x2f6219ce,0x602c105a,0xc38b81b0,0x5dc8e360,0xab4f4f20 + DD 0xcf7d62d2,0x20d3c982,0x23ba8150,0x1f36e29d,0x92763f9e,0x48ae0bf0,0x1d3a7007,0x7a527e6b,0x581a85e3,0xb4a89097,0xdc158be5,0x1f1a520f,0x167d726e,0xf98db37d,0x1113e862,0x8802786e + DD 0x36f09ab0,0xefb2149e,0x4a10bb5b,0x03f163ca,0x06e20998,0xd0297045,0x1b5a3bab,0x56f0af00,0x70880e0d,0x7af4cfec,0xbe3d913f,0x7332a66f,0x7eceb4bd,0x32e6c84a,0x9c228f55,0xedc4a79a + DD 0xc55c4496,0xc37c7dd0,0x25bbabd2,0xa6a96357,0xadd7f363,0x5b7e63f2,0x2e73f1df,0x9dce3782,0xb2b91f71,0xe1e5a16a,0x5ba0163c,0xe4489823,0xf6e515ad,0xf2759c32,0x8615eecf,0xa5e2f1f8 + DD 0xabded551,0x74519be7,0xc8b74410,0x03d358b8,0x0e10d9a9,0x4d00b10b,0x28da52b7,0x6392b0b1,0x0b75c904,0x6744a298,0xa8f7f96c,0xc305b0ae,0x182cf932,0x042e421d,0x9e4636ca,0xf6fc5d50 + DD 0xd64cc78c,0x795847c9,0x9b6cb27b,0x6c50621b,0xdf8022ab,0x07099bf8,0xc04eda1d,0x48f862eb,0xe1603c16,0xd12732ed,0x5c9a9450,0x19a80e0f,0xb429b4fc,0xe2257f54,0x45460515,0x66d3b2c6 + DD 0x822e37be,0x6ca4f87e,0x253bda4e,0x73f237b4,0x41190aeb,0xf747f3a2,0x804cf284,0xf06fa36f,0xfc621c12,0x0a6bbb6e,0x40b80ec6,0x5d624b64,0x7ba556f3,0x4b072425,0x3e2d20a8,0x7fa0c354 + DD 0xe3229d41,0xe921fa31,0x94531bd4,0xa929c652,0xa6d38209,0x84156027,0x6bdb97bd,0xf3d69f73,0x16833631,0x8906d19a,0x03d51be3,0x68a34c2e,0x0e511cd8,0xcb59583b,0xfdc132a8,0x99ce6bfd + DD 0xffcdb463,0x3facdaaa,0x34a38b08,0x658bbc1a,0xf1a9078d,0x12a801f8,0x6ab855de,0x1567bcf9,0x3572359b,0xe08498e0,0x8659e68b,0xcf0353e5,0x7d23807c,0xbb86e9c8,0x2198e8a2,0xbc08728d + DD 0x453cadd6,0x8de2b7bc,0xbc0bc1f8,0x203900a7,0xa6abd3af,0xbcd86e47,0x8502effb,0x911cac12,0xec965469,0x2d550242,0x29e0017e,0x0e9f7692,0x65979885,0x633f078f,0x4cf751ef,0xfb87d449 + DD 0xfc25419a,0xe1790e4b,0x4bff3cfd,0x36467203,0x25b6e83f,0xc8db6386,0x6cad6fd2,0x6cc69f23,0x6bc68bb9,0x0219e45a,0x297f7334,0xe43d79b6,0x465dc97c,0x7d445368,0x2a0b949a,0x4b9eea32 + DD 0x6102d021,0x1b96c6ba,0x2f4461ea,0xeaafac78,0xc49f19a8,0xd4b85c41,0xcf538875,0x275c28e4,0xdd2e54e0,0x35451a9d,0x0605618b,0x6991adb5,0x7b36cd24,0x5b8b4bcd,0x56f37216,0x372a4f8c + DD 0xa6a5da60,0xc890bd73,0xdc4c9ff0,0x6f083da0,0xf0536e57,0xf4e14d94,0xaaec8243,0xf9ee1eda,0x8bdcf8e7,0x571241ec,0x0b041e26,0xa5db8271,0xe3fff040,0x9a0b9a99,0x7c271202,0xcaaf21dd + DD 0x4f0dd2e8,0xb4e2b2e1,0x0a377ac7,0xe77e7c4f,0x0d7a2198,0x69202c3f,0x28200eb8,0xf759b7ff,0xdcfe314e,0xc87526ed,0x53d5cf99,0xeb84c524,0x515138b6,0xb1b52ace,0x23fca3f4,0x5aa7ff8c + DD 0xb9791a26,0xff0b13c3,0xcdd58b16,0x960022da,0x57aad2de,0xdbd55c92,0xf30fe619,0x3baaaaa3,0x0d881efd,0x9a4b2346,0x46325e2a,0x506416c0,0x035c18d4,0x91381e76,0xf27817b0,0xb3bb68be + DD 0x5116f937,0x15bfb8bf,0xc1268943,0x7c64a586,0x8419a2c8,0x71e25cc3,0x8335f463,0x9fd6b0c4,0xe8ee0e0e,0x4bf0ba3c,0x298c21fa,0x6f6fba60,0xae66bee0,0x57d57b39,0x22672544,0x292d5130 + DD 0xbab093b3,0xf451105d,0x02839986,0x012f59b9,0x3474a89c,0x8a915802,0x2de03e97,0x048c919c,0x91071cd5,0xc476a2b5,0x034970a5,0x791ed89a,0xe1b7994b,0x89bd9042,0xa1057ffd,0x8eaf5179 + DD 0xd551ee10,0x6066e2a2,0x727e09a6,0x87a8f1d8,0x2c01148d,0x00d08bab,0x424f33fe,0x6da8e4f1,0xcf9a4e71,0x466d17f0,0x3bf5cb19,0xff502010,0xd062ecc0,0xdccf97d8,0x81d80ac4,0x80c0d9af + DD 0x033f2876,0xe87771d8,0x7d5cc3db,0xb0186ec6,0x3bc9bc1d,0x58e8bb80,0x6f6ef60e,0x4d1395cc,0x186244a0,0xa73c62d6,0x110a5b53,0x918e5f23,0x741b7eab,0xed4878ca,0xdbe03e51,0x3038d71a + DD 0xa93c3246,0x840204b7,0xa0b9b4cd,0x21ab6069,0xb1d64218,0xf5fa6e2b,0xf3d56191,0x1de6ad0e,0xff1929c7,0x570aaa88,0x640e87b5,0xc6df4c6b,0xc65f0ccc,0xde8a74f2,0xe6f6cc01,0x8b972fd5 + DD 0x0b846531,0x3fff36b6,0x10a5e475,0xba7e45e6,0x4145b6c5,0x84a1d10e,0x5e046d9d,0xf1f7f91a,0x44de90d7,0x0317a692,0xf199c15e,0x951a1d4a,0xc9d73deb,0x91f78046,0xfab8224f,0x74c82828 + DD 0xe7560b90,0xaa6778fc,0xa7e824ce,0xb4073e61,0xd642eba8,0xff0d693c,0x5dccef38,0x7ce2e57a,0x1df1ad46,0x89c2c789,0x098346fd,0x83a06922,0xda2fc177,0x2d715d72,0x85b6cf1d,0x7b6dd71d + DD 0x73fa9cb0,0xc60a6d0a,0x328bf5a9,0xedd3992e,0x832c8c82,0xc380ddd0,0xa2a0bf50,0xd182d410,0xd9a528db,0x7d9d7438,0xcaf53994,0xe8b1a0e9,0x0e19987c,0xddd6e5fe,0x190b059d,0xacb8df03 + DD 0x8300129f,0x53703a32,0x68c43bfd,0x1f637662,0x00e54051,0xbcbd1913,0x7bf5a8c5,0x812fcc62,0x29fb85da,0x3f969d5f,0x694759e8,0x72f4e00a,0x790726b7,0x426b6e52,0x3bdbb209,0x617bbc87 + DD 0x97aee317,0x511f8bb9,0xe81536a8,0x812a4096,0x3ac09b9b,0x137dfe59,0xba8c9a7a,0x0682238f,0xaeccb4bd,0x7072ead6,0x692ba633,0x6a34e9aa,0x6fff9d33,0xc82eaec2,0x1d4d2b62,0xfb753512 + DD 0x1d7aadab,0x1a0445ff,0xd5f6a67c,0x65d38260,0x91cfb26f,0x6e62fb08,0x5c7d91d6,0xef1e0fa5,0x33db72cd,0x47e7c7ba,0xfa7c74b2,0x017cbc09,0xf50a503c,0x3c931590,0x616baa42,0xcac54f60 + DD 0xb2369f0f,0x9b6cd380,0x23c76151,0x97d3a70d,0x9862a9c6,0x5f9dd6fc,0x12312f51,0x044c4ab2,0x834a2ddc,0x035ea0fd,0xcc7b826d,0x49e6b862,0x62fce490,0xb03d6883,0xb37e36e9,0x62f2497a + DD 0xc6458293,0x04b005b6,0xe8d10af7,0x36bb5276,0x8ee617b8,0xacf2dc13,0xb004b3d4,0x470d2d35,0xfeeb1b77,0x06790832,0x85657f9c,0x2bb75c39,0xc0f60004,0xd70bd4ed,0x219b018b,0xfe797ecc + DD 0x753aebcc,0x9b5bec2a,0xc939eca5,0xdaf9f3dc,0xd095ad09,0xd6bc6833,0xdaa4d2fc,0x98abdd51,0x8d168be5,0xd9840a31,0x2325a23c,0xcf7c10e0,0x7e6ecfaf,0xa5c02aa0,0xb5bfdf18,0x2462e7e6 + DD 0xa0cc3f12,0xab2d8a8b,0xbc672a29,0x68dd485d,0x596f2cd3,0x72039752,0xa0cf3d8d,0x5d3eea67,0xe6602671,0x810a1a81,0x14026c0c,0x8f144a40,0x76b50f85,0xbc753a6d,0x645cd4a4,0xc4dc21e8 + DD 0x521d0378,0xc5262dea,0x05011c6f,0x802b8e0e,0x0b4c19ea,0x1ba19cbb,0xebf0aaec,0x21db64b5,0x70342f9d,0x1f394ee9,0x1bc44a14,0x93a10aee,0x3efd0baa,0xa7eed31b,0x1d154e65,0x6e7c824e + DD 0x9966e7ee,0xee23fa81,0x05b7920d,0x64ec4aa8,0x2d90aad4,0x2d44462d,0xdf277ad5,0xf44dd195,0xbb46b6a1,0x8d6471f1,0xfd885090,0x1e65d313,0x13a977b4,0x33a800f5,0x0797e1ef,0xaca9d721 + DD 0xfcff6a17,0x9a5a85a0,0x1eca7cee,0x9970a3f3,0xc9504be3,0xbb9f0d6b,0xadd24ee2,0xe0c504be,0x77fcc2f4,0x7e09d956,0x65bb5fc4,0xef1a5227,0x8b9286aa,0x145d4fb1,0x6649028b,0x66fd0c5d + DD 0x1bf4581c,0x98857ceb,0xaca7b166,0xe635e186,0x659722ac,0x278ddd22,0x1db68007,0xa0903c4c,0x48f21402,0x366e4589,0xb96abda2,0x31b49c14,0xe0403190,0x329c4b09,0xd29f43fe,0x97197ca3 + DD 0x274983d8,0x8073dd1e,0x55717c8f,0xda1a3bde,0x0361f9d1,0xfd3d4da2,0x4c7de1ce,0x1332d081,0xaa6d0e10,0x9b7ef7a3,0xf54f1c4a,0x17db2e73,0x4cd35567,0xaf3dffae,0xe56f4e71,0xaaa2f406 + DD 0x7ace3fc7,0x8966759e,0x45a8d8c6,0x9594eacf,0x91834e0e,0x8de3bd8b,0x548c0421,0xafe4ca53,0xe6ee81c6,0xfdd7e856,0x6b891a3a,0x8f671beb,0xfae63829,0xf7a58f2b,0x9c11ac9f,0x9ab186fb + DD 0x10b5be76,0x8d6eb369,0xfb040bcd,0x046b7739,0xcb73de88,0xccb4529f,0xcf26be03,0x1df0fefc,0xbcfcd027,0xad7757a6,0xbb3165ca,0xa8786c75,0x7e99a4d9,0xe9db1e34,0xb06c504b,0x99ee86df + DD 0xc15c9f0a,0x5b7c2ddd,0x4295989e,0xdf87a734,0x03d08fda,0x59ece47c,0xad5fc702,0xb074d3dd,0x51a03776,0x20407903,0x2a608007,0x2bb1f77b,0xe1153185,0x25c58f4f,0x766e6447,0xe6df62f6 + DD 0xed51275a,0xefb3d1be,0x2f0f483f,0x5de47dc7,0x97c2bedf,0x7932d98e,0x0219f8a1,0xd5c11927,0xa73a294e,0x9d751200,0x9dc20172,0x5f88434a,0xa26f506a,0xd28d9fd3,0x9d1dcd48,0xa890cd31 + DD 0x70f4d3b4,0x0aebaec1,0x0ffc8d00,0xfd1a1369,0x57d57838,0xb9d9c240,0x68bac361,0x45929d26,0x25b15ca6,0x5a2cd060,0x6e474446,0x4b3c83e1,0xee1e5134,0x1aac7578,0xc91e2f41,0xa418f5d6 + DD 0x213ed68b,0x6936fc8a,0x510a5224,0x860ae7ed,0xdef09b53,0x63660335,0xcd79c98d,0x641b2897,0x01110f35,0x29bd38e1,0x648b1937,0x79c26f42,0x9d9164f4,0x64dae519,0x0265c273,0xd85a2310 + DD 0x4b07e2b1,0x7173dd5d,0x8d9ea221,0xd144c4cb,0x1105ab14,0xe8b04ea4,0xfe80d8f1,0x92dda542,0xcf03dce6,0xe9982fa8,0x1a22cffc,0x8b5ea965,0x3fad88c4,0xf7f4ea7f,0x6a5ba95c,0x62db773e + DD 0x93f24567,0xd20f02fb,0x315257ca,0xfd46c69a,0x8bcab987,0x0ac74cc7,0x5ceca2f5,0x46f31c01,0x888b219e,0x40aedb59,0xe1fccd02,0xe50ecc37,0x911f816c,0x1bcd9dad,0x8db9b00c,0x583cc1ec + DD 0xa483bf11,0xf3cd2e66,0xb1b2c169,0xfa08a6f5,0x4be9fa28,0xf375e245,0x5b6d011f,0x99a7ffec,0xc4ae62da,0x6a3ebddb,0x374aef5d,0x6cea00ae,0x9d4d05bc,0xab5fb98d,0xd560f252,0x7cba1423 + DD 0x208490de,0x49b2cc21,0xbcfb2879,0x1ca66ec3,0x1b6fb16f,0x7f1166b7,0x65fe5db3,0xfff63e08,0x8b2610be,0xb8345abe,0x39de3df4,0xb732ed80,0x211c32b4,0x0e24ed50,0x848ff27d,0xd10d8a69 + DD 0xed4de248,0xc1074398,0x10488927,0xd7cedace,0x85673e13,0xa4aa6bf8,0x6daf30af,0xb46bae91,0xfcef7ad8,0x07088472,0xd4b35e97,0x61151608,0xdde29986,0xbcfe8f26,0xd5a34c79,0xeb84c4c7 + DD 0x164e1214,0xc1eec55c,0xa147bb03,0x891be86d,0x0ba96835,0x9fab4d10,0xa5c1ae9f,0xbf01e9b8,0xb186ebc0,0x6b4de139,0x85b91bca,0xd5c74c26,0xc2d93854,0x5086a99c,0xa7a9dfbc,0xeed62a7b + DD 0x76b7618a,0x8778ed6f,0x03b66062,0xbff750a5,0xb65186db,0x4cb7be22,0xcc3a6d13,0x369dfbf0,0x7191a321,0xc7dab26c,0x40ed718e,0x9edac3f9,0xd0cfd183,0xbc142b36,0x7c991693,0xc8af82f6 + DD 0x97ce0b2a,0xb3d1e4d8,0xc3a55cdf,0xe6d7c87f,0x68b81afe,0x35846b95,0xd3c239d8,0x018d12af,0x01206e15,0x2b2c6208,0xa3b882c6,0xe0e42453,0xa50162d5,0x854470a3,0x7017a62a,0x08157478 + DD 0x820357c7,0x18bd3fb4,0x6f1458ad,0x992039ae,0x25b44aa1,0x9a1df3c5,0xed3d5281,0x2d780357,0xc77ad4d4,0x58cf7e4d,0xf9df4fc4,0xd49a7998,0x1d71205e,0x4465a8b5,0x649254aa,0xa0ee0ea6 + DD 0xab7bd771,0x4b5eeecf,0x35c262b9,0x6c873073,0x3c9d61e7,0xdc5bd648,0x321460d2,0x233d6d54,0xfc195bcc,0xd20c5626,0x04d78b63,0x25445958,0x17ec8ef3,0xe03fcb3d,0x46b8f781,0x54b690d1 + DD 0x21230646,0x82fa2c8a,0x084f418c,0xf51aabb9,0x1a30ba43,0xff4fbec1,0x743c9df7,0x6a5acf73,0xd635b4d5,0x1da2b357,0xecd5c1da,0xc3de68dd,0xd61af0dd,0xa689080b,0xd665bf99,0xdea5938a + DD 0xfe637294,0x0231d71a,0xa5a81cd8,0x01968aa6,0x048e63b5,0x11252d50,0x6ca007e9,0xc446bc52,0x96d6134b,0xef8c50a6,0x9e09a05c,0x9361fbf5,0xdca3291a,0xf17f85a6,0xff251a21,0xb178d548 + DD 0xa4df3915,0x87f6374b,0x2fd5d608,0x566ce1bf,0x7de35102,0x425cba4d,0x58c5d5e2,0x6b745f8f,0x63122edf,0x88402af6,0x3b989a89,0x3190f9ed,0xebba3156,0x4ad3d387,0xc7c469a5,0xef385ad9 + DD 0x3f642c29,0xb08281de,0x910ffb88,0x20be0888,0xd5292546,0xf353dd4a,0x8377a262,0x3f1627de,0xeefcd638,0xa5faa013,0x74cc77c3,0x8f3bf626,0xa348f55e,0x32618f65,0x9fefeb9e,0x5787c0dc + DD 0xd9a23e44,0xf1673aa2,0x4e10690d,0x88dfa993,0x2bf91108,0x1ced1b36,0x3af48649,0x9193ceca,0x2d738fc5,0xfb34327d,0x975fee6c,0x6697b037,0xc04079a5,0x2f485da0,0x2feaa1ac,0x2cdf5735 + DD 0xbd55659e,0x76944420,0x4376090c,0x7973e32b,0x163b591a,0x86bb4fe1,0xc196f0ca,0x10441aed,0x045ad915,0x3b431f4a,0xa4afacb1,0x6c11b437,0x71fdbbd8,0x30b0c7db,0xeda65acd,0xb642931f + DD 0x9c92b235,0x4baae6e8,0x6b3993a1,0xa73bbd0e,0x693dd031,0xd06d60ec,0x7156881c,0x03cab91b,0x1db3574b,0xd615862f,0x64bb061a,0x485b0185,0xa0181e06,0x27434988,0xc1c0c757,0x2cd61ad4 + DD 0x2ff9f403,0x3effed5a,0x62239029,0x8dc98d8b,0x1f17b70d,0x2206021e,0xbf510015,0xafbec0ca,0x80130dfa,0x9fed7164,0x8a02dcf5,0x306dc2b5,0xfeb10fc0,0x48f06620,0x5a57cf51,0x78d1e1d5 + DD 0x192ef710,0xadef8c5a,0x3b7431f9,0x88afbd4b,0x64250c9e,0x7e1f7407,0xb58bec07,0x6e31318d,0x24f89b4e,0xfd4fc4b8,0x48c36a2a,0x65a5dd88,0xf024baa7,0x4f1eccff,0xcba94650,0x22a21cf2 + DD 0x42a554f7,0x95d29dee,0x002ec4ba,0x828983a5,0x8badb73d,0x8112a1f7,0xa27c1839,0x79ea8897,0xd065fd83,0x8969a5a7,0xb262a0bc,0xf49af791,0xaf2b5127,0xfcdea8b6,0x564c2dbc,0x10e913e1 + DD 0xbc21ef51,0x51239d14,0x4ce57292,0xe51c3ceb,0x47bbcc3b,0x795ff068,0xbd7e11e6,0x86b46e1e,0x80041ef4,0x0ea6ba23,0x6262342e,0xd72fe505,0x31d294d4,0x8abc6dfd,0x1278c2c9,0xbbe017a2 + DD 0xb389328a,0xb1fcfa09,0xd01771b5,0x322fbc62,0x60b045bf,0x04c0d063,0x10e52d01,0xdb652edc,0x03ec6627,0x50ef932c,0xc1ee50e3,0xde1b3b2d,0xdc37a90d,0x5ab7bdc5,0x31e33a96,0xfea67213 + DD 0x4f2999aa,0x6482b5cb,0xb8cbf0dd,0x38476cc6,0x173405bb,0x93ebfacb,0xe52369ec,0x15cdafe7,0xd935b7db,0xd42d5ba4,0x1c99a4cd,0x648b6004,0xa3b5545b,0x785101bd,0x9dd67faf,0x4bf2c38a + DD 0x4442449c,0xb1aadc63,0x33ad4fb8,0xe0e9921a,0xaa686d82,0x5c552313,0x465d866c,0xdee635fa,0x18ee6e8a,0xbc3c224a,0xed42e02f,0xeed748a6,0xd474cd08,0xe70f930a,0xfff24adf,0x774ea6ec + DD 0xf3480d4a,0x03e2de1c,0xbc8acf1a,0xf0d8edc7,0x68295a9c,0xf23e3303,0xc546a97d,0xfadd5f68,0x96f8acb1,0x895597ad,0x671bdae2,0xbddd49d5,0x21dd43f4,0x16fcd528,0x6619141a,0xa5a45412 + DD 0xc360e25a,0x8ce9b6bf,0x075a1a78,0xe6425195,0x481732f4,0x9dc756a8,0x5432b57a,0x83c0440f,0xd720281f,0xc670b3f1,0xd135e051,0x2205910e,0xdb052be7,0xded14b0e,0xc568ea39,0x697b3d27 + DD 0xfb3ff9ed,0x2e599b9a,0x17f6515c,0x28c2e0ab,0x474da449,0x1cbee4fd,0x4f364452,0x071279a4,0x01fbe855,0x97abff66,0x5fda51c4,0x3ee394e8,0x67597c0b,0x190385f6,0xa27ee34b,0x6e9fccc6 + DD 0x14092ebb,0x0b89de93,0x428e240c,0xf17256bd,0x93d2f064,0xcf89a7f3,0xe1ed3b14,0x4f57841e,0xe708d855,0x4ee14405,0x03f1c3d0,0x856aae72,0xbdd7eed5,0xc8e5424f,0x73ab4270,0x3333e4ef + DD 0xdda492f8,0x3bc77ade,0x78297205,0xc11a3aea,0x34931b4c,0x5e89a3e7,0x9f5694bb,0x17512e2e,0x177bf8b6,0x5dc349f3,0x08c7ff3e,0x232ea4ba,0xf511145d,0x9c4f9d16,0x33b379c3,0xccf109a3 + DD 0xa1f25897,0xe75e7a88,0xa1b5d4d8,0x7ac6961f,0x08f3ed5c,0xe3e10773,0x0a892dfb,0x208a54ec,0x78660710,0xbe826e19,0x237df2c8,0x0cf70a97,0xed704da5,0x418a7340,0x08ca33fd,0xa3eeb9a9 + DD 0x169bca96,0x49d96233,0x2da6aafb,0x04d286d4,0xa0c2fa94,0xc09606ec,0x23ff0fb3,0x8869d0d5,0xd0150d65,0xa99937e5,0x240c14c9,0xa92e2503,0x108e2d49,0x656bf945,0xa2f59e2b,0x152a733a + DD 0x8434a920,0xb4323d58,0x622103c5,0xc0af8e93,0x938dbf9a,0x667518ef,0x83a9cdf2,0xa1843073,0x5447ab80,0x350a94aa,0xc75a3d61,0xe5e5a325,0x68411a9e,0x74ba507f,0x594f70c5,0x10581fc1 + DD 0x80eb24a9,0x60e28570,0x488e0cfd,0x7bedfb4d,0xc259cdb8,0x721ebbd7,0xbc6390a9,0x0b0da855,0xde314c70,0x2b4d04db,0x6c32e846,0xcdbf1fbc,0xb162fc9e,0x33833eab,0xb0dd3ab7,0x9939b48b + DD 0xcb0c9c8c,0x5aaa98a7,0x81c4375c,0x75105f30,0x5ef1c90f,0xceee5057,0xc23a17bf,0xb31e065f,0xd4b6d45a,0x5364d275,0x62ec8996,0xd363f3ad,0x4391c65b,0xb5d21239,0xebb41b47,0x84564765 + DD 0x37107c78,0x20d18ecc,0x570c2a66,0xacff3b6b,0x9bd0d845,0x22f975d9,0xba178fa0,0xef0a0c46,0x76b6028e,0x1a419651,0x248612d4,0xc49ec674,0x7338af55,0x5b6ac4f2,0x7bee5a36,0x06145e62 + DD 0xe75746b5,0x33e95d07,0xc40c78be,0x1c1e1f6d,0x222ff8e2,0x967833ef,0xb49180ad,0x4bedcf6a,0x3d7a4c8a,0x6b37e9c1,0x6ddfe760,0x2748887c,0xaa3a5bbc,0xf7055123,0x7bbb8e74,0x954ff225 + DD 0x97c3dfb9,0xc42b8ab1,0xcf168154,0x55a549b0,0xc1b50692,0xad6748e7,0x6fc5cbcb,0x2775780f,0xe1c9d7c8,0x4eab80b8,0x3fdbcd56,0x8c69dae1,0x9969eace,0x47e6b4fb,0xa705cb5a,0x002f1085 + DD 0x6d3fea55,0x4e23ca44,0xf4810568,0xb4ae9c86,0x2a62f27d,0x47bfb91b,0xd9bac28c,0x60deb4c9,0x7de6c34c,0xa892d894,0x4494587d,0x4ee68259,0x1a3f8a5b,0x914ee14e,0x28700385,0xbb113eaa + DD 0x2115b4c9,0x81ca03b9,0x8908cad1,0x7c163d38,0xaa18179a,0xc912a118,0x886e3081,0xe09ed750,0x26f516ca,0xa676e3fa,0x8e732f91,0x753cacf7,0x833da8b4,0x51592aea,0x4cbea8aa,0xc626f42f + DD 0xa7b56eaf,0xef9dc899,0x34ef7316,0x00c0e52c,0xfe818a86,0x5b1e4e24,0xc538be47,0x9d31e20d,0x3ed68974,0x22eb932d,0x7c4e87c4,0xe44bbc08,0x0dde9aef,0x4121086e,0x134f4345,0x8e6b9cff + DD 0x711b0eb9,0x96892c1f,0x780ab954,0xb905f2c8,0xa20792db,0xace26309,0x0684e126,0xec8ac9b3,0xb40a2447,0x486ad8b6,0x9fe3fb24,0x60121fc1,0x1a8e3b3f,0x5626fccf,0x6ad1f394,0x4e568622 + DD 0x196aa5a1,0xda7aae0d,0x1041b5fb,0xe0df8c77,0x26b318b7,0x451465d9,0x7ab136e9,0xc29b6e55,0x71148463,0x2c2ab48b,0x64454a76,0xb5738de3,0x5a03abe4,0x54ccf9a0,0x0427d58e,0x377c0296 + DD 0x2bb39c1f,0x73f5f0b9,0xe608d8c5,0x14373f2c,0x00fbb805,0xdcbfd314,0x83afdcfb,0xdf18fb20,0x42b3523f,0x81a57f42,0x87f650fb,0xe958532d,0x8b0a7d7c,0xaa8dc8b6,0x150166be,0x1b75dfb7 + DD 0x2d7d1413,0x90e4f7c9,0x9834f597,0x67e2d6b5,0xa808c3e8,0x4fd4f4f9,0xd5281ec1,0xaf8237e0,0x84687cee,0x25ab5fdc,0xa5b26c09,0xc5ded6b1,0xc8ea7650,0x8e4a5aec,0x14cc417f,0x23b73e5c + DD 0x3037bf52,0x2bfb4318,0x78c725d7,0xb61e6db5,0xbbb3e5d7,0x8efd4060,0xdbac488e,0x2e014701,0x360aa449,0xac75cf9a,0x79634d08,0xb70cfd05,0xfffb15ef,0xa591536d,0xd07c106c,0xb2c37582 + DD 0xf50225f9,0xb4293fdc,0xb0e12b03,0xc52e175c,0xd0a8bf64,0xf649c3ba,0xeb8ae3c6,0x745a8fef,0x58321bc3,0x30d7e5a3,0x0bc4df48,0xb1732be7,0xe9ea5058,0x1f217993,0x3e4fd745,0xf7a71cde + DD 0x894c5bbb,0x86cc533e,0x69d83082,0x6915c7d9,0x5815c244,0xa6aa2d05,0x49b22ce5,0xaeeee592,0x78135486,0x89e39d13,0x16b76f2f,0x3a275c1f,0xe036e8f5,0xdb6bcc1b,0x5e4709f5,0x4df69b21 + DD 0x2d0f39aa,0xa188b250,0x15a85947,0x622118bb,0xfde0f4fa,0x2ebf520f,0x4860e539,0xa40e9f29,0x22b57f0f,0x7b6a51eb,0x7e80644a,0x849a33b9,0x1cf095fe,0x50e5d16f,0xec55f002,0xd754b54e + DD 0x236f4a98,0x5cfbbb22,0x066800bb,0x0b0c59e9,0x5a9a7774,0x4ac69a8f,0xd6bec948,0x2b33f804,0x32e6c466,0xb3729295,0x4e599c73,0x68956d0f,0x155c31cc,0xa47a249f,0xe1ce284e,0x24d80f0d + DD 0x988baf01,0xcd821dfb,0xdbb16647,0xe6331a7d,0x094cb960,0x1eb8ad33,0xc91bbca5,0x593cca38,0x26567456,0x384aac8d,0xc04b6490,0x40fa0309,0xdab6c8f6,0x97834cd6,0x3f91e55f,0x68a7318d + DD 0xfc4d3157,0xa00fd04e,0x2bf3bdea,0xb56f8ab2,0x4fa57172,0x014f5648,0x450abdb3,0x948c5860,0x0ebd4f08,0x342b5df0,0x0e82938e,0x3e5168cd,0xb0df5dd0,0x7aedc1ce,0xe5732516,0x6bbbc6d9 + DD 0x605daaa6,0xc7bfd486,0xbb9a6c9e,0x46fd72b7,0xa124fb89,0xe4847fb1,0xa2d8ffbc,0x75959cbd,0xc8a588ee,0x42579f65,0xb80b499d,0x368c92e6,0x999a5df1,0xea4ef6cd,0x936fe604,0xaa73bb7f + DD 0x6457d188,0xf347a70d,0x8b7a388b,0x86eda86b,0x0ccd6013,0xb7cdff06,0xd0053fb2,0xbeb1b6c7,0x99240a9f,0x0b022387,0x776189b2,0x1bbb384f,0x9066193a,0x8695e71e,0x06ffac7e,0x2eb50097 + DD 0x4a7d2caa,0x0654a9c0,0xa5aaa290,0x6f3fb3d1,0xff476e8f,0x835db041,0xc42295e4,0x540b8b0b,0x05e214f5,0xa5c73ac9,0x56a0b638,0x9a74075a,0xce9e680b,0x2e4b1090,0x6b8d9afa,0x57a5b479 + DD 0x26bfe65c,0x0dca48e7,0x7290c307,0x097e391c,0x6669e72e,0x683c462e,0x062559ac,0xf505be1e,0xe3a3035a,0x5fbe3ea1,0x9cd50da8,0x6431ebf6,0x1f6407f2,0xfd169d5c,0x60fce6b8,0x8d838a95 + DD 0x650006f0,0x2a2bfa7f,0x50c0fbb2,0xdfd7dad3,0xccf9ad96,0x92452495,0xd95635f9,0x183bf494,0x4a7bd989,0x02d5df43,0xa5431095,0x505385cc,0xfd43f53e,0xdd98e67d,0x500c34a9,0xd61e1a6c + DD 0x4a8a3d62,0x5a4b46c6,0x247743d2,0x8469c4d0,0x88f7e433,0x2bb3a13d,0x01be5849,0x62b23a10,0xa63d1a4c,0xe83596b4,0x7d183f3e,0x454e7fea,0x17afb01c,0x643fce61,0x1c4c3638,0x4e65e5e6 + DD 0xef74c45b,0x41d85ea1,0xae328506,0x2cfbfa66,0x3ada7da9,0x98b078f5,0xec752fbb,0xd985fe37,0x5a0148b4,0xeece68fe,0x2d78136d,0x6f9a55c7,0xd2b729ce,0x232dccc4,0x90aafbc4,0xa27e0dfd + DD 0x12b4603e,0x96474452,0x6b706d14,0xa876c551,0x69a9d412,0xdf145fcf,0x2d479c34,0xe2ab75b7,0x1a23ff97,0x12df9a76,0x5d359d10,0xc6138992,0xfa835f22,0x6e51c7ae,0xc0fcc4d9,0x69a79cb1 + DD 0x594cc7e1,0xf57f350d,0x3350ab79,0x3079ca63,0x9aff594a,0x226fb614,0x6d59a62b,0x35afec02,0x06ed2c6e,0x9bee46f4,0x7d939a57,0x58da1735,0x8fd1797e,0x44c50402,0x5ccea6ca,0xd8853e7c + DD 0xa35fcd5f,0x4065508d,0x495ccaeb,0x8965df8c,0x12e1a962,0x0f2da850,0xc1cf1cc4,0xee471b94,0x0a08fb75,0xcef19bc8,0x81de3591,0x704958f5,0x3aef4f88,0x2867f8b2,0xea9f9a5f,0x8d749384 + DD 0x8c9049f4,0x1b385537,0x7b92d8b6,0x5be948f3,0xb6e2bd6b,0xd96f725d,0x958c454d,0x37a222bc,0x8809bf61,0xe7c61abb,0x1346f18d,0x46f07fbc,0xe87c0d1c,0xfb567a7a,0x7ef3d07a,0x84a461c8 + DD 0xd9278d98,0x0a5adce6,0x9dfc73e1,0x24d94813,0x054321c3,0x4f3528b6,0x692ea706,0x2e03fdde,0x47b533c0,0x10e60619,0x2ca3c055,0x1a8bc73f,0x1bb62b8f,0xae58d4b2,0x584a24e3,0xb2045a73 + DD 0xbd76e195,0x3ab3d5af,0x6938a810,0x478dd1ad,0x6ee3d5cb,0x6ffab393,0x22b361e4,0xdfb693db,0x51dbf1a7,0xf9694496,0x08a2e762,0xcab4b4ef,0xd39bba9a,0xe8c92f25,0xf1464d96,0x850e61bc + DD 0xdc09508b,0xb7e830e3,0x74317655,0xfaf6d2cf,0xdf690355,0x72606ceb,0xd0c3ded6,0x48bb92b3,0x5c7cf892,0x65b75484,0xd5d5f01f,0xf6cd7ac9,0x96401d69,0xc2c30a59,0xed921878,0x91268650 + DD 0xb78c558f,0x380bf913,0xc8afdaa9,0x43c0baeb,0x54f169d3,0x377f61d5,0xae5ff20b,0xf8da07e3,0xa8a90ea8,0xb676c49d,0x83a29b21,0x81c1ff2b,0x2ad8d276,0x383297ac,0xba89f982,0x3001122f + DD 0x6718e448,0xe1d794be,0x7c3e6e13,0x246c1482,0x5d26b5ef,0x56646ef8,0x88069cdd,0x80f5091e,0x724bdd38,0xc5992e2f,0x8471e8c7,0x02e915b4,0x0d0ff2a9,0x96ff320a,0x4384d1a0,0xbf886487 + DD 0xc93f72d6,0xbbe1e6a6,0xcad800ea,0xd5f75d12,0xe7acf117,0xfa40a09f,0x7581a355,0x32c8cdd5,0x7023c499,0x74221992,0x38ec3901,0xa8afe5d7,0xa90e83f0,0x5691afcb,0x0b8f8eac,0x41bcaa03 + DD 0x8d2668d5,0xe38b5ff9,0x7ad81965,0x0715281a,0x03c6ce11,0x1bc8fc7c,0x8b650436,0xcbbee6e2,0x0cdb9808,0x06b00fe8,0xfe3ed315,0x17d6e066,0x4d0b5018,0x2e9d38c6,0x844dcaef,0xab8bfd56 + DD 0x513aed8b,0x42894a59,0x314bd07a,0xf77f3b6d,0x8e42b582,0xbbdecb8f,0xd2390fe6,0xf10e2fa8,0x62a2f201,0xefb95022,0x50ee32b0,0x4d59ea50,0x6da789a8,0xd87f7728,0xf79492c4,0xcf98a2cf + DD 0x720943c2,0xf9577239,0x3990b9d0,0xba044cf5,0x95f2884a,0x5aa8e823,0x0278a0af,0x834de6ed,0x5f25bd12,0xc8e1ee9a,0x6f7ab271,0x9259ceaa,0x77d00b76,0x7e6d97a2,0xa437832a,0x5c0c6eea + DD 0x5606b81d,0x5232c20f,0x0d991ee5,0xabd7b375,0x8632d951,0x4d2bfe35,0x98ed9364,0x78f85146,0xf30c3282,0x951873f0,0xa789230b,0x0da8ac80,0x5398967f,0x3ac7789c,0xbdda0fb5,0xa69b8f7f + DD 0x6add8545,0xe5db7717,0x72c49b66,0x1b71cb66,0x68421d77,0xd8560739,0x83e3afea,0x03840fe8,0x1ec69977,0xb391dad5,0x307f6726,0xae243fb9,0xe8ca160c,0xc88ac87b,0x4ce355f4,0x5174cced + DD 0xe58ba37d,0x98a35966,0x7817335d,0xfdcc8da2,0x83fbc7bf,0x5b752830,0xd9c96984,0x68e419d4,0x02a40380,0x409a39f4,0x1fe977bc,0x88940faf,0x8f8edea6,0xc640a94b,0xed11547d,0x1e22cd17 + DD 0x59ffc3e2,0xe28568ce,0xc1dee4e7,0x60aa1b55,0x837cb363,0xc67497c8,0x105a2bf2,0x06fb438a,0x500d8e20,0x30357ec4,0x0670db10,0x1ad9095d,0xc73b7cfd,0x7f589a05,0x880d6d28,0xf544607d + DD 0xa20ef103,0x17ba93b1,0x6ba6577b,0xad859130,0x6fa214a0,0x65c91cf6,0x27990da5,0xd7d49c6c,0x20bb569d,0xecd9ec8d,0xeeffbc33,0xbd4b2502,0x6bed0467,0x2056ca5a,0x5b63728c,0x7916a1f7 + DD 0x53a4f566,0xd4f9497d,0x97b56810,0x89734664,0x0494a621,0xf8e1da74,0x8d011c68,0x82546a93,0xc61ac162,0x1f3acb19,0xabad0d3e,0x52f8fa9c,0xb4b7ea43,0x15356523,0xae608125,0x5a16ad61 + DD 0x4faed184,0xb0bcb87f,0x5029f45f,0x5f236b1d,0x0bc6b1fc,0xd42c7607,0x68aefce3,0xc644324e,0x5c5d8446,0x8e191d59,0x13ae1979,0xc0208077,0x3ba59cc7,0xadcaee55,0xa2cb81ba,0x20ed6d6b + DD 0xb6efcffc,0x0952ba19,0x97c0b87c,0x60f12d68,0x9caa30bc,0x4ee2c7c4,0x97fbff4e,0x767238b7,0x501b5d92,0xebc73921,0xc2a37737,0x3279e3df,0x6d197543,0x9fc12bc8,0x0a40db4e,0xfa94dc6f + DD 0x530ccbbd,0x7392b41a,0xea823525,0x87c82146,0x05d98d0c,0xa52f984c,0x5ef6974c,0x2ae57d73,0x3042a6dd,0x9377f7bf,0x19647a64,0xb1a007c0,0x0cca9767,0xfaa9079a,0xf68f72d5,0x3d81a25b + DD 0xff81578e,0x752067f8,0x9045447d,0x78622150,0x0505aa6f,0xc0c22fcf,0x6bed1c77,0x1030f0a6,0x1f0bd739,0x31f29f15,0xe6debe85,0x2d7989c7,0x8e677e98,0x5c070e72,0x06e81fd5,0x0a817bd3 + DD 0xb0f2ac95,0xc110d830,0xab20e64e,0x48d0995a,0x7729cd9a,0x0f3e00e1,0xdd556946,0x2a570c20,0x4e86214d,0x912dbcfd,0xcf615498,0x2d014ee2,0x3530d76e,0x55e2b1e6,0xfd0fd6d1,0xc5135ae4 + DD 0xd4f3049f,0x0066273a,0xe7087477,0xbb8e9893,0x14c6e5fd,0x2dba1ddb,0x51f57e6c,0xdba37886,0x5a72f2cf,0x5aaee0a6,0x7bea5642,0x1208bfbf,0x67872c37,0xf5c6aa3b,0x43f93224,0xd726e083 + DD 0x061f1658,0x1854daa5,0xdf0cd2b3,0xc0016df1,0x833d50de,0xc2a3f23e,0xbbbd3017,0x73b681d2,0x3ac343c0,0x2f046dc4,0x85716421,0x9c847e7d,0x0917eed4,0xe1e13c91,0x63a1b9c6,0x3fc9eebd + DD 0x7fe02299,0x0f816a72,0x294f3319,0x6335ccc2,0x4745c5be,0x3820179f,0x922f066e,0xe647b782,0x02cafb8a,0xc22e49de,0xfcc2eccc,0x299bc2ff,0x6e0e8282,0x9a8feea2,0xfe893205,0xa627278b + DD 0x7933e47b,0xa7e19733,0x2e766402,0xf4ff6b13,0x98440d9f,0xa4d8be0a,0x38938808,0x658f5c2f,0xc95b3b3e,0x90b75677,0x3137b6ff,0xfa044269,0x43c47c29,0x077b039b,0x8a6445b2,0xcca95dd3 + DD 0x2333fc4c,0x0b498ba4,0xf736a1b1,0x274f8e68,0x5f1d4b2e,0x6ca348fd,0xa8f10199,0x24d3be78,0xca14f530,0x8535f858,0x5b982e51,0xa6e7f163,0x36e1bf62,0x847c8512,0x03448418,0xf6a7c58e + DD 0xf9374ab6,0x583f3703,0x6e564145,0x864f9195,0x22526d50,0x33bc3f48,0x1262a496,0x9f323c80,0x3f046a9a,0xaa97a7ae,0xdf8a039a,0x70da183e,0x52aa0ba6,0x5b68f71c,0x21459c2d,0x9be0fe51 + DD 0xcbc613e5,0xc1e17eb6,0x497ea61c,0x33131d55,0xaf7eded5,0x2f69d39e,0xde6af11b,0x73c2f434,0xa4a375fa,0x4ca52493,0xb833c5c2,0x5f06787c,0x3e6e71cf,0x814e091f,0x8b746666,0x76451f57 + DD 0x694db7e0,0x80f9bdef,0xb9fcddc6,0xedca8787,0x03b8dce1,0x51981c34,0x70e10ba1,0x4274dcf1,0x6def6d1a,0xf72743b8,0xebdb1866,0xd25b1670,0x050c6f58,0xc4491e8c,0x87fbd7f5,0x2be2b2ab + DD 0xd111f8ec,0x3e0e5c9d,0xb7c4e760,0xbcc33f8d,0xbd392a51,0x702f9a91,0xc132e92d,0x7da4a795,0x0bb1151b,0x1a0b0ae3,0x02e32251,0x54febac8,0x694e9e78,0xea3a5082,0xe4fe40b8,0xe58ffec1 + DD 0xd1e0cf9e,0xf85592fc,0xc0e7b2e8,0xdea75f0d,0xc135584e,0xc04215cf,0x2f57092a,0x174fc727,0xeb930bea,0xe7277877,0x5eb02a5a,0x504caccb,0xf5241b9b,0xf9fe08f7,0x8d5ca954,0xe7fb62f4 + DD 0x29c4120b,0xfbb8349d,0xc0d0d915,0x9f94391f,0x5410ba51,0xc4074fa7,0x150a5911,0xa66adbf6,0x34bfca38,0xc164543c,0xb9e1ccfc,0xe0f27560,0xe820219c,0x99da0f53,0xc6b4997a,0xe8234498 + DD 0x9d4c5423,0xcfb88b76,0xb0521c49,0x9e56eb10,0xbe8700a1,0x418e0b5e,0xf93cb58a,0x00cbaad6,0xd92a5e67,0xe923fbde,0x1f347f11,0xca4979ac,0x6bc0585b,0x89162d85,0xac3c70e3,0xdd6254af + DD 0x516e19e4,0x7b23c513,0xc5c4d593,0x56e2e847,0x5ce71ef6,0x9f727d73,0xf79a44c5,0x5b6304a6,0x3ab7e433,0x6638a736,0xfe742f83,0x1adea470,0x5b7fc19f,0xe054b854,0xba1d0698,0xf935381a + DD 0x799e9a74,0x546eab2d,0xa949f729,0x96239e0e,0x7090055a,0xca274c6b,0x9020c9b0,0x835142c3,0xa2e8807f,0xa405667a,0x1aa3d39e,0x29f2c085,0x42fc72f5,0xcc555d64,0xfbeacb3c,0xe856e0e7 + DD 0x918e4936,0xb5504f9d,0xb2513982,0x65035ef6,0x6f4d9cb9,0x0553a0c2,0xbea85509,0x6cb10d56,0xa242da11,0x48d957b7,0x672b7268,0x16a4d3dd,0x8502a96b,0x3d7e637c,0x730d463b,0x27c7032b + DD 0xe4136a14,0xbdc02b18,0x678e32bf,0xbacf969d,0xdd9c3c03,0xc98d89a3,0x23becc4f,0x7b92420a,0xc64d565c,0xd4b41f78,0x10f28295,0x9f969d00,0xb13d051a,0xec7f7f76,0xa92da585,0x08945e1e + DD 0x5846426f,0x55366b7d,0x247d441d,0xe7d09e89,0x736fbf48,0x510b404d,0xe784bd7d,0x7fa003d0,0x17fd9596,0x25f7614f,0x35cb98db,0x49e0e0a1,0x2e83a76a,0x2c65957b,0xcddbe0f8,0x5d40da8d + DD 0x050bad24,0xf2b8c405,0xc2aa4823,0x8918426d,0xa38365a7,0x2aeab3dd,0x7c91b690,0x72031717,0x60a94120,0x8b00d699,0xe99eaeec,0x478a255d,0x6f60aafd,0xbf656a5f,0x5dee77b3,0xdfd7cb75 + DD 0xa595939d,0x37f68bb4,0x28740217,0x03556479,0x84ad7612,0x8e740e7c,0x9044695f,0xd89bc843,0x85a9184d,0xf7f3da5d,0x9fc0b074,0x562563bb,0xf88a888e,0x06d2e6aa,0x161fbe7c,0x612d8643 + DD 0xf64085e7,0x465edba7,0x29aa8511,0xb230f304,0xcda2d188,0x53388426,0x4b666649,0x90885735,0x652f54f6,0x6f02ff9a,0x5fae2bf0,0x65c82294,0x62f5eee3,0x7816ade0,0xfcc56d70,0xdcdbdf43 + DD 0x54530bb2,0x9fb3bba3,0xcb0869ea,0xbde3ef77,0x0b431163,0x89bc9046,0xe4819a35,0x4d03d7d2,0x43b6a782,0x33ae4f9e,0x9c88a686,0x216db307,0x00ffedd9,0x91dd88e0,0x12bd4840,0xb280da9f + DD 0x1635e741,0x32a7cb8a,0x78be02a7,0xfe14008a,0x1b7ae030,0x3fafb334,0x5add0ce9,0x7fd508e7,0xd607ad51,0x72c83219,0x8d40964a,0x0f229c0a,0x1c878da2,0x1be2c336,0xeab2ab86,0xe0c96742 + DD 0x3e538cd7,0x458f8691,0x8e08ad53,0xa7001f6c,0xbf5d15ff,0x52b8c6e6,0x011215dd,0x548234a4,0x3d5b4045,0xff5a9d2d,0x4a904190,0xb0ffeeb6,0x48607f8b,0x55a3aca4,0x30a0672a,0x8cbd665c + DD 0x42583068,0x87f834e0,0xf3f6e683,0x02da2aeb,0x05c12248,0x6b763e5d,0x65a8aefc,0x7230378f,0x71e8e5ca,0x93bd80b5,0xb3b62524,0x53ab041c,0x6c9c552e,0x1b860513,0xd5524e66,0xe84d402c + DD 0xf37f5937,0xa37f3573,0xd1e4fca5,0xeb0f6c7d,0xac8ab0fc,0x2965a554,0x274676ac,0x17fbf56c,0xacf7d720,0x2e2f6bd9,0x10224766,0x41fc8f88,0x85d53bef,0x517a14b3,0x7d76a7d1,0xdae327a5 + DD 0xc4818267,0x6ad0a065,0x37c1bbc1,0x33aa189b,0x27392a92,0x64970b52,0x2d1535ea,0x21699a1c,0xc2d7a7fd,0xcd20779c,0x99c83cf2,0xe3186059,0x72c0b8c7,0x9b69440b,0x7b9e0e4d,0xa81497d7 + DD 0x1f5f82dc,0x515d5c89,0x6361079e,0x9a7f67d7,0x11a35330,0xa8da81e3,0x4b18be1b,0xe44990c4,0xaf103e59,0xc7d5ed95,0x8dac9261,0xece8aba7,0x9394b8d3,0xbe82b099,0x16adfe83,0x6830f09a + DD 0x88172d01,0x250a29b4,0xcaff9e02,0x8b20bd65,0xe8a6329a,0xb8a7661e,0xd3fce920,0x4520304d,0x2b47f7ef,0xae45da1f,0x5bffc540,0xe07f5288,0x3464f874,0xf7997009,0xa6fa1f38,0x2244c2cd + DD 0x94d7d9b1,0x43c41ac1,0xc82e7f17,0x5bafdd82,0x5fda0fca,0xdf0614c1,0xa8ae37ad,0x74b043a7,0x9e71734c,0x3ba6afa1,0x9c450f2e,0x15d5437e,0x67e242b1,0x4a5883fe,0x2c1953c2,0x5143bdc2 + DD 0xfc5e8920,0x542b8b53,0x9a9cee08,0x363bf9a8,0xc3486e08,0x02375f10,0x8c5e70d2,0x2037543b,0x625640b4,0x7109bccc,0x8bc62c3b,0xcbc1051e,0x803f26ea,0xf8455fed,0xeb372424,0x6badceab + DD 0x6b53f5f9,0xa2a9ce7c,0x1b176d99,0x64246595,0xb95c081b,0xb1298d36,0x1d9a9ee6,0x53505bb8,0xf2ba70b0,0x3f6f9e61,0x8afad453,0xd07e16c9,0xe7eb4a6a,0x9f1694bb,0x3cb0bc8e,0xdfebced9 + DD 0x53868c8b,0x92d3dcdc,0x386107a6,0x174311a2,0x689b4e64,0x4109e07c,0x2df3dcb6,0x30e4587f,0x0811b3b2,0x841aea31,0x0cce43ea,0x6144d41d,0x2a9a7803,0x464c4581,0x3e158930,0xd03d371f + DD 0xb1f3390b,0xc676d7f2,0xa5b61272,0x9f7a1b8c,0xc2e127a9,0x4ebebfc9,0x5dd997bf,0x4602500c,0x4711230f,0x7f09771c,0x020f09c1,0x058eb37c,0xfee5e38b,0xab693d4b,0x4653cbc0,0x9289eb1f + DD 0xd51b9cf5,0xbecf46ab,0x9f0121af,0xd2aa9c02,0xe90dc274,0x36aaf7d2,0x48b95a3c,0x909e4ea0,0x6f32dbdb,0xe6b70496,0x8b030b3e,0x672188a0,0xcfb617e2,0xeeffe5b3,0x7c82709e,0x87e947de + DD 0x1770f5a7,0xa44d2b39,0x0e44eb82,0xe4d4d791,0x3f69712a,0x42e69d1e,0xac6a820e,0xbf11c4d6,0x42c4224c,0xb5e7f3e5,0x449d941c,0xd6b4e81c,0x5450e878,0x5d72bd16,0xee25ac54,0x6a61e28a + DD 0xe6f1cd95,0x33272094,0x0d18673f,0x7512f30d,0x5afc1464,0x32f7a4ca,0x6bbb977b,0x2f095656,0xa8226200,0x586f47ca,0x1ac07369,0x02c868ad,0xc613acbe,0x4ef2b845,0x0386054c,0x43d7563e + DD 0xab952578,0x54da9dc7,0x26e84d0b,0xb5423df2,0x9b872042,0xa8b64eeb,0x5990f6df,0xac205782,0x21f4c77a,0x4ff696eb,0xaab273af,0x1a79c3e4,0x9436b3f1,0x29bc922e,0xd6d9a27a,0xff807ef8 + DD 0x778f22a0,0x82acea3d,0x5b5e7469,0xfb10b2e8,0x2818ee7d,0xc0b16980,0xc91c1a2f,0x011afff4,0xad124418,0x95a6d126,0xe72e295f,0x31c081a5,0xf2f4db75,0x36bb283a,0x7acef462,0xd115540f + DD 0x33f6746c,0xc7f3a8f8,0xfea990ca,0x21e46f65,0xcaddb0a9,0x915fd5c5,0x78614555,0xbd41f016,0x426ffb58,0x346f4434,0x14dbc204,0x80559436,0x5a969b7f,0xf3dd20fe,0xe899a39a,0x9d59e956 + DD 0x8ad4cf4b,0xf1b0971c,0x2ffb8fb8,0x03448860,0x65340ba4,0xf071ac3c,0xb27fd758,0x408d0596,0x98c364b0,0xe7c78ea4,0x051e8ab5,0xa4aac4a5,0x485d9002,0xb9e1d560,0x88844455,0x9acd518a + DD 0xd06f56c0,0xe4ca688f,0xdf027972,0xa48af70d,0x5e9a609d,0x691f0f04,0xee61270e,0xa9dd82cd,0xa0ef18d3,0x8903ca63,0x3d6ca3bd,0x9fb7ee35,0xabf47d03,0xa7b4a09c,0x1c67de8e,0x4cdada01 + DD 0x9355a244,0x52003749,0x4f2151a9,0xe77fd2b6,0x66b4efcb,0x695d6cf6,0xda2cfe25,0xc5a0cacf,0xef811865,0x104efe5c,0x9ea5cc3d,0xf52813e8,0x40b58dbc,0x855683dc,0x175fcb11,0x0338ecde + DD 0x74921592,0xf9a05637,0xb9bb9d31,0xb4f1261d,0x4e9c5459,0x551429b7,0x6ea71f53,0xbe182e6f,0xdfc50573,0xd3a3b07c,0x62be8d44,0x9ba1afda,0x52ab65d3,0x9bcfd2cb,0xa9571802,0xdf11d547 + DD 0x02a2404a,0x099403ee,0x21088a71,0x497406f4,0x5004ae71,0x99479409,0xa812c362,0xbdb42078,0xd8828442,0x2b72a30f,0xfcb5ed1c,0x283add27,0x66a40015,0xf7c0e200,0x08b295ef,0x3e3be641 + DD 0xe038a675,0xac127dc1,0x8c5c6320,0x729deff3,0xa90d2c53,0xb7df8fd4,0x681e7cd3,0x9b74b0ec,0xdab407e5,0x5cb5a623,0x76b340c6,0xcdbd3615,0x7d28392c,0xa184415a,0xe96f7830,0xc184c1d8 + DD 0x81d3a80f,0xc3204f19,0xc8e02432,0xfde0c841,0x8149e0c1,0x78203b3e,0x08053a73,0x5904bdbb,0x101b6805,0x30fc1dd1,0x49aa6d49,0x43c223bc,0x7a174087,0x9ed67141,0xd5997008,0x311469a0 + DD 0x5e43fc61,0xb189b684,0xe0d3ab57,0xf3282375,0xb1181da8,0x4fa34b67,0x99ee52b8,0x621ed0b2,0xad990676,0x9b178de1,0x56d54065,0xd51de67b,0x7538c201,0x2a2c27c4,0x38a40f5c,0x33856ec8 + DD 0xbe6cdcde,0x2522fc15,0x9f0c6f89,0x1e603f33,0x103e30a6,0x7994edc3,0x220c853e,0x033a00db,0xf7bb7fd7,0xd3cfa409,0x462d18f6,0x70f8781e,0x687fe295,0xbbd82980,0x595669f3,0x6eef4c32 + DD 0x2f7e85c3,0x86a9303b,0x71988f9b,0x5fce4621,0xc138acb5,0x5b935bf6,0x25661212,0x30ea7d67,0xe51ab9a2,0xef1eb5f4,0xae067c78,0x0587c98a,0x77ca9ca6,0xb3ce1b3c,0x54b5f057,0x2a553d4d + DD 0x4da29ec2,0xc7898236,0xb9c57316,0xdbdd5d13,0x2cd80d47,0xc57d6e6b,0xfe9e7391,0x80b460cf,0xf963c31e,0x98648cab,0xcc4d32fd,0x67f9f633,0xfdf7c687,0x0af42a9d,0x0b015ea7,0x55f292a3 + DD 0xcd21ab3d,0x89e468b2,0xc393d392,0xe504f022,0xa5013af9,0xab21e1d4,0xc2c28acb,0xe3283f78,0x226bf99f,0xf38b35f6,0x0e291e69,0xe8354274,0xb20c162d,0x61673a15,0xb04fbdbe,0xc101dc75 + DD 0x255bd617,0x8323b4c2,0x6c2a9154,0x6c969693,0x62679387,0xc6e65860,0xb8c88e23,0x8e01db0c,0x893a5559,0x33c42873,0x47a3e149,0x7630f04b,0xddcf35f8,0xb5d80805,0x77dfe732,0x582ca080 + DD 0x0b1894a0,0x2c7156e1,0xd81c68c0,0x92034001,0xc8b115b5,0xed225d00,0x83b907f2,0x237f9c22,0x4470e2c0,0x0ea2f32f,0x58be4e95,0xb725f7c1,0xb1ae5463,0x0f1dcafa,0x1ba2fc04,0x59ed5187 + DD 0xd0115d4d,0xf6e0f316,0xd3691599,0x5180b12f,0x527f0a41,0x157e32c9,0xa8e0ecc0,0x7b0b081d,0xbf4f0dd0,0x6dbaaa8a,0x4d252696,0x99b289c7,0xdbf864fe,0x79b7755e,0x76cad3ab,0x6974e2b1 + DD 0x06ddd657,0x35dbbee2,0x2ff3a96d,0xe7cbdd11,0x076be758,0x88381968,0x08c91f5d,0x2d737e72,0x86ec3776,0x5f83ab62,0x945fa7a1,0x98aa649d,0x72ef0933,0xf477ec37,0x098c17b1,0x66f52b1e + DD 0xd803738b,0x9eec58fb,0xe4e86aa4,0x91aaade7,0xa5b51492,0x6b1ae617,0xbbc45974,0x63272121,0x862c5129,0x7e0e28f0,0x3321a4a0,0x0a8f79a9,0x5041c88f,0xe26d1664,0x53233e3a,0x0571b805 + DD 0xc9520711,0xd1b0ccde,0x3c8b84bf,0x55a9e4ed,0xa1fef314,0x9426bd39,0x6eb93f2b,0x4f5f638e,0x2bf9341b,0xba2a1ed3,0x4d42d5a9,0xd63c1321,0x316dc7c5,0xd2964a89,0xca511851,0xd1759606 + DD 0xf9e6ed35,0xd8a9201f,0x6736925a,0xb7b5ee45,0x99581af7,0x0a83fbbc,0x64eeb051,0x3076bc40,0x02dec312,0x5511c98c,0x238dcb78,0x270de898,0x539c08c9,0x2cf4cf9c,0x38d3b06e,0xa70cb65e + DD 0xcfe57bbd,0xb12ec10e,0x35a0c2b5,0x82c7b656,0x161c67bd,0xddc7d5cd,0xae3a32cc,0xe32e8985,0xd11a5529,0x7aba9444,0x2427fa1a,0xe964ed02,0x24a1770a,0x1528392d,0x12c72fcd,0xa152ce2c + DD 0x8ec07649,0x714553a4,0x459dd453,0x18b4c290,0x7b64b110,0xea32b714,0x2e6f07a2,0xb871bfa5,0x9e2e3c9b,0xb67112e5,0x44aa90f6,0xfbf250e5,0xbd539006,0xf77aedb8,0xd172a66f,0x3b0cdf9a + DD 0xf8c51187,0xedf69fea,0x741e4da7,0x05bb67ec,0x08114345,0x47df0f32,0xbb9792b1,0x56facb07,0x8f6229e4,0xf3e007e9,0x526fba0f,0x62d103f4,0xb0339d79,0x4f33bef7,0xb59bfec1,0x9841357b + DD 0xc34e6705,0xfa8dbb59,0x7fdaa84c,0xc3c7180b,0xa4108537,0xf95872fc,0x932a3e5a,0x8750cc3b,0xb7275d7d,0xb61cc69d,0x2e59b2e9,0xffa0168b,0x6ecbb493,0xca032abc,0x2c9082d8,0x1d86dbd3 + DD 0xe28ef5ba,0xae1e0b67,0xcb18e169,0x2c9a4699,0x1e6bbd20,0x0ecd0e33,0xaf5e81d2,0x571b360e,0x101c1d45,0xcd9fea58,0x18880452,0x6651788e,0x1f8dd446,0xa9972635,0xe37281d0,0x44bed022 + DD 0x33da525d,0x094b2b2d,0x13144fd8,0xf193678e,0xf4c1061d,0xb8ab5ba4,0xdccbe0f4,0x4343b5fa,0x63812713,0xa8702371,0xf7611d93,0x47bf6d2d,0xbd21e1d7,0x46729b8c,0xd629e77d,0x7484d4e0 + DD 0x60dbac1f,0x830e6eea,0xda06a2f7,0x23d8c484,0x50ca535b,0x896714b0,0xebd97a9b,0xdc8d3644,0xb12177b4,0x106ef9fa,0x534d5d9c,0xf79bf464,0xa6ab360b,0x2537a349,0xa00c744f,0xc7c54253 + DD 0xe5911a76,0xb3c7a047,0x647f1ee7,0x61ffa5c8,0x8f56ab42,0x15aed36f,0xa3ff9ac9,0x6a0d41b0,0xcc30d357,0x68f469f5,0x6b72be96,0xbe9adf81,0x903ad461,0x1cd926fe,0xcaca441b,0x7e89e38f + DD 0xfacf69d4,0xf0f82de5,0x4775344c,0x363b7e76,0xb2e36d04,0x6894f312,0x11d1c9a5,0x3c6cb4fe,0x4008e1f2,0x85d9c339,0x249f326c,0x5e9a85ea,0x678c5e06,0xdc35c60a,0x9f86fba9,0xc08b944f + DD 0x89f71f0f,0xde40c02c,0xff3da3c0,0xad8f3e31,0x42125ded,0x3ea5096b,0xa7379183,0x13879cbf,0x6b306a0b,0x6f4714a5,0x67646c5e,0x359c2ea6,0x07726368,0xfacf8943,0x65ff431e,0x07a58935 + DD 0x68754ab0,0x24d661d1,0x6f429a76,0x801fce1d,0xa58ce769,0xc068a85f,0x5d5eca2b,0xedc35c54,0xa3f660d1,0xea31276f,0xb8fc7167,0xa0184ebe,0x1d8db0ae,0x0f20f21a,0x56c35e12,0xd96d095f + DD 0xf8c2a25b,0xedf402b5,0x059204b6,0x1bb772b9,0x19b4e34c,0x50cbeae2,0x3fa0845a,0x93109d80,0x8ef59fb5,0x54f7ccf7,0x88070963,0x3b438fe2,0x31f3ba9b,0x9e28c659,0xead9da92,0x9cc31b46 + DD 0xb733aa5f,0x3c2f0ba9,0xf05af235,0xdece47cb,0xa2ac82a5,0xf8e3f715,0x2203f18a,0xc97ba641,0x09c11060,0xc3af5504,0x46af512d,0x56ea2c05,0xf3f28146,0xfac28daf,0x959ef494,0x87fab43a + DD 0xd4c5105f,0x09891641,0x6d7fbd65,0x1ae80f8e,0xbee6bdb0,0x9d67225f,0x7fc4d860,0x3b433b59,0x93e85638,0x44e66db6,0xe3e9862f,0xf7b59252,0x665c32ec,0xdb785157,0xae362f50,0x702fefd7 + DD 0x0fefb0c3,0x3754475d,0x46d7c35d,0xd48fb56b,0x363798a4,0xa070b633,0x8fdb98e6,0xae89f3d2,0x6363d14c,0x970b89c8,0x67abd27d,0x89817521,0x44d5a021,0x9bf7d474,0xcac72aee,0xb3083baf + DD 0xbe949a44,0x389741de,0x546a4fa5,0x638e9388,0xa0047bdc,0x3fe6419c,0xaaea57ca,0x7047f648,0x41fbab17,0x54e48a90,0x576bdba2,0xda8e0b28,0xc72afddc,0xe807eebc,0xf42577bf,0x07d3336d + DD 0xbfe20925,0x62a8c244,0x8fdce867,0x91c19ac3,0xdd387063,0x5a96a5d5,0x21d324f6,0x61d587d4,0xa37173ea,0xe87673a2,0x53778b65,0x23848008,0x05bab43e,0x10f8441e,0x4621efbe,0xfa11fe12 + DD 0x81685d7b,0x047b772e,0xbf34a976,0x23f27d81,0x915f48ef,0xc27608e2,0xa521d5c3,0x3b0b43fa,0x63ca7284,0x7613fb26,0x1d4db837,0x7f5729b4,0x583b526b,0x87b14898,0xbbadd3d1,0x00b732a6 + DD 0x2048e396,0x8e02f426,0x383d9de4,0x436b50b6,0x471e85ad,0xf78d3481,0xd005c8d6,0x8b01ea6a,0x97015c07,0xd3c7afee,0x4e3ba2ae,0x46cdf1a9,0x83d3a1d2,0x7a42e501,0xb541dff4,0xd54b5268 + DD 0x4e23e9bc,0x3f24cf30,0x126e3624,0x4387f816,0x3b0b6d61,0x26a46a03,0x8b2d777c,0xaf1bc845,0x527de79c,0x25c401ba,0x4261bbb6,0x0e1346d4,0x287b4bc7,0x4b96c44b,0x5254562f,0x658493c7 + DD 0xb8a24a20,0x23f949fe,0xf52ca53f,0x17ebfed1,0xbcfb4853,0x9b691bbe,0x6278a05d,0x5617ff6b,0xe3c99ebd,0x241b34c5,0x1784156a,0xfc64242e,0x695d67df,0x4206482f,0xee27c011,0xb967ce0e + DD 0x21c80b5d,0x65db3751,0xa31ecca0,0x2e7a563c,0x5238a07e,0xe56ffc4e,0x32ced854,0x3d6c2966,0xaf70b885,0xe99d7d1a,0x2d686459,0xafc3bad9,0x0cc8ba5b,0x9c78bf46,0x18955aa3,0x5a439519 + DD 0x5fe4e314,0xf8b517a8,0xfcb8906f,0xe60234d0,0xf2061b23,0xffe542ac,0x6b4cb59c,0x287e191f,0x09d877d8,0x21857ddc,0x14678941,0x1c23478c,0xb6e05ea4,0xbbf0c056,0xb01594fe,0x82da4b53 + DD 0xfadb8608,0xf7526791,0x7b74cdf6,0x049e832d,0xc2b90a34,0xa43581cc,0x9360b10c,0x73639eb8,0xe1e4a71b,0x4fba331f,0x8072f919,0x6ffd6b93,0x65679032,0x6e53271c,0xf14272ce,0x67206444 + DD 0xb2335834,0xc0f734a3,0x90ef6860,0x9526205a,0x04e2bb0d,0xcb8be717,0x02f383fa,0x2418871e,0x4082c157,0xd7177681,0x29c20073,0xcc914ad0,0xe587e728,0xf186c1eb,0x61bcd5fd,0x6fdb3c22 + DD 0xf2f9f8e9,0x30d014a6,0x4fec49d2,0x963ece23,0x9605a8d9,0x862025c5,0x19f8929a,0x39874445,0x12bf476a,0x01b6ff65,0x09cf7d91,0x598a64d8,0x93be56ca,0xd7ec7749,0xcbb33615,0x10899785 + DD 0x02eee3ad,0xb8a092fd,0x30145270,0xa86b3d35,0x8512b675,0x323d98c6,0x62ebb40f,0x4b8bc785,0x413f9cde,0x7d301f54,0x2bab5664,0xa5e4fb4f,0x1cbfec23,0x1d2b252d,0xe177120d,0xfcd576bb + DD 0x83731a34,0x04427d3e,0xed836e8e,0x2bb9028e,0xb612ca7c,0xb36acff8,0xd3d9c73a,0xb88fe5ef,0xedea4eb3,0xbe2a6bc6,0x488eec77,0x43b93133,0xb17106e1,0xf41ff566,0x654efa32,0x469e9172 + DD 0x41c23fa3,0xb4480f04,0xc1989a2e,0xb4712eb0,0x93a29ca7,0x3ccbba0f,0xd619428c,0x6e205c14,0xb3641686,0x90db7957,0x45ac8b4e,0x0432691d,0xf64e0350,0x07a759ac,0x9c972517,0x0514d89c + DD 0xa8e67fc3,0x1701147f,0xab2085be,0x9e2e0b8b,0xac284e57,0xd5651824,0x74893664,0x890d4325,0xc55e68a3,0x8a7c5e6e,0x4339c85a,0xbf12e90b,0xf922b655,0x31846b85,0x0bf4d700,0x9a54ce4d + DD 0xf1a14295,0xd7f4e83a,0xb285d4f9,0x916f955c,0x99ffdaba,0xe57bb0e0,0xeab0d152,0x28a43034,0xb8a9cef8,0x0a36ffa2,0xb9ec051a,0x5517407e,0xea68e672,0x9c796096,0xfb3c77fb,0x853db5fb + DD 0xe864a51a,0x21474ba9,0x6e8a1b8b,0x6c267699,0x94120a28,0x7c823626,0x8383a5db,0xe61e9a48,0x9f84216d,0x7dd75003,0xad43cd85,0xab020d07,0xda12c659,0x9437ae48,0xe65452ad,0x6449c2eb + DD 0x2cf9d7c1,0xcc7c4c1c,0xee95e5ab,0x1320886a,0xbeae170c,0xbb7b9056,0xdbc0d662,0xc8a5b250,0xc11d2303,0x4ed81432,0x1f03769f,0x7da66912,0x84539828,0x3ac7a5fd,0x3bccdd02,0x14dada94 + DD 0x7ef6b0d1,0x8b84c321,0x7c933f22,0x52a9477a,0xfd440b82,0x5ef6728a,0x6ce4bd5e,0x5c3bd859,0xf22c2d3e,0x918b80f5,0xb7bb6cc5,0x368d5040,0x2695a11c,0xb66142a1,0xeb19ea70,0x60ac583a + DD 0x0eab2437,0x317cbb98,0x5e2654c8,0x8cc08c55,0xe6d8307f,0xfe2d6520,0x57428993,0xe9f147f3,0xd2fd6cf1,0x5f9c7d14,0x2d4fcbb0,0xa3ecd064,0x8e7341f7,0xad83fef0,0x3a63115c,0x643f23a0 + DD 0xe65ab743,0xd38a78ab,0x35edc89c,0xbf7c75b1,0x530df568,0x3dd8752e,0xe308c682,0xf85c4a76,0xe68acf37,0x4c9955b2,0xab32af85,0xa544df3d,0xa25cf493,0x4b8ec3f5,0x1a622feb,0x4d8f2764 + DD 0xf0dcbc49,0x7bb4f7aa,0x70bbb45b,0x7de551f9,0x9f2ca2e5,0xcfd0f3e4,0x1f5c76ef,0xece58709,0x167d79ae,0x32920edd,0xfa7d7ec1,0x039df8a2,0xbb30af91,0xf46206c0,0x22676b59,0x1ff5e2f5 + DD 0x6ea51d66,0x11f4a039,0x807d7a26,0x506c1445,0x755a9b24,0x60da5705,0x1f1a319e,0x8fc8cc32,0x9433d67d,0x83642d4d,0x6a7dd296,0x7fa5cb8f,0x9b7bde07,0x576591db,0x419716fb,0x13173d25 + DD 0xd5b340ff,0xea30599d,0xb0fe76c5,0xfc6b5297,0xab8f5adc,0x1c6968c8,0x901c928d,0xf723c7f5,0x9773d402,0x4203c321,0x1b51dd47,0xdf7c6aa3,0x552be23c,0x3d49e37a,0x0b5a6e87,0x57febee8 + DD 0x7bd8e739,0xc5ecbee4,0xae63bf75,0x79d44994,0x38fb8923,0x168bd00f,0xd0533130,0x75d48ee4,0xdb5cdf33,0x554f77aa,0x3c696769,0x3396e896,0xd3fd674e,0x2fdddbf2,0x99d0e3e5,0xbbb8f6ee + DD 0xcbae2f70,0x51b90651,0x93aaa8eb,0xefc4bc05,0xdd1df499,0x8ecd8689,0x22f367a5,0x1aee99a8,0xae8274c5,0x95d485b9,0x7d30b39c,0x6c14d445,0xbcc1ef81,0xbafea90b,0xa459a2ed,0x7c5f317a + DD 0x4ef44227,0x01211075,0xdc20f496,0xa17bed6e,0x819853cd,0x0cdfe424,0xf71e2ce7,0x13793298,0xdbbe307b,0x3c1f3078,0x76ee9936,0x6dd1c20e,0x423caa20,0x23ee4b57,0x8efb840e,0x4ac3793b + DD 0xed1f8ca0,0x934438eb,0x4ebb25a2,0x3e546658,0xc069896f,0xc415af0e,0x9a5aa43d,0xc13eddb0,0xd49eb8f6,0x7a04204f,0xd74f1670,0xd0d5bdfc,0x56fc0558,0x3697e286,0x01cebade,0x10207371 + DD 0x0647a82b,0x5f87e690,0x8f40054f,0x908e0ed4,0x79853803,0xa9f633d4,0x4a28b252,0x8ed13c9a,0x1f460f64,0x3e2ef676,0x36d06336,0x53930b9b,0x8fc4979b,0x347073ac,0x5ecd5597,0x84380e0e + DD 0xc4fe3c39,0xe3b22c6b,0x6c7bebdf,0xba4a8153,0x25693459,0xf23ab6b7,0x14922b11,0x53bc3770,0x5afc60db,0x4645c8ab,0x20b9f2a3,0xaa022355,0xce0fc507,0x52a2954c,0x7ce1c2e7,0x8c2731bb + DD 0x18a0339d,0xf39608ab,0x3735436c,0xac7a658d,0xcd992b4f,0xb22c2b07,0xf40dcfd4,0x4e83daec,0x2f39ea3e,0x8a34c7be,0xb0a56d2e,0xef0c005f,0x6edd8038,0x62731f6a,0x4e3cb075,0x5721d740 + DD 0xfbeeee1b,0x1ea41511,0xef1d0c05,0xd1ef5e73,0x73c07d35,0x42feefd1,0x8a329493,0xe530a00a,0xf15ebfb0,0x5d55b7fe,0xd322491a,0x549de03c,0x745b3237,0xf7b5f602,0x1ab6e2b6,0x3632a3a2 + DD 0x0ef59f78,0x0d3bba89,0xc9e52b9a,0x0dfc6443,0x72631447,0x1dc79699,0xb3be20b1,0xef033917,0xb1383948,0x0c92735d,0xc0dd7d7d,0xc1fc29a2,0x403ed068,0x6485b697,0xaac93bdc,0x13bfaab3 + DD 0x0deeaf52,0x410dc6a9,0x4c641c15,0xb003fb02,0x5bc504c4,0x1384978c,0x864a6a77,0x37640487,0x222a77da,0x05991bc6,0x5e47eb11,0x62260a57,0xf21b432c,0xc7af6613,0xab4953e9,0x22f3acc9 + DD 0x8e41d155,0x52934922,0x3ac059ef,0x4d024568,0x4d884411,0xb0201755,0xa59a178f,0xce8055cf,0xf6204549,0xcd77d1af,0xc7066759,0xa0a00a3e,0x0272c229,0x471071ef,0xd3c4b6b0,0x009bcf6b + DD 0x22305177,0x2a2638a8,0x41645bbf,0xd51d59df,0xc0a7a3c0,0xa81142fd,0x4c7063ee,0xa17eca6d,0x60d9dcec,0x0bb887ed,0x20ad2455,0xd6d28e51,0xa67102ba,0xebed6308,0x8bffa408,0x042c3114 + DD 0x8aa68e30,0xfd099ac5,0x1483513e,0x7a6a3d7c,0xba2d8f0c,0xffcc6b75,0x1e78b954,0x54dacf96,0xa4a9af89,0xf645696f,0x06ac98ec,0x3a411940,0x22a67a20,0x41b8b3f6,0x99dec626,0x2d0b1e0f + DD 0x40be34e8,0x27c89192,0x91907f35,0xc7162b37,0xa956702b,0x90188ec1,0xdf93769c,0xca132f7d,0x0e2025b4,0x3ece44f9,0x0c62f14c,0x67aaec69,0x22e3cc11,0xad741418,0x7ff9a50e,0xcf9b75c3 + DD 0x4d348272,0x02fa2b16,0x9959d56d,0xbd99d61a,0x18762916,0xbc4f19db,0x49c1ac80,0xcc7cce50,0xd846bd83,0x4d59ebaa,0xa9202849,0x8775a9dc,0x6e1f4ca9,0x07ec4ae1,0xba893f11,0x27eb5875 + DD 0x662cc565,0x00284d51,0x0db4138d,0x82353a6b,0xaa32a594,0xd9c7aaaa,0xa5669c47,0xf5528b5e,0x2f23c5ff,0xf3220231,0x6affa3a1,0xe3e8147a,0x202ddda0,0xfb423d5c,0x6b871bd4,0x3d6414ac + DD 0xa51a168a,0x586f82e1,0x48ae5448,0xb712c671,0x76233eb8,0x9a2e4bd1,0x78811ca9,0x0188223a,0xf7c18de1,0x553c5e21,0xb27bb286,0x7682e451,0x0e51e929,0x3ed036b3,0xec9cb34f,0xf487211b + DD 0x0c24efc8,0x0d094277,0xbef737a4,0x0349fd04,0x514cdd28,0x6d1c9dd2,0x30da9521,0x29c135ff,0xf78b0b6f,0xea6e4508,0x678c143c,0x176f5dd2,0x4be21e65,0x08148418,0xe7df38c4,0x27f7525c + DD 0x748ab1a4,0x1fb70e09,0x5efe4433,0x9cba50a0,0x15f75af2,0x7846c7a6,0x5ee73ea8,0x2a7c2c57,0x3f0a449a,0x42e566a4,0xad90fc3d,0x45474c3b,0x8b61d057,0x7447be3d,0x3a4ec092,0x3e9d1cf1 + DD 0xf380a6e6,0x1603e453,0x9b1437c2,0x0b86e431,0xef29610a,0x7a4173f2,0xf03d57f7,0x8fa729a7,0x6c9c217e,0x3e186f6e,0x91919524,0xbe1d3079,0x153d4fb1,0x92a62a70,0xd68c2f71,0x32ed3e34 + DD 0x9eb1a8b7,0xd785027f,0xc5b22fe8,0xbc37eb77,0xb9d6a191,0x466b34f0,0x9a05f816,0x008a89af,0x7d42c10a,0x19b028fb,0x49b3f6b8,0x7fe8c92f,0xa5a0ade3,0x58907cc0,0x559d1a7c,0xb3154f51 + DD 0xd9790ed6,0x5066efb6,0xa6aa793b,0xa77a0cbc,0x223e042e,0x1a915f3c,0x69c5874b,0x1c5def04,0x73b6c1da,0x0e830078,0xfcd8557a,0x55cf85d2,0x0460f3b1,0x0f7c7c76,0x46e58063,0x87052acb + DD 0x907eae66,0x09212b80,0x4d721c89,0x3cb068e0,0xdd45ac1c,0xa87941ae,0x0daa0dbb,0xde8d5c0d,0xe3502e6e,0xda421fdc,0x4d89a084,0xc8944201,0xf0c24bfb,0x7307ba5e,0x20bde0ef,0xda212beb + DD 0xf82ce682,0xea2da24b,0x07f71fe4,0x058d3816,0x5ffad8de,0x35a02462,0xaadcefab,0xcd7b05dc,0x1d9f54ec,0xd442f8ed,0xb2d3b5ca,0x8be3d618,0xe06b2ce2,0xe2220ed0,0x1b0da4c0,0x82699a5f + DD 0x71c0c3a7,0x3ff106f5,0x0d34180c,0x8f580f5a,0x22d7d375,0x4ebb120e,0xe9513675,0x5e5782cc,0x99c82a70,0x2275580c,0x15ea8c4c,0xe8359fbf,0x7b415e70,0x53b48db8,0x100c6014,0xaacf2240 + DD 0xe4652f1d,0x9faaccf5,0xd56157b2,0xbd6fdd2a,0x6261ec50,0xa4f4fb1f,0x476bcd52,0x244e55ad,0x047d320b,0x881c9305,0x6181263f,0x1ca983d5,0x278fb8ee,0x354e9a44,0x396e4964,0xad2dbc0f + DD 0x9268b3de,0x723f3aa2,0xe6e0609a,0x0d1ca29a,0x6cf44252,0x794866aa,0x01af87ed,0x0b59f3e3,0x7f4a6c51,0xe234e5ff,0x61dc2f7e,0xa8768fd2,0x0a94d81f,0xdafc7332,0x06938ce1,0xd7f84282 + DD 0x0546063e,0xae0b3c0e,0x5d61abc6,0x7fbadcb2,0x369ac400,0xd5d7a2c9,0xae67d10c,0xa5978d09,0x4f85eaac,0x290f211e,0xfacac681,0xe61e2ad1,0x388384cd,0xae125225,0xccfde30f,0xa7fb68e9 + DD 0x3daed4c2,0x7a59b936,0x2606f789,0x80a9aa40,0xf6a6d90a,0xb40c1ea5,0x514d5885,0x948364d3,0x70985182,0x062ebc60,0x33310895,0xa6db5b0e,0xe329c2f5,0x64a12175,0x90ea237e,0xc5f25bd2 + DD 0x2d0a4c23,0x7915c524,0x6bb3cc52,0xeb5d26e4,0xc09e2c92,0x369a9116,0xcf182cf8,0x0c527f92,0x2aede0ac,0x9e591938,0x6cc34939,0xb2922208,0x99a34361,0x3c9d8962,0xc1905fe6,0x3c81836d + DD 0xa001ec5a,0x4bfeb57f,0xa0dc5dba,0xe993f5bb,0x724a1380,0x47884109,0x32fe9a04,0x8a0369ab,0x8c927db8,0xea068d60,0x94655741,0xbf5f37cf,0x04b6c7ea,0x47d402a2,0x6af259cb,0x4551c295 + DD 0xed77ee8b,0x698b71e7,0xf309d5c7,0xbddf7bd0,0x34e780ca,0x6201c22c,0x4c295ef4,0xab04f7d8,0x4313a8ce,0x1c947294,0x92ca4cfe,0xe532e4ac,0xd0a7a97a,0x89738f80,0xa580fd5b,0xec088c88 + DD 0x42ce9e51,0x612b1ecc,0xb25fdd2a,0x8f9840fd,0x01e7f839,0x3cda78c0,0xece05480,0x546b3d3a,0x80d30916,0x271719a9,0x584c20c4,0x45497107,0x5bc78608,0xaf8f9478,0x277e2a4c,0x28c7d484 + DD 0x88a2ffe4,0xfce01767,0x28e169a5,0xdc506a35,0x7af9c93a,0x0ea10861,0x03fa0e08,0x1ed24361,0xa3d694e7,0x96eaaa92,0xef50bc74,0xc0f43b4d,0x64114db4,0xce6aa58c,0x7c000fd4,0x8218e8ea + DD 0x185f8844,0xac815dfb,0x1557abfb,0xcd7e90cb,0xafbfecdf,0x23d16655,0x085cac4a,0x80f3271f,0xd0e62f47,0x7fc39aa7,0x460a48e5,0x88d519d1,0xd28f101e,0x59559ac4,0xca9ae816,0x7981d9e9 + DD 0x9ac38203,0x5c38652c,0x57657fe5,0x86eaf87f,0xe21f5416,0x568fc472,0xe7e597b5,0x2afff39c,0x256d4eab,0x3adbbb07,0x8285ab89,0x22598692,0x041caefe,0x35f8112a,0xa5064c8b,0x95df02e3 + DD 0xc7004bf3,0x4d63356e,0xdb83c7de,0x230a08f4,0x8709a7b7,0xca27b270,0xcb9abd2d,0x0d1c4cc4,0x7550fee8,0x8a0bc66e,0x9cf7247e,0x369cd4c7,0x92b5b7e7,0x75562e84,0x5802af7b,0x8fed0da0 + DD 0xe48fb889,0x6a7091c2,0x7b8a9d06,0x26882c13,0x1b82a0e2,0xa2498663,0x3518152d,0x844ed736,0xd86e27c7,0x282f476f,0x04afefdc,0xa04edaca,0x6119e34d,0x8b256ebc,0x0787d78b,0x56a413e9 + DD 0x5a74be50,0x82ee061d,0xdea16ff5,0xe41781c4,0x99bfc8a2,0xe0b0c81e,0x0b547e2d,0x624f4d69,0xbdcc9ae4,0x3a83545d,0x409b1e8e,0x2573dbb6,0xa6c93539,0x482960c4,0x5ae18798,0xf01059ad + DD 0x3112795f,0x715c9f97,0x984e6ee1,0xe8244437,0xecb66bcd,0x55cb4858,0xabaffbee,0x7c136735,0x5dbec38e,0x54661595,0x388ad153,0x51c0782c,0xc6e0952f,0x9ba4c53a,0x1b21dfa8,0x27e6782a + DD 0x4ed2dbc2,0x682f903d,0x7c3b2d83,0x0eba59c8,0x9c7e9335,0x8e9dc84d,0x0eb226d7,0x5f9b21b0,0xaf267bae,0xe33bd394,0xbe2e15ae,0xaa86cc25,0x6a8ec500,0x4f0bf67d,0xf9630658,0x5846aa44 + DD 0xe2c2bf15,0xfeb09740,0xa9e99704,0x627a2205,0xc2fbc565,0xec8d73d0,0xc20c8de8,0x223eed8f,0xa8363b49,0x1ee32583,0xc9c2b0a6,0x1a0b6cb9,0x90dbc85c,0x49f7c3d2,0x1ef4c1ac,0xa8dfbb97 + DD 0x65c7c2ab,0xafb34d4c,0xe2c5ea84,0x1d4610e7,0x973c4ab5,0x893f6d1b,0x945ba5c4,0xa3cdd7e9,0x064417ee,0x60514983,0xad6bdf2b,0x1459b23c,0x5cf726c3,0x23b2c341,0x32d6354a,0x3a829635 + DD 0xab192c18,0x294f901f,0x7030164f,0xec5fcbfe,0xe2246ba6,0xe2e2fcb7,0x221a1a0c,0x1e7c88b3,0xc92d88c5,0x72c7dd93,0x1106fb59,0x41c2148e,0xa0f60f14,0x547dd4f5,0x63960f31,0xed9b52b2 + DD 0xb0a5b358,0x6c8349eb,0x9e7e2ed6,0xb154c5c2,0xeda462db,0xcad5eccf,0x2de66b69,0xf2d6dbe4,0x8665e5b2,0x426aedf3,0x7b7f5723,0x488a8513,0x8bcbb386,0x15cc43b3,0xd791d879,0x27ad0af3 + DD 0x846e364f,0xc16c236e,0xdea50ca0,0x7f33527c,0x0926b86d,0xc4810775,0x0598e70c,0x6c2a3609,0xf024e924,0xa6755e52,0x9db4afca,0xe0fa07a4,0x66831790,0x15c3ce7d,0xa6cbb0d6,0x5b4ef350 + DD 0xb6205969,0x2c4aafc4,0xf6c7854f,0x42563f02,0x1d983b48,0x016aced5,0x99949755,0xfeb356d8,0xd1a39bd7,0x8c2a2c81,0xe6934ae9,0x8f44340f,0x447904da,0x148cf91c,0x0f51a926,0x7340185f + DD 0x7409ab46,0x2f8f00fb,0x80e289b2,0x057e78e6,0xa888e5d1,0x03e5022c,0x9dede4e2,0x3c87111a,0x7809460b,0x5b9b0e1c,0x71c9abc7,0xe751c852,0xc7cc1dc9,0x8b944e28,0x1d3cfa08,0x4f201ffa + DD 0x3e6721ce,0x02fc905c,0xd0b3674c,0xd52d70da,0x18810da4,0x5dc2e5ca,0x5c69dd99,0xa984b273,0x84de5ca4,0x63b92527,0xc852dec4,0x2f1c9872,0xc2e3de09,0x18b03593,0x9813dc2f,0x19d70b01 + DD 0xa6dc1d29,0x42806b2d,0xf871e144,0xd3030009,0xaaf49276,0xa1feb333,0xc70bc04b,0xb5583b9e,0x95695f20,0x1db0be78,0x89d012b5,0xfc841811,0x05f61643,0x6409f272,0xd5883128,0x40d34174 + DD 0x67419833,0xd79196f5,0x863b7b08,0x6059e252,0x1c56700c,0x84da1817,0xb28d3ec4,0x5758ee56,0x013b0ea6,0x7da2771d,0x54c5e9b9,0xfddf524b,0x24305d80,0x7df4faf8,0x3a97763f,0x58f5c1bf + DD 0x7c696042,0xa5af37f1,0x4a2538de,0xd4cba22c,0x9ea42600,0x211cb995,0x7b069889,0xcd105f41,0xddb81e74,0xb1e1cf19,0x5157b8ca,0x472f2d89,0xee9db885,0x086fb008,0x0f26d131,0x365cd570 + DD 0xa2be7053,0x284b02bb,0x7ab9a6d6,0xdcbbf7c6,0x20f7a530,0x4425559c,0x188767c8,0x961f2dfa,0x70dc80c4,0xe2fd9435,0xf0784120,0x104d6b63,0x53567122,0x7f592bc1,0xf688ad77,0xf6bc1246 + DD 0x0f15dde9,0x05214c05,0x0d5f2b82,0xa47a76a8,0x62e82b62,0xbb254d30,0x3ec955ee,0x11a05fe0,0x9d529b36,0x7eaff46e,0x8f9e3df6,0x55ab1301,0x99317698,0xc463e371,0xccda47ad,0xfd251438 + DD 0x23d695ea,0xca9c3547,0x16e589b5,0x48ce626e,0xb187d086,0x6b5b64c7,0xb2207948,0xd02e1794,0x7198111d,0x8b58e98f,0xdcf9c3cc,0x90ca6305,0xf34089b0,0x5691fe72,0xfc7c80ff,0x60941af1 + DD 0x22eb51e5,0xa09bc0a2,0xaa9cf09a,0xc0bb7244,0x80159f06,0x36a8077f,0xdddc560e,0x8b5c989e,0x512e1f43,0x19d2f316,0xad08ff62,0x02eac554,0x07d20b4e,0x012ab84c,0xd6d4e4e1,0x37d1e115 + DD 0xab7b19a8,0xb6443e1a,0xdef8cd45,0xf08d067e,0x685e03da,0x63adf3e9,0x4792b916,0xcf15a10e,0xb738a425,0xf44bcce5,0x9636b2fd,0xebe131d5,0x7850d605,0x94068841,0xb40d749d,0x09684eaa + DD 0x72ba075b,0x8c3c669c,0xba469015,0x89f78b55,0x3e9f8ba8,0x5706aade,0xb32d7ed7,0x6d8bd565,0x805f08d6,0x25f4e63b,0xc3bcc1b5,0x7f48200d,0xb025d847,0x4e801968,0x87cbe0a8,0x74afac04 + DD 0x7e63d690,0x43ed2c2b,0x0223cdb8,0xefb6bbf0,0x2884d3fe,0x4fec3cae,0xd75e25a4,0x065ecce6,0x69f79071,0x6c2294ce,0x044b8666,0x0d9a8e5f,0x17b69d8f,0x5009f238,0xc5dfdaf7,0x3c29f8fe + DD 0xebae68c4,0x9067528f,0x30c5ba21,0x5b385632,0x1fdd1aec,0x540df119,0xcfba4c78,0xcf37825b,0xbeb11454,0x77eff980,0x60c1b066,0x40a1a991,0xf889a1c7,0xe8018980,0x76c24be0,0xb9c52ae9 + DD 0x45650ef4,0x05fbbcce,0x8aa29ac7,0xae000f10,0x4f04c470,0x884b7172,0x19bb5c25,0x7cd4fde2,0xe8840869,0x6477b22a,0x5fbd0686,0xa8868859,0x1116dfba,0xf23cc02e,0xd87d7776,0x76cd563f + DD 0xa9d82abf,0xe2a37598,0xe6c170f5,0x5f188ccb,0x5066b087,0x81682200,0xc7155ada,0xda22c212,0xfbddb479,0x151e5d3a,0x6d715b99,0x4b606b84,0xf997cb2e,0x4a73b54b,0x3ecd8b66,0x9a1bfe43 + DD 0x2a67d48a,0x1c312809,0x031fa9e2,0xcd6a671e,0x0e43a34a,0xbec3312a,0x55ef47d3,0x1d935639,0x8fea73ea,0x5ea02489,0xa035afb2,0x8247b364,0x5265b54c,0xb58300a6,0x722c7148,0x3286662f + DD 0xb4ec4c20,0xb77fd76b,0x0f3fe3fd,0xf0a12fa7,0x41d8c7e8,0xf845bbf5,0x5ec10aa8,0xe4d969ca,0x43e232a3,0x4c0053b7,0x37f8a45a,0xdc7a3fac,0x20d81c8f,0x3c4261c5,0xb00eab00,0xfd4b3453 + DD 0xd36e3062,0x76d48f86,0xa143ff02,0x626c5277,0xaf76f42e,0x538174de,0x6407ceac,0x2267aa86,0x72e572d5,0xfad76351,0xba7330eb,0xab861af7,0x418d8657,0xa0a1c8c7,0x20289a52,0x988821cb + DD 0xcccc18ad,0x79732522,0xf1a6e027,0xaadf3f8d,0x17c2354d,0xf7382c93,0xd818b689,0x5ce1680c,0xd9ecbee9,0x359ebbfc,0x1cae62ac,0x4330689c,0xc51ac38a,0xb55ce5b4,0xfe238ee8,0x7921dfea + DD 0x271d1ca5,0x3972bef8,0xe8aabd18,0x3e423bc7,0x44a3e5e3,0x57b09f3f,0x7b444d66,0x5da886ae,0xa9964375,0x68206634,0x699cd0ff,0x356a2fa3,0xdba515e9,0xaf0faa24,0xb321d79a,0x536e1f5c + DD 0x5c04e4ea,0xd3b9913a,0xd6f11513,0xd549dcfe,0x79fd1d94,0xee227bf5,0xb43f2c67,0x9f35afee,0xf1314f53,0xd2638d24,0xcabcd822,0x62baf948,0x4ef48db0,0x5542de29,0xfc5f6bb2,0xb3eb6a04 + DD 0x1208e16a,0x23c110ae,0xf8363e24,0x1a4d15b5,0x164be00b,0x30716844,0xf6f4690d,0xa8e24824,0x90b170cf,0x548773a2,0x42f191f4,0xa1bef331,0x9247aa97,0x70f418d0,0x48be9147,0xea06028e + DD 0xdbfb894e,0xe13122f3,0xce274b18,0xbe9b79f6,0xca58aadf,0x85a49de5,0x11487351,0x24957758,0xbb939099,0x111def61,0x26d13694,0x1d6a974a,0xd3fc253b,0x4474b4ce,0x4c5db15e,0x3a1485e6 + DD 0x147c15b4,0xe79667b4,0x7bc61301,0xe34f553b,0x17094381,0x032b80f8,0x723eaa21,0x55d8bafd,0xf1c0e74e,0x5a987995,0xebba289c,0x5a9b292e,0xeb4c8251,0x413cd4b2,0xd162db0a,0x98b5d243 + DD 0x68342520,0xbb47bf66,0xbaa862d1,0x08d68949,0xe906abcd,0x11f349c7,0xed7bf00e,0x454ce985,0xb55b803b,0xacab5c9e,0x31e3c16d,0xb03468ea,0xd273bf12,0x5c24213d,0x71587887,0x211538eb + DD 0x731dea2d,0x198e4a2f,0x74ed7b2a,0xd5856cf2,0x13a664fe,0x86a632eb,0xbda41291,0x932cd909,0xc0c4ddc0,0x850e95d4,0x347fc2c9,0xc0f422f8,0x86076bcb,0xe68cbec4,0xcd6cd286,0xf9e7c0c0 + DD 0x0f5f27ca,0x65994ddb,0xa80d59ff,0xe85461fb,0x66601023,0xff05481a,0xfc9ebbfb,0xc665427a,0x7587fd52,0xb0571a69,0x8d49efce,0x935289f8,0xea420688,0x61becc60,0x13a786af,0xb22639d9 + DD 0x361ecf90,0x1a8e6220,0x25506463,0x001f23e0,0x0a5c2b79,0xe4ae9b5d,0xd8149db5,0xebc9cdad,0x934aa728,0xb33164a1,0xae9b60f3,0x750eb00e,0x9b9cfbfd,0x5a91615b,0xef45f7f6,0x97015cbf + DD 0xbf5151df,0xb462c4a5,0xb07118f2,0x21adcc41,0x043fa42c,0xd60c545b,0xe96be1ab,0xfc21aa54,0x4e51ea80,0xe84bc32f,0x259b5d8d,0x3dae45f0,0xc38f1b5e,0xbb73c7eb,0xe8ae617d,0xe405a74a + DD 0x9f1c56bd,0xbb1ae9c6,0x49f196a4,0x8c176b98,0x6875092b,0xc448f311,0x9f976033,0xb5afe3de,0x145813e5,0xa8dafd49,0xe2b34226,0x687fc4d9,0x4c7ff57f,0xf2dfc92d,0x401f1b46,0x004e3fc1 + DD 0x1430c9ab,0x5afddab6,0x2238e997,0x0bdd41d3,0x418042ae,0xf0947430,0xcdddc4cb,0x71f9adda,0xc52dd907,0x7090c016,0x29e2047f,0xd9bdf44d,0x1b1011a6,0xe6f1fe80,0xd9acdc78,0xb63accbc + DD 0x1272a95b,0xcfc7e235,0xa6276ac8,0x0c667717,0xe2d7eef7,0x3c0d3709,0x9a685b3e,0x5add2b06,0x14ea5d65,0x363ad32d,0x8d7dd506,0xf8e01f06,0x75b4aac6,0xc9ea2213,0x0d353466,0xed2a2bf9 + DD 0xe9d3a7c3,0x439d79b5,0x81b7f34b,0x8e0ee5a6,0x1dc4ba75,0xcf3dacf5,0xeb3310c7,0x1d3d1773,0x7747ae83,0xa8e67112,0x197d6b40,0x31f43160,0xcd961400,0x0521ccee,0xf6535768,0x67246f11 + DD 0xef0c3133,0x702fcc5a,0x7e16693b,0x247cc45d,0xc729b749,0xfd484e49,0xb218320f,0x522cef7d,0x59ab93b3,0xe56ef405,0x9f181071,0x225fba11,0x15330ed0,0x33bd6595,0x1ddb32f7,0xc4be69d5 + DD 0x0448087c,0x264c7668,0x71432dae,0xac30903f,0x00f9bf47,0x3851b266,0x6cdd6d03,0x400ed311,0xf8fd2424,0x045e79fe,0xfa6da98b,0xfdfd974a,0x0c1e673a,0x45c9f641,0x5b2c5168,0x76f2e733 + DD 0x2a601753,0x1adaebb5,0xc57c2d49,0xb286514c,0x1e0bfd24,0xd8769670,0x04478922,0x950c547e,0xe5d32bfe,0xd1d41969,0x750d6c3e,0x30bc1472,0xe0e27f3a,0x8f3679fe,0xa4a6ee0c,0x8f64a7dc + DD 0x633dfb1f,0x2fe59937,0x977f2547,0xea82c395,0x661ea646,0xcbdfdf1a,0xb9085451,0xc7ccc591,0x81761e13,0x82177962,0x9196885c,0xda57596f,0x28ffbd70,0xbc17e849,0x2671d36f,0x1e6e0a41 + DD 0x4152fcf5,0x61ae872c,0x9e77e754,0x441c87b0,0xa34dff09,0xd0799dd5,0x88a6b171,0x766b4e44,0x11f1c792,0xdc06a512,0x4be35c3e,0xea02ae93,0xe90c469e,0xe5ca4d6d,0x56e4ff5c,0x4df4368e + DD 0x4baef62e,0x7817acab,0xa85b91e8,0x9f5a2202,0x6ce57610,0x9666ebe6,0xf73bfe03,0x32ad31f3,0x25bcf4d6,0x628330a4,0x515056e6,0xea950593,0xe1332156,0x59811c89,0x8c11b2d7,0xc89cf1fe + DD 0x04e60cc0,0x75b63913,0x4625d375,0xce811e8d,0x2d26e562,0x030e43fc,0x608d36a0,0xfbb30b4b,0x48528118,0x634ff82c,0xcd285911,0x7c6fe085,0x99358f28,0x7f2830c0,0x665e6c09,0x2e60a95e + DD 0x9b785dbf,0x08407d3d,0xa759bce7,0x530889ab,0x52f61239,0xf228e0e6,0x6879be3c,0x2b6d1461,0x51a7bbf7,0xe6902c04,0x76f24a64,0x30ad99f0,0x98bc6da0,0x66d9317a,0xcb596ac0,0xf4f877f3 + DD 0x4c44f119,0xb05ff62d,0xe9b77416,0x4555f536,0x8caed63b,0xc7c0d059,0xc358b2a9,0x0cd2b7ce,0x46945fa3,0x3f33287b,0xd67c8791,0xf8785b20,0x9637bd08,0xc54a7a61,0x18be79d7,0x54d4598c + DD 0xc46d7ce1,0x889e5acb,0x8b085877,0x9a515bb7,0x0b7a5050,0xfac1a03d,0xf2926035,0x7d3e738a,0x2a6cb0eb,0x861cc2ce,0x8f7adc79,0x6f2e2955,0x33016376,0x61c4d451,0x5ad59090,0xd9fd2c80 + DD 0xb2b836a1,0xe5a83738,0x7c0d6622,0x855b41a0,0x7cc19af1,0x186fe317,0xfdd99acb,0x6465c1ff,0x6974b99e,0x46e5c23f,0xa2717cbe,0x75a7cf8b,0x062be658,0x4d2ebc3f,0x5f209c98,0x094b4447 + DD 0xb940cb5a,0x4af285ed,0x7cc82f10,0x6706d792,0x030526fa,0xc8c8776c,0xa0da9140,0xfa8e6f76,0x591ee4f0,0x77ea9d34,0x40274166,0x5f46e337,0xea671457,0x1bdf98bb,0x862a1fe2,0xd7c08b46 + DD 0x1c08ad63,0x46cc303c,0x4c845e7b,0x99543440,0x48f36bf7,0x1b8fbdb5,0x8c8273a7,0x5b82c392,0x928435d5,0x08f712c4,0x79330380,0x071cf0f1,0xa8da054a,0xc74c2d24,0x43c46b5c,0xcb0e7201 + DD 0xc0b7eff3,0x0ad7337a,0xc5e48b3c,0x8552225e,0x73f13a5f,0xe6f78b0c,0x82349cbe,0x5e70062e,0xe7073969,0x6b8d5048,0xc33cb3d2,0x392d2a29,0x4ecaa20f,0xee4f727c,0x2ccde707,0xa068c99e + DD 0xb87a2913,0xfcd5651f,0x3cc252f0,0xea3e3c15,0x3b6cd3e4,0x777d92df,0xc5a732e7,0x7a414143,0xa71ff493,0xa895951a,0xbbd37cf6,0xfe980c92,0xdecfeeff,0x45bd5e64,0xa44c43e9,0x910dc2a9 + DD 0xcca9f54d,0xcb403f26,0x9303f6db,0x928bbdfb,0xa9eee67c,0x3c37951e,0xf79961c3,0x3bd61a52,0x395c9a79,0x09a238e6,0x61eb352d,0x6940ca2d,0xc1875631,0x7d1e5c5e,0x1e1b20d1,0x1e19742c + DD 0x23fc2e6e,0x4633d908,0x08959149,0xa76e29a9,0x84ed7da5,0x61069d9c,0x5dbcad51,0x0baa11cf,0x961849da,0xd01eec64,0xaf3d8c28,0x93b75f1f,0x1ca2ee44,0x57bc4f9f,0x00e00558,0x5a26322d + DD 0x61a023ef,0x1888d658,0xb9e5246e,0x1d72aab4,0xe5563ec0,0xa9a26348,0xc3439a43,0xa0971963,0xadb9b5b7,0x567dd54b,0xc45a524b,0x73fac1a1,0xfe38e608,0x8fe97ef7,0x3f384f48,0x608748d2 + DD 0xc486094f,0xb0571794,0x8bf3a8d6,0x869254a3,0x310b0e25,0x148a8dd1,0x9aa3f7d8,0x99ab9f3f,0x6706c02e,0x0927c68a,0x69790e6c,0x22b5e76c,0x6c71376c,0x6c325260,0x09ef6657,0x53a57690 + DD 0xedffcf3a,0x8d63f852,0x3c0a6f55,0xb4d2ed04,0x12519b9e,0xdb3aa8de,0x1e0a569a,0x5d38e9c4,0x303747e2,0x871528bf,0xf5b5c18d,0xa208e77c,0xca6bf923,0x9d129c88,0xbf02839f,0xbcbf197f + DD 0x27323194,0x9b9bf030,0x339ca59d,0x3b055a8b,0x0f669520,0xb46b2312,0x497e5f24,0x19789f1f,0xaaf01801,0x9c499468,0x8b69d59c,0x72ee1190,0xacf4c079,0x8bd39595,0x8e0cd048,0x3ee11ece + DD 0x1ed66f18,0xebde86ec,0xd61fce43,0x225d906b,0xe8bed74d,0x5cab07d6,0x27855ab7,0x16e4617f,0xb2fbc3dd,0x6568aadd,0x8aeddf5b,0xedb5484f,0x6dcf2fad,0x878f20e8,0x615f5699,0x3516497c + DD 0xfa181e69,0xef0a3fec,0x30d69a98,0x9ea02f81,0x66eab95d,0xb2e9cf8e,0x24720021,0x520f2beb,0x1df84361,0x621c540a,0x71fa6d5d,0x12037721,0x0ff5f6ff,0x6e3c7b51,0xabb2bef3,0x817a069b + DD 0xb294cda6,0x83572fb6,0xb9039f34,0x6ce9bf75,0x095cbb21,0x20e012f0,0xd063f0da,0xa0aecc1b,0xf02909e5,0x57c21c3a,0x48ce9cdc,0xc7d59ecf,0x8ae336f8,0x2732b844,0x3f4f85f4,0x056e3723 + DD 0x89e800ca,0x8a10b531,0x145208fd,0x50fe0c17,0xb714ba37,0x9e43c0d3,0x34189acc,0x427d200e,0xe616e2c0,0x05dee24f,0xee1854c1,0x9c25f4c8,0x8f342a73,0x4d3222a5,0xa027c952,0x0807804f + DD 0x4f0d56f3,0xc222653a,0xca28b805,0x961e4047,0x4a73434b,0x2c03f8b0,0xab712a19,0x4c966787,0x864fee42,0xcc196c42,0x5b0ece5c,0xc1be93da,0xc131c159,0xa87d9f22,0xdce45655,0x2bb6d593 + DD 0xb809b7ce,0x22c49ec9,0xe2c72c2c,0x8a41486b,0xfea0bf36,0x813b9420,0xa66dac69,0xb3d36ee9,0x328cc987,0x6fddc08a,0x3a326461,0x0a3bcd2c,0xd810dbba,0x7103c49d,0x4b78a4c4,0xf9d81a28 + DD 0xe4d55941,0x3de865ad,0x30384087,0xdedafa5e,0x4ef18b9b,0x6f414abb,0xfaee5268,0x9ee9ea42,0x37a55a4a,0x260faa16,0x015f93b9,0xeb19a514,0x9e9c3598,0x51d7ebd2,0x1932178e,0x523fc56d + DD 0xb98fe684,0x501d070c,0x124a1458,0xd60fbe9a,0x92bc6b3f,0xa45761c8,0xfe6f27cb,0xf5384858,0xb59e763b,0x4b0271f7,0x5b5a8e5e,0x3d4606a9,0x05a48292,0x1eda5d9b,0xe6fec446,0xda7731d0 + DD 0x90d45871,0xa3e33693,0x06166d8d,0xe9764040,0x89a90403,0xb5c33682,0x72f1d637,0x4bd17983,0xd5d2c53a,0xa616679e,0xfdcf3b87,0x5ec4bcd8,0xb66a694e,0xae6d7613,0xe3fc27e5,0x7460fc76 + DD 0x95caabee,0x70469b82,0x889501e3,0xde024ca5,0x076ed265,0x6bdadc06,0x5a0ef8b2,0x0cb1236b,0x0972ebf9,0x4065ddbf,0x22aca432,0xf1dd3875,0x744aff76,0xa88b97cf,0xfe8e3d24,0xd1359afd + DD 0x91502cf3,0x52a3ba2b,0x084db75d,0x2c3832a8,0xde30b1c9,0x04a12ddd,0xe31fd60c,0x7802eabc,0xa37fddab,0x33707327,0xfaafa973,0x65d6f2ab,0x11e6f91a,0x3525c5b8,0x5f46530b,0x76aeb0c9 + DD 0x2f93a675,0xe8815ff6,0x05f48679,0xa6ec9684,0x358ae884,0x6dcbb556,0xe19e3873,0x0af61472,0xa5f696be,0x72334372,0x6f22fb70,0xc65e57ea,0x946cea90,0x268da30c,0x65681b2a,0x136a8a87 + DD 0x0f9f44d4,0xad5e81dc,0x2c46585a,0xf09a6960,0xc447d1b1,0xd1649164,0x879dc8b1,0x3b4b36c8,0x3b6b234c,0x20d4177b,0x1730d9d0,0x096a2505,0xef80531d,0x0611b9b8,0x64bb495d,0xba904b3b + DD 0x93a3147a,0x1192d9d4,0x9a565545,0x9f30a5dc,0x6ef07212,0x90b1f9cb,0x0d87fc13,0x29958546,0xc17db9ba,0xd3323eff,0xcb1644a8,0xcb18548c,0x4f49ffbc,0x18a306d4,0x4c2e8684,0x28d658f1 + DD 0xa99f8c71,0x44ba60cd,0x4bf742ff,0x67b7abdb,0x914b3f99,0x66310f9c,0xf412c161,0xae430a32,0x88ace52f,0x1e6776d3,0x52d7067d,0x4bc0fa24,0x8f07cd1b,0x03c286aa,0xa985b2c1,0x4cb8f38c + DD 0x8c3bff36,0x83ccbe80,0x5263e575,0x005a0bd2,0x259bdcd1,0x460d7dda,0xfa5cab6b,0x4a1c5642,0x9fe4fc88,0x2b7bdbb9,0xcc97bbb5,0x09418e28,0xa12321ae,0xd8274fb4,0x5c87b64e,0xb137007d + DD 0xc63c4962,0x80531fe1,0x981fdb25,0x50541e89,0xfd4c2b6b,0xdc1291a1,0xa6df4fca,0xc0693a17,0x0117f203,0xb2c4604e,0x0a99b8d0,0x245f1963,0xc6212c44,0xaedc20aa,0x520f52a8,0xb1ed4e56 + DD 0xf8547be3,0xfe48f575,0xa9e45f98,0x0a7033cd,0x18c50100,0x4b45d3a9,0xa61d41da,0xb2a6cd6a,0x57933c6b,0x60bbb4f5,0x2b0d7ffc,0xa7538ebd,0x8cd626b6,0x9ea3ab8d,0x3601625a,0x8273a484 + DD 0x0168e508,0x88859845,0x99a94abd,0x8cbc9bb2,0xfab0a671,0x713ac792,0x6c9ebffc,0xa3995b19,0x1239e152,0xe711668e,0xbbb8dff4,0x56892558,0xdbf17963,0x8bfc7dab,0xb3de1253,0x5b59fe5a + DD 0x34a9f7ae,0x7e3320eb,0xd751efe4,0xe5e8cf72,0xd9be2f37,0x7ea003bc,0xb6c08ef7,0xc0f551a0,0x038f6725,0x56606268,0x6d92d3b6,0x1dd38e35,0xc3cbd686,0x07dfce7c,0x651c5da8,0x4e549e04 + DD 0x08b19340,0x4058f93b,0xcac6d89d,0xc2fae6f4,0x8f159cc7,0x4bad8a8c,0xcb0b601c,0x0ddba4b3,0x1dd95f8c,0xda4fc7b5,0xcea5c255,0x1d163cd7,0x274a8c4c,0x30707d06,0x2802e9ce,0x79d9e008 + DD 0xe6ddd505,0x02a29ebf,0xb50bed1a,0x37064e74,0xa7327d57,0x3f6bae65,0xf83920bc,0x3846f5f1,0x60df1b9b,0x87c37491,0x2d1da29f,0x4cfb2895,0x4ed1743c,0x10a478ca,0x3edd47c6,0x390c6030 + DD 0x8c0a78de,0x8f3e5312,0x1e85df70,0xccd02bda,0xa61b6582,0xd6c75c03,0xfc0eebd1,0x0762921c,0xd85010c0,0xd34d0823,0x0044cf1f,0xd73aaacb,0xa3b5e78a,0xfb4159bb,0xe5826f3f,0x2287c7f7 + DD 0x580b1a01,0x4aeaf742,0x60423b79,0xf080415d,0xa7dea144,0xe12622cd,0x59d62472,0x49ea4996,0x571f3913,0xb42991ef,0xf5b25a8a,0x0610f214,0x30b79e8f,0x47adc585,0x07a065a2,0xf90e3df6 + DD 0x43e2e034,0x5d0a5deb,0x444024aa,0x53fb5a34,0x6b0c9f7f,0xa8628c68,0xac563656,0x9c69c29c,0xbace47b6,0x5a231feb,0x9ea5a2ec,0xbdce0289,0x9463853e,0x05da1fac,0x509e78aa,0x96812c52 + DD 0x57151692,0xd3fb5771,0xd98e1c44,0xeb2721f8,0x32399be1,0xc0506087,0xd979d8b8,0xda5a5511,0xc6f56780,0x737ed55d,0x0dc7a7f4,0xe20d3004,0xf5941a03,0x02ce7301,0xed30f83a,0x91ef5215 + DD 0x4092d85f,0x28727fc1,0x5c49e41a,0x72d223c6,0xba6a4d81,0xa7cf30a2,0xb030d87d,0x7c086209,0xfc588b09,0x04844c7d,0x5874bbb0,0x728cd499,0xe84c0495,0xcc1281ee,0xec31958f,0x0769b5ba + DD 0xf99c2471,0x665c228b,0x191eb110,0xf2d8a11b,0xd36d7024,0x4594f494,0xcdcb25a1,0x482ded8b,0xdadd4885,0xc958a9d8,0xf1d2b547,0x7004477e,0x2a0af550,0x0a45f6ef,0x2f8d6351,0x4fc739d6 + DD 0x786f08a9,0x75cdaf27,0x42c2737f,0x8700bb26,0x1c4e2670,0x855a7141,0x15076fef,0x810188c1,0xabcd3297,0xc251d0c9,0xf48108eb,0xae4c8967,0x18ceed30,0xbd146de7,0xc986bced,0xf9d4f07a + DD 0x83fa1e08,0x5ad98ed5,0xbeabd1fb,0x7780d33e,0x903b1196,0xe330513c,0xa47bc8c4,0xba11de9e,0x02c2d064,0x684334da,0xa48de23b,0x7ecf360d,0x0a9089d8,0x57a1b474,0xff36734c,0xf28fa439 + DD 0xea4570b3,0xf2a482cb,0xa5ebcee9,0xee65d68b,0xb9694cd5,0x988d0036,0x37885d32,0x53edd0e9,0xbeb9bc6d,0xe37e3307,0x9f5c6768,0xe9abb907,0x51f2160f,0x4396ccd5,0x47336da6,0x2500888c + DD 0x926fce43,0x383f9ed9,0x04da2930,0x809dd1c7,0x8a4cb227,0x30f6f596,0x73a56b38,0x0d700c7f,0xab64a065,0x1825ea33,0x1338df80,0xaab9b735,0x9b63f57f,0x1516100d,0x27a6a634,0x2574395a + DD 0x700a1acd,0xb5560fb6,0xfd999681,0xe823fd73,0x6cb4e1ba,0xda915d1f,0x6ebe00a3,0x0d030118,0x89fca8cd,0x744fb0c9,0xf9da0e0b,0x970d01db,0x7931d76f,0x0ad8c564,0xf659b96a,0xb15737bf + DD 0xa8b484e7,0xdc9933e8,0x7a26dec7,0xb2fdbdf9,0x9f1f0136,0x2349e9a4,0x70fddddb,0x7860368e,0xf9ad3e18,0xd93d2c1c,0x689f4e79,0x6d6c5f17,0xb24ff1b6,0x7a544d91,0xfe16cd8c,0x3e12a5eb + DD 0xa56b872f,0x543574e9,0xfcf68ea2,0xa1ad550c,0x3f560ef7,0x689e37d2,0xc9d47a8b,0x8c54b9ca,0x088ac342,0x46d40a4a,0x1576c6d0,0xec450c7c,0x1f9689e9,0xb589e31c,0xb8781718,0xdacf2602 + DD 0xc8cb6b42,0xa89237c6,0xb96ef381,0x1326fc93,0xb5f07825,0x55d56c6d,0x7449e22d,0xacba2eea,0x633c3000,0x74e0887a,0xd7cbcf71,0xcb6cd172,0xc36cf1be,0x309e81de,0x60ae399b,0x07a18a6d + DD 0x9edce57e,0xb36c2679,0xdf001d41,0x52b892f4,0x16a1f2c6,0xd884ae5d,0xefcc370a,0x9b329424,0xbd2e21df,0x3120daf2,0x02470a99,0x55298d2d,0xa05db32e,0x0b78af6c,0x601f5636,0x5c76a331 + DD 0xf8a4f29c,0xaae861ff,0xd68f8d49,0x70dc9240,0x81b1321c,0x960e649f,0x8792e4ce,0x3d2c801b,0x42521876,0xf479f772,0x416c79b1,0x0bed93bc,0x263e5bc9,0xa67fbc05,0x521db049,0x01e8e630 + DD 0xc6f3431e,0x76f26738,0xe3267541,0xe609cb02,0x818c877c,0xb10cff2d,0x786a13cb,0x1f0e75ce,0x1158544d,0xf4fdca64,0x6cb71ed0,0x5d777e89,0xa9aa4755,0x3c233737,0xe527ab40,0x7b453192 + DD 0x39f05ffe,0xdb59f688,0x6d82574e,0x8f4f4be0,0xee292d1b,0xcce3450c,0x61ccd086,0xaa448a12,0xf7914967,0xabce91b3,0x1908a5ed,0x4537f09b,0xf51042e7,0xa812421e,0xec0b3a34,0xfaf5cebc + DD 0x4ca6b39a,0x730ffd87,0x02efd342,0x70fb72ed,0xd75c8edb,0xeb4735f9,0xc278aa51,0xc11f2157,0xbf3bfebf,0xc459f635,0x6bd9601f,0x3a1ff0b4,0xc420cb73,0xc9d12823,0x3c2915a3,0x3e9af3e2 + DD 0xb41c3440,0xe0c82c72,0xe3039a5f,0x175239e5,0x558795a3,0xe1084b8a,0xd01e5c60,0x328d0a1d,0xd3788a04,0x0a495f2e,0x66c11a9f,0x25d8ff16,0x9ed692d6,0xf5155f05,0x4f425fe4,0x954fa107 + DD 0xe98aaa99,0xd16aabf2,0x96b0f88a,0x90cd8ba0,0xc154026a,0x957f4782,0x52af56d2,0x54ee0734,0x45b4147a,0xbcf89e54,0x9a52816c,0x3d102f21,0x39b62e77,0x6808517e,0x69169ad8,0x92e25421 + DD 0xbb608558,0xd721d871,0xf6d4ff9b,0x60e4ebae,0x41f2763e,0x0ba10819,0x51ee3247,0xca2e45be,0x2bfd7a5f,0x66d172ec,0x74d0b12d,0x528a8f2f,0xdabe70dc,0xe17f1e38,0x9f93983c,0x1d5d7316 + DD 0xdf423e31,0x51b2184a,0xaedb1a10,0xcb417291,0x625bcab9,0x2054ca93,0xa98998f0,0x54396860,0xa54ae57e,0x4e53f6c4,0xee648e9d,0x0ffeb590,0x6afaf6bc,0xfbbdaadc,0xaa3bfb8a,0xf88ae796 + DD 0xd2359ed9,0x209f1d44,0xf3544ce2,0xac68dd03,0xfd51e569,0xf378da47,0x2cc80097,0xe1abd860,0x343b6e3a,0x23ca18d9,0xb40a1bae,0x480797e8,0x533f3e67,0xd1f0c717,0x06e6cdfc,0x44896970 + DD 0x52a82e8d,0x8ca21055,0x78460cdc,0xb2caf785,0xe9037178,0x4c1b7b62,0xdb514b58,0xefc09d2c,0x9113be5c,0x5f2df9ee,0xb3f9271c,0x2fbda78f,0x8f83fc54,0xe09a81af,0x8afb5141,0x06b13866 + DD 0x43e3865d,0x38f6480f,0x1ddf47d9,0x72dd77a8,0x4c205ff7,0xf2a8e971,0x9d088ad8,0x46d449d8,0x185d706f,0x926619ea,0xc7dd7f62,0xe47e02eb,0x8cbc2031,0xe7f120a7,0x998d4ac9,0xc18bef00 + DD 0x6bdf22da,0x18f37a9c,0x90dc82df,0xefbc432f,0x5d703651,0xc52cef8e,0xd99881a5,0x82887ba0,0xb920ec1d,0x7cec9dda,0xec3e8d3b,0xd0d7e8c3,0x4ca88747,0x445bc395,0x9fd53535,0xedeaa2e0 + DD 0x6cc87475,0x461b1d93,0x6d2383bd,0xd92a52e2,0xd7903546,0xfabccb59,0x3d14b112,0x6111a761,0xb3d5f612,0x0ae584fe,0x60e828ec,0x5ea69b8d,0x54087030,0x6c078985,0xac4821fe,0x649cab04 + DD 0x8bdce214,0x25ecedcf,0x86af7361,0xb5622f72,0x7038b9e2,0x0e1227aa,0xac20fa77,0xd0efb273,0x79df975b,0x817ff88b,0x1999503e,0x856bf286,0x5038ec46,0xb4d5351f,0xfc42af6e,0x740a52c5 + DD 0x2cbb1a3f,0x2e38bb15,0x17a83429,0xc3eb99fe,0xdd66bb74,0xca4fcbf1,0xcde5e8fc,0x880784d6,0xb4e7a0be,0xddc84c1c,0xbd15a72f,0x8780510d,0x81ec30e1,0x44bcf1af,0x0a61073e,0x141e50a8 + DD 0x47be87ae,0x0d955718,0xf76a4372,0x68a61417,0xc607c3d3,0xf57e7e87,0x5252f332,0x043afaf8,0x1552a4d2,0xcc14e121,0xbb4d4ab4,0xb6dee692,0xa03816a4,0xb6ab74c8,0x6f394a29,0x84001ae4 + DD 0xd795fb45,0x5bed8344,0xb79f55a5,0x57326e7d,0x4accdffc,0xc9533ce0,0x3993fa04,0x53473caf,0xa13df4c8,0x7906eb93,0x97cbe46f,0xa73e51f6,0x0ae4ccf8,0xd1ab3ae1,0x8a5b3dbc,0x25614508 + DD 0x11a71b27,0x61eff962,0x6bb7fa39,0xdf71412b,0x2bd7f3ef,0xb31ba6b8,0x69180d29,0xb0b9c415,0x014cdde5,0xeec14552,0x227b4bbb,0x702c624b,0xd3e988f3,0x2b15e8c2,0xa4f7fd04,0xee3bcc6d + DD 0x42ac6c85,0x9d00822a,0x1df9f2b7,0x2db0cea6,0x42de1e58,0xd7cad2ab,0x2d6fbb61,0x346ed526,0x1a2faf09,0xb3962995,0x7c25612e,0x2fa8a580,0x7cf56490,0x30ae04da,0x0eea3961,0x75662908 + DD 0x3d080847,0x3609f5c5,0x5241d4f6,0xcb081d39,0x77961a63,0xb4fb3810,0x2abb66fc,0xc20c5984,0xf902f245,0x3d40aa7c,0x4e536b1e,0x9cb12736,0x99b3134f,0x5eda24da,0x5cd011af,0xafbd9c69 + DD 0xc7088c7d,0x9a16e30a,0x3207389f,0x5ab65710,0xe7407a53,0x1b09547f,0x4fdc6eab,0x2322f9d7,0x7430de4d,0xc0f2f22d,0xe68ca9a9,0x19382696,0x918e5868,0x17f1eff1,0x586f4204,0xe3b5b635 + DD 0x3fbc4341,0x146ef980,0x5b5eed4e,0x359f2c80,0x7482e41d,0x9f35744e,0xf3b224c2,0x9a9ac3ec,0x91fc50ae,0x9161a6fe,0xc613fa7c,0x89ccc66b,0xc732f15a,0x89268b14,0xb467ed03,0x7cd6f4e2 + DD 0xce56b40e,0xfbf79869,0xc02dde98,0xf93e094c,0xedee2cd7,0xefe0c3a8,0xb268fd42,0x90f3ffc0,0x08241aed,0x81a7fd56,0x00b1afe8,0x95ab7ad8,0x3e310d52,0x40127056,0x09d9fc43,0xd3ffdeb1 + DD 0xd11a8594,0xc8f85c91,0x31cf6db8,0x2e74d258,0x02b5dfd0,0x829c7ca3,0x69143c86,0xe389cfbe,0x941768d8,0xd01b6405,0x03bf825d,0x45103995,0x56cd17e2,0xcc4ee166,0xba037e79,0xbea3c283 + DD 0xd9a47520,0x4e1ac06e,0xaf852404,0xfbfe18aa,0x8087648a,0x5615f8e2,0xb9d150d9,0x7301e47e,0xb299b977,0x79f9f9dd,0xa5b78314,0x76697a7b,0x7d7c90e7,0x10d67468,0x937210b5,0x7afffe03 + DD 0x28c22cee,0x5aef3e4b,0x09fd55ae,0xefb0ecd8,0x0d2a5d6a,0x4cea7132,0x01db6357,0x9cfb5fa1,0xf36e1ac5,0x395e0b57,0x36cafb7d,0x008fa9ad,0x5308c4db,0x8f6cdf70,0x95ed2477,0x51527a37 + DD 0x5bd21311,0xba0dee30,0x909c90d7,0x6ed41b22,0x7c8696d3,0xc5f6b758,0x3ce83a80,0x0db8eaa8,0xb24b4b6f,0xd297fe37,0x522d1f0d,0xfe58afe8,0x8c98dbd9,0x97358736,0x9454a527,0x6bc226ca + DD 0xce53c2d0,0xa12b384e,0x5e4606da,0x779d897d,0x73ec12b0,0xa53e47b0,0x5756f1ad,0x462dbbba,0xcafe37b6,0x69fe09f2,0xecce2e17,0x273d1ebf,0x3cf607fd,0x8ac1d538,0x12e10c25,0x8035f7ff + DD 0x7e6c5520,0x854d34c7,0xdcb9ea58,0xc27df9ef,0xd686666d,0x405f2369,0x0417aa85,0x29d1febf,0x93470afe,0x9846819e,0xe2a27f9e,0x3e6a9669,0xe31e6504,0x24d008a2,0x9cb7680a,0xdba7cecf + DD 0x338d6e43,0xecaff541,0x4541d5cc,0x56f7dd73,0x96bc88ca,0xb5d426de,0x9ed3a2c3,0x48d94f6b,0x2ef8279c,0x6354a3bb,0x0b1867f2,0xd575465b,0x95225151,0xef99b0ff,0xf94500d8,0xf3e19d88 + DD 0xe32dd620,0x92a83268,0x627849a2,0x913ec99f,0x2c378882,0xedd8fdfa,0xee6f8cfe,0xaf96f33e,0xdc3fa8a5,0xc06737e5,0xb0b03a1d,0x236bb531,0x89f037b0,0x33e59f29,0xd9a12a53,0x13f9b5a7 + DD 0x51efb310,0x0d0df6ce,0x958df5be,0xcb5b2eb4,0x36158e59,0xd6459e29,0x1466e336,0x82aae2b9,0x411aa636,0xfb658a39,0xd4c0a933,0x7152ecc5,0x49f026b7,0xf10c758a,0xcb09311f,0xf4837f97 + DD 0xc753c45f,0xddfb02c4,0xf9c840fe,0x18ca81b6,0xb0f8a3e6,0x846fd09a,0xe7733dbc,0xb1162add,0x236e3ab6,0x7070ad20,0xb2a56326,0xf88cdaf5,0x997cbc7a,0x05fc8719,0x4b665272,0x442cd452 + DD 0xb71698f5,0x7807f364,0x9f7b605e,0x6ba418d2,0xa03b2cbb,0xfd20b00f,0xda54386f,0x883eca37,0xf3437f24,0xff0be43f,0xa48bb33c,0xe910b432,0x329df765,0x4963a128,0xbe2fe6f7,0xac1dd556 + DD 0x24a0a3fc,0x557610f9,0xe881c3f9,0x38e17bf4,0xed0dac99,0x6ba84faf,0x59eeb918,0xd4a222c3,0x13f542b6,0xc79c1dbe,0xe425d457,0x1fc65e0d,0x1debb779,0xeffb754f,0x9e08af60,0x638d8fd0 + DD 0x626332d5,0x994f523a,0x5561bb44,0x7bc38833,0x3d845ea2,0x005ed4b0,0xc2a1f08a,0xd39d3ee1,0xe7676b0d,0x6561fdd3,0xfb706017,0x620e35ff,0xf264f9a8,0x36ce424f,0xda2681f7,0xc4c3419f + DD 0x69beb6e8,0xfb6afd2f,0x6d700d03,0x3a50b993,0x0c83a14f,0xc840b2ad,0x54085bef,0x573207be,0x09fe7e5b,0x5af882e3,0x3b40a7e1,0x957678a4,0x543056e2,0x172d4bdd,0x0df13c0a,0x9c1b26b4 + DD 0xf405ff06,0x1c30861c,0x486e828b,0xebac86bd,0x636933fc,0xe791a971,0x7aeee947,0x50e7c2be,0xfa90d767,0xc3d4a095,0xe670ab7b,0xae60eb7b,0x397b056d,0x17633a64,0x105012aa,0x93a21f33 + DD 0xabb88643,0x663c370b,0x22e21599,0x91df36d7,0x8b761671,0x183ba835,0x728f3bf1,0x381eea1d,0x39966e6c,0xb9b2f1ba,0xe7295492,0x7c464a28,0x09b26b7f,0x0fd5f70a,0xfbe009df,0xa9aba1f9 + DD 0x369b87ad,0x857c1f22,0x32fca556,0x3c00e5d9,0x90b06466,0x1ad74cab,0x550faaf2,0xa7112386,0x6d9bd5f5,0x7435e198,0x59c3463f,0x2dcc7e38,0xca7bd4b2,0xdc7df748,0x9dec2f31,0x13cd4c08 + DD 0xe3237710,0x0d3b5df8,0xcbd2f7b0,0x0dadb26e,0xe4aa082b,0x9f5966ab,0x350e966e,0x666ec8de,0xee524216,0x1bfd1ed5,0x41dab0b6,0xcd93c59b,0xd186d6ba,0x658a8435,0x159d1195,0x1b7d34d2 + DD 0x22caf46b,0x5936e460,0x9a96fe4f,0x6a45dd8f,0xb98f474e,0xf7925434,0x0053ef15,0x41410412,0x41de97bf,0x71cf8d12,0xbd80bef4,0xb8547b61,0xc4db0037,0xb47d3970,0xfef20dff,0xf1bcd328 + DD 0x10caad67,0x31a92e09,0x5531a1e1,0x1f591960,0x5f4fc840,0x3bb852e0,0x93a72c6c,0x63e297ca,0x49abad67,0x3c2b0b2e,0xed3db0d9,0x6ec405fc,0x7fef1d40,0xdc14a530,0x280896fc,0xccd19846 + DD 0x9bb81648,0x00f83176,0x653120d0,0xd69eb485,0x4ccabc62,0xd17d75f4,0xb749fcb1,0x34a07f82,0xbbfb5554,0x2c3af787,0x62e283f8,0xb06ed4d0,0xa19213a0,0x5722889f,0xdcf3c7b4,0x162b085e + DD 0xe0dd3eca,0xbcaecb31,0xe52f13a5,0xc6237fbc,0x27bac297,0xcc2b6b03,0xb917f54a,0x2ae1cac5,0x7845ae4f,0x474807d4,0xce5972e0,0xfec7dd92,0x1d7915bb,0xc3bd2541,0xd94907ca,0x66f85dc4 + DD 0xbdbcf0ca,0xd981b888,0xdf279e9f,0xd75f5da6,0x7054e934,0x128bbf24,0x81db134b,0x3c6ff6e5,0x047d26e4,0x795b7cf4,0x5049ec37,0xf370f7b8,0xced945af,0xc6712d4d,0x095642bc,0xdf30b5ec + DD 0x4896246e,0x9b034c62,0xee90bbd1,0x5652c016,0x87fedb73,0xeb38636f,0x0135a613,0x5e32f847,0xcf933c83,0x0703b312,0x1a7f47e6,0xd05bb76e,0x949c2415,0x825e4f0c,0x7250d6f8,0x569e5622 + DD 0x6568013e,0xbbe9eb3a,0x22f243fc,0x8dbd203f,0xb342734a,0x9dbd7694,0x46afa984,0x8f6d12f8,0xc9eade29,0xb98610a2,0x47dd0f18,0xbab4f323,0x671c0d46,0x5779737b,0xd3e0a42a,0x10b6a7c6 + DD 0x3035b41c,0xfb19ddf3,0x99c45895,0xd336343f,0x54c857e5,0x61fe4938,0xae4e57d5,0xc4d506be,0xbbc33f75,0x3cd8c8cb,0x9262c77d,0x7281f08a,0xf11a2823,0x083f4ea6,0x9fba2e33,0x8895041e + DD 0x9c438edf,0xfcdfea49,0x91edba44,0x7678dcc3,0xe2ba50f0,0xf07b3b87,0x43948c1b,0xc13888ef,0x1140af42,0xc2135ad4,0x926ed1a7,0x8e5104f3,0x88f6695f,0xf24430cb,0x6d73c120,0x0ce0637b + DD 0xfe631e8f,0xb2db01e6,0xd7bdd24b,0x1c5563d7,0x369ad44f,0x8daea3ba,0x8187a9f9,0x000c81b6,0xaae1fd9a,0x5f48a951,0x8d5aed8a,0xe35626c7,0x0498c622,0x20952763,0x773aa504,0x76d17634 + DD 0xeb300f7a,0x36d90dda,0xedb5e801,0x9dcf7dfc,0x74d5244c,0x645cb268,0x348e3aa2,0xa127ee79,0x575f1dbb,0x488acc53,0x80e6161e,0x95037e85,0x292650d0,0x57e59283,0x14938216,0xabe67d99 + DD 0x3f8e1065,0x3c7f944b,0x330e8924,0xed908cb6,0x6f530136,0x08ee8fd5,0xd7ffc169,0x2227b7d5,0xb5cd6dd5,0x4f55c893,0xa62796e8,0x82225e11,0xcb18e12c,0x5c6cead1,0x84f5a51a,0x4381ae0c + DD 0x7fafa4c8,0x345913d3,0x0491aac0,0x3d918082,0x3e69264c,0x9347871f,0xb4f4f0cd,0xbea9dd3c,0x3eadd3e7,0xbda5d067,0x0573bcd8,0x0033c1b8,0x5da2486c,0x25589379,0x86abbee7,0xcb89ee5b + DD 0x22532e5d,0x8fe0a8f3,0x727dfc4c,0xb6410ff0,0x226726db,0x619b9d58,0x7a2b2dc7,0x5ec25669,0x4c3beb01,0xaf4d2e06,0x7acea556,0x852123d0,0xf783487a,0x0e9470fa,0x5664b3eb,0x75a7ea04 + DD 0x6798e4ba,0x4ad78f35,0xc7d0e091,0x9214e6e5,0xb1290403,0xc420b488,0xfc295749,0x64049e0a,0x3ae9841f,0x03ef5af1,0xb0b662a6,0xdbe4ca19,0xfa453458,0x46845c5f,0x10b66722,0xf8dabf19 + DD 0xcce2793b,0xb650f0aa,0xc5ec47c1,0x71db851e,0x3b234fa9,0x3eb78f3e,0xfc0106ce,0xb0c60f35,0x774eadbd,0x05427121,0xce323863,0x25367faf,0xcd086976,0x7541b5c9,0xdc507ad1,0x4ff069e2 + DD 0x8776e667,0x74145256,0xb23c6bb5,0x6e76142c,0x1b3a8a87,0xdbf30712,0x98450836,0x60e7363e,0xb7366d80,0x5741450e,0x4837dbdf,0xe4ee14ca,0x69d4316f,0xa765eb9b,0x8ef43825,0x04548dca + DD 0x5ae888eb,0x9c9f4e4c,0x56e9ac99,0x733abb51,0xba6ac029,0xdaad3c20,0x2ba3e38e,0x9b8dd3d3,0x0bc5d11a,0xa9bb4c92,0x9c5f88a3,0xf20127a7,0x161d3cb8,0x4f52b06e,0x6afaf0a6,0x26c1ff09 + DD 0x7189e71f,0x32670d2f,0x5ecf91e7,0xc6438748,0xdb757a21,0x15758e57,0x290a9ce5,0x427d09f8,0x38384a7a,0x846a308f,0xb0732b99,0xaac3acb4,0x17845819,0x9e941009,0xa7ce5e03,0x95cba111 + DD 0xb00009c4,0x6f3d4f7f,0x8ff28b5f,0xb8396c27,0x1c97975d,0xb1a9ae43,0xe5d9fed5,0x9d7ba8af,0x34f485b6,0x338cf09f,0x64122516,0xbc0ddacc,0x05d471fe,0xa450da12,0x628dd8c9,0x4c3a6250 + DD 0xd1295837,0x69c7d103,0x3807eb2f,0xa2893e50,0xbdb41491,0xd6e1e1de,0x5e138235,0xc630745b,0x48661ae1,0xc892109e,0xea2b2674,0x8d17e7eb,0xc328d6b5,0x00ec0f87,0xf079ff9e,0x6d858645 + DD 0x19115ead,0x6cdf243e,0x4bac4fcf,0x1ce1393e,0x9c29f25b,0x2c960ed0,0x9d388a05,0x59be4d8e,0xd0def72b,0x0d46e06c,0xe0342748,0xb923db5d,0x936d4a3d,0xf7d3aacd,0x0b0b099e,0x558519cc + DD 0x827097ef,0x3ea8ebf8,0xd054f55d,0x259353db,0x6d2ed089,0x84c89abc,0x8e096a7c,0x5c548b69,0x994b995d,0xd587f616,0xa5845601,0x4d1531f6,0x451fd9f0,0x792ab31e,0x65adf6ca,0xc8b57bb2 + DD 0x1cd5ad73,0x68440fcb,0x6144da4f,0xb9c860e6,0x8462beb8,0x2ab286aa,0xef46797f,0xcc6b8fff,0x20c8a471,0xac820da4,0x77ff7faf,0x69ae05a1,0xbfb5da77,0xb9163f39,0x2c73ab7a,0xbd03e590 + DD 0xb2940d9e,0x7e862b5e,0x4b9af564,0x3c663d86,0xbde3033d,0xd8309031,0xd42c5bc6,0x298231b2,0x552ad093,0x42090d2c,0xff854695,0xa4799d1c,0xd31f0d00,0x0a88b5d6,0xa2f26b46,0xf8b40825 + DD 0xf1bd7218,0xec29b1ed,0x4b24c86e,0xd491c53b,0x3395ea65,0xd2fe588f,0x4456ef15,0x6f3764f7,0xcdc34800,0xdb43116d,0xc1e33955,0xcdbcd456,0x74ab286b,0xefdb5540,0xd18c5d7c,0x948c7a51 + DD 0x7378058e,0xeb81aa37,0x04411154,0x41c746a1,0xfb828ac7,0xa10c73bc,0x9d972b29,0x6439be91,0x43a2fbad,0x4bf3b4b0,0x82b5e840,0x39e6dadf,0x6397bd4c,0x4f716408,0x7f1eeccb,0x0f7de568 + DD 0xd2ffbfc1,0x5865c5a1,0x4ccb6451,0xf74211fa,0xc0b32558,0x66368a88,0x9ad7812e,0x5b539dc2,0x2f3af6f6,0x579483d0,0x99934ece,0x52132078,0xdcc9e983,0x50b9650f,0xaee42b8a,0xca989ec9 + DD 0xd6f62f99,0x6a44c829,0x4c2a7c0c,0x8f06a309,0x98a0cb0a,0x4ea2b3a0,0xbeee8364,0x5c547b70,0x682afe11,0x461d40e1,0x7b41c0a8,0x9e0fc77a,0xe20d5d36,0x79e4aefd,0x32dd9f63,0x2916e520 + DD 0x3f883faf,0xf59e52e8,0x2b868d35,0x396f9639,0x4ca19881,0xc902a9df,0xdb2401a6,0x0fc96822,0x66f1c68d,0x41237587,0xfb476c0d,0x10fc6de3,0x841f5d90,0xf8b6b579,0xfa24f44a,0x2ba8446c + DD 0xef4a9975,0xa237b920,0x2330435f,0x60bb6004,0xcfb7e7b5,0xd6f4ab5a,0x83435391,0xb2ac5097,0xb0d1ea67,0xf036ee2f,0x74c56230,0xae779a6a,0xab838ae6,0x59bff8c8,0x9b38e6f0,0xcd83ca99 + DD 0xe33deed3,0xbb27bef5,0x001892a8,0xe6356f6f,0x7adfbd3e,0xbf3be6cc,0x33d1ac9d,0xaecbc81c,0xe6e861dc,0xe4feb909,0x53f5f801,0x90a247a4,0x27346e57,0x01c50acb,0x461acc1b,0xce29242e + DD 0x2f998a91,0x04dd214a,0xd4baf27b,0x271ee9b1,0xe8c26722,0x7e3027d1,0x1820dce5,0x21d1645c,0x7501779c,0x086f242c,0xfa0e8009,0xf0061407,0x60187129,0xf23ce477,0x0fde9bd0,0x05bbdedb + DD 0x25d98473,0x682f4832,0x5c658427,0xf207fe85,0x4166ffa1,0xb6fdd7ba,0x9eed799d,0x0c314056,0x4107e28f,0x0db8048f,0x41216840,0x74ed3871,0x56a3c06e,0x74489f8f,0x12777134,0x1e1c005b + DD 0xf37ec3c3,0xdb332a73,0xdd59eba0,0xc65259bd,0xdb4d3257,0x2291709c,0xbd389390,0x9a793b25,0xe43756f0,0xf39fe34b,0x9afb56c9,0x2f76bdce,0x61208b27,0x9f37867a,0x089972c3,0xea1d4307 + DD 0x8bdf623a,0x8c595330,0x8441fb7d,0x5f5accda,0x32ddfd95,0xfafa9418,0x0fde9be7,0x6ad40c5a,0xaeca8709,0x43faba89,0x2c248a9d,0xc64a7cf1,0x72637a76,0x16620252,0x22b8d1bb,0xaee1c791 + DD 0x21a843b2,0xf0f798fd,0x8d005cb1,0x56e4ed4d,0x1f0d8abe,0x355f7780,0x34522326,0x197b04cf,0xfd42c13f,0x41f9b31f,0xb40f933d,0x5ef7feb2,0x5d60bad4,0x27326f42,0x8c92cf89,0x027ecdb2 + DD 0x4e3352fe,0x04aae4d1,0x73591b90,0x08414d2f,0xb7da7d60,0x5ed6124e,0x4d13d4ec,0xb985b931,0x96bf36f9,0xa592d3ab,0xbbdf51df,0x012dbed5,0xdf6c177d,0xa57963c0,0x87ca29cf,0x010ec869 + DD 0xbf926dff,0xba1700f6,0xf4bf6bc2,0x7c9fdbd1,0x64da11f5,0xdc18dc8f,0xd938ae75,0xa6074b7a,0xe84f44a4,0x14270066,0xd27b954e,0x99998d38,0xb4f38e9a,0xc1be8ab2,0x15c01016,0x8bb55bbf + DD 0x0ea2ab30,0xf73472b4,0xf73d68dd,0xd365a340,0x19c2e1eb,0xc01a7168,0x34061719,0x32f49e37,0x01d8b4d6,0xb73c57f1,0x26b47700,0x03c8423c,0xa4d8826a,0x321d0bc8,0x4bc0e638,0x6004213c + DD 0xc1c06681,0xf78c64a1,0xef018e50,0x16e0a16f,0xdb42b2b3,0x31cbdf91,0xe0d36f58,0xf8f4ffce,0x4cc5e3e0,0xcdcc71cd,0xa129e3e0,0xd55c7cfa,0x0fb2cbf1,0xccdb6ba0,0xc4bce3cb,0x6aba0005 + DD 0xd232cfc4,0x501cdb30,0xd58a3cef,0x9ddcf12e,0x87e09149,0x02d2cf9c,0x2c976257,0xdc5d7ec7,0x0b50d7dd,0x6447986e,0x807f112a,0x88fdbaf7,0xb00ae9f6,0x58c9822a,0x6d3d27e0,0x6abfb950 + DD 0x8a429f4f,0xd0a74487,0xdb516609,0x0649712b,0xe769b5df,0xb826ba57,0x1fc7aaf2,0x82335df2,0x5c93d995,0x2389f067,0x68677be6,0x59ac367a,0x21d9951b,0xa77985ff,0x85011cce,0x038956fb + DD 0xbb734e37,0x608e48cb,0x2be5b26f,0xc08c0bf2,0xf9b1a0d9,0x17bbdd3b,0x10483319,0xeac7d898,0xbc1a6dea,0xc95c4baf,0x172aafdb,0xfdd0e2bf,0x8235c41a,0x40373cbc,0xfb6f41d5,0x14303f21 + DD 0x0408f237,0xba063621,0xecd2d1ed,0xcad3b09a,0x52abb6a2,0x4667855a,0xaa8b417b,0xba9157dc,0x4f013efb,0xfe7f3507,0xaa38c4a2,0x1b112c4b,0x9ba64345,0xa1406a60,0x6993c80b,0xe53cba33 + DD 0xded40d23,0x45466063,0x54908e25,0x3d5f1f4d,0x403c3c31,0x9ebefe62,0x0672a624,0x274ea0b5,0x451d1b71,0xff818d99,0x8f79cf79,0x80e82643,0x73ce37f5,0xa165df13,0xfe3a21fd,0xa744ef4f + DD 0xcf551396,0x73f1e7f5,0x868c676b,0xc616898e,0x8c442c36,0x671c28c7,0x5e0a317d,0xcfe5e558,0x7051f476,0x1242d818,0x14f03442,0x56fad2a6,0x0a44d0f6,0x262068bc,0xce6edf4e,0xdfa2cd6e + DD 0xd15d1517,0x0f43813a,0x377d44f5,0x61214cb2,0xc639b35f,0xd399aa29,0x54c51c19,0x42136d71,0x08417221,0x9774711b,0x52545a57,0x0a5546b3,0x1150582d,0x80624c41,0xfbc555bc,0x9ec5c418 + DD 0x771849f1,0x2c87dcad,0x01d7bf6f,0xb0c932c5,0x89116eb2,0x6aa5cd3e,0x51ca7bd3,0xd378c25a,0x9e6e3e31,0xc612a0da,0xb68ad5d0,0x0417a54d,0x22c6edb8,0x00451e4a,0xb42827ce,0x9fbfe019 + DD 0xba9384a2,0x2fa92505,0x64ad69c1,0x21b8596e,0x983b35a6,0x8f4fcc49,0x72754672,0xde093760,0xf7bffe6d,0x2f14ccc8,0x5d94263d,0x27566bff,0x2df3ec30,0xb5b4e9c6,0x3e6ea6ba,0x94f1d7d5 + DD 0xaaca5e9b,0x97b7851a,0x56713b97,0x518aa521,0x150a61f6,0x3357e8c7,0xec2c2b69,0x7842e7e2,0x6868a548,0x8dffaf65,0xe068fc81,0xd963bd82,0x65917733,0x64da5c8b,0x7b247328,0x927090ff + DD 0xd298c241,0x214bc9a7,0x56807cfd,0xe3b697ba,0x4564eadb,0xef1c7802,0xb48149c5,0xdde8cdcf,0x5a4d2604,0x946bf0a7,0x6c1538af,0x27154d7f,0xde5b1fcc,0x95cc9230,0x66864f82,0xd88519e9 + DD 0x7cb1282c,0xb828dd1a,0xbe46973a,0xa08d7626,0xe708d6b2,0x6baf8d40,0x4daeb3f3,0x72571fa1,0xf22dfd98,0x85b1732f,0x0087108d,0x87ab01a7,0x5988207a,0xaaaafea8,0x69f00755,0xccc832f8 + DD 0x36ff3bf0,0x964d950e,0xf0b34638,0x8ad20f6f,0xb5d7585f,0x4d9177b3,0xef3f019f,0xcf839760,0x8288c545,0x582fc5b3,0x13116bd1,0x2f8e4e9b,0x332120ef,0xf91e1b2f,0x2a17dd23,0xcf568724 + DD 0xca8d9d1a,0x488f1185,0xd987ded2,0xadf2c77d,0x60c46124,0x5f3039f0,0x71e095f4,0xe5d70b75,0x6260e70f,0x82d58650,0xf750d105,0x39d75ea7,0x75bac364,0x8cf3d0b1,0x21d01329,0xf3a7564d + DD 0x2f52d2a7,0x182f04cd,0xe2df565a,0x4fde149a,0xa79fb2f7,0xb80c5eec,0x22ddc897,0xab491d7b,0xc6312c7f,0x99d76c18,0x6aa41a57,0xca0d5f3d,0xd15363a0,0x71207325,0xbeb252c2,0xe82aa265 + DD 0xec3128c2,0x94ab4700,0x8e383f49,0x6c76d862,0xc03024eb,0xdc36b150,0x53daac69,0xfb439477,0x8dc79623,0xfc68764a,0xb440fbb2,0x5b86995d,0xccc5ee0d,0xd66879bf,0x95aa8bd3,0x05228942 + DD 0x1e6a75c1,0xb51a40a5,0x0ea7d817,0x24327c76,0x07774597,0x06630182,0x97fa7164,0xd6fdbec3,0x13c90f48,0x20c99dfb,0x686ef263,0xd6ac5273,0xfef64eeb,0xc6a50bdc,0x86fdfc32,0xcd87b281 + DD 0x3fcd3efc,0xb24aa43e,0xb8088e9a,0xdd26c034,0xbd3d46ea,0xa5ef4dc9,0x8a4c6a6f,0xa2f99d58,0x2f1da46c,0xddabd355,0x1afacdd1,0x72c3f8ce,0x92d40578,0xd90c4eee,0xca623b94,0xd28bb41f + DD 0x745edc11,0x50fc0711,0x3dc87558,0x9dd9ad7d,0xb49d1e64,0xce6931fb,0xc98bd0f9,0x6c77a0a2,0x6baf7cb1,0x62b9a629,0xccf72d22,0xcf065f91,0x79639071,0x7203cce9,0xf9cb732f,0x09ae4885 + DD 0xee8314f3,0x5e7c3bec,0xdbea298f,0x1c068aed,0x7c80acec,0x08d381f1,0xe330495b,0x03b56be8,0x9222882d,0xaeffb8f2,0xc4af8bf7,0x95ff38f6,0x1fc57d8c,0x50e32d35,0x17b444f0,0x6635be52 + DD 0xa5177900,0x04d15276,0xf6858752,0x4e1dbb47,0xc615796c,0x5b475622,0x691867bf,0xa6fa0387,0x2844c6d0,0xed7f5d56,0x03a2477d,0xc633cf9b,0x2d3721d6,0xf6be5c40,0xe9fd68e6,0xaf312eb7 + DD 0xe7417ce1,0x242792d2,0x970ee7f5,0xff42bc71,0x5c67a41e,0x1ff4dc6d,0x20882a58,0x77709b7b,0xbe217f2c,0x3554731d,0x5bb72177,0x2af2a8cd,0x591dd059,0x58eee769,0x4bba6477,0xbb2930c9 + DD 0x7d930cfc,0x863ee047,0x396fd1f4,0x4c262ad1,0x039af7e1,0xf4765bc8,0x5ba104f6,0x2519834b,0xd105f961,0x7cd61b4c,0xd63bca54,0xa5415da5,0x88a1f17c,0x778280a0,0x2329512c,0xc4968949 + DD 0xcecdaa7a,0x174a9126,0x0b13247b,0xfc8c7e0e,0x3484c1c4,0x29c110d2,0x831dfc3b,0xf8eb8757,0xc0067452,0x022f0212,0x7b9b926c,0x3f6f69ee,0xef42daf4,0x09032da0,0x83f80de4,0x79f00ade + DD 0x81236c97,0x6210db71,0x3ee0781f,0x74f7685b,0xa3e41372,0x4df7da7b,0xb1a1553e,0x2aae38b1,0xf6dd9d1b,0x1688e222,0x5b8b6487,0x57695448,0x4b2edeaa,0x478d2127,0x1e85956a,0xb2818fa5 + DD 0xf176f2c0,0x1e6addda,0xe2572658,0x01ca4604,0x85342ffb,0x0a404ded,0x441838d6,0x8cf60f96,0xc9071c4a,0x9bbc691c,0x34442803,0xfd588744,0x809c0d81,0x97101c85,0x8c456f7f,0xa7fb754c + DD 0xd51805e1,0xc95f3c5c,0xb299dca8,0xab4ccd39,0x47eaf500,0x3e03d20b,0xd7b80893,0xfa3165c1,0xe160e552,0x005e8b54,0x9019d11f,0xdc4972ba,0x0c9a4a7a,0x21a6972e,0x37840fd7,0xa52c258f + DD 0xc1e99d81,0xf8559ff4,0xa3c617c0,0x08e1a7d6,0x248c6ba7,0xb398fd43,0xd1283794,0x6ffedd91,0xd629d208,0x8a6a59d2,0x3490530e,0xa9d141d5,0x38505989,0x42f6fc18,0x479d94ee,0x09bf250d + DD 0xb3822790,0x223ad3b1,0x93b8971c,0x6c5926c0,0x75f7fa62,0x609efc7e,0x1ec2d989,0x45d66a6d,0x987d2792,0x4422d663,0x3eb31d2b,0x4a73caad,0xa32cb9e6,0xf06c2ac1,0x91aeba84,0xd9445c5f + DD 0xaf71013f,0x6af7a1d5,0x0bedc946,0xe68216e5,0xd27370a0,0xf4cba30b,0x870421cc,0x7981afbf,0x9449f0e1,0x02496a67,0x0a47edae,0x86cfc4be,0xb1feca22,0x3073c936,0x03f8f8fb,0xf5694612 + DD 0x901515ea,0xd063b723,0x749cf038,0x4c6c77a5,0xab9e5059,0x6361e360,0xa76a37c0,0x596cf171,0x6530ae7a,0x800f53fa,0x0792a7a6,0x0f5e631e,0xefdb81c9,0x5cc29c24,0x3f9c40ba,0xa269e868 + DD 0x2cb7191e,0xec14f9e1,0xe5b08ea6,0x78ea1bd8,0x46332bb9,0x3c65aa9b,0xbf80ce25,0x84cc22b3,0xd49d5bf1,0x0098e9e9,0x19087da4,0xcd4ec1c6,0xaef6e357,0x3c9d07c5,0x9f8f64b8,0x839a0268 + DD 0xc6d8607f,0xc5e9eb62,0x6aa995e4,0x759689f5,0xbbb48317,0x70464669,0xe402417d,0x921474bf,0x2a354c8c,0xcabe135b,0x812fa4b5,0xd51e52d2,0x53311fe8,0xec741096,0xb864514b,0x4f774535 + DD 0x5bde48f8,0xbcadd671,0x2189bc7d,0xc9703873,0xc709ee8a,0x5d45299e,0x845aaff8,0xd1287ee2,0xdb1dbf1f,0x7d1f8874,0x990c88d6,0xea46588b,0x84368313,0x60ba649a,0x60d543ae,0xd5fdcbce + DD 0x810d5ab0,0x90b46d43,0x04d7e5cc,0x6739d8f9,0x0d337c33,0x021c1a58,0x68e67c40,0x00a61162,0x379f0a1f,0x95ef413b,0xe9e2ab95,0xfe126605,0x2f5f199c,0x67578b85,0x2cb84913,0xf5c00329 + DD 0x37577dd8,0xf7956430,0x29c5fe88,0x83b82af4,0xcdbdc132,0x9c1bea26,0x9c04339e,0x589fa086,0xb13799df,0x033e9538,0xd295d034,0x85fa8b21,0xbd9ddcca,0xdf17f73f,0xddb66334,0xf32bd122 + DD 0x858b044c,0x55ef88a7,0x5aa9e397,0x1f0d69c2,0x40d85559,0x55fd9cc3,0x7785ddb2,0xc774df72,0xd3bd2e1c,0x5dcce9f6,0xa85dfed0,0xeb30da20,0xd3ed09c4,0x5ed7f5bb,0x82a9c1bd,0x7d42a35c + DD 0x9890272d,0xcf3de995,0x3e713a10,0x75f3432a,0xe28227b8,0x5e13479f,0xfefacdc8,0xb8561ea9,0x8332aafd,0xa6a297a0,0x73809b62,0x9b0d8bb5,0x0c63036f,0xd2fa1cfd,0xbd64bda8,0x7a16eb55 + DD 0x78e62ddc,0x3f5cf5f6,0x07fd752b,0x2267c454,0x5e437bbe,0x5e361b6b,0x8354e075,0x95c59501,0xf2b254d9,0xec725f85,0x2cb52b4e,0x844b617d,0xcf425fb5,0xed8554f5,0x2af9f312,0xab67703e + DD 0x3cf48283,0x4cc34ec1,0x9c8a705e,0xb09daa25,0x5b7d4f84,0xd1e9d0d0,0xdb38929d,0x4df6ef64,0xaa21ba46,0xe16b0763,0xa293f8fb,0xc6b1d178,0xd520aabf,0x0ff5b602,0xc339397a,0x94d671bd + DD 0x4f5792fa,0x7c7d98cf,0x11215261,0x7c5e0d67,0xa7c5a6d4,0x9b19a631,0x7a45274d,0xc8511a62,0xa5a60d99,0x0c16621c,0xcf5e48cb,0xf7fbab88,0xf7ddee08,0xab1e6ca2,0xe7867f3c,0x83bd08ce + DD 0x2ac13e27,0xf7e48e8a,0x4eb1a9f5,0x4494f6df,0x981f0a62,0xedbf84eb,0x536438f0,0x49badc32,0x004f7571,0x50bea541,0xdf1c94ee,0xbac67d10,0xb727bc31,0x253d73a1,0x30686e28,0xb3d01cf2 + DD 0x55fd0b8b,0x51b77b1b,0xfeec3173,0xa099d183,0x670e72b7,0x202b1fb7,0xa8e1635f,0xadc88b33,0xf989d905,0x34e8216a,0x29b58d01,0xc2e68d20,0x6fe55a93,0x11f81c92,0x8f296f40,0x15f1462a + DD 0xea3d62f2,0x1915d375,0x01c8977d,0xa17765a3,0xe47b26f6,0x7559710a,0x535077a5,0xe0bd29c8,0x08d84858,0x615f976d,0x69ced5c1,0x370dfe85,0xa734fa56,0xbbc7503c,0x91ac4574,0xfbb9f1ec + DD 0x060dd7ef,0x95d7ec53,0x6e657979,0xeef2dacd,0xe2a08235,0x54511af3,0x1f4aea3d,0x1e324aa4,0xe6e67671,0x550e7e71,0xbf52faf7,0xbccd5190,0x223cc62a,0xf880d316,0x2b32eb5d,0x0d402c7e + DD 0x306a5a3b,0xa40bc039,0x96783a1b,0x4e0a41fd,0x0253cdd4,0xa1e8d39a,0xc7388638,0x6480be26,0x2285f382,0xee365e1d,0xec0b5c36,0x188d8d8f,0x1f0f4d82,0x34ef1a48,0xa487d29a,0x1a8f43e1 + DD 0x77aefb3a,0x8168226d,0x1e72c253,0xf69a751e,0xe9594df1,0x8e04359a,0xd14c0467,0x475ffd7d,0x3844e95c,0xb5a2c2b1,0xdd12ef94,0x85caf647,0xf1063d00,0x1ecd2a9f,0x23843311,0x1dd2e229 + DD 0x73d17244,0x38f0e09d,0x8fc653f1,0x3ede7746,0xdc20e21c,0xae4459f5,0x6a8599ea,0x00db2ffa,0x30cfd905,0x11682c39,0xa5c112a6,0x4934d074,0x568bfe95,0xbdf063c5,0x016c441a,0x779a440a + DD 0x97d6fbdc,0x0c23f218,0xe0776aac,0xd3a5cd87,0xd712e8db,0xcee37f72,0x26f74e8d,0xfb28c70d,0xb61301a0,0xffe0c728,0xd3724354,0xa6282168,0x768ffedc,0x7ff4cb00,0x03b02de9,0xc51b3088 + DD 0x3902dda5,0xa5a8147c,0xfe6973b4,0x35d2f706,0xc257457e,0x5ac2efcf,0x8700611b,0x933f48d4,0x4912beb2,0xc365af88,0x162edf94,0x7f5a4de6,0x0c32f34b,0xc646ba7c,0xb2091074,0x632c6af3 + DD 0x753e43a9,0x58d4f2e3,0x24d4e23f,0x70e1d217,0xafede6a6,0xb24bf729,0x710c8b60,0x7f4a94d8,0x8d4faa6a,0xaad90a96,0xb066b690,0xd9ed0b32,0x78b6dbfd,0x52fcd37b,0x8bd2b431,0x0b64615e + DD 0xcfb9fad5,0x228e2048,0x240b76bd,0xbeaa386d,0x90dad7bc,0x2d6681c8,0x06d38f5e,0x3e553fc3,0x9d5f9750,0xf27cdb9b,0xd28c5b0e,0x3e85c52a,0x5247c39b,0x190795af,0xbddd6828,0x547831eb + DD 0x4a82f424,0xf327a227,0x7e47f89d,0x36919c78,0x43c7392c,0xe4783919,0x2316fefe,0xf101b9aa,0x1c5009d2,0xbcdc9e9c,0x9cd18345,0xfb55ea13,0xa3ce77c7,0xf5b5e231,0xd2f2cb3d,0xde6b4527 + DD 0x9bb26f5f,0x10f6a333,0x044d85b6,0x1e85db8e,0x94197e54,0xc3697a08,0xa7cb4ea8,0x65e18cc0,0xa471fe6e,0xa38c4f50,0x2f13439c,0xf031747a,0xc007318b,0x53c4a6ba,0x1deccb3d,0xa8da3ee5 + DD 0x558216b1,0x0555b31c,0x2f79e6c2,0x90c7810c,0xfe8eed3c,0x9b669f4d,0xe0fac126,0x70398ec8,0xf701b235,0xa96a449e,0xeb94f395,0x0ceecdb3,0xd0cb7431,0x285fc368,0x16a18c64,0x0d37bb52 + DD 0xb880d2dd,0x05110d38,0x65930d57,0xa60f177b,0xf36235f5,0x7da34a67,0x183816b9,0x47f5e17c,0xdb394af4,0xc7664b57,0x7036f789,0x39ba215d,0x2f27b472,0x46d2ca0e,0xf73a84b7,0xc42647ee + DD 0x64488f1d,0x44bc7545,0xf4cf85d5,0xaa922708,0x53e4df63,0x721a01d5,0x5db46ced,0x649c0c51,0x3cffcb6c,0x6bf0d64e,0x50f71d96,0xe3bf93fe,0xbcc194a0,0x75044558,0x6afdc554,0x16ae3372 + DD 0x5ca48f3f,0xbfc01adf,0xe22a9b84,0x64352f06,0xc1099e4a,0xcee54da1,0xfa1b89c0,0xbbda54e8,0x6f6e55fb,0x166a3df5,0x20176f88,0x1ca44a24,0xdfb7b5ff,0x936afd88,0x8611d4a0,0xe34c2437 + DD 0x86142103,0x7effbb75,0x1f34fc4d,0x6704ba1b,0x10c1b122,0x7c2a468f,0x8c6aace9,0x36b3a610,0x75a0d050,0xabfcc0a7,0x3ce33e32,0x066f9197,0x29fe09be,0xce905ef4,0xa8376351,0x89ee25ba + DD 0xfd29dc76,0x2a3ede22,0x36f17260,0x7fd32ed9,0x284b4126,0x0cadcf68,0xa7951fc8,0x63422f08,0x0807e199,0x562b24f4,0x22ad4490,0xfe9ce5d1,0x0db2b1b4,0xc2f51b10,0xe4541d0d,0xeb3613ff + DD 0x2680813b,0xbd2c4a05,0x561b08d6,0x527aa55d,0xa7205558,0xa9f8a40e,0x243d0bec,0xe3eea56f,0xa0ff58b3,0x7b853817,0x1a69e627,0xb67d3f65,0xa869b5d6,0x0b76bbb9,0x546723ed,0xa3afeb82 + DD 0x3e554892,0x5f24416d,0x430e2a45,0x8413b53d,0x9032a2a0,0x99c56aee,0xeec367b1,0x09432bf6,0xdaf0ecc1,0x552850c6,0x5bc92048,0x49ebce55,0x54811307,0xdfb66ba6,0x6f298597,0x1b84f797 + DD 0x8d1d7a0d,0x79590481,0x3a6fa556,0xd9fabe03,0xba9e5d35,0xa40f9c59,0xf6247577,0xcb1771c1,0xe9a6312b,0x542a47ca,0x552dd8c5,0xa34b3560,0x0d794716,0xfdf94de0,0x9c623094,0xd46124a9 + DD 0x68afe8b4,0x56b7435d,0x6c0d8ea1,0x27f20540,0x73186898,0x12b77e14,0x7479490f,0xdbc3dd46,0xc03b0c05,0x951a9842,0x7921bc96,0x8b1b3bb3,0x2b202e0a,0xa573b346,0x47254d56,0x77e4665d + DD 0xd23e3984,0x08b70dfc,0xebd14236,0xab86e8bc,0x57114ba7,0xaa3e07f8,0xab0ef4f2,0x5ac71689,0x0139d9af,0x88fca384,0x76644af0,0x72733f88,0x65d74f4a,0xf122f72a,0xa5626c7a,0x13931577 + DD 0x70f8d5a4,0xd5b5d9eb,0xd7bbb228,0x375adde7,0x0c1c0b32,0x31e88b86,0x173edbaa,0xd1f568c4,0x5459df02,0x1592fc83,0x0fcd9a7e,0x2beac0fb,0x1b473b0a,0xb0a6fdb8,0x0fe8fc48,0xe3224c6f + DD 0xe87edf5b,0x680bd00e,0x20e77cf5,0x30385f02,0x4d42d1b2,0xe9ab98c0,0xd3816d77,0x72d191d2,0x0917d9e5,0x1564daca,0x1f8fed7f,0x394eab59,0x7fbb3896,0xa209aa8d,0xbe6ac98e,0x5564f3b9 + DD 0xd73654ef,0xead21d05,0x13d78d74,0x68d1a9c4,0x6d4973a0,0x61e01708,0x46e6d32a,0x83da3500,0x68ae0118,0x6a3dfca4,0xd02da069,0xa1b9a4c9,0xebab8302,0x0b2ff9c7,0x944ba436,0x98af07c3 + DD 0x995f0f9f,0x85997326,0x71b58bc6,0x467fade0,0xbd625a2b,0x47e4495a,0x33c3b8cd,0xfdd2d01d,0xc693f9fa,0x2c38ae28,0x348f7999,0x48622329,0x2161f583,0x97bf738e,0x565e8cc9,0x15ee2fa7 + DD 0x5777e189,0xa1a5c845,0x456f2829,0xcc10bee0,0xda762bd5,0x8ad95c56,0xe9d91da8,0x152e2214,0x7cb23c74,0x975b0e72,0xa90c66df,0xfd5d7670,0x225ffc53,0xb5b5b8ad,0xfaded2ae,0xab6dff73 + DD 0x6f4cbe9d,0xebd56781,0x6a574bd7,0x0ed8b249,0x81a881fa,0x41c246fe,0xc3db9c70,0x91564805,0x5b862809,0xd7c12b08,0x55858d7b,0x1facd1f1,0xaf09e92a,0x7693747c,0x189a425f,0x3b69dcba + DD 0x967365ef,0x0be28e9f,0xe801f5c9,0x57300eb2,0xd583352f,0x93b8ac6a,0xcd05b2b7,0xa2cf1f89,0x4dcc40cc,0x7c0c9b74,0xada523fb,0xfee38c45,0x1099cc4d,0xb49a4dec,0x69f069c6,0x325c377f + DD 0x476cc9ff,0xe12458ce,0xc6d4cb63,0x580e0b6c,0x9072289b,0xd561c8b7,0xa619e6da,0x0377f264,0x88e591a5,0x26685362,0x7523ca2b,0xa453a7bd,0xc1df4533,0x8a9536d2,0xbe972f79,0xc8e50f2f + DD 0x6d3549cf,0xd433e50f,0xfacd665e,0x6f33696f,0xce11fcb4,0x695bfdac,0xaf7c9860,0x810ee252,0x7159bb2c,0x65450fe1,0x758b357b,0xf7dfbebe,0xd69fea72,0x2b057e74,0x92731745,0xd485717a + DD 0xee36860c,0x896c42e8,0x4113c22d,0xdaf04dfd,0x44104213,0x1adbb7b7,0x1fd394ea,0xe5fd5fa1,0x1a4e0551,0x68235d94,0x18d10151,0x6772cfbe,0x09984523,0x276071e3,0x5a56ba98,0xe4e879de + DD 0x285b9491,0xaaafafb0,0x1e4c705e,0x01a0be88,0x2ad9caab,0xff1d4f5d,0xc37a233f,0x6e349a4a,0x4a1c6a16,0xcf1c1246,0x29383260,0xd99e6b66,0x5f6d5471,0xea3d4366,0xff8cc89b,0x36974d04 + DD 0xcfe89d80,0xc26c49a1,0xda9c8371,0xb42c026d,0xdad066d2,0xca6c013a,0x56a4f3ee,0xfb8f7228,0xd850935b,0x08b579ec,0xd631e1b3,0x34c1a74c,0xac198534,0xcb5fe596,0xe1f24f25,0x39ff21f6 + DD 0x8f929057,0x27f29e14,0xc0c853df,0x7a64ae06,0x58e9c5ce,0x256cd183,0xded092a5,0x9d9cce82,0x6e93b7c7,0xcc6e5979,0x31bb9e27,0xe1e47092,0xaa9e29a0,0xb70b3083,0x3785e644,0xbf181a75 + DD 0x8ead09f7,0xf53f2c65,0x9780d14d,0x1335e1d5,0xcd1b66bc,0x69cc20e0,0xbbe0bfc8,0x9b670a37,0x28efbeed,0xce53dc81,0x8326a6e5,0x0c74e77c,0xb88e9a63,0x3604e0d2,0x13dc2248,0xbab38fca + DD 0x5c0a3f1e,0x8ed6e8c8,0x7c87c37f,0xbcad2492,0x9ee3b78d,0xfdfb62bb,0xcbceba46,0xeba8e477,0xeeaede4b,0x37d38cb0,0x7976deb6,0x0bc498e8,0x6b6147fb,0xb2944c04,0xf71f9609,0x8b123f35 + DD 0xde79dc24,0xa155dcc7,0x558f69cd,0xf1168a32,0x0d1850df,0xbac21595,0xb204c848,0x15c8295b,0x7d8184ff,0xf661aa36,0x30447bdb,0xc396228e,0xbde4a59e,0x11cd5143,0x6beab5e6,0xe3a26e3b + DD 0x1402b9d0,0xd3b3a13f,0x2c7bc863,0x573441c3,0x578c3e6e,0x4b301ec4,0x0adaf57e,0xc26fc9c4,0x7493cea3,0x96e71bfd,0x1af81456,0xd05d4b3f,0x6a8c608f,0xdaca2a8a,0x0725b276,0x53ef07f6 + DD 0x7824fc56,0x07a5fbd2,0x13289077,0x34675218,0xe0c48349,0x5bf69fd5,0xb6aa7875,0xa613ddd3,0x5450d866,0x7f78c19c,0x8f84a481,0x46f4409c,0x90fce239,0x9f1d1928,0xb2ce44b9,0x016c4168 + DD 0xc7435978,0xbae023f0,0x20e30e19,0xb152c888,0xe3fa6faf,0x9c241645,0x84823e60,0x735d95c1,0x03955317,0x03197573,0xf03b4995,0x0b4b02a9,0x70274600,0x076bf559,0xaaf57508,0x32c5cc53 + DD 0x60624129,0xe8af6d1f,0x9a5e2b5e,0xb7bc5d64,0x5f082d72,0x3814b048,0xce19677a,0x76f267f2,0xb36eed93,0x626c630f,0x3bf56803,0x55230cd7,0xce2736a0,0x78837949,0xaa6c55f1,0x0d792d60 + DD 0xd5c7c5d2,0x0318dbfd,0x072b342d,0xb38f8da7,0x7b8de38a,0x3569bddc,0xa1c94842,0xf25b5887,0x2946ad60,0xb2d5b284,0xe9d1707e,0x854f29ad,0x2c6a4509,0xaa5159dc,0x57189837,0x899f94c0 + DD 0xf4a55b03,0xcf6adc51,0x35e3b2d5,0x261762de,0x04827b51,0x4cc43012,0xc6021442,0xcd22a113,0x247c9569,0xce2fd61a,0xd152beca,0x59a50973,0x63a716d4,0x6c835a11,0x187dedcf,0xc26455ed + DD 0x49ce89e7,0x27f536e0,0xcc890cb5,0x18908539,0xd83c2aa1,0x308909ab,0x1ab73bd3,0xecd3142b,0xb3f5ab84,0x6a85bf59,0xf2bea4c6,0x3c320a68,0x6da4541f,0xad8dc538,0xb7c41186,0xeaf34eb0 + DD 0x977c97c4,0x1c780129,0xc57eb9fa,0x5ff9beeb,0xc822c478,0xa24d0524,0x461cd415,0xfd8eec2a,0xf027458c,0xfbde194e,0x1d1be115,0xb4ff5319,0x4866d6f4,0x63f874d9,0xb21ad0c9,0x35c75015 + DD 0x46ac49d2,0xa6b5c9d6,0x83137aa9,0x42c77c0b,0x68225a38,0x24d000fc,0x2fe1e907,0x0f63cfc8,0xc6441f95,0x22d1b01b,0xec8e448f,0x7d38f719,0x787fb1ba,0x9b33fa5f,0x190158df,0x94dcfda1 + DD 0x5f6d4a09,0xc47cb339,0xee52b826,0x6b4f355c,0xf51b930a,0x3d100f5d,0x9f668f69,0xf4512fac,0x206c4c74,0x546781d5,0xcb4d2e48,0xd021d4d4,0xca085c2d,0x494a54c2,0x520850a8,0xf1dbaca4 + DD 0x490a1aca,0x63c79326,0x41526b02,0xcb64dd9c,0xa2979258,0xbb772591,0x48d97846,0x3f582970,0x7c213ba7,0xd66b70d1,0xe8a0ced4,0xc28febb5,0xc10338c1,0x6b911831,0xbf0126f3,0x0d54e389 + DD 0x4af206ee,0x7048d460,0x77e97cb9,0x786c88f6,0xac64802e,0xd4375ae1,0xd53ec11c,0x469bcfe1,0x47062230,0xfc9b340d,0xc5b4a3ac,0xe743bb57,0x59ef45ac,0xfe00b4aa,0x59edf188,0x29a4ef23 + DD 0xb483689b,0x40242efe,0x513ac262,0x2575d3f6,0x0ca6db72,0xf30037c8,0x98864be2,0xc9fcce82,0x0149362d,0x84a112ff,0x1c4ae971,0x95e57582,0x945cf86c,0x1fa4b1a8,0x0b024a2f,0x4525a734 + DD 0x8f338360,0xe76c8b62,0x28edf32b,0x483ff593,0x298b1aec,0x67e8e90a,0x736d9a21,0x9caab338,0x66892709,0x5c09d2fd,0xb55a1d41,0x2496b4dc,0xe24a4394,0x93f5fb1a,0x6fa8f6c1,0x08c75049 + DD 0xc905d85f,0xcaead1c2,0x0733ae57,0xe9d7f790,0xf07cdd94,0x24c9a65c,0xa4b55931,0x7389359c,0x367e45f7,0xf58709b7,0xcb7e7adc,0x1f203067,0xc7b72818,0x82444bff,0xbaac8033,0x07303b35 + DD 0xd13b7ea1,0x1e1ee4e4,0xe0e74180,0xe6489b24,0x7e70ef70,0xa5f2c610,0xbdd10894,0xa1655412,0x7af4194e,0x555ebefb,0x8e89bd9c,0x533c1c3c,0x89895856,0x735b9b57,0x567f5c15,0x15fb3cd2 + DD 0x526f09fd,0x057fed45,0x8128240a,0xe8a4f10c,0xff2bfd8d,0x9332efc4,0xbd35aa31,0x214e77a0,0x14faa40e,0x32896d73,0x01e5f186,0x767867ec,0x17a1813e,0xc9adf8f1,0x54741795,0xcb6cda78 + DD 0x349d51aa,0xb7521b6d,0xe3c7b8e9,0xf56b5a9e,0x32a096df,0xc6f1e5c9,0xa3635024,0x083667c4,0x18087f2f,0x365ea135,0xd136e45d,0xf1b8eaac,0x73aec989,0xc8a0e484,0x142c9259,0xd75a324b + DD 0x01dae185,0xb7b4d001,0x9b7a94bc,0x45434e0b,0xfbd8cb0b,0xf54339af,0xe98ef49e,0xdcc4569e,0x09a51299,0x7789318a,0xb2b025d8,0x81b4d206,0xfae85792,0xf64aa418,0xacd7baf7,0x3e50258f + DD 0x2996864b,0xdce84cdb,0x1f485fa4,0xa2e67089,0x534c6a5a,0xb28b2bb6,0xc94b9d39,0x31a7ec6b,0xd6bc20da,0x1d217766,0x86761190,0x4acdb5ec,0x73701063,0x68726328,0x2128c29b,0x4d24ee7c + DD 0xa19fd868,0xc072ebd3,0xdb8ddd3b,0x612e481c,0x1a64d852,0xb4e1d754,0xc4c6c4ab,0x00ef95ac,0xaa0a6c46,0x1536d2ed,0x43774790,0x61294086,0x343fda10,0x54af25e8,0xfd25d6f2,0x9ff9d98d + DD 0x468b8835,0x0746af7c,0x730ecea7,0x977a31cb,0xc2cf4a81,0xa5096b80,0x6458c37a,0xaa986833,0xa6bd9d34,0x6af29bf3,0x33c5d854,0x6a62fe9b,0xb7133b5e,0x50e6c304,0x7d6e6848,0x04b60159 + DD 0x5579bea4,0x4cd296df,0x5ceedaf1,0x10e35ac8,0xe3bcc5b1,0x04c4c5fd,0x89412cf9,0x95f9ee8a,0x82b6eb0f,0x2c9459ee,0x95c2aadd,0x2e845765,0xd327fcfe,0x774a84ae,0x0368d476,0xd8c93722 + DD 0xf83e8a3b,0x0dbd5748,0x8d2495f3,0xa579aa96,0xae496e9b,0x535996a0,0xb7f9bcc2,0x07afbfe9,0x5b7bd293,0x3ac1dc6d,0x7022323d,0x3b592cff,0x9c0a3e76,0xba0deb98,0x4b197acb,0x18e78e9f + DD 0x296c36ef,0x211cde10,0x82c4da77,0x7ee89672,0xa57836da,0xb617d270,0x9cb7560b,0xf0cd9c31,0xe455fe90,0x01fdcbf7,0x7e7334f3,0x3fb53cbb,0x4e7de4ec,0x781e2ea4,0x0b384fd0,0x8adab3ad + DD 0x53d64829,0x129eee2f,0xa261492b,0x7a471e17,0xe4cb4a2c,0xe4f9adb9,0x97ba2c2d,0x3d359f6f,0x0aacd697,0x346c6786,0x75c2f8a8,0x92b444c3,0xd85df44e,0xc79fa117,0x398ddf31,0x56782372 + DD 0xbbbab3b8,0x60e690f2,0x8b04816b,0x4851f8ae,0x9c92e4d2,0xc72046ab,0x7cf3136b,0x518c74a1,0xf9877d4c,0xff4eb50a,0xa919cabb,0x14578d90,0xac5eb2b6,0x8218f8c4,0x542016e4,0xa3ccc547 + DD 0x327f8349,0x025bf48e,0xf43cb641,0xf3e97346,0x500f1085,0xdc2bafdf,0x2f063055,0x57167876,0x411925a6,0x5bd914b9,0xa1123de5,0x7c078d48,0x182b165d,0xee6bf835,0xba519727,0xb11b5e5b + DD 0x1eea7b85,0xe33ea76c,0x92d4f85e,0x2352b461,0xafe115bb,0xf101d334,0x889175a3,0xfabc1294,0x5233f925,0x7f6bcdc0,0xe77fec55,0xe0a802db,0x8069b659,0xbdb47b75,0xf98fbd74,0x1c5e12de + DD 0x4b8457ee,0x869c58c6,0x4f7ea9f7,0xa5360f69,0xf460b38f,0xe576c09f,0x22b7fb36,0x6b70d548,0x3bfae315,0x3fd237f1,0xcbdff369,0x33797852,0x25b516f9,0x97df25f5,0xba38ad2d,0x46f388f2 + DD 0x89d8ddbb,0x656c4658,0x70f38ee8,0x8830b26e,0xde1212b0,0x4320fd5c,0xe4a2edb2,0xc34f30cf,0x56ab64b8,0xabb131a3,0xd99c5d26,0x7f77f0cc,0xbf981d94,0x66856a37,0x738bd76e,0x19e76d09 + DD 0x96238f39,0xe76c8ac3,0xa830b366,0xc0a482be,0x0b4eb499,0xb7b8eaff,0x4bfb4865,0x8ecd83bc,0xa2f3776f,0x971b2cb7,0xf4b88adf,0xb42176a4,0xbe1fa446,0xb9617df5,0xcd031bd2,0x8b32d508 + DD 0x53b618c0,0x1c6bd47d,0x6a227923,0xc424f46c,0xdd92d964,0x7303ffde,0x71b5abf2,0xe9712878,0xf815561d,0x8f48a632,0xd3c055d1,0x85f48ff5,0x7525684f,0x222a1427,0x67360cc3,0xd0d841a0 + DD 0x0b9267c6,0x4245a926,0xcf07f863,0xc78913f1,0x4d0d9e24,0xaa844c8e,0x3d5f9017,0xa42ad522,0xa2c989d5,0xbd371749,0xe1f5e78e,0x928292df,0x0a1ea6da,0x493b383e,0x13aee529,0x5136fd8d + DD 0xf2c34a99,0x860c44b1,0xbf5855ac,0x3b00aca4,0xfaaf37be,0xabf6aaa0,0x2a53ec08,0x65f43682,0xa11b12e1,0x1d9a5801,0xe20ed475,0x78a7ab2c,0x9a41e0d5,0x0de1067e,0x305023ea,0x30473f5f + DD 0x169c7d97,0xdd3ae09d,0xcfaef9cd,0x5cd5baa4,0x65a44803,0x5cd7440b,0x47f364de,0xdc13966a,0x2b8357c1,0x077b2be8,0xe9d57c2a,0x0cb1b4c5,0x05ff363e,0x7a4ceb32,0xca35a9ef,0xf310fa4d + DD 0xf97f68c6,0xdbb7b352,0x0b02cf58,0x0c773b50,0x3c1f96d9,0xea2e4821,0xeee01815,0xffb357b0,0xe0f28039,0xb9c924cd,0x46a3fbe4,0x0b36c95a,0x5e46db6c,0x1faaaea4,0x1928aaff,0xcae575c3 + DD 0xa70dab86,0x7f671302,0x71c58cfc,0xfcbd12a9,0xbee0cb92,0xcbef9acf,0xf8c1b583,0x573da0b9,0x0d41d550,0x4752fcfe,0x2155cffe,0xe7eec0e3,0x545ae248,0x0fc39fcb,0x8065f44e,0x522cb8d1 + DD 0x70cbb96c,0x263c962a,0xbcd124a9,0xe034362a,0x3c2ae58d,0xf120db28,0xfef6d507,0xb9a38d49,0x1ff140fd,0xb1fd2a82,0x20aee7e0,0xbd162f30,0xcb251949,0x4e17a5d4,0x4f7e1c3d,0x2aebcb83 + DD 0x937b0527,0x608eb25f,0xeb7d9997,0xf42e1e47,0xb8a53a29,0xeba699c4,0xe091b536,0x1f921c71,0x5b26bbd5,0xcce29e7b,0x3b61a680,0x7a8ef5ed,0xba1f1c7e,0xe5ef8043,0x18158dda,0x16ea8217 + DD 0x599ff0f9,0x01778a2b,0x8104fc6b,0x68a923d7,0xda694ff3,0x5bfa44df,0xf7667f12,0x4f7199db,0xe46f2a79,0xc06d8ff6,0xe9f8131d,0x08b5dead,0xabb4ce7c,0x02519a59,0xb42aec3e,0xc4f710bc + DD 0x78bde41a,0x3d77b057,0xb4186b5a,0x6474bf80,0x88c65741,0x048b3f67,0x03c7c154,0xc64519de,0x0edfcc4f,0xdf073846,0x48f1aa6b,0x319aa737,0xca909f77,0x8b9f8a02,0x7580bfef,0x90258139 + DD 0xc0c22719,0xd8bfd3ca,0xc9ca151e,0xc60209e4,0xd9a1a69c,0x7a744ab5,0x14937f8f,0x6de5048b,0xe115ac04,0x171938d8,0x1c6b16d2,0x7df70940,0x7f8e94e7,0xa6aeb663,0x2a2cf094,0xc130388e + DD 0x77f54e6e,0x1850be84,0x65d60fe5,0x9f258a72,0x6c9146d6,0xff7ff0c0,0xe63a830b,0x039aaf90,0x9460342f,0x38f27a73,0x3f795f8a,0x4703148c,0x9681a97e,0x1bb5467b,0xecaeb594,0x00931ba5 + DD 0x786f337c,0xcdb6719d,0xe704397d,0xd9c01cd2,0x555c2fef,0x0f4a3f20,0x7c0af223,0x00452509,0x84db8e76,0x54a58047,0x93c8aa06,0x3bacf1aa,0xf7919422,0x11ca957c,0x78cdaa40,0x50641053 + DD 0x9f7144ae,0x7a303874,0x43d4acfd,0x170c963f,0x58ddd3ef,0x5e148149,0x9e72dba8,0xa7bde582,0x6fa68750,0x0769da8b,0x572e0249,0xfa64e532,0x2619ad31,0xfcaadf9d,0xa7b349cd,0x87882daa + DD 0x6c67a775,0x9f6eb731,0xefc5d0b1,0xcb10471a,0xe1b806b2,0xb433750c,0x57b1ae7e,0x19c5714d,0xed03fd3f,0xc0dc8b7b,0x31bc194e,0xdd03344f,0x8c6320b5,0xa66c52a7,0xd0b6fd93,0x8bc82ce3 + DD 0xb35f1341,0xf8e13501,0x25a43e42,0xe53156dd,0x4daeb85c,0xd3adf27e,0xbbeddeb5,0xb81d8379,0x2e435867,0x1b0b546e,0xeba5dd60,0x9020eb94,0x8210cb9d,0x37d91161,0x5c91f1cf,0x4c596b31 + DD 0x0e0b040d,0xb228a90f,0x45ff897f,0xbaf02d82,0x00fa6122,0x2aac79e6,0x8e36f557,0x24828817,0x113ec356,0xb9521d31,0x15eff1f8,0x9e48861e,0xe0d41715,0x2aa1d412,0x53f131b8,0x71f86203 + DD 0x3fd19408,0xf60da8da,0x278d9d99,0x4aa716dc,0xa8c51c90,0x394531f7,0xf59db51c,0xb560b0e8,0xfa34bdad,0xa28fc992,0x9cd4f8bd,0xf024fa14,0x23a9d0d3,0x5cf530f7,0xe28c9b56,0x615ca193 + DD 0x6f73c51e,0x6d2a483d,0xea0dc2dd,0xa4cb2412,0x1eb917ff,0x50663c41,0xeade299e,0x3d3a74cf,0x4a7a9202,0x29b3990f,0xa7b15c3d,0xa9bccf59,0xa5df9208,0x66a3ccdc,0x43f2f929,0x48027c14 + DD 0x40b557f0,0xd385377c,0xcd684660,0xe001c366,0xe2183a27,0x1b18ed6b,0x63210329,0x879738d8,0xbda94882,0xa687c74b,0xa684b299,0xd1bbcc48,0x863b3724,0xaf6f1112,0x2c8ce9f8,0x6943d1b4 + DD 0x098cafb4,0xe044a3bb,0x60d48caf,0x27ed2310,0x3a31b84d,0x542b5675,0xfcddbed7,0xcbf3dd50,0x41b1d830,0x25031f16,0xcb0c1e27,0xa7ec851d,0xb5ae75db,0xac1c8fe0,0x08c52120,0xb24c7557 + DD 0x1d4636c3,0x57f811dc,0x681a9939,0xf8436526,0x9c81adb3,0x1f6bc6d9,0x5b7d80d4,0x840f8ac3,0xf4387f1a,0x731a9811,0xb5156880,0x7c501cd3,0xdfe68867,0xa5ca4a07,0x5fcea120,0xf123d8f0 + DD 0xd607039e,0x1fbb0e71,0xcd3a4546,0x2b70e215,0x53324091,0x32d2f01d,0x180ab19b,0xb796ff08,0x3c57c4aa,0x32d87a86,0xb7c49a27,0x2aed9caf,0x31630d98,0x9fb35eac,0x5c3e20a3,0x338e8cdf + DD 0x66cde8db,0x80f16182,0x2d72fd36,0x4e159980,0x9b6e5072,0xd7b8f13b,0x3b7b5dc1,0xf5213907,0x8ce4396e,0x4d431f1d,0xa7ed2142,0x37a1a680,0xd01aaf6b,0xbf375696,0xe63aab66,0xaa1c0c54 + DD 0x4ed80940,0x3014368b,0x7a6fcedd,0x67e6d056,0xca97579f,0x7c208c49,0xa23597f6,0xfe3d7a81,0x7e096ae2,0x5e203202,0x24b39366,0xb1f3e1e7,0x2fdcdffc,0x26da26f3,0x6097be83,0x79422f1d + DD 0x9db3b381,0x263a2cfb,0xd4df0a4b,0x9c3a2dee,0x7d04e61f,0x728d06e9,0x42449325,0x8b1adfbc,0x7e053a1b,0x6ec1d939,0x66daf707,0xee2be5c7,0x810ac7ab,0x80ba1e14,0xf530f174,0xdd2ae778 + DD 0x205b9d8b,0x0435d97a,0x056756d4,0x6eb8f064,0xb6f8210e,0xd5e88a8b,0xec9fd9ea,0x070ef12d,0x3bcc876a,0x4d849505,0xa7404ce3,0x12a75338,0xb8a1db5e,0xd22b49e1,0x14bfa5ad,0xec1f2051 + DD 0xb6828f36,0xadbaeb79,0x01bd5b9e,0x9d7a0258,0x1e844b0c,0xeda01e0d,0x887edfc9,0x4b625175,0x9669b621,0x14109fdd,0xf6f87b98,0x88a2ca56,0x170df6bc,0xfe2eb788,0xffa473f9,0x0cea06f4 + DD 0xc4e83d33,0x43ed81b5,0x5efd488b,0xd9f35879,0x9deb4d0f,0x164a620f,0xac6a7394,0xc6927bdb,0x9f9e0f03,0x45c28df7,0xfcd7e1a9,0x2868661e,0xffa348f1,0x7cf4e8d0,0x398538e0,0x6bd4c284 + DD 0x289a8619,0x2618a091,0x6671b173,0xef796e60,0x9090c632,0x664e46e5,0x1e66f8fb,0xa38062d4,0x0573274e,0x6c744a20,0xa9271394,0xd07b67e4,0x6bdc0e20,0x391223b2,0xeb0a05a7,0xbe2d93f1 + DD 0x3f36d141,0xf23e2e53,0x4dfca442,0xe84bb3d4,0x6b7c023a,0xb804a48d,0x76431c3b,0x1e16a8fa,0xddd472e0,0x1b5452ad,0x0d1ee127,0x7d405ee7,0xffa27599,0x50fc6f1d,0xbf391b35,0x351ac53c + DD 0x4444896b,0x7efa14b8,0xf94027fb,0x64974d2f,0xde84487d,0xefdcd0e8,0x2b48989b,0x8c45b260,0xd8463487,0xa8fcbbc2,0x3fbc476c,0xd1b2b3f7,0xc8f443c0,0x21d005b7,0x40c0139c,0x518f2e67 + DD 0x06d75fc1,0x56036e8c,0x3249a89f,0x2dcf7bb7,0xe245e7dd,0x81dd1d3d,0xebd6e2a7,0xf578dc4b,0xdf2ce7a0,0x4c028903,0x9c39afac,0xaee36288,0x146404ab,0xdc847c31,0xa4e97818,0x6304c0d8 + DD 0xa91f6791,0xae51dca2,0x9baa9efc,0x2abe4190,0x559c7ac1,0xd9d2e2f4,0xfc9f773a,0xe82f4b51,0x4073e81c,0xa7713027,0xfbb596fc,0xc0276fac,0xa684f70c,0x1d819fc9,0xc9f7b1e0,0x29b47fdd + DD 0x459b1940,0x358de103,0x5b013e93,0xec881c59,0x49532ad3,0x51574c93,0xb37b46de,0x2db1d445,0xdf239fd8,0xc6445b87,0x151d24ee,0xc718af75,0xf43c6259,0xaea1c4a4,0x70be02f7,0x40c0e5d7 + DD 0x721b33f2,0x6a4590f4,0xfedf04ea,0x2124f1fb,0x9745efe7,0xf8e53cde,0x65f046d9,0xe7e10432,0xe4d0c7e6,0xc3fca28e,0x87253b1b,0x847e339a,0x3743e643,0x9b595348,0x4fd12fc5,0xcb6a0a0b + DD 0x27d02dcc,0xfb6836c3,0x7a68bcc2,0x5ad00982,0x005e912d,0x1b24b44c,0x811fdcfe,0xcc83d20f,0x666fba0c,0x36527ec1,0x14754635,0x69948197,0x556da9c2,0xfcdcb1a8,0x81a732b2,0xa5934267 + DD 0xa714181d,0xec1214ed,0x6067b341,0x609ac13b,0xa545df1f,0xff4b4c97,0x34d2076b,0xa1240501,0x1409ca97,0x6efa0c23,0x20638c43,0x254cc1a8,0xdcfb46cd,0xd4e363af,0x03942a27,0x62c2adc3 + DD 0x56e46483,0xc67b9df0,0x63736356,0xa55abb20,0xc551bc52,0xab93c098,0xb15fe64b,0x382b49f9,0x4dff8d47,0x9ec221ad,0x437df4d6,0x79caf615,0xbb456509,0x5f13dc64,0x191f0714,0xe4c589d9 + DD 0x3fd40e09,0x27b6a8ab,0x77313ea9,0xe455842e,0x1f55988b,0x8b51d1e2,0x062bbbfc,0x5716dd73,0x4e8bf3de,0x633c11e5,0x1b85be3b,0x9a0e77b6,0x0911cca6,0x56510729,0xefa6590f,0x27e76495 + DD 0x070d3aab,0xe4ac8b33,0x9a2cd5e5,0x2643672b,0x1cfc9173,0x52eff79b,0x90a7c13f,0x665ca49b,0xb3efb998,0x5a8dda59,0x052f1341,0x8a5b922d,0x3cf9a530,0xae9ebbab,0xf56da4d7,0x35986e7b + DD 0xff3513cc,0x3a636b5c,0x3198f7dd,0xbb0cf8ba,0x41f16f86,0xb8d40522,0xde13a7bf,0x760575d8,0x9f7aa181,0x36f74e16,0xf509ed1c,0x163a3ecf,0x3c40a491,0x6aead61f,0xdfe8fcaa,0x158c95fc + DD 0x13cda46f,0xa3991b6e,0x342faed0,0x79482415,0x666b5970,0xf3ba5bde,0xb26ab6dd,0x1d52e6bc,0x8608dd3d,0x768ba1e7,0xea076586,0x4930db2a,0xe7dc1afa,0xd9575714,0xf7c58817,0x1fc7bf7d + DD 0xd9eee96c,0x6b47accd,0xe58cec37,0x0ca277fb,0xe702c42a,0x113fe413,0xc47cbe51,0xdd1764ee,0x7b3ed739,0x041e7cde,0x5ce9e1c0,0x50cb7459,0x2925b212,0x35568513,0x001b081c,0x7cff95c4 + DD 0x8088b454,0x63ee4cbd,0x9a9e0c8a,0xdb7f32f7,0x6b2447cb,0xb377d418,0xd370219b,0xe3e982aa,0xc2a2a593,0x06ccc1e4,0x0773f24f,0x72c36865,0x95859423,0xa13b4da7,0x75040c8f,0x8bbf1d33 + DD 0xda50c991,0x726f0973,0x822d6ee2,0x48afcd5b,0x20fd7771,0xe5fc718b,0xfd0807a1,0xb9e8e77d,0x99a7703d,0x7f5e0f44,0x618e36f3,0x6972930e,0x23807bbe,0x2b7c77b8,0xcb27ff50,0xe5b82405 + DD 0xbd379062,0xba8b8be3,0x2dce4a92,0xd64b7a1d,0xb2952e37,0x040a73c5,0xd438aeca,0x0a9e252e,0xc39d3bcb,0xdd43956b,0xb32b2d63,0x1a31ca00,0x5c417a18,0xd67133b8,0x2ef442c8,0xd08e4790 + DD 0x255c0980,0x98cb1ae9,0x2b4a739f,0x4bd86381,0x1e4a45a1,0x5a5c31e1,0x9cb0db2f,0x1e5d55fe,0x8ff5cc29,0x74661b06,0x0eb8a4f4,0x026b389f,0x58848c24,0x536b21a4,0x81dc72b0,0x2e5bf8ec + DD 0xad886aac,0x03c187d0,0xb771b645,0x5c16878a,0xc74045ab,0xb07dfc6f,0x7800caed,0x2c6360bf,0xb9c972a3,0x24295bb5,0x7c9a6dba,0xc9e6f88e,0x92a79aa6,0x90ffbf24,0x41c26ac2,0xde29d50a + DD 0xd309cbe6,0x9f0af483,0xe0bced4f,0x5b020d8a,0xb38023e3,0x606e986d,0x1abc6933,0xad8f2c9d,0xe7400e93,0x19292e1d,0x52be5e4d,0xfe3e18a9,0x2e0680bf,0xe8e9771d,0xc54db063,0x8c5bec98 + DD 0x74a55d1f,0x2af9662a,0x046f66d8,0xe3fbf28f,0xd4dc4794,0xa3a72ab4,0x5c7c2dd8,0x09779f45,0xc3d19d8d,0xd893bdaf,0x57d6a6df,0xd5a75094,0x952e6255,0x8cf8fef9,0xda9a8aff,0x3da67cfb + DD 0x2c160dcd,0x4c23f62a,0x8f90eaef,0x34e6c5e3,0xa9a65d5a,0x35865519,0x8fd38a3d,0x07c48aae,0x50068527,0xb7e7aeda,0x1c90936a,0x2c09ef23,0xe879324c,0x31ecfeb6,0xfb0ec938,0xa0871f6b + DD 0xd84d835d,0xb1f0fb68,0x861dc1e6,0xc90caf39,0x7594f8d7,0x12e5b046,0x65012b92,0x26897ae2,0xa4d6755d,0xbcf68a08,0x0991fbda,0x403ee41c,0x3bbf17e8,0x733e343e,0x679b3d65,0xd2c7980d + DD 0xd2e11305,0x33056232,0xf3c07a6f,0x966be492,0xbb15509d,0x6a8878ff,0x0a9b59a4,0xff221101,0xabe30129,0x6c9f564a,0x336e64cf,0xc6f2c940,0x8b0c8022,0x0fe75262,0x6ae8db87,0xbe0267e9 + DD 0x93bc042b,0x22e192f1,0xb237c458,0xf085b534,0x832c4168,0xa0d192bd,0xbdf6271d,0x7a76e9e3,0xb88911b5,0x52a882fa,0xb4db0eb5,0xc85345e4,0x81a7c3ff,0xa3be02a6,0xf0ec0469,0x51889c8c + DD 0xa5e829e5,0x9d031369,0x1607aa41,0xcbb4c6fc,0x241d84c1,0x75ac59a6,0x8829e0ee,0xc043f2bf,0x8ea5e185,0x82a38f75,0xd87cbd9f,0x8bda40b9,0x2d8fc601,0x9e65e75e,0xa35690b3,0x3d515f74 + DD 0xda79e5ac,0x534acf4f,0x8630215f,0x68b83b3a,0xd085756e,0x5c748b2e,0xe5d37cb2,0xb0317258,0xc5ccc2c4,0x6735841a,0x3d9d5069,0x7d7dc96b,0xfd1754bd,0xa147e410,0xd399ddd5,0x65296e94 + DD 0xbc8fa5bc,0xf6b5b2d0,0x500c277b,0x8a5ead67,0xdfa08a5d,0x214625e6,0x959cf047,0x51fdfedc,0x289fca32,0x6bc9430b,0x9d9bdc3f,0xe36ff0cf,0x58ea0ede,0x2fe187cb,0x5a900b3f,0xed66af20 + DD 0x5fa9f4d6,0x00e0968b,0x37a362e7,0x2d4066ce,0xbd07e772,0xa99a9748,0x06a4f1d0,0x710989c0,0xce40cbd8,0xd5dedf35,0x1743293d,0xab55c5f0,0x8aa24e2c,0x766f1144,0x605fbcb4,0x94d874f8 + DD 0xa518001b,0xa365f0e8,0x9d04ef0f,0xee605eb6,0xba8d4d25,0x5a3915cd,0xb5113472,0x44c0e1b8,0x8b6740dc,0xcbb024e8,0xee1d4f0c,0x89087a53,0x1fc4e372,0xa88fa05c,0xaf8b3af2,0x8bf395cb + DD 0xdeb8568b,0x1e71c9a1,0x80fb3d32,0xa35daea0,0x2cf8fb81,0xe8b6f266,0x9490696a,0x6d51afe8,0x51803a19,0x81beac6e,0x86219080,0xe3d24b7f,0xdf6f463c,0x727cfd9d,0x72284ee8,0x8c6865ca + DD 0xb743f4ef,0x32c88b7d,0xe7d11dce,0x3793909b,0x2ff2ebe8,0xd398f922,0xe5e49796,0x2c70ca44,0xcb1131b1,0xdf4d9929,0x25888e79,0x7826f298,0xf1d8740a,0x4d3a112c,0x270afa8b,0x00384cb6 + DD 0x3ab48095,0xcb64125b,0x62d05106,0x3451c256,0xa4955845,0xd73d577d,0xbf9f4433,0x39570c16,0xadecf263,0xd7dfaad3,0xdc76e102,0xf1c3d8d1,0x54c6a836,0x5e774a58,0x3e92d47b,0xdad4b672 + DD 0xf0d796a0,0xbe7e990f,0xdf0e8b02,0x5fc62478,0x030c00ad,0x8aae8bf4,0x9004ba0f,0x3d2db93b,0xd85d5ddc,0xe48c8a79,0x6bb07f34,0xe907caa7,0xa39eaed5,0x58db343a,0xadaf5724,0x0ea6e007 + DD 0xd23233f3,0xe00df169,0x77cb637f,0x3e322796,0x1da0cf6c,0x1f897c0e,0x31d6bbdd,0xa651f5d8,0x1a230c76,0xdd61af19,0xcdaa5e4a,0xbd527272,0xd0abcd7e,0xca753636,0x370bd8dc,0x78bdd37c + DD 0x17cd93fe,0xc23916c2,0xdadce6e2,0x65b97a4d,0x174e42f8,0xe04ed4eb,0xbb21480a,0x1491ccaa,0x23196332,0x145a8280,0x587b479a,0x3c3862d7,0x01dcd0ed,0x9f4a88a3,0x3ea12f1f,0x4da2b7ef + DD 0xb126e48e,0xf8e7ae33,0xf494e237,0x404a0b32,0xc55acadb,0x9beac474,0xcbec9fd9,0x4ee5cf3b,0x7df3c8c3,0x336b33b9,0xb76808fd,0xbd905fe3,0xaa45c16a,0x8f436981,0x3dd27b62,0x255c5bfa + DD 0xc3dd9b4d,0x71965cbf,0xfc068a87,0xce23edbf,0x745b029b,0xb78d4725,0xcefdd9bd,0x74610713,0x1266bf52,0x7116f75f,0x18e49bb6,0x02046722,0x3d6f19e3,0xdf43df9f,0xe685cb2f,0xef1bc7d0 + DD 0x7078c432,0xcddb27c1,0xb77fedb7,0xe1961b9c,0xc2290570,0x1edc2f5c,0x19cbd886,0x2c3fefca,0xc2af389a,0xcf880a36,0xbda71cea,0x96c610fd,0x32aa8463,0xf03977a9,0x8586d90a,0x8eb7763f + DD 0x2a296e77,0x3f342454,0x42837a35,0xc8718683,0x6a09c731,0x7dc71090,0x51b816db,0x54778ffb,0xaf06defd,0x6b33bfec,0x8592b70b,0xfe3c105f,0x61da6114,0xf937fda4,0x4c266ad7,0x3c13e651 + DD 0x855938e8,0xe363a829,0x9de54b72,0x2eeb5d9e,0x20ccfab9,0xbeb93b0e,0x25e61a25,0x3dffbb5f,0x1acc093d,0x7f655e43,0x3964ce61,0x0cb6cc3d,0xe5e9b460,0x6ab283a1,0xa1c7e72d,0x55d787c5 + DD 0xdeadbf02,0x4d2efd47,0xac459068,0x11e80219,0x71f311f0,0x810c7626,0x4ab6ef53,0xfa17ef8d,0x93e43bff,0xaf47fd25,0x0be40632,0x5cb5ff3f,0x8ee61da3,0x54687106,0xb08afd0f,0x7764196e + DD 0xf0290a8f,0x831ab3ed,0xcb47c387,0xcae81966,0x184efb4f,0xaad7dece,0x4749110e,0xdcfc53b3,0x4cb632f9,0x6698f23c,0xb91f8067,0xc42a1ad6,0x6284180a,0xb116a81d,0xe901326f,0xebedf5f8 + DD 0x97e3e044,0xf2274c9f,0x11d09fc9,0x42018520,0xd18e6e23,0x56a65f17,0x352b683c,0x2ea61e2a,0x575eaa94,0x27d291bc,0xb8ff522d,0x9e7bc721,0xa7f04d6f,0x5f7268bf,0xaba41748,0x5868c73f + DD 0x7be0eead,0x9f85c2db,0xff719135,0x511e7842,0xc5ea90d7,0x5a06b1e9,0x26fab631,0x0c19e283,0xe9206c55,0x8af8f0cf,0x3553c06a,0x89389cb4,0xf65f8004,0x39dbed97,0xc508991d,0x0621b037 + DD 0x96e78cc4,0x1c52e635,0x0c06b4a8,0x5385c8b2,0xb0e87d03,0xd84ddfdb,0x934bafad,0xc49dfb66,0x59f70772,0x7071e170,0x3a1db56b,0x3a073a84,0x3b8af190,0x03494903,0xd32920f0,0x7d882de3 + DD 0xb2cf8940,0x91633f0a,0x6f948f51,0x72b0b178,0x782653c8,0x2d28dc30,0xdb903a05,0x88829849,0x6a19d2bb,0xb8095d0c,0x86f782cb,0x4b9e7f0c,0x2d907064,0x7af73988,0x8b32643c,0xd12be0fe + DD 0x0e165dc3,0x358ed23d,0x4e2378ce,0x3d47ce62,0xfeb8a087,0x7e2bb0b9,0xe29e10b9,0x3246e8ae,0x03ce2b4d,0x459f4ec7,0xbbc077cf,0xe9b4ca1b,0x0e9940c1,0x2613b4f2,0x047d1eb1,0xfc598bb9 + DD 0x45036099,0x9744c62b,0x167c65d8,0xa9dee742,0xdabe1943,0x0c511525,0x93c6c624,0xda110554,0x651a3be2,0xae00a52c,0x884449a6,0xcda5111d,0xff33bed1,0x063c06f4,0x0d3d76b4,0x73baaf9a + DD 0x7fc63668,0x52fb0c9d,0x0c039cde,0x6886c9dd,0x55b22351,0x602bd599,0x360c7c13,0xb00cab02,0x81b69442,0x8cb616bc,0xb55c3cee,0x41486700,0xf49ba278,0x71093281,0x64a50710,0xad956d9c + DD 0x638a7e81,0x9561f28b,0x5980ddc3,0x54155cdf,0xd26f247a,0xb2db4a96,0x4787d100,0x9d774e4e,0x078637d2,0x1a9e6e2e,0x5e0ae06a,0x1c363e2d,0xe9cfa354,0x7493483e,0x7f74b98d,0x76843cb3 + DD 0xd4b66947,0xbaca6591,0x04460a8c,0xb452ce98,0x43768f55,0x6830d246,0x7dff12df,0xf4197ed8,0x400dd0f7,0x6521b472,0x4b1e7093,0x59f5ca8f,0x080338ae,0x6feff11b,0xa29ca3c6,0x0ada31f6 + DD 0x94a2c215,0x24794eb6,0x05a57ab4,0xd83a43ab,0x2a6f89fe,0x264a543a,0xdd5ec7c2,0x2c2a3868,0x8439d9b2,0xd3373940,0x0acd1f11,0x715ea672,0xe7e6cc19,0x42c1d235,0xb990585c,0x81ce6e96 + DD 0xd809c7bd,0x04e5dfe0,0x8f1050ab,0xd7b2580c,0xd8a4176f,0x6d91ad78,0x4e2e897c,0x0af556ee,0x921de0ac,0x162a8b73,0x7ea78400,0x52ac9c22,0xefce2174,0xee2a4eea,0x6d637f79,0xbe61844e + DD 0x789a283b,0x0491f1bc,0x880836f4,0x72d3ac3d,0x88e5402d,0xaa1c5ea3,0xd5cc473d,0x1b192421,0x9dc84cac,0x5c0b9998,0x9c6e75b8,0xb0a8482d,0x3a191ce2,0x639961d0,0x6d837930,0xda3bc865 + DD 0x056e6f8f,0xca990653,0x64d133a7,0x84861c41,0x746abe40,0x8b403276,0xebf8e303,0xb7b4d51a,0x220a255d,0x05b43211,0x02419e6e,0xc997152c,0x630c2fea,0x76ff47b6,0x281fdade,0x50518677 + DD 0xcf902b0b,0x3283b8ba,0x37db303b,0x8d4b4eb5,0x755011bc,0xcc89f42d,0xdd09d19b,0xb43d74bb,0x8adba350,0x65746bc9,0xb51c1927,0x364eaf8c,0x10ad72ec,0x13c76596,0xf8d40c20,0x30045121 + DD 0xea7b979b,0x6d2d99b7,0xe6fb3bcd,0xcd78cd74,0x86cffbfe,0x11e45a9e,0x637024f6,0x78a61cf4,0x3d502295,0xd06bc872,0x458cb288,0xf1376854,0x342f8586,0xb9db26a1,0x4beee09e,0xf33effcf + DD 0xb30cfb3a,0xd7e0c4cd,0x6c9db4c8,0x6d09b8c1,0x07c8d9df,0x40ba1a42,0x1c52c66d,0x6fd495f7,0x275264da,0xfb0e169f,0xe57d8362,0x80c2b746,0x49ad7222,0xedd987f7,0x4398ec7b,0xfdc229af + DD 0x52666a58,0xb0d1ed84,0xe6a9c3c2,0x4bcb6e00,0x26906408,0x3c57411c,0x13556400,0xcfc20755,0x5294dba3,0xa08b1c50,0x8b7dd31e,0xa30ba286,0x991eca74,0xd70ba90e,0xe762c2b9,0x094e142c + DD 0x979f3925,0xb81d783e,0xaf4c89a7,0x1efd130a,0xfd1bf7fa,0x525c2144,0x1b265a9e,0x4b296904,0xb9db65b6,0xed8e9634,0x03599d8a,0x35c82e32,0x403563f3,0xdaa7a54f,0x022c38ab,0x9df088ad + DD 0xbb3fd30a,0xe5cfb066,0xeff0354e,0x429169da,0x3524e36c,0x809cf852,0x0155be1d,0x136f4fb3,0x1fbba712,0x4826af01,0x506ba1a1,0x6ef0f0b4,0x77aea73e,0xd9928b31,0x5eaa244e,0xe2bf6af2 + DD 0x4237b64b,0x8d084f12,0xe3ecfd07,0x688ebe99,0xf6845dd8,0x57b8a70c,0x5da4a325,0x808fc59c,0xa3585862,0xa9032b2b,0xedf29386,0xb66825d5,0x431ec29b,0xb5a5a8db,0x3a1e8dc8,0xbb143a98 + DD 0x12ae381b,0x35ee94ce,0x86ccda90,0x3a7f176c,0x4606eaca,0xc63a657e,0x43cd04df,0x9ae5a380,0xed251b46,0x9bec8d15,0xcaca5e64,0x1f5d6d30,0x9ff20f07,0x347b3b35,0xf7e4b286,0x4d65f034 + DD 0xf111661e,0x9e93ba24,0xb105eb04,0xedced484,0xf424b578,0x96dc9ba1,0xe83e9069,0xbf8f66b7,0xd7ed8216,0x872d4df4,0x8e2cbecf,0xbf07f377,0x98e73754,0x4281d899,0x8aab8708,0xfec85fbb + DD 0xa5ba5b0b,0x9a3c0dee,0x42d05299,0xe6a116ce,0xe9b02d42,0xae9775fe,0xa1545cb6,0x72b05200,0x31a3b4ea,0xbc506f7d,0x8bbd9b32,0xe5893078,0xe4b12a97,0xc8bc5f37,0x4a73b671,0x6b000c06 + DD 0x765fa7d0,0x13b5bf22,0x1d6a5370,0x59805bf0,0x4280db98,0x67a5e29d,0x776b1ce3,0x4f53916f,0x33ddf626,0x714ff61f,0xa085d103,0x4206238e,0xe5809ee3,0x1c50d4b7,0x85f8eb1d,0x999f450d + DD 0xe4c79e9b,0x658a6051,0xc66a9fea,0x1394cb73,0xc6be7b23,0x27f31ed5,0x5aa6f8fe,0xf4c88f36,0x4aaa499e,0x0fb0721f,0xe3fb2a6b,0x68b3a7d5,0x3a92851d,0xa788097d,0xe96f4913,0x060e7f8a + DD 0x1a3a93bc,0x82eebe73,0xa21adc1a,0x42bbf465,0xef030efd,0xc10b6fa4,0x87b097bb,0x247aa4c7,0xf60c77da,0x8b8dc632,0xc223523e,0x6ffbc26a,0x344579cf,0xa4f6ff11,0x980250f6,0x5825653c + DD 0xbc1aa2b9,0xb2dd097e,0x37a0333a,0x07889393,0x37a0db38,0x1cf55e71,0x792c1613,0x2648487f,0x3fcef261,0xdad01336,0x0eabf129,0x6239c81d,0x9d276be2,0x8ee761de,0x1eda6ad3,0x406a7a34 + DD 0x4a493b31,0x4bf367ba,0x9bf7f026,0x54f20a52,0x9795914b,0xb696e062,0x8bf236ac,0xcddab96d,0xed25ea13,0x4ff2c70a,0x81cbbbe7,0xfa1d09eb,0x468544c5,0x88fc8c87,0x696b3317,0x847a670d + DD 0x64bcb626,0xf133421e,0x26dee0b5,0xaea638c8,0xb310346c,0xd6e7680b,0xd5d4ced3,0xe06f4097,0x7512a30b,0x09961452,0xe589a59a,0xf3d867fd,0x52d0c180,0x2e73254f,0x333c74ac,0x9063d8a3 + DD 0xd314e7bc,0xeda6c595,0x467899ed,0x2ee7464b,0x0a1ed5d3,0x1cef423c,0x69cc7613,0x217e76ea,0xe7cda917,0x27ccce1f,0x8a893f16,0x12d8016b,0x9fc74f6b,0xbcd6de84,0xf3144e61,0xfa5817e2 + DD 0x0821ee4c,0x1f354164,0x0bc61992,0x1583eab4,0x1d72879f,0x7490caf6,0xf76ae7b2,0x998ad9f3,0xa41157f7,0x1e181950,0xe8da3a7e,0xa9d7e1e6,0x8426b95f,0x963784eb,0x542e2a10,0x0ee4ed6e + DD 0xac751e7b,0xb79d4cc5,0xfd4211bd,0x93f96472,0xc8de4fc6,0x8c72d3d2,0xdf44f064,0x7b69cbf5,0xf4bf94e1,0x3da90ca2,0xf12894e2,0x1a5325f8,0x7917d60b,0x0a437f6c,0x96c9cb5d,0x9be70486 + DD 0xe1dc5c05,0xb4d880bf,0xeebeeb57,0xd738adda,0xdf0fe6a3,0x6f0119d3,0x66eaaf5a,0x5c686e55,0xdfd0b7ec,0x9cb10b50,0x6a497c21,0xbdd0264b,0x8c546c96,0xfc093514,0x79dbf42a,0x58a947fa + DD 0x49ccd6d7,0xc0b48d4e,0x88bd5580,0xff8fb02c,0x07d473b2,0xc75235e9,0xa2188af3,0x4fab1ac5,0x97576ec0,0x030fa3bc,0x0b7e7d2f,0xe8c946e8,0x70305600,0x40a5c9cc,0xc8b013b4,0x6d8260a9 + DD 0x70bba85c,0x0368304f,0xa4a0d311,0xad090da1,0x2415eec1,0x7170e870,0x8461ea47,0xbfba35fe,0xc1e91938,0x6279019a,0x1afc415f,0xa47638f3,0xbcba0e0f,0x36c65cbb,0x034e2c48,0x02160efb + DD 0x615cd9e4,0xe6c51073,0xf1243c06,0x498ec047,0xb17b3d8c,0x3e5a8809,0x0cc565f1,0x5cd99e61,0x7851dafe,0x81e312df,0xa79061e2,0xf156f5ba,0x880c590e,0x80d62b71,0x0a39faa1,0xbec9746f + DD 0xc8ed1f7a,0x1d98a9c1,0xa81d5ff2,0x09e43bb5,0x0da0794a,0xd5f00f68,0x661aa836,0x412050d9,0x90747e40,0xa89f7c4e,0xb62a3686,0x6dc05ebb,0x308e3353,0xdf4de847,0x9fb53bb9,0x53868fbb + DD 0xcfdcf7dd,0x2b09d2c3,0x723fcab4,0x41a9fce3,0x07f57ca3,0x73d905f7,0xac8e1555,0x080f9fb1,0x9ba7a531,0x7c088e84,0xed9a147f,0x07d35586,0xaf48c336,0x602846ab,0x0ccf0e79,0x7320fd32 + DD 0xb18bd1ff,0xaa780798,0xafdd2905,0x52c2e300,0x434267cd,0xf27ea3d6,0x15605b5f,0x8b96d16d,0x4b45706b,0x7bb31049,0x743d25f8,0xe7f58b8e,0x87f30076,0xe9b5e45b,0x5d053d5a,0xd19448d6 + DD 0xd3210a04,0x1ecc8cb9,0xdafb5269,0x6bc7d463,0x67c3489f,0x3e59b10a,0x65641e1b,0x1769788c,0xbd6cb838,0x8a53b82d,0x236d5f22,0x7066d6e6,0x6908536e,0x03aa1c61,0x66ae9809,0xc971da0d + DD 0xc49a2fac,0x01b3a86b,0x3092e77a,0x3b8420c0,0x7d6fb556,0x02057300,0xbff40a87,0x6941b2a1,0x0658ff2a,0x140b6308,0x3424ab36,0x87804363,0x5751e299,0x0253bd51,0x449c3e3a,0xc75bcd76 + DD 0x7f8f875d,0x92eb4090,0x56c26bbf,0x9c9d754e,0x8110bbe7,0x158cea61,0x745f91ea,0x62a6b802,0xc6e7394b,0xa79c41aa,0xad57ef10,0x445b6a83,0x6ea6f40c,0x0c5277eb,0x88633365,0x319fe96b + DD 0x385f63cb,0x0b0fc61f,0x22bdd127,0x41250c84,0x09e942c2,0x67d153f1,0xc021ad5d,0x60920d08,0x724d81a5,0x229f5746,0x5bba3299,0xb7ffb892,0xde413032,0x518c51a1,0x3c2fd94c,0x2a9bfe77 + DD 0x3191f4fd,0xcbcde239,0xd3d6ada1,0x43093e16,0x58769606,0x184579f3,0xd236625c,0x2c94a8b3,0x5c437d8e,0x6922b9c0,0xd8d9f3c8,0x3d4ae423,0x2e7090a2,0xf72c31c1,0xd76a55bd,0x4ac3f5f3 + DD 0x6b6af991,0x342508fc,0x1b5cebbd,0x0d527100,0xdd440dd7,0xb84740d0,0x780162fd,0x748ef841,0xdfc6fafb,0xa8dbfe0e,0xf7300f27,0xeadfdf05,0xfeba4ec9,0x7d06555f,0x9e25fa97,0x12c56f83 + DD 0xd39b8c34,0x77f84203,0x3125eddb,0xed8b1be6,0xf6e39dc5,0x5bbf2441,0x6a5d678a,0xb00f6ee6,0x57d0ea99,0xba456ecf,0x17e06c43,0xdcae0f58,0x0f5b4baa,0x01643de4,0xd161b9be,0x2c324341 + DD 0xe126d468,0x80177f55,0x76748e09,0xed325f1f,0xcfa9bdc2,0x6116004a,0x3a9fb468,0x2d8607e6,0x6009d660,0x0e573e27,0x8d10c5a1,0x3a525d2e,0x3b9009a0,0xd26cb45c,0xde9d7448,0xb6b0cdc0 + DD 0xe1337c26,0x949c9976,0xd73d68e5,0x6faadebd,0xf1b768d9,0x9e158614,0x9cc4f069,0x22dfa557,0xbe93c6d6,0xccd6da17,0xa504f5b9,0x24866c61,0x8d694da1,0x2121353c,0x0140b8c6,0x1c6ca580 + DD 0xe964021e,0xc245ad8c,0x032b82b3,0xb83bffba,0x47ef9898,0xfaa220c6,0x982c948a,0x7e8d3ac6,0xbc2d124a,0x1faa2091,0x05b15ff4,0xbd54c3dd,0xc87c6fb7,0x386bf3ab,0xfdeb6f66,0xfb2b0563 + DD 0x5b45afb4,0x4e77c557,0xefb8912d,0xe9ded649,0x42f6e557,0x7ec9bbf5,0x62671f00,0x2570dfff,0x88e084bd,0x2b3bfb78,0xf37fe5b4,0xa024b238,0x95649aee,0x44e7dc04,0x5e7ec1d8,0x498ca255 + DD 0xaaa07e86,0x3bc766ea,0xf3608586,0x0db6facb,0xbdc259c8,0xbadd2549,0x041c649f,0x95af3c6e,0x02e30afb,0xb36a928c,0x008a88b8,0x9b5356ad,0xcf1d9e9d,0x4b67a5f1,0xa5d8d8ce,0xc6542e47 + DD 0x7adfb6cc,0x73061fe8,0x98678141,0xcc826fd3,0x3c80515a,0x00e758b1,0x41485083,0x6afe3247,0xb6ae8a75,0x0fcb08b9,0x4acf51e1,0xb8cf388d,0x6961b9d6,0x344a5560,0x6a97fd0c,0x1a6778b8 + DD 0xecc4c7e3,0xd840fdc1,0x16db68cc,0xde9fe47d,0xa3e216aa,0xe95f89de,0x9594a8be,0x84f1a6a4,0x5a7b162b,0x7ddc7d72,0xadc817a3,0xc5cfda19,0x78b58d46,0x80a5d350,0x82978f19,0x93365b13 + DD 0x26a1fc90,0x2e44d225,0x4d70705d,0x0d6d10d2,0xd70c45f4,0xd94b6b10,0xb216c079,0x0f201022,0x658fde41,0xcec966c5,0x7e27601d,0xa8d2bc7d,0xff230be7,0xbfcce3e1,0x0033ffb5,0x3394ff6b + DD 0x8132c9af,0xd890c509,0x361e7868,0xaac4b0eb,0xe82d15aa,0x5194ded3,0x23ae6b7d,0x4550bd2e,0xea5399d4,0x3fda318e,0x91638b80,0xd989bffa,0xa14aa12d,0x5ea124d0,0x3667b944,0x1fb1b899 + DD 0x44c44d6a,0x95ec7969,0x57e86137,0x91df144a,0x73adac44,0x915fd620,0x59a83801,0x8f01732d,0x3aa0a633,0xec579d25,0xc9d6d59c,0x06de5e7c,0xb1ef8010,0xc132f958,0xe65c1a02,0x29476f96 + DD 0xd34c3565,0x336a77c0,0x1b9f1e9e,0xef1105b2,0xf9e08002,0x63e6d08b,0xc613809e,0x9aff2f21,0x3a80e75d,0xb5754f85,0x6bbda681,0xde71853e,0x8197fd7a,0x86f041df,0x127817fa,0x8b332e08 + DD 0xb9c20cda,0x05d99be8,0xd5cd0c98,0x89f7aad5,0x5bb94183,0x7ef936fe,0xb05cd7f2,0x92ca0753,0x74a1e035,0x9d65db11,0x13eaea92,0x02628cc8,0x49e4fbf2,0xf2d9e242,0xe384f8b7,0x94fdfd9b + DD 0x63428c6b,0x65f56054,0x90b409a5,0x2f7205b2,0xff45ae11,0xf778bb78,0xc5ee53b2,0xa13045be,0x03ef77fe,0xe00a14ff,0xffef8bef,0x689cd59f,0x1e9ade22,0x3578f0ed,0x6268b6a8,0xe99f3ec0 + DD 0xea1b3c3e,0xa2057d91,0xb8823a4a,0x2d1a7053,0x2cca451e,0xabbb336a,0x2218bb5d,0xcd2466e3,0xc8cb762d,0x3ac1f42f,0x7690211f,0x7e312aae,0x45d07450,0xebb9bd73,0x46c2213f,0x207c4b82 + DD 0x375913ec,0x99d425c1,0x67908220,0x94e45e96,0xcd67dbf6,0xc08f3087,0xc0887056,0xa5670fbe,0x66f5b8fc,0x6717b64a,0x786fec28,0xd5a56aea,0xc0ff4952,0xa8c3f55f,0x457ac49b,0xa77fefae + DD 0x98379d44,0x29882d7c,0x509edc8a,0xd000bdfb,0xe66fe464,0xc6f95979,0xfa61bde0,0x504a6115,0xeffea31a,0x56b3b871,0xf0c21a54,0x2d3de26d,0x834753bf,0x21dbff31,0x69269d86,0xe67ecf49 + DD 0x151fe690,0x7a176952,0x7f2adb5f,0x03515804,0xd1b62a8d,0xee794b15,0xaae454e6,0xf004ceec,0xf0386fac,0x0897ea7c,0xd1fca751,0x3b62ff12,0x1b7a04ec,0x154181df,0xfb5847ec,0x2008e04a + DD 0x41dbd772,0xd147148e,0x22942654,0x2b419f73,0xe9c544f7,0x669f30d3,0xc8540149,0x52a2c223,0x634dfb02,0x5da9ee14,0xf47869f3,0x5f074ff0,0xa3933acc,0x74ee878d,0x4fe35ed1,0xe6510651 + DD 0xf1012e7a,0xb3eb9482,0xa8a566ae,0x51013cc0,0x47c00d3b,0xdd5e9243,0x946bb0e5,0x7fde089d,0xc731b4b3,0x030754fe,0x99fda062,0x12a136a4,0x5a1a35bc,0x7c1064b8,0x446c84ef,0xbf1f5763 + DD 0xa16d4b34,0xed29a56d,0xdca21c4f,0x7fba9d09,0x6d8de486,0x66d7ac00,0x73a2a5e1,0x60061987,0x9da28ff0,0x8b400f86,0x43c4599c,0x3133f708,0xee28cb0d,0x9911c9b8,0x8e0af61d,0xcd7e2874 + DD 0x72ed91fc,0x5a85f0f2,0x9cd4a373,0x85214f31,0x1925253c,0x881fe5be,0x91e8bc76,0xd8dc98e0,0x585cc3a2,0x7120affe,0x735bf97a,0x724952ed,0x3eb34581,0x5581e7dc,0xe52ee57d,0x5cbff4f2 + DD 0x87d8cc7b,0x8d320a0e,0xf1d280d0,0x9beaa7f3,0x9beec704,0x7a0b9571,0x5b7f0057,0x9126332e,0x8ed3bd6d,0x01fbc1b4,0xd945eb24,0x35bb2c12,0x9a8ae255,0x6404694e,0x8d6abfb3,0xb6092eec + DD 0xcc058865,0x4d76143f,0x6e249922,0x7b0a5af2,0x6a50d353,0x8aef9440,0x64f0e07a,0xe11e4bcc,0xa14a90fa,0x4472993a,0xba0c51d4,0x7706e20c,0x1532672d,0xf403292f,0x21829382,0x52573bfa + DD 0x3b5bdb83,0x6a7bb6a9,0xa4a72318,0x08da65c0,0x63eb065f,0xc58d22aa,0x1b15d685,0x1717596c,0xb266d88b,0x112df0d0,0x5941945a,0xf688ae97,0x7c292cac,0x487386e3,0x57d6985c,0x42f3b50d + DD 0x6a90fc34,0x6da4f998,0x65ca8a8d,0xc8f257d3,0x6951f762,0xc2feabca,0x74c323ac,0xe1bc81d0,0x251a2a12,0x1bc68f67,0xbe8a70dc,0x10d86587,0xf0f84d2e,0xd648af7f,0x6a43ac92,0xf0aa9ebc + DD 0x27596893,0x69e3be04,0x45bf452b,0xb6bb02a6,0xf4c698c8,0x0875c11a,0xbece3794,0x6652b5c7,0x4f5c0499,0x7b3755fd,0xb5532b38,0x6ea16558,0xa2e96ef7,0xd1c69889,0x61ed8f48,0x9c773c3a + DD 0x9b323abc,0x2b653a40,0xf0e1d791,0xe26605e1,0x4a87157a,0x45d41064,0xcbbce616,0x8f9a78b7,0xc407eddd,0xcf1e44aa,0xa35b964f,0x81ddd1d8,0xfd083999,0x473e339e,0x8e796802,0x6c94bdde + DD 0x8545d185,0x5a304ada,0x738bb8cb,0x82ae44ea,0xdf87e10e,0x628a35e3,0xa15b9fe3,0xd3624f3d,0x14be4254,0xcc44209b,0xbdbc2ea5,0x7d0efcbc,0x04c37bbe,0x1f603362,0x56a5852c,0x21f363f5 + DD 0xa8501550,0xa1503d1c,0xd8ab10bb,0x2251e0e1,0x6961c51c,0xde129c96,0x81910f68,0x1f7246a4,0x5f2591f2,0x2eb744ee,0x5e627157,0x3c47d33f,0x22f3bd68,0x4d6d62c9,0xcb8df856,0x6120a64b + DD 0x7b5d07df,0x3a9ac6c0,0x7ef39783,0xa92b9558,0xab3a9b4f,0xe128a134,0xb1252f05,0x41c18807,0x80ba9b1c,0xfc7ed089,0xc532a9dd,0xac8dc6de,0x55246809,0xbf829cef,0x5b4ee80f,0x101b784f + DD 0xb6f11603,0xc09945bb,0x41d2801e,0x57b09dbe,0xa97534a8,0xfba5202f,0xc17b9614,0x7fd8ae5f,0x78308435,0xa50ba666,0xd3868c4d,0x9572f77c,0x2dd7aab0,0x0cef7bfd,0x2c7c79ff,0xe7958e08 + DD 0x25346689,0x81262e42,0xb07c7004,0x716da290,0xb7950ee3,0x35f911ea,0x261d21b5,0x6fd72969,0x08b640d3,0x52389803,0x887f12a1,0x5b0026ee,0x742e9311,0x20e21660,0x5ff77ff7,0x0ef6d541 + DD 0xf9c41135,0x969127f0,0x68a64993,0xf21d60c9,0xe541875c,0x656e5d0c,0xa1d3c233,0xf1e0f84e,0x06002d60,0x9bcca359,0x06191552,0xbe2da60c,0x61181ec3,0x5da8bbae,0x65806f19,0x9f04b823 + DD 0xd4b79bb8,0xf1604a7d,0x52c878c8,0xaee806fb,0x8d47b8e8,0x34144f11,0x949f9054,0x72edf52b,0x2127015a,0xebfca84e,0x9cb7cef3,0x9051d0c0,0x296deec8,0x86e8fe58,0x41010d74,0x33b28188 + DD 0x171b445f,0x01079383,0x8131ad4c,0x9bcf21e3,0xc93987e8,0x8cdfe205,0xc92e8c8f,0xe63f4152,0x30add43d,0x729462a9,0xc980f05a,0x62ebb143,0x3b06e968,0x4f3954e5,0x242cf6b1,0xfe1d75ad + DD 0xaf8685c8,0x5f95c6c7,0x2f8f01aa,0xd4c1c8ce,0x2574692a,0xc44bbe32,0xd4a4a068,0xb8003478,0x2eca3cdb,0x7c8fc6e5,0xec04d399,0xea1db16b,0x8f2bc5cf,0xb05bc82e,0xf44793d2,0x763d517f + DD 0x08bd98d0,0x4451c1b8,0x6575f240,0x644b1cd4,0x7375d270,0x6907eb33,0xfa2286bd,0x56c8bebd,0xc4632b46,0xc713d2ac,0xafd60242,0x17da427a,0xc95c7546,0x313065b7,0xbf17a3de,0xf8239898 + DD 0x4c830320,0xf3b7963f,0x903203e3,0x842c7aa0,0xe7327afb,0xaf22ca0a,0x967609b6,0x38e13092,0x757558f1,0x73b8fb62,0xf7eca8c1,0x3cc3e831,0xf6331627,0xe4174474,0xc3c40234,0xa77989ca + DD 0x44a081e0,0xe5fd17a1,0xb70e296a,0xd797fb7d,0x481f719c,0x2b472b30,0xfe6f8c52,0x0e632a98,0xc5f0c284,0x89ccd116,0x2d987c62,0xf51088af,0x4c2de6cf,0x2a2bccda,0xf679f0f9,0x810f9efe + DD 0x7ffe4b3e,0xb0f394b9,0xe5fa5d21,0x0b691d21,0x9dfbbc75,0xb0bd7747,0xfaf78b00,0xd2830fda,0x52434f57,0xf78c249c,0x98096dab,0x4b1f7545,0x8ff8c0b3,0x73bf6f94,0x454e134c,0x34aef03d + DD 0xb7ac7ec5,0xf8d151f4,0xe50da7d5,0xd6ceb95a,0xdc3a0eb8,0xa1b492b0,0xb3dd2863,0x75157b69,0xc5413d62,0xe2c4c74e,0xbc5fc4c7,0xbe329ff7,0x60fa9dda,0x835a2aea,0x7445cb87,0xf117f5ad + DD 0xb0166f7a,0xae8317f4,0xceec74e6,0xfbd3e3f7,0xe0874bfd,0xfdb516ac,0xc681f3a3,0x3d846019,0x7c1620b0,0x0b12ee5c,0x2b63c501,0xba68b4dd,0x6668c51e,0xac03cd32,0x4e0bcb5b,0x2a6279f7 + DD 0x6ae85c10,0x17bd69b0,0x1dfdd3a6,0x72946979,0x2c078bec,0xd9a03268,0xbfd68a52,0x41c6a658,0x0e023900,0xcdea1024,0xb10d144d,0xbaeec121,0x058ab8dc,0x5a600e74,0xbb89ccdd,0x1333af21 + DD 0x3aaba1f1,0xdf25eae0,0x3b7144cf,0x2cada16e,0x71ab98bc,0x657ee27d,0x7a6fc96e,0x99088b4c,0x3549dbd4,0x05d5c0a0,0xf158c3ac,0x42cbdf8f,0x87edd685,0x3fb6b3b0,0x86f064d0,0x22071cf6 + DD 0xff2811e5,0xd2d6721f,0xfe7fae8c,0xdb81b703,0xd3f1f7bb,0x3cfb74ef,0x16cdeb5d,0x0cdbcd76,0x566a808c,0x4f39642a,0x340064d6,0x02b74454,0x0528fa6f,0xfabbadca,0xd3fc0bb6,0xe4c3074c + DD 0xb796d219,0xb32cb8b0,0x34741dd9,0xc3e95f4f,0x68edf6f5,0x87212125,0xa2b9cb8e,0x7a03aee4,0xf53a89aa,0x0cd3c376,0x948a28dc,0x0d8af9b1,0x902ab04f,0xcf86a3f4,0x7f42002d,0x8aacb62a + DD 0xf62ffd52,0x106985eb,0x5797bf10,0xe670b54e,0xc5e30aef,0x4b405209,0x4365b5e9,0x12c97a20,0x1fe32093,0x104646ce,0x3907a8c9,0x13cb4ff6,0xd46e726b,0x8b9f30d1,0xaba0f499,0xe1985e21 + DD 0x10a230cd,0xc573dea9,0xcd30f947,0x24f46a93,0xabe2010a,0xf2623fcf,0x73f00e4f,0x3f278cb2,0x50b920eb,0xed55c67d,0x8e760571,0xf1cb9a2d,0x0895b709,0x7c50d109,0x190d4369,0x4207cf07 + DD 0xc4127fe1,0x3b027e81,0x3ae9c566,0xa9f8b9ad,0xacbfbba5,0x5ab10851,0x569556f5,0xa747d648,0x2ba97bf7,0xcc172b5c,0xbcfa3324,0x15e0f77d,0x7686279d,0xa345b797,0xe38003d3,0x5a723480 + DD 0x8f5fcda8,0xfd8e139f,0xbdee5bfd,0xf3e558c4,0xe33f9f77,0xd76cbaf4,0x71771969,0x3a4c97a4,0xf6dce6a7,0xda27e84b,0x13e6c2d1,0xff373d96,0xd759a6e9,0xf115193c,0x63d2262c,0x3f9b7025 + DD 0x317cd062,0xd9764a31,0x199f8332,0x30779d8e,0x16b11b0b,0xd8074106,0x78aeaed8,0x7917ab9f,0x28fb1d8e,0xb67a9cbe,0x136eda33,0x2e313563,0xa371a86c,0x010b7069,0x6744e6b7,0x44d90fa2 + DD 0xd6b3e243,0x68190867,0x59048c48,0x9fe6cd9d,0x95731538,0xb900b028,0x32cae04f,0xa012062f,0x9399d082,0x8107c8bc,0x41df12e2,0x47e8c54a,0xb6ef3f73,0x14ba5117,0x81362f0b,0x22260bea + DD 0x1a18cc20,0x90ea261e,0x2321d636,0x2192999f,0xe311b6a0,0xef64d314,0x3b54a1f5,0xd7401e4c,0x6fbca2ba,0x19019983,0x8fbffc4b,0x46ad3293,0x3786bf40,0xa142d3f6,0xb67039fc,0xeb5cbc26 + DD 0x252bd479,0x9cb0ae6c,0x12b5848f,0x05e0f88a,0xa5c97663,0x78f6d2b2,0xc162225c,0x6f6e149b,0xde601a89,0xe602235c,0xf373be1f,0xd17bbe98,0xa8471827,0xcaf49a5b,0x18aaa116,0x7e1a0a85 + DD 0x270580c3,0x6c833196,0xf1c98a14,0x1e233839,0xae34e0a5,0x67b2f7b4,0xd8ce7289,0x47ac8745,0x100dd467,0x2b74779a,0x4ee50d09,0x274a4337,0x83608bc9,0x603dcf13,0xc89e8388,0xcd9da6c3 + DD 0x355116ac,0x2660199f,0xb6d18eed,0xcc38bb59,0x2f4bc071,0x3075f31f,0x265dc57e,0x9774457f,0xc6db88bb,0x06a6a9c8,0x4ec98e04,0x6429d07f,0x05ecaa8b,0x8d05e57b,0x7872ea7b,0x20f140b1 + DD 0xca494693,0xdf8c0f09,0xf252e909,0x48d3a020,0x57b14b12,0x4c5c29af,0xbf47ad1c,0x7e6fa37d,0x49a0c938,0x66e7b506,0x6be5f41f,0xb72c0d48,0xb2359412,0x6a6242b8,0x8e859480,0xcd35c774 + DD 0x87baa627,0x12536fea,0xf72aa680,0x58c1fec1,0x601e5dc9,0x6c29b637,0xde9e01b9,0x9e3c3c1c,0x2bcfe0b0,0xefc8127b,0x2a12f50d,0x35107102,0x4879b397,0x6ccd6cb1,0xf8a82f21,0xf792f804 + DD 0xa9b46402,0x509d4804,0xc10f0850,0xedddf85d,0x4b6208aa,0x928410dc,0x391012dc,0xf6229c46,0x7727b9b6,0xc5a7c41e,0xaa444842,0x289e4e4b,0xe9a947ea,0x049ba1d9,0x83c8debc,0x44f9e47f + DD 0x611f8b8e,0xfa77a1fe,0xf518f427,0xfd2e416a,0x114ebac3,0xc5fffa70,0x5d89697b,0xfe57c4e9,0xb1aaf613,0xfdd053ac,0xea585a45,0x31df210f,0x24985034,0x318cc10e,0x5f1d6130,0x1a38efd1 + DD 0x0b1e9e21,0xbf86f237,0x1dbe88aa,0xb258514d,0x90c1baf9,0x1e38a588,0xbdb9b692,0x2936a01e,0x6dd5b20c,0xd576de98,0x70f98ecf,0xb586bf71,0xc42d2fd7,0xcccf0f12,0xfb35bd7b,0x8717e61c + DD 0x35e6fc06,0x8b1e5722,0x0b3e13d5,0x3477728f,0xaa8a7372,0x150c294d,0x3bfa528a,0xc0291d43,0xcec5a196,0xc6c8bc67,0x5c2e8a7c,0xdeeb31e4,0xfb6e1c51,0xba93e244,0x2e28e156,0xb9f8b71b + DD 0x968a2ab9,0xce65a287,0x46bbcb1f,0xe3c5ce69,0xe7ae3f30,0xf8c835b9,0xff72b82b,0x16bbee26,0xfd42cd22,0x665e2017,0xf8b1d2a0,0x1e139970,0x79204932,0x125cda29,0x49c3bee5,0x7aee94a5 + DD 0x89821a66,0x68c70160,0x8f981669,0xf7c37678,0x48cc3645,0xd90829fc,0xd70addfc,0x346af049,0x370bf29c,0x2057b232,0x42e650ee,0xf90c73ce,0xa126ab90,0xe03386ea,0x975a087b,0x0e266e7e + DD 0x0fca65d9,0x80578eb9,0x16af45b8,0x7e2989ea,0xcac75a4e,0x7438212d,0x4fef36b8,0x38c7ca39,0xd402676a,0x8650c494,0xf72c7c48,0x26ab5a66,0xce3a464e,0x4e6cb426,0x2b72f841,0xf8f99896 + DD 0x1a335cc8,0x8c318491,0x6a5913e4,0x563459ba,0xc7b32919,0x1b920d61,0xa02425ad,0x805ab8b6,0x8d006086,0x2ac512da,0xbcf5c0fd,0x6ca4846a,0xac2138d7,0xafea51d8,0x344cd443,0xcb647545 + DD 0xbd7d9040,0x0429ee8f,0x819b9c96,0xee66a2de,0xdea7d744,0x54f9ec25,0x671721bb,0x2ffea642,0x114344ea,0x4f19dbd1,0xfd0dbc8b,0x04304536,0x29ec7f91,0x014b50aa,0xbb06014d,0xb5fc22fe + DD 0x1ee682e0,0x60d963a9,0xfe85c727,0xdf48abc0,0x2e707c2d,0x0cadba13,0xa645aeff,0xde608d3a,0xedafd883,0x05f1c28b,0xbd94de1f,0x3c362ede,0x13593e41,0x8dd0629d,0x766d6eaf,0x0a5e736f + DD 0xf68cf9d1,0xbfa92311,0xc1797556,0xa4f9ef87,0x5601c209,0x10d75a1f,0x09b07361,0x651c374c,0x88b5cead,0x49950b58,0x6fa9dbaa,0x0ef00058,0x4e15f33a,0xf51ddc26,0x2ef46140,0x1f8b5ca6 + DD 0xee9523f0,0x343ac0a3,0x975ea978,0xbb75eab2,0x107387f4,0x1bccf332,0x9ab0062e,0x790f9259,0x1e4f6a5f,0xf1a363ad,0x62519a50,0x06e08b84,0x7265f1ee,0x60915187,0x93ae985e,0x6a80ca34 + DD 0xaaba4864,0x81b29768,0x8d52a7d6,0xb13cabf2,0x8ead03f1,0xb5c36348,0x81c7c1c0,0xc932ad95,0xcae1e27b,0x5452708e,0x1b0df648,0x9dac4269,0xdfcdb8bc,0x233e3f0c,0xec540174,0xe6ceccdf + DD 0x95081181,0xbd0d845e,0x699355d5,0xcc8a7920,0xc3b375a8,0x111c0f6d,0xfd51e0dc,0xfd95bc6b,0x6888523a,0x4a106a26,0xcb01a06d,0x4d142bd6,0xadb9b397,0x79bfd289,0xe9863914,0x0bdbfb94 + DD 0x1660f6a6,0x29d8a229,0x551c042d,0x7f6abcd6,0x0ac3ffe8,0x13039deb,0xec8523fb,0xa01be628,0x0ca1c328,0x6ea34103,0xb903928e,0xc74114bd,0x9e9144b0,0x8aa4ff4e,0x7f9a4b17,0x7064091f + DD 0xe447f2c4,0xa3f4f521,0x604291f0,0x81b8da7a,0x7d5926de,0xd680bc46,0x34a1202f,0x84f21fd5,0x4e9df3d8,0x1d1e3181,0x39ab8d34,0x1ca4861a,0x5b19aa4a,0x809ddeec,0x4d329366,0x59f72f7e + DD 0x386d5087,0xa2f93f41,0xdd67d64f,0x40bf739c,0x66702158,0xb4494205,0x73b1e178,0xc33c65be,0x38ca6153,0xcdcd657c,0xdc791976,0x97f4519a,0xcd6e1f39,0xcc7c7f29,0x7e3c3932,0x38de9cfb + DD 0x7b793f85,0xe448eba3,0xf067e914,0xe9f8dbf9,0xf114ae87,0xc0390266,0xcd6a8e2a,0x39ed75a7,0x7ffba390,0xadb14848,0x6af9bc09,0x67f8cb8b,0x9c7476db,0x322c3848,0x52a538d6,0xa320fecf + DD 0xb2aced2b,0xe0493002,0x616bd430,0xdfba1809,0xc331be70,0x531c4644,0x90d2e450,0xbc04d32e,0x0f9f142d,0x1805a0d1,0x47ee5a23,0x2c44a0c5,0x3989b4e3,0x31875a43,0x0c063481,0x6b1949fd + DD 0xbe0f4492,0x2dfb9e08,0xe9d5e517,0x3ff0da03,0xf79466a8,0x03dbe9a1,0x15ea9932,0x0b87bcd0,0xab1f58ab,0xeb64fc83,0x817edc8a,0x6d9598da,0x1d3b67e5,0x699cff66,0x92635853,0x645c0f29 + DD 0xeabaf21c,0x253cdd82,0x2241659e,0x82b9602a,0x2d9f7091,0x2cae07ec,0x8b48cd9b,0xbe4c720c,0x6f08d6c9,0x6ce5bc03,0xaf10bf40,0x36e8a997,0x3e10ff12,0x83422d21,0xbcc12494,0x7b26d3eb + DD 0xc9469ad6,0xb240d2d0,0x30afa05b,0xc4a11b4d,0xdd6ba286,0x4b604ace,0x3ee2864c,0x18486600,0x8d9ce5be,0x5869d6ba,0xff4bfb0d,0x0d8f68c5,0x5700cf73,0xb69f210b,0x6d37c135,0x61f6653a + DD 0x5aff5a48,0xff3d432b,0x72ba3a69,0x0d81c4b9,0xfa1899ef,0xee879ae9,0x2d6acafd,0xbac7e2a0,0x1c664399,0xd6d93f6c,0x5bcb135d,0x4c288de1,0x9dab7cbf,0x83031dab,0x3abbf5f0,0xfe23feb0 + DD 0xcdedca85,0x9f1b2466,0x1a09538c,0x140bb710,0x5e11115d,0xac8ae851,0x6f03f59e,0x0d63ff67,0x7d234afb,0x755e5551,0x7e208fc1,0x61c2db4e,0xf28a4b5d,0xaa9859ce,0x34af030f,0xbdd6d4fc + DD 0x3be01cb1,0xd1c4a26d,0x243aa07c,0x9ba14ffc,0xb2503502,0xf95cd3a9,0x7d2a93ab,0xe379bc06,0xd4ca8d68,0x3efc18e9,0x80bb412a,0x083558ec,0x9645a968,0xd903b940,0x9ba6054f,0xa499f0b6 + DD 0xb8349abe,0x208b573c,0x30b4fc1c,0x3baab3e5,0xcb524990,0x87e978ba,0xccdf0e80,0x3524194e,0x7d4bcc42,0x62711725,0xb90109ba,0xe90a3d9b,0x1323e1e0,0x3b1bdd57,0x5eae1599,0xb78e9bd5 + DD 0x9e03d278,0x0794b746,0xd70e6297,0x80178605,0x99c97855,0x171792f8,0xf5a86b5c,0x11b393ee,0xd8884f27,0x48ef6582,0xbf19ba5f,0xbd44737a,0xa42062c6,0x8698de4c,0x61ce9c54,0x8975eb80 + DD 0xd7fe71f3,0xd50e57c7,0xbc97ce38,0x15342190,0x4df07b63,0x51bda2de,0x200eb87d,0xba12aeae,0xa9b4f8f6,0xabe135d2,0xfad6d99c,0x04619d65,0x7994937c,0x4a6683a7,0x6f94f09a,0x7a778c8b + DD 0x20a71b89,0x8c508623,0x1c229165,0x241a2aed,0xaaf83a99,0x352be595,0x1562bac8,0x9fbfee7f,0x5c4017e3,0xeaf658b9,0x15120b86,0x1dc7f9e0,0x4c034d6f,0xd84f13dd,0xeaea3038,0x283dd737 + DD 0xcd85d6a2,0x197f2609,0xfae60177,0x6ebbc345,0x4e12fede,0xb80f031b,0x07a2186b,0xde55d0c2,0x24dcdd5a,0x1fb3e37f,0x7ed191fb,0x8d602da5,0x76023e0d,0x108fb056,0x459c20c0,0x70178c71 + DD 0x3fe54cf0,0xfad5a386,0x02bbb475,0xa4a3ec4f,0x919d94d7,0x1aa5ec20,0xa81e4ab3,0x5d3b63b5,0x5ad3d2af,0x7fa733d8,0xd1ac7a37,0xfbc586dd,0x40779614,0x282925de,0xe74a242a,0xfe0ffffb + DD 0x906151e5,0x3f39e67f,0x55e10649,0xcea27f5f,0xc17cf7b7,0xdca1d4e1,0x2fe2362d,0x0c326d12,0x7dd35df3,0x05f7ac33,0xc396dbdf,0x0c3b7639,0x03b7db1c,0x0912f5ac,0x5c9ed4a9,0x9dea4b70 + DD 0xaae3f639,0x475e6e53,0xfc278bac,0xfaba0e7c,0x9490375f,0x16f9e221,0xa5a7ed0a,0xaebf9746,0xf41ad5d6,0x45f9af3f,0xb2e99224,0x03c4623c,0xb3cf56aa,0x82c5bb5c,0x34567ed3,0x64311819 + DD 0x8be489ac,0xec57f211,0xb9a1104b,0x2821895d,0x6064e007,0x610dc875,0x5b20d0fe,0x8e526f3f,0x5b645aee,0x6e71ca77,0x800e10ff,0x3d1dcb9f,0x189cf6de,0x36b51162,0x6bb17353,0x2c5a3e30 + DD 0x2a6c6fbf,0xc186cd3e,0x4bf97906,0xa74516fa,0x279d6901,0x5b4b8f4b,0x2b573743,0x0c4e57b4,0xb6e386b6,0x75fdb229,0x99deac27,0xb46793fd,0xcf712629,0xeeec47ea,0xcbc3b2dd,0xe965f3c4 + DD 0x425c6559,0x8dd1fb83,0x0af06fda,0x7fc00ee6,0x33d956df,0xe98c9225,0x4fbdc8a2,0x0f1ef335,0xb79b8ea2,0x2abb5145,0xbdbff288,0x40fd2945,0xd7185db7,0x6a814ac4,0xc084609a,0xc4329d6f + DD 0xed1be45d,0xc9ba7b52,0xe4cd2c74,0x891dd20d,0x824139b1,0x5a4d4a7f,0xb873c710,0x66c17716,0x2843c4e0,0x5e5bc141,0xb97eb5bf,0xd5ac4817,0x450c95c7,0xc0f8af54,0x318406c5,0xc91b3fa0 + DD 0xab9d97f8,0x360c340a,0x90a2d611,0xfb57bd07,0xa6a6f7e5,0x4339ae3c,0x2feb8a10,0x9c1fcd2a,0xc7ea7432,0x972bcca9,0x308076f6,0x1b0b924c,0x2a5b4ca5,0x80b2814a,0x61ef3b29,0x2f78f55b + DD 0xc18a414f,0xf838744a,0x903d0a86,0xc611eaae,0x2a453f55,0x94dabc16,0x14efb279,0xe6f2e3da,0x9320dc3c,0x5b7a6017,0x8df6b5a4,0x692e382f,0x2d40fa90,0x3f5e15e0,0x643dd318,0xc87883ae + DD 0x53544774,0x511053e4,0x3adba2bc,0x834d0ecc,0xbae371f5,0x4215d7f7,0x6c8663bc,0xfcfd57bf,0xd6901b1d,0xded2383d,0xb5587dc3,0x3b49fbb4,0x07625f62,0xfd44a08d,0x9de9b762,0x3ee4d65b + DD 0x0d63d1fa,0x64e5137d,0x02a9d89f,0x658fc052,0x50436309,0x48894874,0xd598da61,0xe9ae30f8,0x818baf91,0x2ed710d1,0x8b6a0c20,0xe27e9e06,0x1c1a6b44,0x1e28dcfb,0xd6ac57dc,0x883acb64 + DD 0xc2c6ff70,0x8735728d,0xc5dc2235,0x79d6122f,0x19e277f9,0x23f5d003,0xdded8cc7,0x7ee84e25,0x63cd880a,0x91a8afb0,0x3574af60,0x3f3ea7c6,0x02de7f42,0x0cfcdc84,0xb31aa152,0x62d0792f + DD 0x8a5807ce,0x8e1b4e43,0xe4109a7e,0xad283893,0xafd59dda,0xc30cc9cb,0x3d8d8093,0xf65f36c6,0xa60d32b2,0xdf31469e,0x3e8191c8,0xee93df4b,0x355bdeb5,0x9c1017c5,0x8616aa28,0xd2623185 + DD 0xdec31a21,0xb02c83f9,0x6ad9d573,0x988c8b23,0xa57be365,0x53e983ae,0x646f834e,0xe968734d,0x5da6309b,0x9137ea8f,0xc1f1ce16,0x10f3a624,0xca440921,0x782a9ea2,0x5b46f1b5,0xdf94739e + DD 0xcce85c9b,0x9f9be006,0xa4c7c2d3,0x360e70d6,0xaefa1e60,0x2cd5beea,0x8c3d2b6d,0x64cf63c0,0xe1cf6f90,0xfb107fa3,0xd5e044e6,0xb7e937c6,0xce34db9f,0x74e8ca78,0x3e210bd0,0x4f8b36c1 + DD 0x34a35ea8,0x1df165a4,0x4d4412f6,0x3418e0f7,0x518836c3,0x5af1f8af,0x130e1965,0x42ceef4d,0x543a1957,0x5560ca0b,0x886cb123,0xc33761e5,0xfe98ed30,0x66624b1f,0x1090997d,0xf772f4bf + DD 0x4885d410,0xf4e540bb,0x9ba5f8d7,0x7287f810,0xde98dfb1,0x22d0d865,0xbcfbb8a3,0x49ff51a1,0x6bc3012e,0xb6b6fa53,0x170d541d,0x3d31fd72,0x4b0f4966,0x8018724f,0x87dbde07,0x79e7399f + DD 0xf4f8b16a,0x56f8410e,0xc47b266a,0x97241afe,0x6d9c87c1,0x0a406b8e,0xcd42ab1b,0x803f3e02,0x04dbec69,0x7f0309a8,0x3bbad05f,0xa83b85f7,0xad8e197f,0xc6097273,0x5067adc1,0xc097440e + DD 0x3524ff16,0x730eafb6,0x823fc6ce,0xd7f9b51e,0x443e4ac0,0x27bd0d32,0x4d66f217,0x40c59ad9,0x17c387a4,0x6c33136f,0xeb86804d,0x5043b8d5,0x675a73c9,0x74970312,0xf16669b6,0x838fdb31 + DD 0x418e7ddd,0xc507b6dd,0x472f19d6,0x39888d93,0x0c27eb4d,0x7eae26be,0xfbabb884,0x17b53ed3,0x2b01ae4f,0xfc27021b,0xcf488682,0x88462e87,0x215e2d87,0xbee096ec,0xd242e29b,0xeb2fea9a + DD 0xb821fc28,0x5d985b5f,0xdc1e2ad2,0x89d2e197,0x9030ba62,0x55b566b8,0x4f41b1c6,0xe3fd41b5,0xb9a96d61,0xb738ac2e,0x369443f4,0x7f8567ca,0xf803a440,0x8698622d,0x8fe2f4dc,0x2b586236 + DD 0x56b95bce,0xbbcc00c7,0x616da680,0x5ec03906,0x72214252,0x79162ee6,0x86a892d2,0x43132b63,0x2f3263bf,0x4bdd3ff2,0x9cd0a142,0xd5b3733c,0x44415ccb,0x592eaa82,0x8d5474ea,0x663e8924 + DD 0x5236344e,0x8058a25e,0xbda76ee6,0x82e8df9d,0x11cc3d22,0xdcf6efd8,0x3b4ab529,0x00089cda,0xbd38a3db,0x91d3a071,0xef72b925,0x4ea97fc0,0xea3edf75,0x0c9fc15b,0xa4348ed3,0x5a6297cd + DD 0xce7c42d4,0x0d38ab35,0x82feab10,0x9fd493ef,0x82111b45,0x46056b6d,0x73efc5c3,0xda11dae1,0x5545a7fb,0xdc740278,0x40d507e6,0xbdb2601c,0x7066fa58,0x121dfeeb,0x39ae8c2a,0x214369a8 + DD 0x06e0956c,0x195709cb,0x010cd34b,0x4c9d254f,0x0471a532,0xf51e13f7,0x1e73054d,0xe19d6791,0xdb5c7be3,0xf702a628,0xb24dde05,0xc7141218,0xf29b2e2e,0xdc18233c,0x85342dba,0x3a6bd1e8 + DD 0xb311898c,0x3f747fa0,0xcd0eac65,0xe2a272e4,0xf914d0bc,0x4bba5851,0xc4a43ee3,0x7a1a9660,0xa1c8cde9,0xe5a367ce,0x7271abe3,0x9d958ba9,0x3d1615cd,0xf3ff7eb6,0xf5ae20b0,0xa2280dce + DD 0xcf640147,0x56dba5c1,0x5e83d118,0xea5a2e3d,0xda24c511,0x04cd6b6d,0xe854d214,0x1c0f4671,0x69565381,0x91a6b7a9,0xdecf1f5b,0xdc966240,0xfcf5d009,0x1b22d21c,0x9021dbd5,0x2a05f641 + DD 0xd4312483,0x8c0ed566,0x643e216f,0x5179a95d,0x17044493,0xcc185fec,0x54991a21,0xb3063339,0x0081a726,0xd801ecdb,0x4fa89bbb,0x0149b0c6,0x4391b6b9,0xafe9065a,0xd633f3a3,0xedc92786 + DD 0xae6a8e13,0xe408c24a,0x9f3897ab,0x85833fde,0xd81a0715,0x43800e7e,0xb44ffc5f,0xde08e346,0xcdeff2e0,0x7094184c,0x165eaed1,0x49f9387b,0x777c468a,0x635d6129,0x538c2dd8,0x8c0dcfd1 + DD 0x7a6a308b,0xd6d9d9e3,0x4c2767d3,0x62375830,0xf38cbeb6,0x874a8bc6,0xccb6fd9e,0xd94d3f1a,0xba21f248,0x92a9735b,0x6cd1efb0,0x272ad0e5,0x05b03284,0x7437b69c,0x6948c225,0xe7f04702 + DD 0xcba2ecec,0x8a56c04a,0xe3a73e41,0x0c181270,0x03e93725,0x6cb34e9d,0x496521a9,0xf77c8713,0xfa7f9f90,0x94569183,0x8c9707ad,0xf2e7aa4c,0x26c1c9a3,0xced2c9ba,0x40197507,0x9109fe96 + DD 0xe9adfe1c,0x9ae868a9,0x314e39bb,0x3984403d,0xf2fe378f,0xb5875720,0xba44a628,0x33f901e0,0x3652438c,0xea1125fe,0x9dd1f20b,0xae9ec4e6,0xbebf7fbd,0x1e740d9e,0x42dbe79c,0x6dbd3ddc + DD 0xedd36776,0x62082aec,0xe9859039,0xf612c478,0x032f7065,0xa493b201,0x4ff9b211,0xebd4d8f2,0xaac4cb32,0x3f23a0aa,0x15ed4005,0xea3aadb7,0xafa27e63,0xacf17ea4,0xc11fd66c,0x56125c1a + DD 0x3794f8dc,0x266344a4,0x483c5c36,0xdcca923a,0x3f9d10a0,0x2d6b6bbf,0x81d9bdf3,0xb320c5ca,0x47b50a95,0x620e28ff,0xcef03371,0x933e3b01,0x99100153,0xf081bf85,0xc3a8c8d6,0x183be9a0 + DD 0xd6bbe24d,0x4e3ddc5a,0x53843795,0xc6c74630,0x65ec2d4c,0x78193dd7,0xcd3c89b2,0xb8df26cc,0x5a483f8d,0x98dbe399,0x7dd3313a,0x72d8a957,0xab0bd375,0x65087294,0x7c259d16,0xfcd89248 + DD 0x7613aa81,0x8a9443d7,0x85fe6584,0x80100800,0x7fb10288,0x70fc4dbc,0xe86beee8,0xf58280d3,0x7c978c38,0x14fdd82f,0x0de44d7b,0xdf1204c1,0x4160252f,0xa08a1c84,0xc17646a5,0x591554ca + DD 0xa05bd525,0x214a37d6,0x07957b3c,0x48d5f09b,0xd7109bc9,0x0247cdcb,0x30599ce7,0x40f9e4bb,0xf46ad2ec,0xc325fa03,0xc3e3f9ee,0x00f766cf,0xd43a4577,0xab556668,0x3ee03b93,0x68d30a61 + DD 0x77b46a08,0x7ddc81ea,0xc7480699,0xcf5a6477,0x6633f683,0x43a8cb34,0x92363c60,0x1b867e6b,0x1f60558e,0x43921114,0x2f41450e,0xcdbcdd63,0xcc630e8b,0x7fc04601,0x97038b43,0xea7c66d5 + DD 0x04e99fd8,0x7259b8a5,0x4785549a,0x98a8dd12,0x840552e1,0x0e459a7c,0x4bb0909e,0xcdfcf4d0,0x53758da7,0x34a86db2,0xeac997e1,0xe643bb83,0x530c5b7e,0x96400bd7,0xb41c8b52,0x9f97af87 + DD 0xfbeee3f9,0x34fc8820,0x49091afd,0x93e53490,0x9a31f35c,0x764b9be5,0x57e3d924,0x71f37864,0x943aa75e,0x02fb34e0,0xab8ff6e4,0xa18c9c58,0x33cf0d19,0x080f31b1,0x083518a7,0x5c9682db + DD 0xb709c3de,0x873d4ca6,0x3575b8f0,0x64a84262,0x020154bb,0x6275da1f,0xd17cf1ab,0x97678caa,0x951a95c3,0x8779795f,0x50fccc08,0xdd35b163,0x33d8f031,0x32709627,0x498dd85c,0x3c5ab10a + DD 0x41dca566,0xb6c185c3,0xd8622aa3,0x7de7feda,0x901b6dfb,0x99e84d92,0x7c4ad288,0x30a02b0e,0x2fd3cf36,0xc7c81daa,0xdf89e59f,0xd1319547,0xcd496733,0xb2be8184,0x93d3412b,0xd5f449eb + DD 0x25fe531d,0x7ea41b1b,0x6a1d5646,0xf9797432,0x2bde501a,0x86067f72,0x0c85e89c,0xf91481c0,0xf8b05bc6,0xca8ee465,0x02e83cda,0x1844e1cf,0xb4dbe33b,0xca82114a,0x4eabfde2,0x0f9f8769 + DD 0x38b27fe2,0x4936b1c0,0xaba402df,0x63b6359b,0x656bdbab,0x40c0ea2f,0x6580c39c,0x9c992a89,0x2a60aed1,0x600e8f15,0xe0bf49df,0xeb089ca4,0x2d42d99a,0x9c233d7d,0x4c6bc2fa,0x648d3f95 + DD 0xe1add3f3,0xdcc383a8,0x4f64a348,0xf42c0c6a,0x0030dbdb,0x2abd176f,0x7d6c215e,0x4de501a3,0x4b9a64bc,0x4a107c1f,0x2496cd59,0xa77f0ad3,0x7688dffb,0xfb78ac62,0x67937d8e,0x7025a2ca + DD 0xd1a8f4e7,0xfde8b2d1,0x7354927c,0xf5b3da47,0xd9205735,0xe48606a3,0xe177b917,0xac477cc6,0xa883239a,0xfb1f73d2,0xcc8b8357,0xe12572f6,0xfb1f4f86,0x9d355e9c,0xd9f3ec6e,0x89b795f8 + DD 0xb54398dc,0x27be56f1,0x3fedeed5,0x1890efd7,0x9c6d0140,0x62f77f1f,0x596f0ee4,0x7ef0e314,0xcc61dab3,0x50ca6631,0xf4866e4f,0x4a39801d,0xae363b39,0x66c8d032,0x2ead66aa,0x22c591e5 + DD 0xde02a53e,0x954ba308,0xd389f357,0x2a6c060f,0xfbf40b66,0xe6cfcde8,0xc6340ce1,0x8e02fc56,0x73adb4ba,0xe4957795,0xa7b03805,0x7b86122c,0x0c8e6fa6,0x63f83512,0x057d7804,0x83660ea0 + DD 0x21ba473c,0xbad79105,0xded5389d,0xb6c50bee,0xaa7c9bc0,0xee2caf4d,0x8c4e98a7,0xd97b8de4,0xab3bbddb,0xa9f63e70,0x2597815a,0x3898aabf,0xac15b3d9,0x7659af89,0x703ce784,0xedf7725b + DD 0xe085116b,0x25470fab,0x87285310,0x04a43375,0xe2bfd52f,0x4e39187e,0x7d9ebc74,0x36166b44,0xfd4b322c,0x92ad433c,0xba79ab51,0x726aa817,0xc1db15eb,0xf96eacd8,0x0476be63,0xfaf71e91 + DD 0x641fad98,0xdd69a640,0x29622559,0xb7995918,0xde4199dc,0x03c6daa5,0xad545eb4,0x92cadc97,0x256534e4,0x1028238b,0x8595409a,0x73e80ce6,0xd05dc59b,0x690d4c66,0x981dee80,0xc95f7b8f + DD 0xd856ac25,0xf4337014,0xac524dca,0x441bd9dd,0x5f0499f5,0x640b3d85,0xd5fda182,0x39cf84a9,0xb2aa95a0,0x04e7b055,0x0ddf1860,0x29e33f0a,0x423f6b43,0x082e74b5,0x0aaa2b0f,0x217edeb9 + DD 0x83cbea55,0x58b83f35,0xbc185d70,0xc485ee4d,0x1e5f6992,0x833ff03b,0xcf0c0dd5,0xb5b9b9cc,0x4e9e8a50,0x7caaee8e,0x6269dafd,0x462e907b,0xfbe791c6,0x6ed5cee9,0xed430790,0x68ca3259 + DD 0x13b5ba88,0x2b72bdf2,0x35ef0ac4,0x60294c8a,0x19b99b08,0x9c3230ed,0x6c2589aa,0x560fff17,0xd6770374,0x552b8487,0x9a56f685,0xa373202d,0x45f175d9,0xd3e7f907,0xd080d810,0x3c2f315f + DD 0x7b9520e8,0x1130e9dd,0x0af037b5,0xc078f9e2,0x1e9c104c,0x38cd2ec7,0xc472fe92,0x0f684368,0x6247e7ef,0xd3f1b5ed,0x396dfe21,0xb32d33a9,0x4a9aa2c2,0x46f59cf4,0xff0f7e41,0x69cd5168 + DD 0x4b3234da,0x3f59da0f,0xb4579ebe,0xcf0b0235,0x6d2476c7,0x6d1cbb25,0x9dc30f08,0x4f0837e6,0x906f6e98,0x9a4075bb,0xc761e7d1,0x253bb434,0x6e73af10,0xde2e645f,0x0c5f131c,0xb89a4060 + DD 0xb8cc037f,0xd12840c5,0x7405bb47,0x3d093a5b,0x206348b8,0x6202c253,0xc55a3ca7,0xbf5d57fc,0x8c3bef48,0x89f6c90c,0x5a0a960a,0x23ac7623,0x552b42ab,0xdfbd3d6b,0x132061f6,0x3ef22458 + DD 0xc97e6516,0xd74e9bda,0xc230f49e,0x88779360,0x1e74ea49,0xa6ec1de3,0x3fb645a2,0x581dcee5,0x8f483f14,0xbaef2391,0xd137d13b,0x6d2dddfc,0xd2743a42,0x54cde50e,0xe4d97e67,0x89a34fc5 + DD 0x12e08ce5,0x13f1f5b3,0xa7f0b2ca,0xa80540b8,0x01982805,0x854bcf77,0x233bea04,0xb8653ffd,0x02b0b4c9,0x8e7b8787,0x9acb170a,0x2675261f,0x930c14e5,0x061a9d90,0xdef0abea,0xb59b30e0 + DD 0x0200ec7d,0x1dc19ea6,0x0bce132b,0xb6f4a3f9,0xf13e27e0,0xb8d5de90,0x1fade16f,0xbaee5ef0,0xe4c6cf38,0x6f406aaa,0xd1369815,0xab4cfe06,0xefd550c6,0x0dcffe87,0x75ff7d39,0x9d4f59c7 + DD 0x51deb6ad,0xb02553b1,0xb1877749,0x812399a4,0xca6006e1,0xce90f71f,0xb02b6e77,0xc32363a6,0xdc36c64d,0x02284fbe,0xa7e1ae61,0x86c81e31,0xb909d94a,0x2576c7e5,0x818b2bb0,0x8b6f7d02 + DD 0x56faa38a,0xeca3ed07,0x9305bb54,0xa3790e6c,0x7bc73061,0xd784eeda,0x6dd50614,0xbd56d369,0x229a8aa9,0xd6575949,0x4595ec28,0xdcca8f47,0x06ab4fe6,0x814305c1,0x24f43f16,0xc8c39768 + DD 0x523f2b36,0xe2a45f36,0x920d93bb,0x995c6493,0x90f1632b,0xf8afdab7,0x1c295954,0x79ebbecd,0x79592f48,0xc7bb3ddb,0x5f88e998,0x67216a7b,0xbc01193e,0xd91f098b,0xb1db83fc,0xf7d928a5 + DD 0xe991f600,0x55e38417,0x2981a934,0x2a91113e,0x06b13bde,0xcbc9d648,0x0755ff44,0xb011b6ac,0x045ec613,0x6f4cb518,0xc2f5930a,0x522d2d31,0x382e65de,0x5acae1af,0x27bc966f,0x57643067 + DD 0x1c7193f0,0x5e12705d,0x3be8858e,0xf0f32f47,0x96c6dfc7,0x785c3d7d,0xbf31795d,0xd75b4a20,0x342659d4,0x91acf17b,0x44f0378f,0xe596ea34,0xce52129d,0x4515708f,0x79f2f585,0x17387e1e + DD 0x49dee168,0x72cfd2e9,0x3e2af239,0x1ae05223,0x1d94066a,0x009e75be,0x38abf413,0x6cca31c7,0x9bc49908,0xb50bd61d,0xf5e2bc1e,0x4a9b4a8c,0x946f83ac,0xeb6cc5f7,0xebffab28,0x27da93fc + DD 0x4821c8c5,0xea314c96,0xa83c15f4,0x8de49ded,0x7af33004,0x7a64cf20,0xc9627e10,0x45f1bfeb,0x54b9df60,0x878b0626,0xa95c0b33,0x5e4fdc3c,0xc2035d8e,0xe54a37ca,0x80f20b8c,0x9087cda9 + DD 0x8319ade4,0x36f61c23,0xde8cfdf8,0x766f287a,0x346f3705,0x48821948,0x16e4f4a2,0x49a7b853,0x5cedadfd,0xb9b3f8a7,0x8db2a815,0x8f562815,0x01f68f95,0xc0b7d554,0x688a208e,0x12971e27 + DD 0xd0ff34fc,0xc9f8b696,0x1222718c,0x20824de2,0x0c95284d,0x7213cf9f,0xdc158240,0xe2ad741b,0x54043ccf,0x0ee3a6df,0xd84412b3,0x16ff479b,0xdfc98af0,0xf6c74ee0,0x52fcd2fb,0xa78a169f + DD 0x99c930e9,0xd8ae8746,0x49e117a5,0x1d33e858,0x6624759f,0x7581fcb4,0x5bedc01d,0xde50644f,0xcaf3155e,0xbeec5d00,0xbc73e75f,0x672d66ac,0x270b01db,0x86b9d8c6,0x50f55b79,0xd249ef83 + DD 0x73978fe3,0x6131d6d4,0x754b00a1,0xcc4e4542,0x57dfcfe9,0x4e05df05,0x51ef6bf0,0x94b29cdd,0x9bc7edf2,0xe4530cff,0xd3da65f3,0x8ac236fd,0xc8eb0b48,0x0faf7d5f,0x660eb039,0x4d2de14c + DD 0x60430e54,0xc006bba7,0xda3289ab,0x10a2d0d6,0xd7979c59,0x9c037a5d,0xa116d944,0x04d1f3d3,0x8a0983cd,0x9ff22473,0xc883cabb,0x28e25b38,0x47a58995,0xe968dba5,0x774eebdf,0x2c80b505 + DD 0x4a953beb,0xee763b71,0x1642e7f6,0x502e223f,0x61d5e722,0x6fe4b641,0xdbef5316,0x9d37c5b0,0xf8330bc7,0x0115ed70,0x75a72789,0x139850e6,0xffceccc2,0x27d7faec,0x4fd9f7f6,0x3016a860 + DD 0x4cd8f64c,0xc492ec64,0x279d7b51,0x58a2d790,0x1fc75256,0x0ced1fc5,0x8f433017,0x3e658aed,0x05da59eb,0x0b61942e,0x0ddc3722,0xba3d60a3,0x742e7f87,0x7c311cd1,0xf6b01b6e,0x6473ffee + DD 0x692ac542,0x8303604f,0x227b91d3,0xf079ffe1,0x15aaf9bd,0x19f63e63,0xf1f344fb,0xf99ee565,0xd6219199,0x8a1d661f,0xd48ce41c,0x8c883bc6,0x3c74d904,0x1065118f,0x0faf8b1b,0x713889ee + DD 0x81a1b3be,0x972b3f8f,0xce2764a0,0x4f3ce145,0x28c4f5f7,0xe2d0f1cc,0xc7f3985b,0xdeee0c0d,0xd39e25c3,0x7df4adc0,0xc467a080,0x40619820,0x61cf5a58,0x440ebc93,0x422ad600,0x527729a6 + DD 0xb1b76ba6,0xca6c0937,0x4d2026dc,0x1a2eab85,0x19d9ae0a,0xb1715e15,0xbac4a026,0xf1ad9199,0x07ea7b0e,0x35b3dfb8,0x3ed9eb89,0xedf5496f,0x2d6d08ab,0x8932e5ff,0x25bd2731,0xf314874e + DD 0x3f73f449,0xefb26a75,0x8d44fc79,0x1d1c94f8,0x3bc0dc4d,0x49f0fbc5,0x3698a0d0,0xb747ea0b,0x228d291e,0x5218c3fe,0x43c129d6,0x35b804b5,0xd1acc516,0xfac859b8,0x95d6e668,0x6c10697d + DD 0x0876fd4e,0xc38e438f,0x83d2f383,0x45f0c307,0xb10934cb,0x203cc2ec,0x2c9d46ee,0x6a8f2439,0x65ccde7b,0xf16b431b,0x27e76a6f,0x41e2cd18,0x4e3484d7,0xb9c8cf8f,0x8315244a,0x64426efd + DD 0xfc94dea3,0x1c0a8e44,0xdad6a0b0,0x34c8cdbf,0x04113cef,0x919c3840,0x15490ffa,0xfd32fba4,0x795dcfb7,0x58d190f6,0x83588baf,0xfef01b03,0xca1fc1c0,0x9e6d1d63,0xf0a41ac9,0x53173f96 + DD 0xba16f73b,0x2b1d402a,0x8cf9b9fc,0x2fb31014,0x446ef7bf,0x2d51e60e,0xb91e1745,0xc731021b,0x4fee99d4,0x9d3b4724,0xfac5c1ea,0x4bca48b6,0xbbea9af7,0x70f5f514,0x974c283a,0x751f55a5 + DD 0xcb452fdb,0x6e30251a,0x50f30650,0x31ee6965,0x933548d9,0xb0b3e508,0xf4b0ef5b,0xb8949a4f,0x3c88f3bd,0x208b8326,0xdb1d9989,0xab147c30,0x44d4df03,0xed6515fd,0xe72eb0c5,0x17a12f75 + DD 0x36cf69db,0x3b59796d,0x56670c18,0x1219eee9,0x7a070d8e,0xfe3341f7,0xa327f90c,0x9b70130b,0x0ae18e0e,0x36a32462,0x46c0a638,0x2021a623,0xc62eb0d4,0x251b5817,0x4c762293,0x87bfbcdf + DD 0xcdd61d64,0xf78ab505,0xc8c18857,0x8c7a53fc,0x16147515,0xa653ce6f,0xea7d52d5,0x9c923aa5,0x5c18871f,0xc24709cb,0x73b3cc74,0x7d53bec8,0xfdd1d4c4,0x59264aff,0x240da582,0x5555917e + DD 0x548f5a0e,0xcae8bbda,0x3bbfbbe1,0x1910eaba,0x7677afc3,0xae579685,0x73ff0b5c,0x49ea61f1,0x4f7c3922,0x78655478,0x20c68eef,0x95d337cd,0xdf779ab9,0x68f1e1e5,0xb5cf69a8,0x14b491b0 + DD 0x28e3fe89,0x7a6cbbe0,0xc5aac0eb,0xe7e1fee4,0x697e5140,0x7f47eda5,0xb454921f,0x4f450137,0x95cd8185,0xdb625f84,0xcdb2e583,0x74be0ba1,0xdd5e6de4,0xaee4fd7c,0xe8101739,0x4251437d + DD 0xac620366,0x686d72a0,0xb6d59344,0x4be3fb9c,0xa1eb75b9,0x6e8b44e7,0x91a5c10c,0x84e39da3,0xb38f0409,0x37cc1490,0x2c2ade82,0x02951943,0x1190a2d8,0x9b688783,0x231182ba,0x25627d14 + DD 0x658a6d87,0x6eb550aa,0xcf9c7325,0x1405aaa7,0x5c8748c9,0xd147142e,0x53ede0e0,0x7f637e4f,0x14ffad2c,0xf8ca2776,0xbafb6791,0xe58fb1bd,0xbf8f93fc,0x17158c23,0x0a4a4655,0x7f15b373 + DD 0xd842ca72,0x39d4add2,0x3ed96305,0xa71e4391,0x6700be14,0x5bb09cbe,0xd8befcf6,0x68d69d54,0x37183bcf,0xa45f5367,0x3370dff7,0x7152b7bb,0xbf12525b,0xcf887baa,0xd6d1e3cd,0xe7ac7bdd + DD 0x81fdad90,0x25914f78,0x0d2cf6ab,0xcf638f56,0xcc054de5,0xb90bc03f,0x18b06350,0x932811a7,0x9bbd11ff,0x2f00b330,0xb4044974,0x76108a6f,0xa851d266,0x801bb9e0,0xbf8990c1,0x0dd099be + DD 0xabe32986,0x58c5aaaa,0x50d59c27,0x0fe9dd2a,0x8d307305,0x84951ff4,0x86529b78,0x6c23f829,0x0b136a79,0x50bb2218,0x77a20996,0x7e2174de,0xc0bb4da6,0x6f00a4b9,0xefdde8da,0x89a25a17 + DD 0xc11ee01d,0xf728a27e,0xe5f10dfb,0xf900553a,0x02ec893c,0x189a83c8,0x23f66d77,0x3ca5bdc1,0x97eada9f,0x98781537,0x10256230,0x59c50ab3,0x323c69b3,0x346042d9,0x2c460449,0x1b715a6d + DD 0x6ae06e0b,0xa41dd476,0x9d42e25f,0xcdd7888e,0x56b25a20,0x0f395f74,0x8700e27e,0xeadfe0ae,0x69950093,0xb09d52a9,0x327f8d40,0x3525d9cb,0x67df886a,0xb8235a94,0x035faec2,0x77e4b0dd + DD 0x517d7061,0x115eb20a,0x6c2df683,0x77fe3433,0xcdc6fc67,0x6870ddc7,0x0b87de83,0xb1610588,0xd9c4ddbe,0x343584ca,0x3d754be2,0xb3164f1c,0xc1e6c894,0x0731ed3a,0x4f6b904c,0x26327dec + DD 0x97b5cd32,0x9d49c6de,0xb5eceecd,0x40835dae,0xd9ded7fe,0xc66350ed,0x7a678804,0x8aeebb5c,0x5b8ee9ec,0x51d42fb7,0x8e3ca118,0xd7a17bdd,0x2ef4400e,0x40d7511a,0x875a66f4,0xc48990ac + DD 0x2199e347,0x8de07d2a,0x2a39e051,0xbee75556,0x916e51dc,0x56918786,0x4a2d89ec,0xeb191313,0x37d341ed,0x6679610d,0x56d51c2b,0x434fbb41,0xd7492dba,0xe54b7ee7,0x59021493,0xaa33a79a + DD 0xe4bd6d3d,0x49fc5054,0x5ab551d0,0x09540f04,0x4942d3a6,0x8acc9085,0x2d28323b,0x231af02f,0x0992c163,0x93458cac,0x888e3bb4,0x1fef8e71,0xbe8c268c,0x27578da5,0xe805ec00,0xcc8be792 + DD 0xc61c3855,0x29267bae,0x58c1fd3b,0xebff429d,0x8c0b93b8,0x22d886c0,0x2ddb8953,0xca5e00b2,0xc3fed8b7,0xcf330117,0x819c01f6,0xd49ac6fa,0x3c0fbd54,0x6ddaa6bd,0x8049a2cf,0x91743068 + DD 0xaff2ef81,0xd67f981e,0x2818ae80,0xc3654d35,0x1b2aa892,0x81d05044,0x3d099328,0x2db067bf,0x703dcc97,0xe7c79e86,0xe133e215,0xe66f9b37,0xe39a7a5c,0xcdf119a6,0x876f1b61,0x47c60de3 + DD 0xd860f1b2,0x6e405939,0xf5ed4d4a,0x3e9a1dbc,0xc9b6bcbd,0x3f23619e,0x734e4497,0x5ee790cf,0x5bdaf9bb,0xf0a834b1,0x4ca295f0,0x02cedda7,0xcb8e378c,0x4619aa2b,0xcc987ea4,0xe5613244 + DD 0x76b23a50,0x0bc022cc,0x0a6c21ce,0x4a2793ad,0x89cac3f5,0x38328780,0xcba26d56,0x29176f1b,0x4f6f59eb,0x06296187,0x8bdc658e,0x86e9bca9,0x57e30402,0x2ca9c4d3,0x516a09bb,0x5438b216 + DD 0x7672765a,0x0a6a063c,0x0547b9bf,0x37a3ce64,0x98b1a633,0x42c099c8,0x05ee6961,0xb5ab800d,0x11a5acd6,0xf1963f59,0x46201063,0xbaee6157,0xa596210a,0x36d9a649,0x1ba7138c,0xaed04363 + DD 0xa4a82b76,0xcf817d1c,0xf3806be9,0x5586960e,0x09dc6bb5,0x7ab67c89,0x114fe7eb,0x52ace7a0,0xcbbc9b70,0xcd987618,0x604ca5e1,0x4f06fd5a,0x6dbde133,0x90af14ca,0x948a3264,0x1afe4322 + DD 0xc44b2c6c,0xa70d2ca6,0x0ef87dfe,0xab726799,0x2e696377,0x310f64dc,0x4c8126a0,0x49b42e68,0xcea0b176,0x0ea444c3,0xcb269182,0x53a8ddf7,0xbbba9dcb,0xf3e674eb,0xd8669d33,0x0d2878a8 + DD 0xd019b6a3,0x04b935d5,0x406f1e46,0xbb5cf88e,0x5b57c111,0xa1912d16,0x19ebfd78,0x9803fc21,0xc07764a9,0x4f231c9e,0xb75bd055,0xd93286ee,0x8ee6c9de,0x83a9457d,0x6087ec90,0x04695915 + DD 0x58d6cd46,0x14c6dd8a,0x8e6634d2,0x9cb633b5,0xf81bc328,0xc1305047,0x26a177e5,0x12ede0e2,0x065a6f4f,0x332cca62,0x67be487b,0xc3a47ecd,0x0f47ed1c,0x741eb187,0xe7598b14,0x99e66e58 + DD 0x63d0ff12,0x6f0544ca,0xb610a05f,0xe5efc784,0x7cad7b47,0xf72917b1,0xf2cac0c0,0x3ff6ea20,0xf21db8b7,0xcc23791b,0xd7d93565,0x7dac70b1,0x694bdaad,0x682cda1d,0x1023516d,0xeb88bb8c + DD 0xdfdbeb1b,0xc4c634b4,0xb4ee4dea,0x22f5ca72,0xe6524821,0x1045a368,0x052b18b2,0xed9e8a3f,0xb961f49a,0x9b7f2cb1,0x7b009670,0x7fee2ec1,0x22507a6d,0x350d8754,0x4db55f1d,0x561bd711 + DD 0x320bbcaf,0x4c189ccc,0xdf1de48c,0x568434cf,0x0fa8f128,0x6af1b00e,0x8907583c,0xf0ba9d02,0x32ff9f60,0x735a4004,0xc25dcf33,0x3dd8e4b6,0x42c74cef,0xf2230f16,0x013fa8ad,0xd8117623 + DD 0xf51fe76e,0x36822876,0x11d62589,0x8a6811cc,0x46225718,0xc3fc7e65,0xc82fdbcd,0xb7df2c9f,0xdd7b205b,0x3b1d4e52,0x47a2e414,0xb6959478,0xefa91148,0x05e4d793,0xfd2e9675,0xb47ed446 + DD 0x04c9d9bf,0x1a7098b9,0x1b793048,0x661e2881,0xb01ee461,0xb1a16966,0x2954746f,0xbc521308,0x2477de50,0xc909a0fc,0x7dbd51ef,0xd80bb41c,0x53294905,0xa85be7ec,0x83958f97,0x6d465b18 + DD 0xfb6840fd,0x16f6f330,0x3401e6c8,0xfaaeb214,0xccb5b4f8,0xaf83d30f,0x266dec4b,0x22885739,0x7bc467df,0x51b4367c,0xd842d27a,0x926562e3,0x0fea14a6,0xdfcb6614,0xf2734cd9,0xeb394dae + DD 0x11c0be98,0x3eeae5d2,0x814e8165,0xb1e6ed11,0xe52bce1c,0x191086bc,0xa75a04da,0x14b74cc6,0x8c060985,0x63cf1186,0x2dbd7f7c,0x071047de,0xce0942ca,0x4e433b8b,0xd8fec61d,0xecbac447 + DD 0xebf3232f,0x8f0ed0e2,0xc52a2edd,0xfff80f9e,0x75b55fdb,0xad9ab433,0xe42e0c11,0x73ca7820,0xe6251b46,0x6dace0a0,0x4c0d932d,0x89bc6b5c,0x095da19a,0x3438cd77,0x8d48bdfb,0x2f24a939 + DD 0x766561b7,0x99b47e46,0x0ed0322a,0x736600e6,0x638e1865,0x06a47cb1,0xcb136000,0x927c1c2d,0x0cc5df69,0x29542337,0x09d649a9,0x99b37c02,0x6aefdb27,0xc5f0043c,0x1be95c27,0x6cdd9987 + DD 0x390420d2,0x69850931,0x0983efa4,0x299c40ac,0xaf39aead,0x3a05e778,0x43a45193,0x84274408,0x91a711a0,0x6bcd0fb9,0x9f52ab17,0x461592c8,0xda3c6ed6,0xb49302b4,0x330d7067,0xc51fddc7 + DD 0xda50d531,0x94babeb6,0xa6a7b9da,0x521b840d,0x404bdc89,0x5305151e,0xd0d07449,0x1bcde201,0x3b76a59a,0xf427a78b,0x07791a1b,0xf84841ce,0xbf91ed1c,0xebd314be,0xbf172943,0x8e61d34c + DD 0x5541b892,0x1d5dc451,0xfc9d9e54,0xb186ee41,0xd5bf610d,0x9d9f345e,0xf6acca9f,0x3e7ba65d,0xa8369486,0x9dda787a,0x8eb5ba53,0x09f9dab7,0xd6481bc3,0x5afb2033,0xafa62104,0x76f4ce30 + DD 0xf4f066b5,0xa8fa00cf,0x461dafc2,0x89ab5143,0xa3389998,0x44339ed7,0xbc214903,0x2ff862f1,0xb05556e3,0x2c88f985,0x3467081e,0xcd96058e,0xedc637ea,0x7d6a4176,0x36a5acdc,0xe1743d09 + DD 0x7eb37726,0x66fd72e2,0x1481a037,0xf7fa264e,0x45f4aa79,0x9fbd3bde,0x767c3e22,0xed1e0147,0x82e7abe2,0x7621f979,0x45f633f8,0x19eedc72,0x6137bf3a,0xe69b155e,0x414ee94e,0xa0ad13ce + DD 0x1c0e651a,0x93e3d524,0x02ce227e,0xab1a6e2a,0x4ab27eca,0xe7af1797,0xbd444f39,0x245446de,0x56c07613,0x59e22a21,0xf4275498,0x43deafce,0x67fd0946,0x10834ccb,0x47406edf,0xa75841e5 + DD 0x7b0ac93d,0xebd6a677,0x78f5e0d7,0xa6e37b0d,0x76f5492b,0x2516c096,0x9ac05f3a,0x1e4bf888,0x4df0ba2b,0xcdb42ce0,0x5062341b,0x935d5cfd,0x82acac20,0x8a303333,0x5198b00e,0x429438c4 + DD 0x049d33fa,0x1d083bc9,0x946f67ff,0x58b82dda,0x67a1d6a3,0xac3e2db8,0x1798aac8,0x62e6bead,0xde46c58c,0xfc85980f,0x69c8d7be,0xa7f69379,0x837b35ec,0x23557927,0xe0790c0c,0x06a933d8 + DD 0x077ff55d,0x827c0e9b,0xbb26e680,0x53977798,0x1d9cb54f,0x59530874,0x4aac53ef,0xcca3f449,0xa07eda0f,0x11dc5c87,0xfd6400c8,0xc138bccf,0x13e5da72,0x549680d3,0x4540617e,0xc93eed82 + DD 0x4d0b75c0,0xfd3db157,0x6386075b,0x9716eb42,0x817b2c16,0x0639605c,0xf1e4f201,0x09915109,0x5cca6c3b,0x35c9a928,0x3505c900,0xb25f7d1a,0x630480c4,0xeb9f7d20,0x2a1a501c,0xc3c7b8c6 + DD 0x5a1f8e24,0x3f99183c,0x9dd255f0,0xfdb118fa,0xc27f62a6,0xb9b18b90,0x396ec191,0xe8f732f7,0x0be786ab,0x524a2d91,0x0ac5a0f5,0x5d32adef,0x9725f694,0x9b53d4d6,0x0510ba89,0x032a76c6 + DD 0xebeb1544,0x840391a3,0x3ed73ac3,0x44b7b88c,0x256cb8b3,0xd24bae7a,0xe394cb12,0x7ceb151a,0x5bc1e6a8,0xbd6b66d0,0x090f07bf,0xec70cecb,0x7d937589,0x270644ed,0x5f1dccfe,0xee9e1a3d + DD 0x745b98d2,0xb0d40a84,0x2556ed40,0xda429a21,0x85148cb9,0xf676eced,0xded18936,0x5a22d40c,0x70e8a4ce,0x3bc4b9e5,0x9eae0379,0xbfd1445b,0x1a0bd47e,0xf23f2c0c,0xe1845531,0xa9c0bb31 + DD 0x0a4c3f6b,0x9ddc4d60,0x2c15ef44,0xbdfaad79,0x7f484acc,0xce55a236,0x055b1f15,0x08653ca7,0x538873a3,0x2efa8724,0xace1c7e7,0x09299e5d,0xade332ba,0x07afab66,0x92dd71b7,0x9be1fdf6 + DD 0x5758b11c,0xa49b5d59,0xc8654f40,0x0b852893,0x52379447,0xb63ef6f4,0x105e690c,0xd4957d29,0x646559b0,0x7d484363,0x49788a8e,0xf4a8273c,0x34ce54a9,0xee406cb8,0xf86fda9b,0x1e1c260f + DD 0xcf6a4a81,0xe150e228,0x1b488772,0x1fa3b6a3,0xc5a9c15b,0x1e6ff110,0x8ad6aa47,0xc6133b91,0x9dffa978,0x8ac5d55c,0x5f3965f2,0xba1d1c1d,0x7732b52f,0xf969f4e0,0xa5172a07,0xfceecdb5 + DD 0x10f2b8f5,0xb0120a5f,0x5c4c2f63,0xc83a6cdf,0xf8f9c213,0x4d47a491,0xd3f1bbd5,0xd9e1cce5,0xaba7e372,0x0d91bc7c,0xdfd1a2db,0xfcdc74c8,0x374618e5,0x05efa800,0x15a7925e,0x11216969 + DD 0xf6021c5d,0xd4c89823,0xeff14423,0x880d5e84,0x6dcd1396,0x6523bc5a,0x113c978b,0xd1acfdfc,0xbbb66840,0xb0c164e8,0x72b58459,0xf7f4301e,0xa638e8ec,0xc29ad4a6,0x46b78699,0xf5ab8961 + DD 0x0e954750,0x9dbd7974,0x64f9d2c6,0x0121de88,0xd985232e,0x2e597b42,0x53451777,0x55b6c3c5,0x519cb9fb,0xbb53e547,0x8428600d,0xf134019f,0xe081791a,0x5a473176,0x35fb0c08,0x2f3e2263 + DD 0x73d273b0,0xb28c3017,0x7721ef9a,0xccd21076,0xb650dc39,0x054cc292,0x6188045e,0x662246de,0x6b83c0d1,0x904b52fa,0x97e9cd46,0xa72df267,0x899725e4,0x886b43cd,0xd849ff22,0x2b651688 + DD 0x02f34533,0x60479b79,0x0c77c148,0x5e354c14,0xa8537c78,0xb4bb7581,0xefe1495f,0x188043d7,0x8c1d5026,0x9ba12f42,0x93d4aaab,0x2e0c8a26,0xaa57c450,0xbdba7b8b,0x9bbdafef,0x140c9ad6 + DD 0x25ac0f18,0x2067aa42,0x04d1fbf3,0xf7b1295b,0xa4b04824,0x14829111,0x33bd5e91,0x2ce3f192,0x8f2e1b72,0x9c7a1d55,0x302aa243,0xfe932286,0xd4be9554,0x497ca7b4,0xe0547a6e,0xb8e821b8 + DD 0x67e573e0,0xfb2838be,0x4084c44b,0x05891db9,0x96c1c2c5,0x91311373,0xd958444b,0x6aebfa3f,0xe56e55c1,0xac9cdce9,0x2caa46d0,0x7148ced3,0xb61fe8eb,0x2e10c7ef,0xff97cf4d,0x9fd835da + DD 0x081e9387,0xa36da109,0x8c935828,0xfb9780d7,0xe540b015,0xd5940332,0xe0f466fa,0xc9d7b51b,0xd6d9f671,0xfaadcd41,0xb1a2ac17,0xba6c1e28,0xed201e5f,0x066a7833,0xf90f462b,0x19d99719 + DD 0x060b5f61,0xf431f462,0x7bd057c2,0xa56f46b4,0x47e1bf65,0x348dca6c,0x41bcf1ff,0x9a38783e,0xda710718,0x7a5d33a9,0x2e0aeaf6,0x5a779987,0x2d29d187,0xca87314d,0xc687d733,0xfa0edc3e + DD 0x6a31e09b,0x9df33621,0xc1350e35,0xde89e44d,0x4ca0cf52,0x29214871,0x0b88a538,0xdf379672,0x2591d61b,0xc92a510a,0x585b447b,0x79aa87d7,0xe5287f77,0xf67db604,0x5efe7a80,0x1697c8bf + DD 0xcb198ac7,0x1c894849,0x0f264665,0xa884a93d,0x9b200678,0x2da964ef,0x009834e6,0x3c351b87,0xe2c4b44b,0xafb2ef9f,0x3326790c,0x580f6c47,0x0b02264a,0xb8480521,0x42a194e2,0x8ba6f9e2 + DD 0x8fb54738,0xfc87975f,0x27c3ead3,0x35160788,0xb74a085a,0x834116d2,0xa62fe996,0x53c99a73,0x5b81c51b,0x87585be0,0xbe0852b7,0x925bafa8,0xa84d19a7,0x76a4fafd,0x585206d4,0x39a45982 + DD 0x5eb03c0e,0x499b6ab6,0x72bc3fde,0xf19b7954,0x6e3a80d2,0xa86b5b9c,0x6d42819f,0xe4377508,0xbb3ee8a3,0xc1663650,0xb132075f,0x75eb14fc,0x7ad834f6,0xa8ccc906,0xe6e92ffd,0xea6a2474 + DD 0x0f8d6758,0x9d72fd95,0x408c07dd,0xcb84e101,0xa5e23221,0xb9114bfd,0xe94e742c,0x358b5fe2,0x95f40e75,0x1c0577ec,0x3d73f3d6,0xf0155451,0xbd1b9b66,0x9d55cd67,0xaf8d63c7,0x63e86e78 + DD 0xd3c095f1,0x39d934ab,0xe4b76d71,0x04b261be,0xe73e6984,0x1d2e6970,0x5e5fcb11,0x879fb23b,0xdfd75490,0x11506c72,0x61bcf1c1,0x3a97d085,0xbf5e7007,0x43201d82,0x798232a7,0x7f0ac52f + DD 0x6eb564d4,0x2715cbc4,0x9e570e29,0x8d6c752c,0x9ef5fd5d,0xf80247c8,0xd53eb514,0xc3c66b46,0x0f87de56,0x9666b401,0xc6c603b5,0xce62c06f,0x7e4fc942,0xae7b4c60,0x663a9c19,0x38ac0b77 + DD 0x4b049136,0xcb4d20ee,0x356a4613,0x8b63bf12,0x70e08128,0x1221aef6,0x4acb6b16,0xe62d8c51,0x379e7896,0x71f64a67,0xcafd7fa5,0xb25237a2,0x3841ba6a,0xf077bd98,0x3cd16e7e,0xc4ac0244 + DD 0x21fea4ca,0x548ba869,0xf3dfdac1,0xd36d0817,0xf4685faf,0x09d8d71f,0xc52c459a,0x8eff66be,0x0b57235e,0x182faee7,0x0106712b,0xee3c39b1,0xc0fcdcb0,0x5107331f,0xa51054ba,0x669fb9dc + DD 0x319d7682,0xb25101fb,0x0a982fee,0xb0293129,0x0261b344,0x51c1c9b9,0xbfd371fa,0x0e008c5b,0x0278ca33,0xd866dd1c,0xe5aa53b1,0x666f76a6,0x6013a2cf,0xe5cfb779,0xa3521836,0x1d3a1aad + DD 0x73faa485,0xcedd2531,0xc0a76878,0xc8ee6c4f,0x2a11667d,0xddbccfc9,0x1c2f695a,0x1a418ea9,0x51f73971,0xdb11bd92,0xda2ed89f,0x3e4b3c82,0xe73e0319,0x9a44f3f4,0x303431af,0xd1e3de0f + DD 0x50f75f9c,0x3c5604ff,0x7e752b22,0x1d8eddf3,0x3c9a1118,0x0ef074dd,0xccb86d7b,0xd0ffc172,0x037d90f2,0xabd1ece3,0x6055856c,0xe3f307d6,0x7e4c6daf,0x422f9328,0x334879a0,0x902aac66 + DD 0x94cdfade,0xb6a1e7bf,0x7fc6d634,0x6c97e1ed,0xa2fb63f8,0x662ad24d,0xa5928405,0xf81be1b9,0xd14b4206,0x86d765e4,0x8fa0db65,0xbecc2e0e,0xb17fc76c,0xa28838e0,0xe37cf24e,0xe49a602a + DD 0x567193ec,0x76b4131a,0xe5f6e70b,0xaf3c305a,0x031eebdd,0x9587bd39,0x71bbe831,0x5709def8,0x0eb2b669,0x57059983,0x875b7029,0x4d80ce1b,0x0364ac16,0x838a7da8,0xbe1c83ab,0x2f431d23 + DD 0xf9294dd3,0xe56812a6,0x9b4b0d77,0xb448d01f,0x04e8305c,0xf3ae6061,0x94d8c63e,0x2bead645,0x84fd8b07,0x0a85434d,0xf7a9dee5,0x537b983f,0xef55bd85,0xedcc5f18,0x21c6cf8b,0x2041af62 + DD 0xb940c71e,0x8e52874c,0xdb5f4b3a,0x211935a9,0x301b1dc3,0x94350492,0x29958620,0x33d2646d,0xef911404,0x16b0d64b,0x9a3c5ef4,0x9d1f25ea,0x4a352c78,0x20f200eb,0x4bd0b428,0x43929f2c + DD 0xc7196e29,0xa5656667,0x9391be48,0x7992c2f0,0x9ee0cd6e,0xaaa97cbd,0x3dc8c9bf,0x51b0310c,0xdd9f22cb,0x237f8acf,0xb585d584,0xbb1d81a1,0x8c416388,0x8d5d85f5,0x42fe474f,0x0d6e5a5a + DD 0x38235d4e,0xe7812766,0x496e3298,0x1c62bd67,0x3f175bc8,0x8378660c,0x17afdd4d,0x4d04e189,0x85a8068c,0x32a81601,0x92b29a85,0xdb58e4e1,0xc70d8a3b,0xe8a65b86,0x98a0403b,0x5f0e6f4e + DD 0x69ed2370,0x08129684,0x0871ee26,0x34dc30bd,0x7c9c5b05,0x3a5ce948,0x43a90c87,0x7d487b80,0xdd0e7179,0x4089ba37,0xb4041811,0x45f80191,0x98747ba5,0x1c3e1058,0x6e1ae592,0x98c4e13a + DD 0xe82c9f9e,0xd44636e6,0xc33a1043,0x711db87c,0xaa8aec05,0x6f431263,0x2744a4aa,0x43ff120d,0xae77779b,0xd3bd892f,0x8cdc9f82,0xf0fe0cc9,0xf1c5b1bc,0xca5f7fe6,0x44929a72,0xcc63a682 + DD 0x09dbe19a,0xc7eaba0c,0x6b5c73c2,0x2f3585ad,0x0ae50c30,0x8ab8924b,0x638b30ba,0x17fcd27a,0x10b3d5a5,0xaf414d34,0x2a9accf1,0x09c107d2,0x946a6242,0x15dac49f,0xd707d642,0xaec3df2a + DD 0x3f894ae0,0x2c2492b7,0xb75f18ce,0xf59df3e5,0x8f53cad0,0x7cb740d2,0xc4f01294,0x3eb585fb,0x32c7f717,0x17da0c86,0xaf943f4c,0xeb8c795b,0xf67c51d2,0x4ee23fb5,0x68889949,0xef187575 + DD 0x0389168b,0xa6b4bdb2,0xea577d03,0xc4ecd258,0x55743082,0x3a63782b,0xc72f08cd,0x6f678f4c,0x65e58dd8,0x553511cf,0xd402c0cd,0xd53b4e3e,0xa037c14c,0x37de3e29,0xc05712aa,0x86b6c516 + DD 0xb38dff6f,0x2834da3e,0xea636be8,0xbe012c52,0x61dd37f8,0x292d238c,0x8f8142db,0x0e54523f,0x036a05d8,0xe31eb436,0x1e93c0ff,0x83e3cdff,0x50821ddf,0x3fd2fe0f,0xff9eb33b,0xc8e19b0d + DD 0xb569a5fe,0xc8cc943f,0xd4342d75,0xad0090d4,0xcaeca000,0x82090b4b,0x1bd410eb,0xca39687f,0x65959d77,0xe7bb0df7,0x9c964999,0x39d78218,0xb2415451,0xd87f62e8,0xbed76108,0xe5efb774 + DD 0xe822f0d0,0x3ea011a4,0x5a8704f8,0xbc647ad1,0x50c6820f,0xbb315b35,0xb7e76bec,0x863dec3d,0xf017bfc7,0x01ff5d3a,0x976b8229,0x20054439,0x0bbd0d3b,0x067fca37,0x7f5e3d0f,0xf63dde64 + DD 0x2a4c94e9,0x22dbefb3,0x96f8278a,0xafbff0fe,0x3503793d,0x80aea0b1,0x5f06cd29,0xb2238029,0x8ec3feca,0x65703e57,0x393e7053,0x06c38314,0x7c6734c4,0xa0b751eb,0xc59f0f1e,0xd2e8a435 + DD 0x5e9ca895,0x147d9052,0x972072df,0x2f4dd31e,0xe6c6755c,0xa16fda8e,0xcf196558,0xc66826ff,0x0cf43895,0x1f1a76a3,0x83c3097b,0xa9d604e0,0x66390e0e,0xe1908309,0xb3c85eff,0xa50bf753 + DD 0xf6a70251,0x0696bdde,0x3c6ab16a,0x548b801b,0xa4d08762,0x37fcf704,0xdff76c4e,0x090b3def,0x69cb9158,0x87e8cb89,0x995ece43,0x44a90744,0x0ad9fbf5,0xf85395f4,0x4fb0c82d,0x49b0f6c5 + DD 0xadf7cccf,0x75d9bc15,0xdfa1e1b0,0x81a3e5d6,0x249bc17e,0x8c39e444,0x8ea7fd43,0xf37dccb2,0x907fba12,0xda654873,0x4a372904,0x35daa6da,0x6283a6c5,0x0564cfc6,0x4a9395bf,0xd09fa4f6 + DD 0xaeb19a36,0x688e9ec9,0xc7bfbfb4,0xd913f1ce,0x61c2faa6,0x797b9a3c,0x6a0a9c12,0x2f979bec,0x359679ec,0xb5969d0f,0x079b0460,0xebcf523d,0x10fab870,0xfd6b0008,0x9373a39c,0x3f2edcda + DD 0x6f568431,0x0d64f9a7,0x02f8898c,0xf848c27c,0x260b5bd5,0xf418ade1,0x6973dee8,0xc1f3e323,0x26c185dd,0x46e9319c,0x546f0ac4,0x6d85b7d8,0x247f9d57,0x427965f2,0xb0035f48,0xb519b636 + DD 0xab87d59c,0x6b6163a9,0x39caaa11,0xff9f58c3,0x3177387b,0x4ac39cde,0x873e77f9,0x5f6557c2,0x36a83041,0x67504006,0x75ef196c,0x9b1c96ca,0xb08c7940,0xf34283de,0x1128c316,0x7ea09644 + DD 0x6aa39dff,0xb510b3b5,0x9f8e4d8c,0x59b43da2,0x9e4c4b9f,0xa8ce31fd,0xc1303c01,0x0e20be26,0xe8ee47c9,0x18187182,0x7db98101,0xd9687cdb,0xa1e14ff6,0x7a520e4d,0x8836d572,0x429808ba + DD 0x4944b663,0xa37ca60d,0xa3f91ae5,0xf901f7a9,0x9e36e3b1,0xe4e3e76e,0x29d93250,0x9aa219cf,0x056a2512,0x347fe275,0xde65d95c,0xa4d643d9,0x699fc3ed,0x9669d396,0xcf8c6bbe,0xb598dee2 + DD 0xdda9e5c6,0x682ac1e5,0xcaa9fc95,0x4e0d3c72,0x772bea44,0x17faaade,0xab0009c8,0x5ef8428c,0x460ff016,0xcc4ce47a,0x725281cb,0xda6d12bf,0x0223aad2,0x44c67848,0x36256e28,0x6e342afa + DD 0x93a37c04,0x1400bb0b,0xdd10bd96,0x62b1bc9b,0x0dac46b7,0x7251adeb,0x7be4ef51,0x7d33b92e,0xe61fa29a,0x28b2a94b,0x06422233,0x4b2be13f,0x330d8d37,0x36d6d062,0xb28ca005,0x5ef80e1e + DD 0x6d16768e,0x174d4699,0x628bf217,0x9fc4ff6a,0x154e490d,0x77705a94,0x8d2d997a,0x9d96dd28,0xce5d72c4,0x77e2d9d8,0xc11c714f,0x9d06c5a4,0x79e4a03e,0x02aa5136,0x030ff28b,0x1386b3c2 + DD 0xfb283f61,0xfe82e8a6,0xf3abc3fb,0x7df203e5,0x3a4d3622,0xeec7c351,0xdf762761,0xf7d17dbf,0x522055f0,0xc3956e44,0x8fa748db,0xde3012db,0xbf1dcc14,0xca9fcb63,0xbe4e2f3a,0xa56d9dcf + DD 0x8bcec9c2,0xb86186b6,0x680b9f06,0x7cf24df9,0xc0d29281,0xc46b45ea,0x07b10e12,0xfff42bc5,0x4d289427,0x12263c40,0xb4848ec4,0x3d5f1899,0xd040800c,0x11f97010,0x300feb20,0xb4c5f529 + DD 0xde94fdcb,0xcc543f8f,0xc7c2f05e,0xe96af739,0x882692e1,0xaa5e0036,0x950d4ae9,0x09c75b68,0xb5932a7a,0x62f63df2,0xde0979ad,0x2658252e,0xb5e69631,0x2a19343f,0x525b666b,0x718c7501 + DD 0xea40dc3a,0x26a42d69,0xaecc018f,0xdc84ad22,0x3270f04a,0x25c36c7b,0x50fa72ed,0x46ba6d47,0x93e58a8e,0x6c37d1c5,0x120c088c,0xa2394731,0xcb6e86da,0xc3be4263,0x7126d038,0x2c417d36 + DD 0x8b6f8efa,0x5b70f9c5,0x37718536,0x671a2faa,0xb539c92b,0xd3ced3c6,0xa31203c2,0xe56f1bd9,0x9ff3c8eb,0x8b096ec4,0x43491cea,0x2deae432,0x17943794,0x2465c6eb,0x20586843,0x5d267e66 + DD 0xb07159d0,0x9d3d116d,0xc1896210,0xae07a67f,0xbb961579,0x8fc84d87,0x1c1f8dd6,0x30009e49,0xe3132819,0x8a8caf22,0xf23ab4ff,0xcffa197c,0x205dd687,0x58103a44,0x0ded67a2,0x57b796c3 + DD 0xa1779ad7,0x0b9c3a6c,0x357c09c5,0xa33cfe2e,0x3db4a57e,0x2ea29315,0x8ebeb52e,0x91959695,0xe546c879,0x118db9a6,0x6295c8d6,0x8e996df4,0x55ec806b,0xdd990484,0x165c1035,0x24f291ca + DD 0x440e2229,0xcca523bb,0x73ef4d04,0x324673a2,0x3e11ec39,0xaf3adf34,0xdc5968d3,0x6136d7f1,0xb053a927,0x7a7b2899,0xae067ecd,0x3eaa2661,0x02779cd9,0x8549b9c8,0xc53385ea,0x061d7940 + DD 0xf06d18bd,0x3e0ba883,0xb2700843,0x4ba6de53,0x591a9e4d,0xb966b668,0x7f4fa0ed,0x93f67567,0x4347237b,0x5a02711b,0xe794608e,0xbc041e2f,0x70f73d8c,0x55af10f5,0xbb7564f7,0xd2d4d4f7 + DD 0xb3e93ce7,0xd7d27a89,0x5d3a2c1b,0xf7b5a875,0x255b218a,0xb29e68a0,0x8af76754,0xb533837e,0x579fab2e,0xd1b05a73,0xecd74385,0xb41055a1,0x445e9115,0xb2369274,0xf520274e,0x2972a7c4 + DD 0xf678e68a,0x6c08334e,0x99b057ed,0x4e4160f0,0x52ccb69a,0x3cfe11b8,0x21c8f772,0x2fd1823a,0x3298f055,0xdf7f072f,0xfec74a6e,0x8c0566f9,0x5bb4d041,0xe549e019,0x9208d850,0x7c3930ba + DD 0xaaa2902b,0xe07141fc,0xe4f69ad3,0x539ad799,0x813f9ffd,0xa6453f94,0x375bc2f7,0xc58d3c48,0x5dc64e96,0xb3326fad,0xb240e354,0x3aafcaa9,0xaca1e7a9,0x1d1b0903,0x1211b8a0,0x4ceb9767 + DD 0xe32a858e,0xeca83e49,0xae907bad,0x4c32892e,0x2eb9b494,0xd5b42ab6,0x1eabae1b,0x7fde3ee2,0xcaf54957,0x13b5ab09,0xe5f5d5d5,0xbfb028be,0x2003e2c0,0x928a0650,0x67476843,0x90793aac + DD 0xc81710a0,0x5e942e79,0x27ccadd4,0x557e4a36,0x4bcf6d0c,0x72a2bc56,0x26d7b80c,0x09ee5f43,0xd4292f19,0x6b70dbe9,0x63f16b18,0x56f74c26,0x35fbb42a,0xc23db0f7,0x6ae10040,0xb606bdf6 + DD 0x044573ac,0x1eb15d4d,0x556b0ba4,0x7dc3cf86,0xc60df6f7,0x97af9a33,0xa716ce8c,0x0b1ef85c,0xc96958be,0x2922f884,0x35690963,0x7c32fa94,0xeaa00061,0x2d7f667c,0x3547365c,0xeaaf7c17 + DD 0x87032d58,0x1eb4de46,0x5e2c79e0,0xc54f3d83,0x5d04ef23,0x07818df4,0x673d41b4,0x55faa9c8,0x89b95355,0xced64f6f,0xb7415c84,0x4860d2ea,0x050ebad3,0x5fdb9bd2,0x6685a5bf,0xdb53e0cc + DD 0x9feb6593,0xb830c031,0x6accff17,0xdd87f310,0x9f555c10,0x2303ebab,0x287e7065,0x94603695,0x2e83358c,0xf88311c3,0xeefb0178,0x508dd9b4,0x2dba8652,0x7ca23706,0x0047abe5,0x62aac5a3 + DD 0x8b1ea7b3,0x9a61d2a0,0xae8b1485,0xd495ab63,0x87052f99,0x38740f84,0xb2974eea,0x178ebe5b,0x5b36d17f,0x030bbcca,0xaaf86eea,0xb5e4cce3,0x68f8e9e0,0xb51a0220,0x09eb3e75,0xa4348796 + DD 0xeef1a752,0xbe592309,0x6f2aa1ed,0x5d7162d7,0x0f007dd2,0xaebfb5ed,0xc89edd22,0x255e14b2,0x0303b697,0xba85e072,0xf05720ff,0xc5d17e25,0x5128ebb6,0x02b58d6e,0xd754e113,0x2c80242d + DD 0xabfae1ca,0x919fca5f,0x1a21459b,0x937afaac,0x1f66a4d2,0x9e0ca91c,0x23ec1331,0x194cc7f3,0x8aa11690,0xad25143a,0x09b59e08,0xbe40ad8d,0xe750860a,0x37d60d9b,0xc6bf434c,0x6c53b008 + DD 0x1356eb80,0xb572415d,0x9578ded8,0xb8bf9da3,0x5e8fb38b,0x22658e36,0x5af8cb22,0x9b70ce22,0x829a8180,0x7c00018a,0xb81ed295,0x84329f93,0x5f3cea83,0x7c343ea2,0x67586536,0x38f8655f + DD 0x1d3ec517,0xa661a0d0,0x512321ae,0x98744652,0xeca92598,0x084ca591,0x1dcb3feb,0xa9bb9dc9,0x78b4c240,0x14c54355,0x610cafdc,0x5ed62a3b,0x1b38846b,0x07512f37,0xb0e38161,0x571bb70a + DD 0x2da705d2,0xb556b95b,0xb1a08f98,0x3ef8ada6,0xddecfbe5,0x85302ca7,0x943105cd,0x0e530573,0x21a9255d,0x60554d55,0xf2f3802a,0x63a32fa1,0xcd477875,0x35c8c5b0,0x6ad42da1,0x97f458ea + DD 0xeb6b242d,0x832d7080,0x3b71e246,0xd30bd023,0xbe31139d,0x7027991b,0x462e4e53,0x68797e91,0x6b4e185a,0x423fe20a,0x42d9b707,0x82f2c67e,0x4cf7811b,0x25c81768,0x045bb95d,0xbd53005e + DD 0x9d8e68fd,0xe5f649be,0x1b044320,0xdb0f0533,0xe0c33398,0xf6fde9b3,0x66c8cfae,0x92f4209b,0x1a739d4b,0xe9d1afcc,0xa28ab8de,0x09aea75f,0xeac6f1d0,0x14375fb5,0x708f7aa5,0x6420b560 + DD 0x6254dc41,0x9eae499c,0x7a837e7e,0x7e293924,0x090524a7,0x74aec08c,0x8d6f55f2,0xf82b9219,0x1402cec5,0x493c962e,0xfa2f30e7,0x9f17ca17,0xe9b879cb,0xbcd783e8,0x5a6f145f,0xea3d8c14 + DD 0x5e0dee6e,0xdede15e7,0xdc628aa2,0x74f24872,0x7861bb93,0xd3e9c4fe,0x6187b2e0,0x56d4822a,0xc59826f9,0xb66417cf,0x2408169e,0xca260969,0xc79ef885,0xedf69d06,0xdc7d138f,0x00031f8a + DD 0x0ebcf726,0x103c46e6,0x6231470e,0x4482b831,0x487c2109,0x6f6dfaca,0x62e666ef,0x2e0ace97,0x1f8d1f42,0x3246a9d3,0x574944d2,0x1b1e83f1,0xa57f334b,0x13dfa63a,0x9f025d81,0x0cf8daed + DD 0x00ee11c1,0x30d78ea8,0xb5e3dd75,0xeb053cd4,0xd58c43c5,0x9b65b13e,0xbd151663,0xc3ad49bd,0xb6427990,0x99fd8e41,0x707eae1e,0x12cf15bd,0x1aabb71e,0x29ad4f1b,0x07545d0e,0x5143e74d + DD 0xc88bdee1,0x30266336,0x5876767c,0x25f29306,0xc6731996,0x9c078571,0xed552951,0xc88690b2,0x852705b4,0x274f2c2d,0x4e09552d,0xb0bf8d44,0x986575d1,0x7628beeb,0x7f864651,0x407be238 + DD 0xa639fc6b,0x0e5e3049,0x86003625,0xe75c35d9,0x5dcc1646,0x0cf35bd8,0x6c26273a,0x8bcaced2,0xb5536742,0xe22ecf1d,0x1a9e068b,0x013dd897,0x8a7909c5,0x17f411cb,0x861dd506,0x5757ac98 + DD 0x1e935abb,0x85de1f0d,0x154de37a,0xdefd10b4,0x369cebb5,0xb8d9e392,0x761324be,0x54d5ef9b,0x74f17e26,0x4d6341ba,0x78c1dde4,0xc0a0e3c8,0x87d918fd,0xa6d77581,0x02ca3a13,0x66876015 + DD 0xf36658f0,0xc7313e9c,0x71f8057e,0xc433ef1c,0x1b6a835a,0x85326246,0x7c86394c,0xc8f05398,0xe983c4a1,0xff398cdf,0x03b7b931,0xbf5e8162,0xb7b9045b,0x93193c46,0xa4a6e46b,0x1e4ebf5d + DD 0x43a24fe7,0xf9942a60,0xffb3492b,0x29c1191e,0x902fde05,0x9f662449,0x6713c32d,0xc792a7ac,0xb737982c,0x2fd88ad8,0xa21e60e3,0x7e3a0319,0x7383591a,0x09b0de44,0x8310a456,0x6df141ee + DD 0xe6d6f471,0xaec1a039,0x1198d12e,0x14b2ba0f,0x3aeee5ac,0xebc1a160,0xe0b964ce,0x401f4836,0x4fd03f66,0x2ee43796,0xdd8f3f12,0x3fdb4e49,0x29380f18,0x6ef267f6,0x8da64d16,0x3e8e9670 + DD 0x207674f1,0xbc19180c,0x33ae8fdb,0x112e09a7,0x6aaeb71e,0x99667554,0xe101b1c7,0x79432af1,0xde2ddec6,0xd5eb558f,0x5357753f,0x81392d1f,0x3ae1158a,0xa7a76b97,0x4a899991,0x416fbbff + DD 0x0d4a9dcf,0x9e65fdfd,0x944ddf12,0x7bc29e48,0x3c856866,0xbc1a92d9,0x6e98dfe2,0x273c6905,0xcdfaa6b8,0x69fce418,0x5061c69f,0x606bd823,0x6af75e27,0x42d495a0,0x6d873a1f,0x8ed3d505 + DD 0x6ab25b6a,0xaf552841,0x2b1a4523,0xc6c0ffc7,0x21c99e03,0xab18827b,0x9034691b,0x060e8648,0x93c7f398,0x5207f90f,0x82f8d10b,0x9f4a96cb,0x3ad0f9e3,0xdd71cd79,0xfc3a54f5,0x84f435d2 + DD 0x8e33787f,0x4b03c55b,0xa6384673,0xef42f975,0x5051b9f0,0xff7304f7,0x741c87c2,0x18aca1dc,0x2d4bfe80,0x56f120a7,0x053e732c,0xfd823b3d,0x7537ca16,0x11bccfe4,0x1b5a996b,0xdf6c9c74 + DD 0x904fc3fa,0xee7332c7,0xc7e3636a,0x14a23f45,0xf091d9aa,0xc38659c3,0xb12d8540,0x4a995e5d,0xf3a5598a,0x20a53bec,0xb1eaa995,0x56534b17,0xbf04e03c,0x9ed3dca4,0xd8d56268,0x716c563a + DD 0x1d6178e7,0x27ba77a4,0x68a1ff8e,0xe4c80c40,0x0a13f63d,0x75011099,0xa61d46f3,0x7bf33521,0x10b365bb,0x0aff218e,0x0fd7ea75,0x81021804,0xa4b3a925,0x05a3fd8a,0x9b3db4e6,0xb829e75f + DD 0x4d53e5fb,0x6bdc75a5,0xd52717e3,0x04a5dc02,0xe9a42ec2,0x86af502f,0x2630e382,0x8867e8fb,0xbec9889b,0xbf845c6e,0xcb47c98d,0x54f491f2,0x790c2a12,0xa3091fba,0xc20f708b,0xd7f6fd78 + DD 0xacde5e17,0xa569ac30,0x6852b4d7,0xd0f996d0,0x4609ae54,0xe51d4bb5,0x0daed061,0x3fa37d17,0x34b8fb41,0x62a88684,0x9efb64f1,0x99a2acbd,0x6448e1f2,0xb75c1a5e,0x42b5a069,0xfa99951a + DD 0x2f3b26e7,0x6d956e89,0xda875247,0xf4709860,0x2482dda3,0x3ad15179,0x017d82f0,0xd64110e3,0xfad414e4,0x14928d2c,0x2ed02b24,0x2b155f58,0xcb821bf1,0x481a141b,0x4f81f5da,0x12e3c770 + DD 0x9fff8381,0xe49c5de5,0x5bbec894,0x11053232,0x454d88c4,0xa0d051cc,0x1f8e531b,0x4f6db89c,0xca563a44,0x34fe3fd6,0x58da8ab9,0x7f5c2215,0x9474f0a1,0x8445016d,0xcb7d8a0a,0x17d34d61 + DD 0x1c474019,0x8e9d3910,0xd52ceefb,0xcaff2629,0xc1622c2b,0xf9cf3e32,0xe9071a05,0xd4b95e3c,0x1594438c,0xfbbca61f,0x04aadedf,0x1eb6e6a6,0x68e14940,0x853027f4,0xdfabda9c,0x221d322a + DD 0xb7cb179a,0xed8ea9f6,0xb7934dcc,0xdc7b764d,0x5e09180d,0xfcb13940,0xb47dc2dd,0x6629a6bf,0x9f5a915e,0xbfc55e4e,0x6204441e,0xb1db9d37,0x930c5f53,0xf82d68cf,0xcbb605b1,0x17d3a142 + DD 0x308780f2,0xdd5944ea,0x3845f5e4,0xdc8de761,0x7624d7a3,0x6beaba7d,0x304df11e,0x1e709afd,0x02170456,0x95364376,0xc8f94b64,0xbf204b3a,0x5680ca68,0x4e53af7c,0xe0c67574,0x0526074a + DD 0xecd92af6,0x95d8cef8,0x6cd1745a,0xe6b9fa7a,0xa325c3e4,0x3d546d3d,0x9ae93aae,0x1f57691d,0x9d2e1a33,0xe891f3fe,0xac063d35,0xd430093f,0x5513a327,0xeda59b12,0x5536f18f,0xdc2134f3 + DD 0x5c210286,0xaa51fe2c,0x1cab658c,0x3f68aaee,0xf9357292,0x5a23a00b,0x7efdabed,0x9a626f39,0x199d78e3,0xfe2b3bf3,0x71bbc345,0xb7a2af77,0x1e59802c,0x3d19827a,0xb487a51c,0x823bbc15 + DD 0x99d0a422,0x856139f2,0xf456c6fb,0x9ac3df65,0x701f8bd6,0xaddf65c6,0x3758df87,0x149f321e,0x721b7eba,0xb1ecf714,0x31a3312a,0xe17df098,0xd5c4d581,0xdb2fd6ec,0x8fcea1b3,0xfd02996f + DD 0x7882f14f,0xe29fa63e,0x07c6cadc,0xc9f6dc35,0xb882bed0,0x46f22d6f,0xd118e52c,0x1a45755b,0x7c4608cf,0x9f2c7c27,0x568012c2,0x7ccbdf32,0x61729b0e,0xfcb0aedd,0xf7d75dbf,0x7ca2ca9e + DD 0x6f640f62,0xf58fecb1,0x39f51946,0xe274b92b,0x6288af44,0x7f4dfc04,0xeac329e5,0x0a91f32a,0xd6aaba31,0x43ad274b,0x0f6884f9,0x719a1640,0xdaf91e20,0x685d29f6,0x27e49d52,0x5ec1cc33 + DD 0x3b54a059,0x38f4de96,0xefbcfdb3,0x0e0015e5,0x4dbb8da6,0x177d23d9,0x97a617ad,0x98724aa2,0xfdb6558e,0x30f0885b,0xc7899a96,0xf9f7a28a,0x872dc112,0xd2ae8ac8,0x73c3c459,0xfa0642ca + DD 0xe7dfc8d6,0x15296981,0x1fb5b94a,0x67cd4450,0x0eddfd37,0x0ec71cf1,0x9a8eddc7,0xc7e5eeb3,0x81d95028,0x02ac8e3d,0x70b0e35d,0x0088f172,0xe1881fe3,0xec041fab,0xd99e7faa,0x62cf71b8 + DD 0xe0f222c2,0x5043dea7,0x72e65142,0x309d42ac,0x9216cd30,0x94fe9ddd,0x0f87feec,0xd6539c7d,0x432ac7d7,0x03c5a57c,0x327fda10,0x72692cf0,0x280698de,0xec28c85f,0x7ec283b1,0x2331fb46 + DD 0x2867e633,0xd34bfa32,0x0a9cc815,0x78709a82,0x875e2fa5,0xb7fe6964,0x9e98bfb5,0x25cc064f,0x493a65c5,0x9eb0151c,0x53182464,0x5fb5d941,0xf04618e2,0x69e6f130,0xf89c8ab6,0xa8ecec22 + DD 0xb96209bd,0xcd6ac88b,0xb3e1c9e0,0x65fa8cdb,0x4a8d8eac,0xa47d22f5,0x8d33f963,0x83895cdf,0xb56cd3d1,0xa8adca59,0xdaf38232,0x10c8350b,0xa5080a9f,0x2b161fb3,0x3af65b3a,0xbe7f5c64 + DD 0x97403a11,0x2c754039,0x121b96af,0x94626cf7,0x6a983ec2,0x431de7c4,0x52cc3df7,0x3780dd3a,0x2baf8e3b,0xe28a0e46,0x51d299ae,0xabe68aad,0x647a2408,0x603eb8f9,0x5c750981,0x14c61ed6 + DD 0xc53352e7,0x88b34414,0x1337d46e,0x5a34889c,0xf95f2bc8,0x612c1560,0xd4807a3a,0x8a3f8441,0x5224da68,0x680d9e97,0xc3eb00e9,0x60cd6e88,0x9a6bc375,0x3875a98e,0x4fd554c2,0xdc80f924 + DD 0x6ac77407,0x6c4b3415,0x25420681,0xa1e5ea8f,0x4607a458,0x541bfa14,0x96d7fbf9,0x5dbc7e7a,0x31590a47,0x646a851b,0x15ee6df8,0x039e85ba,0xd7b43fc0,0xd19fa231,0x299a0e04,0x84bc8be8 + DD 0xf20df03a,0x2b9d2936,0x8608d472,0x24054382,0x9149202a,0x76b6ba04,0x3670e7b7,0xb21c3831,0xd6fdee10,0xddd93059,0x78488e71,0x9da47ad3,0xa0fcfb25,0x99cc1dfd,0x64696954,0x42abde10 + DD 0x17eab9fe,0x14cc15fc,0xd3e70972,0xd6e863e4,0x6432112c,0x29a7765c,0x5b0774d8,0x88660001,0x2c088eae,0x3729175a,0x8230b8d4,0x13afbcae,0x915f4379,0x44768151,0xd8d22812,0xf086431a + DD 0xc298b974,0x37461955,0xf8711e04,0x905fb5f0,0xfe969d18,0x787abf3a,0x6f6a494e,0x392167c2,0x28c511da,0xfc7a0d2d,0xb66a262d,0xf127c7dc,0xfd63fdf0,0xf9c4bb95,0x3913ef46,0x90016589 + DD 0x11aa600d,0x74d2a73c,0x9fb5ab52,0x2f5379bd,0x7fb70068,0xe49e53a4,0x404aa9a7,0x68dd39e5,0x2ecaa9c3,0xb9b0cf57,0xe824826b,0xba0e103b,0x4631a3c4,0x60c2198b,0xfa8966a2,0xc5ff84ab + DD 0xac95aff8,0x2d6ebe22,0xb5a46d09,0x1c9bb6db,0x53ee4f8d,0x419062da,0xbb97efef,0x7b9042d0,0x830cf6bd,0x0f87f080,0x6ec8a6c6,0x4861d19a,0x202f01aa,0xd3a0daa1,0xf25afbd5,0xb0111674 + DD 0x1afb20d9,0x6d00d6cf,0x40671bc5,0x13695000,0x2485ea9b,0x913ab0dc,0x9eef61ac,0x1f2bed06,0x6d799e20,0x850c8217,0x3271c2de,0x93415f37,0x6c4f5910,0x5afb06e9,0xc4e9e421,0x688a52df + DD 0xe2a9a6db,0x30495ba3,0x58f9268b,0x4601303d,0x7eb0f04f,0xbe3b0dad,0x4456936d,0x4ea47250,0xd33fd3e7,0x8caf8798,0xeb433708,0x1ccd8a89,0x87fd50ad,0x9effe3e8,0x6b29c4df,0xbe240a56 + DD 0xca0e7ebd,0xec4ffd98,0xe748616e,0xf586783a,0xc77baa99,0xa5b00d8f,0xb4f34c9c,0x0acada29,0x0fe723ac,0x36dad67d,0x39c36c1e,0x1d8e53a5,0x1f4bea41,0xe4dd342d,0xebc9e4e0,0x64fd5e35 + DD 0x57908805,0x96f01f90,0x5ed480dd,0xb5b9ea3d,0x3efd2dd0,0x366c5dc2,0x6e9dfa27,0xed2fe305,0x6e9197e2,0x4575e892,0xab502a5d,0x11719c09,0xe81f213f,0x264c7bec,0x55f5c457,0x741b9241 + DD 0x49a5f4f4,0x78ac7b68,0x9fc45b7d,0xf91d70a2,0xb0f5f355,0x39b05544,0xeef930d9,0x11f06bce,0x038d05e1,0xdb84d25d,0xbacc1d51,0x04838ee5,0x9e8ee00b,0x9da3ce86,0xc36eda1f,0xc3412057 + DD 0x64d9c2f4,0xae80b913,0xa010a8ff,0x7468bac3,0x37359d41,0xdfd20037,0x15efeacc,0x1a0f5ab8,0x659d0ce0,0x7c25ad2f,0x6785cff1,0x4011bcbb,0x7e2192c7,0x128b9912,0x13ccb0e8,0xa549d8e1 + DD 0xc85438b1,0x805588d8,0xbc25cb27,0x5680332d,0x1a4bfdf4,0xdcd1bc96,0x706f6566,0x779ff428,0xf059987a,0x8bbee998,0xcc686de7,0xf6ce8cf2,0x953cfdb2,0xf8ad3c4a,0x2205da36,0xd1d426d9 + DD 0xc781a241,0xb3c0f13f,0xd75362a8,0x3e89360e,0xc8a91184,0xccd05863,0xefa8a7f4,0x9bd0c9b7,0x8a912a4b,0x97ee4d53,0xbcf518fd,0xde5e15f8,0xc467e1e0,0x6a055bf8,0x1587e256,0x10be4b4b + DD 0x668621c9,0xd90c14f2,0xab9c92c1,0xd5518f51,0xd6d47b3c,0x8e6a0100,0x66716175,0xcbe980dd,0xddd83683,0x500d3f10,0x99cac73c,0x3b6cb35d,0x6083d550,0x53730c8b,0xdf0a1987,0xcf159767 + DD 0x43ad73b3,0x84bfcf53,0x4f035a94,0x1b528c20,0x33eeac69,0x4294edf7,0x817f3240,0xb6283e83,0x0a5f25b1,0xc3fdc959,0x5844ee22,0xefaf8aa5,0xdbdde4de,0xde269ba5,0xc56133bf,0xe3347160 + DD 0x8d9ea9f8,0xc1184219,0xf3fc1ab5,0x090de5db,0x0bf22cda,0x404c37b1,0xf5618894,0x7de20ec8,0xecdaecab,0x754c588e,0x88342743,0x6ca4b0ed,0xf4a938ec,0x76f08bdd,0x91493ccb,0xd182de89 + DD 0xc8a4186a,0xd652c53e,0x946d8e33,0xb3e878db,0x5f37663c,0x088453c0,0xb407748b,0x5cd9daaa,0x586d5e72,0xa1f5197f,0xc443ca59,0x47500be8,0xe2652424,0x78ef35b2,0x6dd7767d,0x09c5d26f + DD 0xa74d3f7b,0x7175a79a,0xcf5ea459,0x0428fd8d,0xa5d1746d,0x511cb97c,0xe71d1278,0x36363939,0x10350bf4,0xcf2df955,0x60aae782,0xb3817439,0x3e688809,0xa748c0e4,0xd7a5a006,0x98021fbf + DD 0x0e367a98,0x9076a70c,0x0f62b7c2,0xbea1bc15,0x30fe0343,0x2645a68c,0x699dc14f,0xacaffa78,0x457bf9c4,0xf4469964,0x0d2ead83,0x0db6407b,0xb2c6f3eb,0x68d56cad,0xf376356c,0x3b512e73 + DD 0xfce10408,0xe43b0e1f,0x5a5e257d,0x89ddc003,0x0362e5b3,0xb0ae0d12,0xb0519161,0x07f983c7,0x5d5231e7,0xc2e94d15,0x0b4f9513,0xcff22aed,0x6ad0b0b5,0xb02588dd,0x11d0dcd5,0xb967d1ac + DD 0xcf777b6c,0x8dac6bc6,0x4c6d1959,0x0062bdbd,0x0ef5cc85,0x53da71b5,0x4006f14f,0x07012c7d,0xac47800d,0x4617f962,0xc102ed75,0x53365f2b,0x4ab8c9d3,0xb422efcb,0x34af31c9,0x195cb26b + DD 0x05f2c4ce,0x3a926e29,0x9856966c,0xbd2bdecb,0x85527015,0x5d16ab3a,0x4486c231,0x9f81609e,0xda350002,0xd8b96b2c,0xfa1b7d36,0xbd054690,0xe71d79bc,0xdc90ebf5,0x08964e4e,0xf241b6f9 + DD 0x2fe3cd4c,0x7c838643,0xb4bc633c,0xe0f33acb,0x3d139f1f,0xb4a9ecec,0xdc4a1f49,0x05ce69cd,0xf5f98aaf,0xa19d1b16,0x6f23e0ef,0x45bb71d6,0x46cdfdd3,0x33789fcd,0xcee040ca,0x9b8e2978 + DD 0xae0a6828,0x9c69b246,0x7078d5aa,0xba533d24,0x7bb4fbdb,0x7a2e42c0,0x7035385c,0xcfb4879a,0x3281705b,0x8c3dd30b,0x404fe081,0x7e361c6c,0x3f604edf,0x7b21649c,0xe52ffe47,0x5dbf6a3f + DD 0x4b54d9bf,0xc41b7c23,0x3511c3d9,0x1374e681,0xc1b2b758,0x1863bf16,0x1e9e6a96,0x90e78507,0x5d86f174,0xab4bf98d,0x85e96fe4,0xd74e0bd3,0xcac5d344,0x8afde39f,0xbd91b847,0x90946dbc + DD 0xfe1a838c,0xf5b42358,0x620ac9d8,0x05aae6c5,0xa1ce5a0b,0x8e193bd8,0x4dabfd72,0x8f710571,0x182caaac,0x8d8fdd48,0x040745cf,0x8c4aeefa,0xf3b93e6d,0x73c6c30a,0x16f42011,0x991241f3 + DD 0xe457a477,0xa0158eea,0xee6ddc05,0xd19857db,0x18c41671,0xb3265224,0x3c2c0d58,0x3ffdfc7e,0x26ee7cda,0x3a3a5254,0xdf02c3a8,0x341b0869,0x723bbfc8,0xa023bf42,0x14452691,0x3d15002a + DD 0x85edfa30,0x5ef7324c,0x87d4f3da,0x25976554,0xdcb50c86,0x352f5bc0,0x4832a96c,0x8f6927b0,0x55f2f94c,0xd08ee1ba,0x344b45fa,0x6a996f99,0xa8aa455d,0xe133cb8d,0x758dc1f7,0x5d0721ec + DD 0x79e5fb67,0x6ba7a920,0x70aa725e,0xe1331feb,0x7df5d837,0x5080ccf5,0x7ff72e21,0xe4cae01d,0x0412a77d,0xd9243ee6,0xdf449025,0x06ff7cac,0x23ef5a31,0xbe75f7cd,0x0ddef7a8,0xbc957822 + DD 0xb0ce1c55,0x8cf7230c,0x0bbfb607,0x5b534d05,0x0e16363b,0xee1ef113,0xb4999e82,0x27e0aa7a,0x79362c41,0xce1dac2d,0x91bb6cb0,0x67920c90,0x2223df24,0x1e648d63,0xe32e8f28,0x0f7d9eef + DD 0xfa833834,0x6943f39a,0xa6328562,0x22951722,0x4170fc10,0x81d63dd5,0xaecc2e6d,0x9f5fa58f,0xe77d9a3b,0xb66c8725,0x6384ebe0,0x11235cea,0x5845e24a,0x06a8c118,0xebd093b1,0x0137b286 + DD 0x44ace150,0xc589e1ce,0x4381e97c,0xe0f8d3d9,0x62c5a4b8,0x59e99b11,0xfd0ec9f9,0x90d262f7,0x283e13c9,0xfbc854c9,0xaedc7085,0x2d04fde7,0x47dcbecb,0x057d7765,0x9a76fa5f,0x8dbdf591 + DD 0x0de1e578,0xd0150695,0xe9f72bc6,0x2e1463e7,0x1b39eca5,0xffa68441,0x7c037f2f,0x673c8530,0x747f91da,0xd0d6a600,0xc9cb78e9,0xb08d43e1,0x27b5cef5,0x0fc0c644,0xa60a2fd6,0x5c1d160a + DD 0x28c8e13b,0xf98cae53,0xb2eddcd1,0x375f10c4,0x5cce06ad,0xd4eb8b7f,0x80a2e1ef,0xb4669f45,0x5bbd8699,0xd593f9d0,0xe7976d13,0x5528a4c9,0x1c7e28d3,0x3923e095,0x3f6bb577,0xb9293790 + DD 0xc42bd6d2,0xdb567d6a,0xbb1f96ae,0x6df86468,0x4843b28e,0x0efe5b1a,0x6379b240,0x961bbb05,0x70a6a26b,0xb6caf5f0,0x328e6e39,0x70686c0d,0x895fc8d3,0x80da06cf,0xb363fdc9,0x804d8810 + DD 0x207f1670,0xbe22877b,0x4e615291,0x9b0dd188,0x97a3c2bf,0x625ae8dc,0x439b86e8,0x08584ef7,0xdcd898ff,0xde7190a5,0x2058ee3d,0x26286c40,0x5f87b1c1,0x3db0b217,0x102a6db5,0xcc334771 + DD 0x2f770fb1,0xd99de954,0x4cd7535e,0x97c1c620,0x3f09cefc,0xd3b6c448,0x5a63b4f8,0xd725af15,0xc01e20ec,0x0c95d24f,0x9ae7121f,0xdfd37494,0xec77b7ec,0x7d6ddb72,0x0353a4ae,0xfe079d3b + DD 0x2e6ac8d2,0x3066e70a,0x106e5c05,0x9c6b5a43,0xede59b8c,0x52d3c6f5,0xfccec9ae,0x30d6a5c3,0x4fc0a9ef,0xedec7c22,0x95c16ced,0x190ff083,0x94de0fde,0xbe12ec8f,0x852d3433,0x0d131ab8 + DD 0x85701291,0x42ace07e,0x194061a8,0x94793ed9,0xd7f4a485,0x30e83ed6,0xf9eeff4d,0x9eec7269,0x0c9d8005,0x90acba59,0x1e79b9d1,0x5feca458,0x1d506a1e,0x8fbe5427,0x2439cfa7,0xa32b2c8e + DD 0x73dd0b4e,0x1671c173,0x44a054c6,0x37a28214,0x4e8b53f1,0x81760a1b,0xf9f93b9e,0xa6c04224,0xcf671e3c,0x18784b34,0xcda9b994,0x81bbecd2,0xb2ab3848,0x38831979,0xf2e03c2d,0xef54feb7 + DD 0xfb8088fa,0xcf197ca7,0x4ddc96c5,0x01427247,0x30777176,0xa2d2550a,0x4d0cf71d,0x53469898,0x3a2aaac6,0x6ce937b8,0x5af38d9b,0xe9f91dc3,0xc8bf2899,0x2598ad83,0xb5536c16,0x8e706ac9 + DD 0xf688dc98,0x40dc7495,0x124c4afc,0x26490cd7,0x1f18775c,0xe651ec84,0xb4fdaf4a,0x393ea6c3,0x7f338e0d,0x1e1f3343,0x6053e7b5,0x39fb832b,0x619e14d5,0x46e702da,0xcdeef6e0,0x859cacd1 + DD 0x4462007d,0x63b99ce7,0x4cb5f5b7,0xb8ab48a5,0xf55edde7,0x9ec673d2,0x8cfaefda,0xd1567f74,0x0887bcec,0x46381b6b,0xe178f3c2,0x694497ce,0x1e6266cb,0x5e6525e3,0x697d6413,0x5931de26 + DD 0x0e58d493,0x87f8df7c,0x58b73f12,0xb1ae5ed0,0xdea0c34d,0xc368f784,0x859a91a0,0x9bd0a120,0xcc863c68,0xb00d88b7,0x3d1f4d65,0x3a1cc11e,0x0aa85593,0xea38e0e7,0x7dc4aee8,0x37f13e98 + DD 0xbc947bad,0x10d38667,0x2a36ee2e,0x738e07ce,0xc577fcac,0xc93470cd,0x2782470d,0xdee1b616,0x2e793d12,0x36a25e67,0xe0f186da,0xd6aa6cae,0x80e07af7,0x474d0fd9,0xba8a5cd4,0xf7cdc47d + DD 0xab15247f,0x28af6d9d,0x493a537f,0x7c789c10,0x23a334e7,0x7ac9b110,0x12c9c277,0x0236ac09,0x1d7a5144,0xa7e5bd25,0xf13ec4ec,0x098b9c2a,0xd3f0abca,0x3639daca,0xa23960f9,0x642da81a + DD 0x4f7269b1,0x7d2e5c05,0xe287c385,0xfcf30777,0xf2a46f21,0x10edc84f,0x4f43fa36,0x35441757,0xfd703431,0xf1327899,0x16dd587a,0xa438d7a6,0xe9c8352d,0x65c34c57,0x5cc5a24e,0xa728edab + DD 0x42531689,0xaed78abc,0x010963ef,0x0a51a0e8,0xd717d9b3,0x5776fa0a,0x7dd3428b,0xf356c239,0x8d3a3dac,0x29903fff,0x3d94491f,0x409597fa,0xbf4a56a4,0x4cd7a5ff,0x8adab462,0xe5096474 + DD 0x5c3427b0,0xa97b5126,0xd282c9bd,0x6401405c,0x222c5c45,0x3629f8d7,0xe8d50aed,0xb1c02c16,0xd9635bc9,0xbea2ed75,0x6e24552f,0x226790c7,0x65f1d066,0x3c33f2a3,0x6dfccc2e,0x2a43463e + DD 0xdb483761,0x8cc3453a,0x65d5672b,0xe7cc6085,0xde3efc87,0x277ed6cb,0x69234eaf,0x19f2f368,0x5c0b800b,0x9aaf4317,0x8b6da6e2,0x1f1e7c89,0xb94ec75e,0x6cfb4715,0x453118c2,0xd590dd5f + DD 0x1f17a34c,0x14e49da1,0x235a1456,0x5420ab39,0x2f50363b,0xb7637241,0xc3fabb6e,0x7b15d623,0xe274e49c,0xa0ef40b1,0x96b1860a,0x5cf50744,0x66afe5a4,0xd6583fbf,0xf47e3e9a,0x44240510 + DD 0x11b2d595,0x99254343,0xeec8df57,0xf1367499,0x3e73dd05,0x3cb12c61,0x7dac102a,0xd248c033,0xa77739f5,0xcf154f13,0x23d2af42,0xbf4288cb,0x32e4a1cf,0xaa64c9b6,0xc8a208f3,0xee8c07a8 + DD 0x6fe8393f,0xe10d4999,0xe91f3a32,0x0f809a3f,0x802f63c8,0x61096d1c,0x57750d3d,0x289e1462,0x9889feea,0xed06167e,0xe0993909,0xd5c9c0e2,0x56508ac6,0x46fca0d8,0x4f1b8e83,0x91826047 + DD 0x9a4a2751,0x4f2c877a,0xcae6fead,0x71bd0072,0x06aa1941,0x38df8dcc,0x63beeaa8,0x5a074b4c,0xc1cec8ed,0xd6d65934,0xaabc03bd,0xa6ecb49e,0xde8a8415,0xaade91c2,0x691136e0,0xcfb0efdf + DD 0x23ab3495,0x11af45ee,0x0b77463d,0xa132df88,0x815d06f4,0x8923c15c,0x0d61a436,0xc3ceb3f5,0xe88fb1da,0xaf52291d,0x1da12179,0xea057974,0xd2fef720,0xb0d7218c,0x8e1d8845,0x6c0899c9 + DD 0x752ddad7,0x98157504,0xa1a68a97,0xd60bd74f,0xf658fb99,0x7047a3a9,0x5f8511e4,0x1f5d86d6,0x4b5a6d88,0xb8a4bc42,0x1abefa7d,0x69eb2c33,0x13c9c510,0x95bf39e8,0xd48aab43,0xf571960a + DD 0x704e23c6,0x7e8cfbcf,0x28aaa65b,0xc71b7d22,0x245e3c83,0xa041b2bd,0xd21854ff,0x69b98834,0x963bfeec,0x89d227a3,0xde7da7cb,0x99947aaa,0xee68a9b1,0x1d9ee9db,0x698ec368,0x0a08f003 + DD 0x78ef2487,0xe9ea4094,0x02cfec26,0xc8d2d415,0xb7dcf328,0xc52f9a6e,0x85b6a937,0x0ed489e3,0xbef3366e,0x9b94986b,0xedddddb8,0x0de59c70,0xeadddbe2,0xffdb748c,0x8266ea40,0x9b9784bb + DD 0x1a93507a,0x142b5502,0x8d3c06cf,0xb4cd1187,0x91ec3f40,0xdf70e76a,0x4e7553c2,0x484e81ad,0x272e9d6e,0x830f87b5,0xc6ff514a,0xea1c93e5,0xc4192a8e,0x67cc2adc,0x42f4535a,0xc77e27e2 + DD 0xd2b713c5,0x9cdbab36,0xcf7b0cd3,0x86274ea0,0x09af826b,0x784680f3,0x0c72dea3,0xbfcc837a,0xd6529b73,0xa8bdfe9d,0x63a88002,0x708aa228,0xc91d45b9,0x6c7a9a54,0xfd004f56,0xdf1a38bb + DD 0xb8bad853,0x2e8c9a26,0x3723eae7,0x2d52cea3,0x56ca2830,0x054d6d81,0x9a8dc411,0xa3317d14,0xfd4ddeda,0xa08662fe,0xb55d792b,0xed2a153a,0xbfc6e944,0x7035c16a,0x00171cf3,0xb6bc5834 + DD 0x83d102b6,0xe27152b3,0x0646b848,0xfe695a47,0x916e6d37,0xa5bb09d8,0x0d17015e,0xb4269d64,0x0a1d2285,0x8d8156a1,0x46d26d72,0xfeef6c51,0x4c5434a7,0x9dac57c8,0x59d39e31,0x0282e5be + DD 0x721c486d,0xedfff181,0xbc58824e,0x301baf10,0x00570031,0x8136a6aa,0x1cddde68,0x55aaf78c,0x59c63952,0x26829371,0x8bc25baf,0x3a3bd274,0xb7e52dc3,0xecdf8657,0xfd78e6c8,0x2dd8c087 + DD 0xf5531461,0x20553274,0x5d95499b,0x8b4a1281,0x1a80f9d2,0xe2c8763a,0x4ddec758,0xd1dbe32b,0x30c34169,0xaf12210d,0x78baa533,0xba74a953,0xa438f254,0x3d133c6e,0x201bef5b,0xa431531a + DD 0xf669d7ec,0x15295e22,0x357fb515,0xca374f64,0xeaa3fdb3,0x8a8406ff,0xdf3f2da8,0x106ae448,0x33c8e9a1,0x8f9b0a90,0x71ad5885,0x234645e2,0x1c0aed14,0x3d083224,0x7a942d46,0xf10a7d3e + DD 0x40d5c9be,0x7c11deee,0xba84ed98,0xb2bae7ff,0xaad58ddd,0x93e97139,0x3f6d1fa3,0x3d872796,0x8569ff13,0x483aca81,0x9a600f72,0x8b89a5fb,0xc06f2b86,0x4cbc27c3,0x63ad9c0b,0x22130713 + DD 0x48ac2840,0xb5358b1e,0xecba9477,0x18311294,0xa6946b43,0xda58f990,0x9ab41819,0x3098baf9,0x4198da52,0x66c4c158,0x146bfd1b,0xab4fc17c,0xbf36a908,0x2f0a4c3c,0x58cf7838,0x2ae9e34b + DD 0x3fa11b1f,0xf411529e,0x974af2b4,0x21e43677,0xc230793b,0x7c20958e,0x16e840f3,0x710ea885,0xc5dc67cf,0xfc0b21fc,0x88405718,0x08d51647,0xcfe49eb7,0xd955c21f,0x56dd4a1f,0x9722a5d5 + DD 0xc861baa5,0xc9ef50e2,0x9505ac3e,0xc0c21a5d,0x8b7c063f,0xaf6b9a33,0x2f4779c1,0xc6370339,0x638167c3,0x22df99c7,0x795db30c,0xfe6ffe76,0xa4854989,0x2b822d33,0x30563aa5,0xfef031dd + DD 0xd57c667f,0x16b09f82,0xcc0b76f1,0xc70312ce,0xc9118aec,0xbf04a9e6,0x3409d133,0x82fcb419,0xab45d44d,0x1a8ab385,0x617b83a3,0xfba07222,0x58e81b52,0xb05f50dd,0x21ce5aff,0x1d8db553 + DD 0xe344a873,0x3097b8d4,0xfe36d53e,0x7d8d116d,0x7875e750,0x6db22f58,0x43e144ea,0x2dc5e373,0xe799eb95,0xc05f32e6,0x6899e6ec,0xe9e5f4df,0x1fab23d5,0xbdc3bd68,0x73af60e6,0xb72b8ab7 + DD 0x2cecc84a,0x8db27ae0,0x7bdb871c,0x600016d8,0xd7c46f58,0x42a44b13,0xc3a77d39,0xb8919727,0xdafd6088,0xcfc6bbbd,0x6bd20d39,0x1a740146,0x98c41072,0x8c747abd,0xbdf68ea1,0x4c91e765 + DD 0x08819a78,0x7c95e5ca,0xc9587921,0xcf48b729,0xdebbcc7d,0x091c7c5f,0xf0e05149,0x6f287404,0x26cd44ec,0xf83b5ac2,0xcfea250e,0x88ae32a6,0x1d06ebc5,0x6ac5047a,0xd434f781,0xc7e550b4 + DD 0x5c727bd2,0x61ab1cf2,0x1cf915b0,0x2e4badb1,0xf69d3920,0x1b4dadec,0xf14c1dfe,0xe61b1ca6,0xbd6bd51f,0x90b479cc,0x8045ec30,0x8024e401,0x25ef0e62,0xcab29ca3,0x49e4ebc0,0x4f2e9416 + DD 0x0ccced58,0x45eb40ec,0x0da44f98,0x25cd4b9c,0x871812c6,0x43e06458,0x16cef651,0x99f80d55,0xce6dc153,0x571340c9,0xd8665521,0x138d5117,0x4e07014d,0xacdb45bc,0x84b60b91,0x2f34bb38 + DD 0x2ae8921e,0xf44a4fd2,0x892ba1e2,0xb039288e,0xb1c180b2,0x9da50174,0x1693dc87,0x6b70ab66,0xe7057481,0x7e9babc9,0x9c80dc41,0x4581ddef,0x51294682,0x0c890da9,0x3f4736e5,0x0b5629d3 + DD 0xb06f5b41,0x2340c79e,0x4e243469,0xa42e84ce,0x045a71a9,0xf9a20135,0xd27b6fb6,0xefbfb415,0x9d33cd6f,0x25ebea23,0xaa6c0af8,0x9caedb88,0xd9ce6f96,0x53dc7e9a,0x51e0b15a,0x3897f9fd + DD 0x8e5d788e,0xf51cb1f8,0xe1d490ee,0x1aec7ba8,0xcc58cb3c,0x265991e0,0x9fc3ad31,0x9f306e8c,0x5040a0ac,0x5fed006e,0xfb476f2e,0xca9d5043,0xbeea7a23,0xa19c06e8,0x0edabb63,0xd2865801 + DD 0x6967469a,0xdb92293f,0x8d8a8ed8,0x2894d839,0xbbc77122,0x87c9e406,0x2ea3a26a,0x8671c6f1,0xd7de9853,0xe42df8d6,0xb1f2bcc7,0x2e3ce346,0x899d50cf,0xda601dfc,0xfb1b598f,0xbfc913de + DD 0xe61f7908,0x81c4909f,0x9bbc7b29,0x192e304f,0xc104b338,0xc3ed8738,0x783f5d61,0xedbe9e47,0x2db30660,0x0c06e9be,0xc0eb7d8e,0xda3e613f,0x322e096e,0xd8fa3e97,0xd336e247,0xfebd91e8 + DD 0xdf655a49,0x8f13ccc4,0x5eb20210,0xa9e00dfc,0xc656b6ea,0x84631d0f,0xd8c0d947,0x93a058cd,0x67bd3448,0x6846904a,0xf394fd5c,0x4a3d4e1a,0xdb225f52,0xc102c1a5,0xfc4f5e9a,0xe3455bba + DD 0x4b9ad1ce,0x6b36985b,0x5bb7f793,0xa9818536,0x48b1a416,0x6c25e1d0,0x3c81bee7,0x1381dd53,0x7a4a7620,0xd2a30d61,0x39b8944c,0xc8412926,0x7a97c33a,0x3c1c6fbe,0x938664e7,0x941e541d + DD 0x4a34f239,0x417499e8,0xb90402d5,0x15fdb83c,0x433aa832,0xb75f46bf,0x63215db1,0xb61e15af,0xa127f89a,0xaabe59d4,0x07e816da,0x5d541e0c,0xa618b692,0xaaba0659,0x17266026,0x55327733 + DD 0x95f57552,0xaf53a0fc,0x6cacb0c9,0x32947650,0xc821be01,0x253ff58d,0xa06f1146,0xb0309531,0x05c2e54d,0x59bbbdf5,0x26e8dd22,0x158f27ad,0x397e1e53,0xcc5b7ffb,0x7fc1e50d,0xae03f65b + DD 0x9c95f0f9,0xa9784ebd,0x24640771,0x5ed9deb2,0x035561c4,0x31244af7,0x7ee857de,0x87332f3a,0x2b9e0d88,0x09e16e9e,0x56a06049,0x52d910f4,0xa9592f48,0x507ed477,0x2365d678,0x85cb917b + DD 0x4c8998d1,0xf8511c93,0x730ea58f,0x2186a3f1,0xb2029db0,0x50189626,0x02ceb75a,0x9137a6d9,0x748bc82c,0x2fe17f37,0x80469f8c,0x87c2e931,0xbf891aa2,0x850f71cd,0x75ec3d8d,0x0ca1b89b + DD 0x5e1cd3cd,0x516c43aa,0x9a887c28,0x89397808,0xddea1f9f,0x0059c699,0x8e6868f7,0x7737d6fa,0x60f1524b,0x6d93746a,0xba052aa7,0x36985e55,0xed923ea5,0x41b1d322,0x25852a11,0x3429759f + DD 0x092e9f41,0xbeca6ec3,0x62256bbd,0x3a238c66,0x70ad487d,0xd82958ea,0x65610d93,0x4ac8aaf9,0x5e4ccab0,0x3fa101b1,0x9de14bfb,0x9bf430f2,0x6531899d,0xa10f5cc6,0xea8ce17d,0x590005fb + DD 0x24544cb6,0xc437912f,0xd79ac2e3,0x9987b71a,0xc058a212,0x13e3d9dd,0xd2de9606,0x00075aac,0x6cac8369,0x80ab508b,0xf54f6c89,0x87842be7,0x6bc532a4,0xa7ad663d,0x78a91bc8,0x67813de7 + DD 0xc3427239,0x5dcb61ce,0xc56934d9,0x5f3c7cf0,0xe3191591,0xc079e0fb,0xb01aada7,0xe40896bd,0x0492d25f,0x8d466791,0xe7408276,0x8aeb30c9,0x9287aacc,0xe9437495,0x79fe03d4,0x23d4708d + DD 0xd0c05199,0x8cda9cf2,0xfae78454,0x502fbc22,0xf572a182,0xc0bda9df,0x6158b372,0x5f9b71b8,0x2b82dd07,0xe0f33a59,0x9523032e,0x76302735,0xc4505a32,0x7fe1a721,0xf796409f,0x7b6e3e82 + DD 0x35d0b34a,0xe3417bc0,0x8327c0a7,0x440b386b,0xac0362d1,0x8fb7262d,0xe0cdf943,0x2c41114c,0xad95a0b1,0x2ba5cef1,0x67d54362,0xc09b37a8,0x01e486c9,0x26d6cdd2,0x42ff9297,0x20477abf + DD 0x292a9287,0xa004dcb3,0x77b092c7,0xddc15cf6,0x806c0605,0x083a8464,0x3db997b0,0x4a68df70,0x05bf7dd0,0x9c134e45,0x8ccf7f8c,0xa4e63d39,0x41b5f8af,0xa6e6517f,0xad7bc1cc,0xaa8b9342 + DD 0x1e706ad9,0x126f35b5,0xc3a9ebdf,0xb99cebb4,0xbf608d90,0xa75389af,0xc6c89858,0x76113c4f,0x97e2b5aa,0x80de8eb0,0x63b91304,0x7e1022cc,0x6ccc066c,0x3bdab605,0xb2edf900,0x33cbb144 + DD 0x7af715d2,0xc4176471,0xd0134a96,0xe2f7f594,0xa41ec956,0x2c1873ef,0x77821304,0xe4e7b4f6,0x88d5374a,0xe5c8ff97,0x80823d5b,0x2b915e63,0xb2ee8fe2,0xea6bc755,0xe7112651,0x6657624c + DD 0xdace5aca,0x157af101,0x11a6a267,0xc4fdbcf2,0xc49c8609,0xdaddf340,0xe9604a65,0x97e49f52,0x937e2ad5,0x9be8e790,0x326e17f1,0x846e2508,0x0bbbc0dc,0x3f38007a,0xb11e16d6,0xcf03603f + DD 0x7442f1d5,0xd6f800e0,0x66e0e3ab,0x475607d1,0xb7c64047,0x82807f16,0xa749883d,0x8858e1e3,0x8231ee10,0x5859120b,0x638a1ece,0x1b80e7eb,0xc6aa73a4,0xcb72525a,0x844423ac,0xa7cdea3d + DD 0xf8ae7c38,0x5ed0c007,0x3d740192,0x6db07a5c,0x5fe36db3,0xbe5e9c2a,0x76e95046,0xd5b9d57a,0x8eba20f2,0x54ac32e7,0x71b9a352,0xef11ca8f,0xff98a658,0x305e373e,0x823eb667,0xffe5a100 + DD 0xe51732d2,0x57477b11,0x2538fc0e,0xdfd6eb28,0x3b39eec5,0x5c43b0cc,0xcb36cc57,0x6af12778,0x06c425ae,0x70b0852d,0x5c221b9b,0x6df92f8c,0xce826d9c,0x6c8d4f9e,0xb49359c3,0xf59aba7b + DD 0xda64309d,0x5c8ed8d5,0x91b30704,0x61a6de56,0x2f9b5808,0xd6b52f6a,0x98c958a7,0x0eee4194,0x771e4caa,0xcddd9aab,0x78bc21be,0x83965dfd,0xb3b504f5,0x02affce3,0x561c8291,0x30847a21 + DD 0x52bfda05,0xd2eb2cf1,0x6197b98c,0xe0e4c4e9,0xf8a1726f,0x1d35076c,0x2db11e3d,0x6c06085b,0x4463ba14,0x15c0c4d7,0x0030238c,0x9d292f83,0x3727536d,0x1311ee8b,0xbeaedc1e,0xfeea86ef + DD 0x66131e2e,0xb9d18cd3,0x80fe2682,0xf31d974f,0xe4160289,0xb6e49e0f,0x08e92799,0x7c48ec0b,0xd1989aa7,0x818111d8,0xebf926f9,0xb34fa0aa,0xa245474a,0xdb5fe2f5,0x3c7ca756,0xf80a6ebb + DD 0xafa05dd8,0xa7f96054,0xfcaf119e,0x26dfcf21,0x0564bb59,0xe20ef2e3,0x61cb02b8,0xef4dca50,0x65d30672,0xcda7838a,0xfd657e86,0x8b08d534,0x46d595c8,0x4c5b4395,0x425cb836,0x39b58725 + DD 0x3de9abe3,0x8ea61059,0x9cdc03be,0x40434881,0xcfedce8c,0x9b261245,0xcf5234a1,0x78c318b4,0xfde24c99,0x510bcf16,0xa2c2ff5d,0x2a77cb75,0x27960fb4,0x9c895c2b,0xb0eda42b,0xd30ce975 + DD 0x1a62cc26,0xfda85393,0x50c0e052,0x23c69b96,0xbfc633f3,0xa227df15,0x1bae7d48,0x2ac78848,0x187d073d,0x487878f9,0x967f807d,0x6c2be919,0x336e6d8f,0x765861d8,0xce528a43,0x88b8974c + DD 0xff57d051,0x09521177,0xfb6a1961,0x2ff38037,0xa3d76ad4,0xfc0aba74,0x25a7ec17,0x7c764803,0x48879bc8,0x7532d75f,0x58ce6bc1,0xea7eacc0,0x8e896c16,0xc82176b4,0x2c750fed,0x9a30e0b2 + DD 0x421d3aa4,0xc37e2c2e,0xe84fa840,0xf926407c,0x1454e41c,0x18abc03d,0x3f7af644,0x26605ecd,0xd6a5eabf,0x242341a6,0x216b668e,0x1edb84f4,0x04010102,0xd836edb8,0x945e1d8c,0x5b337ce7 + DD 0xc055dc14,0xd2075c77,0x81d89cdf,0x2a0ffa25,0x6ffdcbaf,0x8ce815ea,0xfb648867,0xa3428878,0x884655fb,0x277699cf,0x364d3e41,0xfa5b5bd6,0x441e1cb7,0x01f680c6,0xb70a7d67,0x3fd61e66 + DD 0xcc78cf66,0x666ba2dc,0x6fdbff77,0xb3018174,0x168d4668,0x8d4dd0db,0x1dab3a2a,0x259455d0,0xcde3acec,0xf58564c5,0x13adb276,0x77141925,0x8a303f65,0x527d725d,0xe6f38f7b,0x55deb6c9 + DD 0xb1fa70fb,0xfd5bb657,0xd8073a00,0xfa07f50f,0xbca02500,0xf72e3aa7,0x9975740d,0xf68f895d,0x5cae2a6a,0x30112060,0x02874842,0x01bd7218,0x7ce47bd3,0x3d423891,0x789544f6,0xa66663c1 + DD 0x3272d838,0x864d05d7,0xfa6295c5,0xe22924f9,0x6c2fda32,0x8189593f,0xb184b544,0x330d7189,0xbde1f714,0x79efa62c,0xe5cb1a63,0x35771c94,0x641c8332,0x2f4826b8,0xc8cee854,0x00a894fb + DD 0x36194d40,0xb4b9a39b,0x77612601,0xe857a7c5,0x4ecf2f58,0xf4209dd2,0x5a033487,0x82b9e66d,0xe4e8b9dd,0xc1e36934,0xa42377d7,0xd2372c9d,0x0e3ae43b,0x51dc94c7,0x04474f6f,0x4c57761e + DD 0x1058a318,0xdcdacd0a,0x78053a9a,0x369cf3f5,0x31c68de2,0xc6c3de50,0x3c4b6d9f,0x4653a576,0xaa4e5c97,0x1688dd5a,0xb7ab3c74,0x5be80aa1,0xbc65c283,0x70cefe7c,0x06867091,0x57f95f13 + DD 0x4415503b,0xa39114e2,0x4cbb17e9,0xc08ff7c6,0xd7dec966,0x1eff674d,0x53376f63,0x6d4690af,0xea74237b,0xff6fe32e,0xcd57508e,0xc436d17e,0xedcc40fe,0x15aa28e1,0x581bbb44,0x0d769c04 + DD 0x34eaacda,0xc240b6de,0x2ba0f1de,0xd9e116e8,0x79438e55,0xcbe45ec7,0x96f752d7,0x91787c9d,0xf129ac2f,0x897f532b,0x5a36e22c,0xd307b7c8,0x749fb8f3,0x91940675,0x157fdb28,0xd14f95d0 + DD 0x6ae55043,0xfe51d029,0x44a87de1,0x8931e98f,0x09e4fee2,0xe57f1cc6,0x4e072d92,0x0d063b67,0xed0e4316,0x70a998b9,0x306aca46,0xe74a736b,0x4fda97c7,0xecf0fbf2,0x3e178d93,0xa40f65cb + DD 0x16df4285,0x16253604,0xd0c56ae2,0xb0c9babb,0xcfc5cfc3,0x73032b19,0x09752056,0xe497e5c3,0x164bda96,0x12096bb4,0xa0b74da1,0x1ee42419,0x403826ba,0x8fc36243,0xdc09e660,0x0c8f0069 + DD 0xc27253c9,0x8667e981,0x92b36a45,0x05a6aefb,0x9cb7bb46,0xa62c4b36,0x11f7027b,0x8394f375,0x5f109d0f,0x747bc79c,0x5b8cc60a,0xcad88a76,0x58f09e68,0x80c5a66b,0xf6127eac,0xe753d451 + DD 0x5b0ec6f5,0xc44b74a1,0x5289b2b8,0x47989fe4,0x58d6fc73,0x745f8484,0xf61c70ab,0xec362a6f,0xb3a8ad41,0x070c98a7,0x7b63db51,0x73a20fc0,0xf44c35f4,0xed2c2173,0x9acc9dca,0x8a56149d + DD 0x9ac6e0f4,0x98f17881,0xa413b5ed,0x360fdeaf,0xa300b0fd,0x0625b8f4,0x5b3222d3,0xf1f4d76a,0x587f76b8,0x9d6f5109,0x2317fdb5,0x8b4ee08d,0x8c68b095,0x88089bb7,0x5808d9b9,0x95570e9a + DD 0x35d33ae7,0xa395c36f,0x50bb5a94,0x200ea123,0x0bafe84b,0x20c789bd,0x0919276a,0x243ef52d,0xe23ae233,0x3934c577,0xa460d1ec,0xb93807af,0xf8fa76a4,0xb72a53b1,0xc3ca4491,0xd8914cb0 + DD 0x3fb42622,0x2e128494,0x500907d5,0x3b2700ac,0x1a95ec63,0xf370fb09,0x31b6dfbd,0xf8f30be2,0x69e55f15,0xf2b2f8d2,0xcc1323e9,0x1fead851,0xd9e5eef6,0xfa366010,0xe316107e,0x64d487b0 + DD 0xd23ddc82,0x4c076b86,0x7e0143f0,0x03fd344c,0x317af2c5,0xa95362ff,0xe18b7a4f,0x0add3db7,0x8260e01b,0x9c673e3f,0x54a1cc91,0xfbeb49e5,0x92f2e433,0x91351bf2,0x851141eb,0xc755e7ec + DD 0x29607745,0xc9a95139,0xa26f2b28,0x0ca07420,0x4bc6f9dd,0xcb2790e7,0xadcaffc0,0x345bbb58,0xbe0f27a2,0xc65ea38c,0x641fcb56,0x67c24d7c,0xa9e2c757,0x2c25f0a7,0x16f16c49,0x93f5cdb0 + DD 0xc5ee30a1,0x2ca5a9d7,0xb909b729,0xd1593635,0xdadeff48,0x804ce9f3,0xb07c30c3,0xec464751,0x9e49af6a,0x89d65ff3,0x6f3d01bc,0xf2d6238a,0x0bced843,0x1095561e,0xc8a13fd8,0x51789e12 + DD 0x763231df,0xd633f929,0xe7cbddef,0x46df9f7d,0xcb265da8,0x01c889c0,0xaf4336d2,0xfce1ad10,0xfc6a0a7e,0x8d110df6,0x6da425dc,0xdd431b98,0x1834aabe,0xcdc4aeab,0x8439b7fc,0x84deb124 + DD 0x3c2a5998,0x8796f169,0x7947190d,0x9b9247b4,0x11597014,0x55b9d9a5,0x7b1566ee,0x7e9dd70d,0xcbcd5e64,0x94ad78f7,0x9bd4c032,0x0359ac17,0x7cc222ae,0x3b11baaf,0xba78e812,0xa6a6e284 + DD 0x24cea1a0,0x8392053f,0x33621491,0xc97bce4a,0x35399ee9,0x7eb1db34,0xece81ad1,0x473f78ef,0xf63d3d0d,0x41d72fe0,0xafab62fc,0xe620b880,0x93158383,0x92096bc9,0x8f896f6c,0x41a21357 + DD 0xc7dcfcab,0x1b5ee2fa,0x9546e007,0x650acfde,0xb1b02e07,0xc081b749,0xf9eca03d,0xda9e41a0,0x175a54ab,0x013ba727,0xea5d8d10,0xca0cd190,0x95fd96a9,0x85ea52c0,0xbc5c3940,0x2c591b9f + DD 0x2bad4d5f,0x6fb4d4e4,0xfef0059b,0xfa4c3590,0xf5122294,0x6a10218a,0xa85751d1,0x9a78a81a,0xa98e84e7,0x04f20579,0x4997e5b5,0xfe1242c0,0xca21e1e4,0xe77a273b,0x9411939d,0xfcc8b1ef + DD 0x92d0487a,0xe20ea302,0x294b91fe,0x1442dbec,0xbb6b0e8f,0x1f7a4afe,0x6889c318,0x1700ef74,0x70f1fc62,0xf5bbffc3,0x69c79cca,0x3b31d4b6,0xa7f6340d,0xe8bc2aab,0xa725e10a,0xb0b08ab4 + DD 0xae340050,0x44f05701,0x1cf0c569,0xba4b3016,0xfbe19a51,0x5aa29f83,0xb71d752e,0x1b9ed428,0xeb4819f5,0x1666e54e,0x9e18b75b,0x616cdfed,0x3ee27b0b,0x112ed5be,0x44c7de4d,0xfbf28319 + DD 0xe0e60d84,0xd685ec85,0x1db7ee78,0x68037e30,0x003c4d6e,0x5b65bdcd,0x93e29a6a,0x33e7363a,0x08d0756c,0x995b3a61,0x2faf134b,0xd727f85c,0x1d337823,0xfac6edf7,0x0439b8b4,0x99b9aa50 + DD 0xe2b4e075,0x722eb104,0x437c4926,0x49987295,0x46a9b82d,0xb1e4c0e4,0x57a006f5,0xd0cb3197,0xd7808c56,0xf3de0f7d,0x51f89772,0xb5c54d8f,0xadbd31aa,0x500a114a,0x295f6cab,0x9afaaaa6 + DD 0x04cf667a,0x94705e21,0x9d3935d7,0xfc2a811b,0x6d09267c,0x560b0280,0xf780e53b,0xf19ed119,0x067b6269,0xf0227c09,0x5caef599,0x967b8533,0x68efeebc,0x155b9243,0xc497bae6,0xcd6d34f5 + DD 0x6cceb370,0x1dd8d5d3,0xa78d7bf9,0x2aeac579,0x70b67a62,0x5d65017d,0x17c53f67,0x70c8e44f,0x86a34d09,0xd1fc0950,0xe7134907,0xe0fca256,0x80fdd315,0xe24fa29c,0xd87499ad,0x2c4acd03 + DD 0x3b5a9ba6,0xbaaf7517,0x12e51a51,0xb9cbe1f6,0x5e154897,0xd88edae3,0x77b66ca0,0xe4309c3c,0xf67f3746,0xf5555805,0xa36401ff,0x85fc37ba,0xd9499a53,0xdf86e2ca,0xecbc955b,0x6270b2a3 + DD 0x974ad33b,0xafae64f5,0xfe7b2df1,0x04d85977,0x4ab03f73,0x2a3db3ff,0x8702740a,0x0b87878a,0x5a061732,0x6d263f01,0xa32a1901,0xc25430ce,0xdb155018,0xf7ebab3d,0x63a9b78e,0x3a86f693 + DD 0xda9f3804,0x349ae368,0xa164349c,0x470f07fe,0x8562baa5,0xd52f4cc9,0x2b290df3,0xc74a9e86,0x43471a24,0xd3a1aa35,0xb8194511,0x239446be,0x81dcd44d,0xbec2dd00,0xc42ac82d,0xca3d7f0f + DD 0xfdaf4520,0x1f3db085,0x4549daf2,0xbb6d3e80,0x19ad5c42,0xf5969d8a,0xdbfd1511,0x7052b13d,0x682b9060,0x11890d1b,0xac34452c,0xa71d3883,0x783805b4,0xa438055b,0x4725b23e,0x43241277 + DD 0x4901bbed,0xf20cf96e,0xf432a2bb,0x6419c710,0xdfa9cd7d,0x57a0fbb9,0x00daa249,0x589111e4,0x7b60554e,0x19809a33,0xede283a4,0xea5f8887,0x503bfd35,0x2d713802,0x585d2a53,0x151bb0af + DD 0x43b30ca8,0x40b08f74,0xd9934583,0xe10b5bba,0xb51110ad,0xe8a546d6,0x28e0b6c5,0x1dd50e66,0xcff2b821,0x292e9d54,0x47281760,0x3882555d,0x3724d6e3,0x134838f8,0x22ddcda1,0xf2c679e0 + DD 0x6d2a5768,0x40ee8815,0x1c1e7e2d,0x7f227bd2,0xd04ff443,0x487ba134,0xc614e54b,0x76e2ff3d,0xa3177ec7,0x36b88d6f,0x2328fff5,0xbf731d51,0x49ba158e,0x758caea2,0x02938188,0x5ab8ff4c + DD 0x35edc56d,0x33e16056,0x7e940d79,0x5a69d349,0x03866dcb,0x6c4fd001,0x4893cdef,0x20a38f57,0xfac3a15b,0xfbf3e790,0x7a4f8e6b,0x6ed7ea2e,0xbc3aca86,0xa663eb4f,0x080d53f7,0x22061ea5 + DD 0xf546783f,0x2480dfe6,0x5a0a641e,0xd38bc6da,0x2ede8965,0xfb093cd1,0xacb455cf,0x89654db4,0x26e1adee,0x413cbf9a,0x373294d4,0x291f3764,0x648083fe,0x00797257,0x208cc341,0x25f504d3 + DD 0xc3a0ee43,0x635a8e5e,0x679898ff,0x70aaebca,0x5dc63d56,0x9ee9f547,0xffb34d00,0xce987966,0x5e26310a,0xf9f86b19,0x382a8ca8,0x9e435484,0xc2352fe4,0x253bcb81,0x4474b571,0xa4eac8b0 + DD 0xc1ad8cf8,0xc1b97512,0x99e0b697,0x193b4e9e,0x01e85df0,0x939d2716,0xcd44eafd,0x4fb265b3,0xe51e1ae2,0x321e7dcd,0xe3d8b096,0x8e3a8ca6,0x52604998,0x8de46cb0,0x39072aa7,0x91099ad8 + DD 0x93aa96b8,0x2617f91c,0x7fca2e13,0x0fc8716b,0x95328723,0xa7106f5e,0x262e6522,0xd1c9c40b,0x42b7c094,0xb9bafe86,0x1543c021,0x1873439d,0x5cbefd5d,0xe1baa5de,0x521e8aff,0xa363fc5e + DD 0xf862eaac,0xefe6320d,0x22c647dc,0x14419c63,0x4e46d428,0x0e06707c,0x4a178f8f,0xcb6c834f,0xd30f917c,0x0f993a45,0x9879afee,0xd4c4b049,0x70500063,0xb6142a1e,0xa5d9d605,0x7c9b41c3 + DD 0x2f8ba2c7,0xbc00fc2f,0x7c67aa28,0x0966eb2f,0x5a786972,0x13f7b516,0x8a2fbba0,0x3bfb7557,0x5a2b9620,0x131c4f23,0x6faf46be,0xbff3ed27,0x7e172323,0x9b4473d1,0x339f6246,0x421e8878 + DD 0x25a41632,0x0fa8587a,0xa35b6c93,0xc0814124,0x59ebb8db,0x2b18a9f5,0x76edb29c,0x264e3357,0xc87c51e2,0xaf245ccd,0x501e6214,0x16b3015b,0x0a3882ce,0xbb31c560,0xfec11e04,0x6961bb94 + DD 0xeff7a3a0,0x3b825b8d,0xb1df7326,0xbec33738,0x99604a1f,0x68ad747c,0x9a3bd499,0xd154c934,0x1cc7a906,0xac33506f,0x6c560e8f,0x73bb5392,0x263e3944,0x6428fcbe,0x1c387434,0xc11828d5 + DD 0x3e4b12ff,0x3cd04be1,0x2d88667c,0xc3aad9f9,0x248120cf,0xc52ddcf8,0x2a389532,0x985a892e,0x3bb85fa0,0xfbb4b21b,0x8dfc6269,0xf95375e0,0x7ee2acea,0xfb4fb06c,0x309c4d1f,0x6785426e + DD 0xd8ceb147,0x659b17c8,0xb70a5554,0x9b649eee,0xac6bc634,0x6b7fa0b5,0x1d6e732f,0xd99fe2c7,0x8d3abba2,0x30e6e762,0xa797b799,0x18fee6e7,0xc696464d,0x5c9d360d,0x27bfde12,0xe3baeb48 + DD 0xf23206d5,0x2bf5db47,0x1d260152,0x2f6d3420,0x3f8ff89a,0x17b87653,0x378fa458,0x5157c30c,0x2d4fb936,0x7517c5c5,0xe6518cdc,0xef22f7ac,0xbf847a64,0xdeb483e6,0x92e0fa89,0xf5084558 + DD 0xdf7304d4,0xab9659d8,0xff210e8e,0xb71bcf1b,0xd73fbd60,0xa9a2438b,0x5d11b4de,0x4595cd1f,0x4835859d,0x9c0d329a,0x7dbb6e56,0x4a0f0d2d,0xdf928a4e,0xc6038e5e,0x8f5ad154,0xc9429621 + DD 0xf23f2d92,0x91213462,0x60b94078,0x6cab71bd,0x176cde20,0x6bdd0a63,0xee4d54bc,0x54c9b20c,0x9f2ac02f,0x3cd2d8aa,0x206eedb0,0x03f8e617,0x93086434,0xc7f68e16,0x92dd3db9,0x831469c5 + DD 0x8f981354,0x8521df24,0x3588a259,0x587e23ec,0xd7a0992c,0xcbedf281,0x38961407,0x06930a55,0xbe5bbe21,0x09320deb,0x2491817f,0xa7ffa5b5,0x09065160,0xe6c8b4d9,0xfff6d2a9,0xac4f3992 + DD 0x3ae9c1bd,0x7aa7a158,0xe37ce240,0xe0af6d98,0x28ab38b4,0xe54342d9,0x0a1c98ca,0xe8b75007,0xe02358f2,0xefce86af,0xea921228,0x31b8b856,0x0a1c67fc,0x052a1912,0xe3aead59,0xb4069ea4 + DD 0x7fa03cb3,0x3232d6e2,0x0fdd7d88,0xdb938e5b,0x2ccbfc5d,0x04c1d2cd,0xaf3a580f,0xd2f45c12,0x7883e614,0x592620b5,0xbe7c5f26,0x5fd27e68,0x1567e1e3,0x139e45a9,0x44d8aaaf,0x2cc71d2d + DD 0xe36d0757,0x4a9090cd,0xd9a29382,0xf722d7b1,0x04b48ddf,0xfb7fb04c,0xebe16f43,0x628ad2a7,0x20226040,0xcd3fbfb5,0x5104b6c4,0x6c34ecb1,0xc903c188,0x30c0754e,0x2d23cab0,0xec336b08 + DD 0x1e206ee5,0x473d62a2,0x8c49a633,0xf1e27480,0xe9f6b2c3,0x87ab956c,0x62b606ea,0x61830b48,0xe78e815f,0x67cd6846,0x4c02082a,0xfe40139f,0x952ec365,0x52bbbfcb,0x6b9836ab,0x74c11642 + DD 0x558df019,0x9f51439e,0xac712b27,0x230da4ba,0x55185a24,0x518919e3,0x84b78f50,0x4dcefcdd,0xa47d4c5a,0xa7d90fb2,0xb30e009e,0x55ac9abf,0x74eed273,0xfd2fc359,0xdbea8faf,0xb72d824c + DD 0x4513e2ca,0xce721a74,0x38240b2c,0x0b418612,0xd5baa450,0x05199968,0x2b0e8c25,0xeb1757ed,0x3dfac6d5,0x6ebc3e28,0x48a237f5,0xb2431e2e,0x52f61499,0x2acb5e23,0xe06c936b,0x5558a2a7 + DD 0xcbb13d1b,0xd213f923,0x5bfb9bfe,0x98799f42,0x701144a9,0x1ae8ddc9,0x4c5595ee,0x0b8b3bb6,0x3ecebb21,0x0ea9ef2e,0x3671f9a7,0x17cb6c4b,0x726f1d1f,0x47ef464f,0x6943a276,0x171b9484 + DD 0x7ef0329c,0x51a4ae2d,0x91c4402a,0x08509222,0xafd45bbc,0x64a61d35,0x3035a851,0x38f096fe,0xa1dec027,0xc7468b74,0x4fc7dcba,0xe8cf10e7,0xf4a06353,0xea35ff40,0x8b77dd66,0x0b4c0dfa + DD 0xde7e5c19,0x779b8552,0xc1c0256c,0xfab28609,0xabd4743d,0x64f58eee,0x7b6cc93b,0x4e8ef838,0x4cb1bf3d,0xee650d26,0x73dedf61,0x4c1f9d09,0xbfb70ced,0xaef7c9d7,0x1641de1e,0x1ec0507e + DD 0xcde45079,0xcd7e5cc7,0x516ac9e4,0xde173c9a,0xc170315c,0x517a8494,0x91d8e8fb,0x438fd905,0xc7d9630b,0x5145c506,0xf47d4d75,0x6457a87b,0x0d9a80e8,0xd31646bf,0xcef3aabe,0x453add2b + DD 0xa607419d,0xc9941109,0xbb6bca80,0xfaa71e62,0x07c431f3,0x34158c13,0x992bc47a,0x594abebc,0xeb78399f,0x6dfea691,0x3f42cba4,0x48aafb35,0x077c04f0,0xedcd65af,0xe884491a,0x1a29a366 + DD 0x1c21f2bf,0x023a40e5,0xa5057aee,0xf99a513c,0xbcab072e,0xa3fe7e25,0x40e32bcf,0x8568d2e1,0xd3f69d9f,0x904594eb,0x07affab1,0x181a9733,0xb6e330f4,0xe4d68d76,0xc75a7fc1,0x87a6dafb + DD 0xef7d9289,0x549db2b5,0x197f015a,0x2480d4a8,0xc40493b6,0x61d5590b,0x6f780331,0x3a55b52e,0x309eadb0,0x40eb8115,0x92e5c625,0xdea7de5a,0xcc6a3d5a,0x64d631f0,0x93e8dd61,0x9d5e9d7c + DD 0x206d3ffc,0xf297bef5,0x7d808bd4,0x23d5e033,0xd24cf5ba,0x4a4f6912,0x09cdaa8a,0xe4d8163b,0xd3082e8e,0x0e0de9ef,0x0192f360,0x4fe1246c,0x4b8eee0a,0x1f900150,0xf1da391b,0x5219da81 + DD 0xf7ea25aa,0x7bf6a5c1,0xfbb07d5f,0xd165e6bf,0x89e78671,0xe3539361,0x2bac4219,0xa3fcac89,0xf0baa8ab,0xdfab6fd4,0xe2c1c2e5,0x5a4adac1,0x40d85849,0x6cd75e31,0x19b39181,0xce263fea + DD 0x07032c72,0xcb6803d3,0x790968c8,0x7f40d5ce,0xdce978f0,0xa6de86bd,0x368f751c,0x25547c4f,0x65fb2a9e,0xb1e685fd,0x1eb9179c,0xce69336f,0x12504442,0xb15d1c27,0xb911a06b,0xb7df465c + DD 0x315980cd,0xb8d804a3,0xfa3bebf7,0x693bc492,0x2253c504,0x3578aeee,0xcd2474a2,0x158de498,0xcfda8368,0x1331f5c7,0x78d7177e,0xd2d7bbb3,0xf3c1e46e,0xdf61133a,0xd30e7be8,0x5836ce7d + DD 0x94f834cb,0x83084f19,0x429ed782,0xd35653d4,0x59e58243,0xa542f16f,0x0470a22d,0xc2b52f65,0x18f23d96,0xe3b6221b,0x3f5252b4,0xcb05abac,0x87d61402,0xca00938b,0x411933e4,0x2f186cdd + DD 0x9a29a5c5,0xe042ece5,0x3b6c8402,0xb19b3c07,0x19d92684,0xc97667c7,0xebc66372,0xb5624622,0x3c04fa02,0x0cb96e65,0x8eaa39aa,0x83a7176c,0xeaa1633f,0x2033561d,0x4533df73,0x45a9d086 + DD 0x3dc090bc,0xe0542c1d,0xaa59c167,0x82c996ef,0x0ee7fc4d,0xe3f735e8,0x7c35db79,0x7b179393,0xf8c5dbfd,0xb6419e25,0x1f327b04,0x4d9d7a1e,0x298dfca8,0x979f6f9b,0x8de9366a,0xc7c5dff1 + DD 0x04c82bdd,0x1b7a588d,0xf8319dfd,0x68005534,0xd8eb9580,0xde8a55b5,0x8d5bca81,0x5ea886da,0x252a0b4d,0xe8530a01,0x35eaa0a1,0x1bffb4fe,0xd8e99563,0x2ad828b1,0x95f9cd87,0x7de96ef5 + DD 0xd77d970c,0x4abb2d0c,0xd33ef9cb,0x03cfb933,0x8b211fe9,0xb0547c01,0xa56ed1c6,0x2fe64809,0xc2ac98cc,0xcb7d5624,0x1a393e33,0x2a1372c0,0x29660521,0xc8d1ec1c,0xb37ac3e9,0xf3d31b04 + DD 0x5ece6e7c,0xa29ae9df,0x0facfb55,0x0603ac8f,0xdda233a5,0xcfe85b7a,0xbd75f0b8,0xe618919f,0x99bf1603,0xf555a3d2,0xf184255a,0x1f43afc9,0x319a3e02,0xdcdaf341,0x03903a39,0xd3b117ef + DD 0x65d1d131,0xe095da13,0xc37ad03e,0x86f16367,0x462cd8dd,0x5f37389e,0xd67a60e6,0xc103fa04,0xf4b478f0,0x57c34344,0xe117c98d,0xce91edd8,0x231fc12e,0x001777b0,0xb207bccb,0x11ae47f2 + DD 0x20f8a242,0xd983cf8d,0xf22e1ad8,0x7aff5b1d,0x7fc4feb3,0x68fd11d0,0xb0f1c3e1,0x5d53ae90,0xec041803,0x50fb7905,0x14404888,0x85e3c977,0xac628d8f,0x0e67faed,0x6668532c,0x2e865150 + DD 0x6a67a6b0,0x15acaaa4,0xb25cec41,0xf4cdee25,0xe4c6701e,0x49ee565a,0xfc7d63d8,0x2a04ca66,0xef0543fb,0xeb105018,0xd1b0d81d,0xf709a4f5,0x2915d333,0x5b906ee6,0x96f1f0ab,0xf4a87412 + DD 0x4d82f4c2,0xb6b82fa7,0x6804efb3,0x90725a60,0xadc3425e,0xbc82ec46,0x2787843e,0xb7b80581,0xdd1fc74c,0xdf46d91c,0xe783a6c4,0xdc1c62cb,0x1a04cbba,0x59d1b9f3,0x95e40764,0xd87f6f72 + DD 0x317f4a76,0x02b4cfc1,0x91036bce,0x8d2703eb,0xa5e72a56,0x98206cc6,0xcf53fb0f,0x57be9ed1,0xef0b17ac,0x09374571,0xd9181b38,0x74b2655e,0x89935d0e,0xc8f80ea8,0x91529936,0xc0d9e942 + DD 0x1e84e0e5,0x19686041,0xaea34c93,0xa5db84d3,0x7073a732,0xf9d5bb19,0x6bcfd7c0,0xb8d2fe56,0xf3eb82fa,0x45775f36,0xfdff8b58,0x8cb20ccc,0x8374c110,0x1659b65f,0x330c789a,0xb8b4a422 + DD 0x6fe8208b,0x75e3c3ea,0x286e78fe,0xbd74b9e4,0xd7d93a1a,0x0be2e81b,0xdd0a5aae,0x7ed06e27,0x6be8b800,0x721f5a58,0xd846db28,0x428299d1,0x5be88ed3,0x95cb8e6b,0x1c034e11,0xc3186b23 + DD 0x8977d99b,0xa6312c9e,0x83f531e7,0xbe944331,0x18d3b1d4,0x8232c0c2,0xe1247b73,0x617aae8b,0x282aec3b,0x40153fc4,0xf7b8f823,0xc6063d2f,0x3304f94c,0x68f10e58,0xee676346,0x31efae74 + DD 0x40a9b97c,0xbadb6c6d,0x4f666256,0x14702c63,0x5184b2e3,0xdeb954f1,0x94b6ca40,0x5184a526,0x003c32ea,0xfff05337,0x205974c7,0x5aa374dd,0x4b0dd71a,0x9a763854,0xdeb947ec,0x459cd27f + DD 0x459c2b92,0xa6e28161,0x75ee8ef5,0x2f020fa8,0x30b06310,0xb132ec2d,0xbc6a4530,0xc3e15899,0xaa3f451a,0xdc5f53fe,0xc2d9acac,0x3a3c7f23,0x6b27e58b,0x2ec2f892,0xd742799f,0x68466ee7 + DD 0x1fa26613,0x98324dd4,0xbdc29d63,0xa2dc6dab,0xd712d657,0xf9675faa,0x21fd8d15,0x813994be,0xfd4f7553,0x5ccbb722,0xf3a36b20,0x5135ff8b,0x69559df5,0x44be28af,0x9d41bf30,0x40b65bed + DD 0x3734e520,0xd98bf2a4,0x209bdcba,0x5e3abbe3,0xbc945b35,0x77c76553,0xc6ef14aa,0x5331c093,0x76b60c80,0x518ffe29,0x7ace16f8,0x2285593b,0xbe2b9784,0xab1f64cc,0xab2421b6,0xe8f2c0d9 + DD 0xc1df065c,0x617d7174,0x5f6578fa,0xafeeb5ab,0x263b54a8,0x16ff1329,0xc990dce3,0x45c55808,0xecc8c177,0x42eab6c0,0x5982ecaa,0x799ea9b5,0xb607ef8e,0xf65da244,0x32a3fc2c,0x8ab226ce + DD 0x7ea973dc,0x745741e5,0x20888f2e,0x5c00ca70,0x45fd9cf1,0x7cdce3cf,0x5507f872,0x8a741ef1,0x196b4cec,0x47c51c2f,0xc97ea618,0x70d08e43,0x15b18a2b,0x930da15c,0x2f610514,0x33b6c678 + DD 0x07ac9794,0xc662e4f8,0xba06cb79,0x1eccf050,0xe7d954e5,0x1ff08623,0x24cf71c3,0x6ef2c5fb,0x67978453,0xb2c063d2,0x1d654af8,0xa0cf3796,0x7ebdaa37,0x7cb242ea,0xb86747e0,0x206e0b10 + DD 0xd5ecfefc,0x481dae5f,0xc2bff8fc,0x07084fd8,0xea324596,0x8040a01a,0xd4de4036,0x4c646980,0xd65abfc3,0x9eb8ab4e,0x13541ec7,0xe01cb91f,0xfd695012,0x8f029adb,0x3c7569ec,0x9ae28483 + DD 0xa66d80a1,0xa5614c9e,0x75f5f911,0x680a3e44,0xceba4fc1,0x0c07b14d,0xa13071c1,0x891c285b,0x799ece3c,0xcac67ceb,0x41e07e27,0x29b910a9,0xf2e43123,0x66bdb409,0x7ac9ecbe,0x06f8b137 + DD 0x38547090,0x5981fafd,0x85e3415d,0x19ab8b9f,0xc7e31b27,0xfc28c194,0x6fbcbb42,0x843be0aa,0xa6db836c,0xf3b1ed43,0x01a45c05,0x2a1330e4,0x95c1a377,0x4f19f3c5,0x44b5ee33,0xa85f39d0 + DD 0x4ae52834,0x3da18e6d,0x7423dcb0,0x5a403b39,0xf2374aef,0xbb555e0a,0x1e8ca111,0x2ad599c4,0x014b3bf8,0x1b3a2fb9,0xf66d5007,0x73092684,0xc4340102,0x079f1426,0x8fddf4de,0x1827cf81 + DD 0xf10ff927,0xc83605f6,0x23739fc6,0xd3871451,0xcac1c2cc,0x6d163450,0xa2ec1ac5,0x6b521296,0x6e3cb4a5,0x0606c4f9,0x778abff7,0xe47d3f41,0xbe8e3a45,0x425a8d5e,0xa6102160,0x53ea9e97 + DD 0x39cbb688,0x477a106e,0xf3386d32,0x532401d2,0xb1b9b421,0x8e564f64,0x81dad33f,0xca9b8388,0x2093913e,0xb1422b4e,0x69bc8112,0x533d2f92,0xebe7b2c7,0x3fa017be,0xcaf197c6,0xb2767c4a + DD 0xaedbae9f,0xc925ff87,0x36880a54,0x7daf0eb9,0x9c4d0e71,0x9284ddf5,0x316f8cf5,0x1581cf93,0x3ac1f452,0x3eeca887,0xfb6aeffe,0xb417fce9,0xeefb8dc3,0xa5918046,0x02209400,0x73d318ac + DD 0x728693e5,0xe800400f,0x339927ed,0xe87d814b,0x57ea9910,0x93e94d3b,0x2245fb69,0xff8a35b6,0x7f200d34,0x043853d7,0x0f653ce1,0x470f1e68,0x59a06379,0x81ac05bd,0x03930c29,0xa14052c2 + DD 0x26bc2797,0x6b72fab5,0x99f16771,0x13670d16,0x1e3e48d1,0x00170052,0xb7adf678,0x978fe401,0xd41c5dd4,0x55ecfb92,0xc7b27da5,0x5ff8e247,0x013fb606,0xe7518272,0x2f547a3c,0x5768d7e5 + DD 0x60017a5f,0xbb24eaa3,0x9c64ce9b,0x6b18e6e4,0x103dde07,0xc225c655,0x7592f7ea,0xfc3672ae,0xd06283a1,0x9606ad77,0xe4d59d99,0x542fc650,0x2a40e7c2,0xabb57c49,0xa8db9f55,0xac948f13 + DD 0xb04465c3,0x6d4c9682,0x6468bd15,0xe3d062fa,0x5f318d7e,0xa51729ac,0x9eb6fc95,0x1fc87df6,0x0591f652,0x63d146a8,0x589621aa,0xa861b8f7,0xce31348c,0x59f5f15a,0x440da6da,0x8f663391 + DD 0xb591ffa3,0xcfa778ac,0x4cdfebce,0x027ca9c5,0x444ea6b3,0xbe8e05a5,0xa78d8254,0x8aab4e69,0xb474d6b8,0x2437f04f,0x045b3855,0x6597ffd4,0xca47ecaa,0xbb0aea4e,0x85c7ebfc,0x568aae83 + DD 0xc73b2383,0x0e966e64,0xd17d8762,0x49eb3447,0x8da05dab,0xde107821,0x016b7236,0x443d8baa,0xea7610d6,0x163b63a5,0xce1ca979,0xe47e4185,0x80baa132,0xae648b65,0x0e0d5b64,0xebf53de2 + DD 0xd3c8c1ca,0x8d3bfcb4,0x5d04b309,0x0d914ef3,0x3de7d395,0x55ef6415,0x26b850e8,0xbde1666f,0xd449ab19,0xdbe1ca6e,0xe89a2672,0x8902b322,0xdacb7a53,0xb1674b7e,0xf52523ff,0x8e9faf6e + DD 0x9a85788b,0x6ba535da,0xbd0626d4,0xd21f03ae,0xe873dc64,0x099f8c47,0x018ec97e,0xcda8564d,0xde92c68c,0x3e8d7a5c,0x73323cc4,0x78e035a1,0xf880ff7c,0x3ef26275,0x273eedaa,0xa4ee3dff + DD 0xaf4e18f8,0x58823507,0x0672f328,0x967ec9b5,0x559d3186,0x9ded19d9,0x6cdce39c,0x5e2ab3de,0x11c226df,0xabad6e4d,0x87723014,0xf9783f43,0x1a885719,0x9a49a0cf,0x90da9dbf,0xfc0c1a5a + DD 0x571d92ac,0x8bbaec49,0x4692517f,0x569e85fe,0xa14ea4af,0x8333b014,0x12e5c5ad,0x32f2a62f,0x06d89b85,0x98c2ce3a,0x2ff77a08,0xb90741aa,0x01f795a2,0x2530defc,0x84b3c199,0xd6e5ba0b + DD 0x12e4c936,0x7d8e8451,0xbd0be17b,0xae419f7d,0x22262bc9,0xa583fc8c,0x91bfe2bd,0x6b842ac7,0x440d6827,0x33cef4e9,0xef81fb14,0x5f69f4de,0x234fbb92,0xf16cf6f6,0xd9e7e158,0x76ae3fc3 + DD 0xe9740b33,0x4e89f6c2,0x4962d6a1,0x677bc85d,0x68d10d15,0x6c6d8a7f,0x0257b1cd,0x5f9a7224,0x4ad85961,0x7096b916,0xe657ab4a,0x5f8c47f7,0xf7461d7e,0xde57d7d0,0x80ce5ee2,0x7eb6094d + DD 0x34190547,0x0b1e1dfd,0xf05dd150,0x8a394f43,0x97df44e6,0x0a9eb24d,0x87675719,0x78ca06bf,0x6ffeec22,0x6f0b3462,0x36cdd8fb,0x9d91bcea,0xa105be47,0xac83363c,0x069710e3,0x81ba76c1 + DD 0x28c682c6,0x3d1b24cb,0x8612575b,0x27f25228,0xe8e66e98,0xb587c779,0x405eb1fe,0x7b0c03e9,0x15b548e7,0xfdf0d030,0x38b36af7,0xa8be76e0,0x4f310c40,0x4cdab04a,0xf47ecaec,0x6287223e + DD 0x8b399320,0x678e6055,0xc01e4646,0x61fe3fa6,0x03261a5e,0xc482866b,0x5c2f244a,0xdfcf45b8,0x2f684b43,0x8fab9a51,0xc7220a66,0xf796c654,0xf5afa58f,0x1d90707e,0x4fdbe0de,0x2c421d97 + DD 0xaf2ebc2f,0xc4f4cda3,0xcb4efe24,0xa0af843d,0x9ccd10b1,0x53b857c1,0x914d3e04,0xddc9d1eb,0x62771deb,0x7bdec8bb,0x91c5aa81,0x829277aa,0x832391ae,0x7af18dd6,0xc71a84ca,0x1740f316 + DD 0xeeaf8c49,0x8928e99a,0x6e24d728,0xee7aa73d,0xe72b156c,0x4c5007c2,0xed408a1d,0x5fcf57c5,0xb6057604,0x9f719e39,0xc2868bbf,0x7d343c01,0x7e103e2d,0x2cca254b,0xf131bea2,0xe6eb38a9 + DD 0x8be762b4,0xb33e624f,0x058e3413,0x2a9ee4d1,0x67d805fa,0x968e6369,0x7db8bfd7,0x9848949b,0xd23a8417,0x5308d7e5,0xf3e29da5,0x892f3b1d,0x3dee471f,0xc95c139e,0xd757e089,0x8631594d + DD 0xde918dcc,0xe0c82a3c,0x26fdcf4b,0x2e7b5994,0x32cb1b2d,0x82c50249,0x7657ae07,0xea613a9d,0xf1fdc9f7,0xc2eb5f6c,0x879fe682,0xb6eae8b8,0x591cbc7f,0x253dfee0,0x3e1290e6,0x000da713 + DD 0x1f095615,0x1083e2ea,0x14e68c33,0x0a28ad77,0x3d8818be,0x6bfc0252,0xf35850cd,0xb585113a,0x30df8aa1,0x7d935f0b,0x4ab7e3ac,0xaddda07c,0x552f00cb,0x92c34299,0x2909df6c,0xc33ed1de + DD 0x80e87766,0x22c2195d,0x9ddf4ac0,0x9e99e6d8,0x65e74934,0x09642e4e,0xff1ff241,0x2610ffa2,0x751c8159,0x4d1d47d4,0xaf3a9363,0x697b4985,0x87477c33,0x0318ca46,0x9441eff3,0xa90cb565 + DD 0x36f024cb,0x58bb3848,0x36016168,0x85be1f77,0xdc7e07f1,0x6c59587c,0xaf1d8f02,0x191be071,0xcca5e55c,0xbf169fa5,0xf7d04eac,0x3864ba3c,0x8d7d05db,0x915e367f,0xa6549e5d,0xb48a876d + DD 0x580e40a2,0xef89c656,0x728068bc,0xf194ed8c,0xa47990c9,0x74528045,0x5e1a4649,0xf53fc7d7,0x78593e7d,0xbec5ae9b,0x41db65d7,0x2cac4ee3,0x04a3d39b,0xa8c1eb24,0x03f8f3ef,0x53b7d634 + DD 0x3e07113c,0x2dc40d48,0x7d8b63ae,0x6e4a5d39,0x79684c2b,0x5582a94b,0x622da26c,0x932b33d4,0x0dbbf08d,0xf534f651,0x64c23a52,0x211d07c9,0xee5bdc9b,0x0eeece0f,0xf7015558,0xdf178168 + DD 0x0a712229,0xd4294635,0x09273f8c,0x93cbe448,0x8f13bc83,0x00b095ef,0x8798978c,0xbb741972,0x56dbe6e7,0x9d7309a2,0x5a5d39ec,0xe578ec56,0x851f9a31,0x3961151b,0xe5709eb4,0x2da7715d + DD 0x53dfabf0,0x867f3017,0xb8e39259,0x728d2078,0x815d9958,0x5c75a0cd,0x16603be1,0xf84867a6,0x70e35b1c,0xc865b13d,0x19b03e2c,0x02414468,0xac1f3121,0xe46041da,0x6f028a7c,0x7c9017ad + DD 0x0a482873,0xabc96de9,0xb77e54d4,0x4265d6b1,0xa57d88e7,0x68c38e79,0x9ce82de3,0xd461d766,0x64a7e489,0x817a9ec5,0xa0def5f2,0xcc5675cd,0x985d494e,0x9a00e785,0x1b03514a,0xc626833f + DD 0x83cdd60e,0xabe7905a,0xa1170184,0x50602fb5,0xb023642a,0x689886cd,0xa6e1fb00,0xd568d090,0x0259217f,0x5b1922c7,0xc43141e4,0x93831cd9,0x0c95f86e,0xdfca3587,0x568ae828,0xdec2057a + DD 0xf98a759a,0xc44ea599,0xf7c23c1d,0x55a0a7a2,0x94c4f687,0xd5ffb6e6,0x12848478,0x3563cce2,0xe7b1fbe1,0x812b3517,0x4f7338e0,0x8a7dc979,0x52d048db,0x211ecee9,0xc86ea3b8,0x2eea4056 + DD 0xba772b34,0xd8cb68a7,0x5f4e2541,0xe16ed341,0x0fec14db,0x9b32f6a6,0x391698be,0xeee376f7,0x83674c02,0xe9a7aa17,0x5843022a,0x65832f97,0x5ba4990f,0x29f3a8da,0xfb8e3216,0x79a59c3a + DD 0xbd19bb16,0x9cdc4d2e,0xb3262d86,0xc6c7cfd0,0x969c0b47,0xd4ce14d0,0x13e56128,0x1fa352b7,0x973db6d3,0x383d55b8,0xe8e5b7bf,0x71836850,0xe6bb571f,0xc7714596,0x2d5b2dd2,0x259df31f + DD 0x913cc16d,0x568f8925,0xe1a26f5a,0x18bc5b6d,0xf5f499ae,0xdfa413be,0xc3f0ae84,0xf8835dec,0x65a40ab0,0xb6e60bd8,0x194b377e,0x65596439,0x92084a69,0xbcd85625,0x4f23ede0,0x5ce433b9 + DD 0x6ad65143,0xe8e8f04f,0xd6e14af6,0x11511827,0x8295c0c7,0x3d390a10,0x621eba16,0x71e29ee4,0x63717b46,0xa588fc09,0xe06ad4a2,0x02be02fe,0x04c22b22,0x931558c6,0x12f3c849,0xbb4d4bd6 + DD 0x20efd662,0x54a4f496,0xc5952d14,0x92ba6d20,0xcc9784c2,0x2db8ea1e,0x4b353644,0x81cc10ca,0x4b4d7f6c,0x40b570ad,0x84a1dcd2,0x5c9f1d96,0x3147e797,0x01379f81,0x2bd499f5,0xe5c6097b + DD 0x328e5e20,0x40dcafa6,0x54815550,0xf7b5244a,0x47bfc978,0xb9a4f118,0xd25825b1,0x0ea0e79f,0x646c7ecf,0xa50f96eb,0x446dea9d,0xeb811493,0xdfabcf69,0x2af04677,0xc713f6e8,0xbe3a068f + DD 0x42e06189,0x860d523d,0x4e3aff13,0xbf077941,0xc1b20650,0x0b616dca,0x2131300d,0xe66dd6d1,0xff99abde,0xd4a0fd67,0xc7aac50d,0xc9903550,0x7c46b2d7,0x022ecf8b,0x3abf92af,0x3333b1e8 + DD 0x6c491c14,0x11cc113c,0x80dd3f88,0x05976688,0x29d932ed,0xf5b4d9e7,0xa2c38b6d,0xe982aad8,0x8be0dcf0,0x6f925347,0x65ca53f2,0x700080ae,0x443ca77f,0xd8131156,0xec51f984,0xe92d6942 + DD 0x85dfe9ae,0xd2a08af8,0x4d2a86ca,0xd825d9a5,0x39dff020,0x2c53988d,0x430cdc40,0xf38b135a,0x62a7150b,0x0c918ae0,0x0c340e9b,0xf31fd8de,0x4dbbf02e,0xafa0e7ae,0x5eba6239,0x5847fb2a + DD 0xdccbac8b,0x6b1647dc,0x06f485c8,0xb642aa78,0x7038ecdf,0x873f3765,0xfa49d3fe,0x2ce5e865,0xc98c4400,0xea223788,0xf1fa5279,0x8104a8cd,0x06becfd7,0xbcf7cc7a,0xc8f974ae,0x49424316 + DD 0x84d6365d,0xc0da65e7,0x8f759fb8,0xbcb7443f,0x7ae81930,0x35c712b1,0x4c6e08ab,0x80428dff,0xa4faf843,0xf19dafef,0xffa9855f,0xced8538d,0xbe3ac7ce,0x20ac409c,0x882da71e,0x358c1fb6 + DD 0xfd349961,0xafa9c0e5,0x8421c2fc,0x2b2cfa51,0xf3a28d38,0x2a80db17,0x5d138e7e,0xa8aba539,0x6e96eb8d,0x52012d1d,0xcbaf9622,0x65d8dea0,0xb264f56c,0x57735447,0x1b6c8da2,0xbeebef3f + DD 0xce785254,0xfc346d98,0xbb64a161,0xd50e8d72,0x49794add,0xc03567c7,0x752c7ef6,0x15a76065,0x961f23d6,0x59f3a222,0x73ecc0b0,0x378e4438,0x5a82fde4,0xc74be434,0xd8b9cf34,0xae509af2 + DD 0x577f44a1,0x4a61ee46,0xb611deeb,0xe09b748c,0xf5f7b884,0xc0481b2c,0x61acfa6b,0x35626678,0xbf8d21e6,0x37f4c518,0xb205a76d,0x22d96531,0x954073c0,0x37fb85e1,0x65b3a567,0xbceafe4f + DD 0xbe42a582,0xefecdef7,0x65046be6,0xd3fc6080,0x09e8dba9,0xc9af13c8,0x641491ff,0x1e6c9847,0xd30c31f7,0x3b574925,0xac2a2122,0xb7eb72ba,0xef0859e7,0x776a0dac,0x21900942,0x06fec314 + DD 0xf8c22049,0x2464bc10,0x875ebf69,0x9bfbcce7,0x4336326b,0xd7a88e2a,0x5bc2acfa,0xda05261c,0xeba7efc8,0xc29f5bdc,0x25dbbf2e,0x471237ca,0x2975f127,0xa72773f2,0x04d0b326,0xdc744e8e + DD 0xa56edb73,0x38a7ed16,0x2c007e70,0x64357e37,0x5080b400,0xa167d15b,0x23de4be1,0x07b41164,0x74c89883,0xb2d91e32,0x2882e7ed,0x3c162821,0x7503e482,0xad6b36ba,0x0ea34331,0x48434e8e + DD 0x2c7ae0b9,0x79f4f24f,0x1939b44a,0xc46fbf81,0x56595eb1,0x76fefae8,0xcd5f29c7,0x417b66ab,0xc5ceec20,0x5f2332b2,0xe1a1cae2,0xd69661ff,0x9b0286e6,0x5ede7e52,0xe276b993,0x9d062529 + DD 0x7e50122b,0x324794b0,0x4af07ca5,0xdd744f8b,0xd63fc97b,0x30a12f08,0x76626d9d,0x39650f1a,0x1fa38477,0x101b47f7,0xd4dc124f,0x3d815f19,0xb26eb58a,0x1569ae95,0x95fb1887,0xc3cde188 + DD 0xf9539a48,0x54e9f37b,0x7408c1a5,0xb0100e06,0xea580cbb,0x821d9811,0x86e50c56,0x8af52d35,0xdbbf698b,0xdfbd9d47,0x03dc1c73,0x2961a1ea,0xe76a5df8,0x203d38f8,0x6def707a,0x08a53a68 + DD 0x1bee45d4,0x26eefb48,0x3c688036,0xb3cee346,0xc42f2469,0x463c5315,0x81378162,0x19d84d2e,0x1c4d349f,0x22d7c3c5,0x163d59c5,0x65965844,0xb8abceae,0xcf198c56,0x628559d5,0x6fb1fb1b + DD 0x07bf8fe3,0x8bbffd06,0x3467734b,0x46259c58,0x35f7f0d3,0xd8953cea,0xd65b0ff1,0x1f0bece2,0xf3c72914,0xf7d5b4b3,0x3cb53389,0x29e8ea95,0x836b6d46,0x4a365626,0xea174fde,0xe849f910 + DD 0xf4737f21,0x7ec62fbb,0x6209f5ac,0xd8dba5ab,0xa5f9adbe,0x24b5d7a9,0xa61dc768,0x707d28f7,0xcaa999ea,0x7711460b,0x1c92e4cc,0xba7b174d,0x18d4bf2d,0x3c4bab66,0xeb8bd279,0xb8f0c980 + DD 0x324b4737,0x024bea9a,0x32a83bca,0xfba9e423,0xa232dced,0x6e635643,0x2571c8ba,0x99619367,0x54b7032b,0xe8c9f357,0x2442d54a,0xf936b3ba,0x8290c65a,0x2263f0f0,0xee2c7fdb,0x48989780 + DD 0x13d4f95e,0xadc5d55a,0xad9b8500,0x737cff85,0x8a73f43d,0x271c557b,0xe18bc476,0xbed617a4,0x7dfd8ab2,0x66245401,0x3a2870aa,0xae7b89ae,0x23a7e545,0x1b555f53,0xbe057e4c,0x6791e247 + DD 0x324fa34d,0x860136ad,0x4cbeae28,0xea111447,0xbedd3299,0x023a4270,0xc1c35c34,0x3d5c3a7f,0x8d0412d2,0xb0f6db67,0xfcdc6b9a,0xd92625e2,0x4e28a982,0x92ae5ccc,0x47a3ce7e,0xea251c36 + DD 0x790691bf,0x9d658932,0x06b736ae,0xed610589,0xc0d63b6e,0x712c2f04,0xc63d488f,0x5cf06fd5,0xd9588e41,0x97363fac,0x2b93257e,0x1f9bf762,0x667acace,0xa9d1ffc4,0x0a061ecf,0x1cf4a1aa + DD 0xdc1818d0,0x40e48a49,0xa3621ab0,0x0643ff39,0xe39ef639,0x5768640c,0x04d86854,0x1fc099ea,0xeccd28fd,0x9130b9c3,0x7eec54ab,0xd743cbd2,0xe5b475b6,0x052b146f,0x900a7d1f,0x058d9a82 + DD 0x91262b72,0x65e02292,0xbb0edf03,0x96f924f9,0xfe206842,0x5cfa59c8,0x5eafa720,0xf6037004,0x18d7dd96,0x5f30699e,0xcbab2495,0x381e8782,0xdd8be949,0x91669b46,0x26aae8ef,0xb40606f5 + DD 0xfc6751a4,0x2812b839,0xfba800ef,0x16196214,0x4c1a2875,0x4398d5ca,0x653d8349,0x720c00ee,0xd820007c,0xc2699eb0,0xa39b5825,0x880ee660,0x471f6984,0x70694694,0xe3dda99a,0xf7d16ea8 + DD 0xc0519a23,0x28d675b2,0x4f6952e3,0x9ebf94fe,0xa2294a8a,0xf28bb767,0xfe0af3f5,0x85512b4d,0x99b16a0d,0x18958ba8,0xba7548a7,0x95c2430c,0xa16be615,0xb30d1b10,0x85bfb74c,0xe3ebbb97 + DD 0x18549fdb,0xa3273cfe,0x4fcdb792,0xf6e200bf,0x83aba56c,0x54a76e18,0x89ef6aa2,0x73ec66f6,0xd1b9a305,0x8d17add7,0xb7ae1b9d,0xa959c5b9,0x6bcc094a,0x88643522,0xd7d429b9,0xcc5616c4 + DD 0xe6a33f7c,0xa6dada01,0x9d4e70ad,0xc6217a07,0x09c15b7c,0xd619a818,0x0e80c854,0xea06b329,0xa5f5e7b9,0x174811ce,0x787c65f4,0x66dfc310,0x3316ab54,0x4ea7bd69,0x1dcc0f70,0xc12c4acb + DD 0x1e407dd9,0xe4308d1a,0x91afa997,0xe8a3587c,0xab77b7a5,0xea296c12,0x673c0d52,0xb5ad49e4,0x7006085a,0x40f9b2b2,0x87bf6ec2,0xa88ff340,0x4e3066a6,0x978603b1,0xb5e486e2,0xb3f99fc2 + DD 0xb2e63645,0x07b53f5e,0x84c84232,0xbe57e547,0x7214d5cf,0xd779c216,0x029a3aca,0x617969cd,0x8a7017a0,0xd17668cd,0xbe9b7ee8,0x77b4d19a,0x9c161776,0x58fd0e93,0xd5968a72,0xa8c4f4ef + DD 0x67b3de77,0x296071cc,0x634f7905,0xae3c0b8e,0x8a7100c9,0x67e440c2,0xeb4b9b42,0xbb8c3c1b,0xc51b3583,0x6d71e8ea,0x9525e642,0x7591f5af,0x13f509f3,0xf73a2f7b,0x5619ac9b,0x618487aa + DD 0x9d61718a,0x3a72e5f7,0x7592d28c,0x00413bcc,0x963c35cf,0x7d9b11d3,0xb90a46ed,0x77623bcf,0xdcdd2a50,0xdeef273b,0x0601846e,0x4a741f9b,0x0ec6e929,0x33b89e51,0x8b7f22cd,0xcb02319f + DD 0x084bae24,0xbbe1500d,0x343d2693,0x2f0ae8d7,0x7cdef811,0xacffb5f2,0x263fb94f,0xaa0c030a,0xa0f442de,0x6eef0d61,0x27b139d3,0xf92e1817,0x0ad8bc28,0x1ae6deb7,0xc0514130,0xa89e38dc + DD 0xd2fdca23,0x81eeb865,0xcc8ef895,0x5a15ee08,0x01905614,0x768fa10a,0x880ee19b,0xeff5b8ef,0xcb1c8a0e,0xf0c0cabb,0xb8c838f9,0x2e1ee9cd,0x8a4a14c0,0x0587d8b8,0x2ff698e5,0xf6f27896 + DD 0x89ee6256,0xed38ef1c,0x6b353b45,0xf44ee1fe,0x70e903b3,0x9115c0c7,0x818f31df,0xc78ec0a1,0xb7dccbc6,0x6c003324,0x163bbc25,0xd96dd1f3,0x5cedd805,0x33aa82dd,0x7f7eb2f1,0x123aae4f + DD 0xa26262cd,0x1723fcf5,0x0060ebd5,0x1f7f4d5d,0xb2eaa3af,0xf19c5c01,0x9790accf,0x2ccb9b14,0x52324aa6,0x1f9c1cad,0x7247df54,0x63200526,0xbac96f82,0x5732fe42,0x01a1c384,0x52fe771f + DD 0xb1001684,0x546ca13d,0xa1709f75,0xb56b4eee,0xd5db8672,0x266545a9,0x1e8f3cfb,0xed971c90,0xe3a07b29,0x4e7d8691,0xe4b696b9,0x7570d9ec,0x7bc7e9ae,0xdc5fa067,0xc82c4844,0x68b44caf + DD 0xbf44da80,0x519d34b3,0x5ab32e66,0x283834f9,0x6278a000,0x6e608797,0x627312f6,0x1e62960e,0xe6901c55,0x9b87b27b,0x24fdbc1f,0x80e78538,0x2facc27d,0xbbbc0951,0xac143b5a,0x06394239 + DD 0x376c1944,0x35bb4a40,0x63da1511,0x7cb62694,0xb7148a3b,0xafd29161,0x4e2ea2ee,0xa6f9d9ed,0x880dd212,0x15dc2ca2,0xa61139a9,0x903c3813,0x6c0f8785,0x2aa7b46d,0x901c60ff,0x36ce2871 + DD 0xe10d9c12,0xc683b028,0x032f33d3,0x7573baa2,0x67a31b58,0x87a9b1f6,0xf4ffae12,0xfd3ed11a,0x0cb2748e,0x83dcaa9a,0x5d6fdf16,0x8239f018,0x72753941,0xba67b49c,0xc321cb36,0x2beec455 + DD 0x3f8b84ce,0x88015606,0x8d38c86f,0x76417083,0x598953dd,0x054f1ca7,0x4e8e7429,0xc939e110,0x5a914f2f,0x9b1ac2b3,0xe74b8f9c,0x39e35ed3,0x781b2fb0,0xd0debdb2,0x2d997ba2,0x1585638f + DD 0x9e2fce99,0x9c4b646e,0x1e80857f,0x68a21081,0x3643b52a,0x06d54e44,0x0d8eb843,0xde8d6d63,0x42146a0a,0x70321563,0x5eaa3622,0x8ba826f2,0x86138787,0x227a58bd,0x10281d37,0x43b6c03c + DD 0xb54dde39,0x6326afbb,0xdb6f2d5f,0x744e5e8a,0xcff158e1,0x48b2a99a,0xef87918f,0xa93c8fa0,0xde058c5c,0x2182f956,0x936f9e7a,0x216235d2,0xd2e31e67,0xace0c0db,0xf23ac3e7,0xc96449bf + DD 0x170693bd,0x7e9a2874,0xa45e6335,0xa28e14fd,0x56427344,0x5757f6b3,0xacf8edf9,0x822e4556,0xe6a285cd,0x2b7a6ee2,0xa9df3af0,0x5866f211,0xf845b844,0x40dde2dd,0x110e5e49,0x986c3726 + DD 0xf7172277,0x73680c2a,0x0cccb244,0x57b94f0f,0x2d438ca7,0xbdff7267,0xcf4663fd,0xbad1ce11,0xd8f71cae,0x9813ed9d,0x961fdaa6,0xf43272a6,0xbd6d1637,0xbeff0119,0x30361978,0xfebc4f91 + DD 0x2f41deff,0x02b37a95,0xe63b89b7,0x0e44a59a,0x143ff951,0x673257dc,0xd752baf4,0x19c02205,0xc4b7d692,0x46c23069,0xfd1502ac,0x2e6392c3,0x1b220846,0x6057b1a2,0x0c1b5b63,0xe51ff946 + DD 0x566c5c43,0x6e85cb51,0x3597f046,0xcff9c919,0x4994d94a,0x9354e90c,0x2147927d,0xe0a39332,0x0dc1eb2b,0x8427fac1,0x2ff319fa,0x88cfd8c2,0x01965274,0xe2d4e684,0x67aaa746,0xfa2e067d + DD 0x3e5f9f11,0xb6d92a7f,0xd6cb3b8e,0x9afe153a,0xddf800bd,0x4d1a6dd7,0xcaf17e19,0xf6c13cc0,0x325fc3ee,0x15f6c58e,0xa31dc3b2,0x71095400,0xafa3d3e7,0x168e7c07,0x94c7ae2d,0x3f8417a1 + DD 0x813b230d,0xec234772,0x17344427,0x634d0f5f,0xd77fc56a,0x11548ab1,0xce06af77,0x7fab1750,0x4f7c4f83,0xb62c10a7,0x220a67d9,0xa7d2edc4,0x921209a0,0x1c404170,0xface59f0,0x0b9815a0 + DD 0x319540c3,0x2842589b,0xa283d6f8,0x18490f59,0xdaae9fcb,0xa2731f84,0xc3683ba0,0x3db6d960,0x14611069,0xc85c63bb,0x0788bf05,0xb19436af,0x347460d2,0x905459df,0xe11a7db1,0x73f6e094 + DD 0xb6357f37,0xdc7f938e,0x2bd8aa62,0xc5d00f79,0x2ca979fc,0xc878dcb9,0xeb023a99,0x37e83ed9,0x1560bf3d,0x6b23e273,0x1d0fae61,0x1086e459,0x9a9414bd,0x78248316,0xf0ea9ea1,0x1b956bc0 + DD 0xc31b9c38,0x7b85bb91,0x48ef57b5,0x0c5aa90b,0xaf3bab6f,0xdedeb169,0x2d373685,0xe610ad73,0x02ba8e15,0xf13870df,0x8ca7f771,0x0337edb6,0xb62c036c,0xe4acf747,0xb6b94e81,0xd921d576 + DD 0x2c422f7a,0xdbc86439,0xed348898,0xfb635362,0xc45bfcd1,0x83084668,0x2b315e11,0xc357c9e3,0x5b2e5b8c,0xb173b540,0xe102b9a4,0x7e946931,0x7b0fb199,0x17c890eb,0xd61b662b,0xec225a83 + DD 0xee3c76cb,0xf306a3c8,0xd32a1f6e,0x3cf11623,0x6863e956,0xe6d5ab64,0x5c005c26,0x3b8a4cbe,0x9ce6bb27,0xdcd529a5,0x04d4b16f,0xc4afaa52,0x7923798d,0xb0624a26,0x6b307fab,0x85e56df6 + DD 0x2bf29698,0x0281893c,0xd7ce7603,0x91fc19a4,0xad9a558f,0x75a5dca3,0x4d50bf77,0x40ceb3fa,0xbc9ba369,0x1baf6060,0x597888c2,0x927e1037,0x86a34c07,0xd936bf19,0xc34ae980,0xd4cf10c1 + DD 0x859dd614,0x3a3e5334,0x18d0c8ee,0x9c475b5b,0x07cd51d5,0x63080d1f,0xb88b4326,0xc9c0d0a6,0xc234296f,0x1ac98691,0x94887fb6,0x2a0a83a4,0x0cea9cf2,0x56511427,0xa24802f5,0x5230a6e8 + DD 0x72e3d5c1,0xf7a2bf0f,0x4f21439e,0x37717446,0x9ce30334,0xfedcbf25,0x7ce202f9,0xe0030a78,0x1202e9ca,0x6f2d9ebf,0x75e6e591,0xe79dde6c,0xf1dac4f8,0xf52072af,0xbb9b404d,0x6c8d087e + DD 0xbce913af,0xad0fc73d,0x458a07cb,0x909e587b,0xd4f00c8a,0x1300da84,0xb54466ac,0x425cd048,0x90e9d8bf,0xb59cb9be,0x3e431b0e,0x991616db,0x531aecff,0xd3aa117a,0x59f4dc3b,0x91af92d3 + DD 0xe93fda29,0x9b1ec292,0xe97d91bc,0x76bb6c17,0xaface1e6,0x7509d95f,0xbe855ae3,0x3653fe47,0x0f680e75,0x73180b28,0xeeb6c26c,0x75eefd1b,0xb66d4236,0xa4cdf29f,0x6b5821d8,0x2d70a997 + DD 0x20445c36,0x7a3ee207,0x59877174,0x71d1ac82,0x949f73e9,0x0fc539f7,0x982e3081,0xd05cf3d7,0x7b1c7129,0x8758e20b,0x569e61f2,0xffadcc20,0x59544c2d,0xb05d3a2f,0x9fff5e53,0xbe16f5c1 + DD 0xaad58135,0x73cf65b8,0x037aa5be,0x622c2119,0x646fd6a0,0x79373b3f,0x0d3978cf,0x0e029db5,0x94fba037,0x8bdfc437,0x620797a6,0xaefbd687,0xbd30d38e,0x3fa5382b,0x585d7464,0x7627cfbf + DD 0x4e4ca463,0xb2330fef,0x3566cc63,0xbcef7287,0xcf780900,0xd161d2ca,0x5b54827d,0x135dc539,0x27bf1bc6,0x638f052e,0x07dfa06c,0x10a224f0,0x6d3321da,0xe973586d,0x26152c8f,0x8b0c5738 + DD 0x34606074,0x07ef4f2a,0xa0f7047a,0x80fe7fe8,0xe1a0e306,0x3d1a8152,0x88da5222,0x32cf43d8,0x5f02ffe6,0xbf89a95f,0x806ad3ea,0x3d9eb9a4,0x79c8e55e,0x012c17bb,0x99c81dac,0xfdcd1a74 + DD 0xb9556098,0x7043178b,0x801c3886,0x4090a1df,0x9b67b912,0x759800ff,0x232620c8,0x3e5c0304,0x70dceeca,0x4b9d3c4b,0x181f648e,0xbb2d3c15,0x6e33345c,0xf981d837,0x0cf2297a,0xb626289b + DD 0x8baebdcf,0x766ac659,0x75df01e5,0x1a28ae09,0x375876d8,0xb71283da,0x607b9800,0x4865a96d,0x237936b2,0x25dd1bcd,0x60417494,0x332f4f4b,0x370a2147,0xd0923d68,0xdc842203,0x497f5dfb + DD 0x32be5e0f,0x9dc74cbd,0x17a01375,0x7475bcb7,0x50d872b1,0x438477c9,0xffe1d63d,0xcec67879,0xd8578c70,0x9b006014,0x78bb6b8b,0xc9ad99a8,0x11fb3806,0x6799008e,0xcd44cab3,0xcfe81435 + DD 0x2f4fb344,0xa2ee1582,0x483fa6eb,0xb8823450,0x652c7749,0x622d323d,0xbeb0a15b,0xd8474a98,0x5d1c00d0,0xe43c154d,0x0e3e7aac,0x7fd581d9,0x2525ddf8,0x2b44c619,0xb8ae9739,0x67a033eb + DD 0x9ef2d2e4,0x113ffec1,0xd5a0ea7f,0x1bf6767e,0x03714c0a,0x57fff75e,0x0a23e9ee,0xa23c422e,0x540f83af,0xdd5f6b2d,0x55ea46a7,0xc2c2c27e,0x672a1208,0xeb6b4246,0xae634f7a,0xd13599f7 + DD 0xd7b32c6e,0xcf914b5c,0xeaf61814,0x61a5a640,0x208a1bbb,0x8dc3df8b,0xb6d79aa5,0xef627fd6,0xc4c86bc8,0x44232ffc,0x061539fe,0xe6f9231b,0x958b9533,0x1d04f25a,0x49e8c885,0x180cf934 + DD 0x9884aaf7,0x89689595,0x07b348a6,0xb1959be3,0x3c147c87,0x96250e57,0xdd0c61f8,0xae0efb3a,0xca8c325e,0xed00745e,0xecff3f70,0x3c911696,0x319ad41d,0x73acbc65,0xf0b1c7ef,0x7b01a020 + DD 0x63a1483f,0xea32b293,0x7a248f96,0x89eabe71,0x343157e5,0x9c6231d3,0xdf3c546d,0x93a375e5,0x6a2afe69,0xe76e9343,0xe166c88e,0xc4f89100,0x4f872093,0x248efd0d,0x8fe0ea61,0xae0eb3ea + DD 0x9d79046e,0xaf89790d,0x6cee0976,0x4d650f2d,0x43071eca,0xa3935d9a,0x283b0bfe,0x66fcd2c9,0x696605f1,0x0e665eb5,0xa54cd38d,0xe77e5d07,0x43d950cf,0x90ee050a,0xd32e69b5,0x86ddebda + DD 0xfddf7415,0x6ad94a3d,0x3f6e8d5a,0xf7fa1309,0xe9957f75,0xc4831d1d,0xd5817447,0x7de28501,0x9e2aeb6b,0x6f1d7078,0xf67a53c2,0xba2b9ff4,0xdf9defc3,0x36963767,0x0d38022c,0x479deed3 + DD 0x3a8631e8,0xd2edb89b,0x7a213746,0x8de855de,0xb00c5f11,0xb2056cb7,0x2c9b85e4,0xdeaefbd0,0xd150892d,0x03f39a8d,0x218b7985,0x37b84686,0xb7375f1a,0x36296dd8,0xb78e898e,0x472cd4b1 + DD 0xe9f05de9,0x15dff651,0x2ce98ba9,0xd4045069,0x9b38024c,0x8466a7ae,0xe5a6b5ef,0xb910e700,0xb3aa8f0d,0xae1c56ea,0x7eee74a6,0xbab2a507,0x4b4c4620,0x0dca11e2,0x4c47d1f4,0xfd896e2e + DD 0x308fbd93,0xeb45ae53,0x02c36fda,0x46cd5a2e,0xbaa48385,0x6a3d4e90,0x9dbe9960,0xdd55e62e,0x2a81ede7,0xa1406aa0,0xf9274ea7,0x6860dd14,0x80414f86,0xcfdcb0c2,0x22f94327,0xff410b10 + DD 0x49ad467b,0x5a33cc38,0x0a7335f1,0xefb48b6c,0xb153a360,0x14fb54a4,0xb52469cc,0x604aa9d2,0x754e48e9,0x5e9dc486,0x37471e8e,0x693cb455,0x8d3b37b6,0xfb2fd7cd,0xcf09ff07,0x63345e16 + DD 0x23a5d896,0x9910ba6b,0x7fe4364e,0x1fe19e35,0x9a33c677,0x6e1da8c3,0x29fd9fd0,0x15b4488b,0x1a1f22bf,0x1f439254,0xab8163e8,0x920a8a70,0x07e5658e,0x3fd1b249,0xb6ec839b,0xf2c4f79c + DD 0x4aa38d1b,0x1abbc3d0,0xb5d9510e,0x3b0db35c,0x3e60dec0,0x1754ac78,0xea099b33,0x53272fd7,0x07a8e107,0x5fb0494f,0x6a8191fa,0x4a89e137,0x3c4ad544,0xa113b7f6,0x6cb9897b,0x88a2e909 + DD 0xb44a3f84,0x17d55de3,0x17c6c690,0xacb2f344,0x10232390,0x32088168,0x6c733bf7,0xf2e8a61f,0x9c2d7652,0xa774aab6,0xed95c5bc,0xfb5307e3,0x4981f110,0xa05c73c2,0xa39458c9,0x1baae31c + DD 0xcbea62e7,0x1def185b,0xeaf63059,0xe8ac9eae,0x9921851c,0x098a8cfd,0x3abe2f5b,0xd959c3f1,0x20e40ae5,0xa4f19525,0x07a24aa1,0x320789e3,0x7392b2bc,0x259e6927,0x1918668b,0x58f6c667 + DD 0xc55d2d8b,0xce1db2bb,0xf4f6ca56,0x41d58bb7,0x8f877614,0x7650b680,0xf4c349ed,0x905e16ba,0xf661acac,0xed415140,0xcb2270af,0x3b8784f0,0x8a402cba,0x3bc280ac,0x0937921a,0xd53f7146 + DD 0xe5681e83,0xc03c8ee5,0xf6ac9e4a,0x62126105,0x936b1a38,0x9503a53f,0x782fecbd,0x3d45e2d4,0x76e8ae98,0x69a5c439,0xbfb4b00e,0xb53b2eeb,0x72386c89,0xf1674712,0x4268bce4,0x30ca34a2 + DD 0x78341730,0x7f1ed86c,0xb525e248,0x8ef5beb8,0xb74fbf38,0xbbc489fd,0x91a0b382,0x38a92a0e,0x22433ccf,0x7a77ba3f,0xa29f05a9,0xde8362d6,0x61189afc,0x7f6a30ea,0x59ef114f,0x693b5505 + DD 0xcd1797a1,0x50266bc0,0xf4b7af2d,0xea17b47e,0x3df9483e,0xd6c4025c,0xa37b18c9,0x8cbb9d9f,0x4d8424cf,0x91cbfd9c,0xab1c3506,0xdb7048f1,0x028206a3,0x9eaf641f,0x25bdf6ce,0xf986f3f9 + DD 0x224c08dc,0x262143b5,0x81b50c91,0x2bbb09b4,0xaca8c84f,0xc16ed709,0xb2850ca8,0xa6210d9d,0x09cb54d6,0x6d8df67a,0x500919a4,0x91eef6e0,0x0f132857,0x90f61381,0xf8d5028b,0x9acede47 + DD 0x90b771c3,0x844d1b71,0xba6426be,0x563b71e4,0xbdb802ff,0x2efa2e83,0xab5b4a41,0x3410cbab,0x30da84dd,0x555b2d26,0xee1cc29a,0xd0711ae9,0x2f547792,0xcf3e8c60,0xdc678b35,0x03d7d5de + DD 0xced806b8,0x071a2fa8,0x697f1478,0x222e6134,0xabfcdbbf,0xdc16fd5d,0x121b53b8,0x44912ebf,0x2496c27c,0xac943674,0x1ffc26b0,0x8ea3176c,0x13debf2c,0xb6e224ac,0xf372a832,0x524cc235 + DD 0x9f6f1b18,0xd706e1d8,0x44cce35b,0x2552f005,0xa88e31fc,0x8c8326c2,0xf9552047,0xb5468b2c,0x3ff90f2b,0xce683e88,0x2f0a5423,0x77947bdf,0xed56e328,0xd0a1b28b,0xc20134ac,0xaee35253 + DD 0x3567962f,0x7e98367d,0x8188bffb,0x379ed61f,0xfaf130a1,0x73bba348,0x904ed734,0x6c1f75e1,0x3b4a79fc,0x18956642,0x54ef4493,0xf20bc83d,0x9111eca1,0x836d425d,0x009a8dcf,0xe5b5c318 + DD 0x13221bc5,0x3360b25d,0x6b3eeaf7,0x707baad2,0x743a95a1,0xd7279ed8,0x969e809f,0x7450a875,0xe5d0338f,0x32b6bd53,0x2b883bbc,0x1e77f7af,0x1063ecd0,0x90da12cc,0xc315be47,0xe2697b58 + DD 0xda85d534,0x2771a5bd,0xff980eea,0x53e78c1f,0x900385e7,0xadf1cf84,0xc9387b62,0x7d3b14f6,0xcb8f2bd2,0x170e74b0,0x827fa993,0x2d50b486,0xf6f32bab,0xcdbe8c9a,0xc3b93ab8,0x55e906b0 + DD 0x8fe280d1,0x747f22fc,0xb2e114ab,0xcd8e0de5,0xe10b68b0,0x5ab7dbeb,0xa480d4b2,0x9dc63a9c,0x4be1495f,0x78d4bc3b,0x9359122d,0x25eb3db8,0x0809cbdc,0x3f8ac05b,0xd37c702f,0xbf4187bb + DD 0x1416a6a5,0x84cea069,0x43ef881c,0x8f860c79,0x38038a5d,0x41311f8a,0xfc612067,0xe78c2ec0,0x5ad73581,0x494d2e81,0x59604097,0xb4cc9e00,0xf3612cba,0xff558aec,0x9e36c39e,0x35beef7a + DD 0xdbcf41b9,0x1845c7cf,0xaea997c0,0x5703662a,0xe402f6d8,0x8b925afe,0x4dd72162,0xd0a1b1ae,0x03c41c4b,0x9f47b375,0x0391d042,0xa023829b,0x503b8b0a,0x5f5045c3,0x98c010e5,0x123c2688 + DD 0x36ba06ee,0x324ec0cc,0x3dd2cc0c,0xface3115,0xf333e91f,0xb364f3be,0x28e832b0,0xef8aff73,0x2d05841b,0x1e9bad04,0x356a21e2,0x42f0e3df,0x4add627e,0xa3270bcb,0xd322e711,0xb09a8158 + DD 0x0fee104a,0x86e326a1,0x3703f65d,0xad7788f8,0x47bc4833,0x7e765430,0x2b9b893a,0x6cee582b,0xe8f55a7b,0x9cd2a167,0xd9e4190d,0xefbee3c6,0xd40c2e9d,0x33ee7185,0xa380b548,0x844cc9c5 + DD 0x66926e04,0x323f8ecd,0x8110c1ba,0x0001e38f,0xfc6a7f07,0x8dbcac12,0x0cec0827,0xd65e1d58,0xbe76ca2d,0xd2cd4141,0xe892f33a,0x7895cf5c,0x367139d2,0x956d230d,0xd012c4c1,0xa91abd3e + DD 0x87eb36bf,0x34fa4883,0x914b8fb4,0xc5f07102,0xadb9c95f,0x90f0e579,0x28888195,0xfe6ea8cb,0xedfa9284,0x7b9b5065,0x2b8c8d65,0x6c510bd2,0xcbe8aafd,0xd7b8ebef,0x96b1da07,0xedb3af98 + DD 0x6295d426,0x28ff779d,0x3fa3ad7b,0x0c4f6ac7,0x8b8e2604,0xec44d054,0x8b0050e1,0x9b32a66d,0xf0476ce2,0x1f943366,0xa602c7b4,0x7554d953,0x524f2809,0xbe35aca6,0xfd4edbea,0xb6881229 + DD 0x508efb63,0xe8cd0c8f,0x6abcefc7,0x9eb5b5c8,0xb441ab4f,0xf5621f5f,0xb76a2b22,0x79e6c046,0xe37a1f69,0x74a4792c,0x03542b60,0xcbd252cb,0xb3c20bd3,0x785f65d5,0x4fabc60c,0x8dea6143 + DD 0xde673629,0x45e21446,0x703c2d21,0x57f7aa1e,0x98c868c7,0xa0e99b7f,0x8b641676,0x4e42f66d,0x91077896,0x602884dc,0xc2c9885b,0xa0d690cf,0x3b9a5187,0xfeb4da33,0x153c87ee,0x5f789598 + DD 0x52b16dba,0x2192dd47,0x3524c1b1,0xdeefc0e6,0xe4383693,0x465ea76e,0x361b8d98,0x79401711,0xf21a15cb,0xa5f9ace9,0xefee9aeb,0x73d26163,0xe677016c,0xcca844b3,0x57eaee06,0x6c122b07 + DD 0x15f09690,0xb782dce7,0x2dfc0fc9,0x508b9b12,0x65d89fc6,0x9015ab4b,0xd6d5bb0f,0x5e79dab7,0x6c775aa2,0x64f021f0,0x37c7eca1,0xdf09d8cc,0xef2fa506,0x9a761367,0x5b81eec6,0xed4ca476 + DD 0x10bbb8b5,0x262ede36,0x0641ada3,0x0737ce83,0xe9831ccc,0x4c94288a,0x8065e635,0x487fc1ce,0xb8bb3659,0xb13d7ab3,0x855e4120,0xdea5df3e,0x85eb0244,0xb9a18573,0xa7cfe0a3,0x1a1b8ea3 + DD 0x67b0867c,0x3b837119,0x9d364520,0x8d5e0d08,0xd930f0e3,0x52dccc1e,0xbf20bbaf,0xefbbcec7,0x0263ad10,0x99cffcab,0xfcd18f8a,0xd8199e6d,0xe9f10617,0x64e2773f,0x08704848,0x0079e8e1 + DD 0x8a342283,0x1169989f,0xa83012e6,0x8097799c,0x8a6a9001,0xece966cb,0x072ac7fc,0x93b3afef,0x2db3d5ba,0xe6893a2a,0x89bf4fdc,0x263dc462,0xe0396673,0x8852dfc9,0x3af362b6,0x7ac70895 + DD 0x5c2f342b,0xbb9cce4d,0xb52d7aae,0xbf80907a,0x2161bcd0,0x97f3d3cd,0x0962744d,0xb25b0834,0x6c3a1dda,0xc5b18ea5,0x06c92317,0xfe4ec7eb,0xad1c4afe,0xb787b890,0x0ede801a,0xdccd9a92 + DD 0xdb58da1f,0x9ac6ddda,0xb8cae6ee,0x22bbc12f,0x815c4a43,0xc6f8bced,0xf96480c7,0x8105a92c,0x7a859d51,0x0dc3dbf3,0x3041196b,0xe3ec7ce6,0x0d1067c9,0xd9f64b25,0x3d1f8dd8,0xf2321321 + DD 0x76497ee8,0x8b5c619c,0xc717370e,0x5d2b0ac6,0x4fcf68e1,0x98204cb6,0x62bc6792,0x0bdec211,0xa63b1011,0x6973ccef,0xe0de1ac5,0xf9e3fa97,0x3d0e0c8b,0x5efb693e,0xd2d4fcb4,0x037248e9 + DD 0x1ec34f9e,0x80802dc9,0x33810603,0xd8772d35,0x530cb4f3,0x3f06d66c,0xc475c129,0x7be5ed0d,0x31e82b10,0xcb9e3c19,0xc9ff6b4c,0xc63d2857,0x92a1b45e,0xb92118c6,0x7285bbca,0x0aec4414 + DD 0x1e29a3ef,0xfc189ae7,0x4c93302e,0xcbe906f0,0xceaae10e,0xd0107914,0xb68e19f8,0xb7a23f34,0xefd2119d,0xe9d875c2,0xfcadc9c8,0x03198c6e,0x4da17113,0x65591bf6,0x3d443038,0x3cf0bbf8 + DD 0x2b724759,0xae485bb7,0xb2d4c63a,0x945353e1,0xde7d6f2c,0x82159d07,0x4ec5b109,0x389caef3,0xdb65ef14,0x4a8ebb53,0xdd99de43,0x2dc2cb7e,0x83f2405f,0x816fa3ed,0xc14208a3,0x73429bb9 + DD 0xb01e6e27,0xb618d590,0xe180b2dc,0x047e2ccd,0x04aea4a9,0xd1b299b5,0x9fa403a4,0x412c9e1e,0x79407552,0x88d28a36,0xf332b8e3,0x49c50136,0xe668de19,0x3a1b6fcc,0x75122b97,0x178851bc + DD 0xfb85fa4c,0xb1e13752,0x383c8ce9,0xd61257ce,0xd2f74dae,0xd43da670,0xbf846bbb,0xa35aa23f,0x4421fc83,0x5e74235d,0xc363473b,0xf6df8ee0,0x3c4aa158,0x34d7f52a,0x9bc6d22e,0x50d05aab + DD 0xa64785f4,0x8c56e735,0x5f29cd07,0xbc56637b,0x3ee35067,0x53b2bb80,0xdc919270,0x50235a0f,0xf2c4aa65,0x191ab6d8,0x8396023b,0xc3475831,0xf0f805ba,0x80400ba5,0x5ec0f80f,0x8881065b + DD 0xcc1b5e83,0xc370e522,0x860b8bfb,0xde2d4ad1,0x67b256df,0xad364df0,0xe0138997,0x8f12502e,0x7783920a,0x503fa0dc,0xc0bc866a,0xe80014ad,0xd3064ba6,0x3f89b744,0xcba5dba5,0x03511dcd + DD 0x95a7b1a2,0x197dd46d,0x3c6341fb,0x9c4e7ad6,0x484c2ece,0x426eca29,0xde7f4f8a,0x9211e489,0xc78ef1f4,0x14997f6e,0x06574586,0x2b2c0910,0x1c3eede8,0x17286a6e,0x0f60e018,0x25f92e47 + DD 0x31890a36,0x805c5646,0x57feea5b,0x703ef600,0xaf3c3030,0x389f747c,0x54dd3739,0xe0e5daeb,0xc9c9f155,0xfe24a4c3,0xb5393962,0x7e4bf176,0xaf20bf29,0x37183de2,0xf95a8c3b,0x4a1bd7b5 + DD 0x46191d3d,0xa83b9699,0x7b87f257,0x281fc8dd,0x54107588,0xb18e2c13,0x9b2bafe8,0x6372def7,0x0d8972ca,0xdaf4bb48,0x56167a3f,0x3f2dd4b7,0x84310cf4,0x1eace32d,0xe42700aa,0xe3bcefaf + DD 0xd785e73d,0x5fe5691e,0x2ea60467,0xa5db5ab6,0xdfc6514a,0x02e23d41,0xe03c3665,0x35e8048e,0x1adaa0f8,0x3f8b118f,0x84ce1a5a,0x28ec3b45,0x2c6646b8,0xe8cacc6e,0xdbd0e40f,0x1343d185 + DD 0xcaaa358c,0xe5d7f844,0x9924182a,0x1a1db7e4,0x9c875d9a,0xd64cd42d,0x042eeec8,0xb37b515f,0x7b165fbe,0x4d4dd409,0xe206eff3,0xfc322ed9,0x59b7e17e,0x7dee4102,0x8236ca00,0x55a481c0 + DD 0xc23fc975,0x8c885312,0x05d6297b,0x15715806,0xf78edd39,0xa078868e,0x03c45e52,0x956b31e0,0xff7b33a6,0x470275d5,0x0c7e673f,0xc8d5dc3a,0x7e2f2598,0x419227b4,0x4c14a975,0x8b37b634 + DD 0x8b11888c,0xd0667ed6,0x803e25dc,0x5e0e8c3e,0xb987a24a,0x34e5d0dc,0xae920323,0x9f40ac3b,0x34e0f63a,0x5463de95,0x6b6328f9,0xa128bf92,0xda64f1b7,0x491ccd7c,0xc47bde35,0x7ef1ec27 + DD 0xa36a2737,0xa857240f,0x63621bc1,0x35dc1366,0xd4fb6897,0x7a3a6453,0xc929319d,0x80f1a439,0xf8cb0ba0,0xfc18274b,0x8078c5eb,0xb0b53766,0x1e01d0ef,0xfb0d4924,0x372ab09c,0x50d7c67d + DD 0x3aeac968,0xb4e370af,0xc4b63266,0xe4f7fee9,0xe3ac5664,0xb4acd4c2,0xceb38cbf,0xf8910bd2,0xc9c0726e,0x1c3ae50c,0xd97b40bf,0x15309569,0xfd5a5a1b,0x70884b7f,0xef8314cd,0x3890896a + DD 0xa5618c93,0x58e1515c,0x77d942d1,0xe665432b,0xb6f767a8,0xb32181bf,0x3a604110,0x753794e8,0xe8c0dbcc,0x09afeb7c,0x598673a3,0x31e02613,0x7d46db00,0x5d98e557,0x9d985b28,0xfc21fb8c + DD 0xb0843e0b,0xc9040116,0x69b04531,0x53b1b3a8,0x85d7d830,0xdd1649f0,0xcb7427e8,0xbb3bcc87,0xc93dce83,0x77261100,0xa1922a2a,0x7e79da61,0xf3149ce8,0x587a2b02,0xde92ec83,0x147e1384 + DD 0xaf077f30,0x484c83d3,0x0658b53a,0xea78f844,0x027aec53,0x912076c2,0x93c8177d,0xf34714e3,0xc2376c84,0x37ef5d15,0x3d1aa783,0x8315b659,0xef852a90,0x3a75c484,0x16086bd4,0x0ba0c58a + DD 0x529a6d48,0x29688d7a,0xc2f19203,0x9c7f250d,0x682e2df9,0x123042fb,0xad8121bc,0x2b7587e7,0xe0182a65,0x30fc0233,0xe3e1128a,0xb82ecf87,0x93fb098f,0x71682861,0x85e9e6a7,0x043e21ae + DD 0x66c834ea,0xab5b49d6,0x47414287,0x3be43e18,0x219a2a47,0xf40fb859,0xcc58df3c,0x0e6559e9,0x0c6615b4,0xfe1dfe8e,0x56459d70,0x14abc8fd,0x05de0386,0x7be0fa8e,0xe9035c7c,0x8e63ef68 + DD 0x53b31e91,0x116401b4,0x4436b4d8,0x0cba7ad4,0x107afd66,0x9151f9a0,0x1f0ee4c4,0xafaca8d0,0x9ee9761c,0x75fe5c1d,0xf0c0588f,0x3497a16b,0x0304804c,0x3ee2bebd,0xc2c990b9,0xa8fb9a60 + DD 0x39251114,0xd14d32fe,0xcac73366,0x36bf25bc,0xdba7495c,0xc9562c66,0x46ad348b,0x324d301b,0xd670407e,0x9f46620c,0xe3733a01,0x0ea8d4f1,0xb0c324e0,0xd396d532,0x03c317cd,0x5b211a0e + DD 0x5ffe7b37,0x090d7d20,0x1747d2da,0x3b7f3efb,0xb54fc519,0xa2cb525f,0xf66a971e,0x6e220932,0xb486d440,0xddc160df,0x3fe13465,0x7fcfec46,0x76e4c151,0x83da7e4e,0xd8d302b5,0xd6fa48a1 + DD 0x5872cd88,0xc6304f26,0x278b90a1,0x806c1d3c,0xcaf0bc1c,0x3553e725,0xbb9d8d5c,0xff59e603,0x7a0b85dd,0xa4550f32,0x93ecc217,0xdec5720a,0x69d62213,0x0b88b741,0x5b365955,0x7212f245 + DD 0xb5cae787,0x20764111,0x1dfd3124,0x13cb7f58,0x1175aefb,0x2dca77da,0xffaae775,0xeb75466b,0xdb6cff32,0x74d76f3b,0x61fcda9a,0x7440f37a,0xb525028b,0x1bb3ac92,0xa1975f29,0x20fbf8f7 + DD 0xdf83097f,0x982692e1,0x554b0800,0x28738f6c,0xa2ce2f2f,0xdc703717,0x40814194,0x7913b93c,0x1fe89636,0x04924593,0xf78834a6,0x7b98443f,0x5114a5a1,0x11c6ab01,0xffba5f4c,0x60deb383 + DD 0x01a982e6,0x4caa54c6,0x3491cd26,0x1dd35e11,0x7cbd6b05,0x973c315f,0x52494724,0xcab00775,0x6565e15a,0x04659b1f,0x8c8fb026,0xbf30f529,0xa8a0de37,0xfc21641b,0xfa5e5114,0xe9c7a366 + DD 0x52f03ad8,0xdb849ca5,0x024e35c0,0xc7e8dbe9,0xcfc3c789,0xa1a2bbac,0x9c26f262,0xbf733e7d,0xb8444823,0x882ffbf5,0x6bf8483b,0xb7224e88,0x65bef640,0x53023b8b,0xd4d5f8cd,0xaabfec91 + DD 0x079ea1bd,0xa40e1510,0xd05d5d26,0x1ad9addc,0x13e68d4f,0xdb3f2eab,0x640f803f,0x1cff1ae2,0xd4cee117,0xe0e7b749,0x4036d909,0x8e9f275b,0x8f4d4c38,0xce34e31d,0xd75130fc,0x22b37f69 + DD 0xb4014604,0x83e0f1fd,0x89415078,0xa8ce9919,0x41792efe,0x82375b75,0x97d4515b,0x4f59bf5c,0x923a277d,0xac4f324f,0x650f3406,0xd9bc9b7d,0x8a39bc51,0xc6fa87d1,0x5ccc108f,0x82588530 + DD 0x82e4c634,0x5ced3c9f,0x3a4464f8,0x8efb8314,0x7a1dca25,0xe706381b,0x5a2a412b,0x6cd15a3c,0xbfcd8fb5,0x9347a8fd,0x6e54cd22,0x31db2eef,0xf8d8932f,0xc4aeb11e,0x344411af,0x11e7c1ed + DD 0xdc9a151e,0x2653050c,0x3bb0a859,0x9edbfc08,0xfd5691e7,0x926c81c7,0x6f39019a,0x9c1b2342,0x7f8474b9,0x64a81c8b,0x01761819,0x90657c07,0x55e0375a,0x390b3331,0xb6ebc47d,0xc676c626 + DD 0xb7d6dee8,0x51623247,0x79659313,0x0948d927,0xe9ab35ed,0x99700161,0x8ddde408,0x06cc32b4,0x061ef338,0x6f2fd664,0xc202e9ed,0x1606fa02,0x929ba99b,0x55388bc1,0x1e81df69,0xc4428c5e + DD 0xf91b0b2a,0xce2028ae,0xf03dfd3f,0xce870a23,0x0affe8ed,0x66ec2c87,0x284d0c00,0xb205fb46,0x44cefa48,0xbf5dffe7,0xa19876d7,0xb6fc37a8,0x08b72863,0xbecfa84c,0x2576374f,0xd7205ff5 + DD 0x8887de41,0x80330d32,0x869ea534,0x5de0df0c,0x3c56ea17,0x13f42753,0x452b1a78,0xeb1f6069,0xe30ea15c,0x50474396,0xc1494125,0x575816a1,0xfe6bb38f,0xbe1ce55b,0x96ae30f7,0xb901a948 + DD 0xd8fc3548,0xe5af0f08,0xd73bfd08,0x5010b5d0,0x53fe655a,0x993d2880,0x1c1309fd,0x99f2630b,0xb4e3b76f,0xd8677baf,0xb840784b,0x14e51ddc,0xbf0092ce,0x326c750c,0xf528320f,0xc83d306b + DD 0x77d4715c,0xc4456715,0x6b703235,0xd30019f9,0xd669e986,0x207ccb2e,0xf6dbfc28,0x57c824af,0xd8f92a23,0xf0eb532f,0x9bb98fd2,0x4a557fd4,0xc1e6199a,0xa57acea7,0x8b94b1ed,0x0c663820 + DD 0xf83a9266,0x9b42be8f,0x0101bd45,0xc7741c97,0x07bd9ceb,0x95770c11,0x8b2e0744,0x1f50250a,0x1477b654,0xf762eec8,0x15efe59a,0xc65b900e,0x9546a897,0x88c96148,0xc30b4d7c,0x7e8025b3 + DD 0x12045cf9,0xae4065ef,0x9ccce8bd,0x6fcb2caf,0xf2cf6525,0x1fa0ba4e,0xcb72c312,0xf683125d,0xe312410e,0xa01da4ea,0x6cd8e830,0x67e28677,0x98fb3f07,0xabd95752,0xeef649a5,0x05f11e11 + DD 0x9d3472c2,0xba47faef,0xc77d1345,0x3adff697,0xdd15afee,0x4761fa04,0xb9e69462,0x64f1f61a,0x9bfb9093,0xfa691fab,0xa1133dfe,0x3df8ae8f,0x58cc710d,0xcd5f8967,0x16c7fe79,0xfbb88d50 + DD 0xe88c50d1,0x8e011b4c,0xa8771c4f,0x7532e807,0xe2278ee4,0x64c78a48,0x3845072a,0x0b283e83,0x49e69274,0x98a6f291,0x1868b21c,0xb96e9668,0xb1a8908e,0x38f0adc2,0x1feb829d,0x90afcff7 + DD 0x210b0856,0x9915a383,0xdef04889,0xa5a80602,0x7c64d509,0x800e9af9,0xb8996f6f,0x81382d0b,0x81927e27,0x490eba53,0x4af50182,0x46c63b32,0xd3ad62ce,0x784c5fd9,0xf8ae8736,0xe4fa1870 + DD 0xd7466b25,0x4ec9d0bc,0xdb235c65,0x84ddbe1a,0x163c1688,0x5e2645ee,0x00eba747,0x570bd00e,0x128bfa0f,0xfa51b629,0x6c1d3b68,0x92fce1bd,0xb66778b1,0x3e7361dc,0x5561d2bb,0x9c7d249d + DD 0x0bbc6229,0xa40b28bf,0xdfd91497,0x1c83c05e,0xf083df05,0x5f9f5154,0xeee66c9d,0xbac38b3c,0xec0dfcfd,0xf71db7e3,0x8b0a8416,0xf2ecda8e,0x7812aa66,0x52fddd86,0x4e6f4272,0x2896ef10 + DD 0x0fe9a745,0xff27186a,0x49ca70db,0x08249fcd,0x441cac49,0x7425a2e6,0xece5ff57,0xf4a0885a,0x7d7ead58,0x6e2cb731,0x1898d104,0xf96cf7d6,0x4f2c9a89,0xafe67c9d,0x1c7bf5bc,0x89895a50 + DD 0x573cecfa,0xdc7cb8e5,0xd15f03e6,0x66497eae,0x3f084420,0x6bc0de69,0xacd532b0,0x323b9b36,0x0115a3c1,0xcfed390a,0x2d65ca0e,0x9414c40b,0x2f530c78,0x641406bd,0x833438f2,0x29369a44 + DD 0x903fa271,0x996884f5,0xb9da921e,0xe6da0fd2,0x5db01e54,0xa6f2f269,0x6876214e,0x1ee3e9bd,0xe27a9497,0xa26e181c,0x8e215e04,0x36d254e4,0x252cabca,0x42f32a6c,0x80b57614,0x99481487 + DD 0x40d9cae1,0x4c4dfe69,0x11a10f09,0x05869580,0x3491b64b,0xca287b57,0x3fd4a53b,0x77862d5d,0x50349126,0xbf94856e,0x71c5268f,0x2be30bd1,0xcbb650a6,0x10393f19,0x778cf9fd,0x639531fe + DD 0xb2935359,0x02556a11,0xaf8c126e,0xda38aa96,0x0960167f,0x47dbe6c2,0x501901cd,0x37bbabb6,0x2c947778,0xb6e979e0,0x7a1a1dc6,0xd69a5175,0x9d9faf0c,0xc3ed5095,0x1d5fa5f0,0x4dd9c096 + DD 0x64f16ea8,0xa0c4304d,0x7e718623,0x8b1cac16,0x7c67f03e,0x0b576546,0xcbd88c01,0x559cf5ad,0x0e2af19a,0x074877bb,0xa1228c92,0x1f717ec1,0x326e8920,0x70bcb800,0x4f312804,0xec6e2c5c + DD 0x3fca4752,0x426aea7d,0x2211f62a,0xf12c0949,0x7be7b6b5,0x24beecd8,0x36d7a27d,0xb77eaf4c,0xfda78fd3,0x154c2781,0x264eeabe,0x848a83b0,0x4ffe2bc4,0x81287ef0,0xb6b6fc2a,0x7b6d88c6 + DD 0xce417d99,0x805fb947,0x8b916cc4,0x4b93dcc3,0x21273323,0x72e65bb3,0x6ea9886e,0xbcc1badd,0x4bc5ee85,0x0e223011,0xc18ee1e4,0xa561be74,0xa6bcf1f1,0x762fd2d4,0x95231489,0x50e6a5a4 + DD 0xa00b500b,0xca96001f,0x5d7dcdf5,0x5c098cfc,0x8c446a85,0xa64e2d2e,0x971f3c62,0xbae9bcf1,0x8435a2c5,0x4ec22683,0x4bad4643,0x8ceaed6c,0xccccf4e3,0xe9f8fb47,0x1ce3b21e,0xbd4f3fa4 + DD 0xa3db3292,0xd79fb110,0xb536c66a,0xe28a37da,0x8e49e6a9,0x279ce87b,0xfdcec8e3,0x70ccfe8d,0x3ba464b2,0x2193e4e0,0xaca9a398,0x0f39d60e,0xf82c12ab,0x7d7932af,0x91e7e0f7,0xd8ff50ed + DD 0xfa28a7e0,0xea961058,0x0bf5ec74,0xc726cf25,0xdb229666,0xe74d55c8,0xa57f5799,0x0bd9abbf,0x4dfc47b3,0x7479ef07,0x0c52f91d,0xd9c65fc3,0x36a8bde2,0x8e0283fe,0x7d4b7280,0xa32a8b5e + DD 0x12e83233,0x6a677c61,0xdcc9bf28,0x0fbb3512,0x0d780f61,0x562e8ea5,0x1dc4e89c,0x0db8b22b,0x89be0144,0x0a6fd1fb,0xca57113b,0x8c77d246,0xff09c91c,0x4639075d,0x5060824c,0x5b47b17f + DD 0x16287b52,0x58aea2b0,0xd0cd8eb0,0xa1343520,0xc5d58573,0x6148b4d0,0x291c68ae,0xdd2b6170,0x1da3b3b7,0xa61b3929,0x08c4ac10,0x5f946d79,0x7217d583,0x4105d4a5,0x25e6de5e,0x5061da3d + DD 0xec1b4991,0x3113940d,0x36f485ae,0xf12195e1,0x731a2ee0,0xa7507fb2,0x6e9e196e,0x95057a8e,0x2e130136,0xa3c2c911,0x33c60d15,0x97dfbb36,0xb300ee2b,0xcaf3c581,0xf4bac8b8,0x77f25d90 + DD 0x6d840cd6,0xdb1c4f98,0xe634288c,0x471d62c0,0xcec8a161,0x8ec2f85e,0xfa6f4ae2,0x41f37cbc,0x4b709985,0x6793a20f,0xefa8985b,0x7a7bd33b,0x938e6446,0x2c6a3fbd,0x2a8d47c1,0x19042619 + DD 0xcc36975f,0x16848667,0x9d5f1dfb,0x02acf168,0x613baa94,0x62d41ad4,0x9f684670,0xb56fbb92,0xe9e40569,0xce610d0d,0x35489fef,0x7b99c65f,0x3df18b97,0x0c88ad1b,0x5d0e9edb,0x81b7d9be + DD 0xc716cc0a,0xd85218c0,0x85691c49,0xf4b5ff90,0xce356ac6,0xa4fd666b,0x4b327a7a,0x17c72895,0xda6be7de,0xf93d5085,0x3301d34e,0xff71530e,0xd8f448e8,0x4cd96442,0x2ed18ffa,0x9283d331 + DD 0x2a849870,0x4d33dd99,0x41576335,0xa716964b,0x179be0e5,0xff5e3a9b,0x83b13632,0x5b9d6b1b,0xa52f313b,0x3b8bd7d4,0x637a4660,0xc9dd95a0,0x0b3e218f,0x30035962,0xc7b28a3c,0xce1481a3 + DD 0x43228d83,0xab41b43a,0x4ad63f99,0x24ae1c30,0x46a51229,0x8e525f1a,0xcd26d2b4,0x14af860f,0x3f714aa1,0xd6baef61,0xeb78795e,0xf51865ad,0xe6a9d694,0xd3e21fce,0x8a37b527,0x82ceb1dd + +section .text code align=64 + +EXTERN OPENSSL_ia32cap_P + + +ALIGN 64 +$L$poly: + DQ 0xffffffffffffffff,0x00000000ffffffff,0x0000000000000000,0xffffffff00000001 + + +$L$RR: + DQ 0x0000000000000003,0xfffffffbffffffff,0xfffffffffffffffe,0x00000004fffffffd + +$L$One: + DD 1,1,1,1,1,1,1,1 +$L$Two: + DD 2,2,2,2,2,2,2,2 +$L$Three: + DD 3,3,3,3,3,3,3,3 +$L$ONE_mont: + DQ 0x0000000000000001,0xffffffff00000000,0xffffffffffffffff,0x00000000fffffffe + + +$L$ord: + DQ 0xf3b9cac2fc632551,0xbce6faada7179e84,0xffffffffffffffff,0xffffffff00000000 +$L$ordK: + DQ 0xccd1c8aaee00bc4f + +global ecp_nistz256_mul_by_2 + +ALIGN 64 +ecp_nistz256_mul_by_2: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_mul_by_2: + mov rdi,rcx + mov rsi,rdx + + + + push r12 + + push r13 + +$L$mul_by_2_body: + + mov r8,QWORD[rsi] + xor r13,r13 + mov r9,QWORD[8+rsi] + add r8,r8 + mov r10,QWORD[16+rsi] + adc r9,r9 + mov r11,QWORD[24+rsi] + lea rsi,[$L$poly] + mov rax,r8 + adc r10,r10 + adc r11,r11 + mov rdx,r9 + adc r13,0 + + sub r8,QWORD[rsi] + mov rcx,r10 + sbb r9,QWORD[8+rsi] + sbb r10,QWORD[16+rsi] + mov r12,r11 + sbb r11,QWORD[24+rsi] + sbb r13,0 + + cmovc r8,rax + cmovc r9,rdx + mov QWORD[rdi],r8 + cmovc r10,rcx + mov QWORD[8+rdi],r9 + cmovc r11,r12 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + + mov r13,QWORD[rsp] + + mov r12,QWORD[8+rsp] + + lea rsp,[16+rsp] + +$L$mul_by_2_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_mul_by_2: + + + +global ecp_nistz256_div_by_2 + +ALIGN 32 +ecp_nistz256_div_by_2: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_div_by_2: + mov rdi,rcx + mov rsi,rdx + + + + push r12 + + push r13 + +$L$div_by_2_body: + + mov r8,QWORD[rsi] + mov r9,QWORD[8+rsi] + mov r10,QWORD[16+rsi] + mov rax,r8 + mov r11,QWORD[24+rsi] + lea rsi,[$L$poly] + + mov rdx,r9 + xor r13,r13 + add r8,QWORD[rsi] + mov rcx,r10 + adc r9,QWORD[8+rsi] + adc r10,QWORD[16+rsi] + mov r12,r11 + adc r11,QWORD[24+rsi] + adc r13,0 + xor rsi,rsi + test rax,1 + + cmovz r8,rax + cmovz r9,rdx + cmovz r10,rcx + cmovz r11,r12 + cmovz r13,rsi + + mov rax,r9 + shr r8,1 + shl rax,63 + mov rdx,r10 + shr r9,1 + or r8,rax + shl rdx,63 + mov rcx,r11 + shr r10,1 + or r9,rdx + shl rcx,63 + shr r11,1 + shl r13,63 + or r10,rcx + or r11,r13 + + mov QWORD[rdi],r8 + mov QWORD[8+rdi],r9 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + + mov r13,QWORD[rsp] + + mov r12,QWORD[8+rsp] + + lea rsp,[16+rsp] + +$L$div_by_2_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_div_by_2: + + + +global ecp_nistz256_mul_by_3 + +ALIGN 32 +ecp_nistz256_mul_by_3: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_mul_by_3: + mov rdi,rcx + mov rsi,rdx + + + + push r12 + + push r13 + +$L$mul_by_3_body: + + mov r8,QWORD[rsi] + xor r13,r13 + mov r9,QWORD[8+rsi] + add r8,r8 + mov r10,QWORD[16+rsi] + adc r9,r9 + mov r11,QWORD[24+rsi] + mov rax,r8 + adc r10,r10 + adc r11,r11 + mov rdx,r9 + adc r13,0 + + sub r8,-1 + mov rcx,r10 + sbb r9,QWORD[(($L$poly+8))] + sbb r10,0 + mov r12,r11 + sbb r11,QWORD[(($L$poly+24))] + sbb r13,0 + + cmovc r8,rax + cmovc r9,rdx + cmovc r10,rcx + cmovc r11,r12 + + xor r13,r13 + add r8,QWORD[rsi] + adc r9,QWORD[8+rsi] + mov rax,r8 + adc r10,QWORD[16+rsi] + adc r11,QWORD[24+rsi] + mov rdx,r9 + adc r13,0 + + sub r8,-1 + mov rcx,r10 + sbb r9,QWORD[(($L$poly+8))] + sbb r10,0 + mov r12,r11 + sbb r11,QWORD[(($L$poly+24))] + sbb r13,0 + + cmovc r8,rax + cmovc r9,rdx + mov QWORD[rdi],r8 + cmovc r10,rcx + mov QWORD[8+rdi],r9 + cmovc r11,r12 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + + mov r13,QWORD[rsp] + + mov r12,QWORD[8+rsp] + + lea rsp,[16+rsp] + +$L$mul_by_3_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_mul_by_3: + + + +global ecp_nistz256_add + +ALIGN 32 +ecp_nistz256_add: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_add: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + push r12 + + push r13 + +$L$add_body: + + mov r8,QWORD[rsi] + xor r13,r13 + mov r9,QWORD[8+rsi] + mov r10,QWORD[16+rsi] + mov r11,QWORD[24+rsi] + lea rsi,[$L$poly] + + add r8,QWORD[rdx] + adc r9,QWORD[8+rdx] + mov rax,r8 + adc r10,QWORD[16+rdx] + adc r11,QWORD[24+rdx] + mov rdx,r9 + adc r13,0 + + sub r8,QWORD[rsi] + mov rcx,r10 + sbb r9,QWORD[8+rsi] + sbb r10,QWORD[16+rsi] + mov r12,r11 + sbb r11,QWORD[24+rsi] + sbb r13,0 + + cmovc r8,rax + cmovc r9,rdx + mov QWORD[rdi],r8 + cmovc r10,rcx + mov QWORD[8+rdi],r9 + cmovc r11,r12 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + + mov r13,QWORD[rsp] + + mov r12,QWORD[8+rsp] + + lea rsp,[16+rsp] + +$L$add_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_add: + + + +global ecp_nistz256_sub + +ALIGN 32 +ecp_nistz256_sub: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_sub: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + push r12 + + push r13 + +$L$sub_body: + + mov r8,QWORD[rsi] + xor r13,r13 + mov r9,QWORD[8+rsi] + mov r10,QWORD[16+rsi] + mov r11,QWORD[24+rsi] + lea rsi,[$L$poly] + + sub r8,QWORD[rdx] + sbb r9,QWORD[8+rdx] + mov rax,r8 + sbb r10,QWORD[16+rdx] + sbb r11,QWORD[24+rdx] + mov rdx,r9 + sbb r13,0 + + add r8,QWORD[rsi] + mov rcx,r10 + adc r9,QWORD[8+rsi] + adc r10,QWORD[16+rsi] + mov r12,r11 + adc r11,QWORD[24+rsi] + test r13,r13 + + cmovz r8,rax + cmovz r9,rdx + mov QWORD[rdi],r8 + cmovz r10,rcx + mov QWORD[8+rdi],r9 + cmovz r11,r12 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + + mov r13,QWORD[rsp] + + mov r12,QWORD[8+rsp] + + lea rsp,[16+rsp] + +$L$sub_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_sub: + + + +global ecp_nistz256_neg + +ALIGN 32 +ecp_nistz256_neg: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_neg: + mov rdi,rcx + mov rsi,rdx + + + + push r12 + + push r13 + +$L$neg_body: + + xor r8,r8 + xor r9,r9 + xor r10,r10 + xor r11,r11 + xor r13,r13 + + sub r8,QWORD[rsi] + sbb r9,QWORD[8+rsi] + sbb r10,QWORD[16+rsi] + mov rax,r8 + sbb r11,QWORD[24+rsi] + lea rsi,[$L$poly] + mov rdx,r9 + sbb r13,0 + + add r8,QWORD[rsi] + mov rcx,r10 + adc r9,QWORD[8+rsi] + adc r10,QWORD[16+rsi] + mov r12,r11 + adc r11,QWORD[24+rsi] + test r13,r13 + + cmovz r8,rax + cmovz r9,rdx + mov QWORD[rdi],r8 + cmovz r10,rcx + mov QWORD[8+rdi],r9 + cmovz r11,r12 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + + mov r13,QWORD[rsp] + + mov r12,QWORD[8+rsp] + + lea rsp,[16+rsp] + +$L$neg_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_neg: + + + + + + +global ecp_nistz256_ord_mul_mont + +ALIGN 32 +ecp_nistz256_ord_mul_mont: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_ord_mul_mont: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + mov ecx,0x80100 + and ecx,DWORD[((OPENSSL_ia32cap_P+8))] + cmp ecx,0x80100 + je NEAR $L$ecp_nistz256_ord_mul_montx + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + +$L$ord_mul_body: + + mov rax,QWORD[rdx] + mov rbx,rdx + lea r14,[$L$ord] + mov r15,QWORD[$L$ordK] + + + mov rcx,rax + mul QWORD[rsi] + mov r8,rax + mov rax,rcx + mov r9,rdx + + mul QWORD[8+rsi] + add r9,rax + mov rax,rcx + adc rdx,0 + mov r10,rdx + + mul QWORD[16+rsi] + add r10,rax + mov rax,rcx + adc rdx,0 + + mov r13,r8 + imul r8,r15 + + mov r11,rdx + mul QWORD[24+rsi] + add r11,rax + mov rax,r8 + adc rdx,0 + mov r12,rdx + + + mul QWORD[r14] + mov rbp,r8 + add r13,rax + mov rax,r8 + adc rdx,0 + mov rcx,rdx + + sub r10,r8 + sbb r8,0 + + mul QWORD[8+r14] + add r9,rcx + adc rdx,0 + add r9,rax + mov rax,rbp + adc r10,rdx + mov rdx,rbp + adc r8,0 + + shl rax,32 + shr rdx,32 + sub r11,rax + mov rax,QWORD[8+rbx] + sbb rbp,rdx + + add r11,r8 + adc r12,rbp + adc r13,0 + + + mov rcx,rax + mul QWORD[rsi] + add r9,rax + mov rax,rcx + adc rdx,0 + mov rbp,rdx + + mul QWORD[8+rsi] + add r10,rbp + adc rdx,0 + add r10,rax + mov rax,rcx + adc rdx,0 + mov rbp,rdx + + mul QWORD[16+rsi] + add r11,rbp + adc rdx,0 + add r11,rax + mov rax,rcx + adc rdx,0 + + mov rcx,r9 + imul r9,r15 + + mov rbp,rdx + mul QWORD[24+rsi] + add r12,rbp + adc rdx,0 + xor r8,r8 + add r12,rax + mov rax,r9 + adc r13,rdx + adc r8,0 + + + mul QWORD[r14] + mov rbp,r9 + add rcx,rax + mov rax,r9 + adc rcx,rdx + + sub r11,r9 + sbb r9,0 + + mul QWORD[8+r14] + add r10,rcx + adc rdx,0 + add r10,rax + mov rax,rbp + adc r11,rdx + mov rdx,rbp + adc r9,0 + + shl rax,32 + shr rdx,32 + sub r12,rax + mov rax,QWORD[16+rbx] + sbb rbp,rdx + + add r12,r9 + adc r13,rbp + adc r8,0 + + + mov rcx,rax + mul QWORD[rsi] + add r10,rax + mov rax,rcx + adc rdx,0 + mov rbp,rdx + + mul QWORD[8+rsi] + add r11,rbp + adc rdx,0 + add r11,rax + mov rax,rcx + adc rdx,0 + mov rbp,rdx + + mul QWORD[16+rsi] + add r12,rbp + adc rdx,0 + add r12,rax + mov rax,rcx + adc rdx,0 + + mov rcx,r10 + imul r10,r15 + + mov rbp,rdx + mul QWORD[24+rsi] + add r13,rbp + adc rdx,0 + xor r9,r9 + add r13,rax + mov rax,r10 + adc r8,rdx + adc r9,0 + + + mul QWORD[r14] + mov rbp,r10 + add rcx,rax + mov rax,r10 + adc rcx,rdx + + sub r12,r10 + sbb r10,0 + + mul QWORD[8+r14] + add r11,rcx + adc rdx,0 + add r11,rax + mov rax,rbp + adc r12,rdx + mov rdx,rbp + adc r10,0 + + shl rax,32 + shr rdx,32 + sub r13,rax + mov rax,QWORD[24+rbx] + sbb rbp,rdx + + add r13,r10 + adc r8,rbp + adc r9,0 + + + mov rcx,rax + mul QWORD[rsi] + add r11,rax + mov rax,rcx + adc rdx,0 + mov rbp,rdx + + mul QWORD[8+rsi] + add r12,rbp + adc rdx,0 + add r12,rax + mov rax,rcx + adc rdx,0 + mov rbp,rdx + + mul QWORD[16+rsi] + add r13,rbp + adc rdx,0 + add r13,rax + mov rax,rcx + adc rdx,0 + + mov rcx,r11 + imul r11,r15 + + mov rbp,rdx + mul QWORD[24+rsi] + add r8,rbp + adc rdx,0 + xor r10,r10 + add r8,rax + mov rax,r11 + adc r9,rdx + adc r10,0 + + + mul QWORD[r14] + mov rbp,r11 + add rcx,rax + mov rax,r11 + adc rcx,rdx + + sub r13,r11 + sbb r11,0 + + mul QWORD[8+r14] + add r12,rcx + adc rdx,0 + add r12,rax + mov rax,rbp + adc r13,rdx + mov rdx,rbp + adc r11,0 + + shl rax,32 + shr rdx,32 + sub r8,rax + sbb rbp,rdx + + add r8,r11 + adc r9,rbp + adc r10,0 + + + mov rsi,r12 + sub r12,QWORD[r14] + mov r11,r13 + sbb r13,QWORD[8+r14] + mov rcx,r8 + sbb r8,QWORD[16+r14] + mov rbp,r9 + sbb r9,QWORD[24+r14] + sbb r10,0 + + cmovc r12,rsi + cmovc r13,r11 + cmovc r8,rcx + cmovc r9,rbp + + mov QWORD[rdi],r12 + mov QWORD[8+rdi],r13 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbx,QWORD[32+rsp] + + mov rbp,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$ord_mul_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_ord_mul_mont: + + + + + + + +global ecp_nistz256_ord_sqr_mont + +ALIGN 32 +ecp_nistz256_ord_sqr_mont: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_ord_sqr_mont: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + mov ecx,0x80100 + and ecx,DWORD[((OPENSSL_ia32cap_P+8))] + cmp ecx,0x80100 + je NEAR $L$ecp_nistz256_ord_sqr_montx + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + +$L$ord_sqr_body: + + mov r8,QWORD[rsi] + mov rax,QWORD[8+rsi] + mov r14,QWORD[16+rsi] + mov r15,QWORD[24+rsi] + lea rsi,[$L$ord] + mov rbx,rdx + jmp NEAR $L$oop_ord_sqr + +ALIGN 32 +$L$oop_ord_sqr: + + mov rbp,rax + mul r8 + mov r9,rax +DB 102,72,15,110,205 + mov rax,r14 + mov r10,rdx + + mul r8 + add r10,rax + mov rax,r15 +DB 102,73,15,110,214 + adc rdx,0 + mov r11,rdx + + mul r8 + add r11,rax + mov rax,r15 +DB 102,73,15,110,223 + adc rdx,0 + mov r12,rdx + + + mul r14 + mov r13,rax + mov rax,r14 + mov r14,rdx + + + mul rbp + add r11,rax + mov rax,r15 + adc rdx,0 + mov r15,rdx + + mul rbp + add r12,rax + adc rdx,0 + + add r12,r15 + adc r13,rdx + adc r14,0 + + + xor r15,r15 + mov rax,r8 + add r9,r9 + adc r10,r10 + adc r11,r11 + adc r12,r12 + adc r13,r13 + adc r14,r14 + adc r15,0 + + + mul rax + mov r8,rax +DB 102,72,15,126,200 + mov rbp,rdx + + mul rax + add r9,rbp + adc r10,rax +DB 102,72,15,126,208 + adc rdx,0 + mov rbp,rdx + + mul rax + add r11,rbp + adc r12,rax +DB 102,72,15,126,216 + adc rdx,0 + mov rbp,rdx + + mov rcx,r8 + imul r8,QWORD[32+rsi] + + mul rax + add r13,rbp + adc r14,rax + mov rax,QWORD[rsi] + adc r15,rdx + + + mul r8 + mov rbp,r8 + add rcx,rax + mov rax,QWORD[8+rsi] + adc rcx,rdx + + sub r10,r8 + sbb rbp,0 + + mul r8 + add r9,rcx + adc rdx,0 + add r9,rax + mov rax,r8 + adc r10,rdx + mov rdx,r8 + adc rbp,0 + + mov rcx,r9 + imul r9,QWORD[32+rsi] + + shl rax,32 + shr rdx,32 + sub r11,rax + mov rax,QWORD[rsi] + sbb r8,rdx + + add r11,rbp + adc r8,0 + + + mul r9 + mov rbp,r9 + add rcx,rax + mov rax,QWORD[8+rsi] + adc rcx,rdx + + sub r11,r9 + sbb rbp,0 + + mul r9 + add r10,rcx + adc rdx,0 + add r10,rax + mov rax,r9 + adc r11,rdx + mov rdx,r9 + adc rbp,0 + + mov rcx,r10 + imul r10,QWORD[32+rsi] + + shl rax,32 + shr rdx,32 + sub r8,rax + mov rax,QWORD[rsi] + sbb r9,rdx + + add r8,rbp + adc r9,0 + + + mul r10 + mov rbp,r10 + add rcx,rax + mov rax,QWORD[8+rsi] + adc rcx,rdx + + sub r8,r10 + sbb rbp,0 + + mul r10 + add r11,rcx + adc rdx,0 + add r11,rax + mov rax,r10 + adc r8,rdx + mov rdx,r10 + adc rbp,0 + + mov rcx,r11 + imul r11,QWORD[32+rsi] + + shl rax,32 + shr rdx,32 + sub r9,rax + mov rax,QWORD[rsi] + sbb r10,rdx + + add r9,rbp + adc r10,0 + + + mul r11 + mov rbp,r11 + add rcx,rax + mov rax,QWORD[8+rsi] + adc rcx,rdx + + sub r9,r11 + sbb rbp,0 + + mul r11 + add r8,rcx + adc rdx,0 + add r8,rax + mov rax,r11 + adc r9,rdx + mov rdx,r11 + adc rbp,0 + + shl rax,32 + shr rdx,32 + sub r10,rax + sbb r11,rdx + + add r10,rbp + adc r11,0 + + + xor rdx,rdx + add r8,r12 + adc r9,r13 + mov r12,r8 + adc r10,r14 + adc r11,r15 + mov rax,r9 + adc rdx,0 + + + sub r8,QWORD[rsi] + mov r14,r10 + sbb r9,QWORD[8+rsi] + sbb r10,QWORD[16+rsi] + mov r15,r11 + sbb r11,QWORD[24+rsi] + sbb rdx,0 + + cmovc r8,r12 + cmovnc rax,r9 + cmovnc r14,r10 + cmovnc r15,r11 + + dec rbx + jnz NEAR $L$oop_ord_sqr + + mov QWORD[rdi],r8 + mov QWORD[8+rdi],rax + pxor xmm1,xmm1 + mov QWORD[16+rdi],r14 + pxor xmm2,xmm2 + mov QWORD[24+rdi],r15 + pxor xmm3,xmm3 + + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbx,QWORD[32+rsp] + + mov rbp,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$ord_sqr_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_ord_sqr_mont: + + +ALIGN 32 +ecp_nistz256_ord_mul_montx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_ord_mul_montx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$ecp_nistz256_ord_mul_montx: + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + +$L$ord_mulx_body: + + mov rbx,rdx + mov rdx,QWORD[rdx] + mov r9,QWORD[rsi] + mov r10,QWORD[8+rsi] + mov r11,QWORD[16+rsi] + mov r12,QWORD[24+rsi] + lea rsi,[((-128))+rsi] + lea r14,[(($L$ord-128))] + mov r15,QWORD[$L$ordK] + + + mulx r9,r8,r9 + mulx r10,rcx,r10 + mulx r11,rbp,r11 + add r9,rcx + mulx r12,rcx,r12 + mov rdx,r8 + mulx rax,rdx,r15 + adc r10,rbp + adc r11,rcx + adc r12,0 + + + xor r13,r13 + mulx rbp,rcx,QWORD[((0+128))+r14] + adcx r8,rcx + adox r9,rbp + + mulx rbp,rcx,QWORD[((8+128))+r14] + adcx r9,rcx + adox r10,rbp + + mulx rbp,rcx,QWORD[((16+128))+r14] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((24+128))+r14] + mov rdx,QWORD[8+rbx] + adcx r11,rcx + adox r12,rbp + adcx r12,r8 + adox r13,r8 + adc r13,0 + + + mulx rbp,rcx,QWORD[((0+128))+rsi] + adcx r9,rcx + adox r10,rbp + + mulx rbp,rcx,QWORD[((8+128))+rsi] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((16+128))+rsi] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((24+128))+rsi] + mov rdx,r9 + mulx rax,rdx,r15 + adcx r12,rcx + adox r13,rbp + + adcx r13,r8 + adox r8,r8 + adc r8,0 + + + mulx rbp,rcx,QWORD[((0+128))+r14] + adcx r9,rcx + adox r10,rbp + + mulx rbp,rcx,QWORD[((8+128))+r14] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((16+128))+r14] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((24+128))+r14] + mov rdx,QWORD[16+rbx] + adcx r12,rcx + adox r13,rbp + adcx r13,r9 + adox r8,r9 + adc r8,0 + + + mulx rbp,rcx,QWORD[((0+128))+rsi] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((8+128))+rsi] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((16+128))+rsi] + adcx r12,rcx + adox r13,rbp + + mulx rbp,rcx,QWORD[((24+128))+rsi] + mov rdx,r10 + mulx rax,rdx,r15 + adcx r13,rcx + adox r8,rbp + + adcx r8,r9 + adox r9,r9 + adc r9,0 + + + mulx rbp,rcx,QWORD[((0+128))+r14] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((8+128))+r14] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((16+128))+r14] + adcx r12,rcx + adox r13,rbp + + mulx rbp,rcx,QWORD[((24+128))+r14] + mov rdx,QWORD[24+rbx] + adcx r13,rcx + adox r8,rbp + adcx r8,r10 + adox r9,r10 + adc r9,0 + + + mulx rbp,rcx,QWORD[((0+128))+rsi] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((8+128))+rsi] + adcx r12,rcx + adox r13,rbp + + mulx rbp,rcx,QWORD[((16+128))+rsi] + adcx r13,rcx + adox r8,rbp + + mulx rbp,rcx,QWORD[((24+128))+rsi] + mov rdx,r11 + mulx rax,rdx,r15 + adcx r8,rcx + adox r9,rbp + + adcx r9,r10 + adox r10,r10 + adc r10,0 + + + mulx rbp,rcx,QWORD[((0+128))+r14] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((8+128))+r14] + adcx r12,rcx + adox r13,rbp + + mulx rbp,rcx,QWORD[((16+128))+r14] + adcx r13,rcx + adox r8,rbp + + mulx rbp,rcx,QWORD[((24+128))+r14] + lea r14,[128+r14] + mov rbx,r12 + adcx r8,rcx + adox r9,rbp + mov rdx,r13 + adcx r9,r11 + adox r10,r11 + adc r10,0 + + + + mov rcx,r8 + sub r12,QWORD[r14] + sbb r13,QWORD[8+r14] + sbb r8,QWORD[16+r14] + mov rbp,r9 + sbb r9,QWORD[24+r14] + sbb r10,0 + + cmovc r12,rbx + cmovc r13,rdx + cmovc r8,rcx + cmovc r9,rbp + + mov QWORD[rdi],r12 + mov QWORD[8+rdi],r13 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbx,QWORD[32+rsp] + + mov rbp,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$ord_mulx_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_ord_mul_montx: + + +ALIGN 32 +ecp_nistz256_ord_sqr_montx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_ord_sqr_montx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$ecp_nistz256_ord_sqr_montx: + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + +$L$ord_sqrx_body: + + mov rbx,rdx + mov rdx,QWORD[rsi] + mov r14,QWORD[8+rsi] + mov r15,QWORD[16+rsi] + mov r8,QWORD[24+rsi] + lea rsi,[$L$ord] + jmp NEAR $L$oop_ord_sqrx + +ALIGN 32 +$L$oop_ord_sqrx: + mulx r10,r9,r14 + mulx r11,rcx,r15 + mov rax,rdx +DB 102,73,15,110,206 + mulx r12,rbp,r8 + mov rdx,r14 + add r10,rcx +DB 102,73,15,110,215 + adc r11,rbp + adc r12,0 + xor r13,r13 + + mulx rbp,rcx,r15 + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,r8 + mov rdx,r15 + adcx r12,rcx + adox r13,rbp + adc r13,0 + + mulx r14,rcx,r8 + mov rdx,rax +DB 102,73,15,110,216 + xor r15,r15 + adcx r9,r9 + adox r13,rcx + adcx r10,r10 + adox r14,r15 + + + mulx rbp,r8,rdx +DB 102,72,15,126,202 + adcx r11,r11 + adox r9,rbp + adcx r12,r12 + mulx rax,rcx,rdx +DB 102,72,15,126,210 + adcx r13,r13 + adox r10,rcx + adcx r14,r14 + mulx rbp,rcx,rdx +DB 0x67 +DB 102,72,15,126,218 + adox r11,rax + adcx r15,r15 + adox r12,rcx + adox r13,rbp + mulx rax,rcx,rdx + adox r14,rcx + adox r15,rax + + + mov rdx,r8 + mulx rcx,rdx,QWORD[32+rsi] + + xor rax,rax + mulx rbp,rcx,QWORD[rsi] + adcx r8,rcx + adox r9,rbp + mulx rbp,rcx,QWORD[8+rsi] + adcx r9,rcx + adox r10,rbp + mulx rbp,rcx,QWORD[16+rsi] + adcx r10,rcx + adox r11,rbp + mulx rbp,rcx,QWORD[24+rsi] + adcx r11,rcx + adox r8,rbp + adcx r8,rax + + + mov rdx,r9 + mulx rcx,rdx,QWORD[32+rsi] + + mulx rbp,rcx,QWORD[rsi] + adox r9,rcx + adcx r10,rbp + mulx rbp,rcx,QWORD[8+rsi] + adox r10,rcx + adcx r11,rbp + mulx rbp,rcx,QWORD[16+rsi] + adox r11,rcx + adcx r8,rbp + mulx rbp,rcx,QWORD[24+rsi] + adox r8,rcx + adcx r9,rbp + adox r9,rax + + + mov rdx,r10 + mulx rcx,rdx,QWORD[32+rsi] + + mulx rbp,rcx,QWORD[rsi] + adcx r10,rcx + adox r11,rbp + mulx rbp,rcx,QWORD[8+rsi] + adcx r11,rcx + adox r8,rbp + mulx rbp,rcx,QWORD[16+rsi] + adcx r8,rcx + adox r9,rbp + mulx rbp,rcx,QWORD[24+rsi] + adcx r9,rcx + adox r10,rbp + adcx r10,rax + + + mov rdx,r11 + mulx rcx,rdx,QWORD[32+rsi] + + mulx rbp,rcx,QWORD[rsi] + adox r11,rcx + adcx r8,rbp + mulx rbp,rcx,QWORD[8+rsi] + adox r8,rcx + adcx r9,rbp + mulx rbp,rcx,QWORD[16+rsi] + adox r9,rcx + adcx r10,rbp + mulx rbp,rcx,QWORD[24+rsi] + adox r10,rcx + adcx r11,rbp + adox r11,rax + + + add r12,r8 + adc r9,r13 + mov rdx,r12 + adc r10,r14 + adc r11,r15 + mov r14,r9 + adc rax,0 + + + sub r12,QWORD[rsi] + mov r15,r10 + sbb r9,QWORD[8+rsi] + sbb r10,QWORD[16+rsi] + mov r8,r11 + sbb r11,QWORD[24+rsi] + sbb rax,0 + + cmovnc rdx,r12 + cmovnc r14,r9 + cmovnc r15,r10 + cmovnc r8,r11 + + dec rbx + jnz NEAR $L$oop_ord_sqrx + + mov QWORD[rdi],rdx + mov QWORD[8+rdi],r14 + pxor xmm1,xmm1 + mov QWORD[16+rdi],r15 + pxor xmm2,xmm2 + mov QWORD[24+rdi],r8 + pxor xmm3,xmm3 + + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbx,QWORD[32+rsp] + + mov rbp,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$ord_sqrx_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_ord_sqr_montx: + + + + +global ecp_nistz256_to_mont + +ALIGN 32 +ecp_nistz256_to_mont: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_to_mont: + mov rdi,rcx + mov rsi,rdx + + + + mov ecx,0x80100 + and ecx,DWORD[((OPENSSL_ia32cap_P+8))] + lea rdx,[$L$RR] + jmp NEAR $L$mul_mont + +$L$SEH_end_ecp_nistz256_to_mont: + + + + + + + +global ecp_nistz256_mul_mont + +ALIGN 32 +ecp_nistz256_mul_mont: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_mul_mont: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + mov ecx,0x80100 + and ecx,DWORD[((OPENSSL_ia32cap_P+8))] +$L$mul_mont: + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + +$L$mul_body: + cmp ecx,0x80100 + je NEAR $L$mul_montx + mov rbx,rdx + mov rax,QWORD[rdx] + mov r9,QWORD[rsi] + mov r10,QWORD[8+rsi] + mov r11,QWORD[16+rsi] + mov r12,QWORD[24+rsi] + + call __ecp_nistz256_mul_montq + jmp NEAR $L$mul_mont_done + +ALIGN 32 +$L$mul_montx: + mov rbx,rdx + mov rdx,QWORD[rdx] + mov r9,QWORD[rsi] + mov r10,QWORD[8+rsi] + mov r11,QWORD[16+rsi] + mov r12,QWORD[24+rsi] + lea rsi,[((-128))+rsi] + + call __ecp_nistz256_mul_montx +$L$mul_mont_done: + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbx,QWORD[32+rsp] + + mov rbp,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$mul_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_mul_mont: + + +ALIGN 32 +__ecp_nistz256_mul_montq: + + + + mov rbp,rax + mul r9 + mov r14,QWORD[(($L$poly+8))] + mov r8,rax + mov rax,rbp + mov r9,rdx + + mul r10 + mov r15,QWORD[(($L$poly+24))] + add r9,rax + mov rax,rbp + adc rdx,0 + mov r10,rdx + + mul r11 + add r10,rax + mov rax,rbp + adc rdx,0 + mov r11,rdx + + mul r12 + add r11,rax + mov rax,r8 + adc rdx,0 + xor r13,r13 + mov r12,rdx + + + + + + + + + + + mov rbp,r8 + shl r8,32 + mul r15 + shr rbp,32 + add r9,r8 + adc r10,rbp + adc r11,rax + mov rax,QWORD[8+rbx] + adc r12,rdx + adc r13,0 + xor r8,r8 + + + + mov rbp,rax + mul QWORD[rsi] + add r9,rax + mov rax,rbp + adc rdx,0 + mov rcx,rdx + + mul QWORD[8+rsi] + add r10,rcx + adc rdx,0 + add r10,rax + mov rax,rbp + adc rdx,0 + mov rcx,rdx + + mul QWORD[16+rsi] + add r11,rcx + adc rdx,0 + add r11,rax + mov rax,rbp + adc rdx,0 + mov rcx,rdx + + mul QWORD[24+rsi] + add r12,rcx + adc rdx,0 + add r12,rax + mov rax,r9 + adc r13,rdx + adc r8,0 + + + + mov rbp,r9 + shl r9,32 + mul r15 + shr rbp,32 + add r10,r9 + adc r11,rbp + adc r12,rax + mov rax,QWORD[16+rbx] + adc r13,rdx + adc r8,0 + xor r9,r9 + + + + mov rbp,rax + mul QWORD[rsi] + add r10,rax + mov rax,rbp + adc rdx,0 + mov rcx,rdx + + mul QWORD[8+rsi] + add r11,rcx + adc rdx,0 + add r11,rax + mov rax,rbp + adc rdx,0 + mov rcx,rdx + + mul QWORD[16+rsi] + add r12,rcx + adc rdx,0 + add r12,rax + mov rax,rbp + adc rdx,0 + mov rcx,rdx + + mul QWORD[24+rsi] + add r13,rcx + adc rdx,0 + add r13,rax + mov rax,r10 + adc r8,rdx + adc r9,0 + + + + mov rbp,r10 + shl r10,32 + mul r15 + shr rbp,32 + add r11,r10 + adc r12,rbp + adc r13,rax + mov rax,QWORD[24+rbx] + adc r8,rdx + adc r9,0 + xor r10,r10 + + + + mov rbp,rax + mul QWORD[rsi] + add r11,rax + mov rax,rbp + adc rdx,0 + mov rcx,rdx + + mul QWORD[8+rsi] + add r12,rcx + adc rdx,0 + add r12,rax + mov rax,rbp + adc rdx,0 + mov rcx,rdx + + mul QWORD[16+rsi] + add r13,rcx + adc rdx,0 + add r13,rax + mov rax,rbp + adc rdx,0 + mov rcx,rdx + + mul QWORD[24+rsi] + add r8,rcx + adc rdx,0 + add r8,rax + mov rax,r11 + adc r9,rdx + adc r10,0 + + + + mov rbp,r11 + shl r11,32 + mul r15 + shr rbp,32 + add r12,r11 + adc r13,rbp + mov rcx,r12 + adc r8,rax + adc r9,rdx + mov rbp,r13 + adc r10,0 + + + + sub r12,-1 + mov rbx,r8 + sbb r13,r14 + sbb r8,0 + mov rdx,r9 + sbb r9,r15 + sbb r10,0 + + cmovc r12,rcx + cmovc r13,rbp + mov QWORD[rdi],r12 + cmovc r8,rbx + mov QWORD[8+rdi],r13 + cmovc r9,rdx + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + DB 0F3h,0C3h ;repret + + + + + + + + + + +global ecp_nistz256_sqr_mont + +ALIGN 32 +ecp_nistz256_sqr_mont: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_sqr_mont: + mov rdi,rcx + mov rsi,rdx + + + + mov ecx,0x80100 + and ecx,DWORD[((OPENSSL_ia32cap_P+8))] + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + +$L$sqr_body: + cmp ecx,0x80100 + je NEAR $L$sqr_montx + mov rax,QWORD[rsi] + mov r14,QWORD[8+rsi] + mov r15,QWORD[16+rsi] + mov r8,QWORD[24+rsi] + + call __ecp_nistz256_sqr_montq + jmp NEAR $L$sqr_mont_done + +ALIGN 32 +$L$sqr_montx: + mov rdx,QWORD[rsi] + mov r14,QWORD[8+rsi] + mov r15,QWORD[16+rsi] + mov r8,QWORD[24+rsi] + lea rsi,[((-128))+rsi] + + call __ecp_nistz256_sqr_montx +$L$sqr_mont_done: + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbx,QWORD[32+rsp] + + mov rbp,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$sqr_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_sqr_mont: + + +ALIGN 32 +__ecp_nistz256_sqr_montq: + + mov r13,rax + mul r14 + mov r9,rax + mov rax,r15 + mov r10,rdx + + mul r13 + add r10,rax + mov rax,r8 + adc rdx,0 + mov r11,rdx + + mul r13 + add r11,rax + mov rax,r15 + adc rdx,0 + mov r12,rdx + + + mul r14 + add r11,rax + mov rax,r8 + adc rdx,0 + mov rbp,rdx + + mul r14 + add r12,rax + mov rax,r8 + adc rdx,0 + add r12,rbp + mov r13,rdx + adc r13,0 + + + mul r15 + xor r15,r15 + add r13,rax + mov rax,QWORD[rsi] + mov r14,rdx + adc r14,0 + + add r9,r9 + adc r10,r10 + adc r11,r11 + adc r12,r12 + adc r13,r13 + adc r14,r14 + adc r15,0 + + mul rax + mov r8,rax + mov rax,QWORD[8+rsi] + mov rcx,rdx + + mul rax + add r9,rcx + adc r10,rax + mov rax,QWORD[16+rsi] + adc rdx,0 + mov rcx,rdx + + mul rax + add r11,rcx + adc r12,rax + mov rax,QWORD[24+rsi] + adc rdx,0 + mov rcx,rdx + + mul rax + add r13,rcx + adc r14,rax + mov rax,r8 + adc r15,rdx + + mov rsi,QWORD[(($L$poly+8))] + mov rbp,QWORD[(($L$poly+24))] + + + + + mov rcx,r8 + shl r8,32 + mul rbp + shr rcx,32 + add r9,r8 + adc r10,rcx + adc r11,rax + mov rax,r9 + adc rdx,0 + + + + mov rcx,r9 + shl r9,32 + mov r8,rdx + mul rbp + shr rcx,32 + add r10,r9 + adc r11,rcx + adc r8,rax + mov rax,r10 + adc rdx,0 + + + + mov rcx,r10 + shl r10,32 + mov r9,rdx + mul rbp + shr rcx,32 + add r11,r10 + adc r8,rcx + adc r9,rax + mov rax,r11 + adc rdx,0 + + + + mov rcx,r11 + shl r11,32 + mov r10,rdx + mul rbp + shr rcx,32 + add r8,r11 + adc r9,rcx + adc r10,rax + adc rdx,0 + xor r11,r11 + + + + add r12,r8 + adc r13,r9 + mov r8,r12 + adc r14,r10 + adc r15,rdx + mov r9,r13 + adc r11,0 + + sub r12,-1 + mov r10,r14 + sbb r13,rsi + sbb r14,0 + mov rcx,r15 + sbb r15,rbp + sbb r11,0 + + cmovc r12,r8 + cmovc r13,r9 + mov QWORD[rdi],r12 + cmovc r14,r10 + mov QWORD[8+rdi],r13 + cmovc r15,rcx + mov QWORD[16+rdi],r14 + mov QWORD[24+rdi],r15 + + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +__ecp_nistz256_mul_montx: + + + + mulx r9,r8,r9 + mulx r10,rcx,r10 + mov r14,32 + xor r13,r13 + mulx r11,rbp,r11 + mov r15,QWORD[(($L$poly+24))] + adc r9,rcx + mulx r12,rcx,r12 + mov rdx,r8 + adc r10,rbp + shlx rbp,r8,r14 + adc r11,rcx + shrx rcx,r8,r14 + adc r12,0 + + + + add r9,rbp + adc r10,rcx + + mulx rbp,rcx,r15 + mov rdx,QWORD[8+rbx] + adc r11,rcx + adc r12,rbp + adc r13,0 + xor r8,r8 + + + + mulx rbp,rcx,QWORD[((0+128))+rsi] + adcx r9,rcx + adox r10,rbp + + mulx rbp,rcx,QWORD[((8+128))+rsi] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((16+128))+rsi] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((24+128))+rsi] + mov rdx,r9 + adcx r12,rcx + shlx rcx,r9,r14 + adox r13,rbp + shrx rbp,r9,r14 + + adcx r13,r8 + adox r8,r8 + adc r8,0 + + + + add r10,rcx + adc r11,rbp + + mulx rbp,rcx,r15 + mov rdx,QWORD[16+rbx] + adc r12,rcx + adc r13,rbp + adc r8,0 + xor r9,r9 + + + + mulx rbp,rcx,QWORD[((0+128))+rsi] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((8+128))+rsi] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((16+128))+rsi] + adcx r12,rcx + adox r13,rbp + + mulx rbp,rcx,QWORD[((24+128))+rsi] + mov rdx,r10 + adcx r13,rcx + shlx rcx,r10,r14 + adox r8,rbp + shrx rbp,r10,r14 + + adcx r8,r9 + adox r9,r9 + adc r9,0 + + + + add r11,rcx + adc r12,rbp + + mulx rbp,rcx,r15 + mov rdx,QWORD[24+rbx] + adc r13,rcx + adc r8,rbp + adc r9,0 + xor r10,r10 + + + + mulx rbp,rcx,QWORD[((0+128))+rsi] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((8+128))+rsi] + adcx r12,rcx + adox r13,rbp + + mulx rbp,rcx,QWORD[((16+128))+rsi] + adcx r13,rcx + adox r8,rbp + + mulx rbp,rcx,QWORD[((24+128))+rsi] + mov rdx,r11 + adcx r8,rcx + shlx rcx,r11,r14 + adox r9,rbp + shrx rbp,r11,r14 + + adcx r9,r10 + adox r10,r10 + adc r10,0 + + + + add r12,rcx + adc r13,rbp + + mulx rbp,rcx,r15 + mov rbx,r12 + mov r14,QWORD[(($L$poly+8))] + adc r8,rcx + mov rdx,r13 + adc r9,rbp + adc r10,0 + + + + xor eax,eax + mov rcx,r8 + sbb r12,-1 + sbb r13,r14 + sbb r8,0 + mov rbp,r9 + sbb r9,r15 + sbb r10,0 + + cmovc r12,rbx + cmovc r13,rdx + mov QWORD[rdi],r12 + cmovc r8,rcx + mov QWORD[8+rdi],r13 + cmovc r9,rbp + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +__ecp_nistz256_sqr_montx: + + mulx r10,r9,r14 + mulx r11,rcx,r15 + xor eax,eax + adc r10,rcx + mulx r12,rbp,r8 + mov rdx,r14 + adc r11,rbp + adc r12,0 + xor r13,r13 + + + mulx rbp,rcx,r15 + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,r8 + mov rdx,r15 + adcx r12,rcx + adox r13,rbp + adc r13,0 + + + mulx r14,rcx,r8 + mov rdx,QWORD[((0+128))+rsi] + xor r15,r15 + adcx r9,r9 + adox r13,rcx + adcx r10,r10 + adox r14,r15 + + mulx rbp,r8,rdx + mov rdx,QWORD[((8+128))+rsi] + adcx r11,r11 + adox r9,rbp + adcx r12,r12 + mulx rax,rcx,rdx + mov rdx,QWORD[((16+128))+rsi] + adcx r13,r13 + adox r10,rcx + adcx r14,r14 +DB 0x67 + mulx rbp,rcx,rdx + mov rdx,QWORD[((24+128))+rsi] + adox r11,rax + adcx r15,r15 + adox r12,rcx + mov rsi,32 + adox r13,rbp +DB 0x67,0x67 + mulx rax,rcx,rdx + mov rdx,QWORD[(($L$poly+24))] + adox r14,rcx + shlx rcx,r8,rsi + adox r15,rax + shrx rax,r8,rsi + mov rbp,rdx + + + add r9,rcx + adc r10,rax + + mulx r8,rcx,r8 + adc r11,rcx + shlx rcx,r9,rsi + adc r8,0 + shrx rax,r9,rsi + + + add r10,rcx + adc r11,rax + + mulx r9,rcx,r9 + adc r8,rcx + shlx rcx,r10,rsi + adc r9,0 + shrx rax,r10,rsi + + + add r11,rcx + adc r8,rax + + mulx r10,rcx,r10 + adc r9,rcx + shlx rcx,r11,rsi + adc r10,0 + shrx rax,r11,rsi + + + add r8,rcx + adc r9,rax + + mulx r11,rcx,r11 + adc r10,rcx + adc r11,0 + + xor rdx,rdx + add r12,r8 + mov rsi,QWORD[(($L$poly+8))] + adc r13,r9 + mov r8,r12 + adc r14,r10 + adc r15,r11 + mov r9,r13 + adc rdx,0 + + sub r12,-1 + mov r10,r14 + sbb r13,rsi + sbb r14,0 + mov r11,r15 + sbb r15,rbp + sbb rdx,0 + + cmovc r12,r8 + cmovc r13,r9 + mov QWORD[rdi],r12 + cmovc r14,r10 + mov QWORD[8+rdi],r13 + cmovc r15,r11 + mov QWORD[16+rdi],r14 + mov QWORD[24+rdi],r15 + + DB 0F3h,0C3h ;repret + + + + + + + + +global ecp_nistz256_from_mont + +ALIGN 32 +ecp_nistz256_from_mont: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_from_mont: + mov rdi,rcx + mov rsi,rdx + + + + push r12 + + push r13 + +$L$from_body: + + mov rax,QWORD[rsi] + mov r13,QWORD[(($L$poly+24))] + mov r9,QWORD[8+rsi] + mov r10,QWORD[16+rsi] + mov r11,QWORD[24+rsi] + mov r8,rax + mov r12,QWORD[(($L$poly+8))] + + + + mov rcx,rax + shl r8,32 + mul r13 + shr rcx,32 + add r9,r8 + adc r10,rcx + adc r11,rax + mov rax,r9 + adc rdx,0 + + + + mov rcx,r9 + shl r9,32 + mov r8,rdx + mul r13 + shr rcx,32 + add r10,r9 + adc r11,rcx + adc r8,rax + mov rax,r10 + adc rdx,0 + + + + mov rcx,r10 + shl r10,32 + mov r9,rdx + mul r13 + shr rcx,32 + add r11,r10 + adc r8,rcx + adc r9,rax + mov rax,r11 + adc rdx,0 + + + + mov rcx,r11 + shl r11,32 + mov r10,rdx + mul r13 + shr rcx,32 + add r8,r11 + adc r9,rcx + mov rcx,r8 + adc r10,rax + mov rsi,r9 + adc rdx,0 + + + + sub r8,-1 + mov rax,r10 + sbb r9,r12 + sbb r10,0 + mov r11,rdx + sbb rdx,r13 + sbb r13,r13 + + cmovnz r8,rcx + cmovnz r9,rsi + mov QWORD[rdi],r8 + cmovnz r10,rax + mov QWORD[8+rdi],r9 + cmovz r11,rdx + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + + mov r13,QWORD[rsp] + + mov r12,QWORD[8+rsp] + + lea rsp,[16+rsp] + +$L$from_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_from_mont: + + +global ecp_nistz256_scatter_w5 + +ALIGN 32 +ecp_nistz256_scatter_w5: + + lea r8d,[((-3))+r8*2+r8] + movdqa xmm0,XMMWORD[rdx] + shl r8d,5 + movdqa xmm1,XMMWORD[16+rdx] + movdqa xmm2,XMMWORD[32+rdx] + movdqa xmm3,XMMWORD[48+rdx] + movdqa xmm4,XMMWORD[64+rdx] + movdqa xmm5,XMMWORD[80+rdx] + movdqa XMMWORD[r8*1+rcx],xmm0 + movdqa XMMWORD[16+r8*1+rcx],xmm1 + movdqa XMMWORD[32+r8*1+rcx],xmm2 + movdqa XMMWORD[48+r8*1+rcx],xmm3 + movdqa XMMWORD[64+r8*1+rcx],xmm4 + movdqa XMMWORD[80+r8*1+rcx],xmm5 + + DB 0F3h,0C3h ;repret + + + + + +global ecp_nistz256_gather_w5 + +ALIGN 32 +ecp_nistz256_gather_w5: + + mov eax,DWORD[((OPENSSL_ia32cap_P+8))] + test eax,32 + jnz NEAR $L$avx2_gather_w5 + lea rax,[((-136))+rsp] +$L$SEH_begin_ecp_nistz256_gather_w5: +DB 0x48,0x8d,0x60,0xe0 +DB 0x0f,0x29,0x70,0xe0 +DB 0x0f,0x29,0x78,0xf0 +DB 0x44,0x0f,0x29,0x00 +DB 0x44,0x0f,0x29,0x48,0x10 +DB 0x44,0x0f,0x29,0x50,0x20 +DB 0x44,0x0f,0x29,0x58,0x30 +DB 0x44,0x0f,0x29,0x60,0x40 +DB 0x44,0x0f,0x29,0x68,0x50 +DB 0x44,0x0f,0x29,0x70,0x60 +DB 0x44,0x0f,0x29,0x78,0x70 + movdqa xmm0,XMMWORD[$L$One] + movd xmm1,r8d + + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + pxor xmm6,xmm6 + pxor xmm7,xmm7 + + movdqa xmm8,xmm0 + pshufd xmm1,xmm1,0 + + mov rax,16 +$L$select_loop_sse_w5: + + movdqa xmm15,xmm8 + paddd xmm8,xmm0 + pcmpeqd xmm15,xmm1 + + movdqa xmm9,XMMWORD[rdx] + movdqa xmm10,XMMWORD[16+rdx] + movdqa xmm11,XMMWORD[32+rdx] + movdqa xmm12,XMMWORD[48+rdx] + movdqa xmm13,XMMWORD[64+rdx] + movdqa xmm14,XMMWORD[80+rdx] + lea rdx,[96+rdx] + + pand xmm9,xmm15 + pand xmm10,xmm15 + por xmm2,xmm9 + pand xmm11,xmm15 + por xmm3,xmm10 + pand xmm12,xmm15 + por xmm4,xmm11 + pand xmm13,xmm15 + por xmm5,xmm12 + pand xmm14,xmm15 + por xmm6,xmm13 + por xmm7,xmm14 + + dec rax + jnz NEAR $L$select_loop_sse_w5 + + movdqu XMMWORD[rcx],xmm2 + movdqu XMMWORD[16+rcx],xmm3 + movdqu XMMWORD[32+rcx],xmm4 + movdqu XMMWORD[48+rcx],xmm5 + movdqu XMMWORD[64+rcx],xmm6 + movdqu XMMWORD[80+rcx],xmm7 + movaps xmm6,XMMWORD[rsp] + movaps xmm7,XMMWORD[16+rsp] + movaps xmm8,XMMWORD[32+rsp] + movaps xmm9,XMMWORD[48+rsp] + movaps xmm10,XMMWORD[64+rsp] + movaps xmm11,XMMWORD[80+rsp] + movaps xmm12,XMMWORD[96+rsp] + movaps xmm13,XMMWORD[112+rsp] + movaps xmm14,XMMWORD[128+rsp] + movaps xmm15,XMMWORD[144+rsp] + lea rsp,[168+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_gather_w5: + + + + +global ecp_nistz256_scatter_w7 + +ALIGN 32 +ecp_nistz256_scatter_w7: + + movdqu xmm0,XMMWORD[rdx] + shl r8d,6 + movdqu xmm1,XMMWORD[16+rdx] + movdqu xmm2,XMMWORD[32+rdx] + movdqu xmm3,XMMWORD[48+rdx] + movdqa XMMWORD[r8*1+rcx],xmm0 + movdqa XMMWORD[16+r8*1+rcx],xmm1 + movdqa XMMWORD[32+r8*1+rcx],xmm2 + movdqa XMMWORD[48+r8*1+rcx],xmm3 + + DB 0F3h,0C3h ;repret + + + + + +global ecp_nistz256_gather_w7 + +ALIGN 32 +ecp_nistz256_gather_w7: + + mov eax,DWORD[((OPENSSL_ia32cap_P+8))] + test eax,32 + jnz NEAR $L$avx2_gather_w7 + lea rax,[((-136))+rsp] +$L$SEH_begin_ecp_nistz256_gather_w7: +DB 0x48,0x8d,0x60,0xe0 +DB 0x0f,0x29,0x70,0xe0 +DB 0x0f,0x29,0x78,0xf0 +DB 0x44,0x0f,0x29,0x00 +DB 0x44,0x0f,0x29,0x48,0x10 +DB 0x44,0x0f,0x29,0x50,0x20 +DB 0x44,0x0f,0x29,0x58,0x30 +DB 0x44,0x0f,0x29,0x60,0x40 +DB 0x44,0x0f,0x29,0x68,0x50 +DB 0x44,0x0f,0x29,0x70,0x60 +DB 0x44,0x0f,0x29,0x78,0x70 + movdqa xmm8,XMMWORD[$L$One] + movd xmm1,r8d + + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + + movdqa xmm0,xmm8 + pshufd xmm1,xmm1,0 + mov rax,64 + +$L$select_loop_sse_w7: + movdqa xmm15,xmm8 + paddd xmm8,xmm0 + movdqa xmm9,XMMWORD[rdx] + movdqa xmm10,XMMWORD[16+rdx] + pcmpeqd xmm15,xmm1 + movdqa xmm11,XMMWORD[32+rdx] + movdqa xmm12,XMMWORD[48+rdx] + lea rdx,[64+rdx] + + pand xmm9,xmm15 + pand xmm10,xmm15 + por xmm2,xmm9 + pand xmm11,xmm15 + por xmm3,xmm10 + pand xmm12,xmm15 + por xmm4,xmm11 + prefetcht0 [255+rdx] + por xmm5,xmm12 + + dec rax + jnz NEAR $L$select_loop_sse_w7 + + movdqu XMMWORD[rcx],xmm2 + movdqu XMMWORD[16+rcx],xmm3 + movdqu XMMWORD[32+rcx],xmm4 + movdqu XMMWORD[48+rcx],xmm5 + movaps xmm6,XMMWORD[rsp] + movaps xmm7,XMMWORD[16+rsp] + movaps xmm8,XMMWORD[32+rsp] + movaps xmm9,XMMWORD[48+rsp] + movaps xmm10,XMMWORD[64+rsp] + movaps xmm11,XMMWORD[80+rsp] + movaps xmm12,XMMWORD[96+rsp] + movaps xmm13,XMMWORD[112+rsp] + movaps xmm14,XMMWORD[128+rsp] + movaps xmm15,XMMWORD[144+rsp] + lea rsp,[168+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_gather_w7: + + + + +ALIGN 32 +ecp_nistz256_avx2_gather_w5: + +$L$avx2_gather_w5: + vzeroupper + lea rax,[((-136))+rsp] + mov r11,rsp +$L$SEH_begin_ecp_nistz256_avx2_gather_w5: +DB 0x48,0x8d,0x60,0xe0 +DB 0xc5,0xf8,0x29,0x70,0xe0 +DB 0xc5,0xf8,0x29,0x78,0xf0 +DB 0xc5,0x78,0x29,0x40,0x00 +DB 0xc5,0x78,0x29,0x48,0x10 +DB 0xc5,0x78,0x29,0x50,0x20 +DB 0xc5,0x78,0x29,0x58,0x30 +DB 0xc5,0x78,0x29,0x60,0x40 +DB 0xc5,0x78,0x29,0x68,0x50 +DB 0xc5,0x78,0x29,0x70,0x60 +DB 0xc5,0x78,0x29,0x78,0x70 + vmovdqa ymm0,YMMWORD[$L$Two] + + vpxor ymm2,ymm2,ymm2 + vpxor ymm3,ymm3,ymm3 + vpxor ymm4,ymm4,ymm4 + + vmovdqa ymm5,YMMWORD[$L$One] + vmovdqa ymm10,YMMWORD[$L$Two] + + vmovd xmm1,r8d + vpermd ymm1,ymm2,ymm1 + + mov rax,8 +$L$select_loop_avx2_w5: + + vmovdqa ymm6,YMMWORD[rdx] + vmovdqa ymm7,YMMWORD[32+rdx] + vmovdqa ymm8,YMMWORD[64+rdx] + + vmovdqa ymm11,YMMWORD[96+rdx] + vmovdqa ymm12,YMMWORD[128+rdx] + vmovdqa ymm13,YMMWORD[160+rdx] + + vpcmpeqd ymm9,ymm5,ymm1 + vpcmpeqd ymm14,ymm10,ymm1 + + vpaddd ymm5,ymm5,ymm0 + vpaddd ymm10,ymm10,ymm0 + lea rdx,[192+rdx] + + vpand ymm6,ymm6,ymm9 + vpand ymm7,ymm7,ymm9 + vpand ymm8,ymm8,ymm9 + vpand ymm11,ymm11,ymm14 + vpand ymm12,ymm12,ymm14 + vpand ymm13,ymm13,ymm14 + + vpxor ymm2,ymm2,ymm6 + vpxor ymm3,ymm3,ymm7 + vpxor ymm4,ymm4,ymm8 + vpxor ymm2,ymm2,ymm11 + vpxor ymm3,ymm3,ymm12 + vpxor ymm4,ymm4,ymm13 + + dec rax + jnz NEAR $L$select_loop_avx2_w5 + + vmovdqu YMMWORD[rcx],ymm2 + vmovdqu YMMWORD[32+rcx],ymm3 + vmovdqu YMMWORD[64+rcx],ymm4 + vzeroupper + movaps xmm6,XMMWORD[rsp] + movaps xmm7,XMMWORD[16+rsp] + movaps xmm8,XMMWORD[32+rsp] + movaps xmm9,XMMWORD[48+rsp] + movaps xmm10,XMMWORD[64+rsp] + movaps xmm11,XMMWORD[80+rsp] + movaps xmm12,XMMWORD[96+rsp] + movaps xmm13,XMMWORD[112+rsp] + movaps xmm14,XMMWORD[128+rsp] + movaps xmm15,XMMWORD[144+rsp] + lea rsp,[r11] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_avx2_gather_w5: + + + + +global ecp_nistz256_avx2_gather_w7 + +ALIGN 32 +ecp_nistz256_avx2_gather_w7: + +$L$avx2_gather_w7: + vzeroupper + mov r11,rsp + lea rax,[((-136))+rsp] +$L$SEH_begin_ecp_nistz256_avx2_gather_w7: +DB 0x48,0x8d,0x60,0xe0 +DB 0xc5,0xf8,0x29,0x70,0xe0 +DB 0xc5,0xf8,0x29,0x78,0xf0 +DB 0xc5,0x78,0x29,0x40,0x00 +DB 0xc5,0x78,0x29,0x48,0x10 +DB 0xc5,0x78,0x29,0x50,0x20 +DB 0xc5,0x78,0x29,0x58,0x30 +DB 0xc5,0x78,0x29,0x60,0x40 +DB 0xc5,0x78,0x29,0x68,0x50 +DB 0xc5,0x78,0x29,0x70,0x60 +DB 0xc5,0x78,0x29,0x78,0x70 + vmovdqa ymm0,YMMWORD[$L$Three] + + vpxor ymm2,ymm2,ymm2 + vpxor ymm3,ymm3,ymm3 + + vmovdqa ymm4,YMMWORD[$L$One] + vmovdqa ymm8,YMMWORD[$L$Two] + vmovdqa ymm12,YMMWORD[$L$Three] + + vmovd xmm1,r8d + vpermd ymm1,ymm2,ymm1 + + + mov rax,21 +$L$select_loop_avx2_w7: + + vmovdqa ymm5,YMMWORD[rdx] + vmovdqa ymm6,YMMWORD[32+rdx] + + vmovdqa ymm9,YMMWORD[64+rdx] + vmovdqa ymm10,YMMWORD[96+rdx] + + vmovdqa ymm13,YMMWORD[128+rdx] + vmovdqa ymm14,YMMWORD[160+rdx] + + vpcmpeqd ymm7,ymm4,ymm1 + vpcmpeqd ymm11,ymm8,ymm1 + vpcmpeqd ymm15,ymm12,ymm1 + + vpaddd ymm4,ymm4,ymm0 + vpaddd ymm8,ymm8,ymm0 + vpaddd ymm12,ymm12,ymm0 + lea rdx,[192+rdx] + + vpand ymm5,ymm5,ymm7 + vpand ymm6,ymm6,ymm7 + vpand ymm9,ymm9,ymm11 + vpand ymm10,ymm10,ymm11 + vpand ymm13,ymm13,ymm15 + vpand ymm14,ymm14,ymm15 + + vpxor ymm2,ymm2,ymm5 + vpxor ymm3,ymm3,ymm6 + vpxor ymm2,ymm2,ymm9 + vpxor ymm3,ymm3,ymm10 + vpxor ymm2,ymm2,ymm13 + vpxor ymm3,ymm3,ymm14 + + dec rax + jnz NEAR $L$select_loop_avx2_w7 + + + vmovdqa ymm5,YMMWORD[rdx] + vmovdqa ymm6,YMMWORD[32+rdx] + + vpcmpeqd ymm7,ymm4,ymm1 + + vpand ymm5,ymm5,ymm7 + vpand ymm6,ymm6,ymm7 + + vpxor ymm2,ymm2,ymm5 + vpxor ymm3,ymm3,ymm6 + + vmovdqu YMMWORD[rcx],ymm2 + vmovdqu YMMWORD[32+rcx],ymm3 + vzeroupper + movaps xmm6,XMMWORD[rsp] + movaps xmm7,XMMWORD[16+rsp] + movaps xmm8,XMMWORD[32+rsp] + movaps xmm9,XMMWORD[48+rsp] + movaps xmm10,XMMWORD[64+rsp] + movaps xmm11,XMMWORD[80+rsp] + movaps xmm12,XMMWORD[96+rsp] + movaps xmm13,XMMWORD[112+rsp] + movaps xmm14,XMMWORD[128+rsp] + movaps xmm15,XMMWORD[144+rsp] + lea rsp,[r11] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_avx2_gather_w7: + + +ALIGN 32 +__ecp_nistz256_add_toq: + + xor r11,r11 + add r12,QWORD[rbx] + adc r13,QWORD[8+rbx] + mov rax,r12 + adc r8,QWORD[16+rbx] + adc r9,QWORD[24+rbx] + mov rbp,r13 + adc r11,0 + + sub r12,-1 + mov rcx,r8 + sbb r13,r14 + sbb r8,0 + mov r10,r9 + sbb r9,r15 + sbb r11,0 + + cmovc r12,rax + cmovc r13,rbp + mov QWORD[rdi],r12 + cmovc r8,rcx + mov QWORD[8+rdi],r13 + cmovc r9,r10 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +__ecp_nistz256_sub_fromq: + + sub r12,QWORD[rbx] + sbb r13,QWORD[8+rbx] + mov rax,r12 + sbb r8,QWORD[16+rbx] + sbb r9,QWORD[24+rbx] + mov rbp,r13 + sbb r11,r11 + + add r12,-1 + mov rcx,r8 + adc r13,r14 + adc r8,0 + mov r10,r9 + adc r9,r15 + test r11,r11 + + cmovz r12,rax + cmovz r13,rbp + mov QWORD[rdi],r12 + cmovz r8,rcx + mov QWORD[8+rdi],r13 + cmovz r9,r10 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +__ecp_nistz256_subq: + + sub rax,r12 + sbb rbp,r13 + mov r12,rax + sbb rcx,r8 + sbb r10,r9 + mov r13,rbp + sbb r11,r11 + + add rax,-1 + mov r8,rcx + adc rbp,r14 + adc rcx,0 + mov r9,r10 + adc r10,r15 + test r11,r11 + + cmovnz r12,rax + cmovnz r13,rbp + cmovnz r8,rcx + cmovnz r9,r10 + + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +__ecp_nistz256_mul_by_2q: + + xor r11,r11 + add r12,r12 + adc r13,r13 + mov rax,r12 + adc r8,r8 + adc r9,r9 + mov rbp,r13 + adc r11,0 + + sub r12,-1 + mov rcx,r8 + sbb r13,r14 + sbb r8,0 + mov r10,r9 + sbb r9,r15 + sbb r11,0 + + cmovc r12,rax + cmovc r13,rbp + mov QWORD[rdi],r12 + cmovc r8,rcx + mov QWORD[8+rdi],r13 + cmovc r9,r10 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + DB 0F3h,0C3h ;repret + + +global ecp_nistz256_point_double + +ALIGN 32 +ecp_nistz256_point_double: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_point_double: + mov rdi,rcx + mov rsi,rdx + + + + mov ecx,0x80100 + and ecx,DWORD[((OPENSSL_ia32cap_P+8))] + cmp ecx,0x80100 + je NEAR $L$point_doublex + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,32*5+8 + +$L$point_doubleq_body: + +$L$point_double_shortcutq: + movdqu xmm0,XMMWORD[rsi] + mov rbx,rsi + movdqu xmm1,XMMWORD[16+rsi] + mov r12,QWORD[((32+0))+rsi] + mov r13,QWORD[((32+8))+rsi] + mov r8,QWORD[((32+16))+rsi] + mov r9,QWORD[((32+24))+rsi] + mov r14,QWORD[(($L$poly+8))] + mov r15,QWORD[(($L$poly+24))] + movdqa XMMWORD[96+rsp],xmm0 + movdqa XMMWORD[(96+16)+rsp],xmm1 + lea r10,[32+rdi] + lea r11,[64+rdi] +DB 102,72,15,110,199 +DB 102,73,15,110,202 +DB 102,73,15,110,211 + + lea rdi,[rsp] + call __ecp_nistz256_mul_by_2q + + mov rax,QWORD[((64+0))+rsi] + mov r14,QWORD[((64+8))+rsi] + mov r15,QWORD[((64+16))+rsi] + mov r8,QWORD[((64+24))+rsi] + lea rsi,[((64-0))+rsi] + lea rdi,[64+rsp] + call __ecp_nistz256_sqr_montq + + mov rax,QWORD[((0+0))+rsp] + mov r14,QWORD[((8+0))+rsp] + lea rsi,[((0+0))+rsp] + mov r15,QWORD[((16+0))+rsp] + mov r8,QWORD[((24+0))+rsp] + lea rdi,[rsp] + call __ecp_nistz256_sqr_montq + + mov rax,QWORD[32+rbx] + mov r9,QWORD[((64+0))+rbx] + mov r10,QWORD[((64+8))+rbx] + mov r11,QWORD[((64+16))+rbx] + mov r12,QWORD[((64+24))+rbx] + lea rsi,[((64-0))+rbx] + lea rbx,[32+rbx] +DB 102,72,15,126,215 + call __ecp_nistz256_mul_montq + call __ecp_nistz256_mul_by_2q + + mov r12,QWORD[((96+0))+rsp] + mov r13,QWORD[((96+8))+rsp] + lea rbx,[64+rsp] + mov r8,QWORD[((96+16))+rsp] + mov r9,QWORD[((96+24))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_add_toq + + mov r12,QWORD[((96+0))+rsp] + mov r13,QWORD[((96+8))+rsp] + lea rbx,[64+rsp] + mov r8,QWORD[((96+16))+rsp] + mov r9,QWORD[((96+24))+rsp] + lea rdi,[64+rsp] + call __ecp_nistz256_sub_fromq + + mov rax,QWORD[((0+0))+rsp] + mov r14,QWORD[((8+0))+rsp] + lea rsi,[((0+0))+rsp] + mov r15,QWORD[((16+0))+rsp] + mov r8,QWORD[((24+0))+rsp] +DB 102,72,15,126,207 + call __ecp_nistz256_sqr_montq + xor r9,r9 + mov rax,r12 + add r12,-1 + mov r10,r13 + adc r13,rsi + mov rcx,r14 + adc r14,0 + mov r8,r15 + adc r15,rbp + adc r9,0 + xor rsi,rsi + test rax,1 + + cmovz r12,rax + cmovz r13,r10 + cmovz r14,rcx + cmovz r15,r8 + cmovz r9,rsi + + mov rax,r13 + shr r12,1 + shl rax,63 + mov r10,r14 + shr r13,1 + or r12,rax + shl r10,63 + mov rcx,r15 + shr r14,1 + or r13,r10 + shl rcx,63 + mov QWORD[rdi],r12 + shr r15,1 + mov QWORD[8+rdi],r13 + shl r9,63 + or r14,rcx + or r15,r9 + mov QWORD[16+rdi],r14 + mov QWORD[24+rdi],r15 + mov rax,QWORD[64+rsp] + lea rbx,[64+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((0+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_mul_montq + + lea rdi,[128+rsp] + call __ecp_nistz256_mul_by_2q + + lea rbx,[32+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_add_toq + + mov rax,QWORD[96+rsp] + lea rbx,[96+rsp] + mov r9,QWORD[((0+0))+rsp] + mov r10,QWORD[((8+0))+rsp] + lea rsi,[((0+0))+rsp] + mov r11,QWORD[((16+0))+rsp] + mov r12,QWORD[((24+0))+rsp] + lea rdi,[rsp] + call __ecp_nistz256_mul_montq + + lea rdi,[128+rsp] + call __ecp_nistz256_mul_by_2q + + mov rax,QWORD[((0+32))+rsp] + mov r14,QWORD[((8+32))+rsp] + lea rsi,[((0+32))+rsp] + mov r15,QWORD[((16+32))+rsp] + mov r8,QWORD[((24+32))+rsp] +DB 102,72,15,126,199 + call __ecp_nistz256_sqr_montq + + lea rbx,[128+rsp] + mov r8,r14 + mov r9,r15 + mov r14,rsi + mov r15,rbp + call __ecp_nistz256_sub_fromq + + mov rax,QWORD[((0+0))+rsp] + mov rbp,QWORD[((0+8))+rsp] + mov rcx,QWORD[((0+16))+rsp] + mov r10,QWORD[((0+24))+rsp] + lea rdi,[rsp] + call __ecp_nistz256_subq + + mov rax,QWORD[32+rsp] + lea rbx,[32+rsp] + mov r14,r12 + xor ecx,ecx + mov QWORD[((0+0))+rsp],r12 + mov r10,r13 + mov QWORD[((0+8))+rsp],r13 + cmovz r11,r8 + mov QWORD[((0+16))+rsp],r8 + lea rsi,[((0-0))+rsp] + cmovz r12,r9 + mov QWORD[((0+24))+rsp],r9 + mov r9,r14 + lea rdi,[rsp] + call __ecp_nistz256_mul_montq + +DB 102,72,15,126,203 +DB 102,72,15,126,207 + call __ecp_nistz256_sub_fromq + + lea rsi,[((160+56))+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbx,QWORD[((-16))+rsi] + + mov rbp,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$point_doubleq_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_point_double: +global ecp_nistz256_point_add + +ALIGN 32 +ecp_nistz256_point_add: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_point_add: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + mov ecx,0x80100 + and ecx,DWORD[((OPENSSL_ia32cap_P+8))] + cmp ecx,0x80100 + je NEAR $L$point_addx + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,32*18+8 + +$L$point_addq_body: + + movdqu xmm0,XMMWORD[rsi] + movdqu xmm1,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + movdqu xmm3,XMMWORD[48+rsi] + movdqu xmm4,XMMWORD[64+rsi] + movdqu xmm5,XMMWORD[80+rsi] + mov rbx,rsi + mov rsi,rdx + movdqa XMMWORD[384+rsp],xmm0 + movdqa XMMWORD[(384+16)+rsp],xmm1 + movdqa XMMWORD[416+rsp],xmm2 + movdqa XMMWORD[(416+16)+rsp],xmm3 + movdqa XMMWORD[448+rsp],xmm4 + movdqa XMMWORD[(448+16)+rsp],xmm5 + por xmm5,xmm4 + + movdqu xmm0,XMMWORD[rsi] + pshufd xmm3,xmm5,0xb1 + movdqu xmm1,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + por xmm5,xmm3 + movdqu xmm3,XMMWORD[48+rsi] + mov rax,QWORD[((64+0))+rsi] + mov r14,QWORD[((64+8))+rsi] + mov r15,QWORD[((64+16))+rsi] + mov r8,QWORD[((64+24))+rsi] + movdqa XMMWORD[480+rsp],xmm0 + pshufd xmm4,xmm5,0x1e + movdqa XMMWORD[(480+16)+rsp],xmm1 + movdqu xmm0,XMMWORD[64+rsi] + movdqu xmm1,XMMWORD[80+rsi] + movdqa XMMWORD[512+rsp],xmm2 + movdqa XMMWORD[(512+16)+rsp],xmm3 + por xmm5,xmm4 + pxor xmm4,xmm4 + por xmm1,xmm0 +DB 102,72,15,110,199 + + lea rsi,[((64-0))+rsi] + mov QWORD[((544+0))+rsp],rax + mov QWORD[((544+8))+rsp],r14 + mov QWORD[((544+16))+rsp],r15 + mov QWORD[((544+24))+rsp],r8 + lea rdi,[96+rsp] + call __ecp_nistz256_sqr_montq + + pcmpeqd xmm5,xmm4 + pshufd xmm4,xmm1,0xb1 + por xmm4,xmm1 + pshufd xmm5,xmm5,0 + pshufd xmm3,xmm4,0x1e + por xmm4,xmm3 + pxor xmm3,xmm3 + pcmpeqd xmm4,xmm3 + pshufd xmm4,xmm4,0 + mov rax,QWORD[((64+0))+rbx] + mov r14,QWORD[((64+8))+rbx] + mov r15,QWORD[((64+16))+rbx] + mov r8,QWORD[((64+24))+rbx] +DB 102,72,15,110,203 + + lea rsi,[((64-0))+rbx] + lea rdi,[32+rsp] + call __ecp_nistz256_sqr_montq + + mov rax,QWORD[544+rsp] + lea rbx,[544+rsp] + mov r9,QWORD[((0+96))+rsp] + mov r10,QWORD[((8+96))+rsp] + lea rsi,[((0+96))+rsp] + mov r11,QWORD[((16+96))+rsp] + mov r12,QWORD[((24+96))+rsp] + lea rdi,[224+rsp] + call __ecp_nistz256_mul_montq + + mov rax,QWORD[448+rsp] + lea rbx,[448+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((0+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[256+rsp] + call __ecp_nistz256_mul_montq + + mov rax,QWORD[416+rsp] + lea rbx,[416+rsp] + mov r9,QWORD[((0+224))+rsp] + mov r10,QWORD[((8+224))+rsp] + lea rsi,[((0+224))+rsp] + mov r11,QWORD[((16+224))+rsp] + mov r12,QWORD[((24+224))+rsp] + lea rdi,[224+rsp] + call __ecp_nistz256_mul_montq + + mov rax,QWORD[512+rsp] + lea rbx,[512+rsp] + mov r9,QWORD[((0+256))+rsp] + mov r10,QWORD[((8+256))+rsp] + lea rsi,[((0+256))+rsp] + mov r11,QWORD[((16+256))+rsp] + mov r12,QWORD[((24+256))+rsp] + lea rdi,[256+rsp] + call __ecp_nistz256_mul_montq + + lea rbx,[224+rsp] + lea rdi,[64+rsp] + call __ecp_nistz256_sub_fromq + + or r12,r13 + movdqa xmm2,xmm4 + or r12,r8 + or r12,r9 + por xmm2,xmm5 +DB 102,73,15,110,220 + + mov rax,QWORD[384+rsp] + lea rbx,[384+rsp] + mov r9,QWORD[((0+96))+rsp] + mov r10,QWORD[((8+96))+rsp] + lea rsi,[((0+96))+rsp] + mov r11,QWORD[((16+96))+rsp] + mov r12,QWORD[((24+96))+rsp] + lea rdi,[160+rsp] + call __ecp_nistz256_mul_montq + + mov rax,QWORD[480+rsp] + lea rbx,[480+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((0+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[192+rsp] + call __ecp_nistz256_mul_montq + + lea rbx,[160+rsp] + lea rdi,[rsp] + call __ecp_nistz256_sub_fromq + + or r12,r13 + or r12,r8 + or r12,r9 + +DB 102,73,15,126,208 +DB 102,73,15,126,217 + + or r12,r8 + or r12,r9 + + +DB 0x3e + jnz NEAR $L$add_proceedq + +$L$add_doubleq: +DB 102,72,15,126,206 +DB 102,72,15,126,199 + add rsp,416 + + jmp NEAR $L$point_double_shortcutq + + +ALIGN 32 +$L$add_proceedq: + mov rax,QWORD[((0+64))+rsp] + mov r14,QWORD[((8+64))+rsp] + lea rsi,[((0+64))+rsp] + mov r15,QWORD[((16+64))+rsp] + mov r8,QWORD[((24+64))+rsp] + lea rdi,[96+rsp] + call __ecp_nistz256_sqr_montq + + mov rax,QWORD[448+rsp] + lea rbx,[448+rsp] + mov r9,QWORD[((0+0))+rsp] + mov r10,QWORD[((8+0))+rsp] + lea rsi,[((0+0))+rsp] + mov r11,QWORD[((16+0))+rsp] + mov r12,QWORD[((24+0))+rsp] + lea rdi,[352+rsp] + call __ecp_nistz256_mul_montq + + mov rax,QWORD[((0+0))+rsp] + mov r14,QWORD[((8+0))+rsp] + lea rsi,[((0+0))+rsp] + mov r15,QWORD[((16+0))+rsp] + mov r8,QWORD[((24+0))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_sqr_montq + + mov rax,QWORD[544+rsp] + lea rbx,[544+rsp] + mov r9,QWORD[((0+352))+rsp] + mov r10,QWORD[((8+352))+rsp] + lea rsi,[((0+352))+rsp] + mov r11,QWORD[((16+352))+rsp] + mov r12,QWORD[((24+352))+rsp] + lea rdi,[352+rsp] + call __ecp_nistz256_mul_montq + + mov rax,QWORD[rsp] + lea rbx,[rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((0+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[128+rsp] + call __ecp_nistz256_mul_montq + + mov rax,QWORD[160+rsp] + lea rbx,[160+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((0+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[192+rsp] + call __ecp_nistz256_mul_montq + + + + + xor r11,r11 + add r12,r12 + lea rsi,[96+rsp] + adc r13,r13 + mov rax,r12 + adc r8,r8 + adc r9,r9 + mov rbp,r13 + adc r11,0 + + sub r12,-1 + mov rcx,r8 + sbb r13,r14 + sbb r8,0 + mov r10,r9 + sbb r9,r15 + sbb r11,0 + + cmovc r12,rax + mov rax,QWORD[rsi] + cmovc r13,rbp + mov rbp,QWORD[8+rsi] + cmovc r8,rcx + mov rcx,QWORD[16+rsi] + cmovc r9,r10 + mov r10,QWORD[24+rsi] + + call __ecp_nistz256_subq + + lea rbx,[128+rsp] + lea rdi,[288+rsp] + call __ecp_nistz256_sub_fromq + + mov rax,QWORD[((192+0))+rsp] + mov rbp,QWORD[((192+8))+rsp] + mov rcx,QWORD[((192+16))+rsp] + mov r10,QWORD[((192+24))+rsp] + lea rdi,[320+rsp] + + call __ecp_nistz256_subq + + mov QWORD[rdi],r12 + mov QWORD[8+rdi],r13 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + mov rax,QWORD[128+rsp] + lea rbx,[128+rsp] + mov r9,QWORD[((0+224))+rsp] + mov r10,QWORD[((8+224))+rsp] + lea rsi,[((0+224))+rsp] + mov r11,QWORD[((16+224))+rsp] + mov r12,QWORD[((24+224))+rsp] + lea rdi,[256+rsp] + call __ecp_nistz256_mul_montq + + mov rax,QWORD[320+rsp] + lea rbx,[320+rsp] + mov r9,QWORD[((0+64))+rsp] + mov r10,QWORD[((8+64))+rsp] + lea rsi,[((0+64))+rsp] + mov r11,QWORD[((16+64))+rsp] + mov r12,QWORD[((24+64))+rsp] + lea rdi,[320+rsp] + call __ecp_nistz256_mul_montq + + lea rbx,[256+rsp] + lea rdi,[320+rsp] + call __ecp_nistz256_sub_fromq + +DB 102,72,15,126,199 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[352+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((352+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[544+rsp] + pand xmm3,XMMWORD[((544+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[448+rsp] + pand xmm3,XMMWORD[((448+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[64+rdi],xmm2 + movdqu XMMWORD[80+rdi],xmm3 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[288+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((288+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[480+rsp] + pand xmm3,XMMWORD[((480+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[384+rsp] + pand xmm3,XMMWORD[((384+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[rdi],xmm2 + movdqu XMMWORD[16+rdi],xmm3 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[320+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((320+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[512+rsp] + pand xmm3,XMMWORD[((512+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[416+rsp] + pand xmm3,XMMWORD[((416+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[32+rdi],xmm2 + movdqu XMMWORD[48+rdi],xmm3 + +$L$add_doneq: + lea rsi,[((576+56))+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbx,QWORD[((-16))+rsi] + + mov rbp,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$point_addq_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_point_add: +global ecp_nistz256_point_add_affine + +ALIGN 32 +ecp_nistz256_point_add_affine: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_point_add_affine: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + mov ecx,0x80100 + and ecx,DWORD[((OPENSSL_ia32cap_P+8))] + cmp ecx,0x80100 + je NEAR $L$point_add_affinex + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,32*15+8 + +$L$add_affineq_body: + + movdqu xmm0,XMMWORD[rsi] + mov rbx,rdx + movdqu xmm1,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + movdqu xmm3,XMMWORD[48+rsi] + movdqu xmm4,XMMWORD[64+rsi] + movdqu xmm5,XMMWORD[80+rsi] + mov rax,QWORD[((64+0))+rsi] + mov r14,QWORD[((64+8))+rsi] + mov r15,QWORD[((64+16))+rsi] + mov r8,QWORD[((64+24))+rsi] + movdqa XMMWORD[320+rsp],xmm0 + movdqa XMMWORD[(320+16)+rsp],xmm1 + movdqa XMMWORD[352+rsp],xmm2 + movdqa XMMWORD[(352+16)+rsp],xmm3 + movdqa XMMWORD[384+rsp],xmm4 + movdqa XMMWORD[(384+16)+rsp],xmm5 + por xmm5,xmm4 + + movdqu xmm0,XMMWORD[rbx] + pshufd xmm3,xmm5,0xb1 + movdqu xmm1,XMMWORD[16+rbx] + movdqu xmm2,XMMWORD[32+rbx] + por xmm5,xmm3 + movdqu xmm3,XMMWORD[48+rbx] + movdqa XMMWORD[416+rsp],xmm0 + pshufd xmm4,xmm5,0x1e + movdqa XMMWORD[(416+16)+rsp],xmm1 + por xmm1,xmm0 +DB 102,72,15,110,199 + movdqa XMMWORD[448+rsp],xmm2 + movdqa XMMWORD[(448+16)+rsp],xmm3 + por xmm3,xmm2 + por xmm5,xmm4 + pxor xmm4,xmm4 + por xmm3,xmm1 + + lea rsi,[((64-0))+rsi] + lea rdi,[32+rsp] + call __ecp_nistz256_sqr_montq + + pcmpeqd xmm5,xmm4 + pshufd xmm4,xmm3,0xb1 + mov rax,QWORD[rbx] + + mov r9,r12 + por xmm4,xmm3 + pshufd xmm5,xmm5,0 + pshufd xmm3,xmm4,0x1e + mov r10,r13 + por xmm4,xmm3 + pxor xmm3,xmm3 + mov r11,r14 + pcmpeqd xmm4,xmm3 + pshufd xmm4,xmm4,0 + + lea rsi,[((32-0))+rsp] + mov r12,r15 + lea rdi,[rsp] + call __ecp_nistz256_mul_montq + + lea rbx,[320+rsp] + lea rdi,[64+rsp] + call __ecp_nistz256_sub_fromq + + mov rax,QWORD[384+rsp] + lea rbx,[384+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((0+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_mul_montq + + mov rax,QWORD[384+rsp] + lea rbx,[384+rsp] + mov r9,QWORD[((0+64))+rsp] + mov r10,QWORD[((8+64))+rsp] + lea rsi,[((0+64))+rsp] + mov r11,QWORD[((16+64))+rsp] + mov r12,QWORD[((24+64))+rsp] + lea rdi,[288+rsp] + call __ecp_nistz256_mul_montq + + mov rax,QWORD[448+rsp] + lea rbx,[448+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((0+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_mul_montq + + lea rbx,[352+rsp] + lea rdi,[96+rsp] + call __ecp_nistz256_sub_fromq + + mov rax,QWORD[((0+64))+rsp] + mov r14,QWORD[((8+64))+rsp] + lea rsi,[((0+64))+rsp] + mov r15,QWORD[((16+64))+rsp] + mov r8,QWORD[((24+64))+rsp] + lea rdi,[128+rsp] + call __ecp_nistz256_sqr_montq + + mov rax,QWORD[((0+96))+rsp] + mov r14,QWORD[((8+96))+rsp] + lea rsi,[((0+96))+rsp] + mov r15,QWORD[((16+96))+rsp] + mov r8,QWORD[((24+96))+rsp] + lea rdi,[192+rsp] + call __ecp_nistz256_sqr_montq + + mov rax,QWORD[128+rsp] + lea rbx,[128+rsp] + mov r9,QWORD[((0+64))+rsp] + mov r10,QWORD[((8+64))+rsp] + lea rsi,[((0+64))+rsp] + mov r11,QWORD[((16+64))+rsp] + mov r12,QWORD[((24+64))+rsp] + lea rdi,[160+rsp] + call __ecp_nistz256_mul_montq + + mov rax,QWORD[320+rsp] + lea rbx,[320+rsp] + mov r9,QWORD[((0+128))+rsp] + mov r10,QWORD[((8+128))+rsp] + lea rsi,[((0+128))+rsp] + mov r11,QWORD[((16+128))+rsp] + mov r12,QWORD[((24+128))+rsp] + lea rdi,[rsp] + call __ecp_nistz256_mul_montq + + + + + xor r11,r11 + add r12,r12 + lea rsi,[192+rsp] + adc r13,r13 + mov rax,r12 + adc r8,r8 + adc r9,r9 + mov rbp,r13 + adc r11,0 + + sub r12,-1 + mov rcx,r8 + sbb r13,r14 + sbb r8,0 + mov r10,r9 + sbb r9,r15 + sbb r11,0 + + cmovc r12,rax + mov rax,QWORD[rsi] + cmovc r13,rbp + mov rbp,QWORD[8+rsi] + cmovc r8,rcx + mov rcx,QWORD[16+rsi] + cmovc r9,r10 + mov r10,QWORD[24+rsi] + + call __ecp_nistz256_subq + + lea rbx,[160+rsp] + lea rdi,[224+rsp] + call __ecp_nistz256_sub_fromq + + mov rax,QWORD[((0+0))+rsp] + mov rbp,QWORD[((0+8))+rsp] + mov rcx,QWORD[((0+16))+rsp] + mov r10,QWORD[((0+24))+rsp] + lea rdi,[64+rsp] + + call __ecp_nistz256_subq + + mov QWORD[rdi],r12 + mov QWORD[8+rdi],r13 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + mov rax,QWORD[352+rsp] + lea rbx,[352+rsp] + mov r9,QWORD[((0+160))+rsp] + mov r10,QWORD[((8+160))+rsp] + lea rsi,[((0+160))+rsp] + mov r11,QWORD[((16+160))+rsp] + mov r12,QWORD[((24+160))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_mul_montq + + mov rax,QWORD[96+rsp] + lea rbx,[96+rsp] + mov r9,QWORD[((0+64))+rsp] + mov r10,QWORD[((8+64))+rsp] + lea rsi,[((0+64))+rsp] + mov r11,QWORD[((16+64))+rsp] + mov r12,QWORD[((24+64))+rsp] + lea rdi,[64+rsp] + call __ecp_nistz256_mul_montq + + lea rbx,[32+rsp] + lea rdi,[256+rsp] + call __ecp_nistz256_sub_fromq + +DB 102,72,15,126,199 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[288+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((288+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[$L$ONE_mont] + pand xmm3,XMMWORD[(($L$ONE_mont+16))] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[384+rsp] + pand xmm3,XMMWORD[((384+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[64+rdi],xmm2 + movdqu XMMWORD[80+rdi],xmm3 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[224+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((224+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[416+rsp] + pand xmm3,XMMWORD[((416+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[320+rsp] + pand xmm3,XMMWORD[((320+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[rdi],xmm2 + movdqu XMMWORD[16+rdi],xmm3 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[256+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((256+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[448+rsp] + pand xmm3,XMMWORD[((448+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[352+rsp] + pand xmm3,XMMWORD[((352+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[32+rdi],xmm2 + movdqu XMMWORD[48+rdi],xmm3 + + lea rsi,[((480+56))+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbx,QWORD[((-16))+rsi] + + mov rbp,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$add_affineq_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_point_add_affine: + +ALIGN 32 +__ecp_nistz256_add_tox: + + xor r11,r11 + adc r12,QWORD[rbx] + adc r13,QWORD[8+rbx] + mov rax,r12 + adc r8,QWORD[16+rbx] + adc r9,QWORD[24+rbx] + mov rbp,r13 + adc r11,0 + + xor r10,r10 + sbb r12,-1 + mov rcx,r8 + sbb r13,r14 + sbb r8,0 + mov r10,r9 + sbb r9,r15 + sbb r11,0 + + cmovc r12,rax + cmovc r13,rbp + mov QWORD[rdi],r12 + cmovc r8,rcx + mov QWORD[8+rdi],r13 + cmovc r9,r10 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +__ecp_nistz256_sub_fromx: + + xor r11,r11 + sbb r12,QWORD[rbx] + sbb r13,QWORD[8+rbx] + mov rax,r12 + sbb r8,QWORD[16+rbx] + sbb r9,QWORD[24+rbx] + mov rbp,r13 + sbb r11,0 + + xor r10,r10 + adc r12,-1 + mov rcx,r8 + adc r13,r14 + adc r8,0 + mov r10,r9 + adc r9,r15 + + bt r11,0 + cmovnc r12,rax + cmovnc r13,rbp + mov QWORD[rdi],r12 + cmovnc r8,rcx + mov QWORD[8+rdi],r13 + cmovnc r9,r10 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +__ecp_nistz256_subx: + + xor r11,r11 + sbb rax,r12 + sbb rbp,r13 + mov r12,rax + sbb rcx,r8 + sbb r10,r9 + mov r13,rbp + sbb r11,0 + + xor r9,r9 + adc rax,-1 + mov r8,rcx + adc rbp,r14 + adc rcx,0 + mov r9,r10 + adc r10,r15 + + bt r11,0 + cmovc r12,rax + cmovc r13,rbp + cmovc r8,rcx + cmovc r9,r10 + + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +__ecp_nistz256_mul_by_2x: + + xor r11,r11 + adc r12,r12 + adc r13,r13 + mov rax,r12 + adc r8,r8 + adc r9,r9 + mov rbp,r13 + adc r11,0 + + xor r10,r10 + sbb r12,-1 + mov rcx,r8 + sbb r13,r14 + sbb r8,0 + mov r10,r9 + sbb r9,r15 + sbb r11,0 + + cmovc r12,rax + cmovc r13,rbp + mov QWORD[rdi],r12 + cmovc r8,rcx + mov QWORD[8+rdi],r13 + cmovc r9,r10 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +ecp_nistz256_point_doublex: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_point_doublex: + mov rdi,rcx + mov rsi,rdx + + + +$L$point_doublex: + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,32*5+8 + +$L$point_doublex_body: + +$L$point_double_shortcutx: + movdqu xmm0,XMMWORD[rsi] + mov rbx,rsi + movdqu xmm1,XMMWORD[16+rsi] + mov r12,QWORD[((32+0))+rsi] + mov r13,QWORD[((32+8))+rsi] + mov r8,QWORD[((32+16))+rsi] + mov r9,QWORD[((32+24))+rsi] + mov r14,QWORD[(($L$poly+8))] + mov r15,QWORD[(($L$poly+24))] + movdqa XMMWORD[96+rsp],xmm0 + movdqa XMMWORD[(96+16)+rsp],xmm1 + lea r10,[32+rdi] + lea r11,[64+rdi] +DB 102,72,15,110,199 +DB 102,73,15,110,202 +DB 102,73,15,110,211 + + lea rdi,[rsp] + call __ecp_nistz256_mul_by_2x + + mov rdx,QWORD[((64+0))+rsi] + mov r14,QWORD[((64+8))+rsi] + mov r15,QWORD[((64+16))+rsi] + mov r8,QWORD[((64+24))+rsi] + lea rsi,[((64-128))+rsi] + lea rdi,[64+rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[((0+0))+rsp] + mov r14,QWORD[((8+0))+rsp] + lea rsi,[((-128+0))+rsp] + mov r15,QWORD[((16+0))+rsp] + mov r8,QWORD[((24+0))+rsp] + lea rdi,[rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[32+rbx] + mov r9,QWORD[((64+0))+rbx] + mov r10,QWORD[((64+8))+rbx] + mov r11,QWORD[((64+16))+rbx] + mov r12,QWORD[((64+24))+rbx] + lea rsi,[((64-128))+rbx] + lea rbx,[32+rbx] +DB 102,72,15,126,215 + call __ecp_nistz256_mul_montx + call __ecp_nistz256_mul_by_2x + + mov r12,QWORD[((96+0))+rsp] + mov r13,QWORD[((96+8))+rsp] + lea rbx,[64+rsp] + mov r8,QWORD[((96+16))+rsp] + mov r9,QWORD[((96+24))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_add_tox + + mov r12,QWORD[((96+0))+rsp] + mov r13,QWORD[((96+8))+rsp] + lea rbx,[64+rsp] + mov r8,QWORD[((96+16))+rsp] + mov r9,QWORD[((96+24))+rsp] + lea rdi,[64+rsp] + call __ecp_nistz256_sub_fromx + + mov rdx,QWORD[((0+0))+rsp] + mov r14,QWORD[((8+0))+rsp] + lea rsi,[((-128+0))+rsp] + mov r15,QWORD[((16+0))+rsp] + mov r8,QWORD[((24+0))+rsp] +DB 102,72,15,126,207 + call __ecp_nistz256_sqr_montx + xor r9,r9 + mov rax,r12 + add r12,-1 + mov r10,r13 + adc r13,rsi + mov rcx,r14 + adc r14,0 + mov r8,r15 + adc r15,rbp + adc r9,0 + xor rsi,rsi + test rax,1 + + cmovz r12,rax + cmovz r13,r10 + cmovz r14,rcx + cmovz r15,r8 + cmovz r9,rsi + + mov rax,r13 + shr r12,1 + shl rax,63 + mov r10,r14 + shr r13,1 + or r12,rax + shl r10,63 + mov rcx,r15 + shr r14,1 + or r13,r10 + shl rcx,63 + mov QWORD[rdi],r12 + shr r15,1 + mov QWORD[8+rdi],r13 + shl r9,63 + or r14,rcx + or r15,r9 + mov QWORD[16+rdi],r14 + mov QWORD[24+rdi],r15 + mov rdx,QWORD[64+rsp] + lea rbx,[64+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_mul_montx + + lea rdi,[128+rsp] + call __ecp_nistz256_mul_by_2x + + lea rbx,[32+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_add_tox + + mov rdx,QWORD[96+rsp] + lea rbx,[96+rsp] + mov r9,QWORD[((0+0))+rsp] + mov r10,QWORD[((8+0))+rsp] + lea rsi,[((-128+0))+rsp] + mov r11,QWORD[((16+0))+rsp] + mov r12,QWORD[((24+0))+rsp] + lea rdi,[rsp] + call __ecp_nistz256_mul_montx + + lea rdi,[128+rsp] + call __ecp_nistz256_mul_by_2x + + mov rdx,QWORD[((0+32))+rsp] + mov r14,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r15,QWORD[((16+32))+rsp] + mov r8,QWORD[((24+32))+rsp] +DB 102,72,15,126,199 + call __ecp_nistz256_sqr_montx + + lea rbx,[128+rsp] + mov r8,r14 + mov r9,r15 + mov r14,rsi + mov r15,rbp + call __ecp_nistz256_sub_fromx + + mov rax,QWORD[((0+0))+rsp] + mov rbp,QWORD[((0+8))+rsp] + mov rcx,QWORD[((0+16))+rsp] + mov r10,QWORD[((0+24))+rsp] + lea rdi,[rsp] + call __ecp_nistz256_subx + + mov rdx,QWORD[32+rsp] + lea rbx,[32+rsp] + mov r14,r12 + xor ecx,ecx + mov QWORD[((0+0))+rsp],r12 + mov r10,r13 + mov QWORD[((0+8))+rsp],r13 + cmovz r11,r8 + mov QWORD[((0+16))+rsp],r8 + lea rsi,[((0-128))+rsp] + cmovz r12,r9 + mov QWORD[((0+24))+rsp],r9 + mov r9,r14 + lea rdi,[rsp] + call __ecp_nistz256_mul_montx + +DB 102,72,15,126,203 +DB 102,72,15,126,207 + call __ecp_nistz256_sub_fromx + + lea rsi,[((160+56))+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbx,QWORD[((-16))+rsi] + + mov rbp,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$point_doublex_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_point_doublex: + +ALIGN 32 +ecp_nistz256_point_addx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_point_addx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$point_addx: + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,32*18+8 + +$L$point_addx_body: + + movdqu xmm0,XMMWORD[rsi] + movdqu xmm1,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + movdqu xmm3,XMMWORD[48+rsi] + movdqu xmm4,XMMWORD[64+rsi] + movdqu xmm5,XMMWORD[80+rsi] + mov rbx,rsi + mov rsi,rdx + movdqa XMMWORD[384+rsp],xmm0 + movdqa XMMWORD[(384+16)+rsp],xmm1 + movdqa XMMWORD[416+rsp],xmm2 + movdqa XMMWORD[(416+16)+rsp],xmm3 + movdqa XMMWORD[448+rsp],xmm4 + movdqa XMMWORD[(448+16)+rsp],xmm5 + por xmm5,xmm4 + + movdqu xmm0,XMMWORD[rsi] + pshufd xmm3,xmm5,0xb1 + movdqu xmm1,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + por xmm5,xmm3 + movdqu xmm3,XMMWORD[48+rsi] + mov rdx,QWORD[((64+0))+rsi] + mov r14,QWORD[((64+8))+rsi] + mov r15,QWORD[((64+16))+rsi] + mov r8,QWORD[((64+24))+rsi] + movdqa XMMWORD[480+rsp],xmm0 + pshufd xmm4,xmm5,0x1e + movdqa XMMWORD[(480+16)+rsp],xmm1 + movdqu xmm0,XMMWORD[64+rsi] + movdqu xmm1,XMMWORD[80+rsi] + movdqa XMMWORD[512+rsp],xmm2 + movdqa XMMWORD[(512+16)+rsp],xmm3 + por xmm5,xmm4 + pxor xmm4,xmm4 + por xmm1,xmm0 +DB 102,72,15,110,199 + + lea rsi,[((64-128))+rsi] + mov QWORD[((544+0))+rsp],rdx + mov QWORD[((544+8))+rsp],r14 + mov QWORD[((544+16))+rsp],r15 + mov QWORD[((544+24))+rsp],r8 + lea rdi,[96+rsp] + call __ecp_nistz256_sqr_montx + + pcmpeqd xmm5,xmm4 + pshufd xmm4,xmm1,0xb1 + por xmm4,xmm1 + pshufd xmm5,xmm5,0 + pshufd xmm3,xmm4,0x1e + por xmm4,xmm3 + pxor xmm3,xmm3 + pcmpeqd xmm4,xmm3 + pshufd xmm4,xmm4,0 + mov rdx,QWORD[((64+0))+rbx] + mov r14,QWORD[((64+8))+rbx] + mov r15,QWORD[((64+16))+rbx] + mov r8,QWORD[((64+24))+rbx] +DB 102,72,15,110,203 + + lea rsi,[((64-128))+rbx] + lea rdi,[32+rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[544+rsp] + lea rbx,[544+rsp] + mov r9,QWORD[((0+96))+rsp] + mov r10,QWORD[((8+96))+rsp] + lea rsi,[((-128+96))+rsp] + mov r11,QWORD[((16+96))+rsp] + mov r12,QWORD[((24+96))+rsp] + lea rdi,[224+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[448+rsp] + lea rbx,[448+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[256+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[416+rsp] + lea rbx,[416+rsp] + mov r9,QWORD[((0+224))+rsp] + mov r10,QWORD[((8+224))+rsp] + lea rsi,[((-128+224))+rsp] + mov r11,QWORD[((16+224))+rsp] + mov r12,QWORD[((24+224))+rsp] + lea rdi,[224+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[512+rsp] + lea rbx,[512+rsp] + mov r9,QWORD[((0+256))+rsp] + mov r10,QWORD[((8+256))+rsp] + lea rsi,[((-128+256))+rsp] + mov r11,QWORD[((16+256))+rsp] + mov r12,QWORD[((24+256))+rsp] + lea rdi,[256+rsp] + call __ecp_nistz256_mul_montx + + lea rbx,[224+rsp] + lea rdi,[64+rsp] + call __ecp_nistz256_sub_fromx + + or r12,r13 + movdqa xmm2,xmm4 + or r12,r8 + or r12,r9 + por xmm2,xmm5 +DB 102,73,15,110,220 + + mov rdx,QWORD[384+rsp] + lea rbx,[384+rsp] + mov r9,QWORD[((0+96))+rsp] + mov r10,QWORD[((8+96))+rsp] + lea rsi,[((-128+96))+rsp] + mov r11,QWORD[((16+96))+rsp] + mov r12,QWORD[((24+96))+rsp] + lea rdi,[160+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[480+rsp] + lea rbx,[480+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[192+rsp] + call __ecp_nistz256_mul_montx + + lea rbx,[160+rsp] + lea rdi,[rsp] + call __ecp_nistz256_sub_fromx + + or r12,r13 + or r12,r8 + or r12,r9 + +DB 102,73,15,126,208 +DB 102,73,15,126,217 + + or r12,r8 + or r12,r9 + + +DB 0x3e + jnz NEAR $L$add_proceedx + +$L$add_doublex: +DB 102,72,15,126,206 +DB 102,72,15,126,199 + add rsp,416 + + jmp NEAR $L$point_double_shortcutx + + +ALIGN 32 +$L$add_proceedx: + mov rdx,QWORD[((0+64))+rsp] + mov r14,QWORD[((8+64))+rsp] + lea rsi,[((-128+64))+rsp] + mov r15,QWORD[((16+64))+rsp] + mov r8,QWORD[((24+64))+rsp] + lea rdi,[96+rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[448+rsp] + lea rbx,[448+rsp] + mov r9,QWORD[((0+0))+rsp] + mov r10,QWORD[((8+0))+rsp] + lea rsi,[((-128+0))+rsp] + mov r11,QWORD[((16+0))+rsp] + mov r12,QWORD[((24+0))+rsp] + lea rdi,[352+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[((0+0))+rsp] + mov r14,QWORD[((8+0))+rsp] + lea rsi,[((-128+0))+rsp] + mov r15,QWORD[((16+0))+rsp] + mov r8,QWORD[((24+0))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[544+rsp] + lea rbx,[544+rsp] + mov r9,QWORD[((0+352))+rsp] + mov r10,QWORD[((8+352))+rsp] + lea rsi,[((-128+352))+rsp] + mov r11,QWORD[((16+352))+rsp] + mov r12,QWORD[((24+352))+rsp] + lea rdi,[352+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[rsp] + lea rbx,[rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[128+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[160+rsp] + lea rbx,[160+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[192+rsp] + call __ecp_nistz256_mul_montx + + + + + xor r11,r11 + add r12,r12 + lea rsi,[96+rsp] + adc r13,r13 + mov rax,r12 + adc r8,r8 + adc r9,r9 + mov rbp,r13 + adc r11,0 + + sub r12,-1 + mov rcx,r8 + sbb r13,r14 + sbb r8,0 + mov r10,r9 + sbb r9,r15 + sbb r11,0 + + cmovc r12,rax + mov rax,QWORD[rsi] + cmovc r13,rbp + mov rbp,QWORD[8+rsi] + cmovc r8,rcx + mov rcx,QWORD[16+rsi] + cmovc r9,r10 + mov r10,QWORD[24+rsi] + + call __ecp_nistz256_subx + + lea rbx,[128+rsp] + lea rdi,[288+rsp] + call __ecp_nistz256_sub_fromx + + mov rax,QWORD[((192+0))+rsp] + mov rbp,QWORD[((192+8))+rsp] + mov rcx,QWORD[((192+16))+rsp] + mov r10,QWORD[((192+24))+rsp] + lea rdi,[320+rsp] + + call __ecp_nistz256_subx + + mov QWORD[rdi],r12 + mov QWORD[8+rdi],r13 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + mov rdx,QWORD[128+rsp] + lea rbx,[128+rsp] + mov r9,QWORD[((0+224))+rsp] + mov r10,QWORD[((8+224))+rsp] + lea rsi,[((-128+224))+rsp] + mov r11,QWORD[((16+224))+rsp] + mov r12,QWORD[((24+224))+rsp] + lea rdi,[256+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[320+rsp] + lea rbx,[320+rsp] + mov r9,QWORD[((0+64))+rsp] + mov r10,QWORD[((8+64))+rsp] + lea rsi,[((-128+64))+rsp] + mov r11,QWORD[((16+64))+rsp] + mov r12,QWORD[((24+64))+rsp] + lea rdi,[320+rsp] + call __ecp_nistz256_mul_montx + + lea rbx,[256+rsp] + lea rdi,[320+rsp] + call __ecp_nistz256_sub_fromx + +DB 102,72,15,126,199 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[352+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((352+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[544+rsp] + pand xmm3,XMMWORD[((544+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[448+rsp] + pand xmm3,XMMWORD[((448+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[64+rdi],xmm2 + movdqu XMMWORD[80+rdi],xmm3 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[288+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((288+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[480+rsp] + pand xmm3,XMMWORD[((480+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[384+rsp] + pand xmm3,XMMWORD[((384+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[rdi],xmm2 + movdqu XMMWORD[16+rdi],xmm3 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[320+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((320+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[512+rsp] + pand xmm3,XMMWORD[((512+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[416+rsp] + pand xmm3,XMMWORD[((416+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[32+rdi],xmm2 + movdqu XMMWORD[48+rdi],xmm3 + +$L$add_donex: + lea rsi,[((576+56))+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbx,QWORD[((-16))+rsi] + + mov rbp,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$point_addx_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_point_addx: + +ALIGN 32 +ecp_nistz256_point_add_affinex: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_point_add_affinex: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$point_add_affinex: + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,32*15+8 + +$L$add_affinex_body: + + movdqu xmm0,XMMWORD[rsi] + mov rbx,rdx + movdqu xmm1,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + movdqu xmm3,XMMWORD[48+rsi] + movdqu xmm4,XMMWORD[64+rsi] + movdqu xmm5,XMMWORD[80+rsi] + mov rdx,QWORD[((64+0))+rsi] + mov r14,QWORD[((64+8))+rsi] + mov r15,QWORD[((64+16))+rsi] + mov r8,QWORD[((64+24))+rsi] + movdqa XMMWORD[320+rsp],xmm0 + movdqa XMMWORD[(320+16)+rsp],xmm1 + movdqa XMMWORD[352+rsp],xmm2 + movdqa XMMWORD[(352+16)+rsp],xmm3 + movdqa XMMWORD[384+rsp],xmm4 + movdqa XMMWORD[(384+16)+rsp],xmm5 + por xmm5,xmm4 + + movdqu xmm0,XMMWORD[rbx] + pshufd xmm3,xmm5,0xb1 + movdqu xmm1,XMMWORD[16+rbx] + movdqu xmm2,XMMWORD[32+rbx] + por xmm5,xmm3 + movdqu xmm3,XMMWORD[48+rbx] + movdqa XMMWORD[416+rsp],xmm0 + pshufd xmm4,xmm5,0x1e + movdqa XMMWORD[(416+16)+rsp],xmm1 + por xmm1,xmm0 +DB 102,72,15,110,199 + movdqa XMMWORD[448+rsp],xmm2 + movdqa XMMWORD[(448+16)+rsp],xmm3 + por xmm3,xmm2 + por xmm5,xmm4 + pxor xmm4,xmm4 + por xmm3,xmm1 + + lea rsi,[((64-128))+rsi] + lea rdi,[32+rsp] + call __ecp_nistz256_sqr_montx + + pcmpeqd xmm5,xmm4 + pshufd xmm4,xmm3,0xb1 + mov rdx,QWORD[rbx] + + mov r9,r12 + por xmm4,xmm3 + pshufd xmm5,xmm5,0 + pshufd xmm3,xmm4,0x1e + mov r10,r13 + por xmm4,xmm3 + pxor xmm3,xmm3 + mov r11,r14 + pcmpeqd xmm4,xmm3 + pshufd xmm4,xmm4,0 + + lea rsi,[((32-128))+rsp] + mov r12,r15 + lea rdi,[rsp] + call __ecp_nistz256_mul_montx + + lea rbx,[320+rsp] + lea rdi,[64+rsp] + call __ecp_nistz256_sub_fromx + + mov rdx,QWORD[384+rsp] + lea rbx,[384+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[384+rsp] + lea rbx,[384+rsp] + mov r9,QWORD[((0+64))+rsp] + mov r10,QWORD[((8+64))+rsp] + lea rsi,[((-128+64))+rsp] + mov r11,QWORD[((16+64))+rsp] + mov r12,QWORD[((24+64))+rsp] + lea rdi,[288+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[448+rsp] + lea rbx,[448+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_mul_montx + + lea rbx,[352+rsp] + lea rdi,[96+rsp] + call __ecp_nistz256_sub_fromx + + mov rdx,QWORD[((0+64))+rsp] + mov r14,QWORD[((8+64))+rsp] + lea rsi,[((-128+64))+rsp] + mov r15,QWORD[((16+64))+rsp] + mov r8,QWORD[((24+64))+rsp] + lea rdi,[128+rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[((0+96))+rsp] + mov r14,QWORD[((8+96))+rsp] + lea rsi,[((-128+96))+rsp] + mov r15,QWORD[((16+96))+rsp] + mov r8,QWORD[((24+96))+rsp] + lea rdi,[192+rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[128+rsp] + lea rbx,[128+rsp] + mov r9,QWORD[((0+64))+rsp] + mov r10,QWORD[((8+64))+rsp] + lea rsi,[((-128+64))+rsp] + mov r11,QWORD[((16+64))+rsp] + mov r12,QWORD[((24+64))+rsp] + lea rdi,[160+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[320+rsp] + lea rbx,[320+rsp] + mov r9,QWORD[((0+128))+rsp] + mov r10,QWORD[((8+128))+rsp] + lea rsi,[((-128+128))+rsp] + mov r11,QWORD[((16+128))+rsp] + mov r12,QWORD[((24+128))+rsp] + lea rdi,[rsp] + call __ecp_nistz256_mul_montx + + + + + xor r11,r11 + add r12,r12 + lea rsi,[192+rsp] + adc r13,r13 + mov rax,r12 + adc r8,r8 + adc r9,r9 + mov rbp,r13 + adc r11,0 + + sub r12,-1 + mov rcx,r8 + sbb r13,r14 + sbb r8,0 + mov r10,r9 + sbb r9,r15 + sbb r11,0 + + cmovc r12,rax + mov rax,QWORD[rsi] + cmovc r13,rbp + mov rbp,QWORD[8+rsi] + cmovc r8,rcx + mov rcx,QWORD[16+rsi] + cmovc r9,r10 + mov r10,QWORD[24+rsi] + + call __ecp_nistz256_subx + + lea rbx,[160+rsp] + lea rdi,[224+rsp] + call __ecp_nistz256_sub_fromx + + mov rax,QWORD[((0+0))+rsp] + mov rbp,QWORD[((0+8))+rsp] + mov rcx,QWORD[((0+16))+rsp] + mov r10,QWORD[((0+24))+rsp] + lea rdi,[64+rsp] + + call __ecp_nistz256_subx + + mov QWORD[rdi],r12 + mov QWORD[8+rdi],r13 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + mov rdx,QWORD[352+rsp] + lea rbx,[352+rsp] + mov r9,QWORD[((0+160))+rsp] + mov r10,QWORD[((8+160))+rsp] + lea rsi,[((-128+160))+rsp] + mov r11,QWORD[((16+160))+rsp] + mov r12,QWORD[((24+160))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[96+rsp] + lea rbx,[96+rsp] + mov r9,QWORD[((0+64))+rsp] + mov r10,QWORD[((8+64))+rsp] + lea rsi,[((-128+64))+rsp] + mov r11,QWORD[((16+64))+rsp] + mov r12,QWORD[((24+64))+rsp] + lea rdi,[64+rsp] + call __ecp_nistz256_mul_montx + + lea rbx,[32+rsp] + lea rdi,[256+rsp] + call __ecp_nistz256_sub_fromx + +DB 102,72,15,126,199 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[288+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((288+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[$L$ONE_mont] + pand xmm3,XMMWORD[(($L$ONE_mont+16))] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[384+rsp] + pand xmm3,XMMWORD[((384+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[64+rdi],xmm2 + movdqu XMMWORD[80+rdi],xmm3 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[224+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((224+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[416+rsp] + pand xmm3,XMMWORD[((416+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[320+rsp] + pand xmm3,XMMWORD[((320+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[rdi],xmm2 + movdqu XMMWORD[16+rdi],xmm3 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[256+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((256+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[448+rsp] + pand xmm3,XMMWORD[((448+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[352+rsp] + pand xmm3,XMMWORD[((352+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[32+rdi],xmm2 + movdqu XMMWORD[48+rdi],xmm3 + + lea rsi,[((480+56))+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbx,QWORD[((-16))+rsi] + + mov rbp,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$add_affinex_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_point_add_affinex: +EXTERN __imp_RtlVirtualUnwind + + +ALIGN 16 +short_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + lea rax,[16+rax] + + mov r12,QWORD[((-8))+rax] + mov r13,QWORD[((-16))+rax] + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + + jmp NEAR $L$common_seh_tail + + + +ALIGN 16 +full_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov r10d,DWORD[8+r11] + lea rax,[r10*1+rax] + + mov rbp,QWORD[((-8))+rax] + mov rbx,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_ecp_nistz256_mul_by_2 wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_mul_by_2 wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_mul_by_2 wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_div_by_2 wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_div_by_2 wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_div_by_2 wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_mul_by_3 wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_mul_by_3 wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_mul_by_3 wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_add wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_add wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_add wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_sub wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_sub wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_sub wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_neg wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_neg wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_neg wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_ord_mul_mont wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_ord_mul_mont wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_ord_mul_mont wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_ord_sqr_mont wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_ord_sqr_mont wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_ord_sqr_mont wrt ..imagebase + DD $L$SEH_begin_ecp_nistz256_ord_mul_montx wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_ord_mul_montx wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_ord_mul_montx wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_ord_sqr_montx wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_ord_sqr_montx wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_ord_sqr_montx wrt ..imagebase + DD $L$SEH_begin_ecp_nistz256_to_mont wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_to_mont wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_to_mont wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_mul_mont wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_mul_mont wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_mul_mont wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_sqr_mont wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_sqr_mont wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_sqr_mont wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_from_mont wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_from_mont wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_from_mont wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_gather_w5 wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_gather_w5 wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_gather_wX wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_gather_w7 wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_gather_w7 wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_gather_wX wrt ..imagebase + DD $L$SEH_begin_ecp_nistz256_avx2_gather_w5 wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_avx2_gather_w5 wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_avx2_gather_wX wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_avx2_gather_w7 wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_avx2_gather_w7 wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_avx2_gather_wX wrt ..imagebase + DD $L$SEH_begin_ecp_nistz256_point_double wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_double wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_double wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_point_add wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_add wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_add wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_point_add_affine wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_add_affine wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_add_affine wrt ..imagebase + DD $L$SEH_begin_ecp_nistz256_point_doublex wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_doublex wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_doublex wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_point_addx wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_addx wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_addx wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_point_add_affinex wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_add_affinex wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_add_affinex wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_ecp_nistz256_mul_by_2: +DB 9,0,0,0 + DD short_handler wrt ..imagebase + DD $L$mul_by_2_body wrt ..imagebase,$L$mul_by_2_epilogue wrt ..imagebase +$L$SEH_info_ecp_nistz256_div_by_2: +DB 9,0,0,0 + DD short_handler wrt ..imagebase + DD $L$div_by_2_body wrt ..imagebase,$L$div_by_2_epilogue wrt ..imagebase +$L$SEH_info_ecp_nistz256_mul_by_3: +DB 9,0,0,0 + DD short_handler wrt ..imagebase + DD $L$mul_by_3_body wrt ..imagebase,$L$mul_by_3_epilogue wrt ..imagebase +$L$SEH_info_ecp_nistz256_add: +DB 9,0,0,0 + DD short_handler wrt ..imagebase + DD $L$add_body wrt ..imagebase,$L$add_epilogue wrt ..imagebase +$L$SEH_info_ecp_nistz256_sub: +DB 9,0,0,0 + DD short_handler wrt ..imagebase + DD $L$sub_body wrt ..imagebase,$L$sub_epilogue wrt ..imagebase +$L$SEH_info_ecp_nistz256_neg: +DB 9,0,0,0 + DD short_handler wrt ..imagebase + DD $L$neg_body wrt ..imagebase,$L$neg_epilogue wrt ..imagebase +$L$SEH_info_ecp_nistz256_ord_mul_mont: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$ord_mul_body wrt ..imagebase,$L$ord_mul_epilogue wrt ..imagebase + DD 48,0 +$L$SEH_info_ecp_nistz256_ord_sqr_mont: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$ord_sqr_body wrt ..imagebase,$L$ord_sqr_epilogue wrt ..imagebase + DD 48,0 +$L$SEH_info_ecp_nistz256_ord_mul_montx: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$ord_mulx_body wrt ..imagebase,$L$ord_mulx_epilogue wrt ..imagebase + DD 48,0 +$L$SEH_info_ecp_nistz256_ord_sqr_montx: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$ord_sqrx_body wrt ..imagebase,$L$ord_sqrx_epilogue wrt ..imagebase + DD 48,0 +$L$SEH_info_ecp_nistz256_to_mont: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase + DD 48,0 +$L$SEH_info_ecp_nistz256_mul_mont: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase + DD 48,0 +$L$SEH_info_ecp_nistz256_sqr_mont: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$sqr_body wrt ..imagebase,$L$sqr_epilogue wrt ..imagebase + DD 48,0 +$L$SEH_info_ecp_nistz256_from_mont: +DB 9,0,0,0 + DD short_handler wrt ..imagebase + DD $L$from_body wrt ..imagebase,$L$from_epilogue wrt ..imagebase +$L$SEH_info_ecp_nistz256_gather_wX: +DB 0x01,0x33,0x16,0x00 +DB 0x33,0xf8,0x09,0x00 +DB 0x2e,0xe8,0x08,0x00 +DB 0x29,0xd8,0x07,0x00 +DB 0x24,0xc8,0x06,0x00 +DB 0x1f,0xb8,0x05,0x00 +DB 0x1a,0xa8,0x04,0x00 +DB 0x15,0x98,0x03,0x00 +DB 0x10,0x88,0x02,0x00 +DB 0x0c,0x78,0x01,0x00 +DB 0x08,0x68,0x00,0x00 +DB 0x04,0x01,0x15,0x00 +ALIGN 8 +$L$SEH_info_ecp_nistz256_avx2_gather_wX: +DB 0x01,0x36,0x17,0x0b +DB 0x36,0xf8,0x09,0x00 +DB 0x31,0xe8,0x08,0x00 +DB 0x2c,0xd8,0x07,0x00 +DB 0x27,0xc8,0x06,0x00 +DB 0x22,0xb8,0x05,0x00 +DB 0x1d,0xa8,0x04,0x00 +DB 0x18,0x98,0x03,0x00 +DB 0x13,0x88,0x02,0x00 +DB 0x0e,0x78,0x01,0x00 +DB 0x09,0x68,0x00,0x00 +DB 0x04,0x01,0x15,0x00 +DB 0x00,0xb3,0x00,0x00 +ALIGN 8 +$L$SEH_info_ecp_nistz256_point_double: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$point_doubleq_body wrt ..imagebase,$L$point_doubleq_epilogue wrt ..imagebase + DD 32*5+56,0 +$L$SEH_info_ecp_nistz256_point_add: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$point_addq_body wrt ..imagebase,$L$point_addq_epilogue wrt ..imagebase + DD 32*18+56,0 +$L$SEH_info_ecp_nistz256_point_add_affine: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$add_affineq_body wrt ..imagebase,$L$add_affineq_epilogue wrt ..imagebase + DD 32*15+56,0 +ALIGN 8 +$L$SEH_info_ecp_nistz256_point_doublex: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$point_doublex_body wrt ..imagebase,$L$point_doublex_epilogue wrt ..imagebase + DD 32*5+56,0 +$L$SEH_info_ecp_nistz256_point_addx: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$point_addx_body wrt ..imagebase,$L$point_addx_epilogue wrt ..imagebase + DD 32*18+56,0 +$L$SEH_info_ecp_nistz256_point_add_affinex: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$add_affinex_body wrt ..imagebase,$L$add_affinex_epilogue wrt ..imagebase + DD 32*15+56,0 diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/ec/x25519-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/ec/x25519-x86_64.asm new file mode 100644 index 0000000..d6c6312 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/ec/x25519-x86_64.asm @@ -0,0 +1,1064 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global x25519_fe51_mul + +ALIGN 32 +x25519_fe51_mul: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_x25519_fe51_mul: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-40))+rsp] + +$L$fe51_mul_body: + + mov rax,QWORD[rsi] + mov r11,QWORD[rdx] + mov r12,QWORD[8+rdx] + mov r13,QWORD[16+rdx] + mov rbp,QWORD[24+rdx] + mov r14,QWORD[32+rdx] + + mov QWORD[32+rsp],rdi + mov rdi,rax + mul r11 + mov QWORD[rsp],r11 + mov rbx,rax + mov rax,rdi + mov rcx,rdx + mul r12 + mov QWORD[8+rsp],r12 + mov r8,rax + mov rax,rdi + lea r15,[r14*8+r14] + mov r9,rdx + mul r13 + mov QWORD[16+rsp],r13 + mov r10,rax + mov rax,rdi + lea rdi,[r15*2+r14] + mov r11,rdx + mul rbp + mov r12,rax + mov rax,QWORD[rsi] + mov r13,rdx + mul r14 + mov r14,rax + mov rax,QWORD[8+rsi] + mov r15,rdx + + mul rdi + add rbx,rax + mov rax,QWORD[16+rsi] + adc rcx,rdx + mul rdi + add r8,rax + mov rax,QWORD[24+rsi] + adc r9,rdx + mul rdi + add r10,rax + mov rax,QWORD[32+rsi] + adc r11,rdx + mul rdi + imul rdi,rbp,19 + add r12,rax + mov rax,QWORD[8+rsi] + adc r13,rdx + mul rbp + mov rbp,QWORD[16+rsp] + add r14,rax + mov rax,QWORD[16+rsi] + adc r15,rdx + + mul rdi + add rbx,rax + mov rax,QWORD[24+rsi] + adc rcx,rdx + mul rdi + add r8,rax + mov rax,QWORD[32+rsi] + adc r9,rdx + mul rdi + imul rdi,rbp,19 + add r10,rax + mov rax,QWORD[8+rsi] + adc r11,rdx + mul rbp + add r12,rax + mov rax,QWORD[16+rsi] + adc r13,rdx + mul rbp + mov rbp,QWORD[8+rsp] + add r14,rax + mov rax,QWORD[24+rsi] + adc r15,rdx + + mul rdi + add rbx,rax + mov rax,QWORD[32+rsi] + adc rcx,rdx + mul rdi + add r8,rax + mov rax,QWORD[8+rsi] + adc r9,rdx + mul rbp + imul rdi,rbp,19 + add r10,rax + mov rax,QWORD[16+rsi] + adc r11,rdx + mul rbp + add r12,rax + mov rax,QWORD[24+rsi] + adc r13,rdx + mul rbp + mov rbp,QWORD[rsp] + add r14,rax + mov rax,QWORD[32+rsi] + adc r15,rdx + + mul rdi + add rbx,rax + mov rax,QWORD[8+rsi] + adc rcx,rdx + mul rbp + add r8,rax + mov rax,QWORD[16+rsi] + adc r9,rdx + mul rbp + add r10,rax + mov rax,QWORD[24+rsi] + adc r11,rdx + mul rbp + add r12,rax + mov rax,QWORD[32+rsi] + adc r13,rdx + mul rbp + add r14,rax + adc r15,rdx + + mov rdi,QWORD[32+rsp] + jmp NEAR $L$reduce51 +$L$fe51_mul_epilogue: + +$L$SEH_end_x25519_fe51_mul: + +global x25519_fe51_sqr + +ALIGN 32 +x25519_fe51_sqr: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_x25519_fe51_sqr: + mov rdi,rcx + mov rsi,rdx + + + + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-40))+rsp] + +$L$fe51_sqr_body: + + mov rax,QWORD[rsi] + mov r15,QWORD[16+rsi] + mov rbp,QWORD[32+rsi] + + mov QWORD[32+rsp],rdi + lea r14,[rax*1+rax] + mul rax + mov rbx,rax + mov rax,QWORD[8+rsi] + mov rcx,rdx + mul r14 + mov r8,rax + mov rax,r15 + mov QWORD[rsp],r15 + mov r9,rdx + mul r14 + mov r10,rax + mov rax,QWORD[24+rsi] + mov r11,rdx + imul rdi,rbp,19 + mul r14 + mov r12,rax + mov rax,rbp + mov r13,rdx + mul r14 + mov r14,rax + mov rax,rbp + mov r15,rdx + + mul rdi + add r12,rax + mov rax,QWORD[8+rsi] + adc r13,rdx + + mov rsi,QWORD[24+rsi] + lea rbp,[rax*1+rax] + mul rax + add r10,rax + mov rax,QWORD[rsp] + adc r11,rdx + mul rbp + add r12,rax + mov rax,rbp + adc r13,rdx + mul rsi + add r14,rax + mov rax,rbp + adc r15,rdx + imul rbp,rsi,19 + mul rdi + add rbx,rax + lea rax,[rsi*1+rsi] + adc rcx,rdx + + mul rdi + add r10,rax + mov rax,rsi + adc r11,rdx + mul rbp + add r8,rax + mov rax,QWORD[rsp] + adc r9,rdx + + lea rsi,[rax*1+rax] + mul rax + add r14,rax + mov rax,rbp + adc r15,rdx + mul rsi + add rbx,rax + mov rax,rsi + adc rcx,rdx + mul rdi + add r8,rax + adc r9,rdx + + mov rdi,QWORD[32+rsp] + jmp NEAR $L$reduce51 + +ALIGN 32 +$L$reduce51: + mov rbp,0x7ffffffffffff + + mov rdx,r10 + shr r10,51 + shl r11,13 + and rdx,rbp + or r11,r10 + add r12,r11 + adc r13,0 + + mov rax,rbx + shr rbx,51 + shl rcx,13 + and rax,rbp + or rcx,rbx + add r8,rcx + adc r9,0 + + mov rbx,r12 + shr r12,51 + shl r13,13 + and rbx,rbp + or r13,r12 + add r14,r13 + adc r15,0 + + mov rcx,r8 + shr r8,51 + shl r9,13 + and rcx,rbp + or r9,r8 + add rdx,r9 + + mov r10,r14 + shr r14,51 + shl r15,13 + and r10,rbp + or r15,r14 + + lea r14,[r15*8+r15] + lea r15,[r14*2+r15] + add rax,r15 + + mov r8,rdx + and rdx,rbp + shr r8,51 + add rbx,r8 + + mov r9,rax + and rax,rbp + shr r9,51 + add rcx,r9 + + mov QWORD[rdi],rax + mov QWORD[8+rdi],rcx + mov QWORD[16+rdi],rdx + mov QWORD[24+rdi],rbx + mov QWORD[32+rdi],r10 + + mov r15,QWORD[40+rsp] + + mov r14,QWORD[48+rsp] + + mov r13,QWORD[56+rsp] + + mov r12,QWORD[64+rsp] + + mov rbx,QWORD[72+rsp] + + mov rbp,QWORD[80+rsp] + + lea rsp,[88+rsp] + +$L$fe51_sqr_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_x25519_fe51_sqr: + +global x25519_fe51_mul121666 + +ALIGN 32 +x25519_fe51_mul121666: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_x25519_fe51_mul121666: + mov rdi,rcx + mov rsi,rdx + + + + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-40))+rsp] + +$L$fe51_mul121666_body: + mov eax,121666 + + mul QWORD[rsi] + mov rbx,rax + mov eax,121666 + mov rcx,rdx + mul QWORD[8+rsi] + mov r8,rax + mov eax,121666 + mov r9,rdx + mul QWORD[16+rsi] + mov r10,rax + mov eax,121666 + mov r11,rdx + mul QWORD[24+rsi] + mov r12,rax + mov eax,121666 + mov r13,rdx + mul QWORD[32+rsi] + mov r14,rax + mov r15,rdx + + jmp NEAR $L$reduce51 +$L$fe51_mul121666_epilogue: + +$L$SEH_end_x25519_fe51_mul121666: +EXTERN OPENSSL_ia32cap_P +global x25519_fe64_eligible + +ALIGN 32 +x25519_fe64_eligible: + + mov ecx,DWORD[((OPENSSL_ia32cap_P+8))] + xor eax,eax + and ecx,0x80100 + cmp ecx,0x80100 + cmove eax,ecx + DB 0F3h,0C3h ;repret + + + +global x25519_fe64_mul + +ALIGN 32 +x25519_fe64_mul: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_x25519_fe64_mul: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + push rdi + + lea rsp,[((-16))+rsp] + +$L$fe64_mul_body: + + mov rax,rdx + mov rbp,QWORD[rdx] + mov rdx,QWORD[rsi] + mov rcx,QWORD[8+rax] + mov r14,QWORD[16+rax] + mov r15,QWORD[24+rax] + + mulx rax,r8,rbp + xor edi,edi + mulx rbx,r9,rcx + adcx r9,rax + mulx rax,r10,r14 + adcx r10,rbx + mulx r12,r11,r15 + mov rdx,QWORD[8+rsi] + adcx r11,rax + mov QWORD[rsp],r14 + adcx r12,rdi + + mulx rbx,rax,rbp + adox r9,rax + adcx r10,rbx + mulx rbx,rax,rcx + adox r10,rax + adcx r11,rbx + mulx rbx,rax,r14 + adox r11,rax + adcx r12,rbx + mulx r13,rax,r15 + mov rdx,QWORD[16+rsi] + adox r12,rax + adcx r13,rdi + adox r13,rdi + + mulx rbx,rax,rbp + adcx r10,rax + adox r11,rbx + mulx rbx,rax,rcx + adcx r11,rax + adox r12,rbx + mulx rbx,rax,r14 + adcx r12,rax + adox r13,rbx + mulx r14,rax,r15 + mov rdx,QWORD[24+rsi] + adcx r13,rax + adox r14,rdi + adcx r14,rdi + + mulx rbx,rax,rbp + adox r11,rax + adcx r12,rbx + mulx rbx,rax,rcx + adox r12,rax + adcx r13,rbx + mulx rbx,rax,QWORD[rsp] + adox r13,rax + adcx r14,rbx + mulx r15,rax,r15 + mov edx,38 + adox r14,rax + adcx r15,rdi + adox r15,rdi + + jmp NEAR $L$reduce64 +$L$fe64_mul_epilogue: + +$L$SEH_end_x25519_fe64_mul: + +global x25519_fe64_sqr + +ALIGN 32 +x25519_fe64_sqr: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_x25519_fe64_sqr: + mov rdi,rcx + mov rsi,rdx + + + + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + push rdi + + lea rsp,[((-16))+rsp] + +$L$fe64_sqr_body: + + mov rdx,QWORD[rsi] + mov rcx,QWORD[8+rsi] + mov rbp,QWORD[16+rsi] + mov rsi,QWORD[24+rsi] + + + mulx r15,r8,rdx + mulx rax,r9,rcx + xor edi,edi + mulx rbx,r10,rbp + adcx r10,rax + mulx r12,r11,rsi + mov rdx,rcx + adcx r11,rbx + adcx r12,rdi + + + mulx rbx,rax,rbp + adox r11,rax + adcx r12,rbx + mulx r13,rax,rsi + mov rdx,rbp + adox r12,rax + adcx r13,rdi + + + mulx r14,rax,rsi + mov rdx,rcx + adox r13,rax + adcx r14,rdi + adox r14,rdi + + adcx r9,r9 + adox r9,r15 + adcx r10,r10 + mulx rbx,rax,rdx + mov rdx,rbp + adcx r11,r11 + adox r10,rax + adcx r12,r12 + adox r11,rbx + mulx rbx,rax,rdx + mov rdx,rsi + adcx r13,r13 + adox r12,rax + adcx r14,r14 + adox r13,rbx + mulx r15,rax,rdx + mov edx,38 + adox r14,rax + adcx r15,rdi + adox r15,rdi + jmp NEAR $L$reduce64 + +ALIGN 32 +$L$reduce64: + mulx rbx,rax,r12 + adcx r8,rax + adox r9,rbx + mulx rbx,rax,r13 + adcx r9,rax + adox r10,rbx + mulx rbx,rax,r14 + adcx r10,rax + adox r11,rbx + mulx r12,rax,r15 + adcx r11,rax + adox r12,rdi + adcx r12,rdi + + mov rdi,QWORD[16+rsp] + imul r12,rdx + + add r8,r12 + adc r9,0 + adc r10,0 + adc r11,0 + + sbb rax,rax + and rax,38 + + add r8,rax + mov QWORD[8+rdi],r9 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + mov QWORD[rdi],r8 + + mov r15,QWORD[24+rsp] + + mov r14,QWORD[32+rsp] + + mov r13,QWORD[40+rsp] + + mov r12,QWORD[48+rsp] + + mov rbx,QWORD[56+rsp] + + mov rbp,QWORD[64+rsp] + + lea rsp,[72+rsp] + +$L$fe64_sqr_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_x25519_fe64_sqr: + +global x25519_fe64_mul121666 + +ALIGN 32 +x25519_fe64_mul121666: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_x25519_fe64_mul121666: + mov rdi,rcx + mov rsi,rdx + + +$L$fe64_mul121666_body: + + mov edx,121666 + mulx rcx,r8,QWORD[rsi] + mulx rax,r9,QWORD[8+rsi] + add r9,rcx + mulx rcx,r10,QWORD[16+rsi] + adc r10,rax + mulx rax,r11,QWORD[24+rsi] + adc r11,rcx + adc rax,0 + + imul rax,rax,38 + + add r8,rax + adc r9,0 + adc r10,0 + adc r11,0 + + sbb rax,rax + and rax,38 + + add r8,rax + mov QWORD[8+rdi],r9 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + mov QWORD[rdi],r8 + +$L$fe64_mul121666_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_x25519_fe64_mul121666: + +global x25519_fe64_add + +ALIGN 32 +x25519_fe64_add: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_x25519_fe64_add: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + +$L$fe64_add_body: + + mov r8,QWORD[rsi] + mov r9,QWORD[8+rsi] + mov r10,QWORD[16+rsi] + mov r11,QWORD[24+rsi] + + add r8,QWORD[rdx] + adc r9,QWORD[8+rdx] + adc r10,QWORD[16+rdx] + adc r11,QWORD[24+rdx] + + sbb rax,rax + and rax,38 + + add r8,rax + adc r9,0 + adc r10,0 + mov QWORD[8+rdi],r9 + adc r11,0 + mov QWORD[16+rdi],r10 + sbb rax,rax + mov QWORD[24+rdi],r11 + and rax,38 + + add r8,rax + mov QWORD[rdi],r8 + +$L$fe64_add_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_x25519_fe64_add: + +global x25519_fe64_sub + +ALIGN 32 +x25519_fe64_sub: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_x25519_fe64_sub: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + +$L$fe64_sub_body: + + mov r8,QWORD[rsi] + mov r9,QWORD[8+rsi] + mov r10,QWORD[16+rsi] + mov r11,QWORD[24+rsi] + + sub r8,QWORD[rdx] + sbb r9,QWORD[8+rdx] + sbb r10,QWORD[16+rdx] + sbb r11,QWORD[24+rdx] + + sbb rax,rax + and rax,38 + + sub r8,rax + sbb r9,0 + sbb r10,0 + mov QWORD[8+rdi],r9 + sbb r11,0 + mov QWORD[16+rdi],r10 + sbb rax,rax + mov QWORD[24+rdi],r11 + and rax,38 + + sub r8,rax + mov QWORD[rdi],r8 + +$L$fe64_sub_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_x25519_fe64_sub: + +global x25519_fe64_tobytes + +ALIGN 32 +x25519_fe64_tobytes: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_x25519_fe64_tobytes: + mov rdi,rcx + mov rsi,rdx + + +$L$fe64_to_body: + + mov r8,QWORD[rsi] + mov r9,QWORD[8+rsi] + mov r10,QWORD[16+rsi] + mov r11,QWORD[24+rsi] + + + lea rax,[r11*1+r11] + sar r11,63 + shr rax,1 + and r11,19 + add r11,19 + + add r8,r11 + adc r9,0 + adc r10,0 + adc rax,0 + + lea r11,[rax*1+rax] + sar rax,63 + shr r11,1 + not rax + and rax,19 + + sub r8,rax + sbb r9,0 + sbb r10,0 + sbb r11,0 + + mov QWORD[rdi],r8 + mov QWORD[8+rdi],r9 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + +$L$fe64_to_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_x25519_fe64_tobytes: +DB 88,50,53,53,49,57,32,112,114,105,109,105,116,105,118,101 +DB 115,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82 +DB 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 +DB 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +EXTERN __imp_RtlVirtualUnwind + + +ALIGN 16 +short_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + jmp NEAR $L$common_seh_tail + + + +ALIGN 16 +full_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov r10d,DWORD[8+r11] + lea rax,[r10*1+rax] + + mov rbp,QWORD[((-8))+rax] + mov rbx,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_x25519_fe51_mul wrt ..imagebase + DD $L$SEH_end_x25519_fe51_mul wrt ..imagebase + DD $L$SEH_info_x25519_fe51_mul wrt ..imagebase + + DD $L$SEH_begin_x25519_fe51_sqr wrt ..imagebase + DD $L$SEH_end_x25519_fe51_sqr wrt ..imagebase + DD $L$SEH_info_x25519_fe51_sqr wrt ..imagebase + + DD $L$SEH_begin_x25519_fe51_mul121666 wrt ..imagebase + DD $L$SEH_end_x25519_fe51_mul121666 wrt ..imagebase + DD $L$SEH_info_x25519_fe51_mul121666 wrt ..imagebase + DD $L$SEH_begin_x25519_fe64_mul wrt ..imagebase + DD $L$SEH_end_x25519_fe64_mul wrt ..imagebase + DD $L$SEH_info_x25519_fe64_mul wrt ..imagebase + + DD $L$SEH_begin_x25519_fe64_sqr wrt ..imagebase + DD $L$SEH_end_x25519_fe64_sqr wrt ..imagebase + DD $L$SEH_info_x25519_fe64_sqr wrt ..imagebase + + DD $L$SEH_begin_x25519_fe64_mul121666 wrt ..imagebase + DD $L$SEH_end_x25519_fe64_mul121666 wrt ..imagebase + DD $L$SEH_info_x25519_fe64_mul121666 wrt ..imagebase + + DD $L$SEH_begin_x25519_fe64_add wrt ..imagebase + DD $L$SEH_end_x25519_fe64_add wrt ..imagebase + DD $L$SEH_info_x25519_fe64_add wrt ..imagebase + + DD $L$SEH_begin_x25519_fe64_sub wrt ..imagebase + DD $L$SEH_end_x25519_fe64_sub wrt ..imagebase + DD $L$SEH_info_x25519_fe64_sub wrt ..imagebase + + DD $L$SEH_begin_x25519_fe64_tobytes wrt ..imagebase + DD $L$SEH_end_x25519_fe64_tobytes wrt ..imagebase + DD $L$SEH_info_x25519_fe64_tobytes wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_x25519_fe51_mul: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$fe51_mul_body wrt ..imagebase,$L$fe51_mul_epilogue wrt ..imagebase + DD 88,0 +$L$SEH_info_x25519_fe51_sqr: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$fe51_sqr_body wrt ..imagebase,$L$fe51_sqr_epilogue wrt ..imagebase + DD 88,0 +$L$SEH_info_x25519_fe51_mul121666: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$fe51_mul121666_body wrt ..imagebase,$L$fe51_mul121666_epilogue wrt ..imagebase + DD 88,0 +$L$SEH_info_x25519_fe64_mul: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$fe64_mul_body wrt ..imagebase,$L$fe64_mul_epilogue wrt ..imagebase + DD 72,0 +$L$SEH_info_x25519_fe64_sqr: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$fe64_sqr_body wrt ..imagebase,$L$fe64_sqr_epilogue wrt ..imagebase + DD 72,0 +$L$SEH_info_x25519_fe64_mul121666: +DB 9,0,0,0 + DD short_handler wrt ..imagebase + DD $L$fe64_mul121666_body wrt ..imagebase,$L$fe64_mul121666_epilogue wrt ..imagebase +$L$SEH_info_x25519_fe64_add: +DB 9,0,0,0 + DD short_handler wrt ..imagebase + DD $L$fe64_add_body wrt ..imagebase,$L$fe64_add_epilogue wrt ..imagebase +$L$SEH_info_x25519_fe64_sub: +DB 9,0,0,0 + DD short_handler wrt ..imagebase + DD $L$fe64_sub_body wrt ..imagebase,$L$fe64_sub_epilogue wrt ..imagebase +$L$SEH_info_x25519_fe64_tobytes: +DB 9,0,0,0 + DD short_handler wrt ..imagebase + DD $L$fe64_to_body wrt ..imagebase,$L$fe64_to_epilogue wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/md5/md5-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/md5/md5-x86_64.asm new file mode 100644 index 0000000..3fd3391 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/md5/md5-x86_64.asm @@ -0,0 +1,786 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +ALIGN 16 + +global md5_block_asm_data_order + +md5_block_asm_data_order: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_md5_block_asm_data_order: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + push rbp + + push rbx + + push r12 + + push r14 + + push r15 + +$L$prologue: + + + + + mov rbp,rdi + shl rdx,6 + lea rdi,[rdx*1+rsi] + mov eax,DWORD[rbp] + mov ebx,DWORD[4+rbp] + mov ecx,DWORD[8+rbp] + mov edx,DWORD[12+rbp] + + + + + + + + cmp rsi,rdi + je NEAR $L$end + + +$L$loop: + mov r8d,eax + mov r9d,ebx + mov r14d,ecx + mov r15d,edx + mov r10d,DWORD[rsi] + mov r11d,edx + xor r11d,ecx + lea eax,[((-680876936))+r10*1+rax] + and r11d,ebx + mov r10d,DWORD[4+rsi] + xor r11d,edx + add eax,r11d + rol eax,7 + mov r11d,ecx + add eax,ebx + xor r11d,ebx + lea edx,[((-389564586))+r10*1+rdx] + and r11d,eax + mov r10d,DWORD[8+rsi] + xor r11d,ecx + add edx,r11d + rol edx,12 + mov r11d,ebx + add edx,eax + xor r11d,eax + lea ecx,[606105819+r10*1+rcx] + and r11d,edx + mov r10d,DWORD[12+rsi] + xor r11d,ebx + add ecx,r11d + rol ecx,17 + mov r11d,eax + add ecx,edx + xor r11d,edx + lea ebx,[((-1044525330))+r10*1+rbx] + and r11d,ecx + mov r10d,DWORD[16+rsi] + xor r11d,eax + add ebx,r11d + rol ebx,22 + mov r11d,edx + add ebx,ecx + xor r11d,ecx + lea eax,[((-176418897))+r10*1+rax] + and r11d,ebx + mov r10d,DWORD[20+rsi] + xor r11d,edx + add eax,r11d + rol eax,7 + mov r11d,ecx + add eax,ebx + xor r11d,ebx + lea edx,[1200080426+r10*1+rdx] + and r11d,eax + mov r10d,DWORD[24+rsi] + xor r11d,ecx + add edx,r11d + rol edx,12 + mov r11d,ebx + add edx,eax + xor r11d,eax + lea ecx,[((-1473231341))+r10*1+rcx] + and r11d,edx + mov r10d,DWORD[28+rsi] + xor r11d,ebx + add ecx,r11d + rol ecx,17 + mov r11d,eax + add ecx,edx + xor r11d,edx + lea ebx,[((-45705983))+r10*1+rbx] + and r11d,ecx + mov r10d,DWORD[32+rsi] + xor r11d,eax + add ebx,r11d + rol ebx,22 + mov r11d,edx + add ebx,ecx + xor r11d,ecx + lea eax,[1770035416+r10*1+rax] + and r11d,ebx + mov r10d,DWORD[36+rsi] + xor r11d,edx + add eax,r11d + rol eax,7 + mov r11d,ecx + add eax,ebx + xor r11d,ebx + lea edx,[((-1958414417))+r10*1+rdx] + and r11d,eax + mov r10d,DWORD[40+rsi] + xor r11d,ecx + add edx,r11d + rol edx,12 + mov r11d,ebx + add edx,eax + xor r11d,eax + lea ecx,[((-42063))+r10*1+rcx] + and r11d,edx + mov r10d,DWORD[44+rsi] + xor r11d,ebx + add ecx,r11d + rol ecx,17 + mov r11d,eax + add ecx,edx + xor r11d,edx + lea ebx,[((-1990404162))+r10*1+rbx] + and r11d,ecx + mov r10d,DWORD[48+rsi] + xor r11d,eax + add ebx,r11d + rol ebx,22 + mov r11d,edx + add ebx,ecx + xor r11d,ecx + lea eax,[1804603682+r10*1+rax] + and r11d,ebx + mov r10d,DWORD[52+rsi] + xor r11d,edx + add eax,r11d + rol eax,7 + mov r11d,ecx + add eax,ebx + xor r11d,ebx + lea edx,[((-40341101))+r10*1+rdx] + and r11d,eax + mov r10d,DWORD[56+rsi] + xor r11d,ecx + add edx,r11d + rol edx,12 + mov r11d,ebx + add edx,eax + xor r11d,eax + lea ecx,[((-1502002290))+r10*1+rcx] + and r11d,edx + mov r10d,DWORD[60+rsi] + xor r11d,ebx + add ecx,r11d + rol ecx,17 + mov r11d,eax + add ecx,edx + xor r11d,edx + lea ebx,[1236535329+r10*1+rbx] + and r11d,ecx + mov r10d,DWORD[4+rsi] + xor r11d,eax + add ebx,r11d + rol ebx,22 + mov r11d,edx + add ebx,ecx + mov r11d,edx + mov r12d,edx + not r11d + and r12d,ebx + lea eax,[((-165796510))+r10*1+rax] + and r11d,ecx + mov r10d,DWORD[24+rsi] + or r12d,r11d + mov r11d,ecx + add eax,r12d + mov r12d,ecx + rol eax,5 + add eax,ebx + not r11d + and r12d,eax + lea edx,[((-1069501632))+r10*1+rdx] + and r11d,ebx + mov r10d,DWORD[44+rsi] + or r12d,r11d + mov r11d,ebx + add edx,r12d + mov r12d,ebx + rol edx,9 + add edx,eax + not r11d + and r12d,edx + lea ecx,[643717713+r10*1+rcx] + and r11d,eax + mov r10d,DWORD[rsi] + or r12d,r11d + mov r11d,eax + add ecx,r12d + mov r12d,eax + rol ecx,14 + add ecx,edx + not r11d + and r12d,ecx + lea ebx,[((-373897302))+r10*1+rbx] + and r11d,edx + mov r10d,DWORD[20+rsi] + or r12d,r11d + mov r11d,edx + add ebx,r12d + mov r12d,edx + rol ebx,20 + add ebx,ecx + not r11d + and r12d,ebx + lea eax,[((-701558691))+r10*1+rax] + and r11d,ecx + mov r10d,DWORD[40+rsi] + or r12d,r11d + mov r11d,ecx + add eax,r12d + mov r12d,ecx + rol eax,5 + add eax,ebx + not r11d + and r12d,eax + lea edx,[38016083+r10*1+rdx] + and r11d,ebx + mov r10d,DWORD[60+rsi] + or r12d,r11d + mov r11d,ebx + add edx,r12d + mov r12d,ebx + rol edx,9 + add edx,eax + not r11d + and r12d,edx + lea ecx,[((-660478335))+r10*1+rcx] + and r11d,eax + mov r10d,DWORD[16+rsi] + or r12d,r11d + mov r11d,eax + add ecx,r12d + mov r12d,eax + rol ecx,14 + add ecx,edx + not r11d + and r12d,ecx + lea ebx,[((-405537848))+r10*1+rbx] + and r11d,edx + mov r10d,DWORD[36+rsi] + or r12d,r11d + mov r11d,edx + add ebx,r12d + mov r12d,edx + rol ebx,20 + add ebx,ecx + not r11d + and r12d,ebx + lea eax,[568446438+r10*1+rax] + and r11d,ecx + mov r10d,DWORD[56+rsi] + or r12d,r11d + mov r11d,ecx + add eax,r12d + mov r12d,ecx + rol eax,5 + add eax,ebx + not r11d + and r12d,eax + lea edx,[((-1019803690))+r10*1+rdx] + and r11d,ebx + mov r10d,DWORD[12+rsi] + or r12d,r11d + mov r11d,ebx + add edx,r12d + mov r12d,ebx + rol edx,9 + add edx,eax + not r11d + and r12d,edx + lea ecx,[((-187363961))+r10*1+rcx] + and r11d,eax + mov r10d,DWORD[32+rsi] + or r12d,r11d + mov r11d,eax + add ecx,r12d + mov r12d,eax + rol ecx,14 + add ecx,edx + not r11d + and r12d,ecx + lea ebx,[1163531501+r10*1+rbx] + and r11d,edx + mov r10d,DWORD[52+rsi] + or r12d,r11d + mov r11d,edx + add ebx,r12d + mov r12d,edx + rol ebx,20 + add ebx,ecx + not r11d + and r12d,ebx + lea eax,[((-1444681467))+r10*1+rax] + and r11d,ecx + mov r10d,DWORD[8+rsi] + or r12d,r11d + mov r11d,ecx + add eax,r12d + mov r12d,ecx + rol eax,5 + add eax,ebx + not r11d + and r12d,eax + lea edx,[((-51403784))+r10*1+rdx] + and r11d,ebx + mov r10d,DWORD[28+rsi] + or r12d,r11d + mov r11d,ebx + add edx,r12d + mov r12d,ebx + rol edx,9 + add edx,eax + not r11d + and r12d,edx + lea ecx,[1735328473+r10*1+rcx] + and r11d,eax + mov r10d,DWORD[48+rsi] + or r12d,r11d + mov r11d,eax + add ecx,r12d + mov r12d,eax + rol ecx,14 + add ecx,edx + not r11d + and r12d,ecx + lea ebx,[((-1926607734))+r10*1+rbx] + and r11d,edx + mov r10d,DWORD[20+rsi] + or r12d,r11d + mov r11d,edx + add ebx,r12d + mov r12d,edx + rol ebx,20 + add ebx,ecx + mov r11d,ecx + lea eax,[((-378558))+r10*1+rax] + xor r11d,edx + mov r10d,DWORD[32+rsi] + xor r11d,ebx + add eax,r11d + mov r11d,ebx + rol eax,4 + add eax,ebx + lea edx,[((-2022574463))+r10*1+rdx] + xor r11d,ecx + mov r10d,DWORD[44+rsi] + xor r11d,eax + add edx,r11d + rol edx,11 + mov r11d,eax + add edx,eax + lea ecx,[1839030562+r10*1+rcx] + xor r11d,ebx + mov r10d,DWORD[56+rsi] + xor r11d,edx + add ecx,r11d + mov r11d,edx + rol ecx,16 + add ecx,edx + lea ebx,[((-35309556))+r10*1+rbx] + xor r11d,eax + mov r10d,DWORD[4+rsi] + xor r11d,ecx + add ebx,r11d + rol ebx,23 + mov r11d,ecx + add ebx,ecx + lea eax,[((-1530992060))+r10*1+rax] + xor r11d,edx + mov r10d,DWORD[16+rsi] + xor r11d,ebx + add eax,r11d + mov r11d,ebx + rol eax,4 + add eax,ebx + lea edx,[1272893353+r10*1+rdx] + xor r11d,ecx + mov r10d,DWORD[28+rsi] + xor r11d,eax + add edx,r11d + rol edx,11 + mov r11d,eax + add edx,eax + lea ecx,[((-155497632))+r10*1+rcx] + xor r11d,ebx + mov r10d,DWORD[40+rsi] + xor r11d,edx + add ecx,r11d + mov r11d,edx + rol ecx,16 + add ecx,edx + lea ebx,[((-1094730640))+r10*1+rbx] + xor r11d,eax + mov r10d,DWORD[52+rsi] + xor r11d,ecx + add ebx,r11d + rol ebx,23 + mov r11d,ecx + add ebx,ecx + lea eax,[681279174+r10*1+rax] + xor r11d,edx + mov r10d,DWORD[rsi] + xor r11d,ebx + add eax,r11d + mov r11d,ebx + rol eax,4 + add eax,ebx + lea edx,[((-358537222))+r10*1+rdx] + xor r11d,ecx + mov r10d,DWORD[12+rsi] + xor r11d,eax + add edx,r11d + rol edx,11 + mov r11d,eax + add edx,eax + lea ecx,[((-722521979))+r10*1+rcx] + xor r11d,ebx + mov r10d,DWORD[24+rsi] + xor r11d,edx + add ecx,r11d + mov r11d,edx + rol ecx,16 + add ecx,edx + lea ebx,[76029189+r10*1+rbx] + xor r11d,eax + mov r10d,DWORD[36+rsi] + xor r11d,ecx + add ebx,r11d + rol ebx,23 + mov r11d,ecx + add ebx,ecx + lea eax,[((-640364487))+r10*1+rax] + xor r11d,edx + mov r10d,DWORD[48+rsi] + xor r11d,ebx + add eax,r11d + mov r11d,ebx + rol eax,4 + add eax,ebx + lea edx,[((-421815835))+r10*1+rdx] + xor r11d,ecx + mov r10d,DWORD[60+rsi] + xor r11d,eax + add edx,r11d + rol edx,11 + mov r11d,eax + add edx,eax + lea ecx,[530742520+r10*1+rcx] + xor r11d,ebx + mov r10d,DWORD[8+rsi] + xor r11d,edx + add ecx,r11d + mov r11d,edx + rol ecx,16 + add ecx,edx + lea ebx,[((-995338651))+r10*1+rbx] + xor r11d,eax + mov r10d,DWORD[rsi] + xor r11d,ecx + add ebx,r11d + rol ebx,23 + mov r11d,ecx + add ebx,ecx + mov r11d,0xffffffff + xor r11d,edx + lea eax,[((-198630844))+r10*1+rax] + or r11d,ebx + mov r10d,DWORD[28+rsi] + xor r11d,ecx + add eax,r11d + mov r11d,0xffffffff + rol eax,6 + xor r11d,ecx + add eax,ebx + lea edx,[1126891415+r10*1+rdx] + or r11d,eax + mov r10d,DWORD[56+rsi] + xor r11d,ebx + add edx,r11d + mov r11d,0xffffffff + rol edx,10 + xor r11d,ebx + add edx,eax + lea ecx,[((-1416354905))+r10*1+rcx] + or r11d,edx + mov r10d,DWORD[20+rsi] + xor r11d,eax + add ecx,r11d + mov r11d,0xffffffff + rol ecx,15 + xor r11d,eax + add ecx,edx + lea ebx,[((-57434055))+r10*1+rbx] + or r11d,ecx + mov r10d,DWORD[48+rsi] + xor r11d,edx + add ebx,r11d + mov r11d,0xffffffff + rol ebx,21 + xor r11d,edx + add ebx,ecx + lea eax,[1700485571+r10*1+rax] + or r11d,ebx + mov r10d,DWORD[12+rsi] + xor r11d,ecx + add eax,r11d + mov r11d,0xffffffff + rol eax,6 + xor r11d,ecx + add eax,ebx + lea edx,[((-1894986606))+r10*1+rdx] + or r11d,eax + mov r10d,DWORD[40+rsi] + xor r11d,ebx + add edx,r11d + mov r11d,0xffffffff + rol edx,10 + xor r11d,ebx + add edx,eax + lea ecx,[((-1051523))+r10*1+rcx] + or r11d,edx + mov r10d,DWORD[4+rsi] + xor r11d,eax + add ecx,r11d + mov r11d,0xffffffff + rol ecx,15 + xor r11d,eax + add ecx,edx + lea ebx,[((-2054922799))+r10*1+rbx] + or r11d,ecx + mov r10d,DWORD[32+rsi] + xor r11d,edx + add ebx,r11d + mov r11d,0xffffffff + rol ebx,21 + xor r11d,edx + add ebx,ecx + lea eax,[1873313359+r10*1+rax] + or r11d,ebx + mov r10d,DWORD[60+rsi] + xor r11d,ecx + add eax,r11d + mov r11d,0xffffffff + rol eax,6 + xor r11d,ecx + add eax,ebx + lea edx,[((-30611744))+r10*1+rdx] + or r11d,eax + mov r10d,DWORD[24+rsi] + xor r11d,ebx + add edx,r11d + mov r11d,0xffffffff + rol edx,10 + xor r11d,ebx + add edx,eax + lea ecx,[((-1560198380))+r10*1+rcx] + or r11d,edx + mov r10d,DWORD[52+rsi] + xor r11d,eax + add ecx,r11d + mov r11d,0xffffffff + rol ecx,15 + xor r11d,eax + add ecx,edx + lea ebx,[1309151649+r10*1+rbx] + or r11d,ecx + mov r10d,DWORD[16+rsi] + xor r11d,edx + add ebx,r11d + mov r11d,0xffffffff + rol ebx,21 + xor r11d,edx + add ebx,ecx + lea eax,[((-145523070))+r10*1+rax] + or r11d,ebx + mov r10d,DWORD[44+rsi] + xor r11d,ecx + add eax,r11d + mov r11d,0xffffffff + rol eax,6 + xor r11d,ecx + add eax,ebx + lea edx,[((-1120210379))+r10*1+rdx] + or r11d,eax + mov r10d,DWORD[8+rsi] + xor r11d,ebx + add edx,r11d + mov r11d,0xffffffff + rol edx,10 + xor r11d,ebx + add edx,eax + lea ecx,[718787259+r10*1+rcx] + or r11d,edx + mov r10d,DWORD[36+rsi] + xor r11d,eax + add ecx,r11d + mov r11d,0xffffffff + rol ecx,15 + xor r11d,eax + add ecx,edx + lea ebx,[((-343485551))+r10*1+rbx] + or r11d,ecx + mov r10d,DWORD[rsi] + xor r11d,edx + add ebx,r11d + mov r11d,0xffffffff + rol ebx,21 + xor r11d,edx + add ebx,ecx + + add eax,r8d + add ebx,r9d + add ecx,r14d + add edx,r15d + + + add rsi,64 + cmp rsi,rdi + jb NEAR $L$loop + + +$L$end: + mov DWORD[rbp],eax + mov DWORD[4+rbp],ebx + mov DWORD[8+rbp],ecx + mov DWORD[12+rbp],edx + + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r12,QWORD[16+rsp] + + mov rbx,QWORD[24+rsp] + + mov rbp,QWORD[32+rsp] + + add rsp,40 + +$L$epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_md5_block_asm_data_order: +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + lea r10,[$L$prologue] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + lea r10,[$L$epilogue] + cmp rbx,r10 + jae NEAR $L$in_prologue + + lea rax,[40+rax] + + mov rbp,QWORD[((-8))+rax] + mov rbx,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r14,QWORD[((-32))+rax] + mov r15,QWORD[((-40))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_md5_block_asm_data_order wrt ..imagebase + DD $L$SEH_end_md5_block_asm_data_order wrt ..imagebase + DD $L$SEH_info_md5_block_asm_data_order wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_md5_block_asm_data_order: +DB 9,0,0,0 + DD se_handler wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/modes/aesni-gcm-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/modes/aesni-gcm-x86_64.asm new file mode 100644 index 0000000..9fba32b --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/modes/aesni-gcm-x86_64.asm @@ -0,0 +1,981 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + + +ALIGN 32 +_aesni_ctr32_ghash_6x: + + vmovdqu xmm2,XMMWORD[32+r11] + sub rdx,6 + vpxor xmm4,xmm4,xmm4 + vmovdqu xmm15,XMMWORD[((0-128))+rcx] + vpaddb xmm10,xmm1,xmm2 + vpaddb xmm11,xmm10,xmm2 + vpaddb xmm12,xmm11,xmm2 + vpaddb xmm13,xmm12,xmm2 + vpaddb xmm14,xmm13,xmm2 + vpxor xmm9,xmm1,xmm15 + vmovdqu XMMWORD[(16+8)+rsp],xmm4 + jmp NEAR $L$oop6x + +ALIGN 32 +$L$oop6x: + add ebx,100663296 + jc NEAR $L$handle_ctr32 + vmovdqu xmm3,XMMWORD[((0-32))+r9] + vpaddb xmm1,xmm14,xmm2 + vpxor xmm10,xmm10,xmm15 + vpxor xmm11,xmm11,xmm15 + +$L$resume_ctr32: + vmovdqu XMMWORD[r8],xmm1 + vpclmulqdq xmm5,xmm7,xmm3,0x10 + vpxor xmm12,xmm12,xmm15 + vmovups xmm2,XMMWORD[((16-128))+rcx] + vpclmulqdq xmm6,xmm7,xmm3,0x01 + xor r12,r12 + cmp r15,r14 + + vaesenc xmm9,xmm9,xmm2 + vmovdqu xmm0,XMMWORD[((48+8))+rsp] + vpxor xmm13,xmm13,xmm15 + vpclmulqdq xmm1,xmm7,xmm3,0x00 + vaesenc xmm10,xmm10,xmm2 + vpxor xmm14,xmm14,xmm15 + setnc r12b + vpclmulqdq xmm7,xmm7,xmm3,0x11 + vaesenc xmm11,xmm11,xmm2 + vmovdqu xmm3,XMMWORD[((16-32))+r9] + neg r12 + vaesenc xmm12,xmm12,xmm2 + vpxor xmm6,xmm6,xmm5 + vpclmulqdq xmm5,xmm0,xmm3,0x00 + vpxor xmm8,xmm8,xmm4 + vaesenc xmm13,xmm13,xmm2 + vpxor xmm4,xmm1,xmm5 + and r12,0x60 + vmovups xmm15,XMMWORD[((32-128))+rcx] + vpclmulqdq xmm1,xmm0,xmm3,0x10 + vaesenc xmm14,xmm14,xmm2 + + vpclmulqdq xmm2,xmm0,xmm3,0x01 + lea r14,[r12*1+r14] + vaesenc xmm9,xmm9,xmm15 + vpxor xmm8,xmm8,XMMWORD[((16+8))+rsp] + vpclmulqdq xmm3,xmm0,xmm3,0x11 + vmovdqu xmm0,XMMWORD[((64+8))+rsp] + vaesenc xmm10,xmm10,xmm15 + movbe r13,QWORD[88+r14] + vaesenc xmm11,xmm11,xmm15 + movbe r12,QWORD[80+r14] + vaesenc xmm12,xmm12,xmm15 + mov QWORD[((32+8))+rsp],r13 + vaesenc xmm13,xmm13,xmm15 + mov QWORD[((40+8))+rsp],r12 + vmovdqu xmm5,XMMWORD[((48-32))+r9] + vaesenc xmm14,xmm14,xmm15 + + vmovups xmm15,XMMWORD[((48-128))+rcx] + vpxor xmm6,xmm6,xmm1 + vpclmulqdq xmm1,xmm0,xmm5,0x00 + vaesenc xmm9,xmm9,xmm15 + vpxor xmm6,xmm6,xmm2 + vpclmulqdq xmm2,xmm0,xmm5,0x10 + vaesenc xmm10,xmm10,xmm15 + vpxor xmm7,xmm7,xmm3 + vpclmulqdq xmm3,xmm0,xmm5,0x01 + vaesenc xmm11,xmm11,xmm15 + vpclmulqdq xmm5,xmm0,xmm5,0x11 + vmovdqu xmm0,XMMWORD[((80+8))+rsp] + vaesenc xmm12,xmm12,xmm15 + vaesenc xmm13,xmm13,xmm15 + vpxor xmm4,xmm4,xmm1 + vmovdqu xmm1,XMMWORD[((64-32))+r9] + vaesenc xmm14,xmm14,xmm15 + + vmovups xmm15,XMMWORD[((64-128))+rcx] + vpxor xmm6,xmm6,xmm2 + vpclmulqdq xmm2,xmm0,xmm1,0x00 + vaesenc xmm9,xmm9,xmm15 + vpxor xmm6,xmm6,xmm3 + vpclmulqdq xmm3,xmm0,xmm1,0x10 + vaesenc xmm10,xmm10,xmm15 + movbe r13,QWORD[72+r14] + vpxor xmm7,xmm7,xmm5 + vpclmulqdq xmm5,xmm0,xmm1,0x01 + vaesenc xmm11,xmm11,xmm15 + movbe r12,QWORD[64+r14] + vpclmulqdq xmm1,xmm0,xmm1,0x11 + vmovdqu xmm0,XMMWORD[((96+8))+rsp] + vaesenc xmm12,xmm12,xmm15 + mov QWORD[((48+8))+rsp],r13 + vaesenc xmm13,xmm13,xmm15 + mov QWORD[((56+8))+rsp],r12 + vpxor xmm4,xmm4,xmm2 + vmovdqu xmm2,XMMWORD[((96-32))+r9] + vaesenc xmm14,xmm14,xmm15 + + vmovups xmm15,XMMWORD[((80-128))+rcx] + vpxor xmm6,xmm6,xmm3 + vpclmulqdq xmm3,xmm0,xmm2,0x00 + vaesenc xmm9,xmm9,xmm15 + vpxor xmm6,xmm6,xmm5 + vpclmulqdq xmm5,xmm0,xmm2,0x10 + vaesenc xmm10,xmm10,xmm15 + movbe r13,QWORD[56+r14] + vpxor xmm7,xmm7,xmm1 + vpclmulqdq xmm1,xmm0,xmm2,0x01 + vpxor xmm8,xmm8,XMMWORD[((112+8))+rsp] + vaesenc xmm11,xmm11,xmm15 + movbe r12,QWORD[48+r14] + vpclmulqdq xmm2,xmm0,xmm2,0x11 + vaesenc xmm12,xmm12,xmm15 + mov QWORD[((64+8))+rsp],r13 + vaesenc xmm13,xmm13,xmm15 + mov QWORD[((72+8))+rsp],r12 + vpxor xmm4,xmm4,xmm3 + vmovdqu xmm3,XMMWORD[((112-32))+r9] + vaesenc xmm14,xmm14,xmm15 + + vmovups xmm15,XMMWORD[((96-128))+rcx] + vpxor xmm6,xmm6,xmm5 + vpclmulqdq xmm5,xmm8,xmm3,0x10 + vaesenc xmm9,xmm9,xmm15 + vpxor xmm6,xmm6,xmm1 + vpclmulqdq xmm1,xmm8,xmm3,0x01 + vaesenc xmm10,xmm10,xmm15 + movbe r13,QWORD[40+r14] + vpxor xmm7,xmm7,xmm2 + vpclmulqdq xmm2,xmm8,xmm3,0x00 + vaesenc xmm11,xmm11,xmm15 + movbe r12,QWORD[32+r14] + vpclmulqdq xmm8,xmm8,xmm3,0x11 + vaesenc xmm12,xmm12,xmm15 + mov QWORD[((80+8))+rsp],r13 + vaesenc xmm13,xmm13,xmm15 + mov QWORD[((88+8))+rsp],r12 + vpxor xmm6,xmm6,xmm5 + vaesenc xmm14,xmm14,xmm15 + vpxor xmm6,xmm6,xmm1 + + vmovups xmm15,XMMWORD[((112-128))+rcx] + vpslldq xmm5,xmm6,8 + vpxor xmm4,xmm4,xmm2 + vmovdqu xmm3,XMMWORD[16+r11] + + vaesenc xmm9,xmm9,xmm15 + vpxor xmm7,xmm7,xmm8 + vaesenc xmm10,xmm10,xmm15 + vpxor xmm4,xmm4,xmm5 + movbe r13,QWORD[24+r14] + vaesenc xmm11,xmm11,xmm15 + movbe r12,QWORD[16+r14] + vpalignr xmm0,xmm4,xmm4,8 + vpclmulqdq xmm4,xmm4,xmm3,0x10 + mov QWORD[((96+8))+rsp],r13 + vaesenc xmm12,xmm12,xmm15 + mov QWORD[((104+8))+rsp],r12 + vaesenc xmm13,xmm13,xmm15 + vmovups xmm1,XMMWORD[((128-128))+rcx] + vaesenc xmm14,xmm14,xmm15 + + vaesenc xmm9,xmm9,xmm1 + vmovups xmm15,XMMWORD[((144-128))+rcx] + vaesenc xmm10,xmm10,xmm1 + vpsrldq xmm6,xmm6,8 + vaesenc xmm11,xmm11,xmm1 + vpxor xmm7,xmm7,xmm6 + vaesenc xmm12,xmm12,xmm1 + vpxor xmm4,xmm4,xmm0 + movbe r13,QWORD[8+r14] + vaesenc xmm13,xmm13,xmm1 + movbe r12,QWORD[r14] + vaesenc xmm14,xmm14,xmm1 + vmovups xmm1,XMMWORD[((160-128))+rcx] + cmp ebp,11 + jb NEAR $L$enc_tail + + vaesenc xmm9,xmm9,xmm15 + vaesenc xmm10,xmm10,xmm15 + vaesenc xmm11,xmm11,xmm15 + vaesenc xmm12,xmm12,xmm15 + vaesenc xmm13,xmm13,xmm15 + vaesenc xmm14,xmm14,xmm15 + + vaesenc xmm9,xmm9,xmm1 + vaesenc xmm10,xmm10,xmm1 + vaesenc xmm11,xmm11,xmm1 + vaesenc xmm12,xmm12,xmm1 + vaesenc xmm13,xmm13,xmm1 + vmovups xmm15,XMMWORD[((176-128))+rcx] + vaesenc xmm14,xmm14,xmm1 + vmovups xmm1,XMMWORD[((192-128))+rcx] + je NEAR $L$enc_tail + + vaesenc xmm9,xmm9,xmm15 + vaesenc xmm10,xmm10,xmm15 + vaesenc xmm11,xmm11,xmm15 + vaesenc xmm12,xmm12,xmm15 + vaesenc xmm13,xmm13,xmm15 + vaesenc xmm14,xmm14,xmm15 + + vaesenc xmm9,xmm9,xmm1 + vaesenc xmm10,xmm10,xmm1 + vaesenc xmm11,xmm11,xmm1 + vaesenc xmm12,xmm12,xmm1 + vaesenc xmm13,xmm13,xmm1 + vmovups xmm15,XMMWORD[((208-128))+rcx] + vaesenc xmm14,xmm14,xmm1 + vmovups xmm1,XMMWORD[((224-128))+rcx] + jmp NEAR $L$enc_tail + +ALIGN 32 +$L$handle_ctr32: + vmovdqu xmm0,XMMWORD[r11] + vpshufb xmm6,xmm1,xmm0 + vmovdqu xmm5,XMMWORD[48+r11] + vpaddd xmm10,xmm6,XMMWORD[64+r11] + vpaddd xmm11,xmm6,xmm5 + vmovdqu xmm3,XMMWORD[((0-32))+r9] + vpaddd xmm12,xmm10,xmm5 + vpshufb xmm10,xmm10,xmm0 + vpaddd xmm13,xmm11,xmm5 + vpshufb xmm11,xmm11,xmm0 + vpxor xmm10,xmm10,xmm15 + vpaddd xmm14,xmm12,xmm5 + vpshufb xmm12,xmm12,xmm0 + vpxor xmm11,xmm11,xmm15 + vpaddd xmm1,xmm13,xmm5 + vpshufb xmm13,xmm13,xmm0 + vpshufb xmm14,xmm14,xmm0 + vpshufb xmm1,xmm1,xmm0 + jmp NEAR $L$resume_ctr32 + +ALIGN 32 +$L$enc_tail: + vaesenc xmm9,xmm9,xmm15 + vmovdqu XMMWORD[(16+8)+rsp],xmm7 + vpalignr xmm8,xmm4,xmm4,8 + vaesenc xmm10,xmm10,xmm15 + vpclmulqdq xmm4,xmm4,xmm3,0x10 + vpxor xmm2,xmm1,XMMWORD[rdi] + vaesenc xmm11,xmm11,xmm15 + vpxor xmm0,xmm1,XMMWORD[16+rdi] + vaesenc xmm12,xmm12,xmm15 + vpxor xmm5,xmm1,XMMWORD[32+rdi] + vaesenc xmm13,xmm13,xmm15 + vpxor xmm6,xmm1,XMMWORD[48+rdi] + vaesenc xmm14,xmm14,xmm15 + vpxor xmm7,xmm1,XMMWORD[64+rdi] + vpxor xmm3,xmm1,XMMWORD[80+rdi] + vmovdqu xmm1,XMMWORD[r8] + + vaesenclast xmm9,xmm9,xmm2 + vmovdqu xmm2,XMMWORD[32+r11] + vaesenclast xmm10,xmm10,xmm0 + vpaddb xmm0,xmm1,xmm2 + mov QWORD[((112+8))+rsp],r13 + lea rdi,[96+rdi] + vaesenclast xmm11,xmm11,xmm5 + vpaddb xmm5,xmm0,xmm2 + mov QWORD[((120+8))+rsp],r12 + lea rsi,[96+rsi] + vmovdqu xmm15,XMMWORD[((0-128))+rcx] + vaesenclast xmm12,xmm12,xmm6 + vpaddb xmm6,xmm5,xmm2 + vaesenclast xmm13,xmm13,xmm7 + vpaddb xmm7,xmm6,xmm2 + vaesenclast xmm14,xmm14,xmm3 + vpaddb xmm3,xmm7,xmm2 + + add r10,0x60 + sub rdx,0x6 + jc NEAR $L$6x_done + + vmovups XMMWORD[(-96)+rsi],xmm9 + vpxor xmm9,xmm1,xmm15 + vmovups XMMWORD[(-80)+rsi],xmm10 + vmovdqa xmm10,xmm0 + vmovups XMMWORD[(-64)+rsi],xmm11 + vmovdqa xmm11,xmm5 + vmovups XMMWORD[(-48)+rsi],xmm12 + vmovdqa xmm12,xmm6 + vmovups XMMWORD[(-32)+rsi],xmm13 + vmovdqa xmm13,xmm7 + vmovups XMMWORD[(-16)+rsi],xmm14 + vmovdqa xmm14,xmm3 + vmovdqu xmm7,XMMWORD[((32+8))+rsp] + jmp NEAR $L$oop6x + +$L$6x_done: + vpxor xmm8,xmm8,XMMWORD[((16+8))+rsp] + vpxor xmm8,xmm8,xmm4 + + DB 0F3h,0C3h ;repret + + +global aesni_gcm_decrypt + +ALIGN 32 +aesni_gcm_decrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_gcm_decrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + xor r10,r10 + cmp rdx,0x60 + jb NEAR $L$gcm_dec_abort + + lea rax,[rsp] + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + movaps XMMWORD[(-216)+rax],xmm6 + movaps XMMWORD[(-200)+rax],xmm7 + movaps XMMWORD[(-184)+rax],xmm8 + movaps XMMWORD[(-168)+rax],xmm9 + movaps XMMWORD[(-152)+rax],xmm10 + movaps XMMWORD[(-136)+rax],xmm11 + movaps XMMWORD[(-120)+rax],xmm12 + movaps XMMWORD[(-104)+rax],xmm13 + movaps XMMWORD[(-88)+rax],xmm14 + movaps XMMWORD[(-72)+rax],xmm15 +$L$gcm_dec_body: + vzeroupper + + vmovdqu xmm1,XMMWORD[r8] + add rsp,-128 + mov ebx,DWORD[12+r8] + lea r11,[$L$bswap_mask] + lea r14,[((-128))+rcx] + mov r15,0xf80 + vmovdqu xmm8,XMMWORD[r9] + and rsp,-128 + vmovdqu xmm0,XMMWORD[r11] + lea rcx,[128+rcx] + lea r9,[((32+32))+r9] + mov ebp,DWORD[((240-128))+rcx] + vpshufb xmm8,xmm8,xmm0 + + and r14,r15 + and r15,rsp + sub r15,r14 + jc NEAR $L$dec_no_key_aliasing + cmp r15,768 + jnc NEAR $L$dec_no_key_aliasing + sub rsp,r15 +$L$dec_no_key_aliasing: + + vmovdqu xmm7,XMMWORD[80+rdi] + lea r14,[rdi] + vmovdqu xmm4,XMMWORD[64+rdi] + lea r15,[((-192))+rdx*1+rdi] + vmovdqu xmm5,XMMWORD[48+rdi] + shr rdx,4 + xor r10,r10 + vmovdqu xmm6,XMMWORD[32+rdi] + vpshufb xmm7,xmm7,xmm0 + vmovdqu xmm2,XMMWORD[16+rdi] + vpshufb xmm4,xmm4,xmm0 + vmovdqu xmm3,XMMWORD[rdi] + vpshufb xmm5,xmm5,xmm0 + vmovdqu XMMWORD[48+rsp],xmm4 + vpshufb xmm6,xmm6,xmm0 + vmovdqu XMMWORD[64+rsp],xmm5 + vpshufb xmm2,xmm2,xmm0 + vmovdqu XMMWORD[80+rsp],xmm6 + vpshufb xmm3,xmm3,xmm0 + vmovdqu XMMWORD[96+rsp],xmm2 + vmovdqu XMMWORD[112+rsp],xmm3 + + call _aesni_ctr32_ghash_6x + + vmovups XMMWORD[(-96)+rsi],xmm9 + vmovups XMMWORD[(-80)+rsi],xmm10 + vmovups XMMWORD[(-64)+rsi],xmm11 + vmovups XMMWORD[(-48)+rsi],xmm12 + vmovups XMMWORD[(-32)+rsi],xmm13 + vmovups XMMWORD[(-16)+rsi],xmm14 + + vpshufb xmm8,xmm8,XMMWORD[r11] + vmovdqu XMMWORD[(-64)+r9],xmm8 + + vzeroupper + movaps xmm6,XMMWORD[((-216))+rax] + movaps xmm7,XMMWORD[((-200))+rax] + movaps xmm8,XMMWORD[((-184))+rax] + movaps xmm9,XMMWORD[((-168))+rax] + movaps xmm10,XMMWORD[((-152))+rax] + movaps xmm11,XMMWORD[((-136))+rax] + movaps xmm12,XMMWORD[((-120))+rax] + movaps xmm13,XMMWORD[((-104))+rax] + movaps xmm14,XMMWORD[((-88))+rax] + movaps xmm15,XMMWORD[((-72))+rax] + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$gcm_dec_abort: + mov rax,r10 + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_gcm_decrypt: + +ALIGN 32 +_aesni_ctr32_6x: + + vmovdqu xmm4,XMMWORD[((0-128))+rcx] + vmovdqu xmm2,XMMWORD[32+r11] + lea r13,[((-1))+rbp] + vmovups xmm15,XMMWORD[((16-128))+rcx] + lea r12,[((32-128))+rcx] + vpxor xmm9,xmm1,xmm4 + add ebx,100663296 + jc NEAR $L$handle_ctr32_2 + vpaddb xmm10,xmm1,xmm2 + vpaddb xmm11,xmm10,xmm2 + vpxor xmm10,xmm10,xmm4 + vpaddb xmm12,xmm11,xmm2 + vpxor xmm11,xmm11,xmm4 + vpaddb xmm13,xmm12,xmm2 + vpxor xmm12,xmm12,xmm4 + vpaddb xmm14,xmm13,xmm2 + vpxor xmm13,xmm13,xmm4 + vpaddb xmm1,xmm14,xmm2 + vpxor xmm14,xmm14,xmm4 + jmp NEAR $L$oop_ctr32 + +ALIGN 16 +$L$oop_ctr32: + vaesenc xmm9,xmm9,xmm15 + vaesenc xmm10,xmm10,xmm15 + vaesenc xmm11,xmm11,xmm15 + vaesenc xmm12,xmm12,xmm15 + vaesenc xmm13,xmm13,xmm15 + vaesenc xmm14,xmm14,xmm15 + vmovups xmm15,XMMWORD[r12] + lea r12,[16+r12] + dec r13d + jnz NEAR $L$oop_ctr32 + + vmovdqu xmm3,XMMWORD[r12] + vaesenc xmm9,xmm9,xmm15 + vpxor xmm4,xmm3,XMMWORD[rdi] + vaesenc xmm10,xmm10,xmm15 + vpxor xmm5,xmm3,XMMWORD[16+rdi] + vaesenc xmm11,xmm11,xmm15 + vpxor xmm6,xmm3,XMMWORD[32+rdi] + vaesenc xmm12,xmm12,xmm15 + vpxor xmm8,xmm3,XMMWORD[48+rdi] + vaesenc xmm13,xmm13,xmm15 + vpxor xmm2,xmm3,XMMWORD[64+rdi] + vaesenc xmm14,xmm14,xmm15 + vpxor xmm3,xmm3,XMMWORD[80+rdi] + lea rdi,[96+rdi] + + vaesenclast xmm9,xmm9,xmm4 + vaesenclast xmm10,xmm10,xmm5 + vaesenclast xmm11,xmm11,xmm6 + vaesenclast xmm12,xmm12,xmm8 + vaesenclast xmm13,xmm13,xmm2 + vaesenclast xmm14,xmm14,xmm3 + vmovups XMMWORD[rsi],xmm9 + vmovups XMMWORD[16+rsi],xmm10 + vmovups XMMWORD[32+rsi],xmm11 + vmovups XMMWORD[48+rsi],xmm12 + vmovups XMMWORD[64+rsi],xmm13 + vmovups XMMWORD[80+rsi],xmm14 + lea rsi,[96+rsi] + + DB 0F3h,0C3h ;repret +ALIGN 32 +$L$handle_ctr32_2: + vpshufb xmm6,xmm1,xmm0 + vmovdqu xmm5,XMMWORD[48+r11] + vpaddd xmm10,xmm6,XMMWORD[64+r11] + vpaddd xmm11,xmm6,xmm5 + vpaddd xmm12,xmm10,xmm5 + vpshufb xmm10,xmm10,xmm0 + vpaddd xmm13,xmm11,xmm5 + vpshufb xmm11,xmm11,xmm0 + vpxor xmm10,xmm10,xmm4 + vpaddd xmm14,xmm12,xmm5 + vpshufb xmm12,xmm12,xmm0 + vpxor xmm11,xmm11,xmm4 + vpaddd xmm1,xmm13,xmm5 + vpshufb xmm13,xmm13,xmm0 + vpxor xmm12,xmm12,xmm4 + vpshufb xmm14,xmm14,xmm0 + vpxor xmm13,xmm13,xmm4 + vpshufb xmm1,xmm1,xmm0 + vpxor xmm14,xmm14,xmm4 + jmp NEAR $L$oop_ctr32 + + + +global aesni_gcm_encrypt + +ALIGN 32 +aesni_gcm_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_aesni_gcm_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + xor r10,r10 + cmp rdx,0x60*3 + jb NEAR $L$gcm_enc_abort + + lea rax,[rsp] + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + movaps XMMWORD[(-216)+rax],xmm6 + movaps XMMWORD[(-200)+rax],xmm7 + movaps XMMWORD[(-184)+rax],xmm8 + movaps XMMWORD[(-168)+rax],xmm9 + movaps XMMWORD[(-152)+rax],xmm10 + movaps XMMWORD[(-136)+rax],xmm11 + movaps XMMWORD[(-120)+rax],xmm12 + movaps XMMWORD[(-104)+rax],xmm13 + movaps XMMWORD[(-88)+rax],xmm14 + movaps XMMWORD[(-72)+rax],xmm15 +$L$gcm_enc_body: + vzeroupper + + vmovdqu xmm1,XMMWORD[r8] + add rsp,-128 + mov ebx,DWORD[12+r8] + lea r11,[$L$bswap_mask] + lea r14,[((-128))+rcx] + mov r15,0xf80 + lea rcx,[128+rcx] + vmovdqu xmm0,XMMWORD[r11] + and rsp,-128 + mov ebp,DWORD[((240-128))+rcx] + + and r14,r15 + and r15,rsp + sub r15,r14 + jc NEAR $L$enc_no_key_aliasing + cmp r15,768 + jnc NEAR $L$enc_no_key_aliasing + sub rsp,r15 +$L$enc_no_key_aliasing: + + lea r14,[rsi] + lea r15,[((-192))+rdx*1+rsi] + shr rdx,4 + + call _aesni_ctr32_6x + vpshufb xmm8,xmm9,xmm0 + vpshufb xmm2,xmm10,xmm0 + vmovdqu XMMWORD[112+rsp],xmm8 + vpshufb xmm4,xmm11,xmm0 + vmovdqu XMMWORD[96+rsp],xmm2 + vpshufb xmm5,xmm12,xmm0 + vmovdqu XMMWORD[80+rsp],xmm4 + vpshufb xmm6,xmm13,xmm0 + vmovdqu XMMWORD[64+rsp],xmm5 + vpshufb xmm7,xmm14,xmm0 + vmovdqu XMMWORD[48+rsp],xmm6 + + call _aesni_ctr32_6x + + vmovdqu xmm8,XMMWORD[r9] + lea r9,[((32+32))+r9] + sub rdx,12 + mov r10,0x60*2 + vpshufb xmm8,xmm8,xmm0 + + call _aesni_ctr32_ghash_6x + vmovdqu xmm7,XMMWORD[32+rsp] + vmovdqu xmm0,XMMWORD[r11] + vmovdqu xmm3,XMMWORD[((0-32))+r9] + vpunpckhqdq xmm1,xmm7,xmm7 + vmovdqu xmm15,XMMWORD[((32-32))+r9] + vmovups XMMWORD[(-96)+rsi],xmm9 + vpshufb xmm9,xmm9,xmm0 + vpxor xmm1,xmm1,xmm7 + vmovups XMMWORD[(-80)+rsi],xmm10 + vpshufb xmm10,xmm10,xmm0 + vmovups XMMWORD[(-64)+rsi],xmm11 + vpshufb xmm11,xmm11,xmm0 + vmovups XMMWORD[(-48)+rsi],xmm12 + vpshufb xmm12,xmm12,xmm0 + vmovups XMMWORD[(-32)+rsi],xmm13 + vpshufb xmm13,xmm13,xmm0 + vmovups XMMWORD[(-16)+rsi],xmm14 + vpshufb xmm14,xmm14,xmm0 + vmovdqu XMMWORD[16+rsp],xmm9 + vmovdqu xmm6,XMMWORD[48+rsp] + vmovdqu xmm0,XMMWORD[((16-32))+r9] + vpunpckhqdq xmm2,xmm6,xmm6 + vpclmulqdq xmm5,xmm7,xmm3,0x00 + vpxor xmm2,xmm2,xmm6 + vpclmulqdq xmm7,xmm7,xmm3,0x11 + vpclmulqdq xmm1,xmm1,xmm15,0x00 + + vmovdqu xmm9,XMMWORD[64+rsp] + vpclmulqdq xmm4,xmm6,xmm0,0x00 + vmovdqu xmm3,XMMWORD[((48-32))+r9] + vpxor xmm4,xmm4,xmm5 + vpunpckhqdq xmm5,xmm9,xmm9 + vpclmulqdq xmm6,xmm6,xmm0,0x11 + vpxor xmm5,xmm5,xmm9 + vpxor xmm6,xmm6,xmm7 + vpclmulqdq xmm2,xmm2,xmm15,0x10 + vmovdqu xmm15,XMMWORD[((80-32))+r9] + vpxor xmm2,xmm2,xmm1 + + vmovdqu xmm1,XMMWORD[80+rsp] + vpclmulqdq xmm7,xmm9,xmm3,0x00 + vmovdqu xmm0,XMMWORD[((64-32))+r9] + vpxor xmm7,xmm7,xmm4 + vpunpckhqdq xmm4,xmm1,xmm1 + vpclmulqdq xmm9,xmm9,xmm3,0x11 + vpxor xmm4,xmm4,xmm1 + vpxor xmm9,xmm9,xmm6 + vpclmulqdq xmm5,xmm5,xmm15,0x00 + vpxor xmm5,xmm5,xmm2 + + vmovdqu xmm2,XMMWORD[96+rsp] + vpclmulqdq xmm6,xmm1,xmm0,0x00 + vmovdqu xmm3,XMMWORD[((96-32))+r9] + vpxor xmm6,xmm6,xmm7 + vpunpckhqdq xmm7,xmm2,xmm2 + vpclmulqdq xmm1,xmm1,xmm0,0x11 + vpxor xmm7,xmm7,xmm2 + vpxor xmm1,xmm1,xmm9 + vpclmulqdq xmm4,xmm4,xmm15,0x10 + vmovdqu xmm15,XMMWORD[((128-32))+r9] + vpxor xmm4,xmm4,xmm5 + + vpxor xmm8,xmm8,XMMWORD[112+rsp] + vpclmulqdq xmm5,xmm2,xmm3,0x00 + vmovdqu xmm0,XMMWORD[((112-32))+r9] + vpunpckhqdq xmm9,xmm8,xmm8 + vpxor xmm5,xmm5,xmm6 + vpclmulqdq xmm2,xmm2,xmm3,0x11 + vpxor xmm9,xmm9,xmm8 + vpxor xmm2,xmm2,xmm1 + vpclmulqdq xmm7,xmm7,xmm15,0x00 + vpxor xmm4,xmm7,xmm4 + + vpclmulqdq xmm6,xmm8,xmm0,0x00 + vmovdqu xmm3,XMMWORD[((0-32))+r9] + vpunpckhqdq xmm1,xmm14,xmm14 + vpclmulqdq xmm8,xmm8,xmm0,0x11 + vpxor xmm1,xmm1,xmm14 + vpxor xmm5,xmm6,xmm5 + vpclmulqdq xmm9,xmm9,xmm15,0x10 + vmovdqu xmm15,XMMWORD[((32-32))+r9] + vpxor xmm7,xmm8,xmm2 + vpxor xmm6,xmm9,xmm4 + + vmovdqu xmm0,XMMWORD[((16-32))+r9] + vpxor xmm9,xmm7,xmm5 + vpclmulqdq xmm4,xmm14,xmm3,0x00 + vpxor xmm6,xmm6,xmm9 + vpunpckhqdq xmm2,xmm13,xmm13 + vpclmulqdq xmm14,xmm14,xmm3,0x11 + vpxor xmm2,xmm2,xmm13 + vpslldq xmm9,xmm6,8 + vpclmulqdq xmm1,xmm1,xmm15,0x00 + vpxor xmm8,xmm5,xmm9 + vpsrldq xmm6,xmm6,8 + vpxor xmm7,xmm7,xmm6 + + vpclmulqdq xmm5,xmm13,xmm0,0x00 + vmovdqu xmm3,XMMWORD[((48-32))+r9] + vpxor xmm5,xmm5,xmm4 + vpunpckhqdq xmm9,xmm12,xmm12 + vpclmulqdq xmm13,xmm13,xmm0,0x11 + vpxor xmm9,xmm9,xmm12 + vpxor xmm13,xmm13,xmm14 + vpalignr xmm14,xmm8,xmm8,8 + vpclmulqdq xmm2,xmm2,xmm15,0x10 + vmovdqu xmm15,XMMWORD[((80-32))+r9] + vpxor xmm2,xmm2,xmm1 + + vpclmulqdq xmm4,xmm12,xmm3,0x00 + vmovdqu xmm0,XMMWORD[((64-32))+r9] + vpxor xmm4,xmm4,xmm5 + vpunpckhqdq xmm1,xmm11,xmm11 + vpclmulqdq xmm12,xmm12,xmm3,0x11 + vpxor xmm1,xmm1,xmm11 + vpxor xmm12,xmm12,xmm13 + vxorps xmm7,xmm7,XMMWORD[16+rsp] + vpclmulqdq xmm9,xmm9,xmm15,0x00 + vpxor xmm9,xmm9,xmm2 + + vpclmulqdq xmm8,xmm8,XMMWORD[16+r11],0x10 + vxorps xmm8,xmm8,xmm14 + + vpclmulqdq xmm5,xmm11,xmm0,0x00 + vmovdqu xmm3,XMMWORD[((96-32))+r9] + vpxor xmm5,xmm5,xmm4 + vpunpckhqdq xmm2,xmm10,xmm10 + vpclmulqdq xmm11,xmm11,xmm0,0x11 + vpxor xmm2,xmm2,xmm10 + vpalignr xmm14,xmm8,xmm8,8 + vpxor xmm11,xmm11,xmm12 + vpclmulqdq xmm1,xmm1,xmm15,0x10 + vmovdqu xmm15,XMMWORD[((128-32))+r9] + vpxor xmm1,xmm1,xmm9 + + vxorps xmm14,xmm14,xmm7 + vpclmulqdq xmm8,xmm8,XMMWORD[16+r11],0x10 + vxorps xmm8,xmm8,xmm14 + + vpclmulqdq xmm4,xmm10,xmm3,0x00 + vmovdqu xmm0,XMMWORD[((112-32))+r9] + vpxor xmm4,xmm4,xmm5 + vpunpckhqdq xmm9,xmm8,xmm8 + vpclmulqdq xmm10,xmm10,xmm3,0x11 + vpxor xmm9,xmm9,xmm8 + vpxor xmm10,xmm10,xmm11 + vpclmulqdq xmm2,xmm2,xmm15,0x00 + vpxor xmm2,xmm2,xmm1 + + vpclmulqdq xmm5,xmm8,xmm0,0x00 + vpclmulqdq xmm7,xmm8,xmm0,0x11 + vpxor xmm5,xmm5,xmm4 + vpclmulqdq xmm6,xmm9,xmm15,0x10 + vpxor xmm7,xmm7,xmm10 + vpxor xmm6,xmm6,xmm2 + + vpxor xmm4,xmm7,xmm5 + vpxor xmm6,xmm6,xmm4 + vpslldq xmm1,xmm6,8 + vmovdqu xmm3,XMMWORD[16+r11] + vpsrldq xmm6,xmm6,8 + vpxor xmm8,xmm5,xmm1 + vpxor xmm7,xmm7,xmm6 + + vpalignr xmm2,xmm8,xmm8,8 + vpclmulqdq xmm8,xmm8,xmm3,0x10 + vpxor xmm8,xmm8,xmm2 + + vpalignr xmm2,xmm8,xmm8,8 + vpclmulqdq xmm8,xmm8,xmm3,0x10 + vpxor xmm2,xmm2,xmm7 + vpxor xmm8,xmm8,xmm2 + vpshufb xmm8,xmm8,XMMWORD[r11] + vmovdqu XMMWORD[(-64)+r9],xmm8 + + vzeroupper + movaps xmm6,XMMWORD[((-216))+rax] + movaps xmm7,XMMWORD[((-200))+rax] + movaps xmm8,XMMWORD[((-184))+rax] + movaps xmm9,XMMWORD[((-168))+rax] + movaps xmm10,XMMWORD[((-152))+rax] + movaps xmm11,XMMWORD[((-136))+rax] + movaps xmm12,XMMWORD[((-120))+rax] + movaps xmm13,XMMWORD[((-104))+rax] + movaps xmm14,XMMWORD[((-88))+rax] + movaps xmm15,XMMWORD[((-72))+rax] + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$gcm_enc_abort: + mov rax,r10 + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_aesni_gcm_encrypt: +ALIGN 64 +$L$bswap_mask: +DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +$L$poly: +DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 +$L$one_msb: +DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +$L$two_lsb: +DB 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +$L$one_lsb: +DB 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +DB 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108 +DB 101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82 +DB 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 +DB 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +ALIGN 64 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +gcm_se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov rax,QWORD[120+r8] + + mov r15,QWORD[((-48))+rax] + mov r14,QWORD[((-40))+rax] + mov r13,QWORD[((-32))+rax] + mov r12,QWORD[((-24))+rax] + mov rbp,QWORD[((-16))+rax] + mov rbx,QWORD[((-8))+rax] + mov QWORD[240+r8],r15 + mov QWORD[232+r8],r14 + mov QWORD[224+r8],r13 + mov QWORD[216+r8],r12 + mov QWORD[160+r8],rbp + mov QWORD[144+r8],rbx + + lea rsi,[((-216))+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_aesni_gcm_decrypt wrt ..imagebase + DD $L$SEH_end_aesni_gcm_decrypt wrt ..imagebase + DD $L$SEH_gcm_dec_info wrt ..imagebase + + DD $L$SEH_begin_aesni_gcm_encrypt wrt ..imagebase + DD $L$SEH_end_aesni_gcm_encrypt wrt ..imagebase + DD $L$SEH_gcm_enc_info wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_gcm_dec_info: +DB 9,0,0,0 + DD gcm_se_handler wrt ..imagebase + DD $L$gcm_dec_body wrt ..imagebase,$L$gcm_dec_abort wrt ..imagebase +$L$SEH_gcm_enc_info: +DB 9,0,0,0 + DD gcm_se_handler wrt ..imagebase + DD $L$gcm_enc_body wrt ..imagebase,$L$gcm_enc_abort wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/modes/ghash-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/modes/ghash-x86_64.asm new file mode 100644 index 0000000..57fb390 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/modes/ghash-x86_64.asm @@ -0,0 +1,2070 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +EXTERN OPENSSL_ia32cap_P + +global gcm_gmult_4bit + +ALIGN 16 +gcm_gmult_4bit: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_gcm_gmult_4bit: + mov rdi,rcx + mov rsi,rdx + + + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,280 + +$L$gmult_prologue: + + movzx r8,BYTE[15+rdi] + lea r11,[$L$rem_4bit] + xor rax,rax + xor rbx,rbx + mov al,r8b + mov bl,r8b + shl al,4 + mov rcx,14 + mov r8,QWORD[8+rax*1+rsi] + mov r9,QWORD[rax*1+rsi] + and bl,0xf0 + mov rdx,r8 + jmp NEAR $L$oop1 + +ALIGN 16 +$L$oop1: + shr r8,4 + and rdx,0xf + mov r10,r9 + mov al,BYTE[rcx*1+rdi] + shr r9,4 + xor r8,QWORD[8+rbx*1+rsi] + shl r10,60 + xor r9,QWORD[rbx*1+rsi] + mov bl,al + xor r9,QWORD[rdx*8+r11] + mov rdx,r8 + shl al,4 + xor r8,r10 + dec rcx + js NEAR $L$break1 + + shr r8,4 + and rdx,0xf + mov r10,r9 + shr r9,4 + xor r8,QWORD[8+rax*1+rsi] + shl r10,60 + xor r9,QWORD[rax*1+rsi] + and bl,0xf0 + xor r9,QWORD[rdx*8+r11] + mov rdx,r8 + xor r8,r10 + jmp NEAR $L$oop1 + +ALIGN 16 +$L$break1: + shr r8,4 + and rdx,0xf + mov r10,r9 + shr r9,4 + xor r8,QWORD[8+rax*1+rsi] + shl r10,60 + xor r9,QWORD[rax*1+rsi] + and bl,0xf0 + xor r9,QWORD[rdx*8+r11] + mov rdx,r8 + xor r8,r10 + + shr r8,4 + and rdx,0xf + mov r10,r9 + shr r9,4 + xor r8,QWORD[8+rbx*1+rsi] + shl r10,60 + xor r9,QWORD[rbx*1+rsi] + xor r8,r10 + xor r9,QWORD[rdx*8+r11] + + bswap r8 + bswap r9 + mov QWORD[8+rdi],r8 + mov QWORD[rdi],r9 + + lea rsi,[((280+48))+rsp] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$gmult_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_gcm_gmult_4bit: +global gcm_ghash_4bit + +ALIGN 16 +gcm_ghash_4bit: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_gcm_ghash_4bit: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,280 + +$L$ghash_prologue: + mov r14,rdx + mov r15,rcx + sub rsi,-128 + lea rbp,[((16+128))+rsp] + xor edx,edx + mov r8,QWORD[((0+0-128))+rsi] + mov rax,QWORD[((0+8-128))+rsi] + mov dl,al + shr rax,4 + mov r10,r8 + shr r8,4 + mov r9,QWORD[((16+0-128))+rsi] + shl dl,4 + mov rbx,QWORD[((16+8-128))+rsi] + shl r10,60 + mov BYTE[rsp],dl + or rax,r10 + mov dl,bl + shr rbx,4 + mov r10,r9 + shr r9,4 + mov QWORD[rbp],r8 + mov r8,QWORD[((32+0-128))+rsi] + shl dl,4 + mov QWORD[((0-128))+rbp],rax + mov rax,QWORD[((32+8-128))+rsi] + shl r10,60 + mov BYTE[1+rsp],dl + or rbx,r10 + mov dl,al + shr rax,4 + mov r10,r8 + shr r8,4 + mov QWORD[8+rbp],r9 + mov r9,QWORD[((48+0-128))+rsi] + shl dl,4 + mov QWORD[((8-128))+rbp],rbx + mov rbx,QWORD[((48+8-128))+rsi] + shl r10,60 + mov BYTE[2+rsp],dl + or rax,r10 + mov dl,bl + shr rbx,4 + mov r10,r9 + shr r9,4 + mov QWORD[16+rbp],r8 + mov r8,QWORD[((64+0-128))+rsi] + shl dl,4 + mov QWORD[((16-128))+rbp],rax + mov rax,QWORD[((64+8-128))+rsi] + shl r10,60 + mov BYTE[3+rsp],dl + or rbx,r10 + mov dl,al + shr rax,4 + mov r10,r8 + shr r8,4 + mov QWORD[24+rbp],r9 + mov r9,QWORD[((80+0-128))+rsi] + shl dl,4 + mov QWORD[((24-128))+rbp],rbx + mov rbx,QWORD[((80+8-128))+rsi] + shl r10,60 + mov BYTE[4+rsp],dl + or rax,r10 + mov dl,bl + shr rbx,4 + mov r10,r9 + shr r9,4 + mov QWORD[32+rbp],r8 + mov r8,QWORD[((96+0-128))+rsi] + shl dl,4 + mov QWORD[((32-128))+rbp],rax + mov rax,QWORD[((96+8-128))+rsi] + shl r10,60 + mov BYTE[5+rsp],dl + or rbx,r10 + mov dl,al + shr rax,4 + mov r10,r8 + shr r8,4 + mov QWORD[40+rbp],r9 + mov r9,QWORD[((112+0-128))+rsi] + shl dl,4 + mov QWORD[((40-128))+rbp],rbx + mov rbx,QWORD[((112+8-128))+rsi] + shl r10,60 + mov BYTE[6+rsp],dl + or rax,r10 + mov dl,bl + shr rbx,4 + mov r10,r9 + shr r9,4 + mov QWORD[48+rbp],r8 + mov r8,QWORD[((128+0-128))+rsi] + shl dl,4 + mov QWORD[((48-128))+rbp],rax + mov rax,QWORD[((128+8-128))+rsi] + shl r10,60 + mov BYTE[7+rsp],dl + or rbx,r10 + mov dl,al + shr rax,4 + mov r10,r8 + shr r8,4 + mov QWORD[56+rbp],r9 + mov r9,QWORD[((144+0-128))+rsi] + shl dl,4 + mov QWORD[((56-128))+rbp],rbx + mov rbx,QWORD[((144+8-128))+rsi] + shl r10,60 + mov BYTE[8+rsp],dl + or rax,r10 + mov dl,bl + shr rbx,4 + mov r10,r9 + shr r9,4 + mov QWORD[64+rbp],r8 + mov r8,QWORD[((160+0-128))+rsi] + shl dl,4 + mov QWORD[((64-128))+rbp],rax + mov rax,QWORD[((160+8-128))+rsi] + shl r10,60 + mov BYTE[9+rsp],dl + or rbx,r10 + mov dl,al + shr rax,4 + mov r10,r8 + shr r8,4 + mov QWORD[72+rbp],r9 + mov r9,QWORD[((176+0-128))+rsi] + shl dl,4 + mov QWORD[((72-128))+rbp],rbx + mov rbx,QWORD[((176+8-128))+rsi] + shl r10,60 + mov BYTE[10+rsp],dl + or rax,r10 + mov dl,bl + shr rbx,4 + mov r10,r9 + shr r9,4 + mov QWORD[80+rbp],r8 + mov r8,QWORD[((192+0-128))+rsi] + shl dl,4 + mov QWORD[((80-128))+rbp],rax + mov rax,QWORD[((192+8-128))+rsi] + shl r10,60 + mov BYTE[11+rsp],dl + or rbx,r10 + mov dl,al + shr rax,4 + mov r10,r8 + shr r8,4 + mov QWORD[88+rbp],r9 + mov r9,QWORD[((208+0-128))+rsi] + shl dl,4 + mov QWORD[((88-128))+rbp],rbx + mov rbx,QWORD[((208+8-128))+rsi] + shl r10,60 + mov BYTE[12+rsp],dl + or rax,r10 + mov dl,bl + shr rbx,4 + mov r10,r9 + shr r9,4 + mov QWORD[96+rbp],r8 + mov r8,QWORD[((224+0-128))+rsi] + shl dl,4 + mov QWORD[((96-128))+rbp],rax + mov rax,QWORD[((224+8-128))+rsi] + shl r10,60 + mov BYTE[13+rsp],dl + or rbx,r10 + mov dl,al + shr rax,4 + mov r10,r8 + shr r8,4 + mov QWORD[104+rbp],r9 + mov r9,QWORD[((240+0-128))+rsi] + shl dl,4 + mov QWORD[((104-128))+rbp],rbx + mov rbx,QWORD[((240+8-128))+rsi] + shl r10,60 + mov BYTE[14+rsp],dl + or rax,r10 + mov dl,bl + shr rbx,4 + mov r10,r9 + shr r9,4 + mov QWORD[112+rbp],r8 + shl dl,4 + mov QWORD[((112-128))+rbp],rax + shl r10,60 + mov BYTE[15+rsp],dl + or rbx,r10 + mov QWORD[120+rbp],r9 + mov QWORD[((120-128))+rbp],rbx + add rsi,-128 + mov r8,QWORD[8+rdi] + mov r9,QWORD[rdi] + add r15,r14 + lea r11,[$L$rem_8bit] + jmp NEAR $L$outer_loop +ALIGN 16 +$L$outer_loop: + xor r9,QWORD[r14] + mov rdx,QWORD[8+r14] + lea r14,[16+r14] + xor rdx,r8 + mov QWORD[rdi],r9 + mov QWORD[8+rdi],rdx + shr rdx,32 + xor rax,rax + rol edx,8 + mov al,dl + movzx ebx,dl + shl al,4 + shr ebx,4 + rol edx,8 + mov r8,QWORD[8+rax*1+rsi] + mov r9,QWORD[rax*1+rsi] + mov al,dl + movzx ecx,dl + shl al,4 + movzx r12,BYTE[rbx*1+rsp] + shr ecx,4 + xor r12,r8 + mov r10,r9 + shr r8,8 + movzx r12,r12b + shr r9,8 + xor r8,QWORD[((-128))+rbx*8+rbp] + shl r10,56 + xor r9,QWORD[rbx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r12,WORD[r12*2+r11] + movzx ebx,dl + shl al,4 + movzx r13,BYTE[rcx*1+rsp] + shr ebx,4 + shl r12,48 + xor r13,r8 + mov r10,r9 + xor r9,r12 + shr r8,8 + movzx r13,r13b + shr r9,8 + xor r8,QWORD[((-128))+rcx*8+rbp] + shl r10,56 + xor r9,QWORD[rcx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r13,WORD[r13*2+r11] + movzx ecx,dl + shl al,4 + movzx r12,BYTE[rbx*1+rsp] + shr ecx,4 + shl r13,48 + xor r12,r8 + mov r10,r9 + xor r9,r13 + shr r8,8 + movzx r12,r12b + mov edx,DWORD[8+rdi] + shr r9,8 + xor r8,QWORD[((-128))+rbx*8+rbp] + shl r10,56 + xor r9,QWORD[rbx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r12,WORD[r12*2+r11] + movzx ebx,dl + shl al,4 + movzx r13,BYTE[rcx*1+rsp] + shr ebx,4 + shl r12,48 + xor r13,r8 + mov r10,r9 + xor r9,r12 + shr r8,8 + movzx r13,r13b + shr r9,8 + xor r8,QWORD[((-128))+rcx*8+rbp] + shl r10,56 + xor r9,QWORD[rcx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r13,WORD[r13*2+r11] + movzx ecx,dl + shl al,4 + movzx r12,BYTE[rbx*1+rsp] + shr ecx,4 + shl r13,48 + xor r12,r8 + mov r10,r9 + xor r9,r13 + shr r8,8 + movzx r12,r12b + shr r9,8 + xor r8,QWORD[((-128))+rbx*8+rbp] + shl r10,56 + xor r9,QWORD[rbx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r12,WORD[r12*2+r11] + movzx ebx,dl + shl al,4 + movzx r13,BYTE[rcx*1+rsp] + shr ebx,4 + shl r12,48 + xor r13,r8 + mov r10,r9 + xor r9,r12 + shr r8,8 + movzx r13,r13b + shr r9,8 + xor r8,QWORD[((-128))+rcx*8+rbp] + shl r10,56 + xor r9,QWORD[rcx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r13,WORD[r13*2+r11] + movzx ecx,dl + shl al,4 + movzx r12,BYTE[rbx*1+rsp] + shr ecx,4 + shl r13,48 + xor r12,r8 + mov r10,r9 + xor r9,r13 + shr r8,8 + movzx r12,r12b + mov edx,DWORD[4+rdi] + shr r9,8 + xor r8,QWORD[((-128))+rbx*8+rbp] + shl r10,56 + xor r9,QWORD[rbx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r12,WORD[r12*2+r11] + movzx ebx,dl + shl al,4 + movzx r13,BYTE[rcx*1+rsp] + shr ebx,4 + shl r12,48 + xor r13,r8 + mov r10,r9 + xor r9,r12 + shr r8,8 + movzx r13,r13b + shr r9,8 + xor r8,QWORD[((-128))+rcx*8+rbp] + shl r10,56 + xor r9,QWORD[rcx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r13,WORD[r13*2+r11] + movzx ecx,dl + shl al,4 + movzx r12,BYTE[rbx*1+rsp] + shr ecx,4 + shl r13,48 + xor r12,r8 + mov r10,r9 + xor r9,r13 + shr r8,8 + movzx r12,r12b + shr r9,8 + xor r8,QWORD[((-128))+rbx*8+rbp] + shl r10,56 + xor r9,QWORD[rbx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r12,WORD[r12*2+r11] + movzx ebx,dl + shl al,4 + movzx r13,BYTE[rcx*1+rsp] + shr ebx,4 + shl r12,48 + xor r13,r8 + mov r10,r9 + xor r9,r12 + shr r8,8 + movzx r13,r13b + shr r9,8 + xor r8,QWORD[((-128))+rcx*8+rbp] + shl r10,56 + xor r9,QWORD[rcx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r13,WORD[r13*2+r11] + movzx ecx,dl + shl al,4 + movzx r12,BYTE[rbx*1+rsp] + shr ecx,4 + shl r13,48 + xor r12,r8 + mov r10,r9 + xor r9,r13 + shr r8,8 + movzx r12,r12b + mov edx,DWORD[rdi] + shr r9,8 + xor r8,QWORD[((-128))+rbx*8+rbp] + shl r10,56 + xor r9,QWORD[rbx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r12,WORD[r12*2+r11] + movzx ebx,dl + shl al,4 + movzx r13,BYTE[rcx*1+rsp] + shr ebx,4 + shl r12,48 + xor r13,r8 + mov r10,r9 + xor r9,r12 + shr r8,8 + movzx r13,r13b + shr r9,8 + xor r8,QWORD[((-128))+rcx*8+rbp] + shl r10,56 + xor r9,QWORD[rcx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r13,WORD[r13*2+r11] + movzx ecx,dl + shl al,4 + movzx r12,BYTE[rbx*1+rsp] + shr ecx,4 + shl r13,48 + xor r12,r8 + mov r10,r9 + xor r9,r13 + shr r8,8 + movzx r12,r12b + shr r9,8 + xor r8,QWORD[((-128))+rbx*8+rbp] + shl r10,56 + xor r9,QWORD[rbx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r12,WORD[r12*2+r11] + movzx ebx,dl + shl al,4 + movzx r13,BYTE[rcx*1+rsp] + shr ebx,4 + shl r12,48 + xor r13,r8 + mov r10,r9 + xor r9,r12 + shr r8,8 + movzx r13,r13b + shr r9,8 + xor r8,QWORD[((-128))+rcx*8+rbp] + shl r10,56 + xor r9,QWORD[rcx*8+rbp] + rol edx,8 + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + mov al,dl + xor r8,r10 + movzx r13,WORD[r13*2+r11] + movzx ecx,dl + shl al,4 + movzx r12,BYTE[rbx*1+rsp] + and ecx,240 + shl r13,48 + xor r12,r8 + mov r10,r9 + xor r9,r13 + shr r8,8 + movzx r12,r12b + mov edx,DWORD[((-4))+rdi] + shr r9,8 + xor r8,QWORD[((-128))+rbx*8+rbp] + shl r10,56 + xor r9,QWORD[rbx*8+rbp] + movzx r12,WORD[r12*2+r11] + xor r8,QWORD[8+rax*1+rsi] + xor r9,QWORD[rax*1+rsi] + shl r12,48 + xor r8,r10 + xor r9,r12 + movzx r13,r8b + shr r8,4 + mov r10,r9 + shl r13b,4 + shr r9,4 + xor r8,QWORD[8+rcx*1+rsi] + movzx r13,WORD[r13*2+r11] + shl r10,60 + xor r9,QWORD[rcx*1+rsi] + xor r8,r10 + shl r13,48 + bswap r8 + xor r9,r13 + bswap r9 + cmp r14,r15 + jb NEAR $L$outer_loop + mov QWORD[8+rdi],r8 + mov QWORD[rdi],r9 + + lea rsi,[((280+48))+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$ghash_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_gcm_ghash_4bit: +global gcm_init_clmul + +ALIGN 16 +gcm_init_clmul: + +$L$_init_clmul: +$L$SEH_begin_gcm_init_clmul: + +DB 0x48,0x83,0xec,0x18 +DB 0x0f,0x29,0x34,0x24 + movdqu xmm2,XMMWORD[rdx] + pshufd xmm2,xmm2,78 + + + pshufd xmm4,xmm2,255 + movdqa xmm3,xmm2 + psllq xmm2,1 + pxor xmm5,xmm5 + psrlq xmm3,63 + pcmpgtd xmm5,xmm4 + pslldq xmm3,8 + por xmm2,xmm3 + + + pand xmm5,XMMWORD[$L$0x1c2_polynomial] + pxor xmm2,xmm5 + + + pshufd xmm6,xmm2,78 + movdqa xmm0,xmm2 + pxor xmm6,xmm2 + movdqa xmm1,xmm0 + pshufd xmm3,xmm0,78 + pxor xmm3,xmm0 +DB 102,15,58,68,194,0 +DB 102,15,58,68,202,17 +DB 102,15,58,68,222,0 + pxor xmm3,xmm0 + pxor xmm3,xmm1 + + movdqa xmm4,xmm3 + psrldq xmm3,8 + pslldq xmm4,8 + pxor xmm1,xmm3 + pxor xmm0,xmm4 + + movdqa xmm4,xmm0 + movdqa xmm3,xmm0 + psllq xmm0,5 + pxor xmm3,xmm0 + psllq xmm0,1 + pxor xmm0,xmm3 + psllq xmm0,57 + movdqa xmm3,xmm0 + pslldq xmm0,8 + psrldq xmm3,8 + pxor xmm0,xmm4 + pxor xmm1,xmm3 + + + movdqa xmm4,xmm0 + psrlq xmm0,1 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm4 + psrlq xmm0,1 + pxor xmm0,xmm1 + pshufd xmm3,xmm2,78 + pshufd xmm4,xmm0,78 + pxor xmm3,xmm2 + movdqu XMMWORD[rcx],xmm2 + pxor xmm4,xmm0 + movdqu XMMWORD[16+rcx],xmm0 +DB 102,15,58,15,227,8 + movdqu XMMWORD[32+rcx],xmm4 + movdqa xmm1,xmm0 + pshufd xmm3,xmm0,78 + pxor xmm3,xmm0 +DB 102,15,58,68,194,0 +DB 102,15,58,68,202,17 +DB 102,15,58,68,222,0 + pxor xmm3,xmm0 + pxor xmm3,xmm1 + + movdqa xmm4,xmm3 + psrldq xmm3,8 + pslldq xmm4,8 + pxor xmm1,xmm3 + pxor xmm0,xmm4 + + movdqa xmm4,xmm0 + movdqa xmm3,xmm0 + psllq xmm0,5 + pxor xmm3,xmm0 + psllq xmm0,1 + pxor xmm0,xmm3 + psllq xmm0,57 + movdqa xmm3,xmm0 + pslldq xmm0,8 + psrldq xmm3,8 + pxor xmm0,xmm4 + pxor xmm1,xmm3 + + + movdqa xmm4,xmm0 + psrlq xmm0,1 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm4 + psrlq xmm0,1 + pxor xmm0,xmm1 + movdqa xmm5,xmm0 + movdqa xmm1,xmm0 + pshufd xmm3,xmm0,78 + pxor xmm3,xmm0 +DB 102,15,58,68,194,0 +DB 102,15,58,68,202,17 +DB 102,15,58,68,222,0 + pxor xmm3,xmm0 + pxor xmm3,xmm1 + + movdqa xmm4,xmm3 + psrldq xmm3,8 + pslldq xmm4,8 + pxor xmm1,xmm3 + pxor xmm0,xmm4 + + movdqa xmm4,xmm0 + movdqa xmm3,xmm0 + psllq xmm0,5 + pxor xmm3,xmm0 + psllq xmm0,1 + pxor xmm0,xmm3 + psllq xmm0,57 + movdqa xmm3,xmm0 + pslldq xmm0,8 + psrldq xmm3,8 + pxor xmm0,xmm4 + pxor xmm1,xmm3 + + + movdqa xmm4,xmm0 + psrlq xmm0,1 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm4 + psrlq xmm0,1 + pxor xmm0,xmm1 + pshufd xmm3,xmm5,78 + pshufd xmm4,xmm0,78 + pxor xmm3,xmm5 + movdqu XMMWORD[48+rcx],xmm5 + pxor xmm4,xmm0 + movdqu XMMWORD[64+rcx],xmm0 +DB 102,15,58,15,227,8 + movdqu XMMWORD[80+rcx],xmm4 + movaps xmm6,XMMWORD[rsp] + lea rsp,[24+rsp] +$L$SEH_end_gcm_init_clmul: + DB 0F3h,0C3h ;repret + + +global gcm_gmult_clmul + +ALIGN 16 +gcm_gmult_clmul: + +$L$_gmult_clmul: + movdqu xmm0,XMMWORD[rcx] + movdqa xmm5,XMMWORD[$L$bswap_mask] + movdqu xmm2,XMMWORD[rdx] + movdqu xmm4,XMMWORD[32+rdx] +DB 102,15,56,0,197 + movdqa xmm1,xmm0 + pshufd xmm3,xmm0,78 + pxor xmm3,xmm0 +DB 102,15,58,68,194,0 +DB 102,15,58,68,202,17 +DB 102,15,58,68,220,0 + pxor xmm3,xmm0 + pxor xmm3,xmm1 + + movdqa xmm4,xmm3 + psrldq xmm3,8 + pslldq xmm4,8 + pxor xmm1,xmm3 + pxor xmm0,xmm4 + + movdqa xmm4,xmm0 + movdqa xmm3,xmm0 + psllq xmm0,5 + pxor xmm3,xmm0 + psllq xmm0,1 + pxor xmm0,xmm3 + psllq xmm0,57 + movdqa xmm3,xmm0 + pslldq xmm0,8 + psrldq xmm3,8 + pxor xmm0,xmm4 + pxor xmm1,xmm3 + + + movdqa xmm4,xmm0 + psrlq xmm0,1 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm4 + psrlq xmm0,1 + pxor xmm0,xmm1 +DB 102,15,56,0,197 + movdqu XMMWORD[rcx],xmm0 + DB 0F3h,0C3h ;repret + + +global gcm_ghash_clmul + +ALIGN 32 +gcm_ghash_clmul: + +$L$_ghash_clmul: + lea rax,[((-136))+rsp] +$L$SEH_begin_gcm_ghash_clmul: + +DB 0x48,0x8d,0x60,0xe0 +DB 0x0f,0x29,0x70,0xe0 +DB 0x0f,0x29,0x78,0xf0 +DB 0x44,0x0f,0x29,0x00 +DB 0x44,0x0f,0x29,0x48,0x10 +DB 0x44,0x0f,0x29,0x50,0x20 +DB 0x44,0x0f,0x29,0x58,0x30 +DB 0x44,0x0f,0x29,0x60,0x40 +DB 0x44,0x0f,0x29,0x68,0x50 +DB 0x44,0x0f,0x29,0x70,0x60 +DB 0x44,0x0f,0x29,0x78,0x70 + movdqa xmm10,XMMWORD[$L$bswap_mask] + + movdqu xmm0,XMMWORD[rcx] + movdqu xmm2,XMMWORD[rdx] + movdqu xmm7,XMMWORD[32+rdx] +DB 102,65,15,56,0,194 + + sub r9,0x10 + jz NEAR $L$odd_tail + + movdqu xmm6,XMMWORD[16+rdx] + mov eax,DWORD[((OPENSSL_ia32cap_P+4))] + cmp r9,0x30 + jb NEAR $L$skip4x + + and eax,71303168 + cmp eax,4194304 + je NEAR $L$skip4x + + sub r9,0x30 + mov rax,0xA040608020C0E000 + movdqu xmm14,XMMWORD[48+rdx] + movdqu xmm15,XMMWORD[64+rdx] + + + + + movdqu xmm3,XMMWORD[48+r8] + movdqu xmm11,XMMWORD[32+r8] +DB 102,65,15,56,0,218 +DB 102,69,15,56,0,218 + movdqa xmm5,xmm3 + pshufd xmm4,xmm3,78 + pxor xmm4,xmm3 +DB 102,15,58,68,218,0 +DB 102,15,58,68,234,17 +DB 102,15,58,68,231,0 + + movdqa xmm13,xmm11 + pshufd xmm12,xmm11,78 + pxor xmm12,xmm11 +DB 102,68,15,58,68,222,0 +DB 102,68,15,58,68,238,17 +DB 102,68,15,58,68,231,16 + xorps xmm3,xmm11 + xorps xmm5,xmm13 + movups xmm7,XMMWORD[80+rdx] + xorps xmm4,xmm12 + + movdqu xmm11,XMMWORD[16+r8] + movdqu xmm8,XMMWORD[r8] +DB 102,69,15,56,0,218 +DB 102,69,15,56,0,194 + movdqa xmm13,xmm11 + pshufd xmm12,xmm11,78 + pxor xmm0,xmm8 + pxor xmm12,xmm11 +DB 102,69,15,58,68,222,0 + movdqa xmm1,xmm0 + pshufd xmm8,xmm0,78 + pxor xmm8,xmm0 +DB 102,69,15,58,68,238,17 +DB 102,68,15,58,68,231,0 + xorps xmm3,xmm11 + xorps xmm5,xmm13 + + lea r8,[64+r8] + sub r9,0x40 + jc NEAR $L$tail4x + + jmp NEAR $L$mod4_loop +ALIGN 32 +$L$mod4_loop: +DB 102,65,15,58,68,199,0 + xorps xmm4,xmm12 + movdqu xmm11,XMMWORD[48+r8] +DB 102,69,15,56,0,218 +DB 102,65,15,58,68,207,17 + xorps xmm0,xmm3 + movdqu xmm3,XMMWORD[32+r8] + movdqa xmm13,xmm11 +DB 102,68,15,58,68,199,16 + pshufd xmm12,xmm11,78 + xorps xmm1,xmm5 + pxor xmm12,xmm11 +DB 102,65,15,56,0,218 + movups xmm7,XMMWORD[32+rdx] + xorps xmm8,xmm4 +DB 102,68,15,58,68,218,0 + pshufd xmm4,xmm3,78 + + pxor xmm8,xmm0 + movdqa xmm5,xmm3 + pxor xmm8,xmm1 + pxor xmm4,xmm3 + movdqa xmm9,xmm8 +DB 102,68,15,58,68,234,17 + pslldq xmm8,8 + psrldq xmm9,8 + pxor xmm0,xmm8 + movdqa xmm8,XMMWORD[$L$7_mask] + pxor xmm1,xmm9 +DB 102,76,15,110,200 + + pand xmm8,xmm0 +DB 102,69,15,56,0,200 + pxor xmm9,xmm0 +DB 102,68,15,58,68,231,0 + psllq xmm9,57 + movdqa xmm8,xmm9 + pslldq xmm9,8 +DB 102,15,58,68,222,0 + psrldq xmm8,8 + pxor xmm0,xmm9 + pxor xmm1,xmm8 + movdqu xmm8,XMMWORD[r8] + + movdqa xmm9,xmm0 + psrlq xmm0,1 +DB 102,15,58,68,238,17 + xorps xmm3,xmm11 + movdqu xmm11,XMMWORD[16+r8] +DB 102,69,15,56,0,218 +DB 102,15,58,68,231,16 + xorps xmm5,xmm13 + movups xmm7,XMMWORD[80+rdx] +DB 102,69,15,56,0,194 + pxor xmm1,xmm9 + pxor xmm9,xmm0 + psrlq xmm0,5 + + movdqa xmm13,xmm11 + pxor xmm4,xmm12 + pshufd xmm12,xmm11,78 + pxor xmm0,xmm9 + pxor xmm1,xmm8 + pxor xmm12,xmm11 +DB 102,69,15,58,68,222,0 + psrlq xmm0,1 + pxor xmm0,xmm1 + movdqa xmm1,xmm0 +DB 102,69,15,58,68,238,17 + xorps xmm3,xmm11 + pshufd xmm8,xmm0,78 + pxor xmm8,xmm0 + +DB 102,68,15,58,68,231,0 + xorps xmm5,xmm13 + + lea r8,[64+r8] + sub r9,0x40 + jnc NEAR $L$mod4_loop + +$L$tail4x: +DB 102,65,15,58,68,199,0 +DB 102,65,15,58,68,207,17 +DB 102,68,15,58,68,199,16 + xorps xmm4,xmm12 + xorps xmm0,xmm3 + xorps xmm1,xmm5 + pxor xmm1,xmm0 + pxor xmm8,xmm4 + + pxor xmm8,xmm1 + pxor xmm1,xmm0 + + movdqa xmm9,xmm8 + psrldq xmm8,8 + pslldq xmm9,8 + pxor xmm1,xmm8 + pxor xmm0,xmm9 + + movdqa xmm4,xmm0 + movdqa xmm3,xmm0 + psllq xmm0,5 + pxor xmm3,xmm0 + psllq xmm0,1 + pxor xmm0,xmm3 + psllq xmm0,57 + movdqa xmm3,xmm0 + pslldq xmm0,8 + psrldq xmm3,8 + pxor xmm0,xmm4 + pxor xmm1,xmm3 + + + movdqa xmm4,xmm0 + psrlq xmm0,1 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm4 + psrlq xmm0,1 + pxor xmm0,xmm1 + add r9,0x40 + jz NEAR $L$done + movdqu xmm7,XMMWORD[32+rdx] + sub r9,0x10 + jz NEAR $L$odd_tail +$L$skip4x: + + + + + + movdqu xmm8,XMMWORD[r8] + movdqu xmm3,XMMWORD[16+r8] +DB 102,69,15,56,0,194 +DB 102,65,15,56,0,218 + pxor xmm0,xmm8 + + movdqa xmm5,xmm3 + pshufd xmm4,xmm3,78 + pxor xmm4,xmm3 +DB 102,15,58,68,218,0 +DB 102,15,58,68,234,17 +DB 102,15,58,68,231,0 + + lea r8,[32+r8] + nop + sub r9,0x20 + jbe NEAR $L$even_tail + nop + jmp NEAR $L$mod_loop + +ALIGN 32 +$L$mod_loop: + movdqa xmm1,xmm0 + movdqa xmm8,xmm4 + pshufd xmm4,xmm0,78 + pxor xmm4,xmm0 + +DB 102,15,58,68,198,0 +DB 102,15,58,68,206,17 +DB 102,15,58,68,231,16 + + pxor xmm0,xmm3 + pxor xmm1,xmm5 + movdqu xmm9,XMMWORD[r8] + pxor xmm8,xmm0 +DB 102,69,15,56,0,202 + movdqu xmm3,XMMWORD[16+r8] + + pxor xmm8,xmm1 + pxor xmm1,xmm9 + pxor xmm4,xmm8 +DB 102,65,15,56,0,218 + movdqa xmm8,xmm4 + psrldq xmm8,8 + pslldq xmm4,8 + pxor xmm1,xmm8 + pxor xmm0,xmm4 + + movdqa xmm5,xmm3 + + movdqa xmm9,xmm0 + movdqa xmm8,xmm0 + psllq xmm0,5 + pxor xmm8,xmm0 +DB 102,15,58,68,218,0 + psllq xmm0,1 + pxor xmm0,xmm8 + psllq xmm0,57 + movdqa xmm8,xmm0 + pslldq xmm0,8 + psrldq xmm8,8 + pxor xmm0,xmm9 + pshufd xmm4,xmm5,78 + pxor xmm1,xmm8 + pxor xmm4,xmm5 + + movdqa xmm9,xmm0 + psrlq xmm0,1 +DB 102,15,58,68,234,17 + pxor xmm1,xmm9 + pxor xmm9,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm9 + lea r8,[32+r8] + psrlq xmm0,1 +DB 102,15,58,68,231,0 + pxor xmm0,xmm1 + + sub r9,0x20 + ja NEAR $L$mod_loop + +$L$even_tail: + movdqa xmm1,xmm0 + movdqa xmm8,xmm4 + pshufd xmm4,xmm0,78 + pxor xmm4,xmm0 + +DB 102,15,58,68,198,0 +DB 102,15,58,68,206,17 +DB 102,15,58,68,231,16 + + pxor xmm0,xmm3 + pxor xmm1,xmm5 + pxor xmm8,xmm0 + pxor xmm8,xmm1 + pxor xmm4,xmm8 + movdqa xmm8,xmm4 + psrldq xmm8,8 + pslldq xmm4,8 + pxor xmm1,xmm8 + pxor xmm0,xmm4 + + movdqa xmm4,xmm0 + movdqa xmm3,xmm0 + psllq xmm0,5 + pxor xmm3,xmm0 + psllq xmm0,1 + pxor xmm0,xmm3 + psllq xmm0,57 + movdqa xmm3,xmm0 + pslldq xmm0,8 + psrldq xmm3,8 + pxor xmm0,xmm4 + pxor xmm1,xmm3 + + + movdqa xmm4,xmm0 + psrlq xmm0,1 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm4 + psrlq xmm0,1 + pxor xmm0,xmm1 + test r9,r9 + jnz NEAR $L$done + +$L$odd_tail: + movdqu xmm8,XMMWORD[r8] +DB 102,69,15,56,0,194 + pxor xmm0,xmm8 + movdqa xmm1,xmm0 + pshufd xmm3,xmm0,78 + pxor xmm3,xmm0 +DB 102,15,58,68,194,0 +DB 102,15,58,68,202,17 +DB 102,15,58,68,223,0 + pxor xmm3,xmm0 + pxor xmm3,xmm1 + + movdqa xmm4,xmm3 + psrldq xmm3,8 + pslldq xmm4,8 + pxor xmm1,xmm3 + pxor xmm0,xmm4 + + movdqa xmm4,xmm0 + movdqa xmm3,xmm0 + psllq xmm0,5 + pxor xmm3,xmm0 + psllq xmm0,1 + pxor xmm0,xmm3 + psllq xmm0,57 + movdqa xmm3,xmm0 + pslldq xmm0,8 + psrldq xmm3,8 + pxor xmm0,xmm4 + pxor xmm1,xmm3 + + + movdqa xmm4,xmm0 + psrlq xmm0,1 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm4 + psrlq xmm0,1 + pxor xmm0,xmm1 +$L$done: +DB 102,65,15,56,0,194 + movdqu XMMWORD[rcx],xmm0 + movaps xmm6,XMMWORD[rsp] + movaps xmm7,XMMWORD[16+rsp] + movaps xmm8,XMMWORD[32+rsp] + movaps xmm9,XMMWORD[48+rsp] + movaps xmm10,XMMWORD[64+rsp] + movaps xmm11,XMMWORD[80+rsp] + movaps xmm12,XMMWORD[96+rsp] + movaps xmm13,XMMWORD[112+rsp] + movaps xmm14,XMMWORD[128+rsp] + movaps xmm15,XMMWORD[144+rsp] + lea rsp,[168+rsp] +$L$SEH_end_gcm_ghash_clmul: + DB 0F3h,0C3h ;repret + + +global gcm_init_avx + +ALIGN 32 +gcm_init_avx: + +$L$SEH_begin_gcm_init_avx: + +DB 0x48,0x83,0xec,0x18 +DB 0x0f,0x29,0x34,0x24 + vzeroupper + + vmovdqu xmm2,XMMWORD[rdx] + vpshufd xmm2,xmm2,78 + + + vpshufd xmm4,xmm2,255 + vpsrlq xmm3,xmm2,63 + vpsllq xmm2,xmm2,1 + vpxor xmm5,xmm5,xmm5 + vpcmpgtd xmm5,xmm5,xmm4 + vpslldq xmm3,xmm3,8 + vpor xmm2,xmm2,xmm3 + + + vpand xmm5,xmm5,XMMWORD[$L$0x1c2_polynomial] + vpxor xmm2,xmm2,xmm5 + + vpunpckhqdq xmm6,xmm2,xmm2 + vmovdqa xmm0,xmm2 + vpxor xmm6,xmm6,xmm2 + mov r10,4 + jmp NEAR $L$init_start_avx +ALIGN 32 +$L$init_loop_avx: + vpalignr xmm5,xmm4,xmm3,8 + vmovdqu XMMWORD[(-16)+rcx],xmm5 + vpunpckhqdq xmm3,xmm0,xmm0 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm1,xmm0,xmm2,0x11 + vpclmulqdq xmm0,xmm0,xmm2,0x00 + vpclmulqdq xmm3,xmm3,xmm6,0x00 + vpxor xmm4,xmm1,xmm0 + vpxor xmm3,xmm3,xmm4 + + vpslldq xmm4,xmm3,8 + vpsrldq xmm3,xmm3,8 + vpxor xmm0,xmm0,xmm4 + vpxor xmm1,xmm1,xmm3 + vpsllq xmm3,xmm0,57 + vpsllq xmm4,xmm0,62 + vpxor xmm4,xmm4,xmm3 + vpsllq xmm3,xmm0,63 + vpxor xmm4,xmm4,xmm3 + vpslldq xmm3,xmm4,8 + vpsrldq xmm4,xmm4,8 + vpxor xmm0,xmm0,xmm3 + vpxor xmm1,xmm1,xmm4 + + vpsrlq xmm4,xmm0,1 + vpxor xmm1,xmm1,xmm0 + vpxor xmm0,xmm0,xmm4 + vpsrlq xmm4,xmm4,5 + vpxor xmm0,xmm0,xmm4 + vpsrlq xmm0,xmm0,1 + vpxor xmm0,xmm0,xmm1 +$L$init_start_avx: + vmovdqa xmm5,xmm0 + vpunpckhqdq xmm3,xmm0,xmm0 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm1,xmm0,xmm2,0x11 + vpclmulqdq xmm0,xmm0,xmm2,0x00 + vpclmulqdq xmm3,xmm3,xmm6,0x00 + vpxor xmm4,xmm1,xmm0 + vpxor xmm3,xmm3,xmm4 + + vpslldq xmm4,xmm3,8 + vpsrldq xmm3,xmm3,8 + vpxor xmm0,xmm0,xmm4 + vpxor xmm1,xmm1,xmm3 + vpsllq xmm3,xmm0,57 + vpsllq xmm4,xmm0,62 + vpxor xmm4,xmm4,xmm3 + vpsllq xmm3,xmm0,63 + vpxor xmm4,xmm4,xmm3 + vpslldq xmm3,xmm4,8 + vpsrldq xmm4,xmm4,8 + vpxor xmm0,xmm0,xmm3 + vpxor xmm1,xmm1,xmm4 + + vpsrlq xmm4,xmm0,1 + vpxor xmm1,xmm1,xmm0 + vpxor xmm0,xmm0,xmm4 + vpsrlq xmm4,xmm4,5 + vpxor xmm0,xmm0,xmm4 + vpsrlq xmm0,xmm0,1 + vpxor xmm0,xmm0,xmm1 + vpshufd xmm3,xmm5,78 + vpshufd xmm4,xmm0,78 + vpxor xmm3,xmm3,xmm5 + vmovdqu XMMWORD[rcx],xmm5 + vpxor xmm4,xmm4,xmm0 + vmovdqu XMMWORD[16+rcx],xmm0 + lea rcx,[48+rcx] + sub r10,1 + jnz NEAR $L$init_loop_avx + + vpalignr xmm5,xmm3,xmm4,8 + vmovdqu XMMWORD[(-16)+rcx],xmm5 + + vzeroupper + movaps xmm6,XMMWORD[rsp] + lea rsp,[24+rsp] +$L$SEH_end_gcm_init_avx: + DB 0F3h,0C3h ;repret + + +global gcm_gmult_avx + +ALIGN 32 +gcm_gmult_avx: + + jmp NEAR $L$_gmult_clmul + + +global gcm_ghash_avx + +ALIGN 32 +gcm_ghash_avx: + + lea rax,[((-136))+rsp] +$L$SEH_begin_gcm_ghash_avx: + +DB 0x48,0x8d,0x60,0xe0 +DB 0x0f,0x29,0x70,0xe0 +DB 0x0f,0x29,0x78,0xf0 +DB 0x44,0x0f,0x29,0x00 +DB 0x44,0x0f,0x29,0x48,0x10 +DB 0x44,0x0f,0x29,0x50,0x20 +DB 0x44,0x0f,0x29,0x58,0x30 +DB 0x44,0x0f,0x29,0x60,0x40 +DB 0x44,0x0f,0x29,0x68,0x50 +DB 0x44,0x0f,0x29,0x70,0x60 +DB 0x44,0x0f,0x29,0x78,0x70 + vzeroupper + + vmovdqu xmm10,XMMWORD[rcx] + lea r10,[$L$0x1c2_polynomial] + lea rdx,[64+rdx] + vmovdqu xmm13,XMMWORD[$L$bswap_mask] + vpshufb xmm10,xmm10,xmm13 + cmp r9,0x80 + jb NEAR $L$short_avx + sub r9,0x80 + + vmovdqu xmm14,XMMWORD[112+r8] + vmovdqu xmm6,XMMWORD[((0-64))+rdx] + vpshufb xmm14,xmm14,xmm13 + vmovdqu xmm7,XMMWORD[((32-64))+rdx] + + vpunpckhqdq xmm9,xmm14,xmm14 + vmovdqu xmm15,XMMWORD[96+r8] + vpclmulqdq xmm0,xmm14,xmm6,0x00 + vpxor xmm9,xmm9,xmm14 + vpshufb xmm15,xmm15,xmm13 + vpclmulqdq xmm1,xmm14,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((16-64))+rdx] + vpunpckhqdq xmm8,xmm15,xmm15 + vmovdqu xmm14,XMMWORD[80+r8] + vpclmulqdq xmm2,xmm9,xmm7,0x00 + vpxor xmm8,xmm8,xmm15 + + vpshufb xmm14,xmm14,xmm13 + vpclmulqdq xmm3,xmm15,xmm6,0x00 + vpunpckhqdq xmm9,xmm14,xmm14 + vpclmulqdq xmm4,xmm15,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((48-64))+rdx] + vpxor xmm9,xmm9,xmm14 + vmovdqu xmm15,XMMWORD[64+r8] + vpclmulqdq xmm5,xmm8,xmm7,0x10 + vmovdqu xmm7,XMMWORD[((80-64))+rdx] + + vpshufb xmm15,xmm15,xmm13 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm0,xmm14,xmm6,0x00 + vpxor xmm4,xmm4,xmm1 + vpunpckhqdq xmm8,xmm15,xmm15 + vpclmulqdq xmm1,xmm14,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((64-64))+rdx] + vpxor xmm5,xmm5,xmm2 + vpclmulqdq xmm2,xmm9,xmm7,0x00 + vpxor xmm8,xmm8,xmm15 + + vmovdqu xmm14,XMMWORD[48+r8] + vpxor xmm0,xmm0,xmm3 + vpclmulqdq xmm3,xmm15,xmm6,0x00 + vpxor xmm1,xmm1,xmm4 + vpshufb xmm14,xmm14,xmm13 + vpclmulqdq xmm4,xmm15,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((96-64))+rdx] + vpxor xmm2,xmm2,xmm5 + vpunpckhqdq xmm9,xmm14,xmm14 + vpclmulqdq xmm5,xmm8,xmm7,0x10 + vmovdqu xmm7,XMMWORD[((128-64))+rdx] + vpxor xmm9,xmm9,xmm14 + + vmovdqu xmm15,XMMWORD[32+r8] + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm0,xmm14,xmm6,0x00 + vpxor xmm4,xmm4,xmm1 + vpshufb xmm15,xmm15,xmm13 + vpclmulqdq xmm1,xmm14,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((112-64))+rdx] + vpxor xmm5,xmm5,xmm2 + vpunpckhqdq xmm8,xmm15,xmm15 + vpclmulqdq xmm2,xmm9,xmm7,0x00 + vpxor xmm8,xmm8,xmm15 + + vmovdqu xmm14,XMMWORD[16+r8] + vpxor xmm0,xmm0,xmm3 + vpclmulqdq xmm3,xmm15,xmm6,0x00 + vpxor xmm1,xmm1,xmm4 + vpshufb xmm14,xmm14,xmm13 + vpclmulqdq xmm4,xmm15,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((144-64))+rdx] + vpxor xmm2,xmm2,xmm5 + vpunpckhqdq xmm9,xmm14,xmm14 + vpclmulqdq xmm5,xmm8,xmm7,0x10 + vmovdqu xmm7,XMMWORD[((176-64))+rdx] + vpxor xmm9,xmm9,xmm14 + + vmovdqu xmm15,XMMWORD[r8] + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm0,xmm14,xmm6,0x00 + vpxor xmm4,xmm4,xmm1 + vpshufb xmm15,xmm15,xmm13 + vpclmulqdq xmm1,xmm14,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((160-64))+rdx] + vpxor xmm5,xmm5,xmm2 + vpclmulqdq xmm2,xmm9,xmm7,0x10 + + lea r8,[128+r8] + cmp r9,0x80 + jb NEAR $L$tail_avx + + vpxor xmm15,xmm15,xmm10 + sub r9,0x80 + jmp NEAR $L$oop8x_avx + +ALIGN 32 +$L$oop8x_avx: + vpunpckhqdq xmm8,xmm15,xmm15 + vmovdqu xmm14,XMMWORD[112+r8] + vpxor xmm3,xmm3,xmm0 + vpxor xmm8,xmm8,xmm15 + vpclmulqdq xmm10,xmm15,xmm6,0x00 + vpshufb xmm14,xmm14,xmm13 + vpxor xmm4,xmm4,xmm1 + vpclmulqdq xmm11,xmm15,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((0-64))+rdx] + vpunpckhqdq xmm9,xmm14,xmm14 + vpxor xmm5,xmm5,xmm2 + vpclmulqdq xmm12,xmm8,xmm7,0x00 + vmovdqu xmm7,XMMWORD[((32-64))+rdx] + vpxor xmm9,xmm9,xmm14 + + vmovdqu xmm15,XMMWORD[96+r8] + vpclmulqdq xmm0,xmm14,xmm6,0x00 + vpxor xmm10,xmm10,xmm3 + vpshufb xmm15,xmm15,xmm13 + vpclmulqdq xmm1,xmm14,xmm6,0x11 + vxorps xmm11,xmm11,xmm4 + vmovdqu xmm6,XMMWORD[((16-64))+rdx] + vpunpckhqdq xmm8,xmm15,xmm15 + vpclmulqdq xmm2,xmm9,xmm7,0x00 + vpxor xmm12,xmm12,xmm5 + vxorps xmm8,xmm8,xmm15 + + vmovdqu xmm14,XMMWORD[80+r8] + vpxor xmm12,xmm12,xmm10 + vpclmulqdq xmm3,xmm15,xmm6,0x00 + vpxor xmm12,xmm12,xmm11 + vpslldq xmm9,xmm12,8 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm4,xmm15,xmm6,0x11 + vpsrldq xmm12,xmm12,8 + vpxor xmm10,xmm10,xmm9 + vmovdqu xmm6,XMMWORD[((48-64))+rdx] + vpshufb xmm14,xmm14,xmm13 + vxorps xmm11,xmm11,xmm12 + vpxor xmm4,xmm4,xmm1 + vpunpckhqdq xmm9,xmm14,xmm14 + vpclmulqdq xmm5,xmm8,xmm7,0x10 + vmovdqu xmm7,XMMWORD[((80-64))+rdx] + vpxor xmm9,xmm9,xmm14 + vpxor xmm5,xmm5,xmm2 + + vmovdqu xmm15,XMMWORD[64+r8] + vpalignr xmm12,xmm10,xmm10,8 + vpclmulqdq xmm0,xmm14,xmm6,0x00 + vpshufb xmm15,xmm15,xmm13 + vpxor xmm0,xmm0,xmm3 + vpclmulqdq xmm1,xmm14,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((64-64))+rdx] + vpunpckhqdq xmm8,xmm15,xmm15 + vpxor xmm1,xmm1,xmm4 + vpclmulqdq xmm2,xmm9,xmm7,0x00 + vxorps xmm8,xmm8,xmm15 + vpxor xmm2,xmm2,xmm5 + + vmovdqu xmm14,XMMWORD[48+r8] + vpclmulqdq xmm10,xmm10,XMMWORD[r10],0x10 + vpclmulqdq xmm3,xmm15,xmm6,0x00 + vpshufb xmm14,xmm14,xmm13 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm4,xmm15,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((96-64))+rdx] + vpunpckhqdq xmm9,xmm14,xmm14 + vpxor xmm4,xmm4,xmm1 + vpclmulqdq xmm5,xmm8,xmm7,0x10 + vmovdqu xmm7,XMMWORD[((128-64))+rdx] + vpxor xmm9,xmm9,xmm14 + vpxor xmm5,xmm5,xmm2 + + vmovdqu xmm15,XMMWORD[32+r8] + vpclmulqdq xmm0,xmm14,xmm6,0x00 + vpshufb xmm15,xmm15,xmm13 + vpxor xmm0,xmm0,xmm3 + vpclmulqdq xmm1,xmm14,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((112-64))+rdx] + vpunpckhqdq xmm8,xmm15,xmm15 + vpxor xmm1,xmm1,xmm4 + vpclmulqdq xmm2,xmm9,xmm7,0x00 + vpxor xmm8,xmm8,xmm15 + vpxor xmm2,xmm2,xmm5 + vxorps xmm10,xmm10,xmm12 + + vmovdqu xmm14,XMMWORD[16+r8] + vpalignr xmm12,xmm10,xmm10,8 + vpclmulqdq xmm3,xmm15,xmm6,0x00 + vpshufb xmm14,xmm14,xmm13 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm4,xmm15,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((144-64))+rdx] + vpclmulqdq xmm10,xmm10,XMMWORD[r10],0x10 + vxorps xmm12,xmm12,xmm11 + vpunpckhqdq xmm9,xmm14,xmm14 + vpxor xmm4,xmm4,xmm1 + vpclmulqdq xmm5,xmm8,xmm7,0x10 + vmovdqu xmm7,XMMWORD[((176-64))+rdx] + vpxor xmm9,xmm9,xmm14 + vpxor xmm5,xmm5,xmm2 + + vmovdqu xmm15,XMMWORD[r8] + vpclmulqdq xmm0,xmm14,xmm6,0x00 + vpshufb xmm15,xmm15,xmm13 + vpclmulqdq xmm1,xmm14,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((160-64))+rdx] + vpxor xmm15,xmm15,xmm12 + vpclmulqdq xmm2,xmm9,xmm7,0x10 + vpxor xmm15,xmm15,xmm10 + + lea r8,[128+r8] + sub r9,0x80 + jnc NEAR $L$oop8x_avx + + add r9,0x80 + jmp NEAR $L$tail_no_xor_avx + +ALIGN 32 +$L$short_avx: + vmovdqu xmm14,XMMWORD[((-16))+r9*1+r8] + lea r8,[r9*1+r8] + vmovdqu xmm6,XMMWORD[((0-64))+rdx] + vmovdqu xmm7,XMMWORD[((32-64))+rdx] + vpshufb xmm15,xmm14,xmm13 + + vmovdqa xmm3,xmm0 + vmovdqa xmm4,xmm1 + vmovdqa xmm5,xmm2 + sub r9,0x10 + jz NEAR $L$tail_avx + + vpunpckhqdq xmm8,xmm15,xmm15 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm0,xmm15,xmm6,0x00 + vpxor xmm8,xmm8,xmm15 + vmovdqu xmm14,XMMWORD[((-32))+r8] + vpxor xmm4,xmm4,xmm1 + vpclmulqdq xmm1,xmm15,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((16-64))+rdx] + vpshufb xmm15,xmm14,xmm13 + vpxor xmm5,xmm5,xmm2 + vpclmulqdq xmm2,xmm8,xmm7,0x00 + vpsrldq xmm7,xmm7,8 + sub r9,0x10 + jz NEAR $L$tail_avx + + vpunpckhqdq xmm8,xmm15,xmm15 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm0,xmm15,xmm6,0x00 + vpxor xmm8,xmm8,xmm15 + vmovdqu xmm14,XMMWORD[((-48))+r8] + vpxor xmm4,xmm4,xmm1 + vpclmulqdq xmm1,xmm15,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((48-64))+rdx] + vpshufb xmm15,xmm14,xmm13 + vpxor xmm5,xmm5,xmm2 + vpclmulqdq xmm2,xmm8,xmm7,0x00 + vmovdqu xmm7,XMMWORD[((80-64))+rdx] + sub r9,0x10 + jz NEAR $L$tail_avx + + vpunpckhqdq xmm8,xmm15,xmm15 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm0,xmm15,xmm6,0x00 + vpxor xmm8,xmm8,xmm15 + vmovdqu xmm14,XMMWORD[((-64))+r8] + vpxor xmm4,xmm4,xmm1 + vpclmulqdq xmm1,xmm15,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((64-64))+rdx] + vpshufb xmm15,xmm14,xmm13 + vpxor xmm5,xmm5,xmm2 + vpclmulqdq xmm2,xmm8,xmm7,0x00 + vpsrldq xmm7,xmm7,8 + sub r9,0x10 + jz NEAR $L$tail_avx + + vpunpckhqdq xmm8,xmm15,xmm15 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm0,xmm15,xmm6,0x00 + vpxor xmm8,xmm8,xmm15 + vmovdqu xmm14,XMMWORD[((-80))+r8] + vpxor xmm4,xmm4,xmm1 + vpclmulqdq xmm1,xmm15,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((96-64))+rdx] + vpshufb xmm15,xmm14,xmm13 + vpxor xmm5,xmm5,xmm2 + vpclmulqdq xmm2,xmm8,xmm7,0x00 + vmovdqu xmm7,XMMWORD[((128-64))+rdx] + sub r9,0x10 + jz NEAR $L$tail_avx + + vpunpckhqdq xmm8,xmm15,xmm15 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm0,xmm15,xmm6,0x00 + vpxor xmm8,xmm8,xmm15 + vmovdqu xmm14,XMMWORD[((-96))+r8] + vpxor xmm4,xmm4,xmm1 + vpclmulqdq xmm1,xmm15,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((112-64))+rdx] + vpshufb xmm15,xmm14,xmm13 + vpxor xmm5,xmm5,xmm2 + vpclmulqdq xmm2,xmm8,xmm7,0x00 + vpsrldq xmm7,xmm7,8 + sub r9,0x10 + jz NEAR $L$tail_avx + + vpunpckhqdq xmm8,xmm15,xmm15 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm0,xmm15,xmm6,0x00 + vpxor xmm8,xmm8,xmm15 + vmovdqu xmm14,XMMWORD[((-112))+r8] + vpxor xmm4,xmm4,xmm1 + vpclmulqdq xmm1,xmm15,xmm6,0x11 + vmovdqu xmm6,XMMWORD[((144-64))+rdx] + vpshufb xmm15,xmm14,xmm13 + vpxor xmm5,xmm5,xmm2 + vpclmulqdq xmm2,xmm8,xmm7,0x00 + vmovq xmm7,QWORD[((184-64))+rdx] + sub r9,0x10 + jmp NEAR $L$tail_avx + +ALIGN 32 +$L$tail_avx: + vpxor xmm15,xmm15,xmm10 +$L$tail_no_xor_avx: + vpunpckhqdq xmm8,xmm15,xmm15 + vpxor xmm3,xmm3,xmm0 + vpclmulqdq xmm0,xmm15,xmm6,0x00 + vpxor xmm8,xmm8,xmm15 + vpxor xmm4,xmm4,xmm1 + vpclmulqdq xmm1,xmm15,xmm6,0x11 + vpxor xmm5,xmm5,xmm2 + vpclmulqdq xmm2,xmm8,xmm7,0x00 + + vmovdqu xmm12,XMMWORD[r10] + + vpxor xmm10,xmm3,xmm0 + vpxor xmm11,xmm4,xmm1 + vpxor xmm5,xmm5,xmm2 + + vpxor xmm5,xmm5,xmm10 + vpxor xmm5,xmm5,xmm11 + vpslldq xmm9,xmm5,8 + vpsrldq xmm5,xmm5,8 + vpxor xmm10,xmm10,xmm9 + vpxor xmm11,xmm11,xmm5 + + vpclmulqdq xmm9,xmm10,xmm12,0x10 + vpalignr xmm10,xmm10,xmm10,8 + vpxor xmm10,xmm10,xmm9 + + vpclmulqdq xmm9,xmm10,xmm12,0x10 + vpalignr xmm10,xmm10,xmm10,8 + vpxor xmm10,xmm10,xmm11 + vpxor xmm10,xmm10,xmm9 + + cmp r9,0 + jne NEAR $L$short_avx + + vpshufb xmm10,xmm10,xmm13 + vmovdqu XMMWORD[rcx],xmm10 + vzeroupper + movaps xmm6,XMMWORD[rsp] + movaps xmm7,XMMWORD[16+rsp] + movaps xmm8,XMMWORD[32+rsp] + movaps xmm9,XMMWORD[48+rsp] + movaps xmm10,XMMWORD[64+rsp] + movaps xmm11,XMMWORD[80+rsp] + movaps xmm12,XMMWORD[96+rsp] + movaps xmm13,XMMWORD[112+rsp] + movaps xmm14,XMMWORD[128+rsp] + movaps xmm15,XMMWORD[144+rsp] + lea rsp,[168+rsp] +$L$SEH_end_gcm_ghash_avx: + DB 0F3h,0C3h ;repret + + +ALIGN 64 +$L$bswap_mask: +DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +$L$0x1c2_polynomial: +DB 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 +$L$7_mask: + DD 7,0,7,0 +$L$7_mask_poly: + DD 7,0,450,0 +ALIGN 64 + +$L$rem_4bit: + DD 0,0,0,471859200,0,943718400,0,610271232 + DD 0,1887436800,0,1822425088,0,1220542464,0,1423966208 + DD 0,3774873600,0,4246732800,0,3644850176,0,3311403008 + DD 0,2441084928,0,2376073216,0,2847932416,0,3051356160 + +$L$rem_8bit: + DW 0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E + DW 0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E + DW 0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E + DW 0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E + DW 0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E + DW 0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E + DW 0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E + DW 0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E + DW 0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE + DW 0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE + DW 0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE + DW 0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE + DW 0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E + DW 0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E + DW 0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE + DW 0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE + DW 0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E + DW 0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E + DW 0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E + DW 0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E + DW 0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E + DW 0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E + DW 0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E + DW 0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E + DW 0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE + DW 0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE + DW 0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE + DW 0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE + DW 0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E + DW 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E + DW 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE + DW 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE + +DB 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52 +DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 +DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 +DB 114,103,62,0 +ALIGN 64 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$in_prologue + + lea rax,[((48+280))+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_gcm_gmult_4bit wrt ..imagebase + DD $L$SEH_end_gcm_gmult_4bit wrt ..imagebase + DD $L$SEH_info_gcm_gmult_4bit wrt ..imagebase + + DD $L$SEH_begin_gcm_ghash_4bit wrt ..imagebase + DD $L$SEH_end_gcm_ghash_4bit wrt ..imagebase + DD $L$SEH_info_gcm_ghash_4bit wrt ..imagebase + + DD $L$SEH_begin_gcm_init_clmul wrt ..imagebase + DD $L$SEH_end_gcm_init_clmul wrt ..imagebase + DD $L$SEH_info_gcm_init_clmul wrt ..imagebase + + DD $L$SEH_begin_gcm_ghash_clmul wrt ..imagebase + DD $L$SEH_end_gcm_ghash_clmul wrt ..imagebase + DD $L$SEH_info_gcm_ghash_clmul wrt ..imagebase + DD $L$SEH_begin_gcm_init_avx wrt ..imagebase + DD $L$SEH_end_gcm_init_avx wrt ..imagebase + DD $L$SEH_info_gcm_init_clmul wrt ..imagebase + + DD $L$SEH_begin_gcm_ghash_avx wrt ..imagebase + DD $L$SEH_end_gcm_ghash_avx wrt ..imagebase + DD $L$SEH_info_gcm_ghash_clmul wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_gcm_gmult_4bit: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$gmult_prologue wrt ..imagebase,$L$gmult_epilogue wrt ..imagebase +$L$SEH_info_gcm_ghash_4bit: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$ghash_prologue wrt ..imagebase,$L$ghash_epilogue wrt ..imagebase +$L$SEH_info_gcm_init_clmul: +DB 0x01,0x08,0x03,0x00 +DB 0x08,0x68,0x00,0x00 +DB 0x04,0x22,0x00,0x00 +$L$SEH_info_gcm_ghash_clmul: +DB 0x01,0x33,0x16,0x00 +DB 0x33,0xf8,0x09,0x00 +DB 0x2e,0xe8,0x08,0x00 +DB 0x29,0xd8,0x07,0x00 +DB 0x24,0xc8,0x06,0x00 +DB 0x1f,0xb8,0x05,0x00 +DB 0x1a,0xa8,0x04,0x00 +DB 0x15,0x98,0x03,0x00 +DB 0x10,0x88,0x02,0x00 +DB 0x0c,0x78,0x01,0x00 +DB 0x08,0x68,0x00,0x00 +DB 0x04,0x01,0x15,0x00 diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/poly1305/poly1305-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/poly1305/poly1305-x86_64.asm new file mode 100644 index 0000000..fb38236 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/poly1305/poly1305-x86_64.asm @@ -0,0 +1,2965 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +EXTERN OPENSSL_ia32cap_P + +global poly1305_init + +global poly1305_blocks + +global poly1305_emit + + + +ALIGN 32 +poly1305_init: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_poly1305_init: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + xor rax,rax + mov QWORD[rdi],rax + mov QWORD[8+rdi],rax + mov QWORD[16+rdi],rax + + cmp rsi,0 + je NEAR $L$no_key + + lea r10,[poly1305_blocks] + lea r11,[poly1305_emit] + mov r9,QWORD[((OPENSSL_ia32cap_P+4))] + lea rax,[poly1305_blocks_avx] + lea rcx,[poly1305_emit_avx] + bt r9,28 + cmovc r10,rax + cmovc r11,rcx + lea rax,[poly1305_blocks_avx2] + bt r9,37 + cmovc r10,rax + mov rax,0x0ffffffc0fffffff + mov rcx,0x0ffffffc0ffffffc + and rax,QWORD[rsi] + and rcx,QWORD[8+rsi] + mov QWORD[24+rdi],rax + mov QWORD[32+rdi],rcx + mov QWORD[rdx],r10 + mov QWORD[8+rdx],r11 + mov eax,1 +$L$no_key: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_poly1305_init: + + +ALIGN 32 +poly1305_blocks: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_poly1305_blocks: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + +$L$blocks: + shr rdx,4 + jz NEAR $L$no_data + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$blocks_body: + + mov r15,rdx + + mov r11,QWORD[24+rdi] + mov r13,QWORD[32+rdi] + + mov r14,QWORD[rdi] + mov rbx,QWORD[8+rdi] + mov rbp,QWORD[16+rdi] + + mov r12,r13 + shr r13,2 + mov rax,r12 + add r13,r12 + jmp NEAR $L$oop + +ALIGN 32 +$L$oop: + add r14,QWORD[rsi] + adc rbx,QWORD[8+rsi] + lea rsi,[16+rsi] + adc rbp,rcx + mul r14 + mov r9,rax + mov rax,r11 + mov r10,rdx + + mul r14 + mov r14,rax + mov rax,r11 + mov r8,rdx + + mul rbx + add r9,rax + mov rax,r13 + adc r10,rdx + + mul rbx + mov rbx,rbp + add r14,rax + adc r8,rdx + + imul rbx,r13 + add r9,rbx + mov rbx,r8 + adc r10,0 + + imul rbp,r11 + add rbx,r9 + mov rax,-4 + adc r10,rbp + + and rax,r10 + mov rbp,r10 + shr r10,2 + and rbp,3 + add rax,r10 + add r14,rax + adc rbx,0 + adc rbp,0 + mov rax,r12 + dec r15 + jnz NEAR $L$oop + + mov QWORD[rdi],r14 + mov QWORD[8+rdi],rbx + mov QWORD[16+rdi],rbp + + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbp,QWORD[32+rsp] + + mov rbx,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$no_data: +$L$blocks_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_poly1305_blocks: + + +ALIGN 32 +poly1305_emit: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_poly1305_emit: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$emit: + mov r8,QWORD[rdi] + mov r9,QWORD[8+rdi] + mov r10,QWORD[16+rdi] + + mov rax,r8 + add r8,5 + mov rcx,r9 + adc r9,0 + adc r10,0 + shr r10,2 + cmovnz rax,r8 + cmovnz rcx,r9 + + add rax,QWORD[rdx] + adc rcx,QWORD[8+rdx] + mov QWORD[rsi],rax + mov QWORD[8+rsi],rcx + + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_poly1305_emit: + +ALIGN 32 +__poly1305_block: + + mul r14 + mov r9,rax + mov rax,r11 + mov r10,rdx + + mul r14 + mov r14,rax + mov rax,r11 + mov r8,rdx + + mul rbx + add r9,rax + mov rax,r13 + adc r10,rdx + + mul rbx + mov rbx,rbp + add r14,rax + adc r8,rdx + + imul rbx,r13 + add r9,rbx + mov rbx,r8 + adc r10,0 + + imul rbp,r11 + add rbx,r9 + mov rax,-4 + adc r10,rbp + + and rax,r10 + mov rbp,r10 + shr r10,2 + and rbp,3 + add rax,r10 + add r14,rax + adc rbx,0 + adc rbp,0 + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +__poly1305_init_avx: + + mov r14,r11 + mov rbx,r12 + xor rbp,rbp + + lea rdi,[((48+64))+rdi] + + mov rax,r12 + call __poly1305_block + + mov eax,0x3ffffff + mov edx,0x3ffffff + mov r8,r14 + and eax,r14d + mov r9,r11 + and edx,r11d + mov DWORD[((-64))+rdi],eax + shr r8,26 + mov DWORD[((-60))+rdi],edx + shr r9,26 + + mov eax,0x3ffffff + mov edx,0x3ffffff + and eax,r8d + and edx,r9d + mov DWORD[((-48))+rdi],eax + lea eax,[rax*4+rax] + mov DWORD[((-44))+rdi],edx + lea edx,[rdx*4+rdx] + mov DWORD[((-32))+rdi],eax + shr r8,26 + mov DWORD[((-28))+rdi],edx + shr r9,26 + + mov rax,rbx + mov rdx,r12 + shl rax,12 + shl rdx,12 + or rax,r8 + or rdx,r9 + and eax,0x3ffffff + and edx,0x3ffffff + mov DWORD[((-16))+rdi],eax + lea eax,[rax*4+rax] + mov DWORD[((-12))+rdi],edx + lea edx,[rdx*4+rdx] + mov DWORD[rdi],eax + mov r8,rbx + mov DWORD[4+rdi],edx + mov r9,r12 + + mov eax,0x3ffffff + mov edx,0x3ffffff + shr r8,14 + shr r9,14 + and eax,r8d + and edx,r9d + mov DWORD[16+rdi],eax + lea eax,[rax*4+rax] + mov DWORD[20+rdi],edx + lea edx,[rdx*4+rdx] + mov DWORD[32+rdi],eax + shr r8,26 + mov DWORD[36+rdi],edx + shr r9,26 + + mov rax,rbp + shl rax,24 + or r8,rax + mov DWORD[48+rdi],r8d + lea r8,[r8*4+r8] + mov DWORD[52+rdi],r9d + lea r9,[r9*4+r9] + mov DWORD[64+rdi],r8d + mov DWORD[68+rdi],r9d + + mov rax,r12 + call __poly1305_block + + mov eax,0x3ffffff + mov r8,r14 + and eax,r14d + shr r8,26 + mov DWORD[((-52))+rdi],eax + + mov edx,0x3ffffff + and edx,r8d + mov DWORD[((-36))+rdi],edx + lea edx,[rdx*4+rdx] + shr r8,26 + mov DWORD[((-20))+rdi],edx + + mov rax,rbx + shl rax,12 + or rax,r8 + and eax,0x3ffffff + mov DWORD[((-4))+rdi],eax + lea eax,[rax*4+rax] + mov r8,rbx + mov DWORD[12+rdi],eax + + mov edx,0x3ffffff + shr r8,14 + and edx,r8d + mov DWORD[28+rdi],edx + lea edx,[rdx*4+rdx] + shr r8,26 + mov DWORD[44+rdi],edx + + mov rax,rbp + shl rax,24 + or r8,rax + mov DWORD[60+rdi],r8d + lea r8,[r8*4+r8] + mov DWORD[76+rdi],r8d + + mov rax,r12 + call __poly1305_block + + mov eax,0x3ffffff + mov r8,r14 + and eax,r14d + shr r8,26 + mov DWORD[((-56))+rdi],eax + + mov edx,0x3ffffff + and edx,r8d + mov DWORD[((-40))+rdi],edx + lea edx,[rdx*4+rdx] + shr r8,26 + mov DWORD[((-24))+rdi],edx + + mov rax,rbx + shl rax,12 + or rax,r8 + and eax,0x3ffffff + mov DWORD[((-8))+rdi],eax + lea eax,[rax*4+rax] + mov r8,rbx + mov DWORD[8+rdi],eax + + mov edx,0x3ffffff + shr r8,14 + and edx,r8d + mov DWORD[24+rdi],edx + lea edx,[rdx*4+rdx] + shr r8,26 + mov DWORD[40+rdi],edx + + mov rax,rbp + shl rax,24 + or r8,rax + mov DWORD[56+rdi],r8d + lea r8,[r8*4+r8] + mov DWORD[72+rdi],r8d + + lea rdi,[((-48-64))+rdi] + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +poly1305_blocks_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_poly1305_blocks_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + + mov r8d,DWORD[20+rdi] + cmp rdx,128 + jae NEAR $L$blocks_avx + test r8d,r8d + jz NEAR $L$blocks + +$L$blocks_avx: + and rdx,-16 + jz NEAR $L$no_data_avx + + vzeroupper + + test r8d,r8d + jz NEAR $L$base2_64_avx + + test rdx,31 + jz NEAR $L$even_avx + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$blocks_avx_body: + + mov r15,rdx + + mov r8,QWORD[rdi] + mov r9,QWORD[8+rdi] + mov ebp,DWORD[16+rdi] + + mov r11,QWORD[24+rdi] + mov r13,QWORD[32+rdi] + + + mov r14d,r8d + and r8,-2147483648 + mov r12,r9 + mov ebx,r9d + and r9,-2147483648 + + shr r8,6 + shl r12,52 + add r14,r8 + shr rbx,12 + shr r9,18 + add r14,r12 + adc rbx,r9 + + mov r8,rbp + shl r8,40 + shr rbp,24 + add rbx,r8 + adc rbp,0 + + mov r9,-4 + mov r8,rbp + and r9,rbp + shr r8,2 + and rbp,3 + add r8,r9 + add r14,r8 + adc rbx,0 + adc rbp,0 + + mov r12,r13 + mov rax,r13 + shr r13,2 + add r13,r12 + + add r14,QWORD[rsi] + adc rbx,QWORD[8+rsi] + lea rsi,[16+rsi] + adc rbp,rcx + + call __poly1305_block + + test rcx,rcx + jz NEAR $L$store_base2_64_avx + + + mov rax,r14 + mov rdx,r14 + shr r14,52 + mov r11,rbx + mov r12,rbx + shr rdx,26 + and rax,0x3ffffff + shl r11,12 + and rdx,0x3ffffff + shr rbx,14 + or r14,r11 + shl rbp,24 + and r14,0x3ffffff + shr r12,40 + and rbx,0x3ffffff + or rbp,r12 + + sub r15,16 + jz NEAR $L$store_base2_26_avx + + vmovd xmm0,eax + vmovd xmm1,edx + vmovd xmm2,r14d + vmovd xmm3,ebx + vmovd xmm4,ebp + jmp NEAR $L$proceed_avx + +ALIGN 32 +$L$store_base2_64_avx: + mov QWORD[rdi],r14 + mov QWORD[8+rdi],rbx + mov QWORD[16+rdi],rbp + jmp NEAR $L$done_avx + +ALIGN 16 +$L$store_base2_26_avx: + mov DWORD[rdi],eax + mov DWORD[4+rdi],edx + mov DWORD[8+rdi],r14d + mov DWORD[12+rdi],ebx + mov DWORD[16+rdi],ebp +ALIGN 16 +$L$done_avx: + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbp,QWORD[32+rsp] + + mov rbx,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$no_data_avx: +$L$blocks_avx_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + + +ALIGN 32 +$L$base2_64_avx: + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$base2_64_avx_body: + + mov r15,rdx + + mov r11,QWORD[24+rdi] + mov r13,QWORD[32+rdi] + + mov r14,QWORD[rdi] + mov rbx,QWORD[8+rdi] + mov ebp,DWORD[16+rdi] + + mov r12,r13 + mov rax,r13 + shr r13,2 + add r13,r12 + + test rdx,31 + jz NEAR $L$init_avx + + add r14,QWORD[rsi] + adc rbx,QWORD[8+rsi] + lea rsi,[16+rsi] + adc rbp,rcx + sub r15,16 + + call __poly1305_block + +$L$init_avx: + + mov rax,r14 + mov rdx,r14 + shr r14,52 + mov r8,rbx + mov r9,rbx + shr rdx,26 + and rax,0x3ffffff + shl r8,12 + and rdx,0x3ffffff + shr rbx,14 + or r14,r8 + shl rbp,24 + and r14,0x3ffffff + shr r9,40 + and rbx,0x3ffffff + or rbp,r9 + + vmovd xmm0,eax + vmovd xmm1,edx + vmovd xmm2,r14d + vmovd xmm3,ebx + vmovd xmm4,ebp + mov DWORD[20+rdi],1 + + call __poly1305_init_avx + +$L$proceed_avx: + mov rdx,r15 + + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbp,QWORD[32+rsp] + + mov rbx,QWORD[40+rsp] + + lea rax,[48+rsp] + lea rsp,[48+rsp] + +$L$base2_64_avx_epilogue: + jmp NEAR $L$do_avx + + +ALIGN 32 +$L$even_avx: + + vmovd xmm0,DWORD[rdi] + vmovd xmm1,DWORD[4+rdi] + vmovd xmm2,DWORD[8+rdi] + vmovd xmm3,DWORD[12+rdi] + vmovd xmm4,DWORD[16+rdi] + +$L$do_avx: + lea r11,[((-248))+rsp] + sub rsp,0x218 + vmovdqa XMMWORD[80+r11],xmm6 + vmovdqa XMMWORD[96+r11],xmm7 + vmovdqa XMMWORD[112+r11],xmm8 + vmovdqa XMMWORD[128+r11],xmm9 + vmovdqa XMMWORD[144+r11],xmm10 + vmovdqa XMMWORD[160+r11],xmm11 + vmovdqa XMMWORD[176+r11],xmm12 + vmovdqa XMMWORD[192+r11],xmm13 + vmovdqa XMMWORD[208+r11],xmm14 + vmovdqa XMMWORD[224+r11],xmm15 +$L$do_avx_body: + sub rdx,64 + lea rax,[((-32))+rsi] + cmovc rsi,rax + + vmovdqu xmm14,XMMWORD[48+rdi] + lea rdi,[112+rdi] + lea rcx,[$L$const] + + + + vmovdqu xmm5,XMMWORD[32+rsi] + vmovdqu xmm6,XMMWORD[48+rsi] + vmovdqa xmm15,XMMWORD[64+rcx] + + vpsrldq xmm7,xmm5,6 + vpsrldq xmm8,xmm6,6 + vpunpckhqdq xmm9,xmm5,xmm6 + vpunpcklqdq xmm5,xmm5,xmm6 + vpunpcklqdq xmm8,xmm7,xmm8 + + vpsrlq xmm9,xmm9,40 + vpsrlq xmm6,xmm5,26 + vpand xmm5,xmm5,xmm15 + vpsrlq xmm7,xmm8,4 + vpand xmm6,xmm6,xmm15 + vpsrlq xmm8,xmm8,30 + vpand xmm7,xmm7,xmm15 + vpand xmm8,xmm8,xmm15 + vpor xmm9,xmm9,XMMWORD[32+rcx] + + jbe NEAR $L$skip_loop_avx + + + vmovdqu xmm11,XMMWORD[((-48))+rdi] + vmovdqu xmm12,XMMWORD[((-32))+rdi] + vpshufd xmm13,xmm14,0xEE + vpshufd xmm10,xmm14,0x44 + vmovdqa XMMWORD[(-144)+r11],xmm13 + vmovdqa XMMWORD[rsp],xmm10 + vpshufd xmm14,xmm11,0xEE + vmovdqu xmm10,XMMWORD[((-16))+rdi] + vpshufd xmm11,xmm11,0x44 + vmovdqa XMMWORD[(-128)+r11],xmm14 + vmovdqa XMMWORD[16+rsp],xmm11 + vpshufd xmm13,xmm12,0xEE + vmovdqu xmm11,XMMWORD[rdi] + vpshufd xmm12,xmm12,0x44 + vmovdqa XMMWORD[(-112)+r11],xmm13 + vmovdqa XMMWORD[32+rsp],xmm12 + vpshufd xmm14,xmm10,0xEE + vmovdqu xmm12,XMMWORD[16+rdi] + vpshufd xmm10,xmm10,0x44 + vmovdqa XMMWORD[(-96)+r11],xmm14 + vmovdqa XMMWORD[48+rsp],xmm10 + vpshufd xmm13,xmm11,0xEE + vmovdqu xmm10,XMMWORD[32+rdi] + vpshufd xmm11,xmm11,0x44 + vmovdqa XMMWORD[(-80)+r11],xmm13 + vmovdqa XMMWORD[64+rsp],xmm11 + vpshufd xmm14,xmm12,0xEE + vmovdqu xmm11,XMMWORD[48+rdi] + vpshufd xmm12,xmm12,0x44 + vmovdqa XMMWORD[(-64)+r11],xmm14 + vmovdqa XMMWORD[80+rsp],xmm12 + vpshufd xmm13,xmm10,0xEE + vmovdqu xmm12,XMMWORD[64+rdi] + vpshufd xmm10,xmm10,0x44 + vmovdqa XMMWORD[(-48)+r11],xmm13 + vmovdqa XMMWORD[96+rsp],xmm10 + vpshufd xmm14,xmm11,0xEE + vpshufd xmm11,xmm11,0x44 + vmovdqa XMMWORD[(-32)+r11],xmm14 + vmovdqa XMMWORD[112+rsp],xmm11 + vpshufd xmm13,xmm12,0xEE + vmovdqa xmm14,XMMWORD[rsp] + vpshufd xmm12,xmm12,0x44 + vmovdqa XMMWORD[(-16)+r11],xmm13 + vmovdqa XMMWORD[128+rsp],xmm12 + + jmp NEAR $L$oop_avx + +ALIGN 32 +$L$oop_avx: + + + + + + + + + + + + + + + + + + + + + vpmuludq xmm10,xmm14,xmm5 + vpmuludq xmm11,xmm14,xmm6 + vmovdqa XMMWORD[32+r11],xmm2 + vpmuludq xmm12,xmm14,xmm7 + vmovdqa xmm2,XMMWORD[16+rsp] + vpmuludq xmm13,xmm14,xmm8 + vpmuludq xmm14,xmm14,xmm9 + + vmovdqa XMMWORD[r11],xmm0 + vpmuludq xmm0,xmm9,XMMWORD[32+rsp] + vmovdqa XMMWORD[16+r11],xmm1 + vpmuludq xmm1,xmm2,xmm8 + vpaddq xmm10,xmm10,xmm0 + vpaddq xmm14,xmm14,xmm1 + vmovdqa XMMWORD[48+r11],xmm3 + vpmuludq xmm0,xmm2,xmm7 + vpmuludq xmm1,xmm2,xmm6 + vpaddq xmm13,xmm13,xmm0 + vmovdqa xmm3,XMMWORD[48+rsp] + vpaddq xmm12,xmm12,xmm1 + vmovdqa XMMWORD[64+r11],xmm4 + vpmuludq xmm2,xmm2,xmm5 + vpmuludq xmm0,xmm3,xmm7 + vpaddq xmm11,xmm11,xmm2 + + vmovdqa xmm4,XMMWORD[64+rsp] + vpaddq xmm14,xmm14,xmm0 + vpmuludq xmm1,xmm3,xmm6 + vpmuludq xmm3,xmm3,xmm5 + vpaddq xmm13,xmm13,xmm1 + vmovdqa xmm2,XMMWORD[80+rsp] + vpaddq xmm12,xmm12,xmm3 + vpmuludq xmm0,xmm4,xmm9 + vpmuludq xmm4,xmm4,xmm8 + vpaddq xmm11,xmm11,xmm0 + vmovdqa xmm3,XMMWORD[96+rsp] + vpaddq xmm10,xmm10,xmm4 + + vmovdqa xmm4,XMMWORD[128+rsp] + vpmuludq xmm1,xmm2,xmm6 + vpmuludq xmm2,xmm2,xmm5 + vpaddq xmm14,xmm14,xmm1 + vpaddq xmm13,xmm13,xmm2 + vpmuludq xmm0,xmm3,xmm9 + vpmuludq xmm1,xmm3,xmm8 + vpaddq xmm12,xmm12,xmm0 + vmovdqu xmm0,XMMWORD[rsi] + vpaddq xmm11,xmm11,xmm1 + vpmuludq xmm3,xmm3,xmm7 + vpmuludq xmm7,xmm4,xmm7 + vpaddq xmm10,xmm10,xmm3 + + vmovdqu xmm1,XMMWORD[16+rsi] + vpaddq xmm11,xmm11,xmm7 + vpmuludq xmm8,xmm4,xmm8 + vpmuludq xmm9,xmm4,xmm9 + vpsrldq xmm2,xmm0,6 + vpaddq xmm12,xmm12,xmm8 + vpaddq xmm13,xmm13,xmm9 + vpsrldq xmm3,xmm1,6 + vpmuludq xmm9,xmm5,XMMWORD[112+rsp] + vpmuludq xmm5,xmm4,xmm6 + vpunpckhqdq xmm4,xmm0,xmm1 + vpaddq xmm14,xmm14,xmm9 + vmovdqa xmm9,XMMWORD[((-144))+r11] + vpaddq xmm10,xmm10,xmm5 + + vpunpcklqdq xmm0,xmm0,xmm1 + vpunpcklqdq xmm3,xmm2,xmm3 + + + vpsrldq xmm4,xmm4,5 + vpsrlq xmm1,xmm0,26 + vpand xmm0,xmm0,xmm15 + vpsrlq xmm2,xmm3,4 + vpand xmm1,xmm1,xmm15 + vpand xmm4,xmm4,XMMWORD[rcx] + vpsrlq xmm3,xmm3,30 + vpand xmm2,xmm2,xmm15 + vpand xmm3,xmm3,xmm15 + vpor xmm4,xmm4,XMMWORD[32+rcx] + + vpaddq xmm0,xmm0,XMMWORD[r11] + vpaddq xmm1,xmm1,XMMWORD[16+r11] + vpaddq xmm2,xmm2,XMMWORD[32+r11] + vpaddq xmm3,xmm3,XMMWORD[48+r11] + vpaddq xmm4,xmm4,XMMWORD[64+r11] + + lea rax,[32+rsi] + lea rsi,[64+rsi] + sub rdx,64 + cmovc rsi,rax + + + + + + + + + + + vpmuludq xmm5,xmm9,xmm0 + vpmuludq xmm6,xmm9,xmm1 + vpaddq xmm10,xmm10,xmm5 + vpaddq xmm11,xmm11,xmm6 + vmovdqa xmm7,XMMWORD[((-128))+r11] + vpmuludq xmm5,xmm9,xmm2 + vpmuludq xmm6,xmm9,xmm3 + vpaddq xmm12,xmm12,xmm5 + vpaddq xmm13,xmm13,xmm6 + vpmuludq xmm9,xmm9,xmm4 + vpmuludq xmm5,xmm4,XMMWORD[((-112))+r11] + vpaddq xmm14,xmm14,xmm9 + + vpaddq xmm10,xmm10,xmm5 + vpmuludq xmm6,xmm7,xmm2 + vpmuludq xmm5,xmm7,xmm3 + vpaddq xmm13,xmm13,xmm6 + vmovdqa xmm8,XMMWORD[((-96))+r11] + vpaddq xmm14,xmm14,xmm5 + vpmuludq xmm6,xmm7,xmm1 + vpmuludq xmm7,xmm7,xmm0 + vpaddq xmm12,xmm12,xmm6 + vpaddq xmm11,xmm11,xmm7 + + vmovdqa xmm9,XMMWORD[((-80))+r11] + vpmuludq xmm5,xmm8,xmm2 + vpmuludq xmm6,xmm8,xmm1 + vpaddq xmm14,xmm14,xmm5 + vpaddq xmm13,xmm13,xmm6 + vmovdqa xmm7,XMMWORD[((-64))+r11] + vpmuludq xmm8,xmm8,xmm0 + vpmuludq xmm5,xmm9,xmm4 + vpaddq xmm12,xmm12,xmm8 + vpaddq xmm11,xmm11,xmm5 + vmovdqa xmm8,XMMWORD[((-48))+r11] + vpmuludq xmm9,xmm9,xmm3 + vpmuludq xmm6,xmm7,xmm1 + vpaddq xmm10,xmm10,xmm9 + + vmovdqa xmm9,XMMWORD[((-16))+r11] + vpaddq xmm14,xmm14,xmm6 + vpmuludq xmm7,xmm7,xmm0 + vpmuludq xmm5,xmm8,xmm4 + vpaddq xmm13,xmm13,xmm7 + vpaddq xmm12,xmm12,xmm5 + vmovdqu xmm5,XMMWORD[32+rsi] + vpmuludq xmm7,xmm8,xmm3 + vpmuludq xmm8,xmm8,xmm2 + vpaddq xmm11,xmm11,xmm7 + vmovdqu xmm6,XMMWORD[48+rsi] + vpaddq xmm10,xmm10,xmm8 + + vpmuludq xmm2,xmm9,xmm2 + vpmuludq xmm3,xmm9,xmm3 + vpsrldq xmm7,xmm5,6 + vpaddq xmm11,xmm11,xmm2 + vpmuludq xmm4,xmm9,xmm4 + vpsrldq xmm8,xmm6,6 + vpaddq xmm2,xmm12,xmm3 + vpaddq xmm3,xmm13,xmm4 + vpmuludq xmm4,xmm0,XMMWORD[((-32))+r11] + vpmuludq xmm0,xmm9,xmm1 + vpunpckhqdq xmm9,xmm5,xmm6 + vpaddq xmm4,xmm14,xmm4 + vpaddq xmm0,xmm10,xmm0 + + vpunpcklqdq xmm5,xmm5,xmm6 + vpunpcklqdq xmm8,xmm7,xmm8 + + + vpsrldq xmm9,xmm9,5 + vpsrlq xmm6,xmm5,26 + vmovdqa xmm14,XMMWORD[rsp] + vpand xmm5,xmm5,xmm15 + vpsrlq xmm7,xmm8,4 + vpand xmm6,xmm6,xmm15 + vpand xmm9,xmm9,XMMWORD[rcx] + vpsrlq xmm8,xmm8,30 + vpand xmm7,xmm7,xmm15 + vpand xmm8,xmm8,xmm15 + vpor xmm9,xmm9,XMMWORD[32+rcx] + + + + + + vpsrlq xmm13,xmm3,26 + vpand xmm3,xmm3,xmm15 + vpaddq xmm4,xmm4,xmm13 + + vpsrlq xmm10,xmm0,26 + vpand xmm0,xmm0,xmm15 + vpaddq xmm1,xmm11,xmm10 + + vpsrlq xmm10,xmm4,26 + vpand xmm4,xmm4,xmm15 + + vpsrlq xmm11,xmm1,26 + vpand xmm1,xmm1,xmm15 + vpaddq xmm2,xmm2,xmm11 + + vpaddq xmm0,xmm0,xmm10 + vpsllq xmm10,xmm10,2 + vpaddq xmm0,xmm0,xmm10 + + vpsrlq xmm12,xmm2,26 + vpand xmm2,xmm2,xmm15 + vpaddq xmm3,xmm3,xmm12 + + vpsrlq xmm10,xmm0,26 + vpand xmm0,xmm0,xmm15 + vpaddq xmm1,xmm1,xmm10 + + vpsrlq xmm13,xmm3,26 + vpand xmm3,xmm3,xmm15 + vpaddq xmm4,xmm4,xmm13 + + ja NEAR $L$oop_avx + +$L$skip_loop_avx: + + + + vpshufd xmm14,xmm14,0x10 + add rdx,32 + jnz NEAR $L$ong_tail_avx + + vpaddq xmm7,xmm7,xmm2 + vpaddq xmm5,xmm5,xmm0 + vpaddq xmm6,xmm6,xmm1 + vpaddq xmm8,xmm8,xmm3 + vpaddq xmm9,xmm9,xmm4 + +$L$ong_tail_avx: + vmovdqa XMMWORD[32+r11],xmm2 + vmovdqa XMMWORD[r11],xmm0 + vmovdqa XMMWORD[16+r11],xmm1 + vmovdqa XMMWORD[48+r11],xmm3 + vmovdqa XMMWORD[64+r11],xmm4 + + + + + + + + vpmuludq xmm12,xmm14,xmm7 + vpmuludq xmm10,xmm14,xmm5 + vpshufd xmm2,XMMWORD[((-48))+rdi],0x10 + vpmuludq xmm11,xmm14,xmm6 + vpmuludq xmm13,xmm14,xmm8 + vpmuludq xmm14,xmm14,xmm9 + + vpmuludq xmm0,xmm2,xmm8 + vpaddq xmm14,xmm14,xmm0 + vpshufd xmm3,XMMWORD[((-32))+rdi],0x10 + vpmuludq xmm1,xmm2,xmm7 + vpaddq xmm13,xmm13,xmm1 + vpshufd xmm4,XMMWORD[((-16))+rdi],0x10 + vpmuludq xmm0,xmm2,xmm6 + vpaddq xmm12,xmm12,xmm0 + vpmuludq xmm2,xmm2,xmm5 + vpaddq xmm11,xmm11,xmm2 + vpmuludq xmm3,xmm3,xmm9 + vpaddq xmm10,xmm10,xmm3 + + vpshufd xmm2,XMMWORD[rdi],0x10 + vpmuludq xmm1,xmm4,xmm7 + vpaddq xmm14,xmm14,xmm1 + vpmuludq xmm0,xmm4,xmm6 + vpaddq xmm13,xmm13,xmm0 + vpshufd xmm3,XMMWORD[16+rdi],0x10 + vpmuludq xmm4,xmm4,xmm5 + vpaddq xmm12,xmm12,xmm4 + vpmuludq xmm1,xmm2,xmm9 + vpaddq xmm11,xmm11,xmm1 + vpshufd xmm4,XMMWORD[32+rdi],0x10 + vpmuludq xmm2,xmm2,xmm8 + vpaddq xmm10,xmm10,xmm2 + + vpmuludq xmm0,xmm3,xmm6 + vpaddq xmm14,xmm14,xmm0 + vpmuludq xmm3,xmm3,xmm5 + vpaddq xmm13,xmm13,xmm3 + vpshufd xmm2,XMMWORD[48+rdi],0x10 + vpmuludq xmm1,xmm4,xmm9 + vpaddq xmm12,xmm12,xmm1 + vpshufd xmm3,XMMWORD[64+rdi],0x10 + vpmuludq xmm0,xmm4,xmm8 + vpaddq xmm11,xmm11,xmm0 + vpmuludq xmm4,xmm4,xmm7 + vpaddq xmm10,xmm10,xmm4 + + vpmuludq xmm2,xmm2,xmm5 + vpaddq xmm14,xmm14,xmm2 + vpmuludq xmm1,xmm3,xmm9 + vpaddq xmm13,xmm13,xmm1 + vpmuludq xmm0,xmm3,xmm8 + vpaddq xmm12,xmm12,xmm0 + vpmuludq xmm1,xmm3,xmm7 + vpaddq xmm11,xmm11,xmm1 + vpmuludq xmm3,xmm3,xmm6 + vpaddq xmm10,xmm10,xmm3 + + jz NEAR $L$short_tail_avx + + vmovdqu xmm0,XMMWORD[rsi] + vmovdqu xmm1,XMMWORD[16+rsi] + + vpsrldq xmm2,xmm0,6 + vpsrldq xmm3,xmm1,6 + vpunpckhqdq xmm4,xmm0,xmm1 + vpunpcklqdq xmm0,xmm0,xmm1 + vpunpcklqdq xmm3,xmm2,xmm3 + + vpsrlq xmm4,xmm4,40 + vpsrlq xmm1,xmm0,26 + vpand xmm0,xmm0,xmm15 + vpsrlq xmm2,xmm3,4 + vpand xmm1,xmm1,xmm15 + vpsrlq xmm3,xmm3,30 + vpand xmm2,xmm2,xmm15 + vpand xmm3,xmm3,xmm15 + vpor xmm4,xmm4,XMMWORD[32+rcx] + + vpshufd xmm9,XMMWORD[((-64))+rdi],0x32 + vpaddq xmm0,xmm0,XMMWORD[r11] + vpaddq xmm1,xmm1,XMMWORD[16+r11] + vpaddq xmm2,xmm2,XMMWORD[32+r11] + vpaddq xmm3,xmm3,XMMWORD[48+r11] + vpaddq xmm4,xmm4,XMMWORD[64+r11] + + + + + vpmuludq xmm5,xmm9,xmm0 + vpaddq xmm10,xmm10,xmm5 + vpmuludq xmm6,xmm9,xmm1 + vpaddq xmm11,xmm11,xmm6 + vpmuludq xmm5,xmm9,xmm2 + vpaddq xmm12,xmm12,xmm5 + vpshufd xmm7,XMMWORD[((-48))+rdi],0x32 + vpmuludq xmm6,xmm9,xmm3 + vpaddq xmm13,xmm13,xmm6 + vpmuludq xmm9,xmm9,xmm4 + vpaddq xmm14,xmm14,xmm9 + + vpmuludq xmm5,xmm7,xmm3 + vpaddq xmm14,xmm14,xmm5 + vpshufd xmm8,XMMWORD[((-32))+rdi],0x32 + vpmuludq xmm6,xmm7,xmm2 + vpaddq xmm13,xmm13,xmm6 + vpshufd xmm9,XMMWORD[((-16))+rdi],0x32 + vpmuludq xmm5,xmm7,xmm1 + vpaddq xmm12,xmm12,xmm5 + vpmuludq xmm7,xmm7,xmm0 + vpaddq xmm11,xmm11,xmm7 + vpmuludq xmm8,xmm8,xmm4 + vpaddq xmm10,xmm10,xmm8 + + vpshufd xmm7,XMMWORD[rdi],0x32 + vpmuludq xmm6,xmm9,xmm2 + vpaddq xmm14,xmm14,xmm6 + vpmuludq xmm5,xmm9,xmm1 + vpaddq xmm13,xmm13,xmm5 + vpshufd xmm8,XMMWORD[16+rdi],0x32 + vpmuludq xmm9,xmm9,xmm0 + vpaddq xmm12,xmm12,xmm9 + vpmuludq xmm6,xmm7,xmm4 + vpaddq xmm11,xmm11,xmm6 + vpshufd xmm9,XMMWORD[32+rdi],0x32 + vpmuludq xmm7,xmm7,xmm3 + vpaddq xmm10,xmm10,xmm7 + + vpmuludq xmm5,xmm8,xmm1 + vpaddq xmm14,xmm14,xmm5 + vpmuludq xmm8,xmm8,xmm0 + vpaddq xmm13,xmm13,xmm8 + vpshufd xmm7,XMMWORD[48+rdi],0x32 + vpmuludq xmm6,xmm9,xmm4 + vpaddq xmm12,xmm12,xmm6 + vpshufd xmm8,XMMWORD[64+rdi],0x32 + vpmuludq xmm5,xmm9,xmm3 + vpaddq xmm11,xmm11,xmm5 + vpmuludq xmm9,xmm9,xmm2 + vpaddq xmm10,xmm10,xmm9 + + vpmuludq xmm7,xmm7,xmm0 + vpaddq xmm14,xmm14,xmm7 + vpmuludq xmm6,xmm8,xmm4 + vpaddq xmm13,xmm13,xmm6 + vpmuludq xmm5,xmm8,xmm3 + vpaddq xmm12,xmm12,xmm5 + vpmuludq xmm6,xmm8,xmm2 + vpaddq xmm11,xmm11,xmm6 + vpmuludq xmm8,xmm8,xmm1 + vpaddq xmm10,xmm10,xmm8 + +$L$short_tail_avx: + + + + vpsrldq xmm9,xmm14,8 + vpsrldq xmm8,xmm13,8 + vpsrldq xmm6,xmm11,8 + vpsrldq xmm5,xmm10,8 + vpsrldq xmm7,xmm12,8 + vpaddq xmm13,xmm13,xmm8 + vpaddq xmm14,xmm14,xmm9 + vpaddq xmm10,xmm10,xmm5 + vpaddq xmm11,xmm11,xmm6 + vpaddq xmm12,xmm12,xmm7 + + + + + vpsrlq xmm3,xmm13,26 + vpand xmm13,xmm13,xmm15 + vpaddq xmm14,xmm14,xmm3 + + vpsrlq xmm0,xmm10,26 + vpand xmm10,xmm10,xmm15 + vpaddq xmm11,xmm11,xmm0 + + vpsrlq xmm4,xmm14,26 + vpand xmm14,xmm14,xmm15 + + vpsrlq xmm1,xmm11,26 + vpand xmm11,xmm11,xmm15 + vpaddq xmm12,xmm12,xmm1 + + vpaddq xmm10,xmm10,xmm4 + vpsllq xmm4,xmm4,2 + vpaddq xmm10,xmm10,xmm4 + + vpsrlq xmm2,xmm12,26 + vpand xmm12,xmm12,xmm15 + vpaddq xmm13,xmm13,xmm2 + + vpsrlq xmm0,xmm10,26 + vpand xmm10,xmm10,xmm15 + vpaddq xmm11,xmm11,xmm0 + + vpsrlq xmm3,xmm13,26 + vpand xmm13,xmm13,xmm15 + vpaddq xmm14,xmm14,xmm3 + + vmovd DWORD[(-112)+rdi],xmm10 + vmovd DWORD[(-108)+rdi],xmm11 + vmovd DWORD[(-104)+rdi],xmm12 + vmovd DWORD[(-100)+rdi],xmm13 + vmovd DWORD[(-96)+rdi],xmm14 + vmovdqa xmm6,XMMWORD[80+r11] + vmovdqa xmm7,XMMWORD[96+r11] + vmovdqa xmm8,XMMWORD[112+r11] + vmovdqa xmm9,XMMWORD[128+r11] + vmovdqa xmm10,XMMWORD[144+r11] + vmovdqa xmm11,XMMWORD[160+r11] + vmovdqa xmm12,XMMWORD[176+r11] + vmovdqa xmm13,XMMWORD[192+r11] + vmovdqa xmm14,XMMWORD[208+r11] + vmovdqa xmm15,XMMWORD[224+r11] + lea rsp,[248+r11] +$L$do_avx_epilogue: + vzeroupper + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_poly1305_blocks_avx: + + +ALIGN 32 +poly1305_emit_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_poly1305_emit_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + cmp DWORD[20+rdi],0 + je NEAR $L$emit + + mov eax,DWORD[rdi] + mov ecx,DWORD[4+rdi] + mov r8d,DWORD[8+rdi] + mov r11d,DWORD[12+rdi] + mov r10d,DWORD[16+rdi] + + shl rcx,26 + mov r9,r8 + shl r8,52 + add rax,rcx + shr r9,12 + add r8,rax + adc r9,0 + + shl r11,14 + mov rax,r10 + shr r10,24 + add r9,r11 + shl rax,40 + add r9,rax + adc r10,0 + + mov rax,r10 + mov rcx,r10 + and r10,3 + shr rax,2 + and rcx,-4 + add rax,rcx + add r8,rax + adc r9,0 + adc r10,0 + + mov rax,r8 + add r8,5 + mov rcx,r9 + adc r9,0 + adc r10,0 + shr r10,2 + cmovnz rax,r8 + cmovnz rcx,r9 + + add rax,QWORD[rdx] + adc rcx,QWORD[8+rdx] + mov QWORD[rsi],rax + mov QWORD[8+rsi],rcx + + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_poly1305_emit_avx: + +ALIGN 32 +poly1305_blocks_avx2: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_poly1305_blocks_avx2: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + + mov r8d,DWORD[20+rdi] + cmp rdx,128 + jae NEAR $L$blocks_avx2 + test r8d,r8d + jz NEAR $L$blocks + +$L$blocks_avx2: + and rdx,-16 + jz NEAR $L$no_data_avx2 + + vzeroupper + + test r8d,r8d + jz NEAR $L$base2_64_avx2 + + test rdx,63 + jz NEAR $L$even_avx2 + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$blocks_avx2_body: + + mov r15,rdx + + mov r8,QWORD[rdi] + mov r9,QWORD[8+rdi] + mov ebp,DWORD[16+rdi] + + mov r11,QWORD[24+rdi] + mov r13,QWORD[32+rdi] + + + mov r14d,r8d + and r8,-2147483648 + mov r12,r9 + mov ebx,r9d + and r9,-2147483648 + + shr r8,6 + shl r12,52 + add r14,r8 + shr rbx,12 + shr r9,18 + add r14,r12 + adc rbx,r9 + + mov r8,rbp + shl r8,40 + shr rbp,24 + add rbx,r8 + adc rbp,0 + + mov r9,-4 + mov r8,rbp + and r9,rbp + shr r8,2 + and rbp,3 + add r8,r9 + add r14,r8 + adc rbx,0 + adc rbp,0 + + mov r12,r13 + mov rax,r13 + shr r13,2 + add r13,r12 + +$L$base2_26_pre_avx2: + add r14,QWORD[rsi] + adc rbx,QWORD[8+rsi] + lea rsi,[16+rsi] + adc rbp,rcx + sub r15,16 + + call __poly1305_block + mov rax,r12 + + test r15,63 + jnz NEAR $L$base2_26_pre_avx2 + + test rcx,rcx + jz NEAR $L$store_base2_64_avx2 + + + mov rax,r14 + mov rdx,r14 + shr r14,52 + mov r11,rbx + mov r12,rbx + shr rdx,26 + and rax,0x3ffffff + shl r11,12 + and rdx,0x3ffffff + shr rbx,14 + or r14,r11 + shl rbp,24 + and r14,0x3ffffff + shr r12,40 + and rbx,0x3ffffff + or rbp,r12 + + test r15,r15 + jz NEAR $L$store_base2_26_avx2 + + vmovd xmm0,eax + vmovd xmm1,edx + vmovd xmm2,r14d + vmovd xmm3,ebx + vmovd xmm4,ebp + jmp NEAR $L$proceed_avx2 + +ALIGN 32 +$L$store_base2_64_avx2: + mov QWORD[rdi],r14 + mov QWORD[8+rdi],rbx + mov QWORD[16+rdi],rbp + jmp NEAR $L$done_avx2 + +ALIGN 16 +$L$store_base2_26_avx2: + mov DWORD[rdi],eax + mov DWORD[4+rdi],edx + mov DWORD[8+rdi],r14d + mov DWORD[12+rdi],ebx + mov DWORD[16+rdi],ebp +ALIGN 16 +$L$done_avx2: + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbp,QWORD[32+rsp] + + mov rbx,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$no_data_avx2: +$L$blocks_avx2_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + + +ALIGN 32 +$L$base2_64_avx2: + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$base2_64_avx2_body: + + mov r15,rdx + + mov r11,QWORD[24+rdi] + mov r13,QWORD[32+rdi] + + mov r14,QWORD[rdi] + mov rbx,QWORD[8+rdi] + mov ebp,DWORD[16+rdi] + + mov r12,r13 + mov rax,r13 + shr r13,2 + add r13,r12 + + test rdx,63 + jz NEAR $L$init_avx2 + +$L$base2_64_pre_avx2: + add r14,QWORD[rsi] + adc rbx,QWORD[8+rsi] + lea rsi,[16+rsi] + adc rbp,rcx + sub r15,16 + + call __poly1305_block + mov rax,r12 + + test r15,63 + jnz NEAR $L$base2_64_pre_avx2 + +$L$init_avx2: + + mov rax,r14 + mov rdx,r14 + shr r14,52 + mov r8,rbx + mov r9,rbx + shr rdx,26 + and rax,0x3ffffff + shl r8,12 + and rdx,0x3ffffff + shr rbx,14 + or r14,r8 + shl rbp,24 + and r14,0x3ffffff + shr r9,40 + and rbx,0x3ffffff + or rbp,r9 + + vmovd xmm0,eax + vmovd xmm1,edx + vmovd xmm2,r14d + vmovd xmm3,ebx + vmovd xmm4,ebp + mov DWORD[20+rdi],1 + + call __poly1305_init_avx + +$L$proceed_avx2: + mov rdx,r15 + mov r10d,DWORD[((OPENSSL_ia32cap_P+8))] + mov r11d,3221291008 + + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbp,QWORD[32+rsp] + + mov rbx,QWORD[40+rsp] + + lea rax,[48+rsp] + lea rsp,[48+rsp] + +$L$base2_64_avx2_epilogue: + jmp NEAR $L$do_avx2 + + +ALIGN 32 +$L$even_avx2: + + mov r10d,DWORD[((OPENSSL_ia32cap_P+8))] + vmovd xmm0,DWORD[rdi] + vmovd xmm1,DWORD[4+rdi] + vmovd xmm2,DWORD[8+rdi] + vmovd xmm3,DWORD[12+rdi] + vmovd xmm4,DWORD[16+rdi] + +$L$do_avx2: + cmp rdx,512 + jb NEAR $L$skip_avx512 + and r10d,r11d + test r10d,65536 + jnz NEAR $L$blocks_avx512 +$L$skip_avx512: + lea r11,[((-248))+rsp] + sub rsp,0x1c8 + vmovdqa XMMWORD[80+r11],xmm6 + vmovdqa XMMWORD[96+r11],xmm7 + vmovdqa XMMWORD[112+r11],xmm8 + vmovdqa XMMWORD[128+r11],xmm9 + vmovdqa XMMWORD[144+r11],xmm10 + vmovdqa XMMWORD[160+r11],xmm11 + vmovdqa XMMWORD[176+r11],xmm12 + vmovdqa XMMWORD[192+r11],xmm13 + vmovdqa XMMWORD[208+r11],xmm14 + vmovdqa XMMWORD[224+r11],xmm15 +$L$do_avx2_body: + lea rcx,[$L$const] + lea rdi,[((48+64))+rdi] + vmovdqa ymm7,YMMWORD[96+rcx] + + + vmovdqu xmm9,XMMWORD[((-64))+rdi] + and rsp,-512 + vmovdqu xmm10,XMMWORD[((-48))+rdi] + vmovdqu xmm6,XMMWORD[((-32))+rdi] + vmovdqu xmm11,XMMWORD[((-16))+rdi] + vmovdqu xmm12,XMMWORD[rdi] + vmovdqu xmm13,XMMWORD[16+rdi] + lea rax,[144+rsp] + vmovdqu xmm14,XMMWORD[32+rdi] + vpermd ymm9,ymm7,ymm9 + vmovdqu xmm15,XMMWORD[48+rdi] + vpermd ymm10,ymm7,ymm10 + vmovdqu xmm5,XMMWORD[64+rdi] + vpermd ymm6,ymm7,ymm6 + vmovdqa YMMWORD[rsp],ymm9 + vpermd ymm11,ymm7,ymm11 + vmovdqa YMMWORD[(32-144)+rax],ymm10 + vpermd ymm12,ymm7,ymm12 + vmovdqa YMMWORD[(64-144)+rax],ymm6 + vpermd ymm13,ymm7,ymm13 + vmovdqa YMMWORD[(96-144)+rax],ymm11 + vpermd ymm14,ymm7,ymm14 + vmovdqa YMMWORD[(128-144)+rax],ymm12 + vpermd ymm15,ymm7,ymm15 + vmovdqa YMMWORD[(160-144)+rax],ymm13 + vpermd ymm5,ymm7,ymm5 + vmovdqa YMMWORD[(192-144)+rax],ymm14 + vmovdqa YMMWORD[(224-144)+rax],ymm15 + vmovdqa YMMWORD[(256-144)+rax],ymm5 + vmovdqa ymm5,YMMWORD[64+rcx] + + + + vmovdqu xmm7,XMMWORD[rsi] + vmovdqu xmm8,XMMWORD[16+rsi] + vinserti128 ymm7,ymm7,XMMWORD[32+rsi],1 + vinserti128 ymm8,ymm8,XMMWORD[48+rsi],1 + lea rsi,[64+rsi] + + vpsrldq ymm9,ymm7,6 + vpsrldq ymm10,ymm8,6 + vpunpckhqdq ymm6,ymm7,ymm8 + vpunpcklqdq ymm9,ymm9,ymm10 + vpunpcklqdq ymm7,ymm7,ymm8 + + vpsrlq ymm10,ymm9,30 + vpsrlq ymm9,ymm9,4 + vpsrlq ymm8,ymm7,26 + vpsrlq ymm6,ymm6,40 + vpand ymm9,ymm9,ymm5 + vpand ymm7,ymm7,ymm5 + vpand ymm8,ymm8,ymm5 + vpand ymm10,ymm10,ymm5 + vpor ymm6,ymm6,YMMWORD[32+rcx] + + vpaddq ymm2,ymm9,ymm2 + sub rdx,64 + jz NEAR $L$tail_avx2 + jmp NEAR $L$oop_avx2 + +ALIGN 32 +$L$oop_avx2: + + + + + + + + + vpaddq ymm0,ymm7,ymm0 + vmovdqa ymm7,YMMWORD[rsp] + vpaddq ymm1,ymm8,ymm1 + vmovdqa ymm8,YMMWORD[32+rsp] + vpaddq ymm3,ymm10,ymm3 + vmovdqa ymm9,YMMWORD[96+rsp] + vpaddq ymm4,ymm6,ymm4 + vmovdqa ymm10,YMMWORD[48+rax] + vmovdqa ymm5,YMMWORD[112+rax] + + + + + + + + + + + + + + + + + vpmuludq ymm13,ymm7,ymm2 + vpmuludq ymm14,ymm8,ymm2 + vpmuludq ymm15,ymm9,ymm2 + vpmuludq ymm11,ymm10,ymm2 + vpmuludq ymm12,ymm5,ymm2 + + vpmuludq ymm6,ymm8,ymm0 + vpmuludq ymm2,ymm8,ymm1 + vpaddq ymm12,ymm12,ymm6 + vpaddq ymm13,ymm13,ymm2 + vpmuludq ymm6,ymm8,ymm3 + vpmuludq ymm2,ymm4,YMMWORD[64+rsp] + vpaddq ymm15,ymm15,ymm6 + vpaddq ymm11,ymm11,ymm2 + vmovdqa ymm8,YMMWORD[((-16))+rax] + + vpmuludq ymm6,ymm7,ymm0 + vpmuludq ymm2,ymm7,ymm1 + vpaddq ymm11,ymm11,ymm6 + vpaddq ymm12,ymm12,ymm2 + vpmuludq ymm6,ymm7,ymm3 + vpmuludq ymm2,ymm7,ymm4 + vmovdqu xmm7,XMMWORD[rsi] + vpaddq ymm14,ymm14,ymm6 + vpaddq ymm15,ymm15,ymm2 + vinserti128 ymm7,ymm7,XMMWORD[32+rsi],1 + + vpmuludq ymm6,ymm8,ymm3 + vpmuludq ymm2,ymm8,ymm4 + vmovdqu xmm8,XMMWORD[16+rsi] + vpaddq ymm11,ymm11,ymm6 + vpaddq ymm12,ymm12,ymm2 + vmovdqa ymm2,YMMWORD[16+rax] + vpmuludq ymm6,ymm9,ymm1 + vpmuludq ymm9,ymm9,ymm0 + vpaddq ymm14,ymm14,ymm6 + vpaddq ymm13,ymm13,ymm9 + vinserti128 ymm8,ymm8,XMMWORD[48+rsi],1 + lea rsi,[64+rsi] + + vpmuludq ymm6,ymm2,ymm1 + vpmuludq ymm2,ymm2,ymm0 + vpsrldq ymm9,ymm7,6 + vpaddq ymm15,ymm15,ymm6 + vpaddq ymm14,ymm14,ymm2 + vpmuludq ymm6,ymm10,ymm3 + vpmuludq ymm2,ymm10,ymm4 + vpsrldq ymm10,ymm8,6 + vpaddq ymm12,ymm12,ymm6 + vpaddq ymm13,ymm13,ymm2 + vpunpckhqdq ymm6,ymm7,ymm8 + + vpmuludq ymm3,ymm5,ymm3 + vpmuludq ymm4,ymm5,ymm4 + vpunpcklqdq ymm7,ymm7,ymm8 + vpaddq ymm2,ymm13,ymm3 + vpaddq ymm3,ymm14,ymm4 + vpunpcklqdq ymm10,ymm9,ymm10 + vpmuludq ymm4,ymm0,YMMWORD[80+rax] + vpmuludq ymm0,ymm5,ymm1 + vmovdqa ymm5,YMMWORD[64+rcx] + vpaddq ymm4,ymm15,ymm4 + vpaddq ymm0,ymm11,ymm0 + + + + + vpsrlq ymm14,ymm3,26 + vpand ymm3,ymm3,ymm5 + vpaddq ymm4,ymm4,ymm14 + + vpsrlq ymm11,ymm0,26 + vpand ymm0,ymm0,ymm5 + vpaddq ymm1,ymm12,ymm11 + + vpsrlq ymm15,ymm4,26 + vpand ymm4,ymm4,ymm5 + + vpsrlq ymm9,ymm10,4 + + vpsrlq ymm12,ymm1,26 + vpand ymm1,ymm1,ymm5 + vpaddq ymm2,ymm2,ymm12 + + vpaddq ymm0,ymm0,ymm15 + vpsllq ymm15,ymm15,2 + vpaddq ymm0,ymm0,ymm15 + + vpand ymm9,ymm9,ymm5 + vpsrlq ymm8,ymm7,26 + + vpsrlq ymm13,ymm2,26 + vpand ymm2,ymm2,ymm5 + vpaddq ymm3,ymm3,ymm13 + + vpaddq ymm2,ymm2,ymm9 + vpsrlq ymm10,ymm10,30 + + vpsrlq ymm11,ymm0,26 + vpand ymm0,ymm0,ymm5 + vpaddq ymm1,ymm1,ymm11 + + vpsrlq ymm6,ymm6,40 + + vpsrlq ymm14,ymm3,26 + vpand ymm3,ymm3,ymm5 + vpaddq ymm4,ymm4,ymm14 + + vpand ymm7,ymm7,ymm5 + vpand ymm8,ymm8,ymm5 + vpand ymm10,ymm10,ymm5 + vpor ymm6,ymm6,YMMWORD[32+rcx] + + sub rdx,64 + jnz NEAR $L$oop_avx2 + +DB 0x66,0x90 +$L$tail_avx2: + + + + + + + + vpaddq ymm0,ymm7,ymm0 + vmovdqu ymm7,YMMWORD[4+rsp] + vpaddq ymm1,ymm8,ymm1 + vmovdqu ymm8,YMMWORD[36+rsp] + vpaddq ymm3,ymm10,ymm3 + vmovdqu ymm9,YMMWORD[100+rsp] + vpaddq ymm4,ymm6,ymm4 + vmovdqu ymm10,YMMWORD[52+rax] + vmovdqu ymm5,YMMWORD[116+rax] + + vpmuludq ymm13,ymm7,ymm2 + vpmuludq ymm14,ymm8,ymm2 + vpmuludq ymm15,ymm9,ymm2 + vpmuludq ymm11,ymm10,ymm2 + vpmuludq ymm12,ymm5,ymm2 + + vpmuludq ymm6,ymm8,ymm0 + vpmuludq ymm2,ymm8,ymm1 + vpaddq ymm12,ymm12,ymm6 + vpaddq ymm13,ymm13,ymm2 + vpmuludq ymm6,ymm8,ymm3 + vpmuludq ymm2,ymm4,YMMWORD[68+rsp] + vpaddq ymm15,ymm15,ymm6 + vpaddq ymm11,ymm11,ymm2 + + vpmuludq ymm6,ymm7,ymm0 + vpmuludq ymm2,ymm7,ymm1 + vpaddq ymm11,ymm11,ymm6 + vmovdqu ymm8,YMMWORD[((-12))+rax] + vpaddq ymm12,ymm12,ymm2 + vpmuludq ymm6,ymm7,ymm3 + vpmuludq ymm2,ymm7,ymm4 + vpaddq ymm14,ymm14,ymm6 + vpaddq ymm15,ymm15,ymm2 + + vpmuludq ymm6,ymm8,ymm3 + vpmuludq ymm2,ymm8,ymm4 + vpaddq ymm11,ymm11,ymm6 + vpaddq ymm12,ymm12,ymm2 + vmovdqu ymm2,YMMWORD[20+rax] + vpmuludq ymm6,ymm9,ymm1 + vpmuludq ymm9,ymm9,ymm0 + vpaddq ymm14,ymm14,ymm6 + vpaddq ymm13,ymm13,ymm9 + + vpmuludq ymm6,ymm2,ymm1 + vpmuludq ymm2,ymm2,ymm0 + vpaddq ymm15,ymm15,ymm6 + vpaddq ymm14,ymm14,ymm2 + vpmuludq ymm6,ymm10,ymm3 + vpmuludq ymm2,ymm10,ymm4 + vpaddq ymm12,ymm12,ymm6 + vpaddq ymm13,ymm13,ymm2 + + vpmuludq ymm3,ymm5,ymm3 + vpmuludq ymm4,ymm5,ymm4 + vpaddq ymm2,ymm13,ymm3 + vpaddq ymm3,ymm14,ymm4 + vpmuludq ymm4,ymm0,YMMWORD[84+rax] + vpmuludq ymm0,ymm5,ymm1 + vmovdqa ymm5,YMMWORD[64+rcx] + vpaddq ymm4,ymm15,ymm4 + vpaddq ymm0,ymm11,ymm0 + + + + + vpsrldq ymm8,ymm12,8 + vpsrldq ymm9,ymm2,8 + vpsrldq ymm10,ymm3,8 + vpsrldq ymm6,ymm4,8 + vpsrldq ymm7,ymm0,8 + vpaddq ymm12,ymm12,ymm8 + vpaddq ymm2,ymm2,ymm9 + vpaddq ymm3,ymm3,ymm10 + vpaddq ymm4,ymm4,ymm6 + vpaddq ymm0,ymm0,ymm7 + + vpermq ymm10,ymm3,0x2 + vpermq ymm6,ymm4,0x2 + vpermq ymm7,ymm0,0x2 + vpermq ymm8,ymm12,0x2 + vpermq ymm9,ymm2,0x2 + vpaddq ymm3,ymm3,ymm10 + vpaddq ymm4,ymm4,ymm6 + vpaddq ymm0,ymm0,ymm7 + vpaddq ymm12,ymm12,ymm8 + vpaddq ymm2,ymm2,ymm9 + + + + + vpsrlq ymm14,ymm3,26 + vpand ymm3,ymm3,ymm5 + vpaddq ymm4,ymm4,ymm14 + + vpsrlq ymm11,ymm0,26 + vpand ymm0,ymm0,ymm5 + vpaddq ymm1,ymm12,ymm11 + + vpsrlq ymm15,ymm4,26 + vpand ymm4,ymm4,ymm5 + + vpsrlq ymm12,ymm1,26 + vpand ymm1,ymm1,ymm5 + vpaddq ymm2,ymm2,ymm12 + + vpaddq ymm0,ymm0,ymm15 + vpsllq ymm15,ymm15,2 + vpaddq ymm0,ymm0,ymm15 + + vpsrlq ymm13,ymm2,26 + vpand ymm2,ymm2,ymm5 + vpaddq ymm3,ymm3,ymm13 + + vpsrlq ymm11,ymm0,26 + vpand ymm0,ymm0,ymm5 + vpaddq ymm1,ymm1,ymm11 + + vpsrlq ymm14,ymm3,26 + vpand ymm3,ymm3,ymm5 + vpaddq ymm4,ymm4,ymm14 + + vmovd DWORD[(-112)+rdi],xmm0 + vmovd DWORD[(-108)+rdi],xmm1 + vmovd DWORD[(-104)+rdi],xmm2 + vmovd DWORD[(-100)+rdi],xmm3 + vmovd DWORD[(-96)+rdi],xmm4 + vmovdqa xmm6,XMMWORD[80+r11] + vmovdqa xmm7,XMMWORD[96+r11] + vmovdqa xmm8,XMMWORD[112+r11] + vmovdqa xmm9,XMMWORD[128+r11] + vmovdqa xmm10,XMMWORD[144+r11] + vmovdqa xmm11,XMMWORD[160+r11] + vmovdqa xmm12,XMMWORD[176+r11] + vmovdqa xmm13,XMMWORD[192+r11] + vmovdqa xmm14,XMMWORD[208+r11] + vmovdqa xmm15,XMMWORD[224+r11] + lea rsp,[248+r11] +$L$do_avx2_epilogue: + vzeroupper + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_poly1305_blocks_avx2: + +ALIGN 32 +poly1305_blocks_avx512: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_poly1305_blocks_avx512: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + +$L$blocks_avx512: + mov eax,15 + kmovw k2,eax + lea r11,[((-248))+rsp] + sub rsp,0x1c8 + vmovdqa XMMWORD[80+r11],xmm6 + vmovdqa XMMWORD[96+r11],xmm7 + vmovdqa XMMWORD[112+r11],xmm8 + vmovdqa XMMWORD[128+r11],xmm9 + vmovdqa XMMWORD[144+r11],xmm10 + vmovdqa XMMWORD[160+r11],xmm11 + vmovdqa XMMWORD[176+r11],xmm12 + vmovdqa XMMWORD[192+r11],xmm13 + vmovdqa XMMWORD[208+r11],xmm14 + vmovdqa XMMWORD[224+r11],xmm15 +$L$do_avx512_body: + lea rcx,[$L$const] + lea rdi,[((48+64))+rdi] + vmovdqa ymm9,YMMWORD[96+rcx] + + + vmovdqu xmm11,XMMWORD[((-64))+rdi] + and rsp,-512 + vmovdqu xmm12,XMMWORD[((-48))+rdi] + mov rax,0x20 + vmovdqu xmm7,XMMWORD[((-32))+rdi] + vmovdqu xmm13,XMMWORD[((-16))+rdi] + vmovdqu xmm8,XMMWORD[rdi] + vmovdqu xmm14,XMMWORD[16+rdi] + vmovdqu xmm10,XMMWORD[32+rdi] + vmovdqu xmm15,XMMWORD[48+rdi] + vmovdqu xmm6,XMMWORD[64+rdi] + vpermd zmm16,zmm9,zmm11 + vpbroadcastq zmm5,QWORD[64+rcx] + vpermd zmm17,zmm9,zmm12 + vpermd zmm21,zmm9,zmm7 + vpermd zmm18,zmm9,zmm13 + vmovdqa64 ZMMWORD[rsp]{k2},zmm16 + vpsrlq zmm7,zmm16,32 + vpermd zmm22,zmm9,zmm8 + vmovdqu64 ZMMWORD[rax*1+rsp]{k2},zmm17 + vpsrlq zmm8,zmm17,32 + vpermd zmm19,zmm9,zmm14 + vmovdqa64 ZMMWORD[64+rsp]{k2},zmm21 + vpermd zmm23,zmm9,zmm10 + vpermd zmm20,zmm9,zmm15 + vmovdqu64 ZMMWORD[64+rax*1+rsp]{k2},zmm18 + vpermd zmm24,zmm9,zmm6 + vmovdqa64 ZMMWORD[128+rsp]{k2},zmm22 + vmovdqu64 ZMMWORD[128+rax*1+rsp]{k2},zmm19 + vmovdqa64 ZMMWORD[192+rsp]{k2},zmm23 + vmovdqu64 ZMMWORD[192+rax*1+rsp]{k2},zmm20 + vmovdqa64 ZMMWORD[256+rsp]{k2},zmm24 + + + + + + + + + + + vpmuludq zmm11,zmm16,zmm7 + vpmuludq zmm12,zmm17,zmm7 + vpmuludq zmm13,zmm18,zmm7 + vpmuludq zmm14,zmm19,zmm7 + vpmuludq zmm15,zmm20,zmm7 + vpsrlq zmm9,zmm18,32 + + vpmuludq zmm25,zmm24,zmm8 + vpmuludq zmm26,zmm16,zmm8 + vpmuludq zmm27,zmm17,zmm8 + vpmuludq zmm28,zmm18,zmm8 + vpmuludq zmm29,zmm19,zmm8 + vpsrlq zmm10,zmm19,32 + vpaddq zmm11,zmm11,zmm25 + vpaddq zmm12,zmm12,zmm26 + vpaddq zmm13,zmm13,zmm27 + vpaddq zmm14,zmm14,zmm28 + vpaddq zmm15,zmm15,zmm29 + + vpmuludq zmm25,zmm23,zmm9 + vpmuludq zmm26,zmm24,zmm9 + vpmuludq zmm28,zmm17,zmm9 + vpmuludq zmm29,zmm18,zmm9 + vpmuludq zmm27,zmm16,zmm9 + vpsrlq zmm6,zmm20,32 + vpaddq zmm11,zmm11,zmm25 + vpaddq zmm12,zmm12,zmm26 + vpaddq zmm14,zmm14,zmm28 + vpaddq zmm15,zmm15,zmm29 + vpaddq zmm13,zmm13,zmm27 + + vpmuludq zmm25,zmm22,zmm10 + vpmuludq zmm28,zmm16,zmm10 + vpmuludq zmm29,zmm17,zmm10 + vpmuludq zmm26,zmm23,zmm10 + vpmuludq zmm27,zmm24,zmm10 + vpaddq zmm11,zmm11,zmm25 + vpaddq zmm14,zmm14,zmm28 + vpaddq zmm15,zmm15,zmm29 + vpaddq zmm12,zmm12,zmm26 + vpaddq zmm13,zmm13,zmm27 + + vpmuludq zmm28,zmm24,zmm6 + vpmuludq zmm29,zmm16,zmm6 + vpmuludq zmm25,zmm21,zmm6 + vpmuludq zmm26,zmm22,zmm6 + vpmuludq zmm27,zmm23,zmm6 + vpaddq zmm14,zmm14,zmm28 + vpaddq zmm15,zmm15,zmm29 + vpaddq zmm11,zmm11,zmm25 + vpaddq zmm12,zmm12,zmm26 + vpaddq zmm13,zmm13,zmm27 + + + + vmovdqu64 zmm10,ZMMWORD[rsi] + vmovdqu64 zmm6,ZMMWORD[64+rsi] + lea rsi,[128+rsi] + + + + + vpsrlq zmm28,zmm14,26 + vpandq zmm14,zmm14,zmm5 + vpaddq zmm15,zmm15,zmm28 + + vpsrlq zmm25,zmm11,26 + vpandq zmm11,zmm11,zmm5 + vpaddq zmm12,zmm12,zmm25 + + vpsrlq zmm29,zmm15,26 + vpandq zmm15,zmm15,zmm5 + + vpsrlq zmm26,zmm12,26 + vpandq zmm12,zmm12,zmm5 + vpaddq zmm13,zmm13,zmm26 + + vpaddq zmm11,zmm11,zmm29 + vpsllq zmm29,zmm29,2 + vpaddq zmm11,zmm11,zmm29 + + vpsrlq zmm27,zmm13,26 + vpandq zmm13,zmm13,zmm5 + vpaddq zmm14,zmm14,zmm27 + + vpsrlq zmm25,zmm11,26 + vpandq zmm11,zmm11,zmm5 + vpaddq zmm12,zmm12,zmm25 + + vpsrlq zmm28,zmm14,26 + vpandq zmm14,zmm14,zmm5 + vpaddq zmm15,zmm15,zmm28 + + + + + + vpunpcklqdq zmm7,zmm10,zmm6 + vpunpckhqdq zmm6,zmm10,zmm6 + + + + + + + vmovdqa32 zmm25,ZMMWORD[128+rcx] + mov eax,0x7777 + kmovw k1,eax + + vpermd zmm16,zmm25,zmm16 + vpermd zmm17,zmm25,zmm17 + vpermd zmm18,zmm25,zmm18 + vpermd zmm19,zmm25,zmm19 + vpermd zmm20,zmm25,zmm20 + + vpermd zmm16{k1},zmm25,zmm11 + vpermd zmm17{k1},zmm25,zmm12 + vpermd zmm18{k1},zmm25,zmm13 + vpermd zmm19{k1},zmm25,zmm14 + vpermd zmm20{k1},zmm25,zmm15 + + vpslld zmm21,zmm17,2 + vpslld zmm22,zmm18,2 + vpslld zmm23,zmm19,2 + vpslld zmm24,zmm20,2 + vpaddd zmm21,zmm21,zmm17 + vpaddd zmm22,zmm22,zmm18 + vpaddd zmm23,zmm23,zmm19 + vpaddd zmm24,zmm24,zmm20 + + vpbroadcastq zmm30,QWORD[32+rcx] + + vpsrlq zmm9,zmm7,52 + vpsllq zmm10,zmm6,12 + vporq zmm9,zmm9,zmm10 + vpsrlq zmm8,zmm7,26 + vpsrlq zmm10,zmm6,14 + vpsrlq zmm6,zmm6,40 + vpandq zmm9,zmm9,zmm5 + vpandq zmm7,zmm7,zmm5 + + + + + vpaddq zmm2,zmm9,zmm2 + sub rdx,192 + jbe NEAR $L$tail_avx512 + jmp NEAR $L$oop_avx512 + +ALIGN 32 +$L$oop_avx512: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vpmuludq zmm14,zmm17,zmm2 + vpaddq zmm0,zmm7,zmm0 + vpmuludq zmm15,zmm18,zmm2 + vpandq zmm8,zmm8,zmm5 + vpmuludq zmm11,zmm23,zmm2 + vpandq zmm10,zmm10,zmm5 + vpmuludq zmm12,zmm24,zmm2 + vporq zmm6,zmm6,zmm30 + vpmuludq zmm13,zmm16,zmm2 + vpaddq zmm1,zmm8,zmm1 + vpaddq zmm3,zmm10,zmm3 + vpaddq zmm4,zmm6,zmm4 + + vmovdqu64 zmm10,ZMMWORD[rsi] + vmovdqu64 zmm6,ZMMWORD[64+rsi] + lea rsi,[128+rsi] + vpmuludq zmm28,zmm19,zmm0 + vpmuludq zmm29,zmm20,zmm0 + vpmuludq zmm25,zmm16,zmm0 + vpmuludq zmm26,zmm17,zmm0 + vpaddq zmm14,zmm14,zmm28 + vpaddq zmm15,zmm15,zmm29 + vpaddq zmm11,zmm11,zmm25 + vpaddq zmm12,zmm12,zmm26 + + vpmuludq zmm28,zmm18,zmm1 + vpmuludq zmm29,zmm19,zmm1 + vpmuludq zmm25,zmm24,zmm1 + vpmuludq zmm27,zmm18,zmm0 + vpaddq zmm14,zmm14,zmm28 + vpaddq zmm15,zmm15,zmm29 + vpaddq zmm11,zmm11,zmm25 + vpaddq zmm13,zmm13,zmm27 + + vpunpcklqdq zmm7,zmm10,zmm6 + vpunpckhqdq zmm6,zmm10,zmm6 + + vpmuludq zmm28,zmm16,zmm3 + vpmuludq zmm29,zmm17,zmm3 + vpmuludq zmm26,zmm16,zmm1 + vpmuludq zmm27,zmm17,zmm1 + vpaddq zmm14,zmm14,zmm28 + vpaddq zmm15,zmm15,zmm29 + vpaddq zmm12,zmm12,zmm26 + vpaddq zmm13,zmm13,zmm27 + + vpmuludq zmm28,zmm24,zmm4 + vpmuludq zmm29,zmm16,zmm4 + vpmuludq zmm25,zmm22,zmm3 + vpmuludq zmm26,zmm23,zmm3 + vpaddq zmm14,zmm14,zmm28 + vpmuludq zmm27,zmm24,zmm3 + vpaddq zmm15,zmm15,zmm29 + vpaddq zmm11,zmm11,zmm25 + vpaddq zmm12,zmm12,zmm26 + vpaddq zmm13,zmm13,zmm27 + + vpmuludq zmm25,zmm21,zmm4 + vpmuludq zmm26,zmm22,zmm4 + vpmuludq zmm27,zmm23,zmm4 + vpaddq zmm0,zmm11,zmm25 + vpaddq zmm1,zmm12,zmm26 + vpaddq zmm2,zmm13,zmm27 + + + + + vpsrlq zmm9,zmm7,52 + vpsllq zmm10,zmm6,12 + + vpsrlq zmm3,zmm14,26 + vpandq zmm14,zmm14,zmm5 + vpaddq zmm4,zmm15,zmm3 + + vporq zmm9,zmm9,zmm10 + + vpsrlq zmm11,zmm0,26 + vpandq zmm0,zmm0,zmm5 + vpaddq zmm1,zmm1,zmm11 + + vpandq zmm9,zmm9,zmm5 + + vpsrlq zmm15,zmm4,26 + vpandq zmm4,zmm4,zmm5 + + vpsrlq zmm12,zmm1,26 + vpandq zmm1,zmm1,zmm5 + vpaddq zmm2,zmm2,zmm12 + + vpaddq zmm0,zmm0,zmm15 + vpsllq zmm15,zmm15,2 + vpaddq zmm0,zmm0,zmm15 + + vpaddq zmm2,zmm2,zmm9 + vpsrlq zmm8,zmm7,26 + + vpsrlq zmm13,zmm2,26 + vpandq zmm2,zmm2,zmm5 + vpaddq zmm3,zmm14,zmm13 + + vpsrlq zmm10,zmm6,14 + + vpsrlq zmm11,zmm0,26 + vpandq zmm0,zmm0,zmm5 + vpaddq zmm1,zmm1,zmm11 + + vpsrlq zmm6,zmm6,40 + + vpsrlq zmm14,zmm3,26 + vpandq zmm3,zmm3,zmm5 + vpaddq zmm4,zmm4,zmm14 + + vpandq zmm7,zmm7,zmm5 + + + + + sub rdx,128 + ja NEAR $L$oop_avx512 + +$L$tail_avx512: + + + + + + vpsrlq zmm16,zmm16,32 + vpsrlq zmm17,zmm17,32 + vpsrlq zmm18,zmm18,32 + vpsrlq zmm23,zmm23,32 + vpsrlq zmm24,zmm24,32 + vpsrlq zmm19,zmm19,32 + vpsrlq zmm20,zmm20,32 + vpsrlq zmm21,zmm21,32 + vpsrlq zmm22,zmm22,32 + + + + lea rsi,[rdx*1+rsi] + + + vpaddq zmm0,zmm7,zmm0 + + vpmuludq zmm14,zmm17,zmm2 + vpmuludq zmm15,zmm18,zmm2 + vpmuludq zmm11,zmm23,zmm2 + vpandq zmm8,zmm8,zmm5 + vpmuludq zmm12,zmm24,zmm2 + vpandq zmm10,zmm10,zmm5 + vpmuludq zmm13,zmm16,zmm2 + vporq zmm6,zmm6,zmm30 + vpaddq zmm1,zmm8,zmm1 + vpaddq zmm3,zmm10,zmm3 + vpaddq zmm4,zmm6,zmm4 + + vmovdqu xmm7,XMMWORD[rsi] + vpmuludq zmm28,zmm19,zmm0 + vpmuludq zmm29,zmm20,zmm0 + vpmuludq zmm25,zmm16,zmm0 + vpmuludq zmm26,zmm17,zmm0 + vpaddq zmm14,zmm14,zmm28 + vpaddq zmm15,zmm15,zmm29 + vpaddq zmm11,zmm11,zmm25 + vpaddq zmm12,zmm12,zmm26 + + vmovdqu xmm8,XMMWORD[16+rsi] + vpmuludq zmm28,zmm18,zmm1 + vpmuludq zmm29,zmm19,zmm1 + vpmuludq zmm25,zmm24,zmm1 + vpmuludq zmm27,zmm18,zmm0 + vpaddq zmm14,zmm14,zmm28 + vpaddq zmm15,zmm15,zmm29 + vpaddq zmm11,zmm11,zmm25 + vpaddq zmm13,zmm13,zmm27 + + vinserti128 ymm7,ymm7,XMMWORD[32+rsi],1 + vpmuludq zmm28,zmm16,zmm3 + vpmuludq zmm29,zmm17,zmm3 + vpmuludq zmm26,zmm16,zmm1 + vpmuludq zmm27,zmm17,zmm1 + vpaddq zmm14,zmm14,zmm28 + vpaddq zmm15,zmm15,zmm29 + vpaddq zmm12,zmm12,zmm26 + vpaddq zmm13,zmm13,zmm27 + + vinserti128 ymm8,ymm8,XMMWORD[48+rsi],1 + vpmuludq zmm28,zmm24,zmm4 + vpmuludq zmm29,zmm16,zmm4 + vpmuludq zmm25,zmm22,zmm3 + vpmuludq zmm26,zmm23,zmm3 + vpmuludq zmm27,zmm24,zmm3 + vpaddq zmm3,zmm14,zmm28 + vpaddq zmm15,zmm15,zmm29 + vpaddq zmm11,zmm11,zmm25 + vpaddq zmm12,zmm12,zmm26 + vpaddq zmm13,zmm13,zmm27 + + vpmuludq zmm25,zmm21,zmm4 + vpmuludq zmm26,zmm22,zmm4 + vpmuludq zmm27,zmm23,zmm4 + vpaddq zmm0,zmm11,zmm25 + vpaddq zmm1,zmm12,zmm26 + vpaddq zmm2,zmm13,zmm27 + + + + + mov eax,1 + vpermq zmm14,zmm3,0xb1 + vpermq zmm4,zmm15,0xb1 + vpermq zmm11,zmm0,0xb1 + vpermq zmm12,zmm1,0xb1 + vpermq zmm13,zmm2,0xb1 + vpaddq zmm3,zmm3,zmm14 + vpaddq zmm4,zmm4,zmm15 + vpaddq zmm0,zmm0,zmm11 + vpaddq zmm1,zmm1,zmm12 + vpaddq zmm2,zmm2,zmm13 + + kmovw k3,eax + vpermq zmm14,zmm3,0x2 + vpermq zmm15,zmm4,0x2 + vpermq zmm11,zmm0,0x2 + vpermq zmm12,zmm1,0x2 + vpermq zmm13,zmm2,0x2 + vpaddq zmm3,zmm3,zmm14 + vpaddq zmm4,zmm4,zmm15 + vpaddq zmm0,zmm0,zmm11 + vpaddq zmm1,zmm1,zmm12 + vpaddq zmm2,zmm2,zmm13 + + vextracti64x4 ymm14,zmm3,0x1 + vextracti64x4 ymm15,zmm4,0x1 + vextracti64x4 ymm11,zmm0,0x1 + vextracti64x4 ymm12,zmm1,0x1 + vextracti64x4 ymm13,zmm2,0x1 + vpaddq zmm3{k3}{z},zmm3,zmm14 + vpaddq zmm4{k3}{z},zmm4,zmm15 + vpaddq zmm0{k3}{z},zmm0,zmm11 + vpaddq zmm1{k3}{z},zmm1,zmm12 + vpaddq zmm2{k3}{z},zmm2,zmm13 + + + + vpsrlq ymm14,ymm3,26 + vpand ymm3,ymm3,ymm5 + vpsrldq ymm9,ymm7,6 + vpsrldq ymm10,ymm8,6 + vpunpckhqdq ymm6,ymm7,ymm8 + vpaddq ymm4,ymm4,ymm14 + + vpsrlq ymm11,ymm0,26 + vpand ymm0,ymm0,ymm5 + vpunpcklqdq ymm9,ymm9,ymm10 + vpunpcklqdq ymm7,ymm7,ymm8 + vpaddq ymm1,ymm1,ymm11 + + vpsrlq ymm15,ymm4,26 + vpand ymm4,ymm4,ymm5 + + vpsrlq ymm12,ymm1,26 + vpand ymm1,ymm1,ymm5 + vpsrlq ymm10,ymm9,30 + vpsrlq ymm9,ymm9,4 + vpaddq ymm2,ymm2,ymm12 + + vpaddq ymm0,ymm0,ymm15 + vpsllq ymm15,ymm15,2 + vpsrlq ymm8,ymm7,26 + vpsrlq ymm6,ymm6,40 + vpaddq ymm0,ymm0,ymm15 + + vpsrlq ymm13,ymm2,26 + vpand ymm2,ymm2,ymm5 + vpand ymm9,ymm9,ymm5 + vpand ymm7,ymm7,ymm5 + vpaddq ymm3,ymm3,ymm13 + + vpsrlq ymm11,ymm0,26 + vpand ymm0,ymm0,ymm5 + vpaddq ymm2,ymm9,ymm2 + vpand ymm8,ymm8,ymm5 + vpaddq ymm1,ymm1,ymm11 + + vpsrlq ymm14,ymm3,26 + vpand ymm3,ymm3,ymm5 + vpand ymm10,ymm10,ymm5 + vpor ymm6,ymm6,YMMWORD[32+rcx] + vpaddq ymm4,ymm4,ymm14 + + lea rax,[144+rsp] + add rdx,64 + jnz NEAR $L$tail_avx2 + + vpsubq ymm2,ymm2,ymm9 + vmovd DWORD[(-112)+rdi],xmm0 + vmovd DWORD[(-108)+rdi],xmm1 + vmovd DWORD[(-104)+rdi],xmm2 + vmovd DWORD[(-100)+rdi],xmm3 + vmovd DWORD[(-96)+rdi],xmm4 + vzeroall + movdqa xmm6,XMMWORD[80+r11] + movdqa xmm7,XMMWORD[96+r11] + movdqa xmm8,XMMWORD[112+r11] + movdqa xmm9,XMMWORD[128+r11] + movdqa xmm10,XMMWORD[144+r11] + movdqa xmm11,XMMWORD[160+r11] + movdqa xmm12,XMMWORD[176+r11] + movdqa xmm13,XMMWORD[192+r11] + movdqa xmm14,XMMWORD[208+r11] + movdqa xmm15,XMMWORD[224+r11] + lea rsp,[248+r11] +$L$do_avx512_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_poly1305_blocks_avx512: +ALIGN 64 +$L$const: +$L$mask24: + DD 0x0ffffff,0,0x0ffffff,0,0x0ffffff,0,0x0ffffff,0 +$L$129: + DD 16777216,0,16777216,0,16777216,0,16777216,0 +$L$mask26: + DD 0x3ffffff,0,0x3ffffff,0,0x3ffffff,0,0x3ffffff,0 +$L$permd_avx2: + DD 2,2,2,3,2,0,2,1 +$L$permd_avx512: + DD 0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7 + +$L$2_44_inp_permd: + DD 0,1,1,2,2,3,7,7 +$L$2_44_inp_shift: + DQ 0,12,24,64 +$L$2_44_mask: + DQ 0xfffffffffff,0xfffffffffff,0x3ffffffffff,0xffffffffffffffff +$L$2_44_shift_rgt: + DQ 44,44,42,64 +$L$2_44_shift_lft: + DQ 8,8,10,64 + +ALIGN 64 +$L$x_mask44: + DQ 0xfffffffffff,0xfffffffffff,0xfffffffffff,0xfffffffffff + DQ 0xfffffffffff,0xfffffffffff,0xfffffffffff,0xfffffffffff +$L$x_mask42: + DQ 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff + DQ 0x3ffffffffff,0x3ffffffffff,0x3ffffffffff,0x3ffffffffff +DB 80,111,108,121,49,51,48,53,32,102,111,114,32,120,56,54 +DB 95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32 +DB 98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115 +DB 108,46,111,114,103,62,0 +ALIGN 16 +global xor128_encrypt_n_pad + +ALIGN 16 +xor128_encrypt_n_pad: + + sub rdx,r8 + sub rcx,r8 + mov r10,r9 + shr r9,4 + jz NEAR $L$tail_enc + nop +$L$oop_enc_xmm: + movdqu xmm0,XMMWORD[r8*1+rdx] + pxor xmm0,XMMWORD[r8] + movdqu XMMWORD[r8*1+rcx],xmm0 + movdqa XMMWORD[r8],xmm0 + lea r8,[16+r8] + dec r9 + jnz NEAR $L$oop_enc_xmm + + and r10,15 + jz NEAR $L$done_enc + +$L$tail_enc: + mov r9,16 + sub r9,r10 + xor eax,eax +$L$oop_enc_byte: + mov al,BYTE[r8*1+rdx] + xor al,BYTE[r8] + mov BYTE[r8*1+rcx],al + mov BYTE[r8],al + lea r8,[1+r8] + dec r10 + jnz NEAR $L$oop_enc_byte + + xor eax,eax +$L$oop_enc_pad: + mov BYTE[r8],al + lea r8,[1+r8] + dec r9 + jnz NEAR $L$oop_enc_pad + +$L$done_enc: + mov rax,r8 + DB 0F3h,0C3h ;repret + + + +global xor128_decrypt_n_pad + +ALIGN 16 +xor128_decrypt_n_pad: + + sub rdx,r8 + sub rcx,r8 + mov r10,r9 + shr r9,4 + jz NEAR $L$tail_dec + nop +$L$oop_dec_xmm: + movdqu xmm0,XMMWORD[r8*1+rdx] + movdqa xmm1,XMMWORD[r8] + pxor xmm1,xmm0 + movdqu XMMWORD[r8*1+rcx],xmm1 + movdqa XMMWORD[r8],xmm0 + lea r8,[16+r8] + dec r9 + jnz NEAR $L$oop_dec_xmm + + pxor xmm1,xmm1 + and r10,15 + jz NEAR $L$done_dec + +$L$tail_dec: + mov r9,16 + sub r9,r10 + xor eax,eax + xor r11,r11 +$L$oop_dec_byte: + mov r11b,BYTE[r8*1+rdx] + mov al,BYTE[r8] + xor al,r11b + mov BYTE[r8*1+rcx],al + mov BYTE[r8],r11b + lea r8,[1+r8] + dec r10 + jnz NEAR $L$oop_dec_byte + + xor eax,eax +$L$oop_dec_pad: + mov BYTE[r8],al + lea r8,[1+r8] + dec r9 + jnz NEAR $L$oop_dec_pad + +$L$done_dec: + mov rax,r8 + DB 0F3h,0C3h ;repret + + +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + lea rax,[48+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + + jmp NEAR $L$common_seh_tail + + + +ALIGN 16 +avx_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov rax,QWORD[208+r8] + + lea rsi,[80+rax] + lea rax,[248+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_poly1305_init wrt ..imagebase + DD $L$SEH_end_poly1305_init wrt ..imagebase + DD $L$SEH_info_poly1305_init wrt ..imagebase + + DD $L$SEH_begin_poly1305_blocks wrt ..imagebase + DD $L$SEH_end_poly1305_blocks wrt ..imagebase + DD $L$SEH_info_poly1305_blocks wrt ..imagebase + + DD $L$SEH_begin_poly1305_emit wrt ..imagebase + DD $L$SEH_end_poly1305_emit wrt ..imagebase + DD $L$SEH_info_poly1305_emit wrt ..imagebase + DD $L$SEH_begin_poly1305_blocks_avx wrt ..imagebase + DD $L$base2_64_avx wrt ..imagebase + DD $L$SEH_info_poly1305_blocks_avx_1 wrt ..imagebase + + DD $L$base2_64_avx wrt ..imagebase + DD $L$even_avx wrt ..imagebase + DD $L$SEH_info_poly1305_blocks_avx_2 wrt ..imagebase + + DD $L$even_avx wrt ..imagebase + DD $L$SEH_end_poly1305_blocks_avx wrt ..imagebase + DD $L$SEH_info_poly1305_blocks_avx_3 wrt ..imagebase + + DD $L$SEH_begin_poly1305_emit_avx wrt ..imagebase + DD $L$SEH_end_poly1305_emit_avx wrt ..imagebase + DD $L$SEH_info_poly1305_emit_avx wrt ..imagebase + DD $L$SEH_begin_poly1305_blocks_avx2 wrt ..imagebase + DD $L$base2_64_avx2 wrt ..imagebase + DD $L$SEH_info_poly1305_blocks_avx2_1 wrt ..imagebase + + DD $L$base2_64_avx2 wrt ..imagebase + DD $L$even_avx2 wrt ..imagebase + DD $L$SEH_info_poly1305_blocks_avx2_2 wrt ..imagebase + + DD $L$even_avx2 wrt ..imagebase + DD $L$SEH_end_poly1305_blocks_avx2 wrt ..imagebase + DD $L$SEH_info_poly1305_blocks_avx2_3 wrt ..imagebase + DD $L$SEH_begin_poly1305_blocks_avx512 wrt ..imagebase + DD $L$SEH_end_poly1305_blocks_avx512 wrt ..imagebase + DD $L$SEH_info_poly1305_blocks_avx512 wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_poly1305_init: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$SEH_begin_poly1305_init wrt ..imagebase,$L$SEH_begin_poly1305_init wrt ..imagebase + +$L$SEH_info_poly1305_blocks: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$blocks_body wrt ..imagebase,$L$blocks_epilogue wrt ..imagebase + +$L$SEH_info_poly1305_emit: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$SEH_begin_poly1305_emit wrt ..imagebase,$L$SEH_begin_poly1305_emit wrt ..imagebase +$L$SEH_info_poly1305_blocks_avx_1: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$blocks_avx_body wrt ..imagebase,$L$blocks_avx_epilogue wrt ..imagebase + +$L$SEH_info_poly1305_blocks_avx_2: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$base2_64_avx_body wrt ..imagebase,$L$base2_64_avx_epilogue wrt ..imagebase + +$L$SEH_info_poly1305_blocks_avx_3: +DB 9,0,0,0 + DD avx_handler wrt ..imagebase + DD $L$do_avx_body wrt ..imagebase,$L$do_avx_epilogue wrt ..imagebase + +$L$SEH_info_poly1305_emit_avx: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$SEH_begin_poly1305_emit_avx wrt ..imagebase,$L$SEH_begin_poly1305_emit_avx wrt ..imagebase +$L$SEH_info_poly1305_blocks_avx2_1: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$blocks_avx2_body wrt ..imagebase,$L$blocks_avx2_epilogue wrt ..imagebase + +$L$SEH_info_poly1305_blocks_avx2_2: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$base2_64_avx2_body wrt ..imagebase,$L$base2_64_avx2_epilogue wrt ..imagebase + +$L$SEH_info_poly1305_blocks_avx2_3: +DB 9,0,0,0 + DD avx_handler wrt ..imagebase + DD $L$do_avx2_body wrt ..imagebase,$L$do_avx2_epilogue wrt ..imagebase +$L$SEH_info_poly1305_blocks_avx512: +DB 9,0,0,0 + DD avx_handler wrt ..imagebase + DD $L$do_avx512_body wrt ..imagebase,$L$do_avx512_epilogue wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/rc4/rc4-md5-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/rc4/rc4-md5-x86_64.asm new file mode 100644 index 0000000..5e42fe6 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/rc4/rc4-md5-x86_64.asm @@ -0,0 +1,1388 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +ALIGN 16 + +global rc4_md5_enc + +rc4_md5_enc: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_rc4_md5_enc: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + cmp r9,0 + je NEAR $L$abort + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,40 + +$L$body: + mov r11,rcx + mov r12,r9 + mov r13,rsi + mov r14,rdx + mov r15,r8 + xor rbp,rbp + xor rcx,rcx + + lea rdi,[8+rdi] + mov bpl,BYTE[((-8))+rdi] + mov cl,BYTE[((-4))+rdi] + + inc bpl + sub r14,r13 + mov eax,DWORD[rbp*4+rdi] + add cl,al + lea rsi,[rbp*4+rdi] + shl r12,6 + add r12,r15 + mov QWORD[16+rsp],r12 + + mov QWORD[24+rsp],r11 + mov r8d,DWORD[r11] + mov r9d,DWORD[4+r11] + mov r10d,DWORD[8+r11] + mov r11d,DWORD[12+r11] + jmp NEAR $L$oop + +ALIGN 16 +$L$oop: + mov DWORD[rsp],r8d + mov DWORD[4+rsp],r9d + mov DWORD[8+rsp],r10d + mov r12d,r11d + mov DWORD[12+rsp],r11d + pxor xmm0,xmm0 + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],eax + and r12d,r9d + add r8d,DWORD[r15] + add al,dl + mov ebx,DWORD[4+rsi] + add r8d,3614090360 + xor r12d,r11d + movzx eax,al + mov DWORD[rsi],edx + add r8d,r12d + add cl,bl + rol r8d,7 + mov r12d,r10d + movd xmm0,DWORD[rax*4+rdi] + + add r8d,r9d + pxor xmm1,xmm1 + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],ebx + and r12d,r8d + add r11d,DWORD[4+r15] + add bl,dl + mov eax,DWORD[8+rsi] + add r11d,3905402710 + xor r12d,r10d + movzx ebx,bl + mov DWORD[4+rsi],edx + add r11d,r12d + add cl,al + rol r11d,12 + mov r12d,r9d + movd xmm1,DWORD[rbx*4+rdi] + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],eax + and r12d,r11d + add r10d,DWORD[8+r15] + add al,dl + mov ebx,DWORD[12+rsi] + add r10d,606105819 + xor r12d,r9d + movzx eax,al + mov DWORD[8+rsi],edx + add r10d,r12d + add cl,bl + rol r10d,17 + mov r12d,r8d + pinsrw xmm0,WORD[rax*4+rdi],1 + + add r10d,r11d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],ebx + and r12d,r10d + add r9d,DWORD[12+r15] + add bl,dl + mov eax,DWORD[16+rsi] + add r9d,3250441966 + xor r12d,r8d + movzx ebx,bl + mov DWORD[12+rsi],edx + add r9d,r12d + add cl,al + rol r9d,22 + mov r12d,r11d + pinsrw xmm1,WORD[rbx*4+rdi],1 + + add r9d,r10d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],eax + and r12d,r9d + add r8d,DWORD[16+r15] + add al,dl + mov ebx,DWORD[20+rsi] + add r8d,4118548399 + xor r12d,r11d + movzx eax,al + mov DWORD[16+rsi],edx + add r8d,r12d + add cl,bl + rol r8d,7 + mov r12d,r10d + pinsrw xmm0,WORD[rax*4+rdi],2 + + add r8d,r9d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],ebx + and r12d,r8d + add r11d,DWORD[20+r15] + add bl,dl + mov eax,DWORD[24+rsi] + add r11d,1200080426 + xor r12d,r10d + movzx ebx,bl + mov DWORD[20+rsi],edx + add r11d,r12d + add cl,al + rol r11d,12 + mov r12d,r9d + pinsrw xmm1,WORD[rbx*4+rdi],2 + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],eax + and r12d,r11d + add r10d,DWORD[24+r15] + add al,dl + mov ebx,DWORD[28+rsi] + add r10d,2821735955 + xor r12d,r9d + movzx eax,al + mov DWORD[24+rsi],edx + add r10d,r12d + add cl,bl + rol r10d,17 + mov r12d,r8d + pinsrw xmm0,WORD[rax*4+rdi],3 + + add r10d,r11d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],ebx + and r12d,r10d + add r9d,DWORD[28+r15] + add bl,dl + mov eax,DWORD[32+rsi] + add r9d,4249261313 + xor r12d,r8d + movzx ebx,bl + mov DWORD[28+rsi],edx + add r9d,r12d + add cl,al + rol r9d,22 + mov r12d,r11d + pinsrw xmm1,WORD[rbx*4+rdi],3 + + add r9d,r10d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],eax + and r12d,r9d + add r8d,DWORD[32+r15] + add al,dl + mov ebx,DWORD[36+rsi] + add r8d,1770035416 + xor r12d,r11d + movzx eax,al + mov DWORD[32+rsi],edx + add r8d,r12d + add cl,bl + rol r8d,7 + mov r12d,r10d + pinsrw xmm0,WORD[rax*4+rdi],4 + + add r8d,r9d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],ebx + and r12d,r8d + add r11d,DWORD[36+r15] + add bl,dl + mov eax,DWORD[40+rsi] + add r11d,2336552879 + xor r12d,r10d + movzx ebx,bl + mov DWORD[36+rsi],edx + add r11d,r12d + add cl,al + rol r11d,12 + mov r12d,r9d + pinsrw xmm1,WORD[rbx*4+rdi],4 + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],eax + and r12d,r11d + add r10d,DWORD[40+r15] + add al,dl + mov ebx,DWORD[44+rsi] + add r10d,4294925233 + xor r12d,r9d + movzx eax,al + mov DWORD[40+rsi],edx + add r10d,r12d + add cl,bl + rol r10d,17 + mov r12d,r8d + pinsrw xmm0,WORD[rax*4+rdi],5 + + add r10d,r11d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],ebx + and r12d,r10d + add r9d,DWORD[44+r15] + add bl,dl + mov eax,DWORD[48+rsi] + add r9d,2304563134 + xor r12d,r8d + movzx ebx,bl + mov DWORD[44+rsi],edx + add r9d,r12d + add cl,al + rol r9d,22 + mov r12d,r11d + pinsrw xmm1,WORD[rbx*4+rdi],5 + + add r9d,r10d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],eax + and r12d,r9d + add r8d,DWORD[48+r15] + add al,dl + mov ebx,DWORD[52+rsi] + add r8d,1804603682 + xor r12d,r11d + movzx eax,al + mov DWORD[48+rsi],edx + add r8d,r12d + add cl,bl + rol r8d,7 + mov r12d,r10d + pinsrw xmm0,WORD[rax*4+rdi],6 + + add r8d,r9d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],ebx + and r12d,r8d + add r11d,DWORD[52+r15] + add bl,dl + mov eax,DWORD[56+rsi] + add r11d,4254626195 + xor r12d,r10d + movzx ebx,bl + mov DWORD[52+rsi],edx + add r11d,r12d + add cl,al + rol r11d,12 + mov r12d,r9d + pinsrw xmm1,WORD[rbx*4+rdi],6 + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],eax + and r12d,r11d + add r10d,DWORD[56+r15] + add al,dl + mov ebx,DWORD[60+rsi] + add r10d,2792965006 + xor r12d,r9d + movzx eax,al + mov DWORD[56+rsi],edx + add r10d,r12d + add cl,bl + rol r10d,17 + mov r12d,r8d + pinsrw xmm0,WORD[rax*4+rdi],7 + + add r10d,r11d + movdqu xmm2,XMMWORD[r13] + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],ebx + and r12d,r10d + add r9d,DWORD[60+r15] + add bl,dl + mov eax,DWORD[64+rsi] + add r9d,1236535329 + xor r12d,r8d + movzx ebx,bl + mov DWORD[60+rsi],edx + add r9d,r12d + add cl,al + rol r9d,22 + mov r12d,r10d + pinsrw xmm1,WORD[rbx*4+rdi],7 + + add r9d,r10d + psllq xmm1,8 + pxor xmm2,xmm0 + pxor xmm2,xmm1 + pxor xmm0,xmm0 + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],eax + and r12d,r11d + add r8d,DWORD[4+r15] + add al,dl + mov ebx,DWORD[68+rsi] + add r8d,4129170786 + xor r12d,r10d + movzx eax,al + mov DWORD[64+rsi],edx + add r8d,r12d + add cl,bl + rol r8d,5 + mov r12d,r9d + movd xmm0,DWORD[rax*4+rdi] + + add r8d,r9d + pxor xmm1,xmm1 + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],ebx + and r12d,r10d + add r11d,DWORD[24+r15] + add bl,dl + mov eax,DWORD[72+rsi] + add r11d,3225465664 + xor r12d,r9d + movzx ebx,bl + mov DWORD[68+rsi],edx + add r11d,r12d + add cl,al + rol r11d,9 + mov r12d,r8d + movd xmm1,DWORD[rbx*4+rdi] + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],eax + and r12d,r9d + add r10d,DWORD[44+r15] + add al,dl + mov ebx,DWORD[76+rsi] + add r10d,643717713 + xor r12d,r8d + movzx eax,al + mov DWORD[72+rsi],edx + add r10d,r12d + add cl,bl + rol r10d,14 + mov r12d,r11d + pinsrw xmm0,WORD[rax*4+rdi],1 + + add r10d,r11d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],ebx + and r12d,r8d + add r9d,DWORD[r15] + add bl,dl + mov eax,DWORD[80+rsi] + add r9d,3921069994 + xor r12d,r11d + movzx ebx,bl + mov DWORD[76+rsi],edx + add r9d,r12d + add cl,al + rol r9d,20 + mov r12d,r10d + pinsrw xmm1,WORD[rbx*4+rdi],1 + + add r9d,r10d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],eax + and r12d,r11d + add r8d,DWORD[20+r15] + add al,dl + mov ebx,DWORD[84+rsi] + add r8d,3593408605 + xor r12d,r10d + movzx eax,al + mov DWORD[80+rsi],edx + add r8d,r12d + add cl,bl + rol r8d,5 + mov r12d,r9d + pinsrw xmm0,WORD[rax*4+rdi],2 + + add r8d,r9d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],ebx + and r12d,r10d + add r11d,DWORD[40+r15] + add bl,dl + mov eax,DWORD[88+rsi] + add r11d,38016083 + xor r12d,r9d + movzx ebx,bl + mov DWORD[84+rsi],edx + add r11d,r12d + add cl,al + rol r11d,9 + mov r12d,r8d + pinsrw xmm1,WORD[rbx*4+rdi],2 + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],eax + and r12d,r9d + add r10d,DWORD[60+r15] + add al,dl + mov ebx,DWORD[92+rsi] + add r10d,3634488961 + xor r12d,r8d + movzx eax,al + mov DWORD[88+rsi],edx + add r10d,r12d + add cl,bl + rol r10d,14 + mov r12d,r11d + pinsrw xmm0,WORD[rax*4+rdi],3 + + add r10d,r11d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],ebx + and r12d,r8d + add r9d,DWORD[16+r15] + add bl,dl + mov eax,DWORD[96+rsi] + add r9d,3889429448 + xor r12d,r11d + movzx ebx,bl + mov DWORD[92+rsi],edx + add r9d,r12d + add cl,al + rol r9d,20 + mov r12d,r10d + pinsrw xmm1,WORD[rbx*4+rdi],3 + + add r9d,r10d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],eax + and r12d,r11d + add r8d,DWORD[36+r15] + add al,dl + mov ebx,DWORD[100+rsi] + add r8d,568446438 + xor r12d,r10d + movzx eax,al + mov DWORD[96+rsi],edx + add r8d,r12d + add cl,bl + rol r8d,5 + mov r12d,r9d + pinsrw xmm0,WORD[rax*4+rdi],4 + + add r8d,r9d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],ebx + and r12d,r10d + add r11d,DWORD[56+r15] + add bl,dl + mov eax,DWORD[104+rsi] + add r11d,3275163606 + xor r12d,r9d + movzx ebx,bl + mov DWORD[100+rsi],edx + add r11d,r12d + add cl,al + rol r11d,9 + mov r12d,r8d + pinsrw xmm1,WORD[rbx*4+rdi],4 + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],eax + and r12d,r9d + add r10d,DWORD[12+r15] + add al,dl + mov ebx,DWORD[108+rsi] + add r10d,4107603335 + xor r12d,r8d + movzx eax,al + mov DWORD[104+rsi],edx + add r10d,r12d + add cl,bl + rol r10d,14 + mov r12d,r11d + pinsrw xmm0,WORD[rax*4+rdi],5 + + add r10d,r11d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],ebx + and r12d,r8d + add r9d,DWORD[32+r15] + add bl,dl + mov eax,DWORD[112+rsi] + add r9d,1163531501 + xor r12d,r11d + movzx ebx,bl + mov DWORD[108+rsi],edx + add r9d,r12d + add cl,al + rol r9d,20 + mov r12d,r10d + pinsrw xmm1,WORD[rbx*4+rdi],5 + + add r9d,r10d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],eax + and r12d,r11d + add r8d,DWORD[52+r15] + add al,dl + mov ebx,DWORD[116+rsi] + add r8d,2850285829 + xor r12d,r10d + movzx eax,al + mov DWORD[112+rsi],edx + add r8d,r12d + add cl,bl + rol r8d,5 + mov r12d,r9d + pinsrw xmm0,WORD[rax*4+rdi],6 + + add r8d,r9d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],ebx + and r12d,r10d + add r11d,DWORD[8+r15] + add bl,dl + mov eax,DWORD[120+rsi] + add r11d,4243563512 + xor r12d,r9d + movzx ebx,bl + mov DWORD[116+rsi],edx + add r11d,r12d + add cl,al + rol r11d,9 + mov r12d,r8d + pinsrw xmm1,WORD[rbx*4+rdi],6 + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],eax + and r12d,r9d + add r10d,DWORD[28+r15] + add al,dl + mov ebx,DWORD[124+rsi] + add r10d,1735328473 + xor r12d,r8d + movzx eax,al + mov DWORD[120+rsi],edx + add r10d,r12d + add cl,bl + rol r10d,14 + mov r12d,r11d + pinsrw xmm0,WORD[rax*4+rdi],7 + + add r10d,r11d + movdqu xmm3,XMMWORD[16+r13] + add bpl,32 + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],ebx + and r12d,r8d + add r9d,DWORD[48+r15] + add bl,dl + mov eax,DWORD[rbp*4+rdi] + add r9d,2368359562 + xor r12d,r11d + movzx ebx,bl + mov DWORD[124+rsi],edx + add r9d,r12d + add cl,al + rol r9d,20 + mov r12d,r11d + pinsrw xmm1,WORD[rbx*4+rdi],7 + + add r9d,r10d + mov rsi,rcx + xor rcx,rcx + mov cl,sil + lea rsi,[rbp*4+rdi] + psllq xmm1,8 + pxor xmm3,xmm0 + pxor xmm3,xmm1 + pxor xmm0,xmm0 + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],eax + xor r12d,r9d + add r8d,DWORD[20+r15] + add al,dl + mov ebx,DWORD[4+rsi] + add r8d,4294588738 + movzx eax,al + add r8d,r12d + mov DWORD[rsi],edx + add cl,bl + rol r8d,4 + mov r12d,r10d + movd xmm0,DWORD[rax*4+rdi] + + add r8d,r9d + pxor xmm1,xmm1 + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],ebx + xor r12d,r8d + add r11d,DWORD[32+r15] + add bl,dl + mov eax,DWORD[8+rsi] + add r11d,2272392833 + movzx ebx,bl + add r11d,r12d + mov DWORD[4+rsi],edx + add cl,al + rol r11d,11 + mov r12d,r9d + movd xmm1,DWORD[rbx*4+rdi] + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],eax + xor r12d,r11d + add r10d,DWORD[44+r15] + add al,dl + mov ebx,DWORD[12+rsi] + add r10d,1839030562 + movzx eax,al + add r10d,r12d + mov DWORD[8+rsi],edx + add cl,bl + rol r10d,16 + mov r12d,r8d + pinsrw xmm0,WORD[rax*4+rdi],1 + + add r10d,r11d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],ebx + xor r12d,r10d + add r9d,DWORD[56+r15] + add bl,dl + mov eax,DWORD[16+rsi] + add r9d,4259657740 + movzx ebx,bl + add r9d,r12d + mov DWORD[12+rsi],edx + add cl,al + rol r9d,23 + mov r12d,r11d + pinsrw xmm1,WORD[rbx*4+rdi],1 + + add r9d,r10d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],eax + xor r12d,r9d + add r8d,DWORD[4+r15] + add al,dl + mov ebx,DWORD[20+rsi] + add r8d,2763975236 + movzx eax,al + add r8d,r12d + mov DWORD[16+rsi],edx + add cl,bl + rol r8d,4 + mov r12d,r10d + pinsrw xmm0,WORD[rax*4+rdi],2 + + add r8d,r9d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],ebx + xor r12d,r8d + add r11d,DWORD[16+r15] + add bl,dl + mov eax,DWORD[24+rsi] + add r11d,1272893353 + movzx ebx,bl + add r11d,r12d + mov DWORD[20+rsi],edx + add cl,al + rol r11d,11 + mov r12d,r9d + pinsrw xmm1,WORD[rbx*4+rdi],2 + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],eax + xor r12d,r11d + add r10d,DWORD[28+r15] + add al,dl + mov ebx,DWORD[28+rsi] + add r10d,4139469664 + movzx eax,al + add r10d,r12d + mov DWORD[24+rsi],edx + add cl,bl + rol r10d,16 + mov r12d,r8d + pinsrw xmm0,WORD[rax*4+rdi],3 + + add r10d,r11d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],ebx + xor r12d,r10d + add r9d,DWORD[40+r15] + add bl,dl + mov eax,DWORD[32+rsi] + add r9d,3200236656 + movzx ebx,bl + add r9d,r12d + mov DWORD[28+rsi],edx + add cl,al + rol r9d,23 + mov r12d,r11d + pinsrw xmm1,WORD[rbx*4+rdi],3 + + add r9d,r10d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],eax + xor r12d,r9d + add r8d,DWORD[52+r15] + add al,dl + mov ebx,DWORD[36+rsi] + add r8d,681279174 + movzx eax,al + add r8d,r12d + mov DWORD[32+rsi],edx + add cl,bl + rol r8d,4 + mov r12d,r10d + pinsrw xmm0,WORD[rax*4+rdi],4 + + add r8d,r9d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],ebx + xor r12d,r8d + add r11d,DWORD[r15] + add bl,dl + mov eax,DWORD[40+rsi] + add r11d,3936430074 + movzx ebx,bl + add r11d,r12d + mov DWORD[36+rsi],edx + add cl,al + rol r11d,11 + mov r12d,r9d + pinsrw xmm1,WORD[rbx*4+rdi],4 + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],eax + xor r12d,r11d + add r10d,DWORD[12+r15] + add al,dl + mov ebx,DWORD[44+rsi] + add r10d,3572445317 + movzx eax,al + add r10d,r12d + mov DWORD[40+rsi],edx + add cl,bl + rol r10d,16 + mov r12d,r8d + pinsrw xmm0,WORD[rax*4+rdi],5 + + add r10d,r11d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],ebx + xor r12d,r10d + add r9d,DWORD[24+r15] + add bl,dl + mov eax,DWORD[48+rsi] + add r9d,76029189 + movzx ebx,bl + add r9d,r12d + mov DWORD[44+rsi],edx + add cl,al + rol r9d,23 + mov r12d,r11d + pinsrw xmm1,WORD[rbx*4+rdi],5 + + add r9d,r10d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],eax + xor r12d,r9d + add r8d,DWORD[36+r15] + add al,dl + mov ebx,DWORD[52+rsi] + add r8d,3654602809 + movzx eax,al + add r8d,r12d + mov DWORD[48+rsi],edx + add cl,bl + rol r8d,4 + mov r12d,r10d + pinsrw xmm0,WORD[rax*4+rdi],6 + + add r8d,r9d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],ebx + xor r12d,r8d + add r11d,DWORD[48+r15] + add bl,dl + mov eax,DWORD[56+rsi] + add r11d,3873151461 + movzx ebx,bl + add r11d,r12d + mov DWORD[52+rsi],edx + add cl,al + rol r11d,11 + mov r12d,r9d + pinsrw xmm1,WORD[rbx*4+rdi],6 + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],eax + xor r12d,r11d + add r10d,DWORD[60+r15] + add al,dl + mov ebx,DWORD[60+rsi] + add r10d,530742520 + movzx eax,al + add r10d,r12d + mov DWORD[56+rsi],edx + add cl,bl + rol r10d,16 + mov r12d,r8d + pinsrw xmm0,WORD[rax*4+rdi],7 + + add r10d,r11d + movdqu xmm4,XMMWORD[32+r13] + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],ebx + xor r12d,r10d + add r9d,DWORD[8+r15] + add bl,dl + mov eax,DWORD[64+rsi] + add r9d,3299628645 + movzx ebx,bl + add r9d,r12d + mov DWORD[60+rsi],edx + add cl,al + rol r9d,23 + mov r12d,-1 + pinsrw xmm1,WORD[rbx*4+rdi],7 + + add r9d,r10d + psllq xmm1,8 + pxor xmm4,xmm0 + pxor xmm4,xmm1 + pxor xmm0,xmm0 + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],eax + or r12d,r9d + add r8d,DWORD[r15] + add al,dl + mov ebx,DWORD[68+rsi] + add r8d,4096336452 + movzx eax,al + xor r12d,r10d + mov DWORD[64+rsi],edx + add r8d,r12d + add cl,bl + rol r8d,6 + mov r12d,-1 + movd xmm0,DWORD[rax*4+rdi] + + add r8d,r9d + pxor xmm1,xmm1 + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],ebx + or r12d,r8d + add r11d,DWORD[28+r15] + add bl,dl + mov eax,DWORD[72+rsi] + add r11d,1126891415 + movzx ebx,bl + xor r12d,r9d + mov DWORD[68+rsi],edx + add r11d,r12d + add cl,al + rol r11d,10 + mov r12d,-1 + movd xmm1,DWORD[rbx*4+rdi] + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],eax + or r12d,r11d + add r10d,DWORD[56+r15] + add al,dl + mov ebx,DWORD[76+rsi] + add r10d,2878612391 + movzx eax,al + xor r12d,r8d + mov DWORD[72+rsi],edx + add r10d,r12d + add cl,bl + rol r10d,15 + mov r12d,-1 + pinsrw xmm0,WORD[rax*4+rdi],1 + + add r10d,r11d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],ebx + or r12d,r10d + add r9d,DWORD[20+r15] + add bl,dl + mov eax,DWORD[80+rsi] + add r9d,4237533241 + movzx ebx,bl + xor r12d,r11d + mov DWORD[76+rsi],edx + add r9d,r12d + add cl,al + rol r9d,21 + mov r12d,-1 + pinsrw xmm1,WORD[rbx*4+rdi],1 + + add r9d,r10d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],eax + or r12d,r9d + add r8d,DWORD[48+r15] + add al,dl + mov ebx,DWORD[84+rsi] + add r8d,1700485571 + movzx eax,al + xor r12d,r10d + mov DWORD[80+rsi],edx + add r8d,r12d + add cl,bl + rol r8d,6 + mov r12d,-1 + pinsrw xmm0,WORD[rax*4+rdi],2 + + add r8d,r9d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],ebx + or r12d,r8d + add r11d,DWORD[12+r15] + add bl,dl + mov eax,DWORD[88+rsi] + add r11d,2399980690 + movzx ebx,bl + xor r12d,r9d + mov DWORD[84+rsi],edx + add r11d,r12d + add cl,al + rol r11d,10 + mov r12d,-1 + pinsrw xmm1,WORD[rbx*4+rdi],2 + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],eax + or r12d,r11d + add r10d,DWORD[40+r15] + add al,dl + mov ebx,DWORD[92+rsi] + add r10d,4293915773 + movzx eax,al + xor r12d,r8d + mov DWORD[88+rsi],edx + add r10d,r12d + add cl,bl + rol r10d,15 + mov r12d,-1 + pinsrw xmm0,WORD[rax*4+rdi],3 + + add r10d,r11d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],ebx + or r12d,r10d + add r9d,DWORD[4+r15] + add bl,dl + mov eax,DWORD[96+rsi] + add r9d,2240044497 + movzx ebx,bl + xor r12d,r11d + mov DWORD[92+rsi],edx + add r9d,r12d + add cl,al + rol r9d,21 + mov r12d,-1 + pinsrw xmm1,WORD[rbx*4+rdi],3 + + add r9d,r10d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],eax + or r12d,r9d + add r8d,DWORD[32+r15] + add al,dl + mov ebx,DWORD[100+rsi] + add r8d,1873313359 + movzx eax,al + xor r12d,r10d + mov DWORD[96+rsi],edx + add r8d,r12d + add cl,bl + rol r8d,6 + mov r12d,-1 + pinsrw xmm0,WORD[rax*4+rdi],4 + + add r8d,r9d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],ebx + or r12d,r8d + add r11d,DWORD[60+r15] + add bl,dl + mov eax,DWORD[104+rsi] + add r11d,4264355552 + movzx ebx,bl + xor r12d,r9d + mov DWORD[100+rsi],edx + add r11d,r12d + add cl,al + rol r11d,10 + mov r12d,-1 + pinsrw xmm1,WORD[rbx*4+rdi],4 + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],eax + or r12d,r11d + add r10d,DWORD[24+r15] + add al,dl + mov ebx,DWORD[108+rsi] + add r10d,2734768916 + movzx eax,al + xor r12d,r8d + mov DWORD[104+rsi],edx + add r10d,r12d + add cl,bl + rol r10d,15 + mov r12d,-1 + pinsrw xmm0,WORD[rax*4+rdi],5 + + add r10d,r11d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],ebx + or r12d,r10d + add r9d,DWORD[52+r15] + add bl,dl + mov eax,DWORD[112+rsi] + add r9d,1309151649 + movzx ebx,bl + xor r12d,r11d + mov DWORD[108+rsi],edx + add r9d,r12d + add cl,al + rol r9d,21 + mov r12d,-1 + pinsrw xmm1,WORD[rbx*4+rdi],5 + + add r9d,r10d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r11d + mov DWORD[rcx*4+rdi],eax + or r12d,r9d + add r8d,DWORD[16+r15] + add al,dl + mov ebx,DWORD[116+rsi] + add r8d,4149444226 + movzx eax,al + xor r12d,r10d + mov DWORD[112+rsi],edx + add r8d,r12d + add cl,bl + rol r8d,6 + mov r12d,-1 + pinsrw xmm0,WORD[rax*4+rdi],6 + + add r8d,r9d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r10d + mov DWORD[rcx*4+rdi],ebx + or r12d,r8d + add r11d,DWORD[44+r15] + add bl,dl + mov eax,DWORD[120+rsi] + add r11d,3174756917 + movzx ebx,bl + xor r12d,r9d + mov DWORD[116+rsi],edx + add r11d,r12d + add cl,al + rol r11d,10 + mov r12d,-1 + pinsrw xmm1,WORD[rbx*4+rdi],6 + + add r11d,r8d + mov edx,DWORD[rcx*4+rdi] + xor r12d,r9d + mov DWORD[rcx*4+rdi],eax + or r12d,r11d + add r10d,DWORD[8+r15] + add al,dl + mov ebx,DWORD[124+rsi] + add r10d,718787259 + movzx eax,al + xor r12d,r8d + mov DWORD[120+rsi],edx + add r10d,r12d + add cl,bl + rol r10d,15 + mov r12d,-1 + pinsrw xmm0,WORD[rax*4+rdi],7 + + add r10d,r11d + movdqu xmm5,XMMWORD[48+r13] + add bpl,32 + mov edx,DWORD[rcx*4+rdi] + xor r12d,r8d + mov DWORD[rcx*4+rdi],ebx + or r12d,r10d + add r9d,DWORD[36+r15] + add bl,dl + mov eax,DWORD[rbp*4+rdi] + add r9d,3951481745 + movzx ebx,bl + xor r12d,r11d + mov DWORD[124+rsi],edx + add r9d,r12d + add cl,al + rol r9d,21 + mov r12d,-1 + pinsrw xmm1,WORD[rbx*4+rdi],7 + + add r9d,r10d + mov rsi,rbp + xor rbp,rbp + mov bpl,sil + mov rsi,rcx + xor rcx,rcx + mov cl,sil + lea rsi,[rbp*4+rdi] + psllq xmm1,8 + pxor xmm5,xmm0 + pxor xmm5,xmm1 + add r8d,DWORD[rsp] + add r9d,DWORD[4+rsp] + add r10d,DWORD[8+rsp] + add r11d,DWORD[12+rsp] + + movdqu XMMWORD[r13*1+r14],xmm2 + movdqu XMMWORD[16+r13*1+r14],xmm3 + movdqu XMMWORD[32+r13*1+r14],xmm4 + movdqu XMMWORD[48+r13*1+r14],xmm5 + lea r15,[64+r15] + lea r13,[64+r13] + cmp r15,QWORD[16+rsp] + jb NEAR $L$oop + + mov r12,QWORD[24+rsp] + sub cl,al + mov DWORD[r12],r8d + mov DWORD[4+r12],r9d + mov DWORD[8+r12],r10d + mov DWORD[12+r12],r11d + sub bpl,1 + mov DWORD[((-8))+rdi],ebp + mov DWORD[((-4))+rdi],ecx + + mov r15,QWORD[40+rsp] + + mov r14,QWORD[48+rsp] + + mov r13,QWORD[56+rsp] + + mov r12,QWORD[64+rsp] + + mov rbp,QWORD[72+rsp] + + mov rbx,QWORD[80+rsp] + + lea rsp,[88+rsp] + +$L$epilogue: +$L$abort: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_rc4_md5_enc: +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + lea r10,[$L$body] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + lea r10,[$L$epilogue] + cmp rbx,r10 + jae NEAR $L$in_prologue + + mov r15,QWORD[40+rax] + mov r14,QWORD[48+rax] + mov r13,QWORD[56+rax] + mov r12,QWORD[64+rax] + mov rbp,QWORD[72+rax] + mov rbx,QWORD[80+rax] + lea rax,[88+rax] + + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_rc4_md5_enc wrt ..imagebase + DD $L$SEH_end_rc4_md5_enc wrt ..imagebase + DD $L$SEH_info_rc4_md5_enc wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_rc4_md5_enc: +DB 9,0,0,0 + DD se_handler wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/rc4/rc4-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/rc4/rc4-x86_64.asm new file mode 100644 index 0000000..edbcc06 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/rc4/rc4-x86_64.asm @@ -0,0 +1,782 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +EXTERN OPENSSL_ia32cap_P + +global RC4 + +ALIGN 16 +RC4: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_RC4: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + + or rsi,rsi + jne NEAR $L$entry + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$entry: + push rbx + + push r12 + + push r13 + +$L$prologue: + mov r11,rsi + mov r12,rdx + mov r13,rcx + xor r10,r10 + xor rcx,rcx + + lea rdi,[8+rdi] + mov r10b,BYTE[((-8))+rdi] + mov cl,BYTE[((-4))+rdi] + cmp DWORD[256+rdi],-1 + je NEAR $L$RC4_CHAR + mov r8d,DWORD[OPENSSL_ia32cap_P] + xor rbx,rbx + inc r10b + sub rbx,r10 + sub r13,r12 + mov eax,DWORD[r10*4+rdi] + test r11,-16 + jz NEAR $L$loop1 + bt r8d,30 + jc NEAR $L$intel + and rbx,7 + lea rsi,[1+r10] + jz NEAR $L$oop8 + sub r11,rbx +$L$oop8_warmup: + add cl,al + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + mov DWORD[r10*4+rdi],edx + add al,dl + inc r10b + mov edx,DWORD[rax*4+rdi] + mov eax,DWORD[r10*4+rdi] + xor dl,BYTE[r12] + mov BYTE[r13*1+r12],dl + lea r12,[1+r12] + dec rbx + jnz NEAR $L$oop8_warmup + + lea rsi,[1+r10] + jmp NEAR $L$oop8 +ALIGN 16 +$L$oop8: + add cl,al + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + mov ebx,DWORD[rsi*4+rdi] + ror r8,8 + mov DWORD[r10*4+rdi],edx + add dl,al + mov r8b,BYTE[rdx*4+rdi] + add cl,bl + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],ebx + mov eax,DWORD[4+rsi*4+rdi] + ror r8,8 + mov DWORD[4+r10*4+rdi],edx + add dl,bl + mov r8b,BYTE[rdx*4+rdi] + add cl,al + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + mov ebx,DWORD[8+rsi*4+rdi] + ror r8,8 + mov DWORD[8+r10*4+rdi],edx + add dl,al + mov r8b,BYTE[rdx*4+rdi] + add cl,bl + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],ebx + mov eax,DWORD[12+rsi*4+rdi] + ror r8,8 + mov DWORD[12+r10*4+rdi],edx + add dl,bl + mov r8b,BYTE[rdx*4+rdi] + add cl,al + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + mov ebx,DWORD[16+rsi*4+rdi] + ror r8,8 + mov DWORD[16+r10*4+rdi],edx + add dl,al + mov r8b,BYTE[rdx*4+rdi] + add cl,bl + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],ebx + mov eax,DWORD[20+rsi*4+rdi] + ror r8,8 + mov DWORD[20+r10*4+rdi],edx + add dl,bl + mov r8b,BYTE[rdx*4+rdi] + add cl,al + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + mov ebx,DWORD[24+rsi*4+rdi] + ror r8,8 + mov DWORD[24+r10*4+rdi],edx + add dl,al + mov r8b,BYTE[rdx*4+rdi] + add sil,8 + add cl,bl + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],ebx + mov eax,DWORD[((-4))+rsi*4+rdi] + ror r8,8 + mov DWORD[28+r10*4+rdi],edx + add dl,bl + mov r8b,BYTE[rdx*4+rdi] + add r10b,8 + ror r8,8 + sub r11,8 + + xor r8,QWORD[r12] + mov QWORD[r13*1+r12],r8 + lea r12,[8+r12] + + test r11,-8 + jnz NEAR $L$oop8 + cmp r11,0 + jne NEAR $L$loop1 + jmp NEAR $L$exit + +ALIGN 16 +$L$intel: + test r11,-32 + jz NEAR $L$loop1 + and rbx,15 + jz NEAR $L$oop16_is_hot + sub r11,rbx +$L$oop16_warmup: + add cl,al + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + mov DWORD[r10*4+rdi],edx + add al,dl + inc r10b + mov edx,DWORD[rax*4+rdi] + mov eax,DWORD[r10*4+rdi] + xor dl,BYTE[r12] + mov BYTE[r13*1+r12],dl + lea r12,[1+r12] + dec rbx + jnz NEAR $L$oop16_warmup + + mov rbx,rcx + xor rcx,rcx + mov cl,bl + +$L$oop16_is_hot: + lea rsi,[r10*4+rdi] + add cl,al + mov edx,DWORD[rcx*4+rdi] + pxor xmm0,xmm0 + mov DWORD[rcx*4+rdi],eax + add al,dl + mov ebx,DWORD[4+rsi] + movzx eax,al + mov DWORD[rsi],edx + add cl,bl + pinsrw xmm0,WORD[rax*4+rdi],0 + jmp NEAR $L$oop16_enter +ALIGN 16 +$L$oop16: + add cl,al + mov edx,DWORD[rcx*4+rdi] + pxor xmm2,xmm0 + psllq xmm1,8 + pxor xmm0,xmm0 + mov DWORD[rcx*4+rdi],eax + add al,dl + mov ebx,DWORD[4+rsi] + movzx eax,al + mov DWORD[rsi],edx + pxor xmm2,xmm1 + add cl,bl + pinsrw xmm0,WORD[rax*4+rdi],0 + movdqu XMMWORD[r13*1+r12],xmm2 + lea r12,[16+r12] +$L$oop16_enter: + mov edx,DWORD[rcx*4+rdi] + pxor xmm1,xmm1 + mov DWORD[rcx*4+rdi],ebx + add bl,dl + mov eax,DWORD[8+rsi] + movzx ebx,bl + mov DWORD[4+rsi],edx + add cl,al + pinsrw xmm1,WORD[rbx*4+rdi],0 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + add al,dl + mov ebx,DWORD[12+rsi] + movzx eax,al + mov DWORD[8+rsi],edx + add cl,bl + pinsrw xmm0,WORD[rax*4+rdi],1 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],ebx + add bl,dl + mov eax,DWORD[16+rsi] + movzx ebx,bl + mov DWORD[12+rsi],edx + add cl,al + pinsrw xmm1,WORD[rbx*4+rdi],1 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + add al,dl + mov ebx,DWORD[20+rsi] + movzx eax,al + mov DWORD[16+rsi],edx + add cl,bl + pinsrw xmm0,WORD[rax*4+rdi],2 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],ebx + add bl,dl + mov eax,DWORD[24+rsi] + movzx ebx,bl + mov DWORD[20+rsi],edx + add cl,al + pinsrw xmm1,WORD[rbx*4+rdi],2 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + add al,dl + mov ebx,DWORD[28+rsi] + movzx eax,al + mov DWORD[24+rsi],edx + add cl,bl + pinsrw xmm0,WORD[rax*4+rdi],3 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],ebx + add bl,dl + mov eax,DWORD[32+rsi] + movzx ebx,bl + mov DWORD[28+rsi],edx + add cl,al + pinsrw xmm1,WORD[rbx*4+rdi],3 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + add al,dl + mov ebx,DWORD[36+rsi] + movzx eax,al + mov DWORD[32+rsi],edx + add cl,bl + pinsrw xmm0,WORD[rax*4+rdi],4 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],ebx + add bl,dl + mov eax,DWORD[40+rsi] + movzx ebx,bl + mov DWORD[36+rsi],edx + add cl,al + pinsrw xmm1,WORD[rbx*4+rdi],4 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + add al,dl + mov ebx,DWORD[44+rsi] + movzx eax,al + mov DWORD[40+rsi],edx + add cl,bl + pinsrw xmm0,WORD[rax*4+rdi],5 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],ebx + add bl,dl + mov eax,DWORD[48+rsi] + movzx ebx,bl + mov DWORD[44+rsi],edx + add cl,al + pinsrw xmm1,WORD[rbx*4+rdi],5 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + add al,dl + mov ebx,DWORD[52+rsi] + movzx eax,al + mov DWORD[48+rsi],edx + add cl,bl + pinsrw xmm0,WORD[rax*4+rdi],6 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],ebx + add bl,dl + mov eax,DWORD[56+rsi] + movzx ebx,bl + mov DWORD[52+rsi],edx + add cl,al + pinsrw xmm1,WORD[rbx*4+rdi],6 + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + add al,dl + mov ebx,DWORD[60+rsi] + movzx eax,al + mov DWORD[56+rsi],edx + add cl,bl + pinsrw xmm0,WORD[rax*4+rdi],7 + add r10b,16 + movdqu xmm2,XMMWORD[r12] + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],ebx + add bl,dl + movzx ebx,bl + mov DWORD[60+rsi],edx + lea rsi,[r10*4+rdi] + pinsrw xmm1,WORD[rbx*4+rdi],7 + mov eax,DWORD[rsi] + mov rbx,rcx + xor rcx,rcx + sub r11,16 + mov cl,bl + test r11,-16 + jnz NEAR $L$oop16 + + psllq xmm1,8 + pxor xmm2,xmm0 + pxor xmm2,xmm1 + movdqu XMMWORD[r13*1+r12],xmm2 + lea r12,[16+r12] + + cmp r11,0 + jne NEAR $L$loop1 + jmp NEAR $L$exit + +ALIGN 16 +$L$loop1: + add cl,al + mov edx,DWORD[rcx*4+rdi] + mov DWORD[rcx*4+rdi],eax + mov DWORD[r10*4+rdi],edx + add al,dl + inc r10b + mov edx,DWORD[rax*4+rdi] + mov eax,DWORD[r10*4+rdi] + xor dl,BYTE[r12] + mov BYTE[r13*1+r12],dl + lea r12,[1+r12] + dec r11 + jnz NEAR $L$loop1 + jmp NEAR $L$exit + +ALIGN 16 +$L$RC4_CHAR: + add r10b,1 + movzx eax,BYTE[r10*1+rdi] + test r11,-8 + jz NEAR $L$cloop1 + jmp NEAR $L$cloop8 +ALIGN 16 +$L$cloop8: + mov r8d,DWORD[r12] + mov r9d,DWORD[4+r12] + add cl,al + lea rsi,[1+r10] + movzx edx,BYTE[rcx*1+rdi] + movzx esi,sil + movzx ebx,BYTE[rsi*1+rdi] + mov BYTE[rcx*1+rdi],al + cmp rcx,rsi + mov BYTE[r10*1+rdi],dl + jne NEAR $L$cmov0 + mov rbx,rax +$L$cmov0: + add dl,al + xor r8b,BYTE[rdx*1+rdi] + ror r8d,8 + add cl,bl + lea r10,[1+rsi] + movzx edx,BYTE[rcx*1+rdi] + movzx r10d,r10b + movzx eax,BYTE[r10*1+rdi] + mov BYTE[rcx*1+rdi],bl + cmp rcx,r10 + mov BYTE[rsi*1+rdi],dl + jne NEAR $L$cmov1 + mov rax,rbx +$L$cmov1: + add dl,bl + xor r8b,BYTE[rdx*1+rdi] + ror r8d,8 + add cl,al + lea rsi,[1+r10] + movzx edx,BYTE[rcx*1+rdi] + movzx esi,sil + movzx ebx,BYTE[rsi*1+rdi] + mov BYTE[rcx*1+rdi],al + cmp rcx,rsi + mov BYTE[r10*1+rdi],dl + jne NEAR $L$cmov2 + mov rbx,rax +$L$cmov2: + add dl,al + xor r8b,BYTE[rdx*1+rdi] + ror r8d,8 + add cl,bl + lea r10,[1+rsi] + movzx edx,BYTE[rcx*1+rdi] + movzx r10d,r10b + movzx eax,BYTE[r10*1+rdi] + mov BYTE[rcx*1+rdi],bl + cmp rcx,r10 + mov BYTE[rsi*1+rdi],dl + jne NEAR $L$cmov3 + mov rax,rbx +$L$cmov3: + add dl,bl + xor r8b,BYTE[rdx*1+rdi] + ror r8d,8 + add cl,al + lea rsi,[1+r10] + movzx edx,BYTE[rcx*1+rdi] + movzx esi,sil + movzx ebx,BYTE[rsi*1+rdi] + mov BYTE[rcx*1+rdi],al + cmp rcx,rsi + mov BYTE[r10*1+rdi],dl + jne NEAR $L$cmov4 + mov rbx,rax +$L$cmov4: + add dl,al + xor r9b,BYTE[rdx*1+rdi] + ror r9d,8 + add cl,bl + lea r10,[1+rsi] + movzx edx,BYTE[rcx*1+rdi] + movzx r10d,r10b + movzx eax,BYTE[r10*1+rdi] + mov BYTE[rcx*1+rdi],bl + cmp rcx,r10 + mov BYTE[rsi*1+rdi],dl + jne NEAR $L$cmov5 + mov rax,rbx +$L$cmov5: + add dl,bl + xor r9b,BYTE[rdx*1+rdi] + ror r9d,8 + add cl,al + lea rsi,[1+r10] + movzx edx,BYTE[rcx*1+rdi] + movzx esi,sil + movzx ebx,BYTE[rsi*1+rdi] + mov BYTE[rcx*1+rdi],al + cmp rcx,rsi + mov BYTE[r10*1+rdi],dl + jne NEAR $L$cmov6 + mov rbx,rax +$L$cmov6: + add dl,al + xor r9b,BYTE[rdx*1+rdi] + ror r9d,8 + add cl,bl + lea r10,[1+rsi] + movzx edx,BYTE[rcx*1+rdi] + movzx r10d,r10b + movzx eax,BYTE[r10*1+rdi] + mov BYTE[rcx*1+rdi],bl + cmp rcx,r10 + mov BYTE[rsi*1+rdi],dl + jne NEAR $L$cmov7 + mov rax,rbx +$L$cmov7: + add dl,bl + xor r9b,BYTE[rdx*1+rdi] + ror r9d,8 + lea r11,[((-8))+r11] + mov DWORD[r13],r8d + lea r12,[8+r12] + mov DWORD[4+r13],r9d + lea r13,[8+r13] + + test r11,-8 + jnz NEAR $L$cloop8 + cmp r11,0 + jne NEAR $L$cloop1 + jmp NEAR $L$exit +ALIGN 16 +$L$cloop1: + add cl,al + movzx ecx,cl + movzx edx,BYTE[rcx*1+rdi] + mov BYTE[rcx*1+rdi],al + mov BYTE[r10*1+rdi],dl + add dl,al + add r10b,1 + movzx edx,dl + movzx r10d,r10b + movzx edx,BYTE[rdx*1+rdi] + movzx eax,BYTE[r10*1+rdi] + xor dl,BYTE[r12] + lea r12,[1+r12] + mov BYTE[r13],dl + lea r13,[1+r13] + sub r11,1 + jnz NEAR $L$cloop1 + jmp NEAR $L$exit + +ALIGN 16 +$L$exit: + sub r10b,1 + mov DWORD[((-8))+rdi],r10d + mov DWORD[((-4))+rdi],ecx + + mov r13,QWORD[rsp] + + mov r12,QWORD[8+rsp] + + mov rbx,QWORD[16+rsp] + + add rsp,24 + +$L$epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_RC4: +global RC4_set_key + +ALIGN 16 +RC4_set_key: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_RC4_set_key: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + lea rdi,[8+rdi] + lea rdx,[rsi*1+rdx] + neg rsi + mov rcx,rsi + xor eax,eax + xor r9,r9 + xor r10,r10 + xor r11,r11 + + mov r8d,DWORD[OPENSSL_ia32cap_P] + bt r8d,20 + jc NEAR $L$c1stloop + jmp NEAR $L$w1stloop + +ALIGN 16 +$L$w1stloop: + mov DWORD[rax*4+rdi],eax + add al,1 + jnc NEAR $L$w1stloop + + xor r9,r9 + xor r8,r8 +ALIGN 16 +$L$w2ndloop: + mov r10d,DWORD[r9*4+rdi] + add r8b,BYTE[rsi*1+rdx] + add r8b,r10b + add rsi,1 + mov r11d,DWORD[r8*4+rdi] + cmovz rsi,rcx + mov DWORD[r8*4+rdi],r10d + mov DWORD[r9*4+rdi],r11d + add r9b,1 + jnc NEAR $L$w2ndloop + jmp NEAR $L$exit_key + +ALIGN 16 +$L$c1stloop: + mov BYTE[rax*1+rdi],al + add al,1 + jnc NEAR $L$c1stloop + + xor r9,r9 + xor r8,r8 +ALIGN 16 +$L$c2ndloop: + mov r10b,BYTE[r9*1+rdi] + add r8b,BYTE[rsi*1+rdx] + add r8b,r10b + add rsi,1 + mov r11b,BYTE[r8*1+rdi] + jnz NEAR $L$cnowrap + mov rsi,rcx +$L$cnowrap: + mov BYTE[r8*1+rdi],r10b + mov BYTE[r9*1+rdi],r11b + add r9b,1 + jnc NEAR $L$c2ndloop + mov DWORD[256+rdi],-1 + +ALIGN 16 +$L$exit_key: + xor eax,eax + mov DWORD[((-8))+rdi],eax + mov DWORD[((-4))+rdi],eax + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_RC4_set_key: + +global RC4_options + +ALIGN 16 +RC4_options: + + lea rax,[$L$opts] + mov edx,DWORD[OPENSSL_ia32cap_P] + bt edx,20 + jc NEAR $L$8xchar + bt edx,30 + jnc NEAR $L$done + add rax,25 + DB 0F3h,0C3h ;repret +$L$8xchar: + add rax,12 +$L$done: + DB 0F3h,0C3h ;repret + +ALIGN 64 +$L$opts: +DB 114,99,52,40,56,120,44,105,110,116,41,0 +DB 114,99,52,40,56,120,44,99,104,97,114,41,0 +DB 114,99,52,40,49,54,120,44,105,110,116,41,0 +DB 82,67,52,32,102,111,114,32,120,56,54,95,54,52,44,32 +DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 +DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 +DB 62,0 +ALIGN 64 + +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +stream_se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + lea r10,[$L$prologue] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + lea r10,[$L$epilogue] + cmp rbx,r10 + jae NEAR $L$in_prologue + + lea rax,[24+rax] + + mov rbx,QWORD[((-8))+rax] + mov r12,QWORD[((-16))+rax] + mov r13,QWORD[((-24))+rax] + mov QWORD[144+r8],rbx + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + jmp NEAR $L$common_seh_exit + + + +ALIGN 16 +key_se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[152+r8] + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + +$L$common_seh_exit: + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_RC4 wrt ..imagebase + DD $L$SEH_end_RC4 wrt ..imagebase + DD $L$SEH_info_RC4 wrt ..imagebase + + DD $L$SEH_begin_RC4_set_key wrt ..imagebase + DD $L$SEH_end_RC4_set_key wrt ..imagebase + DD $L$SEH_info_RC4_set_key wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_RC4: +DB 9,0,0,0 + DD stream_se_handler wrt ..imagebase +$L$SEH_info_RC4_set_key: +DB 9,0,0,0 + DD key_se_handler wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/sha/keccak1600-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/sha/keccak1600-x86_64.asm new file mode 100644 index 0000000..fdab35d --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/sha/keccak1600-x86_64.asm @@ -0,0 +1,527 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + + +ALIGN 32 +__KeccakF1600: + + mov rax,QWORD[60+rdi] + mov rbx,QWORD[68+rdi] + mov rcx,QWORD[76+rdi] + mov rdx,QWORD[84+rdi] + mov rbp,QWORD[92+rdi] + jmp NEAR $L$oop + +ALIGN 32 +$L$oop: + mov r8,QWORD[((-100))+rdi] + mov r9,QWORD[((-52))+rdi] + mov r10,QWORD[((-4))+rdi] + mov r11,QWORD[44+rdi] + + xor rcx,QWORD[((-84))+rdi] + xor rdx,QWORD[((-76))+rdi] + xor rax,r8 + xor rbx,QWORD[((-92))+rdi] + xor rcx,QWORD[((-44))+rdi] + xor rax,QWORD[((-60))+rdi] + mov r12,rbp + xor rbp,QWORD[((-68))+rdi] + + xor rcx,r10 + xor rax,QWORD[((-20))+rdi] + xor rdx,QWORD[((-36))+rdi] + xor rbx,r9 + xor rbp,QWORD[((-28))+rdi] + + xor rcx,QWORD[36+rdi] + xor rax,QWORD[20+rdi] + xor rdx,QWORD[4+rdi] + xor rbx,QWORD[((-12))+rdi] + xor rbp,QWORD[12+rdi] + + mov r13,rcx + rol rcx,1 + xor rcx,rax + xor rdx,r11 + + rol rax,1 + xor rax,rdx + xor rbx,QWORD[28+rdi] + + rol rdx,1 + xor rdx,rbx + xor rbp,QWORD[52+rdi] + + rol rbx,1 + xor rbx,rbp + + rol rbp,1 + xor rbp,r13 + xor r9,rcx + xor r10,rdx + rol r9,44 + xor r11,rbp + xor r12,rax + rol r10,43 + xor r8,rbx + mov r13,r9 + rol r11,21 + or r9,r10 + xor r9,r8 + rol r12,14 + + xor r9,QWORD[r15] + lea r15,[8+r15] + + mov r14,r12 + and r12,r11 + mov QWORD[((-100))+rsi],r9 + xor r12,r10 + not r10 + mov QWORD[((-84))+rsi],r12 + + or r10,r11 + mov r12,QWORD[76+rdi] + xor r10,r13 + mov QWORD[((-92))+rsi],r10 + + and r13,r8 + mov r9,QWORD[((-28))+rdi] + xor r13,r14 + mov r10,QWORD[((-20))+rdi] + mov QWORD[((-68))+rsi],r13 + + or r14,r8 + mov r8,QWORD[((-76))+rdi] + xor r14,r11 + mov r11,QWORD[28+rdi] + mov QWORD[((-76))+rsi],r14 + + + xor r8,rbp + xor r12,rdx + rol r8,28 + xor r11,rcx + xor r9,rax + rol r12,61 + rol r11,45 + xor r10,rbx + rol r9,20 + mov r13,r8 + or r8,r12 + rol r10,3 + + xor r8,r11 + mov QWORD[((-36))+rsi],r8 + + mov r14,r9 + and r9,r13 + mov r8,QWORD[((-92))+rdi] + xor r9,r12 + not r12 + mov QWORD[((-28))+rsi],r9 + + or r12,r11 + mov r9,QWORD[((-44))+rdi] + xor r12,r10 + mov QWORD[((-44))+rsi],r12 + + and r11,r10 + mov r12,QWORD[60+rdi] + xor r11,r14 + mov QWORD[((-52))+rsi],r11 + + or r14,r10 + mov r10,QWORD[4+rdi] + xor r14,r13 + mov r11,QWORD[52+rdi] + mov QWORD[((-60))+rsi],r14 + + + xor r10,rbp + xor r11,rax + rol r10,25 + xor r9,rdx + rol r11,8 + xor r12,rbx + rol r9,6 + xor r8,rcx + rol r12,18 + mov r13,r10 + and r10,r11 + rol r8,1 + + not r11 + xor r10,r9 + mov QWORD[((-12))+rsi],r10 + + mov r14,r12 + and r12,r11 + mov r10,QWORD[((-12))+rdi] + xor r12,r13 + mov QWORD[((-4))+rsi],r12 + + or r13,r9 + mov r12,QWORD[84+rdi] + xor r13,r8 + mov QWORD[((-20))+rsi],r13 + + and r9,r8 + xor r9,r14 + mov QWORD[12+rsi],r9 + + or r14,r8 + mov r9,QWORD[((-60))+rdi] + xor r14,r11 + mov r11,QWORD[36+rdi] + mov QWORD[4+rsi],r14 + + + mov r8,QWORD[((-68))+rdi] + + xor r10,rcx + xor r11,rdx + rol r10,10 + xor r9,rbx + rol r11,15 + xor r12,rbp + rol r9,36 + xor r8,rax + rol r12,56 + mov r13,r10 + or r10,r11 + rol r8,27 + + not r11 + xor r10,r9 + mov QWORD[28+rsi],r10 + + mov r14,r12 + or r12,r11 + xor r12,r13 + mov QWORD[36+rsi],r12 + + and r13,r9 + xor r13,r8 + mov QWORD[20+rsi],r13 + + or r9,r8 + xor r9,r14 + mov QWORD[52+rsi],r9 + + and r8,r14 + xor r8,r11 + mov QWORD[44+rsi],r8 + + + xor rdx,QWORD[((-84))+rdi] + xor rbp,QWORD[((-36))+rdi] + rol rdx,62 + xor rcx,QWORD[68+rdi] + rol rbp,55 + xor rax,QWORD[12+rdi] + rol rcx,2 + xor rbx,QWORD[20+rdi] + xchg rdi,rsi + rol rax,39 + rol rbx,41 + mov r13,rdx + and rdx,rbp + not rbp + xor rdx,rcx + mov QWORD[92+rdi],rdx + + mov r14,rax + and rax,rbp + xor rax,r13 + mov QWORD[60+rdi],rax + + or r13,rcx + xor r13,rbx + mov QWORD[84+rdi],r13 + + and rcx,rbx + xor rcx,r14 + mov QWORD[76+rdi],rcx + + or rbx,r14 + xor rbx,rbp + mov QWORD[68+rdi],rbx + + mov rbp,rdx + mov rdx,r13 + + test r15,255 + jnz NEAR $L$oop + + lea r15,[((-192))+r15] + DB 0F3h,0C3h ;repret + + + + +ALIGN 32 +KeccakF1600: + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + + lea rdi,[100+rdi] + sub rsp,200 + + + not QWORD[((-92))+rdi] + not QWORD[((-84))+rdi] + not QWORD[((-36))+rdi] + not QWORD[((-4))+rdi] + not QWORD[36+rdi] + not QWORD[60+rdi] + + lea r15,[iotas] + lea rsi,[100+rsp] + + call __KeccakF1600 + + not QWORD[((-92))+rdi] + not QWORD[((-84))+rdi] + not QWORD[((-36))+rdi] + not QWORD[((-4))+rdi] + not QWORD[36+rdi] + not QWORD[60+rdi] + lea rdi,[((-100))+rdi] + + add rsp,200 + + + pop r15 + + pop r14 + + pop r13 + + pop r12 + + pop rbp + + pop rbx + + DB 0F3h,0C3h ;repret + + +global SHA3_absorb + +ALIGN 32 +SHA3_absorb: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_SHA3_absorb: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + + lea rdi,[100+rdi] + sub rsp,232 + + + mov r9,rsi + lea rsi,[100+rsp] + + not QWORD[((-92))+rdi] + not QWORD[((-84))+rdi] + not QWORD[((-36))+rdi] + not QWORD[((-4))+rdi] + not QWORD[36+rdi] + not QWORD[60+rdi] + lea r15,[iotas] + + mov QWORD[((216-100))+rsi],rcx + +$L$oop_absorb: + cmp rdx,rcx + jc NEAR $L$done_absorb + + shr rcx,3 + lea r8,[((-100))+rdi] + +$L$block_absorb: + mov rax,QWORD[r9] + lea r9,[8+r9] + xor rax,QWORD[r8] + lea r8,[8+r8] + sub rdx,8 + mov QWORD[((-8))+r8],rax + sub rcx,1 + jnz NEAR $L$block_absorb + + mov QWORD[((200-100))+rsi],r9 + mov QWORD[((208-100))+rsi],rdx + call __KeccakF1600 + mov r9,QWORD[((200-100))+rsi] + mov rdx,QWORD[((208-100))+rsi] + mov rcx,QWORD[((216-100))+rsi] + jmp NEAR $L$oop_absorb + +ALIGN 32 +$L$done_absorb: + mov rax,rdx + + not QWORD[((-92))+rdi] + not QWORD[((-84))+rdi] + not QWORD[((-36))+rdi] + not QWORD[((-4))+rdi] + not QWORD[36+rdi] + not QWORD[60+rdi] + + add rsp,232 + + + pop r15 + + pop r14 + + pop r13 + + pop r12 + + pop rbp + + pop rbx + + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_SHA3_absorb: +global SHA3_squeeze + +ALIGN 32 +SHA3_squeeze: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_SHA3_squeeze: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + + push r12 + + push r13 + + push r14 + + + shr rcx,3 + mov r8,rdi + mov r12,rsi + mov r13,rdx + mov r14,rcx + jmp NEAR $L$oop_squeeze + +ALIGN 32 +$L$oop_squeeze: + cmp r13,8 + jb NEAR $L$tail_squeeze + + mov rax,QWORD[r8] + lea r8,[8+r8] + mov QWORD[r12],rax + lea r12,[8+r12] + sub r13,8 + jz NEAR $L$done_squeeze + + sub rcx,1 + jnz NEAR $L$oop_squeeze + + call KeccakF1600 + mov r8,rdi + mov rcx,r14 + jmp NEAR $L$oop_squeeze + +$L$tail_squeeze: + mov rsi,r8 + mov rdi,r12 + mov rcx,r13 +DB 0xf3,0xa4 + +$L$done_squeeze: + pop r14 + + pop r13 + + pop r12 + + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_SHA3_squeeze: +ALIGN 256 + DQ 0,0,0,0,0,0,0,0 + +iotas: + DQ 0x0000000000000001 + DQ 0x0000000000008082 + DQ 0x800000000000808a + DQ 0x8000000080008000 + DQ 0x000000000000808b + DQ 0x0000000080000001 + DQ 0x8000000080008081 + DQ 0x8000000000008009 + DQ 0x000000000000008a + DQ 0x0000000000000088 + DQ 0x0000000080008009 + DQ 0x000000008000000a + DQ 0x000000008000808b + DQ 0x800000000000008b + DQ 0x8000000000008089 + DQ 0x8000000000008003 + DQ 0x8000000000008002 + DQ 0x8000000000000080 + DQ 0x000000000000800a + DQ 0x800000008000000a + DQ 0x8000000080008081 + DQ 0x8000000000008080 + DQ 0x0000000080000001 + DQ 0x8000000080008008 + +DB 75,101,99,99,97,107,45,49,54,48,48,32,97,98,115,111 +DB 114,98,32,97,110,100,32,115,113,117,101,101,122,101,32,102 +DB 111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84 +DB 79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64 +DB 111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha1-mb-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha1-mb-x86_64.asm new file mode 100644 index 0000000..725bf4e --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha1-mb-x86_64.asm @@ -0,0 +1,7574 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +EXTERN OPENSSL_ia32cap_P + +global sha1_multi_block + +ALIGN 32 +sha1_multi_block: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha1_multi_block: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + mov rcx,QWORD[((OPENSSL_ia32cap_P+4))] + bt rcx,61 + jc NEAR _shaext_shortcut + test ecx,268435456 + jnz NEAR _avx_shortcut + mov rax,rsp + + push rbx + + push rbp + + lea rsp,[((-168))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[(-120)+rax],xmm10 + movaps XMMWORD[(-104)+rax],xmm11 + movaps XMMWORD[(-88)+rax],xmm12 + movaps XMMWORD[(-72)+rax],xmm13 + movaps XMMWORD[(-56)+rax],xmm14 + movaps XMMWORD[(-40)+rax],xmm15 + sub rsp,288 + and rsp,-256 + mov QWORD[272+rsp],rax + +$L$body: + lea rbp,[K_XX_XX] + lea rbx,[256+rsp] + +$L$oop_grande: + mov DWORD[280+rsp],edx + xor edx,edx + mov r8,QWORD[rsi] + mov ecx,DWORD[8+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[rbx],ecx + cmovle r8,rbp + mov r9,QWORD[16+rsi] + mov ecx,DWORD[24+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[4+rbx],ecx + cmovle r9,rbp + mov r10,QWORD[32+rsi] + mov ecx,DWORD[40+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[8+rbx],ecx + cmovle r10,rbp + mov r11,QWORD[48+rsi] + mov ecx,DWORD[56+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[12+rbx],ecx + cmovle r11,rbp + test edx,edx + jz NEAR $L$done + + movdqu xmm10,XMMWORD[rdi] + lea rax,[128+rsp] + movdqu xmm11,XMMWORD[32+rdi] + movdqu xmm12,XMMWORD[64+rdi] + movdqu xmm13,XMMWORD[96+rdi] + movdqu xmm14,XMMWORD[128+rdi] + movdqa xmm5,XMMWORD[96+rbp] + movdqa xmm15,XMMWORD[((-32))+rbp] + jmp NEAR $L$oop + +ALIGN 32 +$L$oop: + movd xmm0,DWORD[r8] + lea r8,[64+r8] + movd xmm2,DWORD[r9] + lea r9,[64+r9] + movd xmm3,DWORD[r10] + lea r10,[64+r10] + movd xmm4,DWORD[r11] + lea r11,[64+r11] + punpckldq xmm0,xmm3 + movd xmm1,DWORD[((-60))+r8] + punpckldq xmm2,xmm4 + movd xmm9,DWORD[((-60))+r9] + punpckldq xmm0,xmm2 + movd xmm8,DWORD[((-60))+r10] +DB 102,15,56,0,197 + movd xmm7,DWORD[((-60))+r11] + punpckldq xmm1,xmm8 + movdqa xmm8,xmm10 + paddd xmm14,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm11 + movdqa xmm6,xmm11 + pslld xmm8,5 + pandn xmm7,xmm13 + pand xmm6,xmm12 + punpckldq xmm1,xmm9 + movdqa xmm9,xmm10 + + movdqa XMMWORD[(0-128)+rax],xmm0 + paddd xmm14,xmm0 + movd xmm2,DWORD[((-56))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm11 + + por xmm8,xmm9 + movd xmm9,DWORD[((-56))+r9] + pslld xmm7,30 + paddd xmm14,xmm6 + + psrld xmm11,2 + paddd xmm14,xmm8 +DB 102,15,56,0,205 + movd xmm8,DWORD[((-56))+r10] + por xmm11,xmm7 + movd xmm7,DWORD[((-56))+r11] + punpckldq xmm2,xmm8 + movdqa xmm8,xmm14 + paddd xmm13,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm10 + movdqa xmm6,xmm10 + pslld xmm8,5 + pandn xmm7,xmm12 + pand xmm6,xmm11 + punpckldq xmm2,xmm9 + movdqa xmm9,xmm14 + + movdqa XMMWORD[(16-128)+rax],xmm1 + paddd xmm13,xmm1 + movd xmm3,DWORD[((-52))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm10 + + por xmm8,xmm9 + movd xmm9,DWORD[((-52))+r9] + pslld xmm7,30 + paddd xmm13,xmm6 + + psrld xmm10,2 + paddd xmm13,xmm8 +DB 102,15,56,0,213 + movd xmm8,DWORD[((-52))+r10] + por xmm10,xmm7 + movd xmm7,DWORD[((-52))+r11] + punpckldq xmm3,xmm8 + movdqa xmm8,xmm13 + paddd xmm12,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm14 + movdqa xmm6,xmm14 + pslld xmm8,5 + pandn xmm7,xmm11 + pand xmm6,xmm10 + punpckldq xmm3,xmm9 + movdqa xmm9,xmm13 + + movdqa XMMWORD[(32-128)+rax],xmm2 + paddd xmm12,xmm2 + movd xmm4,DWORD[((-48))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm14 + + por xmm8,xmm9 + movd xmm9,DWORD[((-48))+r9] + pslld xmm7,30 + paddd xmm12,xmm6 + + psrld xmm14,2 + paddd xmm12,xmm8 +DB 102,15,56,0,221 + movd xmm8,DWORD[((-48))+r10] + por xmm14,xmm7 + movd xmm7,DWORD[((-48))+r11] + punpckldq xmm4,xmm8 + movdqa xmm8,xmm12 + paddd xmm11,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm13 + movdqa xmm6,xmm13 + pslld xmm8,5 + pandn xmm7,xmm10 + pand xmm6,xmm14 + punpckldq xmm4,xmm9 + movdqa xmm9,xmm12 + + movdqa XMMWORD[(48-128)+rax],xmm3 + paddd xmm11,xmm3 + movd xmm0,DWORD[((-44))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm13 + + por xmm8,xmm9 + movd xmm9,DWORD[((-44))+r9] + pslld xmm7,30 + paddd xmm11,xmm6 + + psrld xmm13,2 + paddd xmm11,xmm8 +DB 102,15,56,0,229 + movd xmm8,DWORD[((-44))+r10] + por xmm13,xmm7 + movd xmm7,DWORD[((-44))+r11] + punpckldq xmm0,xmm8 + movdqa xmm8,xmm11 + paddd xmm10,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm12 + movdqa xmm6,xmm12 + pslld xmm8,5 + pandn xmm7,xmm14 + pand xmm6,xmm13 + punpckldq xmm0,xmm9 + movdqa xmm9,xmm11 + + movdqa XMMWORD[(64-128)+rax],xmm4 + paddd xmm10,xmm4 + movd xmm1,DWORD[((-40))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm12 + + por xmm8,xmm9 + movd xmm9,DWORD[((-40))+r9] + pslld xmm7,30 + paddd xmm10,xmm6 + + psrld xmm12,2 + paddd xmm10,xmm8 +DB 102,15,56,0,197 + movd xmm8,DWORD[((-40))+r10] + por xmm12,xmm7 + movd xmm7,DWORD[((-40))+r11] + punpckldq xmm1,xmm8 + movdqa xmm8,xmm10 + paddd xmm14,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm11 + movdqa xmm6,xmm11 + pslld xmm8,5 + pandn xmm7,xmm13 + pand xmm6,xmm12 + punpckldq xmm1,xmm9 + movdqa xmm9,xmm10 + + movdqa XMMWORD[(80-128)+rax],xmm0 + paddd xmm14,xmm0 + movd xmm2,DWORD[((-36))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm11 + + por xmm8,xmm9 + movd xmm9,DWORD[((-36))+r9] + pslld xmm7,30 + paddd xmm14,xmm6 + + psrld xmm11,2 + paddd xmm14,xmm8 +DB 102,15,56,0,205 + movd xmm8,DWORD[((-36))+r10] + por xmm11,xmm7 + movd xmm7,DWORD[((-36))+r11] + punpckldq xmm2,xmm8 + movdqa xmm8,xmm14 + paddd xmm13,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm10 + movdqa xmm6,xmm10 + pslld xmm8,5 + pandn xmm7,xmm12 + pand xmm6,xmm11 + punpckldq xmm2,xmm9 + movdqa xmm9,xmm14 + + movdqa XMMWORD[(96-128)+rax],xmm1 + paddd xmm13,xmm1 + movd xmm3,DWORD[((-32))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm10 + + por xmm8,xmm9 + movd xmm9,DWORD[((-32))+r9] + pslld xmm7,30 + paddd xmm13,xmm6 + + psrld xmm10,2 + paddd xmm13,xmm8 +DB 102,15,56,0,213 + movd xmm8,DWORD[((-32))+r10] + por xmm10,xmm7 + movd xmm7,DWORD[((-32))+r11] + punpckldq xmm3,xmm8 + movdqa xmm8,xmm13 + paddd xmm12,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm14 + movdqa xmm6,xmm14 + pslld xmm8,5 + pandn xmm7,xmm11 + pand xmm6,xmm10 + punpckldq xmm3,xmm9 + movdqa xmm9,xmm13 + + movdqa XMMWORD[(112-128)+rax],xmm2 + paddd xmm12,xmm2 + movd xmm4,DWORD[((-28))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm14 + + por xmm8,xmm9 + movd xmm9,DWORD[((-28))+r9] + pslld xmm7,30 + paddd xmm12,xmm6 + + psrld xmm14,2 + paddd xmm12,xmm8 +DB 102,15,56,0,221 + movd xmm8,DWORD[((-28))+r10] + por xmm14,xmm7 + movd xmm7,DWORD[((-28))+r11] + punpckldq xmm4,xmm8 + movdqa xmm8,xmm12 + paddd xmm11,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm13 + movdqa xmm6,xmm13 + pslld xmm8,5 + pandn xmm7,xmm10 + pand xmm6,xmm14 + punpckldq xmm4,xmm9 + movdqa xmm9,xmm12 + + movdqa XMMWORD[(128-128)+rax],xmm3 + paddd xmm11,xmm3 + movd xmm0,DWORD[((-24))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm13 + + por xmm8,xmm9 + movd xmm9,DWORD[((-24))+r9] + pslld xmm7,30 + paddd xmm11,xmm6 + + psrld xmm13,2 + paddd xmm11,xmm8 +DB 102,15,56,0,229 + movd xmm8,DWORD[((-24))+r10] + por xmm13,xmm7 + movd xmm7,DWORD[((-24))+r11] + punpckldq xmm0,xmm8 + movdqa xmm8,xmm11 + paddd xmm10,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm12 + movdqa xmm6,xmm12 + pslld xmm8,5 + pandn xmm7,xmm14 + pand xmm6,xmm13 + punpckldq xmm0,xmm9 + movdqa xmm9,xmm11 + + movdqa XMMWORD[(144-128)+rax],xmm4 + paddd xmm10,xmm4 + movd xmm1,DWORD[((-20))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm12 + + por xmm8,xmm9 + movd xmm9,DWORD[((-20))+r9] + pslld xmm7,30 + paddd xmm10,xmm6 + + psrld xmm12,2 + paddd xmm10,xmm8 +DB 102,15,56,0,197 + movd xmm8,DWORD[((-20))+r10] + por xmm12,xmm7 + movd xmm7,DWORD[((-20))+r11] + punpckldq xmm1,xmm8 + movdqa xmm8,xmm10 + paddd xmm14,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm11 + movdqa xmm6,xmm11 + pslld xmm8,5 + pandn xmm7,xmm13 + pand xmm6,xmm12 + punpckldq xmm1,xmm9 + movdqa xmm9,xmm10 + + movdqa XMMWORD[(160-128)+rax],xmm0 + paddd xmm14,xmm0 + movd xmm2,DWORD[((-16))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm11 + + por xmm8,xmm9 + movd xmm9,DWORD[((-16))+r9] + pslld xmm7,30 + paddd xmm14,xmm6 + + psrld xmm11,2 + paddd xmm14,xmm8 +DB 102,15,56,0,205 + movd xmm8,DWORD[((-16))+r10] + por xmm11,xmm7 + movd xmm7,DWORD[((-16))+r11] + punpckldq xmm2,xmm8 + movdqa xmm8,xmm14 + paddd xmm13,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm10 + movdqa xmm6,xmm10 + pslld xmm8,5 + pandn xmm7,xmm12 + pand xmm6,xmm11 + punpckldq xmm2,xmm9 + movdqa xmm9,xmm14 + + movdqa XMMWORD[(176-128)+rax],xmm1 + paddd xmm13,xmm1 + movd xmm3,DWORD[((-12))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm10 + + por xmm8,xmm9 + movd xmm9,DWORD[((-12))+r9] + pslld xmm7,30 + paddd xmm13,xmm6 + + psrld xmm10,2 + paddd xmm13,xmm8 +DB 102,15,56,0,213 + movd xmm8,DWORD[((-12))+r10] + por xmm10,xmm7 + movd xmm7,DWORD[((-12))+r11] + punpckldq xmm3,xmm8 + movdqa xmm8,xmm13 + paddd xmm12,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm14 + movdqa xmm6,xmm14 + pslld xmm8,5 + pandn xmm7,xmm11 + pand xmm6,xmm10 + punpckldq xmm3,xmm9 + movdqa xmm9,xmm13 + + movdqa XMMWORD[(192-128)+rax],xmm2 + paddd xmm12,xmm2 + movd xmm4,DWORD[((-8))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm14 + + por xmm8,xmm9 + movd xmm9,DWORD[((-8))+r9] + pslld xmm7,30 + paddd xmm12,xmm6 + + psrld xmm14,2 + paddd xmm12,xmm8 +DB 102,15,56,0,221 + movd xmm8,DWORD[((-8))+r10] + por xmm14,xmm7 + movd xmm7,DWORD[((-8))+r11] + punpckldq xmm4,xmm8 + movdqa xmm8,xmm12 + paddd xmm11,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm13 + movdqa xmm6,xmm13 + pslld xmm8,5 + pandn xmm7,xmm10 + pand xmm6,xmm14 + punpckldq xmm4,xmm9 + movdqa xmm9,xmm12 + + movdqa XMMWORD[(208-128)+rax],xmm3 + paddd xmm11,xmm3 + movd xmm0,DWORD[((-4))+r8] + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm13 + + por xmm8,xmm9 + movd xmm9,DWORD[((-4))+r9] + pslld xmm7,30 + paddd xmm11,xmm6 + + psrld xmm13,2 + paddd xmm11,xmm8 +DB 102,15,56,0,229 + movd xmm8,DWORD[((-4))+r10] + por xmm13,xmm7 + movdqa xmm1,XMMWORD[((0-128))+rax] + movd xmm7,DWORD[((-4))+r11] + punpckldq xmm0,xmm8 + movdqa xmm8,xmm11 + paddd xmm10,xmm15 + punpckldq xmm9,xmm7 + movdqa xmm7,xmm12 + movdqa xmm6,xmm12 + pslld xmm8,5 + prefetcht0 [63+r8] + pandn xmm7,xmm14 + pand xmm6,xmm13 + punpckldq xmm0,xmm9 + movdqa xmm9,xmm11 + + movdqa XMMWORD[(224-128)+rax],xmm4 + paddd xmm10,xmm4 + psrld xmm9,27 + pxor xmm6,xmm7 + movdqa xmm7,xmm12 + prefetcht0 [63+r9] + + por xmm8,xmm9 + pslld xmm7,30 + paddd xmm10,xmm6 + prefetcht0 [63+r10] + + psrld xmm12,2 + paddd xmm10,xmm8 +DB 102,15,56,0,197 + prefetcht0 [63+r11] + por xmm12,xmm7 + movdqa xmm2,XMMWORD[((16-128))+rax] + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((32-128))+rax] + + movdqa xmm8,xmm10 + pxor xmm1,XMMWORD[((128-128))+rax] + paddd xmm14,xmm15 + movdqa xmm7,xmm11 + pslld xmm8,5 + pxor xmm1,xmm3 + movdqa xmm6,xmm11 + pandn xmm7,xmm13 + movdqa xmm5,xmm1 + pand xmm6,xmm12 + movdqa xmm9,xmm10 + psrld xmm5,31 + paddd xmm1,xmm1 + + movdqa XMMWORD[(240-128)+rax],xmm0 + paddd xmm14,xmm0 + psrld xmm9,27 + pxor xmm6,xmm7 + + movdqa xmm7,xmm11 + por xmm8,xmm9 + pslld xmm7,30 + paddd xmm14,xmm6 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((48-128))+rax] + + movdqa xmm8,xmm14 + pxor xmm2,XMMWORD[((144-128))+rax] + paddd xmm13,xmm15 + movdqa xmm7,xmm10 + pslld xmm8,5 + pxor xmm2,xmm4 + movdqa xmm6,xmm10 + pandn xmm7,xmm12 + movdqa xmm5,xmm2 + pand xmm6,xmm11 + movdqa xmm9,xmm14 + psrld xmm5,31 + paddd xmm2,xmm2 + + movdqa XMMWORD[(0-128)+rax],xmm1 + paddd xmm13,xmm1 + psrld xmm9,27 + pxor xmm6,xmm7 + + movdqa xmm7,xmm10 + por xmm8,xmm9 + pslld xmm7,30 + paddd xmm13,xmm6 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((64-128))+rax] + + movdqa xmm8,xmm13 + pxor xmm3,XMMWORD[((160-128))+rax] + paddd xmm12,xmm15 + movdqa xmm7,xmm14 + pslld xmm8,5 + pxor xmm3,xmm0 + movdqa xmm6,xmm14 + pandn xmm7,xmm11 + movdqa xmm5,xmm3 + pand xmm6,xmm10 + movdqa xmm9,xmm13 + psrld xmm5,31 + paddd xmm3,xmm3 + + movdqa XMMWORD[(16-128)+rax],xmm2 + paddd xmm12,xmm2 + psrld xmm9,27 + pxor xmm6,xmm7 + + movdqa xmm7,xmm14 + por xmm8,xmm9 + pslld xmm7,30 + paddd xmm12,xmm6 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((80-128))+rax] + + movdqa xmm8,xmm12 + pxor xmm4,XMMWORD[((176-128))+rax] + paddd xmm11,xmm15 + movdqa xmm7,xmm13 + pslld xmm8,5 + pxor xmm4,xmm1 + movdqa xmm6,xmm13 + pandn xmm7,xmm10 + movdqa xmm5,xmm4 + pand xmm6,xmm14 + movdqa xmm9,xmm12 + psrld xmm5,31 + paddd xmm4,xmm4 + + movdqa XMMWORD[(32-128)+rax],xmm3 + paddd xmm11,xmm3 + psrld xmm9,27 + pxor xmm6,xmm7 + + movdqa xmm7,xmm13 + por xmm8,xmm9 + pslld xmm7,30 + paddd xmm11,xmm6 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + pxor xmm0,xmm2 + movdqa xmm2,XMMWORD[((96-128))+rax] + + movdqa xmm8,xmm11 + pxor xmm0,XMMWORD[((192-128))+rax] + paddd xmm10,xmm15 + movdqa xmm7,xmm12 + pslld xmm8,5 + pxor xmm0,xmm2 + movdqa xmm6,xmm12 + pandn xmm7,xmm14 + movdqa xmm5,xmm0 + pand xmm6,xmm13 + movdqa xmm9,xmm11 + psrld xmm5,31 + paddd xmm0,xmm0 + + movdqa XMMWORD[(48-128)+rax],xmm4 + paddd xmm10,xmm4 + psrld xmm9,27 + pxor xmm6,xmm7 + + movdqa xmm7,xmm12 + por xmm8,xmm9 + pslld xmm7,30 + paddd xmm10,xmm6 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm0,xmm5 + por xmm12,xmm7 + movdqa xmm15,XMMWORD[rbp] + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((112-128))+rax] + + movdqa xmm8,xmm10 + movdqa xmm6,xmm13 + pxor xmm1,XMMWORD[((208-128))+rax] + paddd xmm14,xmm15 + pslld xmm8,5 + pxor xmm6,xmm11 + + movdqa xmm9,xmm10 + movdqa XMMWORD[(64-128)+rax],xmm0 + paddd xmm14,xmm0 + pxor xmm1,xmm3 + psrld xmm9,27 + pxor xmm6,xmm12 + movdqa xmm7,xmm11 + + pslld xmm7,30 + movdqa xmm5,xmm1 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm14,xmm6 + paddd xmm1,xmm1 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((128-128))+rax] + + movdqa xmm8,xmm14 + movdqa xmm6,xmm12 + pxor xmm2,XMMWORD[((224-128))+rax] + paddd xmm13,xmm15 + pslld xmm8,5 + pxor xmm6,xmm10 + + movdqa xmm9,xmm14 + movdqa XMMWORD[(80-128)+rax],xmm1 + paddd xmm13,xmm1 + pxor xmm2,xmm4 + psrld xmm9,27 + pxor xmm6,xmm11 + movdqa xmm7,xmm10 + + pslld xmm7,30 + movdqa xmm5,xmm2 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm13,xmm6 + paddd xmm2,xmm2 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((144-128))+rax] + + movdqa xmm8,xmm13 + movdqa xmm6,xmm11 + pxor xmm3,XMMWORD[((240-128))+rax] + paddd xmm12,xmm15 + pslld xmm8,5 + pxor xmm6,xmm14 + + movdqa xmm9,xmm13 + movdqa XMMWORD[(96-128)+rax],xmm2 + paddd xmm12,xmm2 + pxor xmm3,xmm0 + psrld xmm9,27 + pxor xmm6,xmm10 + movdqa xmm7,xmm14 + + pslld xmm7,30 + movdqa xmm5,xmm3 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm12,xmm6 + paddd xmm3,xmm3 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((160-128))+rax] + + movdqa xmm8,xmm12 + movdqa xmm6,xmm10 + pxor xmm4,XMMWORD[((0-128))+rax] + paddd xmm11,xmm15 + pslld xmm8,5 + pxor xmm6,xmm13 + + movdqa xmm9,xmm12 + movdqa XMMWORD[(112-128)+rax],xmm3 + paddd xmm11,xmm3 + pxor xmm4,xmm1 + psrld xmm9,27 + pxor xmm6,xmm14 + movdqa xmm7,xmm13 + + pslld xmm7,30 + movdqa xmm5,xmm4 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm11,xmm6 + paddd xmm4,xmm4 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + pxor xmm0,xmm2 + movdqa xmm2,XMMWORD[((176-128))+rax] + + movdqa xmm8,xmm11 + movdqa xmm6,xmm14 + pxor xmm0,XMMWORD[((16-128))+rax] + paddd xmm10,xmm15 + pslld xmm8,5 + pxor xmm6,xmm12 + + movdqa xmm9,xmm11 + movdqa XMMWORD[(128-128)+rax],xmm4 + paddd xmm10,xmm4 + pxor xmm0,xmm2 + psrld xmm9,27 + pxor xmm6,xmm13 + movdqa xmm7,xmm12 + + pslld xmm7,30 + movdqa xmm5,xmm0 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm10,xmm6 + paddd xmm0,xmm0 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm0,xmm5 + por xmm12,xmm7 + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((192-128))+rax] + + movdqa xmm8,xmm10 + movdqa xmm6,xmm13 + pxor xmm1,XMMWORD[((32-128))+rax] + paddd xmm14,xmm15 + pslld xmm8,5 + pxor xmm6,xmm11 + + movdqa xmm9,xmm10 + movdqa XMMWORD[(144-128)+rax],xmm0 + paddd xmm14,xmm0 + pxor xmm1,xmm3 + psrld xmm9,27 + pxor xmm6,xmm12 + movdqa xmm7,xmm11 + + pslld xmm7,30 + movdqa xmm5,xmm1 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm14,xmm6 + paddd xmm1,xmm1 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((208-128))+rax] + + movdqa xmm8,xmm14 + movdqa xmm6,xmm12 + pxor xmm2,XMMWORD[((48-128))+rax] + paddd xmm13,xmm15 + pslld xmm8,5 + pxor xmm6,xmm10 + + movdqa xmm9,xmm14 + movdqa XMMWORD[(160-128)+rax],xmm1 + paddd xmm13,xmm1 + pxor xmm2,xmm4 + psrld xmm9,27 + pxor xmm6,xmm11 + movdqa xmm7,xmm10 + + pslld xmm7,30 + movdqa xmm5,xmm2 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm13,xmm6 + paddd xmm2,xmm2 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((224-128))+rax] + + movdqa xmm8,xmm13 + movdqa xmm6,xmm11 + pxor xmm3,XMMWORD[((64-128))+rax] + paddd xmm12,xmm15 + pslld xmm8,5 + pxor xmm6,xmm14 + + movdqa xmm9,xmm13 + movdqa XMMWORD[(176-128)+rax],xmm2 + paddd xmm12,xmm2 + pxor xmm3,xmm0 + psrld xmm9,27 + pxor xmm6,xmm10 + movdqa xmm7,xmm14 + + pslld xmm7,30 + movdqa xmm5,xmm3 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm12,xmm6 + paddd xmm3,xmm3 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((240-128))+rax] + + movdqa xmm8,xmm12 + movdqa xmm6,xmm10 + pxor xmm4,XMMWORD[((80-128))+rax] + paddd xmm11,xmm15 + pslld xmm8,5 + pxor xmm6,xmm13 + + movdqa xmm9,xmm12 + movdqa XMMWORD[(192-128)+rax],xmm3 + paddd xmm11,xmm3 + pxor xmm4,xmm1 + psrld xmm9,27 + pxor xmm6,xmm14 + movdqa xmm7,xmm13 + + pslld xmm7,30 + movdqa xmm5,xmm4 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm11,xmm6 + paddd xmm4,xmm4 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + pxor xmm0,xmm2 + movdqa xmm2,XMMWORD[((0-128))+rax] + + movdqa xmm8,xmm11 + movdqa xmm6,xmm14 + pxor xmm0,XMMWORD[((96-128))+rax] + paddd xmm10,xmm15 + pslld xmm8,5 + pxor xmm6,xmm12 + + movdqa xmm9,xmm11 + movdqa XMMWORD[(208-128)+rax],xmm4 + paddd xmm10,xmm4 + pxor xmm0,xmm2 + psrld xmm9,27 + pxor xmm6,xmm13 + movdqa xmm7,xmm12 + + pslld xmm7,30 + movdqa xmm5,xmm0 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm10,xmm6 + paddd xmm0,xmm0 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm0,xmm5 + por xmm12,xmm7 + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((16-128))+rax] + + movdqa xmm8,xmm10 + movdqa xmm6,xmm13 + pxor xmm1,XMMWORD[((112-128))+rax] + paddd xmm14,xmm15 + pslld xmm8,5 + pxor xmm6,xmm11 + + movdqa xmm9,xmm10 + movdqa XMMWORD[(224-128)+rax],xmm0 + paddd xmm14,xmm0 + pxor xmm1,xmm3 + psrld xmm9,27 + pxor xmm6,xmm12 + movdqa xmm7,xmm11 + + pslld xmm7,30 + movdqa xmm5,xmm1 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm14,xmm6 + paddd xmm1,xmm1 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((32-128))+rax] + + movdqa xmm8,xmm14 + movdqa xmm6,xmm12 + pxor xmm2,XMMWORD[((128-128))+rax] + paddd xmm13,xmm15 + pslld xmm8,5 + pxor xmm6,xmm10 + + movdqa xmm9,xmm14 + movdqa XMMWORD[(240-128)+rax],xmm1 + paddd xmm13,xmm1 + pxor xmm2,xmm4 + psrld xmm9,27 + pxor xmm6,xmm11 + movdqa xmm7,xmm10 + + pslld xmm7,30 + movdqa xmm5,xmm2 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm13,xmm6 + paddd xmm2,xmm2 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((48-128))+rax] + + movdqa xmm8,xmm13 + movdqa xmm6,xmm11 + pxor xmm3,XMMWORD[((144-128))+rax] + paddd xmm12,xmm15 + pslld xmm8,5 + pxor xmm6,xmm14 + + movdqa xmm9,xmm13 + movdqa XMMWORD[(0-128)+rax],xmm2 + paddd xmm12,xmm2 + pxor xmm3,xmm0 + psrld xmm9,27 + pxor xmm6,xmm10 + movdqa xmm7,xmm14 + + pslld xmm7,30 + movdqa xmm5,xmm3 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm12,xmm6 + paddd xmm3,xmm3 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((64-128))+rax] + + movdqa xmm8,xmm12 + movdqa xmm6,xmm10 + pxor xmm4,XMMWORD[((160-128))+rax] + paddd xmm11,xmm15 + pslld xmm8,5 + pxor xmm6,xmm13 + + movdqa xmm9,xmm12 + movdqa XMMWORD[(16-128)+rax],xmm3 + paddd xmm11,xmm3 + pxor xmm4,xmm1 + psrld xmm9,27 + pxor xmm6,xmm14 + movdqa xmm7,xmm13 + + pslld xmm7,30 + movdqa xmm5,xmm4 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm11,xmm6 + paddd xmm4,xmm4 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + pxor xmm0,xmm2 + movdqa xmm2,XMMWORD[((80-128))+rax] + + movdqa xmm8,xmm11 + movdqa xmm6,xmm14 + pxor xmm0,XMMWORD[((176-128))+rax] + paddd xmm10,xmm15 + pslld xmm8,5 + pxor xmm6,xmm12 + + movdqa xmm9,xmm11 + movdqa XMMWORD[(32-128)+rax],xmm4 + paddd xmm10,xmm4 + pxor xmm0,xmm2 + psrld xmm9,27 + pxor xmm6,xmm13 + movdqa xmm7,xmm12 + + pslld xmm7,30 + movdqa xmm5,xmm0 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm10,xmm6 + paddd xmm0,xmm0 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm0,xmm5 + por xmm12,xmm7 + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((96-128))+rax] + + movdqa xmm8,xmm10 + movdqa xmm6,xmm13 + pxor xmm1,XMMWORD[((192-128))+rax] + paddd xmm14,xmm15 + pslld xmm8,5 + pxor xmm6,xmm11 + + movdqa xmm9,xmm10 + movdqa XMMWORD[(48-128)+rax],xmm0 + paddd xmm14,xmm0 + pxor xmm1,xmm3 + psrld xmm9,27 + pxor xmm6,xmm12 + movdqa xmm7,xmm11 + + pslld xmm7,30 + movdqa xmm5,xmm1 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm14,xmm6 + paddd xmm1,xmm1 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((112-128))+rax] + + movdqa xmm8,xmm14 + movdqa xmm6,xmm12 + pxor xmm2,XMMWORD[((208-128))+rax] + paddd xmm13,xmm15 + pslld xmm8,5 + pxor xmm6,xmm10 + + movdqa xmm9,xmm14 + movdqa XMMWORD[(64-128)+rax],xmm1 + paddd xmm13,xmm1 + pxor xmm2,xmm4 + psrld xmm9,27 + pxor xmm6,xmm11 + movdqa xmm7,xmm10 + + pslld xmm7,30 + movdqa xmm5,xmm2 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm13,xmm6 + paddd xmm2,xmm2 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((128-128))+rax] + + movdqa xmm8,xmm13 + movdqa xmm6,xmm11 + pxor xmm3,XMMWORD[((224-128))+rax] + paddd xmm12,xmm15 + pslld xmm8,5 + pxor xmm6,xmm14 + + movdqa xmm9,xmm13 + movdqa XMMWORD[(80-128)+rax],xmm2 + paddd xmm12,xmm2 + pxor xmm3,xmm0 + psrld xmm9,27 + pxor xmm6,xmm10 + movdqa xmm7,xmm14 + + pslld xmm7,30 + movdqa xmm5,xmm3 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm12,xmm6 + paddd xmm3,xmm3 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((144-128))+rax] + + movdqa xmm8,xmm12 + movdqa xmm6,xmm10 + pxor xmm4,XMMWORD[((240-128))+rax] + paddd xmm11,xmm15 + pslld xmm8,5 + pxor xmm6,xmm13 + + movdqa xmm9,xmm12 + movdqa XMMWORD[(96-128)+rax],xmm3 + paddd xmm11,xmm3 + pxor xmm4,xmm1 + psrld xmm9,27 + pxor xmm6,xmm14 + movdqa xmm7,xmm13 + + pslld xmm7,30 + movdqa xmm5,xmm4 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm11,xmm6 + paddd xmm4,xmm4 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + pxor xmm0,xmm2 + movdqa xmm2,XMMWORD[((160-128))+rax] + + movdqa xmm8,xmm11 + movdqa xmm6,xmm14 + pxor xmm0,XMMWORD[((0-128))+rax] + paddd xmm10,xmm15 + pslld xmm8,5 + pxor xmm6,xmm12 + + movdqa xmm9,xmm11 + movdqa XMMWORD[(112-128)+rax],xmm4 + paddd xmm10,xmm4 + pxor xmm0,xmm2 + psrld xmm9,27 + pxor xmm6,xmm13 + movdqa xmm7,xmm12 + + pslld xmm7,30 + movdqa xmm5,xmm0 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm10,xmm6 + paddd xmm0,xmm0 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm0,xmm5 + por xmm12,xmm7 + movdqa xmm15,XMMWORD[32+rbp] + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((176-128))+rax] + + movdqa xmm8,xmm10 + movdqa xmm7,xmm13 + pxor xmm1,XMMWORD[((16-128))+rax] + pxor xmm1,xmm3 + paddd xmm14,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm10 + pand xmm7,xmm12 + + movdqa xmm6,xmm13 + movdqa xmm5,xmm1 + psrld xmm9,27 + paddd xmm14,xmm7 + pxor xmm6,xmm12 + + movdqa XMMWORD[(128-128)+rax],xmm0 + paddd xmm14,xmm0 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm11 + movdqa xmm7,xmm11 + + pslld xmm7,30 + paddd xmm1,xmm1 + paddd xmm14,xmm6 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((192-128))+rax] + + movdqa xmm8,xmm14 + movdqa xmm7,xmm12 + pxor xmm2,XMMWORD[((32-128))+rax] + pxor xmm2,xmm4 + paddd xmm13,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm14 + pand xmm7,xmm11 + + movdqa xmm6,xmm12 + movdqa xmm5,xmm2 + psrld xmm9,27 + paddd xmm13,xmm7 + pxor xmm6,xmm11 + + movdqa XMMWORD[(144-128)+rax],xmm1 + paddd xmm13,xmm1 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm10 + movdqa xmm7,xmm10 + + pslld xmm7,30 + paddd xmm2,xmm2 + paddd xmm13,xmm6 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((208-128))+rax] + + movdqa xmm8,xmm13 + movdqa xmm7,xmm11 + pxor xmm3,XMMWORD[((48-128))+rax] + pxor xmm3,xmm0 + paddd xmm12,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm13 + pand xmm7,xmm10 + + movdqa xmm6,xmm11 + movdqa xmm5,xmm3 + psrld xmm9,27 + paddd xmm12,xmm7 + pxor xmm6,xmm10 + + movdqa XMMWORD[(160-128)+rax],xmm2 + paddd xmm12,xmm2 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm14 + movdqa xmm7,xmm14 + + pslld xmm7,30 + paddd xmm3,xmm3 + paddd xmm12,xmm6 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((224-128))+rax] + + movdqa xmm8,xmm12 + movdqa xmm7,xmm10 + pxor xmm4,XMMWORD[((64-128))+rax] + pxor xmm4,xmm1 + paddd xmm11,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm12 + pand xmm7,xmm14 + + movdqa xmm6,xmm10 + movdqa xmm5,xmm4 + psrld xmm9,27 + paddd xmm11,xmm7 + pxor xmm6,xmm14 + + movdqa XMMWORD[(176-128)+rax],xmm3 + paddd xmm11,xmm3 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm13 + movdqa xmm7,xmm13 + + pslld xmm7,30 + paddd xmm4,xmm4 + paddd xmm11,xmm6 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + pxor xmm0,xmm2 + movdqa xmm2,XMMWORD[((240-128))+rax] + + movdqa xmm8,xmm11 + movdqa xmm7,xmm14 + pxor xmm0,XMMWORD[((80-128))+rax] + pxor xmm0,xmm2 + paddd xmm10,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm11 + pand xmm7,xmm13 + + movdqa xmm6,xmm14 + movdqa xmm5,xmm0 + psrld xmm9,27 + paddd xmm10,xmm7 + pxor xmm6,xmm13 + + movdqa XMMWORD[(192-128)+rax],xmm4 + paddd xmm10,xmm4 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm12 + movdqa xmm7,xmm12 + + pslld xmm7,30 + paddd xmm0,xmm0 + paddd xmm10,xmm6 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm0,xmm5 + por xmm12,xmm7 + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((0-128))+rax] + + movdqa xmm8,xmm10 + movdqa xmm7,xmm13 + pxor xmm1,XMMWORD[((96-128))+rax] + pxor xmm1,xmm3 + paddd xmm14,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm10 + pand xmm7,xmm12 + + movdqa xmm6,xmm13 + movdqa xmm5,xmm1 + psrld xmm9,27 + paddd xmm14,xmm7 + pxor xmm6,xmm12 + + movdqa XMMWORD[(208-128)+rax],xmm0 + paddd xmm14,xmm0 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm11 + movdqa xmm7,xmm11 + + pslld xmm7,30 + paddd xmm1,xmm1 + paddd xmm14,xmm6 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((16-128))+rax] + + movdqa xmm8,xmm14 + movdqa xmm7,xmm12 + pxor xmm2,XMMWORD[((112-128))+rax] + pxor xmm2,xmm4 + paddd xmm13,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm14 + pand xmm7,xmm11 + + movdqa xmm6,xmm12 + movdqa xmm5,xmm2 + psrld xmm9,27 + paddd xmm13,xmm7 + pxor xmm6,xmm11 + + movdqa XMMWORD[(224-128)+rax],xmm1 + paddd xmm13,xmm1 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm10 + movdqa xmm7,xmm10 + + pslld xmm7,30 + paddd xmm2,xmm2 + paddd xmm13,xmm6 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((32-128))+rax] + + movdqa xmm8,xmm13 + movdqa xmm7,xmm11 + pxor xmm3,XMMWORD[((128-128))+rax] + pxor xmm3,xmm0 + paddd xmm12,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm13 + pand xmm7,xmm10 + + movdqa xmm6,xmm11 + movdqa xmm5,xmm3 + psrld xmm9,27 + paddd xmm12,xmm7 + pxor xmm6,xmm10 + + movdqa XMMWORD[(240-128)+rax],xmm2 + paddd xmm12,xmm2 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm14 + movdqa xmm7,xmm14 + + pslld xmm7,30 + paddd xmm3,xmm3 + paddd xmm12,xmm6 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((48-128))+rax] + + movdqa xmm8,xmm12 + movdqa xmm7,xmm10 + pxor xmm4,XMMWORD[((144-128))+rax] + pxor xmm4,xmm1 + paddd xmm11,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm12 + pand xmm7,xmm14 + + movdqa xmm6,xmm10 + movdqa xmm5,xmm4 + psrld xmm9,27 + paddd xmm11,xmm7 + pxor xmm6,xmm14 + + movdqa XMMWORD[(0-128)+rax],xmm3 + paddd xmm11,xmm3 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm13 + movdqa xmm7,xmm13 + + pslld xmm7,30 + paddd xmm4,xmm4 + paddd xmm11,xmm6 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + pxor xmm0,xmm2 + movdqa xmm2,XMMWORD[((64-128))+rax] + + movdqa xmm8,xmm11 + movdqa xmm7,xmm14 + pxor xmm0,XMMWORD[((160-128))+rax] + pxor xmm0,xmm2 + paddd xmm10,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm11 + pand xmm7,xmm13 + + movdqa xmm6,xmm14 + movdqa xmm5,xmm0 + psrld xmm9,27 + paddd xmm10,xmm7 + pxor xmm6,xmm13 + + movdqa XMMWORD[(16-128)+rax],xmm4 + paddd xmm10,xmm4 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm12 + movdqa xmm7,xmm12 + + pslld xmm7,30 + paddd xmm0,xmm0 + paddd xmm10,xmm6 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm0,xmm5 + por xmm12,xmm7 + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((80-128))+rax] + + movdqa xmm8,xmm10 + movdqa xmm7,xmm13 + pxor xmm1,XMMWORD[((176-128))+rax] + pxor xmm1,xmm3 + paddd xmm14,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm10 + pand xmm7,xmm12 + + movdqa xmm6,xmm13 + movdqa xmm5,xmm1 + psrld xmm9,27 + paddd xmm14,xmm7 + pxor xmm6,xmm12 + + movdqa XMMWORD[(32-128)+rax],xmm0 + paddd xmm14,xmm0 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm11 + movdqa xmm7,xmm11 + + pslld xmm7,30 + paddd xmm1,xmm1 + paddd xmm14,xmm6 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((96-128))+rax] + + movdqa xmm8,xmm14 + movdqa xmm7,xmm12 + pxor xmm2,XMMWORD[((192-128))+rax] + pxor xmm2,xmm4 + paddd xmm13,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm14 + pand xmm7,xmm11 + + movdqa xmm6,xmm12 + movdqa xmm5,xmm2 + psrld xmm9,27 + paddd xmm13,xmm7 + pxor xmm6,xmm11 + + movdqa XMMWORD[(48-128)+rax],xmm1 + paddd xmm13,xmm1 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm10 + movdqa xmm7,xmm10 + + pslld xmm7,30 + paddd xmm2,xmm2 + paddd xmm13,xmm6 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((112-128))+rax] + + movdqa xmm8,xmm13 + movdqa xmm7,xmm11 + pxor xmm3,XMMWORD[((208-128))+rax] + pxor xmm3,xmm0 + paddd xmm12,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm13 + pand xmm7,xmm10 + + movdqa xmm6,xmm11 + movdqa xmm5,xmm3 + psrld xmm9,27 + paddd xmm12,xmm7 + pxor xmm6,xmm10 + + movdqa XMMWORD[(64-128)+rax],xmm2 + paddd xmm12,xmm2 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm14 + movdqa xmm7,xmm14 + + pslld xmm7,30 + paddd xmm3,xmm3 + paddd xmm12,xmm6 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((128-128))+rax] + + movdqa xmm8,xmm12 + movdqa xmm7,xmm10 + pxor xmm4,XMMWORD[((224-128))+rax] + pxor xmm4,xmm1 + paddd xmm11,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm12 + pand xmm7,xmm14 + + movdqa xmm6,xmm10 + movdqa xmm5,xmm4 + psrld xmm9,27 + paddd xmm11,xmm7 + pxor xmm6,xmm14 + + movdqa XMMWORD[(80-128)+rax],xmm3 + paddd xmm11,xmm3 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm13 + movdqa xmm7,xmm13 + + pslld xmm7,30 + paddd xmm4,xmm4 + paddd xmm11,xmm6 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + pxor xmm0,xmm2 + movdqa xmm2,XMMWORD[((144-128))+rax] + + movdqa xmm8,xmm11 + movdqa xmm7,xmm14 + pxor xmm0,XMMWORD[((240-128))+rax] + pxor xmm0,xmm2 + paddd xmm10,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm11 + pand xmm7,xmm13 + + movdqa xmm6,xmm14 + movdqa xmm5,xmm0 + psrld xmm9,27 + paddd xmm10,xmm7 + pxor xmm6,xmm13 + + movdqa XMMWORD[(96-128)+rax],xmm4 + paddd xmm10,xmm4 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm12 + movdqa xmm7,xmm12 + + pslld xmm7,30 + paddd xmm0,xmm0 + paddd xmm10,xmm6 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm0,xmm5 + por xmm12,xmm7 + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((160-128))+rax] + + movdqa xmm8,xmm10 + movdqa xmm7,xmm13 + pxor xmm1,XMMWORD[((0-128))+rax] + pxor xmm1,xmm3 + paddd xmm14,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm10 + pand xmm7,xmm12 + + movdqa xmm6,xmm13 + movdqa xmm5,xmm1 + psrld xmm9,27 + paddd xmm14,xmm7 + pxor xmm6,xmm12 + + movdqa XMMWORD[(112-128)+rax],xmm0 + paddd xmm14,xmm0 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm11 + movdqa xmm7,xmm11 + + pslld xmm7,30 + paddd xmm1,xmm1 + paddd xmm14,xmm6 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((176-128))+rax] + + movdqa xmm8,xmm14 + movdqa xmm7,xmm12 + pxor xmm2,XMMWORD[((16-128))+rax] + pxor xmm2,xmm4 + paddd xmm13,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm14 + pand xmm7,xmm11 + + movdqa xmm6,xmm12 + movdqa xmm5,xmm2 + psrld xmm9,27 + paddd xmm13,xmm7 + pxor xmm6,xmm11 + + movdqa XMMWORD[(128-128)+rax],xmm1 + paddd xmm13,xmm1 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm10 + movdqa xmm7,xmm10 + + pslld xmm7,30 + paddd xmm2,xmm2 + paddd xmm13,xmm6 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((192-128))+rax] + + movdqa xmm8,xmm13 + movdqa xmm7,xmm11 + pxor xmm3,XMMWORD[((32-128))+rax] + pxor xmm3,xmm0 + paddd xmm12,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm13 + pand xmm7,xmm10 + + movdqa xmm6,xmm11 + movdqa xmm5,xmm3 + psrld xmm9,27 + paddd xmm12,xmm7 + pxor xmm6,xmm10 + + movdqa XMMWORD[(144-128)+rax],xmm2 + paddd xmm12,xmm2 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm14 + movdqa xmm7,xmm14 + + pslld xmm7,30 + paddd xmm3,xmm3 + paddd xmm12,xmm6 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((208-128))+rax] + + movdqa xmm8,xmm12 + movdqa xmm7,xmm10 + pxor xmm4,XMMWORD[((48-128))+rax] + pxor xmm4,xmm1 + paddd xmm11,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm12 + pand xmm7,xmm14 + + movdqa xmm6,xmm10 + movdqa xmm5,xmm4 + psrld xmm9,27 + paddd xmm11,xmm7 + pxor xmm6,xmm14 + + movdqa XMMWORD[(160-128)+rax],xmm3 + paddd xmm11,xmm3 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm13 + movdqa xmm7,xmm13 + + pslld xmm7,30 + paddd xmm4,xmm4 + paddd xmm11,xmm6 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + pxor xmm0,xmm2 + movdqa xmm2,XMMWORD[((224-128))+rax] + + movdqa xmm8,xmm11 + movdqa xmm7,xmm14 + pxor xmm0,XMMWORD[((64-128))+rax] + pxor xmm0,xmm2 + paddd xmm10,xmm15 + pslld xmm8,5 + movdqa xmm9,xmm11 + pand xmm7,xmm13 + + movdqa xmm6,xmm14 + movdqa xmm5,xmm0 + psrld xmm9,27 + paddd xmm10,xmm7 + pxor xmm6,xmm13 + + movdqa XMMWORD[(176-128)+rax],xmm4 + paddd xmm10,xmm4 + por xmm8,xmm9 + psrld xmm5,31 + pand xmm6,xmm12 + movdqa xmm7,xmm12 + + pslld xmm7,30 + paddd xmm0,xmm0 + paddd xmm10,xmm6 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm0,xmm5 + por xmm12,xmm7 + movdqa xmm15,XMMWORD[64+rbp] + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((240-128))+rax] + + movdqa xmm8,xmm10 + movdqa xmm6,xmm13 + pxor xmm1,XMMWORD[((80-128))+rax] + paddd xmm14,xmm15 + pslld xmm8,5 + pxor xmm6,xmm11 + + movdqa xmm9,xmm10 + movdqa XMMWORD[(192-128)+rax],xmm0 + paddd xmm14,xmm0 + pxor xmm1,xmm3 + psrld xmm9,27 + pxor xmm6,xmm12 + movdqa xmm7,xmm11 + + pslld xmm7,30 + movdqa xmm5,xmm1 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm14,xmm6 + paddd xmm1,xmm1 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((0-128))+rax] + + movdqa xmm8,xmm14 + movdqa xmm6,xmm12 + pxor xmm2,XMMWORD[((96-128))+rax] + paddd xmm13,xmm15 + pslld xmm8,5 + pxor xmm6,xmm10 + + movdqa xmm9,xmm14 + movdqa XMMWORD[(208-128)+rax],xmm1 + paddd xmm13,xmm1 + pxor xmm2,xmm4 + psrld xmm9,27 + pxor xmm6,xmm11 + movdqa xmm7,xmm10 + + pslld xmm7,30 + movdqa xmm5,xmm2 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm13,xmm6 + paddd xmm2,xmm2 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((16-128))+rax] + + movdqa xmm8,xmm13 + movdqa xmm6,xmm11 + pxor xmm3,XMMWORD[((112-128))+rax] + paddd xmm12,xmm15 + pslld xmm8,5 + pxor xmm6,xmm14 + + movdqa xmm9,xmm13 + movdqa XMMWORD[(224-128)+rax],xmm2 + paddd xmm12,xmm2 + pxor xmm3,xmm0 + psrld xmm9,27 + pxor xmm6,xmm10 + movdqa xmm7,xmm14 + + pslld xmm7,30 + movdqa xmm5,xmm3 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm12,xmm6 + paddd xmm3,xmm3 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((32-128))+rax] + + movdqa xmm8,xmm12 + movdqa xmm6,xmm10 + pxor xmm4,XMMWORD[((128-128))+rax] + paddd xmm11,xmm15 + pslld xmm8,5 + pxor xmm6,xmm13 + + movdqa xmm9,xmm12 + movdqa XMMWORD[(240-128)+rax],xmm3 + paddd xmm11,xmm3 + pxor xmm4,xmm1 + psrld xmm9,27 + pxor xmm6,xmm14 + movdqa xmm7,xmm13 + + pslld xmm7,30 + movdqa xmm5,xmm4 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm11,xmm6 + paddd xmm4,xmm4 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + pxor xmm0,xmm2 + movdqa xmm2,XMMWORD[((48-128))+rax] + + movdqa xmm8,xmm11 + movdqa xmm6,xmm14 + pxor xmm0,XMMWORD[((144-128))+rax] + paddd xmm10,xmm15 + pslld xmm8,5 + pxor xmm6,xmm12 + + movdqa xmm9,xmm11 + movdqa XMMWORD[(0-128)+rax],xmm4 + paddd xmm10,xmm4 + pxor xmm0,xmm2 + psrld xmm9,27 + pxor xmm6,xmm13 + movdqa xmm7,xmm12 + + pslld xmm7,30 + movdqa xmm5,xmm0 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm10,xmm6 + paddd xmm0,xmm0 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm0,xmm5 + por xmm12,xmm7 + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((64-128))+rax] + + movdqa xmm8,xmm10 + movdqa xmm6,xmm13 + pxor xmm1,XMMWORD[((160-128))+rax] + paddd xmm14,xmm15 + pslld xmm8,5 + pxor xmm6,xmm11 + + movdqa xmm9,xmm10 + movdqa XMMWORD[(16-128)+rax],xmm0 + paddd xmm14,xmm0 + pxor xmm1,xmm3 + psrld xmm9,27 + pxor xmm6,xmm12 + movdqa xmm7,xmm11 + + pslld xmm7,30 + movdqa xmm5,xmm1 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm14,xmm6 + paddd xmm1,xmm1 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((80-128))+rax] + + movdqa xmm8,xmm14 + movdqa xmm6,xmm12 + pxor xmm2,XMMWORD[((176-128))+rax] + paddd xmm13,xmm15 + pslld xmm8,5 + pxor xmm6,xmm10 + + movdqa xmm9,xmm14 + movdqa XMMWORD[(32-128)+rax],xmm1 + paddd xmm13,xmm1 + pxor xmm2,xmm4 + psrld xmm9,27 + pxor xmm6,xmm11 + movdqa xmm7,xmm10 + + pslld xmm7,30 + movdqa xmm5,xmm2 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm13,xmm6 + paddd xmm2,xmm2 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((96-128))+rax] + + movdqa xmm8,xmm13 + movdqa xmm6,xmm11 + pxor xmm3,XMMWORD[((192-128))+rax] + paddd xmm12,xmm15 + pslld xmm8,5 + pxor xmm6,xmm14 + + movdqa xmm9,xmm13 + movdqa XMMWORD[(48-128)+rax],xmm2 + paddd xmm12,xmm2 + pxor xmm3,xmm0 + psrld xmm9,27 + pxor xmm6,xmm10 + movdqa xmm7,xmm14 + + pslld xmm7,30 + movdqa xmm5,xmm3 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm12,xmm6 + paddd xmm3,xmm3 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((112-128))+rax] + + movdqa xmm8,xmm12 + movdqa xmm6,xmm10 + pxor xmm4,XMMWORD[((208-128))+rax] + paddd xmm11,xmm15 + pslld xmm8,5 + pxor xmm6,xmm13 + + movdqa xmm9,xmm12 + movdqa XMMWORD[(64-128)+rax],xmm3 + paddd xmm11,xmm3 + pxor xmm4,xmm1 + psrld xmm9,27 + pxor xmm6,xmm14 + movdqa xmm7,xmm13 + + pslld xmm7,30 + movdqa xmm5,xmm4 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm11,xmm6 + paddd xmm4,xmm4 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + pxor xmm0,xmm2 + movdqa xmm2,XMMWORD[((128-128))+rax] + + movdqa xmm8,xmm11 + movdqa xmm6,xmm14 + pxor xmm0,XMMWORD[((224-128))+rax] + paddd xmm10,xmm15 + pslld xmm8,5 + pxor xmm6,xmm12 + + movdqa xmm9,xmm11 + movdqa XMMWORD[(80-128)+rax],xmm4 + paddd xmm10,xmm4 + pxor xmm0,xmm2 + psrld xmm9,27 + pxor xmm6,xmm13 + movdqa xmm7,xmm12 + + pslld xmm7,30 + movdqa xmm5,xmm0 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm10,xmm6 + paddd xmm0,xmm0 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm0,xmm5 + por xmm12,xmm7 + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((144-128))+rax] + + movdqa xmm8,xmm10 + movdqa xmm6,xmm13 + pxor xmm1,XMMWORD[((240-128))+rax] + paddd xmm14,xmm15 + pslld xmm8,5 + pxor xmm6,xmm11 + + movdqa xmm9,xmm10 + movdqa XMMWORD[(96-128)+rax],xmm0 + paddd xmm14,xmm0 + pxor xmm1,xmm3 + psrld xmm9,27 + pxor xmm6,xmm12 + movdqa xmm7,xmm11 + + pslld xmm7,30 + movdqa xmm5,xmm1 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm14,xmm6 + paddd xmm1,xmm1 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((160-128))+rax] + + movdqa xmm8,xmm14 + movdqa xmm6,xmm12 + pxor xmm2,XMMWORD[((0-128))+rax] + paddd xmm13,xmm15 + pslld xmm8,5 + pxor xmm6,xmm10 + + movdqa xmm9,xmm14 + movdqa XMMWORD[(112-128)+rax],xmm1 + paddd xmm13,xmm1 + pxor xmm2,xmm4 + psrld xmm9,27 + pxor xmm6,xmm11 + movdqa xmm7,xmm10 + + pslld xmm7,30 + movdqa xmm5,xmm2 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm13,xmm6 + paddd xmm2,xmm2 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((176-128))+rax] + + movdqa xmm8,xmm13 + movdqa xmm6,xmm11 + pxor xmm3,XMMWORD[((16-128))+rax] + paddd xmm12,xmm15 + pslld xmm8,5 + pxor xmm6,xmm14 + + movdqa xmm9,xmm13 + paddd xmm12,xmm2 + pxor xmm3,xmm0 + psrld xmm9,27 + pxor xmm6,xmm10 + movdqa xmm7,xmm14 + + pslld xmm7,30 + movdqa xmm5,xmm3 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm12,xmm6 + paddd xmm3,xmm3 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((192-128))+rax] + + movdqa xmm8,xmm12 + movdqa xmm6,xmm10 + pxor xmm4,XMMWORD[((32-128))+rax] + paddd xmm11,xmm15 + pslld xmm8,5 + pxor xmm6,xmm13 + + movdqa xmm9,xmm12 + paddd xmm11,xmm3 + pxor xmm4,xmm1 + psrld xmm9,27 + pxor xmm6,xmm14 + movdqa xmm7,xmm13 + + pslld xmm7,30 + movdqa xmm5,xmm4 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm11,xmm6 + paddd xmm4,xmm4 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + pxor xmm0,xmm2 + movdqa xmm2,XMMWORD[((208-128))+rax] + + movdqa xmm8,xmm11 + movdqa xmm6,xmm14 + pxor xmm0,XMMWORD[((48-128))+rax] + paddd xmm10,xmm15 + pslld xmm8,5 + pxor xmm6,xmm12 + + movdqa xmm9,xmm11 + paddd xmm10,xmm4 + pxor xmm0,xmm2 + psrld xmm9,27 + pxor xmm6,xmm13 + movdqa xmm7,xmm12 + + pslld xmm7,30 + movdqa xmm5,xmm0 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm10,xmm6 + paddd xmm0,xmm0 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm0,xmm5 + por xmm12,xmm7 + pxor xmm1,xmm3 + movdqa xmm3,XMMWORD[((224-128))+rax] + + movdqa xmm8,xmm10 + movdqa xmm6,xmm13 + pxor xmm1,XMMWORD[((64-128))+rax] + paddd xmm14,xmm15 + pslld xmm8,5 + pxor xmm6,xmm11 + + movdqa xmm9,xmm10 + paddd xmm14,xmm0 + pxor xmm1,xmm3 + psrld xmm9,27 + pxor xmm6,xmm12 + movdqa xmm7,xmm11 + + pslld xmm7,30 + movdqa xmm5,xmm1 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm14,xmm6 + paddd xmm1,xmm1 + + psrld xmm11,2 + paddd xmm14,xmm8 + por xmm1,xmm5 + por xmm11,xmm7 + pxor xmm2,xmm4 + movdqa xmm4,XMMWORD[((240-128))+rax] + + movdqa xmm8,xmm14 + movdqa xmm6,xmm12 + pxor xmm2,XMMWORD[((80-128))+rax] + paddd xmm13,xmm15 + pslld xmm8,5 + pxor xmm6,xmm10 + + movdqa xmm9,xmm14 + paddd xmm13,xmm1 + pxor xmm2,xmm4 + psrld xmm9,27 + pxor xmm6,xmm11 + movdqa xmm7,xmm10 + + pslld xmm7,30 + movdqa xmm5,xmm2 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm13,xmm6 + paddd xmm2,xmm2 + + psrld xmm10,2 + paddd xmm13,xmm8 + por xmm2,xmm5 + por xmm10,xmm7 + pxor xmm3,xmm0 + movdqa xmm0,XMMWORD[((0-128))+rax] + + movdqa xmm8,xmm13 + movdqa xmm6,xmm11 + pxor xmm3,XMMWORD[((96-128))+rax] + paddd xmm12,xmm15 + pslld xmm8,5 + pxor xmm6,xmm14 + + movdqa xmm9,xmm13 + paddd xmm12,xmm2 + pxor xmm3,xmm0 + psrld xmm9,27 + pxor xmm6,xmm10 + movdqa xmm7,xmm14 + + pslld xmm7,30 + movdqa xmm5,xmm3 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm12,xmm6 + paddd xmm3,xmm3 + + psrld xmm14,2 + paddd xmm12,xmm8 + por xmm3,xmm5 + por xmm14,xmm7 + pxor xmm4,xmm1 + movdqa xmm1,XMMWORD[((16-128))+rax] + + movdqa xmm8,xmm12 + movdqa xmm6,xmm10 + pxor xmm4,XMMWORD[((112-128))+rax] + paddd xmm11,xmm15 + pslld xmm8,5 + pxor xmm6,xmm13 + + movdqa xmm9,xmm12 + paddd xmm11,xmm3 + pxor xmm4,xmm1 + psrld xmm9,27 + pxor xmm6,xmm14 + movdqa xmm7,xmm13 + + pslld xmm7,30 + movdqa xmm5,xmm4 + por xmm8,xmm9 + psrld xmm5,31 + paddd xmm11,xmm6 + paddd xmm4,xmm4 + + psrld xmm13,2 + paddd xmm11,xmm8 + por xmm4,xmm5 + por xmm13,xmm7 + movdqa xmm8,xmm11 + paddd xmm10,xmm15 + movdqa xmm6,xmm14 + pslld xmm8,5 + pxor xmm6,xmm12 + + movdqa xmm9,xmm11 + paddd xmm10,xmm4 + psrld xmm9,27 + movdqa xmm7,xmm12 + pxor xmm6,xmm13 + + pslld xmm7,30 + por xmm8,xmm9 + paddd xmm10,xmm6 + + psrld xmm12,2 + paddd xmm10,xmm8 + por xmm12,xmm7 + movdqa xmm0,XMMWORD[rbx] + mov ecx,1 + cmp ecx,DWORD[rbx] + pxor xmm8,xmm8 + cmovge r8,rbp + cmp ecx,DWORD[4+rbx] + movdqa xmm1,xmm0 + cmovge r9,rbp + cmp ecx,DWORD[8+rbx] + pcmpgtd xmm1,xmm8 + cmovge r10,rbp + cmp ecx,DWORD[12+rbx] + paddd xmm0,xmm1 + cmovge r11,rbp + + movdqu xmm6,XMMWORD[rdi] + pand xmm10,xmm1 + movdqu xmm7,XMMWORD[32+rdi] + pand xmm11,xmm1 + paddd xmm10,xmm6 + movdqu xmm8,XMMWORD[64+rdi] + pand xmm12,xmm1 + paddd xmm11,xmm7 + movdqu xmm9,XMMWORD[96+rdi] + pand xmm13,xmm1 + paddd xmm12,xmm8 + movdqu xmm5,XMMWORD[128+rdi] + pand xmm14,xmm1 + movdqu XMMWORD[rdi],xmm10 + paddd xmm13,xmm9 + movdqu XMMWORD[32+rdi],xmm11 + paddd xmm14,xmm5 + movdqu XMMWORD[64+rdi],xmm12 + movdqu XMMWORD[96+rdi],xmm13 + movdqu XMMWORD[128+rdi],xmm14 + + movdqa XMMWORD[rbx],xmm0 + movdqa xmm5,XMMWORD[96+rbp] + movdqa xmm15,XMMWORD[((-32))+rbp] + dec edx + jnz NEAR $L$oop + + mov edx,DWORD[280+rsp] + lea rdi,[16+rdi] + lea rsi,[64+rsi] + dec edx + jnz NEAR $L$oop_grande + +$L$done: + mov rax,QWORD[272+rsp] + + movaps xmm6,XMMWORD[((-184))+rax] + movaps xmm7,XMMWORD[((-168))+rax] + movaps xmm8,XMMWORD[((-152))+rax] + movaps xmm9,XMMWORD[((-136))+rax] + movaps xmm10,XMMWORD[((-120))+rax] + movaps xmm11,XMMWORD[((-104))+rax] + movaps xmm12,XMMWORD[((-88))+rax] + movaps xmm13,XMMWORD[((-72))+rax] + movaps xmm14,XMMWORD[((-56))+rax] + movaps xmm15,XMMWORD[((-40))+rax] + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha1_multi_block: + +ALIGN 32 +sha1_multi_block_shaext: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha1_multi_block_shaext: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +_shaext_shortcut: + mov rax,rsp + + push rbx + + push rbp + + lea rsp,[((-168))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[(-120)+rax],xmm10 + movaps XMMWORD[(-104)+rax],xmm11 + movaps XMMWORD[(-88)+rax],xmm12 + movaps XMMWORD[(-72)+rax],xmm13 + movaps XMMWORD[(-56)+rax],xmm14 + movaps XMMWORD[(-40)+rax],xmm15 + sub rsp,288 + shl edx,1 + and rsp,-256 + lea rdi,[64+rdi] + mov QWORD[272+rsp],rax +$L$body_shaext: + lea rbx,[256+rsp] + movdqa xmm3,XMMWORD[((K_XX_XX+128))] + +$L$oop_grande_shaext: + mov DWORD[280+rsp],edx + xor edx,edx + mov r8,QWORD[rsi] + mov ecx,DWORD[8+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[rbx],ecx + cmovle r8,rsp + mov r9,QWORD[16+rsi] + mov ecx,DWORD[24+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[4+rbx],ecx + cmovle r9,rsp + test edx,edx + jz NEAR $L$done_shaext + + movq xmm0,QWORD[((0-64))+rdi] + movq xmm4,QWORD[((32-64))+rdi] + movq xmm5,QWORD[((64-64))+rdi] + movq xmm6,QWORD[((96-64))+rdi] + movq xmm7,QWORD[((128-64))+rdi] + + punpckldq xmm0,xmm4 + punpckldq xmm5,xmm6 + + movdqa xmm8,xmm0 + punpcklqdq xmm0,xmm5 + punpckhqdq xmm8,xmm5 + + pshufd xmm1,xmm7,63 + pshufd xmm9,xmm7,127 + pshufd xmm0,xmm0,27 + pshufd xmm8,xmm8,27 + jmp NEAR $L$oop_shaext + +ALIGN 32 +$L$oop_shaext: + movdqu xmm4,XMMWORD[r8] + movdqu xmm11,XMMWORD[r9] + movdqu xmm5,XMMWORD[16+r8] + movdqu xmm12,XMMWORD[16+r9] + movdqu xmm6,XMMWORD[32+r8] +DB 102,15,56,0,227 + movdqu xmm13,XMMWORD[32+r9] +DB 102,68,15,56,0,219 + movdqu xmm7,XMMWORD[48+r8] + lea r8,[64+r8] +DB 102,15,56,0,235 + movdqu xmm14,XMMWORD[48+r9] + lea r9,[64+r9] +DB 102,68,15,56,0,227 + + movdqa XMMWORD[80+rsp],xmm1 + paddd xmm1,xmm4 + movdqa XMMWORD[112+rsp],xmm9 + paddd xmm9,xmm11 + movdqa XMMWORD[64+rsp],xmm0 + movdqa xmm2,xmm0 + movdqa XMMWORD[96+rsp],xmm8 + movdqa xmm10,xmm8 +DB 15,58,204,193,0 +DB 15,56,200,213 +DB 69,15,58,204,193,0 +DB 69,15,56,200,212 +DB 102,15,56,0,243 + prefetcht0 [127+r8] +DB 15,56,201,229 +DB 102,68,15,56,0,235 + prefetcht0 [127+r9] +DB 69,15,56,201,220 + +DB 102,15,56,0,251 + movdqa xmm1,xmm0 +DB 102,68,15,56,0,243 + movdqa xmm9,xmm8 +DB 15,58,204,194,0 +DB 15,56,200,206 +DB 69,15,58,204,194,0 +DB 69,15,56,200,205 + pxor xmm4,xmm6 +DB 15,56,201,238 + pxor xmm11,xmm13 +DB 69,15,56,201,229 + movdqa xmm2,xmm0 + movdqa xmm10,xmm8 +DB 15,58,204,193,0 +DB 15,56,200,215 +DB 69,15,58,204,193,0 +DB 69,15,56,200,214 +DB 15,56,202,231 +DB 69,15,56,202,222 + pxor xmm5,xmm7 +DB 15,56,201,247 + pxor xmm12,xmm14 +DB 69,15,56,201,238 + movdqa xmm1,xmm0 + movdqa xmm9,xmm8 +DB 15,58,204,194,0 +DB 15,56,200,204 +DB 69,15,58,204,194,0 +DB 69,15,56,200,203 +DB 15,56,202,236 +DB 69,15,56,202,227 + pxor xmm6,xmm4 +DB 15,56,201,252 + pxor xmm13,xmm11 +DB 69,15,56,201,243 + movdqa xmm2,xmm0 + movdqa xmm10,xmm8 +DB 15,58,204,193,0 +DB 15,56,200,213 +DB 69,15,58,204,193,0 +DB 69,15,56,200,212 +DB 15,56,202,245 +DB 69,15,56,202,236 + pxor xmm7,xmm5 +DB 15,56,201,229 + pxor xmm14,xmm12 +DB 69,15,56,201,220 + movdqa xmm1,xmm0 + movdqa xmm9,xmm8 +DB 15,58,204,194,1 +DB 15,56,200,206 +DB 69,15,58,204,194,1 +DB 69,15,56,200,205 +DB 15,56,202,254 +DB 69,15,56,202,245 + pxor xmm4,xmm6 +DB 15,56,201,238 + pxor xmm11,xmm13 +DB 69,15,56,201,229 + movdqa xmm2,xmm0 + movdqa xmm10,xmm8 +DB 15,58,204,193,1 +DB 15,56,200,215 +DB 69,15,58,204,193,1 +DB 69,15,56,200,214 +DB 15,56,202,231 +DB 69,15,56,202,222 + pxor xmm5,xmm7 +DB 15,56,201,247 + pxor xmm12,xmm14 +DB 69,15,56,201,238 + movdqa xmm1,xmm0 + movdqa xmm9,xmm8 +DB 15,58,204,194,1 +DB 15,56,200,204 +DB 69,15,58,204,194,1 +DB 69,15,56,200,203 +DB 15,56,202,236 +DB 69,15,56,202,227 + pxor xmm6,xmm4 +DB 15,56,201,252 + pxor xmm13,xmm11 +DB 69,15,56,201,243 + movdqa xmm2,xmm0 + movdqa xmm10,xmm8 +DB 15,58,204,193,1 +DB 15,56,200,213 +DB 69,15,58,204,193,1 +DB 69,15,56,200,212 +DB 15,56,202,245 +DB 69,15,56,202,236 + pxor xmm7,xmm5 +DB 15,56,201,229 + pxor xmm14,xmm12 +DB 69,15,56,201,220 + movdqa xmm1,xmm0 + movdqa xmm9,xmm8 +DB 15,58,204,194,1 +DB 15,56,200,206 +DB 69,15,58,204,194,1 +DB 69,15,56,200,205 +DB 15,56,202,254 +DB 69,15,56,202,245 + pxor xmm4,xmm6 +DB 15,56,201,238 + pxor xmm11,xmm13 +DB 69,15,56,201,229 + movdqa xmm2,xmm0 + movdqa xmm10,xmm8 +DB 15,58,204,193,2 +DB 15,56,200,215 +DB 69,15,58,204,193,2 +DB 69,15,56,200,214 +DB 15,56,202,231 +DB 69,15,56,202,222 + pxor xmm5,xmm7 +DB 15,56,201,247 + pxor xmm12,xmm14 +DB 69,15,56,201,238 + movdqa xmm1,xmm0 + movdqa xmm9,xmm8 +DB 15,58,204,194,2 +DB 15,56,200,204 +DB 69,15,58,204,194,2 +DB 69,15,56,200,203 +DB 15,56,202,236 +DB 69,15,56,202,227 + pxor xmm6,xmm4 +DB 15,56,201,252 + pxor xmm13,xmm11 +DB 69,15,56,201,243 + movdqa xmm2,xmm0 + movdqa xmm10,xmm8 +DB 15,58,204,193,2 +DB 15,56,200,213 +DB 69,15,58,204,193,2 +DB 69,15,56,200,212 +DB 15,56,202,245 +DB 69,15,56,202,236 + pxor xmm7,xmm5 +DB 15,56,201,229 + pxor xmm14,xmm12 +DB 69,15,56,201,220 + movdqa xmm1,xmm0 + movdqa xmm9,xmm8 +DB 15,58,204,194,2 +DB 15,56,200,206 +DB 69,15,58,204,194,2 +DB 69,15,56,200,205 +DB 15,56,202,254 +DB 69,15,56,202,245 + pxor xmm4,xmm6 +DB 15,56,201,238 + pxor xmm11,xmm13 +DB 69,15,56,201,229 + movdqa xmm2,xmm0 + movdqa xmm10,xmm8 +DB 15,58,204,193,2 +DB 15,56,200,215 +DB 69,15,58,204,193,2 +DB 69,15,56,200,214 +DB 15,56,202,231 +DB 69,15,56,202,222 + pxor xmm5,xmm7 +DB 15,56,201,247 + pxor xmm12,xmm14 +DB 69,15,56,201,238 + movdqa xmm1,xmm0 + movdqa xmm9,xmm8 +DB 15,58,204,194,3 +DB 15,56,200,204 +DB 69,15,58,204,194,3 +DB 69,15,56,200,203 +DB 15,56,202,236 +DB 69,15,56,202,227 + pxor xmm6,xmm4 +DB 15,56,201,252 + pxor xmm13,xmm11 +DB 69,15,56,201,243 + movdqa xmm2,xmm0 + movdqa xmm10,xmm8 +DB 15,58,204,193,3 +DB 15,56,200,213 +DB 69,15,58,204,193,3 +DB 69,15,56,200,212 +DB 15,56,202,245 +DB 69,15,56,202,236 + pxor xmm7,xmm5 + pxor xmm14,xmm12 + + mov ecx,1 + pxor xmm4,xmm4 + cmp ecx,DWORD[rbx] + cmovge r8,rsp + + movdqa xmm1,xmm0 + movdqa xmm9,xmm8 +DB 15,58,204,194,3 +DB 15,56,200,206 +DB 69,15,58,204,194,3 +DB 69,15,56,200,205 +DB 15,56,202,254 +DB 69,15,56,202,245 + + cmp ecx,DWORD[4+rbx] + cmovge r9,rsp + movq xmm6,QWORD[rbx] + + movdqa xmm2,xmm0 + movdqa xmm10,xmm8 +DB 15,58,204,193,3 +DB 15,56,200,215 +DB 69,15,58,204,193,3 +DB 69,15,56,200,214 + + pshufd xmm11,xmm6,0x00 + pshufd xmm12,xmm6,0x55 + movdqa xmm7,xmm6 + pcmpgtd xmm11,xmm4 + pcmpgtd xmm12,xmm4 + + movdqa xmm1,xmm0 + movdqa xmm9,xmm8 +DB 15,58,204,194,3 +DB 15,56,200,204 +DB 69,15,58,204,194,3 +DB 68,15,56,200,204 + + pcmpgtd xmm7,xmm4 + pand xmm0,xmm11 + pand xmm1,xmm11 + pand xmm8,xmm12 + pand xmm9,xmm12 + paddd xmm6,xmm7 + + paddd xmm0,XMMWORD[64+rsp] + paddd xmm1,XMMWORD[80+rsp] + paddd xmm8,XMMWORD[96+rsp] + paddd xmm9,XMMWORD[112+rsp] + + movq QWORD[rbx],xmm6 + dec edx + jnz NEAR $L$oop_shaext + + mov edx,DWORD[280+rsp] + + pshufd xmm0,xmm0,27 + pshufd xmm8,xmm8,27 + + movdqa xmm6,xmm0 + punpckldq xmm0,xmm8 + punpckhdq xmm6,xmm8 + punpckhdq xmm1,xmm9 + movq QWORD[(0-64)+rdi],xmm0 + psrldq xmm0,8 + movq QWORD[(64-64)+rdi],xmm6 + psrldq xmm6,8 + movq QWORD[(32-64)+rdi],xmm0 + psrldq xmm1,8 + movq QWORD[(96-64)+rdi],xmm6 + movq QWORD[(128-64)+rdi],xmm1 + + lea rdi,[8+rdi] + lea rsi,[32+rsi] + dec edx + jnz NEAR $L$oop_grande_shaext + +$L$done_shaext: + + movaps xmm6,XMMWORD[((-184))+rax] + movaps xmm7,XMMWORD[((-168))+rax] + movaps xmm8,XMMWORD[((-152))+rax] + movaps xmm9,XMMWORD[((-136))+rax] + movaps xmm10,XMMWORD[((-120))+rax] + movaps xmm11,XMMWORD[((-104))+rax] + movaps xmm12,XMMWORD[((-88))+rax] + movaps xmm13,XMMWORD[((-72))+rax] + movaps xmm14,XMMWORD[((-56))+rax] + movaps xmm15,XMMWORD[((-40))+rax] + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$epilogue_shaext: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha1_multi_block_shaext: + +ALIGN 32 +sha1_multi_block_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha1_multi_block_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +_avx_shortcut: + shr rcx,32 + cmp edx,2 + jb NEAR $L$avx + test ecx,32 + jnz NEAR _avx2_shortcut + jmp NEAR $L$avx +ALIGN 32 +$L$avx: + mov rax,rsp + + push rbx + + push rbp + + lea rsp,[((-168))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[(-120)+rax],xmm10 + movaps XMMWORD[(-104)+rax],xmm11 + movaps XMMWORD[(-88)+rax],xmm12 + movaps XMMWORD[(-72)+rax],xmm13 + movaps XMMWORD[(-56)+rax],xmm14 + movaps XMMWORD[(-40)+rax],xmm15 + sub rsp,288 + and rsp,-256 + mov QWORD[272+rsp],rax + +$L$body_avx: + lea rbp,[K_XX_XX] + lea rbx,[256+rsp] + + vzeroupper +$L$oop_grande_avx: + mov DWORD[280+rsp],edx + xor edx,edx + mov r8,QWORD[rsi] + mov ecx,DWORD[8+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[rbx],ecx + cmovle r8,rbp + mov r9,QWORD[16+rsi] + mov ecx,DWORD[24+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[4+rbx],ecx + cmovle r9,rbp + mov r10,QWORD[32+rsi] + mov ecx,DWORD[40+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[8+rbx],ecx + cmovle r10,rbp + mov r11,QWORD[48+rsi] + mov ecx,DWORD[56+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[12+rbx],ecx + cmovle r11,rbp + test edx,edx + jz NEAR $L$done_avx + + vmovdqu xmm10,XMMWORD[rdi] + lea rax,[128+rsp] + vmovdqu xmm11,XMMWORD[32+rdi] + vmovdqu xmm12,XMMWORD[64+rdi] + vmovdqu xmm13,XMMWORD[96+rdi] + vmovdqu xmm14,XMMWORD[128+rdi] + vmovdqu xmm5,XMMWORD[96+rbp] + jmp NEAR $L$oop_avx + +ALIGN 32 +$L$oop_avx: + vmovdqa xmm15,XMMWORD[((-32))+rbp] + vmovd xmm0,DWORD[r8] + lea r8,[64+r8] + vmovd xmm2,DWORD[r9] + lea r9,[64+r9] + vpinsrd xmm0,xmm0,DWORD[r10],1 + lea r10,[64+r10] + vpinsrd xmm2,xmm2,DWORD[r11],1 + lea r11,[64+r11] + vmovd xmm1,DWORD[((-60))+r8] + vpunpckldq xmm0,xmm0,xmm2 + vmovd xmm9,DWORD[((-60))+r9] + vpshufb xmm0,xmm0,xmm5 + vpinsrd xmm1,xmm1,DWORD[((-60))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-60))+r11],1 + vpaddd xmm14,xmm14,xmm15 + vpslld xmm8,xmm10,5 + vpandn xmm7,xmm11,xmm13 + vpand xmm6,xmm11,xmm12 + + vmovdqa XMMWORD[(0-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpunpckldq xmm1,xmm1,xmm9 + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm2,DWORD[((-56))+r8] + + vpslld xmm7,xmm11,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-56))+r9] + vpaddd xmm14,xmm14,xmm6 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpshufb xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpinsrd xmm2,xmm2,DWORD[((-56))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-56))+r11],1 + vpaddd xmm13,xmm13,xmm15 + vpslld xmm8,xmm14,5 + vpandn xmm7,xmm10,xmm12 + vpand xmm6,xmm10,xmm11 + + vmovdqa XMMWORD[(16-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpunpckldq xmm2,xmm2,xmm9 + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm3,DWORD[((-52))+r8] + + vpslld xmm7,xmm10,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-52))+r9] + vpaddd xmm13,xmm13,xmm6 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpshufb xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpinsrd xmm3,xmm3,DWORD[((-52))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-52))+r11],1 + vpaddd xmm12,xmm12,xmm15 + vpslld xmm8,xmm13,5 + vpandn xmm7,xmm14,xmm11 + vpand xmm6,xmm14,xmm10 + + vmovdqa XMMWORD[(32-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpunpckldq xmm3,xmm3,xmm9 + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm4,DWORD[((-48))+r8] + + vpslld xmm7,xmm14,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-48))+r9] + vpaddd xmm12,xmm12,xmm6 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpshufb xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpinsrd xmm4,xmm4,DWORD[((-48))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-48))+r11],1 + vpaddd xmm11,xmm11,xmm15 + vpslld xmm8,xmm12,5 + vpandn xmm7,xmm13,xmm10 + vpand xmm6,xmm13,xmm14 + + vmovdqa XMMWORD[(48-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpunpckldq xmm4,xmm4,xmm9 + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm0,DWORD[((-44))+r8] + + vpslld xmm7,xmm13,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-44))+r9] + vpaddd xmm11,xmm11,xmm6 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpshufb xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpinsrd xmm0,xmm0,DWORD[((-44))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-44))+r11],1 + vpaddd xmm10,xmm10,xmm15 + vpslld xmm8,xmm11,5 + vpandn xmm7,xmm12,xmm14 + vpand xmm6,xmm12,xmm13 + + vmovdqa XMMWORD[(64-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpunpckldq xmm0,xmm0,xmm9 + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm1,DWORD[((-40))+r8] + + vpslld xmm7,xmm12,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-40))+r9] + vpaddd xmm10,xmm10,xmm6 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpshufb xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vpinsrd xmm1,xmm1,DWORD[((-40))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-40))+r11],1 + vpaddd xmm14,xmm14,xmm15 + vpslld xmm8,xmm10,5 + vpandn xmm7,xmm11,xmm13 + vpand xmm6,xmm11,xmm12 + + vmovdqa XMMWORD[(80-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpunpckldq xmm1,xmm1,xmm9 + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm2,DWORD[((-36))+r8] + + vpslld xmm7,xmm11,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-36))+r9] + vpaddd xmm14,xmm14,xmm6 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpshufb xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpinsrd xmm2,xmm2,DWORD[((-36))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-36))+r11],1 + vpaddd xmm13,xmm13,xmm15 + vpslld xmm8,xmm14,5 + vpandn xmm7,xmm10,xmm12 + vpand xmm6,xmm10,xmm11 + + vmovdqa XMMWORD[(96-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpunpckldq xmm2,xmm2,xmm9 + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm3,DWORD[((-32))+r8] + + vpslld xmm7,xmm10,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-32))+r9] + vpaddd xmm13,xmm13,xmm6 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpshufb xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpinsrd xmm3,xmm3,DWORD[((-32))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-32))+r11],1 + vpaddd xmm12,xmm12,xmm15 + vpslld xmm8,xmm13,5 + vpandn xmm7,xmm14,xmm11 + vpand xmm6,xmm14,xmm10 + + vmovdqa XMMWORD[(112-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpunpckldq xmm3,xmm3,xmm9 + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm4,DWORD[((-28))+r8] + + vpslld xmm7,xmm14,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-28))+r9] + vpaddd xmm12,xmm12,xmm6 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpshufb xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpinsrd xmm4,xmm4,DWORD[((-28))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-28))+r11],1 + vpaddd xmm11,xmm11,xmm15 + vpslld xmm8,xmm12,5 + vpandn xmm7,xmm13,xmm10 + vpand xmm6,xmm13,xmm14 + + vmovdqa XMMWORD[(128-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpunpckldq xmm4,xmm4,xmm9 + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm0,DWORD[((-24))+r8] + + vpslld xmm7,xmm13,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-24))+r9] + vpaddd xmm11,xmm11,xmm6 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpshufb xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpinsrd xmm0,xmm0,DWORD[((-24))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-24))+r11],1 + vpaddd xmm10,xmm10,xmm15 + vpslld xmm8,xmm11,5 + vpandn xmm7,xmm12,xmm14 + vpand xmm6,xmm12,xmm13 + + vmovdqa XMMWORD[(144-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpunpckldq xmm0,xmm0,xmm9 + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm1,DWORD[((-20))+r8] + + vpslld xmm7,xmm12,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-20))+r9] + vpaddd xmm10,xmm10,xmm6 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpshufb xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vpinsrd xmm1,xmm1,DWORD[((-20))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-20))+r11],1 + vpaddd xmm14,xmm14,xmm15 + vpslld xmm8,xmm10,5 + vpandn xmm7,xmm11,xmm13 + vpand xmm6,xmm11,xmm12 + + vmovdqa XMMWORD[(160-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpunpckldq xmm1,xmm1,xmm9 + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm2,DWORD[((-16))+r8] + + vpslld xmm7,xmm11,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-16))+r9] + vpaddd xmm14,xmm14,xmm6 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpshufb xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpinsrd xmm2,xmm2,DWORD[((-16))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-16))+r11],1 + vpaddd xmm13,xmm13,xmm15 + vpslld xmm8,xmm14,5 + vpandn xmm7,xmm10,xmm12 + vpand xmm6,xmm10,xmm11 + + vmovdqa XMMWORD[(176-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpunpckldq xmm2,xmm2,xmm9 + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm3,DWORD[((-12))+r8] + + vpslld xmm7,xmm10,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-12))+r9] + vpaddd xmm13,xmm13,xmm6 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpshufb xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpinsrd xmm3,xmm3,DWORD[((-12))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-12))+r11],1 + vpaddd xmm12,xmm12,xmm15 + vpslld xmm8,xmm13,5 + vpandn xmm7,xmm14,xmm11 + vpand xmm6,xmm14,xmm10 + + vmovdqa XMMWORD[(192-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpunpckldq xmm3,xmm3,xmm9 + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm4,DWORD[((-8))+r8] + + vpslld xmm7,xmm14,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-8))+r9] + vpaddd xmm12,xmm12,xmm6 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpshufb xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpinsrd xmm4,xmm4,DWORD[((-8))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-8))+r11],1 + vpaddd xmm11,xmm11,xmm15 + vpslld xmm8,xmm12,5 + vpandn xmm7,xmm13,xmm10 + vpand xmm6,xmm13,xmm14 + + vmovdqa XMMWORD[(208-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpunpckldq xmm4,xmm4,xmm9 + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm6,xmm7 + vmovd xmm0,DWORD[((-4))+r8] + + vpslld xmm7,xmm13,30 + vpor xmm8,xmm8,xmm9 + vmovd xmm9,DWORD[((-4))+r9] + vpaddd xmm11,xmm11,xmm6 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpshufb xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vmovdqa xmm1,XMMWORD[((0-128))+rax] + vpinsrd xmm0,xmm0,DWORD[((-4))+r10],1 + vpinsrd xmm9,xmm9,DWORD[((-4))+r11],1 + vpaddd xmm10,xmm10,xmm15 + prefetcht0 [63+r8] + vpslld xmm8,xmm11,5 + vpandn xmm7,xmm12,xmm14 + vpand xmm6,xmm12,xmm13 + + vmovdqa XMMWORD[(224-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpunpckldq xmm0,xmm0,xmm9 + vpsrld xmm9,xmm11,27 + prefetcht0 [63+r9] + vpxor xmm6,xmm6,xmm7 + + vpslld xmm7,xmm12,30 + vpor xmm8,xmm8,xmm9 + prefetcht0 [63+r10] + vpaddd xmm10,xmm10,xmm6 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + prefetcht0 [63+r11] + vpshufb xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vmovdqa xmm2,XMMWORD[((16-128))+rax] + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((32-128))+rax] + + vpaddd xmm14,xmm14,xmm15 + vpslld xmm8,xmm10,5 + vpandn xmm7,xmm11,xmm13 + + vpand xmm6,xmm11,xmm12 + + vmovdqa XMMWORD[(240-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpxor xmm1,xmm1,XMMWORD[((128-128))+rax] + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm6,xmm7 + vpxor xmm1,xmm1,xmm3 + + + vpslld xmm7,xmm11,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm14,xmm14,xmm6 + + vpsrld xmm5,xmm1,31 + vpaddd xmm1,xmm1,xmm1 + + vpsrld xmm11,xmm11,2 + + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((48-128))+rax] + + vpaddd xmm13,xmm13,xmm15 + vpslld xmm8,xmm14,5 + vpandn xmm7,xmm10,xmm12 + + vpand xmm6,xmm10,xmm11 + + vmovdqa XMMWORD[(0-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpxor xmm2,xmm2,XMMWORD[((144-128))+rax] + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm6,xmm7 + vpxor xmm2,xmm2,xmm4 + + + vpslld xmm7,xmm10,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm13,xmm13,xmm6 + + vpsrld xmm5,xmm2,31 + vpaddd xmm2,xmm2,xmm2 + + vpsrld xmm10,xmm10,2 + + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((64-128))+rax] + + vpaddd xmm12,xmm12,xmm15 + vpslld xmm8,xmm13,5 + vpandn xmm7,xmm14,xmm11 + + vpand xmm6,xmm14,xmm10 + + vmovdqa XMMWORD[(16-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpxor xmm3,xmm3,XMMWORD[((160-128))+rax] + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm6,xmm7 + vpxor xmm3,xmm3,xmm0 + + + vpslld xmm7,xmm14,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm12,xmm12,xmm6 + + vpsrld xmm5,xmm3,31 + vpaddd xmm3,xmm3,xmm3 + + vpsrld xmm14,xmm14,2 + + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((80-128))+rax] + + vpaddd xmm11,xmm11,xmm15 + vpslld xmm8,xmm12,5 + vpandn xmm7,xmm13,xmm10 + + vpand xmm6,xmm13,xmm14 + + vmovdqa XMMWORD[(32-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpxor xmm4,xmm4,XMMWORD[((176-128))+rax] + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm6,xmm7 + vpxor xmm4,xmm4,xmm1 + + + vpslld xmm7,xmm13,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm11,xmm11,xmm6 + + vpsrld xmm5,xmm4,31 + vpaddd xmm4,xmm4,xmm4 + + vpsrld xmm13,xmm13,2 + + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpxor xmm0,xmm0,xmm2 + vmovdqa xmm2,XMMWORD[((96-128))+rax] + + vpaddd xmm10,xmm10,xmm15 + vpslld xmm8,xmm11,5 + vpandn xmm7,xmm12,xmm14 + + vpand xmm6,xmm12,xmm13 + + vmovdqa XMMWORD[(48-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpxor xmm0,xmm0,XMMWORD[((192-128))+rax] + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm6,xmm7 + vpxor xmm0,xmm0,xmm2 + + + vpslld xmm7,xmm12,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm10,xmm10,xmm6 + + vpsrld xmm5,xmm0,31 + vpaddd xmm0,xmm0,xmm0 + + vpsrld xmm12,xmm12,2 + + vpaddd xmm10,xmm10,xmm8 + vpor xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vmovdqa xmm15,XMMWORD[rbp] + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((112-128))+rax] + + vpslld xmm8,xmm10,5 + vpaddd xmm14,xmm14,xmm15 + vpxor xmm6,xmm13,xmm11 + vmovdqa XMMWORD[(64-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpxor xmm1,xmm1,XMMWORD[((208-128))+rax] + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm6,xmm12 + vpxor xmm1,xmm1,xmm3 + + vpslld xmm7,xmm11,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm14,xmm14,xmm6 + vpsrld xmm5,xmm1,31 + vpaddd xmm1,xmm1,xmm1 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((128-128))+rax] + + vpslld xmm8,xmm14,5 + vpaddd xmm13,xmm13,xmm15 + vpxor xmm6,xmm12,xmm10 + vmovdqa XMMWORD[(80-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpxor xmm2,xmm2,XMMWORD[((224-128))+rax] + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm6,xmm11 + vpxor xmm2,xmm2,xmm4 + + vpslld xmm7,xmm10,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm13,xmm13,xmm6 + vpsrld xmm5,xmm2,31 + vpaddd xmm2,xmm2,xmm2 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((144-128))+rax] + + vpslld xmm8,xmm13,5 + vpaddd xmm12,xmm12,xmm15 + vpxor xmm6,xmm11,xmm14 + vmovdqa XMMWORD[(96-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpxor xmm3,xmm3,XMMWORD[((240-128))+rax] + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm6,xmm10 + vpxor xmm3,xmm3,xmm0 + + vpslld xmm7,xmm14,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm12,xmm12,xmm6 + vpsrld xmm5,xmm3,31 + vpaddd xmm3,xmm3,xmm3 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((160-128))+rax] + + vpslld xmm8,xmm12,5 + vpaddd xmm11,xmm11,xmm15 + vpxor xmm6,xmm10,xmm13 + vmovdqa XMMWORD[(112-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpxor xmm4,xmm4,XMMWORD[((0-128))+rax] + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm6,xmm14 + vpxor xmm4,xmm4,xmm1 + + vpslld xmm7,xmm13,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm11,xmm11,xmm6 + vpsrld xmm5,xmm4,31 + vpaddd xmm4,xmm4,xmm4 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpxor xmm0,xmm0,xmm2 + vmovdqa xmm2,XMMWORD[((176-128))+rax] + + vpslld xmm8,xmm11,5 + vpaddd xmm10,xmm10,xmm15 + vpxor xmm6,xmm14,xmm12 + vmovdqa XMMWORD[(128-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpxor xmm0,xmm0,XMMWORD[((16-128))+rax] + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm6,xmm13 + vpxor xmm0,xmm0,xmm2 + + vpslld xmm7,xmm12,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm10,xmm10,xmm6 + vpsrld xmm5,xmm0,31 + vpaddd xmm0,xmm0,xmm0 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpor xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((192-128))+rax] + + vpslld xmm8,xmm10,5 + vpaddd xmm14,xmm14,xmm15 + vpxor xmm6,xmm13,xmm11 + vmovdqa XMMWORD[(144-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpxor xmm1,xmm1,XMMWORD[((32-128))+rax] + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm6,xmm12 + vpxor xmm1,xmm1,xmm3 + + vpslld xmm7,xmm11,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm14,xmm14,xmm6 + vpsrld xmm5,xmm1,31 + vpaddd xmm1,xmm1,xmm1 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((208-128))+rax] + + vpslld xmm8,xmm14,5 + vpaddd xmm13,xmm13,xmm15 + vpxor xmm6,xmm12,xmm10 + vmovdqa XMMWORD[(160-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpxor xmm2,xmm2,XMMWORD[((48-128))+rax] + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm6,xmm11 + vpxor xmm2,xmm2,xmm4 + + vpslld xmm7,xmm10,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm13,xmm13,xmm6 + vpsrld xmm5,xmm2,31 + vpaddd xmm2,xmm2,xmm2 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((224-128))+rax] + + vpslld xmm8,xmm13,5 + vpaddd xmm12,xmm12,xmm15 + vpxor xmm6,xmm11,xmm14 + vmovdqa XMMWORD[(176-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpxor xmm3,xmm3,XMMWORD[((64-128))+rax] + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm6,xmm10 + vpxor xmm3,xmm3,xmm0 + + vpslld xmm7,xmm14,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm12,xmm12,xmm6 + vpsrld xmm5,xmm3,31 + vpaddd xmm3,xmm3,xmm3 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((240-128))+rax] + + vpslld xmm8,xmm12,5 + vpaddd xmm11,xmm11,xmm15 + vpxor xmm6,xmm10,xmm13 + vmovdqa XMMWORD[(192-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpxor xmm4,xmm4,XMMWORD[((80-128))+rax] + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm6,xmm14 + vpxor xmm4,xmm4,xmm1 + + vpslld xmm7,xmm13,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm11,xmm11,xmm6 + vpsrld xmm5,xmm4,31 + vpaddd xmm4,xmm4,xmm4 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpxor xmm0,xmm0,xmm2 + vmovdqa xmm2,XMMWORD[((0-128))+rax] + + vpslld xmm8,xmm11,5 + vpaddd xmm10,xmm10,xmm15 + vpxor xmm6,xmm14,xmm12 + vmovdqa XMMWORD[(208-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpxor xmm0,xmm0,XMMWORD[((96-128))+rax] + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm6,xmm13 + vpxor xmm0,xmm0,xmm2 + + vpslld xmm7,xmm12,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm10,xmm10,xmm6 + vpsrld xmm5,xmm0,31 + vpaddd xmm0,xmm0,xmm0 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpor xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((16-128))+rax] + + vpslld xmm8,xmm10,5 + vpaddd xmm14,xmm14,xmm15 + vpxor xmm6,xmm13,xmm11 + vmovdqa XMMWORD[(224-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpxor xmm1,xmm1,XMMWORD[((112-128))+rax] + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm6,xmm12 + vpxor xmm1,xmm1,xmm3 + + vpslld xmm7,xmm11,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm14,xmm14,xmm6 + vpsrld xmm5,xmm1,31 + vpaddd xmm1,xmm1,xmm1 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((32-128))+rax] + + vpslld xmm8,xmm14,5 + vpaddd xmm13,xmm13,xmm15 + vpxor xmm6,xmm12,xmm10 + vmovdqa XMMWORD[(240-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpxor xmm2,xmm2,XMMWORD[((128-128))+rax] + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm6,xmm11 + vpxor xmm2,xmm2,xmm4 + + vpslld xmm7,xmm10,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm13,xmm13,xmm6 + vpsrld xmm5,xmm2,31 + vpaddd xmm2,xmm2,xmm2 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((48-128))+rax] + + vpslld xmm8,xmm13,5 + vpaddd xmm12,xmm12,xmm15 + vpxor xmm6,xmm11,xmm14 + vmovdqa XMMWORD[(0-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpxor xmm3,xmm3,XMMWORD[((144-128))+rax] + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm6,xmm10 + vpxor xmm3,xmm3,xmm0 + + vpslld xmm7,xmm14,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm12,xmm12,xmm6 + vpsrld xmm5,xmm3,31 + vpaddd xmm3,xmm3,xmm3 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((64-128))+rax] + + vpslld xmm8,xmm12,5 + vpaddd xmm11,xmm11,xmm15 + vpxor xmm6,xmm10,xmm13 + vmovdqa XMMWORD[(16-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpxor xmm4,xmm4,XMMWORD[((160-128))+rax] + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm6,xmm14 + vpxor xmm4,xmm4,xmm1 + + vpslld xmm7,xmm13,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm11,xmm11,xmm6 + vpsrld xmm5,xmm4,31 + vpaddd xmm4,xmm4,xmm4 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpxor xmm0,xmm0,xmm2 + vmovdqa xmm2,XMMWORD[((80-128))+rax] + + vpslld xmm8,xmm11,5 + vpaddd xmm10,xmm10,xmm15 + vpxor xmm6,xmm14,xmm12 + vmovdqa XMMWORD[(32-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpxor xmm0,xmm0,XMMWORD[((176-128))+rax] + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm6,xmm13 + vpxor xmm0,xmm0,xmm2 + + vpslld xmm7,xmm12,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm10,xmm10,xmm6 + vpsrld xmm5,xmm0,31 + vpaddd xmm0,xmm0,xmm0 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpor xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((96-128))+rax] + + vpslld xmm8,xmm10,5 + vpaddd xmm14,xmm14,xmm15 + vpxor xmm6,xmm13,xmm11 + vmovdqa XMMWORD[(48-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpxor xmm1,xmm1,XMMWORD[((192-128))+rax] + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm6,xmm12 + vpxor xmm1,xmm1,xmm3 + + vpslld xmm7,xmm11,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm14,xmm14,xmm6 + vpsrld xmm5,xmm1,31 + vpaddd xmm1,xmm1,xmm1 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((112-128))+rax] + + vpslld xmm8,xmm14,5 + vpaddd xmm13,xmm13,xmm15 + vpxor xmm6,xmm12,xmm10 + vmovdqa XMMWORD[(64-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpxor xmm2,xmm2,XMMWORD[((208-128))+rax] + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm6,xmm11 + vpxor xmm2,xmm2,xmm4 + + vpslld xmm7,xmm10,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm13,xmm13,xmm6 + vpsrld xmm5,xmm2,31 + vpaddd xmm2,xmm2,xmm2 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((128-128))+rax] + + vpslld xmm8,xmm13,5 + vpaddd xmm12,xmm12,xmm15 + vpxor xmm6,xmm11,xmm14 + vmovdqa XMMWORD[(80-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpxor xmm3,xmm3,XMMWORD[((224-128))+rax] + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm6,xmm10 + vpxor xmm3,xmm3,xmm0 + + vpslld xmm7,xmm14,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm12,xmm12,xmm6 + vpsrld xmm5,xmm3,31 + vpaddd xmm3,xmm3,xmm3 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((144-128))+rax] + + vpslld xmm8,xmm12,5 + vpaddd xmm11,xmm11,xmm15 + vpxor xmm6,xmm10,xmm13 + vmovdqa XMMWORD[(96-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpxor xmm4,xmm4,XMMWORD[((240-128))+rax] + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm6,xmm14 + vpxor xmm4,xmm4,xmm1 + + vpslld xmm7,xmm13,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm11,xmm11,xmm6 + vpsrld xmm5,xmm4,31 + vpaddd xmm4,xmm4,xmm4 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpxor xmm0,xmm0,xmm2 + vmovdqa xmm2,XMMWORD[((160-128))+rax] + + vpslld xmm8,xmm11,5 + vpaddd xmm10,xmm10,xmm15 + vpxor xmm6,xmm14,xmm12 + vmovdqa XMMWORD[(112-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpxor xmm0,xmm0,XMMWORD[((0-128))+rax] + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm6,xmm13 + vpxor xmm0,xmm0,xmm2 + + vpslld xmm7,xmm12,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm10,xmm10,xmm6 + vpsrld xmm5,xmm0,31 + vpaddd xmm0,xmm0,xmm0 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpor xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vmovdqa xmm15,XMMWORD[32+rbp] + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((176-128))+rax] + + vpaddd xmm14,xmm14,xmm15 + vpslld xmm8,xmm10,5 + vpand xmm7,xmm13,xmm12 + vpxor xmm1,xmm1,XMMWORD[((16-128))+rax] + + vpaddd xmm14,xmm14,xmm7 + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm13,xmm12 + vpxor xmm1,xmm1,xmm3 + + vmovdqu XMMWORD[(128-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm1,31 + vpand xmm6,xmm6,xmm11 + vpaddd xmm1,xmm1,xmm1 + + vpslld xmm7,xmm11,30 + vpaddd xmm14,xmm14,xmm6 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((192-128))+rax] + + vpaddd xmm13,xmm13,xmm15 + vpslld xmm8,xmm14,5 + vpand xmm7,xmm12,xmm11 + vpxor xmm2,xmm2,XMMWORD[((32-128))+rax] + + vpaddd xmm13,xmm13,xmm7 + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm12,xmm11 + vpxor xmm2,xmm2,xmm4 + + vmovdqu XMMWORD[(144-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm2,31 + vpand xmm6,xmm6,xmm10 + vpaddd xmm2,xmm2,xmm2 + + vpslld xmm7,xmm10,30 + vpaddd xmm13,xmm13,xmm6 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((208-128))+rax] + + vpaddd xmm12,xmm12,xmm15 + vpslld xmm8,xmm13,5 + vpand xmm7,xmm11,xmm10 + vpxor xmm3,xmm3,XMMWORD[((48-128))+rax] + + vpaddd xmm12,xmm12,xmm7 + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm11,xmm10 + vpxor xmm3,xmm3,xmm0 + + vmovdqu XMMWORD[(160-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm3,31 + vpand xmm6,xmm6,xmm14 + vpaddd xmm3,xmm3,xmm3 + + vpslld xmm7,xmm14,30 + vpaddd xmm12,xmm12,xmm6 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((224-128))+rax] + + vpaddd xmm11,xmm11,xmm15 + vpslld xmm8,xmm12,5 + vpand xmm7,xmm10,xmm14 + vpxor xmm4,xmm4,XMMWORD[((64-128))+rax] + + vpaddd xmm11,xmm11,xmm7 + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm10,xmm14 + vpxor xmm4,xmm4,xmm1 + + vmovdqu XMMWORD[(176-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm4,31 + vpand xmm6,xmm6,xmm13 + vpaddd xmm4,xmm4,xmm4 + + vpslld xmm7,xmm13,30 + vpaddd xmm11,xmm11,xmm6 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpxor xmm0,xmm0,xmm2 + vmovdqa xmm2,XMMWORD[((240-128))+rax] + + vpaddd xmm10,xmm10,xmm15 + vpslld xmm8,xmm11,5 + vpand xmm7,xmm14,xmm13 + vpxor xmm0,xmm0,XMMWORD[((80-128))+rax] + + vpaddd xmm10,xmm10,xmm7 + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm14,xmm13 + vpxor xmm0,xmm0,xmm2 + + vmovdqu XMMWORD[(192-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm0,31 + vpand xmm6,xmm6,xmm12 + vpaddd xmm0,xmm0,xmm0 + + vpslld xmm7,xmm12,30 + vpaddd xmm10,xmm10,xmm6 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpor xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((0-128))+rax] + + vpaddd xmm14,xmm14,xmm15 + vpslld xmm8,xmm10,5 + vpand xmm7,xmm13,xmm12 + vpxor xmm1,xmm1,XMMWORD[((96-128))+rax] + + vpaddd xmm14,xmm14,xmm7 + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm13,xmm12 + vpxor xmm1,xmm1,xmm3 + + vmovdqu XMMWORD[(208-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm1,31 + vpand xmm6,xmm6,xmm11 + vpaddd xmm1,xmm1,xmm1 + + vpslld xmm7,xmm11,30 + vpaddd xmm14,xmm14,xmm6 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((16-128))+rax] + + vpaddd xmm13,xmm13,xmm15 + vpslld xmm8,xmm14,5 + vpand xmm7,xmm12,xmm11 + vpxor xmm2,xmm2,XMMWORD[((112-128))+rax] + + vpaddd xmm13,xmm13,xmm7 + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm12,xmm11 + vpxor xmm2,xmm2,xmm4 + + vmovdqu XMMWORD[(224-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm2,31 + vpand xmm6,xmm6,xmm10 + vpaddd xmm2,xmm2,xmm2 + + vpslld xmm7,xmm10,30 + vpaddd xmm13,xmm13,xmm6 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((32-128))+rax] + + vpaddd xmm12,xmm12,xmm15 + vpslld xmm8,xmm13,5 + vpand xmm7,xmm11,xmm10 + vpxor xmm3,xmm3,XMMWORD[((128-128))+rax] + + vpaddd xmm12,xmm12,xmm7 + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm11,xmm10 + vpxor xmm3,xmm3,xmm0 + + vmovdqu XMMWORD[(240-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm3,31 + vpand xmm6,xmm6,xmm14 + vpaddd xmm3,xmm3,xmm3 + + vpslld xmm7,xmm14,30 + vpaddd xmm12,xmm12,xmm6 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((48-128))+rax] + + vpaddd xmm11,xmm11,xmm15 + vpslld xmm8,xmm12,5 + vpand xmm7,xmm10,xmm14 + vpxor xmm4,xmm4,XMMWORD[((144-128))+rax] + + vpaddd xmm11,xmm11,xmm7 + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm10,xmm14 + vpxor xmm4,xmm4,xmm1 + + vmovdqu XMMWORD[(0-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm4,31 + vpand xmm6,xmm6,xmm13 + vpaddd xmm4,xmm4,xmm4 + + vpslld xmm7,xmm13,30 + vpaddd xmm11,xmm11,xmm6 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpxor xmm0,xmm0,xmm2 + vmovdqa xmm2,XMMWORD[((64-128))+rax] + + vpaddd xmm10,xmm10,xmm15 + vpslld xmm8,xmm11,5 + vpand xmm7,xmm14,xmm13 + vpxor xmm0,xmm0,XMMWORD[((160-128))+rax] + + vpaddd xmm10,xmm10,xmm7 + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm14,xmm13 + vpxor xmm0,xmm0,xmm2 + + vmovdqu XMMWORD[(16-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm0,31 + vpand xmm6,xmm6,xmm12 + vpaddd xmm0,xmm0,xmm0 + + vpslld xmm7,xmm12,30 + vpaddd xmm10,xmm10,xmm6 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpor xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((80-128))+rax] + + vpaddd xmm14,xmm14,xmm15 + vpslld xmm8,xmm10,5 + vpand xmm7,xmm13,xmm12 + vpxor xmm1,xmm1,XMMWORD[((176-128))+rax] + + vpaddd xmm14,xmm14,xmm7 + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm13,xmm12 + vpxor xmm1,xmm1,xmm3 + + vmovdqu XMMWORD[(32-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm1,31 + vpand xmm6,xmm6,xmm11 + vpaddd xmm1,xmm1,xmm1 + + vpslld xmm7,xmm11,30 + vpaddd xmm14,xmm14,xmm6 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((96-128))+rax] + + vpaddd xmm13,xmm13,xmm15 + vpslld xmm8,xmm14,5 + vpand xmm7,xmm12,xmm11 + vpxor xmm2,xmm2,XMMWORD[((192-128))+rax] + + vpaddd xmm13,xmm13,xmm7 + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm12,xmm11 + vpxor xmm2,xmm2,xmm4 + + vmovdqu XMMWORD[(48-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm2,31 + vpand xmm6,xmm6,xmm10 + vpaddd xmm2,xmm2,xmm2 + + vpslld xmm7,xmm10,30 + vpaddd xmm13,xmm13,xmm6 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((112-128))+rax] + + vpaddd xmm12,xmm12,xmm15 + vpslld xmm8,xmm13,5 + vpand xmm7,xmm11,xmm10 + vpxor xmm3,xmm3,XMMWORD[((208-128))+rax] + + vpaddd xmm12,xmm12,xmm7 + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm11,xmm10 + vpxor xmm3,xmm3,xmm0 + + vmovdqu XMMWORD[(64-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm3,31 + vpand xmm6,xmm6,xmm14 + vpaddd xmm3,xmm3,xmm3 + + vpslld xmm7,xmm14,30 + vpaddd xmm12,xmm12,xmm6 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((128-128))+rax] + + vpaddd xmm11,xmm11,xmm15 + vpslld xmm8,xmm12,5 + vpand xmm7,xmm10,xmm14 + vpxor xmm4,xmm4,XMMWORD[((224-128))+rax] + + vpaddd xmm11,xmm11,xmm7 + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm10,xmm14 + vpxor xmm4,xmm4,xmm1 + + vmovdqu XMMWORD[(80-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm4,31 + vpand xmm6,xmm6,xmm13 + vpaddd xmm4,xmm4,xmm4 + + vpslld xmm7,xmm13,30 + vpaddd xmm11,xmm11,xmm6 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpxor xmm0,xmm0,xmm2 + vmovdqa xmm2,XMMWORD[((144-128))+rax] + + vpaddd xmm10,xmm10,xmm15 + vpslld xmm8,xmm11,5 + vpand xmm7,xmm14,xmm13 + vpxor xmm0,xmm0,XMMWORD[((240-128))+rax] + + vpaddd xmm10,xmm10,xmm7 + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm14,xmm13 + vpxor xmm0,xmm0,xmm2 + + vmovdqu XMMWORD[(96-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm0,31 + vpand xmm6,xmm6,xmm12 + vpaddd xmm0,xmm0,xmm0 + + vpslld xmm7,xmm12,30 + vpaddd xmm10,xmm10,xmm6 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpor xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((160-128))+rax] + + vpaddd xmm14,xmm14,xmm15 + vpslld xmm8,xmm10,5 + vpand xmm7,xmm13,xmm12 + vpxor xmm1,xmm1,XMMWORD[((0-128))+rax] + + vpaddd xmm14,xmm14,xmm7 + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm13,xmm12 + vpxor xmm1,xmm1,xmm3 + + vmovdqu XMMWORD[(112-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm1,31 + vpand xmm6,xmm6,xmm11 + vpaddd xmm1,xmm1,xmm1 + + vpslld xmm7,xmm11,30 + vpaddd xmm14,xmm14,xmm6 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((176-128))+rax] + + vpaddd xmm13,xmm13,xmm15 + vpslld xmm8,xmm14,5 + vpand xmm7,xmm12,xmm11 + vpxor xmm2,xmm2,XMMWORD[((16-128))+rax] + + vpaddd xmm13,xmm13,xmm7 + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm12,xmm11 + vpxor xmm2,xmm2,xmm4 + + vmovdqu XMMWORD[(128-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm2,31 + vpand xmm6,xmm6,xmm10 + vpaddd xmm2,xmm2,xmm2 + + vpslld xmm7,xmm10,30 + vpaddd xmm13,xmm13,xmm6 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((192-128))+rax] + + vpaddd xmm12,xmm12,xmm15 + vpslld xmm8,xmm13,5 + vpand xmm7,xmm11,xmm10 + vpxor xmm3,xmm3,XMMWORD[((32-128))+rax] + + vpaddd xmm12,xmm12,xmm7 + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm11,xmm10 + vpxor xmm3,xmm3,xmm0 + + vmovdqu XMMWORD[(144-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm3,31 + vpand xmm6,xmm6,xmm14 + vpaddd xmm3,xmm3,xmm3 + + vpslld xmm7,xmm14,30 + vpaddd xmm12,xmm12,xmm6 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((208-128))+rax] + + vpaddd xmm11,xmm11,xmm15 + vpslld xmm8,xmm12,5 + vpand xmm7,xmm10,xmm14 + vpxor xmm4,xmm4,XMMWORD[((48-128))+rax] + + vpaddd xmm11,xmm11,xmm7 + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm10,xmm14 + vpxor xmm4,xmm4,xmm1 + + vmovdqu XMMWORD[(160-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm4,31 + vpand xmm6,xmm6,xmm13 + vpaddd xmm4,xmm4,xmm4 + + vpslld xmm7,xmm13,30 + vpaddd xmm11,xmm11,xmm6 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpxor xmm0,xmm0,xmm2 + vmovdqa xmm2,XMMWORD[((224-128))+rax] + + vpaddd xmm10,xmm10,xmm15 + vpslld xmm8,xmm11,5 + vpand xmm7,xmm14,xmm13 + vpxor xmm0,xmm0,XMMWORD[((64-128))+rax] + + vpaddd xmm10,xmm10,xmm7 + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm14,xmm13 + vpxor xmm0,xmm0,xmm2 + + vmovdqu XMMWORD[(176-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpor xmm8,xmm8,xmm9 + vpsrld xmm5,xmm0,31 + vpand xmm6,xmm6,xmm12 + vpaddd xmm0,xmm0,xmm0 + + vpslld xmm7,xmm12,30 + vpaddd xmm10,xmm10,xmm6 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpor xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vmovdqa xmm15,XMMWORD[64+rbp] + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((240-128))+rax] + + vpslld xmm8,xmm10,5 + vpaddd xmm14,xmm14,xmm15 + vpxor xmm6,xmm13,xmm11 + vmovdqa XMMWORD[(192-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpxor xmm1,xmm1,XMMWORD[((80-128))+rax] + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm6,xmm12 + vpxor xmm1,xmm1,xmm3 + + vpslld xmm7,xmm11,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm14,xmm14,xmm6 + vpsrld xmm5,xmm1,31 + vpaddd xmm1,xmm1,xmm1 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((0-128))+rax] + + vpslld xmm8,xmm14,5 + vpaddd xmm13,xmm13,xmm15 + vpxor xmm6,xmm12,xmm10 + vmovdqa XMMWORD[(208-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpxor xmm2,xmm2,XMMWORD[((96-128))+rax] + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm6,xmm11 + vpxor xmm2,xmm2,xmm4 + + vpslld xmm7,xmm10,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm13,xmm13,xmm6 + vpsrld xmm5,xmm2,31 + vpaddd xmm2,xmm2,xmm2 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((16-128))+rax] + + vpslld xmm8,xmm13,5 + vpaddd xmm12,xmm12,xmm15 + vpxor xmm6,xmm11,xmm14 + vmovdqa XMMWORD[(224-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpxor xmm3,xmm3,XMMWORD[((112-128))+rax] + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm6,xmm10 + vpxor xmm3,xmm3,xmm0 + + vpslld xmm7,xmm14,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm12,xmm12,xmm6 + vpsrld xmm5,xmm3,31 + vpaddd xmm3,xmm3,xmm3 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((32-128))+rax] + + vpslld xmm8,xmm12,5 + vpaddd xmm11,xmm11,xmm15 + vpxor xmm6,xmm10,xmm13 + vmovdqa XMMWORD[(240-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpxor xmm4,xmm4,XMMWORD[((128-128))+rax] + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm6,xmm14 + vpxor xmm4,xmm4,xmm1 + + vpslld xmm7,xmm13,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm11,xmm11,xmm6 + vpsrld xmm5,xmm4,31 + vpaddd xmm4,xmm4,xmm4 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpxor xmm0,xmm0,xmm2 + vmovdqa xmm2,XMMWORD[((48-128))+rax] + + vpslld xmm8,xmm11,5 + vpaddd xmm10,xmm10,xmm15 + vpxor xmm6,xmm14,xmm12 + vmovdqa XMMWORD[(0-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpxor xmm0,xmm0,XMMWORD[((144-128))+rax] + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm6,xmm13 + vpxor xmm0,xmm0,xmm2 + + vpslld xmm7,xmm12,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm10,xmm10,xmm6 + vpsrld xmm5,xmm0,31 + vpaddd xmm0,xmm0,xmm0 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpor xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((64-128))+rax] + + vpslld xmm8,xmm10,5 + vpaddd xmm14,xmm14,xmm15 + vpxor xmm6,xmm13,xmm11 + vmovdqa XMMWORD[(16-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpxor xmm1,xmm1,XMMWORD[((160-128))+rax] + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm6,xmm12 + vpxor xmm1,xmm1,xmm3 + + vpslld xmm7,xmm11,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm14,xmm14,xmm6 + vpsrld xmm5,xmm1,31 + vpaddd xmm1,xmm1,xmm1 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((80-128))+rax] + + vpslld xmm8,xmm14,5 + vpaddd xmm13,xmm13,xmm15 + vpxor xmm6,xmm12,xmm10 + vmovdqa XMMWORD[(32-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpxor xmm2,xmm2,XMMWORD[((176-128))+rax] + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm6,xmm11 + vpxor xmm2,xmm2,xmm4 + + vpslld xmm7,xmm10,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm13,xmm13,xmm6 + vpsrld xmm5,xmm2,31 + vpaddd xmm2,xmm2,xmm2 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((96-128))+rax] + + vpslld xmm8,xmm13,5 + vpaddd xmm12,xmm12,xmm15 + vpxor xmm6,xmm11,xmm14 + vmovdqa XMMWORD[(48-128)+rax],xmm2 + vpaddd xmm12,xmm12,xmm2 + vpxor xmm3,xmm3,XMMWORD[((192-128))+rax] + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm6,xmm10 + vpxor xmm3,xmm3,xmm0 + + vpslld xmm7,xmm14,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm12,xmm12,xmm6 + vpsrld xmm5,xmm3,31 + vpaddd xmm3,xmm3,xmm3 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((112-128))+rax] + + vpslld xmm8,xmm12,5 + vpaddd xmm11,xmm11,xmm15 + vpxor xmm6,xmm10,xmm13 + vmovdqa XMMWORD[(64-128)+rax],xmm3 + vpaddd xmm11,xmm11,xmm3 + vpxor xmm4,xmm4,XMMWORD[((208-128))+rax] + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm6,xmm14 + vpxor xmm4,xmm4,xmm1 + + vpslld xmm7,xmm13,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm11,xmm11,xmm6 + vpsrld xmm5,xmm4,31 + vpaddd xmm4,xmm4,xmm4 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpxor xmm0,xmm0,xmm2 + vmovdqa xmm2,XMMWORD[((128-128))+rax] + + vpslld xmm8,xmm11,5 + vpaddd xmm10,xmm10,xmm15 + vpxor xmm6,xmm14,xmm12 + vmovdqa XMMWORD[(80-128)+rax],xmm4 + vpaddd xmm10,xmm10,xmm4 + vpxor xmm0,xmm0,XMMWORD[((224-128))+rax] + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm6,xmm13 + vpxor xmm0,xmm0,xmm2 + + vpslld xmm7,xmm12,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm10,xmm10,xmm6 + vpsrld xmm5,xmm0,31 + vpaddd xmm0,xmm0,xmm0 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpor xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((144-128))+rax] + + vpslld xmm8,xmm10,5 + vpaddd xmm14,xmm14,xmm15 + vpxor xmm6,xmm13,xmm11 + vmovdqa XMMWORD[(96-128)+rax],xmm0 + vpaddd xmm14,xmm14,xmm0 + vpxor xmm1,xmm1,XMMWORD[((240-128))+rax] + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm6,xmm12 + vpxor xmm1,xmm1,xmm3 + + vpslld xmm7,xmm11,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm14,xmm14,xmm6 + vpsrld xmm5,xmm1,31 + vpaddd xmm1,xmm1,xmm1 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((160-128))+rax] + + vpslld xmm8,xmm14,5 + vpaddd xmm13,xmm13,xmm15 + vpxor xmm6,xmm12,xmm10 + vmovdqa XMMWORD[(112-128)+rax],xmm1 + vpaddd xmm13,xmm13,xmm1 + vpxor xmm2,xmm2,XMMWORD[((0-128))+rax] + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm6,xmm11 + vpxor xmm2,xmm2,xmm4 + + vpslld xmm7,xmm10,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm13,xmm13,xmm6 + vpsrld xmm5,xmm2,31 + vpaddd xmm2,xmm2,xmm2 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((176-128))+rax] + + vpslld xmm8,xmm13,5 + vpaddd xmm12,xmm12,xmm15 + vpxor xmm6,xmm11,xmm14 + vpaddd xmm12,xmm12,xmm2 + vpxor xmm3,xmm3,XMMWORD[((16-128))+rax] + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm6,xmm10 + vpxor xmm3,xmm3,xmm0 + + vpslld xmm7,xmm14,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm12,xmm12,xmm6 + vpsrld xmm5,xmm3,31 + vpaddd xmm3,xmm3,xmm3 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((192-128))+rax] + + vpslld xmm8,xmm12,5 + vpaddd xmm11,xmm11,xmm15 + vpxor xmm6,xmm10,xmm13 + vpaddd xmm11,xmm11,xmm3 + vpxor xmm4,xmm4,XMMWORD[((32-128))+rax] + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm6,xmm14 + vpxor xmm4,xmm4,xmm1 + + vpslld xmm7,xmm13,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm11,xmm11,xmm6 + vpsrld xmm5,xmm4,31 + vpaddd xmm4,xmm4,xmm4 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpxor xmm0,xmm0,xmm2 + vmovdqa xmm2,XMMWORD[((208-128))+rax] + + vpslld xmm8,xmm11,5 + vpaddd xmm10,xmm10,xmm15 + vpxor xmm6,xmm14,xmm12 + vpaddd xmm10,xmm10,xmm4 + vpxor xmm0,xmm0,XMMWORD[((48-128))+rax] + vpsrld xmm9,xmm11,27 + vpxor xmm6,xmm6,xmm13 + vpxor xmm0,xmm0,xmm2 + + vpslld xmm7,xmm12,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm10,xmm10,xmm6 + vpsrld xmm5,xmm0,31 + vpaddd xmm0,xmm0,xmm0 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpor xmm0,xmm0,xmm5 + vpor xmm12,xmm12,xmm7 + vpxor xmm1,xmm1,xmm3 + vmovdqa xmm3,XMMWORD[((224-128))+rax] + + vpslld xmm8,xmm10,5 + vpaddd xmm14,xmm14,xmm15 + vpxor xmm6,xmm13,xmm11 + vpaddd xmm14,xmm14,xmm0 + vpxor xmm1,xmm1,XMMWORD[((64-128))+rax] + vpsrld xmm9,xmm10,27 + vpxor xmm6,xmm6,xmm12 + vpxor xmm1,xmm1,xmm3 + + vpslld xmm7,xmm11,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm14,xmm14,xmm6 + vpsrld xmm5,xmm1,31 + vpaddd xmm1,xmm1,xmm1 + + vpsrld xmm11,xmm11,2 + vpaddd xmm14,xmm14,xmm8 + vpor xmm1,xmm1,xmm5 + vpor xmm11,xmm11,xmm7 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm4,XMMWORD[((240-128))+rax] + + vpslld xmm8,xmm14,5 + vpaddd xmm13,xmm13,xmm15 + vpxor xmm6,xmm12,xmm10 + vpaddd xmm13,xmm13,xmm1 + vpxor xmm2,xmm2,XMMWORD[((80-128))+rax] + vpsrld xmm9,xmm14,27 + vpxor xmm6,xmm6,xmm11 + vpxor xmm2,xmm2,xmm4 + + vpslld xmm7,xmm10,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm13,xmm13,xmm6 + vpsrld xmm5,xmm2,31 + vpaddd xmm2,xmm2,xmm2 + + vpsrld xmm10,xmm10,2 + vpaddd xmm13,xmm13,xmm8 + vpor xmm2,xmm2,xmm5 + vpor xmm10,xmm10,xmm7 + vpxor xmm3,xmm3,xmm0 + vmovdqa xmm0,XMMWORD[((0-128))+rax] + + vpslld xmm8,xmm13,5 + vpaddd xmm12,xmm12,xmm15 + vpxor xmm6,xmm11,xmm14 + vpaddd xmm12,xmm12,xmm2 + vpxor xmm3,xmm3,XMMWORD[((96-128))+rax] + vpsrld xmm9,xmm13,27 + vpxor xmm6,xmm6,xmm10 + vpxor xmm3,xmm3,xmm0 + + vpslld xmm7,xmm14,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm12,xmm12,xmm6 + vpsrld xmm5,xmm3,31 + vpaddd xmm3,xmm3,xmm3 + + vpsrld xmm14,xmm14,2 + vpaddd xmm12,xmm12,xmm8 + vpor xmm3,xmm3,xmm5 + vpor xmm14,xmm14,xmm7 + vpxor xmm4,xmm4,xmm1 + vmovdqa xmm1,XMMWORD[((16-128))+rax] + + vpslld xmm8,xmm12,5 + vpaddd xmm11,xmm11,xmm15 + vpxor xmm6,xmm10,xmm13 + vpaddd xmm11,xmm11,xmm3 + vpxor xmm4,xmm4,XMMWORD[((112-128))+rax] + vpsrld xmm9,xmm12,27 + vpxor xmm6,xmm6,xmm14 + vpxor xmm4,xmm4,xmm1 + + vpslld xmm7,xmm13,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm11,xmm11,xmm6 + vpsrld xmm5,xmm4,31 + vpaddd xmm4,xmm4,xmm4 + + vpsrld xmm13,xmm13,2 + vpaddd xmm11,xmm11,xmm8 + vpor xmm4,xmm4,xmm5 + vpor xmm13,xmm13,xmm7 + vpslld xmm8,xmm11,5 + vpaddd xmm10,xmm10,xmm15 + vpxor xmm6,xmm14,xmm12 + + vpsrld xmm9,xmm11,27 + vpaddd xmm10,xmm10,xmm4 + vpxor xmm6,xmm6,xmm13 + + vpslld xmm7,xmm12,30 + vpor xmm8,xmm8,xmm9 + vpaddd xmm10,xmm10,xmm6 + + vpsrld xmm12,xmm12,2 + vpaddd xmm10,xmm10,xmm8 + vpor xmm12,xmm12,xmm7 + mov ecx,1 + cmp ecx,DWORD[rbx] + cmovge r8,rbp + cmp ecx,DWORD[4+rbx] + cmovge r9,rbp + cmp ecx,DWORD[8+rbx] + cmovge r10,rbp + cmp ecx,DWORD[12+rbx] + cmovge r11,rbp + vmovdqu xmm6,XMMWORD[rbx] + vpxor xmm8,xmm8,xmm8 + vmovdqa xmm7,xmm6 + vpcmpgtd xmm7,xmm7,xmm8 + vpaddd xmm6,xmm6,xmm7 + + vpand xmm10,xmm10,xmm7 + vpand xmm11,xmm11,xmm7 + vpaddd xmm10,xmm10,XMMWORD[rdi] + vpand xmm12,xmm12,xmm7 + vpaddd xmm11,xmm11,XMMWORD[32+rdi] + vpand xmm13,xmm13,xmm7 + vpaddd xmm12,xmm12,XMMWORD[64+rdi] + vpand xmm14,xmm14,xmm7 + vpaddd xmm13,xmm13,XMMWORD[96+rdi] + vpaddd xmm14,xmm14,XMMWORD[128+rdi] + vmovdqu XMMWORD[rdi],xmm10 + vmovdqu XMMWORD[32+rdi],xmm11 + vmovdqu XMMWORD[64+rdi],xmm12 + vmovdqu XMMWORD[96+rdi],xmm13 + vmovdqu XMMWORD[128+rdi],xmm14 + + vmovdqu XMMWORD[rbx],xmm6 + vmovdqu xmm5,XMMWORD[96+rbp] + dec edx + jnz NEAR $L$oop_avx + + mov edx,DWORD[280+rsp] + lea rdi,[16+rdi] + lea rsi,[64+rsi] + dec edx + jnz NEAR $L$oop_grande_avx + +$L$done_avx: + mov rax,QWORD[272+rsp] + + vzeroupper + movaps xmm6,XMMWORD[((-184))+rax] + movaps xmm7,XMMWORD[((-168))+rax] + movaps xmm8,XMMWORD[((-152))+rax] + movaps xmm9,XMMWORD[((-136))+rax] + movaps xmm10,XMMWORD[((-120))+rax] + movaps xmm11,XMMWORD[((-104))+rax] + movaps xmm12,XMMWORD[((-88))+rax] + movaps xmm13,XMMWORD[((-72))+rax] + movaps xmm14,XMMWORD[((-56))+rax] + movaps xmm15,XMMWORD[((-40))+rax] + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$epilogue_avx: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha1_multi_block_avx: + +ALIGN 32 +sha1_multi_block_avx2: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha1_multi_block_avx2: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +_avx2_shortcut: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[64+rsp],xmm10 + movaps XMMWORD[80+rsp],xmm11 + movaps XMMWORD[(-120)+rax],xmm12 + movaps XMMWORD[(-104)+rax],xmm13 + movaps XMMWORD[(-88)+rax],xmm14 + movaps XMMWORD[(-72)+rax],xmm15 + sub rsp,576 + and rsp,-256 + mov QWORD[544+rsp],rax + +$L$body_avx2: + lea rbp,[K_XX_XX] + shr edx,1 + + vzeroupper +$L$oop_grande_avx2: + mov DWORD[552+rsp],edx + xor edx,edx + lea rbx,[512+rsp] + mov r12,QWORD[rsi] + mov ecx,DWORD[8+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[rbx],ecx + cmovle r12,rbp + mov r13,QWORD[16+rsi] + mov ecx,DWORD[24+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[4+rbx],ecx + cmovle r13,rbp + mov r14,QWORD[32+rsi] + mov ecx,DWORD[40+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[8+rbx],ecx + cmovle r14,rbp + mov r15,QWORD[48+rsi] + mov ecx,DWORD[56+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[12+rbx],ecx + cmovle r15,rbp + mov r8,QWORD[64+rsi] + mov ecx,DWORD[72+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[16+rbx],ecx + cmovle r8,rbp + mov r9,QWORD[80+rsi] + mov ecx,DWORD[88+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[20+rbx],ecx + cmovle r9,rbp + mov r10,QWORD[96+rsi] + mov ecx,DWORD[104+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[24+rbx],ecx + cmovle r10,rbp + mov r11,QWORD[112+rsi] + mov ecx,DWORD[120+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[28+rbx],ecx + cmovle r11,rbp + vmovdqu ymm0,YMMWORD[rdi] + lea rax,[128+rsp] + vmovdqu ymm1,YMMWORD[32+rdi] + lea rbx,[((256+128))+rsp] + vmovdqu ymm2,YMMWORD[64+rdi] + vmovdqu ymm3,YMMWORD[96+rdi] + vmovdqu ymm4,YMMWORD[128+rdi] + vmovdqu ymm9,YMMWORD[96+rbp] + jmp NEAR $L$oop_avx2 + +ALIGN 32 +$L$oop_avx2: + vmovdqa ymm15,YMMWORD[((-32))+rbp] + vmovd xmm10,DWORD[r12] + lea r12,[64+r12] + vmovd xmm12,DWORD[r8] + lea r8,[64+r8] + vmovd xmm7,DWORD[r13] + lea r13,[64+r13] + vmovd xmm6,DWORD[r9] + lea r9,[64+r9] + vpinsrd xmm10,xmm10,DWORD[r14],1 + lea r14,[64+r14] + vpinsrd xmm12,xmm12,DWORD[r10],1 + lea r10,[64+r10] + vpinsrd xmm7,xmm7,DWORD[r15],1 + lea r15,[64+r15] + vpunpckldq ymm10,ymm10,ymm7 + vpinsrd xmm6,xmm6,DWORD[r11],1 + lea r11,[64+r11] + vpunpckldq ymm12,ymm12,ymm6 + vmovd xmm11,DWORD[((-60))+r12] + vinserti128 ymm10,ymm10,xmm12,1 + vmovd xmm8,DWORD[((-60))+r8] + vpshufb ymm10,ymm10,ymm9 + vmovd xmm7,DWORD[((-60))+r13] + vmovd xmm6,DWORD[((-60))+r9] + vpinsrd xmm11,xmm11,DWORD[((-60))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-60))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-60))+r15],1 + vpunpckldq ymm11,ymm11,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-60))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm4,ymm4,ymm15 + vpslld ymm7,ymm0,5 + vpandn ymm6,ymm1,ymm3 + vpand ymm5,ymm1,ymm2 + + vmovdqa YMMWORD[(0-128)+rax],ymm10 + vpaddd ymm4,ymm4,ymm10 + vinserti128 ymm11,ymm11,xmm8,1 + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm12,DWORD[((-56))+r12] + + vpslld ymm6,ymm1,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-56))+r8] + vpaddd ymm4,ymm4,ymm5 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpshufb ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vmovd xmm7,DWORD[((-56))+r13] + vmovd xmm6,DWORD[((-56))+r9] + vpinsrd xmm12,xmm12,DWORD[((-56))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-56))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-56))+r15],1 + vpunpckldq ymm12,ymm12,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-56))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm3,ymm3,ymm15 + vpslld ymm7,ymm4,5 + vpandn ymm6,ymm0,ymm2 + vpand ymm5,ymm0,ymm1 + + vmovdqa YMMWORD[(32-128)+rax],ymm11 + vpaddd ymm3,ymm3,ymm11 + vinserti128 ymm12,ymm12,xmm8,1 + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm13,DWORD[((-52))+r12] + + vpslld ymm6,ymm0,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-52))+r8] + vpaddd ymm3,ymm3,ymm5 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpshufb ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vmovd xmm7,DWORD[((-52))+r13] + vmovd xmm6,DWORD[((-52))+r9] + vpinsrd xmm13,xmm13,DWORD[((-52))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-52))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-52))+r15],1 + vpunpckldq ymm13,ymm13,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-52))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm2,ymm2,ymm15 + vpslld ymm7,ymm3,5 + vpandn ymm6,ymm4,ymm1 + vpand ymm5,ymm4,ymm0 + + vmovdqa YMMWORD[(64-128)+rax],ymm12 + vpaddd ymm2,ymm2,ymm12 + vinserti128 ymm13,ymm13,xmm8,1 + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm14,DWORD[((-48))+r12] + + vpslld ymm6,ymm4,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-48))+r8] + vpaddd ymm2,ymm2,ymm5 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpshufb ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vmovd xmm7,DWORD[((-48))+r13] + vmovd xmm6,DWORD[((-48))+r9] + vpinsrd xmm14,xmm14,DWORD[((-48))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-48))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-48))+r15],1 + vpunpckldq ymm14,ymm14,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-48))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm1,ymm1,ymm15 + vpslld ymm7,ymm2,5 + vpandn ymm6,ymm3,ymm0 + vpand ymm5,ymm3,ymm4 + + vmovdqa YMMWORD[(96-128)+rax],ymm13 + vpaddd ymm1,ymm1,ymm13 + vinserti128 ymm14,ymm14,xmm8,1 + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm10,DWORD[((-44))+r12] + + vpslld ymm6,ymm3,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-44))+r8] + vpaddd ymm1,ymm1,ymm5 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpshufb ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vmovd xmm7,DWORD[((-44))+r13] + vmovd xmm6,DWORD[((-44))+r9] + vpinsrd xmm10,xmm10,DWORD[((-44))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-44))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-44))+r15],1 + vpunpckldq ymm10,ymm10,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-44))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm0,ymm0,ymm15 + vpslld ymm7,ymm1,5 + vpandn ymm6,ymm2,ymm4 + vpand ymm5,ymm2,ymm3 + + vmovdqa YMMWORD[(128-128)+rax],ymm14 + vpaddd ymm0,ymm0,ymm14 + vinserti128 ymm10,ymm10,xmm8,1 + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm11,DWORD[((-40))+r12] + + vpslld ymm6,ymm2,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-40))+r8] + vpaddd ymm0,ymm0,ymm5 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpshufb ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vmovd xmm7,DWORD[((-40))+r13] + vmovd xmm6,DWORD[((-40))+r9] + vpinsrd xmm11,xmm11,DWORD[((-40))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-40))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-40))+r15],1 + vpunpckldq ymm11,ymm11,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-40))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm4,ymm4,ymm15 + vpslld ymm7,ymm0,5 + vpandn ymm6,ymm1,ymm3 + vpand ymm5,ymm1,ymm2 + + vmovdqa YMMWORD[(160-128)+rax],ymm10 + vpaddd ymm4,ymm4,ymm10 + vinserti128 ymm11,ymm11,xmm8,1 + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm12,DWORD[((-36))+r12] + + vpslld ymm6,ymm1,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-36))+r8] + vpaddd ymm4,ymm4,ymm5 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpshufb ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vmovd xmm7,DWORD[((-36))+r13] + vmovd xmm6,DWORD[((-36))+r9] + vpinsrd xmm12,xmm12,DWORD[((-36))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-36))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-36))+r15],1 + vpunpckldq ymm12,ymm12,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-36))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm3,ymm3,ymm15 + vpslld ymm7,ymm4,5 + vpandn ymm6,ymm0,ymm2 + vpand ymm5,ymm0,ymm1 + + vmovdqa YMMWORD[(192-128)+rax],ymm11 + vpaddd ymm3,ymm3,ymm11 + vinserti128 ymm12,ymm12,xmm8,1 + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm13,DWORD[((-32))+r12] + + vpslld ymm6,ymm0,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-32))+r8] + vpaddd ymm3,ymm3,ymm5 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpshufb ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vmovd xmm7,DWORD[((-32))+r13] + vmovd xmm6,DWORD[((-32))+r9] + vpinsrd xmm13,xmm13,DWORD[((-32))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-32))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-32))+r15],1 + vpunpckldq ymm13,ymm13,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-32))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm2,ymm2,ymm15 + vpslld ymm7,ymm3,5 + vpandn ymm6,ymm4,ymm1 + vpand ymm5,ymm4,ymm0 + + vmovdqa YMMWORD[(224-128)+rax],ymm12 + vpaddd ymm2,ymm2,ymm12 + vinserti128 ymm13,ymm13,xmm8,1 + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm14,DWORD[((-28))+r12] + + vpslld ymm6,ymm4,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-28))+r8] + vpaddd ymm2,ymm2,ymm5 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpshufb ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vmovd xmm7,DWORD[((-28))+r13] + vmovd xmm6,DWORD[((-28))+r9] + vpinsrd xmm14,xmm14,DWORD[((-28))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-28))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-28))+r15],1 + vpunpckldq ymm14,ymm14,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-28))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm1,ymm1,ymm15 + vpslld ymm7,ymm2,5 + vpandn ymm6,ymm3,ymm0 + vpand ymm5,ymm3,ymm4 + + vmovdqa YMMWORD[(256-256-128)+rbx],ymm13 + vpaddd ymm1,ymm1,ymm13 + vinserti128 ymm14,ymm14,xmm8,1 + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm10,DWORD[((-24))+r12] + + vpslld ymm6,ymm3,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-24))+r8] + vpaddd ymm1,ymm1,ymm5 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpshufb ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vmovd xmm7,DWORD[((-24))+r13] + vmovd xmm6,DWORD[((-24))+r9] + vpinsrd xmm10,xmm10,DWORD[((-24))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-24))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-24))+r15],1 + vpunpckldq ymm10,ymm10,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-24))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm0,ymm0,ymm15 + vpslld ymm7,ymm1,5 + vpandn ymm6,ymm2,ymm4 + vpand ymm5,ymm2,ymm3 + + vmovdqa YMMWORD[(288-256-128)+rbx],ymm14 + vpaddd ymm0,ymm0,ymm14 + vinserti128 ymm10,ymm10,xmm8,1 + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm11,DWORD[((-20))+r12] + + vpslld ymm6,ymm2,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-20))+r8] + vpaddd ymm0,ymm0,ymm5 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpshufb ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vmovd xmm7,DWORD[((-20))+r13] + vmovd xmm6,DWORD[((-20))+r9] + vpinsrd xmm11,xmm11,DWORD[((-20))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-20))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-20))+r15],1 + vpunpckldq ymm11,ymm11,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-20))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm4,ymm4,ymm15 + vpslld ymm7,ymm0,5 + vpandn ymm6,ymm1,ymm3 + vpand ymm5,ymm1,ymm2 + + vmovdqa YMMWORD[(320-256-128)+rbx],ymm10 + vpaddd ymm4,ymm4,ymm10 + vinserti128 ymm11,ymm11,xmm8,1 + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm12,DWORD[((-16))+r12] + + vpslld ymm6,ymm1,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-16))+r8] + vpaddd ymm4,ymm4,ymm5 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpshufb ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vmovd xmm7,DWORD[((-16))+r13] + vmovd xmm6,DWORD[((-16))+r9] + vpinsrd xmm12,xmm12,DWORD[((-16))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-16))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-16))+r15],1 + vpunpckldq ymm12,ymm12,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-16))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm3,ymm3,ymm15 + vpslld ymm7,ymm4,5 + vpandn ymm6,ymm0,ymm2 + vpand ymm5,ymm0,ymm1 + + vmovdqa YMMWORD[(352-256-128)+rbx],ymm11 + vpaddd ymm3,ymm3,ymm11 + vinserti128 ymm12,ymm12,xmm8,1 + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm13,DWORD[((-12))+r12] + + vpslld ymm6,ymm0,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-12))+r8] + vpaddd ymm3,ymm3,ymm5 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpshufb ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vmovd xmm7,DWORD[((-12))+r13] + vmovd xmm6,DWORD[((-12))+r9] + vpinsrd xmm13,xmm13,DWORD[((-12))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-12))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-12))+r15],1 + vpunpckldq ymm13,ymm13,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-12))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm2,ymm2,ymm15 + vpslld ymm7,ymm3,5 + vpandn ymm6,ymm4,ymm1 + vpand ymm5,ymm4,ymm0 + + vmovdqa YMMWORD[(384-256-128)+rbx],ymm12 + vpaddd ymm2,ymm2,ymm12 + vinserti128 ymm13,ymm13,xmm8,1 + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm14,DWORD[((-8))+r12] + + vpslld ymm6,ymm4,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-8))+r8] + vpaddd ymm2,ymm2,ymm5 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpshufb ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vmovd xmm7,DWORD[((-8))+r13] + vmovd xmm6,DWORD[((-8))+r9] + vpinsrd xmm14,xmm14,DWORD[((-8))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-8))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-8))+r15],1 + vpunpckldq ymm14,ymm14,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-8))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm1,ymm1,ymm15 + vpslld ymm7,ymm2,5 + vpandn ymm6,ymm3,ymm0 + vpand ymm5,ymm3,ymm4 + + vmovdqa YMMWORD[(416-256-128)+rbx],ymm13 + vpaddd ymm1,ymm1,ymm13 + vinserti128 ymm14,ymm14,xmm8,1 + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm5,ymm6 + vmovd xmm10,DWORD[((-4))+r12] + + vpslld ymm6,ymm3,30 + vpor ymm7,ymm7,ymm8 + vmovd xmm8,DWORD[((-4))+r8] + vpaddd ymm1,ymm1,ymm5 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpshufb ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vmovdqa ymm11,YMMWORD[((0-128))+rax] + vmovd xmm7,DWORD[((-4))+r13] + vmovd xmm6,DWORD[((-4))+r9] + vpinsrd xmm10,xmm10,DWORD[((-4))+r14],1 + vpinsrd xmm8,xmm8,DWORD[((-4))+r10],1 + vpinsrd xmm7,xmm7,DWORD[((-4))+r15],1 + vpunpckldq ymm10,ymm10,ymm7 + vpinsrd xmm6,xmm6,DWORD[((-4))+r11],1 + vpunpckldq ymm8,ymm8,ymm6 + vpaddd ymm0,ymm0,ymm15 + prefetcht0 [63+r12] + vpslld ymm7,ymm1,5 + vpandn ymm6,ymm2,ymm4 + vpand ymm5,ymm2,ymm3 + + vmovdqa YMMWORD[(448-256-128)+rbx],ymm14 + vpaddd ymm0,ymm0,ymm14 + vinserti128 ymm10,ymm10,xmm8,1 + vpsrld ymm8,ymm1,27 + prefetcht0 [63+r13] + vpxor ymm5,ymm5,ymm6 + + vpslld ymm6,ymm2,30 + vpor ymm7,ymm7,ymm8 + prefetcht0 [63+r14] + vpaddd ymm0,ymm0,ymm5 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + prefetcht0 [63+r15] + vpshufb ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vmovdqa ymm12,YMMWORD[((32-128))+rax] + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((64-128))+rax] + + vpaddd ymm4,ymm4,ymm15 + vpslld ymm7,ymm0,5 + vpandn ymm6,ymm1,ymm3 + prefetcht0 [63+r8] + vpand ymm5,ymm1,ymm2 + + vmovdqa YMMWORD[(480-256-128)+rbx],ymm10 + vpaddd ymm4,ymm4,ymm10 + vpxor ymm11,ymm11,YMMWORD[((256-256-128))+rbx] + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm5,ymm6 + vpxor ymm11,ymm11,ymm13 + prefetcht0 [63+r9] + + vpslld ymm6,ymm1,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm4,ymm4,ymm5 + prefetcht0 [63+r10] + vpsrld ymm9,ymm11,31 + vpaddd ymm11,ymm11,ymm11 + + vpsrld ymm1,ymm1,2 + prefetcht0 [63+r11] + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((96-128))+rax] + + vpaddd ymm3,ymm3,ymm15 + vpslld ymm7,ymm4,5 + vpandn ymm6,ymm0,ymm2 + + vpand ymm5,ymm0,ymm1 + + vmovdqa YMMWORD[(0-128)+rax],ymm11 + vpaddd ymm3,ymm3,ymm11 + vpxor ymm12,ymm12,YMMWORD[((288-256-128))+rbx] + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm5,ymm6 + vpxor ymm12,ymm12,ymm14 + + + vpslld ymm6,ymm0,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm3,ymm3,ymm5 + + vpsrld ymm9,ymm12,31 + vpaddd ymm12,ymm12,ymm12 + + vpsrld ymm0,ymm0,2 + + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((128-128))+rax] + + vpaddd ymm2,ymm2,ymm15 + vpslld ymm7,ymm3,5 + vpandn ymm6,ymm4,ymm1 + + vpand ymm5,ymm4,ymm0 + + vmovdqa YMMWORD[(32-128)+rax],ymm12 + vpaddd ymm2,ymm2,ymm12 + vpxor ymm13,ymm13,YMMWORD[((320-256-128))+rbx] + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm5,ymm6 + vpxor ymm13,ymm13,ymm10 + + + vpslld ymm6,ymm4,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm2,ymm2,ymm5 + + vpsrld ymm9,ymm13,31 + vpaddd ymm13,ymm13,ymm13 + + vpsrld ymm4,ymm4,2 + + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((160-128))+rax] + + vpaddd ymm1,ymm1,ymm15 + vpslld ymm7,ymm2,5 + vpandn ymm6,ymm3,ymm0 + + vpand ymm5,ymm3,ymm4 + + vmovdqa YMMWORD[(64-128)+rax],ymm13 + vpaddd ymm1,ymm1,ymm13 + vpxor ymm14,ymm14,YMMWORD[((352-256-128))+rbx] + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm5,ymm6 + vpxor ymm14,ymm14,ymm11 + + + vpslld ymm6,ymm3,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm1,ymm1,ymm5 + + vpsrld ymm9,ymm14,31 + vpaddd ymm14,ymm14,ymm14 + + vpsrld ymm3,ymm3,2 + + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpxor ymm10,ymm10,ymm12 + vmovdqa ymm12,YMMWORD[((192-128))+rax] + + vpaddd ymm0,ymm0,ymm15 + vpslld ymm7,ymm1,5 + vpandn ymm6,ymm2,ymm4 + + vpand ymm5,ymm2,ymm3 + + vmovdqa YMMWORD[(96-128)+rax],ymm14 + vpaddd ymm0,ymm0,ymm14 + vpxor ymm10,ymm10,YMMWORD[((384-256-128))+rbx] + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm5,ymm6 + vpxor ymm10,ymm10,ymm12 + + + vpslld ymm6,ymm2,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm0,ymm0,ymm5 + + vpsrld ymm9,ymm10,31 + vpaddd ymm10,ymm10,ymm10 + + vpsrld ymm2,ymm2,2 + + vpaddd ymm0,ymm0,ymm7 + vpor ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vmovdqa ymm15,YMMWORD[rbp] + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((224-128))+rax] + + vpslld ymm7,ymm0,5 + vpaddd ymm4,ymm4,ymm15 + vpxor ymm5,ymm3,ymm1 + vmovdqa YMMWORD[(128-128)+rax],ymm10 + vpaddd ymm4,ymm4,ymm10 + vpxor ymm11,ymm11,YMMWORD[((416-256-128))+rbx] + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm5,ymm2 + vpxor ymm11,ymm11,ymm13 + + vpslld ymm6,ymm1,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm4,ymm4,ymm5 + vpsrld ymm9,ymm11,31 + vpaddd ymm11,ymm11,ymm11 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((256-256-128))+rbx] + + vpslld ymm7,ymm4,5 + vpaddd ymm3,ymm3,ymm15 + vpxor ymm5,ymm2,ymm0 + vmovdqa YMMWORD[(160-128)+rax],ymm11 + vpaddd ymm3,ymm3,ymm11 + vpxor ymm12,ymm12,YMMWORD[((448-256-128))+rbx] + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm5,ymm1 + vpxor ymm12,ymm12,ymm14 + + vpslld ymm6,ymm0,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm3,ymm3,ymm5 + vpsrld ymm9,ymm12,31 + vpaddd ymm12,ymm12,ymm12 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((288-256-128))+rbx] + + vpslld ymm7,ymm3,5 + vpaddd ymm2,ymm2,ymm15 + vpxor ymm5,ymm1,ymm4 + vmovdqa YMMWORD[(192-128)+rax],ymm12 + vpaddd ymm2,ymm2,ymm12 + vpxor ymm13,ymm13,YMMWORD[((480-256-128))+rbx] + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm5,ymm0 + vpxor ymm13,ymm13,ymm10 + + vpslld ymm6,ymm4,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm2,ymm2,ymm5 + vpsrld ymm9,ymm13,31 + vpaddd ymm13,ymm13,ymm13 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((320-256-128))+rbx] + + vpslld ymm7,ymm2,5 + vpaddd ymm1,ymm1,ymm15 + vpxor ymm5,ymm0,ymm3 + vmovdqa YMMWORD[(224-128)+rax],ymm13 + vpaddd ymm1,ymm1,ymm13 + vpxor ymm14,ymm14,YMMWORD[((0-128))+rax] + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm5,ymm4 + vpxor ymm14,ymm14,ymm11 + + vpslld ymm6,ymm3,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm1,ymm1,ymm5 + vpsrld ymm9,ymm14,31 + vpaddd ymm14,ymm14,ymm14 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpxor ymm10,ymm10,ymm12 + vmovdqa ymm12,YMMWORD[((352-256-128))+rbx] + + vpslld ymm7,ymm1,5 + vpaddd ymm0,ymm0,ymm15 + vpxor ymm5,ymm4,ymm2 + vmovdqa YMMWORD[(256-256-128)+rbx],ymm14 + vpaddd ymm0,ymm0,ymm14 + vpxor ymm10,ymm10,YMMWORD[((32-128))+rax] + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm5,ymm3 + vpxor ymm10,ymm10,ymm12 + + vpslld ymm6,ymm2,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm0,ymm0,ymm5 + vpsrld ymm9,ymm10,31 + vpaddd ymm10,ymm10,ymm10 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpor ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((384-256-128))+rbx] + + vpslld ymm7,ymm0,5 + vpaddd ymm4,ymm4,ymm15 + vpxor ymm5,ymm3,ymm1 + vmovdqa YMMWORD[(288-256-128)+rbx],ymm10 + vpaddd ymm4,ymm4,ymm10 + vpxor ymm11,ymm11,YMMWORD[((64-128))+rax] + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm5,ymm2 + vpxor ymm11,ymm11,ymm13 + + vpslld ymm6,ymm1,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm4,ymm4,ymm5 + vpsrld ymm9,ymm11,31 + vpaddd ymm11,ymm11,ymm11 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((416-256-128))+rbx] + + vpslld ymm7,ymm4,5 + vpaddd ymm3,ymm3,ymm15 + vpxor ymm5,ymm2,ymm0 + vmovdqa YMMWORD[(320-256-128)+rbx],ymm11 + vpaddd ymm3,ymm3,ymm11 + vpxor ymm12,ymm12,YMMWORD[((96-128))+rax] + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm5,ymm1 + vpxor ymm12,ymm12,ymm14 + + vpslld ymm6,ymm0,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm3,ymm3,ymm5 + vpsrld ymm9,ymm12,31 + vpaddd ymm12,ymm12,ymm12 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((448-256-128))+rbx] + + vpslld ymm7,ymm3,5 + vpaddd ymm2,ymm2,ymm15 + vpxor ymm5,ymm1,ymm4 + vmovdqa YMMWORD[(352-256-128)+rbx],ymm12 + vpaddd ymm2,ymm2,ymm12 + vpxor ymm13,ymm13,YMMWORD[((128-128))+rax] + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm5,ymm0 + vpxor ymm13,ymm13,ymm10 + + vpslld ymm6,ymm4,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm2,ymm2,ymm5 + vpsrld ymm9,ymm13,31 + vpaddd ymm13,ymm13,ymm13 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((480-256-128))+rbx] + + vpslld ymm7,ymm2,5 + vpaddd ymm1,ymm1,ymm15 + vpxor ymm5,ymm0,ymm3 + vmovdqa YMMWORD[(384-256-128)+rbx],ymm13 + vpaddd ymm1,ymm1,ymm13 + vpxor ymm14,ymm14,YMMWORD[((160-128))+rax] + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm5,ymm4 + vpxor ymm14,ymm14,ymm11 + + vpslld ymm6,ymm3,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm1,ymm1,ymm5 + vpsrld ymm9,ymm14,31 + vpaddd ymm14,ymm14,ymm14 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpxor ymm10,ymm10,ymm12 + vmovdqa ymm12,YMMWORD[((0-128))+rax] + + vpslld ymm7,ymm1,5 + vpaddd ymm0,ymm0,ymm15 + vpxor ymm5,ymm4,ymm2 + vmovdqa YMMWORD[(416-256-128)+rbx],ymm14 + vpaddd ymm0,ymm0,ymm14 + vpxor ymm10,ymm10,YMMWORD[((192-128))+rax] + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm5,ymm3 + vpxor ymm10,ymm10,ymm12 + + vpslld ymm6,ymm2,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm0,ymm0,ymm5 + vpsrld ymm9,ymm10,31 + vpaddd ymm10,ymm10,ymm10 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpor ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((32-128))+rax] + + vpslld ymm7,ymm0,5 + vpaddd ymm4,ymm4,ymm15 + vpxor ymm5,ymm3,ymm1 + vmovdqa YMMWORD[(448-256-128)+rbx],ymm10 + vpaddd ymm4,ymm4,ymm10 + vpxor ymm11,ymm11,YMMWORD[((224-128))+rax] + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm5,ymm2 + vpxor ymm11,ymm11,ymm13 + + vpslld ymm6,ymm1,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm4,ymm4,ymm5 + vpsrld ymm9,ymm11,31 + vpaddd ymm11,ymm11,ymm11 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((64-128))+rax] + + vpslld ymm7,ymm4,5 + vpaddd ymm3,ymm3,ymm15 + vpxor ymm5,ymm2,ymm0 + vmovdqa YMMWORD[(480-256-128)+rbx],ymm11 + vpaddd ymm3,ymm3,ymm11 + vpxor ymm12,ymm12,YMMWORD[((256-256-128))+rbx] + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm5,ymm1 + vpxor ymm12,ymm12,ymm14 + + vpslld ymm6,ymm0,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm3,ymm3,ymm5 + vpsrld ymm9,ymm12,31 + vpaddd ymm12,ymm12,ymm12 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((96-128))+rax] + + vpslld ymm7,ymm3,5 + vpaddd ymm2,ymm2,ymm15 + vpxor ymm5,ymm1,ymm4 + vmovdqa YMMWORD[(0-128)+rax],ymm12 + vpaddd ymm2,ymm2,ymm12 + vpxor ymm13,ymm13,YMMWORD[((288-256-128))+rbx] + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm5,ymm0 + vpxor ymm13,ymm13,ymm10 + + vpslld ymm6,ymm4,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm2,ymm2,ymm5 + vpsrld ymm9,ymm13,31 + vpaddd ymm13,ymm13,ymm13 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((128-128))+rax] + + vpslld ymm7,ymm2,5 + vpaddd ymm1,ymm1,ymm15 + vpxor ymm5,ymm0,ymm3 + vmovdqa YMMWORD[(32-128)+rax],ymm13 + vpaddd ymm1,ymm1,ymm13 + vpxor ymm14,ymm14,YMMWORD[((320-256-128))+rbx] + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm5,ymm4 + vpxor ymm14,ymm14,ymm11 + + vpslld ymm6,ymm3,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm1,ymm1,ymm5 + vpsrld ymm9,ymm14,31 + vpaddd ymm14,ymm14,ymm14 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpxor ymm10,ymm10,ymm12 + vmovdqa ymm12,YMMWORD[((160-128))+rax] + + vpslld ymm7,ymm1,5 + vpaddd ymm0,ymm0,ymm15 + vpxor ymm5,ymm4,ymm2 + vmovdqa YMMWORD[(64-128)+rax],ymm14 + vpaddd ymm0,ymm0,ymm14 + vpxor ymm10,ymm10,YMMWORD[((352-256-128))+rbx] + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm5,ymm3 + vpxor ymm10,ymm10,ymm12 + + vpslld ymm6,ymm2,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm0,ymm0,ymm5 + vpsrld ymm9,ymm10,31 + vpaddd ymm10,ymm10,ymm10 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpor ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((192-128))+rax] + + vpslld ymm7,ymm0,5 + vpaddd ymm4,ymm4,ymm15 + vpxor ymm5,ymm3,ymm1 + vmovdqa YMMWORD[(96-128)+rax],ymm10 + vpaddd ymm4,ymm4,ymm10 + vpxor ymm11,ymm11,YMMWORD[((384-256-128))+rbx] + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm5,ymm2 + vpxor ymm11,ymm11,ymm13 + + vpslld ymm6,ymm1,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm4,ymm4,ymm5 + vpsrld ymm9,ymm11,31 + vpaddd ymm11,ymm11,ymm11 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((224-128))+rax] + + vpslld ymm7,ymm4,5 + vpaddd ymm3,ymm3,ymm15 + vpxor ymm5,ymm2,ymm0 + vmovdqa YMMWORD[(128-128)+rax],ymm11 + vpaddd ymm3,ymm3,ymm11 + vpxor ymm12,ymm12,YMMWORD[((416-256-128))+rbx] + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm5,ymm1 + vpxor ymm12,ymm12,ymm14 + + vpslld ymm6,ymm0,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm3,ymm3,ymm5 + vpsrld ymm9,ymm12,31 + vpaddd ymm12,ymm12,ymm12 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((256-256-128))+rbx] + + vpslld ymm7,ymm3,5 + vpaddd ymm2,ymm2,ymm15 + vpxor ymm5,ymm1,ymm4 + vmovdqa YMMWORD[(160-128)+rax],ymm12 + vpaddd ymm2,ymm2,ymm12 + vpxor ymm13,ymm13,YMMWORD[((448-256-128))+rbx] + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm5,ymm0 + vpxor ymm13,ymm13,ymm10 + + vpslld ymm6,ymm4,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm2,ymm2,ymm5 + vpsrld ymm9,ymm13,31 + vpaddd ymm13,ymm13,ymm13 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((288-256-128))+rbx] + + vpslld ymm7,ymm2,5 + vpaddd ymm1,ymm1,ymm15 + vpxor ymm5,ymm0,ymm3 + vmovdqa YMMWORD[(192-128)+rax],ymm13 + vpaddd ymm1,ymm1,ymm13 + vpxor ymm14,ymm14,YMMWORD[((480-256-128))+rbx] + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm5,ymm4 + vpxor ymm14,ymm14,ymm11 + + vpslld ymm6,ymm3,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm1,ymm1,ymm5 + vpsrld ymm9,ymm14,31 + vpaddd ymm14,ymm14,ymm14 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpxor ymm10,ymm10,ymm12 + vmovdqa ymm12,YMMWORD[((320-256-128))+rbx] + + vpslld ymm7,ymm1,5 + vpaddd ymm0,ymm0,ymm15 + vpxor ymm5,ymm4,ymm2 + vmovdqa YMMWORD[(224-128)+rax],ymm14 + vpaddd ymm0,ymm0,ymm14 + vpxor ymm10,ymm10,YMMWORD[((0-128))+rax] + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm5,ymm3 + vpxor ymm10,ymm10,ymm12 + + vpslld ymm6,ymm2,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm0,ymm0,ymm5 + vpsrld ymm9,ymm10,31 + vpaddd ymm10,ymm10,ymm10 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpor ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vmovdqa ymm15,YMMWORD[32+rbp] + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((352-256-128))+rbx] + + vpaddd ymm4,ymm4,ymm15 + vpslld ymm7,ymm0,5 + vpand ymm6,ymm3,ymm2 + vpxor ymm11,ymm11,YMMWORD[((32-128))+rax] + + vpaddd ymm4,ymm4,ymm6 + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm3,ymm2 + vpxor ymm11,ymm11,ymm13 + + vmovdqu YMMWORD[(256-256-128)+rbx],ymm10 + vpaddd ymm4,ymm4,ymm10 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm11,31 + vpand ymm5,ymm5,ymm1 + vpaddd ymm11,ymm11,ymm11 + + vpslld ymm6,ymm1,30 + vpaddd ymm4,ymm4,ymm5 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((384-256-128))+rbx] + + vpaddd ymm3,ymm3,ymm15 + vpslld ymm7,ymm4,5 + vpand ymm6,ymm2,ymm1 + vpxor ymm12,ymm12,YMMWORD[((64-128))+rax] + + vpaddd ymm3,ymm3,ymm6 + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm2,ymm1 + vpxor ymm12,ymm12,ymm14 + + vmovdqu YMMWORD[(288-256-128)+rbx],ymm11 + vpaddd ymm3,ymm3,ymm11 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm12,31 + vpand ymm5,ymm5,ymm0 + vpaddd ymm12,ymm12,ymm12 + + vpslld ymm6,ymm0,30 + vpaddd ymm3,ymm3,ymm5 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((416-256-128))+rbx] + + vpaddd ymm2,ymm2,ymm15 + vpslld ymm7,ymm3,5 + vpand ymm6,ymm1,ymm0 + vpxor ymm13,ymm13,YMMWORD[((96-128))+rax] + + vpaddd ymm2,ymm2,ymm6 + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm1,ymm0 + vpxor ymm13,ymm13,ymm10 + + vmovdqu YMMWORD[(320-256-128)+rbx],ymm12 + vpaddd ymm2,ymm2,ymm12 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm13,31 + vpand ymm5,ymm5,ymm4 + vpaddd ymm13,ymm13,ymm13 + + vpslld ymm6,ymm4,30 + vpaddd ymm2,ymm2,ymm5 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((448-256-128))+rbx] + + vpaddd ymm1,ymm1,ymm15 + vpslld ymm7,ymm2,5 + vpand ymm6,ymm0,ymm4 + vpxor ymm14,ymm14,YMMWORD[((128-128))+rax] + + vpaddd ymm1,ymm1,ymm6 + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm0,ymm4 + vpxor ymm14,ymm14,ymm11 + + vmovdqu YMMWORD[(352-256-128)+rbx],ymm13 + vpaddd ymm1,ymm1,ymm13 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm14,31 + vpand ymm5,ymm5,ymm3 + vpaddd ymm14,ymm14,ymm14 + + vpslld ymm6,ymm3,30 + vpaddd ymm1,ymm1,ymm5 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpxor ymm10,ymm10,ymm12 + vmovdqa ymm12,YMMWORD[((480-256-128))+rbx] + + vpaddd ymm0,ymm0,ymm15 + vpslld ymm7,ymm1,5 + vpand ymm6,ymm4,ymm3 + vpxor ymm10,ymm10,YMMWORD[((160-128))+rax] + + vpaddd ymm0,ymm0,ymm6 + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm4,ymm3 + vpxor ymm10,ymm10,ymm12 + + vmovdqu YMMWORD[(384-256-128)+rbx],ymm14 + vpaddd ymm0,ymm0,ymm14 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm10,31 + vpand ymm5,ymm5,ymm2 + vpaddd ymm10,ymm10,ymm10 + + vpslld ymm6,ymm2,30 + vpaddd ymm0,ymm0,ymm5 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpor ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((0-128))+rax] + + vpaddd ymm4,ymm4,ymm15 + vpslld ymm7,ymm0,5 + vpand ymm6,ymm3,ymm2 + vpxor ymm11,ymm11,YMMWORD[((192-128))+rax] + + vpaddd ymm4,ymm4,ymm6 + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm3,ymm2 + vpxor ymm11,ymm11,ymm13 + + vmovdqu YMMWORD[(416-256-128)+rbx],ymm10 + vpaddd ymm4,ymm4,ymm10 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm11,31 + vpand ymm5,ymm5,ymm1 + vpaddd ymm11,ymm11,ymm11 + + vpslld ymm6,ymm1,30 + vpaddd ymm4,ymm4,ymm5 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((32-128))+rax] + + vpaddd ymm3,ymm3,ymm15 + vpslld ymm7,ymm4,5 + vpand ymm6,ymm2,ymm1 + vpxor ymm12,ymm12,YMMWORD[((224-128))+rax] + + vpaddd ymm3,ymm3,ymm6 + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm2,ymm1 + vpxor ymm12,ymm12,ymm14 + + vmovdqu YMMWORD[(448-256-128)+rbx],ymm11 + vpaddd ymm3,ymm3,ymm11 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm12,31 + vpand ymm5,ymm5,ymm0 + vpaddd ymm12,ymm12,ymm12 + + vpslld ymm6,ymm0,30 + vpaddd ymm3,ymm3,ymm5 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((64-128))+rax] + + vpaddd ymm2,ymm2,ymm15 + vpslld ymm7,ymm3,5 + vpand ymm6,ymm1,ymm0 + vpxor ymm13,ymm13,YMMWORD[((256-256-128))+rbx] + + vpaddd ymm2,ymm2,ymm6 + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm1,ymm0 + vpxor ymm13,ymm13,ymm10 + + vmovdqu YMMWORD[(480-256-128)+rbx],ymm12 + vpaddd ymm2,ymm2,ymm12 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm13,31 + vpand ymm5,ymm5,ymm4 + vpaddd ymm13,ymm13,ymm13 + + vpslld ymm6,ymm4,30 + vpaddd ymm2,ymm2,ymm5 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((96-128))+rax] + + vpaddd ymm1,ymm1,ymm15 + vpslld ymm7,ymm2,5 + vpand ymm6,ymm0,ymm4 + vpxor ymm14,ymm14,YMMWORD[((288-256-128))+rbx] + + vpaddd ymm1,ymm1,ymm6 + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm0,ymm4 + vpxor ymm14,ymm14,ymm11 + + vmovdqu YMMWORD[(0-128)+rax],ymm13 + vpaddd ymm1,ymm1,ymm13 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm14,31 + vpand ymm5,ymm5,ymm3 + vpaddd ymm14,ymm14,ymm14 + + vpslld ymm6,ymm3,30 + vpaddd ymm1,ymm1,ymm5 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpxor ymm10,ymm10,ymm12 + vmovdqa ymm12,YMMWORD[((128-128))+rax] + + vpaddd ymm0,ymm0,ymm15 + vpslld ymm7,ymm1,5 + vpand ymm6,ymm4,ymm3 + vpxor ymm10,ymm10,YMMWORD[((320-256-128))+rbx] + + vpaddd ymm0,ymm0,ymm6 + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm4,ymm3 + vpxor ymm10,ymm10,ymm12 + + vmovdqu YMMWORD[(32-128)+rax],ymm14 + vpaddd ymm0,ymm0,ymm14 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm10,31 + vpand ymm5,ymm5,ymm2 + vpaddd ymm10,ymm10,ymm10 + + vpslld ymm6,ymm2,30 + vpaddd ymm0,ymm0,ymm5 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpor ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((160-128))+rax] + + vpaddd ymm4,ymm4,ymm15 + vpslld ymm7,ymm0,5 + vpand ymm6,ymm3,ymm2 + vpxor ymm11,ymm11,YMMWORD[((352-256-128))+rbx] + + vpaddd ymm4,ymm4,ymm6 + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm3,ymm2 + vpxor ymm11,ymm11,ymm13 + + vmovdqu YMMWORD[(64-128)+rax],ymm10 + vpaddd ymm4,ymm4,ymm10 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm11,31 + vpand ymm5,ymm5,ymm1 + vpaddd ymm11,ymm11,ymm11 + + vpslld ymm6,ymm1,30 + vpaddd ymm4,ymm4,ymm5 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((192-128))+rax] + + vpaddd ymm3,ymm3,ymm15 + vpslld ymm7,ymm4,5 + vpand ymm6,ymm2,ymm1 + vpxor ymm12,ymm12,YMMWORD[((384-256-128))+rbx] + + vpaddd ymm3,ymm3,ymm6 + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm2,ymm1 + vpxor ymm12,ymm12,ymm14 + + vmovdqu YMMWORD[(96-128)+rax],ymm11 + vpaddd ymm3,ymm3,ymm11 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm12,31 + vpand ymm5,ymm5,ymm0 + vpaddd ymm12,ymm12,ymm12 + + vpslld ymm6,ymm0,30 + vpaddd ymm3,ymm3,ymm5 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((224-128))+rax] + + vpaddd ymm2,ymm2,ymm15 + vpslld ymm7,ymm3,5 + vpand ymm6,ymm1,ymm0 + vpxor ymm13,ymm13,YMMWORD[((416-256-128))+rbx] + + vpaddd ymm2,ymm2,ymm6 + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm1,ymm0 + vpxor ymm13,ymm13,ymm10 + + vmovdqu YMMWORD[(128-128)+rax],ymm12 + vpaddd ymm2,ymm2,ymm12 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm13,31 + vpand ymm5,ymm5,ymm4 + vpaddd ymm13,ymm13,ymm13 + + vpslld ymm6,ymm4,30 + vpaddd ymm2,ymm2,ymm5 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((256-256-128))+rbx] + + vpaddd ymm1,ymm1,ymm15 + vpslld ymm7,ymm2,5 + vpand ymm6,ymm0,ymm4 + vpxor ymm14,ymm14,YMMWORD[((448-256-128))+rbx] + + vpaddd ymm1,ymm1,ymm6 + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm0,ymm4 + vpxor ymm14,ymm14,ymm11 + + vmovdqu YMMWORD[(160-128)+rax],ymm13 + vpaddd ymm1,ymm1,ymm13 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm14,31 + vpand ymm5,ymm5,ymm3 + vpaddd ymm14,ymm14,ymm14 + + vpslld ymm6,ymm3,30 + vpaddd ymm1,ymm1,ymm5 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpxor ymm10,ymm10,ymm12 + vmovdqa ymm12,YMMWORD[((288-256-128))+rbx] + + vpaddd ymm0,ymm0,ymm15 + vpslld ymm7,ymm1,5 + vpand ymm6,ymm4,ymm3 + vpxor ymm10,ymm10,YMMWORD[((480-256-128))+rbx] + + vpaddd ymm0,ymm0,ymm6 + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm4,ymm3 + vpxor ymm10,ymm10,ymm12 + + vmovdqu YMMWORD[(192-128)+rax],ymm14 + vpaddd ymm0,ymm0,ymm14 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm10,31 + vpand ymm5,ymm5,ymm2 + vpaddd ymm10,ymm10,ymm10 + + vpslld ymm6,ymm2,30 + vpaddd ymm0,ymm0,ymm5 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpor ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((320-256-128))+rbx] + + vpaddd ymm4,ymm4,ymm15 + vpslld ymm7,ymm0,5 + vpand ymm6,ymm3,ymm2 + vpxor ymm11,ymm11,YMMWORD[((0-128))+rax] + + vpaddd ymm4,ymm4,ymm6 + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm3,ymm2 + vpxor ymm11,ymm11,ymm13 + + vmovdqu YMMWORD[(224-128)+rax],ymm10 + vpaddd ymm4,ymm4,ymm10 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm11,31 + vpand ymm5,ymm5,ymm1 + vpaddd ymm11,ymm11,ymm11 + + vpslld ymm6,ymm1,30 + vpaddd ymm4,ymm4,ymm5 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((352-256-128))+rbx] + + vpaddd ymm3,ymm3,ymm15 + vpslld ymm7,ymm4,5 + vpand ymm6,ymm2,ymm1 + vpxor ymm12,ymm12,YMMWORD[((32-128))+rax] + + vpaddd ymm3,ymm3,ymm6 + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm2,ymm1 + vpxor ymm12,ymm12,ymm14 + + vmovdqu YMMWORD[(256-256-128)+rbx],ymm11 + vpaddd ymm3,ymm3,ymm11 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm12,31 + vpand ymm5,ymm5,ymm0 + vpaddd ymm12,ymm12,ymm12 + + vpslld ymm6,ymm0,30 + vpaddd ymm3,ymm3,ymm5 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((384-256-128))+rbx] + + vpaddd ymm2,ymm2,ymm15 + vpslld ymm7,ymm3,5 + vpand ymm6,ymm1,ymm0 + vpxor ymm13,ymm13,YMMWORD[((64-128))+rax] + + vpaddd ymm2,ymm2,ymm6 + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm1,ymm0 + vpxor ymm13,ymm13,ymm10 + + vmovdqu YMMWORD[(288-256-128)+rbx],ymm12 + vpaddd ymm2,ymm2,ymm12 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm13,31 + vpand ymm5,ymm5,ymm4 + vpaddd ymm13,ymm13,ymm13 + + vpslld ymm6,ymm4,30 + vpaddd ymm2,ymm2,ymm5 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((416-256-128))+rbx] + + vpaddd ymm1,ymm1,ymm15 + vpslld ymm7,ymm2,5 + vpand ymm6,ymm0,ymm4 + vpxor ymm14,ymm14,YMMWORD[((96-128))+rax] + + vpaddd ymm1,ymm1,ymm6 + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm0,ymm4 + vpxor ymm14,ymm14,ymm11 + + vmovdqu YMMWORD[(320-256-128)+rbx],ymm13 + vpaddd ymm1,ymm1,ymm13 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm14,31 + vpand ymm5,ymm5,ymm3 + vpaddd ymm14,ymm14,ymm14 + + vpslld ymm6,ymm3,30 + vpaddd ymm1,ymm1,ymm5 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpxor ymm10,ymm10,ymm12 + vmovdqa ymm12,YMMWORD[((448-256-128))+rbx] + + vpaddd ymm0,ymm0,ymm15 + vpslld ymm7,ymm1,5 + vpand ymm6,ymm4,ymm3 + vpxor ymm10,ymm10,YMMWORD[((128-128))+rax] + + vpaddd ymm0,ymm0,ymm6 + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm4,ymm3 + vpxor ymm10,ymm10,ymm12 + + vmovdqu YMMWORD[(352-256-128)+rbx],ymm14 + vpaddd ymm0,ymm0,ymm14 + vpor ymm7,ymm7,ymm8 + vpsrld ymm9,ymm10,31 + vpand ymm5,ymm5,ymm2 + vpaddd ymm10,ymm10,ymm10 + + vpslld ymm6,ymm2,30 + vpaddd ymm0,ymm0,ymm5 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpor ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vmovdqa ymm15,YMMWORD[64+rbp] + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((480-256-128))+rbx] + + vpslld ymm7,ymm0,5 + vpaddd ymm4,ymm4,ymm15 + vpxor ymm5,ymm3,ymm1 + vmovdqa YMMWORD[(384-256-128)+rbx],ymm10 + vpaddd ymm4,ymm4,ymm10 + vpxor ymm11,ymm11,YMMWORD[((160-128))+rax] + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm5,ymm2 + vpxor ymm11,ymm11,ymm13 + + vpslld ymm6,ymm1,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm4,ymm4,ymm5 + vpsrld ymm9,ymm11,31 + vpaddd ymm11,ymm11,ymm11 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((0-128))+rax] + + vpslld ymm7,ymm4,5 + vpaddd ymm3,ymm3,ymm15 + vpxor ymm5,ymm2,ymm0 + vmovdqa YMMWORD[(416-256-128)+rbx],ymm11 + vpaddd ymm3,ymm3,ymm11 + vpxor ymm12,ymm12,YMMWORD[((192-128))+rax] + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm5,ymm1 + vpxor ymm12,ymm12,ymm14 + + vpslld ymm6,ymm0,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm3,ymm3,ymm5 + vpsrld ymm9,ymm12,31 + vpaddd ymm12,ymm12,ymm12 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((32-128))+rax] + + vpslld ymm7,ymm3,5 + vpaddd ymm2,ymm2,ymm15 + vpxor ymm5,ymm1,ymm4 + vmovdqa YMMWORD[(448-256-128)+rbx],ymm12 + vpaddd ymm2,ymm2,ymm12 + vpxor ymm13,ymm13,YMMWORD[((224-128))+rax] + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm5,ymm0 + vpxor ymm13,ymm13,ymm10 + + vpslld ymm6,ymm4,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm2,ymm2,ymm5 + vpsrld ymm9,ymm13,31 + vpaddd ymm13,ymm13,ymm13 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((64-128))+rax] + + vpslld ymm7,ymm2,5 + vpaddd ymm1,ymm1,ymm15 + vpxor ymm5,ymm0,ymm3 + vmovdqa YMMWORD[(480-256-128)+rbx],ymm13 + vpaddd ymm1,ymm1,ymm13 + vpxor ymm14,ymm14,YMMWORD[((256-256-128))+rbx] + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm5,ymm4 + vpxor ymm14,ymm14,ymm11 + + vpslld ymm6,ymm3,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm1,ymm1,ymm5 + vpsrld ymm9,ymm14,31 + vpaddd ymm14,ymm14,ymm14 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpxor ymm10,ymm10,ymm12 + vmovdqa ymm12,YMMWORD[((96-128))+rax] + + vpslld ymm7,ymm1,5 + vpaddd ymm0,ymm0,ymm15 + vpxor ymm5,ymm4,ymm2 + vmovdqa YMMWORD[(0-128)+rax],ymm14 + vpaddd ymm0,ymm0,ymm14 + vpxor ymm10,ymm10,YMMWORD[((288-256-128))+rbx] + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm5,ymm3 + vpxor ymm10,ymm10,ymm12 + + vpslld ymm6,ymm2,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm0,ymm0,ymm5 + vpsrld ymm9,ymm10,31 + vpaddd ymm10,ymm10,ymm10 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpor ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((128-128))+rax] + + vpslld ymm7,ymm0,5 + vpaddd ymm4,ymm4,ymm15 + vpxor ymm5,ymm3,ymm1 + vmovdqa YMMWORD[(32-128)+rax],ymm10 + vpaddd ymm4,ymm4,ymm10 + vpxor ymm11,ymm11,YMMWORD[((320-256-128))+rbx] + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm5,ymm2 + vpxor ymm11,ymm11,ymm13 + + vpslld ymm6,ymm1,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm4,ymm4,ymm5 + vpsrld ymm9,ymm11,31 + vpaddd ymm11,ymm11,ymm11 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((160-128))+rax] + + vpslld ymm7,ymm4,5 + vpaddd ymm3,ymm3,ymm15 + vpxor ymm5,ymm2,ymm0 + vmovdqa YMMWORD[(64-128)+rax],ymm11 + vpaddd ymm3,ymm3,ymm11 + vpxor ymm12,ymm12,YMMWORD[((352-256-128))+rbx] + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm5,ymm1 + vpxor ymm12,ymm12,ymm14 + + vpslld ymm6,ymm0,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm3,ymm3,ymm5 + vpsrld ymm9,ymm12,31 + vpaddd ymm12,ymm12,ymm12 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((192-128))+rax] + + vpslld ymm7,ymm3,5 + vpaddd ymm2,ymm2,ymm15 + vpxor ymm5,ymm1,ymm4 + vmovdqa YMMWORD[(96-128)+rax],ymm12 + vpaddd ymm2,ymm2,ymm12 + vpxor ymm13,ymm13,YMMWORD[((384-256-128))+rbx] + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm5,ymm0 + vpxor ymm13,ymm13,ymm10 + + vpslld ymm6,ymm4,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm2,ymm2,ymm5 + vpsrld ymm9,ymm13,31 + vpaddd ymm13,ymm13,ymm13 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((224-128))+rax] + + vpslld ymm7,ymm2,5 + vpaddd ymm1,ymm1,ymm15 + vpxor ymm5,ymm0,ymm3 + vmovdqa YMMWORD[(128-128)+rax],ymm13 + vpaddd ymm1,ymm1,ymm13 + vpxor ymm14,ymm14,YMMWORD[((416-256-128))+rbx] + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm5,ymm4 + vpxor ymm14,ymm14,ymm11 + + vpslld ymm6,ymm3,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm1,ymm1,ymm5 + vpsrld ymm9,ymm14,31 + vpaddd ymm14,ymm14,ymm14 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpxor ymm10,ymm10,ymm12 + vmovdqa ymm12,YMMWORD[((256-256-128))+rbx] + + vpslld ymm7,ymm1,5 + vpaddd ymm0,ymm0,ymm15 + vpxor ymm5,ymm4,ymm2 + vmovdqa YMMWORD[(160-128)+rax],ymm14 + vpaddd ymm0,ymm0,ymm14 + vpxor ymm10,ymm10,YMMWORD[((448-256-128))+rbx] + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm5,ymm3 + vpxor ymm10,ymm10,ymm12 + + vpslld ymm6,ymm2,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm0,ymm0,ymm5 + vpsrld ymm9,ymm10,31 + vpaddd ymm10,ymm10,ymm10 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpor ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((288-256-128))+rbx] + + vpslld ymm7,ymm0,5 + vpaddd ymm4,ymm4,ymm15 + vpxor ymm5,ymm3,ymm1 + vmovdqa YMMWORD[(192-128)+rax],ymm10 + vpaddd ymm4,ymm4,ymm10 + vpxor ymm11,ymm11,YMMWORD[((480-256-128))+rbx] + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm5,ymm2 + vpxor ymm11,ymm11,ymm13 + + vpslld ymm6,ymm1,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm4,ymm4,ymm5 + vpsrld ymm9,ymm11,31 + vpaddd ymm11,ymm11,ymm11 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((320-256-128))+rbx] + + vpslld ymm7,ymm4,5 + vpaddd ymm3,ymm3,ymm15 + vpxor ymm5,ymm2,ymm0 + vmovdqa YMMWORD[(224-128)+rax],ymm11 + vpaddd ymm3,ymm3,ymm11 + vpxor ymm12,ymm12,YMMWORD[((0-128))+rax] + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm5,ymm1 + vpxor ymm12,ymm12,ymm14 + + vpslld ymm6,ymm0,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm3,ymm3,ymm5 + vpsrld ymm9,ymm12,31 + vpaddd ymm12,ymm12,ymm12 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((352-256-128))+rbx] + + vpslld ymm7,ymm3,5 + vpaddd ymm2,ymm2,ymm15 + vpxor ymm5,ymm1,ymm4 + vpaddd ymm2,ymm2,ymm12 + vpxor ymm13,ymm13,YMMWORD[((32-128))+rax] + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm5,ymm0 + vpxor ymm13,ymm13,ymm10 + + vpslld ymm6,ymm4,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm2,ymm2,ymm5 + vpsrld ymm9,ymm13,31 + vpaddd ymm13,ymm13,ymm13 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((384-256-128))+rbx] + + vpslld ymm7,ymm2,5 + vpaddd ymm1,ymm1,ymm15 + vpxor ymm5,ymm0,ymm3 + vpaddd ymm1,ymm1,ymm13 + vpxor ymm14,ymm14,YMMWORD[((64-128))+rax] + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm5,ymm4 + vpxor ymm14,ymm14,ymm11 + + vpslld ymm6,ymm3,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm1,ymm1,ymm5 + vpsrld ymm9,ymm14,31 + vpaddd ymm14,ymm14,ymm14 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpxor ymm10,ymm10,ymm12 + vmovdqa ymm12,YMMWORD[((416-256-128))+rbx] + + vpslld ymm7,ymm1,5 + vpaddd ymm0,ymm0,ymm15 + vpxor ymm5,ymm4,ymm2 + vpaddd ymm0,ymm0,ymm14 + vpxor ymm10,ymm10,YMMWORD[((96-128))+rax] + vpsrld ymm8,ymm1,27 + vpxor ymm5,ymm5,ymm3 + vpxor ymm10,ymm10,ymm12 + + vpslld ymm6,ymm2,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm0,ymm0,ymm5 + vpsrld ymm9,ymm10,31 + vpaddd ymm10,ymm10,ymm10 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpor ymm10,ymm10,ymm9 + vpor ymm2,ymm2,ymm6 + vpxor ymm11,ymm11,ymm13 + vmovdqa ymm13,YMMWORD[((448-256-128))+rbx] + + vpslld ymm7,ymm0,5 + vpaddd ymm4,ymm4,ymm15 + vpxor ymm5,ymm3,ymm1 + vpaddd ymm4,ymm4,ymm10 + vpxor ymm11,ymm11,YMMWORD[((128-128))+rax] + vpsrld ymm8,ymm0,27 + vpxor ymm5,ymm5,ymm2 + vpxor ymm11,ymm11,ymm13 + + vpslld ymm6,ymm1,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm4,ymm4,ymm5 + vpsrld ymm9,ymm11,31 + vpaddd ymm11,ymm11,ymm11 + + vpsrld ymm1,ymm1,2 + vpaddd ymm4,ymm4,ymm7 + vpor ymm11,ymm11,ymm9 + vpor ymm1,ymm1,ymm6 + vpxor ymm12,ymm12,ymm14 + vmovdqa ymm14,YMMWORD[((480-256-128))+rbx] + + vpslld ymm7,ymm4,5 + vpaddd ymm3,ymm3,ymm15 + vpxor ymm5,ymm2,ymm0 + vpaddd ymm3,ymm3,ymm11 + vpxor ymm12,ymm12,YMMWORD[((160-128))+rax] + vpsrld ymm8,ymm4,27 + vpxor ymm5,ymm5,ymm1 + vpxor ymm12,ymm12,ymm14 + + vpslld ymm6,ymm0,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm3,ymm3,ymm5 + vpsrld ymm9,ymm12,31 + vpaddd ymm12,ymm12,ymm12 + + vpsrld ymm0,ymm0,2 + vpaddd ymm3,ymm3,ymm7 + vpor ymm12,ymm12,ymm9 + vpor ymm0,ymm0,ymm6 + vpxor ymm13,ymm13,ymm10 + vmovdqa ymm10,YMMWORD[((0-128))+rax] + + vpslld ymm7,ymm3,5 + vpaddd ymm2,ymm2,ymm15 + vpxor ymm5,ymm1,ymm4 + vpaddd ymm2,ymm2,ymm12 + vpxor ymm13,ymm13,YMMWORD[((192-128))+rax] + vpsrld ymm8,ymm3,27 + vpxor ymm5,ymm5,ymm0 + vpxor ymm13,ymm13,ymm10 + + vpslld ymm6,ymm4,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm2,ymm2,ymm5 + vpsrld ymm9,ymm13,31 + vpaddd ymm13,ymm13,ymm13 + + vpsrld ymm4,ymm4,2 + vpaddd ymm2,ymm2,ymm7 + vpor ymm13,ymm13,ymm9 + vpor ymm4,ymm4,ymm6 + vpxor ymm14,ymm14,ymm11 + vmovdqa ymm11,YMMWORD[((32-128))+rax] + + vpslld ymm7,ymm2,5 + vpaddd ymm1,ymm1,ymm15 + vpxor ymm5,ymm0,ymm3 + vpaddd ymm1,ymm1,ymm13 + vpxor ymm14,ymm14,YMMWORD[((224-128))+rax] + vpsrld ymm8,ymm2,27 + vpxor ymm5,ymm5,ymm4 + vpxor ymm14,ymm14,ymm11 + + vpslld ymm6,ymm3,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm1,ymm1,ymm5 + vpsrld ymm9,ymm14,31 + vpaddd ymm14,ymm14,ymm14 + + vpsrld ymm3,ymm3,2 + vpaddd ymm1,ymm1,ymm7 + vpor ymm14,ymm14,ymm9 + vpor ymm3,ymm3,ymm6 + vpslld ymm7,ymm1,5 + vpaddd ymm0,ymm0,ymm15 + vpxor ymm5,ymm4,ymm2 + + vpsrld ymm8,ymm1,27 + vpaddd ymm0,ymm0,ymm14 + vpxor ymm5,ymm5,ymm3 + + vpslld ymm6,ymm2,30 + vpor ymm7,ymm7,ymm8 + vpaddd ymm0,ymm0,ymm5 + + vpsrld ymm2,ymm2,2 + vpaddd ymm0,ymm0,ymm7 + vpor ymm2,ymm2,ymm6 + mov ecx,1 + lea rbx,[512+rsp] + cmp ecx,DWORD[rbx] + cmovge r12,rbp + cmp ecx,DWORD[4+rbx] + cmovge r13,rbp + cmp ecx,DWORD[8+rbx] + cmovge r14,rbp + cmp ecx,DWORD[12+rbx] + cmovge r15,rbp + cmp ecx,DWORD[16+rbx] + cmovge r8,rbp + cmp ecx,DWORD[20+rbx] + cmovge r9,rbp + cmp ecx,DWORD[24+rbx] + cmovge r10,rbp + cmp ecx,DWORD[28+rbx] + cmovge r11,rbp + vmovdqu ymm5,YMMWORD[rbx] + vpxor ymm7,ymm7,ymm7 + vmovdqa ymm6,ymm5 + vpcmpgtd ymm6,ymm6,ymm7 + vpaddd ymm5,ymm5,ymm6 + + vpand ymm0,ymm0,ymm6 + vpand ymm1,ymm1,ymm6 + vpaddd ymm0,ymm0,YMMWORD[rdi] + vpand ymm2,ymm2,ymm6 + vpaddd ymm1,ymm1,YMMWORD[32+rdi] + vpand ymm3,ymm3,ymm6 + vpaddd ymm2,ymm2,YMMWORD[64+rdi] + vpand ymm4,ymm4,ymm6 + vpaddd ymm3,ymm3,YMMWORD[96+rdi] + vpaddd ymm4,ymm4,YMMWORD[128+rdi] + vmovdqu YMMWORD[rdi],ymm0 + vmovdqu YMMWORD[32+rdi],ymm1 + vmovdqu YMMWORD[64+rdi],ymm2 + vmovdqu YMMWORD[96+rdi],ymm3 + vmovdqu YMMWORD[128+rdi],ymm4 + + vmovdqu YMMWORD[rbx],ymm5 + lea rbx,[((256+128))+rsp] + vmovdqu ymm9,YMMWORD[96+rbp] + dec edx + jnz NEAR $L$oop_avx2 + + + + + + + +$L$done_avx2: + mov rax,QWORD[544+rsp] + + vzeroupper + movaps xmm6,XMMWORD[((-216))+rax] + movaps xmm7,XMMWORD[((-200))+rax] + movaps xmm8,XMMWORD[((-184))+rax] + movaps xmm9,XMMWORD[((-168))+rax] + movaps xmm10,XMMWORD[((-152))+rax] + movaps xmm11,XMMWORD[((-136))+rax] + movaps xmm12,XMMWORD[((-120))+rax] + movaps xmm13,XMMWORD[((-104))+rax] + movaps xmm14,XMMWORD[((-88))+rax] + movaps xmm15,XMMWORD[((-72))+rax] + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$epilogue_avx2: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha1_multi_block_avx2: + +ALIGN 256 + DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 + DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 +K_XX_XX: + DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 + DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 + DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc + DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc + DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 + DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 +DB 83,72,65,49,32,109,117,108,116,105,45,98,108,111,99,107 +DB 32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120 +DB 56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77 +DB 83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110 +DB 115,115,108,46,111,114,103,62,0 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$in_prologue + + mov rax,QWORD[272+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + + lea rsi,[((-24-160))+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +ALIGN 16 +avx2_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$in_prologue + + mov rax,QWORD[544+r8] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + + lea rsi,[((-56-160))+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + + jmp NEAR $L$in_prologue + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_sha1_multi_block wrt ..imagebase + DD $L$SEH_end_sha1_multi_block wrt ..imagebase + DD $L$SEH_info_sha1_multi_block wrt ..imagebase + DD $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase + DD $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase + DD $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase + DD $L$SEH_begin_sha1_multi_block_avx wrt ..imagebase + DD $L$SEH_end_sha1_multi_block_avx wrt ..imagebase + DD $L$SEH_info_sha1_multi_block_avx wrt ..imagebase + DD $L$SEH_begin_sha1_multi_block_avx2 wrt ..imagebase + DD $L$SEH_end_sha1_multi_block_avx2 wrt ..imagebase + DD $L$SEH_info_sha1_multi_block_avx2 wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_sha1_multi_block: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase +$L$SEH_info_sha1_multi_block_shaext: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$body_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase +$L$SEH_info_sha1_multi_block_avx: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$body_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase +$L$SEH_info_sha1_multi_block_avx2: +DB 9,0,0,0 + DD avx2_handler wrt ..imagebase + DD $L$body_avx2 wrt ..imagebase,$L$epilogue_avx2 wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha1-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha1-x86_64.asm new file mode 100644 index 0000000..1b60a7c --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha1-x86_64.asm @@ -0,0 +1,5766 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +EXTERN OPENSSL_ia32cap_P + +global sha1_block_data_order + +ALIGN 16 +sha1_block_data_order: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha1_block_data_order: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + mov r9d,DWORD[((OPENSSL_ia32cap_P+0))] + mov r8d,DWORD[((OPENSSL_ia32cap_P+4))] + mov r10d,DWORD[((OPENSSL_ia32cap_P+8))] + test r8d,512 + jz NEAR $L$ialu + test r10d,536870912 + jnz NEAR _shaext_shortcut + and r10d,296 + cmp r10d,296 + je NEAR _avx2_shortcut + and r8d,268435456 + and r9d,1073741824 + or r8d,r9d + cmp r8d,1342177280 + je NEAR _avx_shortcut + jmp NEAR _ssse3_shortcut + +ALIGN 16 +$L$ialu: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + mov r8,rdi + sub rsp,72 + mov r9,rsi + and rsp,-64 + mov r10,rdx + mov QWORD[64+rsp],rax + +$L$prologue: + + mov esi,DWORD[r8] + mov edi,DWORD[4+r8] + mov r11d,DWORD[8+r8] + mov r12d,DWORD[12+r8] + mov r13d,DWORD[16+r8] + jmp NEAR $L$loop + +ALIGN 16 +$L$loop: + mov edx,DWORD[r9] + bswap edx + mov ebp,DWORD[4+r9] + mov eax,r12d + mov DWORD[rsp],edx + mov ecx,esi + bswap ebp + xor eax,r11d + rol ecx,5 + and eax,edi + lea r13d,[1518500249+r13*1+rdx] + add r13d,ecx + xor eax,r12d + rol edi,30 + add r13d,eax + mov r14d,DWORD[8+r9] + mov eax,r11d + mov DWORD[4+rsp],ebp + mov ecx,r13d + bswap r14d + xor eax,edi + rol ecx,5 + and eax,esi + lea r12d,[1518500249+r12*1+rbp] + add r12d,ecx + xor eax,r11d + rol esi,30 + add r12d,eax + mov edx,DWORD[12+r9] + mov eax,edi + mov DWORD[8+rsp],r14d + mov ecx,r12d + bswap edx + xor eax,esi + rol ecx,5 + and eax,r13d + lea r11d,[1518500249+r11*1+r14] + add r11d,ecx + xor eax,edi + rol r13d,30 + add r11d,eax + mov ebp,DWORD[16+r9] + mov eax,esi + mov DWORD[12+rsp],edx + mov ecx,r11d + bswap ebp + xor eax,r13d + rol ecx,5 + and eax,r12d + lea edi,[1518500249+rdi*1+rdx] + add edi,ecx + xor eax,esi + rol r12d,30 + add edi,eax + mov r14d,DWORD[20+r9] + mov eax,r13d + mov DWORD[16+rsp],ebp + mov ecx,edi + bswap r14d + xor eax,r12d + rol ecx,5 + and eax,r11d + lea esi,[1518500249+rsi*1+rbp] + add esi,ecx + xor eax,r13d + rol r11d,30 + add esi,eax + mov edx,DWORD[24+r9] + mov eax,r12d + mov DWORD[20+rsp],r14d + mov ecx,esi + bswap edx + xor eax,r11d + rol ecx,5 + and eax,edi + lea r13d,[1518500249+r13*1+r14] + add r13d,ecx + xor eax,r12d + rol edi,30 + add r13d,eax + mov ebp,DWORD[28+r9] + mov eax,r11d + mov DWORD[24+rsp],edx + mov ecx,r13d + bswap ebp + xor eax,edi + rol ecx,5 + and eax,esi + lea r12d,[1518500249+r12*1+rdx] + add r12d,ecx + xor eax,r11d + rol esi,30 + add r12d,eax + mov r14d,DWORD[32+r9] + mov eax,edi + mov DWORD[28+rsp],ebp + mov ecx,r12d + bswap r14d + xor eax,esi + rol ecx,5 + and eax,r13d + lea r11d,[1518500249+r11*1+rbp] + add r11d,ecx + xor eax,edi + rol r13d,30 + add r11d,eax + mov edx,DWORD[36+r9] + mov eax,esi + mov DWORD[32+rsp],r14d + mov ecx,r11d + bswap edx + xor eax,r13d + rol ecx,5 + and eax,r12d + lea edi,[1518500249+rdi*1+r14] + add edi,ecx + xor eax,esi + rol r12d,30 + add edi,eax + mov ebp,DWORD[40+r9] + mov eax,r13d + mov DWORD[36+rsp],edx + mov ecx,edi + bswap ebp + xor eax,r12d + rol ecx,5 + and eax,r11d + lea esi,[1518500249+rsi*1+rdx] + add esi,ecx + xor eax,r13d + rol r11d,30 + add esi,eax + mov r14d,DWORD[44+r9] + mov eax,r12d + mov DWORD[40+rsp],ebp + mov ecx,esi + bswap r14d + xor eax,r11d + rol ecx,5 + and eax,edi + lea r13d,[1518500249+r13*1+rbp] + add r13d,ecx + xor eax,r12d + rol edi,30 + add r13d,eax + mov edx,DWORD[48+r9] + mov eax,r11d + mov DWORD[44+rsp],r14d + mov ecx,r13d + bswap edx + xor eax,edi + rol ecx,5 + and eax,esi + lea r12d,[1518500249+r12*1+r14] + add r12d,ecx + xor eax,r11d + rol esi,30 + add r12d,eax + mov ebp,DWORD[52+r9] + mov eax,edi + mov DWORD[48+rsp],edx + mov ecx,r12d + bswap ebp + xor eax,esi + rol ecx,5 + and eax,r13d + lea r11d,[1518500249+r11*1+rdx] + add r11d,ecx + xor eax,edi + rol r13d,30 + add r11d,eax + mov r14d,DWORD[56+r9] + mov eax,esi + mov DWORD[52+rsp],ebp + mov ecx,r11d + bswap r14d + xor eax,r13d + rol ecx,5 + and eax,r12d + lea edi,[1518500249+rdi*1+rbp] + add edi,ecx + xor eax,esi + rol r12d,30 + add edi,eax + mov edx,DWORD[60+r9] + mov eax,r13d + mov DWORD[56+rsp],r14d + mov ecx,edi + bswap edx + xor eax,r12d + rol ecx,5 + and eax,r11d + lea esi,[1518500249+rsi*1+r14] + add esi,ecx + xor eax,r13d + rol r11d,30 + add esi,eax + xor ebp,DWORD[rsp] + mov eax,r12d + mov DWORD[60+rsp],edx + mov ecx,esi + xor ebp,DWORD[8+rsp] + xor eax,r11d + rol ecx,5 + xor ebp,DWORD[32+rsp] + and eax,edi + lea r13d,[1518500249+r13*1+rdx] + rol edi,30 + xor eax,r12d + add r13d,ecx + rol ebp,1 + add r13d,eax + xor r14d,DWORD[4+rsp] + mov eax,r11d + mov DWORD[rsp],ebp + mov ecx,r13d + xor r14d,DWORD[12+rsp] + xor eax,edi + rol ecx,5 + xor r14d,DWORD[36+rsp] + and eax,esi + lea r12d,[1518500249+r12*1+rbp] + rol esi,30 + xor eax,r11d + add r12d,ecx + rol r14d,1 + add r12d,eax + xor edx,DWORD[8+rsp] + mov eax,edi + mov DWORD[4+rsp],r14d + mov ecx,r12d + xor edx,DWORD[16+rsp] + xor eax,esi + rol ecx,5 + xor edx,DWORD[40+rsp] + and eax,r13d + lea r11d,[1518500249+r11*1+r14] + rol r13d,30 + xor eax,edi + add r11d,ecx + rol edx,1 + add r11d,eax + xor ebp,DWORD[12+rsp] + mov eax,esi + mov DWORD[8+rsp],edx + mov ecx,r11d + xor ebp,DWORD[20+rsp] + xor eax,r13d + rol ecx,5 + xor ebp,DWORD[44+rsp] + and eax,r12d + lea edi,[1518500249+rdi*1+rdx] + rol r12d,30 + xor eax,esi + add edi,ecx + rol ebp,1 + add edi,eax + xor r14d,DWORD[16+rsp] + mov eax,r13d + mov DWORD[12+rsp],ebp + mov ecx,edi + xor r14d,DWORD[24+rsp] + xor eax,r12d + rol ecx,5 + xor r14d,DWORD[48+rsp] + and eax,r11d + lea esi,[1518500249+rsi*1+rbp] + rol r11d,30 + xor eax,r13d + add esi,ecx + rol r14d,1 + add esi,eax + xor edx,DWORD[20+rsp] + mov eax,edi + mov DWORD[16+rsp],r14d + mov ecx,esi + xor edx,DWORD[28+rsp] + xor eax,r12d + rol ecx,5 + xor edx,DWORD[52+rsp] + lea r13d,[1859775393+r13*1+r14] + xor eax,r11d + add r13d,ecx + rol edi,30 + add r13d,eax + rol edx,1 + xor ebp,DWORD[24+rsp] + mov eax,esi + mov DWORD[20+rsp],edx + mov ecx,r13d + xor ebp,DWORD[32+rsp] + xor eax,r11d + rol ecx,5 + xor ebp,DWORD[56+rsp] + lea r12d,[1859775393+r12*1+rdx] + xor eax,edi + add r12d,ecx + rol esi,30 + add r12d,eax + rol ebp,1 + xor r14d,DWORD[28+rsp] + mov eax,r13d + mov DWORD[24+rsp],ebp + mov ecx,r12d + xor r14d,DWORD[36+rsp] + xor eax,edi + rol ecx,5 + xor r14d,DWORD[60+rsp] + lea r11d,[1859775393+r11*1+rbp] + xor eax,esi + add r11d,ecx + rol r13d,30 + add r11d,eax + rol r14d,1 + xor edx,DWORD[32+rsp] + mov eax,r12d + mov DWORD[28+rsp],r14d + mov ecx,r11d + xor edx,DWORD[40+rsp] + xor eax,esi + rol ecx,5 + xor edx,DWORD[rsp] + lea edi,[1859775393+rdi*1+r14] + xor eax,r13d + add edi,ecx + rol r12d,30 + add edi,eax + rol edx,1 + xor ebp,DWORD[36+rsp] + mov eax,r11d + mov DWORD[32+rsp],edx + mov ecx,edi + xor ebp,DWORD[44+rsp] + xor eax,r13d + rol ecx,5 + xor ebp,DWORD[4+rsp] + lea esi,[1859775393+rsi*1+rdx] + xor eax,r12d + add esi,ecx + rol r11d,30 + add esi,eax + rol ebp,1 + xor r14d,DWORD[40+rsp] + mov eax,edi + mov DWORD[36+rsp],ebp + mov ecx,esi + xor r14d,DWORD[48+rsp] + xor eax,r12d + rol ecx,5 + xor r14d,DWORD[8+rsp] + lea r13d,[1859775393+r13*1+rbp] + xor eax,r11d + add r13d,ecx + rol edi,30 + add r13d,eax + rol r14d,1 + xor edx,DWORD[44+rsp] + mov eax,esi + mov DWORD[40+rsp],r14d + mov ecx,r13d + xor edx,DWORD[52+rsp] + xor eax,r11d + rol ecx,5 + xor edx,DWORD[12+rsp] + lea r12d,[1859775393+r12*1+r14] + xor eax,edi + add r12d,ecx + rol esi,30 + add r12d,eax + rol edx,1 + xor ebp,DWORD[48+rsp] + mov eax,r13d + mov DWORD[44+rsp],edx + mov ecx,r12d + xor ebp,DWORD[56+rsp] + xor eax,edi + rol ecx,5 + xor ebp,DWORD[16+rsp] + lea r11d,[1859775393+r11*1+rdx] + xor eax,esi + add r11d,ecx + rol r13d,30 + add r11d,eax + rol ebp,1 + xor r14d,DWORD[52+rsp] + mov eax,r12d + mov DWORD[48+rsp],ebp + mov ecx,r11d + xor r14d,DWORD[60+rsp] + xor eax,esi + rol ecx,5 + xor r14d,DWORD[20+rsp] + lea edi,[1859775393+rdi*1+rbp] + xor eax,r13d + add edi,ecx + rol r12d,30 + add edi,eax + rol r14d,1 + xor edx,DWORD[56+rsp] + mov eax,r11d + mov DWORD[52+rsp],r14d + mov ecx,edi + xor edx,DWORD[rsp] + xor eax,r13d + rol ecx,5 + xor edx,DWORD[24+rsp] + lea esi,[1859775393+rsi*1+r14] + xor eax,r12d + add esi,ecx + rol r11d,30 + add esi,eax + rol edx,1 + xor ebp,DWORD[60+rsp] + mov eax,edi + mov DWORD[56+rsp],edx + mov ecx,esi + xor ebp,DWORD[4+rsp] + xor eax,r12d + rol ecx,5 + xor ebp,DWORD[28+rsp] + lea r13d,[1859775393+r13*1+rdx] + xor eax,r11d + add r13d,ecx + rol edi,30 + add r13d,eax + rol ebp,1 + xor r14d,DWORD[rsp] + mov eax,esi + mov DWORD[60+rsp],ebp + mov ecx,r13d + xor r14d,DWORD[8+rsp] + xor eax,r11d + rol ecx,5 + xor r14d,DWORD[32+rsp] + lea r12d,[1859775393+r12*1+rbp] + xor eax,edi + add r12d,ecx + rol esi,30 + add r12d,eax + rol r14d,1 + xor edx,DWORD[4+rsp] + mov eax,r13d + mov DWORD[rsp],r14d + mov ecx,r12d + xor edx,DWORD[12+rsp] + xor eax,edi + rol ecx,5 + xor edx,DWORD[36+rsp] + lea r11d,[1859775393+r11*1+r14] + xor eax,esi + add r11d,ecx + rol r13d,30 + add r11d,eax + rol edx,1 + xor ebp,DWORD[8+rsp] + mov eax,r12d + mov DWORD[4+rsp],edx + mov ecx,r11d + xor ebp,DWORD[16+rsp] + xor eax,esi + rol ecx,5 + xor ebp,DWORD[40+rsp] + lea edi,[1859775393+rdi*1+rdx] + xor eax,r13d + add edi,ecx + rol r12d,30 + add edi,eax + rol ebp,1 + xor r14d,DWORD[12+rsp] + mov eax,r11d + mov DWORD[8+rsp],ebp + mov ecx,edi + xor r14d,DWORD[20+rsp] + xor eax,r13d + rol ecx,5 + xor r14d,DWORD[44+rsp] + lea esi,[1859775393+rsi*1+rbp] + xor eax,r12d + add esi,ecx + rol r11d,30 + add esi,eax + rol r14d,1 + xor edx,DWORD[16+rsp] + mov eax,edi + mov DWORD[12+rsp],r14d + mov ecx,esi + xor edx,DWORD[24+rsp] + xor eax,r12d + rol ecx,5 + xor edx,DWORD[48+rsp] + lea r13d,[1859775393+r13*1+r14] + xor eax,r11d + add r13d,ecx + rol edi,30 + add r13d,eax + rol edx,1 + xor ebp,DWORD[20+rsp] + mov eax,esi + mov DWORD[16+rsp],edx + mov ecx,r13d + xor ebp,DWORD[28+rsp] + xor eax,r11d + rol ecx,5 + xor ebp,DWORD[52+rsp] + lea r12d,[1859775393+r12*1+rdx] + xor eax,edi + add r12d,ecx + rol esi,30 + add r12d,eax + rol ebp,1 + xor r14d,DWORD[24+rsp] + mov eax,r13d + mov DWORD[20+rsp],ebp + mov ecx,r12d + xor r14d,DWORD[32+rsp] + xor eax,edi + rol ecx,5 + xor r14d,DWORD[56+rsp] + lea r11d,[1859775393+r11*1+rbp] + xor eax,esi + add r11d,ecx + rol r13d,30 + add r11d,eax + rol r14d,1 + xor edx,DWORD[28+rsp] + mov eax,r12d + mov DWORD[24+rsp],r14d + mov ecx,r11d + xor edx,DWORD[36+rsp] + xor eax,esi + rol ecx,5 + xor edx,DWORD[60+rsp] + lea edi,[1859775393+rdi*1+r14] + xor eax,r13d + add edi,ecx + rol r12d,30 + add edi,eax + rol edx,1 + xor ebp,DWORD[32+rsp] + mov eax,r11d + mov DWORD[28+rsp],edx + mov ecx,edi + xor ebp,DWORD[40+rsp] + xor eax,r13d + rol ecx,5 + xor ebp,DWORD[rsp] + lea esi,[1859775393+rsi*1+rdx] + xor eax,r12d + add esi,ecx + rol r11d,30 + add esi,eax + rol ebp,1 + xor r14d,DWORD[36+rsp] + mov eax,r12d + mov DWORD[32+rsp],ebp + mov ebx,r12d + xor r14d,DWORD[44+rsp] + and eax,r11d + mov ecx,esi + xor r14d,DWORD[4+rsp] + lea r13d,[((-1894007588))+r13*1+rbp] + xor ebx,r11d + rol ecx,5 + add r13d,eax + rol r14d,1 + and ebx,edi + add r13d,ecx + rol edi,30 + add r13d,ebx + xor edx,DWORD[40+rsp] + mov eax,r11d + mov DWORD[36+rsp],r14d + mov ebx,r11d + xor edx,DWORD[48+rsp] + and eax,edi + mov ecx,r13d + xor edx,DWORD[8+rsp] + lea r12d,[((-1894007588))+r12*1+r14] + xor ebx,edi + rol ecx,5 + add r12d,eax + rol edx,1 + and ebx,esi + add r12d,ecx + rol esi,30 + add r12d,ebx + xor ebp,DWORD[44+rsp] + mov eax,edi + mov DWORD[40+rsp],edx + mov ebx,edi + xor ebp,DWORD[52+rsp] + and eax,esi + mov ecx,r12d + xor ebp,DWORD[12+rsp] + lea r11d,[((-1894007588))+r11*1+rdx] + xor ebx,esi + rol ecx,5 + add r11d,eax + rol ebp,1 + and ebx,r13d + add r11d,ecx + rol r13d,30 + add r11d,ebx + xor r14d,DWORD[48+rsp] + mov eax,esi + mov DWORD[44+rsp],ebp + mov ebx,esi + xor r14d,DWORD[56+rsp] + and eax,r13d + mov ecx,r11d + xor r14d,DWORD[16+rsp] + lea edi,[((-1894007588))+rdi*1+rbp] + xor ebx,r13d + rol ecx,5 + add edi,eax + rol r14d,1 + and ebx,r12d + add edi,ecx + rol r12d,30 + add edi,ebx + xor edx,DWORD[52+rsp] + mov eax,r13d + mov DWORD[48+rsp],r14d + mov ebx,r13d + xor edx,DWORD[60+rsp] + and eax,r12d + mov ecx,edi + xor edx,DWORD[20+rsp] + lea esi,[((-1894007588))+rsi*1+r14] + xor ebx,r12d + rol ecx,5 + add esi,eax + rol edx,1 + and ebx,r11d + add esi,ecx + rol r11d,30 + add esi,ebx + xor ebp,DWORD[56+rsp] + mov eax,r12d + mov DWORD[52+rsp],edx + mov ebx,r12d + xor ebp,DWORD[rsp] + and eax,r11d + mov ecx,esi + xor ebp,DWORD[24+rsp] + lea r13d,[((-1894007588))+r13*1+rdx] + xor ebx,r11d + rol ecx,5 + add r13d,eax + rol ebp,1 + and ebx,edi + add r13d,ecx + rol edi,30 + add r13d,ebx + xor r14d,DWORD[60+rsp] + mov eax,r11d + mov DWORD[56+rsp],ebp + mov ebx,r11d + xor r14d,DWORD[4+rsp] + and eax,edi + mov ecx,r13d + xor r14d,DWORD[28+rsp] + lea r12d,[((-1894007588))+r12*1+rbp] + xor ebx,edi + rol ecx,5 + add r12d,eax + rol r14d,1 + and ebx,esi + add r12d,ecx + rol esi,30 + add r12d,ebx + xor edx,DWORD[rsp] + mov eax,edi + mov DWORD[60+rsp],r14d + mov ebx,edi + xor edx,DWORD[8+rsp] + and eax,esi + mov ecx,r12d + xor edx,DWORD[32+rsp] + lea r11d,[((-1894007588))+r11*1+r14] + xor ebx,esi + rol ecx,5 + add r11d,eax + rol edx,1 + and ebx,r13d + add r11d,ecx + rol r13d,30 + add r11d,ebx + xor ebp,DWORD[4+rsp] + mov eax,esi + mov DWORD[rsp],edx + mov ebx,esi + xor ebp,DWORD[12+rsp] + and eax,r13d + mov ecx,r11d + xor ebp,DWORD[36+rsp] + lea edi,[((-1894007588))+rdi*1+rdx] + xor ebx,r13d + rol ecx,5 + add edi,eax + rol ebp,1 + and ebx,r12d + add edi,ecx + rol r12d,30 + add edi,ebx + xor r14d,DWORD[8+rsp] + mov eax,r13d + mov DWORD[4+rsp],ebp + mov ebx,r13d + xor r14d,DWORD[16+rsp] + and eax,r12d + mov ecx,edi + xor r14d,DWORD[40+rsp] + lea esi,[((-1894007588))+rsi*1+rbp] + xor ebx,r12d + rol ecx,5 + add esi,eax + rol r14d,1 + and ebx,r11d + add esi,ecx + rol r11d,30 + add esi,ebx + xor edx,DWORD[12+rsp] + mov eax,r12d + mov DWORD[8+rsp],r14d + mov ebx,r12d + xor edx,DWORD[20+rsp] + and eax,r11d + mov ecx,esi + xor edx,DWORD[44+rsp] + lea r13d,[((-1894007588))+r13*1+r14] + xor ebx,r11d + rol ecx,5 + add r13d,eax + rol edx,1 + and ebx,edi + add r13d,ecx + rol edi,30 + add r13d,ebx + xor ebp,DWORD[16+rsp] + mov eax,r11d + mov DWORD[12+rsp],edx + mov ebx,r11d + xor ebp,DWORD[24+rsp] + and eax,edi + mov ecx,r13d + xor ebp,DWORD[48+rsp] + lea r12d,[((-1894007588))+r12*1+rdx] + xor ebx,edi + rol ecx,5 + add r12d,eax + rol ebp,1 + and ebx,esi + add r12d,ecx + rol esi,30 + add r12d,ebx + xor r14d,DWORD[20+rsp] + mov eax,edi + mov DWORD[16+rsp],ebp + mov ebx,edi + xor r14d,DWORD[28+rsp] + and eax,esi + mov ecx,r12d + xor r14d,DWORD[52+rsp] + lea r11d,[((-1894007588))+r11*1+rbp] + xor ebx,esi + rol ecx,5 + add r11d,eax + rol r14d,1 + and ebx,r13d + add r11d,ecx + rol r13d,30 + add r11d,ebx + xor edx,DWORD[24+rsp] + mov eax,esi + mov DWORD[20+rsp],r14d + mov ebx,esi + xor edx,DWORD[32+rsp] + and eax,r13d + mov ecx,r11d + xor edx,DWORD[56+rsp] + lea edi,[((-1894007588))+rdi*1+r14] + xor ebx,r13d + rol ecx,5 + add edi,eax + rol edx,1 + and ebx,r12d + add edi,ecx + rol r12d,30 + add edi,ebx + xor ebp,DWORD[28+rsp] + mov eax,r13d + mov DWORD[24+rsp],edx + mov ebx,r13d + xor ebp,DWORD[36+rsp] + and eax,r12d + mov ecx,edi + xor ebp,DWORD[60+rsp] + lea esi,[((-1894007588))+rsi*1+rdx] + xor ebx,r12d + rol ecx,5 + add esi,eax + rol ebp,1 + and ebx,r11d + add esi,ecx + rol r11d,30 + add esi,ebx + xor r14d,DWORD[32+rsp] + mov eax,r12d + mov DWORD[28+rsp],ebp + mov ebx,r12d + xor r14d,DWORD[40+rsp] + and eax,r11d + mov ecx,esi + xor r14d,DWORD[rsp] + lea r13d,[((-1894007588))+r13*1+rbp] + xor ebx,r11d + rol ecx,5 + add r13d,eax + rol r14d,1 + and ebx,edi + add r13d,ecx + rol edi,30 + add r13d,ebx + xor edx,DWORD[36+rsp] + mov eax,r11d + mov DWORD[32+rsp],r14d + mov ebx,r11d + xor edx,DWORD[44+rsp] + and eax,edi + mov ecx,r13d + xor edx,DWORD[4+rsp] + lea r12d,[((-1894007588))+r12*1+r14] + xor ebx,edi + rol ecx,5 + add r12d,eax + rol edx,1 + and ebx,esi + add r12d,ecx + rol esi,30 + add r12d,ebx + xor ebp,DWORD[40+rsp] + mov eax,edi + mov DWORD[36+rsp],edx + mov ebx,edi + xor ebp,DWORD[48+rsp] + and eax,esi + mov ecx,r12d + xor ebp,DWORD[8+rsp] + lea r11d,[((-1894007588))+r11*1+rdx] + xor ebx,esi + rol ecx,5 + add r11d,eax + rol ebp,1 + and ebx,r13d + add r11d,ecx + rol r13d,30 + add r11d,ebx + xor r14d,DWORD[44+rsp] + mov eax,esi + mov DWORD[40+rsp],ebp + mov ebx,esi + xor r14d,DWORD[52+rsp] + and eax,r13d + mov ecx,r11d + xor r14d,DWORD[12+rsp] + lea edi,[((-1894007588))+rdi*1+rbp] + xor ebx,r13d + rol ecx,5 + add edi,eax + rol r14d,1 + and ebx,r12d + add edi,ecx + rol r12d,30 + add edi,ebx + xor edx,DWORD[48+rsp] + mov eax,r13d + mov DWORD[44+rsp],r14d + mov ebx,r13d + xor edx,DWORD[56+rsp] + and eax,r12d + mov ecx,edi + xor edx,DWORD[16+rsp] + lea esi,[((-1894007588))+rsi*1+r14] + xor ebx,r12d + rol ecx,5 + add esi,eax + rol edx,1 + and ebx,r11d + add esi,ecx + rol r11d,30 + add esi,ebx + xor ebp,DWORD[52+rsp] + mov eax,edi + mov DWORD[48+rsp],edx + mov ecx,esi + xor ebp,DWORD[60+rsp] + xor eax,r12d + rol ecx,5 + xor ebp,DWORD[20+rsp] + lea r13d,[((-899497514))+r13*1+rdx] + xor eax,r11d + add r13d,ecx + rol edi,30 + add r13d,eax + rol ebp,1 + xor r14d,DWORD[56+rsp] + mov eax,esi + mov DWORD[52+rsp],ebp + mov ecx,r13d + xor r14d,DWORD[rsp] + xor eax,r11d + rol ecx,5 + xor r14d,DWORD[24+rsp] + lea r12d,[((-899497514))+r12*1+rbp] + xor eax,edi + add r12d,ecx + rol esi,30 + add r12d,eax + rol r14d,1 + xor edx,DWORD[60+rsp] + mov eax,r13d + mov DWORD[56+rsp],r14d + mov ecx,r12d + xor edx,DWORD[4+rsp] + xor eax,edi + rol ecx,5 + xor edx,DWORD[28+rsp] + lea r11d,[((-899497514))+r11*1+r14] + xor eax,esi + add r11d,ecx + rol r13d,30 + add r11d,eax + rol edx,1 + xor ebp,DWORD[rsp] + mov eax,r12d + mov DWORD[60+rsp],edx + mov ecx,r11d + xor ebp,DWORD[8+rsp] + xor eax,esi + rol ecx,5 + xor ebp,DWORD[32+rsp] + lea edi,[((-899497514))+rdi*1+rdx] + xor eax,r13d + add edi,ecx + rol r12d,30 + add edi,eax + rol ebp,1 + xor r14d,DWORD[4+rsp] + mov eax,r11d + mov DWORD[rsp],ebp + mov ecx,edi + xor r14d,DWORD[12+rsp] + xor eax,r13d + rol ecx,5 + xor r14d,DWORD[36+rsp] + lea esi,[((-899497514))+rsi*1+rbp] + xor eax,r12d + add esi,ecx + rol r11d,30 + add esi,eax + rol r14d,1 + xor edx,DWORD[8+rsp] + mov eax,edi + mov DWORD[4+rsp],r14d + mov ecx,esi + xor edx,DWORD[16+rsp] + xor eax,r12d + rol ecx,5 + xor edx,DWORD[40+rsp] + lea r13d,[((-899497514))+r13*1+r14] + xor eax,r11d + add r13d,ecx + rol edi,30 + add r13d,eax + rol edx,1 + xor ebp,DWORD[12+rsp] + mov eax,esi + mov DWORD[8+rsp],edx + mov ecx,r13d + xor ebp,DWORD[20+rsp] + xor eax,r11d + rol ecx,5 + xor ebp,DWORD[44+rsp] + lea r12d,[((-899497514))+r12*1+rdx] + xor eax,edi + add r12d,ecx + rol esi,30 + add r12d,eax + rol ebp,1 + xor r14d,DWORD[16+rsp] + mov eax,r13d + mov DWORD[12+rsp],ebp + mov ecx,r12d + xor r14d,DWORD[24+rsp] + xor eax,edi + rol ecx,5 + xor r14d,DWORD[48+rsp] + lea r11d,[((-899497514))+r11*1+rbp] + xor eax,esi + add r11d,ecx + rol r13d,30 + add r11d,eax + rol r14d,1 + xor edx,DWORD[20+rsp] + mov eax,r12d + mov DWORD[16+rsp],r14d + mov ecx,r11d + xor edx,DWORD[28+rsp] + xor eax,esi + rol ecx,5 + xor edx,DWORD[52+rsp] + lea edi,[((-899497514))+rdi*1+r14] + xor eax,r13d + add edi,ecx + rol r12d,30 + add edi,eax + rol edx,1 + xor ebp,DWORD[24+rsp] + mov eax,r11d + mov DWORD[20+rsp],edx + mov ecx,edi + xor ebp,DWORD[32+rsp] + xor eax,r13d + rol ecx,5 + xor ebp,DWORD[56+rsp] + lea esi,[((-899497514))+rsi*1+rdx] + xor eax,r12d + add esi,ecx + rol r11d,30 + add esi,eax + rol ebp,1 + xor r14d,DWORD[28+rsp] + mov eax,edi + mov DWORD[24+rsp],ebp + mov ecx,esi + xor r14d,DWORD[36+rsp] + xor eax,r12d + rol ecx,5 + xor r14d,DWORD[60+rsp] + lea r13d,[((-899497514))+r13*1+rbp] + xor eax,r11d + add r13d,ecx + rol edi,30 + add r13d,eax + rol r14d,1 + xor edx,DWORD[32+rsp] + mov eax,esi + mov DWORD[28+rsp],r14d + mov ecx,r13d + xor edx,DWORD[40+rsp] + xor eax,r11d + rol ecx,5 + xor edx,DWORD[rsp] + lea r12d,[((-899497514))+r12*1+r14] + xor eax,edi + add r12d,ecx + rol esi,30 + add r12d,eax + rol edx,1 + xor ebp,DWORD[36+rsp] + mov eax,r13d + + mov ecx,r12d + xor ebp,DWORD[44+rsp] + xor eax,edi + rol ecx,5 + xor ebp,DWORD[4+rsp] + lea r11d,[((-899497514))+r11*1+rdx] + xor eax,esi + add r11d,ecx + rol r13d,30 + add r11d,eax + rol ebp,1 + xor r14d,DWORD[40+rsp] + mov eax,r12d + + mov ecx,r11d + xor r14d,DWORD[48+rsp] + xor eax,esi + rol ecx,5 + xor r14d,DWORD[8+rsp] + lea edi,[((-899497514))+rdi*1+rbp] + xor eax,r13d + add edi,ecx + rol r12d,30 + add edi,eax + rol r14d,1 + xor edx,DWORD[44+rsp] + mov eax,r11d + + mov ecx,edi + xor edx,DWORD[52+rsp] + xor eax,r13d + rol ecx,5 + xor edx,DWORD[12+rsp] + lea esi,[((-899497514))+rsi*1+r14] + xor eax,r12d + add esi,ecx + rol r11d,30 + add esi,eax + rol edx,1 + xor ebp,DWORD[48+rsp] + mov eax,edi + + mov ecx,esi + xor ebp,DWORD[56+rsp] + xor eax,r12d + rol ecx,5 + xor ebp,DWORD[16+rsp] + lea r13d,[((-899497514))+r13*1+rdx] + xor eax,r11d + add r13d,ecx + rol edi,30 + add r13d,eax + rol ebp,1 + xor r14d,DWORD[52+rsp] + mov eax,esi + + mov ecx,r13d + xor r14d,DWORD[60+rsp] + xor eax,r11d + rol ecx,5 + xor r14d,DWORD[20+rsp] + lea r12d,[((-899497514))+r12*1+rbp] + xor eax,edi + add r12d,ecx + rol esi,30 + add r12d,eax + rol r14d,1 + xor edx,DWORD[56+rsp] + mov eax,r13d + + mov ecx,r12d + xor edx,DWORD[rsp] + xor eax,edi + rol ecx,5 + xor edx,DWORD[24+rsp] + lea r11d,[((-899497514))+r11*1+r14] + xor eax,esi + add r11d,ecx + rol r13d,30 + add r11d,eax + rol edx,1 + xor ebp,DWORD[60+rsp] + mov eax,r12d + + mov ecx,r11d + xor ebp,DWORD[4+rsp] + xor eax,esi + rol ecx,5 + xor ebp,DWORD[28+rsp] + lea edi,[((-899497514))+rdi*1+rdx] + xor eax,r13d + add edi,ecx + rol r12d,30 + add edi,eax + rol ebp,1 + mov eax,r11d + mov ecx,edi + xor eax,r13d + lea esi,[((-899497514))+rsi*1+rbp] + rol ecx,5 + xor eax,r12d + add esi,ecx + rol r11d,30 + add esi,eax + add esi,DWORD[r8] + add edi,DWORD[4+r8] + add r11d,DWORD[8+r8] + add r12d,DWORD[12+r8] + add r13d,DWORD[16+r8] + mov DWORD[r8],esi + mov DWORD[4+r8],edi + mov DWORD[8+r8],r11d + mov DWORD[12+r8],r12d + mov DWORD[16+r8],r13d + + sub r10,1 + lea r9,[64+r9] + jnz NEAR $L$loop + + mov rsi,QWORD[64+rsp] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha1_block_data_order: + +ALIGN 32 +sha1_block_data_order_shaext: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha1_block_data_order_shaext: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + +_shaext_shortcut: + + lea rsp,[((-72))+rsp] + movaps XMMWORD[(-8-64)+rax],xmm6 + movaps XMMWORD[(-8-48)+rax],xmm7 + movaps XMMWORD[(-8-32)+rax],xmm8 + movaps XMMWORD[(-8-16)+rax],xmm9 +$L$prologue_shaext: + movdqu xmm0,XMMWORD[rdi] + movd xmm1,DWORD[16+rdi] + movdqa xmm3,XMMWORD[((K_XX_XX+160))] + + movdqu xmm4,XMMWORD[rsi] + pshufd xmm0,xmm0,27 + movdqu xmm5,XMMWORD[16+rsi] + pshufd xmm1,xmm1,27 + movdqu xmm6,XMMWORD[32+rsi] +DB 102,15,56,0,227 + movdqu xmm7,XMMWORD[48+rsi] +DB 102,15,56,0,235 +DB 102,15,56,0,243 + movdqa xmm9,xmm1 +DB 102,15,56,0,251 + jmp NEAR $L$oop_shaext + +ALIGN 16 +$L$oop_shaext: + dec rdx + lea r8,[64+rsi] + paddd xmm1,xmm4 + cmovne rsi,r8 + movdqa xmm8,xmm0 +DB 15,56,201,229 + movdqa xmm2,xmm0 +DB 15,58,204,193,0 +DB 15,56,200,213 + pxor xmm4,xmm6 +DB 15,56,201,238 +DB 15,56,202,231 + + movdqa xmm1,xmm0 +DB 15,58,204,194,0 +DB 15,56,200,206 + pxor xmm5,xmm7 +DB 15,56,202,236 +DB 15,56,201,247 + movdqa xmm2,xmm0 +DB 15,58,204,193,0 +DB 15,56,200,215 + pxor xmm6,xmm4 +DB 15,56,201,252 +DB 15,56,202,245 + + movdqa xmm1,xmm0 +DB 15,58,204,194,0 +DB 15,56,200,204 + pxor xmm7,xmm5 +DB 15,56,202,254 +DB 15,56,201,229 + movdqa xmm2,xmm0 +DB 15,58,204,193,0 +DB 15,56,200,213 + pxor xmm4,xmm6 +DB 15,56,201,238 +DB 15,56,202,231 + + movdqa xmm1,xmm0 +DB 15,58,204,194,1 +DB 15,56,200,206 + pxor xmm5,xmm7 +DB 15,56,202,236 +DB 15,56,201,247 + movdqa xmm2,xmm0 +DB 15,58,204,193,1 +DB 15,56,200,215 + pxor xmm6,xmm4 +DB 15,56,201,252 +DB 15,56,202,245 + + movdqa xmm1,xmm0 +DB 15,58,204,194,1 +DB 15,56,200,204 + pxor xmm7,xmm5 +DB 15,56,202,254 +DB 15,56,201,229 + movdqa xmm2,xmm0 +DB 15,58,204,193,1 +DB 15,56,200,213 + pxor xmm4,xmm6 +DB 15,56,201,238 +DB 15,56,202,231 + + movdqa xmm1,xmm0 +DB 15,58,204,194,1 +DB 15,56,200,206 + pxor xmm5,xmm7 +DB 15,56,202,236 +DB 15,56,201,247 + movdqa xmm2,xmm0 +DB 15,58,204,193,2 +DB 15,56,200,215 + pxor xmm6,xmm4 +DB 15,56,201,252 +DB 15,56,202,245 + + movdqa xmm1,xmm0 +DB 15,58,204,194,2 +DB 15,56,200,204 + pxor xmm7,xmm5 +DB 15,56,202,254 +DB 15,56,201,229 + movdqa xmm2,xmm0 +DB 15,58,204,193,2 +DB 15,56,200,213 + pxor xmm4,xmm6 +DB 15,56,201,238 +DB 15,56,202,231 + + movdqa xmm1,xmm0 +DB 15,58,204,194,2 +DB 15,56,200,206 + pxor xmm5,xmm7 +DB 15,56,202,236 +DB 15,56,201,247 + movdqa xmm2,xmm0 +DB 15,58,204,193,2 +DB 15,56,200,215 + pxor xmm6,xmm4 +DB 15,56,201,252 +DB 15,56,202,245 + + movdqa xmm1,xmm0 +DB 15,58,204,194,3 +DB 15,56,200,204 + pxor xmm7,xmm5 +DB 15,56,202,254 + movdqu xmm4,XMMWORD[rsi] + movdqa xmm2,xmm0 +DB 15,58,204,193,3 +DB 15,56,200,213 + movdqu xmm5,XMMWORD[16+rsi] +DB 102,15,56,0,227 + + movdqa xmm1,xmm0 +DB 15,58,204,194,3 +DB 15,56,200,206 + movdqu xmm6,XMMWORD[32+rsi] +DB 102,15,56,0,235 + + movdqa xmm2,xmm0 +DB 15,58,204,193,3 +DB 15,56,200,215 + movdqu xmm7,XMMWORD[48+rsi] +DB 102,15,56,0,243 + + movdqa xmm1,xmm0 +DB 15,58,204,194,3 +DB 65,15,56,200,201 +DB 102,15,56,0,251 + + paddd xmm0,xmm8 + movdqa xmm9,xmm1 + + jnz NEAR $L$oop_shaext + + pshufd xmm0,xmm0,27 + pshufd xmm1,xmm1,27 + movdqu XMMWORD[rdi],xmm0 + movd DWORD[16+rdi],xmm1 + movaps xmm6,XMMWORD[((-8-64))+rax] + movaps xmm7,XMMWORD[((-8-48))+rax] + movaps xmm8,XMMWORD[((-8-32))+rax] + movaps xmm9,XMMWORD[((-8-16))+rax] + mov rsp,rax +$L$epilogue_shaext: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha1_block_data_order_shaext: + +ALIGN 16 +sha1_block_data_order_ssse3: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha1_block_data_order_ssse3: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + +_ssse3_shortcut: + + mov r11,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + lea rsp,[((-160))+rsp] + movaps XMMWORD[(-40-96)+r11],xmm6 + movaps XMMWORD[(-40-80)+r11],xmm7 + movaps XMMWORD[(-40-64)+r11],xmm8 + movaps XMMWORD[(-40-48)+r11],xmm9 + movaps XMMWORD[(-40-32)+r11],xmm10 + movaps XMMWORD[(-40-16)+r11],xmm11 +$L$prologue_ssse3: + and rsp,-64 + mov r8,rdi + mov r9,rsi + mov r10,rdx + + shl r10,6 + add r10,r9 + lea r14,[((K_XX_XX+64))] + + mov eax,DWORD[r8] + mov ebx,DWORD[4+r8] + mov ecx,DWORD[8+r8] + mov edx,DWORD[12+r8] + mov esi,ebx + mov ebp,DWORD[16+r8] + mov edi,ecx + xor edi,edx + and esi,edi + + movdqa xmm6,XMMWORD[64+r14] + movdqa xmm9,XMMWORD[((-64))+r14] + movdqu xmm0,XMMWORD[r9] + movdqu xmm1,XMMWORD[16+r9] + movdqu xmm2,XMMWORD[32+r9] + movdqu xmm3,XMMWORD[48+r9] +DB 102,15,56,0,198 +DB 102,15,56,0,206 +DB 102,15,56,0,214 + add r9,64 + paddd xmm0,xmm9 +DB 102,15,56,0,222 + paddd xmm1,xmm9 + paddd xmm2,xmm9 + movdqa XMMWORD[rsp],xmm0 + psubd xmm0,xmm9 + movdqa XMMWORD[16+rsp],xmm1 + psubd xmm1,xmm9 + movdqa XMMWORD[32+rsp],xmm2 + psubd xmm2,xmm9 + jmp NEAR $L$oop_ssse3 +ALIGN 16 +$L$oop_ssse3: + ror ebx,2 + pshufd xmm4,xmm0,238 + xor esi,edx + movdqa xmm8,xmm3 + paddd xmm9,xmm3 + mov edi,eax + add ebp,DWORD[rsp] + punpcklqdq xmm4,xmm1 + xor ebx,ecx + rol eax,5 + add ebp,esi + psrldq xmm8,4 + and edi,ebx + xor ebx,ecx + pxor xmm4,xmm0 + add ebp,eax + ror eax,7 + pxor xmm8,xmm2 + xor edi,ecx + mov esi,ebp + add edx,DWORD[4+rsp] + pxor xmm4,xmm8 + xor eax,ebx + rol ebp,5 + movdqa XMMWORD[48+rsp],xmm9 + add edx,edi + and esi,eax + movdqa xmm10,xmm4 + xor eax,ebx + add edx,ebp + ror ebp,7 + movdqa xmm8,xmm4 + xor esi,ebx + pslldq xmm10,12 + paddd xmm4,xmm4 + mov edi,edx + add ecx,DWORD[8+rsp] + psrld xmm8,31 + xor ebp,eax + rol edx,5 + add ecx,esi + movdqa xmm9,xmm10 + and edi,ebp + xor ebp,eax + psrld xmm10,30 + add ecx,edx + ror edx,7 + por xmm4,xmm8 + xor edi,eax + mov esi,ecx + add ebx,DWORD[12+rsp] + pslld xmm9,2 + pxor xmm4,xmm10 + xor edx,ebp + movdqa xmm10,XMMWORD[((-64))+r14] + rol ecx,5 + add ebx,edi + and esi,edx + pxor xmm4,xmm9 + xor edx,ebp + add ebx,ecx + ror ecx,7 + pshufd xmm5,xmm1,238 + xor esi,ebp + movdqa xmm9,xmm4 + paddd xmm10,xmm4 + mov edi,ebx + add eax,DWORD[16+rsp] + punpcklqdq xmm5,xmm2 + xor ecx,edx + rol ebx,5 + add eax,esi + psrldq xmm9,4 + and edi,ecx + xor ecx,edx + pxor xmm5,xmm1 + add eax,ebx + ror ebx,7 + pxor xmm9,xmm3 + xor edi,edx + mov esi,eax + add ebp,DWORD[20+rsp] + pxor xmm5,xmm9 + xor ebx,ecx + rol eax,5 + movdqa XMMWORD[rsp],xmm10 + add ebp,edi + and esi,ebx + movdqa xmm8,xmm5 + xor ebx,ecx + add ebp,eax + ror eax,7 + movdqa xmm9,xmm5 + xor esi,ecx + pslldq xmm8,12 + paddd xmm5,xmm5 + mov edi,ebp + add edx,DWORD[24+rsp] + psrld xmm9,31 + xor eax,ebx + rol ebp,5 + add edx,esi + movdqa xmm10,xmm8 + and edi,eax + xor eax,ebx + psrld xmm8,30 + add edx,ebp + ror ebp,7 + por xmm5,xmm9 + xor edi,ebx + mov esi,edx + add ecx,DWORD[28+rsp] + pslld xmm10,2 + pxor xmm5,xmm8 + xor ebp,eax + movdqa xmm8,XMMWORD[((-32))+r14] + rol edx,5 + add ecx,edi + and esi,ebp + pxor xmm5,xmm10 + xor ebp,eax + add ecx,edx + ror edx,7 + pshufd xmm6,xmm2,238 + xor esi,eax + movdqa xmm10,xmm5 + paddd xmm8,xmm5 + mov edi,ecx + add ebx,DWORD[32+rsp] + punpcklqdq xmm6,xmm3 + xor edx,ebp + rol ecx,5 + add ebx,esi + psrldq xmm10,4 + and edi,edx + xor edx,ebp + pxor xmm6,xmm2 + add ebx,ecx + ror ecx,7 + pxor xmm10,xmm4 + xor edi,ebp + mov esi,ebx + add eax,DWORD[36+rsp] + pxor xmm6,xmm10 + xor ecx,edx + rol ebx,5 + movdqa XMMWORD[16+rsp],xmm8 + add eax,edi + and esi,ecx + movdqa xmm9,xmm6 + xor ecx,edx + add eax,ebx + ror ebx,7 + movdqa xmm10,xmm6 + xor esi,edx + pslldq xmm9,12 + paddd xmm6,xmm6 + mov edi,eax + add ebp,DWORD[40+rsp] + psrld xmm10,31 + xor ebx,ecx + rol eax,5 + add ebp,esi + movdqa xmm8,xmm9 + and edi,ebx + xor ebx,ecx + psrld xmm9,30 + add ebp,eax + ror eax,7 + por xmm6,xmm10 + xor edi,ecx + mov esi,ebp + add edx,DWORD[44+rsp] + pslld xmm8,2 + pxor xmm6,xmm9 + xor eax,ebx + movdqa xmm9,XMMWORD[((-32))+r14] + rol ebp,5 + add edx,edi + and esi,eax + pxor xmm6,xmm8 + xor eax,ebx + add edx,ebp + ror ebp,7 + pshufd xmm7,xmm3,238 + xor esi,ebx + movdqa xmm8,xmm6 + paddd xmm9,xmm6 + mov edi,edx + add ecx,DWORD[48+rsp] + punpcklqdq xmm7,xmm4 + xor ebp,eax + rol edx,5 + add ecx,esi + psrldq xmm8,4 + and edi,ebp + xor ebp,eax + pxor xmm7,xmm3 + add ecx,edx + ror edx,7 + pxor xmm8,xmm5 + xor edi,eax + mov esi,ecx + add ebx,DWORD[52+rsp] + pxor xmm7,xmm8 + xor edx,ebp + rol ecx,5 + movdqa XMMWORD[32+rsp],xmm9 + add ebx,edi + and esi,edx + movdqa xmm10,xmm7 + xor edx,ebp + add ebx,ecx + ror ecx,7 + movdqa xmm8,xmm7 + xor esi,ebp + pslldq xmm10,12 + paddd xmm7,xmm7 + mov edi,ebx + add eax,DWORD[56+rsp] + psrld xmm8,31 + xor ecx,edx + rol ebx,5 + add eax,esi + movdqa xmm9,xmm10 + and edi,ecx + xor ecx,edx + psrld xmm10,30 + add eax,ebx + ror ebx,7 + por xmm7,xmm8 + xor edi,edx + mov esi,eax + add ebp,DWORD[60+rsp] + pslld xmm9,2 + pxor xmm7,xmm10 + xor ebx,ecx + movdqa xmm10,XMMWORD[((-32))+r14] + rol eax,5 + add ebp,edi + and esi,ebx + pxor xmm7,xmm9 + pshufd xmm9,xmm6,238 + xor ebx,ecx + add ebp,eax + ror eax,7 + pxor xmm0,xmm4 + xor esi,ecx + mov edi,ebp + add edx,DWORD[rsp] + punpcklqdq xmm9,xmm7 + xor eax,ebx + rol ebp,5 + pxor xmm0,xmm1 + add edx,esi + and edi,eax + movdqa xmm8,xmm10 + xor eax,ebx + paddd xmm10,xmm7 + add edx,ebp + pxor xmm0,xmm9 + ror ebp,7 + xor edi,ebx + mov esi,edx + add ecx,DWORD[4+rsp] + movdqa xmm9,xmm0 + xor ebp,eax + rol edx,5 + movdqa XMMWORD[48+rsp],xmm10 + add ecx,edi + and esi,ebp + xor ebp,eax + pslld xmm0,2 + add ecx,edx + ror edx,7 + psrld xmm9,30 + xor esi,eax + mov edi,ecx + add ebx,DWORD[8+rsp] + por xmm0,xmm9 + xor edx,ebp + rol ecx,5 + pshufd xmm10,xmm7,238 + add ebx,esi + and edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[12+rsp] + xor edi,ebp + mov esi,ebx + rol ebx,5 + add eax,edi + xor esi,edx + ror ecx,7 + add eax,ebx + pxor xmm1,xmm5 + add ebp,DWORD[16+rsp] + xor esi,ecx + punpcklqdq xmm10,xmm0 + mov edi,eax + rol eax,5 + pxor xmm1,xmm2 + add ebp,esi + xor edi,ecx + movdqa xmm9,xmm8 + ror ebx,7 + paddd xmm8,xmm0 + add ebp,eax + pxor xmm1,xmm10 + add edx,DWORD[20+rsp] + xor edi,ebx + mov esi,ebp + rol ebp,5 + movdqa xmm10,xmm1 + add edx,edi + xor esi,ebx + movdqa XMMWORD[rsp],xmm8 + ror eax,7 + add edx,ebp + add ecx,DWORD[24+rsp] + pslld xmm1,2 + xor esi,eax + mov edi,edx + psrld xmm10,30 + rol edx,5 + add ecx,esi + xor edi,eax + ror ebp,7 + por xmm1,xmm10 + add ecx,edx + add ebx,DWORD[28+rsp] + pshufd xmm8,xmm0,238 + xor edi,ebp + mov esi,ecx + rol ecx,5 + add ebx,edi + xor esi,ebp + ror edx,7 + add ebx,ecx + pxor xmm2,xmm6 + add eax,DWORD[32+rsp] + xor esi,edx + punpcklqdq xmm8,xmm1 + mov edi,ebx + rol ebx,5 + pxor xmm2,xmm3 + add eax,esi + xor edi,edx + movdqa xmm10,XMMWORD[r14] + ror ecx,7 + paddd xmm9,xmm1 + add eax,ebx + pxor xmm2,xmm8 + add ebp,DWORD[36+rsp] + xor edi,ecx + mov esi,eax + rol eax,5 + movdqa xmm8,xmm2 + add ebp,edi + xor esi,ecx + movdqa XMMWORD[16+rsp],xmm9 + ror ebx,7 + add ebp,eax + add edx,DWORD[40+rsp] + pslld xmm2,2 + xor esi,ebx + mov edi,ebp + psrld xmm8,30 + rol ebp,5 + add edx,esi + xor edi,ebx + ror eax,7 + por xmm2,xmm8 + add edx,ebp + add ecx,DWORD[44+rsp] + pshufd xmm9,xmm1,238 + xor edi,eax + mov esi,edx + rol edx,5 + add ecx,edi + xor esi,eax + ror ebp,7 + add ecx,edx + pxor xmm3,xmm7 + add ebx,DWORD[48+rsp] + xor esi,ebp + punpcklqdq xmm9,xmm2 + mov edi,ecx + rol ecx,5 + pxor xmm3,xmm4 + add ebx,esi + xor edi,ebp + movdqa xmm8,xmm10 + ror edx,7 + paddd xmm10,xmm2 + add ebx,ecx + pxor xmm3,xmm9 + add eax,DWORD[52+rsp] + xor edi,edx + mov esi,ebx + rol ebx,5 + movdqa xmm9,xmm3 + add eax,edi + xor esi,edx + movdqa XMMWORD[32+rsp],xmm10 + ror ecx,7 + add eax,ebx + add ebp,DWORD[56+rsp] + pslld xmm3,2 + xor esi,ecx + mov edi,eax + psrld xmm9,30 + rol eax,5 + add ebp,esi + xor edi,ecx + ror ebx,7 + por xmm3,xmm9 + add ebp,eax + add edx,DWORD[60+rsp] + pshufd xmm10,xmm2,238 + xor edi,ebx + mov esi,ebp + rol ebp,5 + add edx,edi + xor esi,ebx + ror eax,7 + add edx,ebp + pxor xmm4,xmm0 + add ecx,DWORD[rsp] + xor esi,eax + punpcklqdq xmm10,xmm3 + mov edi,edx + rol edx,5 + pxor xmm4,xmm5 + add ecx,esi + xor edi,eax + movdqa xmm9,xmm8 + ror ebp,7 + paddd xmm8,xmm3 + add ecx,edx + pxor xmm4,xmm10 + add ebx,DWORD[4+rsp] + xor edi,ebp + mov esi,ecx + rol ecx,5 + movdqa xmm10,xmm4 + add ebx,edi + xor esi,ebp + movdqa XMMWORD[48+rsp],xmm8 + ror edx,7 + add ebx,ecx + add eax,DWORD[8+rsp] + pslld xmm4,2 + xor esi,edx + mov edi,ebx + psrld xmm10,30 + rol ebx,5 + add eax,esi + xor edi,edx + ror ecx,7 + por xmm4,xmm10 + add eax,ebx + add ebp,DWORD[12+rsp] + pshufd xmm8,xmm3,238 + xor edi,ecx + mov esi,eax + rol eax,5 + add ebp,edi + xor esi,ecx + ror ebx,7 + add ebp,eax + pxor xmm5,xmm1 + add edx,DWORD[16+rsp] + xor esi,ebx + punpcklqdq xmm8,xmm4 + mov edi,ebp + rol ebp,5 + pxor xmm5,xmm6 + add edx,esi + xor edi,ebx + movdqa xmm10,xmm9 + ror eax,7 + paddd xmm9,xmm4 + add edx,ebp + pxor xmm5,xmm8 + add ecx,DWORD[20+rsp] + xor edi,eax + mov esi,edx + rol edx,5 + movdqa xmm8,xmm5 + add ecx,edi + xor esi,eax + movdqa XMMWORD[rsp],xmm9 + ror ebp,7 + add ecx,edx + add ebx,DWORD[24+rsp] + pslld xmm5,2 + xor esi,ebp + mov edi,ecx + psrld xmm8,30 + rol ecx,5 + add ebx,esi + xor edi,ebp + ror edx,7 + por xmm5,xmm8 + add ebx,ecx + add eax,DWORD[28+rsp] + pshufd xmm9,xmm4,238 + ror ecx,7 + mov esi,ebx + xor edi,edx + rol ebx,5 + add eax,edi + xor esi,ecx + xor ecx,edx + add eax,ebx + pxor xmm6,xmm2 + add ebp,DWORD[32+rsp] + and esi,ecx + xor ecx,edx + ror ebx,7 + punpcklqdq xmm9,xmm5 + mov edi,eax + xor esi,ecx + pxor xmm6,xmm7 + rol eax,5 + add ebp,esi + movdqa xmm8,xmm10 + xor edi,ebx + paddd xmm10,xmm5 + xor ebx,ecx + pxor xmm6,xmm9 + add ebp,eax + add edx,DWORD[36+rsp] + and edi,ebx + xor ebx,ecx + ror eax,7 + movdqa xmm9,xmm6 + mov esi,ebp + xor edi,ebx + movdqa XMMWORD[16+rsp],xmm10 + rol ebp,5 + add edx,edi + xor esi,eax + pslld xmm6,2 + xor eax,ebx + add edx,ebp + psrld xmm9,30 + add ecx,DWORD[40+rsp] + and esi,eax + xor eax,ebx + por xmm6,xmm9 + ror ebp,7 + mov edi,edx + xor esi,eax + rol edx,5 + pshufd xmm10,xmm5,238 + add ecx,esi + xor edi,ebp + xor ebp,eax + add ecx,edx + add ebx,DWORD[44+rsp] + and edi,ebp + xor ebp,eax + ror edx,7 + mov esi,ecx + xor edi,ebp + rol ecx,5 + add ebx,edi + xor esi,edx + xor edx,ebp + add ebx,ecx + pxor xmm7,xmm3 + add eax,DWORD[48+rsp] + and esi,edx + xor edx,ebp + ror ecx,7 + punpcklqdq xmm10,xmm6 + mov edi,ebx + xor esi,edx + pxor xmm7,xmm0 + rol ebx,5 + add eax,esi + movdqa xmm9,XMMWORD[32+r14] + xor edi,ecx + paddd xmm8,xmm6 + xor ecx,edx + pxor xmm7,xmm10 + add eax,ebx + add ebp,DWORD[52+rsp] + and edi,ecx + xor ecx,edx + ror ebx,7 + movdqa xmm10,xmm7 + mov esi,eax + xor edi,ecx + movdqa XMMWORD[32+rsp],xmm8 + rol eax,5 + add ebp,edi + xor esi,ebx + pslld xmm7,2 + xor ebx,ecx + add ebp,eax + psrld xmm10,30 + add edx,DWORD[56+rsp] + and esi,ebx + xor ebx,ecx + por xmm7,xmm10 + ror eax,7 + mov edi,ebp + xor esi,ebx + rol ebp,5 + pshufd xmm8,xmm6,238 + add edx,esi + xor edi,eax + xor eax,ebx + add edx,ebp + add ecx,DWORD[60+rsp] + and edi,eax + xor eax,ebx + ror ebp,7 + mov esi,edx + xor edi,eax + rol edx,5 + add ecx,edi + xor esi,ebp + xor ebp,eax + add ecx,edx + pxor xmm0,xmm4 + add ebx,DWORD[rsp] + and esi,ebp + xor ebp,eax + ror edx,7 + punpcklqdq xmm8,xmm7 + mov edi,ecx + xor esi,ebp + pxor xmm0,xmm1 + rol ecx,5 + add ebx,esi + movdqa xmm10,xmm9 + xor edi,edx + paddd xmm9,xmm7 + xor edx,ebp + pxor xmm0,xmm8 + add ebx,ecx + add eax,DWORD[4+rsp] + and edi,edx + xor edx,ebp + ror ecx,7 + movdqa xmm8,xmm0 + mov esi,ebx + xor edi,edx + movdqa XMMWORD[48+rsp],xmm9 + rol ebx,5 + add eax,edi + xor esi,ecx + pslld xmm0,2 + xor ecx,edx + add eax,ebx + psrld xmm8,30 + add ebp,DWORD[8+rsp] + and esi,ecx + xor ecx,edx + por xmm0,xmm8 + ror ebx,7 + mov edi,eax + xor esi,ecx + rol eax,5 + pshufd xmm9,xmm7,238 + add ebp,esi + xor edi,ebx + xor ebx,ecx + add ebp,eax + add edx,DWORD[12+rsp] + and edi,ebx + xor ebx,ecx + ror eax,7 + mov esi,ebp + xor edi,ebx + rol ebp,5 + add edx,edi + xor esi,eax + xor eax,ebx + add edx,ebp + pxor xmm1,xmm5 + add ecx,DWORD[16+rsp] + and esi,eax + xor eax,ebx + ror ebp,7 + punpcklqdq xmm9,xmm0 + mov edi,edx + xor esi,eax + pxor xmm1,xmm2 + rol edx,5 + add ecx,esi + movdqa xmm8,xmm10 + xor edi,ebp + paddd xmm10,xmm0 + xor ebp,eax + pxor xmm1,xmm9 + add ecx,edx + add ebx,DWORD[20+rsp] + and edi,ebp + xor ebp,eax + ror edx,7 + movdqa xmm9,xmm1 + mov esi,ecx + xor edi,ebp + movdqa XMMWORD[rsp],xmm10 + rol ecx,5 + add ebx,edi + xor esi,edx + pslld xmm1,2 + xor edx,ebp + add ebx,ecx + psrld xmm9,30 + add eax,DWORD[24+rsp] + and esi,edx + xor edx,ebp + por xmm1,xmm9 + ror ecx,7 + mov edi,ebx + xor esi,edx + rol ebx,5 + pshufd xmm10,xmm0,238 + add eax,esi + xor edi,ecx + xor ecx,edx + add eax,ebx + add ebp,DWORD[28+rsp] + and edi,ecx + xor ecx,edx + ror ebx,7 + mov esi,eax + xor edi,ecx + rol eax,5 + add ebp,edi + xor esi,ebx + xor ebx,ecx + add ebp,eax + pxor xmm2,xmm6 + add edx,DWORD[32+rsp] + and esi,ebx + xor ebx,ecx + ror eax,7 + punpcklqdq xmm10,xmm1 + mov edi,ebp + xor esi,ebx + pxor xmm2,xmm3 + rol ebp,5 + add edx,esi + movdqa xmm9,xmm8 + xor edi,eax + paddd xmm8,xmm1 + xor eax,ebx + pxor xmm2,xmm10 + add edx,ebp + add ecx,DWORD[36+rsp] + and edi,eax + xor eax,ebx + ror ebp,7 + movdqa xmm10,xmm2 + mov esi,edx + xor edi,eax + movdqa XMMWORD[16+rsp],xmm8 + rol edx,5 + add ecx,edi + xor esi,ebp + pslld xmm2,2 + xor ebp,eax + add ecx,edx + psrld xmm10,30 + add ebx,DWORD[40+rsp] + and esi,ebp + xor ebp,eax + por xmm2,xmm10 + ror edx,7 + mov edi,ecx + xor esi,ebp + rol ecx,5 + pshufd xmm8,xmm1,238 + add ebx,esi + xor edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[44+rsp] + and edi,edx + xor edx,ebp + ror ecx,7 + mov esi,ebx + xor edi,edx + rol ebx,5 + add eax,edi + xor esi,edx + add eax,ebx + pxor xmm3,xmm7 + add ebp,DWORD[48+rsp] + xor esi,ecx + punpcklqdq xmm8,xmm2 + mov edi,eax + rol eax,5 + pxor xmm3,xmm4 + add ebp,esi + xor edi,ecx + movdqa xmm10,xmm9 + ror ebx,7 + paddd xmm9,xmm2 + add ebp,eax + pxor xmm3,xmm8 + add edx,DWORD[52+rsp] + xor edi,ebx + mov esi,ebp + rol ebp,5 + movdqa xmm8,xmm3 + add edx,edi + xor esi,ebx + movdqa XMMWORD[32+rsp],xmm9 + ror eax,7 + add edx,ebp + add ecx,DWORD[56+rsp] + pslld xmm3,2 + xor esi,eax + mov edi,edx + psrld xmm8,30 + rol edx,5 + add ecx,esi + xor edi,eax + ror ebp,7 + por xmm3,xmm8 + add ecx,edx + add ebx,DWORD[60+rsp] + xor edi,ebp + mov esi,ecx + rol ecx,5 + add ebx,edi + xor esi,ebp + ror edx,7 + add ebx,ecx + add eax,DWORD[rsp] + xor esi,edx + mov edi,ebx + rol ebx,5 + paddd xmm10,xmm3 + add eax,esi + xor edi,edx + movdqa XMMWORD[48+rsp],xmm10 + ror ecx,7 + add eax,ebx + add ebp,DWORD[4+rsp] + xor edi,ecx + mov esi,eax + rol eax,5 + add ebp,edi + xor esi,ecx + ror ebx,7 + add ebp,eax + add edx,DWORD[8+rsp] + xor esi,ebx + mov edi,ebp + rol ebp,5 + add edx,esi + xor edi,ebx + ror eax,7 + add edx,ebp + add ecx,DWORD[12+rsp] + xor edi,eax + mov esi,edx + rol edx,5 + add ecx,edi + xor esi,eax + ror ebp,7 + add ecx,edx + cmp r9,r10 + je NEAR $L$done_ssse3 + movdqa xmm6,XMMWORD[64+r14] + movdqa xmm9,XMMWORD[((-64))+r14] + movdqu xmm0,XMMWORD[r9] + movdqu xmm1,XMMWORD[16+r9] + movdqu xmm2,XMMWORD[32+r9] + movdqu xmm3,XMMWORD[48+r9] +DB 102,15,56,0,198 + add r9,64 + add ebx,DWORD[16+rsp] + xor esi,ebp + mov edi,ecx +DB 102,15,56,0,206 + rol ecx,5 + add ebx,esi + xor edi,ebp + ror edx,7 + paddd xmm0,xmm9 + add ebx,ecx + add eax,DWORD[20+rsp] + xor edi,edx + mov esi,ebx + movdqa XMMWORD[rsp],xmm0 + rol ebx,5 + add eax,edi + xor esi,edx + ror ecx,7 + psubd xmm0,xmm9 + add eax,ebx + add ebp,DWORD[24+rsp] + xor esi,ecx + mov edi,eax + rol eax,5 + add ebp,esi + xor edi,ecx + ror ebx,7 + add ebp,eax + add edx,DWORD[28+rsp] + xor edi,ebx + mov esi,ebp + rol ebp,5 + add edx,edi + xor esi,ebx + ror eax,7 + add edx,ebp + add ecx,DWORD[32+rsp] + xor esi,eax + mov edi,edx +DB 102,15,56,0,214 + rol edx,5 + add ecx,esi + xor edi,eax + ror ebp,7 + paddd xmm1,xmm9 + add ecx,edx + add ebx,DWORD[36+rsp] + xor edi,ebp + mov esi,ecx + movdqa XMMWORD[16+rsp],xmm1 + rol ecx,5 + add ebx,edi + xor esi,ebp + ror edx,7 + psubd xmm1,xmm9 + add ebx,ecx + add eax,DWORD[40+rsp] + xor esi,edx + mov edi,ebx + rol ebx,5 + add eax,esi + xor edi,edx + ror ecx,7 + add eax,ebx + add ebp,DWORD[44+rsp] + xor edi,ecx + mov esi,eax + rol eax,5 + add ebp,edi + xor esi,ecx + ror ebx,7 + add ebp,eax + add edx,DWORD[48+rsp] + xor esi,ebx + mov edi,ebp +DB 102,15,56,0,222 + rol ebp,5 + add edx,esi + xor edi,ebx + ror eax,7 + paddd xmm2,xmm9 + add edx,ebp + add ecx,DWORD[52+rsp] + xor edi,eax + mov esi,edx + movdqa XMMWORD[32+rsp],xmm2 + rol edx,5 + add ecx,edi + xor esi,eax + ror ebp,7 + psubd xmm2,xmm9 + add ecx,edx + add ebx,DWORD[56+rsp] + xor esi,ebp + mov edi,ecx + rol ecx,5 + add ebx,esi + xor edi,ebp + ror edx,7 + add ebx,ecx + add eax,DWORD[60+rsp] + xor edi,edx + mov esi,ebx + rol ebx,5 + add eax,edi + ror ecx,7 + add eax,ebx + add eax,DWORD[r8] + add esi,DWORD[4+r8] + add ecx,DWORD[8+r8] + add edx,DWORD[12+r8] + mov DWORD[r8],eax + add ebp,DWORD[16+r8] + mov DWORD[4+r8],esi + mov ebx,esi + mov DWORD[8+r8],ecx + mov edi,ecx + mov DWORD[12+r8],edx + xor edi,edx + mov DWORD[16+r8],ebp + and esi,edi + jmp NEAR $L$oop_ssse3 + +ALIGN 16 +$L$done_ssse3: + add ebx,DWORD[16+rsp] + xor esi,ebp + mov edi,ecx + rol ecx,5 + add ebx,esi + xor edi,ebp + ror edx,7 + add ebx,ecx + add eax,DWORD[20+rsp] + xor edi,edx + mov esi,ebx + rol ebx,5 + add eax,edi + xor esi,edx + ror ecx,7 + add eax,ebx + add ebp,DWORD[24+rsp] + xor esi,ecx + mov edi,eax + rol eax,5 + add ebp,esi + xor edi,ecx + ror ebx,7 + add ebp,eax + add edx,DWORD[28+rsp] + xor edi,ebx + mov esi,ebp + rol ebp,5 + add edx,edi + xor esi,ebx + ror eax,7 + add edx,ebp + add ecx,DWORD[32+rsp] + xor esi,eax + mov edi,edx + rol edx,5 + add ecx,esi + xor edi,eax + ror ebp,7 + add ecx,edx + add ebx,DWORD[36+rsp] + xor edi,ebp + mov esi,ecx + rol ecx,5 + add ebx,edi + xor esi,ebp + ror edx,7 + add ebx,ecx + add eax,DWORD[40+rsp] + xor esi,edx + mov edi,ebx + rol ebx,5 + add eax,esi + xor edi,edx + ror ecx,7 + add eax,ebx + add ebp,DWORD[44+rsp] + xor edi,ecx + mov esi,eax + rol eax,5 + add ebp,edi + xor esi,ecx + ror ebx,7 + add ebp,eax + add edx,DWORD[48+rsp] + xor esi,ebx + mov edi,ebp + rol ebp,5 + add edx,esi + xor edi,ebx + ror eax,7 + add edx,ebp + add ecx,DWORD[52+rsp] + xor edi,eax + mov esi,edx + rol edx,5 + add ecx,edi + xor esi,eax + ror ebp,7 + add ecx,edx + add ebx,DWORD[56+rsp] + xor esi,ebp + mov edi,ecx + rol ecx,5 + add ebx,esi + xor edi,ebp + ror edx,7 + add ebx,ecx + add eax,DWORD[60+rsp] + xor edi,edx + mov esi,ebx + rol ebx,5 + add eax,edi + ror ecx,7 + add eax,ebx + add eax,DWORD[r8] + add esi,DWORD[4+r8] + add ecx,DWORD[8+r8] + mov DWORD[r8],eax + add edx,DWORD[12+r8] + mov DWORD[4+r8],esi + add ebp,DWORD[16+r8] + mov DWORD[8+r8],ecx + mov DWORD[12+r8],edx + mov DWORD[16+r8],ebp + movaps xmm6,XMMWORD[((-40-96))+r11] + movaps xmm7,XMMWORD[((-40-80))+r11] + movaps xmm8,XMMWORD[((-40-64))+r11] + movaps xmm9,XMMWORD[((-40-48))+r11] + movaps xmm10,XMMWORD[((-40-32))+r11] + movaps xmm11,XMMWORD[((-40-16))+r11] + mov r14,QWORD[((-40))+r11] + + mov r13,QWORD[((-32))+r11] + + mov r12,QWORD[((-24))+r11] + + mov rbp,QWORD[((-16))+r11] + + mov rbx,QWORD[((-8))+r11] + + lea rsp,[r11] + +$L$epilogue_ssse3: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha1_block_data_order_ssse3: + +ALIGN 16 +sha1_block_data_order_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha1_block_data_order_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + +_avx_shortcut: + + mov r11,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + lea rsp,[((-160))+rsp] + vzeroupper + vmovaps XMMWORD[(-40-96)+r11],xmm6 + vmovaps XMMWORD[(-40-80)+r11],xmm7 + vmovaps XMMWORD[(-40-64)+r11],xmm8 + vmovaps XMMWORD[(-40-48)+r11],xmm9 + vmovaps XMMWORD[(-40-32)+r11],xmm10 + vmovaps XMMWORD[(-40-16)+r11],xmm11 +$L$prologue_avx: + and rsp,-64 + mov r8,rdi + mov r9,rsi + mov r10,rdx + + shl r10,6 + add r10,r9 + lea r14,[((K_XX_XX+64))] + + mov eax,DWORD[r8] + mov ebx,DWORD[4+r8] + mov ecx,DWORD[8+r8] + mov edx,DWORD[12+r8] + mov esi,ebx + mov ebp,DWORD[16+r8] + mov edi,ecx + xor edi,edx + and esi,edi + + vmovdqa xmm6,XMMWORD[64+r14] + vmovdqa xmm11,XMMWORD[((-64))+r14] + vmovdqu xmm0,XMMWORD[r9] + vmovdqu xmm1,XMMWORD[16+r9] + vmovdqu xmm2,XMMWORD[32+r9] + vmovdqu xmm3,XMMWORD[48+r9] + vpshufb xmm0,xmm0,xmm6 + add r9,64 + vpshufb xmm1,xmm1,xmm6 + vpshufb xmm2,xmm2,xmm6 + vpshufb xmm3,xmm3,xmm6 + vpaddd xmm4,xmm0,xmm11 + vpaddd xmm5,xmm1,xmm11 + vpaddd xmm6,xmm2,xmm11 + vmovdqa XMMWORD[rsp],xmm4 + vmovdqa XMMWORD[16+rsp],xmm5 + vmovdqa XMMWORD[32+rsp],xmm6 + jmp NEAR $L$oop_avx +ALIGN 16 +$L$oop_avx: + shrd ebx,ebx,2 + xor esi,edx + vpalignr xmm4,xmm1,xmm0,8 + mov edi,eax + add ebp,DWORD[rsp] + vpaddd xmm9,xmm11,xmm3 + xor ebx,ecx + shld eax,eax,5 + vpsrldq xmm8,xmm3,4 + add ebp,esi + and edi,ebx + vpxor xmm4,xmm4,xmm0 + xor ebx,ecx + add ebp,eax + vpxor xmm8,xmm8,xmm2 + shrd eax,eax,7 + xor edi,ecx + mov esi,ebp + add edx,DWORD[4+rsp] + vpxor xmm4,xmm4,xmm8 + xor eax,ebx + shld ebp,ebp,5 + vmovdqa XMMWORD[48+rsp],xmm9 + add edx,edi + and esi,eax + vpsrld xmm8,xmm4,31 + xor eax,ebx + add edx,ebp + shrd ebp,ebp,7 + xor esi,ebx + vpslldq xmm10,xmm4,12 + vpaddd xmm4,xmm4,xmm4 + mov edi,edx + add ecx,DWORD[8+rsp] + xor ebp,eax + shld edx,edx,5 + vpsrld xmm9,xmm10,30 + vpor xmm4,xmm4,xmm8 + add ecx,esi + and edi,ebp + xor ebp,eax + add ecx,edx + vpslld xmm10,xmm10,2 + vpxor xmm4,xmm4,xmm9 + shrd edx,edx,7 + xor edi,eax + mov esi,ecx + add ebx,DWORD[12+rsp] + vpxor xmm4,xmm4,xmm10 + xor edx,ebp + shld ecx,ecx,5 + add ebx,edi + and esi,edx + xor edx,ebp + add ebx,ecx + shrd ecx,ecx,7 + xor esi,ebp + vpalignr xmm5,xmm2,xmm1,8 + mov edi,ebx + add eax,DWORD[16+rsp] + vpaddd xmm9,xmm11,xmm4 + xor ecx,edx + shld ebx,ebx,5 + vpsrldq xmm8,xmm4,4 + add eax,esi + and edi,ecx + vpxor xmm5,xmm5,xmm1 + xor ecx,edx + add eax,ebx + vpxor xmm8,xmm8,xmm3 + shrd ebx,ebx,7 + xor edi,edx + mov esi,eax + add ebp,DWORD[20+rsp] + vpxor xmm5,xmm5,xmm8 + xor ebx,ecx + shld eax,eax,5 + vmovdqa XMMWORD[rsp],xmm9 + add ebp,edi + and esi,ebx + vpsrld xmm8,xmm5,31 + xor ebx,ecx + add ebp,eax + shrd eax,eax,7 + xor esi,ecx + vpslldq xmm10,xmm5,12 + vpaddd xmm5,xmm5,xmm5 + mov edi,ebp + add edx,DWORD[24+rsp] + xor eax,ebx + shld ebp,ebp,5 + vpsrld xmm9,xmm10,30 + vpor xmm5,xmm5,xmm8 + add edx,esi + and edi,eax + xor eax,ebx + add edx,ebp + vpslld xmm10,xmm10,2 + vpxor xmm5,xmm5,xmm9 + shrd ebp,ebp,7 + xor edi,ebx + mov esi,edx + add ecx,DWORD[28+rsp] + vpxor xmm5,xmm5,xmm10 + xor ebp,eax + shld edx,edx,5 + vmovdqa xmm11,XMMWORD[((-32))+r14] + add ecx,edi + and esi,ebp + xor ebp,eax + add ecx,edx + shrd edx,edx,7 + xor esi,eax + vpalignr xmm6,xmm3,xmm2,8 + mov edi,ecx + add ebx,DWORD[32+rsp] + vpaddd xmm9,xmm11,xmm5 + xor edx,ebp + shld ecx,ecx,5 + vpsrldq xmm8,xmm5,4 + add ebx,esi + and edi,edx + vpxor xmm6,xmm6,xmm2 + xor edx,ebp + add ebx,ecx + vpxor xmm8,xmm8,xmm4 + shrd ecx,ecx,7 + xor edi,ebp + mov esi,ebx + add eax,DWORD[36+rsp] + vpxor xmm6,xmm6,xmm8 + xor ecx,edx + shld ebx,ebx,5 + vmovdqa XMMWORD[16+rsp],xmm9 + add eax,edi + and esi,ecx + vpsrld xmm8,xmm6,31 + xor ecx,edx + add eax,ebx + shrd ebx,ebx,7 + xor esi,edx + vpslldq xmm10,xmm6,12 + vpaddd xmm6,xmm6,xmm6 + mov edi,eax + add ebp,DWORD[40+rsp] + xor ebx,ecx + shld eax,eax,5 + vpsrld xmm9,xmm10,30 + vpor xmm6,xmm6,xmm8 + add ebp,esi + and edi,ebx + xor ebx,ecx + add ebp,eax + vpslld xmm10,xmm10,2 + vpxor xmm6,xmm6,xmm9 + shrd eax,eax,7 + xor edi,ecx + mov esi,ebp + add edx,DWORD[44+rsp] + vpxor xmm6,xmm6,xmm10 + xor eax,ebx + shld ebp,ebp,5 + add edx,edi + and esi,eax + xor eax,ebx + add edx,ebp + shrd ebp,ebp,7 + xor esi,ebx + vpalignr xmm7,xmm4,xmm3,8 + mov edi,edx + add ecx,DWORD[48+rsp] + vpaddd xmm9,xmm11,xmm6 + xor ebp,eax + shld edx,edx,5 + vpsrldq xmm8,xmm6,4 + add ecx,esi + and edi,ebp + vpxor xmm7,xmm7,xmm3 + xor ebp,eax + add ecx,edx + vpxor xmm8,xmm8,xmm5 + shrd edx,edx,7 + xor edi,eax + mov esi,ecx + add ebx,DWORD[52+rsp] + vpxor xmm7,xmm7,xmm8 + xor edx,ebp + shld ecx,ecx,5 + vmovdqa XMMWORD[32+rsp],xmm9 + add ebx,edi + and esi,edx + vpsrld xmm8,xmm7,31 + xor edx,ebp + add ebx,ecx + shrd ecx,ecx,7 + xor esi,ebp + vpslldq xmm10,xmm7,12 + vpaddd xmm7,xmm7,xmm7 + mov edi,ebx + add eax,DWORD[56+rsp] + xor ecx,edx + shld ebx,ebx,5 + vpsrld xmm9,xmm10,30 + vpor xmm7,xmm7,xmm8 + add eax,esi + and edi,ecx + xor ecx,edx + add eax,ebx + vpslld xmm10,xmm10,2 + vpxor xmm7,xmm7,xmm9 + shrd ebx,ebx,7 + xor edi,edx + mov esi,eax + add ebp,DWORD[60+rsp] + vpxor xmm7,xmm7,xmm10 + xor ebx,ecx + shld eax,eax,5 + add ebp,edi + and esi,ebx + xor ebx,ecx + add ebp,eax + vpalignr xmm8,xmm7,xmm6,8 + vpxor xmm0,xmm0,xmm4 + shrd eax,eax,7 + xor esi,ecx + mov edi,ebp + add edx,DWORD[rsp] + vpxor xmm0,xmm0,xmm1 + xor eax,ebx + shld ebp,ebp,5 + vpaddd xmm9,xmm11,xmm7 + add edx,esi + and edi,eax + vpxor xmm0,xmm0,xmm8 + xor eax,ebx + add edx,ebp + shrd ebp,ebp,7 + xor edi,ebx + vpsrld xmm8,xmm0,30 + vmovdqa XMMWORD[48+rsp],xmm9 + mov esi,edx + add ecx,DWORD[4+rsp] + xor ebp,eax + shld edx,edx,5 + vpslld xmm0,xmm0,2 + add ecx,edi + and esi,ebp + xor ebp,eax + add ecx,edx + shrd edx,edx,7 + xor esi,eax + mov edi,ecx + add ebx,DWORD[8+rsp] + vpor xmm0,xmm0,xmm8 + xor edx,ebp + shld ecx,ecx,5 + add ebx,esi + and edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[12+rsp] + xor edi,ebp + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + vpalignr xmm8,xmm0,xmm7,8 + vpxor xmm1,xmm1,xmm5 + add ebp,DWORD[16+rsp] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + vpxor xmm1,xmm1,xmm2 + add ebp,esi + xor edi,ecx + vpaddd xmm9,xmm11,xmm0 + shrd ebx,ebx,7 + add ebp,eax + vpxor xmm1,xmm1,xmm8 + add edx,DWORD[20+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + vpsrld xmm8,xmm1,30 + vmovdqa XMMWORD[rsp],xmm9 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + vpslld xmm1,xmm1,2 + add ecx,DWORD[24+rsp] + xor esi,eax + mov edi,edx + shld edx,edx,5 + add ecx,esi + xor edi,eax + shrd ebp,ebp,7 + add ecx,edx + vpor xmm1,xmm1,xmm8 + add ebx,DWORD[28+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + vpalignr xmm8,xmm1,xmm0,8 + vpxor xmm2,xmm2,xmm6 + add eax,DWORD[32+rsp] + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + vpxor xmm2,xmm2,xmm3 + add eax,esi + xor edi,edx + vpaddd xmm9,xmm11,xmm1 + vmovdqa xmm11,XMMWORD[r14] + shrd ecx,ecx,7 + add eax,ebx + vpxor xmm2,xmm2,xmm8 + add ebp,DWORD[36+rsp] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + vpsrld xmm8,xmm2,30 + vmovdqa XMMWORD[16+rsp],xmm9 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + vpslld xmm2,xmm2,2 + add edx,DWORD[40+rsp] + xor esi,ebx + mov edi,ebp + shld ebp,ebp,5 + add edx,esi + xor edi,ebx + shrd eax,eax,7 + add edx,ebp + vpor xmm2,xmm2,xmm8 + add ecx,DWORD[44+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + add ecx,edi + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + vpalignr xmm8,xmm2,xmm1,8 + vpxor xmm3,xmm3,xmm7 + add ebx,DWORD[48+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + vpxor xmm3,xmm3,xmm4 + add ebx,esi + xor edi,ebp + vpaddd xmm9,xmm11,xmm2 + shrd edx,edx,7 + add ebx,ecx + vpxor xmm3,xmm3,xmm8 + add eax,DWORD[52+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + vpsrld xmm8,xmm3,30 + vmovdqa XMMWORD[32+rsp],xmm9 + add eax,edi + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + vpslld xmm3,xmm3,2 + add ebp,DWORD[56+rsp] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + add ebp,esi + xor edi,ecx + shrd ebx,ebx,7 + add ebp,eax + vpor xmm3,xmm3,xmm8 + add edx,DWORD[60+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + vpalignr xmm8,xmm3,xmm2,8 + vpxor xmm4,xmm4,xmm0 + add ecx,DWORD[rsp] + xor esi,eax + mov edi,edx + shld edx,edx,5 + vpxor xmm4,xmm4,xmm5 + add ecx,esi + xor edi,eax + vpaddd xmm9,xmm11,xmm3 + shrd ebp,ebp,7 + add ecx,edx + vpxor xmm4,xmm4,xmm8 + add ebx,DWORD[4+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + vpsrld xmm8,xmm4,30 + vmovdqa XMMWORD[48+rsp],xmm9 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + vpslld xmm4,xmm4,2 + add eax,DWORD[8+rsp] + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + add eax,esi + xor edi,edx + shrd ecx,ecx,7 + add eax,ebx + vpor xmm4,xmm4,xmm8 + add ebp,DWORD[12+rsp] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + vpalignr xmm8,xmm4,xmm3,8 + vpxor xmm5,xmm5,xmm1 + add edx,DWORD[16+rsp] + xor esi,ebx + mov edi,ebp + shld ebp,ebp,5 + vpxor xmm5,xmm5,xmm6 + add edx,esi + xor edi,ebx + vpaddd xmm9,xmm11,xmm4 + shrd eax,eax,7 + add edx,ebp + vpxor xmm5,xmm5,xmm8 + add ecx,DWORD[20+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + vpsrld xmm8,xmm5,30 + vmovdqa XMMWORD[rsp],xmm9 + add ecx,edi + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + vpslld xmm5,xmm5,2 + add ebx,DWORD[24+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + vpor xmm5,xmm5,xmm8 + add eax,DWORD[28+rsp] + shrd ecx,ecx,7 + mov esi,ebx + xor edi,edx + shld ebx,ebx,5 + add eax,edi + xor esi,ecx + xor ecx,edx + add eax,ebx + vpalignr xmm8,xmm5,xmm4,8 + vpxor xmm6,xmm6,xmm2 + add ebp,DWORD[32+rsp] + and esi,ecx + xor ecx,edx + shrd ebx,ebx,7 + vpxor xmm6,xmm6,xmm7 + mov edi,eax + xor esi,ecx + vpaddd xmm9,xmm11,xmm5 + shld eax,eax,5 + add ebp,esi + vpxor xmm6,xmm6,xmm8 + xor edi,ebx + xor ebx,ecx + add ebp,eax + add edx,DWORD[36+rsp] + vpsrld xmm8,xmm6,30 + vmovdqa XMMWORD[16+rsp],xmm9 + and edi,ebx + xor ebx,ecx + shrd eax,eax,7 + mov esi,ebp + vpslld xmm6,xmm6,2 + xor edi,ebx + shld ebp,ebp,5 + add edx,edi + xor esi,eax + xor eax,ebx + add edx,ebp + add ecx,DWORD[40+rsp] + and esi,eax + vpor xmm6,xmm6,xmm8 + xor eax,ebx + shrd ebp,ebp,7 + mov edi,edx + xor esi,eax + shld edx,edx,5 + add ecx,esi + xor edi,ebp + xor ebp,eax + add ecx,edx + add ebx,DWORD[44+rsp] + and edi,ebp + xor ebp,eax + shrd edx,edx,7 + mov esi,ecx + xor edi,ebp + shld ecx,ecx,5 + add ebx,edi + xor esi,edx + xor edx,ebp + add ebx,ecx + vpalignr xmm8,xmm6,xmm5,8 + vpxor xmm7,xmm7,xmm3 + add eax,DWORD[48+rsp] + and esi,edx + xor edx,ebp + shrd ecx,ecx,7 + vpxor xmm7,xmm7,xmm0 + mov edi,ebx + xor esi,edx + vpaddd xmm9,xmm11,xmm6 + vmovdqa xmm11,XMMWORD[32+r14] + shld ebx,ebx,5 + add eax,esi + vpxor xmm7,xmm7,xmm8 + xor edi,ecx + xor ecx,edx + add eax,ebx + add ebp,DWORD[52+rsp] + vpsrld xmm8,xmm7,30 + vmovdqa XMMWORD[32+rsp],xmm9 + and edi,ecx + xor ecx,edx + shrd ebx,ebx,7 + mov esi,eax + vpslld xmm7,xmm7,2 + xor edi,ecx + shld eax,eax,5 + add ebp,edi + xor esi,ebx + xor ebx,ecx + add ebp,eax + add edx,DWORD[56+rsp] + and esi,ebx + vpor xmm7,xmm7,xmm8 + xor ebx,ecx + shrd eax,eax,7 + mov edi,ebp + xor esi,ebx + shld ebp,ebp,5 + add edx,esi + xor edi,eax + xor eax,ebx + add edx,ebp + add ecx,DWORD[60+rsp] + and edi,eax + xor eax,ebx + shrd ebp,ebp,7 + mov esi,edx + xor edi,eax + shld edx,edx,5 + add ecx,edi + xor esi,ebp + xor ebp,eax + add ecx,edx + vpalignr xmm8,xmm7,xmm6,8 + vpxor xmm0,xmm0,xmm4 + add ebx,DWORD[rsp] + and esi,ebp + xor ebp,eax + shrd edx,edx,7 + vpxor xmm0,xmm0,xmm1 + mov edi,ecx + xor esi,ebp + vpaddd xmm9,xmm11,xmm7 + shld ecx,ecx,5 + add ebx,esi + vpxor xmm0,xmm0,xmm8 + xor edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[4+rsp] + vpsrld xmm8,xmm0,30 + vmovdqa XMMWORD[48+rsp],xmm9 + and edi,edx + xor edx,ebp + shrd ecx,ecx,7 + mov esi,ebx + vpslld xmm0,xmm0,2 + xor edi,edx + shld ebx,ebx,5 + add eax,edi + xor esi,ecx + xor ecx,edx + add eax,ebx + add ebp,DWORD[8+rsp] + and esi,ecx + vpor xmm0,xmm0,xmm8 + xor ecx,edx + shrd ebx,ebx,7 + mov edi,eax + xor esi,ecx + shld eax,eax,5 + add ebp,esi + xor edi,ebx + xor ebx,ecx + add ebp,eax + add edx,DWORD[12+rsp] + and edi,ebx + xor ebx,ecx + shrd eax,eax,7 + mov esi,ebp + xor edi,ebx + shld ebp,ebp,5 + add edx,edi + xor esi,eax + xor eax,ebx + add edx,ebp + vpalignr xmm8,xmm0,xmm7,8 + vpxor xmm1,xmm1,xmm5 + add ecx,DWORD[16+rsp] + and esi,eax + xor eax,ebx + shrd ebp,ebp,7 + vpxor xmm1,xmm1,xmm2 + mov edi,edx + xor esi,eax + vpaddd xmm9,xmm11,xmm0 + shld edx,edx,5 + add ecx,esi + vpxor xmm1,xmm1,xmm8 + xor edi,ebp + xor ebp,eax + add ecx,edx + add ebx,DWORD[20+rsp] + vpsrld xmm8,xmm1,30 + vmovdqa XMMWORD[rsp],xmm9 + and edi,ebp + xor ebp,eax + shrd edx,edx,7 + mov esi,ecx + vpslld xmm1,xmm1,2 + xor edi,ebp + shld ecx,ecx,5 + add ebx,edi + xor esi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[24+rsp] + and esi,edx + vpor xmm1,xmm1,xmm8 + xor edx,ebp + shrd ecx,ecx,7 + mov edi,ebx + xor esi,edx + shld ebx,ebx,5 + add eax,esi + xor edi,ecx + xor ecx,edx + add eax,ebx + add ebp,DWORD[28+rsp] + and edi,ecx + xor ecx,edx + shrd ebx,ebx,7 + mov esi,eax + xor edi,ecx + shld eax,eax,5 + add ebp,edi + xor esi,ebx + xor ebx,ecx + add ebp,eax + vpalignr xmm8,xmm1,xmm0,8 + vpxor xmm2,xmm2,xmm6 + add edx,DWORD[32+rsp] + and esi,ebx + xor ebx,ecx + shrd eax,eax,7 + vpxor xmm2,xmm2,xmm3 + mov edi,ebp + xor esi,ebx + vpaddd xmm9,xmm11,xmm1 + shld ebp,ebp,5 + add edx,esi + vpxor xmm2,xmm2,xmm8 + xor edi,eax + xor eax,ebx + add edx,ebp + add ecx,DWORD[36+rsp] + vpsrld xmm8,xmm2,30 + vmovdqa XMMWORD[16+rsp],xmm9 + and edi,eax + xor eax,ebx + shrd ebp,ebp,7 + mov esi,edx + vpslld xmm2,xmm2,2 + xor edi,eax + shld edx,edx,5 + add ecx,edi + xor esi,ebp + xor ebp,eax + add ecx,edx + add ebx,DWORD[40+rsp] + and esi,ebp + vpor xmm2,xmm2,xmm8 + xor ebp,eax + shrd edx,edx,7 + mov edi,ecx + xor esi,ebp + shld ecx,ecx,5 + add ebx,esi + xor edi,edx + xor edx,ebp + add ebx,ecx + add eax,DWORD[44+rsp] + and edi,edx + xor edx,ebp + shrd ecx,ecx,7 + mov esi,ebx + xor edi,edx + shld ebx,ebx,5 + add eax,edi + xor esi,edx + add eax,ebx + vpalignr xmm8,xmm2,xmm1,8 + vpxor xmm3,xmm3,xmm7 + add ebp,DWORD[48+rsp] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + vpxor xmm3,xmm3,xmm4 + add ebp,esi + xor edi,ecx + vpaddd xmm9,xmm11,xmm2 + shrd ebx,ebx,7 + add ebp,eax + vpxor xmm3,xmm3,xmm8 + add edx,DWORD[52+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + vpsrld xmm8,xmm3,30 + vmovdqa XMMWORD[32+rsp],xmm9 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + vpslld xmm3,xmm3,2 + add ecx,DWORD[56+rsp] + xor esi,eax + mov edi,edx + shld edx,edx,5 + add ecx,esi + xor edi,eax + shrd ebp,ebp,7 + add ecx,edx + vpor xmm3,xmm3,xmm8 + add ebx,DWORD[60+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[rsp] + vpaddd xmm9,xmm11,xmm3 + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + add eax,esi + vmovdqa XMMWORD[48+rsp],xmm9 + xor edi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[4+rsp] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[8+rsp] + xor esi,ebx + mov edi,ebp + shld ebp,ebp,5 + add edx,esi + xor edi,ebx + shrd eax,eax,7 + add edx,ebp + add ecx,DWORD[12+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + add ecx,edi + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + cmp r9,r10 + je NEAR $L$done_avx + vmovdqa xmm6,XMMWORD[64+r14] + vmovdqa xmm11,XMMWORD[((-64))+r14] + vmovdqu xmm0,XMMWORD[r9] + vmovdqu xmm1,XMMWORD[16+r9] + vmovdqu xmm2,XMMWORD[32+r9] + vmovdqu xmm3,XMMWORD[48+r9] + vpshufb xmm0,xmm0,xmm6 + add r9,64 + add ebx,DWORD[16+rsp] + xor esi,ebp + vpshufb xmm1,xmm1,xmm6 + mov edi,ecx + shld ecx,ecx,5 + vpaddd xmm4,xmm0,xmm11 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + vmovdqa XMMWORD[rsp],xmm4 + add eax,DWORD[20+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[24+rsp] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + add ebp,esi + xor edi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[28+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + add ecx,DWORD[32+rsp] + xor esi,eax + vpshufb xmm2,xmm2,xmm6 + mov edi,edx + shld edx,edx,5 + vpaddd xmm5,xmm1,xmm11 + add ecx,esi + xor edi,eax + shrd ebp,ebp,7 + add ecx,edx + vmovdqa XMMWORD[16+rsp],xmm5 + add ebx,DWORD[36+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[40+rsp] + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + add eax,esi + xor edi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[44+rsp] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[48+rsp] + xor esi,ebx + vpshufb xmm3,xmm3,xmm6 + mov edi,ebp + shld ebp,ebp,5 + vpaddd xmm6,xmm2,xmm11 + add edx,esi + xor edi,ebx + shrd eax,eax,7 + add edx,ebp + vmovdqa XMMWORD[32+rsp],xmm6 + add ecx,DWORD[52+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + add ecx,edi + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + add ebx,DWORD[56+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[60+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + shrd ecx,ecx,7 + add eax,ebx + add eax,DWORD[r8] + add esi,DWORD[4+r8] + add ecx,DWORD[8+r8] + add edx,DWORD[12+r8] + mov DWORD[r8],eax + add ebp,DWORD[16+r8] + mov DWORD[4+r8],esi + mov ebx,esi + mov DWORD[8+r8],ecx + mov edi,ecx + mov DWORD[12+r8],edx + xor edi,edx + mov DWORD[16+r8],ebp + and esi,edi + jmp NEAR $L$oop_avx + +ALIGN 16 +$L$done_avx: + add ebx,DWORD[16+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[20+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[24+rsp] + xor esi,ecx + mov edi,eax + shld eax,eax,5 + add ebp,esi + xor edi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[28+rsp] + xor edi,ebx + mov esi,ebp + shld ebp,ebp,5 + add edx,edi + xor esi,ebx + shrd eax,eax,7 + add edx,ebp + add ecx,DWORD[32+rsp] + xor esi,eax + mov edi,edx + shld edx,edx,5 + add ecx,esi + xor edi,eax + shrd ebp,ebp,7 + add ecx,edx + add ebx,DWORD[36+rsp] + xor edi,ebp + mov esi,ecx + shld ecx,ecx,5 + add ebx,edi + xor esi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[40+rsp] + xor esi,edx + mov edi,ebx + shld ebx,ebx,5 + add eax,esi + xor edi,edx + shrd ecx,ecx,7 + add eax,ebx + add ebp,DWORD[44+rsp] + xor edi,ecx + mov esi,eax + shld eax,eax,5 + add ebp,edi + xor esi,ecx + shrd ebx,ebx,7 + add ebp,eax + add edx,DWORD[48+rsp] + xor esi,ebx + mov edi,ebp + shld ebp,ebp,5 + add edx,esi + xor edi,ebx + shrd eax,eax,7 + add edx,ebp + add ecx,DWORD[52+rsp] + xor edi,eax + mov esi,edx + shld edx,edx,5 + add ecx,edi + xor esi,eax + shrd ebp,ebp,7 + add ecx,edx + add ebx,DWORD[56+rsp] + xor esi,ebp + mov edi,ecx + shld ecx,ecx,5 + add ebx,esi + xor edi,ebp + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD[60+rsp] + xor edi,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,edi + shrd ecx,ecx,7 + add eax,ebx + vzeroupper + + add eax,DWORD[r8] + add esi,DWORD[4+r8] + add ecx,DWORD[8+r8] + mov DWORD[r8],eax + add edx,DWORD[12+r8] + mov DWORD[4+r8],esi + add ebp,DWORD[16+r8] + mov DWORD[8+r8],ecx + mov DWORD[12+r8],edx + mov DWORD[16+r8],ebp + movaps xmm6,XMMWORD[((-40-96))+r11] + movaps xmm7,XMMWORD[((-40-80))+r11] + movaps xmm8,XMMWORD[((-40-64))+r11] + movaps xmm9,XMMWORD[((-40-48))+r11] + movaps xmm10,XMMWORD[((-40-32))+r11] + movaps xmm11,XMMWORD[((-40-16))+r11] + mov r14,QWORD[((-40))+r11] + + mov r13,QWORD[((-32))+r11] + + mov r12,QWORD[((-24))+r11] + + mov rbp,QWORD[((-16))+r11] + + mov rbx,QWORD[((-8))+r11] + + lea rsp,[r11] + +$L$epilogue_avx: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha1_block_data_order_avx: + +ALIGN 16 +sha1_block_data_order_avx2: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha1_block_data_order_avx2: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + +_avx2_shortcut: + + mov r11,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + vzeroupper + lea rsp,[((-96))+rsp] + vmovaps XMMWORD[(-40-96)+r11],xmm6 + vmovaps XMMWORD[(-40-80)+r11],xmm7 + vmovaps XMMWORD[(-40-64)+r11],xmm8 + vmovaps XMMWORD[(-40-48)+r11],xmm9 + vmovaps XMMWORD[(-40-32)+r11],xmm10 + vmovaps XMMWORD[(-40-16)+r11],xmm11 +$L$prologue_avx2: + mov r8,rdi + mov r9,rsi + mov r10,rdx + + lea rsp,[((-640))+rsp] + shl r10,6 + lea r13,[64+r9] + and rsp,-128 + add r10,r9 + lea r14,[((K_XX_XX+64))] + + mov eax,DWORD[r8] + cmp r13,r10 + cmovae r13,r9 + mov ebp,DWORD[4+r8] + mov ecx,DWORD[8+r8] + mov edx,DWORD[12+r8] + mov esi,DWORD[16+r8] + vmovdqu ymm6,YMMWORD[64+r14] + + vmovdqu xmm0,XMMWORD[r9] + vmovdqu xmm1,XMMWORD[16+r9] + vmovdqu xmm2,XMMWORD[32+r9] + vmovdqu xmm3,XMMWORD[48+r9] + lea r9,[64+r9] + vinserti128 ymm0,ymm0,XMMWORD[r13],1 + vinserti128 ymm1,ymm1,XMMWORD[16+r13],1 + vpshufb ymm0,ymm0,ymm6 + vinserti128 ymm2,ymm2,XMMWORD[32+r13],1 + vpshufb ymm1,ymm1,ymm6 + vinserti128 ymm3,ymm3,XMMWORD[48+r13],1 + vpshufb ymm2,ymm2,ymm6 + vmovdqu ymm11,YMMWORD[((-64))+r14] + vpshufb ymm3,ymm3,ymm6 + + vpaddd ymm4,ymm0,ymm11 + vpaddd ymm5,ymm1,ymm11 + vmovdqu YMMWORD[rsp],ymm4 + vpaddd ymm6,ymm2,ymm11 + vmovdqu YMMWORD[32+rsp],ymm5 + vpaddd ymm7,ymm3,ymm11 + vmovdqu YMMWORD[64+rsp],ymm6 + vmovdqu YMMWORD[96+rsp],ymm7 + vpalignr ymm4,ymm1,ymm0,8 + vpsrldq ymm8,ymm3,4 + vpxor ymm4,ymm4,ymm0 + vpxor ymm8,ymm8,ymm2 + vpxor ymm4,ymm4,ymm8 + vpsrld ymm8,ymm4,31 + vpslldq ymm10,ymm4,12 + vpaddd ymm4,ymm4,ymm4 + vpsrld ymm9,ymm10,30 + vpor ymm4,ymm4,ymm8 + vpslld ymm10,ymm10,2 + vpxor ymm4,ymm4,ymm9 + vpxor ymm4,ymm4,ymm10 + vpaddd ymm9,ymm4,ymm11 + vmovdqu YMMWORD[128+rsp],ymm9 + vpalignr ymm5,ymm2,ymm1,8 + vpsrldq ymm8,ymm4,4 + vpxor ymm5,ymm5,ymm1 + vpxor ymm8,ymm8,ymm3 + vpxor ymm5,ymm5,ymm8 + vpsrld ymm8,ymm5,31 + vmovdqu ymm11,YMMWORD[((-32))+r14] + vpslldq ymm10,ymm5,12 + vpaddd ymm5,ymm5,ymm5 + vpsrld ymm9,ymm10,30 + vpor ymm5,ymm5,ymm8 + vpslld ymm10,ymm10,2 + vpxor ymm5,ymm5,ymm9 + vpxor ymm5,ymm5,ymm10 + vpaddd ymm9,ymm5,ymm11 + vmovdqu YMMWORD[160+rsp],ymm9 + vpalignr ymm6,ymm3,ymm2,8 + vpsrldq ymm8,ymm5,4 + vpxor ymm6,ymm6,ymm2 + vpxor ymm8,ymm8,ymm4 + vpxor ymm6,ymm6,ymm8 + vpsrld ymm8,ymm6,31 + vpslldq ymm10,ymm6,12 + vpaddd ymm6,ymm6,ymm6 + vpsrld ymm9,ymm10,30 + vpor ymm6,ymm6,ymm8 + vpslld ymm10,ymm10,2 + vpxor ymm6,ymm6,ymm9 + vpxor ymm6,ymm6,ymm10 + vpaddd ymm9,ymm6,ymm11 + vmovdqu YMMWORD[192+rsp],ymm9 + vpalignr ymm7,ymm4,ymm3,8 + vpsrldq ymm8,ymm6,4 + vpxor ymm7,ymm7,ymm3 + vpxor ymm8,ymm8,ymm5 + vpxor ymm7,ymm7,ymm8 + vpsrld ymm8,ymm7,31 + vpslldq ymm10,ymm7,12 + vpaddd ymm7,ymm7,ymm7 + vpsrld ymm9,ymm10,30 + vpor ymm7,ymm7,ymm8 + vpslld ymm10,ymm10,2 + vpxor ymm7,ymm7,ymm9 + vpxor ymm7,ymm7,ymm10 + vpaddd ymm9,ymm7,ymm11 + vmovdqu YMMWORD[224+rsp],ymm9 + lea r13,[128+rsp] + jmp NEAR $L$oop_avx2 +ALIGN 32 +$L$oop_avx2: + rorx ebx,ebp,2 + andn edi,ebp,edx + and ebp,ecx + xor ebp,edi + jmp NEAR $L$align32_1 +ALIGN 32 +$L$align32_1: + vpalignr ymm8,ymm7,ymm6,8 + vpxor ymm0,ymm0,ymm4 + add esi,DWORD[((-128))+r13] + andn edi,eax,ecx + vpxor ymm0,ymm0,ymm1 + add esi,ebp + rorx r12d,eax,27 + rorx ebp,eax,2 + vpxor ymm0,ymm0,ymm8 + and eax,ebx + add esi,r12d + xor eax,edi + vpsrld ymm8,ymm0,30 + vpslld ymm0,ymm0,2 + add edx,DWORD[((-124))+r13] + andn edi,esi,ebx + add edx,eax + rorx r12d,esi,27 + rorx eax,esi,2 + and esi,ebp + vpor ymm0,ymm0,ymm8 + add edx,r12d + xor esi,edi + add ecx,DWORD[((-120))+r13] + andn edi,edx,ebp + vpaddd ymm9,ymm0,ymm11 + add ecx,esi + rorx r12d,edx,27 + rorx esi,edx,2 + and edx,eax + vmovdqu YMMWORD[256+rsp],ymm9 + add ecx,r12d + xor edx,edi + add ebx,DWORD[((-116))+r13] + andn edi,ecx,eax + add ebx,edx + rorx r12d,ecx,27 + rorx edx,ecx,2 + and ecx,esi + add ebx,r12d + xor ecx,edi + add ebp,DWORD[((-96))+r13] + andn edi,ebx,esi + add ebp,ecx + rorx r12d,ebx,27 + rorx ecx,ebx,2 + and ebx,edx + add ebp,r12d + xor ebx,edi + vpalignr ymm8,ymm0,ymm7,8 + vpxor ymm1,ymm1,ymm5 + add eax,DWORD[((-92))+r13] + andn edi,ebp,edx + vpxor ymm1,ymm1,ymm2 + add eax,ebx + rorx r12d,ebp,27 + rorx ebx,ebp,2 + vpxor ymm1,ymm1,ymm8 + and ebp,ecx + add eax,r12d + xor ebp,edi + vpsrld ymm8,ymm1,30 + vpslld ymm1,ymm1,2 + add esi,DWORD[((-88))+r13] + andn edi,eax,ecx + add esi,ebp + rorx r12d,eax,27 + rorx ebp,eax,2 + and eax,ebx + vpor ymm1,ymm1,ymm8 + add esi,r12d + xor eax,edi + add edx,DWORD[((-84))+r13] + andn edi,esi,ebx + vpaddd ymm9,ymm1,ymm11 + add edx,eax + rorx r12d,esi,27 + rorx eax,esi,2 + and esi,ebp + vmovdqu YMMWORD[288+rsp],ymm9 + add edx,r12d + xor esi,edi + add ecx,DWORD[((-64))+r13] + andn edi,edx,ebp + add ecx,esi + rorx r12d,edx,27 + rorx esi,edx,2 + and edx,eax + add ecx,r12d + xor edx,edi + add ebx,DWORD[((-60))+r13] + andn edi,ecx,eax + add ebx,edx + rorx r12d,ecx,27 + rorx edx,ecx,2 + and ecx,esi + add ebx,r12d + xor ecx,edi + vpalignr ymm8,ymm1,ymm0,8 + vpxor ymm2,ymm2,ymm6 + add ebp,DWORD[((-56))+r13] + andn edi,ebx,esi + vpxor ymm2,ymm2,ymm3 + vmovdqu ymm11,YMMWORD[r14] + add ebp,ecx + rorx r12d,ebx,27 + rorx ecx,ebx,2 + vpxor ymm2,ymm2,ymm8 + and ebx,edx + add ebp,r12d + xor ebx,edi + vpsrld ymm8,ymm2,30 + vpslld ymm2,ymm2,2 + add eax,DWORD[((-52))+r13] + andn edi,ebp,edx + add eax,ebx + rorx r12d,ebp,27 + rorx ebx,ebp,2 + and ebp,ecx + vpor ymm2,ymm2,ymm8 + add eax,r12d + xor ebp,edi + add esi,DWORD[((-32))+r13] + andn edi,eax,ecx + vpaddd ymm9,ymm2,ymm11 + add esi,ebp + rorx r12d,eax,27 + rorx ebp,eax,2 + and eax,ebx + vmovdqu YMMWORD[320+rsp],ymm9 + add esi,r12d + xor eax,edi + add edx,DWORD[((-28))+r13] + andn edi,esi,ebx + add edx,eax + rorx r12d,esi,27 + rorx eax,esi,2 + and esi,ebp + add edx,r12d + xor esi,edi + add ecx,DWORD[((-24))+r13] + andn edi,edx,ebp + add ecx,esi + rorx r12d,edx,27 + rorx esi,edx,2 + and edx,eax + add ecx,r12d + xor edx,edi + vpalignr ymm8,ymm2,ymm1,8 + vpxor ymm3,ymm3,ymm7 + add ebx,DWORD[((-20))+r13] + andn edi,ecx,eax + vpxor ymm3,ymm3,ymm4 + add ebx,edx + rorx r12d,ecx,27 + rorx edx,ecx,2 + vpxor ymm3,ymm3,ymm8 + and ecx,esi + add ebx,r12d + xor ecx,edi + vpsrld ymm8,ymm3,30 + vpslld ymm3,ymm3,2 + add ebp,DWORD[r13] + andn edi,ebx,esi + add ebp,ecx + rorx r12d,ebx,27 + rorx ecx,ebx,2 + and ebx,edx + vpor ymm3,ymm3,ymm8 + add ebp,r12d + xor ebx,edi + add eax,DWORD[4+r13] + andn edi,ebp,edx + vpaddd ymm9,ymm3,ymm11 + add eax,ebx + rorx r12d,ebp,27 + rorx ebx,ebp,2 + and ebp,ecx + vmovdqu YMMWORD[352+rsp],ymm9 + add eax,r12d + xor ebp,edi + add esi,DWORD[8+r13] + andn edi,eax,ecx + add esi,ebp + rorx r12d,eax,27 + rorx ebp,eax,2 + and eax,ebx + add esi,r12d + xor eax,edi + add edx,DWORD[12+r13] + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + xor esi,ebx + vpalignr ymm8,ymm3,ymm2,8 + vpxor ymm4,ymm4,ymm0 + add ecx,DWORD[32+r13] + lea ecx,[rsi*1+rcx] + vpxor ymm4,ymm4,ymm5 + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + vpxor ymm4,ymm4,ymm8 + add ecx,r12d + xor edx,ebp + add ebx,DWORD[36+r13] + vpsrld ymm8,ymm4,30 + vpslld ymm4,ymm4,2 + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + xor ecx,eax + vpor ymm4,ymm4,ymm8 + add ebp,DWORD[40+r13] + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + vpaddd ymm9,ymm4,ymm11 + xor ebx,edx + add ebp,r12d + xor ebx,esi + add eax,DWORD[44+r13] + vmovdqu YMMWORD[384+rsp],ymm9 + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + xor ebp,edx + add esi,DWORD[64+r13] + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + xor eax,ecx + vpalignr ymm8,ymm4,ymm3,8 + vpxor ymm5,ymm5,ymm1 + add edx,DWORD[68+r13] + lea edx,[rax*1+rdx] + vpxor ymm5,ymm5,ymm6 + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + vpxor ymm5,ymm5,ymm8 + add edx,r12d + xor esi,ebx + add ecx,DWORD[72+r13] + vpsrld ymm8,ymm5,30 + vpslld ymm5,ymm5,2 + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + xor edx,ebp + vpor ymm5,ymm5,ymm8 + add ebx,DWORD[76+r13] + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + vpaddd ymm9,ymm5,ymm11 + xor ecx,esi + add ebx,r12d + xor ecx,eax + add ebp,DWORD[96+r13] + vmovdqu YMMWORD[416+rsp],ymm9 + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + xor ebx,esi + add eax,DWORD[100+r13] + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + xor ebp,edx + vpalignr ymm8,ymm5,ymm4,8 + vpxor ymm6,ymm6,ymm2 + add esi,DWORD[104+r13] + lea esi,[rbp*1+rsi] + vpxor ymm6,ymm6,ymm7 + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + vpxor ymm6,ymm6,ymm8 + add esi,r12d + xor eax,ecx + add edx,DWORD[108+r13] + lea r13,[256+r13] + vpsrld ymm8,ymm6,30 + vpslld ymm6,ymm6,2 + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + xor esi,ebx + vpor ymm6,ymm6,ymm8 + add ecx,DWORD[((-128))+r13] + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + vpaddd ymm9,ymm6,ymm11 + xor edx,eax + add ecx,r12d + xor edx,ebp + add ebx,DWORD[((-124))+r13] + vmovdqu YMMWORD[448+rsp],ymm9 + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + xor ecx,eax + add ebp,DWORD[((-120))+r13] + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + xor ebx,esi + vpalignr ymm8,ymm6,ymm5,8 + vpxor ymm7,ymm7,ymm3 + add eax,DWORD[((-116))+r13] + lea eax,[rbx*1+rax] + vpxor ymm7,ymm7,ymm0 + vmovdqu ymm11,YMMWORD[32+r14] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + vpxor ymm7,ymm7,ymm8 + add eax,r12d + xor ebp,edx + add esi,DWORD[((-96))+r13] + vpsrld ymm8,ymm7,30 + vpslld ymm7,ymm7,2 + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + xor eax,ecx + vpor ymm7,ymm7,ymm8 + add edx,DWORD[((-92))+r13] + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + vpaddd ymm9,ymm7,ymm11 + xor esi,ebp + add edx,r12d + xor esi,ebx + add ecx,DWORD[((-88))+r13] + vmovdqu YMMWORD[480+rsp],ymm9 + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + xor edx,ebp + add ebx,DWORD[((-84))+r13] + mov edi,esi + xor edi,eax + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + and ecx,edi + jmp NEAR $L$align32_2 +ALIGN 32 +$L$align32_2: + vpalignr ymm8,ymm7,ymm6,8 + vpxor ymm0,ymm0,ymm4 + add ebp,DWORD[((-64))+r13] + xor ecx,esi + vpxor ymm0,ymm0,ymm1 + mov edi,edx + xor edi,esi + lea ebp,[rbp*1+rcx] + vpxor ymm0,ymm0,ymm8 + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + vpsrld ymm8,ymm0,30 + vpslld ymm0,ymm0,2 + add ebp,r12d + and ebx,edi + add eax,DWORD[((-60))+r13] + xor ebx,edx + mov edi,ecx + xor edi,edx + vpor ymm0,ymm0,ymm8 + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + vpaddd ymm9,ymm0,ymm11 + add eax,r12d + and ebp,edi + add esi,DWORD[((-56))+r13] + xor ebp,ecx + vmovdqu YMMWORD[512+rsp],ymm9 + mov edi,ebx + xor edi,ecx + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + and eax,edi + add edx,DWORD[((-52))+r13] + xor eax,ebx + mov edi,ebp + xor edi,ebx + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + and esi,edi + add ecx,DWORD[((-32))+r13] + xor esi,ebp + mov edi,eax + xor edi,ebp + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + and edx,edi + vpalignr ymm8,ymm0,ymm7,8 + vpxor ymm1,ymm1,ymm5 + add ebx,DWORD[((-28))+r13] + xor edx,eax + vpxor ymm1,ymm1,ymm2 + mov edi,esi + xor edi,eax + lea ebx,[rdx*1+rbx] + vpxor ymm1,ymm1,ymm8 + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + vpsrld ymm8,ymm1,30 + vpslld ymm1,ymm1,2 + add ebx,r12d + and ecx,edi + add ebp,DWORD[((-24))+r13] + xor ecx,esi + mov edi,edx + xor edi,esi + vpor ymm1,ymm1,ymm8 + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + vpaddd ymm9,ymm1,ymm11 + add ebp,r12d + and ebx,edi + add eax,DWORD[((-20))+r13] + xor ebx,edx + vmovdqu YMMWORD[544+rsp],ymm9 + mov edi,ecx + xor edi,edx + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + and ebp,edi + add esi,DWORD[r13] + xor ebp,ecx + mov edi,ebx + xor edi,ecx + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + and eax,edi + add edx,DWORD[4+r13] + xor eax,ebx + mov edi,ebp + xor edi,ebx + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + and esi,edi + vpalignr ymm8,ymm1,ymm0,8 + vpxor ymm2,ymm2,ymm6 + add ecx,DWORD[8+r13] + xor esi,ebp + vpxor ymm2,ymm2,ymm3 + mov edi,eax + xor edi,ebp + lea ecx,[rsi*1+rcx] + vpxor ymm2,ymm2,ymm8 + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + vpsrld ymm8,ymm2,30 + vpslld ymm2,ymm2,2 + add ecx,r12d + and edx,edi + add ebx,DWORD[12+r13] + xor edx,eax + mov edi,esi + xor edi,eax + vpor ymm2,ymm2,ymm8 + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + vpaddd ymm9,ymm2,ymm11 + add ebx,r12d + and ecx,edi + add ebp,DWORD[32+r13] + xor ecx,esi + vmovdqu YMMWORD[576+rsp],ymm9 + mov edi,edx + xor edi,esi + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + and ebx,edi + add eax,DWORD[36+r13] + xor ebx,edx + mov edi,ecx + xor edi,edx + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + and ebp,edi + add esi,DWORD[40+r13] + xor ebp,ecx + mov edi,ebx + xor edi,ecx + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + and eax,edi + vpalignr ymm8,ymm2,ymm1,8 + vpxor ymm3,ymm3,ymm7 + add edx,DWORD[44+r13] + xor eax,ebx + vpxor ymm3,ymm3,ymm4 + mov edi,ebp + xor edi,ebx + lea edx,[rax*1+rdx] + vpxor ymm3,ymm3,ymm8 + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + vpsrld ymm8,ymm3,30 + vpslld ymm3,ymm3,2 + add edx,r12d + and esi,edi + add ecx,DWORD[64+r13] + xor esi,ebp + mov edi,eax + xor edi,ebp + vpor ymm3,ymm3,ymm8 + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + vpaddd ymm9,ymm3,ymm11 + add ecx,r12d + and edx,edi + add ebx,DWORD[68+r13] + xor edx,eax + vmovdqu YMMWORD[608+rsp],ymm9 + mov edi,esi + xor edi,eax + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + and ecx,edi + add ebp,DWORD[72+r13] + xor ecx,esi + mov edi,edx + xor edi,esi + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + and ebx,edi + add eax,DWORD[76+r13] + xor ebx,edx + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + xor ebp,edx + add esi,DWORD[96+r13] + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + xor eax,ecx + add edx,DWORD[100+r13] + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + xor esi,ebx + add ecx,DWORD[104+r13] + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + xor edx,ebp + add ebx,DWORD[108+r13] + lea r13,[256+r13] + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + xor ecx,eax + add ebp,DWORD[((-128))+r13] + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + xor ebx,esi + add eax,DWORD[((-124))+r13] + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + xor ebp,edx + add esi,DWORD[((-120))+r13] + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + xor eax,ecx + add edx,DWORD[((-116))+r13] + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + xor esi,ebx + add ecx,DWORD[((-96))+r13] + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + xor edx,ebp + add ebx,DWORD[((-92))+r13] + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + xor ecx,eax + add ebp,DWORD[((-88))+r13] + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + xor ebx,esi + add eax,DWORD[((-84))+r13] + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + xor ebp,edx + add esi,DWORD[((-64))+r13] + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + xor eax,ecx + add edx,DWORD[((-60))+r13] + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + xor esi,ebx + add ecx,DWORD[((-56))+r13] + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + xor edx,ebp + add ebx,DWORD[((-52))+r13] + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + xor ecx,eax + add ebp,DWORD[((-32))+r13] + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + xor ebx,esi + add eax,DWORD[((-28))+r13] + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + xor ebp,edx + add esi,DWORD[((-24))+r13] + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + xor eax,ecx + add edx,DWORD[((-20))+r13] + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + add edx,r12d + lea r13,[128+r9] + lea rdi,[128+r9] + cmp r13,r10 + cmovae r13,r9 + + + add edx,DWORD[r8] + add esi,DWORD[4+r8] + add ebp,DWORD[8+r8] + mov DWORD[r8],edx + add ebx,DWORD[12+r8] + mov DWORD[4+r8],esi + mov eax,edx + add ecx,DWORD[16+r8] + mov r12d,ebp + mov DWORD[8+r8],ebp + mov edx,ebx + + mov DWORD[12+r8],ebx + mov ebp,esi + mov DWORD[16+r8],ecx + + mov esi,ecx + mov ecx,r12d + + + cmp r9,r10 + je NEAR $L$done_avx2 + vmovdqu ymm6,YMMWORD[64+r14] + cmp rdi,r10 + ja NEAR $L$ast_avx2 + + vmovdqu xmm0,XMMWORD[((-64))+rdi] + vmovdqu xmm1,XMMWORD[((-48))+rdi] + vmovdqu xmm2,XMMWORD[((-32))+rdi] + vmovdqu xmm3,XMMWORD[((-16))+rdi] + vinserti128 ymm0,ymm0,XMMWORD[r13],1 + vinserti128 ymm1,ymm1,XMMWORD[16+r13],1 + vinserti128 ymm2,ymm2,XMMWORD[32+r13],1 + vinserti128 ymm3,ymm3,XMMWORD[48+r13],1 + jmp NEAR $L$ast_avx2 + +ALIGN 32 +$L$ast_avx2: + lea r13,[((128+16))+rsp] + rorx ebx,ebp,2 + andn edi,ebp,edx + and ebp,ecx + xor ebp,edi + sub r9,-128 + add esi,DWORD[((-128))+r13] + andn edi,eax,ecx + add esi,ebp + rorx r12d,eax,27 + rorx ebp,eax,2 + and eax,ebx + add esi,r12d + xor eax,edi + add edx,DWORD[((-124))+r13] + andn edi,esi,ebx + add edx,eax + rorx r12d,esi,27 + rorx eax,esi,2 + and esi,ebp + add edx,r12d + xor esi,edi + add ecx,DWORD[((-120))+r13] + andn edi,edx,ebp + add ecx,esi + rorx r12d,edx,27 + rorx esi,edx,2 + and edx,eax + add ecx,r12d + xor edx,edi + add ebx,DWORD[((-116))+r13] + andn edi,ecx,eax + add ebx,edx + rorx r12d,ecx,27 + rorx edx,ecx,2 + and ecx,esi + add ebx,r12d + xor ecx,edi + add ebp,DWORD[((-96))+r13] + andn edi,ebx,esi + add ebp,ecx + rorx r12d,ebx,27 + rorx ecx,ebx,2 + and ebx,edx + add ebp,r12d + xor ebx,edi + add eax,DWORD[((-92))+r13] + andn edi,ebp,edx + add eax,ebx + rorx r12d,ebp,27 + rorx ebx,ebp,2 + and ebp,ecx + add eax,r12d + xor ebp,edi + add esi,DWORD[((-88))+r13] + andn edi,eax,ecx + add esi,ebp + rorx r12d,eax,27 + rorx ebp,eax,2 + and eax,ebx + add esi,r12d + xor eax,edi + add edx,DWORD[((-84))+r13] + andn edi,esi,ebx + add edx,eax + rorx r12d,esi,27 + rorx eax,esi,2 + and esi,ebp + add edx,r12d + xor esi,edi + add ecx,DWORD[((-64))+r13] + andn edi,edx,ebp + add ecx,esi + rorx r12d,edx,27 + rorx esi,edx,2 + and edx,eax + add ecx,r12d + xor edx,edi + add ebx,DWORD[((-60))+r13] + andn edi,ecx,eax + add ebx,edx + rorx r12d,ecx,27 + rorx edx,ecx,2 + and ecx,esi + add ebx,r12d + xor ecx,edi + add ebp,DWORD[((-56))+r13] + andn edi,ebx,esi + add ebp,ecx + rorx r12d,ebx,27 + rorx ecx,ebx,2 + and ebx,edx + add ebp,r12d + xor ebx,edi + add eax,DWORD[((-52))+r13] + andn edi,ebp,edx + add eax,ebx + rorx r12d,ebp,27 + rorx ebx,ebp,2 + and ebp,ecx + add eax,r12d + xor ebp,edi + add esi,DWORD[((-32))+r13] + andn edi,eax,ecx + add esi,ebp + rorx r12d,eax,27 + rorx ebp,eax,2 + and eax,ebx + add esi,r12d + xor eax,edi + add edx,DWORD[((-28))+r13] + andn edi,esi,ebx + add edx,eax + rorx r12d,esi,27 + rorx eax,esi,2 + and esi,ebp + add edx,r12d + xor esi,edi + add ecx,DWORD[((-24))+r13] + andn edi,edx,ebp + add ecx,esi + rorx r12d,edx,27 + rorx esi,edx,2 + and edx,eax + add ecx,r12d + xor edx,edi + add ebx,DWORD[((-20))+r13] + andn edi,ecx,eax + add ebx,edx + rorx r12d,ecx,27 + rorx edx,ecx,2 + and ecx,esi + add ebx,r12d + xor ecx,edi + add ebp,DWORD[r13] + andn edi,ebx,esi + add ebp,ecx + rorx r12d,ebx,27 + rorx ecx,ebx,2 + and ebx,edx + add ebp,r12d + xor ebx,edi + add eax,DWORD[4+r13] + andn edi,ebp,edx + add eax,ebx + rorx r12d,ebp,27 + rorx ebx,ebp,2 + and ebp,ecx + add eax,r12d + xor ebp,edi + add esi,DWORD[8+r13] + andn edi,eax,ecx + add esi,ebp + rorx r12d,eax,27 + rorx ebp,eax,2 + and eax,ebx + add esi,r12d + xor eax,edi + add edx,DWORD[12+r13] + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + xor esi,ebx + add ecx,DWORD[32+r13] + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + xor edx,ebp + add ebx,DWORD[36+r13] + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + xor ecx,eax + add ebp,DWORD[40+r13] + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + xor ebx,esi + add eax,DWORD[44+r13] + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + xor ebp,edx + add esi,DWORD[64+r13] + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + xor eax,ecx + vmovdqu ymm11,YMMWORD[((-64))+r14] + vpshufb ymm0,ymm0,ymm6 + add edx,DWORD[68+r13] + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + xor esi,ebx + add ecx,DWORD[72+r13] + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + xor edx,ebp + add ebx,DWORD[76+r13] + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + xor ecx,eax + add ebp,DWORD[96+r13] + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + xor ebx,esi + add eax,DWORD[100+r13] + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + xor ebp,edx + vpshufb ymm1,ymm1,ymm6 + vpaddd ymm8,ymm0,ymm11 + add esi,DWORD[104+r13] + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + xor eax,ecx + add edx,DWORD[108+r13] + lea r13,[256+r13] + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + xor esi,ebx + add ecx,DWORD[((-128))+r13] + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + xor edx,ebp + add ebx,DWORD[((-124))+r13] + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + xor ecx,eax + add ebp,DWORD[((-120))+r13] + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + xor ebx,esi + vmovdqu YMMWORD[rsp],ymm8 + vpshufb ymm2,ymm2,ymm6 + vpaddd ymm9,ymm1,ymm11 + add eax,DWORD[((-116))+r13] + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + xor ebp,edx + add esi,DWORD[((-96))+r13] + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + xor eax,ecx + add edx,DWORD[((-92))+r13] + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + xor esi,ebx + add ecx,DWORD[((-88))+r13] + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + xor edx,ebp + add ebx,DWORD[((-84))+r13] + mov edi,esi + xor edi,eax + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + and ecx,edi + vmovdqu YMMWORD[32+rsp],ymm9 + vpshufb ymm3,ymm3,ymm6 + vpaddd ymm6,ymm2,ymm11 + add ebp,DWORD[((-64))+r13] + xor ecx,esi + mov edi,edx + xor edi,esi + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + and ebx,edi + add eax,DWORD[((-60))+r13] + xor ebx,edx + mov edi,ecx + xor edi,edx + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + and ebp,edi + add esi,DWORD[((-56))+r13] + xor ebp,ecx + mov edi,ebx + xor edi,ecx + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + and eax,edi + add edx,DWORD[((-52))+r13] + xor eax,ebx + mov edi,ebp + xor edi,ebx + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + and esi,edi + add ecx,DWORD[((-32))+r13] + xor esi,ebp + mov edi,eax + xor edi,ebp + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + and edx,edi + jmp NEAR $L$align32_3 +ALIGN 32 +$L$align32_3: + vmovdqu YMMWORD[64+rsp],ymm6 + vpaddd ymm7,ymm3,ymm11 + add ebx,DWORD[((-28))+r13] + xor edx,eax + mov edi,esi + xor edi,eax + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + and ecx,edi + add ebp,DWORD[((-24))+r13] + xor ecx,esi + mov edi,edx + xor edi,esi + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + and ebx,edi + add eax,DWORD[((-20))+r13] + xor ebx,edx + mov edi,ecx + xor edi,edx + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + and ebp,edi + add esi,DWORD[r13] + xor ebp,ecx + mov edi,ebx + xor edi,ecx + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + and eax,edi + add edx,DWORD[4+r13] + xor eax,ebx + mov edi,ebp + xor edi,ebx + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + and esi,edi + vmovdqu YMMWORD[96+rsp],ymm7 + add ecx,DWORD[8+r13] + xor esi,ebp + mov edi,eax + xor edi,ebp + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + and edx,edi + add ebx,DWORD[12+r13] + xor edx,eax + mov edi,esi + xor edi,eax + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + and ecx,edi + add ebp,DWORD[32+r13] + xor ecx,esi + mov edi,edx + xor edi,esi + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + and ebx,edi + add eax,DWORD[36+r13] + xor ebx,edx + mov edi,ecx + xor edi,edx + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + and ebp,edi + add esi,DWORD[40+r13] + xor ebp,ecx + mov edi,ebx + xor edi,ecx + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + and eax,edi + vpalignr ymm4,ymm1,ymm0,8 + add edx,DWORD[44+r13] + xor eax,ebx + mov edi,ebp + xor edi,ebx + vpsrldq ymm8,ymm3,4 + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + vpxor ymm4,ymm4,ymm0 + vpxor ymm8,ymm8,ymm2 + xor esi,ebp + add edx,r12d + vpxor ymm4,ymm4,ymm8 + and esi,edi + add ecx,DWORD[64+r13] + xor esi,ebp + mov edi,eax + vpsrld ymm8,ymm4,31 + xor edi,ebp + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + vpslldq ymm10,ymm4,12 + vpaddd ymm4,ymm4,ymm4 + rorx esi,edx,2 + xor edx,eax + vpsrld ymm9,ymm10,30 + vpor ymm4,ymm4,ymm8 + add ecx,r12d + and edx,edi + vpslld ymm10,ymm10,2 + vpxor ymm4,ymm4,ymm9 + add ebx,DWORD[68+r13] + xor edx,eax + vpxor ymm4,ymm4,ymm10 + mov edi,esi + xor edi,eax + lea ebx,[rdx*1+rbx] + vpaddd ymm9,ymm4,ymm11 + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + vmovdqu YMMWORD[128+rsp],ymm9 + add ebx,r12d + and ecx,edi + add ebp,DWORD[72+r13] + xor ecx,esi + mov edi,edx + xor edi,esi + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + and ebx,edi + add eax,DWORD[76+r13] + xor ebx,edx + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + xor ebp,edx + vpalignr ymm5,ymm2,ymm1,8 + add esi,DWORD[96+r13] + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + vpsrldq ymm8,ymm4,4 + xor eax,ebx + add esi,r12d + xor eax,ecx + vpxor ymm5,ymm5,ymm1 + vpxor ymm8,ymm8,ymm3 + add edx,DWORD[100+r13] + lea edx,[rax*1+rdx] + vpxor ymm5,ymm5,ymm8 + rorx r12d,esi,27 + rorx eax,esi,2 + xor esi,ebp + add edx,r12d + vpsrld ymm8,ymm5,31 + vmovdqu ymm11,YMMWORD[((-32))+r14] + xor esi,ebx + add ecx,DWORD[104+r13] + lea ecx,[rsi*1+rcx] + vpslldq ymm10,ymm5,12 + vpaddd ymm5,ymm5,ymm5 + rorx r12d,edx,27 + rorx esi,edx,2 + vpsrld ymm9,ymm10,30 + vpor ymm5,ymm5,ymm8 + xor edx,eax + add ecx,r12d + vpslld ymm10,ymm10,2 + vpxor ymm5,ymm5,ymm9 + xor edx,ebp + add ebx,DWORD[108+r13] + lea r13,[256+r13] + vpxor ymm5,ymm5,ymm10 + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + vpaddd ymm9,ymm5,ymm11 + xor ecx,esi + add ebx,r12d + xor ecx,eax + vmovdqu YMMWORD[160+rsp],ymm9 + add ebp,DWORD[((-128))+r13] + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + xor ebx,esi + vpalignr ymm6,ymm3,ymm2,8 + add eax,DWORD[((-124))+r13] + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + vpsrldq ymm8,ymm5,4 + xor ebp,ecx + add eax,r12d + xor ebp,edx + vpxor ymm6,ymm6,ymm2 + vpxor ymm8,ymm8,ymm4 + add esi,DWORD[((-120))+r13] + lea esi,[rbp*1+rsi] + vpxor ymm6,ymm6,ymm8 + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + vpsrld ymm8,ymm6,31 + xor eax,ecx + add edx,DWORD[((-116))+r13] + lea edx,[rax*1+rdx] + vpslldq ymm10,ymm6,12 + vpaddd ymm6,ymm6,ymm6 + rorx r12d,esi,27 + rorx eax,esi,2 + vpsrld ymm9,ymm10,30 + vpor ymm6,ymm6,ymm8 + xor esi,ebp + add edx,r12d + vpslld ymm10,ymm10,2 + vpxor ymm6,ymm6,ymm9 + xor esi,ebx + add ecx,DWORD[((-96))+r13] + vpxor ymm6,ymm6,ymm10 + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + vpaddd ymm9,ymm6,ymm11 + xor edx,eax + add ecx,r12d + xor edx,ebp + vmovdqu YMMWORD[192+rsp],ymm9 + add ebx,DWORD[((-92))+r13] + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + xor ecx,eax + vpalignr ymm7,ymm4,ymm3,8 + add ebp,DWORD[((-88))+r13] + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + vpsrldq ymm8,ymm6,4 + xor ebx,edx + add ebp,r12d + xor ebx,esi + vpxor ymm7,ymm7,ymm3 + vpxor ymm8,ymm8,ymm5 + add eax,DWORD[((-84))+r13] + lea eax,[rbx*1+rax] + vpxor ymm7,ymm7,ymm8 + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + vpsrld ymm8,ymm7,31 + xor ebp,edx + add esi,DWORD[((-64))+r13] + lea esi,[rbp*1+rsi] + vpslldq ymm10,ymm7,12 + vpaddd ymm7,ymm7,ymm7 + rorx r12d,eax,27 + rorx ebp,eax,2 + vpsrld ymm9,ymm10,30 + vpor ymm7,ymm7,ymm8 + xor eax,ebx + add esi,r12d + vpslld ymm10,ymm10,2 + vpxor ymm7,ymm7,ymm9 + xor eax,ecx + add edx,DWORD[((-60))+r13] + vpxor ymm7,ymm7,ymm10 + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + rorx eax,esi,2 + vpaddd ymm9,ymm7,ymm11 + xor esi,ebp + add edx,r12d + xor esi,ebx + vmovdqu YMMWORD[224+rsp],ymm9 + add ecx,DWORD[((-56))+r13] + lea ecx,[rsi*1+rcx] + rorx r12d,edx,27 + rorx esi,edx,2 + xor edx,eax + add ecx,r12d + xor edx,ebp + add ebx,DWORD[((-52))+r13] + lea ebx,[rdx*1+rbx] + rorx r12d,ecx,27 + rorx edx,ecx,2 + xor ecx,esi + add ebx,r12d + xor ecx,eax + add ebp,DWORD[((-32))+r13] + lea ebp,[rbp*1+rcx] + rorx r12d,ebx,27 + rorx ecx,ebx,2 + xor ebx,edx + add ebp,r12d + xor ebx,esi + add eax,DWORD[((-28))+r13] + lea eax,[rbx*1+rax] + rorx r12d,ebp,27 + rorx ebx,ebp,2 + xor ebp,ecx + add eax,r12d + xor ebp,edx + add esi,DWORD[((-24))+r13] + lea esi,[rbp*1+rsi] + rorx r12d,eax,27 + rorx ebp,eax,2 + xor eax,ebx + add esi,r12d + xor eax,ecx + add edx,DWORD[((-20))+r13] + lea edx,[rax*1+rdx] + rorx r12d,esi,27 + add edx,r12d + lea r13,[128+rsp] + + + add edx,DWORD[r8] + add esi,DWORD[4+r8] + add ebp,DWORD[8+r8] + mov DWORD[r8],edx + add ebx,DWORD[12+r8] + mov DWORD[4+r8],esi + mov eax,edx + add ecx,DWORD[16+r8] + mov r12d,ebp + mov DWORD[8+r8],ebp + mov edx,ebx + + mov DWORD[12+r8],ebx + mov ebp,esi + mov DWORD[16+r8],ecx + + mov esi,ecx + mov ecx,r12d + + + cmp r9,r10 + jbe NEAR $L$oop_avx2 + +$L$done_avx2: + vzeroupper + movaps xmm6,XMMWORD[((-40-96))+r11] + movaps xmm7,XMMWORD[((-40-80))+r11] + movaps xmm8,XMMWORD[((-40-64))+r11] + movaps xmm9,XMMWORD[((-40-48))+r11] + movaps xmm10,XMMWORD[((-40-32))+r11] + movaps xmm11,XMMWORD[((-40-16))+r11] + mov r14,QWORD[((-40))+r11] + + mov r13,QWORD[((-32))+r11] + + mov r12,QWORD[((-24))+r11] + + mov rbp,QWORD[((-16))+r11] + + mov rbx,QWORD[((-8))+r11] + + lea rsp,[r11] + +$L$epilogue_avx2: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha1_block_data_order_avx2: +ALIGN 64 +K_XX_XX: + DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 + DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 + DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 + DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 + DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc + DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc + DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 + DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0 +DB 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115 +DB 102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44 +DB 32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60 +DB 97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114 +DB 103,62,0 +ALIGN 64 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + lea r10,[$L$prologue] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[152+r8] + + lea r10,[$L$epilogue] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + mov rax,QWORD[64+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + + jmp NEAR $L$common_seh_tail + + +ALIGN 16 +shaext_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + lea r10,[$L$prologue_shaext] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + lea r10,[$L$epilogue_shaext] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + lea rsi,[((-8-64))+rax] + lea rdi,[512+r8] + mov ecx,8 + DD 0xa548f3fc + + jmp NEAR $L$common_seh_tail + + +ALIGN 16 +ssse3_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$common_seh_tail + + mov rax,QWORD[208+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$common_seh_tail + + lea rsi,[((-40-96))+rax] + lea rdi,[512+r8] + mov ecx,12 + DD 0xa548f3fc + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_sha1_block_data_order wrt ..imagebase + DD $L$SEH_end_sha1_block_data_order wrt ..imagebase + DD $L$SEH_info_sha1_block_data_order wrt ..imagebase + DD $L$SEH_begin_sha1_block_data_order_shaext wrt ..imagebase + DD $L$SEH_end_sha1_block_data_order_shaext wrt ..imagebase + DD $L$SEH_info_sha1_block_data_order_shaext wrt ..imagebase + DD $L$SEH_begin_sha1_block_data_order_ssse3 wrt ..imagebase + DD $L$SEH_end_sha1_block_data_order_ssse3 wrt ..imagebase + DD $L$SEH_info_sha1_block_data_order_ssse3 wrt ..imagebase + DD $L$SEH_begin_sha1_block_data_order_avx wrt ..imagebase + DD $L$SEH_end_sha1_block_data_order_avx wrt ..imagebase + DD $L$SEH_info_sha1_block_data_order_avx wrt ..imagebase + DD $L$SEH_begin_sha1_block_data_order_avx2 wrt ..imagebase + DD $L$SEH_end_sha1_block_data_order_avx2 wrt ..imagebase + DD $L$SEH_info_sha1_block_data_order_avx2 wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_sha1_block_data_order: +DB 9,0,0,0 + DD se_handler wrt ..imagebase +$L$SEH_info_sha1_block_data_order_shaext: +DB 9,0,0,0 + DD shaext_handler wrt ..imagebase +$L$SEH_info_sha1_block_data_order_ssse3: +DB 9,0,0,0 + DD ssse3_handler wrt ..imagebase + DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase +$L$SEH_info_sha1_block_data_order_avx: +DB 9,0,0,0 + DD ssse3_handler wrt ..imagebase + DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase +$L$SEH_info_sha1_block_data_order_avx2: +DB 9,0,0,0 + DD ssse3_handler wrt ..imagebase + DD $L$prologue_avx2 wrt ..imagebase,$L$epilogue_avx2 wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha256-mb-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha256-mb-x86_64.asm new file mode 100644 index 0000000..f075400 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha256-mb-x86_64.asm @@ -0,0 +1,8255 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +EXTERN OPENSSL_ia32cap_P + +global sha256_multi_block + +ALIGN 32 +sha256_multi_block: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha256_multi_block: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + mov rcx,QWORD[((OPENSSL_ia32cap_P+4))] + bt rcx,61 + jc NEAR _shaext_shortcut + test ecx,268435456 + jnz NEAR _avx_shortcut + mov rax,rsp + + push rbx + + push rbp + + lea rsp,[((-168))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[(-120)+rax],xmm10 + movaps XMMWORD[(-104)+rax],xmm11 + movaps XMMWORD[(-88)+rax],xmm12 + movaps XMMWORD[(-72)+rax],xmm13 + movaps XMMWORD[(-56)+rax],xmm14 + movaps XMMWORD[(-40)+rax],xmm15 + sub rsp,288 + and rsp,-256 + mov QWORD[272+rsp],rax + +$L$body: + lea rbp,[((K256+128))] + lea rbx,[256+rsp] + lea rdi,[128+rdi] + +$L$oop_grande: + mov DWORD[280+rsp],edx + xor edx,edx + mov r8,QWORD[rsi] + mov ecx,DWORD[8+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[rbx],ecx + cmovle r8,rbp + mov r9,QWORD[16+rsi] + mov ecx,DWORD[24+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[4+rbx],ecx + cmovle r9,rbp + mov r10,QWORD[32+rsi] + mov ecx,DWORD[40+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[8+rbx],ecx + cmovle r10,rbp + mov r11,QWORD[48+rsi] + mov ecx,DWORD[56+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[12+rbx],ecx + cmovle r11,rbp + test edx,edx + jz NEAR $L$done + + movdqu xmm8,XMMWORD[((0-128))+rdi] + lea rax,[128+rsp] + movdqu xmm9,XMMWORD[((32-128))+rdi] + movdqu xmm10,XMMWORD[((64-128))+rdi] + movdqu xmm11,XMMWORD[((96-128))+rdi] + movdqu xmm12,XMMWORD[((128-128))+rdi] + movdqu xmm13,XMMWORD[((160-128))+rdi] + movdqu xmm14,XMMWORD[((192-128))+rdi] + movdqu xmm15,XMMWORD[((224-128))+rdi] + movdqu xmm6,XMMWORD[$L$pbswap] + jmp NEAR $L$oop + +ALIGN 32 +$L$oop: + movdqa xmm4,xmm10 + pxor xmm4,xmm9 + movd xmm5,DWORD[r8] + movd xmm0,DWORD[r9] + movd xmm1,DWORD[r10] + movd xmm2,DWORD[r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm12 +DB 102,15,56,0,238 + movdqa xmm2,xmm12 + + psrld xmm7,6 + movdqa xmm1,xmm12 + pslld xmm2,7 + movdqa XMMWORD[(0-128)+rax],xmm5 + paddd xmm5,xmm15 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[((-128))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm12 + + pxor xmm7,xmm2 + movdqa xmm3,xmm12 + pslld xmm2,26-21 + pandn xmm0,xmm14 + pand xmm3,xmm13 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm8 + pxor xmm7,xmm2 + movdqa xmm2,xmm8 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm9 + movdqa xmm7,xmm8 + pslld xmm2,10 + pxor xmm3,xmm8 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm15,xmm9 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm15,xmm4 + paddd xmm11,xmm5 + pxor xmm7,xmm2 + + paddd xmm15,xmm5 + paddd xmm15,xmm7 + movd xmm5,DWORD[4+r8] + movd xmm0,DWORD[4+r9] + movd xmm1,DWORD[4+r10] + movd xmm2,DWORD[4+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm11 + + movdqa xmm2,xmm11 +DB 102,15,56,0,238 + psrld xmm7,6 + movdqa xmm1,xmm11 + pslld xmm2,7 + movdqa XMMWORD[(16-128)+rax],xmm5 + paddd xmm5,xmm14 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[((-96))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm11 + + pxor xmm7,xmm2 + movdqa xmm4,xmm11 + pslld xmm2,26-21 + pandn xmm0,xmm13 + pand xmm4,xmm12 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm15 + pxor xmm7,xmm2 + movdqa xmm2,xmm15 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm8 + movdqa xmm7,xmm15 + pslld xmm2,10 + pxor xmm4,xmm15 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm14,xmm8 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm14,xmm3 + paddd xmm10,xmm5 + pxor xmm7,xmm2 + + paddd xmm14,xmm5 + paddd xmm14,xmm7 + movd xmm5,DWORD[8+r8] + movd xmm0,DWORD[8+r9] + movd xmm1,DWORD[8+r10] + movd xmm2,DWORD[8+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm10 +DB 102,15,56,0,238 + movdqa xmm2,xmm10 + + psrld xmm7,6 + movdqa xmm1,xmm10 + pslld xmm2,7 + movdqa XMMWORD[(32-128)+rax],xmm5 + paddd xmm5,xmm13 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[((-64))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm10 + + pxor xmm7,xmm2 + movdqa xmm3,xmm10 + pslld xmm2,26-21 + pandn xmm0,xmm12 + pand xmm3,xmm11 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm14 + pxor xmm7,xmm2 + movdqa xmm2,xmm14 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm15 + movdqa xmm7,xmm14 + pslld xmm2,10 + pxor xmm3,xmm14 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm13,xmm15 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm13,xmm4 + paddd xmm9,xmm5 + pxor xmm7,xmm2 + + paddd xmm13,xmm5 + paddd xmm13,xmm7 + movd xmm5,DWORD[12+r8] + movd xmm0,DWORD[12+r9] + movd xmm1,DWORD[12+r10] + movd xmm2,DWORD[12+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm9 + + movdqa xmm2,xmm9 +DB 102,15,56,0,238 + psrld xmm7,6 + movdqa xmm1,xmm9 + pslld xmm2,7 + movdqa XMMWORD[(48-128)+rax],xmm5 + paddd xmm5,xmm12 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[((-32))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm9 + + pxor xmm7,xmm2 + movdqa xmm4,xmm9 + pslld xmm2,26-21 + pandn xmm0,xmm11 + pand xmm4,xmm10 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm13 + pxor xmm7,xmm2 + movdqa xmm2,xmm13 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm14 + movdqa xmm7,xmm13 + pslld xmm2,10 + pxor xmm4,xmm13 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm12,xmm14 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm12,xmm3 + paddd xmm8,xmm5 + pxor xmm7,xmm2 + + paddd xmm12,xmm5 + paddd xmm12,xmm7 + movd xmm5,DWORD[16+r8] + movd xmm0,DWORD[16+r9] + movd xmm1,DWORD[16+r10] + movd xmm2,DWORD[16+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm8 +DB 102,15,56,0,238 + movdqa xmm2,xmm8 + + psrld xmm7,6 + movdqa xmm1,xmm8 + pslld xmm2,7 + movdqa XMMWORD[(64-128)+rax],xmm5 + paddd xmm5,xmm11 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm8 + + pxor xmm7,xmm2 + movdqa xmm3,xmm8 + pslld xmm2,26-21 + pandn xmm0,xmm10 + pand xmm3,xmm9 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm12 + pxor xmm7,xmm2 + movdqa xmm2,xmm12 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm13 + movdqa xmm7,xmm12 + pslld xmm2,10 + pxor xmm3,xmm12 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm11,xmm13 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm11,xmm4 + paddd xmm15,xmm5 + pxor xmm7,xmm2 + + paddd xmm11,xmm5 + paddd xmm11,xmm7 + movd xmm5,DWORD[20+r8] + movd xmm0,DWORD[20+r9] + movd xmm1,DWORD[20+r10] + movd xmm2,DWORD[20+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm15 + + movdqa xmm2,xmm15 +DB 102,15,56,0,238 + psrld xmm7,6 + movdqa xmm1,xmm15 + pslld xmm2,7 + movdqa XMMWORD[(80-128)+rax],xmm5 + paddd xmm5,xmm10 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[32+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm15 + + pxor xmm7,xmm2 + movdqa xmm4,xmm15 + pslld xmm2,26-21 + pandn xmm0,xmm9 + pand xmm4,xmm8 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm11 + pxor xmm7,xmm2 + movdqa xmm2,xmm11 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm12 + movdqa xmm7,xmm11 + pslld xmm2,10 + pxor xmm4,xmm11 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm10,xmm12 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm10,xmm3 + paddd xmm14,xmm5 + pxor xmm7,xmm2 + + paddd xmm10,xmm5 + paddd xmm10,xmm7 + movd xmm5,DWORD[24+r8] + movd xmm0,DWORD[24+r9] + movd xmm1,DWORD[24+r10] + movd xmm2,DWORD[24+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm14 +DB 102,15,56,0,238 + movdqa xmm2,xmm14 + + psrld xmm7,6 + movdqa xmm1,xmm14 + pslld xmm2,7 + movdqa XMMWORD[(96-128)+rax],xmm5 + paddd xmm5,xmm9 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[64+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm14 + + pxor xmm7,xmm2 + movdqa xmm3,xmm14 + pslld xmm2,26-21 + pandn xmm0,xmm8 + pand xmm3,xmm15 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm10 + pxor xmm7,xmm2 + movdqa xmm2,xmm10 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm11 + movdqa xmm7,xmm10 + pslld xmm2,10 + pxor xmm3,xmm10 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm9,xmm11 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm9,xmm4 + paddd xmm13,xmm5 + pxor xmm7,xmm2 + + paddd xmm9,xmm5 + paddd xmm9,xmm7 + movd xmm5,DWORD[28+r8] + movd xmm0,DWORD[28+r9] + movd xmm1,DWORD[28+r10] + movd xmm2,DWORD[28+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm13 + + movdqa xmm2,xmm13 +DB 102,15,56,0,238 + psrld xmm7,6 + movdqa xmm1,xmm13 + pslld xmm2,7 + movdqa XMMWORD[(112-128)+rax],xmm5 + paddd xmm5,xmm8 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[96+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm13 + + pxor xmm7,xmm2 + movdqa xmm4,xmm13 + pslld xmm2,26-21 + pandn xmm0,xmm15 + pand xmm4,xmm14 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm9 + pxor xmm7,xmm2 + movdqa xmm2,xmm9 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm10 + movdqa xmm7,xmm9 + pslld xmm2,10 + pxor xmm4,xmm9 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm8,xmm10 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm8,xmm3 + paddd xmm12,xmm5 + pxor xmm7,xmm2 + + paddd xmm8,xmm5 + paddd xmm8,xmm7 + lea rbp,[256+rbp] + movd xmm5,DWORD[32+r8] + movd xmm0,DWORD[32+r9] + movd xmm1,DWORD[32+r10] + movd xmm2,DWORD[32+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm12 +DB 102,15,56,0,238 + movdqa xmm2,xmm12 + + psrld xmm7,6 + movdqa xmm1,xmm12 + pslld xmm2,7 + movdqa XMMWORD[(128-128)+rax],xmm5 + paddd xmm5,xmm15 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[((-128))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm12 + + pxor xmm7,xmm2 + movdqa xmm3,xmm12 + pslld xmm2,26-21 + pandn xmm0,xmm14 + pand xmm3,xmm13 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm8 + pxor xmm7,xmm2 + movdqa xmm2,xmm8 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm9 + movdqa xmm7,xmm8 + pslld xmm2,10 + pxor xmm3,xmm8 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm15,xmm9 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm15,xmm4 + paddd xmm11,xmm5 + pxor xmm7,xmm2 + + paddd xmm15,xmm5 + paddd xmm15,xmm7 + movd xmm5,DWORD[36+r8] + movd xmm0,DWORD[36+r9] + movd xmm1,DWORD[36+r10] + movd xmm2,DWORD[36+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm11 + + movdqa xmm2,xmm11 +DB 102,15,56,0,238 + psrld xmm7,6 + movdqa xmm1,xmm11 + pslld xmm2,7 + movdqa XMMWORD[(144-128)+rax],xmm5 + paddd xmm5,xmm14 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[((-96))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm11 + + pxor xmm7,xmm2 + movdqa xmm4,xmm11 + pslld xmm2,26-21 + pandn xmm0,xmm13 + pand xmm4,xmm12 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm15 + pxor xmm7,xmm2 + movdqa xmm2,xmm15 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm8 + movdqa xmm7,xmm15 + pslld xmm2,10 + pxor xmm4,xmm15 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm14,xmm8 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm14,xmm3 + paddd xmm10,xmm5 + pxor xmm7,xmm2 + + paddd xmm14,xmm5 + paddd xmm14,xmm7 + movd xmm5,DWORD[40+r8] + movd xmm0,DWORD[40+r9] + movd xmm1,DWORD[40+r10] + movd xmm2,DWORD[40+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm10 +DB 102,15,56,0,238 + movdqa xmm2,xmm10 + + psrld xmm7,6 + movdqa xmm1,xmm10 + pslld xmm2,7 + movdqa XMMWORD[(160-128)+rax],xmm5 + paddd xmm5,xmm13 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[((-64))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm10 + + pxor xmm7,xmm2 + movdqa xmm3,xmm10 + pslld xmm2,26-21 + pandn xmm0,xmm12 + pand xmm3,xmm11 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm14 + pxor xmm7,xmm2 + movdqa xmm2,xmm14 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm15 + movdqa xmm7,xmm14 + pslld xmm2,10 + pxor xmm3,xmm14 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm13,xmm15 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm13,xmm4 + paddd xmm9,xmm5 + pxor xmm7,xmm2 + + paddd xmm13,xmm5 + paddd xmm13,xmm7 + movd xmm5,DWORD[44+r8] + movd xmm0,DWORD[44+r9] + movd xmm1,DWORD[44+r10] + movd xmm2,DWORD[44+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm9 + + movdqa xmm2,xmm9 +DB 102,15,56,0,238 + psrld xmm7,6 + movdqa xmm1,xmm9 + pslld xmm2,7 + movdqa XMMWORD[(176-128)+rax],xmm5 + paddd xmm5,xmm12 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[((-32))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm9 + + pxor xmm7,xmm2 + movdqa xmm4,xmm9 + pslld xmm2,26-21 + pandn xmm0,xmm11 + pand xmm4,xmm10 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm13 + pxor xmm7,xmm2 + movdqa xmm2,xmm13 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm14 + movdqa xmm7,xmm13 + pslld xmm2,10 + pxor xmm4,xmm13 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm12,xmm14 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm12,xmm3 + paddd xmm8,xmm5 + pxor xmm7,xmm2 + + paddd xmm12,xmm5 + paddd xmm12,xmm7 + movd xmm5,DWORD[48+r8] + movd xmm0,DWORD[48+r9] + movd xmm1,DWORD[48+r10] + movd xmm2,DWORD[48+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm8 +DB 102,15,56,0,238 + movdqa xmm2,xmm8 + + psrld xmm7,6 + movdqa xmm1,xmm8 + pslld xmm2,7 + movdqa XMMWORD[(192-128)+rax],xmm5 + paddd xmm5,xmm11 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm8 + + pxor xmm7,xmm2 + movdqa xmm3,xmm8 + pslld xmm2,26-21 + pandn xmm0,xmm10 + pand xmm3,xmm9 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm12 + pxor xmm7,xmm2 + movdqa xmm2,xmm12 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm13 + movdqa xmm7,xmm12 + pslld xmm2,10 + pxor xmm3,xmm12 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm11,xmm13 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm11,xmm4 + paddd xmm15,xmm5 + pxor xmm7,xmm2 + + paddd xmm11,xmm5 + paddd xmm11,xmm7 + movd xmm5,DWORD[52+r8] + movd xmm0,DWORD[52+r9] + movd xmm1,DWORD[52+r10] + movd xmm2,DWORD[52+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm15 + + movdqa xmm2,xmm15 +DB 102,15,56,0,238 + psrld xmm7,6 + movdqa xmm1,xmm15 + pslld xmm2,7 + movdqa XMMWORD[(208-128)+rax],xmm5 + paddd xmm5,xmm10 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[32+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm15 + + pxor xmm7,xmm2 + movdqa xmm4,xmm15 + pslld xmm2,26-21 + pandn xmm0,xmm9 + pand xmm4,xmm8 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm11 + pxor xmm7,xmm2 + movdqa xmm2,xmm11 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm12 + movdqa xmm7,xmm11 + pslld xmm2,10 + pxor xmm4,xmm11 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm10,xmm12 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm10,xmm3 + paddd xmm14,xmm5 + pxor xmm7,xmm2 + + paddd xmm10,xmm5 + paddd xmm10,xmm7 + movd xmm5,DWORD[56+r8] + movd xmm0,DWORD[56+r9] + movd xmm1,DWORD[56+r10] + movd xmm2,DWORD[56+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm14 +DB 102,15,56,0,238 + movdqa xmm2,xmm14 + + psrld xmm7,6 + movdqa xmm1,xmm14 + pslld xmm2,7 + movdqa XMMWORD[(224-128)+rax],xmm5 + paddd xmm5,xmm9 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[64+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm14 + + pxor xmm7,xmm2 + movdqa xmm3,xmm14 + pslld xmm2,26-21 + pandn xmm0,xmm8 + pand xmm3,xmm15 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm10 + pxor xmm7,xmm2 + movdqa xmm2,xmm10 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm11 + movdqa xmm7,xmm10 + pslld xmm2,10 + pxor xmm3,xmm10 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm9,xmm11 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm9,xmm4 + paddd xmm13,xmm5 + pxor xmm7,xmm2 + + paddd xmm9,xmm5 + paddd xmm9,xmm7 + movd xmm5,DWORD[60+r8] + lea r8,[64+r8] + movd xmm0,DWORD[60+r9] + lea r9,[64+r9] + movd xmm1,DWORD[60+r10] + lea r10,[64+r10] + movd xmm2,DWORD[60+r11] + lea r11,[64+r11] + punpckldq xmm5,xmm1 + punpckldq xmm0,xmm2 + punpckldq xmm5,xmm0 + movdqa xmm7,xmm13 + + movdqa xmm2,xmm13 +DB 102,15,56,0,238 + psrld xmm7,6 + movdqa xmm1,xmm13 + pslld xmm2,7 + movdqa XMMWORD[(240-128)+rax],xmm5 + paddd xmm5,xmm8 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[96+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm13 + prefetcht0 [63+r8] + pxor xmm7,xmm2 + movdqa xmm4,xmm13 + pslld xmm2,26-21 + pandn xmm0,xmm15 + pand xmm4,xmm14 + pxor xmm7,xmm1 + + prefetcht0 [63+r9] + movdqa xmm1,xmm9 + pxor xmm7,xmm2 + movdqa xmm2,xmm9 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm10 + movdqa xmm7,xmm9 + pslld xmm2,10 + pxor xmm4,xmm9 + + prefetcht0 [63+r10] + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + prefetcht0 [63+r11] + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm8,xmm10 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm8,xmm3 + paddd xmm12,xmm5 + pxor xmm7,xmm2 + + paddd xmm8,xmm5 + paddd xmm8,xmm7 + lea rbp,[256+rbp] + movdqu xmm5,XMMWORD[((0-128))+rax] + mov ecx,3 + jmp NEAR $L$oop_16_xx +ALIGN 32 +$L$oop_16_xx: + movdqa xmm6,XMMWORD[((16-128))+rax] + paddd xmm5,XMMWORD[((144-128))+rax] + + movdqa xmm7,xmm6 + movdqa xmm1,xmm6 + psrld xmm7,3 + movdqa xmm2,xmm6 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((224-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm3,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm3 + + psrld xmm3,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + psrld xmm3,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm3 + pxor xmm0,xmm1 + paddd xmm5,xmm0 + movdqa xmm7,xmm12 + + movdqa xmm2,xmm12 + + psrld xmm7,6 + movdqa xmm1,xmm12 + pslld xmm2,7 + movdqa XMMWORD[(0-128)+rax],xmm5 + paddd xmm5,xmm15 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[((-128))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm12 + + pxor xmm7,xmm2 + movdqa xmm3,xmm12 + pslld xmm2,26-21 + pandn xmm0,xmm14 + pand xmm3,xmm13 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm8 + pxor xmm7,xmm2 + movdqa xmm2,xmm8 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm9 + movdqa xmm7,xmm8 + pslld xmm2,10 + pxor xmm3,xmm8 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm15,xmm9 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm15,xmm4 + paddd xmm11,xmm5 + pxor xmm7,xmm2 + + paddd xmm15,xmm5 + paddd xmm15,xmm7 + movdqa xmm5,XMMWORD[((32-128))+rax] + paddd xmm6,XMMWORD[((160-128))+rax] + + movdqa xmm7,xmm5 + movdqa xmm1,xmm5 + psrld xmm7,3 + movdqa xmm2,xmm5 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((240-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm4,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm4 + + psrld xmm4,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + psrld xmm4,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm4 + pxor xmm0,xmm1 + paddd xmm6,xmm0 + movdqa xmm7,xmm11 + + movdqa xmm2,xmm11 + + psrld xmm7,6 + movdqa xmm1,xmm11 + pslld xmm2,7 + movdqa XMMWORD[(16-128)+rax],xmm6 + paddd xmm6,xmm14 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm6,XMMWORD[((-96))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm11 + + pxor xmm7,xmm2 + movdqa xmm4,xmm11 + pslld xmm2,26-21 + pandn xmm0,xmm13 + pand xmm4,xmm12 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm15 + pxor xmm7,xmm2 + movdqa xmm2,xmm15 + psrld xmm1,2 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm8 + movdqa xmm7,xmm15 + pslld xmm2,10 + pxor xmm4,xmm15 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm6,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm14,xmm8 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm14,xmm3 + paddd xmm10,xmm6 + pxor xmm7,xmm2 + + paddd xmm14,xmm6 + paddd xmm14,xmm7 + movdqa xmm6,XMMWORD[((48-128))+rax] + paddd xmm5,XMMWORD[((176-128))+rax] + + movdqa xmm7,xmm6 + movdqa xmm1,xmm6 + psrld xmm7,3 + movdqa xmm2,xmm6 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((0-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm3,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm3 + + psrld xmm3,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + psrld xmm3,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm3 + pxor xmm0,xmm1 + paddd xmm5,xmm0 + movdqa xmm7,xmm10 + + movdqa xmm2,xmm10 + + psrld xmm7,6 + movdqa xmm1,xmm10 + pslld xmm2,7 + movdqa XMMWORD[(32-128)+rax],xmm5 + paddd xmm5,xmm13 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[((-64))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm10 + + pxor xmm7,xmm2 + movdqa xmm3,xmm10 + pslld xmm2,26-21 + pandn xmm0,xmm12 + pand xmm3,xmm11 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm14 + pxor xmm7,xmm2 + movdqa xmm2,xmm14 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm15 + movdqa xmm7,xmm14 + pslld xmm2,10 + pxor xmm3,xmm14 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm13,xmm15 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm13,xmm4 + paddd xmm9,xmm5 + pxor xmm7,xmm2 + + paddd xmm13,xmm5 + paddd xmm13,xmm7 + movdqa xmm5,XMMWORD[((64-128))+rax] + paddd xmm6,XMMWORD[((192-128))+rax] + + movdqa xmm7,xmm5 + movdqa xmm1,xmm5 + psrld xmm7,3 + movdqa xmm2,xmm5 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((16-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm4,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm4 + + psrld xmm4,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + psrld xmm4,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm4 + pxor xmm0,xmm1 + paddd xmm6,xmm0 + movdqa xmm7,xmm9 + + movdqa xmm2,xmm9 + + psrld xmm7,6 + movdqa xmm1,xmm9 + pslld xmm2,7 + movdqa XMMWORD[(48-128)+rax],xmm6 + paddd xmm6,xmm12 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm6,XMMWORD[((-32))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm9 + + pxor xmm7,xmm2 + movdqa xmm4,xmm9 + pslld xmm2,26-21 + pandn xmm0,xmm11 + pand xmm4,xmm10 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm13 + pxor xmm7,xmm2 + movdqa xmm2,xmm13 + psrld xmm1,2 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm14 + movdqa xmm7,xmm13 + pslld xmm2,10 + pxor xmm4,xmm13 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm6,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm12,xmm14 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm12,xmm3 + paddd xmm8,xmm6 + pxor xmm7,xmm2 + + paddd xmm12,xmm6 + paddd xmm12,xmm7 + movdqa xmm6,XMMWORD[((80-128))+rax] + paddd xmm5,XMMWORD[((208-128))+rax] + + movdqa xmm7,xmm6 + movdqa xmm1,xmm6 + psrld xmm7,3 + movdqa xmm2,xmm6 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((32-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm3,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm3 + + psrld xmm3,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + psrld xmm3,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm3 + pxor xmm0,xmm1 + paddd xmm5,xmm0 + movdqa xmm7,xmm8 + + movdqa xmm2,xmm8 + + psrld xmm7,6 + movdqa xmm1,xmm8 + pslld xmm2,7 + movdqa XMMWORD[(64-128)+rax],xmm5 + paddd xmm5,xmm11 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm8 + + pxor xmm7,xmm2 + movdqa xmm3,xmm8 + pslld xmm2,26-21 + pandn xmm0,xmm10 + pand xmm3,xmm9 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm12 + pxor xmm7,xmm2 + movdqa xmm2,xmm12 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm13 + movdqa xmm7,xmm12 + pslld xmm2,10 + pxor xmm3,xmm12 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm11,xmm13 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm11,xmm4 + paddd xmm15,xmm5 + pxor xmm7,xmm2 + + paddd xmm11,xmm5 + paddd xmm11,xmm7 + movdqa xmm5,XMMWORD[((96-128))+rax] + paddd xmm6,XMMWORD[((224-128))+rax] + + movdqa xmm7,xmm5 + movdqa xmm1,xmm5 + psrld xmm7,3 + movdqa xmm2,xmm5 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((48-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm4,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm4 + + psrld xmm4,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + psrld xmm4,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm4 + pxor xmm0,xmm1 + paddd xmm6,xmm0 + movdqa xmm7,xmm15 + + movdqa xmm2,xmm15 + + psrld xmm7,6 + movdqa xmm1,xmm15 + pslld xmm2,7 + movdqa XMMWORD[(80-128)+rax],xmm6 + paddd xmm6,xmm10 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm6,XMMWORD[32+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm15 + + pxor xmm7,xmm2 + movdqa xmm4,xmm15 + pslld xmm2,26-21 + pandn xmm0,xmm9 + pand xmm4,xmm8 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm11 + pxor xmm7,xmm2 + movdqa xmm2,xmm11 + psrld xmm1,2 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm12 + movdqa xmm7,xmm11 + pslld xmm2,10 + pxor xmm4,xmm11 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm6,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm10,xmm12 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm10,xmm3 + paddd xmm14,xmm6 + pxor xmm7,xmm2 + + paddd xmm10,xmm6 + paddd xmm10,xmm7 + movdqa xmm6,XMMWORD[((112-128))+rax] + paddd xmm5,XMMWORD[((240-128))+rax] + + movdqa xmm7,xmm6 + movdqa xmm1,xmm6 + psrld xmm7,3 + movdqa xmm2,xmm6 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((64-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm3,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm3 + + psrld xmm3,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + psrld xmm3,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm3 + pxor xmm0,xmm1 + paddd xmm5,xmm0 + movdqa xmm7,xmm14 + + movdqa xmm2,xmm14 + + psrld xmm7,6 + movdqa xmm1,xmm14 + pslld xmm2,7 + movdqa XMMWORD[(96-128)+rax],xmm5 + paddd xmm5,xmm9 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[64+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm14 + + pxor xmm7,xmm2 + movdqa xmm3,xmm14 + pslld xmm2,26-21 + pandn xmm0,xmm8 + pand xmm3,xmm15 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm10 + pxor xmm7,xmm2 + movdqa xmm2,xmm10 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm11 + movdqa xmm7,xmm10 + pslld xmm2,10 + pxor xmm3,xmm10 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm9,xmm11 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm9,xmm4 + paddd xmm13,xmm5 + pxor xmm7,xmm2 + + paddd xmm9,xmm5 + paddd xmm9,xmm7 + movdqa xmm5,XMMWORD[((128-128))+rax] + paddd xmm6,XMMWORD[((0-128))+rax] + + movdqa xmm7,xmm5 + movdqa xmm1,xmm5 + psrld xmm7,3 + movdqa xmm2,xmm5 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((80-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm4,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm4 + + psrld xmm4,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + psrld xmm4,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm4 + pxor xmm0,xmm1 + paddd xmm6,xmm0 + movdqa xmm7,xmm13 + + movdqa xmm2,xmm13 + + psrld xmm7,6 + movdqa xmm1,xmm13 + pslld xmm2,7 + movdqa XMMWORD[(112-128)+rax],xmm6 + paddd xmm6,xmm8 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm6,XMMWORD[96+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm13 + + pxor xmm7,xmm2 + movdqa xmm4,xmm13 + pslld xmm2,26-21 + pandn xmm0,xmm15 + pand xmm4,xmm14 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm9 + pxor xmm7,xmm2 + movdqa xmm2,xmm9 + psrld xmm1,2 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm10 + movdqa xmm7,xmm9 + pslld xmm2,10 + pxor xmm4,xmm9 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm6,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm8,xmm10 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm8,xmm3 + paddd xmm12,xmm6 + pxor xmm7,xmm2 + + paddd xmm8,xmm6 + paddd xmm8,xmm7 + lea rbp,[256+rbp] + movdqa xmm6,XMMWORD[((144-128))+rax] + paddd xmm5,XMMWORD[((16-128))+rax] + + movdqa xmm7,xmm6 + movdqa xmm1,xmm6 + psrld xmm7,3 + movdqa xmm2,xmm6 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((96-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm3,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm3 + + psrld xmm3,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + psrld xmm3,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm3 + pxor xmm0,xmm1 + paddd xmm5,xmm0 + movdqa xmm7,xmm12 + + movdqa xmm2,xmm12 + + psrld xmm7,6 + movdqa xmm1,xmm12 + pslld xmm2,7 + movdqa XMMWORD[(128-128)+rax],xmm5 + paddd xmm5,xmm15 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[((-128))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm12 + + pxor xmm7,xmm2 + movdqa xmm3,xmm12 + pslld xmm2,26-21 + pandn xmm0,xmm14 + pand xmm3,xmm13 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm8 + pxor xmm7,xmm2 + movdqa xmm2,xmm8 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm9 + movdqa xmm7,xmm8 + pslld xmm2,10 + pxor xmm3,xmm8 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm15,xmm9 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm15,xmm4 + paddd xmm11,xmm5 + pxor xmm7,xmm2 + + paddd xmm15,xmm5 + paddd xmm15,xmm7 + movdqa xmm5,XMMWORD[((160-128))+rax] + paddd xmm6,XMMWORD[((32-128))+rax] + + movdqa xmm7,xmm5 + movdqa xmm1,xmm5 + psrld xmm7,3 + movdqa xmm2,xmm5 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((112-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm4,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm4 + + psrld xmm4,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + psrld xmm4,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm4 + pxor xmm0,xmm1 + paddd xmm6,xmm0 + movdqa xmm7,xmm11 + + movdqa xmm2,xmm11 + + psrld xmm7,6 + movdqa xmm1,xmm11 + pslld xmm2,7 + movdqa XMMWORD[(144-128)+rax],xmm6 + paddd xmm6,xmm14 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm6,XMMWORD[((-96))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm11 + + pxor xmm7,xmm2 + movdqa xmm4,xmm11 + pslld xmm2,26-21 + pandn xmm0,xmm13 + pand xmm4,xmm12 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm15 + pxor xmm7,xmm2 + movdqa xmm2,xmm15 + psrld xmm1,2 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm8 + movdqa xmm7,xmm15 + pslld xmm2,10 + pxor xmm4,xmm15 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm6,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm14,xmm8 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm14,xmm3 + paddd xmm10,xmm6 + pxor xmm7,xmm2 + + paddd xmm14,xmm6 + paddd xmm14,xmm7 + movdqa xmm6,XMMWORD[((176-128))+rax] + paddd xmm5,XMMWORD[((48-128))+rax] + + movdqa xmm7,xmm6 + movdqa xmm1,xmm6 + psrld xmm7,3 + movdqa xmm2,xmm6 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((128-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm3,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm3 + + psrld xmm3,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + psrld xmm3,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm3 + pxor xmm0,xmm1 + paddd xmm5,xmm0 + movdqa xmm7,xmm10 + + movdqa xmm2,xmm10 + + psrld xmm7,6 + movdqa xmm1,xmm10 + pslld xmm2,7 + movdqa XMMWORD[(160-128)+rax],xmm5 + paddd xmm5,xmm13 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[((-64))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm10 + + pxor xmm7,xmm2 + movdqa xmm3,xmm10 + pslld xmm2,26-21 + pandn xmm0,xmm12 + pand xmm3,xmm11 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm14 + pxor xmm7,xmm2 + movdqa xmm2,xmm14 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm15 + movdqa xmm7,xmm14 + pslld xmm2,10 + pxor xmm3,xmm14 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm13,xmm15 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm13,xmm4 + paddd xmm9,xmm5 + pxor xmm7,xmm2 + + paddd xmm13,xmm5 + paddd xmm13,xmm7 + movdqa xmm5,XMMWORD[((192-128))+rax] + paddd xmm6,XMMWORD[((64-128))+rax] + + movdqa xmm7,xmm5 + movdqa xmm1,xmm5 + psrld xmm7,3 + movdqa xmm2,xmm5 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((144-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm4,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm4 + + psrld xmm4,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + psrld xmm4,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm4 + pxor xmm0,xmm1 + paddd xmm6,xmm0 + movdqa xmm7,xmm9 + + movdqa xmm2,xmm9 + + psrld xmm7,6 + movdqa xmm1,xmm9 + pslld xmm2,7 + movdqa XMMWORD[(176-128)+rax],xmm6 + paddd xmm6,xmm12 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm6,XMMWORD[((-32))+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm9 + + pxor xmm7,xmm2 + movdqa xmm4,xmm9 + pslld xmm2,26-21 + pandn xmm0,xmm11 + pand xmm4,xmm10 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm13 + pxor xmm7,xmm2 + movdqa xmm2,xmm13 + psrld xmm1,2 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm14 + movdqa xmm7,xmm13 + pslld xmm2,10 + pxor xmm4,xmm13 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm6,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm12,xmm14 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm12,xmm3 + paddd xmm8,xmm6 + pxor xmm7,xmm2 + + paddd xmm12,xmm6 + paddd xmm12,xmm7 + movdqa xmm6,XMMWORD[((208-128))+rax] + paddd xmm5,XMMWORD[((80-128))+rax] + + movdqa xmm7,xmm6 + movdqa xmm1,xmm6 + psrld xmm7,3 + movdqa xmm2,xmm6 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((160-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm3,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm3 + + psrld xmm3,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + psrld xmm3,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm3 + pxor xmm0,xmm1 + paddd xmm5,xmm0 + movdqa xmm7,xmm8 + + movdqa xmm2,xmm8 + + psrld xmm7,6 + movdqa xmm1,xmm8 + pslld xmm2,7 + movdqa XMMWORD[(192-128)+rax],xmm5 + paddd xmm5,xmm11 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm8 + + pxor xmm7,xmm2 + movdqa xmm3,xmm8 + pslld xmm2,26-21 + pandn xmm0,xmm10 + pand xmm3,xmm9 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm12 + pxor xmm7,xmm2 + movdqa xmm2,xmm12 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm13 + movdqa xmm7,xmm12 + pslld xmm2,10 + pxor xmm3,xmm12 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm11,xmm13 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm11,xmm4 + paddd xmm15,xmm5 + pxor xmm7,xmm2 + + paddd xmm11,xmm5 + paddd xmm11,xmm7 + movdqa xmm5,XMMWORD[((224-128))+rax] + paddd xmm6,XMMWORD[((96-128))+rax] + + movdqa xmm7,xmm5 + movdqa xmm1,xmm5 + psrld xmm7,3 + movdqa xmm2,xmm5 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((176-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm4,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm4 + + psrld xmm4,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + psrld xmm4,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm4 + pxor xmm0,xmm1 + paddd xmm6,xmm0 + movdqa xmm7,xmm15 + + movdqa xmm2,xmm15 + + psrld xmm7,6 + movdqa xmm1,xmm15 + pslld xmm2,7 + movdqa XMMWORD[(208-128)+rax],xmm6 + paddd xmm6,xmm10 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm6,XMMWORD[32+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm15 + + pxor xmm7,xmm2 + movdqa xmm4,xmm15 + pslld xmm2,26-21 + pandn xmm0,xmm9 + pand xmm4,xmm8 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm11 + pxor xmm7,xmm2 + movdqa xmm2,xmm11 + psrld xmm1,2 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm12 + movdqa xmm7,xmm11 + pslld xmm2,10 + pxor xmm4,xmm11 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm6,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm10,xmm12 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm10,xmm3 + paddd xmm14,xmm6 + pxor xmm7,xmm2 + + paddd xmm10,xmm6 + paddd xmm10,xmm7 + movdqa xmm6,XMMWORD[((240-128))+rax] + paddd xmm5,XMMWORD[((112-128))+rax] + + movdqa xmm7,xmm6 + movdqa xmm1,xmm6 + psrld xmm7,3 + movdqa xmm2,xmm6 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((192-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm3,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm3 + + psrld xmm3,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + psrld xmm3,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm3 + pxor xmm0,xmm1 + paddd xmm5,xmm0 + movdqa xmm7,xmm14 + + movdqa xmm2,xmm14 + + psrld xmm7,6 + movdqa xmm1,xmm14 + pslld xmm2,7 + movdqa XMMWORD[(224-128)+rax],xmm5 + paddd xmm5,xmm9 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm5,XMMWORD[64+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm14 + + pxor xmm7,xmm2 + movdqa xmm3,xmm14 + pslld xmm2,26-21 + pandn xmm0,xmm8 + pand xmm3,xmm15 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm10 + pxor xmm7,xmm2 + movdqa xmm2,xmm10 + psrld xmm1,2 + paddd xmm5,xmm7 + pxor xmm0,xmm3 + movdqa xmm3,xmm11 + movdqa xmm7,xmm10 + pslld xmm2,10 + pxor xmm3,xmm10 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm5,xmm0 + pslld xmm2,19-10 + pand xmm4,xmm3 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm9,xmm11 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm9,xmm4 + paddd xmm13,xmm5 + pxor xmm7,xmm2 + + paddd xmm9,xmm5 + paddd xmm9,xmm7 + movdqa xmm5,XMMWORD[((0-128))+rax] + paddd xmm6,XMMWORD[((128-128))+rax] + + movdqa xmm7,xmm5 + movdqa xmm1,xmm5 + psrld xmm7,3 + movdqa xmm2,xmm5 + + psrld xmm1,7 + movdqa xmm0,XMMWORD[((208-128))+rax] + pslld xmm2,14 + pxor xmm7,xmm1 + psrld xmm1,18-7 + movdqa xmm4,xmm0 + pxor xmm7,xmm2 + pslld xmm2,25-14 + pxor xmm7,xmm1 + psrld xmm0,10 + movdqa xmm1,xmm4 + + psrld xmm4,17 + pxor xmm7,xmm2 + pslld xmm1,13 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + psrld xmm4,19-17 + pxor xmm0,xmm1 + pslld xmm1,15-13 + pxor xmm0,xmm4 + pxor xmm0,xmm1 + paddd xmm6,xmm0 + movdqa xmm7,xmm13 + + movdqa xmm2,xmm13 + + psrld xmm7,6 + movdqa xmm1,xmm13 + pslld xmm2,7 + movdqa XMMWORD[(240-128)+rax],xmm6 + paddd xmm6,xmm8 + + psrld xmm1,11 + pxor xmm7,xmm2 + pslld xmm2,21-7 + paddd xmm6,XMMWORD[96+rbp] + pxor xmm7,xmm1 + + psrld xmm1,25-11 + movdqa xmm0,xmm13 + + pxor xmm7,xmm2 + movdqa xmm4,xmm13 + pslld xmm2,26-21 + pandn xmm0,xmm15 + pand xmm4,xmm14 + pxor xmm7,xmm1 + + + movdqa xmm1,xmm9 + pxor xmm7,xmm2 + movdqa xmm2,xmm9 + psrld xmm1,2 + paddd xmm6,xmm7 + pxor xmm0,xmm4 + movdqa xmm4,xmm10 + movdqa xmm7,xmm9 + pslld xmm2,10 + pxor xmm4,xmm9 + + + psrld xmm7,13 + pxor xmm1,xmm2 + paddd xmm6,xmm0 + pslld xmm2,19-10 + pand xmm3,xmm4 + pxor xmm1,xmm7 + + + psrld xmm7,22-13 + pxor xmm1,xmm2 + movdqa xmm8,xmm10 + pslld xmm2,30-19 + pxor xmm7,xmm1 + pxor xmm8,xmm3 + paddd xmm12,xmm6 + pxor xmm7,xmm2 + + paddd xmm8,xmm6 + paddd xmm8,xmm7 + lea rbp,[256+rbp] + dec ecx + jnz NEAR $L$oop_16_xx + + mov ecx,1 + lea rbp,[((K256+128))] + + movdqa xmm7,XMMWORD[rbx] + cmp ecx,DWORD[rbx] + pxor xmm0,xmm0 + cmovge r8,rbp + cmp ecx,DWORD[4+rbx] + movdqa xmm6,xmm7 + cmovge r9,rbp + cmp ecx,DWORD[8+rbx] + pcmpgtd xmm6,xmm0 + cmovge r10,rbp + cmp ecx,DWORD[12+rbx] + paddd xmm7,xmm6 + cmovge r11,rbp + + movdqu xmm0,XMMWORD[((0-128))+rdi] + pand xmm8,xmm6 + movdqu xmm1,XMMWORD[((32-128))+rdi] + pand xmm9,xmm6 + movdqu xmm2,XMMWORD[((64-128))+rdi] + pand xmm10,xmm6 + movdqu xmm5,XMMWORD[((96-128))+rdi] + pand xmm11,xmm6 + paddd xmm8,xmm0 + movdqu xmm0,XMMWORD[((128-128))+rdi] + pand xmm12,xmm6 + paddd xmm9,xmm1 + movdqu xmm1,XMMWORD[((160-128))+rdi] + pand xmm13,xmm6 + paddd xmm10,xmm2 + movdqu xmm2,XMMWORD[((192-128))+rdi] + pand xmm14,xmm6 + paddd xmm11,xmm5 + movdqu xmm5,XMMWORD[((224-128))+rdi] + pand xmm15,xmm6 + paddd xmm12,xmm0 + paddd xmm13,xmm1 + movdqu XMMWORD[(0-128)+rdi],xmm8 + paddd xmm14,xmm2 + movdqu XMMWORD[(32-128)+rdi],xmm9 + paddd xmm15,xmm5 + movdqu XMMWORD[(64-128)+rdi],xmm10 + movdqu XMMWORD[(96-128)+rdi],xmm11 + movdqu XMMWORD[(128-128)+rdi],xmm12 + movdqu XMMWORD[(160-128)+rdi],xmm13 + movdqu XMMWORD[(192-128)+rdi],xmm14 + movdqu XMMWORD[(224-128)+rdi],xmm15 + + movdqa XMMWORD[rbx],xmm7 + movdqa xmm6,XMMWORD[$L$pbswap] + dec edx + jnz NEAR $L$oop + + mov edx,DWORD[280+rsp] + lea rdi,[16+rdi] + lea rsi,[64+rsi] + dec edx + jnz NEAR $L$oop_grande + +$L$done: + mov rax,QWORD[272+rsp] + + movaps xmm6,XMMWORD[((-184))+rax] + movaps xmm7,XMMWORD[((-168))+rax] + movaps xmm8,XMMWORD[((-152))+rax] + movaps xmm9,XMMWORD[((-136))+rax] + movaps xmm10,XMMWORD[((-120))+rax] + movaps xmm11,XMMWORD[((-104))+rax] + movaps xmm12,XMMWORD[((-88))+rax] + movaps xmm13,XMMWORD[((-72))+rax] + movaps xmm14,XMMWORD[((-56))+rax] + movaps xmm15,XMMWORD[((-40))+rax] + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha256_multi_block: + +ALIGN 32 +sha256_multi_block_shaext: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha256_multi_block_shaext: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +_shaext_shortcut: + mov rax,rsp + + push rbx + + push rbp + + lea rsp,[((-168))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[(-120)+rax],xmm10 + movaps XMMWORD[(-104)+rax],xmm11 + movaps XMMWORD[(-88)+rax],xmm12 + movaps XMMWORD[(-72)+rax],xmm13 + movaps XMMWORD[(-56)+rax],xmm14 + movaps XMMWORD[(-40)+rax],xmm15 + sub rsp,288 + shl edx,1 + and rsp,-256 + lea rdi,[128+rdi] + mov QWORD[272+rsp],rax +$L$body_shaext: + lea rbx,[256+rsp] + lea rbp,[((K256_shaext+128))] + +$L$oop_grande_shaext: + mov DWORD[280+rsp],edx + xor edx,edx + mov r8,QWORD[rsi] + mov ecx,DWORD[8+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[rbx],ecx + cmovle r8,rsp + mov r9,QWORD[16+rsi] + mov ecx,DWORD[24+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[4+rbx],ecx + cmovle r9,rsp + test edx,edx + jz NEAR $L$done_shaext + + movq xmm12,QWORD[((0-128))+rdi] + movq xmm4,QWORD[((32-128))+rdi] + movq xmm13,QWORD[((64-128))+rdi] + movq xmm5,QWORD[((96-128))+rdi] + movq xmm8,QWORD[((128-128))+rdi] + movq xmm9,QWORD[((160-128))+rdi] + movq xmm10,QWORD[((192-128))+rdi] + movq xmm11,QWORD[((224-128))+rdi] + + punpckldq xmm12,xmm4 + punpckldq xmm13,xmm5 + punpckldq xmm8,xmm9 + punpckldq xmm10,xmm11 + movdqa xmm3,XMMWORD[((K256_shaext-16))] + + movdqa xmm14,xmm12 + movdqa xmm15,xmm13 + punpcklqdq xmm12,xmm8 + punpcklqdq xmm13,xmm10 + punpckhqdq xmm14,xmm8 + punpckhqdq xmm15,xmm10 + + pshufd xmm12,xmm12,27 + pshufd xmm13,xmm13,27 + pshufd xmm14,xmm14,27 + pshufd xmm15,xmm15,27 + jmp NEAR $L$oop_shaext + +ALIGN 32 +$L$oop_shaext: + movdqu xmm4,XMMWORD[r8] + movdqu xmm8,XMMWORD[r9] + movdqu xmm5,XMMWORD[16+r8] + movdqu xmm9,XMMWORD[16+r9] + movdqu xmm6,XMMWORD[32+r8] +DB 102,15,56,0,227 + movdqu xmm10,XMMWORD[32+r9] +DB 102,68,15,56,0,195 + movdqu xmm7,XMMWORD[48+r8] + lea r8,[64+r8] + movdqu xmm11,XMMWORD[48+r9] + lea r9,[64+r9] + + movdqa xmm0,XMMWORD[((0-128))+rbp] +DB 102,15,56,0,235 + paddd xmm0,xmm4 + pxor xmm4,xmm12 + movdqa xmm1,xmm0 + movdqa xmm2,XMMWORD[((0-128))+rbp] +DB 102,68,15,56,0,203 + paddd xmm2,xmm8 + movdqa XMMWORD[80+rsp],xmm13 +DB 69,15,56,203,236 + pxor xmm8,xmm14 + movdqa xmm0,xmm2 + movdqa XMMWORD[112+rsp],xmm15 +DB 69,15,56,203,254 + pshufd xmm0,xmm1,0x0e + pxor xmm4,xmm12 + movdqa XMMWORD[64+rsp],xmm12 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + pxor xmm8,xmm14 + movdqa XMMWORD[96+rsp],xmm14 + movdqa xmm1,XMMWORD[((16-128))+rbp] + paddd xmm1,xmm5 +DB 102,15,56,0,243 +DB 69,15,56,203,247 + + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((16-128))+rbp] + paddd xmm2,xmm9 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + prefetcht0 [127+r8] +DB 102,15,56,0,251 +DB 102,68,15,56,0,211 + prefetcht0 [127+r9] +DB 69,15,56,203,254 + pshufd xmm0,xmm1,0x0e +DB 102,68,15,56,0,219 +DB 15,56,204,229 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((32-128))+rbp] + paddd xmm1,xmm6 +DB 69,15,56,203,247 + + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((32-128))+rbp] + paddd xmm2,xmm10 +DB 69,15,56,203,236 +DB 69,15,56,204,193 + movdqa xmm0,xmm2 + movdqa xmm3,xmm7 +DB 69,15,56,203,254 + pshufd xmm0,xmm1,0x0e +DB 102,15,58,15,222,4 + paddd xmm4,xmm3 + movdqa xmm3,xmm11 +DB 102,65,15,58,15,218,4 +DB 15,56,204,238 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((48-128))+rbp] + paddd xmm1,xmm7 +DB 69,15,56,203,247 +DB 69,15,56,204,202 + + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((48-128))+rbp] + paddd xmm8,xmm3 + paddd xmm2,xmm11 +DB 15,56,205,231 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + movdqa xmm3,xmm4 +DB 102,15,58,15,223,4 +DB 69,15,56,203,254 +DB 69,15,56,205,195 + pshufd xmm0,xmm1,0x0e + paddd xmm5,xmm3 + movdqa xmm3,xmm8 +DB 102,65,15,58,15,219,4 +DB 15,56,204,247 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((64-128))+rbp] + paddd xmm1,xmm4 +DB 69,15,56,203,247 +DB 69,15,56,204,211 + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((64-128))+rbp] + paddd xmm9,xmm3 + paddd xmm2,xmm8 +DB 15,56,205,236 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + movdqa xmm3,xmm5 +DB 102,15,58,15,220,4 +DB 69,15,56,203,254 +DB 69,15,56,205,200 + pshufd xmm0,xmm1,0x0e + paddd xmm6,xmm3 + movdqa xmm3,xmm9 +DB 102,65,15,58,15,216,4 +DB 15,56,204,252 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((80-128))+rbp] + paddd xmm1,xmm5 +DB 69,15,56,203,247 +DB 69,15,56,204,216 + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((80-128))+rbp] + paddd xmm10,xmm3 + paddd xmm2,xmm9 +DB 15,56,205,245 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + movdqa xmm3,xmm6 +DB 102,15,58,15,221,4 +DB 69,15,56,203,254 +DB 69,15,56,205,209 + pshufd xmm0,xmm1,0x0e + paddd xmm7,xmm3 + movdqa xmm3,xmm10 +DB 102,65,15,58,15,217,4 +DB 15,56,204,229 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((96-128))+rbp] + paddd xmm1,xmm6 +DB 69,15,56,203,247 +DB 69,15,56,204,193 + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((96-128))+rbp] + paddd xmm11,xmm3 + paddd xmm2,xmm10 +DB 15,56,205,254 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + movdqa xmm3,xmm7 +DB 102,15,58,15,222,4 +DB 69,15,56,203,254 +DB 69,15,56,205,218 + pshufd xmm0,xmm1,0x0e + paddd xmm4,xmm3 + movdqa xmm3,xmm11 +DB 102,65,15,58,15,218,4 +DB 15,56,204,238 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((112-128))+rbp] + paddd xmm1,xmm7 +DB 69,15,56,203,247 +DB 69,15,56,204,202 + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((112-128))+rbp] + paddd xmm8,xmm3 + paddd xmm2,xmm11 +DB 15,56,205,231 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + movdqa xmm3,xmm4 +DB 102,15,58,15,223,4 +DB 69,15,56,203,254 +DB 69,15,56,205,195 + pshufd xmm0,xmm1,0x0e + paddd xmm5,xmm3 + movdqa xmm3,xmm8 +DB 102,65,15,58,15,219,4 +DB 15,56,204,247 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((128-128))+rbp] + paddd xmm1,xmm4 +DB 69,15,56,203,247 +DB 69,15,56,204,211 + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((128-128))+rbp] + paddd xmm9,xmm3 + paddd xmm2,xmm8 +DB 15,56,205,236 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + movdqa xmm3,xmm5 +DB 102,15,58,15,220,4 +DB 69,15,56,203,254 +DB 69,15,56,205,200 + pshufd xmm0,xmm1,0x0e + paddd xmm6,xmm3 + movdqa xmm3,xmm9 +DB 102,65,15,58,15,216,4 +DB 15,56,204,252 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((144-128))+rbp] + paddd xmm1,xmm5 +DB 69,15,56,203,247 +DB 69,15,56,204,216 + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((144-128))+rbp] + paddd xmm10,xmm3 + paddd xmm2,xmm9 +DB 15,56,205,245 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + movdqa xmm3,xmm6 +DB 102,15,58,15,221,4 +DB 69,15,56,203,254 +DB 69,15,56,205,209 + pshufd xmm0,xmm1,0x0e + paddd xmm7,xmm3 + movdqa xmm3,xmm10 +DB 102,65,15,58,15,217,4 +DB 15,56,204,229 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((160-128))+rbp] + paddd xmm1,xmm6 +DB 69,15,56,203,247 +DB 69,15,56,204,193 + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((160-128))+rbp] + paddd xmm11,xmm3 + paddd xmm2,xmm10 +DB 15,56,205,254 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + movdqa xmm3,xmm7 +DB 102,15,58,15,222,4 +DB 69,15,56,203,254 +DB 69,15,56,205,218 + pshufd xmm0,xmm1,0x0e + paddd xmm4,xmm3 + movdqa xmm3,xmm11 +DB 102,65,15,58,15,218,4 +DB 15,56,204,238 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((176-128))+rbp] + paddd xmm1,xmm7 +DB 69,15,56,203,247 +DB 69,15,56,204,202 + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((176-128))+rbp] + paddd xmm8,xmm3 + paddd xmm2,xmm11 +DB 15,56,205,231 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + movdqa xmm3,xmm4 +DB 102,15,58,15,223,4 +DB 69,15,56,203,254 +DB 69,15,56,205,195 + pshufd xmm0,xmm1,0x0e + paddd xmm5,xmm3 + movdqa xmm3,xmm8 +DB 102,65,15,58,15,219,4 +DB 15,56,204,247 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((192-128))+rbp] + paddd xmm1,xmm4 +DB 69,15,56,203,247 +DB 69,15,56,204,211 + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((192-128))+rbp] + paddd xmm9,xmm3 + paddd xmm2,xmm8 +DB 15,56,205,236 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + movdqa xmm3,xmm5 +DB 102,15,58,15,220,4 +DB 69,15,56,203,254 +DB 69,15,56,205,200 + pshufd xmm0,xmm1,0x0e + paddd xmm6,xmm3 + movdqa xmm3,xmm9 +DB 102,65,15,58,15,216,4 +DB 15,56,204,252 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((208-128))+rbp] + paddd xmm1,xmm5 +DB 69,15,56,203,247 +DB 69,15,56,204,216 + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((208-128))+rbp] + paddd xmm10,xmm3 + paddd xmm2,xmm9 +DB 15,56,205,245 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + movdqa xmm3,xmm6 +DB 102,15,58,15,221,4 +DB 69,15,56,203,254 +DB 69,15,56,205,209 + pshufd xmm0,xmm1,0x0e + paddd xmm7,xmm3 + movdqa xmm3,xmm10 +DB 102,65,15,58,15,217,4 + nop +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm1,XMMWORD[((224-128))+rbp] + paddd xmm1,xmm6 +DB 69,15,56,203,247 + + movdqa xmm0,xmm1 + movdqa xmm2,XMMWORD[((224-128))+rbp] + paddd xmm11,xmm3 + paddd xmm2,xmm10 +DB 15,56,205,254 + nop +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + mov ecx,1 + pxor xmm6,xmm6 +DB 69,15,56,203,254 +DB 69,15,56,205,218 + pshufd xmm0,xmm1,0x0e + movdqa xmm1,XMMWORD[((240-128))+rbp] + paddd xmm1,xmm7 + movq xmm7,QWORD[rbx] + nop +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + movdqa xmm2,XMMWORD[((240-128))+rbp] + paddd xmm2,xmm11 +DB 69,15,56,203,247 + + movdqa xmm0,xmm1 + cmp ecx,DWORD[rbx] + cmovge r8,rsp + cmp ecx,DWORD[4+rbx] + cmovge r9,rsp + pshufd xmm9,xmm7,0x00 +DB 69,15,56,203,236 + movdqa xmm0,xmm2 + pshufd xmm10,xmm7,0x55 + movdqa xmm11,xmm7 +DB 69,15,56,203,254 + pshufd xmm0,xmm1,0x0e + pcmpgtd xmm9,xmm6 + pcmpgtd xmm10,xmm6 +DB 69,15,56,203,229 + pshufd xmm0,xmm2,0x0e + pcmpgtd xmm11,xmm6 + movdqa xmm3,XMMWORD[((K256_shaext-16))] +DB 69,15,56,203,247 + + pand xmm13,xmm9 + pand xmm15,xmm10 + pand xmm12,xmm9 + pand xmm14,xmm10 + paddd xmm11,xmm7 + + paddd xmm13,XMMWORD[80+rsp] + paddd xmm15,XMMWORD[112+rsp] + paddd xmm12,XMMWORD[64+rsp] + paddd xmm14,XMMWORD[96+rsp] + + movq QWORD[rbx],xmm11 + dec edx + jnz NEAR $L$oop_shaext + + mov edx,DWORD[280+rsp] + + pshufd xmm12,xmm12,27 + pshufd xmm13,xmm13,27 + pshufd xmm14,xmm14,27 + pshufd xmm15,xmm15,27 + + movdqa xmm5,xmm12 + movdqa xmm6,xmm13 + punpckldq xmm12,xmm14 + punpckhdq xmm5,xmm14 + punpckldq xmm13,xmm15 + punpckhdq xmm6,xmm15 + + movq QWORD[(0-128)+rdi],xmm12 + psrldq xmm12,8 + movq QWORD[(128-128)+rdi],xmm5 + psrldq xmm5,8 + movq QWORD[(32-128)+rdi],xmm12 + movq QWORD[(160-128)+rdi],xmm5 + + movq QWORD[(64-128)+rdi],xmm13 + psrldq xmm13,8 + movq QWORD[(192-128)+rdi],xmm6 + psrldq xmm6,8 + movq QWORD[(96-128)+rdi],xmm13 + movq QWORD[(224-128)+rdi],xmm6 + + lea rdi,[8+rdi] + lea rsi,[32+rsi] + dec edx + jnz NEAR $L$oop_grande_shaext + +$L$done_shaext: + + movaps xmm6,XMMWORD[((-184))+rax] + movaps xmm7,XMMWORD[((-168))+rax] + movaps xmm8,XMMWORD[((-152))+rax] + movaps xmm9,XMMWORD[((-136))+rax] + movaps xmm10,XMMWORD[((-120))+rax] + movaps xmm11,XMMWORD[((-104))+rax] + movaps xmm12,XMMWORD[((-88))+rax] + movaps xmm13,XMMWORD[((-72))+rax] + movaps xmm14,XMMWORD[((-56))+rax] + movaps xmm15,XMMWORD[((-40))+rax] + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$epilogue_shaext: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha256_multi_block_shaext: + +ALIGN 32 +sha256_multi_block_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha256_multi_block_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +_avx_shortcut: + shr rcx,32 + cmp edx,2 + jb NEAR $L$avx + test ecx,32 + jnz NEAR _avx2_shortcut + jmp NEAR $L$avx +ALIGN 32 +$L$avx: + mov rax,rsp + + push rbx + + push rbp + + lea rsp,[((-168))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[(-120)+rax],xmm10 + movaps XMMWORD[(-104)+rax],xmm11 + movaps XMMWORD[(-88)+rax],xmm12 + movaps XMMWORD[(-72)+rax],xmm13 + movaps XMMWORD[(-56)+rax],xmm14 + movaps XMMWORD[(-40)+rax],xmm15 + sub rsp,288 + and rsp,-256 + mov QWORD[272+rsp],rax + +$L$body_avx: + lea rbp,[((K256+128))] + lea rbx,[256+rsp] + lea rdi,[128+rdi] + +$L$oop_grande_avx: + mov DWORD[280+rsp],edx + xor edx,edx + mov r8,QWORD[rsi] + mov ecx,DWORD[8+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[rbx],ecx + cmovle r8,rbp + mov r9,QWORD[16+rsi] + mov ecx,DWORD[24+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[4+rbx],ecx + cmovle r9,rbp + mov r10,QWORD[32+rsi] + mov ecx,DWORD[40+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[8+rbx],ecx + cmovle r10,rbp + mov r11,QWORD[48+rsi] + mov ecx,DWORD[56+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[12+rbx],ecx + cmovle r11,rbp + test edx,edx + jz NEAR $L$done_avx + + vmovdqu xmm8,XMMWORD[((0-128))+rdi] + lea rax,[128+rsp] + vmovdqu xmm9,XMMWORD[((32-128))+rdi] + vmovdqu xmm10,XMMWORD[((64-128))+rdi] + vmovdqu xmm11,XMMWORD[((96-128))+rdi] + vmovdqu xmm12,XMMWORD[((128-128))+rdi] + vmovdqu xmm13,XMMWORD[((160-128))+rdi] + vmovdqu xmm14,XMMWORD[((192-128))+rdi] + vmovdqu xmm15,XMMWORD[((224-128))+rdi] + vmovdqu xmm6,XMMWORD[$L$pbswap] + jmp NEAR $L$oop_avx + +ALIGN 32 +$L$oop_avx: + vpxor xmm4,xmm10,xmm9 + vmovd xmm5,DWORD[r8] + vmovd xmm0,DWORD[r9] + vpinsrd xmm5,xmm5,DWORD[r10],1 + vpinsrd xmm0,xmm0,DWORD[r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm12,6 + vpslld xmm2,xmm12,26 + vmovdqu XMMWORD[(0-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm15 + + vpsrld xmm1,xmm12,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm12,21 + vpaddd xmm5,xmm5,XMMWORD[((-128))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm12,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm12,7 + vpandn xmm0,xmm12,xmm14 + vpand xmm3,xmm12,xmm13 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm15,xmm8,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm8,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm9,xmm8 + + vpxor xmm15,xmm15,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm8,13 + + vpslld xmm2,xmm8,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm15,xmm1 + + vpsrld xmm1,xmm8,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm8,10 + vpxor xmm15,xmm9,xmm4 + vpaddd xmm11,xmm11,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm15,xmm15,xmm5 + vpaddd xmm15,xmm15,xmm7 + vmovd xmm5,DWORD[4+r8] + vmovd xmm0,DWORD[4+r9] + vpinsrd xmm5,xmm5,DWORD[4+r10],1 + vpinsrd xmm0,xmm0,DWORD[4+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm11,6 + vpslld xmm2,xmm11,26 + vmovdqu XMMWORD[(16-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm14 + + vpsrld xmm1,xmm11,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm11,21 + vpaddd xmm5,xmm5,XMMWORD[((-96))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm11,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm11,7 + vpandn xmm0,xmm11,xmm13 + vpand xmm4,xmm11,xmm12 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm14,xmm15,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm15,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm8,xmm15 + + vpxor xmm14,xmm14,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm15,13 + + vpslld xmm2,xmm15,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm14,xmm1 + + vpsrld xmm1,xmm15,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm15,10 + vpxor xmm14,xmm8,xmm3 + vpaddd xmm10,xmm10,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm14,xmm14,xmm5 + vpaddd xmm14,xmm14,xmm7 + vmovd xmm5,DWORD[8+r8] + vmovd xmm0,DWORD[8+r9] + vpinsrd xmm5,xmm5,DWORD[8+r10],1 + vpinsrd xmm0,xmm0,DWORD[8+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm10,6 + vpslld xmm2,xmm10,26 + vmovdqu XMMWORD[(32-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm13 + + vpsrld xmm1,xmm10,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm10,21 + vpaddd xmm5,xmm5,XMMWORD[((-64))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm10,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm10,7 + vpandn xmm0,xmm10,xmm12 + vpand xmm3,xmm10,xmm11 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm13,xmm14,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm14,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm15,xmm14 + + vpxor xmm13,xmm13,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm14,13 + + vpslld xmm2,xmm14,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm13,xmm1 + + vpsrld xmm1,xmm14,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm14,10 + vpxor xmm13,xmm15,xmm4 + vpaddd xmm9,xmm9,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm13,xmm13,xmm5 + vpaddd xmm13,xmm13,xmm7 + vmovd xmm5,DWORD[12+r8] + vmovd xmm0,DWORD[12+r9] + vpinsrd xmm5,xmm5,DWORD[12+r10],1 + vpinsrd xmm0,xmm0,DWORD[12+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm9,6 + vpslld xmm2,xmm9,26 + vmovdqu XMMWORD[(48-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm12 + + vpsrld xmm1,xmm9,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm9,21 + vpaddd xmm5,xmm5,XMMWORD[((-32))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm9,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm9,7 + vpandn xmm0,xmm9,xmm11 + vpand xmm4,xmm9,xmm10 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm12,xmm13,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm13,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm14,xmm13 + + vpxor xmm12,xmm12,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm13,13 + + vpslld xmm2,xmm13,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm12,xmm1 + + vpsrld xmm1,xmm13,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm13,10 + vpxor xmm12,xmm14,xmm3 + vpaddd xmm8,xmm8,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm12,xmm12,xmm5 + vpaddd xmm12,xmm12,xmm7 + vmovd xmm5,DWORD[16+r8] + vmovd xmm0,DWORD[16+r9] + vpinsrd xmm5,xmm5,DWORD[16+r10],1 + vpinsrd xmm0,xmm0,DWORD[16+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm8,6 + vpslld xmm2,xmm8,26 + vmovdqu XMMWORD[(64-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm11 + + vpsrld xmm1,xmm8,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm8,21 + vpaddd xmm5,xmm5,XMMWORD[rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm8,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm8,7 + vpandn xmm0,xmm8,xmm10 + vpand xmm3,xmm8,xmm9 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm11,xmm12,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm12,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm13,xmm12 + + vpxor xmm11,xmm11,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm12,13 + + vpslld xmm2,xmm12,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm11,xmm1 + + vpsrld xmm1,xmm12,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm12,10 + vpxor xmm11,xmm13,xmm4 + vpaddd xmm15,xmm15,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm11,xmm11,xmm5 + vpaddd xmm11,xmm11,xmm7 + vmovd xmm5,DWORD[20+r8] + vmovd xmm0,DWORD[20+r9] + vpinsrd xmm5,xmm5,DWORD[20+r10],1 + vpinsrd xmm0,xmm0,DWORD[20+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm15,6 + vpslld xmm2,xmm15,26 + vmovdqu XMMWORD[(80-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm10 + + vpsrld xmm1,xmm15,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm15,21 + vpaddd xmm5,xmm5,XMMWORD[32+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm15,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm15,7 + vpandn xmm0,xmm15,xmm9 + vpand xmm4,xmm15,xmm8 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm10,xmm11,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm11,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm12,xmm11 + + vpxor xmm10,xmm10,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm11,13 + + vpslld xmm2,xmm11,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm10,xmm1 + + vpsrld xmm1,xmm11,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm11,10 + vpxor xmm10,xmm12,xmm3 + vpaddd xmm14,xmm14,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm10,xmm10,xmm5 + vpaddd xmm10,xmm10,xmm7 + vmovd xmm5,DWORD[24+r8] + vmovd xmm0,DWORD[24+r9] + vpinsrd xmm5,xmm5,DWORD[24+r10],1 + vpinsrd xmm0,xmm0,DWORD[24+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm14,6 + vpslld xmm2,xmm14,26 + vmovdqu XMMWORD[(96-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm9 + + vpsrld xmm1,xmm14,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm14,21 + vpaddd xmm5,xmm5,XMMWORD[64+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm14,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm14,7 + vpandn xmm0,xmm14,xmm8 + vpand xmm3,xmm14,xmm15 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm9,xmm10,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm10,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm11,xmm10 + + vpxor xmm9,xmm9,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm10,13 + + vpslld xmm2,xmm10,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm9,xmm1 + + vpsrld xmm1,xmm10,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm10,10 + vpxor xmm9,xmm11,xmm4 + vpaddd xmm13,xmm13,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm9,xmm9,xmm5 + vpaddd xmm9,xmm9,xmm7 + vmovd xmm5,DWORD[28+r8] + vmovd xmm0,DWORD[28+r9] + vpinsrd xmm5,xmm5,DWORD[28+r10],1 + vpinsrd xmm0,xmm0,DWORD[28+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm13,6 + vpslld xmm2,xmm13,26 + vmovdqu XMMWORD[(112-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm8 + + vpsrld xmm1,xmm13,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm13,21 + vpaddd xmm5,xmm5,XMMWORD[96+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm13,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm13,7 + vpandn xmm0,xmm13,xmm15 + vpand xmm4,xmm13,xmm14 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm8,xmm9,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm9,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm10,xmm9 + + vpxor xmm8,xmm8,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm9,13 + + vpslld xmm2,xmm9,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm8,xmm1 + + vpsrld xmm1,xmm9,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm9,10 + vpxor xmm8,xmm10,xmm3 + vpaddd xmm12,xmm12,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm8,xmm8,xmm5 + vpaddd xmm8,xmm8,xmm7 + add rbp,256 + vmovd xmm5,DWORD[32+r8] + vmovd xmm0,DWORD[32+r9] + vpinsrd xmm5,xmm5,DWORD[32+r10],1 + vpinsrd xmm0,xmm0,DWORD[32+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm12,6 + vpslld xmm2,xmm12,26 + vmovdqu XMMWORD[(128-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm15 + + vpsrld xmm1,xmm12,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm12,21 + vpaddd xmm5,xmm5,XMMWORD[((-128))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm12,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm12,7 + vpandn xmm0,xmm12,xmm14 + vpand xmm3,xmm12,xmm13 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm15,xmm8,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm8,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm9,xmm8 + + vpxor xmm15,xmm15,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm8,13 + + vpslld xmm2,xmm8,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm15,xmm1 + + vpsrld xmm1,xmm8,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm8,10 + vpxor xmm15,xmm9,xmm4 + vpaddd xmm11,xmm11,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm15,xmm15,xmm5 + vpaddd xmm15,xmm15,xmm7 + vmovd xmm5,DWORD[36+r8] + vmovd xmm0,DWORD[36+r9] + vpinsrd xmm5,xmm5,DWORD[36+r10],1 + vpinsrd xmm0,xmm0,DWORD[36+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm11,6 + vpslld xmm2,xmm11,26 + vmovdqu XMMWORD[(144-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm14 + + vpsrld xmm1,xmm11,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm11,21 + vpaddd xmm5,xmm5,XMMWORD[((-96))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm11,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm11,7 + vpandn xmm0,xmm11,xmm13 + vpand xmm4,xmm11,xmm12 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm14,xmm15,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm15,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm8,xmm15 + + vpxor xmm14,xmm14,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm15,13 + + vpslld xmm2,xmm15,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm14,xmm1 + + vpsrld xmm1,xmm15,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm15,10 + vpxor xmm14,xmm8,xmm3 + vpaddd xmm10,xmm10,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm14,xmm14,xmm5 + vpaddd xmm14,xmm14,xmm7 + vmovd xmm5,DWORD[40+r8] + vmovd xmm0,DWORD[40+r9] + vpinsrd xmm5,xmm5,DWORD[40+r10],1 + vpinsrd xmm0,xmm0,DWORD[40+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm10,6 + vpslld xmm2,xmm10,26 + vmovdqu XMMWORD[(160-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm13 + + vpsrld xmm1,xmm10,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm10,21 + vpaddd xmm5,xmm5,XMMWORD[((-64))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm10,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm10,7 + vpandn xmm0,xmm10,xmm12 + vpand xmm3,xmm10,xmm11 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm13,xmm14,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm14,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm15,xmm14 + + vpxor xmm13,xmm13,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm14,13 + + vpslld xmm2,xmm14,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm13,xmm1 + + vpsrld xmm1,xmm14,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm14,10 + vpxor xmm13,xmm15,xmm4 + vpaddd xmm9,xmm9,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm13,xmm13,xmm5 + vpaddd xmm13,xmm13,xmm7 + vmovd xmm5,DWORD[44+r8] + vmovd xmm0,DWORD[44+r9] + vpinsrd xmm5,xmm5,DWORD[44+r10],1 + vpinsrd xmm0,xmm0,DWORD[44+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm9,6 + vpslld xmm2,xmm9,26 + vmovdqu XMMWORD[(176-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm12 + + vpsrld xmm1,xmm9,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm9,21 + vpaddd xmm5,xmm5,XMMWORD[((-32))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm9,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm9,7 + vpandn xmm0,xmm9,xmm11 + vpand xmm4,xmm9,xmm10 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm12,xmm13,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm13,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm14,xmm13 + + vpxor xmm12,xmm12,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm13,13 + + vpslld xmm2,xmm13,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm12,xmm1 + + vpsrld xmm1,xmm13,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm13,10 + vpxor xmm12,xmm14,xmm3 + vpaddd xmm8,xmm8,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm12,xmm12,xmm5 + vpaddd xmm12,xmm12,xmm7 + vmovd xmm5,DWORD[48+r8] + vmovd xmm0,DWORD[48+r9] + vpinsrd xmm5,xmm5,DWORD[48+r10],1 + vpinsrd xmm0,xmm0,DWORD[48+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm8,6 + vpslld xmm2,xmm8,26 + vmovdqu XMMWORD[(192-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm11 + + vpsrld xmm1,xmm8,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm8,21 + vpaddd xmm5,xmm5,XMMWORD[rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm8,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm8,7 + vpandn xmm0,xmm8,xmm10 + vpand xmm3,xmm8,xmm9 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm11,xmm12,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm12,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm13,xmm12 + + vpxor xmm11,xmm11,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm12,13 + + vpslld xmm2,xmm12,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm11,xmm1 + + vpsrld xmm1,xmm12,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm12,10 + vpxor xmm11,xmm13,xmm4 + vpaddd xmm15,xmm15,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm11,xmm11,xmm5 + vpaddd xmm11,xmm11,xmm7 + vmovd xmm5,DWORD[52+r8] + vmovd xmm0,DWORD[52+r9] + vpinsrd xmm5,xmm5,DWORD[52+r10],1 + vpinsrd xmm0,xmm0,DWORD[52+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm15,6 + vpslld xmm2,xmm15,26 + vmovdqu XMMWORD[(208-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm10 + + vpsrld xmm1,xmm15,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm15,21 + vpaddd xmm5,xmm5,XMMWORD[32+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm15,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm15,7 + vpandn xmm0,xmm15,xmm9 + vpand xmm4,xmm15,xmm8 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm10,xmm11,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm11,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm12,xmm11 + + vpxor xmm10,xmm10,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm11,13 + + vpslld xmm2,xmm11,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm10,xmm1 + + vpsrld xmm1,xmm11,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm11,10 + vpxor xmm10,xmm12,xmm3 + vpaddd xmm14,xmm14,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm10,xmm10,xmm5 + vpaddd xmm10,xmm10,xmm7 + vmovd xmm5,DWORD[56+r8] + vmovd xmm0,DWORD[56+r9] + vpinsrd xmm5,xmm5,DWORD[56+r10],1 + vpinsrd xmm0,xmm0,DWORD[56+r11],1 + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm14,6 + vpslld xmm2,xmm14,26 + vmovdqu XMMWORD[(224-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm9 + + vpsrld xmm1,xmm14,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm14,21 + vpaddd xmm5,xmm5,XMMWORD[64+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm14,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm14,7 + vpandn xmm0,xmm14,xmm8 + vpand xmm3,xmm14,xmm15 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm9,xmm10,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm10,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm11,xmm10 + + vpxor xmm9,xmm9,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm10,13 + + vpslld xmm2,xmm10,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm9,xmm1 + + vpsrld xmm1,xmm10,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm10,10 + vpxor xmm9,xmm11,xmm4 + vpaddd xmm13,xmm13,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm9,xmm9,xmm5 + vpaddd xmm9,xmm9,xmm7 + vmovd xmm5,DWORD[60+r8] + lea r8,[64+r8] + vmovd xmm0,DWORD[60+r9] + lea r9,[64+r9] + vpinsrd xmm5,xmm5,DWORD[60+r10],1 + lea r10,[64+r10] + vpinsrd xmm0,xmm0,DWORD[60+r11],1 + lea r11,[64+r11] + vpunpckldq xmm5,xmm5,xmm0 + vpshufb xmm5,xmm5,xmm6 + vpsrld xmm7,xmm13,6 + vpslld xmm2,xmm13,26 + vmovdqu XMMWORD[(240-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm8 + + vpsrld xmm1,xmm13,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm13,21 + vpaddd xmm5,xmm5,XMMWORD[96+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm13,25 + vpxor xmm7,xmm7,xmm2 + prefetcht0 [63+r8] + vpslld xmm2,xmm13,7 + vpandn xmm0,xmm13,xmm15 + vpand xmm4,xmm13,xmm14 + prefetcht0 [63+r9] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm8,xmm9,2 + vpxor xmm7,xmm7,xmm2 + prefetcht0 [63+r10] + vpslld xmm1,xmm9,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm10,xmm9 + prefetcht0 [63+r11] + vpxor xmm8,xmm8,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm9,13 + + vpslld xmm2,xmm9,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm8,xmm1 + + vpsrld xmm1,xmm9,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm9,10 + vpxor xmm8,xmm10,xmm3 + vpaddd xmm12,xmm12,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm8,xmm8,xmm5 + vpaddd xmm8,xmm8,xmm7 + add rbp,256 + vmovdqu xmm5,XMMWORD[((0-128))+rax] + mov ecx,3 + jmp NEAR $L$oop_16_xx_avx +ALIGN 32 +$L$oop_16_xx_avx: + vmovdqu xmm6,XMMWORD[((16-128))+rax] + vpaddd xmm5,xmm5,XMMWORD[((144-128))+rax] + + vpsrld xmm7,xmm6,3 + vpsrld xmm1,xmm6,7 + vpslld xmm2,xmm6,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm6,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm6,14 + vmovdqu xmm0,XMMWORD[((224-128))+rax] + vpsrld xmm3,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm5,xmm5,xmm7 + vpxor xmm7,xmm3,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm5,xmm5,xmm7 + vpsrld xmm7,xmm12,6 + vpslld xmm2,xmm12,26 + vmovdqu XMMWORD[(0-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm15 + + vpsrld xmm1,xmm12,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm12,21 + vpaddd xmm5,xmm5,XMMWORD[((-128))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm12,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm12,7 + vpandn xmm0,xmm12,xmm14 + vpand xmm3,xmm12,xmm13 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm15,xmm8,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm8,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm9,xmm8 + + vpxor xmm15,xmm15,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm8,13 + + vpslld xmm2,xmm8,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm15,xmm1 + + vpsrld xmm1,xmm8,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm8,10 + vpxor xmm15,xmm9,xmm4 + vpaddd xmm11,xmm11,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm15,xmm15,xmm5 + vpaddd xmm15,xmm15,xmm7 + vmovdqu xmm5,XMMWORD[((32-128))+rax] + vpaddd xmm6,xmm6,XMMWORD[((160-128))+rax] + + vpsrld xmm7,xmm5,3 + vpsrld xmm1,xmm5,7 + vpslld xmm2,xmm5,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm5,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm5,14 + vmovdqu xmm0,XMMWORD[((240-128))+rax] + vpsrld xmm4,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm6,xmm6,xmm7 + vpxor xmm7,xmm4,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm6,xmm6,xmm7 + vpsrld xmm7,xmm11,6 + vpslld xmm2,xmm11,26 + vmovdqu XMMWORD[(16-128)+rax],xmm6 + vpaddd xmm6,xmm6,xmm14 + + vpsrld xmm1,xmm11,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm11,21 + vpaddd xmm6,xmm6,XMMWORD[((-96))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm11,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm11,7 + vpandn xmm0,xmm11,xmm13 + vpand xmm4,xmm11,xmm12 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm14,xmm15,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm15,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm8,xmm15 + + vpxor xmm14,xmm14,xmm1 + vpaddd xmm6,xmm6,xmm7 + + vpsrld xmm1,xmm15,13 + + vpslld xmm2,xmm15,19 + vpaddd xmm6,xmm6,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm14,xmm1 + + vpsrld xmm1,xmm15,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm15,10 + vpxor xmm14,xmm8,xmm3 + vpaddd xmm10,xmm10,xmm6 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm14,xmm14,xmm6 + vpaddd xmm14,xmm14,xmm7 + vmovdqu xmm6,XMMWORD[((48-128))+rax] + vpaddd xmm5,xmm5,XMMWORD[((176-128))+rax] + + vpsrld xmm7,xmm6,3 + vpsrld xmm1,xmm6,7 + vpslld xmm2,xmm6,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm6,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm6,14 + vmovdqu xmm0,XMMWORD[((0-128))+rax] + vpsrld xmm3,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm5,xmm5,xmm7 + vpxor xmm7,xmm3,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm5,xmm5,xmm7 + vpsrld xmm7,xmm10,6 + vpslld xmm2,xmm10,26 + vmovdqu XMMWORD[(32-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm13 + + vpsrld xmm1,xmm10,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm10,21 + vpaddd xmm5,xmm5,XMMWORD[((-64))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm10,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm10,7 + vpandn xmm0,xmm10,xmm12 + vpand xmm3,xmm10,xmm11 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm13,xmm14,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm14,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm15,xmm14 + + vpxor xmm13,xmm13,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm14,13 + + vpslld xmm2,xmm14,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm13,xmm1 + + vpsrld xmm1,xmm14,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm14,10 + vpxor xmm13,xmm15,xmm4 + vpaddd xmm9,xmm9,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm13,xmm13,xmm5 + vpaddd xmm13,xmm13,xmm7 + vmovdqu xmm5,XMMWORD[((64-128))+rax] + vpaddd xmm6,xmm6,XMMWORD[((192-128))+rax] + + vpsrld xmm7,xmm5,3 + vpsrld xmm1,xmm5,7 + vpslld xmm2,xmm5,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm5,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm5,14 + vmovdqu xmm0,XMMWORD[((16-128))+rax] + vpsrld xmm4,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm6,xmm6,xmm7 + vpxor xmm7,xmm4,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm6,xmm6,xmm7 + vpsrld xmm7,xmm9,6 + vpslld xmm2,xmm9,26 + vmovdqu XMMWORD[(48-128)+rax],xmm6 + vpaddd xmm6,xmm6,xmm12 + + vpsrld xmm1,xmm9,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm9,21 + vpaddd xmm6,xmm6,XMMWORD[((-32))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm9,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm9,7 + vpandn xmm0,xmm9,xmm11 + vpand xmm4,xmm9,xmm10 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm12,xmm13,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm13,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm14,xmm13 + + vpxor xmm12,xmm12,xmm1 + vpaddd xmm6,xmm6,xmm7 + + vpsrld xmm1,xmm13,13 + + vpslld xmm2,xmm13,19 + vpaddd xmm6,xmm6,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm12,xmm1 + + vpsrld xmm1,xmm13,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm13,10 + vpxor xmm12,xmm14,xmm3 + vpaddd xmm8,xmm8,xmm6 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm12,xmm12,xmm6 + vpaddd xmm12,xmm12,xmm7 + vmovdqu xmm6,XMMWORD[((80-128))+rax] + vpaddd xmm5,xmm5,XMMWORD[((208-128))+rax] + + vpsrld xmm7,xmm6,3 + vpsrld xmm1,xmm6,7 + vpslld xmm2,xmm6,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm6,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm6,14 + vmovdqu xmm0,XMMWORD[((32-128))+rax] + vpsrld xmm3,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm5,xmm5,xmm7 + vpxor xmm7,xmm3,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm5,xmm5,xmm7 + vpsrld xmm7,xmm8,6 + vpslld xmm2,xmm8,26 + vmovdqu XMMWORD[(64-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm11 + + vpsrld xmm1,xmm8,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm8,21 + vpaddd xmm5,xmm5,XMMWORD[rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm8,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm8,7 + vpandn xmm0,xmm8,xmm10 + vpand xmm3,xmm8,xmm9 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm11,xmm12,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm12,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm13,xmm12 + + vpxor xmm11,xmm11,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm12,13 + + vpslld xmm2,xmm12,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm11,xmm1 + + vpsrld xmm1,xmm12,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm12,10 + vpxor xmm11,xmm13,xmm4 + vpaddd xmm15,xmm15,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm11,xmm11,xmm5 + vpaddd xmm11,xmm11,xmm7 + vmovdqu xmm5,XMMWORD[((96-128))+rax] + vpaddd xmm6,xmm6,XMMWORD[((224-128))+rax] + + vpsrld xmm7,xmm5,3 + vpsrld xmm1,xmm5,7 + vpslld xmm2,xmm5,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm5,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm5,14 + vmovdqu xmm0,XMMWORD[((48-128))+rax] + vpsrld xmm4,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm6,xmm6,xmm7 + vpxor xmm7,xmm4,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm6,xmm6,xmm7 + vpsrld xmm7,xmm15,6 + vpslld xmm2,xmm15,26 + vmovdqu XMMWORD[(80-128)+rax],xmm6 + vpaddd xmm6,xmm6,xmm10 + + vpsrld xmm1,xmm15,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm15,21 + vpaddd xmm6,xmm6,XMMWORD[32+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm15,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm15,7 + vpandn xmm0,xmm15,xmm9 + vpand xmm4,xmm15,xmm8 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm10,xmm11,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm11,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm12,xmm11 + + vpxor xmm10,xmm10,xmm1 + vpaddd xmm6,xmm6,xmm7 + + vpsrld xmm1,xmm11,13 + + vpslld xmm2,xmm11,19 + vpaddd xmm6,xmm6,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm10,xmm1 + + vpsrld xmm1,xmm11,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm11,10 + vpxor xmm10,xmm12,xmm3 + vpaddd xmm14,xmm14,xmm6 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm10,xmm10,xmm6 + vpaddd xmm10,xmm10,xmm7 + vmovdqu xmm6,XMMWORD[((112-128))+rax] + vpaddd xmm5,xmm5,XMMWORD[((240-128))+rax] + + vpsrld xmm7,xmm6,3 + vpsrld xmm1,xmm6,7 + vpslld xmm2,xmm6,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm6,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm6,14 + vmovdqu xmm0,XMMWORD[((64-128))+rax] + vpsrld xmm3,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm5,xmm5,xmm7 + vpxor xmm7,xmm3,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm5,xmm5,xmm7 + vpsrld xmm7,xmm14,6 + vpslld xmm2,xmm14,26 + vmovdqu XMMWORD[(96-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm9 + + vpsrld xmm1,xmm14,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm14,21 + vpaddd xmm5,xmm5,XMMWORD[64+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm14,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm14,7 + vpandn xmm0,xmm14,xmm8 + vpand xmm3,xmm14,xmm15 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm9,xmm10,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm10,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm11,xmm10 + + vpxor xmm9,xmm9,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm10,13 + + vpslld xmm2,xmm10,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm9,xmm1 + + vpsrld xmm1,xmm10,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm10,10 + vpxor xmm9,xmm11,xmm4 + vpaddd xmm13,xmm13,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm9,xmm9,xmm5 + vpaddd xmm9,xmm9,xmm7 + vmovdqu xmm5,XMMWORD[((128-128))+rax] + vpaddd xmm6,xmm6,XMMWORD[((0-128))+rax] + + vpsrld xmm7,xmm5,3 + vpsrld xmm1,xmm5,7 + vpslld xmm2,xmm5,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm5,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm5,14 + vmovdqu xmm0,XMMWORD[((80-128))+rax] + vpsrld xmm4,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm6,xmm6,xmm7 + vpxor xmm7,xmm4,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm6,xmm6,xmm7 + vpsrld xmm7,xmm13,6 + vpslld xmm2,xmm13,26 + vmovdqu XMMWORD[(112-128)+rax],xmm6 + vpaddd xmm6,xmm6,xmm8 + + vpsrld xmm1,xmm13,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm13,21 + vpaddd xmm6,xmm6,XMMWORD[96+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm13,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm13,7 + vpandn xmm0,xmm13,xmm15 + vpand xmm4,xmm13,xmm14 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm8,xmm9,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm9,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm10,xmm9 + + vpxor xmm8,xmm8,xmm1 + vpaddd xmm6,xmm6,xmm7 + + vpsrld xmm1,xmm9,13 + + vpslld xmm2,xmm9,19 + vpaddd xmm6,xmm6,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm8,xmm1 + + vpsrld xmm1,xmm9,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm9,10 + vpxor xmm8,xmm10,xmm3 + vpaddd xmm12,xmm12,xmm6 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm8,xmm8,xmm6 + vpaddd xmm8,xmm8,xmm7 + add rbp,256 + vmovdqu xmm6,XMMWORD[((144-128))+rax] + vpaddd xmm5,xmm5,XMMWORD[((16-128))+rax] + + vpsrld xmm7,xmm6,3 + vpsrld xmm1,xmm6,7 + vpslld xmm2,xmm6,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm6,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm6,14 + vmovdqu xmm0,XMMWORD[((96-128))+rax] + vpsrld xmm3,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm5,xmm5,xmm7 + vpxor xmm7,xmm3,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm5,xmm5,xmm7 + vpsrld xmm7,xmm12,6 + vpslld xmm2,xmm12,26 + vmovdqu XMMWORD[(128-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm15 + + vpsrld xmm1,xmm12,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm12,21 + vpaddd xmm5,xmm5,XMMWORD[((-128))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm12,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm12,7 + vpandn xmm0,xmm12,xmm14 + vpand xmm3,xmm12,xmm13 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm15,xmm8,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm8,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm9,xmm8 + + vpxor xmm15,xmm15,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm8,13 + + vpslld xmm2,xmm8,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm15,xmm1 + + vpsrld xmm1,xmm8,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm8,10 + vpxor xmm15,xmm9,xmm4 + vpaddd xmm11,xmm11,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm15,xmm15,xmm5 + vpaddd xmm15,xmm15,xmm7 + vmovdqu xmm5,XMMWORD[((160-128))+rax] + vpaddd xmm6,xmm6,XMMWORD[((32-128))+rax] + + vpsrld xmm7,xmm5,3 + vpsrld xmm1,xmm5,7 + vpslld xmm2,xmm5,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm5,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm5,14 + vmovdqu xmm0,XMMWORD[((112-128))+rax] + vpsrld xmm4,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm6,xmm6,xmm7 + vpxor xmm7,xmm4,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm6,xmm6,xmm7 + vpsrld xmm7,xmm11,6 + vpslld xmm2,xmm11,26 + vmovdqu XMMWORD[(144-128)+rax],xmm6 + vpaddd xmm6,xmm6,xmm14 + + vpsrld xmm1,xmm11,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm11,21 + vpaddd xmm6,xmm6,XMMWORD[((-96))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm11,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm11,7 + vpandn xmm0,xmm11,xmm13 + vpand xmm4,xmm11,xmm12 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm14,xmm15,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm15,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm8,xmm15 + + vpxor xmm14,xmm14,xmm1 + vpaddd xmm6,xmm6,xmm7 + + vpsrld xmm1,xmm15,13 + + vpslld xmm2,xmm15,19 + vpaddd xmm6,xmm6,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm14,xmm1 + + vpsrld xmm1,xmm15,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm15,10 + vpxor xmm14,xmm8,xmm3 + vpaddd xmm10,xmm10,xmm6 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm14,xmm14,xmm6 + vpaddd xmm14,xmm14,xmm7 + vmovdqu xmm6,XMMWORD[((176-128))+rax] + vpaddd xmm5,xmm5,XMMWORD[((48-128))+rax] + + vpsrld xmm7,xmm6,3 + vpsrld xmm1,xmm6,7 + vpslld xmm2,xmm6,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm6,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm6,14 + vmovdqu xmm0,XMMWORD[((128-128))+rax] + vpsrld xmm3,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm5,xmm5,xmm7 + vpxor xmm7,xmm3,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm5,xmm5,xmm7 + vpsrld xmm7,xmm10,6 + vpslld xmm2,xmm10,26 + vmovdqu XMMWORD[(160-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm13 + + vpsrld xmm1,xmm10,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm10,21 + vpaddd xmm5,xmm5,XMMWORD[((-64))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm10,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm10,7 + vpandn xmm0,xmm10,xmm12 + vpand xmm3,xmm10,xmm11 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm13,xmm14,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm14,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm15,xmm14 + + vpxor xmm13,xmm13,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm14,13 + + vpslld xmm2,xmm14,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm13,xmm1 + + vpsrld xmm1,xmm14,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm14,10 + vpxor xmm13,xmm15,xmm4 + vpaddd xmm9,xmm9,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm13,xmm13,xmm5 + vpaddd xmm13,xmm13,xmm7 + vmovdqu xmm5,XMMWORD[((192-128))+rax] + vpaddd xmm6,xmm6,XMMWORD[((64-128))+rax] + + vpsrld xmm7,xmm5,3 + vpsrld xmm1,xmm5,7 + vpslld xmm2,xmm5,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm5,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm5,14 + vmovdqu xmm0,XMMWORD[((144-128))+rax] + vpsrld xmm4,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm6,xmm6,xmm7 + vpxor xmm7,xmm4,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm6,xmm6,xmm7 + vpsrld xmm7,xmm9,6 + vpslld xmm2,xmm9,26 + vmovdqu XMMWORD[(176-128)+rax],xmm6 + vpaddd xmm6,xmm6,xmm12 + + vpsrld xmm1,xmm9,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm9,21 + vpaddd xmm6,xmm6,XMMWORD[((-32))+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm9,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm9,7 + vpandn xmm0,xmm9,xmm11 + vpand xmm4,xmm9,xmm10 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm12,xmm13,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm13,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm14,xmm13 + + vpxor xmm12,xmm12,xmm1 + vpaddd xmm6,xmm6,xmm7 + + vpsrld xmm1,xmm13,13 + + vpslld xmm2,xmm13,19 + vpaddd xmm6,xmm6,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm12,xmm1 + + vpsrld xmm1,xmm13,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm13,10 + vpxor xmm12,xmm14,xmm3 + vpaddd xmm8,xmm8,xmm6 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm12,xmm12,xmm6 + vpaddd xmm12,xmm12,xmm7 + vmovdqu xmm6,XMMWORD[((208-128))+rax] + vpaddd xmm5,xmm5,XMMWORD[((80-128))+rax] + + vpsrld xmm7,xmm6,3 + vpsrld xmm1,xmm6,7 + vpslld xmm2,xmm6,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm6,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm6,14 + vmovdqu xmm0,XMMWORD[((160-128))+rax] + vpsrld xmm3,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm5,xmm5,xmm7 + vpxor xmm7,xmm3,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm5,xmm5,xmm7 + vpsrld xmm7,xmm8,6 + vpslld xmm2,xmm8,26 + vmovdqu XMMWORD[(192-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm11 + + vpsrld xmm1,xmm8,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm8,21 + vpaddd xmm5,xmm5,XMMWORD[rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm8,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm8,7 + vpandn xmm0,xmm8,xmm10 + vpand xmm3,xmm8,xmm9 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm11,xmm12,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm12,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm13,xmm12 + + vpxor xmm11,xmm11,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm12,13 + + vpslld xmm2,xmm12,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm11,xmm1 + + vpsrld xmm1,xmm12,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm12,10 + vpxor xmm11,xmm13,xmm4 + vpaddd xmm15,xmm15,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm11,xmm11,xmm5 + vpaddd xmm11,xmm11,xmm7 + vmovdqu xmm5,XMMWORD[((224-128))+rax] + vpaddd xmm6,xmm6,XMMWORD[((96-128))+rax] + + vpsrld xmm7,xmm5,3 + vpsrld xmm1,xmm5,7 + vpslld xmm2,xmm5,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm5,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm5,14 + vmovdqu xmm0,XMMWORD[((176-128))+rax] + vpsrld xmm4,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm6,xmm6,xmm7 + vpxor xmm7,xmm4,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm6,xmm6,xmm7 + vpsrld xmm7,xmm15,6 + vpslld xmm2,xmm15,26 + vmovdqu XMMWORD[(208-128)+rax],xmm6 + vpaddd xmm6,xmm6,xmm10 + + vpsrld xmm1,xmm15,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm15,21 + vpaddd xmm6,xmm6,XMMWORD[32+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm15,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm15,7 + vpandn xmm0,xmm15,xmm9 + vpand xmm4,xmm15,xmm8 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm10,xmm11,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm11,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm12,xmm11 + + vpxor xmm10,xmm10,xmm1 + vpaddd xmm6,xmm6,xmm7 + + vpsrld xmm1,xmm11,13 + + vpslld xmm2,xmm11,19 + vpaddd xmm6,xmm6,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm10,xmm1 + + vpsrld xmm1,xmm11,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm11,10 + vpxor xmm10,xmm12,xmm3 + vpaddd xmm14,xmm14,xmm6 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm10,xmm10,xmm6 + vpaddd xmm10,xmm10,xmm7 + vmovdqu xmm6,XMMWORD[((240-128))+rax] + vpaddd xmm5,xmm5,XMMWORD[((112-128))+rax] + + vpsrld xmm7,xmm6,3 + vpsrld xmm1,xmm6,7 + vpslld xmm2,xmm6,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm6,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm6,14 + vmovdqu xmm0,XMMWORD[((192-128))+rax] + vpsrld xmm3,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm5,xmm5,xmm7 + vpxor xmm7,xmm3,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm5,xmm5,xmm7 + vpsrld xmm7,xmm14,6 + vpslld xmm2,xmm14,26 + vmovdqu XMMWORD[(224-128)+rax],xmm5 + vpaddd xmm5,xmm5,xmm9 + + vpsrld xmm1,xmm14,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm14,21 + vpaddd xmm5,xmm5,XMMWORD[64+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm14,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm14,7 + vpandn xmm0,xmm14,xmm8 + vpand xmm3,xmm14,xmm15 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm9,xmm10,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm10,30 + vpxor xmm0,xmm0,xmm3 + vpxor xmm3,xmm11,xmm10 + + vpxor xmm9,xmm9,xmm1 + vpaddd xmm5,xmm5,xmm7 + + vpsrld xmm1,xmm10,13 + + vpslld xmm2,xmm10,19 + vpaddd xmm5,xmm5,xmm0 + vpand xmm4,xmm4,xmm3 + + vpxor xmm7,xmm9,xmm1 + + vpsrld xmm1,xmm10,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm10,10 + vpxor xmm9,xmm11,xmm4 + vpaddd xmm13,xmm13,xmm5 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm9,xmm9,xmm5 + vpaddd xmm9,xmm9,xmm7 + vmovdqu xmm5,XMMWORD[((0-128))+rax] + vpaddd xmm6,xmm6,XMMWORD[((128-128))+rax] + + vpsrld xmm7,xmm5,3 + vpsrld xmm1,xmm5,7 + vpslld xmm2,xmm5,25 + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm5,18 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm5,14 + vmovdqu xmm0,XMMWORD[((208-128))+rax] + vpsrld xmm4,xmm0,10 + + vpxor xmm7,xmm7,xmm1 + vpsrld xmm1,xmm0,17 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,15 + vpaddd xmm6,xmm6,xmm7 + vpxor xmm7,xmm4,xmm1 + vpsrld xmm1,xmm0,19 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm0,13 + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + vpaddd xmm6,xmm6,xmm7 + vpsrld xmm7,xmm13,6 + vpslld xmm2,xmm13,26 + vmovdqu XMMWORD[(240-128)+rax],xmm6 + vpaddd xmm6,xmm6,xmm8 + + vpsrld xmm1,xmm13,11 + vpxor xmm7,xmm7,xmm2 + vpslld xmm2,xmm13,21 + vpaddd xmm6,xmm6,XMMWORD[96+rbp] + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm1,xmm13,25 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm13,7 + vpandn xmm0,xmm13,xmm15 + vpand xmm4,xmm13,xmm14 + + vpxor xmm7,xmm7,xmm1 + + vpsrld xmm8,xmm9,2 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm1,xmm9,30 + vpxor xmm0,xmm0,xmm4 + vpxor xmm4,xmm10,xmm9 + + vpxor xmm8,xmm8,xmm1 + vpaddd xmm6,xmm6,xmm7 + + vpsrld xmm1,xmm9,13 + + vpslld xmm2,xmm9,19 + vpaddd xmm6,xmm6,xmm0 + vpand xmm3,xmm3,xmm4 + + vpxor xmm7,xmm8,xmm1 + + vpsrld xmm1,xmm9,22 + vpxor xmm7,xmm7,xmm2 + + vpslld xmm2,xmm9,10 + vpxor xmm8,xmm10,xmm3 + vpaddd xmm12,xmm12,xmm6 + + vpxor xmm7,xmm7,xmm1 + vpxor xmm7,xmm7,xmm2 + + vpaddd xmm8,xmm8,xmm6 + vpaddd xmm8,xmm8,xmm7 + add rbp,256 + dec ecx + jnz NEAR $L$oop_16_xx_avx + + mov ecx,1 + lea rbp,[((K256+128))] + cmp ecx,DWORD[rbx] + cmovge r8,rbp + cmp ecx,DWORD[4+rbx] + cmovge r9,rbp + cmp ecx,DWORD[8+rbx] + cmovge r10,rbp + cmp ecx,DWORD[12+rbx] + cmovge r11,rbp + vmovdqa xmm7,XMMWORD[rbx] + vpxor xmm0,xmm0,xmm0 + vmovdqa xmm6,xmm7 + vpcmpgtd xmm6,xmm6,xmm0 + vpaddd xmm7,xmm7,xmm6 + + vmovdqu xmm0,XMMWORD[((0-128))+rdi] + vpand xmm8,xmm8,xmm6 + vmovdqu xmm1,XMMWORD[((32-128))+rdi] + vpand xmm9,xmm9,xmm6 + vmovdqu xmm2,XMMWORD[((64-128))+rdi] + vpand xmm10,xmm10,xmm6 + vmovdqu xmm5,XMMWORD[((96-128))+rdi] + vpand xmm11,xmm11,xmm6 + vpaddd xmm8,xmm8,xmm0 + vmovdqu xmm0,XMMWORD[((128-128))+rdi] + vpand xmm12,xmm12,xmm6 + vpaddd xmm9,xmm9,xmm1 + vmovdqu xmm1,XMMWORD[((160-128))+rdi] + vpand xmm13,xmm13,xmm6 + vpaddd xmm10,xmm10,xmm2 + vmovdqu xmm2,XMMWORD[((192-128))+rdi] + vpand xmm14,xmm14,xmm6 + vpaddd xmm11,xmm11,xmm5 + vmovdqu xmm5,XMMWORD[((224-128))+rdi] + vpand xmm15,xmm15,xmm6 + vpaddd xmm12,xmm12,xmm0 + vpaddd xmm13,xmm13,xmm1 + vmovdqu XMMWORD[(0-128)+rdi],xmm8 + vpaddd xmm14,xmm14,xmm2 + vmovdqu XMMWORD[(32-128)+rdi],xmm9 + vpaddd xmm15,xmm15,xmm5 + vmovdqu XMMWORD[(64-128)+rdi],xmm10 + vmovdqu XMMWORD[(96-128)+rdi],xmm11 + vmovdqu XMMWORD[(128-128)+rdi],xmm12 + vmovdqu XMMWORD[(160-128)+rdi],xmm13 + vmovdqu XMMWORD[(192-128)+rdi],xmm14 + vmovdqu XMMWORD[(224-128)+rdi],xmm15 + + vmovdqu XMMWORD[rbx],xmm7 + vmovdqu xmm6,XMMWORD[$L$pbswap] + dec edx + jnz NEAR $L$oop_avx + + mov edx,DWORD[280+rsp] + lea rdi,[16+rdi] + lea rsi,[64+rsi] + dec edx + jnz NEAR $L$oop_grande_avx + +$L$done_avx: + mov rax,QWORD[272+rsp] + + vzeroupper + movaps xmm6,XMMWORD[((-184))+rax] + movaps xmm7,XMMWORD[((-168))+rax] + movaps xmm8,XMMWORD[((-152))+rax] + movaps xmm9,XMMWORD[((-136))+rax] + movaps xmm10,XMMWORD[((-120))+rax] + movaps xmm11,XMMWORD[((-104))+rax] + movaps xmm12,XMMWORD[((-88))+rax] + movaps xmm13,XMMWORD[((-72))+rax] + movaps xmm14,XMMWORD[((-56))+rax] + movaps xmm15,XMMWORD[((-40))+rax] + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$epilogue_avx: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha256_multi_block_avx: + +ALIGN 32 +sha256_multi_block_avx2: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha256_multi_block_avx2: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +_avx2_shortcut: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + lea rsp,[((-168))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 + movaps XMMWORD[64+rsp],xmm10 + movaps XMMWORD[80+rsp],xmm11 + movaps XMMWORD[(-120)+rax],xmm12 + movaps XMMWORD[(-104)+rax],xmm13 + movaps XMMWORD[(-88)+rax],xmm14 + movaps XMMWORD[(-72)+rax],xmm15 + sub rsp,576 + and rsp,-256 + mov QWORD[544+rsp],rax + +$L$body_avx2: + lea rbp,[((K256+128))] + lea rdi,[128+rdi] + +$L$oop_grande_avx2: + mov DWORD[552+rsp],edx + xor edx,edx + lea rbx,[512+rsp] + mov r12,QWORD[rsi] + mov ecx,DWORD[8+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[rbx],ecx + cmovle r12,rbp + mov r13,QWORD[16+rsi] + mov ecx,DWORD[24+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[4+rbx],ecx + cmovle r13,rbp + mov r14,QWORD[32+rsi] + mov ecx,DWORD[40+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[8+rbx],ecx + cmovle r14,rbp + mov r15,QWORD[48+rsi] + mov ecx,DWORD[56+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[12+rbx],ecx + cmovle r15,rbp + mov r8,QWORD[64+rsi] + mov ecx,DWORD[72+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[16+rbx],ecx + cmovle r8,rbp + mov r9,QWORD[80+rsi] + mov ecx,DWORD[88+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[20+rbx],ecx + cmovle r9,rbp + mov r10,QWORD[96+rsi] + mov ecx,DWORD[104+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[24+rbx],ecx + cmovle r10,rbp + mov r11,QWORD[112+rsi] + mov ecx,DWORD[120+rsi] + cmp ecx,edx + cmovg edx,ecx + test ecx,ecx + mov DWORD[28+rbx],ecx + cmovle r11,rbp + vmovdqu ymm8,YMMWORD[((0-128))+rdi] + lea rax,[128+rsp] + vmovdqu ymm9,YMMWORD[((32-128))+rdi] + lea rbx,[((256+128))+rsp] + vmovdqu ymm10,YMMWORD[((64-128))+rdi] + vmovdqu ymm11,YMMWORD[((96-128))+rdi] + vmovdqu ymm12,YMMWORD[((128-128))+rdi] + vmovdqu ymm13,YMMWORD[((160-128))+rdi] + vmovdqu ymm14,YMMWORD[((192-128))+rdi] + vmovdqu ymm15,YMMWORD[((224-128))+rdi] + vmovdqu ymm6,YMMWORD[$L$pbswap] + jmp NEAR $L$oop_avx2 + +ALIGN 32 +$L$oop_avx2: + vpxor ymm4,ymm10,ymm9 + vmovd xmm5,DWORD[r12] + vmovd xmm0,DWORD[r8] + vmovd xmm1,DWORD[r13] + vmovd xmm2,DWORD[r9] + vpinsrd xmm5,xmm5,DWORD[r14],1 + vpinsrd xmm0,xmm0,DWORD[r10],1 + vpinsrd xmm1,xmm1,DWORD[r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm12,6 + vpslld ymm2,ymm12,26 + vmovdqu YMMWORD[(0-128)+rax],ymm5 + vpaddd ymm5,ymm5,ymm15 + + vpsrld ymm1,ymm12,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm12,21 + vpaddd ymm5,ymm5,YMMWORD[((-128))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm12,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm12,7 + vpandn ymm0,ymm12,ymm14 + vpand ymm3,ymm12,ymm13 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm15,ymm8,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm8,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm9,ymm8 + + vpxor ymm15,ymm15,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm8,13 + + vpslld ymm2,ymm8,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm15,ymm1 + + vpsrld ymm1,ymm8,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm8,10 + vpxor ymm15,ymm9,ymm4 + vpaddd ymm11,ymm11,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm15,ymm15,ymm5 + vpaddd ymm15,ymm15,ymm7 + vmovd xmm5,DWORD[4+r12] + vmovd xmm0,DWORD[4+r8] + vmovd xmm1,DWORD[4+r13] + vmovd xmm2,DWORD[4+r9] + vpinsrd xmm5,xmm5,DWORD[4+r14],1 + vpinsrd xmm0,xmm0,DWORD[4+r10],1 + vpinsrd xmm1,xmm1,DWORD[4+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[4+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm11,6 + vpslld ymm2,ymm11,26 + vmovdqu YMMWORD[(32-128)+rax],ymm5 + vpaddd ymm5,ymm5,ymm14 + + vpsrld ymm1,ymm11,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm11,21 + vpaddd ymm5,ymm5,YMMWORD[((-96))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm11,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm11,7 + vpandn ymm0,ymm11,ymm13 + vpand ymm4,ymm11,ymm12 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm14,ymm15,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm15,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm8,ymm15 + + vpxor ymm14,ymm14,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm15,13 + + vpslld ymm2,ymm15,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm14,ymm1 + + vpsrld ymm1,ymm15,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm15,10 + vpxor ymm14,ymm8,ymm3 + vpaddd ymm10,ymm10,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm14,ymm14,ymm5 + vpaddd ymm14,ymm14,ymm7 + vmovd xmm5,DWORD[8+r12] + vmovd xmm0,DWORD[8+r8] + vmovd xmm1,DWORD[8+r13] + vmovd xmm2,DWORD[8+r9] + vpinsrd xmm5,xmm5,DWORD[8+r14],1 + vpinsrd xmm0,xmm0,DWORD[8+r10],1 + vpinsrd xmm1,xmm1,DWORD[8+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[8+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm10,6 + vpslld ymm2,ymm10,26 + vmovdqu YMMWORD[(64-128)+rax],ymm5 + vpaddd ymm5,ymm5,ymm13 + + vpsrld ymm1,ymm10,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm10,21 + vpaddd ymm5,ymm5,YMMWORD[((-64))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm10,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm10,7 + vpandn ymm0,ymm10,ymm12 + vpand ymm3,ymm10,ymm11 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm13,ymm14,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm14,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm15,ymm14 + + vpxor ymm13,ymm13,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm14,13 + + vpslld ymm2,ymm14,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm13,ymm1 + + vpsrld ymm1,ymm14,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm14,10 + vpxor ymm13,ymm15,ymm4 + vpaddd ymm9,ymm9,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm13,ymm13,ymm5 + vpaddd ymm13,ymm13,ymm7 + vmovd xmm5,DWORD[12+r12] + vmovd xmm0,DWORD[12+r8] + vmovd xmm1,DWORD[12+r13] + vmovd xmm2,DWORD[12+r9] + vpinsrd xmm5,xmm5,DWORD[12+r14],1 + vpinsrd xmm0,xmm0,DWORD[12+r10],1 + vpinsrd xmm1,xmm1,DWORD[12+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[12+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm9,6 + vpslld ymm2,ymm9,26 + vmovdqu YMMWORD[(96-128)+rax],ymm5 + vpaddd ymm5,ymm5,ymm12 + + vpsrld ymm1,ymm9,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm9,21 + vpaddd ymm5,ymm5,YMMWORD[((-32))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm9,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm9,7 + vpandn ymm0,ymm9,ymm11 + vpand ymm4,ymm9,ymm10 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm12,ymm13,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm13,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm14,ymm13 + + vpxor ymm12,ymm12,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm13,13 + + vpslld ymm2,ymm13,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm12,ymm1 + + vpsrld ymm1,ymm13,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm13,10 + vpxor ymm12,ymm14,ymm3 + vpaddd ymm8,ymm8,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm12,ymm12,ymm5 + vpaddd ymm12,ymm12,ymm7 + vmovd xmm5,DWORD[16+r12] + vmovd xmm0,DWORD[16+r8] + vmovd xmm1,DWORD[16+r13] + vmovd xmm2,DWORD[16+r9] + vpinsrd xmm5,xmm5,DWORD[16+r14],1 + vpinsrd xmm0,xmm0,DWORD[16+r10],1 + vpinsrd xmm1,xmm1,DWORD[16+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[16+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm8,6 + vpslld ymm2,ymm8,26 + vmovdqu YMMWORD[(128-128)+rax],ymm5 + vpaddd ymm5,ymm5,ymm11 + + vpsrld ymm1,ymm8,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm8,21 + vpaddd ymm5,ymm5,YMMWORD[rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm8,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm8,7 + vpandn ymm0,ymm8,ymm10 + vpand ymm3,ymm8,ymm9 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm11,ymm12,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm12,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm13,ymm12 + + vpxor ymm11,ymm11,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm12,13 + + vpslld ymm2,ymm12,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm11,ymm1 + + vpsrld ymm1,ymm12,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm12,10 + vpxor ymm11,ymm13,ymm4 + vpaddd ymm15,ymm15,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm11,ymm11,ymm5 + vpaddd ymm11,ymm11,ymm7 + vmovd xmm5,DWORD[20+r12] + vmovd xmm0,DWORD[20+r8] + vmovd xmm1,DWORD[20+r13] + vmovd xmm2,DWORD[20+r9] + vpinsrd xmm5,xmm5,DWORD[20+r14],1 + vpinsrd xmm0,xmm0,DWORD[20+r10],1 + vpinsrd xmm1,xmm1,DWORD[20+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[20+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm15,6 + vpslld ymm2,ymm15,26 + vmovdqu YMMWORD[(160-128)+rax],ymm5 + vpaddd ymm5,ymm5,ymm10 + + vpsrld ymm1,ymm15,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm15,21 + vpaddd ymm5,ymm5,YMMWORD[32+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm15,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm15,7 + vpandn ymm0,ymm15,ymm9 + vpand ymm4,ymm15,ymm8 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm10,ymm11,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm11,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm12,ymm11 + + vpxor ymm10,ymm10,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm11,13 + + vpslld ymm2,ymm11,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm10,ymm1 + + vpsrld ymm1,ymm11,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm11,10 + vpxor ymm10,ymm12,ymm3 + vpaddd ymm14,ymm14,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm10,ymm10,ymm5 + vpaddd ymm10,ymm10,ymm7 + vmovd xmm5,DWORD[24+r12] + vmovd xmm0,DWORD[24+r8] + vmovd xmm1,DWORD[24+r13] + vmovd xmm2,DWORD[24+r9] + vpinsrd xmm5,xmm5,DWORD[24+r14],1 + vpinsrd xmm0,xmm0,DWORD[24+r10],1 + vpinsrd xmm1,xmm1,DWORD[24+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[24+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm14,6 + vpslld ymm2,ymm14,26 + vmovdqu YMMWORD[(192-128)+rax],ymm5 + vpaddd ymm5,ymm5,ymm9 + + vpsrld ymm1,ymm14,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm14,21 + vpaddd ymm5,ymm5,YMMWORD[64+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm14,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm14,7 + vpandn ymm0,ymm14,ymm8 + vpand ymm3,ymm14,ymm15 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm9,ymm10,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm10,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm11,ymm10 + + vpxor ymm9,ymm9,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm10,13 + + vpslld ymm2,ymm10,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm9,ymm1 + + vpsrld ymm1,ymm10,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm10,10 + vpxor ymm9,ymm11,ymm4 + vpaddd ymm13,ymm13,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm9,ymm9,ymm5 + vpaddd ymm9,ymm9,ymm7 + vmovd xmm5,DWORD[28+r12] + vmovd xmm0,DWORD[28+r8] + vmovd xmm1,DWORD[28+r13] + vmovd xmm2,DWORD[28+r9] + vpinsrd xmm5,xmm5,DWORD[28+r14],1 + vpinsrd xmm0,xmm0,DWORD[28+r10],1 + vpinsrd xmm1,xmm1,DWORD[28+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[28+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm13,6 + vpslld ymm2,ymm13,26 + vmovdqu YMMWORD[(224-128)+rax],ymm5 + vpaddd ymm5,ymm5,ymm8 + + vpsrld ymm1,ymm13,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm13,21 + vpaddd ymm5,ymm5,YMMWORD[96+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm13,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm13,7 + vpandn ymm0,ymm13,ymm15 + vpand ymm4,ymm13,ymm14 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm8,ymm9,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm9,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm10,ymm9 + + vpxor ymm8,ymm8,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm9,13 + + vpslld ymm2,ymm9,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm8,ymm1 + + vpsrld ymm1,ymm9,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm9,10 + vpxor ymm8,ymm10,ymm3 + vpaddd ymm12,ymm12,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm8,ymm8,ymm5 + vpaddd ymm8,ymm8,ymm7 + add rbp,256 + vmovd xmm5,DWORD[32+r12] + vmovd xmm0,DWORD[32+r8] + vmovd xmm1,DWORD[32+r13] + vmovd xmm2,DWORD[32+r9] + vpinsrd xmm5,xmm5,DWORD[32+r14],1 + vpinsrd xmm0,xmm0,DWORD[32+r10],1 + vpinsrd xmm1,xmm1,DWORD[32+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[32+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm12,6 + vpslld ymm2,ymm12,26 + vmovdqu YMMWORD[(256-256-128)+rbx],ymm5 + vpaddd ymm5,ymm5,ymm15 + + vpsrld ymm1,ymm12,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm12,21 + vpaddd ymm5,ymm5,YMMWORD[((-128))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm12,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm12,7 + vpandn ymm0,ymm12,ymm14 + vpand ymm3,ymm12,ymm13 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm15,ymm8,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm8,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm9,ymm8 + + vpxor ymm15,ymm15,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm8,13 + + vpslld ymm2,ymm8,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm15,ymm1 + + vpsrld ymm1,ymm8,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm8,10 + vpxor ymm15,ymm9,ymm4 + vpaddd ymm11,ymm11,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm15,ymm15,ymm5 + vpaddd ymm15,ymm15,ymm7 + vmovd xmm5,DWORD[36+r12] + vmovd xmm0,DWORD[36+r8] + vmovd xmm1,DWORD[36+r13] + vmovd xmm2,DWORD[36+r9] + vpinsrd xmm5,xmm5,DWORD[36+r14],1 + vpinsrd xmm0,xmm0,DWORD[36+r10],1 + vpinsrd xmm1,xmm1,DWORD[36+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[36+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm11,6 + vpslld ymm2,ymm11,26 + vmovdqu YMMWORD[(288-256-128)+rbx],ymm5 + vpaddd ymm5,ymm5,ymm14 + + vpsrld ymm1,ymm11,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm11,21 + vpaddd ymm5,ymm5,YMMWORD[((-96))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm11,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm11,7 + vpandn ymm0,ymm11,ymm13 + vpand ymm4,ymm11,ymm12 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm14,ymm15,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm15,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm8,ymm15 + + vpxor ymm14,ymm14,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm15,13 + + vpslld ymm2,ymm15,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm14,ymm1 + + vpsrld ymm1,ymm15,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm15,10 + vpxor ymm14,ymm8,ymm3 + vpaddd ymm10,ymm10,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm14,ymm14,ymm5 + vpaddd ymm14,ymm14,ymm7 + vmovd xmm5,DWORD[40+r12] + vmovd xmm0,DWORD[40+r8] + vmovd xmm1,DWORD[40+r13] + vmovd xmm2,DWORD[40+r9] + vpinsrd xmm5,xmm5,DWORD[40+r14],1 + vpinsrd xmm0,xmm0,DWORD[40+r10],1 + vpinsrd xmm1,xmm1,DWORD[40+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[40+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm10,6 + vpslld ymm2,ymm10,26 + vmovdqu YMMWORD[(320-256-128)+rbx],ymm5 + vpaddd ymm5,ymm5,ymm13 + + vpsrld ymm1,ymm10,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm10,21 + vpaddd ymm5,ymm5,YMMWORD[((-64))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm10,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm10,7 + vpandn ymm0,ymm10,ymm12 + vpand ymm3,ymm10,ymm11 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm13,ymm14,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm14,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm15,ymm14 + + vpxor ymm13,ymm13,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm14,13 + + vpslld ymm2,ymm14,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm13,ymm1 + + vpsrld ymm1,ymm14,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm14,10 + vpxor ymm13,ymm15,ymm4 + vpaddd ymm9,ymm9,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm13,ymm13,ymm5 + vpaddd ymm13,ymm13,ymm7 + vmovd xmm5,DWORD[44+r12] + vmovd xmm0,DWORD[44+r8] + vmovd xmm1,DWORD[44+r13] + vmovd xmm2,DWORD[44+r9] + vpinsrd xmm5,xmm5,DWORD[44+r14],1 + vpinsrd xmm0,xmm0,DWORD[44+r10],1 + vpinsrd xmm1,xmm1,DWORD[44+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[44+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm9,6 + vpslld ymm2,ymm9,26 + vmovdqu YMMWORD[(352-256-128)+rbx],ymm5 + vpaddd ymm5,ymm5,ymm12 + + vpsrld ymm1,ymm9,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm9,21 + vpaddd ymm5,ymm5,YMMWORD[((-32))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm9,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm9,7 + vpandn ymm0,ymm9,ymm11 + vpand ymm4,ymm9,ymm10 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm12,ymm13,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm13,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm14,ymm13 + + vpxor ymm12,ymm12,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm13,13 + + vpslld ymm2,ymm13,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm12,ymm1 + + vpsrld ymm1,ymm13,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm13,10 + vpxor ymm12,ymm14,ymm3 + vpaddd ymm8,ymm8,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm12,ymm12,ymm5 + vpaddd ymm12,ymm12,ymm7 + vmovd xmm5,DWORD[48+r12] + vmovd xmm0,DWORD[48+r8] + vmovd xmm1,DWORD[48+r13] + vmovd xmm2,DWORD[48+r9] + vpinsrd xmm5,xmm5,DWORD[48+r14],1 + vpinsrd xmm0,xmm0,DWORD[48+r10],1 + vpinsrd xmm1,xmm1,DWORD[48+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[48+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm8,6 + vpslld ymm2,ymm8,26 + vmovdqu YMMWORD[(384-256-128)+rbx],ymm5 + vpaddd ymm5,ymm5,ymm11 + + vpsrld ymm1,ymm8,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm8,21 + vpaddd ymm5,ymm5,YMMWORD[rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm8,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm8,7 + vpandn ymm0,ymm8,ymm10 + vpand ymm3,ymm8,ymm9 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm11,ymm12,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm12,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm13,ymm12 + + vpxor ymm11,ymm11,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm12,13 + + vpslld ymm2,ymm12,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm11,ymm1 + + vpsrld ymm1,ymm12,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm12,10 + vpxor ymm11,ymm13,ymm4 + vpaddd ymm15,ymm15,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm11,ymm11,ymm5 + vpaddd ymm11,ymm11,ymm7 + vmovd xmm5,DWORD[52+r12] + vmovd xmm0,DWORD[52+r8] + vmovd xmm1,DWORD[52+r13] + vmovd xmm2,DWORD[52+r9] + vpinsrd xmm5,xmm5,DWORD[52+r14],1 + vpinsrd xmm0,xmm0,DWORD[52+r10],1 + vpinsrd xmm1,xmm1,DWORD[52+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[52+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm15,6 + vpslld ymm2,ymm15,26 + vmovdqu YMMWORD[(416-256-128)+rbx],ymm5 + vpaddd ymm5,ymm5,ymm10 + + vpsrld ymm1,ymm15,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm15,21 + vpaddd ymm5,ymm5,YMMWORD[32+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm15,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm15,7 + vpandn ymm0,ymm15,ymm9 + vpand ymm4,ymm15,ymm8 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm10,ymm11,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm11,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm12,ymm11 + + vpxor ymm10,ymm10,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm11,13 + + vpslld ymm2,ymm11,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm10,ymm1 + + vpsrld ymm1,ymm11,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm11,10 + vpxor ymm10,ymm12,ymm3 + vpaddd ymm14,ymm14,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm10,ymm10,ymm5 + vpaddd ymm10,ymm10,ymm7 + vmovd xmm5,DWORD[56+r12] + vmovd xmm0,DWORD[56+r8] + vmovd xmm1,DWORD[56+r13] + vmovd xmm2,DWORD[56+r9] + vpinsrd xmm5,xmm5,DWORD[56+r14],1 + vpinsrd xmm0,xmm0,DWORD[56+r10],1 + vpinsrd xmm1,xmm1,DWORD[56+r15],1 + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[56+r11],1 + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm14,6 + vpslld ymm2,ymm14,26 + vmovdqu YMMWORD[(448-256-128)+rbx],ymm5 + vpaddd ymm5,ymm5,ymm9 + + vpsrld ymm1,ymm14,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm14,21 + vpaddd ymm5,ymm5,YMMWORD[64+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm14,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm14,7 + vpandn ymm0,ymm14,ymm8 + vpand ymm3,ymm14,ymm15 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm9,ymm10,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm10,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm11,ymm10 + + vpxor ymm9,ymm9,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm10,13 + + vpslld ymm2,ymm10,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm9,ymm1 + + vpsrld ymm1,ymm10,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm10,10 + vpxor ymm9,ymm11,ymm4 + vpaddd ymm13,ymm13,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm9,ymm9,ymm5 + vpaddd ymm9,ymm9,ymm7 + vmovd xmm5,DWORD[60+r12] + lea r12,[64+r12] + vmovd xmm0,DWORD[60+r8] + lea r8,[64+r8] + vmovd xmm1,DWORD[60+r13] + lea r13,[64+r13] + vmovd xmm2,DWORD[60+r9] + lea r9,[64+r9] + vpinsrd xmm5,xmm5,DWORD[60+r14],1 + lea r14,[64+r14] + vpinsrd xmm0,xmm0,DWORD[60+r10],1 + lea r10,[64+r10] + vpinsrd xmm1,xmm1,DWORD[60+r15],1 + lea r15,[64+r15] + vpunpckldq ymm5,ymm5,ymm1 + vpinsrd xmm2,xmm2,DWORD[60+r11],1 + lea r11,[64+r11] + vpunpckldq ymm0,ymm0,ymm2 + vinserti128 ymm5,ymm5,xmm0,1 + vpshufb ymm5,ymm5,ymm6 + vpsrld ymm7,ymm13,6 + vpslld ymm2,ymm13,26 + vmovdqu YMMWORD[(480-256-128)+rbx],ymm5 + vpaddd ymm5,ymm5,ymm8 + + vpsrld ymm1,ymm13,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm13,21 + vpaddd ymm5,ymm5,YMMWORD[96+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm13,25 + vpxor ymm7,ymm7,ymm2 + prefetcht0 [63+r12] + vpslld ymm2,ymm13,7 + vpandn ymm0,ymm13,ymm15 + vpand ymm4,ymm13,ymm14 + prefetcht0 [63+r13] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm8,ymm9,2 + vpxor ymm7,ymm7,ymm2 + prefetcht0 [63+r14] + vpslld ymm1,ymm9,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm10,ymm9 + prefetcht0 [63+r15] + vpxor ymm8,ymm8,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm9,13 + prefetcht0 [63+r8] + vpslld ymm2,ymm9,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm3,ymm3,ymm4 + prefetcht0 [63+r9] + vpxor ymm7,ymm8,ymm1 + + vpsrld ymm1,ymm9,22 + vpxor ymm7,ymm7,ymm2 + prefetcht0 [63+r10] + vpslld ymm2,ymm9,10 + vpxor ymm8,ymm10,ymm3 + vpaddd ymm12,ymm12,ymm5 + prefetcht0 [63+r11] + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm8,ymm8,ymm5 + vpaddd ymm8,ymm8,ymm7 + add rbp,256 + vmovdqu ymm5,YMMWORD[((0-128))+rax] + mov ecx,3 + jmp NEAR $L$oop_16_xx_avx2 +ALIGN 32 +$L$oop_16_xx_avx2: + vmovdqu ymm6,YMMWORD[((32-128))+rax] + vpaddd ymm5,ymm5,YMMWORD[((288-256-128))+rbx] + + vpsrld ymm7,ymm6,3 + vpsrld ymm1,ymm6,7 + vpslld ymm2,ymm6,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm6,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm6,14 + vmovdqu ymm0,YMMWORD[((448-256-128))+rbx] + vpsrld ymm3,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm5,ymm5,ymm7 + vpxor ymm7,ymm3,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm5,ymm5,ymm7 + vpsrld ymm7,ymm12,6 + vpslld ymm2,ymm12,26 + vmovdqu YMMWORD[(0-128)+rax],ymm5 + vpaddd ymm5,ymm5,ymm15 + + vpsrld ymm1,ymm12,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm12,21 + vpaddd ymm5,ymm5,YMMWORD[((-128))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm12,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm12,7 + vpandn ymm0,ymm12,ymm14 + vpand ymm3,ymm12,ymm13 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm15,ymm8,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm8,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm9,ymm8 + + vpxor ymm15,ymm15,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm8,13 + + vpslld ymm2,ymm8,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm15,ymm1 + + vpsrld ymm1,ymm8,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm8,10 + vpxor ymm15,ymm9,ymm4 + vpaddd ymm11,ymm11,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm15,ymm15,ymm5 + vpaddd ymm15,ymm15,ymm7 + vmovdqu ymm5,YMMWORD[((64-128))+rax] + vpaddd ymm6,ymm6,YMMWORD[((320-256-128))+rbx] + + vpsrld ymm7,ymm5,3 + vpsrld ymm1,ymm5,7 + vpslld ymm2,ymm5,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm5,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm5,14 + vmovdqu ymm0,YMMWORD[((480-256-128))+rbx] + vpsrld ymm4,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm6,ymm6,ymm7 + vpxor ymm7,ymm4,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm6,ymm6,ymm7 + vpsrld ymm7,ymm11,6 + vpslld ymm2,ymm11,26 + vmovdqu YMMWORD[(32-128)+rax],ymm6 + vpaddd ymm6,ymm6,ymm14 + + vpsrld ymm1,ymm11,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm11,21 + vpaddd ymm6,ymm6,YMMWORD[((-96))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm11,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm11,7 + vpandn ymm0,ymm11,ymm13 + vpand ymm4,ymm11,ymm12 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm14,ymm15,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm15,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm8,ymm15 + + vpxor ymm14,ymm14,ymm1 + vpaddd ymm6,ymm6,ymm7 + + vpsrld ymm1,ymm15,13 + + vpslld ymm2,ymm15,19 + vpaddd ymm6,ymm6,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm14,ymm1 + + vpsrld ymm1,ymm15,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm15,10 + vpxor ymm14,ymm8,ymm3 + vpaddd ymm10,ymm10,ymm6 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm14,ymm14,ymm6 + vpaddd ymm14,ymm14,ymm7 + vmovdqu ymm6,YMMWORD[((96-128))+rax] + vpaddd ymm5,ymm5,YMMWORD[((352-256-128))+rbx] + + vpsrld ymm7,ymm6,3 + vpsrld ymm1,ymm6,7 + vpslld ymm2,ymm6,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm6,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm6,14 + vmovdqu ymm0,YMMWORD[((0-128))+rax] + vpsrld ymm3,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm5,ymm5,ymm7 + vpxor ymm7,ymm3,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm5,ymm5,ymm7 + vpsrld ymm7,ymm10,6 + vpslld ymm2,ymm10,26 + vmovdqu YMMWORD[(64-128)+rax],ymm5 + vpaddd ymm5,ymm5,ymm13 + + vpsrld ymm1,ymm10,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm10,21 + vpaddd ymm5,ymm5,YMMWORD[((-64))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm10,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm10,7 + vpandn ymm0,ymm10,ymm12 + vpand ymm3,ymm10,ymm11 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm13,ymm14,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm14,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm15,ymm14 + + vpxor ymm13,ymm13,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm14,13 + + vpslld ymm2,ymm14,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm13,ymm1 + + vpsrld ymm1,ymm14,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm14,10 + vpxor ymm13,ymm15,ymm4 + vpaddd ymm9,ymm9,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm13,ymm13,ymm5 + vpaddd ymm13,ymm13,ymm7 + vmovdqu ymm5,YMMWORD[((128-128))+rax] + vpaddd ymm6,ymm6,YMMWORD[((384-256-128))+rbx] + + vpsrld ymm7,ymm5,3 + vpsrld ymm1,ymm5,7 + vpslld ymm2,ymm5,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm5,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm5,14 + vmovdqu ymm0,YMMWORD[((32-128))+rax] + vpsrld ymm4,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm6,ymm6,ymm7 + vpxor ymm7,ymm4,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm6,ymm6,ymm7 + vpsrld ymm7,ymm9,6 + vpslld ymm2,ymm9,26 + vmovdqu YMMWORD[(96-128)+rax],ymm6 + vpaddd ymm6,ymm6,ymm12 + + vpsrld ymm1,ymm9,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm9,21 + vpaddd ymm6,ymm6,YMMWORD[((-32))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm9,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm9,7 + vpandn ymm0,ymm9,ymm11 + vpand ymm4,ymm9,ymm10 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm12,ymm13,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm13,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm14,ymm13 + + vpxor ymm12,ymm12,ymm1 + vpaddd ymm6,ymm6,ymm7 + + vpsrld ymm1,ymm13,13 + + vpslld ymm2,ymm13,19 + vpaddd ymm6,ymm6,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm12,ymm1 + + vpsrld ymm1,ymm13,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm13,10 + vpxor ymm12,ymm14,ymm3 + vpaddd ymm8,ymm8,ymm6 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm12,ymm12,ymm6 + vpaddd ymm12,ymm12,ymm7 + vmovdqu ymm6,YMMWORD[((160-128))+rax] + vpaddd ymm5,ymm5,YMMWORD[((416-256-128))+rbx] + + vpsrld ymm7,ymm6,3 + vpsrld ymm1,ymm6,7 + vpslld ymm2,ymm6,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm6,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm6,14 + vmovdqu ymm0,YMMWORD[((64-128))+rax] + vpsrld ymm3,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm5,ymm5,ymm7 + vpxor ymm7,ymm3,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm5,ymm5,ymm7 + vpsrld ymm7,ymm8,6 + vpslld ymm2,ymm8,26 + vmovdqu YMMWORD[(128-128)+rax],ymm5 + vpaddd ymm5,ymm5,ymm11 + + vpsrld ymm1,ymm8,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm8,21 + vpaddd ymm5,ymm5,YMMWORD[rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm8,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm8,7 + vpandn ymm0,ymm8,ymm10 + vpand ymm3,ymm8,ymm9 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm11,ymm12,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm12,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm13,ymm12 + + vpxor ymm11,ymm11,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm12,13 + + vpslld ymm2,ymm12,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm11,ymm1 + + vpsrld ymm1,ymm12,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm12,10 + vpxor ymm11,ymm13,ymm4 + vpaddd ymm15,ymm15,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm11,ymm11,ymm5 + vpaddd ymm11,ymm11,ymm7 + vmovdqu ymm5,YMMWORD[((192-128))+rax] + vpaddd ymm6,ymm6,YMMWORD[((448-256-128))+rbx] + + vpsrld ymm7,ymm5,3 + vpsrld ymm1,ymm5,7 + vpslld ymm2,ymm5,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm5,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm5,14 + vmovdqu ymm0,YMMWORD[((96-128))+rax] + vpsrld ymm4,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm6,ymm6,ymm7 + vpxor ymm7,ymm4,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm6,ymm6,ymm7 + vpsrld ymm7,ymm15,6 + vpslld ymm2,ymm15,26 + vmovdqu YMMWORD[(160-128)+rax],ymm6 + vpaddd ymm6,ymm6,ymm10 + + vpsrld ymm1,ymm15,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm15,21 + vpaddd ymm6,ymm6,YMMWORD[32+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm15,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm15,7 + vpandn ymm0,ymm15,ymm9 + vpand ymm4,ymm15,ymm8 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm10,ymm11,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm11,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm12,ymm11 + + vpxor ymm10,ymm10,ymm1 + vpaddd ymm6,ymm6,ymm7 + + vpsrld ymm1,ymm11,13 + + vpslld ymm2,ymm11,19 + vpaddd ymm6,ymm6,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm10,ymm1 + + vpsrld ymm1,ymm11,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm11,10 + vpxor ymm10,ymm12,ymm3 + vpaddd ymm14,ymm14,ymm6 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm10,ymm10,ymm6 + vpaddd ymm10,ymm10,ymm7 + vmovdqu ymm6,YMMWORD[((224-128))+rax] + vpaddd ymm5,ymm5,YMMWORD[((480-256-128))+rbx] + + vpsrld ymm7,ymm6,3 + vpsrld ymm1,ymm6,7 + vpslld ymm2,ymm6,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm6,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm6,14 + vmovdqu ymm0,YMMWORD[((128-128))+rax] + vpsrld ymm3,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm5,ymm5,ymm7 + vpxor ymm7,ymm3,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm5,ymm5,ymm7 + vpsrld ymm7,ymm14,6 + vpslld ymm2,ymm14,26 + vmovdqu YMMWORD[(192-128)+rax],ymm5 + vpaddd ymm5,ymm5,ymm9 + + vpsrld ymm1,ymm14,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm14,21 + vpaddd ymm5,ymm5,YMMWORD[64+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm14,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm14,7 + vpandn ymm0,ymm14,ymm8 + vpand ymm3,ymm14,ymm15 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm9,ymm10,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm10,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm11,ymm10 + + vpxor ymm9,ymm9,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm10,13 + + vpslld ymm2,ymm10,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm9,ymm1 + + vpsrld ymm1,ymm10,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm10,10 + vpxor ymm9,ymm11,ymm4 + vpaddd ymm13,ymm13,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm9,ymm9,ymm5 + vpaddd ymm9,ymm9,ymm7 + vmovdqu ymm5,YMMWORD[((256-256-128))+rbx] + vpaddd ymm6,ymm6,YMMWORD[((0-128))+rax] + + vpsrld ymm7,ymm5,3 + vpsrld ymm1,ymm5,7 + vpslld ymm2,ymm5,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm5,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm5,14 + vmovdqu ymm0,YMMWORD[((160-128))+rax] + vpsrld ymm4,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm6,ymm6,ymm7 + vpxor ymm7,ymm4,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm6,ymm6,ymm7 + vpsrld ymm7,ymm13,6 + vpslld ymm2,ymm13,26 + vmovdqu YMMWORD[(224-128)+rax],ymm6 + vpaddd ymm6,ymm6,ymm8 + + vpsrld ymm1,ymm13,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm13,21 + vpaddd ymm6,ymm6,YMMWORD[96+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm13,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm13,7 + vpandn ymm0,ymm13,ymm15 + vpand ymm4,ymm13,ymm14 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm8,ymm9,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm9,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm10,ymm9 + + vpxor ymm8,ymm8,ymm1 + vpaddd ymm6,ymm6,ymm7 + + vpsrld ymm1,ymm9,13 + + vpslld ymm2,ymm9,19 + vpaddd ymm6,ymm6,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm8,ymm1 + + vpsrld ymm1,ymm9,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm9,10 + vpxor ymm8,ymm10,ymm3 + vpaddd ymm12,ymm12,ymm6 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm8,ymm8,ymm6 + vpaddd ymm8,ymm8,ymm7 + add rbp,256 + vmovdqu ymm6,YMMWORD[((288-256-128))+rbx] + vpaddd ymm5,ymm5,YMMWORD[((32-128))+rax] + + vpsrld ymm7,ymm6,3 + vpsrld ymm1,ymm6,7 + vpslld ymm2,ymm6,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm6,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm6,14 + vmovdqu ymm0,YMMWORD[((192-128))+rax] + vpsrld ymm3,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm5,ymm5,ymm7 + vpxor ymm7,ymm3,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm5,ymm5,ymm7 + vpsrld ymm7,ymm12,6 + vpslld ymm2,ymm12,26 + vmovdqu YMMWORD[(256-256-128)+rbx],ymm5 + vpaddd ymm5,ymm5,ymm15 + + vpsrld ymm1,ymm12,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm12,21 + vpaddd ymm5,ymm5,YMMWORD[((-128))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm12,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm12,7 + vpandn ymm0,ymm12,ymm14 + vpand ymm3,ymm12,ymm13 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm15,ymm8,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm8,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm9,ymm8 + + vpxor ymm15,ymm15,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm8,13 + + vpslld ymm2,ymm8,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm15,ymm1 + + vpsrld ymm1,ymm8,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm8,10 + vpxor ymm15,ymm9,ymm4 + vpaddd ymm11,ymm11,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm15,ymm15,ymm5 + vpaddd ymm15,ymm15,ymm7 + vmovdqu ymm5,YMMWORD[((320-256-128))+rbx] + vpaddd ymm6,ymm6,YMMWORD[((64-128))+rax] + + vpsrld ymm7,ymm5,3 + vpsrld ymm1,ymm5,7 + vpslld ymm2,ymm5,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm5,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm5,14 + vmovdqu ymm0,YMMWORD[((224-128))+rax] + vpsrld ymm4,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm6,ymm6,ymm7 + vpxor ymm7,ymm4,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm6,ymm6,ymm7 + vpsrld ymm7,ymm11,6 + vpslld ymm2,ymm11,26 + vmovdqu YMMWORD[(288-256-128)+rbx],ymm6 + vpaddd ymm6,ymm6,ymm14 + + vpsrld ymm1,ymm11,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm11,21 + vpaddd ymm6,ymm6,YMMWORD[((-96))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm11,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm11,7 + vpandn ymm0,ymm11,ymm13 + vpand ymm4,ymm11,ymm12 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm14,ymm15,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm15,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm8,ymm15 + + vpxor ymm14,ymm14,ymm1 + vpaddd ymm6,ymm6,ymm7 + + vpsrld ymm1,ymm15,13 + + vpslld ymm2,ymm15,19 + vpaddd ymm6,ymm6,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm14,ymm1 + + vpsrld ymm1,ymm15,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm15,10 + vpxor ymm14,ymm8,ymm3 + vpaddd ymm10,ymm10,ymm6 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm14,ymm14,ymm6 + vpaddd ymm14,ymm14,ymm7 + vmovdqu ymm6,YMMWORD[((352-256-128))+rbx] + vpaddd ymm5,ymm5,YMMWORD[((96-128))+rax] + + vpsrld ymm7,ymm6,3 + vpsrld ymm1,ymm6,7 + vpslld ymm2,ymm6,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm6,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm6,14 + vmovdqu ymm0,YMMWORD[((256-256-128))+rbx] + vpsrld ymm3,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm5,ymm5,ymm7 + vpxor ymm7,ymm3,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm5,ymm5,ymm7 + vpsrld ymm7,ymm10,6 + vpslld ymm2,ymm10,26 + vmovdqu YMMWORD[(320-256-128)+rbx],ymm5 + vpaddd ymm5,ymm5,ymm13 + + vpsrld ymm1,ymm10,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm10,21 + vpaddd ymm5,ymm5,YMMWORD[((-64))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm10,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm10,7 + vpandn ymm0,ymm10,ymm12 + vpand ymm3,ymm10,ymm11 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm13,ymm14,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm14,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm15,ymm14 + + vpxor ymm13,ymm13,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm14,13 + + vpslld ymm2,ymm14,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm13,ymm1 + + vpsrld ymm1,ymm14,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm14,10 + vpxor ymm13,ymm15,ymm4 + vpaddd ymm9,ymm9,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm13,ymm13,ymm5 + vpaddd ymm13,ymm13,ymm7 + vmovdqu ymm5,YMMWORD[((384-256-128))+rbx] + vpaddd ymm6,ymm6,YMMWORD[((128-128))+rax] + + vpsrld ymm7,ymm5,3 + vpsrld ymm1,ymm5,7 + vpslld ymm2,ymm5,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm5,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm5,14 + vmovdqu ymm0,YMMWORD[((288-256-128))+rbx] + vpsrld ymm4,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm6,ymm6,ymm7 + vpxor ymm7,ymm4,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm6,ymm6,ymm7 + vpsrld ymm7,ymm9,6 + vpslld ymm2,ymm9,26 + vmovdqu YMMWORD[(352-256-128)+rbx],ymm6 + vpaddd ymm6,ymm6,ymm12 + + vpsrld ymm1,ymm9,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm9,21 + vpaddd ymm6,ymm6,YMMWORD[((-32))+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm9,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm9,7 + vpandn ymm0,ymm9,ymm11 + vpand ymm4,ymm9,ymm10 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm12,ymm13,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm13,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm14,ymm13 + + vpxor ymm12,ymm12,ymm1 + vpaddd ymm6,ymm6,ymm7 + + vpsrld ymm1,ymm13,13 + + vpslld ymm2,ymm13,19 + vpaddd ymm6,ymm6,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm12,ymm1 + + vpsrld ymm1,ymm13,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm13,10 + vpxor ymm12,ymm14,ymm3 + vpaddd ymm8,ymm8,ymm6 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm12,ymm12,ymm6 + vpaddd ymm12,ymm12,ymm7 + vmovdqu ymm6,YMMWORD[((416-256-128))+rbx] + vpaddd ymm5,ymm5,YMMWORD[((160-128))+rax] + + vpsrld ymm7,ymm6,3 + vpsrld ymm1,ymm6,7 + vpslld ymm2,ymm6,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm6,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm6,14 + vmovdqu ymm0,YMMWORD[((320-256-128))+rbx] + vpsrld ymm3,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm5,ymm5,ymm7 + vpxor ymm7,ymm3,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm5,ymm5,ymm7 + vpsrld ymm7,ymm8,6 + vpslld ymm2,ymm8,26 + vmovdqu YMMWORD[(384-256-128)+rbx],ymm5 + vpaddd ymm5,ymm5,ymm11 + + vpsrld ymm1,ymm8,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm8,21 + vpaddd ymm5,ymm5,YMMWORD[rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm8,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm8,7 + vpandn ymm0,ymm8,ymm10 + vpand ymm3,ymm8,ymm9 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm11,ymm12,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm12,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm13,ymm12 + + vpxor ymm11,ymm11,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm12,13 + + vpslld ymm2,ymm12,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm11,ymm1 + + vpsrld ymm1,ymm12,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm12,10 + vpxor ymm11,ymm13,ymm4 + vpaddd ymm15,ymm15,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm11,ymm11,ymm5 + vpaddd ymm11,ymm11,ymm7 + vmovdqu ymm5,YMMWORD[((448-256-128))+rbx] + vpaddd ymm6,ymm6,YMMWORD[((192-128))+rax] + + vpsrld ymm7,ymm5,3 + vpsrld ymm1,ymm5,7 + vpslld ymm2,ymm5,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm5,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm5,14 + vmovdqu ymm0,YMMWORD[((352-256-128))+rbx] + vpsrld ymm4,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm6,ymm6,ymm7 + vpxor ymm7,ymm4,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm6,ymm6,ymm7 + vpsrld ymm7,ymm15,6 + vpslld ymm2,ymm15,26 + vmovdqu YMMWORD[(416-256-128)+rbx],ymm6 + vpaddd ymm6,ymm6,ymm10 + + vpsrld ymm1,ymm15,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm15,21 + vpaddd ymm6,ymm6,YMMWORD[32+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm15,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm15,7 + vpandn ymm0,ymm15,ymm9 + vpand ymm4,ymm15,ymm8 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm10,ymm11,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm11,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm12,ymm11 + + vpxor ymm10,ymm10,ymm1 + vpaddd ymm6,ymm6,ymm7 + + vpsrld ymm1,ymm11,13 + + vpslld ymm2,ymm11,19 + vpaddd ymm6,ymm6,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm10,ymm1 + + vpsrld ymm1,ymm11,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm11,10 + vpxor ymm10,ymm12,ymm3 + vpaddd ymm14,ymm14,ymm6 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm10,ymm10,ymm6 + vpaddd ymm10,ymm10,ymm7 + vmovdqu ymm6,YMMWORD[((480-256-128))+rbx] + vpaddd ymm5,ymm5,YMMWORD[((224-128))+rax] + + vpsrld ymm7,ymm6,3 + vpsrld ymm1,ymm6,7 + vpslld ymm2,ymm6,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm6,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm6,14 + vmovdqu ymm0,YMMWORD[((384-256-128))+rbx] + vpsrld ymm3,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm5,ymm5,ymm7 + vpxor ymm7,ymm3,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm5,ymm5,ymm7 + vpsrld ymm7,ymm14,6 + vpslld ymm2,ymm14,26 + vmovdqu YMMWORD[(448-256-128)+rbx],ymm5 + vpaddd ymm5,ymm5,ymm9 + + vpsrld ymm1,ymm14,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm14,21 + vpaddd ymm5,ymm5,YMMWORD[64+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm14,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm14,7 + vpandn ymm0,ymm14,ymm8 + vpand ymm3,ymm14,ymm15 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm9,ymm10,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm10,30 + vpxor ymm0,ymm0,ymm3 + vpxor ymm3,ymm11,ymm10 + + vpxor ymm9,ymm9,ymm1 + vpaddd ymm5,ymm5,ymm7 + + vpsrld ymm1,ymm10,13 + + vpslld ymm2,ymm10,19 + vpaddd ymm5,ymm5,ymm0 + vpand ymm4,ymm4,ymm3 + + vpxor ymm7,ymm9,ymm1 + + vpsrld ymm1,ymm10,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm10,10 + vpxor ymm9,ymm11,ymm4 + vpaddd ymm13,ymm13,ymm5 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm9,ymm9,ymm5 + vpaddd ymm9,ymm9,ymm7 + vmovdqu ymm5,YMMWORD[((0-128))+rax] + vpaddd ymm6,ymm6,YMMWORD[((256-256-128))+rbx] + + vpsrld ymm7,ymm5,3 + vpsrld ymm1,ymm5,7 + vpslld ymm2,ymm5,25 + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm5,18 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm5,14 + vmovdqu ymm0,YMMWORD[((416-256-128))+rbx] + vpsrld ymm4,ymm0,10 + + vpxor ymm7,ymm7,ymm1 + vpsrld ymm1,ymm0,17 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,15 + vpaddd ymm6,ymm6,ymm7 + vpxor ymm7,ymm4,ymm1 + vpsrld ymm1,ymm0,19 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm0,13 + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + vpaddd ymm6,ymm6,ymm7 + vpsrld ymm7,ymm13,6 + vpslld ymm2,ymm13,26 + vmovdqu YMMWORD[(480-256-128)+rbx],ymm6 + vpaddd ymm6,ymm6,ymm8 + + vpsrld ymm1,ymm13,11 + vpxor ymm7,ymm7,ymm2 + vpslld ymm2,ymm13,21 + vpaddd ymm6,ymm6,YMMWORD[96+rbp] + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm1,ymm13,25 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm13,7 + vpandn ymm0,ymm13,ymm15 + vpand ymm4,ymm13,ymm14 + + vpxor ymm7,ymm7,ymm1 + + vpsrld ymm8,ymm9,2 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm1,ymm9,30 + vpxor ymm0,ymm0,ymm4 + vpxor ymm4,ymm10,ymm9 + + vpxor ymm8,ymm8,ymm1 + vpaddd ymm6,ymm6,ymm7 + + vpsrld ymm1,ymm9,13 + + vpslld ymm2,ymm9,19 + vpaddd ymm6,ymm6,ymm0 + vpand ymm3,ymm3,ymm4 + + vpxor ymm7,ymm8,ymm1 + + vpsrld ymm1,ymm9,22 + vpxor ymm7,ymm7,ymm2 + + vpslld ymm2,ymm9,10 + vpxor ymm8,ymm10,ymm3 + vpaddd ymm12,ymm12,ymm6 + + vpxor ymm7,ymm7,ymm1 + vpxor ymm7,ymm7,ymm2 + + vpaddd ymm8,ymm8,ymm6 + vpaddd ymm8,ymm8,ymm7 + add rbp,256 + dec ecx + jnz NEAR $L$oop_16_xx_avx2 + + mov ecx,1 + lea rbx,[512+rsp] + lea rbp,[((K256+128))] + cmp ecx,DWORD[rbx] + cmovge r12,rbp + cmp ecx,DWORD[4+rbx] + cmovge r13,rbp + cmp ecx,DWORD[8+rbx] + cmovge r14,rbp + cmp ecx,DWORD[12+rbx] + cmovge r15,rbp + cmp ecx,DWORD[16+rbx] + cmovge r8,rbp + cmp ecx,DWORD[20+rbx] + cmovge r9,rbp + cmp ecx,DWORD[24+rbx] + cmovge r10,rbp + cmp ecx,DWORD[28+rbx] + cmovge r11,rbp + vmovdqa ymm7,YMMWORD[rbx] + vpxor ymm0,ymm0,ymm0 + vmovdqa ymm6,ymm7 + vpcmpgtd ymm6,ymm6,ymm0 + vpaddd ymm7,ymm7,ymm6 + + vmovdqu ymm0,YMMWORD[((0-128))+rdi] + vpand ymm8,ymm8,ymm6 + vmovdqu ymm1,YMMWORD[((32-128))+rdi] + vpand ymm9,ymm9,ymm6 + vmovdqu ymm2,YMMWORD[((64-128))+rdi] + vpand ymm10,ymm10,ymm6 + vmovdqu ymm5,YMMWORD[((96-128))+rdi] + vpand ymm11,ymm11,ymm6 + vpaddd ymm8,ymm8,ymm0 + vmovdqu ymm0,YMMWORD[((128-128))+rdi] + vpand ymm12,ymm12,ymm6 + vpaddd ymm9,ymm9,ymm1 + vmovdqu ymm1,YMMWORD[((160-128))+rdi] + vpand ymm13,ymm13,ymm6 + vpaddd ymm10,ymm10,ymm2 + vmovdqu ymm2,YMMWORD[((192-128))+rdi] + vpand ymm14,ymm14,ymm6 + vpaddd ymm11,ymm11,ymm5 + vmovdqu ymm5,YMMWORD[((224-128))+rdi] + vpand ymm15,ymm15,ymm6 + vpaddd ymm12,ymm12,ymm0 + vpaddd ymm13,ymm13,ymm1 + vmovdqu YMMWORD[(0-128)+rdi],ymm8 + vpaddd ymm14,ymm14,ymm2 + vmovdqu YMMWORD[(32-128)+rdi],ymm9 + vpaddd ymm15,ymm15,ymm5 + vmovdqu YMMWORD[(64-128)+rdi],ymm10 + vmovdqu YMMWORD[(96-128)+rdi],ymm11 + vmovdqu YMMWORD[(128-128)+rdi],ymm12 + vmovdqu YMMWORD[(160-128)+rdi],ymm13 + vmovdqu YMMWORD[(192-128)+rdi],ymm14 + vmovdqu YMMWORD[(224-128)+rdi],ymm15 + + vmovdqu YMMWORD[rbx],ymm7 + lea rbx,[((256+128))+rsp] + vmovdqu ymm6,YMMWORD[$L$pbswap] + dec edx + jnz NEAR $L$oop_avx2 + + + + + + + +$L$done_avx2: + mov rax,QWORD[544+rsp] + + vzeroupper + movaps xmm6,XMMWORD[((-216))+rax] + movaps xmm7,XMMWORD[((-200))+rax] + movaps xmm8,XMMWORD[((-184))+rax] + movaps xmm9,XMMWORD[((-168))+rax] + movaps xmm10,XMMWORD[((-152))+rax] + movaps xmm11,XMMWORD[((-136))+rax] + movaps xmm12,XMMWORD[((-120))+rax] + movaps xmm13,XMMWORD[((-104))+rax] + movaps xmm14,XMMWORD[((-88))+rax] + movaps xmm15,XMMWORD[((-72))+rax] + mov r15,QWORD[((-48))+rax] + + mov r14,QWORD[((-40))+rax] + + mov r13,QWORD[((-32))+rax] + + mov r12,QWORD[((-24))+rax] + + mov rbp,QWORD[((-16))+rax] + + mov rbx,QWORD[((-8))+rax] + + lea rsp,[rax] + +$L$epilogue_avx2: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha256_multi_block_avx2: +ALIGN 256 +K256: + DD 1116352408,1116352408,1116352408,1116352408 + DD 1116352408,1116352408,1116352408,1116352408 + DD 1899447441,1899447441,1899447441,1899447441 + DD 1899447441,1899447441,1899447441,1899447441 + DD 3049323471,3049323471,3049323471,3049323471 + DD 3049323471,3049323471,3049323471,3049323471 + DD 3921009573,3921009573,3921009573,3921009573 + DD 3921009573,3921009573,3921009573,3921009573 + DD 961987163,961987163,961987163,961987163 + DD 961987163,961987163,961987163,961987163 + DD 1508970993,1508970993,1508970993,1508970993 + DD 1508970993,1508970993,1508970993,1508970993 + DD 2453635748,2453635748,2453635748,2453635748 + DD 2453635748,2453635748,2453635748,2453635748 + DD 2870763221,2870763221,2870763221,2870763221 + DD 2870763221,2870763221,2870763221,2870763221 + DD 3624381080,3624381080,3624381080,3624381080 + DD 3624381080,3624381080,3624381080,3624381080 + DD 310598401,310598401,310598401,310598401 + DD 310598401,310598401,310598401,310598401 + DD 607225278,607225278,607225278,607225278 + DD 607225278,607225278,607225278,607225278 + DD 1426881987,1426881987,1426881987,1426881987 + DD 1426881987,1426881987,1426881987,1426881987 + DD 1925078388,1925078388,1925078388,1925078388 + DD 1925078388,1925078388,1925078388,1925078388 + DD 2162078206,2162078206,2162078206,2162078206 + DD 2162078206,2162078206,2162078206,2162078206 + DD 2614888103,2614888103,2614888103,2614888103 + DD 2614888103,2614888103,2614888103,2614888103 + DD 3248222580,3248222580,3248222580,3248222580 + DD 3248222580,3248222580,3248222580,3248222580 + DD 3835390401,3835390401,3835390401,3835390401 + DD 3835390401,3835390401,3835390401,3835390401 + DD 4022224774,4022224774,4022224774,4022224774 + DD 4022224774,4022224774,4022224774,4022224774 + DD 264347078,264347078,264347078,264347078 + DD 264347078,264347078,264347078,264347078 + DD 604807628,604807628,604807628,604807628 + DD 604807628,604807628,604807628,604807628 + DD 770255983,770255983,770255983,770255983 + DD 770255983,770255983,770255983,770255983 + DD 1249150122,1249150122,1249150122,1249150122 + DD 1249150122,1249150122,1249150122,1249150122 + DD 1555081692,1555081692,1555081692,1555081692 + DD 1555081692,1555081692,1555081692,1555081692 + DD 1996064986,1996064986,1996064986,1996064986 + DD 1996064986,1996064986,1996064986,1996064986 + DD 2554220882,2554220882,2554220882,2554220882 + DD 2554220882,2554220882,2554220882,2554220882 + DD 2821834349,2821834349,2821834349,2821834349 + DD 2821834349,2821834349,2821834349,2821834349 + DD 2952996808,2952996808,2952996808,2952996808 + DD 2952996808,2952996808,2952996808,2952996808 + DD 3210313671,3210313671,3210313671,3210313671 + DD 3210313671,3210313671,3210313671,3210313671 + DD 3336571891,3336571891,3336571891,3336571891 + DD 3336571891,3336571891,3336571891,3336571891 + DD 3584528711,3584528711,3584528711,3584528711 + DD 3584528711,3584528711,3584528711,3584528711 + DD 113926993,113926993,113926993,113926993 + DD 113926993,113926993,113926993,113926993 + DD 338241895,338241895,338241895,338241895 + DD 338241895,338241895,338241895,338241895 + DD 666307205,666307205,666307205,666307205 + DD 666307205,666307205,666307205,666307205 + DD 773529912,773529912,773529912,773529912 + DD 773529912,773529912,773529912,773529912 + DD 1294757372,1294757372,1294757372,1294757372 + DD 1294757372,1294757372,1294757372,1294757372 + DD 1396182291,1396182291,1396182291,1396182291 + DD 1396182291,1396182291,1396182291,1396182291 + DD 1695183700,1695183700,1695183700,1695183700 + DD 1695183700,1695183700,1695183700,1695183700 + DD 1986661051,1986661051,1986661051,1986661051 + DD 1986661051,1986661051,1986661051,1986661051 + DD 2177026350,2177026350,2177026350,2177026350 + DD 2177026350,2177026350,2177026350,2177026350 + DD 2456956037,2456956037,2456956037,2456956037 + DD 2456956037,2456956037,2456956037,2456956037 + DD 2730485921,2730485921,2730485921,2730485921 + DD 2730485921,2730485921,2730485921,2730485921 + DD 2820302411,2820302411,2820302411,2820302411 + DD 2820302411,2820302411,2820302411,2820302411 + DD 3259730800,3259730800,3259730800,3259730800 + DD 3259730800,3259730800,3259730800,3259730800 + DD 3345764771,3345764771,3345764771,3345764771 + DD 3345764771,3345764771,3345764771,3345764771 + DD 3516065817,3516065817,3516065817,3516065817 + DD 3516065817,3516065817,3516065817,3516065817 + DD 3600352804,3600352804,3600352804,3600352804 + DD 3600352804,3600352804,3600352804,3600352804 + DD 4094571909,4094571909,4094571909,4094571909 + DD 4094571909,4094571909,4094571909,4094571909 + DD 275423344,275423344,275423344,275423344 + DD 275423344,275423344,275423344,275423344 + DD 430227734,430227734,430227734,430227734 + DD 430227734,430227734,430227734,430227734 + DD 506948616,506948616,506948616,506948616 + DD 506948616,506948616,506948616,506948616 + DD 659060556,659060556,659060556,659060556 + DD 659060556,659060556,659060556,659060556 + DD 883997877,883997877,883997877,883997877 + DD 883997877,883997877,883997877,883997877 + DD 958139571,958139571,958139571,958139571 + DD 958139571,958139571,958139571,958139571 + DD 1322822218,1322822218,1322822218,1322822218 + DD 1322822218,1322822218,1322822218,1322822218 + DD 1537002063,1537002063,1537002063,1537002063 + DD 1537002063,1537002063,1537002063,1537002063 + DD 1747873779,1747873779,1747873779,1747873779 + DD 1747873779,1747873779,1747873779,1747873779 + DD 1955562222,1955562222,1955562222,1955562222 + DD 1955562222,1955562222,1955562222,1955562222 + DD 2024104815,2024104815,2024104815,2024104815 + DD 2024104815,2024104815,2024104815,2024104815 + DD 2227730452,2227730452,2227730452,2227730452 + DD 2227730452,2227730452,2227730452,2227730452 + DD 2361852424,2361852424,2361852424,2361852424 + DD 2361852424,2361852424,2361852424,2361852424 + DD 2428436474,2428436474,2428436474,2428436474 + DD 2428436474,2428436474,2428436474,2428436474 + DD 2756734187,2756734187,2756734187,2756734187 + DD 2756734187,2756734187,2756734187,2756734187 + DD 3204031479,3204031479,3204031479,3204031479 + DD 3204031479,3204031479,3204031479,3204031479 + DD 3329325298,3329325298,3329325298,3329325298 + DD 3329325298,3329325298,3329325298,3329325298 +$L$pbswap: + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f +K256_shaext: + DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 + DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 + DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 + DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 + DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc + DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da + DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 + DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 + DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 + DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 + DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 + DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 + DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 + DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 + DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 + DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 +DB 83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111 +DB 99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114 +DB 32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71 +DB 65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112 +DB 101,110,115,115,108,46,111,114,103,62,0 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$in_prologue + + mov rax,QWORD[272+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + + lea rsi,[((-24-160))+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +ALIGN 16 +avx2_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$in_prologue + + mov rax,QWORD[544+r8] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + + lea rsi,[((-56-160))+rax] + lea rdi,[512+r8] + mov ecx,20 + DD 0xa548f3fc + + jmp NEAR $L$in_prologue + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_sha256_multi_block wrt ..imagebase + DD $L$SEH_end_sha256_multi_block wrt ..imagebase + DD $L$SEH_info_sha256_multi_block wrt ..imagebase + DD $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase + DD $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase + DD $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase + DD $L$SEH_begin_sha256_multi_block_avx wrt ..imagebase + DD $L$SEH_end_sha256_multi_block_avx wrt ..imagebase + DD $L$SEH_info_sha256_multi_block_avx wrt ..imagebase + DD $L$SEH_begin_sha256_multi_block_avx2 wrt ..imagebase + DD $L$SEH_end_sha256_multi_block_avx2 wrt ..imagebase + DD $L$SEH_info_sha256_multi_block_avx2 wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_sha256_multi_block: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase +$L$SEH_info_sha256_multi_block_shaext: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$body_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase +$L$SEH_info_sha256_multi_block_avx: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$body_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase +$L$SEH_info_sha256_multi_block_avx2: +DB 9,0,0,0 + DD avx2_handler wrt ..imagebase + DD $L$body_avx2 wrt ..imagebase,$L$epilogue_avx2 wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha256-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha256-x86_64.asm new file mode 100644 index 0000000..9ff3cbb --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha256-x86_64.asm @@ -0,0 +1,5711 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +EXTERN OPENSSL_ia32cap_P +global sha256_block_data_order + +ALIGN 16 +sha256_block_data_order: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha256_block_data_order: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + lea r11,[OPENSSL_ia32cap_P] + mov r9d,DWORD[r11] + mov r10d,DWORD[4+r11] + mov r11d,DWORD[8+r11] + test r11d,536870912 + jnz NEAR _shaext_shortcut + and r11d,296 + cmp r11d,296 + je NEAR $L$avx2_shortcut + and r9d,1073741824 + and r10d,268435968 + or r10d,r9d + cmp r10d,1342177792 + je NEAR $L$avx_shortcut + test r10d,512 + jnz NEAR $L$ssse3_shortcut + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + shl rdx,4 + sub rsp,16*4+4*8 + lea rdx,[rdx*4+rsi] + and rsp,-64 + mov QWORD[((64+0))+rsp],rdi + mov QWORD[((64+8))+rsp],rsi + mov QWORD[((64+16))+rsp],rdx + mov QWORD[88+rsp],rax + +$L$prologue: + + mov eax,DWORD[rdi] + mov ebx,DWORD[4+rdi] + mov ecx,DWORD[8+rdi] + mov edx,DWORD[12+rdi] + mov r8d,DWORD[16+rdi] + mov r9d,DWORD[20+rdi] + mov r10d,DWORD[24+rdi] + mov r11d,DWORD[28+rdi] + jmp NEAR $L$loop + +ALIGN 16 +$L$loop: + mov edi,ebx + lea rbp,[K256] + xor edi,ecx + mov r12d,DWORD[rsi] + mov r13d,r8d + mov r14d,eax + bswap r12d + ror r13d,14 + mov r15d,r9d + + xor r13d,r8d + ror r14d,9 + xor r15d,r10d + + mov DWORD[rsp],r12d + xor r14d,eax + and r15d,r8d + + ror r13d,5 + add r12d,r11d + xor r15d,r10d + + ror r14d,11 + xor r13d,r8d + add r12d,r15d + + mov r15d,eax + add r12d,DWORD[rbp] + xor r14d,eax + + xor r15d,ebx + ror r13d,6 + mov r11d,ebx + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor r11d,edi + add edx,r12d + add r11d,r12d + + lea rbp,[4+rbp] + add r11d,r14d + mov r12d,DWORD[4+rsi] + mov r13d,edx + mov r14d,r11d + bswap r12d + ror r13d,14 + mov edi,r8d + + xor r13d,edx + ror r14d,9 + xor edi,r9d + + mov DWORD[4+rsp],r12d + xor r14d,r11d + and edi,edx + + ror r13d,5 + add r12d,r10d + xor edi,r9d + + ror r14d,11 + xor r13d,edx + add r12d,edi + + mov edi,r11d + add r12d,DWORD[rbp] + xor r14d,r11d + + xor edi,eax + ror r13d,6 + mov r10d,eax + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor r10d,r15d + add ecx,r12d + add r10d,r12d + + lea rbp,[4+rbp] + add r10d,r14d + mov r12d,DWORD[8+rsi] + mov r13d,ecx + mov r14d,r10d + bswap r12d + ror r13d,14 + mov r15d,edx + + xor r13d,ecx + ror r14d,9 + xor r15d,r8d + + mov DWORD[8+rsp],r12d + xor r14d,r10d + and r15d,ecx + + ror r13d,5 + add r12d,r9d + xor r15d,r8d + + ror r14d,11 + xor r13d,ecx + add r12d,r15d + + mov r15d,r10d + add r12d,DWORD[rbp] + xor r14d,r10d + + xor r15d,r11d + ror r13d,6 + mov r9d,r11d + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor r9d,edi + add ebx,r12d + add r9d,r12d + + lea rbp,[4+rbp] + add r9d,r14d + mov r12d,DWORD[12+rsi] + mov r13d,ebx + mov r14d,r9d + bswap r12d + ror r13d,14 + mov edi,ecx + + xor r13d,ebx + ror r14d,9 + xor edi,edx + + mov DWORD[12+rsp],r12d + xor r14d,r9d + and edi,ebx + + ror r13d,5 + add r12d,r8d + xor edi,edx + + ror r14d,11 + xor r13d,ebx + add r12d,edi + + mov edi,r9d + add r12d,DWORD[rbp] + xor r14d,r9d + + xor edi,r10d + ror r13d,6 + mov r8d,r10d + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor r8d,r15d + add eax,r12d + add r8d,r12d + + lea rbp,[20+rbp] + add r8d,r14d + mov r12d,DWORD[16+rsi] + mov r13d,eax + mov r14d,r8d + bswap r12d + ror r13d,14 + mov r15d,ebx + + xor r13d,eax + ror r14d,9 + xor r15d,ecx + + mov DWORD[16+rsp],r12d + xor r14d,r8d + and r15d,eax + + ror r13d,5 + add r12d,edx + xor r15d,ecx + + ror r14d,11 + xor r13d,eax + add r12d,r15d + + mov r15d,r8d + add r12d,DWORD[rbp] + xor r14d,r8d + + xor r15d,r9d + ror r13d,6 + mov edx,r9d + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor edx,edi + add r11d,r12d + add edx,r12d + + lea rbp,[4+rbp] + add edx,r14d + mov r12d,DWORD[20+rsi] + mov r13d,r11d + mov r14d,edx + bswap r12d + ror r13d,14 + mov edi,eax + + xor r13d,r11d + ror r14d,9 + xor edi,ebx + + mov DWORD[20+rsp],r12d + xor r14d,edx + and edi,r11d + + ror r13d,5 + add r12d,ecx + xor edi,ebx + + ror r14d,11 + xor r13d,r11d + add r12d,edi + + mov edi,edx + add r12d,DWORD[rbp] + xor r14d,edx + + xor edi,r8d + ror r13d,6 + mov ecx,r8d + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor ecx,r15d + add r10d,r12d + add ecx,r12d + + lea rbp,[4+rbp] + add ecx,r14d + mov r12d,DWORD[24+rsi] + mov r13d,r10d + mov r14d,ecx + bswap r12d + ror r13d,14 + mov r15d,r11d + + xor r13d,r10d + ror r14d,9 + xor r15d,eax + + mov DWORD[24+rsp],r12d + xor r14d,ecx + and r15d,r10d + + ror r13d,5 + add r12d,ebx + xor r15d,eax + + ror r14d,11 + xor r13d,r10d + add r12d,r15d + + mov r15d,ecx + add r12d,DWORD[rbp] + xor r14d,ecx + + xor r15d,edx + ror r13d,6 + mov ebx,edx + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor ebx,edi + add r9d,r12d + add ebx,r12d + + lea rbp,[4+rbp] + add ebx,r14d + mov r12d,DWORD[28+rsi] + mov r13d,r9d + mov r14d,ebx + bswap r12d + ror r13d,14 + mov edi,r10d + + xor r13d,r9d + ror r14d,9 + xor edi,r11d + + mov DWORD[28+rsp],r12d + xor r14d,ebx + and edi,r9d + + ror r13d,5 + add r12d,eax + xor edi,r11d + + ror r14d,11 + xor r13d,r9d + add r12d,edi + + mov edi,ebx + add r12d,DWORD[rbp] + xor r14d,ebx + + xor edi,ecx + ror r13d,6 + mov eax,ecx + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor eax,r15d + add r8d,r12d + add eax,r12d + + lea rbp,[20+rbp] + add eax,r14d + mov r12d,DWORD[32+rsi] + mov r13d,r8d + mov r14d,eax + bswap r12d + ror r13d,14 + mov r15d,r9d + + xor r13d,r8d + ror r14d,9 + xor r15d,r10d + + mov DWORD[32+rsp],r12d + xor r14d,eax + and r15d,r8d + + ror r13d,5 + add r12d,r11d + xor r15d,r10d + + ror r14d,11 + xor r13d,r8d + add r12d,r15d + + mov r15d,eax + add r12d,DWORD[rbp] + xor r14d,eax + + xor r15d,ebx + ror r13d,6 + mov r11d,ebx + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor r11d,edi + add edx,r12d + add r11d,r12d + + lea rbp,[4+rbp] + add r11d,r14d + mov r12d,DWORD[36+rsi] + mov r13d,edx + mov r14d,r11d + bswap r12d + ror r13d,14 + mov edi,r8d + + xor r13d,edx + ror r14d,9 + xor edi,r9d + + mov DWORD[36+rsp],r12d + xor r14d,r11d + and edi,edx + + ror r13d,5 + add r12d,r10d + xor edi,r9d + + ror r14d,11 + xor r13d,edx + add r12d,edi + + mov edi,r11d + add r12d,DWORD[rbp] + xor r14d,r11d + + xor edi,eax + ror r13d,6 + mov r10d,eax + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor r10d,r15d + add ecx,r12d + add r10d,r12d + + lea rbp,[4+rbp] + add r10d,r14d + mov r12d,DWORD[40+rsi] + mov r13d,ecx + mov r14d,r10d + bswap r12d + ror r13d,14 + mov r15d,edx + + xor r13d,ecx + ror r14d,9 + xor r15d,r8d + + mov DWORD[40+rsp],r12d + xor r14d,r10d + and r15d,ecx + + ror r13d,5 + add r12d,r9d + xor r15d,r8d + + ror r14d,11 + xor r13d,ecx + add r12d,r15d + + mov r15d,r10d + add r12d,DWORD[rbp] + xor r14d,r10d + + xor r15d,r11d + ror r13d,6 + mov r9d,r11d + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor r9d,edi + add ebx,r12d + add r9d,r12d + + lea rbp,[4+rbp] + add r9d,r14d + mov r12d,DWORD[44+rsi] + mov r13d,ebx + mov r14d,r9d + bswap r12d + ror r13d,14 + mov edi,ecx + + xor r13d,ebx + ror r14d,9 + xor edi,edx + + mov DWORD[44+rsp],r12d + xor r14d,r9d + and edi,ebx + + ror r13d,5 + add r12d,r8d + xor edi,edx + + ror r14d,11 + xor r13d,ebx + add r12d,edi + + mov edi,r9d + add r12d,DWORD[rbp] + xor r14d,r9d + + xor edi,r10d + ror r13d,6 + mov r8d,r10d + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor r8d,r15d + add eax,r12d + add r8d,r12d + + lea rbp,[20+rbp] + add r8d,r14d + mov r12d,DWORD[48+rsi] + mov r13d,eax + mov r14d,r8d + bswap r12d + ror r13d,14 + mov r15d,ebx + + xor r13d,eax + ror r14d,9 + xor r15d,ecx + + mov DWORD[48+rsp],r12d + xor r14d,r8d + and r15d,eax + + ror r13d,5 + add r12d,edx + xor r15d,ecx + + ror r14d,11 + xor r13d,eax + add r12d,r15d + + mov r15d,r8d + add r12d,DWORD[rbp] + xor r14d,r8d + + xor r15d,r9d + ror r13d,6 + mov edx,r9d + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor edx,edi + add r11d,r12d + add edx,r12d + + lea rbp,[4+rbp] + add edx,r14d + mov r12d,DWORD[52+rsi] + mov r13d,r11d + mov r14d,edx + bswap r12d + ror r13d,14 + mov edi,eax + + xor r13d,r11d + ror r14d,9 + xor edi,ebx + + mov DWORD[52+rsp],r12d + xor r14d,edx + and edi,r11d + + ror r13d,5 + add r12d,ecx + xor edi,ebx + + ror r14d,11 + xor r13d,r11d + add r12d,edi + + mov edi,edx + add r12d,DWORD[rbp] + xor r14d,edx + + xor edi,r8d + ror r13d,6 + mov ecx,r8d + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor ecx,r15d + add r10d,r12d + add ecx,r12d + + lea rbp,[4+rbp] + add ecx,r14d + mov r12d,DWORD[56+rsi] + mov r13d,r10d + mov r14d,ecx + bswap r12d + ror r13d,14 + mov r15d,r11d + + xor r13d,r10d + ror r14d,9 + xor r15d,eax + + mov DWORD[56+rsp],r12d + xor r14d,ecx + and r15d,r10d + + ror r13d,5 + add r12d,ebx + xor r15d,eax + + ror r14d,11 + xor r13d,r10d + add r12d,r15d + + mov r15d,ecx + add r12d,DWORD[rbp] + xor r14d,ecx + + xor r15d,edx + ror r13d,6 + mov ebx,edx + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor ebx,edi + add r9d,r12d + add ebx,r12d + + lea rbp,[4+rbp] + add ebx,r14d + mov r12d,DWORD[60+rsi] + mov r13d,r9d + mov r14d,ebx + bswap r12d + ror r13d,14 + mov edi,r10d + + xor r13d,r9d + ror r14d,9 + xor edi,r11d + + mov DWORD[60+rsp],r12d + xor r14d,ebx + and edi,r9d + + ror r13d,5 + add r12d,eax + xor edi,r11d + + ror r14d,11 + xor r13d,r9d + add r12d,edi + + mov edi,ebx + add r12d,DWORD[rbp] + xor r14d,ebx + + xor edi,ecx + ror r13d,6 + mov eax,ecx + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor eax,r15d + add r8d,r12d + add eax,r12d + + lea rbp,[20+rbp] + jmp NEAR $L$rounds_16_xx +ALIGN 16 +$L$rounds_16_xx: + mov r13d,DWORD[4+rsp] + mov r15d,DWORD[56+rsp] + + mov r12d,r13d + ror r13d,11 + add eax,r14d + mov r14d,r15d + ror r15d,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor r15d,r14d + shr r14d,10 + + ror r15d,17 + xor r12d,r13d + xor r15d,r14d + add r12d,DWORD[36+rsp] + + add r12d,DWORD[rsp] + mov r13d,r8d + add r12d,r15d + mov r14d,eax + ror r13d,14 + mov r15d,r9d + + xor r13d,r8d + ror r14d,9 + xor r15d,r10d + + mov DWORD[rsp],r12d + xor r14d,eax + and r15d,r8d + + ror r13d,5 + add r12d,r11d + xor r15d,r10d + + ror r14d,11 + xor r13d,r8d + add r12d,r15d + + mov r15d,eax + add r12d,DWORD[rbp] + xor r14d,eax + + xor r15d,ebx + ror r13d,6 + mov r11d,ebx + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor r11d,edi + add edx,r12d + add r11d,r12d + + lea rbp,[4+rbp] + mov r13d,DWORD[8+rsp] + mov edi,DWORD[60+rsp] + + mov r12d,r13d + ror r13d,11 + add r11d,r14d + mov r14d,edi + ror edi,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor edi,r14d + shr r14d,10 + + ror edi,17 + xor r12d,r13d + xor edi,r14d + add r12d,DWORD[40+rsp] + + add r12d,DWORD[4+rsp] + mov r13d,edx + add r12d,edi + mov r14d,r11d + ror r13d,14 + mov edi,r8d + + xor r13d,edx + ror r14d,9 + xor edi,r9d + + mov DWORD[4+rsp],r12d + xor r14d,r11d + and edi,edx + + ror r13d,5 + add r12d,r10d + xor edi,r9d + + ror r14d,11 + xor r13d,edx + add r12d,edi + + mov edi,r11d + add r12d,DWORD[rbp] + xor r14d,r11d + + xor edi,eax + ror r13d,6 + mov r10d,eax + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor r10d,r15d + add ecx,r12d + add r10d,r12d + + lea rbp,[4+rbp] + mov r13d,DWORD[12+rsp] + mov r15d,DWORD[rsp] + + mov r12d,r13d + ror r13d,11 + add r10d,r14d + mov r14d,r15d + ror r15d,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor r15d,r14d + shr r14d,10 + + ror r15d,17 + xor r12d,r13d + xor r15d,r14d + add r12d,DWORD[44+rsp] + + add r12d,DWORD[8+rsp] + mov r13d,ecx + add r12d,r15d + mov r14d,r10d + ror r13d,14 + mov r15d,edx + + xor r13d,ecx + ror r14d,9 + xor r15d,r8d + + mov DWORD[8+rsp],r12d + xor r14d,r10d + and r15d,ecx + + ror r13d,5 + add r12d,r9d + xor r15d,r8d + + ror r14d,11 + xor r13d,ecx + add r12d,r15d + + mov r15d,r10d + add r12d,DWORD[rbp] + xor r14d,r10d + + xor r15d,r11d + ror r13d,6 + mov r9d,r11d + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor r9d,edi + add ebx,r12d + add r9d,r12d + + lea rbp,[4+rbp] + mov r13d,DWORD[16+rsp] + mov edi,DWORD[4+rsp] + + mov r12d,r13d + ror r13d,11 + add r9d,r14d + mov r14d,edi + ror edi,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor edi,r14d + shr r14d,10 + + ror edi,17 + xor r12d,r13d + xor edi,r14d + add r12d,DWORD[48+rsp] + + add r12d,DWORD[12+rsp] + mov r13d,ebx + add r12d,edi + mov r14d,r9d + ror r13d,14 + mov edi,ecx + + xor r13d,ebx + ror r14d,9 + xor edi,edx + + mov DWORD[12+rsp],r12d + xor r14d,r9d + and edi,ebx + + ror r13d,5 + add r12d,r8d + xor edi,edx + + ror r14d,11 + xor r13d,ebx + add r12d,edi + + mov edi,r9d + add r12d,DWORD[rbp] + xor r14d,r9d + + xor edi,r10d + ror r13d,6 + mov r8d,r10d + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor r8d,r15d + add eax,r12d + add r8d,r12d + + lea rbp,[20+rbp] + mov r13d,DWORD[20+rsp] + mov r15d,DWORD[8+rsp] + + mov r12d,r13d + ror r13d,11 + add r8d,r14d + mov r14d,r15d + ror r15d,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor r15d,r14d + shr r14d,10 + + ror r15d,17 + xor r12d,r13d + xor r15d,r14d + add r12d,DWORD[52+rsp] + + add r12d,DWORD[16+rsp] + mov r13d,eax + add r12d,r15d + mov r14d,r8d + ror r13d,14 + mov r15d,ebx + + xor r13d,eax + ror r14d,9 + xor r15d,ecx + + mov DWORD[16+rsp],r12d + xor r14d,r8d + and r15d,eax + + ror r13d,5 + add r12d,edx + xor r15d,ecx + + ror r14d,11 + xor r13d,eax + add r12d,r15d + + mov r15d,r8d + add r12d,DWORD[rbp] + xor r14d,r8d + + xor r15d,r9d + ror r13d,6 + mov edx,r9d + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor edx,edi + add r11d,r12d + add edx,r12d + + lea rbp,[4+rbp] + mov r13d,DWORD[24+rsp] + mov edi,DWORD[12+rsp] + + mov r12d,r13d + ror r13d,11 + add edx,r14d + mov r14d,edi + ror edi,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor edi,r14d + shr r14d,10 + + ror edi,17 + xor r12d,r13d + xor edi,r14d + add r12d,DWORD[56+rsp] + + add r12d,DWORD[20+rsp] + mov r13d,r11d + add r12d,edi + mov r14d,edx + ror r13d,14 + mov edi,eax + + xor r13d,r11d + ror r14d,9 + xor edi,ebx + + mov DWORD[20+rsp],r12d + xor r14d,edx + and edi,r11d + + ror r13d,5 + add r12d,ecx + xor edi,ebx + + ror r14d,11 + xor r13d,r11d + add r12d,edi + + mov edi,edx + add r12d,DWORD[rbp] + xor r14d,edx + + xor edi,r8d + ror r13d,6 + mov ecx,r8d + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor ecx,r15d + add r10d,r12d + add ecx,r12d + + lea rbp,[4+rbp] + mov r13d,DWORD[28+rsp] + mov r15d,DWORD[16+rsp] + + mov r12d,r13d + ror r13d,11 + add ecx,r14d + mov r14d,r15d + ror r15d,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor r15d,r14d + shr r14d,10 + + ror r15d,17 + xor r12d,r13d + xor r15d,r14d + add r12d,DWORD[60+rsp] + + add r12d,DWORD[24+rsp] + mov r13d,r10d + add r12d,r15d + mov r14d,ecx + ror r13d,14 + mov r15d,r11d + + xor r13d,r10d + ror r14d,9 + xor r15d,eax + + mov DWORD[24+rsp],r12d + xor r14d,ecx + and r15d,r10d + + ror r13d,5 + add r12d,ebx + xor r15d,eax + + ror r14d,11 + xor r13d,r10d + add r12d,r15d + + mov r15d,ecx + add r12d,DWORD[rbp] + xor r14d,ecx + + xor r15d,edx + ror r13d,6 + mov ebx,edx + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor ebx,edi + add r9d,r12d + add ebx,r12d + + lea rbp,[4+rbp] + mov r13d,DWORD[32+rsp] + mov edi,DWORD[20+rsp] + + mov r12d,r13d + ror r13d,11 + add ebx,r14d + mov r14d,edi + ror edi,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor edi,r14d + shr r14d,10 + + ror edi,17 + xor r12d,r13d + xor edi,r14d + add r12d,DWORD[rsp] + + add r12d,DWORD[28+rsp] + mov r13d,r9d + add r12d,edi + mov r14d,ebx + ror r13d,14 + mov edi,r10d + + xor r13d,r9d + ror r14d,9 + xor edi,r11d + + mov DWORD[28+rsp],r12d + xor r14d,ebx + and edi,r9d + + ror r13d,5 + add r12d,eax + xor edi,r11d + + ror r14d,11 + xor r13d,r9d + add r12d,edi + + mov edi,ebx + add r12d,DWORD[rbp] + xor r14d,ebx + + xor edi,ecx + ror r13d,6 + mov eax,ecx + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor eax,r15d + add r8d,r12d + add eax,r12d + + lea rbp,[20+rbp] + mov r13d,DWORD[36+rsp] + mov r15d,DWORD[24+rsp] + + mov r12d,r13d + ror r13d,11 + add eax,r14d + mov r14d,r15d + ror r15d,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor r15d,r14d + shr r14d,10 + + ror r15d,17 + xor r12d,r13d + xor r15d,r14d + add r12d,DWORD[4+rsp] + + add r12d,DWORD[32+rsp] + mov r13d,r8d + add r12d,r15d + mov r14d,eax + ror r13d,14 + mov r15d,r9d + + xor r13d,r8d + ror r14d,9 + xor r15d,r10d + + mov DWORD[32+rsp],r12d + xor r14d,eax + and r15d,r8d + + ror r13d,5 + add r12d,r11d + xor r15d,r10d + + ror r14d,11 + xor r13d,r8d + add r12d,r15d + + mov r15d,eax + add r12d,DWORD[rbp] + xor r14d,eax + + xor r15d,ebx + ror r13d,6 + mov r11d,ebx + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor r11d,edi + add edx,r12d + add r11d,r12d + + lea rbp,[4+rbp] + mov r13d,DWORD[40+rsp] + mov edi,DWORD[28+rsp] + + mov r12d,r13d + ror r13d,11 + add r11d,r14d + mov r14d,edi + ror edi,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor edi,r14d + shr r14d,10 + + ror edi,17 + xor r12d,r13d + xor edi,r14d + add r12d,DWORD[8+rsp] + + add r12d,DWORD[36+rsp] + mov r13d,edx + add r12d,edi + mov r14d,r11d + ror r13d,14 + mov edi,r8d + + xor r13d,edx + ror r14d,9 + xor edi,r9d + + mov DWORD[36+rsp],r12d + xor r14d,r11d + and edi,edx + + ror r13d,5 + add r12d,r10d + xor edi,r9d + + ror r14d,11 + xor r13d,edx + add r12d,edi + + mov edi,r11d + add r12d,DWORD[rbp] + xor r14d,r11d + + xor edi,eax + ror r13d,6 + mov r10d,eax + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor r10d,r15d + add ecx,r12d + add r10d,r12d + + lea rbp,[4+rbp] + mov r13d,DWORD[44+rsp] + mov r15d,DWORD[32+rsp] + + mov r12d,r13d + ror r13d,11 + add r10d,r14d + mov r14d,r15d + ror r15d,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor r15d,r14d + shr r14d,10 + + ror r15d,17 + xor r12d,r13d + xor r15d,r14d + add r12d,DWORD[12+rsp] + + add r12d,DWORD[40+rsp] + mov r13d,ecx + add r12d,r15d + mov r14d,r10d + ror r13d,14 + mov r15d,edx + + xor r13d,ecx + ror r14d,9 + xor r15d,r8d + + mov DWORD[40+rsp],r12d + xor r14d,r10d + and r15d,ecx + + ror r13d,5 + add r12d,r9d + xor r15d,r8d + + ror r14d,11 + xor r13d,ecx + add r12d,r15d + + mov r15d,r10d + add r12d,DWORD[rbp] + xor r14d,r10d + + xor r15d,r11d + ror r13d,6 + mov r9d,r11d + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor r9d,edi + add ebx,r12d + add r9d,r12d + + lea rbp,[4+rbp] + mov r13d,DWORD[48+rsp] + mov edi,DWORD[36+rsp] + + mov r12d,r13d + ror r13d,11 + add r9d,r14d + mov r14d,edi + ror edi,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor edi,r14d + shr r14d,10 + + ror edi,17 + xor r12d,r13d + xor edi,r14d + add r12d,DWORD[16+rsp] + + add r12d,DWORD[44+rsp] + mov r13d,ebx + add r12d,edi + mov r14d,r9d + ror r13d,14 + mov edi,ecx + + xor r13d,ebx + ror r14d,9 + xor edi,edx + + mov DWORD[44+rsp],r12d + xor r14d,r9d + and edi,ebx + + ror r13d,5 + add r12d,r8d + xor edi,edx + + ror r14d,11 + xor r13d,ebx + add r12d,edi + + mov edi,r9d + add r12d,DWORD[rbp] + xor r14d,r9d + + xor edi,r10d + ror r13d,6 + mov r8d,r10d + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor r8d,r15d + add eax,r12d + add r8d,r12d + + lea rbp,[20+rbp] + mov r13d,DWORD[52+rsp] + mov r15d,DWORD[40+rsp] + + mov r12d,r13d + ror r13d,11 + add r8d,r14d + mov r14d,r15d + ror r15d,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor r15d,r14d + shr r14d,10 + + ror r15d,17 + xor r12d,r13d + xor r15d,r14d + add r12d,DWORD[20+rsp] + + add r12d,DWORD[48+rsp] + mov r13d,eax + add r12d,r15d + mov r14d,r8d + ror r13d,14 + mov r15d,ebx + + xor r13d,eax + ror r14d,9 + xor r15d,ecx + + mov DWORD[48+rsp],r12d + xor r14d,r8d + and r15d,eax + + ror r13d,5 + add r12d,edx + xor r15d,ecx + + ror r14d,11 + xor r13d,eax + add r12d,r15d + + mov r15d,r8d + add r12d,DWORD[rbp] + xor r14d,r8d + + xor r15d,r9d + ror r13d,6 + mov edx,r9d + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor edx,edi + add r11d,r12d + add edx,r12d + + lea rbp,[4+rbp] + mov r13d,DWORD[56+rsp] + mov edi,DWORD[44+rsp] + + mov r12d,r13d + ror r13d,11 + add edx,r14d + mov r14d,edi + ror edi,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor edi,r14d + shr r14d,10 + + ror edi,17 + xor r12d,r13d + xor edi,r14d + add r12d,DWORD[24+rsp] + + add r12d,DWORD[52+rsp] + mov r13d,r11d + add r12d,edi + mov r14d,edx + ror r13d,14 + mov edi,eax + + xor r13d,r11d + ror r14d,9 + xor edi,ebx + + mov DWORD[52+rsp],r12d + xor r14d,edx + and edi,r11d + + ror r13d,5 + add r12d,ecx + xor edi,ebx + + ror r14d,11 + xor r13d,r11d + add r12d,edi + + mov edi,edx + add r12d,DWORD[rbp] + xor r14d,edx + + xor edi,r8d + ror r13d,6 + mov ecx,r8d + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor ecx,r15d + add r10d,r12d + add ecx,r12d + + lea rbp,[4+rbp] + mov r13d,DWORD[60+rsp] + mov r15d,DWORD[48+rsp] + + mov r12d,r13d + ror r13d,11 + add ecx,r14d + mov r14d,r15d + ror r15d,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor r15d,r14d + shr r14d,10 + + ror r15d,17 + xor r12d,r13d + xor r15d,r14d + add r12d,DWORD[28+rsp] + + add r12d,DWORD[56+rsp] + mov r13d,r10d + add r12d,r15d + mov r14d,ecx + ror r13d,14 + mov r15d,r11d + + xor r13d,r10d + ror r14d,9 + xor r15d,eax + + mov DWORD[56+rsp],r12d + xor r14d,ecx + and r15d,r10d + + ror r13d,5 + add r12d,ebx + xor r15d,eax + + ror r14d,11 + xor r13d,r10d + add r12d,r15d + + mov r15d,ecx + add r12d,DWORD[rbp] + xor r14d,ecx + + xor r15d,edx + ror r13d,6 + mov ebx,edx + + and edi,r15d + ror r14d,2 + add r12d,r13d + + xor ebx,edi + add r9d,r12d + add ebx,r12d + + lea rbp,[4+rbp] + mov r13d,DWORD[rsp] + mov edi,DWORD[52+rsp] + + mov r12d,r13d + ror r13d,11 + add ebx,r14d + mov r14d,edi + ror edi,2 + + xor r13d,r12d + shr r12d,3 + ror r13d,7 + xor edi,r14d + shr r14d,10 + + ror edi,17 + xor r12d,r13d + xor edi,r14d + add r12d,DWORD[32+rsp] + + add r12d,DWORD[60+rsp] + mov r13d,r9d + add r12d,edi + mov r14d,ebx + ror r13d,14 + mov edi,r10d + + xor r13d,r9d + ror r14d,9 + xor edi,r11d + + mov DWORD[60+rsp],r12d + xor r14d,ebx + and edi,r9d + + ror r13d,5 + add r12d,eax + xor edi,r11d + + ror r14d,11 + xor r13d,r9d + add r12d,edi + + mov edi,ebx + add r12d,DWORD[rbp] + xor r14d,ebx + + xor edi,ecx + ror r13d,6 + mov eax,ecx + + and r15d,edi + ror r14d,2 + add r12d,r13d + + xor eax,r15d + add r8d,r12d + add eax,r12d + + lea rbp,[20+rbp] + cmp BYTE[3+rbp],0 + jnz NEAR $L$rounds_16_xx + + mov rdi,QWORD[((64+0))+rsp] + add eax,r14d + lea rsi,[64+rsi] + + add eax,DWORD[rdi] + add ebx,DWORD[4+rdi] + add ecx,DWORD[8+rdi] + add edx,DWORD[12+rdi] + add r8d,DWORD[16+rdi] + add r9d,DWORD[20+rdi] + add r10d,DWORD[24+rdi] + add r11d,DWORD[28+rdi] + + cmp rsi,QWORD[((64+16))+rsp] + + mov DWORD[rdi],eax + mov DWORD[4+rdi],ebx + mov DWORD[8+rdi],ecx + mov DWORD[12+rdi],edx + mov DWORD[16+rdi],r8d + mov DWORD[20+rdi],r9d + mov DWORD[24+rdi],r10d + mov DWORD[28+rdi],r11d + jb NEAR $L$loop + + mov rsi,QWORD[88+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha256_block_data_order: +ALIGN 64 + +K256: + DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 + DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 + DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 + DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 + DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 + DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 + DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 + DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 + DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc + DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc + DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da + DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da + DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 + DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 + DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 + DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 + DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 + DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 + DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 + DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 + DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 + DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 + DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 + DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 + DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 + DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 + DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 + DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 + DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 + DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 + DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 + DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 + + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f + DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f + DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff + DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff + DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 + DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908 +DB 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97 +DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 +DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 +DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 +DB 111,114,103,62,0 + +ALIGN 64 +sha256_block_data_order_shaext: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha256_block_data_order_shaext: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + +_shaext_shortcut: + + lea rsp,[((-88))+rsp] + movaps XMMWORD[(-8-80)+rax],xmm6 + movaps XMMWORD[(-8-64)+rax],xmm7 + movaps XMMWORD[(-8-48)+rax],xmm8 + movaps XMMWORD[(-8-32)+rax],xmm9 + movaps XMMWORD[(-8-16)+rax],xmm10 +$L$prologue_shaext: + lea rcx,[((K256+128))] + movdqu xmm1,XMMWORD[rdi] + movdqu xmm2,XMMWORD[16+rdi] + movdqa xmm7,XMMWORD[((512-128))+rcx] + + pshufd xmm0,xmm1,0x1b + pshufd xmm1,xmm1,0xb1 + pshufd xmm2,xmm2,0x1b + movdqa xmm8,xmm7 +DB 102,15,58,15,202,8 + punpcklqdq xmm2,xmm0 + jmp NEAR $L$oop_shaext + +ALIGN 16 +$L$oop_shaext: + movdqu xmm3,XMMWORD[rsi] + movdqu xmm4,XMMWORD[16+rsi] + movdqu xmm5,XMMWORD[32+rsi] +DB 102,15,56,0,223 + movdqu xmm6,XMMWORD[48+rsi] + + movdqa xmm0,XMMWORD[((0-128))+rcx] + paddd xmm0,xmm3 +DB 102,15,56,0,231 + movdqa xmm10,xmm2 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + nop + movdqa xmm9,xmm1 +DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((32-128))+rcx] + paddd xmm0,xmm4 +DB 102,15,56,0,239 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + lea rsi,[64+rsi] +DB 15,56,204,220 +DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((64-128))+rcx] + paddd xmm0,xmm5 +DB 102,15,56,0,247 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm6 +DB 102,15,58,15,253,4 + nop + paddd xmm3,xmm7 +DB 15,56,204,229 +DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((96-128))+rcx] + paddd xmm0,xmm6 +DB 15,56,205,222 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm3 +DB 102,15,58,15,254,4 + nop + paddd xmm4,xmm7 +DB 15,56,204,238 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((128-128))+rcx] + paddd xmm0,xmm3 +DB 15,56,205,227 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm4 +DB 102,15,58,15,251,4 + nop + paddd xmm5,xmm7 +DB 15,56,204,243 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((160-128))+rcx] + paddd xmm0,xmm4 +DB 15,56,205,236 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm5 +DB 102,15,58,15,252,4 + nop + paddd xmm6,xmm7 +DB 15,56,204,220 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((192-128))+rcx] + paddd xmm0,xmm5 +DB 15,56,205,245 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm6 +DB 102,15,58,15,253,4 + nop + paddd xmm3,xmm7 +DB 15,56,204,229 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((224-128))+rcx] + paddd xmm0,xmm6 +DB 15,56,205,222 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm3 +DB 102,15,58,15,254,4 + nop + paddd xmm4,xmm7 +DB 15,56,204,238 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((256-128))+rcx] + paddd xmm0,xmm3 +DB 15,56,205,227 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm4 +DB 102,15,58,15,251,4 + nop + paddd xmm5,xmm7 +DB 15,56,204,243 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((288-128))+rcx] + paddd xmm0,xmm4 +DB 15,56,205,236 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm5 +DB 102,15,58,15,252,4 + nop + paddd xmm6,xmm7 +DB 15,56,204,220 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((320-128))+rcx] + paddd xmm0,xmm5 +DB 15,56,205,245 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm6 +DB 102,15,58,15,253,4 + nop + paddd xmm3,xmm7 +DB 15,56,204,229 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((352-128))+rcx] + paddd xmm0,xmm6 +DB 15,56,205,222 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm3 +DB 102,15,58,15,254,4 + nop + paddd xmm4,xmm7 +DB 15,56,204,238 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((384-128))+rcx] + paddd xmm0,xmm3 +DB 15,56,205,227 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm4 +DB 102,15,58,15,251,4 + nop + paddd xmm5,xmm7 +DB 15,56,204,243 +DB 15,56,203,202 + movdqa xmm0,XMMWORD[((416-128))+rcx] + paddd xmm0,xmm4 +DB 15,56,205,236 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + movdqa xmm7,xmm5 +DB 102,15,58,15,252,4 +DB 15,56,203,202 + paddd xmm6,xmm7 + + movdqa xmm0,XMMWORD[((448-128))+rcx] + paddd xmm0,xmm5 +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e +DB 15,56,205,245 + movdqa xmm7,xmm8 +DB 15,56,203,202 + + movdqa xmm0,XMMWORD[((480-128))+rcx] + paddd xmm0,xmm6 + nop +DB 15,56,203,209 + pshufd xmm0,xmm0,0x0e + dec rdx + nop +DB 15,56,203,202 + + paddd xmm2,xmm10 + paddd xmm1,xmm9 + jnz NEAR $L$oop_shaext + + pshufd xmm2,xmm2,0xb1 + pshufd xmm7,xmm1,0x1b + pshufd xmm1,xmm1,0xb1 + punpckhqdq xmm1,xmm2 +DB 102,15,58,15,215,8 + + movdqu XMMWORD[rdi],xmm1 + movdqu XMMWORD[16+rdi],xmm2 + movaps xmm6,XMMWORD[((-8-80))+rax] + movaps xmm7,XMMWORD[((-8-64))+rax] + movaps xmm8,XMMWORD[((-8-48))+rax] + movaps xmm9,XMMWORD[((-8-32))+rax] + movaps xmm10,XMMWORD[((-8-16))+rax] + mov rsp,rax +$L$epilogue_shaext: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha256_block_data_order_shaext: + +ALIGN 64 +sha256_block_data_order_ssse3: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha256_block_data_order_ssse3: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$ssse3_shortcut: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + shl rdx,4 + sub rsp,160 + lea rdx,[rdx*4+rsi] + and rsp,-64 + mov QWORD[((64+0))+rsp],rdi + mov QWORD[((64+8))+rsp],rsi + mov QWORD[((64+16))+rsp],rdx + mov QWORD[88+rsp],rax + + movaps XMMWORD[(64+32)+rsp],xmm6 + movaps XMMWORD[(64+48)+rsp],xmm7 + movaps XMMWORD[(64+64)+rsp],xmm8 + movaps XMMWORD[(64+80)+rsp],xmm9 +$L$prologue_ssse3: + + mov eax,DWORD[rdi] + mov ebx,DWORD[4+rdi] + mov ecx,DWORD[8+rdi] + mov edx,DWORD[12+rdi] + mov r8d,DWORD[16+rdi] + mov r9d,DWORD[20+rdi] + mov r10d,DWORD[24+rdi] + mov r11d,DWORD[28+rdi] + + + jmp NEAR $L$loop_ssse3 +ALIGN 16 +$L$loop_ssse3: + movdqa xmm7,XMMWORD[((K256+512))] + movdqu xmm0,XMMWORD[rsi] + movdqu xmm1,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] +DB 102,15,56,0,199 + movdqu xmm3,XMMWORD[48+rsi] + lea rbp,[K256] +DB 102,15,56,0,207 + movdqa xmm4,XMMWORD[rbp] + movdqa xmm5,XMMWORD[32+rbp] +DB 102,15,56,0,215 + paddd xmm4,xmm0 + movdqa xmm6,XMMWORD[64+rbp] +DB 102,15,56,0,223 + movdqa xmm7,XMMWORD[96+rbp] + paddd xmm5,xmm1 + paddd xmm6,xmm2 + paddd xmm7,xmm3 + movdqa XMMWORD[rsp],xmm4 + mov r14d,eax + movdqa XMMWORD[16+rsp],xmm5 + mov edi,ebx + movdqa XMMWORD[32+rsp],xmm6 + xor edi,ecx + movdqa XMMWORD[48+rsp],xmm7 + mov r13d,r8d + jmp NEAR $L$ssse3_00_47 + +ALIGN 16 +$L$ssse3_00_47: + sub rbp,-128 + ror r13d,14 + movdqa xmm4,xmm1 + mov eax,r14d + mov r12d,r9d + movdqa xmm7,xmm3 + ror r14d,9 + xor r13d,r8d + xor r12d,r10d + ror r13d,5 + xor r14d,eax +DB 102,15,58,15,224,4 + and r12d,r8d + xor r13d,r8d +DB 102,15,58,15,250,4 + add r11d,DWORD[rsp] + mov r15d,eax + xor r12d,r10d + ror r14d,11 + movdqa xmm5,xmm4 + xor r15d,ebx + add r11d,r12d + movdqa xmm6,xmm4 + ror r13d,6 + and edi,r15d + psrld xmm4,3 + xor r14d,eax + add r11d,r13d + xor edi,ebx + paddd xmm0,xmm7 + ror r14d,2 + add edx,r11d + psrld xmm6,7 + add r11d,edi + mov r13d,edx + pshufd xmm7,xmm3,250 + add r14d,r11d + ror r13d,14 + pslld xmm5,14 + mov r11d,r14d + mov r12d,r8d + pxor xmm4,xmm6 + ror r14d,9 + xor r13d,edx + xor r12d,r9d + ror r13d,5 + psrld xmm6,11 + xor r14d,r11d + pxor xmm4,xmm5 + and r12d,edx + xor r13d,edx + pslld xmm5,11 + add r10d,DWORD[4+rsp] + mov edi,r11d + pxor xmm4,xmm6 + xor r12d,r9d + ror r14d,11 + movdqa xmm6,xmm7 + xor edi,eax + add r10d,r12d + pxor xmm4,xmm5 + ror r13d,6 + and r15d,edi + xor r14d,r11d + psrld xmm7,10 + add r10d,r13d + xor r15d,eax + paddd xmm0,xmm4 + ror r14d,2 + add ecx,r10d + psrlq xmm6,17 + add r10d,r15d + mov r13d,ecx + add r14d,r10d + pxor xmm7,xmm6 + ror r13d,14 + mov r10d,r14d + mov r12d,edx + ror r14d,9 + psrlq xmm6,2 + xor r13d,ecx + xor r12d,r8d + pxor xmm7,xmm6 + ror r13d,5 + xor r14d,r10d + and r12d,ecx + pshufd xmm7,xmm7,128 + xor r13d,ecx + add r9d,DWORD[8+rsp] + mov r15d,r10d + psrldq xmm7,8 + xor r12d,r8d + ror r14d,11 + xor r15d,r11d + add r9d,r12d + ror r13d,6 + paddd xmm0,xmm7 + and edi,r15d + xor r14d,r10d + add r9d,r13d + pshufd xmm7,xmm0,80 + xor edi,r11d + ror r14d,2 + add ebx,r9d + movdqa xmm6,xmm7 + add r9d,edi + mov r13d,ebx + psrld xmm7,10 + add r14d,r9d + ror r13d,14 + psrlq xmm6,17 + mov r9d,r14d + mov r12d,ecx + pxor xmm7,xmm6 + ror r14d,9 + xor r13d,ebx + xor r12d,edx + ror r13d,5 + xor r14d,r9d + psrlq xmm6,2 + and r12d,ebx + xor r13d,ebx + add r8d,DWORD[12+rsp] + pxor xmm7,xmm6 + mov edi,r9d + xor r12d,edx + ror r14d,11 + pshufd xmm7,xmm7,8 + xor edi,r10d + add r8d,r12d + movdqa xmm6,XMMWORD[rbp] + ror r13d,6 + and r15d,edi + pslldq xmm7,8 + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + paddd xmm0,xmm7 + ror r14d,2 + add eax,r8d + add r8d,r15d + paddd xmm6,xmm0 + mov r13d,eax + add r14d,r8d + movdqa XMMWORD[rsp],xmm6 + ror r13d,14 + movdqa xmm4,xmm2 + mov r8d,r14d + mov r12d,ebx + movdqa xmm7,xmm0 + ror r14d,9 + xor r13d,eax + xor r12d,ecx + ror r13d,5 + xor r14d,r8d +DB 102,15,58,15,225,4 + and r12d,eax + xor r13d,eax +DB 102,15,58,15,251,4 + add edx,DWORD[16+rsp] + mov r15d,r8d + xor r12d,ecx + ror r14d,11 + movdqa xmm5,xmm4 + xor r15d,r9d + add edx,r12d + movdqa xmm6,xmm4 + ror r13d,6 + and edi,r15d + psrld xmm4,3 + xor r14d,r8d + add edx,r13d + xor edi,r9d + paddd xmm1,xmm7 + ror r14d,2 + add r11d,edx + psrld xmm6,7 + add edx,edi + mov r13d,r11d + pshufd xmm7,xmm0,250 + add r14d,edx + ror r13d,14 + pslld xmm5,14 + mov edx,r14d + mov r12d,eax + pxor xmm4,xmm6 + ror r14d,9 + xor r13d,r11d + xor r12d,ebx + ror r13d,5 + psrld xmm6,11 + xor r14d,edx + pxor xmm4,xmm5 + and r12d,r11d + xor r13d,r11d + pslld xmm5,11 + add ecx,DWORD[20+rsp] + mov edi,edx + pxor xmm4,xmm6 + xor r12d,ebx + ror r14d,11 + movdqa xmm6,xmm7 + xor edi,r8d + add ecx,r12d + pxor xmm4,xmm5 + ror r13d,6 + and r15d,edi + xor r14d,edx + psrld xmm7,10 + add ecx,r13d + xor r15d,r8d + paddd xmm1,xmm4 + ror r14d,2 + add r10d,ecx + psrlq xmm6,17 + add ecx,r15d + mov r13d,r10d + add r14d,ecx + pxor xmm7,xmm6 + ror r13d,14 + mov ecx,r14d + mov r12d,r11d + ror r14d,9 + psrlq xmm6,2 + xor r13d,r10d + xor r12d,eax + pxor xmm7,xmm6 + ror r13d,5 + xor r14d,ecx + and r12d,r10d + pshufd xmm7,xmm7,128 + xor r13d,r10d + add ebx,DWORD[24+rsp] + mov r15d,ecx + psrldq xmm7,8 + xor r12d,eax + ror r14d,11 + xor r15d,edx + add ebx,r12d + ror r13d,6 + paddd xmm1,xmm7 + and edi,r15d + xor r14d,ecx + add ebx,r13d + pshufd xmm7,xmm1,80 + xor edi,edx + ror r14d,2 + add r9d,ebx + movdqa xmm6,xmm7 + add ebx,edi + mov r13d,r9d + psrld xmm7,10 + add r14d,ebx + ror r13d,14 + psrlq xmm6,17 + mov ebx,r14d + mov r12d,r10d + pxor xmm7,xmm6 + ror r14d,9 + xor r13d,r9d + xor r12d,r11d + ror r13d,5 + xor r14d,ebx + psrlq xmm6,2 + and r12d,r9d + xor r13d,r9d + add eax,DWORD[28+rsp] + pxor xmm7,xmm6 + mov edi,ebx + xor r12d,r11d + ror r14d,11 + pshufd xmm7,xmm7,8 + xor edi,ecx + add eax,r12d + movdqa xmm6,XMMWORD[32+rbp] + ror r13d,6 + and r15d,edi + pslldq xmm7,8 + xor r14d,ebx + add eax,r13d + xor r15d,ecx + paddd xmm1,xmm7 + ror r14d,2 + add r8d,eax + add eax,r15d + paddd xmm6,xmm1 + mov r13d,r8d + add r14d,eax + movdqa XMMWORD[16+rsp],xmm6 + ror r13d,14 + movdqa xmm4,xmm3 + mov eax,r14d + mov r12d,r9d + movdqa xmm7,xmm1 + ror r14d,9 + xor r13d,r8d + xor r12d,r10d + ror r13d,5 + xor r14d,eax +DB 102,15,58,15,226,4 + and r12d,r8d + xor r13d,r8d +DB 102,15,58,15,248,4 + add r11d,DWORD[32+rsp] + mov r15d,eax + xor r12d,r10d + ror r14d,11 + movdqa xmm5,xmm4 + xor r15d,ebx + add r11d,r12d + movdqa xmm6,xmm4 + ror r13d,6 + and edi,r15d + psrld xmm4,3 + xor r14d,eax + add r11d,r13d + xor edi,ebx + paddd xmm2,xmm7 + ror r14d,2 + add edx,r11d + psrld xmm6,7 + add r11d,edi + mov r13d,edx + pshufd xmm7,xmm1,250 + add r14d,r11d + ror r13d,14 + pslld xmm5,14 + mov r11d,r14d + mov r12d,r8d + pxor xmm4,xmm6 + ror r14d,9 + xor r13d,edx + xor r12d,r9d + ror r13d,5 + psrld xmm6,11 + xor r14d,r11d + pxor xmm4,xmm5 + and r12d,edx + xor r13d,edx + pslld xmm5,11 + add r10d,DWORD[36+rsp] + mov edi,r11d + pxor xmm4,xmm6 + xor r12d,r9d + ror r14d,11 + movdqa xmm6,xmm7 + xor edi,eax + add r10d,r12d + pxor xmm4,xmm5 + ror r13d,6 + and r15d,edi + xor r14d,r11d + psrld xmm7,10 + add r10d,r13d + xor r15d,eax + paddd xmm2,xmm4 + ror r14d,2 + add ecx,r10d + psrlq xmm6,17 + add r10d,r15d + mov r13d,ecx + add r14d,r10d + pxor xmm7,xmm6 + ror r13d,14 + mov r10d,r14d + mov r12d,edx + ror r14d,9 + psrlq xmm6,2 + xor r13d,ecx + xor r12d,r8d + pxor xmm7,xmm6 + ror r13d,5 + xor r14d,r10d + and r12d,ecx + pshufd xmm7,xmm7,128 + xor r13d,ecx + add r9d,DWORD[40+rsp] + mov r15d,r10d + psrldq xmm7,8 + xor r12d,r8d + ror r14d,11 + xor r15d,r11d + add r9d,r12d + ror r13d,6 + paddd xmm2,xmm7 + and edi,r15d + xor r14d,r10d + add r9d,r13d + pshufd xmm7,xmm2,80 + xor edi,r11d + ror r14d,2 + add ebx,r9d + movdqa xmm6,xmm7 + add r9d,edi + mov r13d,ebx + psrld xmm7,10 + add r14d,r9d + ror r13d,14 + psrlq xmm6,17 + mov r9d,r14d + mov r12d,ecx + pxor xmm7,xmm6 + ror r14d,9 + xor r13d,ebx + xor r12d,edx + ror r13d,5 + xor r14d,r9d + psrlq xmm6,2 + and r12d,ebx + xor r13d,ebx + add r8d,DWORD[44+rsp] + pxor xmm7,xmm6 + mov edi,r9d + xor r12d,edx + ror r14d,11 + pshufd xmm7,xmm7,8 + xor edi,r10d + add r8d,r12d + movdqa xmm6,XMMWORD[64+rbp] + ror r13d,6 + and r15d,edi + pslldq xmm7,8 + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + paddd xmm2,xmm7 + ror r14d,2 + add eax,r8d + add r8d,r15d + paddd xmm6,xmm2 + mov r13d,eax + add r14d,r8d + movdqa XMMWORD[32+rsp],xmm6 + ror r13d,14 + movdqa xmm4,xmm0 + mov r8d,r14d + mov r12d,ebx + movdqa xmm7,xmm2 + ror r14d,9 + xor r13d,eax + xor r12d,ecx + ror r13d,5 + xor r14d,r8d +DB 102,15,58,15,227,4 + and r12d,eax + xor r13d,eax +DB 102,15,58,15,249,4 + add edx,DWORD[48+rsp] + mov r15d,r8d + xor r12d,ecx + ror r14d,11 + movdqa xmm5,xmm4 + xor r15d,r9d + add edx,r12d + movdqa xmm6,xmm4 + ror r13d,6 + and edi,r15d + psrld xmm4,3 + xor r14d,r8d + add edx,r13d + xor edi,r9d + paddd xmm3,xmm7 + ror r14d,2 + add r11d,edx + psrld xmm6,7 + add edx,edi + mov r13d,r11d + pshufd xmm7,xmm2,250 + add r14d,edx + ror r13d,14 + pslld xmm5,14 + mov edx,r14d + mov r12d,eax + pxor xmm4,xmm6 + ror r14d,9 + xor r13d,r11d + xor r12d,ebx + ror r13d,5 + psrld xmm6,11 + xor r14d,edx + pxor xmm4,xmm5 + and r12d,r11d + xor r13d,r11d + pslld xmm5,11 + add ecx,DWORD[52+rsp] + mov edi,edx + pxor xmm4,xmm6 + xor r12d,ebx + ror r14d,11 + movdqa xmm6,xmm7 + xor edi,r8d + add ecx,r12d + pxor xmm4,xmm5 + ror r13d,6 + and r15d,edi + xor r14d,edx + psrld xmm7,10 + add ecx,r13d + xor r15d,r8d + paddd xmm3,xmm4 + ror r14d,2 + add r10d,ecx + psrlq xmm6,17 + add ecx,r15d + mov r13d,r10d + add r14d,ecx + pxor xmm7,xmm6 + ror r13d,14 + mov ecx,r14d + mov r12d,r11d + ror r14d,9 + psrlq xmm6,2 + xor r13d,r10d + xor r12d,eax + pxor xmm7,xmm6 + ror r13d,5 + xor r14d,ecx + and r12d,r10d + pshufd xmm7,xmm7,128 + xor r13d,r10d + add ebx,DWORD[56+rsp] + mov r15d,ecx + psrldq xmm7,8 + xor r12d,eax + ror r14d,11 + xor r15d,edx + add ebx,r12d + ror r13d,6 + paddd xmm3,xmm7 + and edi,r15d + xor r14d,ecx + add ebx,r13d + pshufd xmm7,xmm3,80 + xor edi,edx + ror r14d,2 + add r9d,ebx + movdqa xmm6,xmm7 + add ebx,edi + mov r13d,r9d + psrld xmm7,10 + add r14d,ebx + ror r13d,14 + psrlq xmm6,17 + mov ebx,r14d + mov r12d,r10d + pxor xmm7,xmm6 + ror r14d,9 + xor r13d,r9d + xor r12d,r11d + ror r13d,5 + xor r14d,ebx + psrlq xmm6,2 + and r12d,r9d + xor r13d,r9d + add eax,DWORD[60+rsp] + pxor xmm7,xmm6 + mov edi,ebx + xor r12d,r11d + ror r14d,11 + pshufd xmm7,xmm7,8 + xor edi,ecx + add eax,r12d + movdqa xmm6,XMMWORD[96+rbp] + ror r13d,6 + and r15d,edi + pslldq xmm7,8 + xor r14d,ebx + add eax,r13d + xor r15d,ecx + paddd xmm3,xmm7 + ror r14d,2 + add r8d,eax + add eax,r15d + paddd xmm6,xmm3 + mov r13d,r8d + add r14d,eax + movdqa XMMWORD[48+rsp],xmm6 + cmp BYTE[131+rbp],0 + jne NEAR $L$ssse3_00_47 + ror r13d,14 + mov eax,r14d + mov r12d,r9d + ror r14d,9 + xor r13d,r8d + xor r12d,r10d + ror r13d,5 + xor r14d,eax + and r12d,r8d + xor r13d,r8d + add r11d,DWORD[rsp] + mov r15d,eax + xor r12d,r10d + ror r14d,11 + xor r15d,ebx + add r11d,r12d + ror r13d,6 + and edi,r15d + xor r14d,eax + add r11d,r13d + xor edi,ebx + ror r14d,2 + add edx,r11d + add r11d,edi + mov r13d,edx + add r14d,r11d + ror r13d,14 + mov r11d,r14d + mov r12d,r8d + ror r14d,9 + xor r13d,edx + xor r12d,r9d + ror r13d,5 + xor r14d,r11d + and r12d,edx + xor r13d,edx + add r10d,DWORD[4+rsp] + mov edi,r11d + xor r12d,r9d + ror r14d,11 + xor edi,eax + add r10d,r12d + ror r13d,6 + and r15d,edi + xor r14d,r11d + add r10d,r13d + xor r15d,eax + ror r14d,2 + add ecx,r10d + add r10d,r15d + mov r13d,ecx + add r14d,r10d + ror r13d,14 + mov r10d,r14d + mov r12d,edx + ror r14d,9 + xor r13d,ecx + xor r12d,r8d + ror r13d,5 + xor r14d,r10d + and r12d,ecx + xor r13d,ecx + add r9d,DWORD[8+rsp] + mov r15d,r10d + xor r12d,r8d + ror r14d,11 + xor r15d,r11d + add r9d,r12d + ror r13d,6 + and edi,r15d + xor r14d,r10d + add r9d,r13d + xor edi,r11d + ror r14d,2 + add ebx,r9d + add r9d,edi + mov r13d,ebx + add r14d,r9d + ror r13d,14 + mov r9d,r14d + mov r12d,ecx + ror r14d,9 + xor r13d,ebx + xor r12d,edx + ror r13d,5 + xor r14d,r9d + and r12d,ebx + xor r13d,ebx + add r8d,DWORD[12+rsp] + mov edi,r9d + xor r12d,edx + ror r14d,11 + xor edi,r10d + add r8d,r12d + ror r13d,6 + and r15d,edi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + ror r14d,2 + add eax,r8d + add r8d,r15d + mov r13d,eax + add r14d,r8d + ror r13d,14 + mov r8d,r14d + mov r12d,ebx + ror r14d,9 + xor r13d,eax + xor r12d,ecx + ror r13d,5 + xor r14d,r8d + and r12d,eax + xor r13d,eax + add edx,DWORD[16+rsp] + mov r15d,r8d + xor r12d,ecx + ror r14d,11 + xor r15d,r9d + add edx,r12d + ror r13d,6 + and edi,r15d + xor r14d,r8d + add edx,r13d + xor edi,r9d + ror r14d,2 + add r11d,edx + add edx,edi + mov r13d,r11d + add r14d,edx + ror r13d,14 + mov edx,r14d + mov r12d,eax + ror r14d,9 + xor r13d,r11d + xor r12d,ebx + ror r13d,5 + xor r14d,edx + and r12d,r11d + xor r13d,r11d + add ecx,DWORD[20+rsp] + mov edi,edx + xor r12d,ebx + ror r14d,11 + xor edi,r8d + add ecx,r12d + ror r13d,6 + and r15d,edi + xor r14d,edx + add ecx,r13d + xor r15d,r8d + ror r14d,2 + add r10d,ecx + add ecx,r15d + mov r13d,r10d + add r14d,ecx + ror r13d,14 + mov ecx,r14d + mov r12d,r11d + ror r14d,9 + xor r13d,r10d + xor r12d,eax + ror r13d,5 + xor r14d,ecx + and r12d,r10d + xor r13d,r10d + add ebx,DWORD[24+rsp] + mov r15d,ecx + xor r12d,eax + ror r14d,11 + xor r15d,edx + add ebx,r12d + ror r13d,6 + and edi,r15d + xor r14d,ecx + add ebx,r13d + xor edi,edx + ror r14d,2 + add r9d,ebx + add ebx,edi + mov r13d,r9d + add r14d,ebx + ror r13d,14 + mov ebx,r14d + mov r12d,r10d + ror r14d,9 + xor r13d,r9d + xor r12d,r11d + ror r13d,5 + xor r14d,ebx + and r12d,r9d + xor r13d,r9d + add eax,DWORD[28+rsp] + mov edi,ebx + xor r12d,r11d + ror r14d,11 + xor edi,ecx + add eax,r12d + ror r13d,6 + and r15d,edi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + ror r14d,2 + add r8d,eax + add eax,r15d + mov r13d,r8d + add r14d,eax + ror r13d,14 + mov eax,r14d + mov r12d,r9d + ror r14d,9 + xor r13d,r8d + xor r12d,r10d + ror r13d,5 + xor r14d,eax + and r12d,r8d + xor r13d,r8d + add r11d,DWORD[32+rsp] + mov r15d,eax + xor r12d,r10d + ror r14d,11 + xor r15d,ebx + add r11d,r12d + ror r13d,6 + and edi,r15d + xor r14d,eax + add r11d,r13d + xor edi,ebx + ror r14d,2 + add edx,r11d + add r11d,edi + mov r13d,edx + add r14d,r11d + ror r13d,14 + mov r11d,r14d + mov r12d,r8d + ror r14d,9 + xor r13d,edx + xor r12d,r9d + ror r13d,5 + xor r14d,r11d + and r12d,edx + xor r13d,edx + add r10d,DWORD[36+rsp] + mov edi,r11d + xor r12d,r9d + ror r14d,11 + xor edi,eax + add r10d,r12d + ror r13d,6 + and r15d,edi + xor r14d,r11d + add r10d,r13d + xor r15d,eax + ror r14d,2 + add ecx,r10d + add r10d,r15d + mov r13d,ecx + add r14d,r10d + ror r13d,14 + mov r10d,r14d + mov r12d,edx + ror r14d,9 + xor r13d,ecx + xor r12d,r8d + ror r13d,5 + xor r14d,r10d + and r12d,ecx + xor r13d,ecx + add r9d,DWORD[40+rsp] + mov r15d,r10d + xor r12d,r8d + ror r14d,11 + xor r15d,r11d + add r9d,r12d + ror r13d,6 + and edi,r15d + xor r14d,r10d + add r9d,r13d + xor edi,r11d + ror r14d,2 + add ebx,r9d + add r9d,edi + mov r13d,ebx + add r14d,r9d + ror r13d,14 + mov r9d,r14d + mov r12d,ecx + ror r14d,9 + xor r13d,ebx + xor r12d,edx + ror r13d,5 + xor r14d,r9d + and r12d,ebx + xor r13d,ebx + add r8d,DWORD[44+rsp] + mov edi,r9d + xor r12d,edx + ror r14d,11 + xor edi,r10d + add r8d,r12d + ror r13d,6 + and r15d,edi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + ror r14d,2 + add eax,r8d + add r8d,r15d + mov r13d,eax + add r14d,r8d + ror r13d,14 + mov r8d,r14d + mov r12d,ebx + ror r14d,9 + xor r13d,eax + xor r12d,ecx + ror r13d,5 + xor r14d,r8d + and r12d,eax + xor r13d,eax + add edx,DWORD[48+rsp] + mov r15d,r8d + xor r12d,ecx + ror r14d,11 + xor r15d,r9d + add edx,r12d + ror r13d,6 + and edi,r15d + xor r14d,r8d + add edx,r13d + xor edi,r9d + ror r14d,2 + add r11d,edx + add edx,edi + mov r13d,r11d + add r14d,edx + ror r13d,14 + mov edx,r14d + mov r12d,eax + ror r14d,9 + xor r13d,r11d + xor r12d,ebx + ror r13d,5 + xor r14d,edx + and r12d,r11d + xor r13d,r11d + add ecx,DWORD[52+rsp] + mov edi,edx + xor r12d,ebx + ror r14d,11 + xor edi,r8d + add ecx,r12d + ror r13d,6 + and r15d,edi + xor r14d,edx + add ecx,r13d + xor r15d,r8d + ror r14d,2 + add r10d,ecx + add ecx,r15d + mov r13d,r10d + add r14d,ecx + ror r13d,14 + mov ecx,r14d + mov r12d,r11d + ror r14d,9 + xor r13d,r10d + xor r12d,eax + ror r13d,5 + xor r14d,ecx + and r12d,r10d + xor r13d,r10d + add ebx,DWORD[56+rsp] + mov r15d,ecx + xor r12d,eax + ror r14d,11 + xor r15d,edx + add ebx,r12d + ror r13d,6 + and edi,r15d + xor r14d,ecx + add ebx,r13d + xor edi,edx + ror r14d,2 + add r9d,ebx + add ebx,edi + mov r13d,r9d + add r14d,ebx + ror r13d,14 + mov ebx,r14d + mov r12d,r10d + ror r14d,9 + xor r13d,r9d + xor r12d,r11d + ror r13d,5 + xor r14d,ebx + and r12d,r9d + xor r13d,r9d + add eax,DWORD[60+rsp] + mov edi,ebx + xor r12d,r11d + ror r14d,11 + xor edi,ecx + add eax,r12d + ror r13d,6 + and r15d,edi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + ror r14d,2 + add r8d,eax + add eax,r15d + mov r13d,r8d + add r14d,eax + mov rdi,QWORD[((64+0))+rsp] + mov eax,r14d + + add eax,DWORD[rdi] + lea rsi,[64+rsi] + add ebx,DWORD[4+rdi] + add ecx,DWORD[8+rdi] + add edx,DWORD[12+rdi] + add r8d,DWORD[16+rdi] + add r9d,DWORD[20+rdi] + add r10d,DWORD[24+rdi] + add r11d,DWORD[28+rdi] + + cmp rsi,QWORD[((64+16))+rsp] + + mov DWORD[rdi],eax + mov DWORD[4+rdi],ebx + mov DWORD[8+rdi],ecx + mov DWORD[12+rdi],edx + mov DWORD[16+rdi],r8d + mov DWORD[20+rdi],r9d + mov DWORD[24+rdi],r10d + mov DWORD[28+rdi],r11d + jb NEAR $L$loop_ssse3 + + mov rsi,QWORD[88+rsp] + + movaps xmm6,XMMWORD[((64+32))+rsp] + movaps xmm7,XMMWORD[((64+48))+rsp] + movaps xmm8,XMMWORD[((64+64))+rsp] + movaps xmm9,XMMWORD[((64+80))+rsp] + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue_ssse3: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha256_block_data_order_ssse3: + +ALIGN 64 +sha256_block_data_order_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha256_block_data_order_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$avx_shortcut: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + shl rdx,4 + sub rsp,160 + lea rdx,[rdx*4+rsi] + and rsp,-64 + mov QWORD[((64+0))+rsp],rdi + mov QWORD[((64+8))+rsp],rsi + mov QWORD[((64+16))+rsp],rdx + mov QWORD[88+rsp],rax + + movaps XMMWORD[(64+32)+rsp],xmm6 + movaps XMMWORD[(64+48)+rsp],xmm7 + movaps XMMWORD[(64+64)+rsp],xmm8 + movaps XMMWORD[(64+80)+rsp],xmm9 +$L$prologue_avx: + + vzeroupper + mov eax,DWORD[rdi] + mov ebx,DWORD[4+rdi] + mov ecx,DWORD[8+rdi] + mov edx,DWORD[12+rdi] + mov r8d,DWORD[16+rdi] + mov r9d,DWORD[20+rdi] + mov r10d,DWORD[24+rdi] + mov r11d,DWORD[28+rdi] + vmovdqa xmm8,XMMWORD[((K256+512+32))] + vmovdqa xmm9,XMMWORD[((K256+512+64))] + jmp NEAR $L$loop_avx +ALIGN 16 +$L$loop_avx: + vmovdqa xmm7,XMMWORD[((K256+512))] + vmovdqu xmm0,XMMWORD[rsi] + vmovdqu xmm1,XMMWORD[16+rsi] + vmovdqu xmm2,XMMWORD[32+rsi] + vmovdqu xmm3,XMMWORD[48+rsi] + vpshufb xmm0,xmm0,xmm7 + lea rbp,[K256] + vpshufb xmm1,xmm1,xmm7 + vpshufb xmm2,xmm2,xmm7 + vpaddd xmm4,xmm0,XMMWORD[rbp] + vpshufb xmm3,xmm3,xmm7 + vpaddd xmm5,xmm1,XMMWORD[32+rbp] + vpaddd xmm6,xmm2,XMMWORD[64+rbp] + vpaddd xmm7,xmm3,XMMWORD[96+rbp] + vmovdqa XMMWORD[rsp],xmm4 + mov r14d,eax + vmovdqa XMMWORD[16+rsp],xmm5 + mov edi,ebx + vmovdqa XMMWORD[32+rsp],xmm6 + xor edi,ecx + vmovdqa XMMWORD[48+rsp],xmm7 + mov r13d,r8d + jmp NEAR $L$avx_00_47 + +ALIGN 16 +$L$avx_00_47: + sub rbp,-128 + vpalignr xmm4,xmm1,xmm0,4 + shrd r13d,r13d,14 + mov eax,r14d + mov r12d,r9d + vpalignr xmm7,xmm3,xmm2,4 + shrd r14d,r14d,9 + xor r13d,r8d + xor r12d,r10d + vpsrld xmm6,xmm4,7 + shrd r13d,r13d,5 + xor r14d,eax + and r12d,r8d + vpaddd xmm0,xmm0,xmm7 + xor r13d,r8d + add r11d,DWORD[rsp] + mov r15d,eax + vpsrld xmm7,xmm4,3 + xor r12d,r10d + shrd r14d,r14d,11 + xor r15d,ebx + vpslld xmm5,xmm4,14 + add r11d,r12d + shrd r13d,r13d,6 + and edi,r15d + vpxor xmm4,xmm7,xmm6 + xor r14d,eax + add r11d,r13d + xor edi,ebx + vpshufd xmm7,xmm3,250 + shrd r14d,r14d,2 + add edx,r11d + add r11d,edi + vpsrld xmm6,xmm6,11 + mov r13d,edx + add r14d,r11d + shrd r13d,r13d,14 + vpxor xmm4,xmm4,xmm5 + mov r11d,r14d + mov r12d,r8d + shrd r14d,r14d,9 + vpslld xmm5,xmm5,11 + xor r13d,edx + xor r12d,r9d + shrd r13d,r13d,5 + vpxor xmm4,xmm4,xmm6 + xor r14d,r11d + and r12d,edx + xor r13d,edx + vpsrld xmm6,xmm7,10 + add r10d,DWORD[4+rsp] + mov edi,r11d + xor r12d,r9d + vpxor xmm4,xmm4,xmm5 + shrd r14d,r14d,11 + xor edi,eax + add r10d,r12d + vpsrlq xmm7,xmm7,17 + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r11d + vpaddd xmm0,xmm0,xmm4 + add r10d,r13d + xor r15d,eax + shrd r14d,r14d,2 + vpxor xmm6,xmm6,xmm7 + add ecx,r10d + add r10d,r15d + mov r13d,ecx + vpsrlq xmm7,xmm7,2 + add r14d,r10d + shrd r13d,r13d,14 + mov r10d,r14d + vpxor xmm6,xmm6,xmm7 + mov r12d,edx + shrd r14d,r14d,9 + xor r13d,ecx + vpshufb xmm6,xmm6,xmm8 + xor r12d,r8d + shrd r13d,r13d,5 + xor r14d,r10d + vpaddd xmm0,xmm0,xmm6 + and r12d,ecx + xor r13d,ecx + add r9d,DWORD[8+rsp] + vpshufd xmm7,xmm0,80 + mov r15d,r10d + xor r12d,r8d + shrd r14d,r14d,11 + vpsrld xmm6,xmm7,10 + xor r15d,r11d + add r9d,r12d + shrd r13d,r13d,6 + vpsrlq xmm7,xmm7,17 + and edi,r15d + xor r14d,r10d + add r9d,r13d + vpxor xmm6,xmm6,xmm7 + xor edi,r11d + shrd r14d,r14d,2 + add ebx,r9d + vpsrlq xmm7,xmm7,2 + add r9d,edi + mov r13d,ebx + add r14d,r9d + vpxor xmm6,xmm6,xmm7 + shrd r13d,r13d,14 + mov r9d,r14d + mov r12d,ecx + vpshufb xmm6,xmm6,xmm9 + shrd r14d,r14d,9 + xor r13d,ebx + xor r12d,edx + vpaddd xmm0,xmm0,xmm6 + shrd r13d,r13d,5 + xor r14d,r9d + and r12d,ebx + vpaddd xmm6,xmm0,XMMWORD[rbp] + xor r13d,ebx + add r8d,DWORD[12+rsp] + mov edi,r9d + xor r12d,edx + shrd r14d,r14d,11 + xor edi,r10d + add r8d,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + shrd r14d,r14d,2 + add eax,r8d + add r8d,r15d + mov r13d,eax + add r14d,r8d + vmovdqa XMMWORD[rsp],xmm6 + vpalignr xmm4,xmm2,xmm1,4 + shrd r13d,r13d,14 + mov r8d,r14d + mov r12d,ebx + vpalignr xmm7,xmm0,xmm3,4 + shrd r14d,r14d,9 + xor r13d,eax + xor r12d,ecx + vpsrld xmm6,xmm4,7 + shrd r13d,r13d,5 + xor r14d,r8d + and r12d,eax + vpaddd xmm1,xmm1,xmm7 + xor r13d,eax + add edx,DWORD[16+rsp] + mov r15d,r8d + vpsrld xmm7,xmm4,3 + xor r12d,ecx + shrd r14d,r14d,11 + xor r15d,r9d + vpslld xmm5,xmm4,14 + add edx,r12d + shrd r13d,r13d,6 + and edi,r15d + vpxor xmm4,xmm7,xmm6 + xor r14d,r8d + add edx,r13d + xor edi,r9d + vpshufd xmm7,xmm0,250 + shrd r14d,r14d,2 + add r11d,edx + add edx,edi + vpsrld xmm6,xmm6,11 + mov r13d,r11d + add r14d,edx + shrd r13d,r13d,14 + vpxor xmm4,xmm4,xmm5 + mov edx,r14d + mov r12d,eax + shrd r14d,r14d,9 + vpslld xmm5,xmm5,11 + xor r13d,r11d + xor r12d,ebx + shrd r13d,r13d,5 + vpxor xmm4,xmm4,xmm6 + xor r14d,edx + and r12d,r11d + xor r13d,r11d + vpsrld xmm6,xmm7,10 + add ecx,DWORD[20+rsp] + mov edi,edx + xor r12d,ebx + vpxor xmm4,xmm4,xmm5 + shrd r14d,r14d,11 + xor edi,r8d + add ecx,r12d + vpsrlq xmm7,xmm7,17 + shrd r13d,r13d,6 + and r15d,edi + xor r14d,edx + vpaddd xmm1,xmm1,xmm4 + add ecx,r13d + xor r15d,r8d + shrd r14d,r14d,2 + vpxor xmm6,xmm6,xmm7 + add r10d,ecx + add ecx,r15d + mov r13d,r10d + vpsrlq xmm7,xmm7,2 + add r14d,ecx + shrd r13d,r13d,14 + mov ecx,r14d + vpxor xmm6,xmm6,xmm7 + mov r12d,r11d + shrd r14d,r14d,9 + xor r13d,r10d + vpshufb xmm6,xmm6,xmm8 + xor r12d,eax + shrd r13d,r13d,5 + xor r14d,ecx + vpaddd xmm1,xmm1,xmm6 + and r12d,r10d + xor r13d,r10d + add ebx,DWORD[24+rsp] + vpshufd xmm7,xmm1,80 + mov r15d,ecx + xor r12d,eax + shrd r14d,r14d,11 + vpsrld xmm6,xmm7,10 + xor r15d,edx + add ebx,r12d + shrd r13d,r13d,6 + vpsrlq xmm7,xmm7,17 + and edi,r15d + xor r14d,ecx + add ebx,r13d + vpxor xmm6,xmm6,xmm7 + xor edi,edx + shrd r14d,r14d,2 + add r9d,ebx + vpsrlq xmm7,xmm7,2 + add ebx,edi + mov r13d,r9d + add r14d,ebx + vpxor xmm6,xmm6,xmm7 + shrd r13d,r13d,14 + mov ebx,r14d + mov r12d,r10d + vpshufb xmm6,xmm6,xmm9 + shrd r14d,r14d,9 + xor r13d,r9d + xor r12d,r11d + vpaddd xmm1,xmm1,xmm6 + shrd r13d,r13d,5 + xor r14d,ebx + and r12d,r9d + vpaddd xmm6,xmm1,XMMWORD[32+rbp] + xor r13d,r9d + add eax,DWORD[28+rsp] + mov edi,ebx + xor r12d,r11d + shrd r14d,r14d,11 + xor edi,ecx + add eax,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + shrd r14d,r14d,2 + add r8d,eax + add eax,r15d + mov r13d,r8d + add r14d,eax + vmovdqa XMMWORD[16+rsp],xmm6 + vpalignr xmm4,xmm3,xmm2,4 + shrd r13d,r13d,14 + mov eax,r14d + mov r12d,r9d + vpalignr xmm7,xmm1,xmm0,4 + shrd r14d,r14d,9 + xor r13d,r8d + xor r12d,r10d + vpsrld xmm6,xmm4,7 + shrd r13d,r13d,5 + xor r14d,eax + and r12d,r8d + vpaddd xmm2,xmm2,xmm7 + xor r13d,r8d + add r11d,DWORD[32+rsp] + mov r15d,eax + vpsrld xmm7,xmm4,3 + xor r12d,r10d + shrd r14d,r14d,11 + xor r15d,ebx + vpslld xmm5,xmm4,14 + add r11d,r12d + shrd r13d,r13d,6 + and edi,r15d + vpxor xmm4,xmm7,xmm6 + xor r14d,eax + add r11d,r13d + xor edi,ebx + vpshufd xmm7,xmm1,250 + shrd r14d,r14d,2 + add edx,r11d + add r11d,edi + vpsrld xmm6,xmm6,11 + mov r13d,edx + add r14d,r11d + shrd r13d,r13d,14 + vpxor xmm4,xmm4,xmm5 + mov r11d,r14d + mov r12d,r8d + shrd r14d,r14d,9 + vpslld xmm5,xmm5,11 + xor r13d,edx + xor r12d,r9d + shrd r13d,r13d,5 + vpxor xmm4,xmm4,xmm6 + xor r14d,r11d + and r12d,edx + xor r13d,edx + vpsrld xmm6,xmm7,10 + add r10d,DWORD[36+rsp] + mov edi,r11d + xor r12d,r9d + vpxor xmm4,xmm4,xmm5 + shrd r14d,r14d,11 + xor edi,eax + add r10d,r12d + vpsrlq xmm7,xmm7,17 + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r11d + vpaddd xmm2,xmm2,xmm4 + add r10d,r13d + xor r15d,eax + shrd r14d,r14d,2 + vpxor xmm6,xmm6,xmm7 + add ecx,r10d + add r10d,r15d + mov r13d,ecx + vpsrlq xmm7,xmm7,2 + add r14d,r10d + shrd r13d,r13d,14 + mov r10d,r14d + vpxor xmm6,xmm6,xmm7 + mov r12d,edx + shrd r14d,r14d,9 + xor r13d,ecx + vpshufb xmm6,xmm6,xmm8 + xor r12d,r8d + shrd r13d,r13d,5 + xor r14d,r10d + vpaddd xmm2,xmm2,xmm6 + and r12d,ecx + xor r13d,ecx + add r9d,DWORD[40+rsp] + vpshufd xmm7,xmm2,80 + mov r15d,r10d + xor r12d,r8d + shrd r14d,r14d,11 + vpsrld xmm6,xmm7,10 + xor r15d,r11d + add r9d,r12d + shrd r13d,r13d,6 + vpsrlq xmm7,xmm7,17 + and edi,r15d + xor r14d,r10d + add r9d,r13d + vpxor xmm6,xmm6,xmm7 + xor edi,r11d + shrd r14d,r14d,2 + add ebx,r9d + vpsrlq xmm7,xmm7,2 + add r9d,edi + mov r13d,ebx + add r14d,r9d + vpxor xmm6,xmm6,xmm7 + shrd r13d,r13d,14 + mov r9d,r14d + mov r12d,ecx + vpshufb xmm6,xmm6,xmm9 + shrd r14d,r14d,9 + xor r13d,ebx + xor r12d,edx + vpaddd xmm2,xmm2,xmm6 + shrd r13d,r13d,5 + xor r14d,r9d + and r12d,ebx + vpaddd xmm6,xmm2,XMMWORD[64+rbp] + xor r13d,ebx + add r8d,DWORD[44+rsp] + mov edi,r9d + xor r12d,edx + shrd r14d,r14d,11 + xor edi,r10d + add r8d,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + shrd r14d,r14d,2 + add eax,r8d + add r8d,r15d + mov r13d,eax + add r14d,r8d + vmovdqa XMMWORD[32+rsp],xmm6 + vpalignr xmm4,xmm0,xmm3,4 + shrd r13d,r13d,14 + mov r8d,r14d + mov r12d,ebx + vpalignr xmm7,xmm2,xmm1,4 + shrd r14d,r14d,9 + xor r13d,eax + xor r12d,ecx + vpsrld xmm6,xmm4,7 + shrd r13d,r13d,5 + xor r14d,r8d + and r12d,eax + vpaddd xmm3,xmm3,xmm7 + xor r13d,eax + add edx,DWORD[48+rsp] + mov r15d,r8d + vpsrld xmm7,xmm4,3 + xor r12d,ecx + shrd r14d,r14d,11 + xor r15d,r9d + vpslld xmm5,xmm4,14 + add edx,r12d + shrd r13d,r13d,6 + and edi,r15d + vpxor xmm4,xmm7,xmm6 + xor r14d,r8d + add edx,r13d + xor edi,r9d + vpshufd xmm7,xmm2,250 + shrd r14d,r14d,2 + add r11d,edx + add edx,edi + vpsrld xmm6,xmm6,11 + mov r13d,r11d + add r14d,edx + shrd r13d,r13d,14 + vpxor xmm4,xmm4,xmm5 + mov edx,r14d + mov r12d,eax + shrd r14d,r14d,9 + vpslld xmm5,xmm5,11 + xor r13d,r11d + xor r12d,ebx + shrd r13d,r13d,5 + vpxor xmm4,xmm4,xmm6 + xor r14d,edx + and r12d,r11d + xor r13d,r11d + vpsrld xmm6,xmm7,10 + add ecx,DWORD[52+rsp] + mov edi,edx + xor r12d,ebx + vpxor xmm4,xmm4,xmm5 + shrd r14d,r14d,11 + xor edi,r8d + add ecx,r12d + vpsrlq xmm7,xmm7,17 + shrd r13d,r13d,6 + and r15d,edi + xor r14d,edx + vpaddd xmm3,xmm3,xmm4 + add ecx,r13d + xor r15d,r8d + shrd r14d,r14d,2 + vpxor xmm6,xmm6,xmm7 + add r10d,ecx + add ecx,r15d + mov r13d,r10d + vpsrlq xmm7,xmm7,2 + add r14d,ecx + shrd r13d,r13d,14 + mov ecx,r14d + vpxor xmm6,xmm6,xmm7 + mov r12d,r11d + shrd r14d,r14d,9 + xor r13d,r10d + vpshufb xmm6,xmm6,xmm8 + xor r12d,eax + shrd r13d,r13d,5 + xor r14d,ecx + vpaddd xmm3,xmm3,xmm6 + and r12d,r10d + xor r13d,r10d + add ebx,DWORD[56+rsp] + vpshufd xmm7,xmm3,80 + mov r15d,ecx + xor r12d,eax + shrd r14d,r14d,11 + vpsrld xmm6,xmm7,10 + xor r15d,edx + add ebx,r12d + shrd r13d,r13d,6 + vpsrlq xmm7,xmm7,17 + and edi,r15d + xor r14d,ecx + add ebx,r13d + vpxor xmm6,xmm6,xmm7 + xor edi,edx + shrd r14d,r14d,2 + add r9d,ebx + vpsrlq xmm7,xmm7,2 + add ebx,edi + mov r13d,r9d + add r14d,ebx + vpxor xmm6,xmm6,xmm7 + shrd r13d,r13d,14 + mov ebx,r14d + mov r12d,r10d + vpshufb xmm6,xmm6,xmm9 + shrd r14d,r14d,9 + xor r13d,r9d + xor r12d,r11d + vpaddd xmm3,xmm3,xmm6 + shrd r13d,r13d,5 + xor r14d,ebx + and r12d,r9d + vpaddd xmm6,xmm3,XMMWORD[96+rbp] + xor r13d,r9d + add eax,DWORD[60+rsp] + mov edi,ebx + xor r12d,r11d + shrd r14d,r14d,11 + xor edi,ecx + add eax,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + shrd r14d,r14d,2 + add r8d,eax + add eax,r15d + mov r13d,r8d + add r14d,eax + vmovdqa XMMWORD[48+rsp],xmm6 + cmp BYTE[131+rbp],0 + jne NEAR $L$avx_00_47 + shrd r13d,r13d,14 + mov eax,r14d + mov r12d,r9d + shrd r14d,r14d,9 + xor r13d,r8d + xor r12d,r10d + shrd r13d,r13d,5 + xor r14d,eax + and r12d,r8d + xor r13d,r8d + add r11d,DWORD[rsp] + mov r15d,eax + xor r12d,r10d + shrd r14d,r14d,11 + xor r15d,ebx + add r11d,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,eax + add r11d,r13d + xor edi,ebx + shrd r14d,r14d,2 + add edx,r11d + add r11d,edi + mov r13d,edx + add r14d,r11d + shrd r13d,r13d,14 + mov r11d,r14d + mov r12d,r8d + shrd r14d,r14d,9 + xor r13d,edx + xor r12d,r9d + shrd r13d,r13d,5 + xor r14d,r11d + and r12d,edx + xor r13d,edx + add r10d,DWORD[4+rsp] + mov edi,r11d + xor r12d,r9d + shrd r14d,r14d,11 + xor edi,eax + add r10d,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r11d + add r10d,r13d + xor r15d,eax + shrd r14d,r14d,2 + add ecx,r10d + add r10d,r15d + mov r13d,ecx + add r14d,r10d + shrd r13d,r13d,14 + mov r10d,r14d + mov r12d,edx + shrd r14d,r14d,9 + xor r13d,ecx + xor r12d,r8d + shrd r13d,r13d,5 + xor r14d,r10d + and r12d,ecx + xor r13d,ecx + add r9d,DWORD[8+rsp] + mov r15d,r10d + xor r12d,r8d + shrd r14d,r14d,11 + xor r15d,r11d + add r9d,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,r10d + add r9d,r13d + xor edi,r11d + shrd r14d,r14d,2 + add ebx,r9d + add r9d,edi + mov r13d,ebx + add r14d,r9d + shrd r13d,r13d,14 + mov r9d,r14d + mov r12d,ecx + shrd r14d,r14d,9 + xor r13d,ebx + xor r12d,edx + shrd r13d,r13d,5 + xor r14d,r9d + and r12d,ebx + xor r13d,ebx + add r8d,DWORD[12+rsp] + mov edi,r9d + xor r12d,edx + shrd r14d,r14d,11 + xor edi,r10d + add r8d,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + shrd r14d,r14d,2 + add eax,r8d + add r8d,r15d + mov r13d,eax + add r14d,r8d + shrd r13d,r13d,14 + mov r8d,r14d + mov r12d,ebx + shrd r14d,r14d,9 + xor r13d,eax + xor r12d,ecx + shrd r13d,r13d,5 + xor r14d,r8d + and r12d,eax + xor r13d,eax + add edx,DWORD[16+rsp] + mov r15d,r8d + xor r12d,ecx + shrd r14d,r14d,11 + xor r15d,r9d + add edx,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,r8d + add edx,r13d + xor edi,r9d + shrd r14d,r14d,2 + add r11d,edx + add edx,edi + mov r13d,r11d + add r14d,edx + shrd r13d,r13d,14 + mov edx,r14d + mov r12d,eax + shrd r14d,r14d,9 + xor r13d,r11d + xor r12d,ebx + shrd r13d,r13d,5 + xor r14d,edx + and r12d,r11d + xor r13d,r11d + add ecx,DWORD[20+rsp] + mov edi,edx + xor r12d,ebx + shrd r14d,r14d,11 + xor edi,r8d + add ecx,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,edx + add ecx,r13d + xor r15d,r8d + shrd r14d,r14d,2 + add r10d,ecx + add ecx,r15d + mov r13d,r10d + add r14d,ecx + shrd r13d,r13d,14 + mov ecx,r14d + mov r12d,r11d + shrd r14d,r14d,9 + xor r13d,r10d + xor r12d,eax + shrd r13d,r13d,5 + xor r14d,ecx + and r12d,r10d + xor r13d,r10d + add ebx,DWORD[24+rsp] + mov r15d,ecx + xor r12d,eax + shrd r14d,r14d,11 + xor r15d,edx + add ebx,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,ecx + add ebx,r13d + xor edi,edx + shrd r14d,r14d,2 + add r9d,ebx + add ebx,edi + mov r13d,r9d + add r14d,ebx + shrd r13d,r13d,14 + mov ebx,r14d + mov r12d,r10d + shrd r14d,r14d,9 + xor r13d,r9d + xor r12d,r11d + shrd r13d,r13d,5 + xor r14d,ebx + and r12d,r9d + xor r13d,r9d + add eax,DWORD[28+rsp] + mov edi,ebx + xor r12d,r11d + shrd r14d,r14d,11 + xor edi,ecx + add eax,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + shrd r14d,r14d,2 + add r8d,eax + add eax,r15d + mov r13d,r8d + add r14d,eax + shrd r13d,r13d,14 + mov eax,r14d + mov r12d,r9d + shrd r14d,r14d,9 + xor r13d,r8d + xor r12d,r10d + shrd r13d,r13d,5 + xor r14d,eax + and r12d,r8d + xor r13d,r8d + add r11d,DWORD[32+rsp] + mov r15d,eax + xor r12d,r10d + shrd r14d,r14d,11 + xor r15d,ebx + add r11d,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,eax + add r11d,r13d + xor edi,ebx + shrd r14d,r14d,2 + add edx,r11d + add r11d,edi + mov r13d,edx + add r14d,r11d + shrd r13d,r13d,14 + mov r11d,r14d + mov r12d,r8d + shrd r14d,r14d,9 + xor r13d,edx + xor r12d,r9d + shrd r13d,r13d,5 + xor r14d,r11d + and r12d,edx + xor r13d,edx + add r10d,DWORD[36+rsp] + mov edi,r11d + xor r12d,r9d + shrd r14d,r14d,11 + xor edi,eax + add r10d,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r11d + add r10d,r13d + xor r15d,eax + shrd r14d,r14d,2 + add ecx,r10d + add r10d,r15d + mov r13d,ecx + add r14d,r10d + shrd r13d,r13d,14 + mov r10d,r14d + mov r12d,edx + shrd r14d,r14d,9 + xor r13d,ecx + xor r12d,r8d + shrd r13d,r13d,5 + xor r14d,r10d + and r12d,ecx + xor r13d,ecx + add r9d,DWORD[40+rsp] + mov r15d,r10d + xor r12d,r8d + shrd r14d,r14d,11 + xor r15d,r11d + add r9d,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,r10d + add r9d,r13d + xor edi,r11d + shrd r14d,r14d,2 + add ebx,r9d + add r9d,edi + mov r13d,ebx + add r14d,r9d + shrd r13d,r13d,14 + mov r9d,r14d + mov r12d,ecx + shrd r14d,r14d,9 + xor r13d,ebx + xor r12d,edx + shrd r13d,r13d,5 + xor r14d,r9d + and r12d,ebx + xor r13d,ebx + add r8d,DWORD[44+rsp] + mov edi,r9d + xor r12d,edx + shrd r14d,r14d,11 + xor edi,r10d + add r8d,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,r9d + add r8d,r13d + xor r15d,r10d + shrd r14d,r14d,2 + add eax,r8d + add r8d,r15d + mov r13d,eax + add r14d,r8d + shrd r13d,r13d,14 + mov r8d,r14d + mov r12d,ebx + shrd r14d,r14d,9 + xor r13d,eax + xor r12d,ecx + shrd r13d,r13d,5 + xor r14d,r8d + and r12d,eax + xor r13d,eax + add edx,DWORD[48+rsp] + mov r15d,r8d + xor r12d,ecx + shrd r14d,r14d,11 + xor r15d,r9d + add edx,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,r8d + add edx,r13d + xor edi,r9d + shrd r14d,r14d,2 + add r11d,edx + add edx,edi + mov r13d,r11d + add r14d,edx + shrd r13d,r13d,14 + mov edx,r14d + mov r12d,eax + shrd r14d,r14d,9 + xor r13d,r11d + xor r12d,ebx + shrd r13d,r13d,5 + xor r14d,edx + and r12d,r11d + xor r13d,r11d + add ecx,DWORD[52+rsp] + mov edi,edx + xor r12d,ebx + shrd r14d,r14d,11 + xor edi,r8d + add ecx,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,edx + add ecx,r13d + xor r15d,r8d + shrd r14d,r14d,2 + add r10d,ecx + add ecx,r15d + mov r13d,r10d + add r14d,ecx + shrd r13d,r13d,14 + mov ecx,r14d + mov r12d,r11d + shrd r14d,r14d,9 + xor r13d,r10d + xor r12d,eax + shrd r13d,r13d,5 + xor r14d,ecx + and r12d,r10d + xor r13d,r10d + add ebx,DWORD[56+rsp] + mov r15d,ecx + xor r12d,eax + shrd r14d,r14d,11 + xor r15d,edx + add ebx,r12d + shrd r13d,r13d,6 + and edi,r15d + xor r14d,ecx + add ebx,r13d + xor edi,edx + shrd r14d,r14d,2 + add r9d,ebx + add ebx,edi + mov r13d,r9d + add r14d,ebx + shrd r13d,r13d,14 + mov ebx,r14d + mov r12d,r10d + shrd r14d,r14d,9 + xor r13d,r9d + xor r12d,r11d + shrd r13d,r13d,5 + xor r14d,ebx + and r12d,r9d + xor r13d,r9d + add eax,DWORD[60+rsp] + mov edi,ebx + xor r12d,r11d + shrd r14d,r14d,11 + xor edi,ecx + add eax,r12d + shrd r13d,r13d,6 + and r15d,edi + xor r14d,ebx + add eax,r13d + xor r15d,ecx + shrd r14d,r14d,2 + add r8d,eax + add eax,r15d + mov r13d,r8d + add r14d,eax + mov rdi,QWORD[((64+0))+rsp] + mov eax,r14d + + add eax,DWORD[rdi] + lea rsi,[64+rsi] + add ebx,DWORD[4+rdi] + add ecx,DWORD[8+rdi] + add edx,DWORD[12+rdi] + add r8d,DWORD[16+rdi] + add r9d,DWORD[20+rdi] + add r10d,DWORD[24+rdi] + add r11d,DWORD[28+rdi] + + cmp rsi,QWORD[((64+16))+rsp] + + mov DWORD[rdi],eax + mov DWORD[4+rdi],ebx + mov DWORD[8+rdi],ecx + mov DWORD[12+rdi],edx + mov DWORD[16+rdi],r8d + mov DWORD[20+rdi],r9d + mov DWORD[24+rdi],r10d + mov DWORD[28+rdi],r11d + jb NEAR $L$loop_avx + + mov rsi,QWORD[88+rsp] + + vzeroupper + movaps xmm6,XMMWORD[((64+32))+rsp] + movaps xmm7,XMMWORD[((64+48))+rsp] + movaps xmm8,XMMWORD[((64+64))+rsp] + movaps xmm9,XMMWORD[((64+80))+rsp] + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue_avx: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha256_block_data_order_avx: + +ALIGN 64 +sha256_block_data_order_avx2: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha256_block_data_order_avx2: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$avx2_shortcut: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,608 + shl rdx,4 + and rsp,-256*4 + lea rdx,[rdx*4+rsi] + add rsp,448 + mov QWORD[((64+0))+rsp],rdi + mov QWORD[((64+8))+rsp],rsi + mov QWORD[((64+16))+rsp],rdx + mov QWORD[88+rsp],rax + + movaps XMMWORD[(64+32)+rsp],xmm6 + movaps XMMWORD[(64+48)+rsp],xmm7 + movaps XMMWORD[(64+64)+rsp],xmm8 + movaps XMMWORD[(64+80)+rsp],xmm9 +$L$prologue_avx2: + + vzeroupper + sub rsi,-16*4 + mov eax,DWORD[rdi] + mov r12,rsi + mov ebx,DWORD[4+rdi] + cmp rsi,rdx + mov ecx,DWORD[8+rdi] + cmove r12,rsp + mov edx,DWORD[12+rdi] + mov r8d,DWORD[16+rdi] + mov r9d,DWORD[20+rdi] + mov r10d,DWORD[24+rdi] + mov r11d,DWORD[28+rdi] + vmovdqa ymm8,YMMWORD[((K256+512+32))] + vmovdqa ymm9,YMMWORD[((K256+512+64))] + jmp NEAR $L$oop_avx2 +ALIGN 16 +$L$oop_avx2: + vmovdqa ymm7,YMMWORD[((K256+512))] + vmovdqu xmm0,XMMWORD[((-64+0))+rsi] + vmovdqu xmm1,XMMWORD[((-64+16))+rsi] + vmovdqu xmm2,XMMWORD[((-64+32))+rsi] + vmovdqu xmm3,XMMWORD[((-64+48))+rsi] + + vinserti128 ymm0,ymm0,XMMWORD[r12],1 + vinserti128 ymm1,ymm1,XMMWORD[16+r12],1 + vpshufb ymm0,ymm0,ymm7 + vinserti128 ymm2,ymm2,XMMWORD[32+r12],1 + vpshufb ymm1,ymm1,ymm7 + vinserti128 ymm3,ymm3,XMMWORD[48+r12],1 + + lea rbp,[K256] + vpshufb ymm2,ymm2,ymm7 + vpaddd ymm4,ymm0,YMMWORD[rbp] + vpshufb ymm3,ymm3,ymm7 + vpaddd ymm5,ymm1,YMMWORD[32+rbp] + vpaddd ymm6,ymm2,YMMWORD[64+rbp] + vpaddd ymm7,ymm3,YMMWORD[96+rbp] + vmovdqa YMMWORD[rsp],ymm4 + xor r14d,r14d + vmovdqa YMMWORD[32+rsp],ymm5 + lea rsp,[((-64))+rsp] + mov edi,ebx + vmovdqa YMMWORD[rsp],ymm6 + xor edi,ecx + vmovdqa YMMWORD[32+rsp],ymm7 + mov r12d,r9d + sub rbp,-16*2*4 + jmp NEAR $L$avx2_00_47 + +ALIGN 16 +$L$avx2_00_47: + lea rsp,[((-64))+rsp] + vpalignr ymm4,ymm1,ymm0,4 + add r11d,DWORD[((0+128))+rsp] + and r12d,r8d + rorx r13d,r8d,25 + vpalignr ymm7,ymm3,ymm2,4 + rorx r15d,r8d,11 + lea eax,[r14*1+rax] + lea r11d,[r12*1+r11] + vpsrld ymm6,ymm4,7 + andn r12d,r8d,r10d + xor r13d,r15d + rorx r14d,r8d,6 + vpaddd ymm0,ymm0,ymm7 + lea r11d,[r12*1+r11] + xor r13d,r14d + mov r15d,eax + vpsrld ymm7,ymm4,3 + rorx r12d,eax,22 + lea r11d,[r13*1+r11] + xor r15d,ebx + vpslld ymm5,ymm4,14 + rorx r14d,eax,13 + rorx r13d,eax,2 + lea edx,[r11*1+rdx] + vpxor ymm4,ymm7,ymm6 + and edi,r15d + xor r14d,r12d + xor edi,ebx + vpshufd ymm7,ymm3,250 + xor r14d,r13d + lea r11d,[rdi*1+r11] + mov r12d,r8d + vpsrld ymm6,ymm6,11 + add r10d,DWORD[((4+128))+rsp] + and r12d,edx + rorx r13d,edx,25 + vpxor ymm4,ymm4,ymm5 + rorx edi,edx,11 + lea r11d,[r14*1+r11] + lea r10d,[r12*1+r10] + vpslld ymm5,ymm5,11 + andn r12d,edx,r9d + xor r13d,edi + rorx r14d,edx,6 + vpxor ymm4,ymm4,ymm6 + lea r10d,[r12*1+r10] + xor r13d,r14d + mov edi,r11d + vpsrld ymm6,ymm7,10 + rorx r12d,r11d,22 + lea r10d,[r13*1+r10] + xor edi,eax + vpxor ymm4,ymm4,ymm5 + rorx r14d,r11d,13 + rorx r13d,r11d,2 + lea ecx,[r10*1+rcx] + vpsrlq ymm7,ymm7,17 + and r15d,edi + xor r14d,r12d + xor r15d,eax + vpaddd ymm0,ymm0,ymm4 + xor r14d,r13d + lea r10d,[r15*1+r10] + mov r12d,edx + vpxor ymm6,ymm6,ymm7 + add r9d,DWORD[((8+128))+rsp] + and r12d,ecx + rorx r13d,ecx,25 + vpsrlq ymm7,ymm7,2 + rorx r15d,ecx,11 + lea r10d,[r14*1+r10] + lea r9d,[r12*1+r9] + vpxor ymm6,ymm6,ymm7 + andn r12d,ecx,r8d + xor r13d,r15d + rorx r14d,ecx,6 + vpshufb ymm6,ymm6,ymm8 + lea r9d,[r12*1+r9] + xor r13d,r14d + mov r15d,r10d + vpaddd ymm0,ymm0,ymm6 + rorx r12d,r10d,22 + lea r9d,[r13*1+r9] + xor r15d,r11d + vpshufd ymm7,ymm0,80 + rorx r14d,r10d,13 + rorx r13d,r10d,2 + lea ebx,[r9*1+rbx] + vpsrld ymm6,ymm7,10 + and edi,r15d + xor r14d,r12d + xor edi,r11d + vpsrlq ymm7,ymm7,17 + xor r14d,r13d + lea r9d,[rdi*1+r9] + mov r12d,ecx + vpxor ymm6,ymm6,ymm7 + add r8d,DWORD[((12+128))+rsp] + and r12d,ebx + rorx r13d,ebx,25 + vpsrlq ymm7,ymm7,2 + rorx edi,ebx,11 + lea r9d,[r14*1+r9] + lea r8d,[r12*1+r8] + vpxor ymm6,ymm6,ymm7 + andn r12d,ebx,edx + xor r13d,edi + rorx r14d,ebx,6 + vpshufb ymm6,ymm6,ymm9 + lea r8d,[r12*1+r8] + xor r13d,r14d + mov edi,r9d + vpaddd ymm0,ymm0,ymm6 + rorx r12d,r9d,22 + lea r8d,[r13*1+r8] + xor edi,r10d + vpaddd ymm6,ymm0,YMMWORD[rbp] + rorx r14d,r9d,13 + rorx r13d,r9d,2 + lea eax,[r8*1+rax] + and r15d,edi + xor r14d,r12d + xor r15d,r10d + xor r14d,r13d + lea r8d,[r15*1+r8] + mov r12d,ebx + vmovdqa YMMWORD[rsp],ymm6 + vpalignr ymm4,ymm2,ymm1,4 + add edx,DWORD[((32+128))+rsp] + and r12d,eax + rorx r13d,eax,25 + vpalignr ymm7,ymm0,ymm3,4 + rorx r15d,eax,11 + lea r8d,[r14*1+r8] + lea edx,[r12*1+rdx] + vpsrld ymm6,ymm4,7 + andn r12d,eax,ecx + xor r13d,r15d + rorx r14d,eax,6 + vpaddd ymm1,ymm1,ymm7 + lea edx,[r12*1+rdx] + xor r13d,r14d + mov r15d,r8d + vpsrld ymm7,ymm4,3 + rorx r12d,r8d,22 + lea edx,[r13*1+rdx] + xor r15d,r9d + vpslld ymm5,ymm4,14 + rorx r14d,r8d,13 + rorx r13d,r8d,2 + lea r11d,[rdx*1+r11] + vpxor ymm4,ymm7,ymm6 + and edi,r15d + xor r14d,r12d + xor edi,r9d + vpshufd ymm7,ymm0,250 + xor r14d,r13d + lea edx,[rdi*1+rdx] + mov r12d,eax + vpsrld ymm6,ymm6,11 + add ecx,DWORD[((36+128))+rsp] + and r12d,r11d + rorx r13d,r11d,25 + vpxor ymm4,ymm4,ymm5 + rorx edi,r11d,11 + lea edx,[r14*1+rdx] + lea ecx,[r12*1+rcx] + vpslld ymm5,ymm5,11 + andn r12d,r11d,ebx + xor r13d,edi + rorx r14d,r11d,6 + vpxor ymm4,ymm4,ymm6 + lea ecx,[r12*1+rcx] + xor r13d,r14d + mov edi,edx + vpsrld ymm6,ymm7,10 + rorx r12d,edx,22 + lea ecx,[r13*1+rcx] + xor edi,r8d + vpxor ymm4,ymm4,ymm5 + rorx r14d,edx,13 + rorx r13d,edx,2 + lea r10d,[rcx*1+r10] + vpsrlq ymm7,ymm7,17 + and r15d,edi + xor r14d,r12d + xor r15d,r8d + vpaddd ymm1,ymm1,ymm4 + xor r14d,r13d + lea ecx,[r15*1+rcx] + mov r12d,r11d + vpxor ymm6,ymm6,ymm7 + add ebx,DWORD[((40+128))+rsp] + and r12d,r10d + rorx r13d,r10d,25 + vpsrlq ymm7,ymm7,2 + rorx r15d,r10d,11 + lea ecx,[r14*1+rcx] + lea ebx,[r12*1+rbx] + vpxor ymm6,ymm6,ymm7 + andn r12d,r10d,eax + xor r13d,r15d + rorx r14d,r10d,6 + vpshufb ymm6,ymm6,ymm8 + lea ebx,[r12*1+rbx] + xor r13d,r14d + mov r15d,ecx + vpaddd ymm1,ymm1,ymm6 + rorx r12d,ecx,22 + lea ebx,[r13*1+rbx] + xor r15d,edx + vpshufd ymm7,ymm1,80 + rorx r14d,ecx,13 + rorx r13d,ecx,2 + lea r9d,[rbx*1+r9] + vpsrld ymm6,ymm7,10 + and edi,r15d + xor r14d,r12d + xor edi,edx + vpsrlq ymm7,ymm7,17 + xor r14d,r13d + lea ebx,[rdi*1+rbx] + mov r12d,r10d + vpxor ymm6,ymm6,ymm7 + add eax,DWORD[((44+128))+rsp] + and r12d,r9d + rorx r13d,r9d,25 + vpsrlq ymm7,ymm7,2 + rorx edi,r9d,11 + lea ebx,[r14*1+rbx] + lea eax,[r12*1+rax] + vpxor ymm6,ymm6,ymm7 + andn r12d,r9d,r11d + xor r13d,edi + rorx r14d,r9d,6 + vpshufb ymm6,ymm6,ymm9 + lea eax,[r12*1+rax] + xor r13d,r14d + mov edi,ebx + vpaddd ymm1,ymm1,ymm6 + rorx r12d,ebx,22 + lea eax,[r13*1+rax] + xor edi,ecx + vpaddd ymm6,ymm1,YMMWORD[32+rbp] + rorx r14d,ebx,13 + rorx r13d,ebx,2 + lea r8d,[rax*1+r8] + and r15d,edi + xor r14d,r12d + xor r15d,ecx + xor r14d,r13d + lea eax,[r15*1+rax] + mov r12d,r9d + vmovdqa YMMWORD[32+rsp],ymm6 + lea rsp,[((-64))+rsp] + vpalignr ymm4,ymm3,ymm2,4 + add r11d,DWORD[((0+128))+rsp] + and r12d,r8d + rorx r13d,r8d,25 + vpalignr ymm7,ymm1,ymm0,4 + rorx r15d,r8d,11 + lea eax,[r14*1+rax] + lea r11d,[r12*1+r11] + vpsrld ymm6,ymm4,7 + andn r12d,r8d,r10d + xor r13d,r15d + rorx r14d,r8d,6 + vpaddd ymm2,ymm2,ymm7 + lea r11d,[r12*1+r11] + xor r13d,r14d + mov r15d,eax + vpsrld ymm7,ymm4,3 + rorx r12d,eax,22 + lea r11d,[r13*1+r11] + xor r15d,ebx + vpslld ymm5,ymm4,14 + rorx r14d,eax,13 + rorx r13d,eax,2 + lea edx,[r11*1+rdx] + vpxor ymm4,ymm7,ymm6 + and edi,r15d + xor r14d,r12d + xor edi,ebx + vpshufd ymm7,ymm1,250 + xor r14d,r13d + lea r11d,[rdi*1+r11] + mov r12d,r8d + vpsrld ymm6,ymm6,11 + add r10d,DWORD[((4+128))+rsp] + and r12d,edx + rorx r13d,edx,25 + vpxor ymm4,ymm4,ymm5 + rorx edi,edx,11 + lea r11d,[r14*1+r11] + lea r10d,[r12*1+r10] + vpslld ymm5,ymm5,11 + andn r12d,edx,r9d + xor r13d,edi + rorx r14d,edx,6 + vpxor ymm4,ymm4,ymm6 + lea r10d,[r12*1+r10] + xor r13d,r14d + mov edi,r11d + vpsrld ymm6,ymm7,10 + rorx r12d,r11d,22 + lea r10d,[r13*1+r10] + xor edi,eax + vpxor ymm4,ymm4,ymm5 + rorx r14d,r11d,13 + rorx r13d,r11d,2 + lea ecx,[r10*1+rcx] + vpsrlq ymm7,ymm7,17 + and r15d,edi + xor r14d,r12d + xor r15d,eax + vpaddd ymm2,ymm2,ymm4 + xor r14d,r13d + lea r10d,[r15*1+r10] + mov r12d,edx + vpxor ymm6,ymm6,ymm7 + add r9d,DWORD[((8+128))+rsp] + and r12d,ecx + rorx r13d,ecx,25 + vpsrlq ymm7,ymm7,2 + rorx r15d,ecx,11 + lea r10d,[r14*1+r10] + lea r9d,[r12*1+r9] + vpxor ymm6,ymm6,ymm7 + andn r12d,ecx,r8d + xor r13d,r15d + rorx r14d,ecx,6 + vpshufb ymm6,ymm6,ymm8 + lea r9d,[r12*1+r9] + xor r13d,r14d + mov r15d,r10d + vpaddd ymm2,ymm2,ymm6 + rorx r12d,r10d,22 + lea r9d,[r13*1+r9] + xor r15d,r11d + vpshufd ymm7,ymm2,80 + rorx r14d,r10d,13 + rorx r13d,r10d,2 + lea ebx,[r9*1+rbx] + vpsrld ymm6,ymm7,10 + and edi,r15d + xor r14d,r12d + xor edi,r11d + vpsrlq ymm7,ymm7,17 + xor r14d,r13d + lea r9d,[rdi*1+r9] + mov r12d,ecx + vpxor ymm6,ymm6,ymm7 + add r8d,DWORD[((12+128))+rsp] + and r12d,ebx + rorx r13d,ebx,25 + vpsrlq ymm7,ymm7,2 + rorx edi,ebx,11 + lea r9d,[r14*1+r9] + lea r8d,[r12*1+r8] + vpxor ymm6,ymm6,ymm7 + andn r12d,ebx,edx + xor r13d,edi + rorx r14d,ebx,6 + vpshufb ymm6,ymm6,ymm9 + lea r8d,[r12*1+r8] + xor r13d,r14d + mov edi,r9d + vpaddd ymm2,ymm2,ymm6 + rorx r12d,r9d,22 + lea r8d,[r13*1+r8] + xor edi,r10d + vpaddd ymm6,ymm2,YMMWORD[64+rbp] + rorx r14d,r9d,13 + rorx r13d,r9d,2 + lea eax,[r8*1+rax] + and r15d,edi + xor r14d,r12d + xor r15d,r10d + xor r14d,r13d + lea r8d,[r15*1+r8] + mov r12d,ebx + vmovdqa YMMWORD[rsp],ymm6 + vpalignr ymm4,ymm0,ymm3,4 + add edx,DWORD[((32+128))+rsp] + and r12d,eax + rorx r13d,eax,25 + vpalignr ymm7,ymm2,ymm1,4 + rorx r15d,eax,11 + lea r8d,[r14*1+r8] + lea edx,[r12*1+rdx] + vpsrld ymm6,ymm4,7 + andn r12d,eax,ecx + xor r13d,r15d + rorx r14d,eax,6 + vpaddd ymm3,ymm3,ymm7 + lea edx,[r12*1+rdx] + xor r13d,r14d + mov r15d,r8d + vpsrld ymm7,ymm4,3 + rorx r12d,r8d,22 + lea edx,[r13*1+rdx] + xor r15d,r9d + vpslld ymm5,ymm4,14 + rorx r14d,r8d,13 + rorx r13d,r8d,2 + lea r11d,[rdx*1+r11] + vpxor ymm4,ymm7,ymm6 + and edi,r15d + xor r14d,r12d + xor edi,r9d + vpshufd ymm7,ymm2,250 + xor r14d,r13d + lea edx,[rdi*1+rdx] + mov r12d,eax + vpsrld ymm6,ymm6,11 + add ecx,DWORD[((36+128))+rsp] + and r12d,r11d + rorx r13d,r11d,25 + vpxor ymm4,ymm4,ymm5 + rorx edi,r11d,11 + lea edx,[r14*1+rdx] + lea ecx,[r12*1+rcx] + vpslld ymm5,ymm5,11 + andn r12d,r11d,ebx + xor r13d,edi + rorx r14d,r11d,6 + vpxor ymm4,ymm4,ymm6 + lea ecx,[r12*1+rcx] + xor r13d,r14d + mov edi,edx + vpsrld ymm6,ymm7,10 + rorx r12d,edx,22 + lea ecx,[r13*1+rcx] + xor edi,r8d + vpxor ymm4,ymm4,ymm5 + rorx r14d,edx,13 + rorx r13d,edx,2 + lea r10d,[rcx*1+r10] + vpsrlq ymm7,ymm7,17 + and r15d,edi + xor r14d,r12d + xor r15d,r8d + vpaddd ymm3,ymm3,ymm4 + xor r14d,r13d + lea ecx,[r15*1+rcx] + mov r12d,r11d + vpxor ymm6,ymm6,ymm7 + add ebx,DWORD[((40+128))+rsp] + and r12d,r10d + rorx r13d,r10d,25 + vpsrlq ymm7,ymm7,2 + rorx r15d,r10d,11 + lea ecx,[r14*1+rcx] + lea ebx,[r12*1+rbx] + vpxor ymm6,ymm6,ymm7 + andn r12d,r10d,eax + xor r13d,r15d + rorx r14d,r10d,6 + vpshufb ymm6,ymm6,ymm8 + lea ebx,[r12*1+rbx] + xor r13d,r14d + mov r15d,ecx + vpaddd ymm3,ymm3,ymm6 + rorx r12d,ecx,22 + lea ebx,[r13*1+rbx] + xor r15d,edx + vpshufd ymm7,ymm3,80 + rorx r14d,ecx,13 + rorx r13d,ecx,2 + lea r9d,[rbx*1+r9] + vpsrld ymm6,ymm7,10 + and edi,r15d + xor r14d,r12d + xor edi,edx + vpsrlq ymm7,ymm7,17 + xor r14d,r13d + lea ebx,[rdi*1+rbx] + mov r12d,r10d + vpxor ymm6,ymm6,ymm7 + add eax,DWORD[((44+128))+rsp] + and r12d,r9d + rorx r13d,r9d,25 + vpsrlq ymm7,ymm7,2 + rorx edi,r9d,11 + lea ebx,[r14*1+rbx] + lea eax,[r12*1+rax] + vpxor ymm6,ymm6,ymm7 + andn r12d,r9d,r11d + xor r13d,edi + rorx r14d,r9d,6 + vpshufb ymm6,ymm6,ymm9 + lea eax,[r12*1+rax] + xor r13d,r14d + mov edi,ebx + vpaddd ymm3,ymm3,ymm6 + rorx r12d,ebx,22 + lea eax,[r13*1+rax] + xor edi,ecx + vpaddd ymm6,ymm3,YMMWORD[96+rbp] + rorx r14d,ebx,13 + rorx r13d,ebx,2 + lea r8d,[rax*1+r8] + and r15d,edi + xor r14d,r12d + xor r15d,ecx + xor r14d,r13d + lea eax,[r15*1+rax] + mov r12d,r9d + vmovdqa YMMWORD[32+rsp],ymm6 + lea rbp,[128+rbp] + cmp BYTE[3+rbp],0 + jne NEAR $L$avx2_00_47 + add r11d,DWORD[((0+64))+rsp] + and r12d,r8d + rorx r13d,r8d,25 + rorx r15d,r8d,11 + lea eax,[r14*1+rax] + lea r11d,[r12*1+r11] + andn r12d,r8d,r10d + xor r13d,r15d + rorx r14d,r8d,6 + lea r11d,[r12*1+r11] + xor r13d,r14d + mov r15d,eax + rorx r12d,eax,22 + lea r11d,[r13*1+r11] + xor r15d,ebx + rorx r14d,eax,13 + rorx r13d,eax,2 + lea edx,[r11*1+rdx] + and edi,r15d + xor r14d,r12d + xor edi,ebx + xor r14d,r13d + lea r11d,[rdi*1+r11] + mov r12d,r8d + add r10d,DWORD[((4+64))+rsp] + and r12d,edx + rorx r13d,edx,25 + rorx edi,edx,11 + lea r11d,[r14*1+r11] + lea r10d,[r12*1+r10] + andn r12d,edx,r9d + xor r13d,edi + rorx r14d,edx,6 + lea r10d,[r12*1+r10] + xor r13d,r14d + mov edi,r11d + rorx r12d,r11d,22 + lea r10d,[r13*1+r10] + xor edi,eax + rorx r14d,r11d,13 + rorx r13d,r11d,2 + lea ecx,[r10*1+rcx] + and r15d,edi + xor r14d,r12d + xor r15d,eax + xor r14d,r13d + lea r10d,[r15*1+r10] + mov r12d,edx + add r9d,DWORD[((8+64))+rsp] + and r12d,ecx + rorx r13d,ecx,25 + rorx r15d,ecx,11 + lea r10d,[r14*1+r10] + lea r9d,[r12*1+r9] + andn r12d,ecx,r8d + xor r13d,r15d + rorx r14d,ecx,6 + lea r9d,[r12*1+r9] + xor r13d,r14d + mov r15d,r10d + rorx r12d,r10d,22 + lea r9d,[r13*1+r9] + xor r15d,r11d + rorx r14d,r10d,13 + rorx r13d,r10d,2 + lea ebx,[r9*1+rbx] + and edi,r15d + xor r14d,r12d + xor edi,r11d + xor r14d,r13d + lea r9d,[rdi*1+r9] + mov r12d,ecx + add r8d,DWORD[((12+64))+rsp] + and r12d,ebx + rorx r13d,ebx,25 + rorx edi,ebx,11 + lea r9d,[r14*1+r9] + lea r8d,[r12*1+r8] + andn r12d,ebx,edx + xor r13d,edi + rorx r14d,ebx,6 + lea r8d,[r12*1+r8] + xor r13d,r14d + mov edi,r9d + rorx r12d,r9d,22 + lea r8d,[r13*1+r8] + xor edi,r10d + rorx r14d,r9d,13 + rorx r13d,r9d,2 + lea eax,[r8*1+rax] + and r15d,edi + xor r14d,r12d + xor r15d,r10d + xor r14d,r13d + lea r8d,[r15*1+r8] + mov r12d,ebx + add edx,DWORD[((32+64))+rsp] + and r12d,eax + rorx r13d,eax,25 + rorx r15d,eax,11 + lea r8d,[r14*1+r8] + lea edx,[r12*1+rdx] + andn r12d,eax,ecx + xor r13d,r15d + rorx r14d,eax,6 + lea edx,[r12*1+rdx] + xor r13d,r14d + mov r15d,r8d + rorx r12d,r8d,22 + lea edx,[r13*1+rdx] + xor r15d,r9d + rorx r14d,r8d,13 + rorx r13d,r8d,2 + lea r11d,[rdx*1+r11] + and edi,r15d + xor r14d,r12d + xor edi,r9d + xor r14d,r13d + lea edx,[rdi*1+rdx] + mov r12d,eax + add ecx,DWORD[((36+64))+rsp] + and r12d,r11d + rorx r13d,r11d,25 + rorx edi,r11d,11 + lea edx,[r14*1+rdx] + lea ecx,[r12*1+rcx] + andn r12d,r11d,ebx + xor r13d,edi + rorx r14d,r11d,6 + lea ecx,[r12*1+rcx] + xor r13d,r14d + mov edi,edx + rorx r12d,edx,22 + lea ecx,[r13*1+rcx] + xor edi,r8d + rorx r14d,edx,13 + rorx r13d,edx,2 + lea r10d,[rcx*1+r10] + and r15d,edi + xor r14d,r12d + xor r15d,r8d + xor r14d,r13d + lea ecx,[r15*1+rcx] + mov r12d,r11d + add ebx,DWORD[((40+64))+rsp] + and r12d,r10d + rorx r13d,r10d,25 + rorx r15d,r10d,11 + lea ecx,[r14*1+rcx] + lea ebx,[r12*1+rbx] + andn r12d,r10d,eax + xor r13d,r15d + rorx r14d,r10d,6 + lea ebx,[r12*1+rbx] + xor r13d,r14d + mov r15d,ecx + rorx r12d,ecx,22 + lea ebx,[r13*1+rbx] + xor r15d,edx + rorx r14d,ecx,13 + rorx r13d,ecx,2 + lea r9d,[rbx*1+r9] + and edi,r15d + xor r14d,r12d + xor edi,edx + xor r14d,r13d + lea ebx,[rdi*1+rbx] + mov r12d,r10d + add eax,DWORD[((44+64))+rsp] + and r12d,r9d + rorx r13d,r9d,25 + rorx edi,r9d,11 + lea ebx,[r14*1+rbx] + lea eax,[r12*1+rax] + andn r12d,r9d,r11d + xor r13d,edi + rorx r14d,r9d,6 + lea eax,[r12*1+rax] + xor r13d,r14d + mov edi,ebx + rorx r12d,ebx,22 + lea eax,[r13*1+rax] + xor edi,ecx + rorx r14d,ebx,13 + rorx r13d,ebx,2 + lea r8d,[rax*1+r8] + and r15d,edi + xor r14d,r12d + xor r15d,ecx + xor r14d,r13d + lea eax,[r15*1+rax] + mov r12d,r9d + add r11d,DWORD[rsp] + and r12d,r8d + rorx r13d,r8d,25 + rorx r15d,r8d,11 + lea eax,[r14*1+rax] + lea r11d,[r12*1+r11] + andn r12d,r8d,r10d + xor r13d,r15d + rorx r14d,r8d,6 + lea r11d,[r12*1+r11] + xor r13d,r14d + mov r15d,eax + rorx r12d,eax,22 + lea r11d,[r13*1+r11] + xor r15d,ebx + rorx r14d,eax,13 + rorx r13d,eax,2 + lea edx,[r11*1+rdx] + and edi,r15d + xor r14d,r12d + xor edi,ebx + xor r14d,r13d + lea r11d,[rdi*1+r11] + mov r12d,r8d + add r10d,DWORD[4+rsp] + and r12d,edx + rorx r13d,edx,25 + rorx edi,edx,11 + lea r11d,[r14*1+r11] + lea r10d,[r12*1+r10] + andn r12d,edx,r9d + xor r13d,edi + rorx r14d,edx,6 + lea r10d,[r12*1+r10] + xor r13d,r14d + mov edi,r11d + rorx r12d,r11d,22 + lea r10d,[r13*1+r10] + xor edi,eax + rorx r14d,r11d,13 + rorx r13d,r11d,2 + lea ecx,[r10*1+rcx] + and r15d,edi + xor r14d,r12d + xor r15d,eax + xor r14d,r13d + lea r10d,[r15*1+r10] + mov r12d,edx + add r9d,DWORD[8+rsp] + and r12d,ecx + rorx r13d,ecx,25 + rorx r15d,ecx,11 + lea r10d,[r14*1+r10] + lea r9d,[r12*1+r9] + andn r12d,ecx,r8d + xor r13d,r15d + rorx r14d,ecx,6 + lea r9d,[r12*1+r9] + xor r13d,r14d + mov r15d,r10d + rorx r12d,r10d,22 + lea r9d,[r13*1+r9] + xor r15d,r11d + rorx r14d,r10d,13 + rorx r13d,r10d,2 + lea ebx,[r9*1+rbx] + and edi,r15d + xor r14d,r12d + xor edi,r11d + xor r14d,r13d + lea r9d,[rdi*1+r9] + mov r12d,ecx + add r8d,DWORD[12+rsp] + and r12d,ebx + rorx r13d,ebx,25 + rorx edi,ebx,11 + lea r9d,[r14*1+r9] + lea r8d,[r12*1+r8] + andn r12d,ebx,edx + xor r13d,edi + rorx r14d,ebx,6 + lea r8d,[r12*1+r8] + xor r13d,r14d + mov edi,r9d + rorx r12d,r9d,22 + lea r8d,[r13*1+r8] + xor edi,r10d + rorx r14d,r9d,13 + rorx r13d,r9d,2 + lea eax,[r8*1+rax] + and r15d,edi + xor r14d,r12d + xor r15d,r10d + xor r14d,r13d + lea r8d,[r15*1+r8] + mov r12d,ebx + add edx,DWORD[32+rsp] + and r12d,eax + rorx r13d,eax,25 + rorx r15d,eax,11 + lea r8d,[r14*1+r8] + lea edx,[r12*1+rdx] + andn r12d,eax,ecx + xor r13d,r15d + rorx r14d,eax,6 + lea edx,[r12*1+rdx] + xor r13d,r14d + mov r15d,r8d + rorx r12d,r8d,22 + lea edx,[r13*1+rdx] + xor r15d,r9d + rorx r14d,r8d,13 + rorx r13d,r8d,2 + lea r11d,[rdx*1+r11] + and edi,r15d + xor r14d,r12d + xor edi,r9d + xor r14d,r13d + lea edx,[rdi*1+rdx] + mov r12d,eax + add ecx,DWORD[36+rsp] + and r12d,r11d + rorx r13d,r11d,25 + rorx edi,r11d,11 + lea edx,[r14*1+rdx] + lea ecx,[r12*1+rcx] + andn r12d,r11d,ebx + xor r13d,edi + rorx r14d,r11d,6 + lea ecx,[r12*1+rcx] + xor r13d,r14d + mov edi,edx + rorx r12d,edx,22 + lea ecx,[r13*1+rcx] + xor edi,r8d + rorx r14d,edx,13 + rorx r13d,edx,2 + lea r10d,[rcx*1+r10] + and r15d,edi + xor r14d,r12d + xor r15d,r8d + xor r14d,r13d + lea ecx,[r15*1+rcx] + mov r12d,r11d + add ebx,DWORD[40+rsp] + and r12d,r10d + rorx r13d,r10d,25 + rorx r15d,r10d,11 + lea ecx,[r14*1+rcx] + lea ebx,[r12*1+rbx] + andn r12d,r10d,eax + xor r13d,r15d + rorx r14d,r10d,6 + lea ebx,[r12*1+rbx] + xor r13d,r14d + mov r15d,ecx + rorx r12d,ecx,22 + lea ebx,[r13*1+rbx] + xor r15d,edx + rorx r14d,ecx,13 + rorx r13d,ecx,2 + lea r9d,[rbx*1+r9] + and edi,r15d + xor r14d,r12d + xor edi,edx + xor r14d,r13d + lea ebx,[rdi*1+rbx] + mov r12d,r10d + add eax,DWORD[44+rsp] + and r12d,r9d + rorx r13d,r9d,25 + rorx edi,r9d,11 + lea ebx,[r14*1+rbx] + lea eax,[r12*1+rax] + andn r12d,r9d,r11d + xor r13d,edi + rorx r14d,r9d,6 + lea eax,[r12*1+rax] + xor r13d,r14d + mov edi,ebx + rorx r12d,ebx,22 + lea eax,[r13*1+rax] + xor edi,ecx + rorx r14d,ebx,13 + rorx r13d,ebx,2 + lea r8d,[rax*1+r8] + and r15d,edi + xor r14d,r12d + xor r15d,ecx + xor r14d,r13d + lea eax,[r15*1+rax] + mov r12d,r9d + mov rdi,QWORD[512+rsp] + add eax,r14d + + lea rbp,[448+rsp] + + add eax,DWORD[rdi] + add ebx,DWORD[4+rdi] + add ecx,DWORD[8+rdi] + add edx,DWORD[12+rdi] + add r8d,DWORD[16+rdi] + add r9d,DWORD[20+rdi] + add r10d,DWORD[24+rdi] + add r11d,DWORD[28+rdi] + + mov DWORD[rdi],eax + mov DWORD[4+rdi],ebx + mov DWORD[8+rdi],ecx + mov DWORD[12+rdi],edx + mov DWORD[16+rdi],r8d + mov DWORD[20+rdi],r9d + mov DWORD[24+rdi],r10d + mov DWORD[28+rdi],r11d + + cmp rsi,QWORD[80+rbp] + je NEAR $L$done_avx2 + + xor r14d,r14d + mov edi,ebx + xor edi,ecx + mov r12d,r9d + jmp NEAR $L$ower_avx2 +ALIGN 16 +$L$ower_avx2: + add r11d,DWORD[((0+16))+rbp] + and r12d,r8d + rorx r13d,r8d,25 + rorx r15d,r8d,11 + lea eax,[r14*1+rax] + lea r11d,[r12*1+r11] + andn r12d,r8d,r10d + xor r13d,r15d + rorx r14d,r8d,6 + lea r11d,[r12*1+r11] + xor r13d,r14d + mov r15d,eax + rorx r12d,eax,22 + lea r11d,[r13*1+r11] + xor r15d,ebx + rorx r14d,eax,13 + rorx r13d,eax,2 + lea edx,[r11*1+rdx] + and edi,r15d + xor r14d,r12d + xor edi,ebx + xor r14d,r13d + lea r11d,[rdi*1+r11] + mov r12d,r8d + add r10d,DWORD[((4+16))+rbp] + and r12d,edx + rorx r13d,edx,25 + rorx edi,edx,11 + lea r11d,[r14*1+r11] + lea r10d,[r12*1+r10] + andn r12d,edx,r9d + xor r13d,edi + rorx r14d,edx,6 + lea r10d,[r12*1+r10] + xor r13d,r14d + mov edi,r11d + rorx r12d,r11d,22 + lea r10d,[r13*1+r10] + xor edi,eax + rorx r14d,r11d,13 + rorx r13d,r11d,2 + lea ecx,[r10*1+rcx] + and r15d,edi + xor r14d,r12d + xor r15d,eax + xor r14d,r13d + lea r10d,[r15*1+r10] + mov r12d,edx + add r9d,DWORD[((8+16))+rbp] + and r12d,ecx + rorx r13d,ecx,25 + rorx r15d,ecx,11 + lea r10d,[r14*1+r10] + lea r9d,[r12*1+r9] + andn r12d,ecx,r8d + xor r13d,r15d + rorx r14d,ecx,6 + lea r9d,[r12*1+r9] + xor r13d,r14d + mov r15d,r10d + rorx r12d,r10d,22 + lea r9d,[r13*1+r9] + xor r15d,r11d + rorx r14d,r10d,13 + rorx r13d,r10d,2 + lea ebx,[r9*1+rbx] + and edi,r15d + xor r14d,r12d + xor edi,r11d + xor r14d,r13d + lea r9d,[rdi*1+r9] + mov r12d,ecx + add r8d,DWORD[((12+16))+rbp] + and r12d,ebx + rorx r13d,ebx,25 + rorx edi,ebx,11 + lea r9d,[r14*1+r9] + lea r8d,[r12*1+r8] + andn r12d,ebx,edx + xor r13d,edi + rorx r14d,ebx,6 + lea r8d,[r12*1+r8] + xor r13d,r14d + mov edi,r9d + rorx r12d,r9d,22 + lea r8d,[r13*1+r8] + xor edi,r10d + rorx r14d,r9d,13 + rorx r13d,r9d,2 + lea eax,[r8*1+rax] + and r15d,edi + xor r14d,r12d + xor r15d,r10d + xor r14d,r13d + lea r8d,[r15*1+r8] + mov r12d,ebx + add edx,DWORD[((32+16))+rbp] + and r12d,eax + rorx r13d,eax,25 + rorx r15d,eax,11 + lea r8d,[r14*1+r8] + lea edx,[r12*1+rdx] + andn r12d,eax,ecx + xor r13d,r15d + rorx r14d,eax,6 + lea edx,[r12*1+rdx] + xor r13d,r14d + mov r15d,r8d + rorx r12d,r8d,22 + lea edx,[r13*1+rdx] + xor r15d,r9d + rorx r14d,r8d,13 + rorx r13d,r8d,2 + lea r11d,[rdx*1+r11] + and edi,r15d + xor r14d,r12d + xor edi,r9d + xor r14d,r13d + lea edx,[rdi*1+rdx] + mov r12d,eax + add ecx,DWORD[((36+16))+rbp] + and r12d,r11d + rorx r13d,r11d,25 + rorx edi,r11d,11 + lea edx,[r14*1+rdx] + lea ecx,[r12*1+rcx] + andn r12d,r11d,ebx + xor r13d,edi + rorx r14d,r11d,6 + lea ecx,[r12*1+rcx] + xor r13d,r14d + mov edi,edx + rorx r12d,edx,22 + lea ecx,[r13*1+rcx] + xor edi,r8d + rorx r14d,edx,13 + rorx r13d,edx,2 + lea r10d,[rcx*1+r10] + and r15d,edi + xor r14d,r12d + xor r15d,r8d + xor r14d,r13d + lea ecx,[r15*1+rcx] + mov r12d,r11d + add ebx,DWORD[((40+16))+rbp] + and r12d,r10d + rorx r13d,r10d,25 + rorx r15d,r10d,11 + lea ecx,[r14*1+rcx] + lea ebx,[r12*1+rbx] + andn r12d,r10d,eax + xor r13d,r15d + rorx r14d,r10d,6 + lea ebx,[r12*1+rbx] + xor r13d,r14d + mov r15d,ecx + rorx r12d,ecx,22 + lea ebx,[r13*1+rbx] + xor r15d,edx + rorx r14d,ecx,13 + rorx r13d,ecx,2 + lea r9d,[rbx*1+r9] + and edi,r15d + xor r14d,r12d + xor edi,edx + xor r14d,r13d + lea ebx,[rdi*1+rbx] + mov r12d,r10d + add eax,DWORD[((44+16))+rbp] + and r12d,r9d + rorx r13d,r9d,25 + rorx edi,r9d,11 + lea ebx,[r14*1+rbx] + lea eax,[r12*1+rax] + andn r12d,r9d,r11d + xor r13d,edi + rorx r14d,r9d,6 + lea eax,[r12*1+rax] + xor r13d,r14d + mov edi,ebx + rorx r12d,ebx,22 + lea eax,[r13*1+rax] + xor edi,ecx + rorx r14d,ebx,13 + rorx r13d,ebx,2 + lea r8d,[rax*1+r8] + and r15d,edi + xor r14d,r12d + xor r15d,ecx + xor r14d,r13d + lea eax,[r15*1+rax] + mov r12d,r9d + lea rbp,[((-64))+rbp] + cmp rbp,rsp + jae NEAR $L$ower_avx2 + + mov rdi,QWORD[512+rsp] + add eax,r14d + + lea rsp,[448+rsp] + + + + add eax,DWORD[rdi] + add ebx,DWORD[4+rdi] + add ecx,DWORD[8+rdi] + add edx,DWORD[12+rdi] + add r8d,DWORD[16+rdi] + add r9d,DWORD[20+rdi] + lea rsi,[128+rsi] + add r10d,DWORD[24+rdi] + mov r12,rsi + add r11d,DWORD[28+rdi] + cmp rsi,QWORD[((64+16))+rsp] + + mov DWORD[rdi],eax + cmove r12,rsp + mov DWORD[4+rdi],ebx + mov DWORD[8+rdi],ecx + mov DWORD[12+rdi],edx + mov DWORD[16+rdi],r8d + mov DWORD[20+rdi],r9d + mov DWORD[24+rdi],r10d + mov DWORD[28+rdi],r11d + + jbe NEAR $L$oop_avx2 + lea rbp,[rsp] + + + + +$L$done_avx2: + mov rsi,QWORD[88+rbp] + + vzeroupper + movaps xmm6,XMMWORD[((64+32))+rbp] + movaps xmm7,XMMWORD[((64+48))+rbp] + movaps xmm8,XMMWORD[((64+64))+rbp] + movaps xmm9,XMMWORD[((64+80))+rbp] + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue_avx2: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha256_block_data_order_avx2: +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$in_prologue + lea r10,[$L$avx2_shortcut] + cmp rbx,r10 + jb NEAR $L$not_in_avx2 + + and rax,-256*4 + add rax,448 +$L$not_in_avx2: + mov rsi,rax + mov rax,QWORD[((64+24))+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + + lea r10,[$L$epilogue] + cmp rbx,r10 + jb NEAR $L$in_prologue + + lea rsi,[((64+32))+rsi] + lea rdi,[512+r8] + mov ecx,8 + DD 0xa548f3fc + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +ALIGN 16 +shaext_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + lea r10,[$L$prologue_shaext] + cmp rbx,r10 + jb NEAR $L$in_prologue + + lea r10,[$L$epilogue_shaext] + cmp rbx,r10 + jae NEAR $L$in_prologue + + lea rsi,[((-8-80))+rax] + lea rdi,[512+r8] + mov ecx,10 + DD 0xa548f3fc + + jmp NEAR $L$in_prologue + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_sha256_block_data_order wrt ..imagebase + DD $L$SEH_end_sha256_block_data_order wrt ..imagebase + DD $L$SEH_info_sha256_block_data_order wrt ..imagebase + DD $L$SEH_begin_sha256_block_data_order_shaext wrt ..imagebase + DD $L$SEH_end_sha256_block_data_order_shaext wrt ..imagebase + DD $L$SEH_info_sha256_block_data_order_shaext wrt ..imagebase + DD $L$SEH_begin_sha256_block_data_order_ssse3 wrt ..imagebase + DD $L$SEH_end_sha256_block_data_order_ssse3 wrt ..imagebase + DD $L$SEH_info_sha256_block_data_order_ssse3 wrt ..imagebase + DD $L$SEH_begin_sha256_block_data_order_avx wrt ..imagebase + DD $L$SEH_end_sha256_block_data_order_avx wrt ..imagebase + DD $L$SEH_info_sha256_block_data_order_avx wrt ..imagebase + DD $L$SEH_begin_sha256_block_data_order_avx2 wrt ..imagebase + DD $L$SEH_end_sha256_block_data_order_avx2 wrt ..imagebase + DD $L$SEH_info_sha256_block_data_order_avx2 wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_sha256_block_data_order: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase +$L$SEH_info_sha256_block_data_order_shaext: +DB 9,0,0,0 + DD shaext_handler wrt ..imagebase +$L$SEH_info_sha256_block_data_order_ssse3: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase +$L$SEH_info_sha256_block_data_order_avx: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase +$L$SEH_info_sha256_block_data_order_avx2: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_avx2 wrt ..imagebase,$L$epilogue_avx2 wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha512-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha512-x86_64.asm new file mode 100644 index 0000000..fc2269c --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/sha/sha512-x86_64.asm @@ -0,0 +1,5665 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +EXTERN OPENSSL_ia32cap_P +global sha512_block_data_order + +ALIGN 16 +sha512_block_data_order: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha512_block_data_order: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + lea r11,[OPENSSL_ia32cap_P] + mov r9d,DWORD[r11] + mov r10d,DWORD[4+r11] + mov r11d,DWORD[8+r11] + test r10d,2048 + jnz NEAR $L$xop_shortcut + and r11d,296 + cmp r11d,296 + je NEAR $L$avx2_shortcut + and r9d,1073741824 + and r10d,268435968 + or r10d,r9d + cmp r10d,1342177792 + je NEAR $L$avx_shortcut + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + shl rdx,4 + sub rsp,16*8+4*8 + lea rdx,[rdx*8+rsi] + and rsp,-64 + mov QWORD[((128+0))+rsp],rdi + mov QWORD[((128+8))+rsp],rsi + mov QWORD[((128+16))+rsp],rdx + mov QWORD[152+rsp],rax + +$L$prologue: + + mov rax,QWORD[rdi] + mov rbx,QWORD[8+rdi] + mov rcx,QWORD[16+rdi] + mov rdx,QWORD[24+rdi] + mov r8,QWORD[32+rdi] + mov r9,QWORD[40+rdi] + mov r10,QWORD[48+rdi] + mov r11,QWORD[56+rdi] + jmp NEAR $L$loop + +ALIGN 16 +$L$loop: + mov rdi,rbx + lea rbp,[K512] + xor rdi,rcx + mov r12,QWORD[rsi] + mov r13,r8 + mov r14,rax + bswap r12 + ror r13,23 + mov r15,r9 + + xor r13,r8 + ror r14,5 + xor r15,r10 + + mov QWORD[rsp],r12 + xor r14,rax + and r15,r8 + + ror r13,4 + add r12,r11 + xor r15,r10 + + ror r14,6 + xor r13,r8 + add r12,r15 + + mov r15,rax + add r12,QWORD[rbp] + xor r14,rax + + xor r15,rbx + ror r13,14 + mov r11,rbx + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor r11,rdi + add rdx,r12 + add r11,r12 + + lea rbp,[8+rbp] + add r11,r14 + mov r12,QWORD[8+rsi] + mov r13,rdx + mov r14,r11 + bswap r12 + ror r13,23 + mov rdi,r8 + + xor r13,rdx + ror r14,5 + xor rdi,r9 + + mov QWORD[8+rsp],r12 + xor r14,r11 + and rdi,rdx + + ror r13,4 + add r12,r10 + xor rdi,r9 + + ror r14,6 + xor r13,rdx + add r12,rdi + + mov rdi,r11 + add r12,QWORD[rbp] + xor r14,r11 + + xor rdi,rax + ror r13,14 + mov r10,rax + + and r15,rdi + ror r14,28 + add r12,r13 + + xor r10,r15 + add rcx,r12 + add r10,r12 + + lea rbp,[24+rbp] + add r10,r14 + mov r12,QWORD[16+rsi] + mov r13,rcx + mov r14,r10 + bswap r12 + ror r13,23 + mov r15,rdx + + xor r13,rcx + ror r14,5 + xor r15,r8 + + mov QWORD[16+rsp],r12 + xor r14,r10 + and r15,rcx + + ror r13,4 + add r12,r9 + xor r15,r8 + + ror r14,6 + xor r13,rcx + add r12,r15 + + mov r15,r10 + add r12,QWORD[rbp] + xor r14,r10 + + xor r15,r11 + ror r13,14 + mov r9,r11 + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor r9,rdi + add rbx,r12 + add r9,r12 + + lea rbp,[8+rbp] + add r9,r14 + mov r12,QWORD[24+rsi] + mov r13,rbx + mov r14,r9 + bswap r12 + ror r13,23 + mov rdi,rcx + + xor r13,rbx + ror r14,5 + xor rdi,rdx + + mov QWORD[24+rsp],r12 + xor r14,r9 + and rdi,rbx + + ror r13,4 + add r12,r8 + xor rdi,rdx + + ror r14,6 + xor r13,rbx + add r12,rdi + + mov rdi,r9 + add r12,QWORD[rbp] + xor r14,r9 + + xor rdi,r10 + ror r13,14 + mov r8,r10 + + and r15,rdi + ror r14,28 + add r12,r13 + + xor r8,r15 + add rax,r12 + add r8,r12 + + lea rbp,[24+rbp] + add r8,r14 + mov r12,QWORD[32+rsi] + mov r13,rax + mov r14,r8 + bswap r12 + ror r13,23 + mov r15,rbx + + xor r13,rax + ror r14,5 + xor r15,rcx + + mov QWORD[32+rsp],r12 + xor r14,r8 + and r15,rax + + ror r13,4 + add r12,rdx + xor r15,rcx + + ror r14,6 + xor r13,rax + add r12,r15 + + mov r15,r8 + add r12,QWORD[rbp] + xor r14,r8 + + xor r15,r9 + ror r13,14 + mov rdx,r9 + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor rdx,rdi + add r11,r12 + add rdx,r12 + + lea rbp,[8+rbp] + add rdx,r14 + mov r12,QWORD[40+rsi] + mov r13,r11 + mov r14,rdx + bswap r12 + ror r13,23 + mov rdi,rax + + xor r13,r11 + ror r14,5 + xor rdi,rbx + + mov QWORD[40+rsp],r12 + xor r14,rdx + and rdi,r11 + + ror r13,4 + add r12,rcx + xor rdi,rbx + + ror r14,6 + xor r13,r11 + add r12,rdi + + mov rdi,rdx + add r12,QWORD[rbp] + xor r14,rdx + + xor rdi,r8 + ror r13,14 + mov rcx,r8 + + and r15,rdi + ror r14,28 + add r12,r13 + + xor rcx,r15 + add r10,r12 + add rcx,r12 + + lea rbp,[24+rbp] + add rcx,r14 + mov r12,QWORD[48+rsi] + mov r13,r10 + mov r14,rcx + bswap r12 + ror r13,23 + mov r15,r11 + + xor r13,r10 + ror r14,5 + xor r15,rax + + mov QWORD[48+rsp],r12 + xor r14,rcx + and r15,r10 + + ror r13,4 + add r12,rbx + xor r15,rax + + ror r14,6 + xor r13,r10 + add r12,r15 + + mov r15,rcx + add r12,QWORD[rbp] + xor r14,rcx + + xor r15,rdx + ror r13,14 + mov rbx,rdx + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor rbx,rdi + add r9,r12 + add rbx,r12 + + lea rbp,[8+rbp] + add rbx,r14 + mov r12,QWORD[56+rsi] + mov r13,r9 + mov r14,rbx + bswap r12 + ror r13,23 + mov rdi,r10 + + xor r13,r9 + ror r14,5 + xor rdi,r11 + + mov QWORD[56+rsp],r12 + xor r14,rbx + and rdi,r9 + + ror r13,4 + add r12,rax + xor rdi,r11 + + ror r14,6 + xor r13,r9 + add r12,rdi + + mov rdi,rbx + add r12,QWORD[rbp] + xor r14,rbx + + xor rdi,rcx + ror r13,14 + mov rax,rcx + + and r15,rdi + ror r14,28 + add r12,r13 + + xor rax,r15 + add r8,r12 + add rax,r12 + + lea rbp,[24+rbp] + add rax,r14 + mov r12,QWORD[64+rsi] + mov r13,r8 + mov r14,rax + bswap r12 + ror r13,23 + mov r15,r9 + + xor r13,r8 + ror r14,5 + xor r15,r10 + + mov QWORD[64+rsp],r12 + xor r14,rax + and r15,r8 + + ror r13,4 + add r12,r11 + xor r15,r10 + + ror r14,6 + xor r13,r8 + add r12,r15 + + mov r15,rax + add r12,QWORD[rbp] + xor r14,rax + + xor r15,rbx + ror r13,14 + mov r11,rbx + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor r11,rdi + add rdx,r12 + add r11,r12 + + lea rbp,[8+rbp] + add r11,r14 + mov r12,QWORD[72+rsi] + mov r13,rdx + mov r14,r11 + bswap r12 + ror r13,23 + mov rdi,r8 + + xor r13,rdx + ror r14,5 + xor rdi,r9 + + mov QWORD[72+rsp],r12 + xor r14,r11 + and rdi,rdx + + ror r13,4 + add r12,r10 + xor rdi,r9 + + ror r14,6 + xor r13,rdx + add r12,rdi + + mov rdi,r11 + add r12,QWORD[rbp] + xor r14,r11 + + xor rdi,rax + ror r13,14 + mov r10,rax + + and r15,rdi + ror r14,28 + add r12,r13 + + xor r10,r15 + add rcx,r12 + add r10,r12 + + lea rbp,[24+rbp] + add r10,r14 + mov r12,QWORD[80+rsi] + mov r13,rcx + mov r14,r10 + bswap r12 + ror r13,23 + mov r15,rdx + + xor r13,rcx + ror r14,5 + xor r15,r8 + + mov QWORD[80+rsp],r12 + xor r14,r10 + and r15,rcx + + ror r13,4 + add r12,r9 + xor r15,r8 + + ror r14,6 + xor r13,rcx + add r12,r15 + + mov r15,r10 + add r12,QWORD[rbp] + xor r14,r10 + + xor r15,r11 + ror r13,14 + mov r9,r11 + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor r9,rdi + add rbx,r12 + add r9,r12 + + lea rbp,[8+rbp] + add r9,r14 + mov r12,QWORD[88+rsi] + mov r13,rbx + mov r14,r9 + bswap r12 + ror r13,23 + mov rdi,rcx + + xor r13,rbx + ror r14,5 + xor rdi,rdx + + mov QWORD[88+rsp],r12 + xor r14,r9 + and rdi,rbx + + ror r13,4 + add r12,r8 + xor rdi,rdx + + ror r14,6 + xor r13,rbx + add r12,rdi + + mov rdi,r9 + add r12,QWORD[rbp] + xor r14,r9 + + xor rdi,r10 + ror r13,14 + mov r8,r10 + + and r15,rdi + ror r14,28 + add r12,r13 + + xor r8,r15 + add rax,r12 + add r8,r12 + + lea rbp,[24+rbp] + add r8,r14 + mov r12,QWORD[96+rsi] + mov r13,rax + mov r14,r8 + bswap r12 + ror r13,23 + mov r15,rbx + + xor r13,rax + ror r14,5 + xor r15,rcx + + mov QWORD[96+rsp],r12 + xor r14,r8 + and r15,rax + + ror r13,4 + add r12,rdx + xor r15,rcx + + ror r14,6 + xor r13,rax + add r12,r15 + + mov r15,r8 + add r12,QWORD[rbp] + xor r14,r8 + + xor r15,r9 + ror r13,14 + mov rdx,r9 + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor rdx,rdi + add r11,r12 + add rdx,r12 + + lea rbp,[8+rbp] + add rdx,r14 + mov r12,QWORD[104+rsi] + mov r13,r11 + mov r14,rdx + bswap r12 + ror r13,23 + mov rdi,rax + + xor r13,r11 + ror r14,5 + xor rdi,rbx + + mov QWORD[104+rsp],r12 + xor r14,rdx + and rdi,r11 + + ror r13,4 + add r12,rcx + xor rdi,rbx + + ror r14,6 + xor r13,r11 + add r12,rdi + + mov rdi,rdx + add r12,QWORD[rbp] + xor r14,rdx + + xor rdi,r8 + ror r13,14 + mov rcx,r8 + + and r15,rdi + ror r14,28 + add r12,r13 + + xor rcx,r15 + add r10,r12 + add rcx,r12 + + lea rbp,[24+rbp] + add rcx,r14 + mov r12,QWORD[112+rsi] + mov r13,r10 + mov r14,rcx + bswap r12 + ror r13,23 + mov r15,r11 + + xor r13,r10 + ror r14,5 + xor r15,rax + + mov QWORD[112+rsp],r12 + xor r14,rcx + and r15,r10 + + ror r13,4 + add r12,rbx + xor r15,rax + + ror r14,6 + xor r13,r10 + add r12,r15 + + mov r15,rcx + add r12,QWORD[rbp] + xor r14,rcx + + xor r15,rdx + ror r13,14 + mov rbx,rdx + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor rbx,rdi + add r9,r12 + add rbx,r12 + + lea rbp,[8+rbp] + add rbx,r14 + mov r12,QWORD[120+rsi] + mov r13,r9 + mov r14,rbx + bswap r12 + ror r13,23 + mov rdi,r10 + + xor r13,r9 + ror r14,5 + xor rdi,r11 + + mov QWORD[120+rsp],r12 + xor r14,rbx + and rdi,r9 + + ror r13,4 + add r12,rax + xor rdi,r11 + + ror r14,6 + xor r13,r9 + add r12,rdi + + mov rdi,rbx + add r12,QWORD[rbp] + xor r14,rbx + + xor rdi,rcx + ror r13,14 + mov rax,rcx + + and r15,rdi + ror r14,28 + add r12,r13 + + xor rax,r15 + add r8,r12 + add rax,r12 + + lea rbp,[24+rbp] + jmp NEAR $L$rounds_16_xx +ALIGN 16 +$L$rounds_16_xx: + mov r13,QWORD[8+rsp] + mov r15,QWORD[112+rsp] + + mov r12,r13 + ror r13,7 + add rax,r14 + mov r14,r15 + ror r15,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor r15,r14 + shr r14,6 + + ror r15,19 + xor r12,r13 + xor r15,r14 + add r12,QWORD[72+rsp] + + add r12,QWORD[rsp] + mov r13,r8 + add r12,r15 + mov r14,rax + ror r13,23 + mov r15,r9 + + xor r13,r8 + ror r14,5 + xor r15,r10 + + mov QWORD[rsp],r12 + xor r14,rax + and r15,r8 + + ror r13,4 + add r12,r11 + xor r15,r10 + + ror r14,6 + xor r13,r8 + add r12,r15 + + mov r15,rax + add r12,QWORD[rbp] + xor r14,rax + + xor r15,rbx + ror r13,14 + mov r11,rbx + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor r11,rdi + add rdx,r12 + add r11,r12 + + lea rbp,[8+rbp] + mov r13,QWORD[16+rsp] + mov rdi,QWORD[120+rsp] + + mov r12,r13 + ror r13,7 + add r11,r14 + mov r14,rdi + ror rdi,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor rdi,r14 + shr r14,6 + + ror rdi,19 + xor r12,r13 + xor rdi,r14 + add r12,QWORD[80+rsp] + + add r12,QWORD[8+rsp] + mov r13,rdx + add r12,rdi + mov r14,r11 + ror r13,23 + mov rdi,r8 + + xor r13,rdx + ror r14,5 + xor rdi,r9 + + mov QWORD[8+rsp],r12 + xor r14,r11 + and rdi,rdx + + ror r13,4 + add r12,r10 + xor rdi,r9 + + ror r14,6 + xor r13,rdx + add r12,rdi + + mov rdi,r11 + add r12,QWORD[rbp] + xor r14,r11 + + xor rdi,rax + ror r13,14 + mov r10,rax + + and r15,rdi + ror r14,28 + add r12,r13 + + xor r10,r15 + add rcx,r12 + add r10,r12 + + lea rbp,[24+rbp] + mov r13,QWORD[24+rsp] + mov r15,QWORD[rsp] + + mov r12,r13 + ror r13,7 + add r10,r14 + mov r14,r15 + ror r15,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor r15,r14 + shr r14,6 + + ror r15,19 + xor r12,r13 + xor r15,r14 + add r12,QWORD[88+rsp] + + add r12,QWORD[16+rsp] + mov r13,rcx + add r12,r15 + mov r14,r10 + ror r13,23 + mov r15,rdx + + xor r13,rcx + ror r14,5 + xor r15,r8 + + mov QWORD[16+rsp],r12 + xor r14,r10 + and r15,rcx + + ror r13,4 + add r12,r9 + xor r15,r8 + + ror r14,6 + xor r13,rcx + add r12,r15 + + mov r15,r10 + add r12,QWORD[rbp] + xor r14,r10 + + xor r15,r11 + ror r13,14 + mov r9,r11 + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor r9,rdi + add rbx,r12 + add r9,r12 + + lea rbp,[8+rbp] + mov r13,QWORD[32+rsp] + mov rdi,QWORD[8+rsp] + + mov r12,r13 + ror r13,7 + add r9,r14 + mov r14,rdi + ror rdi,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor rdi,r14 + shr r14,6 + + ror rdi,19 + xor r12,r13 + xor rdi,r14 + add r12,QWORD[96+rsp] + + add r12,QWORD[24+rsp] + mov r13,rbx + add r12,rdi + mov r14,r9 + ror r13,23 + mov rdi,rcx + + xor r13,rbx + ror r14,5 + xor rdi,rdx + + mov QWORD[24+rsp],r12 + xor r14,r9 + and rdi,rbx + + ror r13,4 + add r12,r8 + xor rdi,rdx + + ror r14,6 + xor r13,rbx + add r12,rdi + + mov rdi,r9 + add r12,QWORD[rbp] + xor r14,r9 + + xor rdi,r10 + ror r13,14 + mov r8,r10 + + and r15,rdi + ror r14,28 + add r12,r13 + + xor r8,r15 + add rax,r12 + add r8,r12 + + lea rbp,[24+rbp] + mov r13,QWORD[40+rsp] + mov r15,QWORD[16+rsp] + + mov r12,r13 + ror r13,7 + add r8,r14 + mov r14,r15 + ror r15,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor r15,r14 + shr r14,6 + + ror r15,19 + xor r12,r13 + xor r15,r14 + add r12,QWORD[104+rsp] + + add r12,QWORD[32+rsp] + mov r13,rax + add r12,r15 + mov r14,r8 + ror r13,23 + mov r15,rbx + + xor r13,rax + ror r14,5 + xor r15,rcx + + mov QWORD[32+rsp],r12 + xor r14,r8 + and r15,rax + + ror r13,4 + add r12,rdx + xor r15,rcx + + ror r14,6 + xor r13,rax + add r12,r15 + + mov r15,r8 + add r12,QWORD[rbp] + xor r14,r8 + + xor r15,r9 + ror r13,14 + mov rdx,r9 + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor rdx,rdi + add r11,r12 + add rdx,r12 + + lea rbp,[8+rbp] + mov r13,QWORD[48+rsp] + mov rdi,QWORD[24+rsp] + + mov r12,r13 + ror r13,7 + add rdx,r14 + mov r14,rdi + ror rdi,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor rdi,r14 + shr r14,6 + + ror rdi,19 + xor r12,r13 + xor rdi,r14 + add r12,QWORD[112+rsp] + + add r12,QWORD[40+rsp] + mov r13,r11 + add r12,rdi + mov r14,rdx + ror r13,23 + mov rdi,rax + + xor r13,r11 + ror r14,5 + xor rdi,rbx + + mov QWORD[40+rsp],r12 + xor r14,rdx + and rdi,r11 + + ror r13,4 + add r12,rcx + xor rdi,rbx + + ror r14,6 + xor r13,r11 + add r12,rdi + + mov rdi,rdx + add r12,QWORD[rbp] + xor r14,rdx + + xor rdi,r8 + ror r13,14 + mov rcx,r8 + + and r15,rdi + ror r14,28 + add r12,r13 + + xor rcx,r15 + add r10,r12 + add rcx,r12 + + lea rbp,[24+rbp] + mov r13,QWORD[56+rsp] + mov r15,QWORD[32+rsp] + + mov r12,r13 + ror r13,7 + add rcx,r14 + mov r14,r15 + ror r15,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor r15,r14 + shr r14,6 + + ror r15,19 + xor r12,r13 + xor r15,r14 + add r12,QWORD[120+rsp] + + add r12,QWORD[48+rsp] + mov r13,r10 + add r12,r15 + mov r14,rcx + ror r13,23 + mov r15,r11 + + xor r13,r10 + ror r14,5 + xor r15,rax + + mov QWORD[48+rsp],r12 + xor r14,rcx + and r15,r10 + + ror r13,4 + add r12,rbx + xor r15,rax + + ror r14,6 + xor r13,r10 + add r12,r15 + + mov r15,rcx + add r12,QWORD[rbp] + xor r14,rcx + + xor r15,rdx + ror r13,14 + mov rbx,rdx + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor rbx,rdi + add r9,r12 + add rbx,r12 + + lea rbp,[8+rbp] + mov r13,QWORD[64+rsp] + mov rdi,QWORD[40+rsp] + + mov r12,r13 + ror r13,7 + add rbx,r14 + mov r14,rdi + ror rdi,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor rdi,r14 + shr r14,6 + + ror rdi,19 + xor r12,r13 + xor rdi,r14 + add r12,QWORD[rsp] + + add r12,QWORD[56+rsp] + mov r13,r9 + add r12,rdi + mov r14,rbx + ror r13,23 + mov rdi,r10 + + xor r13,r9 + ror r14,5 + xor rdi,r11 + + mov QWORD[56+rsp],r12 + xor r14,rbx + and rdi,r9 + + ror r13,4 + add r12,rax + xor rdi,r11 + + ror r14,6 + xor r13,r9 + add r12,rdi + + mov rdi,rbx + add r12,QWORD[rbp] + xor r14,rbx + + xor rdi,rcx + ror r13,14 + mov rax,rcx + + and r15,rdi + ror r14,28 + add r12,r13 + + xor rax,r15 + add r8,r12 + add rax,r12 + + lea rbp,[24+rbp] + mov r13,QWORD[72+rsp] + mov r15,QWORD[48+rsp] + + mov r12,r13 + ror r13,7 + add rax,r14 + mov r14,r15 + ror r15,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor r15,r14 + shr r14,6 + + ror r15,19 + xor r12,r13 + xor r15,r14 + add r12,QWORD[8+rsp] + + add r12,QWORD[64+rsp] + mov r13,r8 + add r12,r15 + mov r14,rax + ror r13,23 + mov r15,r9 + + xor r13,r8 + ror r14,5 + xor r15,r10 + + mov QWORD[64+rsp],r12 + xor r14,rax + and r15,r8 + + ror r13,4 + add r12,r11 + xor r15,r10 + + ror r14,6 + xor r13,r8 + add r12,r15 + + mov r15,rax + add r12,QWORD[rbp] + xor r14,rax + + xor r15,rbx + ror r13,14 + mov r11,rbx + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor r11,rdi + add rdx,r12 + add r11,r12 + + lea rbp,[8+rbp] + mov r13,QWORD[80+rsp] + mov rdi,QWORD[56+rsp] + + mov r12,r13 + ror r13,7 + add r11,r14 + mov r14,rdi + ror rdi,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor rdi,r14 + shr r14,6 + + ror rdi,19 + xor r12,r13 + xor rdi,r14 + add r12,QWORD[16+rsp] + + add r12,QWORD[72+rsp] + mov r13,rdx + add r12,rdi + mov r14,r11 + ror r13,23 + mov rdi,r8 + + xor r13,rdx + ror r14,5 + xor rdi,r9 + + mov QWORD[72+rsp],r12 + xor r14,r11 + and rdi,rdx + + ror r13,4 + add r12,r10 + xor rdi,r9 + + ror r14,6 + xor r13,rdx + add r12,rdi + + mov rdi,r11 + add r12,QWORD[rbp] + xor r14,r11 + + xor rdi,rax + ror r13,14 + mov r10,rax + + and r15,rdi + ror r14,28 + add r12,r13 + + xor r10,r15 + add rcx,r12 + add r10,r12 + + lea rbp,[24+rbp] + mov r13,QWORD[88+rsp] + mov r15,QWORD[64+rsp] + + mov r12,r13 + ror r13,7 + add r10,r14 + mov r14,r15 + ror r15,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor r15,r14 + shr r14,6 + + ror r15,19 + xor r12,r13 + xor r15,r14 + add r12,QWORD[24+rsp] + + add r12,QWORD[80+rsp] + mov r13,rcx + add r12,r15 + mov r14,r10 + ror r13,23 + mov r15,rdx + + xor r13,rcx + ror r14,5 + xor r15,r8 + + mov QWORD[80+rsp],r12 + xor r14,r10 + and r15,rcx + + ror r13,4 + add r12,r9 + xor r15,r8 + + ror r14,6 + xor r13,rcx + add r12,r15 + + mov r15,r10 + add r12,QWORD[rbp] + xor r14,r10 + + xor r15,r11 + ror r13,14 + mov r9,r11 + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor r9,rdi + add rbx,r12 + add r9,r12 + + lea rbp,[8+rbp] + mov r13,QWORD[96+rsp] + mov rdi,QWORD[72+rsp] + + mov r12,r13 + ror r13,7 + add r9,r14 + mov r14,rdi + ror rdi,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor rdi,r14 + shr r14,6 + + ror rdi,19 + xor r12,r13 + xor rdi,r14 + add r12,QWORD[32+rsp] + + add r12,QWORD[88+rsp] + mov r13,rbx + add r12,rdi + mov r14,r9 + ror r13,23 + mov rdi,rcx + + xor r13,rbx + ror r14,5 + xor rdi,rdx + + mov QWORD[88+rsp],r12 + xor r14,r9 + and rdi,rbx + + ror r13,4 + add r12,r8 + xor rdi,rdx + + ror r14,6 + xor r13,rbx + add r12,rdi + + mov rdi,r9 + add r12,QWORD[rbp] + xor r14,r9 + + xor rdi,r10 + ror r13,14 + mov r8,r10 + + and r15,rdi + ror r14,28 + add r12,r13 + + xor r8,r15 + add rax,r12 + add r8,r12 + + lea rbp,[24+rbp] + mov r13,QWORD[104+rsp] + mov r15,QWORD[80+rsp] + + mov r12,r13 + ror r13,7 + add r8,r14 + mov r14,r15 + ror r15,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor r15,r14 + shr r14,6 + + ror r15,19 + xor r12,r13 + xor r15,r14 + add r12,QWORD[40+rsp] + + add r12,QWORD[96+rsp] + mov r13,rax + add r12,r15 + mov r14,r8 + ror r13,23 + mov r15,rbx + + xor r13,rax + ror r14,5 + xor r15,rcx + + mov QWORD[96+rsp],r12 + xor r14,r8 + and r15,rax + + ror r13,4 + add r12,rdx + xor r15,rcx + + ror r14,6 + xor r13,rax + add r12,r15 + + mov r15,r8 + add r12,QWORD[rbp] + xor r14,r8 + + xor r15,r9 + ror r13,14 + mov rdx,r9 + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor rdx,rdi + add r11,r12 + add rdx,r12 + + lea rbp,[8+rbp] + mov r13,QWORD[112+rsp] + mov rdi,QWORD[88+rsp] + + mov r12,r13 + ror r13,7 + add rdx,r14 + mov r14,rdi + ror rdi,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor rdi,r14 + shr r14,6 + + ror rdi,19 + xor r12,r13 + xor rdi,r14 + add r12,QWORD[48+rsp] + + add r12,QWORD[104+rsp] + mov r13,r11 + add r12,rdi + mov r14,rdx + ror r13,23 + mov rdi,rax + + xor r13,r11 + ror r14,5 + xor rdi,rbx + + mov QWORD[104+rsp],r12 + xor r14,rdx + and rdi,r11 + + ror r13,4 + add r12,rcx + xor rdi,rbx + + ror r14,6 + xor r13,r11 + add r12,rdi + + mov rdi,rdx + add r12,QWORD[rbp] + xor r14,rdx + + xor rdi,r8 + ror r13,14 + mov rcx,r8 + + and r15,rdi + ror r14,28 + add r12,r13 + + xor rcx,r15 + add r10,r12 + add rcx,r12 + + lea rbp,[24+rbp] + mov r13,QWORD[120+rsp] + mov r15,QWORD[96+rsp] + + mov r12,r13 + ror r13,7 + add rcx,r14 + mov r14,r15 + ror r15,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor r15,r14 + shr r14,6 + + ror r15,19 + xor r12,r13 + xor r15,r14 + add r12,QWORD[56+rsp] + + add r12,QWORD[112+rsp] + mov r13,r10 + add r12,r15 + mov r14,rcx + ror r13,23 + mov r15,r11 + + xor r13,r10 + ror r14,5 + xor r15,rax + + mov QWORD[112+rsp],r12 + xor r14,rcx + and r15,r10 + + ror r13,4 + add r12,rbx + xor r15,rax + + ror r14,6 + xor r13,r10 + add r12,r15 + + mov r15,rcx + add r12,QWORD[rbp] + xor r14,rcx + + xor r15,rdx + ror r13,14 + mov rbx,rdx + + and rdi,r15 + ror r14,28 + add r12,r13 + + xor rbx,rdi + add r9,r12 + add rbx,r12 + + lea rbp,[8+rbp] + mov r13,QWORD[rsp] + mov rdi,QWORD[104+rsp] + + mov r12,r13 + ror r13,7 + add rbx,r14 + mov r14,rdi + ror rdi,42 + + xor r13,r12 + shr r12,7 + ror r13,1 + xor rdi,r14 + shr r14,6 + + ror rdi,19 + xor r12,r13 + xor rdi,r14 + add r12,QWORD[64+rsp] + + add r12,QWORD[120+rsp] + mov r13,r9 + add r12,rdi + mov r14,rbx + ror r13,23 + mov rdi,r10 + + xor r13,r9 + ror r14,5 + xor rdi,r11 + + mov QWORD[120+rsp],r12 + xor r14,rbx + and rdi,r9 + + ror r13,4 + add r12,rax + xor rdi,r11 + + ror r14,6 + xor r13,r9 + add r12,rdi + + mov rdi,rbx + add r12,QWORD[rbp] + xor r14,rbx + + xor rdi,rcx + ror r13,14 + mov rax,rcx + + and r15,rdi + ror r14,28 + add r12,r13 + + xor rax,r15 + add r8,r12 + add rax,r12 + + lea rbp,[24+rbp] + cmp BYTE[7+rbp],0 + jnz NEAR $L$rounds_16_xx + + mov rdi,QWORD[((128+0))+rsp] + add rax,r14 + lea rsi,[128+rsi] + + add rax,QWORD[rdi] + add rbx,QWORD[8+rdi] + add rcx,QWORD[16+rdi] + add rdx,QWORD[24+rdi] + add r8,QWORD[32+rdi] + add r9,QWORD[40+rdi] + add r10,QWORD[48+rdi] + add r11,QWORD[56+rdi] + + cmp rsi,QWORD[((128+16))+rsp] + + mov QWORD[rdi],rax + mov QWORD[8+rdi],rbx + mov QWORD[16+rdi],rcx + mov QWORD[24+rdi],rdx + mov QWORD[32+rdi],r8 + mov QWORD[40+rdi],r9 + mov QWORD[48+rdi],r10 + mov QWORD[56+rdi],r11 + jb NEAR $L$loop + + mov rsi,QWORD[152+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha512_block_data_order: +ALIGN 64 + +K512: + DQ 0x428a2f98d728ae22,0x7137449123ef65cd + DQ 0x428a2f98d728ae22,0x7137449123ef65cd + DQ 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc + DQ 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc + DQ 0x3956c25bf348b538,0x59f111f1b605d019 + DQ 0x3956c25bf348b538,0x59f111f1b605d019 + DQ 0x923f82a4af194f9b,0xab1c5ed5da6d8118 + DQ 0x923f82a4af194f9b,0xab1c5ed5da6d8118 + DQ 0xd807aa98a3030242,0x12835b0145706fbe + DQ 0xd807aa98a3030242,0x12835b0145706fbe + DQ 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 + DQ 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 + DQ 0x72be5d74f27b896f,0x80deb1fe3b1696b1 + DQ 0x72be5d74f27b896f,0x80deb1fe3b1696b1 + DQ 0x9bdc06a725c71235,0xc19bf174cf692694 + DQ 0x9bdc06a725c71235,0xc19bf174cf692694 + DQ 0xe49b69c19ef14ad2,0xefbe4786384f25e3 + DQ 0xe49b69c19ef14ad2,0xefbe4786384f25e3 + DQ 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 + DQ 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 + DQ 0x2de92c6f592b0275,0x4a7484aa6ea6e483 + DQ 0x2de92c6f592b0275,0x4a7484aa6ea6e483 + DQ 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 + DQ 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 + DQ 0x983e5152ee66dfab,0xa831c66d2db43210 + DQ 0x983e5152ee66dfab,0xa831c66d2db43210 + DQ 0xb00327c898fb213f,0xbf597fc7beef0ee4 + DQ 0xb00327c898fb213f,0xbf597fc7beef0ee4 + DQ 0xc6e00bf33da88fc2,0xd5a79147930aa725 + DQ 0xc6e00bf33da88fc2,0xd5a79147930aa725 + DQ 0x06ca6351e003826f,0x142929670a0e6e70 + DQ 0x06ca6351e003826f,0x142929670a0e6e70 + DQ 0x27b70a8546d22ffc,0x2e1b21385c26c926 + DQ 0x27b70a8546d22ffc,0x2e1b21385c26c926 + DQ 0x4d2c6dfc5ac42aed,0x53380d139d95b3df + DQ 0x4d2c6dfc5ac42aed,0x53380d139d95b3df + DQ 0x650a73548baf63de,0x766a0abb3c77b2a8 + DQ 0x650a73548baf63de,0x766a0abb3c77b2a8 + DQ 0x81c2c92e47edaee6,0x92722c851482353b + DQ 0x81c2c92e47edaee6,0x92722c851482353b + DQ 0xa2bfe8a14cf10364,0xa81a664bbc423001 + DQ 0xa2bfe8a14cf10364,0xa81a664bbc423001 + DQ 0xc24b8b70d0f89791,0xc76c51a30654be30 + DQ 0xc24b8b70d0f89791,0xc76c51a30654be30 + DQ 0xd192e819d6ef5218,0xd69906245565a910 + DQ 0xd192e819d6ef5218,0xd69906245565a910 + DQ 0xf40e35855771202a,0x106aa07032bbd1b8 + DQ 0xf40e35855771202a,0x106aa07032bbd1b8 + DQ 0x19a4c116b8d2d0c8,0x1e376c085141ab53 + DQ 0x19a4c116b8d2d0c8,0x1e376c085141ab53 + DQ 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 + DQ 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 + DQ 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb + DQ 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb + DQ 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 + DQ 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 + DQ 0x748f82ee5defb2fc,0x78a5636f43172f60 + DQ 0x748f82ee5defb2fc,0x78a5636f43172f60 + DQ 0x84c87814a1f0ab72,0x8cc702081a6439ec + DQ 0x84c87814a1f0ab72,0x8cc702081a6439ec + DQ 0x90befffa23631e28,0xa4506cebde82bde9 + DQ 0x90befffa23631e28,0xa4506cebde82bde9 + DQ 0xbef9a3f7b2c67915,0xc67178f2e372532b + DQ 0xbef9a3f7b2c67915,0xc67178f2e372532b + DQ 0xca273eceea26619c,0xd186b8c721c0c207 + DQ 0xca273eceea26619c,0xd186b8c721c0c207 + DQ 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 + DQ 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 + DQ 0x06f067aa72176fba,0x0a637dc5a2c898a6 + DQ 0x06f067aa72176fba,0x0a637dc5a2c898a6 + DQ 0x113f9804bef90dae,0x1b710b35131c471b + DQ 0x113f9804bef90dae,0x1b710b35131c471b + DQ 0x28db77f523047d84,0x32caab7b40c72493 + DQ 0x28db77f523047d84,0x32caab7b40c72493 + DQ 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c + DQ 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c + DQ 0x4cc5d4becb3e42b6,0x597f299cfc657e2a + DQ 0x4cc5d4becb3e42b6,0x597f299cfc657e2a + DQ 0x5fcb6fab3ad6faec,0x6c44198c4a475817 + DQ 0x5fcb6fab3ad6faec,0x6c44198c4a475817 + + DQ 0x0001020304050607,0x08090a0b0c0d0e0f + DQ 0x0001020304050607,0x08090a0b0c0d0e0f +DB 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97 +DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54 +DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 +DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 +DB 111,114,103,62,0 + +ALIGN 64 +sha512_block_data_order_xop: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha512_block_data_order_xop: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$xop_shortcut: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + shl rdx,4 + sub rsp,256 + lea rdx,[rdx*8+rsi] + and rsp,-64 + mov QWORD[((128+0))+rsp],rdi + mov QWORD[((128+8))+rsp],rsi + mov QWORD[((128+16))+rsp],rdx + mov QWORD[152+rsp],rax + + movaps XMMWORD[(128+32)+rsp],xmm6 + movaps XMMWORD[(128+48)+rsp],xmm7 + movaps XMMWORD[(128+64)+rsp],xmm8 + movaps XMMWORD[(128+80)+rsp],xmm9 + movaps XMMWORD[(128+96)+rsp],xmm10 + movaps XMMWORD[(128+112)+rsp],xmm11 +$L$prologue_xop: + + vzeroupper + mov rax,QWORD[rdi] + mov rbx,QWORD[8+rdi] + mov rcx,QWORD[16+rdi] + mov rdx,QWORD[24+rdi] + mov r8,QWORD[32+rdi] + mov r9,QWORD[40+rdi] + mov r10,QWORD[48+rdi] + mov r11,QWORD[56+rdi] + jmp NEAR $L$loop_xop +ALIGN 16 +$L$loop_xop: + vmovdqa xmm11,XMMWORD[((K512+1280))] + vmovdqu xmm0,XMMWORD[rsi] + lea rbp,[((K512+128))] + vmovdqu xmm1,XMMWORD[16+rsi] + vmovdqu xmm2,XMMWORD[32+rsi] + vpshufb xmm0,xmm0,xmm11 + vmovdqu xmm3,XMMWORD[48+rsi] + vpshufb xmm1,xmm1,xmm11 + vmovdqu xmm4,XMMWORD[64+rsi] + vpshufb xmm2,xmm2,xmm11 + vmovdqu xmm5,XMMWORD[80+rsi] + vpshufb xmm3,xmm3,xmm11 + vmovdqu xmm6,XMMWORD[96+rsi] + vpshufb xmm4,xmm4,xmm11 + vmovdqu xmm7,XMMWORD[112+rsi] + vpshufb xmm5,xmm5,xmm11 + vpaddq xmm8,xmm0,XMMWORD[((-128))+rbp] + vpshufb xmm6,xmm6,xmm11 + vpaddq xmm9,xmm1,XMMWORD[((-96))+rbp] + vpshufb xmm7,xmm7,xmm11 + vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp] + vpaddq xmm11,xmm3,XMMWORD[((-32))+rbp] + vmovdqa XMMWORD[rsp],xmm8 + vpaddq xmm8,xmm4,XMMWORD[rbp] + vmovdqa XMMWORD[16+rsp],xmm9 + vpaddq xmm9,xmm5,XMMWORD[32+rbp] + vmovdqa XMMWORD[32+rsp],xmm10 + vpaddq xmm10,xmm6,XMMWORD[64+rbp] + vmovdqa XMMWORD[48+rsp],xmm11 + vpaddq xmm11,xmm7,XMMWORD[96+rbp] + vmovdqa XMMWORD[64+rsp],xmm8 + mov r14,rax + vmovdqa XMMWORD[80+rsp],xmm9 + mov rdi,rbx + vmovdqa XMMWORD[96+rsp],xmm10 + xor rdi,rcx + vmovdqa XMMWORD[112+rsp],xmm11 + mov r13,r8 + jmp NEAR $L$xop_00_47 + +ALIGN 16 +$L$xop_00_47: + add rbp,256 + vpalignr xmm8,xmm1,xmm0,8 + ror r13,23 + mov rax,r14 + vpalignr xmm11,xmm5,xmm4,8 + mov r12,r9 + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,r8 + xor r12,r10 + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,rax + vpaddq xmm0,xmm0,xmm11 + and r12,r8 + xor r13,r8 + add r11,QWORD[rsp] + mov r15,rax +DB 143,72,120,195,209,7 + xor r12,r10 + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,rbx + add r11,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,223,3 + xor r14,rax + add r11,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rbx + ror r14,28 + vpsrlq xmm10,xmm7,6 + add rdx,r11 + add r11,rdi + vpaddq xmm0,xmm0,xmm8 + mov r13,rdx + add r14,r11 +DB 143,72,120,195,203,42 + ror r13,23 + mov r11,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,r8 + ror r14,5 + xor r13,rdx + xor r12,r9 + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,r11 + and r12,rdx + xor r13,rdx + vpaddq xmm0,xmm0,xmm11 + add r10,QWORD[8+rsp] + mov rdi,r11 + xor r12,r9 + ror r14,6 + vpaddq xmm10,xmm0,XMMWORD[((-128))+rbp] + xor rdi,rax + add r10,r12 + ror r13,14 + and r15,rdi + xor r14,r11 + add r10,r13 + xor r15,rax + ror r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + vmovdqa XMMWORD[rsp],xmm10 + vpalignr xmm8,xmm2,xmm1,8 + ror r13,23 + mov r10,r14 + vpalignr xmm11,xmm6,xmm5,8 + mov r12,rdx + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,rcx + xor r12,r8 + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,r10 + vpaddq xmm1,xmm1,xmm11 + and r12,rcx + xor r13,rcx + add r9,QWORD[16+rsp] + mov r15,r10 +DB 143,72,120,195,209,7 + xor r12,r8 + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,r11 + add r9,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,216,3 + xor r14,r10 + add r9,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r11 + ror r14,28 + vpsrlq xmm10,xmm0,6 + add rbx,r9 + add r9,rdi + vpaddq xmm1,xmm1,xmm8 + mov r13,rbx + add r14,r9 +DB 143,72,120,195,203,42 + ror r13,23 + mov r9,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,rcx + ror r14,5 + xor r13,rbx + xor r12,rdx + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,r9 + and r12,rbx + xor r13,rbx + vpaddq xmm1,xmm1,xmm11 + add r8,QWORD[24+rsp] + mov rdi,r9 + xor r12,rdx + ror r14,6 + vpaddq xmm10,xmm1,XMMWORD[((-96))+rbp] + xor rdi,r10 + add r8,r12 + ror r13,14 + and r15,rdi + xor r14,r9 + add r8,r13 + xor r15,r10 + ror r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + vmovdqa XMMWORD[16+rsp],xmm10 + vpalignr xmm8,xmm3,xmm2,8 + ror r13,23 + mov r8,r14 + vpalignr xmm11,xmm7,xmm6,8 + mov r12,rbx + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,rax + xor r12,rcx + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,r8 + vpaddq xmm2,xmm2,xmm11 + and r12,rax + xor r13,rax + add rdx,QWORD[32+rsp] + mov r15,r8 +DB 143,72,120,195,209,7 + xor r12,rcx + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,r9 + add rdx,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,217,3 + xor r14,r8 + add rdx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r9 + ror r14,28 + vpsrlq xmm10,xmm1,6 + add r11,rdx + add rdx,rdi + vpaddq xmm2,xmm2,xmm8 + mov r13,r11 + add r14,rdx +DB 143,72,120,195,203,42 + ror r13,23 + mov rdx,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,rax + ror r14,5 + xor r13,r11 + xor r12,rbx + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,rdx + and r12,r11 + xor r13,r11 + vpaddq xmm2,xmm2,xmm11 + add rcx,QWORD[40+rsp] + mov rdi,rdx + xor r12,rbx + ror r14,6 + vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp] + xor rdi,r8 + add rcx,r12 + ror r13,14 + and r15,rdi + xor r14,rdx + add rcx,r13 + xor r15,r8 + ror r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + vmovdqa XMMWORD[32+rsp],xmm10 + vpalignr xmm8,xmm4,xmm3,8 + ror r13,23 + mov rcx,r14 + vpalignr xmm11,xmm0,xmm7,8 + mov r12,r11 + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,r10 + xor r12,rax + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,rcx + vpaddq xmm3,xmm3,xmm11 + and r12,r10 + xor r13,r10 + add rbx,QWORD[48+rsp] + mov r15,rcx +DB 143,72,120,195,209,7 + xor r12,rax + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,rdx + add rbx,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,218,3 + xor r14,rcx + add rbx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rdx + ror r14,28 + vpsrlq xmm10,xmm2,6 + add r9,rbx + add rbx,rdi + vpaddq xmm3,xmm3,xmm8 + mov r13,r9 + add r14,rbx +DB 143,72,120,195,203,42 + ror r13,23 + mov rbx,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,r10 + ror r14,5 + xor r13,r9 + xor r12,r11 + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,rbx + and r12,r9 + xor r13,r9 + vpaddq xmm3,xmm3,xmm11 + add rax,QWORD[56+rsp] + mov rdi,rbx + xor r12,r11 + ror r14,6 + vpaddq xmm10,xmm3,XMMWORD[((-32))+rbp] + xor rdi,rcx + add rax,r12 + ror r13,14 + and r15,rdi + xor r14,rbx + add rax,r13 + xor r15,rcx + ror r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + vmovdqa XMMWORD[48+rsp],xmm10 + vpalignr xmm8,xmm5,xmm4,8 + ror r13,23 + mov rax,r14 + vpalignr xmm11,xmm1,xmm0,8 + mov r12,r9 + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,r8 + xor r12,r10 + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,rax + vpaddq xmm4,xmm4,xmm11 + and r12,r8 + xor r13,r8 + add r11,QWORD[64+rsp] + mov r15,rax +DB 143,72,120,195,209,7 + xor r12,r10 + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,rbx + add r11,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,219,3 + xor r14,rax + add r11,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rbx + ror r14,28 + vpsrlq xmm10,xmm3,6 + add rdx,r11 + add r11,rdi + vpaddq xmm4,xmm4,xmm8 + mov r13,rdx + add r14,r11 +DB 143,72,120,195,203,42 + ror r13,23 + mov r11,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,r8 + ror r14,5 + xor r13,rdx + xor r12,r9 + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,r11 + and r12,rdx + xor r13,rdx + vpaddq xmm4,xmm4,xmm11 + add r10,QWORD[72+rsp] + mov rdi,r11 + xor r12,r9 + ror r14,6 + vpaddq xmm10,xmm4,XMMWORD[rbp] + xor rdi,rax + add r10,r12 + ror r13,14 + and r15,rdi + xor r14,r11 + add r10,r13 + xor r15,rax + ror r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + vmovdqa XMMWORD[64+rsp],xmm10 + vpalignr xmm8,xmm6,xmm5,8 + ror r13,23 + mov r10,r14 + vpalignr xmm11,xmm2,xmm1,8 + mov r12,rdx + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,rcx + xor r12,r8 + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,r10 + vpaddq xmm5,xmm5,xmm11 + and r12,rcx + xor r13,rcx + add r9,QWORD[80+rsp] + mov r15,r10 +DB 143,72,120,195,209,7 + xor r12,r8 + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,r11 + add r9,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,220,3 + xor r14,r10 + add r9,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r11 + ror r14,28 + vpsrlq xmm10,xmm4,6 + add rbx,r9 + add r9,rdi + vpaddq xmm5,xmm5,xmm8 + mov r13,rbx + add r14,r9 +DB 143,72,120,195,203,42 + ror r13,23 + mov r9,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,rcx + ror r14,5 + xor r13,rbx + xor r12,rdx + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,r9 + and r12,rbx + xor r13,rbx + vpaddq xmm5,xmm5,xmm11 + add r8,QWORD[88+rsp] + mov rdi,r9 + xor r12,rdx + ror r14,6 + vpaddq xmm10,xmm5,XMMWORD[32+rbp] + xor rdi,r10 + add r8,r12 + ror r13,14 + and r15,rdi + xor r14,r9 + add r8,r13 + xor r15,r10 + ror r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + vmovdqa XMMWORD[80+rsp],xmm10 + vpalignr xmm8,xmm7,xmm6,8 + ror r13,23 + mov r8,r14 + vpalignr xmm11,xmm3,xmm2,8 + mov r12,rbx + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,rax + xor r12,rcx + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,r8 + vpaddq xmm6,xmm6,xmm11 + and r12,rax + xor r13,rax + add rdx,QWORD[96+rsp] + mov r15,r8 +DB 143,72,120,195,209,7 + xor r12,rcx + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,r9 + add rdx,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,221,3 + xor r14,r8 + add rdx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r9 + ror r14,28 + vpsrlq xmm10,xmm5,6 + add r11,rdx + add rdx,rdi + vpaddq xmm6,xmm6,xmm8 + mov r13,r11 + add r14,rdx +DB 143,72,120,195,203,42 + ror r13,23 + mov rdx,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,rax + ror r14,5 + xor r13,r11 + xor r12,rbx + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,rdx + and r12,r11 + xor r13,r11 + vpaddq xmm6,xmm6,xmm11 + add rcx,QWORD[104+rsp] + mov rdi,rdx + xor r12,rbx + ror r14,6 + vpaddq xmm10,xmm6,XMMWORD[64+rbp] + xor rdi,r8 + add rcx,r12 + ror r13,14 + and r15,rdi + xor r14,rdx + add rcx,r13 + xor r15,r8 + ror r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + vmovdqa XMMWORD[96+rsp],xmm10 + vpalignr xmm8,xmm0,xmm7,8 + ror r13,23 + mov rcx,r14 + vpalignr xmm11,xmm4,xmm3,8 + mov r12,r11 + ror r14,5 +DB 143,72,120,195,200,56 + xor r13,r10 + xor r12,rax + vpsrlq xmm8,xmm8,7 + ror r13,4 + xor r14,rcx + vpaddq xmm7,xmm7,xmm11 + and r12,r10 + xor r13,r10 + add rbx,QWORD[112+rsp] + mov r15,rcx +DB 143,72,120,195,209,7 + xor r12,rax + ror r14,6 + vpxor xmm8,xmm8,xmm9 + xor r15,rdx + add rbx,r12 + ror r13,14 + and rdi,r15 +DB 143,104,120,195,222,3 + xor r14,rcx + add rbx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rdx + ror r14,28 + vpsrlq xmm10,xmm6,6 + add r9,rbx + add rbx,rdi + vpaddq xmm7,xmm7,xmm8 + mov r13,r9 + add r14,rbx +DB 143,72,120,195,203,42 + ror r13,23 + mov rbx,r14 + vpxor xmm11,xmm11,xmm10 + mov r12,r10 + ror r14,5 + xor r13,r9 + xor r12,r11 + vpxor xmm11,xmm11,xmm9 + ror r13,4 + xor r14,rbx + and r12,r9 + xor r13,r9 + vpaddq xmm7,xmm7,xmm11 + add rax,QWORD[120+rsp] + mov rdi,rbx + xor r12,r11 + ror r14,6 + vpaddq xmm10,xmm7,XMMWORD[96+rbp] + xor rdi,rcx + add rax,r12 + ror r13,14 + and r15,rdi + xor r14,rbx + add rax,r13 + xor r15,rcx + ror r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + vmovdqa XMMWORD[112+rsp],xmm10 + cmp BYTE[135+rbp],0 + jne NEAR $L$xop_00_47 + ror r13,23 + mov rax,r14 + mov r12,r9 + ror r14,5 + xor r13,r8 + xor r12,r10 + ror r13,4 + xor r14,rax + and r12,r8 + xor r13,r8 + add r11,QWORD[rsp] + mov r15,rax + xor r12,r10 + ror r14,6 + xor r15,rbx + add r11,r12 + ror r13,14 + and rdi,r15 + xor r14,rax + add r11,r13 + xor rdi,rbx + ror r14,28 + add rdx,r11 + add r11,rdi + mov r13,rdx + add r14,r11 + ror r13,23 + mov r11,r14 + mov r12,r8 + ror r14,5 + xor r13,rdx + xor r12,r9 + ror r13,4 + xor r14,r11 + and r12,rdx + xor r13,rdx + add r10,QWORD[8+rsp] + mov rdi,r11 + xor r12,r9 + ror r14,6 + xor rdi,rax + add r10,r12 + ror r13,14 + and r15,rdi + xor r14,r11 + add r10,r13 + xor r15,rax + ror r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + ror r13,23 + mov r10,r14 + mov r12,rdx + ror r14,5 + xor r13,rcx + xor r12,r8 + ror r13,4 + xor r14,r10 + and r12,rcx + xor r13,rcx + add r9,QWORD[16+rsp] + mov r15,r10 + xor r12,r8 + ror r14,6 + xor r15,r11 + add r9,r12 + ror r13,14 + and rdi,r15 + xor r14,r10 + add r9,r13 + xor rdi,r11 + ror r14,28 + add rbx,r9 + add r9,rdi + mov r13,rbx + add r14,r9 + ror r13,23 + mov r9,r14 + mov r12,rcx + ror r14,5 + xor r13,rbx + xor r12,rdx + ror r13,4 + xor r14,r9 + and r12,rbx + xor r13,rbx + add r8,QWORD[24+rsp] + mov rdi,r9 + xor r12,rdx + ror r14,6 + xor rdi,r10 + add r8,r12 + ror r13,14 + and r15,rdi + xor r14,r9 + add r8,r13 + xor r15,r10 + ror r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + ror r13,23 + mov r8,r14 + mov r12,rbx + ror r14,5 + xor r13,rax + xor r12,rcx + ror r13,4 + xor r14,r8 + and r12,rax + xor r13,rax + add rdx,QWORD[32+rsp] + mov r15,r8 + xor r12,rcx + ror r14,6 + xor r15,r9 + add rdx,r12 + ror r13,14 + and rdi,r15 + xor r14,r8 + add rdx,r13 + xor rdi,r9 + ror r14,28 + add r11,rdx + add rdx,rdi + mov r13,r11 + add r14,rdx + ror r13,23 + mov rdx,r14 + mov r12,rax + ror r14,5 + xor r13,r11 + xor r12,rbx + ror r13,4 + xor r14,rdx + and r12,r11 + xor r13,r11 + add rcx,QWORD[40+rsp] + mov rdi,rdx + xor r12,rbx + ror r14,6 + xor rdi,r8 + add rcx,r12 + ror r13,14 + and r15,rdi + xor r14,rdx + add rcx,r13 + xor r15,r8 + ror r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + ror r13,23 + mov rcx,r14 + mov r12,r11 + ror r14,5 + xor r13,r10 + xor r12,rax + ror r13,4 + xor r14,rcx + and r12,r10 + xor r13,r10 + add rbx,QWORD[48+rsp] + mov r15,rcx + xor r12,rax + ror r14,6 + xor r15,rdx + add rbx,r12 + ror r13,14 + and rdi,r15 + xor r14,rcx + add rbx,r13 + xor rdi,rdx + ror r14,28 + add r9,rbx + add rbx,rdi + mov r13,r9 + add r14,rbx + ror r13,23 + mov rbx,r14 + mov r12,r10 + ror r14,5 + xor r13,r9 + xor r12,r11 + ror r13,4 + xor r14,rbx + and r12,r9 + xor r13,r9 + add rax,QWORD[56+rsp] + mov rdi,rbx + xor r12,r11 + ror r14,6 + xor rdi,rcx + add rax,r12 + ror r13,14 + and r15,rdi + xor r14,rbx + add rax,r13 + xor r15,rcx + ror r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + ror r13,23 + mov rax,r14 + mov r12,r9 + ror r14,5 + xor r13,r8 + xor r12,r10 + ror r13,4 + xor r14,rax + and r12,r8 + xor r13,r8 + add r11,QWORD[64+rsp] + mov r15,rax + xor r12,r10 + ror r14,6 + xor r15,rbx + add r11,r12 + ror r13,14 + and rdi,r15 + xor r14,rax + add r11,r13 + xor rdi,rbx + ror r14,28 + add rdx,r11 + add r11,rdi + mov r13,rdx + add r14,r11 + ror r13,23 + mov r11,r14 + mov r12,r8 + ror r14,5 + xor r13,rdx + xor r12,r9 + ror r13,4 + xor r14,r11 + and r12,rdx + xor r13,rdx + add r10,QWORD[72+rsp] + mov rdi,r11 + xor r12,r9 + ror r14,6 + xor rdi,rax + add r10,r12 + ror r13,14 + and r15,rdi + xor r14,r11 + add r10,r13 + xor r15,rax + ror r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + ror r13,23 + mov r10,r14 + mov r12,rdx + ror r14,5 + xor r13,rcx + xor r12,r8 + ror r13,4 + xor r14,r10 + and r12,rcx + xor r13,rcx + add r9,QWORD[80+rsp] + mov r15,r10 + xor r12,r8 + ror r14,6 + xor r15,r11 + add r9,r12 + ror r13,14 + and rdi,r15 + xor r14,r10 + add r9,r13 + xor rdi,r11 + ror r14,28 + add rbx,r9 + add r9,rdi + mov r13,rbx + add r14,r9 + ror r13,23 + mov r9,r14 + mov r12,rcx + ror r14,5 + xor r13,rbx + xor r12,rdx + ror r13,4 + xor r14,r9 + and r12,rbx + xor r13,rbx + add r8,QWORD[88+rsp] + mov rdi,r9 + xor r12,rdx + ror r14,6 + xor rdi,r10 + add r8,r12 + ror r13,14 + and r15,rdi + xor r14,r9 + add r8,r13 + xor r15,r10 + ror r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + ror r13,23 + mov r8,r14 + mov r12,rbx + ror r14,5 + xor r13,rax + xor r12,rcx + ror r13,4 + xor r14,r8 + and r12,rax + xor r13,rax + add rdx,QWORD[96+rsp] + mov r15,r8 + xor r12,rcx + ror r14,6 + xor r15,r9 + add rdx,r12 + ror r13,14 + and rdi,r15 + xor r14,r8 + add rdx,r13 + xor rdi,r9 + ror r14,28 + add r11,rdx + add rdx,rdi + mov r13,r11 + add r14,rdx + ror r13,23 + mov rdx,r14 + mov r12,rax + ror r14,5 + xor r13,r11 + xor r12,rbx + ror r13,4 + xor r14,rdx + and r12,r11 + xor r13,r11 + add rcx,QWORD[104+rsp] + mov rdi,rdx + xor r12,rbx + ror r14,6 + xor rdi,r8 + add rcx,r12 + ror r13,14 + and r15,rdi + xor r14,rdx + add rcx,r13 + xor r15,r8 + ror r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + ror r13,23 + mov rcx,r14 + mov r12,r11 + ror r14,5 + xor r13,r10 + xor r12,rax + ror r13,4 + xor r14,rcx + and r12,r10 + xor r13,r10 + add rbx,QWORD[112+rsp] + mov r15,rcx + xor r12,rax + ror r14,6 + xor r15,rdx + add rbx,r12 + ror r13,14 + and rdi,r15 + xor r14,rcx + add rbx,r13 + xor rdi,rdx + ror r14,28 + add r9,rbx + add rbx,rdi + mov r13,r9 + add r14,rbx + ror r13,23 + mov rbx,r14 + mov r12,r10 + ror r14,5 + xor r13,r9 + xor r12,r11 + ror r13,4 + xor r14,rbx + and r12,r9 + xor r13,r9 + add rax,QWORD[120+rsp] + mov rdi,rbx + xor r12,r11 + ror r14,6 + xor rdi,rcx + add rax,r12 + ror r13,14 + and r15,rdi + xor r14,rbx + add rax,r13 + xor r15,rcx + ror r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + mov rdi,QWORD[((128+0))+rsp] + mov rax,r14 + + add rax,QWORD[rdi] + lea rsi,[128+rsi] + add rbx,QWORD[8+rdi] + add rcx,QWORD[16+rdi] + add rdx,QWORD[24+rdi] + add r8,QWORD[32+rdi] + add r9,QWORD[40+rdi] + add r10,QWORD[48+rdi] + add r11,QWORD[56+rdi] + + cmp rsi,QWORD[((128+16))+rsp] + + mov QWORD[rdi],rax + mov QWORD[8+rdi],rbx + mov QWORD[16+rdi],rcx + mov QWORD[24+rdi],rdx + mov QWORD[32+rdi],r8 + mov QWORD[40+rdi],r9 + mov QWORD[48+rdi],r10 + mov QWORD[56+rdi],r11 + jb NEAR $L$loop_xop + + mov rsi,QWORD[152+rsp] + + vzeroupper + movaps xmm6,XMMWORD[((128+32))+rsp] + movaps xmm7,XMMWORD[((128+48))+rsp] + movaps xmm8,XMMWORD[((128+64))+rsp] + movaps xmm9,XMMWORD[((128+80))+rsp] + movaps xmm10,XMMWORD[((128+96))+rsp] + movaps xmm11,XMMWORD[((128+112))+rsp] + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue_xop: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha512_block_data_order_xop: + +ALIGN 64 +sha512_block_data_order_avx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha512_block_data_order_avx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$avx_shortcut: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + shl rdx,4 + sub rsp,256 + lea rdx,[rdx*8+rsi] + and rsp,-64 + mov QWORD[((128+0))+rsp],rdi + mov QWORD[((128+8))+rsp],rsi + mov QWORD[((128+16))+rsp],rdx + mov QWORD[152+rsp],rax + + movaps XMMWORD[(128+32)+rsp],xmm6 + movaps XMMWORD[(128+48)+rsp],xmm7 + movaps XMMWORD[(128+64)+rsp],xmm8 + movaps XMMWORD[(128+80)+rsp],xmm9 + movaps XMMWORD[(128+96)+rsp],xmm10 + movaps XMMWORD[(128+112)+rsp],xmm11 +$L$prologue_avx: + + vzeroupper + mov rax,QWORD[rdi] + mov rbx,QWORD[8+rdi] + mov rcx,QWORD[16+rdi] + mov rdx,QWORD[24+rdi] + mov r8,QWORD[32+rdi] + mov r9,QWORD[40+rdi] + mov r10,QWORD[48+rdi] + mov r11,QWORD[56+rdi] + jmp NEAR $L$loop_avx +ALIGN 16 +$L$loop_avx: + vmovdqa xmm11,XMMWORD[((K512+1280))] + vmovdqu xmm0,XMMWORD[rsi] + lea rbp,[((K512+128))] + vmovdqu xmm1,XMMWORD[16+rsi] + vmovdqu xmm2,XMMWORD[32+rsi] + vpshufb xmm0,xmm0,xmm11 + vmovdqu xmm3,XMMWORD[48+rsi] + vpshufb xmm1,xmm1,xmm11 + vmovdqu xmm4,XMMWORD[64+rsi] + vpshufb xmm2,xmm2,xmm11 + vmovdqu xmm5,XMMWORD[80+rsi] + vpshufb xmm3,xmm3,xmm11 + vmovdqu xmm6,XMMWORD[96+rsi] + vpshufb xmm4,xmm4,xmm11 + vmovdqu xmm7,XMMWORD[112+rsi] + vpshufb xmm5,xmm5,xmm11 + vpaddq xmm8,xmm0,XMMWORD[((-128))+rbp] + vpshufb xmm6,xmm6,xmm11 + vpaddq xmm9,xmm1,XMMWORD[((-96))+rbp] + vpshufb xmm7,xmm7,xmm11 + vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp] + vpaddq xmm11,xmm3,XMMWORD[((-32))+rbp] + vmovdqa XMMWORD[rsp],xmm8 + vpaddq xmm8,xmm4,XMMWORD[rbp] + vmovdqa XMMWORD[16+rsp],xmm9 + vpaddq xmm9,xmm5,XMMWORD[32+rbp] + vmovdqa XMMWORD[32+rsp],xmm10 + vpaddq xmm10,xmm6,XMMWORD[64+rbp] + vmovdqa XMMWORD[48+rsp],xmm11 + vpaddq xmm11,xmm7,XMMWORD[96+rbp] + vmovdqa XMMWORD[64+rsp],xmm8 + mov r14,rax + vmovdqa XMMWORD[80+rsp],xmm9 + mov rdi,rbx + vmovdqa XMMWORD[96+rsp],xmm10 + xor rdi,rcx + vmovdqa XMMWORD[112+rsp],xmm11 + mov r13,r8 + jmp NEAR $L$avx_00_47 + +ALIGN 16 +$L$avx_00_47: + add rbp,256 + vpalignr xmm8,xmm1,xmm0,8 + shrd r13,r13,23 + mov rax,r14 + vpalignr xmm11,xmm5,xmm4,8 + mov r12,r9 + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,r8 + xor r12,r10 + vpaddq xmm0,xmm0,xmm11 + shrd r13,r13,4 + xor r14,rax + vpsrlq xmm11,xmm8,7 + and r12,r8 + xor r13,r8 + vpsllq xmm9,xmm8,56 + add r11,QWORD[rsp] + mov r15,rax + vpxor xmm8,xmm11,xmm10 + xor r12,r10 + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,rbx + add r11,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,rax + add r11,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rbx + shrd r14,r14,28 + vpsrlq xmm11,xmm7,6 + add rdx,r11 + add r11,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,rdx + add r14,r11 + vpsllq xmm10,xmm7,3 + shrd r13,r13,23 + mov r11,r14 + vpaddq xmm0,xmm0,xmm8 + mov r12,r8 + shrd r14,r14,5 + vpsrlq xmm9,xmm7,19 + xor r13,rdx + xor r12,r9 + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,r11 + vpsllq xmm10,xmm10,42 + and r12,rdx + xor r13,rdx + vpxor xmm11,xmm11,xmm9 + add r10,QWORD[8+rsp] + mov rdi,r11 + vpsrlq xmm9,xmm9,42 + xor r12,r9 + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,rax + add r10,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm0,xmm0,xmm11 + xor r14,r11 + add r10,r13 + vpaddq xmm10,xmm0,XMMWORD[((-128))+rbp] + xor r15,rax + shrd r14,r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + vmovdqa XMMWORD[rsp],xmm10 + vpalignr xmm8,xmm2,xmm1,8 + shrd r13,r13,23 + mov r10,r14 + vpalignr xmm11,xmm6,xmm5,8 + mov r12,rdx + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,rcx + xor r12,r8 + vpaddq xmm1,xmm1,xmm11 + shrd r13,r13,4 + xor r14,r10 + vpsrlq xmm11,xmm8,7 + and r12,rcx + xor r13,rcx + vpsllq xmm9,xmm8,56 + add r9,QWORD[16+rsp] + mov r15,r10 + vpxor xmm8,xmm11,xmm10 + xor r12,r8 + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,r11 + add r9,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,r10 + add r9,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r11 + shrd r14,r14,28 + vpsrlq xmm11,xmm0,6 + add rbx,r9 + add r9,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,rbx + add r14,r9 + vpsllq xmm10,xmm0,3 + shrd r13,r13,23 + mov r9,r14 + vpaddq xmm1,xmm1,xmm8 + mov r12,rcx + shrd r14,r14,5 + vpsrlq xmm9,xmm0,19 + xor r13,rbx + xor r12,rdx + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,r9 + vpsllq xmm10,xmm10,42 + and r12,rbx + xor r13,rbx + vpxor xmm11,xmm11,xmm9 + add r8,QWORD[24+rsp] + mov rdi,r9 + vpsrlq xmm9,xmm9,42 + xor r12,rdx + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,r10 + add r8,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm1,xmm1,xmm11 + xor r14,r9 + add r8,r13 + vpaddq xmm10,xmm1,XMMWORD[((-96))+rbp] + xor r15,r10 + shrd r14,r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + vmovdqa XMMWORD[16+rsp],xmm10 + vpalignr xmm8,xmm3,xmm2,8 + shrd r13,r13,23 + mov r8,r14 + vpalignr xmm11,xmm7,xmm6,8 + mov r12,rbx + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,rax + xor r12,rcx + vpaddq xmm2,xmm2,xmm11 + shrd r13,r13,4 + xor r14,r8 + vpsrlq xmm11,xmm8,7 + and r12,rax + xor r13,rax + vpsllq xmm9,xmm8,56 + add rdx,QWORD[32+rsp] + mov r15,r8 + vpxor xmm8,xmm11,xmm10 + xor r12,rcx + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,r9 + add rdx,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,r8 + add rdx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r9 + shrd r14,r14,28 + vpsrlq xmm11,xmm1,6 + add r11,rdx + add rdx,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,r11 + add r14,rdx + vpsllq xmm10,xmm1,3 + shrd r13,r13,23 + mov rdx,r14 + vpaddq xmm2,xmm2,xmm8 + mov r12,rax + shrd r14,r14,5 + vpsrlq xmm9,xmm1,19 + xor r13,r11 + xor r12,rbx + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,rdx + vpsllq xmm10,xmm10,42 + and r12,r11 + xor r13,r11 + vpxor xmm11,xmm11,xmm9 + add rcx,QWORD[40+rsp] + mov rdi,rdx + vpsrlq xmm9,xmm9,42 + xor r12,rbx + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,r8 + add rcx,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm2,xmm2,xmm11 + xor r14,rdx + add rcx,r13 + vpaddq xmm10,xmm2,XMMWORD[((-64))+rbp] + xor r15,r8 + shrd r14,r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + vmovdqa XMMWORD[32+rsp],xmm10 + vpalignr xmm8,xmm4,xmm3,8 + shrd r13,r13,23 + mov rcx,r14 + vpalignr xmm11,xmm0,xmm7,8 + mov r12,r11 + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,r10 + xor r12,rax + vpaddq xmm3,xmm3,xmm11 + shrd r13,r13,4 + xor r14,rcx + vpsrlq xmm11,xmm8,7 + and r12,r10 + xor r13,r10 + vpsllq xmm9,xmm8,56 + add rbx,QWORD[48+rsp] + mov r15,rcx + vpxor xmm8,xmm11,xmm10 + xor r12,rax + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,rdx + add rbx,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,rcx + add rbx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rdx + shrd r14,r14,28 + vpsrlq xmm11,xmm2,6 + add r9,rbx + add rbx,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,r9 + add r14,rbx + vpsllq xmm10,xmm2,3 + shrd r13,r13,23 + mov rbx,r14 + vpaddq xmm3,xmm3,xmm8 + mov r12,r10 + shrd r14,r14,5 + vpsrlq xmm9,xmm2,19 + xor r13,r9 + xor r12,r11 + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,rbx + vpsllq xmm10,xmm10,42 + and r12,r9 + xor r13,r9 + vpxor xmm11,xmm11,xmm9 + add rax,QWORD[56+rsp] + mov rdi,rbx + vpsrlq xmm9,xmm9,42 + xor r12,r11 + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,rcx + add rax,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm3,xmm3,xmm11 + xor r14,rbx + add rax,r13 + vpaddq xmm10,xmm3,XMMWORD[((-32))+rbp] + xor r15,rcx + shrd r14,r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + vmovdqa XMMWORD[48+rsp],xmm10 + vpalignr xmm8,xmm5,xmm4,8 + shrd r13,r13,23 + mov rax,r14 + vpalignr xmm11,xmm1,xmm0,8 + mov r12,r9 + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,r8 + xor r12,r10 + vpaddq xmm4,xmm4,xmm11 + shrd r13,r13,4 + xor r14,rax + vpsrlq xmm11,xmm8,7 + and r12,r8 + xor r13,r8 + vpsllq xmm9,xmm8,56 + add r11,QWORD[64+rsp] + mov r15,rax + vpxor xmm8,xmm11,xmm10 + xor r12,r10 + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,rbx + add r11,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,rax + add r11,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rbx + shrd r14,r14,28 + vpsrlq xmm11,xmm3,6 + add rdx,r11 + add r11,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,rdx + add r14,r11 + vpsllq xmm10,xmm3,3 + shrd r13,r13,23 + mov r11,r14 + vpaddq xmm4,xmm4,xmm8 + mov r12,r8 + shrd r14,r14,5 + vpsrlq xmm9,xmm3,19 + xor r13,rdx + xor r12,r9 + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,r11 + vpsllq xmm10,xmm10,42 + and r12,rdx + xor r13,rdx + vpxor xmm11,xmm11,xmm9 + add r10,QWORD[72+rsp] + mov rdi,r11 + vpsrlq xmm9,xmm9,42 + xor r12,r9 + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,rax + add r10,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm4,xmm4,xmm11 + xor r14,r11 + add r10,r13 + vpaddq xmm10,xmm4,XMMWORD[rbp] + xor r15,rax + shrd r14,r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + vmovdqa XMMWORD[64+rsp],xmm10 + vpalignr xmm8,xmm6,xmm5,8 + shrd r13,r13,23 + mov r10,r14 + vpalignr xmm11,xmm2,xmm1,8 + mov r12,rdx + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,rcx + xor r12,r8 + vpaddq xmm5,xmm5,xmm11 + shrd r13,r13,4 + xor r14,r10 + vpsrlq xmm11,xmm8,7 + and r12,rcx + xor r13,rcx + vpsllq xmm9,xmm8,56 + add r9,QWORD[80+rsp] + mov r15,r10 + vpxor xmm8,xmm11,xmm10 + xor r12,r8 + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,r11 + add r9,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,r10 + add r9,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r11 + shrd r14,r14,28 + vpsrlq xmm11,xmm4,6 + add rbx,r9 + add r9,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,rbx + add r14,r9 + vpsllq xmm10,xmm4,3 + shrd r13,r13,23 + mov r9,r14 + vpaddq xmm5,xmm5,xmm8 + mov r12,rcx + shrd r14,r14,5 + vpsrlq xmm9,xmm4,19 + xor r13,rbx + xor r12,rdx + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,r9 + vpsllq xmm10,xmm10,42 + and r12,rbx + xor r13,rbx + vpxor xmm11,xmm11,xmm9 + add r8,QWORD[88+rsp] + mov rdi,r9 + vpsrlq xmm9,xmm9,42 + xor r12,rdx + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,r10 + add r8,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm5,xmm5,xmm11 + xor r14,r9 + add r8,r13 + vpaddq xmm10,xmm5,XMMWORD[32+rbp] + xor r15,r10 + shrd r14,r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + vmovdqa XMMWORD[80+rsp],xmm10 + vpalignr xmm8,xmm7,xmm6,8 + shrd r13,r13,23 + mov r8,r14 + vpalignr xmm11,xmm3,xmm2,8 + mov r12,rbx + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,rax + xor r12,rcx + vpaddq xmm6,xmm6,xmm11 + shrd r13,r13,4 + xor r14,r8 + vpsrlq xmm11,xmm8,7 + and r12,rax + xor r13,rax + vpsllq xmm9,xmm8,56 + add rdx,QWORD[96+rsp] + mov r15,r8 + vpxor xmm8,xmm11,xmm10 + xor r12,rcx + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,r9 + add rdx,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,r8 + add rdx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,r9 + shrd r14,r14,28 + vpsrlq xmm11,xmm5,6 + add r11,rdx + add rdx,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,r11 + add r14,rdx + vpsllq xmm10,xmm5,3 + shrd r13,r13,23 + mov rdx,r14 + vpaddq xmm6,xmm6,xmm8 + mov r12,rax + shrd r14,r14,5 + vpsrlq xmm9,xmm5,19 + xor r13,r11 + xor r12,rbx + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,rdx + vpsllq xmm10,xmm10,42 + and r12,r11 + xor r13,r11 + vpxor xmm11,xmm11,xmm9 + add rcx,QWORD[104+rsp] + mov rdi,rdx + vpsrlq xmm9,xmm9,42 + xor r12,rbx + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,r8 + add rcx,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm6,xmm6,xmm11 + xor r14,rdx + add rcx,r13 + vpaddq xmm10,xmm6,XMMWORD[64+rbp] + xor r15,r8 + shrd r14,r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + vmovdqa XMMWORD[96+rsp],xmm10 + vpalignr xmm8,xmm0,xmm7,8 + shrd r13,r13,23 + mov rcx,r14 + vpalignr xmm11,xmm4,xmm3,8 + mov r12,r11 + shrd r14,r14,5 + vpsrlq xmm10,xmm8,1 + xor r13,r10 + xor r12,rax + vpaddq xmm7,xmm7,xmm11 + shrd r13,r13,4 + xor r14,rcx + vpsrlq xmm11,xmm8,7 + and r12,r10 + xor r13,r10 + vpsllq xmm9,xmm8,56 + add rbx,QWORD[112+rsp] + mov r15,rcx + vpxor xmm8,xmm11,xmm10 + xor r12,rax + shrd r14,r14,6 + vpsrlq xmm10,xmm10,7 + xor r15,rdx + add rbx,r12 + vpxor xmm8,xmm8,xmm9 + shrd r13,r13,14 + and rdi,r15 + vpsllq xmm9,xmm9,7 + xor r14,rcx + add rbx,r13 + vpxor xmm8,xmm8,xmm10 + xor rdi,rdx + shrd r14,r14,28 + vpsrlq xmm11,xmm6,6 + add r9,rbx + add rbx,rdi + vpxor xmm8,xmm8,xmm9 + mov r13,r9 + add r14,rbx + vpsllq xmm10,xmm6,3 + shrd r13,r13,23 + mov rbx,r14 + vpaddq xmm7,xmm7,xmm8 + mov r12,r10 + shrd r14,r14,5 + vpsrlq xmm9,xmm6,19 + xor r13,r9 + xor r12,r11 + vpxor xmm11,xmm11,xmm10 + shrd r13,r13,4 + xor r14,rbx + vpsllq xmm10,xmm10,42 + and r12,r9 + xor r13,r9 + vpxor xmm11,xmm11,xmm9 + add rax,QWORD[120+rsp] + mov rdi,rbx + vpsrlq xmm9,xmm9,42 + xor r12,r11 + shrd r14,r14,6 + vpxor xmm11,xmm11,xmm10 + xor rdi,rcx + add rax,r12 + vpxor xmm11,xmm11,xmm9 + shrd r13,r13,14 + and r15,rdi + vpaddq xmm7,xmm7,xmm11 + xor r14,rbx + add rax,r13 + vpaddq xmm10,xmm7,XMMWORD[96+rbp] + xor r15,rcx + shrd r14,r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + vmovdqa XMMWORD[112+rsp],xmm10 + cmp BYTE[135+rbp],0 + jne NEAR $L$avx_00_47 + shrd r13,r13,23 + mov rax,r14 + mov r12,r9 + shrd r14,r14,5 + xor r13,r8 + xor r12,r10 + shrd r13,r13,4 + xor r14,rax + and r12,r8 + xor r13,r8 + add r11,QWORD[rsp] + mov r15,rax + xor r12,r10 + shrd r14,r14,6 + xor r15,rbx + add r11,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,rax + add r11,r13 + xor rdi,rbx + shrd r14,r14,28 + add rdx,r11 + add r11,rdi + mov r13,rdx + add r14,r11 + shrd r13,r13,23 + mov r11,r14 + mov r12,r8 + shrd r14,r14,5 + xor r13,rdx + xor r12,r9 + shrd r13,r13,4 + xor r14,r11 + and r12,rdx + xor r13,rdx + add r10,QWORD[8+rsp] + mov rdi,r11 + xor r12,r9 + shrd r14,r14,6 + xor rdi,rax + add r10,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,r11 + add r10,r13 + xor r15,rax + shrd r14,r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + shrd r13,r13,23 + mov r10,r14 + mov r12,rdx + shrd r14,r14,5 + xor r13,rcx + xor r12,r8 + shrd r13,r13,4 + xor r14,r10 + and r12,rcx + xor r13,rcx + add r9,QWORD[16+rsp] + mov r15,r10 + xor r12,r8 + shrd r14,r14,6 + xor r15,r11 + add r9,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,r10 + add r9,r13 + xor rdi,r11 + shrd r14,r14,28 + add rbx,r9 + add r9,rdi + mov r13,rbx + add r14,r9 + shrd r13,r13,23 + mov r9,r14 + mov r12,rcx + shrd r14,r14,5 + xor r13,rbx + xor r12,rdx + shrd r13,r13,4 + xor r14,r9 + and r12,rbx + xor r13,rbx + add r8,QWORD[24+rsp] + mov rdi,r9 + xor r12,rdx + shrd r14,r14,6 + xor rdi,r10 + add r8,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,r9 + add r8,r13 + xor r15,r10 + shrd r14,r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + shrd r13,r13,23 + mov r8,r14 + mov r12,rbx + shrd r14,r14,5 + xor r13,rax + xor r12,rcx + shrd r13,r13,4 + xor r14,r8 + and r12,rax + xor r13,rax + add rdx,QWORD[32+rsp] + mov r15,r8 + xor r12,rcx + shrd r14,r14,6 + xor r15,r9 + add rdx,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,r8 + add rdx,r13 + xor rdi,r9 + shrd r14,r14,28 + add r11,rdx + add rdx,rdi + mov r13,r11 + add r14,rdx + shrd r13,r13,23 + mov rdx,r14 + mov r12,rax + shrd r14,r14,5 + xor r13,r11 + xor r12,rbx + shrd r13,r13,4 + xor r14,rdx + and r12,r11 + xor r13,r11 + add rcx,QWORD[40+rsp] + mov rdi,rdx + xor r12,rbx + shrd r14,r14,6 + xor rdi,r8 + add rcx,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,rdx + add rcx,r13 + xor r15,r8 + shrd r14,r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + shrd r13,r13,23 + mov rcx,r14 + mov r12,r11 + shrd r14,r14,5 + xor r13,r10 + xor r12,rax + shrd r13,r13,4 + xor r14,rcx + and r12,r10 + xor r13,r10 + add rbx,QWORD[48+rsp] + mov r15,rcx + xor r12,rax + shrd r14,r14,6 + xor r15,rdx + add rbx,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,rcx + add rbx,r13 + xor rdi,rdx + shrd r14,r14,28 + add r9,rbx + add rbx,rdi + mov r13,r9 + add r14,rbx + shrd r13,r13,23 + mov rbx,r14 + mov r12,r10 + shrd r14,r14,5 + xor r13,r9 + xor r12,r11 + shrd r13,r13,4 + xor r14,rbx + and r12,r9 + xor r13,r9 + add rax,QWORD[56+rsp] + mov rdi,rbx + xor r12,r11 + shrd r14,r14,6 + xor rdi,rcx + add rax,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,rbx + add rax,r13 + xor r15,rcx + shrd r14,r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + shrd r13,r13,23 + mov rax,r14 + mov r12,r9 + shrd r14,r14,5 + xor r13,r8 + xor r12,r10 + shrd r13,r13,4 + xor r14,rax + and r12,r8 + xor r13,r8 + add r11,QWORD[64+rsp] + mov r15,rax + xor r12,r10 + shrd r14,r14,6 + xor r15,rbx + add r11,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,rax + add r11,r13 + xor rdi,rbx + shrd r14,r14,28 + add rdx,r11 + add r11,rdi + mov r13,rdx + add r14,r11 + shrd r13,r13,23 + mov r11,r14 + mov r12,r8 + shrd r14,r14,5 + xor r13,rdx + xor r12,r9 + shrd r13,r13,4 + xor r14,r11 + and r12,rdx + xor r13,rdx + add r10,QWORD[72+rsp] + mov rdi,r11 + xor r12,r9 + shrd r14,r14,6 + xor rdi,rax + add r10,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,r11 + add r10,r13 + xor r15,rax + shrd r14,r14,28 + add rcx,r10 + add r10,r15 + mov r13,rcx + add r14,r10 + shrd r13,r13,23 + mov r10,r14 + mov r12,rdx + shrd r14,r14,5 + xor r13,rcx + xor r12,r8 + shrd r13,r13,4 + xor r14,r10 + and r12,rcx + xor r13,rcx + add r9,QWORD[80+rsp] + mov r15,r10 + xor r12,r8 + shrd r14,r14,6 + xor r15,r11 + add r9,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,r10 + add r9,r13 + xor rdi,r11 + shrd r14,r14,28 + add rbx,r9 + add r9,rdi + mov r13,rbx + add r14,r9 + shrd r13,r13,23 + mov r9,r14 + mov r12,rcx + shrd r14,r14,5 + xor r13,rbx + xor r12,rdx + shrd r13,r13,4 + xor r14,r9 + and r12,rbx + xor r13,rbx + add r8,QWORD[88+rsp] + mov rdi,r9 + xor r12,rdx + shrd r14,r14,6 + xor rdi,r10 + add r8,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,r9 + add r8,r13 + xor r15,r10 + shrd r14,r14,28 + add rax,r8 + add r8,r15 + mov r13,rax + add r14,r8 + shrd r13,r13,23 + mov r8,r14 + mov r12,rbx + shrd r14,r14,5 + xor r13,rax + xor r12,rcx + shrd r13,r13,4 + xor r14,r8 + and r12,rax + xor r13,rax + add rdx,QWORD[96+rsp] + mov r15,r8 + xor r12,rcx + shrd r14,r14,6 + xor r15,r9 + add rdx,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,r8 + add rdx,r13 + xor rdi,r9 + shrd r14,r14,28 + add r11,rdx + add rdx,rdi + mov r13,r11 + add r14,rdx + shrd r13,r13,23 + mov rdx,r14 + mov r12,rax + shrd r14,r14,5 + xor r13,r11 + xor r12,rbx + shrd r13,r13,4 + xor r14,rdx + and r12,r11 + xor r13,r11 + add rcx,QWORD[104+rsp] + mov rdi,rdx + xor r12,rbx + shrd r14,r14,6 + xor rdi,r8 + add rcx,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,rdx + add rcx,r13 + xor r15,r8 + shrd r14,r14,28 + add r10,rcx + add rcx,r15 + mov r13,r10 + add r14,rcx + shrd r13,r13,23 + mov rcx,r14 + mov r12,r11 + shrd r14,r14,5 + xor r13,r10 + xor r12,rax + shrd r13,r13,4 + xor r14,rcx + and r12,r10 + xor r13,r10 + add rbx,QWORD[112+rsp] + mov r15,rcx + xor r12,rax + shrd r14,r14,6 + xor r15,rdx + add rbx,r12 + shrd r13,r13,14 + and rdi,r15 + xor r14,rcx + add rbx,r13 + xor rdi,rdx + shrd r14,r14,28 + add r9,rbx + add rbx,rdi + mov r13,r9 + add r14,rbx + shrd r13,r13,23 + mov rbx,r14 + mov r12,r10 + shrd r14,r14,5 + xor r13,r9 + xor r12,r11 + shrd r13,r13,4 + xor r14,rbx + and r12,r9 + xor r13,r9 + add rax,QWORD[120+rsp] + mov rdi,rbx + xor r12,r11 + shrd r14,r14,6 + xor rdi,rcx + add rax,r12 + shrd r13,r13,14 + and r15,rdi + xor r14,rbx + add rax,r13 + xor r15,rcx + shrd r14,r14,28 + add r8,rax + add rax,r15 + mov r13,r8 + add r14,rax + mov rdi,QWORD[((128+0))+rsp] + mov rax,r14 + + add rax,QWORD[rdi] + lea rsi,[128+rsi] + add rbx,QWORD[8+rdi] + add rcx,QWORD[16+rdi] + add rdx,QWORD[24+rdi] + add r8,QWORD[32+rdi] + add r9,QWORD[40+rdi] + add r10,QWORD[48+rdi] + add r11,QWORD[56+rdi] + + cmp rsi,QWORD[((128+16))+rsp] + + mov QWORD[rdi],rax + mov QWORD[8+rdi],rbx + mov QWORD[16+rdi],rcx + mov QWORD[24+rdi],rdx + mov QWORD[32+rdi],r8 + mov QWORD[40+rdi],r9 + mov QWORD[48+rdi],r10 + mov QWORD[56+rdi],r11 + jb NEAR $L$loop_avx + + mov rsi,QWORD[152+rsp] + + vzeroupper + movaps xmm6,XMMWORD[((128+32))+rsp] + movaps xmm7,XMMWORD[((128+48))+rsp] + movaps xmm8,XMMWORD[((128+64))+rsp] + movaps xmm9,XMMWORD[((128+80))+rsp] + movaps xmm10,XMMWORD[((128+96))+rsp] + movaps xmm11,XMMWORD[((128+112))+rsp] + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue_avx: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha512_block_data_order_avx: + +ALIGN 64 +sha512_block_data_order_avx2: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_sha512_block_data_order_avx2: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$avx2_shortcut: + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,1408 + shl rdx,4 + and rsp,-256*8 + lea rdx,[rdx*8+rsi] + add rsp,1152 + mov QWORD[((128+0))+rsp],rdi + mov QWORD[((128+8))+rsp],rsi + mov QWORD[((128+16))+rsp],rdx + mov QWORD[152+rsp],rax + + movaps XMMWORD[(128+32)+rsp],xmm6 + movaps XMMWORD[(128+48)+rsp],xmm7 + movaps XMMWORD[(128+64)+rsp],xmm8 + movaps XMMWORD[(128+80)+rsp],xmm9 + movaps XMMWORD[(128+96)+rsp],xmm10 + movaps XMMWORD[(128+112)+rsp],xmm11 +$L$prologue_avx2: + + vzeroupper + sub rsi,-16*8 + mov rax,QWORD[rdi] + mov r12,rsi + mov rbx,QWORD[8+rdi] + cmp rsi,rdx + mov rcx,QWORD[16+rdi] + cmove r12,rsp + mov rdx,QWORD[24+rdi] + mov r8,QWORD[32+rdi] + mov r9,QWORD[40+rdi] + mov r10,QWORD[48+rdi] + mov r11,QWORD[56+rdi] + jmp NEAR $L$oop_avx2 +ALIGN 16 +$L$oop_avx2: + vmovdqu xmm0,XMMWORD[((-128))+rsi] + vmovdqu xmm1,XMMWORD[((-128+16))+rsi] + vmovdqu xmm2,XMMWORD[((-128+32))+rsi] + lea rbp,[((K512+128))] + vmovdqu xmm3,XMMWORD[((-128+48))+rsi] + vmovdqu xmm4,XMMWORD[((-128+64))+rsi] + vmovdqu xmm5,XMMWORD[((-128+80))+rsi] + vmovdqu xmm6,XMMWORD[((-128+96))+rsi] + vmovdqu xmm7,XMMWORD[((-128+112))+rsi] + + vmovdqa ymm10,YMMWORD[1152+rbp] + vinserti128 ymm0,ymm0,XMMWORD[r12],1 + vinserti128 ymm1,ymm1,XMMWORD[16+r12],1 + vpshufb ymm0,ymm0,ymm10 + vinserti128 ymm2,ymm2,XMMWORD[32+r12],1 + vpshufb ymm1,ymm1,ymm10 + vinserti128 ymm3,ymm3,XMMWORD[48+r12],1 + vpshufb ymm2,ymm2,ymm10 + vinserti128 ymm4,ymm4,XMMWORD[64+r12],1 + vpshufb ymm3,ymm3,ymm10 + vinserti128 ymm5,ymm5,XMMWORD[80+r12],1 + vpshufb ymm4,ymm4,ymm10 + vinserti128 ymm6,ymm6,XMMWORD[96+r12],1 + vpshufb ymm5,ymm5,ymm10 + vinserti128 ymm7,ymm7,XMMWORD[112+r12],1 + + vpaddq ymm8,ymm0,YMMWORD[((-128))+rbp] + vpshufb ymm6,ymm6,ymm10 + vpaddq ymm9,ymm1,YMMWORD[((-96))+rbp] + vpshufb ymm7,ymm7,ymm10 + vpaddq ymm10,ymm2,YMMWORD[((-64))+rbp] + vpaddq ymm11,ymm3,YMMWORD[((-32))+rbp] + vmovdqa YMMWORD[rsp],ymm8 + vpaddq ymm8,ymm4,YMMWORD[rbp] + vmovdqa YMMWORD[32+rsp],ymm9 + vpaddq ymm9,ymm5,YMMWORD[32+rbp] + vmovdqa YMMWORD[64+rsp],ymm10 + vpaddq ymm10,ymm6,YMMWORD[64+rbp] + vmovdqa YMMWORD[96+rsp],ymm11 + lea rsp,[((-128))+rsp] + vpaddq ymm11,ymm7,YMMWORD[96+rbp] + vmovdqa YMMWORD[rsp],ymm8 + xor r14,r14 + vmovdqa YMMWORD[32+rsp],ymm9 + mov rdi,rbx + vmovdqa YMMWORD[64+rsp],ymm10 + xor rdi,rcx + vmovdqa YMMWORD[96+rsp],ymm11 + mov r12,r9 + add rbp,16*2*8 + jmp NEAR $L$avx2_00_47 + +ALIGN 16 +$L$avx2_00_47: + lea rsp,[((-128))+rsp] + vpalignr ymm8,ymm1,ymm0,8 + add r11,QWORD[((0+256))+rsp] + and r12,r8 + rorx r13,r8,41 + vpalignr ymm11,ymm5,ymm4,8 + rorx r15,r8,18 + lea rax,[r14*1+rax] + lea r11,[r12*1+r11] + vpsrlq ymm10,ymm8,1 + andn r12,r8,r10 + xor r13,r15 + rorx r14,r8,14 + vpaddq ymm0,ymm0,ymm11 + vpsrlq ymm11,ymm8,7 + lea r11,[r12*1+r11] + xor r13,r14 + mov r15,rax + vpsllq ymm9,ymm8,56 + vpxor ymm8,ymm11,ymm10 + rorx r12,rax,39 + lea r11,[r13*1+r11] + xor r15,rbx + vpsrlq ymm10,ymm10,7 + vpxor ymm8,ymm8,ymm9 + rorx r14,rax,34 + rorx r13,rax,28 + lea rdx,[r11*1+rdx] + vpsllq ymm9,ymm9,7 + vpxor ymm8,ymm8,ymm10 + and rdi,r15 + xor r14,r12 + xor rdi,rbx + vpsrlq ymm11,ymm7,6 + vpxor ymm8,ymm8,ymm9 + xor r14,r13 + lea r11,[rdi*1+r11] + mov r12,r8 + vpsllq ymm10,ymm7,3 + vpaddq ymm0,ymm0,ymm8 + add r10,QWORD[((8+256))+rsp] + and r12,rdx + rorx r13,rdx,41 + vpsrlq ymm9,ymm7,19 + vpxor ymm11,ymm11,ymm10 + rorx rdi,rdx,18 + lea r11,[r14*1+r11] + lea r10,[r12*1+r10] + vpsllq ymm10,ymm10,42 + vpxor ymm11,ymm11,ymm9 + andn r12,rdx,r9 + xor r13,rdi + rorx r14,rdx,14 + vpsrlq ymm9,ymm9,42 + vpxor ymm11,ymm11,ymm10 + lea r10,[r12*1+r10] + xor r13,r14 + mov rdi,r11 + vpxor ymm11,ymm11,ymm9 + rorx r12,r11,39 + lea r10,[r13*1+r10] + xor rdi,rax + vpaddq ymm0,ymm0,ymm11 + rorx r14,r11,34 + rorx r13,r11,28 + lea rcx,[r10*1+rcx] + vpaddq ymm10,ymm0,YMMWORD[((-128))+rbp] + and r15,rdi + xor r14,r12 + xor r15,rax + xor r14,r13 + lea r10,[r15*1+r10] + mov r12,rdx + vmovdqa YMMWORD[rsp],ymm10 + vpalignr ymm8,ymm2,ymm1,8 + add r9,QWORD[((32+256))+rsp] + and r12,rcx + rorx r13,rcx,41 + vpalignr ymm11,ymm6,ymm5,8 + rorx r15,rcx,18 + lea r10,[r14*1+r10] + lea r9,[r12*1+r9] + vpsrlq ymm10,ymm8,1 + andn r12,rcx,r8 + xor r13,r15 + rorx r14,rcx,14 + vpaddq ymm1,ymm1,ymm11 + vpsrlq ymm11,ymm8,7 + lea r9,[r12*1+r9] + xor r13,r14 + mov r15,r10 + vpsllq ymm9,ymm8,56 + vpxor ymm8,ymm11,ymm10 + rorx r12,r10,39 + lea r9,[r13*1+r9] + xor r15,r11 + vpsrlq ymm10,ymm10,7 + vpxor ymm8,ymm8,ymm9 + rorx r14,r10,34 + rorx r13,r10,28 + lea rbx,[r9*1+rbx] + vpsllq ymm9,ymm9,7 + vpxor ymm8,ymm8,ymm10 + and rdi,r15 + xor r14,r12 + xor rdi,r11 + vpsrlq ymm11,ymm0,6 + vpxor ymm8,ymm8,ymm9 + xor r14,r13 + lea r9,[rdi*1+r9] + mov r12,rcx + vpsllq ymm10,ymm0,3 + vpaddq ymm1,ymm1,ymm8 + add r8,QWORD[((40+256))+rsp] + and r12,rbx + rorx r13,rbx,41 + vpsrlq ymm9,ymm0,19 + vpxor ymm11,ymm11,ymm10 + rorx rdi,rbx,18 + lea r9,[r14*1+r9] + lea r8,[r12*1+r8] + vpsllq ymm10,ymm10,42 + vpxor ymm11,ymm11,ymm9 + andn r12,rbx,rdx + xor r13,rdi + rorx r14,rbx,14 + vpsrlq ymm9,ymm9,42 + vpxor ymm11,ymm11,ymm10 + lea r8,[r12*1+r8] + xor r13,r14 + mov rdi,r9 + vpxor ymm11,ymm11,ymm9 + rorx r12,r9,39 + lea r8,[r13*1+r8] + xor rdi,r10 + vpaddq ymm1,ymm1,ymm11 + rorx r14,r9,34 + rorx r13,r9,28 + lea rax,[r8*1+rax] + vpaddq ymm10,ymm1,YMMWORD[((-96))+rbp] + and r15,rdi + xor r14,r12 + xor r15,r10 + xor r14,r13 + lea r8,[r15*1+r8] + mov r12,rbx + vmovdqa YMMWORD[32+rsp],ymm10 + vpalignr ymm8,ymm3,ymm2,8 + add rdx,QWORD[((64+256))+rsp] + and r12,rax + rorx r13,rax,41 + vpalignr ymm11,ymm7,ymm6,8 + rorx r15,rax,18 + lea r8,[r14*1+r8] + lea rdx,[r12*1+rdx] + vpsrlq ymm10,ymm8,1 + andn r12,rax,rcx + xor r13,r15 + rorx r14,rax,14 + vpaddq ymm2,ymm2,ymm11 + vpsrlq ymm11,ymm8,7 + lea rdx,[r12*1+rdx] + xor r13,r14 + mov r15,r8 + vpsllq ymm9,ymm8,56 + vpxor ymm8,ymm11,ymm10 + rorx r12,r8,39 + lea rdx,[r13*1+rdx] + xor r15,r9 + vpsrlq ymm10,ymm10,7 + vpxor ymm8,ymm8,ymm9 + rorx r14,r8,34 + rorx r13,r8,28 + lea r11,[rdx*1+r11] + vpsllq ymm9,ymm9,7 + vpxor ymm8,ymm8,ymm10 + and rdi,r15 + xor r14,r12 + xor rdi,r9 + vpsrlq ymm11,ymm1,6 + vpxor ymm8,ymm8,ymm9 + xor r14,r13 + lea rdx,[rdi*1+rdx] + mov r12,rax + vpsllq ymm10,ymm1,3 + vpaddq ymm2,ymm2,ymm8 + add rcx,QWORD[((72+256))+rsp] + and r12,r11 + rorx r13,r11,41 + vpsrlq ymm9,ymm1,19 + vpxor ymm11,ymm11,ymm10 + rorx rdi,r11,18 + lea rdx,[r14*1+rdx] + lea rcx,[r12*1+rcx] + vpsllq ymm10,ymm10,42 + vpxor ymm11,ymm11,ymm9 + andn r12,r11,rbx + xor r13,rdi + rorx r14,r11,14 + vpsrlq ymm9,ymm9,42 + vpxor ymm11,ymm11,ymm10 + lea rcx,[r12*1+rcx] + xor r13,r14 + mov rdi,rdx + vpxor ymm11,ymm11,ymm9 + rorx r12,rdx,39 + lea rcx,[r13*1+rcx] + xor rdi,r8 + vpaddq ymm2,ymm2,ymm11 + rorx r14,rdx,34 + rorx r13,rdx,28 + lea r10,[rcx*1+r10] + vpaddq ymm10,ymm2,YMMWORD[((-64))+rbp] + and r15,rdi + xor r14,r12 + xor r15,r8 + xor r14,r13 + lea rcx,[r15*1+rcx] + mov r12,r11 + vmovdqa YMMWORD[64+rsp],ymm10 + vpalignr ymm8,ymm4,ymm3,8 + add rbx,QWORD[((96+256))+rsp] + and r12,r10 + rorx r13,r10,41 + vpalignr ymm11,ymm0,ymm7,8 + rorx r15,r10,18 + lea rcx,[r14*1+rcx] + lea rbx,[r12*1+rbx] + vpsrlq ymm10,ymm8,1 + andn r12,r10,rax + xor r13,r15 + rorx r14,r10,14 + vpaddq ymm3,ymm3,ymm11 + vpsrlq ymm11,ymm8,7 + lea rbx,[r12*1+rbx] + xor r13,r14 + mov r15,rcx + vpsllq ymm9,ymm8,56 + vpxor ymm8,ymm11,ymm10 + rorx r12,rcx,39 + lea rbx,[r13*1+rbx] + xor r15,rdx + vpsrlq ymm10,ymm10,7 + vpxor ymm8,ymm8,ymm9 + rorx r14,rcx,34 + rorx r13,rcx,28 + lea r9,[rbx*1+r9] + vpsllq ymm9,ymm9,7 + vpxor ymm8,ymm8,ymm10 + and rdi,r15 + xor r14,r12 + xor rdi,rdx + vpsrlq ymm11,ymm2,6 + vpxor ymm8,ymm8,ymm9 + xor r14,r13 + lea rbx,[rdi*1+rbx] + mov r12,r10 + vpsllq ymm10,ymm2,3 + vpaddq ymm3,ymm3,ymm8 + add rax,QWORD[((104+256))+rsp] + and r12,r9 + rorx r13,r9,41 + vpsrlq ymm9,ymm2,19 + vpxor ymm11,ymm11,ymm10 + rorx rdi,r9,18 + lea rbx,[r14*1+rbx] + lea rax,[r12*1+rax] + vpsllq ymm10,ymm10,42 + vpxor ymm11,ymm11,ymm9 + andn r12,r9,r11 + xor r13,rdi + rorx r14,r9,14 + vpsrlq ymm9,ymm9,42 + vpxor ymm11,ymm11,ymm10 + lea rax,[r12*1+rax] + xor r13,r14 + mov rdi,rbx + vpxor ymm11,ymm11,ymm9 + rorx r12,rbx,39 + lea rax,[r13*1+rax] + xor rdi,rcx + vpaddq ymm3,ymm3,ymm11 + rorx r14,rbx,34 + rorx r13,rbx,28 + lea r8,[rax*1+r8] + vpaddq ymm10,ymm3,YMMWORD[((-32))+rbp] + and r15,rdi + xor r14,r12 + xor r15,rcx + xor r14,r13 + lea rax,[r15*1+rax] + mov r12,r9 + vmovdqa YMMWORD[96+rsp],ymm10 + lea rsp,[((-128))+rsp] + vpalignr ymm8,ymm5,ymm4,8 + add r11,QWORD[((0+256))+rsp] + and r12,r8 + rorx r13,r8,41 + vpalignr ymm11,ymm1,ymm0,8 + rorx r15,r8,18 + lea rax,[r14*1+rax] + lea r11,[r12*1+r11] + vpsrlq ymm10,ymm8,1 + andn r12,r8,r10 + xor r13,r15 + rorx r14,r8,14 + vpaddq ymm4,ymm4,ymm11 + vpsrlq ymm11,ymm8,7 + lea r11,[r12*1+r11] + xor r13,r14 + mov r15,rax + vpsllq ymm9,ymm8,56 + vpxor ymm8,ymm11,ymm10 + rorx r12,rax,39 + lea r11,[r13*1+r11] + xor r15,rbx + vpsrlq ymm10,ymm10,7 + vpxor ymm8,ymm8,ymm9 + rorx r14,rax,34 + rorx r13,rax,28 + lea rdx,[r11*1+rdx] + vpsllq ymm9,ymm9,7 + vpxor ymm8,ymm8,ymm10 + and rdi,r15 + xor r14,r12 + xor rdi,rbx + vpsrlq ymm11,ymm3,6 + vpxor ymm8,ymm8,ymm9 + xor r14,r13 + lea r11,[rdi*1+r11] + mov r12,r8 + vpsllq ymm10,ymm3,3 + vpaddq ymm4,ymm4,ymm8 + add r10,QWORD[((8+256))+rsp] + and r12,rdx + rorx r13,rdx,41 + vpsrlq ymm9,ymm3,19 + vpxor ymm11,ymm11,ymm10 + rorx rdi,rdx,18 + lea r11,[r14*1+r11] + lea r10,[r12*1+r10] + vpsllq ymm10,ymm10,42 + vpxor ymm11,ymm11,ymm9 + andn r12,rdx,r9 + xor r13,rdi + rorx r14,rdx,14 + vpsrlq ymm9,ymm9,42 + vpxor ymm11,ymm11,ymm10 + lea r10,[r12*1+r10] + xor r13,r14 + mov rdi,r11 + vpxor ymm11,ymm11,ymm9 + rorx r12,r11,39 + lea r10,[r13*1+r10] + xor rdi,rax + vpaddq ymm4,ymm4,ymm11 + rorx r14,r11,34 + rorx r13,r11,28 + lea rcx,[r10*1+rcx] + vpaddq ymm10,ymm4,YMMWORD[rbp] + and r15,rdi + xor r14,r12 + xor r15,rax + xor r14,r13 + lea r10,[r15*1+r10] + mov r12,rdx + vmovdqa YMMWORD[rsp],ymm10 + vpalignr ymm8,ymm6,ymm5,8 + add r9,QWORD[((32+256))+rsp] + and r12,rcx + rorx r13,rcx,41 + vpalignr ymm11,ymm2,ymm1,8 + rorx r15,rcx,18 + lea r10,[r14*1+r10] + lea r9,[r12*1+r9] + vpsrlq ymm10,ymm8,1 + andn r12,rcx,r8 + xor r13,r15 + rorx r14,rcx,14 + vpaddq ymm5,ymm5,ymm11 + vpsrlq ymm11,ymm8,7 + lea r9,[r12*1+r9] + xor r13,r14 + mov r15,r10 + vpsllq ymm9,ymm8,56 + vpxor ymm8,ymm11,ymm10 + rorx r12,r10,39 + lea r9,[r13*1+r9] + xor r15,r11 + vpsrlq ymm10,ymm10,7 + vpxor ymm8,ymm8,ymm9 + rorx r14,r10,34 + rorx r13,r10,28 + lea rbx,[r9*1+rbx] + vpsllq ymm9,ymm9,7 + vpxor ymm8,ymm8,ymm10 + and rdi,r15 + xor r14,r12 + xor rdi,r11 + vpsrlq ymm11,ymm4,6 + vpxor ymm8,ymm8,ymm9 + xor r14,r13 + lea r9,[rdi*1+r9] + mov r12,rcx + vpsllq ymm10,ymm4,3 + vpaddq ymm5,ymm5,ymm8 + add r8,QWORD[((40+256))+rsp] + and r12,rbx + rorx r13,rbx,41 + vpsrlq ymm9,ymm4,19 + vpxor ymm11,ymm11,ymm10 + rorx rdi,rbx,18 + lea r9,[r14*1+r9] + lea r8,[r12*1+r8] + vpsllq ymm10,ymm10,42 + vpxor ymm11,ymm11,ymm9 + andn r12,rbx,rdx + xor r13,rdi + rorx r14,rbx,14 + vpsrlq ymm9,ymm9,42 + vpxor ymm11,ymm11,ymm10 + lea r8,[r12*1+r8] + xor r13,r14 + mov rdi,r9 + vpxor ymm11,ymm11,ymm9 + rorx r12,r9,39 + lea r8,[r13*1+r8] + xor rdi,r10 + vpaddq ymm5,ymm5,ymm11 + rorx r14,r9,34 + rorx r13,r9,28 + lea rax,[r8*1+rax] + vpaddq ymm10,ymm5,YMMWORD[32+rbp] + and r15,rdi + xor r14,r12 + xor r15,r10 + xor r14,r13 + lea r8,[r15*1+r8] + mov r12,rbx + vmovdqa YMMWORD[32+rsp],ymm10 + vpalignr ymm8,ymm7,ymm6,8 + add rdx,QWORD[((64+256))+rsp] + and r12,rax + rorx r13,rax,41 + vpalignr ymm11,ymm3,ymm2,8 + rorx r15,rax,18 + lea r8,[r14*1+r8] + lea rdx,[r12*1+rdx] + vpsrlq ymm10,ymm8,1 + andn r12,rax,rcx + xor r13,r15 + rorx r14,rax,14 + vpaddq ymm6,ymm6,ymm11 + vpsrlq ymm11,ymm8,7 + lea rdx,[r12*1+rdx] + xor r13,r14 + mov r15,r8 + vpsllq ymm9,ymm8,56 + vpxor ymm8,ymm11,ymm10 + rorx r12,r8,39 + lea rdx,[r13*1+rdx] + xor r15,r9 + vpsrlq ymm10,ymm10,7 + vpxor ymm8,ymm8,ymm9 + rorx r14,r8,34 + rorx r13,r8,28 + lea r11,[rdx*1+r11] + vpsllq ymm9,ymm9,7 + vpxor ymm8,ymm8,ymm10 + and rdi,r15 + xor r14,r12 + xor rdi,r9 + vpsrlq ymm11,ymm5,6 + vpxor ymm8,ymm8,ymm9 + xor r14,r13 + lea rdx,[rdi*1+rdx] + mov r12,rax + vpsllq ymm10,ymm5,3 + vpaddq ymm6,ymm6,ymm8 + add rcx,QWORD[((72+256))+rsp] + and r12,r11 + rorx r13,r11,41 + vpsrlq ymm9,ymm5,19 + vpxor ymm11,ymm11,ymm10 + rorx rdi,r11,18 + lea rdx,[r14*1+rdx] + lea rcx,[r12*1+rcx] + vpsllq ymm10,ymm10,42 + vpxor ymm11,ymm11,ymm9 + andn r12,r11,rbx + xor r13,rdi + rorx r14,r11,14 + vpsrlq ymm9,ymm9,42 + vpxor ymm11,ymm11,ymm10 + lea rcx,[r12*1+rcx] + xor r13,r14 + mov rdi,rdx + vpxor ymm11,ymm11,ymm9 + rorx r12,rdx,39 + lea rcx,[r13*1+rcx] + xor rdi,r8 + vpaddq ymm6,ymm6,ymm11 + rorx r14,rdx,34 + rorx r13,rdx,28 + lea r10,[rcx*1+r10] + vpaddq ymm10,ymm6,YMMWORD[64+rbp] + and r15,rdi + xor r14,r12 + xor r15,r8 + xor r14,r13 + lea rcx,[r15*1+rcx] + mov r12,r11 + vmovdqa YMMWORD[64+rsp],ymm10 + vpalignr ymm8,ymm0,ymm7,8 + add rbx,QWORD[((96+256))+rsp] + and r12,r10 + rorx r13,r10,41 + vpalignr ymm11,ymm4,ymm3,8 + rorx r15,r10,18 + lea rcx,[r14*1+rcx] + lea rbx,[r12*1+rbx] + vpsrlq ymm10,ymm8,1 + andn r12,r10,rax + xor r13,r15 + rorx r14,r10,14 + vpaddq ymm7,ymm7,ymm11 + vpsrlq ymm11,ymm8,7 + lea rbx,[r12*1+rbx] + xor r13,r14 + mov r15,rcx + vpsllq ymm9,ymm8,56 + vpxor ymm8,ymm11,ymm10 + rorx r12,rcx,39 + lea rbx,[r13*1+rbx] + xor r15,rdx + vpsrlq ymm10,ymm10,7 + vpxor ymm8,ymm8,ymm9 + rorx r14,rcx,34 + rorx r13,rcx,28 + lea r9,[rbx*1+r9] + vpsllq ymm9,ymm9,7 + vpxor ymm8,ymm8,ymm10 + and rdi,r15 + xor r14,r12 + xor rdi,rdx + vpsrlq ymm11,ymm6,6 + vpxor ymm8,ymm8,ymm9 + xor r14,r13 + lea rbx,[rdi*1+rbx] + mov r12,r10 + vpsllq ymm10,ymm6,3 + vpaddq ymm7,ymm7,ymm8 + add rax,QWORD[((104+256))+rsp] + and r12,r9 + rorx r13,r9,41 + vpsrlq ymm9,ymm6,19 + vpxor ymm11,ymm11,ymm10 + rorx rdi,r9,18 + lea rbx,[r14*1+rbx] + lea rax,[r12*1+rax] + vpsllq ymm10,ymm10,42 + vpxor ymm11,ymm11,ymm9 + andn r12,r9,r11 + xor r13,rdi + rorx r14,r9,14 + vpsrlq ymm9,ymm9,42 + vpxor ymm11,ymm11,ymm10 + lea rax,[r12*1+rax] + xor r13,r14 + mov rdi,rbx + vpxor ymm11,ymm11,ymm9 + rorx r12,rbx,39 + lea rax,[r13*1+rax] + xor rdi,rcx + vpaddq ymm7,ymm7,ymm11 + rorx r14,rbx,34 + rorx r13,rbx,28 + lea r8,[rax*1+r8] + vpaddq ymm10,ymm7,YMMWORD[96+rbp] + and r15,rdi + xor r14,r12 + xor r15,rcx + xor r14,r13 + lea rax,[r15*1+rax] + mov r12,r9 + vmovdqa YMMWORD[96+rsp],ymm10 + lea rbp,[256+rbp] + cmp BYTE[((-121))+rbp],0 + jne NEAR $L$avx2_00_47 + add r11,QWORD[((0+128))+rsp] + and r12,r8 + rorx r13,r8,41 + rorx r15,r8,18 + lea rax,[r14*1+rax] + lea r11,[r12*1+r11] + andn r12,r8,r10 + xor r13,r15 + rorx r14,r8,14 + lea r11,[r12*1+r11] + xor r13,r14 + mov r15,rax + rorx r12,rax,39 + lea r11,[r13*1+r11] + xor r15,rbx + rorx r14,rax,34 + rorx r13,rax,28 + lea rdx,[r11*1+rdx] + and rdi,r15 + xor r14,r12 + xor rdi,rbx + xor r14,r13 + lea r11,[rdi*1+r11] + mov r12,r8 + add r10,QWORD[((8+128))+rsp] + and r12,rdx + rorx r13,rdx,41 + rorx rdi,rdx,18 + lea r11,[r14*1+r11] + lea r10,[r12*1+r10] + andn r12,rdx,r9 + xor r13,rdi + rorx r14,rdx,14 + lea r10,[r12*1+r10] + xor r13,r14 + mov rdi,r11 + rorx r12,r11,39 + lea r10,[r13*1+r10] + xor rdi,rax + rorx r14,r11,34 + rorx r13,r11,28 + lea rcx,[r10*1+rcx] + and r15,rdi + xor r14,r12 + xor r15,rax + xor r14,r13 + lea r10,[r15*1+r10] + mov r12,rdx + add r9,QWORD[((32+128))+rsp] + and r12,rcx + rorx r13,rcx,41 + rorx r15,rcx,18 + lea r10,[r14*1+r10] + lea r9,[r12*1+r9] + andn r12,rcx,r8 + xor r13,r15 + rorx r14,rcx,14 + lea r9,[r12*1+r9] + xor r13,r14 + mov r15,r10 + rorx r12,r10,39 + lea r9,[r13*1+r9] + xor r15,r11 + rorx r14,r10,34 + rorx r13,r10,28 + lea rbx,[r9*1+rbx] + and rdi,r15 + xor r14,r12 + xor rdi,r11 + xor r14,r13 + lea r9,[rdi*1+r9] + mov r12,rcx + add r8,QWORD[((40+128))+rsp] + and r12,rbx + rorx r13,rbx,41 + rorx rdi,rbx,18 + lea r9,[r14*1+r9] + lea r8,[r12*1+r8] + andn r12,rbx,rdx + xor r13,rdi + rorx r14,rbx,14 + lea r8,[r12*1+r8] + xor r13,r14 + mov rdi,r9 + rorx r12,r9,39 + lea r8,[r13*1+r8] + xor rdi,r10 + rorx r14,r9,34 + rorx r13,r9,28 + lea rax,[r8*1+rax] + and r15,rdi + xor r14,r12 + xor r15,r10 + xor r14,r13 + lea r8,[r15*1+r8] + mov r12,rbx + add rdx,QWORD[((64+128))+rsp] + and r12,rax + rorx r13,rax,41 + rorx r15,rax,18 + lea r8,[r14*1+r8] + lea rdx,[r12*1+rdx] + andn r12,rax,rcx + xor r13,r15 + rorx r14,rax,14 + lea rdx,[r12*1+rdx] + xor r13,r14 + mov r15,r8 + rorx r12,r8,39 + lea rdx,[r13*1+rdx] + xor r15,r9 + rorx r14,r8,34 + rorx r13,r8,28 + lea r11,[rdx*1+r11] + and rdi,r15 + xor r14,r12 + xor rdi,r9 + xor r14,r13 + lea rdx,[rdi*1+rdx] + mov r12,rax + add rcx,QWORD[((72+128))+rsp] + and r12,r11 + rorx r13,r11,41 + rorx rdi,r11,18 + lea rdx,[r14*1+rdx] + lea rcx,[r12*1+rcx] + andn r12,r11,rbx + xor r13,rdi + rorx r14,r11,14 + lea rcx,[r12*1+rcx] + xor r13,r14 + mov rdi,rdx + rorx r12,rdx,39 + lea rcx,[r13*1+rcx] + xor rdi,r8 + rorx r14,rdx,34 + rorx r13,rdx,28 + lea r10,[rcx*1+r10] + and r15,rdi + xor r14,r12 + xor r15,r8 + xor r14,r13 + lea rcx,[r15*1+rcx] + mov r12,r11 + add rbx,QWORD[((96+128))+rsp] + and r12,r10 + rorx r13,r10,41 + rorx r15,r10,18 + lea rcx,[r14*1+rcx] + lea rbx,[r12*1+rbx] + andn r12,r10,rax + xor r13,r15 + rorx r14,r10,14 + lea rbx,[r12*1+rbx] + xor r13,r14 + mov r15,rcx + rorx r12,rcx,39 + lea rbx,[r13*1+rbx] + xor r15,rdx + rorx r14,rcx,34 + rorx r13,rcx,28 + lea r9,[rbx*1+r9] + and rdi,r15 + xor r14,r12 + xor rdi,rdx + xor r14,r13 + lea rbx,[rdi*1+rbx] + mov r12,r10 + add rax,QWORD[((104+128))+rsp] + and r12,r9 + rorx r13,r9,41 + rorx rdi,r9,18 + lea rbx,[r14*1+rbx] + lea rax,[r12*1+rax] + andn r12,r9,r11 + xor r13,rdi + rorx r14,r9,14 + lea rax,[r12*1+rax] + xor r13,r14 + mov rdi,rbx + rorx r12,rbx,39 + lea rax,[r13*1+rax] + xor rdi,rcx + rorx r14,rbx,34 + rorx r13,rbx,28 + lea r8,[rax*1+r8] + and r15,rdi + xor r14,r12 + xor r15,rcx + xor r14,r13 + lea rax,[r15*1+rax] + mov r12,r9 + add r11,QWORD[rsp] + and r12,r8 + rorx r13,r8,41 + rorx r15,r8,18 + lea rax,[r14*1+rax] + lea r11,[r12*1+r11] + andn r12,r8,r10 + xor r13,r15 + rorx r14,r8,14 + lea r11,[r12*1+r11] + xor r13,r14 + mov r15,rax + rorx r12,rax,39 + lea r11,[r13*1+r11] + xor r15,rbx + rorx r14,rax,34 + rorx r13,rax,28 + lea rdx,[r11*1+rdx] + and rdi,r15 + xor r14,r12 + xor rdi,rbx + xor r14,r13 + lea r11,[rdi*1+r11] + mov r12,r8 + add r10,QWORD[8+rsp] + and r12,rdx + rorx r13,rdx,41 + rorx rdi,rdx,18 + lea r11,[r14*1+r11] + lea r10,[r12*1+r10] + andn r12,rdx,r9 + xor r13,rdi + rorx r14,rdx,14 + lea r10,[r12*1+r10] + xor r13,r14 + mov rdi,r11 + rorx r12,r11,39 + lea r10,[r13*1+r10] + xor rdi,rax + rorx r14,r11,34 + rorx r13,r11,28 + lea rcx,[r10*1+rcx] + and r15,rdi + xor r14,r12 + xor r15,rax + xor r14,r13 + lea r10,[r15*1+r10] + mov r12,rdx + add r9,QWORD[32+rsp] + and r12,rcx + rorx r13,rcx,41 + rorx r15,rcx,18 + lea r10,[r14*1+r10] + lea r9,[r12*1+r9] + andn r12,rcx,r8 + xor r13,r15 + rorx r14,rcx,14 + lea r9,[r12*1+r9] + xor r13,r14 + mov r15,r10 + rorx r12,r10,39 + lea r9,[r13*1+r9] + xor r15,r11 + rorx r14,r10,34 + rorx r13,r10,28 + lea rbx,[r9*1+rbx] + and rdi,r15 + xor r14,r12 + xor rdi,r11 + xor r14,r13 + lea r9,[rdi*1+r9] + mov r12,rcx + add r8,QWORD[40+rsp] + and r12,rbx + rorx r13,rbx,41 + rorx rdi,rbx,18 + lea r9,[r14*1+r9] + lea r8,[r12*1+r8] + andn r12,rbx,rdx + xor r13,rdi + rorx r14,rbx,14 + lea r8,[r12*1+r8] + xor r13,r14 + mov rdi,r9 + rorx r12,r9,39 + lea r8,[r13*1+r8] + xor rdi,r10 + rorx r14,r9,34 + rorx r13,r9,28 + lea rax,[r8*1+rax] + and r15,rdi + xor r14,r12 + xor r15,r10 + xor r14,r13 + lea r8,[r15*1+r8] + mov r12,rbx + add rdx,QWORD[64+rsp] + and r12,rax + rorx r13,rax,41 + rorx r15,rax,18 + lea r8,[r14*1+r8] + lea rdx,[r12*1+rdx] + andn r12,rax,rcx + xor r13,r15 + rorx r14,rax,14 + lea rdx,[r12*1+rdx] + xor r13,r14 + mov r15,r8 + rorx r12,r8,39 + lea rdx,[r13*1+rdx] + xor r15,r9 + rorx r14,r8,34 + rorx r13,r8,28 + lea r11,[rdx*1+r11] + and rdi,r15 + xor r14,r12 + xor rdi,r9 + xor r14,r13 + lea rdx,[rdi*1+rdx] + mov r12,rax + add rcx,QWORD[72+rsp] + and r12,r11 + rorx r13,r11,41 + rorx rdi,r11,18 + lea rdx,[r14*1+rdx] + lea rcx,[r12*1+rcx] + andn r12,r11,rbx + xor r13,rdi + rorx r14,r11,14 + lea rcx,[r12*1+rcx] + xor r13,r14 + mov rdi,rdx + rorx r12,rdx,39 + lea rcx,[r13*1+rcx] + xor rdi,r8 + rorx r14,rdx,34 + rorx r13,rdx,28 + lea r10,[rcx*1+r10] + and r15,rdi + xor r14,r12 + xor r15,r8 + xor r14,r13 + lea rcx,[r15*1+rcx] + mov r12,r11 + add rbx,QWORD[96+rsp] + and r12,r10 + rorx r13,r10,41 + rorx r15,r10,18 + lea rcx,[r14*1+rcx] + lea rbx,[r12*1+rbx] + andn r12,r10,rax + xor r13,r15 + rorx r14,r10,14 + lea rbx,[r12*1+rbx] + xor r13,r14 + mov r15,rcx + rorx r12,rcx,39 + lea rbx,[r13*1+rbx] + xor r15,rdx + rorx r14,rcx,34 + rorx r13,rcx,28 + lea r9,[rbx*1+r9] + and rdi,r15 + xor r14,r12 + xor rdi,rdx + xor r14,r13 + lea rbx,[rdi*1+rbx] + mov r12,r10 + add rax,QWORD[104+rsp] + and r12,r9 + rorx r13,r9,41 + rorx rdi,r9,18 + lea rbx,[r14*1+rbx] + lea rax,[r12*1+rax] + andn r12,r9,r11 + xor r13,rdi + rorx r14,r9,14 + lea rax,[r12*1+rax] + xor r13,r14 + mov rdi,rbx + rorx r12,rbx,39 + lea rax,[r13*1+rax] + xor rdi,rcx + rorx r14,rbx,34 + rorx r13,rbx,28 + lea r8,[rax*1+r8] + and r15,rdi + xor r14,r12 + xor r15,rcx + xor r14,r13 + lea rax,[r15*1+rax] + mov r12,r9 + mov rdi,QWORD[1280+rsp] + add rax,r14 + + lea rbp,[1152+rsp] + + add rax,QWORD[rdi] + add rbx,QWORD[8+rdi] + add rcx,QWORD[16+rdi] + add rdx,QWORD[24+rdi] + add r8,QWORD[32+rdi] + add r9,QWORD[40+rdi] + add r10,QWORD[48+rdi] + add r11,QWORD[56+rdi] + + mov QWORD[rdi],rax + mov QWORD[8+rdi],rbx + mov QWORD[16+rdi],rcx + mov QWORD[24+rdi],rdx + mov QWORD[32+rdi],r8 + mov QWORD[40+rdi],r9 + mov QWORD[48+rdi],r10 + mov QWORD[56+rdi],r11 + + cmp rsi,QWORD[144+rbp] + je NEAR $L$done_avx2 + + xor r14,r14 + mov rdi,rbx + xor rdi,rcx + mov r12,r9 + jmp NEAR $L$ower_avx2 +ALIGN 16 +$L$ower_avx2: + add r11,QWORD[((0+16))+rbp] + and r12,r8 + rorx r13,r8,41 + rorx r15,r8,18 + lea rax,[r14*1+rax] + lea r11,[r12*1+r11] + andn r12,r8,r10 + xor r13,r15 + rorx r14,r8,14 + lea r11,[r12*1+r11] + xor r13,r14 + mov r15,rax + rorx r12,rax,39 + lea r11,[r13*1+r11] + xor r15,rbx + rorx r14,rax,34 + rorx r13,rax,28 + lea rdx,[r11*1+rdx] + and rdi,r15 + xor r14,r12 + xor rdi,rbx + xor r14,r13 + lea r11,[rdi*1+r11] + mov r12,r8 + add r10,QWORD[((8+16))+rbp] + and r12,rdx + rorx r13,rdx,41 + rorx rdi,rdx,18 + lea r11,[r14*1+r11] + lea r10,[r12*1+r10] + andn r12,rdx,r9 + xor r13,rdi + rorx r14,rdx,14 + lea r10,[r12*1+r10] + xor r13,r14 + mov rdi,r11 + rorx r12,r11,39 + lea r10,[r13*1+r10] + xor rdi,rax + rorx r14,r11,34 + rorx r13,r11,28 + lea rcx,[r10*1+rcx] + and r15,rdi + xor r14,r12 + xor r15,rax + xor r14,r13 + lea r10,[r15*1+r10] + mov r12,rdx + add r9,QWORD[((32+16))+rbp] + and r12,rcx + rorx r13,rcx,41 + rorx r15,rcx,18 + lea r10,[r14*1+r10] + lea r9,[r12*1+r9] + andn r12,rcx,r8 + xor r13,r15 + rorx r14,rcx,14 + lea r9,[r12*1+r9] + xor r13,r14 + mov r15,r10 + rorx r12,r10,39 + lea r9,[r13*1+r9] + xor r15,r11 + rorx r14,r10,34 + rorx r13,r10,28 + lea rbx,[r9*1+rbx] + and rdi,r15 + xor r14,r12 + xor rdi,r11 + xor r14,r13 + lea r9,[rdi*1+r9] + mov r12,rcx + add r8,QWORD[((40+16))+rbp] + and r12,rbx + rorx r13,rbx,41 + rorx rdi,rbx,18 + lea r9,[r14*1+r9] + lea r8,[r12*1+r8] + andn r12,rbx,rdx + xor r13,rdi + rorx r14,rbx,14 + lea r8,[r12*1+r8] + xor r13,r14 + mov rdi,r9 + rorx r12,r9,39 + lea r8,[r13*1+r8] + xor rdi,r10 + rorx r14,r9,34 + rorx r13,r9,28 + lea rax,[r8*1+rax] + and r15,rdi + xor r14,r12 + xor r15,r10 + xor r14,r13 + lea r8,[r15*1+r8] + mov r12,rbx + add rdx,QWORD[((64+16))+rbp] + and r12,rax + rorx r13,rax,41 + rorx r15,rax,18 + lea r8,[r14*1+r8] + lea rdx,[r12*1+rdx] + andn r12,rax,rcx + xor r13,r15 + rorx r14,rax,14 + lea rdx,[r12*1+rdx] + xor r13,r14 + mov r15,r8 + rorx r12,r8,39 + lea rdx,[r13*1+rdx] + xor r15,r9 + rorx r14,r8,34 + rorx r13,r8,28 + lea r11,[rdx*1+r11] + and rdi,r15 + xor r14,r12 + xor rdi,r9 + xor r14,r13 + lea rdx,[rdi*1+rdx] + mov r12,rax + add rcx,QWORD[((72+16))+rbp] + and r12,r11 + rorx r13,r11,41 + rorx rdi,r11,18 + lea rdx,[r14*1+rdx] + lea rcx,[r12*1+rcx] + andn r12,r11,rbx + xor r13,rdi + rorx r14,r11,14 + lea rcx,[r12*1+rcx] + xor r13,r14 + mov rdi,rdx + rorx r12,rdx,39 + lea rcx,[r13*1+rcx] + xor rdi,r8 + rorx r14,rdx,34 + rorx r13,rdx,28 + lea r10,[rcx*1+r10] + and r15,rdi + xor r14,r12 + xor r15,r8 + xor r14,r13 + lea rcx,[r15*1+rcx] + mov r12,r11 + add rbx,QWORD[((96+16))+rbp] + and r12,r10 + rorx r13,r10,41 + rorx r15,r10,18 + lea rcx,[r14*1+rcx] + lea rbx,[r12*1+rbx] + andn r12,r10,rax + xor r13,r15 + rorx r14,r10,14 + lea rbx,[r12*1+rbx] + xor r13,r14 + mov r15,rcx + rorx r12,rcx,39 + lea rbx,[r13*1+rbx] + xor r15,rdx + rorx r14,rcx,34 + rorx r13,rcx,28 + lea r9,[rbx*1+r9] + and rdi,r15 + xor r14,r12 + xor rdi,rdx + xor r14,r13 + lea rbx,[rdi*1+rbx] + mov r12,r10 + add rax,QWORD[((104+16))+rbp] + and r12,r9 + rorx r13,r9,41 + rorx rdi,r9,18 + lea rbx,[r14*1+rbx] + lea rax,[r12*1+rax] + andn r12,r9,r11 + xor r13,rdi + rorx r14,r9,14 + lea rax,[r12*1+rax] + xor r13,r14 + mov rdi,rbx + rorx r12,rbx,39 + lea rax,[r13*1+rax] + xor rdi,rcx + rorx r14,rbx,34 + rorx r13,rbx,28 + lea r8,[rax*1+r8] + and r15,rdi + xor r14,r12 + xor r15,rcx + xor r14,r13 + lea rax,[r15*1+rax] + mov r12,r9 + lea rbp,[((-128))+rbp] + cmp rbp,rsp + jae NEAR $L$ower_avx2 + + mov rdi,QWORD[1280+rsp] + add rax,r14 + + lea rsp,[1152+rsp] + + + + add rax,QWORD[rdi] + add rbx,QWORD[8+rdi] + add rcx,QWORD[16+rdi] + add rdx,QWORD[24+rdi] + add r8,QWORD[32+rdi] + add r9,QWORD[40+rdi] + lea rsi,[256+rsi] + add r10,QWORD[48+rdi] + mov r12,rsi + add r11,QWORD[56+rdi] + cmp rsi,QWORD[((128+16))+rsp] + + mov QWORD[rdi],rax + cmove r12,rsp + mov QWORD[8+rdi],rbx + mov QWORD[16+rdi],rcx + mov QWORD[24+rdi],rdx + mov QWORD[32+rdi],r8 + mov QWORD[40+rdi],r9 + mov QWORD[48+rdi],r10 + mov QWORD[56+rdi],r11 + + jbe NEAR $L$oop_avx2 + lea rbp,[rsp] + + + + +$L$done_avx2: + mov rsi,QWORD[152+rbp] + + vzeroupper + movaps xmm6,XMMWORD[((128+32))+rbp] + movaps xmm7,XMMWORD[((128+48))+rbp] + movaps xmm8,XMMWORD[((128+64))+rbp] + movaps xmm9,XMMWORD[((128+80))+rbp] + movaps xmm10,XMMWORD[((128+96))+rbp] + movaps xmm11,XMMWORD[((128+112))+rbp] + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue_avx2: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_sha512_block_data_order_avx2: +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] + + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] + cmp rbx,r10 + jae NEAR $L$in_prologue + lea r10,[$L$avx2_shortcut] + cmp rbx,r10 + jb NEAR $L$not_in_avx2 + + and rax,-256*8 + add rax,1152 +$L$not_in_avx2: + mov rsi,rax + mov rax,QWORD[((128+24))+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + + lea r10,[$L$epilogue] + cmp rbx,r10 + jb NEAR $L$in_prologue + + lea rsi,[((128+32))+rsi] + lea rdi,[512+r8] + mov ecx,12 + DD 0xa548f3fc + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_sha512_block_data_order wrt ..imagebase + DD $L$SEH_end_sha512_block_data_order wrt ..imagebase + DD $L$SEH_info_sha512_block_data_order wrt ..imagebase + DD $L$SEH_begin_sha512_block_data_order_xop wrt ..imagebase + DD $L$SEH_end_sha512_block_data_order_xop wrt ..imagebase + DD $L$SEH_info_sha512_block_data_order_xop wrt ..imagebase + DD $L$SEH_begin_sha512_block_data_order_avx wrt ..imagebase + DD $L$SEH_end_sha512_block_data_order_avx wrt ..imagebase + DD $L$SEH_info_sha512_block_data_order_avx wrt ..imagebase + DD $L$SEH_begin_sha512_block_data_order_avx2 wrt ..imagebase + DD $L$SEH_end_sha512_block_data_order_avx2 wrt ..imagebase + DD $L$SEH_info_sha512_block_data_order_avx2 wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_sha512_block_data_order: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase +$L$SEH_info_sha512_block_data_order_xop: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_xop wrt ..imagebase,$L$epilogue_xop wrt ..imagebase +$L$SEH_info_sha512_block_data_order_avx: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase +$L$SEH_info_sha512_block_data_order_avx2: +DB 9,0,0,0 + DD se_handler wrt ..imagebase + DD $L$prologue_avx2 wrt ..imagebase,$L$epilogue_avx2 wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/uplink-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/uplink-x86_64.asm new file mode 100644 index 0000000..9bf4d2a --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/uplink-x86_64.asm @@ -0,0 +1,503 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +EXTERN OPENSSL_Uplink +global OPENSSL_UplinkTable + +ALIGN 16 +_lazy1: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,1 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[8+rax] +_lazy1_end: + + +ALIGN 16 +_lazy2: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,2 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[16+rax] +_lazy2_end: + + +ALIGN 16 +_lazy3: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,3 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[24+rax] +_lazy3_end: + + +ALIGN 16 +_lazy4: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,4 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[32+rax] +_lazy4_end: + + +ALIGN 16 +_lazy5: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,5 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[40+rax] +_lazy5_end: + + +ALIGN 16 +_lazy6: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,6 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[48+rax] +_lazy6_end: + + +ALIGN 16 +_lazy7: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,7 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[56+rax] +_lazy7_end: + + +ALIGN 16 +_lazy8: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,8 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[64+rax] +_lazy8_end: + + +ALIGN 16 +_lazy9: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,9 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[72+rax] +_lazy9_end: + + +ALIGN 16 +_lazy10: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,10 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[80+rax] +_lazy10_end: + + +ALIGN 16 +_lazy11: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,11 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[88+rax] +_lazy11_end: + + +ALIGN 16 +_lazy12: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,12 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[96+rax] +_lazy12_end: + + +ALIGN 16 +_lazy13: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,13 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[104+rax] +_lazy13_end: + + +ALIGN 16 +_lazy14: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,14 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[112+rax] +_lazy14_end: + + +ALIGN 16 +_lazy15: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,15 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[120+rax] +_lazy15_end: + + +ALIGN 16 +_lazy16: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,16 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[128+rax] +_lazy16_end: + + +ALIGN 16 +_lazy17: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,17 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[136+rax] +_lazy17_end: + + +ALIGN 16 +_lazy18: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,18 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[144+rax] +_lazy18_end: + + +ALIGN 16 +_lazy19: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,19 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[152+rax] +_lazy19_end: + + +ALIGN 16 +_lazy20: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,20 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[160+rax] +_lazy20_end: + + +ALIGN 16 +_lazy21: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,21 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[168+rax] +_lazy21_end: + + +ALIGN 16 +_lazy22: +DB 0x48,0x83,0xEC,0x28 + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],rdx + mov QWORD[64+rsp],r8 + mov QWORD[72+rsp],r9 + lea rcx,[OPENSSL_UplinkTable] + mov rdx,22 + call OPENSSL_Uplink + mov rcx,QWORD[48+rsp] + mov rdx,QWORD[56+rsp] + mov r8,QWORD[64+rsp] + mov r9,QWORD[72+rsp] + lea rax,[OPENSSL_UplinkTable] + add rsp,40 + jmp QWORD[176+rax] +_lazy22_end: + +section .data data align=8 + +OPENSSL_UplinkTable: + DQ 22 + DQ _lazy1 + DQ _lazy2 + DQ _lazy3 + DQ _lazy4 + DQ _lazy5 + DQ _lazy6 + DQ _lazy7 + DQ _lazy8 + DQ _lazy9 + DQ _lazy10 + DQ _lazy11 + DQ _lazy12 + DQ _lazy13 + DQ _lazy14 + DQ _lazy15 + DQ _lazy16 + DQ _lazy17 + DQ _lazy18 + DQ _lazy19 + DQ _lazy20 + DQ _lazy21 + DQ _lazy22 +section .pdata rdata align=4 +ALIGN 4 + DD _lazy1 wrt ..imagebase,_lazy1_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy2 wrt ..imagebase,_lazy2_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy3 wrt ..imagebase,_lazy3_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy4 wrt ..imagebase,_lazy4_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy5 wrt ..imagebase,_lazy5_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy6 wrt ..imagebase,_lazy6_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy7 wrt ..imagebase,_lazy7_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy8 wrt ..imagebase,_lazy8_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy9 wrt ..imagebase,_lazy9_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy10 wrt ..imagebase,_lazy10_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy11 wrt ..imagebase,_lazy11_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy12 wrt ..imagebase,_lazy12_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy13 wrt ..imagebase,_lazy13_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy14 wrt ..imagebase,_lazy14_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy15 wrt ..imagebase,_lazy15_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy16 wrt ..imagebase,_lazy16_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy17 wrt ..imagebase,_lazy17_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy18 wrt ..imagebase,_lazy18_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy19 wrt ..imagebase,_lazy19_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy20 wrt ..imagebase,_lazy20_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy21 wrt ..imagebase,_lazy21_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase + DD _lazy22 wrt ..imagebase,_lazy22_end wrt ..imagebase,_lazy_unwind_info wrt ..imagebase +section .xdata rdata align=8 +ALIGN 8 +_lazy_unwind_info: +DB 0x01,0x04,0x01,0x00 +DB 0x04,0x42,0x00,0x00 diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/whrlpool/wp-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/whrlpool/wp-x86_64.asm new file mode 100644 index 0000000..76f7b07 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/whrlpool/wp-x86_64.asm @@ -0,0 +1,989 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + + +global whirlpool_block + +ALIGN 16 +whirlpool_block: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_whirlpool_block: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + + mov rax,rsp + + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + + + sub rsp,128+40 + and rsp,-64 + + lea r10,[128+rsp] + mov QWORD[r10],rdi + mov QWORD[8+r10],rsi + mov QWORD[16+r10],rdx + mov QWORD[32+r10],rax + +$L$prologue: + + mov rbx,r10 + lea rbp,[$L$table] + + xor rcx,rcx + xor rdx,rdx + mov r8,QWORD[rdi] + mov r9,QWORD[8+rdi] + mov r10,QWORD[16+rdi] + mov r11,QWORD[24+rdi] + mov r12,QWORD[32+rdi] + mov r13,QWORD[40+rdi] + mov r14,QWORD[48+rdi] + mov r15,QWORD[56+rdi] +$L$outerloop: + mov QWORD[rsp],r8 + mov QWORD[8+rsp],r9 + mov QWORD[16+rsp],r10 + mov QWORD[24+rsp],r11 + mov QWORD[32+rsp],r12 + mov QWORD[40+rsp],r13 + mov QWORD[48+rsp],r14 + mov QWORD[56+rsp],r15 + xor r8,QWORD[rsi] + xor r9,QWORD[8+rsi] + xor r10,QWORD[16+rsi] + xor r11,QWORD[24+rsi] + xor r12,QWORD[32+rsi] + xor r13,QWORD[40+rsi] + xor r14,QWORD[48+rsi] + xor r15,QWORD[56+rsi] + mov QWORD[((64+0))+rsp],r8 + mov QWORD[((64+8))+rsp],r9 + mov QWORD[((64+16))+rsp],r10 + mov QWORD[((64+24))+rsp],r11 + mov QWORD[((64+32))+rsp],r12 + mov QWORD[((64+40))+rsp],r13 + mov QWORD[((64+48))+rsp],r14 + mov QWORD[((64+56))+rsp],r15 + xor rsi,rsi + mov QWORD[24+rbx],rsi + jmp NEAR $L$round +ALIGN 16 +$L$round: + mov r8,QWORD[4096+rsi*8+rbp] + mov eax,DWORD[rsp] + mov ebx,DWORD[4+rsp] + movzx ecx,al + movzx edx,ah + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r8,QWORD[rsi*8+rbp] + mov r9,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((0+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + mov r10,QWORD[6+rsi*8+rbp] + mov r11,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + mov r12,QWORD[4+rsi*8+rbp] + mov r13,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((0+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + mov r14,QWORD[2+rsi*8+rbp] + mov r15,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r9,QWORD[rsi*8+rbp] + xor r10,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((8+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r11,QWORD[6+rsi*8+rbp] + xor r12,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r13,QWORD[4+rsi*8+rbp] + xor r14,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((8+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r15,QWORD[2+rsi*8+rbp] + xor r8,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r10,QWORD[rsi*8+rbp] + xor r11,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((16+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r12,QWORD[6+rsi*8+rbp] + xor r13,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r14,QWORD[4+rsi*8+rbp] + xor r15,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((16+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r8,QWORD[2+rsi*8+rbp] + xor r9,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r11,QWORD[rsi*8+rbp] + xor r12,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((24+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r13,QWORD[6+rsi*8+rbp] + xor r14,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r15,QWORD[4+rsi*8+rbp] + xor r8,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((24+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r9,QWORD[2+rsi*8+rbp] + xor r10,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r12,QWORD[rsi*8+rbp] + xor r13,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((32+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r14,QWORD[6+rsi*8+rbp] + xor r15,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r8,QWORD[4+rsi*8+rbp] + xor r9,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((32+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r10,QWORD[2+rsi*8+rbp] + xor r11,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r13,QWORD[rsi*8+rbp] + xor r14,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((40+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r15,QWORD[6+rsi*8+rbp] + xor r8,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r9,QWORD[4+rsi*8+rbp] + xor r10,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((40+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r11,QWORD[2+rsi*8+rbp] + xor r12,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r14,QWORD[rsi*8+rbp] + xor r15,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((48+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r8,QWORD[6+rsi*8+rbp] + xor r9,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r10,QWORD[4+rsi*8+rbp] + xor r11,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((48+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r12,QWORD[2+rsi*8+rbp] + xor r13,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r15,QWORD[rsi*8+rbp] + xor r8,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((56+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r9,QWORD[6+rsi*8+rbp] + xor r10,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r11,QWORD[4+rsi*8+rbp] + xor r12,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((56+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r13,QWORD[2+rsi*8+rbp] + xor r14,QWORD[1+rdi*8+rbp] + mov QWORD[rsp],r8 + mov QWORD[8+rsp],r9 + mov QWORD[16+rsp],r10 + mov QWORD[24+rsp],r11 + mov QWORD[32+rsp],r12 + mov QWORD[40+rsp],r13 + mov QWORD[48+rsp],r14 + mov QWORD[56+rsp],r15 + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r8,QWORD[rsi*8+rbp] + xor r9,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((64+0+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r10,QWORD[6+rsi*8+rbp] + xor r11,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r12,QWORD[4+rsi*8+rbp] + xor r13,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((64+0+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r14,QWORD[2+rsi*8+rbp] + xor r15,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r9,QWORD[rsi*8+rbp] + xor r10,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((64+8+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r11,QWORD[6+rsi*8+rbp] + xor r12,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r13,QWORD[4+rsi*8+rbp] + xor r14,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((64+8+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r15,QWORD[2+rsi*8+rbp] + xor r8,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r10,QWORD[rsi*8+rbp] + xor r11,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((64+16+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r12,QWORD[6+rsi*8+rbp] + xor r13,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r14,QWORD[4+rsi*8+rbp] + xor r15,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((64+16+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r8,QWORD[2+rsi*8+rbp] + xor r9,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r11,QWORD[rsi*8+rbp] + xor r12,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((64+24+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r13,QWORD[6+rsi*8+rbp] + xor r14,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r15,QWORD[4+rsi*8+rbp] + xor r8,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((64+24+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r9,QWORD[2+rsi*8+rbp] + xor r10,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r12,QWORD[rsi*8+rbp] + xor r13,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((64+32+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r14,QWORD[6+rsi*8+rbp] + xor r15,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r8,QWORD[4+rsi*8+rbp] + xor r9,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((64+32+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r10,QWORD[2+rsi*8+rbp] + xor r11,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r13,QWORD[rsi*8+rbp] + xor r14,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((64+40+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r15,QWORD[6+rsi*8+rbp] + xor r8,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r9,QWORD[4+rsi*8+rbp] + xor r10,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((64+40+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r11,QWORD[2+rsi*8+rbp] + xor r12,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r14,QWORD[rsi*8+rbp] + xor r15,QWORD[7+rdi*8+rbp] + mov eax,DWORD[((64+48+8))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r8,QWORD[6+rsi*8+rbp] + xor r9,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r10,QWORD[4+rsi*8+rbp] + xor r11,QWORD[3+rdi*8+rbp] + mov ebx,DWORD[((64+48+8+4))+rsp] + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r12,QWORD[2+rsi*8+rbp] + xor r13,QWORD[1+rdi*8+rbp] + shr eax,16 + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r15,QWORD[rsi*8+rbp] + xor r8,QWORD[7+rdi*8+rbp] + + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r9,QWORD[6+rsi*8+rbp] + xor r10,QWORD[5+rdi*8+rbp] + shr ebx,16 + lea rsi,[rcx*1+rcx] + movzx ecx,bl + lea rdi,[rdx*1+rdx] + movzx edx,bh + xor r11,QWORD[4+rsi*8+rbp] + xor r12,QWORD[3+rdi*8+rbp] + + lea rsi,[rcx*1+rcx] + movzx ecx,al + lea rdi,[rdx*1+rdx] + movzx edx,ah + xor r13,QWORD[2+rsi*8+rbp] + xor r14,QWORD[1+rdi*8+rbp] + lea rbx,[128+rsp] + mov rsi,QWORD[24+rbx] + add rsi,1 + cmp rsi,10 + je NEAR $L$roundsdone + + mov QWORD[24+rbx],rsi + mov QWORD[((64+0))+rsp],r8 + mov QWORD[((64+8))+rsp],r9 + mov QWORD[((64+16))+rsp],r10 + mov QWORD[((64+24))+rsp],r11 + mov QWORD[((64+32))+rsp],r12 + mov QWORD[((64+40))+rsp],r13 + mov QWORD[((64+48))+rsp],r14 + mov QWORD[((64+56))+rsp],r15 + jmp NEAR $L$round +ALIGN 16 +$L$roundsdone: + mov rdi,QWORD[rbx] + mov rsi,QWORD[8+rbx] + mov rax,QWORD[16+rbx] + xor r8,QWORD[rsi] + xor r9,QWORD[8+rsi] + xor r10,QWORD[16+rsi] + xor r11,QWORD[24+rsi] + xor r12,QWORD[32+rsi] + xor r13,QWORD[40+rsi] + xor r14,QWORD[48+rsi] + xor r15,QWORD[56+rsi] + xor r8,QWORD[rdi] + xor r9,QWORD[8+rdi] + xor r10,QWORD[16+rdi] + xor r11,QWORD[24+rdi] + xor r12,QWORD[32+rdi] + xor r13,QWORD[40+rdi] + xor r14,QWORD[48+rdi] + xor r15,QWORD[56+rdi] + mov QWORD[rdi],r8 + mov QWORD[8+rdi],r9 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + mov QWORD[32+rdi],r12 + mov QWORD[40+rdi],r13 + mov QWORD[48+rdi],r14 + mov QWORD[56+rdi],r15 + lea rsi,[64+rsi] + sub rax,1 + jz NEAR $L$alldone + mov QWORD[8+rbx],rsi + mov QWORD[16+rbx],rax + jmp NEAR $L$outerloop +$L$alldone: + mov rsi,QWORD[32+rbx] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_whirlpool_block: + +ALIGN 64 + +$L$table: +DB 24,24,96,24,192,120,48,216,24,24,96,24,192,120,48,216 +DB 35,35,140,35,5,175,70,38,35,35,140,35,5,175,70,38 +DB 198,198,63,198,126,249,145,184,198,198,63,198,126,249,145,184 +DB 232,232,135,232,19,111,205,251,232,232,135,232,19,111,205,251 +DB 135,135,38,135,76,161,19,203,135,135,38,135,76,161,19,203 +DB 184,184,218,184,169,98,109,17,184,184,218,184,169,98,109,17 +DB 1,1,4,1,8,5,2,9,1,1,4,1,8,5,2,9 +DB 79,79,33,79,66,110,158,13,79,79,33,79,66,110,158,13 +DB 54,54,216,54,173,238,108,155,54,54,216,54,173,238,108,155 +DB 166,166,162,166,89,4,81,255,166,166,162,166,89,4,81,255 +DB 210,210,111,210,222,189,185,12,210,210,111,210,222,189,185,12 +DB 245,245,243,245,251,6,247,14,245,245,243,245,251,6,247,14 +DB 121,121,249,121,239,128,242,150,121,121,249,121,239,128,242,150 +DB 111,111,161,111,95,206,222,48,111,111,161,111,95,206,222,48 +DB 145,145,126,145,252,239,63,109,145,145,126,145,252,239,63,109 +DB 82,82,85,82,170,7,164,248,82,82,85,82,170,7,164,248 +DB 96,96,157,96,39,253,192,71,96,96,157,96,39,253,192,71 +DB 188,188,202,188,137,118,101,53,188,188,202,188,137,118,101,53 +DB 155,155,86,155,172,205,43,55,155,155,86,155,172,205,43,55 +DB 142,142,2,142,4,140,1,138,142,142,2,142,4,140,1,138 +DB 163,163,182,163,113,21,91,210,163,163,182,163,113,21,91,210 +DB 12,12,48,12,96,60,24,108,12,12,48,12,96,60,24,108 +DB 123,123,241,123,255,138,246,132,123,123,241,123,255,138,246,132 +DB 53,53,212,53,181,225,106,128,53,53,212,53,181,225,106,128 +DB 29,29,116,29,232,105,58,245,29,29,116,29,232,105,58,245 +DB 224,224,167,224,83,71,221,179,224,224,167,224,83,71,221,179 +DB 215,215,123,215,246,172,179,33,215,215,123,215,246,172,179,33 +DB 194,194,47,194,94,237,153,156,194,194,47,194,94,237,153,156 +DB 46,46,184,46,109,150,92,67,46,46,184,46,109,150,92,67 +DB 75,75,49,75,98,122,150,41,75,75,49,75,98,122,150,41 +DB 254,254,223,254,163,33,225,93,254,254,223,254,163,33,225,93 +DB 87,87,65,87,130,22,174,213,87,87,65,87,130,22,174,213 +DB 21,21,84,21,168,65,42,189,21,21,84,21,168,65,42,189 +DB 119,119,193,119,159,182,238,232,119,119,193,119,159,182,238,232 +DB 55,55,220,55,165,235,110,146,55,55,220,55,165,235,110,146 +DB 229,229,179,229,123,86,215,158,229,229,179,229,123,86,215,158 +DB 159,159,70,159,140,217,35,19,159,159,70,159,140,217,35,19 +DB 240,240,231,240,211,23,253,35,240,240,231,240,211,23,253,35 +DB 74,74,53,74,106,127,148,32,74,74,53,74,106,127,148,32 +DB 218,218,79,218,158,149,169,68,218,218,79,218,158,149,169,68 +DB 88,88,125,88,250,37,176,162,88,88,125,88,250,37,176,162 +DB 201,201,3,201,6,202,143,207,201,201,3,201,6,202,143,207 +DB 41,41,164,41,85,141,82,124,41,41,164,41,85,141,82,124 +DB 10,10,40,10,80,34,20,90,10,10,40,10,80,34,20,90 +DB 177,177,254,177,225,79,127,80,177,177,254,177,225,79,127,80 +DB 160,160,186,160,105,26,93,201,160,160,186,160,105,26,93,201 +DB 107,107,177,107,127,218,214,20,107,107,177,107,127,218,214,20 +DB 133,133,46,133,92,171,23,217,133,133,46,133,92,171,23,217 +DB 189,189,206,189,129,115,103,60,189,189,206,189,129,115,103,60 +DB 93,93,105,93,210,52,186,143,93,93,105,93,210,52,186,143 +DB 16,16,64,16,128,80,32,144,16,16,64,16,128,80,32,144 +DB 244,244,247,244,243,3,245,7,244,244,247,244,243,3,245,7 +DB 203,203,11,203,22,192,139,221,203,203,11,203,22,192,139,221 +DB 62,62,248,62,237,198,124,211,62,62,248,62,237,198,124,211 +DB 5,5,20,5,40,17,10,45,5,5,20,5,40,17,10,45 +DB 103,103,129,103,31,230,206,120,103,103,129,103,31,230,206,120 +DB 228,228,183,228,115,83,213,151,228,228,183,228,115,83,213,151 +DB 39,39,156,39,37,187,78,2,39,39,156,39,37,187,78,2 +DB 65,65,25,65,50,88,130,115,65,65,25,65,50,88,130,115 +DB 139,139,22,139,44,157,11,167,139,139,22,139,44,157,11,167 +DB 167,167,166,167,81,1,83,246,167,167,166,167,81,1,83,246 +DB 125,125,233,125,207,148,250,178,125,125,233,125,207,148,250,178 +DB 149,149,110,149,220,251,55,73,149,149,110,149,220,251,55,73 +DB 216,216,71,216,142,159,173,86,216,216,71,216,142,159,173,86 +DB 251,251,203,251,139,48,235,112,251,251,203,251,139,48,235,112 +DB 238,238,159,238,35,113,193,205,238,238,159,238,35,113,193,205 +DB 124,124,237,124,199,145,248,187,124,124,237,124,199,145,248,187 +DB 102,102,133,102,23,227,204,113,102,102,133,102,23,227,204,113 +DB 221,221,83,221,166,142,167,123,221,221,83,221,166,142,167,123 +DB 23,23,92,23,184,75,46,175,23,23,92,23,184,75,46,175 +DB 71,71,1,71,2,70,142,69,71,71,1,71,2,70,142,69 +DB 158,158,66,158,132,220,33,26,158,158,66,158,132,220,33,26 +DB 202,202,15,202,30,197,137,212,202,202,15,202,30,197,137,212 +DB 45,45,180,45,117,153,90,88,45,45,180,45,117,153,90,88 +DB 191,191,198,191,145,121,99,46,191,191,198,191,145,121,99,46 +DB 7,7,28,7,56,27,14,63,7,7,28,7,56,27,14,63 +DB 173,173,142,173,1,35,71,172,173,173,142,173,1,35,71,172 +DB 90,90,117,90,234,47,180,176,90,90,117,90,234,47,180,176 +DB 131,131,54,131,108,181,27,239,131,131,54,131,108,181,27,239 +DB 51,51,204,51,133,255,102,182,51,51,204,51,133,255,102,182 +DB 99,99,145,99,63,242,198,92,99,99,145,99,63,242,198,92 +DB 2,2,8,2,16,10,4,18,2,2,8,2,16,10,4,18 +DB 170,170,146,170,57,56,73,147,170,170,146,170,57,56,73,147 +DB 113,113,217,113,175,168,226,222,113,113,217,113,175,168,226,222 +DB 200,200,7,200,14,207,141,198,200,200,7,200,14,207,141,198 +DB 25,25,100,25,200,125,50,209,25,25,100,25,200,125,50,209 +DB 73,73,57,73,114,112,146,59,73,73,57,73,114,112,146,59 +DB 217,217,67,217,134,154,175,95,217,217,67,217,134,154,175,95 +DB 242,242,239,242,195,29,249,49,242,242,239,242,195,29,249,49 +DB 227,227,171,227,75,72,219,168,227,227,171,227,75,72,219,168 +DB 91,91,113,91,226,42,182,185,91,91,113,91,226,42,182,185 +DB 136,136,26,136,52,146,13,188,136,136,26,136,52,146,13,188 +DB 154,154,82,154,164,200,41,62,154,154,82,154,164,200,41,62 +DB 38,38,152,38,45,190,76,11,38,38,152,38,45,190,76,11 +DB 50,50,200,50,141,250,100,191,50,50,200,50,141,250,100,191 +DB 176,176,250,176,233,74,125,89,176,176,250,176,233,74,125,89 +DB 233,233,131,233,27,106,207,242,233,233,131,233,27,106,207,242 +DB 15,15,60,15,120,51,30,119,15,15,60,15,120,51,30,119 +DB 213,213,115,213,230,166,183,51,213,213,115,213,230,166,183,51 +DB 128,128,58,128,116,186,29,244,128,128,58,128,116,186,29,244 +DB 190,190,194,190,153,124,97,39,190,190,194,190,153,124,97,39 +DB 205,205,19,205,38,222,135,235,205,205,19,205,38,222,135,235 +DB 52,52,208,52,189,228,104,137,52,52,208,52,189,228,104,137 +DB 72,72,61,72,122,117,144,50,72,72,61,72,122,117,144,50 +DB 255,255,219,255,171,36,227,84,255,255,219,255,171,36,227,84 +DB 122,122,245,122,247,143,244,141,122,122,245,122,247,143,244,141 +DB 144,144,122,144,244,234,61,100,144,144,122,144,244,234,61,100 +DB 95,95,97,95,194,62,190,157,95,95,97,95,194,62,190,157 +DB 32,32,128,32,29,160,64,61,32,32,128,32,29,160,64,61 +DB 104,104,189,104,103,213,208,15,104,104,189,104,103,213,208,15 +DB 26,26,104,26,208,114,52,202,26,26,104,26,208,114,52,202 +DB 174,174,130,174,25,44,65,183,174,174,130,174,25,44,65,183 +DB 180,180,234,180,201,94,117,125,180,180,234,180,201,94,117,125 +DB 84,84,77,84,154,25,168,206,84,84,77,84,154,25,168,206 +DB 147,147,118,147,236,229,59,127,147,147,118,147,236,229,59,127 +DB 34,34,136,34,13,170,68,47,34,34,136,34,13,170,68,47 +DB 100,100,141,100,7,233,200,99,100,100,141,100,7,233,200,99 +DB 241,241,227,241,219,18,255,42,241,241,227,241,219,18,255,42 +DB 115,115,209,115,191,162,230,204,115,115,209,115,191,162,230,204 +DB 18,18,72,18,144,90,36,130,18,18,72,18,144,90,36,130 +DB 64,64,29,64,58,93,128,122,64,64,29,64,58,93,128,122 +DB 8,8,32,8,64,40,16,72,8,8,32,8,64,40,16,72 +DB 195,195,43,195,86,232,155,149,195,195,43,195,86,232,155,149 +DB 236,236,151,236,51,123,197,223,236,236,151,236,51,123,197,223 +DB 219,219,75,219,150,144,171,77,219,219,75,219,150,144,171,77 +DB 161,161,190,161,97,31,95,192,161,161,190,161,97,31,95,192 +DB 141,141,14,141,28,131,7,145,141,141,14,141,28,131,7,145 +DB 61,61,244,61,245,201,122,200,61,61,244,61,245,201,122,200 +DB 151,151,102,151,204,241,51,91,151,151,102,151,204,241,51,91 +DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +DB 207,207,27,207,54,212,131,249,207,207,27,207,54,212,131,249 +DB 43,43,172,43,69,135,86,110,43,43,172,43,69,135,86,110 +DB 118,118,197,118,151,179,236,225,118,118,197,118,151,179,236,225 +DB 130,130,50,130,100,176,25,230,130,130,50,130,100,176,25,230 +DB 214,214,127,214,254,169,177,40,214,214,127,214,254,169,177,40 +DB 27,27,108,27,216,119,54,195,27,27,108,27,216,119,54,195 +DB 181,181,238,181,193,91,119,116,181,181,238,181,193,91,119,116 +DB 175,175,134,175,17,41,67,190,175,175,134,175,17,41,67,190 +DB 106,106,181,106,119,223,212,29,106,106,181,106,119,223,212,29 +DB 80,80,93,80,186,13,160,234,80,80,93,80,186,13,160,234 +DB 69,69,9,69,18,76,138,87,69,69,9,69,18,76,138,87 +DB 243,243,235,243,203,24,251,56,243,243,235,243,203,24,251,56 +DB 48,48,192,48,157,240,96,173,48,48,192,48,157,240,96,173 +DB 239,239,155,239,43,116,195,196,239,239,155,239,43,116,195,196 +DB 63,63,252,63,229,195,126,218,63,63,252,63,229,195,126,218 +DB 85,85,73,85,146,28,170,199,85,85,73,85,146,28,170,199 +DB 162,162,178,162,121,16,89,219,162,162,178,162,121,16,89,219 +DB 234,234,143,234,3,101,201,233,234,234,143,234,3,101,201,233 +DB 101,101,137,101,15,236,202,106,101,101,137,101,15,236,202,106 +DB 186,186,210,186,185,104,105,3,186,186,210,186,185,104,105,3 +DB 47,47,188,47,101,147,94,74,47,47,188,47,101,147,94,74 +DB 192,192,39,192,78,231,157,142,192,192,39,192,78,231,157,142 +DB 222,222,95,222,190,129,161,96,222,222,95,222,190,129,161,96 +DB 28,28,112,28,224,108,56,252,28,28,112,28,224,108,56,252 +DB 253,253,211,253,187,46,231,70,253,253,211,253,187,46,231,70 +DB 77,77,41,77,82,100,154,31,77,77,41,77,82,100,154,31 +DB 146,146,114,146,228,224,57,118,146,146,114,146,228,224,57,118 +DB 117,117,201,117,143,188,234,250,117,117,201,117,143,188,234,250 +DB 6,6,24,6,48,30,12,54,6,6,24,6,48,30,12,54 +DB 138,138,18,138,36,152,9,174,138,138,18,138,36,152,9,174 +DB 178,178,242,178,249,64,121,75,178,178,242,178,249,64,121,75 +DB 230,230,191,230,99,89,209,133,230,230,191,230,99,89,209,133 +DB 14,14,56,14,112,54,28,126,14,14,56,14,112,54,28,126 +DB 31,31,124,31,248,99,62,231,31,31,124,31,248,99,62,231 +DB 98,98,149,98,55,247,196,85,98,98,149,98,55,247,196,85 +DB 212,212,119,212,238,163,181,58,212,212,119,212,238,163,181,58 +DB 168,168,154,168,41,50,77,129,168,168,154,168,41,50,77,129 +DB 150,150,98,150,196,244,49,82,150,150,98,150,196,244,49,82 +DB 249,249,195,249,155,58,239,98,249,249,195,249,155,58,239,98 +DB 197,197,51,197,102,246,151,163,197,197,51,197,102,246,151,163 +DB 37,37,148,37,53,177,74,16,37,37,148,37,53,177,74,16 +DB 89,89,121,89,242,32,178,171,89,89,121,89,242,32,178,171 +DB 132,132,42,132,84,174,21,208,132,132,42,132,84,174,21,208 +DB 114,114,213,114,183,167,228,197,114,114,213,114,183,167,228,197 +DB 57,57,228,57,213,221,114,236,57,57,228,57,213,221,114,236 +DB 76,76,45,76,90,97,152,22,76,76,45,76,90,97,152,22 +DB 94,94,101,94,202,59,188,148,94,94,101,94,202,59,188,148 +DB 120,120,253,120,231,133,240,159,120,120,253,120,231,133,240,159 +DB 56,56,224,56,221,216,112,229,56,56,224,56,221,216,112,229 +DB 140,140,10,140,20,134,5,152,140,140,10,140,20,134,5,152 +DB 209,209,99,209,198,178,191,23,209,209,99,209,198,178,191,23 +DB 165,165,174,165,65,11,87,228,165,165,174,165,65,11,87,228 +DB 226,226,175,226,67,77,217,161,226,226,175,226,67,77,217,161 +DB 97,97,153,97,47,248,194,78,97,97,153,97,47,248,194,78 +DB 179,179,246,179,241,69,123,66,179,179,246,179,241,69,123,66 +DB 33,33,132,33,21,165,66,52,33,33,132,33,21,165,66,52 +DB 156,156,74,156,148,214,37,8,156,156,74,156,148,214,37,8 +DB 30,30,120,30,240,102,60,238,30,30,120,30,240,102,60,238 +DB 67,67,17,67,34,82,134,97,67,67,17,67,34,82,134,97 +DB 199,199,59,199,118,252,147,177,199,199,59,199,118,252,147,177 +DB 252,252,215,252,179,43,229,79,252,252,215,252,179,43,229,79 +DB 4,4,16,4,32,20,8,36,4,4,16,4,32,20,8,36 +DB 81,81,89,81,178,8,162,227,81,81,89,81,178,8,162,227 +DB 153,153,94,153,188,199,47,37,153,153,94,153,188,199,47,37 +DB 109,109,169,109,79,196,218,34,109,109,169,109,79,196,218,34 +DB 13,13,52,13,104,57,26,101,13,13,52,13,104,57,26,101 +DB 250,250,207,250,131,53,233,121,250,250,207,250,131,53,233,121 +DB 223,223,91,223,182,132,163,105,223,223,91,223,182,132,163,105 +DB 126,126,229,126,215,155,252,169,126,126,229,126,215,155,252,169 +DB 36,36,144,36,61,180,72,25,36,36,144,36,61,180,72,25 +DB 59,59,236,59,197,215,118,254,59,59,236,59,197,215,118,254 +DB 171,171,150,171,49,61,75,154,171,171,150,171,49,61,75,154 +DB 206,206,31,206,62,209,129,240,206,206,31,206,62,209,129,240 +DB 17,17,68,17,136,85,34,153,17,17,68,17,136,85,34,153 +DB 143,143,6,143,12,137,3,131,143,143,6,143,12,137,3,131 +DB 78,78,37,78,74,107,156,4,78,78,37,78,74,107,156,4 +DB 183,183,230,183,209,81,115,102,183,183,230,183,209,81,115,102 +DB 235,235,139,235,11,96,203,224,235,235,139,235,11,96,203,224 +DB 60,60,240,60,253,204,120,193,60,60,240,60,253,204,120,193 +DB 129,129,62,129,124,191,31,253,129,129,62,129,124,191,31,253 +DB 148,148,106,148,212,254,53,64,148,148,106,148,212,254,53,64 +DB 247,247,251,247,235,12,243,28,247,247,251,247,235,12,243,28 +DB 185,185,222,185,161,103,111,24,185,185,222,185,161,103,111,24 +DB 19,19,76,19,152,95,38,139,19,19,76,19,152,95,38,139 +DB 44,44,176,44,125,156,88,81,44,44,176,44,125,156,88,81 +DB 211,211,107,211,214,184,187,5,211,211,107,211,214,184,187,5 +DB 231,231,187,231,107,92,211,140,231,231,187,231,107,92,211,140 +DB 110,110,165,110,87,203,220,57,110,110,165,110,87,203,220,57 +DB 196,196,55,196,110,243,149,170,196,196,55,196,110,243,149,170 +DB 3,3,12,3,24,15,6,27,3,3,12,3,24,15,6,27 +DB 86,86,69,86,138,19,172,220,86,86,69,86,138,19,172,220 +DB 68,68,13,68,26,73,136,94,68,68,13,68,26,73,136,94 +DB 127,127,225,127,223,158,254,160,127,127,225,127,223,158,254,160 +DB 169,169,158,169,33,55,79,136,169,169,158,169,33,55,79,136 +DB 42,42,168,42,77,130,84,103,42,42,168,42,77,130,84,103 +DB 187,187,214,187,177,109,107,10,187,187,214,187,177,109,107,10 +DB 193,193,35,193,70,226,159,135,193,193,35,193,70,226,159,135 +DB 83,83,81,83,162,2,166,241,83,83,81,83,162,2,166,241 +DB 220,220,87,220,174,139,165,114,220,220,87,220,174,139,165,114 +DB 11,11,44,11,88,39,22,83,11,11,44,11,88,39,22,83 +DB 157,157,78,157,156,211,39,1,157,157,78,157,156,211,39,1 +DB 108,108,173,108,71,193,216,43,108,108,173,108,71,193,216,43 +DB 49,49,196,49,149,245,98,164,49,49,196,49,149,245,98,164 +DB 116,116,205,116,135,185,232,243,116,116,205,116,135,185,232,243 +DB 246,246,255,246,227,9,241,21,246,246,255,246,227,9,241,21 +DB 70,70,5,70,10,67,140,76,70,70,5,70,10,67,140,76 +DB 172,172,138,172,9,38,69,165,172,172,138,172,9,38,69,165 +DB 137,137,30,137,60,151,15,181,137,137,30,137,60,151,15,181 +DB 20,20,80,20,160,68,40,180,20,20,80,20,160,68,40,180 +DB 225,225,163,225,91,66,223,186,225,225,163,225,91,66,223,186 +DB 22,22,88,22,176,78,44,166,22,22,88,22,176,78,44,166 +DB 58,58,232,58,205,210,116,247,58,58,232,58,205,210,116,247 +DB 105,105,185,105,111,208,210,6,105,105,185,105,111,208,210,6 +DB 9,9,36,9,72,45,18,65,9,9,36,9,72,45,18,65 +DB 112,112,221,112,167,173,224,215,112,112,221,112,167,173,224,215 +DB 182,182,226,182,217,84,113,111,182,182,226,182,217,84,113,111 +DB 208,208,103,208,206,183,189,30,208,208,103,208,206,183,189,30 +DB 237,237,147,237,59,126,199,214,237,237,147,237,59,126,199,214 +DB 204,204,23,204,46,219,133,226,204,204,23,204,46,219,133,226 +DB 66,66,21,66,42,87,132,104,66,66,21,66,42,87,132,104 +DB 152,152,90,152,180,194,45,44,152,152,90,152,180,194,45,44 +DB 164,164,170,164,73,14,85,237,164,164,170,164,73,14,85,237 +DB 40,40,160,40,93,136,80,117,40,40,160,40,93,136,80,117 +DB 92,92,109,92,218,49,184,134,92,92,109,92,218,49,184,134 +DB 248,248,199,248,147,63,237,107,248,248,199,248,147,63,237,107 +DB 134,134,34,134,68,164,17,194,134,134,34,134,68,164,17,194 +DB 24,35,198,232,135,184,1,79 +DB 54,166,210,245,121,111,145,82 +DB 96,188,155,142,163,12,123,53 +DB 29,224,215,194,46,75,254,87 +DB 21,119,55,229,159,240,74,218 +DB 88,201,41,10,177,160,107,133 +DB 189,93,16,244,203,62,5,103 +DB 228,39,65,139,167,125,149,216 +DB 251,238,124,102,221,23,71,158 +DB 202,45,191,7,173,90,131,51 +EXTERN __imp_RtlVirtualUnwind + +ALIGN 16 +se_handler: + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] + + lea r10,[$L$prologue] + cmp rbx,r10 + jb NEAR $L$in_prologue + + mov rax,QWORD[152+r8] + + lea r10,[$L$epilogue] + cmp rbx,r10 + jae NEAR $L$in_prologue + + mov rax,QWORD[((128+32))+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0xa548f3fc + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret + + +section .pdata rdata align=4 +ALIGN 4 + DD $L$SEH_begin_whirlpool_block wrt ..imagebase + DD $L$SEH_end_whirlpool_block wrt ..imagebase + DD $L$SEH_info_whirlpool_block wrt ..imagebase + +section .xdata rdata align=8 +ALIGN 8 +$L$SEH_info_whirlpool_block: +DB 9,0,0,0 + DD se_handler wrt ..imagebase diff --git a/vere/ext/openssl/gen/windows-x86_64/crypto/x86_64cpuid.asm b/vere/ext/openssl/gen/windows-x86_64/crypto/x86_64cpuid.asm new file mode 100644 index 0000000..440238d --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/crypto/x86_64cpuid.asm @@ -0,0 +1,481 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +EXTERN OPENSSL_cpuid_setup + +section .CRT$XCU rdata align=8 + DQ OPENSSL_cpuid_setup + + +common OPENSSL_ia32cap_P 16 + +section .text code align=64 + + +global OPENSSL_atomic_add + +ALIGN 16 +OPENSSL_atomic_add: + + mov eax,DWORD[rcx] +$L$spin: lea r8,[rax*1+rdx] +DB 0xf0 + cmpxchg DWORD[rcx],r8d + jne NEAR $L$spin + mov eax,r8d +DB 0x48,0x98 + DB 0F3h,0C3h ;repret + + + +global OPENSSL_rdtsc + +ALIGN 16 +OPENSSL_rdtsc: + + rdtsc + shl rdx,32 + or rax,rdx + DB 0F3h,0C3h ;repret + + + +global OPENSSL_ia32_cpuid + +ALIGN 16 +OPENSSL_ia32_cpuid: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_OPENSSL_ia32_cpuid: + mov rdi,rcx + + + + mov r8,rbx + + + xor eax,eax + mov QWORD[8+rdi],rax + cpuid + mov r11d,eax + + xor eax,eax + cmp ebx,0x756e6547 + setne al + mov r9d,eax + cmp edx,0x49656e69 + setne al + or r9d,eax + cmp ecx,0x6c65746e + setne al + or r9d,eax + jz NEAR $L$intel + + cmp ebx,0x68747541 + setne al + mov r10d,eax + cmp edx,0x69746E65 + setne al + or r10d,eax + cmp ecx,0x444D4163 + setne al + or r10d,eax + jnz NEAR $L$intel + + + mov eax,0x80000000 + cpuid + cmp eax,0x80000001 + jb NEAR $L$intel + mov r10d,eax + mov eax,0x80000001 + cpuid + or r9d,ecx + and r9d,0x00000801 + + cmp r10d,0x80000008 + jb NEAR $L$intel + + mov eax,0x80000008 + cpuid + movzx r10,cl + inc r10 + + mov eax,1 + cpuid + bt edx,28 + jnc NEAR $L$generic + shr ebx,16 + cmp bl,r10b + ja NEAR $L$generic + and edx,0xefffffff + jmp NEAR $L$generic + +$L$intel: + cmp r11d,4 + mov r10d,-1 + jb NEAR $L$nocacheinfo + + mov eax,4 + mov ecx,0 + cpuid + mov r10d,eax + shr r10d,14 + and r10d,0xfff + +$L$nocacheinfo: + mov eax,1 + cpuid + movd xmm0,eax + and edx,0xbfefffff + cmp r9d,0 + jne NEAR $L$notintel + or edx,0x40000000 + and ah,15 + cmp ah,15 + jne NEAR $L$notP4 + or edx,0x00100000 +$L$notP4: + cmp ah,6 + jne NEAR $L$notintel + and eax,0x0fff0ff0 + cmp eax,0x00050670 + je NEAR $L$knights + cmp eax,0x00080650 + jne NEAR $L$notintel +$L$knights: + and ecx,0xfbffffff + +$L$notintel: + bt edx,28 + jnc NEAR $L$generic + and edx,0xefffffff + cmp r10d,0 + je NEAR $L$generic + + or edx,0x10000000 + shr ebx,16 + cmp bl,1 + ja NEAR $L$generic + and edx,0xefffffff +$L$generic: + and r9d,0x00000800 + and ecx,0xfffff7ff + or r9d,ecx + + mov r10d,edx + + cmp r11d,7 + jb NEAR $L$no_extended_info + mov eax,7 + xor ecx,ecx + cpuid + bt r9d,26 + jc NEAR $L$notknights + and ebx,0xfff7ffff +$L$notknights: + movd eax,xmm0 + and eax,0x0fff0ff0 + cmp eax,0x00050650 + jne NEAR $L$notskylakex + and ebx,0xfffeffff + +$L$notskylakex: + mov DWORD[8+rdi],ebx + mov DWORD[12+rdi],ecx +$L$no_extended_info: + + bt r9d,27 + jnc NEAR $L$clear_avx + xor ecx,ecx +DB 0x0f,0x01,0xd0 + and eax,0xe6 + cmp eax,0xe6 + je NEAR $L$done + and DWORD[8+rdi],0x3fdeffff + + + + + and eax,6 + cmp eax,6 + je NEAR $L$done +$L$clear_avx: + mov eax,0xefffe7ff + and r9d,eax + mov eax,0x3fdeffdf + and DWORD[8+rdi],eax +$L$done: + shl r9,32 + mov eax,r10d + mov rbx,r8 + + or rax,r9 + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_OPENSSL_ia32_cpuid: + +global OPENSSL_cleanse + +ALIGN 16 +OPENSSL_cleanse: + + xor rax,rax + cmp rdx,15 + jae NEAR $L$ot + cmp rdx,0 + je NEAR $L$ret +$L$ittle: + mov BYTE[rcx],al + sub rdx,1 + lea rcx,[1+rcx] + jnz NEAR $L$ittle +$L$ret: + DB 0F3h,0C3h ;repret +ALIGN 16 +$L$ot: + test rcx,7 + jz NEAR $L$aligned + mov BYTE[rcx],al + lea rdx,[((-1))+rdx] + lea rcx,[1+rcx] + jmp NEAR $L$ot +$L$aligned: + mov QWORD[rcx],rax + lea rdx,[((-8))+rdx] + test rdx,-8 + lea rcx,[8+rcx] + jnz NEAR $L$aligned + cmp rdx,0 + jne NEAR $L$ittle + DB 0F3h,0C3h ;repret + + + +global CRYPTO_memcmp + +ALIGN 16 +CRYPTO_memcmp: + + xor rax,rax + xor r10,r10 + cmp r8,0 + je NEAR $L$no_data + cmp r8,16 + jne NEAR $L$oop_cmp + mov r10,QWORD[rcx] + mov r11,QWORD[8+rcx] + mov r8,1 + xor r10,QWORD[rdx] + xor r11,QWORD[8+rdx] + or r10,r11 + cmovnz rax,r8 + DB 0F3h,0C3h ;repret + +ALIGN 16 +$L$oop_cmp: + mov r10b,BYTE[rcx] + lea rcx,[1+rcx] + xor r10b,BYTE[rdx] + lea rdx,[1+rdx] + or al,r10b + dec r8 + jnz NEAR $L$oop_cmp + neg rax + shr rax,63 +$L$no_data: + DB 0F3h,0C3h ;repret + + +global OPENSSL_wipe_cpu + +ALIGN 16 +OPENSSL_wipe_cpu: + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + xor rcx,rcx + xor rdx,rdx + xor r8,r8 + xor r9,r9 + xor r10,r10 + xor r11,r11 + lea rax,[8+rsp] + DB 0F3h,0C3h ;repret + +global OPENSSL_instrument_bus + +ALIGN 16 +OPENSSL_instrument_bus: + + mov r10,rcx + mov rcx,rdx + mov r11,rdx + + rdtsc + mov r8d,eax + mov r9d,0 + clflush [r10] +DB 0xf0 + add DWORD[r10],r9d + jmp NEAR $L$oop +ALIGN 16 +$L$oop: rdtsc + mov edx,eax + sub eax,r8d + mov r8d,edx + mov r9d,eax + clflush [r10] +DB 0xf0 + add DWORD[r10],eax + lea r10,[4+r10] + sub rcx,1 + jnz NEAR $L$oop + + mov rax,r11 + DB 0F3h,0C3h ;repret + + + +global OPENSSL_instrument_bus2 + +ALIGN 16 +OPENSSL_instrument_bus2: + + mov r10,rcx + mov rcx,rdx + mov r11,r8 + mov QWORD[8+rsp],rcx + + rdtsc + mov r8d,eax + mov r9d,0 + + clflush [r10] +DB 0xf0 + add DWORD[r10],r9d + + rdtsc + mov edx,eax + sub eax,r8d + mov r8d,edx + mov r9d,eax +$L$oop2: + clflush [r10] +DB 0xf0 + add DWORD[r10],eax + + sub r11,1 + jz NEAR $L$done2 + + rdtsc + mov edx,eax + sub eax,r8d + mov r8d,edx + cmp eax,r9d + mov r9d,eax + mov edx,0 + setne dl + sub rcx,rdx + lea r10,[rdx*4+r10] + jnz NEAR $L$oop2 + +$L$done2: + mov rax,QWORD[8+rsp] + sub rax,rcx + DB 0F3h,0C3h ;repret + + +global OPENSSL_ia32_rdrand_bytes + +ALIGN 16 +OPENSSL_ia32_rdrand_bytes: + + xor rax,rax + cmp rdx,0 + je NEAR $L$done_rdrand_bytes + + mov r11,8 +$L$oop_rdrand_bytes: +DB 73,15,199,242 + jc NEAR $L$break_rdrand_bytes + dec r11 + jnz NEAR $L$oop_rdrand_bytes + jmp NEAR $L$done_rdrand_bytes + +ALIGN 16 +$L$break_rdrand_bytes: + cmp rdx,8 + jb NEAR $L$tail_rdrand_bytes + mov QWORD[rcx],r10 + lea rcx,[8+rcx] + add rax,8 + sub rdx,8 + jz NEAR $L$done_rdrand_bytes + mov r11,8 + jmp NEAR $L$oop_rdrand_bytes + +ALIGN 16 +$L$tail_rdrand_bytes: + mov BYTE[rcx],r10b + lea rcx,[1+rcx] + inc rax + shr r10,8 + dec rdx + jnz NEAR $L$tail_rdrand_bytes + +$L$done_rdrand_bytes: + xor r10,r10 + DB 0F3h,0C3h ;repret + + +global OPENSSL_ia32_rdseed_bytes + +ALIGN 16 +OPENSSL_ia32_rdseed_bytes: + + xor rax,rax + cmp rdx,0 + je NEAR $L$done_rdseed_bytes + + mov r11,8 +$L$oop_rdseed_bytes: +DB 73,15,199,250 + jc NEAR $L$break_rdseed_bytes + dec r11 + jnz NEAR $L$oop_rdseed_bytes + jmp NEAR $L$done_rdseed_bytes + +ALIGN 16 +$L$break_rdseed_bytes: + cmp rdx,8 + jb NEAR $L$tail_rdseed_bytes + mov QWORD[rcx],r10 + lea rcx,[8+rcx] + add rax,8 + sub rdx,8 + jz NEAR $L$done_rdseed_bytes + mov r11,8 + jmp NEAR $L$oop_rdseed_bytes + +ALIGN 16 +$L$tail_rdseed_bytes: + mov BYTE[rcx],r10b + lea rcx,[1+rcx] + inc rax + shr r10,8 + dec rdx + jnz NEAR $L$tail_rdseed_bytes + +$L$done_rdseed_bytes: + xor r10,r10 + DB 0F3h,0C3h ;repret + + diff --git a/vere/ext/openssl/gen/windows-x86_64/engines/e_padlock-x86_64.asm b/vere/ext/openssl/gen/windows-x86_64/engines/e_padlock-x86_64.asm new file mode 100644 index 0000000..bc96611 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/engines/e_padlock-x86_64.asm @@ -0,0 +1,1182 @@ +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +global padlock_capability + +ALIGN 16 +padlock_capability: + mov r8,rbx + xor eax,eax + cpuid + xor eax,eax + cmp ebx,0x746e6543 + jne NEAR $L$zhaoxin + cmp edx,0x48727561 + jne NEAR $L$noluck + cmp ecx,0x736c7561 + jne NEAR $L$noluck + jmp NEAR $L$zhaoxinEnd +$L$zhaoxin: + cmp ebx,0x68532020 + jne NEAR $L$noluck + cmp edx,0x68676e61 + jne NEAR $L$noluck + cmp ecx,0x20206961 + jne NEAR $L$noluck +$L$zhaoxinEnd: + mov eax,0xC0000000 + cpuid + mov edx,eax + xor eax,eax + cmp edx,0xC0000001 + jb NEAR $L$noluck + mov eax,0xC0000001 + cpuid + mov eax,edx + and eax,0xffffffef + or eax,0x10 +$L$noluck: + mov rbx,r8 + DB 0F3h,0C3h ;repret + + +global padlock_key_bswap + +ALIGN 16 +padlock_key_bswap: + mov edx,DWORD[240+rcx] + inc edx + shl edx,2 +$L$bswap_loop: + mov eax,DWORD[rcx] + bswap eax + mov DWORD[rcx],eax + lea rcx,[4+rcx] + sub edx,1 + jnz NEAR $L$bswap_loop + DB 0F3h,0C3h ;repret + + +global padlock_verify_context + +ALIGN 16 +padlock_verify_context: + mov rdx,rcx + pushf + lea rax,[$L$padlock_saved_context] + call _padlock_verify_ctx + lea rsp,[8+rsp] + DB 0F3h,0C3h ;repret + + + +ALIGN 16 +_padlock_verify_ctx: + mov r8,QWORD[8+rsp] + bt r8,30 + jnc NEAR $L$verified + cmp rdx,QWORD[rax] + je NEAR $L$verified + pushf + popf +$L$verified: + mov QWORD[rax],rdx + DB 0F3h,0C3h ;repret + + +global padlock_reload_key + +ALIGN 16 +padlock_reload_key: + pushf + popf + DB 0F3h,0C3h ;repret + + +global padlock_aes_block + +ALIGN 16 +padlock_aes_block: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_padlock_aes_block: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + mov r8,rbx + mov rcx,1 + lea rbx,[32+rdx] + lea rdx,[16+rdx] +DB 0xf3,0x0f,0xa7,0xc8 + mov rbx,r8 + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_padlock_aes_block: + +global padlock_xstore + +ALIGN 16 +padlock_xstore: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_padlock_xstore: + mov rdi,rcx + mov rsi,rdx + + + mov edx,esi +DB 0x0f,0xa7,0xc0 + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_padlock_xstore: + +global padlock_sha1_oneshot + +ALIGN 16 +padlock_sha1_oneshot: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_padlock_sha1_oneshot: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + mov rcx,rdx + mov rdx,rdi + movups xmm0,XMMWORD[rdi] + sub rsp,128+8 + mov eax,DWORD[16+rdi] + movaps XMMWORD[rsp],xmm0 + mov rdi,rsp + mov DWORD[16+rsp],eax + xor rax,rax +DB 0xf3,0x0f,0xa6,0xc8 + movaps xmm0,XMMWORD[rsp] + mov eax,DWORD[16+rsp] + add rsp,128+8 + movups XMMWORD[rdx],xmm0 + mov DWORD[16+rdx],eax + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_padlock_sha1_oneshot: + +global padlock_sha1_blocks + +ALIGN 16 +padlock_sha1_blocks: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_padlock_sha1_blocks: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + mov rcx,rdx + mov rdx,rdi + movups xmm0,XMMWORD[rdi] + sub rsp,128+8 + mov eax,DWORD[16+rdi] + movaps XMMWORD[rsp],xmm0 + mov rdi,rsp + mov DWORD[16+rsp],eax + mov rax,-1 +DB 0xf3,0x0f,0xa6,0xc8 + movaps xmm0,XMMWORD[rsp] + mov eax,DWORD[16+rsp] + add rsp,128+8 + movups XMMWORD[rdx],xmm0 + mov DWORD[16+rdx],eax + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_padlock_sha1_blocks: + +global padlock_sha256_oneshot + +ALIGN 16 +padlock_sha256_oneshot: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_padlock_sha256_oneshot: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + mov rcx,rdx + mov rdx,rdi + movups xmm0,XMMWORD[rdi] + sub rsp,128+8 + movups xmm1,XMMWORD[16+rdi] + movaps XMMWORD[rsp],xmm0 + mov rdi,rsp + movaps XMMWORD[16+rsp],xmm1 + xor rax,rax +DB 0xf3,0x0f,0xa6,0xd0 + movaps xmm0,XMMWORD[rsp] + movaps xmm1,XMMWORD[16+rsp] + add rsp,128+8 + movups XMMWORD[rdx],xmm0 + movups XMMWORD[16+rdx],xmm1 + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_padlock_sha256_oneshot: + +global padlock_sha256_blocks + +ALIGN 16 +padlock_sha256_blocks: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_padlock_sha256_blocks: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + mov rcx,rdx + mov rdx,rdi + movups xmm0,XMMWORD[rdi] + sub rsp,128+8 + movups xmm1,XMMWORD[16+rdi] + movaps XMMWORD[rsp],xmm0 + mov rdi,rsp + movaps XMMWORD[16+rsp],xmm1 + mov rax,-1 +DB 0xf3,0x0f,0xa6,0xd0 + movaps xmm0,XMMWORD[rsp] + movaps xmm1,XMMWORD[16+rsp] + add rsp,128+8 + movups XMMWORD[rdx],xmm0 + movups XMMWORD[16+rdx],xmm1 + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_padlock_sha256_blocks: + +global padlock_sha512_blocks + +ALIGN 16 +padlock_sha512_blocks: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_padlock_sha512_blocks: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + mov rcx,rdx + mov rdx,rdi + movups xmm0,XMMWORD[rdi] + sub rsp,128+8 + movups xmm1,XMMWORD[16+rdi] + movups xmm2,XMMWORD[32+rdi] + movups xmm3,XMMWORD[48+rdi] + movaps XMMWORD[rsp],xmm0 + mov rdi,rsp + movaps XMMWORD[16+rsp],xmm1 + movaps XMMWORD[32+rsp],xmm2 + movaps XMMWORD[48+rsp],xmm3 +DB 0xf3,0x0f,0xa6,0xe0 + movaps xmm0,XMMWORD[rsp] + movaps xmm1,XMMWORD[16+rsp] + movaps xmm2,XMMWORD[32+rsp] + movaps xmm3,XMMWORD[48+rsp] + add rsp,128+8 + movups XMMWORD[rdx],xmm0 + movups XMMWORD[16+rdx],xmm1 + movups XMMWORD[32+rdx],xmm2 + movups XMMWORD[48+rdx],xmm3 + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_padlock_sha512_blocks: +global padlock_ecb_encrypt + +ALIGN 16 +padlock_ecb_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_padlock_ecb_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + push rbp + push rbx + + xor eax,eax + test rdx,15 + jnz NEAR $L$ecb_abort + test rcx,15 + jnz NEAR $L$ecb_abort + lea rax,[$L$padlock_saved_context] + pushf + cld + call _padlock_verify_ctx + lea rdx,[16+rdx] + xor eax,eax + xor ebx,ebx + test DWORD[rdx],32 + jnz NEAR $L$ecb_aligned + test rdi,0x0f + setz al + test rsi,0x0f + setz bl + test eax,ebx + jnz NEAR $L$ecb_aligned + neg rax + mov rbx,512 + not rax + lea rbp,[rsp] + cmp rcx,rbx + cmovc rbx,rcx + and rax,rbx + mov rbx,rcx + neg rax + and rbx,512-1 + lea rsp,[rbp*1+rax] + mov rax,512 + cmovz rbx,rax + cmp rcx,rbx + ja NEAR $L$ecb_loop + mov rax,rsi + cmp rbp,rsp + cmove rax,rdi + add rax,rcx + neg rax + and rax,0xfff + cmp rax,128 + mov rax,-128 + cmovae rax,rbx + and rbx,rax + jz NEAR $L$ecb_unaligned_tail + jmp NEAR $L$ecb_loop +ALIGN 16 +$L$ecb_loop: + cmp rbx,rcx + cmova rbx,rcx + mov r8,rdi + mov r9,rsi + mov r10,rcx + mov rcx,rbx + mov r11,rbx + test rdi,0x0f + cmovnz rdi,rsp + test rsi,0x0f + jz NEAR $L$ecb_inp_aligned + shr rcx,3 +DB 0xf3,0x48,0xa5 + sub rdi,rbx + mov rcx,rbx + mov rsi,rdi +$L$ecb_inp_aligned: + lea rax,[((-16))+rdx] + lea rbx,[16+rdx] + shr rcx,4 +DB 0xf3,0x0f,0xa7,200 + mov rdi,r8 + mov rbx,r11 + test rdi,0x0f + jz NEAR $L$ecb_out_aligned + mov rcx,rbx + lea rsi,[rsp] + shr rcx,3 +DB 0xf3,0x48,0xa5 + sub rdi,rbx +$L$ecb_out_aligned: + mov rsi,r9 + mov rcx,r10 + add rdi,rbx + add rsi,rbx + sub rcx,rbx + mov rbx,512 + jz NEAR $L$ecb_break + cmp rcx,rbx + jae NEAR $L$ecb_loop +$L$ecb_unaligned_tail: + xor eax,eax + cmp rbp,rsp + cmove rax,rcx + mov r8,rdi + mov rbx,rcx + sub rsp,rax + shr rcx,3 + lea rdi,[rsp] +DB 0xf3,0x48,0xa5 + mov rsi,rsp + mov rdi,r8 + mov rcx,rbx + jmp NEAR $L$ecb_loop +ALIGN 16 +$L$ecb_break: + cmp rsp,rbp + je NEAR $L$ecb_done + + pxor xmm0,xmm0 + lea rax,[rsp] +$L$ecb_bzero: + movaps XMMWORD[rax],xmm0 + lea rax,[16+rax] + cmp rbp,rax + ja NEAR $L$ecb_bzero + +$L$ecb_done: + lea rsp,[rbp] + jmp NEAR $L$ecb_exit + +ALIGN 16 +$L$ecb_aligned: + lea rbp,[rcx*1+rsi] + neg rbp + and rbp,0xfff + xor eax,eax + cmp rbp,128 + mov rbp,128-1 + cmovae rbp,rax + and rbp,rcx + sub rcx,rbp + jz NEAR $L$ecb_aligned_tail + lea rax,[((-16))+rdx] + lea rbx,[16+rdx] + shr rcx,4 +DB 0xf3,0x0f,0xa7,200 + test rbp,rbp + jz NEAR $L$ecb_exit + +$L$ecb_aligned_tail: + mov r8,rdi + mov rbx,rbp + mov rcx,rbp + lea rbp,[rsp] + sub rsp,rcx + shr rcx,3 + lea rdi,[rsp] +DB 0xf3,0x48,0xa5 + lea rdi,[r8] + lea rsi,[rsp] + mov rcx,rbx + jmp NEAR $L$ecb_loop +$L$ecb_exit: + mov eax,1 + lea rsp,[8+rsp] +$L$ecb_abort: + pop rbx + pop rbp + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_padlock_ecb_encrypt: +global padlock_cbc_encrypt + +ALIGN 16 +padlock_cbc_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_padlock_cbc_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + push rbp + push rbx + + xor eax,eax + test rdx,15 + jnz NEAR $L$cbc_abort + test rcx,15 + jnz NEAR $L$cbc_abort + lea rax,[$L$padlock_saved_context] + pushf + cld + call _padlock_verify_ctx + lea rdx,[16+rdx] + xor eax,eax + xor ebx,ebx + test DWORD[rdx],32 + jnz NEAR $L$cbc_aligned + test rdi,0x0f + setz al + test rsi,0x0f + setz bl + test eax,ebx + jnz NEAR $L$cbc_aligned + neg rax + mov rbx,512 + not rax + lea rbp,[rsp] + cmp rcx,rbx + cmovc rbx,rcx + and rax,rbx + mov rbx,rcx + neg rax + and rbx,512-1 + lea rsp,[rbp*1+rax] + mov rax,512 + cmovz rbx,rax + cmp rcx,rbx + ja NEAR $L$cbc_loop + mov rax,rsi + cmp rbp,rsp + cmove rax,rdi + add rax,rcx + neg rax + and rax,0xfff + cmp rax,64 + mov rax,-64 + cmovae rax,rbx + and rbx,rax + jz NEAR $L$cbc_unaligned_tail + jmp NEAR $L$cbc_loop +ALIGN 16 +$L$cbc_loop: + cmp rbx,rcx + cmova rbx,rcx + mov r8,rdi + mov r9,rsi + mov r10,rcx + mov rcx,rbx + mov r11,rbx + test rdi,0x0f + cmovnz rdi,rsp + test rsi,0x0f + jz NEAR $L$cbc_inp_aligned + shr rcx,3 +DB 0xf3,0x48,0xa5 + sub rdi,rbx + mov rcx,rbx + mov rsi,rdi +$L$cbc_inp_aligned: + lea rax,[((-16))+rdx] + lea rbx,[16+rdx] + shr rcx,4 +DB 0xf3,0x0f,0xa7,208 + movdqa xmm0,XMMWORD[rax] + movdqa XMMWORD[(-16)+rdx],xmm0 + mov rdi,r8 + mov rbx,r11 + test rdi,0x0f + jz NEAR $L$cbc_out_aligned + mov rcx,rbx + lea rsi,[rsp] + shr rcx,3 +DB 0xf3,0x48,0xa5 + sub rdi,rbx +$L$cbc_out_aligned: + mov rsi,r9 + mov rcx,r10 + add rdi,rbx + add rsi,rbx + sub rcx,rbx + mov rbx,512 + jz NEAR $L$cbc_break + cmp rcx,rbx + jae NEAR $L$cbc_loop +$L$cbc_unaligned_tail: + xor eax,eax + cmp rbp,rsp + cmove rax,rcx + mov r8,rdi + mov rbx,rcx + sub rsp,rax + shr rcx,3 + lea rdi,[rsp] +DB 0xf3,0x48,0xa5 + mov rsi,rsp + mov rdi,r8 + mov rcx,rbx + jmp NEAR $L$cbc_loop +ALIGN 16 +$L$cbc_break: + cmp rsp,rbp + je NEAR $L$cbc_done + + pxor xmm0,xmm0 + lea rax,[rsp] +$L$cbc_bzero: + movaps XMMWORD[rax],xmm0 + lea rax,[16+rax] + cmp rbp,rax + ja NEAR $L$cbc_bzero + +$L$cbc_done: + lea rsp,[rbp] + jmp NEAR $L$cbc_exit + +ALIGN 16 +$L$cbc_aligned: + lea rbp,[rcx*1+rsi] + neg rbp + and rbp,0xfff + xor eax,eax + cmp rbp,64 + mov rbp,64-1 + cmovae rbp,rax + and rbp,rcx + sub rcx,rbp + jz NEAR $L$cbc_aligned_tail + lea rax,[((-16))+rdx] + lea rbx,[16+rdx] + shr rcx,4 +DB 0xf3,0x0f,0xa7,208 + movdqa xmm0,XMMWORD[rax] + movdqa XMMWORD[(-16)+rdx],xmm0 + test rbp,rbp + jz NEAR $L$cbc_exit + +$L$cbc_aligned_tail: + mov r8,rdi + mov rbx,rbp + mov rcx,rbp + lea rbp,[rsp] + sub rsp,rcx + shr rcx,3 + lea rdi,[rsp] +DB 0xf3,0x48,0xa5 + lea rdi,[r8] + lea rsi,[rsp] + mov rcx,rbx + jmp NEAR $L$cbc_loop +$L$cbc_exit: + mov eax,1 + lea rsp,[8+rsp] +$L$cbc_abort: + pop rbx + pop rbp + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_padlock_cbc_encrypt: +global padlock_cfb_encrypt + +ALIGN 16 +padlock_cfb_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_padlock_cfb_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + push rbp + push rbx + + xor eax,eax + test rdx,15 + jnz NEAR $L$cfb_abort + test rcx,15 + jnz NEAR $L$cfb_abort + lea rax,[$L$padlock_saved_context] + pushf + cld + call _padlock_verify_ctx + lea rdx,[16+rdx] + xor eax,eax + xor ebx,ebx + test DWORD[rdx],32 + jnz NEAR $L$cfb_aligned + test rdi,0x0f + setz al + test rsi,0x0f + setz bl + test eax,ebx + jnz NEAR $L$cfb_aligned + neg rax + mov rbx,512 + not rax + lea rbp,[rsp] + cmp rcx,rbx + cmovc rbx,rcx + and rax,rbx + mov rbx,rcx + neg rax + and rbx,512-1 + lea rsp,[rbp*1+rax] + mov rax,512 + cmovz rbx,rax + jmp NEAR $L$cfb_loop +ALIGN 16 +$L$cfb_loop: + cmp rbx,rcx + cmova rbx,rcx + mov r8,rdi + mov r9,rsi + mov r10,rcx + mov rcx,rbx + mov r11,rbx + test rdi,0x0f + cmovnz rdi,rsp + test rsi,0x0f + jz NEAR $L$cfb_inp_aligned + shr rcx,3 +DB 0xf3,0x48,0xa5 + sub rdi,rbx + mov rcx,rbx + mov rsi,rdi +$L$cfb_inp_aligned: + lea rax,[((-16))+rdx] + lea rbx,[16+rdx] + shr rcx,4 +DB 0xf3,0x0f,0xa7,224 + movdqa xmm0,XMMWORD[rax] + movdqa XMMWORD[(-16)+rdx],xmm0 + mov rdi,r8 + mov rbx,r11 + test rdi,0x0f + jz NEAR $L$cfb_out_aligned + mov rcx,rbx + lea rsi,[rsp] + shr rcx,3 +DB 0xf3,0x48,0xa5 + sub rdi,rbx +$L$cfb_out_aligned: + mov rsi,r9 + mov rcx,r10 + add rdi,rbx + add rsi,rbx + sub rcx,rbx + mov rbx,512 + jnz NEAR $L$cfb_loop + cmp rsp,rbp + je NEAR $L$cfb_done + + pxor xmm0,xmm0 + lea rax,[rsp] +$L$cfb_bzero: + movaps XMMWORD[rax],xmm0 + lea rax,[16+rax] + cmp rbp,rax + ja NEAR $L$cfb_bzero + +$L$cfb_done: + lea rsp,[rbp] + jmp NEAR $L$cfb_exit + +ALIGN 16 +$L$cfb_aligned: + lea rax,[((-16))+rdx] + lea rbx,[16+rdx] + shr rcx,4 +DB 0xf3,0x0f,0xa7,224 + movdqa xmm0,XMMWORD[rax] + movdqa XMMWORD[(-16)+rdx],xmm0 +$L$cfb_exit: + mov eax,1 + lea rsp,[8+rsp] +$L$cfb_abort: + pop rbx + pop rbp + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_padlock_cfb_encrypt: +global padlock_ofb_encrypt + +ALIGN 16 +padlock_ofb_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_padlock_ofb_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + push rbp + push rbx + + xor eax,eax + test rdx,15 + jnz NEAR $L$ofb_abort + test rcx,15 + jnz NEAR $L$ofb_abort + lea rax,[$L$padlock_saved_context] + pushf + cld + call _padlock_verify_ctx + lea rdx,[16+rdx] + xor eax,eax + xor ebx,ebx + test DWORD[rdx],32 + jnz NEAR $L$ofb_aligned + test rdi,0x0f + setz al + test rsi,0x0f + setz bl + test eax,ebx + jnz NEAR $L$ofb_aligned + neg rax + mov rbx,512 + not rax + lea rbp,[rsp] + cmp rcx,rbx + cmovc rbx,rcx + and rax,rbx + mov rbx,rcx + neg rax + and rbx,512-1 + lea rsp,[rbp*1+rax] + mov rax,512 + cmovz rbx,rax + jmp NEAR $L$ofb_loop +ALIGN 16 +$L$ofb_loop: + cmp rbx,rcx + cmova rbx,rcx + mov r8,rdi + mov r9,rsi + mov r10,rcx + mov rcx,rbx + mov r11,rbx + test rdi,0x0f + cmovnz rdi,rsp + test rsi,0x0f + jz NEAR $L$ofb_inp_aligned + shr rcx,3 +DB 0xf3,0x48,0xa5 + sub rdi,rbx + mov rcx,rbx + mov rsi,rdi +$L$ofb_inp_aligned: + lea rax,[((-16))+rdx] + lea rbx,[16+rdx] + shr rcx,4 +DB 0xf3,0x0f,0xa7,232 + movdqa xmm0,XMMWORD[rax] + movdqa XMMWORD[(-16)+rdx],xmm0 + mov rdi,r8 + mov rbx,r11 + test rdi,0x0f + jz NEAR $L$ofb_out_aligned + mov rcx,rbx + lea rsi,[rsp] + shr rcx,3 +DB 0xf3,0x48,0xa5 + sub rdi,rbx +$L$ofb_out_aligned: + mov rsi,r9 + mov rcx,r10 + add rdi,rbx + add rsi,rbx + sub rcx,rbx + mov rbx,512 + jnz NEAR $L$ofb_loop + cmp rsp,rbp + je NEAR $L$ofb_done + + pxor xmm0,xmm0 + lea rax,[rsp] +$L$ofb_bzero: + movaps XMMWORD[rax],xmm0 + lea rax,[16+rax] + cmp rbp,rax + ja NEAR $L$ofb_bzero + +$L$ofb_done: + lea rsp,[rbp] + jmp NEAR $L$ofb_exit + +ALIGN 16 +$L$ofb_aligned: + lea rax,[((-16))+rdx] + lea rbx,[16+rdx] + shr rcx,4 +DB 0xf3,0x0f,0xa7,232 + movdqa xmm0,XMMWORD[rax] + movdqa XMMWORD[(-16)+rdx],xmm0 +$L$ofb_exit: + mov eax,1 + lea rsp,[8+rsp] +$L$ofb_abort: + pop rbx + pop rbp + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_padlock_ofb_encrypt: +global padlock_ctr32_encrypt + +ALIGN 16 +padlock_ctr32_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_padlock_ctr32_encrypt: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + + + push rbp + push rbx + + xor eax,eax + test rdx,15 + jnz NEAR $L$ctr32_abort + test rcx,15 + jnz NEAR $L$ctr32_abort + lea rax,[$L$padlock_saved_context] + pushf + cld + call _padlock_verify_ctx + lea rdx,[16+rdx] + xor eax,eax + xor ebx,ebx + test DWORD[rdx],32 + jnz NEAR $L$ctr32_aligned + test rdi,0x0f + setz al + test rsi,0x0f + setz bl + test eax,ebx + jnz NEAR $L$ctr32_aligned + neg rax + mov rbx,512 + not rax + lea rbp,[rsp] + cmp rcx,rbx + cmovc rbx,rcx + and rax,rbx + mov rbx,rcx + neg rax + and rbx,512-1 + lea rsp,[rbp*1+rax] + mov rax,512 + cmovz rbx,rax +$L$ctr32_reenter: + mov eax,DWORD[((-4))+rdx] + bswap eax + neg eax + and eax,31 + mov rbx,512 + shl eax,4 + cmovz rax,rbx + cmp rcx,rax + cmova rbx,rax + cmovbe rbx,rcx + cmp rcx,rbx + ja NEAR $L$ctr32_loop + mov rax,rsi + cmp rbp,rsp + cmove rax,rdi + add rax,rcx + neg rax + and rax,0xfff + cmp rax,32 + mov rax,-32 + cmovae rax,rbx + and rbx,rax + jz NEAR $L$ctr32_unaligned_tail + jmp NEAR $L$ctr32_loop +ALIGN 16 +$L$ctr32_loop: + cmp rbx,rcx + cmova rbx,rcx + mov r8,rdi + mov r9,rsi + mov r10,rcx + mov rcx,rbx + mov r11,rbx + test rdi,0x0f + cmovnz rdi,rsp + test rsi,0x0f + jz NEAR $L$ctr32_inp_aligned + shr rcx,3 +DB 0xf3,0x48,0xa5 + sub rdi,rbx + mov rcx,rbx + mov rsi,rdi +$L$ctr32_inp_aligned: + lea rax,[((-16))+rdx] + lea rbx,[16+rdx] + shr rcx,4 +DB 0xf3,0x0f,0xa7,216 + mov eax,DWORD[((-4))+rdx] + test eax,0xffff0000 + jnz NEAR $L$ctr32_no_carry + bswap eax + add eax,0x10000 + bswap eax + mov DWORD[((-4))+rdx],eax +$L$ctr32_no_carry: + mov rdi,r8 + mov rbx,r11 + test rdi,0x0f + jz NEAR $L$ctr32_out_aligned + mov rcx,rbx + lea rsi,[rsp] + shr rcx,3 +DB 0xf3,0x48,0xa5 + sub rdi,rbx +$L$ctr32_out_aligned: + mov rsi,r9 + mov rcx,r10 + add rdi,rbx + add rsi,rbx + sub rcx,rbx + mov rbx,512 + jz NEAR $L$ctr32_break + cmp rcx,rbx + jae NEAR $L$ctr32_loop + mov rbx,rcx + mov rax,rsi + cmp rbp,rsp + cmove rax,rdi + add rax,rcx + neg rax + and rax,0xfff + cmp rax,32 + mov rax,-32 + cmovae rax,rbx + and rbx,rax + jnz NEAR $L$ctr32_loop +$L$ctr32_unaligned_tail: + xor eax,eax + cmp rbp,rsp + cmove rax,rcx + mov r8,rdi + mov rbx,rcx + sub rsp,rax + shr rcx,3 + lea rdi,[rsp] +DB 0xf3,0x48,0xa5 + mov rsi,rsp + mov rdi,r8 + mov rcx,rbx + jmp NEAR $L$ctr32_loop +ALIGN 16 +$L$ctr32_break: + cmp rsp,rbp + je NEAR $L$ctr32_done + + pxor xmm0,xmm0 + lea rax,[rsp] +$L$ctr32_bzero: + movaps XMMWORD[rax],xmm0 + lea rax,[16+rax] + cmp rbp,rax + ja NEAR $L$ctr32_bzero + +$L$ctr32_done: + lea rsp,[rbp] + jmp NEAR $L$ctr32_exit + +ALIGN 16 +$L$ctr32_aligned: + mov eax,DWORD[((-4))+rdx] + bswap eax + neg eax + and eax,0xffff + mov rbx,1048576 + shl eax,4 + cmovz rax,rbx + cmp rcx,rax + cmova rbx,rax + cmovbe rbx,rcx + jbe NEAR $L$ctr32_aligned_skip + +$L$ctr32_aligned_loop: + mov r10,rcx + mov rcx,rbx + mov r11,rbx + + lea rax,[((-16))+rdx] + lea rbx,[16+rdx] + shr rcx,4 +DB 0xf3,0x0f,0xa7,216 + + mov eax,DWORD[((-4))+rdx] + bswap eax + add eax,0x10000 + bswap eax + mov DWORD[((-4))+rdx],eax + + mov rcx,r10 + sub rcx,r11 + mov rbx,1048576 + jz NEAR $L$ctr32_exit + cmp rcx,rbx + jae NEAR $L$ctr32_aligned_loop + +$L$ctr32_aligned_skip: + lea rbp,[rcx*1+rsi] + neg rbp + and rbp,0xfff + xor eax,eax + cmp rbp,32 + mov rbp,32-1 + cmovae rbp,rax + and rbp,rcx + sub rcx,rbp + jz NEAR $L$ctr32_aligned_tail + lea rax,[((-16))+rdx] + lea rbx,[16+rdx] + shr rcx,4 +DB 0xf3,0x0f,0xa7,216 + test rbp,rbp + jz NEAR $L$ctr32_exit + +$L$ctr32_aligned_tail: + mov r8,rdi + mov rbx,rbp + mov rcx,rbp + lea rbp,[rsp] + sub rsp,rcx + shr rcx,3 + lea rdi,[rsp] +DB 0xf3,0x48,0xa5 + lea rdi,[r8] + lea rsi,[rsp] + mov rcx,rbx + jmp NEAR $L$ctr32_loop +$L$ctr32_exit: + mov eax,1 + lea rsp,[8+rsp] +$L$ctr32_abort: + pop rbx + pop rbp + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_padlock_ctr32_encrypt: +DB 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,95 +DB 54,52,32,109,111,100,117,108,101,44,32,67,82,89,80,84 +DB 79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64 +DB 111,112,101,110,115,115,108,46,111,114,103,62,0 +ALIGN 16 +section .data data align=8 + +ALIGN 8 +$L$padlock_saved_context: + DQ 0 diff --git a/vere/ext/openssl/gen/windows-x86_64/include/crypto/bn_conf.h b/vere/ext/openssl/gen/windows-x86_64/include/crypto/bn_conf.h new file mode 100644 index 0000000..2077dfc --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/include/crypto/bn_conf.h @@ -0,0 +1,28 @@ +/* WARNING: do not edit! */ +/* Generated by makefile from include\crypto\bn_conf.h.in */ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_BN_CONF_H +# define OSSL_CRYPTO_BN_CONF_H + +/* + * The contents of this file are not used in the UEFI build, as + * both 32-bit and 64-bit builds are supported from a single run + * of the Configure script. + */ + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#undef SIXTY_FOUR_BIT_LONG +#define SIXTY_FOUR_BIT +#undef THIRTY_TWO_BIT + +#endif diff --git a/vere/ext/openssl/gen/windows-x86_64/include/crypto/buildinf.h b/vere/ext/openssl/gen/windows-x86_64/include/crypto/buildinf.h new file mode 100644 index 0000000..89e4e7c --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/include/crypto/buildinf.h @@ -0,0 +1,45 @@ +/* + * WARNING: do not edit! + * Generated by util/mkbuildinf.pl + * + * Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define PLATFORM "platform: VC-WIN64A" +#define DATE "built on: Thu Aug 14 13:57:20 2025 UTC" + +/* + * Generate compiler_flags as an array of individual characters. This is a + * workaround for the situation where CFLAGS gets too long for a C90 string + * literal + */ +static const char compiler_flags[] = { + 'c','o','m','p','i','l','e','r',':',' ','c','l',' ','/','Z','i', + ' ','/','F','d','o','s','s','l','_','s','t','a','t','i','c','.', + 'p','d','b',' ','/','G','s','0',' ','/','G','F',' ','/','G','y', + ' ','/','M','D',' ','/','W','3',' ','/','w','d','4','0','9','0', + ' ','/','n','o','l','o','g','o',' ','/','O','2',' ','-','D','L', + '_','E','N','D','I','A','N',' ','-','D','O','P','E','N','S','S', + 'L','_','P','I','C',' ','-','D','O','P','E','N','S','S','L','_', + 'C','P','U','I','D','_','O','B','J',' ','-','D','O','P','E','N', + 'S','S','L','_','I','A','3','2','_','S','S','E','2',' ','-','D', + 'O','P','E','N','S','S','L','_','B','N','_','A','S','M','_','M', + 'O','N','T',' ','-','D','O','P','E','N','S','S','L','_','B','N', + '_','A','S','M','_','M','O','N','T','5',' ','-','D','O','P','E', + 'N','S','S','L','_','B','N','_','A','S','M','_','G','F','2','m', + ' ','-','D','S','H','A','1','_','A','S','M',' ','-','D','S','H', + 'A','2','5','6','_','A','S','M',' ','-','D','S','H','A','5','1', + '2','_','A','S','M',' ','-','D','K','E','C','C','A','K','1','6', + '0','0','_','A','S','M',' ','-','D','R','C','4','_','A','S','M', + ' ','-','D','M','D','5','_','A','S','M',' ','-','D','A','E','S', + 'N','I','_','A','S','M',' ','-','D','V','P','A','E','S','_','A', + 'S','M',' ','-','D','G','H','A','S','H','_','A','S','M',' ','-', + 'D','E','C','P','_','N','I','S','T','Z','2','5','6','_','A','S', + 'M',' ','-','D','X','2','5','5','1','9','_','A','S','M',' ','-', + 'D','P','O','L','Y','1','3','0','5','_','A','S','M','\0' +}; diff --git a/vere/ext/openssl/gen/windows-x86_64/include/crypto/dso_conf.h b/vere/ext/openssl/gen/windows-x86_64/include/crypto/dso_conf.h new file mode 100644 index 0000000..470190d --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/include/crypto/dso_conf.h @@ -0,0 +1,16 @@ +/* WARNING: do not edit! */ +/* Generated by makefile from include\crypto\dso_conf.h.in */ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_DSO_CONF_H +# define OSSL_CRYPTO_DSO_CONF_H +# define DSO_WIN32 +# define DSO_EXTENSION ".dll" +#endif diff --git a/vere/ext/openssl/gen/windows-x86_64/include/openssl/opensslconf.h b/vere/ext/openssl/gen/windows-x86_64/include/openssl/opensslconf.h new file mode 100644 index 0000000..b358f59 --- /dev/null +++ b/vere/ext/openssl/gen/windows-x86_64/include/openssl/opensslconf.h @@ -0,0 +1,203 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include\openssl\opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_SYS_WIN64A +# define OPENSSL_SYS_WIN64A 1 +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +#endif +#ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +#endif +#ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +#endif +#ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_STATIC_ENGINE +# define OPENSSL_NO_STATIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#ifndef OPENSSL_FILE +# ifdef OPENSSL_NO_FILENAMES +# define OPENSSL_FILE "" +# define OPENSSL_LINE 0 +# else +# define OPENSSL_FILE __FILE__ +# define OPENSSL_LINE __LINE__ +# endif +#endif + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#define OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# undef SIXTY_FOUR_BIT_LONG +# define SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#define RC4_INT unsigned int + +#ifdef __cplusplus +} +#endif diff --git a/vere/ext/pdjson/build.zig b/vere/ext/pdjson/build.zig new file mode 100644 index 0000000..5e851bb --- /dev/null +++ b/vere/ext/pdjson/build.zig @@ -0,0 +1,38 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const dep_c = b.dependency("pdjson", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "pdjson", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + lib.addIncludePath(dep_c.path(".")); + + lib.addCSourceFiles(.{ + .root = dep_c.path("."), + .files = &.{"pdjson.c"}, + .flags = &.{ + "-fno-sanitize=all", + "-std=c99", + "-pedantic", + "-Wall", + "-Wextra", + "-Wno-missing-field-initializers", + }, + }); + + lib.installHeader(dep_c.path("pdjson.h"), "pdjson.h"); + + b.installArtifact(lib); +} diff --git a/vere/ext/pdjson/build.zig.zon b/vere/ext/pdjson/build.zig.zon new file mode 100644 index 0000000..28febf8 --- /dev/null +++ b/vere/ext/pdjson/build.zig.zon @@ -0,0 +1,14 @@ +.{ + .name = .pdjson, + .version = "0.0.1", + .fingerprint = 0x9c1187b6fa1266aa, + .dependencies = .{ + .pdjson = .{ + .url = "https://github.com/skeeto/pdjson/archive/67108d883061043e55d0fb13961ac1b6fc8a485c.tar.gz", + .hash = "N-V-__8AADC9AACneJx7RTm9Hui7GCYJ2Qdv8Z_CUCbJphyi", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/sigsegv/build.zig b/vere/ext/sigsegv/build.zig new file mode 100644 index 0000000..d7f8859 --- /dev/null +++ b/vere/ext/sigsegv/build.zig @@ -0,0 +1,151 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const dep_c = b.dependency("sigsegv", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "sigsegv", + .target = target, + .optimize = optimize, + }); + + if (target.result.os.tag.isDarwin() and !target.query.isNative()) { + const macos_sdk = b.lazyDependency("macos_sdk", .{ + .target = target, + .optimize = optimize, + }); + if (macos_sdk != null) { + lib.addSystemIncludePath(macos_sdk.?.path("usr/include")); + lib.addLibraryPath(macos_sdk.?.path("usr/lib")); + lib.addFrameworkPath(macos_sdk.?.path("System/Library/Frameworks")); + } + } + + lib.linkLibC(); + + lib.root_module.addCMacro("HAVE_CONFIG_H", &[_]u8{}); + + const config_h = b.addConfigHeader(.{ + .style = .{ + .autoconf = dep_c.path("config.h.in"), + }, + .include_path = "config.h", + }, .{ + .ENABLE_EFAULT = null, + .HAVE_DLFCN_H = 1, + .HAVE_EFAULT_SUPPORT = null, + .HAVE_GETPAGESIZE = 1, + .HAVE_GETRLIMIT = 1, + .HAVE_INTTYPES_H = 1, + .HAVE_MINCORE = 1, + .HAVE_MMAP_ANON = 1, + .HAVE_MMAP_ANONYMOUS = 1, + .HAVE_MMAP_DEVZERO = null, + .HAVE_MQUERY = null, + .HAVE_PAGESIZE = null, + .HAVE_SETRLIMIT = 1, + .HAVE_SIGALTSTACK = 1, + .HAVE_STACKVMA = @intFromBool(!(t.os.tag == .linux)), + .HAVE_STDINT_H = 1, + .HAVE_STDIO_H = 1, + .HAVE_STDLIB_H = 1, + .HAVE_STRINGS_H = 1, + .HAVE_STRING_H = 1, + .HAVE_SYSCONF_PAGESIZE = null, + .HAVE_SYS_SIGNAL_H = 1, + .HAVE_SYS_STAT_H = 1, + .HAVE_SYS_TYPES_H = 1, + .HAVE_UCONTEXT_H = null, + .HAVE_UINTPTR_T = 1, + .HAVE_UNISTD_H = 1, + .HAVE_WORKING_SIGALTSTACK = 1, + .LT_OBJDIR = null, + .OLD_CYGWIN_WORKAROUND = null, + .PACKAGE = null, + .PACKAGE_BUGREPORT = null, + .PACKAGE_NAME = null, + .PACKAGE_STRING = null, + .PACKAGE_TARNAME = null, + .PACKAGE_URL = null, + .PACKAGE_VERSION = null, + .SIGALTSTACK_SS_REVERSED = null, + .STACK_DIRECTION = -1, + .STDC_HEADERS = 1, + .VERSION = null, + .stack_t = null, + .uintptr_t = null, + }); + + if ((t.os.tag == .macos)) { + config_h.addValues(.{ + .CFG_FAULT = if (t.cpu.arch == .aarch64) + "fault-macos-arm64.h" + else + "fault-macos-i386.h", + .CFG_HANDLER = "handler-unix.c", + .CFG_LEAVE = "leave-nop.c", + .CFG_MACHFAULT = "fault-none.h", + .CFG_SIGNALS = "signals-macos.h", + .CFG_STACKVMA = "stackvma-mach.c", + }); + } + + if ((t.os.tag == .linux)) { + config_h.addValues(.{ + .CFG_FAULT = if (t.cpu.arch == .aarch64) + "fault-linux-arm.h" + else + "fault-linux-i386.h", + .CFG_HANDLER = "handler-unix.c", + .CFG_LEAVE = "leave-nop.c", + .CFG_MACHFAULT = "fault-none.h", + .CFG_SIGNALS = "signals.h", + .CFG_STACKVMA = "stackvma-none.c", + }); + } + + const sigsegv_h = b.addConfigHeader(.{ + .style = .{ + .cmake = dep_c.path("src/sigsegv.h.in"), + }, + .include_path = "sigsegv.h", + }, .{ + .FAULT_CONTEXT = "ucontext_t", + .FAULT_CONTEXT_INCLUDE = if (t.os.tag == .macos) + "#include " + else + "#include ", + .HAVE_SIGSEGV_RECOVERY = 1, + .HAVE_STACK_OVERFLOW_RECOVERY = 1, + }); + + lib.addIncludePath(dep_c.path("src")); + lib.addConfigHeader(config_h); + lib.addConfigHeader(sigsegv_h); + + lib.addCSourceFiles(.{ + .root = dep_c.path("src"), + .files = &.{ + "dispatcher.c", + "handler.c", + "leave.c", + "stackvma.c", + "version.c", + }, + .flags = &.{ + "-O2", + "-fno-sanitize=all", + }, + }); + + lib.installConfigHeader(sigsegv_h); + + b.installArtifact(lib); +} diff --git a/vere/ext/sigsegv/build.zig.zon b/vere/ext/sigsegv/build.zig.zon new file mode 100644 index 0000000..39f2c58 --- /dev/null +++ b/vere/ext/sigsegv/build.zig.zon @@ -0,0 +1,18 @@ +.{ + .name = "sigsegv", + .version = "0.0.1", + .dependencies = .{ + .macos_sdk = .{ + .url = "https://github.com/joseluisq/macosx-sdks/releases/download/14.5/MacOSX14.5.sdk.tar.xz", + .hash = "N-V-__8AAKtK4FMzqcFsY_ZrpMg9bGH0h7BqZDXtVyAerMtM", + .lazy = true, + }, + .sigsegv = .{ + .url = "https://ftp.fr.openbsd.org/pub/OpenBSD/distfiles/libsigsegv-2.14.tar.gz", + .hash = "N-V-__8AAHQhHwCCMyKUtQhO0AMsY182In-wQIwXVhenOql5", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/softblas/build.zig b/vere/ext/softblas/build.zig new file mode 100644 index 0000000..1fb3b06 --- /dev/null +++ b/vere/ext/softblas/build.zig @@ -0,0 +1,80 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const lib = b.addStaticLibrary(.{ + .name = "softblas", + .target = target, + .optimize = optimize, + }); + + const dep_c = b.dependency("softblas", .{ + .target = target, + .optimize = optimize, + }); + + const softfloat = b.dependency("softfloat", .{ + .target = target, + .optimize = optimize, + }); + + lib.addIncludePath(dep_c.path("include")); + + lib.addCSourceFiles(.{ + .root = dep_c.path(""), + .files = &.{ + "src/softblas_state.c", + "src/blas/level1/sasum.c", + "src/blas/level1/dasum.c", + "src/blas/level1/hasum.c", + "src/blas/level1/qasum.c", + "src/blas/level1/saxpy.c", + "src/blas/level1/daxpy.c", + "src/blas/level1/haxpy.c", + "src/blas/level1/qaxpy.c", + "src/blas/level1/scopy.c", + "src/blas/level1/dcopy.c", + "src/blas/level1/hcopy.c", + "src/blas/level1/qcopy.c", + "src/blas/level1/sdot.c", + "src/blas/level1/ddot.c", + "src/blas/level1/hdot.c", + "src/blas/level1/qdot.c", + "src/blas/level1/snrm2.c", + "src/blas/level1/dnrm2.c", + "src/blas/level1/hnrm2.c", + "src/blas/level1/qnrm2.c", + "src/blas/level1/sscal.c", + "src/blas/level1/dscal.c", + "src/blas/level1/hscal.c", + "src/blas/level1/qscal.c", + "src/blas/level1/sswap.c", + "src/blas/level1/dswap.c", + "src/blas/level1/hswap.c", + "src/blas/level1/qswap.c", + "src/blas/level1/isamax.c", + "src/blas/level1/idamax.c", + "src/blas/level1/ihamax.c", + "src/blas/level1/iqamax.c", + "src/blas/level2/sgemv.c", + "src/blas/level2/dgemv.c", + "src/blas/level2/hgemv.c", + "src/blas/level2/qgemv.c", + "src/blas/level3/sgemm.c", + "src/blas/level3/dgemm.c", + "src/blas/level3/hgemm.c", + "src/blas/level3/qgemm.c", + }, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + + lib.installHeader(dep_c.path("include/softblas.h"), "softblas.h"); + + lib.linkLibC(); + lib.linkLibrary(softfloat.artifact("softfloat")); + b.installArtifact(lib); +} diff --git a/vere/ext/softblas/build.zig.zon b/vere/ext/softblas/build.zig.zon new file mode 100644 index 0000000..8f657df --- /dev/null +++ b/vere/ext/softblas/build.zig.zon @@ -0,0 +1,17 @@ +.{ + .name = .softblas, + .version = "0.0.1", + .fingerprint = 0x8df4a8f2266494e1, + .dependencies = .{ + .softfloat = .{ + .path = "../softfloat", + }, + .softblas = .{ + .url = "https://github.com/urbit/SoftBLAS/archive/cbffb33f19ea02f9ffbd184d445123c57929ec53.tar.gz", + .hash = "N-V-__8AAJD5MgBhfBHYae8jFlcaQw9R-TRw4tcUFB3rO9-q", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/softfloat/build.zig b/vere/ext/softfloat/build.zig new file mode 100644 index 0000000..ef61936 --- /dev/null +++ b/vere/ext/softfloat/build.zig @@ -0,0 +1,610 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const lib = b.addStaticLibrary(.{ + .name = "softfloat", + .target = target, + .optimize = optimize, + }); + + const dep_c = b.dependency("softfloat", .{ + .target = target, + .optimize = optimize, + }); + + lib.addIncludePath(dep_c.path("source/include")); + + const flags = .{ + "-fno-sanitize=all", + "-g", + "-O2", + }; + + if (t.cpu.arch.isAARCH64()) { + lib.addIncludePath(dep_c.path("source/ARM-VFPv2")); + lib.addIncludePath(dep_c.path("build/Linux-ARM-VFPv2-GCC")); + lib.addCSourceFiles(.{ + .root = dep_c.path(""), + .files = &.{ + "source/s_compare96M.c", + "source/s_compare128M.c", + "source/s_shortShiftLeft64To96M.c", + "source/s_shortShiftLeftM.c", + "source/s_shiftLeftM.c", + "source/s_shortShiftRightM.c", + "source/s_shortShiftRightJam64.c", + "source/s_shortShiftRightJamM.c", + "source/s_shiftRightJam32.c", + "source/s_shiftRightJam64.c", + "source/s_shiftRightJamM.c", + "source/s_shiftRightM.c", + "source/s_countLeadingZeros8.c", + "source/s_countLeadingZeros16.c", + "source/s_countLeadingZeros32.c", + "source/s_countLeadingZeros64.c", + "source/s_addM.c", + "source/s_addCarryM.c", + "source/s_addComplCarryM.c", + "source/s_negXM.c", + "source/s_sub1XM.c", + "source/s_subM.c", + "source/s_mul64To128M.c", + "source/s_mul128MTo256M.c", + "source/s_approxRecip_1Ks.c", + "source/s_approxRecip32_1.c", + "source/s_approxRecipSqrt_1Ks.c", + "source/s_approxRecipSqrt32_1.c", + "source/s_remStepMBy32.c", + "source/ARM-VFPv2/softfloat_raiseFlags.c", + "source/ARM-VFPv2/s_f16UIToCommonNaN.c", + "source/ARM-VFPv2/s_commonNaNToF16UI.c", + "source/ARM-VFPv2/s_propagateNaNF16UI.c", + "source/ARM-VFPv2/s_f32UIToCommonNaN.c", + "source/ARM-VFPv2/s_commonNaNToF32UI.c", + "source/ARM-VFPv2/s_propagateNaNF32UI.c", + "source/ARM-VFPv2/s_f64UIToCommonNaN.c", + "source/ARM-VFPv2/s_commonNaNToF64UI.c", + "source/ARM-VFPv2/s_propagateNaNF64UI.c", + "source/ARM-VFPv2/extF80M_isSignalingNaN.c", + "source/ARM-VFPv2/s_extF80MToCommonNaN.c", + "source/ARM-VFPv2/s_commonNaNToExtF80M.c", + "source/ARM-VFPv2/s_propagateNaNExtF80M.c", + "source/ARM-VFPv2/f128M_isSignalingNaN.c", + "source/ARM-VFPv2/s_f128MToCommonNaN.c", + "source/ARM-VFPv2/s_commonNaNToF128M.c", + "source/ARM-VFPv2/s_propagateNaNF128M.c", + "source/s_roundToUI32.c", + "source/s_roundMToUI64.c", + "source/s_roundToI32.c", + "source/s_roundMToI64.c", + "source/s_normSubnormalF16Sig.c", + "source/s_roundPackToF16.c", + "source/s_normRoundPackToF16.c", + "source/s_addMagsF16.c", + "source/s_subMagsF16.c", + "source/s_mulAddF16.c", + "source/s_normSubnormalF32Sig.c", + "source/s_roundPackToF32.c", + "source/s_normRoundPackToF32.c", + "source/s_addMagsF32.c", + "source/s_subMagsF32.c", + "source/s_mulAddF32.c", + "source/s_normSubnormalF64Sig.c", + "source/s_roundPackToF64.c", + "source/s_normRoundPackToF64.c", + "source/s_addMagsF64.c", + "source/s_subMagsF64.c", + "source/s_mulAddF64.c", + "source/s_tryPropagateNaNExtF80M.c", + "source/s_invalidExtF80M.c", + "source/s_normExtF80SigM.c", + "source/s_roundPackMToExtF80M.c", + "source/s_normRoundPackMToExtF80M.c", + "source/s_addExtF80M.c", + "source/s_compareNonnormExtF80M.c", + "source/s_isNaNF128M.c", + "source/s_tryPropagateNaNF128M.c", + "source/s_invalidF128M.c", + "source/s_shiftNormSigF128M.c", + "source/s_roundPackMToF128M.c", + "source/s_normRoundPackMToF128M.c", + "source/s_addF128M.c", + "source/s_mulAddF128M.c", + "source/softfloat_state.c", + "source/ui32_to_f16.c", + "source/ui32_to_f32.c", + "source/ui32_to_f64.c", + "source/ui32_to_extF80M.c", + "source/ui32_to_f128M.c", + "source/ui64_to_f16.c", + "source/ui64_to_f32.c", + "source/ui64_to_f64.c", + "source/ui64_to_extF80M.c", + "source/ui64_to_f128M.c", + "source/i32_to_f16.c", + "source/i32_to_f32.c", + "source/i32_to_f64.c", + "source/i32_to_extF80M.c", + "source/i32_to_f128M.c", + "source/i64_to_f16.c", + "source/i64_to_f32.c", + "source/i64_to_f64.c", + "source/i64_to_extF80M.c", + "source/i64_to_f128M.c", + "source/f16_to_ui32.c", + "source/f16_to_ui64.c", + "source/f16_to_i32.c", + "source/f16_to_i64.c", + "source/f16_to_ui32_r_minMag.c", + "source/f16_to_ui64_r_minMag.c", + "source/f16_to_i32_r_minMag.c", + "source/f16_to_i64_r_minMag.c", + "source/f16_to_f32.c", + "source/f16_to_f64.c", + "source/f16_to_extF80M.c", + "source/f16_to_f128M.c", + "source/f16_roundToInt.c", + "source/f16_add.c", + "source/f16_sub.c", + "source/f16_mul.c", + "source/f16_mulAdd.c", + "source/f16_div.c", + "source/f16_rem.c", + "source/f16_sqrt.c", + "source/f16_eq.c", + "source/f16_le.c", + "source/f16_lt.c", + "source/f16_eq_signaling.c", + "source/f16_le_quiet.c", + "source/f16_lt_quiet.c", + "source/f16_isSignalingNaN.c", + "source/f32_to_ui32.c", + "source/f32_to_ui64.c", + "source/f32_to_i32.c", + "source/f32_to_i64.c", + "source/f32_to_ui32_r_minMag.c", + "source/f32_to_ui64_r_minMag.c", + "source/f32_to_i32_r_minMag.c", + "source/f32_to_i64_r_minMag.c", + "source/f32_to_f16.c", + "source/f32_to_f64.c", + "source/f32_to_extF80M.c", + "source/f32_to_f128M.c", + "source/f32_roundToInt.c", + "source/f32_add.c", + "source/f32_sub.c", + "source/f32_mul.c", + "source/f32_mulAdd.c", + "source/f32_div.c", + "source/f32_rem.c", + "source/f32_sqrt.c", + "source/f32_eq.c", + "source/f32_le.c", + "source/f32_lt.c", + "source/f32_eq_signaling.c", + "source/f32_le_quiet.c", + "source/f32_lt_quiet.c", + "source/f32_isSignalingNaN.c", + "source/f64_to_ui32.c", + "source/f64_to_ui64.c", + "source/f64_to_i32.c", + "source/f64_to_i64.c", + "source/f64_to_ui32_r_minMag.c", + "source/f64_to_ui64_r_minMag.c", + "source/f64_to_i32_r_minMag.c", + "source/f64_to_i64_r_minMag.c", + "source/f64_to_f16.c", + "source/f64_to_f32.c", + "source/f64_to_extF80M.c", + "source/f64_to_f128M.c", + "source/f64_roundToInt.c", + "source/f64_add.c", + "source/f64_sub.c", + "source/f64_mul.c", + "source/f64_mulAdd.c", + "source/f64_div.c", + "source/f64_rem.c", + "source/f64_sqrt.c", + "source/f64_eq.c", + "source/f64_le.c", + "source/f64_lt.c", + "source/f64_eq_signaling.c", + "source/f64_le_quiet.c", + "source/f64_lt_quiet.c", + "source/f64_isSignalingNaN.c", + "source/extF80M_to_ui32.c", + "source/extF80M_to_ui64.c", + "source/extF80M_to_i32.c", + "source/extF80M_to_i64.c", + "source/extF80M_to_ui32_r_minMag.c", + "source/extF80M_to_ui64_r_minMag.c", + "source/extF80M_to_i32_r_minMag.c", + "source/extF80M_to_i64_r_minMag.c", + "source/extF80M_to_f16.c", + "source/extF80M_to_f32.c", + "source/extF80M_to_f64.c", + "source/extF80M_to_f128M.c", + "source/extF80M_roundToInt.c", + "source/extF80M_add.c", + "source/extF80M_sub.c", + "source/extF80M_mul.c", + "source/extF80M_div.c", + "source/extF80M_rem.c", + "source/extF80M_sqrt.c", + "source/extF80M_eq.c", + "source/extF80M_le.c", + "source/extF80M_lt.c", + "source/extF80M_eq_signaling.c", + "source/extF80M_le_quiet.c", + "source/extF80M_lt_quiet.c", + "source/f128M_to_ui32.c", + "source/f128M_to_ui64.c", + "source/f128M_to_i32.c", + "source/f128M_to_i64.c", + "source/f128M_to_ui32_r_minMag.c", + "source/f128M_to_ui64_r_minMag.c", + "source/f128M_to_i32_r_minMag.c", + "source/f128M_to_i64_r_minMag.c", + "source/f128M_to_f16.c", + "source/f128M_to_f32.c", + "source/f128M_to_f64.c", + "source/f128M_to_extF80M.c", + "source/f128M_roundToInt.c", + "source/f128M_add.c", + "source/f128M_sub.c", + "source/f128M_mul.c", + "source/f128M_mulAdd.c", + "source/f128M_div.c", + "source/f128M_rem.c", + "source/f128M_sqrt.c", + "source/f128M_eq.c", + "source/f128M_le.c", + "source/f128M_lt.c", + "source/f128M_eq_signaling.c", + "source/f128M_le_quiet.c", + "source/f128M_lt_quiet.c", + }, + .flags = &flags, + }); + lib.installHeader(dep_c.path("build/Linux-ARM-VFPv2-GCC/platform.h"), "platform.h"); + } + if (t.cpu.arch.isX86()) { + lib.addIncludePath(dep_c.path("source/8086-SSE")); + lib.addIncludePath(dep_c.path("build/Linux-x86_64-GCC")); + + lib.root_module.addCMacro("SOFTFLOAT_FAST_INT64", ""); + lib.root_module.addCMacro("SOFTFLOAT_FAST_DIV32TO16", ""); + lib.root_module.addCMacro("SOFTFLOAT_FAST_DIV64TO32", ""); + + lib.addCSourceFiles(.{ + .root = dep_c.path(""), + .files = &.{ + "source/s_eq128.c", + "source/s_le128.c", + "source/s_lt128.c", + "source/s_shortShiftLeft128.c", + "source/s_shortShiftRight128.c", + "source/s_shortShiftRightJam64.c", + "source/s_shortShiftRightJam64Extra.c", + "source/s_shortShiftRightJam128.c", + "source/s_shortShiftRightJam128Extra.c", + "source/s_shiftRightJam32.c", + "source/s_shiftRightJam64.c", + "source/s_shiftRightJam64Extra.c", + "source/s_shiftRightJam128.c", + "source/s_shiftRightJam128Extra.c", + "source/s_shiftRightJam256M.c", + "source/s_countLeadingZeros8.c", + "source/s_countLeadingZeros16.c", + "source/s_countLeadingZeros32.c", + "source/s_countLeadingZeros64.c", + "source/s_add128.c", + "source/s_add256M.c", + "source/s_sub128.c", + "source/s_sub256M.c", + "source/s_mul64ByShifted32To128.c", + "source/s_mul64To128.c", + "source/s_mul128By32.c", + "source/s_mul128To256M.c", + "source/s_approxRecip_1Ks.c", + "source/s_approxRecip32_1.c", + "source/s_approxRecipSqrt_1Ks.c", + "source/s_approxRecipSqrt32_1.c", + "source/8086-SSE/softfloat_raiseFlags.c", + "source/8086-SSE/s_f16UIToCommonNaN.c", + "source/8086-SSE/s_commonNaNToF16UI.c", + "source/8086-SSE/s_propagateNaNF16UI.c", + "source/8086-SSE/s_f32UIToCommonNaN.c", + "source/8086-SSE/s_commonNaNToF32UI.c", + "source/8086-SSE/s_propagateNaNF32UI.c", + "source/8086-SSE/s_f64UIToCommonNaN.c", + "source/8086-SSE/s_commonNaNToF64UI.c", + "source/8086-SSE/s_propagateNaNF64UI.c", + "source/8086-SSE/extF80M_isSignalingNaN.c", + "source/8086-SSE/s_extF80UIToCommonNaN.c", + "source/8086-SSE/s_commonNaNToExtF80UI.c", + "source/8086-SSE/s_propagateNaNExtF80UI.c", + "source/8086-SSE/f128M_isSignalingNaN.c", + "source/8086-SSE/s_f128UIToCommonNaN.c", + "source/8086-SSE/s_commonNaNToF128UI.c", + "source/8086-SSE/s_propagateNaNF128UI.c", + "source/s_roundToUI32.c", + "source/s_roundToUI64.c", + "source/s_roundToI32.c", + "source/s_roundToI64.c", + "source/s_normSubnormalF16Sig.c", + "source/s_roundPackToF16.c", + "source/s_normRoundPackToF16.c", + "source/s_addMagsF16.c", + "source/s_subMagsF16.c", + "source/s_mulAddF16.c", + "source/s_normSubnormalF32Sig.c", + "source/s_roundPackToF32.c", + "source/s_normRoundPackToF32.c", + "source/s_addMagsF32.c", + "source/s_subMagsF32.c", + "source/s_mulAddF32.c", + "source/s_normSubnormalF64Sig.c", + "source/s_roundPackToF64.c", + "source/s_normRoundPackToF64.c", + "source/s_addMagsF64.c", + "source/s_subMagsF64.c", + "source/s_mulAddF64.c", + "source/s_normSubnormalExtF80Sig.c", + "source/s_roundPackToExtF80.c", + "source/s_normRoundPackToExtF80.c", + "source/s_addMagsExtF80.c", + "source/s_subMagsExtF80.c", + "source/s_normSubnormalF128Sig.c", + "source/s_roundPackToF128.c", + "source/s_normRoundPackToF128.c", + "source/s_addMagsF128.c", + "source/s_subMagsF128.c", + "source/s_mulAddF128.c", + "source/softfloat_state.c", + "source/ui32_to_f16.c", + "source/ui32_to_f32.c", + "source/ui32_to_f64.c", + "source/ui32_to_extF80.c", + "source/ui32_to_extF80M.c", + "source/ui32_to_f128.c", + "source/ui32_to_f128M.c", + "source/ui64_to_f16.c", + "source/ui64_to_f32.c", + "source/ui64_to_f64.c", + "source/ui64_to_extF80.c", + "source/ui64_to_extF80M.c", + "source/ui64_to_f128.c", + "source/ui64_to_f128M.c", + "source/i32_to_f16.c", + "source/i32_to_f32.c", + "source/i32_to_f64.c", + "source/i32_to_extF80.c", + "source/i32_to_extF80M.c", + "source/i32_to_f128.c", + "source/i32_to_f128M.c", + "source/i64_to_f16.c", + "source/i64_to_f32.c", + "source/i64_to_f64.c", + "source/i64_to_extF80.c", + "source/i64_to_extF80M.c", + "source/i64_to_f128.c", + "source/i64_to_f128M.c", + "source/f16_to_ui32.c", + "source/f16_to_ui64.c", + "source/f16_to_i32.c", + "source/f16_to_i64.c", + "source/f16_to_ui32_r_minMag.c", + "source/f16_to_ui64_r_minMag.c", + "source/f16_to_i32_r_minMag.c", + "source/f16_to_i64_r_minMag.c", + "source/f16_to_f32.c", + "source/f16_to_f64.c", + "source/f16_to_extF80.c", + "source/f16_to_extF80M.c", + "source/f16_to_f128.c", + "source/f16_to_f128M.c", + "source/f16_roundToInt.c", + "source/f16_add.c", + "source/f16_sub.c", + "source/f16_mul.c", + "source/f16_mulAdd.c", + "source/f16_div.c", + "source/f16_rem.c", + "source/f16_sqrt.c", + "source/f16_eq.c", + "source/f16_le.c", + "source/f16_lt.c", + "source/f16_eq_signaling.c", + "source/f16_le_quiet.c", + "source/f16_lt_quiet.c", + "source/f16_isSignalingNaN.c", + "source/f32_to_ui32.c", + "source/f32_to_ui64.c", + "source/f32_to_i32.c", + "source/f32_to_i64.c", + "source/f32_to_ui32_r_minMag.c", + "source/f32_to_ui64_r_minMag.c", + "source/f32_to_i32_r_minMag.c", + "source/f32_to_i64_r_minMag.c", + "source/f32_to_f16.c", + "source/f32_to_f64.c", + "source/f32_to_extF80.c", + "source/f32_to_extF80M.c", + "source/f32_to_f128.c", + "source/f32_to_f128M.c", + "source/f32_roundToInt.c", + "source/f32_add.c", + "source/f32_sub.c", + "source/f32_mul.c", + "source/f32_mulAdd.c", + "source/f32_div.c", + "source/f32_rem.c", + "source/f32_sqrt.c", + "source/f32_eq.c", + "source/f32_le.c", + "source/f32_lt.c", + "source/f32_eq_signaling.c", + "source/f32_le_quiet.c", + "source/f32_lt_quiet.c", + "source/f32_isSignalingNaN.c", + "source/f64_to_ui32.c", + "source/f64_to_ui64.c", + "source/f64_to_i32.c", + "source/f64_to_i64.c", + "source/f64_to_ui32_r_minMag.c", + "source/f64_to_ui64_r_minMag.c", + "source/f64_to_i32_r_minMag.c", + "source/f64_to_i64_r_minMag.c", + "source/f64_to_f16.c", + "source/f64_to_f32.c", + "source/f64_to_extF80.c", + "source/f64_to_extF80M.c", + "source/f64_to_f128.c", + "source/f64_to_f128M.c", + "source/f64_roundToInt.c", + "source/f64_add.c", + "source/f64_sub.c", + "source/f64_mul.c", + "source/f64_mulAdd.c", + "source/f64_div.c", + "source/f64_rem.c", + "source/f64_sqrt.c", + "source/f64_eq.c", + "source/f64_le.c", + "source/f64_lt.c", + "source/f64_eq_signaling.c", + "source/f64_le_quiet.c", + "source/f64_lt_quiet.c", + "source/f64_isSignalingNaN.c", + "source/extF80_to_ui32.c", + "source/extF80_to_ui64.c", + "source/extF80_to_i32.c", + "source/extF80_to_i64.c", + "source/extF80_to_ui32_r_minMag.c", + "source/extF80_to_ui64_r_minMag.c", + "source/extF80_to_i32_r_minMag.c", + "source/extF80_to_i64_r_minMag.c", + "source/extF80_to_f16.c", + "source/extF80_to_f32.c", + "source/extF80_to_f64.c", + "source/extF80_to_f128.c", + "source/extF80_roundToInt.c", + "source/extF80_add.c", + "source/extF80_sub.c", + "source/extF80_mul.c", + "source/extF80_div.c", + "source/extF80_rem.c", + "source/extF80_sqrt.c", + "source/extF80_eq.c", + "source/extF80_le.c", + "source/extF80_lt.c", + "source/extF80_eq_signaling.c", + "source/extF80_le_quiet.c", + "source/extF80_lt_quiet.c", + "source/extF80_isSignalingNaN.c", + "source/extF80M_to_ui32.c", + "source/extF80M_to_ui64.c", + "source/extF80M_to_i32.c", + "source/extF80M_to_i64.c", + "source/extF80M_to_ui32_r_minMag.c", + "source/extF80M_to_ui64_r_minMag.c", + "source/extF80M_to_i32_r_minMag.c", + "source/extF80M_to_i64_r_minMag.c", + "source/extF80M_to_f16.c", + "source/extF80M_to_f32.c", + "source/extF80M_to_f64.c", + "source/extF80M_to_f128M.c", + "source/extF80M_roundToInt.c", + "source/extF80M_add.c", + "source/extF80M_sub.c", + "source/extF80M_mul.c", + "source/extF80M_div.c", + "source/extF80M_rem.c", + "source/extF80M_sqrt.c", + "source/extF80M_eq.c", + "source/extF80M_le.c", + "source/extF80M_lt.c", + "source/extF80M_eq_signaling.c", + "source/extF80M_le_quiet.c", + "source/extF80M_lt_quiet.c", + "source/f128_to_ui32.c", + "source/f128_to_ui64.c", + "source/f128_to_i32.c", + "source/f128_to_i64.c", + "source/f128_to_ui32_r_minMag.c", + "source/f128_to_ui64_r_minMag.c", + "source/f128_to_i32_r_minMag.c", + "source/f128_to_i64_r_minMag.c", + "source/f128_to_f16.c", + "source/f128_to_f32.c", + "source/f128_to_extF80.c", + "source/f128_to_f64.c", + "source/f128_roundToInt.c", + "source/f128_add.c", + "source/f128_sub.c", + "source/f128_mul.c", + "source/f128_mulAdd.c", + "source/f128_div.c", + "source/f128_rem.c", + "source/f128_sqrt.c", + "source/f128_eq.c", + "source/f128_le.c", + "source/f128_lt.c", + "source/f128_eq_signaling.c", + "source/f128_le_quiet.c", + "source/f128_lt_quiet.c", + "source/f128_isSignalingNaN.c", + "source/f128M_to_ui32.c", + "source/f128M_to_ui64.c", + "source/f128M_to_i32.c", + "source/f128M_to_i64.c", + "source/f128M_to_ui32_r_minMag.c", + "source/f128M_to_ui64_r_minMag.c", + "source/f128M_to_i32_r_minMag.c", + "source/f128M_to_i64_r_minMag.c", + "source/f128M_to_f16.c", + "source/f128M_to_f32.c", + "source/f128M_to_extF80M.c", + "source/f128M_to_f64.c", + "source/f128M_roundToInt.c", + "source/f128M_add.c", + "source/f128M_sub.c", + "source/f128M_mul.c", + "source/f128M_mulAdd.c", + "source/f128M_div.c", + "source/f128M_rem.c", + "source/f128M_sqrt.c", + "source/f128M_eq.c", + "source/f128M_le.c", + "source/f128M_lt.c", + "source/f128M_eq_signaling.c", + "source/f128M_le_quiet.c", + "source/f128M_lt_quiet.c", + }, + .flags = &flags, + }); + lib.installHeader(dep_c.path("build/Linux-x86_64-GCC/platform.h"), "platform.h"); + } + + lib.root_module.addCMacro("SOFTFLOAT_ROUND_ODD", ""); + lib.root_module.addCMacro("INLINE_LEVEL", "5"); + + if (t.cpu.arch.isX86()) { + lib.root_module.addCMacro("SOFTFLOAT_FAST_INT64", ""); + lib.root_module.addCMacro("SOFTFLOAT_FAST_DIV32TO16", ""); + lib.root_module.addCMacro("SOFTFLOAT_FAST_DIV64TO32", ""); + } + + lib.installHeadersDirectory(dep_c.path("source/include"), "", .{ + .include_extensions = &.{".h"}, + }); + + lib.linkLibC(); + + b.installArtifact(lib); +} diff --git a/vere/ext/softfloat/build.zig.zon b/vere/ext/softfloat/build.zig.zon new file mode 100644 index 0000000..e77bfa2 --- /dev/null +++ b/vere/ext/softfloat/build.zig.zon @@ -0,0 +1,14 @@ +.{ + .name = .softfloat, + .version = "0.0.1", + .fingerprint = 0x51bec629e47146bb, + .dependencies = .{ + .softfloat = .{ + .url = "https://github.com/ucb-bar/berkeley-softfloat-3/archive/5c06db33fc1e2130f67c045327b0ec949032df1d.tar.gz", + .hash = "N-V-__8AAJjNHACk0uvy2j8WATPrbK9KmbnnuYeYIN6PO9nl", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/tracy/build.zig b/vere/ext/tracy/build.zig new file mode 100644 index 0000000..c672126 --- /dev/null +++ b/vere/ext/tracy/build.zig @@ -0,0 +1,52 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const tracy_src = b.dependency("tracy", .{ + .target = target, + .optimize = optimize, + }); + + const tracy = b.addStaticLibrary(.{ + .name = "tracy", + .target = target, + .optimize = optimize, + }); + + tracy.linkLibC(); + tracy.linkLibCpp(); + + // Add Tracy include path + tracy.addIncludePath(tracy_src.path("public")); + + // Add Tracy C++ client source + tracy.addCSourceFiles(.{ + .root = tracy_src.path("public"), + .files = &.{"TracyClient.cpp"}, + .flags = &.{ + "-DTRACY_ENABLE", + "-fno-sanitize=undefined", + "-D_WIN32_WINNT=0x601", // Windows compatibility + "-std=c++11", + }, + }); + + // Platform-specific libraries + const t = target.result; + if (t.os.tag == .linux) { + tracy.linkSystemLibrary("pthread"); + tracy.linkSystemLibrary("dl"); + } else if (t.os.tag.isDarwin()) { + // macOS might need additional frameworks + } else if (t.os.tag == .windows) { + tracy.linkSystemLibrary("ws2_32"); + tracy.linkSystemLibrary("dbghelp"); + } + + // Install Tracy headers for C API - install the entire public directory structure + tracy.installHeadersDirectory(tracy_src.path("public"), "", .{}); + + b.installArtifact(tracy); +} \ No newline at end of file diff --git a/vere/ext/tracy/build.zig.zon b/vere/ext/tracy/build.zig.zon new file mode 100644 index 0000000..c3f2b6e --- /dev/null +++ b/vere/ext/tracy/build.zig.zon @@ -0,0 +1,13 @@ +.{ + .name = "tracy", + .version = "0.0.1", + .dependencies = .{ + .tracy = .{ + .url = "https://github.com/wolfpld/tracy/archive/v0.12.2.tar.gz", + .hash = "N-V-__8AANptPwE8EYOS5w6KRzVyfllpOBthYRcuuQvYhhxb", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/unwind/build.zig b/vere/ext/unwind/build.zig new file mode 100644 index 0000000..95b1939 --- /dev/null +++ b/vere/ext/unwind/build.zig @@ -0,0 +1,262 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const dep_c = b.dependency("unwind", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "unwind", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + lib.root_module.addCMacro("HAVE_CONFIG_H", ""); + lib.root_module.addCMacro("_GNU_SOURCE", ""); + lib.root_module.addCMacro("NDEBUG", ""); + lib.root_module.addCMacro("__EXTENSIONS__", ""); + + const config_h = b.addConfigHeader(.{ + .style = .blank, + .include_path = "config.h", + }, .{ + .CONFIG_BLOCK_SIGNALS = "", + .CONFIG_DEBUG_FRAME = "", + .CONFIG_MSABI_SUPPORT = null, + .CONFIG_WEAK_BACKTRACE = 1, + .CONSERVATIVE_CHECKS = 1, + .HAVE_ASM_PTRACE_H = 1, + .HAVE_ASM_PTRACE_OFFSETS_H = null, + .HAVE_ASM_VSYSCALL_H = null, + .HAVE_BYTESWAP_H = 1, + .HAVE_DECL_PTRACE_CONT = 1, + .HAVE_DECL_PTRACE_POKEDATA = 1, + .HAVE_DECL_PTRACE_POKEUSER = 1, + .HAVE_DECL_PTRACE_SETREGSET = 1, + .HAVE_DECL_PTRACE_SINGLESTEP = 1, + .HAVE_DECL_PTRACE_SYSCALL = 1, + .HAVE_DECL_PTRACE_TRACEME = 1, + .HAVE_DECL_PT_CONTINUE = 1, + .HAVE_DECL_PT_GETFPREGS = 0, + .HAVE_DECL_PT_GETREGS = 0, + .HAVE_DECL_PT_IO = 0, + .HAVE_DECL_PT_STEP = 1, + .HAVE_DECL_PT_SYSCALL = 1, + .HAVE_DECL_PT_TRACE_ME = 1, + .HAVE_DLFCN_H = 1, + .HAVE_DLMODINFO = null, + .HAVE_DL_ITERATE_PHDR = 1, + .HAVE_DL_PHDR_REMOVALS_COUNTER = null, + .HAVE_ELF_FPREGSET_T = 1, + .HAVE_ELF_H = 1, + .HAVE_ENDIAN_H = 1, + .HAVE_EXECINFO_H = 1, + .HAVE_EXECVPE = 1, + .HAVE_GETUNWIND = null, + .HAVE_IA64INTRIN_H = null, + .HAVE_INTTYPES_H = 1, + .HAVE_LINK_H = 1, + .HAVE_LZMA = null, + .HAVE_MEMORY_H = 1, + .HAVE_MINCORE = 1, + .HAVE_PIPE2 = 1, + .HAVE_PROCFS_STATUS = null, + .HAVE_SIGALTSTACK = 1, + .HAVE_SIGNAL_H = 1, + .HAVE_STDINT_H = 1, + .HAVE_STDLIB_H = 1, + .HAVE_STRINGS_H = 1, + .HAVE_STRING_H = 1, + .HAVE_STRUCT_DL_PHDR_INFO_DLPI_SUBS = 1, + .HAVE_STRUCT_ELF_PRSTATUS = 1, + .HAVE_STRUCT_PRSTATUS = null, + .HAVE_SYS_ELF_H = 1, + .HAVE_SYS_ENDIAN_H = null, + .HAVE_SYS_LINK_H = null, + .HAVE_SYS_PARAM_H = 1, + .HAVE_SYS_PROCFS_H = 1, + .HAVE_SYS_PTRACE_H = 1, + .HAVE_SYS_STAT_H = 1, + .HAVE_SYS_SYSCALL_H = 1, + .HAVE_SYS_TYPES_H = 1, + .HAVE_SYS_UC_ACCESS_H = null, + .HAVE_TTRACE = null, + .HAVE_UNISTD_H = 1, + .HAVE_ZLIB = null, + .HAVE__BUILTIN_UNREACHABLE = 1, + .HAVE__BUILTIN___CLEAR_CACHE = 1, + .HAVE___CACHE_PER_THREAD = null, + .LT_OBJDIR = ".libs/", + .PACKAGE = "libunwind", + .PACKAGE_BUGREPORT = "https://github.com/libunwind/libunwind", + .PACKAGE_NAME = "libunwind", + .PACKAGE_STRING = "libunwind 1.8.1", + .PACKAGE_TARNAME = "libunwind", + .PACKAGE_URL = "", + .PACKAGE_VERSION = "1.8.1", + .SIZEOF_OFF_T = 8, + .STDC_HEADERS = 1, + .VERSION = "1.8.1", + .@"const" = null, + .@"inline" = null, + .size_t = null, + }); + + const libunwind_h = b.addConfigHeader(.{ + .style = .{ + .cmake = dep_c.path("include/libunwind.h.in"), + }, + .include_path = "libunwind.h", + }, .{ .arch = @tagName(t.cpu.arch) }); + + const libunwind_i_h = b.addConfigHeader(.{ + .style = .{ + .cmake = dep_c.path("include/tdep/libunwind_i.h.in"), + }, + .include_path = "tdep/libunwind_i.h", + }, .{ .arch = @tagName(t.cpu.arch) }); + + const libunwind_common_h = b.addConfigHeader(.{ + .style = .{ + .cmake = dep_c.path("include/libunwind-common.h.in"), + }, + .include_path = "libunwind-common.h", + }, .{ .PKG_MAJOR = 1, .PKG_MINOR = 8, .PKG_EXTRA = 1 }); + + lib.addConfigHeader(config_h); + lib.addConfigHeader(libunwind_h); + lib.addConfigHeader(libunwind_i_h); + lib.addConfigHeader(libunwind_common_h); + lib.addIncludePath(dep_c.path("src")); + lib.addIncludePath(dep_c.path("include")); + if (t.cpu.arch.isAARCH64()) + lib.addIncludePath(dep_c.path("include/tdep-aarch64")); + if (t.cpu.arch == .x86_64) + lib.addIncludePath(dep_c.path("include/tdep-x86_64")); + + var srcs = std.ArrayList([]const u8).init(b.allocator); + defer srcs.deinit(); + + try srcs.appendSlice(&.{ + // libunwind.la + "os-linux.c", + "dl-iterate-phdr.c", + "mi/init.c", + "mi/flush_cache.c", + "mi/mempool.c", + "mi/strerror.c", + "mi/backtrace.c", + "mi/dyn-cancel.c", + "mi/dyn-info-list.c", + "mi/dyn-register.c", + "mi/Laddress_validator.c", + "mi/Ldestroy_addr_space.c", + "mi/Ldyn-extract.c", + "mi/Lfind_dynamic_proc_info.c", + "mi/Lget_accessors.c", + "mi/Lget_fpreg.c", + "mi/Lset_fpreg.c", + "mi/Lget_proc_info_by_ip.c", + "mi/Lget_proc_name.c", + "mi/Lget_reg.c", + "mi/Lput_dynamic_unwind_info.c", + "mi/Lset_cache_size.c", + "mi/Lset_caching_policy.c", + "mi/Lset_iterate_phdr_function.c", + "mi/Lset_reg.c", + "mi/Lget_elf_filename.c", + // libunwind-dwarf-local.la + "dwarf/Lexpr.c", + "dwarf/Lfde.c", + "dwarf/Lfind_proc_info-lsb.c", + "dwarf/Lfind_unwind_table.c", + "dwarf/Lget_proc_info_in_range.c", + "dwarf/Lparser.c", + "dwarf/Lpe.c", + // libunwind-dwarf-common.la + "dwarf/global.c", + // libunwind-elf64.la + "elf64.c", + }); + + if (t.cpu.arch.isAARCH64()) + try srcs.appendSlice(&.{ + "aarch64/is_fpreg.c", + "aarch64/regname.c", + "aarch64/Los-linux.c", + "aarch64/getcontext.S", + "aarch64/Lapply_reg_state.c", + "aarch64/Lcreate_addr_space.c", + "aarch64/Lget_proc_info.c", + "aarch64/Lget_save_loc.c", + "aarch64/Lglobal.c", + "aarch64/Linit.c", + "aarch64/Linit_local.c", + "aarch64/Linit_remote.c", + "aarch64/Lis_signal_frame.c", + "aarch64/Lregs.c", + "aarch64/Lreg_states_iterate.c", + "aarch64/Lresume.c", + "aarch64/Lstash_frame.c", + "aarch64/Lstep.c", + "aarch64/Ltrace.c", + // "aarch64/longjmp.S", + // "aarch64/setcontext.S", + // "aarch64/siglongjmp.S", + }); + + if (t.cpu.arch == .x86_64) + try srcs.appendSlice(&.{ + "x86_64/is_fpreg.c", + "x86_64/regname.c", + "x86_64/Los-linux.c", + "x86_64/getcontext.S", + "x86_64/Lapply_reg_state.c", + "x86_64/Lcreate_addr_space.c", + "x86_64/Lget_proc_info.c", + "x86_64/Lget_save_loc.c", + "x86_64/Lglobal.c", + "x86_64/Linit.c", + "x86_64/Linit_local.c", + "x86_64/Linit_remote.c", + "x86_64/Lregs.c", + "x86_64/Lreg_states_iterate.c", + "x86_64/Lresume.c", + "x86_64/Lstash_frame.c", + "x86_64/Lstep.c", + "x86_64/Ltrace.c", + // "x86_64/longjmp.S", + "x86_64/setcontext.S", + // "x86_64/siglongjmp.S", + }); + + lib.addCSourceFiles(.{ + .root = dep_c.path("src"), + .files = srcs.items, + .flags = &.{ + "-fno-sanitize=all", + "-fexceptions", + "-Wall", + "-Wsign-compare", + }, + }); + + lib.installConfigHeader(libunwind_h); + lib.installConfigHeader(libunwind_common_h); + lib.installHeadersDirectory(dep_c.path("include"), "", .{ + .include_extensions = &.{ + "libunwind-x86_64.h", + "libunwind-aarch64.h", + "libunwind-dynamic.h", + }, + }); + + b.installArtifact(lib); +} diff --git a/vere/ext/unwind/build.zig.zon b/vere/ext/unwind/build.zig.zon new file mode 100644 index 0000000..5ebfff4 --- /dev/null +++ b/vere/ext/unwind/build.zig.zon @@ -0,0 +1,13 @@ +.{ + .name = "unwind", + .version = "0.0.1", + .dependencies = .{ + .unwind = .{ + .url = "https://github.com/libunwind/libunwind/archive/7cc4c20fbcf65a9c855fb9d950fad8d0e29b092e.tar.gz", + .hash = "N-V-__8AAA54RADHKA70ncWBovi6ApxYOAQQubuxcBr6y6Ey", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/urcrypt/build.zig b/vere/ext/urcrypt/build.zig new file mode 100644 index 0000000..2289287 --- /dev/null +++ b/vere/ext/urcrypt/build.zig @@ -0,0 +1,515 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const openssl = b.dependency("openssl", .{ + .target = target, + .optimize = optimize, + }); + + const dep_c = b.dependency("urcrypt", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "urcrypt", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + lib.linkLibrary(libsecp256k1(b, target, optimize)); + lib.linkLibrary(libargon2(b, target, optimize)); + lib.linkLibrary(libblake3(b, target, optimize)); + lib.linkLibrary(libed25519(b, target, optimize)); + lib.linkLibrary(libge_additions(b, target, optimize)); + lib.linkLibrary(libkeccak_tiny(b, target, optimize)); + lib.linkLibrary(libmonocypher(b, target, optimize)); + lib.linkLibrary(libscrypt(b, target, optimize)); + + lib.linkLibrary(libaes_siv(b, target, optimize)); + lib.linkLibrary(openssl.artifact("ssl")); + lib.linkLibrary(openssl.artifact("crypto")); + + lib.addIncludePath(dep_c.path("urcrypt")); + + lib.addCSourceFiles(.{ + .root = dep_c.path("urcrypt"), + .files = &.{ + "aes_cbc.c", + "aes_ecb.c", + "aes_siv.c", + "argon.c", + "blake3.c", + "chacha.c", + "ed25519.c", + "ge_additions.c", + "keccak.c", + "ripemd.c", + "scrypt.c", + "secp256k1.c", + "sha.c", + "util.c", + }, + .flags = &.{ + "-O2", + "-fno-omit-frame-pointer", + "-fno-sanitize=all", + "-g", + "-Wall", + "-DSECP256K1_STATIC", + }, + }); + + lib.installHeader(dep_c.path("urcrypt/urcrypt.h"), "urcrypt.h"); + + b.installArtifact(lib); +} + +fn libaes_siv( + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, +) *std.Build.Step.Compile { + const openssl = b.dependency("openssl", .{ + .target = target, + .optimize = optimize, + }); + + const dep_c = b.dependency("aes_siv", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "aes_siv", + .target = target, + .optimize = optimize, + }); + + lib.linkLibrary(openssl.artifact("ssl")); + lib.linkLibrary(openssl.artifact("crypto")); + + const config_h = b.addConfigHeader(.{ + .style = .blank, + .include_path = "config.h", + }, .{}); + lib.addConfigHeader(config_h); + lib.addIncludePath(dep_c.path("")); + lib.addCSourceFiles(.{ + .root = dep_c.path(""), + .files = &.{ + "aes_siv.c", + }, + .flags = &.{ + "-O2", + "-fno-omit-frame-pointer", + "-fno-sanitize=all", + }, + }); + + lib.installHeader(dep_c.path("aes_siv.h"), "aes_siv.h"); + + lib.linkLibC(); + + return lib; +} + +fn libsecp256k1( + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, +) *std.Build.Step.Compile { + const dep_c = b.dependency("secp256k1", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "secp256k1", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + lib.addIncludePath(dep_c.path("src")); + + lib.addCSourceFiles(.{ + .root = dep_c.path("src"), + .files = &.{ + "precomputed_ecmult.c", + "precomputed_ecmult_gen.c", + "secp256k1.c", + }, + .flags = &.{ + "-fno-sanitize=all", + "-g", + "-O2", + "-fno-omit-frame-pointer", + "-std=c89", + "-pedantic", + "-Wno-long-long", + "-Wnested-externs", + "-Wshadow", + "-Wstrict-prototypes", + "-Wundef", + "-Wno-overlength-strings", + "-Wall", + "-Wno-unused-function", + "-Wextra", + "-Wcast-align", + "-Wconditional-uninitialized", + "-fvisibility=hidden", + + // "-DHAVE_CONFIG_H", + // "-dexhaustive_test_ORDER=7", + "-DSECP256K1_BUILD", + "-DECMULT_WINDOW_SIZE=15", + "-DCOMB_BLOCKS=43", + "-DCOMB_TEETH=6", + "-DENABLE_MODULE_ELLSWIFT=1", + "-DENABLE_MODULE_SCHNORRSIG=1", + "-DENABLE_MODULE_EXTRAKEYS=1", + "-DENABLE_MODULE_RECOVERY=1", + "-DENABLE_MODULE_ECDH=1", + }, + }); + + lib.installHeadersDirectory(dep_c.path("include"), "", .{}); + + return lib; +} + +fn libargon2( + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, +) *std.Build.Step.Compile { + const dep_c = b.dependency("urcrypt", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "argon2", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + const flags = .{ + "-O2", + "-fno-omit-frame-pointer", + "-fno-sanitize=all", + "-Wno-unused-value", + "-Wno-unused-function", + "-DARGON2_NO_THREADS", + }; + + const common_files = .{ + "src/argon2.c", + "src/core.c", + "src/blake2/blake2b.c", + "src/encoding.c", + "src/thread.c", + }; + + lib.addIncludePath(dep_c.path("argon2/include")); + lib.addIncludePath(dep_c.path("argon2/src")); + lib.addIncludePath(dep_c.path("argon2/src/blake2")); + + if (target.result.cpu.arch == .x86_64) { + lib.addCSourceFiles(.{ + .root = dep_c.path("argon2"), + .files = &(common_files ++ .{"src/opt.c"}), + .flags = &flags, + }); + } else { + lib.addCSourceFiles(.{ + .root = dep_c.path("argon2"), + .files = &(common_files ++ .{"src/ref.c"}), + .flags = &flags, + }); + } + + lib.installHeader(dep_c.path("argon2/include/argon2.h"), "argon2.h"); + lib.installHeader(dep_c.path("argon2/src/blake2/blake2.h"), "blake2.h"); + + return lib; +} + +fn libblake3( + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, +) *std.Build.Step.Compile { + const dep_c = b.dependency("urcrypt", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "blake3", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + const common_files = .{ + "blake3.c", + "blake3_dispatch.c", + "blake3_portable.c", + }; + + lib.addIncludePath(dep_c.path("blake3")); + + if (target.result.cpu.arch == .x86_64) { + lib.addCSourceFiles(.{ + .root = dep_c.path("blake3"), + .files = &(common_files ++ .{ + "blake3_sse2_x86-64_unix.S", + "blake3_sse41_x86-64_unix.S", + "blake3_avx2_x86-64_unix.S", + "blake3_avx512_x86-64_unix.S", + }), + .flags = &.{ + "-O2", + "-fno-omit-frame-pointer", + "-fno-sanitize=all", + }, + }); + } else { + lib.addCSourceFiles(.{ + .root = dep_c.path("blake3"), + .files = &(common_files ++ .{"blake3_neon.c"}), + .flags = &.{ + "-O2", + "-fno-omit-frame-pointer", + "-fno-sanitize=all", + "-DBLAKE3_USE_NEON=1", + }, + }); + } + + lib.installHeader(dep_c.path("blake3/blake3.h"), "blake3.h"); + lib.installHeader(dep_c.path("blake3/blake3_impl.h"), "blake3_impl.h"); + + return lib; +} + +fn libed25519( + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, +) *std.Build.Step.Compile { + const dep_c = b.dependency("urcrypt", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "ed25519", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + lib.addIncludePath(dep_c.path("ed25519/src")); + + lib.addCSourceFiles(.{ + .root = dep_c.path("ed25519"), + .files = &.{ + "src/add_scalar.c", + "src/fe.c", + "src/ge.c", + "src/keypair.c", + "src/key_exchange.c", + "src/sc.c", + "src/seed.c", + "src/sha512.c", + "src/sign.c", + "src/verify.c", + }, + .flags = &.{ + "-O2", + "-fno-omit-frame-pointer", + "-fno-sanitize=all", + "-Wno-unused-result", + }, + }); + + lib.installHeadersDirectory(dep_c.path("ed25519/src"), "", .{ + .include_extensions = &.{".h"}, + }); + + return lib; +} + +fn libge_additions( + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, +) *std.Build.Step.Compile { + const dep_c = b.dependency("urcrypt", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "ge_additions", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + lib.addIncludePath(dep_c.path("ed25519/src")); + lib.addIncludePath(dep_c.path("ge-additions")); + + lib.addCSourceFiles(.{ + .root = dep_c.path("ge-additions"), + .files = &.{"ge-additions.c"}, + .flags = &.{ + "-O2", + "-fno-omit-frame-pointer", + "-fno-sanitize=all", + "-Werror", + "-pedantic", + "-std=gnu99", + }, + }); + + lib.installHeader(dep_c.path("ge-additions/ge-additions.h"), "ge-additions.h"); + + return lib; +} + +fn libkeccak_tiny( + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, +) *std.Build.Step.Compile { + const dep_c = b.dependency("urcrypt", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "keccak_tiny", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + lib.addIncludePath(dep_c.path("keccak-tiny")); + + lib.addCSourceFiles(.{ + .root = dep_c.path("keccak-tiny"), + .files = &.{"keccak-tiny.c"}, + .flags = &.{ + "-O2", + "-fno-omit-frame-pointer", + "-fno-sanitize=all", + "-std=c11", + "-Wextra", + "-Wpedantic", + "-Wall", + }, + }); + + lib.installHeader(dep_c.path("keccak-tiny/keccak-tiny.h"), "keccak-tiny.h"); + + return lib; +} + +fn libmonocypher( + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, +) *std.Build.Step.Compile { + const dep_c = b.dependency("urcrypt", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "monocypher", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + lib.addIncludePath(dep_c.path("monocypher")); + + lib.addCSourceFiles(.{ + .root = dep_c.path("monocypher"), + .files = &.{"monocypher.c"}, + .flags = &.{ + "-O2", + "-fno-omit-frame-pointer", + "-fno-sanitize=all", + }, + }); + + lib.installHeader(dep_c.path("monocypher/monocypher.h"), "monocypher.h"); + + return lib; +} + +fn libscrypt( + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, +) *std.Build.Step.Compile { + const dep_c = b.dependency("urcrypt", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "scrypt", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + lib.addIncludePath(dep_c.path("scrypt")); + + lib.addCSourceFiles(.{ + .root = dep_c.path("scrypt"), + .files = &.{ + "b64.c", + "crypto-mcf.c", + "crypto-scrypt-saltgen.c", + "crypto_scrypt-check.c", + "crypto_scrypt-hash.c", + "crypto_scrypt-hexconvert.c", + "crypto_scrypt-nosse.c", + // "main.c", + "sha256.c", + "slowequals.c", + }, + .flags = &.{ + "-O2", + "-fno-omit-frame-pointer", + "-fno-sanitize=all", + "-D_FORTIFY_SOURCE=2", + }, + }); + + lib.installHeader(dep_c.path("scrypt/libscrypt.h"), "libscrypt.h"); + lib.installHeader(dep_c.path("scrypt/sha256.h"), "sha256.h"); + + return lib; +} diff --git a/vere/ext/urcrypt/build.zig.zon b/vere/ext/urcrypt/build.zig.zon new file mode 100644 index 0000000..0ab2398 --- /dev/null +++ b/vere/ext/urcrypt/build.zig.zon @@ -0,0 +1,25 @@ +.{ + .name = .urcrypt, + .fingerprint = 0x590576beb64ce5db, + .version = "0.0.1", + .dependencies = .{ + .aes_siv = .{ + .url = "https://github.com/dfoxfranke/libaes_siv/archive/9681279cfaa6e6399bb7ca3afbbc27fc2e19df4b.tar.gz", + .hash = "N-V-__8AADRgAQComAaFJaS9o75BOcaFVew6nO8D7ZTGMRXd", + }, + .openssl = .{ + .path = "../openssl", + }, + .secp256k1 = .{ + .url = "https://github.com/bitcoin-core/secp256k1/archive/refs/tags/v0.5.1.tar.gz", + .hash = "N-V-__8AAJ4DSwC7aDpt90TmGPWKAI6q4-titwp4M0zsZ2vY", + }, + .urcrypt = .{ + .url = "https://github.com/urbit/urcrypt/archive/465aad6262f2710f76f75adfe74effb5751c5ab3.tar.gz", + .hash = "N-V-__8AAL3OSQDA9xQasK60FkxcKuQoSANeWy_f9SxmxX1X", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/wasm3/build.zig b/vere/ext/wasm3/build.zig new file mode 100644 index 0000000..1e57e91 --- /dev/null +++ b/vere/ext/wasm3/build.zig @@ -0,0 +1,91 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const softfloat = b.dependency("softfloat", .{ + .target = target, + .optimize = optimize, + }); + + const wasm3_c = b.dependency("wasm3", .{ + .target = target, + .optimize = optimize, + }); + + const wasm3 = b.addStaticLibrary(.{ + .name = "wasm3", + .target = target, + .optimize = optimize, + }); + + wasm3.linkLibC(); + + wasm3.addIncludePath(wasm3_c.path("source/")); + + const common_flags = [_][]const u8{ + "-std=c99", + "-Wall", + "-Wextra", + "-Wparentheses", + "-Wundef", + "-Wpointer-arith", + "-Wstrict-aliasing=2", + "-Werror=implicit-function-declaration", + "-fno-sanitize=all", + // "-fsanitize=undefined", + // "-fno-sanitize-trap=undefined", + }; + + const mac_flags = common_flags ++ [_][]const u8{ + "-fPIC", + "-c", + }; + + wasm3.addCSourceFiles(.{ + .root = wasm3_c.path("source/"), + .files = &.{ + "m3_bind.c", + "m3_code.c", + "m3_compile.c", + "m3_core.c", + "m3_emit.c", + "m3_env.c", + "m3_exec.c", + "m3_function.c", + "m3_info.c", + "m3_module.c", + "m3_parse.c", + "m3_validate.c", + "m3_rewrite.c", + "m3_resume.c", + }, + .flags = if (t.os.tag == .macos) &mac_flags else &common_flags, + }); + + wasm3.installHeader(wasm3_c.path("source/m3_config_platforms.h"), "m3_config_platforms.h"); + wasm3.installHeader(wasm3_c.path("source/m3_bind.h"), "m3_bind.h"); + wasm3.installHeader(wasm3_c.path("source/m3_code.h"), "m3_code.h"); + wasm3.installHeader(wasm3_c.path("source/m3_compile.h"), "m3_compile.h"); + wasm3.installHeader(wasm3_c.path("source/m3_config.h"), "m3_config.h"); + wasm3.installHeader(wasm3_c.path("source/m3_core.h"), "m3_core.h"); + wasm3.installHeader(wasm3_c.path("source/m3_emit.h"), "m3_emit.h"); + wasm3.installHeader(wasm3_c.path("source/m3_env.h"), "m3_env.h"); + wasm3.installHeader(wasm3_c.path("source/m3_exception.h"), "m3_exception.h"); + wasm3.installHeader(wasm3_c.path("source/m3_exec.h"), "m3_exec.h"); + wasm3.installHeader(wasm3_c.path("source/m3_exec_defs.h"), "m3_exec_defs.h"); + wasm3.installHeader(wasm3_c.path("source/m3_function.h"), "m3_function.h"); + wasm3.installHeader(wasm3_c.path("source/m3_info.h"), "m3_info.h"); + wasm3.installHeader(wasm3_c.path("source/m3_math_utils.h"), "m3_math_utils.h"); + wasm3.installHeader(wasm3_c.path("source/wasm3.h"), "wasm3.h"); + wasm3.installHeader(wasm3_c.path("source/wasm3_defs.h"), "wasm3_defs.h"); + wasm3.installHeader(wasm3_c.path("source/m3_validate.h"), "m3_validate.h"); + wasm3.installHeader(wasm3_c.path("source/m3_rewrite.h"), "m3_rewrite.h"); + wasm3.installHeader(wasm3_c.path("source/m3_resume.h"), "m3_resume.h"); + + wasm3.linkLibrary(softfloat.artifact("softfloat")); + + b.installArtifact(wasm3); +} diff --git a/vere/ext/wasm3/build.zig.zon b/vere/ext/wasm3/build.zig.zon new file mode 100644 index 0000000..6544065 --- /dev/null +++ b/vere/ext/wasm3/build.zig.zon @@ -0,0 +1,18 @@ +.{ + .name = .wasm3, + .version = "0.0.1", + .fingerprint = 0x377ef9510a920f6f, + .dependencies = .{ + .softfloat = .{ + .path = "../softfloat", + }, + .wasm3 = .{ + // .path = "../../../../wasm3" + .url = "https://github.com/urbit/wasm3/archive/48832a8e023b57d671be6c0bab8608d30cb57101.tar.gz", + .hash = "N-V-__8AANAcSQBq71EmfSas8hV9_SOtu1AjOvuUcWZce5VM", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/ext/whereami/build.zig b/vere/ext/whereami/build.zig new file mode 100644 index 0000000..12419b2 --- /dev/null +++ b/vere/ext/whereami/build.zig @@ -0,0 +1,33 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const dep_c = b.dependency("whereami", .{ + .target = target, + .optimize = optimize, + }); + + const lib = b.addStaticLibrary(.{ + .name = "whereami", + .target = target, + .optimize = optimize, + }); + + lib.linkLibC(); + + lib.addIncludePath(dep_c.path("src")); + + lib.addCSourceFiles(.{ + .root = dep_c.path("src"), + .files = &.{"whereami.c"}, + .flags = &.{ + "-fno-sanitize=all", + }, + }); + + lib.installHeader(dep_c.path("src/whereami.h"), "whereami.h"); + + b.installArtifact(lib); +} diff --git a/vere/ext/whereami/build.zig.zon b/vere/ext/whereami/build.zig.zon new file mode 100644 index 0000000..67ec3af --- /dev/null +++ b/vere/ext/whereami/build.zig.zon @@ -0,0 +1,14 @@ +.{ + .name = .whereami, + .version = "0.0.1", + .fingerprint = 0x1150214595ba390, + .dependencies = .{ + .whereami = .{ + .url = "https://github.com/gpakosz/whereami/archive/ba364cd54fd431c76c045393b6522b4bff547f50.tar.gz", + .hash = "N-V-__8AALQtAQBEQG8__NumxBzcv4ws_jGX2zVgxvG6p6gs", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/flake.lock b/vere/flake.lock new file mode 100644 index 0000000..10f88e0 --- /dev/null +++ b/vere/flake.lock @@ -0,0 +1,48 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1712849433, + "narHash": "sha256-flQtf/ZPJgkLY/So3Fd+dGilw2DKIsiwgMEn7BbBHL0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f173d0881eff3b21ebb29a2ef8bedbc106c86ea5", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "parts": { + "inputs": { + "nixpkgs-lib": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "parts": "parts" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/vere/flake.nix b/vere/flake.nix new file mode 100644 index 0000000..0523728 --- /dev/null +++ b/vere/flake.nix @@ -0,0 +1,127 @@ +{ + description = "Vere build devshell"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; + parts = { + url = "github:hercules-ci/flake-parts"; + inputs.nixpkgs-lib.follows = "nixpkgs"; + }; + }; + + outputs = inputs@{ self, nixpkgs, parts }: parts.lib.mkFlake { inherit inputs; } (let + # map systems to the musl-cross-make target names; only + # x86_64-linux is tested though + toolchainTargets = { + "x86_64-linux" = "x86_64-linux-musl"; + "aarch64-linux" = "aarch64-linux-musl"; + }; + # map dep urls to hashes + toolchainDeps = { + "https://ftpmirror.gnu.org/gnu/gcc/gcc-9.4.0/gcc-9.4.0.tar.xz" = "13l3p6g2krilaawbapmn9zmmrh3zdwc36mfr3msxfy038hps6pf9"; + "https://ftpmirror.gnu.org/gnu/binutils/binutils-2.33.1.tar.xz" = "1grcf8jaw3i0bk6f9xfzxw3qfgmn6fgkr108isdkbh1y3hnzqrmb"; + "https://musl.libc.org/releases/musl-1.2.3.tar.gz" = "196lrzw0qy5axiz9p5ay50q2mls8hbfckr4rw0klc7jjc9h0nnvx"; + "https://ftpmirror.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2" = "1clg7pbpk6qwxj5b2mw0pghzawp2qlm3jf9gdd8i6fl6yh2bnxaj"; + "https://ftpmirror.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz" = "0biwnhjm3rx3hc0rfpvyniky4lpzsvdcwhmcn7f0h4iw2hwcb1b9"; + "https://ftpmirror.gnu.org/gnu/mpfr/mpfr-4.0.2.tar.bz2" = "1k1s4p56272bggvyrxfn3zdycr4wy7h5ipac70cr03lys013ypn0"; + "http://ftp.barfooze.de/pub/sabotage/tarballs//linux-headers-4.19.88-1.tar.xz" = "04r8k4ckqbklx9sfm07cr7vfw5ra4cic0rzanm9dfh0crxncfnwr"; + "http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=3d5db9ebe860" = "75d5d255a2a273b6e651f82eecfabf6cbcd8eaeae70e86b417384c8f4a58d8d3"; + }; + in { + systems = builtins.attrNames toolchainTargets; + + flake = {}; + + perSystem = { pkgs, system, ... }: let + target = toolchainTargets.${system}; + + # in order to make the toolchain derivation pure, spoof `wget` + # to use FODs for the dependencies that would otherwise be + # downloaded + pseudoWget = let + c = pkgs.coreutils; + in pkgs.writeScriptBin "wget" '' + #!${pkgs.stdenv.shell} + + declare -A targets + ${builtins.concatStringsSep "\n" + (builtins.map (url: + "targets[${nixpkgs.lib.escapeShellArg url}]=" + (nixpkgs.lib.escapeShellArg (pkgs.fetchurl { + inherit url; + sha256 = builtins.getAttr url toolchainDeps; + }))) + (builtins.attrNames toolchainDeps))} + + # -c -O target url + target="$3" + url="$4" + preFetched=${"$" + "{targets[$url]}"} + if [[ -z "$preFetched" ]]; then + ${c}/bin/echo 1>&2 "$target ($url) is new or changed, nix-prefetch-url it and add or update the url and hash in toolchainDeps in flake.nix" + exit 1 + fi + ${c}/bin/cp --reflink=auto "$preFetched" "$target" + ''; + + toolchain = let + # keep in sync with `_musl_cross_make_version` in + # bazel/toolchain/BUILD.bazel + version = "fe915821b652a7fa37b34a596f47d8e20bc72338"; + + # `-g -O2` are the defaults (there's no way to add cflags via + # config.mak), `-Wno-format-security` is the interesting + # addition (without which gcc build fails in several places + # due to `-Werror=format-security` being on for some reason) + commonCFLAGS = "-g -O2 -Wno-format-security"; + in pkgs.stdenv.mkDerivation { + name = "musl-cross-make"; + inherit system version; + src = pkgs.fetchFromGitHub { + owner = "richfelker"; + repo = "musl-cross-make"; + rev = version; + sha256 = "sha256-FthfhZ+qGf2nWLICvjaO8fiP5+PYU7PqFCbPwXmJFes="; + }; + + nativeBuildInputs = [ + pseudoWget + ]; + + enableParallelBuilding = true; + configurePhase = '' + cat > config.mak < + +#include + + /** Loobeans - inverse booleans to match nock. + **/ +# define c3y 0 +# define c3n 1 + +# define _(x) (c3y == (x)) +# define __(x) ((x) ? c3y : c3n) +# define c3a(x, y) __(_(x) && _(y)) +# define c3o(x, y) __(_(x) || _(y)) + + + /** Random useful C macros. + **/ + /* Dessert. Debug assert. If a debugger is attached, it will break in and + execution can be allowed to proceed without aborting the process. + Otherwise, the unhandled SIGTRAP will dump core. + */ +#ifdef C3DBG + #if defined(__i386__) || defined(__x86_64__) + #define c3_dessert(x) do { if(!(x)) __asm__ volatile("int $3"); } while (0) + #elif defined(__thumb__) + #define c3_dessert(x) do { if(!(x)) __asm__ volatile(".inst 0xde01"); } while (0) + #elif defined(__aarch64__) + #define c3_dessert(x) do { if(!(x)) __asm__ volatile(".inst 0xd4200000"); } while (0) + #elif defined(__arm__) + #define c3_dessert(x) do { if(!(x)) __asm__ volatile(".inst 0xe7f001f0"); } while (0) + #else + STATIC_ASSERT(0, "debugger break instruction unimplemented"); + #endif +#else + #define c3_dessert(x) ((void)(0)) +#endif + + /* Stub. + */ +# define c3_stub u3_assert(!"stub") + + /* Size in words. + */ +# define c3_wiseof(x) (((sizeof (x)) + 3) >> 2) + + /* Bit counting. + */ +#if (32 == (CHAR_BIT * __SIZEOF_INT__)) +# define c3_lz_w __builtin_clz +# define c3_tz_w __builtin_ctz +# define c3_pc_w __builtin_popcount +#elif (32 == (CHAR_BIT * __SIZEOF_LONG__)) +# define c3_lz_w __builtin_clzl +# define c3_tz_w __builtin_ctzl +# define c3_pc_w __builtin_popcountl +#else +# error "port me" +#endif + +#if (64 == (CHAR_BIT * __SIZEOF_LONG__)) +# define c3_lz_d __builtin_clzl +# define c3_tz_d __builtin_ctzl +# define c3_pc_d __builtin_popcountl +#elif (64 == (CHAR_BIT * __SIZEOF_LONG_LONG__)) +# define c3_lz_d __builtin_clzll +# define c3_tz_d __builtin_ctzll +# define c3_pc_d __builtin_popcountll +#else +# error "port me" +#endif + +# define c3_bits_word(w) ((w) ? (32 - c3_lz_w(w)) : 0) +# define c3_bits_dabl(d) ((d) ? (64 - c3_lz_d(d)) : 0) + + /* Min and max. + */ +# define c3_max(x, y) ( ((x) > (y)) ? (x) : (y) ) +# define c3_min(x, y) ( ((x) < (y)) ? (x) : (y) ) + + +//! Round up/down (respectively). +//! +//! @param[in] x Integer to round. +//! @param[in] n Multiple to round to. Must be power of 2. +//! +//! @return `x` rounded to the nearest multiple of `n`. +# define c3_rop(x, n) (((x) + ((n) - 1)) & (~((n) - 1))) +# define c3_rod(x, n) ((x) & ~((n) - 1)) + + /* Rotate. + */ +# define c3_rotw(r, x) ( ((x) << (r)) | ((x) >> (32 - (r))) ) + + /* Fill 16 words (64 bytes) with high-quality entropy. + */ + void + c3_rand(c3_w* rad_w); + + /* Short integers. + */ +# define c3_s1(a) ( (a) ) +# define c3_s2(a, b) ( ((b) << 8) | c3_s1(a) ) +# define c3_s3(a, b, c) ( ((c) << 16) | c3_s2(a, b) ) +# define c3_s4(a, b, c, d) ( ((d) << 24) | c3_s3(a, b, c) ) + +# define c3_s5(a, b, c, d, e) \ + ( ((uint64_t)c3_s1(e) << 32ULL) | c3_s4(a, b, c, d) ) +# define c3_s6(a, b, c, d, e, f) \ + ( ((uint64_t)c3_s2(e, f) << 32ULL) | c3_s4(a, b, c, d) ) +# define c3_s7(a, b, c, d, e, f, g) \ + ( ((uint64_t)c3_s3(e, f, g) << 32ULL) | c3_s4(a, b, c, d) ) +# define c3_s8(a, b, c, d, e, f, g, h) \ + ( ((uint64_t)c3_s4(e, f, g, h) << 32ULL) | c3_s4(a, b, c, d) ) + + /* Byte-order twiddling. + */ +# define c3_flip32(w) \ + ( (((w) >> 24) & 0xff) \ + | (((w) >> 16) & 0xff) << 8 \ + | (((w) >> 8) & 0xff) << 16 \ + | ( (w) & 0xff) << 24 ) + + inline c3_s + c3_sift_short(c3_y buf_y[2]) + { + return ((c3_s)buf_y[1] << 8 | (c3_s)buf_y[0]); + } + + inline c3_w + c3_sift_word(c3_y buf_y[4]) + { + return ((c3_w)buf_y[3] << 24 | (c3_w)buf_y[2] << 16 | (c3_w)buf_y[1] << 8 | (c3_w)buf_y[0]); + } + + inline c3_d + c3_sift_chub(c3_y byt_y[8]) + { + return (c3_d)byt_y[0] + | (c3_d)byt_y[1] << 8 + | (c3_d)byt_y[2] << 16 + | (c3_d)byt_y[3] << 24 + | (c3_d)byt_y[4] << 32 + | (c3_d)byt_y[5] << 40 + | (c3_d)byt_y[6] << 48 + | (c3_d)byt_y[7] << 56; + } + + inline void + c3_etch_short(c3_y buf_y[2], c3_s sot_s) + { + buf_y[0] = sot_s & 0xff; + buf_y[1] = (sot_s >> 8) & 0xff; + } + + inline void + c3_etch_word(c3_y buf_y[4], c3_w wod_w) + { + buf_y[0] = wod_w & 0xff; + buf_y[1] = (wod_w >> 8) & 0xff; + buf_y[2] = (wod_w >> 16) & 0xff; + buf_y[3] = (wod_w >> 24) & 0xff; + } + + inline void + c3_etch_chub(c3_y byt_y[8], c3_d num_d) + { + byt_y[0] = num_d & 0xff; + byt_y[1] = (num_d >> 8) & 0xff; + byt_y[2] = (num_d >> 16) & 0xff; + byt_y[3] = (num_d >> 24) & 0xff; + byt_y[4] = (num_d >> 32) & 0xff; + byt_y[5] = (num_d >> 40) & 0xff; + byt_y[6] = (num_d >> 48) & 0xff; + byt_y[7] = (num_d >> 56) & 0xff; + } + + /* Asserting allocators. + */ +# define c3_free(s) free(s) +# define c3_malloc(s) ({ \ + void* rut = malloc(s); \ + if ( 0 == rut ) { \ + fprintf(stderr, "c3_malloc(%" PRIu64 ") failed\r\n", \ + (c3_d)s); \ + u3_assert(!"memory lost"); \ + } \ + rut;}) +# define c3_calloc(s) ({ \ + void* rut = calloc(1,s); \ + if ( 0 == rut ) { \ + fprintf(stderr, "c3_calloc(%" PRIu64 ") failed\r\n", \ + (c3_d)s); \ + u3_assert(!"memory lost"); \ + } \ + rut;}) +# define c3_realloc(a, b) ({ \ + void* rut = realloc(a, b); \ + if ( 0 == rut ) { \ + fprintf(stderr, "c3_realloc(%" PRIu64 ") failed\r\n", \ + (c3_d)b); \ + u3_assert(!"memory lost"); \ + } \ + rut;}) + + /* Asserting unix fs wrappers. + ** + ** these all crash the process if passed a non-canonical + ** path (i.e., one containing '.', '..', or the empty path + ** component), so make sure you don't pass them one. if you + ** find yourself fighting with them, then please delete them + ** and do a sed search-and-replace to remove the `c3_` from + ** their call sites; their goal is to decrease maintenance + ** burden, not increase it. + */ + // defined in vere/io/unix.c. + c3_t u3_unix_cane(const c3_c* pax_c); +# define c3_open(a, ...) ({ \ + open(a, __VA_ARGS__);}) +# define c3_opendir(a) ({ \ + opendir(a);}) +# define c3_mkdir(a, b) ({ \ + mkdir(a, b);}) +# define c3_rmdir(a) ({ \ + rmdir(a);}) +# define c3_link(a, b) ({ \ + link(a, b);}) +# define c3_unlink(a) ({ \ + unlink(a);}) +# define c3_fopen(a, b) ({ \ + fopen(a, b);}) +# define c3_remove(a) ({ \ + remove(a);}) +# define c3_rename(a, b) ({ \ + rename(a, b);}) + +/* c3_align( + x - the address/quantity to align, + al - the alignment, + hilo - [C3_ALGHI, C3_ALGLO] high or low align + ) + + hi or lo align x to al + + unless effective type of x is c3_w or c3_d, assumes x is a pointer. +*/ +#define c3_align(x, al, hilo) \ + _Generic((x), \ + c3_w : c3_align_w, \ + c3_d : c3_align_d, \ + default : c3_align_p) \ + (x, al, hilo) +typedef enum { C3_ALGHI=1, C3_ALGLO=0 } align_dir; +inline c3_w +c3_align_w(c3_w x, c3_w al, align_dir hilo) { + c3_dessert(hilo <= C3_ALGHI && hilo >= C3_ALGLO); + x += hilo * (al - 1); + x &= ~(al - 1); + return x; +} +inline c3_d +c3_align_d(c3_d x, c3_d al, align_dir hilo) { + c3_dessert(hilo <= C3_ALGHI && hilo >= C3_ALGLO); + x += hilo * (al - 1); + x &= ~(al - 1); + return x; +} +inline void* +c3_align_p(void const * p, size_t al, align_dir hilo) { + uintptr_t x = (uintptr_t)p; + c3_dessert(hilo <= C3_ALGHI && hilo >= C3_ALGLO); + x += hilo * (al - 1); + x &= ~(al - 1); + return (void*)x; +} + +#endif /* ifndef C3_DEFS_H */ diff --git a/vere/pkg/c3/motes.h b/vere/pkg/c3/motes.h new file mode 100644 index 0000000..3ba8a70 --- /dev/null +++ b/vere/pkg/c3/motes.h @@ -0,0 +1,1397 @@ +/// @file + +#ifndef C3_MOTES_H +#define C3_MOTES_H + +#include "defs.h" + + /** Definitions. + **/ + +# define c3__a c3_s1('a') +# define c3__a50 c3_s3('a','5','0') +# define c3__abel c3_s4('a','b','e','l') +# define c3__abo c3_s3('a','b','o') +# define c3__actd c3_s4('a','c','t','d') +# define c3__add c3_s3('a','d','d') +# define c3__aka c3_s3('a','k','a') +# define c3__all c3_s3('a','l','l') +# define c3__alrm c3_s4('a','l','r','m') +# define c3__amat c3_s4('a','m','a','t') +# define c3__ames c3_s4('a','m','e','s') +# define c3__and c3_s3('a','n','d') +# define c3__ankh c3_s4('a','n','k','h') +# define c3__any c3_s3('a','n','y') +# define c3__ap c3_s2('a','p') +# define c3__apen c3_s4('a','p','e','n') +# define c3__aro c3_s3('a','r','o') +# define c3__arvo c3_s4('a','r','v','o') +# define c3__ash c3_s3('a','s','h') +# define c3__at c3_s2('a','t') +# define c3__atom c3_s4('a','t','o','m') +# define c3__auth c3_s4('a','u','t','h') +# define c3__auto c3_s4('a','u','t','o') +# define c3__avow c3_s4('a','v','o','w') +# define c3__awry c3_s4('a','w','r','y') +# define c3__ax c3_s2('a','x') +# define c3__axe c3_s3('a','x','e') +# define c3__axil c3_s4('a','x','i','l') +# define c3__axis c3_s4('a','x','i','s') +# define c3__b c3_s1('b') +# define c3__bac c3_s3('b','a','c') +# define c3__bach c3_s4('b','a','c','h') +# define c3__bag c3_s3('b','a','g') +# define c3__bail c3_s4('b','a','i','l') +# define c3__ball c3_s4('b','a','l','l') +# define c3__band c3_s4('b','a','n','d') +# define c3__bank c3_s4('b','a','n','k') +# define c3__bar c3_s3('b','a','r') +# define c3__bark c3_s4('b','a','r','k') +# define c3__barn c3_s4('b','a','r','n') +# define c3__base c3_s4('b','a','s','e') +# define c3__bask c3_s4('b','a','s','k') +# define c3__basp c3_s4('b','a','s','p') +# define c3__bbye c3_s4('b','b','y','e') +# define c3__bcbn c3_s4('b','c','b','n') +# define c3__bcbr c3_s4('b','c','b','r') +# define c3__bccb c3_s4('b','c','c','b') +# define c3__bccn c3_s4('b','c','c','n') +# define c3__bcdg c3_s4('b','c','d','g') +# define c3__bcdt c3_s4('b','c','d','t') +# define c3__bckt c3_s4('b','c','k','t') +# define c3__bclc c3_s4('b','c','l','c') +# define c3__bcmt c3_s4('b','c','m','t') +# define c3__bcpm c3_s4('b','c','p','m') +# define c3__bcpt c3_s4('b','c','p','t') +# define c3__bcsg c3_s4('b','c','s','g') +# define c3__bctr c3_s4('b','c','t','r') +# define c3__bcts c3_s4('b','c','t','s') +# define c3__bczp c3_s4('b','c','z','p') +# define c3__bead c3_s4('b','e','a','d') +# define c3__beam c3_s4('b','e','a','m') +# define c3__bean c3_s4('b','e','a','n') +# define c3__bear c3_s4('b','e','a','r') +# define c3__bede c3_s4('b','e','d','e') +# define c3__bee c3_s3('b','e','e') +# define c3__behn c3_s4('b','e','h','n') +# define c3__bel c3_s3('b','e','l') +# define c3__belt c3_s4('b','e','l','t') +# define c3__bend c3_s4('b','e','n','d') +# define c3__ber c3_s3('b','e','r') +# define c3__bias c3_s4('b','i','a','s') +# define c3__bic c3_s3('b','i','c') +# define c3__bind c3_s4('b','i','n','d') +# define c3__bink c3_s4('b','i','n','k') +# define c3__bird c3_s4('b','i','r','d') +# define c3__bit c3_s3('b','i','t') +# define c3__bl c3_s2('b','l') +# define c3__blan c3_s4('b','l','a','n') +# define c3__blap c3_s4('b','l','a','p') +# define c3__bleb c3_s4('b','l','e','b') +# define c3__blem c3_s4('b','l','e','m') +# define c3__blew c3_s4('b','l','e','w') +# define c3__blin c3_s4('b','l','i','n') +# define c3__blit c3_s4('b','l','i','t') +# define c3__blob c3_s4('b','l','o','b') +# define c3__blob c3_s4('b','l','o','b') +# define c3__blog c3_s4('b','l','o','g') +# define c3__bloq c3_s4('b','l','o','q') +# define c3__blot c3_s4('b','l','o','t') +# define c3__blow c3_s4('b','l','o','w') +# define c3__blue c3_s4('b','l','u','e') +# define c3__blur c3_s4('b','l','u','r') +# define c3__bndl c3_s4('b','n','d','l') +# define c3__bndp c3_s4('b','n','d','p') +# define c3__bnld c3_s4('b','n','l','d') +# define c3__bnnp c3_s4('b','n','n','p') +# define c3__bnpd c3_s4('b','n','p','d') +# define c3__bnps c3_s4('b','n','p','s') +# define c3__bnsp c3_s4('b','n','s','p') +# define c3__boat c3_s4('b','o','a','t') +# define c3__boce c3_s4('b','o','c','e') +# define c3__boil c3_s4('b','o','i','l') +# define c3__boin c3_s4('b','o','i','n') +# define c3__bolt c3_s4('b','o','l','t') +# define c3__bond c3_s4('b','o','n','d') +# define c3__bone c3_s4('b','o','n','e') +# define c3__bong c3_s4('b','o','n','g') +# define c3__book c3_s4('b','o','o','k') +# define c3__bool c3_s4('b','o','o','l') +# define c3__boot c3_s4('b','o','o','t') +# define c3__born c3_s4('b','o','r','n') +# define c3__both c3_s4('b','o','t','h') +# define c3__bout c3_s4('b','o','u','t') +# define c3__box c3_s3('b','o','x') +# define c3__br c3_s2('b','r') +# define c3__bran c3_s4('b','r','a','n') +# define c3__brax c3_s4('b','r','a','x') +# define c3__brbn c3_s4('b','r','b','n') +# define c3__brcb c3_s4('b','r','c','b') +# define c3__brcl c3_s4('b','r','c','l') +# define c3__brcn c3_s4('b','r','c','n') +# define c3__brcs c3_s4('b','r','c','s') +# define c3__brdg c3_s4('b','r','d','g') +# define c3__brdl c3_s4('b','r','d','l') +# define c3__brdp c3_s4('b','r','d','p') +# define c3__brdt c3_s4('b','r','d','t') +# define c3__brhp c3_s4('b','r','h','p') +# define c3__brip c3_s4('b','r','i','p') +# define c3__brkt c3_s4('b','r','k','t') +# define c3__brlc c3_s4('b','r','l','c') +# define c3__brld c3_s4('b','r','l','d') +# define c3__brls c3_s4('b','r','l','s') +# define c3__brms c3_s4('b','r','m','s') +# define c3__brmt c3_s4('b','r','m','t') +# define c3__brnp c3_s4('b','r','n','p') +# define c3__broc c3_s4('b','r','o','c') +# define c3__bron c3_s4('b','r','o','n') +# define c3__brop c3_s4('b','r','o','p') +# define c3__brov c3_s4('b','r','o','v') +# define c3__brpd c3_s4('b','r','p','d') +# define c3__brps c3_s4('b','r','p','s') +# define c3__brrt c3_s4('b','r','r','t') +# define c3__brsg c3_s4('b','r','s','g') +# define c3__brsp c3_s4('b','r','s','p') +# define c3__brtg c3_s4('b','r','t','g') +# define c3__brtr c3_s4('b','r','t','r') +# define c3__brts c3_s4('b','r','t','s') +# define c3__brvt c3_s4('b','r','v','t') +# define c3__brwt c3_s4('b','r','w','t') +# define c3__brzp c3_s4('b','r','z','p') +# define c3__bud c3_s3('b','u','d') +# define c3__bull c3_s4('b','u','l','l') +# define c3__bump c3_s4('b','u','m','p') +# define c3__bund c3_s4('b','u','n','d') +# define c3__bung c3_s4('b','u','n','g') +# define c3__bunk c3_s4('b','u','n','k') +# define c3__bunt c3_s4('b','u','n','t') +# define c3__bunx c3_s4('b','u','n','x') +# define c3__burn c3_s4('b','u','r','n') +# define c3__busk c3_s4('b','u','s','k') +# define c3__bust c3_s4('b','u','s','t') +# define c3__butt c3_s4('b','u','t','t') +# define c3__by c3_s2('b','y') +# define c3__byte c3_s4('b','y','t','e') +# define c3__c c3_s1('c') +# define c3__cage c3_s4('c','a','g','e') +# define c3__cain c3_s4('c','a','i','n') +# define c3__call c3_s4('c','a','l','l') +# define c3__can c3_s3('c','a','n') +# define c3__cap c3_s3('c','a','p') +# define c3__card c3_s4('c','a','r','d') +# define c3__carp c3_s4('c','a','r','p') +# define c3__cary c3_s4('c','a','r','y') +# define c3__case c3_s4('c','a','s','e') +# define c3__cash c3_s4('c','a','s','h') +# define c3__cast c3_s4('c','a','s','t') +# define c3__cat c3_s3('c','a','t') +# define c3__cato c3_s4('c','a','t','o') +# define c3__cay c3_s3('c','a','y') +# define c3__cbbn c3_s4('c','b','b','n') +# define c3__cbbr c3_s4('c','b','b','r') +# define c3__cbdg c3_s4('c','b','d','g') +# define c3__cbkt c3_s4('c','b','k','t') +# define c3__cblc c3_s4('c','b','l','c') +# define c3__cbmt c3_s4('c','b','m','t') +# define c3__cbpm c3_s4('c','b','p','m') +# define c3__cbtr c3_s4('c','b','t','r') +# define c3__cdr c3_s3('c','d','r') +# define c3__ce c3_s2('c','e') +# define c3__cell c3_s4('c','e','l','l') +# define c3__chaf c3_s4('c','h','a','f') +# define c3__chan c3_s4('c','h','a','n') +# define c3__chew c3_s4('c','h','e','w') +# define c3__chis c3_s4('c','h','i','s') +# define c3__chob c3_s4('c','h','o','b') +# define c3__chop c3_s4('c','h','o','p') +# define c3__chug c3_s4('c','h','u','g') +# define c3__claf c3_s4('c','l','a','f') +# define c3__clam c3_s4('c','l','a','m') +# define c3__clap c3_s4('c','l','a','p') +# define c3__clat c3_s4('c','l','a','t') +# define c3__clay c3_s4('c','l','a','y') +# define c3__clcb c3_s4('c','l','c','b') +# define c3__clcn c3_s4('c','l','c','n') +# define c3__clep c3_s4('c','l','e','p') +# define c3__clet c3_s4('c','l','e','t') +# define c3__clhp c3_s4('c','l','h','p') +# define c3__clip c3_s4('c','l','i','p') +# define c3__clkt c3_s4('c','l','k','t') +# define c3__clls c3_s4('c','l','l','s') +# define c3__clms c3_s4('c','l','m','s') +# define c3__clr c3_s3('c','l','r') +# define c3__clsg c3_s4('c','l','s','g') +# define c3__clsp c3_s4('c','l','s','p') +# define c3__cltr c3_s4('c','l','t','r') +# define c3__cnbc c3_s4('c','n','b','c') +# define c3__cnbr c3_s4('c','n','b','r') +# define c3__cncb c3_s4('c','n','c','b') +# define c3__cncl c3_s4('c','n','c','l') +# define c3__cndt c3_s4('c','n','d','t') +# define c3__cnhp c3_s4('c','n','h','p') +# define c3__cnhs c3_s4('c','n','h','s') +# define c3__cnhx c3_s4('c','n','h','x') +# define c3__cnkt c3_s4('c','n','k','t') +# define c3__cnls c3_s4('c','n','l','s') +# define c3__cnms c3_s4('c','n','m','s') +# define c3__cnpm c3_s4('c','n','p','m') +# define c3__cnsg c3_s4('c','n','s','g') +# define c3__cntr c3_s4('c','n','t','r') +# define c3__cnts c3_s4('c','n','t','s') +# define c3__cnzy c3_s4('c','n','z','y') +# define c3__cnzz c3_s4('c','n','z','z') +# define c3__coat c3_s4('c','o','a','t') +# define c3__code c3_s4('c','o','d','e') +# define c3__coin c3_s4('c','o','i','n') +# define c3__colb c3_s4('c','o','l','b') +# define c3__cold c3_s4('c','o','l','d') +# define c3__comb c3_s4('c','o','m','b') +# define c3__come c3_s4('c','o','m','e') +# define c3__con c3_s3('c','o','n') +# define c3__cone c3_s4('c','o','n','e') +# define c3__cong c3_s4('c','o','n','g') +# define c3__conn c3_s4('c','o','n','n') +# define c3__cons c3_s4('c','o','n','s') +# define c3__cook c3_s4('c','o','o','k') +# define c3__cool c3_s4('c','o','o','l') +# define c3__core c3_s4('c','o','r','e') +# define c3__corm c3_s4('c','o','r','m') +# define c3__corp c3_s4('c','o','r','p') +# define c3__corp c3_s4('c','o','r','p') +# define c3__cow c3_s3('c','o','w') +# define c3__cplx c3_s3('c','p','l','x') +# define c3__cpu c3_s3('c','p','u') +# define c3__crad c3_s4('c','r','a','d') +# define c3__cram c3_s4('c','r','a','m') +# define c3__crap c3_s4('c','r','a','p') +# define c3__cret c3_s4('c','r','e','t') +# define c3__crib c3_s4('c','r','i','b') +# define c3__crof c3_s4('c','r','o','f') +# define c3__crop c3_s4('c','r','o','p') +# define c3__crot c3_s4('c','r','o','t') +# define c3__crud c3_s4('c','r','u','d') +# define c3__csbn c3_s4('c','s','b','n') +# define c3__csbr c3_s4('c','s','b','r') +# define c3__csdg c3_s4('c','s','d','g') +# define c3__csdl c3_s4('c','s','d','l') +# define c3__csdp c3_s4('c','s','d','p') +# define c3__csdt c3_s4('c','s','d','t') +# define c3__csin c3_s4('c','s','i','n') +# define c3__csip c3_s4('c','s','i','p') +# define c3__cslc c3_s4('c','s','l','c') +# define c3__csld c3_s4('c','s','l','d') +# define c3__csnp c3_s4('c','s','n','p') +# define c3__cspm c3_s4('c','s','p','m') +# define c3__csps c3_s4('c','s','p','s') +# define c3__csrt c3_s4('c','s','r','t') +# define c3__cssg c3_s4('c','s','s','g') +# define c3__cssp c3_s4('c','s','s','p') +# define c3__cstg c3_s4('c','s','t','g') +# define c3__cstr c3_s4('c','s','t','r') +# define c3__cszp c3_s4('c','s','z','p') +# define c3__ctl c3_s3('c','t','l') +# define c3__cttp c3_s4('c','t','t','p') +# define c3__cube c3_s4('c','u','b','e') +# define c3__cull c3_s4('c','u','l','l') +# define c3__curd c3_s4('c','u','r','d') +# define c3__cut c3_s3('c','u','t') +# define c3__cyl c3_s3('c','y','l') +# define c3__czar c3_s4('c','z','a','r') +# define c3__d c3_s1('d') +# define c3__da c3_s2('d','a') +# define c3__dago c3_s4('d','a','g','o') +# define c3__dant c3_s4('d','a','n','t') +# define c3__dast c3_s4('d','a','s','t') +# define c3__data c3_s4('d','a','t','a') +# define c3__dawn c3_s4('d','a','w','n') +# define c3__dbug c3_s4('d','b','u','g') +# define c3__dec c3_s3('d','e','c') +# define c3__deem c3_s4('d','e','e','m') +# define c3__deep c3_s4('d','e','e','p') +# define c3__defn c3_s4('d','e','f','n') +# define c3__del c3_s3('d','e','l') +# define c3__dear c3_s4('d','e','a','r') +# define c3__delc c3_s4('d','e','l','c') +# define c3__delt c3_s4('d','e','l','t') +# define c3__dept c3_s4('d','e','p','t') +# define c3__dext c3_s4('d','e','x','t') +# define c3__dgdp c3_s4('d','g','d','p') +# define c3__dgkt c3_s4('d','g','k','t') +# define c3__dgnp c3_s4('d','g','n','p') +# define c3__dgpd c3_s4('d','g','p','d') +# define c3__dgps c3_s4('d','g','p','s') +# define c3__dgrt c3_s4('d','g','r','t') +# define c3__dgsg c3_s4('d','g','s','g') +# define c3__dgsp c3_s4('d','g','s','p') +# define c3__dgtg c3_s4('d','g','t','g') +# define c3__dgtr c3_s4('d','g','t','r') +# define c3__dice c3_s4('d','i','c','e') +# define c3__die c3_s3('d','i','e') +# define c3__dill c3_s4('d','i','l','l') +# define c3__dire c3_s4('d','i','r','e') +# define c3__dirk c3_s4('d','i','r','k') +# define c3__dis c3_s3('d','i','s') +# define c3__dish c3_s4('d','i','s','h') +# define c3__disk c3_s4('d','i','s','k') +# define c3__div c3_s3('d','i','v') +# define c3__dmal c3_s4('d','m','a','l') +# define c3__do c3_s2('d','o') +# define c3__doc c3_s3('d','o','c') +# define c3__dock c3_s4('d','o','c','k') +# define c3__docs c3_s4('d','o','c','s') +# define c3__dogo c3_s4('d','o','g','o') +# define c3__dojo c3_s4('d','o','j','o') +# define c3__dome c3_s4('d','o','m','e') +# define c3__done c3_s4('d','o','n','e') +# define c3__doom c3_s4('d','o','o','m') +# define c3__door c3_s4('d','o','o','r') +# define c3__dorn c3_s4('d','o','r','n') +# define c3__dost c3_s4('d','o','s','t') +# define c3__dot c3_s3('d','o','t') +# define c3__doze c3_s4('d','o','z','e') +# define c3__drag c3_s4('d','r','a','g') +# define c3__draz c3_s4('d','r','a','z') +# define c3__drib c3_s4('d','r','i','b') +# define c3__drol c3_s4('d','r','o','l') +# define c3__dron c3_s4('d','r','o','n') +# define c3__drop c3_s4('d','r','o','p') +# define c3__drun c3_s4('d','r','u','n') +# define c3__dry c3_s3('d','r','y') +# define c3__dtbn c3_s4('d','t','b','n') +# define c3__dtcs c3_s4('d','t','c','s') +# define c3__dtdt c3_s4('d','t','d','t') +# define c3__dthx c3_s4('d','t','h','x') +# define c3__dtkt c3_s4('d','t','k','t') +# define c3__dtlc c3_s4('d','t','l','c') +# define c3__dtls c3_s4('d','t','l','s') +# define c3__dtpd c3_s4('d','t','p','d') +# define c3__dtps c3_s4('d','t','p','s') +# define c3__dtpt c3_s4('d','t','p','t') +# define c3__dtrt c3_s4('d','t','r','t') +# define c3__dtsg c3_s4('d','t','s','g') +# define c3__dttg c3_s4('d','t','t','g') +# define c3__dttr c3_s4('d','t','t','r') +# define c3__dtts c3_s4('d','t','t','s') +# define c3__dtwt c3_s4('d','t','w','t') +# define c3__dtzy c3_s4('d','t','z','y') +# define c3__dtzz c3_s4('d','t','z','z') +# define c3__dub c3_s3('d','u','b') +# define c3__duct c3_s4('d','u','c','t') +# define c3__duke c3_s4('d','u','k','e') +# define c3__dumb c3_s4('d','u','m','b') +# define c3__dump c3_s4('d','u','m','p') +# define c3__dust c3_s4('d','u','s','t') +# define c3__dxkt c3_s4('d','x','k','t') +# define c3__e c3_s1('e') +# define c3__earl c3_s4('e','a','r','l') +# define c3__east c3_s4('e','a','s','t') +# define c3__echo c3_s4('e','c','h','o') +# define c3__edge c3_s4('e','d','g','e') +# define c3__edit c3_s4('e','d','i','t') +# define c3__elm c3_s3('e','l','m') +# define c3__else c3_s4('e','l','s','e') +# define c3__emph c3_s4('e','m','p','h') +# define c3__end c3_s3('e','n','d') +# define c3__eq c3_s2('e','q') +# define c3__ergo c3_s4('e','r','g','o') +# define c3__esh c3_s3('e','s','h') +# define c3__etch c3_s4('e','t','c','h') +# define c3__eval c3_s4('e','v','a','l') +# define c3__evil c3_s4('e','v','i','l') +# define c3__ex c3_s2('e','x') +# define c3__exit c3_s4('e','x','i','t') +# define c3__eyre c3_s4('e','y','r','e') +# define c3__f c3_s1('f') +# define c3__f32 c3_s3('f','3','2') +# define c3__f64 c3_s3('f','6','4') +# define c3__fx c3_s2('f','x') +# define c3__fab c3_s3('f','a','b') +# define c3__face c3_s4('f','a','c','e') +# define c3__fail c3_s4('f','a','i','l') +# define c3__fair c3_s4('f','a','i','r') +# define c3__fake c3_s4('f','a','k','e') +# define c3__fan c3_s3('f','a','n') +# define c3__farg c3_s4('f','a','r','g') +# define c3__fast c3_s4('f','a','s','t') +# define c3__fdec c3_s4('f','d','e','c') +# define c3__felk c3_s4('f','e','l','k') +# define c3__feng c3_s4('f','e','n','g') +# define c3__fent c3_s4('f','e','n','t') +# define c3__ferd c3_s4('f','e','r','d') +# define c3__fhex c3_s4('f','h','e','x') +# define c3__file c3_s4('f','i','l','e') +# define c3__film c3_s4('f','i','l','m') +# define c3__find c3_s4('f','i','n','d') +# define c3__fine c3_s4('f','i','n','e') +# define c3__fing c3_s4('f','i','n','g') +# define c3__fink c3_s4('f','i','n','k') +# define c3__fino c3_s4('f','i','n','o') +# define c3__fir c3_s3('f','i','r') +# define c3__fire c3_s4('f','i','r','e') +# define c3__firm c3_s4('f','i','r','m') +# define c3__fish c3_s4('f','i','s','h') +# define c3__fist c3_s4('f','i','s','t') +# define c3__fit c3_s3('f','i','t') +# define c3__fits c3_s4('f','i','t','s') +# define c3__fix c3_s3('f','i','x') +# define c3__fixp c3_s3('f','i','x','p') +# define c3__fl c3_s2('f','l') +# define c3__flac c3_s4('f','l','a','c') +# define c3__flag c3_s4('f','l','a','g') +# define c3__flat c3_s4('f','l','a','t') +# define c3__flec c3_s4('f','l','e','c') +# define c3__flet c3_s4('f','l','e','t') +# define c3__flic c3_s4('f','l','i','c') +# define c3__flip c3_s4('f','l','i','p') +# define c3__flit c3_s4('f','l','i','t') +# define c3__flog c3_s4('f','l','o','g') +# define c3__flot c3_s4('f','l','o','t') +# define c3__flow c3_s4('f','l','o','w') +# define c3__fon c3_s3('f','o','n') +# define c3__fond c3_s4('f','o','n','d') +# define c3__for c3_s3('f','o','r') +# define c3__forb c3_s4('f','o','r','b') +# define c3__fore c3_s4('f','o','r','e') +# define c3__fork c3_s4('f','o','r','k') +# define c3__form c3_s4('f','o','r','m') +# define c3__forq c3_s4('f','o','r','q') +# define c3__foul c3_s4('f','o','u','l') +# define c3__frag c3_s4('f','r','a','g') +# define c3__free c3_s4('f','r','e','e') +# define c3__frez c3_s4('f','r','e','z') +# define c3__frit c3_s4('f','r','i','t') +# define c3__frog c3_s4('f','r','o','g') +# define c3__from c3_s4('f','r','o','m') +# define c3__fron c3_s4('f','r','o','n') +# define c3__fry c3_s3('f','r','y') +# define c3__fuge c3_s4('f','u','g','e') +# define c3__full c3_s4('f','u','l','l') +# define c3__fume c3_s4('f','u','m','e') +# define c3__fun c3_s3('f','u','n') +# define c3__fund c3_s4('f','u','n','d') +# define c3__fung c3_s4('f','u','n','g') +# define c3__funk c3_s4('f','u','n','k') +# define c3__fuse c3_s4('f','u','s','e') +# define c3__fuss c3_s4('f','u','s','s') +# define c3__fyrd c3_s4('f','y','r','d') +# define c3__gab c3_s3('g','a','b') +# define c3__galb c3_s4('g','a','l','b') +# define c3__gald c3_s4('g','a','l','d') +# define c3__galk c3_s4('g','a','l','k') +# define c3__game c3_s4('g','a','m','e') +# define c3__gamp c3_s4('g','a','m','p') +# define c3__gant c3_s4('g','a','n','t') +# define c3__garc c3_s4('g','a','r','c') +# define c3__gate c3_s4('g','a','t','e') +# define c3__gath c3_s4('g','a','t','h') +# define c3__ge c3_s2('g','e') +# define c3__gear c3_s4('g','e','a','r') +# define c3__gen c3_s3('g','e','n') +# define c3__gene c3_s4('g','e','n','e') +# define c3__germ c3_s4('g','e','r','m') +# define c3__gent c3_s4('g','e','n','t') +# define c3__get c3_s3('g','e','t') +# define c3__give c3_s4('g','i','v','e') +# define c3__glax c3_s4('g','l','a','x') +# define c3__glaz c3_s4('g','l','a','z') +# define c3__gleb c3_s4('g','l','e','b') +# define c3__glem c3_s4('g','l','e','m') +# define c3__glid c3_s4('g','l','i','d') +# define c3__glon c3_s4('g','l','o','n') +# define c3__glop c3_s4('g','l','o','p') +# define c3__gluc c3_s4('g','l','u','c') +# define c3__glue c3_s4('g','l','u','e') +# define c3__gnom c3_s4('g','n','o','m') +# define c3__gnum c3_s4('g','n','u','m') +# define c3__go c3_s2('g','o') +# define c3__goat c3_s4('g','o','a','t') +# define c3__gold c3_s4('g','o','l','d') +# define c3__good c3_s4('g','o','o','d') +# define c3__gorm c3_s4('g','o','r','m') +# define c3__goto c3_s4('g','o','t','o') +# define c3__grab c3_s4('g','r','a','b') +# define c3__grad c3_s4('g','r','a','d') +# define c3__gram c3_s4('g','r','a','m') +# define c3__gran c3_s4('g','r','a','n') +# define c3__grat c3_s4('g','r','a','t') +# define c3__gray c3_s4('g','r','a','y') +# define c3__grel c3_s4('g','r','e','l') +# define c3__gret c3_s4('g','r','e','t') +# define c3__grik c3_s4('g','r','i','k') +# define c3__gril c3_s4('g','r','i','l') +# define c3__grip c3_s4('g','r','i','p') +# define c3__grit c3_s4('g','r','i','t') +# define c3__griv c3_s4('g','r','i','v') +# define c3__grix c3_s4('g','r','i','x') +# define c3__grop c3_s4('g','r','o','p') +# define c3__grun c3_s4('g','r','u','n') +# define c3__gt c3_s2('g','t') +# define c3__gulf c3_s4('g','u','l','f') +# define c3__gull c3_s4('g','u','l','l') +# define c3__gult c3_s4('g','u','l','t') +# define c3__gund c3_s4('g','u','n','d') +# define c3__gunn c3_s4('g','u','n','n') +# define c3__hack c3_s4('h','a','c','k') +# define c3__hail c3_s4('h','a','i','l') +# define c3__hair c3_s4('h','a','i','r') +# define c3__hake c3_s4('h','a','k','e') +# define c3__halc c3_s4('h','a','l','c') +# define c3__hand c3_s4('h','a','n','d') +# define c3__hang c3_s4('h','a','n','g') +# define c3__hard c3_s4('h','a','r','d') +# define c3__harm c3_s4('h','a','r','m') +# define c3__harp c3_s4('h','a','r','p') +# define c3__have c3_s4('h','a','v','e') +# define c3__head c3_s4('h','e','a','d') +# define c3__heal c3_s4('h','e','a','l') +# define c3__hear c3_s4('h','e','a','r') +# define c3__heer c3_s4('h','e','e','r') +# define c3__hela c3_s4('h','e','l','a') +# define c3__helm c3_s4('h','e','l','m') +# define c3__helo c3_s4('h','e','l','o') +# define c3__help c3_s4('h','e','l','p') +# define c3__hep c3_s3('h','e','p') +# define c3__hept c3_s4('h','e','p','t') +# define c3__herb c3_s4('h','e','r','b') +# define c3__hevy c3_s4('h','e','v','y') +# define c3__hez c3_s3('h','e','z') +# define c3__hide c3_s4('h','i','d','e') +# define c3__high c3_s4('h','i','g','h') +# define c3__hike c3_s4('h','i','k','e') +# define c3__hill c3_s4('h','i','l','l') +# define c3__hind c3_s4('h','i','n','d') +# define c3__hint c3_s4('h','i','n','t') +# define c3__hit c3_s3('h','i','t') +# define c3__hmac c3_s4('h','m','a','c') +# define c3__hmal c3_s4('h','m','a','l') +# define c3__hold c3_s4('h','o','l','d') +# define c3__hole c3_s4('h','o','l','e') +# define c3__holt c3_s4('h','o','l','t') +# define c3__home c3_s4('h','o','m','e') +# define c3__homp c3_s4('h','o','m','p') +# define c3__hook c3_s4('h','o','o','k') +# define c3__hoon c3_s4('h','o','o','n') +# define c3__hoot c3_s4('h','o','o','t') +# define c3__hop c3_s3('h','o','p') +# define c3__hosc c3_s4('h','o','s','c') +# define c3__hose c3_s4('h','o','s','e') +# define c3__hrul c3_s4('h','r','u','l') +# define c3__hsbn c3_s4('h','s','b','n') +# define c3__hsbr c3_s4('h','s','b','r') +# define c3__hscn c3_s4('h','s','c','n') +# define c3__hsdg c3_s4('h','s','d','g') +# define c3__hskt c3_s4('h','s','k','t') +# define c3__hslc c3_s4('h','s','l','c') +# define c3__hsmt c3_s4('h','s','m','t') +# define c3__hspm c3_s4('h','s','p','m') +# define c3__hssg c3_s4('h','s','s','g') +# define c3__hstr c3_s4('h','s','t','r') +# define c3__hsts c3_s4('h','s','t','s') +# define c3__htcn c3_s4('h','t','c','n') +# define c3__htls c3_s4('h','t','l','s') +# define c3__html c3_s4('h','t','m','l') +# define c3__htmt c3_s4('h','t','m','t') +# define c3__http c3_s4('h','t','t','p') +# define c3__hume c3_s4('h','u','m','e') +# define c3__hunk c3_s4('h','u','n','k') +# define c3__hxgl c3_s4('h','x','g','l') +# define c3__hxgr c3_s4('h','x','g','r') +# define c3__hxtr c3_s4('h','x','t','r') +# define c3__hxts c3_s4('h','x','t','s') +# define c3__i c3_s1('i') +# define c3__i32 c3_s3('i','3','2') +# define c3__i64 c3_s3('i','6','4') +# define c3__ic c3_s2('i','c') +# define c3__ice c3_s3('i','c','e') +# define c3__iced c3_s4('i','c','e','d') +# define c3__id c3_s2('i','d') +# define c3__idle c3_s4('i','d','l','e') +# define c3__if c3_s2('i','f') +# define c3__ifix c3_s4('i','f','i','x') +# define c3__in c3_s2('i','n') +# define c3__inc c3_s3('i','n','c') +# define c3__info c3_s4('i','n','f','o') +# define c3__init c3_s4('i','n','i','t') +# define c3__ins c3_s3('i','n','s') +# define c3__int2 c3_s4('i','n','t','2') +# define c3__into c3_s4('i','n','t','o') +# define c3__intr c3_s4('i','n','t','r') +# define c3__inuk c3_s4('i','n','u','k') +# define c3__ipv4 c3_s4('i','p','v','4') +# define c3__iron c3_s4('i','r','o','n') +# define c3__is c3_s2('i','s') +# define c3__item c3_s4('i','t','e','m') +# define c3__ix c3_s2('i','x') +# define c3__i754 c3_s4('i','7','5','4') +# define c3__j c3_s1('j') +# define c3__jack c3_s4('j','a','c','k') +# define c3__jam c3_s3('j','a','m') +# define c3__jamx c3_s4('j','a','m','x') +# define c3__jamz c3_s4('j','a','m','z') +# define c3__jato c3_s4('j','a','t','o') +# define c3__jet c3_s3('j','e','t') +# define c3__jetd c3_s4('j','e','t','d') +# define c3__just c3_s4('j','u','s','t') +# define c3__k c3_s1('k') +# define c3__khan c3_s4('k','h','a','n') +# define c3__keep c3_s4('k','e','e','p') +# define c3__kern c3_s4('k','e','r','n') +# define c3__key c3_s3('k','e','y') +# define c3__kgo c3_s3('k','g','o') +# define c3__kick c3_s4('k','i','c','k') +# define c3__king c3_s4('k','i','n','g') +# define c3__kit c3_s3('k','i','t') +# define c3__klr c3_s3('k','l','r') +# define c3__knit c3_s4('k','n','i','t') +# define c3__kno c3_s3('k','n','o') +# define c3__ktbc c3_s4('k','t','b','c') +# define c3__ktbn c3_s4('k','t','b','n') +# define c3__ktbr c3_s4('k','t','b','r') +# define c3__ktcb c3_s4('k','t','c','b') +# define c3__ktcl c3_s4('k','t','c','l') +# define c3__ktcn c3_s4('k','t','c','n') +# define c3__ktcs c3_s4('k','t','c','s') +# define c3__ktdg c3_s4('k','t','d','g') +# define c3__ktdl c3_s4('k','t','d','l') +# define c3__ktdp c3_s4('k','t','d','p') +# define c3__ktdt c3_s4('k','t','d','t') +# define c3__ktgl c3_s4('k','t','g','l') +# define c3__ktgr c3_s4('k','t','g','r') +# define c3__kthp c3_s4('k','t','h','p') +# define c3__kthx c3_s4('k','t','h','x') +# define c3__ktlc c3_s4('k','t','l','c') +# define c3__ktld c3_s4('k','t','l','d') +# define c3__ktls c3_s4('k','t','l','s') +# define c3__ktms c3_s4('k','t','m','s') +# define c3__ktmt c3_s4('k','t','m','t') +# define c3__ktnp c3_s4('k','t','n','p') +# define c3__ktpd c3_s4('k','t','p','d') +# define c3__ktpm c3_s4('k','t','p','m') +# define c3__ktps c3_s4('k','t','p','s') +# define c3__ktpt c3_s4('k','t','p','t') +# define c3__ktrt c3_s4('k','t','r','t') +# define c3__ktsg c3_s4('k','t','s','g') +# define c3__ktsp c3_s4('k','t','s','p') +# define c3__kttg c3_s4('k','t','t','g') +# define c3__kttr c3_s4('k','t','t','r') +# define c3__ktts c3_s4('k','t','t','s') +# define c3__ktwt c3_s4('k','t','w','t') +# define c3__ktzp c3_s4('k','t','z','p') +# define c3__l c3_s1('l') +# define c3__lamb c3_s4('l','a','m','b') +# define c3__lame c3_s4('l','a','m','e') +# define c3__lang c3_s4('l','a','n','g') +# define c3__lask c3_s4('l','a','s','k') +# define c3__last c3_s4('l','a','s','t') +# define c3__lcdl c3_s4('l','c','d','l') +# define c3__lcdp c3_s4('l','c','d','p') +# define c3__lcld c3_s4('l','c','l','d') +# define c3__lcnp c3_s4('l','c','n','p') +# define c3__lcpd c3_s4('l','c','p','d') +# define c3__lcps c3_s4('l','c','p','s') +# define c3__lcsp c3_s4('l','c','s','p') +# define c3__le c3_s2('l','e') +# define c3__lead c3_s4('l','e','a','d') +# define c3__leaf c3_s4('l','e','a','f') +# define c3__leap c3_s4('l','e','a','p') +# define c3__lect c3_s4('l','e','c','t') +# define c3__lee c3_s3('l','e','e') +# define c3__leg c3_s3('l','e','g') +# define c3__lest c3_s4('l','e','s','t') +# define c3__lg c3_s2('l','g') +# define c3__lib c3_s3('l','i','b') +# define c3__libd c3_s4('l','i','b','d') +# define c3__lick c3_s4('l','i','c','k') +# define c3__life c3_s4('l','i','f','e') +# define c3__lift c3_s4('l','i','f','t') +# define c3__like c3_s4('l','i','k','e') +# define c3__limb c3_s4('l','i','m','b') +# define c3__lin c3_s3('l','i','n') +# define c3__line c3_s4('l','i','n','e') +# define c3__link c3_s4('l','i','n','k') +# define c3__lint c3_s4('l','i','n','t') +# define c3__liqd c3_s4('l','i','q','d') +# define c3__lisc c3_s4('l','i','s','c') +# define c3__list c3_s4('l','i','s','t') +# define c3__lite c3_s4('l','i','t','e') +# define c3__live c3_s4('l','i','v','e') +# define c3__load c3_s4('l','o','a','d') +# define c3__loaf c3_s4('l','o','a','f') +# define c3__log c3_s3('l','o','g') +# define c3__logo c3_s4('l','o','g','o') +# define c3__lome c3_s4('l','o','m','e') +# define c3__lond c3_s4('l','o','n','d') +# define c3__lonk c3_s4('l','o','n','k') +# define c3__look c3_s4('l','o','o','k') +# define c3__loom c3_s4('l','o','o','m') +# define c3__loop c3_s4('l','o','o','p') +# define c3__lorb c3_s4('l','o','r','b') +# define c3__lord c3_s4('l','o','r','d') +# define c3__lort c3_s4('l','o','r','t') +# define c3__lose c3_s4('l','o','s','e') +# define c3__loss c3_s4('l','o','s','s') +# define c3__lost c3_s4('l','o','s','t') +# define c3__low c3_s3('l','o','w') +# define c3__lsh c3_s3('l','s','h') +# define c3__lt c3_s2('l','t') +# define c3__lull c3_s4('l','u','l','l') +# define c3__lunt c3_s4('l','u','n','t') +# define c3__m c3_s1('m') +# define c3__mx c3_s2('m','x') +# define c3__mach c3_s4('m','a','c','h') +# define c3__mack c3_s4('m','a','c','k') +# define c3__made c3_s4('m','a','d','e') +# define c3__main c3_s4('m','a','i','n') +# define c3__make c3_s4('m','a','k','e') +# define c3__malg c3_s4('m','a','l','g') +# define c3__malk c3_s4('m','a','l','k') +# define c3__mang c3_s4('m','a','n','g') +# define c3__many c3_s4('m','a','n','y') +# define c3__map c3_s3('m','a','p') +# define c3__marg c3_s4('m','a','r','g') +# define c3__mark c3_s4('m','a','r','k') +# define c3__marn c3_s4('m','a','r','n') +# define c3__mash c3_s4('m','a','s','h') +# define c3__mass c3_s4('m','a','s','s') +# define c3__mast c3_s4('m','a','s','t') +# define c3__mate c3_s4('m','a','t','e') +# define c3__mave c3_s4('m','a','v','e') +# define c3__mean c3_s4('m','e','a','n') +# define c3__mega c3_s4('m','e','g','a') +# define c3__meh c3_s3('m','e','h') +# define c3__meld c3_s4('m','e','l','d') +# define c3__melt c3_s4('m','e','l','t') +# define c3__meme c3_s4('m','e','m','e') +# define c3__memo c3_s4('m','e','m','o') +# define c3__menu c3_s4('m','e','n','u') +# define c3__mesa c3_s4('m','e','s','a') +# define c3__mesh c3_s4('m','e','s','h') +# define c3__mess c3_s4('m','e','s','s') +# define c3__mess_ser c3_s8('m','e','s','s','-', 's', 'e','r') +# define c3__met c3_s3('m','e','t') +# define c3__meta c3_s4('m','e','t','a') +# define c3__mill c3_s4('m','i','l','l') +# define c3__mime c3_s4('m','i','m','e') +# define c3__mine c3_s4('m','i','n','e') +# define c3__mint c3_s4('m','i','n','t') +# define c3__mirt c3_s4('m','i','r','t') +# define c3__miss c3_s4('m','i','s','s') +# define c3__mix c3_s3('m','i','x') +# define c3__moat c3_s4('m','o','a','t') +# define c3__mod c3_s3('m','o','d') +# define c3__mold c3_s4('m','o','l','d') +# define c3__mong c3_s4('m','o','n','g') +# define c3__mono c3_s4('m','o','n','o') +# define c3__mook c3_s4('m','o','o','k') +# define c3__moot c3_s4('m','o','o','t') +# define c3__mor c3_s3('m','o','r') +# define c3__move c3_s4('m','o','v','e') +# define c3__moze c3_s4('m','o','z','e') +# define c3__mtbn c3_s4('m','t','b','n') +# define c3__mtbr c3_s4('m','t','b','r') +# define c3__mtdg c3_s4('m','t','d','g') +# define c3__mtdp c3_s4('m','t','d','p') +# define c3__mtdt c3_s4('m','t','d','t') +# define c3__mtkt c3_s4('m','t','k','t') +# define c3__mtlc c3_s4('m','t','l','c') +# define c3__mtnp c3_s4('m','t','n','p') +# define c3__mtpd c3_s4('m','t','p','d') +# define c3__mtps c3_s4('m','t','p','s') +# define c3__mtrt c3_s4('m','t','r','t') +# define c3__mtsg c3_s4('m','t','s','g') +# define c3__mtsp c3_s4('m','t','s','p') +# define c3__mttg c3_s4('m','t','t','g') +# define c3__mttr c3_s4('m','t','t','r') +# define c3__mul c3_s3('m','u','l') +# define c3__mull c3_s4('m','u','l','l') +# define c3__mung c3_s4('m','u','n','g') +# define c3__mut c3_s3('m','u','t') +# define c3__n c3_s1('n') +# define c3__na c3_s2('n','a') +# define c3__nail c3_s4('n','a','i','l') +# define c3__name c3_s4('n','a','m','e') +# define c3__nap c3_s3('n','a','p') +# define c3__nara c3_s4('n','a','r','a') +# define c3__narv c3_s4('n','a','r','v') +# define c3__ne c3_s2('n','e') +# define c3__need c3_s4('n','e','e','d') +# define c3__neft c3_s4('n','e','f','t') +# define c3__nel c3_s3('n','e','l') +# define c3__nest c3_s4('n','e','s','t') +# define c3__netd c3_s4('n','e','t','d') +# define c3__new c3_s3('n','e','w') +# define c3__news c3_s4('n','e','w','s') +# define c3__newt c3_s4('n','e','w','t') +# define c3__next c3_s4('n','e','x','t') +# define c3__nich c3_s4('n','i','c','h') +# define c3__nick c3_s4('n','i','c','k') +# define c3__nil c3_s3('n','i','l') +# define c3__nilk c3_s4('n','i','l','k') +# define c3__no c3_s2('n','o') +# define c3__noah c3_s4('n','o','a','h') +# define c3__nock c3_s4('n','o','c','k') +# define c3__noco c3_s4('n','o','c','o') +# define c3__nodo c3_s4('n','o','d','o') +# define c3__none c3_s4('n','o','n','e') +# define c3__noop c3_s4('n','o','o','p') +# define c3__nop c3_s3('n','o','p') +# define c3__norm c3_s4('n','o','r','m') +# define c3__nost c3_s4('n','o','s','t') +# define c3__not c3_s3('n','o','t') +# define c3__note c3_s4('n','o','t','e') +# define c3__noun c3_s4('n','o','u','n') +# define c3__nt c3_s2('n','t') +# define c3__nub c3_s3('n','u','b') +# define c3__null c3_s4('n','u','l','l') +# define c3__nz c3_s2('n','z') +# define c3__o c3_s1('o') +# define c3__oak c3_s3('o','a','k') +# define c3__of c3_s2('o','f') +# define c3__off c3_s3('o','f','f') +# define c3__ogre c3_s4('o','g','r','e') +# define c3__old c3_s3('o','l','d') +# define c3__omen c3_s4('o','m','e','n') +# define c3__omit c3_s4('o','m','i','t') +# define c3__on c3_s2('o','n') +# define c3__onan c3_s4('o','n','a','n') +# define c3__once c3_s4('o','n','c','e') +# define c3__one c3_s3('o','n','e') +# define c3__only c3_s4('o','n','l','y') +# define c3__oops c3_s4('o','o','p','s') +# define c3__op c3_s2('o','p') +# define c3__open c3_s4('o','p','e','n') +# define c3__opts c3_s4('o','p','t','s') +# define c3__or c3_s2('o','r') +# define c3__ord c3_s3('o','r','d') +# define c3__orth c3_s4('o','r','t','h') +# define c3__oust c3_s4('o','u','s','t') +# define c3__outd c3_s4('o','u','t','d') +# define c3__ov c3_s2('o','v') +# define c3__over c3_s4('o','v','e','r') +# define c3__ovum c3_s4('o','v','u','m') +# define c3__p c3_s1('p') +# define c3__pack c3_s4('p','a','c','k') +# define c3__pact c3_s4('p','a','c','t') +# define c3__page c3_s4('p','a','g','e') +# define c3__pair c3_s4('p','a','i','r') +# define c3__palm c3_s4('p','a','l','m') +# define c3__palq c3_s4('p','a','l','q') +# define c3__palt c3_s4('p','a','l','t') +# define c3__pan c3_s3('p','a','n') +# define c3__pane c3_s4('p','a','n','e') +# define c3__pang c3_s4('p','a','n','g') +# define c3__pank c3_s4('p','a','n','k') +# define c3__para c3_s4('p','a','r','a') +# define c3__park c3_s4('p','a','r','k') +# define c3__parq c3_s4('p','a','r','q') +# define c3__part c3_s4('p','a','r','t') +# define c3__pass c3_s4('p','a','s','s') +# define c3__past c3_s4('p','a','s','t') +# define c3__pawn c3_s4('p','a','w','n') +# define c3__peek c3_s4('p','e','e','k') +# define c3__peel c3_s4('p','e','e','l') +# define c3__peep c3_s4('p','e','e','p') +# define c3__peft c3_s4('p','e','f','t') +# define c3__peg c3_s3('p','e','g') +# define c3__peld c3_s4('p','e','l','d') +# define c3__pen c3_s3('p','e','n') +# define c3__per c3_s3('p','e','r') +# define c3__perd c3_s4('p','e','r','d') +# define c3__pesk c3_s4('p','e','s','k') +# define c3__pfix c3_s4('p','f','i','x') +# define c3__pick c3_s4('p','i','c','k') +# define c3__pier c3_s4('p','i','e','r') +# define c3__pike c3_s4('p','i','k','e') +# define c3__pile c3_s4('p','i','l','e') +# define c3__pill c3_s4('p','i','l','l') +# define c3__ping c3_s4('p','i','n','g') +# define c3__pink c3_s4('p','i','n','k') +# define c3__pip c3_s3('p','i','p') +# define c3__pipe c3_s4('p','i','p','e') +# define c3__pith c3_s4('p','i','t','h') +# define c3__pitt c3_s4('p','i','t','t') +# define c3__plac c3_s4('p','l','a','c') +# define c3__plam c3_s4('p','l','a','m') +# define c3__plat c3_s4('p','l','a','t') +# define c3__play c3_s4('p','l','a','y') +# define c3__plaz c3_s4('p','l','a','z') +# define c3__plem c3_s4('p','l','e','m') +# define c3__plet c3_s4('p','l','e','t') +# define c3__plic c3_s4('p','l','i','c') +# define c3__plin c3_s4('p','l','i','n') +# define c3__plom c3_s4('p','l','o','m') +# define c3__plov c3_s4('p','l','o','v') +# define c3__plug c3_s4('p','l','u','g') +# define c3__plus c3_s4('p','l','u','s') +# define c3__pmbn c3_s4('p','m','b','n') +# define c3__pmcl c3_s4('p','m','c','l') +# define c3__pmcn c3_s4('p','m','c','n') +# define c3__pmdg c3_s4('p','m','d','g') +# define c3__pmdp c3_s4('p','m','d','p') +# define c3__pmdt c3_s4('p','m','d','t') +# define c3__pmlc c3_s4('p','m','l','c') +# define c3__pmls c3_s4('p','m','l','s') +# define c3__pmms c3_s4('p','m','m','s') +# define c3__pmmt c3_s4('p','m','m','t') +# define c3__pmpd c3_s4('p','m','p','d') +# define c3__pmps c3_s4('p','m','p','s') +# define c3__pmsp c3_s4('p','m','s','p') +# define c3__pmtr c3_s4('p','m','t','r') +# define c3__pmts c3_s4('p','m','t','s') +# define c3__pmzp c3_s4('p','m','z','p') +# define c3__pnut c3_s4('p','n','u','t') +# define c3__pock c3_s4('p','o','c','k') +# define c3__poke c3_s4('p','o','k','e') +# define c3__poll c3_s4('p','o','l','l') +# define c3__poly c3_s4('p','o','l','y') +# define c3__pont c3_s4('p','o','n','t') +# define c3__poos c3_s4('p','o','o','s') +# define c3__pop c3_s3('p','o','p') +# define c3__port c3_s4('p','o','r','t') +# define c3__pos c3_s3('p','o','s') +# define c3__pose c3_s4('p','o','s','e') +# define c3__post c3_s4('p','o','s','t') +# define c3__pray c3_s4('p','r','a','y') +# define c3__prec c3_s4('p','r','e','c') +# define c3__prep c3_s4('p','r','e','p') +# define c3__pret c3_s4('p','r','e','t') +# define c3__prex c3_s4('p','r','e','x') +# define c3__pril c3_s4('p','r','i','l') +# define c3__pro c3_s3('p','r','o') +# define c3__prod c3_s4('p','r','o','d') +# define c3__prop c3_s4('p','r','o','p') +# define c3__prof c3_s4('p','r','o','f') +# define c3__prox c3_s4('p','r','o','x') +# define c3__psdg c3_s4('p','s','d','g') +# define c3__puck c3_s4('p','u','c','k') +# define c3__pull c3_s4('p','u','l','l') +# define c3__pult c3_s4('p','u','l','t') +# define c3__pung c3_s4('p','u','n','g') +# define c3__punk c3_s4('p','u','n','k') +# define c3__punt c3_s4('p','u','n','t') +# define c3__pure c3_s4('p','u','r','e') +# define c3__purr c3_s4('p','u','r','r') +# define c3__push c3_s4('p','u','s','h') +# define c3__put c3_s3('p','u','t') +# define c3__quac c3_s4('q','u','a','c') +# define c3__quic c3_s4('q','u','i','c') +# define c3__qual c3_s4('q','u','a','l') +# define c3__quat c3_s4('q','u','a','t') +# define c3__quax c3_s4('q','u','a','x') +# define c3__quem c3_s4('q','u','e','m') +# define c3__ques c3_s4('q','u','e','s') +# define c3__quet c3_s4('q','u','e','t') +# define c3__queu c3_s4('q','u','e','u') +# define c3__quid c3_s4('q','u','i','d') +# define c3__quil c3_s4('q','u','i','l') +# define c3__quix c3_s4('q','u','i','x') +# define c3__quiz c3_s4('q','u','i','z') +# define c3__quol c3_s4('q','u','o','l') +# define c3__quop c3_s4('q','u','o','p') +# define c3__rack c3_s4('r','a','c','k') +# define c3__rald c3_s4('r','a','l','d') +# define c3__ramp c3_s4('r','a','m','p') +# define c3__rand c3_s4('r','a','n','d') +# define c3__rasp c3_s4('r','a','s','p') +# define c3__raw c3_s3('r','a','w') +# define c3__read c3_s4('r','e','a','d') +# define c3__real c3_s4('r','e','a','l') +# define c3__reck c3_s4('r','e','c','k') +# define c3__redo c3_s4('r','e','d','o') +# define c3__reef c3_s4('r','e','e','f') +# define c3__resd c3_s4('r','e','s','d') +# define c3__rest c3_s4('r','e','s','t') +# define c3__ret c3_s3('r','e','t') +# define c3__revo c3_s4('r','e','v','o') +# define c3__rez c3_s3('r','e','z') +# define c3__rin c3_s3('r','i','n') +# define c3__ring c3_s4('r','i','n','g') +# define c3__ripe c3_s4('r','i','p','e') +# define c3__rite c3_s4('r','i','t','e') +# define c3__rock c3_s4('r','o','c','k') +# define c3__roll c3_s4('r','o','l','l') +# define c3__rolp c3_s4('r','o','l','p') +# define c3__rond c3_s4('r','o','n','d') +# define c3__root c3_s4('r','o','o','t') +# define c3__rose c3_s4('r','o','s','e') +# define c3__rsh c3_s3('r','s','h') +# define c3__rulf c3_s4('r','u','l','f') +# define c3__run c3_s3('r','u','n') +# define c3__s c3_s1('s') +# define c3__safe c3_s4('s','a','f','e') +# define c3__sag c3_s3('s','a','g') +# define c3__sail c3_s4('s','a','i','l') +# define c3__same c3_s4('s','a','m','e') +# define c3__sand c3_s4('s','a','n','d') +# define c3__sard c3_s4('s','a','r','d') +# define c3__sav c3_s3('s','a','v') +# define c3__save c3_s4('s','a','v','e') +# define c3__saxo c3_s4('s','a','x','o') +# define c3__scam c3_s4('s','c','a','m') +# define c3__scan c3_s4('s','c','a','n') +# define c3__scry c3_s4('s','c','r','y') +# define c3__scsg c3_s4('s','c','s','g') +# define c3__seal c3_s4('s','e','a','l') +# define c3__seat c3_s4('s','e','a','t') +# define c3__see c3_s3('s','e','e') +# define c3__seed c3_s4('s','e','e','d') +# define c3__seek c3_s4('s','e','e','k') +# define c3__seft c3_s4('s','e','f','t') +# define c3__sell c3_s4('s','e','l','l') +# define c3__semp c3_s4('s','e','m','p') +# define c3__send c3_s4('s','e','n','d') +# define c3__sent c3_s4('s','e','n','t') +# define c3__seq c3_s3('s','e','q') +# define c3__serd c3_s4('s','e','r','d') +# define c3__serf c3_s4('s','e','r','f') +# define c3__set c3_s3('s','e','t') +# define c3__sfix c3_s4('s','f','i','x') +# define c3__sgbc c3_s4('s','g','b','c') +# define c3__sgbn c3_s4('s','g','b','n') +# define c3__sgbr c3_s4('s','g','b','r') +# define c3__sgcb c3_s4('s','g','c','b') +# define c3__sgcl c3_s4('s','g','c','l') +# define c3__sgcn c3_s4('s','g','c','n') +# define c3__sgdg c3_s4('s','g','d','g') +# define c3__sgdl c3_s4('s','g','d','l') +# define c3__sgdp c3_s4('s','g','d','p') +# define c3__sgdt c3_s4('s','g','d','t') +# define c3__sgdx c3_s4('s','g','d','x') +# define c3__sgfs c3_s4('s','g','f','s') +# define c3__sggl c3_s4('s','g','g','l') +# define c3__sggr c3_s4('s','g','g','r') +# define c3__sghp c3_s4('s','g','h','p') +# define c3__sghs c3_s4('s','g','h','s') +# define c3__sghx c3_s4('s','g','h','x') +# define c3__sgkt c3_s4('s','g','k','t') +# define c3__sglc c3_s4('s','g','l','c') +# define c3__sgld c3_s4('s','g','l','d') +# define c3__sgls c3_s4('s','g','l','s') +# define c3__sgms c3_s4('s','g','m','s') +# define c3__sgmt c3_s4('s','g','m','t') +# define c3__sgpd c3_s4('s','g','p','d') +# define c3__sgpm c3_s4('s','g','p','m') +# define c3__sgps c3_s4('s','g','p','s') +# define c3__sgsg c3_s4('s','g','s','g') +# define c3__sgsp c3_s4('s','g','s','p') +# define c3__sgts c3_s4('s','g','t','s') +# define c3__sgwt c3_s4('s','g','w','t') +# define c3__sgzp c3_s4('s','g','z','p') +# define c3__shiv c3_s4('s','h','i','v') +# define c3__show c3_s4('s','h','o','w') +# define c3__shud c3_s4('s','h','u','d') +# define c3__shut c3_s4('s','h','u','t') +# define c3__sibl c3_s4('s','i','b','l') +# define c3__sift c3_s4('s','i','f','t') +# define c3__sign c3_s4('s','i','g','n') +# define c3__sing c3_s4('s','i','n','g') +# define c3__sist c3_s4('s','i','s','t') +# define c3__site c3_s4('s','i','t','e') +# define c3__sith c3_s4('s','i','t','h') +# define c3__size c3_s4('s','i','z','e') +# define c3__slam c3_s4('s','l','a','m') +# define c3__slap c3_s4('s','l','a','p') +# define c3__slat c3_s4('s','l','a','t') +# define c3__slax c3_s4('s','l','a','x') +# define c3__slem c3_s4('s','l','e','m') +# define c3__slet c3_s4('s','l','e','t') +# define c3__slex c3_s4('s','l','e','x') +# define c3__slid c3_s4('s','l','i','d') +# define c3__slip c3_s4('s','l','i','p') +# define c3__sliv c3_s4('s','l','i','v') +# define c3__sloc c3_s4('s','l','o','c') +# define c3__slog c3_s4('s','l','o','g') +# define c3__slon c3_s4('s','l','o','n') +# define c3__slop c3_s4('s','l','o','p') +# define c3__slos c3_s4('s','l','o','s') +# define c3__slow c3_s4('s','l','o','w') +# define c3__slur c3_s4('s','l','u','r') +# define c3__slux c3_s4('s','l','u','x') +# define c3__sm c3_s2('s','m') +# define c3__smcl c3_s4('s','m','c','l') +# define c3__smdq c3_s4('s','m','d','q') +# define c3__smsg c3_s4('s','m','s','g') +# define c3__smsm c3_s4('s','m','s','m') +# define c3__smts c3_s4('s','m','t','s') +# define c3__snap c3_s4('s','n','a','p') +# define c3__so c3_s2('s','o') +# define c3__soak c3_s4('s','o','a','k') +# define c3__sock c3_s4('s','o','c','k') +# define c3__soft c3_s4('s','o','f','t') +# define c3__sole c3_s4('s','o','l','e') +# define c3__some c3_s4('s','o','m','e') +# define c3__sort c3_s4('s','o','r','t') +# define c3__spal c3_s4('s','p','a','l') +# define c3__spar c3_s4('s','p','a','r') +# define c3__spig c3_s4('s','p','i','g') +# define c3__spil c3_s4('s','p','i','l') +# define c3__spin c3_s4('s','p','i','n') +# define c3__spit c3_s4('s','p','i','t') +# define c3__spot c3_s4('s','p','o','t') +# define c3__stam c3_s4('s','t','a','m') +# define c3__star c3_s4('s','t','a','r') +# define c3__stdr c3_s4('s','t','d','r') +# define c3__stem c3_s4('s','t','e','m') +# define c3__step c3_s4('s','t','e','p') +# define c3__stid c3_s4('s','t','i','d') +# define c3__stig c3_s4('s','t','i','g') +# define c3__stil c3_s4('s','t','i','l') +# define c3__stiv c3_s4('s','t','i','v') +# define c3__stix c3_s4('s','t','i','x') +# define c3__stol c3_s4('s','t','o','l') +# define c3__ston c3_s4('s','t','o','n') +# define c3__stop c3_s4('s','t','o','p') +# define c3__stub c3_s4('s','t','u','b') +# define c3__stun c3_s4('s','t','u','n') +# define c3__stur c3_s4('s','t','u','r') +# define c3__sub c3_s3('s','u','b') +# define c3__sunt c3_s4('s','u','n','t') +# define c3__sure c3_s4('s','u','r','e') +# define c3__susp c3_s4('s','u','s','p') +# define c3__swap c3_s4('s','w','a','p') +# define c3__sym c3_s3('s','y','m') +# define c3__sync c3_s4('s','y','n','c') +# define c3__sys c3_s3('s','y','s') +# define c3__ta c3_s2('t','a') +# define c3__tab c3_s3('t','a','b') +# define c3__tack c3_s4('t','a','c','k') +# define c3__tag c3_s3('t','a','g') +# define c3__tail c3_s4('t','a','i','l') +# define c3__take c3_s4('t','a','k','e') +# define c3__talk c3_s4('t','a','l','k') +# define c3__tame c3_s4('t','a','m','e') +# define c3__tang c3_s4('t','a','n','g') +# define c3__tank c3_s4('t','a','n','k') +# define c3__tap c3_s3('t','a','p') +# define c3__tarn c3_s4('t','a','r','n') +# define c3__tas c3_s3('t','a','s') +# define c3__tash c3_s4('t','a','s','h') +# define c3__teal c3_s4('t','e','a','l') +# define c3__teck c3_s4('t','e','c','k') +# define c3__tell c3_s4('t','e','l','l') +# define c3__terg c3_s4('t','e','r','g') +# define c3__term c3_s4('t','e','r','m') +# define c3__test c3_s4('t','e','s','t') +# define c3__text c3_s4('t','e','x','t') +# define c3__tgbn c3_s4('t','g','b','n') +# define c3__tgbr c3_s4('t','g','b','r') +# define c3__tgdg c3_s4('t','g','d','g') +# define c3__tgdl c3_s4('t','g','d','l') +# define c3__tgdp c3_s4('t','g','d','p') +# define c3__tgdx c3_s4('t','g','d','x') +# define c3__tgkt c3_s4('t','g','k','t') +# define c3__tglc c3_s4('t','g','l','c') +# define c3__tgld c3_s4('t','g','l','d') +# define c3__tgmt c3_s4('t','g','m','t') +# define c3__tgpd c3_s4('t','g','p','d') +# define c3__tgpm c3_s4('t','g','p','m') +# define c3__tgps c3_s4('t','g','p','s') +# define c3__tgsp c3_s4('t','g','s','p') +# define c3__that c3_s4('t','h','a','t') +# define c3__thee c3_s4('t','h','e','e') +# define c3__then c3_s4('t','h','e','n') +# define c3__they c3_s4('t','h','e','y') +# define c3__thin c3_s4('t','h','i','n') +# define c3__this c3_s4('t','h','i','s') +# define c3__thou c3_s4('t','h','o','u') +# define c3__thud c3_s4('t','h','u','d') +# define c3__thuo c3_s4('t','h','u','o') +# define c3__thus c3_s4('t','h','u','s') +# define c3__tick c3_s4('t','i','c','k') +# define c3__time c3_s4('t','i','m','e') +# define c3__tip c3_s3('t','i','p') +# define c3__tmbn c3_s4('t','m','b','n') +# define c3__tmdg c3_s4('t','m','d','g') +# define c3__tmdp c3_s4('t','m','d','p') +# define c3__tmlc c3_s4('t','m','l','c') +# define c3__tmnp c3_s4('t','m','n','p') +# define c3__tmpd c3_s4('t','m','p','d') +# define c3__tmps c3_s4('t','m','p','s') +# define c3__tmsg c3_s4('t','m','s','g') +# define c3__tmsp c3_s4('t','m','s','p') +# define c3__tmtr c3_s4('t','m','t','r') +# define c3__to c3_s2('t','o') +# define c3__toe c3_s3('t','o','e') +# define c3__tome c3_s4('t','o','m','e') +# define c3__tong c3_s4('t','o','n','g') +# define c3__tool c3_s4('t','o','o','l') +# define c3__top c3_s3('t','o','p') +# define c3__toy c3_s3('t','o','y') +# define c3__trac c3_s4('t','r','a','c') +# define c3__tram c3_s4('t','r','a','m') +# define c3__trap c3_s4('t','r','a','p') +# define c3__trel c3_s4('t','r','e','l') +# define c3__trex c3_s4('t','r','e','x') +# define c3__trib c3_s4('t','r','i','b') +# define c3__trim c3_s4('t','r','i','m') +# define c3__trip c3_s4('t','r','i','p') +# define c3__trol c3_s4('t','r','o','l') +# define c3__trop c3_s4('t','r','o','p') +# define c3__trup c3_s4('t','r','u','p') +# define c3__try c3_s3('t','r','y') +# define c3__tsbn c3_s4('t','s','b','n') +# define c3__tsbr c3_s4('t','s','b','r') +# define c3__tscl c3_s4('t','s','c','l') +# define c3__tscm c3_s4('t','s','c','m') +# define c3__tsdt c3_s4('t','s','d','t') +# define c3__tsgl c3_s4('t','s','g','l') +# define c3__tsgr c3_s4('t','s','g','r') +# define c3__tshp c3_s4('t','s','h','p') +# define c3__tshx c3_s4('t','s','h','x') +# define c3__tsls c3_s4('t','s','l','s') +# define c3__tsms c3_s4('t','s','m','s') +# define c3__tssg c3_s4('t','s','s','g') +# define c3__tstr c3_s4('t','s','t','r') +# define c3__tub c3_s3('t','u','b') +# define c3__tul c3_s3('t','u','l') +# define c3__tule c3_s4('t','u','l','e') +# define c3__tulp c3_s4('t','u','l','p') +# define c3__tune c3_s4('t','u','n','e') +# define c3__tung c3_s4('t','u','n','g') +# define c3__tupl c3_s4('t','u','p','l') +# define c3__turd c3_s4('t','u','r','d') +# define c3__turf c3_s4('t','u','r','f') +# define c3__turn c3_s4('t','u','r','n') +# define c3__twig c3_s4('t','w','i','g') +# define c3__twix c3_s4('t','w','i','x') +# define c3__txt c3_s3('t','x','t') +# define c3__type c3_s4('t','y','p','e') +# define c3__u c3_s1('u') +# define c3__ubin c3_s4('u','b','i','n') +# define c3__ubit c3_s4('u','b','i','t') +# define c3__ud c3_s2('u','d') +# define c3__uint c3_s4('u','i','n','t') +# define c3__ulib c3_s4('u','l','i','b') +# define c3__un c3_s2('u','n') +# define c3__uniq c3_s4('u','n','i','q') +# define c3__unix c3_s4('u','n','i','x') +# define c3__unt c3_s3('u','n','t') +# define c3__unum c3_s3('u','n','u','m') +# define c3__up c3_s2('u','p') +# define c3__url c3_s3('u','r','l') +# define c3__urth c3_s4('u','r','t','h') +# define c3__use c3_s3('u','s','e') +# define c3__ut c3_s2('u','t') +# define c3__uv c3_s2('u','v') +# define c3__uw c3_s2('u','w') +# define c3__ux c3_s2('u','x') +# define c3__v c3_s1('v') +# define c3__vamp c3_s4('v','a','m','p') +# define c3__vane c3_s4('v','a','n','e') +# define c3__var c3_s3('v','a','r') +# define c3__veal c3_s4('v','e','a','l') +# define c3__veb c3_s3('v','e','b') +# define c3__veck c3_s4('v','e','c','k') +# define c3__veer c3_s4('v','e','e','r') +# define c3__vega c3_s4('v','e','g','a') +# define c3__velt c3_s4('v','e','l','t') +# define c3__vent c3_s4('v','e','n','t') +# define c3__verb c3_s4('v','e','r','b') +# define c3__vere c3_s4('v','e','r','e') +# define c3__veri c3_s4('v','e','r','i') +# define c3__vern c3_s4('v','e','r','n') +# define c3__very c3_s4('v','e','r','y') +# define c3__view c3_s4('v','i','e','w') +# define c3__vile c3_s4('v','i','l', 'e') +# define c3__vint c3_s4('v','i','n','t') +# define c3__void c3_s4('v','o','i','d') +# define c3__vorp c3_s4('v','o','r','p') +# define c3__wack c3_s4('w','a','c','k') +# define c3__wail c3_s4('w','a','i','l') +# define c3__wake c3_s4('w','a','k','e') +# define c3__walk c3_s4('w','a','l','k') +# define c3__wamp c3_s4('w','a','m','p') +# define c3__want c3_s4('w','a','n','t') +# define c3__warm c3_s4('w','a','r','m') +# define c3__warn c3_s4('w','a','r','n') +# define c3__warx c3_s4('w','a','r','x') +# define c3__wash c3_s4('w','a','s','h') +# define c3__watt c3_s4('w','a','t','t') +# define c3__way c3_s3('w','a','y') +# define c3__weak c3_s4('w','e','a','k') +# define c3__web c3_s3('w','e','b') +# define c3__wend c3_s4('w','e','n','d') +# define c3__werp c3_s4('w','e','r','p') +# define c3__west c3_s4('w','e','s','t') +# define c3__wet c3_s3('w','e','t') +# define c3__what c3_s4('w','h','a','t') +# define c3__whey c3_s4('w','h','e','y') +# define c3__who c3_s3('w','h','o') +# define c3__whom c3_s4('w','h','o','m') +# define c3__wild c3_s4('w','i','l','d') +# define c3__win c3_s3('w','i','n') +# define c3__wing c3_s4('w','i','n','g') +# define c3__wipe c3_s4('w','i','p','e') +# define c3__wise c3_s4('w','i','s','e') +# define c3__wish c3_s4('w','i','s','h') +# define c3__with c3_s4('w','i','t','h') +# define c3__wnut c3_s4('w','n','u','t') +# define c3__wood c3_s4('w','o','o','d') +# define c3__woot c3_s4('w','o','o','t') +# define c3__work c3_s4('w','o','r','k') +# define c3__wost c3_s4('w','o','s','t') +# define c3__wrap c3_s4('w','r','a','p') +# define c3__wtbr c3_s4('w','t','b','r') +# define c3__wtcb c3_s4('w','t','c','b') +# define c3__wtcl c3_s4('w','t','c','l') +# define c3__wtcn c3_s4('w','t','c','n') +# define c3__wtdt c3_s4('w','t','d','t') +# define c3__wtfs c3_s4('w','t','f','s') +# define c3__wtgl c3_s4('w','t','g','l') +# define c3__wtgr c3_s4('w','t','g','r') +# define c3__wthp c3_s4('w','t','h','p') +# define c3__wthx c3_s4('w','t','h','x') +# define c3__wtkt c3_s4('w','t','k','t') +# define c3__wtls c3_s4('w','t','l','s') +# define c3__wtms c3_s4('w','t','m','s') +# define c3__wtpm c3_s4('w','t','p','m') +# define c3__wtpt c3_s4('w','t','p','t') +# define c3__wtsg c3_s4('w','t','s','g') +# define c3__wtts c3_s4('w','t','t','s') +# define c3__wtzp c3_s4('w','t','z','p') +# define c3__wyp c3_s3('w','y','p') +# define c3__wyrd c3_s4('w','y','r','d') +# define c3__xray c3_s4('x','r','a','y') +# define c3__xmas c3_s4('x','m','a','s') +# define c3__x c3_s1('x') +# define c3__xx c3_s2('x','x') +# define c3__yell c3_s4('y','e','l','l') +# define c3__yelp c3_s4('y','e','l','p') +# define c3__z c3_s1('z') +# define c3__zact c3_s4('z','a','c','t') +# define c3__zalt c3_s4('z','a','l','t') +# define c3__zarb c3_s4('z','a','r','b') +# define c3__zect c3_s4('z','e','c','t') +# define c3__zemp c3_s4('z','e','m','p') +# define c3__zero c3_s4('z','e','r','o') +# define c3__zike c3_s4('z','i','k','e') +# define c3__zinc c3_s4('z','i','n','c') +# define c3__zole c3_s4('z','o','l','e') +# define c3__zond c3_s4('z','o','n','d') +# define c3__zoot c3_s4('z','o','o','t') +# define c3__zork c3_s4('z','o','r','k') +# define c3__zpbn c3_s4('z','p','b','n') +# define c3__zpcb c3_s4('z','p','c','b') +# define c3__zpcm c3_s4('z','p','c','m') +# define c3__zpcn c3_s4('z','p','c','n') +# define c3__zpdg c3_s4('z','p','d','g') +# define c3__zpdx c3_s4('z','p','d','x') +# define c3__zpfs c3_s4('z','p','f','s') +# define c3__zpgr c3_s4('z','p','g','r') +# define c3__zphx c3_s4('z','p','h','x') +# define c3__zplc c3_s4('z','p','l','c') +# define c3__zpmc c3_s4('z','p','m','c') +# define c3__zpmt c3_s4('z','p','m','t') +# define c3__zpsg c3_s4('z','p','s','g') +# define c3__zpsk c3_s4('z','p','s','k') +# define c3__zpsm c3_s4('z','p','s','m') +# define c3__zptc c3_s4('z','p','t','c') +# define c3__zptm c3_s4('z','p','t','m') +# define c3__zpts c3_s4('z','p','t','s') +# define c3__zpvn c3_s4('z','p','v','n') +# define c3__zpvt c3_s4('z','p','v','t') +# define c3__zpzp c3_s4('z','p','z','p') +# define c3__zuse c3_s4('z','u','s','e') +# define c3__zush c3_s4('z','u','s','h') + +#endif /* ifndef C3_MOTES_H */ diff --git a/vere/pkg/c3/platform/windows/compat.c b/vere/pkg/c3/platform/windows/compat.c new file mode 100644 index 0000000..d47f3f8 --- /dev/null +++ b/vere/pkg/c3/platform/windows/compat.c @@ -0,0 +1,611 @@ +#include "portable.h" +#include +#include +#include +#include +#include "errno.h" + +// set default CRT file mode to binary +// note that mingw binmode.o does nothing +#undef _fmode +int _fmode = _O_BINARY; + +// set standard I/O fds to binary too, because +// MSVCRT creates them before MingW sets _fmode +static void __attribute__ ((constructor)) _set_stdio_to_binary() +{ + _setmode(0, _O_BINARY); + _setmode(1, _O_BINARY); + _setmode(2, _O_BINARY); +} + +// from https://github.com/git/git/blob/master/compat/mingw.c +// ----------------------------------------------------------------------- + +int err_win_to_posix(DWORD winerr) +{ + int error = ENOSYS; + switch(winerr) { + case ERROR_ACCESS_DENIED: error = EACCES; break; + case ERROR_ACCOUNT_DISABLED: error = EACCES; break; + case ERROR_ACCOUNT_RESTRICTION: error = EACCES; break; + case ERROR_ALREADY_ASSIGNED: error = EBUSY; break; + case ERROR_ALREADY_EXISTS: error = EEXIST; break; + case ERROR_ARITHMETIC_OVERFLOW: error = ERANGE; break; + case ERROR_BAD_COMMAND: error = EIO; break; + case ERROR_BAD_DEVICE: error = ENODEV; break; + case ERROR_BAD_DRIVER_LEVEL: error = ENXIO; break; + case ERROR_BAD_EXE_FORMAT: error = ENOEXEC; break; + case ERROR_BAD_FORMAT: error = ENOEXEC; break; + case ERROR_BAD_LENGTH: error = EINVAL; break; + case ERROR_BAD_PATHNAME: error = ENOENT; break; + case ERROR_BAD_PIPE: error = EPIPE; break; + case ERROR_BAD_UNIT: error = ENODEV; break; + case ERROR_BAD_USERNAME: error = EINVAL; break; + case ERROR_BROKEN_PIPE: error = EPIPE; break; + case ERROR_BUFFER_OVERFLOW: error = ENAMETOOLONG; break; + case ERROR_BUSY: error = EBUSY; break; + case ERROR_BUSY_DRIVE: error = EBUSY; break; + case ERROR_CALL_NOT_IMPLEMENTED: error = ENOSYS; break; + case ERROR_CANNOT_MAKE: error = EACCES; break; + case ERROR_CANTOPEN: error = EIO; break; + case ERROR_CANTREAD: error = EIO; break; + case ERROR_CANTWRITE: error = EIO; break; + case ERROR_CRC: error = EIO; break; + case ERROR_CURRENT_DIRECTORY: error = EACCES; break; + case ERROR_DEVICE_IN_USE: error = EBUSY; break; + case ERROR_DEV_NOT_EXIST: error = ENODEV; break; + case ERROR_DIRECTORY: error = EINVAL; break; + case ERROR_DIR_NOT_EMPTY: error = ENOTEMPTY; break; + case ERROR_DISK_CHANGE: error = EIO; break; + case ERROR_DISK_FULL: error = ENOSPC; break; + case ERROR_DRIVE_LOCKED: error = EBUSY; break; + case ERROR_ENVVAR_NOT_FOUND: error = EINVAL; break; + case ERROR_EXE_MARKED_INVALID: error = ENOEXEC; break; + case ERROR_FILENAME_EXCED_RANGE: error = ENAMETOOLONG; break; + case ERROR_FILE_EXISTS: error = EEXIST; break; + case ERROR_FILE_INVALID: error = ENODEV; break; + case ERROR_FILE_NOT_FOUND: error = ENOENT; break; + case ERROR_GEN_FAILURE: error = EIO; break; + case ERROR_HANDLE_DISK_FULL: error = ENOSPC; break; + case ERROR_INSUFFICIENT_BUFFER: error = ENOMEM; break; + case ERROR_INVALID_ACCESS: error = EACCES; break; + case ERROR_INVALID_ADDRESS: error = EFAULT; break; + case ERROR_INVALID_BLOCK: error = EFAULT; break; + case ERROR_INVALID_DATA: error = EINVAL; break; + case ERROR_INVALID_DRIVE: error = ENODEV; break; + case ERROR_INVALID_EXE_SIGNATURE: error = ENOEXEC; break; + case ERROR_INVALID_FLAGS: error = EINVAL; break; + case ERROR_INVALID_FUNCTION: error = ENOSYS; break; + case ERROR_INVALID_HANDLE: error = EBADF; break; + case ERROR_INVALID_LOGON_HOURS: error = EACCES; break; + case ERROR_INVALID_NAME: error = EINVAL; break; + case ERROR_INVALID_OWNER: error = EINVAL; break; + case ERROR_INVALID_PARAMETER: error = EINVAL; break; + case ERROR_INVALID_PASSWORD: error = EPERM; break; + case ERROR_INVALID_PRIMARY_GROUP: error = EINVAL; break; + case ERROR_INVALID_SIGNAL_NUMBER: error = EINVAL; break; + case ERROR_INVALID_TARGET_HANDLE: error = EIO; break; + case ERROR_INVALID_WORKSTATION: error = EACCES; break; + case ERROR_IO_DEVICE: error = EIO; break; + case ERROR_IO_INCOMPLETE: error = EINTR; break; + case ERROR_LOCKED: error = EBUSY; break; + case ERROR_LOCK_VIOLATION: error = EACCES; break; + case ERROR_LOGON_FAILURE: error = EACCES; break; + case ERROR_MAPPED_ALIGNMENT: error = EINVAL; break; + case ERROR_META_EXPANSION_TOO_LONG: error = E2BIG; break; + case ERROR_MORE_DATA: error = EPIPE; break; + case ERROR_NEGATIVE_SEEK: error = ESPIPE; break; + case ERROR_NOACCESS: error = EFAULT; break; + case ERROR_NONE_MAPPED: error = EINVAL; break; + case ERROR_NOT_ENOUGH_MEMORY: error = ENOMEM; break; + case ERROR_NOT_READY: error = EAGAIN; break; + case ERROR_NOT_SAME_DEVICE: error = EXDEV; break; + case ERROR_NO_DATA: error = EPIPE; break; + case ERROR_NO_MORE_SEARCH_HANDLES: error = EIO; break; + case ERROR_NO_PROC_SLOTS: error = EAGAIN; break; + case ERROR_NO_SUCH_PRIVILEGE: error = EACCES; break; + case ERROR_OPEN_FAILED: error = EIO; break; + case ERROR_OPEN_FILES: error = EBUSY; break; + case ERROR_OPERATION_ABORTED: error = EINTR; break; + case ERROR_OUTOFMEMORY: error = ENOMEM; break; + case ERROR_PASSWORD_EXPIRED: error = EACCES; break; + case ERROR_PATH_BUSY: error = EBUSY; break; + case ERROR_PATH_NOT_FOUND: error = ENOENT; break; + case ERROR_PIPE_BUSY: error = EBUSY; break; + case ERROR_PIPE_CONNECTED: error = EPIPE; break; + case ERROR_PIPE_LISTENING: error = EPIPE; break; + case ERROR_PIPE_NOT_CONNECTED: error = EPIPE; break; + case ERROR_PRIVILEGE_NOT_HELD: error = EACCES; break; + case ERROR_READ_FAULT: error = EIO; break; + case ERROR_SEEK: error = EIO; break; + case ERROR_SEEK_ON_DEVICE: error = ESPIPE; break; + case ERROR_SHARING_BUFFER_EXCEEDED: error = ENFILE; break; + case ERROR_SHARING_VIOLATION: error = EACCES; break; + case ERROR_STACK_OVERFLOW: error = ENOMEM; break; + case ERROR_SUCCESS: error = 0; break; + case ERROR_SWAPERROR: error = ENOENT; break; + case ERROR_TOO_MANY_MODULES: error = EMFILE; break; + case ERROR_TOO_MANY_OPEN_FILES: error = EMFILE; break; + case ERROR_UNRECOGNIZED_MEDIA: error = ENXIO; break; + case ERROR_UNRECOGNIZED_VOLUME: error = ENODEV; break; + case ERROR_WAIT_NO_CHILDREN: error = ECHILD; break; + case ERROR_WRITE_FAULT: error = EIO; break; + case ERROR_WRITE_PROTECT: error = EROFS; break; + } + return error; +} + +int link(const char *path1, const char *path2) +{ + if ( CreateHardLinkA(path2, path1, NULL) ) { + return 0; + } + + errno = err_win_to_posix(GetLastError()); + return -1; +} + +// from msys2 mingw-packages-dev patches +// ----------------------------------------------------------------------- + +static DWORD __map_mmap_prot_page(const int prot) +{ + DWORD protect = 0; + + if (prot == PROT_NONE) + return protect; + + if ((prot & PROT_EXEC) != 0) + { + protect = ((prot & PROT_WRITE) != 0) ? + PAGE_EXECUTE_READWRITE : PAGE_EXECUTE_READ; + } + else + { + protect = ((prot & PROT_WRITE) != 0) ? + PAGE_READWRITE : PAGE_READONLY; + } + + return protect; +} + +static DWORD __map_mmap_prot_file(const int prot) +{ + DWORD desiredAccess = 0; + + if (prot == PROT_NONE) + return desiredAccess; + + if ((prot & PROT_READ) != 0) + desiredAccess |= FILE_MAP_READ; + if ((prot & PROT_WRITE) != 0) + desiredAccess |= FILE_MAP_WRITE; + if ((prot & PROT_EXEC) != 0) + desiredAccess |= FILE_MAP_EXECUTE; + + return desiredAccess; +} + +void* mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off) +{ + HANDLE fm, h; + + void * map = MAP_FAILED; + + const DWORD dwFileOffsetLow = (sizeof(off_t) <= sizeof(DWORD)) ? + (DWORD)off : (DWORD)(off & 0xFFFFFFFFL); + const DWORD dwFileOffsetHigh = (sizeof(off_t) <= sizeof(DWORD)) ? + (DWORD)0 : (DWORD)((off >> 32) & 0xFFFFFFFFL); + const DWORD protect = __map_mmap_prot_page(prot); + const DWORD desiredAccess = __map_mmap_prot_file(prot); + + errno = 0; + + if (len == 0 + /* Usupported protection combinations */ + || prot == PROT_EXEC) + { + errno = EINVAL; + return MAP_FAILED; + } + + if ((flags & MAP_ANON) == 0) + { + h = (HANDLE)_get_osfhandle(fildes); + + if (h == INVALID_HANDLE_VALUE) + { + errno = EBADF; + return MAP_FAILED; + } + } + else h = INVALID_HANDLE_VALUE; + + fm = CreateFileMapping(h, NULL, protect, 0, len, NULL); + + if (fm == NULL) + { + errno = err_win_to_posix(GetLastError()); + return MAP_FAILED; + } + + map = MapViewOfFileEx(fm, desiredAccess, dwFileOffsetHigh, dwFileOffsetLow, len, addr); + errno = err_win_to_posix(GetLastError()); + + CloseHandle(fm); + + if (map == NULL) + return MAP_FAILED; + + if ((flags & MAP_FIXED) != 0 && map != addr) + { + UnmapViewOfFile(map); + errno = EEXIST; + return MAP_FAILED; + } + + return map; +} + +int munmap(void *addr, size_t len) +{ + if (UnmapViewOfFile(addr)) + return 0; + + errno = err_win_to_posix(GetLastError()); + return -1; +} + +int msync(void *addr, size_t len, int flags) +{ + if (FlushViewOfFile(addr, len)) + return 0; + + errno = err_win_to_posix(GetLastError()); + return -1; +} + +// ----------------------------------------------------------------------- + +// vere uses kill() only to kill lockfile owner with SIGTERM or SIGKILL +// Windows does not have signals, so I handle SIGKILL as TerminateProcess() +// and return an error in all other cases +int kill(pid_t pid, int sig) +{ + if (pid > 0 && sig == SIGKILL) { + HANDLE h = OpenProcess(PROCESS_TERMINATE, FALSE, pid); + + if (TerminateProcess(h, -1)) { + CloseHandle(h); + return 0; + } + + errno = err_win_to_posix(GetLastError()); + CloseHandle(h); + return -1; + } + + errno = EINVAL; + return -1; +} + +// libgcc built for mingw has included an implementation of mprotect +// via VirtualProtect since olden days, but it takes int rather than size_t +// and therefore fails or does unexpected things for >2GB blocks on 64-bit +// https://github.com/gcc-mirror/gcc/blob/master/libgcc/libgcc2.c +int mprotect (void *addr, size_t len, int prot) +{ + DWORD np, op; + + if (prot == (PROT_READ | PROT_WRITE | PROT_EXEC)) + np = PAGE_EXECUTE_READWRITE; + else if (prot == (PROT_READ | PROT_EXEC)) + np = PAGE_EXECUTE_READ; + else if (prot == (PROT_EXEC)) + np = PAGE_EXECUTE; + else if (prot == (PROT_READ | PROT_WRITE)) + np = PAGE_READWRITE; + else if (prot == (PROT_READ)) + np = PAGE_READONLY; + else if (prot == 0) + np = PAGE_NOACCESS; + else + { + errno = EINVAL; + return -1; + } + + if (VirtualProtect (addr, len, np, &op)) + return 0; + + // NB: return code of ntdll!RtlGetLastNtStatus() is useful + // for diagnosing obscure VirtualProtect failures + errno = err_win_to_posix(GetLastError()); + return -1; +} + +int utimes(const char *path, const struct timeval times[2]) +{ + struct _utimbuf utb = {.actime = times[0].tv_sec, .modtime = times[1].tv_sec}; + return _utime(path, &utb); +} + +int fdatasync(int fildes) +{ + HANDLE h = (HANDLE)_get_osfhandle(fildes); + + if (h == INVALID_HANDLE_VALUE) + { + errno = EBADF; + return -1; + } + + if (FlushFileBuffers(h)) + { + errno = 0; + return 0; + } + else + { + errno = err_win_to_posix(GetLastError()); + return -1; + } +} + +intmax_t mdb_get_filesize(HANDLE han_u) +{ + LARGE_INTEGER li; + GetFileSizeEx(han_u, &li); + return li.QuadPart; +} + +char *realpath(const char *path, char *resolved_path) +{ + // XX MAX_PATH + // + return _fullpath(resolved_path, path, MAX_PATH); +} + +long sysconf(int name) +{ + SYSTEM_INFO si; + + if ( _SC_PAGESIZE != name ) { + return -1; + } + GetNativeSystemInfo(&si); + return si.dwPageSize; +} + + +// musl memmem for windows + +static char *twobyte_memmem(const unsigned char *h, size_t k, const unsigned char *n) +{ + uint16_t nw = n[0]<<8 | n[1], hw = h[0]<<8 | h[1]; + for (h++, k--; k; k--, hw = hw<<8 | *++h) + if (hw == nw) return (char *)h-1; + return 0; +} + +static char *threebyte_memmem(const unsigned char *h, size_t k, const unsigned char *n) +{ + uint32_t nw = n[0]<<24 | n[1]<<16 | n[2]<<8; + uint32_t hw = h[0]<<24 | h[1]<<16 | h[2]<<8; + for (h+=2, k-=2; k; k--, hw = (hw|*++h)<<8) + if (hw == nw) return (char *)h-2; + return 0; +} + +static char *fourbyte_memmem(const unsigned char *h, size_t k, const unsigned char *n) +{ + uint32_t nw = n[0]<<24 | n[1]<<16 | n[2]<<8 | n[3]; + uint32_t hw = h[0]<<24 | h[1]<<16 | h[2]<<8 | h[3]; + for (h+=3, k-=3; k; k--, hw = hw<<8 | *++h) + if (hw == nw) return (char *)h-3; + return 0; +} + +#define MAX(a,b) ((a)>(b)?(a):(b)) +#define MIN(a,b) ((a)<(b)?(a):(b)) + +#define BITOP(a,b,op) \ + ((a)[(size_t)(b)/(8*sizeof *(a))] op (size_t)1<<((size_t)(b)%(8*sizeof *(a)))) + +static char *twoway_memmem(const unsigned char *h, const unsigned char *z, const unsigned char *n, size_t l) +{ + size_t i, ip, jp, k, p, ms, p0, mem, mem0; + size_t byteset[32 / sizeof(size_t)] = { 0 }; + size_t shift[256]; + + /* Computing length of needle and fill shift table */ + for (i=0; i n[jp+k]) { + jp += k; + k = 1; + p = jp - ip; + } else { + ip = jp++; + k = p = 1; + } + } + ms = ip; + p0 = p; + + /* And with the opposite comparison */ + ip = -1; jp = 0; k = p = 1; + while (jp+k ms+1) ms = ip; + else p = p0; + + /* Periodic needle? */ + if (memcmp(n, n+p, ms+1)) { + mem0 = 0; + p = MAX(ms, l-ms-1) + 1; + } else mem0 = l-p; + mem = 0; + + /* Search loop */ + for (;;) { + /* If remainder of haystack is shorter than needle, done */ + if (z-h < l) return 0; + + /* Check last byte first; advance by shift on mismatch */ + if (BITOP(byteset, h[l-1], &)) { + k = l-shift[h[l-1]]; + if (k) { + if (mem0 && mem && k < p) k = l-p; + h += k; + mem = 0; + continue; + } + } else { + h += l; + mem = 0; + continue; + } + + /* Compare right half */ + for (k=MAX(ms+1,mem); kmem && n[k-1] == h[k-1]; k--); + if (k <= mem) return (char *)h; + h += p; + mem = mem0; + } +} + +void *memmem(const void *h0, size_t k, const void *n0, size_t l) +{ + const unsigned char *h = h0, *n = n0; + + /* Return immediately on empty needle */ + if (!l) return (void *)h; + + /* Return immediately when needle is longer than haystack */ + if (k> 32) & 0xFFFFFFFFL); + overlapped.Offset = (sizeof(off_t) <= sizeof(DWORD)) ? + (DWORD)offset : (DWORD)(offset & 0xFFFFFFFFL); + + HANDLE h = (HANDLE)_get_osfhandle(fd); + + if ( INVALID_HANDLE_VALUE == h ) { + errno = EBADF; + return -1; + } + + if ( !ReadFile(h, buf, count, &len, &overlapped) ) { + DWORD err = GetLastError(); + + if ( ERROR_HANDLE_EOF != err ) { + errno = err_win_to_posix(err); + return -1; + } + } + + return (ssize_t)len; +} + +ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset) +{ + DWORD len = 0; + + OVERLAPPED overlapped = {0}; + + overlapped.OffsetHigh = (sizeof(off_t) <= sizeof(DWORD)) ? + (DWORD)0 : (DWORD)((offset >> 32) & 0xFFFFFFFFL); + overlapped.Offset = (sizeof(off_t) <= sizeof(DWORD)) ? + (DWORD)offset : (DWORD)(offset & 0xFFFFFFFFL); + + HANDLE h = (HANDLE)_get_osfhandle(fd); + + if ( INVALID_HANDLE_VALUE == h ) { + errno = EBADF; + return -1; + } + + if ( !WriteFile(h, buf, count, &len, &overlapped) ) { + errno = err_win_to_posix(GetLastError()); + return -1; + } + + return (ssize_t)len; +} diff --git a/vere/pkg/c3/platform/windows/compat.h b/vere/pkg/c3/platform/windows/compat.h new file mode 100644 index 0000000..17338b8 --- /dev/null +++ b/vere/pkg/c3/platform/windows/compat.h @@ -0,0 +1,28 @@ +#ifndef _MINGW_IO_H +#define _MINGW_IO_H + +#define mkdir(A, B) mkdir(A) + +int link(const char *path1, const char *path2); +char *realpath(const char *path, char *resolved_path); +int fdatasync(int fd); +int utimes(const char *path, const struct timeval times[2]); +long sysconf(int name); + +int kill(pid_t pid, int signum); + +void *memmem(const void *h0, size_t k, const void *n0, size_t l); + +uint32_t getppid(); + +ssize_t pread(int fd, void *buf, size_t count, off_t offset); +ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset); + +#define SIGUSR1 10 +#define SIGALRM 14 +#define SIGVTALRM 26 +#define SIGSTK 31 +#define SIG_COUNT 32 +#define _SC_PAGESIZE 29 + +#endif//_MINGW_IO_H diff --git a/vere/pkg/c3/platform/windows/mman.h b/vere/pkg/c3/platform/windows/mman.h new file mode 100644 index 0000000..965fecf --- /dev/null +++ b/vere/pkg/c3/platform/windows/mman.h @@ -0,0 +1,26 @@ +#ifndef _SYS_MMAN_H +#define _SYS_MMAN_H + +void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); +int munmap(void *addr, size_t length); +int msync(void *addr, size_t length, int flags); +int mprotect(void *addr, size_t len, int prot); + +#define PROT_NONE 0x00 /* No access. */ +#define PROT_READ 0x01 /* Pages can be read. */ +#define PROT_WRITE 0x02 /* Pages can be written. */ +#define PROT_EXEC 0x04 /* Pages can be executed. */ + +#define MAP_FILE 0x0001 /* Mapped from a file or device. */ +#define MAP_ANON 0x0002 /* Allocated from anonymous virtual memory. */ +#define MAP_TYPE 0x000f /* Mask for type field. */ +#define MAP_SHARED 0x0010 /* Share changes. */ +#define MAP_PRIVATE 0x0000 /* Changes private; copy pages on write. */ +#define MAP_FIXED 0x0100 /* Map address must be exactly as requested. */ +#define MAP_FAILED ((void *) -1) + +#define MS_ASYNC 1 /* Sync memory asynchronously. */ +#define MS_SYNC 0 /* Synchronous memory sync. */ +#define MS_INVALIDATE 2 /* Invalidate the caches. */ + +#endif//_SYS_MMAN_H diff --git a/vere/pkg/c3/platform/windows/wsetjmp.h b/vere/pkg/c3/platform/windows/wsetjmp.h new file mode 100644 index 0000000..08e1957 --- /dev/null +++ b/vere/pkg/c3/platform/windows/wsetjmp.h @@ -0,0 +1,7 @@ +#ifndef _MINGW_SETJMP_H +#define _MINGW_SETJMP_H +#include "setjmp.h" + +#define _longjmp longjmp + +#endif//_MINGW_SETJMP_H diff --git a/vere/pkg/c3/portable.h b/vere/pkg/c3/portable.h new file mode 100644 index 0000000..29172f2 --- /dev/null +++ b/vere/pkg/c3/portable.h @@ -0,0 +1,268 @@ +/// @file + +#ifndef C3_PORTABLE_H +#define C3_PORTABLE_H + +# ifndef __GNUC__ +# error "port me" +# endif +# ifndef _GNU_SOURCE +# define _GNU_SOURCE +# endif + + /** System include files. + *** + *** Do not put include files that are only used in the + *** porting layer here. Include them directly in the + *** C file. + **/ +# if defined(U3_OS_linux) +# ifndef _XOPEN_SOURCE +# define _XOPEN_SOURCE 700 +# endif +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# elif defined(U3_OS_osx) +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# elif defined(U3_OS_bsd) +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# elif defined(U3_OS_windows) +# define signal mingw_has_no_usable_signal +# define raise mingw_has_no_usable_raise +# define _POSIX +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include "mman.h" +# include "compat.h" + + +# else +#error "port: headers" +# endif + +# ifndef __has_feature +# define __has_feature(x) 0 +# endif + +# if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__) +# define ASAN_ENABLED +# endif + + /** Platform string. + **/ +# if defined(U3_OS_linux) +# ifdef __LP64__ +# ifdef U3_CPU_aarch64 +# define U3_OS_ARCH "linux-aarch64" +# else +# define U3_OS_ARCH "linux-x86_64" +# endif +# endif +# elif defined(U3_OS_osx) +# ifdef __LP64__ +# ifdef U3_CPU_aarch64 +# define U3_OS_ARCH "macos-aarch64" +# else +# define U3_OS_ARCH "macos-x86_64" +# endif +# endif +# elif defined(U3_OS_windows) +#define U3_OS_ARCH "windows-x86_64" +# endif + + + +# define U3_BIN_ALIAS ".run" + +/** Address space layout. +*** +*** NB: 2^30 words == 4G +**/ +# if defined(U3_OS_linux) +# ifdef __LP64__ +# ifdef ASAN_ENABLED +# define U3_OS_LoomBase 0x10007ffff000 +# else +# define U3_OS_LoomBase 0x200000000 +# endif +# else +# define U3_OS_LoomBase 0x36000000 +# endif +# define U3_OS_LoomBits 30 +# elif defined(U3_OS_osx) +# ifdef __LP64__ +# ifdef ASAN_ENABLED +# define U3_OS_LoomBase 0x728000000000 +# else +# define U3_OS_LoomBase 0x28000000000 +# endif +# else +# define U3_OS_LoomBase 0x4000000 +# endif +# define U3_OS_LoomBits 30 +# elif defined(U3_OS_bsd) +# ifdef __LP64__ +# define U3_OS_LoomBase 0x200000000 +# else +# define U3_OS_LoomBase 0x4000000 +# endif +# define U3_OS_LoomBits 30 +# elif defined(U3_OS_windows) +# define U3_OS_LoomBase 0x28000000000 +# define U3_OS_LoomBits 30 +# else +# error "port: LoomBase" +# endif + + + /** Private C "extensions." + *** + *** Except for these and main(), any function, macro, or structure + *** names must be prefixed either by u3_/U3_ (for public names), + *** or _ (for static and other file-local names). + **/ + /* Endianness. + */ +# define c3_endian_little 0 +# define c3_endian_big 1 + +# ifdef U3_OS_ENDIAN_little +# define c3_endian c3_endian_little +# elif defined(U3_OS_ENDIAN_big) +# define c3_endian c3_endian_big +# else +# error "port: U3_OS_ENDIAN" +# endif + + /* Byte swapping. + */ +# if defined(U3_OS_linux) || defined(U3_OS_bsd) || defined(U3_OS_windows) +# define c3_bswap_16(x) bswap_16(x) +# define c3_bswap_32(x) bswap_32(x) +# define c3_bswap_64(x) bswap_64(x) +# elif defined(U3_OS_osx) +# define c3_bswap_16(x) NXSwapShort(x) +# define c3_bswap_32(x) NXSwapInt(x) +# define c3_bswap_64(x) NXSwapLongLong(x) +# else +# error "port: byte swap" +# endif + + /* Sync. + */ +# if defined(U3_OS_linux) || defined(U3_OS_windows) +# define c3_sync(fd) (fdatasync(fd)) +# elif defined(U3_OS_osx) +# define c3_sync(fd) (fcntl(fd, F_FULLFSYNC, 0)) +# elif defined(U3_OS_bsd) +# define c3_sync(fd) (fsync(fd)) +# else +# error "port: sync" +# endif + + /* Purge. + */ +# if defined(U3_OS_linux) +# include +# define c3_fpurge __fpurge +# elif defined(U3_OS_bsd) || defined(U3_OS_osx) || defined(U3_OS_windows) +# define c3_fpurge fpurge +# else +# error "port: fpurge" +# endif + + /* Stat. + */ +# if defined(U3_OS_linux) || defined(U3_OS_windows) +# define c3_stat_mtime(dp) (u3_time_t_in_ts((dp)->st_mtime)) +# elif defined(U3_OS_osx) +# define c3_stat_mtime(dp) (u3_time_in_ts(&((dp)->st_mtimespec))) +# define lseek64 lseek +# elif defined(U3_OS_bsd) +# define c3_stat_mtime(dp) (u3_time_in_ts(&((dp)->st_mtim))) +# define lseek64 lseek +# else +# error "port: timeconvert" +# endif + + /* Null. + */ +# if defined(U3_OS_linux) || defined(U3_OS_bsd) || defined(U3_OS_osx) +# define c3_dev_null "/dev/null" +# elif defined(U3_OS_windows) +# define c3_dev_null "nul" +# else +# error "port: /dev/null" +# endif + + /* Static assertion. + + TODO: we could just use static_assert (c23)/_Static_assert (c11) in + + */ +# define ASSERT_CONCAT_(a, b) a##b +# define ASSERT_CONCAT(a, b) ASSERT_CONCAT_(a, b) +# define STATIC_ASSERT(e,m) \ + enum { ASSERT_CONCAT(assert_line_, __LINE__) = 1/(int)(!!(e)) } + +#endif /* ifndef C3_PORTABLE_H */ diff --git a/vere/pkg/c3/types.h b/vere/pkg/c3/types.h new file mode 100644 index 0000000..8214fbc --- /dev/null +++ b/vere/pkg/c3/types.h @@ -0,0 +1,75 @@ +/// @file + +#ifndef C3_TYPES_H +#define C3_TYPES_H + +#include "portable.h" + + /** Integer typedefs. + **/ + /* Canonical integers. + */ + typedef size_t c3_z; + typedef ssize_t c3_zs; + typedef uint64_t c3_d; + typedef int64_t c3_ds; + typedef uint32_t c3_w; + typedef int32_t c3_ws; + typedef uint16_t c3_s; + typedef int16_t c3_ss; + typedef uint8_t c3_y; // byte + typedef int8_t c3_ys; // signed byte + typedef uint8_t c3_b; // bit + + typedef uint8_t c3_t; // boolean + typedef uint8_t c3_o; // loobean + typedef uint8_t c3_g; // 32-bit log - 0-31 bits + typedef uint32_t c3_l; // little; 31-bit unsigned integer + typedef uint32_t c3_m; // mote; also c3_l; LSB first a-z 4-char string. + + /* Deprecated integers. + */ + typedef char c3_c; // does not match int8_t or uint8_t + typedef int c3_i; // int - really bad + typedef uintptr_t c3_p; // pointer-length uint - really really bad + typedef intptr_t c3_ps; // pointer-length int - really really bad + + /* Print specifiers + */ + + /* c3_z */ + #define PRIc3_z "zu" /* unsigned dec */ + #define PRIc3_zs "zd" /* signed dec */ + #define PRIxc3_z "zx" /* unsigned hex */ + #define PRIXc3_z "zX" /* unsigned HEX */ + + /* c3_d */ + #define PRIc3_d PRIu64 + #define PRIc3_ds PRIi64 + #define PRIxc3_d PRIx64 + #define PRIXc3_d PRIX64 + + /* c3_w */ + #define PRIc3_w PRIu32 + #define PRIc3_ws PRIi32 + #define PRIxc3_w PRIx32 + #define PRIXc3_w PRIX32 + + /* c3_s */ + #define PRIc3_s PRIu16 + #define PRIc3_ss PRIi16 + #define PRIxc3_s PRIx16 + #define PRIXc3_s PRIX16 + + /* c3_y */ + #define PRIc3_y PRIu8 + #define PRIc3_ys PRIi8 + #define PRIxc3_y PRIx8 + #define PRIXc3_y PRIX8 + + /* c3_b */ + #define PRIc3_b PRIu8 + #define PRIxc3_b PRIx8 + #define PRIXc3_b PRIX8 + +#endif /* ifndef C3_TYPES_H */ diff --git a/vere/pkg/ent/.gitignore b/vere/pkg/ent/.gitignore new file mode 100644 index 0000000..97b75b0 --- /dev/null +++ b/vere/pkg/ent/.gitignore @@ -0,0 +1,4 @@ +/*.a +/*.o +/out +/test diff --git a/vere/pkg/ent/LICENSE b/vere/pkg/ent/LICENSE new file mode 100644 index 0000000..6cbc428 --- /dev/null +++ b/vere/pkg/ent/LICENSE @@ -0,0 +1,20 @@ +Copyright 2019 Steven Dee + +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/vere/pkg/ent/README.md b/vere/pkg/ent/README.md new file mode 100644 index 0000000..f1205fa --- /dev/null +++ b/vere/pkg/ent/README.md @@ -0,0 +1,36 @@ +## `libent` + +`libent` is a cross-platform wrapper around `getentropy(2)`. It exports +one symbol, `ent_getentropy`. If getentropy is available, then it's just +a shim around that. Otherwise, it uses `getrandom(2)` (available since +kernel 3.17) on Linux, or `/dev/urandom` on other \*nix. + + +### Building and Testing + +```bash +bazel build ... +bazel test ... +``` + +### Why? + +`getentropy` is the wave of the future. It's the correct API for +generating small amounts of entropy to create cryptographic keys or seed +PRNGs. It's good and reasonable and true, it's on Linux, \*BSD, and OS +X, and it only took us fifty years of UNIX to get here. + +Sadly, it only just arrived, so nobody has it yet. It didn't land in +Linux until glibc 2.25, which seems to only have made it into Debian 10. + +Once `getentropy` is everywhere you care about, you can just do a +s/ent\_//g on all the call sites and discard this shim. + +This project began because [Urbit](https://github.com/urbit/urbit)'s +entropy-generation function was bothering me. Then it got out of hand. + + +### References + +* [OpenBSD getentropy](https://man.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man2/getentropy.2) +* [djb on entropy gathering](https://blog.cr.yp.to/20140205-entropy.html) diff --git a/vere/pkg/ent/build.zig b/vere/pkg/ent/build.zig new file mode 100644 index 0000000..97b3c4e --- /dev/null +++ b/vere/pkg/ent/build.zig @@ -0,0 +1,43 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const t = target.result; + + const copts: []const []const u8 = + b.option([]const []const u8, "copt", "") orelse &.{}; + + var flags = std.ArrayList([]const u8).init(b.allocator); + defer flags.deinit(); + try flags.appendSlice(&.{ + "-pedantic", + "-std=gnu99", + }); + try flags.appendSlice(copts); + + const pkg_ent = b.addStaticLibrary(.{ + .name = "ent", + .target = target, + .optimize = optimize, + }); + + pkg_ent.linkLibC(); + + pkg_ent.addIncludePath(b.path("")); + + pkg_ent.addCSourceFiles(.{ + .root = b.path(""), + .files = &.{"ent.c"}, + .flags = flags.items, + }); + + pkg_ent.installHeader(b.path("ent.h"), "ent/ent.h"); + + if (t.os.tag == .windows) { + pkg_ent.linkSystemLibrary("bcrypt"); + } + + b.installArtifact(pkg_ent); +} diff --git a/vere/pkg/ent/ent.c b/vere/pkg/ent/ent.c new file mode 100644 index 0000000..0375774 --- /dev/null +++ b/vere/pkg/ent/ent.c @@ -0,0 +1,74 @@ +// Use `getentropy` from unistd.h ////////////////////////////////////////////// + +#if defined(ENT_GETENTROPY_UNISTD) +#include +#include +int ent_getentropy(void* buf, size_t len) { + return getentropy(buf, len); +} + + +// Use `getentropy` from sys/random.h ////////////////////////////////////////// + +#elif defined(ENT_GETENTROPY_SYSRANDOM) +#include +// See https://www.mail-archive.com/bug-gnulib@gnu.org/msg38583.html. +#include +#include +int ent_getentropy(void* buf, size_t len) { + return getentropy(buf, len); +} + + +// Use the `getrandom` syscall ///////////////////////////////////////////////// + +#elif defined(ENT_GETRANDOM_SYSCALL) +#include +#include +#define _GNU_SOURCE +#include +#include + +#define ENTFAIL { errno=EIO; return -1; } + +int ent_getentropy(void* buf, size_t len) { + if (len > 256) ENTFAIL + int r = syscall(SYS_getrandom, buf, len, 0); + if (r < 0) return r; + if (r != len) ENTFAIL + return 0; +} + + +// Use `/dev/urandom` ////////////////////////////////////////////////////////// + +#elif defined(ENT_DEV_URANDOM) +#include +#include +#include + +#define ENTFAIL { errno=EIO; return -1; } + +int ent_getentropy(void* buf, size_t len) { + if (len > 256) ENTFAIL; + FILE *f = fopen("/dev/urandom", "re"); + if (!f) return -1; + int r = fread(buf, 1, len, f); + (void) fclose(f); + if (r != len) ENTFAIL + return 0; +} + + +// Use `BCryptGenRandom` on Windows //////////////////////////////////////////// + +#elif defined(ENT_GETENTROPY_BCRYPTGENRANDOM) +#include +#include +int ent_getentropy(void* buf, size_t len) { + return BCryptGenRandom(NULL, (PUCHAR)buf, len, BCRYPT_USE_SYSTEM_PREFERRED_RNG); +} + +#else +#error "One of these must be set: ENT_GETENTROPY_BCRYPTGENRANDOM, ENT_DEV_URANDOM, ENT_GETENTROPY_UNISTD, ENT_GETENTROPY_SYSRANDOM, ENT_GETRANDOM_SYSCALL" +#endif diff --git a/vere/pkg/ent/ent.h b/vere/pkg/ent/ent.h new file mode 100644 index 0000000..e838d61 --- /dev/null +++ b/vere/pkg/ent/ent.h @@ -0,0 +1,13 @@ +#pragma once + +#include + +/* + Fills buf with high-quality entropy. + + buflen is the number of bytes, no greater than 256. + + Returns 0 on success. On failure, returns -1 and sets errno to + indicate the error. +*/ +int ent_getentropy(void* buf, size_t buflen); diff --git a/vere/pkg/ent/tests.c b/vere/pkg/ent/tests.c new file mode 100644 index 0000000..90b6ca0 --- /dev/null +++ b/vere/pkg/ent/tests.c @@ -0,0 +1,20 @@ +#include +#include +#include + +#include "ent.h" + +int main(void) { + char buf[256] = {0}; + + if (0 != ent_getentropy(buf, sizeof(buf))) { + perror("getentropy"); + exit(1); + } + + for (int i = 0; i < sizeof buf; i++) { + printf("%02hhx", buf[i]); + } + + puts(""); +} diff --git a/vere/pkg/noun/allocate.c b/vere/pkg/noun/allocate.c new file mode 100644 index 0000000..96a09b2 --- /dev/null +++ b/vere/pkg/noun/allocate.c @@ -0,0 +1,2012 @@ +/// @file + +#include "allocate.h" + +#include "hashtable.h" +#include "log.h" +#include "manage.h" +#include "options.h" +#include "retrieve.h" +#include "trace.h" +#include "vortex.h" + +#include "palloc.c" + +u3_road* u3a_Road; +u3a_mark u3a_Mark; +u3a_gack u3a_Gack; +u3a_hunk_dose u3a_Hunk[u3a_crag_no]; + +#ifdef U3_MEMORY_DEBUG +c3_w u3_Code; +#endif + +c3_w u3a_to_pug(c3_w off); +c3_w u3a_to_pom(c3_w off); + +void +u3a_drop(const u3a_pile* pil_u); +void* +u3a_peek(const u3a_pile* pil_u); +void* +u3a_pop(const u3a_pile* pil_u); +void* +u3a_push(const u3a_pile* pil_u); +c3_o +u3a_pile_done(const u3a_pile* pil_u); + +void* +u3a_into_fn(u3_post som_p) +{ + return u3a_into(som_p); +} + +u3_post +u3a_outa_fn(void* som_v) +{ + return u3a_outa(som_v); +} + +u3_post +u3a_to_off_fn(u3_noun som) +{ + return u3a_to_off(som); +} + +u3a_noun* +u3a_to_ptr_fn(u3_noun som) +{ + return u3a_to_ptr(som); +} + +u3_noun +u3a_head(u3_noun som) +{ + return u3h(som); +} + +u3_noun +u3a_tail(u3_noun som) +{ + return u3t(som); +} + +void +u3a_post_info(u3_post som_p) +{ + _post_status(som_p); +} + +void +u3a_init_once(void) +{ + _init_once(); +} + +void +u3a_init_heap(void) +{ + _init_heap(); +} + +void +u3a_drop_heap(u3_post cap_p, u3_post ear_p) +{ +#ifdef ASAN_ENABLED + if ( cap_p > ear_p ) { // in north, drop inner south + _drop(ear_p, cap_p - ear_p); + } + else { // in south, drop inner north + _drop(cap_p, ear_p - cap_p); + } +#else + (void)cap_p; + (void)ear_p; +#endif +} + +void +u3a_mark_init(void) +{ + c3_w bit_w = (u3R->hep.len_w + 31) >> 5; + + u3a_Mark.bit_w = c3_calloc(sizeof(c3_w) * bit_w); + u3a_Mark.siz_w = u3R->hep.siz_w * 2; + u3a_Mark.len_w = u3R->hep.len_w; + u3a_Mark.buf_w = c3_calloc(sizeof(c3_w) * u3a_Mark.siz_w); + + memset(u3a_Mark.wee_w, 0, sizeof(c3_w) * u3a_crag_no); +} + +void +u3a_mark_done(void) +{ + c3_free(u3a_Mark.bit_w); + c3_free(u3a_Mark.buf_w); + memset(&u3a_Mark, 0, sizeof(u3a_Mark)); +} + +void* +u3a_mark_alloc(c3_w len_w) // words +{ + void* ptr_v; + + if ( len_w > (u3a_Mark.siz_w - u3a_Mark.len_w) ) { + u3a_Mark.siz_w += c3_max(u3a_Mark.len_w, len_w); + u3a_Mark.buf_w = c3_realloc(u3a_Mark.buf_w, sizeof(c3_w) * u3a_Mark.siz_w); + } + + ptr_v = &(u3a_Mark.buf_w[u3a_Mark.len_w]); + u3a_Mark.len_w += len_w; + + return ptr_v; +} + +void +u3a_pack_init(void) +{ + c3_w bit_w = (u3R->hep.len_w + 31) >> 5; + u3a_Gack.bit_w = c3_calloc(sizeof(c3_w) * bit_w); + u3a_Gack.pap_w = c3_calloc(sizeof(c3_w) * bit_w); + u3a_Gack.pum_w = c3_calloc(sizeof(c3_w) * bit_w); + + u3a_Gack.siz_w = u3R->hep.siz_w * 2; + u3a_Gack.len_w = u3R->hep.len_w; + u3a_Gack.buf_w = c3_calloc(sizeof(c3_w) * u3a_Gack.siz_w); +} + +void* +u3a_pack_alloc(c3_w len_w) // words +{ + void* ptr_v; + + if ( len_w > (u3a_Gack.siz_w - u3a_Gack.len_w) ) { + u3a_Gack.siz_w += c3_max(u3a_Gack.len_w, len_w); + u3a_Gack.buf_w = c3_realloc(u3a_Gack.buf_w, sizeof(c3_w) * u3a_Gack.siz_w); + } + + ptr_v = &(u3a_Gack.buf_w[u3a_Gack.len_w]); + u3a_Gack.len_w += len_w; + + return ptr_v; +} + +void +u3a_pack_done(void) +{ + c3_free(u3a_Gack.pap_w); + c3_free(u3a_Gack.pum_w); + c3_free(u3a_Gack.buf_w); +} + +/* _box_count(): adjust memory count. +*/ +#ifdef U3_CPU_DEBUG +static void +_box_count(c3_ws siz_ws) +{ + u3R->all.fre_w += siz_ws; + + { + c3_w end_w = u3a_heap(u3R); + c3_w all_w = (end_w - u3R->all.fre_w); + + if ( all_w > u3R->all.max_w ) { + u3R->all.max_w = all_w; + } + } +} +#else +static void +_box_count(c3_ws siz_ws) { } +#endif + +/* _ca_reclaim_half(): reclaim from memoization cache. +*/ +static void +_ca_reclaim_half(void) +{ + // XX u3l_log avoid here, as it can + // cause problems when handling errors + + if ( (0 == u3R->cax.har_p) || + (0 == u3to(u3h_root, u3R->cax.har_p)->use_w) ) + { + fprintf(stderr, "allocate: reclaim: memo cache: empty\r\n"); + u3m_bail(c3__meme); + } + +#if 1 + fprintf(stderr, "allocate: reclaim: half of %d entries\r\n", + u3to(u3h_root, u3R->cax.har_p)->use_w); + + u3h_trim_to(u3R->cax.har_p, u3to(u3h_root, u3R->cax.har_p)->use_w / 2); +#else + /* brutal and guaranteed effective + */ + u3h_free(u3R->cax.har_p); + u3R->cax.har_p = u3h_new(); +#endif +} + +/* u3a_walloc(): allocate storage words on hat heap. +*/ +void* +u3a_walloc(c3_w len_w) +{ + return u3a_into(_imalloc(len_w)); +} + +/* u3a_wealloc(): realloc in words. +*/ +void* +u3a_wealloc(void* lag_v, c3_w len_w) +{ + if ( !lag_v ) { + return u3a_walloc(len_w); + } + + return u3a_into(_irealloc(u3a_outa(lag_v), len_w)); +} + +/* u3a_pile_prep(): initialize stack control. +*/ +void +u3a_pile_prep(u3a_pile* pil_u, c3_w len_w) +{ + // frame size, in words + // + c3_w wor_w = (len_w + 3) >> 2; + c3_o nor_o = u3a_is_north(u3R); + + pil_u->mov_ws = (c3y == nor_o) ? -wor_w : wor_w; + pil_u->off_ws = (c3y == nor_o) ? 0 : -wor_w; + pil_u->top_p = u3R->cap_p; + +#ifdef U3_MEMORY_DEBUG + pil_u->rod_u = u3R; +#endif +} + +/* u3a_wfree(): free storage. +*/ +void +u3a_wfree(void* tox_v) +{ + if ( tox_v ) { + _ifree(u3a_outa(tox_v)); + } +} + +/* u3a_wtrim(): trim storage. + + old_w - old length + len_w - new length +*/ +void +u3a_wtrim(void* tox_v, c3_w old_w, c3_w len_w) +{ + // XX realloc? +} + +/* u3a_calloc(): allocate and zero-initialize array +*/ +void* +u3a_calloc(size_t num_i, size_t len_i) +{ + size_t byt_i = num_i * len_i; + c3_w* out_w; + + u3_assert(byt_i / len_i == num_i); + out_w = u3a_malloc(byt_i); + memset(out_w, 0, byt_i); + + return out_w; +} + +/* u3a_malloc(): aligned storage measured in bytes. + + Internally pads allocations to 16-byte alignment independent of DWORD + alignment ensured for word sized allocations. + +*/ +void* +u3a_malloc(size_t len_i) +{ + return u3a_walloc((len_i + 3) >> 2); +} + +/* u3a_celloc(): allocate a cell. +*/ +c3_w* +u3a_celloc(void) +{ + u3a_cell *cel_u; + u3_post *cel_p; + + if ( u3R->cel.cel_p ) { + cel_p = u3to(u3_post, u3R->cel.cel_p); + + if ( !u3R->cel.hav_w ) { + _rake_chunks(c3_wiseof(*cel_u), (1U << u3a_page), + (u3R->cel.bat_w++ & 1), &u3R->cel.hav_w, cel_p); + } + + cel_u = u3to(u3a_cell, cel_p[--u3R->cel.hav_w]); + } + else { + cel_u = u3a_walloc(c3_wiseof(*cel_u)); + } + +#ifdef U3_CPU_DEBUG + u3R->pro.cel_d++; +#endif + + return (c3_w*)cel_u; +} + + +/* u3a_cfree(): free a cell. +*/ +void +u3a_cfree(c3_w* cel_w) +{ + u3_post *cel_p; + + if ( u3R->cel.cel_p ) { + if ( u3R->cel.hav_w < (1U << u3a_page) ) { + cel_p = u3to(u3_post, u3R->cel.cel_p); + cel_p[u3R->cel.hav_w++] = u3a_outa(cel_w); + return; + } + } + + u3a_wfree(cel_w); +} + +/* u3a_realloc(): aligned realloc in bytes. +*/ +void* +u3a_realloc(void* lag_v, size_t len_i) +{ + if ( !lag_v ) { + return u3a_malloc(len_i); + } + + return u3a_wealloc(lag_v, (len_i + 3) >> 2); +} + +/* u3a_free(): free for aligned malloc. +*/ +void +u3a_free(void* tox_v) +{ + u3a_wfree((c3_w*)tox_v); +} + +/* _me_wash_north(): clean up mug slots after copy. +*/ +static void _me_wash_north(u3_noun dog); +static void +_me_wash_north_in(u3_noun som) +{ + if ( _(u3a_is_cat(som)) ) return; + if ( !_(u3a_north_is_junior(u3R, som)) ) return; + + _me_wash_north(som); +} +static void +_me_wash_north(u3_noun dog) +{ + u3_assert(c3y == u3a_is_dog(dog)); + // u3_assert(c3y == u3a_north_is_junior(u3R, dog)); + { + u3a_noun* dog_u = u3a_to_ptr(dog); + + if ( dog_u->mug_w == 0 ) return; + + dog_u->mug_w = 0; // power wash + // if ( dog_u->mug_w >> 31 ) { dog_u->mug_w = 0; } + + if ( _(u3a_is_pom(dog)) ) { + u3a_cell* god_u = (u3a_cell *)(void *)dog_u; + + _me_wash_north_in(god_u->hed); + _me_wash_north_in(god_u->tel); + } + } +} + +/* _me_wash_south(): clean up mug slots after copy. +*/ +static void _me_wash_south(u3_noun dog); +static void +_me_wash_south_in(u3_noun som) +{ + if ( _(u3a_is_cat(som)) ) return; + if ( !_(u3a_south_is_junior(u3R, som)) ) return; + + _me_wash_south(som); +} +static void +_me_wash_south(u3_noun dog) +{ + u3_assert(c3y == u3a_is_dog(dog)); + // u3_assert(c3y == u3a_south_is_junior(u3R, dog)); + { + u3a_noun* dog_u = u3a_to_ptr(dog); + + if ( dog_u->mug_w == 0 ) return; + + dog_u->mug_w = 0; // power wash + // if ( dog_u->mug_w >> 31 ) { dog_u->mug_w = 0; } + + if ( _(u3a_is_pom(dog)) ) { + u3a_cell* god_u = (u3a_cell *)(void *)dog_u; + + _me_wash_south_in(god_u->hed); + _me_wash_south_in(god_u->tel); + } + } +} + +/* u3a_wash(): wash all lazy mugs. RETAIN. +*/ +void +u3a_wash(u3_noun som) +{ + if ( _(u3a_is_cat(som)) ) { + return; + } + if ( _(u3a_is_north(u3R)) ) { + if ( _(u3a_north_is_junior(u3R, som)) ) { + _me_wash_north(som); + } + } + else { + if ( _(u3a_south_is_junior(u3R, som)) ) { + _me_wash_south(som); + } + } +} + +/* _me_gain_use(): increment use count. +*/ +static void +_me_gain_use(u3_noun dog) +{ + u3a_noun* box_u = u3a_to_ptr(dog); + + if ( 0x7fffffff == box_u->use_w ) { + u3l_log("fail in _me_gain_use"); + u3m_bail(c3__fail); + } + else { + if ( box_u->use_w == 0 ) { + u3m_bail(c3__foul); + } + box_u->use_w += 1; + +#ifdef U3_MEMORY_DEBUG + // enable to (maybe) help track down leaks + // + // if ( u3_Code && !box_u->cod_w ) { box_u->cod_w = u3_Code; } +#endif + } +} + +#undef VERBOSE_TAKE + +/* _ca_take_atom(): reallocate an indirect atom off the stack. +*/ +static inline u3_atom +_ca_take_atom(u3a_atom* old_u) +{ + c3_w* new_w = u3a_walloc(old_u->len_w + c3_wiseof(u3a_atom)); + u3a_atom* new_u = (u3a_atom*)(void *)new_w; + u3_noun new = u3a_to_pug(u3a_outa(new_u)); + + new_u->use_w = 1; + +#ifdef VERBOSE_TAKE + u3l_log("%s: atom %p to %p", ( c3y == u3a_is_north(u3R) ) + ? "north" + : "south", + old_u, + new_u); +#endif + + // XX use memcpy? + // + new_u->mug_w = old_u->mug_w; + new_u->len_w = old_u->len_w; + { + c3_w i_w; + + for ( i_w=0; i_w < old_u->len_w; i_w++ ) { + new_u->buf_w[i_w] = old_u->buf_w[i_w]; + } + } + + // borrow mug slot to record new destination in [old_u] + // + old_u->mug_w = new; + + return new; +} + +/* _ca_take_cell(): reallocate a cell off the stack. +*/ +static inline u3_cell +_ca_take_cell(u3a_cell* old_u, u3_noun hed, u3_noun tel) +{ + c3_w* new_w = u3a_celloc(); + u3a_cell* new_u = (u3a_cell*)(void *)new_w; + u3_cell new = u3a_to_pom(u3a_outa(new_u)); + +#ifdef VERBOSE_TAKE + u3l_log("%s: cell %p to %p", ( c3y == u3a_is_north(u3R) ) + ? "north" + : "south", + old_u, + new_u); +#endif + + new_u->use_w = 1; + new_u->mug_w = old_u->mug_w; + new_u->hed = hed; + new_u->tel = tel; + + // borrow mug slot to record new destination in [old_u] + // + old_u->mug_w = new; + + return new; +} + +/* _ca_take: stack frame for recording cell travesal +** (u3_none == hed) == head-frame +*/ +typedef struct _ca_take +{ + u3_weak hed; // taken head + u3_cell old; // old cell +} _ca_take; + +/* _ca_take_next_south: take next noun, pushing cells on stack. +*/ +static inline u3_noun +_ca_take_next_north(u3a_pile* pil_u, u3_noun veb) +{ + while ( 1 ) { + // direct atoms and senior refs are not counted. + // + if ( (c3y == u3a_is_cat(veb)) + || (c3y == u3a_north_is_senior(u3R, veb)) ) + { + return veb; + } + // not junior; normal (heap) refs on our road are counted. + // + else if ( c3n == u3a_north_is_junior(u3R, veb) ) { + _me_gain_use(veb); // bypass branches in u3k() + return veb; + } + // junior (stack) refs are copied. + // + else { + u3a_noun* veb_u = u3a_to_ptr(veb); + + // 32-bit mug_w: already copied [veb] and [mug_w] is the new ref. + // + if ( veb_u->mug_w >> 31 ) { + u3_noun nov = (u3_noun)veb_u->mug_w; + + u3_assert( c3y == u3a_north_is_normal(u3R, nov) ); + +#ifdef VERBOSE_TAKE + u3l_log("north: %p is already %p", veb_u, u3a_to_ptr(nov)); +#endif + + _me_gain_use(nov); // bypass branches in u3k() + return nov; + } + else if ( c3y == u3a_is_atom(veb) ) { + return _ca_take_atom((u3a_atom*)veb_u); + } + else { + u3a_cell* old_u = (u3a_cell*)veb_u; + _ca_take* fam_u = u3a_push(pil_u); + + fam_u->hed = u3_none; + fam_u->old = veb; + + veb = old_u->hed; + continue; + } + } + } +} + +/* _ca_take_next_south: take next noun, pushing cells on stack. +*/ +static inline u3_noun +_ca_take_next_south(u3a_pile* pil_u, u3_noun veb) +{ + while ( 1 ) { + // direct atoms and senior refs are not counted. + // + if ( (c3y == u3a_is_cat(veb)) + || (c3y == u3a_south_is_senior(u3R, veb)) ) + { + return veb; + } + // not junior; a normal pointer in our road -- refcounted + // + else if ( c3n == u3a_south_is_junior(u3R, veb) ) { + _me_gain_use(veb); // bypass branches in u3k() + return veb; + } + // junior (stack) refs are copied. + // + else { + u3a_noun* veb_u = u3a_to_ptr(veb); + + // 32-bit mug_w: already copied [veb] and [mug_w] is the new ref. + // + if ( veb_u->mug_w >> 31 ) { + u3_noun nov = (u3_noun)veb_u->mug_w; + + u3_assert( c3y == u3a_south_is_normal(u3R, nov) ); + +#ifdef VERBOSE_TAKE + u3l_log("south: %p is already %p", veb_u, u3a_to_ptr(nov)); +#endif + + _me_gain_use(nov); // bypass branches in u3k() + return nov; + } + else if ( c3y == u3a_is_atom(veb) ) { + return _ca_take_atom((u3a_atom*)veb_u); + } + else { + u3a_cell* old_u = (u3a_cell*)veb_u; + _ca_take* fam_u = u3a_push(pil_u); + + fam_u->hed = u3_none; + fam_u->old = veb; + + veb = old_u->hed; + continue; + } + } + } +} + +/* _ca_take_north(): in a north road, gain, copying juniors (from stack). +*/ +static u3_noun +_ca_take_north(u3_noun veb) +{ + u3_noun pro; + _ca_take* fam_u; + u3a_pile pil_u; + u3a_pile_prep(&pil_u, sizeof(*fam_u)); + + // commence taking + // + pro = _ca_take_next_north(&pil_u, veb); + + // process cell results + // + if ( c3n == u3a_pile_done(&pil_u) ) { + fam_u = u3a_peek(&pil_u); + + do { + // head-frame: stash copy and continue into the tail + // + if ( u3_none == fam_u->hed ) { + u3a_cell* old_u = u3a_to_ptr(fam_u->old); + fam_u->hed = pro; + pro = _ca_take_next_north(&pil_u, old_u->tel); + fam_u = u3a_peek(&pil_u); + } + // tail-frame: copy cell and pop the stack + // + else { + u3a_cell* old_u = u3a_to_ptr(fam_u->old); + pro = _ca_take_cell(old_u, fam_u->hed, pro); + fam_u = u3a_pop(&pil_u); + } + } while ( c3n == u3a_pile_done(&pil_u) ); + } + + return pro; +} +/* _ca_take_south(): in a south road, gain, copying juniors (from stack). +*/ +static u3_noun +_ca_take_south(u3_noun veb) +{ + u3_noun pro; + _ca_take* fam_u; + u3a_pile pil_u; + u3a_pile_prep(&pil_u, sizeof(*fam_u)); + + // commence taking + // + pro = _ca_take_next_south(&pil_u, veb); + + // process cell results + // + if ( c3n == u3a_pile_done(&pil_u) ) { + fam_u = u3a_peek(&pil_u); + + do { + // head-frame: stash copy and continue into the tail + // + if ( u3_none == fam_u->hed ) { + u3a_cell* old_u = u3a_to_ptr(fam_u->old); + fam_u->hed = pro; + pro = _ca_take_next_south(&pil_u, old_u->tel); + fam_u = u3a_peek(&pil_u); + } + // tail-frame: copy cell and pop the stack + // + else { + u3a_cell* old_u = u3a_to_ptr(fam_u->old); + pro = _ca_take_cell(old_u, fam_u->hed, pro); + fam_u = u3a_pop(&pil_u); + } + } while ( c3n == u3a_pile_done(&pil_u) ); + } + + return pro; +} + +/* u3a_take(): gain, copying juniors. +*/ +u3_noun +u3a_take(u3_noun veb) +{ + u3_noun pro; + u3t_on(coy_o); + + u3_assert(u3_none != veb); + + pro = ( c3y == u3a_is_north(u3R) ) + ? _ca_take_north(veb) + : _ca_take_south(veb); + + u3t_off(coy_o); + return pro; +} + +/* u3a_left(): true of junior if preserved. +*/ +c3_o +u3a_left(u3_noun som) +{ + if ( _(u3a_is_cat(som)) || + !_(u3a_is_junior(u3R, som)) ) + { + return c3y; + } + else { + u3a_noun* dog_u = u3a_to_ptr(som); + + return __(0 != (dog_u->mug_w >> 31)); + } +} + +/* _me_gain_north(): gain on a north road. +*/ +static u3_noun +_me_gain_north(u3_noun dog) +{ + if ( c3y == u3a_north_is_senior(u3R, dog) ) { + /* senior pointers are not refcounted + */ + return dog; + } + else { + /* junior nouns are disallowed + */ + u3_assert(!_(u3a_north_is_junior(u3R, dog))); + + /* normal pointers are refcounted + */ + _me_gain_use(dog); + return dog; + } +} + +/* _me_gain_south(): gain on a south road. +*/ +static u3_noun +_me_gain_south(u3_noun dog) +{ + if ( c3y == u3a_south_is_senior(u3R, dog) ) { + /* senior pointers are not refcounted + */ + return dog; + } + else { + /* junior nouns are disallowed + */ + u3_assert(!_(u3a_south_is_junior(u3R, dog))); + + /* normal nouns are refcounted + */ + _me_gain_use(dog); + return dog; + } +} + +/* _me_lose_north(): lose on a north road. +*/ +static void +_me_lose_north(u3_noun dog) +{ +top: + if ( c3y == u3a_north_is_normal(u3R, dog) ) { + u3a_noun* box_u = u3a_to_ptr(dog); + + if ( box_u->use_w > 1 ) { + box_u->use_w -= 1; + } + else { + if ( 0 == box_u->use_w ) { + u3m_bail(c3__foul); + } + else { + if ( _(u3a_is_pom(dog)) ) { + u3a_cell* dog_u = (void*)box_u; + u3_noun h_dog = dog_u->hed; + u3_noun t_dog = dog_u->tel; + + if ( !_(u3a_is_cat(h_dog)) ) { + _me_lose_north(h_dog); + } + u3a_cfree((c3_w*)dog_u); + if ( !_(u3a_is_cat(t_dog)) ) { + dog = t_dog; + goto top; + } + } + else { + u3a_wfree(box_u); + } + } + } + } +} + +/* _me_lose_south(): lose on a south road. +*/ +static void +_me_lose_south(u3_noun dog) +{ +top: + if ( c3y == u3a_south_is_normal(u3R, dog) ) { + u3a_noun* box_u = u3a_to_ptr(dog); + + if ( box_u->use_w > 1 ) { + box_u->use_w -= 1; + } + else { + if ( 0 == box_u->use_w ) { + u3m_bail(c3__foul); + } + else { + if ( _(u3a_is_pom(dog)) ) { + u3a_cell* dog_u = (void*)box_u; + u3_noun h_dog = dog_u->hed; + u3_noun t_dog = dog_u->tel; + + if ( !_(u3a_is_cat(h_dog)) ) { + _me_lose_south(h_dog); + } + u3a_cfree((c3_w*)dog_u); + if ( !_(u3a_is_cat(t_dog)) ) { + dog = t_dog; + goto top; + } + } + else { + u3a_wfree(box_u); + } + } + } + } +} + +/* u3a_gain(): gain a reference count in normal space. +*/ +u3_noun +u3a_gain(u3_noun som) +{ + u3t_on(mal_o); + u3_assert(u3_none != som); + + if ( !_(u3a_is_cat(som)) ) { + som = _(u3a_is_north(u3R)) + ? _me_gain_north(som) + : _me_gain_south(som); + } + u3t_off(mal_o); + + return som; +} + +/* u3a_lose(): lose a reference count. +*/ +void +u3a_lose(u3_noun som) +{ + u3t_on(mal_o); + if ( !_(u3a_is_cat(som)) ) { + if ( _(u3a_is_north(u3R)) ) { + _me_lose_north(som); + } else { + _me_lose_south(som); + } + } + u3t_off(mal_o); +} + +/* u3a_use(): reference count. +*/ +c3_w +u3a_use(u3_noun som) +{ + if ( _(u3a_is_cat(som)) ) { + return 1; + } + else { + u3a_noun* box_u = u3a_to_ptr(som); + return box_u->use_w; + } +} + +#define SWAP(l, r) \ + do { typeof(l) t = l; l = r; r = t; } while (0) + +/* _ca_wed_our(): unify [a] and [b] on u3R. +*/ +static inline c3_o +_ca_wed_our(u3_noun *restrict a, u3_noun *restrict b) +{ + c3_t asr_t = ( c3y == u3a_is_senior(u3R, *a) ); + c3_t bsr_t = ( c3y == u3a_is_senior(u3R, *b) ); + + if ( asr_t == bsr_t ) { + // both [a] and [b] are senior; we can't unify on u3R + // + if ( asr_t ) return c3n; + + // both are on u3R; keep the deeper address + // (and gain a reference) + // + // (N && <) || (S && >) + // XX consider keeping higher refcount instead + // + if ( (*a > *b) == (c3y == u3a_is_north(u3R)) ) SWAP(a, b); + + _me_gain_use(*a); + } + // one of [a] or [b] are senior; keep it + // + else if ( !asr_t ) SWAP(a, b); + + u3z(*b); + *b = *a; + return c3y; +} + +/* _ca_wed_you(): unify [a] and [b] on senior [rod_u]. leaks +*/ +static c3_o +_ca_wed_you(u3a_road* rod_u, u3_noun *restrict a, u3_noun *restrict b) +{ + // XX assume( rod_u != u3R ) + c3_t asr_t = ( c3y == u3a_is_senior(rod_u, *a) ); + c3_t bsr_t = ( c3y == u3a_is_senior(rod_u, *b) ); + + if ( asr_t == bsr_t ) { + // both [a] and [b] are senior; we can't unify on [rod_u] + // + if ( asr_t ) return c3n; + + // both are on [rod_u]; keep the deeper address + // (and gain a reference) + // + // (N && <) || (S && >) + // XX consider keeping higher refcount instead + // + if ( (*a > *b) == (c3y == u3a_is_north(rod_u)) ) SWAP(a, b); + + _me_gain_use(*a); + } + // one of [a] or [b] are senior; keep it + // + else if ( !asr_t ) SWAP(a, b); + + *b = *a; + return c3y; +} + +#undef SWAP + +/* u3a_wed(): unify noun references. +*/ +void +u3a_wed(u3_noun *restrict a, u3_noun *restrict b) +{ + // XX assume( *a != *b ) + u3_road* rod_u = u3R; + c3_o wed_o; + + if ( rod_u->kid_p ) return; + + wed_o = _ca_wed_our(a, b); + +#ifdef U3_MEMORY_DEBUG + return; +#else + if ( u3C.wag_w & u3o_debug_ram ) return; +#endif + + // while not at home, attempt to unify + // + // we try to unify on our road, and retry on senior roads + // until we succeed or reach the home road. + // + // we can't perform this kind of butchery on the home road, + // where asynchronous things can allocate. + // (XX anything besides u3t_samp?) + // + // when unifying on a higher road, we can't free nouns, + // because we can't track junior nouns that point into + // that road. + // + // this is just an implementation issue -- we could set use + // counts to 0 without actually freeing. but the allocator + // would have to be actually designed for this. + // (alternately, we could keep a deferred free-list) + // + // not freeing may generate spurious leaks, so we disable + // senior unification when debugging memory. this will + // cause a very slow boot process as the compiler compiles + // itself, constantly running into duplicates. + // + + while ( (c3n == wed_o) + && rod_u->par_p + && (&u3H->rod_u != (rod_u = u3to(u3_road, rod_u->par_p))) ) + { + wed_o = _ca_wed_you(rod_u, a, b); + } +} + +/* u3a_luse(): check refcount sanity. +*/ +void +u3a_luse(u3_noun som) +{ + if ( 0 == u3a_use(som) ) { + fprintf(stderr, "loom: insane %d 0x%x\r\n", som, som); + abort(); + } + if ( _(u3du(som)) ) { + u3a_luse(u3h(som)); + u3a_luse(u3t(som)); + } +} + +/* u3a_mark_ptr(): mark a pointer for gc. Produce size if first mark. +*/ +c3_w +u3a_mark_ptr(void* ptr_v) +{ + // XX restore loom-bounds check + u3_post som_p = u3a_outa(ptr_v); + c3_w siz_w = !(u3C.wag_w & u3o_debug_ram) + ? _mark_post(som_p) + : _count_post(som_p, 0); + + return siz_w; +} + +/* u3a_relocate_post(): replace post with relocation pointer (unchecked). +*/ +void +u3a_relocate_post(u3_post *som_p) +{ + *som_p = _pack_relocate(*som_p); +} + +/* u3a_mark_relocate_post(): replace post with relocation pointer (checked). +*/ +u3_post +u3a_mark_relocate_post(u3_post som_p, c3_t *fir_t) +{ + return _pack_relocate_mark(som_p, fir_t); +} + +/* u3a_relocate_noun(): replace noun with relocation reference, recursively. +*/ +void +u3a_relocate_noun(u3_noun *som) +{ + u3_post old_p, new_p; + u3_noun old; + u3a_cell* cel_u; + c3_t fir_t; + + while ( 1 ) { + old = *som; + + if ( c3y == u3a_is_cat(old) ) return; + + old_p = u3a_to_off(old); + + if ( c3n == u3a_is_cell(old) ) { + new_p = _pack_relocate(old_p); + *som = u3a_to_pug(new_p); + return; + } + + new_p = _pack_relocate_mark(old_p, &fir_t); + *som = u3a_to_pom(new_p); + + if ( !fir_t ) return; + + cel_u = u3to(u3a_cell, old_p); + u3a_relocate_noun(&(cel_u->hed)); + som = &(cel_u->tel); + } +} + +/* u3a_mark_mptr(): mark a malloc-allocated ptr for gc. +*/ +c3_w +u3a_mark_mptr(void* ptr_v) +{ + return u3a_mark_ptr(ptr_v); +} + +/* u3a_mark_rptr(): mark a refcounted, word-aligned ptr for gc. +*/ +c3_w +u3a_mark_rptr(void* ptr_v) +{ + u3_post som_p = u3a_outa(ptr_v); + c3_w siz_w = !(u3C.wag_w & u3o_debug_ram) + ? _mark_post(som_p) + : _count_post(som_p, 1); + + return siz_w; +} + +/* u3a_mark_noun(): mark a noun for gc. Produce size. +*/ +c3_w +u3a_mark_noun(u3_noun som) +{ + c3_w siz_w = 0; + + while ( 1 ) { + if ( _(u3a_is_senior(u3R, som)) ) { + return siz_w; + } + else { + c3_w* dog_w = u3a_to_ptr(som); + c3_w new_w = u3a_mark_rptr(dog_w); + + if ( 0 == new_w || 0xffffffff == new_w ) { // see u3a_mark_ptr() + return siz_w; + } + else { + siz_w += new_w; + if ( _(u3du(som)) ) { + siz_w += u3a_mark_noun(u3h(som)); + som = u3t(som); + } + else return siz_w; + } + } + } +} + +/* u3a_count_noun(): count size of pointer. +*/ +c3_w +u3a_count_ptr(void* ptr_v) +{ +#if 0 + if ( _(u3a_is_north(u3R)) ) { + if ( !((ptr_v >= u3a_into(u3R->rut_p)) && + (ptr_v < u3a_into(u3R->hat_p))) ) + { + return 0; + } + } + else { + if ( !((ptr_v >= u3a_into(u3R->hat_p)) && + (ptr_v < u3a_into(u3R->rut_p))) ) + { + return 0; + } + } + { + u3a_box* box_u = u3a_botox(ptr_v); + c3_w siz_w; + + c3_ws use_ws = (c3_ws)box_u->use_w; + + if ( use_ws == 0 ) { + fprintf(stderr, "%p is bogus\r\n", ptr_v); + siz_w = 0; + } + else { + u3_assert(use_ws != 0); + + if ( use_ws < 0 ) { + siz_w = 0; + } + else { + use_ws = -use_ws; + siz_w = box_u->siz_w; + } + box_u->use_w = (c3_w)use_ws; + } + return siz_w; + } +#endif + return 0; +} + +/* u3a_count_noun(): count size of noun. +*/ +c3_w +u3a_count_noun(u3_noun som) +{ + c3_w siz_w = 0; + + while ( 1 ) { + if ( _(u3a_is_senior(u3R, som)) ) { + return siz_w; + } + else { + c3_w* dog_w = u3a_to_ptr(som); + c3_w new_w = u3a_count_ptr(dog_w); + + if ( 0 == new_w ) { + return siz_w; + } + else { + siz_w += new_w; + if ( _(u3du(som)) ) { + siz_w += u3a_count_noun(u3h(som)); + som = u3t(som); + } + else return siz_w; + } + } + } +} + +/* u3a_discount_ptr(): clean up after counting a pointer. +*/ +c3_w +u3a_discount_ptr(void* ptr_v) +{ +#if 0 + if ( _(u3a_is_north(u3R)) ) { + if ( !((ptr_v >= u3a_into(u3R->rut_p)) && + (ptr_v < u3a_into(u3R->hat_p))) ) + { + return 0; + } + } + else { + if ( !((ptr_v >= u3a_into(u3R->hat_p)) && + (ptr_v < u3a_into(u3R->rut_p))) ) + { + return 0; + } + } + u3a_box* box_u = u3a_botox(ptr_v); + c3_w siz_w; + + c3_ws use_ws = (c3_ws)box_u->use_w; + + if ( use_ws == 0 ) { + fprintf(stderr, "%p is bogus\r\n", ptr_v); + siz_w = 0; + } + else { + u3_assert(use_ws != 0); + + if ( use_ws < 0 ) { + use_ws = -use_ws; + siz_w = box_u->siz_w; + } + else { + siz_w = 0; + } + box_u->use_w = (c3_w)use_ws; + } + + return siz_w; +#endif + return 0; +} + +/* u3a_discount_noun(): clean up after counting a noun. +*/ +c3_w +u3a_discount_noun(u3_noun som) +{ + c3_w siz_w = 0; + + while ( 1 ) { + if ( _(u3a_is_senior(u3R, som)) ) { + return siz_w; + } + else { + c3_w* dog_w = u3a_to_ptr(som); + c3_w new_w = u3a_discount_ptr(dog_w); + + if ( 0 == new_w ) { + return siz_w; + } + else { + siz_w += new_w; + if ( _(u3du(som)) ) { + siz_w += u3a_discount_noun(u3h(som)); + som = u3t(som); + } + else return siz_w; + } + } + } +} + +/* u3a_print_time: print microsecond time. +*/ +void +u3a_print_time(c3_c* str_c, c3_c* cap_c, c3_d mic_d) +{ + u3_assert( 0 != str_c ); + + c3_w sec_w = (mic_d / 1000000); + c3_w mec_w = (mic_d % 1000000) / 1000; + c3_w mic_w = (mic_d % 1000); + + if ( sec_w ) { + sprintf(str_c, "%s s/%d.%03d.%03d", cap_c, sec_w, mec_w, mic_w); + } + else if ( mec_w ) { + sprintf(str_c, "%s ms/%d.%03d", cap_c, mec_w, mic_w); + } + else { + sprintf(str_c, "%s \xc2\xb5s/%d", cap_c, mic_w); + } +} + +/* u3a_print_memory: print memory amount to file descriptor. +*/ +void +u3a_print_memory(FILE* fil_u, c3_c* cap_c, c3_w wor_w) +{ + u3_assert( 0 != fil_u ); + + c3_z byt_z = ((c3_z)wor_w * 4); + c3_z gib_z = (byt_z / 1000000000); + c3_z mib_z = (byt_z % 1000000000) / 1000000; + c3_z kib_z = (byt_z % 1000000) / 1000; + c3_z bib_z = (byt_z % 1000); + + if ( byt_z ) { + if ( gib_z ) { + fprintf(fil_u, "%s: GB/%" PRIc3_z ".%03" PRIc3_z ".%03" PRIc3_z ".%03" PRIc3_z "\r\n", + cap_c, gib_z, mib_z, kib_z, bib_z); + } + else if ( mib_z ) { + fprintf(fil_u, "%s: MB/%" PRIc3_z ".%03" PRIc3_z ".%03" PRIc3_z "\r\n", + cap_c, mib_z, kib_z, bib_z); + } + else if ( kib_z ) { + fprintf(fil_u, "%s: KB/%" PRIc3_z ".%03" PRIc3_z "\r\n", + cap_c, kib_z, bib_z); + } + else if ( bib_z ) { + fprintf(fil_u, "%s: B/%" PRIc3_z "\r\n", + cap_c, bib_z); + } + } +} + +/* u3a_print_memory_str: print memory amount to string. +*/ +void +u3a_print_memory_str(c3_c* str_c, c3_c* cap_c, c3_w wor_w) +{ + u3_assert( 0 != str_c ); + + c3_z byt_z = ((c3_z)wor_w * 4); + c3_z gib_z = (byt_z / 1000000000); + c3_z mib_z = (byt_z % 1000000000) / 1000000; + c3_z kib_z = (byt_z % 1000000) / 1000; + c3_z bib_z = (byt_z % 1000); + + if ( byt_z ) { + if ( gib_z ) { + sprintf(str_c, "%s: GB/%" PRIc3_z ".%03" PRIc3_z ".%03" PRIc3_z ".%03" PRIc3_z "\r\n", + cap_c, gib_z, mib_z, kib_z, bib_z); + } + else if ( mib_z ) { + sprintf(str_c, "%s: MB/%" PRIc3_z ".%03" PRIc3_z ".%03" PRIc3_z "\r\n", + cap_c, mib_z, kib_z, bib_z); + } + else if ( kib_z ) { + sprintf(str_c, "%s: KB/%" PRIc3_z ".%03" PRIc3_z "\r\n", + cap_c, kib_z, bib_z); + } + else if ( bib_z ) { + sprintf(str_c, "%s: B/%" PRIc3_z "\r\n", + cap_c, bib_z); + } + } +} + +/* u3a_maid(): maybe print memory. +*/ +c3_w +u3a_maid(FILE* fil_u, c3_c* cap_c, c3_w wor_w) +{ + if ( 0 != fil_u ) { + u3a_print_memory(fil_u, cap_c, wor_w); + } + return wor_w; +} + +/* _ca_print_memory(): un-captioned u3a_print_memory(). +*/ +static void +_ca_print_memory(FILE* fil_u, c3_w byt_w) +{ + c3_w gib_w = (byt_w / 1000000000); + c3_w mib_w = (byt_w % 1000000000) / 1000000; + c3_w kib_w = (byt_w % 1000000) / 1000; + c3_w bib_w = (byt_w % 1000); + + if ( gib_w ) { + fprintf(fil_u, "GB/%d.%03d.%03d.%03d\r\n", + gib_w, mib_w, kib_w, bib_w); + } + else if ( mib_w ) { + fprintf(fil_u, "MB/%d.%03d.%03d\r\n", mib_w, kib_w, bib_w); + } + else if ( kib_w ) { + fprintf(fil_u, "KB/%d.%03d\r\n", kib_w, bib_w); + } + else { + fprintf(fil_u, "B/%d\r\n", bib_w); + } +} + +/* u3a_quac_free: free quac memory. +*/ +void +u3a_quac_free(u3m_quac* qua_u) +{ + c3_w i_w = 0; + while ( qua_u->qua_u[i_w] != NULL ) { + u3a_quac_free(qua_u->qua_u[i_w]); + i_w++; + } + c3_free(qua_u->nam_c); + c3_free(qua_u->qua_u); + c3_free(qua_u); +} + +static c3_w +_ca_prof_mark(u3_noun som) +{ + if ( c3y == u3a_is_senior(u3R, som) ) { + return 0; + } + + // marking memory-profile entries under u3o_debug_ram + // requires special care to avoid over-incrementing the refcount, + // as the entries in the profile are not true roots: + // they either belong to arvo or the profile itself. + // we measure them here, but account for them elsewhere (subsequently) + // from a refcounting standpoint + // + u3_post som_p = u3a_to_off(som); + c3_w siz_w = !(u3C.wag_w & u3o_debug_ram) + ? _mark_post(som_p) + : _count_post(som_p, 2); + + if ( !siz_w ) { + return 0; + } + + if ( c3y == u3a_is_cell(som) ) { + siz_w += u3a_mark_noun(u3h(som)); + siz_w += u3a_mark_noun(u3t(som)); + } + + return siz_w; +} + +/* u3a_prof(): mark/measure/print memory profile. RETAIN. +*/ +u3m_quac* +u3a_prof(FILE* fil_u, u3_noun mas) +{ + u3m_quac* pro_u = c3_calloc(sizeof(*pro_u)); + u3_noun h_mas, t_mas; + + if ( c3n == u3r_cell(mas, &h_mas, &t_mas) ) { + fprintf(fil_u, "mistyped mass\r\n"); + c3_free(pro_u); + return NULL; + } + else if ( c3y == u3du(h_mas) ) { + fprintf(fil_u, "mistyped mass head\r\n"); + { + c3_c* lab_c = u3m_pretty(h_mas); + fprintf(fil_u, "h_mas: %s", lab_c); + c3_free(lab_c); + } + c3_free(pro_u); + return NULL; + } + else { + + u3_noun it_mas, tt_mas; + + if ( c3n == u3r_cell(t_mas, &it_mas, &tt_mas) ) { + fprintf(fil_u, "mistyped mass tail\r\n"); + c3_free(pro_u); + return NULL; + } + else if ( c3y == it_mas ) { + c3_w siz_w = _ca_prof_mark(tt_mas); + + pro_u->nam_c = u3r_string(h_mas); + pro_u->siz_w = siz_w*4; + pro_u->qua_u = NULL; + return pro_u; + + } + else if ( c3n == it_mas ) { + pro_u->qua_u = c3_malloc(sizeof(pro_u->qua_u)); + c3_w i_w = 0; + c3_t bad_t = 0; + while ( c3y == u3du(tt_mas) ) { + u3m_quac* new_u = u3a_prof(fil_u, u3h(tt_mas)); + if ( NULL == new_u ) { + bad_t = 1; + } else { + pro_u->qua_u = c3_realloc(pro_u->qua_u, (i_w + 2) * sizeof(pro_u->qua_u)); + pro_u->siz_w += new_u->siz_w; + pro_u->qua_u[i_w] = new_u; + } + tt_mas = u3t(tt_mas); + i_w++; + } + pro_u->qua_u[i_w] = NULL; + + if ( bad_t ) { + i_w = 0; + while ( pro_u->qua_u[i_w] != NULL ) { + u3a_quac_free(pro_u->qua_u[i_w]); + i_w++; + } + c3_free(pro_u->qua_u); + c3_free(pro_u); + return NULL; + } else { + pro_u->nam_c = u3r_string(h_mas); + return pro_u; + } + } + else { + fprintf(fil_u, "mistyped (strange) mass tail\r\n"); + c3_free(pro_u); + return NULL; + } + } +} + + +/* u3a_print_quac: print a memory report. +*/ + +void +u3a_print_quac(FILE* fil_u, c3_w den_w, u3m_quac* mas_u) +{ + u3_assert( 0 != fil_u ); + + if ( mas_u->siz_w ) { + fprintf(fil_u, "%*s%s: ", den_w, "", mas_u->nam_c); + + if ( mas_u->qua_u == NULL ) { + _ca_print_memory(fil_u, mas_u->siz_w); + } else { + fprintf(fil_u, "\r\n"); + c3_w i_w = 0; + while ( mas_u->qua_u[i_w] != NULL ) { + u3a_print_quac(fil_u, den_w+2, mas_u->qua_u[i_w]); + i_w++; + } + fprintf(fil_u, "%*s--", den_w, ""); + _ca_print_memory(fil_u, mas_u->siz_w); + } + } +} + +/* u3a_mark_road(): mark ad-hoc persistent road structures. +*/ +u3m_quac* +u3a_mark_road() +{ + u3m_quac** qua_u = c3_malloc(sizeof(*qua_u) * 14); + + qua_u[0] = c3_calloc(sizeof(*qua_u[0])); + qua_u[0]->nam_c = strdup("namespace"); + qua_u[0]->siz_w = u3a_mark_noun(u3R->ski.gul) * 4; + + qua_u[1] = c3_calloc(sizeof(*qua_u[1])); + qua_u[1]->nam_c = strdup("trace stack"); + qua_u[1]->siz_w = u3a_mark_noun(u3R->bug.tax) * 4; + + qua_u[2] = c3_calloc(sizeof(*qua_u[2])); + qua_u[2]->nam_c = strdup("trace buffer"); + qua_u[2]->siz_w = u3a_mark_noun(u3R->bug.mer) * 4; + + qua_u[3] = c3_calloc(sizeof(*qua_u[3])); + qua_u[3]->nam_c = strdup("profile batteries"); + qua_u[3]->siz_w = u3a_mark_noun(u3R->pro.don) * 4; + + qua_u[4] = c3_calloc(sizeof(*qua_u[4])); + qua_u[4]->nam_c = strdup("profile doss"); + qua_u[4]->siz_w = u3a_mark_noun(u3R->pro.day) * 4; + + qua_u[5] = c3_calloc(sizeof(*qua_u[5])); + qua_u[5]->nam_c = strdup("new profile trace"); + qua_u[5]->siz_w = u3a_mark_noun(u3R->pro.trace) * 4; + + qua_u[6] = c3_calloc(sizeof(*qua_u[6])); + qua_u[6]->nam_c = strdup("transient memoization cache"); + qua_u[6]->siz_w = u3h_mark(u3R->cax.har_p) * 4; + + qua_u[7] = c3_calloc(sizeof(*qua_u[7])); + qua_u[7]->nam_c = strdup("persistent memoization cache"); + qua_u[7]->siz_w = u3h_mark(u3R->cax.per_p) * 4; + + qua_u[8] = c3_calloc(sizeof(*qua_u[8])); + qua_u[8]->nam_c = strdup("page directory"); + qua_u[8]->siz_w = u3a_mark_ptr(u3a_into(u3R->hep.pag_p)) * 4; + + qua_u[9] = c3_calloc(sizeof(*qua_u[9])); + qua_u[9]->nam_c = strdup("cell pool"); + + { + u3_post *cel_p; + c3_w cel_w = 0; + + if ( u3R->cel.cel_p ) { + cel_p = u3to(u3_post, u3R->cel.cel_p); + cel_w += u3a_mark_ptr(cel_p); + + for ( c3_w i_w = 0; i_w < u3R->cel.hav_w; i_w++ ) { + cel_w += u3a_mark_ptr(u3a_into(cel_p[i_w])); + } + } + + qua_u[9]->siz_w = cel_w * 4; + } + + qua_u[10] = c3_calloc(sizeof(*qua_u[10])); + qua_u[10]->nam_c = strdup("free list"); + + { + u3a_dell *fre_u = u3tn(u3a_dell, u3R->hep.fre_p); + c3_w fre_w = 0; + + while ( fre_u ) { + fre_w += u3a_mark_ptr(fre_u); + fre_u = u3tn(u3a_dell, fre_u->nex_p); + } + + if ( u3R->hep.cac_p ) { + fre_w += u3a_mark_ptr(u3a_into(u3R->hep.cac_p)); + } + + qua_u[10]->siz_w = fre_w * 4; + } + + qua_u[11] = c3_calloc(sizeof(*qua_u[11])); + qua_u[11]->nam_c = strdup("metadata"); + + { + c3_w wee_w = 0; + + for ( c3_w i_w = 0; i_w < u3a_crag_no; i_w++ ) { + wee_w += u3a_Mark.wee_w[i_w]; + } + + qua_u[11]->siz_w = wee_w * 4; + } + + qua_u[12] = NULL; + + c3_w sum_w = 0; + for (c3_w i_w = 0; qua_u[i_w]; i_w++) { + sum_w += qua_u[i_w]->siz_w; + } + + u3m_quac* tot_u = c3_malloc(sizeof(*tot_u)); + tot_u->nam_c = strdup("total road stuff"); + tot_u->siz_w = sum_w; + tot_u->qua_u = qua_u; + + return tot_u; +} + +/* u3a_reclaim(): clear ad-hoc persistent caches to reclaim memory. +*/ +void +u3a_reclaim(void) +{ + // clear the memoization cache + // + u3h_free(u3R->cax.har_p); + u3R->cax.har_p = u3h_new(); +} + +/* u3a_rewrite_compact(): rewrite pointers in ad-hoc persistent road structures. +*/ +void +u3a_rewrite_compact(void) +{ + // XX relocate cel_p + u3a_relocate_noun(&(u3R->ski.gul)); + u3a_relocate_noun(&(u3R->bug.tax)); + u3a_relocate_noun(&(u3R->bug.mer)); + u3a_relocate_noun(&(u3R->pro.don)); + u3a_relocate_noun(&(u3R->pro.day)); + u3a_relocate_noun(&(u3R->pro.trace)); + u3h_relocate(&(u3R->cax.har_p)); + u3h_relocate(&(u3R->cax.per_p)); +} + +/* u3a_idle(): measure free-lists in [rod_u] +*/ +c3_w +u3a_idle(u3a_road* rod_u) +{ + // XX ignores argument + c3_w pag_w = _idle_pages(); + if ( pag_w ) { + fprintf(stderr, "loom: idle %u complete pages\r\n", pag_w); + } + return (pag_w << u3a_page) + _idle_words(); +} + +void +u3a_ream(void) +{ + _poison_pages(); + _poison_words(); +} + +void +u3a_wait(void) +{ + _unpoison_words(); +} + +void +u3a_dash(void) +{ + _poison_words(); +} + +/* u3a_sweep(): sweep a fully marked road. +*/ +c3_w +u3a_sweep(void) +{ + c3_w siz_w = !(u3C.wag_w & u3o_debug_ram) + ? _sweep_directory() + : _sweep_counts(); + + return siz_w; +} + +/* u3a_pack_seek(): sweep the heap, modifying boxes to record new addresses. +*/ +void +u3a_pack_seek(u3a_road* rod_u) +{ + u3a_pack_init(); + + // XX clear cell pool on inner roads? + + // XX use road argument + _pack_seek(); + _pack_relocate_heap(); +} + +/* u3a_pack_move(): sweep the heap, moving boxes to new addresses. +*/ +void +u3a_pack_move(u3a_road* rod_u) +{ + // XX use road argument + _pack_move(); + + u3a_pack_done(); + + u3_post old_p = u3R->hat_p; + + // XX move me? + // + u3R->hat_p = u3R->rut_p + (u3R->hep.dir_ws * (c3_ws)(u3R->hep.len_w << u3a_page)); + + u3a_drop_heap(old_p, u3R->hat_p); +} + +#if 0 +/* _ca_detect(): in u3a_detect(). +*/ +static c3_d +_ca_detect(u3p(u3h_root) har_p, u3_noun fum, u3_noun som, c3_d axe_d) +{ + while ( 1 ) { + if ( som == fum ) { + return axe_d; + } + else if ( !_(u3du(fum)) || (u3_none != u3h_get(har_p, fum)) ) { + return 0; + } + else { + c3_d eax_d; + + u3h_put(har_p, fum, 0); + + if ( 0 != (eax_d = _ca_detect(har_p, u3h(fum), som, 2ULL * axe_d)) ) { + return c3y; + } + else { + fum = u3t(fum); + axe_d = (2ULL * axe_d) + 1; + } + } + } +} + +/* u3a_detect(): for debugging, check if (som) is referenced from (fum). +** +** (som) and (fum) are both RETAINED. +*/ +c3_d +u3a_detect(u3_noun fum, u3_noun som) +{ + u3p(u3h_root) har_p = u3h_new(); + c3_o ret_o; + + ret_o = _ca_detect(har_p, fum, som, 1); + u3h_free(har_p); + + return ret_o; +} +#endif + +#ifdef U3_MEMORY_DEBUG +/* u3a_lush(): leak push. +*/ +c3_w +u3a_lush(c3_w lab_w) +{ + c3_w cod_w = u3_Code; + + u3_Code = lab_w; + return cod_w; +} + +/* u3a_lop(): leak pop. +*/ +void +u3a_lop(c3_w lab_w) +{ + u3_Code = lab_w; +} +#else +/* u3a_lush(): leak push. +*/ +c3_w +u3a_lush(c3_w lab_w) +{ + return 0; +} + +/* u3a_lop(): leak pop. +*/ +void +u3a_lop(c3_w lab_w) +{ +} +#endif + +/* u3a_walk_fore(): preorder traversal, visits ever limb of a noun. +** +** cells are visited *before* their heads and tails +** and can shortcircuit traversal by returning [c3n] +*/ +void +u3a_walk_fore(u3_noun a, + void* ptr_v, + void (*pat_f)(u3_atom, void*), + c3_o (*cel_f)(u3_noun, void*)) +{ + u3_noun* top; + u3a_pile pil_u; + + // initialize stack control; push argument + // + u3a_pile_prep(&pil_u, sizeof(u3_noun)); + top = u3a_push(&pil_u); + *top = a; + + while ( c3n == u3a_pile_done(&pil_u) ) { + // visit an atom, then pop the stack + // + if ( c3y == u3a_is_atom(a) ) { + pat_f(a, ptr_v); + top = u3a_pop(&pil_u); + } + // vist a cell, if c3n, pop the stack + // + else if ( c3n == cel_f(a, ptr_v) ) { + top = u3a_pop(&pil_u); + } + // otherwise, push the tail and continue into the head + // + else { + *top = u3t(a); + top = u3a_push(&pil_u); + *top = u3h(a); + } + + a = *top; + } +} + +/* u3a_string(): `a` as an on-loom c-string. +*/ +c3_c* +u3a_string(u3_atom a) +{ + c3_w met_w = u3r_met(3, a); + c3_c* str_c = u3a_malloc(met_w + 1); + + u3r_bytes(0, met_w, (c3_y*)str_c, a); + str_c[met_w] = 0; + return str_c; +} + +/* u3a_loom_sane(): sanity checks the state of the loom for obvious corruption + */ +void +u3a_loom_sane(void) +{ +} diff --git a/vere/pkg/noun/allocate.h b/vere/pkg/noun/allocate.h new file mode 100644 index 0000000..418db1a --- /dev/null +++ b/vere/pkg/noun/allocate.h @@ -0,0 +1,854 @@ +#ifndef U3_ALLOCATE_H +#define U3_ALLOCATE_H + +#include "error.h" +#include "manage.h" + + /** Constants. + **/ + /* u3a_bits: number of bits in word-addressed pointer. 29 == 2GB. + */ +# define u3a_bits U3_OS_LoomBits /* 30 */ + + /* u3a_vits: number of virtual bits in a noun reference gained via shifting + */ +# define u3a_vits 2 + + /* u3a_walign: references into the loom are guaranteed to be word-aligned to: + */ +# define u3a_walign (1 << u3a_vits) + + /* u3a_balign: u3a_walign in bytes + */ +# define u3a_balign (sizeof(c3_w)*u3a_walign) + + /* u3a_bits_max: max loom bex + */ +# define u3a_bits_max (8 * sizeof(c3_w) + u3a_vits) + + /* u3a_page: number of bits in word-addressed page. 12 == 16K page + */ +# define u3a_page 12ULL + + /* u3a_pages: maximum number of pages in memory. + */ +# define u3a_pages (1ULL << (u3a_bits + u3a_vits - u3a_page) ) + + /* u3a_words: maximum number of words in memory. + */ +# define u3a_words ( 1ULL << (u3a_bits + u3a_vits)) + + /* u3a_bytes: maximum number of bytes in memory. + */ +# define u3a_bytes ((sizeof(c3_w) * u3a_words)) + + /* u3a_cells: number of representable cells. + */ +# define u3a_cells (( u3a_words / u3a_minimum )) + + /* u3a_maximum: maximum loom object size (largest possible atom). + */ +# define u3a_maximum (u3a_words - c3_wiseof(u3a_atom)) + + /* u3a_minimum: minimum loom object size (actual size of a cell). + */ +# define u3a_minimum ((c3_w)c3_wiseof(u3a_cell)) + + /* u3a_min_log: log2(u3a_minimum) + */ +# define u3a_min_log 2 + + /* u3a_crag_no: number of hunk (small allocation) sizes + */ +# define u3a_crag_no (u3a_page - u3a_min_log) + + /* page table constants + */ +# define u3a_free_pg (u3p(u3a_crag))0 +# define u3a_head_pg (u3p(u3a_crag))1 +# define u3a_rest_pg (u3p(u3a_crag))2 + + /** Structures. + **/ + typedef struct { + c3_w use_w; + c3_w buf_w[0]; + } u3a_rate; + /* u3a_atom, u3a_cell: logical atom and cell structures. + */ + typedef struct { + c3_w use_w; + c3_w mug_w; + } u3a_noun; + + typedef struct { + c3_w use_w; + c3_w mug_w; + c3_w len_w; + c3_w buf_w[0]; + } u3a_atom; + + typedef struct { + c3_w use_w; + c3_w mug_w; + u3_noun hed; + u3_noun tel; + } u3a_cell; + +STATIC_ASSERT( (1U << u3a_min_log) == u3a_minimum, + "log2 minimum allocation" ); +STATIC_ASSERT( u3a_vits <= u3a_min_log, + "virtual-bit alignment" ); + + /* u3a_crag: hunk-page metadata + */ + typedef struct _u3a_crag { + u3p(struct _u3a_crag) nex_p; // next + c3_w pag_w; // page index + c3_s log_s; // size log2 + c3_s fre_s; // free chunks + c3_w map_w[1]; // free-chunk bitmap + } u3a_crag; + + /* u3a_dell: page free-list entry + */ + typedef struct _u3a_dell { + u3p(struct _u3a_dell) nex_p; // next + u3p(struct _u3a_dell) pre_p; // prev + c3_w pag_w; // page index + c3_w siz_w; // number of pages + } u3a_dell; + + /* u3a_jets: jet dashboard + */ + typedef struct _u3a_jets { + u3p(u3h_root) hot_p; // hot state (home road only) + u3p(u3h_root) war_p; // warm state + u3p(u3h_root) cod_p; // cold state + u3p(u3h_root) han_p; // hank cache + u3p(u3h_root) bas_p; // battery hashes + } u3a_jets; + + /* u3a_road: contiguous allocation and execution context. + */ + typedef struct _u3a_road { + u3p(struct _u3a_road) par_p; // parent road + u3p(struct _u3a_road) kid_p; // child road list + u3p(struct _u3a_road) nex_p; // sibling road + + u3p(c3_w) cap_p; // top of transient region + u3p(c3_w) hat_p; // top of durable region + u3p(c3_w) mat_p; // bottom of transient region + u3p(c3_w) rut_p; // bottom of durable region + u3p(c3_w) ear_p; // original cap if kid is live + + c3_w off_w; // spin stack offset + c3_w fow_w; // spin stack overflow count + + c3_w fut_w[30]; // futureproof buffer + + struct { // escape buffer + union { + jmp_buf buf; + c3_w buf_w[256]; // futureproofing + }; + } esc; + + struct { // miscellaneous config + c3_w fag_w; // flag bits + } how; // + + // XX re/move + struct { // allocation pools + c3_w fre_w; // number of free words + c3_w max_w; // maximum allocated + } all; + + struct { // heap allocator + u3p(u3a_dell) fre_p; // free list entry + u3p(u3a_dell) erf_p; // free list exit + u3p(u3a_dell) cac_p; // cached pgfree struct + c3_ws dir_ws; // 1 || -1 (multiplicand for local offsets) + c3_ws off_ws; // 0 || -1 (word-offset for hat && rut) + c3_w siz_w; // directory size + c3_w len_w; // directory entries + u3p(u3a_crag*) pag_p; // directory + u3p(u3a_crag) wee_p[u3a_crag_no]; // chunk lists + } hep; + + struct { // cell pool + u3_post cel_p; // array of cells + c3_w hav_w; // length + c3_w bat_w; // batch counter + } cel; + + u3a_jets jed; // jet dashboard + + struct { // bytecode state + u3p(u3h_root) har_p; // formula->post of bytecode + } byc; + + struct { // scry namespace + u3_noun gul; // (list $+(* (unit (unit)))) now + } ski; + + struct { // trace stack + u3_noun tax; // (list ,*) + u3_noun mer; // emergency buffer to release + } bug; + + struct { // profile stack + c3_d nox_d; // nock steps + c3_d cel_d; // cell allocations + u3_noun don; // (list batt) + u3_noun trace; // (list trace) + u3_noun day; // doss, only in u3H (moveme) + } pro; + + struct { // memoization caches + u3p(u3h_root) har_p; // transient + u3p(u3h_root) per_p; // persistent + } cax; + } u3a_road; + typedef u3a_road u3_road; + + /* u3a_flag: flags for how.fag_w. All arena related. + */ + enum u3a_flag { + u3a_flag_sand = 0x1, // bump allocation (XX not impl) + }; + + /* u3a_pile: stack control, abstracted over road direction. + */ + typedef struct _u3a_pile { + c3_ws mov_ws; + c3_ws off_ws; + u3_post top_p; +#ifdef U3_MEMORY_DEBUG + u3a_road* rod_u; +#endif + } u3a_pile; + + /** Macros. Should be better commented. + **/ + /* u3a_is_cat(): yes if noun [som] is direct atom. + */ +# define u3a_is_cat(som) (((som) >> 31) ? c3n : c3y) + + /* u3a_is_dog(): yes if noun [som] is indirect noun. + */ +# define u3a_is_dog(som) (((som) >> 31) ? c3y : c3n) + + /* u3a_is_pug(): yes if noun [som] is indirect atom. + */ +# define u3a_is_pug(som) ((0b10 == ((som) >> 30)) ? c3y : c3n) + + /* u3a_is_pom(): yes if noun [som] is indirect cell. + */ +# define u3a_is_pom(som) ((0b11 == ((som) >> 30)) ? c3y : c3n) + + /* u3a_is_atom(): yes if noun [som] is direct atom or indirect atom. + */ +# define u3a_is_atom(som) c3o(u3a_is_cat(som), \ + u3a_is_pug(som)) +# define u3ud(som) u3a_is_atom(som) + + /* u3a_is_cell: yes if noun [som] is cell. + */ +# define u3a_is_cell(som) u3a_is_pom(som) +# define u3du(som) u3a_is_cell(som) + + /* u3a_h(): get head of cell [som]. Bail if [som] is not cell. + */ +# define u3a_h(som) \ + ( _(u3a_is_cell(som)) \ + ? ( ((u3a_cell *)u3a_to_ptr(som))->hed )\ + : u3m_bail(c3__exit) ) +# define u3h(som) u3a_h(som) + + /* u3a_t(): get tail of cell [som]. Bail if [som] is not cell. + */ +# define u3a_t(som) \ + ( _(u3a_is_cell(som)) \ + ? ( ((u3a_cell *)u3a_to_ptr(som))->tel )\ + : u3m_bail(c3__exit) ) +# define u3t(som) u3a_t(som) + +# define u3to(type, x) ((type *)u3a_into(x)) +# define u3tn(type, x) (x) ? (type*)u3a_into(x) : (void*)NULL + +# define u3of(type, x) (u3a_outa((type*)x)) + + /* u3a_is_north(): yes if road [r] is north road. + */ +# define u3a_is_north(r) __((r)->cap_p > (r)->hat_p) + + /* u3a_is_south(): yes if road [r] is south road. + */ +# define u3a_is_south(r) !u3a_is_north((r)) + + /* u3a_open(): words of contiguous free space in road [r] + */ +# define u3a_open(r) ( (c3y == u3a_is_north(r)) \ + ? (c3_w)((r)->cap_p - (r)->hat_p) \ + : (c3_w)((r)->hat_p - (r)->cap_p) ) + + /* u3a_full(): total words in road [r]; + ** u3a_full(r) == u3a_heap(r) + u3a_temp(r) + u3a_open(r) + */ +# define u3a_full(r) ( (c3y == u3a_is_north(r)) \ + ? (c3_w)((r)->mat_p - (r)->rut_p) \ + : (c3_w)((r)->rut_p - (r)->mat_p) ) + + /* u3a_heap(): words of heap in road [r] + */ +# define u3a_heap(r) ( (c3y == u3a_is_north(r)) \ + ? (c3_w)((r)->hat_p - (r)->rut_p) \ + : (c3_w)((r)->rut_p - (r)->hat_p) ) + + /* u3a_temp(): words of stack in road [r] + */ +# define u3a_temp(r) ( (c3y == u3a_is_north(r)) \ + ? (c3_w)((r)->mat_p - (r)->cap_p) \ + : (c3_w)((r)->cap_p - (r)->mat_p) ) + +# define u3a_north_is_senior(r, dog) \ + __((u3a_to_off(dog) < (r)->rut_p) || \ + (u3a_to_off(dog) >= (r)->mat_p)) + +# define u3a_north_is_junior(r, dog) \ + __((u3a_to_off(dog) >= (r)->cap_p) && \ + (u3a_to_off(dog) < (r)->mat_p)) + +# define u3a_north_is_normal(r, dog) \ + c3a(!(u3a_north_is_senior(r, dog)), \ + !(u3a_north_is_junior(r, dog))) + +# define u3a_south_is_senior(r, dog) \ + __((u3a_to_off(dog) < (r)->mat_p) || \ + (u3a_to_off(dog) >= (r)->rut_p)) + +# define u3a_south_is_junior(r, dog) \ + __((u3a_to_off(dog) < (r)->cap_p) && \ + (u3a_to_off(dog) >= (r)->mat_p)) + +# define u3a_south_is_normal(r, dog) \ + c3a(!(u3a_south_is_senior(r, dog)), \ + !(u3a_south_is_junior(r, dog))) + +# define u3a_is_junior(r, som) \ + ( _(u3a_is_cat(som)) \ + ? c3n \ + : _(u3a_is_north(r)) \ + ? u3a_north_is_junior(r, som) \ + : u3a_south_is_junior(r, som) ) + +# define u3a_is_senior(r, som) \ + ( _(u3a_is_cat(som)) \ + ? c3y \ + : _(u3a_is_north(r)) \ + ? u3a_north_is_senior(r, som) \ + : u3a_south_is_senior(r, som) ) + +# define u3a_is_mutable(r, som) \ + ( _(u3a_is_atom(som)) \ + ? c3n \ + : _(u3a_is_senior(r, som)) \ + ? c3n \ + : _(u3a_is_junior(r, som)) \ + ? c3n \ + : (((u3a_rate*)u3a_to_ptr(som))->use_w == 1) \ + ? c3y : c3n ) + +/* like _box_vaal but for rods. Again, probably want to prefix validation + functions at the very least. Maybe they can be defined in their own header. + + ps. while arguably cooler to have this compile to + + do {(void(0));(void(0));} while(0) + + It may be nicer to just wrap an inline function in #ifdef C3DBG guards. You + could even return the then validated road like + + u3a_road f() { + u3a_road rod_u; + ... + return _rod_vaal(rod_u); + } +*/ +# define _rod_vaal(rod_u) \ + do { \ + c3_dessert(((uintptr_t)((u3a_road*)(rod_u))->hat_p \ + & u3a_walign-1) == 0); \ + } while(0) + + +typedef struct _u3a_mark { + c3_w wee_w[u3a_crag_no]; + c3_w* bit_w; + // XX factor out? + c3_w siz_w; + c3_w len_w; + c3_w* buf_w; +} u3a_mark; + +typedef struct _u3a_gack { + c3_w *bit_w; // mark bits + c3_w *pap_w; // global page bitmap + c3_w *pum_w; // global cumulative sums + // XX factor out? + c3_w siz_w; + c3_w len_w; + c3_w *buf_w; +} u3a_gack; + +typedef struct { + c3_s log_s; // size log2 + c3_s len_s; // 1U << log_s + c3_s tot_s; // total chunks + c3_s map_s; // bitmap size + c3_s siz_s; // wiseof(crag) - 1 + map_s + c3_s hun_s; // chunks reserved + c3_s ful_s; // tot_s - hun_s +} u3a_hunk_dose; + + extern u3a_gack u3a_Gack; + + extern u3a_mark u3a_Mark; + + extern u3a_hunk_dose u3a_Hunk[u3a_crag_no]; + + /** Globals. + **/ + /// Current road (thread-local). + extern u3_road* u3a_Road; +# define u3R u3a_Road + + /* u3_Code: memory code. + */ +#ifdef U3_MEMORY_DEBUG + extern c3_w u3_Code; +#endif + +# define u3_Loom ((c3_w *)(void *)U3_OS_LoomBase) + + /* u3a_into(): convert loom offset [x] into generic pointer. + */ +# define u3a_into(x) ((void *)(u3_Loom + (x))) + + /* u3a_outa(): convert pointer [p] into word offset into loom. + */ +# define u3a_outa(p) ((c3_w *)(void *)(p) - u3_Loom) + + /* u3a_to_off(): mask off bits 30 and 31 from noun [som]. + */ +# define u3a_to_off(som) (((som) & 0x3fffffff) << u3a_vits) + + /* u3a_to_ptr(): convert noun [som] into generic pointer into loom. + */ +# define u3a_to_ptr(som) (u3a_into(u3a_to_off(som))) + + /* u3a_to_wtr(): convert noun [som] into word pointer into loom. + */ +# define u3a_to_wtr(som) ((c3_w *)u3a_to_ptr(som)) + + /** Inline functions. + **/ + /* u3a_to_pug(): set bit 31 of [off]. + */ + inline c3_w u3a_to_pug(c3_w off) { + c3_dessert((off & u3a_walign-1) == 0); + return (off >> u3a_vits) | 0x80000000; + } + + /* u3a_to_pom(): set bits 30 and 31 of [off]. + */ + inline c3_w u3a_to_pom(c3_w off) { + c3_dessert((off & u3a_walign-1) == 0); + return (off >> u3a_vits) | 0xc0000000; + } + + /** road stack. + **/ + /* u3a_drop(): drop a road stack frame per [pil_u]. + */ + inline void + u3a_drop(const u3a_pile* pil_u) + { + u3R->cap_p -= pil_u->mov_ws; + } + + /* u3a_peek(): examine the top of the road stack. + */ + inline void* + u3a_peek(const u3a_pile* pil_u) + { + return u3to(void, (u3R->cap_p + pil_u->off_ws)); + } + + /* u3a_pop(): drop a road stack frame, peek at the new top. + */ + inline void* + u3a_pop(const u3a_pile* pil_u) + { + u3a_drop(pil_u); + return u3a_peek(pil_u); + } + + /* u3a_push(): push a frame onto the road stack, per [pil_u]. + */ + inline void* + u3a_push(const u3a_pile* pil_u) + { + u3R->cap_p += pil_u->mov_ws; + +#ifndef U3_GUARD_PAGE + // !off means we're on a north road + // + if ( !pil_u->off_ws ) { + if( !(u3R->cap_p > u3R->hat_p) ) { + u3m_bail(c3__meme); + } +# ifdef U3_MEMORY_DEBUG + u3_assert( pil_u->top_p >= u3R->cap_p ); +# endif + } + else { + if( !(u3R->cap_p < u3R->hat_p) ) { + u3m_bail(c3__meme); + } +# ifdef U3_MEMORY_DEBUG + u3_assert( pil_u->top_p <= u3R->cap_p ); +# endif + } +#endif /* ifndef U3_GUARD_PAGE */ + +#ifdef U3_MEMORY_DEBUG + u3_assert( pil_u->rod_u == u3R ); +#endif + + return u3a_peek(pil_u); + } + + /* u3a_pile_done(): assert valid upon completion. + */ + inline c3_o + u3a_pile_done(const u3a_pile* pil_u) + { + return (pil_u->top_p == u3R->cap_p) ? c3y : c3n; + } + + /** Functions. + **/ + +void +u3a_init_once(void); +void +u3a_init_heap(void); +void +u3a_drop_heap(u3_post cap_p, u3_post ear_p); +void +u3a_mark_init(void); +void* +u3a_mark_alloc(c3_w len_w); +void +u3a_mark_done(void); + +void +u3a_pack_init(void); +void* +u3a_pack_alloc(c3_w len_w); +void +u3a_pack_done(void); + +void* +u3a_into_fn(u3_post); +u3_post +u3a_outa_fn(void*); +u3_post +u3a_to_off_fn(u3_noun); +u3a_noun* +u3a_to_ptr_fn(u3_noun); +u3_noun +u3a_head(u3_noun); +u3_noun +u3a_tail(u3_noun); +void +u3a_post_info(u3_post); + + /** Allocation. + **/ + /* Word-aligned allocation. + */ + /* u3a_walloc(): allocate storage measured in words. + */ + void* + u3a_walloc(c3_w len_w); + + /* u3a_celloc(): allocate a cell. Faster, sometimes. + */ + c3_w* + u3a_celloc(void); + + /* u3a_wfree(): free storage. + */ + void + u3a_wfree(void* lag_v); + + /* u3a_wtrim(): trim storage. + */ + void + u3a_wtrim(void* tox_v, c3_w old_w, c3_w len_w); + + /* u3a_wealloc(): word realloc. + */ + void* + u3a_wealloc(void* lag_v, c3_w len_w); + + /* u3a_pile_prep(): initialize stack control. + */ + void + u3a_pile_prep(u3a_pile* pil_u, c3_w len_w); + + /* C-style aligned allocation - *not* compatible with above. + */ + /* u3a_malloc(): aligned storage measured in bytes. + */ + void* + u3a_malloc(size_t len_i); + + /* u3a_calloc(): aligned storage measured in bytes. + */ + void* + u3a_calloc(size_t num_i, size_t len_i); + + /* u3a_realloc(): aligned realloc in bytes. + */ + void* + u3a_realloc(void* lag_v, size_t len_i); + + /* u3a_free(): free for aligned malloc. + */ + void + u3a_free(void* tox_v); + + /* Reference and arena control. + */ + /* u3a_gain(): gain a reference count in normal space. + */ + u3_weak + u3a_gain(u3_weak som); +# define u3k(som) u3a_gain(som) + + /* u3a_take(): gain, copying juniors. + */ + u3_noun + u3a_take(u3_noun som); + + /* u3a_left(): true of junior if preserved. + */ + c3_o + u3a_left(u3_noun som); + + /* u3a_lose(): lose a reference. + */ + void + u3a_lose(u3_weak som); +# define u3z(som) u3a_lose(som) + + /* u3a_wash(): wash all lazy mugs in subtree. RETAIN. + */ + void + u3a_wash(u3_noun som); + + /* u3a_use(): reference count. + */ + c3_w + u3a_use(u3_noun som); + + /* u3a_wed(): unify noun references. + */ + void + u3a_wed(u3_noun *restrict a, u3_noun *restrict b); + + /* u3a_luse(): check refcount sanity. + */ + void + u3a_luse(u3_noun som); + + /* u3a_mark_ptr(): mark a pointer for gc. Produce size. + */ + c3_w + u3a_mark_ptr(void* ptr_v); + + /* u3a_mark_mptr(): mark a u3_malloc-allocated ptr for gc. + */ + c3_w + u3a_mark_mptr(void* ptr_v); + + /* u3a_mark_noun(): mark a noun for gc. Produce size. + */ + c3_w + u3a_mark_noun(u3_noun som); + + /* u3a_mark_road(): mark ad-hoc persistent road structures. + */ + u3m_quac* + u3a_mark_road(); + + /* u3a_reclaim(): clear ad-hoc persistent caches to reclaim memory. + */ + void + u3a_reclaim(void); + + /* u3a_relocate_post(): replace post with relocation pointer (unchecked). + */ + void + u3a_relocate_post(u3_post *som_p); + + /* u3a_mark_relocate_post(): replace post with relocation pointer (checked). + */ + u3_post + u3a_mark_relocate_post(u3_post som_p, c3_t *fir_t); + + /* u3a_relocate_noun(): replace noun with relocation reference, recursively. + */ + void + u3a_relocate_noun(u3_noun *som); + + /* u3a_rewrite_compact(): rewrite pointers in ad-hoc persistent road structures. + */ + void + u3a_rewrite_compact(void); + + /* u3a_count_noun(): count size of noun. + */ + c3_w + u3a_count_noun(u3_noun som); + + /* u3a_discount_noun(): clean up after counting a noun. + */ + c3_w + u3a_discount_noun(u3_noun som); + + /* u3a_count_ptr(): count a pointer for gc. Produce size. */ + c3_w + u3a_count_ptr(void* ptr_v); + + /* u3a_discount_ptr(): discount a pointer for gc. Produce size. */ + c3_w + u3a_discount_ptr(void* ptr_v); + + /* u3a_idle(): measure free-lists in [rod_u] + */ + c3_w + u3a_idle(u3a_road* rod_u); + + /* u3a_ream(): ream free-lists. + */ + void + u3a_ream(void); + +void +u3a_wait(void); + +void +u3a_dash(void); + + /* u3a_sweep(): sweep a fully marked road. + */ + c3_w + u3a_sweep(void); + + /* u3a_pack_seek(): sweep the heap, modifying boxes to record new addresses. + */ + void + u3a_pack_seek(u3a_road* rod_u); + + /* u3a_pack_move(): sweep the heap, moving boxes to new addresses. + */ + void + u3a_pack_move(u3a_road* rod_u); + + /* u3a_sane(): check allocator sanity. + */ + void + u3a_sane(void); + + /* u3a_lush(): leak push. + */ + c3_w + u3a_lush(c3_w lab_w); + + /* u3a_lop(): leak pop. + */ + void + u3a_lop(c3_w lab_w); + + /* u3a_print_time: print microsecond time. + */ + void + u3a_print_time(c3_c* str_c, c3_c* cap_c, c3_d mic_d); + + /* u3a_print_quac: print a quac memory report. + */ + void + u3a_print_quac(FILE* fil_u, c3_w den_w, u3m_quac* mas_u); + + /* u3a_print_memory(): print memory amount to file descriptor. + */ + void + u3a_print_memory(FILE* fil_u, c3_c* cap_c, c3_w wor_w); + + /* u3a_print_memory(): print memory amount to string. + */ + void + u3a_print_memory_str(c3_c* str_c, c3_c* cap_c, c3_w wor_w); + + /* u3a_prof(): mark/measure/print memory profile. RETAIN. + */ + u3m_quac* + u3a_prof(FILE* fil_u, u3_noun mas); + + /* u3a_maid(): maybe print memory. + */ + c3_w + u3a_maid(FILE* fil_u, c3_c* cap_c, c3_w wor_w); + + /* u3a_quac_free(): free quac memory. + */ + void + u3a_quac_free(u3m_quac* qua_u); + + /* u3a_uncap_print_memory(): un-captioned print memory amount. + */ + void + u3a_uncap_print_memory(FILE* fil_u, c3_w byt_w); + + /* u3a_deadbeef(): write 0xdeadbeef from hat to cap. + */ + void + u3a_deadbeef(void); + + /* u3a_walk_fore(): preorder traversal, visits ever limb of a noun. + ** + ** cells are visited *before* their heads and tails + ** and can shortcircuit traversal by returning [c3n] + */ + void + u3a_walk_fore(u3_noun a, + void* ptr_v, + void (*pat_f)(u3_atom, void*), + c3_o (*cel_f)(u3_noun, void*)); + + /* u3a_string(): `a` as an on-loom c-string. + */ + c3_c* + u3a_string(u3_atom a); + + /* u3a_loom_sane(): sanity checks the state of the loom for obvious corruption + */ + void + u3a_loom_sane(void); + +#endif /* ifndef U3_ALLOCATE_H */ diff --git a/vere/pkg/noun/build.zig b/vere/pkg/noun/build.zig new file mode 100644 index 0000000..2a3550f --- /dev/null +++ b/vere/pkg/noun/build.zig @@ -0,0 +1,439 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const copts: []const []const u8 = + b.option([]const []const u8, "copt", "") orelse &.{}; + + // Parse Tracy-related compiler options from copts to determine if Tracy is enabled + var tracy_enabled = false; + var tracy_callstack = false; + var tracy_no_exit = false; + + for (copts) |opt| { + if (std.mem.eql(u8, opt, "-DTRACY_ENABLE")) { + tracy_enabled = true; + } else if (std.mem.eql(u8, opt, "-DTRACY_CALLSTACK")) { + tracy_callstack = true; + } else if (std.mem.eql(u8, opt, "-DTRACY_NO_EXIT")) { + tracy_no_exit = true; + } + } + + const pkg_noun = b.addStaticLibrary(.{ + .name = "noun", + .target = target, + .optimize = optimize, + }); + + if (target.result.os.tag.isDarwin() and !target.query.isNative()) { + const macos_sdk = b.lazyDependency("macos_sdk", .{ + .target = target, + .optimize = optimize, + }); + if (macos_sdk != null) { + pkg_noun.addSystemIncludePath(macos_sdk.?.path("usr/include")); + pkg_noun.addLibraryPath(macos_sdk.?.path("usr/lib")); + pkg_noun.addFrameworkPath(macos_sdk.?.path("System/Library/Frameworks")); + } + } + + const pkg_c3 = b.dependency("pkg_c3", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_ent = b.dependency("pkg_ent", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_ur = b.dependency("pkg_ur", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const backtrace = b.dependency("backtrace", .{ + .target = target, + .optimize = optimize, + }); + + const gmp = b.dependency("gmp", .{ + .target = target, + .optimize = optimize, + }); + + const murmur3 = b.dependency("murmur3", .{ + .target = target, + .optimize = optimize, + }); + + const openssl = b.dependency("openssl", .{ + .target = target, + .optimize = optimize, + }); + + const pdjson = b.dependency("pdjson", .{ + .target = target, + .optimize = optimize, + }); + + const sigsegv = b.dependency("sigsegv", .{ + .target = target, + .optimize = optimize, + }); + + const softblas = b.dependency("softblas", .{ + .target = target, + .optimize = optimize, + }); + + const softfloat = b.dependency("softfloat", .{ + .target = target, + .optimize = optimize, + }); + + const unwind = b.dependency("unwind", .{ + .target = target, + .optimize = optimize, + }); + + const urcrypt = b.dependency("urcrypt", .{ + .target = target, + .optimize = optimize, + }); + + const whereami = b.dependency("whereami", .{ + .target = target, + .optimize = optimize, + }); + + const zlib = b.dependency("zlib", .{ + .target = target, + .optimize = optimize, + }); + + const wasm3 = b.dependency("wasm3", .{ + .target = target, + .optimize = optimize, + }); + + const tracy = if (tracy_enabled) b.dependency("tracy", .{ + .target = target, + .optimize = optimize, + }) else null; + + pkg_noun.linkLibC(); + + pkg_noun.linkLibrary(pkg_c3.artifact("c3")); + pkg_noun.linkLibrary(pkg_ent.artifact("ent")); + pkg_noun.linkLibrary(pkg_ur.artifact("ur")); + + pkg_noun.linkLibrary(backtrace.artifact("backtrace")); + pkg_noun.linkLibrary(gmp.artifact("gmp")); + + + + pkg_noun.linkLibrary(murmur3.artifact("murmur3")); + pkg_noun.linkLibrary(openssl.artifact("ssl")); + pkg_noun.linkLibrary(pdjson.artifact("pdjson")); + if (t.os.tag != .windows) { + pkg_noun.linkLibrary(sigsegv.artifact("sigsegv")); + } + pkg_noun.linkLibrary(softblas.artifact("softblas")); + pkg_noun.linkLibrary(softfloat.artifact("softfloat")); + if (t.os.tag == .linux) + pkg_noun.linkLibrary(unwind.artifact("unwind")); + pkg_noun.linkLibrary(urcrypt.artifact("urcrypt")); + pkg_noun.linkLibrary(whereami.artifact("whereami")); + pkg_noun.linkLibrary(zlib.artifact("z")); + pkg_noun.linkLibrary(wasm3.artifact("wasm3")); + + if (tracy_enabled) { + pkg_noun.linkLibrary(tracy.?.artifact("tracy")); + pkg_noun.addIncludePath(tracy.?.path("")); + } + + pkg_noun.addIncludePath(b.path("")); + if (t.os.tag.isDarwin()) + pkg_noun.addIncludePath(b.path("platform/darwin")); + if (t.os.tag == .linux) + pkg_noun.addIncludePath(b.path("platform/linux")); + if (t.os.tag == .windows) + pkg_noun.addIncludePath(b.path("platform/windows")); + + var flags = std.ArrayList([]const u8).init(b.allocator); + defer flags.deinit(); + try flags.appendSlice(&.{ + // "-pedantic", + "-std=gnu23", + }); + try flags.appendSlice(copts); + + pkg_noun.addCSourceFiles(.{ + .root = b.path(""), + .files = &c_source_files, + .flags = flags.items, + }); + + if (t.os.tag == .windows) { + pkg_noun.addCSourceFiles(.{ + .root = b.path("platform/windows"), + .files = &.{"veh_handler.c", "rsignal.c"}, + .flags = flags.items, + }); + } + + for (install_headers) |h| pkg_noun.installHeader(b.path(h), h); + + pkg_noun.installHeader(b.path(switch (t.os.tag) { + .macos => "platform/darwin/rsignal.h", + .linux => "platform/linux/rsignal.h", + .windows => "platform/windows/rsignal.h", + else => "", + }), "platform/rsignal.h"); + + b.installArtifact(pkg_noun); +} + +const c_source_files = [_][]const u8{ + "allocate.c", + "events.c", + "hashtable.c", + "imprison.c", + "jets.c", + "jets/a/add.c", + "jets/a/dec.c", + "jets/a/div.c", + "jets/a/gte.c", + "jets/a/gth.c", + "jets/a/lte.c", + "jets/a/lth.c", + "jets/a/max.c", + "jets/a/min.c", + "jets/a/mod.c", + "jets/a/mul.c", + "jets/a/sub.c", + "jets/b/bind.c", + "jets/b/clap.c", + "jets/b/find.c", + "jets/b/flop.c", + "jets/b/lent.c", + "jets/b/levy.c", + "jets/b/lien.c", + "jets/b/mate.c", + "jets/b/murn.c", + "jets/b/need.c", + "jets/b/reap.c", + "jets/b/reel.c", + "jets/b/roll.c", + "jets/b/scag.c", + "jets/b/skid.c", + "jets/b/skim.c", + "jets/b/skip.c", + "jets/b/slag.c", + "jets/b/snag.c", + "jets/b/sort.c", + "jets/b/turn.c", + "jets/b/weld.c", + "jets/b/zing.c", + "jets/c/aor.c", + "jets/c/bex.c", + "jets/c/c0n.c", + "jets/c/can.c", + "jets/c/cap.c", + "jets/c/cat.c", + "jets/c/clz.c", + "jets/c/ctz.c", + "jets/c/cut.c", + "jets/c/dis.c", + "jets/c/dor.c", + "jets/c/dvr.c", + "jets/c/end.c", + "jets/c/gor.c", + "jets/c/ham.c", + "jets/c/hew.c", + "jets/c/lsh.c", + "jets/c/mas.c", + "jets/c/met.c", + "jets/c/mix.c", + "jets/c/mor.c", + "jets/c/mug.c", + "jets/c/muk.c", + "jets/c/peg.c", + "jets/c/po.c", + "jets/c/pow.c", + "jets/c/rap.c", + "jets/c/rep.c", + "jets/c/rev.c", + "jets/c/rig.c", + "jets/c/rip.c", + "jets/c/rsh.c", + "jets/c/sew.c", + "jets/c/sqt.c", + "jets/c/swp.c", + "jets/c/xeb.c", + "jets/d/by_all.c", + "jets/d/by_any.c", + "jets/d/by_apt.c", + "jets/d/by_bif.c", + "jets/d/by_del.c", + "jets/d/by_dif.c", + "jets/d/by_gas.c", + "jets/d/by_get.c", + "jets/d/by_has.c", + "jets/d/by_int.c", + "jets/d/by_jab.c", + "jets/d/by_key.c", + "jets/d/by_put.c", + "jets/d/by_run.c", + "jets/d/by_uni.c", + "jets/d/by_urn.c", + "jets/d/in_apt.c", + "jets/d/in_bif.c", + "jets/d/in_del.c", + "jets/d/in_dif.c", + "jets/d/in_gas.c", + "jets/d/in_has.c", + "jets/d/in_int.c", + "jets/d/in_put.c", + "jets/d/in_rep.c", + "jets/d/in_run.c", + "jets/d/in_tap.c", + "jets/d/in_uni.c", + "jets/d/in_wyt.c", + "jets/e/adler.c", + "jets/e/aes_cbc.c", + "jets/e/aes_ecb.c", + "jets/e/aes_siv.c", + "jets/e/argon2.c", + "jets/e/base.c", + "jets/e/blake.c", + "jets/e/bytestream.c", + "jets/e/chacha.c", + "jets/e/crc.c", + "jets/e/cue.c", + "jets/e/ed_add_double_scalarmult.c", + "jets/e/ed_add_scalarmult_scalarmult_base.c", + "jets/e/ed_point_add.c", + "jets/e/ed_point_neg.c", + "jets/e/ed_scad.c", + "jets/e/ed_recs.c", + "jets/e/ed_smac.c", + "jets/e/ed_puck.c", + "jets/e/ed_luck.c", + "jets/e/ed_scalarmult.c", + "jets/e/ed_scalarmult_base.c", + "jets/e/ed_shar.c", + "jets/e/ed_sign.c", + "jets/e/ed_veri.c", + "jets/e/fein_ob.c", + "jets/e/fl.c", + "jets/e/fynd_ob.c", + "jets/e/hmac.c", + "jets/e/jam.c", + "jets/e/json_de.c", + "jets/e/json_en.c", + "jets/e/keccak.c", + "jets/e/leer.c", + "jets/e/loss.c", + "jets/e/lune.c", + "jets/e/mat.c", + "jets/e/mice.c", + "jets/e/mink.c", + "jets/e/mole.c", + "jets/e/mule.c", + "jets/e/parse.c", + "jets/e/rd.c", + "jets/e/rh.c", + "jets/e/ripe.c", + "jets/e/rq.c", + "jets/e/rs.c", + "jets/e/rub.c", + "jets/e/scot.c", + "jets/e/scow.c", + "jets/e/scr.c", + "jets/e/secp.c", + "jets/e/sha1.c", + "jets/e/shax.c", + "jets/e/slaw.c", + "jets/e/tape.c", + "jets/e/trip.c", + "jets/e/urwasm.c", + "jets/e/zlib.c", + "jets/f/cell.c", + "jets/f/comb.c", + "jets/f/cons.c", + "jets/f/core.c", + "jets/f/face.c", + "jets/f/fine.c", + "jets/f/fitz.c", + "jets/f/flan.c", + "jets/f/flip.c", + "jets/f/flor.c", + "jets/f/fork.c", + "jets/f/help.c", + "jets/f/hint.c", + "jets/f/look.c", + "jets/f/loot.c", + "jets/f/ut_crop.c", + "jets/f/ut_fish.c", + "jets/f/ut_fuse.c", + "jets/f/ut_redo.c", + "jets/f/ut_mint.c", + "jets/f/ut_mull.c", + "jets/f/ut_nest.c", + "jets/f/ut_rest.c", + "jets/g/plot.c", + "jets/i/lagoon.c", + "jets/tree.c", + "jets/137/tree.c", + "jets/136/tree.c", + "log.c", + "manage.c", + "palloc.c", + "nock.c", + "options.c", + "retrieve.c", + "ship.c", + "serial.c", + "trace.c", + "urth.c", + "vortex.c", + "xtract.c", + "zave.c", +}; + +const install_headers = [_][]const u8{ + "allocate.h", + "error.h", + "events.h", + "hashtable.h", + "imprison.h", + "jets.h", + "jets/k.h", + "jets/q.h", + "jets/w.h", + "log.h", + "manage.h", + "nock.h", + "noun.h", + "options.h", + "retrieve.h", + "serial.h", + "ship.h", + "trace.h", + "types.h", + "urth.h", + "version.h", + "vortex.h", + "xtract.h", + "zave.h", + "verstable.h", +}; diff --git a/vere/pkg/noun/build.zig.zon b/vere/pkg/noun/build.zig.zon new file mode 100644 index 0000000..a5c72a9 --- /dev/null +++ b/vere/pkg/noun/build.zig.zon @@ -0,0 +1,67 @@ +.{ + .name = .noun, + .fingerprint = 0x417412dd00c7ed8c, + .version = "0.0.1", + .dependencies = .{ + .macos_sdk = .{ + .url = "https://github.com/joseluisq/macosx-sdks/releases/download/14.5/MacOSX14.5.sdk.tar.xz", + .hash = "N-V-__8AAKtK4FMzqcFsY_ZrpMg9bGH0h7BqZDXtVyAerMtM", + .lazy = true, + }, + .pkg_c3 = .{ + .path = "../c3", + }, + .pkg_ent = .{ + .path = "../ent", + }, + .pkg_ur = .{ + .path = "../ur", + }, + .backtrace = .{ + .path = "../../ext/backtrace", + }, + .gmp = .{ + .path = "../../ext/gmp", + }, + .murmur3 = .{ + .path = "../../ext/murmur3", + }, + .openssl = .{ + .path = "../../ext/openssl", + }, + .pdjson = .{ + .path = "../../ext/pdjson", + }, + .sigsegv = .{ + .path = "../../ext/sigsegv", + }, + .softblas = .{ + .path = "../../ext/softblas", + }, + .softfloat = .{ + .path = "../../ext/softfloat", + }, + .unwind = .{ + .path = "../../ext/unwind", + }, + .urcrypt = .{ + .path = "../../ext/urcrypt", + }, + .whereami = .{ + .path = "../../ext/whereami", + }, + .zlib = .{ + .url = "https://github.com/allyourcodebase/zlib/archive/61e7df7e996ec5a5f13a653db3c419adb340d6ef.tar.gz", + .hash = "zlib-1.3.1-ZZQ7lbYMAAB1hTSOKSXAKAgHsfDcyWNH_37ojw5WSpgR", + }, + .wasm3 = .{ + .path = "../../ext/wasm3", + }, + .tracy = .{ + .path = "../../ext/tracy", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/pkg/noun/equality_tests.c b/vere/pkg/noun/equality_tests.c new file mode 100644 index 0000000..83a5026 --- /dev/null +++ b/vere/pkg/noun/equality_tests.c @@ -0,0 +1,164 @@ +/// @file + +#include "noun.h" + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + u3m_boot_lite(1 << 24); +} + +static c3_i +_test_unify_home(void) +{ + c3_i ret_i = 1; + + u3_noun a = u3nt(0, 0, 0); + u3_noun b = u3nt(0, 0, 0); + c3_w kep_w; + + u3_assert( u3t(a) < u3t(b) ); + kep_w = u3t(a); + + (void)u3r_sing(a, b); + + if ( u3t(a) != u3t(b) ) { + fprintf(stderr, "test: unify home: failed\r\n"); + ret_i = 0; + } + else if ( kep_w != u3t(b) ) { + fprintf(stderr, "test: unify home: deeper failed\r\n"); + ret_i = 0; + } + + u3z(a); u3z(b); + + return ret_i; +} + +static c3_i +_test_unify_inner(void) +{ + c3_i ret_i = 1; + c3_w kep_w; + u3_noun a, b; + + a = u3nt(0, 0, 0); + kep_w = u3t(a); + + u3m_hate(0); + + b = u3nt(0, 0, 0); + + (void)u3r_sing(a, b); + + if ( u3t(a) != u3t(b) ) { + fprintf(stderr, "test: unify inner 1: failed\r\n"); + ret_i = 0; + } + else if ( kep_w != u3t(b) ) { + fprintf(stderr, "test: unify inner 1: deeper failed\r\n"); + ret_i = 0; + } + + b = u3m_love(0); + + u3z(a); u3z(b); + + // -------- + + b = u3nt(0, 0, 0); + kep_w = u3t(b); + + u3m_hate(0); + + a = u3nt(0, 0, 0); + + u3m_hate(0); + + (void)u3r_sing(a, b); + + if ( u3t(a) != u3t(b) ) { + fprintf(stderr, "test: unify inner 2: failed\r\n"); + ret_i = 0; + } + else if ( kep_w != u3t(a) ) { + fprintf(stderr, "test: unify inner 2: deeper failed\r\n"); + ret_i = 0; + } + + a = u3m_love(u3m_love(0)); + + u3z(a); u3z(b); + + return ret_i; +} + +static c3_i +_test_unify_inner_home(void) +{ + c3_i ret_i = 1; + + u3_noun a = u3nt(0, 0, 0); + u3_noun b = u3nt(0, 0, 0); + + u3m_hate(0); + + (void)u3r_sing(a, b); + + if ( u3t(a) == u3t(b) ) { + fprintf(stderr, "test: unify inner-home: succeeded?\r\n"); + ret_i = 0; + } + + u3m_love(0); + + u3z(a); u3z(b); + + return ret_i; +} + +static c3_i +_test_equality(void) +{ + c3_i ret_i = 1; + + if ( !_test_unify_home() ) { + fprintf(stderr, "test: equality: unify home: failed\r\n"); + ret_i = 0; + } + + if ( !_test_unify_inner() ) { + fprintf(stderr, "test: equality: unify inner: failed\r\n"); + ret_i = 0; + } + + if ( !_test_unify_inner_home() ) { + fprintf(stderr, "test: equality: unify inner-home: failed\r\n"); + ret_i = 0; + } + + return ret_i; +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + if ( !_test_equality() ) { + fprintf(stderr, "test equality: failed\r\n"); + exit(1); + } + + // GC + // + u3m_grab(u3_none); + + fprintf(stderr, "test equality: ok\r\n"); + return 0; +} diff --git a/vere/pkg/noun/error.h b/vere/pkg/noun/error.h new file mode 100644 index 0000000..57932bf --- /dev/null +++ b/vere/pkg/noun/error.h @@ -0,0 +1,38 @@ +/// @file + +#ifndef U3_ERROR_H +#define U3_ERROR_H + +#include "manage.h" + +/* Assert. Good to capture. + + TODO: determine which u3_assert calls can rather call c3_dessert, i.e. in + public releases, which calls to u3_assert should abort and which should + no-op? If the latter, is the assert useful inter-development to validate + conditions we might accidentally break or not useful at all? +*/ + +#if defined(ASAN_ENABLED) && defined(__clang__) +# define u3_assert(x) \ + do { \ + if (!(x)) { \ + u3m_bail(c3__oops); \ + abort(); \ + } \ + } while(0) +#else +# define u3_assert(x) \ + do { \ + if (!(x)) { \ + fflush(stderr); \ + fprintf(stderr, "\rAssertion '%s' " \ + "failed in %s:%d\r\n", \ + #x, __FILE__, __LINE__); \ + u3m_bail(c3__oops); \ + abort(); \ + } \ + } while(0) +#endif /* if defined(ASAN_ENABLED) && defined(__clang__) */ + +#endif /* ifndef U3_ERROR_H */ diff --git a/vere/pkg/noun/events.c b/vere/pkg/noun/events.c new file mode 100644 index 0000000..956b87d --- /dev/null +++ b/vere/pkg/noun/events.c @@ -0,0 +1,1583 @@ +//! @file events.c +//! +//! incremental, orthogonal, paginated loom snapshots +//! +//! ### components +//! +//! - page: 16KB chunk of the loom. +//! - image (u3e_image, image.bin): low contiguous loom pages, +//! (in practice, the home road heap). indexed from low to high: +//! in-order on disk. in a file-backed mapping by default. +//! - patch memory (memory.bin): new or changed pages since the last snapshot +//! - patch control (u3e_control control.bin): patch metadata, watermarks, +//! and indices/checksums for pages in patch memory. +//! +//! ### initialization (u3e_live()) +//! +//! - with the loom already mapped, all pages are marked dirty in a bitmap. +//! - if snapshot is missing or partial, empty segments are created. +//! - if a patch is present, it's applied (crash recovery). +//! - snapshot segments are mapped or copied onto the loom; +//! all included pages are marked clean and protected (read-only). +//! +//! #### page faults (u3e_fault()) +//! +//! - stores into protected pages generate faults (currently SIGSEGV, +//! handled outside this module). +//! - faults are handled by dirtying the page and switching protections to +//! read/write. +//! - a guard page is initially placed in the approximate middle of the free +//! space between the heap and stack at the time of the first page fault. +//! when a fault is detected in the guard page, the guard page is recentered +//! in the free space of the current road. if the guard page cannot be +//! recentered, then memory exhaustion has occurred. +//! +//! ### updates (u3e_save()) +//! +//! - all updates to a snapshot are made through a patch. +//! - high/low watermarks are established, +//! and dirty pages below the low mark are added to the patch. +//! - modifications have been caught by the fault handler. +//! - newly-used pages are automatically included (preemptively dirtied). +//! - unused, innermost pages are reclaimed (segments are truncated to the +//! high/low watermarks; the last page in each is always adjacent to the +//! contiguous free space). +//! - patch pages are written to memory.bin, metadata to control.bin. +//! - the patch is applied to the snapshot segments, in-place. +//! - segments are fsync'd; patch files are deleted. +//! - memory protections (and file-backed mappings) are re-established. +//! +//! ### invariants +//! +//! definitions: +//! - a clean page is PROT_READ and 0 in the bitmap +//! - a dirty page is (PROT_READ|PROT_WRITE) and 1 in the bitmap +//! - the guard page is PROT_NONE and 1 in the bitmap +//! +//! assumptions: +//! - all memory access patterns are outside-in, a page at a time +//! - ad-hoc exceptions are supported by calling u3e_ward() +//! +//! - there is a single guard page, between the segments +//! - dirty pages only become clean by being: +//! - loaded from a snapshot during initialization +//! - present in a snapshot after save +//! - clean pages only become dirty by being: +//! - modified (and caught by the fault handler) +//! - orphaned due to segment truncation (explicitly dirtied) +//! - at points of quiescence (initialization, after save) +//! - all pages of the image are clean +//! - all other pages are dirty +//! +//! ### limitations +//! +//! - loom page size is fixed (16 KB), and must be a multiple of the +//! system page size. +//! - update atomicity is crucial: +//! - patch application must either completely succeed or +//! leave on-disk segments (memory image) intact. +//! - unapplied patches can be discarded (triggering event replay), +//! but once patch application begins it must succeed. +//! - may require integration into the overall signal-handling regime. +//! - any errors are handled with assertions; error messages are poor; +//! failed/partial writes are not retried. +//! +//! ### enhancements +//! +//! - use platform specific page fault mechanism (mach rpc, userfaultfd, &c). +//! - parallelism (conflicts with demand paging) +//! + +#include "events.h" + +#include +#include +#include +#include + +#include "log.h" +#include "murmur3.h" +#include "options.h" + +/* _ce_len: byte length of pages +** _ce_len_words: word length of pages +** _ce_page: byte length of a single page +** _ce_ptr: void pointer to a page +*/ +#define _ce_len(i) ((size_t)(i) << (u3a_page + 2)) +#define _ce_len_words(i) ((size_t)(i) << u3a_page) +#define _ce_page _ce_len(1) +#define _ce_ptr(i) ((void *)((c3_c*)u3_Loom + _ce_len(i))) + +/// Snapshotting system. +u3e_pool u3e_Pool; + +static c3_w +_ce_muk_buf(c3_w len_w, void* ptr_v) +{ + c3_w haz_w; + MurmurHash3_x86_32(ptr_v, len_w, 0xcafebabeU, &haz_w); + return haz_w; +} + +static c3_w +_ce_muk_page(void* ptr_v) +{ + return _ce_muk_buf(_ce_page, ptr_v); +} + +/* _ce_flaw_mmap(): remap non-guard page after fault. +*/ +static inline c3_i +_ce_flaw_mmap(c3_w pag_w) +{ + // NB: must be static, since the stack is grown via page faults, and + // we're already in a page fault handler. + // + static c3_y con_y[_ce_page]; + + // save contents of page, to be restored after the mmap + // + memcpy(con_y, _ce_ptr(pag_w), _ce_page); + + // map the dirty page into the ephemeral file + // + if ( MAP_FAILED == mmap(_ce_ptr(pag_w), + _ce_page, + (PROT_READ | PROT_WRITE), + (MAP_FIXED | MAP_SHARED), + u3P.eph_i, _ce_len(pag_w)) ) + { + fprintf(stderr, "loom: fault mmap failed (%u): %s\r\n", + pag_w, strerror(errno)); + return 1; + } + + // restore contents of page + // + memcpy(_ce_ptr(pag_w), con_y, _ce_page); + + return 0; +} + +/* _ce_flaw_mprotect(): protect page after fault. +*/ +static inline c3_i +_ce_flaw_mprotect(c3_w pag_w) +{ + if ( 0 != mprotect(_ce_ptr(pag_w), _ce_page, (PROT_READ | PROT_WRITE)) ) { + fprintf(stderr, "loom: fault mprotect (%u): %s\r\n", + pag_w, strerror(errno)); + return 1; + } + + return 0; +} + +#ifdef U3_GUARD_PAGE +/* _ce_ward_protect(): protect the guard page. +*/ +static inline c3_i +_ce_ward_protect(void) +{ + if ( 0 != mprotect(_ce_ptr(u3P.gar_w), _ce_page, PROT_NONE) ) { + fprintf(stderr, "loom: failed to protect guard page (%u): %s\r\n", + u3P.gar_w, strerror(errno)); + return 1; + } + + return 0; +} + +/* _ce_ward_post(): set the guard page. +*/ +static inline c3_i +_ce_ward_post(c3_w nop_w, c3_w sop_w) +{ + u3P.gar_w = nop_w + ((sop_w - nop_w) / 2); + return _ce_ward_protect(); +} + +/* _ce_ward_clip(): hit the guard page. +*/ +static inline u3e_flaw +_ce_ward_clip(c3_w nop_w, c3_w sop_w) +{ + c3_w old_w = u3P.gar_w; + + if ( !u3P.gar_w || ((nop_w < u3P.gar_w) && (sop_w > u3P.gar_w)) ) { + fprintf(stderr, "loom: ward bogus (>%u %u %u<)\r\n", + nop_w, u3P.gar_w, sop_w); + return u3e_flaw_sham; + } + + if ( sop_w <= (nop_w + 1) ) { + return u3e_flaw_meme; + } + + if ( _ce_ward_post(nop_w, sop_w) ) { + return u3e_flaw_base; + } + + u3_assert( old_w != u3P.gar_w ); + + return u3e_flaw_good; +} +#endif /* ifdef U3_GUARD_PAGE */ + +/* u3e_fault(): handle a memory fault. +*/ +u3e_flaw +u3e_fault(u3_post low_p, u3_post hig_p, u3_post off_p) +{ + c3_w pag_w = off_p >> u3a_page; + c3_w blk_w = pag_w >> 5; + c3_w bit_w = pag_w & 31; + +#ifdef U3_GUARD_PAGE + c3_w gar_w = u3P.gar_w; + + if ( pag_w == gar_w ) { + u3e_flaw fal_e = _ce_ward_clip(low_p >> u3a_page, hig_p >> u3a_page); + + if ( u3e_flaw_good != fal_e ) { + return fal_e; + } + + if ( !(u3P.dit_w[blk_w] & ((c3_w)1 << bit_w)) ) { + fprintf(stderr, "loom: strange guard (%d)\r\n", pag_w); + return u3e_flaw_sham; + } + + if ( _ce_flaw_mprotect(pag_w) ) { + return u3e_flaw_base; + } + + return u3e_flaw_good; + } +#endif + + if ( u3P.dit_w[blk_w] & ((c3_w)1 << bit_w) ) { + fprintf(stderr, "loom: strange page (%d): %x\r\n", pag_w, off_p); + return u3e_flaw_sham; + } + + u3P.dit_w[blk_w] |= ((c3_w)1 << bit_w); + + if ( u3P.eph_i ) { + if ( _ce_flaw_mmap(pag_w) ) { + return u3e_flaw_base; + } + } + else if ( _ce_flaw_mprotect(pag_w) ) { + return u3e_flaw_base; + } + + return u3e_flaw_good; +} + +typedef enum { + _ce_img_good = 0, + _ce_img_fail = 1, + _ce_img_size = 2 +} _ce_img_stat; + +/* _ce_image_stat(): measure image. +*/ +static _ce_img_stat +_ce_image_stat(u3e_image* img_u, c3_w* pgs_w) +{ + struct stat buf_u; + + if ( -1 == fstat(img_u->fid_i, &buf_u) ) { + fprintf(stderr, "loom: image stat: %s\r\n", strerror(errno)); + u3_assert(0); + return _ce_img_fail; + } + else { + c3_z siz_z = buf_u.st_size; + c3_z pgs_z = (siz_z + (_ce_page - 1)) >> (u3a_page + 2); + + if ( !siz_z ) { + *pgs_w = 0; + return _ce_img_good; + } + else if ( siz_z != _ce_len(pgs_z) ) { + fprintf(stderr, "loom: image corrupt size %zu\r\n", siz_z); + return _ce_img_size; + } + else if ( pgs_z > UINT32_MAX ) { + fprintf(stderr, "loom: image overflow %zu\r\n", siz_z); + return _ce_img_fail; + } + else { + *pgs_w = (c3_w)pgs_z; + return _ce_img_good; + } + } +} + +/* _ce_ephemeral_open(): open or create ephemeral file +*/ +static c3_o +_ce_ephemeral_open(c3_i* eph_i) +{ + c3_i mod_i = O_RDWR | O_CREAT; + c3_c ful_c[8193]; + + if ( u3C.eph_c == 0 ) { + snprintf(ful_c, 8192, "%s", u3P.dir_c); + c3_mkdir(ful_c, 0700); + + snprintf(ful_c, 8192, "%s/.urb", u3P.dir_c); + c3_mkdir(ful_c, 0700); + + snprintf(ful_c, 8192, "%s/.urb/chk", u3P.dir_c); + c3_mkdir(ful_c, 0700); + + snprintf(ful_c, 8192, "%s/.urb/chk/limbo.bin", u3P.dir_c); + u3C.eph_c = strdup(ful_c); + } + + if ( -1 == (*eph_i = c3_open(u3C.eph_c, mod_i, 0666)) ) { + fprintf(stderr, "loom: ephemeral c3_open %s: %s\r\n", u3C.eph_c, + strerror(errno)); + return c3n; + } + + if ( ftruncate(*eph_i, _ce_len(u3P.pag_w)) < 0 ) { + fprintf(stderr, "loom: ephemeral ftruncate %s: %s\r\n", u3C.eph_c, + strerror(errno)); + return c3n; + } + return c3y; +} + +/* _ce_image_open(): open or create image. +*/ +static _ce_img_stat +_ce_image_open(u3e_image* img_u, c3_c* ful_c) +{ + c3_i mod_i = O_RDWR | O_CREAT; + + c3_c pax_c[8192]; + snprintf(pax_c, 8192, "%s/%s.bin", ful_c, img_u->nam_c); + if ( -1 == (img_u->fid_i = c3_open(pax_c, mod_i, 0666)) ) { + fprintf(stderr, "loom: c3_open %s: %s\r\n", pax_c, strerror(errno)); + return _ce_img_fail; + } + + return _ce_image_stat(img_u, &img_u->pgs_w); +} + +c3_i +u3e_image_open_any(c3_c* nam_c, c3_c* dir_c, c3_z* len_z) +{ + u3e_image img_u = { .nam_c = nam_c }; + + switch ( _ce_image_open(&img_u, dir_c) ) { + case _ce_img_good: { + *len_z = _ce_len(img_u.pgs_w); + return img_u.fid_i; + } break; + + case _ce_img_fail: + case _ce_img_size: { + *len_z = 0; + return -1; + } break; + } +} + +/* _ce_patch_write_control(): write control block file. +*/ +static void +_ce_patch_write_control(u3_ce_patch* pat_u) +{ + ssize_t ret_i; + c3_w len_w = sizeof(u3e_control) + + (pat_u->con_u->pgs_w * sizeof(u3e_line)); + + if ( len_w != (ret_i = write(pat_u->ctl_i, pat_u->con_u, len_w)) ) { + if ( 0 < ret_i ) { + fprintf(stderr, "loom: patch ctl partial write: %zu\r\n", (size_t)ret_i); + } + else { + fprintf(stderr, "loom: patch ctl write: %s\r\n", strerror(errno)); + } + u3_assert(0); + } +} + +/* _ce_patch_read_control(): read control block file. +*/ +static c3_o +_ce_patch_read_control(u3_ce_patch* pat_u) +{ + c3_w len_w; + + u3_assert(0 == pat_u->con_u); + { + struct stat buf_u; + + if ( -1 == fstat(pat_u->ctl_i, &buf_u) ) { + u3_assert(0); + return c3n; + } + len_w = (c3_w) buf_u.st_size; + } + + if (0 == len_w) { + return c3n; + } + + pat_u->con_u = c3_malloc(len_w); + if ( (len_w != read(pat_u->ctl_i, pat_u->con_u, len_w)) || + (len_w != sizeof(u3e_control) + + (pat_u->con_u->pgs_w * sizeof(u3e_line))) ) + { + c3_free(pat_u->con_u); + pat_u->con_u = 0; + return c3n; + } + return c3y; +} + +/* _ce_patch_create(): create patch files. +*/ +static void +_ce_patch_create(u3_ce_patch* pat_u) +{ + c3_c ful_c[8193]; + + snprintf(ful_c, 8192, "%s", u3P.dir_c); + c3_mkdir(ful_c, 0700); + + snprintf(ful_c, 8192, "%s/.urb", u3P.dir_c); + c3_mkdir(ful_c, 0700); + + snprintf(ful_c, 8192, "%s/.urb/chk/control.bin", u3P.dir_c); + if ( -1 == (pat_u->ctl_i = c3_open(ful_c, O_RDWR | O_CREAT | O_EXCL, 0600)) ) { + fprintf(stderr, "loom: patch c3_open control.bin: %s\r\n", strerror(errno)); + u3_assert(0); + } + + snprintf(ful_c, 8192, "%s/.urb/chk/memory.bin", u3P.dir_c); + if ( -1 == (pat_u->mem_i = c3_open(ful_c, O_RDWR | O_CREAT | O_EXCL, 0600)) ) { + fprintf(stderr, "loom: patch c3_open memory.bin: %s\r\n", strerror(errno)); + u3_assert(0); + } +} + +/* _ce_patch_delete(): delete a patch. +*/ +static void +_ce_patch_delete(void) +{ + c3_c ful_c[8193]; + + snprintf(ful_c, 8192, "%s/.urb/chk/control.bin", u3P.dir_c); + if ( unlink(ful_c) ) { + fprintf(stderr, "loom: failed to delete control.bin: %s\r\n", + strerror(errno)); + } + + snprintf(ful_c, 8192, "%s/.urb/chk/memory.bin", u3P.dir_c); + if ( unlink(ful_c) ) { + fprintf(stderr, "loom: failed to remove memory.bin: %s\r\n", + strerror(errno)); + } +} + +/* _ce_patch_verify(): check patch data checksum. +*/ +static c3_o +_ce_patch_verify(u3_ce_patch* pat_u) +{ + c3_w pag_w, has_w; + c3_y buf_y[_ce_page]; + c3_zs ret_zs; + + if ( U3P_VERLAT != pat_u->con_u->ver_w ) { + fprintf(stderr, "loom: patch version mismatch: have %"PRIc3_w", need %u\r\n", + pat_u->con_u->ver_w, + U3P_VERLAT); + return c3n; + } + + { + c3_w len_w = sizeof(u3e_control) + (pat_u->con_u->pgs_w * sizeof(u3e_line)); + c3_w off_w = offsetof(u3e_control, tot_w); + c3_y *ptr_y = (c3_y*)pat_u->con_u + off_w; + c3_w has_w = _ce_muk_buf(len_w - off_w, ptr_y); + + if ( has_w != pat_u->con_u->has_w ) { + fprintf(stderr, "loom: patch meta checksum fail: " + "have=0x%"PRIxc3_w", need=0x%"PRIxc3_w"\r\n", + has_w, pat_u->con_u->has_w); + return c3n; + } + } + + // XX check for sorted page numbers? + // + for ( c3_z i_z = 0; i_z < pat_u->con_u->pgs_w; i_z++ ) { + pag_w = pat_u->con_u->mem_u[i_z].pag_w; + has_w = pat_u->con_u->mem_u[i_z].has_w; + + if ( _ce_page != + (ret_zs = pread(pat_u->mem_i, buf_y, _ce_page, _ce_len(i_z))) ) + { + if ( 0 < ret_zs ) { + fprintf(stderr, "loom: patch partial read: %"PRIc3_zs"\r\n", ret_zs); + } + else { + fprintf(stderr, "loom: patch read: fail %s\r\n", strerror(errno)); + } + return c3n; + } + + { + c3_w nas_w = _ce_muk_page(buf_y); + + if ( has_w != nas_w ) { + fprintf(stderr, "loom: patch page (%"PRIc3_w") checksum fail: " + "have=0x%"PRIxc3_w", need=0x%"PRIxc3_w"\r\n", + pag_w, nas_w, has_w); + return c3n; + } +#if 0 + else { + u3l_log("verify: patch %"PRIc3_w"/%"PRIc3_z", %"PRIxc3_w"\r\n", pag_w, i_z, has_w); + } +#endif + } + } + + return c3y; +} + +/* _ce_patch_free(): free a patch. +*/ +static void +_ce_patch_free(u3_ce_patch* pat_u) +{ + c3_free(pat_u->con_u); + close(pat_u->ctl_i); + close(pat_u->mem_i); + c3_free(pat_u); +} + +/* _ce_patch_open(): open patch, if any. +*/ +static u3_ce_patch* +_ce_patch_open(void) +{ + u3_ce_patch* pat_u; + c3_c ful_c[8193]; + c3_i ctl_i, mem_i; + + snprintf(ful_c, 8192, "%s", u3P.dir_c); + c3_mkdir(ful_c, 0700); + + snprintf(ful_c, 8192, "%s/.urb", u3P.dir_c); + c3_mkdir(ful_c, 0700); + + snprintf(ful_c, 8192, "%s/.urb/chk/control.bin", u3P.dir_c); + if ( -1 == (ctl_i = c3_open(ful_c, O_RDWR)) ) { + return 0; + } + + snprintf(ful_c, 8192, "%s/.urb/chk/memory.bin", u3P.dir_c); + if ( -1 == (mem_i = c3_open(ful_c, O_RDWR)) ) { + close(ctl_i); + + _ce_patch_delete(); + return 0; + } + pat_u = c3_malloc(sizeof(u3_ce_patch)); + pat_u->ctl_i = ctl_i; + pat_u->mem_i = mem_i; + pat_u->con_u = 0; + + if ( c3n == _ce_patch_read_control(pat_u) ) { + close(pat_u->ctl_i); + close(pat_u->mem_i); + c3_free(pat_u); + + _ce_patch_delete(); + return 0; + } + if ( c3n == _ce_patch_verify(pat_u) ) { + _ce_patch_free(pat_u); + _ce_patch_delete(); + return 0; + } + return pat_u; +} + +/* _ce_patch_write_page(): write a page of patch memory. +*/ +static void +_ce_patch_write_page(u3_ce_patch* pat_u, + c3_w pgc_w, + c3_w* mem_w) +{ + c3_zs ret_zs; + + if ( _ce_page != + (ret_zs = pwrite(pat_u->mem_i, mem_w, _ce_page, _ce_len(pgc_w))) ) + { + if ( 0 < ret_zs ) { + fprintf(stderr, "loom: patch partial write: %"PRIc3_zs"\r\n", ret_zs); + } + else { + fprintf(stderr, "loom: patch write: fail: %s\r\n", strerror(errno)); + } + fprintf(stderr, "info: you probably have insufficient disk space"); + u3_assert(0); + } +} + +/* _ce_patch_count_page(): count a page, producing new counter. +*/ +static c3_w +_ce_patch_count_page(c3_w pag_w, + c3_w off_w, + c3_w pgc_w) +{ + c3_w blk_w = (pag_w >> 5); + c3_w bit_w = (pag_w & 31); + + if ( (u3P.dit_w[blk_w] & ((c3_w)1 << bit_w)) + && ( (pag_w < off_w) + || (u3R->hep.len_w <= (pag_w - off_w)) + || (u3a_free_pg != (u3to(u3_post, u3R->hep.pag_p))[pag_w - off_w]) ) ) + { + pgc_w += 1; + } + + return pgc_w; +} + +/* _ce_patch_save_page(): save a page, producing new page counter. +*/ +static c3_w +_ce_patch_save_page(u3_ce_patch* pat_u, + c3_w pag_w, + c3_w off_w, + c3_w pgc_w) +{ + c3_w blk_w = (pag_w >> 5); + c3_w bit_w = (pag_w & 31); + + if ( u3P.dit_w[blk_w] & ((c3_w)1 << bit_w) ) { + if ( (pag_w >= off_w) + && (u3R->hep.len_w > (pag_w - off_w)) + && (u3a_free_pg == (u3to(u3_post, u3R->hep.pag_p))[pag_w - off_w]) ) + { + // fprintf(stderr, "save: skip %u\r\n", pag_w); + pat_u->sip_w++; + return pgc_w; + } + + c3_w* mem_w = _ce_ptr(pag_w); + + pat_u->con_u->mem_u[pgc_w].pag_w = pag_w; + pat_u->con_u->mem_u[pgc_w].has_w = _ce_muk_page(mem_w); + +#if 0 + fprintf(stderr, "loom: save page %d %x\r\n", + pag_w, pat_u->con_u->mem_u[pgc_w].has_w); +#endif + _ce_patch_write_page(pat_u, pgc_w, mem_w); + + pgc_w += 1; + } + return pgc_w; +} + +/* _ce_patch_compose(): make and write current patch. +*/ +static u3_ce_patch* +_ce_patch_compose(c3_w max_w) +{ + c3_w pgs_w = 0; + c3_w off_w = u3R->rut_p >> u3a_page; + + /* Count dirty pages. + */ + { + c3_w i_w; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + pgs_w = _ce_patch_count_page(i_w, off_w, pgs_w); + } + } + + if ( !pgs_w ) { + return 0; + } + else { + u3_ce_patch* pat_u = c3_malloc(sizeof(u3_ce_patch)); + c3_w i_w, len_w, pgc_w; + + pat_u->sip_w = 0; + + _ce_patch_create(pat_u); + len_w = sizeof(u3e_control) + (pgs_w * sizeof(u3e_line)); + pat_u->con_u = c3_malloc(len_w); + pat_u->con_u->ver_w = U3P_VERLAT; + pgc_w = 0; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + pgc_w = _ce_patch_save_page(pat_u, i_w, off_w, pgc_w); + } + + u3_assert( pgc_w == pgs_w ); + + pat_u->con_u->tot_w = max_w; + pat_u->con_u->pgs_w = pgc_w; + + { + c3_w off_w = offsetof(u3e_control, tot_w); + c3_y *ptr_y = (c3_y*)pat_u->con_u + off_w; + + pat_u->con_u->has_w = _ce_muk_buf(len_w - off_w, ptr_y); + } + + _ce_patch_write_control(pat_u); + return pat_u; + } +} + +/* _ce_patch_sync(): make sure patch is synced to disk. +*/ +static void +_ce_patch_sync(u3_ce_patch* pat_u) +{ + if ( -1 == c3_sync(pat_u->ctl_i) ) { + fprintf(stderr, "loom: control file sync failed: %s\r\n", + strerror(errno)); + u3_assert(!"loom: control sync"); + } + + if ( -1 == c3_sync(pat_u->mem_i) ) { + fprintf(stderr, "loom: patch file sync failed: %s\r\n", + strerror(errno)); + u3_assert(!"loom: patch sync"); + } +} + +/* _ce_image_sync(): make sure image is synced to disk. +*/ +static c3_o +_ce_image_sync(u3e_image* img_u) +{ + if ( -1 == c3_sync(img_u->fid_i) ) { + fprintf(stderr, "loom: image sync failed: %s\r\n", strerror(errno)); + return c3n; + } + + return c3y; +} + +/* _ce_image_resize(): resize image, truncating if it shrunk. +*/ +static void +_ce_image_resize(u3e_image* img_u, c3_w pgs_w) +{ + c3_z off_z = _ce_len(pgs_w); + off_t off_i = (off_t)off_z; + + if ( img_u->pgs_w > pgs_w ) { + if ( off_z != (size_t)off_i ) { + fprintf(stderr, "loom: image truncate: " + "offset overflow (%" PRId64 ") for page %u\r\n", + (c3_ds)off_i, pgs_w); + u3_assert(0); + } + + if ( ftruncate(img_u->fid_i, off_i) ) { + fprintf(stderr, "loom: image truncate: %s\r\n", strerror(errno)); + u3_assert(0); + } + } + + img_u->pgs_w = pgs_w; +} + +/* _ce_patch_apply(): apply patch to images. +*/ +static void +_ce_patch_apply(u3_ce_patch* pat_u) +{ + c3_zs ret_zs; + c3_w i_w; + + // resize images + // + _ce_image_resize(&u3P.img_u, pat_u->con_u->tot_w); + + // seek to begining of patch + // + if ( -1 == lseek(pat_u->mem_i, 0, SEEK_SET) ) { + fprintf(stderr, "loom: patch apply seek: %s\r\n", strerror(errno)); + u3_assert(0); + } + + c3_i fid_i = u3P.img_u.fid_i; + + // write patch pages into the appropriate image + // + for ( i_w = 0; i_w < pat_u->con_u->pgs_w; i_w++ ) { + c3_w pag_w = pat_u->con_u->mem_u[i_w].pag_w; + c3_y buf_y[_ce_page]; + c3_z off_z = _ce_len(pag_w); + + if ( _ce_page != (ret_zs = read(pat_u->mem_i, buf_y, _ce_page)) ) { + if ( 0 < ret_zs ) { + fprintf(stderr, "loom: patch apply partial read: %"PRIc3_zs"\r\n", + ret_zs); + } + else { + fprintf(stderr, "loom: patch apply read: %s\r\n", strerror(errno)); + } + u3_assert(0); + } + else { + if ( _ce_page != + (ret_zs = pwrite(fid_i, buf_y, _ce_page, off_z)) ) + { + if ( 0 < ret_zs ) { + fprintf(stderr, "loom: patch apply partial write: %"PRIc3_zs"\r\n", + ret_zs); + } + else { + fprintf(stderr, "loom: patch apply write: %s\r\n", strerror(errno)); + } + fprintf(stderr, "info: you probably have insufficient disk space"); + u3_assert(0); + } + } +#if 0 + u3l_log("apply: %d, %x", pag_w, _ce_muk_page(buf_y)); +#endif + } +} + +/* _ce_loom_track_sane(): quiescent page state invariants. +*/ +static c3_o +_ce_loom_track_sane(void) +{ + c3_w blk_w, bit_w, max_w, i_w = 0; + c3_o san_o = c3y; + + max_w = u3P.img_u.pgs_w; + + for ( ; i_w < max_w; i_w++ ) { + blk_w = i_w >> 5; + bit_w = i_w & 31; + + if ( u3P.dit_w[blk_w] & ((c3_w)1 << bit_w) ) { + fprintf(stderr, "loom: insane image %u\r\n", i_w); + san_o = c3n; + } + } + + max_w = u3P.pag_w; + + for ( ; i_w < max_w; i_w++ ) { + blk_w = i_w >> 5; + bit_w = i_w & 31; + + if ( !(u3P.dit_w[blk_w] & ((c3_w)1 << bit_w)) ) { + fprintf(stderr, "loom: insane open %u\r\n", i_w); + san_o = c3n; + } + } + + return san_o; +} + +/* _ce_loom_track(): [pgs_w] clean, followed by [dif_w] dirty. +*/ +void +_ce_loom_track(c3_w pgs_w, c3_w dif_w) +{ + c3_w blk_w, bit_w, i_w = 0, max_w = pgs_w; + + for ( ; i_w < max_w; i_w++ ) { + blk_w = i_w >> 5; + bit_w = i_w & 31; + u3P.dit_w[blk_w] &= ~((c3_w)1 << bit_w); + } + + max_w += dif_w; + + for ( ; i_w < max_w; i_w++ ) { + blk_w = i_w >> 5; + bit_w = i_w & 31; + u3P.dit_w[blk_w] |= ((c3_w)1 << bit_w); + } +} + +/* _ce_loom_protect(): protect/track pages from the bottom of memory. +*/ +static void +_ce_loom_protect(c3_w pgs_w, c3_w old_w) +{ + c3_w dif_w = 0; + + if ( pgs_w ) { + if ( 0 != mprotect(_ce_ptr(0), _ce_len(pgs_w), PROT_READ) ) { + fprintf(stderr, "loom: pure (%u pages): %s\r\n", + pgs_w, strerror(errno)); + u3_assert(0); + } + } + + if ( old_w > pgs_w ) { + dif_w = old_w - pgs_w; + + if ( 0 != mprotect(_ce_ptr(pgs_w), + _ce_len(dif_w), + (PROT_READ | PROT_WRITE)) ) + { + fprintf(stderr, "loom: foul (%u pages, %u old): %s\r\n", + pgs_w, old_w, strerror(errno)); + u3_assert(0); + } + +#ifdef U3_GUARD_PAGE + // protect guard page if clobbered + // + // NB: < pgs_w is precluded by assertion in u3e_save() + // + if ( u3P.gar_w < old_w ) { + fprintf(stderr, "loom: guard on reprotect\r\n"); + u3_assert( !_ce_ward_protect() ); + } +#endif + } + + _ce_loom_track(pgs_w, dif_w); +} + +/* _ce_loom_mapf_ephemeral(): map entire loom into ephemeral file +*/ +static void +_ce_loom_mapf_ephemeral(void) +{ + if ( MAP_FAILED == mmap(_ce_ptr(0), + _ce_len(u3P.pag_w), + (PROT_READ | PROT_WRITE), + (MAP_FIXED | MAP_SHARED), + u3P.eph_i, 0) ) + { + fprintf(stderr, "loom: initial ephemeral mmap failed (%u pages): %s\r\n", + u3P.pag_w, strerror(errno)); + u3_assert(0); + } +} + +/* _ce_loom_mapf(): map [pgs_w] of [fid_i] into the bottom of memory +** (and ephemeralize [old_w - pgs_w] after if needed). +*/ +static void +_ce_loom_mapf(c3_i fid_i, c3_w pgs_w, c3_w old_w) +{ + c3_w dif_w = 0; + + if ( pgs_w ) { + if ( MAP_FAILED == mmap(_ce_ptr(0), + _ce_len(pgs_w), + PROT_READ, + (MAP_FIXED | MAP_PRIVATE), + fid_i, 0) ) + { + fprintf(stderr, "loom: file-backed mmap failed (%u pages): %s\r\n", + pgs_w, strerror(errno)); + u3_assert(0); + } + } + + if ( old_w > pgs_w ) { + dif_w = old_w - pgs_w; + + if ( u3C.wag_w & u3o_swap ) { + if ( MAP_FAILED == mmap(_ce_ptr(pgs_w), + _ce_len(dif_w), + (PROT_READ | PROT_WRITE), + (MAP_FIXED | MAP_SHARED), + u3P.eph_i, _ce_len(pgs_w)) ) + { + fprintf(stderr, "loom: ephemeral mmap failed (%u pages, %u old): %s\r\n", + pgs_w, old_w, strerror(errno)); + u3_assert(0); + } + } + else { + if ( MAP_FAILED == mmap(_ce_ptr(pgs_w), + _ce_len(dif_w), + (PROT_READ | PROT_WRITE), + (MAP_ANON | MAP_FIXED | MAP_PRIVATE), + -1, 0) ) + { + fprintf(stderr, "loom: anonymous mmap failed (%u pages, %u old): %s\r\n", + pgs_w, old_w, strerror(errno)); + u3_assert(0); + } + } + +#ifdef U3_GUARD_PAGE + // protect guard page if clobbered + // + // NB: < pgs_w is precluded by assertion in u3e_save() + // + if ( u3P.gar_w < old_w ) { + fprintf(stderr, "loom: guard on remap\r\n"); + u3_assert( !_ce_ward_protect() ); + } +#endif + } + + _ce_loom_track(pgs_w, dif_w); +} + +/* _ce_loom_blit(): apply pages, in order, from the bottom of memory. +*/ +static void +_ce_loom_blit(c3_i fid_i, c3_w pgs_w) +{ + c3_w i_w; + void* ptr_v; + c3_zs ret_zs; + + for ( i_w = 0; i_w < pgs_w; i_w++ ) { + ptr_v = _ce_ptr(i_w); + + if ( _ce_page != (ret_zs = pread(fid_i, ptr_v, _ce_page, _ce_len(i_w))) ) { + if ( 0 < ret_zs ) { + fprintf(stderr, "loom: blit partial read: %"PRIc3_zs"\r\n", + ret_zs); + } + else { + fprintf(stderr, "loom: blit read %s\r\n", strerror(errno)); + } + u3_assert(0); + } + } + + _ce_loom_protect(pgs_w, 0); +} + +#ifdef U3_SNAPSHOT_VALIDATION +/* _ce_page_fine(): compare page in memory and on disk. +*/ +static c3_o +_ce_page_fine(u3e_image* img_u, c3_w pag_w, c3_z off_z) +{ + ssize_t ret_i; + c3_y buf_y[_ce_page]; + + if ( _ce_page != + (ret_i = pread(img_u->fid_i, buf_y, _ce_page, off_z)) ) + { + if ( 0 < ret_i ) { + fprintf(stderr, "loom: image fine partial read: %zu\r\n", (size_t)ret_i); + } + else { + fprintf(stderr, "loom: image fine read: %s\r\n", strerror(errno)); + } + u3_assert(0); + } + + { + c3_w mas_w = _ce_muk_page(_ce_ptr(pag_w)); + c3_w fas_w = _ce_muk_page(buf_y); + + if ( mas_w != fas_w ) { + fprintf(stderr, "loom: image checksum mismatch: " + "page %d, mem_w %x, fil_w %x\r\n", + pag_w, mas_w, fas_w); + return c3n; + } + } + + return c3y; +} + +/* _ce_loom_fine(): compare clean pages in memory and on disk. +*/ +static c3_o +_ce_loom_fine(void) +{ + c3_w off_w = u3R->rut_p >> u3a_page; + c3_w blk_w, bit_w, pag_w, i_w; + c3_o fin_o = c3y; + + for ( i_w = 0; i_w < u3P.img_u.pgs_w; i_w++ ) { + pag_w = i_w; + blk_w = pag_w >> 5; + bit_w = pag_w & 31; + + if ( !(u3P.dit_w[blk_w] & ((c3_w)1 << bit_w)) + && ( (pag_w < off_w) + || (u3R->hep.len_w <= (pag_w - off_w)) + || (u3a_free_pg != (u3to(u3_post, u3R->hep.pag_p))[pag_w - off_w]) ) ) + { + fin_o = c3a(fin_o, _ce_page_fine(&u3P.img_u, pag_w, _ce_len(pag_w))); + } + } + + return fin_o; +} +#endif + +/* _ce_image_copy(): copy all of [fom_u] to [tou_u] +*/ +static c3_o +_ce_image_copy(u3e_image* fom_u, u3e_image* tou_u) +{ + ssize_t ret_i; + c3_w i_w; + + // resize images + // + _ce_image_resize(tou_u, fom_u->pgs_w); + + // seek to begining of patch and images + // + if ( (-1 == lseek(fom_u->fid_i, 0, SEEK_SET)) + || (-1 == lseek(tou_u->fid_i, 0, SEEK_SET)) ) + { + fprintf(stderr, "loom: image copy seek: %s\r\n", strerror(errno)); + return c3n; + } + + // copy pages into destination image + // + for ( i_w = 0; i_w < fom_u->pgs_w; i_w++ ) { + c3_y buf_y[_ce_page]; + c3_w off_w = i_w; + + if ( _ce_page != (ret_i = read(fom_u->fid_i, buf_y, _ce_page)) ) { + if ( 0 < ret_i ) { + fprintf(stderr, "loom: image copy partial read: %zu\r\n", + (size_t)ret_i); + } + else { + fprintf(stderr, "loom: image copy read: %s\r\n", + strerror(errno)); + } + return c3n; + } + else { + if ( -1 == lseek(tou_u->fid_i, _ce_len(off_w), SEEK_SET) ) { + fprintf(stderr, "loom: image copy seek: %s\r\n", strerror(errno)); + return c3n; + } + if ( _ce_page != (ret_i = write(tou_u->fid_i, buf_y, _ce_page)) ) { + if ( 0 < ret_i ) { + fprintf(stderr, "loom: image copy partial write: %zu\r\n", + (size_t)ret_i); + } + else { + fprintf(stderr, "loom: image copy write: %s\r\n", strerror(errno)); + } + fprintf(stderr, "info: you probably have insufficient disk space"); + return c3n; + } + } + } + + return c3y; +} + +/* u3e_backup(): copy snapshot from [pux_c] to [pax_c], + * overwriting optionally. note that image files must + * be named "image". +*/ +c3_o +u3e_backup(c3_c* pux_c, c3_c* pax_c, c3_o ovw_o) +{ + // source image file from [pux_c] + u3e_image nux_u = { .nam_c = "image", .pgs_w = 0 }; + + // destination image file to [pax_c] + u3e_image nax_u = { .nam_c = "image", .pgs_w = 0 }; + + c3_i mod_i = O_RDWR | O_CREAT; + + if ( !pux_c || !pax_c ) { + fprintf(stderr, "loom: image backup: bad path\r\n"); + return c3n; + } + + if ( (c3n == ovw_o) && c3_mkdir(pax_c, 0700) ) { + if ( EEXIST != errno ) { + fprintf(stderr, "loom: image backup: %s\r\n", strerror(errno)); + } + return c3n; + } + + // open source image files if they exist + // + c3_c nux_c[8193]; + snprintf(nux_c, 8192, "%s/%s.bin", pux_c, nux_u.nam_c); + if ( (0 != access(nux_c, F_OK)) + || (_ce_img_good != _ce_image_open(&nux_u, pux_c)) ) + { + fprintf(stderr, "loom: couldn't open image at %s\r\n", pux_c); + return c3n; + } + + // open destination image files + c3_c nax_c[8193]; + snprintf(nax_c, 8192, "%s/%s.bin", pax_c, nax_u.nam_c); + if ( -1 == (nax_u.fid_i = c3_open(nax_c, mod_i, 0666)) ) { + fprintf(stderr, "loom: c3_open %s: %s\r\n", nax_c, strerror(errno)); + return c3n; + } + + if ( (c3n == _ce_image_copy(&nux_u, &nax_u)) + || (c3n == _ce_image_sync(&nax_u)) ) + { + c3_unlink(nax_c); + fprintf(stderr, "loom: image backup failed\r\n"); + return c3n; + } + + close(nax_u.fid_i); + fprintf(stderr, "loom: image backup complete\r\n"); + return c3y; +} + +/* + u3e_save(): save current changes. + + If we are in dry-run mode, do nothing. + + First, call `_ce_patch_compose` to write all dirty pages to disk and + clear protection and dirty bits. If there were no dirty pages to write, + then we're done. + + - Sync the patch files to disk. + - Verify the patch (because why not?) + - Write the patch data into the image file (This is idempotent.). + - Sync the image file. + - Delete the patchfile and free it. + + Once we've written the dirty pages to disk (and have reset their dirty bits + and protection flags), we *could* handle the rest of the checkpointing + process in a separate thread, but we'd need to wait until that finishes + before we try to make another snapshot. +*/ +void +u3e_save(u3_post low_p, u3_post hig_p) +{ + u3_ce_patch* pat_u; + c3_w old_w = u3P.img_u.pgs_w; + + if ( u3C.wag_w & u3o_dryrun ) { + return; + } + + // XX discard hig_p and friends + { + c3_w nop_w = (low_p >> u3a_page); + c3_w nor_w = (low_p + (_ce_len_words(1) - 1)) >> u3a_page; + c3_w sop_w = hig_p >> u3a_page; + + u3_assert( (u3P.gar_w > nop_w) && (u3P.gar_w < sop_w) ); + + if ( !(pat_u = _ce_patch_compose(nor_w)) ) { + return; + } + } + + if ( u3C.wag_w & u3o_verbose ) { + fprintf(stderr, "sync: skipped %u free", pat_u->sip_w); + u3a_print_memory(stderr, " pages", pat_u->sip_w << u3a_page); + } + + // attempt to avoid propagating anything insane to disk + // + u3a_loom_sane(); + + if ( u3C.wag_w & u3o_verbose ) { + u3a_print_memory(stderr, "sync: save", pat_u->con_u->pgs_w << u3a_page); + } + + _ce_patch_sync(pat_u); + + if ( c3n == _ce_patch_verify(pat_u) ) { + u3_assert(!"loom: save failed"); + } + +#ifdef U3_SNAPSHOT_VALIDATION + // check that clean pages are correct + // + u3_assert( c3y == _ce_loom_fine() ); +#endif + + _ce_patch_apply(pat_u); + + u3_assert( c3y == _ce_image_sync(&u3P.img_u) ); + + _ce_patch_free(pat_u); + _ce_patch_delete(); + +#ifdef U3_SNAPSHOT_VALIDATION + { + c3_w pgs_w; + u3_assert( _ce_img_good == _ce_image_stat(&u3P.img_u, &pgs_w) ); + u3_assert( pgs_w == u3P.img_u.pgs_w ); + } + + // check that all pages in the image are clean and *fine*, + // all others are dirty + // + // since total finery requires total cleanliness, + // pages of the image are protected twice. + // + _ce_loom_protect(u3P.img_u.pgs_w, old_w); + + u3_assert( c3y == _ce_loom_track_sane() ); + u3_assert( c3y == _ce_loom_fine() ); +#endif + + if ( u3C.wag_w & u3o_no_demand ) { +#ifndef U3_SNAPSHOT_VALIDATION + _ce_loom_protect(u3P.img_u.pgs_w, old_w); +#endif + } + else { + _ce_loom_mapf(u3P.img_u.fid_i, u3P.img_u.pgs_w, old_w); + } + + u3e_toss(low_p, hig_p); +} + +/* _ce_toss_pages(): discard ephemeral pages. +*/ +static void +_ce_toss_pages(c3_w nor_w, c3_w sou_w) +{ + c3_w pgs_w = u3P.pag_w - (nor_w + sou_w); + void* ptr_v = _ce_ptr(nor_w); + + #ifndef U3_OS_windows + if ( -1 == madvise(ptr_v, _ce_len(pgs_w), MADV_DONTNEED) ) { + fprintf(stderr, "loom: madv_dontneed failed (%u pages at %u): %s\r\n", + pgs_w, nor_w, strerror(errno)); + } + #endif +} + +/* u3e_toss(): discard ephemeral pages. +*/ +void +u3e_toss(u3_post low_p, u3_post hig_p) +{ + c3_w nor_w = (low_p + (_ce_len_words(1) - 1)) >> u3a_page; + c3_w sou_w = u3P.pag_w - (hig_p >> u3a_page); + + _ce_toss_pages(nor_w, sou_w); +} + +/* u3e_live(): start the checkpointing system. +*/ +c3_o +u3e_live(c3_o nuu_o, c3_c* dir_c) +{ + // require that our page size is a multiple of the system page size. + // + { + size_t sys_i = sysconf(_SC_PAGESIZE); + + if ( _ce_page % sys_i ) { + fprintf(stderr, "loom: incompatible system page size (%zuKB)\r\n", + sys_i >> 10); + exit(1); + } + } + + u3P.dir_c = dir_c; + u3P.eph_i = 0; + u3P.img_u.nam_c = "image"; + u3P.pag_w = u3C.wor_i >> u3a_page; + + // XX review dryrun requirements, enable or remove + // +#if 0 + if ( u3C.wag_w & u3o_dryrun ) { + return c3y; + } else +#endif + { + // Open the ephemeral space file. + // + if ( u3C.wag_w & u3o_swap ) { + if ( c3n == _ce_ephemeral_open(&u3P.eph_i) ) { + fprintf(stderr, "boot: failed to load ephemeral file\r\n"); + exit(1); + } + } + + // Open image files. + // + c3_c chk_c[8193]; + snprintf(chk_c, 8193, "%s/.urb/chk", u3P.dir_c); + + _ce_img_stat sat_e = _ce_image_open(&u3P.img_u, chk_c); + + if ( _ce_img_fail == sat_e ) { + fprintf(stderr, "boot: image failed\r\n"); + exit(1); + } + else { + u3_ce_patch* pat_u; + + /* Load any patch files; apply them to images. + */ + if ( 0 != (pat_u = _ce_patch_open()) ) { + _ce_patch_apply(pat_u); + u3_assert( c3y == _ce_image_sync(&u3P.img_u) ); + _ce_patch_free(pat_u); + _ce_patch_delete(); + } + else if ( _ce_img_size == sat_e ) { + fprintf(stderr, "boot: image failed (size)\r\n"); + exit(1); + } + + // detect snapshots from a larger loom + // + if ( (u3P.img_u.pgs_w + 1) >= u3P.pag_w ) { // XX? + fprintf(stderr, "boot: snapshot too big for loom\r\n"); + exit(1); + } + + // mark all pages dirty (pages in the snapshot will be marked clean) + // + u3e_foul(); + + /* Write image files to memory; reinstate protection. + */ + { + if ( u3C.wag_w & u3o_swap ) { + _ce_loom_mapf_ephemeral(); + } + + if ( u3C.wag_w & u3o_no_demand ) { + _ce_loom_blit(u3P.img_u.fid_i, u3P.img_u.pgs_w); + } + else { + _ce_loom_mapf(u3P.img_u.fid_i, u3P.img_u.pgs_w, 0); + } + + u3l_log("boot: protected loom"); + } + + /* If the images were empty, we are logically booting. + */ + if ( !u3P.img_u.pgs_w ) { + u3l_log("live: logical boot"); + nuu_o = c3y; + } + else if ( u3C.wag_w & u3o_no_demand ) { + u3a_print_memory(stderr, "live: loaded", _ce_len_words(u3P.img_u.pgs_w)); + } + else { + u3a_print_memory(stderr, "live: mapped", _ce_len_words(u3P.img_u.pgs_w)); + } + +#ifdef U3_GUARD_PAGE + u3_assert( !_ce_ward_post(u3P.img_u.pgs_w, u3P.pag_w) ); +#endif + } + } + + return nuu_o; +} + +/* u3e_stop(): gracefully stop the persistence system. +*/ +void +u3e_stop(void) +{ + if ( u3P.eph_i ) { + _ce_toss_pages(u3P.img_u.pgs_w, u3P.pag_w); + close(u3P.eph_i); + unlink(u3C.eph_c); + } + + close(u3P.img_u.fid_i); +} + +/* u3e_yolo(): disable dirty page tracking, read/write whole loom. +*/ +c3_o +u3e_yolo(void) +{ + // NB: u3e_save() will reinstate protection flags + // + if ( 0 != mprotect(_ce_ptr(0), + _ce_len(u3P.pag_w), + (PROT_READ | PROT_WRITE)) ) + { + // XX confirm recoverable errors + // + fprintf(stderr, "loom: yolo: %s\r\n", strerror(errno)); + return c3n; + } + + u3_assert( !_ce_ward_protect() ); + + return c3y; +} + +/* u3e_foul(): dirty all the pages of the loom. +*/ +void +u3e_foul(void) +{ + memset((void*)u3P.dit_w, 0xff, sizeof(u3P.dit_w)); +} + +/* u3e_init(): initialize guard page tracking, dirty loom +*/ +void +u3e_init(void) +{ + u3P.pag_w = u3C.wor_i >> u3a_page; + + u3P.img_u.fid_i = -1; + + u3e_foul(); + +#ifdef U3_GUARD_PAGE + u3_assert( !_ce_ward_post(0, u3P.pag_w) ); +#endif +} + +/* u3e_ward(): reposition guard page if needed. +*/ +void +u3e_ward(u3_post low_p, u3_post hig_p) +{ +#ifdef U3_GUARD_PAGE + c3_w nop_w = low_p >> u3a_page; + c3_w sop_w = hig_p >> u3a_page; + c3_w pag_w = u3P.gar_w; + + if ( !((pag_w > nop_w) && (pag_w < sop_w)) ) { + u3_assert( !_ce_ward_post(nop_w, sop_w) ); + u3_assert( !_ce_flaw_mprotect(pag_w) ); + u3_assert( u3P.dit_w[pag_w >> 5] & ((c3_w)1 << (pag_w & 31)) ); + } +#endif +} diff --git a/vere/pkg/noun/events.h b/vere/pkg/noun/events.h new file mode 100644 index 0000000..d9cdb50 --- /dev/null +++ b/vere/pkg/noun/events.h @@ -0,0 +1,131 @@ +/// @file + +#ifndef U3_EVENTS_H +#define U3_EVENTS_H + +#include "c3/c3.h" +#include "allocate.h" +#include "version.h" + + /** Data structures. + **/ + /* u3e_line: control line. + */ + typedef struct _u3e_line { + c3_w pag_w; + c3_w has_w; + } u3e_line; + + /* u3e_control: memory change, control file. + */ + typedef struct _u3e_control { + u3e_version ver_w; // version number + c3_w has_w; // control checksum + c3_w tot_w; // new page count + c3_w pgs_w; // number of changed pages + u3e_line mem_u[]; // per page + } u3e_control; + + /* u3_cs_patch: memory change, top level. + */ + typedef struct _u3_cs_patch { + c3_i ctl_i; + c3_i mem_i; + c3_w sip_w; + u3e_control* con_u; + } u3_ce_patch; + + /* u3e_image: memory segment, open file. + */ + typedef struct _u3e_image { + c3_c* nam_c; // segment name + c3_i fid_i; // open file, or 0 + c3_w pgs_w; // length in pages + } u3e_image; + + /* u3e_pool: entire memory system. + */ + typedef struct _u3e_pool { + c3_c* dir_c; // path to + c3_i eph_i; // ephemeral file descriptor + c3_w dit_w[u3a_pages >> 5]; // touched since last save + c3_w pag_w; // number of pages (<= u3a_pages) + c3_w gar_w; // guard page + u3e_image img_u; // image + } u3e_pool; + + /* u3e_flaw: loom fault result. + */ + typedef enum { + u3e_flaw_sham = 0, // bogus state + u3e_flaw_base = 1, // vm fail (mprotect) + u3e_flaw_meme = 2, // bail:meme + u3e_flaw_good = 3 // handled + } u3e_flaw; + + /** Globals. + **/ + /// Snapshotting system. + extern u3e_pool u3e_Pool; +# define u3P u3e_Pool + + /** Constants. + **/ + + /** Functions. + **/ + /* u3e_backup(): copy the snapshot from [pux_c] to [pax_c], + * overwriting optional. + */ + c3_o + u3e_backup(c3_c* pux_c, c3_c* pax_c, c3_o ovw_o); + + /* u3e_fault(): handle a memory fault. + */ + u3e_flaw + u3e_fault(u3_post low_p, u3_post hig_p, u3_post off_p); + + /* u3e_save(): update the checkpoint. + */ + void + u3e_save(u3_post low_p, u3_post hig_p); + + /* u3e_toss(): discard ephemeral pages. + */ + void + u3e_toss(u3_post low_p, u3_post hig_p); + + /* u3e_live(): start the persistence system. Return c3y if no image. + */ + c3_o + u3e_live(c3_o nuu_o, c3_c* dir_c); + + /* u3e_stop(): gracefully stop the persistence system. + */ + void + u3e_stop(void); + + /* u3e_yolo(): disable dirty page tracking, read/write whole loom. + */ + c3_o + u3e_yolo(void); + + /* u3e_foul(): dirty all the pages of the loom. + */ + void + u3e_foul(void); + + /* u3e_init(): initialize guard page tracking. + */ + void + u3e_init(void); + + /* u3e_ward(): reposition guard page if needed. + */ + void + u3e_ward(u3_post low_p, u3_post hig_p); + + c3_i + u3e_image_open_any(c3_c* nam_c, c3_c* dir_c, c3_z* len_z); + +#endif /* ifndef U3_EVENTS_H */ diff --git a/vere/pkg/noun/hashtable.c b/vere/pkg/noun/hashtable.c new file mode 100644 index 0000000..6b1fb39 --- /dev/null +++ b/vere/pkg/noun/hashtable.c @@ -0,0 +1,1408 @@ +/// @file + +#include "hashtable.h" + +#include "allocate.h" +#include "imprison.h" +#include "retrieve.h" +#include "xtract.h" + +/* CUT_END(): extract [b_w] low bits from [a_w] +*/ +#define CUT_END(a_w, b_w) ((a_w) & (((c3_w)1 << (b_w)) - 1)) + +/* BIT_SET(): [1] if bit [b_w] is set in [a_w] +*/ +#define BIT_SET(a_w, b_w) ((a_w) & ((c3_w)1 << (b_w))) + +static u3_weak +_ch_trim_slot(u3h_root* har_u, u3h_slot *sot_w, c3_w lef_w, c3_w rem_w); + +static u3_weak +_ch_trim_root(u3h_root* har_u); + +c3_w +_ch_skip_slot(c3_w mug_w, c3_w lef_w); + +/* u3h_new_cache(): create hashtable with bounded size. +*/ +u3p(u3h_root) +u3h_new_cache(c3_w max_w) +{ + u3h_root* har_u = u3a_walloc(c3_wiseof(u3h_root)); + u3p(u3h_root) har_p = u3of(u3h_root, har_u); + c3_w i_w; + + har_u->max_w = max_w; + har_u->use_w = 0; + har_u->arm_u.mug_w = 0; + har_u->arm_u.inx_w = 0; + + for ( i_w = 0; i_w < 64; i_w++ ) { + har_u->sot_w[i_w] = 0; + } + return har_p; +} + +/* u3h_new(): create hashtable. +*/ +u3p(u3h_root) +u3h_new(void) +{ + return u3h_new_cache(0); +} + +/* _ch_popcount(): number of bits set in word. A standard intrinsic. +*/ +static c3_w +_ch_popcount(c3_w num_w) +{ + return c3_pc_w(num_w); +} + +/* _ch_buck_new(): create new bucket. +*/ +static u3h_buck* +_ch_buck_new(c3_w len_w) +{ + u3h_buck* hab_u = u3a_walloc(c3_wiseof(u3h_buck) + + (len_w * c3_wiseof(u3h_slot))); + hab_u->len_w = len_w; + return hab_u; +} + +/* _ch_node_new(): create new node. +*/ +static u3h_node* +_ch_node_new(c3_w len_w) +{ + u3h_node* han_u = u3a_walloc(c3_wiseof(u3h_node) + + (len_w * c3_wiseof(u3h_slot))); + han_u->map_w = 0; + return han_u; +} + +static void _ch_slot_put(u3h_slot*, u3_noun, c3_w, c3_w, c3_w*); + +/* _ch_node_add(): add to node. +*/ +static u3h_node* +_ch_node_add(u3h_node* han_u, c3_w lef_w, c3_w rem_w, u3_noun kev, c3_w *use_w) +{ + c3_w bit_w, inx_w, map_w, i_w; + + lef_w -= 5; + bit_w = (rem_w >> lef_w); + rem_w = CUT_END(rem_w, lef_w); + map_w = han_u->map_w; + inx_w = _ch_popcount(CUT_END(map_w, bit_w)); + + if ( BIT_SET(map_w, bit_w) ) { + _ch_slot_put(&(han_u->sot_w[inx_w]), kev, lef_w, rem_w, use_w); + return han_u; + } + else { + // nothing was at this slot. + // Optimize: use u3a_wealloc. + // + c3_w len_w = _ch_popcount(map_w); + u3h_node* nah_u = _ch_node_new(1 + len_w); + nah_u->map_w = han_u->map_w | ((c3_w)1 << bit_w); + + for ( i_w = 0; i_w < inx_w; i_w++ ) { + nah_u->sot_w[i_w] = han_u->sot_w[i_w]; + } + nah_u->sot_w[inx_w] = u3h_noun_be_warm(u3h_noun_to_slot(kev)); + for ( i_w = inx_w; i_w < len_w; i_w++ ) { + nah_u->sot_w[i_w + 1] = han_u->sot_w[i_w]; + } + + u3a_wfree(han_u); + *use_w += 1; + return nah_u; + } +} + +/* ch_buck_add(): add to bucket. +*/ +static u3h_buck* +_ch_buck_add(u3h_buck* hab_u, u3_noun kev, c3_w *use_w) +{ + c3_w i_w; + + // if our key is equal to any of the existing keys in the bucket, + // then replace that key-value pair with kev. + // + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + u3_noun kov = u3h_slot_to_noun(hab_u->sot_w[i_w]); + if ( c3y == u3r_sing(u3h(kev), u3h(kov)) ) { + hab_u->sot_w[i_w] = u3h_noun_to_slot(kev); + u3z(kov); + return hab_u; + } + } + + // create mutant bucket with added key-value pair. + // Optimize: use u3a_wealloc(). + { + u3h_buck* bah_u = _ch_buck_new(1 + hab_u->len_w); + bah_u->sot_w[0] = u3h_noun_be_warm(u3h_noun_to_slot(kev)); + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + bah_u->sot_w[i_w + 1] = hab_u->sot_w[i_w]; + } + + u3a_wfree(hab_u); + *use_w += 1; + return bah_u; + } +} + +/* _ch_some_add(): add to node or bucket. +*/ +static void* +_ch_some_add(void* han_v, c3_w lef_w, c3_w rem_w, u3_noun kev, c3_w *use_w) +{ + if ( 0 == lef_w ) { + return _ch_buck_add((u3h_buck*)han_v, kev, use_w); + } + else return _ch_node_add((u3h_node*)han_v, lef_w, rem_w, kev, use_w); +} + +/* _ch_two(): create a new node with two leaves underneath +*/ +u3h_slot +_ch_two(u3h_slot had_w, u3h_slot add_w, c3_w lef_w, c3_w ham_w, c3_w mad_w) +{ + void* ret; + + if ( 0 == lef_w ) { + u3h_buck* hab_u = _ch_buck_new(2); + ret = hab_u; + hab_u->sot_w[0] = had_w; + hab_u->sot_w[1] = add_w; + } + else { + c3_w hop_w, tad_w; + lef_w -= 5; + hop_w = ham_w >> lef_w; + tad_w = mad_w >> lef_w; + if ( hop_w == tad_w ) { + // fragments collide: store in a child node. + u3h_node* han_u = _ch_node_new(1); + ret = han_u; + han_u->map_w = (c3_w)1 << hop_w; + ham_w = CUT_END(ham_w, lef_w); + mad_w = CUT_END(mad_w, lef_w); + han_u->sot_w[0] = _ch_two(had_w, add_w, lef_w, ham_w, mad_w); + } + else { + u3h_node* han_u = _ch_node_new(2); + ret = han_u; + han_u->map_w = ((c3_w)1 << hop_w) | ((c3_w)1 << tad_w); + // smaller mug fragments go in earlier slots + if ( hop_w < tad_w ) { + han_u->sot_w[0] = had_w; + han_u->sot_w[1] = add_w; + } + else { + han_u->sot_w[0] = add_w; + han_u->sot_w[1] = had_w; + } + } + } + + return u3h_node_to_slot(ret); +} + +/* _ch_slot_put(): store a key-value pair in a non-null slot +*/ +static void +_ch_slot_put(u3h_slot* sot_w, u3_noun kev, c3_w lef_w, c3_w rem_w, c3_w* use_w) +{ + if ( c3n == u3h_slot_is_noun(*sot_w) ) { + void* hav_v = _ch_some_add(u3h_slot_to_node(*sot_w), + lef_w, + rem_w, + kev, + use_w); + + u3_assert( c3y == u3h_slot_is_node(*sot_w) ); + *sot_w = u3h_node_to_slot(hav_v); + } + else { + u3_noun kov = u3h_slot_to_noun(*sot_w); + u3h_slot add_w = u3h_noun_be_warm(u3h_noun_to_slot(kev)); + if ( c3y == u3r_sing(u3h(kev), u3h(kov)) ) { + // replace old value + u3z(kov); + *sot_w = add_w; + } + else { + c3_w ham_w = CUT_END(u3r_mug(u3h(kov)), lef_w); + *sot_w = _ch_two(*sot_w, add_w, lef_w, ham_w, rem_w); + *use_w += 1; + } + } +} + +/* u3h_put_get(): insert in caching hashtable, returning deleted key-value pair +** +** `key` is RETAINED; `val` is transferred. +*/ +u3_weak +u3h_put_get(u3p(u3h_root) har_p, u3_noun key, u3_noun val) +{ + u3h_root* har_u = u3to(u3h_root, har_p); + u3_noun kev = u3nc(u3k(key), val); + c3_w mug_w = u3r_mug(key); + c3_w inx_w = (mug_w >> 25); // 6 bits + c3_w rem_w = CUT_END(mug_w, 25); + u3h_slot* sot_w = &(har_u->sot_w[inx_w]); + + if ( c3y == u3h_slot_is_null(*sot_w) ) { + *sot_w = u3h_noun_be_warm(u3h_noun_to_slot(kev)); + har_u->use_w += 1; + } + else { + _ch_slot_put(sot_w, kev, 25, rem_w, &(har_u->use_w)); + } + + { + u3_weak ret = u3_none; + + if ( har_u->max_w && (har_u->use_w > har_u->max_w) ) { + do { + ret = _ch_trim_root(har_u); + } + while ( u3_none == ret ); + har_u->use_w -= 1; + } + + return ret; + } +} + +/* u3h_put(): insert in hashtable. +** +** `key` is RETAINED; `val` is transferred. +*/ +void +u3h_put(u3p(u3h_root) har_p, u3_noun key, u3_noun val) +{ + u3_weak del = u3h_put_get(har_p, key, val); + if ( u3_none != del ) { + u3z(del); + } +} + +/* _ch_buck_del(): delete from bucket +*/ +static c3_o +_ch_buck_del(u3h_slot* sot_w, u3_noun key) +{ + u3h_buck* hab_u = u3h_slot_to_node(*sot_w); + c3_w fin_w = hab_u->len_w; + c3_w i_w; + // + // find index of key to be deleted + // + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + u3_noun kov = u3h_slot_to_noun(hab_u->sot_w[i_w]); + if ( c3y == u3r_sing(key, u3h(kov)) ) { + fin_w = i_w; + u3z(kov); + break; + } + } + + // no key found, no-op + if ( fin_w == hab_u->len_w ) { + return c3n; + } + + { + hab_u->len_w--; + // u3_assert(c3y == u3h_slot_is_noun(hab_u->sot_w[fin_w])); + for ( i_w = fin_w; i_w < hab_u->len_w; i_w++ ) { + hab_u->sot_w[i_w] = hab_u->sot_w[i_w + 1]; + } + + return c3y; + } +} + +static c3_o _ch_some_del(u3h_slot*, u3_noun, c3_w, c3_w); + +/* _ch_slot_del(): delete from slot +*/ +static c3_o +_ch_slot_del(u3h_slot* sot_w, u3_noun key, c3_w lef_w, c3_w rem_w) +{ + if ( c3y == u3h_slot_is_noun(*sot_w) ) { + u3_noun kev = u3h_slot_to_noun(*sot_w); + *sot_w = 0; + u3z(kev); + return c3y; + } + else { + return _ch_some_del(sot_w, key, lef_w, rem_w); + } +} + +/* _ch_slot_del(): delete from node +*/ +static c3_o +_ch_node_del(u3h_slot* sot_w, u3_noun key, c3_w lef_w, c3_w rem_w) +{ + u3h_node* han_u = (u3h_node*) u3h_slot_to_node(*sot_w); + u3h_slot* tos_w; + + c3_w bit_w, inx_w, map_w, i_w; + + lef_w -= 5; + bit_w = (rem_w >> lef_w); + rem_w = CUT_END(rem_w, lef_w); + map_w = han_u->map_w; + inx_w = _ch_popcount(CUT_END(map_w, bit_w)); + + tos_w = &(han_u->sot_w[inx_w]); + + // nothing at slot, no-op + if ( !BIT_SET(map_w, bit_w) ) { + return c3n; + } + + if ( c3n == _ch_slot_del(tos_w, key, lef_w, rem_w) ) { + // nothing deleted + return c3n; + } + else if ( 0 != *tos_w ) { + // something deleted, but slot still has value + return c3y; + } + else { + // shrink! + c3_w i_w, ken_w, len_w = _ch_popcount(map_w); + u3h_slot kes_w; + + if ( 2 == len_w && ((ken_w = (0 == inx_w) ? 1 : 0), + (kes_w = han_u->sot_w[ken_w]), + (c3y == u3h_slot_is_noun(kes_w))) ) + { + // only one side left, and the other is a noun. debucketize. + *sot_w = kes_w; + u3a_wfree(han_u); + } + else { + // shrink node in place; don't reallocate, we could be low on memory + // + han_u->map_w &= ~(1 << bit_w); + --len_w; + + for ( i_w = inx_w; i_w < len_w; i_w++ ) { + han_u->sot_w[i_w] = han_u->sot_w[i_w + 1]; + } + } + return c3y; + } +} + +/* _ch_some_del(): delete from node or buck +*/ +static c3_o +_ch_some_del(u3h_slot* sot_w, u3_noun key, c3_w lef_w, c3_w rem_w) +{ + if ( 0 == lef_w ) { + return _ch_buck_del(sot_w, key); + } + + return _ch_node_del(sot_w, key, lef_w, rem_w); +} + +/* u3h_del(); delete from hashtable. +*/ +void +u3h_del(u3p(u3h_root) har_p, u3_noun key) +{ + u3h_root* har_u = u3to(u3h_root, har_p); + c3_w mug_w = u3r_mug(key); + c3_w inx_w = (mug_w >> 25); + c3_w rem_w = CUT_END(mug_w, 25); + u3h_slot* sot_w = &(har_u->sot_w[inx_w]); + + if ( (c3n == u3h_slot_is_null(*sot_w)) + && (c3y == _ch_slot_del(sot_w, key, 25, rem_w)) ) + { + har_u->use_w--; + } +} + +/* _ch_uni_with(): key/value callback, put into [*wit] +*/ +static void +_ch_uni_with(u3_noun kev, void* wit) +{ + u3p(u3h_root) har_p = *(u3p(u3h_root)*)wit; + u3_noun key, val; + u3x_cell(kev, &key, &val); + + u3h_put(har_p, key, u3k(val)); +} + +/* u3h_uni(): unify hashtables, copying [rah_p] into [har_p] +*/ +void +u3h_uni(u3p(u3h_root) har_p, u3p(u3h_root) rah_p) +{ + u3h_walk_with(rah_p, _ch_uni_with, &har_p); +} + +/* _ch_trim_node(): trim one entry from a node slot or its children +*/ +static u3_weak +_ch_trim_node(u3h_root* har_u, u3h_slot* sot_w, c3_w lef_w, c3_w rem_w) +{ + c3_w bit_w, map_w, inx_w; + u3h_slot* tos_w; + u3h_node* han_u = (u3h_node*) u3h_slot_to_node(*sot_w); + + lef_w -= 5; + bit_w = (rem_w >> lef_w); + map_w = han_u->map_w; + + if ( !BIT_SET(map_w, bit_w) ) { + har_u->arm_u.mug_w = _ch_skip_slot(har_u->arm_u.mug_w, lef_w); + return c3n; + } + + rem_w = CUT_END(rem_w, lef_w); + inx_w = _ch_popcount(CUT_END(map_w, bit_w)); + tos_w = &(han_u->sot_w[inx_w]); + + u3_weak ret = _ch_trim_slot(har_u, tos_w, lef_w, rem_w); + if ( (u3_none != ret) && (0 == *tos_w) ) { + // shrink! + c3_w i_w, ken_w, len_w = _ch_popcount(map_w); + u3h_slot kes_w; + + if ( 2 == len_w && ((ken_w = (0 == inx_w) ? 1 : 0), + (kes_w = han_u->sot_w[ken_w]), + (c3y == u3h_slot_is_noun(kes_w))) ) { + // only one side left, and the other is a noun. debucketize. + *sot_w = kes_w; + u3a_wfree(han_u); + } + else { + // shrink node in place; don't reallocate, we could be low on memory + // + han_u->map_w &= ~(1 << bit_w); + --len_w; + + for ( i_w = inx_w; i_w < len_w; i_w++ ) { + han_u->sot_w[i_w] = han_u->sot_w[i_w + 1]; + } + } + } + return ret; +} + +/* _ch_trim_kev(): trim a single entry slot +*/ +static u3_weak +_ch_trim_kev(u3h_slot *sot_w) +{ + if ( _(u3h_slot_is_warm(*sot_w)) ) { + *sot_w = u3h_noun_be_cold(*sot_w); + return u3_none; + } + else { + u3_noun kev = u3h_slot_to_noun(*sot_w); + *sot_w = 0; + return kev; + } +} + +/* _ch_trim_node(): trim one entry from a bucket slot +*/ +static u3_weak +_ch_trim_buck(u3h_root* har_u, u3h_slot* sot_w) +{ + c3_w i_w, len_w; + u3h_buck* hab_u = u3h_slot_to_node(*sot_w); + + for ( len_w = hab_u->len_w; + har_u->arm_u.inx_w < len_w; + har_u->arm_u.inx_w += 1 ) + { + u3_weak ret = _ch_trim_kev(&(hab_u->sot_w[har_u->arm_u.inx_w])); + if ( u3_none != ret ) { + if ( 2 == len_w ) { + // 2 things in bucket: debucketize to key-value pair, the next + // run will point at this pair (same mug_w, no longer in bucket) + *sot_w = hab_u->sot_w[ (0 == har_u->arm_u.inx_w) ? 1 : 0 ]; + u3a_wfree(hab_u); + har_u->arm_u.inx_w = 0; + } + else { + // shrink bucket in place; don't reallocate, we could be low on memory + hab_u->len_w = --len_w; + + for ( i_w = har_u->arm_u.inx_w; i_w < len_w; ++i_w ) { + hab_u->sot_w[i_w] = hab_u->sot_w[i_w + 1]; + } + // leave the arm pointing at the next index in the bucket + ++(har_u->arm_u.inx_w); + } + return ret; + } + } + + har_u->arm_u.mug_w = (har_u->arm_u.mug_w + 1) & 0x7FFFFFFF; // modulo 2^31 + har_u->arm_u.inx_w = 0; + return u3_none; +} + +/* _ch_trim_some(): trim one entry from a bucket or node slot +*/ +static u3_weak +_ch_trim_some(u3h_root* har_u, u3h_slot* sot_w, c3_w lef_w, c3_w rem_w) +{ + if ( 0 == lef_w ) { + return _ch_trim_buck(har_u, sot_w); + } + else { + return _ch_trim_node(har_u, sot_w, lef_w, rem_w); + } +} + +/* _ch_skip_slot(): increment arm over hash prefix. +*/ +c3_w +_ch_skip_slot(c3_w mug_w, c3_w lef_w) +{ + c3_w hig_w = mug_w >> lef_w; + c3_w new_w = CUT_END(hig_w + 1, (31 - lef_w)); // modulo 2^(31 - lef_w) + return new_w << lef_w; +} + +/* _ch_trim_slot(): trim one entry from a non-bucket slot +*/ +static u3_weak +_ch_trim_slot(u3h_root* har_u, u3h_slot *sot_w, c3_w lef_w, c3_w rem_w) +{ + if ( c3y == u3h_slot_is_noun(*sot_w) ) { + har_u->arm_u.mug_w = _ch_skip_slot(har_u->arm_u.mug_w, lef_w); + return _ch_trim_kev(sot_w); + } + else { + return _ch_trim_some(har_u, sot_w, lef_w, rem_w); + } +} + +/* _ch_trim_root(): trim one entry from a hashtable +*/ +static u3_weak +_ch_trim_root(u3h_root* har_u) +{ + c3_w mug_w = har_u->arm_u.mug_w; + c3_w inx_w = mug_w >> 25; // 6 bits + u3h_slot* sot_w = &(har_u->sot_w[inx_w]); + + if ( c3y == u3h_slot_is_null(*sot_w) ) { + har_u->arm_u.mug_w = _ch_skip_slot(har_u->arm_u.mug_w, 25); + return u3_none; + } + + return _ch_trim_slot(har_u, sot_w, 25, CUT_END(mug_w, 25)); +} + +/* u3h_trim_to(): trim to n key-value pairs +*/ +void +u3h_trim_to(u3p(u3h_root) har_p, c3_w n_w) +{ + u3h_trim_with(har_p, n_w, u3a_lose); +} + +/* u3h_trim_to(): trim to n key-value pairs +*/ +void +u3h_trim_with(u3p(u3h_root) har_p, c3_w n_w, void (*del_cb)(u3_noun)) +{ + u3h_root* har_u = u3to(u3h_root, har_p); + + while ( har_u->use_w > n_w ) { + u3_weak del = _ch_trim_root(har_u); + if ( u3_none != del ) { + har_u->use_w -= 1; + del_cb(del); + } + } +} + +/* _ch_buck_hum(): read in bucket. +*/ +static c3_o +_ch_buck_hum(u3h_buck* hab_u, c3_w mug_w) +{ + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + if ( mug_w == u3r_mug(u3h(u3h_slot_to_noun(hab_u->sot_w[i_w]))) ) { + return c3y; + } + } + return c3n; +} + +/* _ch_node_hum(): read in node. +*/ +static c3_o +_ch_node_hum(u3h_node* han_u, c3_w lef_w, c3_w rem_w, c3_w mug_w) +{ + c3_w bit_w, map_w; + + lef_w -= 5; + bit_w = (rem_w >> lef_w); + rem_w = CUT_END(rem_w, lef_w); + map_w = han_u->map_w; + + if ( !BIT_SET(map_w, bit_w) ) { + return c3n; + } + else { + c3_w inx_w = _ch_popcount(CUT_END(map_w, bit_w)); + c3_w sot_w = han_u->sot_w[inx_w]; + + if ( _(u3h_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_slot_to_noun(sot_w); + + if ( mug_w == u3r_mug(u3h(kev)) ) { + return c3y; + } + else { + return c3n; + } + } + else { + void* hav_v = u3h_slot_to_node(sot_w); + + if ( 0 == lef_w ) { + return _ch_buck_hum(hav_v, mug_w); + } + else return _ch_node_hum(hav_v, lef_w, rem_w, mug_w); + } + } +} + +/* u3h_hum(): check presence in hashtable. +** +** `key` is RETAINED. +*/ +c3_o +u3h_hum(u3p(u3h_root) har_p, c3_w mug_w) +{ + u3h_root* har_u = u3to(u3h_root, har_p); + c3_w inx_w = (mug_w >> 25); + c3_w rem_w = CUT_END(mug_w, 25); + c3_w sot_w = har_u->sot_w[inx_w]; + + if ( _(u3h_slot_is_null(sot_w)) ) { + return c3n; + } + else if ( _(u3h_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_slot_to_noun(sot_w); + + if ( mug_w == u3r_mug(u3h(kev)) ) { + return c3y; + } + else { + return c3n; + } + } + else { + u3h_node* han_u = u3h_slot_to_node(sot_w); + + return _ch_node_hum(han_u, 25, rem_w, mug_w); + } +} + +/* _ch_buck_git(): read in bucket. +*/ +static u3_weak +_ch_buck_git(u3h_buck* hab_u, u3_noun key) +{ + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + u3_noun kev = u3h_slot_to_noun(hab_u->sot_w[i_w]); + if ( _(u3r_sing(key, u3h(kev))) ) { + return u3t(kev); + } + } + return u3_none; +} + +/* _ch_node_git(): read in node. +*/ +static u3_weak +_ch_node_git(u3h_node* han_u, c3_w lef_w, c3_w rem_w, u3_noun key) +{ + c3_w bit_w, map_w; + + lef_w -= 5; + bit_w = (rem_w >> lef_w); + rem_w = CUT_END(rem_w, lef_w); + map_w = han_u->map_w; + + if ( !BIT_SET(map_w, bit_w) ) { + return u3_none; + } + else { + c3_w inx_w = _ch_popcount(CUT_END(map_w, bit_w)); + c3_w sot_w = han_u->sot_w[inx_w]; + + if ( _(u3h_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_slot_to_noun(sot_w); + + if ( _(u3r_sing(key, u3h(kev))) ) { + return u3t(kev); + } + else { + return u3_none; + } + } + else { + void* hav_v = u3h_slot_to_node(sot_w); + + if ( 0 == lef_w ) { + return _ch_buck_git(hav_v, key); + } + else return _ch_node_git(hav_v, lef_w, rem_w, key); + } + } +} + +/* u3h_git(): read from hashtable. +** +** `key` is RETAINED; result is RETAINED. +*/ +u3_weak +u3h_git(u3p(u3h_root) har_p, u3_noun key) +{ + u3h_root* har_u = u3to(u3h_root, har_p); + c3_w mug_w = u3r_mug(key); + c3_w inx_w = (mug_w >> 25); + c3_w rem_w = CUT_END(mug_w, 25); + c3_w sot_w = har_u->sot_w[inx_w]; + + if ( _(u3h_slot_is_null(sot_w)) ) { + return u3_none; + } + else if ( _(u3h_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_slot_to_noun(sot_w); + + if ( _(u3r_sing(key, u3h(kev))) ) { + har_u->sot_w[inx_w] = u3h_noun_be_warm(sot_w); + return u3t(kev); + } + else { + return u3_none; + } + } + else { + u3h_node* han_u = u3h_slot_to_node(sot_w); + + return _ch_node_git(han_u, 25, rem_w, key); + } +} + +/* u3h_get(): read from hashtable, incrementing refcount. +** +** `key` is RETAINED; result is PRODUCED. +*/ +u3_weak +u3h_get(u3p(u3h_root) har_p, u3_noun key) +{ + u3_noun pro = u3h_git(har_p, key); + + if ( u3_none != pro ) { + u3k(pro); + } + return pro; +} + +/* _ch_free_buck(): free bucket +*/ +static void +_ch_free_buck(u3h_buck* hab_u) +{ + //fprintf(stderr, "free buck\r\n"); + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + u3z(u3h_slot_to_noun(hab_u->sot_w[i_w])); + } + u3a_wfree(hab_u); +} + +/* _ch_free_node(): free node. +*/ +static void +_ch_free_node(u3h_node* han_u, c3_w lef_w, c3_o pin_o) +{ + c3_w len_w = _ch_popcount(han_u->map_w); + c3_w i_w; + + lef_w -= 5; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w sot_w = han_u->sot_w[i_w]; + if ( _(u3h_slot_is_null(sot_w))) { + } else if ( _(u3h_slot_is_noun(sot_w)) ) { + u3z(u3h_slot_to_noun(sot_w)); + } else { + void* hav_v = u3h_slot_to_node(sot_w); + + if ( 0 == lef_w ) { + _ch_free_buck(hav_v); + } else { + _ch_free_node(hav_v, lef_w, pin_o); + } + } + } + u3a_wfree(han_u); +} + +/* u3h_free(): free hashtable. +*/ +void +u3h_free(u3p(u3h_root) har_p) +{ + u3h_root* har_u = u3to(u3h_root, har_p); + c3_w i_w; + + for ( i_w = 0; i_w < 64; i_w++ ) { + c3_w sot_w = har_u->sot_w[i_w]; + + if ( _(u3h_slot_is_noun(sot_w)) ) { + u3z(u3h_slot_to_noun(sot_w)); + } + else if ( _(u3h_slot_is_node(sot_w)) ) { + u3h_node* han_u = u3h_slot_to_node(sot_w); + + _ch_free_node(han_u, 25, i_w == 57); + } + } + u3a_wfree(har_u); +} + +/* _ch_walk_buck(): walk bucket for gc. +*/ +static void +_ch_walk_buck(u3h_buck* hab_u, void (*fun_f)(u3_noun, void*), void* wit) +{ + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + fun_f(u3h_slot_to_noun(hab_u->sot_w[i_w]), wit); + } +} + +/* _ch_walk_node(): walk node for gc. +*/ +static void +_ch_walk_node(u3h_node* han_u, c3_w lef_w, void (*fun_f)(u3_noun, void*), void* wit) +{ + c3_w len_w = _ch_popcount(han_u->map_w); + c3_w i_w; + + lef_w -= 5; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w sot_w = han_u->sot_w[i_w]; + + if ( _(u3h_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_slot_to_noun(sot_w); + + fun_f(kev, wit); + } + else { + void* hav_v = u3h_slot_to_node(sot_w); + + if ( 0 == lef_w ) { + _ch_walk_buck(hav_v, fun_f, wit); + } else { + _ch_walk_node(hav_v, lef_w, fun_f, wit); + } + } + } +} + +/* u3h_walk_with(): traverse hashtable with key, value fn and data + * argument; RETAINS. +*/ +void +u3h_walk_with(u3p(u3h_root) har_p, + void (*fun_f)(u3_noun, void*), + void* wit) +{ + u3h_root* har_u = u3to(u3h_root, har_p); + c3_w i_w; + + for ( i_w = 0; i_w < 64; i_w++ ) { + c3_w sot_w = har_u->sot_w[i_w]; + + if ( _(u3h_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_slot_to_noun(sot_w); + + fun_f(kev, wit); + } + else if ( _(u3h_slot_is_node(sot_w)) ) { + u3h_node* han_u = u3h_slot_to_node(sot_w); + + _ch_walk_node(han_u, 25, fun_f, wit); + } + } +} + +/* _ch_walk_plain(): use plain u3_noun fun_f for each node + */ +static void +_ch_walk_plain(u3_noun kev, void* wit) +{ + void (*fun_f)(u3_noun) = (void (*)(u3_noun))wit; + fun_f(kev); +} + +/* u3h_walk(): u3h_walk_with, but with no data argument +*/ +void +u3h_walk(u3p(u3h_root) har_p, void (*fun_f)(u3_noun)) +{ + u3h_walk_with(har_p, _ch_walk_plain, (void *)fun_f); +} + +/* _ch_take_noun(): take key and call [fun_f] on val. +*/ +static u3h_slot +_ch_take_noun(u3h_slot sot_w, u3_funk fun_f) +{ + u3_noun kov = u3h_slot_to_noun(sot_w); + u3_noun kev = u3nc(u3a_take(u3h(kov)), + fun_f(u3t(kov))); + + return u3h_noun_to_slot(kev); +} + +/* _ch_take_buck(): take bucket and contents +*/ +static u3h_slot +_ch_take_buck(u3h_slot sot_w, u3_funk fun_f) +{ + u3h_buck* hab_u = u3h_slot_to_node(sot_w); + u3h_buck* bah_u = _ch_buck_new(hab_u->len_w); + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + bah_u->sot_w[i_w] = _ch_take_noun(hab_u->sot_w[i_w], fun_f); + } + + return u3h_node_to_slot(bah_u); +} + +/* _ch_take_node(): take node and contents +*/ +static u3h_slot +_ch_take_node(u3h_slot sot_w, c3_w lef_w, u3_funk fun_f) +{ + u3h_node* han_u = u3h_slot_to_node(sot_w); + c3_w len_w = _ch_popcount(han_u->map_w); + u3h_node* nah_u = _ch_node_new(len_w); + c3_w i_w; + + nah_u->map_w = han_u->map_w; + lef_w -= 5; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w tos_w = han_u->sot_w[i_w]; + nah_u->sot_w[i_w] = ( c3y == u3h_slot_is_noun(tos_w) ) + ? _ch_take_noun(tos_w, fun_f) + : ( 0 == lef_w ) + ? _ch_take_buck(tos_w, fun_f) + : _ch_take_node(tos_w, lef_w, fun_f); + } + + return u3h_node_to_slot(nah_u); +} + +/* u3h_take_with(): gain hashtable, copying junior keys +** and calling [fun_f] on values +*/ +u3p(u3h_root) +u3h_take_with(u3p(u3h_root) har_p, u3_funk fun_f) +{ + u3h_root* har_u = u3to(u3h_root, har_p); + u3p(u3h_root) rah_p = u3h_new_cache(har_u->max_w); + u3h_root* rah_u = u3to(u3h_root, rah_p); + c3_w sot_w, i_w; + + rah_u->use_w = har_u->use_w; + rah_u->arm_u = har_u->arm_u; + + for ( i_w = 0; i_w < 64; i_w++ ) { + sot_w = har_u->sot_w[i_w]; + if ( c3n == u3h_slot_is_null(sot_w) ) { + rah_u->sot_w[i_w] = ( c3y == u3h_slot_is_noun(sot_w) ) + ? _ch_take_noun(sot_w, fun_f) + : _ch_take_node(sot_w, 25, fun_f); + } + } + + return rah_p; +} + +/* u3h_take(): gain hashtable, copying junior nouns +*/ +u3p(u3h_root) +u3h_take(u3p(u3h_root) har_p) +{ + return u3h_take_with(har_p, u3a_take); +} + +/* _ch_mark_buck(): mark bucket for gc. +*/ +c3_w +_ch_mark_buck(u3h_buck* hab_u) +{ + c3_w tot_w = 0; + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + tot_w += u3a_mark_noun(u3h_slot_to_noun(hab_u->sot_w[i_w])); + } + tot_w += u3a_mark_ptr(hab_u); + + return tot_w; +} + +/* _ch_mark_node(): mark node for gc. +*/ +c3_w +_ch_mark_node(u3h_node* han_u, c3_w lef_w) +{ + c3_w tot_w = 0; + c3_w len_w = _ch_popcount(han_u->map_w); + c3_w i_w; + + lef_w -= 5; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w sot_w = han_u->sot_w[i_w]; + + if ( _(u3h_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_slot_to_noun(sot_w); + + tot_w += u3a_mark_noun(kev); + } + else { + void* hav_v = u3h_slot_to_node(sot_w); + + if ( 0 == lef_w ) { + tot_w += _ch_mark_buck(hav_v); + } else { + tot_w += _ch_mark_node(hav_v, lef_w); + } + } + } + + tot_w += u3a_mark_ptr(han_u); + + return tot_w; +} + +/* u3h_mark(): mark hashtable for gc. +*/ +c3_w +u3h_mark(u3p(u3h_root) har_p) +{ + c3_w tot_w = 0; + u3h_root* har_u = u3to(u3h_root, har_p); + c3_w i_w; + + for ( i_w = 0; i_w < 64; i_w++ ) { + c3_w sot_w = har_u->sot_w[i_w]; + + if ( _(u3h_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_slot_to_noun(sot_w); + + tot_w += u3a_mark_noun(kev); + } + else if ( _(u3h_slot_is_node(sot_w)) ) { + u3h_node* han_u = u3h_slot_to_node(sot_w); + + tot_w += _ch_mark_node(han_u, 25); + } + } + + tot_w += u3a_mark_ptr(har_u); + + return tot_w; +} + +static void +_ch_relocate_noun(u3h_slot *sot_w) +{ + u3_noun kev = u3h_slot_to_noun(*sot_w); + u3a_relocate_noun(&kev); + *sot_w = u3h_noun_to_slot(kev); +} + +static void +_ch_relocate_buck(u3h_slot *sot_w) +{ + u3h_buck *hab_u = u3h_slot_to_node(*sot_w); + u3_post new_p, sot_p = u3a_outa(hab_u); + c3_t fir_t; + + new_p = u3a_mark_relocate_post(sot_p, &fir_t); + *sot_w = u3h_node_to_slot(u3a_into(new_p)); + + if ( !fir_t ) return; + + for ( c3_w i_w = 0; i_w < hab_u->len_w; i_w++ ) { + _ch_relocate_noun(&(hab_u->sot_w[i_w])); + } +} + +static void +_ch_relocate_slot(u3h_slot *sot_w, c3_w lef_w); + +static void +_ch_relocate_node(u3h_slot *sot_w, c3_w lef_w) +{ + u3h_node* han_u = u3h_slot_to_node(*sot_w); + u3_post new_p, sot_p = u3a_outa(han_u); + c3_w len_w; + c3_t fir_t; + + new_p = u3a_mark_relocate_post(sot_p, &fir_t); + *sot_w = u3h_node_to_slot(u3a_into(new_p)); + + if ( !fir_t ) return; + + len_w = _ch_popcount(han_u->map_w); + lef_w -= 5; + + for ( c3_w i_w = 0; i_w < len_w; i_w++ ) { + _ch_relocate_slot(&(han_u->sot_w[i_w]), lef_w); + } +} + +static void +_ch_relocate_slot(u3h_slot *sot_w, c3_w lef_w) +{ + if ( c3y == u3h_slot_is_noun(*sot_w) ) { + _ch_relocate_noun(sot_w); + } + else if ( !lef_w ) { + _ch_relocate_buck(sot_w); + } + else { + _ch_relocate_node(sot_w, lef_w); + } +} + +/* u3h_relocate(): relocate hashtable for compaction. +*/ +void +u3h_relocate(u3p(u3h_root) *har_p) +{ + u3_post new_p, old_p = *har_p; + u3h_root* har_u = u3to(u3h_root, old_p); + c3_w sot_w, i_w; + c3_t fir_t; + + new_p = u3a_mark_relocate_post(old_p, &fir_t); + *har_p = new_p; + + if ( !fir_t ) return; + + for ( i_w = 0; i_w < 64; i_w++ ) { + sot_w = har_u->sot_w[i_w]; + + if ( c3n == u3h_slot_is_null(sot_w) ) { + _ch_relocate_slot(&(har_u->sot_w[i_w]), 25); + } + } +} + +/* _ch_count_buck(): count bucket for gc. +*/ +c3_w +_ch_count_buck(u3h_buck* hab_u) +{ + c3_w tot_w = 0; + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + tot_w += u3a_count_noun(u3h_slot_to_noun(hab_u->sot_w[i_w])); + } + tot_w += u3a_count_ptr(hab_u); + + return tot_w; +} + +/* _ch_count_node(): count node for gc. +*/ +c3_w +_ch_count_node(u3h_node* han_u, c3_w lef_w) +{ + c3_w tot_w = 0; + c3_w len_w = _ch_popcount(han_u->map_w); + c3_w i_w; + + lef_w -= 5; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w sot_w = han_u->sot_w[i_w]; + + if ( _(u3h_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_slot_to_noun(sot_w); + + tot_w += u3a_count_noun(kev); + } + else { + void* hav_v = u3h_slot_to_node(sot_w); + + if ( 0 == lef_w ) { + tot_w += _ch_count_buck(hav_v); + } else { + tot_w += _ch_count_node(hav_v, lef_w); + } + } + } + + tot_w += u3a_count_ptr(han_u); + + return tot_w; +} + +/* u3h_count(): count hashtable for gc. +*/ +c3_w +u3h_count(u3p(u3h_root) har_p) +{ + c3_w tot_w = 0; + u3h_root* har_u = u3to(u3h_root, har_p); + c3_w i_w; + + for ( i_w = 0; i_w < 64; i_w++ ) { + c3_w sot_w = har_u->sot_w[i_w]; + + if ( _(u3h_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_slot_to_noun(sot_w); + + tot_w += u3a_count_noun(kev); + } + else if ( _(u3h_slot_is_node(sot_w)) ) { + u3h_node* han_u = u3h_slot_to_node(sot_w); + + tot_w += _ch_count_node(han_u, 25); + } + } + + tot_w += u3a_count_ptr(har_u); + + return tot_w; +} + +/* _ch_discount_buck(): discount bucket for gc. +*/ +c3_w +_ch_discount_buck(u3h_buck* hab_u) +{ + c3_w tot_w = 0; + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + tot_w += u3a_discount_noun(u3h_slot_to_noun(hab_u->sot_w[i_w])); + } + tot_w += u3a_discount_ptr(hab_u); + + return tot_w; +} + +/* _ch_discount_node(): discount node for gc. +*/ +c3_w +_ch_discount_node(u3h_node* han_u, c3_w lef_w) +{ + c3_w tot_w = 0; + c3_w len_w = _ch_popcount(han_u->map_w); + c3_w i_w; + + lef_w -= 5; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w sot_w = han_u->sot_w[i_w]; + + if ( _(u3h_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_slot_to_noun(sot_w); + + tot_w += u3a_discount_noun(kev); + } + else { + void* hav_v = u3h_slot_to_node(sot_w); + + if ( 0 == lef_w ) { + tot_w += _ch_discount_buck(hav_v); + } else { + tot_w += _ch_discount_node(hav_v, lef_w); + } + } + } + + tot_w += u3a_discount_ptr(han_u); + + return tot_w; +} + +/* u3h_discount(): discount hashtable for gc. +*/ +c3_w +u3h_discount(u3p(u3h_root) har_p) +{ + c3_w tot_w = 0; + u3h_root* har_u = u3to(u3h_root, har_p); + c3_w i_w; + + for ( i_w = 0; i_w < 64; i_w++ ) { + c3_w sot_w = har_u->sot_w[i_w]; + + if ( _(u3h_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_slot_to_noun(sot_w); + + tot_w += u3a_discount_noun(kev); + } + else if ( _(u3h_slot_is_node(sot_w)) ) { + u3h_node* han_u = u3h_slot_to_node(sot_w); + + tot_w += _ch_discount_node(han_u, 25); + } + } + + tot_w += u3a_discount_ptr(har_u); + + return tot_w; +} + +/* u3h_wyt(): number of entries +*/ +c3_w +u3h_wyt(u3p(u3h_root) har_p) +{ + u3h_root* har_u = u3to(u3h_root, har_p); + return har_u->use_w; +} diff --git a/vere/pkg/noun/hashtable.h b/vere/pkg/noun/hashtable.h new file mode 100644 index 0000000..f263dd8 --- /dev/null +++ b/vere/pkg/noun/hashtable.h @@ -0,0 +1,206 @@ +#ifndef U3_HASHTABLE_H +#define U3_HASHTABLE_H + +#include "c3/c3.h" +#include "types.h" + + /** Data structures. + **/ + /** Straightforward implementation of the classic Bagwell + *** HAMT (hash array mapped trie), using a mug hash. + *** + *** Because a mug is 31 bits, the root table has 64 slots. + *** The 31 bits of a mug are divided into the first lookup, + *** which is 6 bits (corresponding to the 64 entries in the + *** root table), followed by 5 more branchings of 5 bits each, + *** corresponding to the 32-slot nodes for everything under + *** the root node. + *** + *** We store an extra "freshly warm" bit and use it for a simple + *** clock-algorithm reclamation policy. + **/ + /* u3h_slot: map slot. + ** + ** Either a key-value cell or a loom offset, decoded as a pointer + ** to a u3h_node, or a u3h_buck at the bottom. Matches the u3_noun + ** format - coordinate with allocate.h. The top two bits are: + ** + ** 00 - empty (in the root table only) + ** 01 - table (node or buck) + ** 02 - entry, stale + ** 03 - entry, fresh + */ + typedef c3_w u3h_slot; + + /* u3h_node: map node. + */ + typedef struct { + c3_w map_w; // bitmap for [sot_w] + u3h_slot sot_w[]; // filled slots + } u3h_node; + + /* u3h_root: hash root table + */ + typedef struct { + c3_w max_w; // number of cache lines (0 for no trimming) + c3_w use_w; // number of lines currently filled + struct { + c3_w mug_w; // current hash + c3_w inx_w; // index into current hash bucket + c3_o buc_o; // XX remove + } arm_u; // clock arm + u3h_slot sot_w[64]; // slots + } u3h_root; + + /* u3h_buck: bottom bucket. + */ + typedef struct { + c3_w len_w; // length of [sot_w] + u3h_slot sot_w[]; // filled slots + } u3h_buck; + + /** HAMT macros. + *** + *** Coordinate with u3_noun definition! + **/ + /* u3h_slot_is_null(): yes iff slot is empty + ** u3h_slot_is_noun(): yes iff slot contains a key/value cell + ** u3h_slot_is_node(): yes iff slot contains a subtable/bucket + ** u3h_slot_is_warm(): yes iff fresh bit is set + ** u3h_slot_to_node(): slot to node pointer + ** u3h_node_to_slot(): node pointer to slot + ** u3h_slot_to_noun(): slot to cell + ** u3h_noun_to_slot(): cell to slot + ** u3h_noun_be_warm(): warm mutant + ** u3h_noun_be_cold(): cold mutant + */ +# define u3h_slot_is_null(sot) ((0 == ((sot) >> 30)) ? c3y : c3n) +# define u3h_slot_is_node(sot) ((1 == ((sot) >> 30)) ? c3y : c3n) +# define u3h_slot_is_noun(sot) ((1 == ((sot) >> 31)) ? c3y : c3n) +# define u3h_slot_is_warm(sot) (((sot) & 0x40000000) ? c3y : c3n) +# define u3h_slot_to_node(sot) (u3a_into(((sot) & 0x3fffffff) << u3a_vits)) +# define u3h_node_to_slot(ptr) ((u3a_outa((ptr)) >> u3a_vits) | 0x40000000) +# define u3h_noun_be_warm(sot) ((sot) | 0x40000000) +# define u3h_noun_be_cold(sot) ((sot) & ~0x40000000) +# define u3h_slot_to_noun(sot) (0x40000000 | (sot)) +# define u3h_noun_to_slot(som) (u3h_noun_be_warm(som)) + + /** Functions. + *** + *** Needs: delete and merge functions; clock reclamation function. + **/ + /* u3h_new_cache(): create hashtable with bounded size. + */ + u3p(u3h_root) + u3h_new_cache(c3_w clk_w); + + /* u3h_new(): create hashtable. + */ + u3p(u3h_root) + u3h_new(void); + + /* u3h_put(): insert in hashtable. + ** + ** `key` is RETAINED; `val` is transferred. + */ + void + u3h_put(u3p(u3h_root) har_p, u3_noun key, u3_noun val); + + /* u3h_put_get(): insert in caching hashtable, returning deleted entry + ** + ** `key` is RETAINED; `val` is transferred. + */ + u3_weak + u3h_put_get(u3p(u3h_root) har_p, u3_noun key, u3_noun val); + + /* u3h_uni(): unify hashtables, copying [rah_p] into [har_p] + */ + void + u3h_uni(u3p(u3h_root) har_p, u3p(u3h_root) rah_p); + + /* u3h_get(): read from hashtable. + ** + ** `key` is RETAINED; result is PRODUCED. + */ + u3_weak + u3h_get(u3p(u3h_root) har_p, u3_noun key); + + /* u3h_git(): read from hashtable, retaining result. + ** + ** `key` is RETAINED; result is RETAINED. + */ + u3_weak + u3h_git(u3p(u3h_root) har_p, u3_noun key); + + /* u3h_del(); delete from hashtable. + ** + ** `key` is RETAINED + */ + void + u3h_del(u3p(u3h_root) har_p, u3_noun key); + + /* u3h_trim_to(): trim to n key-value pairs + */ + void + u3h_trim_to(u3p(u3h_root) har_p, c3_w n_w); + + /* u3h_trim_with(): trim to n key-value pairs, with deletion callback + */ + void + u3h_trim_with(u3p(u3h_root) har_p, c3_w n_w, void (*del_cb)(u3_noun)); + + /* u3h_free(): free hashtable. + */ + void + u3h_free(u3p(u3h_root) har_p); + + /* u3h_mark(): mark hashtable for gc. + */ + c3_w + u3h_mark(u3p(u3h_root) har_p); + + /* u3h_relocate(): relocate hashtable for compaction. + */ + void + u3h_relocate(u3p(u3h_root) *har_p); + + /* u3h_count(): count hashtable for gc. + */ + c3_w + u3h_count(u3p(u3h_root) har_p); + + /* u3h_discount(): discount hashtable for gc. + */ + c3_w + u3h_discount(u3p(u3h_root) har_p); + + /* u3h_walk_with(): traverse hashtable with key, value fn and data + * argument; RETAINS. + */ + void + u3h_walk_with(u3p(u3h_root) har_p, + void (*fun_f)(u3_noun, void*), + void* wit); + + /* u3h_walk(): u3h_walk_with, but with no data argument + */ + void + u3h_walk(u3p(u3h_root) har_p, void (*fun_f)(u3_noun)); + + /* u3h_take_with(): gain hashtable, copying junior keys + ** and calling [fun_f] on values + */ + u3p(u3h_root) + u3h_take_with(u3p(u3h_root) har_p, u3_funk fun_f); + + /* u3h_take(): gain hashtable, copying junior nouns + */ + u3p(u3h_root) + u3h_take(u3p(u3h_root) har_p); + + /* u3h_wyt(): number of entries + */ + c3_w + u3h_wyt(u3p(u3h_root) har_p); + +#endif /* ifndef U3_HASHTABLE_H */ diff --git a/vere/pkg/noun/hashtable_tests.c b/vere/pkg/noun/hashtable_tests.c new file mode 100644 index 0000000..9a5a3f8 --- /dev/null +++ b/vere/pkg/noun/hashtable_tests.c @@ -0,0 +1,301 @@ +/// @file + +#include "noun.h" +#define TEST_SIZE 100000 + +// defined in noun/hashtable.c +c3_w _ch_skip_slot(c3_w mug_w, c3_w lef_w); + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + u3m_init(1 << 27); + u3m_pave(c3y); +} + +/* _test_put_del(): +*/ +static c3_i +_test_put_del() +{ + u3p(u3h_root) har_p = u3h_new(); + c3_i ret_i = 1; + + c3_w i_w; + for ( i_w = 0; i_w < TEST_SIZE; i_w++ ) { + u3_noun key = u3i_word(i_w); + u3_noun val = u3nc(u3_nul, u3k(key)); + u3h_put(har_p, key, val); + u3z(key); + } + // fprintf(stderr, "inserted\r\n"); + + for ( i_w = 0; i_w < TEST_SIZE; i_w++ ) { + u3_noun key = u3i_word(i_w); + u3_weak val = u3h_get(har_p, key); + if ( val == u3_none ) { + fprintf(stderr, "failed insert\r\n"); + ret_i = 0; + } + u3z(key); + u3z(val); + } + // fprintf(stderr, "presence\r\n"); + c3_w del_w[4] = {30, 82, 4921, 535}; + + for ( i_w = 0; i_w < 4; i_w++ ) { + u3_noun key = u3i_word(del_w[i_w]); + u3h_del(har_p, key); + u3z(key); + } + // fprintf(stderr, "deleted\r\n"); + + for ( i_w = 0; i_w < 4; i_w++ ) { + u3_noun key = u3i_word(del_w[i_w]); + u3_weak val = u3h_get(har_p, key); + if ( u3_none != val ) { + fprintf(stderr, "failed delete\r\n"); + ret_i = 0; + break; + } + } + // fprintf(stderr, "presence two\r\n"); + u3h_free(har_p); + // fprintf(stderr, "freed\r\n"); + + return ret_i; +} + +/* _test_bit_manipulation(): +*/ +static c3_i +_test_bit_manipulation() +{ + c3_i ret_i = 1; + + if ( sizeof(u3_noun) != sizeof(u3h_slot) ) { + fprintf(stderr, "bit manipulation: wrong size\r\n"); + ret_i = 0; + } + + u3h_slot a = 0; + + if (u3h_slot_is_null(a) != c3y) { + fprintf(stderr, "bit manipulation: nullity\r\n"); + ret_i = 0; + } + + a = u3h_noun_be_warm(a); + if (u3h_slot_is_warm(a) != c3y) { + fprintf(stderr, "bit manipulation: warmth\r\n"); + ret_i = 0; + } + + if (u3h_slot_is_null(a) != c3n) { + fprintf(stderr, "bit manipulation: nullity 2\r\n"); + ret_i = 0; + } + + a = u3h_noun_be_cold(a); + if (u3h_slot_is_warm(a) != c3n) { + fprintf(stderr, "bit manipulation: coldness\r\n"); + ret_i = 0; + } + + return ret_i; +} + +/* _test_no_cache(): test a hashtable without caching. +*/ +static c3_i +_test_no_cache(void) +{ + c3_i ret_i = 1; + c3_w max_w = 1000; + c3_w i_w; + + u3p(u3h_root) har_p = u3h_new(); + + for ( i_w = 0; i_w < max_w; i_w++ ) { + u3h_put(har_p, i_w, i_w + max_w); + } + + for ( i_w = 0; i_w < max_w; i_w++ ) { + if ( (i_w + max_w) != u3h_get(har_p, i_w) ) { + fprintf(stderr, "bit test_no_cache: get failed\r\n"); + ret_i = 0; + } + } + + u3h_free(har_p); + return ret_i; +} + +/* _test_skip_slot(): +*/ +static c3_i +_test_skip_slot(void) +{ + c3_i ret_i = 1; + + // root table + { + c3_w mug_w = 0x17 << 25; + c3_w res_w = _ch_skip_slot(mug_w, 25); + + if ( (0x18 << 25) != res_w ) { + fprintf(stderr, "bit skip_slot (a): failed\r\n"); + ret_i = 0; + } + } + + { + c3_w mug_w = 63 << 25; // 6 bits, all ones + c3_w res_w = _ch_skip_slot(mug_w, 25); + + if ( 0 != res_w ) { + fprintf(stderr, "bit skip_slot (b): failed\r\n"); + ret_i = 0; + } + } + + // child nodes + { + c3_w mug_w = 17 << 20; + c3_w res_w = _ch_skip_slot(mug_w, 20); + + if ( (18 << 20) != res_w ) { + fprintf(stderr, "bit skip_slot (c): failed\r\n"); + ret_i = 0; + } + } + + { + c3_w mug_w = 31 << 20; // 5 bits, all ones + c3_w res_w = _ch_skip_slot(mug_w, 20); + u3_assert((1 << 25) == res_w); + + if ( (1 << 25) != res_w ) { + fprintf(stderr, "bit skip_slot (d): failed\r\n"); + ret_i = 0; + } + } + + return ret_i; +} + +/* _test_cache_trimming(): ensure a caching hashtable removes stale items. +*/ +static c3_i +_test_cache_trimming(void) +{ + c3_i ret_i = 1; + c3_w max_w = 2000000; // big number + //c3_w max_w = 348000; // caused a leak before + c3_w i_w, fil_w = max_w / 10; + + u3p(u3h_root) har_p = u3h_new_cache(fil_w); + u3h_root* har_u = u3to(u3h_root, har_p); + + for ( i_w = 0; i_w < max_w; i_w++ ) { + u3_noun cel = u3nc(i_w, i_w); + u3h_put(har_p, cel, cel); + } + + { + // last thing we put in is still there + c3_w las_w = max_w - 1; + u3_noun key = u3nc(las_w, las_w); + u3_noun val = u3h_get(har_p, key); + u3z(key); + + if ( las_w != u3t(val) ) { + fprintf(stderr, "cache_trimming (a): fail\r\n"); + ret_i = 0; + } + + if ( fil_w != har_u->use_w ) { + fprintf(stderr, "cache_trimming (b): fail %d != %d\r\n", + fil_w, har_u->use_w ); + ret_i = 0; + } + + u3z(val); + } + + u3h_free(har_p); + return ret_i; +} + +/* _test_cache_replace_value(): +*/ +static c3_i +_test_cache_replace_value(void) +{ + c3_i ret_i = 1; + c3_w max_w = 100; + c3_w i_w; + + u3p(u3h_root) har_p = u3h_new_cache(max_w); + u3h_root* har_u = u3to(u3h_root, har_p); + + for ( i_w = 0; i_w < max_w; i_w++ ) { + u3h_put(har_p, i_w, i_w + max_w); + } + + for ( i_w = 0; i_w < max_w; i_w++ ) { + u3h_put(har_p, i_w, i_w + max_w + 1); + } + + if ( (2 * max_w) != u3h_get(har_p, max_w - 1) ) { + fprintf(stderr, "cache_replace (a): fail\r\n"); + ret_i = 0; + } + if ( max_w != har_u->use_w ) { + fprintf(stderr, "cache_replace (b): fail\r\n"); + fprintf(stderr, "cache_replace (b): fail %d %d\r\n", + max_w, har_u->use_w ); + ret_i = 0; + } + + u3h_free(har_p); + return ret_i; +} + +static c3_i +_test_hashtable(void) +{ + c3_i ret_i = 1; + + ret_i &= _test_bit_manipulation(); + ret_i &= _test_no_cache(); + ret_i &= _test_skip_slot(); + ret_i &= _test_cache_trimming(); + ret_i &= _test_cache_replace_value(); + ret_i &= _test_put_del(); + + return ret_i; +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + if ( !_test_hashtable() ) { + fprintf(stderr, "test_hashtable: failed\r\n"); + exit(1); + } + + // GC + // + u3m_grab(u3_none); + + fprintf(stderr, "test_hashtable: ok\r\n"); + + return 0; +} diff --git a/vere/pkg/noun/imprison.c b/vere/pkg/noun/imprison.c new file mode 100644 index 0000000..c182d95 --- /dev/null +++ b/vere/pkg/noun/imprison.c @@ -0,0 +1,772 @@ +/// @file + +#include "imprison.h" + +#include "jets/k.h" +#include "jets/q.h" +#include "manage.h" +#include "retrieve.h" +#include "trace.h" +#include "xtract.h" + +/* _ci_slab_size(): calculate slab bloq-size, checking for overflow. +*/ +static c3_w +_ci_slab_size(c3_g met_g, c3_d len_d) +{ + c3_d bit_d = len_d << met_g; + c3_d wor_d = (bit_d + 0x1f) >> 5; + c3_w wor_w = (c3_w)wor_d; + + if ( (wor_w != wor_d) + || (len_d != (bit_d >> met_g)) ) + { + return (c3_w)u3m_bail(c3__fail); + } + + return wor_w; +} + +/* _ci_slab_init(): initialize slab with heap allocation. +** NB: callers must ensure [len_w] >0 +*/ +static void +_ci_slab_init(u3i_slab* sab_u, c3_w len_w) +{ + c3_w* nov_w = u3a_walloc(len_w + c3_wiseof(u3a_atom)); + u3a_atom* vat_u = (void *)nov_w; + + vat_u->use_w = 1; + vat_u->mug_w = 0; + vat_u->len_w = len_w; + +#ifdef U3_MEMORY_DEBUG + u3_assert( len_w ); +#endif + + sab_u->_._vat_u = vat_u; + sab_u->buf_w = vat_u->buf_w; + sab_u->len_w = len_w; +} + +/* _ci_slab_grow(): update slab with heap reallocation. +*/ +static void +_ci_slab_grow(u3i_slab* sab_u, c3_w len_w) +{ + c3_w* old_w = (void*)sab_u->_._vat_u; + // XX implement a more efficient u3a_wealloc() + // + c3_w* nov_w = u3a_wealloc(old_w, len_w + c3_wiseof(u3a_atom)); + u3a_atom* vat_u = (void *)nov_w; + + vat_u->len_w = len_w; + + sab_u->_._vat_u = vat_u; + sab_u->buf_w = vat_u->buf_w; + sab_u->len_w = len_w; +} + +/* _ci_atom_mint(): finalize a heap-allocated atom at specified length. +*/ +static u3_atom +_ci_atom_mint(u3a_atom* vat_u, c3_w len_w) +{ + c3_w* nov_w = (void*)vat_u; + + if ( 0 == len_w ) { + u3a_wfree(nov_w); + return (u3_atom)0; + } + else if ( 1 == len_w ) { + c3_w dat_w = *vat_u->buf_w; + + if ( c3y == u3a_is_cat(dat_w) ) { + u3a_wfree(nov_w); + return (u3_atom)dat_w; + } + } + + // try to strip a block off the end + // + { + c3_w old_w = vat_u->len_w; + + if ( old_w > len_w ) { + c3_y wiz_y = c3_wiseof(u3a_atom); + u3a_wtrim(nov_w, old_w + wiz_y, len_w + wiz_y); + } + } + + vat_u->len_w = len_w; + + return u3a_to_pug(u3a_outa(nov_w)); +} + +/* u3i_slab_init(): configure bloq-length slab, zero-initialize. +*/ +void +u3i_slab_init(u3i_slab* sab_u, c3_g met_g, c3_d len_d) +{ + u3i_slab_bare(sab_u, met_g, len_d); + + u3t_on(mal_o); + memset(sab_u->buf_y, 0, (size_t)sab_u->len_w * 4); + u3t_off(mal_o); +} + +/* u3i_slab_bare(): configure bloq-length slab, uninitialized. +*/ +void +u3i_slab_bare(u3i_slab* sab_u, c3_g met_g, c3_d len_d) +{ + u3t_on(mal_o); + { + c3_w wor_w = _ci_slab_size(met_g, len_d); + + // if we only need one word, use the static storage in [sab_u] + // + if ( (0 == wor_w) || (1 == wor_w) ) { + sab_u->_._vat_u = 0; + sab_u->buf_w = &sab_u->_._sat_w; + sab_u->len_w = 1; + } + // allocate an indirect atom + // + else { + _ci_slab_init(sab_u, wor_w); + } + } + u3t_off(mal_o); +} + +/* u3i_slab_from(): configure bloq-length slab, initialize with [a]. +*/ +void +u3i_slab_from(u3i_slab* sab_u, u3_atom a, c3_g met_g, c3_d len_d) +{ + u3i_slab_bare(sab_u, met_g, len_d); + + // copies [a], zero-initializes any additional space + // + u3r_words(0, sab_u->len_w, sab_u->buf_w, a); + + // if necessary, mask off extra most-significant bits + // from most-significant word + // + if ( (5 > met_g) && (u3r_met(5, a) >= sab_u->len_w) ) { + // NB: overflow already checked in _ci_slab_size() + // + c3_d bit_d = len_d << met_g; + c3_w wor_w = bit_d >> 5; + c3_w bit_w = bit_d & 0x1f; + + if ( bit_w ) { + sab_u->buf_w[wor_w] &= ((c3_w)1 << bit_w) - 1; + } + } +} + +/* u3i_slab_grow(): resize slab, zero-initializing new space. +*/ +void +u3i_slab_grow(u3i_slab* sab_u, c3_g met_g, c3_d len_d) +{ + c3_w old_w = sab_u->len_w; + + u3t_on(mal_o); + { + c3_w wor_w = _ci_slab_size(met_g, len_d); + + // XX actually shrink? + // + if ( wor_w <= old_w ) { + sab_u->len_w = wor_w; + } + else { + // upgrade from static storage + // + if ( 1 == old_w ) { + c3_w dat_w = *sab_u->buf_w; + + _ci_slab_init(sab_u, wor_w); + sab_u->buf_w[0] = dat_w; + } + // reallocate + // + else { + _ci_slab_grow(sab_u, wor_w); + } + + { + c3_y* buf_y = (void*)(sab_u->buf_w + old_w); + size_t dif_i = wor_w - old_w; + memset(buf_y, 0, dif_i * 4); + } + } + } + u3t_off(mal_o); +} + +/* u3i_slab_free(): dispose memory backing slab. +*/ +void +u3i_slab_free(u3i_slab* sab_u) +{ + c3_w len_w = sab_u->len_w; + u3a_atom* vat_u = sab_u->_._vat_u; + + u3t_on(mal_o); + + if ( 1 == len_w ) { + u3_assert( !vat_u ); + } + else { + c3_w* tav_w = (sab_u->buf_w - c3_wiseof(u3a_atom)); + u3_assert( tav_w == (c3_w*)vat_u ); + u3a_wfree(vat_u); + } + + u3t_off(mal_o); +} + +/* u3i_slab_mint(): produce atom from slab, trimming. +*/ +u3_atom +u3i_slab_mint(u3i_slab* sab_u) +{ + c3_w len_w = sab_u->len_w; + u3a_atom* vat_u = sab_u->_._vat_u; + u3_atom pro; + + u3t_on(mal_o); + + if ( 1 == len_w ) { + c3_w dat_w = *sab_u->buf_w; + + u3_assert( !vat_u ); + + u3t_off(mal_o); + pro = u3i_word(dat_w); + u3t_on(mal_o); + } + else { + u3a_atom* vat_u = sab_u->_._vat_u; + c3_w* tav_w = (sab_u->buf_w - c3_wiseof(u3a_atom)); + u3_assert( tav_w == (c3_w*)vat_u ); + + // trim trailing zeros + // + while ( len_w && !(sab_u->buf_w[len_w - 1]) ) { + len_w--; + } + + pro = _ci_atom_mint(vat_u, len_w); + } + + u3t_off(mal_o); + + return pro; +} + +/* u3i_slab_moot(): produce atom from slab, no trimming. +*/ +u3_atom +u3i_slab_moot(u3i_slab* sab_u) +{ + c3_w len_w = sab_u->len_w; + u3_atom pro; + + u3t_on(mal_o); + + if ( 1 == len_w) { + c3_w dat_w = *sab_u->buf_w; + + u3_assert( !sab_u->_._vat_u ); + + u3t_off(mal_o); + pro = u3i_word(dat_w); + u3t_on(mal_o); + } + else { + u3a_atom* vat_u = sab_u->_._vat_u; + c3_w* tav_w = (sab_u->buf_w - c3_wiseof(u3a_atom)); + u3_assert( tav_w == (c3_w*)vat_u ); + + pro = _ci_atom_mint(vat_u, len_w); + } + + u3t_off(mal_o); + + return pro; +} + +/* u3i_word(): construct u3_atom from c3_w. +*/ +u3_atom +u3i_word(c3_w dat_w) +{ + u3_atom pro; + + u3t_on(mal_o); + + if ( c3y == u3a_is_cat(dat_w) ) { + pro = (u3_atom)dat_w; + } + else { + c3_w* nov_w = u3a_walloc(1 + c3_wiseof(u3a_atom)); + u3a_atom* vat_u = (void *)nov_w; + + vat_u->use_w = 1; + vat_u->mug_w = 0; + vat_u->len_w = 1; + vat_u->buf_w[0] = dat_w; + + pro = u3a_to_pug(u3a_outa(nov_w)); + } + + u3t_off(mal_o); + + return pro; +} + +/* u3i_chub(): construct u3_atom from c3_d. +*/ +u3_atom +u3i_chub(c3_d dat_d) +{ + if ( c3y == u3a_is_cat(dat_d) ) { + return (u3_atom)dat_d; + } + else { + c3_w dat_w[2] = { + dat_d & 0xffffffffULL, + dat_d >> 32 + }; + + return u3i_words(2, dat_w); + } +} + +/* u3i_bytes(): Copy [a] bytes from [b] to an LSB first atom. +*/ +u3_atom +u3i_bytes(c3_w a_w, + const c3_y* b_y) +{ + // strip trailing zeroes. + // + while ( a_w && !b_y[a_w - 1] ) { + a_w--; + } + + if ( !a_w ) { + return (u3_atom)0; + } + else { + u3i_slab sab_u; + + u3i_slab_bare(&sab_u, 3, a_w); + + u3t_on(mal_o); + { + // zero-initialize last word + // + sab_u.buf_w[sab_u.len_w - 1] = 0; + memcpy(sab_u.buf_y, b_y, a_w); + } + u3t_off(mal_o); + + return u3i_slab_moot_bytes(&sab_u); + } +} + +/* u3i_words(): Copy [a] words from [b] into an atom. +*/ +u3_atom +u3i_words(c3_w a_w, + const c3_w* b_w) +{ + // strip trailing zeroes. + // + while ( a_w && !b_w[a_w - 1] ) { + a_w--; + } + + if ( !a_w ) { + return (u3_atom)0; + } + else { + u3i_slab sab_u; + u3i_slab_bare(&sab_u, 5, a_w); + + u3t_on(mal_o); + memcpy(sab_u.buf_w, b_w, (size_t)4 * a_w); + u3t_off(mal_o); + + return u3i_slab_moot(&sab_u); + } +} + +/* u3i_chubs(): Copy [a] chubs from [b] into an atom. +*/ +u3_atom +u3i_chubs(c3_w a_w, + const c3_d* b_d) +{ + // strip trailing zeroes. + // + while ( a_w && !b_d[a_w - 1] ) { + a_w--; + } + + if ( !a_w ) { + return (u3_atom)0; + } + else if ( 1 == a_w ) { + return u3i_chub(b_d[0]); + } + else { + u3i_slab sab_u; + u3i_slab_bare(&sab_u, 6, a_w); + + u3t_on(mal_o); + { + c3_w* buf_w = sab_u.buf_w; + c3_w i_w; + c3_d i_d; + + for ( i_w = 0; i_w < a_w; i_w++ ) { + i_d = b_d[i_w]; + *buf_w++ = i_d & 0xffffffffULL; + *buf_w++ = i_d >> 32; + } + } + u3t_off(mal_o); + + return u3i_slab_mint(&sab_u); + } +} + +/* u3i_mp(): Copy the GMP integer [a] into an atom, and clear it. +*/ +u3_atom +u3i_mp(mpz_t a_mp) +{ + size_t siz_i = mpz_sizeinbase(a_mp, 2); + u3i_slab sab_u; + u3i_slab_init(&sab_u, 0, siz_i); + + mpz_export(sab_u.buf_w, 0, -1, sizeof(c3_w), 0, 0, a_mp); + mpz_clear(a_mp); + + // per the mpz_export() docs: + // + // > If op is non-zero then the most significant word produced + // > will be non-zero. + // + return u3i_slab_moot(&sab_u); +} + +/* u3i_vint(): increment [a]. +*/ +u3_atom +u3i_vint(u3_noun a) +{ + u3_assert(u3_none != a); + + if ( _(u3a_is_cat(a)) ) { + return ( a == 0x7fffffff ) ? u3i_word(a + 1) : (a + 1); + } + else if ( _(u3a_is_cell(a)) ) { + return u3m_bail(c3__exit); + } + else { + mpz_t a_mp; + + u3r_mp(a_mp, a); + u3z(a); + + mpz_add_ui(a_mp, a_mp, 1); + return u3i_mp(a_mp); + } +} + +/* u3i_defcons(): allocate cell for deferred construction. +** NB: [hed] and [tel] pointers MUST be filled. +*/ +u3_cell +u3i_defcons(u3_noun** hed, u3_noun** tel) +{ + u3_noun pro; + + u3t_on(mal_o); + { + c3_w* nov_w = u3a_celloc(); + u3a_cell* nov_u = (void *)nov_w; + + nov_u->use_w = 1; + nov_u->mug_w = 0; + +#ifdef U3_MEMORY_DEBUG + nov_u->hed = u3_none; + nov_u->tel = u3_none; +#endif + + *hed = &nov_u->hed; + *tel = &nov_u->tel; + + pro = u3a_to_pom(u3a_outa(nov_w)); + } + u3t_off(mal_o); + + return pro; +} + +/* u3i_cell(): Produce the cell `[a b]`. +*/ +u3_noun +u3i_cell(u3_noun a, u3_noun b) +{ + u3_noun pro; + + u3t_on(mal_o); + { + c3_w* nov_w = u3a_celloc(); + u3a_cell* nov_u = (void *)nov_w; + + nov_u->use_w = 1; + nov_u->mug_w = 0; + nov_u->hed = a; + nov_u->tel = b; + + pro = u3a_to_pom(u3a_outa(nov_w)); + } + u3t_off(mal_o); + + return pro; +} + +/* u3i_trel(): Produce the triple `[a b c]`. +*/ +u3_noun +u3i_trel(u3_noun a, u3_noun b, u3_noun c) +{ + return u3i_cell(a, u3i_cell(b, c)); +} + +/* u3i_qual(): Produce the cell `[a b c d]`. +*/ +u3_noun +u3i_qual(u3_noun a, u3_noun b, u3_noun c, u3_noun d) +{ + return u3i_cell(a, u3i_trel(b, c, d)); +} + +/* u3i_string(): Produce an LSB-first atom from the C string [a]. +*/ +u3_atom +u3i_string(const c3_c* a_c) +{ + return u3i_bytes(strlen(a_c), (c3_y *)a_c); +} + +/* u3i_tape(): from a C string, to a list of bytes. +*/ +u3_noun +u3i_tape(const c3_c* txt_c) +{ + if ( !*txt_c ) { + return u3_nul; + } else return u3i_cell(*txt_c, u3i_tape(txt_c + 1)); +} + +/* u3i_list(): list from `u3_none`-terminated varargs. +*/ +u3_noun +u3i_list(u3_weak som, ...) +{ + u3_noun lit = u3_nul; + va_list ap; + + if ( u3_none == som ) { + return lit; + } + else { + lit = u3nc(som, lit); + } + + { + u3_noun tem; + + va_start(ap, som); + while ( 1 ) { + if ( u3_none == (tem = va_arg(ap, u3_weak)) ) { + break; + } + else { + lit = u3nc(tem, lit); + } + } + va_end(ap); + } + + return u3kb_flop(lit); +} + +/* u3i_edit(): +** +** Mutate `big` at axis `axe` with new value `som`. +** `axe` is RETAINED. +*/ +u3_noun +u3i_edit(u3_noun big, u3_noun axe, u3_noun som) +{ + u3_noun pro; + u3_noun* out = &pro; + + switch ( axe ) { + case 0: return u3m_bail(c3__exit); + case 1: break; + + default: { + c3_w dep_w = u3r_met(0, u3x_atom(axe)) - 2; + const c3_w* axe_w = ( c3y == u3a_is_cat(axe) ) + ? &axe + : ((u3a_atom*)u3a_to_ptr(axe))->buf_w; + + do { + u3a_cell* big_u = u3a_to_ptr(big); + u3_noun* old = (u3_noun*)&(big_u->hed); + const c3_y bit_y = 1 & (axe_w[dep_w >> 5] >> (dep_w & 31)); + + if ( c3n == u3a_is_cell(big) ) { + return u3m_bail(c3__exit); + } + else if ( c3y == u3a_is_mutable(u3R, big) ) { + *out = big; + out = &(old[bit_y]); + big = *out; + big_u->mug_w = 0; + } + else { + u3_noun luz = big; + u3_noun* new[2]; + + *out = u3i_defcons(&new[0], &new[1]); + out = new[bit_y]; + big = u3k(old[bit_y]); + *(new[!bit_y]) = u3k(old[!bit_y]); + + u3z(luz); + } + } + while ( dep_w-- ); + } + } + + u3z(big); + *out = som; + return pro; +} + +/* u3i_molt(): +** +** Mutate `som` with a 0-terminated list of axis, noun pairs. +** Axes must be cats (31 bit). +*/ + struct _molt_pair { + c3_w axe_w; + u3_noun som; + }; + + static c3_w + _molt_cut(c3_w len_w, + struct _molt_pair* pms_m) + { + c3_w i_w, cut_t, cut_w; + + cut_t = 0; + cut_w = 0; + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w axe_w = pms_m[i_w].axe_w; + + if ( (cut_t == 0) && (3 == u3x_cap(axe_w)) ) { + cut_t = 1; + cut_w = i_w; + } + pms_m[i_w].axe_w = u3x_mas(axe_w); + } + return cut_t ? cut_w : i_w; + } + + static u3_noun // transfer + _molt_apply(u3_noun som, // retain + c3_w len_w, + struct _molt_pair* pms_m) // transfer + { + if ( len_w == 0 ) { + return u3k(som); + } + else if ( (len_w == 1) && (1 == pms_m[0].axe_w) ) { + return pms_m[0].som; + } + else { + c3_w cut_w = _molt_cut(len_w, pms_m); + + if ( c3n == u3a_is_cell(som) ) { + return u3m_bail(c3__exit); + } + else { + return u3i_cell + (_molt_apply(u3a_h(som), cut_w, pms_m), + _molt_apply(u3a_t(som), (len_w - cut_w), (pms_m + cut_w))); + } + } + } + +u3_noun +u3i_molt(u3_noun som, ...) +{ + va_list ap; + c3_w len_w; + struct _molt_pair* pms_m; + u3_noun pro; + + // Count. + // + len_w = 0; + { + va_start(ap, som); + while ( 1 ) { + if ( 0 == va_arg(ap, c3_w) ) { + break; + } + va_arg(ap, u3_weak*); + len_w++; + } + va_end(ap); + } + + u3_assert( 0 != len_w ); + pms_m = alloca(len_w * sizeof(struct _molt_pair)); + + // Install. + // + { + c3_w i_w; + + va_start(ap, som); + for ( i_w = 0; i_w < len_w; i_w++ ) { + pms_m[i_w].axe_w = va_arg(ap, c3_w); + pms_m[i_w].som = va_arg(ap, u3_noun); + } + va_end(ap); + } + + // Apply. + // + pro = _molt_apply(som, len_w, pms_m); + u3z(som); + return pro; +} diff --git a/vere/pkg/noun/imprison.h b/vere/pkg/noun/imprison.h new file mode 100644 index 0000000..6d2dcb1 --- /dev/null +++ b/vere/pkg/noun/imprison.h @@ -0,0 +1,170 @@ +/// @file + +#ifndef U3_IMPRISON_H +#define U3_IMPRISON_H + +#include "allocate.h" +#include "c3/c3.h" +#include "gmp.h" +#include "types.h" + + /** Structures. + **/ + /* u3i_slab: atom builder. + */ + typedef struct _u3i_slab { + struct { // internals + u3a_atom* _vat_u; // heap atom (nullable) + c3_w _sat_w; // static storage + } _; // + union { // + c3_y* buf_y; // bytes + c3_w* buf_w; // words + }; // + c3_w len_w; // word length + } u3i_slab; + + /* staged atom-building api + */ + /* u3i_slab_init(): configure bloq-length slab, zero-initialize. + */ + void + u3i_slab_init(u3i_slab* sab_u, c3_g met_g, c3_d len_d); + + /* u3i_slab_bare(): configure bloq-length slab, uninitialized. + */ + void + u3i_slab_bare(u3i_slab* sab_u, c3_g met_g, c3_d len_d); + + /* u3i_slab_from(): configure bloq-length slab, initialize with [a]. + */ + void + u3i_slab_from(u3i_slab* sab_u, u3_atom a, c3_g met_g, c3_d len_d); + + /* u3i_slab_grow(): resize slab, zero-initializing new space. + */ + void + u3i_slab_grow(u3i_slab* sab_u, c3_g met_g, c3_d len_d); + + /* u3i_slab_free(): dispose memory backing slab. + */ + void + u3i_slab_free(u3i_slab* sab_u); + + /* u3i_slab_mint(): produce atom from slab, trimming. + */ + u3_atom + u3i_slab_mint(u3i_slab* sab_u); + + /* u3i_slab_moot(): produce atom from slab, no trimming. + */ + u3_atom + u3i_slab_moot(u3i_slab* sab_u); + + /* u3i_slab_mint_bytes(): produce atom from byte-slab, trimming. + ** XX assumes little-endian, implement swap to support big-endian + */ +# define u3i_slab_mint_bytes u3i_slab_mint + + /* u3i_slab_moot_bytes(): produce atom from byte-slab, no trimming. + ** XX assumes little-endian, implement swap to support big-endian + */ +# define u3i_slab_moot_bytes u3i_slab_moot + + /* General constructors. + */ + /* u3i_word(): construct u3_atom from c3_w. + */ + u3_atom + u3i_word(c3_w dat_w); + + /* u3i_chub(): construct u3_atom from c3_d. + */ + u3_atom + u3i_chub(c3_d dat_d); + + /* u3i_bytes(): Copy [a] bytes from [b] to an LSB first atom. + */ + u3_atom + u3i_bytes(c3_w a_w, + const c3_y* b_y); + + /* u3i_words(): Copy [a] words from [b] into an atom. + */ + u3_atom + u3i_words(c3_w a_w, + const c3_w* b_w); + + /* u3i_chubs(): Copy [a] chubs from [b] into an atom. + */ + u3_atom + u3i_chubs(c3_w a_w, + const c3_d* b_d); + + /* u3i_mp(): Copy the GMP integer [a] into an atom, and clear it. + */ + u3_atom + u3i_mp(mpz_t a_mp); + + /* u3i_vint(): increment [a]. + */ + u3_atom + u3i_vint(u3_noun a); + + /* u3i_cell(): Produce the cell `[a b]`. + */ + u3_noun + u3i_cell(u3_noun a, u3_noun b); +# define u3nc(a, b) u3i_cell(a, b) + + /* u3i_defcons(): allocate cell for deferred construction. + ** NB: [hed] and [tel] pointers MUST be filled. + */ + u3_cell + u3i_defcons(u3_noun** hed, u3_noun** tel); + + /* u3i_trel(): Produce the triple `[a b c]`. + */ + u3_noun + u3i_trel(u3_noun a, u3_noun b, u3_noun c); +# define u3nt(a, b, c) u3i_trel(a, b, c) + + /* u3i_qual(): Produce the cell `[a b c d]`. + */ + u3_noun + u3i_qual(u3_noun a, u3_noun b, u3_noun c, u3_noun d); +# define u3nq(a, b, c, d) u3i_qual(a, b, c, d) + + /* u3i_string(): Produce an LSB-first atom from the C string [a]. + */ + u3_atom + u3i_string(const c3_c* a_c); + + /* u3i_tape(): from a C string, to a list of bytes. + */ + u3_noun + u3i_tape(const c3_c* txt_c); + + /* u3i_list(): list from `u3_none`-terminated varargs. + */ + u3_noun + u3i_list(u3_weak som, ...); +# define u3nl u3i_list + + /* u3i_edit(): + ** + ** Mutate `big` at axis `axe` with new value `som` + ** `axe` is RETAINED. + */ + u3_noun + u3i_edit(u3_noun big, u3_noun axe, u3_noun som); + + /* u3i_molt(): + ** + ** Mutate `som` with a 0-terminated list of axis, noun pairs. + ** Axes must be cats (31 bit). + */ + u3_noun + u3i_molt(u3_noun som, ...); + +#endif /* ifndef U3_IMPRISON_H */ diff --git a/vere/pkg/noun/jets.c b/vere/pkg/noun/jets.c new file mode 100644 index 0000000..3598364 --- /dev/null +++ b/vere/pkg/noun/jets.c @@ -0,0 +1,2445 @@ +/// @file + +#include "jets.h" + +#include "allocate.h" +#include "hashtable.h" +#include "imprison.h" +#include "jets/k.h" +#include "jets/q.h" +#include "log.h" +#include "manage.h" +#include "nock.h" +#include "options.h" +#include "retrieve.h" +#include "serial.h" +#include "trace.h" +#include "urcrypt.h" +#include "vortex.h" +#include "xtract.h" + + +/** Functions. +**/ + +/* _cj_count(): count and link dashboard entries. +*/ +static c3_w +_cj_count(u3j_core* par_u, u3j_core* dev_u) +{ + c3_w len_l = 0; + c3_w i_w; + + if ( dev_u ) { + for ( i_w = 0; 0 != dev_u[i_w].cos_c; i_w++ ) { + u3j_core* kid_u = &dev_u[i_w]; + + if ( par_u ) { + kid_u->par_u = par_u; + } + len_l += _cj_count(kid_u, kid_u->dev_u); + } + } + return 1 + len_l; +} + +/* _cj_core_loc(): location noun from u3j_core. + */ +static u3_noun +_cj_core_loc(u3_noun pel, u3j_core* cop_u) +{ + c3_w i_w; + u3_noun nam = u3i_string(cop_u->cos_c), + huc = u3_nul, + pat; + + if ( cop_u->huc_u ) { + for ( i_w = 0; 0 != cop_u->huc_u[i_w].nam_c; ++i_w ) { + u3j_hood* huc_u = &(cop_u->huc_u[i_w]); + u3_noun fol = ( c3n == huc_u->kic_o ) + ? u3nc(0, huc_u->axe_l) + : u3nt(9, huc_u->axe_l, u3nc(0, + (0 == huc_u->sax_l) ? 1 : huc_u->sax_l)); + huc = u3kdb_put(huc, u3i_string(huc_u->nam_c), fol); + } + } + + pat = ( 0 == cop_u->axe_l ) + ? u3nt(c3y, c3y, pel) + : ( (3 == cop_u->axe_l) && (c3y == u3h(u3h(pel))) ) + ? u3nt(c3y, c3n, pel) + : u3nt(c3n, cop_u->axe_l, pel); + + return u3nt(pat, nam, huc); +} + +/* _cj_hash(): noun from pasted-in battery hash + */ +static u3_noun +_cj_hash(c3_c* has_c) +{ + c3_w i_w, len_w = strlen(has_c); + if ( 64 != len_w ) { + u3l_log("bash not 64 characters: %s", has_c); + u3_assert(0); + } + u3_assert( 64 == len_w ); + c3_y dig_y[32]; + for ( i_w = 0; i_w < 64; ) { + c3_y hi_y = has_c[i_w++], + lo_y = has_c[i_w++], + hid_y = hi_y >= 'a' ? (hi_y - 'a') + 10 : hi_y - '0', + lod_y = lo_y >= 'a' ? (lo_y - 'a') + 10 : lo_y - '0'; + dig_y[32-(i_w>>1)] = hid_y << 4 | lod_y; + } + u3_noun pro = u3i_bytes(32, dig_y); + return pro; +} + +// in the jam jet file +c3_w* u3qe_jam_buf(u3_noun, c3_w* bit_w); + +/* _cj_bash(): battery hash. RETAIN. + */ +static u3_noun +_cj_bash(u3_noun bat) +{ + if ( u3C.wag_w & u3o_hashless ) { + return u3_nul; + } + + u3_weak pro; + u3a_road* rod_u = u3R; + while ( 1 ) { + pro = u3h_get(rod_u->jed.bas_p, bat); + + if ( u3_none != pro ) { + break; + } + + if ( rod_u->par_p ) { + rod_u = u3to(u3_road, rod_u->par_p); + } + else { + u3i_slab sab_u; + c3_w bit_w = u3s_jam_fib(&sab_u, bat); + c3_w met_w = (bit_w + 0x7) >> 3; + // XX assumes little-endian + // + c3_y* fat_y = sab_u.buf_y; + c3_y dig_y[32]; + urcrypt_shay(fat_y, met_w, dig_y); + + pro = u3i_bytes(32, dig_y); + u3h_put(u3R->jed.bas_p, bat, u3k(pro)); + u3i_slab_free(&sab_u); + break; + } + } + return pro; +} + +/* _cj_mine_par_old(): register hooks and parent location within existing + * axis in ancestor list or u3_none. + */ +static u3_weak +_cj_mine_par_old(u3_noun lan, u3_noun axe, u3_noun pel, u3_noun loc) +{ + u3_noun par; + u3_weak pro; + + if ( u3_nul == lan ) { + pro = u3_none; + u3z(axe); u3z(pel); u3z(loc); + } + else if ( c3y == u3r_sing(axe, u3h(par = u3h(lan))) ) { + u3_noun lol = u3kdb_put(u3k(u3t(par)), pel, loc), + rap = u3nc(axe, lol); + pro = u3nc(rap, u3k(u3t(lan))); + } + else { + u3_weak nex = _cj_mine_par_old(u3k(u3t(lan)), axe, pel, loc); + if ( u3_none == nex ) { + pro = u3_none; + } + else { + pro = u3nc(u3k(par), nex); + } + } + + u3z(lan); + return pro; +} + +/* _cj_mine_par_new(): insert ancestor within lan at sorted index. + */ +static u3_noun +_cj_mine_par_new(u3_noun lan, u3_noun axe, u3_noun pel, u3_noun loc) +{ + u3_weak pro; + + if ( (u3_nul == lan) || (c3y == u3qa_lth(axe, u3h(u3h(lan)))) ) { + u3_noun par = u3nc(axe, u3kdb_put(u3_nul, pel, loc)); + pro = u3nc(par, lan); + } + else { + pro = u3nc(u3k(u3h(lan)), + _cj_mine_par_new(u3k(u3t(lan)), axe, pel, loc)); + u3z(lan); + } + + return pro; +} + +/* _cj_mine_par(): register a location as an ancestor + * in a list of ancestors. + */ +static u3_noun +_cj_mine_par(u3_noun lan, u3_noun axe, u3_noun pel, u3_noun loc) +{ + u3_weak old = _cj_mine_par_old(u3k(lan), u3k(axe), u3k(pel), u3k(loc)); + if ( u3_none != old ) { + u3z(lan); u3z(axe); u3z(pel); u3z(loc); + return old; + } + else { + return _cj_mine_par_new(lan, axe, pel, loc); + } +} + + +/* _cj_gust(): add location to registry. +*/ +static u3_noun +_cj_gust(u3_weak reg, u3_noun axe, u3_noun pel, u3_noun loc) +{ + u3_noun ger; + if ( u3_none == reg ) { + reg = u3nc(u3_nul, u3_nul); + } + + ger = ( 0 == axe ) + ? u3nc(u3kdb_put(u3k(u3h(reg)), pel, loc), u3k(u3t(reg))) + : u3nc(u3k(u3h(reg)), _cj_mine_par(u3k(u3t(reg)), axe, pel, loc)); + + u3z(reg); + return ger; +} + +/* _cj_axis(): axis from formula, or 0. `fol` is RETAINED. +*/ +static c3_l +_cj_axis(u3_noun fol) +{ + u3_noun p_fol, q_fol, r_fol; + + while ( _(u3du(fol)) && (11 == u3h(fol)) ) + { fol = u3t(u3t(fol)); } + + if ( !_(u3r_trel(fol, &p_fol, &q_fol, &r_fol)) ) { + if ( !_(u3r_cell(fol, &p_fol, &q_fol)) || + (0 != p_fol) || + (!_(u3a_is_cat(q_fol))) ) + { + u3l_log("axis: bad a"); + return 0; + } + return q_fol; + } + else { + if ( 9 != p_fol ) + { u3l_log("axis: bad b"); return 0; } + if ( !_(u3a_is_cat(q_fol)) ) + { u3l_log("axis: bad c"); return 0; } + if ( !_(u3du(r_fol)) || (0 != u3h(r_fol)) || (1 != u3t(r_fol)) ) + { u3l_log("axis: bad d"); return 0; } + + return q_fol; + } +} + +/* _cj_warm_hump(): generate axis-to-arm map. RETAIN. +*/ +static u3_noun +_cj_warm_hump(c3_l jax_l, u3_noun huc) +{ + u3_noun hap = u3_nul; + u3j_core* cop_u; + + /* Compute axes of all correctly declared arms. + */ + if ( jax_l && (cop_u = &u3D.ray_u[jax_l])->arm_u ) { + u3j_harm* jet_u; + c3_l i_l; + + for ( i_l = 0; (jet_u = &cop_u->arm_u[i_l])->fcs_c; i_l++ ) { + c3_l axe_l = 0; + + if ( '.' == *(jet_u->fcs_c) ) { + c3_d axe_d = 0; + + if ( (1 != sscanf(jet_u->fcs_c+1, "%" SCNu64, &axe_d)) || + axe_d >> 32ULL || + (((c3_w)1 << 31) & (axe_l = (c3_w)axe_d)) || + (axe_l < 2) ) + { + u3l_log("jets: activate: bad fcs %s", jet_u->fcs_c); + } + } + else { + u3_noun nam = u3i_string(jet_u->fcs_c); + u3_noun fol = u3kdb_get(u3k(huc), nam); + + if ( u3_none == fol ) { + u3l_log("jets: activate: bad fcs %s", jet_u->fcs_c); + } + else { + axe_l = _cj_axis(fol); + u3z(fol); + } + } + if ( 0 != axe_l ) { + hap = u3kdb_put(hap, axe_l, i_l); + } + } + } + return hap; +} + +/* _cj_install(): install dashboard entries. +*/ +static c3_w +_cj_install(u3j_core* ray_u, c3_w jax_l, u3_noun pel, u3_noun lab, u3j_core* dev_u) +{ + c3_w i_w; + u3_assert(u3R == &(u3H->rod_u)); + + if ( dev_u ) { + for ( i_w = 0; 0 != dev_u[i_w].cos_c; i_w++ ) { + u3j_core* kid_u = &dev_u[i_w]; + u3_noun loc = _cj_core_loc(u3k(pel), kid_u), + bal = u3nc(u3k(u3h(u3t(loc))), u3k(lab)); + + kid_u->jax_l = jax_l; + ray_u[jax_l] = *kid_u; + + if ( kid_u->bas_u ) { + c3_w j_w; + for ( j_w = 0; 0 != kid_u->bas_u[j_w]; j_w++ ) { + u3_noun key = _cj_hash(kid_u->bas_u[j_w]), + hot = u3h_git(u3R->jed.hot_p, key), + old = ( u3_none == hot ) ? u3_none : u3k(u3h(hot)), + reg = _cj_gust(old, kid_u->axe_l, u3k(pel), u3k(loc)), + huc = u3t(u3t(loc)), + hap = _cj_warm_hump(jax_l, huc), + toh = u3nq(reg, jax_l, hap, u3k(bal)); + + u3h_put(u3R->jed.hot_p, key, toh); + u3z(key); + } + } + + jax_l = _cj_install(ray_u, ++jax_l, loc, bal, kid_u->dev_u); + } + } + u3z(pel); + u3z(lab); + return jax_l; +} + +#if 0 +/* _cj_by_gut(): (~(get by a) b), unifying; RETAINS a, b, AND result. +*/ +static u3_weak +_cj_by_gut(u3_noun a, u3_noun b) +{ + if ( u3_nul == a ) { + return u3_none; + } + else { + u3_noun l_a, n_a, r_a; + u3_noun pn_a, qn_a; + + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_cell(n_a, &pn_a, &qn_a); + { + if ( (c3y == u3r_sing(b, pn_a)) ) { + return qn_a; + } + else { + if ( c3y == u3qc_gor(b, pn_a) ) { + return _cj_by_gut(l_a, b); + } + else return _cj_by_gut(r_a, b); + } + } + } +} +#endif + +/* _cj_chum(): decode chum as string. +*/ +static c3_c* +_cj_chum(u3_noun chu) +{ + if ( _(u3ud(chu)) ) { + return u3r_string(chu); + } + else { + u3_noun h_chu = u3h(chu); + u3_noun t_chu = u3t(chu); + + if ( !_(u3a_is_cat(t_chu)) ) { + return 0; + } else { + c3_c* h_chu_c = u3r_string(h_chu); + c3_c buf[33]; + + memset(buf, 0, 33); + snprintf(buf, 32, "%s%d", h_chu_c, t_chu); + + c3_free(h_chu_c); + return strdup(buf); + } + } +} + +/* _cj_je_fsck: fsck:je, or none. +*/ +static u3_noun +_cj_je_fsck(u3_noun clu) +{ + u3_noun p_clu, q_clu, r_clu; + u3_noun huk; + c3_c* nam_c; + c3_l axe_l; + + if ( c3n == u3r_trel(clu, &p_clu, &q_clu, &r_clu) ) { + u3z(clu); return u3_none; + } + if ( 0 == (nam_c = _cj_chum(p_clu)) ) { + u3z(clu); return u3_none; + } + while ( _(u3du(q_clu)) && (11 == u3h(q_clu)) ) { + q_clu = u3t(u3t(q_clu)); + } + if ( !_(u3du(q_clu)) ) { + u3z(clu); c3_free(nam_c); return u3_none; + } + + if ( (1 == u3h(q_clu)) && (0 == u3t(q_clu)) ) { + axe_l = 0; + } + else { + if ( (0 != u3h(q_clu)) || !_(u3a_is_cat(axe_l = u3t(q_clu))) ) { + u3z(clu); c3_free(nam_c); return u3_none; + } + } + + { + huk = 0; + + while ( _(u3du(r_clu)) ) { + u3_noun ir_clu, tr_clu, pir_clu, qir_clu; + + if ( (c3n == u3r_cell(r_clu, &ir_clu, &tr_clu)) || + (c3n == u3r_cell(ir_clu, &pir_clu, &qir_clu)) || + (c3n == u3ud(pir_clu)) ) + { + u3z(huk); u3z(clu); c3_free(nam_c); return u3_none; + } + huk = u3kdb_put(huk, u3k(pir_clu), u3k(qir_clu)); + r_clu = tr_clu; + } + } + u3z(clu); + + { + u3_noun pro = u3nt(u3i_string(nam_c), axe_l, huk); + c3_free(nam_c); + return pro; + } +} + +/* _cj_find_cold(): search cold state for `bat`s [bash registry]. + * RETAIN. + */ +static u3_weak +_cj_find_cold(u3_noun bat) +{ + u3a_road* rod_u = u3R; + + while ( 1 ) { + u3_weak bar = u3h_get(rod_u->jed.cod_p, bat); + + if ( u3_none != bar ) { + return bar; + } + + if ( rod_u->par_p ) { + rod_u = u3to(u3_road, rod_u->par_p); + } + else return u3_none; + } +} + +/* _cj_find_warm(): search warm state for `loc`s activation. + * RETAIN. + */ +static u3_weak +_cj_find_warm(u3_noun loc) +{ + u3a_road* rod_u = u3R; + + while ( 1 ) { + u3_weak ank = u3h_get(rod_u->jed.war_p, loc); + + if ( u3_none != ank ) { + return ank; + } + + if ( rod_u->par_p ) { + rod_u = u3to(u3_road, rod_u->par_p); + } + else return u3_none; + } +} + +static u3_weak _cj_spot(u3_noun cor, u3_weak* bas); + +/* _cj_reg_find(): locate core within registry. RETAIN. + */ +static u3_weak +_cj_reg_find(u3_noun reg, u3_noun cor) +{ + u3_noun rut = u3h(reg), + pas = u3t(reg), + rum = u3qdb_get(rut, u3t(cor)); + if ( u3_nul != rum ) { + u3_noun loc = u3k(u3t(rum)); + u3z(rum); + return loc; + } + else { + while ( u3_nul != pas ) { + u3_noun pap = u3h(pas), + axe = u3h(pap), + lol = u3t(pap); + u3_weak par = u3r_at(axe, cor), + pel; + if ( u3_none != par ) { + pel = _cj_spot(par, NULL); + if ( u3_none != pel ) { + u3_noun nit = u3qdb_get(lol, pel); + u3z(pel); + if ( u3_nul != nit ) { + u3_noun loc = u3k(u3t(nit)); + u3z(nit); + return loc; + } + } + } + pas = u3t(pas); + } + return u3_none; + } +} + +/* _cj_jit(): generate arbitrary warm jet-associated data. RETAIN. +*/ +static u3_noun +_cj_jit(c3_l jax_l, u3_noun bat) +{ + return u3_nul; +} + +/* _cj_loc_axe(): axis-within-core from location (0 for root). RETAIN. + */ +static u3_noun +_cj_loc_axe(u3_noun loc) +{ + u3_noun pat = u3h(loc); + return ( c3n == u3h(pat) ) + ? u3k(u3h(u3t(pat))) + : (c3y == u3h(u3t(pat))) ? 0 : 3; +} + +/* _cj_loc_pel(): parent location (or root noun, if root) of loc. RETAIN. + */ +static u3_noun +_cj_loc_pel(u3_noun loc) +{ + return u3k(u3t(u3t(u3h(loc)))); +} + +/* _cj_spot_cold(): spot, cold dashboard only. *bar is set to + * the [bash registry] found for battery. RETAIN. + */ +static u3_weak +_cj_spot_cold(u3_noun cor, u3_weak* bar) +{ + *bar = _cj_find_cold(u3h(cor)); + if ( u3_none == *bar ) { + return u3_none; + } + else { + return _cj_reg_find(u3t(*bar), cor); + } +} + +/* _cj_spot_hot(): try to locate core by hot dashboard. if found, + * the activation (warm state) is returned and the + * location is produced at *loc. RETAIN. + */ +static u3_weak +_cj_spot_hot(u3_noun cor, u3_noun bas, u3_noun* loc) +{ + u3_noun bat = u3h(cor); + u3_weak act = u3_none, + hot = u3h_get(u3H->rod_u.jed.hot_p, bas); + if ( u3_none != hot ) { + u3_noun reg, jax, hap, bal; + c3_l jax_l; + u3x_qual(hot, ®, &jax, &hap, &bal); + jax_l = (c3_l) jax; + if ( u3_none != (*loc = _cj_reg_find(reg, cor)) ) { + act = u3nq(jax_l, u3k(hap), u3k(bal), _cj_jit(jax_l, bat)); + } + u3z(hot); + } + return act; +} + +/* _cj_spot(): find location of cor. expensive. RETAIN. + * bas is complicated to make it easy to cache bashes. + * you can safely ignore it by passing NULL. Otherwise, + * if it points to u3_none, and no location is found, + * a bash will be PRODUCED there. if it contains a bash, + * that will be used instead of calling _cj_bash. + */ +static u3_weak +_cj_spot(u3_noun cor, u3_weak* bas) +{ + u3_weak bak = u3_none, + bar = u3_none, + reg = u3_none, + loc = _cj_spot_cold(cor, &bar); + + if ( NULL == bas ) { + bas = &bak; + } + + if ( u3_none != bar ) { + if ( (u3_none == *bas) ) { + *bas = u3k(u3h(bar)); + } + reg = u3k(u3t(bar)); + u3z(bar); + } + + if ( u3_none == loc ) { + if ( u3_none == *bas ) { + *bas = _cj_bash(u3h(cor)); + } + + if ( !(u3C.wag_w & u3o_hashless) ) { + u3_weak act = _cj_spot_hot(cor, *bas, &loc); + if ( u3_none != act ) { + reg = _cj_gust(reg, _cj_loc_axe(loc), _cj_loc_pel(loc), u3k(loc)); + u3h_put(u3R->jed.cod_p, u3h(cor), u3nc(u3k(*bas), u3k(reg))); + /* caution: could overwrites old value, debug batteries etc. + ** old value contains old _cj_jit (from different + ** battery). if we change jit to (map battery *), + ** will need to merge with that map here. + */ + u3h_put(u3R->jed.war_p, loc, act); + } + } + } + if ( u3_none != bak ) { + u3z(bak); + } + if ( u3_none != reg ) { + u3z(reg); + } + return loc; +} + +/* _cj_cast(): create a u3j_fink that can be used to efficiently verify + * that another core is located where this one is. RETAIN. + */ +static u3p(u3j_fink) +_cj_cast(u3_noun cor, u3_noun loc) +{ + c3_w i_w = 0; + u3_noun j, par, bat, dyn, pax, + rev = u3_nul, + pat = u3h(loc); + u3j_fink* fin_u; + + while ( c3n == u3h(pat) ) { + bat = u3h(cor); + dyn = u3t(pat); + pax = u3h(dyn); + loc = u3t(dyn); + pat = u3h(loc); + rev = u3nc(u3nc(u3k(bat), u3k(pax)), rev); + // pax already known-valid + cor = u3r_at(pax, cor); + ++i_w; + } + + fin_u = u3a_walloc(c3_wiseof(u3j_fink) + + (i_w * c3_wiseof(u3j_fist))); + fin_u->len_w = i_w; + fin_u->sat = u3k(cor); + for ( j = rev; i_w-- > 0; j = u3t(j) ) { + u3j_fist* fis_u = &(fin_u->fis_u[i_w]); + par = u3h(j); + fis_u->bat = u3k(u3h(par)); + fis_u->pax = u3k(u3t(par)); + } + u3z(rev); + u3_assert( u3_nul == j ); + + return u3of(u3j_fink, fin_u); +} + +/* _cj_fine(): check that a core matches a u3j_fink. RETAIN. + */ +static c3_o +_cj_fine(u3_noun cor, u3p(u3j_fink) fin_p) +{ + u3j_fink* fin_u = u3to(u3j_fink, fin_p); + c3_w i_w; + for ( i_w = 0; i_w < fin_u->len_w; ++i_w ) { + u3j_fist* fis_u = &(fin_u->fis_u[i_w]); + if ( c3n == u3r_sing(fis_u->bat, u3h(cor)) ) { + return c3n; + } + else { + cor = u3r_at(fis_u->pax, cor); + } + } + return u3r_sing(fin_u->sat, cor); +} + +/* _cj_nail(): resolve hot state for arm at axis within cores located + * at loc. a label will be PRODUCED at *lab, unconditionally. + * Arguments are RETAINED. Return value is yes if a jet driver + * is present. + */ +static c3_o +_cj_nail(u3_noun loc, u3_noun axe, + u3_noun* lab, u3j_core** cop_u, u3j_harm** ham_u) +{ + c3_o ret_o; + u3_noun jax, hap, bal, jit; + u3_weak act; + act = _cj_find_warm(loc); + u3_assert(u3_none != act); + u3x_qual(act, &jax, &hap, &bal, &jit); + + *lab = u3k(bal); + if ( 0 == jax ) { + ret_o = c3n; + } + else { + u3_weak inx = u3kdb_get(u3k(hap), u3k(axe)); + if ( u3_none == inx ) { + ret_o = c3n; + } + else { + c3_l jax_l = jax, + inx_l = inx; + *cop_u = &(u3D.ray_u[jax_l]); + *ham_u = &((*cop_u)->arm_u[inx_l]); + ret_o = c3y; + } + } + + u3z(act); + return ret_o; +} + +/* _cj_hot_mean(): in parent, declare a core. RETAINS. +*/ +static c3_l +_cj_hot_mean(c3_l par_l, u3_noun nam) +{ + u3j_core* par_u; + u3j_core* dev_u; + + if ( 0 != par_l ) { + par_u = &u3D.ray_u[par_l]; + dev_u = par_u->dev_u; + } + else { + par_u = 0; + dev_u = u3D.dev_u; + } + + { + c3_w i_l = 0; + u3j_core* cop_u; + + while ( (cop_u = &dev_u[i_l])->cos_c ) { + if ( _(u3r_sing_c(cop_u->cos_c, nam)) ) { +#if 0 + u3l_log("hot: bound jet %d/%s/%s/", + cop_u->jax_l, + cop_u->cos_c, + par_u ? par_u->cos_c : "~"); +#endif + return cop_u->jax_l; + } + i_l++; + } + } + return 0; +} + +/* u3j_boot(): initialize jet system. +*/ +c3_w +u3j_boot(c3_o nuu_o) +{ + u3_assert(u3R == &(u3H->rod_u)); + + u3D.len_l = _cj_count(0, u3D.dev_u); + u3D.all_l = (2 * u3D.len_l) + 1024; // horrid heuristic + + u3D.ray_u = c3_malloc(u3D.all_l * sizeof(u3j_core)); + memset(u3D.ray_u, 0, (u3D.all_l * sizeof(u3j_core))); + + if ( c3n == nuu_o ) { + u3h_free(u3R->jed.hot_p); + } + u3R->jed.hot_p = u3h_new(); + + return _cj_install(u3D.ray_u, 1, + (c3_l) (long long) u3D.dev_u[0].par_u, + u3_nul, + u3D.dev_u); +} + +/* _cj_soft(): kick softly by arm axis. +*/ +static u3_noun +_cj_soft(u3_noun cor, u3_noun axe) +{ + u3_noun arm = u3x_at(axe, cor); + + return u3n_nock_on(cor, u3k(arm)); +} + + void + find_error(u3_noun cor, + u3_noun old, + u3_noun new); + +/* _cj_kick_z(): try to kick by jet. If no kick, produce u3_none. +** +** `cor` is RETAINED iff there is no kick, TRANSFERRED if one. +** `axe` is RETAINED. +*/ +static u3_weak +_cj_kick_z(u3_noun cor, u3j_core* cop_u, u3j_harm* ham_u, u3_atom axe) +{ + if ( 0 == ham_u->fun_f ) { + return u3_none; + } + + if ( !_(ham_u->liv) ) { + return u3_none; + } + else { +#ifdef U3_MEMORY_DEBUG + c3_w cod_w; + + { + char soc_c[5]; + + memset(soc_c, 0, 5); + strncpy(soc_c, cop_u->cos_c, 4); + soc_c[4] = 0; + cod_w = u3i_string(soc_c); + cod_w = u3a_lush(cod_w); + } +#endif + + if ( _(ham_u->ice) ) { + u3_weak pro = ham_u->fun_f(cor); + +#ifdef U3_MEMORY_DEBUG + u3a_lop(cod_w); +#endif + if ( u3_none != pro ) { + u3z(cor); + return pro; + } + } + else { + u3_weak pro, ame; + + ham_u->ice = c3y; + pro = ham_u->fun_f(cor); + ham_u->ice = c3n; + +#ifdef U3_MEMORY_DEBUG + u3a_lop(cod_w); +#endif + if ( u3_none == pro ) { + u3z(cor); + return pro; + } + ham_u->liv = c3n; + ame = _cj_soft(cor, axe); + ham_u->liv = c3y; + + if ( c3n == u3r_sing(ame, pro) ) { + u3l_log("test: %s %s: mismatch: good %x, bad %x", + cop_u->cos_c, + (!strcmp(".2", ham_u->fcs_c)) ? "$" : ham_u->fcs_c, + u3r_mug(ame), + u3r_mug(pro)); + ham_u->liv = c3n; + + return u3m_bail(c3__fail); + } + else { + +#if 0 + u3l_log("test: %s %s", + cop_u->cos_c, + (!strcmp(".2", ham_u->fcs_c)) ? "$" : ham_u->fcs_c); +#endif + u3z(ame); + return pro; + } + } + return u3_none; + } +} + +/* _cj_hook_in(): execute hook from core, or fail. +*/ +static u3_noun +_cj_hook_in(u3_noun cor, + const c3_c* tam_c, + c3_o jet_o) +{ + u3_weak loc, col; + u3_noun roc, tem, got, pat, nam, huc; + + if ( c3n == u3du(cor) ) { + u3l_log("_cj_hook_in failure: c3n == u3du(cor)"); + return u3m_bail(c3__fail); + } + + loc = _cj_spot(cor, NULL); + if ( u3_none == loc ) { + u3l_log("_cj_hook_in failure: u3_none == loc"); + return u3m_bail(c3__fail); + } + + tem = u3i_string(tam_c); + while ( 1 ) { + u3x_trel(loc, &pat, &nam, &huc); + got = u3qdb_get(huc, tem); + if ( u3_nul != got ) { + c3_l axe_l; + u3_noun pro, fol; + u3j_core* cop_u; + + u3z(tem); + fol = u3k(u3t(got)); + u3z(got); + axe_l = _cj_axis(fol); + if ( 0 == axe_l ) { + u3t_off(glu_o); + pro = u3n_nock_on(cor, fol); + u3t_on(glu_o); + } + else { + c3_l jax_l, inx_l; + u3_noun hap, act; + + u3z(fol); + act = _cj_find_warm(loc); + jax_l = u3h(act); + hap = u3h(u3t(act)); + cop_u = &u3D.ray_u[jax_l]; + + // Tricky: the above case would work here too, but would + // disable jet_o and create some infinite recursions. + // + u3t_off(glu_o); + if ( (c3n == jet_o) || + (u3_none == (inx_l = u3kdb_get(u3k(hap), axe_l))) || + (u3_none == (pro = _cj_kick_z(cor, + cop_u, + &cop_u->arm_u[inx_l], + axe_l))) ) { + pro = u3n_nock_on(cor, u3k(u3x_at(axe_l, cor))); + } + u3t_on(glu_o); + u3z(act); + } + u3z(loc); + return pro; + } + else if ( c3n == u3h(pat) ) { + u3_noun dyn = u3t(pat), + axe = u3h(dyn), + pel = u3t(dyn); + // axe already known-valid + roc = u3k(u3r_at(axe, cor)); + u3z(cor); + cor = roc; + col = u3k(pel); + u3z(loc); + loc = col; + } + else { + u3_noun sat = u3t(pat); + if ( c3y == u3h(sat) ) { + u3l_log("_cj_hook_in failure: c3y == u3h(sat)"); + return u3m_bail(c3__fail); + } + else { + col = u3k(u3t(sat)); + u3z(loc); + loc = col; + roc = u3k(u3t(cor)); + u3z(cor); + cor = roc; + } + } + } +} + +/* u3j_soft(): execute soft hook. +*/ +u3_noun +u3j_soft(u3_noun cor, + const c3_c* tam_c) +{ + u3_noun pro; + u3t_on(glu_o); + pro = _cj_hook_in(cor, tam_c, c3n); + u3t_off(glu_o); + return pro; +} + +/* u3j_hook(): execute hook from core, or fail. +*/ +u3_noun +u3j_hook(u3_noun cor, + const c3_c* tam_c) +{ + u3_noun pro; + u3t_on(glu_o); + pro = _cj_hook_in(cor, tam_c, c3y); + u3t_off(glu_o); + return pro; +} + +/* _cj_prog(): stop tracing glu and find a nock program + */ +static u3p(u3n_prog) +_cj_prog(u3_weak loc, u3_noun fol) +{ + u3p(u3n_prog) pog_p; + u3t_off(glu_o); + pog_p = u3n_find((loc == u3_none ? u3_nul : loc), fol); + u3t_on(glu_o); + return pog_p; +} + +static inline c3_w +_cj_of_hank(u3j_hank *han_u) +{ + u3_post han_p = u3of(u3j_hank, han_u); + return han_p >> u3a_vits; +} + +static inline u3j_hank* +_cj_to_hank(c3_w han_w) +{ + u3_post han_p = han_w << u3a_vits; + return u3to(u3j_hank, han_p); +} + +/* cj_hank_find(): find cached hook information, keyed by arbitrary + * prefix and term cords. RETAIN. + */ +static u3j_hank* +_cj_hank_find(u3_noun pre, u3_noun tam) +{ + u3_noun key = u3nc(u3k(pre), u3k(tam)); + u3_noun got = u3h_git(u3R->jed.han_p, key); + + if ( u3_none != got ) { + u3z(key); + return _cj_to_hank(got); + } + else { + u3j_hank* new_u = u3a_walloc(c3_wiseof(u3j_hank)); + u3a_road* rod_u = u3R; + + while ( rod_u->par_p && u3_none == got ) { + rod_u = u3to(u3a_road, rod_u->par_p); + got = u3h_git(rod_u->jed.han_p, key); + } + + if ( u3_none == got ) { + new_u->hax = u3_none; + } + else { + u3j_hank* old_u = _cj_to_hank(got); + if ( u3_none != (new_u->hax = old_u->hax) ) { + // it's unusual but safe to "take" here, because + // u3a_take will no-op on senior nouns (just as u3k would) + // + u3j_site_take(&(new_u->sit_u), &(old_u->sit_u)); + } + } + + u3h_put(u3R->jed.han_p, key, _cj_of_hank(new_u)); + u3z(key); + return new_u; + } +} + +/* _cj_hank_fine(): check that cached hook information is valid + * for given core. *inn will point to the hooked + * core on return if valid. RETAIN. + */ +static c3_o +_cj_hank_fine(u3j_hank* han_u, u3_noun cor, u3_noun *inn) +{ + u3_noun hax = han_u->hax; + if ( u3_none == hax ) { + return c3n; + } + else { + *inn = u3r_at(hax, cor); + if ( u3_none == *inn ) { + return c3n; + } + else { + u3j_site* sit_u = &(han_u->sit_u); + u3_assert(u3_none != sit_u->loc); + return _cj_fine(*inn, sit_u->fin_p); + } + } +} + +/* _cj_hank_lose(): release memory maintained in a hook cache. +*/ +static void +_cj_hank_lose(u3j_hank* han_u) +{ + if ( u3_none != han_u->hax ) { + u3z(han_u->hax); + u3j_site_lose(&(han_u->sit_u)); + } +} + +/* _cj_hank_fill(): slow path, populate han_u. + */ +static u3_noun +_cj_hank_fill(u3j_hank* han_u, u3_noun tam, u3_noun cor) +{ + u3_weak loc, col; + u3_noun got, pat, nam, huc; + u3_noun hax = 1; + u3j_site* sit_u = &(han_u->sit_u); + + if ( c3n == u3du(cor) ) { + u3l_log("fail in _cj_hank_fill (c3n == u3du(cor))"); + return u3m_bail(c3__fail); + } + + sit_u->bas = u3_none; + if ( u3_none == (col = loc = _cj_spot(cor, NULL)) ) { + u3l_log("fail in _cj_hank_fill (_cj_spot(cor, NULL))"); + return u3m_bail(c3__fail); + } + + while ( 1 ) { + u3x_trel(loc, &pat, &nam, &huc); + got = u3qdb_get(huc, tam); + if ( u3_nul != got ) { + u3_noun fol = u3k(u3t(got)); + u3z(got); + sit_u->bat = u3k(u3h(cor)); + sit_u->loc = u3k(loc); + sit_u->fin_p = _cj_cast(cor, loc); + sit_u->fon_o = c3y; + if ( 0 == (sit_u->axe = _cj_axis(fol)) ) { + sit_u->jet_o = c3n; + sit_u->pog_p = _cj_prog(loc, fol); + } + else { + // loc already known-valid + han_u->sit_u.pog_p = _cj_prog(loc, u3r_at(sit_u->axe, cor)); + han_u->sit_u.jet_o = _cj_nail(loc, sit_u->axe, + &(sit_u->lab), &(sit_u->cop_u), &(sit_u->ham_u)); + } + u3z(fol); + u3z(col); + han_u->hax = hax; + return cor; + } + else if ( c3n == u3h(pat) ) { + u3_noun dyn = u3t(pat), + axe = u3h(dyn), + xah; + // axe already known-valid + cor = u3r_at(axe, cor); + loc = u3t(dyn); + xah = u3qc_peg(axe, hax); + u3z(hax); + hax = xah; + } + else { + u3_noun sat = u3t(pat); + if ( c3y == u3h(sat) ) { + u3l_log("fail in _cj_hank_fill (c3y == u3h(sat))"); + return u3m_bail(c3__fail); + } + else { + u3_noun xah; + cor = u3t(cor); + loc = u3t(sat); + xah = u3qc_peg(3, hax); + u3z(hax); + hax = xah; + } + } + } +} + +/* _cj_sink(): kick by nock. + */ +static u3_noun +_cj_sink(u3_noun cor, u3_noun axe) +{ + u3_noun fol = u3x_at(axe, cor); + u3z(axe); + return u3n_nock_on(cor, u3k(fol)); +} + +/* u3j_kick(): new kick. +** +** `axe` is RETAINED by the caller; `cor` is RETAINED iff there +** is no kick, TRANSFERRED if one. +*/ +u3_weak +u3j_kick(u3_noun cor, u3_noun axe) +{ + u3t_on(glu_o); + u3_weak loc = _cj_spot(cor, NULL); + if ( u3_none == loc ) { + u3t_off(glu_o); + return u3_none; + } + else { + u3_weak act = _cj_find_warm(loc); + u3z(loc); + if ( u3_none == act ) { + u3t_off(glu_o); + return u3_none; + } + else { + c3_l jax_l; + u3_noun hap, bal, jit, inx; + + u3x_qual(act, &jax_l, &hap, &bal, &jit); + + if ( u3_none == (inx = u3kdb_get(u3k(hap), u3k(axe))) ) { + u3t_off(glu_o); + { + c3_o pof_o = __(u3C.wag_w & u3o_debug_cpu); + c3_o trc_o = __(u3C.wag_w & u3o_trace); + + if ( _(pof_o) ) { + pof_o = u3t_come(bal); + } + if ( _(trc_o) ) { + trc_o = u3t_nock_trace_push(bal); + } + u3z(act); + if ( _(pof_o) || _(trc_o) ) { + u3_noun pro = _cj_sink(cor, u3k(axe)); + + if (_(pof_o)) { + u3t_flee(); + } + if ( _(trc_o) ) { + u3t_nock_trace_pop(); + } + return pro; + } + else { + return u3_none; + } + } + } + else { + u3j_core* cop_u = &u3D.ray_u[jax_l]; + c3_l inx_l = inx; + u3j_harm* ham_u = &cop_u->arm_u[inx_l]; + c3_o pof_o = __(u3C.wag_w & u3o_debug_cpu); + c3_o trc_o = __(u3C.wag_w & u3o_trace); + u3_noun pro; + + if ( _(pof_o) ) { + pof_o = u3t_come(bal); + } + if ( _(trc_o) ) { + trc_o = u3t_nock_trace_push(bal); + } + u3z(act); + u3t_off(glu_o); + pro = _cj_kick_z(cor, cop_u, ham_u, axe); + + if ( u3_none == pro ) { + if ( _(pof_o) || _(trc_o) ) { + pro = _cj_sink(cor, u3k(axe)); + + if (_(pof_o)) { + u3t_flee(); + } + if ( _(trc_o) ) { + u3t_nock_trace_pop(); + } + } + return pro; + } + else { + if ( _(pof_o) ) { + u3t_flee(); + } + if ( _(trc_o) ) { + u3t_nock_trace_pop(); + } + return pro; + } + } + } + } +} + +/* _cj_fink_take(): copy u3j_fink from junior road. +*/ +static u3j_fink* +_cj_fink_take(u3j_fink* jun_u) +{ + c3_w i_w, len_w = jun_u->len_w; + u3j_fink* fin_u = u3a_walloc(c3_wiseof(u3j_fink) + + (len_w * c3_wiseof(u3j_fist))); + + fin_u->len_w = len_w; + fin_u->sat = u3a_take(jun_u->sat); + for ( i_w = 0; i_w < len_w; ++i_w ) { + u3j_fist* fis_u = &(fin_u->fis_u[i_w]); + u3j_fist* sif_u = &(jun_u->fis_u[i_w]); + fis_u->bat = u3a_take(sif_u->bat); + fis_u->pax = u3a_take(sif_u->pax); + } + return fin_u; +} + +/* _cj_fink_free(): lose and free everything in a u3j_fink. +*/ +static void +_cj_fink_free(u3p(u3j_fink) fin_p) +{ + c3_w i_w; + u3j_fink* fin_u = u3to(u3j_fink, fin_p); + u3z(fin_u->sat); + for ( i_w = 0; i_w < fin_u->len_w; ++i_w ) { + u3j_fist* fis_u = &(fin_u->fis_u[i_w]); + u3z(fis_u->bat); + u3z(fis_u->pax); + } + u3a_wfree(fin_u); +} + +/* u3j_rite_take(): copy junior rite references. [dst_u] is uninitialized +*/ +void +u3j_rite_take(u3j_rite* dst_u, u3j_rite* src_u) +{ + if ( u3_none == src_u->clu ) { + dst_u->clu = u3_none; + dst_u->fin_p = 0; + dst_u->own_o = c3n; + } + else { + dst_u->clu = u3a_take(src_u->clu); + dst_u->own_o = src_u->own_o; + dst_u->fin_p = ( c3n == src_u->own_o ) + ? src_u->fin_p + : u3of(u3j_fink, _cj_fink_take(u3to(u3j_fink, src_u->fin_p))); + } +} + +/* u3j_rite_merge(): copy rite references from src_u to dst_u, +** losing old references +*/ +void +u3j_rite_merge(u3j_rite* dst_u, u3j_rite* src_u) +{ + if ( u3_none != src_u->clu ) { + if ( u3_none != dst_u->clu ) { + u3z(dst_u->clu); + } + + dst_u->clu = src_u->clu; + + if ( dst_u->fin_p != src_u->fin_p ) { + if ( c3y == dst_u->own_o ) { + _cj_fink_free(dst_u->fin_p); + } + + dst_u->fin_p = src_u->fin_p; + dst_u->own_o = src_u->own_o; + } + } +} + +/* u3j_site_take(): copy junior site references. [dst_u] is uninitialized +*/ +void +u3j_site_take(u3j_site* dst_u, u3j_site* src_u) +{ + dst_u->axe = u3a_take(src_u->axe); + dst_u->bat = u3_none; + dst_u->bas = u3_none; + dst_u->pog_p = 0; + + if ( u3_none == src_u->loc ) { + dst_u->loc = u3_none; + dst_u->lab = u3_none; + dst_u->jet_o = c3n; + dst_u->cop_u = NULL; + dst_u->ham_u = NULL; + dst_u->fin_p = 0; + dst_u->fon_o = c3n; + } + else { + dst_u->loc = u3a_take(src_u->loc); + dst_u->lab = u3a_take(src_u->lab); + dst_u->jet_o = src_u->jet_o; + dst_u->cop_u = src_u->cop_u; + dst_u->ham_u = src_u->ham_u; + + if ( c3y == src_u->fon_o ) { + dst_u->fin_p = u3of(u3j_fink, _cj_fink_take(u3to(u3j_fink, src_u->fin_p))); + dst_u->fon_o = c3y; + } + else { + dst_u->fin_p = src_u->fin_p; + dst_u->fon_o = c3n; + } + } +} + +/* u3j_site_merge(): copy site references from src_u to dst_u, +** losing old references +*/ +void +u3j_site_merge(u3j_site* dst_u, u3j_site* src_u) +{ + u3z(dst_u->axe); + dst_u->axe = src_u->axe; + + if ( u3_none != src_u->loc ) { + u3z(dst_u->loc); // XX these may be u3_none + u3z(dst_u->lab); + dst_u->loc = src_u->loc; + dst_u->lab = src_u->lab; + dst_u->cop_u = src_u->cop_u; + dst_u->ham_u = src_u->ham_u; + dst_u->jet_o = src_u->jet_o; + + if ( dst_u->fin_p != src_u->fin_p ) { + if ( c3y == dst_u->fon_o ) { + _cj_fink_free(dst_u->fin_p); + } + + dst_u->fin_p = src_u->fin_p; + dst_u->fon_o = src_u->fon_o; + } + } +} + +/* u3j_site_ream(): refresh u3j_site after restoring from checkpoint +*/ +void +u3j_site_ream(u3j_site* sit_u) +{ + if ( u3_none != sit_u->loc ) { + u3z(sit_u->lab); + sit_u->jet_o = _cj_nail(sit_u->loc, sit_u->axe, + &(sit_u->lab), &(sit_u->cop_u), &(sit_u->ham_u)); + } +} + +/* _cj_site_lock(): ensure site has a valid program pointer + */ +static void +_cj_site_lock(u3_noun loc, u3_noun cor, u3j_site* sit_u) +{ + if ( (u3_none != sit_u->bat) && + (c3y == u3r_sing(sit_u->bat, u3h(cor))) ) { + return; + } + sit_u->pog_p = _cj_prog(loc, u3x_at(sit_u->axe, cor)); + if ( u3_none != sit_u->bat ) { + u3z(sit_u->bat); + } + sit_u->bat = u3k(u3h(cor)); +} + +/* _cj_burn(): stop tracing glu and call a nock program + */ +static u3_noun +_cj_burn(u3p(u3n_prog) pog_p, u3_noun cor) +{ + u3_noun pro; + u3t_off(glu_o); + pro = u3n_burn(pog_p, cor); + u3t_on(glu_o); + return pro; +} + +/* _cj_site_kick_hot(): execute site's kick on located core +** (no validity checks). +*/ +static u3_weak +_cj_site_kick_hot(u3_noun loc, u3_noun cor, u3j_site* sit_u, c3_o lok_o) +{ + u3_weak pro = u3_none; + c3_o jet_o = sit_u->jet_o; + c3_o pof_o = __(u3C.wag_w & u3o_debug_cpu); + c3_o trc_o = __(u3C.wag_w & u3o_trace); + + if ( c3n == pof_o && c3n == trc_o ) { + if ( c3y == jet_o ) { + u3t_off(glu_o); + pro = _cj_kick_z(cor, sit_u->cop_u, sit_u->ham_u, sit_u->axe); + u3t_on(glu_o); + } + if ( u3_none == pro ) { + if ( c3y == lok_o ) { + _cj_site_lock(loc, cor, sit_u); + } + } + } + else { + if ( _(pof_o) ) { + pof_o = u3t_come(sit_u->lab); + } + if ( _(trc_o) ) { + trc_o = u3t_nock_trace_push(sit_u->lab); + } + + if ( c3y == jet_o ) { + u3t_off(glu_o); + pro = _cj_kick_z(cor, sit_u->cop_u, sit_u->ham_u, sit_u->axe); + u3t_on(glu_o); + } + if ( u3_none == pro ) { + if ( c3y == lok_o ) { + _cj_site_lock(loc, cor, sit_u); + } + pro = _cj_burn(sit_u->pog_p, cor); + } + + if ( c3y == pof_o ) { + u3t_flee(); + } + if ( c3y == trc_o ) { + u3t_nock_trace_pop(); + } + } + + return pro; +} + +/* _cj_site_kick(): execute site's kick on core. + */ +static u3_weak +_cj_site_kick(u3_noun cor, u3j_site* sit_u) +{ + u3_weak loc, pro; + + loc = pro = u3_none; + + if ( u3_none != sit_u->loc ) { + if ( c3y == _cj_fine(cor, sit_u->fin_p) ) { + loc = sit_u->loc; + pro = _cj_site_kick_hot(loc, cor, sit_u, c3y); + } + } + + if ( u3_none == loc ) { + loc = _cj_spot(cor, &(sit_u->bas)); + if ( u3_none != loc ) { + u3p(u3j_fink) fon_p = 0; + u3_weak lod = u3_none; + u3_weak lob = u3_none; + + if ( u3_none != sit_u->loc ) { + lod = sit_u->loc; + lob = sit_u->lab; + if ( c3y == sit_u->fon_o ) { + fon_p = sit_u->fin_p; + } + } + + sit_u->loc = loc; + sit_u->fin_p = _cj_cast(cor, loc); + sit_u->fon_o = c3y; + sit_u->jet_o = _cj_nail(loc, sit_u->axe, + &(sit_u->lab), &(sit_u->cop_u), &(sit_u->ham_u)); + pro = _cj_site_kick_hot(loc, cor, sit_u, c3y); + + if ( u3_none != lod ) { + u3z(lod); + u3z(lob); + if ( 0 != fon_p ) { + _cj_fink_free(fon_p); + } + } + } + } + + if ( u3_none == pro ) { + _cj_site_lock(loc, cor, sit_u); + } + + return pro; +} + +/* u3j_site_kick(): kick a core with a u3j_site cache. + */ +u3_weak +u3j_site_kick(u3_noun cor, u3j_site* sit_u) +{ + u3_weak pro; + u3t_on(glu_o); + pro = _cj_site_kick(cor, sit_u); + u3t_off(glu_o); + return pro; +} + +/* u3j_cook(): Execute hook from core, call site cached by arbitrary c string +*/ +u3_noun +u3j_cook(const c3_c* key_c, + u3_noun cor, + const c3_c* tam_c) +{ + u3_noun pro, key, tam, inn; + u3j_hank* han_u; + + u3t_on(glu_o); + key = u3i_string(key_c); + tam = u3i_string(tam_c); + han_u = _cj_hank_find(key, tam); + if ( c3n == _cj_hank_fine(han_u, cor, &inn) ) { + _cj_hank_lose(han_u); + inn = _cj_hank_fill(han_u, tam, cor); + } + pro = _cj_site_kick(u3k(inn), &(han_u->sit_u)); + if ( u3_none == pro ) { + pro = _cj_burn(han_u->sit_u.pog_p, inn); + } + u3z(cor); + + u3z(key); + u3z(tam); + u3t_off(glu_o); + return pro; +} + +/* u3j_kink(): kick either by jet or by nock. +*/ +u3_noun +u3j_kink(u3_noun cor, u3_noun axe) +{ + u3_weak pro = u3j_kick(cor, axe); + + if ( u3_none != pro ) { + return pro; + } + else { + return _cj_sink(cor, axe); + } +} + +/* u3j_gate_prep(): prepare a locally cached gate to call repeatedly. + * core is TRANSFERRED. + */ +void +u3j_gate_prep(u3j_site* sit_u, u3_noun cor) +{ + u3_noun loc; + u3t_on(glu_o); + if ( c3n == u3du(cor) || c3n == u3du(u3t(cor)) ) { + u3m_bail(c3__exit); + return; + } + sit_u->bas = u3_none; + sit_u->axe = 2; + sit_u->bat = cor; // a lie, this isn't really the battery! + sit_u->loc = loc = _cj_spot(cor, &(sit_u->bas)); + sit_u->pog_p = _cj_prog(loc, u3h(cor)); + if ( u3_none != loc ) { + u3_noun pax = _cj_loc_axe(loc), + pay = u3qc_cap(pax), + pam = u3qc_mas(pax); + if ( 3 != pay || 2 == pam || (3 != pam && 3 != u3qc_cap(pam)) ) { + u3l_log("u3j_gate_prep(): parent axis includes sample"); + u3m_p("axis", pax); + u3_weak act = _cj_find_warm(loc); + u3_assert( u3_none != act ); + sit_u->jet_o = c3n; + sit_u->lab = u3k(u3h(u3t(u3t(act)))); + u3z(act); + } + else { + sit_u->jet_o = _cj_nail(loc, 2, + &(sit_u->lab), &(sit_u->cop_u), &(sit_u->ham_u)); + } + u3z(pam); u3z(pax); + } + u3t_off(glu_o); +} + +/* u3j_gate_slam(): slam a site prepared by u3j_gate_find() with sample. + * sam is TRANSFERRED. + */ +u3_noun +u3j_gate_slam(u3j_site* sit_u, u3_noun sam) +{ + u3_weak pro; + u3_noun cor; + + u3t_on(glu_o); + pro = u3_none; + cor = u3nt(u3k(u3h(sit_u->bat)), + sam, + u3k(u3t(u3t(sit_u->bat)))); + if ( u3_none != sit_u->loc ) { + pro = _cj_site_kick_hot(sit_u->loc, cor, sit_u, c3n); + } + if ( u3_none == pro ) { + pro = _cj_burn(sit_u->pog_p, cor); + } + u3t_off(glu_o); + return pro; +} + +/* u3j_gate_lose(): clean up site prepared by u3j_gate_find(). + */ +void +u3j_gate_lose(u3j_site* sit_u) +{ + u3z(sit_u->bat); + u3z(sit_u->bas); + if ( u3_none != sit_u->loc ) { + u3z(sit_u->loc); + u3z(sit_u->lab); + } +} + +/* _cj_minx(): produce location of core from fsck'd clue. RETAIN. + */ +static u3_weak +_cj_minx(u3_noun cey, u3_noun cor) +{ + u3_noun nam, axe, huc; + u3x_trel(cey, &nam, &axe, &huc); + + if ( 0 == axe ) { + return u3nt(u3nt(c3y, c3y, u3k(u3t(cor))), u3k(nam), u3k(huc)); + } + else { + u3_weak par, pel; + u3_noun pat; + + par = u3r_at(axe, cor); + if ( u3_none == par || c3n == u3du(par) ) { + u3l_log("fund: %s is bogus", u3r_string(nam)); + return u3_none; + } + pel = _cj_spot(par, NULL); + if ( u3_none == pel ) { + u3l_log("fund: in %s, parent %x not found at %d", + u3r_string(nam), + u3r_mug(u3h(par)), + axe); + return u3_none; + } + pat = ( ( 3 == axe ) && (c3y == u3h(u3h(pel))) ) + ? u3nt(c3y, c3n, pel) + : u3nt(c3n, u3k(axe), pel); + return u3nt(pat, u3k(nam), u3k(huc)); + } +} + +static void +_cj_print_tas(u3_noun tas) +{ + c3_w met_w = u3r_met(3, tas); + c3_c* str_c = alloca(met_w + 1); + u3r_bytes(0, met_w, (c3_y*)str_c, tas); + str_c[met_w] = 0; + u3l_log("/%s", str_c); +} + +/* _cj_mine(): declare a core and produce location. RETAIN. +*/ +static u3_weak +_cj_mine(u3_noun cey, u3_noun cor, u3_noun bas) +{ + u3_weak loc = _cj_minx(cey, cor); + if ( u3_none != loc ) { + c3_l par_l, jax_l; + u3_noun pel = _cj_loc_pel(loc), + axe = _cj_loc_axe(loc), + bat = u3h(cor), + nam = u3h(u3t(loc)), + bar = _cj_find_cold(bat), + reg, hap, bal, act; + if ( u3_none == bar ) { + reg = u3_none; + } + else { + reg = u3k(u3t(bar)); + u3z(bar); + } + reg = _cj_gust(reg, u3k(axe), u3k(pel), u3k(loc)); + if ( 0 == axe ) { + par_l = 0; + bal = u3nc(u3k(nam), u3_nul); + } + else { + u3_weak pac = _cj_find_warm(pel); + u3_assert(u3_none != pac); + par_l = u3h(pac); + bal = u3nc(u3k(nam), u3k(u3h(u3t(u3t(pac))))); + u3z(pac); + } + jax_l = _cj_hot_mean(par_l, nam); +#if 0 + u3m_p("new jet", bal); + u3l_log(" bat %x, jax %d", u3r_mug(bat), jax_l); +#endif + + if ( !(u3C.wag_w & u3o_hashless) ) { + if ( jax_l ) { + c3_y dig_y[32]; + c3_w i_w; + u3_noun i = bal; + u3l_log("hot jet: "); + while ( i != u3_nul ) { + _cj_print_tas(u3h(i)); + i = u3t(i); + } + u3l_log("\r\n axe %d, jax %d,\r\n bash ", axe, jax_l); + u3r_bytes(0, 32, dig_y, bas); + for ( i_w = 32; i_w > 0; ) { + u3l_log("%02x", dig_y[--i_w]); + } + u3l_log(""); + } + } + + hap = _cj_warm_hump(jax_l, u3t(u3t(loc))); + act = u3nq(jax_l, hap, bal, _cj_jit(jax_l, bat)); + u3h_put(u3R->jed.cod_p, bat, u3nc(u3k(bas), reg)); + u3h_put(u3R->jed.war_p, loc, act); // see note in _cj_spot + u3z(pel); u3z(axe); + } + + return loc; +#if 0 + { + u3_noun bas = _cj_bash(bat), + hot = u3h_get(u3D.hot_p, bas); + c3_o hav_o = c3n; + + if ( u3_none != hot ) { + u3_noun her = u3h(hot), + hol = _cj_reg_find(her, cor); + if ( hol != u3_none ) { + hav_o = c3y; + u3z(hol); + } + u3z(hot); + } + + if ( c3n == hav_o ) { + u3m_p("unregistered battery", bal); + u3l_log("hash: %x", bas); + } + u3z(bas); + } +#endif +} + +static void +_cj_audit(u3_noun loc, u3_noun cey, u3_noun cor) +{ + u3_noun pat, nam, huc, cax, can, cuc, pax; + + u3x_trel(loc, &pat, &nam, &huc); + u3x_trel(cey, &can, &cax, &cuc); + + pax = _cj_loc_axe(loc); + + if ( (c3n == u3r_sing(nam, can)) || + (c3n == u3r_sing(pax, cax)) || + (c3n == u3r_sing(huc, cuc)) ) { + u3_noun mix = _cj_minx(cey, cor); + u3m_p("bad audit", loc); + u3m_p("hint says", mix); + u3z(mix); + } + + u3z(pax); +} + +/* _cj_mile(): register core for jets, returning location. +*/ +static u3_weak +_cj_mile(u3_noun clu, u3_noun cor) +{ + u3_weak loc = u3_none; + if ( c3n == u3du(cor) ) { + u3z(clu); + u3z(cor); + } + else { + u3_weak cey = _cj_je_fsck(clu); + if ( u3_none != cey ) { + u3_weak bas = u3_none; + loc = _cj_spot(cor, &bas); + if ( u3_none == loc ) { + loc = _cj_mine(cey, cor, bas); + } + else { + _cj_audit(loc, cey, cor); + } + u3z(cey); + if ( u3_none != bas ) { + u3z(bas); + } + } + u3z(cor); + } + return loc; +} + +/* u3j_mine(): register core for jets. +*/ +void +u3j_mine(u3_noun clu, u3_noun cor) +{ + u3_weak loc; + u3t_on(glu_o); + loc = _cj_mile(clu, cor); + u3z(loc); + u3t_off(glu_o); +} + +/* u3j_rite_mine(): mine cor with clue, using u3j_rite for caching +*/ +void +u3j_rite_mine(u3j_rite* rit_u, u3_noun clu, u3_noun cor) +{ + c3_t non_t; + u3t_on(glu_o); + + non_t = (u3_none == rit_u->clu); + + if ( non_t || + c3n == u3r_sing(rit_u->clu, clu) || + c3n == _cj_fine(cor, rit_u->fin_p) ) { + u3_weak loc = _cj_mile(u3k(clu), u3k(cor)); + if ( u3_none != loc ) { + u3p(u3j_fink) fon_p = rit_u->fin_p; + u3_noun old = rit_u->clu; + c3_o own_o = rit_u->own_o; + rit_u->own_o = c3y; + rit_u->clu = u3k(clu); + rit_u->fin_p = _cj_cast(cor, loc); + u3z(loc); + + if ( !non_t && (c3y == own_o) ) { + u3z(old); + _cj_fink_free(fon_p); + } + } + } + u3z(clu); + u3z(cor); + u3t_off(glu_o); +} + +/* _cj_take_hank_cb(): u3h_take_with cb for taking hanks +*/ +static c3_w +_cj_take_hank_cb(c3_w nah_w) +{ + u3j_hank* nah_u = _cj_to_hank(nah_w); + u3j_hank* han_u = u3a_walloc(c3_wiseof(u3j_hank)); + + if ( u3_none == nah_u->hax ) { + han_u->hax = u3_none; + // han_u->sit_u left uninitialized, will be ignored + } + else { + han_u->hax = u3a_take(nah_u->hax); + u3j_site_take(&(han_u->sit_u), &(nah_u->sit_u)); + } + + return _cj_of_hank(han_u); +} + +/* u3j_take(): copy junior jet state. +*/ +u3a_jets +u3j_take(u3a_jets jed_u) +{ + jed_u.war_p = u3h_take(jed_u.war_p); + jed_u.cod_p = u3h_take(jed_u.cod_p); + jed_u.han_p = u3h_take_with(jed_u.han_p, _cj_take_hank_cb); + jed_u.bas_p = u3h_take(jed_u.bas_p); + return jed_u; +} + +/* _cj_merge_hank_cb(): u3h_uni_with cb for integrating taken hanks +** NB "transfers" or frees hanks in jed_u.han_p +*/ +static void +_cj_merge_hank_cb(u3_noun kev, void* wit) +{ + u3p(u3h_root) han_p = *(u3p(u3h_root)*)wit; + u3j_hank* nah_u; + u3_noun key; + c3_w nah_w; + u3x_cell(kev, &key, &nah_w); + + nah_u = _cj_to_hank(nah_w); + + if ( u3_none == nah_u->hax ) { + u3a_wfree(nah_u); + } + else { + u3j_hank* han_u; + u3_weak got = u3h_git(u3R->jed.han_p, key); + + if ( u3_none == got ) { + han_u = nah_u; + } + else { + han_u = _cj_to_hank(got); + + if ( u3_none != han_u->hax ) { + u3z(han_u->hax); + } + han_u->hax = nah_u->hax; + + u3j_site_merge(&(han_u->sit_u), &(nah_u->sit_u)); + u3a_wfree(nah_u); + } + + u3h_put(han_p, key, _cj_of_hank(han_u)); + } +} + +/* u3j_reap(): promote jet state. +*/ +void +u3j_reap(u3a_jets jed_u) +{ + u3h_uni(u3R->jed.war_p, jed_u.war_p); + u3h_free(jed_u.war_p); + + u3h_uni(u3R->jed.cod_p, jed_u.cod_p); + u3h_free(jed_u.cod_p); + + u3h_walk_with(jed_u.han_p, _cj_merge_hank_cb, &u3R->jed.han_p); + u3h_free(jed_u.han_p); + + u3h_uni(u3R->jed.bas_p, jed_u.bas_p); + u3h_free(jed_u.bas_p); +} + +/* _cj_ream(): ream list of battery [bash registry] pairs. RETAIN. + */ +static void +_cj_ream(u3_noun all) +{ + c3_l par_l, jax_l; + u3_noun i, j, k, rul, loc, bal, act, lop, kev, rut, hap, + pat, reg, pol, rem, rec, bat, pel, nam, huc; + u3_weak pac; + + for ( i = all, lop = u3_nul; i != u3_nul; i = u3t(i) ) { + kev = u3h(i); + bat = u3h(kev); + reg = u3t(u3t(kev)); + rut = u3h(reg); + + // register roots + rul = u3qdb_tap(rut); + for ( j = rul; j != u3_nul; j = u3t(j) ) { + loc = u3t(u3h(j)); + u3x_trel(loc, &pat, &nam, &huc); + bal = u3nc(u3k(nam), u3_nul); + jax_l = _cj_hot_mean(0, nam); + hap = _cj_warm_hump(jax_l, huc); + act = u3nq(jax_l, hap, bal, _cj_jit(jax_l, bat)); +#if 0 + u3m_p("old jet", bal); + u3l_log(" bat %x, jax %d", u3r_mug(bat), jax_l); +#endif + u3h_put(u3R->jed.war_p, loc, act); + } + u3z(rul); + + // put ancestors in lop (list [battery=^ parent=location this=location]) + for ( j = u3t(reg); j != u3_nul; j = u3t(j) ) { + pol = lop; + lop = u3qdb_tap(u3t(u3h(j))); + for ( k = lop; u3_nul != k; k = u3t(k) ) { + pol = u3nc(u3nc(u3k(bat), u3k(u3h(k))), pol); + } + u3z(lop); + lop = pol; + } + } + + // ordering is random so we need to push onto rem when parent + // isn't yet present in the warm state + while ( u3_nul != lop ) { + rem = u3_nul; + for ( i = lop; u3_nul != i; i = u3t(i) ) { + rec = u3h(i); + u3x_trel(rec, &bat, &pel, &loc); + pac = _cj_find_warm(pel); + if ( u3_none == pac ) { + rem = u3nc(u3k(rec), rem); + } + else { + u3x_trel(loc, &pat, &nam, &huc); + par_l = u3h(pac); + jax_l = _cj_hot_mean(par_l, nam); + bal = u3nc(u3k(nam), u3k(u3h(u3t(u3t(pac))))); + hap = _cj_warm_hump(jax_l, huc), + u3z(pac); + act = u3nq(jax_l, hap, bal, _cj_jit(jax_l, bat)); +#if 0 + u3m_p("old jet", bal); + u3l_log(" bat %x, jax %d", u3r_mug(bat), jax_l); +#endif + u3h_put(u3R->jed.war_p, loc, act); + } + } + u3z(lop); + lop = rem; + } +} + +/* _cj_warm_tap(): tap war_p to rel +*/ +static void +_cj_warm_tap(u3_noun kev, void* wit) +{ + u3_noun* rel = wit; + *rel = u3nc(u3k(kev), *rel); +} + +/* _cj_ream_hank(): clear hot state out of hook sites. +*/ +static void +_cj_ream_hank(u3_noun kev) +{ + u3j_site_ream(&(_cj_to_hank(u3t(kev))->sit_u)); +} + +/* u3j_ream(): rebuild warm state +*/ +void +u3j_ream(void) +{ + u3_noun rel = u3_nul; + u3_assert(u3R == &(u3H->rod_u)); + u3h_free(u3R->jed.war_p); + u3R->jed.war_p = u3h_new(); + u3h_walk_with(u3R->jed.cod_p, _cj_warm_tap, &rel); + _cj_ream(rel); + u3z(rel); + + u3h_walk(u3R->jed.han_p, _cj_ream_hank); +} + +/* u3j_stay(): extract cold state +*/ +u3_noun +u3j_stay(void) +{ + u3_noun rel = u3_nul; + u3_assert(u3R == &(u3H->rod_u)); + u3h_walk_with(u3R->jed.cod_p, _cj_warm_tap, &rel); + return rel; +} + +/* u3j_load(): inject cold state +*/ +void +u3j_load(u3_noun rel) +{ + u3_noun ler = rel; + u3_noun lor; + + while ( u3_nul != ler ) { + u3x_cell(ler, &lor, &ler); + u3h_put(u3R->jed.cod_p, u3h(lor), u3k(u3t(lor))); + } + + u3z(rel); +} + +/* _cj_fink_mark(): mark a u3j_fink for gc. +*/ +static c3_w +_cj_fink_mark(u3j_fink* fin_u) +{ + c3_w i_w, tot_w = u3a_mark_noun(fin_u->sat); + for ( i_w = 0; i_w < fin_u->len_w; ++i_w ) { + u3j_fist* fis_u = &(fin_u->fis_u[i_w]); + tot_w += u3a_mark_noun(fis_u->bat); + tot_w += u3a_mark_noun(fis_u->pax); + } + tot_w += u3a_mark_ptr(fin_u); + return tot_w; +} + +/* u3j_site_lose(): lose references of u3j_site (but do not free). + */ +void +u3j_site_lose(u3j_site* sit_u) +{ + u3z(sit_u->axe); + if ( u3_none != sit_u->bat ) { + u3z(sit_u->bat); + } + if ( u3_none != sit_u->bas ) { + u3z(sit_u->bas); + } + if ( u3_none != sit_u->loc ) { + u3z(sit_u->loc); + u3z(sit_u->lab); + if ( c3y == sit_u->fon_o ) { + _cj_fink_free(sit_u->fin_p); + } + } +} + +/* u3j_rite_lose(): lose references of u3j_rite (but do not free). + */ +void +u3j_rite_lose(u3j_rite* rit_u) +{ + if ( (c3y == rit_u->own_o) && u3_none != rit_u->clu ) { + u3z(rit_u->clu); + _cj_fink_free(rit_u->fin_p); + } +} + +/* u3j_rite_mark(): mark u3j_rite for gc. +*/ +c3_w +u3j_rite_mark(u3j_rite* rit_u) +{ + c3_w tot_w = 0; + if ( (c3y == rit_u->own_o) && u3_none != rit_u->clu ) { + tot_w += u3a_mark_noun(rit_u->clu); + tot_w += _cj_fink_mark(u3to(u3j_fink, rit_u->fin_p)); + } + return tot_w; +} + +/* u3j_site_mark(): mark u3j_site for gc. +*/ +c3_w +u3j_site_mark(u3j_site* sit_u) +{ + c3_w tot_w = u3a_mark_noun(sit_u->axe); + if ( u3_none != sit_u->bat ) { + tot_w += u3a_mark_noun(sit_u->bat); + } + if ( u3_none != sit_u->bas ) { + tot_w += u3a_mark_noun(sit_u->bas); + } + if ( u3_none != sit_u->loc ) { + tot_w += u3a_mark_noun(sit_u->loc); + tot_w += u3a_mark_noun(sit_u->lab); + if ( c3y == sit_u->fon_o ) { + tot_w += _cj_fink_mark(u3to(u3j_fink, sit_u->fin_p)); + } + } + return tot_w; +} + +/* _cj_mark_hank(): mark hank cache for gc. +*/ +static void +_cj_mark_hank(u3_noun kev, void* dat) +{ + c3_w* tot_w = (c3_w*) dat; + u3j_hank* han_u = _cj_to_hank(u3t(kev)); + *tot_w += u3a_mark_ptr(han_u); + if ( u3_none != han_u->hax ) { + *tot_w += u3a_mark_noun(han_u->hax); + *tot_w += u3j_site_mark(&(han_u->sit_u)); + } +} + +/* u3j_mark(): mark jet state for gc. +*/ +u3m_quac* +u3j_mark() +{ + u3m_quac** qua_u = c3_malloc(sizeof(*qua_u) * 7); + + qua_u[0] = c3_calloc(sizeof(*qua_u[0])); + qua_u[0]->nam_c = strdup("warm jet state"); + qua_u[0]->siz_w = u3h_mark(u3R->jed.war_p) * 4; + + qua_u[1] = c3_calloc(sizeof(*qua_u[1])); + qua_u[1]->nam_c = strdup("cold jet state"); + qua_u[1]->siz_w = u3h_mark(u3R->jed.cod_p) * 4; + + qua_u[2] = c3_calloc(sizeof(*qua_u[2])); + qua_u[2]->nam_c = strdup("hank cache"); + qua_u[2]->siz_w = u3h_mark(u3R->jed.han_p) * 4; + + qua_u[3] = c3_calloc(sizeof(*qua_u[3])); + qua_u[3]->nam_c = strdup("battery hash cache"); + qua_u[3]->siz_w = u3h_mark(u3R->jed.bas_p) * 4; + + qua_u[4] = c3_calloc(sizeof(*qua_u[4])); + qua_u[4]->nam_c = strdup("call site cache"); + u3h_walk_with(u3R->jed.han_p, _cj_mark_hank, &qua_u[4]->siz_w); + qua_u[4]->siz_w *= 4; + + c3_w sum_w = 0; + for ( c3_w i_w = 0; i_w < 5; i_w++ ) { + sum_w += qua_u[i_w]->siz_w; + } + + u3m_quac* tot_u = c3_calloc(sizeof(*tot_u)); + tot_u->nam_c = strdup("total jet stuff"); + + if ( u3R == &(u3H->rod_u) ) { + qua_u[5] = c3_calloc(sizeof(*qua_u[5])); + qua_u[5]->nam_c = strdup("hot jet state"); + qua_u[5]->siz_w = u3h_mark(u3R->jed.hot_p) * 4; + + sum_w += qua_u[5]->siz_w; + + qua_u[6] = NULL; + + tot_u->siz_w = sum_w; + tot_u->qua_u = qua_u; + + return tot_u; + } else { + qua_u[5] = NULL; + + tot_u->siz_w = sum_w; + tot_u->qua_u = qua_u; + + return tot_u; + } +} + +/* u3j_free_hank(): free an entry from the hank cache. +*/ +void +u3j_free_hank(u3_noun kev) +{ + u3j_hank* han_u = _cj_to_hank(u3t(kev)); + if ( u3_none != han_u->hax ) { + u3z(han_u->hax); + u3j_site_lose(&(han_u->sit_u)); + } + u3a_wfree(han_u); +} + +/* u3j_free(): free jet state. +*/ +void +u3j_free(void) +{ + u3h_walk(u3R->jed.han_p, u3j_free_hank); + u3h_free(u3R->jed.war_p); + u3h_free(u3R->jed.cod_p); + u3h_free(u3R->jed.han_p); + u3h_free(u3R->jed.bas_p); + if ( u3R == &(u3H->rod_u) ) { + u3h_free(u3R->jed.hot_p); + } +} + +/* u3j_reclaim(): clear ad-hoc persistent caches to reclaim memory. +*/ +void +u3j_reclaim(void) +{ + // re-establish the warm jet state + // + // XX might this reduce fragmentation? + // + // if ( &(u3H->rod_u) == u3R ) { + // u3j_ream(); + // } + // clear the jet hank cache + // + u3h_walk(u3R->jed.han_p, u3j_free_hank); + u3h_free(u3R->jed.han_p); + u3R->jed.han_p = u3h_new(); +} + +/* u3j_rewrite_compact(): rewrite jet state for compaction. + * + * NB: u3R->jed.han_p *must* be cleared (currently via u3j_reclaim above) + * since it contains hanks which are not nouns but have loom pointers. + * Alternately, rewrite the entries with u3h_walk, using u3j_mark as a + * template for how to walk. There's an untested attempt at this in git + * history at e8a307a. +*/ +void +u3j_rewrite_compact(void) +{ + u3h_relocate(&(u3R->jed.war_p)); + u3h_relocate(&(u3R->jed.cod_p)); + u3h_relocate(&(u3R->jed.han_p)); + u3h_relocate(&(u3R->jed.bas_p)); + + if ( u3R == &(u3H->rod_u) ) { + u3h_relocate(&(u3R->jed.hot_p)); + } +} diff --git a/vere/pkg/noun/jets.h b/vere/pkg/noun/jets.h new file mode 100644 index 0000000..c81ab18 --- /dev/null +++ b/vere/pkg/noun/jets.h @@ -0,0 +1,322 @@ +/// @file + +#ifndef U3_JETS_H +#define U3_JETS_H + +#include "allocate.h" +#include "c3/c3.h" +#include "types.h" + + /** Noun semantics. + **/ +#if 0 ++= location $: pattern=(each static dynamic) + name=term + hooks=(map term axis) + == ++= static (each payload=* parent=location) ++= dynamic [where=axis parent=location] +:: ++= registry [roots=(map * location) parents=(list parent)] ++= parent (pair axis (map location location)) +:: ++= activation $: hot-index=@ud + drivers=(map axis @ud) + label=path + jit=* :: FIXME: should probably be (map battery *) + :: since there can be multiple batteries per location + == ++= hot-info $: reg=registry + hot-index=@ud + drivers=(map axis @ud) + label=path + == ++= bash @ :: battery hash (sha-256 based) +:: ++= hot (map bash hot-info) ++= cold (map battery=^ (pair bash registry)) ++= warm (map location activation) +#endif + + /** Data structures. + *** + *** All of these are transient structures allocated with malloc. + **/ + /* u3j_harm: jet arm. + */ + typedef struct _u3j_harm { + c3_c* fcs_c; // `.axe` or name + u3_noun (*fun_f)(u3_noun); // compute or 0 / semitransfer + // c3_o (*val_f)(u3_noun); // validate or 0 / retain + c3_o ice; // perfect (don't test) + c3_o tot; // total (never punts) + c3_o liv; // live (enabled) + c3_l axe_l; // computed/discovered axis + struct _u3j_core* cop_u; // containing core + } u3j_harm; + + /* u3j_hood: hook description. + */ + typedef struct _u3j_hood { + c3_c* nam_c; // hook name + c3_l axe_l; // hook axis (XX: direct) + c3_o kic_o; // hook is kick (vs. fragment) + c3_l sax_l; // hook subject axis (XX: direct) + } u3j_hood; + + /* u3j_core: driver definition. + */ + typedef struct _u3j_core { + c3_c* cos_c; // control string + c3_l axe_l; // axis to parent + struct _u3j_harm* arm_u; // blank-terminated static list + struct _u3j_core* dev_u; // blank-terminated static list + c3_c** bas_u; // blank-terminated static list + struct _u3j_hood* huc_u; // blank-terminated static list + struct _u3j_core* par_u; // dynamic parent pointer + c3_l jax_l; // index in global dashboard + } u3j_core; + + /* u3j_dash, u3_Dash, u3D: jet dashboard singleton + */ + typedef struct _u3j_dash { + u3j_core* dev_u; // null-terminated static list + c3_l len_l; // dynamic array length + c3_l all_l; // allocated length + u3j_core* ray_u; // dynamic array by axis + } u3j_dash; + + /* u3j_fist: a single step in a fine check. + */ + typedef struct { + u3_noun bat; // battery + u3_noun pax; // parent axis + } u3j_fist; + + /* u3j_fink: (fine check) enough data to verify a located core. + */ + typedef struct { + c3_w len_w; // number of fists + u3_noun sat; // static noun at end of check + u3j_fist fis_u[]; // fists + } u3j_fink; + + /* u3j_rite: site of a %fast, used to skip re-mining. + */ + typedef struct { + c3_o own_o; // rite owns fink? + u3_weak clu; // cached product of clue formula + u3p(u3j_fink) fin_p; // fine check + } u3j_rite; + + /* u3j_site: site of a kick (nock 9), used to cache call target. + */ + struct _u3n_prog; + typedef struct { + u3p(struct _u3n_prog) pog_p; // program for formula + u3_noun axe; // axis + u3_weak bat; // battery (for verification) + u3_weak bas; // hash of battery (for hot find) + u3_weak loc; // location (for reaming) + c3_o jet_o; // have jet driver? + c3_o fon_o; // site owns fink? + u3_weak lab; // label (for tracing) + u3j_core* cop_u; // jet core + u3j_harm* ham_u; // jet arm + u3p(u3j_fink) fin_p; // fine check + } u3j_site; + + /* u3j_hank: cached hook information. + */ + typedef struct { + u3_weak hax; // axis of hooked inner core + u3j_site sit_u; // call-site data + } u3j_hank; + + /** Globals. + **/ + /* u3_Dash: jet dashboard. + */ + extern u3j_dash u3j_Dash; +# define u3D u3j_Dash + + /** Functions. + **/ + /* u3j_boot(): initialize jet system. + */ + c3_w + u3j_boot(c3_o nuu_o); + + /* u3j_clear(): clear jet table to re-register. + */ + void + u3j_clear(void); + + /* u3j_cook(): + ** + ** Execute hook from core, call site cached by arbitrary c string + */ + u3_noun + u3j_cook(const c3_c* key_c, + u3_noun cor, + const c3_c* tam_c); + + /* u3j_hook(): + ** + ** Execute hook from core. + */ + u3_noun + u3j_hook(u3_noun cor, + const c3_c* tam_c); + + /* u3j_soft(): + ** + ** Execute hook from core, without jet. + */ + u3_noun + u3j_soft(u3_noun cor, + const c3_c* tam_c); + + /* u3j_kick(): try to kick by jet. If no kick, produce u3_none. + ** + ** `axe` is RETAINED by the caller; `cor` is RETAINED iff there + ** is no kick, TRANSFERRED if one. + */ + u3_weak + u3j_kick(u3_noun cor, u3_noun axe); + + /* u3j_kink(): kick either by jet or by nock. + */ + u3_noun + u3j_kink(u3_noun cor, + u3_noun axe); + + /* u3j_mine(): register core for jets. + */ + void + u3j_mine(u3_noun clu, + u3_noun cor); + + /* u3j_ream(): refresh after restoring from checkpoint. + */ + void + u3j_ream(void); + + /* u3j_stay(): extract cold state + */ + u3_noun + u3j_stay(void); + + /* u3j_load(): inject cold state + */ + void + u3j_load(u3_noun rel); + + /* u3j_reap(): promote jet state. + */ + void + u3j_reap(u3a_jets jed_u); + + /* u3j_take(): copy junior jet state. + */ + u3a_jets + u3j_take(u3a_jets jed_u); + + /* u3j_rite_mine(): mine cor with clu, using u3j_rite for caching + */ + void + u3j_rite_mine(u3j_rite* rit_u, u3_noun clu, u3_noun cor); + + /* u3j_rite_take(): copy junior rite references from src_u to dst_u. + */ + void + u3j_rite_take(u3j_rite* dst_u, u3j_rite* src_u); + + /* u3j_rite_merge(): copy rite references from src_u to dst_u, + ** losing old references + */ + void + u3j_rite_merge(u3j_rite* dst_u, u3j_rite* src_u); + + /* u3j_site_take(): copy junior site references. + */ + void + u3j_site_take(u3j_site* dst_u, u3j_site* src_u); + + /* u3j_site_merge(): copy site references from src_u to dst_u, + ** losing old references + */ + void + u3j_site_merge(u3j_site* dst_u, u3j_site* src_u); + + /* u3j_site_ream(): refresh u3j_site after restoring from checkpoint + */ + void + u3j_site_ream(u3j_site* sit_u); + + /* u3j_site_kick(): kick a core with a u3j_site cache. + */ + u3_weak + u3j_site_kick(u3_noun cor, u3j_site* sit_u); + + /* u3j_gate_prep(): prepare a locally cached gate to call repeatedly. + */ + void + u3j_gate_prep(u3j_site* sit_u, u3_noun cor); + + /* u3j_gate_slam(): slam a site prepared by u3j_gate_find() with sample. + */ + u3_noun + u3j_gate_slam(u3j_site* sit_u, u3_noun sam); + + /* u3j_gate_lose(): clean up site prepared by u3j_gate_find(). + */ + void + u3j_gate_lose(u3j_site* sit_u); + + /* u3j_rite_mark(): mark u3j_rite for gc. + */ + c3_w + u3j_rite_mark(u3j_rite* rit_u); + + /* u3j_rite_lose(): lose references of u3j_rite (but do not free). + */ + void + u3j_rite_lose(u3j_rite* rit_u); + + /* u3j_site_lose(): lose references of u3j_site (but do not free). + */ + void + u3j_site_lose(u3j_site* sit_u); + + /* u3j_site_mark(): mark u3j_site for gc. + */ + c3_w + u3j_site_mark(u3j_site* sit_u); + + /* u3j_mark(): mark jet state for gc. + */ + u3m_quac* + u3j_mark(); + + /* u3j_free(): free jet state. + */ + void + u3j_free(void); + + /* u3j_free_hank(): free an entry from the hank cache. + */ + void + u3j_free_hank(u3_noun kev); + + /* u3j_reclaim(): clear ad-hoc persistent caches to reclaim memory. + */ + void + u3j_reclaim(void); + + /* u3j_rewrite_compact(): rewrite jet state for compaction. + */ + void + u3j_rewrite_compact(void); + +#endif /* ifndef U3_JETS_H */ diff --git a/vere/pkg/noun/jets/136/tree.c b/vere/pkg/noun/jets/136/tree.c new file mode 100644 index 0000000..345fe3a --- /dev/null +++ b/vere/pkg/noun/jets/136/tree.c @@ -0,0 +1,1268 @@ +#include "c3/c3.h" +#include "jets.h" +#include "jets/w.h" + + +static c3_c* no_hashes[] = { 0 }; + +static u3j_harm _136_hex_mimes_base16_en_a[] = {{".2", u3we_en_base16}, {}}; +static u3j_harm _136_hex_mimes_base16_de_a[] = {{".2", u3we_de_base16}, {}}; +static u3j_core _136_hex_mimes_base16_d[] = + { { "en", 7, _136_hex_mimes_base16_en_a, 0, no_hashes }, + { "de", 7, _136_hex_mimes_base16_de_a, 0, no_hashes }, + {} + }; +static u3j_core _136_hex_mimes_d[] = + { { "base16", 3, 0, _136_hex_mimes_base16_d, no_hashes }, + {} + }; + +static u3j_harm _136_hex_aes_ecba_en_a[] = {{".2", u3wea_ecba_en}, {}}; +static u3j_harm _136_hex_aes_ecba_de_a[] = {{".2", u3wea_ecba_de}, {}}; +static u3j_core _136_hex_aes_ecba_d[] = + { { "en", 7, _136_hex_aes_ecba_en_a, 0, no_hashes }, + { "de", 7, _136_hex_aes_ecba_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_aes_ecbb_en_a[] = {{".2", u3wea_ecbb_en}, {}}; +static u3j_harm _136_hex_aes_ecbb_de_a[] = {{".2", u3wea_ecbb_de}, {}}; +static u3j_core _136_hex_aes_ecbb_d[] = + { { "en", 7, _136_hex_aes_ecbb_en_a, 0, no_hashes }, + { "de", 7, _136_hex_aes_ecbb_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_aes_ecbc_en_a[] = {{".2", u3wea_ecbc_en}, {}}; +static u3j_harm _136_hex_aes_ecbc_de_a[] = {{".2", u3wea_ecbc_de}, {}}; +static u3j_core _136_hex_aes_ecbc_d[] = + { { "en", 7, _136_hex_aes_ecbc_en_a, 0, no_hashes }, + { "de", 7, _136_hex_aes_ecbc_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_aes_cbca_en_a[] = {{".2", u3wea_cbca_en}, {}}; +static u3j_harm _136_hex_aes_cbca_de_a[] = {{".2", u3wea_cbca_de}, {}}; +static u3j_core _136_hex_aes_cbca_d[] = + { { "en", 7, _136_hex_aes_cbca_en_a, 0, no_hashes }, + { "de", 7, _136_hex_aes_cbca_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_aes_cbcb_en_a[] = {{".2", u3wea_cbcb_en}, {}}; +static u3j_harm _136_hex_aes_cbcb_de_a[] = {{".2", u3wea_cbcb_de}, {}}; +static u3j_core _136_hex_aes_cbcb_d[] = + { { "en", 7, _136_hex_aes_cbcb_en_a, 0, no_hashes }, + { "de", 7, _136_hex_aes_cbcb_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_aes_cbcc_en_a[] = {{".2", u3wea_cbcc_en}, {}}; +static u3j_harm _136_hex_aes_cbcc_de_a[] = {{".2", u3wea_cbcc_de}, {}}; +static u3j_core _136_hex_aes_cbcc_d[] = + { { "en", 7, _136_hex_aes_cbcc_en_a, 0, no_hashes }, + { "de", 7, _136_hex_aes_cbcc_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_aes_siva_en_a[] = {{".2", u3wea_siva_en}, {}}; +static u3j_harm _136_hex_aes_siva_de_a[] = {{".2", u3wea_siva_de}, {}}; +static u3j_core _136_hex_aes_siva_d[] = + { { "en", 7, _136_hex_aes_siva_en_a, 0, no_hashes }, + { "de", 7, _136_hex_aes_siva_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_aes_sivb_en_a[] = {{".2", u3wea_sivb_en}, {}}; +static u3j_harm _136_hex_aes_sivb_de_a[] = {{".2", u3wea_sivb_de}, {}}; +static u3j_core _136_hex_aes_sivb_d[] = + { { "en", 7, _136_hex_aes_sivb_en_a, 0, no_hashes }, + { "de", 7, _136_hex_aes_sivb_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_aes_sivc_en_a[] = {{".2", u3wea_sivc_en}, {}}; +static u3j_harm _136_hex_aes_sivc_de_a[] = {{".2", u3wea_sivc_de}, {}}; +static u3j_core _136_hex_aes_sivc_d[] = + { { "en", 7, _136_hex_aes_sivc_en_a, 0, no_hashes }, + { "de", 7, _136_hex_aes_sivc_de_a, 0, no_hashes }, + {} + }; +static u3j_core _136_hex_aes_d[] = + { { "ecba", 7, 0, _136_hex_aes_ecba_d, no_hashes }, + { "ecbb", 7, 0, _136_hex_aes_ecbb_d, no_hashes }, + { "ecbc", 7, 0, _136_hex_aes_ecbc_d, no_hashes }, + { "cbca", 7, 0, _136_hex_aes_cbca_d, no_hashes }, + { "cbcb", 7, 0, _136_hex_aes_cbcb_d, no_hashes }, + { "cbcc", 7, 0, _136_hex_aes_cbcc_d, no_hashes }, + { "siva", 7, 0, _136_hex_aes_siva_d, no_hashes }, + { "sivb", 7, 0, _136_hex_aes_sivb_d, no_hashes }, + { "sivc", 7, 0, _136_hex_aes_sivc_d, no_hashes }, + {} + }; + +static u3j_harm _136_hex_leer_a[] = {{".2", u3we_leer}, {}}; +static u3j_harm _136_hex_lore_a[] = {{".2", u3we_lore}, {}}; +static u3j_harm _136_hex_loss_a[] = {{".2", u3we_loss}, {}}; +static u3j_harm _136_hex_lune_a[] = {{".2", u3we_lune}, {}}; + + +static u3j_harm _136_hex__adler32_a[] = {{".2", u3we_adler32, c3y}, {}}; +static u3j_core _136_hex__adler_d[] = + { { "adler32", 7, _136_hex__adler32_a, 0, no_hashes }, + {} + }; +static u3j_harm _136_hex__crc32_a[] = {{".2", u3we_crc32}, {}}; +static u3j_core _136_hex__crc_d[] = + { {"crc32", 7, _136_hex__crc32_a, 0, no_hashes }, + {} + }; + +static u3j_core _136_hex_checksum_d[] = + { { "adler", 3, 0, _136_hex__adler_d, no_hashes }, + { "crc", 3, 0, _136_hex__crc_d, no_hashes}, + {} + }; + + +static u3j_harm _136_hex__decompress_zlib_a[] = {{".2", u3we_decompress_zlib}, {}}; +static u3j_harm _136_hex__decompress_gzip_a[] = {{".2", u3we_decompress_gzip}, {}}; +static u3j_core _136_hex__zlib_d[] = { + {"decompress-zlib", 7, _136_hex__decompress_zlib_a, 0, no_hashes }, + {"decompress-gzip", 7, _136_hex__decompress_gzip_a, 0, no_hashes }, + {}}; + + +static u3j_harm _136_hex_coed__ed_scad_a[] = {{".2", u3wee_scad}, {}}; +static u3j_harm _136_hex_coed__ed_scas_a[] = {{".2", u3wee_scas}, {}}; +static u3j_harm _136_hex_coed__ed_scap_a[] = {{".2", u3wee_scap}, {}}; + +static u3j_harm _136_hex_coed__ed_puck_a[] = {{".2", u3wee_puck}, {}}; +static u3j_harm _136_hex_coed__ed_luck_a[] = {{".2", u3wee_luck}, {}}; +static u3j_harm _136_hex_coed__ed_sign_a[] = {{".2", u3wee_sign}, {}}; +static u3j_harm _136_hex_coed__ed_sign_raw_a[] = {{".2", u3wee_sign_raw}, {}}; +static u3j_harm _136_hex_coed__ed_sign_octs_a[] = {{".2", u3wee_sign_octs}, {}}; +static u3j_harm _136_hex_coed__ed_sign_octs_raw_a[] = {{".2", u3wee_sign_octs_raw}, {}}; +static u3j_harm _136_hex_coed__ed_veri_octs_a[] = {{".2", u3wee_veri_octs}, {}}; +static u3j_harm _136_hex_coed__ed_veri_a[] = {{".2", u3wee_veri}, {}}; +static u3j_harm _136_hex_coed__ed_shar_a[] = {{".2", u3wee_shar}, {}}; +static u3j_harm _136_hex_coed__ed_slar_a[] = {{".2", u3wee_slar}, {}}; + +static u3j_harm _136_hex_coed__ed_smac_a[] = + {{".2", u3wee_smac}, {}}; + +static u3j_harm _136_hex_coed__ed_recs_a[] = + {{".2", u3wee_recs}, {}}; + +static u3j_harm _136_hex_coed__ed_point_neg_a[] = + {{".2", u3wee_point_neg}, {}}; + +static u3j_harm _136_hex_coed__ed_point_add_a[] = + {{".2", u3wee_point_add}, {}}; + +static u3j_harm _136_hex_coed__ed_scalarmult_a[] = + {{".2", u3wee_scalarmult}, {}}; + +static u3j_harm _136_hex_coed__ed_scalarmult_base_a[] = + {{".2", u3wee_scalarmult_base}, {}}; + +static u3j_harm _136_hex_coed__ed_add_scalarmult_scalarmult_base_a[] = + {{".2", u3wee_add_scalarmult_scalarmult_base}, {}}; + +static u3j_harm _136_hex_coed__ed_add_double_scalarmult_a[] = + {{".2", u3wee_add_double_scalarmult}, {}}; + +static u3j_core _136_hex_coed__ed_d[] = + { { "sign", 7, _136_hex_coed__ed_sign_a, 0, no_hashes }, + { "sign-raw", 7, _136_hex_coed__ed_sign_raw_a, 0, no_hashes }, + { "sign-octs", 7, _136_hex_coed__ed_sign_octs_a, 0, no_hashes }, + { "sign-octs-raw", 7, _136_hex_coed__ed_sign_octs_raw_a, 0, no_hashes }, + { "puck", 7, _136_hex_coed__ed_puck_a, 0, no_hashes }, + { "luck", 7, _136_hex_coed__ed_luck_a, 0, no_hashes }, + { "scad", 7, _136_hex_coed__ed_scad_a, 0, no_hashes }, + { "scas", 7, _136_hex_coed__ed_scas_a, 0, no_hashes }, + { "scap", 7, _136_hex_coed__ed_scap_a, 0, no_hashes }, + { "veri-octs", 7, _136_hex_coed__ed_veri_octs_a, 0, no_hashes }, + { "veri", 7, _136_hex_coed__ed_veri_a, 0, no_hashes }, + { "shar", 7, _136_hex_coed__ed_shar_a, 0, no_hashes }, + { "slar", 7, _136_hex_coed__ed_slar_a, 0, no_hashes }, + { "point-add", 7, _136_hex_coed__ed_point_add_a, 0, 0 }, + { "point-neg", 7, _136_hex_coed__ed_point_neg_a, 0, 0 }, + { "recs", 7, _136_hex_coed__ed_recs_a, 0, 0 }, + { "smac", 7, _136_hex_coed__ed_smac_a, 0, 0 }, + { "scalarmult", 7, _136_hex_coed__ed_scalarmult_a, 0, + no_hashes }, + { "scalarmult-base", 7, _136_hex_coed__ed_scalarmult_base_a, 0, + no_hashes }, + { "add-scalarmult-scalarmult-base", 7, + _136_hex_coed__ed_add_scalarmult_scalarmult_base_a, 0, + no_hashes }, + { "add-double-scalarmult", 7, + _136_hex_coed__ed_add_double_scalarmult_a, 0, + no_hashes }, + {} + }; + +static u3j_core _136_hex_coed_d[] = + { { "ed", 3, 0, _136_hex_coed__ed_d, no_hashes }, + {} + }; + +static u3j_harm _136_hex_hmac_hmac_a[] = {{".2", u3we_hmac}, {}}; +static u3j_core _136_hex_hmac_d[] = + { { "hmac", 7, _136_hex_hmac_hmac_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_argon2_a[] = {{".2", u3we_argon2}, {}}; +static u3j_core _136_hex_argon_d[] = + { { "argon2", 511, _136_hex_argon2_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_scr_pbk_a[] = {{".2", u3wes_pbk, c3y}, {}}; +static u3j_harm _136_hex_scr_pbl_a[] = {{".2", u3wes_pbl, c3y}, {}}; +static u3j_harm _136_hex_scr_hsh_a[] = {{".2", u3wes_hsh, c3y}, {}}; +static u3j_harm _136_hex_scr_hsl_a[] = {{".2", u3wes_hsl, c3y}, {}}; +static u3j_core _136_hex_scr_d[] = + { { "pbk", 7, _136_hex_scr_pbk_a, 0, no_hashes }, + { "pbl", 7, _136_hex_scr_pbl_a, 0, no_hashes }, + { "hsh", 7, _136_hex_scr_hsh_a, 0, no_hashes }, + { "hsl", 7, _136_hex_scr_hsl_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_secp_secp256k1_make_a[] = {{".2", u3we_make, c3y}, {}}; +static u3j_harm _136_hex_secp_secp256k1_sign_a[] = {{".2", u3we_sign, c3y}, {}}; +static u3j_harm _136_hex_secp_secp256k1_reco_a[] = {{".2", u3we_reco, c3y}, {}}; + +static u3j_harm _136_hex_secp_secp256k1_schnorr_sosi_a[] = + {{".2", u3we_sosi}, {}}; +static u3j_harm _136_hex_secp_secp256k1_schnorr_sove_a[] = + {{".2", u3we_sove}, {}}; +static u3j_core _136_hex_secp_secp256k1_schnorr_d[] = + { { "sosi", 7, + _136_hex_secp_secp256k1_schnorr_sosi_a, 0, + no_hashes }, + { "sove", 7, + _136_hex_secp_secp256k1_schnorr_sove_a, 0, + no_hashes }, + {} + }; + +static u3j_core _136_hex_secp_secp256k1_d[] = + { { "make", 7, _136_hex_secp_secp256k1_make_a, 0, no_hashes }, + { "sign", 7, _136_hex_secp_secp256k1_sign_a, 0, no_hashes }, + { "reco", 7, _136_hex_secp_secp256k1_reco_a, 0, no_hashes }, + { "schnorr", 7, 0, + _136_hex_secp_secp256k1_schnorr_d, + no_hashes }, + {} + }; +static u3j_core _136_hex_secp_d[] = + { { "secp256k1", 3, 0, _136_hex_secp_secp256k1_d, no_hashes }, + {} + }; + + +static u3j_harm _136_hex_kecc_k224_a[] = + {{".2", u3we_kecc224, c3y, c3y, c3y}, {}}; +static u3j_harm _136_hex_kecc_k256_a[] = + {{".2", u3we_kecc256, c3y, c3y, c3y}, {}}; +static u3j_harm _136_hex_kecc_k384_a[] = + {{".2", u3we_kecc384, c3y, c3y, c3y}, {}}; +static u3j_harm _136_hex_kecc_k512_a[] = + {{".2", u3we_kecc512, c3y, c3y, c3y}, {}}; +static u3j_core _136_hex_kecc_d[] = + { { "k224", 7, _136_hex_kecc_k224_a, 0, no_hashes }, + { "k256", 7, _136_hex_kecc_k256_a, 0, no_hashes }, + { "k384", 7, _136_hex_kecc_k384_a, 0, no_hashes }, + { "k512", 7, _136_hex_kecc_k512_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_ripemd_160_a[] = {{".2", u3we_ripe, c3y}, {}}; +static u3j_core _136_hex_ripe_d[] = + { { "ripemd160", 7, _136_hex_ripemd_160_a, 0, no_hashes }, + {} + }; + + + +/* layer five + */ +static u3j_harm _136_pen_cell_a[] = {{".2", u3wf_cell}, {}}; +static u3j_harm _136_pen_comb_a[] = {{".2", u3wf_comb}, {}}; +static u3j_harm _136_pen_cons_a[] = {{".2", u3wf_cons}, {}}; +static u3j_harm _136_pen_core_a[] = {{".2", u3wf_core}, {}}; +static u3j_harm _136_pen_face_a[] = {{".2", u3wf_face}, {}}; +static u3j_harm _136_pen_fitz_a[] = {{".2", u3wf_fitz}, {}}; +static u3j_harm _136_pen_fork_a[] = {{".2", u3wf_fork}, {}}; + +static u3j_harm _136_pen_look_a[] = {{".2", u3wf_look}, {}}; +static u3j_harm _136_pen_loot_a[] = {{".2", u3wf_loot}, {}}; + +static u3j_harm _136_pen__ut_crop_a[] = {{".2", u3wfu_crop}, {}}; +static u3j_harm _136_pen__ut_fish_a[] = {{".2", u3wfu_fish}, {}}; +static u3j_harm _136_pen__ut_fuse_a[] = {{".2", u3wfu_fuse}, {}}; +static u3j_harm _136_pen__ut_redo_a[] = {{".2", u3wfu_redo}, {}}; +static u3j_harm _136_pen__ut_mint_a[] = {{".2", u3wfu_mint}, {}}; +static u3j_harm _136_pen__ut_mull_a[] = {{".2", u3wfu_mull}, {}}; + +static u3j_harm _136_pen__ut_nest_dext_a[] = {{".2", u3wfu_nest_dext}, {}}; +static u3j_core _136_pen__ut_nest_in_d[] = + { + { "nest-dext", 3, _136_pen__ut_nest_dext_a, 0, no_hashes }, + {} + }; +static u3j_core _136_pen__ut_nest_d[] = + { + { "nest-in", 7, 0, _136_pen__ut_nest_in_d, no_hashes }, + {} + }; + +static u3j_harm _136_pen__ut_rest_a[] = {{".2", u3wfu_rest}, {}}; + +static u3j_core _136_pen__ut_d[] = + { + { "crop", 7, _136_pen__ut_crop_a, 0, no_hashes }, + { "fish", 7, _136_pen__ut_fish_a, 0, no_hashes }, + { "fuse", 7, _136_pen__ut_fuse_a, 0, no_hashes }, + { "redo", 7, _136_pen__ut_redo_a, 0, no_hashes }, + { "mint", 7, _136_pen__ut_mint_a, 0, no_hashes }, + { "mull", 7, _136_pen__ut_mull_a, 0, no_hashes }, + { "nest", 7, 0, _136_pen__ut_nest_d, no_hashes }, + { "rest", 7, _136_pen__ut_rest_a, 0, no_hashes }, + {} + }; + +static u3j_hood _136_pen__ut_ho[] = + { { "ar", 12282 }, + { "fan", 28, c3n }, + { "rib", 58, c3n }, + { "vet", 59, c3n }, + + { "blow", 6015 }, + { "burp", 342 }, + { "busk", 1363 }, + { "buss", 374 }, + { "crop", 1494 }, + { "duck", 1524 }, + { "dune", 2991 }, + { "dunk", 3066 }, + { "epla", 12206 }, + { "emin", 1534 }, + { "emul", 6134 }, + { "feel", 1502 }, + { "felt", 94 }, + { "fine", 49086 }, + { "fire", 4 }, + { "fish", 6006 }, + { "fond", 12283 }, + { "fund", 6014 }, + // XX +funk is not part of +ut, and this hook appears to be unused + // remove from here and the +ut hint + // + { "funk", 0xbefafa, c3y, 31 }, + { "fuse", 24021 }, + { "gain", 380 }, + { "lose", 0x2fefe }, + { "mile", 382 }, + { "mine", 372 }, + { "mint", 49083 }, + { "moot", 0x2feff }, + { "mull", 24020 }, + { "nest", 92 }, + { "peel", 1526 }, + { "play", 3006 }, + { "peek", 1532 }, + { "repo", 22 }, + { "rest", 6102 }, + { "tack", 6007 }, + { "toss", 24540 }, + { "wrap", 6136 }, + {}, + }; + + +static u3j_hood _136_pen_ho[] = { + { "ap", 22 }, + { "ut", 86 }, + {}, +}; + + +/* layer four + */ +static u3j_harm _136_qua_trip_a[] = {{".2", u3we_trip}, {}}; + +static u3j_harm _136_qua_slaw_a[] = {{".2", u3we_slaw}, {}}; +static u3j_harm _136_qua_scot_a[] = {{".2", u3we_scot}, {}}; +static u3j_harm _136_qua_scow_a[] = {{".2", u3we_scow}, {}}; + +static u3j_harm _136_qua__po_ind_a[] = {{".2", u3wcp_ind}, {}}; +static u3j_harm _136_qua__po_ins_a[] = {{".2", u3wcp_ins}, {}}; +static u3j_harm _136_qua__po_tod_a[] = {{".2", u3wcp_tod}, {}}; +static u3j_harm _136_qua__po_tos_a[] = {{".2", u3wcp_tos}, {}}; +static u3j_core _136_qua__po_d[] = + { { "ind", 7, _136_qua__po_ind_a, 0, no_hashes }, + { "ins", 7, _136_qua__po_ins_a, 0, no_hashes }, + { "tod", 7, _136_qua__po_tod_a, 0, no_hashes }, + { "tos", 7, _136_qua__po_tos_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__bend_fun_a[] = {{".2", u3we_bend_fun}, {}}; +static u3j_core _136_qua__bend_d[] = + { { "fun", 7, _136_qua__bend_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__cold_fun_a[] = {{".2", u3we_cold_fun}, {}}; +static u3j_core _136_qua__cold_d[] = + { { "fun", 7, _136_qua__cold_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__cook_fun_a[] = {{".2", u3we_cook_fun}, {}}; +static u3j_core _136_qua__cook_d[] = + { { "fun", 7, _136_qua__cook_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__comp_fun_a[] = {{".2", u3we_comp_fun}, {}}; +static u3j_core _136_qua__comp_d[] = + { { "fun", 7, _136_qua__comp_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__easy_fun_a[] = {{".2", u3we_easy_fun}, {}}; +static u3j_core _136_qua__easy_d[] = + { { "fun", 7, _136_qua__easy_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__glue_fun_a[] = {{".2", u3we_glue_fun}, {}}; +static u3j_core _136_qua__glue_d[] = + { { "fun", 7, _136_qua__glue_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__here_fun_a[] = {{".2", u3we_here_fun}, {}}; +static u3j_core _136_qua__here_d[] = + { { "fun", 7, _136_qua__here_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__just_fun_a[] = {{".2", u3we_just_fun}, {}}; +static u3j_core _136_qua__just_d[] = + { { "fun", 7, _136_qua__just_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__mask_fun_a[] = {{".2", u3we_mask_fun}, {}}; +static u3j_core _136_qua__mask_d[] = + { { "fun", 7, _136_qua__mask_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__shim_fun_a[] = {{".2", u3we_shim_fun}, {}}; +static u3j_core _136_qua__shim_d[] = + { { "fun", 7, _136_qua__shim_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__stag_fun_a[] = {{".2", u3we_stag_fun}, {}}; +static u3j_core _136_qua__stag_d[] = + { { "fun", 7, _136_qua__stag_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__stew_fun_a[] = {{".2", u3we_stew_fun}, {}}; +static u3j_core _136_qua__stew_d[] = + { { "fun", 31, _136_qua__stew_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua__stir_fun_a[] = {{".2", u3we_stir_fun}, {}}; +static u3j_core _136_qua__stir_d[] = + { { "fun", 7, _136_qua__stir_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_qua_pfix_a[] = {{".2", u3we_pfix}, {}}; + +static u3j_harm _136_qua_plug_a[] = {{".2", u3we_plug}, {}}; +static u3j_harm _136_qua_pose_a[] = {{".2", u3we_pose}, {}}; + +static u3j_harm _136_qua_sfix_a[] = {{".2", u3we_sfix}, {}}; + +static u3j_harm _136_qua_mink_a[] = {{".2", u3we_mink}, {}}; +static u3j_harm _136_qua_mole_a[] = {{".2", u3we_mole}, {}}; +static u3j_harm _136_qua_mule_a[] = {{".2", u3we_mule}, {}}; + + +static u3j_hood _136_qua_ho[] = { + { "show", 188 }, + {}, +}; + + +/* layer three + */ +static u3j_harm _136_tri__cofl__drg_a[] = {{".2", u3wef_drg}, {}}; +static u3j_harm _136_tri__cofl__lug_a[] = {{".2", u3wef_lug}, {}}; +static u3j_core _136_tri__cofl_d[] = + { { "drg", 7, _136_tri__cofl__drg_a, 0, no_hashes }, + { "lug", 7, _136_tri__cofl__lug_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_tri__rd_add_a[] = {{".2", u3wer_add}, {}}; +static u3j_harm _136_tri__rd_sub_a[] = {{".2", u3wer_sub}, {}}; +static u3j_harm _136_tri__rd_mul_a[] = {{".2", u3wer_mul}, {}}; +static u3j_harm _136_tri__rd_div_a[] = {{".2", u3wer_div}, {}}; +static u3j_harm _136_tri__rd_sqt_a[] = {{".2", u3wer_sqt}, {}}; +static u3j_harm _136_tri__rd_fma_a[] = {{".2", u3wer_fma}, {}}; +static u3j_harm _136_tri__rd_lth_a[] = {{".2", u3wer_lth}, {}}; +static u3j_harm _136_tri__rd_lte_a[] = {{".2", u3wer_lte}, {}}; +static u3j_harm _136_tri__rd_equ_a[] = {{".2", u3wer_equ}, {}}; +static u3j_harm _136_tri__rd_gte_a[] = {{".2", u3wer_gte}, {}}; +static u3j_harm _136_tri__rd_gth_a[] = {{".2", u3wer_gth}, {}}; +static u3j_core _136_tri__rd_d[] = + { { "add", 7, _136_tri__rd_add_a, 0, no_hashes }, + { "sub", 7, _136_tri__rd_sub_a, 0, no_hashes }, + { "mul", 7, _136_tri__rd_mul_a, 0, no_hashes }, + { "div", 7, _136_tri__rd_div_a, 0, no_hashes }, + { "sqt", 7, _136_tri__rd_sqt_a, 0, no_hashes }, + { "fma", 7, _136_tri__rd_fma_a, 0, no_hashes }, + { "lth", 7, _136_tri__rd_lth_a, 0, no_hashes }, + { "lte", 7, _136_tri__rd_lte_a, 0, no_hashes }, + { "equ", 7, _136_tri__rd_equ_a, 0, no_hashes }, + { "gte", 7, _136_tri__rd_gte_a, 0, no_hashes }, + { "gth", 7, _136_tri__rd_gth_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_tri__rs_add_a[] = {{".2", u3wet_add}, {}}; +static u3j_harm _136_tri__rs_sub_a[] = {{".2", u3wet_sub}, {}}; +static u3j_harm _136_tri__rs_mul_a[] = {{".2", u3wet_mul}, {}}; +static u3j_harm _136_tri__rs_div_a[] = {{".2", u3wet_div}, {}}; +static u3j_harm _136_tri__rs_sqt_a[] = {{".2", u3wet_sqt}, {}}; +static u3j_harm _136_tri__rs_fma_a[] = {{".2", u3wet_fma}, {}}; +static u3j_harm _136_tri__rs_lth_a[] = {{".2", u3wet_lth}, {}}; +static u3j_harm _136_tri__rs_lte_a[] = {{".2", u3wet_lte}, {}}; +static u3j_harm _136_tri__rs_equ_a[] = {{".2", u3wet_equ}, {}}; +static u3j_harm _136_tri__rs_gte_a[] = {{".2", u3wet_gte}, {}}; +static u3j_harm _136_tri__rs_gth_a[] = {{".2", u3wet_gth}, {}}; +static u3j_core _136_tri__rs_d[] = + { { "add", 7, _136_tri__rs_add_a, 0, no_hashes }, + { "sub", 7, _136_tri__rs_sub_a, 0, no_hashes }, + { "mul", 7, _136_tri__rs_mul_a, 0, no_hashes }, + { "div", 7, _136_tri__rs_div_a, 0, no_hashes }, + { "sqt", 7, _136_tri__rs_sqt_a, 0, no_hashes }, + { "fma", 7, _136_tri__rs_fma_a, 0, no_hashes }, + { "lth", 7, _136_tri__rs_lth_a, 0, no_hashes }, + { "lte", 7, _136_tri__rs_lte_a, 0, no_hashes }, + { "equ", 7, _136_tri__rs_equ_a, 0, no_hashes }, + { "gte", 7, _136_tri__rs_gte_a, 0, no_hashes }, + { "gth", 7, _136_tri__rs_gth_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_tri__rq_add_a[] = {{".2", u3weq_add}, {}}; +static u3j_harm _136_tri__rq_sub_a[] = {{".2", u3weq_sub}, {}}; +static u3j_harm _136_tri__rq_mul_a[] = {{".2", u3weq_mul}, {}}; +static u3j_harm _136_tri__rq_div_a[] = {{".2", u3weq_div}, {}}; +static u3j_harm _136_tri__rq_sqt_a[] = {{".2", u3weq_sqt}, {}}; +static u3j_harm _136_tri__rq_fma_a[] = {{".2", u3weq_fma}, {}}; +static u3j_harm _136_tri__rq_lth_a[] = {{".2", u3weq_lth}, {}}; +static u3j_harm _136_tri__rq_lte_a[] = {{".2", u3weq_lte}, {}}; +static u3j_harm _136_tri__rq_equ_a[] = {{".2", u3weq_equ}, {}}; +static u3j_harm _136_tri__rq_gte_a[] = {{".2", u3weq_gte}, {}}; +static u3j_harm _136_tri__rq_gth_a[] = {{".2", u3weq_gth}, {}}; +static u3j_core _136_tri__rq_d[] = + { { "add", 7, _136_tri__rq_add_a, 0, no_hashes }, + { "sub", 7, _136_tri__rq_sub_a, 0, no_hashes }, + { "mul", 7, _136_tri__rq_mul_a, 0, no_hashes }, + { "div", 7, _136_tri__rq_div_a, 0, no_hashes }, + { "sqt", 7, _136_tri__rq_sqt_a, 0, no_hashes }, + { "fma", 7, _136_tri__rq_fma_a, 0, no_hashes }, + { "lth", 7, _136_tri__rq_lth_a, 0, no_hashes }, + { "lte", 7, _136_tri__rq_lte_a, 0, no_hashes }, + { "equ", 7, _136_tri__rq_equ_a, 0, no_hashes }, + { "gte", 7, _136_tri__rq_gte_a, 0, no_hashes }, + { "gth", 7, _136_tri__rq_gth_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_tri__rh_add_a[] = {{".2", u3wes_add}, {}}; +static u3j_harm _136_tri__rh_sub_a[] = {{".2", u3wes_sub}, {}}; +static u3j_harm _136_tri__rh_mul_a[] = {{".2", u3wes_mul}, {}}; +static u3j_harm _136_tri__rh_div_a[] = {{".2", u3wes_div}, {}}; +static u3j_harm _136_tri__rh_sqt_a[] = {{".2", u3wes_sqt}, {}}; +static u3j_harm _136_tri__rh_fma_a[] = {{".2", u3wes_fma}, {}}; +static u3j_harm _136_tri__rh_lth_a[] = {{".2", u3wes_lth}, {}}; +static u3j_harm _136_tri__rh_lte_a[] = {{".2", u3wes_lte}, {}}; +static u3j_harm _136_tri__rh_equ_a[] = {{".2", u3wes_equ}, {}}; +static u3j_harm _136_tri__rh_gte_a[] = {{".2", u3wes_gte}, {}}; +static u3j_harm _136_tri__rh_gth_a[] = {{".2", u3wes_gth}, {}}; +static u3j_core _136_tri__rh_d[] = + { { "add", 7, _136_tri__rh_add_a, 0, no_hashes }, + { "sub", 7, _136_tri__rh_sub_a, 0, no_hashes }, + { "mul", 7, _136_tri__rh_mul_a, 0, no_hashes }, + { "div", 7, _136_tri__rh_div_a, 0, no_hashes }, + { "sqt", 7, _136_tri__rh_sqt_a, 0, no_hashes }, + { "fma", 7, _136_tri__rh_fma_a, 0, no_hashes }, + { "lth", 7, _136_tri__rh_lth_a, 0, no_hashes }, + { "lte", 7, _136_tri__rh_lte_a, 0, no_hashes }, + { "equ", 7, _136_tri__rh_equ_a, 0, no_hashes }, + { "gte", 7, _136_tri__rh_gte_a, 0, no_hashes }, + { "gth", 7, _136_tri__rh_gth_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_tri__og_raw_a[] = {{".2", u3weo_raw}, {}}; +static u3j_core _136_tri__og_d[] = + { { "raw", 7, _136_tri__og_raw_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_tri__sha_sha1_a[] = {{".2", u3we_sha1}, {}}; +static u3j_core _136_tri__sha_d[] = + { { "sha1", 7, _136_tri__sha_sha1_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_tri_shax_a[] = {{".2", u3we_shax}, {}}; +static u3j_harm _136_tri_shay_a[] = {{".2", u3we_shay}, {}}; +static u3j_harm _136_tri_shas_a[] = {{".2", u3we_shas}, {}}; +static u3j_harm _136_tri_shal_a[] = {{".2", u3we_shal}, {}}; + +static u3j_harm _136_ob_fynd_a[] = {{".2", u3we_fynd_ob}, {}}; +static u3j_harm _136_ob_fein_a[] = {{".2", u3we_fein_ob}, {}}; +static u3j_core _136_ob_d[] = { + { "fein", 7, _136_ob_fein_a, 0, no_hashes }, + { "fynd", 7, _136_ob_fynd_a, 0, no_hashes }, + {} +}; +static u3j_hood _136_ob_ho[] = { + { "fein", 42 }, + { "fynd", 20 }, + {}, +}; + + +static u3j_hood _136_tri_ho[] = { + { "ob", 20 }, + { "yore", 5462 }, + { "year", 44975 }, + {}, +}; + + +/* layer two + */ +static u3j_harm _136_two_find_a[] = {{".2", u3wb_find, c3y}, {}}; +static u3j_harm _136_two_flop_a[] = {{".2", u3wb_flop, c3y}, {}}; +static u3j_harm _136_two_lent_a[] = {{".2", u3wb_lent, c3y}, {}}; +static u3j_harm _136_two_levy_a[] = {{".2", u3wb_levy, c3y}, {}}; +static u3j_harm _136_two_lien_a[] = {{".2", u3wb_lien, c3y}, {}}; +static u3j_harm _136_two_murn_a[] = {{".2", u3wb_murn, c3y}, {}}; +static u3j_harm _136_two_need_a[] = {{".2", u3wb_need, c3y}, {}}; +static u3j_harm _136_two_reap_a[] = {{".2", u3wb_reap, c3y}, {}}; +static u3j_harm _136_two_reel_a[] = {{".2", u3wb_reel, c3y}, {}}; +static u3j_harm _136_two_roll_a[] = {{".2", u3wb_roll, c3y}, {}}; +static u3j_harm _136_two_skid_a[] = {{".2", u3wb_skid, c3y}, {}}; +static u3j_harm _136_two_skim_a[] = {{".2", u3wb_skim, c3y}, {}}; +static u3j_harm _136_two_skip_a[] = {{".2", u3wb_skip, c3y}, {}}; +static u3j_harm _136_two_scag_a[] = {{".2", u3wb_scag, c3y}, {}}; +static u3j_harm _136_two_slag_a[] = {{".2", u3wb_slag, c3y}, {}}; +static u3j_harm _136_two_snag_a[] = {{".2", u3wb_snag, c3y}, {}}; +static u3j_harm _136_two_sort_a[] = {{".2", u3wb_sort, c3y}, {}}; +static u3j_harm _136_two_turn_a[] = {{".2", u3wb_turn, c3y}, {}}; +static u3j_harm _136_two_weld_a[] = {{".2", u3wb_weld, c3y}, {}}; +static u3j_harm _136_two_welp_a[] = {{".2", u3wb_welp, c3y}, {}}; +static u3j_harm _136_two_zing_a[] = {{".2", u3wb_zing, c3y}, {}}; + +static u3j_harm _136_two_bex_a[] = {{".2", u3wc_bex, c3y}, {}}; +static u3j_harm _136_two_can_a[] = {{".2", u3wc_can, c3y}, {}}; +static u3j_harm _136_two_cat_a[] = {{".2", u3wc_cat, c3y}, {}}; +static u3j_harm _136_two_con_a[] = {{".2", u3wc_con, c3y}, {}}; +static u3j_harm _136_two_cut_a[] = {{".2", u3wc_cut, c3y}, {}}; +static u3j_harm _136_two_dis_a[] = {{".2", u3wc_dis, c3y}, {}}; +static u3j_harm _136_two_dor_a[] = {{".2", u3wc_dor, c3y}, {}}; +static u3j_harm _136_two_end_a[] = {{".2", u3wc_end, c3y}, {}}; +static u3j_harm _136_two_gor_a[] = {{".2", u3wc_gor, c3y}, {}}; +static u3j_harm _136_two_lsh_a[] = {{".2", u3wc_lsh, c3y}, {}}; +static u3j_harm _136_two_met_a[] = {{".2", u3wc_met, c3y}, {}}; +static u3j_harm _136_two_mix_a[] = {{".2", u3wc_mix, c3y}, {}}; +static u3j_harm _136_two_mor_a[] = {{".2", u3wc_mor, c3y}, {}}; +static u3j_harm _136_two_mug_a[] = {{".2", u3wc_mug, c3y}, {}}; +static u3j_harm _136_two_muk_a[] = {{".2", u3wc_muk, c3y}, {}}; +static u3j_harm _136_two_pow_a[] = {{".2", u3wc_pow, c3y}, {}}; +static u3j_harm _136_two_rap_a[] = {{".2", u3wc_rap, c3y}, {}}; +static u3j_harm _136_two_rep_a[] = {{".2", u3wc_rep, c3y}, {}}; +static u3j_harm _136_two_rev_a[] = {{".2", u3wc_rev, c3y}, {}}; +static u3j_harm _136_two_rip_a[] = {{".2", u3wc_rip, c3y}, {}}; +static u3j_harm _136_two_rsh_a[] = {{".2", u3wc_rsh, c3y}, {}}; +static u3j_harm _136_two_swp_a[] = {{".2", u3wc_swp, c3y}, {}}; +static u3j_harm _136_two_sqt_a[] = {{".2", u3wc_sqt, c3y}, {}}; +static u3j_harm _136_two_xeb_a[] = {{".2", u3wc_xeb, c3y}, {}}; + +static u3j_harm _136_two__in_bif_a[] = {{".2", u3wdi_bif}, {}}; +static u3j_harm _136_two__in_del_a[] = {{".2", u3wdi_del}, {}}; +static u3j_harm _136_two__in_dif_a[] = {{".2", u3wdi_dif}, {}}; +static u3j_harm _136_two__in_gas_a[] = {{".2", u3wdi_gas}, {}}; +static u3j_harm _136_two__in_has_a[] = {{".2", u3wdi_has}, {}}; +static u3j_harm _136_two__in_int_a[] = {{".2", u3wdi_int}, {}}; +static u3j_harm _136_two__in_put_a[] = {{".2", u3wdi_put}, {}}; +static u3j_harm _136_two__in_rep_a[] = {{".2", u3wdi_rep}, {}}; +static u3j_harm _136_two__in_run_a[] = {{".2", u3wdi_run}, {}}; +static u3j_harm _136_two__in_tap_a[] = {{".2", u3wdi_tap}, {}}; +static u3j_harm _136_two__in_wyt_a[] = {{".2", u3wdi_wyt}, {}}; +static u3j_harm _136_two__in_uni_a[] = {{".2", u3wdi_uni}, {}}; + +static u3j_harm _136_two__by_all_a[] = {{".2", u3wdb_all, c3y}, {}}; +static u3j_harm _136_two__by_any_a[] = {{".2", u3wdb_any, c3y}, {}}; +static u3j_harm _136_two__by_apt_a[] = {{".2", u3wdb_apt, c3y}, {}}; + +static u3j_harm _136_two__by_del_a[] = {{".2", u3wdb_del, c3y}, {}}; +static u3j_harm _136_two__by_dif_a[] = {{".2", u3wdb_dif, c3y}, {}}; +static u3j_harm _136_two__by_gas_a[] = {{".2", u3wdb_gas, c3y}, {}}; +static u3j_harm _136_two__by_get_a[] = {{".2", u3wdb_get, c3y}, {}}; +static u3j_harm _136_two__by_has_a[] = {{".2", u3wdb_has, c3y}, {}}; +static u3j_harm _136_two__by_int_a[] = {{".2", u3wdb_int, c3y}, {}}; +static u3j_harm _136_two__by_jab_a[] = {{".2", u3wdb_jab, c3y}, {}}; +static u3j_harm _136_two__by_key_a[] = {{".2", u3wdb_key, c3y}, {}}; +static u3j_harm _136_two__by_put_a[] = {{".2", u3wdb_put, c3y}, {}}; +static u3j_harm _136_two__by_rep_a[] = {{".2", u3wdb_rep, c3y}, {}}; +static u3j_harm _136_two__by_run_a[] = {{".2", u3wdb_run, c3y}, {}}; +static u3j_harm _136_two__by_tap_a[] = {{".2", u3wdb_tap, c3y}, {}}; +static u3j_harm _136_two__by_uni_a[] = {{".2", u3wdb_uni, c3y}, {}}; +static u3j_harm _136_two__by_urn_a[] = {{".2", u3wdb_urn, c3y}, {}}; +static u3j_harm _136_two__by_wyt_a[] = {{".2", u3wdb_wyt, c3y}, {}}; + +static u3j_harm _136_two_cue_a[] = {{".2", u3we_cue}, {}}; +static u3j_harm _136_two_jam_a[] = {{".2", u3we_jam}, {}}; +static u3j_harm _136_two_mat_a[] = {{".2", u3we_mat}, {}}; +static u3j_harm _136_two_rub_a[] = {{".2", u3we_rub}, {}}; + + + +/* layer one + */ +static u3j_harm _136_one_add_a[] = {{".2", u3wa_add, c3y}, {}}; +static u3j_harm _136_one_dec_a[] = {{".2", u3wa_dec, c3y}, {}}; +static u3j_harm _136_one_div_a[] = {{".2", u3wa_div, c3y}, {}}; +static u3j_harm _136_one_dvr_a[] = {{".2", u3wc_dvr, c3y}, {}}; +static u3j_harm _136_one_gte_a[] = {{".2", u3wa_gte, c3y}, {}}; +static u3j_harm _136_one_gth_a[] = {{".2", u3wa_gth, c3y}, {}}; +static u3j_harm _136_one_lte_a[] = {{".2", u3wa_lte, c3y}, {}}; +static u3j_harm _136_one_lth_a[] = {{".2", u3wa_lth, c3y}, {}}; +static u3j_harm _136_one_max_a[] = {{".2", u3wa_max, c3y}, {}}; +static u3j_harm _136_one_min_a[] = {{".2", u3wa_min, c3y}, {}}; +static u3j_harm _136_one_mod_a[] = {{".2", u3wa_mod, c3y}, {}}; +static u3j_harm _136_one_mul_a[] = {{".2", u3wa_mul, c3y}, {}}; +static u3j_harm _136_one_sub_a[] = {{".2", u3wa_sub, c3y}, {}}; + +static u3j_harm _136_one_cap_a[] = {{".2", u3wc_cap, c3y}, {}}; +static u3j_harm _136_one_peg_a[] = {{".2", u3wc_peg, c3y}, {}}; +static u3j_harm _136_one_mas_a[] = {{".2", u3wc_mas, c3y}, {}}; + +static u3j_harm _136_lull_plot_fax_a[] = {{".2", u3wg_plot_fax, c3y}, {}}; +static u3j_harm _136_lull_plot_met_a[] = {{".2", u3wg_plot_met, c3y}, {}}; + +static u3j_core _136_lull_plot_d[] = + { { "fax", 7, _136_lull_plot_fax_a, 0, no_hashes }, + { "met", 7, _136_lull_plot_met_a, 0, no_hashes }, + {} + }; + +static u3j_core _136_lull_d[] = + { { "plot", 31, 0, _136_lull_plot_d, no_hashes }, + {} + }; + +static u3j_harm _136_hex_blake3_hash_a[] = {{".2", u3we_blake3_hash, c3y}, {}}; +static u3j_harm _136_hex_blake3_compress_a[] = {{".2", u3we_blake3_compress, c3y}, {}}; +static u3j_harm _136_hex_blake3_chunk_output_a[] = {{".2", u3we_blake3_chunk_output, c3y}, {}}; + +static u3j_core _136_hex_blake3_d[] = + { { "hash", 7, _136_hex_blake3_hash_a, 0, no_hashes }, + { "chunk-output", 7, _136_hex_blake3_chunk_output_a, 0, no_hashes }, + {} + }; + + +static u3j_core _136_hex_blake3_impl_d[] = + { { "compress", 7, _136_hex_blake3_compress_a, 0, no_hashes }, + { "blake3", 7, 0, _136_hex_blake3_d, no_hashes }, + {} + }; + +static u3j_harm _136_hex_blake2b_a[] = {{".2", u3we_blake2b, c3y}, {}}; + +static u3j_core _136_hex_blake_d[] = + { { "blake2b", 7, _136_hex_blake2b_a, 0, no_hashes }, + { "blake3-impl", 7, 0, _136_hex_blake3_impl_d, no_hashes }, + {} + }; + + +static u3j_harm _136_hex_chacha_crypt_a[] = {{".2", u3we_chacha_crypt, c3y}, {}}; +static u3j_harm _136_hex_chacha_xchacha_a[] = {{".2", u3we_chacha_xchacha, c3y}, {}}; +static u3j_core _136_hex_chacha_d[] = + { { "crypt", 7, _136_hex_chacha_crypt_a, 0, no_hashes }, + { "xchacha", 7, _136_hex_chacha_xchacha_a, 0, no_hashes }, + {} + }; + + +//+| %utilities +static u3j_harm _136_hex_bytestream_rip_octs_a[] = {{".2", u3we_bytestream_rip_octs, c3y}, {}}; +static u3j_harm _136_hex_bytestream_cat_octs_a[] = {{".2", u3we_bytestream_cat_octs, c3y}, {}}; +static u3j_harm _136_hex_bytestream_can_octs_a[] = {{".2", u3we_bytestream_can_octs, c3y}, {}}; +//+| %read-byte +static u3j_harm _136_hex_bytestream_read_byte_a[] = {{".2", u3we_bytestream_read_byte, c3y}, {}}; +//+| %read-octs +static u3j_harm _136_hex_bytestream_read_octs_a[] = {{".2", u3we_bytestream_read_octs, c3y}, {}}; +//+| %navigation +static u3j_harm _136_hex_bytestream_skip_line_a[] = {{".2", u3we_bytestream_skip_line, c3y}, {}}; +static u3j_harm _136_hex_bytestream_find_byte_a[] = {{".2", u3we_bytestream_find_byte, c3y}, {}}; +static u3j_harm _136_hex_bytestream_seek_byte_a[] = {{".2", u3we_bytestream_seek_byte, c3y}, {}}; +//+| %transformation +static u3j_harm _136_hex_bytestream_chunk_a[] = {{".2", u3we_bytestream_chunk}, {}}; +static u3j_harm _136_hex_bytestream_extract_a[] = {{".2", u3we_bytestream_extract}, {}}; +static u3j_harm _136_hex_bytestream_fuse_extract_a[] = {{".2", u3we_bytestream_fuse_extract}, {}}; +//+| %bitstream +static u3j_harm _136_hex_bytestream_need_bits_a[] = {{".2", u3we_bytestream_need_bits}, {}}; +static u3j_harm _136_hex_bytestream_drop_bits_a[] = {{".2", u3we_bytestream_drop_bits}, {}}; +// static u3j_harm _136_hex_bytestream_skip_bits_a[] = {{".2", u3we_bytestream_skip_bits}, {}}; +static u3j_harm _136_hex_bytestream_peek_bits_a[] = {{".2", u3we_bytestream_peek_bits}, {}}; +static u3j_harm _136_hex_bytestream_read_bits_a[] = {{".2", u3we_bytestream_read_bits}, {}}; +// static u3j_harm _136_hex_bytestream_read_need_bits_a[] = {{".2", u3we_bytestream_read_need_bits}, {}}; +static u3j_harm _136_hex_bytestream_byte_bits_a[] = {{".2", u3we_bytestream_byte_bits}, {}}; + +static u3j_core _136_hex_bytestream_d[] = + { //+| %utilities + {"rip-octs", 7, _136_hex_bytestream_rip_octs_a, 0, no_hashes }, + {"cat-octs", 7, _136_hex_bytestream_cat_octs_a, 0, no_hashes }, + {"can-octs", 7, _136_hex_bytestream_can_octs_a, 0, no_hashes }, + //+| %navigation + {"skip-line", 7, _136_hex_bytestream_skip_line_a, 0, no_hashes }, + {"find-byte", 7, _136_hex_bytestream_find_byte_a, 0, no_hashes }, + {"seek-byte", 7, _136_hex_bytestream_seek_byte_a, 0, no_hashes }, + //+| %read-byte + {"read-byte", 7, _136_hex_bytestream_read_byte_a, 0, no_hashes }, + //+| %read-octs + {"read-octs", 7, _136_hex_bytestream_read_octs_a, 0, no_hashes }, + //+| %transformation + {"chunk", 7, _136_hex_bytestream_chunk_a, 0, no_hashes }, + {"extract", 7, _136_hex_bytestream_extract_a, 0, no_hashes }, + {"fuse-extract", 7, _136_hex_bytestream_fuse_extract_a, 0, no_hashes }, + //+| %bitstream + {"need-bits", 7, _136_hex_bytestream_need_bits_a, 0, no_hashes }, + {"drop-bits", 7, _136_hex_bytestream_drop_bits_a, 0, no_hashes }, + // {"skip-bits", 7, _136_hex_bytestream_skip_bits_a, 0, no_hashes }, + {"peek-bits", 7, _136_hex_bytestream_peek_bits_a, 0, no_hashes }, + {"read-bits", 7, _136_hex_bytestream_read_bits_a, 0, no_hashes }, + // {"read-need-bits", 7, _136_hex_bytestream_read_need_bits_a, 0, no_hashes }, + {"byte-bits", 7, _136_hex_bytestream_byte_bits_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_hex_json_de_a[] = {{".2", u3we_json_de}, {}}; +static u3j_harm _136_hex_json_en_a[] = {{".2", u3we_json_en}, {}}; +static u3j_core _136_hex_json_d[] = + { { "de", 15, _136_hex_json_de_a, 0, no_hashes }, + { "en", 15, _136_hex_json_en_a, 0, no_hashes }, + {} + }; + +/* /lib jets in non core +*/ +static u3j_harm _136_non__lagoon_add_a[] = {{".2", u3wi_la_add}, {}}; +static u3j_harm _136_non__lagoon_sub_a[] = {{".2", u3wi_la_sub}, {}}; +static u3j_harm _136_non__lagoon_mul_a[] = {{".2", u3wi_la_mul}, {}}; +static u3j_harm _136_non__lagoon_div_a[] = {{".2", u3wi_la_div}, {}}; +static u3j_harm _136_non__lagoon_mod_a[] = {{".2", u3wi_la_mod}, {}}; +static u3j_harm _136_non__lagoon_adds_a[] = {{".2", u3wi_la_adds}, {}}; +static u3j_harm _136_non__lagoon_subs_a[] = {{".2", u3wi_la_subs}, {}}; +static u3j_harm _136_non__lagoon_muls_a[] = {{".2", u3wi_la_muls}, {}}; +static u3j_harm _136_non__lagoon_divs_a[] = {{".2", u3wi_la_divs}, {}}; +static u3j_harm _136_non__lagoon_mods_a[] = {{".2", u3wi_la_mods}, {}}; +static u3j_harm _136_non__lagoon_dot_a[] = {{".2", u3wi_la_dot}, {}}; +static u3j_harm _136_non__lagoon_trans_a[] ={{".2", u3wi_la_transpose}, {}}; +static u3j_harm _136_non__lagoon_cumsum_a[]={{".2", u3wi_la_cumsum}, {}}; +static u3j_harm _136_non__lagoon_argmin_a[]={{".2", u3wi_la_argmin}, {}}; +static u3j_harm _136_non__lagoon_argmax_a[]={{".2", u3wi_la_argmax}, {}}; +static u3j_harm _136_non__lagoon_ravel_a[]={{".2", u3wi_la_ravel}, {}}; +static u3j_harm _136_non__lagoon_min_a[] = {{".2", u3wi_la_min}, {}}; +static u3j_harm _136_non__lagoon_max_a[] = {{".2", u3wi_la_max}, {}}; +static u3j_harm _136_non__lagoon_linspace_a[]={{".2", u3wi_la_linspace}, {}}; +static u3j_harm _136_non__lagoon_range_a[]= {{".2", u3wi_la_range}, {}}; +static u3j_harm _136_non__lagoon_abs_a[] = {{".2", u3wi_la_abs}, {}}; +static u3j_harm _136_non__lagoon_gth_a[] = {{".2", u3wi_la_gth}, {}}; +static u3j_harm _136_non__lagoon_gte_a[] = {{".2", u3wi_la_gte}, {}}; +static u3j_harm _136_non__lagoon_lth_a[] = {{".2", u3wi_la_lth}, {}}; +static u3j_harm _136_non__lagoon_lte_a[] = {{".2", u3wi_la_lte}, {}}; +static u3j_harm _136_non__lagoon_diag_a[] = {{".2", u3wi_la_diag}, {}}; +static u3j_harm _136_non__lagoon_trace_a[]= {{".2", u3wi_la_trace}, {}}; +static u3j_harm _136_non__lagoon_mmul_a[] = {{".2", u3wi_la_mmul}, {}}; +static u3j_harm _136_non__mice_a[] = {{".2", u3we_mice}, {}}; + +static u3j_core _136_non__la_core_d[] = + { { "add-rays", 7, _136_non__lagoon_add_a, 0, no_hashes }, + { "sub-rays", 7, _136_non__lagoon_sub_a, 0, no_hashes }, + { "mul-rays", 7, _136_non__lagoon_mul_a, 0, no_hashes }, + { "div-rays", 7, _136_non__lagoon_div_a, 0, no_hashes }, + { "mod-rays", 7, _136_non__lagoon_mod_a, 0, no_hashes }, + { "add-scal", 7, _136_non__lagoon_adds_a, 0, no_hashes }, + { "sub-scal", 7, _136_non__lagoon_subs_a, 0, no_hashes }, + { "mul-scal", 7, _136_non__lagoon_muls_a, 0, no_hashes }, + { "div-scal", 7, _136_non__lagoon_divs_a, 0, no_hashes }, + { "mod-scal", 7, _136_non__lagoon_mods_a, 0, no_hashes }, + { "dot", 7, _136_non__lagoon_dot_a, 0, no_hashes }, + { "transpose",7, _136_non__lagoon_trans_a, 0, no_hashes }, + { "cumsum", 7, _136_non__lagoon_cumsum_a, 0, no_hashes }, + { "argmin", 7, _136_non__lagoon_argmin_a, 0, no_hashes }, + { "argmax", 7, _136_non__lagoon_argmax_a, 0, no_hashes }, + { "ravel", 7, _136_non__lagoon_ravel_a, 0, no_hashes }, + { "min", 7, _136_non__lagoon_min_a, 0, no_hashes }, + { "max", 7, _136_non__lagoon_max_a, 0, no_hashes }, + { "linspace", 7, _136_non__lagoon_linspace_a, 0, no_hashes }, + { "range", 7, _136_non__lagoon_range_a, 0, no_hashes }, + { "abs", 7, _136_non__lagoon_abs_a, 0, no_hashes }, + { "gth", 7, _136_non__lagoon_gth_a, 0, no_hashes }, + { "gte", 7, _136_non__lagoon_gte_a, 0, no_hashes }, + { "lth", 7, _136_non__lagoon_lth_a, 0, no_hashes }, + { "lte", 7, _136_non__lagoon_lte_a, 0, no_hashes }, + { "diag", 7, _136_non__lagoon_diag_a, 0, no_hashes }, + { "trace", 7, _136_non__lagoon_trace_a,0, no_hashes }, + { "mmul", 7, _136_non__lagoon_mmul_a, 0, no_hashes }, + {} + }; + +static u3j_core _136_non_d[] = + { { "lagoon", 7, 0, _136_non__la_core_d, no_hashes }, + { "mice", 7, _136_non__mice_a, 0, no_hashes }, + {} + }; + + +static u3j_harm _136_hex_lia_run_v1_a[] = {{".2", u3we_lia_run_v1, c3y}, {}}; + +static u3j_harm _136_hex_lia_run_once_inner_a[] = {{".2", u3we_lia_run_once, c3y}, {}}; + +static u3j_core _136_hex_lia_run_once_d[] = { + { "run-once-inner-v0", 15, _136_hex_lia_run_once_inner_a, 0, no_hashes }, + {} +}; + +static u3j_core _136_hex_lia_monad_d[] = { + { "run-v1", 7, _136_hex_lia_run_v1_a, 0, no_hashes }, + { "run-once-v0", 7, 0, _136_hex_lia_run_once_d, no_hashes }, + {} +}; + +static u3j_core _136_hex_wasm_engine_d[] = { + { "monad-v0", 3, 0, _136_hex_lia_monad_d, no_hashes }, + {} +}; + +static u3j_core _136_hex_wasm_op_def_d[] = { + { "wasm-engine-v0", 3, 0, _136_hex_wasm_engine_d, no_hashes }, + {} +}; + +static u3j_core _136_hex_wasm_validator_d[] = { + { "wasm-op-def-v0", 3, 0, _136_hex_wasm_op_def_d, no_hashes }, + {} +}; + +static u3j_core _136_hex_wasm_parser_d[] = { + { "validator-v0", 3, 0, _136_hex_wasm_validator_d, no_hashes }, + {} +}; + +static u3j_core _136_hex_lia_sur_d[] = { + { "wasm-parser-v0", 3, 0, _136_hex_wasm_parser_d, no_hashes }, + {} +}; + +static u3j_core _136_hex_wasm_engine_sur_d[] = { + { "monad-sur-v1", 3, 0, _136_hex_lia_sur_d, no_hashes }, + {} +}; + +static u3j_core _136_hex_wasm_sur_d[] = { + { "engine-sur-v0", 3, 0, _136_hex_wasm_engine_sur_d, no_hashes }, + {} +}; + +static u3j_core _136_hex_d[] = + { { "non", 7, 0, _136_non_d, no_hashes }, + + { "lull", 3, 0, _136_lull_d, no_hashes }, + + { "lore", 63, _136_hex_lore_a, 0, no_hashes }, + + { "leer", 63, _136_hex_leer_a, 0, no_hashes }, + { "loss", 63, _136_hex_loss_a, 0, no_hashes }, + { "lune", 127, _136_hex_lune_a, 0, no_hashes }, + + { "crc", 31, 0, _136_hex__crc_d, no_hashes }, + + { "coed", 63, 0, _136_hex_coed_d, no_hashes }, + { "aes", 31, 0, _136_hex_aes_d, no_hashes }, + + { "hmac", 63, 0, _136_hex_hmac_d, no_hashes }, + { "argon", 31, 0, _136_hex_argon_d, no_hashes }, + { "blake", 31, 0, _136_hex_blake_d, no_hashes }, + { "chacha", 31, 0, _136_hex_chacha_d, no_hashes }, + { "kecc", 31, 0, _136_hex_kecc_d, no_hashes }, + { "ripemd", 31, 0, _136_hex_ripe_d, no_hashes }, + { "scr", 31, 0, _136_hex_scr_d, no_hashes }, + { "secp", 6, 0, _136_hex_secp_d, no_hashes }, + { "mimes", 31, 0, _136_hex_mimes_d, no_hashes }, + { "json", 31, 0, _136_hex_json_d, no_hashes }, + { "checksum", 15, 0, _136_hex_checksum_d, no_hashes}, + { "wasm-sur-v0", 3, 0, _136_hex_wasm_sur_d, no_hashes }, + { "bytestream-v0", 31, 0, _136_hex_bytestream_d, no_hashes}, + { "zlib-v0", 31, 0, _136_hex__zlib_d, no_hashes }, + {} + }; + +static u3j_core _136_pen_d[] = + { { "hex", 7, 0, _136_hex_d, no_hashes }, + + { "cell", 7, _136_pen_cell_a, 0, no_hashes }, + { "comb", 7, _136_pen_comb_a, 0, no_hashes }, + { "cons", 7, _136_pen_cons_a, 0, no_hashes }, + { "core", 7, _136_pen_core_a, 0, no_hashes }, + { "face", 7, _136_pen_face_a, 0, no_hashes }, + { "fitz", 7, _136_pen_fitz_a, 0, no_hashes }, + { "fork", 7, _136_pen_fork_a, 0, no_hashes }, + { "look", 7, _136_pen_look_a, 0, no_hashes }, + { "loot", 7, _136_pen_loot_a, 0, no_hashes }, + { "ut", 15, 0, _136_pen__ut_d, no_hashes, _136_pen__ut_ho }, + {} + }; + +static u3j_core _136_qua__vi_d[] = + { + { "mole", 7, _136_qua_mole_a, 0, no_hashes }, + { "mule", 7, _136_qua_mule_a, 0, no_hashes }, + {} + }; + +static u3j_core _136_qua_d[] = + { { "pen", 3, 0, _136_pen_d, no_hashes, _136_pen_ho }, + + { "po", 7, 0, _136_qua__po_d, no_hashes }, + + { "trip", 7, _136_qua_trip_a, 0, no_hashes }, + + { "bend", 7, 0, _136_qua__bend_d, no_hashes }, + { "cold", 7, 0, _136_qua__cold_d, no_hashes }, + { "comp", 7, 0, _136_qua__comp_d, no_hashes }, + { "cook", 7, 0, _136_qua__cook_d, no_hashes }, + { "easy", 7, 0, _136_qua__easy_d, no_hashes }, + { "glue", 7, 0, _136_qua__glue_d, no_hashes }, + { "here", 7, 0, _136_qua__here_d, no_hashes }, + { "just", 7, 0, _136_qua__just_d, no_hashes }, + { "mask", 7, 0, _136_qua__mask_d, no_hashes }, + { "shim", 7, 0, _136_qua__shim_d, no_hashes }, + { "stag", 7, 0, _136_qua__stag_d, no_hashes }, + { "stew", 7, 0, _136_qua__stew_d, no_hashes }, + { "stir", 7, 0, _136_qua__stir_d, no_hashes }, + + { "pfix", 7, _136_qua_pfix_a, 0, no_hashes }, + { "plug", 7, _136_qua_plug_a, 0, no_hashes }, + { "pose", 7, _136_qua_pose_a, 0, no_hashes }, + { "sfix", 7, _136_qua_sfix_a, 0, no_hashes }, + + { "mink", 7, _136_qua_mink_a, 0, no_hashes }, + { "vi", 7, 0, _136_qua__vi_d, no_hashes }, + + { "scot", 7, _136_qua_scot_a, 0, no_hashes }, + { "scow", 7, _136_qua_scow_a, 0, no_hashes }, + { "slaw", 7, _136_qua_slaw_a, 0, no_hashes }, + {} + }; + +static u3j_core _136_tri_d[] = + { { "qua", 3, 0, _136_qua_d, no_hashes, _136_qua_ho }, + + { "cofl", 7, 0, _136_tri__cofl_d, no_hashes }, + { "rd", 7, 0, _136_tri__rd_d, no_hashes }, + { "rs", 7, 0, _136_tri__rs_d, no_hashes }, + { "rq", 7, 0, _136_tri__rq_d, no_hashes }, + { "rh", 7, 0, _136_tri__rh_d, no_hashes }, + { "og", 7, 0, _136_tri__og_d, no_hashes }, + + { "sha", 7, 0, _136_tri__sha_d, no_hashes }, + { "shax", 7, _136_tri_shax_a, 0, no_hashes }, + { "shay", 7, _136_tri_shay_a, 0, no_hashes }, + { "shas", 7, _136_tri_shas_a, 0, no_hashes }, + { "shal", 7, _136_tri_shal_a, 0, no_hashes }, + + { "ob", 3, 0, _136_ob_d, no_hashes, _136_ob_ho }, + {} + }; + +static u3j_harm _136_two_clz_a[] = {{".2", u3wc_clz, c3n}, {}}; +static u3j_harm _136_two_ctz_a[] = {{".2", u3wc_ctz, c3n}, {}}; +static u3j_harm _136_two_ham_a[] = {{".2", u3wc_ham, c3n}, {}}; + +static u3j_harm _136_two__hew_fun_a[] = {{".2", u3wc_hew, c3n}, {}}; +static u3j_core _136_two__hew_d[] = + { { "fun", 15, _136_two__hew_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_two__by_bif_a[] = {{".2", u3wdb_bif, c3y}, {}}; + +static u3j_core _136_two__by_d[] = + { { "all", 7, _136_two__by_all_a, 0, no_hashes }, + { "any", 7, _136_two__by_any_a, 0, no_hashes }, + { "apt", 7, _136_two__by_apt_a, 0, no_hashes }, + { "bif", 7, _136_two__by_bif_a, 0, no_hashes }, + { "del", 7, _136_two__by_del_a, 0, no_hashes }, + { "dif", 7, _136_two__by_dif_a, 0, no_hashes }, + { "gas", 7, _136_two__by_gas_a, 0, no_hashes }, + { "get", 7, _136_two__by_get_a, 0, no_hashes }, + { "has", 7, _136_two__by_has_a, 0, no_hashes }, + { "int", 7, _136_two__by_int_a, 0, no_hashes }, + { "jab", 7, _136_two__by_jab_a, 0, no_hashes }, + { "key", 7, _136_two__by_key_a, 0, no_hashes }, + { "put", 7, _136_two__by_put_a, 0, no_hashes }, + { "rep", 7, _136_two__by_rep_a, 0, no_hashes }, + { "run", 7, _136_two__by_run_a, 0, no_hashes }, + { "tap", 7, _136_two__by_tap_a, 0, no_hashes }, + { "uni", 7, _136_two__by_uni_a, 0, no_hashes }, + { "urn", 7, _136_two__by_urn_a, 0, no_hashes }, + { "wyt", 3, _136_two__by_wyt_a, 0, no_hashes }, + {} + }; + + +static u3j_harm _136_two__in_apt_a[] = {{".2", u3wdi_apt}, {}}; + +static u3j_core _136_two__in_d[] = + { { "apt", 7, _136_two__in_apt_a, 0, no_hashes }, + { "bif", 7, _136_two__in_bif_a, 0, no_hashes }, + { "del", 7, _136_two__in_del_a, 0, no_hashes }, + { "dif", 7, _136_two__in_dif_a, 0, no_hashes }, + { "gas", 7, _136_two__in_gas_a, 0, no_hashes }, + { "has", 7, _136_two__in_has_a, 0, no_hashes }, + { "int", 7, _136_two__in_int_a, 0, no_hashes }, + { "put", 7, _136_two__in_put_a, 0, no_hashes }, + { "rep", 7, _136_two__in_rep_a, 0, no_hashes }, + { "run", 7, _136_two__in_run_a, 0, no_hashes }, + { "tap", 7, _136_two__in_tap_a, 0, no_hashes }, + { "uni", 7, _136_two__in_uni_a, 0, no_hashes }, + { "wyt", 3, _136_two__in_wyt_a, 0, no_hashes }, + {} + }; + +static u3j_harm _136_two_rig_a[] = {{".2", u3wc_rig, c3n}, {}}; + +static u3j_harm _136_two_mate_a[] = {{".2", u3wb_mate, c3y}, {}}; +static u3j_harm _136_two_sew_a[] = {{".2", u3wc_sew, c3y}, {}}; + +static u3j_core _136_two_d[] = + { { "tri", 3, 0, _136_tri_d, no_hashes, _136_tri_ho }, + + { "find", 7, _136_two_find_a, 0, no_hashes }, + { "flop", 7, _136_two_flop_a, 0, no_hashes }, + { "lent", 7, _136_two_lent_a, 0, no_hashes }, + { "levy", 7, _136_two_levy_a, 0, no_hashes }, + { "lien", 7, _136_two_lien_a, 0, no_hashes }, + { "murn", 7, _136_two_murn_a, 0, no_hashes }, + { "need", 7, _136_two_need_a, 0, no_hashes }, + { "mate", 7, _136_two_mate_a, 0, no_hashes }, + { "reap", 7, _136_two_reap_a, 0, no_hashes }, + { "reel", 7, _136_two_reel_a, 0, no_hashes }, + { "roll", 7, _136_two_roll_a, 0, no_hashes }, + { "skid", 7, _136_two_skid_a, 0, no_hashes }, + { "skim", 7, _136_two_skim_a, 0, no_hashes }, + { "skip", 7, _136_two_skip_a, 0, no_hashes }, + { "scag", 7, _136_two_scag_a, 0, no_hashes }, + { "slag", 7, _136_two_slag_a, 0, no_hashes }, + { "snag", 7, _136_two_snag_a, 0, no_hashes }, + { "sort", 7, _136_two_sort_a, 0, no_hashes }, + { "turn", 7, _136_two_turn_a, 0, no_hashes }, + { "weld", 7, _136_two_weld_a, 0, no_hashes }, + { "welp", 7, _136_two_welp_a, 0, no_hashes }, + { "zing", 7, _136_two_zing_a, 0, no_hashes }, + + { "bex", 7, _136_two_bex_a, 0, no_hashes }, + { "cat", 7, _136_two_cat_a, 0, no_hashes }, + { "can", 7, _136_two_can_a, 0, no_hashes }, + { "clz", 7, _136_two_clz_a, 0, no_hashes }, + { "con", 7, _136_two_con_a, 0, no_hashes }, + { "ctz", 7, _136_two_ctz_a, 0, no_hashes }, + { "cue", 7, _136_two_cue_a, 0, no_hashes }, + { "cut", 7, _136_two_cut_a, 0, no_hashes }, + { "dis", 7, _136_two_dis_a, 0, no_hashes }, + { "dor", 7, _136_two_dor_a, 0, no_hashes }, + { "end", 7, _136_two_end_a, 0, no_hashes }, + { "gor", 7, _136_two_gor_a, 0, no_hashes }, + { "ham", 7, _136_two_ham_a, 0, no_hashes }, + { "hew", 7, 0, _136_two__hew_d, no_hashes }, + { "jam", 7, _136_two_jam_a, 0, no_hashes }, + { "lsh", 7, _136_two_lsh_a, 0, no_hashes }, + { "mat", 7, _136_two_mat_a, 0, no_hashes }, + { "met", 7, _136_two_met_a, 0, no_hashes }, + { "mix", 7, _136_two_mix_a, 0, no_hashes }, + { "mor", 7, _136_two_mor_a, 0, no_hashes }, + { "mug", 7, _136_two_mug_a, 0, no_hashes }, + { "muk", 7, _136_two_muk_a, 0, no_hashes }, + { "rap", 7, _136_two_rap_a, 0, no_hashes }, + { "rep", 7, _136_two_rep_a, 0, no_hashes }, + { "rev", 7, _136_two_rev_a, 0, no_hashes }, + { "rig", 7, _136_two_rig_a, 0, no_hashes }, + { "rip", 7, _136_two_rip_a, 0, no_hashes }, + { "rsh", 7, _136_two_rsh_a, 0, no_hashes }, + { "swp", 7, _136_two_swp_a, 0, no_hashes }, + { "rub", 7, _136_two_rub_a, 0, no_hashes }, + { "pow", 7, _136_two_pow_a, 0, no_hashes }, + { "sew", 7, _136_two_sew_a, 0, no_hashes }, + { "sqt", 7, _136_two_sqt_a, 0, no_hashes }, + { "xeb", 7, _136_two_xeb_a, 0, no_hashes }, + + { "by", 7, 0, _136_two__by_d, no_hashes }, + { "in", 7, 0, _136_two__in_d, no_hashes }, + {} + }; + +static u3j_core _136_one_d[] = + { { "two", 3, 0, _136_two_d, no_hashes }, + + { "add", 7, _136_one_add_a, 0, no_hashes }, + { "dec", 7, _136_one_dec_a, 0, no_hashes }, + { "div", 7, _136_one_div_a, 0, no_hashes }, + { "dvr", 7, _136_one_dvr_a, 0, no_hashes }, + { "gte", 7, _136_one_gte_a, 0, no_hashes }, + { "gth", 7, _136_one_gth_a, 0, no_hashes }, + { "lte", 7, _136_one_lte_a, 0, no_hashes }, + { "lth", 7, _136_one_lth_a, 0, no_hashes }, + { "max", 7, _136_one_max_a, 0, no_hashes }, + { "min", 7, _136_one_min_a, 0, no_hashes }, + { "mod", 7, _136_one_mod_a, 0, no_hashes }, + { "mul", 7, _136_one_mul_a, 0, no_hashes }, + { "sub", 7, _136_one_sub_a, 0, no_hashes }, + + { "cap", 7, _136_one_cap_a, 0, no_hashes }, + { "mas", 7, _136_one_mas_a, 0, no_hashes }, + { "peg", 7, _136_one_peg_a, 0, no_hashes }, + {} + }; + +u3j_core _k136_d[] = + { { "one", 3, 0, _136_one_d, no_hashes }, + {} + }; + diff --git a/vere/pkg/noun/jets/137/tree.c b/vere/pkg/noun/jets/137/tree.c new file mode 100644 index 0000000..9564135 --- /dev/null +++ b/vere/pkg/noun/jets/137/tree.c @@ -0,0 +1,1184 @@ +#include "c3/c3.h" +#include "jets.h" +#include "jets/w.h" + + +static c3_c* no_hashes[] = { 0 }; + +static u3j_harm _137_hex_mimes_base16_en_a[] = {{".2", u3we_en_base16}, {}}; +static u3j_harm _137_hex_mimes_base16_de_a[] = {{".2", u3we_de_base16}, {}}; +static u3j_core _137_hex_mimes_base16_d[] = + { { "en", 7, _137_hex_mimes_base16_en_a, 0, no_hashes }, + { "de", 7, _137_hex_mimes_base16_de_a, 0, no_hashes }, + {} + }; +static u3j_core _137_hex_mimes_d[] = + { { "base16", 3, 0, _137_hex_mimes_base16_d, no_hashes }, + {} + }; + +static u3j_harm _137_hex_aes_ecba_en_a[] = {{".2", u3wea_ecba_en}, {}}; +static u3j_harm _137_hex_aes_ecba_de_a[] = {{".2", u3wea_ecba_de}, {}}; +static u3j_core _137_hex_aes_ecba_d[] = + { { "en", 7, _137_hex_aes_ecba_en_a, 0, no_hashes }, + { "de", 7, _137_hex_aes_ecba_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_aes_ecbb_en_a[] = {{".2", u3wea_ecbb_en}, {}}; +static u3j_harm _137_hex_aes_ecbb_de_a[] = {{".2", u3wea_ecbb_de}, {}}; +static u3j_core _137_hex_aes_ecbb_d[] = + { { "en", 7, _137_hex_aes_ecbb_en_a, 0, no_hashes }, + { "de", 7, _137_hex_aes_ecbb_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_aes_ecbc_en_a[] = {{".2", u3wea_ecbc_en}, {}}; +static u3j_harm _137_hex_aes_ecbc_de_a[] = {{".2", u3wea_ecbc_de}, {}}; +static u3j_core _137_hex_aes_ecbc_d[] = + { { "en", 7, _137_hex_aes_ecbc_en_a, 0, no_hashes }, + { "de", 7, _137_hex_aes_ecbc_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_aes_cbca_en_a[] = {{".2", u3wea_cbca_en}, {}}; +static u3j_harm _137_hex_aes_cbca_de_a[] = {{".2", u3wea_cbca_de}, {}}; +static u3j_core _137_hex_aes_cbca_d[] = + { { "en", 7, _137_hex_aes_cbca_en_a, 0, no_hashes }, + { "de", 7, _137_hex_aes_cbca_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_aes_cbcb_en_a[] = {{".2", u3wea_cbcb_en}, {}}; +static u3j_harm _137_hex_aes_cbcb_de_a[] = {{".2", u3wea_cbcb_de}, {}}; +static u3j_core _137_hex_aes_cbcb_d[] = + { { "en", 7, _137_hex_aes_cbcb_en_a, 0, no_hashes }, + { "de", 7, _137_hex_aes_cbcb_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_aes_cbcc_en_a[] = {{".2", u3wea_cbcc_en}, {}}; +static u3j_harm _137_hex_aes_cbcc_de_a[] = {{".2", u3wea_cbcc_de}, {}}; +static u3j_core _137_hex_aes_cbcc_d[] = + { { "en", 7, _137_hex_aes_cbcc_en_a, 0, no_hashes }, + { "de", 7, _137_hex_aes_cbcc_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_aes_siva_en_a[] = {{".2", u3wea_siva_en}, {}}; +static u3j_harm _137_hex_aes_siva_de_a[] = {{".2", u3wea_siva_de}, {}}; +static u3j_core _137_hex_aes_siva_d[] = + { { "en", 7, _137_hex_aes_siva_en_a, 0, no_hashes }, + { "de", 7, _137_hex_aes_siva_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_aes_sivb_en_a[] = {{".2", u3wea_sivb_en}, {}}; +static u3j_harm _137_hex_aes_sivb_de_a[] = {{".2", u3wea_sivb_de}, {}}; +static u3j_core _137_hex_aes_sivb_d[] = + { { "en", 7, _137_hex_aes_sivb_en_a, 0, no_hashes }, + { "de", 7, _137_hex_aes_sivb_de_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_aes_sivc_en_a[] = {{".2", u3wea_sivc_en}, {}}; +static u3j_harm _137_hex_aes_sivc_de_a[] = {{".2", u3wea_sivc_de}, {}}; +static u3j_core _137_hex_aes_sivc_d[] = + { { "en", 7, _137_hex_aes_sivc_en_a, 0, no_hashes }, + { "de", 7, _137_hex_aes_sivc_de_a, 0, no_hashes }, + {} + }; +static u3j_core _137_hex_aes_d[] = + { { "ecba", 7, 0, _137_hex_aes_ecba_d, no_hashes }, + { "ecbb", 7, 0, _137_hex_aes_ecbb_d, no_hashes }, + { "ecbc", 7, 0, _137_hex_aes_ecbc_d, no_hashes }, + { "cbca", 7, 0, _137_hex_aes_cbca_d, no_hashes }, + { "cbcb", 7, 0, _137_hex_aes_cbcb_d, no_hashes }, + { "cbcc", 7, 0, _137_hex_aes_cbcc_d, no_hashes }, + { "siva", 7, 0, _137_hex_aes_siva_d, no_hashes }, + { "sivb", 7, 0, _137_hex_aes_sivb_d, no_hashes }, + { "sivc", 7, 0, _137_hex_aes_sivc_d, no_hashes }, + {} + }; + +static u3j_harm _137_hex_leer_a[] = {{".2", u3we_leer}, {}}; +static u3j_harm _137_hex_lore_a[] = {{".2", u3we_lore}, {}}; +static u3j_harm _137_hex_loss_a[] = {{".2", u3we_loss}, {}}; +static u3j_harm _137_hex_lune_a[] = {{".2", u3we_lune}, {}}; + + +static u3j_harm _137_hex__crc32_a[] = {{".2", u3we_crc32}, {}}; + +static u3j_core _137_hex__crc_d[] = {{"crc32", 7, _137_hex__crc32_a, 0, no_hashes }, {}}; + + +static u3j_harm _137_hex_coed__ed_scad_a[] = {{".2", u3wee_scad}, {}}; +static u3j_harm _137_hex_coed__ed_scas_a[] = {{".2", u3wee_scas}, {}}; +static u3j_harm _137_hex_coed__ed_scap_a[] = {{".2", u3wee_scap}, {}}; + +static u3j_harm _137_hex_coed__ed_puck_a[] = {{".2", u3wee_puck}, {}}; +static u3j_harm _137_hex_coed__ed_luck_a[] = {{".2", u3wee_luck}, {}}; +static u3j_harm _137_hex_coed__ed_sign_a[] = {{".2", u3wee_sign}, {}}; +static u3j_harm _137_hex_coed__ed_sign_raw_a[] = {{".2", u3wee_sign_raw}, {}}; +static u3j_harm _137_hex_coed__ed_sign_octs_a[] = {{".2", u3wee_sign_octs}, {}}; +static u3j_harm _137_hex_coed__ed_sign_octs_raw_a[] = {{".2", u3wee_sign_octs_raw}, {}}; +static u3j_harm _137_hex_coed__ed_veri_octs_a[] = {{".2", u3wee_veri_octs}, {}}; +static u3j_harm _137_hex_coed__ed_veri_a[] = {{".2", u3wee_veri}, {}}; +static u3j_harm _137_hex_coed__ed_shar_a[] = {{".2", u3wee_shar}, {}}; +static u3j_harm _137_hex_coed__ed_slar_a[] = {{".2", u3wee_slar}, {}}; + +static u3j_harm _137_hex_coed__ed_smac_a[] = + {{".2", u3wee_smac}, {}}; + +static u3j_harm _137_hex_coed__ed_recs_a[] = + {{".2", u3wee_recs}, {}}; + +static u3j_harm _137_hex_coed__ed_point_neg_a[] = + {{".2", u3wee_point_neg}, {}}; + +static u3j_harm _137_hex_coed__ed_point_add_a[] = + {{".2", u3wee_point_add}, {}}; + +static u3j_harm _137_hex_coed__ed_scalarmult_a[] = + {{".2", u3wee_scalarmult}, {}}; + +static u3j_harm _137_hex_coed__ed_scalarmult_base_a[] = + {{".2", u3wee_scalarmult_base}, {}}; + +static u3j_harm _137_hex_coed__ed_add_scalarmult_scalarmult_base_a[] = + {{".2", u3wee_add_scalarmult_scalarmult_base}, {}}; + +static u3j_harm _137_hex_coed__ed_add_double_scalarmult_a[] = + {{".2", u3wee_add_double_scalarmult}, {}}; + +static u3j_core _137_hex_coed__ed_d[] = + { { "sign", 7, _137_hex_coed__ed_sign_a, 0, no_hashes }, + { "sign-raw", 7, _137_hex_coed__ed_sign_raw_a, 0, no_hashes }, + { "sign-octs", 7, _137_hex_coed__ed_sign_octs_a, 0, no_hashes }, + { "sign-octs-raw", 7, _137_hex_coed__ed_sign_octs_raw_a, 0, no_hashes }, + { "puck", 7, _137_hex_coed__ed_puck_a, 0, no_hashes }, + { "luck", 7, _137_hex_coed__ed_luck_a, 0, no_hashes }, + { "scad", 7, _137_hex_coed__ed_scad_a, 0, no_hashes }, + { "scas", 7, _137_hex_coed__ed_scas_a, 0, no_hashes }, + { "scap", 7, _137_hex_coed__ed_scap_a, 0, no_hashes }, + { "veri-octs", 7, _137_hex_coed__ed_veri_octs_a, 0, no_hashes }, + { "veri", 7, _137_hex_coed__ed_veri_a, 0, no_hashes }, + { "shar", 7, _137_hex_coed__ed_shar_a, 0, no_hashes }, + { "slar", 7, _137_hex_coed__ed_slar_a, 0, no_hashes }, + { "point-add", 7, _137_hex_coed__ed_point_add_a, 0, 0 }, + { "point-neg", 7, _137_hex_coed__ed_point_neg_a, 0, 0 }, + { "recs", 7, _137_hex_coed__ed_recs_a, 0, 0 }, + { "smac", 7, _137_hex_coed__ed_smac_a, 0, 0 }, + { "scalarmult", 7, _137_hex_coed__ed_scalarmult_a, 0, + no_hashes }, + { "scalarmult-base", 7, _137_hex_coed__ed_scalarmult_base_a, 0, + no_hashes }, + { "add-scalarmult-scalarmult-base", 7, + _137_hex_coed__ed_add_scalarmult_scalarmult_base_a, 0, + no_hashes }, + { "add-double-scalarmult", 7, + _137_hex_coed__ed_add_double_scalarmult_a, 0, + no_hashes }, + {} + }; + +static u3j_core _137_hex_coed_d[] = + { { "ed", 3, 0, _137_hex_coed__ed_d, no_hashes }, + {} + }; + +static u3j_harm _137_hex_hmac_hmac_a[] = {{".2", u3we_hmac}, {}}; +static u3j_core _137_hex_hmac_d[] = + { { "hmac", 7, _137_hex_hmac_hmac_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_argon2_a[] = {{".2", u3we_argon2}, {}}; +static u3j_core _137_hex_argon_d[] = + { { "argon2", 511, _137_hex_argon2_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_scr_pbk_a[] = {{".2", u3wes_pbk, c3y}, {}}; +static u3j_harm _137_hex_scr_pbl_a[] = {{".2", u3wes_pbl, c3y}, {}}; +static u3j_harm _137_hex_scr_hsh_a[] = {{".2", u3wes_hsh, c3y}, {}}; +static u3j_harm _137_hex_scr_hsl_a[] = {{".2", u3wes_hsl, c3y}, {}}; +static u3j_core _137_hex_scr_d[] = + { { "pbk", 7, _137_hex_scr_pbk_a, 0, no_hashes }, + { "pbl", 7, _137_hex_scr_pbl_a, 0, no_hashes }, + { "hsh", 7, _137_hex_scr_hsh_a, 0, no_hashes }, + { "hsl", 7, _137_hex_scr_hsl_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_secp_secp256k1_make_a[] = {{".2", u3we_make, c3y}, {}}; +static u3j_harm _137_hex_secp_secp256k1_sign_a[] = {{".2", u3we_sign, c3y}, {}}; +static u3j_harm _137_hex_secp_secp256k1_reco_a[] = {{".2", u3we_reco, c3y}, {}}; + +static u3j_harm _137_hex_secp_secp256k1_schnorr_sosi_a[] = + {{".2", u3we_sosi}, {}}; +static u3j_harm _137_hex_secp_secp256k1_schnorr_sove_a[] = + {{".2", u3we_sove}, {}}; +static u3j_core _137_hex_secp_secp256k1_schnorr_d[] = + { { "sosi", 7, + _137_hex_secp_secp256k1_schnorr_sosi_a, 0, + no_hashes }, + { "sove", 7, + _137_hex_secp_secp256k1_schnorr_sove_a, 0, + no_hashes }, + {} + }; + +static u3j_core _137_hex_secp_secp256k1_d[] = + { { "make", 7, _137_hex_secp_secp256k1_make_a, 0, no_hashes }, + { "sign", 7, _137_hex_secp_secp256k1_sign_a, 0, no_hashes }, + { "reco", 7, _137_hex_secp_secp256k1_reco_a, 0, no_hashes }, + { "schnorr", 7, 0, + _137_hex_secp_secp256k1_schnorr_d, + no_hashes }, + {} + }; +static u3j_core _137_hex_secp_d[] = + { { "secp256k1", 3, 0, _137_hex_secp_secp256k1_d, no_hashes }, + {} + }; + + +static u3j_harm _137_hex_kecc_k224_a[] = + {{".2", u3we_kecc224, c3y, c3y, c3y}, {}}; +static u3j_harm _137_hex_kecc_k256_a[] = + {{".2", u3we_kecc256, c3y, c3y, c3y}, {}}; +static u3j_harm _137_hex_kecc_k384_a[] = + {{".2", u3we_kecc384, c3y, c3y, c3y}, {}}; +static u3j_harm _137_hex_kecc_k512_a[] = + {{".2", u3we_kecc512, c3y, c3y, c3y}, {}}; +static u3j_core _137_hex_kecc_d[] = + { { "k224", 7, _137_hex_kecc_k224_a, 0, no_hashes }, + { "k256", 7, _137_hex_kecc_k256_a, 0, no_hashes }, + { "k384", 7, _137_hex_kecc_k384_a, 0, no_hashes }, + { "k512", 7, _137_hex_kecc_k512_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_ripemd_160_a[] = {{".2", u3we_ripe, c3y}, {}}; +static u3j_core _137_hex_ripe_d[] = + { { "ripemd160", 7, _137_hex_ripemd_160_a, 0, no_hashes }, + {} + }; + + + +/* layer five + */ +static u3j_harm _137_pen_cell_a[] = {{".2", u3wf_cell}, {}}; +static u3j_harm _137_pen_comb_a[] = {{".2", u3wf_comb}, {}}; +static u3j_harm _137_pen_cons_a[] = {{".2", u3wf_cons}, {}}; +static u3j_harm _137_pen_core_a[] = {{".2", u3wf_core}, {}}; +static u3j_harm _137_pen_face_a[] = {{".2", u3wf_face}, {}}; +static u3j_harm _137_pen_fitz_a[] = {{".2", u3wf_fitz}, {}}; +static u3j_harm _137_pen_fork_a[] = {{".2", u3wf_fork}, {}}; + +static u3j_harm _137_pen_look_a[] = {{".2", u3wf_look}, {}}; +static u3j_harm _137_pen_loot_a[] = {{".2", u3wf_loot}, {}}; + +static u3j_harm _137_pen__ut_crop_a[] = {{".2", u3wfu_crop}, {}}; +static u3j_harm _137_pen__ut_fish_a[] = {{".2", u3wfu_fish}, {}}; +static u3j_harm _137_pen__ut_fuse_a[] = {{".2", u3wfu_fuse}, {}}; +static u3j_harm _137_pen__ut_redo_a[] = {{".2", u3wfu_redo}, {}}; +static u3j_harm _137_pen__ut_mint_a[] = {{".2", u3wfu_mint}, {}}; +static u3j_harm _137_pen__ut_mull_a[] = {{".2", u3wfu_mull}, {}}; + +static u3j_harm _137_pen__ut_nest_dext_a[] = {{".2", u3wfu_nest_dext}, {}}; +static u3j_core _137_pen__ut_nest_in_d[] = + { + { "nest-dext", 3, _137_pen__ut_nest_dext_a, 0, no_hashes }, + {} + }; +static u3j_core _137_pen__ut_nest_d[] = + { + { "nest-in", 7, 0, _137_pen__ut_nest_in_d, no_hashes }, + {} + }; + +static u3j_harm _137_pen__ut_rest_a[] = {{".2", u3wfu_rest}, {}}; + +static u3j_core _137_pen__ut_d[] = + { + { "crop", 7, _137_pen__ut_crop_a, 0, no_hashes }, + { "fish", 7, _137_pen__ut_fish_a, 0, no_hashes }, + { "fuse", 7, _137_pen__ut_fuse_a, 0, no_hashes }, + { "redo", 7, _137_pen__ut_redo_a, 0, no_hashes }, + { "mint", 7, _137_pen__ut_mint_a, 0, no_hashes }, + { "mull", 7, _137_pen__ut_mull_a, 0, no_hashes }, + { "nest", 7, 0, _137_pen__ut_nest_d, no_hashes }, + { "rest", 7, _137_pen__ut_rest_a, 0, no_hashes }, + {} + }; + +static u3j_hood _137_pen__ut_ho[] = + { { "ar", 12282 }, + { "fan", 28, c3n }, + { "rib", 58, c3n }, + { "vet", 59, c3n }, + + { "blow", 6015 }, + { "burp", 342 }, + { "busk", 1373 }, + { "buss", 374 }, + { "crop", 1494 }, + { "duck", 1524 }, + { "dune", 2991 }, + { "dunk", 3066 }, + { "epla", 12206 }, + { "emin", 1534 }, + { "emul", 6134 }, + { "feel", 1502 }, + { "felt", 94 }, + { "fine", 49086 }, + { "fire", 4 }, + { "fish", 6006 }, + { "fond", 12283 }, + { "fund", 6014 }, + // XX +funk is not part of +ut, and this hook appears to be unused + // remove from here and the +ut hint + // + { "funk", 0xbefafa, c3y, 31 }, + { "fuse", 24021 }, + { "gain", 380 }, + { "lose", 0x2fefe }, + { "mile", 382 }, + { "mine", 372 }, + { "mint", 49083 }, + { "moot", 0x2feff }, + { "mull", 24020 }, + { "nest", 92 }, + { "peel", 1526 }, + { "play", 3006 }, + { "peek", 1532 }, + { "repo", 22 }, + { "rest", 6102 }, + { "tack", 6007 }, + { "toss", 24540 }, + { "wrap", 6137 }, + {}, + }; + + +static u3j_hood _137_pen_ho[] = { + { "ap", 22 }, + { "ut", 86 }, + {}, +}; + + +/* layer four + */ +static u3j_harm _137_qua_trip_a[] = {{".2", u3we_trip}, {}}; + +static u3j_harm _137_qua_slaw_a[] = {{".2", u3we_slaw}, {}}; +static u3j_harm _137_qua_scot_a[] = {{".2", u3we_scot}, {}}; +static u3j_harm _137_qua_scow_a[] = {{".2", u3we_scow}, {}}; + +static u3j_harm _137_qua__po_ind_a[] = {{".2", u3wcp_ind}, {}}; +static u3j_harm _137_qua__po_ins_a[] = {{".2", u3wcp_ins}, {}}; +static u3j_harm _137_qua__po_tod_a[] = {{".2", u3wcp_tod}, {}}; +static u3j_harm _137_qua__po_tos_a[] = {{".2", u3wcp_tos}, {}}; +static u3j_core _137_qua__po_d[] = + { { "ind", 7, _137_qua__po_ind_a, 0, no_hashes }, + { "ins", 7, _137_qua__po_ins_a, 0, no_hashes }, + { "tod", 7, _137_qua__po_tod_a, 0, no_hashes }, + { "tos", 7, _137_qua__po_tos_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__bend_fun_a[] = {{".2", u3we_bend_fun}, {}}; +static u3j_core _137_qua__bend_d[] = + { { "fun", 7, _137_qua__bend_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__cold_fun_a[] = {{".2", u3we_cold_fun}, {}}; +static u3j_core _137_qua__cold_d[] = + { { "fun", 7, _137_qua__cold_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__cook_fun_a[] = {{".2", u3we_cook_fun}, {}}; +static u3j_core _137_qua__cook_d[] = + { { "fun", 7, _137_qua__cook_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__comp_fun_a[] = {{".2", u3we_comp_fun}, {}}; +static u3j_core _137_qua__comp_d[] = + { { "fun", 7, _137_qua__comp_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__easy_fun_a[] = {{".2", u3we_easy_fun}, {}}; +static u3j_core _137_qua__easy_d[] = + { { "fun", 7, _137_qua__easy_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__glue_fun_a[] = {{".2", u3we_glue_fun}, {}}; +static u3j_core _137_qua__glue_d[] = + { { "fun", 7, _137_qua__glue_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__here_fun_a[] = {{".2", u3we_here_fun}, {}}; +static u3j_core _137_qua__here_d[] = + { { "fun", 7, _137_qua__here_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__just_fun_a[] = {{".2", u3we_just_fun}, {}}; +static u3j_core _137_qua__just_d[] = + { { "fun", 7, _137_qua__just_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__mask_fun_a[] = {{".2", u3we_mask_fun}, {}}; +static u3j_core _137_qua__mask_d[] = + { { "fun", 7, _137_qua__mask_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__shim_fun_a[] = {{".2", u3we_shim_fun}, {}}; +static u3j_core _137_qua__shim_d[] = + { { "fun", 7, _137_qua__shim_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__stag_fun_a[] = {{".2", u3we_stag_fun}, {}}; +static u3j_core _137_qua__stag_d[] = + { { "fun", 7, _137_qua__stag_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__stew_fun_a[] = {{".2", u3we_stew_fun}, {}}; +static u3j_core _137_qua__stew_d[] = + { { "fun", 31, _137_qua__stew_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua__stir_fun_a[] = {{".2", u3we_stir_fun}, {}}; +static u3j_core _137_qua__stir_d[] = + { { "fun", 7, _137_qua__stir_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_qua_pfix_a[] = {{".2", u3we_pfix}, {}}; + +static u3j_harm _137_qua_plug_a[] = {{".2", u3we_plug}, {}}; +static u3j_harm _137_qua_pose_a[] = {{".2", u3we_pose}, {}}; + +static u3j_harm _137_qua_sfix_a[] = {{".2", u3we_sfix}, {}}; + +static u3j_harm _137_qua_mink_a[] = {{".2", u3we_mink}, {}}; +static u3j_harm _137_qua_mole_a[] = {{".2", u3we_mole}, {}}; +static u3j_harm _137_qua_mule_a[] = {{".2", u3we_mule}, {}}; + + +static u3j_hood _137_qua_ho[] = { + { "mute", 0x2fbabe }, + { "show", 24406 }, + { "mure", 1374 }, + {}, +}; + + +/* layer three + */ +static u3j_harm _137_tri__cofl__drg_a[] = {{".2", u3wef_drg}, {}}; +static u3j_harm _137_tri__cofl__lug_a[] = {{".2", u3wef_lug}, {}}; +static u3j_core _137_tri__cofl_d[] = + { { "drg", 7, _137_tri__cofl__drg_a, 0, no_hashes }, + { "lug", 7, _137_tri__cofl__lug_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_tri__rd_add_a[] = {{".2", u3wer_add}, {}}; +static u3j_harm _137_tri__rd_sub_a[] = {{".2", u3wer_sub}, {}}; +static u3j_harm _137_tri__rd_mul_a[] = {{".2", u3wer_mul}, {}}; +static u3j_harm _137_tri__rd_div_a[] = {{".2", u3wer_div}, {}}; +static u3j_harm _137_tri__rd_sqt_a[] = {{".2", u3wer_sqt}, {}}; +static u3j_harm _137_tri__rd_fma_a[] = {{".2", u3wer_fma}, {}}; +static u3j_harm _137_tri__rd_lth_a[] = {{".2", u3wer_lth}, {}}; +static u3j_harm _137_tri__rd_lte_a[] = {{".2", u3wer_lte}, {}}; +static u3j_harm _137_tri__rd_equ_a[] = {{".2", u3wer_equ}, {}}; +static u3j_harm _137_tri__rd_gte_a[] = {{".2", u3wer_gte}, {}}; +static u3j_harm _137_tri__rd_gth_a[] = {{".2", u3wer_gth}, {}}; +static u3j_core _137_tri__rd_d[] = + { { "add", 7, _137_tri__rd_add_a, 0, no_hashes }, + { "sub", 7, _137_tri__rd_sub_a, 0, no_hashes }, + { "mul", 7, _137_tri__rd_mul_a, 0, no_hashes }, + { "div", 7, _137_tri__rd_div_a, 0, no_hashes }, + { "sqt", 7, _137_tri__rd_sqt_a, 0, no_hashes }, + { "fma", 7, _137_tri__rd_fma_a, 0, no_hashes }, + { "lth", 7, _137_tri__rd_lth_a, 0, no_hashes }, + { "lte", 7, _137_tri__rd_lte_a, 0, no_hashes }, + { "equ", 7, _137_tri__rd_equ_a, 0, no_hashes }, + { "gte", 7, _137_tri__rd_gte_a, 0, no_hashes }, + { "gth", 7, _137_tri__rd_gth_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_tri__rs_add_a[] = {{".2", u3wet_add}, {}}; +static u3j_harm _137_tri__rs_sub_a[] = {{".2", u3wet_sub}, {}}; +static u3j_harm _137_tri__rs_mul_a[] = {{".2", u3wet_mul}, {}}; +static u3j_harm _137_tri__rs_div_a[] = {{".2", u3wet_div}, {}}; +static u3j_harm _137_tri__rs_sqt_a[] = {{".2", u3wet_sqt}, {}}; +static u3j_harm _137_tri__rs_fma_a[] = {{".2", u3wet_fma}, {}}; +static u3j_harm _137_tri__rs_lth_a[] = {{".2", u3wet_lth}, {}}; +static u3j_harm _137_tri__rs_lte_a[] = {{".2", u3wet_lte}, {}}; +static u3j_harm _137_tri__rs_equ_a[] = {{".2", u3wet_equ}, {}}; +static u3j_harm _137_tri__rs_gte_a[] = {{".2", u3wet_gte}, {}}; +static u3j_harm _137_tri__rs_gth_a[] = {{".2", u3wet_gth}, {}}; +static u3j_core _137_tri__rs_d[] = + { { "add", 7, _137_tri__rs_add_a, 0, no_hashes }, + { "sub", 7, _137_tri__rs_sub_a, 0, no_hashes }, + { "mul", 7, _137_tri__rs_mul_a, 0, no_hashes }, + { "div", 7, _137_tri__rs_div_a, 0, no_hashes }, + { "sqt", 7, _137_tri__rs_sqt_a, 0, no_hashes }, + { "fma", 7, _137_tri__rs_fma_a, 0, no_hashes }, + { "lth", 7, _137_tri__rs_lth_a, 0, no_hashes }, + { "lte", 7, _137_tri__rs_lte_a, 0, no_hashes }, + { "equ", 7, _137_tri__rs_equ_a, 0, no_hashes }, + { "gte", 7, _137_tri__rs_gte_a, 0, no_hashes }, + { "gth", 7, _137_tri__rs_gth_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_tri__rq_add_a[] = {{".2", u3weq_add}, {}}; +static u3j_harm _137_tri__rq_sub_a[] = {{".2", u3weq_sub}, {}}; +static u3j_harm _137_tri__rq_mul_a[] = {{".2", u3weq_mul}, {}}; +static u3j_harm _137_tri__rq_div_a[] = {{".2", u3weq_div}, {}}; +static u3j_harm _137_tri__rq_sqt_a[] = {{".2", u3weq_sqt}, {}}; +static u3j_harm _137_tri__rq_fma_a[] = {{".2", u3weq_fma}, {}}; +static u3j_harm _137_tri__rq_lth_a[] = {{".2", u3weq_lth}, {}}; +static u3j_harm _137_tri__rq_lte_a[] = {{".2", u3weq_lte}, {}}; +static u3j_harm _137_tri__rq_equ_a[] = {{".2", u3weq_equ}, {}}; +static u3j_harm _137_tri__rq_gte_a[] = {{".2", u3weq_gte}, {}}; +static u3j_harm _137_tri__rq_gth_a[] = {{".2", u3weq_gth}, {}}; +static u3j_core _137_tri__rq_d[] = + { { "add", 7, _137_tri__rq_add_a, 0, no_hashes }, + { "sub", 7, _137_tri__rq_sub_a, 0, no_hashes }, + { "mul", 7, _137_tri__rq_mul_a, 0, no_hashes }, + { "div", 7, _137_tri__rq_div_a, 0, no_hashes }, + { "sqt", 7, _137_tri__rq_sqt_a, 0, no_hashes }, + { "fma", 7, _137_tri__rq_fma_a, 0, no_hashes }, + { "lth", 7, _137_tri__rq_lth_a, 0, no_hashes }, + { "lte", 7, _137_tri__rq_lte_a, 0, no_hashes }, + { "equ", 7, _137_tri__rq_equ_a, 0, no_hashes }, + { "gte", 7, _137_tri__rq_gte_a, 0, no_hashes }, + { "gth", 7, _137_tri__rq_gth_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_tri__rh_add_a[] = {{".2", u3wes_add}, {}}; +static u3j_harm _137_tri__rh_sub_a[] = {{".2", u3wes_sub}, {}}; +static u3j_harm _137_tri__rh_mul_a[] = {{".2", u3wes_mul}, {}}; +static u3j_harm _137_tri__rh_div_a[] = {{".2", u3wes_div}, {}}; +static u3j_harm _137_tri__rh_sqt_a[] = {{".2", u3wes_sqt}, {}}; +static u3j_harm _137_tri__rh_fma_a[] = {{".2", u3wes_fma}, {}}; +static u3j_harm _137_tri__rh_lth_a[] = {{".2", u3wes_lth}, {}}; +static u3j_harm _137_tri__rh_lte_a[] = {{".2", u3wes_lte}, {}}; +static u3j_harm _137_tri__rh_equ_a[] = {{".2", u3wes_equ}, {}}; +static u3j_harm _137_tri__rh_gte_a[] = {{".2", u3wes_gte}, {}}; +static u3j_harm _137_tri__rh_gth_a[] = {{".2", u3wes_gth}, {}}; +static u3j_core _137_tri__rh_d[] = + { { "add", 7, _137_tri__rh_add_a, 0, no_hashes }, + { "sub", 7, _137_tri__rh_sub_a, 0, no_hashes }, + { "mul", 7, _137_tri__rh_mul_a, 0, no_hashes }, + { "div", 7, _137_tri__rh_div_a, 0, no_hashes }, + { "sqt", 7, _137_tri__rh_sqt_a, 0, no_hashes }, + { "fma", 7, _137_tri__rh_fma_a, 0, no_hashes }, + { "lth", 7, _137_tri__rh_lth_a, 0, no_hashes }, + { "lte", 7, _137_tri__rh_lte_a, 0, no_hashes }, + { "equ", 7, _137_tri__rh_equ_a, 0, no_hashes }, + { "gte", 7, _137_tri__rh_gte_a, 0, no_hashes }, + { "gth", 7, _137_tri__rh_gth_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_tri__og_raw_a[] = {{".2", u3weo_raw}, {}}; +static u3j_core _137_tri__og_d[] = + { { "raw", 7, _137_tri__og_raw_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_tri__sha_sha1_a[] = {{".2", u3we_sha1}, {}}; +static u3j_core _137_tri__sha_d[] = + { { "sha1", 7, _137_tri__sha_sha1_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_tri_shax_a[] = {{".2", u3we_shax}, {}}; +static u3j_harm _137_tri_shay_a[] = {{".2", u3we_shay}, {}}; +static u3j_harm _137_tri_shas_a[] = {{".2", u3we_shas}, {}}; +static u3j_harm _137_tri_shal_a[] = {{".2", u3we_shal}, {}}; + +static u3j_harm _137_ob_fynd_a[] = {{".2", u3we_fynd_ob}, {}}; +static u3j_harm _137_ob_fein_a[] = {{".2", u3we_fein_ob}, {}}; +static u3j_core _137_ob_d[] = { + { "fein", 7, _137_ob_fein_a, 0, no_hashes }, + { "fynd", 7, _137_ob_fynd_a, 0, no_hashes }, + {} +}; +static u3j_hood _137_ob_ho[] = { + { "fein", 42 }, + { "fynd", 20 }, + {}, +}; + + +static u3j_hood _137_tri_ho[] = { + { "ob", 20 }, + { "yore", 5462 }, + { "year", 44975 }, + {}, +}; + + +/* layer two + */ +static u3j_harm _137_two_find_a[] = {{".2", u3wb_find, c3y}, {}}; +static u3j_harm _137_two_flop_a[] = {{".2", u3wb_flop, c3y}, {}}; +static u3j_harm _137_two_lent_a[] = {{".2", u3wb_lent, c3y}, {}}; +static u3j_harm _137_two_levy_a[] = {{".2", u3wb_levy, c3y}, {}}; +static u3j_harm _137_two_lien_a[] = {{".2", u3wb_lien, c3y}, {}}; +static u3j_harm _137_two_murn_a[] = {{".2", u3wb_murn, c3y}, {}}; +static u3j_harm _137_two_need_a[] = {{".2", u3wb_need, c3y}, {}}; +static u3j_harm _137_two_reap_a[] = {{".2", u3wb_reap, c3y}, {}}; +static u3j_harm _137_two_reel_a[] = {{".2", u3wb_reel, c3y}, {}}; +static u3j_harm _137_two_roll_a[] = {{".2", u3wb_roll, c3y}, {}}; +static u3j_harm _137_two_skid_a[] = {{".2", u3wb_skid, c3y}, {}}; +static u3j_harm _137_two_skim_a[] = {{".2", u3wb_skim, c3y}, {}}; +static u3j_harm _137_two_skip_a[] = {{".2", u3wb_skip, c3y}, {}}; +static u3j_harm _137_two_scag_a[] = {{".2", u3wb_scag, c3y}, {}}; +static u3j_harm _137_two_slag_a[] = {{".2", u3wb_slag, c3y}, {}}; +static u3j_harm _137_two_snag_a[] = {{".2", u3wb_snag, c3y}, {}}; +static u3j_harm _137_two_sort_a[] = {{".2", u3wb_sort, c3y}, {}}; +static u3j_harm _137_two_turn_a[] = {{".2", u3wb_turn, c3y}, {}}; +static u3j_harm _137_two_weld_a[] = {{".2", u3wb_weld, c3y}, {}}; +static u3j_harm _137_two_welp_a[] = {{".2", u3wb_welp, c3y}, {}}; +static u3j_harm _137_two_zing_a[] = {{".2", u3wb_zing, c3y}, {}}; + +static u3j_harm _137_two_bex_a[] = {{".2", u3wc_bex, c3y}, {}}; +static u3j_harm _137_two_can_a[] = {{".2", u3wc_can, c3y}, {}}; +static u3j_harm _137_two_cat_a[] = {{".2", u3wc_cat, c3y}, {}}; +static u3j_harm _137_two_con_a[] = {{".2", u3wc_con, c3y}, {}}; +static u3j_harm _137_two_cut_a[] = {{".2", u3wc_cut, c3y}, {}}; +static u3j_harm _137_two_dis_a[] = {{".2", u3wc_dis, c3y}, {}}; +static u3j_harm _137_two_dor_a[] = {{".2", u3wc_dor, c3y}, {}}; +static u3j_harm _137_two_end_a[] = {{".2", u3wc_end, c3y}, {}}; +static u3j_harm _137_two_gor_a[] = {{".2", u3wc_gor, c3y}, {}}; +static u3j_harm _137_two_lsh_a[] = {{".2", u3wc_lsh, c3y}, {}}; +static u3j_harm _137_two_met_a[] = {{".2", u3wc_met, c3y}, {}}; +static u3j_harm _137_two_mix_a[] = {{".2", u3wc_mix, c3y}, {}}; +static u3j_harm _137_two_mor_a[] = {{".2", u3wc_mor, c3y}, {}}; +static u3j_harm _137_two_mug_a[] = {{".2", u3wc_mug, c3y}, {}}; +static u3j_harm _137_two_muk_a[] = {{".2", u3wc_muk, c3y}, {}}; +static u3j_harm _137_two_pow_a[] = {{".2", u3wc_pow, c3y}, {}}; +static u3j_harm _137_two_rap_a[] = {{".2", u3wc_rap, c3y}, {}}; +static u3j_harm _137_two_rep_a[] = {{".2", u3wc_rep, c3y}, {}}; +static u3j_harm _137_two_rev_a[] = {{".2", u3wc_rev, c3y}, {}}; +static u3j_harm _137_two_rip_a[] = {{".2", u3wc_rip, c3y}, {}}; +static u3j_harm _137_two_rsh_a[] = {{".2", u3wc_rsh, c3y}, {}}; +static u3j_harm _137_two_swp_a[] = {{".2", u3wc_swp, c3y}, {}}; +static u3j_harm _137_two_sqt_a[] = {{".2", u3wc_sqt, c3y}, {}}; +static u3j_harm _137_two_xeb_a[] = {{".2", u3wc_xeb, c3y}, {}}; + +static u3j_harm _137_two__in_bif_a[] = {{".2", u3wdi_bif}, {}}; +static u3j_harm _137_two__in_del_a[] = {{".2", u3wdi_del}, {}}; +static u3j_harm _137_two__in_dif_a[] = {{".2", u3wdi_dif}, {}}; +static u3j_harm _137_two__in_gas_a[] = {{".2", u3wdi_gas}, {}}; +static u3j_harm _137_two__in_has_a[] = {{".2", u3wdi_has}, {}}; +static u3j_harm _137_two__in_int_a[] = {{".2", u3wdi_int}, {}}; +static u3j_harm _137_two__in_put_a[] = {{".2", u3wdi_put}, {}}; +static u3j_harm _137_two__in_rep_a[] = {{".2", u3wdi_rep}, {}}; +static u3j_harm _137_two__in_run_a[] = {{".2", u3wdi_run}, {}}; +static u3j_harm _137_two__in_tap_a[] = {{".2", u3wdi_tap}, {}}; +static u3j_harm _137_two__in_wyt_a[] = {{".2", u3wdi_wyt}, {}}; +static u3j_harm _137_two__in_uni_a[] = {{".2", u3wdi_uni}, {}}; + +static u3j_harm _137_two__by_all_a[] = {{".2", u3wdb_all, c3y}, {}}; +static u3j_harm _137_two__by_any_a[] = {{".2", u3wdb_any, c3y}, {}}; +static u3j_harm _137_two__by_apt_a[] = {{".2", u3wdb_apt, c3y}, {}}; + +static u3j_harm _137_two__by_del_a[] = {{".2", u3wdb_del, c3y}, {}}; +static u3j_harm _137_two__by_dif_a[] = {{".2", u3wdb_dif, c3y}, {}}; +static u3j_harm _137_two__by_gas_a[] = {{".2", u3wdb_gas, c3y}, {}}; +static u3j_harm _137_two__by_get_a[] = {{".2", u3wdb_get, c3y}, {}}; +static u3j_harm _137_two__by_has_a[] = {{".2", u3wdb_has, c3y}, {}}; +static u3j_harm _137_two__by_int_a[] = {{".2", u3wdb_int, c3y}, {}}; +static u3j_harm _137_two__by_jab_a[] = {{".2", u3wdb_jab, c3y}, {}}; +static u3j_harm _137_two__by_key_a[] = {{".2", u3wdb_key, c3y}, {}}; +static u3j_harm _137_two__by_put_a[] = {{".2", u3wdb_put, c3y}, {}}; +static u3j_harm _137_two__by_rep_a[] = {{".2", u3wdb_rep, c3y}, {}}; +static u3j_harm _137_two__by_run_a[] = {{".2", u3wdb_run, c3y}, {}}; +static u3j_harm _137_two__by_tap_a[] = {{".2", u3wdb_tap, c3y}, {}}; +static u3j_harm _137_two__by_uni_a[] = {{".2", u3wdb_uni, c3y}, {}}; +static u3j_harm _137_two__by_urn_a[] = {{".2", u3wdb_urn, c3y}, {}}; +static u3j_harm _137_two__by_wyt_a[] = {{".2", u3wdb_wyt, c3y}, {}}; + +static u3j_harm _137_two_cue_a[] = {{".2", u3we_cue}, {}}; +static u3j_harm _137_two_jam_a[] = {{".2", u3we_jam}, {}}; +static u3j_harm _137_two_mat_a[] = {{".2", u3we_mat}, {}}; +static u3j_harm _137_two_rub_a[] = {{".2", u3we_rub}, {}}; + + + +/* layer one + */ +static u3j_harm _137_one_add_a[] = {{".2", u3wa_add, c3y}, {}}; +static u3j_harm _137_one_dec_a[] = {{".2", u3wa_dec, c3y}, {}}; +static u3j_harm _137_one_div_a[] = {{".2", u3wa_div, c3y}, {}}; +static u3j_harm _137_one_dvr_a[] = {{".2", u3wc_dvr, c3y}, {}}; +static u3j_harm _137_one_gte_a[] = {{".2", u3wa_gte, c3y}, {}}; +static u3j_harm _137_one_gth_a[] = {{".2", u3wa_gth, c3y}, {}}; +static u3j_harm _137_one_lte_a[] = {{".2", u3wa_lte, c3y}, {}}; +static u3j_harm _137_one_lth_a[] = {{".2", u3wa_lth, c3y}, {}}; +static u3j_harm _137_one_max_a[] = {{".2", u3wa_max, c3y}, {}}; +static u3j_harm _137_one_min_a[] = {{".2", u3wa_min, c3y}, {}}; +static u3j_harm _137_one_mod_a[] = {{".2", u3wa_mod, c3y}, {}}; +static u3j_harm _137_one_mul_a[] = {{".2", u3wa_mul, c3y}, {}}; +static u3j_harm _137_one_sub_a[] = {{".2", u3wa_sub, c3y}, {}}; + +static u3j_harm _137_one_cap_a[] = {{".2", u3wc_cap, c3y}, {}}; +static u3j_harm _137_one_peg_a[] = {{".2", u3wc_peg, c3y}, {}}; +static u3j_harm _137_one_mas_a[] = {{".2", u3wc_mas, c3y}, {}}; + +static u3j_harm _137_lull_plot_fax_a[] = {{".2", u3wg_plot_fax, c3y}, {}}; +static u3j_harm _137_lull_plot_met_a[] = {{".2", u3wg_plot_met, c3y}, {}}; + +static u3j_core _137_lull_plot_d[] = + { { "fax", 7, _137_lull_plot_fax_a, 0, no_hashes }, + { "met", 7, _137_lull_plot_met_a, 0, no_hashes }, + {} + }; + +static u3j_core _137_lull_d[] = + { { "plot", 31, 0, _137_lull_plot_d, no_hashes }, + {} + }; + +static u3j_harm _137_hex_blake3_hash_a[] = {{".2", u3we_blake3_hash, c3y}, {}}; +static u3j_harm _137_hex_blake3_compress_a[] = {{".2", u3we_blake3_compress, c3y}, {}}; +static u3j_harm _137_hex_blake3_chunk_output_a[] = {{".2", u3we_blake3_chunk_output, c3y}, {}}; + +static u3j_core _137_hex_blake3_d[] = + { { "hash", 7, _137_hex_blake3_hash_a, 0, no_hashes }, + { "chunk-output", 7, _137_hex_blake3_chunk_output_a, 0, no_hashes }, + {} + }; + + +static u3j_core _137_hex_blake3_impl_d[] = + { { "compress", 7, _137_hex_blake3_compress_a, 0, no_hashes }, + { "blake3", 7, 0, _137_hex_blake3_d, no_hashes }, + {} + }; + +static u3j_harm _137_hex_blake2b_a[] = {{".2", u3we_blake2b, c3y}, {}}; + +static u3j_core _137_hex_blake_d[] = + { { "blake2b", 7, _137_hex_blake2b_a, 0, no_hashes }, + { "blake3-impl", 7, 0, _137_hex_blake3_impl_d, no_hashes }, + {} + }; + + +static u3j_harm _137_hex_chacha_crypt_a[] = {{".2", u3we_chacha_crypt, c3y}, {}}; +static u3j_harm _137_hex_chacha_xchacha_a[] = {{".2", u3we_chacha_xchacha, c3y}, {}}; +static u3j_core _137_hex_chacha_d[] = + { { "crypt", 7, _137_hex_chacha_crypt_a, 0, no_hashes }, + { "xchacha", 7, _137_hex_chacha_xchacha_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_hex_json_de_a[] = {{".2", u3we_json_de}, {}}; +static u3j_harm _137_hex_json_en_a[] = {{".2", u3we_json_en}, {}}; +static u3j_core _137_hex_json_d[] = + { { "de", 15, _137_hex_json_de_a, 0, no_hashes }, + { "en", 15, _137_hex_json_en_a, 0, no_hashes }, + {} + }; + +/* /lib jets in non core +*/ +static u3j_harm _137_non__lagoon_add_a[] = {{".2", u3wi_la_add}, {}}; +static u3j_harm _137_non__lagoon_sub_a[] = {{".2", u3wi_la_sub}, {}}; +static u3j_harm _137_non__lagoon_mul_a[] = {{".2", u3wi_la_mul}, {}}; +static u3j_harm _137_non__lagoon_div_a[] = {{".2", u3wi_la_div}, {}}; +static u3j_harm _137_non__lagoon_mod_a[] = {{".2", u3wi_la_mod}, {}}; +static u3j_harm _137_non__lagoon_adds_a[] = {{".2", u3wi_la_adds}, {}}; +static u3j_harm _137_non__lagoon_subs_a[] = {{".2", u3wi_la_subs}, {}}; +static u3j_harm _137_non__lagoon_muls_a[] = {{".2", u3wi_la_muls}, {}}; +static u3j_harm _137_non__lagoon_divs_a[] = {{".2", u3wi_la_divs}, {}}; +static u3j_harm _137_non__lagoon_mods_a[] = {{".2", u3wi_la_mods}, {}}; +static u3j_harm _137_non__lagoon_dot_a[] = {{".2", u3wi_la_dot}, {}}; +static u3j_harm _137_non__lagoon_trans_a[] ={{".2", u3wi_la_transpose}, {}}; +static u3j_harm _137_non__lagoon_cumsum_a[]={{".2", u3wi_la_cumsum}, {}}; +static u3j_harm _137_non__lagoon_argmin_a[]={{".2", u3wi_la_argmin}, {}}; +static u3j_harm _137_non__lagoon_argmax_a[]={{".2", u3wi_la_argmax}, {}}; +static u3j_harm _137_non__lagoon_ravel_a[]={{".2", u3wi_la_ravel}, {}}; +static u3j_harm _137_non__lagoon_min_a[] = {{".2", u3wi_la_min}, {}}; +static u3j_harm _137_non__lagoon_max_a[] = {{".2", u3wi_la_max}, {}}; +static u3j_harm _137_non__lagoon_linspace_a[]={{".2", u3wi_la_linspace}, {}}; +static u3j_harm _137_non__lagoon_range_a[]= {{".2", u3wi_la_range}, {}}; +static u3j_harm _137_non__lagoon_abs_a[] = {{".2", u3wi_la_abs}, {}}; +static u3j_harm _137_non__lagoon_gth_a[] = {{".2", u3wi_la_gth}, {}}; +static u3j_harm _137_non__lagoon_gte_a[] = {{".2", u3wi_la_gte}, {}}; +static u3j_harm _137_non__lagoon_lth_a[] = {{".2", u3wi_la_lth}, {}}; +static u3j_harm _137_non__lagoon_lte_a[] = {{".2", u3wi_la_lte}, {}}; +static u3j_harm _137_non__lagoon_diag_a[] = {{".2", u3wi_la_diag}, {}}; +static u3j_harm _137_non__lagoon_trace_a[]= {{".2", u3wi_la_trace}, {}}; +static u3j_harm _137_non__lagoon_mmul_a[] = {{".2", u3wi_la_mmul}, {}}; + +static u3j_core _137_non__la_core_d[] = + { { "add-rays", 7, _137_non__lagoon_add_a, 0, no_hashes }, + { "sub-rays", 7, _137_non__lagoon_sub_a, 0, no_hashes }, + { "mul-rays", 7, _137_non__lagoon_mul_a, 0, no_hashes }, + { "div-rays", 7, _137_non__lagoon_div_a, 0, no_hashes }, + { "mod-rays", 7, _137_non__lagoon_mod_a, 0, no_hashes }, + { "add-scal", 7, _137_non__lagoon_adds_a, 0, no_hashes }, + { "sub-scal", 7, _137_non__lagoon_subs_a, 0, no_hashes }, + { "mul-scal", 7, _137_non__lagoon_muls_a, 0, no_hashes }, + { "div-scal", 7, _137_non__lagoon_divs_a, 0, no_hashes }, + { "mod-scal", 7, _137_non__lagoon_mods_a, 0, no_hashes }, + { "dot", 7, _137_non__lagoon_dot_a, 0, no_hashes }, + { "transpose",7, _137_non__lagoon_trans_a, 0, no_hashes }, + { "cumsum", 7, _137_non__lagoon_cumsum_a, 0, no_hashes }, + { "argmin", 7, _137_non__lagoon_argmin_a, 0, no_hashes }, + { "argmax", 7, _137_non__lagoon_argmax_a, 0, no_hashes }, + { "ravel", 7, _137_non__lagoon_ravel_a, 0, no_hashes }, + { "min", 7, _137_non__lagoon_min_a, 0, no_hashes }, + { "max", 7, _137_non__lagoon_max_a, 0, no_hashes }, + { "linspace", 7, _137_non__lagoon_linspace_a, 0, no_hashes }, + { "range", 7, _137_non__lagoon_range_a, 0, no_hashes }, + { "abs", 7, _137_non__lagoon_abs_a, 0, no_hashes }, + { "gth", 7, _137_non__lagoon_gth_a, 0, no_hashes }, + { "gte", 7, _137_non__lagoon_gte_a, 0, no_hashes }, + { "lth", 7, _137_non__lagoon_lth_a, 0, no_hashes }, + { "lte", 7, _137_non__lagoon_lte_a, 0, no_hashes }, + { "diag", 7, _137_non__lagoon_diag_a, 0, no_hashes }, + { "trace", 7, _137_non__lagoon_trace_a,0, no_hashes }, + { "mmul", 7, _137_non__lagoon_mmul_a, 0, no_hashes }, + {} + }; + +static u3j_core _137_non_d[] = + { { "lagoon", 7, 0, _137_non__la_core_d, no_hashes }, + {} + }; + + +static u3j_harm _137_hex_lia_run_v1_a[] = {{".2", u3we_lia_run_v1, c3y}, {}}; + +static u3j_harm _137_hex_lia_run_once_inner_a[] = {{".2", u3we_lia_run_once, c3y}, {}}; + +static u3j_core _137_hex_lia_run_once_d[] = { + { "run-once-inner-v0", 15, _137_hex_lia_run_once_inner_a, 0, no_hashes }, + {} +}; + +static u3j_core _137_hex_lia_monad_d[] = { + { "run-v1", 7, _137_hex_lia_run_v1_a, 0, no_hashes }, + { "run-once-v0", 7, 0, _137_hex_lia_run_once_d, no_hashes }, + {} +}; + +static u3j_core _137_hex_wasm_engine_d[] = { + { "monad-v0", 3, 0, _137_hex_lia_monad_d, no_hashes }, + {} +}; + +static u3j_core _137_hex_wasm_op_def_d[] = { + { "wasm-engine-v0", 3, 0, _137_hex_wasm_engine_d, no_hashes }, + {} +}; + +static u3j_core _137_hex_wasm_validator_d[] = { + { "wasm-op-def-v0", 3, 0, _137_hex_wasm_op_def_d, no_hashes }, + {} +}; + +static u3j_core _137_hex_wasm_parser_d[] = { + { "validator-v0", 3, 0, _137_hex_wasm_validator_d, no_hashes }, + {} +}; + +static u3j_core _137_hex_lia_sur_d[] = { + { "wasm-parser-v0", 3, 0, _137_hex_wasm_parser_d, no_hashes }, + {} +}; + +static u3j_core _137_hex_wasm_engine_sur_d[] = { + { "monad-sur-v1", 3, 0, _137_hex_lia_sur_d, no_hashes }, + {} +}; + +static u3j_core _137_hex_wasm_sur_d[] = { + { "engine-sur-v0", 3, 0, _137_hex_wasm_engine_sur_d, no_hashes }, + {} +}; + +static u3j_core _137_hex_d[] = + { { "non", 7, 0, _137_non_d, no_hashes }, + + { "lull", 3, 0, _137_lull_d, no_hashes }, + + { "lore", 63, _137_hex_lore_a, 0, no_hashes }, + + { "leer", 63, _137_hex_leer_a, 0, no_hashes }, + { "loss", 63, _137_hex_loss_a, 0, no_hashes }, + { "lune", 127, _137_hex_lune_a, 0, no_hashes }, + + { "crc", 31, 0, _137_hex__crc_d, no_hashes }, + + { "coed", 63, 0, _137_hex_coed_d, no_hashes }, + { "aes", 31, 0, _137_hex_aes_d, no_hashes }, + + { "hmac", 63, 0, _137_hex_hmac_d, no_hashes }, + { "argon", 31, 0, _137_hex_argon_d, no_hashes }, + { "blake", 31, 0, _137_hex_blake_d, no_hashes }, + { "chacha", 31, 0, _137_hex_chacha_d, no_hashes }, + { "kecc", 31, 0, _137_hex_kecc_d, no_hashes }, + { "ripemd", 31, 0, _137_hex_ripe_d, no_hashes }, + { "scr", 31, 0, _137_hex_scr_d, no_hashes }, + { "secp", 6, 0, _137_hex_secp_d, no_hashes }, + { "mimes", 31, 0, _137_hex_mimes_d, no_hashes }, + { "json", 31, 0, _137_hex_json_d, no_hashes }, + { "wasm-sur-v0", 3, 0, _137_hex_wasm_sur_d, no_hashes }, + {} + }; + +static u3j_core _137_pen_d[] = + { { "hex", 7, 0, _137_hex_d, no_hashes }, + + { "cell", 7, _137_pen_cell_a, 0, no_hashes }, + { "comb", 7, _137_pen_comb_a, 0, no_hashes }, + { "cons", 7, _137_pen_cons_a, 0, no_hashes }, + { "core", 7, _137_pen_core_a, 0, no_hashes }, + { "face", 7, _137_pen_face_a, 0, no_hashes }, + { "fitz", 7, _137_pen_fitz_a, 0, no_hashes }, + { "fork", 7, _137_pen_fork_a, 0, no_hashes }, + { "look", 7, _137_pen_look_a, 0, no_hashes }, + { "loot", 7, _137_pen_loot_a, 0, no_hashes }, + { "ut", 15, 0, _137_pen__ut_d, no_hashes, _137_pen__ut_ho }, + {} + }; + +static u3j_core _137_qua_d[] = + { { "pen", 3, 0, _137_pen_d, no_hashes, _137_pen_ho }, + + { "po", 7, 0, _137_qua__po_d, no_hashes }, + + { "trip", 7, _137_qua_trip_a, 0, no_hashes }, + + { "bend", 7, 0, _137_qua__bend_d, no_hashes }, + { "cold", 7, 0, _137_qua__cold_d, no_hashes }, + { "comp", 7, 0, _137_qua__comp_d, no_hashes }, + { "cook", 7, 0, _137_qua__cook_d, no_hashes }, + { "easy", 7, 0, _137_qua__easy_d, no_hashes }, + { "glue", 7, 0, _137_qua__glue_d, no_hashes }, + { "here", 7, 0, _137_qua__here_d, no_hashes }, + { "just", 7, 0, _137_qua__just_d, no_hashes }, + { "mask", 7, 0, _137_qua__mask_d, no_hashes }, + { "shim", 7, 0, _137_qua__shim_d, no_hashes }, + { "stag", 7, 0, _137_qua__stag_d, no_hashes }, + { "stew", 7, 0, _137_qua__stew_d, no_hashes }, + { "stir", 7, 0, _137_qua__stir_d, no_hashes }, + + { "pfix", 7, _137_qua_pfix_a, 0, no_hashes }, + { "plug", 7, _137_qua_plug_a, 0, no_hashes }, + { "pose", 7, _137_qua_pose_a, 0, no_hashes }, + { "sfix", 7, _137_qua_sfix_a, 0, no_hashes }, + + { "mink", 7, _137_qua_mink_a, 0, no_hashes }, + { "mole", 7, _137_qua_mole_a, 0, no_hashes }, + { "mule", 7, _137_qua_mule_a, 0, no_hashes }, + + { "scot", 7, _137_qua_scot_a, 0, no_hashes }, + { "scow", 7, _137_qua_scow_a, 0, no_hashes }, + { "slaw", 7, _137_qua_slaw_a, 0, no_hashes }, + {} + }; + +static u3j_core _137_tri_d[] = + { { "qua", 3, 0, _137_qua_d, no_hashes, _137_qua_ho }, + + { "cofl", 7, 0, _137_tri__cofl_d, no_hashes }, + { "rd", 7, 0, _137_tri__rd_d, no_hashes }, + { "rs", 7, 0, _137_tri__rs_d, no_hashes }, + { "rq", 7, 0, _137_tri__rq_d, no_hashes }, + { "rh", 7, 0, _137_tri__rh_d, no_hashes }, + { "og", 7, 0, _137_tri__og_d, no_hashes }, + + { "sha", 7, 0, _137_tri__sha_d, no_hashes }, + { "shax", 7, _137_tri_shax_a, 0, no_hashes }, + { "shay", 7, _137_tri_shay_a, 0, no_hashes }, + { "shas", 7, _137_tri_shas_a, 0, no_hashes }, + { "shal", 7, _137_tri_shal_a, 0, no_hashes }, + + { "ob", 3, 0, _137_ob_d, no_hashes, _137_ob_ho }, + {} + }; + +static u3j_harm _137_two_clz_a[] = {{".2", u3wc_clz, c3n}, {}}; +static u3j_harm _137_two_ctz_a[] = {{".2", u3wc_ctz, c3n}, {}}; +static u3j_harm _137_two_ham_a[] = {{".2", u3wc_ham, c3n}, {}}; + +static u3j_harm _137_two__hew_fun_a[] = {{".2", u3wc_hew, c3n}, {}}; +static u3j_core _137_two__hew_d[] = + { { "fun", 15, _137_two__hew_fun_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_two__by_bif_a[] = {{".2", u3wdb_bif, c3y}, {}}; + +static u3j_core _137_two__by_d[] = + { { "all", 7, _137_two__by_all_a, 0, no_hashes }, + { "any", 7, _137_two__by_any_a, 0, no_hashes }, + { "apt", 7, _137_two__by_apt_a, 0, no_hashes }, + { "bif", 7, _137_two__by_bif_a, 0, no_hashes }, + { "del", 7, _137_two__by_del_a, 0, no_hashes }, + { "dif", 7, _137_two__by_dif_a, 0, no_hashes }, + { "gas", 7, _137_two__by_gas_a, 0, no_hashes }, + { "get", 7, _137_two__by_get_a, 0, no_hashes }, + { "has", 7, _137_two__by_has_a, 0, no_hashes }, + { "int", 7, _137_two__by_int_a, 0, no_hashes }, + { "jab", 7, _137_two__by_jab_a, 0, no_hashes }, + { "key", 7, _137_two__by_key_a, 0, no_hashes }, + { "put", 7, _137_two__by_put_a, 0, no_hashes }, + { "rep", 7, _137_two__by_rep_a, 0, no_hashes }, + { "run", 7, _137_two__by_run_a, 0, no_hashes }, + { "tap", 7, _137_two__by_tap_a, 0, no_hashes }, + { "uni", 7, _137_two__by_uni_a, 0, no_hashes }, + { "urn", 7, _137_two__by_urn_a, 0, no_hashes }, + { "wyt", 3, _137_two__by_wyt_a, 0, no_hashes }, + {} + }; + + +static u3j_harm _137_two__in_apt_a[] = {{".2", u3wdi_apt}, {}}; + +static u3j_core _137_two__in_d[] = + { { "apt", 7, _137_two__in_apt_a, 0, no_hashes }, + { "bif", 7, _137_two__in_bif_a, 0, no_hashes }, + { "del", 7, _137_two__in_del_a, 0, no_hashes }, + { "dif", 7, _137_two__in_dif_a, 0, no_hashes }, + { "gas", 7, _137_two__in_gas_a, 0, no_hashes }, + { "has", 7, _137_two__in_has_a, 0, no_hashes }, + { "int", 7, _137_two__in_int_a, 0, no_hashes }, + { "put", 7, _137_two__in_put_a, 0, no_hashes }, + { "rep", 7, _137_two__in_rep_a, 0, no_hashes }, + { "run", 7, _137_two__in_run_a, 0, no_hashes }, + { "tap", 7, _137_two__in_tap_a, 0, no_hashes }, + { "uni", 7, _137_two__in_uni_a, 0, no_hashes }, + { "wyt", 3, _137_two__in_wyt_a, 0, no_hashes }, + {} + }; + +static u3j_harm _137_two_rig_a[] = {{".2", u3wc_rig, c3n}, {}}; + +static u3j_harm _137_two_mate_a[] = {{".2", u3wb_mate, c3y}, {}}; +static u3j_harm _137_two_sew_a[] = {{".2", u3wc_sew, c3y}, {}}; + +static u3j_core _137_two_d[] = + { { "tri", 3, 0, _137_tri_d, no_hashes, _137_tri_ho }, + + { "find", 7, _137_two_find_a, 0, no_hashes }, + { "flop", 7, _137_two_flop_a, 0, no_hashes }, + { "lent", 7, _137_two_lent_a, 0, no_hashes }, + { "levy", 7, _137_two_levy_a, 0, no_hashes }, + { "lien", 7, _137_two_lien_a, 0, no_hashes }, + { "murn", 7, _137_two_murn_a, 0, no_hashes }, + { "need", 7, _137_two_need_a, 0, no_hashes }, + { "mate", 7, _137_two_mate_a, 0, no_hashes }, + { "reap", 7, _137_two_reap_a, 0, no_hashes }, + { "reel", 7, _137_two_reel_a, 0, no_hashes }, + { "roll", 7, _137_two_roll_a, 0, no_hashes }, + { "skid", 7, _137_two_skid_a, 0, no_hashes }, + { "skim", 7, _137_two_skim_a, 0, no_hashes }, + { "skip", 7, _137_two_skip_a, 0, no_hashes }, + { "scag", 7, _137_two_scag_a, 0, no_hashes }, + { "slag", 7, _137_two_slag_a, 0, no_hashes }, + { "snag", 7, _137_two_snag_a, 0, no_hashes }, + { "sort", 7, _137_two_sort_a, 0, no_hashes }, + { "turn", 7, _137_two_turn_a, 0, no_hashes }, + { "weld", 7, _137_two_weld_a, 0, no_hashes }, + { "welp", 7, _137_two_welp_a, 0, no_hashes }, + { "zing", 7, _137_two_zing_a, 0, no_hashes }, + + { "bex", 7, _137_two_bex_a, 0, no_hashes }, + { "cat", 7, _137_two_cat_a, 0, no_hashes }, + { "can", 7, _137_two_can_a, 0, no_hashes }, + { "clz", 7, _137_two_clz_a, 0, no_hashes }, + { "con", 7, _137_two_con_a, 0, no_hashes }, + { "ctz", 7, _137_two_ctz_a, 0, no_hashes }, + { "cue", 7, _137_two_cue_a, 0, no_hashes }, + { "cut", 7, _137_two_cut_a, 0, no_hashes }, + { "dis", 7, _137_two_dis_a, 0, no_hashes }, + { "dor", 7, _137_two_dor_a, 0, no_hashes }, + { "end", 7, _137_two_end_a, 0, no_hashes }, + { "gor", 7, _137_two_gor_a, 0, no_hashes }, + { "ham", 7, _137_two_ham_a, 0, no_hashes }, + { "hew", 7, 0, _137_two__hew_d, no_hashes }, + { "jam", 7, _137_two_jam_a, 0, no_hashes }, + { "lsh", 7, _137_two_lsh_a, 0, no_hashes }, + { "mat", 7, _137_two_mat_a, 0, no_hashes }, + { "met", 7, _137_two_met_a, 0, no_hashes }, + { "mix", 7, _137_two_mix_a, 0, no_hashes }, + { "mor", 7, _137_two_mor_a, 0, no_hashes }, + { "mug", 7, _137_two_mug_a, 0, no_hashes }, + { "muk", 59, _137_two_muk_a, 0, no_hashes }, + { "rap", 7, _137_two_rap_a, 0, no_hashes }, + { "rep", 7, _137_two_rep_a, 0, no_hashes }, + { "rev", 7, _137_two_rev_a, 0, no_hashes }, + { "rig", 7, _137_two_rig_a, 0, no_hashes }, + { "rip", 7, _137_two_rip_a, 0, no_hashes }, + { "rsh", 7, _137_two_rsh_a, 0, no_hashes }, + { "swp", 7, _137_two_swp_a, 0, no_hashes }, + { "rub", 7, _137_two_rub_a, 0, no_hashes }, + { "pow", 7, _137_two_pow_a, 0, no_hashes }, + { "sew", 7, _137_two_sew_a, 0, no_hashes }, + { "sqt", 7, _137_two_sqt_a, 0, no_hashes }, + { "xeb", 7, _137_two_xeb_a, 0, no_hashes }, + + { "by", 7, 0, _137_two__by_d, no_hashes }, + { "in", 7, 0, _137_two__in_d, no_hashes }, + {} + }; + +static u3j_core _137_one_d[] = + { { "two", 3, 0, _137_two_d, no_hashes }, + + { "add", 7, _137_one_add_a, 0, no_hashes }, + { "dec", 7, _137_one_dec_a, 0, no_hashes }, + { "div", 7, _137_one_div_a, 0, no_hashes }, + { "dvr", 7, _137_one_dvr_a, 0, no_hashes }, + { "gte", 7, _137_one_gte_a, 0, no_hashes }, + { "gth", 7, _137_one_gth_a, 0, no_hashes }, + { "lte", 7, _137_one_lte_a, 0, no_hashes }, + { "lth", 7, _137_one_lth_a, 0, no_hashes }, + { "max", 7, _137_one_max_a, 0, no_hashes }, + { "min", 7, _137_one_min_a, 0, no_hashes }, + { "mod", 7, _137_one_mod_a, 0, no_hashes }, + { "mul", 7, _137_one_mul_a, 0, no_hashes }, + { "sub", 7, _137_one_sub_a, 0, no_hashes }, + + { "cap", 7, _137_one_cap_a, 0, no_hashes }, + { "mas", 7, _137_one_mas_a, 0, no_hashes }, + { "peg", 7, _137_one_peg_a, 0, no_hashes }, + {} + }; + +u3j_core _k137_d[] = + { { "one", 3, 0, _137_one_d, no_hashes }, + {} + }; + diff --git a/vere/pkg/noun/jets/a/add.c b/vere/pkg/noun/jets/a/add.c new file mode 100644 index 0000000..308d143 --- /dev/null +++ b/vere/pkg/noun/jets/a/add.c @@ -0,0 +1,61 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qa_add(u3_atom a, + u3_atom b) +{ + if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { + c3_w c = a + b; + + return u3i_word(c); + } + else if ( 0 == a ) { + return u3k(b); + } + else if ( 0 == b ) { + return u3k(a); + } + else { + mpz_t a_mp, b_mp; + + u3r_mp(a_mp, a); + u3r_mp(b_mp, b); + + mpz_add(a_mp, a_mp, b_mp); + mpz_clear(b_mp); + + return u3i_mp(a_mp); + } +} + +u3_noun +u3wa_add(u3_noun cor) +{ + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__fail); + } + else { + return u3qa_add(a, b); + } +} + +u3_noun +u3ka_add(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qa_add(a, b); + + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/a/dec.c b/vere/pkg/noun/jets/a/dec.c new file mode 100644 index 0000000..02a8ba1 --- /dev/null +++ b/vere/pkg/noun/jets/a/dec.c @@ -0,0 +1,57 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qa_inc(u3_atom a) +{ + return u3i_vint(u3k(a)); +} + +u3_noun +u3qa_dec(u3_atom a) +{ + if ( 0 == a ) { + return u3m_error("decrement-underflow"); + } + else { + if ( _(u3a_is_cat(a)) ) { + return a - 1; + } + else { + mpz_t a_mp; + + u3r_mp(a_mp, a); + mpz_sub_ui(a_mp, a_mp, 1); + + return u3i_mp(a_mp); + } + } +} + +u3_noun +u3wa_dec(u3_noun cor) +{ + u3_noun a; + + if ( (u3_none == (a = u3r_at(u3x_sam, cor))) || + (c3n == u3ud(a)) ) + { + return u3m_bail(c3__fail); + } + else { + return u3qa_dec(a); + } +} + +u3_noun +u3ka_dec(u3_atom a) +{ + u3_noun b = u3qa_dec(a); + u3z(a); + return b; +} diff --git a/vere/pkg/noun/jets/a/div.c b/vere/pkg/noun/jets/a/div.c new file mode 100644 index 0000000..74b33dd --- /dev/null +++ b/vere/pkg/noun/jets/a/div.c @@ -0,0 +1,57 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qa_div(u3_atom a, + u3_atom b) +{ + if ( 0 == b ) { + return u3m_error("divide-by-zero"); + } + else { + if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { + return a / b; + } + else { + mpz_t a_mp, b_mp; + + u3r_mp(a_mp, a); + u3r_mp(b_mp, b); + + mpz_tdiv_q(a_mp, a_mp, b_mp); + mpz_clear(b_mp); + + return u3i_mp(a_mp); + } + } +} + +u3_noun +u3wa_div(u3_noun cor) +{ + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__fail); + } + else { + return u3qa_div(a, b); + } +} + +u3_noun +u3ka_div(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qa_div(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/a/gte.c b/vere/pkg/noun/jets/a/gte.c new file mode 100644 index 0000000..371727d --- /dev/null +++ b/vere/pkg/noun/jets/a/gte.c @@ -0,0 +1,51 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qa_gte(u3_atom a, u3_atom b) +{ + if (c3y == u3a_is_cat(a) || c3y == u3a_is_cat(b)) + { + return __( a >= b ); + } + + if (a == b) return c3y; + + u3a_atom* a_u = u3a_to_ptr(a); + u3a_atom* b_u = u3a_to_ptr(b); + + if (a_u->len_w != b_u->len_w) + { + return __( a_u->len_w > b_u->len_w ); + } + + c3_w* a_w = a_u->buf_w; + c3_w* b_w = b_u->buf_w; + for (c3_w i_w = a_u->len_w; i_w--;) + { + if (a_w[i_w] > b_w[i_w]) return c3y; + if (a_w[i_w] < b_w[i_w]) return c3n; + } + + return c3y; +} + +u3_noun +u3wa_gte(u3_noun cor) +{ + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) + || (c3n == u3ud(b)) + || (c3n == u3ud(a)) ) + { + return u3m_bail(c3__fail); + } + else { + return u3qa_gte(a, b); + } +} diff --git a/vere/pkg/noun/jets/a/gth.c b/vere/pkg/noun/jets/a/gth.c new file mode 100644 index 0000000..3863b94 --- /dev/null +++ b/vere/pkg/noun/jets/a/gth.c @@ -0,0 +1,60 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qa_gth(u3_atom a, u3_atom b) +{ + if (c3y == u3a_is_cat(a) || c3y == u3a_is_cat(b)) + { + return __( a > b ); + } + + if (a == b) return c3n; + + u3a_atom* a_u = u3a_to_ptr(a); + u3a_atom* b_u = u3a_to_ptr(b); + + if (a_u->len_w != b_u->len_w) + { + return __( a_u->len_w > b_u->len_w ); + } + + c3_w* a_w = a_u->buf_w; + c3_w* b_w = b_u->buf_w; + for (c3_w i_w = a_u->len_w; i_w--;) + { + if (a_w[i_w] > b_w[i_w]) return c3y; + if (a_w[i_w] < b_w[i_w]) return c3n; + } + + return c3n; +} + +u3_noun +u3wa_gth(u3_noun cor) +{ + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) + || (c3n == u3ud(b)) + || (c3n == u3ud(a)) ) + { + return u3m_bail(c3__fail); + } + else { + return u3qa_gth(a, b); + } +} + +u3_noun +u3ka_gth(u3_noun a, u3_noun b) +{ + u3_noun c = u3qa_gth(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/a/lte.c b/vere/pkg/noun/jets/a/lte.c new file mode 100644 index 0000000..0565212 --- /dev/null +++ b/vere/pkg/noun/jets/a/lte.c @@ -0,0 +1,60 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qa_lte(u3_atom a, u3_atom b) +{ + if (c3y == u3a_is_cat(a) || c3y == u3a_is_cat(b)) + { + return __( a <= b ); + } + + if (a == b) return c3y; + + u3a_atom* a_u = u3a_to_ptr(a); + u3a_atom* b_u = u3a_to_ptr(b); + + if (a_u->len_w != b_u->len_w) + { + return __( a_u->len_w < b_u->len_w ); + } + + c3_w* a_w = a_u->buf_w; + c3_w* b_w = b_u->buf_w; + for (c3_w i_w = a_u->len_w; i_w--;) + { + if (a_w[i_w] < b_w[i_w]) return c3y; + if (a_w[i_w] > b_w[i_w]) return c3n; + } + + return c3y; +} + +u3_noun +u3wa_lte(u3_noun cor) +{ + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) + || (c3n == u3ud(b)) + || (c3n == u3ud(a)) ) + { + return u3m_bail(c3__fail); + } + else { + return u3qa_lte(a, b); + } +} + +u3_noun +u3ka_lte(u3_noun a, u3_noun b) +{ + u3_noun c = u3qa_lte(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/a/lth.c b/vere/pkg/noun/jets/a/lth.c new file mode 100644 index 0000000..edf95b3 --- /dev/null +++ b/vere/pkg/noun/jets/a/lth.c @@ -0,0 +1,51 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qa_lth(u3_atom a, u3_atom b) +{ + if (c3y == u3a_is_cat(a) || c3y == u3a_is_cat(b)) + { + return __( a < b ); + } + + if (a == b) return c3n; + + u3a_atom* a_u = u3a_to_ptr(a); + u3a_atom* b_u = u3a_to_ptr(b); + + if (a_u->len_w != b_u->len_w) + { + return __( a_u->len_w < b_u->len_w ); + } + + c3_w* a_w = a_u->buf_w; + c3_w* b_w = b_u->buf_w; + for (c3_w i_w = a_u->len_w; i_w--;) + { + if (a_w[i_w] < b_w[i_w]) return c3y; + if (a_w[i_w] > b_w[i_w]) return c3n; + } + + return c3n; +} + +u3_noun +u3wa_lth(u3_noun cor) +{ + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) + || (c3n == u3ud(b)) + || (c3n == u3ud(a)) ) + { + return u3m_bail(c3__fail); + } + else { + return u3qa_lth(a, b); + } +} diff --git a/vere/pkg/noun/jets/a/max.c b/vere/pkg/noun/jets/a/max.c new file mode 100644 index 0000000..2646ec7 --- /dev/null +++ b/vere/pkg/noun/jets/a/max.c @@ -0,0 +1,60 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qa_max(u3_atom a, u3_atom b) +{ + if ( _(u3a_is_cat(a)) || _(u3a_is_cat(b)) ) + { + return u3k(c3_max(a, b)); + } + + if (a == b) return u3k(a); + + u3a_atom* a_u = u3a_to_ptr(a); + u3a_atom* b_u = u3a_to_ptr(b); + + if (a_u->len_w != b_u->len_w) + { + return (a_u->len_w > b_u->len_w) ? u3k(a) : u3k(b); + } + + c3_w* a_w = a_u->buf_w; + c3_w* b_w = b_u->buf_w; + for (c3_w i_w = a_u->len_w; i_w--;) + { + if (a_w[i_w] > b_w[i_w]) return u3k(a); + if (a_w[i_w] < b_w[i_w]) return u3k(b); + } + + return u3k(a); +} + +u3_noun +u3wa_max(u3_noun cor) +{ + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) + || (c3n == u3ud(b)) + || (c3n == u3ud(a)) ) + { + return u3m_bail(c3__fail); + } + else { + return u3qa_max(a, b); + } +} + +u3_noun +u3ka_max(u3_noun a, u3_noun b) +{ + u3_noun c = u3qa_max(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/a/min.c b/vere/pkg/noun/jets/a/min.c new file mode 100644 index 0000000..00a75e6 --- /dev/null +++ b/vere/pkg/noun/jets/a/min.c @@ -0,0 +1,62 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qa_min(u3_atom a, u3_atom b) +{ + if ( _(u3a_is_cat(a)) || _(u3a_is_cat(b)) ) + { + // this will always return a direct atom, no refcount gain necessary + // + return c3_min(a, b); + } + + if (a == b) return u3k(a); + + u3a_atom* a_u = u3a_to_ptr(a); + u3a_atom* b_u = u3a_to_ptr(b); + + if (a_u->len_w != b_u->len_w) + { + return (a_u->len_w < b_u->len_w) ? u3k(a) : u3k(b); + } + + c3_w* a_w = a_u->buf_w; + c3_w* b_w = b_u->buf_w; + for (c3_w i_w = a_u->len_w; i_w--;) + { + if (a_w[i_w] < b_w[i_w]) return u3k(a); + if (a_w[i_w] > b_w[i_w]) return u3k(b); + } + + return u3k(a); +} + +u3_noun +u3wa_min(u3_noun cor) +{ + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) + || (c3n == u3ud(b)) + || (c3n == u3ud(a)) ) + { + return u3m_bail(c3__fail); + } + else { + return u3qa_min(a, b); + } +} + +u3_noun +u3ka_min(u3_noun a, u3_noun b) +{ + u3_noun c = u3qa_min(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/a/mod.c b/vere/pkg/noun/jets/a/mod.c new file mode 100644 index 0000000..1eb9aab --- /dev/null +++ b/vere/pkg/noun/jets/a/mod.c @@ -0,0 +1,55 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qa_mod(u3_atom a, + u3_atom b) +{ + if ( 0 == b ) { + return u3m_error("divide-by-zero"); + } + else if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { + return a % b; + } + else { + mpz_t a_mp, b_mp; + + u3r_mp(a_mp, a); + u3r_mp(b_mp, b); + + mpz_tdiv_r(a_mp, a_mp, b_mp); + mpz_clear(b_mp); + + return u3i_mp(a_mp); + } +} + +u3_noun +u3wa_mod(u3_noun cor) +{ + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__fail); + } + else { + return u3qa_mod(a, b); + } +} + +u3_noun +u3ka_mod(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qa_mod(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/a/mul.c b/vere/pkg/noun/jets/a/mul.c new file mode 100644 index 0000000..aaba68c --- /dev/null +++ b/vere/pkg/noun/jets/a/mul.c @@ -0,0 +1,58 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qa_mul(u3_atom a, + u3_atom b) +{ + if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { + c3_d c = ((c3_d) a) * ((c3_d) b); + + return u3i_chubs(1, &c); + } + else if ( 0 == a ) { + return 0; + } + else { + mpz_t a_mp, b_mp; + + u3r_mp(a_mp, a); + u3r_mp(b_mp, b); + + mpz_mul(a_mp, a_mp, b_mp); + mpz_clear(b_mp); + + return u3i_mp(a_mp); + } +} + +u3_noun +u3wa_mul(u3_noun cor) +{ + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__fail); + } + else { + return u3qa_mul(a, b); + } +} + +u3_noun +u3ka_mul(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qa_mul(a, b); + + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/a/sub.c b/vere/pkg/noun/jets/a/sub.c new file mode 100644 index 0000000..321ba77 --- /dev/null +++ b/vere/pkg/noun/jets/a/sub.c @@ -0,0 +1,67 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qa_sub(u3_atom a, + u3_atom b) +{ + if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { + if ( a < b ) { + return u3m_error("subtract-underflow"); + } + else { + return (a - b); + } + } + else if ( 0 == b ) { + return u3k(a); + } + else { + mpz_t a_mp, b_mp; + + u3r_mp(a_mp, a); + u3r_mp(b_mp, b); + + if ( mpz_cmp(a_mp, b_mp) < 0 ) { + mpz_clear(a_mp); + mpz_clear(b_mp); + + return u3m_error("subtract-underflow"); + } + mpz_sub(a_mp, a_mp, b_mp); + mpz_clear(b_mp); + + return u3i_mp(a_mp); + } +} + +u3_noun +u3wa_sub(u3_noun cor) +{ + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(b)) || + (c3n == u3ud(a)) ) + { + return u3m_bail(c3__fail); + } + else { + return u3qa_sub(a, b); + } +} + +u3_noun +u3ka_sub(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qa_sub(a, b); + + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/b/bind.c b/vere/pkg/noun/jets/b/bind.c new file mode 100644 index 0000000..7f37a69 --- /dev/null +++ b/vere/pkg/noun/jets/b/bind.c @@ -0,0 +1,30 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qb_bind(u3_noun a, + u3_noun b) + { + if ( 0 == a ) { + return 0; + } else { + return u3nc(0, u3n_slam_on(u3k(b), u3k(u3t(a)))); + } + } + u3_noun + u3wb_bind(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) ) { + return u3m_bail(c3__exit); + } else { + return u3qb_bind(a, b); + } + } + diff --git a/vere/pkg/noun/jets/b/clap.c b/vere/pkg/noun/jets/b/clap.c new file mode 100644 index 0000000..9cfb41a --- /dev/null +++ b/vere/pkg/noun/jets/b/clap.c @@ -0,0 +1,36 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qb_clap(u3_noun a, + u3_noun b, + u3_noun c) + { + if ( 0 == a ) { + return u3k(b); + } + else if ( 0 == b ) { + return u3k(a); + } + else { + return u3nc(0, u3n_slam_on(u3k(c), u3nc(u3k(u3t(a)), u3k(u3t(b))))); + } + } + u3_noun + u3wb_clap(u3_noun cor) + { + u3_noun a, b, c; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, + u3x_sam_6, &b, + u3x_sam_7, &c, 0) ) { + return u3m_bail(c3__exit); + } else { + return u3qb_clap(a, b, c); + } + } diff --git a/vere/pkg/noun/jets/b/find.c b/vere/pkg/noun/jets/b/find.c new file mode 100644 index 0000000..c0295d2 --- /dev/null +++ b/vere/pkg/noun/jets/b/find.c @@ -0,0 +1,50 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +STATIC_ASSERT( (UINT32_MAX > u3a_cells), + "list index precision" ); + +u3_noun +u3qb_find(u3_noun nedl, u3_noun hstk) +{ + if ( u3_nul != nedl ) { + c3_w i_w = 0; + + while ( u3_nul != hstk ) { + u3_noun i_h, t_h = hstk; + u3_noun i_n, t_n = nedl; + u3x_cell(t_h, &i_h, &t_h); + u3x_cell(t_n, &i_n, &t_n); + + while ( c3y == u3r_sing(i_n, i_h) ) { + if ( u3_nul == t_n ) { + return u3nc(u3_nul, u3i_word(i_w)); + } + else if ( u3_nul == t_h ) { + break; + } + else { + u3x_cell(t_h, &i_h, &t_h); + u3x_cell(t_n, &i_n, &t_n); + } + } + + hstk = u3t(hstk); + i_w++; + } + } + + return u3_nul; +} + +u3_noun +u3wb_find(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qb_find(a, b); +} diff --git a/vere/pkg/noun/jets/b/flop.c b/vere/pkg/noun/jets/b/flop.c new file mode 100644 index 0000000..0574e4e --- /dev/null +++ b/vere/pkg/noun/jets/b/flop.c @@ -0,0 +1,34 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qb_flop(u3_noun a) +{ + u3_noun i, t = a, b = u3_nul; + + while ( u3_nul != t ) { + u3x_cell(t, &i, &t); + b = u3nc(u3k(i), b); + } + + return b; +} + +u3_noun +u3wb_flop(u3_noun cor) +{ + return u3qb_flop(u3x_at(u3x_sam, cor)); +} + +u3_noun +u3kb_flop(u3_noun a) +{ + u3_noun b = u3qb_flop(a); + u3z(a); + return b; +} diff --git a/vere/pkg/noun/jets/b/lent.c b/vere/pkg/noun/jets/b/lent.c new file mode 100644 index 0000000..aa3a701 --- /dev/null +++ b/vere/pkg/noun/jets/b/lent.c @@ -0,0 +1,37 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +STATIC_ASSERT( (UINT32_MAX > u3a_cells), + "length precision" ); + +u3_noun +u3qb_lent(u3_noun a) +{ + c3_w len_w = 0; + + while ( u3_nul != a ) { + a = u3t(a); + len_w++; + } + + return u3i_word(len_w); +} + +u3_noun +u3wb_lent(u3_noun cor) +{ + return u3qb_lent(u3x_at(u3x_sam, cor)); +} + +u3_noun +u3kb_lent(u3_noun a) +{ + u3_noun b = u3qb_lent(a); + u3z(a); + return b; +} diff --git a/vere/pkg/noun/jets/b/levy.c b/vere/pkg/noun/jets/b/levy.c new file mode 100644 index 0000000..39d6f39 --- /dev/null +++ b/vere/pkg/noun/jets/b/levy.c @@ -0,0 +1,51 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + u3_noun + u3qb_levy(u3_noun a, + u3_noun b) + { + u3_noun pro = c3y; + c3_o loz_o; + + if ( u3_nul != a ) { + u3j_site sit_u; + u3_noun i, t; + u3j_gate_prep(&sit_u, u3k(b)); + u3k(a); + + do { + i = u3h(a); + + loz_o = u3x_loob(u3j_gate_slam(&sit_u, u3k(i))); + if ( c3n == loz_o ) { + pro = c3n; + break; + } + + t = u3k(u3t(a)); + u3z(a), a = t; + } while ( u3_nul != a ); + + u3z(a); + u3j_gate_lose(&sit_u); + } + + return pro; + } + + u3_noun + u3wb_levy(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) ) { + return u3m_bail(c3__exit); + } else { + return u3qb_levy(a, b); + } + } diff --git a/vere/pkg/noun/jets/b/lien.c b/vere/pkg/noun/jets/b/lien.c new file mode 100644 index 0000000..2a9290a --- /dev/null +++ b/vere/pkg/noun/jets/b/lien.c @@ -0,0 +1,51 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + u3_noun + u3qb_lien(u3_noun a, + u3_noun b) + { + u3_noun pro = c3n; + c3_o loz_o; + + if ( u3_nul != a ) { + u3j_site sit_u; + u3_noun i, t; + u3j_gate_prep(&sit_u, u3k(b)); + u3k(a); + + do { + i = u3h(a); + + loz_o = u3x_loob(u3j_gate_slam(&sit_u, u3k(i))); + if ( c3y == loz_o ) { + pro = c3y; + break; + } + + t = u3k(u3t(a)); + u3z(a), a = t; + } while ( u3_nul != a ); + + u3z(a); + u3j_gate_lose(&sit_u); + } + + return pro; + } + + u3_noun + u3wb_lien(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) ) { + return u3m_bail(c3__exit); + } else { + return u3qb_lien(a, b); + } + } diff --git a/vere/pkg/noun/jets/b/mate.c b/vere/pkg/noun/jets/b/mate.c new file mode 100644 index 0000000..f8dbd31 --- /dev/null +++ b/vere/pkg/noun/jets/b/mate.c @@ -0,0 +1,30 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qb_mate(u3_noun a, + u3_noun b) + { + if ( u3_nul == b ) { + return u3k(a); + } else if ( u3_nul == a ) { + return u3k(b); + } else if ( c3y == u3r_sing(u3t(a), u3t(b)) ) { + return u3k(a); + } else { + return u3m_error("mate"); + } + } + u3_noun + u3wb_mate(u3_noun cor) + { + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qb_mate(a, b); + } + diff --git a/vere/pkg/noun/jets/b/murn.c b/vere/pkg/noun/jets/b/murn.c new file mode 100644 index 0000000..dcb592b --- /dev/null +++ b/vere/pkg/noun/jets/b/murn.c @@ -0,0 +1,54 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qb_murn(u3_noun a, u3_noun b) +{ + u3_noun pro; + u3_noun* lit = &pro; + + if ( u3_nul != a ) { + u3_noun* hed; + u3_noun* tel; + u3_noun res, i, t; + u3j_site sit_u; + + u3j_gate_prep(&sit_u, u3k(b)); + u3k(a); + + do { + i = u3h(a); + + res = u3j_gate_slam(&sit_u, u3k(i)); + + if ( u3_nul != res ) { + *lit = u3i_defcons(&hed, &tel); + *hed = u3k(u3t(res)); + lit = tel; + u3z(res); + } + + t = u3k(u3t(a)); + u3z(a), a = t; + } + while ( u3_nul != a ); + + u3j_gate_lose(&sit_u); + } + + *lit = u3_nul; + + return pro; +} + +u3_noun +u3wb_murn(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qb_murn(a, b); +} diff --git a/vere/pkg/noun/jets/b/need.c b/vere/pkg/noun/jets/b/need.c new file mode 100644 index 0000000..8723699 --- /dev/null +++ b/vere/pkg/noun/jets/b/need.c @@ -0,0 +1,30 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qb_need(u3_noun a) + { + if ( 0 == a ) { + return u3m_bail(c3__exit); + } + else { + return u3k(u3t(a)); + } + } + u3_noun + u3wb_need(u3_noun cor) + { + u3_noun a; + + if ( u3_none == (a = u3r_at(u3x_sam, cor)) ) { + return u3m_bail(c3__exit); + } else { + return u3qb_need(a); + } + } + diff --git a/vere/pkg/noun/jets/b/reap.c b/vere/pkg/noun/jets/b/reap.c new file mode 100644 index 0000000..35dd055 --- /dev/null +++ b/vere/pkg/noun/jets/b/reap.c @@ -0,0 +1,41 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qb_reap(u3_atom a, + u3_noun b) + { + if ( !_(u3a_is_cat(a)) ) { + return u3m_bail(c3__fail); + } + else { + u3_noun acc = u3_nul; + c3_w i_w = a; + + while ( i_w ) { + acc = u3nc(u3k(b), acc); + i_w--; + } + + return acc; + } + } + + u3_noun + u3wb_reap(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) ) + { + return u3m_bail(c3__exit); + } else { + return u3qb_reap(a, b); + } + } diff --git a/vere/pkg/noun/jets/b/reel.c b/vere/pkg/noun/jets/b/reel.c new file mode 100644 index 0000000..fe84f5a --- /dev/null +++ b/vere/pkg/noun/jets/b/reel.c @@ -0,0 +1,52 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + u3_noun + u3qb_reel(u3_noun a, + u3_noun b) + { + u3_noun pro = u3k(u3x_at(u3x_sam_3, b)); + + if ( u3_nul != a ) { + u3a_pile pil_u; + u3j_site sit_u; + u3_noun* top; + u3_noun i, t = a; + + u3a_pile_prep(&pil_u, sizeof(u3_noun)); + + // push list onto road stack + // + do { + u3x_cell(t, &i, &t); + top = u3a_push(&pil_u); + *top = u3k(i); + } while ( u3_nul != t ); + + u3j_gate_prep(&sit_u, u3k(b)); + + while ( c3n == u3a_pile_done(&pil_u) ) { + pro = u3j_gate_slam(&sit_u, u3nc(*top, pro)); + top = u3a_pop(&pil_u); + } + + u3j_gate_lose(&sit_u); + } + + return pro; + } + u3_noun + u3wb_reel(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) ) { + return u3m_bail(c3__exit); + } else { + return u3qb_reel(a, b); + } + } diff --git a/vere/pkg/noun/jets/b/roll.c b/vere/pkg/noun/jets/b/roll.c new file mode 100644 index 0000000..66a4726 --- /dev/null +++ b/vere/pkg/noun/jets/b/roll.c @@ -0,0 +1,44 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + u3_noun + u3qb_roll(u3_noun a, + u3_noun b) + { + u3_noun pro = u3k(u3x_at(u3x_sam_3, b)); + + if ( u3_nul != a ) { + u3j_site sit_u; + u3_noun i, t; + u3j_gate_prep(&sit_u, u3k(b)); + u3k(a); + + do { + i = u3h(a); + + pro = u3j_gate_slam(&sit_u, u3nc(u3k(i), pro)); + + t = u3k(u3t(a)); + u3z(a), a = t; + } while ( u3_nul != a ); + u3j_gate_lose(&sit_u); + } + + return pro; + } + u3_noun + u3wb_roll(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) ) { + return u3m_bail(c3__exit); + } else { + return u3qb_roll(a, b); + } + } + diff --git a/vere/pkg/noun/jets/b/scag.c b/vere/pkg/noun/jets/b/scag.c new file mode 100644 index 0000000..d13dd46 --- /dev/null +++ b/vere/pkg/noun/jets/b/scag.c @@ -0,0 +1,53 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qb_scag(u3_atom a, u3_noun b) +{ + if ( u3_nul == b ) { + return u3_nul; + } + else if ( !_(u3a_is_cat(a)) ) { + return u3m_bail(c3__fail); + } + else { + u3_noun pro; + u3_noun* lit = &pro; + + { + c3_w len_w = (c3_w)a; + u3_noun* hed; + u3_noun* tel; + u3_noun i, t = b; + + while ( len_w-- && (u3_nul != t) ) { + u3x_cell(t, &i, &t); + + *lit = u3i_defcons(&hed, &tel); + *hed = u3k(i); + lit = tel; + } + } + + *lit = u3_nul; + + return pro; + } +} + +u3_noun +u3wb_scag(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + + if ( (c3n == u3ud(a)) && (u3_nul != b) ) { + return u3m_bail(c3__exit); + } + + return u3qb_scag(a, b); +} diff --git a/vere/pkg/noun/jets/b/skid.c b/vere/pkg/noun/jets/b/skid.c new file mode 100644 index 0000000..8d0d7ef --- /dev/null +++ b/vere/pkg/noun/jets/b/skid.c @@ -0,0 +1,62 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qb_skid(u3_noun a, u3_noun b) +{ + u3_noun l, r; + u3_noun* lef = &l; + u3_noun* rig = &r; + + if ( u3_nul != a) { + u3_noun i, t; + u3_noun* hed; + u3_noun* tel; + u3j_site sit_u; + u3j_gate_prep(&sit_u, u3k(b)); + u3k(a); + + do { + i = u3h(a); + + switch ( u3j_gate_slam(&sit_u, u3k(i)) ) { + case c3y: { + *lef = u3i_defcons(&hed, &tel); + *hed = u3k(i); + lef = tel; + } break; + + case c3n: { + *rig = u3i_defcons(&hed, &tel); + *hed = u3k(i); + rig = tel; + } break; + + default: u3m_bail(c3__exit); + } + + t = u3k(u3t(a)); + u3z(a), a = t; + } + while ( u3_nul != a ); + + u3j_gate_lose(&sit_u); + } + + *lef = u3_nul; + *rig = u3_nul; + + return u3nc(l, r); +} + +u3_noun +u3wb_skid(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qb_skid(a, b); +} diff --git a/vere/pkg/noun/jets/b/skim.c b/vere/pkg/noun/jets/b/skim.c new file mode 100644 index 0000000..b0f2255 --- /dev/null +++ b/vere/pkg/noun/jets/b/skim.c @@ -0,0 +1,56 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qb_skim(u3_noun a, u3_noun b) +{ + u3_noun pro; + u3_noun* lit = &pro; + + if ( u3_nul != a) { + u3_noun i, t; + u3_noun* hed; + u3_noun* tel; + u3j_site sit_u; + u3j_gate_prep(&sit_u, u3k(b)); + u3k(a); + + do { + i = u3h(a); + + switch ( u3j_gate_slam(&sit_u, u3k(i)) ) { + case c3y: { + *lit = u3i_defcons(&hed, &tel); + *hed = u3k(i); + lit = tel; + } break; + + case c3n: break; + + default: u3m_bail(c3__exit); + } + + t = u3k(u3t(a)); + u3z(a), a = t; + } + while ( u3_nul != a ); + + u3j_gate_lose(&sit_u); + } + + *lit = u3_nul; + + return pro; +} + +u3_noun +u3wb_skim(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qb_skim(a, b); +} diff --git a/vere/pkg/noun/jets/b/skip.c b/vere/pkg/noun/jets/b/skip.c new file mode 100644 index 0000000..67f537d --- /dev/null +++ b/vere/pkg/noun/jets/b/skip.c @@ -0,0 +1,56 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qb_skip(u3_noun a, u3_noun b) +{ + u3_noun pro; + u3_noun* lit = &pro; + + if ( u3_nul != a) { + u3_noun i, t; + u3_noun* hed; + u3_noun* tel; + u3j_site sit_u; + u3j_gate_prep(&sit_u, u3k(b)); + u3k(a); + + do { + i = u3h(a); + + switch ( u3j_gate_slam(&sit_u, u3k(i)) ) { + case c3y: break; + + case c3n: { + *lit = u3i_defcons(&hed, &tel); + *hed = u3k(i); + lit = tel; + } break; + + default: u3m_bail(c3__exit); + } + + t = u3k(u3t(a)); + u3z(a), a = t; + } + while ( u3_nul != a ); + + u3j_gate_lose(&sit_u); + } + + *lit = u3_nul; + + return pro; +} + +u3_noun +u3wb_skip(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qb_skip(a, b); +} diff --git a/vere/pkg/noun/jets/b/slag.c b/vere/pkg/noun/jets/b/slag.c new file mode 100644 index 0000000..fad88b0 --- /dev/null +++ b/vere/pkg/noun/jets/b/slag.c @@ -0,0 +1,43 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qb_slag(u3_atom a, u3_noun b) + { + if ( u3_nul == b ) { + return u3_nul; + } + else if ( !_(u3a_is_cat(a)) ) { + return u3m_bail(c3__fail); + } + else { + c3_w len_w = a; + + while ( len_w ) { + if ( c3n == u3du(b) ) { + return u3_nul; + } + b = u3t(b); + len_w--; + } + return u3k(b); + } + } + u3_noun + u3wb_slag(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a) && u3_nul != b) ) + { + return u3m_bail(c3__exit); + } else { + return u3qb_slag(a, b); + } + } diff --git a/vere/pkg/noun/jets/b/snag.c b/vere/pkg/noun/jets/b/snag.c new file mode 100644 index 0000000..4b6dad8 --- /dev/null +++ b/vere/pkg/noun/jets/b/snag.c @@ -0,0 +1,44 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qb_snag(u3_atom a, + u3_noun b) + { + if ( !_(u3a_is_cat(a)) ) { + return u3m_bail(c3__fail); + } + else { + c3_w len_w = a; + + while ( len_w ) { + if ( c3n == u3du(b) ) { + return u3m_bail(c3__exit); + } + b = u3t(b); + len_w--; + } + if ( c3n == u3du(b) ) { + return u3m_bail(c3__exit); + } + return u3k(u3h(b)); + } + } + u3_noun + u3wb_snag(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) ) + { + return u3m_bail(c3__exit); + } else { + return u3qb_snag(a, b); + } + } diff --git a/vere/pkg/noun/jets/b/sort.c b/vere/pkg/noun/jets/b/sort.c new file mode 100644 index 0000000..ea5507c --- /dev/null +++ b/vere/pkg/noun/jets/b/sort.c @@ -0,0 +1,125 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + +static_assert( (UINT32_MAX > u3a_cells), + "length precision" ); + +static_assert( + (UINT32_MAX < (SIZE_MAX / (2 * sizeof(u3_noun)))), + "len_w * sizeof u3_noun overflow" +); + +static void +_merge_sort(u3_noun* restrict arr_u, + u3_noun* restrict tmp_u, + c3_w lef_w, + c3_w rit_w, + u3j_site* sit_u) +{ + if ( lef_w >= rit_w ) return; + c3_w mid_w = (lef_w + rit_w) / 2; + if (mid_w < lef_w) + { + // addition wrapped around + // + u3m_bail(c3__fail); + } + _merge_sort(arr_u, tmp_u, lef_w, mid_w, sit_u); + _merge_sort(arr_u, tmp_u, mid_w + 1, rit_w, sit_u); + + c3_w i_w = lef_w, j_w = mid_w + 1, k_w = lef_w; + while (i_w <= mid_w && j_w <= rit_w) + { + // reversed comparison to mimick order reversal of pivot + // and compared element in Hoon + // + u3_noun sam = u3nc(u3k(arr_u[j_w]), u3k(arr_u[i_w])); + c3_o hoz_o = u3x_loob(u3j_gate_slam(sit_u, sam)); + if ( c3n == hoz_o ) + tmp_u[k_w++] = arr_u[i_w++]; + else + tmp_u[k_w++] = arr_u[j_w++]; + } + + while (i_w <= mid_w) tmp_u[k_w++] = arr_u[i_w++]; + while (j_w <= rit_w) tmp_u[k_w++] = arr_u[j_w++]; + + for (i_w = lef_w; i_w <= rit_w; i_w++) + { + arr_u[i_w] = tmp_u[i_w]; + } +} + +// RETAINS list, transfers product +// +static u3_noun +_sort(u3j_site* sit_u, u3_noun list) +{ + if (u3_nul == list) return u3_nul; + + c3_w len_w = 1; + { + u3_noun t = u3t(list); + while (u3_nul != t) + { + ++len_w; t = u3t(t); + } + } + + if (1 == len_w) return u3k(list); + u3_noun* arr_u = u3a_malloc(sizeof(u3_noun) * len_w * 2); + u3_noun* tmp_u = arr_u + len_w; + for (c3_w i_w = 0; i_w < len_w; i_w++) + { + // inlined u3r_cell without any checks + // since the list was already validated and measured + // + u3a_cell* cel_u = u3a_to_ptr(list); + arr_u[i_w] = u3k(cel_u->hed); + list = cel_u->tel; + } + + _merge_sort(arr_u, tmp_u, 0, len_w - 1, sit_u); + + u3_noun pro = u3_nul; + for (c3_w i_w = len_w; i_w--;) + { + pro = u3nc(arr_u[i_w], pro); + } + + u3a_free(arr_u); + + return pro; +} + +u3_noun +u3qb_sort(u3_noun a, + u3_noun b) +{ + u3_noun pro; + u3j_site sit_u; + u3j_gate_prep(&sit_u, u3k(b)); + pro = _sort(&sit_u, a); + u3j_gate_lose(&sit_u); + return pro; +} + +u3_noun +u3wb_sort(u3_noun cor) +{ + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) ) + { + return u3m_bail(c3__exit); + } + else + { + return u3qb_sort(a, b); + } +} diff --git a/vere/pkg/noun/jets/b/turn.c b/vere/pkg/noun/jets/b/turn.c new file mode 100644 index 0000000..e5ee5f7 --- /dev/null +++ b/vere/pkg/noun/jets/b/turn.c @@ -0,0 +1,49 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qb_turn(u3_noun a, u3_noun b) +{ + u3_noun pro; + u3_noun* lit = &pro; + + if ( u3_nul != a ) { + u3_noun* hed; + u3_noun* tel; + u3_noun i, t; + u3j_site sit_u; + + u3j_gate_prep(&sit_u, u3k(b)); + u3k(a); + + do { + i = u3h(a); + + *lit = u3i_defcons(&hed, &tel); + *hed = u3j_gate_slam(&sit_u, u3k(i)); + lit = tel; + + t = u3k(u3t(a)); + u3z(a), a = t; + } + while ( u3_nul != a ); + + u3j_gate_lose(&sit_u); + } + + *lit = u3_nul; + + return pro; +} + +u3_noun +u3wb_turn(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qb_turn(a, b); +} diff --git a/vere/pkg/noun/jets/b/weld.c b/vere/pkg/noun/jets/b/weld.c new file mode 100644 index 0000000..d50fa1c --- /dev/null +++ b/vere/pkg/noun/jets/b/weld.c @@ -0,0 +1,48 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qb_weld(u3_noun a, u3_noun b) +{ + u3_noun pro; + u3_noun* lit = &pro; + + { + u3_noun* hed; + u3_noun* tel; + u3_noun i, t = a; + + while ( u3_nul != t ) { + u3x_cell(t, &i, &t); + + *lit = u3i_defcons(&hed, &tel); + *hed = u3k(i); + lit = tel; + } + } + + *lit = u3k(b); + + return pro; +} + +u3_noun +u3wb_weld(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qb_weld(a, b); +} + +u3_noun +u3kb_weld(u3_noun a, u3_noun b) +{ + u3_noun c = u3qb_weld(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/b/zing.c b/vere/pkg/noun/jets/b/zing.c new file mode 100644 index 0000000..1172d5e --- /dev/null +++ b/vere/pkg/noun/jets/b/zing.c @@ -0,0 +1,47 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qb_zing(u3_noun a) +{ + u3_noun pro; + u3_noun* lit = &pro; + + if ( u3_nul == a ) { + *lit = u3_nul; + } + else { + u3_noun i, t = a; + u3x_cell(t, &i, &t); + + while ( u3_nul != t ) { + u3_noun* hed; + u3_noun* tel; + u3_noun i_i, t_i = i; + + while ( u3_nul != t_i ) { + u3x_cell(t_i, &i_i, &t_i); + + *lit = u3i_defcons(&hed, &tel); + *hed = u3k(i_i); + lit = tel; + } + + u3x_cell(t, &i, &t); + } + + *lit = u3k(i); + } + + return pro; +} + +u3_noun +u3wb_zing(u3_noun cor) +{ + return u3qb_zing(u3x_at(u3x_sam, cor)); +} diff --git a/vere/pkg/noun/jets/c/aor.c b/vere/pkg/noun/jets/c/aor.c new file mode 100644 index 0000000..248661e --- /dev/null +++ b/vere/pkg/noun/jets/c/aor.c @@ -0,0 +1,69 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + u3_noun + u3qc_aor(u3_noun a, + u3_noun b) + { + while ( 1 ) { + if ( c3y == u3r_sing(a, b) ) return c3y; + if ( c3n == u3ud(a) ) { + if ( c3y == u3ud(b) ) return c3n; + if ( c3y == u3r_sing(u3h(a), u3h(b)) ) { + a = u3t(a); + b = u3t(b); + } + else { + a = u3h(a); + b = u3h(b); + } + } + else { + if ( c3n == u3ud(b) ) return c3y; + { + c3_w len_a_w = u3r_met(3, a); + c3_w len_b_w = u3r_met(3, b);; + c3_y *buf_a_y, *buf_b_y; + c3_y cut_a_y, cut_b_y; + if ( c3y == u3a_is_cat(a) ) { + buf_a_y = (c3_y*)&a; + } + else { + u3a_atom* a_u = u3a_to_ptr(a); + buf_a_y = (c3_y*)(a_u->buf_w); + } + if ( c3y == u3a_is_cat(b) ) { + buf_b_y = (c3_y*)&b; + } + else { + u3a_atom* b_u = u3a_to_ptr(b); + buf_b_y = (c3_y*)(b_u->buf_w); + } + c3_w len_min_w = c3_min(len_a_w, len_b_w); + for (c3_w i_w = 0; i_w < len_min_w; i_w++) { + cut_a_y = buf_a_y[i_w]; + cut_b_y = buf_b_y[i_w]; + if ( cut_a_y != cut_b_y ) return __(cut_a_y < cut_b_y); + } + return __(len_a_w < len_b_w); + } + } + } + } + + u3_noun + u3wc_aor(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) ) { + return u3m_bail(c3__exit); + } else { + return u3qc_aor(a, b); + } + } + diff --git a/vere/pkg/noun/jets/c/bex.c b/vere/pkg/noun/jets/c/bex.c new file mode 100644 index 0000000..497ebfd --- /dev/null +++ b/vere/pkg/noun/jets/c/bex.c @@ -0,0 +1,55 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qc_bex(u3_atom a) +{ + c3_d a_d; + u3i_slab sab_u; + + if ( a < 31 ) { + return 1U << a; + } + + if ( c3y == u3a_is_cat(a) ) { + a_d = a; + } + else { + if ( c3n == u3r_safe_chub(a, &a_d) ) { + return u3m_bail(c3__fail); + } + + // We don't currently support atoms 2GB or larger (fails while + // mugging). The extra term of 16 is experimentally determined. + if ( a_d >= ((c3_d)1 << (c3_d)34) - 16 ) { + u3l_log("bex: overflow"); + return u3m_bail(c3__fail); + } + } + + u3i_slab_init(&sab_u, 0, a_d + 1); + + sab_u.buf_w[a_d >> 5] = 1U << (a_d & 31); + + return u3i_slab_moot(&sab_u); +} + +u3_noun +u3kc_bex(u3_atom a) +{ + u3_noun b = u3qc_bex(a); + u3z(a); + return b; +} + +u3_noun +u3wc_bex(u3_noun cor) +{ + u3_noun a = u3x_at(u3x_sam, cor); + return u3qc_bex(u3x_atom(a)); +} diff --git a/vere/pkg/noun/jets/c/c0n.c b/vere/pkg/noun/jets/c/c0n.c new file mode 100644 index 0000000..a6fee5b --- /dev/null +++ b/vere/pkg/noun/jets/c/c0n.c @@ -0,0 +1,55 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_con(u3_atom a, + u3_atom b) + { + c3_w lna_w = u3r_met(5, a); + c3_w lnb_w = u3r_met(5, b); + + if ( (lna_w == 0) && (lnb_w == 0) ) { + return 0; + } + else { + c3_w len_w = c3_max(lna_w, lnb_w); + c3_w i_w; + u3i_slab sab_u; + u3i_slab_from(&sab_u, a, 5, len_w); + + for ( i_w = 0; i_w < lnb_w; i_w++ ) { + sab_u.buf_w[i_w] |= u3r_word(i_w, b); + } + + return u3i_slab_mint(&sab_u); + } + } + u3_noun + u3wc_con(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__exit); + } else { + return u3qc_con(a, b); + } + } + +u3_noun +u3kc_con(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qc_con(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/c/can.c b/vere/pkg/noun/jets/c/can.c new file mode 100644 index 0000000..ca6d97a --- /dev/null +++ b/vere/pkg/noun/jets/c/can.c @@ -0,0 +1,85 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_can(u3_atom a, + u3_noun b) + { + if ( !_(u3a_is_cat(a)) || (a >= 32) ) { + return u3m_bail(c3__fail); + } + else { + c3_g a_g = a; + c3_w tot_w = 0; + u3i_slab sab_u; + + /* Measure and validate the slab required. + */ + { + u3_noun cab = b; + + while ( 1 ) { + u3_noun i_cab, pi_cab, qi_cab; + + if ( 0 == cab ) { + break; + } + if ( c3n == u3du(cab) ) return u3m_bail(c3__fail); + i_cab = u3h(cab); + if ( c3n == u3du(i_cab) ) return u3m_bail(c3__fail); + pi_cab = u3h(i_cab); + qi_cab = u3t(i_cab); + if ( c3n == u3a_is_cat(pi_cab) ) return u3m_bail(c3__fail); + if ( c3n == u3ud(qi_cab) ) return u3m_bail(c3__fail); + if ( (tot_w + pi_cab) < tot_w ) return u3m_bail(c3__fail); + + tot_w += pi_cab; + cab = u3t(cab); + } + + if ( 0 == tot_w ) { + return 0; + } + + u3i_slab_init(&sab_u, a_g, tot_w); + } + + /* Chop the list atoms in. + */ + { + u3_noun cab = b; + c3_w pos_w = 0; + + while ( 0 != cab ) { + u3_noun i_cab = u3h(cab); + u3_atom pi_cab = u3h(i_cab); + u3_atom qi_cab = u3t(i_cab); + + u3r_chop(a_g, 0, pi_cab, pos_w, sab_u.buf_w, qi_cab); + pos_w += pi_cab; + cab = u3t(cab); + } + } + + return u3i_slab_mint(&sab_u); + } + } + u3_noun + u3wc_can(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) ) + { + return u3m_bail(c3__fail); + } else { + return u3qc_can(a, b); + } + } + diff --git a/vere/pkg/noun/jets/c/cap.c b/vere/pkg/noun/jets/c/cap.c new file mode 100644 index 0000000..95bef1f --- /dev/null +++ b/vere/pkg/noun/jets/c/cap.c @@ -0,0 +1,25 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qc_cap(u3_atom a) +{ + c3_w met_w = u3r_met(0, a); + + if ( 2 > met_w ) { + return u3m_bail(c3__exit); + } + else { + return 2 + u3r_bit((met_w - 2), a); + } +} + +u3_noun +u3wc_cap(u3_noun cor) +{ + return u3qc_cap(u3x_atom(u3x_at(u3x_sam, cor))); +} diff --git a/vere/pkg/noun/jets/c/cat.c b/vere/pkg/noun/jets/c/cat.c new file mode 100644 index 0000000..f3c4d2d --- /dev/null +++ b/vere/pkg/noun/jets/c/cat.c @@ -0,0 +1,54 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_cat(u3_atom a, + u3_atom b, + u3_atom c) + { + if ( !_(u3a_is_cat(a)) || (a >= 32) ) { + return u3m_bail(c3__fail); + } + else { + c3_g a_g = a; + c3_w lew_w = u3r_met(a_g, b); + c3_w ler_w = u3r_met(a_g, c); + c3_w all_w = (lew_w + ler_w); + + if ( 0 == all_w ) { + return 0; + } + else { + u3i_slab sab_u; + u3i_slab_from(&sab_u, b, a_g, all_w); + + u3r_chop(a_g, 0, ler_w, lew_w, sab_u.buf_w, c); + + return u3i_slab_mint(&sab_u); + } + } + } + + u3_noun + u3wc_cat(u3_noun cor) + { + u3_noun a, b, c; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, + u3x_sam_6, &b, + u3x_sam_7, &c, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) || + (c3n == u3ud(c)) ) + { + return u3m_bail(c3__exit); + } else { + return u3qc_cat(a, b, c); + } + } + diff --git a/vere/pkg/noun/jets/c/clz.c b/vere/pkg/noun/jets/c/clz.c new file mode 100644 index 0000000..f8da45a --- /dev/null +++ b/vere/pkg/noun/jets/c/clz.c @@ -0,0 +1,75 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_atom +u3qc_clz(u3_atom boq, u3_atom sep, u3_atom a) +{ + if ( !_(u3a_is_cat(boq)) || (boq >= 32) ) { + return u3m_bail(c3__fail); + } + + if ( !_(u3a_is_cat(sep)) ) { + return u3m_bail(c3__fail); + } + + c3_g boq_g = boq; + c3_w sep_w = sep; + c3_w tot_w = sep_w << boq_g; + + if ( (tot_w >> boq_g) != sep_w ) { + return u3m_bail(c3__fail); + } + + c3_w met_w = u3r_met(0, a); + + if ( met_w <= tot_w ) { + tot_w -= met_w; + return u3i_word(tot_w); + } + else { + c3_w wid_w = tot_w >> 5; + c3_w bit_w = tot_w & 31; + c3_w wor_w; + + if ( bit_w ) { + wor_w = u3r_word(wid_w, a); + wor_w &= (1 << bit_w) - 1; + + if ( wor_w ) { + return bit_w - (32 - c3_lz_w(wor_w)); + } + } + + while ( wid_w-- ) { + wor_w = u3r_word(wid_w, a); + + if ( wor_w ) { + bit_w += c3_lz_w(wor_w); + break; + } + + bit_w += 32; + } + + return u3i_word(bit_w); + } +} + +u3_noun +u3wc_clz(u3_noun cor) +{ + u3_atom boq, sep, vat; + { + u3_noun sam = u3h(u3t(cor)); + u3_noun bit = u3h(sam); + + u3x_bite(bit, &boq, &sep); + vat = u3x_atom(u3t(sam)); + } + + return u3qc_clz(boq, sep, vat); +} diff --git a/vere/pkg/noun/jets/c/ctz.c b/vere/pkg/noun/jets/c/ctz.c new file mode 100644 index 0000000..ff74e24 --- /dev/null +++ b/vere/pkg/noun/jets/c/ctz.c @@ -0,0 +1,34 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_atom +u3qc_ctz(u3_atom a) +{ + c3_w wor_w, i_w = 0; + + if ( 0 == a ) { + return 0; + } + + do { + wor_w = u3r_word(i_w++, a); + } + while ( !wor_w ); + + { + c3_w bit_d = i_w - 1; + bit_d *= 32; + bit_d += c3_tz_w(wor_w); + return u3i_chub(bit_d); + } +} + +u3_noun +u3wc_ctz(u3_noun cor) +{ + return u3qc_ctz(u3x_atom(u3h(u3t(cor)))); +} diff --git a/vere/pkg/noun/jets/c/cut.c b/vere/pkg/noun/jets/c/cut.c new file mode 100644 index 0000000..43ed8c4 --- /dev/null +++ b/vere/pkg/noun/jets/c/cut.c @@ -0,0 +1,68 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_cut(u3_atom a, + u3_atom b, + u3_atom c, + u3_atom d) + { + c3_w b_w, c_w; + if ( !_(u3a_is_cat(a)) || (a >= 32) ) { + return u3m_bail(c3__fail); + } + if ( !_(u3r_safe_word(b, &b_w)) ) { + return u3m_bail(c3__fail); + } + if ( !_(u3r_safe_word(c, &c_w)) ) { + return u3m_bail(c3__fail); + } + + { + c3_g a_g = a; + c3_w len_w = u3r_met(a_g, d); + + if ( (0 == c_w) || (b_w >= len_w) ) { + return 0; + } + if ( b_w + c_w > len_w ) { + c_w = (len_w - b_w); + } + if ( (b_w == 0) && (c_w == len_w) ) { + return u3k(d); + } + else { + u3i_slab sab_u; + u3i_slab_init(&sab_u, a_g, c_w); + + u3r_chop(a_g, b_w, c_w, 0, sab_u.buf_w, d); + + return u3i_slab_mint(&sab_u); + } + } + } + u3_noun + u3wc_cut(u3_noun cor) + { + u3_noun a, b, c, d; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, + u3x_sam_12, &b, + u3x_sam_13, &c, + u3x_sam_7, &d, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) || + (c3n == u3ud(c)) || + (c3n == u3ud(d)) ) + { + return u3m_bail(c3__exit); + } else { + return u3qc_cut(a, b, c, d); + } + } + diff --git a/vere/pkg/noun/jets/c/dis.c b/vere/pkg/noun/jets/c/dis.c new file mode 100644 index 0000000..8c41a36 --- /dev/null +++ b/vere/pkg/noun/jets/c/dis.c @@ -0,0 +1,46 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_dis(u3_atom a, + u3_atom b) + { + c3_w lna_w = u3r_met(5, a); + c3_w lnb_w = u3r_met(5, b); + + if ( (lna_w == 0) && (lnb_w == 0) ) { + return 0; + } + else { + c3_w len_w = c3_max(lna_w, lnb_w); + c3_w i_w; + u3i_slab sab_u; + u3i_slab_from(&sab_u, a, 5, len_w); + + for ( i_w = 0; i_w < len_w; i_w++ ) { + sab_u.buf_w[i_w] &= u3r_word(i_w, b); + } + + return u3i_slab_mint(&sab_u); + } + } + u3_noun + u3wc_dis(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__exit); + } else { + return u3qc_dis(a, b); + } + } + diff --git a/vere/pkg/noun/jets/c/dor.c b/vere/pkg/noun/jets/c/dor.c new file mode 100644 index 0000000..0c1e220 --- /dev/null +++ b/vere/pkg/noun/jets/c/dor.c @@ -0,0 +1,49 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_dor(u3_noun a, + u3_noun b) + { + if ( c3y == u3r_sing(a, b) ) { + return c3y; + } + else { + if ( c3y == u3ud(a) ) { + if ( c3y == u3ud(b) ) { + return u3qa_lth(a, b); + } + else { + return c3y; + } + } + else { + if ( c3y == u3ud(b) ) { + return c3n; + } + else { + if ( c3y == u3r_sing(u3h(a), u3h(b)) ) { + return u3qc_dor(u3t(a), u3t(b)); + } + else return u3qc_dor(u3h(a), u3h(b)); + } + } + } + } + u3_noun + u3wc_dor(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) ) { + return u3m_bail(c3__exit); + } else { + return u3qc_dor(a, b); + } + } + diff --git a/vere/pkg/noun/jets/c/dvr.c b/vere/pkg/noun/jets/c/dvr.c new file mode 100644 index 0000000..d822bf3 --- /dev/null +++ b/vere/pkg/noun/jets/c/dvr.c @@ -0,0 +1,46 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_dvr(u3_atom a, + u3_atom b) + { + if ( 0 == b ) { + return u3m_error("divide-by-zero"); + } + else { + if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { + return u3nc(a / b, a % b); + } + else { + mpz_t a_mp, b_mp; + + u3r_mp(a_mp, a); + u3r_mp(b_mp, b); + + mpz_tdiv_qr(a_mp, b_mp, a_mp, b_mp); + + return u3nc(u3i_mp(a_mp), u3i_mp(b_mp)); + } + } + } + u3_noun + u3wc_dvr(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__fail); + } else { + return u3qc_dvr(a, b); + } + } + diff --git a/vere/pkg/noun/jets/c/end.c b/vere/pkg/noun/jets/c/end.c new file mode 100644 index 0000000..94618ad --- /dev/null +++ b/vere/pkg/noun/jets/c/end.c @@ -0,0 +1,51 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qc_end(u3_atom a, + u3_atom b, + u3_atom c) +{ + if ( !_(u3a_is_cat(a)) || (a >= 32) ) { + return u3m_bail(c3__fail); + } + else if ( !_(u3a_is_cat(b)) ) { + return u3k(c); + } + else { + c3_g a_g = a; + c3_w b_w = b; + c3_w len_w = u3r_met(a_g, c); + + if ( 0 == b_w ) { + return 0; + } + else if ( b_w >= len_w ) { + return u3k(c); + } + else { + u3i_slab sab_u; + u3i_slab_init(&sab_u, a_g, b_w); + + u3r_chop(a_g, 0, b_w, 0, sab_u.buf_w, c); + + return u3i_slab_mint(&sab_u); + } + } +} + +u3_noun +u3wc_end(u3_noun cor) +{ + u3_atom bloq, step; + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, + u3x_sam_3, &b, 0); + u3x_bite(a, &bloq, &step); + + return u3qc_end(bloq, step, u3x_atom(b)); +} diff --git a/vere/pkg/noun/jets/c/gor.c b/vere/pkg/noun/jets/c/gor.c new file mode 100644 index 0000000..91c2d98 --- /dev/null +++ b/vere/pkg/noun/jets/c/gor.c @@ -0,0 +1,32 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_gor(u3_noun a, + u3_noun b) + { + c3_w c_w = u3r_mug(a); + c3_w d_w = u3r_mug(b); + + if ( c_w == d_w ) { + return u3qc_dor(a, b); + } + else return (c_w < d_w) ? c3y : c3n; + } + u3_noun + u3wc_gor(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) ) { + return u3m_bail(c3__exit); + } else { + return u3qc_gor(a, b); + } + } + diff --git a/vere/pkg/noun/jets/c/ham.c b/vere/pkg/noun/jets/c/ham.c new file mode 100644 index 0000000..776cf0c --- /dev/null +++ b/vere/pkg/noun/jets/c/ham.c @@ -0,0 +1,27 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_atom +u3qc_ham(u3_atom a) +{ + c3_w len_w = u3r_met(5, a); + c3_d pop_d = 0; + c3_w wor_w; + + for ( c3_w i_w = 0; i_w < len_w; i_w++ ) { + wor_w = u3r_word(i_w, a); + pop_d += c3_pc_w(wor_w); + } + + return u3i_chub(pop_d); +} + +u3_noun +u3wc_ham(u3_noun cor) +{ + return u3qc_ham(u3x_atom(u3h(u3t(cor)))); +} diff --git a/vere/pkg/noun/jets/c/hew.c b/vere/pkg/noun/jets/c/hew.c new file mode 100644 index 0000000..be6b7a7 --- /dev/null +++ b/vere/pkg/noun/jets/c/hew.c @@ -0,0 +1,87 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static c3_w +_hew_in(c3_g a_g, + c3_w pos_w, + u3_atom vat, + u3_noun sam, + u3_noun* out) +{ + u3_noun h, t, *l, *r; + + while ( c3y == u3r_cell(sam, &h, &t) ) { + *out = u3i_defcons(&l, &r); + pos_w = _hew_in(a_g, pos_w, vat, h, l); + sam = t; + out = r; + } + + if ( !_(u3a_is_cat(sam)) ) { + return u3m_bail(c3__fail); + } + + if ( !sam ) { + *out = 0; + return pos_w; + } + else { + c3_w wid_w = (c3_w)sam; + c3_w new_w = pos_w + wid_w; + u3i_slab sab_u; + + if ( new_w < pos_w ) { + return u3m_bail(c3__fail); + } + + u3i_slab_init(&sab_u, a_g, wid_w); + u3r_chop(a_g, pos_w, wid_w, 0, sab_u.buf_w, vat); + + *out = u3i_slab_mint(&sab_u); + return new_w; + } +} + +u3_noun +u3qc_hew(u3_atom boq, + u3_atom sep, + u3_atom vat, + u3_noun sam) +{ + if ( !_(u3a_is_cat(boq)) || (boq >= 32) ) { + return u3m_bail(c3__fail); + } + + if ( !_(u3a_is_cat(sep)) ) { + return u3m_bail(c3__fail); + } + + u3_noun pro; + c3_w pos_w = _hew_in((c3_g)boq, (c3_w)sep, vat, sam, &pro); + return u3nt(pro, boq, u3i_word(pos_w)); +} + +u3_noun +u3wc_hew(u3_noun cor) +{ + u3_atom boq, sep, vat; + u3_noun sam; + { + u3_noun pay = u3t(cor); + u3_noun con = u3t(pay); + u3_noun gat = u3t(con); // outer gate + u3_noun cam = u3h(u3t(gat)); // outer sample + u3_noun d = u3h(con); + + boq = u3x_atom(u3h(d)); + sep = u3x_atom(u3t(d)); + vat = u3x_atom(u3t(cam)); + sam = u3h(pay); + } + + return u3qc_hew(boq, sep, vat, sam); +} diff --git a/vere/pkg/noun/jets/c/lsh.c b/vere/pkg/noun/jets/c/lsh.c new file mode 100644 index 0000000..09a97e6 --- /dev/null +++ b/vere/pkg/noun/jets/c/lsh.c @@ -0,0 +1,63 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qc_lsh(u3_atom a, + u3_atom b, + u3_atom c) +{ + if ( !_(u3a_is_cat(a)) || (a >= 32) ) { + return u3m_bail(c3__fail); + } + else if ( !_(u3a_is_cat(b)) ) { + return u3m_bail(c3__fail); + } + else { + c3_g a_g = a; + c3_w b_w = b; + c3_w len_w = u3r_met(a_g, c); + + if ( 0 == len_w ) { + return 0; + } + else if ( (b_w + len_w) < len_w ) { + return u3m_bail(c3__exit); + } + else { + u3i_slab sab_u; + u3i_slab_init(&sab_u, a_g, (b_w + len_w)); + + u3r_chop(a_g, 0, len_w, b_w, sab_u.buf_w, c); + + return u3i_slab_mint(&sab_u); + } + } +} + +u3_noun +u3wc_lsh(u3_noun cor) +{ + u3_atom bloq, step; + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, + u3x_sam_3, &b, 0); + u3x_bite(a, &bloq, &step); + + return u3qc_lsh(bloq, step, u3x_atom(b)); +} + +u3_noun +u3kc_lsh(u3_noun a, + u3_noun b, + u3_noun c) +{ + u3_noun d = u3qc_lsh(a, b, c); + + u3z(a); u3z(b); u3z(c); + return d; +} diff --git a/vere/pkg/noun/jets/c/mas.c b/vere/pkg/noun/jets/c/mas.c new file mode 100644 index 0000000..b0be6e1 --- /dev/null +++ b/vere/pkg/noun/jets/c/mas.c @@ -0,0 +1,48 @@ +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qc_mas(u3_atom a) +{ + c3_w b_w; + + if ( c3y == u3a_is_cat(a) ) { + b_w = c3_bits_word(a); + + if ( 2 > b_w ) { + return u3m_bail(c3__exit); + } + else { + a &= ~((c3_w)1 << (b_w - 1)); + a |= ((c3_w)1 << (b_w - 2)); + return a; + } + } + else { + b_w = u3r_met(0, a); + + if ( 64 > b_w ) { + c3_d a_d = u3r_chub(0, a); + a_d &= ~((c3_d)1 << (b_w - 1)); + a_d |= ((c3_d)1 << (b_w - 2)); + return u3i_chub(a_d); + } + else { + u3i_slab sab_u; + u3i_slab_from(&sab_u, a, 0, b_w - 1); + + b_w -= 2; + sab_u.buf_w[(b_w >> 5)] |= ((c3_w)1 << (b_w & 31)); + + return u3i_slab_mint(&sab_u); + } + } +} + +u3_noun +u3wc_mas(u3_noun cor) +{ + return u3qc_mas(u3x_atom(u3x_at(u3x_sam, cor))); +} diff --git a/vere/pkg/noun/jets/c/met.c b/vere/pkg/noun/jets/c/met.c new file mode 100644 index 0000000..5f3a6a6 --- /dev/null +++ b/vere/pkg/noun/jets/c/met.c @@ -0,0 +1,42 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_met(u3_atom a, + u3_atom b) + { + if ( 0 == b ) { + return 0; + } + else if ( !_(u3a_is_cat(a)) || (a >= 32) ) { + return u3m_bail(c3__fail);; + } + else { + c3_w met_w = u3r_met(a, b); + + if ( !_(u3a_is_cat(met_w)) ) { + return u3i_words(1, &met_w); + } + else return met_w; + } + } + u3_noun + u3wc_met(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(b)) || + (c3n == u3ud(a) && 0 != b) ) + { + return u3m_bail(c3__exit); + } else { + return u3qc_met(a, b); + } + } + diff --git a/vere/pkg/noun/jets/c/mix.c b/vere/pkg/noun/jets/c/mix.c new file mode 100644 index 0000000..b497c3f --- /dev/null +++ b/vere/pkg/noun/jets/c/mix.c @@ -0,0 +1,56 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_mix(u3_atom a, + u3_atom b) + { + c3_w lna_w = u3r_met(5, a); + c3_w lnb_w = u3r_met(5, b); + + if ( (lna_w == 0) && (lnb_w == 0) ) { + return 0; + } + else { + c3_w len_w = c3_max(lna_w, lnb_w); + c3_w i_w; + u3i_slab sab_u; + u3i_slab_from(&sab_u, a, 5, len_w); + + // XX use u3r_chop for XOR? + // + for ( i_w = 0; i_w < lnb_w; i_w++ ) { + sab_u.buf_w[i_w] ^= u3r_word(i_w, b); + } + + return u3i_slab_mint(&sab_u); + } + } + u3_noun + u3wc_mix(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__exit); + } else { + return u3qc_mix(a, b); + } + } + u3_noun + u3kc_mix(u3_atom a, + u3_atom b) + { + u3_noun res = u3qc_mix(a, b); + u3z(a); u3z(b); + return res; + } diff --git a/vere/pkg/noun/jets/c/mor.c b/vere/pkg/noun/jets/c/mor.c new file mode 100644 index 0000000..97ba141 --- /dev/null +++ b/vere/pkg/noun/jets/c/mor.c @@ -0,0 +1,31 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_mor(u3_noun a, + u3_noun b) + { + c3_w c_w = u3r_mug(u3r_mug(a)); + c3_w d_w = u3r_mug(u3r_mug(b)); + + if ( c_w == d_w ) { + return u3qc_dor(a, b); + } + else return (c_w < d_w) ? c3y : c3n; + } + u3_noun + u3wc_mor(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) ) { + return u3m_bail(c3__exit); + } else { + return u3qc_mor(a, b); + } + } diff --git a/vere/pkg/noun/jets/c/mug.c b/vere/pkg/noun/jets/c/mug.c new file mode 100644 index 0000000..ec6e483 --- /dev/null +++ b/vere/pkg/noun/jets/c/mug.c @@ -0,0 +1,19 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3wc_mug(u3_noun cor) + { + u3_noun sam; + + if ( u3_none == (sam = u3r_at(u3x_sam, cor)) ) { + return u3m_bail(c3__exit); + } else { + return u3r_mug(sam); + } + } diff --git a/vere/pkg/noun/jets/c/muk.c b/vere/pkg/noun/jets/c/muk.c new file mode 100644 index 0000000..0846ed7 --- /dev/null +++ b/vere/pkg/noun/jets/c/muk.c @@ -0,0 +1,76 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "murmur3.h" + +u3_noun +u3qc_muk(u3_atom sed, + u3_atom len, + u3_atom key) +{ + if ( c3n == u3a_is_cat(len) ) { + return u3m_bail(c3__fail); + } + else { + c3_w len_w = (c3_w)len; + c3_w key_w = u3r_met(3, key); + + // NB: this condition is implicit in the pad subtraction + // + if ( key_w > len_w ) { + return u3m_bail(c3__exit); + } + else { + c3_w sed_w = u3r_word(0, sed); + c3_o loc_o = c3n; + c3_y* key_y = 0; + c3_w out_w; + + // if we're hashing more bytes than we have, allocate and copy + // to ensure trailing null bytes + // + if ( len_w > key_w ) { + loc_o = c3y; + key_y = u3a_calloc(sizeof(c3_y), len_w); + u3r_bytes(0, len_w, key_y, key); + } + else if ( len_w > 0 ) { + // XX assumes little-endian + // + key_y = ( c3y == u3a_is_cat(key) ) + ? (c3_y*)&key + : (c3_y*)((u3a_atom*)u3a_to_ptr(key))->buf_w; + } + + MurmurHash3_x86_32(key_y, len_w, sed_w, &out_w); + + if ( c3y == loc_o ) { + u3a_free(key_y); + } + + return u3i_words(1, &out_w); + } + } +} + +u3_noun +u3wc_muk(u3_noun cor) +{ + u3_noun sed, len, key; + u3x_mean(cor, u3x_sam_2, &sed, + u3x_sam_6, &len, + u3x_sam_7, &key, 0); + + if ( (c3n == u3ud(sed)) + || (c3n == u3ud(len)) + || (c3n == u3ud(key)) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qc_muk(sed, len, key); + } +} diff --git a/vere/pkg/noun/jets/c/peg.c b/vere/pkg/noun/jets/c/peg.c new file mode 100644 index 0000000..a700752 --- /dev/null +++ b/vere/pkg/noun/jets/c/peg.c @@ -0,0 +1,66 @@ +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qc_peg(u3_atom a, u3_atom b) +{ + if ( (0 == a) || (0 == b) ) { + return u3m_bail(c3__exit); + } + else if ( 1 == b ) { + return u3k(a); + } + + c3_d a_d, b_d; + c3_w c_w; + + if ( (c3y == u3a_is_cat(a)) && (c3y == u3a_is_cat(b)) ) { + c_w = c3_bits_word(b) - 1; + a_d = a; + b_d = b; + } + else { + c3_w d_w = u3r_met(0, a); + c3_d e_d; + + c_w = u3r_met(0, b) - 1; + e_d = (c3_d)c_w + d_w; + + if ( 64 <= e_d ) { + u3i_slab sab_u; + u3i_slab_init(&sab_u, 0, e_d); + + u3r_chop(0, 0, c_w, 0, sab_u.buf_w, b); + u3r_chop(0, 0, d_w, c_w, sab_u.buf_w, a); + + return u3i_slab_moot(&sab_u); + } + + a_d = u3r_chub(0, a); + b_d = u3r_chub(0, b); + } + + b_d &= ((c3_d)1 << c_w) - 1; + a_d <<= c_w; + a_d ^= b_d; + + return u3i_chub(a_d); +} + +u3_noun +u3wc_peg(u3_noun cor) +{ + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(b)) || + (c3n == u3ud(a) && b != 1) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qc_peg(a, b); + } +} diff --git a/vere/pkg/noun/jets/c/po.c b/vere/pkg/noun/jets/c/po.c new file mode 100644 index 0000000..2fe8858 --- /dev/null +++ b/vere/pkg/noun/jets/c/po.c @@ -0,0 +1,1427 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3_po_find_prefix(c3_y one, c3_y two, c3_y three) { + switch (one) { + case 'b': switch (two) { + case 'a': switch (three) { + case 'c': return u3nc(0, 238); + case 'l': return u3nc(0, 107); + case 'n': return u3nc(0, 92); + case 'r': return u3nc(0, 183); + case 't': return u3nc(0, 172); + default: return 0; + } + case 'i': switch (three) { + case 'c': return u3nc(0, 56); + case 'd': return u3nc(0, 106); + case 'l': return u3nc(0, 144); + case 'n': return u3nc(0, 2); + case 's': return u3nc(0, 60); + case 't': return u3nc(0, 182); + default: return 0; + } + case 'o': switch (three) { + case 'l': return u3nc(0, 45); + case 'n': return u3nc(0, 244); + case 'r': return u3nc(0, 188); + case 's': return u3nc(0, 171); + case 't': return u3nc(0, 98); + default: return 0; + } + default: return 0; + } + case 'd': switch (two) { + case 'a': switch (three) { + case 'b': return u3nc(0, 181); + case 'c': return u3nc(0, 117); + case 'l': return u3nc(0, 37); + case 'n': return u3nc(0, 234); + case 'p': return u3nc(0, 66); + case 'r': return u3nc(0, 23); + case 's': return u3nc(0, 61); + case 't': return u3nc(0, 215); + case 'v': return u3nc(0, 105); + default: return 0; + } + case 'i': switch (three) { + case 'b': return u3nc(0, 179); + case 'f': return u3nc(0, 57); + case 'g': return u3nc(0, 193); + case 'l': return u3nc(0, 49); + case 'n': return u3nc(0, 217); + case 'r': return u3nc(0, 11); + case 's': return u3nc(0, 129); + case 'v': return u3nc(0, 116); + default: return 0; + } + case 'o': switch (three) { + case 'c': return u3nc(0, 146); + case 'l': return u3nc(0, 102); + case 'n': return u3nc(0, 233); + case 'p': return u3nc(0, 18); + case 'r': return u3nc(0, 24); + case 's': return u3nc(0, 187); + case 't': return u3nc(0, 47); + case 'v': return u3nc(0, 236); + case 'z': return u3nc(0, 0); + default: return 0; + } + default: return 0; + } + case 'f': switch (two) { + case 'a': switch (three) { + case 'b': return u3nc(0, 120); + case 'd': return u3nc(0, 206); + case 'l': return u3nc(0, 152); + case 'm': return u3nc(0, 214); + case 'n': return u3nc(0, 158); + case 's': return u3nc(0, 195); + default: return 0; + } + case 'i': switch (three) { + case 'd': return u3nc(0, 8); + case 'g': return u3nc(0, 138); + case 'l': return u3nc(0, 194); + case 'n': return u3nc(0, 90); + case 'p': return u3nc(0, 255); + case 'r': return u3nc(0, 169); + case 't': return u3nc(0, 226); + default: return 0; + } + case 'o': switch (three) { + case 'd': return u3nc(0, 247); + case 'g': return u3nc(0, 20); + case 'l': return u3nc(0, 27); + case 'n': return u3nc(0, 91); + case 'p': return u3nc(0, 213); + case 'r': return u3nc(0, 50); + case 's': return u3nc(0, 46); + case 't': return u3nc(0, 221); + default: return 0; + } + default: return 0; + } + case 'h': switch (two) { + case 'a': switch (three) { + case 'b': return u3nc(0, 209); + case 'c': return u3nc(0, 174); + case 'd': return u3nc(0, 145); + case 'l': return u3nc(0, 203); + case 'n': return u3nc(0, 41); + case 'p': return u3nc(0, 156); + case 'r': return u3nc(0, 198); + case 's': return u3nc(0, 170); + case 't': return u3nc(0, 218); + case 'v': return u3nc(0, 176); + default: return 0; + } + case 'i': switch (three) { + case 'd': return u3nc(0, 7); + case 'l': return u3nc(0, 190); + case 'n': return u3nc(0, 200); + default: return 0; + } + case 'o': switch (three) { + case 'b': return u3nc(0, 197); + case 'c': return u3nc(0, 223); + case 'd': return u3nc(0, 26); + case 'l': return u3nc(0, 32); + case 'p': return u3nc(0, 22); + case 's': return u3nc(0, 180); + default: return 0; + } + default: return 0; + } + case 'l': switch (two) { + case 'a': switch (three) { + case 'b': return u3nc(0, 161); + case 'c': return u3nc(0, 34); + case 'd': return u3nc(0, 235); + case 'g': return u3nc(0, 205); + case 'n': return u3nc(0, 232); + case 'p': return u3nc(0, 240); + case 'r': return u3nc(0, 225); + case 's': return u3nc(0, 128); + case 't': return u3nc(0, 134); + case 'v': return u3nc(0, 252); + default: return 0; + } + case 'i': switch (three) { + case 'b': return u3nc(0, 39); + case 'd': return u3nc(0, 21); + case 'g': return u3nc(0, 111); + case 'n': return u3nc(0, 178); + case 's': return u3nc(0, 9); + case 't': return u3nc(0, 5); + case 'v': return u3nc(0, 36); + default: return 0; + } + case 'o': switch (three) { + case 'c': return u3nc(0, 69); + case 'd': return u3nc(0, 186); + case 'm': return u3nc(0, 166); + case 'n': return u3nc(0, 135); + case 'p': return u3nc(0, 63); + case 'r': return u3nc(0, 25); + case 's': return u3nc(0, 48); + default: return 0; + } + default: return 0; + } + case 'm': switch (two) { + case 'a': switch (three) { + case 'c': return u3nc(0, 191); + case 'g': return u3nc(0, 103); + case 'l': return u3nc(0, 110); + case 'p': return u3nc(0, 130); + case 'r': return u3nc(0, 1); + case 's': return u3nc(0, 202); + case 't': return u3nc(0, 253); + default: return 0; + } + case 'i': switch (three) { + case 'c': return u3nc(0, 157); + case 'd': return u3nc(0, 62); + case 'g': return u3nc(0, 199); + case 'l': return u3nc(0, 212); + case 'n': return u3nc(0, 79); + case 'p': return u3nc(0, 254); + case 'r': return u3nc(0, 31); + case 's': return u3nc(0, 126); + case 't': return u3nc(0, 196); + default: return 0; + } + case 'o': switch (three) { + case 'c': return u3nc(0, 148); + case 'd': return u3nc(0, 19); + case 'g': return u3nc(0, 162); + case 'l': return u3nc(0, 67); + case 'n': return u3nc(0, 122); + case 'p': return u3nc(0, 208); + case 'r': return u3nc(0, 93); + case 's': return u3nc(0, 231); + case 't': return u3nc(0, 82); + default: return 0; + } + default: return 0; + } + case 'n': switch (two) { + case 'a': switch (three) { + case 'c': return u3nc(0, 219); + case 'l': return u3nc(0, 230); + case 'm': return u3nc(0, 243); + case 'p': return u3nc(0, 87); + case 'r': return u3nc(0, 65); + case 't': return u3nc(0, 77); + case 'v': return u3nc(0, 137); + default: return 0; + } + case 'i': switch (three) { + case 'b': return u3nc(0, 140); + case 'd': return u3nc(0, 72); + case 'l': return u3nc(0, 210); + case 'm': return u3nc(0, 224); + case 's': return u3nc(0, 124); + default: return 0; + } + case 'o': switch (three) { + case 'c': return u3nc(0, 250); + case 'd': return u3nc(0, 136); + case 'l': return u3nc(0, 216); + case 'm': return u3nc(0, 139); + case 'p': return u3nc(0, 88); + case 'r': return u3nc(0, 97); + case 's': return u3nc(0, 211); + case 'v': return u3nc(0, 70); + default: return 0; + } + default: return 0; + } + case 'p': switch (two) { + case 'a': switch (three) { + case 'c': return u3nc(0, 149); + case 'd': return u3nc(0, 114); + case 'g': return u3nc(0, 141); + case 'l': return u3nc(0, 127); + case 'n': return u3nc(0, 78); + case 'r': return u3nc(0, 185); + case 's': return u3nc(0, 33); + case 't': return u3nc(0, 159); + default: return 0; + } + case 'i': switch (three) { + case 'c': return u3nc(0, 104); + case 'd': return u3nc(0, 43); + case 'l': return u3nc(0, 51); + case 'n': return u3nc(0, 165); + case 't': return u3nc(0, 242); + default: return 0; + } + case 'o': switch (three) { + case 'c': return u3nc(0, 173); + case 'd': return u3nc(0, 81); + case 'l': return u3nc(0, 239); + case 'n': return u3nc(0, 248); + case 's': return u3nc(0, 86); + default: return 0; + } + default: return 0; + } + case 'r': switch (two) { + case 'a': switch (three) { + case 'b': return u3nc(0, 131); + case 'c': return u3nc(0, 184); + case 'd': return u3nc(0, 201); + case 'g': return u3nc(0, 204); + case 'l': return u3nc(0, 143); + case 'm': return u3nc(0, 52); + case 'n': return u3nc(0, 123); + case 'p': return u3nc(0, 228); + case 'v': return u3nc(0, 150); + default: return 0; + } + case 'i': switch (three) { + case 'b': return u3nc(0, 222); + case 'c': return u3nc(0, 167); + case 'd': return u3nc(0, 147); + case 'g': return u3nc(0, 16); + case 'l': return u3nc(0, 64); + case 'n': return u3nc(0, 28); + case 'p': return u3nc(0, 151); + case 's': return u3nc(0, 220); + case 't': return u3nc(0, 80); + case 'v': return u3nc(0, 237); + default: return 0; + } + case 'o': switch (three) { + case 'c': return u3nc(0, 58); + case 'l': return u3nc(0, 133); + case 'n': return u3nc(0, 96); + case 'p': return u3nc(0, 75); + case 's': return u3nc(0, 245); + case 'v': return u3nc(0, 35); + default: return 0; + } + default: return 0; + } + case 's': switch (two) { + case 'a': switch (three) { + case 'b': return u3nc(0, 13); + case 'l': return u3nc(0, 115); + case 'm': return u3nc(0, 4); + case 'n': return u3nc(0, 68); + case 'p': return u3nc(0, 177); + case 'r': return u3nc(0, 229); + case 't': return u3nc(0, 38); + case 'v': return u3nc(0, 85); + default: return 0; + } + case 'i': switch (three) { + case 'b': return u3nc(0, 15); + case 'c': return u3nc(0, 74); + case 'd': return u3nc(0, 119); + case 'g': return u3nc(0, 6); + case 'l': return u3nc(0, 30); + case 'm': return u3nc(0, 163); + case 'p': return u3nc(0, 95); + case 't': return u3nc(0, 71); + case 'v': return u3nc(0, 112); + default: return 0; + } + case 'o': switch (three) { + case 'c': return u3nc(0, 100); + case 'g': return u3nc(0, 10); + case 'l': return u3nc(0, 17); + case 'm': return u3nc(0, 89); + case 'n': return u3nc(0, 164); + case 'p': return u3nc(0, 142); + case 'r': return u3nc(0, 251); + case 'v': return u3nc(0, 249); + default: return 0; + } + default: return 0; + } + case 't': switch (two) { + case 'a': switch (three) { + case 'b': return u3nc(0, 40); + case 'c': return u3nc(0, 160); + case 'd': return u3nc(0, 55); + case 'g': return u3nc(0, 113); + case 'l': return u3nc(0, 241); + case 'm': return u3nc(0, 83); + case 'n': return u3nc(0, 118); + case 'p': return u3nc(0, 168); + case 'r': return u3nc(0, 121); + case 's': return u3nc(0, 109); + default: return 0; + } + case 'i': switch (three) { + case 'c': return u3nc(0, 42); + case 'd': return u3nc(0, 175); + case 'l': return u3nc(0, 154); + case 'm': return u3nc(0, 108); + case 'n': return u3nc(0, 155); + case 'p': return u3nc(0, 73); + case 'r': return u3nc(0, 53); + default: return 0; + } + case 'o': switch (three) { + case 'b': return u3nc(0, 132); + case 'c': return u3nc(0, 189); + case 'd': return u3nc(0, 153); + case 'g': return u3nc(0, 29); + case 'l': return u3nc(0, 84); + case 'm': return u3nc(0, 192); + case 'n': return u3nc(0, 246); + case 'p': return u3nc(0, 207); + case 'r': return u3nc(0, 44); + default: return 0; + } + default: return 0; + } + case 'w': switch (two) { + case 'a': switch (three) { + case 'c': return u3nc(0, 12); + case 'l': return u3nc(0, 227); + case 'n': return u3nc(0, 3); + case 't': return u3nc(0, 101); + default: return 0; + } + case 'i': switch (three) { + case 'c': return u3nc(0, 99); + case 'd': return u3nc(0, 59); + case 'n': return u3nc(0, 54); + case 's': return u3nc(0, 14); + case 't': return u3nc(0, 76); + default: return 0; + } + case 'o': switch (three) { + case 'l': return u3nc(0, 125); + case 'r': return u3nc(0, 94); + default: return 0; + } + default: return 0; + } + default: return 0; + } +} + +void +u3_po_to_prefix(u3_noun id, c3_y* a, c3_y* b, c3_y* c) +{ + switch (id) { + case 0: *a = 'd'; *b = 'o'; *c = 'z'; break; + case 1: *a = 'm'; *b = 'a'; *c = 'r'; break; + case 2: *a = 'b'; *b = 'i'; *c = 'n'; break; + case 3: *a = 'w'; *b = 'a'; *c = 'n'; break; + case 4: *a = 's'; *b = 'a'; *c = 'm'; break; + case 5: *a = 'l'; *b = 'i'; *c = 't'; break; + case 6: *a = 's'; *b = 'i'; *c = 'g'; break; + case 7: *a = 'h'; *b = 'i'; *c = 'd'; break; + case 8: *a = 'f'; *b = 'i'; *c = 'd'; break; + case 9: *a = 'l'; *b = 'i'; *c = 's'; break; + case 10: *a = 's'; *b = 'o'; *c = 'g'; break; + case 11: *a = 'd'; *b = 'i'; *c = 'r'; break; + case 12: *a = 'w'; *b = 'a'; *c = 'c'; break; + case 13: *a = 's'; *b = 'a'; *c = 'b'; break; + case 14: *a = 'w'; *b = 'i'; *c = 's'; break; + case 15: *a = 's'; *b = 'i'; *c = 'b'; break; + case 16: *a = 'r'; *b = 'i'; *c = 'g'; break; + case 17: *a = 's'; *b = 'o'; *c = 'l'; break; + case 18: *a = 'd'; *b = 'o'; *c = 'p'; break; + case 19: *a = 'm'; *b = 'o'; *c = 'd'; break; + case 20: *a = 'f'; *b = 'o'; *c = 'g'; break; + case 21: *a = 'l'; *b = 'i'; *c = 'd'; break; + case 22: *a = 'h'; *b = 'o'; *c = 'p'; break; + case 23: *a = 'd'; *b = 'a'; *c = 'r'; break; + case 24: *a = 'd'; *b = 'o'; *c = 'r'; break; + case 25: *a = 'l'; *b = 'o'; *c = 'r'; break; + case 26: *a = 'h'; *b = 'o'; *c = 'd'; break; + case 27: *a = 'f'; *b = 'o'; *c = 'l'; break; + case 28: *a = 'r'; *b = 'i'; *c = 'n'; break; + case 29: *a = 't'; *b = 'o'; *c = 'g'; break; + case 30: *a = 's'; *b = 'i'; *c = 'l'; break; + case 31: *a = 'm'; *b = 'i'; *c = 'r'; break; + case 32: *a = 'h'; *b = 'o'; *c = 'l'; break; + case 33: *a = 'p'; *b = 'a'; *c = 's'; break; + case 34: *a = 'l'; *b = 'a'; *c = 'c'; break; + case 35: *a = 'r'; *b = 'o'; *c = 'v'; break; + case 36: *a = 'l'; *b = 'i'; *c = 'v'; break; + case 37: *a = 'd'; *b = 'a'; *c = 'l'; break; + case 38: *a = 's'; *b = 'a'; *c = 't'; break; + case 39: *a = 'l'; *b = 'i'; *c = 'b'; break; + case 40: *a = 't'; *b = 'a'; *c = 'b'; break; + case 41: *a = 'h'; *b = 'a'; *c = 'n'; break; + case 42: *a = 't'; *b = 'i'; *c = 'c'; break; + case 43: *a = 'p'; *b = 'i'; *c = 'd'; break; + case 44: *a = 't'; *b = 'o'; *c = 'r'; break; + case 45: *a = 'b'; *b = 'o'; *c = 'l'; break; + case 46: *a = 'f'; *b = 'o'; *c = 's'; break; + case 47: *a = 'd'; *b = 'o'; *c = 't'; break; + case 48: *a = 'l'; *b = 'o'; *c = 's'; break; + case 49: *a = 'd'; *b = 'i'; *c = 'l'; break; + case 50: *a = 'f'; *b = 'o'; *c = 'r'; break; + case 51: *a = 'p'; *b = 'i'; *c = 'l'; break; + case 52: *a = 'r'; *b = 'a'; *c = 'm'; break; + case 53: *a = 't'; *b = 'i'; *c = 'r'; break; + case 54: *a = 'w'; *b = 'i'; *c = 'n'; break; + case 55: *a = 't'; *b = 'a'; *c = 'd'; break; + case 56: *a = 'b'; *b = 'i'; *c = 'c'; break; + case 57: *a = 'd'; *b = 'i'; *c = 'f'; break; + case 58: *a = 'r'; *b = 'o'; *c = 'c'; break; + case 59: *a = 'w'; *b = 'i'; *c = 'd'; break; + case 60: *a = 'b'; *b = 'i'; *c = 's'; break; + case 61: *a = 'd'; *b = 'a'; *c = 's'; break; + case 62: *a = 'm'; *b = 'i'; *c = 'd'; break; + case 63: *a = 'l'; *b = 'o'; *c = 'p'; break; + case 64: *a = 'r'; *b = 'i'; *c = 'l'; break; + case 65: *a = 'n'; *b = 'a'; *c = 'r'; break; + case 66: *a = 'd'; *b = 'a'; *c = 'p'; break; + case 67: *a = 'm'; *b = 'o'; *c = 'l'; break; + case 68: *a = 's'; *b = 'a'; *c = 'n'; break; + case 69: *a = 'l'; *b = 'o'; *c = 'c'; break; + case 70: *a = 'n'; *b = 'o'; *c = 'v'; break; + case 71: *a = 's'; *b = 'i'; *c = 't'; break; + case 72: *a = 'n'; *b = 'i'; *c = 'd'; break; + case 73: *a = 't'; *b = 'i'; *c = 'p'; break; + case 74: *a = 's'; *b = 'i'; *c = 'c'; break; + case 75: *a = 'r'; *b = 'o'; *c = 'p'; break; + case 76: *a = 'w'; *b = 'i'; *c = 't'; break; + case 77: *a = 'n'; *b = 'a'; *c = 't'; break; + case 78: *a = 'p'; *b = 'a'; *c = 'n'; break; + case 79: *a = 'm'; *b = 'i'; *c = 'n'; break; + case 80: *a = 'r'; *b = 'i'; *c = 't'; break; + case 81: *a = 'p'; *b = 'o'; *c = 'd'; break; + case 82: *a = 'm'; *b = 'o'; *c = 't'; break; + case 83: *a = 't'; *b = 'a'; *c = 'm'; break; + case 84: *a = 't'; *b = 'o'; *c = 'l'; break; + case 85: *a = 's'; *b = 'a'; *c = 'v'; break; + case 86: *a = 'p'; *b = 'o'; *c = 's'; break; + case 87: *a = 'n'; *b = 'a'; *c = 'p'; break; + case 88: *a = 'n'; *b = 'o'; *c = 'p'; break; + case 89: *a = 's'; *b = 'o'; *c = 'm'; break; + case 90: *a = 'f'; *b = 'i'; *c = 'n'; break; + case 91: *a = 'f'; *b = 'o'; *c = 'n'; break; + case 92: *a = 'b'; *b = 'a'; *c = 'n'; break; + case 93: *a = 'm'; *b = 'o'; *c = 'r'; break; + case 94: *a = 'w'; *b = 'o'; *c = 'r'; break; + case 95: *a = 's'; *b = 'i'; *c = 'p'; break; + case 96: *a = 'r'; *b = 'o'; *c = 'n'; break; + case 97: *a = 'n'; *b = 'o'; *c = 'r'; break; + case 98: *a = 'b'; *b = 'o'; *c = 't'; break; + case 99: *a = 'w'; *b = 'i'; *c = 'c'; break; + case 100: *a = 's'; *b = 'o'; *c = 'c'; break; + case 101: *a = 'w'; *b = 'a'; *c = 't'; break; + case 102: *a = 'd'; *b = 'o'; *c = 'l'; break; + case 103: *a = 'm'; *b = 'a'; *c = 'g'; break; + case 104: *a = 'p'; *b = 'i'; *c = 'c'; break; + case 105: *a = 'd'; *b = 'a'; *c = 'v'; break; + case 106: *a = 'b'; *b = 'i'; *c = 'd'; break; + case 107: *a = 'b'; *b = 'a'; *c = 'l'; break; + case 108: *a = 't'; *b = 'i'; *c = 'm'; break; + case 109: *a = 't'; *b = 'a'; *c = 's'; break; + case 110: *a = 'm'; *b = 'a'; *c = 'l'; break; + case 111: *a = 'l'; *b = 'i'; *c = 'g'; break; + case 112: *a = 's'; *b = 'i'; *c = 'v'; break; + case 113: *a = 't'; *b = 'a'; *c = 'g'; break; + case 114: *a = 'p'; *b = 'a'; *c = 'd'; break; + case 115: *a = 's'; *b = 'a'; *c = 'l'; break; + case 116: *a = 'd'; *b = 'i'; *c = 'v'; break; + case 117: *a = 'd'; *b = 'a'; *c = 'c'; break; + case 118: *a = 't'; *b = 'a'; *c = 'n'; break; + case 119: *a = 's'; *b = 'i'; *c = 'd'; break; + case 120: *a = 'f'; *b = 'a'; *c = 'b'; break; + case 121: *a = 't'; *b = 'a'; *c = 'r'; break; + case 122: *a = 'm'; *b = 'o'; *c = 'n'; break; + case 123: *a = 'r'; *b = 'a'; *c = 'n'; break; + case 124: *a = 'n'; *b = 'i'; *c = 's'; break; + case 125: *a = 'w'; *b = 'o'; *c = 'l'; break; + case 126: *a = 'm'; *b = 'i'; *c = 's'; break; + case 127: *a = 'p'; *b = 'a'; *c = 'l'; break; + case 128: *a = 'l'; *b = 'a'; *c = 's'; break; + case 129: *a = 'd'; *b = 'i'; *c = 's'; break; + case 130: *a = 'm'; *b = 'a'; *c = 'p'; break; + case 131: *a = 'r'; *b = 'a'; *c = 'b'; break; + case 132: *a = 't'; *b = 'o'; *c = 'b'; break; + case 133: *a = 'r'; *b = 'o'; *c = 'l'; break; + case 134: *a = 'l'; *b = 'a'; *c = 't'; break; + case 135: *a = 'l'; *b = 'o'; *c = 'n'; break; + case 136: *a = 'n'; *b = 'o'; *c = 'd'; break; + case 137: *a = 'n'; *b = 'a'; *c = 'v'; break; + case 138: *a = 'f'; *b = 'i'; *c = 'g'; break; + case 139: *a = 'n'; *b = 'o'; *c = 'm'; break; + case 140: *a = 'n'; *b = 'i'; *c = 'b'; break; + case 141: *a = 'p'; *b = 'a'; *c = 'g'; break; + case 142: *a = 's'; *b = 'o'; *c = 'p'; break; + case 143: *a = 'r'; *b = 'a'; *c = 'l'; break; + case 144: *a = 'b'; *b = 'i'; *c = 'l'; break; + case 145: *a = 'h'; *b = 'a'; *c = 'd'; break; + case 146: *a = 'd'; *b = 'o'; *c = 'c'; break; + case 147: *a = 'r'; *b = 'i'; *c = 'd'; break; + case 148: *a = 'm'; *b = 'o'; *c = 'c'; break; + case 149: *a = 'p'; *b = 'a'; *c = 'c'; break; + case 150: *a = 'r'; *b = 'a'; *c = 'v'; break; + case 151: *a = 'r'; *b = 'i'; *c = 'p'; break; + case 152: *a = 'f'; *b = 'a'; *c = 'l'; break; + case 153: *a = 't'; *b = 'o'; *c = 'd'; break; + case 154: *a = 't'; *b = 'i'; *c = 'l'; break; + case 155: *a = 't'; *b = 'i'; *c = 'n'; break; + case 156: *a = 'h'; *b = 'a'; *c = 'p'; break; + case 157: *a = 'm'; *b = 'i'; *c = 'c'; break; + case 158: *a = 'f'; *b = 'a'; *c = 'n'; break; + case 159: *a = 'p'; *b = 'a'; *c = 't'; break; + case 160: *a = 't'; *b = 'a'; *c = 'c'; break; + case 161: *a = 'l'; *b = 'a'; *c = 'b'; break; + case 162: *a = 'm'; *b = 'o'; *c = 'g'; break; + case 163: *a = 's'; *b = 'i'; *c = 'm'; break; + case 164: *a = 's'; *b = 'o'; *c = 'n'; break; + case 165: *a = 'p'; *b = 'i'; *c = 'n'; break; + case 166: *a = 'l'; *b = 'o'; *c = 'm'; break; + case 167: *a = 'r'; *b = 'i'; *c = 'c'; break; + case 168: *a = 't'; *b = 'a'; *c = 'p'; break; + case 169: *a = 'f'; *b = 'i'; *c = 'r'; break; + case 170: *a = 'h'; *b = 'a'; *c = 's'; break; + case 171: *a = 'b'; *b = 'o'; *c = 's'; break; + case 172: *a = 'b'; *b = 'a'; *c = 't'; break; + case 173: *a = 'p'; *b = 'o'; *c = 'c'; break; + case 174: *a = 'h'; *b = 'a'; *c = 'c'; break; + case 175: *a = 't'; *b = 'i'; *c = 'd'; break; + case 176: *a = 'h'; *b = 'a'; *c = 'v'; break; + case 177: *a = 's'; *b = 'a'; *c = 'p'; break; + case 178: *a = 'l'; *b = 'i'; *c = 'n'; break; + case 179: *a = 'd'; *b = 'i'; *c = 'b'; break; + case 180: *a = 'h'; *b = 'o'; *c = 's'; break; + case 181: *a = 'd'; *b = 'a'; *c = 'b'; break; + case 182: *a = 'b'; *b = 'i'; *c = 't'; break; + case 183: *a = 'b'; *b = 'a'; *c = 'r'; break; + case 184: *a = 'r'; *b = 'a'; *c = 'c'; break; + case 185: *a = 'p'; *b = 'a'; *c = 'r'; break; + case 186: *a = 'l'; *b = 'o'; *c = 'd'; break; + case 187: *a = 'd'; *b = 'o'; *c = 's'; break; + case 188: *a = 'b'; *b = 'o'; *c = 'r'; break; + case 189: *a = 't'; *b = 'o'; *c = 'c'; break; + case 190: *a = 'h'; *b = 'i'; *c = 'l'; break; + case 191: *a = 'm'; *b = 'a'; *c = 'c'; break; + case 192: *a = 't'; *b = 'o'; *c = 'm'; break; + case 193: *a = 'd'; *b = 'i'; *c = 'g'; break; + case 194: *a = 'f'; *b = 'i'; *c = 'l'; break; + case 195: *a = 'f'; *b = 'a'; *c = 's'; break; + case 196: *a = 'm'; *b = 'i'; *c = 't'; break; + case 197: *a = 'h'; *b = 'o'; *c = 'b'; break; + case 198: *a = 'h'; *b = 'a'; *c = 'r'; break; + case 199: *a = 'm'; *b = 'i'; *c = 'g'; break; + case 200: *a = 'h'; *b = 'i'; *c = 'n'; break; + case 201: *a = 'r'; *b = 'a'; *c = 'd'; break; + case 202: *a = 'm'; *b = 'a'; *c = 's'; break; + case 203: *a = 'h'; *b = 'a'; *c = 'l'; break; + case 204: *a = 'r'; *b = 'a'; *c = 'g'; break; + case 205: *a = 'l'; *b = 'a'; *c = 'g'; break; + case 206: *a = 'f'; *b = 'a'; *c = 'd'; break; + case 207: *a = 't'; *b = 'o'; *c = 'p'; break; + case 208: *a = 'm'; *b = 'o'; *c = 'p'; break; + case 209: *a = 'h'; *b = 'a'; *c = 'b'; break; + case 210: *a = 'n'; *b = 'i'; *c = 'l'; break; + case 211: *a = 'n'; *b = 'o'; *c = 's'; break; + case 212: *a = 'm'; *b = 'i'; *c = 'l'; break; + case 213: *a = 'f'; *b = 'o'; *c = 'p'; break; + case 214: *a = 'f'; *b = 'a'; *c = 'm'; break; + case 215: *a = 'd'; *b = 'a'; *c = 't'; break; + case 216: *a = 'n'; *b = 'o'; *c = 'l'; break; + case 217: *a = 'd'; *b = 'i'; *c = 'n'; break; + case 218: *a = 'h'; *b = 'a'; *c = 't'; break; + case 219: *a = 'n'; *b = 'a'; *c = 'c'; break; + case 220: *a = 'r'; *b = 'i'; *c = 's'; break; + case 221: *a = 'f'; *b = 'o'; *c = 't'; break; + case 222: *a = 'r'; *b = 'i'; *c = 'b'; break; + case 223: *a = 'h'; *b = 'o'; *c = 'c'; break; + case 224: *a = 'n'; *b = 'i'; *c = 'm'; break; + case 225: *a = 'l'; *b = 'a'; *c = 'r'; break; + case 226: *a = 'f'; *b = 'i'; *c = 't'; break; + case 227: *a = 'w'; *b = 'a'; *c = 'l'; break; + case 228: *a = 'r'; *b = 'a'; *c = 'p'; break; + case 229: *a = 's'; *b = 'a'; *c = 'r'; break; + case 230: *a = 'n'; *b = 'a'; *c = 'l'; break; + case 231: *a = 'm'; *b = 'o'; *c = 's'; break; + case 232: *a = 'l'; *b = 'a'; *c = 'n'; break; + case 233: *a = 'd'; *b = 'o'; *c = 'n'; break; + case 234: *a = 'd'; *b = 'a'; *c = 'n'; break; + case 235: *a = 'l'; *b = 'a'; *c = 'd'; break; + case 236: *a = 'd'; *b = 'o'; *c = 'v'; break; + case 237: *a = 'r'; *b = 'i'; *c = 'v'; break; + case 238: *a = 'b'; *b = 'a'; *c = 'c'; break; + case 239: *a = 'p'; *b = 'o'; *c = 'l'; break; + case 240: *a = 'l'; *b = 'a'; *c = 'p'; break; + case 241: *a = 't'; *b = 'a'; *c = 'l'; break; + case 242: *a = 'p'; *b = 'i'; *c = 't'; break; + case 243: *a = 'n'; *b = 'a'; *c = 'm'; break; + case 244: *a = 'b'; *b = 'o'; *c = 'n'; break; + case 245: *a = 'r'; *b = 'o'; *c = 's'; break; + case 246: *a = 't'; *b = 'o'; *c = 'n'; break; + case 247: *a = 'f'; *b = 'o'; *c = 'd'; break; + case 248: *a = 'p'; *b = 'o'; *c = 'n'; break; + case 249: *a = 's'; *b = 'o'; *c = 'v'; break; + case 250: *a = 'n'; *b = 'o'; *c = 'c'; break; + case 251: *a = 's'; *b = 'o'; *c = 'r'; break; + case 252: *a = 'l'; *b = 'a'; *c = 'v'; break; + case 253: *a = 'm'; *b = 'a'; *c = 't'; break; + case 254: *a = 'm'; *b = 'i'; *c = 'p'; break; + case 255: *a = 'f'; *b = 'i'; *c = 'p'; break; + default: u3m_bail(c3__exit); + } +} + +u3_noun +u3_po_find_suffix(c3_y one, c3_y two, c3_y three) { + switch (one) { + case 'b': switch (two) { + case 'e': switch (three) { + case 'c': return u3nc(0, 238); + case 'l': return u3nc(0, 107); + case 'n': return u3nc(0, 92); + case 'p': return u3nc(0, 183); + case 'r': return u3nc(0, 172); + case 's': return u3nc(0, 56); + case 't': return u3nc(0, 106); + case 'x': return u3nc(0, 144); + default: return 0; + } + case 'u': switch (three) { + case 'd': return u3nc(0, 2); + case 'r': return u3nc(0, 60); + case 's': return u3nc(0, 182); + default: return 0; + } + case 'y': switch (three) { + case 'l': return u3nc(0, 176); + case 'n': return u3nc(0, 45); + case 'r': return u3nc(0, 244); + case 't': return u3nc(0, 188); + default: return 0; + } + default: return 0; + } + case 'd': switch (two) { + case 'e': switch (three) { + case 'b': return u3nc(0, 171); + case 'c': return u3nc(0, 98); + case 'f': return u3nc(0, 181); + case 'g': return u3nc(0, 117); + case 'l': return u3nc(0, 37); + case 'm': return u3nc(0, 234); + case 'n': return u3nc(0, 66); + case 'p': return u3nc(0, 23); + case 'r': return u3nc(0, 61); + case 's': return u3nc(0, 215); + case 't': return u3nc(0, 105); + case 'v': return u3nc(0, 179); + case 'x': return u3nc(0, 57); + default: return 0; + } + case 'u': switch (three) { + case 'c': return u3nc(0, 193); + case 'l': return u3nc(0, 49); + case 'n': return u3nc(0, 217); + case 'r': return u3nc(0, 11); + case 's': return u3nc(0, 129); + case 't': return u3nc(0, 116); + case 'x': return u3nc(0, 146); + default: return 0; + } + case 'y': switch (three) { + case 'l': return u3nc(0, 102); + case 'n': return u3nc(0, 233); + case 'r': return u3nc(0, 18); + case 's': return u3nc(0, 24); + case 't': return u3nc(0, 187); + default: return 0; + } + default: return 0; + } + case 'f': switch (two) { + case 'e': switch (three) { + case 'b': return u3nc(0, 47); + case 'd': return u3nc(0, 236); + case 'l': return u3nc(0, 120); + case 'n': return u3nc(0, 206); + case 'p': return u3nc(0, 152); + case 'r': return u3nc(0, 158); + case 's': return u3nc(0, 255); + case 't': return u3nc(0, 214); + case 'x': return u3nc(0, 195); + default: return 0; + } + case 'u': switch (three) { + case 'l': return u3nc(0, 8); + case 'n': return u3nc(0, 138); + case 'r': return u3nc(0, 194); + case 's': return u3nc(0, 90); + default: return 0; + } + case 'y': switch (three) { + case 'l': return u3nc(0, 169); + case 'n': return u3nc(0, 226); + case 'r': return u3nc(0, 247); + default: return 0; + } + default: return 0; + } + case 'h': switch (two) { + case 'e': switch (three) { + case 'b': return u3nc(0, 20); + case 'c': return u3nc(0, 27); + case 'p': return u3nc(0, 91); + case 's': return u3nc(0, 213); + case 't': return u3nc(0, 50); + case 'x': return u3nc(0, 46); + default: return 0; + } + case 'u': switch (three) { + case 'l': return u3nc(0, 221); + case 's': return u3nc(0, 209); + case 't': return u3nc(0, 174); + default: return 0; + } + default: return 0; + } + case 'l': switch (two) { + case 'e': switch (three) { + case 'b': return u3nc(0, 145); + case 'c': return u3nc(0, 203); + case 'd': return u3nc(0, 41); + case 'g': return u3nc(0, 156); + case 'n': return u3nc(0, 198); + case 'p': return u3nc(0, 170); + case 'r': return u3nc(0, 218); + case 't': return u3nc(0, 7); + case 'v': return u3nc(0, 190); + case 'x': return u3nc(0, 200); + default: return 0; + } + case 'u': switch (three) { + case 'c': return u3nc(0, 197); + case 'd': return u3nc(0, 223); + case 'g': return u3nc(0, 26); + case 'n': return u3nc(0, 32); + case 'p': return u3nc(0, 22); + case 'r': return u3nc(0, 180); + case 's': return u3nc(0, 161); + case 't': return u3nc(0, 34); + case 'x': return u3nc(0, 235); + default: return 0; + } + case 'y': switch (three) { + case 'd': return u3nc(0, 205); + case 'n': return u3nc(0, 232); + case 'r': return u3nc(0, 240); + case 's': return u3nc(0, 225); + case 't': return u3nc(0, 128); + case 'x': return u3nc(0, 134); + default: return 0; + } + default: return 0; + } + case 'm': switch (two) { + case 'e': switch (three) { + case 'b': return u3nc(0, 114); + case 'c': return u3nc(0, 141); + case 'd': return u3nc(0, 127); + case 'g': return u3nc(0, 78); + case 'l': return u3nc(0, 185); + case 'p': return u3nc(0, 33); + case 'r': return u3nc(0, 159); + case 's': return u3nc(0, 104); + case 't': return u3nc(0, 43); + case 'v': return u3nc(0, 51); + case 'x': return u3nc(0, 165); + default: return 0; + } + case 'u': switch (three) { + case 'd': return u3nc(0, 242); + case 'g': return u3nc(0, 173); + case 'l': return u3nc(0, 81); + case 'n': return u3nc(0, 239); + case 'r': return u3nc(0, 248); + case 's': return u3nc(0, 93); + case 't': return u3nc(0, 86); + default: return 0; + } + case 'y': switch (three) { + case 'l': return u3nc(0, 191); + case 'n': return u3nc(0, 103); + case 'r': return u3nc(0, 110); + default: return 0; + } + default: return 0; + } + case 'n': switch (two) { + case 'e': switch (three) { + case 'b': return u3nc(0, 130); + case 'c': return u3nc(0, 1); + case 'd': return u3nc(0, 202); + case 'l': return u3nc(0, 253); + case 'm': return u3nc(0, 157); + case 'p': return u3nc(0, 62); + case 'r': return u3nc(0, 199); + case 's': return u3nc(0, 212); + case 't': return u3nc(0, 79); + case 'v': return u3nc(0, 254); + case 'x': return u3nc(0, 31); + default: return 0; + } + case 'u': switch (three) { + case 'b': return u3nc(0, 126); + case 'l': return u3nc(0, 196); + case 'm': return u3nc(0, 148); + case 'p': return u3nc(0, 19); + case 's': return u3nc(0, 162); + case 't': return u3nc(0, 67); + case 'x': return u3nc(0, 122); + default: return 0; + } + case 'y': switch (three) { + case 'd': return u3nc(0, 208); + case 'l': return u3nc(0, 231); + case 'm': return u3nc(0, 82); + case 'r': return u3nc(0, 219); + case 's': return u3nc(0, 230); + case 't': return u3nc(0, 243); + case 'x': return u3nc(0, 87); + default: return 0; + } + default: return 0; + } + case 'p': switch (two) { + case 'e': switch (three) { + case 'c': return u3nc(0, 252); + case 'd': return u3nc(0, 39); + case 'g': return u3nc(0, 21); + case 'l': return u3nc(0, 111); + case 'm': return u3nc(0, 178); + case 'n': return u3nc(0, 9); + case 'r': return u3nc(0, 5); + case 's': return u3nc(0, 36); + case 't': return u3nc(0, 69); + case 'x': return u3nc(0, 186); + default: return 0; + } + case 'u': switch (three) { + case 'b': return u3nc(0, 166); + case 'n': return u3nc(0, 135); + case 'r': return u3nc(0, 63); + case 't': return u3nc(0, 25); + default: return 0; + } + case 'y': switch (three) { + case 'l': return u3nc(0, 48); + case 'x': return u3nc(0, 149); + default: return 0; + } + default: return 0; + } + case 'r': switch (two) { + case 'e': switch (three) { + case 'b': return u3nc(0, 65); + case 'c': return u3nc(0, 77); + case 'd': return u3nc(0, 137); + case 'f': return u3nc(0, 140); + case 'g': return u3nc(0, 72); + case 'l': return u3nc(0, 210); + case 'm': return u3nc(0, 224); + case 'n': return u3nc(0, 124); + case 'p': return u3nc(0, 250); + case 's': return u3nc(0, 136); + case 't': return u3nc(0, 216); + case 'v': return u3nc(0, 139); + case 'x': return u3nc(0, 88); + default: return 0; + } + case 'u': switch (three) { + case 'c': return u3nc(0, 97); + case 'd': return u3nc(0, 211); + case 'l': return u3nc(0, 70); + case 'm': return u3nc(0, 131); + case 'n': return u3nc(0, 184); + case 'p': return u3nc(0, 201); + case 's': return u3nc(0, 143); + case 't': return u3nc(0, 52); + case 'x': return u3nc(0, 123); + default: return 0; + } + case 'y': switch (three) { + case 'c': return u3nc(0, 228); + case 'd': return u3nc(0, 204); + case 'g': return u3nc(0, 150); + case 'l': return u3nc(0, 222); + case 'm': return u3nc(0, 167); + case 'n': return u3nc(0, 147); + case 'p': return u3nc(0, 16); + case 's': return u3nc(0, 64); + case 't': return u3nc(0, 28); + case 'x': return u3nc(0, 151); + default: return 0; + } + default: return 0; + } + case 's': switch (two) { + case 'e': switch (three) { + case 'b': return u3nc(0, 220); + case 'c': return u3nc(0, 80); + case 'd': return u3nc(0, 237); + case 'f': return u3nc(0, 58); + case 'g': return u3nc(0, 133); + case 'l': return u3nc(0, 96); + case 'm': return u3nc(0, 75); + case 'n': return u3nc(0, 245); + case 'p': return u3nc(0, 35); + case 'r': return u3nc(0, 13); + case 't': return u3nc(0, 115); + case 'v': return u3nc(0, 4); + default: return 0; + } + case 'u': switch (three) { + case 'b': return u3nc(0, 68); + case 'd': return u3nc(0, 177); + case 'g': return u3nc(0, 229); + case 'l': return u3nc(0, 38); + case 'm': return u3nc(0, 85); + case 'n': return u3nc(0, 15); + case 'p': return u3nc(0, 74); + case 'r': return u3nc(0, 119); + case 't': return u3nc(0, 6); + default: return 0; + } + case 'y': switch (three) { + case 'd': return u3nc(0, 30); + case 'l': return u3nc(0, 163); + case 'm': return u3nc(0, 95); + case 'n': return u3nc(0, 71); + case 'p': return u3nc(0, 112); + case 'r': return u3nc(0, 100); + case 't': return u3nc(0, 10); + case 'x': return u3nc(0, 17); + default: return 0; + } + default: return 0; + } + case 't': switch (two) { + case 'e': switch (three) { + case 'b': return u3nc(0, 89); + case 'c': return u3nc(0, 164); + case 'd': return u3nc(0, 142); + case 'g': return u3nc(0, 251); + case 'l': return u3nc(0, 249); + case 'm': return u3nc(0, 40); + case 'n': return u3nc(0, 160); + case 'p': return u3nc(0, 55); + case 'r': return u3nc(0, 113); + case 's': return u3nc(0, 241); + case 'v': return u3nc(0, 83); + case 'x': return u3nc(0, 118); + default: return 0; + } + case 'u': switch (three) { + case 'c': return u3nc(0, 168); + case 'd': return u3nc(0, 121); + case 'g': return u3nc(0, 109); + case 'l': return u3nc(0, 42); + case 'n': return u3nc(0, 175); + case 's': return u3nc(0, 154); + case 'x': return u3nc(0, 108); + default: return 0; + } + case 'y': switch (three) { + case 'c': return u3nc(0, 155); + case 'd': return u3nc(0, 73); + case 'l': return u3nc(0, 53); + case 'n': return u3nc(0, 132); + case 'p': return u3nc(0, 189); + case 'r': return u3nc(0, 153); + case 'v': return u3nc(0, 29); + default: return 0; + } + default: return 0; + } + case 'w': switch (two) { + case 'e': switch (three) { + case 'b': return u3nc(0, 84); + case 'd': return u3nc(0, 192); + case 'g': return u3nc(0, 246); + case 'l': return u3nc(0, 207); + case 'n': return u3nc(0, 44); + case 'p': return u3nc(0, 12); + case 'r': return u3nc(0, 227); + case 's': return u3nc(0, 3); + case 't': return u3nc(0, 101); + case 'x': return u3nc(0, 99); + default: return 0; + } + case 'y': switch (three) { + case 'c': return u3nc(0, 59); + case 'd': return u3nc(0, 54); + case 'l': return u3nc(0, 14); + case 'n': return u3nc(0, 76); + case 't': return u3nc(0, 125); + case 'x': return u3nc(0, 94); + default: return 0; + } + default: return 0; + } + case 'z': switch (two) { + case 'o': switch (three) { + case 'd': return u3nc(0, 0); + default: return 0; + } + default: return 0; + } + default: return 0; + } +} + +void +u3_po_to_suffix(u3_noun id, c3_y* a, c3_y* b, c3_y* c) +{ + switch (id) { + case 0: *a = 'z'; *b = 'o'; *c = 'd'; break; + case 1: *a = 'n'; *b = 'e'; *c = 'c'; break; + case 2: *a = 'b'; *b = 'u'; *c = 'd'; break; + case 3: *a = 'w'; *b = 'e'; *c = 's'; break; + case 4: *a = 's'; *b = 'e'; *c = 'v'; break; + case 5: *a = 'p'; *b = 'e'; *c = 'r'; break; + case 6: *a = 's'; *b = 'u'; *c = 't'; break; + case 7: *a = 'l'; *b = 'e'; *c = 't'; break; + case 8: *a = 'f'; *b = 'u'; *c = 'l'; break; + case 9: *a = 'p'; *b = 'e'; *c = 'n'; break; + case 10: *a = 's'; *b = 'y'; *c = 't'; break; + case 11: *a = 'd'; *b = 'u'; *c = 'r'; break; + case 12: *a = 'w'; *b = 'e'; *c = 'p'; break; + case 13: *a = 's'; *b = 'e'; *c = 'r'; break; + case 14: *a = 'w'; *b = 'y'; *c = 'l'; break; + case 15: *a = 's'; *b = 'u'; *c = 'n'; break; + case 16: *a = 'r'; *b = 'y'; *c = 'p'; break; + case 17: *a = 's'; *b = 'y'; *c = 'x'; break; + case 18: *a = 'd'; *b = 'y'; *c = 'r'; break; + case 19: *a = 'n'; *b = 'u'; *c = 'p'; break; + case 20: *a = 'h'; *b = 'e'; *c = 'b'; break; + case 21: *a = 'p'; *b = 'e'; *c = 'g'; break; + case 22: *a = 'l'; *b = 'u'; *c = 'p'; break; + case 23: *a = 'd'; *b = 'e'; *c = 'p'; break; + case 24: *a = 'd'; *b = 'y'; *c = 's'; break; + case 25: *a = 'p'; *b = 'u'; *c = 't'; break; + case 26: *a = 'l'; *b = 'u'; *c = 'g'; break; + case 27: *a = 'h'; *b = 'e'; *c = 'c'; break; + case 28: *a = 'r'; *b = 'y'; *c = 't'; break; + case 29: *a = 't'; *b = 'y'; *c = 'v'; break; + case 30: *a = 's'; *b = 'y'; *c = 'd'; break; + case 31: *a = 'n'; *b = 'e'; *c = 'x'; break; + case 32: *a = 'l'; *b = 'u'; *c = 'n'; break; + case 33: *a = 'm'; *b = 'e'; *c = 'p'; break; + case 34: *a = 'l'; *b = 'u'; *c = 't'; break; + case 35: *a = 's'; *b = 'e'; *c = 'p'; break; + case 36: *a = 'p'; *b = 'e'; *c = 's'; break; + case 37: *a = 'd'; *b = 'e'; *c = 'l'; break; + case 38: *a = 's'; *b = 'u'; *c = 'l'; break; + case 39: *a = 'p'; *b = 'e'; *c = 'd'; break; + case 40: *a = 't'; *b = 'e'; *c = 'm'; break; + case 41: *a = 'l'; *b = 'e'; *c = 'd'; break; + case 42: *a = 't'; *b = 'u'; *c = 'l'; break; + case 43: *a = 'm'; *b = 'e'; *c = 't'; break; + case 44: *a = 'w'; *b = 'e'; *c = 'n'; break; + case 45: *a = 'b'; *b = 'y'; *c = 'n'; break; + case 46: *a = 'h'; *b = 'e'; *c = 'x'; break; + case 47: *a = 'f'; *b = 'e'; *c = 'b'; break; + case 48: *a = 'p'; *b = 'y'; *c = 'l'; break; + case 49: *a = 'd'; *b = 'u'; *c = 'l'; break; + case 50: *a = 'h'; *b = 'e'; *c = 't'; break; + case 51: *a = 'm'; *b = 'e'; *c = 'v'; break; + case 52: *a = 'r'; *b = 'u'; *c = 't'; break; + case 53: *a = 't'; *b = 'y'; *c = 'l'; break; + case 54: *a = 'w'; *b = 'y'; *c = 'd'; break; + case 55: *a = 't'; *b = 'e'; *c = 'p'; break; + case 56: *a = 'b'; *b = 'e'; *c = 's'; break; + case 57: *a = 'd'; *b = 'e'; *c = 'x'; break; + case 58: *a = 's'; *b = 'e'; *c = 'f'; break; + case 59: *a = 'w'; *b = 'y'; *c = 'c'; break; + case 60: *a = 'b'; *b = 'u'; *c = 'r'; break; + case 61: *a = 'd'; *b = 'e'; *c = 'r'; break; + case 62: *a = 'n'; *b = 'e'; *c = 'p'; break; + case 63: *a = 'p'; *b = 'u'; *c = 'r'; break; + case 64: *a = 'r'; *b = 'y'; *c = 's'; break; + case 65: *a = 'r'; *b = 'e'; *c = 'b'; break; + case 66: *a = 'd'; *b = 'e'; *c = 'n'; break; + case 67: *a = 'n'; *b = 'u'; *c = 't'; break; + case 68: *a = 's'; *b = 'u'; *c = 'b'; break; + case 69: *a = 'p'; *b = 'e'; *c = 't'; break; + case 70: *a = 'r'; *b = 'u'; *c = 'l'; break; + case 71: *a = 's'; *b = 'y'; *c = 'n'; break; + case 72: *a = 'r'; *b = 'e'; *c = 'g'; break; + case 73: *a = 't'; *b = 'y'; *c = 'd'; break; + case 74: *a = 's'; *b = 'u'; *c = 'p'; break; + case 75: *a = 's'; *b = 'e'; *c = 'm'; break; + case 76: *a = 'w'; *b = 'y'; *c = 'n'; break; + case 77: *a = 'r'; *b = 'e'; *c = 'c'; break; + case 78: *a = 'm'; *b = 'e'; *c = 'g'; break; + case 79: *a = 'n'; *b = 'e'; *c = 't'; break; + case 80: *a = 's'; *b = 'e'; *c = 'c'; break; + case 81: *a = 'm'; *b = 'u'; *c = 'l'; break; + case 82: *a = 'n'; *b = 'y'; *c = 'm'; break; + case 83: *a = 't'; *b = 'e'; *c = 'v'; break; + case 84: *a = 'w'; *b = 'e'; *c = 'b'; break; + case 85: *a = 's'; *b = 'u'; *c = 'm'; break; + case 86: *a = 'm'; *b = 'u'; *c = 't'; break; + case 87: *a = 'n'; *b = 'y'; *c = 'x'; break; + case 88: *a = 'r'; *b = 'e'; *c = 'x'; break; + case 89: *a = 't'; *b = 'e'; *c = 'b'; break; + case 90: *a = 'f'; *b = 'u'; *c = 's'; break; + case 91: *a = 'h'; *b = 'e'; *c = 'p'; break; + case 92: *a = 'b'; *b = 'e'; *c = 'n'; break; + case 93: *a = 'm'; *b = 'u'; *c = 's'; break; + case 94: *a = 'w'; *b = 'y'; *c = 'x'; break; + case 95: *a = 's'; *b = 'y'; *c = 'm'; break; + case 96: *a = 's'; *b = 'e'; *c = 'l'; break; + case 97: *a = 'r'; *b = 'u'; *c = 'c'; break; + case 98: *a = 'd'; *b = 'e'; *c = 'c'; break; + case 99: *a = 'w'; *b = 'e'; *c = 'x'; break; + case 100: *a = 's'; *b = 'y'; *c = 'r'; break; + case 101: *a = 'w'; *b = 'e'; *c = 't'; break; + case 102: *a = 'd'; *b = 'y'; *c = 'l'; break; + case 103: *a = 'm'; *b = 'y'; *c = 'n'; break; + case 104: *a = 'm'; *b = 'e'; *c = 's'; break; + case 105: *a = 'd'; *b = 'e'; *c = 't'; break; + case 106: *a = 'b'; *b = 'e'; *c = 't'; break; + case 107: *a = 'b'; *b = 'e'; *c = 'l'; break; + case 108: *a = 't'; *b = 'u'; *c = 'x'; break; + case 109: *a = 't'; *b = 'u'; *c = 'g'; break; + case 110: *a = 'm'; *b = 'y'; *c = 'r'; break; + case 111: *a = 'p'; *b = 'e'; *c = 'l'; break; + case 112: *a = 's'; *b = 'y'; *c = 'p'; break; + case 113: *a = 't'; *b = 'e'; *c = 'r'; break; + case 114: *a = 'm'; *b = 'e'; *c = 'b'; break; + case 115: *a = 's'; *b = 'e'; *c = 't'; break; + case 116: *a = 'd'; *b = 'u'; *c = 't'; break; + case 117: *a = 'd'; *b = 'e'; *c = 'g'; break; + case 118: *a = 't'; *b = 'e'; *c = 'x'; break; + case 119: *a = 's'; *b = 'u'; *c = 'r'; break; + case 120: *a = 'f'; *b = 'e'; *c = 'l'; break; + case 121: *a = 't'; *b = 'u'; *c = 'd'; break; + case 122: *a = 'n'; *b = 'u'; *c = 'x'; break; + case 123: *a = 'r'; *b = 'u'; *c = 'x'; break; + case 124: *a = 'r'; *b = 'e'; *c = 'n'; break; + case 125: *a = 'w'; *b = 'y'; *c = 't'; break; + case 126: *a = 'n'; *b = 'u'; *c = 'b'; break; + case 127: *a = 'm'; *b = 'e'; *c = 'd'; break; + case 128: *a = 'l'; *b = 'y'; *c = 't'; break; + case 129: *a = 'd'; *b = 'u'; *c = 's'; break; + case 130: *a = 'n'; *b = 'e'; *c = 'b'; break; + case 131: *a = 'r'; *b = 'u'; *c = 'm'; break; + case 132: *a = 't'; *b = 'y'; *c = 'n'; break; + case 133: *a = 's'; *b = 'e'; *c = 'g'; break; + case 134: *a = 'l'; *b = 'y'; *c = 'x'; break; + case 135: *a = 'p'; *b = 'u'; *c = 'n'; break; + case 136: *a = 'r'; *b = 'e'; *c = 's'; break; + case 137: *a = 'r'; *b = 'e'; *c = 'd'; break; + case 138: *a = 'f'; *b = 'u'; *c = 'n'; break; + case 139: *a = 'r'; *b = 'e'; *c = 'v'; break; + case 140: *a = 'r'; *b = 'e'; *c = 'f'; break; + case 141: *a = 'm'; *b = 'e'; *c = 'c'; break; + case 142: *a = 't'; *b = 'e'; *c = 'd'; break; + case 143: *a = 'r'; *b = 'u'; *c = 's'; break; + case 144: *a = 'b'; *b = 'e'; *c = 'x'; break; + case 145: *a = 'l'; *b = 'e'; *c = 'b'; break; + case 146: *a = 'd'; *b = 'u'; *c = 'x'; break; + case 147: *a = 'r'; *b = 'y'; *c = 'n'; break; + case 148: *a = 'n'; *b = 'u'; *c = 'm'; break; + case 149: *a = 'p'; *b = 'y'; *c = 'x'; break; + case 150: *a = 'r'; *b = 'y'; *c = 'g'; break; + case 151: *a = 'r'; *b = 'y'; *c = 'x'; break; + case 152: *a = 'f'; *b = 'e'; *c = 'p'; break; + case 153: *a = 't'; *b = 'y'; *c = 'r'; break; + case 154: *a = 't'; *b = 'u'; *c = 's'; break; + case 155: *a = 't'; *b = 'y'; *c = 'c'; break; + case 156: *a = 'l'; *b = 'e'; *c = 'g'; break; + case 157: *a = 'n'; *b = 'e'; *c = 'm'; break; + case 158: *a = 'f'; *b = 'e'; *c = 'r'; break; + case 159: *a = 'm'; *b = 'e'; *c = 'r'; break; + case 160: *a = 't'; *b = 'e'; *c = 'n'; break; + case 161: *a = 'l'; *b = 'u'; *c = 's'; break; + case 162: *a = 'n'; *b = 'u'; *c = 's'; break; + case 163: *a = 's'; *b = 'y'; *c = 'l'; break; + case 164: *a = 't'; *b = 'e'; *c = 'c'; break; + case 165: *a = 'm'; *b = 'e'; *c = 'x'; break; + case 166: *a = 'p'; *b = 'u'; *c = 'b'; break; + case 167: *a = 'r'; *b = 'y'; *c = 'm'; break; + case 168: *a = 't'; *b = 'u'; *c = 'c'; break; + case 169: *a = 'f'; *b = 'y'; *c = 'l'; break; + case 170: *a = 'l'; *b = 'e'; *c = 'p'; break; + case 171: *a = 'd'; *b = 'e'; *c = 'b'; break; + case 172: *a = 'b'; *b = 'e'; *c = 'r'; break; + case 173: *a = 'm'; *b = 'u'; *c = 'g'; break; + case 174: *a = 'h'; *b = 'u'; *c = 't'; break; + case 175: *a = 't'; *b = 'u'; *c = 'n'; break; + case 176: *a = 'b'; *b = 'y'; *c = 'l'; break; + case 177: *a = 's'; *b = 'u'; *c = 'd'; break; + case 178: *a = 'p'; *b = 'e'; *c = 'm'; break; + case 179: *a = 'd'; *b = 'e'; *c = 'v'; break; + case 180: *a = 'l'; *b = 'u'; *c = 'r'; break; + case 181: *a = 'd'; *b = 'e'; *c = 'f'; break; + case 182: *a = 'b'; *b = 'u'; *c = 's'; break; + case 183: *a = 'b'; *b = 'e'; *c = 'p'; break; + case 184: *a = 'r'; *b = 'u'; *c = 'n'; break; + case 185: *a = 'm'; *b = 'e'; *c = 'l'; break; + case 186: *a = 'p'; *b = 'e'; *c = 'x'; break; + case 187: *a = 'd'; *b = 'y'; *c = 't'; break; + case 188: *a = 'b'; *b = 'y'; *c = 't'; break; + case 189: *a = 't'; *b = 'y'; *c = 'p'; break; + case 190: *a = 'l'; *b = 'e'; *c = 'v'; break; + case 191: *a = 'm'; *b = 'y'; *c = 'l'; break; + case 192: *a = 'w'; *b = 'e'; *c = 'd'; break; + case 193: *a = 'd'; *b = 'u'; *c = 'c'; break; + case 194: *a = 'f'; *b = 'u'; *c = 'r'; break; + case 195: *a = 'f'; *b = 'e'; *c = 'x'; break; + case 196: *a = 'n'; *b = 'u'; *c = 'l'; break; + case 197: *a = 'l'; *b = 'u'; *c = 'c'; break; + case 198: *a = 'l'; *b = 'e'; *c = 'n'; break; + case 199: *a = 'n'; *b = 'e'; *c = 'r'; break; + case 200: *a = 'l'; *b = 'e'; *c = 'x'; break; + case 201: *a = 'r'; *b = 'u'; *c = 'p'; break; + case 202: *a = 'n'; *b = 'e'; *c = 'd'; break; + case 203: *a = 'l'; *b = 'e'; *c = 'c'; break; + case 204: *a = 'r'; *b = 'y'; *c = 'd'; break; + case 205: *a = 'l'; *b = 'y'; *c = 'd'; break; + case 206: *a = 'f'; *b = 'e'; *c = 'n'; break; + case 207: *a = 'w'; *b = 'e'; *c = 'l'; break; + case 208: *a = 'n'; *b = 'y'; *c = 'd'; break; + case 209: *a = 'h'; *b = 'u'; *c = 's'; break; + case 210: *a = 'r'; *b = 'e'; *c = 'l'; break; + case 211: *a = 'r'; *b = 'u'; *c = 'd'; break; + case 212: *a = 'n'; *b = 'e'; *c = 's'; break; + case 213: *a = 'h'; *b = 'e'; *c = 's'; break; + case 214: *a = 'f'; *b = 'e'; *c = 't'; break; + case 215: *a = 'd'; *b = 'e'; *c = 's'; break; + case 216: *a = 'r'; *b = 'e'; *c = 't'; break; + case 217: *a = 'd'; *b = 'u'; *c = 'n'; break; + case 218: *a = 'l'; *b = 'e'; *c = 'r'; break; + case 219: *a = 'n'; *b = 'y'; *c = 'r'; break; + case 220: *a = 's'; *b = 'e'; *c = 'b'; break; + case 221: *a = 'h'; *b = 'u'; *c = 'l'; break; + case 222: *a = 'r'; *b = 'y'; *c = 'l'; break; + case 223: *a = 'l'; *b = 'u'; *c = 'd'; break; + case 224: *a = 'r'; *b = 'e'; *c = 'm'; break; + case 225: *a = 'l'; *b = 'y'; *c = 's'; break; + case 226: *a = 'f'; *b = 'y'; *c = 'n'; break; + case 227: *a = 'w'; *b = 'e'; *c = 'r'; break; + case 228: *a = 'r'; *b = 'y'; *c = 'c'; break; + case 229: *a = 's'; *b = 'u'; *c = 'g'; break; + case 230: *a = 'n'; *b = 'y'; *c = 's'; break; + case 231: *a = 'n'; *b = 'y'; *c = 'l'; break; + case 232: *a = 'l'; *b = 'y'; *c = 'n'; break; + case 233: *a = 'd'; *b = 'y'; *c = 'n'; break; + case 234: *a = 'd'; *b = 'e'; *c = 'm'; break; + case 235: *a = 'l'; *b = 'u'; *c = 'x'; break; + case 236: *a = 'f'; *b = 'e'; *c = 'd'; break; + case 237: *a = 's'; *b = 'e'; *c = 'd'; break; + case 238: *a = 'b'; *b = 'e'; *c = 'c'; break; + case 239: *a = 'm'; *b = 'u'; *c = 'n'; break; + case 240: *a = 'l'; *b = 'y'; *c = 'r'; break; + case 241: *a = 't'; *b = 'e'; *c = 's'; break; + case 242: *a = 'm'; *b = 'u'; *c = 'd'; break; + case 243: *a = 'n'; *b = 'y'; *c = 't'; break; + case 244: *a = 'b'; *b = 'y'; *c = 'r'; break; + case 245: *a = 's'; *b = 'e'; *c = 'n'; break; + case 246: *a = 'w'; *b = 'e'; *c = 'g'; break; + case 247: *a = 'f'; *b = 'y'; *c = 'r'; break; + case 248: *a = 'm'; *b = 'u'; *c = 'r'; break; + case 249: *a = 't'; *b = 'e'; *c = 'l'; break; + case 250: *a = 'r'; *b = 'e'; *c = 'p'; break; + case 251: *a = 't'; *b = 'e'; *c = 'g'; break; + case 252: *a = 'p'; *b = 'e'; *c = 'c'; break; + case 253: *a = 'n'; *b = 'e'; *c = 'l'; break; + case 254: *a = 'n'; *b = 'e'; *c = 'v'; break; + case 255: *a = 'f'; *b = 'e'; *c = 's'; break; + default: u3m_bail(c3__exit); + } +} + +u3_noun +u3qc_po_ins(u3_noun a) +{ + c3_y byt_y[3]; + u3r_bytes(0, 3, byt_y, a); + + return u3_po_find_prefix(byt_y[0], byt_y[1], byt_y[2]); +} + +u3_noun +u3wcp_ins(u3_noun cor) +{ + u3_noun a; + u3x_mean(cor, u3x_sam, &a, 0); + + if ( c3n == u3ud(a) ) { + return u3m_bail(c3__fail); + } + + return u3qc_po_ins(a); +} + +u3_noun +u3qc_po_ind(u3_noun a) +{ + c3_y byt_y[3]; + u3r_bytes(0, 3, byt_y, a); + + return u3_po_find_suffix(byt_y[0], byt_y[1], byt_y[2]); +} + +u3_noun +u3wcp_ind(u3_noun cor) +{ + u3_noun a; + u3x_mean(cor, u3x_sam, &a, 0); + + if ( c3n == u3ud(a) ) { + return u3m_bail(c3__fail); + } + + return u3qc_po_ind(a); +} + +u3_noun +u3wcp_tos(u3_noun cor) +{ + u3_noun a; + + if ( (c3n == u3r_mean(cor, u3x_sam, &a, 0)) || + (c3n == u3ud(a)) || + (a >= 256) ) + { + return u3m_bail(c3__exit); + } + else { + c3_y byt_y[3]; + u3_po_to_prefix(a, &byt_y[0], &byt_y[1], &byt_y[2]); + return (byt_y[0] | (byt_y[1] << 8) | (byt_y[2] << 16)); + } +} + +u3_noun +u3wcp_tod(u3_noun cor) +{ + u3_noun a; + + if ( (c3n == u3r_mean(cor, u3x_sam, &a, 0)) || + (c3n == u3ud(a)) || + (a >= 256) ) + { + return u3m_bail(c3__exit); + } else { + c3_y byt_y[3]; + u3_po_to_suffix(a, &byt_y[0], &byt_y[1], &byt_y[2]); + return (byt_y[0] | (byt_y[1] << 8) | (byt_y[2] << 16)); + } +} diff --git a/vere/pkg/noun/jets/c/pow.c b/vere/pkg/noun/jets/c/pow.c new file mode 100644 index 0000000..8d45fc8 --- /dev/null +++ b/vere/pkg/noun/jets/c/pow.c @@ -0,0 +1,38 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_pow(u3_atom a, + u3_atom b) + { + if ( !_(u3a_is_cat(b)) ) { + return u3m_bail(c3__fail); + } + else { + mpz_t a_mp; + + u3r_mp(a_mp, a); + mpz_pow_ui(a_mp, a_mp, b); + + return u3i_mp(a_mp); + } + } + u3_noun + u3wc_pow(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) ) + { + return u3m_bail(c3__exit); + } else { + return u3qc_pow(a, b); + } + } + diff --git a/vere/pkg/noun/jets/c/rap.c b/vere/pkg/noun/jets/c/rap.c new file mode 100644 index 0000000..4c95693 --- /dev/null +++ b/vere/pkg/noun/jets/c/rap.c @@ -0,0 +1,88 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_rap(u3_atom a, + u3_noun b) + { + if ( !_(u3a_is_cat(a)) || (a >= 32) ) { + return u3m_bail(c3__fail); + } + else { + c3_g a_g = a; + c3_w tot_w = 0; + u3i_slab sab_u; + + /* Measure and validate the slab required. + */ + { + u3_noun cab = b; + + while ( 1 ) { + u3_noun h_cab; + c3_w len_w; + + if ( 0 == cab ) { + break; + } + else if ( c3n == u3du(cab) ) { + return u3m_bail(c3__exit); + } + else if ( c3n == u3ud(h_cab = u3h(cab)) ) { + return u3m_bail(c3__exit); + } + else if ( (tot_w + (len_w = u3r_met(a_g, h_cab))) < tot_w ) { + return u3m_bail(c3__fail); + } + tot_w += len_w; + cab = u3t(cab); + } + + if ( 0 == tot_w ) { + return 0; + } + + u3i_slab_init(&sab_u, a_g, tot_w); + } + + /* Chop the list atoms in. + */ + { + u3_noun cab = b; + c3_w pos_w = 0; + + while ( 0 != cab ) { + u3_noun h_cab = u3h(cab); + c3_w len_w = u3r_met(a_g, h_cab); + + u3r_chop(a_g, 0, len_w, pos_w, sab_u.buf_w, h_cab); + pos_w += len_w; + cab = u3t(cab); + } + } + + return u3i_slab_mint(&sab_u); + } + } + u3_noun + u3wc_rap(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun pro; + + pro = u3qc_rap(a, b); + return pro; + } + } + diff --git a/vere/pkg/noun/jets/c/rep.c b/vere/pkg/noun/jets/c/rep.c new file mode 100644 index 0000000..914e917 --- /dev/null +++ b/vere/pkg/noun/jets/c/rep.c @@ -0,0 +1,199 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +/* + Get the lowest `n` bits of a word `w` using a bitmask. +*/ +#define TAKEBITS(n,w) \ + ((n)==32) ? (w) : \ + ((n)==0) ? 0 : \ + ((w) & ((1 << (n)) - 1)) + +/* + Divide, rounding up. +*/ +#define DIVCEIL(x,y) \ + (x==0) ? 0 : \ + 1 + ((x - 1) / y); + +static u3_noun +_bit_rep(u3_atom bits, u3_noun blox) +{ + if ( (c3n == u3a_is_cat(bits) || bits==0 || bits>31) ) { + return u3m_bail(c3__fail); + } + + // + // Calculate input and output size. + // + c3_w num_blox_w = u3qb_lent(blox); + c3_w bit_widt_w = num_blox_w * bits; + c3_w wor_widt_w = DIVCEIL(bit_widt_w, 32); + u3i_slab sab_u; + u3i_slab_bare(&sab_u, 5, wor_widt_w); + + // + // Fill the atom buffer with bits from each block. + // + // Bits are pushed into the `acc_w` register and flushed to the buffer + // once full. + // + // acc_w register + // use_w number of register bits filled (used) + // cur_w next buffer word to flush into. + // + { + c3_w acc_w=0, use_w=0, *cur_w=sab_u.buf_w; + +# define FLUSH() *cur_w++=acc_w; acc_w=use_w=0 +# define SLICE(sz,off,val) TAKEBITS(sz, val) << off + + for (c3_w i=0; i> rem_in_acc_w; + FLUSH(); + } + } + } + + // + // If the last word isn't fully used, it will still need to be + // flushed. + // + if (use_w) { + FLUSH(); + } + } + + return u3i_slab_mint(&sab_u); +} + +static u3_noun +_block_rep(u3_atom a, + u3_noun b) +{ + if ( !_(u3a_is_cat(a)) || (a >= 32) ) { + return u3m_bail(c3__fail); + } + else { + c3_g a_g = a; + c3_w tot_w = 0; + u3i_slab sab_u; + + /* Measure and validate the slab required. + */ + { + u3_noun cab = b; + + while ( 1 ) { + u3_noun h_cab; + c3_w len_w; + + if ( 0 == cab ) { + break; + } + else if ( c3n == u3du(cab) ) { + return u3m_bail(c3__exit); + } + else if ( c3n == u3ud(h_cab = u3h(cab)) ) { + return u3m_bail(c3__exit); + } + else if ( (tot_w + (len_w = u3r_met(a_g, h_cab))) < tot_w ) { + return u3m_bail(c3__fail); + } + tot_w++; + cab = u3t(cab); + } + + if ( 0 == tot_w ) { + return 0; + } + + u3i_slab_init(&sab_u, a_g, tot_w); + } + + /* Chop the list atoms in. + */ + { + u3_noun cab = b; + c3_w pos_w = 0; + + while ( 0 != cab ) { + u3_noun h_cab = u3h(cab); + + u3r_chop(a_g, 0, 1, pos_w, sab_u.buf_w, h_cab); + pos_w++; + cab = u3t(cab); + } + } + + return u3i_slab_mint(&sab_u); + } +} + +u3_noun +u3qc_rep(u3_atom a, + u3_atom b, + u3_noun c) +{ + if ( 1 == b ) { + return _block_rep(a, c); + } + + if ( 0 == a ) { + return _bit_rep(b, c); + } + + u3l_log("rep: stub"); + return u3_none; +} + +u3_noun +u3wc_rep(u3_noun cor) +{ + u3_atom bloq, step; + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, + u3x_sam_3, &b, 0); + u3x_bite(a, &bloq, &step); + + return u3qc_rep(bloq, step, b); +} + +u3_noun +u3kc_rep(u3_atom a, + u3_atom b, + u3_noun c) +{ + u3_noun res = u3qc_rep(a, b, c); + u3z(a); u3z(b); u3z(c); + return res; +} diff --git a/vere/pkg/noun/jets/c/rev.c b/vere/pkg/noun/jets/c/rev.c new file mode 100644 index 0000000..1ce74c0 --- /dev/null +++ b/vere/pkg/noun/jets/c/rev.c @@ -0,0 +1,51 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_rev(u3_atom boz, + u3_atom len, + u3_atom dat) + { + if ( !_(u3a_is_cat(boz)) || (boz >= 32) || + !_(u3a_is_cat(len)) ) { + return u3m_bail(c3__fail); + } + + dat = u3qc_end(boz, len, dat); + c3_w met = u3r_met(boz, dat); + return u3kc_lsh(boz, (len - met), u3kc_swp(boz, dat)); + } + + u3_noun + u3wc_rev(u3_noun cor) + { + u3_noun boz, len, dat; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &boz, + u3x_sam_6, &len, + u3x_sam_7, &dat, 0)) || + (c3n == u3ud(boz)) || + (c3n == u3ud(len)) || + (c3n == u3ud(dat)) ) + { + return u3m_bail(c3__exit); + } else { + return u3qc_rev(boz, len, dat); + } + } + + u3_noun + u3kc_rev(u3_atom boz, + u3_atom len, + u3_atom dat) + { + u3_noun res = u3qc_rev(boz, len, dat); + u3z(boz); u3z(len); u3z(dat); + return res; + } diff --git a/vere/pkg/noun/jets/c/rig.c b/vere/pkg/noun/jets/c/rig.c new file mode 100644 index 0000000..7e5e7b9 --- /dev/null +++ b/vere/pkg/noun/jets/c/rig.c @@ -0,0 +1,82 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +c3_d +u3qc_rig_s(c3_g foq_g, + c3_w sep_w, + c3_g toq_g) +{ + c3_d sep_d = sep_w; + + if ( foq_g >= toq_g ) { + return sep_d << (foq_g - toq_g); + } + else { + c3_g dif_g = toq_g - foq_g; + + sep_d += (1 << dif_g) - 1; + return sep_d >> dif_g; + } +} + +u3_noun +u3qc_rig(u3_atom foq, + u3_atom sep, + u3_atom toq) +{ + if ( c3y == u3r_sing(foq, toq) ) { + return u3k(sep); + } + + if ( (c3y == u3a_is_cat(foq)) && (foq < 32) + && (c3y == u3a_is_cat(toq)) && (toq < 32) + && (c3y == u3a_is_cat(sep)) ) + { + c3_d sep_d = u3qc_rig_s((c3_g)foq, (c3_w)sep, (c3_g)toq); + return u3i_chub(sep_d); + } + + if ( c3y == u3qa_gth(foq, toq) ) { + u3_atom d = u3qa_sub(foq, toq); + u3_atom e = u3qc_lsh(0, d, sep); + u3z(d); + return e; + } + else { + u3_atom d = u3qa_sub(toq, foq); + u3_atom e = u3qc_rsh(0, d, sep); + u3_atom f = u3qc_end(0, d, sep); + + if ( f ) { + e = u3i_vint(e); + u3z(f); + } + + u3z(d); + return e; + } +} + +u3_noun +u3wc_rig(u3_noun cor) +{ + u3_atom boq, sep, vat; + { + u3_noun sam = u3h(u3t(cor)); + u3_noun bit = u3h(sam); + + if ( c3y == u3a_is_atom(bit) ) { + return 0; + } + + boq = u3x_atom(u3h(bit)); + sep = u3x_atom(u3t(bit)); + vat = u3x_atom(u3t(sam)); + } + + return u3qc_rig(boq, sep, vat); +} diff --git a/vere/pkg/noun/jets/c/rip.c b/vere/pkg/noun/jets/c/rip.c new file mode 100644 index 0000000..bff23b8 --- /dev/null +++ b/vere/pkg/noun/jets/c/rip.c @@ -0,0 +1,192 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +/* + Get the lowest `n` bits of a word `w` using a bitmask. +*/ +#define TAKEBITS(n,w) \ + ((n)==32) ? (w) : \ + ((n)==0) ? 0 : \ + ((w) & ((1 << (n)) - 1)) + +/* + Divide, rounding up. +*/ +#define DIVCEIL(x,y) \ + (x==0) ? 0 : \ + 1 + ((x - 1) / y); + +/* + `ripn` breaks `atom` into a list of blocks, of bit-width `bits`. The + resulting list will be least-significant block first. + + XX TODO This only handles cases where the bit-width is <= 32. + + For each block we produce, we need to grab the relevant words inside + `atom`, so we first compute their indicies. + + `ins_idx` is the word-index of the least-significant word we + care about, and `sig_idx` is the word after that. + + Next we grab those words (`ins_word` and `sig_word`) from the atom + using `u3r_word`. Note that `sig_idx` might be out-of-bounds for the + underlying array of `atom`, but `u3r_word` returns 0 in that case, + which is exatly what we want. + + Now, we need to grab the relevant bits out of both words, and combine + them. `bits_rem_in_ins_word` is the number of remaining (insignificant) + bits in `ins_word`, `nbits_ins` is the number of bits we want from the + less-significant word, and `nbits_sig` from the more-significant one. + + Take the least significant `nbits_sig` bits from `sig_word`, and take + the slice we care about from `ins_word`. In order to take that slice, + we drop `bits_rem_in_ins_word` insignificant bits, and then take the + `nbits_sig` most-significant bits. + + Last, we slice out those bits from the two words, combine them into + one word, and cons them onto the front of the result. +*/ +static u3_noun +_bit_rip(u3_atom bits, u3_atom atom) +{ + if ( !_(u3a_is_cat(bits) || bits==0 || bits>31) ) { + return u3m_bail(c3__fail); + } + + c3_w bit_width = u3r_met(0, atom); + c3_w num_blocks = DIVCEIL(bit_width, bits); + + u3_noun res = u3_nul; + + for ( c3_w blk = 0; blk < num_blocks; blk++ ) { + c3_w next_blk = blk + 1; + c3_w blks_rem = num_blocks - next_blk; + c3_w bits_rem = blks_rem * bits; + c3_w ins_idx = bits_rem / 32; + c3_w sig_idx = ins_idx + 1; + + c3_w bits_rem_in_ins_word = bits_rem % 32; + + c3_w ins_word = u3r_word(ins_idx, atom); + c3_w sig_word = u3r_word(sig_idx, atom); + c3_w nbits_ins = c3_min(bits, 32 - bits_rem_in_ins_word); + c3_w nbits_sig = bits - nbits_ins; + + c3_w ins_word_bits = TAKEBITS(nbits_ins, ins_word >> bits_rem_in_ins_word); + c3_w sig_word_bits = TAKEBITS(nbits_sig, sig_word); + + c3_w item = ins_word_bits | (sig_word_bits << nbits_ins); + + res = u3nc(item, res); + } + + return res; +} + +static u3_noun +_block_rip(u3_atom bloq, u3_atom b) +{ + if ( !_(u3a_is_cat(bloq)) || (bloq >= 32) ) { + return u3m_bail(c3__fail); + } + + c3_g bloq_g = bloq; + + /* + This is a fast-path for the case where all the resulting blocks will + fit in 31-bit direct atoms. + */ + if ( bloq_g < 5 ) { // produce direct atoms + u3_noun acc = u3_nul; + + c3_w met_w = u3r_met(bloq_g, b); // num blocks in atom + c3_w nbits_w = 1 << bloq_g; // block size in bits + c3_w bmask_w = (1 << nbits_w) - 1; // result mask + + for ( c3_w i_w = 0; i_w < met_w; i_w++ ) { // `i_w` is block index + c3_w nex_w = i_w + 1; // next block + c3_w pat_w = met_w - nex_w; // blks left after this + c3_w bit_w = pat_w << bloq_g; // bits left after this + c3_w wor_w = bit_w >> 5; // wrds left after this + c3_w sif_w = bit_w & 31; // bits left in word + c3_w src_w = u3r_word(wor_w, b); // find word by index + c3_w rip_w = (src_w >> sif_w) & bmask_w; // get item from word + + acc = u3nc(rip_w, acc); + } + + return acc; + } + + u3_noun acc = u3_nul; + c3_w met_w = u3r_met(bloq_g, b); + c3_w len_w = u3r_met(5, b); + c3_g san_g = (bloq_g - 5); + c3_w san_w = 1 << san_g; + c3_w dif_w = (met_w << san_g) - len_w; + c3_w tub_w = ((dif_w == 0) ? san_w : (san_w - dif_w)); + + for ( c3_w i_w = 0; i_w < met_w; i_w++ ) { + c3_w pat_w = (met_w - (i_w + 1)); + c3_w wut_w = (pat_w << san_g); + c3_w sap_w = ((0 == i_w) ? tub_w : san_w); + c3_w j_w; + u3_atom rip; + u3i_slab sab_u; + u3i_slab_bare(&sab_u, 5, sap_w); + + for ( j_w = 0; j_w < sap_w; j_w++ ) { + sab_u.buf_w[j_w] = u3r_word(wut_w + j_w, b); + } + + rip = u3i_slab_mint(&sab_u); + acc = u3nc(rip, acc); + len_w -= san_w; + } + + return acc; +} + +u3_noun +u3qc_rip(u3_atom a, + u3_atom b, + u3_atom c) +{ + if ( 1 == b ) { + return _block_rip(a, c); + } + + if ( 0 == a ) { + return _bit_rip(b, c); + } + + u3l_log("rip: stub"); + return u3_none; +} + +u3_noun +u3wc_rip(u3_noun cor) +{ + u3_atom bloq, step; + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, + u3x_sam_3, &b, 0); + u3x_bite(a, &bloq, &step); + + return u3qc_rip(bloq, step, u3x_atom(b)); +} + +u3_noun +u3kc_rip(u3_atom a, + u3_atom b, + u3_atom c) +{ + u3_noun pro = u3qc_rip(a, b, c); + u3z(a); u3z(b); u3z(c); + return pro; +} diff --git a/vere/pkg/noun/jets/c/rsh.c b/vere/pkg/noun/jets/c/rsh.c new file mode 100644 index 0000000..6fc8ddf --- /dev/null +++ b/vere/pkg/noun/jets/c/rsh.c @@ -0,0 +1,60 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qc_rsh(u3_atom a, + u3_atom b, + u3_atom c) +{ + if ( !_(u3a_is_cat(a)) || (a >= 32) ) { + return u3m_bail(c3__fail); + } + else if ( !_(u3a_is_cat(b)) ) { + return 0; + } + else { + c3_g a_g = a; + c3_w b_w = b; + c3_w len_w = u3r_met(a_g, c); + + if ( b_w >= len_w ) { + return 0; + } + else { + u3i_slab sab_u; + u3i_slab_init(&sab_u, a_g, (len_w - b_w)); + + u3r_chop(a_g, b_w, (len_w - b_w), 0, sab_u.buf_w, c); + + return u3i_slab_mint(&sab_u); + } + } +} + +u3_noun +u3wc_rsh(u3_noun cor) +{ + u3_atom bloq, step; + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, + u3x_sam_3, &b, 0); + u3x_bite(a, &bloq, &step); + + return u3qc_rsh(bloq, step, u3x_atom(b)); +} + +u3_noun +u3kc_rsh(u3_noun a, + u3_noun b, + u3_noun c) +{ + u3_noun d = u3qc_rsh(a, b, c); + + u3z(a); u3z(b); u3z(c); + return d; +} diff --git a/vere/pkg/noun/jets/c/sew.c b/vere/pkg/noun/jets/c/sew.c new file mode 100644 index 0000000..02359f7 --- /dev/null +++ b/vere/pkg/noun/jets/c/sew.c @@ -0,0 +1,74 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_weak +u3qc_sew(u3_atom a, + u3_atom b, + u3_atom c, + u3_atom d, + u3_atom e + ) +{ + c3_w b_w, c_w; + if (0 == c) return u3k(e); + if ( !_(u3r_safe_word(b, &b_w)) || + !_(u3r_safe_word(c, &c_w)) ) { + return u3_none; + } + if ( !_(u3a_is_cat(a)) || (a >= 32) ) { + return u3m_bail(c3__fail); + } + + c3_g a_g = a; + c3_w len_e_w = u3r_met(a_g, e); + u3i_slab sab_u; + c3_w* src_w; + c3_w len_src_w; + if ( _(u3a_is_cat(e)) ) { + len_src_w = e ? 1 : 0; + src_w = &e; + } + else { + u3a_atom* src_u = u3a_to_ptr(e); + len_src_w = src_u->len_w; + src_w = src_u->buf_w; + } + u3i_slab_init(&sab_u, a_g, c3_max(len_e_w, b_w + c_w)); + u3r_chop_words(a_g, 0, b_w, 0, sab_u.buf_w, len_src_w, src_w); + u3r_chop(a_g, 0, c_w, b_w, sab_u.buf_w, d); + if (len_e_w > b_w + c_w) { + u3r_chop_words(a_g, + b_w + c_w, + len_e_w - (b_w + c_w), + b_w + c_w, + sab_u.buf_w, + len_src_w, + src_w); + } + return u3i_slab_mint(&sab_u); +} + +u3_weak +u3wc_sew(u3_noun cor) +{ + u3_noun a, b, c, d, e; + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, + u3x_sam_12, &b, + 106, &c, + 107, &d, + u3x_sam_7, &e, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) || + (c3n == u3ud(c)) || + (c3n == u3ud(d)) || + (c3n == u3ud(e)) ) + { + return u3m_bail(c3__fail); + } else { + return u3qc_sew(a, b, c, d, e); + } +} diff --git a/vere/pkg/noun/jets/c/sqt.c b/vere/pkg/noun/jets/c/sqt.c new file mode 100644 index 0000000..b20db59 --- /dev/null +++ b/vere/pkg/noun/jets/c/sqt.c @@ -0,0 +1,33 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_sqt(u3_atom a) + { + mpz_t a_mp, b_mp; + + u3r_mp(a_mp, a); + mpz_init(b_mp); + mpz_sqrtrem(a_mp, b_mp, a_mp); + + return u3nc(u3i_mp(a_mp), u3i_mp(b_mp)); + } + u3_noun + u3wc_sqt(u3_noun cor) + { + u3_noun a; + + if ( (u3_none == (a = u3r_at(u3x_sam, cor))) || + (c3n == u3ud(a)) ) + { + return u3m_bail(c3__exit); + } else { + return u3qc_sqt(a); + } + } + diff --git a/vere/pkg/noun/jets/c/swp.c b/vere/pkg/noun/jets/c/swp.c new file mode 100644 index 0000000..4f503e7 --- /dev/null +++ b/vere/pkg/noun/jets/c/swp.c @@ -0,0 +1,50 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qc_swp(u3_atom a, + u3_atom b) +{ + if ( !_(u3a_is_cat(a)) || (a >= 32) ) { + return u3m_bail(c3__fail); + } + c3_g a_g = a; + c3_w len_w = u3r_met(a_g, b); + u3i_slab sab_u; + u3i_slab_init(&sab_u, a_g, len_w); + + for (c3_w i = 0; i < len_w; i++) { + u3r_chop(a_g, i, 1, len_w - i - 1, sab_u.buf_w, b); + } + + return u3i_slab_mint(&sab_u); +} + +u3_noun +u3wc_swp(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + + if ( (c3n == u3ud(a)) + || (c3n == u3ud(b)) ) + { + return u3m_bail(c3__exit); + } + + return u3qc_swp(a, b); + } + +u3_noun +u3kc_swp(u3_atom a, + u3_atom b) +{ + u3_noun pro = u3qc_swp(a, b); + u3z(a); u3z(b); + return pro; +} diff --git a/vere/pkg/noun/jets/c/xeb.c b/vere/pkg/noun/jets/c/xeb.c new file mode 100644 index 0000000..6a23ac1 --- /dev/null +++ b/vere/pkg/noun/jets/c/xeb.c @@ -0,0 +1,32 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qc_xeb(u3_atom a) + { + c3_w met_w = u3r_met(0, a); + + if ( !_(u3a_is_cat(met_w)) ) { + return u3i_words(1, &met_w); + } + else return met_w; + } + u3_noun + u3wc_xeb(u3_noun cor) + { + u3_noun a; + + if ( (u3_none == (a = u3r_at(u3x_sam, cor))) || + (c3n == u3ud(a)) ) + { + return u3m_bail(c3__exit); + } else { + return u3qc_xeb(a); + } + } + diff --git a/vere/pkg/noun/jets/d/by_all.c b/vere/pkg/noun/jets/d/by_all.c new file mode 100644 index 0000000..25926a7 --- /dev/null +++ b/vere/pkg/noun/jets/d/by_all.c @@ -0,0 +1,51 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static u3_noun +_by_all(u3_noun a, u3j_site* sit_u) +{ + if ( u3_nul == a ) { + return c3y; + } + else { + u3_noun n_a, l_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); + + switch ( u3j_gate_slam(sit_u, u3k(u3t(n_a))) ) { + case c3y: break; + case c3n: return c3n; + default: return u3m_bail(c3__exit); + } + + if ( c3n == _by_all(l_a, sit_u) ) { + return c3n; + } + + return _by_all(r_a, sit_u); + } +} + +u3_noun +u3qdb_all(u3_noun a, u3_noun b) +{ + u3_noun pro; + u3j_site sit_u; + + u3j_gate_prep(&sit_u, u3k(b)); + pro = _by_all(a, &sit_u); + u3j_gate_lose(&sit_u); + + return pro; +} + +u3_noun +u3wdb_all(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_all(a, b); +} diff --git a/vere/pkg/noun/jets/d/by_any.c b/vere/pkg/noun/jets/d/by_any.c new file mode 100644 index 0000000..b81f32d --- /dev/null +++ b/vere/pkg/noun/jets/d/by_any.c @@ -0,0 +1,51 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static u3_noun +_by_any(u3_noun a, u3j_site* sit_u) +{ + if ( u3_nul == a ) { + return c3n; + } + else { + u3_noun n_a, l_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); + + switch ( u3j_gate_slam(sit_u, u3k(u3t(n_a))) ) { + case c3y: return c3y; + case c3n: break; + default: return u3m_bail(c3__exit); + } + + if ( c3y == _by_any(l_a, sit_u) ) { + return c3y; + } + + return _by_any(r_a, sit_u); + } +} + +u3_noun +u3qdb_any(u3_noun a, u3_noun b) +{ + u3_noun pro; + u3j_site sit_u; + + u3j_gate_prep(&sit_u, u3k(b)); + pro = _by_any(a, &sit_u); + u3j_gate_lose(&sit_u); + + return pro; +} + +u3_noun +u3wdb_any(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_any(a, b); +} diff --git a/vere/pkg/noun/jets/d/by_apt.c b/vere/pkg/noun/jets/d/by_apt.c new file mode 100644 index 0000000..66a6414 --- /dev/null +++ b/vere/pkg/noun/jets/d/by_apt.c @@ -0,0 +1,78 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static c3_o +_by_apt(u3_noun a, u3_weak l, u3_weak r) +{ + if ( u3_nul == a ) { + return c3y; + } + else { + u3_noun p_n_a, l_a, r_a; + { + u3_noun n_a; + u3x_trel(a, &n_a, &l_a, &r_a); + p_n_a = u3h(n_a); + } + + if ( u3_none != l ) { + if ( (c3n == u3qc_gor(p_n_a, l)) + || (c3y == u3r_sing(p_n_a, l)) ) + { + return c3n; + } + } + + if ( u3_none != r ) { + if ( (c3n == u3qc_gor(r, p_n_a)) + || (c3y == u3r_sing(r, p_n_a)) ) + { + return c3n; + } + } + + if ( u3_nul != l_a ) { + u3_noun p_n_l_a = u3h(u3h(l_a)); + + if ( (c3n == u3qc_mor(p_n_a, p_n_l_a)) + || (c3y == u3r_sing(p_n_a, p_n_l_a)) ) + { + return c3n; + } + + if ( c3n == _by_apt(l_a, p_n_a, r) ) { + return c3n; + } + } + + if ( u3_nul != r_a ) { + u3_noun p_n_r_a = u3h(u3h(r_a)); + + if ( (c3n == u3qc_mor(p_n_a, p_n_r_a)) + || (c3y == u3r_sing(p_n_a, p_n_r_a)) ) + { + return c3n; + } + + return _by_apt(r_a, l, p_n_a); + } + + return c3y; + } +} + +u3_noun +u3qdb_apt(u3_noun a) +{ + return _by_apt(a, u3_none, u3_none); +} + +u3_noun +u3wdb_apt(u3_noun cor) +{ + return u3qdb_apt(u3x_at(u3x_con_sam, cor)); +} diff --git a/vere/pkg/noun/jets/d/by_bif.c b/vere/pkg/noun/jets/d/by_bif.c new file mode 100644 index 0000000..0a2f23a --- /dev/null +++ b/vere/pkg/noun/jets/d/by_bif.c @@ -0,0 +1,74 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +/* internal functions +*/ +static u3_noun +_b_bif_putroot(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3nt(u3k(b), u3_nul, u3_nul); + } + else { + u3_noun n_a, l_a, r_a; + u3_noun p_n_a, q_n_a; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_cell(n_a, &p_n_a, &q_n_a); + + if ( c3y == u3r_sing(b, p_n_a) ) { + return u3nt(u3k(b), u3k(l_a), u3k(r_a)); + } + else { + u3_noun c, n_c, l_c, r_c; + u3_noun d; + + if ( c3y == u3qc_gor(b, p_n_a) ) { + c = _b_bif_putroot(l_a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + d = u3nt(u3k(n_c), + u3k(l_c), + u3nt(u3k(n_a), u3k(r_c), u3k(r_a)) + ); + u3z(c); + return d; + } + else { + c = _b_bif_putroot(r_a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + d = u3nt(u3k(n_c), + u3nt(u3k(n_a), u3k(l_a), u3k(l_c)), + u3k(r_c) + ); + u3z(c); + return d; + } + } + } +} + +u3_noun +u3wdb_bif(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_bif(a, b); +} + +u3_noun +u3qdb_bif(u3_noun a, + u3_noun b) +{ + u3_noun c, n_c, l_c, r_c; + u3_noun d; + + c = _b_bif_putroot(a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + d = u3nc(u3k(l_c), u3k(r_c)); + u3z(c); + return d; +} diff --git a/vere/pkg/noun/jets/d/by_del.c b/vere/pkg/noun/jets/d/by_del.c new file mode 100644 index 0000000..86ba416 --- /dev/null +++ b/vere/pkg/noun/jets/d/by_del.c @@ -0,0 +1,93 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static u3_noun +_rebalance(u3_noun a) +{ + u3_noun n_a, l_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); + + if ( u3_nul == l_a) { + return u3k(r_a); + } + else if ( u3_nul == r_a) { + return u3k(l_a); + } + else { + u3_noun n_l_a, l_l_a, r_l_a; + u3_noun n_r_a, l_r_a, r_r_a; + u3x_trel(l_a, &n_l_a, &l_l_a, &r_l_a); + u3x_trel(r_a, &n_r_a, &l_r_a, &r_r_a); + + if ( c3y == u3qc_mor(u3h(n_l_a), u3h(n_r_a)) ) { + u3_noun new_right = u3nt(u3k(n_a), + u3k(r_l_a), + u3k(r_a)); + + u3_noun ret = u3nt(u3k(n_l_a), + u3k(l_l_a), + _rebalance(new_right)); + u3z(new_right); + + return ret; + } + else { + u3_noun new_left = u3nt(u3k(n_a), + u3k(l_a), + u3k(l_r_a)); + + u3_noun ret = u3nt(u3k(n_r_a), + _rebalance(new_left), + u3k(r_r_a)); + u3z(new_left); + + return ret; + } + } +} + +u3_noun +u3qdb_del(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3_nul; + } + else { + u3_noun n_a, lr_a; + u3_noun pn_a; + u3x_cell(a, &n_a, &lr_a); + u3x_cell(n_a, &pn_a, 0); + + if ( c3y == u3r_sing(pn_a, b) ) { + return _rebalance(a); + } + else { + u3_noun l_a, r_a; + u3x_cell(lr_a, &l_a, &r_a); + + if ( c3y == u3qc_gor(b, pn_a) ) { + return u3nt(u3k(n_a), + u3qdb_del(l_a, b), + u3k(r_a)); + } + else { + return u3nt(u3k(n_a), + u3k(l_a), + u3qdb_del(r_a, b)); + } + } + } +} + +u3_noun +u3wdb_del(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_del(a, b); +} diff --git a/vere/pkg/noun/jets/d/by_dif.c b/vere/pkg/noun/jets/d/by_dif.c new file mode 100644 index 0000000..44dcd1a --- /dev/null +++ b/vere/pkg/noun/jets/d/by_dif.c @@ -0,0 +1,83 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +/* internal functions +*/ + +/* RETAIN +*/ +static u3_noun +_b_dif_join(u3_noun d, + u3_noun e) +{ + if ( u3_nul == d ) { + return u3k(e); + } + else if ( u3_nul == e ) { + return u3k(d); + } + else { + u3_noun n_d, lr_d; + u3_noun n_e, lr_e; + u3x_cell(d, &n_d, &lr_d); + u3x_cell(e, &n_e, &lr_e); + + if ( c3y == u3qc_mor(u3h(n_d), u3h(n_e)) ) { + u3_noun l_d, r_d; + u3x_cell(lr_d, &l_d, &r_d); + + return u3nt(u3k(n_d), + u3k(l_d), + _b_dif_join(r_d, e)); + } + else { + u3_noun l_e, r_e; + u3x_cell(lr_e, &l_e, &r_e); + + return u3nt(u3k(n_e), + _b_dif_join(d, l_e), + u3k(r_e)); + } + } +} + +u3_noun +u3wdb_dif(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_dif(a, b); +} + +u3_noun +u3qdb_dif(u3_noun a, + u3_noun b) +{ + if ( u3_nul == b ) { + return u3k(a); + } + else { + u3_noun n_b, p_n_b, q_n_b, l_b, r_b; + u3_noun c, l_c, r_c; + u3x_trel(b, &n_b, &l_b, &r_b); + u3x_cell(n_b, &p_n_b, &q_n_b); + + c = u3qdb_bif(a, p_n_b); + u3x_cell(c, &l_c, &r_c); + + u3_noun d = u3qdb_dif(l_c, l_b); + u3_noun e = u3qdb_dif(r_c, r_b); + + u3z(c); + + u3_noun pro = _b_dif_join(d, e); + u3z(d); + u3z(e); + + return pro; + } +} diff --git a/vere/pkg/noun/jets/d/by_gas.c b/vere/pkg/noun/jets/d/by_gas.c new file mode 100644 index 0000000..2da171d --- /dev/null +++ b/vere/pkg/noun/jets/d/by_gas.c @@ -0,0 +1,44 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qdb_gas(u3_noun a, + u3_noun b) +{ + if ( u3_nul == b ) { + return u3k(a); + } + else { + u3_noun i_b, t_b, + pi_b, qi_b; + u3x_cell(b, &i_b, &t_b); + u3x_cell(i_b, &pi_b, &qi_b); + + u3_noun c = u3qdb_put(a, pi_b, qi_b); + u3_noun d = u3qdb_gas(c, t_b); + u3z(c); + return d; + } +} + +u3_noun +u3wdb_gas(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_gas(a, b); +} + +u3_noun +u3kdb_gas(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qdb_gas(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/d/by_get.c b/vere/pkg/noun/jets/d/by_get.c new file mode 100644 index 0000000..19e77b9 --- /dev/null +++ b/vere/pkg/noun/jets/d/by_get.c @@ -0,0 +1,63 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qdb_get(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3_nul; + } + else { + u3_noun n_a, lr_a; + u3_noun pn_a, qn_a; + u3x_cell(a, &n_a, &lr_a); + u3x_cell(n_a, &pn_a, &qn_a); + + if ( (c3y == u3r_sing(b, pn_a)) ) { + return u3nc(u3_nul, u3k(qn_a)); + } + else { + return ( c3y == u3qc_gor(b, pn_a) ) ? u3qdb_get(u3h(lr_a), b) + : u3qdb_get(u3t(lr_a), b); + } + } +} + +u3_noun +u3wdb_get(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_get(a, b); +} + +u3_weak +u3kdb_get(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qdb_get(a, b); + u3z(a); u3z(b); + + if ( c3n == u3du(c) ) { + u3z(c); + return u3_none; + } + else { + u3_noun pro = u3k(u3t(c)); + u3z(c); + return pro; + } +} + +u3_noun +u3kdb_got(u3_noun a, + u3_noun b) +{ + return u3x_good(u3kdb_get(a, b)); +} diff --git a/vere/pkg/noun/jets/d/by_has.c b/vere/pkg/noun/jets/d/by_has.c new file mode 100644 index 0000000..24bcb31 --- /dev/null +++ b/vere/pkg/noun/jets/d/by_has.c @@ -0,0 +1,47 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qdb_has(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return c3n; + } + else { + u3_noun n_a, lr_a; + u3_noun pn_a; + u3x_cell(a, &n_a, &lr_a); + u3x_cell(n_a, &pn_a, 0); + + if ( (c3y == u3r_sing(b, pn_a)) ) { + return c3y; + } + else { + return ( c3y == u3qc_gor(b, pn_a) ) ? u3qdb_has(u3h(lr_a), b) + : u3qdb_has(u3t(lr_a), b); + } + } +} + +u3_noun +u3wdb_has(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_has(a, b); +} + +u3_noun +u3kdb_has(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qdb_has(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/d/by_int.c b/vere/pkg/noun/jets/d/by_int.c new file mode 100644 index 0000000..5caa8aa --- /dev/null +++ b/vere/pkg/noun/jets/d/by_int.c @@ -0,0 +1,72 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qdb_int(u3_noun a, u3_noun b) +{ + if ( (u3_nul == a) + || (u3_nul == b) ) + { + return u3_nul; + } + else { + u3_noun n_a, l_a, r_a; + u3_noun n_b, l_b, r_b; + u3_noun p_n_a, q_n_a; + u3_noun p_n_b, q_n_b; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_trel(b, &n_b, &l_b, &r_b); + u3x_cell(n_a, &p_n_a, &q_n_a); + u3x_cell(n_b, &p_n_b, &q_n_b); + + if ( c3y == u3qc_mor(p_n_a, p_n_b) ) { + if ( c3y == u3r_sing(p_n_b, p_n_a) ) { + return u3nt(u3k(n_b), u3qdb_int(l_a, l_b), u3qdb_int(r_a, r_b)); + } + else if ( c3y == u3qc_gor(p_n_b, p_n_a) ) { + u3_noun new_l_b = u3nt(u3k(n_b), u3k(l_b), u3_nul); + u3_noun new_a = u3qdb_int(l_a, new_l_b); + + u3z(new_l_b); + return u3kdb_uni(new_a, u3qdb_int(a, r_b)); + } + else { + u3_noun new_r_b = u3nt(u3k(n_b), u3_nul, u3k(r_b)); + u3_noun new_a = u3qdb_int(r_a, new_r_b); + + u3z(new_r_b); + return u3kdb_uni(new_a, u3qdb_int(a, l_b)); + } + } + else if ( c3y == u3r_sing(p_n_a, p_n_b) ) { + return u3nt(u3k(n_b), u3qdb_int(l_a, l_b), u3qdb_int(r_a, r_b)); + } + else if ( c3y == u3qc_gor(p_n_a, p_n_b) ) { + u3_noun new_l_a = u3nt(u3k(n_a), u3k(l_a), u3_nul); + u3_noun new_a = u3qdb_int(new_l_a, l_b); + + u3z(new_l_a); + return u3kdb_uni(new_a, u3qdb_int(r_a, b)); + } + else { + u3_noun new_r_a = u3nt(u3k(n_a), u3_nul, u3k(r_a)); + u3_noun new_a = u3qdb_int(new_r_a, r_b); + + u3z(new_r_a); + return u3kdb_uni(new_a, u3qdb_int(l_a, b)); + } + } +} + +u3_noun +u3wdb_int(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_int(a, b); +} diff --git a/vere/pkg/noun/jets/d/by_jab.c b/vere/pkg/noun/jets/d/by_jab.c new file mode 100644 index 0000000..597e454 --- /dev/null +++ b/vere/pkg/noun/jets/d/by_jab.c @@ -0,0 +1,63 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3kdb_jab(u3_noun a, + u3_noun key, + u3_noun fun) + { + if ( u3_nul == a ) { + return u3m_bail(c3__exit); + } + else { + u3_noun n_a, lr_a; + u3_noun pn_a, qn_a; + u3_noun pro; + u3x_cell(a, &n_a, &lr_a); + u3x_cell(n_a, &pn_a, &qn_a); + + if ( (c3y == u3r_sing(key, pn_a)) ) { + u3_noun value = u3n_slam_on(fun, u3k(qn_a)); + pro = u3nc(u3nc(u3k(u3h(u3h(a))), value), u3k(u3t(a))); + u3z(a); u3z(key); + return pro; + } + else { + u3_noun l_a, r_a; + u3x_cell(lr_a, &l_a, &r_a); + + u3k(n_a); u3k(l_a); u3k(r_a); + if ( c3y == u3qc_gor(key, pn_a) ) { + pro = u3nt(n_a, u3kdb_jab(l_a, key, fun), r_a); + } + else { + pro = u3nt(n_a, l_a, u3kdb_jab(r_a, key, fun)); + } + u3z(a); + return pro; + } + } +} + +u3_noun +u3qdb_jab(u3_noun a, + u3_noun key, + u3_noun fun) +{ + return u3kdb_jab(u3k(a), u3k(key), u3k(fun)); +} + +u3_noun +u3wdb_jab(u3_noun cor) +{ + u3_noun a, key, fun; + u3x_mean(cor, u3x_sam_2, &key, + u3x_sam_3, &fun, + u3x_con_sam, &a, 0); + + return u3qdb_jab(a, key, fun); +} diff --git a/vere/pkg/noun/jets/d/by_key.c b/vere/pkg/noun/jets/d/by_key.c new file mode 100644 index 0000000..b4f8a09 --- /dev/null +++ b/vere/pkg/noun/jets/d/by_key.c @@ -0,0 +1,42 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +// [a] is RETAINED, [set] is TRANSFERRED +// +static u3_noun +_by_key(u3_noun a, u3_noun set) +{ + if ( u3_nul == a ) { + return set; + } + else { + u3_noun n_a, l_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); + + { + u3_noun new = u3qdi_put(set, u3h(n_a)); + u3z(set); + set = new; + } + + set = _by_key(l_a, set); + + return _by_key(r_a, set); + } +} + +u3_noun +u3qdb_key(u3_noun a) +{ + return _by_key(a, u3_nul); +} + +u3_noun +u3wdb_key(u3_noun cor) +{ + return u3qdb_key(u3x_at(u3x_con_sam, cor)); +} diff --git a/vere/pkg/noun/jets/d/by_put.c b/vere/pkg/noun/jets/d/by_put.c new file mode 100644 index 0000000..ad0e7ec --- /dev/null +++ b/vere/pkg/noun/jets/d/by_put.c @@ -0,0 +1,102 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qdb_put(u3_noun a, + u3_noun b, + u3_noun c) +{ + if ( u3_nul == a ) { + return u3nt(u3nc(u3k(b), u3k(c)), + u3_nul, + u3_nul); + } + else { + u3_noun n_a, l_a, r_a; + u3_noun pn_a, qn_a; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_cell(n_a, &pn_a, &qn_a); + + if ( c3y == u3r_sing(pn_a, b) ) { + if ( c3y == u3r_sing(qn_a, c) ) { + return u3k(a); + } + else { + return u3nt(u3nc(u3k(b), u3k(c)), + u3k(l_a), + u3k(r_a)); + } + } + else { + u3_noun d, n_d, l_d, r_d; + + if ( c3y == u3qc_gor(b, pn_a) ) { + d = u3qdb_put(l_a, b, c); + + if ( c3y == u3qc_mor(pn_a, u3h(u3h(d))) ) { + return u3nt(u3k(n_a), + d, + u3k(r_a)); + } + else { + u3r_trel(d, &n_d, &l_d, &r_d); + + u3_noun e = u3nt(u3k(n_d), + u3k(l_d), + u3nt(u3k(n_a), + u3k(r_d), + u3k(r_a))); + + u3z(d); + return e; + } + } + else { + d = u3qdb_put(r_a, b, c); + + if ( c3y == u3qc_mor(pn_a, u3h(u3h(d))) ) { + return u3nt(u3k(n_a), + u3k(l_a), + d); + } + else { + u3r_trel(d, &n_d, &l_d, &r_d); + + u3_noun e = u3nt(u3k(n_d), + u3nt(u3k(n_a), + u3k(l_a), + u3k(l_d)), + u3k(r_d)); + + u3z(d); + return e; + } + } + } + } +} + +u3_noun +u3wdb_put(u3_noun cor) +{ + u3_noun a, b, c; + u3x_mean(cor, u3x_sam_2, &b, + u3x_sam_3, &c, + u3x_con_sam, &a, 0); + return u3qdb_put(a, b, c); +} + +u3_noun +u3kdb_put(u3_noun a, + u3_noun b, + u3_noun c) +{ + u3_noun pro = u3qdb_put(a, b, c); + u3z(a); u3z(b); u3z(c); + return pro; +} diff --git a/vere/pkg/noun/jets/d/by_run.c b/vere/pkg/noun/jets/d/by_run.c new file mode 100644 index 0000000..491a32c --- /dev/null +++ b/vere/pkg/noun/jets/d/by_run.c @@ -0,0 +1,53 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static u3_noun +_by_run(u3_noun a, u3j_site* sit_u) +{ + if ( u3_nul == a ) { + return u3_nul; + } + else { + u3_noun n_a, l_a, r_a; + u3_noun p_n_a, q_n_a; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_cell(n_a, &p_n_a, &q_n_a); + + u3k(p_n_a); + u3k(q_n_a); + u3k(l_a); + u3k(r_a); + + u3_noun pro = u3nt(u3nc(p_n_a, u3j_gate_slam(sit_u, q_n_a)), + _by_run(l_a, sit_u), + _by_run(r_a, sit_u)); + + u3z(a); + return pro; + } +} + +u3_noun +u3qdb_run(u3_noun a, u3_noun b) +{ + u3_noun pro; + u3j_site sit_u; + + u3j_gate_prep(&sit_u, u3k(b)); + pro = _by_run(u3k(a), &sit_u); + u3j_gate_lose(&sit_u); + + return pro; +} + +u3_noun +u3wdb_run(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_run(a, b); +} diff --git a/vere/pkg/noun/jets/d/by_uni.c b/vere/pkg/noun/jets/d/by_uni.c new file mode 100644 index 0000000..6bdcd4c --- /dev/null +++ b/vere/pkg/noun/jets/d/by_uni.c @@ -0,0 +1,101 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +u3_noun +u3qdb_uni(u3_noun a, u3_noun b) +{ + if ( u3_nul == b ) { + return u3k(a); + } + else if ( u3_nul == a ) { + return u3k(b); + } + else { + u3_noun n_a, l_a, r_a; + u3_noun n_b, l_b, r_b; + u3_noun p_n_a, q_n_a; + u3_noun p_n_b, q_n_b; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_trel(b, &n_b, &l_b, &r_b); + u3x_cell(n_a, &p_n_a, &q_n_a); + u3x_cell(n_b, &p_n_b, &q_n_b); + + if ( c3y == u3r_sing(p_n_a, p_n_b) ) { + return u3nt(u3k(n_b), + u3qdb_uni(l_a, l_b), + u3qdb_uni(r_a, r_b)); + } + else if ( c3y == u3qc_mor(p_n_a, p_n_b) ) { + u3_noun new_a, old_b; + + if ( c3y == u3qc_gor(p_n_b, p_n_a) ) { + u3_noun new_b = u3nt(u3k(n_b), u3k(l_b), u3_nul); + u3_noun new_la = u3qdb_uni(l_a, new_b); + u3z(new_b); + + new_a = u3nt(u3k(n_a), new_la, u3k(r_a)); + old_b = r_b; + } + else { + u3_noun new_b = u3nt(u3k(n_b), u3_nul, u3k(r_b)); + u3_noun new_ra = u3qdb_uni(r_a, new_b); + u3z(new_b); + + new_a = u3nt(u3k(n_a), u3k(l_a), new_ra); + old_b = l_b; + } + + { + u3_noun pro = u3qdb_uni(new_a, old_b); + u3z(new_a); + return pro; + } + } + else { + u3_noun old_a, new_b; + + if ( c3y == u3qc_gor(p_n_a, p_n_b) ) { + u3_noun new_a = u3nt(u3k(n_a), u3k(l_a), u3_nul); + u3_noun new_lb = u3qdb_uni(new_a, l_b); + u3z(new_a); + + new_b = u3nt(u3k(n_b), new_lb, u3k(r_b)); + old_a = r_a; + } + else { + u3_noun new_a = u3nt(u3k(n_a), u3_nul, u3k(r_a)); + u3_noun new_rb = u3qdb_uni(new_a, r_b); + u3z(new_a); + + new_b = u3nt(u3k(n_b), u3k(l_b), new_rb); + old_a = l_a; + } + + { + u3_noun pro = u3qdb_uni(old_a, new_b); + u3z(new_b); + return pro; + } + } + } +} + +u3_noun +u3wdb_uni(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_uni(a, b); +} + +u3_noun +u3kdb_uni(u3_noun a, u3_noun b) +{ + u3_noun pro = u3qdb_uni(a, b); + u3z(a); u3z(b); + return pro; +} diff --git a/vere/pkg/noun/jets/d/by_urn.c b/vere/pkg/noun/jets/d/by_urn.c new file mode 100644 index 0000000..5c82876 --- /dev/null +++ b/vere/pkg/noun/jets/d/by_urn.c @@ -0,0 +1,52 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static u3_noun +_by_urn(u3_noun a, u3j_site* sit_u) +{ + if ( u3_nul == a ) { + return u3_nul; + } + else { + u3_noun n_a, l_a, r_a, p_n_a; + u3x_trel(a, &n_a, &l_a, &r_a); + p_n_a = u3h(n_a); + + u3k(p_n_a); + u3k(n_a); + u3k(l_a); + u3k(r_a); + + u3_noun pro = u3nt(u3nc(p_n_a, u3j_gate_slam(sit_u, n_a)), + _by_urn(l_a, sit_u), + _by_urn(r_a, sit_u)); + + u3z(a); + return pro; + } +} + +u3_noun +u3qdb_urn(u3_noun a, u3_noun b) +{ + u3_noun pro; + u3j_site sit_u; + + u3j_gate_prep(&sit_u, u3k(b)); + pro = _by_urn(u3k(a), &sit_u); + u3j_gate_lose(&sit_u); + + return pro; +} + +u3_noun +u3wdb_urn(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdb_urn(a, b); +} diff --git a/vere/pkg/noun/jets/d/in_apt.c b/vere/pkg/noun/jets/d/in_apt.c new file mode 100644 index 0000000..93e7b48 --- /dev/null +++ b/vere/pkg/noun/jets/d/in_apt.c @@ -0,0 +1,121 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static c3_o +_in_apt_140(u3_noun a, u3_weak l, u3_weak r) +{ + if ( u3_nul == a ) { + return c3y; + } + else { + u3_noun n_a, l_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); + + if ( (u3_none != l) && (c3n == u3qc_gor(n_a, l)) ) { + return c3n; + } + + if ( (u3_none != r) && (c3n == u3qc_gor(r, n_a)) ) { + return c3n; + } + + if ( u3_nul != l_a ) { + if ( c3n == u3qc_mor(n_a, u3h(l_a)) ) { + return c3n; + } + + if ( c3n == _in_apt_140(l_a, n_a, r) ) { + return c3n; + } + } + + if ( u3_nul != r_a ) { + if ( c3n == u3qc_mor(n_a, u3h(r_a)) ) { + return c3n; + } + + return _in_apt_140(r_a, l, n_a); + } + + return c3y; + } +} + +u3_noun +u3qdi_apt_140(u3_noun a) +{ + return _in_apt_140(a, u3_none, u3_none); +} + +u3_noun +u3wdi_apt_140(u3_noun cor) +{ + return u3qdi_apt_140(u3x_at(u3x_con_sam, cor)); +} + + +static c3_o +_in_apt(u3_noun a, u3_weak l, u3_weak r) +{ + if ( u3_nul == a ) { + return c3y; + } + else { + u3_noun n_a, l_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); + + if ( (u3_none != l) && + ( (c3y == u3r_sing(n_a, l)) || (c3n == u3qc_gor(n_a, l)) )) { + return c3n; + } + + if ( (u3_none != r) && + ( (c3y == u3r_sing(r, n_a)) || (c3n == u3qc_gor(r, n_a)) )) { + return c3n; + } + + if ( u3_nul != l_a ) { + if ( c3y == u3r_sing(n_a, u3h(l_a)) ) { + return c3n; + } + + if ( c3n == u3qc_mor(n_a, u3h(l_a)) ) { + return c3n; + } + + if ( c3n == _in_apt(l_a, n_a, r) ) { + return c3n; + } + } + + if ( u3_nul != r_a ) { + if ( c3y == u3r_sing(n_a, u3h(r_a)) ) { + return c3n; + } + + if ( c3n == u3qc_mor(n_a, u3h(r_a)) ) { + return c3n; + } + + return _in_apt(r_a, l, n_a); + } + + return c3y; + } +} + +u3_noun +u3qdi_apt(u3_noun a) +{ + return _in_apt(a, u3_none, u3_none); +} + +u3_noun +u3wdi_apt(u3_noun cor) +{ + return u3qdi_apt(u3x_at(u3x_con_sam, cor)); +} diff --git a/vere/pkg/noun/jets/d/in_bif.c b/vere/pkg/noun/jets/d/in_bif.c new file mode 100644 index 0000000..76596b1 --- /dev/null +++ b/vere/pkg/noun/jets/d/in_bif.c @@ -0,0 +1,72 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +/* internal functions +*/ +static u3_noun +_i_bif_putroot(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a) { + return u3nt(u3k(b), u3_nul, u3_nul); + } + else { + u3_noun n_a, lr_a; + u3x_cell(a, &n_a, &lr_a); + + if ( c3y == u3r_sing(b, n_a) ) { + return u3k(a); + } + else { + u3_noun c, n_c, l_c, r_c; + u3_noun d; + u3_noun l_a, r_a; + u3x_cell(lr_a, &l_a, &r_a); + + if ( c3y == u3qc_gor(b, n_a) ) { + c = _i_bif_putroot(l_a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + d = u3nt(u3k(n_c), + u3k(l_c), + u3nt(u3k(n_a), u3k(r_c), u3k(r_a))); + u3z(c); + return d; + } + else { + c = _i_bif_putroot(r_a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + d = u3nt(u3k(n_c), + u3nt(u3k(n_a), u3k(l_a), u3k(l_c)), + u3k(r_c)); + u3z(c); + return d; + } + } + } +} + +u3_noun +u3wdi_bif(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_bif(a, b); +} + +u3_noun +u3qdi_bif(u3_noun a, + u3_noun b) +{ + u3_noun c, n_c, l_c, r_c; + u3_noun d; + + c = _i_bif_putroot(a, b); + u3r_trel(c, &n_c, &l_c, &r_c); + d = u3nc(u3k(l_c), u3k(r_c)); + u3z(c); + return d; +} diff --git a/vere/pkg/noun/jets/d/in_del.c b/vere/pkg/noun/jets/d/in_del.c new file mode 100644 index 0000000..5871a45 --- /dev/null +++ b/vere/pkg/noun/jets/d/in_del.c @@ -0,0 +1,88 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static u3_noun +_rebalance(u3_noun a) +{ + u3_noun l_a, n_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); + + if ( u3_nul == l_a) { + return u3k(r_a); + } + else if ( u3_nul == r_a) { + return u3k(l_a); + } + else { + u3_noun n_l_a, l_l_a, r_l_a; + u3_noun n_r_a, l_r_a, r_r_a; + u3x_trel(l_a, &n_l_a, &l_l_a, &r_l_a); + u3x_trel(r_a, &n_r_a, &l_r_a, &r_r_a); + + if ( c3y == u3qc_mor(n_l_a, n_r_a) ) { + u3_noun new_right = u3nt(u3k(n_a), + u3k(r_l_a), + u3k(r_a)); + + u3_noun ret = u3nt(u3k(n_l_a), + u3k(l_l_a), + _rebalance(new_right)); + u3z(new_right); + + return ret; + } + else { + u3_noun new_left = u3nt(u3k(n_a), + u3k(l_a), + u3k(l_r_a)); + + u3_noun ret = u3nt(u3k(n_r_a), + _rebalance(new_left), + u3k(r_r_a)); + u3z(new_left); + + return ret; + } + } +} + +u3_noun +u3qdi_del(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3_nul; + } + else { + u3_noun l_a, n_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); + + if ( c3y == u3r_sing(n_a, b) ) { + return _rebalance(a); + } + else { + if ( c3y == u3qc_gor(b, n_a) ) { + return u3nt(u3k(n_a), + u3qdi_del(l_a, b), + u3k(r_a)); + } + else { + return u3nt(u3k(n_a), + u3k(l_a), + u3qdi_del(r_a, b)); + } + } + } +} + +u3_noun +u3wdi_del(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_del(a, b); +} diff --git a/vere/pkg/noun/jets/d/in_dif.c b/vere/pkg/noun/jets/d/in_dif.c new file mode 100644 index 0000000..bff391d --- /dev/null +++ b/vere/pkg/noun/jets/d/in_dif.c @@ -0,0 +1,82 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +/* internal functions +*/ + +/* RETAIN +*/ +static u3_noun +_i_dif_join(u3_noun d, + u3_noun e) +{ + if ( u3_nul == d ) { + return u3k(e); + } + else if ( u3_nul == e ) { + return u3k(d); + } + else { + u3_noun n_d, lr_d; + u3_noun n_e, lr_e; + u3x_cell(d, &n_d, &lr_d); + u3x_cell(e, &n_e, &lr_e); + + if ( c3y == u3qc_mor(n_d, n_e) ) { + u3_noun l_d, r_d; + u3x_cell(lr_d, &l_d, &r_d); + + return u3nt(u3k(n_d), + u3k(l_d), + _i_dif_join(r_d, e)); + } + else { + u3_noun l_e, r_e; + u3x_cell(lr_e, &l_e, &r_e); + + return u3nt(u3k(n_e), + _i_dif_join(d, l_e), + u3k(r_e)); + } + } +} + +u3_noun +u3wdi_dif(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_dif(a, b); +} + +u3_noun +u3qdi_dif(u3_noun a, + u3_noun b) +{ + if ( u3_nul == b ) { + return u3k(a); + } + else { + u3_noun n_b, l_b, r_b; + u3_noun c, l_c, r_c; + u3_noun d, e; + + u3x_trel(b, &n_b, &l_b, &r_b); + c = u3qdi_bif(a, n_b); + u3x_cell(c, &l_c, &r_c); + + d = u3qdi_dif(l_c, l_b); + e = u3qdi_dif(r_c, r_b); + u3z(c); + + u3_noun pro = _i_dif_join(d, e); + u3z(d); + u3z(e); + + return pro; + } +} diff --git a/vere/pkg/noun/jets/d/in_gas.c b/vere/pkg/noun/jets/d/in_gas.c new file mode 100644 index 0000000..888e070 --- /dev/null +++ b/vere/pkg/noun/jets/d/in_gas.c @@ -0,0 +1,42 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qdi_gas(u3_noun a, + u3_noun b) +{ + if ( u3_nul == b ) { + return u3k(a); + } + else { + u3_noun i_b, t_b; + u3x_cell(b, &i_b, &t_b); + + u3_noun c = u3qdi_put(a, i_b); + u3_noun d = u3qdi_gas(c, t_b); + u3z(c); + return d; + } +} + +u3_noun +u3wdi_gas(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_gas(a, b); +} + +u3_noun +u3kdi_gas(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qdi_gas(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/d/in_has.c b/vere/pkg/noun/jets/d/in_has.c new file mode 100644 index 0000000..ea6fb5f --- /dev/null +++ b/vere/pkg/noun/jets/d/in_has.c @@ -0,0 +1,45 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qdi_has(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return c3n; + } + else { + u3_noun n_a, lr_a; + u3x_cell(a, &n_a, &lr_a); + + if ( (c3y == u3r_sing(b, n_a)) ) { + return c3y; + } + else { + return ( c3y == u3qc_gor(b, n_a) ) ? u3qdi_has(u3h(lr_a), b) + : u3qdi_has(u3t(lr_a), b); + } + } +} + +u3_noun +u3wdi_has(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_has(a, b); +} + +u3_noun +u3kdi_has(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qdi_has(a, b); + u3z(a); u3z(b); + return c; +} diff --git a/vere/pkg/noun/jets/d/in_int.c b/vere/pkg/noun/jets/d/in_int.c new file mode 100644 index 0000000..fc5bfaa --- /dev/null +++ b/vere/pkg/noun/jets/d/in_int.c @@ -0,0 +1,65 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qdi_int(u3_noun a, u3_noun b) +{ + if ( (u3_nul == a) + || (u3_nul == b) ) + { + return u3_nul; + } + else { + u3_noun n_a, l_a, r_a; + u3_noun n_b, l_b, r_b; + + { + u3_noun lr_a, lr_b; + u3x_cell(a, &n_a, &lr_a); + u3x_cell(b, &n_b, &lr_b); + + if ( c3y == u3qc_mor(n_a, n_b) ) { + u3_noun c; + c = a; a = b; b = c; + c = n_a; n_a = n_b; n_b = c; + c = lr_a; lr_a = lr_b; lr_b = c; + } + + u3x_cell(lr_a, &l_a, &r_a); + u3x_cell(lr_b, &l_b, &r_b); + } + + if ( c3y == u3r_sing(n_b, n_a) ) { + return u3nt(u3k(n_a), + u3qdi_int(l_a, l_b), + u3qdi_int(r_a, r_b)); + } + else if ( c3y == u3qc_gor(n_b, n_a) ) { + u3_noun new_l_b = u3nt(u3k(n_b), u3k(l_b), u3_nul); + u3_noun new_a = u3qdi_int(l_a, new_l_b); + + u3z(new_l_b); + return u3kdi_uni(new_a, u3qdi_int(a, r_b)); + } + else { + u3_noun new_r_b = u3nt(u3k(n_b), u3_nul, u3k(r_b)); + u3_noun new_a = u3qdi_int(r_a, new_r_b); + + u3z(new_r_b); + return u3kdi_uni(new_a, u3qdi_int(a, l_b)); + } + } +} + +u3_noun +u3wdi_int(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_int(a, b); +} diff --git a/vere/pkg/noun/jets/d/in_put.c b/vere/pkg/noun/jets/d/in_put.c new file mode 100644 index 0000000..909d48e --- /dev/null +++ b/vere/pkg/noun/jets/d/in_put.c @@ -0,0 +1,87 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qdi_put(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return u3nt(u3k(b), u3_nul, u3_nul); + } + else { + u3_noun n_a, lr_a; + u3x_cell(a, &n_a, &lr_a); + + if ( c3y == u3r_sing(n_a, b) ) { + return u3k(a); + } + else { + u3_noun c, n_c, l_c, r_c; + u3_noun l_a, r_a; + u3x_cell(lr_a, &l_a, &r_a); + + if ( c3y == u3qc_gor(b, n_a) ) { + c = u3qdi_put(l_a, b); + + if ( c3y == u3qc_mor(n_a, u3h(c)) ) { + return u3nt(u3k(n_a), + c, + u3k(r_a)); + } + else { + u3r_trel(c, &n_c, &l_c, &r_c); + { + u3_noun d = u3nt(u3k(n_c), + u3k(l_c), + u3nt(u3k(n_a), u3k(r_c), u3k(r_a))); + + u3z(c); + return d; + } + } + } + else { + c = u3qdi_put(r_a, b); + + if ( c3y == u3qc_mor(n_a, u3h(c)) ) { + return u3nt(u3k(n_a), + u3k(l_a), + c); + } + else { + u3r_trel(c, &n_c, &l_c, &r_c); + { + u3_noun d = u3nt(u3k(n_c), + u3nt(u3k(n_a), u3k(l_a), u3k(l_c)), + u3k(r_c)); + + u3z(c); + return d; + } + } + } + } + } +} + +u3_noun +u3wdi_put(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_put(a, b); +} + +u3_noun +u3kdi_put(u3_noun a, + u3_noun b) +{ + u3_noun pro = u3qdi_put(a, b); + u3z(a); u3z(b); + return pro; +} diff --git a/vere/pkg/noun/jets/d/in_rep.c b/vere/pkg/noun/jets/d/in_rep.c new file mode 100644 index 0000000..fafdad5 --- /dev/null +++ b/vere/pkg/noun/jets/d/in_rep.c @@ -0,0 +1,52 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +// [a] and [out] are TRANSFERRED +// +static void +_in_rep(u3_noun a, u3j_site* sit_u, u3_noun* out) +{ + if ( u3_nul == a ) { + return; + } + else { + u3_noun n_a, l_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); + + u3k(n_a); + u3k(l_a); + u3k(r_a); + + *out = u3j_gate_slam(sit_u, u3nc(n_a, *out)); + + _in_rep(l_a, sit_u, out); + _in_rep(r_a, sit_u, out); + + u3z(a); + } +} + +u3_noun +u3qdi_rep(u3_noun a, u3_noun b) +{ + u3_noun out = u3k(u3x_at(u3x_sam_3, b)); + u3j_site sit_u; + + u3j_gate_prep(&sit_u, u3k(b)); + _in_rep(u3k(a), &sit_u, &out); + u3j_gate_lose(&sit_u); + + return out; +} + +u3_noun +u3wdi_rep(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_rep(a, b); +} diff --git a/vere/pkg/noun/jets/d/in_run.c b/vere/pkg/noun/jets/d/in_run.c new file mode 100644 index 0000000..2216a5c --- /dev/null +++ b/vere/pkg/noun/jets/d/in_run.c @@ -0,0 +1,59 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +// [a] and [out] are TRANSFERRED +// +static void +_in_run(u3_noun a, u3j_site* sit_u, u3_noun* out) +{ + if ( u3_nul == a ) { + return; + } + else { + u3_noun n_a, l_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); + + u3k(n_a); + u3k(l_a); + u3k(r_a); + + { + u3_noun new = u3j_gate_slam(sit_u, n_a); + u3_noun pro = u3qdi_put(*out, new); + + u3z(new); + u3z(*out); + *out = pro; + } + + _in_run(l_a, sit_u, out); + _in_run(r_a, sit_u, out); + + u3z(a); + } +} + +u3_noun +u3qdi_run(u3_noun a, u3_noun b) +{ + u3_noun out = u3_nul; + u3j_site sit_u; + + u3j_gate_prep(&sit_u, u3k(b)); + _in_run(u3k(a), &sit_u, &out); + u3j_gate_lose(&sit_u); + + return out; +} + +u3_noun +u3wdi_run(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_run(a, b); +} diff --git a/vere/pkg/noun/jets/d/in_tap.c b/vere/pkg/noun/jets/d/in_tap.c new file mode 100644 index 0000000..a9af4f1 --- /dev/null +++ b/vere/pkg/noun/jets/d/in_tap.c @@ -0,0 +1,46 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static u3_noun +_tap_in(u3_noun a, + u3_noun b) +{ + if ( u3_nul == a ) { + return b; + } + else { + u3_noun n_a, l_a, r_a; + u3x_trel(a, &n_a, &l_a, &r_a); + + return _tap_in(r_a, + u3nc(u3k(n_a), + _tap_in(l_a, b))); + } +} + +u3_noun +u3qdi_tap(u3_noun a) +{ + return _tap_in(a, u3_nul); +} + +u3_noun +u3wdi_tap(u3_noun cor) +{ + u3_noun a; + u3x_mean(cor, u3x_con_sam, &a, 0); + return u3qdi_tap(a); +} + +u3_noun +u3kdi_tap(u3_noun a) +{ + u3_noun b = u3qdi_tap(a); + u3z(a); + return b; +} diff --git a/vere/pkg/noun/jets/d/in_uni.c b/vere/pkg/noun/jets/d/in_uni.c new file mode 100644 index 0000000..504ddcb --- /dev/null +++ b/vere/pkg/noun/jets/d/in_uni.c @@ -0,0 +1,98 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +/* internal functions +*/ +static u3_noun +_in_uni(u3_noun a, u3_noun b) +{ + if ( u3_nul == a ) { + return u3k(b); + } + else if ( u3_nul == b ) { + return u3k(a); + } + else { + u3_noun n_a, l_a, r_a, + n_b, l_b, r_b, + neb, sub, naw, pro; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_trel(b, &n_b, &l_b, &r_b); + + if ( c3n == u3qc_mor(n_a, n_b) ) { + if ( c3y == u3r_sing(n_a, n_b) ) { + return u3nt(u3k(n_b), _in_uni(l_a, l_b), _in_uni(r_a, r_b)); + } + else if ( c3y == u3qc_gor(n_a, n_b) ) { + naw = u3nt(u3k(n_a), u3k(l_a), u3_nul); + sub = _in_uni(naw, l_b); + neb = u3nt(u3k(n_b), sub, u3k(r_b)); + pro = _in_uni(r_a, neb); + u3z(naw); u3z(neb); + return pro; + } + else { + naw = u3nt(u3k(n_a), u3_nul, u3k(r_a)); + sub = _in_uni(naw, r_b); + neb = u3nt(u3k(n_b), u3k(l_b), sub); + pro = _in_uni(l_a, neb); + u3z(naw); u3z(neb); + return pro; + } + } + else if ( c3y == u3r_sing(n_b, n_a) ) { + return u3nt(u3k(n_b), _in_uni(l_a, l_b), _in_uni(r_a, r_b)); + } + else if ( c3y == u3qc_gor(n_b, n_a) ) { + neb = u3nt(u3k(n_b), u3k(l_b), u3_nul); + sub = _in_uni(l_a, neb); + naw = u3nt(u3k(n_a), sub, u3k(r_a)); + pro = _in_uni(naw, r_b); + u3z(neb); u3z(naw); + return pro; + } + else { + neb = u3nt(u3k(n_b), u3_nul, u3k(r_b)); + sub = _in_uni(r_a, neb); + naw = u3nt(u3k(n_a), u3k(l_a), sub); + pro = _in_uni(naw, l_b); + u3z(neb); u3z(naw); + return pro; + } + } +} + +u3_noun +u3kdi_uni(u3_noun a, + u3_noun b) +{ + u3_noun c = u3qdi_uni(a, b); + u3z(a); u3z(b); + return c; +} + +u3_noun +u3qdi_uni(u3_noun a, + u3_noun b) +{ + if ( c3y == u3r_sing(a, b) ) { + return u3k(a); + } + else { + return _in_uni(a, b); + } +} + +u3_noun +u3wdi_uni(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0); + return u3qdi_uni(a, b); +} + diff --git a/vere/pkg/noun/jets/d/in_wyt.c b/vere/pkg/noun/jets/d/in_wyt.c new file mode 100644 index 0000000..2ae72fa --- /dev/null +++ b/vere/pkg/noun/jets/d/in_wyt.c @@ -0,0 +1,35 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +STATIC_ASSERT( (UINT32_MAX > u3a_cells), + "width precision" ); + +static c3_w +_wyt_in(u3_noun a) +{ + if ( u3_nul == a ) { + return 0; + } + else { + u3_noun l_a, r_a; + u3x_trel(a, 0, &l_a, &r_a); + + return 1 + _wyt_in(l_a) + _wyt_in(r_a); + } +} + +u3_noun +u3qdi_wyt(u3_noun a) +{ + return u3i_word(_wyt_in(a)); +} + +u3_noun +u3wdi_wyt(u3_noun cor) +{ + return u3qdi_wyt(u3x_at(u3x_con_2, cor)); +} diff --git a/vere/pkg/noun/jets/e/adler.c b/vere/pkg/noun/jets/e/adler.c new file mode 100644 index 0000000..d7e1211 --- /dev/null +++ b/vere/pkg/noun/jets/e/adler.c @@ -0,0 +1,127 @@ +#include +#include +#include +#include +#include +#include +#include + +static void _x_octs(u3_noun octs, u3_atom* p_octs, u3_atom* q_octs) { + + if (c3n == u3r_mean(octs, + 2, p_octs, + 3, q_octs, 0)){ + u3m_bail(c3__exit); + } + + if (c3n == u3a_is_atom(*p_octs) || + c3n == u3a_is_atom(*q_octs)) { + u3m_bail(c3__exit); + } +} + +static c3_o _x_octs_buffer(u3_atom* p_octs, u3_atom *q_octs, + c3_w* p_octs_w, c3_y** buf_y, + c3_w* len_w, c3_w* lead_w) +{ + if (c3n == u3r_safe_word(*p_octs, p_octs_w)) { + return c3n; + } + + *len_w = u3r_met(3, *q_octs); + + if (c3y == u3a_is_cat(*q_octs)) { + *buf_y = (c3_y*)q_octs; + } + else { + u3a_atom* ptr_a = u3a_to_ptr(*q_octs); + *buf_y = (c3_y*)ptr_a->buf_w; + } + + *lead_w = 0; + + if (*p_octs_w > *len_w) { + *lead_w = *p_octs_w - *len_w; + } + else { + *len_w = *p_octs_w; + } + + return c3y; +} + +#define BASE 65521 +#define NMAX 5552 + +u3_noun _qe_adler32(u3_noun octs) +{ + u3_atom p_octs, q_octs; + + _x_octs(octs, &p_octs, &q_octs); + + c3_w p_octs_w, len_w, lead_w; + c3_y *buf_y; + + if (c3n == _x_octs_buffer(&p_octs, &q_octs, + &p_octs_w, &buf_y, + &len_w, &lead_w)) { + return u3_none; + } + + c3_w adler_w, sum2_w; + + adler_w = 0x1; + sum2_w = 0x0; + + c3_w pos_w = 0; + + // Process all non-zero bytes + // + while (pos_w < len_w) { + + c3_w rem_w = (len_w - pos_w); + + if (rem_w > NMAX) { + rem_w = NMAX; + } + + while (rem_w--) { + adler_w += *(buf_y + pos_w++); + sum2_w += adler_w; + } + + adler_w %= BASE; + sum2_w %= BASE; + } + + // Process leading zeros + // + while (pos_w < p_octs_w) { + + c3_w rem_w = (p_octs_w - pos_w); + + if (rem_w > NMAX) { + rem_w = NMAX; + } + + // leading zeros: adler sum is unchanged + sum2_w += rem_w*adler_w; + pos_w += rem_w; + + adler_w %= BASE; + sum2_w %= BASE; + } + + return u3i_word(sum2_w << 16 | adler_w); +} + + +u3_noun +u3we_adler32(u3_noun cor) +{ + u3_noun octs; + + u3x_mean(cor, u3x_sam, &octs, 0); + + return _qe_adler32(octs); +} diff --git a/vere/pkg/noun/jets/e/aes_cbc.c b/vere/pkg/noun/jets/e/aes_cbc.c new file mode 100644 index 0000000..f5369e0 --- /dev/null +++ b/vere/pkg/noun/jets/e/aes_cbc.c @@ -0,0 +1,182 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + +/* All of the CBC hoon truncates its key and prv inputs by passing them to + * the ECB functions, which truncate them, hence the raw u3r_bytes unpacking. + */ + +typedef int (*urcrypt_cbc)(c3_y**, + size_t*, + c3_y*, + c3_y*, + urcrypt_realloc_t); + + static u3_atom + _cqea_cbc_help(c3_y* key_y, u3_atom iv, u3_atom msg, urcrypt_cbc low_f) + { + u3_atom ret; + c3_w met_w; + c3_y iv_y[16]; + c3_y* msg_y = u3r_bytes_all(&met_w, msg); + size_t len = met_w; + + u3r_bytes(0, 16, iv_y, iv); + if ( 0 != (*low_f)(&msg_y, &len, key_y, iv_y, &u3a_realloc) ) { + ret = u3_none; + } + else { + ret = u3i_bytes(len, msg_y); + } + u3a_free(msg_y); + + return ret; + } + + static u3_atom + _cqea_cbca_en(u3_atom key, + u3_atom iv, + u3_atom msg) + { + c3_y key_y[16]; + u3r_bytes(0, 16, key_y, key); + return _cqea_cbc_help(key_y, iv, msg, &urcrypt_aes_cbca_en); + } + + u3_noun + u3wea_cbca_en(u3_noun cor) + { + u3_noun a, b, c; + + if ( c3n == u3r_mean(cor, u3x_sam, &c, 60, &a, 61, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("cbca-en", _cqea_cbca_en(a, b, c)); + } + } + + static u3_atom + _cqea_cbca_de(u3_atom key, + u3_atom iv, + u3_atom msg) + { + c3_y key_y[16]; + u3r_bytes(0, 16, key_y, key); + return _cqea_cbc_help(key_y, iv, msg, &urcrypt_aes_cbca_de); + } + + u3_noun + u3wea_cbca_de(u3_noun cor) + { + u3_noun a, b, c; + + if ( c3n == u3r_mean(cor, u3x_sam, &c, 60, &a, 61, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("cbca-de", _cqea_cbca_de(a, b, c)); + } + } + + static u3_atom + _cqea_cbcb_en(u3_atom key, + u3_atom iv, + u3_atom msg) + { + c3_y key_y[24]; + u3r_bytes(0, 24, key_y, key); + return _cqea_cbc_help(key_y, iv, msg, &urcrypt_aes_cbcb_en); + } + + u3_noun + u3wea_cbcb_en(u3_noun cor) + { + u3_noun a, b, c; + + if ( c3n == u3r_mean(cor, u3x_sam, &c, 60, &a, 61, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("cbcb-en", _cqea_cbcb_en(a, b, c)); + } + } + + static u3_atom + _cqea_cbcb_de(u3_atom key, + u3_atom iv, + u3_atom msg) + { + c3_y key_y[24]; + u3r_bytes(0, 24, key_y, key); + return _cqea_cbc_help(key_y, iv, msg, &urcrypt_aes_cbcb_de); + } + + u3_noun + u3wea_cbcb_de(u3_noun cor) + { + u3_noun a, b, c; + + if ( c3n == u3r_mean(cor, u3x_sam, &c, 60, &a, 61, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("cbcb-de", _cqea_cbcb_de(a, b, c)); + } + } + + static u3_atom + _cqea_cbcc_en(u3_atom key, + u3_atom iv, + u3_atom msg) + { + c3_y key_y[32]; + u3r_bytes(0, 32, key_y, key); + return _cqea_cbc_help(key_y, iv, msg, &urcrypt_aes_cbcc_en); + } + + u3_noun + u3wea_cbcc_en(u3_noun cor) + { + u3_noun a, b, c; + + if ( c3n == u3r_mean(cor, u3x_sam, &c, 60, &a, 61, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("cbcc-en", _cqea_cbcc_en(a, b, c)); + } + } + + static u3_atom + _cqea_cbcc_de(u3_atom key, + u3_atom iv, + u3_atom msg) + { + c3_y key_y[32]; + u3r_bytes(0, 32, key_y, key); + return _cqea_cbc_help(key_y, iv, msg, &urcrypt_aes_cbcc_de); + } + + u3_noun + u3wea_cbcc_de(u3_noun cor) + { + u3_noun a, b, c; + + if ( c3n == u3r_mean(cor, u3x_sam, &c, 60, &a, 61, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("cbcc-de", _cqea_cbcc_de(a, b, c)); + } + } diff --git a/vere/pkg/noun/jets/e/aes_ecb.c b/vere/pkg/noun/jets/e/aes_ecb.c new file mode 100644 index 0000000..eff536d --- /dev/null +++ b/vere/pkg/noun/jets/e/aes_ecb.c @@ -0,0 +1,166 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + +typedef int (*urcrypt_ecb)(c3_y*, c3_y[16], c3_y[16]); + + + /* All of the ECB hoon truncates its key and blk inputs with +fe, in these + * jets we unpack with an unconditional u3r_bytes */ + + static u3_atom + _cqea_ecb_help(c3_y* key_y, u3_atom blk, urcrypt_ecb low_f) + { + c3_y blk_y[16], out_y[16]; + + u3r_bytes(0, 16, blk_y, blk); + + if ( 0 != (*low_f)(key_y, blk_y, out_y) ) { + return u3_none; + } + else { + return u3i_bytes(16, out_y); + } + } + + static u3_atom + _cqea_ecba_en(u3_atom key, + u3_atom blk) + { + c3_y key_y[16]; + u3r_bytes(0, 16, key_y, key); + return _cqea_ecb_help(key_y, blk, &urcrypt_aes_ecba_en); + } + + u3_noun + u3wea_ecba_en(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("ecba-en", _cqea_ecba_en(a, b)); + } + } + + static u3_atom + _cqea_ecba_de(u3_atom key, + u3_atom blk) + { + c3_y key_y[16]; + u3r_bytes(0, 16, key_y, key); + return _cqea_ecb_help(key_y, blk, &urcrypt_aes_ecba_de); + } + + u3_noun + u3wea_ecba_de(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("ecba-de", _cqea_ecba_de(a, b)); + } + } + + static u3_atom + _cqea_ecbb_en(u3_atom key, + u3_atom blk) + { + c3_y key_y[24]; + u3r_bytes(0, 24, key_y, key); + return _cqea_ecb_help(key_y, blk, &urcrypt_aes_ecbb_en); + } + + u3_noun + u3wea_ecbb_en(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("ecbb-en", _cqea_ecbb_en(a, b)); + } + } + + static u3_atom + _cqea_ecbb_de(u3_atom key, + u3_atom blk) + { + c3_y key_y[24]; + u3r_bytes(0, 24, key_y, key); + return _cqea_ecb_help(key_y, blk, &urcrypt_aes_ecbb_de); + } + + u3_noun + u3wea_ecbb_de(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("ecbb-de", _cqea_ecbb_de(a, b)); + } + } + + static u3_atom + _cqea_ecbc_en(u3_atom key, + u3_atom blk) + { + c3_y key_y[32]; + u3r_bytes(0, 32, key_y, key); + return _cqea_ecb_help(key_y, blk, &urcrypt_aes_ecbc_en); + } + + u3_noun + u3wea_ecbc_en(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("ecbc-en", _cqea_ecbc_en(a, b)); + } + } + + static u3_atom + _cqea_ecbc_de(u3_atom key, + u3_atom blk) + { + c3_y key_y[32]; + u3r_bytes(0, 32, key_y, key); + return _cqea_ecb_help(key_y, blk, &urcrypt_aes_ecbc_de); + } + + u3_noun + u3wea_ecbc_de(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("ecbc-de", _cqea_ecbc_de(a, b)); + } + } diff --git a/vere/pkg/noun/jets/e/aes_siv.c b/vere/pkg/noun/jets/e/aes_siv.c new file mode 100644 index 0000000..f88ba6a --- /dev/null +++ b/vere/pkg/noun/jets/e/aes_siv.c @@ -0,0 +1,370 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + +typedef int (*urcrypt_siv)(c3_y*, size_t, + urcrypt_aes_siv_data*, size_t, + c3_y*, c3_y[16], c3_y*); + + +// soc_w = number of items +// mat_w = size in bytes of assoc array +// dat_w = size of allocation (array + atom storage) +static void +_cqea_measure_ads(u3_noun ads, c3_w* soc_w, c3_w *mat_w, c3_w *dat_w) +{ + u3_noun i, t; + c3_w a_w, b_w, tmp_w; + + for ( a_w = b_w = 0, t = ads; u3_nul != t; ++a_w ) { + u3x_cell(t, &i, &t); + if ( c3n == u3ud(i) ) { + u3m_bail(c3__exit); + return; + } + else { + tmp_w = b_w; + b_w += u3r_met(3, i); + if ( b_w < tmp_w ) { + u3m_bail(c3__fail); + return; + } + } + } + + // check for size overflows + tmp_w = a_w * sizeof(urcrypt_aes_siv_data); + if ( (tmp_w / a_w) != sizeof(urcrypt_aes_siv_data) ) { + u3m_bail(c3__fail); + } + else if ( (*dat_w = tmp_w + b_w) < tmp_w ) { + u3m_bail(c3__fail); + } + else { + *soc_w = a_w; + *mat_w = tmp_w; + } +} + +// assumes ads is a valid (list @) because it's already been measured +static void +_cqea_encode_ads(u3_noun ads, + c3_w mat_w, + urcrypt_aes_siv_data *dat_u) +{ + c3_w met_w; + u3_noun i, t; + urcrypt_aes_siv_data *cur_u; + c3_y *dat_y = ((c3_y*) dat_u) + mat_w; + + for ( cur_u = dat_u, t = ads; u3_nul != t; t = u3t(t), ++cur_u ) { + i = u3h(t); + met_w = u3r_met(3, i); + u3r_bytes(0, met_w, dat_y, i); + cur_u->length = met_w; + cur_u->bytes = dat_y; + dat_y += met_w; + } +} + +static void +_cqea_ads_free(urcrypt_aes_siv_data *dat_u) +{ + if ( NULL != dat_u ) { + u3a_free(dat_u); + } +} + +static urcrypt_aes_siv_data* +_cqea_ads_alloc(u3_noun ads, c3_w *soc_w) +{ + if ( !ads ) { + *soc_w = 0; + return NULL; + } + else { + c3_w mat_w, dat_w; + urcrypt_aes_siv_data *dat_u; + + _cqea_measure_ads(ads, soc_w, &mat_w, &dat_w); + dat_u = u3a_malloc(dat_w); + _cqea_encode_ads(ads, mat_w, dat_u); + return dat_u; + } +} + +static u3_noun +_cqea_siv_en(c3_y* key_y, + c3_w key_w, + u3_noun ads, + u3_atom txt, + urcrypt_siv low_f) +{ + u3_noun ret; + c3_w txt_w, soc_w; + c3_y *txt_y, *out_y, iv_y[16]; + urcrypt_aes_siv_data *dat_u; + + dat_u = _cqea_ads_alloc(ads, &soc_w); + txt_y = u3r_bytes_all(&txt_w, txt); + out_y = u3a_malloc(txt_w); + + ret = ( 0 != (*low_f)(txt_y, txt_w, dat_u, soc_w, key_y, iv_y, out_y) ) + ? u3_none + : u3nt(u3i_bytes(16, iv_y), + u3i_words(1, &txt_w), + u3i_bytes(txt_w, out_y)); + + u3a_free(txt_y); + u3a_free(out_y); + _cqea_ads_free(dat_u); + return ret; +} + +static u3_noun +_cqea_siv_de(c3_y* key_y, + c3_w key_w, + u3_noun ads, + u3_atom iv, + u3_atom len, + u3_atom txt, + urcrypt_siv low_f) +{ + c3_w txt_w; + if ( !u3r_word_fit(&txt_w, len) ) { + return u3m_bail(c3__fail); + } + else { + u3_noun ret; + c3_w soc_w; + c3_y *txt_y, *out_y, iv_y[16]; + urcrypt_aes_siv_data *dat_u; + + u3r_bytes(0, 16, iv_y, iv); + dat_u = _cqea_ads_alloc(ads, &soc_w); + txt_y = u3r_bytes_alloc(0, txt_w, txt); + out_y = u3a_malloc(txt_w); + + if ( 0 != (*low_f)(txt_y, txt_w, dat_u, soc_w, key_y, iv_y, out_y) ) { + return u3m_bail(c3__evil); + } + + ret = u3nc(0, u3i_bytes(txt_w, out_y)); + + u3a_free(txt_y); + u3a_free(out_y); + _cqea_ads_free(dat_u); + + return ret; + } +} + +// the siv* hoon doesn't explicitly check keysizes, but all of these functions +// have fixed maximum keysizes, so we will punt if we get a key that is too +// large. + +static u3_noun +_cqea_siva_en(u3_atom key, + u3_noun ads, + u3_atom txt) +{ + if ( u3r_met(3, key) > 32 ) { + return u3_none; + } + else { + c3_y key_y[32]; + u3r_bytes(0, 32, key_y, key); + return _cqea_siv_en(key_y, 32, ads, txt, &urcrypt_aes_siva_en); + } +} + +u3_noun +u3wea_siva_en(u3_noun cor) +{ + u3_noun key, ads, txt; + + if ( c3n == u3r_mean(cor, u3x_sam, &txt, + u3x_con_sam_2, &key, + u3x_con_sam_3, &ads, 0) || + c3n == u3ud(key) || + c3n == u3ud(txt) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("siva-en", _cqea_siva_en(key, ads, txt)); + } +} + +static u3_noun +_cqea_siva_de(u3_atom key, + u3_noun ads, + u3_atom iv, + u3_atom len, + u3_atom txt) +{ + if ( u3r_met(3, key) > 32 ) { + return u3_none; + } + else { + c3_y key_y[32]; + u3r_bytes(0, 32, key_y, key); + return _cqea_siv_de(key_y, 32, ads, iv, len, txt, &urcrypt_aes_siva_de); + } +} + +u3_noun +u3wea_siva_de(u3_noun cor) +{ + u3_noun key, ads, iv, len, txt; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &iv, + u3x_sam_6, &len, + u3x_sam_7, &txt, + u3x_con_sam_2, &key, + u3x_con_sam_3, &ads, 0) || + c3n == u3ud(key) || + c3n == u3ud(txt) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("siva-de", _cqea_siva_de(key, ads, iv, len, txt)); + } +} + +static u3_noun +_cqea_sivb_en(u3_atom key, + u3_noun ads, + u3_atom txt) +{ + if ( u3r_met(3, key) > 48 ) { + return u3_none; + } + else { + c3_y key_y[48]; + u3r_bytes(0, 48, key_y, key); + return _cqea_siv_en(key_y, 48, ads, txt, &urcrypt_aes_sivb_en); + } +} + + +u3_noun +u3wea_sivb_en(u3_noun cor) +{ + u3_noun key, ads, txt; + + if ( c3n == u3r_mean(cor, u3x_sam, &txt, + u3x_con_sam_2, &key, + u3x_con_sam_3, &ads, 0) || + c3n == u3ud(key) || + c3n == u3ud(txt) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("sivb-en", _cqea_sivb_en(key, ads, txt)); + } +} + +static u3_noun +_cqea_sivb_de(u3_atom key, + u3_noun ads, + u3_atom iv, + u3_atom len, + u3_atom txt) +{ + if ( u3r_met(3, key) > 48 ) { + return u3_none; + } + else { + c3_y key_y[48]; + u3r_bytes(0, 48, key_y, key); + return _cqea_siv_de(key_y, 48, ads, iv, len, txt, &urcrypt_aes_sivb_de); + } +} + +u3_noun +u3wea_sivb_de(u3_noun cor) +{ + u3_noun key, ads, iv, len, txt; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &iv, + u3x_sam_6, &len, + u3x_sam_7, &txt, + u3x_con_sam_2, &key, + u3x_con_sam_3, &ads, 0) || + c3n == u3ud(key) || + c3n == u3ud(txt) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("sivb-de", _cqea_sivb_de(key, ads, iv, len, txt)); + } +} + +static u3_noun +_cqea_sivc_en(u3_atom key, + u3_noun ads, + u3_atom txt) +{ + if ( u3r_met(3, key) > 64 ) { + return u3_none; + } + else { + c3_y key_y[64]; + u3r_bytes(0, 64, key_y, key); + return _cqea_siv_en(key_y, 64, ads, txt, &urcrypt_aes_sivc_en); + } +} + +u3_noun +u3wea_sivc_en(u3_noun cor) +{ + u3_noun key, ads, txt; + + if ( c3n == u3r_mean(cor, u3x_sam, &txt, + u3x_con_sam_2, &key, + u3x_con_sam_3, &ads, 0) || + c3n == u3ud(key) || + c3n == u3ud(txt) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("sivc-en", _cqea_sivc_en(key, ads, txt)); + } +} + +static u3_noun +_cqea_sivc_de(u3_atom key, + u3_noun ads, + u3_atom iv, + u3_atom len, + u3_atom txt) +{ + if ( u3r_met(3, key) > 64 ) { + return u3_none; + } + else { + c3_y key_y[64]; + u3r_bytes(0, 64, key_y, key); + return _cqea_siv_de(key_y, 64, ads, iv, len, txt, &urcrypt_aes_sivc_de); + } +} + +u3_noun +u3wea_sivc_de(u3_noun cor) +{ + u3_noun key, ads, iv, len, txt; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &iv, + u3x_sam_6, &len, + u3x_sam_7, &txt, + u3x_con_sam_2, &key, + u3x_con_sam_3, &ads, 0) || + c3n == u3ud(key) || + c3n == u3ud(txt) ) { + return u3m_bail(c3__exit); + } else { + return u3l_punt("sivc-de", _cqea_sivc_de(key, ads, iv, len, txt)); + } +} diff --git a/vere/pkg/noun/jets/e/argon2.c b/vere/pkg/noun/jets/e/argon2.c new file mode 100644 index 0000000..e52d42c --- /dev/null +++ b/vere/pkg/noun/jets/e/argon2.c @@ -0,0 +1,151 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + +/* helpers +*/ + + static int + argon2_alloc(uint8_t** output, size_t bytes) + { + *output = u3a_malloc(bytes); + return 1; + } + + static void + argon2_free(uint8_t* memory, size_t bytes) + { + u3a_free(memory); + } + + static c3_t + _cqear_unpack_type(c3_y* out, u3_atom in) + { + switch ( in ) { + default: + return 0; + case c3__d: + *out = urcrypt_argon2_d; + return 1; + case c3__i: + *out = urcrypt_argon2_i; + return 1; + case c3__id: + *out = urcrypt_argon2_id; + return 1; + case c3__u: + *out = urcrypt_argon2_u; + return 1; + } + } + + + static u3_atom + _cqe_argon2( // configuration params, + u3_atom out, u3_atom type, u3_atom version, + u3_atom threads, u3_atom mem_cost, u3_atom time_cost, + u3_atom wik, u3_atom key, u3_atom wix, u3_atom extra, + // input params + u3_atom wid, u3_atom dat, u3_atom wis, u3_atom sat ) + { + c3_y typ_u; + c3_w out_w, wik_w, wix_w, wid_w, wis_w, ver_w, ted_w, mem_w, tim_w; + + if ( !(u3r_word_fit(&out_w, out) && + u3r_word_fit(&wik_w, wik) && + u3r_word_fit(&wix_w, wix) && + u3r_word_fit(&wid_w, wid) && + u3r_word_fit(&wis_w, wis)) ) { + // too big to allocate + return u3m_bail(c3__fail); + } + else if ( !(_cqear_unpack_type(&typ_u, type) && + u3r_word_fit(&ver_w, version) && + u3r_word_fit(&ted_w, threads) && + u3r_word_fit(&mem_w, mem_cost) && + u3r_word_fit(&tim_w, time_cost)) ) { + return u3_none; + } + else { + u3_atom ret; + c3_y *key_y = u3r_bytes_alloc(0, wik_w, key), + *ex_y = u3r_bytes_alloc(0, wix_w, extra), + *dat_y = u3r_bytes_alloc(0, wid_w, dat), + *sat_y = u3r_bytes_alloc(0, wis_w, sat), + *out_y = u3a_malloc(out_w); + + const c3_c* err_c = urcrypt_argon2( + typ_u, ver_w, ted_w, mem_w, tim_w, + wik_w, key_y, + wix_w, ex_y, + wid_w, dat_y, + wis_w, sat_y, + out_w, out_y, + &argon2_alloc, + &argon2_free); + + u3a_free(key_y); + u3a_free(ex_y); + u3a_free(dat_y); + u3a_free(sat_y); + + if ( NULL == err_c ) { + ret = u3i_bytes(out_w, out_y); + } + else { + ret = u3_none; + u3l_log("argon2-error: %s", err_c); + } + + u3a_free(out_y); + return ret; + } + } + + u3_noun + u3we_argon2(u3_noun cor) + { + u3_noun // configuration params + out, type, version, + threads, mem_cost, time_cost, + wik, key, wix, extra, + // input params + wid, dat, wis, sat, + // for use during unpacking + wmsg, wsat, arg, brg, wkey, wext; + + // the hoon code for argon2 takes configuration parameters, + // and then produces a gate. we jet that inner gate. + // this does mean that the config params have gotten buried + // pretty deep in the subject, hence the +510. + if ( c3n == u3r_mean(cor, u3x_sam_2, &wmsg, + u3x_sam_3, &wsat, + 510, &arg, 0) || + u3r_cell(wmsg, &wid, &dat) || u3ud(wid) || u3ud(dat) || + u3r_cell(wsat, &wis, &sat) || u3ud(wis) || u3ud(sat) || + // + u3r_qual(arg, &out, &type, &version, &brg) || + u3ud(out) || u3ud(type) || u3ud(version) || + // + u3r_qual(brg, &threads, &mem_cost, &time_cost, &arg) || + u3ud(threads) || u3ud(mem_cost) || u3ud(time_cost) || + // + u3r_cell(arg, &wkey, &wext) || + u3r_cell(wkey, &wik, &key) || u3ud(wik) || u3ud(key) || + u3r_cell(wext, &wix, &extra) || u3ud(wix) || u3ud(extra) + ) + { + return u3m_bail(c3__exit); + } + else { + return u3l_punt("argon2", + _cqe_argon2(out, type, version, + threads, mem_cost, time_cost, + wik, key, wix, extra, + wid, dat, wis, sat)); + } + } diff --git a/vere/pkg/noun/jets/e/base.c b/vere/pkg/noun/jets/e/base.c new file mode 100644 index 0000000..8bbc761 --- /dev/null +++ b/vere/pkg/noun/jets/e/base.c @@ -0,0 +1,152 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qe_en_base16(u3_atom len, u3_atom dat) +{ + if ( c3n == u3a_is_cat(len) ) { + return u3m_bail(c3__fail); + } + else { + c3_w len_w = (c3_w)len; + u3i_slab sab_u; + + u3i_slab_bare(&sab_u, 4, len_w); + sab_u.buf_w[sab_u.len_w - 1] = 0; + + { + c3_y* buf_y = sab_u.buf_y; + c3_y inp_y; + + while ( len_w-- ) { + inp_y = u3r_byte(len_w, dat); + + *buf_y++ = u3s_dit_y[inp_y >> 4]; + *buf_y++ = u3s_dit_y[inp_y & 0xf]; + } + } + + return u3i_slab_moot_bytes(&sab_u); + } +} + +static inline c3_o +_of_hex_digit(c3_y inp_y, c3_y* out_y) +{ + if ( inp_y >= '0' && inp_y <= '9' ) { + *out_y = inp_y - '0'; + return c3y; + } + else if ( inp_y >= 'a' && inp_y <= 'f' ) { + *out_y = inp_y - 87; + return c3y; + } + else if ( inp_y >= 'A' && inp_y <= 'F' ) { + *out_y = inp_y - 55; + return c3y; + } + + return c3n; +} + +static inline c3_o +_of_hex_odd(u3_atom inp, c3_w len_w, c3_w byt_w, c3_y* buf_y) +{ + c3_y low_y, hig_y, lit_y, hit_y; + + hig_y = u3r_byte(--byt_w, inp); + + while ( --len_w ) { + low_y = u3r_byte(--byt_w, inp); + + if ( (c3n == _of_hex_digit(low_y, &lit_y)) + || (c3n == _of_hex_digit(hig_y, &hit_y)) ) + { + return c3n; + } + else { + *buf_y++ = (hit_y & 0xf) ^ (lit_y << 4); + } + + hig_y = u3r_byte(--byt_w, inp); + } + + if ( c3n == _of_hex_digit(hig_y, &hit_y) ) { + return c3n; + } + else { + *buf_y = hit_y & 0xf; + } + + return c3y; +} + +static inline c3_o +_of_hex_even(u3_atom inp, c3_w len_w, c3_y* buf_y) +{ + c3_y lit_y, hit_y; + c3_s inp_s; + + while ( len_w-- ) { + inp_s = u3r_short(len_w, inp); + + if ( (c3n == _of_hex_digit(inp_s & 0xff, &lit_y)) + || (c3n == _of_hex_digit(inp_s >> 8, &hit_y)) ) + { + return c3n; + } + else { + *buf_y++ = (hit_y & 0xf) ^ (lit_y << 4); + } + } + + return c3y; +} + +u3_noun +u3qe_de_base16(u3_atom inp) +{ + c3_w len_w = u3r_met(4, inp); + u3i_slab sab_u; + + u3i_slab_bare(&sab_u, 3, len_w); + sab_u.buf_w[sab_u.len_w - 1] = 0; + + // even byte-length input can be parsed in aligned, 16-bit increments, + // but odd byte-length input cannot, and is expressed more simply in bytes. + // + { + c3_w byt_w = u3r_met(3, inp); + c3_o ret_o = ( byt_w & 1 ) + ? _of_hex_odd(inp, len_w, byt_w, sab_u.buf_y) + : _of_hex_even(inp, len_w, sab_u.buf_y); + + if ( c3n == ret_o ) { + u3i_slab_free(&sab_u); + return u3_nul; + } + else { + u3_noun dat = u3i_slab_mint_bytes(&sab_u); + return u3nt(u3_nul, u3i_word(len_w), dat); + } + } +} + +u3_noun +u3we_en_base16(u3_noun cor) +{ + u3_noun a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qe_en_base16(u3x_atom(a), u3x_atom(b)); +} + +u3_noun +u3we_de_base16(u3_noun cor) +{ + u3_noun sam = u3x_at(u3x_sam, cor); + return u3qe_de_base16(u3x_atom(sam)); +} diff --git a/vere/pkg/noun/jets/e/blake.c b/vere/pkg/noun/jets/e/blake.c new file mode 100644 index 0000000..cac4c48 --- /dev/null +++ b/vere/pkg/noun/jets/e/blake.c @@ -0,0 +1,163 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqe_blake2b(u3_atom wid, u3_atom dat, + u3_atom wik, u3_atom dak, + u3_atom out) + { + c3_w wid_w; + if ( !u3r_word_fit(&wid_w, wid) ) { + // impossible to represent an atom this large + return u3m_bail(c3__fail); + } + else { + // the hoon adjusts these widths to its liking + int err; + c3_y out_y[64], dak_y[64]; + c3_w wik_w = c3_min(wik, 64), + out_w = c3_max(1, c3_min(out, 64)); + c3_y *dat_y = u3r_bytes_alloc(0, wid_w, dat); + + u3r_bytes(0, wik_w, dak_y, dak); + err = urcrypt_blake2(wid_w, dat_y, wik_w, dak_y, out_w, out_y); + u3a_free(dat_y); + + if ( 0 == err ) { + return u3i_bytes(out_w, out_y); + } + else { + return u3_none; + } + } + } + + u3_noun + u3we_blake2b(u3_noun cor) + { + u3_noun msg, key, out, // arguments + wid, dat, // destructured msg + wik, dak; // destructured key + + if ( c3n == u3r_mean(cor, u3x_sam_2, &msg, + u3x_sam_6, &key, + u3x_sam_7, &out, 0) || + u3r_cell(msg, &wid, &dat) || u3ud(wid) || u3ud(dat) || + u3r_cell(key, &wik, &dak) || u3ud(wik) || u3ud(dak) || + u3ud(out) ) + { + return u3m_bail(c3__exit); + } else { + return u3l_punt("blake2b", _cqe_blake2b(wid, dat, wik, dak, out)); + } + } + + static u3_atom + _cqe_blake3_hash(u3_atom wid, u3_atom dat, + u3_atom key, u3_atom flags, u3_atom out) + { + c3_w wid_w, out_w; + if ( !u3r_word_fit(&wid_w, wid) || !u3r_word_fit(&out_w, out) ) { + return u3m_bail(c3__fail); + } + else { + c3_y key_y[32]; + u3r_bytes(0, 32, key_y, key); + c3_y flags_y = u3r_byte(0, flags); + c3_y *dat_y = u3r_bytes_alloc(0, wid_w, dat); + u3i_slab sab_u; + u3i_slab_bare(&sab_u, 3, out_w); + c3_y* out_y = sab_u.buf_y; + urcrypt_blake3_hash(wid_w, dat_y, key_y, flags_y, out, out_y); + u3a_free(dat_y); + return u3i_slab_mint(&sab_u); + } + } + + u3_noun + u3we_blake3_hash(u3_noun cor) + { + u3_noun out, msg, // arguments + wid, dat, // destructured msg + sam, key, flags; // context + + if ( c3n == u3r_mean(cor, u3x_sam_2, &out, + u3x_sam_3, &msg, + u3x_con_sam, &sam, 0) || + u3ud(out) || + u3r_cell(msg, &wid, &dat) || u3ud(wid) || u3ud(dat) || + u3r_cell(sam, &key, &flags) || u3ud(key) || u3ud(flags) ) + { + return u3m_bail(c3__exit); + } else { + return u3l_punt("blake3_hash", _cqe_blake3_hash(wid, dat, key, flags, out)); + } + } + + static u3_noun + _cqe_blake3_chunk_output(u3_atom wid, u3_atom dat, u3_atom cv, u3_atom counter, u3_atom flags) + { + c3_w wid_w; + if ( !u3r_word_fit(&wid_w, wid) ) { + return u3m_bail(c3__fail); + } else { + c3_y cv_y[32], block_y[64], block_len; + c3_y *dat_y = u3r_bytes_alloc(0, wid_w, dat); + c3_d counter_d = u3r_chub(0, counter); + c3_y flags_y = u3r_byte(0, flags); + u3r_bytes(0, 32, cv_y, cv); + urcrypt_blake3_chunk_output(wid_w, dat_y, cv_y, block_y, &block_len, &counter_d, &flags_y); + return u3i_cell(u3i_bytes(32, cv_y), u3i_qual(u3k(counter), u3i_bytes(64, block_y), block_len, flags_y)); + } + } + + u3_noun + u3we_blake3_chunk_output(u3_noun cor) + { + u3_noun counter, msg, // arguments + wid, dat, // destructured msg + key, flags; // context + + if ( c3n == u3r_mean(cor, u3x_sam_2, &counter, + u3x_sam_3, &msg, + u3x_con_sam_2, &key, + u3x_con_sam_3, &flags, 0) || + u3r_cell(msg, &wid, &dat) || u3ud(wid) || u3ud(dat) || + u3ud(key) || u3ud(flags)) + { + return u3m_bail(c3__exit); + } else { + return u3l_punt("blake3_chunk_output", _cqe_blake3_chunk_output(wid, dat, key, counter, flags)); + } + } + + static u3_atom + _cqe_blake3_compress(u3_atom cv, u3_atom counter, + u3_atom block, u3_atom block_len, u3_atom flags) + { + c3_y cv_y[32], block_y[64], out_y[64]; + u3r_bytes(0, 32, cv_y, cv); + u3r_bytes(0, 64, block_y, block); + urcrypt_blake3_compress(cv_y, block_y, block_len, counter, flags, out_y); + return u3i_bytes(64, out_y); + } + + u3_noun + u3we_blake3_compress(u3_noun cor) + { + u3_noun output = u3x_at(u3x_sam, cor); + u3_noun cv, counter, block, block_len, flags; // destructured output + + if ( u3r_quil(output, &cv, &counter, &block, &block_len, &flags) || + u3ud(cv) || u3ud(block) || u3ud(block_len) || u3ud(counter) || u3ud(flags)) + { + return u3m_bail(c3__exit); + } else { + return u3l_punt("blake3_compress", _cqe_blake3_compress(cv, counter, block, block_len, flags)); + } + } diff --git a/vere/pkg/noun/jets/e/bytestream.c b/vere/pkg/noun/jets/e/bytestream.c new file mode 100644 index 0000000..71761e1 --- /dev/null +++ b/vere/pkg/noun/jets/e/bytestream.c @@ -0,0 +1,1247 @@ +#include +#include +#include +#include +#include +#include +#include + +// XX do not crash on indirect atoms, but default to Hoon +// XX use u3i_word to imprison all indirect atoms +// +static void +_x_octs(u3_noun octs, u3_atom* p_octs, u3_atom* q_octs) { + + if (c3n == u3r_mean(octs, + 2, p_octs, + 3, q_octs, 0)){ + u3m_bail(c3__exit); + } + + if (c3n == u3a_is_atom(*p_octs) || + c3n == u3a_is_atom(*q_octs)) { + u3m_bail(c3__exit); + } +} +static c3_o +_x_octs_buffer(u3_atom* p_octs, u3_atom *q_octs, + c3_w* p_octs_w, c3_y** buf_y, + c3_w* len_w, c3_w* lead_w) +{ + if (c3n == u3r_safe_word(*p_octs, p_octs_w)) { + return c3n; + } + + *len_w = u3r_met(3, *q_octs); + + if (c3y == u3a_is_cat(*q_octs)) { + *buf_y = (c3_y*)q_octs; + } + else { + u3a_atom* ptr_a = u3a_to_ptr(*q_octs); + *buf_y = (c3_y*)ptr_a->buf_w; + } + + *lead_w = 0; + + if (*p_octs_w > *len_w) { + *lead_w = *p_octs_w - *len_w; + } + else { + *len_w = *p_octs_w; + } + + return c3y; +} + +u3_noun +_qe_bytestream_rip_octs(u3_atom p_octs, u3_atom q_octs) { + + c3_w p_octs_w, len_w, lead_w; + c3_y* buf_y; + + if (c3n == _x_octs_buffer(&p_octs, &q_octs, + &p_octs_w, &buf_y, + &len_w, &lead_w)){ + return u3_none; + } + + if (p_octs_w == 0) { + return u3_nul; + } + + u3_noun rip = u3_nul; + + while (lead_w--) { + rip = u3nc(0x0, rip); + } + + buf_y += len_w - 1; + + while (len_w--) { + rip = u3nc(*(buf_y--), rip); + } + + return rip; +} + +u3_noun +u3we_bytestream_rip_octs(u3_noun cor){ + + u3_noun sam = u3x_at(u3x_sam, cor); + + u3_atom p_octs, q_octs; + _x_octs(sam, &p_octs, &q_octs); + + return _qe_bytestream_rip_octs(p_octs, q_octs); + +} + +u3_noun +_qe_bytestream_cat_octs(u3_noun octs_a, u3_noun octs_b) { + + u3_atom p_octs_a, p_octs_b; + u3_atom q_octs_a, q_octs_b; + + _x_octs(octs_a, &p_octs_a, &q_octs_a); + _x_octs(octs_b, &p_octs_b, &q_octs_b); + + c3_w p_octs_a_w, p_octs_b_w; + c3_w len_w, lem_w; + c3_w lead_w, leaf_w; + + c3_y* sea_y; + c3_y* seb_y; + + if (c3n == _x_octs_buffer(&p_octs_a, &q_octs_a, + &p_octs_a_w, &sea_y, + &len_w, &lead_w)) { + return u3_none; + } + + if (c3n == _x_octs_buffer(&p_octs_b, &q_octs_b, + &p_octs_b_w, &seb_y, + &lem_w, &leaf_w)) { + return u3_none; + } + + if (p_octs_a_w == 0) { + return u3k(octs_b); + } + + if (p_octs_b_w == 0) { + return u3k(octs_a); + } + + c3_d p_octs_d = p_octs_a_w + p_octs_b_w; + + u3_noun ret; + + // Both a and b are 0. + // + if (len_w == 0 && lem_w == 0) { + ret = u3nc(u3i_chub(p_octs_d), u3i_word(0)); + } + else { + u3i_slab sab_u; + + u3i_slab_bare(&sab_u, 3, (c3_d)p_octs_a_w + lem_w); + sab_u.buf_w[sab_u.len_w - 1] = 0; + + memcpy(sab_u.buf_y, sea_y, len_w); + memset(sab_u.buf_y + len_w, 0, lead_w); + memcpy(sab_u.buf_y + p_octs_a_w, seb_y, lem_w); + + u3_noun q_octs = u3i_slab_moot(&sab_u); + ret = u3nc(u3i_chub(p_octs_d), q_octs); + } + return ret; +} + +u3_noun +u3we_bytestream_cat_octs(u3_noun cor) { + + u3_noun octs_a, octs_b; + + u3x_mean(cor, u3x_sam_2, &octs_a, u3x_sam_3, &octs_b, 0); + + return _qe_bytestream_cat_octs(octs_a, octs_b); + +} + +u3_noun +_qe_bytestream_can_octs(u3_noun octs_list) { + + if (u3_nul == octs_list) { + return u3nc(0, 0); + } + + if (u3_nul == u3t(octs_list)) { + return u3k(u3h(octs_list)); + } + + /* We can octs in two steps: + * first loop iteration computes the total required + * buffer size in bytes, factoring in the leading bytes + * of the final octs. The second loop iterates over each octs, + * copying the data to the output buffer. + */ + + // Compute total size + // + c3_d tot_d = 0; + + u3_noun octs_list_start = octs_list; + u3_noun octs = u3_none; + // Last non-zero octs + u3_noun last_octs = u3_none; + + while (octs_list != u3_nul) { + + octs = u3h(octs_list); + + if (c3n == u3a_is_atom(u3h(octs)) || + c3n == u3a_is_atom(u3t(octs))) { + u3m_bail(c3__exit); + } + c3_w p_octs_w; + + if (c3n == u3r_safe_word(u3h(octs), &p_octs_w)) { + u3z(octs_list); + return u3_none; + } + // Check for overflow + // + if ( p_octs_w > (UINT64_MAX - tot_d)){ + return u3_none; + } + tot_d += p_octs_w; + + octs_list = u3t(octs_list); + } + + // Compute leading zeros of last non-zero octs -- the buffer + // size is decreased by this much. + // + // =leading-zeros (sub p.octs (met 3 q.octs)) + // + // p.octs fits into a word -- this has been verified + // in the loop above. + // + // The resulting buf_len_w is correct only if the last + // octs is non-zero: but at the return u3i_slab_mint + // takes care of trimming. + // + c3_w last_lead_w = (u3r_word(0, u3h(octs)) - u3r_met(3, u3t(octs))); + c3_d buf_len_w = tot_d - last_lead_w; + + if (buf_len_w == 0) { + return u3nc(u3i_word(tot_d), 0); + } + + u3i_slab sab_u; + u3i_slab_bare(&sab_u, 3, buf_len_w); + c3_y* buf_y = sab_u.buf_y; + + sab_u.buf_w[sab_u.len_w - 1] = 0; + + c3_y* sea_y; + u3_atom p_octs, q_octs; + c3_w p_octs_w, q_octs_w; + c3_w len_w, lead_w; + + // Bytes written so far + // + c3_d wit_d = 0; + + octs_list = octs_list_start; + + while (octs_list != u3_nul) { + + octs = u3h(octs_list); + + _x_octs(octs, &p_octs, &q_octs); + if (c3n == _x_octs_buffer(&p_octs, &q_octs, + &p_octs_w, &sea_y, + &len_w, &lead_w)){ + return u3_none; + } + + if (p_octs_w == 0) { + octs_list = u3t(octs_list); + continue; + } + + memcpy(buf_y, sea_y, len_w); + buf_y += len_w; + wit_d += len_w; + + // More bytes to follow, write leading zeros + // + if (wit_d < buf_len_w) { + memset(buf_y, 0, lead_w); + buf_y += lead_w; + wit_d += lead_w; + } + + octs_list = u3t(octs_list); + } + + u3_assert((buf_y - sab_u.buf_y) == buf_len_w); + + return u3nc(u3i_chub(tot_d), u3i_slab_mint(&sab_u)); +} + +u3_noun +u3we_bytestream_can_octs(u3_noun cor) +{ + u3_noun octs_list; + + u3x_mean(cor, u3x_sam_1, &octs_list, 0); + + return _qe_bytestream_can_octs(octs_list); +} +u3_noun +_qe_bytestream_skip_line(u3_atom pos, u3_noun octs) +{ + c3_w pos_w; + + if (c3n == u3r_safe_word(pos, &pos_w)) { + return u3_none; + } + + u3_atom p_octs, q_octs; + + _x_octs(octs, &p_octs, &q_octs); + + c3_w p_octs_w; + c3_w len_w, lead_w; + + c3_y* sea_y; + + if (c3n == _x_octs_buffer(&p_octs, &q_octs, + &p_octs_w, &sea_y, + &len_w, &lead_w)) { + return u3_none; + } + + while (pos_w < len_w) { + if (*(sea_y + pos_w) == '\n') { + break; + } + pos_w++; + } + // Newline not found, position at the end + if (*(sea_y + pos_w) != '\n') { + pos_w = p_octs; + } + else { + pos_w++; + } + + return u3nc(u3i_word(pos_w), u3k(octs)); +} +u3_noun +u3we_bytestream_skip_line(u3_noun cor) +{ + + u3_atom pos; + u3_noun octs; + + u3x_mean(cor, u3x_sam_2, &pos, u3x_sam_3, &octs, 0); + + return _qe_bytestream_skip_line(pos, octs); + +} +u3_noun +_qe_bytestream_find_byte(u3_atom bat, u3_atom pos, u3_noun octs) +{ + c3_w bat_w, pos_w; + + if (c3n == u3r_safe_word(bat, &bat_w) || bat_w > 0xff) { + return u3_none; + } + if (c3n == u3r_safe_word(pos, &pos_w)) { + return u3_none; + } + + u3_atom p_octs, q_octs; + + _x_octs(octs, &p_octs, &q_octs); + + c3_w p_octs_w; + c3_w len_w, lead_w; + + c3_y* sea_y; + + if (c3n == _x_octs_buffer(&p_octs, &q_octs, + &p_octs_w, &sea_y, + &len_w, &lead_w)) { + return u3_none; + } + + while (pos_w < len_w) { + + if (*(sea_y + pos_w) == bat_w) { + return u3nc(u3_nul, u3i_word(pos_w)); + } + + pos_w++; + } + // Here we are sure that: + // (1) bat_w has not been found + // (2) therefore pos_w == len_w + // + // If bat_w == 0, and there is still input + // in the stream, it means pos_w points at + // the first leading zero. + // + if (pos_w < p_octs && bat_w == 0) { + return u3nc(u3_nul, u3i_word(pos_w)); + } + + return u3_nul; +} +u3_noun +u3we_bytestream_find_byte(u3_noun cor) +{ + u3_atom bat; + u3_atom pos; + u3_noun octs; + + u3x_mean(cor, u3x_sam_2, &bat, + u3x_sam_6, &pos, + u3x_sam_7, &octs, 0); + + return _qe_bytestream_find_byte(bat, pos, octs); +} +u3_noun +_qe_bytestream_seek_byte(u3_atom bat, u3_atom pos, u3_noun octs) +{ + c3_w bat_w, pos_w; + + if (c3n == u3r_safe_word(bat, &bat_w) || bat_w > 0xff) { + return u3_none; + } + if (c3n == u3r_safe_word(pos, &pos_w)) { + return u3_none; + } + + u3_atom p_octs, q_octs; + + _x_octs(octs, &p_octs, &q_octs); + + c3_w p_octs_w; + c3_w len_w, lead_w; + + c3_y* sea_y; + + if (c3n == _x_octs_buffer(&p_octs, &q_octs, + &p_octs_w, &sea_y, + &len_w, &lead_w)) { + return u3_none; + } + + while (pos_w < len_w) { + + if (*(sea_y + pos_w) == bat_w) { + u3_noun idx = u3nc(u3_nul, u3i_word(pos_w)); + u3_noun new_bays = u3nc(u3i_word(pos_w), u3k(octs)); + return u3nc(idx, new_bays); + } + + pos_w++; + } + + // find leading zero: see comment in *_find_byte + // + if (pos_w < p_octs && bat_w == 0) { + u3_noun idx = u3nc(u3_nul, u3i_word(pos_w)); + u3_noun new_bays = u3nc(u3i_word(pos_w), u3k(octs)); + return u3nc(idx, new_bays); + } + + return u3nc(u3_nul, u3nc(u3k(pos), u3k(octs))); + +} +u3_noun +u3we_bytestream_seek_byte(u3_noun cor) +{ + u3_atom bat; + u3_atom pos; + u3_noun octs; + + u3x_mean(cor, u3x_sam_2, &bat, + u3x_sam_6, &pos, + u3x_sam_7, &octs, 0); + + return _qe_bytestream_seek_byte(bat, pos, octs); +} + +u3_noun +_qe_bytestream_read_byte(u3_atom pos, u3_noun octs) +{ + c3_w pos_w; + + if (c3n == u3r_safe_word(pos, &pos_w)) { + return u3_none; + } + + u3_atom p_octs, q_octs; + + _x_octs(octs, &p_octs, &q_octs); + + c3_w p_octs_w; + c3_w len_w, lead_w; + + c3_y* sea_y; + + if (c3n == _x_octs_buffer(&p_octs, &q_octs, + &p_octs_w, &sea_y, + &len_w, &lead_w)) { + return u3_none; + } + + if (pos_w + 1 > p_octs_w) { + u3m_bail(c3__exit); + } + + c3_y bat_y; + + if (pos_w < len_w) { + bat_y = *(sea_y + pos_w); + } + else { + bat_y = 0; + } + + u3_noun new_bays = u3nc(u3i_word(pos_w + 1), u3k(octs)); + + return u3nc(bat_y, new_bays); +} + +u3_noun +u3we_bytestream_read_byte(u3_noun cor) +{ + u3_atom pos; + u3_noun octs; + + u3x_mean(cor, u3x_sam_2, &pos, + u3x_sam_3, &octs, 0); + + return _qe_bytestream_read_byte(pos, octs); +} + +u3_noun +_qe_bytestream_read_octs(u3_atom n, u3_atom pos, u3_noun octs) +{ + c3_w n_w, pos_w; + + if (c3n == u3r_safe_word(n, &n_w)) { + return u3_none; + } + + if (c3n == u3r_safe_word(pos, &pos_w)) { + return u3_none; + } + + if (n_w == 0) { + return u3nc(u3nc(0,0), u3nc(u3k(pos), u3k(octs))); + } + + u3_atom p_octs, q_octs; + + _x_octs(octs, &p_octs, &q_octs); + + c3_w p_octs_w; + c3_w len_w, lead_w; + + c3_y* sea_y; + + if (c3n == _x_octs_buffer(&p_octs, &q_octs, + &p_octs_w, &sea_y, + &len_w, &lead_w)) { + return u3_none; + } + + if (pos_w + n_w > p_octs_w) { + u3m_bail(c3__exit); + } + + // Number of bytes to read, excluding leading zeros + // + c3_w red_w = n_w; + + if (pos_w + n_w > len_w) { + if (pos_w < len_w) { + red_w = len_w - pos_w; + } + // leading zeros - nothing to read + // + else { + red_w = 0; + } + } + + u3_noun read_octs; + + if (red_w == 0) { + read_octs = u3nc(u3i_word(n_w), 0); + } + else { + u3i_slab sab_u; + u3i_slab_bare(&sab_u, 3, n_w); + sab_u.buf_w[sab_u.len_w - 1] = 0; + + memcpy(sab_u.buf_y, sea_y + pos_w, red_w); + + if (red_w < n_w) { + memset(sab_u.buf_y + red_w, 0, (n_w - red_w)); + } + + read_octs = u3nc(u3i_word(n_w), u3i_slab_moot(&sab_u)); + } + + u3_noun new_bays = u3nc(u3i_word(pos_w + n_w), u3k(octs)); + + return u3nc(read_octs, new_bays); +} + +u3_noun +u3we_bytestream_read_octs(u3_noun cor) +{ + u3_atom n; + u3_atom pos; + u3_noun octs; + + u3x_mean(cor, u3x_sam_2, &n, + u3x_sam_6, &pos, + u3x_sam_7, &octs, 0); + + return _qe_bytestream_read_octs(n, pos, octs); +} + + +u3_noun +_qe_peek_octs(c3_w n_w, c3_w pos_w, c3_w p_octs_w, c3_y* sea_y, + c3_w len_w) +{ + if (n_w == 0) { + return u3nc(0, 0); + } + + if (pos_w + n_w > p_octs_w) { + return u3m_bail(c3__exit); + } + + // Read leading zeros only + // + if (pos_w >= len_w) { + return u3nc(u3i_word(n_w), 0); + } + // Number of remaining buffer bytes + c3_w reb_w = len_w - pos_w; + + u3i_slab sab_u; + c3_w my_len_w; + + if (n_w < reb_w) { + my_len_w = n_w; + } + else { + my_len_w = reb_w; + } + u3i_slab_bare(&sab_u, 3, my_len_w); + sab_u.buf_w[sab_u.len_w - 1] = 0; + memcpy(sab_u.buf_y, sea_y + pos_w, my_len_w); + + return u3nc(u3i_word(n_w), u3i_slab_moot(&sab_u)); +} +u3_noun _qe_bytestream_chunk(u3_atom size, u3_noun pos, u3_noun octs) +{ + c3_w size_w, pos_w; + + if (c3n == u3r_safe_word(size, &size_w)) { + return u3_none; + } + + if (size_w == 0) { + return u3_nul; + } + + if (c3n == u3r_safe_word(pos, &pos_w)) { + return u3_none; + } + + u3_atom p_octs, q_octs; + + _x_octs(octs, &p_octs, &q_octs); + + c3_w p_octs_w; + c3_w len_w, lead_w; + + c3_y* sea_y; + + if (c3n == _x_octs_buffer(&p_octs, &q_octs, + &p_octs_w, &sea_y, + &len_w, &lead_w)) { + return u3_none; + } + + u3_noun hun = u3_nul; + + while (pos_w < p_octs) { + // Remaining bytes + // + c3_w rem = (p_octs - pos_w); + + if (rem < size) { + u3_noun octs = _qe_peek_octs(rem, pos_w, p_octs_w, sea_y, + len_w); + hun = u3nc(octs, hun); + pos_w += rem; + } + else { + u3_noun octs = _qe_peek_octs(size, pos_w, p_octs_w, sea_y, + len_w); + hun = u3nc(octs, hun); + pos_w += size; + } + } + + return u3kb_flop(hun); +} + +u3_noun +u3we_bytestream_chunk(u3_noun cor) +{ + u3_atom size; + u3_atom pos; + u3_noun octs; + + u3x_mean(cor, u3x_sam_2, &size, + u3x_sam_6, &pos, + u3x_sam_7, &octs, 0); + + return _qe_bytestream_chunk(size, pos, octs); +} + +u3_noun +_qe_bytestream_extract(u3_noun sea, u3_noun rac) +{ + u3_atom pos; + u3_noun octs; + + u3x_mean(sea, 2, &pos, 3, &octs, 0); + + c3_w pos_w; + + if (c3n == u3r_safe_word(pos, &pos_w)) { + return u3_none; + } + + u3_atom p_octs, q_octs; + + _x_octs(octs, &p_octs, &q_octs); + + c3_w p_octs_w; + c3_w len_w, lead_w; + + c3_y* sea_y; + + if (c3n == _x_octs_buffer(&p_octs, &q_octs, + &p_octs_w, &sea_y, + &len_w, &lead_w)) { + return u3_none; + } + + u3_noun dal = u3_nul; + + u3_noun new_sea = u3_none; + + while (pos_w < p_octs_w) { + new_sea = u3nc(u3i_word(pos_w), u3k(octs)); + u3_noun ext = u3x_good(u3n_slam_on(u3k(rac), new_sea)); + + u3_atom sip, ken; + c3_w sip_w, ken_w; + + u3x_mean(ext, 2, &sip, 3, &ken, 0); + + if (c3n == u3r_safe_word(sip, &sip_w)) { + // XX is u3z necessary here? + // does memory get freed on bail? + // + u3l_log("bytestream: sip fail"); + u3z(dal); + u3z(ext); + return u3_none; + } + + if (c3n == u3r_safe_word(ken, &ken_w)) { + u3l_log("bytestream: ken fail"); + u3z(dal); + u3z(ext); + return u3_none; + } + + u3z(ext); + + if (sip_w == 0 && ken_w == 0) { + break; + } + + if (pos_w + sip_w > p_octs_w) { + u3z(dal); + return u3_none; + } + + pos_w += sip_w; + + if (ken_w == 0) { + continue; + } + + u3_noun octs = _qe_peek_octs(ken_w, pos_w, p_octs_w, sea_y, len_w); + pos_w += ken_w; + dal = u3nc(octs, dal); + } + + new_sea = u3nc(u3i_word(pos_w), u3k(octs)); + + return u3nc(u3kb_flop(dal), new_sea); +} +u3_noun +u3we_bytestream_extract(u3_noun cor) +{ + u3_noun sea; + u3_noun rac; + + u3x_mean(cor, u3x_sam_2, &sea, + u3x_sam_3, &rac, 0); + + return _qe_bytestream_extract(sea, rac); +} + +u3_noun +_qe_bytestream_fuse_extract(u3_noun sea, u3_noun rac) +{ + u3_atom pos; + u3_noun octs; + + u3x_mean(sea, 2, &pos, 3, &octs, 0); + + c3_w pos_w; + + if (c3n == u3r_safe_word(pos, &pos_w)) { + return u3_none; + } + + u3_atom p_octs, q_octs; + + _x_octs(octs, &p_octs, &q_octs); + + c3_w p_octs_w; + c3_w len_w, lead_w; + + c3_y* sea_y; + + if (c3n == _x_octs_buffer(&p_octs, &q_octs, + &p_octs_w, &sea_y, + &len_w, &lead_w)) { + return u3_none; + } + + u3_noun dal = u3_nul; + + u3_noun new_sea = u3_none; + + while (pos_w < p_octs_w) { + new_sea = u3nc(u3i_word(pos_w), u3k(octs)); + u3_noun ext = u3x_good(u3n_slam_on(u3k(rac), new_sea)); + + u3_atom sip, ken; + c3_w sip_w, ken_w; + + u3x_mean(ext, 2, &sip, 3, &ken, 0); + + if (c3n == u3r_safe_word(sip, &sip_w)) { + // XX is u3z necessary here? + // does memory get freed on bail? + // + u3l_log("bytestream: sip fail"); + u3z(dal); + u3z(ext); + return u3_none; + } + if (c3n == u3r_safe_word(ken, &ken_w)) { + u3l_log("bytestream: ken fail"); + u3z(dal); + u3z(ext); + return u3_none; + } + + u3z(ext); + + if (sip_w == 0 && ken_w == 0) { + break; + } + + if (pos_w + sip_w > p_octs_w) { + u3z(dal); + return u3_none; + } + + pos_w += sip_w; + + if (ken_w == 0) { + continue; + } + + u3_noun octs = _qe_peek_octs(ken_w, pos_w, p_octs_w, sea_y, len_w); + pos_w += ken_w; + dal = u3nc(octs, dal); + } + + u3_noun lad = u3kb_flop(dal); + u3_noun data = _qe_bytestream_can_octs(lad); + u3z(lad); + + new_sea = u3nc(u3i_word(pos_w), u3k(octs)); + + return u3nc(data, new_sea); +} + +u3_noun +u3we_bytestream_fuse_extract(u3_noun cor) +{ + u3_noun sea; + u3_noun rac; + + u3x_mean(cor, u3x_sam_2, &sea, + u3x_sam_3, &rac, 0); + + return _qe_bytestream_fuse_extract(sea, rac); +} + +#define BITS_D (sizeof(c3_d)*8) + +u3_noun +_qe_bytestream_need_bits(u3_atom n, u3_noun bits) +{ + u3_atom num, bit; + u3_noun bays; + + u3x_mean(bits, 2, &num, + 6, &bit, + 7, &bays, 0); + + + c3_w n_w, num_w; + c3_d bit_d; + + if (c3n == u3r_safe_word(n, &n_w)) { + return u3_none; + } + if (c3n == u3r_safe_word(num, &num_w)) { + return u3_none; + } + if (c3n == u3r_safe_chub(bit, &bit_d)) { + return u3_none; + } + + if (num_w >= n_w) { + return u3k(bits); + } + + // How many bytes to read + // + c3_w need_bits_w = n_w - num_w; + + // Requires indirect atom, drop to Hoon + // + if (need_bits_w > BITS_D) { + return u3_none; + } + + c3_w need_bytes_w = need_bits_w / 8; + + if (need_bits_w % 8) { + need_bytes_w += 1; + } + + c3_w pos_w; + u3_atom pos; + u3_noun octs; + + + u3x_mean(bays, 2, &pos, 3, &octs, 0); + + if (c3n == u3r_safe_word(pos, &pos_w)) { + return u3_none; + } + + u3_atom p_octs, q_octs; + + _x_octs(octs, &p_octs, &q_octs); + + c3_w p_octs_w; + c3_w len_w, lead_w; + + c3_y* sea_y; + + if (c3n == _x_octs_buffer(&p_octs, &q_octs, + &p_octs_w, &sea_y, + &len_w, &lead_w)) { + return u3_none; + } + + if (pos_w + need_bytes_w > p_octs_w) { + u3m_bail(c3__exit); + } + + while (need_bytes_w--) { + + if (pos_w < len_w) { + bit_d += *(sea_y + pos_w) << num_w; + } + num_w += 8; + pos_w++; + + u3_assert(num_w <= BITS_D); + } + + u3_noun new_bays = u3nc(u3i_word(pos_w), u3k(octs)); + + return u3nt(u3i_word(num_w), u3i_chub(bit_d), new_bays); +} +// +$ bits $+ bits +// $: num=@ud +// bit=@ub +// =bays +// == +u3_noun +u3we_bytestream_need_bits(u3_noun cor) +{ + u3_atom n; + u3_noun bits; + + u3x_mean(cor, u3x_sam_2, &n, + u3x_sam_3, &bits, 0); + + return _qe_bytestream_need_bits(n, bits); +} + +u3_noun +_qe_bytestream_drop_bits(u3_atom n, u3_noun bits) +{ + + u3_atom num, bit; + u3_noun bays; + + u3x_mean(bits, 2, &num, + 6, &bit, + 7, &bays, 0); + + c3_w n_w, num_w; + c3_d bit_d; + + if (c3n == u3r_safe_word(n, &n_w)) { + return u3_none; + } + if (c3n == u3r_safe_word(num, &num_w)) { + return u3_none; + } + if (c3n == u3r_safe_chub(bit, &bit_d)) { + return u3_none; + } + + if(n_w == 0) { + return u3k(bits); + } + + c3_w dop_w = n_w; + + if (dop_w > num_w) { + dop_w = num_w; + } + + bit_d >>= dop_w; + num_w -= dop_w; + + return u3nt(u3i_word(num_w), u3i_chub(bit_d), u3k(bays)); +} +u3_noun +u3we_bytestream_drop_bits(u3_noun cor) +{ + u3_atom n; + u3_noun bits; + + u3x_mean(cor, u3x_sam_2, &n, + u3x_sam_3, &bits, 0); + + return _qe_bytestream_drop_bits(n, bits); +} + +u3_noun +_qe_bytestream_peek_bits(u3_atom n, u3_noun bits) +{ + + u3_atom num, bit; + u3_noun bays; + + u3x_mean(bits, 2, &num, + 6, &bit, + 7, &bays, 0); + + c3_w n_w, num_w; + c3_d bit_d; + + if (c3n == u3r_safe_word(n, &n_w)) { + return u3_none; + } + if (c3n == u3r_safe_word(num, &num_w)) { + return u3_none; + } + if (c3n == u3r_safe_chub(bit, &bit_d)) { + return u3_none; + } + + if (n_w == 0) { + return u3i_word(0); + } + + if (n_w > num_w) { + u3m_bail(c3__exit); + } + + if (n_w > BITS_D) { + return u3_none; + } + + if (n_w == BITS_D) { + return u3i_chub(bit_d); + } + else { + c3_d mak_d = ((c3_d)1 << n_w) - 1; + + return u3i_chub(bit_d & mak_d); + } +} +u3_noun +u3we_bytestream_peek_bits(u3_noun cor) +{ + u3_atom n; + u3_noun bits; + + u3x_mean(cor, u3x_sam_2, &n, + u3x_sam_3, &bits, 0); + + return _qe_bytestream_peek_bits(n, bits); +} + +u3_noun +_qe_bytestream_read_bits(u3_atom n, u3_noun bits) +{ + + u3_atom num, bit; + u3_noun bays; + + u3x_mean(bits, 2, &num, + 6, &bit, + 7, &bays, 0); + + c3_w n_w, num_w; + c3_d bit_d; + + if (c3n == u3r_safe_word(n, &n_w)) { + return u3_none; + } + if (c3n == u3r_safe_word(num, &num_w)) { + return u3_none; + } + if (c3n == u3r_safe_chub(bit, &bit_d)) { + return u3_none; + } + + if (n_w > num_w) { + u3m_bail(c3__exit); + } + + if (n_w > BITS_D) { + return u3_none; + } + + c3_d bet_d = 0; + + if (n_w == BITS_D) { + bet_d = bit_d; + } + else { + c3_d mak_d = ((c3_d)1 << n_w) - 1; + bet_d = bit_d & mak_d; + } + + bit_d >>= n_w; + num_w -= n_w; + + u3_noun new_bits = u3nt(u3i_word(num_w), u3i_chub(bit_d), u3k(bays)); + + return u3nc(u3i_chub(bet_d), new_bits); +} + +u3_noun +u3we_bytestream_read_bits(u3_noun cor) +{ + u3_atom n; + u3_noun bits; + + u3x_mean(cor, u3x_sam_2, &n, + u3x_sam_3, &bits, 0); + + return _qe_bytestream_read_bits(n, bits); +} + +u3_noun +_qe_bytestream_byte_bits(u3_noun bits) +{ + + u3_atom num, bit; + u3_noun bays; + + u3x_mean(bits, 2, &num, + 6, &bit, + 7, &bays, 0); + + c3_w num_w; + c3_d bit_d; + + if (c3n == u3r_safe_word(num, &num_w)) { + return u3_none; + } + if (c3n == u3r_safe_chub(bit, &bit_d)) { + return u3_none; + } + + c3_y rem_y = num_w & 0x7; + + if (rem_y == 0) { + return u3k(bits); + } + + u3_noun new_bits = u3nt(u3i_word(num_w - rem_y), + u3i_chub(bit_d >> rem_y), + u3k(bays)); + + return new_bits; +} + +u3_noun +u3we_bytestream_byte_bits(u3_noun cor) +{ + u3_noun bits; + + u3x_mean(cor, u3x_sam, &bits, 0); + + return _qe_bytestream_byte_bits(bits); +} diff --git a/vere/pkg/noun/jets/e/chacha.c b/vere/pkg/noun/jets/e/chacha.c new file mode 100644 index 0000000..e42f8e2 --- /dev/null +++ b/vere/pkg/noun/jets/e/chacha.c @@ -0,0 +1,74 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqe_chacha_crypt(u3_atom rounds, u3_atom key, u3_atom nonce, u3_atom counter, u3_atom wid, u3_atom dat) + { + c3_w rounds_w, wid_w; + c3_d counter_d; + if ( !u3r_word_fit(&rounds_w, rounds) || !u3r_word_fit(&wid_w, wid) || c3n == u3r_safe_chub(counter, &counter_d) ) { + return u3m_bail(c3__fail); + } + else { + c3_y key_y[32], nonce_y[8]; + u3r_bytes(0, 32, key_y, key); + u3r_bytes(0, 8, nonce_y, nonce); + c3_y *dat_y = u3r_bytes_alloc(0, wid_w, dat); + urcrypt_chacha_crypt(rounds_w, key_y, nonce_y, counter_d, wid_w, dat_y); + u3_noun cry = u3i_bytes(wid_w, dat_y); + u3a_free(dat_y); + return u3i_cell(wid, cry); + } + } + + u3_noun + u3we_chacha_crypt(u3_noun cor) + { + u3_noun sam = u3x_at(u3x_sam, cor); + u3_noun rounds, key, nonce, counter, msg; + u3_noun wid, dat; + + if ( u3r_quil(sam, &rounds, &key, &nonce, &counter, &msg) || + u3ud(rounds) || u3ud(key) || u3ud(nonce) || u3ud(counter) || u3r_cell(msg, &wid, &dat) ) + { + return u3m_bail(c3__exit); + } else { + return u3l_punt("chacha_crypt", _cqe_chacha_crypt(rounds, key, nonce, counter, wid, dat)); + } + } + + + static u3_noun + _cqe_chacha_xchacha(u3_atom rounds, u3_atom key, u3_atom nonce) + { + c3_w rounds_w; + if ( !u3r_word_fit(&rounds_w, rounds) ) { + return u3m_bail(c3__fail); + } + c3_y key_y[32], nonce_y[64], xkey_y[32], xnonce_y[8]; + u3r_bytes(0, 32, key_y, key); + u3r_bytes(0, 24, nonce_y, nonce); + urcrypt_chacha_xchacha(rounds, key_y, nonce_y, xkey_y, xnonce_y); + return u3i_cell(u3i_bytes(32, xkey_y), u3i_bytes(8, xnonce_y)); + } + + u3_noun + u3we_chacha_xchacha(u3_noun cor) + { + u3_noun sam = u3x_at(u3x_sam, cor); + u3_noun rounds, key, nonce; + if ( c3n == u3r_trel(sam, &rounds, &key, &nonce) || + c3n == u3ud(rounds) || + c3n == u3ud(key) || + c3n == u3ud(nonce) ) + { + return u3m_bail(c3__exit); + } else { + return u3l_punt("chacha_xchacha", _cqe_chacha_xchacha(rounds, key, nonce)); + } + } diff --git a/vere/pkg/noun/jets/e/crc.c b/vere/pkg/noun/jets/e/crc.c new file mode 100644 index 0000000..496b8d5 --- /dev/null +++ b/vere/pkg/noun/jets/e/crc.c @@ -0,0 +1,59 @@ +/// @file + +#include +#include +#include "zlib.h" + +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qe_crc32(u3_noun input_octs) +{ + u3_atom head = u3h(input_octs); + u3_atom tail = u3t(input_octs); + c3_w tel_w = u3r_met(3, tail); + c3_w hed_w; + if ( c3n == u3r_safe_word(head, &hed_w) ) { + return u3m_bail(c3__fail); + } + c3_y* input; + + if (c3y == u3a_is_cat(tail)) { + input = (c3_y*)&tail; + } + else { + u3a_atom* vat_u = u3a_to_ptr(tail); + input = (c3_y*)vat_u->buf_w; + } + + if ( tel_w > hed_w ) { + return u3m_error("subtract-underflow"); + } + + c3_w led_w = hed_w - tel_w; + c3_w crc_w = 0; + + crc_w = crc32(crc_w, input, tel_w); + + while ( led_w > 0 ) { + c3_y byt_y = 0; + crc_w = crc32(crc_w, &byt_y, 1); + led_w--; + } + + return u3i_word(crc_w); +} + +u3_noun +u3we_crc32(u3_noun cor) +{ + u3_noun a = u3r_at(u3x_sam, cor); + + if ( (u3du(a) == c3y) && (u3ud(u3h(a)) == c3y) && (u3ud(u3t(a)) == c3y) ) { + return u3qe_crc32(a); + } else { + return u3m_bail(c3__exit); + } +} diff --git a/vere/pkg/noun/jets/e/cue.c b/vere/pkg/noun/jets/e/cue.c new file mode 100644 index 0000000..643b408 --- /dev/null +++ b/vere/pkg/noun/jets/e/cue.c @@ -0,0 +1,27 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qe_cue(u3_atom a) +{ + return u3s_cue_atom(a); +} + +u3_noun +u3we_cue(u3_noun cor) +{ + return u3qe_cue(u3x_atom(u3x_at(u3x_sam, cor))); +} + +u3_noun +u3ke_cue(u3_atom a) +{ + u3_noun b = u3qe_cue(a); + u3z(a); + return b; +} diff --git a/vere/pkg/noun/jets/e/ed_add_double_scalarmult.c b/vere/pkg/noun/jets/e/ed_add_double_scalarmult.c new file mode 100644 index 0000000..6512919 --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_add_double_scalarmult.c @@ -0,0 +1,72 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqee_add_double_scalarmult(u3_atom a, + u3_atom a_point, + u3_atom b, + u3_atom b_point) + { + c3_y a_y[32], a_point_y[32], + b_y[32], b_point_y[32], + out_y[32]; + c3_w met_w; + + met_w = u3r_met(3, a); + if ( (32 < met_w) || + ( (32 == met_w) && + (127 < u3r_byte(31, a)) ) + ) { + u3_noun a_recs = u3qee_recs(a); + u3r_bytes(0, 32, a_y, a_recs); + u3z(a_recs); + } else { + u3r_bytes(0, 32, a_y, a); + } + + met_w = u3r_met(3, b); + if ( (32 < met_w) || + ( (32 == met_w) && + (127 < u3r_byte(31, b)) ) + ) { + u3_noun b_recs = u3qee_recs(b); + u3r_bytes(0, 32, b_y, b_recs); + u3z(b_recs); + } else { + u3r_bytes(0, 32, b_y, b); + } + + if ( (0 != u3r_bytes_fit(32, a_point_y, a_point)) || + (0 != u3r_bytes_fit(32, b_point_y, b_point)) || + (0 != urcrypt_ed_add_double_scalarmult(a_y, a_point_y, b_y, b_point_y, out_y)) ) { + return u3m_bail(c3__exit); + } + else { + return u3i_bytes(32, out_y); + } + } + + u3_noun + u3wee_add_double_scalarmult(u3_noun cor) + { + u3_noun a, b, c, d; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, + u3x_sam_6, &b, + u3x_sam_14, &c, + u3x_sam_15, &d, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) || + (c3n == u3ud(c)) || + (c3n == u3ud(d)) ) + { + return u3m_bail(c3__exit); + } else { + return _cqee_add_double_scalarmult(a, b, c, d); + } + } diff --git a/vere/pkg/noun/jets/e/ed_add_scalarmult_scalarmult_base.c b/vere/pkg/noun/jets/e/ed_add_scalarmult_scalarmult_base.c new file mode 100644 index 0000000..39eda53 --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_add_scalarmult_scalarmult_base.c @@ -0,0 +1,66 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqee_add_scalarmult_scalarmult_base(u3_atom a, + u3_atom a_point, + u3_atom b) + { + c3_y a_y[32], a_point_y[32], b_y[32], out_y[32]; + c3_w met_w; + + met_w = u3r_met(3, a); + if ( (32 < met_w) || + ( (32 == met_w) && + (127 < u3r_byte(31, a)) ) + ) { + u3_noun a_recs = u3qee_recs(a); + u3r_bytes(0, 32, a_y, a_recs); + u3z(a_recs); + } else { + u3r_bytes(0, 32, a_y, a); + } + + met_w = u3r_met(3, b); + if ( (32 < met_w) || + ( (32 == met_w) && + (127 < u3r_byte(31, b)) ) + ) { + u3_noun b_recs = u3qee_recs(b); + u3r_bytes(0, 32, b_y, b_recs); + u3z(b_recs); + } else { + u3r_bytes(0, 32, b_y, b); + } + + if ( (0 != u3r_bytes_fit(32, a_point_y, a_point)) || + (0 != urcrypt_ed_add_scalarmult_scalarmult_base(a_y, a_point_y, b_y, out_y)) ) { + return u3m_bail(c3__exit); + } + else { + return u3i_bytes(32, out_y); + } + } + + u3_noun + u3wee_add_scalarmult_scalarmult_base(u3_noun cor) + { + u3_noun a, b, c; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, + u3x_sam_6, &b, + u3x_sam_7, &c, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) || + (c3n == u3ud(c)) ) + { + return u3m_bail(c3__exit); + } else { + return _cqee_add_scalarmult_scalarmult_base(a, b, c); + } + } diff --git a/vere/pkg/noun/jets/e/ed_luck.c b/vere/pkg/noun/jets/e/ed_luck.c new file mode 100644 index 0000000..c21889e --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_luck.c @@ -0,0 +1,37 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqee_luck(u3_atom sed) + { + c3_y sed_y[32]; + + if ( 0 != u3r_bytes_fit(32, sed_y, sed) ) { + // hoon explicitly crashes on mis-size + return u3m_bail(c3__exit); + } + else { + c3_y pub_y[32]; + c3_y sec_y[64]; + urcrypt_ed_luck(sed_y, pub_y, sec_y); + return u3nc(u3i_bytes(32, pub_y), u3i_bytes(64, sec_y)); + } + } + + u3_noun + u3wee_luck(u3_noun cor) + { + u3_noun a = u3r_at(u3x_sam, cor); + + if ( (u3_none == a) || (c3n == u3ud(a)) ) { + return u3m_bail(c3__exit); + } + else { + return _cqee_luck(a); + } + } diff --git a/vere/pkg/noun/jets/e/ed_point_add.c b/vere/pkg/noun/jets/e/ed_point_add.c new file mode 100644 index 0000000..70fe563 --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_point_add.c @@ -0,0 +1,40 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + + static u3_atom + _cqee_point_add(u3_atom a, + u3_atom b) + { + c3_y a_y[32], b_y[32], out_y[32]; + + if ( (0 != u3r_bytes_fit(32, a_y, a)) || + (0 != u3r_bytes_fit(32, b_y, b)) || + (0 != urcrypt_ed_point_add(a_y, b_y, out_y)) ) { + return u3m_bail(c3__exit); + } + else { + return u3i_bytes(32, out_y); + } + } + + u3_noun + u3wee_point_add(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, + u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__exit); + } else { + return _cqee_point_add(a, b); + } + } diff --git a/vere/pkg/noun/jets/e/ed_point_neg.c b/vere/pkg/noun/jets/e/ed_point_neg.c new file mode 100644 index 0000000..5a1a5bd --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_point_neg.c @@ -0,0 +1,37 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + + static u3_atom + _cqee_point_neg(u3_atom a) + { + c3_y a_y[32]; + + if ( (0 != u3r_bytes_fit(32, a_y, a)) || + (0 != urcrypt_ed_point_neg(a_y)) ) { + return u3m_bail(c3__exit); + } + else { + return u3i_bytes(32, a_y); + } + } + + u3_noun + u3wee_point_neg(u3_noun cor) + { + + u3_noun a; + + if ( (u3_none == (a = u3r_at(u3x_sam, cor))) || + (c3n == u3ud(a)) ) + { + return u3m_bail(c3__exit); + } else { + return _cqee_point_neg(a); + } + } diff --git a/vere/pkg/noun/jets/e/ed_puck.c b/vere/pkg/noun/jets/e/ed_puck.c new file mode 100644 index 0000000..98581d7 --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_puck.c @@ -0,0 +1,36 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqee_puck(u3_atom sed) + { + c3_y sed_y[32]; + + if ( 0 != u3r_bytes_fit(32, sed_y, sed) ) { + // hoon explicitly crashes on mis-size + return u3m_bail(c3__exit); + } + else { + c3_y pub_y[32]; + urcrypt_ed_puck(sed_y, pub_y); + return u3i_bytes(32, pub_y); + } + } + + u3_noun + u3wee_puck(u3_noun cor) + { + u3_noun a = u3r_at(u3x_sam, cor); + + if ( (u3_none == a) || (c3n == u3ud(a)) ) { + return u3m_bail(c3__exit); + } + else { + return _cqee_puck(a); + } + } diff --git a/vere/pkg/noun/jets/e/ed_recs.c b/vere/pkg/noun/jets/e/ed_recs.c new file mode 100644 index 0000000..bdcf224 --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_recs.c @@ -0,0 +1,48 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + // `@ux`(rev 3 32 l:ed:crypto) + static c3_y _cqee_l_prime[] = { + 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, + 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, + }; + + u3_atom + u3qee_recs(u3_atom a) + { + c3_w met_w = u3r_met(3, a); + + if ( 64 < met_w ) { + u3_atom l_prime = u3i_bytes(32, _cqee_l_prime); + u3_atom pro = u3qa_mod(a, l_prime); + u3z(l_prime); + return pro; + } + + c3_y a_y[64]; + + u3r_bytes(0, 64, a_y, a); + urcrypt_ed_scalar_reduce(a_y); + return u3i_bytes(32, a_y); + } + + u3_noun + u3wee_recs(u3_noun cor) + { + u3_noun a; + + if ( (u3_none == (a = u3r_at(u3x_sam, cor))) || + (c3n == u3ud(a)) ) + { + return u3m_bail(c3__exit); + } else { + return u3qee_recs(a); + } + } diff --git a/vere/pkg/noun/jets/e/ed_scad.c b/vere/pkg/noun/jets/e/ed_scad.c new file mode 100644 index 0000000..af95563 --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_scad.c @@ -0,0 +1,124 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqee_scad(u3_atom pub, u3_atom sek, u3_atom sca) + { + c3_y pub_y[32]; + c3_y sek_y[64]; + c3_y sca_y[32]; + + if ( 0 != u3r_bytes_fit(32, pub_y, pub) ) { + // hoon explicitly crashes on mis-size + return u3m_bail(c3__exit); + } + if ( 0 != u3r_bytes_fit(64, sek_y, sek) ) { + // hoon explicitly crashes on mis-size + return u3m_bail(c3__exit); + } + if ( 0 != u3r_bytes_fit(32, sca_y, sca) ) { + // hoon explicitly crashes on mis-size + return u3m_bail(c3__exit); + } + else { + urcrypt_ed_add_scalar_public_private(pub_y, sek_y, sca_y); + return u3nc(u3i_bytes(32, pub_y), u3i_bytes(64, sek_y)); + } + } + + u3_noun + u3wee_scad(u3_noun cor) + { + u3_noun pub, sek, sca; + if ( (c3n == u3r_mean(cor, + u3x_sam_2, &pub, + u3x_sam_6, &sek, + u3x_sam_7, &sca, 0)) || + (c3n == u3ud(pub)) || + (c3n == u3ud(sek)) || + (c3n == u3ud(sca)) ) { + return u3m_bail(c3__exit); + } + else { + return _cqee_scad(pub, sek, sca); + } + } + + static u3_atom + _cqee_scas(u3_atom sek, u3_atom sca) + { + c3_y sek_y[64]; + c3_y sca_y[32]; + + if ( 0 != u3r_bytes_fit(64, sek_y, sek) ) { + // hoon explicitly crashes on mis-size + return u3m_bail(c3__exit); + } + if ( 0 != u3r_bytes_fit(32, sca_y, sca) ) { + // hoon explicitly crashes on mis-size + return u3m_bail(c3__exit); + } + else { + urcrypt_ed_add_scalar_private(sek_y, sca_y); + return u3i_bytes(64, sek_y); + } + } + + u3_noun + u3wee_scas(u3_noun cor) + { + u3_noun sek, sca; + if ( (c3n == u3r_mean(cor, + u3x_sam_2, &sek, + u3x_sam_3, &sca, 0)) || + (c3n == u3ud(sek)) || + (c3n == u3ud(sca)) ) { + return u3m_bail(c3__exit); + } + else { + return _cqee_scas(sek, sca); + } + } + + static u3_atom + _cqee_scap(u3_atom pub, u3_atom sca) + { + c3_y pub_y[32]; + c3_y sca_y[32]; + + if ( 0 != u3r_bytes_fit(32, pub_y, pub) ) { + // hoon explicitly crashes on mis-size + return u3m_bail(c3__exit); + } + if ( 0 != u3r_bytes_fit(32, sca_y, sca) ) { + // hoon explicitly crashes on mis-size + return u3m_bail(c3__exit); + } + else { + urcrypt_ed_add_scalar_public(pub_y, sca_y); + return u3i_bytes(32, pub_y); + } + } + + u3_noun + u3wee_scap(u3_noun cor) + { + u3_noun pub, sca; + if ( (c3n == u3r_mean(cor, + u3x_sam_2, &pub, + u3x_sam_3, &sca, 0)) || + (c3n == u3ud(pub)) || + (c3n == u3ud(sca)) ) { + return u3m_bail(c3__exit); + } + else { + return _cqee_scap(pub, sca); + } + } + + diff --git a/vere/pkg/noun/jets/e/ed_scalarmult.c b/vere/pkg/noun/jets/e/ed_scalarmult.c new file mode 100644 index 0000000..8585c29 --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_scalarmult.c @@ -0,0 +1,54 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqee_scalarmult(u3_atom a, + u3_atom b) + { + c3_y a_y[32], b_y[32], out_y[32]; + if (0 != u3r_bytes_fit(32, b_y, b)) { + return u3m_bail(c3__exit); + } + + c3_w met_w = u3r_met(3, a); + // scalarmult expects a_y[31] <= 127 + if ( (32 < met_w) || + ( (32 == met_w) && + (127 < u3r_byte(31, a)) ) + ) { + u3_noun a_recs = u3qee_recs(a); + u3r_bytes(0, 32, a_y, a_recs); + u3z(a_recs); + } else { + u3r_bytes(0, 32, a_y, a); + } + + if ( (0 != urcrypt_ed_scalarmult(a_y, b_y, out_y)) ) { + // at this point, will only fail if b is bad point + return u3m_bail(c3__exit); + } + else { + return u3i_bytes(32, out_y); + } + } + + u3_noun + u3wee_scalarmult(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, + u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__exit); + } else { + return _cqee_scalarmult(a, b); + } + } diff --git a/vere/pkg/noun/jets/e/ed_scalarmult_base.c b/vere/pkg/noun/jets/e/ed_scalarmult_base.c new file mode 100644 index 0000000..6193584 --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_scalarmult_base.c @@ -0,0 +1,46 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqee_scalarmult_base(u3_atom a) + { + c3_y a_y[32], out_y[32]; + c3_w met_w = u3r_met(3, a); + // scalarmult_base expects a_y[31] <= 127 + if ( (32 < met_w) || + ( (32 == met_w) && + (127 < u3r_byte(31, a)) ) + ) { + u3_noun a_recs = u3qee_recs(a); + u3r_bytes(0, 32, a_y, a_recs); + u3z(a_recs); + } else { + u3r_bytes(0, 32, a_y, a); + } + + if (0 != urcrypt_ed_scalarmult_base(a_y, out_y)) { + // should be unreachable, as scalar already reduced + return u3m_bail(c3__exit); + } + else { + return u3i_bytes(32, out_y); + } + } + + u3_noun + u3wee_scalarmult_base(u3_noun cor) + { + u3_noun a = u3r_at(u3x_sam, cor); + + if ( (u3_none == a) || (c3n == u3ud(a)) ) { + return u3m_bail(c3__exit); + } + else { + return _cqee_scalarmult_base(a); + } + } diff --git a/vere/pkg/noun/jets/e/ed_shar.c b/vere/pkg/noun/jets/e/ed_shar.c new file mode 100644 index 0000000..ed293f7 --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_shar.c @@ -0,0 +1,74 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqee_shar(u3_atom pub, u3_atom sed) + { + c3_y pub_y[32], sed_y[32]; + + if ( 0 != u3r_bytes_fit(32, pub_y, pub) ) { + return u3m_bail(c3__exit); + } + else if ( 0 != u3r_bytes_fit(32, sed_y, sed) ) { + // hoon calls luck, which crashes + return u3m_bail(c3__exit); + } + else { + c3_y shr_y[32]; + urcrypt_ed_shar(pub_y, sed_y, shr_y); + return u3i_bytes(32, shr_y); + } + } + + u3_noun + u3wee_shar(u3_noun cor) + { + u3_noun pub, sed; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &pub, u3x_sam_3, &sed, 0)) || + (c3n == u3ud(pub)) || + (c3n == u3ud(sed)) ) + { + return u3m_bail(c3__exit); + } else { + return _cqee_shar(pub, sed); + } + } + + static u3_atom + _cqee_slar(u3_atom pub, u3_atom sek) + { + c3_y pub_y[32], sek_y[64]; + + if ( 0 != u3r_bytes_fit(32, pub_y, pub) ) { + return u3m_bail(c3__exit); + } + else if ( 0 != u3r_bytes_fit(64, sek_y, sek) ) { + return u3m_bail(c3__exit); + } + else { + c3_y shr_y[32]; + urcrypt_ed_slar(pub_y, sek_y, shr_y); + return u3i_bytes(32, shr_y); + } + } + + u3_noun + u3wee_slar(u3_noun cor) + { + u3_noun pub, sek; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &pub, u3x_sam_3, &sek, 0)) || + (c3n == u3ud(pub)) || + (c3n == u3ud(sek)) ) + { + return u3m_bail(c3__exit); + } else { + return _cqee_slar(pub, sek); + } + } diff --git a/vere/pkg/noun/jets/e/ed_sign.c b/vere/pkg/noun/jets/e/ed_sign.c new file mode 100644 index 0000000..cd1797d --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_sign.c @@ -0,0 +1,166 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" +#include +#include + + static u3_atom + _cqee_sign_octs(u3_noun len, u3_noun dat, u3_noun sed) + { + c3_y sed_y[32]; + c3_w len_w; + if ( 0 != u3r_bytes_fit(32, sed_y, sed) ) { + // hoon calls luck, which crashes + return u3m_bail(c3__exit); + } + else if ( !u3r_word_fit(&len_w, len) ) { + return u3m_bail(c3__fail); + } + else { + c3_y sig_y[64]; + c3_y* dat_y = u3r_bytes_alloc(0, len_w, dat); + urcrypt_ed_sign(dat_y, len_w, sed_y, sig_y); + u3a_free(dat_y); + return u3i_bytes(64, sig_y); + } + } + + u3_noun + u3wee_sign_octs(u3_noun cor) + { + u3_noun msg, sed; + u3_noun len, dat; + if ( c3n == u3r_mean(cor, u3x_sam_2, &msg, u3x_sam_3, &sed, 0) || + c3n == u3r_cell(msg, &len, &dat) || + c3n == u3ud(sed) || + c3n == u3ud(len) || + c3n == u3ud(dat) ) { + return u3m_bail(c3__fail); + } else { + return _cqee_sign_octs(len, dat, sed); + } + } + + static u3_atom + _cqee_sign_octs_raw(u3_noun len, u3_noun dat, u3_noun pub, u3_noun sek) + { + c3_y pub_y[32], sek_y[64]; + c3_w len_w; + if ( 0 != u3r_bytes_fit(32, pub_y, pub) ) { + // hoon asserts size + return u3m_bail(c3__exit); + } + if ( 0 != u3r_bytes_fit(64, sek_y, sek) ) { + // hoon asserts size + return u3m_bail(c3__exit); + } + else if ( !u3r_word_fit(&len_w, len) ) { + return u3m_bail(c3__fail); + } + else { + c3_y sig_y[64]; + c3_y* dat_y = u3r_bytes_alloc(0, len_w, dat); + urcrypt_ed_sign_raw(dat_y, len_w, pub_y, sek_y, sig_y); + u3a_free(dat_y); + return u3i_bytes(64, sig_y); + } + } + + u3_noun + u3wee_sign_octs_raw(u3_noun cor) + { + u3_noun msg, pub, sek; + u3_noun len, dat; + if ( c3n == u3r_mean(cor, u3x_sam_2, &msg, u3x_sam_6, &pub, u3x_sam_7, &sek, 0) || + c3n == u3r_cell(msg, &len, &dat) || + c3n == u3ud(pub) || + c3n == u3ud(sek) || + c3n == u3ud(len) || + c3n == u3ud(dat) ) { + return u3m_bail(c3__fail); + } else { + return _cqee_sign_octs_raw(len, dat, pub, sek); + } + } + + static u3_atom + _cqee_sign(u3_noun msg, + u3_noun sed) + { + c3_y sed_y[32]; + + if ( 0 != u3r_bytes_fit(32, sed_y, sed) ) { + // hoon calls luck, which crashes + return u3m_bail(c3__exit); + } + else { + c3_y sig_y[64]; + c3_w met_w; + c3_y* msg_y = u3r_bytes_all(&met_w, msg); + + urcrypt_ed_sign(msg_y, met_w, sed_y, sig_y); + u3a_free(msg_y); + + return u3i_bytes(64, sig_y); + } + } + + u3_noun + u3wee_sign(u3_noun cor) + { + u3_noun msg, sed; + if ( c3n == u3r_mean(cor, + u3x_sam_2, &msg, u3x_sam_3, &sed, 0) || + c3n == u3ud(msg) || + c3n == u3ud(sed) ) { + return u3m_bail(c3__fail); + } else { + return _cqee_sign(msg, sed); + } + } + + static u3_atom + _cqee_sign_raw(u3_noun msg, + u3_noun pub, + u3_noun sek) + { + c3_y pub_y[32], sek_y[64]; + + if ( 0 != u3r_bytes_fit(32, pub_y, pub) ) { + // hoon asserts size + return u3m_bail(c3__exit); + } + if ( 0 != u3r_bytes_fit(64, sek_y, sek) ) { + // hoon asserts size + return u3m_bail(c3__exit); + } + else { + c3_y sig_y[64]; + c3_w met_w; + c3_y* msg_y = u3r_bytes_all(&met_w, msg); + + urcrypt_ed_sign_raw(msg_y, met_w, pub_y, sek_y, sig_y); + u3a_free(msg_y); + + return u3i_bytes(64, sig_y); + } + } + + u3_noun + u3wee_sign_raw(u3_noun cor) + { + u3_noun msg, pub, sek; + if ( c3n == u3r_mean(cor, + u3x_sam_2, &msg, u3x_sam_6, &pub, u3x_sam_7, &sek, 0) || + c3n == u3ud(msg) || + c3n == u3ud(pub) || + c3n == u3ud(sek) ) { + return u3m_bail(c3__fail); + } else { + return _cqee_sign_raw(msg, pub, sek); + } + } diff --git a/vere/pkg/noun/jets/e/ed_smac.c b/vere/pkg/noun/jets/e/ed_smac.c new file mode 100644 index 0000000..ce0ffac --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_smac.c @@ -0,0 +1,73 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqee_smac(u3_atom a, + u3_atom b, + u3_atom c) + { + c3_y a_y[32], b_y[32], c_y[32], out_y[32]; + c3_w met_w; + + met_w = u3r_met(3, a); + if ( (32 < met_w) || + ( (32 == met_w) && + (127 < u3r_byte(31, a)) ) + ) { + u3_noun a_recs = u3qee_recs(a); + u3r_bytes(0, 32, a_y, a_recs); + u3z(a_recs); + } else { + u3r_bytes(0, 32, a_y, a); + } + + met_w = u3r_met(3, b); + if ( (32 < met_w) || + ( (32 == met_w) && + (127 < u3r_byte(31, b)) ) + ) { + u3_noun b_recs = u3qee_recs(b); + u3r_bytes(0, 32, b_y, b_recs); + u3z(b_recs); + } else { + u3r_bytes(0, 32, b_y, b); + } + + met_w = u3r_met(3, c); + if ( (32 < met_w) || + ( (32 == met_w) && + (127 < u3r_byte(31, c)) ) + ) { + u3_noun c_recs = u3qee_recs(c); + u3r_bytes(0, 32, c_y, c_recs); + u3z(c_recs); + } else { + u3r_bytes(0, 32, c_y, c); + } + + urcrypt_ed_scalar_muladd(a_y, b_y, c_y, out_y); + return u3i_bytes(32, out_y); + } + + u3_noun + u3wee_smac(u3_noun cor) + { + u3_noun a, b, c; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, + u3x_sam_6, &b, + u3x_sam_7, &c, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) || + (c3n == u3ud(c)) ) + { + return u3m_bail(c3__exit); + } else { + return _cqee_smac(a, b, c); + } + } diff --git a/vere/pkg/noun/jets/e/ed_veri.c b/vere/pkg/noun/jets/e/ed_veri.c new file mode 100644 index 0000000..6d7b750 --- /dev/null +++ b/vere/pkg/noun/jets/e/ed_veri.c @@ -0,0 +1,85 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqee_veri_octs(u3_noun sig, + u3_noun len, + u3_noun dat, + u3_noun pub) + { + c3_y sig_y[64], pub_y[32]; + c3_w len_w; + if ( (0 != u3r_bytes_fit(64, sig_y, sig)) || + (0 != u3r_bytes_fit(32, pub_y, pub)) || + !u3r_word_fit(&len_w, len) ) { + return c3n; + } + else { + c3_y* dat_y = u3r_bytes_alloc(0, len_w, dat); + c3_t val_t = urcrypt_ed_veri(dat_y, len_w, pub_y, sig_y); + u3a_free(dat_y); + + return val_t ? c3y : c3n; + } + } + + u3_noun + u3wee_veri_octs(u3_noun cor) + { + u3_noun sig, msg, pub; + u3_noun len, dat; + if ( c3n == u3r_mean(cor, + u3x_sam_2, &sig, u3x_sam_6, &msg, + u3x_sam_7, &pub, 0) || + c3n == u3r_cell(msg, &len, &dat) || + (c3n == u3ud(sig)) || + (c3n == u3ud(pub)) || + (c3n == u3ud(len)) || + (c3n == u3ud(dat)) ) { + return u3m_bail(c3__fail); + } else { + return _cqee_veri_octs(sig, len, dat, pub); + } + } + + static u3_atom + _cqee_veri(u3_noun s, + u3_noun m, + u3_noun pk) + { + c3_y sig_y[64], pub_y[32]; + + if ( (0 != u3r_bytes_fit(64, sig_y, s)) || + (0 != u3r_bytes_fit(32, pub_y, pk)) ) { + return c3n; + } + else { + c3_w met_w; + c3_y* mes_y = u3r_bytes_all(&met_w, m); + c3_t val_t = urcrypt_ed_veri(mes_y, met_w, pub_y, sig_y); + u3a_free(mes_y); + + return val_t ? c3y : c3n; + } + } + + u3_noun + u3wee_veri(u3_noun cor) + { + u3_noun a, b, c; + if ( (c3n == u3r_mean(cor, + u3x_sam_2, &a, u3x_sam_6, &b, + u3x_sam_7, &c, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) || + (c3n == u3ud(c)) ) { + return u3m_bail(c3__fail); + } else { + return _cqee_veri(a, b, c); + } + } diff --git a/vere/pkg/noun/jets/e/fein_ob.c b/vere/pkg/noun/jets/e/fein_ob.c new file mode 100644 index 0000000..65d0f3a --- /dev/null +++ b/vere/pkg/noun/jets/e/fein_ob.c @@ -0,0 +1,90 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "murmur3.h" + +// +feis:ob constant parameters to +fe:ob +// +static const c3_w a_w = 0xffff; +static const c3_w b_w = 0x10000; +static const c3_w k_w = 0xffff0000; + +// +raku:ob +// +static const c3_w rak_w[4] = { 0xb76d5eed, 0xee281300, 0x85bcae01, 0x4b387af7 }; + +/* _fe_ob(): +fe:ob, with constant parameters factored out. +** correct over the domain [0x0, 0xfffe.ffff] +*/ +static c3_w +_fe_ob(c3_w m_w) +{ + c3_w l_w = m_w % a_w; + c3_w r_w = m_w / a_w; + c3_w f_w, t_w; + c3_y j_y, k_y[2]; + + for ( j_y = 0; j_y < 4; j_y++ ) { + k_y[0] = r_w & 0xff; + k_y[1] = (r_w >> 8) & 0xff; + + MurmurHash3_x86_32(k_y, 2, rak_w[j_y], &f_w); + + // NB: this addition can overflow a c3_w (before mod) + // + t_w = ((c3_d)f_w + l_w) % (!(j_y & 1) ? a_w : b_w); + l_w = r_w; + r_w = t_w; + } + + // legendary @max19 + // + return ( a_w == r_w ) + ? (r_w * a_w) + l_w + : (l_w * a_w) + r_w; +} + +/* _feis_ob(): +feis:ob, also offsetting by 0x1.000 (as in +fein:ob). +** correct over the domain [0x1.0000, 0xffff.ffff] +*/ +static c3_w +_feis_ob(c3_w m_w) +{ + c3_w c_w = _fe_ob(m_w - b_w); + return b_w + (( c_w < k_w ) ? c_w : _fe_ob(c_w)); +} + +u3_atom +u3qe_fein_ob(u3_atom pyn) +{ + c3_w sor_w = u3r_met(4, pyn); + + if ( (sor_w < 2) || (sor_w > 4) ) { + return u3k(pyn); + } + + if ( 2 == sor_w ) { + return u3i_word(_feis_ob(u3r_word(0, pyn))); + } + else { + c3_w pyn_w[2]; + u3r_words(0, 2, pyn_w, pyn); + + if ( pyn_w[0] < b_w ) { + return u3k(pyn); + } + else { + pyn_w[0] = _feis_ob(pyn_w[0]); + return u3i_words(2, pyn_w); + } + } +} + +u3_noun +u3we_fein_ob(u3_noun cor) +{ + return u3qe_fein_ob(u3x_atom(u3x_at(u3x_sam, cor))); +} diff --git a/vere/pkg/noun/jets/e/fl.c b/vere/pkg/noun/jets/e/fl.c new file mode 100644 index 0000000..c52309e --- /dev/null +++ b/vere/pkg/noun/jets/e/fl.c @@ -0,0 +1,441 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +/* structures +*/ + typedef struct _flOptions { + c3_w precision; + mpz_t minExp; + mpz_t expWidth; + c3_w rMode; + c3_w eMode; + } flOptions; + + typedef struct _ea { + mpz_t e; + mpz_t a; + } ea; + + static void + _satom_to_mp(mpz_t a_mp, + u3_atom b) + { + if ( _(u3a_is_cat(b)) ) { + c3_ws c = (b + 1) >> 1; + if ( (b & 1) ) { + c = -c; + } + mpz_init_set_si(a_mp, c); + } + else { + u3r_mp(a_mp, b); + c3_t x = mpz_odd_p(a_mp); + mpz_add_ui(a_mp, a_mp, 1); + mpz_tdiv_q_2exp(a_mp, a_mp, 1); + if ( x ) { + mpz_neg(a_mp, a_mp); + } + } + } + + static u3_noun + _mp_to_satom(mpz_t a_mp) + { + c3_ws b = mpz_sgn(a_mp); + switch ( b ) { + default: return u3m_bail(c3__fail); + case 0: { + mpz_clear(a_mp); + return 0; + } + case 1: { + mpz_mul_2exp(a_mp, a_mp, 1); + return u3i_mp(a_mp); + } + case -1: { + mpz_abs(a_mp, a_mp); + mpz_mul_2exp(a_mp, a_mp, 1); + mpz_sub_ui(a_mp, a_mp, 1); + return u3i_mp(a_mp); + } + } + } + + static void + _noun_to_flOptions(flOptions* a, + u3_noun b) + { + u3_noun c; + u3_atom d, e, f, g, h; + u3x_trel(b, &c, &d, &e); + u3x_trel(c, &f, &g, &h); + + mpz_t i; + u3r_mp(i, f); + if ( !mpz_fits_uint_p(i) ) { + mpz_clear(i); + u3m_bail(c3__exit); + } + a->precision = mpz_get_ui(i); + mpz_clear(i); + + if ( a->precision < 2 ) u3m_bail(c3__exit); + + _satom_to_mp(a->minExp, g); + u3r_mp(a->expWidth, h); + + if ( !(_(u3a_is_cat(d)) && _(u3a_is_cat(e))) ) { + mpz_clear(a->minExp); + mpz_clear(a->expWidth); + u3m_bail(c3__exit); + } + a->rMode = d; + a->eMode = e; + } + + static void + _noun_to_ea(ea* a, + u3_noun b) + { + u3_atom c, d; + u3x_cell(b, &c, &d); + + if ( !(_(u3a_is_cat(c))) ) { + u3m_bail(c3__exit); + } + + _satom_to_mp(a->e, c); + u3r_mp(a->a, d); + } + + static u3_noun + _ea_to_noun(ea* a) + { + u3_atom b = _mp_to_satom(a->e); + u3_atom c = u3i_mp(a->a); + + return u3nc(b, c); + } + + static void + _xpd(ea* a, + flOptions* b) + { + size_t z = mpz_sizeinbase(a->a, 2); + if ( z >= b->precision ) return; + c3_w c = b->precision - z; + + if ( b->eMode != c3__i ) { + mpz_t i; + mpz_init_set(i, a->e); + mpz_sub(i, i, b->minExp); + if ( mpz_sgn(i) < 0 ) { + c = 0; + } + else if ( mpz_fits_uint_p(i) ) + { + c3_w d = mpz_get_ui(i); + c = c3_min(c, d); + } + mpz_clear(i); + } + + mpz_mul_2exp(a->a, a->a, c); + mpz_sub_ui(a->e, a->e, c); + } + + /* a: floating point number, b: flOptions, i: rounding mode, j: sticky bit */ + u3_noun + u3qef_lug(u3_noun a, + u3_noun b, + u3_atom i, + u3_atom j) + { + mpz_t v, g, h; + ea c; + flOptions d; + _noun_to_ea(&c, a); + _noun_to_flOptions(&d, b); + if ( mpz_sgn(c.a) == 0 ) { + mpz_clear(d.minExp); mpz_clear(d.expWidth); + mpz_clear(c.a); mpz_clear(c.e); + return u3m_bail(c3__exit); + } + size_t m = mpz_sizeinbase(c.a, 2); + if ( !_(j) && (m <= d.precision) ) { + mpz_clear(d.minExp); mpz_clear(d.expWidth); + mpz_clear(c.a); mpz_clear(c.e); + return u3m_bail(c3__exit); + } + c3_w q = 0; + c3_w f = (m > d.precision) ? m - d.precision : 0; + mpz_init(g); + if ( (d.eMode != c3__i) && + (mpz_cmp(c.e, d.minExp) < 0) ) { + mpz_sub(g, d.minExp, c.e); + if ( !mpz_fits_uint_p(g) ) { + mpz_clear(g); + mpz_clear(d.minExp); mpz_clear(d.expWidth); + mpz_clear(c.a); mpz_clear(c.e); + return u3m_bail(c3__exit); + } + q = mpz_get_ui(g); + } + q = c3_max(f, q); + mpz_init(v); + mpz_tdiv_r_2exp(v, c.a, q); + mpz_tdiv_q_2exp(c.a, c.a, q); + mpz_add_ui(c.e, c.e, q); + mpz_init_set_ui(h, 1); + if ( q > 0 ) mpz_mul_2exp(h, h, q - 1); + + if ( mpz_sgn(c.a) == 0 ) { + c3_t y; + switch ( i ) { + default: + mpz_clear(v); mpz_clear(h); mpz_clear(g); + mpz_clear(d.minExp); mpz_clear(d.expWidth); + mpz_clear(c.a); mpz_clear(c.e); + return u3m_bail(c3__exit); + case c3__fl: + case c3__sm: + mpz_set_ui(c.a, 0); + mpz_set_ui(c.e, 0); + mpz_clear(v); mpz_clear(h); mpz_clear(g); + break; + case c3__ce: + case c3__lg: + mpz_set_ui(c.a, 1); + mpz_set(c.e, d.minExp); + mpz_clear(v); mpz_clear(h); mpz_clear(g); + break; + case c3__ne: + case c3__nt: + case c3__na: + if ( (i != c3__na) && _(j) ) { + y = (mpz_cmp(v, h) <= 0); + } else { + y = (mpz_cmp(v, h) < 0); + } + if ( y ) { + mpz_set_ui(c.a, 0); + mpz_set_ui(c.e, 0); + } else { + mpz_set_ui(c.a, 1); + mpz_set(c.e, d.minExp); + } + mpz_clear(v); mpz_clear(h); mpz_clear(g); + break; + } + goto end; + } + _xpd(&c, &d); + switch ( i ) { + c3_ws x; + default: + mpz_clear(v); mpz_clear(h); mpz_clear(g); + mpz_clear(d.minExp); mpz_clear(d.expWidth); + mpz_clear(c.a); mpz_clear(c.e); + return u3m_bail(c3__exit); + case c3__fl: + break; + case c3__lg: + mpz_add_ui(c.a, c.a, 1); + break; + case c3__sm: + if ( (mpz_sgn(v) != 0) || !_(j) ) break; + if ( (mpz_cmp(c.e, d.minExp) == 0) && (d.eMode != c3__i) ) { + mpz_sub_ui(c.a, c.a, 1); + break; + } + mpz_mul_2exp(g, c.a, 1); + mpz_sub_ui(g, g, 1); + if ( mpz_sizeinbase(g, 2) <= d.precision ) { + mpz_sub_ui(c.e, c.e, 1); + mpz_set(c.a, g); + } else { + mpz_sub_ui(c.a, c.a, 1); + } + break; + case c3__ce: + if ( (mpz_sgn(v) != 0) || !_(j) ) { + mpz_add_ui(c.a, c.a, 1); + } + break; + case c3__ne: + if ( mpz_sgn(v) == 0 ) break; + x = mpz_cmp(v, h); + if ( (x == 0) && _(j) ) { + if ( mpz_odd_p(c.a) ) { + mpz_add_ui(c.a, c.a, 1); + } + } + else if ( x >= 0 ) { + mpz_add_ui(c.a, c.a, 1); + } + break; + case c3__na: + case c3__nt: + if ( mpz_sgn(v) == 0 ) break; + x = mpz_cmp(v, h); + if ( (x < 0) ) break; + if ( (i == c3__nt) && (x == 0) ) { + if (!_(j)) mpz_add_ui(c.a, c.a, 1); + } else { + mpz_add_ui(c.a, c.a, 1); + } + break; + } + if ( mpz_sizeinbase(c.a, 2) == (d.precision + 1) ) { + mpz_tdiv_q_2exp(c.a, c.a, 1); + mpz_add_ui(c.e, c.e, 1); + } + if ( mpz_sgn(c.a) == 0 ) { + mpz_set_ui(c.e, 0); + mpz_clear(v); mpz_clear(h); mpz_clear(g); + goto end; + } + mpz_set(g, d.minExp); + mpz_add(g, g, d.expWidth); + if ( (d.eMode != c3__i) && (mpz_cmp(g, c.e) < 0) ) { + mpz_clear(v); mpz_clear(h); mpz_clear(g); + mpz_clear(d.minExp); mpz_clear(d.expWidth); + mpz_clear(c.a); mpz_clear(c.e); + return u3nc(c3__i, c3y); + } + mpz_clear(v); mpz_clear(h); mpz_clear(g); + + // all mpz except in c, d structures cleared; c contains result + end: + if ( d.eMode == c3__f ) { + if ( mpz_sizeinbase(c.a, 2) != d.precision ) { + mpz_set_ui(c.a, 0); + mpz_set_ui(c.e, 0); + } + } + u3_noun ret = u3nq(c3__f, c3y, _mp_to_satom(c.e), u3i_mp(c.a)); + mpz_clear(d.minExp); mpz_clear(d.expWidth); + return ret; + } + + u3_noun + u3wef_lug(u3_noun cor) + { + u3_noun a, b, c, d, e; + a = u3x_at(u3x_sam, cor); + b = u3x_at(30, cor); + u3x_trel(a, &c, &d, &e); + + return u3qef_lug(d, b, c, e); + } + + u3_noun + u3qef_drg(u3_noun a, + u3_noun b) + { + ea c; + flOptions d; + _noun_to_ea(&c, a); + _noun_to_flOptions(&d, b); + if ( mpz_sgn(c.a) == 0 ) { + mpz_clear(d.minExp); mpz_clear(d.expWidth); + mpz_clear(c.a); mpz_clear(c.e); + u3m_bail(c3__exit); + } + _xpd(&c, &d); + if ( !mpz_fits_sint_p(c.e) ) { + mpz_clear(d.minExp); mpz_clear(d.expWidth); + mpz_clear(c.a); mpz_clear(c.e); + u3m_bail(c3__exit); + } + mpz_t r, s, mn, mp, i, j, u, o; + mpz_init_set(r, c.a); + mpz_init_set_ui(s, 1); + mpz_init_set_ui(mn, 1); + mpz_init(i); + mpz_init(j); + c3_w se = mpz_sgn(c.e); + if ( se == 1 ) { + mpz_mul_2exp(r, r, mpz_get_ui(c.e)); + mpz_mul_2exp(mn, mn, mpz_get_ui(c.e)); + } + else if ( se == -1 ) { + mpz_mul_2exp(s, s, mpz_get_ui(c.e)); + } + mpz_init_set(mp, mn); + mpz_set_ui(i, 1); + mpz_mul_2exp(i, i, d.precision - 1); + if ( (mpz_cmp(c.a, i) == 0) && + ((mpz_cmp(c.e, d.minExp) != 0 ) || + (d.eMode == c3__i)) ) { + mpz_mul_2exp(mp, mp, 1); + mpz_mul_2exp(r, r, 1); + mpz_mul_2exp(s, s, 1); + } + mpz_cdiv_q_ui(i, s, 10); + mpz_set_ui(c.e, 0); + while ( mpz_cmp(r, i) < 0 ) { + mpz_sub_ui(c.e, c.e, 1); + mpz_mul_ui(r, r, 10); + mpz_mul_ui(mn, mn, 10); + mpz_mul_ui(mp, mp, 10); + } + while ( 1 ) { + mpz_mul_2exp(i, r, 1); + mpz_add(i, i, mp); + mpz_mul_2exp(j, s, 1); + if ( mpz_cmp(i, j) < 0 ) { + break; + } + mpz_mul_ui(s, s, 10); + mpz_add_ui(c.e, c.e, 1); + } + mpz_init(u); + mpz_init_set_ui(o, 0); + while ( 1 ) { + mpz_sub_ui(c.e, c.e, 1); + mpz_mul_ui(r, r, 10); + mpz_mul_ui(mn, mn, 10); + mpz_mul_ui(mp, mp, 10); + mpz_tdiv_qr(u, r, r, s); + mpz_mul_2exp(i, r, 1); + mpz_mul_2exp(j, s, 1); + c3_t l = mpz_cmp(i, mn) < 0; + c3_t h = mpz_cmp(j, mp) < 0; + if ( !h ) { + mpz_sub(j, j, mp); + h = mpz_cmp(i, j) > 0; + } + if ( l || h ) { + mpz_mul_ui(o, o, 10); + mpz_add(o, o, u); + if ( h && (!l || (mpz_cmp(i, s) > 0)) ) { + mpz_add_ui(o, o, 1); + } + break; + } + mpz_mul_ui(o, o, 10); + mpz_add(o, o, u); + } + mpz_set(c.a, o); + mpz_clear(r); mpz_clear(s); + mpz_clear(mn); mpz_clear(mp); + mpz_clear(i); mpz_clear(j); mpz_clear(u); + mpz_clear(o); mpz_clear(d.minExp); mpz_clear(d.expWidth); + + return _ea_to_noun(&c); + } + + u3_noun + u3wef_drg(u3_noun cor) + { + u3_noun a, b; + a = u3x_at(u3x_sam, cor); + b = u3x_at(30, cor); + + return u3qef_drg(a, b); + } diff --git a/vere/pkg/noun/jets/e/fynd_ob.c b/vere/pkg/noun/jets/e/fynd_ob.c new file mode 100644 index 0000000..62e65d1 --- /dev/null +++ b/vere/pkg/noun/jets/e/fynd_ob.c @@ -0,0 +1,94 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "murmur3.h" + +// +tail:ob constant parameters to +fe:ob +// +static const c3_w a_w = 0xffff; +static const c3_w b_w = 0x10000; +static const c3_w k_w = 0xffff0000; + +// (flop raku:ob) +// +static const c3_w kar_w[4] = { 0x4b387af7, 0x85bcae01, 0xee281300, 0xb76d5eed }; + +/* _fen_ob(): +fen:ob, with constant parameters factored out. +** correct over the domain [0x0 ... 0xfffe.ffff] +*/ +static c3_w +_fen_ob(c3_w m_w) +{ + c3_w l_w = m_w / a_w; + c3_w r_w = m_w % a_w; + c3_w f_w, t_w; + c3_y j_y, k_y[2]; + + // legendary @max19 + // + if ( a_w == l_w ) { + t_w = l_w; + l_w = r_w; + r_w = t_w; + } + + for ( j_y = 0; j_y < 4; j_y++ ) { + k_y[0] = l_w & 0xff; + k_y[1] = (l_w >> 8) & 0xff; + + MurmurHash3_x86_32(k_y, 2, kar_w[j_y], &f_w); + + t_w = ( j_y & 1 ) + ? ((r_w + a_w) - (f_w % a_w)) % a_w + : ((r_w + b_w) - (f_w % b_w)) % b_w; + r_w = l_w; + l_w = t_w; + } + + return (r_w * a_w) + l_w; +} + +/* _tail_ob(): +feis:ob, also offsetting by 0x1.000 (as in +fynd:ob). +** correct over the domain [0x1.0000, 0xffff.ffff] +*/ +static c3_w +_tail_ob(c3_w m_w) +{ + c3_w c_w = _fen_ob(m_w - b_w); + return b_w + (( c_w < k_w ) ? c_w : _fen_ob(c_w)); +} + +u3_atom +u3qe_fynd_ob(u3_atom pyn) +{ + c3_w sor_w = u3r_met(4, pyn); + + if ( (sor_w < 2) || (sor_w > 4) ) { + return u3k(pyn); + } + + if ( 2 == sor_w ) { + return u3i_word(_tail_ob(u3r_word(0, pyn))); + } + else { + c3_w pyn_w[2]; + u3r_words(0, 2, pyn_w, pyn); + + if ( pyn_w[0] < b_w ) { + return u3k(pyn); + } + else { + pyn_w[0] = _tail_ob(pyn_w[0]); + return u3i_words(2, pyn_w); + } + } +} + +u3_noun +u3we_fynd_ob(u3_noun cor) +{ + return u3qe_fynd_ob(u3x_atom(u3x_at(u3x_sam, cor))); +} diff --git a/vere/pkg/noun/jets/e/hmac.c b/vere/pkg/noun/jets/e/hmac.c new file mode 100644 index 0000000..b14ec1e --- /dev/null +++ b/vere/pkg/noun/jets/e/hmac.c @@ -0,0 +1,94 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qe_hmac(u3_noun haj, + u3_atom boq, + u3_atom out, + u3_atom wik, + u3_atom key, + u3_atom wid, + u3_atom dat) + { + u3_assert(_(u3a_is_cat(boq)) && _(u3a_is_cat(wik)) && _(u3a_is_cat(wid))); + + // prep the hashing gate + u3j_site sit_u; + u3j_gate_prep(&sit_u, u3k(haj)); + + // ensure key and message fit signaled lengths + key = u3qc_end(3, wik, key); + dat = u3qc_end(3, wid, dat); + + // keys longer than block size are shortened by hashing + if (wik > boq) { + key = u3j_gate_slam(&sit_u, u3nc(wik, key)); + wik = out; + } + + // keys shorter than block size are right-padded + if (wik < boq) { + key = u3kc_lsh(3, (boq - wik), key); + } + + // pad key, inner and outer + c3_y trail = (boq % 4); + c3_y padwords = (boq / 4) + (trail == 0 ? 0 : 1); + c3_w innpad[padwords], outpad[padwords]; + memset(innpad, 0x36, padwords * 4); + memset(outpad, 0x5c, padwords * 4); + if ( trail > 0 ) { + innpad[padwords-1] = 0x36363636 >> (8 * (4 - trail)); + outpad[padwords-1] = 0x5c5c5c5c >> (8 * (4 - trail)); + } + u3_atom innkey = u3kc_mix(u3k(key), u3i_words(padwords, innpad)); + u3_atom outkey = u3kc_mix( key , u3i_words(padwords, outpad)); + + // append inner padding to message, then hash + u3_atom innmsg = u3ka_add(u3kc_lsh(3, wid, innkey), dat); + u3_atom innhaj = u3j_gate_slam(&sit_u, u3nc((wid + boq), innmsg)); + + // prepend outer padding to result, hash again + u3_atom outmsg = u3ka_add(u3kc_lsh(3, out, outkey), innhaj); + u3_atom outhaj = u3j_gate_slam(&sit_u, u3nc((out + boq), outmsg)); + + u3j_gate_lose(&sit_u); + return outhaj; + } + + u3_noun + u3we_hmac(u3_noun cor) + { + u3_noun haj, boq, out, wik, key, wid, dat; + + // sample is [[haj boq out] [wik key] [wid dat]] + if ( (c3n == u3r_mean(cor, u3x_sam_4, &haj, + 50, &boq, // +<->- + 51, &out, // +<->+ + u3x_sam_12, &wik, + u3x_sam_13, &key, + u3x_sam_14, &wid, + u3x_sam_15, &dat, 0)) || + (c3n == u3ud(boq)) || + (c3n == u3a_is_cat(boq)) || + (c3n == u3ud(out)) || + (c3n == u3a_is_cat(out)) || + (c3n == u3ud(wik)) || + (c3n == u3a_is_cat(wik)) || + (c3n == u3ud(key)) || + (c3n == u3ud(wid)) || + (c3n == u3a_is_cat(wid)) || + (c3n == u3ud(dat)) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qe_hmac(haj, boq, out, wik, key, wid, dat); + } + } diff --git a/vere/pkg/noun/jets/e/jam.c b/vere/pkg/noun/jets/e/jam.c new file mode 100644 index 0000000..2291bc0 --- /dev/null +++ b/vere/pkg/noun/jets/e/jam.c @@ -0,0 +1,60 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qe_jam(u3_atom a) +{ +#if 0 + if (c3y == u3du(a) && 1337 == u3h(a)) { + c3_w siz_w, tot_w = 0; + u3_noun som; + for ( som = u3t(a); c3y == u3du(som); som = u3t(som) ) { + siz_w = u3a_count_noun(u3h(som)); + tot_w += siz_w; + if ( 0 == siz_w ) { + u3l_log("item: B/0"); + } + else { + u3a_print_memory(stderr, "item", siz_w); + } + } + if ( u3_blip != som ) { + u3l_log("forgot to terminate list!"); + } + c3_w mem_w = u3h_count(u3R->cax.har_p); + + for ( som = u3t(a); c3y == u3du(som); som = u3t(som) ) u3a_discount_noun(u3h(som)); + u3h_discount(u3R->cax.har_p); + + u3a_print_memory(stderr, "total", tot_w); + u3a_print_memory(stderr, "memoization cache", mem_w); + u3h_root* har_u = u3to(u3h_root, u3R->cax.har_p); + u3l_log("memoization entries: %d", har_u->use_w); + u3a_print_memory(stderr, "unused free", u3a_open(u3R)); + return tot_w; + } +#endif + + u3i_slab sab_u; + u3s_jam_fib(&sab_u, a); + return u3i_slab_mint(&sab_u); +} + +u3_noun +u3we_jam(u3_noun cor) +{ + return u3qe_jam(u3x_at(u3x_sam, cor)); +} + +u3_atom +u3ke_jam(u3_noun a) +{ + u3_atom b = u3qe_jam(a); + u3z(a); + return b; +} diff --git a/vere/pkg/noun/jets/e/json_de.c b/vere/pkg/noun/jets/e/json_de.c new file mode 100644 index 0000000..e54393a --- /dev/null +++ b/vere/pkg/noun/jets/e/json_de.c @@ -0,0 +1,258 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +#include "pdjson.h" + +/* +** custom code for interfacing with external parser: +** https://github.com/skeeto/pdjson +*/ + +typedef struct _u3qedj_coll { + u3_noun col; // collection (list for array, map for object) + union { // store context for recursive arrays/objects: + u3_noun* tel; // - pointer to tail for array + u3_atom key; // - key for object + }; +} u3qedj_coll; + +static u3qedj_coll* +_push_stack(const u3a_pile *pil_u) +{ + u3qedj_coll *res_u = u3a_push(pil_u); + u3a_pile_done(pil_u); + + res_u->col = u3_nul; + res_u->key = u3_none; + + return res_u; +} + +static u3qedj_coll* +_pop_stack(const u3a_pile *pil_u) +{ + return u3a_pop(pil_u); +} + +static void +_close_stack(const u3a_pile *pil_u) +{ + while ( c3n == u3a_pile_done(pil_u) ) { + u3qedj_coll *tak_u = u3a_peek(pil_u); + + u3z(tak_u->col); + if ( u3_none != tak_u->key ) { + u3z(tak_u->key); + } + + u3a_drop(pil_u); + } +} + +static void +_close_on_error(json_stream *sam_u, const u3a_pile *pil_u) +{ + _close_stack(pil_u); + json_close(sam_u); +} + +static u3_atom +_json_get_string_as_atom(json_stream *sam_u) { + // length returned by json_get_string includes the trailing null byte + // it's possible for json_get_string to return a length of 0, but only if: + // - it's called directly after init + // - it's called directly after init_string + size_t len_i; + const c3_c *str_c = json_get_string(sam_u, &len_i); + return (len_i <= 1) ? + u3_nul : + u3i_bytes(len_i - 1, (const c3_y *)str_c); +} + +static u3_noun +_parse(u3_atom txt) +{ + // + // vars + // + + u3qedj_coll *tak_u; + + json_allocator loc_u = {u3a_malloc, u3a_realloc, u3a_free}; + json_stream sem_u; + json_stream* sam_u = &sem_u; + + u3a_pile pel_u; + u3a_pile *pil_u = &pel_u; + + u3_noun res = u3_none; + u3_noun val; + + const c3_y *byt_y; + c3_z cnt_z; + c3_w len_w = u3r_met(3, txt); + + // + // initialization + // + + // XX assumes little-endian + // + if ( c3y == u3a_is_cat(txt) ) { + byt_y = (c3_y*)&txt; + } + else { + u3a_atom* vat_u = u3a_to_ptr(txt); + byt_y = (c3_y*)vat_u->buf_w; + } + json_open_buffer(sam_u, byt_y, len_w); + json_set_allocator(sam_u, &loc_u); + u3a_pile_prep(pil_u, sizeof(u3qedj_coll)); + + // + // core logic + // + + while ( json_peek(sam_u) != JSON_DONE ) { + switch ( json_next(sam_u) ) { + // unreachable barring programming error + default: u3_assert(0); + + case JSON_ARRAY: + case JSON_OBJECT: { + tak_u = _push_stack(pil_u); + } continue; + + case JSON_ARRAY_END: { + val = u3nc(c3__a, tak_u->col); + tak_u = _pop_stack(pil_u); + } break; + + case JSON_OBJECT_END: { + val = u3nc(c3__o, tak_u->col); + tak_u = _pop_stack(pil_u); + } break; + + case JSON_STRING: { + if ( (json_get_context(sam_u, &cnt_z) == JSON_OBJECT) && (cnt_z & 1) ) { + // since object key must be followed by value, skip ahead + tak_u->key = _json_get_string_as_atom(sam_u); + continue; + } + else { + val = u3nc(c3__s, _json_get_string_as_atom(sam_u)); + break; + } + } + + case JSON_NUMBER: { + // read number from string in the JSON reparser + val = u3nc(c3__n, _json_get_string_as_atom(sam_u)); + } break; + + case JSON_TRUE: { + val = u3nc(c3__b, c3y); + } break; + + case JSON_FALSE: { + val = u3nc(c3__b, c3n); + } break; + + case JSON_NULL: { + val = u3_nul; + } break; + + case JSON_ERROR: { + _close_on_error(sam_u, pil_u); + return u3_nul; + } break; + } + + switch ( json_get_context(sam_u, &cnt_z) ) { + // unreachable barring programming error + default: u3_assert(0); + + case JSON_DONE: { + res = val; + } break; + + case JSON_ARRAY: { + u3_noun* nex; + u3_noun* hed; + + if ( tak_u->col == u3_nul ) { + nex = &(tak_u->col); + } + else { + nex = tak_u->tel; + } + + *nex = u3i_defcons(&hed, &(tak_u->tel)); + *hed = val; + *(tak_u->tel) = u3_nul; + } break; + + case JSON_OBJECT: { + // odd cnt_z and unset key weeded out by continue command on key + u3_assert(!(cnt_z & 1)); + u3_assert(tak_u->key != u3_none); + // cnt_z == 0 weeded out by continue command on array/object open + u3_assert(cnt_z); + + tak_u->col = u3kdb_put(tak_u->col, tak_u->key, val); + tak_u->key = u3_none; + } break; + } + } + + // + // clean up + // + + u3_assert(c3y == u3a_pile_done(pil_u)); + + // skip over whitespce + while ( json_isspace(json_source_peek(sam_u)) ) { + json_source_get(sam_u); + } + + json_close(sam_u); + + // return null if trailing trash/multiple JSON objects + if ( json_get_position(sam_u) != len_w ) { + u3z(res); + return u3_nul; + } + else { + return u3nc(u3_nul, res); + } +} + +/* +** jet interface functions +*/ + +u3_noun +u3qe_json_de(u3_atom a) +{ + return _parse(a); +} + +u3_noun +u3ke_json_de(u3_atom a) +{ + u3_noun res = u3qe_json_de(a); + u3z(a); + return res; +} + +u3_noun +u3we_json_de(u3_noun cor) +{ + return u3qe_json_de(u3x_atom(u3x_at(u3x_sam, cor))); +} diff --git a/vere/pkg/noun/jets/e/json_en.c b/vere/pkg/noun/jets/e/json_en.c new file mode 100644 index 0000000..f605ab4 --- /dev/null +++ b/vere/pkg/noun/jets/e/json_en.c @@ -0,0 +1,416 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +/* +** structs +*/ + +typedef struct _json_buffer { + c3_y *buf_y; + c3_w len_w; +} json_buffer; + +/* +** constants +*/ + +const c3_y _JSON_NULL[] = "null"; +const c3_y _JSON_TRUE[] = "true"; +const c3_y _JSON_FALSE[] = "false"; +const c3_y _JSON_NEWLINE[] = "\\n"; +const c3_y _JSON_DOQ[] = "\\\""; +const c3_y _JSON_BAS[] = "\\\\"; +const c3_y _JSON_DEL[] = "\\u007f"; +const c3_y *_JSON_UNICODES[] = { + (c3_y*)"\\u0000", // 0 + (c3_y*)"\\u0001", // 1 + (c3_y*)"\\u0002", // 2 + (c3_y*)"\\u0003", // 3 + (c3_y*)"\\u0004", // 4 + (c3_y*)"\\u0005", // 5 + (c3_y*)"\\u0006", // 6 + (c3_y*)"\\u0007", // 7 + (c3_y*)"\\u0008", // 8 + (c3_y*)"\\u0009", // 9 + (c3_y*)"\\u000a", // 10 + (c3_y*)"\\u000b", // 11 + (c3_y*)"\\u000c", // 12 + (c3_y*)"\\u000d", // 13 + (c3_y*)"\\u000e", // 14 + (c3_y*)"\\u000f", // 15 + (c3_y*)"\\u0010", // 16 + (c3_y*)"\\u0011", // 17 + (c3_y*)"\\u0012", // 18 + (c3_y*)"\\u0013", // 19 + (c3_y*)"\\u0014", // 20 + (c3_y*)"\\u0015", // 21 + (c3_y*)"\\u0016", // 22 + (c3_y*)"\\u0017", // 23 + (c3_y*)"\\u0018", // 24 + (c3_y*)"\\u0019", // 25 + (c3_y*)"\\u001a", // 26 + (c3_y*)"\\u001b", // 27 + (c3_y*)"\\u001c", // 28 + (c3_y*)"\\u001d", // 29 + (c3_y*)"\\u001e", // 30 + (c3_y*)"\\u001f", // 31 +}; + +/* +** forward declarations +*/ + +static c3_w +_measure(u3_noun a); + +static void +_serialize(json_buffer*, u3_noun); + +/* +** core jet logic +*/ + +static void +_append_char(json_buffer *buf_u, c3_y c_y) +{ + buf_u->buf_y[(buf_u->len_w)++] = c_y; +} + +static void +_append_text(json_buffer *buf_u, const c3_y *buf_y, c3_w len_w) +{ + memcpy(&(buf_u->buf_y[buf_u->len_w]), buf_y, len_w); + buf_u->len_w += len_w; +} + +static c3_w +_measure_loobean(u3_noun a) +{ + switch ( a ) { + default: u3m_bail(c3__exit); + case c3y: return sizeof(_JSON_TRUE) - 1; + case c3n: return sizeof(_JSON_FALSE) - 1; + } +} + +static void +_serialize_loobean(json_buffer *buf_u, u3_noun a) +{ + switch ( a ) { + default: u3_assert(0); + case c3y: _append_text(buf_u, _JSON_TRUE, sizeof(_JSON_TRUE) - 1); break; + case c3n: _append_text(buf_u, _JSON_FALSE, sizeof(_JSON_FALSE) - 1); break; + } +} + +static c3_w +_measure_number(u3_noun a) +{ + if ( _(u3du(a)) ) { + u3m_bail(c3__exit); + } + + return u3r_met(3, a); +} + +static void +_serialize_number(json_buffer *buf_u, u3_noun a) +{ + const c3_y *byt_y; + + // XX assumes little-endian + // + if ( c3y == u3a_is_cat(a) ) { + byt_y = (c3_y*)&a; + } + else { + u3a_atom* vat_u = u3a_to_ptr(a); + byt_y = (c3_y*)vat_u->buf_w; + } + + _append_text(buf_u, byt_y, u3r_met(3, a)); +} + +static c3_w +_measure_string(u3_noun a) +{ + if ( _(u3du(a)) ) { + u3m_bail(c3__exit); + } + + c3_w len_w = u3r_met(3, a); + c3_w siz_w = 0; + + for (c3_w i = 0; i < len_w; ++i) { + c3_y c_y = u3r_byte(i, a); + + switch ( c_y ) { + case 0 ... 9: + case 11 ... 31: { + siz_w += 6; + } break; + + case 10: { + siz_w += sizeof(_JSON_NEWLINE) - 1; + } break; + + case 34: { + siz_w += sizeof(_JSON_DOQ) - 1; + } break; + + case 92: { + siz_w += sizeof(_JSON_BAS) - 1; + } break; + + case 127: { + siz_w += sizeof(_JSON_DEL) - 1; + } break; + + default: { + siz_w += 1; + } break; + } + } + + // surrounding double quotes + return (siz_w + 2); +} + +static void +_serialize_string(json_buffer *buf_u, u3_noun a) +{ + c3_w len_w = u3r_met(3, a); + + _append_char(buf_u, '"'); + for (c3_w i = 0; i < len_w; ++i) { + c3_y c_y = u3r_byte(i, a); + + switch ( c_y ) { + case 0 ... 9: + case 11 ... 31: { + _append_text(buf_u, _JSON_UNICODES[c_y], 6); + } break; + + case 10: { + _append_text(buf_u, _JSON_NEWLINE, sizeof(_JSON_NEWLINE) - 1); + } break; + + case 34: { + _append_text(buf_u, _JSON_DOQ, sizeof(_JSON_DOQ) - 1); + } break; + + case 92: { + _append_text(buf_u, _JSON_BAS, sizeof(_JSON_BAS) - 1); + } break; + + case 127: { + _append_text(buf_u, _JSON_DEL, sizeof(_JSON_DEL) - 1); + } break; + + default: { + _append_char(buf_u, c_y); + } break; + } + } + _append_char(buf_u, '"'); +} + +static c3_w +_measure_array(u3_noun a) +{ + if ( u3_nul != a ) { + u3_noun i, t = a; + // array open brace + c3_w siz_w = 1; + + while ( u3_nul != t ) { + u3x_cell(t, &i, &t); + siz_w += _measure(i); + // comma or array close brace + siz_w += 1; + } + + return siz_w; + } + else { + // empty array + return 2; + } +} + +static void +_serialize_array(json_buffer *buf_u, u3_noun a) +{ + _append_char(buf_u, '['); + + if ( u3_nul != a ) { + u3_noun i, t = a; + + while ( u3_nul != t ) { + u3x_cell(t, &i, &t); + _serialize(buf_u, i); + _append_char(buf_u, ','); + } + + // Remove trailing comma from array contents + --buf_u->len_w; + } + + _append_char(buf_u, ']'); +} + +static c3_w +_measure_object_helper(u3_noun a) +{ + c3_w siz_w = 0; + + if ( u3_nul != a ) { + u3_noun n_a, l_a, r_a; + u3_noun pn_a, qn_a; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_cell(n_a, &pn_a, &qn_a); + + siz_w += _measure_object_helper(r_a); + siz_w += _measure_object_helper(l_a); + + siz_w += _measure_string(pn_a); + siz_w += _measure(qn_a); + + // colon and comma (or closing brace) + siz_w += 2; + } + + return siz_w; +} + +static void +_serialize_object_helper(json_buffer *buf_u, u3_noun a) +{ + if ( u3_nul != a ) { + u3_noun n_a, l_a, r_a; + u3_noun pn_a, qn_a; + u3x_trel(a, &n_a, &l_a, &r_a); + u3x_cell(n_a, &pn_a, &qn_a); + + // order is important to match unjetted tree traversal + _serialize_object_helper(buf_u, r_a); + + _serialize_string(buf_u, pn_a); + _append_char(buf_u, ':'); + _serialize(buf_u, qn_a); + _append_char(buf_u, ','); + + _serialize_object_helper(buf_u, l_a); + } +} + +static c3_w +_measure_object(u3_noun a) +{ + if ( u3_nul != a ) { + // opening brace + return 1 + _measure_object_helper(a); + } + else { + // empty object + return 2; + } +} + +static void +_serialize_object(json_buffer *buf_u, u3_noun a) +{ + _append_char(buf_u, '{'); + + if ( u3_nul != a ) { + _serialize_object_helper(buf_u, a); + + // Remove trailing comma from object contents + --buf_u->len_w; + } + + _append_char(buf_u, '}'); +} + +static c3_w +_measure(u3_noun a) +{ + if ( u3_nul == a ) { + return sizeof(_JSON_NULL) - 1; + } + else { + u3_noun s, p; + u3x_cell(a, &s, &p); + + switch ( s ) { + default: u3m_bail(c3__fail); + case c3__a: return _measure_array(p); + case c3__o: return _measure_object(p); + case c3__b: return _measure_loobean(p); + case c3__n: return _measure_number(p); + case c3__s: return _measure_string(p); + } + } +} + +static void +_serialize(json_buffer *buf_u, u3_noun a) +{ + if ( u3_nul == a ) { + _append_text(buf_u, _JSON_NULL, sizeof(_JSON_NULL) - 1); + } + else { + u3_noun s, p; + u3x_cell(a, &s, &p); + + switch ( s ) { + default: u3_assert(0); + case c3__a: _serialize_array(buf_u, p); break; + case c3__o: _serialize_object(buf_u, p); break; + case c3__b: _serialize_loobean(buf_u, p); break; + case c3__n: _serialize_number(buf_u, p); break; + case c3__s: _serialize_string(buf_u, p); break; + } + } +} + +/* +** jet interface functions +*/ + +u3_atom +u3qe_json_en(u3_noun a) +{ + u3i_slab sab_u; + json_buffer bof_u; + json_buffer *buf_u = &bof_u; + c3_w siz_w = _measure(a); + + u3i_slab_init(&sab_u, 3, siz_w); + buf_u->buf_y = sab_u.buf_y; + buf_u->len_w = 0; + + // note that it's structurally integral to call measure before serialize + _serialize(buf_u, a); + + return u3i_slab_mint_bytes(&sab_u); +} + +u3_atom +u3ke_json_en(u3_noun a) +{ + u3_atom res = u3qe_json_en(a); + u3z(a); + return res; +} + +u3_atom +u3we_json_en(u3_noun cor) +{ + return u3qe_json_en(u3x_at(u3x_sam, cor)); +} diff --git a/vere/pkg/noun/jets/e/keccak.c b/vere/pkg/noun/jets/e/keccak.c new file mode 100644 index 0000000..6149c55 --- /dev/null +++ b/vere/pkg/noun/jets/e/keccak.c @@ -0,0 +1,42 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + +#define defw(bits,byts) \ + u3_atom \ + _kecc_##bits(c3_w len_w, u3_atom a) \ + { \ + c3_y out[byts]; \ + c3_y* buf_y = u3r_bytes_alloc(0, len_w, a); \ + if ( 0 != urcrypt_keccak_##bits(buf_y, len_w, out) ) { \ + /* urcrypt_keccac_##bits always succeeds when called correctly */ \ + return u3m_bail(c3__oops); \ + } \ + else { \ + u3_atom pro = u3i_bytes(byts, out); \ + u3a_free(buf_y); \ + return pro; \ + } \ + } \ + \ + u3_weak \ + u3we_kecc##bits(u3_noun cor) \ + { \ + c3_w len_w; \ + u3_noun len, tom; \ + u3x_mean(cor, u3x_sam_2, &len, u3x_sam_3, &tom, 0); \ + return ( (c3n == u3ud(len)) || (c3n == u3ud(tom)) ) \ + ? u3m_bail(c3__exit) \ + : (!u3r_word_fit(&len_w, len)) \ + ? u3m_bail(c3__fail) \ + : _kecc_##bits(len_w, tom); \ + } + +defw(224, 28) +defw(256, 32) +defw(384, 48) +defw(512, 64) diff --git a/vere/pkg/noun/jets/e/leer.c b/vere/pkg/noun/jets/e/leer.c new file mode 100644 index 0000000..8ffe372 --- /dev/null +++ b/vere/pkg/noun/jets/e/leer.c @@ -0,0 +1,131 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static u3_atom +_leer_cut(c3_w pos_w, c3_w len_w, u3_atom src) +{ + if ( 0 == len_w ) { + return 0; + } + else { + u3i_slab sab_u; + u3i_slab_bare(&sab_u, 3, len_w); + sab_u.buf_w[sab_u.len_w - 1] = 0; + + u3r_bytes(pos_w, len_w, sab_u.buf_y, src); + + return u3i_slab_mint_bytes(&sab_u); + } +} + +// Leaving the lore jet in place for backwards compatibility. +// TODO: remove u3[qw]e_lore (also from jet tree) + +u3_noun +u3qe_lore(u3_atom lub) +{ + c3_w len_w = u3r_met(3, lub); + c3_w pos_w = 0; + u3_noun tez = u3_nul; + + while ( 1 ) { + c3_w meg_w = 0; + c3_y end_y; + + c3_y byt_y; + while ( 1 ) { + if ( pos_w >= len_w ) { + byt_y = 0; + end_y = c3y; + break; + } + byt_y = u3r_byte(pos_w + meg_w, lub); + + if ( (10 == byt_y) || (0 == byt_y) ) { + end_y = __(byt_y == 0); + break; + } else meg_w++; + } + + if ((byt_y == 0) && ((pos_w + meg_w + 1) < len_w)) { + return u3m_bail(c3__exit); + } + + if ( !_(end_y) && pos_w >= len_w ) { + return u3kb_flop(tez); + } + else { + tez = u3nc(_leer_cut(pos_w, meg_w, lub), tez); + if ( _(end_y) ) { + return u3kb_flop(tez); + } + pos_w += (meg_w + 1); + } + } +} + +u3_noun +u3we_lore(u3_noun cor) +{ + u3_noun lub; + + if ( (u3_none == (lub = u3r_at(u3x_sam, cor))) || + (c3n == u3ud(lub)) ) + { + return u3m_bail(c3__fail); + } else { + return u3qe_lore(lub); + } +} + +u3_noun +u3qe_leer(u3_atom txt) +{ + u3_noun pro; + u3_noun* lit = &pro; + + { + c3_w pos_w, i_w = 0, len_w = u3r_met(3, txt); + u3_noun* hed; + u3_noun* tel; + + while ( i_w < len_w ) { + // scan till end or newline + // + for ( pos_w = i_w; i_w < len_w; ++i_w ) { + if ( 10 == u3r_byte(i_w, txt) ) { + break; + } + } + + // append to list + // + *lit = u3i_defcons(&hed, &tel); + *hed = _leer_cut(pos_w, i_w - pos_w, txt); + lit = tel; + + i_w++; + } + } + + *lit = u3_nul; + + return pro; +} + +u3_noun +u3we_leer(u3_noun cor) +{ + u3_noun txt = u3x_at(u3x_sam, cor); + + if ( c3n == u3ud(txt) ) { + return u3m_bail(c3__fail); + } + + return u3qe_leer(txt); +} diff --git a/vere/pkg/noun/jets/e/loss.c b/vere/pkg/noun/jets/e/loss.c new file mode 100644 index 0000000..35cdc4e --- /dev/null +++ b/vere/pkg/noun/jets/e/loss.c @@ -0,0 +1,297 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + typedef struct _u3_loss { // loss problem + u3_noun hel; // a as a list + c3_w lel_w; // length of a + c3_w lev_w; // length of b + u3_noun* hev; // b as an array + u3_noun sev; // b as a set of lists + c3_w kct_w; // candidate count + u3_noun* kad; // candidate array + } u3_loss; + + // free loss object + // + static void + _flem(u3_loss* loc_u) + { + u3z(loc_u->sev); + { + c3_w i_w; + + for ( i_w = 0; i_w < loc_u->kct_w; i_w++ ) { + u3z(loc_u->kad[i_w]); + } + } + u3a_free(loc_u->hev); + u3a_free(loc_u->kad); + } + + // extract lcs - XX don't use the stack like this + // + static u3_noun + _lext(u3_loss* loc_u, + u3_noun kad) + { + if ( u3_nul == kad ) { + return u3_nul; + } else { + return u3nc(u3k(loc_u->hev[u3r_word(0, u3h(kad))]), + _lext(loc_u, u3t(kad))); + } + } + + // extract lcs + // + static u3_noun + _lexs(u3_loss* loc_u) + { + if ( 0 == loc_u->kct_w ) { + return u3_nul; + } else return u3kb_flop(_lext(loc_u, loc_u->kad[loc_u->kct_w - 1])); + } + + // initialize loss object + // + static void + _lemp(u3_loss* loc_u, + u3_noun hel, + u3_noun hev) + { + loc_u->hel = hel; + loc_u->lel_w = u3kb_lent(u3k(hel)); + + // Read hev into array. + { + c3_w i_w; + + loc_u->hev = u3a_malloc(u3kb_lent(u3k(hev)) * sizeof(u3_noun)); + + for ( i_w = 0; u3_nul != hev; i_w++ ) { + loc_u->hev[i_w] = u3h(hev); + hev = u3t(hev); + } + loc_u->lev_w = i_w; + } + loc_u->kct_w = 0; + loc_u->kad = u3a_malloc((1 + c3_min(loc_u->lev_w, loc_u->lel_w)) * + sizeof(u3_noun)); + + // Compute equivalence classes. + // + loc_u->sev = u3_nul; + { + c3_w i_w; + + for ( i_w = 0; i_w < loc_u->lev_w; i_w++ ) { + u3_noun how = loc_u->hev[i_w]; + u3_noun hav; + u3_noun teg; + + hav = u3kdb_get(u3k(loc_u->sev), u3k(how)); + teg = u3nc(u3i_words(1, &i_w), + (hav == u3_none) ? u3_nul : hav); + loc_u->sev = u3kdb_put(loc_u->sev, u3k(how), teg); + } + } + } + + // apply + // + static void + _lune(u3_loss* loc_u, + c3_w inx_w, + c3_w goy_w) + { + u3_noun kad; + + kad = u3nc(u3i_words(1, &goy_w), + (inx_w == 0) ? u3_nul + : u3k(loc_u->kad[inx_w - 1])); + if ( loc_u->kct_w == inx_w ) { + u3_assert(loc_u->kct_w < (1 << 31)); + loc_u->kct_w++; + } else { + u3z(loc_u->kad[inx_w]); + } + loc_u->kad[inx_w] = kad; + } + + // extend fits top + // + static u3_noun + _hink(u3_loss* loc_u, + c3_w inx_w, + c3_w goy_w) + { + return __ + ( (loc_u->kct_w == inx_w) || + (u3r_word(0, u3h(loc_u->kad[inx_w])) > goy_w) ); + } + + // extend fits bottom + // + static u3_noun + _lonk(u3_loss* loc_u, + c3_w inx_w, + c3_w goy_w) + { + return __ + ( (0 == inx_w) || + (u3r_word(0, u3h(loc_u->kad[inx_w - 1])) < goy_w) ); + } + +#if 0 + // search for first index >= inx_w and <= max_w that fits + // the hink and lonk criteria. + // + static u3_noun + _binka(u3_loss* loc_u, + c3_w* inx_w, + c3_w max_w, + c3_w goy_w) + { + while ( *inx_w <= max_w ) { + if ( c3n == _lonk(loc_u, *inx_w, goy_w) ) { + return c3n; + } + if ( c3y == _hink(loc_u, *inx_w, goy_w) ) { + return c3y; + } + else ++*inx_w; + } + return c3n; + } +#endif + + // search for lowest index >= inx_w and <= max_w for which + // both hink(inx_w) and lonk(inx_w) are true. lonk is false + // if inx_w is too high, hink is false if it is too low. + // + static u3_noun + _bink(u3_loss* loc_u, + c3_w* inx_w, + c3_w max_w, + c3_w goy_w) + { + u3_assert(max_w >= *inx_w); + + if ( max_w == *inx_w ) { + if ( c3n == _lonk(loc_u, *inx_w, goy_w) ) { + return c3n; + } + if ( c3y == _hink(loc_u, *inx_w, goy_w) ) { + return c3y; + } + else { + ++*inx_w; + return c3n; + } + } + else { + c3_w mid_w = *inx_w + ((max_w - *inx_w) / 2); + + if ( (c3n == _lonk(loc_u, mid_w, goy_w)) || + (c3y == _hink(loc_u, mid_w, goy_w)) ) + { + return _bink(loc_u, inx_w, mid_w, goy_w); + } else { + *inx_w = mid_w + 1; + return _bink(loc_u, inx_w, max_w, goy_w); + } + } + } + + + static void + _merg(u3_loss* loc_u, + c3_w inx_w, + u3_noun gay) + { + if ( (u3_nul == gay) || (inx_w > loc_u->kct_w) ) { + return; + } + else { + u3_noun i_gay = u3h(gay); + c3_w goy_w = u3r_word(0, i_gay); + u3_noun bik; + + bik = _bink(loc_u, &inx_w, loc_u->kct_w, goy_w); + + if ( c3y == bik ) { + _merg(loc_u, inx_w + 1, u3t(gay)); + _lune(loc_u, inx_w, goy_w); + } + else { + _merg(loc_u, inx_w, u3t(gay)); + } + } + } + + // compute lcs + // + static void + _loss(u3_loss* loc_u) + { + while ( u3_nul != loc_u->hel ) { + u3_noun i_hel = u3h(loc_u->hel); + u3_noun guy = u3kdb_get(u3k(loc_u->sev), u3k(i_hel)); + + if ( u3_none != guy ) { + u3_noun gay = u3kb_flop(guy); + + _merg(loc_u, 0, gay); + u3z(gay); + } + + loc_u->hel = u3t(loc_u->hel); + } + } + + u3_noun + u3qe_loss(u3_noun hel, + u3_noun hev) + { + u3_loss loc_u; + u3_noun lcs; + + _lemp(&loc_u, hel, hev); + _loss(&loc_u); + lcs = _lexs(&loc_u); + + _flem(&loc_u); + return lcs; + } + + static u3_noun + _listp(u3_noun lix) + { + while ( 1 ) { + if ( u3_nul == lix ) return c3y; + if ( c3n == u3du(lix) ) return c3n; + lix = u3t(lix); + } + } + + u3_noun + u3we_loss(u3_noun cor) + { + u3_noun hel, hev; + + if ( (u3_none == (hel = u3r_at(u3x_sam_2, cor))) || + (u3_none == (hev = u3r_at(u3x_sam_3, cor))) || + (c3n == _listp(hel)) || + (c3n == _listp(hev)) ) + { + return u3m_bail(c3__fail); + } else { + return u3qe_loss(hel, hev); + } + } diff --git a/vere/pkg/noun/jets/e/lune.c b/vere/pkg/noun/jets/e/lune.c new file mode 100644 index 0000000..1187073 --- /dev/null +++ b/vere/pkg/noun/jets/e/lune.c @@ -0,0 +1,57 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qe_lune(u3_atom lub) + { + if (lub == 0) { + return u3_nul; + } + + { + c3_w end_w = u3r_met(3, lub) - 1; + c3_w pos_w = end_w; + u3_noun lin = u3_nul; + + if (u3r_byte(pos_w, lub) != 10) { + return u3m_error("noeol"); + } + + if (pos_w == 0) { + return u3nc(u3_nul, lin); + } + + while (--pos_w) { + if (u3r_byte(pos_w, lub) == 10) { + lin = u3nc(u3qc_cut(3, (pos_w + 1), (end_w - pos_w - 1), lub), lin); + end_w = pos_w; + } + } + + if (u3r_byte(pos_w, lub) == 10) { + return u3nc(u3_nul, + u3nc(u3qc_cut(3, (pos_w + 1), (end_w - pos_w - 1), lub), lin)); + } + + return u3nc(u3qc_cut(3, pos_w, (end_w - pos_w), lub), lin); + } + } + + u3_noun + u3we_lune(u3_noun cor) + { + u3_noun lub; + + if ( (u3_none == (lub = u3r_at(u3x_sam, cor))) || + (c3n == u3ud(lub)) ) + { + return u3m_bail(c3__fail); + } else { + return u3qe_lune(lub); + } + } diff --git a/vere/pkg/noun/jets/e/mat.c b/vere/pkg/noun/jets/e/mat.c new file mode 100644 index 0000000..89de386 --- /dev/null +++ b/vere/pkg/noun/jets/e/mat.c @@ -0,0 +1,49 @@ + /// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + u3_noun + u3qe_mat(u3_atom a) + { + if ( 0 == a ) { + return u3nc(1, 1); + } else { + u3_atom b = u3qc_met(0, a); + u3_atom c = u3qc_met(0, b); + u3_atom u, v, w, x, y, z; + u3_atom p, q; + + u = u3qa_dec(c); + v = u3qa_add(c, c); + w = u3qc_bex(c); + x = u3qc_end(0, u, b); + y = u3qc_lsh(0, u, a); + z = u3qc_mix(x, y); + + p = u3qa_add(v, b); + q = u3qc_cat(0, w, z); + + u3z(u); + u3z(v); + u3z(w); + u3z(x); + u3z(y); + u3z(z); + + return u3nc(p, q); + } + } + u3_noun + u3we_mat(u3_noun cor) + { + u3_noun a; + + if ( (u3_none == (a = u3r_at(u3x_sam, cor))) ) { + return u3m_bail(c3__fail); + } else { + return u3qe_mat(a); + } + } diff --git a/vere/pkg/noun/jets/e/mice.c b/vere/pkg/noun/jets/e/mice.c new file mode 100644 index 0000000..81b4a33 --- /dev/null +++ b/vere/pkg/noun/jets/e/mice.c @@ -0,0 +1,23 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +/* variant of u3we_mink() / u3m_soft_run(). caching, no scry. +*/ +u3_noun +u3we_mice(u3_noun cor) { + u3_noun bus, fol; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &bus, + u3x_sam_3, &fol, + 0) ) + { + return u3m_bail(c3__exit); + } + else { + return u3m_soft_cax(u3n_nock_on, u3k(bus), u3k(fol)); + } +} diff --git a/vere/pkg/noun/jets/e/mink.c b/vere/pkg/noun/jets/e/mink.c new file mode 100644 index 0000000..4caa208 --- /dev/null +++ b/vere/pkg/noun/jets/e/mink.c @@ -0,0 +1,27 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + u3_noun + u3we_mink(u3_noun cor) + { + u3_noun bus, fol, gul; + + if ( c3n == u3r_mean(cor, u3x_sam_4, &bus, + u3x_sam_5, &fol, + u3x_sam_3, &gul, + 0) ) + { + return u3m_bail(c3__exit); + } + else { + u3_noun som; + + som = u3n_nock_et(u3k(gul), u3k(bus), u3k(fol)); + + return som; + } + } diff --git a/vere/pkg/noun/jets/e/mole.c b/vere/pkg/noun/jets/e/mole.c new file mode 100644 index 0000000..a318390 --- /dev/null +++ b/vere/pkg/noun/jets/e/mole.c @@ -0,0 +1,18 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3we_mole(u3_noun cor) +{ + u3_noun hok = u3j_cook("u3we_mole-mure", u3k(cor), "mure"); + + // just like +mule and +mute, this takes advantage of the fact that + // +mure's result is identical to that of +mole, and safely produces + // a statically-typed value while only evaluating the trap once. + // + return u3n_slam_on(hok, u3k(u3x_at(u3x_sam, cor))); +} diff --git a/vere/pkg/noun/jets/e/mule.c b/vere/pkg/noun/jets/e/mule.c new file mode 100644 index 0000000..79e4656 --- /dev/null +++ b/vere/pkg/noun/jets/e/mule.c @@ -0,0 +1,19 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3we_mule(u3_noun cor) +{ + u3_noun hok = u3j_cook("u3we_mule-mute", u3k(cor), "mute"); + + + // this takes advantage of the fact that +mute's result is + // identical to that of +mule, and safely produces a statically-typed + // value while only evaluating the trap once. + // + return u3n_slam_on(hok, u3k(u3x_at(u3x_sam, cor))); +} diff --git a/vere/pkg/noun/jets/e/parse.c b/vere/pkg/noun/jets/e/parse.c new file mode 100644 index 0000000..4ae8ab0 --- /dev/null +++ b/vere/pkg/noun/jets/e/parse.c @@ -0,0 +1,1052 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + // get p.u.q.vex from an $edge, assumes that the unit is non-empty + // RETAIN [vex] + // + static inline u3_noun + _puq(u3_noun vex) + { + u3_weak pro = u3r_at(14, vex); + c3_dessert(u3_none != pro); + return (u3_noun)pro; + } + + // get q.u.q.vex from an $edge, assumes that the unit is non-empty + // RETAIN [vex] + // + static inline u3_noun + _quq(u3_noun vex) + { + u3_weak pro = u3r_at(15, vex); + c3_dessert(u3_none != pro); + return (u3_noun)pro; + } + + #define _p u3h + #define _q u3t + + static u3_noun + _slip(u3_noun weq, + u3_noun naz) + { + u3_noun p_naz, q_naz; + + u3x_cell(naz, &p_naz, &q_naz); + if ( 10 == weq ) { + return u3nc(u3i_vint(u3k(p_naz)), 1); + } else { + return u3nc(u3k(p_naz), u3i_vint(u3k(q_naz))); + } + } + + static u3_noun + _fail(u3_noun tub) + { + u3_noun p_tub, q_tub; + + u3x_cell(tub, &p_tub, &q_tub); + return u3nc(u3k(p_tub), u3_nul); + } + + static u3_noun + _last(u3_noun zyc, + u3_noun naz) + { + u3_noun p_zyc, q_zyc, p_naz, q_naz; + + u3x_cell(zyc, &p_zyc, &q_zyc); + u3x_cell(naz, &p_naz, &q_naz); + + if ( !_(u3a_is_cat(p_zyc)) || !_(u3a_is_cat(q_zyc)) || + !_(u3a_is_cat(p_naz)) || !_(u3a_is_cat(q_naz)) ) + { + return u3m_bail(c3__fail); + } else { + if ( p_zyc == p_naz ) { + return (q_zyc > q_naz) ? u3k(zyc) : u3k(naz); + } + else { + return (p_zyc > p_naz) ? u3k(zyc) : u3k(naz); + } + } + } + + static u3_noun + _last_k(u3_noun zyc, u3_noun naz) + { + u3_noun pro = _last(zyc, naz); + u3z(zyc); u3z(naz); + return pro; + } + + static u3_noun + _next(u3_noun tub) + { + u3_noun p_tub, q_tub; + u3_noun zac; + + u3x_cell(tub, &p_tub, &q_tub); + if ( c3n == u3du(q_tub) ) { + return _fail(tub); + } + else { + u3_noun iq_tub = u3h(q_tub); + u3_noun tq_tub = u3t(q_tub); + + zac = _slip(iq_tub, p_tub); + + return u3nc(zac, + u3nq(u3_nul, + u3k(iq_tub), + u3k(zac), + u3k(tq_tub))); + } + } + +/* bend +*/ + static u3_noun + _cqe_bend_fun(u3_noun raq, + u3_noun vex, + u3_noun sab) + { + u3_noun p_vex, q_vex; + + u3x_cell(vex, &p_vex, &q_vex); + if ( c3n == u3du(q_vex) ) { + return u3k(vex); + } else { + u3_noun uq_vex = u3t(q_vex); + u3_noun quq_vex; + u3_noun yit, yur; + u3_noun p_yit, q_yit; + u3_noun ret; + + quq_vex = u3t(uq_vex); + + yit = u3n_slam_on(u3k(sab), u3k(quq_vex)); + + u3x_cell(yit, &p_yit, &q_yit); + yur = _last(_p(vex), p_yit); + + if ( c3n == u3du(q_yit) ) { + ret = u3nc(yur, u3k(q_vex)); + } + else { + u3_noun uq_yit = u3t(q_yit); + u3_noun puq_yit; + u3_noun vux; + + puq_yit = u3h(uq_yit); + + vux = u3n_slam_on(u3k(raq), + u3nc(u3k(_puq(vex)), + u3k(puq_yit))); + if ( u3_nul == vux ) { + ret = u3nc(yur, u3k(_q(vex))); + } + else { + ret = u3nq(yur, + u3_nul, + u3k(u3t(vux)), + u3k(_quq(yit))); + u3z(vux); + } + } + u3z(yit); + return ret; + } + } + + u3_noun + u3we_bend_fun(u3_noun cor) + { + u3_noun van, raq, vex, sab; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &vex, + u3x_sam_3, &sab, + u3x_con, &van, 0)) || + (u3_none == (raq = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } else { + return _cqe_bend_fun(raq, vex, sab); + } + } + +/* cold +*/ + static u3_noun + _cqe_cold_fun(u3_noun cus, + u3_noun sef, + u3_noun tub) + { + u3_noun vex = u3n_slam_on(u3k(sef), u3k(tub)); + u3_noun p_vex, q_vex; + + u3x_cell(vex, &p_vex, &q_vex); + + if ( c3n == u3du(q_vex) ) { + return vex; + } + else { + u3_noun uq_vex = u3t(q_vex); + u3_noun quq_vex; + u3_noun ret; + + u3x_cell(uq_vex, 0, &quq_vex); + ret = u3nq(u3k(p_vex), + u3_nul, + u3k(cus), + u3k(quq_vex)); + + u3z(vex); + return ret; + } + } + + u3_noun + u3we_cold_fun(u3_noun cor) + { + u3_noun van, cus, sef, tub; + + if ( (c3n == u3r_mean(cor, u3x_sam, &tub, u3x_con, &van, 0)) || + (c3n == u3r_mean(van, u3x_sam_2, &cus, u3x_sam_3, &sef, 0)) ) + { + return u3m_bail(c3__fail); + } else { + return _cqe_cold_fun(cus, sef, tub); + } + } + +/* cook +*/ + static u3_noun + _cqe_cook_fun(u3_noun poq, + u3_noun sef, + u3_noun tub) + { + u3_noun vex = u3n_slam_on(u3k(sef), u3k(tub)); + u3_noun p_vex, q_vex; + + u3x_cell(vex, &p_vex, &q_vex); + + if ( c3n == u3du(q_vex) ) { + return vex; + } + else { + u3_noun uq_vex = u3t(q_vex); + u3_noun puq_vex, quq_vex; + u3_noun wag; + u3_noun ret; + + u3x_cell(uq_vex, &puq_vex, &quq_vex); + + u3k(quq_vex); + u3k(p_vex); + wag = u3n_slam_on(u3k(poq), u3k(puq_vex)); + + ret = u3nq(p_vex, + u3_nul, + wag, + quq_vex); + + u3z(vex); + return ret; + } + } + + u3_noun + u3we_cook_fun(u3_noun cor) + { + u3_noun van, poq, sef, tub; + + if ( (c3n == u3r_mean(cor, u3x_sam, &tub, u3x_con, &van, 0)) || + (c3n == u3r_mean(van, u3x_sam_2, &poq, u3x_sam_3, &sef, 0)) ) + { + return u3m_bail(c3__fail); + } else { + return _cqe_cook_fun(poq, sef, tub); + } + } + +/* comp +*/ + static u3_noun + _cqe_comp_fun(u3_noun raq, + u3_noun vex, + u3_noun sab) + { + u3_noun p_vex, q_vex; + + u3x_cell(vex, &p_vex, &q_vex); + if ( c3n == u3du(q_vex) ) { + return u3k(vex); + } else { + u3_noun uq_vex = u3t(q_vex); + u3_noun puq_vex, quq_vex; + u3_noun yit, yur; + u3_noun p_yit, q_yit; + u3_noun ret; + + u3x_cell(uq_vex, &puq_vex, &quq_vex); + yit = u3n_slam_on(u3k(sab), u3k(quq_vex)); + + u3x_cell(yit, &p_yit, &q_yit); + yur = _last(_p(vex), p_yit); + + if ( c3n == u3du(q_yit) ) { + ret = u3nc(yur, u3k(q_yit)); + } + else { + u3_noun uq_yit = u3t(q_yit); + u3_noun puq_yit, quq_yit; + + u3x_cell(uq_yit, &puq_yit, &quq_yit); + + u3k(quq_yit); + ret = u3nq(yur, + u3_nul, + u3n_slam_on(u3k(raq), + u3nc(u3k(_puq(vex)), + u3k(puq_yit))), + quq_yit); + } + u3z(yit); + return ret; + } + } + + u3_noun + u3we_comp_fun(u3_noun cor) + { + u3_noun van, raq, vex, sab; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &vex, + u3x_sam_3, &sab, + u3x_con, &van, 0)) || + (u3_none == (raq = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } else { + return _cqe_comp_fun(raq, vex, sab); + } + } + +/* easy +*/ + static u3_noun + _cqe_easy_fun(u3_noun huf, + u3_noun tub) + { + u3_noun p_tub, q_tub; + + u3x_cell(tub, &p_tub, &q_tub); + return u3nq(u3k(p_tub), + u3_nul, + u3k(huf), + u3k(tub)); + } + + u3_noun + u3we_easy_fun(u3_noun cor) + { + u3_noun van, huf, tub; + + if ( (c3n == u3r_mean(cor, u3x_sam, &tub, u3x_con, &van, 0)) || + (u3_none == (huf = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } else { + return _cqe_easy_fun(huf, tub); + } + } + +/* glue +*/ + static u3_noun + _cqe_glue_fun(u3_noun bus, + u3_noun vex, + u3_noun sab) + { + u3_noun p_vex, q_vex; + + u3x_cell(vex, &p_vex, &q_vex); + if ( c3n == u3du(q_vex) ) { + return u3k(vex); + } + else { + u3_noun uq_vex = u3t(q_vex); + u3_noun puq_vex, quq_vex; + u3_noun yit, yur; + u3_noun p_yit, q_yit; + u3_noun ret; + + u3x_cell(uq_vex, &puq_vex, &quq_vex); + yit = u3n_slam_on(u3k(bus), u3k(quq_vex)); + + u3x_cell(yit, &p_yit, &q_yit); + yur = _last(_p(vex), p_yit); + + if ( c3n == u3du(q_yit) ) { + ret = u3nc(yur, u3_nul); + } + else { + u3_noun uq_yit = u3t(q_yit); + u3_noun puq_yit, quq_yit; + u3_noun wam, p_wam, q_wam, goy; + + u3x_cell(uq_yit, &puq_yit, &quq_yit); + wam = u3n_slam_on(u3k(sab), u3k(quq_yit)); + + u3x_cell(wam, &p_wam, &q_wam); + goy = _last(yur, p_wam); + u3z(yur); + + if ( c3n == u3du(q_wam) ) { + ret = u3nc(goy, u3_nul); + } else { + u3_noun uq_wam = u3t(q_wam); + u3_noun puq_wam, quq_wam; + + u3x_cell(uq_wam, &puq_wam, &quq_wam); + ret = u3nq(goy, + u3_nul, + u3nc(u3k(_puq(vex)), + u3k(puq_wam)), + u3k(quq_wam)); + } + u3z(wam); + } + u3z(yit); + return ret; + } + } + + u3_noun + u3we_glue_fun(u3_noun cor) + { + u3_noun van, bus, vex, sab; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &vex, + u3x_sam_3, &sab, + u3x_con, &van, 0)) || + (u3_none == (bus = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } else { + return _cqe_glue_fun(bus, vex, sab); + } + } + +/* here +*/ + static u3_noun + _cqe_here_fun(u3_noun hez, + u3_noun sef, + u3_noun tub) + { + u3_noun vex = u3n_slam_on(u3k(sef), u3k(tub)); + u3_noun p_vex, q_vex; + + u3x_cell(vex, &p_vex, &q_vex); + + if ( c3n == u3du(q_vex) ) { + return vex; + } + else { + u3_noun uq_vex = u3t(q_vex); + u3_noun p_tub, q_tub; + u3_noun puq_vex, quq_vex, pquq_vex; + u3_noun gud, wag; + u3_noun ret; + + u3x_cell(tub, &p_tub, &q_tub); + u3x_cell(uq_vex, &puq_vex, &quq_vex); + u3x_cell(quq_vex, &pquq_vex, 0); + gud = u3nc( + u3nc(u3k(p_tub), + u3k(pquq_vex)), + u3k(puq_vex)); + + u3k(p_vex); + u3k(quq_vex); + wag = u3n_slam_on(u3k(hez), gud); + ret = u3nq(p_vex, + u3_nul, + wag, + quq_vex); + + u3z(vex); + return ret; + } + } + + u3_noun + u3we_here_fun(u3_noun cor) + { + u3_noun van, hez, sef, tub; + + if ( (c3n == u3r_mean(cor, u3x_sam, &tub, u3x_con, &van, 0)) || + (c3n == u3r_mean(van, u3x_sam_2, &hez, u3x_sam_3, &sef, 0)) ) + { + return u3m_bail(c3__fail); + } + else { + return _cqe_here_fun(hez, sef, tub); + } + } + +/* just +*/ + static u3_noun + _cqe_just_fun(u3_noun daf, + u3_noun tub) + { + u3_noun p_tub, q_tub; + + u3x_cell(tub, &p_tub, &q_tub); + + if ( c3n == u3du(q_tub) ) { + return _fail(tub); + } + else { + u3_noun iq_tub = u3h(q_tub); + + if ( c3y == u3r_sing(daf, iq_tub) ) { + return _next(tub); + } + else return _fail(tub); + } + } + u3_noun + u3we_just_fun(u3_noun cor) + { + u3_noun van, daf, tub; + + if ( (c3n == u3r_mean(cor, u3x_sam, &tub, u3x_con, &van, 0)) || + (u3_none == (daf = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } else { + return _cqe_just_fun(daf, tub); + } + } + +/* mask +*/ + static u3_noun + _cqe_mask_fun(u3_noun bud, + u3_noun tub) + { + u3_noun p_tub, q_tub; + + u3x_cell(tub, &p_tub, &q_tub); + + if ( c3n == u3du(q_tub) ) { + return _fail(tub); + } + else { + u3_noun iq_tub = u3h(q_tub); + + while ( c3y == u3du(bud) ) { + if ( c3y == u3r_sing(u3h(bud), iq_tub) ) { + return _next(tub); + } + bud = u3t(bud); + } + return _fail(tub); + } + } + u3_noun + u3we_mask_fun(u3_noun cor) + { + u3_noun van, bud, tub; + + if ( (c3n == u3r_mean(cor, u3x_sam, &tub, u3x_con, &van, 0)) || + (u3_none == (bud = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } else { + return _cqe_mask_fun(bud, tub); + } + } +/* pfix +*/ + static u3_noun + _cqe_pfix(u3_noun vex, + u3_noun sab) + { + u3_noun q_vex; + + q_vex = u3t(vex); + if ( c3n == u3du(q_vex) ) { + return u3k(vex); + } + else { + u3_noun uq_vex = u3t(q_vex); + u3_noun quq_vex; + u3_noun yit, p_yit, q_yit; + u3_noun ret; + + quq_vex = u3t(uq_vex); + + yit = u3n_slam_on(u3k(sab), u3k(quq_vex)); + + u3x_cell(yit, &p_yit, &q_yit); + ret = u3nc(_last(_p(vex), p_yit), + u3k(q_yit)); + + u3z(yit); + return ret; + } + } + u3_noun + u3we_pfix(u3_noun cor) + { + u3_noun vex, sab; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &vex, u3x_sam_3, &sab, 0)) ) { + return u3m_bail(c3__exit); + } else { + return _cqe_pfix(vex, sab); + } + } + +/* plug +*/ + static u3_noun + _cqe_plug(u3_noun vex, + u3_noun sab) + { + u3_noun p_vex, q_vex; + + u3x_cell(vex, &p_vex, &q_vex); + if ( c3n == u3du(q_vex) ) { + return u3k(vex); + } + else { + u3_noun uq_vex = u3t(q_vex); + u3_noun puq_vex, quq_vex; + u3_noun yit, yur; + u3_noun p_yit, q_yit; + u3_noun ret; + + u3x_cell(uq_vex, &puq_vex, &quq_vex); + yit = u3n_slam_on(u3k(sab), u3k(quq_vex)); + + u3x_cell(yit, &p_yit, &q_yit); + yur = _last(_p(vex), p_yit); + + if ( c3n == u3du(q_yit) ) { + ret = u3nc(yur, u3k(q_yit)); + } + else { + u3_noun uq_yit = u3t(q_yit); + u3_noun puq_yit, quq_yit; + + u3x_cell(uq_yit, &puq_yit, &quq_yit); + ret = u3nq(yur, + u3_nul, + u3nc(u3k(_puq(vex)), + u3k(puq_yit)), + u3k(quq_yit)); + } + u3z(yit); + return ret; + } + } + u3_noun + u3we_plug(u3_noun cor) + { + u3_noun vex, sab; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &vex, u3x_sam_3, &sab, 0)) ) { + return u3m_bail(c3__exit); + } else { + return _cqe_plug(vex, sab); + } + } + +/* pose +*/ + u3_noun + u3qe_pose(u3_noun vex, + u3_noun sab) + { + u3_noun q_vex; + + q_vex = u3t(vex); + if ( c3y == u3du(q_vex) ) { + return u3k(vex); + } else { + u3_noun roq = u3n_kick_on(u3k(sab)); + u3_noun p_roq, q_roq; + u3_noun ret; + + u3x_cell(roq, &p_roq, &q_roq); + ret = u3nc(_last(_p(vex), p_roq), + u3k(q_roq)); + + u3z(roq); + return ret; + } + } + u3_noun + u3we_pose(u3_noun cor) + { + u3_noun vex, sab; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &vex, u3x_sam_3, &sab, 0)) ) { + return u3m_bail(c3__exit); + } else { + return u3qe_pose(vex, sab); + } + } + +/* sfix +*/ + static u3_noun + _cqe_sfix(u3_noun vex, + u3_noun sab) + { + u3_noun q_vex; + + q_vex = u3t(vex); + if ( c3n == u3du(q_vex) ) { + return u3k(vex); + } + else { + u3_noun uq_vex = u3t(q_vex); + u3_noun quq_vex; + u3_noun yit, p_yit, q_yit, yur; + u3_noun ret; + + quq_vex = u3t(uq_vex); + + yit = u3n_slam_on(u3k(sab), u3k(quq_vex)); + + u3x_cell(yit, &p_yit, &q_yit); + yur = _last(_p(vex), p_yit); + + if ( c3n == u3du(q_yit) ) { + ret = u3nc(yur, u3_nul); + } + else { + u3_noun uq_yit = u3t(q_yit); + u3_noun puq_yit, quq_yit; + + u3x_cell(uq_yit, &puq_yit, &quq_yit); + + ret = u3nq(yur, + u3_nul, + u3k(_puq(vex)), + u3k(quq_yit)); + } + u3z(yit); + return ret; + } + } + u3_noun + u3we_sfix(u3_noun cor) + { + u3_noun vex, sab; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &vex, u3x_sam_3, &sab, 0)) ) { + return u3m_bail(c3__exit); + } else { + return _cqe_sfix(vex, sab); + } + } + +/* shim +*/ + static u3_noun + _cqe_shim_fun(u3_noun zep, + u3_noun tub) + { + u3_noun p_tub, q_tub; + + u3x_cell(tub, &p_tub, &q_tub); + + if ( c3n == u3du(q_tub) ) { + return _fail(tub); + } + else { + u3_noun p_zep, q_zep; + u3_noun iq_tub = u3h(q_tub); + + u3x_cell(zep, &p_zep, &q_zep); + if ( _(u3a_is_cat(p_zep)) && + _(u3a_is_cat(q_zep)) && + _(u3a_is_cat(iq_tub)) ) + { + if ( (iq_tub >= p_zep) && (iq_tub <= q_zep) ) { + return _next(tub); + } + else return _fail(tub); + } + else { + return u3m_bail(c3__fail); + } + } + } + u3_noun + u3we_shim_fun(u3_noun cor) + { + u3_noun van, zep, tub; + + if ( (c3n == u3r_mean(cor, u3x_sam, &tub, u3x_con, &van, 0)) || + (u3_none == (zep = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } else { + return _cqe_shim_fun(zep, tub); + } + } + +/* stag +*/ + static u3_noun + _cqe_stag_fun(u3_noun gob, + u3_noun sef, + u3_noun tub) + { + u3_noun vex = u3n_slam_on(u3k(sef), u3k(tub)); + u3_noun p_vex, q_vex; + + u3x_cell(vex, &p_vex, &q_vex); + + if ( c3n == u3du(q_vex) ) { + return vex; + } + else { + u3_noun uq_vex = u3t(q_vex); + u3_noun puq_vex, quq_vex; + u3_noun wag; + u3_noun ret; + + u3x_cell(uq_vex, &puq_vex, &quq_vex); + wag = u3nc(u3k(gob), u3k(puq_vex)); + ret = u3nq(u3k(p_vex), + u3_nul, + wag, + u3k(quq_vex)); + + u3z(vex); + return ret; + } + } + + u3_noun + u3we_stag_fun(u3_noun cor) + { + u3_noun van, gob, sef, tub; + + if ( (c3n == u3r_mean(cor, u3x_sam, &tub, u3x_con, &van, 0)) || + (c3n == u3r_mean(van, u3x_sam_2, &gob, u3x_sam_3, &sef, 0)) ) + { + return u3m_bail(c3__fail); + } else { + return _cqe_stag_fun(gob, sef, tub); + } + } + +/* stew +*/ + static u3_noun + _stew_wor(u3_noun ort, + u3_noun wan) + { + if ( !_(u3a_is_cat(ort)) ) { + return u3m_bail(c3__fail); + } + else { + if ( c3n == u3du(wan) ) { + if ( !_(u3a_is_cat(wan)) ) { + return u3m_bail(c3__fail); + } + else return (ort < wan) ? c3y : c3n; + } + else { + u3_noun h_wan = u3h(wan); + + if ( !_(u3a_is_cat(h_wan)) ) { + return u3m_bail(c3__fail); + } + else return (ort < h_wan) ? c3y : c3n; + } + } + } + + static u3_noun + _cqe_stew_fun(u3_noun hel, + u3_noun tub) + { + u3_noun p_tub, q_tub; + + u3x_cell(tub, &p_tub, &q_tub); + if ( c3n == u3du(q_tub) ) { + return _fail(tub); + } + else { + u3_noun iq_tub = u3h(q_tub); + + if ( !_(u3a_is_cat(iq_tub)) ) { + return u3m_bail(c3__fail); + } + else while ( 1 ) { + if ( c3n == u3du(hel) ) { + return _fail(tub); + } + else { + u3_noun n_hel, l_hel, r_hel; + u3_noun pn_hel, qn_hel; + c3_o bit_o; + + u3x_trel(hel, &n_hel, &l_hel, &r_hel); + u3x_cell(n_hel, &pn_hel, &qn_hel); + + if ( (c3n == u3du(pn_hel)) ) { + bit_o = __((iq_tub == pn_hel)); + } + else { + u3_noun hpn_hel = u3h(pn_hel); + u3_noun tpn_hel = u3t(pn_hel); + + if ( !_(u3a_is_cat(hpn_hel)) || + !_(u3a_is_cat(tpn_hel)) ) { + return _fail(tub); + } + else bit_o = __((iq_tub >= hpn_hel) && (iq_tub <= tpn_hel)); + } + + if ( c3y == bit_o ) { + return u3n_slam_on(u3k(qn_hel), u3k(tub)); + } else { + if ( c3y == _stew_wor(iq_tub, pn_hel) ) { + hel = l_hel; + } + else hel = r_hel; + } + } + } + } + } + u3_noun + u3we_stew_fun(u3_noun cor) + { + u3_noun con, hel, tub; + + if ( (c3n == u3r_mean(cor, u3x_sam, &tub, u3x_con, &con, 0)) || + (u3_none == (hel = u3r_at(2, con))) ) + { + return u3m_bail(c3__fail); + } else { + return _cqe_stew_fun(hel, tub); + } + } + +/* _stir_pair(): stack frame recording intermediate parse results +*/ + typedef struct { + u3_noun har; // hair, p_vex + u3_noun res; // parse-result, puq_vex + } _stir_pair; + +/* stir +*/ + static u3_noun + _cqe_stir_fun(u3_noun rud, + u3_noun raq, + u3_noun fel, + u3_noun tub) + { + // pil_u: stack control structure + // par_u: frame pointer + // wag: initial accumulator (deconstructed) + // + u3a_pile pil_u; + _stir_pair* par_u; + u3_noun p_wag, puq_wag, quq_wag; + + u3a_pile_prep(&pil_u, sizeof(*par_u)); + + // push incremental, successful [fel] parse results onto road stack + // + { + u3_noun vex, p_vex, q_vex, puq_vex, quq_vex; + u3j_site fel_u; + u3j_gate_prep(&fel_u, u3k(fel)); + + vex = u3j_gate_slam(&fel_u, u3k(tub)); + u3x_cell(vex, &p_vex, &q_vex); + + u3k(tub); + + while ( u3_nul != q_vex ) { + u3x_trel(q_vex, 0, &puq_vex, &quq_vex); + + par_u = u3a_push(&pil_u); + par_u->har = u3k(p_vex); + par_u->res = u3k(puq_vex); + + u3z(tub); + tub = u3k(quq_vex); + + u3z(vex); + vex = u3j_gate_slam(&fel_u, u3k(tub)); + u3x_cell(vex, &p_vex, &q_vex); + } + + p_wag = u3k(p_vex); + puq_wag = u3k(rud); + quq_wag = tub; + + u3z(vex); + u3j_gate_lose(&fel_u); + } + + // unwind the stack, folding parse results into [wag] by way of [raq] + // + if ( c3n == u3a_pile_done(&pil_u) ) { + u3j_site raq_u; + u3j_gate_prep(&raq_u, u3k(raq)); + + while ( c3n == u3a_pile_done(&pil_u) ) { + p_wag = _last_k(par_u->har, p_wag); + puq_wag = u3j_gate_slam(&raq_u, u3nc(par_u->res, puq_wag)); + par_u = u3a_pop(&pil_u); + } + + u3j_gate_lose(&raq_u); + } + + return u3nq(p_wag, u3_nul, puq_wag, quq_wag); + } + + u3_noun + u3we_stir_fun(u3_noun cor) + { + u3_noun van, rud, raq, fel, tub; + + if ( (c3n == u3r_mean(cor, u3x_sam, &tub, u3x_con, &van, 0)) || + (c3n == u3r_mean(van, u3x_sam_2, &rud, + u3x_sam_6, &raq, + u3x_sam_7, &fel, + 0)) ) + { + return u3m_bail(c3__fail); + } else { + return _cqe_stir_fun(rud, raq, fel, tub); + } + } + + #undef _p + #undef _q + \ No newline at end of file diff --git a/vere/pkg/noun/jets/e/rd.c b/vere/pkg/noun/jets/e/rd.c new file mode 100644 index 0000000..a693e3f --- /dev/null +++ b/vere/pkg/noun/jets/e/rd.c @@ -0,0 +1,390 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "softfloat.h" + +#define DOUBNAN 0x7ff8000000000000 + + union doub { + float64_t d; + c3_d c; + }; + + static inline c3_t + _nan_test(float64_t a) + { + return !f64_eq(a, a); + } + + static inline float64_t + _nan_unify(float64_t a) + { + if ( _nan_test(a) ) + { + *(c3_d*)(&a) = DOUBNAN; + } + return a; + } + + static inline void + _set_rounding(c3_w a) + { + switch ( a ) + { + default: + u3m_bail(c3__fail); + break; + case c3__n: + softfloat_roundingMode = softfloat_round_near_even; + break; + case c3__z: + softfloat_roundingMode = softfloat_round_minMag; + break; + case c3__u: + softfloat_roundingMode = softfloat_round_max; + break; + case c3__d: + softfloat_roundingMode = softfloat_round_min; + break; + } + } + +/* add +*/ + u3_noun + u3qer_add(u3_atom a, + u3_atom b, + u3_atom r) + { + union doub c, d, e; + _set_rounding(r); + c.c = u3r_chub(0, a); + d.c = u3r_chub(0, b); + e.d = _nan_unify(f64_add(c.d, d.d)); + + return u3i_chubs(1, &e.c); + } + + u3_noun + u3wer_add(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qer_add(a, b, u3x_at(30, cor)); + } + } + +/* sub +*/ + u3_noun + u3qer_sub(u3_atom a, + u3_atom b, + u3_atom r) + { + union doub c, d, e; + _set_rounding(r); + c.c = u3r_chub(0, a); + d.c = u3r_chub(0, b); + e.d = _nan_unify(f64_sub(c.d, d.d)); + + return u3i_chubs(1, &e.c); + } + + u3_noun + u3wer_sub(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qer_sub(a, b, u3x_at(30, cor)); + } + } + +/* mul +*/ + u3_noun + u3qer_mul(u3_atom a, + u3_atom b, + u3_atom r) + { + union doub c, d, e; + _set_rounding(r); + c.c = u3r_chub(0, a); + d.c = u3r_chub(0, b); + e.d = _nan_unify(f64_mul(c.d, d.d)); + + return u3i_chubs(1, &e.c); + } + + u3_noun + u3wer_mul(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qer_mul(a, b, u3x_at(30, cor)); + } + } + +/* div +*/ + u3_noun + u3qer_div(u3_atom a, + u3_atom b, + u3_atom r) + { + union doub c, d, e; + _set_rounding(r); + c.c = u3r_chub(0, a); + d.c = u3r_chub(0, b); + e.d = _nan_unify(f64_div(c.d, d.d)); + + return u3i_chubs(1, &e.c); + } + + u3_noun + u3wer_div(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qer_div(a, b, u3x_at(30, cor)); + } + } + +/* sqt +*/ + u3_noun + u3qer_sqt(u3_atom a, + u3_atom r) + { + union doub c, d; + _set_rounding(r); + c.c = u3r_chub(0, a); + d.d = _nan_unify(f64_sqrt(c.d)); + + return u3i_chubs(1, &d.c); + } + + u3_noun + u3wer_sqt(u3_noun cor) + { + u3_noun a; + + if ( c3n == (a = u3r_at(u3x_sam, cor)) || + c3n == u3ud(a) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qer_sqt(a, u3x_at(30, cor)); + } + } + +/* fma +*/ + u3_noun + u3qer_fma(u3_atom a, + u3_atom b, + u3_atom c, + u3_atom r) + { + union doub d, e, f, g; + _set_rounding(r); + d.c = u3r_chub(0, a); + e.c = u3r_chub(0, b); + f.c = u3r_chub(0, c); + g.d = _nan_unify(f64_mulAdd(d.d, e.d, f.d)); + + return u3i_chubs(1, &g.c); + } + + u3_noun + u3wer_fma(u3_noun cor) + { + u3_noun a, b, c; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_6, &b, u3x_sam_7, &c, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) || + c3n == u3ud(c) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qer_fma(a, b, c, u3x_at(30, cor)); + } + } + +/* lth +*/ + u3_noun + u3qer_lth(u3_atom a, + u3_atom b) + { + union doub c, d; + c.c = u3r_chub(0, a); + d.c = u3r_chub(0, b); + + return __(f64_lt(c.d, d.d)); + } + + u3_noun + u3wer_lth(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qer_lth(a, b); + } + } + +/* lte +*/ + u3_noun + u3qer_lte(u3_atom a, + u3_atom b) + { + union doub c, d; + c.c = u3r_chub(0, a); + d.c = u3r_chub(0, b); + + return __(f64_le(c.d, d.d)); + } + + u3_noun + u3wer_lte(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qer_lte(a, b); + } + } + +/* equ +*/ + u3_noun + u3qer_equ(u3_atom a, + u3_atom b) + { + union doub c, d; + c.c = u3r_chub(0, a); + d.c = u3r_chub(0, b); + + return __(f64_eq(c.d, d.d)); + } + + u3_noun + u3wer_equ(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qer_equ(a, b); + } + } + +/* gte +*/ + u3_noun + u3qer_gte(u3_atom a, + u3_atom b) + { + union doub c, d; + c.c = u3r_chub(0, a); + d.c = u3r_chub(0, b); + + return __(f64_le(d.d, c.d)); + } + + u3_noun + u3wer_gte(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qer_gte(a, b); + } + } + +/* gth +*/ + u3_noun + u3qer_gth(u3_atom a, + u3_atom b) + { + union doub c, d; + c.c = u3r_chub(0, a); + d.c = u3r_chub(0, b); + + return __(f64_lt(d.d, c.d)); + } + + u3_noun + u3wer_gth(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qer_gth(a, b); + } + } diff --git a/vere/pkg/noun/jets/e/rh.c b/vere/pkg/noun/jets/e/rh.c new file mode 100644 index 0000000..3bbb8d4 --- /dev/null +++ b/vere/pkg/noun/jets/e/rh.c @@ -0,0 +1,390 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "softfloat.h" + +#define HALFNAN 0x7e00 + + union half { + float16_t h; + c3_s c; + }; + + static inline c3_t + _nan_test(float16_t a) + { + return !f16_eq(a, a); + } + + static inline float16_t + _nan_unify(float16_t a) + { + if ( _nan_test(a) ) + { + *(c3_s*)(&a) = HALFNAN; + } + return a; + } + + static inline void + _set_rounding(c3_w a) + { + switch ( a ) + { + default: + u3m_bail(c3__fail); + break; + case c3__n: + softfloat_roundingMode = softfloat_round_near_even; + break; + case c3__z: + softfloat_roundingMode = softfloat_round_minMag; + break; + case c3__u: + softfloat_roundingMode = softfloat_round_max; + break; + case c3__d: + softfloat_roundingMode = softfloat_round_min; + break; + } + } + +/* add +*/ + u3_noun + u3qes_add(u3_atom a, + u3_atom b, + u3_atom r) + { + union half c, d, e; + _set_rounding(r); + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + e.h = _nan_unify(f16_add(c.h, d.h)); + + return e.c; + } + + u3_noun + u3wes_add(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qes_add(a, b, u3x_at(30, cor)); + } + } + +/* sub +*/ + u3_noun + u3qes_sub(u3_atom a, + u3_atom b, + u3_atom r) + { + union half c, d, e; + _set_rounding(r); + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + e.h = _nan_unify(f16_sub(c.h, d.h)); + + return e.c; + } + + u3_noun + u3wes_sub(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qes_sub(a, b, u3x_at(30, cor)); + } + } + +/* mul +*/ + u3_noun + u3qes_mul(u3_atom a, + u3_atom b, + u3_atom r) + { + union half c, d, e; + _set_rounding(r); + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + e.h = _nan_unify(f16_mul(c.h, d.h)); + + return e.c; + } + + u3_noun + u3wes_mul(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qes_mul(a, b, u3x_at(30, cor)); + } + } + +/* div +*/ + u3_noun + u3qes_div(u3_atom a, + u3_atom b, + u3_atom r) + { + union half c, d, e; + _set_rounding(r); + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + e.h = _nan_unify(f16_div(c.h, d.h)); + + return e.c; + } + + u3_noun + u3wes_div(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qes_div(a, b, u3x_at(30, cor)); + } + } + +/* sqt +*/ + u3_noun + u3qes_sqt(u3_atom a, + u3_atom r) + { + union half c, d; + _set_rounding(r); + c.c = u3r_word(0, a); + d.h = _nan_unify(f16_sqrt(c.h)); + + return d.c; + } + + u3_noun + u3wes_sqt(u3_noun cor) + { + u3_noun a; + + if ( c3n == (a = u3r_at(u3x_sam, cor)) || + c3n == u3ud(a) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qes_sqt(a, u3x_at(30, cor)); + } + } + +/* fma +*/ + u3_noun + u3qes_fma(u3_atom a, + u3_atom b, + u3_atom c, + u3_atom r) + { + union half d, e, f, g; + _set_rounding(r); + d.c = u3r_word(0, a); + e.c = u3r_word(0, b); + f.c = u3r_word(0, c); + g.h = _nan_unify(f16_mulAdd(d.h, e.h, f.h)); + + return g.c; + } + + u3_noun + u3wes_fma(u3_noun cor) + { + u3_noun a, b, c; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_6, &b, u3x_sam_7, &c, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) || + c3n == u3ud(c) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qes_fma(a, b, c, u3x_at(30, cor)); + } + } + +/* lth +*/ + u3_noun + u3qes_lth(u3_atom a, + u3_atom b) + { + union half c, d; + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + + return __(f16_lt(c.h, d.h)); + } + + u3_noun + u3wes_lth(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qes_lth(a, b); + } + } + +/* lte +*/ + u3_noun + u3qes_lte(u3_atom a, + u3_atom b) + { + union half c, d; + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + + return __(f16_le(c.h, d.h)); + } + + u3_noun + u3wes_lte(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qes_lte(a, b); + } + } + +/* equ +*/ + u3_noun + u3qes_equ(u3_atom a, + u3_atom b) + { + union half c, d; + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + + return __(f16_eq(c.h, d.h)); + } + + u3_noun + u3wes_equ(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qes_equ(a, b); + } + } + +/* gte +*/ + u3_noun + u3qes_gte(u3_atom a, + u3_atom b) + { + union half c, d; + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + + return __(f16_le(d.h, c.h)); + } + + u3_noun + u3wes_gte(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qes_gte(a, b); + } + } + +/* gth +*/ + u3_noun + u3qes_gth(u3_atom a, + u3_atom b) + { + union half c, d; + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + + return __(f16_lt(d.h, c.h)); + } + + u3_noun + u3wes_gth(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qes_gth(a, b); + } + } diff --git a/vere/pkg/noun/jets/e/ripe.c b/vere/pkg/noun/jets/e/ripe.c new file mode 100644 index 0000000..5d08a9d --- /dev/null +++ b/vere/pkg/noun/jets/e/ripe.c @@ -0,0 +1,45 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_atom + _cqe_ripe(u3_atom wid, u3_atom dat) + { + c3_w len_w; + if ( !u3r_word_fit(&len_w, wid) ) { + return u3m_bail(c3__fail); + } + else { + u3_atom ret; + c3_y out_y[20]; + c3_y *dat_y = u3r_bytes_alloc(0, len_w, dat); + + ret = ( 0 == urcrypt_ripemd160(dat_y, len_w, out_y) ) + ? u3i_bytes(20, out_y) + : u3_none; + + u3a_free(dat_y); + return ret; + } + } + + u3_noun + u3we_ripe(u3_noun cor) + { + u3_noun wid, dat; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &wid, + u3x_sam_3, &dat, 0) || + u3ud(wid) || u3ud(dat)) + ) + { + return u3m_bail(c3__exit); + } + else { + return u3l_punt("ripe", _cqe_ripe(wid, dat)); + } + } diff --git a/vere/pkg/noun/jets/e/rq.c b/vere/pkg/noun/jets/e/rq.c new file mode 100644 index 0000000..e26a4de --- /dev/null +++ b/vere/pkg/noun/jets/e/rq.c @@ -0,0 +1,446 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "softfloat.h" + +#define QUADNAN 0x7fff800000000000 + + union quad { + float128_t* q; + c3_w* c; + }; + + static inline c3_t + _nan_test(float128_t* a) + { + return !f128M_eq(a, a); + } + + static inline void + _nan_unify(float128_t* a) + { + if ( _nan_test(a) ) + { + *( (c3_d*)a) = 0; + *(((c3_d*)a)+1) = QUADNAN; + } + } + + static inline void + _set_rounding(c3_w a) + { + switch ( a ) + { + default: + u3m_bail(c3__fail); + break; + case c3__n: + softfloat_roundingMode = softfloat_round_near_even; + break; + case c3__z: + softfloat_roundingMode = softfloat_round_minMag; + break; + case c3__u: + softfloat_roundingMode = softfloat_round_max; + break; + case c3__d: + softfloat_roundingMode = softfloat_round_min; + break; + } + } + +/* add +*/ + u3_noun + u3qeq_add(u3_atom a, + u3_atom b, + u3_atom r) + { + union quad c, d, e; + _set_rounding(r); + c.c = alloca(16); + d.c = alloca(16); + e.c = alloca(16); + + u3r_words(0, 4, c.c, a); + u3r_words(0, 4, d.c, b); + f128M_add(c.q, d.q, e.q); + _nan_unify(e.q); + + u3_atom f = u3i_words(4, e.c); + return f; + } + + u3_noun + u3weq_add(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qeq_add(a, b, u3x_at(30, cor)); + } + } + +/* sub +*/ + u3_noun + u3qeq_sub(u3_atom a, + u3_atom b, + u3_atom r) + { + union quad c, d, e; + _set_rounding(r); + c.c = alloca(16); + d.c = alloca(16); + e.c = alloca(16); + + u3r_words(0, 4, c.c, a); + u3r_words(0, 4, d.c, b); + f128M_sub(c.q, d.q, e.q); + _nan_unify(e.q); + + u3_atom f = u3i_words(4, e.c); + return f; + } + + u3_noun + u3weq_sub(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qeq_sub(a, b, u3x_at(30, cor)); + } + } + +/* mul +*/ + u3_noun + u3qeq_mul(u3_atom a, + u3_atom b, + u3_atom r) + { + union quad c, d, e; + _set_rounding(r); + c.c = alloca(16); + d.c = alloca(16); + e.c = alloca(16); + + u3r_words(0, 4, c.c, a); + u3r_words(0, 4, d.c, b); + f128M_mul(c.q, d.q, e.q); + _nan_unify(e.q); + + u3_atom f = u3i_words(4, e.c); + return f; + } + + u3_noun + u3weq_mul(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qeq_mul(a, b, u3x_at(30, cor)); + } + } + +/* div +*/ + u3_noun + u3qeq_div(u3_atom a, + u3_atom b, + u3_atom r) + { + union quad c, d, e; + _set_rounding(r); + c.c = alloca(16); + d.c = alloca(16); + e.c = alloca(16); + + u3r_words(0, 4, c.c, a); + u3r_words(0, 4, d.c, b); + f128M_div(c.q, d.q, e.q); + _nan_unify(e.q); + + u3_atom f = u3i_words(4, e.c); + return f; + } + + u3_noun + u3weq_div(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qeq_div(a, b, u3x_at(30, cor)); + } + } + +/* sqt +*/ + u3_noun + u3qeq_sqt(u3_atom a, + u3_atom r) + { + union quad c, d; + _set_rounding(r); + c.c = alloca(16); + d.c = alloca(16); + + u3r_words(0, 4, c.c, a); + f128M_sqrt(c.q, d.q); + _nan_unify(d.q); + + u3_atom e = u3i_words(4, d.c); + return e; + } + + u3_noun + u3weq_sqt(u3_noun cor) + { + u3_noun a; + + if ( c3n == (a = u3r_at(u3x_sam, cor)) || + c3n == u3ud(a) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qeq_sqt(a, u3x_at(30, cor)); + } + } + +/* fma +*/ + u3_noun + u3qeq_fma(u3_atom a, + u3_atom b, + u3_atom c, + u3_atom r) + { + union quad d, e, f, g; + _set_rounding(r); + d.c = alloca(16); + e.c = alloca(16); + f.c = alloca(16); + g.c = alloca(16); + + u3r_words(0, 4, d.c, a); + u3r_words(0, 4, e.c, b); + u3r_words(0, 4, f.c, c); + f128M_mulAdd(d.q, e.q, f.q, g.q); + _nan_unify(g.q); + + u3_atom h = u3i_words(4, g.c); + return h; + } + + u3_noun + u3weq_fma(u3_noun cor) + { + u3_noun a, b, c; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_6, &b, u3x_sam_7, &c, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) || + c3n == u3ud(c) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qeq_fma(a, b, c, u3x_at(30, cor)); + } + } + +/* lth +*/ + u3_noun + u3qeq_lth(u3_atom a, + u3_atom b) + { + union quad c, d; + c.c = alloca(16); + d.c = alloca(16); + + u3r_words(0, 4, c.c, a); + u3r_words(0, 4, d.c, b); + c3_o e = __(f128M_lt(c.q, d.q)); + + return e; + } + + u3_noun + u3weq_lth(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qeq_lth(a, b); + } + } + +/* lte +*/ + u3_noun + u3qeq_lte(u3_atom a, + u3_atom b) + { + union quad c, d; + c.c = alloca(16); + d.c = alloca(16); + + u3r_words(0, 4, c.c, a); + u3r_words(0, 4, d.c, b); + c3_o e = __(f128M_le(c.q, d.q)); + + return e; + } + + u3_noun + u3weq_lte(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qeq_lte(a, b); + } + } + +/* equ +*/ + u3_noun + u3qeq_equ(u3_atom a, + u3_atom b) + { + union quad c, d; + c.c = alloca(16); + d.c = alloca(16); + + u3r_words(0, 4, c.c, a); + u3r_words(0, 4, d.c, b); + c3_o e = __(f128M_eq(c.q, d.q)); + + return e; + } + + u3_noun + u3weq_equ(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qeq_equ(a, b); + } + } + +/* gte +*/ + u3_noun + u3qeq_gte(u3_atom a, + u3_atom b) + { + union quad c, d; + c.c = alloca(16); + d.c = alloca(16); + + u3r_words(0, 4, c.c, a); + u3r_words(0, 4, d.c, b); + c3_o e = __(f128M_le(d.q, c.q)); + + return e; + } + + u3_noun + u3weq_gte(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qeq_gte(a, b); + } + } + +/* gth +*/ + u3_noun + u3qeq_gth(u3_atom a, + u3_atom b) + { + union quad c, d; + c.c = alloca(16); + d.c = alloca(16); + + u3r_words(0, 4, c.c, a); + u3r_words(0, 4, d.c, b); + c3_o e = __(f128M_lt(d.q, c.q)); + + return e; + } + + u3_noun + u3weq_gth(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qeq_gth(a, b); + } + } diff --git a/vere/pkg/noun/jets/e/rs.c b/vere/pkg/noun/jets/e/rs.c new file mode 100644 index 0000000..360d1c9 --- /dev/null +++ b/vere/pkg/noun/jets/e/rs.c @@ -0,0 +1,390 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "softfloat.h" + +#define SINGNAN 0x7fc00000 + + union sing { + float32_t s; + c3_w c; + }; + + static inline c3_t + _nan_test(float32_t a) + { + return !f32_eq(a, a); + } + + static inline float32_t + _nan_unify(float32_t a) + { + if ( _nan_test(a) ) + { + *(c3_w*)(&a) = SINGNAN; + } + return a; + } + + static inline void + _set_rounding(c3_w a) + { + switch ( a ) + { + default: + u3m_bail(c3__fail); + break; + case c3__n: + softfloat_roundingMode = softfloat_round_near_even; + break; + case c3__z: + softfloat_roundingMode = softfloat_round_minMag; + break; + case c3__u: + softfloat_roundingMode = softfloat_round_max; + break; + case c3__d: + softfloat_roundingMode = softfloat_round_min; + break; + } + } + +/* add +*/ + u3_noun + u3qet_add(u3_atom a, + u3_atom b, + u3_atom r) + { + union sing c, d, e; + _set_rounding(r); + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + e.s = _nan_unify(f32_add(c.s, d.s)); + + return u3i_words(1, &e.c); + } + + u3_noun + u3wet_add(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qet_add(a, b, u3x_at(30, cor)); + } + } + +/* sub +*/ + u3_noun + u3qet_sub(u3_atom a, + u3_atom b, + u3_atom r) + { + union sing c, d, e; + _set_rounding(r); + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + e.s = _nan_unify(f32_sub(c.s, d.s)); + + return u3i_words(1, &e.c); + } + + u3_noun + u3wet_sub(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qet_sub(a, b, u3x_at(30, cor)); + } + } + +/* mul +*/ + u3_noun + u3qet_mul(u3_atom a, + u3_atom b, + u3_atom r) + { + union sing c, d, e; + _set_rounding(r); + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + e.s = _nan_unify(f32_mul(c.s, d.s)); + + return u3i_words(1, &e.c); + } + + u3_noun + u3wet_mul(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qet_mul(a, b, u3x_at(30, cor)); + } + } + +/* div +*/ + u3_noun + u3qet_div(u3_atom a, + u3_atom b, + u3_atom r) + { + union sing c, d, e; + _set_rounding(r); + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + e.s = _nan_unify(f32_div(c.s, d.s)); + + return u3i_words(1, &e.c); + } + + u3_noun + u3wet_div(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qet_div(a, b, u3x_at(30, cor)); + } + } + +/* sqt +*/ + u3_noun + u3qet_sqt(u3_atom a, + u3_atom r) + { + union sing c, d; + _set_rounding(r); + c.c = u3r_word(0, a); + d.s = _nan_unify(f32_sqrt(c.s)); + + return u3i_words(1, &d.c); + } + + u3_noun + u3wet_sqt(u3_noun cor) + { + u3_noun a; + + if ( c3n == (a = u3r_at(u3x_sam, cor)) || + c3n == u3ud(a) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qet_sqt(a, u3x_at(30, cor)); + } + } + +/* fma +*/ + u3_noun + u3qet_fma(u3_atom a, + u3_atom b, + u3_atom c, + u3_atom r) + { + union sing d, e, f, g; + _set_rounding(r); + d.c = u3r_word(0, a); + e.c = u3r_word(0, b); + f.c = u3r_word(0, c); + g.s = _nan_unify(f32_mulAdd(d.s, e.s, f.s)); + + return u3i_words(1, &g.c); + } + + u3_noun + u3wet_fma(u3_noun cor) + { + u3_noun a, b, c; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_6, &b, u3x_sam_7, &c, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) || + c3n == u3ud(c) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qet_fma(a, b, c, u3x_at(30, cor)); + } + } + +/* lth +*/ + u3_noun + u3qet_lth(u3_atom a, + u3_atom b) + { + union sing c, d; + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + + return __(f32_lt(c.s, d.s)); + } + + u3_noun + u3wet_lth(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qet_lth(a, b); + } + } + +/* lte +*/ + u3_noun + u3qet_lte(u3_atom a, + u3_atom b) + { + union sing c, d; + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + + return __(f32_le(c.s, d.s)); + } + + u3_noun + u3wet_lte(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qet_lte(a, b); + } + } + +/* equ +*/ + u3_noun + u3qet_equ(u3_atom a, + u3_atom b) + { + union sing c, d; + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + + return __(f32_eq(c.s, d.s)); + } + + u3_noun + u3wet_equ(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qet_equ(a, b); + } + } + +/* gte +*/ + u3_noun + u3qet_gte(u3_atom a, + u3_atom b) + { + union sing c, d; + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + + return __(f32_le(d.s, c.s)); + } + + u3_noun + u3wet_gte(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qet_gte(a, b); + } + } + +/* gth +*/ + u3_noun + u3qet_gth(u3_atom a, + u3_atom b) + { + union sing c, d; + c.c = u3r_word(0, a); + d.c = u3r_word(0, b); + + return __(f32_lt(d.s, c.s)); + } + + u3_noun + u3wet_gth(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0) || + c3n == u3ud(a) || + c3n == u3ud(b) ) + { + return u3m_bail(c3__exit); + } + else { + return u3qet_gth(a, b); + } + } diff --git a/vere/pkg/noun/jets/e/rub.c b/vere/pkg/noun/jets/e/rub.c new file mode 100644 index 0000000..81739be --- /dev/null +++ b/vere/pkg/noun/jets/e/rub.c @@ -0,0 +1,85 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qe_rub(u3_atom a, + u3_atom b) + { + u3_atom c, d, e; + u3_atom w, x, y, z; + u3_atom p, q; + + u3_atom m; + { + c3_w bit_w = u3r_met(0, b); + u3_noun bit = u3i_words(1, &bit_w); + m = u3qa_add(a, bit); + u3z(bit); + } + + // Compute c and d. + { + x = u3k(a); + + while ( 0 == u3qc_cut(0, x, 1, b) ) { + u3_atom y = u3qa_inc(x); + + // Sanity check: crash if decoding more bits than available + if ( c3y == u3qa_gth(x, m)) { + // u3l_log("[%%rub-hard %d %d %d]", a, x, m); + return u3m_bail(c3__exit); + } + + u3z(x); + x = y; + } + if ( c3y == u3r_sing(x, a) ) { + u3z(x); + return u3nc(1, 0); + } + c = u3qa_sub(x, a); + d = u3qa_inc(x); + + u3z(x); + } + + // Compute e, p, q. + { + x = u3qa_dec(c); + y = u3qc_bex(x); + z = u3qc_cut(0, d, x, b); + + e = u3qa_add(y, z); + u3z(y); u3z(z); + + w = u3qa_add(c, c); + y = u3qa_add(w, e); + z = u3qa_add(d, x); + + p = u3qa_add(w, e); + q = u3qc_cut(0, z, e, b); + + u3z(w); u3z(x); u3z(y); u3z(z); + + return u3nc(p, q); + } + } + u3_noun + u3we_rub(u3_noun cor) + { + u3_noun a, b; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__fail); + } else { + return u3qe_rub(a, b); + } + } diff --git a/vere/pkg/noun/jets/e/scot.c b/vere/pkg/noun/jets/e/scot.c new file mode 100644 index 0000000..f39c46b --- /dev/null +++ b/vere/pkg/noun/jets/e/scot.c @@ -0,0 +1,30 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +#include + +u3_atom +u3qe_scot(u3_atom a, u3_atom b) +{ + switch (a) { + case c3__tas: return u3k(b); + case c3__ud: return u3s_etch_ud(b); + case c3__ux: return u3s_etch_ux(b); + case c3__uv: return u3s_etch_uv(b); + case c3__uw: return u3s_etch_uw(b); + default: return u3_none; + } +} + +u3_noun +u3we_scot(u3_noun cor) +{ + u3_atom a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qe_scot(u3x_atom(a), u3x_atom(b)); +} diff --git a/vere/pkg/noun/jets/e/scow.c b/vere/pkg/noun/jets/e/scow.c new file mode 100644 index 0000000..986dc41 --- /dev/null +++ b/vere/pkg/noun/jets/e/scow.c @@ -0,0 +1,251 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +#include + +static +c3_y to_digit(c3_y tig) +{ + if (tig >= 10) { + return 87 + tig; + } else { + return '0' + tig; + } +} + +// gives the characters for a four 'digit' small hex atom. +static +void +_x_co_four(c3_w src, c3_y* a, c3_y* b, c3_y* c, c3_y* d) +{ + *d = to_digit(src & 0xF); + src >>= 4; + *c = to_digit(src & 0xF); + src >>= 4; + *b = to_digit(src & 0xF); + src >>= 4; + *a = to_digit(src & 0xF); +} + +// The parser always prints two digits on 0 in y-co. +static +void +_y_co_two(c3_w src, c3_y* a, c3_y* b) +{ + *b = to_digit(src % 10); + *a = to_digit(src / 10); +} + +// +static +u3_noun +_add_year(c3_w year, u3_noun out) +{ + while (year > 0) { + out = u3nc(to_digit(year % 10), out); + year = year / 10; + } + + return out; +} + +static +u3_noun +_print_da(u3_noun cor, u3_atom raw_da) +{ + u3_noun hok = u3j_cook("u3we_scow_print_da", u3k(cor), "yore"); + u3_noun yod = u3n_slam_on(hok, u3k(raw_da)); + + u3_noun out = 0; + + u3_atom age, year, month, day, hour, min, sec, f; + if (c3n == u3r_mean(yod, 4, &age, + 5, &year, + 6, &month, + 14, &day, + 30, &hour, + 62, &min, + 126, &sec, + 127, &f, + 0)) { + return u3m_bail(c3__exit); + } + + if (f != 0) { + u3_noun f_list = u3qb_flop(f); + + for (u3_noun cur = f_list; + _(u3a_is_cell(cur)); + cur = u3t(cur)) { + if (_(u3a_is_cat(u3h(cur)))) { + c3_y a, b, c, d; + _x_co_four(u3h(cur), &a, &b, &c, &d); + out = u3nq('.', a, b, u3nt(c, d, out)); + } else { + // No way to deal with big atoms. fall back. + u3z(yod); + u3z(out); + u3z(f_list); + return u3_none; + } + } + + u3z(f_list); + out = u3nc('.', out); + } + + // if there isn't a hex list and the h/m/s are all 0, skip printing hours. + if (f != 0 || hour != 0 || min != 0 || sec != 0) { + if (!_(u3a_is_cat(hour)) || + !_(u3a_is_cat(min)) || + !_(u3a_is_cat(sec))) { + // Input is weird, fallback to nock. + u3z(yod); + u3z(out); + return u3_none; + } + + c3_y sa, sb, ma, mb, ha, hb; + _y_co_two(sec, &sa, &sb); + out = u3nq('.', sa, sb, out); + + _y_co_two(min, &ma, &mb); + out = u3nq('.', ma, mb, out); + + _y_co_two(hour, &ha, &hb); + out = u3nq('.', ha, hb, out); + + out = u3nc('.', out); + } + + // We always print the Y.M.D. Unlike others, these numbers are unconstrained + // by length, but in practice, the month number and day number can only be up + // to two digits because of +yore. We still need to remove 0 prefixes, + // though. + if (!_(u3a_is_cat(day)) || day > 99 || + !_(u3a_is_cat(month)) || month > 99 || + !_(u3a_is_cat(year))) { + // Input is weird, fallback to nock. + u3z(yod); + u3z(out); + return u3_none; + } + + c3_y da, db; + _y_co_two(day, &da, &db); + out = u3nc(db, out); + if (da != '0') { + out = u3nc(da, out); + } + out = u3nc('.', out); + + c3_y ma, mb; + _y_co_two(month, &ma, &mb); + out = u3nc(mb, out); + if (ma != '0') { + out = u3nc(ma, out); + } + out = u3nc('.', out); + + // suffix the year with a '-' for BC dates + if (age == c3n) { + out = u3nc('-', out); + } + + // The year part is the only place where we have to explicitly loop over the + // input because it can be arbitrarily large or small. + out = _add_year(year, out); + + out = u3nc('~', out); + + u3z(yod); + return out; +} + +static +u3_noun +_print_p(u3_atom cor, u3_atom p) +{ + // Scramble the raw number to the concealed version. + u3_noun ob = u3j_cook("u3we_scow_ob_p", u3k(cor), "ob"); + u3_noun hok = u3j_cook("u3we_scow_fein_p", ob, "fein"); + u3_atom sxz = u3n_slam_on(hok, u3k(p)); + + // Simple galaxy case + if (c3y == u3qa_lth(sxz, 256)) { + c3_y a, b, c; + u3_po_to_suffix(sxz, &a, &b, &c); + u3z(sxz); + return u3nq('~', a, b, u3nc(c, 0)); + } + + u3_atom dyy = u3qc_met(4, sxz); + if (!_(u3a_is_cat(dyy))) { + u3z(sxz); + u3z(dyy); + return u3_none; + } + + u3_noun list = 0; + for (c3_w imp = 0; imp != dyy; ++imp) { + c3_w log = u3qc_end(4, 1, sxz); + c3_w prefix = u3qc_rsh(3, 1, log); + c3_w suffix = u3qc_end(3, 1, log); + + c3_y a, b, c, d, e, f; + u3_po_to_prefix(prefix, &a, &b, &c); + u3_po_to_suffix(suffix, &d, &e, &f); + + if (imp % 4 == 0) { + if (imp != 0) { + list = u3nt('-', '-', list); + } + } else { + list = u3nc('-', list); + } + + list = u3nq(a, b, c, u3nq(d, e, f, list)); + + sxz = u3qc_rsh(4, 1, sxz); + } + + u3z(sxz); + return u3nc('~', list); +} + +u3_atom +u3qe_scow(u3_atom a, u3_atom b) +{ + switch (a) { + // XX disabled due to memory corruption + // rewrite for +scot jet and test there + // + // case c3__da: return _print_da(cor, atom); + // case 'p': return _print_p(cor, atom); + + default: { + u3_weak dat = u3qe_scot(a, b); + u3_weak pro = u3_none; + + if ( u3_none != dat ) { + pro = u3qc_rip(3, 1, dat); + u3z(dat); + } + + return pro; + } + } +} + +u3_noun +u3we_scow(u3_noun cor) +{ + u3_atom a, b; + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qe_scow(u3x_atom(a), u3x_atom(b)); +} diff --git a/vere/pkg/noun/jets/e/scr.c b/vere/pkg/noun/jets/e/scr.c new file mode 100644 index 0000000..e9d0725 --- /dev/null +++ b/vere/pkg/noun/jets/e/scr.c @@ -0,0 +1,227 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_weak + _cqes_hs(u3_atom p, c3_w pwd_w, + u3_atom s, c3_w sal_w, + u3_atom n, + u3_atom r, + u3_atom z, + u3_atom d) + { + u3_noun chk; + c3_w out_w; + + if ( !u3r_word_fit(&out_w, d) ) { + return u3m_bail(c3__fail); + } + if ( 0 == r || 0 == z ) { + return u3m_bail(c3__exit); + } + chk = u3qc_bex(31); + if ( (c3n == u3qa_lth(pwd_w, chk)) || + (c3n == u3qa_lth(sal_w, chk)) ) { + return u3m_bail(c3__exit); + } + u3z(chk); + chk = u3kc_bex(u3ka_dec(u3qc_xeb(n))); + if ( c3n == u3r_sing(n, chk) ) { + return u3m_bail(c3__exit); + } + u3z(chk); + if ( c3n == u3ka_lte( + u3ka_mul(u3qa_mul(128, r), u3ka_dec(u3qa_add(n, z))), + u3qc_bex(30)) ) { + return u3m_bail(c3__exit); + } + + if ( (u3r_met(6, n) > 1) || + (u3r_met(5, r) > 1) || + (u3r_met(5, z) > 1) ) { + return u3_none; + } + else { + u3_noun pro; + c3_d n_d = u3r_chub(0, n); + c3_w r_w = u3r_word(0, r), + z_w = u3r_word(0, z); + c3_y *pwd_y = u3a_malloc(pwd_w), + *sal_y = u3a_malloc(sal_w), + *out_y = u3a_malloc(d); + u3r_bytes(0, pwd_w, pwd_y, p); + u3r_bytes(0, sal_w, sal_y, s); + pro = ( 0 == urcrypt_scrypt(pwd_y, pwd_w, + sal_y, sal_w, + n_d, r_w, z_w, + out_w, out_y) ) + ? u3i_bytes(out_w, out_y) + : u3_none; + u3a_free(pwd_y); + u3a_free(sal_y); + u3a_free(out_y); + return pro; + } + } + + static u3_weak + _cqes_hsl(u3_atom p, u3_atom pl, + u3_atom s, u3_atom sl, + u3_atom n, + u3_atom r, + u3_atom z, + u3_atom d) + { + c3_w pwd_w, sal_w; + if ( !(u3r_word_fit(&pwd_w, pl) && + u3r_word_fit(&sal_w, sl)) ) { + return u3m_bail(c3__fail); + } + else { + return _cqes_hs(p, pwd_w, s, sal_w, n, r, z, d); + } + } + + u3_noun + u3wes_hsl(u3_noun cor) + { + u3_noun p, pl, s, sl, n, r, z, d; + u3_noun q; + + u3x_quil(u3x_at(u3x_sam, cor), &p, &pl, &s, &sl, &q); + u3x_qual(q, &n, &r, &z, &d); + + if ( !(_(u3a_is_atom(p)) && _(u3a_is_atom(pl)) && + _(u3a_is_atom(s)) && _(u3a_is_atom(sl)) && + _(u3a_is_atom(n)) && _(u3a_is_atom(r)) && + _(u3a_is_atom(z)) && _(u3a_is_atom(d))) ) { + return u3m_bail(c3__exit); + } + else { + return u3l_punt("scr-hsl", _cqes_hsl(p, pl, s, sl, n, r, z, d)); + } + } + + static u3_weak + _cqes_hsh(u3_atom p, + u3_atom s, + u3_atom n, + u3_atom r, + u3_atom z, + u3_atom d) + { + return _cqes_hs(p, u3r_met(3, p), + s, u3r_met(3, s), + n, r, z, d); + } + + u3_noun + u3wes_hsh(u3_noun cor) + { + u3_noun p, s, n, r, z, d; + u3_noun q; + + u3x_quil(u3x_at(u3x_sam, cor), &p, &s, &n, &r, &q); + u3x_cell(q, &z, &d); + + if ( !(_(u3a_is_atom(p)) && _(u3a_is_atom(s)) && + _(u3a_is_atom(n)) && _(u3a_is_atom(r)) && + _(u3a_is_atom(z)) && _(u3a_is_atom(d))) ) { + return u3m_bail(c3__exit); + } + else { + return u3l_punt("scr-hsh", _cqes_hsh(p, s, n, r, z, d)); + } + } + + static u3_atom + _cqes_pb(u3_atom p, c3_w pwd_w, + u3_atom s, c3_w sal_w, + u3_atom c, + u3_atom d) + { + if ( (c > (1 << 28)) || + (d > (1 << 30)) ) { + // max key length 1gb + // max iterations 2^28 + return u3m_bail(c3__exit); + } + else { + u3_noun pro; + c3_y *pwd_y = u3a_malloc(pwd_w), + *sal_y = u3a_malloc(sal_w), + *out_y = u3a_malloc(d); + u3r_bytes(0, pwd_w, pwd_y, p); + u3r_bytes(0, sal_w, sal_y, s); + urcrypt_scrypt_pbkdf_sha256(pwd_y, pwd_w, sal_y, sal_w, c, d, out_y); + pro = u3i_bytes(d, out_y); + u3a_free(pwd_y); + u3a_free(sal_y); + u3a_free(out_y); + return pro; + } + } + + static u3_noun + _cqes_pbl(u3_atom p, u3_atom pl, + u3_atom s, u3_atom sl, + u3_atom c, + u3_atom d) + { + c3_w pwd_w, sal_w; + if ( !(u3r_word_fit(&pwd_w, pl) && + u3r_word_fit(&sal_w, sl)) ) { + return u3m_bail(c3__fail); + } + else { + return _cqes_pb(p, pwd_w, s, sal_w, c, d); + } + } + + u3_noun + u3wes_pbl(u3_noun cor) + { + u3_noun p, pl, s, sl, c, d; + u3_noun q; + + u3x_quil(u3x_at(u3x_sam, cor), &p, &pl, &s, &sl, &q); + u3x_cell(q, &c, &d); + + if ( !(_(u3a_is_atom(p)) && _(u3a_is_atom(s)) && + _(u3a_is_atom(pl)) && _(u3a_is_atom(sl)) && + _(u3a_is_atom(c)) && _(u3a_is_atom(d))) ) { + return u3m_bail(c3__exit); + } + else { + return _cqes_pbl(p, pl, s, sl, c, d); + } + } + + static u3_atom + _cqes_pbk(u3_atom p, u3_atom s, u3_atom c, u3_atom d) + { + return _cqes_pb(p, u3r_met(3, p), + s, u3r_met(3, s), + c, d); + } + + u3_noun + u3wes_pbk(u3_noun cor) + { + u3_noun p, s, c, d; + + u3x_qual(u3x_at(u3x_sam, cor), &p, &s, &c, &d); + + if ( !(_(u3a_is_atom(p)) && _(u3a_is_atom(s)) && + _(u3a_is_atom(c)) && _(u3a_is_atom(d))) ) { + return u3m_bail(c3__exit); + } + else { + return _cqes_pbk(p, s, c, d); + } + } diff --git a/vere/pkg/noun/jets/e/secp.c b/vere/pkg/noun/jets/e/secp.c new file mode 100644 index 0000000..fa0fbd2 --- /dev/null +++ b/vere/pkg/noun/jets/e/secp.c @@ -0,0 +1,298 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" +#include "ent/ent.h" + +static urcrypt_secp_context* sec_u; + +/* call at process start */ +void +u3je_secp_init() +{ + c3_y ent_y[32]; + ent_getentropy(ent_y, 32); + sec_u = malloc(urcrypt_secp_prealloc_size()); + + if ( 0 != urcrypt_secp_init(sec_u, ent_y) ) { + u3l_log("u3e_secp_init failed"); + abort(); + } +} + +/* call at process end */ +void +u3je_secp_stop() +{ + urcrypt_secp_destroy(sec_u); + free(sec_u); + sec_u = NULL; +} + +/* util funcs + */ +static c3_t +_cqes_in_order(u3_atom a) +{ + // this is the "n" parameter of the secp256k1 curve + static const c3_w now_w[8] = { + 0xd0364141, 0xbfd25e8c, 0xaf48a03b, 0xbaaedce6, + 0xfffffffe, 0xffffffff, 0xffffffff, 0xffffffff + }; + + if ( 0 == a ) { + return 0; + } + else if ( c3y == u3a_is_cat(a) ) { + return 1; + } + else { + u3a_atom* a_u = u3a_to_ptr(a); + c3_w len_w = a_u->len_w; + + if ( len_w < 8 ) { + return 1; + } + else if ( len_w > 8 ) { + return 0; + } + else { + c3_y i_y; + c3_w *buf_w = a_u->buf_w; + // loop from most to least significant words + for ( i_y = 8; i_y > 0; ) { + c3_w b_w = buf_w[i_y], + o_w = now_w[--i_y]; + if ( b_w < o_w ) { + return 1; + } + else if ( b_w > o_w ) { + return 0; + } + } + return 1; + } + } +} + +static void +_cqes_unpack_fe(u3_atom k, c3_y out_y[32]) +{ + if ( _cqes_in_order(k) ) { + u3r_bytes(0, 32, out_y, k); + } + else { + u3m_bail(c3__exit); + } +} + +/* sign hash with priv key + */ +static u3_noun +_cqes_sign(u3_atom has, + u3_atom prv) +{ + c3_y has_y[32]; + + if ( 0 != u3r_bytes_fit(32, has_y, has) ) { + return u3m_bail(c3__exit); + } + else { + c3_y prv_y[32], v_y, r_y[32], s_y[32]; + _cqes_unpack_fe(prv, prv_y); + + return( 0 == urcrypt_secp_sign(sec_u, has_y, prv_y, &v_y, r_y, s_y) ) + ? u3nt(v_y, u3i_bytes(32, r_y), u3i_bytes(32, s_y)) + : u3_none; + } +} + +u3_noun +u3we_sign(u3_noun cor) +{ + + u3_noun has, prv; + + if ( (c3n == u3r_mean(cor, + u3x_sam_2, &has, + u3x_sam_3, &prv, + 0)) || + (c3n == u3ud(has)) || + (c3n == u3ud(prv))) { + return u3m_bail(c3__exit); + } + else { + return u3l_punt("secp-sign", _cqes_sign(has, prv)); + } +} + +/* recover pubkey from signature (which is how we verify signatures) +*/ +static u3_noun +_cqes_reco(u3_atom has, + u3_atom siv, /* signature: v */ + u3_atom sir, /* signature: r */ + u3_atom sis) /* signature: s */ +{ + c3_y has_y[32]; + if ( !((siv < 4) && (0 == u3r_bytes_fit(32, has_y, has)) ) ) { + return u3m_bail(c3__exit); + } + else { + c3_y sir_y[32], sis_y[32], x_y[32], y_y[32]; + _cqes_unpack_fe(sir, sir_y); + _cqes_unpack_fe(sis, sis_y); + return + ( 0 == urcrypt_secp_reco(sec_u, has_y, siv, sir_y, sis_y, x_y, y_y) ) + ? u3nc(u3i_bytes(32, x_y), u3i_bytes(32, y_y)) + : u3_none; + } +} + +u3_noun +u3we_reco(u3_noun cor) +{ + u3_noun has, /* hash */ + siv, sir, sis; /* signature: v, r, s */ + + if ( (c3n == u3r_mean(cor, + u3x_sam_2, &has, + u3x_sam_6, &siv, + u3x_sam_14, &sir, + u3x_sam_15, &sis, + 0)) || + (c3n == u3ud(has)) || + (c3n == u3ud(siv)) || + (c3n == u3ud(sir)) || + (c3n == u3ud(sis)) ) { + return u3m_bail(c3__exit); + } + else { + return u3l_punt("secp-reco", _cqes_reco(has, siv, sir, sis)); + } +} + +static u3_atom +_cqes_make(u3_atom has, + u3_atom prv) +{ + c3_y has_y[32]; + + if ( 0 != u3r_bytes_fit(32, has_y, has) ) { + return u3m_bail(c3__exit); + } + else { + c3_y prv_y[32], out_y[32]; + _cqes_unpack_fe(prv, prv_y); + return ( 0 == urcrypt_secp_make(has_y, prv_y, out_y) ) + ? u3i_bytes(32, out_y) + : u3_none; + } +} + +u3_noun +u3we_make(u3_noun cor) +{ + u3_noun has, prv; + if ( (c3n == u3r_mean(cor, + u3x_sam_2, &has, + u3x_sam_3, &prv, + 0)) || + (c3n == u3ud(has)) || + (c3n == u3ud(prv)) ) { + return u3m_bail(c3__exit); + } + else { + return u3l_punt("secp-make", _cqes_make(has, prv)); + } +} + +/* create a schnorr signature +*/ +static u3_weak +_cqes_sosi(u3_atom sk, u3_atom m, u3_atom a) +{ + c3_y key_y[32]; + c3_y mes_y[32]; + c3_y aux_y[32]; + + if ( (0 != u3r_bytes_fit(32, key_y, sk)) || + (0 != u3r_bytes_fit(32, mes_y, m)) || + (0 != u3r_bytes_fit(32, aux_y, a)) ) + { + return u3m_bail(c3__exit); + } + else { + c3_y sig_y[64]; + + return + ( 0 == urcrypt_secp_schnorr_sign(sec_u, key_y, mes_y, aux_y, sig_y) ) + ? u3i_bytes(64, sig_y) + : u3_none; + } +} + +u3_noun +u3we_sosi(u3_noun cor) +{ + u3_noun key, mes, aux; + + if ( (c3n == u3r_mean(cor, + u3x_sam_2, &key, + u3x_sam_6, &mes, + u3x_sam_7, &aux, + 0)) || + (c3n == u3ud(key)) || + (c3n == u3ud(mes)) || + (c3n == u3ud(aux)) ) + { + return u3m_bail(c3__exit); + } + else { + return u3l_punt("secp-sosi", _cqes_sosi(key, mes, aux)); + } +} + +/* verify a schnorr signature +*/ +static u3_atom +_cqes_sove(u3_atom pk, u3_atom m, u3_atom sig) +{ + c3_y pub_y[32]; + c3_y mes_y[32]; + c3_y sig_y[64]; + + if ( (0 != u3r_bytes_fit(32, pub_y, pk)) || + (0 != u3r_bytes_fit(32, mes_y, m)) || + (0 != u3r_bytes_fit(64, sig_y, sig)) ) + { + return u3m_bail(c3__exit); + } + else { + return __(urcrypt_secp_schnorr_veri(sec_u, sig_y, mes_y, pub_y)); + } +} + +u3_noun +u3we_sove(u3_noun cor) +{ + u3_noun pub, mes, sig; + + if ( (c3n == u3r_mean(cor, + u3x_sam_2, &pub, + u3x_sam_6, &mes, + u3x_sam_7, &sig, + 0)) || + (c3n == u3ud(pub)) || + (c3n == u3ud(mes)) || + (c3n == u3ud(sig)) ) + { + return u3m_bail(c3__exit); + } + else { + return _cqes_sove(pub, mes, sig); + } +} diff --git a/vere/pkg/noun/jets/e/sha1.c b/vere/pkg/noun/jets/e/sha1.c new file mode 100644 index 0000000..729faf6 --- /dev/null +++ b/vere/pkg/noun/jets/e/sha1.c @@ -0,0 +1,40 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + static u3_noun + _cqe_sha1(u3_atom wid, u3_atom dat) + { + c3_w len_w; + if ( !u3r_word_fit(&len_w, wid) ) { + return u3m_bail(c3__fail); + } + else { + c3_y out_y[20]; + c3_y *dat_y = u3r_bytes_alloc(0, len_w, dat); + + urcrypt_sha1(dat_y, len_w, out_y); + u3a_free(dat_y); + return u3i_bytes(20, out_y); + } + } + + u3_noun + u3we_sha1(u3_noun cor) + { + u3_noun wid, dat; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &wid, u3x_sam_3, &dat, 0)) || + (c3n == u3ud(wid)) || + (c3n == u3ud(dat)) ) + { + return u3m_bail(c3__exit); + } + else { + return _cqe_sha1(wid, dat); + } + } diff --git a/vere/pkg/noun/jets/e/shax.c b/vere/pkg/noun/jets/e/shax.c new file mode 100644 index 0000000..856d0fa --- /dev/null +++ b/vere/pkg/noun/jets/e/shax.c @@ -0,0 +1,194 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" +#include "urcrypt.h" + + + static u3_atom + _cqe_shay(u3_atom wid, + u3_atom dat) + { + c3_w len_w; + if ( !u3r_word_fit(&len_w, wid) ) { + return u3m_bail(c3__fail); + } + else { + c3_y out_y[32]; + c3_y* dat_y = u3r_bytes_alloc(0, len_w, dat); + urcrypt_shay(dat_y, len_w, out_y); + u3a_free(dat_y); + return u3i_bytes(32, out_y); + } + } + + static u3_atom + _cqe_shax(u3_atom a) + { + c3_w len_w; + c3_y out_y[32]; + c3_y* dat_y = u3r_bytes_all(&len_w, a); + urcrypt_shay(dat_y, len_w, out_y); + u3a_free(dat_y); + return u3i_bytes(32, out_y); + } + + static u3_atom + _cqe_shal(u3_atom wid, + u3_atom dat) + { + c3_w len_w; + if ( !u3r_word_fit(&len_w, wid) ) { + return u3m_bail(c3__fail); + } + else { + c3_y out_y[64]; + c3_y* dat_y = u3r_bytes_alloc(0, len_w, dat); + urcrypt_shal(dat_y, len_w, out_y); + u3a_free(dat_y); + return u3i_bytes(64, out_y); + } + } + + static u3_atom + _cqe_shas(u3_atom sal, + u3_atom ruz) + { + c3_w sal_w, ruz_w; + c3_y *sal_y, *ruz_y, out_y[32]; + + sal_y = u3r_bytes_all(&sal_w, sal); + ruz_y = u3r_bytes_all(&ruz_w, ruz); + urcrypt_shas(sal_y, sal_w, ruz_y, ruz_w, out_y); + u3a_free(sal_y); + u3a_free(ruz_y); + return u3i_bytes(32, out_y); + } + + u3_noun + u3we_shax(u3_noun cor) + { + u3_noun a; + + if ( (u3_none == (a = u3r_at(u3x_sam, cor))) || + (c3n == u3ud(a)) ) + { + return u3m_bail(c3__exit); + } else { + return _cqe_shax(a); + } + } + + u3_noun + u3we_shay(u3_noun cor) + { + u3_noun a, b; + + if ( (u3_none == (a = u3r_at(u3x_sam_2, cor))) || + (u3_none == (b = u3r_at(u3x_sam_3, cor))) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__exit); + } else { + return _cqe_shay(a, b); + } + } + + u3_noun + u3we_shal(u3_noun cor) + { + u3_noun a, b; + + if ( (u3_none == (a = u3r_at(u3x_sam_2, cor))) || + (u3_none == (b = u3r_at(u3x_sam_3, cor))) || + (c3n == u3ud(a)) || + (c3n == u3ud(b)) ) + { + return u3m_bail(c3__exit); + } else { + return _cqe_shal(a, b); + } + } + + u3_noun + u3we_shas(u3_noun cor) + { + u3_noun sal, ruz; + + if ( (u3_none == (sal = u3r_at(u3x_sam_2, cor))) || + (u3_none == (ruz = u3r_at(u3x_sam_3, cor))) || + (c3n == u3ud(sal)) || + (c3n == u3ud(ruz)) ) + { + return u3m_bail(c3__exit); + } else { + return _cqe_shas(sal, ruz); + } + } + + static u3_noun + _og_list(u3_noun a, + u3_noun b, + u3_noun c) + { + u3_noun l = u3_nul; + + if ( !_(u3a_is_cat(b)) ) { + return u3m_bail(c3__fail); + } + while ( 0 != b ) { + u3_noun x = u3qc_mix(a, c); + u3_noun y = u3qc_mix(b, x); + u3_noun d = _cqe_shas(c3_s4('o','g','-','b'), y); + u3_noun m; + + u3z(x); u3z(y); + + if ( b < 256 ) { + u3_noun e = u3qc_end(0, b, d); + + u3z(d); + m = u3nc(b, e); + b = 0; + } else { + m = u3nc(256, d); + c = d; + + b -= 256; + } + l = u3nc(m, l); + } + return u3kb_flop(l); + } + + u3_noun + u3qeo_raw(u3_atom a, + u3_atom b) + { + u3_noun x = u3qc_mix(b, a); + u3_noun c = _cqe_shas(c3_s4('o','g','-','a'), x); + u3_noun l = _og_list(a, b, c); + u3_noun r = u3qc_can(0, l); + + u3z(l); + u3z(c); + u3z(x); + + return r; + } + + u3_noun + u3weo_raw(u3_noun cor) + { + u3_noun a, b; + + if ( c3n == u3r_mean(cor, u3x_sam, &b, u3x_con_sam, &a, 0) ) { + return u3m_bail(c3__exit); + } else { + return u3qeo_raw(a, b); + } + } diff --git a/vere/pkg/noun/jets/e/slaw.c b/vere/pkg/noun/jets/e/slaw.c new file mode 100644 index 0000000..906b0d7 --- /dev/null +++ b/vere/pkg/noun/jets/e/slaw.c @@ -0,0 +1,477 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +#include + +static inline u3_noun +_parse_ud(u3_noun a) +{ + u3_weak pro; + + if ( u3_none == (pro = u3s_sift_ud(u3x_atom(a))) ) { + return u3_nul; + } + + return u3nc(u3_nul, pro); +} + +static +u3_noun get_syllable(c3_c** cur_ptr, c3_c* one, c3_c* two, c3_c* three) { + if (islower((*cur_ptr)[0]) && islower((*cur_ptr)[1]) && + islower((*cur_ptr)[2])) { + *one = (*cur_ptr)[0]; + *two = (*cur_ptr)[1]; + *three = (*cur_ptr)[2]; + (*cur_ptr) += 3; + return c3y; + } else { + return c3n; + } +} + +static u3_noun +combine(u3_noun p, u3_noun q) +{ + if ( (c3y == u3a_is_atom(p)) || (c3y == u3a_is_atom(q)) ) { + return 0; + } + + u3_noun lef = u3qa_mul(256, u3t(q)); + u3_noun ret = u3nc(0, u3qa_add(u3t(p), lef)); + u3z(lef); + u3z(p); u3z(q); + + return ret; +} + +#define ENSURE_NOT_END() do { \ + if (*cur == 0) { \ + u3a_free(c); \ + return u3_none; \ + } \ + } while (0) + +#define CONSUME(x) do { \ + if (*cur != x) { \ + u3a_free(c); \ + return u3_none; \ + } \ + cur++; \ + } while (0) + +#define TRY_GET_SYLLABLE(prefix) \ + c3_c prefix##_one, prefix##_two, prefix##_three; \ + if (c3n == get_syllable(&cur, & prefix##_one, & prefix##_two, & prefix##_three)) { \ + u3a_free(c); \ + return u3_none; \ + } + +u3_noun +_parse_p(u3_noun cor, u3_noun txt) { + c3_c* c = u3a_string(txt); + + c3_c* cur = c; + CONSUME('~'); + + // We at least have a sig prefix. We're now going to parse tuples of three + // lowercase letters. Our naming pattern for the pieces we read is [a b c d + // ...] as we read them. + TRY_GET_SYLLABLE(a); + + // There was only one syllable. If it's a valid suffix syllable, then + // it's a galaxy. We don't even have to run this through the scrambler or + // check for validity since its already a (unit @). + if (*cur == 0) { + u3a_free(c); + return u3_po_find_suffix(a_one, a_two, a_three); + } + + TRY_GET_SYLLABLE(b); + + // There were only two syllables. If they are a valid prefix and suffix, then + // it's a star. + if (*cur == 0) { + u3_noun a_part = u3_po_find_prefix(a_one, a_two, a_three); + u3_noun b_part = u3_po_find_suffix(b_one, b_two, b_three); + u3_atom combined = combine(b_part, a_part); + u3a_free(c); + return combined; + } + + // There must now be a - or it is invalid + CONSUME('-'); + + TRY_GET_SYLLABLE(c); + + ENSURE_NOT_END(); + + TRY_GET_SYLLABLE(d); + + if (*cur == 0) { + u3_noun a_part = u3_po_find_prefix(a_one, a_two, a_three); + u3_noun b_part = u3_po_find_suffix(b_one, b_two, b_three); + u3_noun c_part = u3_po_find_prefix(c_one, c_two, c_three); + u3_noun d_part = u3_po_find_suffix(d_one, d_two, d_three); + + u3_noun m = combine(d_part, combine(c_part, combine(b_part, a_part))); + u3a_free(c); + + if (_(u3a_is_atom(m))) { + return 0; + } + + u3_atom raw = u3k(u3t(m)); + u3z(m); + + u3_noun ob = u3j_cook("u3we_slaw_ob_p", u3k(cor), "ob"); + u3_noun hok = u3j_cook("u3we_slaw_fynd_p", ob, "fynd"); + return u3nc(0, u3n_slam_on(hok, raw)); + } + + // There must now be a - or it is invalid. + CONSUME('-'); + + // The next possible case is a "short" moon. (~ab-cd-ef) + TRY_GET_SYLLABLE(e); + + ENSURE_NOT_END(); + + TRY_GET_SYLLABLE(f); + + if (*cur == 0) { + u3_noun a_part = u3_po_find_prefix(a_one, a_two, a_three); + u3_noun b_part = u3_po_find_suffix(b_one, b_two, b_three); + u3_noun c_part = u3_po_find_prefix(c_one, c_two, c_three); + u3_noun d_part = u3_po_find_suffix(d_one, d_two, d_three); + u3_noun e_part = u3_po_find_prefix(e_one, e_two, e_three); + u3_noun f_part = u3_po_find_suffix(f_one, f_two, f_three); + + u3_noun m = combine(f_part, combine(e_part, combine(d_part, + combine(c_part, combine(b_part, a_part))))); + u3a_free(c); + + if (_(u3a_is_atom(m))) { + return 0; + } + + u3_atom raw = u3k(u3t(m)); + u3z(m); + u3_noun ob = u3j_cook("u3we_slaw_ob_p", u3k(cor), "ob"); + u3_noun hok = u3j_cook("u3we_slaw_fynd_p", ob, "fynd"); + return u3nc(0, u3n_slam_on(hok, raw)); + } + + // There must now be a - or it is invalid. + CONSUME('-'); + + // The next possible case is a "long" moon. (~ab-cd-ef-gh) + TRY_GET_SYLLABLE(g); + + ENSURE_NOT_END(); + + TRY_GET_SYLLABLE(h); + + if (*cur == 0) { + u3_noun a_part = u3_po_find_prefix(a_one, a_two, a_three); + u3_noun b_part = u3_po_find_suffix(b_one, b_two, b_three); + u3_noun c_part = u3_po_find_prefix(c_one, c_two, c_three); + u3_noun d_part = u3_po_find_suffix(d_one, d_two, d_three); + u3_noun e_part = u3_po_find_prefix(e_one, e_two, e_three); + u3_noun f_part = u3_po_find_suffix(f_one, f_two, f_three); + u3_noun g_part = u3_po_find_prefix(g_one, g_two, g_three); + u3_noun h_part = u3_po_find_suffix(h_one, h_two, h_three); + + u3_noun m = combine(h_part, combine(g_part, combine(f_part, + combine(e_part, combine(d_part, combine(c_part, + combine(b_part, a_part))))))); + u3a_free(c); + + if (_(u3a_is_atom(m))) { + return 0; + } + + u3_atom raw = u3k(u3t(m)); + u3z(m); + u3_noun ob = u3j_cook("u3we_slaw_ob_p", u3k(cor), "ob"); + u3_noun hok = u3j_cook("u3we_slaw_fynd_p", ob, "fynd"); + return u3nc(0, u3n_slam_on(hok, raw)); + } + + // At this point, the only thing it could be is a long comet, of the form + // ~ab-cd-ef-gh--ij-kl-mn-op + + CONSUME('-'); + CONSUME('-'); + + TRY_GET_SYLLABLE(i); + ENSURE_NOT_END(); + TRY_GET_SYLLABLE(j); + CONSUME('-'); + TRY_GET_SYLLABLE(k); + ENSURE_NOT_END(); + TRY_GET_SYLLABLE(l); + CONSUME('-'); + TRY_GET_SYLLABLE(m); + ENSURE_NOT_END(); + TRY_GET_SYLLABLE(n); + CONSUME('-'); + TRY_GET_SYLLABLE(o); + ENSURE_NOT_END(); + TRY_GET_SYLLABLE(p); + + if (*cur != 0) { + // We've parsed all of a comet shape, and there's still more in the + // string. Bail back to the interpreter. + u3a_free(c); + return u3_none; + } + + // We have a long comet. Time to jam it all together. We rely on combine() + // for the error checking and we don't have to scramble comet names. + u3_noun a_part = u3_po_find_prefix(a_one, a_two, a_three); + u3_noun b_part = u3_po_find_suffix(b_one, b_two, b_three); + u3_noun c_part = u3_po_find_prefix(c_one, c_two, c_three); + u3_noun d_part = u3_po_find_suffix(d_one, d_two, d_three); + u3_noun e_part = u3_po_find_prefix(e_one, e_two, e_three); + u3_noun f_part = u3_po_find_suffix(f_one, f_two, f_three); + u3_noun g_part = u3_po_find_prefix(g_one, g_two, g_three); + u3_noun h_part = u3_po_find_suffix(h_one, h_two, h_three); + u3_noun i_part = u3_po_find_prefix(i_one, i_two, i_three); + u3_noun j_part = u3_po_find_suffix(j_one, j_two, j_three); + u3_noun k_part = u3_po_find_prefix(k_one, k_two, k_three); + u3_noun l_part = u3_po_find_suffix(l_one, l_two, l_three); + u3_noun m_part = u3_po_find_prefix(m_one, m_two, m_three); + u3_noun n_part = u3_po_find_suffix(n_one, n_two, n_three); + u3_noun o_part = u3_po_find_prefix(o_one, o_two, o_three); + u3_noun p_part = u3_po_find_suffix(p_one, p_two, p_three); + + u3a_free(c); + + return combine(p_part, combine(o_part, combine(n_part, combine(m_part, + combine(l_part, combine(k_part, combine(j_part, combine(i_part, + combine(h_part, combine(g_part, combine(f_part, combine(e_part, + combine(d_part, combine(c_part, combine(b_part, a_part))))))))))))))); +} + +#define PARSE_NONZERO_NUMBER(numname) \ + c3_w numname = 0; \ + do { \ + if (cur[0] > '9' || cur[0] < '1') { \ + u3a_free(c); \ + return u3_none; \ + } \ + numname = cur[0] - '0'; \ + cur++; \ + while (isdigit(cur[0])) { \ + numname = u3ka_mul(numname, 10); \ + numname = u3ka_add(numname, cur[0] - '0'); \ + cur++; \ + } \ + } while (0) + +#define PARSE_INCLUDING_ZERO_NUMBER(numname) \ + c3_w numname = 0; \ + do { \ + if (cur[0] > '9' || cur[0] < '0') { \ + u3a_free(c); \ + return u3_none; \ + } \ + numname = cur[0] - '0'; \ + cur++; \ + while (isdigit(cur[0])) { \ + numname = u3ka_mul(numname, 10); \ + numname = u3ka_add(numname, cur[0] - '0'); \ + cur++; \ + } \ + } while (0) + +#define PARSE_HEX_DIGIT(out) \ + do { \ + if (cur[0] >= '0' && cur[0] <= '9') { \ + out = cur[0] - '0'; \ + } else if (cur[0] >= 'a' && cur[0] <= 'f') { \ + out = 10 + cur[0] - 'a'; \ + } else { \ + u3a_free(c); \ + return u3_none; \ + } \ + cur++; \ + } while(0) + + +u3_noun +_parse_da(u3_noun cor, u3_noun txt) { + c3_c* c = u3a_string(txt); + + c3_c* cur = c; + CONSUME('~'); + + // Parse out an arbitrary year number. Starts with a nonzero digit followed + // by a series of any digits. + PARSE_NONZERO_NUMBER(year); + + // Parse the optional negative sign for BC dates. + u3_noun bc = c3y; + if (cur[0] == '-') { + bc = c3n; + cur++; + } + + CONSUME('.'); + + // Parse out a two digit month (mot:ag). Either a single digit 1-9 or 1[012]. + c3_y month; + if (cur[0] == '1') { + if (cur[1] <= '2' && cur[1] >= '0') { + // This is a two number month. + month = 10 + cur[1] - '0'; + cur += 2; + } else { + // This is January. + month = 1; + cur++; + } + } else if (cur[0] <= '9' && cur[0] >= '2') { + month = cur[0] - '0'; + cur++; + } else { + u3a_free(c); + return u3_none; + } + + CONSUME('.'); + + // Parse out a two digit day (dip:ag). This number can be really big, so we + // can track number of days since September 1993. + PARSE_NONZERO_NUMBER(day); + + if (cur[0] == 0) { + u3a_free(c); + u3_noun hok = u3j_cook("u3we_slaw_parse_da", u3k(cor), "year"); + u3_noun res = u3n_slam_on(hok, + u3nt(u3nc(bc, year), month, + u3nc(day, u3nq(0, 0, 0, 0)))); + return u3nc(0, res); + } + + CONSUME('.'); + CONSUME('.'); + + PARSE_INCLUDING_ZERO_NUMBER(hour); + CONSUME('.'); + PARSE_INCLUDING_ZERO_NUMBER(minute); + CONSUME('.'); + PARSE_INCLUDING_ZERO_NUMBER(second); + + if (cur[0] == 0) { + u3a_free(c); + u3_noun hok = u3j_cook("u3we_slaw_parse_da", u3k(cor), "year"); + u3_noun res = u3n_slam_on(hok, + u3nt(u3nc(bc, year), month, + u3nc(day, u3nq(hour, minute, second, 0)))); + return u3nc(0, res); + } + + CONSUME('.'); + CONSUME('.'); + + // Now we have to parse a list of hexidecimal numbers 0-f of length 4 only + // (zero padded otherwise) separated by dots. + u3_noun list = 0; + while (1) { + // Parse 4 hex digits + c3_y one, two, three, four; + PARSE_HEX_DIGIT(one); + PARSE_HEX_DIGIT(two); + PARSE_HEX_DIGIT(three); + PARSE_HEX_DIGIT(four); + + c3_w current = (one << 12) + (two << 8) + (three << 4) + four; + list = u3nc(u3i_words(1, ¤t), list); + + if (cur[0] == 0) { + u3a_free(c); + + u3_noun flopped = u3qb_flop(list); + u3z(list); + + u3_noun hok = u3j_cook("u3we_slaw_parse_da", u3k(cor), "year"); + u3_noun res = u3n_slam_on(hok, + u3nt(u3nc(bc, year), month, + u3nc(day, + u3nq(hour, minute, second, flopped)))); + return u3nc(0, res); + } + + CONSUME('.'); + } +} + +#undef ENSURE_NOT_END +#undef CONSUME +#undef TRY_GET_SYLLABLE +#undef PARSE_NONZERO_NUMBER +#undef PARSE_HEX_DIGIT + +u3_noun +_parse_tas(u3_noun txt) { + // For any symbol which matches, txt will return itself as a + // value. Therefore, this is mostly checking validity. + c3_c* c = u3a_string(txt); + + // First character must represent a lowercase letter + c3_c* cur = c; + if (!islower(cur[0])) { + u3a_free(c); + return 0; + } + cur++; + + while (cur[0] != 0) { + if (!(islower(cur[0]) || isdigit(cur[0]) || cur[0] == '-')) { + u3a_free(c); + return 0; + } + + cur++; + } + + u3a_free(c); + return u3nc(0, u3k(txt)); +} + +u3_noun +u3we_slaw(u3_noun cor) +{ + u3_noun mod; + u3_noun txt; + + if (c3n == u3r_mean(cor, u3x_sam_2, &mod, + u3x_sam_3, &txt, 0)) { + return u3m_bail(c3__exit); + } + + switch (mod) { + case c3__da: + return _parse_da(cor, txt); + + case 'p': + return _parse_p(cor, txt); + + case c3__ud: + return _parse_ud(txt); + + // %ta is used once in link.hoon. don't bother. + + case c3__tas: + return _parse_tas(txt); + + default: + return u3_none; + } +} diff --git a/vere/pkg/noun/jets/e/tape.c b/vere/pkg/noun/jets/e/tape.c new file mode 100644 index 0000000..4d251b6 --- /dev/null +++ b/vere/pkg/noun/jets/e/tape.c @@ -0,0 +1,53 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + static u3_noun + _norm(u3_noun a) + { + if ( c3n == u3du(a) ) { + return u3_nul; + } else { + return u3nc(((c3y == u3du(u3h(a))) ? u3_nul : u3k(u3h(a))), + _norm(u3t(a))); + } + } + + static u3_noun + _good(u3_noun a) + { + while ( 1 ) { + if ( u3_nul == a ) { + return c3y; + } + if ( c3n == u3ud(u3h(a)) ) { + return c3n; + } + a = u3t(a); + } + } + + u3_noun + u3qe_tape(u3_noun a) + { + if ( c3y == _good(a) ) { + return u3k(a); + } else { + return _norm(a); + } + } + u3_noun + u3we_tape(u3_noun cor) + { + u3_noun a; + + if ( (u3_none == (a = u3r_at(u3x_sam, cor))) ) { + return u3m_bail(c3__fail); + } else { + return u3qe_tape(a); + } + } diff --git a/vere/pkg/noun/jets/e/trip.c b/vere/pkg/noun/jets/e/trip.c new file mode 100644 index 0000000..519a852 --- /dev/null +++ b/vere/pkg/noun/jets/e/trip.c @@ -0,0 +1,33 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3qe_trip(u3_atom a) +{ + return u3qc_rip(3, 1, a); +} + +u3_noun +u3we_trip(u3_noun cor) +{ + u3_noun a = u3x_at(u3x_sam, cor); + + if ( c3n == u3ud(a) ) { + return u3m_bail(c3__exit); + } + + return u3qe_trip(a); +} + +u3_atom +u3ke_trip(u3_noun a) +{ + u3_atom pro = u3qe_trip(a); + u3z(a); + return pro; +} diff --git a/vere/pkg/noun/jets/e/urwasm.c b/vere/pkg/noun/jets/e/urwasm.c new file mode 100644 index 0000000..626aef3 --- /dev/null +++ b/vere/pkg/noun/jets/e/urwasm.c @@ -0,0 +1,3086 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +#include "wasm3.h" +#include "m3_env.h" + +// #define URWASM_SUBROAD +#define URWASM_STATEFUL + +#define ONCE_CTX 63 +#define RUN_CTX 7 + +#define AX_RUNNABLE 374 +#define AX_ARROWS 1502 + +#define AX_CALL 20 +#define AX_MEMREAD 383 +#define AX_MEMWRITE 94 +#define AX_CALL_EXT 375 +#define AX_GLOBAL_SET 4 +#define AX_GLOBAL_GET 22 +#define AX_MEM_SIZE 186 +#define AX_MEM_GROW 381 +#define AX_GET_ACC 374 +#define AX_SET_ACC 92 +#define AX_GET_ALL_GLOB 43 +#define AX_SET_ALL_GLOB 380 + +#define AX_TRY 43 +#define AX_CATCH 4 +#define AX_RETURN 20 +#define AX_FAIL 47 + +#define ARROW_CTX 511 +#define MONAD_CTX 127 + +#define arr_sam 62 +#define arr_sam_2 124 +#define arr_sam_3 125 +#define arr_sam_6 250 +#define arr_sam_7 251 + +#define seed_module 2 +#define seed_past 6 +#define seed_shop 14 +#define seed_import 15 + +#define uw__lia c3_s3('l', 'i', 'a') + +#define uw_lia_run_version 1 + +#define ERR(string) ("\r\n\033[31m>>> " string "\033[0m\r\n") +#define WUT(string) ("\r\n\033[33m>> " string "\033[0m\r\n") +#define DBG(string) ("\r\n" string "\r\n") + +#define KICK1(TRAP) uw_kick_nock(TRAP, 2) +#define KICK2(TRAP) KICK1(KICK1(TRAP)) + +// [a b c d e f g h] +static inline u3_noun +uw_octo(u3_noun a, + u3_noun b, + u3_noun c, + u3_noun d, + u3_noun e, + u3_noun f, + u3_noun g, + u3_noun h) +{ + return u3nc(a, u3nq(b, c, d, u3nq(e, f, g, h))); +} + +// kick by nock. axe RETAINED (ignore if direct) +static u3_noun +uw_kick_nock(u3_noun cor, u3_noun axe) +{ + u3_noun fol = u3x_at(axe, cor); + return u3n_nock_on(cor, u3k(fol)); +} + +// slam by nock +static u3_noun +uw_slam_nock(u3_noun gat, u3_noun sam) +{ + u3_noun cor = u3nc(u3k(u3h(gat)), u3nc(sam, u3k(u3t(u3t(gat))))); + u3z(gat); + return uw_kick_nock(cor, 2); +} + +static u3_noun +uw_slam_check(u3_noun gat, u3_noun sam, c3_t is_stateful) +{ + u3_noun bat = u3k(u3h(gat)); + u3_noun cor = u3nc(u3k(bat), u3nc(sam, u3k(u3t(u3t(gat))))); + u3z(gat); + + if (!is_stateful) + { + return u3n_nock_on(cor, bat); + } + else + { + u3_noun ton = u3n_nock_an(cor, bat); + + u3_noun tag, pro; + if (c3n == u3r_cell(ton, &tag, &pro)) + { + return u3m_bail(c3__fail); + } + if (0 == tag) + { + u3k(pro); + u3z(ton); + return pro; + } + else if (2 == tag) + { + return u3m_bail(c3__exit); + } + else + { + return u3m_bail(c3__fail); + } + } +} + +static inline void +_push_list(u3_noun som, u3_noun *lit) +{ + if (u3_none == *lit) + { + u3z(som); + } + else + { + *lit = u3nc(som, *lit); + } +} + +static inline u3_weak +_pop_list(u3_weak *lit) +{ + if (u3_none == *lit) + { + return u3_none; + } + u3_noun hed, tel; + if (c3n == u3r_cell(*lit, &hed, &tel)) + { + return u3m_bail(c3__fail); + } + u3k(hed); + u3k(tel); + u3z(*lit); + *lit = tel; + return hed; +} + +static const M3Result UrwasmArrowExit = "An imported arrow returned %2"; + +static const c3_m uw_run_m = uw__lia + c3__run + uw_lia_run_version; + +static_assert( + (c3y == u3a_is_cat(uw_run_m)), + "u3we_run key tag must be a direct atom" +); + +typedef struct { + u3_noun call_bat; + u3_noun memread_bat; + u3_noun memwrite_bat; + u3_noun call_ext_bat; + u3_noun try_bat; + u3_noun catch_bat; + u3_noun return_bat; + u3_noun fail_bat; + u3_noun global_set_bat; + u3_noun global_get_bat; + u3_noun mem_grow_bat; + u3_noun mem_size_bat; + u3_noun get_acc_bat; + u3_noun set_acc_bat; + u3_noun get_all_glob_bat; + u3_noun set_all_glob_bat; +// + u3_noun call_ctx; + u3_noun memread_ctx; + u3_noun memwrite_ctx; + u3_noun global_set_ctx; + u3_noun global_get_ctx; + u3_noun mem_grow_ctx; + u3_noun mem_size_ctx; + u3_noun get_all_glob_ctx; + u3_noun set_all_glob_ctx; +} match_data_struct; + +// memory arena with exponential growth +typedef struct { + c3_w siz_w; // size in bytes + c3_y pad_y; // alignment padding + c3_t ini_t; // already initialized + u3i_slab sab_u; // associated slab + c3_y* buf_y; // allocated buffer + c3_y* nex_y; // next allocation + c3_y* end_y; // end of arena + jmp_buf* esc_u; // escape buffer +} uw_arena; + +typedef struct { + IM3Module wasm_module; // p + u3_noun lia_shop; // q, transferred + u3_noun acc; // p.r, transferred + u3_noun map; // q.r, retained + match_data_struct* match; + u3_noun arrow_yil; // transferred + u3_noun susp_list; // transferred + u3_noun resolution; // resolved %1 block, transferred + uw_arena box_arena; + uw_arena code_arena; + u3_noun yil_previous; // transferred + u3_noun queue; // transferred + c3_t is_stateful; +} lia_state; + +typedef enum { + west_call, + west_call_ext, + west_try, + west_catch_try, + west_catch_err, + west_link_wasm, +} wasm3_ext_suspend_tag; + +typedef enum { + lst_call = 0, + // lst_call_ext = 1, // not necessary + lst_try = 2, + lst_catch_try = 3, + lst_catch_err = 4, + lst_link_wasm = 5, +} lia_suspend_tag; + +static void +_uw_arena_init_size(uw_arena* ren_u, c3_w siz_w) +{ + ren_u->siz_w = siz_w; + u3i_slab_init(&ren_u->sab_u, 3, siz_w + 12); // size + max padding + ren_u->buf_y = ren_u->nex_y = c3_align(ren_u->sab_u.buf_y, 16, C3_ALGHI); + ren_u->end_y = ren_u->buf_y + ren_u->siz_w; + c3_y pad_y = ren_u->buf_y - ren_u->sab_u.buf_y; + if (pad_y > 12) + { + u3m_bail(c3__fail); + } + ren_u->pad_y = pad_y; + ren_u->ini_t = 1; +} + +static void +_uw_arena_init(uw_arena* ren_u) +{ + _uw_arena_init_size(ren_u, (c3_w)1 << 23); +} + +static void +_uw_arena_grow(uw_arena* ren_u) +{ + if (!ren_u->ini_t) + { + u3m_bail(c3__fail); + } + c3_w new_w = ren_u->siz_w * 2; + if (new_w / 2 != ren_u->siz_w) + { + u3m_bail(c3__fail); + } + ren_u->siz_w = new_w; + + u3i_slab_free(&ren_u->sab_u); + + u3i_slab_init(&ren_u->sab_u, 3, new_w + 12); // size + max padding + ren_u->buf_y = ren_u->nex_y = c3_align(ren_u->sab_u.buf_y, 16, C3_ALGHI); + ren_u->end_y = ren_u->nex_y + new_w; + c3_y pad_y = ren_u->nex_y - ren_u->sab_u.buf_y; + if (pad_y > 12) + { + u3m_bail(c3__fail); + } + ren_u->pad_y = pad_y; +} + +static void +_uw_arena_reset(uw_arena* ren_u) +{ + if (!ren_u->ini_t) + { + u3m_bail(c3__fail); + } + ren_u->nex_y = ren_u->buf_y; + memset(ren_u->buf_y, 0, (size_t)ren_u->siz_w); +} + +static void +_uw_arena_free(uw_arena* ren_u) +{ + if (!ren_u->ini_t) + { + u3m_bail(c3__fail); + } + u3i_slab_free(&ren_u->sab_u); + ren_u->ini_t = 0; +} + +// Code page allocation: simple bump allocator for non-growing objects, +// i.e. code pages +// save allocation length for realloc +// CodeArena->esc_u MUST be initialized by the caller to handle OOM +// +static uw_arena* CodeArena; + +static void* +_calloc_code(size_t num_i, size_t len_i) +{ + if (!CodeArena->ini_t) + { + u3m_bail(c3__fail); + } + + void* lag_v = CodeArena->nex_y; + + size_t byt_i = num_i * len_i; + if (byt_i / len_i != num_i) + { + u3m_bail(c3__fail); + } + + if (byt_i >= UINT64_MAX - 16) + { + u3m_bail(c3__fail); + } + c3_d byt_d = byt_i + 16; // c3_d for length + alignment padding + + c3_y* nex_y = CodeArena->nex_y + byt_d; + nex_y = c3_align(nex_y, 16, C3_ALGHI); + + if (nex_y >= CodeArena->end_y) + { // OOM, jump out to increase the arena size and try again + _longjmp(*CodeArena->esc_u, c3__code); + } + + *((c3_d*)lag_v) = byt_d - 16; // corruption check + *((c3_d*)lag_v + 1) = byt_d - 16; + + CodeArena->nex_y = nex_y; + return ((c3_d*)lag_v + 2); +} + +static void* +_realloc_code(void* lag_v, size_t len_i) +{ + if (!CodeArena->ini_t) + { + u3m_bail(c3__fail); + } + if (!lag_v) + { + return _calloc_code(len_i, 1); + } + c3_d old1_d = *((c3_d*)lag_v - 1); + c3_d old2_d = *((c3_d*)lag_v - 2); + if (old1_d != old2_d) + { + u3m_bail(c3__fail); + } + if (len_i >= UINT64_MAX) + { + u3m_bail(c3__fail); + } + c3_d len_d = len_i; + void* new_v = _calloc_code(len_d, 1); + memcpy(new_v, lag_v, c3_min(len_d, old1_d)); + + return new_v; +} + +static void +_free_code(void* lag_v) +{ + if (!CodeArena->ini_t) + { + u3m_bail(c3__fail); + } + // noop +} + +// Struct/array allocation: [len_d cap_d data] +// BoxArena->esc_u MUST be initialized by the caller to handle OOM +// +static uw_arena* BoxArena; + +// allocate with capacity +// the allocated buffer +static void* +_malloc_box_cap(c3_d len_d, c3_d cap_d) +{ + if (!BoxArena->ini_t) + { + u3m_bail(c3__fail); + } + + void* lag_v = BoxArena->nex_y; + + if (cap_d >= UINT64_MAX - 16) + { + u3m_bail(c3__fail); + } + c3_d pac_d = cap_d + 16; // c3_d for length + capacity + + c3_y* nex_y = BoxArena->nex_y + pac_d; + nex_y = c3_align(nex_y, 16, C3_ALGHI); + + if (nex_y >= BoxArena->end_y) + { // OOM, jump out to increase the arena size and try again + _longjmp(*BoxArena->esc_u, c3__box); + } + + *((c3_d*)lag_v) = len_d; + *((c3_d*)lag_v + 1) = cap_d; + + BoxArena->nex_y = nex_y; + return ((c3_d*)lag_v + 2); +} + +static void* +_calloc_box(size_t num_i, size_t len_i) +{ + size_t byt_i = num_i * len_i; + if (byt_i / len_i != num_i) + { + u3m_bail(c3__fail); + } + if (byt_i > UINT64_MAX - 16) + { + u3m_bail(c3__fail); + } + c3_d byt_d = byt_i; + return _malloc_box_cap(byt_d, byt_d); +} + +static void* +_realloc_box(void* lag_v, size_t len_i) +{ + if (!BoxArena->ini_t) + { + u3m_bail(c3__fail); + } + if (!lag_v) + { + return _calloc_box(len_i, 1); + } + c3_d old_d = *((c3_d*)lag_v - 2); + c3_d cap_d = *((c3_d*)lag_v - 1); + if (len_i >= UINT64_MAX) + { + u3m_bail(c3__fail); + } + c3_d len_d = len_i; + if (len_d <= cap_d) + { + *((c3_d*)lag_v - 2) = len_d; + return lag_v; + } + + // while (cap_d <= len_d) + // { + // cap_d *= 2; + // } + cap_d <<= c3_bits_dabl(len_d) - c3_bits_dabl(cap_d); + cap_d <<= (cap_d <= len_d); + + // overflow check + if (cap_d <= len_d) + u3m_bail(c3__fail); + + void* new_v = _malloc_box_cap(len_d, cap_d); + memcpy(new_v, lag_v, old_d); + + return new_v; +} + +static void +_free_box(void* lag_v) +{ + if (!BoxArena->ini_t) + { + u3m_bail(c3__fail); + } + // noop +} + +// bailing allocator to prevent wasm3 from touching the arenas + +static void* +_calloc_bail(size_t num_i, size_t len_i) +{ + u3m_bail(c3__fail); +} + +static void* +_realloc_bail(void* lag_v, size_t len_i) +{ + u3m_bail(c3__fail); +} + +static void +_free_bail(void* lag_v) +{ + u3m_bail(c3__fail); +} + + +static u3_noun +_atoms_from_stack(void** valptrs, c3_w n, c3_y* types) +{ + u3_noun out = u3_nul; + while (n--) + { + switch (types[n]) + { // TODO 64 bit vere + case c_m3Type_i32: + case c_m3Type_f32: + { + out = u3nc(u3i_word(*(c3_w*)valptrs[n]), out); + break; + } + case c_m3Type_i64: + case c_m3Type_f64: + { + out = u3nc(u3i_chub(*(c3_d*)valptrs[n]), out); + break; + } + default: + { + return u3m_bail(c3__fail); + } + } + } + return out; +} + +// RETAIN argument +static c3_o +_atoms_to_stack(u3_noun atoms, void** valptrs, c3_w n, c3_y* types) +{ + for (c3_w i = 0; i < n; i++) + { + if (c3y == u3ud(atoms)) + { + return c3n; + } + u3_noun atom; + u3x_cell(atoms, &atom, &atoms); + if (c3n == u3ud(atom)) + { + return u3m_bail(c3__fail); + } + switch (types[i]) + { + case c_m3Type_i32: + case c_m3Type_f32: + { + *(c3_w*)valptrs[i] = u3r_word(0, atom); + break; + } + case c_m3Type_i64: + case c_m3Type_f64: + { + *(c3_d*)valptrs[i] = u3r_chub(0, atom); + break; + } + default: + { + return u3m_bail(c3__fail); + } + } + } + return __(u3_nul == atoms); +} + +static u3_noun +_coins_from_stack(void** valptrs, c3_w n, c3_y* types) +{ + u3_noun out = u3_nul; + while (n--) + { + switch (types[n]) + { // TODO 64 bit vere + case c_m3Type_i32: + { + out = u3nc(u3nc(c3__i32, u3i_word(*(c3_w*)valptrs[n])), out); + break; + } + case c_m3Type_i64: + { + out = u3nc(u3nc(c3__i64, u3i_chub(*(c3_d*)valptrs[n])), out); + break; + } + case c_m3Type_f32: + { + out = u3nc(u3nc(c3__f32, u3i_word(*(c3_w*)valptrs[n])), out); + break; + } + case c_m3Type_f64: + { + out = u3nc(u3nc(c3__f64, u3i_chub(*(c3_d*)valptrs[n])), out); + break; + } + default: + { + return u3m_bail(c3__fail); + } + } + } + return out; +} + +// RETAIN argument +static c3_o +_coins_to_stack(u3_noun coins, void** valptrs, c3_w n, c3_y* types) +{ + for (c3_w i = 0; i < n; i++) + { + if (c3y == u3ud(coins)) + { + return c3n; + } + u3_noun coin; + u3x_cell(coins, &coin, &coins); + if (c3y == u3ud(coin)) + { + return u3m_bail(c3__fail); + } + u3_noun tag, value; + u3x_cell(coin, &tag, &value); + if (c3n == u3ud(value)) + { + return u3m_bail(c3__fail); + } + switch (types[i]) + { + case c_m3Type_i32: + { + if (c3__i32 != tag) + { + return c3n; + } + *(c3_w*)valptrs[i] = u3r_word(0, value); + break; + } + case c_m3Type_i64: + { + if (c3__i64 != tag) + { + return c3n; + } + *(c3_d*)valptrs[i] = u3r_chub(0, value); + break; + } + case c_m3Type_f32: + { + if (c3__f32 != tag) + { + return c3n; + } + *(c3_w*)valptrs[i] = u3r_word(0, value); + break; + } + case c_m3Type_f64: + { + if (c3__f64 != tag) + { + return c3n; + } + *(c3_d*)valptrs[i] = u3r_chub(0, value); + break; + } + default: + { + return u3m_bail(c3__fail); + } + } + } + return __(u3_nul == coins); +} + +static c3_t +_deterministic_trap(M3Result result) +{ + return ( result == m3Err_trapOutOfBoundsMemoryAccess + || result == m3Err_trapDivisionByZero + || result == m3Err_trapIntegerOverflow + || result == m3Err_trapIntegerConversion + || result == m3Err_trapIndirectCallTypeMismatch + || result == m3Err_trapTableIndexOutOfRange + || result == m3Err_trapTableElementIsNull + || result == UrwasmArrowExit + ); +} + +static u3_noun +_reduce_monad(u3_noun monad, lia_state* sat_u) +{ + u3_noun monad_bat = u3h(monad); + if (c3y == u3r_sing(monad_bat, sat_u->match->call_bat)) + { + if (c3n == u3r_sing(u3at(ARROW_CTX, monad), sat_u->match->call_ctx)) + { + return u3m_bail(c3__fail); + } + // call + u3_atom name = u3x_atom(u3at(arr_sam_2, monad)); + u3_noun args = u3at(arr_sam_3, monad); + + c3_w met_w = u3r_met(3, name); + c3_c* name_c = u3a_malloc(met_w + 1); + u3r_bytes(0, met_w, (c3_y*)name_c, name); + name_c[met_w] = 0; + + M3Result result; + + IM3Function f; + result = m3_FindFunction(&f, sat_u->wasm_module->runtime, name_c); + + if (result) + { + fprintf(stderr, ERR("function %s search error: %s"), name_c, result); + return u3m_bail(c3__fail); + } + + c3_w n_in = f->funcType->numArgs; + c3_w n_out = f->funcType->numRets; + c3_y* types = f->funcType->types; + + c3_d *vals_in = u3a_calloc(n_in, sizeof(c3_d)); + void **valptrs_in = u3a_calloc(n_in, sizeof(void*)); + for (c3_w i = 0; i < n_in; i++) + { + valptrs_in[i] = &vals_in[i]; + } + + c3_d *vals_out = u3a_calloc(n_out, sizeof(c3_d)); + void **valptrs_out = u3a_calloc(n_out, sizeof(void*)); + for (c3_w i = 0; i < n_out; i++) + { + valptrs_out[i] = &vals_out[i]; + } + + if (c3n == _atoms_to_stack(args, valptrs_in, n_in, (types+n_out))) + { + fprintf(stderr, ERR("function %s wrong number of args"), name_c); + return u3m_bail(c3__fail); + } + + c3_w edge_1 = sat_u->wasm_module->runtime->edge_suspend; + + // printf("\r\n\r\n invoke %s\r\n\r\n", name_c); + + { // push on suspend stacks + c3_d f_idx_d = f - sat_u->wasm_module->functions; + m3_SuspendStackPush64(sat_u->wasm_module->runtime, f_idx_d); + m3_SuspendStackPush64(sat_u->wasm_module->runtime, west_call); + m3_SuspendStackPushExtTag(sat_u->wasm_module->runtime); + _push_list( + u3nc(lst_call, u3k(name)), + &sat_u->susp_list + ); + } + + M3Result result_call = m3_Call(f, n_in, (const void**)valptrs_in); + // printf("\r\n done %s\r\n", name_c); + + if (result_call != m3Err_ComputationBlock + && result_call != m3Err_SuspensionError) + { // pop suspend stacks + m3_SuspendStackPopExtTag(sat_u->wasm_module->runtime); + c3_d tag; + m3_SuspendStackPop64(sat_u->wasm_module->runtime, &tag); + if (tag != -1 && tag != west_call) + { + printf(ERR("call tag mismatch: %"PRIc3_d), tag); + return u3m_bail(c3__fail); + } + m3_SuspendStackPop64(sat_u->wasm_module->runtime, NULL); + u3_noun frame = _pop_list(&sat_u->susp_list); + if (u3_none != frame && lst_call != u3h(frame)) + { + printf(ERR("wrong frame: call")); + return u3m_bail(c3__fail); + } + u3z(frame); + } + + u3_noun yil; + if (result_call == m3Err_ComputationBlock) + { + yil = sat_u->arrow_yil; + sat_u->arrow_yil = u3_none; + if (yil == u3_none) + { + return u3m_bail(c3__fail); + } + } + else if (_deterministic_trap(result_call)) + { + fprintf(stderr, WUT("%s call trapped: %s"), name_c, result_call); + yil = u3nc(2, 0); + } + else if (result_call == m3Err_functionImportMissing) + { + return u3m_bail(c3__exit); + } + else if (result_call) + { + fprintf(stderr, ERR("%s call failed: %s"), name_c, result_call); + return u3m_bail(c3__fail); + } + else + { + result = m3_GetResults(f, n_out, (const void**)valptrs_out); + if (result) + { + fprintf(stderr, ERR("function %s failed to get results"), name_c); + return u3m_bail(c3__fail); + } + yil = u3nc(0, _atoms_from_stack(valptrs_out, n_out, types)); + } + + c3_w edge_2 = sat_u->wasm_module->runtime->edge_suspend; + if (edge_1 != edge_2 && !result_call) + { + fprintf(stderr, ERR("imbalanced suspension stack on succesfull return: %d vs %d"), edge_1, edge_2); + return u3m_bail(c3__fail); + } + + u3a_free(name_c); + u3a_free(vals_in); + u3a_free(valptrs_in); + u3a_free(vals_out); + u3a_free(valptrs_out); + u3z(monad); + + return yil; + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->memread_bat)) + { + if (c3n == u3r_sing(u3at(ARROW_CTX, monad), sat_u->match->memread_ctx)) + { + return u3m_bail(c3__fail); + } + // memread + u3_atom ptr = u3x_atom(u3at(arr_sam_2, monad)); + u3_noun len = u3at(arr_sam_3, monad); + + c3_w ptr_w = u3r_word(0, ptr); + c3_l len_l = (c3y == u3a_is_cat(len)) ? len : u3m_bail(c3__fail); + c3_w len_buf_w; + c3_y* buf_y = m3_GetMemory(sat_u->wasm_module->runtime, &len_buf_w, 0); + + if (buf_y == NULL) + { + fprintf(stderr, ERR("memread failed to get memory")); + return u3m_bail(c3__fail); + } + + if (ptr_w + len_l > len_buf_w) + { + fprintf(stderr, ERR("memread out of bounds")); + return u3m_bail(c3__fail); + } + + u3z(monad); + return u3nt(0, len_l, u3i_bytes(len_l, (buf_y + ptr_w))); + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->memwrite_bat)) + { + if (c3n == u3r_sing(u3at(ARROW_CTX, monad), sat_u->match->memwrite_ctx)) + { + return u3m_bail(c3__fail); + } + // memwrite + u3_atom ptr = u3x_atom(u3at(arr_sam_2, monad)); + u3_noun len = u3at(arr_sam_6, monad); + u3_noun src = u3at(arr_sam_7, monad); + + c3_w ptr_w = u3r_word(0, ptr); + c3_l len_l = (c3y == u3a_is_cat(len)) ? len : u3m_bail(c3__fail); + + c3_w len_buf_w; + c3_y* buf_y = m3_GetMemory(sat_u->wasm_module->runtime, &len_buf_w, 0); + + if (buf_y == NULL) + { + fprintf(stderr, ERR("memwrite failed to get memory")); + return u3m_bail(c3__fail); + } + + if (ptr_w + len_l > len_buf_w) + { + fprintf(stderr, ERR("memwrite out of bounds")); + return u3m_bail(c3__fail); + } + + u3r_bytes(0, len_l, (buf_y + ptr_w), u3x_atom(src)); + + u3z(monad); + return u3nc(0, 0); + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->call_ext_bat)) + { + // call-ext + if (u3_nul == sat_u->lia_shop) + { + // Suspended computation will have exactly one blocking point, which + // must be at the top of the stack. You are at this point. + // There is no useful info to be saved here, name/args are not enough + // to qualify the external call, which can and will be nondeterministic + // (like all IO in urbit) + // + // On wasm3 side op_CallRaw will store the information about the + // called function. It shall be the top frame of the suspension stack, + // since only Lia can block, so wasm3 has to call Lia to get blocked. + // + // A frame is pushed in wasm3 to trigger the callback and signal to + // _apply_diff that the computation is blocked + // + m3_SuspendStackPush64(sat_u->wasm_module->runtime, west_call_ext); + m3_SuspendStackPushExtTag(sat_u->wasm_module->runtime); + + u3_noun name = u3at(arr_sam_2, monad); + u3_noun args = u3at(arr_sam_3, monad); + + u3_noun yil = u3nt(1, u3k(name), u3k(args)); + u3z(monad); + return yil; + } + else + { + u3z(monad); + + u3_noun lia_buy, tel; + u3x_cell(sat_u->lia_shop, &lia_buy, &tel); + u3_noun yil = u3nc(0, u3k(lia_buy)); + u3k(tel); + u3z(sat_u->lia_shop); + sat_u->lia_shop = tel; + return yil; + } + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->try_bat)) + { + // try + u3_noun monad_b = u3at(60, monad); + u3_noun cont = u3at(61, monad); + u3_weak yil; + u3_noun monad_cont; + { // push on suspend stacks + m3_SuspendStackPush64(sat_u->wasm_module->runtime, west_try); + m3_SuspendStackPushExtTag(sat_u->wasm_module->runtime); + _push_list(u3nc(lst_try, u3k(cont)), &sat_u->susp_list); + } + { + yil = _reduce_monad(u3k(monad_b), sat_u); + + if (1 != u3h(yil)) + { // pop suspend stacks + m3_SuspendStackPopExtTag(sat_u->wasm_module->runtime); + c3_d tag; + m3_SuspendStackPop64(sat_u->wasm_module->runtime, &tag); + if (tag != -1 && tag != west_try) + { + printf(ERR("try tag mismatch: %"PRIc3_d), tag); + return u3m_bail(c3__fail); + } + u3_noun frame = _pop_list(&sat_u->susp_list); + if (u3_none != frame && lst_try != u3h(frame)) + { + printf(ERR("wrong frame: try")); + return u3m_bail(c3__fail); + } + u3z(frame); + } + + if (0 == u3h(yil)) + { + // any unconstrained nock computation is a potential urwasm reentry: + // save the pointers before that, restore after + uw_arena* box_arena_frame = BoxArena; + uw_arena* code_arena_frame = CodeArena; + monad_cont = uw_slam_check( + u3k(cont), + u3k(u3t(yil)), + sat_u->is_stateful + ); + BoxArena = box_arena_frame; + CodeArena = code_arena_frame; + u3z(yil); + yil = u3_none; + } + } + + u3z(monad); + if (u3_none == yil) + { + return _reduce_monad(monad_cont, sat_u); + } + else + { + return yil; + } + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->catch_bat)) + { + // catch + u3_noun monad_try = u3at(120, monad); + u3_noun monad_catch = u3at(121, monad); + u3_noun cont = u3at(61, monad); + u3_weak yil; + u3_noun monad_cont; + + { + { // push on suspend stacks + m3_SuspendStackPush64(sat_u->wasm_module->runtime, west_catch_try); + m3_SuspendStackPushExtTag(sat_u->wasm_module->runtime); + _push_list( + u3nt(lst_catch_try, u3k(monad_catch), u3k(cont)), + &sat_u->susp_list + ); + } + yil = _reduce_monad(u3k(monad_try), sat_u); + + if (1 != u3h(yil)) + { // pop suspend stacks + m3_SuspendStackPopExtTag(sat_u->wasm_module->runtime); + c3_d tag; + m3_SuspendStackPop64(sat_u->wasm_module->runtime, &tag); + if (tag != -1 && tag != west_catch_try) + { + printf(ERR("catch-try tag mismatch: %"PRIc3_d), tag); + return u3m_bail(c3__fail); + } + u3_noun frame = _pop_list(&sat_u->susp_list); + if (u3_none != frame && lst_catch_try != u3h(frame)) + { + printf(ERR("wrong frame: catch-try")); + return u3m_bail(c3__fail); + } + u3z(frame); + } + + if (0 == u3h(yil)) + { + uw_arena* box_arena_frame = BoxArena; + uw_arena* code_arena_frame = CodeArena; + monad_cont = uw_slam_check( + u3k(cont), + u3k(u3t(yil)), + sat_u->is_stateful + ); + BoxArena = box_arena_frame; + CodeArena = code_arena_frame; + u3z(yil); + yil = u3_none; + } + else if (2 == u3h(yil)) + { + u3z(yil); + + { // push on suspend stacks + m3_SuspendStackPush64(sat_u->wasm_module->runtime, west_catch_err); + m3_SuspendStackPushExtTag(sat_u->wasm_module->runtime); + _push_list( + u3nc(lst_catch_err, u3k(cont)), + &sat_u->susp_list + ); + } + + yil = _reduce_monad(u3k(monad_catch), sat_u); + + if (1 != u3h(yil)) + { // pop suspend stacks + m3_SuspendStackPopExtTag(sat_u->wasm_module->runtime); + c3_d tag; + m3_SuspendStackPop64(sat_u->wasm_module->runtime, &tag); + if (tag != -1 && tag != west_catch_err) + { + printf(ERR("catch-err tag mismatch: %"PRIc3_d), tag); + return u3m_bail(c3__fail); + } + u3_noun frame = _pop_list(&sat_u->susp_list); + if (u3_none != frame && lst_catch_err != u3h(frame)) + { + printf(ERR("wrong frame: catch-err")); + return u3m_bail(c3__fail); + } + u3z(frame); + } + + if (0 == u3h(yil)) + { + uw_arena* box_arena_frame = BoxArena; + uw_arena* code_arena_frame = CodeArena; + monad_cont = uw_slam_check( + u3k(cont), + u3k(u3t(yil)), + sat_u->is_stateful + ); + BoxArena = box_arena_frame; + CodeArena = code_arena_frame; + u3z(yil); + yil = u3_none; + } + } + } + + u3z(monad); + if (u3_none == yil) + { + return _reduce_monad(monad_cont, sat_u); + } + else + { + return yil; + } + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->return_bat)) + { + // return + u3_noun yil = u3nc(0, u3k(u3at(30, monad))); + u3z(monad); + return yil; + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->global_set_bat)) + { + if (c3n == u3r_sing(u3at(ARROW_CTX, monad), sat_u->match->global_set_ctx)) + { + return u3m_bail(c3__fail); + } + // global-set + u3_atom name = u3x_atom(u3at(arr_sam_2, monad)); + u3_atom value = u3x_atom(u3at(arr_sam_3, monad)); + + c3_w met_w = u3r_met(3, name); + c3_c* name_c = u3a_malloc(met_w + 1); + u3r_bytes(0, met_w, (c3_y*)name_c, name); + name_c[met_w] = 0; + + IM3Global glob = m3_FindGlobal(sat_u->wasm_module, name_c); + + if (!glob) + { + fprintf(stderr, ERR("global %s not found"), name_c); + return u3m_bail(c3__fail); + } + + if (!glob->isMutable) + { + fprintf(stderr, ERR("global %s not mutable"), name_c); + return u3m_bail(c3__fail); + } + + M3TaggedValue glob_value; + M3Result result = m3_GetGlobal(glob, &glob_value); + if (result) + { + fprintf(stderr, ERR("couldn't get global %s: %s"), name_c, result); + return u3m_bail(c3__fail); + } + switch (glob_value.type) + { + default: + { + return u3m_bail(c3__fail); + } + case c_m3Type_i32: + { + glob_value.value.i32 = u3r_word(0, value); + break; + } + case c_m3Type_i64: + { + glob_value.value.i64 = u3r_chub(0, value); + break; + } + case c_m3Type_f32: + { + glob_value.value.f32 = u3r_word(0, value); + break; + } + case c_m3Type_f64: + { + glob_value.value.f64 = u3r_chub(0, value); + break; + } + } + result = m3_SetGlobal(glob, &glob_value); + if (result) + { + fprintf(stderr, ERR("couldn't set global %s: %s"), name_c, result); + return u3m_bail(c3__fail); + } + u3z(monad); + u3a_free(name_c); + return u3nc(0, 0); + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->global_get_bat)) + { + if (c3n == u3r_sing(u3at(ARROW_CTX, monad), sat_u->match->global_get_ctx)) + { + return u3m_bail(c3__fail); + } + // global-get + u3_atom name = u3x_atom(u3at(arr_sam, monad)); + + c3_w met_w = u3r_met(3, name); + c3_c* name_c = u3a_malloc(met_w + 1); + u3r_bytes(0, met_w, (c3_y*)name_c, name); + name_c[met_w] = 0; + + IM3Global glob = m3_FindGlobal(sat_u->wasm_module, name_c); + if (!glob) + { + fprintf(stderr, ERR("global %s not found"), name_c); + return u3m_bail(c3__fail); + } + + M3TaggedValue glob_value; + M3Result result = m3_GetGlobal(glob, &glob_value); + if (result) + { + fprintf(stderr, ERR("couldn't get global %s: %s"), name_c, result); + return u3m_bail(c3__fail); + } + + u3_noun out; + switch (glob_value.type) + { + default: + { + return u3m_bail(c3__fail); + } + case c_m3Type_i32: + { + out = u3i_word(glob_value.value.i32); + break; + } + case c_m3Type_i64: + { + out = u3i_chub(glob_value.value.i64); + break; + } + case c_m3Type_f32: + { + out = u3i_word(glob_value.value.f32); + break; + } + case c_m3Type_f64: + { + out = u3i_chub(glob_value.value.f64); + break; + } + } + + u3z(monad); + u3a_free(name_c); + return u3nc(0, out); + + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->mem_size_bat)) + { + if (c3n == u3r_sing(u3at(MONAD_CTX, monad), sat_u->match->mem_size_ctx)) + { + return u3m_bail(c3__fail); + } + // memory-size + if (!sat_u->wasm_module->memoryInfo.hasMemory) + { + fprintf(stderr, ERR("memsize no memory")); + return u3m_bail(c3__fail); + } + c3_w num_pages = sat_u->wasm_module->runtime->memory.numPages; + + u3z(monad); + return u3nc(0, u3i_word(num_pages)); + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->mem_grow_bat)) + { + if (c3n == u3r_sing(u3at(ARROW_CTX, monad), sat_u->match->mem_grow_ctx)) + { + return u3m_bail(c3__fail); + } + // memory-grow + if (!sat_u->wasm_module->memoryInfo.hasMemory) + { + fprintf(stderr, ERR("memgrow no memory")); + return u3m_bail(c3__fail); + } + + u3_noun delta = u3at(arr_sam, monad); + + c3_l delta_l = (c3y == u3a_is_cat(delta)) ? delta : u3m_bail(c3__fail); + + c3_w n_pages = sat_u->wasm_module->runtime->memory.numPages; + c3_w required_pages = n_pages + delta_l; + + M3Result result = ResizeMemory(sat_u->wasm_module->runtime, required_pages); + + if (result) + { + fprintf(stderr, ERR("failed to resize memory: %s"), result); + return u3m_bail(c3__fail); + } + + u3z(monad); + return u3nc(0, u3i_word(n_pages)); + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->get_acc_bat)) + { + u3z(monad); + return u3nc(0, u3k(sat_u->acc)); + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->set_acc_bat)) + { + u3_noun new = u3k(u3at(arr_sam, monad)); + u3z(monad); + u3z(sat_u->acc); + sat_u->acc = new; + return u3nc(0, 0); + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->get_all_glob_bat)) + { + if (c3n == u3r_sing(u3at(MONAD_CTX, monad), sat_u->match->get_all_glob_ctx)) + { + return u3m_bail(c3__fail); + } + u3z(monad); + u3_noun atoms = u3_nul; + c3_w n_globals = sat_u->wasm_module->numGlobals; + c3_w n_globals_import = sat_u->wasm_module->numGlobImports; + while (n_globals-- > n_globals_import) + { + M3Global glob = sat_u->wasm_module->globals[n_globals]; + switch (glob.type) + { + default: + { + return u3m_bail(c3__fail); + } + case c_m3Type_i32: + { + atoms = u3nc(u3i_word(glob.intValue), atoms); + break; + } + case c_m3Type_i64: + { + atoms = u3nc(u3i_chub(glob.intValue), atoms); + break; + } + case c_m3Type_f32: + { + atoms = u3nc(u3i_word(glob.f32Value), atoms); + break; + } + case c_m3Type_f64: + { + atoms = u3nc(u3i_chub(glob.f64Value), atoms); + break; + } + } + } + return u3nc(0, atoms); + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->set_all_glob_bat)) + { + if (c3n == u3r_sing(u3at(ARROW_CTX, monad), sat_u->match->set_all_glob_ctx)) + { + return u3m_bail(c3__fail); + } + u3_noun atoms = u3at(arr_sam, monad); + c3_w n_globals = sat_u->wasm_module->numGlobals; + c3_w n_globals_import = sat_u->wasm_module->numGlobImports; + for (c3_w i = n_globals_import; i < n_globals; i++) + { + IM3Global glob = &sat_u->wasm_module->globals[i]; + u3_noun atom; + u3x_cell(atoms, &atom, &atoms); + u3x_atom(atom); + switch (glob->type) + { + default: + { + return u3m_bail(c3__fail); + } + case c_m3Type_i32: + { + glob->intValue = u3r_word(0, atom); + break; + } + case c_m3Type_i64: + { + glob->intValue = u3r_chub(0, atom); + break; + } + case c_m3Type_f32: + { + glob->f32Value = u3r_word(0, atom); + break; + } + case c_m3Type_f64: + { + glob->f64Value = u3r_chub(0, atom); + break; + } + } + } + if (u3_nul != atoms) + { + fprintf(stderr, WUT("glob list too long")); + return u3m_bail(c3__exit); + } + u3z(monad); + return u3nc(0, 0); + } + else if (c3y == u3r_sing(monad_bat, sat_u->match->fail_bat)) + { + u3z(monad); + return u3nc(2, 0); + } + else + { + return u3m_bail(c3__fail); + } +} + +static const M3Result +_resume_callback(M3Result result_m3, IM3Runtime runtime) +{ + if (result_m3 == m3Err_ComputationBlock + || result_m3 == m3Err_SuspensionError) + { + return result_m3; + } + M3Result result = m3Err_none; + lia_state* sat_u = runtime->userdata_resume; + m3_SuspendStackPopExtTag(runtime); + c3_d tag_d; + m3_SuspendStackPop64(runtime, &tag_d); + switch (tag_d) + { + default: + { + u3m_bail(c3__fail); + } + case west_call: + { + c3_d f_idx_d; + m3_SuspendStackPop64(sat_u->wasm_module->runtime, &f_idx_d); + u3_noun frame = _pop_list(&sat_u->susp_list); + if (lst_call != u3h(frame)) + { + printf(ERR("wrong frame: call")); + u3m_bail(c3__fail); + } + u3_noun name = u3t(frame); + c3_w met_w = u3r_met(3, name); + c3_c* name_c = u3a_malloc(met_w + 1); + u3r_bytes(0, met_w, (c3_y*)name_c, name); + u3z(frame); + name_c[met_w] = 0; + + u3_noun yil; + if (_deterministic_trap(result_m3)) + { + fprintf(stderr, WUT("%s call trapped: %s"), name_c, result_m3); + yil = u3nc(2, 0); + } + else if (result_m3) + { + fprintf(stderr, ERR("%s call failed: %s"), name_c, result_m3); + u3m_bail(c3__fail); + } + else + { + IM3Function f = runtime->modules->functions + f_idx_d; + c3_w n_out_w = f->funcType->numRets; + c3_d *vals_out = u3a_calloc(n_out_w, sizeof(c3_d)); + void **valptrs_out = u3a_calloc(n_out_w, sizeof(void*)); + for (c3_w i = 0; i < n_out_w; i++) + { + valptrs_out[i] = &vals_out[i]; + } + M3Result result_tmp = m3_GetResults(f, + n_out_w, + (const void**)valptrs_out + ); + if (result_tmp) + { + fprintf(stderr, + ERR("function %s failed to get results: %s"), name_c, result_tmp + ); + u3m_bail(c3__fail); + } + yil = u3nc(0, + _atoms_from_stack(valptrs_out, n_out_w, f->funcType->types) + ); + u3a_free(valptrs_out); + u3a_free(vals_out); + } + if (u3_none != sat_u->resolution) + { + u3m_bail(c3__fail); + } + sat_u->resolution = yil; + u3a_free(name_c); + break; + } + + case west_call_ext: + { + if (1 == u3h(sat_u->resolution)) + { + // it's a new block, it's not yet resolved + // restore the frame + // + m3_SuspendStackPush64(runtime, tag_d); + m3_SuspendStackPushExtTag(runtime); + result = m3Err_ComputationBlock; + } + // else the block is resolved and sat_u->resolution holds the result + // + break; + } + + case west_try: + { + if (1 != u3h(sat_u->resolution)) + { + u3_noun frame = _pop_list(&sat_u->susp_list); + if (lst_try != u3h(frame)) + { + printf(ERR("wrong frame: try")); + u3m_bail(c3__fail); + } + if (0 == u3h(sat_u->resolution)) + { + u3_noun cont = u3t(frame); + u3_noun p_res = u3t(sat_u->resolution); + uw_arena* box_arena_frame = BoxArena; + uw_arena* code_arena_frame = CodeArena; + u3_noun monad_cont = uw_slam_check( + u3k(cont), + u3k(p_res), + sat_u->is_stateful + ); + BoxArena = box_arena_frame; + CodeArena = code_arena_frame; + u3z(sat_u->resolution); + sat_u->resolution = _reduce_monad(monad_cont, sat_u); + } + // if %2 then nothing to do, sat_u->resolution already holds %2 result + // + u3z(frame); + } + else + { + // we shouldn't be here + // + u3m_bail(c3__fail); + } + break; + } + + case west_catch_try: + { + if (1 != u3h(sat_u->resolution)) + { + u3_noun frame = _pop_list(&sat_u->susp_list); + if (lst_catch_try != u3h(frame)) + { + printf(ERR("wrong frame: catch-try")); + u3m_bail(c3__fail); + } + if (0 == u3h(sat_u->resolution)) + { + u3_noun cont = u3t(u3t(frame)); + u3_noun p_res = u3t(sat_u->resolution); + uw_arena* box_arena_frame = BoxArena; + uw_arena* code_arena_frame = CodeArena; + u3_noun monad_cont = uw_slam_check( + u3k(cont), + u3k(p_res), + sat_u->is_stateful + ); + BoxArena = box_arena_frame; + CodeArena = code_arena_frame; + u3z(sat_u->resolution); + sat_u->resolution = _reduce_monad(monad_cont, sat_u); + } + // %2 + // + else + { + u3_noun cont = u3t(u3t(frame)); + u3_noun monad_catch = u3h(u3t(frame)); + { // push on suspend stacks + m3_SuspendStackPush64(sat_u->wasm_module->runtime, west_catch_err); + m3_SuspendStackPushExtTag(runtime); + _push_list( + u3nc(lst_catch_err, u3k(cont)), + &sat_u->susp_list + ); + } + + u3_noun yil = _reduce_monad(u3k(monad_catch), sat_u); + + if (1 != u3h(yil)) + { // pop suspend stacks + m3_SuspendStackPopExtTag(runtime); + c3_d tag; + m3_SuspendStackPop64(sat_u->wasm_module->runtime, &tag); + if (tag != -1 && tag != west_catch_err) + { + printf(ERR("catch-err tag mismatch: %"PRIc3_d), tag); + u3m_bail(c3__fail); + } + u3_noun frame1 = _pop_list(&sat_u->susp_list); + if (lst_catch_err != u3h(frame1)) + { + printf(ERR("wrong frame: catch-err")); + u3m_bail(c3__fail); + } + u3z(frame1); + } + + if (2 == u3h(yil)) + { + // sat_u->resolution already has %2, do nothing + u3z(yil); + } + else if (1 == u3h(yil)) + { + u3z(sat_u->resolution); + sat_u->resolution = yil; + } + else // %0 + { + u3_noun p_res = u3t(yil); + uw_arena* box_arena_frame = BoxArena; + uw_arena* code_arena_frame = CodeArena; + u3_noun monad_cont = uw_slam_check( + u3k(cont), + u3k(p_res), + sat_u->is_stateful + ); + BoxArena = box_arena_frame; + CodeArena = code_arena_frame; + u3z(sat_u->resolution); + u3z(yil); + sat_u->resolution = _reduce_monad(monad_cont, sat_u); + } + } + u3z(frame); + } + else + { + // we shouldn't be here + // + u3m_bail(c3__fail); + } + break; + } + case west_catch_err: + { + if (1 != u3h(sat_u->resolution)) + { + u3_noun frame = _pop_list(&sat_u->susp_list); + if (lst_catch_err != u3h(frame)) + { + printf(ERR("wrong frame: catch-err")); + u3m_bail(c3__fail); + } + if (0 == u3h(sat_u->resolution)) + { + u3_noun cont = u3t(frame); + u3_noun p_res = u3t(sat_u->resolution); + uw_arena* box_arena_frame = BoxArena; + uw_arena* code_arena_frame = CodeArena; + u3_noun monad_cont = uw_slam_check( + u3k(cont), + u3k(p_res), + sat_u->is_stateful + ); + BoxArena = box_arena_frame; + CodeArena = code_arena_frame; + u3z(sat_u->resolution); + sat_u->resolution = _reduce_monad(monad_cont, sat_u); + } + // if %2 then nothing to do, sat_u->resolution already holds %2 result + // + u3z(frame); + } + else + { + // we shouldn't be here + // + u3m_bail(c3__fail); + } + break; + } + case west_link_wasm: + { + if (1 != u3h(sat_u->resolution)) + { + c3_d _sp_offset_d, func_idx_d; + m3_SuspendStackPop64(runtime, &func_idx_d); + m3_SuspendStackPop64(runtime, &_sp_offset_d); + if (2 == u3h(sat_u->resolution)) + { + u3z(sat_u->resolution); + sat_u->resolution = u3_none; + result = UrwasmArrowExit; + } + else // %0 + { + IM3Function f = runtime->modules->functions + func_idx_d; + uint64_t * _sp = (uint64_t *)(runtime->base + _sp_offset_d); + c3_w n_out = f->funcType->numRets; + c3_y* types = f->funcType->types; + void **valptrs_out = u3a_calloc(n_out, sizeof(void*)); + const char *mod = f->import.moduleUtf8; + const char *name = f->import.fieldUtf8; + for (c3_w i = 0; i < n_out; i++) + { + valptrs_out[i] = &_sp[i]; + } + c3_o pushed = _coins_to_stack( + u3t(sat_u->resolution), + valptrs_out, + n_out, + types + ); + + if (c3n == pushed) + { + printf(ERR("import result type mismatch: %s/%s"), mod, name); + result = "import result type mismatch"; + } + + u3z(sat_u->resolution); + sat_u->resolution = u3_none; + u3a_free(valptrs_out); + } + } + else + { + // we shouldn't be here + // + u3m_bail(c3__fail); + } + break; + } + } + + return result; +} + +// TRANSFERS sat->arrow_yil if m3Err_ComputationBlock is thrown +static const void * +_link_wasm_with_arrow_map( + IM3Runtime runtime, + IM3ImportContext _ctx, + uint64_t * _sp, + void * _mem +) +{ + const char *mod = _ctx->function->import.moduleUtf8; + const char *name = _ctx->function->import.fieldUtf8; + lia_state* sat_u = _ctx->userdata; + + u3_noun key = u3nc(u3i_string(mod), u3i_string(name)); + u3_weak arrow = u3kdb_get(u3k(sat_u->map), key); + if (u3_none == arrow) + { + fprintf(stderr, ERR("import not found: %s/%s"), mod, name); + return m3Err_functionImportMissing; + } + c3_w n_in = _ctx->function->funcType->numArgs; + c3_w n_out = _ctx->function->funcType->numRets; + c3_y* types = _ctx->function->funcType->types; + void **valptrs_in = u3a_calloc(n_in, sizeof(void*)); + for (c3_w i = 0; i < n_in; i++) + { + valptrs_in[i] = &_sp[i+n_out]; + } + void **valptrs_out = u3a_calloc(n_out, sizeof(void*)); + for (c3_w i = 0; i < n_out; i++) + { + valptrs_out[i] = &_sp[i]; + } + + u3_noun coin_wasm_list = _coins_from_stack(valptrs_in, n_in, (types+n_out)); + + { // push on suspend stacks + m3_SuspendStackPush64(runtime, (c3_d)((c3_y*)_sp - (c3_y*)runtime->base)); + c3_d func_idx_d = _ctx->function - runtime->modules->functions; + m3_SuspendStackPush64(runtime, func_idx_d); + m3_SuspendStackPush64(runtime, west_link_wasm); + m3_SuspendStackPushExtTag(runtime); + } + + uw_arena* box_arena_frame = BoxArena; + uw_arena* code_arena_frame = CodeArena; + u3_noun script = uw_slam_check(arrow, coin_wasm_list, sat_u->is_stateful); + BoxArena = box_arena_frame; + CodeArena = code_arena_frame; + u3_noun yil = _reduce_monad(script, sat_u); + + M3Result result = m3Err_none; + + if (1 != u3h(yil)) + { // pop suspend stacks + m3_SuspendStackPopExtTag(runtime); + c3_d tag; + m3_SuspendStackPop64(runtime, &tag); + if (tag != -1 && tag != west_link_wasm) + { + printf(ERR("west_link tag mismatch: %"PRIc3_d), tag); + u3m_bail(c3__fail); + } + m3_SuspendStackPop64(runtime, NULL); + m3_SuspendStackPop64(runtime, NULL); + + } + + if (1 == u3h(yil)) + { + if (sat_u->arrow_yil != u3_none) + { + u3z(yil); + result = "non-empty sat_u->arrow_yil on block"; + } + else + { + sat_u->arrow_yil = yil; + result = m3Err_ComputationBlock; // start suspending if not yet suspending + } + } + else if (2 == u3h(yil)) + { + u3z(yil); + result = UrwasmArrowExit; + } + else + { + c3_o pushed = _coins_to_stack(u3t(yil), valptrs_out, n_out, types); + u3z(yil); + if (c3n == pushed) + { + fprintf(stderr, ERR("import result type mismatch: %s/%s"), mod, name); + result = "import result type mismatch"; + } + } + u3a_free(valptrs_in); + u3a_free(valptrs_out); + return result; +} + +// key: [uw_run_m seed] +// stored nouns: +// $@ ~ :: tombstone value +// $: yield=* :: +2 +// queue=(list script) :: +6 +// box_arena=[buffer=octs padding=@] :: [[+56 +57] +29] +// memory=[buffer=octs max_stack_offset=@] :: [[+120 +121] +61] +// runtime_offset=@ :: +62 +// lia_shop=(list) :: +126 +// acc=* :: +254 +// susp_list=(list) :: +255 +// == +// arguments RETAINED +// on success allocates sat_u->wasm_module->runtime->memory.mallocated +// and initializes the arenas +static c3_t +_get_state(u3_noun hint, u3_noun seed, lia_state* sat_u) +{ + // u3_weak get = u3z_find_m(u3z_memo_keep, uw_run_m, seed); + // XX order of search matters (sentinel value ~ + // from previous invocation is closer to the home road) + // and u3z_find_m searches from home road down, which is the opposite + // of what we want + // + u3_noun key = u3z_key(uw_run_m, seed); + u3_weak get = u3z_find_up(key); + u3z(key); + + if (u3_none == get || u3_nul == get) + { + return 0; + } + else + { + u3_noun yil_previous; + u3_noun queue; + u3_noun p_box_buffer, q_box_buffer, pad_box; + u3_noun p_mem_buffer, q_mem_buffer, stack_offset; + u3_noun runtime_offset; + u3_noun lia_shop; + u3_noun acc; + u3_noun susp_list; + + if ( c3n == u3r_mean(get, + 2, &yil_previous, + 6, &queue, + 56, &p_box_buffer, + 57, &q_box_buffer, + 29, &pad_box, + 120, &p_mem_buffer, + 121, &q_mem_buffer, + 61, &stack_offset, + 62, &runtime_offset, + 126, &lia_shop, + 254, &acc, + 255, &susp_list, + 0) + ) + { + return u3m_bail(c3__fail); + } + c3_w box_len_w = (c3y == u3a_is_cat(p_box_buffer)) + ? p_box_buffer + : u3m_bail(c3__fail); + + c3_w pad_w = (c3y == u3a_is_cat(pad_box)) + ? pad_box + : u3m_bail(c3__fail); + + c3_w run_off_w = (c3y == u3a_is_cat(runtime_offset)) + ? runtime_offset + : u3m_bail(c3__fail); + + c3_w len_buf_w = (c3y == u3a_is_cat(p_mem_buffer)) + ? p_mem_buffer + : u3m_bail(c3__fail); + + c3_w stk_off_w = (c3y == u3a_is_cat(stack_offset)) + ? stack_offset + : u3m_bail(c3__fail); + + _uw_arena_init_size(BoxArena, box_len_w); + u3r_bytes(pad_w, box_len_w, BoxArena->buf_y, q_box_buffer); + _uw_arena_init(CodeArena); + + M3Result result; + IM3Runtime wasm3_runtime = (IM3Runtime)(BoxArena->buf_y + run_off_w); + wasm3_runtime->base = BoxArena->buf_y; + wasm3_runtime->base_transient = CodeArena->buf_y; + m3_RewritePointersRuntime(wasm3_runtime, BoxArena->buf_y, 0 /*is_store*/); + IM3Module wasm3_module = wasm3_runtime->modules; + c3_w n_imports = wasm3_module->numFuncImports; + + // make sure to not touch BoxArena + m3_SetAllocators(_calloc_bail, _free_bail, _realloc_bail); + m3_SetTransientAllocators(_calloc_code, _free_code, _realloc_code); + m3_SetMemoryAllocators(_calloc_bail, _free_bail, _realloc_bail); + + jmp_buf esc; + CodeArena->esc_u = &esc; + c3_i jmp_i; + + while (1) + { + wasm3_runtime->base_transient = CodeArena->buf_y; + + if (0 == (jmp_i = setjmp(esc))) + { + for (c3_w i = 0; i < n_imports; i++) + { + M3Function f = wasm3_module->functions[i]; + const char* mod = f.import.moduleUtf8; + const char* name = f.import.fieldUtf8; + + result = m3_LinkRawFunctionEx( + wasm3_module, mod, name, + NULL, &_link_wasm_with_arrow_map, + sat_u + ); + + if (result) + { + fprintf(stderr, ERR("link error: %s"), result); + return u3m_bail(c3__fail); + } + } + + result = m3_CompileModule(wasm3_module); + if (result) + { + fprintf(stderr, ERR("compilation error: %s"), result); + return u3m_bail(c3__fail); + } + + break; + } + else + { + if (jmp_i == c3__code) + { + _uw_arena_grow(CodeArena); + } + else + { + return u3m_bail(c3__fail); + } + continue; + } + } + + { + sat_u->yil_previous = u3k(yil_previous); + sat_u->queue = u3k(queue); + sat_u->wasm_module = wasm3_module; + sat_u->lia_shop = u3k(lia_shop); + sat_u->acc = u3k(acc); + // sat_u->map to be filled afterwards + // sat_u->match same + // sat_u->resolution same + sat_u->arrow_yil = u3_none; + sat_u->susp_list = u3k(susp_list); + M3MemoryHeader* mem = u3a_malloc(len_buf_w + sizeof(M3MemoryHeader)); + mem->runtime = wasm3_runtime; + mem->maxStack = BoxArena->buf_y + stk_off_w; + mem->length = len_buf_w; + u3r_bytes(0, len_buf_w, (u8*)(mem + 1), q_mem_buffer); + wasm3_runtime->memory.mallocated = mem; + } + + u3z(get); + + return 1; + } +} + +// arguments RETAINED, returned yield transfered. +// transfers sat_u->yil_previous if it is returned, and replaces +// the struct value with u3_none +static u3_noun +_apply_diff(u3_noun input_tag, u3_noun p_input, lia_state* sat_u) +{ + m3_SetAllocators(_calloc_bail, _free_bail, _realloc_bail); + m3_SetTransientAllocators(_calloc_bail, _free_bail, _realloc_bail); + m3_SetMemoryAllocators(u3a_calloc, u3a_free, u3a_realloc); + + if (input_tag == c3y) + { + if (sat_u->wasm_module->runtime->edge_suspend) + { + // appended new script but the computation is still suspended: + // add script to queue, return previous yield + if (sat_u->yil_previous == u3_none) + { + return u3m_bail(c3__fail); + } + sat_u->queue = u3kb_weld(sat_u->queue, u3nc(u3k(p_input), u3_nul)); // snoc + u3_noun yil = sat_u->yil_previous; + sat_u->yil_previous = u3_none; + return yil; + } + else + { + return _reduce_monad(u3k(p_input), sat_u); + } + } + else + { + if (!sat_u->wasm_module->runtime->edge_suspend) + { + // appended external call resolution but no block to resolve: + // snoc result to shop, return previous yield + if (sat_u->yil_previous == u3_none) + { + return u3m_bail(c3__fail); + } + sat_u->lia_shop = u3kb_weld(sat_u->lia_shop, u3nc(u3k(p_input), u3_nul)); // snoc + u3_noun yil = sat_u->yil_previous; + sat_u->yil_previous = u3_none; + return yil; + } + // else resume + IM3Runtime run_u = sat_u->wasm_module->runtime; + run_u->resume_external = _resume_callback; + run_u->userdata_resume = sat_u; + if (sat_u->resolution != u3_none) + { + return u3m_bail(c3__fail); + } + sat_u->resolution = u3nc(0, u3k(p_input)); + M3Result result = m3_Resume(run_u); + u3_noun yil; + if (result == m3Err_ComputationBlock) + { + yil = sat_u->resolution; + sat_u->resolution = u3_none; + if (yil == u3_none) + { + yil = sat_u->arrow_yil; + sat_u->arrow_yil = u3_none; + if (yil == u3_none) + { + return u3m_bail(c3__fail); + } + } + } + else if (_deterministic_trap(result)) + { + fprintf(stderr, WUT("function call trapped: %s"), result); // XX get name of entry function? + yil = u3nc(2, 0); + } + else if (result == m3Err_functionImportMissing) + { + return u3m_bail(c3__exit); + } + else if (result) + { + fprintf(stderr, ERR("resumption failed: %s"), result); + return u3m_bail(c3__fail); + } + else + { + yil = sat_u->resolution; + sat_u->resolution = u3_none; + if (yil == u3_none) + { + return u3m_bail(c3__fail); + } + + if (sat_u->queue != u3_none) + { + while (u3h(yil) == 0 && sat_u->queue != u3_nul) + { + u3z(yil); + u3_noun deferred_script = _pop_list(&sat_u->queue); + yil = _reduce_monad(deferred_script, sat_u); + } + } + } + + return yil; + } +} + +// try to save new state, replacing old state with a tombstone value +// frees wasm3 memory buffer, releases arenas +// RETAINS arguments, transfers sat_u->lia_shop/susp_list/queue and +// replaces them with u3_none if save is succesful +static void +_move_state( + lia_state* sat_u, + u3_noun seed_old, + u3_noun seed_new, + u3_noun hint, + u3_noun yil) +{ + if ( (c3__oust == hint) + || (2 == u3h(yil)) + || (c3__rand == hint && 0 == u3h(yil)) + ) + { + u3z_save_m(u3z_memo_keep, uw_run_m, seed_old, u3_nul); + IM3Runtime run_u = sat_u->wasm_module->runtime; + M3MemoryHeader* mem_u = run_u->memory.mallocated; + u3a_free(mem_u); + _uw_arena_free(CodeArena); + _uw_arena_free(BoxArena); + return; + } + + IM3Runtime run_u = sat_u->wasm_module->runtime; + M3MemoryHeader* mem_u = run_u->memory.mallocated; + c3_w stk_off_w = (u8*)mem_u->maxStack - BoxArena->buf_y; + if (c3n == u3a_is_cat(stk_off_w)) + { + u3m_bail(c3__fail); + } + + c3_w len_buf_w = mem_u->length; + if (c3n == u3a_is_cat(len_buf_w)) + { + u3m_bail(c3__fail); + } + + u3_atom q_buf = u3i_bytes(len_buf_w, (c3_y*)(mem_u + 1)); + + u3a_free(mem_u); + + m3_RewritePointersRuntime(run_u, BoxArena->buf_y, 1 /*is_store*/); + c3_w run_off_w = (c3_y*)run_u - BoxArena->buf_y; + if (c3n == u3a_is_cat(run_off_w)) + { + u3m_bail(c3__fail); + } + + _uw_arena_free(CodeArena); + + c3_w box_len_w = BoxArena->siz_w; + if (c3n == u3a_is_cat(box_len_w)) + { + u3m_bail(c3__fail); + } + + c3_y pad_y = BoxArena->pad_y; + + u3_atom q_box = u3i_slab_mint(&BoxArena->sab_u); + BoxArena->ini_t = 0; + + u3_noun stash = uw_octo( + u3k(yil), + sat_u->queue, + u3nc(u3nc(box_len_w, q_box), pad_y), + u3nc(u3nc(len_buf_w, q_buf), stk_off_w), + run_off_w, + sat_u->lia_shop, + u3k(sat_u->acc), // accumulator will be returned + sat_u->susp_list + ); + sat_u->lia_shop = u3_none; + sat_u->susp_list = u3_none; + sat_u->queue = u3_none; + + u3z_save_m(u3z_memo_keep, uw_run_m, seed_old, u3_nul); + + u3z_save_m(u3z_memo_keep, uw_run_m, seed_new, stash); + + u3z(stash); +} + +u3_weak +u3we_lia_run_v1(u3_noun cor) +{ +#ifndef URWASM_STATEFUL + return u3_none; +#else + + u3_noun hint = u3at(u3x_sam_7, cor); + if (c3__none == hint) + { + return u3_none; + } + + // strand: save %1, delete in other cases + c3_t rand_t = (c3__rand == hint); + + // agent: always save + c3_t gent_t = (c3__gent == hint); + + // oust: don't save + c3_t oust_t = (c3__oust == hint); + + // omit: run statelessly + c3_t omit_t = !(rand_t || gent_t || oust_t); + + #ifdef URWASM_SUBROAD + + // enter subroad, 4MB safety buffer + u3m_hate(1 << 20); + + #endif + + u3_noun ctx = u3at(RUN_CTX, cor); + u3r_mug(ctx); + + u3_noun input = u3at(u3x_sam_2, cor); + u3_noun seed = u3at(u3x_sam_6, cor); + + u3_noun runnable = uw_kick_nock(u3k(ctx), AX_RUNNABLE); + u3_noun arrows = KICK1(uw_kick_nock(u3k(ctx), AX_ARROWS)); + + u3_noun try_gate = uw_kick_nock(u3k(runnable), AX_TRY); + u3_noun try_gate_inner = KICK1(try_gate); + + u3_noun seed_new; + u3_noun input_tag, p_input; + u3x_cell(input, &input_tag, &p_input); + + if (input_tag == c3y) + { + u3_noun p_input_gate = u3nt(u3nc(0, 7), 0, u3k(p_input)); // =>(p.input |=(* +>)) + u3_noun past_new = uw_slam_nock( + u3k(try_gate_inner), + u3nc( + u3k(u3at(seed_past, seed)), + p_input_gate + ) + ); + seed_new = u3nq( + u3k(u3at(seed_module, seed)), + past_new, + u3k(u3at(seed_shop, seed)), + u3k(u3at(seed_import, seed)) + ); + } + else if (input_tag == c3n) + { + seed_new = u3nq( + u3k(u3at(seed_module, seed)), + u3k(u3at(seed_past, seed)), + u3nc(u3k(p_input), u3k(u3at(seed_shop, seed))), + u3k(u3at(seed_import, seed)) + ); + } + else + { + return u3m_bail(c3__fail); + } + + u3_noun call_script = KICK1(uw_kick_nock(u3k(arrows), AX_CALL)); + u3_noun memread_script = KICK1(uw_kick_nock(u3k(arrows), AX_MEMREAD)); + u3_noun memwrite_script = KICK1(uw_kick_nock(u3k(arrows), AX_MEMWRITE)); + u3_noun call_ext_script = KICK1(uw_kick_nock(u3k(arrows), AX_CALL_EXT)); + u3_noun global_set_script = KICK1(uw_kick_nock(u3k(arrows), AX_GLOBAL_SET)); + u3_noun global_get_script = KICK1(uw_kick_nock(u3k(arrows), AX_GLOBAL_GET)); + u3_noun mem_grow_script = KICK1(uw_kick_nock(u3k(arrows), AX_MEM_GROW)); + u3_noun mem_size_script = uw_kick_nock(u3k(arrows), AX_MEM_SIZE); + u3_noun get_acc_script = uw_kick_nock(u3k(arrows), AX_GET_ACC); + u3_noun set_acc_script = KICK1(uw_kick_nock(u3k(arrows), AX_SET_ACC)); + u3_noun get_all_glob_script = uw_kick_nock(u3k(arrows), AX_GET_ALL_GLOB); + u3_noun set_all_glob_script = KICK1(uw_kick_nock( arrows, AX_SET_ALL_GLOB)); + + u3_noun try_script = KICK1(try_gate_inner); + u3_noun catch_script = KICK2(uw_kick_nock(u3k(runnable), AX_CATCH)); + u3_noun return_script = KICK1(uw_kick_nock(u3k(runnable), AX_RETURN)); + u3_noun fail_script = uw_kick_nock( runnable, AX_FAIL); + + u3_noun call_bat = u3k(u3h(call_script)); + u3_noun memread_bat = u3k(u3h(memread_script)); + u3_noun memwrite_bat = u3k(u3h(memwrite_script)); + u3_noun call_ext_bat = u3k(u3h(call_ext_script)); + u3_noun try_bat = u3k(u3h(try_script)); + u3_noun catch_bat = u3k(u3h(catch_script)); + u3_noun return_bat = u3k(u3h(return_script)); + u3_noun fail_bat = u3k(u3h(fail_script)); + u3_noun global_set_bat = u3k(u3h(global_set_script)); + u3_noun global_get_bat = u3k(u3h(global_get_script)); + u3_noun mem_grow_bat = u3k(u3h(mem_grow_script)); + u3_noun mem_size_bat = u3k(u3h(mem_size_script)); + u3_noun get_acc_bat = u3k(u3h(get_acc_script)); + u3_noun set_acc_bat = u3k(u3h(set_acc_script)); + u3_noun get_all_glob_bat = u3k(u3h(get_all_glob_script)); + u3_noun set_all_glob_bat = u3k(u3h(set_all_glob_script)); + + u3_noun call_ctx = u3k(u3at(ARROW_CTX, call_script)); + u3_noun memread_ctx = u3k(u3at(ARROW_CTX, memread_script)); + u3_noun memwrite_ctx = u3k(u3at(ARROW_CTX, memwrite_script)); + u3_noun global_set_ctx = u3k(u3at(ARROW_CTX, global_set_script)); + u3_noun global_get_ctx = u3k(u3at(ARROW_CTX, global_get_script)); + u3_noun mem_grow_ctx = u3k(u3at(ARROW_CTX, mem_grow_script)); + u3_noun mem_size_ctx = u3k(u3at(MONAD_CTX, mem_size_script)); + u3_noun get_all_glob_ctx = u3k(u3at(MONAD_CTX, get_all_glob_script)); + u3_noun set_all_glob_ctx = u3k(u3at(ARROW_CTX, set_all_glob_script)); + + u3z(call_script); + u3z(memread_script); + u3z(memwrite_script); + u3z(call_ext_script); + u3z(try_script); + u3z(catch_script); + u3z(return_script); + u3z(fail_script); + u3z(global_set_script); + u3z(global_get_script); + u3z(mem_grow_script); + u3z(mem_size_script); + u3z(get_acc_script); + u3z(set_acc_script); + u3z(get_all_glob_script); + u3z(set_all_glob_script); + + match_data_struct match = { + call_bat, + memread_bat, + memwrite_bat, + call_ext_bat, + try_bat, + catch_bat, + return_bat, + fail_bat, + global_set_bat, + global_get_bat, + mem_grow_bat, + mem_size_bat, + get_acc_bat, + set_acc_bat, + get_all_glob_bat, + set_all_glob_bat, + // + call_ctx, + memread_ctx, + memwrite_ctx, + global_set_ctx, + global_get_ctx, + mem_grow_ctx, + mem_size_ctx, + get_all_glob_ctx, + set_all_glob_ctx, + }; + + lia_state sat; + + BoxArena = &sat.box_arena; + CodeArena = &sat.code_arena; + + u3_noun yil; + if (!omit_t) + { + sat.is_stateful = 1; + if (_get_state(hint, seed, &sat)) + { + sat.map = u3t(u3at(seed_import, seed)); + sat.match = &match; + sat.resolution = u3_none; + yil = _apply_diff(input_tag, p_input, &sat); + } + else + { // instantiate state with retries + u3_noun octs = u3at(seed_module, seed_new); + u3_noun p_octs, q_octs; + u3x_cell(octs, &p_octs, &q_octs); + c3_w bin_len_w = (c3y == u3a_is_cat(p_octs)) ? p_octs + : u3m_bail(c3__fail); + c3_y* bin_y; + M3Result result; + IM3Environment wasm3_env; + IM3Runtime wasm3_runtime = NULL; + IM3Module wasm3_module; + + _uw_arena_init(CodeArena); + _uw_arena_init(BoxArena); + + m3_SetAllocators(_calloc_box, _free_box, _realloc_box); + m3_SetTransientAllocators(_calloc_code, _free_code, _realloc_code); + m3_SetMemoryAllocators(u3a_calloc, u3a_free, u3a_realloc); + jmp_buf esc; + CodeArena->esc_u = BoxArena->esc_u = &esc; + c3_i jmp_i; + + while (1) + { + if (0 == (jmp_i = setjmp(esc))) + { + bin_y = _calloc_box(bin_len_w, 1); + u3r_bytes(0, bin_len_w, bin_y, u3x_atom(q_octs)); + + wasm3_env = m3_NewEnvironment(); + if (!wasm3_env) + { + fprintf(stderr, ERR("env is null")); + return u3m_bail(c3__fail); + } + + wasm3_runtime = m3_NewRuntime( + wasm3_env, + 1 << 21, + NULL, + 1 /* suspend */ + ); + if (!wasm3_runtime) + { + fprintf(stderr, ERR("runtime is null")); + return u3m_bail(c3__fail); + } + + result = m3_ParseModule(wasm3_env, &wasm3_module, bin_y, bin_len_w); + if (result) + { + fprintf(stderr, ERR("parse binary error: %s"), result); + return u3m_bail(c3__fail); + } + + result = m3_LoadModule(wasm3_runtime, wasm3_module); + if (result) + { + fprintf(stderr, ERR("load module error: %s"), result); + return u3m_bail(c3__fail); + } + + result = m3_ValidateModule(wasm3_module); + if (result) + { + fprintf(stderr, ERR("validation error: %s"), result); + return u3m_bail(c3__fail); + } + + c3_w n_imports = wasm3_module->numFuncImports; + u3_noun lia_shop = u3at(seed_shop, seed_new); + u3_noun import = u3at(seed_import, seed_new); + + u3_noun acc, map; + u3x_cell(import, &acc, &map); + { + sat.yil_previous = u3_none; + sat.queue = u3_nul; + sat.wasm_module = wasm3_module; + sat.lia_shop = u3qb_flop(lia_shop); + sat.acc = u3k(acc); + sat.map = map; + sat.match = &match; + sat.arrow_yil = u3_none; + sat.susp_list = u3_nul; + sat.resolution = u3_none; + } + + for (c3_w i = 0; i < n_imports; i++) + { + M3Function f = wasm3_module->functions[i]; + const char* mod = f.import.moduleUtf8; + const char* name = f.import.fieldUtf8; + + result = m3_LinkRawFunctionEx( + wasm3_module, mod, name, + NULL, &_link_wasm_with_arrow_map, + &sat + ); + + if (result) + { + fprintf(stderr, ERR("link error: %s"), result); + return u3m_bail(c3__fail); + } + } + + result = m3_CompileModule(wasm3_module); + if (result) + { + fprintf(stderr, ERR("compilation error: %s"), result); + return u3m_bail(c3__fail); + } + + break; + } + else + { + // escaped, grow arena and retry + if (wasm3_runtime) + { + u3a_free(wasm3_runtime->memory.mallocated); + } + + if (jmp_i == c3__box) + { + _uw_arena_grow(BoxArena); + _uw_arena_reset(CodeArena); + } + else if (jmp_i == c3__code) + { + _uw_arena_grow(CodeArena); + _uw_arena_reset(BoxArena); + } + else + { + return u3m_bail(c3__fail); + } + + continue; + } + } + + wasm3_runtime->base = BoxArena->buf_y; + wasm3_runtime->base_transient = CodeArena->buf_y; + // sanity check: struct and code allocators should not be used + // when running wasm + m3_SetAllocators(_calloc_bail, _free_bail, _realloc_bail); + m3_SetTransientAllocators(_calloc_bail, _free_bail, _realloc_bail); + + result = m3_RunStart(wasm3_module); + + if (result == m3Err_ComputationBlock) + { + yil = sat.arrow_yil; + sat.arrow_yil = u3_none; + if (yil == u3_none) + { + return u3m_bail(c3__fail); + } + } + else if (_deterministic_trap(result)) + { + fprintf(stderr, WUT("start function call trapped: %s"), result); + yil = u3nc(2, 0); + } + else if (result == m3Err_functionImportMissing) + { + return u3m_bail(c3__exit); + } + else if (result) + { + fprintf(stderr, ERR("start function failed: %s"), result); + return u3m_bail(c3__fail); + } + else + { + u3_noun monad = u3at(seed_past, seed_new); + yil = _reduce_monad(u3k(monad), &sat); + } + } + + _move_state(&sat, seed, seed_new, hint, yil); + } + else + { + sat.is_stateful = 0; + M3Result result; + IM3Environment wasm3_env; + IM3Runtime wasm3_runtime = NULL; + IM3Module wasm3_module; + u3_noun p_octs, q_octs; + + u3_noun octs = u3at(seed_module, seed_new); + u3x_cell(octs, &p_octs, &q_octs); + c3_w bin_len_w = (c3y == u3a_is_cat(p_octs)) ? p_octs + : u3m_bail(c3__fail); + c3_y* bin_y = u3r_bytes_alloc(0, bin_len_w, u3x_atom(q_octs)); + + m3_SetAllocators(u3a_calloc, u3a_free, u3a_realloc); + m3_SetTransientAllocators(u3a_calloc, u3a_free, u3a_realloc); + m3_SetMemoryAllocators(u3a_calloc, u3a_free, u3a_realloc); + + wasm3_env = m3_NewEnvironment(); + if (!wasm3_env) + { + fprintf(stderr, ERR("env is null")); + return u3m_bail(c3__fail); + } + + // 2MB stack + wasm3_runtime = m3_NewRuntime(wasm3_env, 1 << 21, NULL, 0 /* suspend */); + if (!wasm3_runtime) + { + fprintf(stderr, ERR("runtime is null")); + return u3m_bail(c3__fail); + } + + // save the stack to restore it later before calling m3_FreeRuntime + // since it is allocated and freed seperately; no need to do it in + // stateful code branch since there we will allocate and free + // whole arena + + void* stk_u = wasm3_runtime->stack; + + result = m3_ParseModule(wasm3_env, &wasm3_module, bin_y, bin_len_w); + if (result) + { + fprintf(stderr, ERR("parse binary error: %s"), result); + return u3m_bail(c3__fail); + } + + result = m3_LoadModule(wasm3_runtime, wasm3_module); + if (result) + { + fprintf(stderr, ERR("load module error: %s"), result); + return u3m_bail(c3__fail); + } + + result = m3_ValidateModule(wasm3_module); + if (result) + { + fprintf(stderr, ERR("validation error: %s"), result); + return u3m_bail(c3__fail); + } + + c3_w n_imports = wasm3_module->numFuncImports; + u3_noun lia_shop = u3at(seed_shop, seed_new); + u3_noun import = u3at(seed_import, seed_new); + + u3_noun acc, map; + u3x_cell(import, &acc, &map); + { + sat.yil_previous = u3_none; + sat.queue = u3_none; + sat.wasm_module = wasm3_module; + sat.lia_shop = u3qb_flop(lia_shop); + sat.acc = u3k(acc); + sat.map = map; + sat.match = &match; + sat.arrow_yil = u3_none; + sat.susp_list = u3_none; + sat.resolution = u3_none; + } + + for (c3_w i = 0; i < n_imports; i++) + { + M3Function f = wasm3_module->functions[i]; + const char* mod = f.import.moduleUtf8; + const char* name = f.import.fieldUtf8; + + result = m3_LinkRawFunctionEx( + wasm3_module, mod, name, + NULL, &_link_wasm_with_arrow_map, + &sat + ); + + if (result) + { + fprintf(stderr, ERR("link error: %s"), result); + return u3m_bail(c3__fail); + } + } + + // don't compile module since here we don't care about the ordering + // of code pages when we don't suspend, the functions will + // get compiled on call + // + + result = m3_RunStart(wasm3_module); + + if (result == m3Err_ComputationBlock) + { + yil = sat.arrow_yil; + sat.arrow_yil = u3_none; + if (yil == u3_none) + { + return u3m_bail(c3__fail); + } + } + else if (_deterministic_trap(result)) + { + fprintf(stderr, WUT("start function call trapped: %s"), result); + yil = u3nc(2, 0); + } + else if (result == m3Err_functionImportMissing) + { + return u3m_bail(c3__exit); + } + else if (result) + { + fprintf(stderr, ERR("start function failed: %s"), result); + return u3m_bail(c3__fail); + } + else + { + u3_noun monad = u3at(seed_past, seed_new); + yil = _reduce_monad(u3k(monad), &sat); + } + + wasm3_runtime->stack = stk_u; + m3_FreeRuntime(wasm3_runtime); + m3_FreeEnvironment(wasm3_env); + u3a_free(bin_y); + } + + // any of these could be u3_none + // + { + u3z(sat.lia_shop); + u3z(sat.susp_list); + u3z(sat.yil_previous); + u3z(sat.queue); + } + + u3z(match.call_bat); + u3z(match.memread_bat); + u3z(match.memwrite_bat); + u3z(match.call_ext_bat); + u3z(match.try_bat); + u3z(match.catch_bat); + u3z(match.return_bat); + u3z(match.fail_bat); + u3z(match.global_set_bat); + u3z(match.global_get_bat); + u3z(match.mem_grow_bat); + u3z(match.mem_size_bat); + + u3z(match.call_ctx); + u3z(match.memread_ctx); + u3z(match.memwrite_ctx); + u3z(global_set_ctx); + u3z(global_get_ctx); + u3z(mem_grow_ctx); + u3z(mem_size_ctx); + + #ifdef URWASM_SUBROAD + // exit subroad, copying the result + u3_noun pro = u3m_love(u3nc(u3nc(yil, sat.acc), seed_new)); + #else + u3_noun pro = u3nc(u3nc(yil, sat.acc), seed_new); + #endif + + return pro; + +#endif // URWASM_STATEFUL +} + + +u3_weak +u3we_lia_run_once(u3_noun cor) +{ + if (c3__none == u3at(u3x_sam_6, cor)) + { + return u3_none; + } + + #ifdef URWASM_SUBROAD + // enter subroad, 4MB safety buffer + u3m_hate(1 << 20); + #endif + + u3_noun ctx = u3at(ONCE_CTX, cor); + u3r_mug(ctx); + + u3_noun runnable = uw_kick_nock(u3k(ctx), AX_RUNNABLE); + u3_noun arrows = KICK1(uw_kick_nock(u3k(ctx), AX_ARROWS)); + + u3_noun call_script = KICK1(uw_kick_nock(u3k(arrows), AX_CALL)); + u3_noun memread_script = KICK1(uw_kick_nock(u3k(arrows), AX_MEMREAD)); + u3_noun memwrite_script = KICK1(uw_kick_nock(u3k(arrows), AX_MEMWRITE)); + u3_noun call_ext_script = KICK1(uw_kick_nock(u3k(arrows), AX_CALL_EXT)); + u3_noun global_set_script = KICK1(uw_kick_nock(u3k(arrows), AX_GLOBAL_SET)); + u3_noun global_get_script = KICK1(uw_kick_nock(u3k(arrows), AX_GLOBAL_GET)); + u3_noun mem_grow_script = KICK1(uw_kick_nock(u3k(arrows), AX_MEM_GROW)); + u3_noun mem_size_script = uw_kick_nock(u3k(arrows), AX_MEM_SIZE); + u3_noun get_acc_script = uw_kick_nock(u3k(arrows), AX_GET_ACC); + u3_noun set_acc_script = KICK1(uw_kick_nock(u3k(arrows), AX_SET_ACC)); + u3_noun get_all_glob_script = uw_kick_nock(u3k(arrows), AX_GET_ALL_GLOB); + u3_noun set_all_glob_script = KICK1(uw_kick_nock( arrows, AX_SET_ALL_GLOB)); + + u3_noun try_script = KICK2(uw_kick_nock(u3k(runnable), AX_TRY)); + u3_noun catch_script = KICK2(uw_kick_nock(u3k(runnable), AX_CATCH)); + u3_noun return_script = KICK1(uw_kick_nock(u3k(runnable), AX_RETURN)); + u3_noun fail_script = uw_kick_nock( runnable, AX_FAIL); + + u3_noun call_bat = u3k(u3h(call_script)); + u3_noun memread_bat = u3k(u3h(memread_script)); + u3_noun memwrite_bat = u3k(u3h(memwrite_script)); + u3_noun call_ext_bat = u3k(u3h(call_ext_script)); + u3_noun try_bat = u3k(u3h(try_script)); + u3_noun catch_bat = u3k(u3h(catch_script)); + u3_noun return_bat = u3k(u3h(return_script)); + u3_noun fail_bat = u3k(u3h(fail_script)); + u3_noun global_set_bat = u3k(u3h(global_set_script)); + u3_noun global_get_bat = u3k(u3h(global_get_script)); + u3_noun mem_grow_bat = u3k(u3h(mem_grow_script)); + u3_noun mem_size_bat = u3k(u3h(mem_size_script)); + u3_noun get_acc_bat = u3k(u3h(get_acc_script)); + u3_noun set_acc_bat = u3k(u3h(set_acc_script)); + u3_noun get_all_glob_bat = u3k(u3h(get_all_glob_script)); + u3_noun set_all_glob_bat = u3k(u3h(set_all_glob_script)); + + u3_noun call_ctx = u3k(u3at(ARROW_CTX, call_script)); + u3_noun memread_ctx = u3k(u3at(ARROW_CTX, memread_script)); + u3_noun memwrite_ctx = u3k(u3at(ARROW_CTX, memwrite_script)); + u3_noun global_set_ctx = u3k(u3at(ARROW_CTX, global_set_script)); + u3_noun global_get_ctx = u3k(u3at(ARROW_CTX, global_get_script)); + u3_noun mem_grow_ctx = u3k(u3at(ARROW_CTX, mem_grow_script)); + u3_noun mem_size_ctx = u3k(u3at(MONAD_CTX, mem_size_script)); + u3_noun get_all_glob_ctx = u3k(u3at(MONAD_CTX, get_all_glob_script)); + u3_noun set_all_glob_ctx = u3k(u3at(ARROW_CTX, set_all_glob_script)); + + u3z(call_script); + u3z(memread_script); + u3z(memwrite_script); + u3z(call_ext_script); + u3z(try_script); + u3z(catch_script); + u3z(return_script); + u3z(fail_script); + u3z(global_set_script); + u3z(global_get_script); + u3z(mem_grow_script); + u3z(mem_size_script); + u3z(get_acc_script); + u3z(set_acc_script); + u3z(get_all_glob_script); + u3z(set_all_glob_script); + + + match_data_struct match = { + call_bat, + memread_bat, + memwrite_bat, + call_ext_bat, + try_bat, + catch_bat, + return_bat, + fail_bat, + global_set_bat, + global_get_bat, + mem_grow_bat, + mem_size_bat, + get_acc_bat, + set_acc_bat, + get_all_glob_bat, + set_all_glob_bat, + // + call_ctx, + memread_ctx, + memwrite_ctx, + global_set_ctx, + global_get_ctx, + mem_grow_ctx, + mem_size_ctx, + get_all_glob_ctx, + set_all_glob_ctx, + }; + + u3_noun octs = u3at(u3x_sam_4, cor); + u3_noun p_octs, q_octs; + u3x_cell(octs, &p_octs, &q_octs); + + c3_w bin_len_w = (c3y == u3a_is_cat(p_octs)) ? p_octs : u3m_bail(c3__fail); + c3_y* bin_y = u3r_bytes_alloc(0, bin_len_w, u3x_atom(q_octs)); + + M3Result result; + + m3_SetAllocators(u3a_calloc, u3a_free, u3a_realloc); + m3_SetTransientAllocators(u3a_calloc, u3a_free, u3a_realloc); + m3_SetMemoryAllocators(u3a_calloc, u3a_free, u3a_realloc); + + IM3Environment wasm3_env = m3_NewEnvironment(); + if (!wasm3_env) + { + fprintf(stderr, ERR("env is null")); + return u3m_bail(c3__fail); + } + + // 2MB stack + IM3Runtime wasm3_runtime = m3_NewRuntime( + wasm3_env, + 1 << 21, + NULL, + 0 /* suspend */ + ); + if (!wasm3_runtime) + { + fprintf(stderr, ERR("runtime is null")); + return u3m_bail(c3__fail); + } + + void* stk_u = wasm3_runtime->stack; + + IM3Module wasm3_module; + result = m3_ParseModule(wasm3_env, &wasm3_module, bin_y, bin_len_w); + if (result) + { + fprintf(stderr, ERR("parse binary error: %s"), result); + return u3m_bail(c3__fail); + } + + result = m3_LoadModule(wasm3_runtime, wasm3_module); + if (result) + { + fprintf(stderr, ERR("load module error: %s"), result); + return u3m_bail(c3__fail); + } + + result = m3_ValidateModule(wasm3_module); + if (result) + { + fprintf(stderr, ERR("validation error: %s"), result); + return u3m_bail(c3__fail); + } + + c3_w n_imports = wasm3_module->numFuncImports; + u3_noun monad = u3at(u3x_sam_7, cor); + u3_noun import = u3at(u3x_sam_5, cor); + + u3_noun acc, map; + u3x_cell(import, &acc, &map); + + lia_state sat = { + wasm3_module, + u3_nul, + u3k(acc), + map, + &match, + u3_none, + u3_none, + u3_none + }; + + sat.is_stateful = 0; + + for (c3_w i = 0; i < n_imports; i++) + { + M3Function f = wasm3_module->functions[i]; + const char * mod = f.import.moduleUtf8; + const char * name = f.import.fieldUtf8; + + result = m3_LinkRawFunctionEx( + wasm3_module, mod, name, + NULL, &_link_wasm_with_arrow_map, + (void *)&sat + ); + + if (result) + { + fprintf(stderr, ERR("link error: %s"), result); + return u3m_bail(c3__fail); + } + } + + u3_noun yil; + + result = m3_RunStart(wasm3_module); + + if (result == m3Err_ComputationBlock) + { + yil = sat.arrow_yil; + sat.arrow_yil = u3_none; + if (yil == u3_none) + { + return u3m_bail(c3__fail); + } + } + else if (_deterministic_trap(result)) + { + fprintf(stderr, WUT("start function call trapped: %s"), result); + yil = u3nc(2, 0); + } + else if (result == m3Err_functionImportMissing) + { + return u3m_bail(c3__exit); + } + else if (result) + { + fprintf(stderr, ERR("start function failed: %s"), result); + return u3m_bail(c3__fail); + } + else + { + yil = _reduce_monad(u3k(monad), &sat); + } + + wasm3_runtime->stack = stk_u; + m3_FreeRuntime(wasm3_runtime); + m3_FreeEnvironment(wasm3_env); + + u3a_free(bin_y); + + u3z(match.call_bat); + u3z(match.memread_bat); + u3z(match.memwrite_bat); + u3z(match.call_ext_bat); + u3z(match.try_bat); + u3z(match.catch_bat); + u3z(match.return_bat); + u3z(match.fail_bat); + u3z(match.global_set_bat); + u3z(match.global_get_bat); + u3z(match.mem_grow_bat); + u3z(match.mem_size_bat); + u3z(match.get_acc_bat); + u3z(match.set_acc_bat); + u3z(match.get_all_glob_bat); + u3z(match.set_all_glob_bat); + + u3z(match.call_ctx); + u3z(match.memread_ctx); + u3z(match.memwrite_ctx); + u3z(global_set_ctx); + u3z(global_get_ctx); + u3z(mem_grow_ctx); + u3z(mem_size_ctx); + u3z(get_all_glob_ctx); + u3z(set_all_glob_ctx); + + #ifdef URWASM_SUBROAD + // exit subroad, copying the result + u3_noun pro = u3m_love(u3nc(yil, sat.acc)); + #else + u3_noun pro = u3nc(yil, sat.acc); + #endif + + return pro; +} diff --git a/vere/pkg/noun/jets/e/zlib.c b/vere/pkg/noun/jets/e/zlib.c new file mode 100644 index 0000000..89937df --- /dev/null +++ b/vere/pkg/noun/jets/e/zlib.c @@ -0,0 +1,225 @@ +/// @file + +#include +#include +#include "zlib.h" + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static void* +zlib_malloc(voidpf opaque, uInt items, uInt size) +{ + size_t len = items * size; + void* result = u3a_malloc(len); + return result; +} + +static void +zlib_free(voidpf opaque, voidpf address) +{ + u3a_free(address); +} + +u3_noun +_decompress(u3_atom pos, u3_noun octs, int window_bits) +{ + u3_atom p_octs = u3h(octs); + u3_atom q_octs = u3t(octs); + + c3_w p_octs_w, pos_w; + + if ( c3n == u3r_safe_word(p_octs, &p_octs_w) ) { + return u3_none; + } + if (c3n == u3r_safe_word(pos, &pos_w)) { + return u3_none; + } + + c3_w len_w = u3r_met(3, q_octs); + + int leading_zeros = 0; + + if (p_octs_w > len_w) { + leading_zeros = p_octs_w - len_w; + } + else { + len_w = p_octs_w; + } + + // Bytestream exhausted + // + if (pos_w >= len_w) { + return u3_none; + } + + c3_y* input; + + if (c3y == u3a_is_cat(q_octs)) { + input = (c3_y*)&q_octs + pos_w; + } + else { + u3a_atom* vat_u = u3a_to_ptr(q_octs); + input = (c3_y*)vat_u->buf_w + pos_w; + } + + int ret; + z_stream strm; + + if (pos_w < len_w) { + strm.avail_in = (len_w - pos_w); + } + else { + strm.avail_in = 0; + } + + strm.zalloc = zlib_malloc; + strm.zfree = zlib_free; + strm.opaque = Z_NULL; + strm.next_in = input; + + ret = inflateInit2(&strm, window_bits); + + if (ret != Z_OK) { + u3l_log("%i", ret); + u3l_log("%s", strm.msg); + return u3m_bail(c3__exit); + } + + c3_w chunk_w = len_w / 10; + u3i_slab sab_u; + +#define INIT_SZ 16384 + strm.avail_out = INIT_SZ; + u3i_slab_init(&sab_u, 3, INIT_SZ); + strm.next_out = sab_u.buf_y; + + void* this_address = strm.next_out; + +#define ZEROS_SZ 256 + c3_y zeros[ZEROS_SZ]; + + if (leading_zeros) { + memset(zeros, 0, ZEROS_SZ); + } + + while ((ret = inflate(&strm, Z_FINISH)) == Z_BUF_ERROR) { + + // Output exhausted: reallocate + // + if (strm.avail_out == 0) { + strm.avail_out = chunk_w; + + u3i_slab_grow(&sab_u, 3, strm.total_out + chunk_w); + strm.next_out = sab_u.buf_y + strm.total_out; + } + + // Input exhausted: input leading zeros? + // + if (strm.avail_in == 0) { + + if (leading_zeros) { + // Position in the stream exceeded atom bytes, + // but is still below stream length + // + if (strm.total_in + pos_w >= len_w + && strm.total_in + pos_w < p_octs_w) { + + c3_w rem_w = p_octs_w - (strm.total_in + pos_w); + strm.next_in = zeros; + + if (rem_w > ZEROS_SZ) { + strm.avail_in = ZEROS_SZ; + } + else { + strm.avail_in = rem_w; + } + } + else { + u3l_log("%i", ret); + u3l_log("%s", strm.msg); + inflateEnd(&strm); + u3i_slab_free(&sab_u); + return u3m_bail(c3__exit); + } + } + else { + u3l_log("%i", ret); + u3l_log("%s", strm.msg); + inflateEnd(&strm); + u3i_slab_free(&sab_u); + return u3m_bail(c3__exit); + } + } + } + if (ret != Z_STREAM_END) { + u3l_log("%i", ret); + u3l_log("%s", strm.msg); + inflateEnd(&strm); + u3i_slab_free(&sab_u); + return u3m_bail(c3__exit); + } + ret = inflateEnd(&strm); + + if (ret != Z_OK) { + u3l_log("%i", ret); + u3l_log("%s", strm.msg); + u3i_slab_free(&sab_u); + return u3m_bail(c3__exit); + } + + u3_noun decompressed_octs = u3nc(strm.total_out, u3i_slab_mint(&sab_u)); + u3_noun new_pos = pos_w + strm.total_in; + u3_noun new_stream = u3nc(u3i_word(new_pos), u3k(octs)); + + return u3nc(decompressed_octs, new_stream); +} + +u3_noun +u3qe_decompress_gzip(u3_atom pos, u3_noun octs) +{ + return _decompress(pos, octs, 31); +} +u3_noun +u3qe_decompress_zlib(u3_atom pos, u3_noun octs) +{ + return _decompress(pos, octs, 15); +} + +u3_noun +u3we_decompress_gzip(u3_noun cor) +{ + u3_atom pos; + u3_noun octs; + + u3_noun a = u3r_at(u3x_sam, cor); + u3x_cell(a, &pos, &octs); + + if(_(u3a_is_atom(pos)) && _(u3a_is_cell(octs))) { + return u3qe_decompress_gzip(pos, octs); + } + + else { + return u3m_bail(c3__exit); + } +} + +u3_noun +u3we_decompress_zlib(u3_noun cor) +{ + u3_atom pos; + u3_noun octs; + + u3_noun a = u3r_at(u3x_sam, cor); + u3x_cell(a, &pos, &octs); + + if(_(u3a_is_atom(pos)) && _(u3a_is_cell(octs))) { + return u3qe_decompress_zlib(pos, octs); + } + + else { + return u3m_bail(c3__exit); + } +} diff --git a/vere/pkg/noun/jets/f/cell.c b/vere/pkg/noun/jets/f/cell.c new file mode 100644 index 0000000..0a818f2 --- /dev/null +++ b/vere/pkg/noun/jets/f/cell.c @@ -0,0 +1,29 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qf_cell(u3_noun hed, + u3_noun tal) + { + if ( (c3__void == hed) || (c3__void == tal) ) { + return c3__void; + } else { + return u3nt(c3__cell, u3k(hed), u3k(tal)); + } + } + u3_noun + u3wf_cell(u3_noun cor) + { + u3_noun hed, tal; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &hed, u3x_sam_3, &tal, 0) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_cell(hed, tal); + } + } diff --git a/vere/pkg/noun/jets/f/comb.c b/vere/pkg/noun/jets/f/comb.c new file mode 100644 index 0000000..1dfe794 --- /dev/null +++ b/vere/pkg/noun/jets/f/comb.c @@ -0,0 +1,70 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qf_comb(u3_noun mal, + u3_noun buz) + { + if ( (u3_none == mal) || (u3_none == buz) ) { + return u3_none; + } + else { + u3_noun p_mal, q_mal, p_buz, q_buz, pp_buz, pq_buz; + + if ( (c3y == u3r_p(mal, 0, &p_mal)) && (0 != p_mal) ) { + if ( (c3y == u3r_p(buz, 0, &p_buz)) && (0 != p_buz) ) { + return u3nc(0, + u3qc_peg(p_mal, p_buz)); + } + else if ( c3y == u3r_pq(buz, 2, &p_buz, &q_buz) && + c3y == u3r_p(p_buz, 0, &pp_buz) && + c3y == u3r_p(q_buz, 0, &pq_buz) ) + { + return u3nt(2, + u3nc(0, + u3qc_peg(p_mal, pp_buz)), + u3nc(0, + u3qc_peg(p_mal, pq_buz))); + } + else return u3nt(7, + u3k(mal), + u3k(buz)); + } +#if 1 + else if ( (c3y == u3r_bush(mal, &p_mal, &q_mal)) && + (c3y == u3du(p_mal)) && + (c3y == u3du(q_mal)) && + (0 == u3h(q_mal)) && + (1 == u3t(q_mal)) ) + { + return u3nt(8, + u3k(p_mal), + u3k(buz)); + } +#endif + else if ( (c3y == u3r_p(buz, 0, &p_buz)) && + (c3y == u3r_sing(1, p_buz)) ) + { + return u3k(mal); + } + else return u3nt(7, + u3k(mal), + u3k(buz)); + } + } + u3_noun + u3wf_comb(u3_noun cor) + { + u3_noun mal, buz; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &mal, u3x_sam_3, &buz, 0) ) { + return u3_none; + } else { + return u3qf_comb(mal, buz); + } + } diff --git a/vere/pkg/noun/jets/f/cons.c b/vere/pkg/noun/jets/f/cons.c new file mode 100644 index 0000000..45719c1 --- /dev/null +++ b/vere/pkg/noun/jets/f/cons.c @@ -0,0 +1,54 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qf_cons(u3_noun vur, + u3_noun sed) + { + u3_noun p_vur, p_sed; + + if ( c3y == u3r_p(vur, 1, &p_vur) && + c3y == u3r_p(sed, 1, &p_sed) ) { + return u3nt(1, + u3k(p_vur), + u3k(p_sed)); + } +#if 0 + else if ( c3y == u3r_p(vur, 0, &p_vur) && + c3y == u3r_p(sed, 0, &p_sed) && + !(c3y == u3r_sing(1, p_vur)) && + !(c3y == u3r_sing(p_vur, p_sed)) && + (0 == u3r_nord(p_vur, p_sed)) ) + { + u3_atom fub = u3qa_div(p_vur, 2); + u3_atom nof = u3qa_div(p_sed, 2); + + if ( c3y == u3r_sing(fub, nof) ) { + u3z(nof); + + return u3nc(0, fub); + } + else { + u3z(fub); + u3z(nof); + } + } +#endif + return u3nc(u3k(vur), u3k(sed)); + } + u3_noun + u3wf_cons(u3_noun cor) + { + u3_noun vur, sed; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &vur, u3x_sam_3, &sed, 0) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_cons(vur, sed); + } + } diff --git a/vere/pkg/noun/jets/f/core.c b/vere/pkg/noun/jets/f/core.c new file mode 100644 index 0000000..ca7e93d --- /dev/null +++ b/vere/pkg/noun/jets/f/core.c @@ -0,0 +1,118 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qf_core(u3_noun pac, + u3_noun con) + { + if ( (c3__void == pac) ) { + return c3__void; + } else { + { + u3_noun p_con, q_con, r_con, hr_con, tr_con; + + u3r_trel(con, &p_con, &q_con, &r_con); + u3r_cell(r_con, &hr_con, &tr_con); + if ( (c3y == u3du(hr_con)) && + (u3_nul == u3h(hr_con)) && + (u3_nul == u3t(hr_con)) ) + { + u3l_log("old core"); + abort(); + } + } + return u3nt(c3__core, u3k(pac), u3k(con)); + } + } + u3_noun + u3wf_core(u3_noun cor) + { + u3_noun pac, con; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &pac, u3x_sam_3, &con, 0) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_core(pac, con); + } + } + +#if 0 + static void + _fork_test(const c3_c *lab_c, u3_noun set) + { + if ( u3_nul == set ) { + return; + } else { + u3_noun n_set, l_set, r_set; + + u3x_trel(set, &n_set, &l_set, &r_set); + + u3qf_test(lab_c, n_set); + _fork_test(lab_c, l_set); + _fork_test(lab_c, r_set); + } + } + void + u3qf_test(const c3_c* lab_c, u3_noun sut) + { + u3_noun p_sut, q_sut; + + if ( c3n == u3du(sut) ) switch ( sut ) { + default: u3m_bail(c3__fail); return; + + case c3__noun: + { + return; + } + case c3__void: + { + return; + } + } + else switch ( u3h(sut) ) { + default: u3m_bail(c3__fail); return; + + case c3__atom: u3x_cell(u3t(sut), &p_sut, &q_sut); + { + return; + } + case c3__cell: u3x_cell(u3t(sut), &p_sut, &q_sut); + { + u3qf_test(lab_c, p_sut); + u3qf_test(lab_c, q_sut); + return; + } + case c3__core: u3x_cell(u3t(sut), &p_sut, &q_sut); + { + u3qf_test(lab_c, p_sut); + return; + } + case c3__face: u3x_cell(u3t(sut), &p_sut, &q_sut); + { + u3qf_test(lab_c, q_sut); + return; + } + case c3__fork: p_sut = u3t(sut); + { + _fork_test(lab_c, p_sut); + return; + } + case c3__hint: u3x_cell(u3t(sut), &p_sut, &q_sut); + { + u3qf_test(lab_c, q_sut); + u3qf_test(lab_c, u3h(p_sut)); + return; + } + case c3__hold: u3x_cell(u3t(sut), &p_sut, &q_sut); + { + u3qf_test(lab_c, p_sut); + return; + } + } + } +#endif diff --git a/vere/pkg/noun/jets/f/face.c b/vere/pkg/noun/jets/f/face.c new file mode 100644 index 0000000..7e689e7 --- /dev/null +++ b/vere/pkg/noun/jets/f/face.c @@ -0,0 +1,31 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qf_face(u3_noun sag, + u3_noun tip) + { + if ( c3__void == tip ) { + return c3__void; + } + else return u3nt(c3__face, + u3k(sag), + u3k(tip)); + } + u3_noun + u3wf_face(u3_noun cor) + { + u3_noun sag, tip; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &sag, u3x_sam_3, &tip, 0) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_face(sag, tip); + } + } + diff --git a/vere/pkg/noun/jets/f/fine.c b/vere/pkg/noun/jets/f/fine.c new file mode 100644 index 0000000..2c5a85c --- /dev/null +++ b/vere/pkg/noun/jets/f/fine.c @@ -0,0 +1,35 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qf_fine(u3_noun fuv, + u3_noun lup, + u3_noun mar) + { + if ( (c3__void == lup) || (c3__void == mar) ) { + return c3__void; + } else { + return u3nq(c3__fine, + u3k(fuv), + u3k(lup), + u3k(mar)); + } + } + u3_noun + u3wf_fine(u3_noun cor) + { + u3_noun fuv, lup, mar; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &fuv, + u3x_sam_6, &lup, + u3x_sam_7, &mar, 0) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_fine(fuv, lup, mar); + } + } diff --git a/vere/pkg/noun/jets/f/fitz.c b/vere/pkg/noun/jets/f/fitz.c new file mode 100644 index 0000000..b1c2a5d --- /dev/null +++ b/vere/pkg/noun/jets/f/fitz.c @@ -0,0 +1,75 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +static u3_noun +_fitz_fiz(u3_noun yaz, + u3_noun wix) +{ + c3_w yaz_w = u3r_met(3, yaz); + c3_w wix_w = u3r_met(3, wix); + c3_y yaz_y, wix_y; + + yaz_y = (0 == yaz_w) ? 0 : u3r_byte((yaz_w - 1), yaz); + if ( (yaz_y < 'A') || (yaz_y > 'Z') ) yaz_y = 0; + + wix_y = (0 == wix_w) ? 0 : u3r_byte((wix_w - 1), wix); + if ( (wix_y < 'A') || (wix_y > 'Z') ) wix_y = 0; + + if ( yaz_y && wix_y ) { + if ( wix_y > yaz_y ) { + return c3n; + } + } + + return c3y; +} + +u3_noun +u3qf_fitz(u3_noun yaz, + u3_noun wix) +{ + c3_w yet_w = u3r_met(3, yaz); + c3_w wet_w = u3r_met(3, wix); + + c3_w i_w, met_w = c3_min(yet_w, wet_w); + + if ( c3n == _fitz_fiz(yaz, wix) ) { + return c3n; + } + for ( i_w = 0; i_w < met_w; i_w++ ) { + c3_y yaz_y = u3r_byte(i_w, yaz); + c3_y wix_y = u3r_byte(i_w, wix); + + if ( (i_w == (yet_w - 1)) && (yaz_y >= 'A') && (yaz_y <= 'Z')) { + return c3y; + } + + if ( (i_w == (wet_w - 1)) && (wix_y >= 'A') && (wix_y <= 'Z')) { + return c3y; + } + + if ( yaz_y != wix_y ) { + return c3n; + } + } + return c3y; +} + +u3_noun +u3wf_fitz(u3_noun cor) +{ + u3_noun yaz, wix; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &yaz, u3x_sam_3, &wix, 0)) || + (c3n == u3ud(yaz)) || + (c3n == u3ud(wix)) ) + { + return u3m_bail(c3__fail); + } else { + return u3qf_fitz(yaz, wix); + } +} diff --git a/vere/pkg/noun/jets/f/flan.c b/vere/pkg/noun/jets/f/flan.c new file mode 100644 index 0000000..319e1f0 --- /dev/null +++ b/vere/pkg/noun/jets/f/flan.c @@ -0,0 +1,47 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qf_flan(u3_noun bos, + u3_noun nif) + { + if ( c3y == u3r_sing(bos, nif) ) { + return u3k(bos); + } + if ( c3y == u3r_sing(1, u3h(bos)) ) { + if ( (u3_nul == u3t(bos)) ) { + return u3k(nif); + } + else return u3k(bos); + } + else { + if ( c3y == u3r_sing(1, u3h(nif)) ) { + if ( (u3_nul == u3t(nif)) ) { + return u3k(bos); + } + else return u3k(nif); + } + else { + return u3nq(6, + u3k(bos), + u3k(nif), + u3nc(1, c3n)); + } + } + } + u3_noun + u3wf_flan_139(u3_noun cor) + { + u3_noun bos, nif; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &bos, u3x_sam_3, &nif, 0) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_flan(bos, nif); + } + } diff --git a/vere/pkg/noun/jets/f/flip.c b/vere/pkg/noun/jets/f/flip.c new file mode 100644 index 0000000..9eb922e --- /dev/null +++ b/vere/pkg/noun/jets/f/flip.c @@ -0,0 +1,39 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qf_flip(u3_noun hel) + { + if ( c3y == u3r_sing(1, u3h(hel)) ) { + if ( (c3y == u3t(hel)) ) { + return u3nc(1, c3n); + } + else { + u3_assert((c3n == u3t(hel))); + + return u3nc(1, c3y); + } + } + else { + return u3nq(6, + u3k(hel), + u3nc(1, c3n), + u3nc(1, c3y)); + } + } + u3_noun + u3wf_flip_139(u3_noun cor) + { + u3_noun hel; + + if ( u3_none == (hel = u3r_at(u3x_sam, cor)) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_flip(hel); + } + } diff --git a/vere/pkg/noun/jets/f/flor.c b/vere/pkg/noun/jets/f/flor.c new file mode 100644 index 0000000..031168e --- /dev/null +++ b/vere/pkg/noun/jets/f/flor.c @@ -0,0 +1,47 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qf_flor(u3_noun bos, + u3_noun nif) + { + if ( c3y == u3r_sing(bos, nif) ) { + return u3k(bos); + } + if ( c3y == u3r_sing(1, u3h(bos)) ) { + if ( (u3_nul == u3t(bos)) ) { + return u3k(bos); + } + else return u3k(nif); + } + else { + if ( c3y == u3r_sing(1, u3h(nif)) ) { + if ( (u3_nul == u3t(nif)) ) { + return u3k(nif); + } + else return u3k(bos); + } + else { + return u3nq(6, + u3k(bos), + u3nc(1, c3y), + u3k(nif)); + } + } + } + u3_noun + u3wf_flor_139(u3_noun cor) + { + u3_noun bos, nif; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &bos, u3x_sam_3, &nif, 0) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_flor(bos, nif); + } + } diff --git a/vere/pkg/noun/jets/f/fork.c b/vere/pkg/noun/jets/f/fork.c new file mode 100644 index 0000000..b2a68eb --- /dev/null +++ b/vere/pkg/noun/jets/f/fork.c @@ -0,0 +1,79 @@ +/// @file + +#include "jets/k.h" +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qf_forq(u3_noun hoz, + u3_noun bur) + { + if ( c3y == u3r_sing(hoz, bur) ) { + return u3k(hoz); + } + else if ( c3__void == bur ) { + return u3k(hoz); + } + else if ( c3__void == hoz ) { + return u3k(bur); + } + else return u3kf_fork(u3nt(u3k(hoz), u3k(bur), u3_nul)); + } + + u3_noun + u3qf_fork(u3_noun yed) + { + u3_noun lez = u3_nul; + + while ( u3_nul != yed ) { + u3_noun i_yed = u3h(yed); + + if ( c3__void != i_yed ) { + if ( (c3y == u3du(i_yed)) && (c3__fork == u3h(i_yed)) ) { + lez = u3kdi_uni(lez, u3k(u3t(i_yed))); + } + else { + lez = u3kdi_put(lez, u3k(i_yed)); + } + } + + yed = u3t(yed); + } + + if ( u3_nul == lez ) { + return c3__void; + } + else if ( (u3_nul == u3h(u3t(lez))) && (u3_nul == u3t(u3t(lez))) ) { + u3_noun ret = u3k(u3h(lez)); + + u3z(lez); + return ret; + } + else { + return u3nc(c3__fork, lez); + } + } + + u3_noun + u3wf_fork(u3_noun cor) + { + u3_noun yed; + + if ( c3n == u3r_mean(cor, u3x_sam, &yed, 0) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_fork(yed); + } + } + + u3_noun + u3kf_fork(u3_noun yed) + { + u3_noun ret = u3qf_fork(yed); + + u3z(yed); + return ret; + } diff --git a/vere/pkg/noun/jets/f/help.c b/vere/pkg/noun/jets/f/help.c new file mode 100644 index 0000000..41fe7fb --- /dev/null +++ b/vere/pkg/noun/jets/f/help.c @@ -0,0 +1,31 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qf_help(u3_noun sag, + u3_noun tip) + { + if ( c3__void == tip ) { + return c3__void; + } + else return u3nt(c3__help, + u3k(sag), + u3k(tip)); + } + u3_noun + u3wf_help(u3_noun cor) + { + u3_noun sag, tip; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &sag, u3x_sam_3, &tip, 0) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_help(sag, tip); + } + } + diff --git a/vere/pkg/noun/jets/f/hint.c b/vere/pkg/noun/jets/f/hint.c new file mode 100644 index 0000000..175c3fb --- /dev/null +++ b/vere/pkg/noun/jets/f/hint.c @@ -0,0 +1,32 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + + u3_noun + u3qf_hint(u3_noun sag, + u3_noun tip) + { + if ( c3__void == tip ) { + return c3__void; + } + if ( c3__noun == tip ) { + return c3__noun; + } + else return u3nt(c3__hint, u3k(sag), u3k(tip)); + } + u3_noun + u3wf_hint(u3_noun cor) + { + u3_noun sag, tip; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &sag, u3x_sam_3, &tip, 0) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_hint(sag, tip); + } + } + diff --git a/vere/pkg/noun/jets/f/look.c b/vere/pkg/noun/jets/f/look.c new file mode 100644 index 0000000..e50e914 --- /dev/null +++ b/vere/pkg/noun/jets/f/look.c @@ -0,0 +1,134 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + +/* internals +*/ + static u3_noun + _look_in(u3_noun cog, + u3_noun dab, + u3_atom axe) + { + if ( u3_nul == dab ) { + return u3_nul; + } + else { + u3_noun n_dab, l_dab, r_dab; + + u3r_trel(dab, &n_dab, &l_dab, &r_dab); + if ( c3n == u3du(n_dab) ) { + // return u3m_bail(c3__fail); + u3l_log("bad look"); + return u3m_bail(c3__exit) ; + } + else { + u3_noun pn_dab = u3h(n_dab); + u3_noun qn_dab = u3t(n_dab); + + if ( (u3_nul == l_dab) && (u3_nul == r_dab) ) { + if ( (c3y == u3du(qn_dab)) && + (c3y == u3r_sing(cog, pn_dab)) ) { + return u3nt(u3_nul, + u3k(axe), + u3k(qn_dab)); + } + else { + return u3_nul; + } + } + else if ( (u3_nul == l_dab) ) { + if ( (c3y == u3du(qn_dab)) && + (c3y == u3r_sing(cog, pn_dab)) ) { + return u3nt(u3_nul, + u3qc_peg(axe, 2), + u3k(qn_dab)); + } + else { + if ( c3y == u3qc_gor(cog, pn_dab) ) { + return u3_nul; + } + else { + u3_noun pro; + + axe = u3qc_peg(axe, 3); + pro = _look_in(cog, r_dab, axe); + u3z(axe); + return pro; + } + } + } + else if ( (u3_nul == r_dab) ) { + if ( (c3y == u3du(qn_dab)) && + (c3y == u3r_sing(cog, pn_dab)) ) { + return u3nt(u3_nul, + u3qc_peg(axe, 2), + u3k(qn_dab)); + } + else { + if ( c3y == u3qc_gor(cog, pn_dab) ) { + u3_noun pro; + + axe = u3qc_peg(axe, 3); + pro = _look_in(cog, l_dab, axe); + u3z(axe); + return pro; + } + else { + return u3_nul; + } + } + } + else { + if ( (c3y == u3du(qn_dab)) && + (c3y == u3r_sing(cog, pn_dab)) ) { + return u3nt(u3_nul, + u3qc_peg(axe, 2), + u3k(qn_dab)); + } + else { + if ( c3y == u3qc_gor(cog, pn_dab) ) { + u3_noun pro; + + axe = u3qc_peg(axe, 6); + pro = _look_in(cog, l_dab, axe); + u3z(axe); + return pro; + } + else { + u3_noun pro; + + axe = u3qc_peg(axe, 7); + pro = _look_in(cog, r_dab, axe); + u3z(axe); + return pro; + } + } + } + } + } + } + + + + + u3_noun + u3qf_look(u3_noun cog, + u3_noun dab) + { + return _look_in(cog, dab, 1); + } + u3_noun + u3wf_look(u3_noun cor) + { + u3_noun cog, dab; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &cog, u3x_sam_3, &dab, 0) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_look(cog, dab); + } + } diff --git a/vere/pkg/noun/jets/f/loot.c b/vere/pkg/noun/jets/f/loot.c new file mode 100644 index 0000000..d1a7bef --- /dev/null +++ b/vere/pkg/noun/jets/f/loot.c @@ -0,0 +1,133 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + + +/* internals +*/ + static u3_noun + _loot_in(u3_noun cog, + u3_noun dom, + u3_atom axe) + { + if ( u3_nul == dom ) { + return u3_nul; + } + else { + u3_noun n_dom, l_dom, r_dom; + + u3r_trel(dom, &n_dom, &l_dom, &r_dom); + if ( c3n == u3du(n_dom) ) { + return u3m_bail(c3__fail); + } + else { + u3_noun qqn_dom = u3t(u3t(n_dom)); + u3_noun yep = u3qf_look(cog, qqn_dom); + + if ( (u3_nul == l_dom) && (u3_nul == r_dom) ) { + if ( u3_nul == yep ) { + return u3_nul; + } else { + u3_noun u_yep = u3t(yep); + u3_noun pro; + + pro = u3nt(u3_nul, u3qc_peg(axe, u3h(u_yep)), u3k(u3t(u_yep))); + u3z(yep); + return pro; + } + } + else if ( (u3_nul == l_dom) ) { + if ( u3_nul == yep ) { + u3_noun nax = u3qc_peg(axe, 3); + u3_noun pro; + + pro = _loot_in(cog, r_dom, nax); + u3z(nax); + return pro; + } + else { + u3_noun u_yep = u3t(yep); + u3_noun nax = u3qc_peg(axe, 2); + u3_noun pro; + + pro = u3nt(u3_nul, u3qc_peg(nax, u3h(u_yep)), u3k(u3t(u_yep))); + u3z(nax); + u3z(yep); + return pro; + } + } + else if ( (u3_nul == r_dom) ) { + if ( u3_nul == yep ) { + u3_noun nax = u3qc_peg(axe, 3); + u3_noun pro; + + pro = _loot_in(cog, l_dom, nax); + u3z(nax); + return pro; + } + else { + u3_noun u_yep = u3t(yep); + u3_noun nax = u3qc_peg(axe, 2); + u3_noun pro; + + pro = u3nt(u3_nul, u3qc_peg(nax, u3h(u_yep)), u3k(u3t(u_yep))); + u3z(nax); + u3z(yep); + return pro; + } + } + else { + if ( u3_nul == yep ) { + u3_noun nax = u3qc_peg(axe, 6); + u3_noun pey; + + pey = _loot_in(cog, l_dom, nax); + u3z(nax); + + if ( u3_nul != pey ) { + return pey; + } + else { + u3_noun nax = u3qc_peg(axe, 7); + u3_noun pro; + + pro = _loot_in(cog, r_dom, nax); + u3z(nax); + return pro; + } + } + else { + u3_noun u_yep = u3t(yep); + u3_noun nax = u3qc_peg(axe, 2); + u3_noun pro; + + pro = u3nt(u3_nul, u3qc_peg(nax, u3h(u_yep)), u3k(u3t(u_yep))); + u3z(nax); + u3z(yep); + return pro; + } + } + } + } + } + + u3_noun + u3qf_loot(u3_noun cog, + u3_noun dom) + { + return _loot_in(cog, dom, 1); + } + u3_noun + u3wf_loot(u3_noun cor) + { + u3_noun cog, dom; + + if ( c3n == u3r_mean(cor, u3x_sam_2, &cog, u3x_sam_3, &dom, 0) ) { + return u3m_bail(c3__fail); + } else { + return u3qf_loot(cog, dom); + } + } diff --git a/vere/pkg/noun/jets/f/ut_crop.c b/vere/pkg/noun/jets/f/ut_crop.c new file mode 100644 index 0000000..189564d --- /dev/null +++ b/vere/pkg/noun/jets/f/ut_crop.c @@ -0,0 +1,34 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3wfu_crop(u3_noun cor) +{ + u3_noun bat, sut, ref, van; + + if ( (c3n == u3r_mean(cor, u3x_sam, &ref, u3x_con, &van, 0)) + || (u3_none == (bat = u3r_at(u3x_bat, van))) + || (u3_none == (sut = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } + else { + u3_weak vet = u3r_at(u3qfu_van_vet, van); + c3_m fun_m = 141 + c3__crop + ((!!vet) << 8); + u3_noun key = u3z_key_3(fun_m, sut, ref, bat); + u3_weak pro = u3z_find(u3z_memo_toss, key); + + if ( u3_none != pro ) { + u3z(key); + return pro; + } + else { + pro = u3n_nock_on(u3k(cor), u3k(u3x_at(u3x_bat, cor))); + return u3z_save(u3z_memo_toss, key, pro); + } + } +} diff --git a/vere/pkg/noun/jets/f/ut_fish.c b/vere/pkg/noun/jets/f/ut_fish.c new file mode 100644 index 0000000..e8acbd4 --- /dev/null +++ b/vere/pkg/noun/jets/f/ut_fish.c @@ -0,0 +1,35 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3wfu_fish(u3_noun cor) +{ + u3_noun bat, sut, axe, van; + + if ( (c3n == u3r_mean(cor, u3x_sam, &axe, u3x_con, &van, 0)) + || (c3n == u3ud(axe)) + || (u3_none == (bat = u3r_at(u3x_bat, van))) + || (u3_none == (sut = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } + else { + u3_weak vet = u3r_at(u3qfu_van_vet, van); + c3_m fun_m = 141 + c3__fish + ((!!vet) << 8); + u3_noun key = u3z_key_3(fun_m, sut, axe, bat); + u3_weak pro = u3z_find(u3z_memo_toss, key); + + if ( u3_none != pro ) { + u3z(key); + return pro; + } + else { + pro = u3n_nock_on(u3k(cor), u3k(u3x_at(u3x_bat, cor))); + return u3z_save(u3z_memo_toss, key, pro); + } + } +} diff --git a/vere/pkg/noun/jets/f/ut_fuse.c b/vere/pkg/noun/jets/f/ut_fuse.c new file mode 100644 index 0000000..8e4e1a6 --- /dev/null +++ b/vere/pkg/noun/jets/f/ut_fuse.c @@ -0,0 +1,34 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3wfu_fuse(u3_noun cor) +{ + u3_noun bat, sut, ref, van; + + if ( (c3n == u3r_mean(cor, u3x_sam, &ref, u3x_con, &van, 0)) + || (u3_none == (bat = u3r_at(u3x_bat, van))) + || (u3_none == (sut = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } + else { + u3_weak vet = u3r_at(u3qfu_van_vet, van); + c3_m fun_m = 141 + c3__fuse + ((!!vet) << 8); + u3_noun key = u3z_key_3(fun_m, sut, ref, bat); + u3_weak pro = u3z_find(u3z_memo_toss, key); + + if ( u3_none != pro ) { + u3z(key); + return pro; + } + else { + pro = u3n_nock_on(u3k(cor), u3k(u3x_at(u3x_bat, cor))); + return u3z_save(u3z_memo_toss, key, pro); + } + } +} diff --git a/vere/pkg/noun/jets/f/ut_mint.c b/vere/pkg/noun/jets/f/ut_mint.c new file mode 100644 index 0000000..618e729 --- /dev/null +++ b/vere/pkg/noun/jets/f/ut_mint.c @@ -0,0 +1,36 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3wfu_mint(u3_noun cor) +{ + u3_noun bat, sut, gol, gen, van; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &gol, + u3x_sam_3, &gen, + u3x_con, &van, 0)) + || (u3_none == (bat = u3r_at(u3x_bat, van))) + || (u3_none == (sut = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } + else { + c3_m fun_m = 141 + c3__mint; + u3_noun vet = u3r_at(u3qfu_van_vet, van); + u3_noun key = u3z_key_5(fun_m, vet, sut, gol, gen, bat); + u3_weak pro = u3z_find(u3z_memo_toss, key); + + if ( u3_none != pro ) { + u3z(key); + return pro; + } + else { + pro = u3n_nock_on(u3k(cor), u3k(u3x_at(u3x_bat, cor))); + return u3z_save(u3z_memo_toss, key, pro); + } + } +} diff --git a/vere/pkg/noun/jets/f/ut_mull.c b/vere/pkg/noun/jets/f/ut_mull.c new file mode 100644 index 0000000..767ab3c --- /dev/null +++ b/vere/pkg/noun/jets/f/ut_mull.c @@ -0,0 +1,37 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3wfu_mull(u3_noun cor) +{ + u3_noun bat, sut, gol, dox, gen, van; + + if ( (c3n == u3r_mean(cor, u3x_sam_2, &gol, + u3x_sam_6, &dox, + u3x_sam_7, &gen, + u3x_con, &van, 0)) + || (u3_none == (bat = u3r_at(u3x_bat, van))) + || (u3_none == (sut = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } + else { + u3_weak vet = u3r_at(u3qfu_van_vet, van); + c3_m fun_m = 141 + c3__mull + ((!!vet) << 8); + u3_noun key = u3z_key_5(fun_m, sut, gol, dox, gen, bat); + u3_weak pro = u3z_find(u3z_memo_toss, key); + + if ( u3_none != pro ) { + u3z(key); + return pro; + } + else { + pro = u3n_nock_on(u3k(cor), u3k(u3x_at(u3x_bat, cor))); + return u3z_save(u3z_memo_toss, key, pro); + } + } +} diff --git a/vere/pkg/noun/jets/f/ut_nest.c b/vere/pkg/noun/jets/f/ut_nest.c new file mode 100644 index 0000000..9bc53bf --- /dev/null +++ b/vere/pkg/noun/jets/f/ut_nest.c @@ -0,0 +1,50 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3wfu_nest_dext(u3_noun dext_core) +{ + u3_noun nest_in_core, nest_core; + u3_noun bat, sut, ref, van, seg, reg, gil; + + if ( (u3_none == (nest_in_core = u3r_at(3, dext_core))) + || (c3n == u3r_mean(nest_in_core, u3x_sam_2, &seg, + u3x_sam_6, ®, + u3x_sam_7, &gil, + u3x_con, &nest_core, 0)) + || (c3n == u3r_mean(nest_core, u3x_sam_3, &ref, + u3x_con, &van, 0)) + || (u3_none == (bat = u3r_at(u3x_bat, van))) + || (u3_none == (sut = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } + else { + u3_weak vet = u3r_at(u3qfu_van_vet, van); + c3_m fun_m = 141 + c3__dext + ((!!vet) << 8); + u3_noun key = u3z_key_3(fun_m, sut, ref, bat); + u3_weak pro = u3z_find(u3z_memo_toss, key); + + if ( u3_none != pro ) { + u3z(key); + return pro; + } + else { + pro = u3n_nock_on(u3k(dext_core), u3k(u3x_at(u3x_bat, dext_core))); + + if ( ((c3y == pro) && (u3_nul == reg)) || + ((c3n == pro) && (u3_nul == seg)) ) + { + return u3z_save(u3z_memo_toss, key, pro); + } + else { + u3z(key); + return pro; + } + } + } +} diff --git a/vere/pkg/noun/jets/f/ut_redo.c b/vere/pkg/noun/jets/f/ut_redo.c new file mode 100644 index 0000000..43fb06c --- /dev/null +++ b/vere/pkg/noun/jets/f/ut_redo.c @@ -0,0 +1,34 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3wfu_redo(u3_noun cor) +{ + u3_noun bat, sut, ref, van; + + if ( (c3n == u3r_mean(cor, u3x_sam, &ref, u3x_con, &van, 0)) + || (u3_none == (bat = u3r_at(u3x_bat, van))) + || (u3_none == (sut = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } + else { + u3_weak vet = u3r_at(u3qfu_van_vet, van); + c3_m fun_m = 141 + c3__redo + ((!!vet) << 8); + u3_noun key = u3z_key_3(fun_m, sut, ref, bat); + u3_weak pro = u3z_find(u3z_memo_toss, key); + + if ( u3_none != pro ) { + u3z(key); + return pro; + } + else { + pro = u3n_nock_on(u3k(cor), u3k(u3x_at(u3x_bat, cor))); + return u3z_save(u3z_memo_toss, key, pro); + } + } +} diff --git a/vere/pkg/noun/jets/f/ut_rest.c b/vere/pkg/noun/jets/f/ut_rest.c new file mode 100644 index 0000000..87ff60f --- /dev/null +++ b/vere/pkg/noun/jets/f/ut_rest.c @@ -0,0 +1,34 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +u3_noun +u3wfu_rest(u3_noun cor) +{ + u3_noun bat, sut, leg, van; + + if ( (c3n == u3r_mean(cor, u3x_sam, &leg, u3x_con, &van, 0)) + || (u3_none == (bat = u3r_at(u3x_bat, van))) + || (u3_none == (sut = u3r_at(u3x_sam, van))) ) + { + return u3m_bail(c3__fail); + } + else { + u3_weak vet = u3r_at(u3qfu_van_vet, van); + c3_m fun_m = 141 + c3__rest + ((!!vet) << 8); + u3_noun key = u3z_key_3(fun_m, sut, leg, bat); + u3_weak pro = u3z_find(u3z_memo_toss, key); + + if ( u3_none != pro ) { + u3z(key); + return pro; + } + else { + pro = u3n_nock_on(u3k(cor), u3k(u3x_at(u3x_bat, cor))); + return u3z_save(u3z_memo_toss, key, pro); + } + } +} diff --git a/vere/pkg/noun/jets/g/plot.c b/vere/pkg/noun/jets/g/plot.c new file mode 100644 index 0000000..18c8ab0 --- /dev/null +++ b/vere/pkg/noun/jets/g/plot.c @@ -0,0 +1,364 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "noun.h" + +// XX optimize +// +static c3_w +_met_plat_m(c3_g a_g, c3_w fum_w, c3_w met_w, u3_atom vat) +{ + c3_w len_w, wor_w; + + { + u3i_slab sab_u; + u3i_slab_init(&sab_u, a_g, met_w); + u3r_chop(a_g, fum_w, met_w, 0, sab_u.buf_w, vat); + + len_w = sab_u.len_w; + + while ( len_w && !sab_u.buf_w[len_w - 1] ) { + len_w--; + } + + wor_w = !len_w ? 0 : sab_u.buf_w[len_w - 1]; + + u3i_slab_free(&sab_u); + } + + + if ( !len_w ) { + return 0; + } + + { + c3_w gal_w = len_w - 1; + c3_w daz_w = wor_w; + c3_y a_y = a_g; + + // inlined from u3r_met + if (a_y < 5) { + c3_y max_y = (1 << a_y) - 1; + c3_y gow_y = 5 - a_y; + + if (gal_w > ((UINT32_MAX - (32 + max_y)) >> gow_y)) { + return u3m_bail(c3__fail); + } + + return (gal_w << gow_y) + + ((c3_bits_word(daz_w) + max_y) + >> a_y); + } + + { + c3_y gow_y = (a_y - 5); + return ((gal_w + 1) + ((1 << gow_y) - 1)) >> gow_y; + } + } +} + +static c3_w +_met_list(c3_g a_g, + c3_w sep_w, + u3_noun b_p); + +static c3_w +_met_pair(c3_g* las_g, + c3_w sep_w, + u3_noun a_p, + u3_noun b_p, + c3_g* new_g) +{ + c3_g res_g, a_g; + + while ( c3y == u3a_is_cell(a_p) ) { + sep_w = _met_pair(las_g, sep_w, u3h(a_p), u3t(a_p), &res_g); + las_g = &res_g; + a_p = u3h(b_p); + b_p = u3t(b_p); + } + + if ( !_(u3a_is_cat(a_p)) || (a_p >= 32) ) { + return u3m_bail(c3__fail); + } + + a_g = (c3_g)a_p; + + if ( las_g && (a_g != *las_g) ) { + sep_w = u3qc_rig_s(*las_g, sep_w, a_g); // XX overflow + } + + *new_g = a_g; + return _met_list(a_g, sep_w, b_p); +} + +static c3_w +_met_list(c3_g a_g, + c3_w sep_w, + u3_noun b_p) +{ + if ( u3_nul != b_p ) { + c3_w met_w; + u3_noun i, t = b_p; + + do { + u3x_cell(t, &i, &t); + + // ?@ i.b.p + if ( c3y == u3a_is_atom(i) ) { + met_w = u3r_met(a_g, i); + sep_w += met_w; // XX overflow + } + else { + u3_noun i_i, t_i; + u3x_cell(i, &i_i, &t_i); + + // ?=(@ -.i.b.p) + if ( c3y == u3a_is_atom(i_i) ) { + if ( !_(u3a_is_cat(i_i)) ) { + return u3m_bail(c3__fail); + } + + met_w = (c3_w)i_i; + sep_w += met_w; // XX overflow + } + else { + u3_noun l, r; + c3_o cel_o = u3r_cell(i_i, &l, &r); + + // ?=([%c ~] -.i.b.p) + if ( (c3y == cel_o) && ('c' == l) && (u3_nul == r) ) { + u3_atom p_p_t_i = u3x_atom(u3h(u3h(t_i))); + u3_atom q_p_t_i = u3x_atom(u3t(u3h(t_i))); + u3_atom q_t_i = u3x_atom(u3t(t_i)); + + if ( !_(u3a_is_cat(p_p_t_i)) + || !_(u3a_is_cat(q_p_t_i)) + || !_(u3a_is_cat(q_t_i)) ) + { + return u3m_bail(c3__fail); + } + + met_w = (c3_w)q_p_t_i; + sep_w += met_w; // XX overflow + } + // ?=([%m ~] -.i.b.p) + else if ( (c3y == cel_o) && ('m' == l) && (u3_nul == r) ) { + u3_atom p_p_t_i = u3x_atom(u3h(u3h(t_i))); + u3_atom q_p_t_i = u3x_atom(u3t(u3h(t_i))); + u3_atom q_t_i = u3x_atom(u3t(t_i)); + + if ( !_(u3a_is_cat(p_p_t_i)) + || !_(u3a_is_cat(q_p_t_i)) + || !_(u3a_is_cat(q_t_i)) ) + { + return u3m_bail(c3__fail); + } + + met_w = _met_plat_m(a_g, (c3_w)p_p_t_i, (c3_w)q_p_t_i, q_t_i); + sep_w += met_w; // XX overflow + } + // ?=([%s ~] -.i.b.p) (assumed) + else { + c3_g new_g; + u3x_cell(t_i, &l, &r); + + sep_w = _met_pair(&a_g, sep_w, l, r, &new_g); + + if ( new_g != a_g ) { + sep_w = u3qc_rig_s(new_g, sep_w, a_g); // XX overflow + } + } + } + } + } + while ( u3_nul != t ); + } + + return sep_w; +} + +static c3_w +_fax_list(u3i_slab* sab_u, + c3_g a_g, + c3_w sep_w, + u3_noun b_p); + +static c3_w +_fax_pair(u3i_slab* sab_u, + c3_g* las_g, + c3_w sep_w, + u3_noun a_p, + u3_noun b_p, + c3_g* new_g) +{ + c3_g res_g, a_g; + + while ( c3y == u3a_is_cell(a_p) ) { + sep_w = _fax_pair(sab_u, las_g, sep_w, u3h(a_p), u3t(a_p), &res_g); + las_g = &res_g; + a_p = u3h(b_p); + b_p = u3t(b_p); + } + + if ( !_(u3a_is_cat(a_p)) || (a_p >= 32) ) { + return u3m_bail(c3__fail); + } + + a_g = (c3_g)a_p; + + if ( las_g && (a_g != *las_g) ) { + sep_w = u3qc_rig_s(*las_g, sep_w, a_g); // XX overflow + } + + *new_g = a_g; + return _fax_list(sab_u, a_g, sep_w, b_p); +} + +static c3_w +_fax_list(u3i_slab* sab_u, + c3_g a_g, + c3_w sep_w, + u3_noun b_p) +{ + if ( u3_nul != b_p ) { + c3_w met_w; + u3_noun i, t = b_p; + + do { + u3x_cell(t, &i, &t); + + // ?@ i.b.p + if ( c3y == u3a_is_atom(i) ) { + met_w = u3r_met(a_g, i); + + u3r_chop(a_g, 0, met_w, sep_w, sab_u->buf_w, i); + + sep_w += met_w; // XX overflow + } + else { + u3_noun i_i, t_i; + u3x_cell(i, &i_i, &t_i); + + // ?=(@ -.i.b.p) + if ( c3y == u3a_is_atom(i_i) ) { + if ( !_(u3a_is_cat(i_i)) ) { + return u3m_bail(c3__fail); + } + + met_w = (c3_w)i_i; + + u3r_chop(a_g, 0, met_w, sep_w, sab_u->buf_w, u3x_atom(t_i)); + + sep_w += met_w; // XX overflow + } + else { + u3_noun l, r; + c3_o cel_o = u3r_cell(i_i, &l, &r); + + // ?=([%c ~] -.i.b.p) + if ( (c3y == cel_o) && ('c' == l) && (u3_nul == r) ) { + u3_atom p_p_t_i = u3x_atom(u3h(u3h(t_i))); + u3_atom q_p_t_i = u3x_atom(u3t(u3h(t_i))); + u3_atom q_t_i = u3x_atom(u3t(t_i)); + + if ( !_(u3a_is_cat(p_p_t_i)) + || !_(u3a_is_cat(q_p_t_i)) + || !_(u3a_is_cat(q_t_i)) ) + { + return u3m_bail(c3__fail); + } + + met_w = (c3_w)q_p_t_i; + + u3r_chop(a_g, (c3_w)p_p_t_i, met_w, sep_w, sab_u->buf_w, q_t_i); + + sep_w += met_w; // XX overflow + } + // ?=([%m ~] -.i.b.p) + else if ( (c3y == cel_o) && ('m' == l) && (u3_nul == r) ) { + u3_atom p_p_t_i = u3x_atom(u3h(u3h(t_i))); + u3_atom q_p_t_i = u3x_atom(u3t(u3h(t_i))); + u3_atom q_t_i = u3x_atom(u3t(t_i)); + + if ( !_(u3a_is_cat(p_p_t_i)) + || !_(u3a_is_cat(q_p_t_i)) + || !_(u3a_is_cat(q_t_i)) ) + { + return u3m_bail(c3__fail); + } + + met_w = _met_plat_m(a_g, (c3_w)p_p_t_i, (c3_w)q_p_t_i, q_t_i); + + u3r_chop(a_g, (c3_w)p_p_t_i, met_w, sep_w, sab_u->buf_w, q_t_i); + + sep_w += met_w; // XX overflow + } + // ?=([%s ~] -.i.b.p) (assumed) + else { + c3_g new_g; + u3x_cell(t_i, &l, &r); + + sep_w = _fax_pair(sab_u, &a_g, sep_w, l, r, &new_g); + + if ( new_g != a_g ) { + sep_w = u3qc_rig_s(new_g, sep_w, a_g); // XX overflow + } + } + } + } + } + while ( u3_nul != t ); + } + + return sep_w; +} + +u3_noun +u3qg_plot_met(u3_noun a_p, u3_noun b_p) +{ + c3_g out_g; + c3_w sep_w = _met_pair(NULL, 0, a_p, b_p, &out_g); + + return u3nc(out_g, u3i_word(sep_w)); +} + +u3_noun +u3wg_plot_met(u3_noun cor) +{ + u3_noun a_p, b_p; + { + u3_noun sam = u3h(u3t(cor)); + a_p = u3h(sam); + b_p = u3t(sam); + } + return u3qg_plot_met(a_p, b_p); +} + +u3_noun +u3qg_plot_fax(u3_noun a_p, u3_noun b_p) +{ + c3_g out_g; + c3_w sep_w = _met_pair(NULL, 0, a_p, b_p, &out_g); + u3i_slab sab_u; + + u3i_slab_init(&sab_u, out_g, sep_w); + + _fax_pair(&sab_u, NULL, 0, a_p, b_p, &out_g); + + return u3nt(u3i_slab_mint(&sab_u), out_g, u3i_word(sep_w)); +} + +u3_noun +u3wg_plot_fax(u3_noun cor) +{ + u3_noun a_p, b_p; + { + u3_noun sam = u3h(u3t(cor)); + a_p = u3h(sam); + b_p = u3t(sam); + } + return u3qg_plot_fax(a_p, b_p); +} diff --git a/vere/pkg/noun/jets/i/lagoon.c b/vere/pkg/noun/jets/i/lagoon.c new file mode 100644 index 0000000..db7088b --- /dev/null +++ b/vere/pkg/noun/jets/i/lagoon.c @@ -0,0 +1,3315 @@ +/// @file + +#include "jets/q.h" +#include "jets/w.h" + +#include "c3/motes.h" + +#include "noun.h" +#include "softfloat.h" +#include "softblas.h" + +#include // for pow() +#include + +#define f16_ceil(a) f16_roundToInt( a, softfloat_round_max, false ) +#define f32_ceil(a) f32_roundToInt( a, softfloat_round_max, false ) +#define f64_ceil(a) f64_roundToInt( a, softfloat_round_max, false ) +#define f128M_ceil(a, b) f128M_roundToInt( a, softfloat_round_max, false, b ) + + union half { + float16_t h; + c3_w c; + }; + + union sing { + float32_t s; + c3_w c; + }; + + union doub { + float64_t d; + c3_d c; + }; + + union quad { + float128_t q; + c3_d c[2]; + }; + + // $?(%n %u %d %z %a) + static inline void + _set_rounding(c3_w a) + { + // We could use SoftBLAS set_rounding() to set the SoftFloat + // mode as well, but it's more explicit to do it here since + // we may use SoftFloat in any given Lagoon jet and we want + // you, dear developer, to see it set here. + switch ( a ) + { + default: + u3m_bail(c3__fail); + break; + // %n - near + case c3__n: + softfloat_roundingMode = softfloat_round_near_even; + softblas_roundingMode = 'n'; + break; + // %z - zero + case c3__z: + softfloat_roundingMode = softfloat_round_minMag; + softblas_roundingMode = 'z'; + break; + // %u - up + case c3__u: + softfloat_roundingMode = softfloat_round_max; + softblas_roundingMode = 'u'; + break; + // %d - down + case c3__d: + softfloat_roundingMode = softfloat_round_min; + softblas_roundingMode = 'd'; + break; + // %a - away + case c3__a: + softfloat_roundingMode = softfloat_round_near_maxMag; + softblas_roundingMode = 'a'; + break; + } + } + +/* length of shape = x * y * z * w * ... +*/ + static inline c3_d _get_length(u3_noun shape) + { + c3_d len = 1; + while (u3_nul != shape) { + len = len * u3x_atom(u3h(shape)); + shape = u3t(shape); + } + return len; + } + +/* get dims from shape as array [x y z w ...] +*/ + static inline c3_d* _get_dims(u3_noun shape) + { + u3_atom len = u3qb_lent(shape); + c3_d len_d = u3r_chub(0, len); + c3_d* dims = (c3_d*)u3a_malloc(len_d*sizeof(c3_d)); + for (c3_d i = 0; i < len_d; i++) { + dims[i] = u3r_chub(0, u3x_atom(u3h(shape))); + shape = u3t(shape); + } + u3z(len); + return dims; + } + +/* check consistency of array shape and bloq size + |= =ray + ^- ? + .= (roll shape.meta.ray ^mul) + (dec (met bloq.meta.ray data.ray)) +*/ + static inline c3_o _check(u3_noun ray) + { + // Calculate expected size. + u3_atom shp = u3h(u3h(ray)); // (reported) shape of ray, +4 + u3_atom blq = u3h(u3t(u3h(ray))); // block size of ray, +10 + u3_atom sin = _get_length(shp); // calculated length of ray + + // Calculate actual size. + u3_atom len = u3r_met(blq, u3t(ray)); // length of ray + u3_atom dex = u3qa_dec(len); // decrement length b/c of pinned 1 + + return __(sin == dex); + } + +/* add - axpy = 1*x+y +*/ + u3_noun + u3qi_la_add_i754(u3_noun x_data, + u3_noun y_data, + u3_noun shape, + u3_noun bloq + ) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // y_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, y_bytes, y_data); + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + haxpy(len_x, (float16_t){SB_REAL16_ONE}, (float16_t*)x_bytes, 1, (float16_t*)y_bytes, 1); + break; + + case 5: + saxpy(len_x, (float32_t){SB_REAL32_ONE}, (float32_t*)x_bytes, 1, (float32_t*)y_bytes, 1); + break; + + case 6: + daxpy(len_x, (float64_t){SB_REAL64_ONE}, (float64_t*)x_bytes, 1, (float64_t*)y_bytes, 1); + break; + + case 7: + qaxpy(len_x, (float128_t){SB_REAL128L_ONE,SB_REAL128U_ONE}, (float128_t*)x_bytes, 1, (float128_t*)y_bytes, 1); + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), y_bytes); + + // Clean up and return. + u3a_free(x_bytes); + u3a_free(y_bytes); + + return r_data; + } + +/* sub - axpy = -1*y+x +*/ + u3_noun + u3qi_la_sub_i754(u3_noun x_data, + u3_noun y_data, + u3_noun shape, + u3_noun bloq + ) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // y_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, y_bytes, y_data); + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + haxpy(len_x, (float16_t){SB_REAL16_NEGONE}, (float16_t*)x_bytes, 1, (float16_t*)y_bytes, 1); + break; + + case 5: + saxpy(len_x, (float32_t){SB_REAL32_NEGONE}, (float32_t*)x_bytes, 1, (float32_t*)y_bytes, 1); + break; + + case 6: + daxpy(len_x, (float64_t){SB_REAL64_NEGONE}, (float64_t*)x_bytes, 1, (float64_t*)y_bytes, 1); + break; + + case 7: + qaxpy(len_x, (float128_t){SB_REAL128L_NEGONE,SB_REAL128U_NEGONE}, (float128_t*)x_bytes, 1, (float128_t*)y_bytes, 1); + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), y_bytes); + + // Clean up and return. + u3a_free(x_bytes); + u3a_free(y_bytes); + + return r_data; + } + + +/* mul - x.*y + elementwise multiplication +*/ + u3_noun + u3qi_la_mul_i754(u3_noun x_data, + u3_noun y_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // y_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, y_bytes, y_data); + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + for (c3_d i = 0; i < len_x; i++) { + ((float16_t*)y_bytes)[i] = f16_mul(((float16_t*)x_bytes)[i], ((float16_t*)y_bytes)[i]); + } + break; + + case 5: + for (c3_d i = 0; i < len_x; i++) { + ((float32_t*)y_bytes)[i] = f32_mul(((float32_t*)x_bytes)[i], ((float32_t*)y_bytes)[i]); + } + break; + + case 6: + for (c3_d i = 0; i < len_x; i++) { + ((float64_t*)y_bytes)[i] = f64_mul(((float64_t*)x_bytes)[i], ((float64_t*)y_bytes)[i]); + } + break; + + case 7: + for (c3_d i = 0; i < len_x; i++) { + f128M_mul(&(((float128_t*)y_bytes)[i]), &(((float128_t*)x_bytes)[i]), &(((float128_t*)y_bytes)[i])); + } + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), y_bytes); + + // Clean up and return. + u3a_free(x_bytes); + u3a_free(y_bytes); + + return r_data; + } + +/* div - x/y + elementwise division +*/ + u3_noun + u3qi_la_div_i754(u3_noun x_data, + u3_noun y_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // y_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, y_bytes, y_data); + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + for (c3_d i = 0; i < len_x; i++) { + ((float16_t*)y_bytes)[i] = f16_div(((float16_t*)x_bytes)[i], ((float16_t*)y_bytes)[i]); + } + break; + + case 5: + for (c3_d i = 0; i < len_x; i++) { + ((float32_t*)y_bytes)[i] = f32_div(((float32_t*)x_bytes)[i], ((float32_t*)y_bytes)[i]); + } + break; + + case 6: + for (c3_d i = 0; i < len_x; i++) { + ((float64_t*)y_bytes)[i] = f64_div(((float64_t*)x_bytes)[i], ((float64_t*)y_bytes)[i]); + } + break; + + case 7: + for (c3_d i = 0; i < len_x; i++) { + f128M_div(&(((float128_t*)y_bytes)[i]), &(((float128_t*)x_bytes)[i]), &(((float128_t*)y_bytes)[i])); + } + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), y_bytes); + + // Clean up and return. + u3a_free(x_bytes); + u3a_free(y_bytes); + + return r_data; + } + +/* mod - x % y = x - r*floor(x/r) + remainder after division +*/ + u3_noun + u3qi_la_mod_i754(u3_noun x_data, + u3_noun y_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // y_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, y_bytes, y_data); + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + for (c3_d i = 0; i < len_x; i++) { + float16_t x_val16 = ((float16_t*)x_bytes)[i]; + float16_t y_val16 = ((float16_t*)y_bytes)[i]; + // Perform division x/n + float16_t div_result16 = f16_div(x_val16, y_val16); + // Compute floor of the division result + c3_ds floor_result16 = f16_to_i64(div_result16, softfloat_round_minMag, false); + float16_t floor_float16 = i64_to_f16(floor_result16); + // Multiply n by floor(x/n) + float16_t mult_result16 = f16_mul(y_val16, floor_float16); + // Compute remainder: x - n * floor(x/n) + ((float16_t*)y_bytes)[i] = f16_sub(x_val16, mult_result16); + } + break; + + case 5: + for (c3_d i = 0; i < len_x; i++) { + float32_t x_val32 = ((float32_t*)x_bytes)[i]; + float32_t y_val32 = ((float32_t*)y_bytes)[i]; + // Perform division x/n + float32_t div_result32 = f32_div(x_val32, y_val32); + // Compute floor of the division result + c3_ds floor_result32 = f32_to_i64(div_result32, softfloat_round_minMag, false); + float32_t floor_float32 = i64_to_f32(floor_result32); + // Multiply n by floor(x/n) + float32_t mult_result32 = f32_mul(y_val32, floor_float32); + // Compute remainder: x - n * floor(x/n) + ((float32_t*)y_bytes)[i] = f32_sub(x_val32, mult_result32); + } + break; + + case 6: + for (c3_d i = 0; i < len_x; i++) { + float64_t x_val64 = ((float64_t*)x_bytes)[i]; + float64_t y_val64 = ((float64_t*)y_bytes)[i]; + // Perform division x/n + float64_t div_result64 = f64_div(x_val64, y_val64); + // Compute floor of the division result + c3_ds floor_result64 = f64_to_i64(div_result64, softfloat_round_minMag, false); + float64_t floor_float64 = i64_to_f64(floor_result64); + // Multiply n by floor(x/n) + float64_t mult_result64 = f64_mul(y_val64, floor_float64); + // Compute remainder: x - n * floor(x/n) + ((float64_t*)y_bytes)[i] = f64_sub(x_val64, mult_result64); + } + break; + + case 7: + for (c3_d i = 0; i < len_x; i++) { + float128_t x_val128 = ((float128_t*)x_bytes)[i]; + float128_t y_val128 = ((float128_t*)y_bytes)[i]; + // Perform division x/n + float128_t div_result128; + f128M_div((float128_t*)&x_val128, (float128_t*)&y_val128, (float128_t*)&div_result128); + // Compute floor of the division result + c3_ds floor_result128 = f128M_to_i64(&div_result128, softfloat_round_minMag, false); + float128_t floor_float128; + i64_to_f128M(floor_result128, &floor_float128); + // Multiply n by floor(x/n) + float128_t mult_result128; + f128M_mul(((float128_t*)&y_val128), ((float128_t*)&floor_float128), ((float128_t*)&mult_result128)); + // Compute remainder: x - n * floor(x/n) + f128M_sub(((float128_t*)&x_val128), ((float128_t*)&mult_result128), &(((float128_t*)y_bytes)[i])); + } + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), y_bytes); + + // Clean up and return. + u3a_free(x_bytes); + u3a_free(y_bytes); + + return r_data; + } + +/* cumsum - x[0] + x[1] + ... x[n] +*/ + u3_noun + u3qi_la_cumsum_i754(u3_noun x_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // y_bytes is the data array (w/ leading 0x1, skipped by for range) + c3_y* x_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, x_bytes, x_data); + + u3_noun r_data; + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: { + float16_t sum16[2]; + sum16[0] = (float16_t){SB_REAL16_ZERO}; + for (c3_d i = len_x; i > 0; i--) { + sum16[0] = f16_add(sum16[0], ((float16_t*)x_bytes)[i-1]); + } + sum16[1].v = 0x1; + r_data = u3i_bytes((2+1)*sizeof(c3_y), (c3_y*)sum16); + break;} + + case 5: { + float32_t sum32[2]; + sum32[0] = (float32_t){SB_REAL32_ZERO}; + for (c3_d i = len_x; i > 0; i--) { + sum32[0] = f32_add(sum32[0], ((float32_t*)x_bytes)[i-1]); + } + sum32[1].v = 0x1; + r_data = u3i_bytes((4+1)*sizeof(c3_y), (c3_y*)sum32); + break;} + + case 6: { + float64_t sum64[2]; + sum64[0] = (float64_t){SB_REAL64_ZERO}; + for (c3_d i = len_x; i > 0; i--) { + sum64[0] = f64_add(sum64[0], ((float64_t*)x_bytes)[i-1]); + } + sum64[1].v = 0x1; + r_data = u3i_bytes((8+1)*sizeof(c3_y), (c3_y*)sum64); + break;} + + case 7: { + float128_t sum128[2]; + sum128[0] = (float128_t){SB_REAL128L_ZERO, SB_REAL128U_ZERO}; + for (c3_d i = len_x; i > 0; i--) { + f128M_add(&(sum128[0]), &(((float128_t*)x_bytes)[i-1]), &(sum128[0])); + } + sum128[1] = (float128_t){0x1, 0x0}; + r_data = u3i_bytes((16+1)*sizeof(c3_y), (c3_y*)sum128); + break;} + } + + // Clean up and return. + u3a_free(x_bytes); + + return r_data; + } + +/* argmin - argmin(x) +*/ + u3_noun + u3qi_la_argmin_i754(u3_noun x_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1, which doesn't matter here) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + c3_w min_idx = 0; + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: { + float16_t min_val16 = ((float16_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + if(f16_lt(((float16_t*)x_bytes)[i], min_val16)) { + min_val16 = ((float16_t*)x_bytes)[i]; + min_idx = (len_x - i - 1); + } + } + break;} + + case 5: { + float32_t min_val32 = ((float32_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + if(f32_lt(((float32_t*)x_bytes)[i], min_val32)) { + min_val32 = ((float32_t*)x_bytes)[i]; + min_idx = (len_x - i - 1); + } + } + break;} + + case 6: { + float64_t min_val64 = ((float64_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + if(f64_lt(((float64_t*)x_bytes)[i], min_val64)) { + min_val64 = ((float64_t*)x_bytes)[i]; + min_idx = (len_x - i - 1); + } + } + break;} + + case 7: { + float128_t min_val128 = ((float128_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + if(f128M_lt(&(((float128_t*)x_bytes)[i]), &min_val128)) { + min_val128 = *f128M_min(&min_val128, &((float128_t*)x_bytes)[i]); + min_idx = (len_x - i - 1); + } + } + break;} + } + + u3_noun r_data = u3i_chub(min_idx); + + return r_data; + } + +/* argmax - argmax(x) +*/ + u3_noun + u3qi_la_argmax_i754(u3_noun x_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1, which doesn't matter here) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + c3_w max_idx = 0; + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: { + float16_t max_val16 = ((float16_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + if(f16_gt(((float16_t*)x_bytes)[i], max_val16)) { + max_val16 = ((float16_t*)x_bytes)[i]; + max_idx = (len_x - i - 1); + } + } + break;} + + case 5: { + float32_t max_val32 = ((float32_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + if(f32_gt(((float32_t*)x_bytes)[i], max_val32)) { + max_val32 = ((float32_t*)x_bytes)[i]; + max_idx = (len_x - i - 1); + } + } + break;} + + case 6: { + float64_t max_val64 = ((float64_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + if(f64_gt(((float64_t*)x_bytes)[i], max_val64)) { + max_val64 = ((float64_t*)x_bytes)[i]; + max_idx = (len_x - i - 1); + } + } + break;} + + case 7: { + float128_t max_val128 = ((float128_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + if(f128M_gt(&(((float128_t*)x_bytes)[i]), &max_val128)) { + max_val128 = *f128M_max(&max_val128, &((float128_t*)x_bytes)[i]); + max_idx = (len_x - i - 1); + } + } + break;} + } + + u3_noun r_data = u3i_chub(max_idx); + + return r_data; + } + +/* ravel - x -> ~[x[0], x[1], ... x[n]] + entire nd-array busted out as a linear list +*/ + u3_noun + u3qi_la_ravel_i754(u3_noun x_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // r_data is the result noun of [data] + u3_noun r_data = u3_nul; + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + for (c3_d i = 0; i < len_x; i++) { + float16_t x_val16 = ((float16_t*)x_bytes)[i]; + r_data = u3nc(u3i_word(x_val16.v), r_data); + } + break; + + case 5: + for (c3_d i = 0; i < len_x; i++) { + float32_t x_val32 = ((float32_t*)x_bytes)[i]; + r_data = u3nc(u3i_word(x_val32.v), r_data); + } + break; + + case 6: + for (c3_d i = 0; i < len_x; i++) { + float64_t x_val64 = ((float64_t*)x_bytes)[i]; + r_data = u3nc(u3i_chub(x_val64.v), r_data); + } + break; + + case 7: + for (c3_d i = 0; i < len_x; i++) { + float128_t x_val128 = ((float128_t*)x_bytes)[i]; + r_data = u3nc(u3i_chubs(2, (c3_d*)&(x_val128.v)), r_data); + } + break; + } + + // Clean up and return. + u3a_free(x_bytes); + + return r_data; + } + +/* min - min(x,y) +*/ + u3_noun + u3qi_la_min_i754(u3_noun x_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/ leading 0x1, skipped by for range) + c3_y* x_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, x_bytes, x_data); + + u3_noun r_data; + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: { + float16_t min_val16 = ((float16_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + min_val16 = f16_min(min_val16, ((float16_t*)x_bytes)[i]); + } + float16_t r16[2]; + r16[0] = min_val16; + r16[1].v = 0x1; + r_data = u3i_bytes((2+1)*sizeof(c3_y), (c3_y*)r16); + break;} + + case 5: { + float32_t min_val32 = ((float32_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + min_val32 = f32_min(min_val32, ((float32_t*)x_bytes)[i]); + } + float32_t r32[2]; + r32[0] = min_val32; + r32[1].v = 0x1; + r_data = u3i_bytes((4+1)*sizeof(c3_y), (c3_y*)r32); + break;} + + case 6: { + float64_t min_val64 = ((float64_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + min_val64 = f64_min(min_val64, ((float64_t*)x_bytes)[i]); + } + float64_t r64[2]; + r64[0] = min_val64; + r64[1].v = 0x1; + r_data = u3i_bytes((8+1)*sizeof(c3_y), (c3_y*)r64); + break;} + + case 7: { + float128_t min_val128 = ((float128_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + min_val128 = *f128M_min(&min_val128, &((float128_t*)x_bytes)[i]); + } + float128_t r128[2]; + r128[0] = min_val128; + r128[1] = (float128_t){0x1, 0x0}; + r_data = u3i_bytes((16+1)*sizeof(c3_y), (c3_y*)r128); + break;} + } + + // Clean up and return. + u3a_free(x_bytes); + + return r_data; + } + +/* max - max(x,y) +*/ + u3_noun + u3qi_la_max_i754(u3_noun x_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/ leading 0x1, skipped by for range) + c3_y* x_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, x_bytes, x_data); + + u3_noun r_data; + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: { + float16_t max_val16 = ((float16_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + max_val16 = f16_max(max_val16, ((float16_t*)x_bytes)[i]); + } + float16_t r16[2]; + r16[0] = max_val16; + r16[1].v = 0x1; + r_data = u3i_bytes((2+1)*sizeof(c3_y), (c3_y*)r16); + break;} + + case 5: { + float32_t max_val32 = ((float32_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + max_val32 = f32_max(max_val32, ((float32_t*)x_bytes)[i]); + } + float32_t r32[2]; + r32[0] = max_val32; + r32[1].v = 0x1; + r_data = u3i_bytes((4+1)*sizeof(c3_y), (c3_y*)r32); + break;} + + case 6: { + float64_t max_val64 = ((float64_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + max_val64 = f64_max(max_val64, ((float64_t*)x_bytes)[i]); + } + float64_t r64[2]; + r64[0] = max_val64; + r64[1].v = 0x1; + r_data = u3i_bytes((8+1)*sizeof(c3_y), (c3_y*)r64); + break;} + + case 7: { + float128_t max_val128 = ((float128_t*)x_bytes)[0]; + for (c3_d i = 0; i < len_x; i++) { + max_val128 = *f128M_max(&max_val128, &((float128_t*)x_bytes)[i]); + } + float128_t r128[2]; + r128[0] = max_val128; + r128[1] = (float128_t){0x1, 0x0}; + r_data = u3i_bytes((16+1)*sizeof(c3_y), (c3_y*)r128); + break;} + } + + // Clean up and return. + u3a_free(x_bytes); + + return r_data; + } + +/* abs - |x| +*/ + u3_noun + u3qi_la_abs_i754(u3_noun x_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/ leading 0x1, skipped by for range) + c3_y* x_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, x_bytes, x_data); + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + for (c3_d i = 0; i < len_x; i++) { + ((float16_t*)x_bytes)[i] = f16_abs(((float16_t*)x_bytes)[i]); + } + break; + + case 5: + for (c3_d i = 0; i < len_x; i++) { + ((float32_t*)x_bytes)[i] = f32_abs(((float32_t*)x_bytes)[i]); + } + break; + + case 6: + for (c3_d i = 0; i < len_x; i++) { + ((float64_t*)x_bytes)[i] = f64_abs(((float64_t*)x_bytes)[i]); + } + break; + + case 7: + for (c3_d i = 0; i < len_x; i++) { + ((float128_t*)x_bytes)[i] = f128_abs(((float128_t*)x_bytes)[i]); + } + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), x_bytes); + + // Clean up and return. + u3a_free(x_bytes); + + return r_data; + } + +/* gth - x > y +*/ + u3_noun + u3qi_la_gth_i754(u3_noun x_data, + u3_noun y_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // y_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, y_bytes, y_data); + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + for (c3_d i = 0; i < len_x; i++) { + float16_t x_val16 = ((float16_t*)x_bytes)[i]; + float16_t y_val16 = ((float16_t*)y_bytes)[i]; + ((float16_t*)y_bytes)[i] = f16_gt(x_val16, y_val16) ? (float16_t){SB_REAL16_ONE} : (float16_t){SB_REAL16_ZERO}; + } + break; + + case 5: + for (c3_d i = 0; i < len_x; i++) { + float32_t x_val32 = ((float32_t*)x_bytes)[i]; + float32_t y_val32 = ((float32_t*)y_bytes)[i]; + ((float32_t*)y_bytes)[i] = f32_gt(x_val32, y_val32) ? (float32_t){SB_REAL32_ONE} : (float32_t){SB_REAL32_ZERO}; + } + break; + + case 6: + for (c3_d i = 0; i < len_x; i++) { + float64_t x_val64 = ((float64_t*)x_bytes)[i]; + float64_t y_val64 = ((float64_t*)y_bytes)[i]; + ((float64_t*)y_bytes)[i] = f64_gt(x_val64, y_val64) ? (float64_t){SB_REAL64_ONE} : (float64_t){SB_REAL64_ZERO}; + } + break; + + case 7: + for (c3_d i = 0; i < len_x; i++) { + float128_t x_val128 = ((float128_t*)x_bytes)[i]; + float128_t y_val128 = ((float128_t*)y_bytes)[i]; + ((float128_t*)y_bytes)[i] = f128M_gt(((float128_t*)&x_val128), ((float128_t*)&y_val128)) ? (float128_t){SB_REAL128L_ONE, SB_REAL128U_ONE} : (float128_t){SB_REAL128L_ZERO, SB_REAL128U_ZERO}; + } + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), y_bytes); + + // Clean up and return. + u3a_free(x_bytes); + u3a_free(y_bytes); + + return r_data; + } + +/* gte - x > y +*/ + u3_noun + u3qi_la_gte_i754(u3_noun x_data, + u3_noun y_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // y_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, y_bytes, y_data); + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + for (c3_d i = 0; i < len_x; i++) { + float16_t x_val16 = ((float16_t*)x_bytes)[i]; + float16_t y_val16 = ((float16_t*)y_bytes)[i]; + ((float16_t*)y_bytes)[i] = f16_ge(x_val16, y_val16) ? (float16_t){SB_REAL16_ONE} : (float16_t){SB_REAL16_ZERO}; + } + break; + + case 5: + for (c3_d i = 0; i < len_x; i++) { + float32_t x_val32 = ((float32_t*)x_bytes)[i]; + float32_t y_val32 = ((float32_t*)y_bytes)[i]; + ((float32_t*)y_bytes)[i] = f32_ge(x_val32, y_val32) ? (float32_t){SB_REAL32_ONE} : (float32_t){SB_REAL32_ZERO}; + } + break; + + case 6: + for (c3_d i = 0; i < len_x; i++) { + float64_t x_val64 = ((float64_t*)x_bytes)[i]; + float64_t y_val64 = ((float64_t*)y_bytes)[i]; + ((float64_t*)y_bytes)[i] = f64_ge(x_val64, y_val64) ? (float64_t){SB_REAL64_ONE} : (float64_t){SB_REAL64_ZERO}; + } + break; + + case 7: + for (c3_d i = 0; i < len_x; i++) { + float128_t x_val128 = ((float128_t*)x_bytes)[i]; + float128_t y_val128 = ((float128_t*)y_bytes)[i]; + ((float128_t*)y_bytes)[i] = f128M_ge(((float128_t*)&x_val128), ((float128_t*)&y_val128)) ? (float128_t){SB_REAL128L_ONE, SB_REAL128U_ONE} : (float128_t){SB_REAL128L_ZERO, SB_REAL128U_ZERO}; + } + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), y_bytes); + + // Clean up and return. + u3a_free(x_bytes); + u3a_free(y_bytes); + + return r_data; + } + +/* lth - x > y +*/ + u3_noun + u3qi_la_lth_i754(u3_noun x_data, + u3_noun y_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // y_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, y_bytes, y_data); + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + for (c3_d i = 0; i < len_x; i++) { + float16_t x_val16 = ((float16_t*)x_bytes)[i]; + float16_t y_val16 = ((float16_t*)y_bytes)[i]; + ((float16_t*)y_bytes)[i] = f16_lt(x_val16, y_val16) ? (float16_t){SB_REAL16_ONE} : (float16_t){SB_REAL16_ZERO}; + } + break; + + case 5: + for (c3_d i = 0; i < len_x; i++) { + float32_t x_val32 = ((float32_t*)x_bytes)[i]; + float32_t y_val32 = ((float32_t*)y_bytes)[i]; + ((float32_t*)y_bytes)[i] = f32_lt(x_val32, y_val32) ? (float32_t){SB_REAL32_ONE} : (float32_t){SB_REAL32_ZERO}; + } + break; + + case 6: + for (c3_d i = 0; i < len_x; i++) { + float64_t x_val64 = ((float64_t*)x_bytes)[i]; + float64_t y_val64 = ((float64_t*)y_bytes)[i]; + ((float64_t*)y_bytes)[i] = f64_lt(x_val64, y_val64) ? (float64_t){SB_REAL64_ONE} : (float64_t){SB_REAL64_ZERO}; + } + break; + + case 7: + for (c3_d i = 0; i < len_x; i++) { + float128_t x_val128 = ((float128_t*)x_bytes)[i]; + float128_t y_val128 = ((float128_t*)y_bytes)[i]; + ((float128_t*)y_bytes)[i] = f128M_lt(((float128_t*)&x_val128), ((float128_t*)&y_val128)) ? (float128_t){SB_REAL128L_ONE, SB_REAL128U_ONE} : (float128_t){SB_REAL128L_ZERO, SB_REAL128U_ZERO}; + } + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), y_bytes); + + // Clean up and return. + u3a_free(x_bytes); + u3a_free(y_bytes); + + return r_data; + } + +/* lte - x > y +*/ + u3_noun + u3qi_la_lte_i754(u3_noun x_data, + u3_noun y_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // y_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, y_bytes, y_data); + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + for (c3_d i = 0; i < len_x; i++) { + float16_t x_val16 = ((float16_t*)x_bytes)[i]; + float16_t y_val16 = ((float16_t*)y_bytes)[i]; + ((float16_t*)y_bytes)[i] = f16_le(x_val16, y_val16) ? (float16_t){SB_REAL16_ONE} : (float16_t){SB_REAL16_ZERO}; + } + break; + + case 5: + for (c3_d i = 0; i < len_x; i++) { + float32_t x_val32 = ((float32_t*)x_bytes)[i]; + float32_t y_val32 = ((float32_t*)y_bytes)[i]; + ((float32_t*)y_bytes)[i] = f32_le(x_val32, y_val32) ? (float32_t){SB_REAL32_ONE} : (float32_t){SB_REAL32_ZERO}; + } + break; + + case 6: + for (c3_d i = 0; i < len_x; i++) { + float64_t x_val64 = ((float64_t*)x_bytes)[i]; + float64_t y_val64 = ((float64_t*)y_bytes)[i]; + ((float64_t*)y_bytes)[i] = f64_le(x_val64, y_val64) ? (float64_t){SB_REAL64_ONE} : (float64_t){SB_REAL64_ZERO}; + } + break; + + case 7: + for (c3_d i = 0; i < len_x; i++) { + float128_t x_val128 = ((float128_t*)x_bytes)[i]; + float128_t y_val128 = ((float128_t*)y_bytes)[i]; + ((float128_t*)y_bytes)[i] = f128M_le(((float128_t*)&x_val128), ((float128_t*)&y_val128)) ? (float128_t){SB_REAL128L_ONE, SB_REAL128U_ONE} : (float128_t){SB_REAL128L_ZERO, SB_REAL128U_ZERO}; + } + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), y_bytes); + + // Clean up and return. + u3a_free(x_bytes); + u3a_free(y_bytes); + + return r_data; + } + +/* adds - axpy = 1*x+[n] +*/ + u3_noun + u3qi_la_adds_i754(u3_noun x_data, + u3_noun n, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // y_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + + float16_t n16; + float32_t n32; + float64_t n64; + float128_t n128; + + // Switch on the block size. We assume that n fits in the target block size; Hoon typecheck should prevent. + switch (u3x_atom(bloq)) { + case 4: + u3r_bytes(0, 2, (c3_y*)&(n16.v), n); + // set y to [n] + for (c3_d i = 0; i < len_x; i++) { + ((float16_t*)y_bytes)[i] = n16; + } + haxpy(len_x, (float16_t){SB_REAL16_ONE}, (float16_t*)x_bytes, 1, (float16_t*)y_bytes, 1); + break; + + case 5: + u3r_bytes(0, 4, (c3_y*)&(n32.v), n); + // set y to [n] + for (c3_d i = 0; i < len_x; i++) { + ((float32_t*)y_bytes)[i] = n32; + } + saxpy(len_x, (float32_t){SB_REAL32_ONE}, (float32_t*)x_bytes, 1, (float32_t*)y_bytes, 1); + break; + + case 6: + u3r_bytes(0, 8, (c3_y*)&(n64.v), n); + // set y to [n] + for (c3_d i = 0; i < len_x; i++) { + ((float64_t*)y_bytes)[i] = n64; + } + daxpy(len_x, (float64_t){SB_REAL64_ONE}, (float64_t*)x_bytes, 1, (float64_t*)y_bytes, 1); + break; + + case 7: + u3r_bytes(0, 16, (c3_y*)&(n128.v[0]), n); + // set y to [n] + for (c3_d i = 0; i < len_x; i++) { + ((float128_t*)y_bytes)[i] = (float128_t){n128.v[0], n128.v[1]}; + } + qaxpy(len_x, (float128_t){SB_REAL128L_ONE,SB_REAL128U_ONE}, (float128_t*)x_bytes, 1, (float128_t*)y_bytes, 1); + break; + } + + // r_data is the result noun of [data] + y_bytes[syz_x] = 0x1; // pin head + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), y_bytes); + + // Clean up and return. + u3a_free(x_bytes); + u3a_free(y_bytes); + + return r_data; + } + +/* subs - axpy = -1*[n]+x +*/ + u3_noun + u3qi_la_subs_i754(u3_noun x_data, + u3_noun n, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* x_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // y_bytes is the data array (w/o leading 0x1) + c3_y* y_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + + float16_t n16; + float32_t n32; + float64_t n64; + float128_t n128; + + // Switch on the block size. We assume that n fits in the target block size; Hoon typecheck should prevent. + switch (u3x_atom(bloq)) { + case 4: + u3r_bytes(0, 2, (c3_y*)&(n16.v), n); + // set y to [n] + for (c3_d i = 0; i < len_x; i++) { + ((float16_t*)y_bytes)[i] = n16; + } + haxpy(len_x, (float16_t){SB_REAL16_NEGONE}, (float16_t*)y_bytes, 1, (float16_t*)x_bytes, 1); + break; + + case 5: + u3r_bytes(0, 4, (c3_y*)&(n32.v), n); + // set y to [n] + for (c3_d i = 0; i < len_x; i++) { + ((float32_t*)y_bytes)[i] = n32; + } + saxpy(len_x, (float32_t){SB_REAL32_NEGONE}, (float32_t*)y_bytes, 1, (float32_t*)x_bytes, 1); + break; + + case 6: + u3r_bytes(0, 8, (c3_y*)&(n64.v), n); + // set y to [n] + for (c3_d i = 0; i < len_x; i++) { + ((float64_t*)y_bytes)[i] = n64; + } + daxpy(len_x, (float64_t){SB_REAL64_NEGONE}, (float64_t*)y_bytes, 1, (float64_t*)x_bytes, 1); + break; + + case 7: + u3r_bytes(0, 16, (c3_y*)&(n128.v[0]), n); + // set y to [n] + for (c3_d i = 0; i < len_x; i++) { + ((float128_t*)y_bytes)[i] = (float128_t){n128.v[0], n128.v[1]}; + } + qaxpy(len_x, (float128_t){SB_REAL128L_NEGONE,SB_REAL128U_NEGONE}, (float128_t*)y_bytes, 1, (float128_t*)x_bytes, 1); + break; + } + + // r_data is the result noun of [data] + x_bytes[syz_x] = 0x1; // pin head + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), x_bytes); + + // Clean up and return. + u3a_free(x_bytes); + u3a_free(y_bytes); + + return r_data; + } + +/* muls - ?scal n * x + elementwise multiplication +*/ + u3_noun + u3qi_la_muls_i754(u3_noun x_data, + u3_noun n, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* x_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + x_bytes[syz_x] = 0x1; // pin head + + float16_t n16; + float32_t n32; + float64_t n64; + float128_t n128; + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + u3r_bytes(0, 2, (c3_y*)&(n16.v), n); + hscal(len_x, n16, (float16_t*)x_bytes, 1); + break; + + case 5: + u3r_bytes(0, 4, (c3_y*)&(n32.v), n); + sscal(len_x, n32, (float32_t*)x_bytes, 1); + break; + + case 6: + u3r_bytes(0, 8, (c3_y*)&(n64.v), n); + dscal(len_x, n64, (float64_t*)x_bytes, 1); + break; + + case 7: + u3r_bytes(0, 16, (c3_y*)&(n128.v[0]), n); + qscal(len_x, n128, (float128_t*)x_bytes, 1); + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), x_bytes); + + // Clean up and return. + u3a_free(x_bytes); + + return r_data; + } + +/* divs - ?scal 1/n * x + elementwise division +*/ + u3_noun + u3qi_la_divs_i754(u3_noun x_data, + u3_noun n, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* x_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + x_bytes[syz_x] = 0x1; // pin head + + float16_t in16; + float32_t in32; + float64_t in64; + float128_t in128; + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + // XX note that in16 is doing double duty here + u3r_bytes(0, 2, (c3_y*)&(in16.v), n); + in16 = f16_div((float16_t){SB_REAL16_ONE}, in16); + hscal(len_x, in16, (float16_t*)x_bytes, 1); + break; + + case 5: + // XX note that in32 is doing double duty here + u3r_bytes(0, 4, (c3_y*)&(in32.v), n); + in32 = f32_div((float32_t){SB_REAL32_ONE}, in32); + sscal(len_x, in32, (float32_t*)x_bytes, 1); + break; + + case 6: + // XX note that in64 is doing double duty here + u3r_bytes(0, 8, (c3_y*)&(in64.v), n); + in64 = f64_div((float64_t){SB_REAL64_ONE}, in64); + dscal(len_x, in64, (float64_t*)x_bytes, 1); + break; + + case 7: + // XX note that in128 is doing double duty here + u3r_bytes(0, 16, (c3_y*)&(in128.v[0]), n); + f128M_div(&((float128_t){SB_REAL128L_ONE,SB_REAL128U_ONE}), &in128, &in128); + qscal(len_x, in128, (float128_t*)x_bytes, 1); + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), x_bytes); + + // Clean up and return. + u3a_free(x_bytes); + + return r_data; + } + +/* mods - x % [n] = x - r*floor(x/r) + remainder after scalar division +*/ + u3_noun + u3qi_la_mods_i754(u3_noun x_data, + u3_noun n, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + // we reuse it for results for parsimony + c3_y* x_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, x_bytes, x_data); + + float16_t n16, in16; + float32_t n32, in32; + float64_t n64, in64; + float128_t n128, in128; + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + u3r_bytes(0, 2, (c3_y*)&(n16.v), n); + in16 = f16_div((float16_t){SB_REAL16_ONE}, n16); + + for (c3_d i = 0; i < len_x; i++) { + float16_t x_val16 = ((float16_t*)x_bytes)[i]; + // Perform division x/n + float16_t div_result16 = f16_mul(in16, x_val16); + // Compute floor of the division result + c3_ds floor_result16 = f16_to_i64(div_result16, softfloat_round_minMag, false); + float16_t floor_float16 = i64_to_f16(floor_result16); + // Multiply n by floor(x/n) + float16_t mult_result16 = f16_mul(n16, floor_float16); + // Compute remainder: x - n * floor(x/n) + ((float16_t*)x_bytes)[i] = f16_sub(x_val16, mult_result16); + } + break; + + case 5: + u3r_bytes(0, 4, (c3_y*)&(n32.v), n); + in32 = f32_div((float32_t){SB_REAL32_ONE}, n32); + + for (c3_d i = 0; i < len_x; i++) { + float32_t x_val32 = ((float32_t*)x_bytes)[i]; + // Perform division x/n + float32_t div_result32 = f32_mul(in32, x_val32); + // Compute floor of the division result + c3_ds floor_result32 = f32_to_i64(div_result32, softfloat_round_minMag, false); + float32_t floor_float32 = i64_to_f32(floor_result32); + // Multiply n by floor(x/n) + float32_t mult_result32 = f32_mul(n32, floor_float32); + // Compute remainder: x - n * floor(x/n) + ((float32_t*)x_bytes)[i] = f32_sub(x_val32, mult_result32); + } + break; + + case 6: + u3r_bytes(0, 8, (c3_y*)&(n64.v), n); + in64 = f64_div((float64_t){SB_REAL64_ONE}, n64); + + for (c3_d i = 0; i < len_x; i++) { + float64_t x_val64 = ((float64_t*)x_bytes)[i]; + // Perform division x/n + float64_t div_result64 = f64_mul(in64, x_val64); + // Compute floor of the division result + c3_ds floor_result64 = f64_to_i64(div_result64, softfloat_round_minMag, false); + float64_t floor_float64 = i64_to_f64(floor_result64); + // Multiply n by floor(x/n) + float64_t mult_result64 = f64_mul(n64, floor_float64); + // Compute remainder: x - n * floor(x/n) + ((float64_t*)x_bytes)[i] = f64_sub(x_val64, mult_result64); + } + break; + + case 7: + u3r_bytes(0, 16, (c3_y*)&(n128.v[0]), n); + f128M_div(&((float128_t){SB_REAL128L_ONE,SB_REAL128U_ZERO}), &n128, &in128); + + for (c3_d i = 0; i < len_x; i++) { + float128_t x_val128 = ((float128_t*)x_bytes)[i]; + // Perform division x/n + float128_t div_result128; + f128M_mul((float128_t*)&in128, (float128_t*)&x_val128, (float128_t*)&div_result128); + // Compute floor of the division result + c3_ds floor_result128 = f128M_to_i64(&div_result128, softfloat_round_minMag, false); + float128_t floor_float128; + i64_to_f128M(floor_result128, &floor_float128); + // Multiply n by floor(x/n) + float128_t mult_result128; + f128M_mul(((float128_t*)&n128), ((float128_t*)&floor_float128), ((float128_t*)&mult_result128)); + // Compute remainder: x - n * floor(x/n) + f128M_sub(((float128_t*)&x_val128), ((float128_t*)&mult_result128), &(((float128_t*)x_bytes)[i])); + } + break; + } + + // r_data is the result noun of [data] + u3_noun r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), x_bytes); + + // Clean up and return. + u3a_free(x_bytes); + + return r_data; + } + +/* dot - ?dot = x · y +*/ + u3_noun + u3qi_la_dot_i754(u3_noun x_data, + u3_noun y_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(shape); + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // y_bytes is the data array (w/ leading 0x1, skipped by ?axpy) + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, y_bytes, y_data); + + u3_noun r_data; + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: { + float16_t r16[2]; + r16[0] = hdot(len_x, (float16_t*)x_bytes, 1, (float16_t*)y_bytes, 1); + r16[1].v = 0x1; + r_data = u3i_bytes((2+1)*sizeof(c3_y), (c3_y*)r16); + break;} + + case 5: { + float32_t r32[2]; + r32[0] = sdot(len_x, (float32_t*)x_bytes, 1, (float32_t*)y_bytes, 1); + r32[1].v = 0x1; + r_data = u3i_bytes((4+1)*sizeof(c3_y), (c3_y*)r32); + break;} + + case 6: { + float64_t r64[2]; + r64[0] = ddot(len_x, (float64_t*)x_bytes, 1, (float64_t*)y_bytes, 1); + r64[1].v = 0x1; + r_data = u3i_bytes((8+1)*sizeof(c3_y), (c3_y*)r64); + break;} + + case 7: { + float128_t r128[2]; + r128[0] = qdot(len_x, (float128_t*)x_bytes, 1, (float128_t*)y_bytes, 1); + r128[1] = (float128_t){0x1, 0x0}; + r_data = u3i_bytes((16+1)*sizeof(c3_y), (c3_y*)r128); + break;} + } + + // Clean up and return. + u3a_free(x_bytes); + u3a_free(y_bytes); + + return r_data; + } + +/* diag - diag(x) +*/ + u3_noun + u3qi_la_diag(u3_noun x_data, + u3_noun shape, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + // Assert length of dims is 2. + if (u3qb_lent(shape) != 2) { + return u3m_bail(c3__exit); + } + // Unpack shape into an array of dimensions. + c3_d *dims = _get_dims(shape); + if (dims[0] != dims[1]) { + return u3m_bail(c3__exit); + } + + // Unpack the data as a byte array. We assume total length < 2**64. + c3_d len_x = _get_length(shape); + c3_d syz_x = len_x * pow(2, bloq - 3); + c3_d wyd = pow(2, bloq - 3); + c3_y* x_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, x_bytes, x_data); + c3_d syz_y = wyd * dims[1]; + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_y+1)*sizeof(c3_y)); + + u3_noun r_data; + + // Grab the index at i*n_x+j in bytes; put it at j. + for (c3_d i = 0; i < dims[1]; i++) { + // Scan across whole field width. + for (c3_y k = 0; k < wyd; k++) { + y_bytes[i*wyd+k] = x_bytes[(i*dims[0]+i)*wyd+k]; + } + } + y_bytes[syz_y] = 0x1; // pin head + + // Unpack the result back into a noun. + r_data = u3i_bytes((syz_y+1)*sizeof(c3_y), y_bytes); + + u3a_free(x_bytes); + u3a_free(y_bytes); + u3a_free(dims); + + return r_data; + } + +/* transpose - x' +*/ + u3_noun + u3qi_la_transpose(u3_noun x_data, + u3_noun shape, + u3_noun bloq) + { + // Assert length of dims is 2. + if (u3qb_lent(shape) != 2) { + return u3m_bail(c3__exit); + } + // Unpack shape into an array of dimensions. + c3_d *dims = _get_dims(shape); + + // Unpack the data as a byte array. We assume total length < 2**64. + c3_d len_x = _get_length(shape); + c3_d syz_x = len_x * pow(2, bloq - 3); + c3_d wyd = pow(2, bloq - 3); + c3_y* x_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + u3r_bytes(0, syz_x+1, x_bytes, x_data); + c3_y* y_bytes = (c3_y*)u3a_malloc((syz_x+1)*sizeof(c3_y)); + + u3_noun r_data; + + // Grab the index at i*n_x+j in bytes; put it at j. + for (c3_d i = 0; i < dims[1]; i++) { + for (c3_d j = 0; j < dims[0]; j++) { + // Scan across whole field width. + for (c3_y k = 0; k < wyd; k++) { + y_bytes[(j*dims[1]+i)*wyd+k] = x_bytes[(i*dims[0]+j)*wyd+k]; + } + } + } + y_bytes[syz_x] = 0x1; // pin head + + // Unpack the result back into a noun. + r_data = u3i_bytes((syz_x+1)*sizeof(c3_y), y_bytes); + + u3a_free(x_bytes); + u3a_free(y_bytes); + u3a_free(dims); + + return r_data; + } + +/* linspace - [a a+(b-a)/n ... b] +*/ + u3_noun + u3qi_la_linspace_i754(u3_noun a, + u3_noun b, + u3_noun n, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + u3_noun r_data; + + switch (u3x_atom(bloq)) { + case 4: { + float16_t a16, b16; + u3r_bytes(0, 2, (c3_y*)&(a16.v), a); + u3r_bytes(0, 2, (c3_y*)&(b16.v), b); + float16_t span16 = f16_sub(b16, a16); + float16_t interval16 = f16_div(span16, i32_to_f16(n-1)); + c3_y* x_bytes16 = (c3_y*)u3a_malloc((n*2+1)*sizeof(c3_y)); + for (c3_d i = 1; i < n-1; i++) { + ((float16_t*)x_bytes16)[i] = f16_add(a16, f16_mul(i32_to_f16(i), interval16)); + } + // Assign in reverse order so that n=1 case is correctly left-hand bound. + ((float16_t*)x_bytes16)[n-1] = b16; + ((float16_t*)x_bytes16)[0] = a16; + x_bytes16[n*2] = 0x1; // pin head + r_data = u3i_bytes((n*2+1)*sizeof(c3_y), x_bytes16); + u3a_free(x_bytes16); + break;} + + case 5: { + float32_t a32, b32; + u3r_bytes(0, 4, (c3_y*)&(a32.v), a); + u3r_bytes(0, 4, (c3_y*)&(b32.v), b); + float32_t span32 = f32_sub(b32, a32); + float32_t interval32 = f32_div(span32, i32_to_f32(n-1)); + c3_y* x_bytes32 = (c3_y*)u3a_malloc((n*4+1)*sizeof(c3_y)); + for (c3_d i = 1; i < n-1; i++) { + ((float32_t*)x_bytes32)[i] = f32_add(a32, f32_mul(i32_to_f32(i), interval32)); + } + ((float32_t*)x_bytes32)[n-1] = b32; + ((float32_t*)x_bytes32)[0] = a32; + x_bytes32[n*4] = 0x1; // pin head + r_data = u3i_bytes((n*4+1)*sizeof(c3_y), x_bytes32); + u3a_free(x_bytes32); + break;} + + case 6: { + float64_t a64, b64; + u3r_bytes(0, 8, (c3_y*)&(a64.v), a); + u3r_bytes(0, 8, (c3_y*)&(b64.v), b); + float64_t span64 = f64_sub(b64, a64); + float64_t interval64 = f64_div(span64, i32_to_f64(n-1)); + c3_y* x_bytes64 = (c3_y*)u3a_malloc((n*8+1)*sizeof(c3_y)); + for (c3_d i = 1; i < n-1; i++) { + ((float64_t*)x_bytes64)[i] = f64_add(a64, f64_mul(i32_to_f64(i), interval64)); + } + ((float64_t*)x_bytes64)[n-1] = b64; + ((float64_t*)x_bytes64)[0] = a64; + x_bytes64[n*8] = 0x1; // pin head + r_data = u3i_bytes((n*8+1)*sizeof(c3_y), x_bytes64); + u3a_free(x_bytes64); + break;} + + case 7: { + float128_t a128, b128; + u3r_bytes(0, 16, (c3_y*)&(a128.v[0]), a); + u3r_bytes(0, 16, (c3_y*)&(b128.v[0]), b); + float128_t span128; + f128M_sub(&b128, &a128, &span128); + float128_t interval128; + float128_t n128; + i32_to_f128M(n-1, &n128); + f128M_div(&span128, &n128, &interval128); + c3_y* x_bytes128 = (c3_y*)u3a_malloc((n*16+1)*sizeof(c3_y)); + float128_t i128; + for (c3_d i = 1; i < n-1; i++) { + i32_to_f128M(i, &i128); + f128M_mul(&i128, &interval128, &((float128_t*)x_bytes128)[i]); + f128M_add(&a128, &((float128_t*)x_bytes128)[i], &((float128_t*)x_bytes128)[i]); + } + ((float128_t*)x_bytes128)[n-1] = b128; + ((float128_t*)x_bytes128)[0] = a128; + x_bytes128[n*16] = 0x1; // pin head + r_data = u3i_bytes((n*16+1)*sizeof(c3_y), x_bytes128); + u3a_free(x_bytes128); + break;} + } + + return r_data; + } + +/* range - [a a+d ... b] +*/ + u3_noun + u3qi_la_range_i754(u3_noun a, + u3_noun b, + u3_noun d, + u3_noun bloq) + { + // Fence on valid bloq size. + if (bloq < 4 || bloq > 7) { + return u3_none; + } + + u3_noun r_data; + + switch (u3x_atom(bloq)) { + case 4: { + float16_t a16, b16, interval16; + u3r_bytes(0, 2, (c3_y*)&(a16.v), a); + u3r_bytes(0, 2, (c3_y*)&(b16.v), b); + u3r_bytes(0, 2, (c3_y*)&(interval16.v), d); + c3_d n16 = f16_to_i64(f16_ceil(f16_div(f16_sub(b16, a16), interval16)), softfloat_round_minMag, false); + c3_y* x_bytes16 = (c3_y*)u3a_malloc(((n16+1)*2)*sizeof(c3_y)); + ((float16_t*)x_bytes16)[0] = a16; + for (c3_d i = 1; i < n16; i++) { + ((float16_t*)x_bytes16)[i] = f16_add(a16, f16_mul(i32_to_f16(i), interval16)); + } + ((float16_t*)x_bytes16)[n16].v = 0x1; // pin head + r_data = u3i_bytes(((n16+1)*2)*sizeof(c3_y), x_bytes16); + u3a_free(x_bytes16); + break;} + + case 5: { + float32_t a32, b32, interval32; + u3r_bytes(0, 4, (c3_y*)&(a32.v), a); + u3r_bytes(0, 4, (c3_y*)&(b32.v), b); + u3r_bytes(0, 4, (c3_y*)&(interval32.v), d); + c3_d n32 = f32_to_i64(f32_ceil(f32_div(f32_sub(b32, a32), interval32)), softfloat_round_minMag, false); + c3_y* x_bytes32 = (c3_y*)u3a_malloc(((n32+1)*4)*sizeof(c3_y)); + ((float32_t*)x_bytes32)[0] = a32; + for (c3_d i = 1; i < n32; i++) { + ((float32_t*)x_bytes32)[i] = f32_add(a32, f32_mul(i32_to_f32(i), interval32)); + } + ((float32_t*)x_bytes32)[n32].v = 0x1; // pin head + r_data = u3i_bytes(((n32+1)*4)*sizeof(c3_y), x_bytes32); + u3a_free(x_bytes32); + break;} + + case 6: { + float64_t a64, b64, interval64; + u3r_bytes(0, 8, (c3_y*)&(a64.v), a); + u3r_bytes(0, 8, (c3_y*)&(b64.v), b); + u3r_bytes(0, 8, (c3_y*)&(interval64.v), d); + c3_d n64 = f64_to_i64(f64_ceil(f64_div(f64_sub(b64, a64), interval64)), softfloat_round_minMag, false); + c3_y* x_bytes64 = (c3_y*)u3a_malloc(((n64+1)*8)*sizeof(c3_y)); + ((float64_t*)x_bytes64)[0] = a64; + for (c3_d i = 1; i < n64; i++) { + ((float64_t*)x_bytes64)[i] = f64_add(a64, f64_mul(i32_to_f64(i), interval64)); + } + ((float64_t*)x_bytes64)[n64].v = 0x1; // pin head + r_data = u3i_bytes(((n64+1)*8)*sizeof(c3_y), x_bytes64); + u3a_free(x_bytes64); + break;} + + case 7: { + float128_t a128, b128, interval128; + u3r_bytes(0, 16, (c3_y*)&(a128.v[0]), a); + u3r_bytes(0, 16, (c3_y*)&(b128.v[0]), b); + u3r_bytes(0, 16, (c3_y*)&(interval128.v[0]), d); + float128_t tmp; + f128M_sub(&b128, &a128, &tmp); + f128M_div(&tmp, &interval128, &tmp); + f128M_ceil(&tmp, &tmp); + c3_d n128 = f128M_to_i64(&tmp, softfloat_round_minMag, false); + c3_y* x_bytes128 = (c3_y*)u3a_malloc(((n128+1)*16)*sizeof(c3_y)); + float128_t i128; + ((float128_t*)x_bytes128)[0] = a128; + for (c3_d i = 1; i < n128; i++) { + i32_to_f128M(i, &i128); + f128M_mul(&i128, &interval128, &((float128_t*)x_bytes128)[i]); + f128M_add(&a128, &((float128_t*)x_bytes128)[i], &((float128_t*)x_bytes128)[i]); + } + ((float128_t*)x_bytes128)[n128].v[0] = 0x1; // pin head + ((float128_t*)x_bytes128)[n128].v[1] = 0x0; // pin head + r_data = u3i_bytes(((n128+1)*16)*sizeof(c3_y), x_bytes128); + u3a_free(x_bytes128); + break;} + } + + return r_data; + } + +/* trace - tr(x) +*/ + u3_noun + u3qi_la_trace_i754(u3_noun x_data, + u3_noun shape, + u3_noun bloq) + { + u3_noun d_data = u3qi_la_diag(x_data, shape, bloq); + c3_d len_x0 = _get_dims(shape)[0]; + u3_noun r_data = u3qi_la_dot_i754(d_data, d_data, u3nt(len_x0, 0x1, u3_nul), u3k(bloq)); + return r_data; + } + +/* mmul +*/ + u3_noun + u3qi_la_mmul_i754(u3_noun x_data, + u3_noun y_data, + u3_noun x_shape, + u3_noun y_shape, + u3_noun bloq) + { + // Unpack the data as a byte array. We assume total length < 2**64. + c3_d M = u3x_atom(u3h(x_shape)); + c3_d Na= u3x_atom(u3h(u3t(x_shape))); + c3_d Nb= u3x_atom(u3h(y_shape)); + c3_d P = u3x_atom(u3h(u3t(y_shape))); + + if ((u3_nul != u3t(u3t(x_shape))) || + (u3_nul != u3t(u3t(y_shape))) || + (Na != Nb)) { + return u3m_bail(c3__exit); + } + c3_d N = Na; + + // Unpack the data as a byte array. We assume total length < 2**64. + // len_x is length in base units + c3_d len_x = _get_length(x_shape); // M*N + + // syz_x is length in bytes + c3_d syz_x = len_x * pow(2, bloq-3); // M*N + + // x_bytes is the data array (w/o leading 0x1) + c3_y* x_bytes = (c3_y*)u3a_malloc(syz_x*sizeof(c3_y)); + u3r_bytes(0, syz_x, x_bytes, x_data); + + // len_x is length in base units + c3_d len_y = _get_length(y_shape); // N*P + + // syz_x is length in bytes + c3_d syz_y = len_y * pow(2, bloq-3); // N*P + + // y_bytes is the data array (w/o leading 0x1) + c3_y* y_bytes = (c3_y*)u3a_malloc(syz_y*sizeof(c3_y)); + u3r_bytes(0, syz_y, y_bytes, y_data); + + // len_r is length in base units + c3_d len_r = M*P; // M*P + + // syz_r is length in bytes + c3_d syz_r = len_r * pow(2, bloq-3); // M*P + + // r_bytes is the result array + c3_y* r_bytes = (c3_y*)u3a_malloc((syz_r+1)*sizeof(c3_y)); + r_bytes[syz_r] = 0x1; // pin head + // initialize with 0x0s + for (c3_d i = 0; i < syz_r; i++) { + r_bytes[i] = 0x0; + } + + // Switch on the block size. + switch (u3x_atom(bloq)) { + case 4: + hgemm('N', 'N', M, N, P, (float16_t){SB_REAL16_ONE}, (float16_t*)x_bytes, N, (float16_t*)y_bytes, P, (float16_t){SB_REAL16_ZERO}, (float16_t*)r_bytes, P); + break; + + case 5: + sgemm('N', 'N', M, N, P, (float32_t){SB_REAL32_ONE}, (float32_t*)x_bytes, N, (float32_t*)y_bytes, P, (float32_t){SB_REAL32_ZERO}, (float32_t*)r_bytes, P); + break; + + case 6: + dgemm('N', 'N', M, N, P, (float64_t){SB_REAL64_ONE}, (float64_t*)x_bytes, N, (float64_t*)y_bytes, P, (float64_t){SB_REAL64_ZERO}, (float64_t*)r_bytes, P); + break; + + case 7: + qgemm('N', 'N', M, N, P, (float128_t){SB_REAL128L_ONE,SB_REAL128U_ONE}, (float128_t*)x_bytes, N, (float128_t*)y_bytes, P, (float128_t){SB_REAL128L_ZERO,SB_REAL128U_ZERO}, (float128_t*)r_bytes, P); + break; + } + + // Unpack the result back into a noun. + u3_noun r_data = u3i_bytes(syz_r+1, r_bytes); + u3_noun M_ = u3i_chub(M); + u3_noun P_ = u3i_chub(P); + + u3a_free(x_bytes); + u3a_free(y_bytes); + u3a_free(r_bytes); + + return u3nc(u3nq(u3nt(M_, P_, u3_nul), u3k(bloq), c3__i754, u3_nul), r_data); + } + + u3_noun + u3wi_la_add(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, + y_meta, y_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_6, &y_meta, + u3x_sam_7, &y_data, + 0) || + c3n == u3r_sing(x_meta, y_meta) || + c3n == u3ud(x_data) || + c3n == u3ud(y_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == u3ud(rnd) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_add_i754(x_data, y_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_sub(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, + y_meta, y_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_6, &y_meta, + u3x_sam_7, &y_data, + 0) || + c3n == u3r_sing(x_meta, y_meta) || + c3n == u3ud(x_data) || + c3n == u3ud(y_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == u3ud(rnd) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_sub_i754(x_data, y_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_mul(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, + y_meta, y_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_6, &y_meta, + u3x_sam_7, &y_data, + 0) || + c3n == u3r_sing(x_meta, y_meta) || + c3n == u3ud(x_data) || + c3n == u3ud(y_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == u3ud(rnd) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_mul_i754(x_data, y_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_div(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, + y_meta, y_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_6, &y_meta, + u3x_sam_7, &y_data, + 0) || + c3n == u3r_sing(x_meta, y_meta) || + c3n == u3ud(x_data) || + c3n == u3ud(y_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == u3ud(rnd) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_div_i754(x_data, y_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_mod(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, + y_meta, y_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_6, &y_meta, + u3x_sam_7, &y_data, + 0) || + c3n == u3r_sing(x_meta, y_meta) || + c3n == u3ud(x_data) || + c3n == u3ud(y_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == u3ud(rnd) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_mod_i754(x_data, y_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_cumsum(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &x_meta, + u3x_sam_3, &x_data, + 0) || + c3n == u3ud(x_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == _check(u3nc(x_meta, x_data)) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_cumsum_i754(x_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3nc(0x1, u3_nul), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_argmin(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &x_meta, + u3x_sam_3, &x_data, + 0) || + c3n == u3ud(x_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == _check(u3nc(x_meta, x_data)) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: { + u3_noun r_data = u3qi_la_argmin_i754(x_data, x_shape, x_bloq); + // bare atom (@ index) + return r_data;} + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_ravel(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &x_meta, + u3x_sam_3, &x_data, + 0) || + c3n == u3ud(x_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == _check(u3nc(x_meta, x_data)) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: { + u3_noun r_data = u3qi_la_ravel_i754(x_data, x_shape, x_bloq); + // (list @) + return r_data;} + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_argmax(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &x_meta, + u3x_sam_3, &x_data, + 0) || + c3n == u3ud(x_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == _check(u3nc(x_meta, x_data)) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: { + u3_noun r_data = u3qi_la_argmax_i754(x_data, x_shape, x_bloq); + // bare atom (@ index) + return r_data;} + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_min(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &x_meta, + u3x_sam_3, &x_data, + 0) || + c3n == u3ud(x_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == _check(u3nc(x_meta, x_data)) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: { + u3_noun r_data = u3qi_la_min_i754(x_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3nt(0x1, 0x1, u3_nul), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data);} + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_max(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &x_meta, + u3x_sam_3, &x_data, + 0) || + c3n == u3ud(x_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == _check(u3nc(x_meta, x_data)) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: { + u3_noun r_data = u3qi_la_max_i754(x_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3nt(0x1, 0x1, u3_nul), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data);} + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_abs(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &x_meta, + u3x_sam_3, &x_data, + 0) || + c3n == u3ud(x_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: { + u3_noun r_data = u3qi_la_abs_i754(x_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data);} + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_gth(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, + y_meta, y_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_6, &y_meta, + u3x_sam_7, &y_data, + 0) || + c3n == u3r_sing(x_meta, y_meta) || + c3n == u3ud(x_data) || + c3n == u3ud(y_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: { + u3_noun r_data = u3qi_la_gth_i754(x_data, y_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3k(x_meta), r_data);} + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_gte(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, + y_meta, y_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_6, &y_meta, + u3x_sam_7, &y_data, + 0) || + c3n == u3r_sing(x_meta, y_meta) || + c3n == u3ud(x_data) || + c3n == u3ud(y_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: { + u3_noun r_data = u3qi_la_gte_i754(x_data, y_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3k(x_meta), r_data);} + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_lth(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, + y_meta, y_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_6, &y_meta, + u3x_sam_7, &y_data, + 0) || + c3n == u3r_sing(x_meta, y_meta) || + c3n == u3ud(x_data) || + c3n == u3ud(y_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: { + u3_noun r_data = u3qi_la_lth_i754(x_data, y_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3k(x_meta), r_data);} + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_lte(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, + y_meta, y_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_6, &y_meta, + u3x_sam_7, &y_data, + 0) || + c3n == u3r_sing(x_meta, y_meta) || + c3n == u3ud(x_data) || + c3n == u3ud(y_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: { + u3_noun r_data = u3qi_la_lte_i754(x_data, y_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3k(x_meta), r_data);} + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_adds(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, n; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_3, &n, + 0) || + c3n == u3ud(x_data) || + c3n == u3ud(n) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_adds_i754(x_data, n, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + + u3_noun + u3wi_la_subs(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, n; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_3, &n, + 0) || + c3n == u3ud(x_data) || + c3n == u3ud(n) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_subs_i754(x_data, n, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + + u3_noun + u3wi_la_muls(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, n; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_3, &n, + 0) || + c3n == u3ud(x_data) || + c3n == u3ud(n) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_muls_i754(x_data, n, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + + u3_noun + u3wi_la_divs(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, n; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_3, &n, + 0) || + c3n == u3ud(x_data) || + c3n == u3ud(n) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_divs_i754(x_data, n, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + + u3_noun + u3wi_la_mods(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, n; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_3, &n, + 0) || + c3n == u3ud(x_data) || + c3n == u3ud(n) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_mods_i754(x_data, n, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + + u3_noun + u3wi_la_dot(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, + y_meta, y_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_6, &y_meta, + u3x_sam_7, &y_data, + 0) || + c3n == u3r_sing(x_meta, y_meta) || + c3n == u3ud(x_data) || + c3n == u3ud(y_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_dot_i754(x_data, y_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + c3_d len_x0 = _get_dims(x_shape)[0]; + return u3nc(u3nq(u3nt(len_x0, 0x1, u3_nul), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_transpose(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &x_meta, + u3x_sam_3, &x_data, + 0) || + c3n == u3ud(x_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == _check(cor) + ) + { + return u3m_bail(c3__exit); + } else { + u3_noun r_data = u3qi_la_transpose(x_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3nt(u3k(u3h(x_shape)), u3k(u3h(u3t(x_shape))), u3_nul), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + } + } + } + + u3_noun + u3wi_la_linspace(u3_noun cor) + { + u3_noun x_meta, a, b, n, rnd; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &x_meta, + u3x_sam_12, &a, + u3x_sam_13, &b, + u3x_sam_7, &n, + 0)) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == u3ud(n) || + (n < 1) // crash on zero size + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_linspace_i754(a, b, n, x_bloq); + if (r_data == u3_none) { return u3_none; } + x_shape = u3nc(u3x_atom(n), u3_nul); + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_range(u3_noun cor) + { + u3_noun x_meta, a, b, d, rnd; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &x_meta, + u3x_sam_12, &a, + u3x_sam_13, &b, + u3x_sam_7, &d, + 0)) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_range_i754(a, b, d, x_bloq); + if (r_data == u3_none) { return u3_none; } + c3_d a_, b_, d_; + c3_ds n_; + switch (x_bloq) { + case 4: + u3r_bytes(0, 2, (c3_y*)&a_, a); + u3r_bytes(0, 2, (c3_y*)&b_, b); + u3r_bytes(0, 2, (c3_y*)&d_, d); + n_ = f16_to_i64(f16_ceil(f16_div(f16_sub((float16_t){b_}, (float16_t){a_}), (float16_t){d_})), softfloat_round_minMag, false) - 1; + break; + case 5: + u3r_bytes(0, 4, (c3_y*)&a_, a); + u3r_bytes(0, 4, (c3_y*)&b_, b); + u3r_bytes(0, 4, (c3_y*)&d_, d); + n_ = f32_to_i64(f32_ceil(f32_div(f32_sub((float32_t){b_}, (float32_t){a_}), (float32_t){d_})), softfloat_round_minMag, false) - 1; + break; + case 6: + u3r_bytes(0, 8, (c3_y*)&a_, a); + u3r_bytes(0, 8, (c3_y*)&b_, b); + u3r_bytes(0, 8, (c3_y*)&d_, d); + n_ = f64_to_i64(f64_ceil(f64_div(f64_sub((float64_t){b_}, (float64_t){a_}), (float64_t){d_})), softfloat_round_minMag, false) - 1; + break; + case 7: { + c3_d a__[2], b__[2], d__[2]; + u3r_bytes(0, 16, (c3_y*)&a__, a); + u3r_bytes(0, 16, (c3_y*)&b__, b); + u3r_bytes(0, 16, (c3_y*)&d__, d); + float128_t tmp; + f128M_sub((float128_t*)&b__, (float128_t*)&a__, &tmp); + f128M_div(&tmp, (float128_t*)&d__, &tmp); + f128M_ceil(&tmp, &tmp); + n_ = f128M_to_i64(&tmp, softfloat_round_minMag, false) - 1; + break;} + } + u3_noun n = u3i_chub(n_+1); + x_shape = u3nc(u3k(n), u3_nul); + return u3nc(u3nq(u3k(x_shape), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_diag(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &x_meta, + u3x_sam_3, &x_data, + 0) || + c3n == u3ud(x_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + x_tail = u3t(u3t(u3t(x_meta))); // 15 + if ( c3n == u3ud(x_bloq) || + c3n == u3ud(x_kind) || + c3n == _check(cor) + ) + { + return u3m_bail(c3__exit); + } else { + u3_noun r_data = u3qi_la_diag(x_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + c3_d len_x0 = _get_dims(x_shape)[0]; + return u3nc(u3nq(u3nt(len_x0, 0x1, u3_nul), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data); + } + } + } + + u3_noun + u3wi_la_trace(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_2, &x_meta, + u3x_sam_3, &x_data, + 0) || + c3n == u3ud(x_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, x_tail; + if ( c3n == u3r_mean(x_meta, + 2, &x_shape, + 6, &x_bloq, + 14, &x_kind, + 15, &x_tail, + 0) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: { + u3_noun r_data = u3qi_la_trace_i754(x_data, x_shape, x_bloq); + if (r_data == u3_none) { return u3_none; } + return u3nc(u3nq(u3nt(0x1, 0x1, u3_nul), u3k(x_bloq), u3k(x_kind), u3k(x_tail)), r_data);} + + default: + return u3_none; + } + } + } + } + + u3_noun + u3wi_la_mmul(u3_noun cor) + { + // Each argument is a ray, [=meta data=@ux] + u3_noun x_meta, x_data, + y_meta, y_data; + + if ( c3n == u3r_mean(cor, + u3x_sam_4, &x_meta, + u3x_sam_5, &x_data, + u3x_sam_6, &y_meta, + u3x_sam_7, &y_data, + 0) || + c3n == u3ud(x_data) || + c3n == u3ud(y_data) ) + { + return u3m_bail(c3__exit); + } else { + u3_noun x_shape, x_bloq, x_kind, + y_shape, + rnd; + x_shape = u3h(x_meta); // 2 + x_bloq = u3h(u3t(x_meta)); // 6 + x_kind = u3h(u3t(u3t(x_meta))); // 14 + y_shape = u3h(y_meta); // 2 + rnd = u3h(u3t(u3t(u3t(cor)))); // 30 + if ( c3n == _check(u3nc(x_meta, x_data)) || + c3n == _check(u3nc(y_meta, y_data)) + ) + { + return u3m_bail(c3__exit); + } else { + switch (x_kind) { + case c3__i754: + _set_rounding(rnd); + u3_noun r_data = u3qi_la_mmul_i754(x_data, y_data, x_shape, y_shape, x_bloq); + // result is already [meta data] + return r_data; + + default: + return u3_none; + } + } + } + } diff --git a/vere/pkg/noun/jets/k.h b/vere/pkg/noun/jets/k.h new file mode 100644 index 0000000..27733fb --- /dev/null +++ b/vere/pkg/noun/jets/k.h @@ -0,0 +1,185 @@ +/// @file + +#ifndef U3_JETS_K_H +#define U3_JETS_K_H + +#include "types.h" + + /** Tier 1. + **/ + u3_noun u3ka_add(u3_noun a, u3_noun b); + u3_noun u3ka_dec(u3_atom a); + u3_noun u3ka_div(u3_noun a, u3_noun b); + u3_noun u3ka_sub(u3_noun a, u3_noun b); + u3_noun u3ka_max(u3_noun a, u3_noun b); + u3_noun u3ka_min(u3_noun a, u3_noun b); + u3_noun u3ka_mod(u3_noun a, u3_noun b); + u3_noun u3ka_mul(u3_noun a, u3_noun b); + u3_noun u3ka_gth(u3_noun a, u3_noun b); + u3_noun u3ka_lte(u3_noun a, u3_noun b); + + /** Tier 2. + **/ + u3_noun u3kb_lent(u3_noun a); + u3_noun u3kb_weld(u3_noun a, u3_noun b); + u3_noun u3kb_flop(u3_noun a); + +/* u3kc: tier 3 functions +*/ + /* u3kc_bex(): binary exponent. + */ + u3_noun + u3kc_bex(u3_atom); + + /* u3kc_con(): binary loobean conjunction. + */ + u3_noun + u3kc_con(u3_noun a, + u3_noun b); + + /* u3kc_mix(): binary xor. + */ + u3_noun + u3kc_mix(u3_atom a, u3_atom b); + + /* u3kc_lsh(): left shift. + */ + u3_noun + u3kc_lsh(u3_noun a, u3_noun b, u3_noun c); + + /* u3kc_rsh(): right shift. + */ + u3_noun + u3kc_rsh(u3_noun a, u3_noun b, u3_noun c); + + /* u3kc_rep(): assemble single. + */ + u3_noun + u3kc_rep(u3_atom a, + u3_atom b, + u3_noun c); + + /* u3kc_rip(): disassemble. + */ + u3_noun + u3kc_rip(u3_atom a, + u3_atom b, + u3_atom c); + + /* u3kc_rev(): reverse block order, accounting for leading zeroes. + */ + u3_noun + u3kc_rev(u3_atom boz, u3_atom len, u3_atom dat); + + /* u3kc_swp(): reverse block order. + */ + u3_noun + u3kc_swp(u3_atom a, u3_atom b); + +/* u3kd: tier 4 functions +*/ + /* u3kdb_get(): map get for key `b` in map `a` with u3_none. + */ + u3_weak + u3kdb_get(u3_noun a, u3_noun b); + + /* u3kdb_got(): map get for key `b` in map `a` with bail. + */ + u3_noun + u3kdb_got(u3_noun a, u3_noun b); + + /* u3kdb_put(): map put for key `b`, value `c` in map `a`. + */ + u3_weak + u3kdb_put(u3_noun a, u3_noun b, u3_noun c); + + /* u3kdb_del(): map del for key `b` + */ + u3_weak + u3kdb_del(u3_noun a, u3_noun b); + + /* u3kdb_has(): test for get. + */ + u3_noun + u3kdb_has(u3_noun a, u3_noun b); + + /* u3kdb_gas(): list to map. + */ + u3_noun + u3kdb_gas(u3_noun a, u3_noun b); + + /* u3kdb_uni(): map union. + */ + u3_noun + u3kdb_uni(u3_noun a, u3_noun b); + + /* u3kdi_gas(): list to map. + */ + u3_noun + u3kdi_gas(u3_noun a, u3_noun b); + + /* u3kdi_has(): test for presence. + */ + u3_noun + u3kdi_has(u3_noun a, u3_noun b); + + /* u3kdi_tap(): map/set convert to list. (solves by_tap also.) + */ + u3_noun + u3kdi_tap(u3_noun a); + + /* u3kdi_put(): put in set. + */ + u3_weak + u3kdi_put(u3_noun a, u3_noun b); + + /* u3kdi_uni(): set union. + */ + u3_noun + u3kdi_uni(u3_noun a, u3_noun b); + +# define u3kdb_tap(a) u3kdi_tap(a) + +/* u3ke: tier 5 functions +*/ + /* u3ke_cue(): expand saved pill. + */ + u3_noun + u3ke_cue(u3_atom a); + + /* u3ke_jam(): pack noun as atom. + */ + u3_atom + u3ke_jam(u3_noun a); + + /* u3ke_trip(): atom to tape. + */ + u3_noun + u3ke_trip(u3_noun a); + + /* u3ke_json_de(): parse JSON from cord. + */ + u3_noun + u3ke_json_de(u3_atom); + + /* u3ke_json_en(): serialize JSON to cord. + */ + u3_atom + u3ke_json_en(u3_noun); + + /* u3kf_fork(): build %fork span. + */ + u3_noun + u3kf_fork(u3_noun yed); + + /* u3kz_fork(): build %fork span. + */ + u3_noun + u3kz_fork(u3_noun yed); + + /* u3kfu_repo(): + */ + u3_noun + u3kfu_repo(u3_noun, u3_noun); + +#endif /* ifndef U3_JETS_K_H */ diff --git a/vere/pkg/noun/jets/q.h b/vere/pkg/noun/jets/q.h new file mode 100644 index 0000000..db1cfe1 --- /dev/null +++ b/vere/pkg/noun/jets/q.h @@ -0,0 +1,306 @@ +/// @file + +#ifndef U3_JETS_Q_H +#define U3_JETS_Q_H + +#include "types.h" + + /** Tier 1. + **/ + u3_noun u3qa_add(u3_atom, u3_atom); + u3_noun u3qa_dec(u3_atom); + u3_noun u3qa_div(u3_atom, u3_atom); + u3_noun u3qa_gte(u3_atom, u3_atom); + u3_noun u3qa_gth(u3_atom, u3_atom); + u3_noun u3qa_inc(u3_atom); + u3_noun u3qa_lte(u3_atom, u3_atom); + u3_noun u3qa_lth(u3_atom, u3_atom); + u3_noun u3qa_max(u3_atom, u3_atom); + u3_noun u3qa_min(u3_atom, u3_atom); + u3_noun u3qa_mod(u3_atom, u3_atom); + u3_noun u3qa_mul(u3_atom, u3_atom); + u3_noun u3qa_sub(u3_atom, u3_atom); + + /** Tier 2. + **/ + u3_noun u3qb_bind(u3_noun, u3_noun); + u3_noun u3qb_clap(u3_noun, u3_noun, u3_noun); + u3_noun u3qb_drop(u3_noun); + u3_noun u3qb_flop(u3_noun); + u3_noun u3qb_lent(u3_noun); + u3_noun u3qb_levy(u3_noun, u3_noun); + u3_noun u3qb_lien(u3_noun, u3_noun); + u3_noun u3qb_murn(u3_noun, u3_noun); + u3_noun u3qb_need(u3_noun); + u3_noun u3qb_mate(u3_noun, u3_noun); + u3_noun u3qb_reap(u3_atom, u3_noun); + u3_noun u3qb_reel(u3_noun, u3_noun); + u3_noun u3qb_roll(u3_noun, u3_noun); + u3_noun u3qb_skid(u3_noun, u3_noun); + u3_noun u3qb_skim(u3_noun, u3_noun); + u3_noun u3qb_skip(u3_noun, u3_noun); + u3_noun u3qb_scag(u3_atom, u3_noun); + u3_noun u3qb_slag(u3_atom, u3_noun); + u3_noun u3qb_snag(u3_atom, u3_noun); + u3_noun u3qb_sort(u3_noun, u3_noun); + u3_noun u3qb_turn(u3_noun, u3_noun); + u3_noun u3qb_weld(u3_noun, u3_noun); + + /** Tier 3. + **/ + u3_noun u3qc_aor(u3_atom, u3_atom); + u3_noun u3qc_bex(u3_atom); + u3_noun u3qc_xeb(u3_atom); + u3_noun u3qc_can(u3_atom, u3_noun); + u3_noun u3qc_cap(u3_atom); + u3_noun u3qc_cat(u3_atom, u3_atom, u3_atom); + u3_noun u3qc_clz(u3_atom, u3_atom, u3_atom); + u3_noun u3qc_con(u3_atom, u3_atom); + u3_noun u3qc_ctz(u3_atom); + u3_noun u3qc_cut(u3_atom, u3_atom, u3_atom, u3_atom); + u3_noun u3qc_dis(u3_atom, u3_atom); + u3_noun u3qc_dor(u3_atom, u3_atom); + u3_noun u3qc_dvr(u3_atom, u3_atom); + u3_noun u3qc_end(u3_atom, u3_atom, u3_atom); + u3_noun u3qc_gor(u3_atom, u3_atom); + u3_noun u3qc_ham(u3_atom); + u3_noun u3qc_hew(u3_atom, u3_atom, u3_atom, u3_noun); + u3_noun u3qc_lsh(u3_atom, u3_atom, u3_atom); + u3_noun u3qc_mas(u3_atom); + u3_noun u3qc_met(u3_atom, u3_atom); + u3_noun u3qc_mix(u3_atom, u3_atom); + u3_noun u3qc_mor(u3_atom, u3_atom); + u3_noun u3qc_muk(u3_atom, u3_atom, u3_atom); + u3_noun u3qc_peg(u3_atom, u3_atom); + u3_noun u3qc_pow(u3_atom, u3_atom); + u3_noun u3qc_rap(u3_atom, u3_noun); + u3_noun u3qc_rep(u3_atom, u3_atom, u3_noun); + u3_noun u3qc_rev(u3_atom, u3_atom, u3_atom); + u3_noun u3qc_rig(u3_atom, u3_atom, u3_atom); + u3_noun u3qc_rip(u3_atom, u3_atom, u3_atom); + u3_noun u3qc_rsh(u3_atom, u3_atom, u3_atom); + u3_noun u3qc_sew(u3_atom, u3_atom, u3_atom, u3_atom, u3_atom); + u3_noun u3qc_swp(u3_atom, u3_atom); + u3_noun u3qc_sqt(u3_atom); + + c3_d u3qc_rig_s(c3_g, c3_w, c3_g); + + u3_noun u3_po_find_prefix(c3_y one, c3_y two, c3_y three); + u3_noun u3_po_find_suffix(c3_y one, c3_y two, c3_y three); + void u3_po_to_prefix(u3_noun id, c3_y* a, c3_y* b, c3_y* c); + void u3_po_to_suffix(u3_noun id, c3_y* a, c3_y* b, c3_y* c); + + /** Tier 4. + **/ + u3_noun u3qdb_all(u3_noun, u3_noun); + u3_noun u3qdb_any(u3_noun, u3_noun); + u3_noun u3qdb_apt(u3_noun); + u3_noun u3qdb_bif(u3_noun, u3_noun); + u3_noun u3qdb_del(u3_noun, u3_noun); + u3_noun u3qdb_dif(u3_noun, u3_noun); + u3_noun u3qdb_gas(u3_noun, u3_noun); + u3_noun u3qdb_get(u3_noun, u3_noun); + u3_noun u3qdb_has(u3_noun, u3_noun); + u3_noun u3qdb_int(u3_noun, u3_noun); + u3_noun u3qdb_key(u3_noun); + u3_noun u3qdb_put(u3_noun, u3_noun, u3_noun); + u3_noun u3qdb_run(u3_noun, u3_noun); +# define u3qdb_tap u3qdi_tap + u3_noun u3qdb_uni(u3_noun, u3_noun); + u3_noun u3qdb_urn(u3_noun, u3_noun); +# define u3qdb_wyt u3qdi_wyt + + u3_noun u3qdi_apt(u3_noun); + u3_noun u3qdi_bif(u3_noun, u3_noun); + u3_noun u3qdi_del(u3_noun, u3_noun); + u3_noun u3qdi_dif(u3_noun, u3_noun); + u3_noun u3qdi_gas(u3_noun, u3_noun); + u3_noun u3qdi_has(u3_noun, u3_noun); + u3_noun u3qdi_int(u3_noun, u3_noun); + u3_noun u3qdi_put(u3_noun, u3_noun); + u3_noun u3qdi_rep(u3_noun, u3_noun); + u3_noun u3qdi_run(u3_noun, u3_noun); + u3_noun u3qdi_tap(u3_noun); + u3_noun u3qdi_uni(u3_noun, u3_noun); + u3_noun u3qdi_wyt(u3_noun); + + /** Tier 5. + **/ + u3_noun u3qe_cue(u3_atom); + u3_noun u3qe_jam(u3_atom); + u3_noun u3qe_mat(u3_atom); + u3_noun u3qe_rub(u3_atom, u3_atom); + u3_noun u3qe_leer(u3_atom); + u3_noun u3qe_lore(u3_atom); + u3_noun u3qe_loss(u3_noun, u3_noun); + u3_noun u3qe_lune(u3_atom); + u3_noun u3qe_repg(u3_noun, u3_noun, u3_noun); + u3_noun u3qe_rexp(u3_noun, u3_noun); + u3_noun u3qe_trip(u3_atom); + + u3_atom u3qe_scot(u3_atom, u3_atom); + u3_atom u3qe_scow(u3_atom, u3_atom); + + u3_noun u3qea_ecba_en(u3_atom, u3_atom); + u3_noun u3qea_ecba_de(u3_atom, u3_atom); + u3_noun u3qea_ecbb_en(u3_atom, u3_atom); + u3_noun u3qea_ecbb_de(u3_atom, u3_atom); + u3_noun u3qea_ecbc_en(u3_atom, u3_atom); + u3_noun u3qea_ecbc_de(u3_atom, u3_atom); + + u3_noun u3qea_cbca_en(u3_atom, u3_atom, u3_atom); + u3_noun u3qea_cbca_de(u3_atom, u3_atom, u3_atom); + u3_noun u3qea_cbcb_en(u3_atom, u3_atom, u3_atom); + u3_noun u3qea_cbcb_de(u3_atom, u3_atom, u3_atom); + u3_noun u3qea_cbcc_en(u3_atom, u3_atom, u3_atom); + u3_noun u3qea_cbcc_de(u3_atom, u3_atom, u3_atom); + + u3_noun u3qea_de(u3_atom, u3_atom); + u3_noun u3qea_en(u3_atom, u3_atom); + + u3_noun u3qee_recs(u3_atom); + + u3_atom u3qe_fein_ob(u3_atom pyn); + u3_atom u3qe_fynd_ob(u3_atom pyn); + + u3_noun u3qe_hmac(u3_noun, u3_atom, u3_atom, + u3_atom, u3_atom, u3_atom, u3_atom); + + u3_noun u3qe_en_base16(u3_atom len, u3_atom dat); + u3_noun u3qe_de_base16(u3_atom inp); + + u3_noun u3qe_json_de(u3_atom); + u3_atom u3qe_json_en(u3_noun); + + u3_noun u3qeo_raw(u3_atom, u3_atom); + + u3_noun u3qef_drg(u3_noun, u3_atom); + u3_noun u3qef_lug(u3_noun, u3_noun, u3_atom, u3_atom); + + u3_noun u3qer_add(u3_atom, u3_atom, u3_atom); + u3_noun u3qer_sub(u3_atom, u3_atom, u3_atom); + u3_noun u3qer_mul(u3_atom, u3_atom, u3_atom); + u3_noun u3qer_div(u3_atom, u3_atom, u3_atom); + u3_noun u3qer_sqt(u3_atom, u3_atom); + u3_noun u3qer_fma(u3_atom, u3_atom, u3_atom, u3_atom); + u3_noun u3qer_lth(u3_atom, u3_atom); + u3_noun u3qer_lte(u3_atom, u3_atom); + u3_noun u3qer_equ(u3_atom, u3_atom); + u3_noun u3qer_gte(u3_atom, u3_atom); + u3_noun u3qer_gth(u3_atom, u3_atom); + + u3_noun u3qet_add(u3_atom, u3_atom, u3_atom); + u3_noun u3qet_sub(u3_atom, u3_atom, u3_atom); + u3_noun u3qet_mul(u3_atom, u3_atom, u3_atom); + u3_noun u3qet_div(u3_atom, u3_atom, u3_atom); + u3_noun u3qet_sqt(u3_atom, u3_atom); + u3_noun u3qet_fma(u3_atom, u3_atom, u3_atom, u3_atom); + u3_noun u3qet_lth(u3_atom, u3_atom); + u3_noun u3qet_lte(u3_atom, u3_atom); + u3_noun u3qet_equ(u3_atom, u3_atom); + u3_noun u3qet_gte(u3_atom, u3_atom); + u3_noun u3qet_gth(u3_atom, u3_atom); + + u3_noun u3qeq_add(u3_atom, u3_atom, u3_atom); + u3_noun u3qeq_sub(u3_atom, u3_atom, u3_atom); + u3_noun u3qeq_mul(u3_atom, u3_atom, u3_atom); + u3_noun u3qeq_div(u3_atom, u3_atom, u3_atom); + u3_noun u3qeq_sqt(u3_atom, u3_atom); + u3_noun u3qeq_fma(u3_atom, u3_atom, u3_atom, u3_atom); + u3_noun u3qeq_lth(u3_atom, u3_atom); + u3_noun u3qeq_lte(u3_atom, u3_atom); + u3_noun u3qeq_equ(u3_atom, u3_atom); + u3_noun u3qeq_gte(u3_atom, u3_atom); + u3_noun u3qeq_gth(u3_atom, u3_atom); + + u3_noun u3qes_add(u3_atom, u3_atom, u3_atom); + u3_noun u3qes_sub(u3_atom, u3_atom, u3_atom); + u3_noun u3qes_mul(u3_atom, u3_atom, u3_atom); + u3_noun u3qes_div(u3_atom, u3_atom, u3_atom); + u3_noun u3qes_sqt(u3_atom, u3_atom); + u3_noun u3qes_fma(u3_atom, u3_atom, u3_atom, u3_atom); + u3_noun u3qes_lth(u3_atom, u3_atom); + u3_noun u3qes_lte(u3_atom, u3_atom); + u3_noun u3qes_equ(u3_atom, u3_atom); + u3_noun u3qes_gte(u3_atom, u3_atom); + u3_noun u3qes_gth(u3_atom, u3_atom); + + u3_noun u3qe_decompress_zlib(u3_atom, u3_noun); + u3_noun u3qe_decompress_gzip(u3_atom, u3_noun); + + /** Tier 6. + **/ + u3_noun u3qf_bull(u3_noun, u3_noun); + u3_noun u3qf_cell(u3_noun, u3_noun); + u3_noun u3qf_comb(u3_noun, u3_noun); + u3_noun u3qf_cons(u3_noun, u3_noun); + u3_noun u3qf_core(u3_noun, u3_noun); + u3_noun u3qf_cube(u3_noun, u3_noun); + u3_noun u3qf_face(u3_noun, u3_noun); + u3_noun u3qf_fine(u3_noun, u3_noun, u3_noun); + u3_noun u3qf_fitz(u3_noun, u3_noun); + u3_noun u3qf_flay(u3_noun); + u3_noun u3qf_forq(u3_noun, u3_noun); + u3_noun u3qf_fork(u3_noun); + u3_noun u3qf_grof(u3_noun); + u3_noun u3qf_hint(u3_noun, u3_noun); + u3_noun u3qf_hike(u3_noun, u3_noun); + u3_noun u3qf_look(u3_noun, u3_noun); + u3_noun u3qf_loot(u3_noun, u3_noun); + u3_noun u3qf_slot(u3_atom, u3_noun); + u3_noun u3qf_type(u3_noun); + + u3_noun u3qfl_bunt(u3_noun, u3_noun); + u3_noun u3qfl_whip(u3_noun, u3_noun, u3_noun); + + u3_noun u3qfr_fish(u3_noun, u3_noun, u3_noun, u3_noun); + + u3_noun u3qfp_hack(u3_noun, u3_noun); + u3_noun u3qfp_late(u3_noun); + u3_noun u3qfp_open(u3_noun, u3_noun, u3_noun); + u3_noun u3qfp_nepo(u3_noun, u3_noun); + u3_noun u3qfp_rake(u3_noun); + + u3_noun u3qi_la_add_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_sub_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_mul_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_div_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_mod_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_adds_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_subs_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_muls_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_divs_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_mods_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_dot_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_diag(u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_transpose(u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_cumsum_i754(u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_argmin_i754(u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_argmax_i754(u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_ravel_i754(u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_min_i754(u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_max_i754(u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_linspace_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_range_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_abs_i754(u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_gth_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_gte_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_lth_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_lte_i754(u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_trace_i754(u3_noun, u3_noun, u3_noun); + u3_noun u3qi_la_mmul_i754(u3_noun, u3_noun, u3_noun, u3_noun, u3_noun); + +# define u3qfu_van_fan 28 +# define u3qfu_van_rib 58 +# define u3qfu_van_vet 59 + + void u3qf_test(const c3_c*, u3_noun); + + + /** Tier 6. + **/ + u3_noun u3qg_plot_fax(u3_noun, u3_noun); + u3_noun u3qg_plot_met(u3_noun, u3_noun); + +#endif /* ifndef U3_JETS_Q_H */ + diff --git a/vere/pkg/noun/jets/tree.c b/vere/pkg/noun/jets/tree.c new file mode 100644 index 0000000..1735f22 --- /dev/null +++ b/vere/pkg/noun/jets/tree.c @@ -0,0 +1,2658 @@ +/// @file + +/* + These hashes are deprecated, you should instead use no_hashes. + + To generate the hashes, take the sha256 of the jammed battery. For example: + + ``` + > `@ux`(shax (jam -:rip)) + 0x2759.a693.1e9e.f9a5.2c8e.ee43.1088.43d9.4d39.32a6.b04f.86cb.6ba1.5553.4329.3a28 + ``` + + Becomes: + + ``` + 2759a6931e9ef9a52c8eee43108843d94d3932a6b04f86cb6ba1555343293a28 + ``` +*/ + +#include "c3/c3.h" +#include "jets.h" +#include "jets/w.h" + +static c3_c* no_hashes[] = { 0 }; + + + static u3j_harm _140_hex_mimes_base16_en_a[] = {{".2", u3we_en_base16}, {}}; + static c3_c* _140_hex_mimes_base16_en_ha[] = { + "669807766b6802719769fcbfe149d77fb352fcf0922afaf35dc4ab8c201d84e5", + 0 + }; + static u3j_harm _140_hex_mimes_base16_de_a[] = {{".2", u3we_de_base16}, {}}; + static c3_c* _140_hex_mimes_base16_de_ha[] = { + "f1e04d0f452f2783e17b3bd5bbbcf95a651624fe7a2aca28dd9a7feae1319734", + 0 + }; + static u3j_core _140_hex_mimes_base16_d[] = + { { "en", 7, _140_hex_mimes_base16_en_a, 0, _140_hex_mimes_base16_en_ha }, + { "de", 7, _140_hex_mimes_base16_de_a, 0, _140_hex_mimes_base16_de_ha }, + {} + }; + static c3_c* _140_hex_mimes_base16_ha[] = { + "c71bdcc8542fd49aa307f296ac097e300a714fb3b3d1e475426f0916fa61f12c", + 0 + }; +static u3j_core _140_hex_mimes_d[] = + { { "base16", 3, 0, _140_hex_mimes_base16_d, _140_hex_mimes_base16_ha }, + {} + }; +static c3_c* _140_hex_mimes_ha[] = { + "bca2510fd7172643812f9d224deb95ddd69400c990db3d8cfb517a7292e8f06e", + 0 +}; + + static u3j_harm _140_hex_aes_ecba_en_a[] = {{".2", u3wea_ecba_en}, {}}; + static c3_c* _140_hex_aes_ecba_en_ha[] = { + "d7674ad72666a787580c52785c5d4d37ca462ba05e904efbeded5d1bd8b02b4b", + 0 + }; + static u3j_harm _140_hex_aes_ecba_de_a[] = {{".2", u3wea_ecba_de}, {}}; + static c3_c* _140_hex_aes_ecba_de_ha[] = { + "6e6599e93bea2e4297b621814bfb17a9b10849f920d50b14e808ef2e4fe62383", + 0 + }; + static u3j_core _140_hex_aes_ecba_d[] = + { { "en", 7, _140_hex_aes_ecba_en_a, 0, _140_hex_aes_ecba_en_ha }, + { "de", 7, _140_hex_aes_ecba_de_a, 0, _140_hex_aes_ecba_de_ha }, + {} + }; + static c3_c* _140_hex_aes_ecba_ha[] = { + "693409d27b777f73ce92cebd38e9ebceebe1e9c27ad8c9de9afc091e31bd7d9f", + 0 + }; + + static u3j_harm _140_hex_aes_ecbb_en_a[] = {{".2", u3wea_ecbb_en}, {}}; + static c3_c* _140_hex_aes_ecbb_en_ha[] = { + "2c0e3c8f4d741b37324563ecd0ab8fbf87721d1e017f1eeeaf8b6a60515c483b", + 0 + }; + static u3j_harm _140_hex_aes_ecbb_de_a[] = {{".2", u3wea_ecbb_de}, {}}; + static c3_c* _140_hex_aes_ecbb_de_ha[] = { + "cf78f314a1dbbc53b28d6405b98c66a4451350757872d8f7cf0477411e731acc", + 0 + }; + static u3j_core _140_hex_aes_ecbb_d[] = + { { "en", 7, _140_hex_aes_ecbb_en_a, 0, _140_hex_aes_ecbb_en_ha }, + { "de", 7, _140_hex_aes_ecbb_de_a, 0, _140_hex_aes_ecbb_de_ha }, + {} + }; + static c3_c* _140_hex_aes_ecbb_ha[] = { + "7255c39f10e068007d0d64dd40e4f6e83492ed2e3222919440be0d28fd42a5e3", + 0 + }; + + static u3j_harm _140_hex_aes_ecbc_en_a[] = {{".2", u3wea_ecbc_en}, {}}; + static c3_c* _140_hex_aes_ecbc_en_ha[] = { + "f56450f2662082e27ba1aecd2fe04c66aa8641d6eb155f8d3707e242a1e1cf1c", + 0 + }; + static u3j_harm _140_hex_aes_ecbc_de_a[] = {{".2", u3wea_ecbc_de}, {}}; + static c3_c* _140_hex_aes_ecbc_de_ha[] = { + "28c8c44002799fbe94d4aa07922f2b74dbbf234c84684cd8c3187622b4be6a5f", + 0 + }; + static u3j_core _140_hex_aes_ecbc_d[] = + { { "en", 7, _140_hex_aes_ecbc_en_a, 0, _140_hex_aes_ecbc_en_ha }, + { "de", 7, _140_hex_aes_ecbc_de_a, 0, _140_hex_aes_ecbc_de_ha }, + {} + }; + static c3_c* _140_hex_aes_ecbc_ha[] = { + "65da73b8de06a6660ca2d36be881b708362e1f8bc12c01290aed90fdb2977667", + 0 + }; + + static u3j_harm _140_hex_aes_cbca_en_a[] = {{".2", u3wea_cbca_en}, {}}; + static c3_c* _140_hex_aes_cbca_en_ha[] = { + "f85366d520b3179c5dabfb58ee1fa0554f5044f676340439db875841cd4058de", + 0 + }; + static u3j_harm _140_hex_aes_cbca_de_a[] = {{".2", u3wea_cbca_de}, {}}; + static c3_c* _140_hex_aes_cbca_de_ha[] = { + "8b876fbdb1849d8fbabba5e143aea0532a0e5dfff1c784d7ad15fd497ea376b1", + 0 + }; + static u3j_core _140_hex_aes_cbca_d[] = + { { "en", 7, _140_hex_aes_cbca_en_a, 0, _140_hex_aes_cbca_en_ha }, + { "de", 7, _140_hex_aes_cbca_de_a, 0, _140_hex_aes_cbca_de_ha }, + {} + }; + static c3_c* _140_hex_aes_cbca_ha[] = { + "420d04c03b7816b656fe4e8d9fce04f7e6d51d3d274c6511e89cfdb43ebf107e", + 0 + }; + + static u3j_harm _140_hex_aes_cbcb_en_a[] = {{".2", u3wea_cbcb_en}, {}}; + static c3_c* _140_hex_aes_cbcb_en_ha[] = { + "6f961e0629c5efce47793e6a352220d355bb8fba6656c6941a68efb3ba10999d", + 0 + }; + static u3j_harm _140_hex_aes_cbcb_de_a[] = {{".2", u3wea_cbcb_de}, {}}; + static c3_c* _140_hex_aes_cbcb_de_ha[] = { + "7ee2f33f80612e91fda1fd84201266dea6cab596a4e23a535d1a14fb0763f1a3", + 0 + }; + static u3j_core _140_hex_aes_cbcb_d[] = + { { "en", 7, _140_hex_aes_cbcb_en_a, 0, _140_hex_aes_cbcb_en_ha }, + { "de", 7, _140_hex_aes_cbcb_de_a, 0, _140_hex_aes_cbcb_de_ha }, + {} + }; + static c3_c* _140_hex_aes_cbcb_ha[] = { + "1b84daab497795f2afd7238a6a6090be68b78eb6051b0ffa076b2ed9fedeebe5", + 0 + }; + + static u3j_harm _140_hex_aes_cbcc_en_a[] = {{".2", u3wea_cbcc_en}, {}}; + static c3_c* _140_hex_aes_cbcc_en_ha[] = { + "b2578cf17a3095f48cc96cf7690dd7ab4f4e0b76b2578eadc1dce31a075f5b12", + 0 + }; + static u3j_harm _140_hex_aes_cbcc_de_a[] = {{".2", u3wea_cbcc_de}, {}}; + static c3_c* _140_hex_aes_cbcc_de_ha[] = { + "36586f89d702bedb8c2a01ea3614f61627e762488e373106cbb1b27c46e3493c", + 0 + }; + static u3j_core _140_hex_aes_cbcc_d[] = + { { "en", 7, _140_hex_aes_cbcc_en_a, 0, _140_hex_aes_cbcc_en_ha }, + { "de", 7, _140_hex_aes_cbcc_de_a, 0, _140_hex_aes_cbcc_de_ha }, + {} + }; + static c3_c* _140_hex_aes_cbcc_ha[] = { + "3bab1a59c7673afeb659821d54754e8e5e281243e79624fdbe4d7f85cae192c5", + 0 + }; + + static u3j_harm _140_hex_aes_siva_en_a[] = {{".2", u3wea_siva_en}, {}}; + static c3_c* _140_hex_aes_siva_en_ha[] = { + "2a137039301788b8540ed81cbfafe450c9306348d02a6576f5c14f6d6f20ba81", + 0 + }; + static u3j_harm _140_hex_aes_siva_de_a[] = {{".2", u3wea_siva_de}, {}}; + static c3_c* _140_hex_aes_siva_de_ha[] = { + "d0130e9229e71c589429dd87843dc104bc4ee5b426400a547081d8c91a548eaa", + 0 + }; + static u3j_core _140_hex_aes_siva_d[] = + { { "en", 7, _140_hex_aes_siva_en_a, 0, _140_hex_aes_siva_en_ha }, + { "de", 7, _140_hex_aes_siva_de_a, 0, _140_hex_aes_siva_de_ha }, + {} + }; + static c3_c* _140_hex_aes_siva_ha[] = { + "435c5c769d2522d71ab60332bb57440d69c6803d5ca9a5faae88c825cb55d72e", + 0 + }; + + static u3j_harm _140_hex_aes_sivb_en_a[] = {{".2", u3wea_sivb_en}, {}}; + static c3_c* _140_hex_aes_sivb_en_ha[] = { + "1638f56e8728f285e4175c7b514c5a4e1a24205acf33e105f0513cad7ae843cf", + 0 + }; + static u3j_harm _140_hex_aes_sivb_de_a[] = {{".2", u3wea_sivb_de}, {}}; + static c3_c* _140_hex_aes_sivb_de_ha[] = { + "64c9b199fffd6d31baf7457bf27d5a510121be45201b2ae5cc1d9565c0bdd0ff", + 0 + }; + static u3j_core _140_hex_aes_sivb_d[] = + { { "en", 7, _140_hex_aes_sivb_en_a, 0, _140_hex_aes_sivb_en_ha }, + { "de", 7, _140_hex_aes_sivb_de_a, 0, _140_hex_aes_sivb_de_ha }, + {} + }; + static c3_c* _140_hex_aes_sivb_ha[] = { + "0683f3f9067c2a16f68805c778c404179dc5df9019bbbe0f8d680a99a69e61fc", + 0 + }; + + static u3j_harm _140_hex_aes_sivc_en_a[] = {{".2", u3wea_sivc_en}, {}}; + static c3_c* _140_hex_aes_sivc_en_ha[] = { + "d721486dea943efd52d9e6450f4f48dd191c89637a2f842d3ff6edfd3beecbb9", + 0 + }; + static u3j_harm _140_hex_aes_sivc_de_a[] = {{".2", u3wea_sivc_de}, {}}; + static c3_c* _140_hex_aes_sivc_de_ha[] = { + "3ded831b992ea100582229a4d1d9b5c80380128ae6b59b5bb36403ed13dc5d55", + 0 + }; + static u3j_core _140_hex_aes_sivc_d[] = + { { "en", 7, _140_hex_aes_sivc_en_a, 0, _140_hex_aes_sivc_en_ha }, + { "de", 7, _140_hex_aes_sivc_de_a, 0, _140_hex_aes_sivc_de_ha }, + {} + }; + static c3_c* _140_hex_aes_sivc_ha[] = { + "23ef582f110d28aff82b0795305b02e5a718d667bcae97091c08bc26790e7176", + 0 + }; +static u3j_core _140_hex_aes_d[] = + { { "ecba", 7, 0, _140_hex_aes_ecba_d, _140_hex_aes_ecba_ha }, + { "ecbb", 7, 0, _140_hex_aes_ecbb_d, _140_hex_aes_ecbb_ha }, + { "ecbc", 7, 0, _140_hex_aes_ecbc_d, _140_hex_aes_ecbc_ha }, + { "cbca", 7, 0, _140_hex_aes_cbca_d, _140_hex_aes_cbca_ha }, + { "cbcb", 7, 0, _140_hex_aes_cbcb_d, _140_hex_aes_cbcb_ha }, + { "cbcc", 7, 0, _140_hex_aes_cbcc_d, _140_hex_aes_cbcc_ha }, + { "siva", 7, 0, _140_hex_aes_siva_d, _140_hex_aes_siva_ha }, + { "sivb", 7, 0, _140_hex_aes_sivb_d, _140_hex_aes_sivb_ha }, + { "sivc", 7, 0, _140_hex_aes_sivc_d, _140_hex_aes_sivc_ha }, + {} + }; +static c3_c* _140_hex_aes_ha[] = { + "ca4c1b0cff03db74ceca1b844f0223d669aa42934152a784d431469f0eb71527", + 0 +}; + +static u3j_harm _140_hex_leer_a[] = {{".2", u3we_leer}, {}}; +static c3_c* _140_hex_leer_ha[] = { + "8a4486bb09639f6b8cf7631f9bf883256529c6d7d9aa320ab6dfa5517611f0d7", + 0 +}; +static u3j_harm _140_hex_lore_a[] = {{".2", u3we_lore}, {}}; +static c3_c* _140_hex_lore_ha[] = { + "19b13cfea49fd14aafbb20b8b888ba454f809c3f50a7cfeebd43f87336fe052d", + 0 +}; +static u3j_harm _140_hex_loss_a[] = {{".2", u3we_loss}, {}}; +static c3_c* _140_hex_loss_ha[] = { + "67aacd21484078828ad4342297d44c38d9213b8809f83f695c2996378a92dc2a", + 0 +}; +static u3j_harm _140_hex_lune_a[] = {{".2", u3we_lune}, {}}; +static c3_c* _140_hex_lune_ha[] = { + "417472f35b885fe6dd0715e78fd0920cb59f68b738aadc9768e73bc5efa0e570", + 0 +}; + +static u3j_harm _140_hex_coed__ed_puck_a[] = {{".2", u3wee_puck}, {}}; +static c3_c* _140_hex_coed__ed_puck_ha[] = { + "1bc694675842345c50b0e20a2193bb5bcbb42f163fc832431a3d1822a81e4c98", + 0 +}; + +static u3j_harm _140_hex_coed__ed_sign_a[] = {{".2", u3wee_sign}, {}}; + +static u3j_harm _140_hex_coed__ed_sign_octs_a[] = {{".2", u3wee_sign_octs}, {}}; +static c3_c* _140_hex_coed__ed_sign_octs_ha[] = { + "34ad749bf8443611cbf1f7de90a066318bd12be36f2f7f6f55281f6f7ed79754", + 0 +}; + +static u3j_harm _140_hex_coed__ed_veri_a[] = {{".2", u3wee_veri}, {}}; + +static u3j_harm _140_hex_coed__ed_veri_octs_a[] = {{".2", u3wee_veri_octs}, {}}; +static c3_c* _140_hex_coed__ed_veri_octs_ha[] = { + "047a7eeccb2e68aeeee631b6db86e11a5a3aa9e179660553eca6304327612dcf", + 0 +}; +static u3j_harm _140_hex_coed__ed_shar_a[] = {{".2", u3wee_shar}, {}}; +static c3_c* _140_hex_coed__ed_shar_ha[] = { + "52d3b0a2f51f2b0a9dd72bb33db38c73dc873029c365d871d0559a1472a80e72", + 0 +}; + + static u3j_harm _140_hex_coed__ed_point_add_a[] = + {{".2", u3wee_point_add}, {}}; + + static u3j_harm _140_hex_coed__ed_scalarmult_a[] = + {{".2", u3wee_scalarmult}, {}}; + static c3_c* _140_hex_coed__ed_scalarmult_ha[] = { + "72e71cd3aa3af429cd65baa78632500c60edd1d4c82a39d3ba7f231ef97e6316", + 0 + }; + + static u3j_harm _140_hex_coed__ed_scalarmult_base_a[] = + {{".2", u3wee_scalarmult_base}, {}}; + static c3_c* _140_hex_coed__ed_scalarmult_base_ha[] = { + "976fdb8251f9b767af689a0d2c41b88941921bf53777c1ceeb5297511021f9d8", + 0 + }; + + static u3j_harm _140_hex_coed__ed_add_scalarmult_scalarmult_base_a[] = + {{".2", u3wee_add_scalarmult_scalarmult_base}, {}}; + static c3_c* _140_hex_coed__ed_add_scalarmult_scalarmult_base_ha[] = { + "11819071c24a2d7b36daea6e16c78b2e05f9ca3e857cf4815ffe652ce677a61a", + 0 + }; + + static u3j_harm _140_hex_coed__ed_add_double_scalarmult_a[] = + {{".2", u3wee_add_double_scalarmult}, {}}; + static c3_c* _140_hex_coed__ed_add_double_scalarmult_ha[] = { + "0fab78a1e890e53cecade1c22b95813db77e066044e33417a0919695b6cde9ba", + 0 + }; + +static u3j_core _140_hex_coed__ed_d[] = + { { "sign", 7, _140_hex_coed__ed_sign_a, 0, no_hashes }, + { "sign-octs", 7, _140_hex_coed__ed_sign_octs_a, 0, _140_hex_coed__ed_sign_octs_ha }, + { "puck", 7, _140_hex_coed__ed_puck_a, 0, _140_hex_coed__ed_puck_ha }, + { "veri", 7, _140_hex_coed__ed_veri_a, 0, no_hashes }, + { "veri-octs", 7, _140_hex_coed__ed_veri_octs_a, 0, _140_hex_coed__ed_veri_octs_ha }, + { "shar", 7, _140_hex_coed__ed_shar_a, 0, _140_hex_coed__ed_shar_ha }, + { "point-add", 7, _140_hex_coed__ed_point_add_a, 0, 0 }, + { "scalarmult", 7, _140_hex_coed__ed_scalarmult_a, 0, + _140_hex_coed__ed_scalarmult_ha }, + { "scalarmult-base", 7, _140_hex_coed__ed_scalarmult_base_a, 0, + _140_hex_coed__ed_scalarmult_base_ha }, + { "add-scalarmult-scalarmult-base", 7, + _140_hex_coed__ed_add_scalarmult_scalarmult_base_a, 0, + _140_hex_coed__ed_add_scalarmult_scalarmult_base_ha }, + { "add-double-scalarmult", 7, + _140_hex_coed__ed_add_double_scalarmult_a, 0, + _140_hex_coed__ed_add_double_scalarmult_ha }, + {} + }; +static c3_c* _140_hex_coed__ed_ha[] = { + "7a44a962aa72933588b5c99a8b68ebac21ce3c4710c081cb66b3599b45af9ced", + 0 +}; + +static u3j_core _140_hex_coed_d[] = +{ { "ed", 3, 0, _140_hex_coed__ed_d, _140_hex_coed__ed_ha }, + {} +}; +static c3_c* _140_hex_coed_ha[] = { + "4be0254f06d953b69509eb15550595ffad8767d3c3dc2dafcd7c22f92f7704c4", + 0 +}; + + static u3j_harm _140_hex_hmac_hmac_a[] = {{".2", u3we_hmac}, {}}; + static c3_c* _140_hex_hmac_hmac_ha[] = { + "d0dbd778156aef21d18f44a8cffd87296826120af5a4af020dd7aff0f95f03b1", + 0 + }; +static u3j_core _140_hex_hmac_d[] = + { { "hmac", 7, _140_hex_hmac_hmac_a, 0, _140_hex_hmac_hmac_ha }, + {} + }; +static c3_c* _140_hex_hmac_ha[] = { + "976bb4508dbe659eb12aa32d4a481dbd885e40f8a15c505762f1acf43b744234", + 0 +}; + + static u3j_harm _140_hex_argon2_a[] = {{".2", u3we_argon2}, {}}; + static c3_c* _140_hex_argon2_ha[] = { + "4df7cec141ffa2cc76b058846474ca42cc9840666ee3e7e80e565803e83ea98b", + 0 + }; +static u3j_core _140_hex_argon_d[] = + { { "argon2", 511, _140_hex_argon2_a, 0, _140_hex_argon2_ha }, + {} + }; +static c3_c* _140_hex_argon_ha[] = { + "dc704c786192ecd09d4c206a8f28db3202b6e0eb03e3ce63a95987510ac312d6", + 0 +}; + + static u3j_harm _140_hex_scr_pbk_a[] = {{".2", u3wes_pbk, c3y}, {}}; + static c3_c* _140_hex_scr_pbk_ha[] = { 0 }; + static u3j_harm _140_hex_scr_pbl_a[] = {{".2", u3wes_pbl, c3y}, {}}; + static c3_c* _140_hex_scr_pbl_ha[] = { 0 }; + static u3j_harm _140_hex_scr_hsh_a[] = {{".2", u3wes_hsh, c3y}, {}}; + static c3_c* _140_hex_scr_hsh_ha[] = { 0 }; + static u3j_harm _140_hex_scr_hsl_a[] = {{".2", u3wes_hsl, c3y}, {}}; + static c3_c* _140_hex_scr_hsl_ha[] = { 0 }; +static u3j_core _140_hex_scr_d[] = + { { "pbk", 7, _140_hex_scr_pbk_a, 0, _140_hex_scr_pbk_ha }, + { "pbl", 7, _140_hex_scr_pbl_a, 0, _140_hex_scr_pbl_ha }, + { "hsh", 7, _140_hex_scr_hsh_a, 0, _140_hex_scr_hsh_ha }, + { "hsl", 7, _140_hex_scr_hsl_a, 0, _140_hex_scr_hsl_ha }, + {} + }; +static c3_c* _140_hex_scr_ha[] = { 0 }; + + static u3j_harm _140_hex_secp_secp256k1_make_a[] = {{".2", u3we_make, c3y}, {}}; + static c3_c* _140_hex_secp_secp256k1_make_ha[] = { 0 }; + static u3j_harm _140_hex_secp_secp256k1_sign_a[] = {{".2", u3we_sign, c3y}, {}}; + static c3_c* _140_hex_secp_secp256k1_sign_ha[] = { 0 }; + static u3j_harm _140_hex_secp_secp256k1_reco_a[] = {{".2", u3we_reco, c3y}, {}}; + static c3_c* _140_hex_secp_secp256k1_reco_ha[] = { 0 }; + + static u3j_harm _140_hex_secp_secp256k1_schnorr_sosi_a[] = + {{".2", u3we_sosi}, {}}; + static c3_c* _140_hex_secp_secp256k1_schnorr_sosi_ha[] = { 0 }; + static u3j_harm _140_hex_secp_secp256k1_schnorr_sove_a[] = + {{".2", u3we_sove}, {}}; + static c3_c* _140_hex_secp_secp256k1_schnorr_sove_ha[] = { 0 }; + static u3j_core _140_hex_secp_secp256k1_schnorr_d[] = + { { "sosi", 7, + _140_hex_secp_secp256k1_schnorr_sosi_a, 0, + _140_hex_secp_secp256k1_schnorr_sosi_ha }, + { "sove", 7, + _140_hex_secp_secp256k1_schnorr_sove_a, 0, + _140_hex_secp_secp256k1_schnorr_sove_ha }, + {} + }; + static c3_c* _140_hex_secp_secp256k1_schnorr_ha[] = { 0 }; + + static u3j_core _140_hex_secp_secp256k1_d[] = + { { "make", 7, _140_hex_secp_secp256k1_make_a, 0, _140_hex_secp_secp256k1_make_ha }, + { "sign", 7, _140_hex_secp_secp256k1_sign_a, 0, _140_hex_secp_secp256k1_sign_ha }, + { "reco", 7, _140_hex_secp_secp256k1_reco_a, 0, _140_hex_secp_secp256k1_reco_ha }, + { "schnorr", 7, 0, + _140_hex_secp_secp256k1_schnorr_d, + _140_hex_secp_secp256k1_schnorr_ha }, + {} + }; + static c3_c* _140_hex_secp_secp256k1_ha[] = { + "e7fc0971a970aba7ded43bd89e9c82623eb2f346c9c720c63b22f2a646927861", + 0 + }; +static u3j_core _140_hex_secp_d[] = + { { "secp256k1", 3, 0, _140_hex_secp_secp256k1_d, _140_hex_secp_secp256k1_ha }, + {} + }; +static c3_c* _140_hex_secp_ha[] = { + "9f5c23f0e7923b6cf1603388ba52401b6e43881be3560b3acfaab20b25071792", + 0 +}; + + static u3j_harm _140_hex_blake2b_a[] = {{".2", u3we_blake2b, c3y}, {}}; + +static u3j_core _140_hex_blake_d[] = + { { "blake2b", 7, _140_hex_blake2b_a, 0, no_hashes }, + {} + }; +static c3_c* _140_hex_blake_ha[] = { + "ff30d99ffb3e13d8aa50b2b8461c8edfabf0e76de22312d16d1d6daaf3636b5f", + 0 +}; + + static u3j_harm _140_hex_kecc_k224_a[] = + {{".2", u3we_kecc224, c3y, c3y, c3y}, {}}; + static u3j_harm _140_hex_kecc_k256_a[] = + {{".2", u3we_kecc256, c3y, c3y, c3y}, {}}; + static u3j_harm _140_hex_kecc_k384_a[] = + {{".2", u3we_kecc384, c3y, c3y, c3y}, {}}; + static u3j_harm _140_hex_kecc_k512_a[] = + {{".2", u3we_kecc512, c3y, c3y, c3y}, {}}; +static u3j_core _140_hex_kecc_d[] = + { { "k224", 7, _140_hex_kecc_k224_a, 0, no_hashes }, + { "k256", 7, _140_hex_kecc_k256_a, 0, no_hashes }, + { "k384", 7, _140_hex_kecc_k384_a, 0, no_hashes }, + { "k512", 7, _140_hex_kecc_k512_a, 0, no_hashes }, + {} + }; + + static u3j_harm _140_hex_ripemd_160_a[] = {{".2", u3we_ripe, c3y}, {}}; + static c3_c* _140_hex_ripemd_160_ha[] = { + "176684b29926a01f5c60fa584e4691b0cbdc9b93608dcbe7d0cf3585683fa42f", + 0 + }; +static u3j_core _140_hex_ripe_d[] = + { { "ripemd160", 7, _140_hex_ripemd_160_a, 0, _140_hex_ripemd_160_ha }, + {} + }; +static c3_c* _140_hex_ripe_ha[] = { + "b0cb16bf206c0496bb480e5759ea1afa7dee1748b64e5243c23fddb09720ebd0", + 0 +}; + +static u3j_core _140_hex_d[] = +{ { "lore", 63, _140_hex_lore_a, 0, _140_hex_lore_ha }, + { "leer", 63, _140_hex_leer_a, 0, _140_hex_leer_ha }, + { "loss", 63, _140_hex_loss_a, 0, _140_hex_loss_ha }, + { "lune", 127, _140_hex_lune_a, 0, _140_hex_lune_ha }, + + { "coed", 63, 0, _140_hex_coed_d, _140_hex_coed_ha }, + { "aes", 31, 0, _140_hex_aes_d, _140_hex_aes_ha }, + + { "hmac", 63, 0, _140_hex_hmac_d, _140_hex_hmac_ha }, + { "argon", 31, 0, _140_hex_argon_d, _140_hex_argon_ha }, + { "blake", 31, 0, _140_hex_blake_d, _140_hex_blake_ha }, + { "kecc", 31, 0, _140_hex_kecc_d, no_hashes }, + { "ripemd", 31, 0, _140_hex_ripe_d, _140_hex_ripe_ha }, + { "scr", 31, 0, _140_hex_scr_d, _140_hex_scr_ha }, + { "secp", 6, 0, _140_hex_secp_d, _140_hex_secp_ha }, + { "mimes", 31, 0, _140_hex_mimes_d, _140_hex_mimes_ha }, + {} +}; +static c3_c* _140_hex_ha[] = { + "7e393356dd7ac64eed5cd9f5cf0e320d401ca36a0a0ce0f954e7538824114844", + 0 +}; + + +/* layer five +*/ +static u3j_harm _140_pen_cell_a[] = {{".2", u3wf_cell}, {}}; +static c3_c* _140_pen_cell_ha[] = { + "411649e69ff5c5d4a2976b300d213b99af3de724cec0e95f48404b808fc4f428", + 0 +}; +static u3j_harm _140_pen_comb_a[] = {{".2", u3wf_comb}, {}}; +static c3_c* _140_pen_comb_ha[] = { + "f9e37c3b3d5036c31af60f7047391594068638b54db7cf94bfea9dabbdffa547", + 0 +}; +static u3j_harm _140_pen_cons_a[] = {{".2", u3wf_cons}, {}}; +static c3_c* _140_pen_cons_ha[] = { + "b698cc6bc49ea0473e344c784075e99a433b4c5738f90fc58ab17c3eaa44b2e9", + 0 +}; +static u3j_harm _140_pen_core_a[] = {{".2", u3wf_core}, {}}; +static c3_c* _140_pen_core_ha[] = { + "1180e9371cf3465783ef192f9a7f580cd90533f5b52b77b456287f1d580a3535", + 0 +}; +static u3j_harm _140_pen_face_a[] = {{".2", u3wf_face}, {}}; +static c3_c* _140_pen_face_ha[] = { + "a184c44d57f5c94b84a3258b05bf891f3c96a4a4bbff3a8934d11cad0efa81d8", + 0 +}; +static u3j_harm _140_pen_fitz_a[] = {{".2", u3wf_fitz}, {}}; +static c3_c* _140_pen_fitz_ha[] = { + "469abe976ec15eeff9a87bce385f2c87c9bd89814ce2858aa9fee094beea1e5d", + 0 +}; +static u3j_harm _140_pen_flan_a[] = {{".2", u3wf_flan_139}, {}}; +static c3_c* _140_pen_flan_ha[] = { + "cc00cb9373b0274af4e17d7acd77f65d8a2fa886e422c949c12d9d9e7cb3525b", + 0 +}; +static u3j_harm _140_pen_flip_a[] = {{".2", u3wf_flip_139}, {}}; +static c3_c* _140_pen_flip_ha[] = { + "6e97fab9d039e715a30af5da93ef97389babfdcae7ef87655d278e77a1af0f0c", + 0 +}; +static u3j_harm _140_pen_flor_a[] = {{".2", u3wf_flor_139}, {}}; +static c3_c* _140_pen_flor_ha[] = { + "ab5360aacf0c9a325727e90e1caea9c42f5d94ccc248c9e1f253b0922b4c4e63", + 0 +}; +static u3j_harm _140_pen_fork_a[] = {{".2", u3wf_fork}, {}}; +static c3_c* _140_pen_fork_ha[] = { + "36f0ea0e2eb30328b8b83ed43a81c8c9a1f5b4c5a03fd68fd25701991a40b9dd", + 0 +}; + +static u3j_harm _140_pen_look_a[] = {{".2", u3wf_look}, {}}; +static c3_c* _140_pen_look_ha[] = { + "fdda2166a2b9e1a9bda6ab375dd6fb6c610e18f54636a5e89896b45fd0a7169b", + 0 +}; +static u3j_harm _140_pen_loot_a[] = {{".2", u3wf_loot}, {}}; +static c3_c* _140_pen_loot_ha[] = { + "e275da4562ae6da9bd333aeae6b9829e886874c8b891898c0ef5306268eb45c1", + 0 +}; + + static u3j_harm _140_pen__ut_crop_a[] = {{".2", u3wfu_crop}, {}}; + static c3_c* _140_pen__ut_crop_ha[] = { + "e2c6fc3e714a3a98ccd28423dcb9f2c6480935e26b54dd0581eb2ad7e5b16d6f", + 0 + }; + static u3j_harm _140_pen__ut_fish_a[] = {{".2", u3wfu_fish}, {}}; + static c3_c* _140_pen__ut_fish_ha[] = { + "080caee60b5ee4616bf9568bdbceabbf044379c47466e0ae3968cb0146049a84", + 0 + }; + static u3j_harm _140_pen__ut_fuse_a[] = {{".2", u3wfu_fuse}, {}}; + static c3_c* _140_pen__ut_fuse_ha[] = { + "519aac7b40b7018d5df00ddf3977c2ebe0c2e05bcee34796d56a1d54c15e0c84", + 0 + }; + static u3j_harm _140_pen__ut_mint_a[] = {{".2", u3wfu_mint}, {}}; + static c3_c* _140_pen__ut_mint_ha[] = { + "7d980f7425b51bb10fbbd8b465b5d83f5dd4cb6e66d88758a9f7490b812a765e", + 0 + }; + static u3j_harm _140_pen__ut_mull_a[] = {{".2", u3wfu_mull}, {}}; + static c3_c* _140_pen__ut_mull_ha[] = { + "c806329aefd920501ea0faa0cfb0ce3280a74408782efe6d82878ec43ec44fb7", + 0 + }; + + static u3j_harm _140_pen__ut_nest_dext_a[] = {{".2", u3wfu_nest_dext}, {}}; + static c3_c* _140_pen__ut_nest_dext_ha[] = { + "72f33df96800034fc63531293f9b110e6505027195bf8a10ff94b9a1f1ef719b", + 0 + }; + static u3j_core _140_pen__ut_nest_in_d[] = + { + { "nest-dext", 3, _140_pen__ut_nest_dext_a, 0, _140_pen__ut_nest_dext_ha }, + {} + }; + static c3_c* _140_pen__ut_nest_in_ha[] = { + "68378dfa1d1fee0b1cd9593fb561234cec2ae9371a5ffa287c3d2ab9620e198c", + 0 + }; + static u3j_core _140_pen__ut_nest_d[] = + { + { "nest-in", 7, 0, _140_pen__ut_nest_in_d, _140_pen__ut_nest_in_ha }, + {} + }; + static c3_c* _140_pen__ut_nest_ha[] = { + "1e8de5d1225facc1158c92c2ea5e0dc84129cbb317fde3691e224b8c2550d950", + 0 + }; + + static u3j_harm _140_pen__ut_rest_a[] = {{".2", u3wfu_rest}, {}}; + static c3_c* _140_pen__ut_rest_ha[] = { + "b4a83073f4cb03898ef099fab5722a046122dc96a5332ffc82f988df6c186e74", + 0 + }; + +static u3j_core _140_pen__ut_d[] = + { + { "crop", 7, _140_pen__ut_crop_a, 0, _140_pen__ut_crop_ha }, + { "fish", 7, _140_pen__ut_fish_a, 0, _140_pen__ut_fish_ha }, + { "fuse", 7, _140_pen__ut_fuse_a, 0, _140_pen__ut_fuse_ha }, + { "mint", 7, _140_pen__ut_mint_a, 0, _140_pen__ut_mint_ha }, + { "mull", 7, _140_pen__ut_mull_a, 0, _140_pen__ut_mull_ha }, + { "nest", 7, 0, _140_pen__ut_nest_d, _140_pen__ut_nest_ha }, + { "rest", 7, _140_pen__ut_rest_a, 0, _140_pen__ut_rest_ha }, + {} + }; +static c3_c* _140_pen__ut_ha[] = { + "50c79204c82a3ba8f01e085a2e27e7716e5c7ab1929f94423ef1da92cf5ac631", + 0 +}; + +static u3j_hood _140_pen__ut_ho[] = + { { "ar", 12282 }, + { "fan", 28, c3n }, + { "rib", 58, c3n }, + { "vet", 59, c3n }, + + { "blow", 6015 }, + { "burp", 342 }, + { "busk", 1373 }, + { "buss", 374 }, + { "crop", 1494 }, + { "duck", 1524 }, + { "dune", 2991 }, + { "dunk", 3066 }, + { "epla", 12206 }, + { "emin", 1534 }, + { "emul", 6134 }, + { "feel", 1502 }, + { "felt", 94 }, + { "fine", 49086 }, + { "fire", 4 }, + { "fish", 6006 }, + { "fond", 12283 }, + { "fund", 6014 }, + // XX +funk is not part of +ut, and this hook appears to be unused + // remove from here and the +ut hint + // + { "funk", 0xbefafa, c3y, 31 }, + { "fuse", 24021 }, + { "gain", 380 }, + { "lose", 0x2fefe }, + { "mile", 382 }, + { "mine", 372 }, + { "mint", 49083 }, + { "moot", 0x2feff }, + { "mull", 24020 }, + { "nest", 92 }, + { "peel", 1526 }, + { "play", 3006 }, + { "peek", 1532 }, + { "repo", 22 }, + { "rest", 6102 }, + { "tack", 6007 }, + { "toss", 24540 }, + { "wrap", 6140 }, + {}, + }; + +static u3j_core _140_pen_d[] = +{ { "hex", 7, 0, _140_hex_d, _140_hex_ha }, + + { "cell", 7, _140_pen_cell_a, 0, _140_pen_cell_ha }, + { "comb", 7, _140_pen_comb_a, 0, _140_pen_comb_ha }, + { "cons", 7, _140_pen_cons_a, 0, _140_pen_cons_ha }, + { "core", 7, _140_pen_core_a, 0, _140_pen_core_ha }, + { "face", 7, _140_pen_face_a, 0, _140_pen_face_ha }, + { "fitz", 7, _140_pen_fitz_a, 0, _140_pen_fitz_ha }, + { "flan", 7, _140_pen_flan_a, 0, _140_pen_flan_ha }, + { "flip", 7, _140_pen_flip_a, 0, _140_pen_flip_ha }, + { "flor", 7, _140_pen_flor_a, 0, _140_pen_flor_ha }, + { "fork", 7, _140_pen_fork_a, 0, _140_pen_fork_ha }, + { "look", 7, _140_pen_look_a, 0, _140_pen_look_ha }, + { "loot", 7, _140_pen_loot_a, 0, _140_pen_loot_ha }, + { "ut", 15, 0, _140_pen__ut_d, _140_pen__ut_ha, _140_pen__ut_ho }, + {} +}; +static c3_c* _140_pen_ha[] = { + "e6c9e2362bdf2d1f9a2837a0efa154c0b8b9d51aea03a86b5aece573ff423cb1", + 0 +}; + +static u3j_hood _140_pen_ho[] = { + { "ap", 22 }, + { "ut", 86 }, + {}, +}; + + +/* layer four +*/ +static u3j_harm _140_qua_trip_a[] = {{".2", u3we_trip}, {}}; +static c3_c* _140_qua_trip_ha[] = { + "05423b940d10d03891cc23f36eea14b233e5884ef539de3d985d6818dd427b05", + 0 +}; + +static u3j_harm _140_qua_slaw_a[] = {{".2", u3we_slaw}, {}}; +static c3_c* _140_qua_slaw_ha[] = { + "306c9692f48e2700675ed6581e9df4feaee951e1bed3cad7f89aab392e80000f", + 0 +}; +static u3j_harm _140_qua_scot_a[] = {{".2", u3we_scot}, {}}; +static c3_c* _140_qua_scot_ha[] = { + 0 +}; +static u3j_harm _140_qua_scow_a[] = {{".2", u3we_scow}, {}}; +static c3_c* _140_qua_scow_ha[] = { + 0 +}; + + static u3j_harm _140_qua__po_ind_a[] = {{".2", u3wcp_ind}, {}}; + static c3_c* _140_qua__po_ind_ha[] = { + "95bbe9867dbbd1b9ce12671d64cf7b1dee8d987c6770955a83c73291c4537a61", + 0 + }; + static u3j_harm _140_qua__po_ins_a[] = {{".2", u3wcp_ins}, {}}; + static c3_c* _140_qua__po_ins_ha[] = { + "aae783fb258dff7f8ade49756e01f96a2d2100411a88a886732270dcf9f174f0", + 0 + }; + static u3j_harm _140_qua__po_tod_a[] = {{".2", u3wcp_tod}, {}}; + static c3_c* _140_qua__po_tod_ha[] = { + "153aeba45ca2a87aa918e9cea1b26e8104a6e4395979257b075546c1e2654a17", + 0 + }; + static u3j_harm _140_qua__po_tos_a[] = {{".2", u3wcp_tos}, {}}; + static c3_c* _140_qua__po_tos_ha[] = { + "7c5ffad03bcf8b4ea9bdf0c7f7500351923bc0431f3d62d6ce0472790f668fb4", + 0 + }; +static u3j_core _140_qua__po_d[] = + { { "ind", 7, _140_qua__po_ind_a, 0, _140_qua__po_ind_ha }, + { "ins", 7, _140_qua__po_ins_a, 0, _140_qua__po_ins_ha }, + { "tod", 7, _140_qua__po_tod_a, 0, _140_qua__po_tod_ha }, + { "tos", 7, _140_qua__po_tos_a, 0, _140_qua__po_tos_ha }, + {} + }; +static c3_c* _140_qua__po_ha[] = { + "efc5fa7c0efedd490e9a270bb5cf9f90809e6b224f8a381a6b8a481253b237a1", + 0 +}; + + static u3j_harm _140_qua__bend_fun_a[] = {{".2", u3we_bend_fun}, {}}; + static c3_c* _140_qua__bend_fun_ha[] = { + "e6ea05e3d765a005fccde9eb88fb93e06f0b6ea198afa8ed599b056ba179396a", + 0 + }; +static u3j_core _140_qua__bend_d[] = + { { "fun", 7, _140_qua__bend_fun_a, 0, _140_qua__bend_fun_ha }, + {} + }; +static c3_c* _140_qua__bend_ha[] = { + "adc59c6db6d5b26122bc6c04e25c3efe830c9eef68ecf81c492a59ee5e9e20a2", + 0 +}; + + static u3j_harm _140_qua__cold_fun_a[] = {{".2", u3we_cold_fun}, {}}; + static c3_c* _140_qua__cold_fun_ha[] = { + "ad5a0ab7405be9ffda0a9dd34580c6039f6bbb0301920fb2df0c31be3c72c58e", + 0 + }; +static u3j_core _140_qua__cold_d[] = + { { "fun", 7, _140_qua__cold_fun_a, 0, _140_qua__cold_fun_ha }, + {} + }; +static c3_c* _140_qua__cold_ha[] = { + "06c49d8dab6cb057e3ae1d1164e96950944ea48e54ad72347239ea434f1d4b9c", + 0 +}; + + static u3j_harm _140_qua__cook_fun_a[] = {{".2", u3we_cook_fun}, {}}; + static c3_c* _140_qua__cook_fun_ha[] = { + "f2a45612ad9c279b723334ab0915d3ed3ece7727309968c2555f45e0668eeb27", + 0 + }; +static u3j_core _140_qua__cook_d[] = + { { "fun", 7, _140_qua__cook_fun_a, 0, _140_qua__cook_fun_ha }, + {} + }; +static c3_c* _140_qua__cook_ha[] = { + "3ccd46dd21828d7be11f8c093536e305b1df982393a69c40ea73f63a574b3bb1", + 0 +}; + + static u3j_harm _140_qua__comp_fun_a[] = {{".2", u3we_comp_fun}, {}}; + static c3_c* _140_qua__comp_fun_ha[] = { + "bd7fdba84b05b00a63c24d19a03b882578ee9a3b922a3a688f7827c6e64daf96", + 0 + }; +static u3j_core _140_qua__comp_d[] = + { { "fun", 7, _140_qua__comp_fun_a, 0, _140_qua__comp_fun_ha }, + {} + }; +static c3_c* _140_qua__comp_ha[] = { + "7baad25ba87bcbba8ce4fe328280a799765dcf62a8bb761ffd87b939dd8734f2", + 0 +}; + + static u3j_harm _140_qua__easy_fun_a[] = {{".2", u3we_easy_fun}, {}}; + static c3_c* _140_qua__easy_fun_ha[] = { + "4bbbc43ece463d961e572301d0824d3e3cab3ba09ec2756cbefae63ee106044b", + 0 + }; +static u3j_core _140_qua__easy_d[] = + { { "fun", 7, _140_qua__easy_fun_a, 0, _140_qua__easy_fun_ha }, + {} + }; +static c3_c* _140_qua__easy_ha[] = { + "fdcf833943e24323deb6b071497498933ce6c4ba7d4742f2752b6ddb7fb9634e", + 0 +}; + + static u3j_harm _140_qua__glue_fun_a[] = {{".2", u3we_glue_fun}, {}}; + static c3_c* _140_qua__glue_fun_ha[] = { + "ffe0fe8815a2298c51a58e963efbbb7af90830abf11ce50bf9a47f479ce452fb", + 0 + }; +static u3j_core _140_qua__glue_d[] = + { { "fun", 7, _140_qua__glue_fun_a, 0, _140_qua__glue_fun_ha }, + {} + }; +static c3_c* _140_qua__glue_ha[] = { + "079c8a395428c2921b266a84bcf271fbe62f3d873b26680661e13a78df1a3989", + 0 +}; + + static u3j_harm _140_qua__here_fun_a[] = {{".2", u3we_here_fun}, {}}; + static c3_c* _140_qua__here_fun_ha[] = { + "47ec445fcfa89d266dae3c3590ed041d1b05f92d1bce360f232da5d496e4f2eb", + 0 + }; +static u3j_core _140_qua__here_d[] = + { { "fun", 7, _140_qua__here_fun_a, 0, _140_qua__here_fun_ha }, + {} + }; +static c3_c* _140_qua__here_ha[] = { + "4600093be5becba9a65a14b67624e3d9e4c66e0c97ba57b2bc271907eea32ffe", + 0 +}; + + static u3j_harm _140_qua__just_fun_a[] = {{".2", u3we_just_fun}, {}}; + static c3_c* _140_qua__just_fun_ha[] = { + "38bf1fb843bc29837868f2828f32d7e2bbb419b0cb9a1236adea28dfc6ce1040", + 0 + }; +static u3j_core _140_qua__just_d[] = + { { "fun", 7, _140_qua__just_fun_a, 0, _140_qua__just_fun_ha }, + {} + }; +static c3_c* _140_qua__just_ha[] = { + "7d6b2165e52dec478d96cf72478a35b7a92b014e6a15f046f026c0c8cb07679b", + 0 +}; + + static u3j_harm _140_qua__mask_fun_a[] = {{".2", u3we_mask_fun}, {}}; + static c3_c* _140_qua__mask_fun_ha[] = { + "892dfcd5f3d90981fa6e7608e93f0517000d316e7d9c07b3bd390c4966c97f5f", + 0 + }; +static u3j_core _140_qua__mask_d[] = + { { "fun", 7, _140_qua__mask_fun_a, 0, _140_qua__mask_fun_ha }, + {} + }; +static c3_c* _140_qua__mask_ha[] = { + "48e11fc12d7c453cda6ca42577d68e968446aa4d0ad3b99cc674affc7f4507b4", + 0 +}; + + static u3j_harm _140_qua__shim_fun_a[] = {{".2", u3we_shim_fun}, {}}; + static c3_c* _140_qua__shim_fun_ha[] = { + "4e26a0e98adb13ee6718fd68d90910c630df9bb7023b3e3ef40cda6710075fc9", + 0 + }; +static u3j_core _140_qua__shim_d[] = + { { "fun", 7, _140_qua__shim_fun_a, 0, _140_qua__shim_fun_ha }, + {} + }; +static c3_c* _140_qua__shim_ha[] = { + "226b96d1a59daada23a1ea80227c2dbf32ddd748d4c6363f316147ab7f292ced", + 0 +}; + + static u3j_harm _140_qua__stag_fun_a[] = {{".2", u3we_stag_fun}, {}}; + static c3_c* _140_qua__stag_fun_ha[] = { + "f76c7205c23e77809af793bc506f4727071fd029d234317fe78a7f65e2b7d6ea", + 0 + }; +static u3j_core _140_qua__stag_d[] = + { { "fun", 7, _140_qua__stag_fun_a, 0, _140_qua__stag_fun_ha }, + {} + }; +static c3_c* _140_qua__stag_ha[] = { + "fc978af18fb13dc0d77501b6f3eeb538b079b4345eb9195c3dd44c516e69424a", + 0 +}; + + static u3j_harm _140_qua__stew_fun_a[] = {{".2", u3we_stew_fun}, {}}; + static c3_c* _140_qua__stew_fun_ha[] = { + "a700f6bdfdb83ba33b2a3fe92fda3cb1bbfe95e595401538c8371b55fcc61447", + 0 + }; +static u3j_core _140_qua__stew_d[] = + { { "fun", 31, _140_qua__stew_fun_a, 0, _140_qua__stew_fun_ha }, + {} + }; +static c3_c* _140_qua__stew_ha[] = { + "29303fd6ab78cbbccdfc5bcf23d0bff126a0ef2bf4fa11ce70fcf4e6aa5fe60b", + 0 +}; + + static u3j_harm _140_qua__stir_fun_a[] = {{".2", u3we_stir_fun}, {}}; + static c3_c* _140_qua__stir_fun_ha[] = { + "6251308ea3c741e76ef9cb2dc5a71c9d8706d6cce6fdb420fef12915e0c032d6", + 0 + }; +static u3j_core _140_qua__stir_d[] = + { { "fun", 7, _140_qua__stir_fun_a, 0, _140_qua__stir_fun_ha }, + {} + }; +static c3_c* _140_qua__stir_ha[] = { + "4e466aef4d91f0ced008c00e8a4330afb3a43ef81dc1a6d93f1853685f69b9ca", + 0 +}; + +static u3j_harm _140_qua_pfix_a[] = {{".2", u3we_pfix}, {}}; +static c3_c* _140_qua_pfix_ha[] = { + "f7019bccc8b3b04a969878ffed84c9eba4dfa60ee32f984119cacb0c2381656b", + 0 +}; + +static u3j_harm _140_qua_plug_a[] = {{".2", u3we_plug}, {}}; +static c3_c* _140_qua_plug_ha[] = { + "5f5a9824e0952fd565748cc0a20f96cf883a41e2f5707c8a7797e6edd617b79c", + 0 +}; +static u3j_harm _140_qua_pose_a[] = {{".2", u3we_pose}, {}}; +static c3_c* _140_qua_pose_ha[] = { + "5c77203f288ef0f7bcd87871c69673db7fc804b647ecc42992707dc32f0f4611", + 0 +}; + +static u3j_harm _140_qua_sfix_a[] = {{".2", u3we_sfix}, {}}; +static c3_c* _140_qua_sfix_ha[] = { + "00987ed37104b902c5264d4d013826d762bfa80a6b29cfe4b7fa61b1ddd9cfac", + 0 +}; + +static u3j_harm _140_qua_mink_a[] = {{".2", u3we_mink}, {}}; +static c3_c* _140_qua_mink_ha[] = { + "99b653da6a21fa3375424811af288f59164592ece4a072abc460df03e81abcaf", + 0 +}; +static u3j_harm _140_qua_mole_a[] = {{".2", u3we_mole}, {}}; +static c3_c* _140_qua_mole_ha[] = { + "029c1acaff1911c54ce31a3693397394604ea970bf076078c1a1cfa23d2fa74e", + 0 +}; +static u3j_harm _140_qua_mule_a[] = {{".2", u3we_mule}, {}}; +static c3_c* _140_qua_mule_ha[] = { + "d54688d726565ddade7f2636741cad7209ea40fab28d3335555d8a02ff6001c4", + 0 +}; + +static u3j_core _140_qua_d[] = +{ { "pen", 3, 0, _140_pen_d, _140_pen_ha, _140_pen_ho }, + + { "po", 7, 0, _140_qua__po_d, _140_qua__po_ha }, + + { "trip", 7, _140_qua_trip_a, 0, _140_qua_trip_ha }, + + { "bend", 7, 0, _140_qua__bend_d, _140_qua__bend_ha }, + { "cold", 7, 0, _140_qua__cold_d, _140_qua__cold_ha }, + { "comp", 7, 0, _140_qua__comp_d, _140_qua__comp_ha }, + { "cook", 7, 0, _140_qua__cook_d, _140_qua__cook_ha }, + { "easy", 7, 0, _140_qua__easy_d, _140_qua__easy_ha }, + { "glue", 7, 0, _140_qua__glue_d, _140_qua__glue_ha }, + { "here", 7, 0, _140_qua__here_d, _140_qua__here_ha }, + { "just", 7, 0, _140_qua__just_d, _140_qua__just_ha }, + { "mask", 7, 0, _140_qua__mask_d, _140_qua__mask_ha }, + { "shim", 7, 0, _140_qua__shim_d, _140_qua__shim_ha }, + { "stag", 7, 0, _140_qua__stag_d, _140_qua__stag_ha }, + { "stew", 7, 0, _140_qua__stew_d, _140_qua__stew_ha }, + { "stir", 7, 0, _140_qua__stir_d, _140_qua__stir_ha }, + + { "pfix", 7, _140_qua_pfix_a, 0, _140_qua_pfix_ha }, + { "plug", 7, _140_qua_plug_a, 0, _140_qua_plug_ha }, + { "pose", 7, _140_qua_pose_a, 0, _140_qua_pose_ha }, + { "sfix", 7, _140_qua_sfix_a, 0, _140_qua_sfix_ha }, + + { "mink", 7, _140_qua_mink_a, 0, _140_qua_mink_ha }, + { "mole", 7, _140_qua_mole_a, 0, _140_qua_mole_ha }, + { "mule", 7, _140_qua_mule_a, 0, _140_qua_mule_ha }, + + { "scot", 7, _140_qua_scot_a, 0, _140_qua_scot_ha }, + { "scow", 7, _140_qua_scow_a, 0, _140_qua_scow_ha }, + { "slaw", 7, _140_qua_slaw_a, 0, _140_qua_slaw_ha }, + {} +}; +static c3_c* _140_qua_ha[] = { + "db9b4b21c0a8a8324105cbccc1421ef2a715ef0562c280b943fe1d96651cd9cc", + 0 +}; + +static u3j_hood _140_qua_ho[] = { + { "mute", 0x2fbabe }, + { "show", 24406 }, + { "mure", 1404 }, + {}, +}; + + +/* layer three +*/ + static u3j_harm _140_tri__cofl__drg_a[] = {{".2", u3wef_drg}, {}}; + static c3_c* _140_tri__cofl__drg_ha[] = { + "6063adb8cac639f7b20d5e7700c8108266be04f99cce4434f906240b424bf36d", + 0 + }; + static u3j_harm _140_tri__cofl__lug_a[] = {{".2", u3wef_lug}, {}}; + static c3_c* _140_tri__cofl__lug_ha[] = { + "f146a84731447e5c4b1e7b6e9331b33d1babed09bb0618e134c9535062154a87", + 0 + }; +static u3j_core _140_tri__cofl_d[] = + { { "drg", 7, _140_tri__cofl__drg_a, 0, _140_tri__cofl__drg_ha }, + { "lug", 7, _140_tri__cofl__lug_a, 0, _140_tri__cofl__lug_ha }, + {} + }; +static c3_c* _140_tri__cofl_ha[] = { + "f320c5bf51db85f55b900f4160f7e0ab9ef267f43ddb698900de034c6e2600d5", + 0 +}; + + static u3j_harm _140_tri__rd_add_a[] = {{".2", u3wer_add}, {}}; + static c3_c* _140_tri__rd_add_ha[] = { + "90dfaaadb2878d6d89a808ce4199e5bb239fa981e1c2edf24dc54aa3fcab55a5", + 0 + }; + static u3j_harm _140_tri__rd_sub_a[] = {{".2", u3wer_sub}, {}}; + static c3_c* _140_tri__rd_sub_ha[] = { + "5898a2424ba815d66d83917953f01860e63207f4200a447f632d9a5cc77a8a9c", + 0 + }; + static u3j_harm _140_tri__rd_mul_a[] = {{".2", u3wer_mul}, {}}; + static c3_c* _140_tri__rd_mul_ha[] = { + "a3af44ef4cd89afe78f1088bddb7d56dfa7fc209153256557c98ff34b67976bc", + 0 + }; + static u3j_harm _140_tri__rd_div_a[] = {{".2", u3wer_div}, {}}; + static c3_c* _140_tri__rd_div_ha[] = { + "9be3b38b9b4b0b0cd0bb060529c8f439cb0589aa9c3528efc519fbcc6845e98d", + 0 + }; + static u3j_harm _140_tri__rd_sqt_a[] = {{".2", u3wer_sqt}, {}}; + static c3_c* _140_tri__rd_sqt_ha[] = { + "0413678ac8ec89c3425ba762cd24b2a8a455543ec9b5dd719524e6b834e0c99c", + 0 + }; + static u3j_harm _140_tri__rd_fma_a[] = {{".2", u3wer_fma}, {}}; + static c3_c* _140_tri__rd_fma_ha[] = { + "7c920238dd42fb645c057cc950ed7ece775d5f502a0faf6ef5d17d348e0fc3e3", + 0 + }; + static u3j_harm _140_tri__rd_lth_a[] = {{".2", u3wer_lth}, {}}; + static c3_c* _140_tri__rd_lth_ha[] = { + "a108f1ac15c1d4e2c86457c9afc97a97a5954003c709c3c19c722b37255bcba9", + 0 + }; + static u3j_harm _140_tri__rd_lte_a[] = {{".2", u3wer_lte}, {}}; + static c3_c* _140_tri__rd_lte_ha[] = { + "ef9a6b2c5cdd0d4de550a32679d242693131cdc3cf40ac914eadfa7d6d9f1bac", + 0 + }; + static u3j_harm _140_tri__rd_equ_a[] = {{".2", u3wer_equ}, {}}; + static c3_c* _140_tri__rd_equ_ha[] = { + "c93cdb951dca3b0ac61070780f95e1baa3718fe519d0268305c032cf14a21e39", + 0 + }; + static u3j_harm _140_tri__rd_gte_a[] = {{".2", u3wer_gte}, {}}; + static c3_c* _140_tri__rd_gte_ha[] = { + "6857077d97e2fc203b555dc20748c33d34b694d33c48f628543bea6491e722a6", + 0 + }; + static u3j_harm _140_tri__rd_gth_a[] = {{".2", u3wer_gth}, {}}; + static c3_c* _140_tri__rd_gth_ha[] = { + "87fd815913fa590c715d3a96ada5bae6298f3e7823af90ffcdf235f493c56330", + 0 + }; +static u3j_core _140_tri__rd_d[] = + { { "add", 7, _140_tri__rd_add_a, 0, _140_tri__rd_add_ha }, + { "sub", 7, _140_tri__rd_sub_a, 0, _140_tri__rd_sub_ha }, + { "mul", 7, _140_tri__rd_mul_a, 0, _140_tri__rd_mul_ha }, + { "div", 7, _140_tri__rd_div_a, 0, _140_tri__rd_div_ha }, + { "sqt", 7, _140_tri__rd_sqt_a, 0, _140_tri__rd_sqt_ha }, + { "fma", 7, _140_tri__rd_fma_a, 0, _140_tri__rd_fma_ha }, + { "lth", 7, _140_tri__rd_lth_a, 0, _140_tri__rd_lth_ha }, + { "lte", 7, _140_tri__rd_lte_a, 0, _140_tri__rd_lte_ha }, + { "equ", 7, _140_tri__rd_equ_a, 0, _140_tri__rd_equ_ha }, + { "gte", 7, _140_tri__rd_gte_a, 0, _140_tri__rd_gte_ha }, + { "gth", 7, _140_tri__rd_gth_a, 0, _140_tri__rd_gth_ha }, + {} + }; +static c3_c* _140_tri__rd_ha[] = { + "0afab285837f9c88faff3ac8f3f49b5e259da253e0505cd823a53d4e826261f7", + 0 +}; + + static u3j_harm _140_tri__rs_add_a[] = {{".2", u3wet_add}, {}}; + static c3_c* _140_tri__rs_add_ha[] = { + "b89a1e348628fd9b4fd520aabbf6c53e12be5bbf661b9094f7a9841be3f51de9", + 0 + }; + static u3j_harm _140_tri__rs_sub_a[] = {{".2", u3wet_sub}, {}}; + static c3_c* _140_tri__rs_sub_ha[] = { + "9d13b86d17908830f93b920e80e1a985105583597f6fb640f175c98052e357f1", + 0 + }; + static u3j_harm _140_tri__rs_mul_a[] = {{".2", u3wet_mul}, {}}; + static c3_c* _140_tri__rs_mul_ha[] = { + "5c61a9e335f6c139332523d871ca5773ab476365b623444370474fde08639061", + 0 + }; + static u3j_harm _140_tri__rs_div_a[] = {{".2", u3wet_div}, {}}; + static c3_c* _140_tri__rs_div_ha[] = { + "a7147a81be3ef5a1c0de6587edb2990e30057d7871d73632eabc8dc567e751c8", + 0 + }; + static u3j_harm _140_tri__rs_sqt_a[] = {{".2", u3wet_sqt}, {}}; + static c3_c* _140_tri__rs_sqt_ha[] = { + "c403bb48d78bcfa9cd4128b7f9eb362e71e5269ab6578fb0bb5e70b4244c5781", + 0 + }; + static u3j_harm _140_tri__rs_fma_a[] = {{".2", u3wet_fma}, {}}; + static c3_c* _140_tri__rs_fma_ha[] = { + "afc14914eb8f579a0c6620db69bc951329325747a8ef01c2d0e5feb29e9a9ddd", + 0 + }; + static u3j_harm _140_tri__rs_lth_a[] = {{".2", u3wet_lth}, {}}; + static c3_c* _140_tri__rs_lth_ha[] = { + "e7efa422def6b6dbd25b5f664462adb3895b8b45f9531877c9dbfe40a96612bf", + 0 + }; + static u3j_harm _140_tri__rs_lte_a[] = {{".2", u3wet_lte}, {}}; + static c3_c* _140_tri__rs_lte_ha[] = { + "b45e1ef16c47dc9b99865c7e75d4c2094c0e206ed538818a38da0adb7fbe2ce3", + 0 + }; + static u3j_harm _140_tri__rs_equ_a[] = {{".2", u3wet_equ}, {}}; + static c3_c* _140_tri__rs_equ_ha[] = { + "8c1178311ded837292c297380e48cf7e0bc4d83962dadcafda0c9ef9f20e39f2", + 0 + }; + static u3j_harm _140_tri__rs_gte_a[] = {{".2", u3wet_gte}, {}}; + static c3_c* _140_tri__rs_gte_ha[] = { + "50f5eb237b74e772eb6a3257441078461450cd4a25cf9bd97cb1a5e00f4ff4d2", + 0 + }; + static u3j_harm _140_tri__rs_gth_a[] = {{".2", u3wet_gth}, {}}; + static c3_c* _140_tri__rs_gth_ha[] = { + "505842ff486f0bb8fa63f04d2fd6f806dc760f9b4a12a3bf2d57da92f560785b", + 0 + }; +static u3j_core _140_tri__rs_d[] = + { { "add", 7, _140_tri__rs_add_a, 0, _140_tri__rs_add_ha }, + { "sub", 7, _140_tri__rs_sub_a, 0, _140_tri__rs_sub_ha }, + { "mul", 7, _140_tri__rs_mul_a, 0, _140_tri__rs_mul_ha }, + { "div", 7, _140_tri__rs_div_a, 0, _140_tri__rs_div_ha }, + { "sqt", 7, _140_tri__rs_sqt_a, 0, _140_tri__rs_sqt_ha }, + { "fma", 7, _140_tri__rs_fma_a, 0, _140_tri__rs_fma_ha }, + { "lth", 7, _140_tri__rs_lth_a, 0, _140_tri__rs_lth_ha }, + { "lte", 7, _140_tri__rs_lte_a, 0, _140_tri__rs_lte_ha }, + { "equ", 7, _140_tri__rs_equ_a, 0, _140_tri__rs_equ_ha }, + { "gte", 7, _140_tri__rs_gte_a, 0, _140_tri__rs_gte_ha }, + { "gth", 7, _140_tri__rs_gth_a, 0, _140_tri__rs_gth_ha }, + {} + }; +static c3_c* _140_tri__rs_ha[] = { + "6c7027c5de34540a4b1548039e5423fb44727079af054b7135a3e961ec8dede8", + 0 +}; + + static u3j_harm _140_tri__rq_add_a[] = {{".2", u3weq_add}, {}}; + static c3_c* _140_tri__rq_add_ha[] = { + "9c4c2a37550930605495401886d41fb9fbc2eba487e0ba845130fe88e4c52a01", + 0 + }; + static u3j_harm _140_tri__rq_sub_a[] = {{".2", u3weq_sub}, {}}; + static c3_c* _140_tri__rq_sub_ha[] = { + "f3b027090a1bb5af74234301facfbf64503b3e0599501ade12cb05aa158a79a3", + 0 + }; + static u3j_harm _140_tri__rq_mul_a[] = {{".2", u3weq_mul}, {}}; + static c3_c* _140_tri__rq_mul_ha[] = { + "15c03b1f3081514c4767d86297aaebf1d62af7f3437f30821f011b17ed769f3a", + 0 + }; + static u3j_harm _140_tri__rq_div_a[] = {{".2", u3weq_div}, {}}; + static c3_c* _140_tri__rq_div_ha[] = { + "094105c77e37e548ea1b8d49a132ab97d90a0ab5f329340400c381bcd44de347", + 0 + }; + static u3j_harm _140_tri__rq_sqt_a[] = {{".2", u3weq_sqt}, {}}; + static c3_c* _140_tri__rq_sqt_ha[] = { + "a031cd5b8e05f997323b0ca1ca9d2419401d7d2acc2da6fc6387fe57701b84b0", + 0 + }; + static u3j_harm _140_tri__rq_fma_a[] = {{".2", u3weq_fma}, {}}; + static c3_c* _140_tri__rq_fma_ha[] = { + "871664a9305808a671aacf1de0e83f8e951611033170d86370352afb363b79bc", + 0 + }; + static u3j_harm _140_tri__rq_lth_a[] = {{".2", u3weq_lth}, {}}; + static c3_c* _140_tri__rq_lth_ha[] = { + "b10822caa442c8e9f6b9eb52aac5796a42bed5ae0eef7fe49d4075b38bf78ddd", + 0 + }; + static u3j_harm _140_tri__rq_lte_a[] = {{".2", u3weq_lte}, {}}; + static c3_c* _140_tri__rq_lte_ha[] = { + "3316346be3e9464fbb5b0feff16cd2252086004229d08f8eaa320f9509d6a029", + 0 + }; + static u3j_harm _140_tri__rq_equ_a[] = {{".2", u3weq_equ}, {}}; + static c3_c* _140_tri__rq_equ_ha[] = { + "154be82a7b8ecf4571015d9ef6c0e90ffd8c3e8803441d9c2df5a4ea484ccf3b", + 0 + }; + static u3j_harm _140_tri__rq_gte_a[] = {{".2", u3weq_gte}, {}}; + static c3_c* _140_tri__rq_gte_ha[] = { + "edbe94f9cfefa89deef7f6c11f4ce8240fd93970dbd6130e632d0447452a612a", + 0 + }; + static u3j_harm _140_tri__rq_gth_a[] = {{".2", u3weq_gth}, {}}; + static c3_c* _140_tri__rq_gth_ha[] = { + "50e85936cfad61659ed1bfdab26fda2b2696571b9aa4b4c55dc5c0d919edc296", + 0 + }; +static u3j_core _140_tri__rq_d[] = + { { "add", 7, _140_tri__rq_add_a, 0, _140_tri__rq_add_ha }, + { "sub", 7, _140_tri__rq_sub_a, 0, _140_tri__rq_sub_ha }, + { "mul", 7, _140_tri__rq_mul_a, 0, _140_tri__rq_mul_ha }, + { "div", 7, _140_tri__rq_div_a, 0, _140_tri__rq_div_ha }, + { "sqt", 7, _140_tri__rq_sqt_a, 0, _140_tri__rq_sqt_ha }, + { "fma", 7, _140_tri__rq_fma_a, 0, _140_tri__rq_fma_ha }, + { "lth", 7, _140_tri__rq_lth_a, 0, _140_tri__rq_lth_ha }, + { "lte", 7, _140_tri__rq_lte_a, 0, _140_tri__rq_lte_ha }, + { "equ", 7, _140_tri__rq_equ_a, 0, _140_tri__rq_equ_ha }, + { "gte", 7, _140_tri__rq_gte_a, 0, _140_tri__rq_gte_ha }, + { "gth", 7, _140_tri__rq_gth_a, 0, _140_tri__rq_gth_ha }, + {} + }; +static c3_c* _140_tri__rq_ha[] = { + "b772cd5901a18dc91852fada74c2a1e4b1bbf4e7465451b0d8bdcc86d2288c22", + 0 +}; + + static u3j_harm _140_tri__rh_add_a[] = {{".2", u3wes_add}, {}}; + static c3_c* _140_tri__rh_add_ha[] = { + "7e2b600eced08d774800a6a3d82e18189db85010b870c26905ee38008d3d301e", + 0 + }; + static u3j_harm _140_tri__rh_sub_a[] = {{".2", u3wes_sub}, {}}; + static c3_c* _140_tri__rh_sub_ha[] = { + "827dfb41660cb4743a88d921b4185bd2000ee6f0708ec36ac8aba2e4e19c0875", + 0 + }; + static u3j_harm _140_tri__rh_mul_a[] = {{".2", u3wes_mul}, {}}; + static c3_c* _140_tri__rh_mul_ha[] = { + "ec2a010128aca0a6f74196f3de4fe7b6617fd810d3b19f7bf5878afb787e8b86", + 0 + }; + static u3j_harm _140_tri__rh_div_a[] = {{".2", u3wes_div}, {}}; + static c3_c* _140_tri__rh_div_ha[] = { + "067a3dafb0158bc2441729beb2c0934c6c6ccf0a9b5193db9c16f22b490b27c6", + 0 + }; + static u3j_harm _140_tri__rh_sqt_a[] = {{".2", u3wes_sqt}, {}}; + static c3_c* _140_tri__rh_sqt_ha[] = { + "3fdbba47626d91d41fcdf460ad38018c78b0233d7ec4d0fac406a8c5357a2384", + 0 + }; + static u3j_harm _140_tri__rh_fma_a[] = {{".2", u3wes_fma}, {}}; + static c3_c* _140_tri__rh_fma_ha[] = { + "ada2adf5a88ba61759219926aef950e72ae6926c6e10c30ecd0f9c99e79beca0", + 0 + }; + static u3j_harm _140_tri__rh_lth_a[] = {{".2", u3wes_lth}, {}}; + static c3_c* _140_tri__rh_lth_ha[] = { + "70c9bc0073d23371d8155c28795f5acbff1a9504a5a3881c8693aa7c1f3d35d4", + 0 + }; + static u3j_harm _140_tri__rh_lte_a[] = {{".2", u3wes_lte}, {}}; + static c3_c* _140_tri__rh_lte_ha[] = { + "6157e766050f9697c05b111ad2a582459a63a98b3b1ec70881f9ad943f951a0d", + 0 + }; + static u3j_harm _140_tri__rh_equ_a[] = {{".2", u3wes_equ}, {}}; + static c3_c* _140_tri__rh_equ_ha[] = { + "72664392e2a00137383aa5a55e947c5e95c7b3172f71a7238dc0d55050196884", + 0 + }; + static u3j_harm _140_tri__rh_gte_a[] = {{".2", u3wes_gte}, {}}; + static c3_c* _140_tri__rh_gte_ha[] = { + "145355b13712b9471031e755d0ab271907efdb9a287b1bacb2f1d0338d28dbf6", + 0 + }; + static u3j_harm _140_tri__rh_gth_a[] = {{".2", u3wes_gth}, {}}; + static c3_c* _140_tri__rh_gth_ha[] = { + "d53219ee10acdd291a1e2b34fa5f543c780a0301357e93cfebd466e556f9824e", + 0 + }; +static u3j_core _140_tri__rh_d[] = + { { "add", 7, _140_tri__rh_add_a, 0, _140_tri__rh_add_ha }, + { "sub", 7, _140_tri__rh_sub_a, 0, _140_tri__rh_sub_ha }, + { "mul", 7, _140_tri__rh_mul_a, 0, _140_tri__rh_mul_ha }, + { "div", 7, _140_tri__rh_div_a, 0, _140_tri__rh_div_ha }, + { "sqt", 7, _140_tri__rh_sqt_a, 0, _140_tri__rh_sqt_ha }, + { "fma", 7, _140_tri__rh_fma_a, 0, _140_tri__rh_fma_ha }, + { "lth", 7, _140_tri__rh_lth_a, 0, _140_tri__rh_lth_ha }, + { "lte", 7, _140_tri__rh_lte_a, 0, _140_tri__rh_lte_ha }, + { "equ", 7, _140_tri__rh_equ_a, 0, _140_tri__rh_equ_ha }, + { "gte", 7, _140_tri__rh_gte_a, 0, _140_tri__rh_gte_ha }, + { "gth", 7, _140_tri__rh_gth_a, 0, _140_tri__rh_gth_ha }, + {} + }; +static c3_c* _140_tri__rh_ha[] = { + "c38f8c0a7e2f1fccb52c459f60a30ec5d21635cafaf1aa120b70c1fa91cf7da5", + 0 +}; + + static u3j_harm _140_tri__og_raw_a[] = {{".2", u3weo_raw}, {}}; + static c3_c* _140_tri__og_raw_ha[] = { + "bbcbefc237dbebf6c141ba14fd9e0464a836127fd123d10da5f121e82d49ebdb", + 0 + }; +static u3j_core _140_tri__og_d[] = + { { "raw", 7, _140_tri__og_raw_a, 0, _140_tri__og_raw_ha }, + {} + }; +static c3_c* _140_tri__og_ha[] = { + "74b9ae67eeabbffcff969ac7fdc7f4f0f4f67af64931e969bcac50d084e15fc0", + 0 +}; + + static u3j_harm _140_tri__sha_sha1_a[] = {{".2", u3we_sha1}, {}}; + static c3_c* _140_tri__sha_sha1_ha[] = { + "75aababa0688619d9df36238269119302a64ad2e3c69c53bd0057fe6b1abaf0c", + 0 + }; +static u3j_core _140_tri__sha_d[] = + { { "sha1", 7, _140_tri__sha_sha1_a, 0, _140_tri__sha_sha1_ha }, + {} + }; +static c3_c* _140_tri__sha_ha[] = { + "3c22d2f8719cb626e8dfe1a4206bcbc14b678c1422c48322054b40f84416d557", + 0 +}; + +static u3j_harm _140_tri_shax_a[] = {{".2", u3we_shax}, {}}; +static c3_c* _140_tri_shax_ha[] = { + "0fc53de3ddc8b8f84a46136f1728fa3ed66a5113888d14907589d16bf5927ad8", + 0 +}; +static u3j_harm _140_tri_shay_a[] = {{".2", u3we_shay}, {}}; +static c3_c* _140_tri_shay_ha[] = { + "b6dbc72e15c2204f83f902619b7a60328f29c9d302ddb35c435111dea28c5470", + 0 +}; +static u3j_harm _140_tri_shas_a[] = {{".2", u3we_shas}, {}}; +static c3_c* _140_tri_shas_ha[] = { + "5230583767b7625b3496248ed03b6b94c1d4ee9b26342f9390bf999ec9b6cfdb", + 0 +}; +static u3j_harm _140_tri_shal_a[] = {{".2", u3we_shal}, {}}; +static c3_c* _140_tri_shal_ha[] = { + "3242912e29e3e1ed8d1a395cc860a82d78961b4278ed79bbdeb37cb5615bbf20", + 0 +}; + + static u3j_harm _140_ob_fein_a[] = {{".2", u3we_fein_ob}, {}}; + static c3_c* _140_ob_fein_ha[] = { + 0 + }; + static u3j_harm _140_ob_fynd_a[] = {{".2", u3we_fynd_ob}, {}}; + static c3_c* _140_ob_fynd_ha[] = { + 0 + }; +static u3j_core _140_ob_d[] = { + { "fein", 7, _140_ob_fein_a, 0, _140_ob_fein_ha }, + { "fynd", 7, _140_ob_fynd_a, 0, _140_ob_fynd_ha }, + {} +}; +static c3_c* _140_ob_ha[] = { + "13ebfbdee69396bc1d980fc4dcbcdaa9cc3fb9c011e6cf188e71311a8bffc8e6", + 0 +}; +static u3j_hood _140_ob_ho[] = { + { "fein", 42 }, + { "fynd", 20 }, + {}, +}; + +static u3j_core _140_tri_d[] = +{ { "qua", 3, 0, _140_qua_d, _140_qua_ha, _140_qua_ho }, + + { "cofl", 7, 0, _140_tri__cofl_d, _140_tri__cofl_ha }, + { "rd", 7, 0, _140_tri__rd_d, _140_tri__rd_ha }, + { "rs", 7, 0, _140_tri__rs_d, _140_tri__rs_ha }, + { "rq", 7, 0, _140_tri__rq_d, _140_tri__rq_ha }, + { "rh", 7, 0, _140_tri__rh_d, _140_tri__rh_ha }, + { "og", 7, 0, _140_tri__og_d, _140_tri__og_ha }, + + { "sha", 7, 0, _140_tri__sha_d, _140_tri__sha_ha }, + { "shax", 7, _140_tri_shax_a, 0, _140_tri_shax_ha }, + { "shay", 7, _140_tri_shay_a, 0, _140_tri_shay_ha }, + { "shas", 7, _140_tri_shas_a, 0, _140_tri_shas_ha }, + { "shal", 7, _140_tri_shal_a, 0, _140_tri_shal_ha }, + + { "ob", 3, 0, _140_ob_d, _140_ob_ha, _140_ob_ho }, + {} +}; +static c3_c* _140_tri_ha[] = { + "e7339eb317038f64555717c5624e4571fe9654d471c1a78454129afdbcad9b53", + 0 +}; + +static u3j_hood _140_tri_ho[] = { + { "ob", 20 }, + { "yore", 5462 }, + { "year", 44975 }, + {}, +}; + + +/* layer two +*/ +static u3j_harm _140_two_find_a[] = {{".2", u3wb_find, c3y}, {}}; +static c3_c* _140_two_find_ha[] = { + "cab18d537962b48d38fa061844f44c4635ee11c74fdf403aa80d3a6d1b15c177", + 0 +}; +static u3j_harm _140_two_flop_a[] = {{".2", u3wb_flop, c3y}, {}}; +static c3_c* _140_two_flop_ha[] = { + "73d496aac2ce6fd9475645c76f949ae0228f8f5ae6738529b08ed9aeb58255fe", + 0 +}; +static u3j_harm _140_two_lent_a[] = {{".2", u3wb_lent, c3y}, {}}; +static c3_c* _140_two_lent_ha[] = { + "1b98ab19350f6a6753ea4bd6daf4509a7c5681b7ac20c83204fe62846d46c2c3", + 0 +}; +static u3j_harm _140_two_levy_a[] = {{".2", u3wb_levy, c3y}, {}}; +static c3_c* _140_two_levy_ha[] = { + "634f1f506b17b4b50e6902f6e21b290ffc5305d1546075cba745c9e195fcc56b", + 0 +}; +static u3j_harm _140_two_lien_a[] = {{".2", u3wb_lien, c3y}, {}}; +static c3_c* _140_two_lien_ha[] = { + "2ffb70864f2be120b48869b27c614aadeed1390bde497d8940fe85b7861093ea", + 0 +}; +static u3j_harm _140_two_murn_a[] = {{".2", u3wb_murn, c3y}, {}}; +static c3_c* _140_two_murn_ha[] = { + "53257aaee131c2a892529c2ee75271160811814086456e8fdf249eebdf31b990", + 0 +}; +static u3j_harm _140_two_need_a[] = {{".2", u3wb_need, c3y}, {}}; +static c3_c* _140_two_need_ha[] = { + "bfdd39af478811efe816e69e8c9202d10c41f646c0d27f39c23e4fe1aec807dd", + 0 +}; +static u3j_harm _140_two_reap_a[] = {{".2", u3wb_reap, c3y}, {}}; +static c3_c* _140_two_reap_ha[] = { + "cf6bd10b97b418b67c645374712c768d9e7e9809c14ecf36a5c507e5fc4b4039", + 0 +}; +static u3j_harm _140_two_reel_a[] = {{".2", u3wb_reel, c3y}, {}}; +static c3_c* _140_two_reel_ha[] = { + "36108d1ba09617cf62e739e0ff2dcf9286f322ca0e8faa3521ef127e9840eebf", + 0 +}; +static u3j_harm _140_two_roll_a[] = {{".2", u3wb_roll, c3y}, {}}; +static c3_c* _140_two_roll_ha[] = { + "42abc6b3defd7c5eb8f6d14d57a14ba2a02d559907c03141c70a65e0803c01e5", + 0 +}; +static u3j_harm _140_two_skid_a[] = {{".2", u3wb_skid, c3y}, {}}; +static c3_c* _140_two_skid_ha[] = { + "832366432a85005f9a9849d6de9a9045c8f9a591050519b06aec6a9a1a54c360", + 0 +}; +static u3j_harm _140_two_skim_a[] = {{".2", u3wb_skim, c3y}, {}}; +static c3_c* _140_two_skim_ha[] = { + "ccbecb459b90d05ed6c1073859a58987bf9a479820b5550fa75f37b95f98a279", + 0 +}; +static u3j_harm _140_two_skip_a[] = {{".2", u3wb_skip, c3y}, {}}; +static c3_c* _140_two_skip_ha[] = { + "873e3e4d6b8f16212911aa982065dd0d36b1f6e8834828d5eb5d59afa9da2384", + 0 +}; +static u3j_harm _140_two_scag_a[] = {{".2", u3wb_scag, c3y}, {}}; +static c3_c* _140_two_scag_ha[] = { + "ddba868a28eb9655c9f6e06cfecb4ec9e9ff78277290579b9bb9b25339bb4ab9", + 0 +}; +static u3j_harm _140_two_slag_a[] = {{".2", u3wb_slag, c3y}, {}}; +static c3_c* _140_two_slag_ha[] = { + "811f7f67de7ab3f33b85198a69b1bf344498cd4922b0273d918a48b803b7877d", + 0 +}; +static u3j_harm _140_two_snag_a[] = {{".2", u3wb_snag, c3y}, {}}; +static c3_c* _140_two_snag_ha[] = { + "12a1d53541d4df9be60bda45f2dae6c6e6381f85edd4de062af23c6654860591", + 0 +}; +static u3j_harm _140_two_sort_a[] = {{".2", u3wb_sort, c3y}, {}}; +static c3_c* _140_two_sort_ha[] = { + "dc14f91fdedacd3b77bdf241d22555fe2bf0a231e9cab58b4ae779791e54c4e7", + 0 +}; +static u3j_harm _140_two_turn_a[] = {{".2", u3wb_turn, c3y}, {}}; +static c3_c* _140_two_turn_ha[] = { + "e13d9f52434ba810e182017f50a73d4d44eaa298a833231e90353f2a32ea6a78", + 0 +}; +static u3j_harm _140_two_weld_a[] = {{".2", u3wb_weld, c3y}, {}}; +static c3_c* _140_two_weld_ha[] = { + "d855628821d57392f575c5da000c7326eaaa19e08cda967a4772859269669df2", + 0 +}; +static u3j_harm _140_two_welp_a[] = {{".2", u3wb_welp, c3y}, {}}; +static c3_c* _140_two_welp_ha[] = { + "0bccae6625e62ce622c62f9e828a2a6469e2fbf42342d95e23c3b926f340140d", + 0 +}; +static u3j_harm _140_two_zing_a[] = {{".2", u3wb_zing, c3y}, {}}; +static c3_c* _140_two_zing_ha[] = { + "113bdea043e9e05cf4a63dac793caf34634bc58414d00250af87139405521b9d", + 0 +}; + +static u3j_harm _140_two_bex_a[] = {{".2", u3wc_bex, c3y}, {}}; +static c3_c* _140_two_bex_ha[] = { + "ee7a095ea21b6438ec19ab235e73877b96108f0a14cae02cecbd8a48c44e70e3", + 0 +}; +static u3j_harm _140_two_can_a[] = {{".2", u3wc_can, c3y}, {}}; +static c3_c* _140_two_can_ha[] = { + "c49ee52487369ba17a0105a61aa658df60e7a537e3e8737ab582644fe00b3938", + 0 +}; +static u3j_harm _140_two_cat_a[] = {{".2", u3wc_cat, c3y}, {}}; +static c3_c* _140_two_cat_ha[] = { + "467f007931110ac0755dcd44c5aaee65785a63b9042b8eea6a7838fa86cc5d8f", + 0 +}; +static u3j_harm _140_two_con_a[] = {{".2", u3wc_con, c3y}, {}}; +static c3_c* _140_two_con_ha[] = { + "d20f091bd4f28d37c1a78373df939f3d3a41e025129e9a2bb5e2b9a710358965", + 0 +}; +static u3j_harm _140_two_cut_a[] = {{".2", u3wc_cut, c3y}, {}}; +static c3_c* _140_two_cut_ha[] = { + "96bb4e9a259d6a1ede5461956b6a6fb73f05cb8e745c4803c2bae4ec0b7f0800", + 0 +}; +static u3j_harm _140_two_dis_a[] = {{".2", u3wc_dis, c3y}, {}}; +static c3_c* _140_two_dis_ha[] = { + "4b3987314451e20a45d2c7baff51d5d39be57e5970f23f86df4dd6569826ddff", + 0 +}; +static u3j_harm _140_two_dor_a[] = {{".2", u3wc_dor, c3y}, {}}; +static c3_c* _140_two_dor_ha[] = { + "277927a2e49e4d942e81ffc7740a71e68a7b732df886a9f84dc7d914be911879", + 0 +}; +static u3j_harm _140_two_end_a[] = {{".2", u3wc_end, c3y}, {}}; +static c3_c* _140_two_end_ha[] = { + "403c9f12f2481966ffb07842006713149960c67c6bcad8edd78cdf837bc0d854", + 0 +}; +static u3j_harm _140_two_gor_a[] = {{".2", u3wc_gor, c3y}, {}}; +static c3_c* _140_two_gor_ha[] = { + "8a1e3ed1de749ff2ff61d489466df618e4e0773498cb9693ec2e612e9733385c", + 0 +}; +static u3j_harm _140_two_lsh_a[] = {{".2", u3wc_lsh, c3y}, {}}; +static c3_c* _140_two_lsh_ha[] = { + "3db89b02bc596a57c7fb72a991c9fbf3197de501c56b3d1df26911b664c45f3d", + 0 +}; +static u3j_harm _140_two_met_a[] = {{".2", u3wc_met, c3y}, {}}; +static c3_c* _140_two_met_ha[] = { + "39dc9b1d10d9e93414b43f315f9a375596c99b4e8172d71d26759996bb7bab08", + 0 +}; +static u3j_harm _140_two_mix_a[] = {{".2", u3wc_mix, c3y}, {}}; +static c3_c* _140_two_mix_ha[] = { + "c84b3e487850d73dd5e4af18fb54b623028be3c45ae9b712718754233057fbc3", + 0 +}; +static u3j_harm _140_two_mor_a[] = {{".2", u3wc_mor, c3y}, {}}; +static c3_c* _140_two_mor_ha[] = { + "7c2d86e952606e571e5bcd988e70ded072c0eaa45d1fd958849d76360a763ddf", + 0 +}; +static u3j_harm _140_two_mug_a[] = {{".2", u3wc_mug, c3y}, {}}; +static c3_c* _140_two_mug_ha[] = { + "6da3f3aa1e951ef2d00e5131945d140fb52728558867237891e029160b7f5010", + 0 +}; +static u3j_harm _140_two_muk_a[] = {{".2", u3wc_muk, c3y}, {}}; +static c3_c* _140_two_muk_ha[] = { + "5a04a09bf7d22c8ef048ba2cc86be8f3a02066eab84cf4a45bbdf2bf534ff9f6", + 0 +}; +static u3j_harm _140_two_pow_a[] = {{".2", u3wc_pow, c3y}, {}}; +static c3_c* _140_two_pow_ha[] = { + "6cfcb9da6ad812eb72788e22e1370b4ab1b6ab64ab0628dfdff78ccead325406", + 0 +}; +static u3j_harm _140_two_rap_a[] = {{".2", u3wc_rap, c3y}, {}}; +static c3_c* _140_two_rap_ha[] = { + "f694f96bcbf97b339285d6c73ed5d33d112b911f7a991acefdef223ff01d8834", + 0 +}; +static u3j_harm _140_two_rep_a[] = {{".2", u3wc_rep, c3y}, {}}; +static c3_c* _140_two_rep_ha[] = { + "25aa2f1746e1cf2235117f22a3db152fa86e003d9bf9f9cfcda79e76e51f382f", + 0 +}; +static u3j_harm _140_two_rev_a[] = {{".2", u3wc_rev, c3y}, {}}; +static c3_c* _140_two_rev_ha[] = { + "15e20592ac1d9c0c80d99589e67cadb4ed7566be1d21844bbe7ef936e0db4524", + 0 +}; +static u3j_harm _140_two_rip_a[] = {{".2", u3wc_rip, c3y}, {}}; +static c3_c* _140_two_rip_ha[] = { + "16026c27499953978f69dbf81c1530b2dec8d5a2403c5561f7a5afcc180e129e", + 0 +}; +static u3j_harm _140_two_rsh_a[] = {{".2", u3wc_rsh, c3y}, {}}; +static c3_c* _140_two_rsh_ha[] = { + "55bd777f239a2a7c849e0c7a35bb967b79279c79bbd985f31ba272761f97928f", + 0 +}; +static u3j_harm _140_two_swp_a[] = {{".2", u3wc_swp, c3y}, {}}; +static c3_c* _140_two_swp_ha[] = { + "2c4583c36d73c9c2857052b893b87e1170a794e0edbbdba9d767ba7639e7c1ec", + 0 +}; +static u3j_harm _140_two_sqt_a[] = {{".2", u3wc_sqt, c3y}, {}}; +static c3_c* _140_two_sqt_ha[] = { + "fc28ff327ae69f55ccf257b69a1477b845552ef9e615e85718902c249bdeca6f", + 0 +}; +static u3j_harm _140_two_xeb_a[] = {{".2", u3wc_xeb, c3y}, {}}; +static c3_c* _140_two_xeb_ha[] = { + "41403aafe1e2ccb1a02edde96fe742085feffe028d02529eb2b13f925884a499", + 0 +}; + + static u3j_harm _140_two__in_apt_a[] = {{".2", u3wdi_apt_140}, {}}; + static c3_c* _140_two__in_apt_ha[] = { + "a40812fa255f13afdaf196bff38d2d9bfcb38f09c48ace9139a2701a555a0c9a", + 0 + }; + static u3j_harm _140_two__in_bif_a[] = {{".2", u3wdi_bif}, {}}; + static c3_c* _140_two__in_bif_ha[] = { + "edd0d727b9099e75c3e5b73b3025ad9737136eacedc2f8088b6edb02dbe06cb3", + 0 + }; + static u3j_harm _140_two__in_del_a[] = {{".2", u3wdi_del}, {}}; + static c3_c* _140_two__in_del_ha[] = { + "33a21e7aaf71105e2d48e1af61ff463fb8a0b7e04f8a8c30a6f6a2d1f967795f", + 0 + }; + static u3j_harm _140_two__in_dif_a[] = {{".2", u3wdi_dif}, {}}; + static c3_c* _140_two__in_dif_ha[] = { + "a488f0be5adbb1c04e2038a2315ac065591e7daadcafc1d47aea272979680468", + 0 + }; + static u3j_harm _140_two__in_gas_a[] = {{".2", u3wdi_gas}, {}}; + static c3_c* _140_two__in_gas_ha[] = { + "223a60a43a10f1f90a3b205ecfce8e17af1adfcf9dbf3cff9b8b1362656b1af1", + 0 + }; + static u3j_harm _140_two__in_has_a[] = {{".2", u3wdi_has}, {}}; + static c3_c* _140_two__in_has_ha[] = { + "a65e666e92176401040a883801e4f05bd650fe6c094a6c8d7f4afcaee9cf55ad", + 0 + }; + static u3j_harm _140_two__in_int_a[] = {{".2", u3wdi_int}, {}}; + static c3_c* _140_two__in_int_ha[] = { + "a71b0e355fa02d18447c02922f69096f42043da451e8c79e7a9270460c3a44e6", + 0 + }; + static u3j_harm _140_two__in_put_a[] = {{".2", u3wdi_put}, {}}; + static c3_c* _140_two__in_put_ha[] = { + "19b27267e18ef156d85d84d37e02692a17fec0b7a2a0fe4120a3ae02b841c8f4", + 0 + }; + static u3j_harm _140_two__in_rep_a[] = {{".2", u3wdi_rep}, {}}; + static c3_c* _140_two__in_rep_ha[] = { + "05bfb84a52ed8ccc330a96faca29a49afd28300960ac089d00dba32212b971a7", + 0 + }; + static u3j_harm _140_two__in_run_a[] = {{".2", u3wdi_run}, {}}; + static c3_c* _140_two__in_run_ha[] = { + "7f2061dbee19fa20925bd5a80cc41ed71e462e0f49ee6e845fd750c219734864", + 0 + }; + static u3j_harm _140_two__in_tap_a[] = {{".2", u3wdi_tap}, {}}; + static c3_c* _140_two__in_tap_ha[] = { + "7dde59e2bd7684e785ce9787bc394571bd1216d7a62398c703447fc951c6b352", + 0 + }; + static u3j_harm _140_two__in_wyt_a[] = {{".2", u3wdi_wyt}, {}}; + static c3_c* _140_two__in_wyt_ha[] = { + "fac9248ebd1defade9df695cd81f94355bebb271f85b164ff34658a5f45c71a0", + 0 + }; + static u3j_harm _140_two__in_uni_a[] = {{".2", u3wdi_uni}, {}}; + static c3_c* _140_two__in_uni_ha[] = { + "6bd72ef1fb12482a839f4435a2b163ace1b56036297a3cec6968be33d6863096", + 0 + }; +static u3j_core _140_two__in_d[] = + { { "apt", 7, _140_two__in_apt_a, 0, _140_two__in_apt_ha }, + { "bif", 7, _140_two__in_bif_a, 0, _140_two__in_bif_ha }, + { "del", 7, _140_two__in_del_a, 0, _140_two__in_del_ha }, + { "dif", 7, _140_two__in_dif_a, 0, _140_two__in_dif_ha }, + { "gas", 7, _140_two__in_gas_a, 0, _140_two__in_gas_ha }, + { "has", 7, _140_two__in_has_a, 0, _140_two__in_has_ha }, + { "int", 7, _140_two__in_int_a, 0, _140_two__in_int_ha }, + { "put", 7, _140_two__in_put_a, 0, _140_two__in_put_ha }, + { "rep", 7, _140_two__in_rep_a, 0, _140_two__in_rep_ha }, + { "run", 7, _140_two__in_run_a, 0, _140_two__in_run_ha }, + { "tap", 7, _140_two__in_tap_a, 0, _140_two__in_tap_ha }, + { "uni", 7, _140_two__in_uni_a, 0, _140_two__in_uni_ha }, + { "wyt", 3, _140_two__in_wyt_a, 0, _140_two__in_wyt_ha }, + {} + }; +static c3_c* _140_two__in_ha[] = { + "8bbb90ce0a49d627194aa267f6cf1fd78df677111b553ce03119fea19f9d763c", + 0 +}; + + static u3j_harm _140_two__by_all_a[] = {{".2", u3wdb_all, c3y}, {}}; + static c3_c* _140_two__by_all_ha[] = { + "c2e87d0047c14b4488d03aad98fa43080c736d86d2ff723a037aaf1843aa9285", + 0 + }; + static u3j_harm _140_two__by_any_a[] = {{".2", u3wdb_any, c3y}, {}}; + static c3_c* _140_two__by_any_ha[] = { + "96b95c942dcbc97f5291fa6f7342c3e19a87d69cc254965b0f75d95133a19301", + 0 + }; + static u3j_harm _140_two__by_apt_a[] = {{".2", u3wdb_apt, c3y}, {}}; + static c3_c* _140_two__by_apt_ha[] = { + "1f0a6f8b945b243520b77069060589938d9e651e34b24924db9528d02a98014f", + 0 + }; + + static u3j_harm _140_two__by_del_a[] = {{".2", u3wdb_del, c3y}, {}}; + static c3_c* _140_two__by_del_ha[] = { + "09f78d6235d3fce8303c7bc663988349b7d4592abdacfb09b833d2f43629b6b6", + 0 + }; + static u3j_harm _140_two__by_dif_a[] = {{".2", u3wdb_dif, c3y}, {}}; + static c3_c* _140_two__by_dif_ha[] = { + "0334e6df6fd0bd5013b94a1b22c29e4c436da0a2d5573f1992faad1c8a059cc7", + 0 + }; + static u3j_harm _140_two__by_gas_a[] = {{".2", u3wdb_gas, c3y}, {}}; + static c3_c* _140_two__by_gas_ha[] = { + "43046602e0b9e568b09448cfe18527e2331f3393a2f32e485d9707a14c346698", + 0 + }; + static u3j_harm _140_two__by_get_a[] = {{".2", u3wdb_get, c3y}, {}}; + static c3_c* _140_two__by_get_ha[] = { + "4de4cea8fa98ef48e9faae10c90ba5bd77971670030ffb00483d0608af4c466f", + 0 + }; + static u3j_harm _140_two__by_has_a[] = {{".2", u3wdb_has, c3y}, {}}; + static c3_c* _140_two__by_has_ha[] = { + "04ecc67ab25961bee1b7c9dbcf42965d16f32474b9bbdd2b286983f998e3957a", + 0 + }; + static u3j_harm _140_two__by_int_a[] = {{".2", u3wdb_int, c3y}, {}}; + static c3_c* _140_two__by_int_ha[] = { + "a2345429482c271a1668f3c0675a559452bb7b13cb7393c3acb7de44c603aef9", + 0 + }; + static u3j_harm _140_two__by_jab_a[] = {{".2", u3wdb_jab, c3y}, {}}; + static c3_c* _140_two__by_jab_ha[] = { + "48930133d9b26e912dce54d1bc486cfe9dcb32bb3c2b1ad76143382799aec156", + 0 + }; + static u3j_harm _140_two__by_key_a[] = {{".2", u3wdb_key, c3y}, {}}; + static c3_c* _140_two__by_key_ha[] = { + "0096c77b93e9fe36b98d9f433eb73300f024283b93b3d73a4001afb9f9804d1b", + 0 + }; + static u3j_harm _140_two__by_put_a[] = {{".2", u3wdb_put, c3y}, {}}; + static c3_c* _140_two__by_put_ha[] = { + "b7307589fed604bfb92e8ad5ffad611c82d835baf02a86c6911b279930f4e8d7", + 0 + }; + static u3j_harm _140_two__by_rep_a[] = {{".2", u3wdb_rep, c3y}, {}}; + static c3_c* _140_two__by_rep_ha[] = { + "05bfb84a52ed8ccc330a96faca29a49afd28300960ac089d00dba32212b971a7", + 0 + }; + static u3j_harm _140_two__by_run_a[] = {{".2", u3wdb_run, c3y}, {}}; + static c3_c* _140_two__by_run_ha[] = { + "adea01e9036e0b40e4969814d4eed935d7d69a52e4a55de5520df2fa5204d8e7", + 0 + }; + static u3j_harm _140_two__by_tap_a[] = {{".2", u3wdb_tap, c3y}, {}}; + static c3_c* _140_two__by_tap_ha[] = { + "7dde59e2bd7684e785ce9787bc394571bd1216d7a62398c703447fc951c6b352", + 0 + }; + static u3j_harm _140_two__by_uni_a[] = {{".2", u3wdb_uni, c3y}, {}}; + static c3_c* _140_two__by_uni_ha[] = { + "f18bc4dac19abe14a6f56afc15d838b7394d48969156f4b37c3c84edd5d46752", + 0 + }; + static u3j_harm _140_two__by_urn_a[] = {{".2", u3wdb_urn, c3y}, {}}; + static c3_c* _140_two__by_urn_ha[] = { + "a409cf78e7f1c2ce8440115730f74367839b658cde2d6a1daa8af067b790eb83", + 0 + }; + static u3j_harm _140_two__by_wyt_a[] = {{".2", u3wdb_wyt, c3y}, {}}; + static c3_c* _140_two__by_wyt_ha[] = { + "fac9248ebd1defade9df695cd81f94355bebb271f85b164ff34658a5f45c71a0", + 0 + }; +static u3j_core _140_two__by_d[] = + { { "all", 7, _140_two__by_all_a, 0, _140_two__by_all_ha }, + { "any", 7, _140_two__by_any_a, 0, _140_two__by_any_ha }, + { "apt", 7, _140_two__by_apt_a, 0, _140_two__by_apt_ha }, + // disabled due to interface change in %138 + // + // { "bif", 7, _140_two__by_bif_a, 0, _140_two__by_bif_ha }, + { "del", 7, _140_two__by_del_a, 0, _140_two__by_del_ha }, + { "dif", 7, _140_two__by_dif_a, 0, _140_two__by_dif_ha }, + { "gas", 7, _140_two__by_gas_a, 0, _140_two__by_gas_ha }, + { "get", 7, _140_two__by_get_a, 0, _140_two__by_get_ha }, + { "has", 7, _140_two__by_has_a, 0, _140_two__by_has_ha }, + { "int", 7, _140_two__by_int_a, 0, _140_two__by_int_ha }, + { "jab", 7, _140_two__by_jab_a, 0, _140_two__by_jab_ha }, + { "key", 7, _140_two__by_key_a, 0, _140_two__by_key_ha }, + { "put", 7, _140_two__by_put_a, 0, _140_two__by_put_ha }, + { "rep", 7, _140_two__by_rep_a, 0, _140_two__by_rep_ha }, + { "run", 7, _140_two__by_run_a, 0, _140_two__by_run_ha }, + { "tap", 7, _140_two__by_tap_a, 0, _140_two__by_tap_ha }, + { "uni", 7, _140_two__by_uni_a, 0, _140_two__by_uni_ha }, + { "urn", 7, _140_two__by_urn_a, 0, _140_two__by_urn_ha }, + { "wyt", 3, _140_two__by_wyt_a, 0, _140_two__by_wyt_ha }, + {} + }; +static c3_c* _140_two__by_ha[] = { + "9c70e973de46335405a7ff932d4742743f54db579f2584758ef2b02afd4fbfe8", + 0 +}; + +static u3j_harm _140_two_cue_a[] = {{".2", u3we_cue}, {}}; +static c3_c* _140_two_cue_ha[] = { + "a52b584c5a92fc653e47f50c3389caf3427e13d20ddb8bd701a2d7bca12cb742", + 0 +}; +static u3j_harm _140_two_jam_a[] = {{".2", u3we_jam}, {}}; +static c3_c* _140_two_jam_ha[] = { + "61f86be74cb1fd5a1d7f531cc9588f8f34a972be8de487c93d25c8e026592ed2", + 0 +}; +static u3j_harm _140_two_mat_a[] = {{".2", u3we_mat}, {}}; +static c3_c* _140_two_mat_ha[] = { + "b5cd9fd1eded54fcb9bfd06af3c34460c1aa4cfc46f1ee9bd3f6476aa8fbb8c8", + 0 +}; +static u3j_harm _140_two_rub_a[] = {{".2", u3we_rub}, {}}; +static c3_c* _140_two_rub_ha[] = { + "87fcf40fb6fce8c3cb778373670d0682785ae650f785531db8ff69d431bc14c6", + 0 +}; + +static u3j_core _140_two_d[] = +{ { "tri", 3, 0, _140_tri_d, _140_tri_ha, _140_tri_ho }, + + { "find", 7, _140_two_find_a, 0, _140_two_find_ha }, + { "flop", 7, _140_two_flop_a, 0, _140_two_flop_ha }, + { "lent", 7, _140_two_lent_a, 0, _140_two_lent_ha }, + { "levy", 7, _140_two_levy_a, 0, _140_two_levy_ha }, + { "lien", 7, _140_two_lien_a, 0, _140_two_lien_ha }, + { "murn", 7, _140_two_murn_a, 0, _140_two_murn_ha }, + { "need", 7, _140_two_need_a, 0, _140_two_need_ha }, + { "reap", 7, _140_two_reap_a, 0, _140_two_reap_ha }, + { "reel", 7, _140_two_reel_a, 0, _140_two_reel_ha }, + { "roll", 7, _140_two_roll_a, 0, _140_two_roll_ha }, + { "skid", 7, _140_two_skid_a, 0, _140_two_skid_ha }, + { "skim", 7, _140_two_skim_a, 0, _140_two_skim_ha }, + { "skip", 7, _140_two_skip_a, 0, _140_two_skip_ha }, + { "scag", 7, _140_two_scag_a, 0, _140_two_scag_ha }, + { "slag", 7, _140_two_slag_a, 0, _140_two_slag_ha }, + { "snag", 7, _140_two_snag_a, 0, _140_two_snag_ha }, + { "sort", 7, _140_two_sort_a, 0, _140_two_sort_ha }, + { "turn", 7, _140_two_turn_a, 0, _140_two_turn_ha }, + { "weld", 7, _140_two_weld_a, 0, _140_two_weld_ha }, + { "welp", 7, _140_two_welp_a, 0, _140_two_welp_ha }, + { "zing", 7, _140_two_zing_a, 0, _140_two_zing_ha }, + + { "bex", 7, _140_two_bex_a, 0, _140_two_bex_ha }, + { "cat", 7, _140_two_cat_a, 0, _140_two_cat_ha }, + { "can", 7, _140_two_can_a, 0, _140_two_can_ha }, + { "con", 7, _140_two_con_a, 0, _140_two_con_ha }, + { "cue", 7, _140_two_cue_a, 0, _140_two_cue_ha }, + { "cut", 7, _140_two_cut_a, 0, _140_two_cut_ha }, + { "dis", 7, _140_two_dis_a, 0, _140_two_dis_ha }, + { "dor", 7, _140_two_dor_a, 0, _140_two_dor_ha }, + { "end", 7, _140_two_end_a, 0, _140_two_end_ha }, + { "gor", 7, _140_two_gor_a, 0, _140_two_gor_ha }, + { "jam", 7, _140_two_jam_a, 0, _140_two_jam_ha }, + { "lsh", 7, _140_two_lsh_a, 0, _140_two_lsh_ha }, + { "mat", 7, _140_two_mat_a, 0, _140_two_mat_ha }, + { "met", 7, _140_two_met_a, 0, _140_two_met_ha }, + { "mix", 7, _140_two_mix_a, 0, _140_two_mix_ha }, + { "mor", 7, _140_two_mor_a, 0, _140_two_mor_ha }, + { "mug", 7, _140_two_mug_a, 0, _140_two_mug_ha }, + { "muk", 59, _140_two_muk_a, 0, _140_two_muk_ha }, + { "rap", 7, _140_two_rap_a, 0, _140_two_rap_ha }, + { "rep", 7, _140_two_rep_a, 0, _140_two_rep_ha }, + { "rev", 7, _140_two_rev_a, 0, _140_two_rev_ha }, + { "rip", 7, _140_two_rip_a, 0, _140_two_rip_ha }, + { "rsh", 7, _140_two_rsh_a, 0, _140_two_rsh_ha }, + { "swp", 7, _140_two_swp_a, 0, _140_two_swp_ha }, + { "rub", 7, _140_two_rub_a, 0, _140_two_rub_ha }, + { "pow", 7, _140_two_pow_a, 0, _140_two_pow_ha }, + { "sqt", 7, _140_two_sqt_a, 0, _140_two_sqt_ha }, + { "xeb", 7, _140_two_xeb_a, 0, _140_two_xeb_ha }, + + { "by", 7, 0, _140_two__by_d, _140_two__by_ha }, + { "in", 7, 0, _140_two__in_d, _140_two__in_ha }, + {} +}; +static c3_c* _140_two_ha[] = { + "f693e1f5ff57ec741fe28a48a18252b3e12dead2bfe3bcd4ea8e904a36905c0b", + 0 +}; + + +/* layer one +*/ +static u3j_harm _140_one_add_a[] = {{".2", u3wa_add, c3y}, {}}; +static c3_c* _140_one_add_ha[] = { + "46407e27fe5d7c20b3ba25c02657c227b37217ddab8501b2d3b70b818aca7a44", + 0 +}; +static u3j_harm _140_one_dec_a[] = {{".2", u3wa_dec, c3y}, {}}; +static c3_c* _140_one_dec_ha[] = { + "6345d28d34c62c4b4f9da98828574bc9060ff0869789968d9045d90faeb3580c", + 0 +}; +static u3j_harm _140_one_div_a[] = {{".2", u3wa_div, c3y}, {}}; +static c3_c* _140_one_div_ha[] = { + "e3292e76feb274b9314e7693827de11e96677629c556b3a6c72cc15ebad45113", + 0 +}; +static u3j_harm _140_one_dvr_a[] = {{".2", u3wc_dvr, c3y}, {}}; +static c3_c* _140_one_dvr_ha[] = { + "fc259f46d770f82767163544f3662dfd45b1484a7bcffad396c7420651f092a4", + 0 +}; +static u3j_harm _140_one_gte_a[] = {{".2", u3wa_gte, c3y}, {}}; +static c3_c* _140_one_gte_ha[] = { + "f3ff2c0fc1f386226183e8834cff87420a1206583f8710e1e75f0e34ed8df5fe", + 0 +}; +static u3j_harm _140_one_gth_a[] = {{".2", u3wa_gth, c3y}, {}}; +static c3_c* _140_one_gth_ha[] = { + "62692d64c8166c7d48bb2a00713064846da9629a1dd2d924c3b15cfd18a5912a", + 0 +}; +static u3j_harm _140_one_lte_a[] = {{".2", u3wa_lte, c3y}, {}}; +static c3_c* _140_one_lte_ha[] = { + "6ca61752aa27b453f28f20e12f652610d45695c3bd965190d5b4fa8b9daa518c", + 0 +}; +static u3j_harm _140_one_lth_a[] = {{".2", u3wa_lth, c3y}, {}}; +static c3_c* _140_one_lth_ha[] = { + "39260325faffbbf5bd88c4abb3efb09c5a7e1deb81a2126498d6c0f49474955e", + 0 +}; +static u3j_harm _140_one_max_a[] = {{".2", u3wa_max, c3y}, {}}; +static c3_c* _140_one_max_ha[] = { + "39260325faffbbf5bd88c4abb3efb09c5a7e1deb81a2126498d6c0f49474955e", + 0 +}; +static u3j_harm _140_one_min_a[] = {{".2", u3wa_min, c3y}, {}}; +static c3_c* _140_one_min_ha[] = { + "39260325faffbbf5bd88c4abb3efb09c5a7e1deb81a2126498d6c0f49474955e", + 0 +}; +static u3j_harm _140_one_mod_a[] = {{".2", u3wa_mod, c3y}, {}}; +static c3_c* _140_one_mod_ha[] = { + "374d2f3cd0ece33f680bd7103b99891d7dae03590f9eb9faac03a4a501f17038", + 0 +}; +static u3j_harm _140_one_mul_a[] = {{".2", u3wa_mul, c3y}, {}}; +static c3_c* _140_one_mul_ha[] = { + "51e45dbea29cf65a5c26ead095a20eb12ba078840652c88b9c1997820e670bc6", + 0 +}; +static u3j_harm _140_one_sub_a[] = {{".2", u3wa_sub, c3y}, {}}; +static c3_c* _140_one_sub_ha[] = { + "016695719ffe93c177e8a03afa5d29fc428ff596bb8962ace50f7706cd6e53a6", + 0 +}; + +static u3j_harm _140_one_cap_a[] = {{".2", u3wc_cap, c3y}, {}}; +static c3_c* _140_one_cap_ha[] = { + "407e764ee978c712b81c9c3452932e0f7d33faeda36dfe99aaf81d543db16254", + 0 +}; +static u3j_harm _140_one_peg_a[] = {{".2", u3wc_peg, c3y}, {}}; +static c3_c* _140_one_peg_ha[] = { + "8b608d2d2e2eccec3e2fc8cd2d92fd69504c72b26581bb9cbfa4ff51f997251f", + 0 +}; +static u3j_harm _140_one_mas_a[] = {{".2", u3wc_mas, c3y}, {}}; +static c3_c* _140_one_mas_ha[] = { + "1439dcd809f0819b09fb5fe7e83bc1292ca6fd33b5819d78e706d402c053b02a", + 0 +}; + +static u3j_core _140_one_d[] = +{ { "two", 3, 0, _140_two_d, _140_two_ha }, + + { "add", 7, _140_one_add_a, 0, _140_one_add_ha }, + { "dec", 7, _140_one_dec_a, 0, _140_one_dec_ha }, + { "div", 7, _140_one_div_a, 0, _140_one_div_ha }, + { "dvr", 7, _140_one_dvr_a, 0, _140_one_dvr_ha }, + { "gte", 7, _140_one_gte_a, 0, _140_one_gte_ha }, + { "gth", 7, _140_one_gth_a, 0, _140_one_gth_ha }, + { "lte", 7, _140_one_lte_a, 0, _140_one_lte_ha }, + { "lth", 7, _140_one_lth_a, 0, _140_one_lth_ha }, + { "max", 7, _140_one_max_a, 0, _140_one_max_ha }, + { "min", 7, _140_one_min_a, 0, _140_one_min_ha }, + { "mod", 7, _140_one_mod_a, 0, _140_one_mod_ha }, + { "mul", 7, _140_one_mul_a, 0, _140_one_mul_ha }, + { "sub", 7, _140_one_sub_a, 0, _140_one_sub_ha }, + + { "cap", 7, _140_one_cap_a, 0, _140_one_cap_ha }, + { "mas", 7, _140_one_mas_a, 0, _140_one_mas_ha }, + { "peg", 7, _140_one_peg_a, 0, _140_one_peg_ha }, + {} +}; +static c3_c* _140_one_ha[] = { + "2501f8dbe62384d144ab0f805501ed66325bd77a733eca0c80d1da673e4b16fb", + 0 +}; + +u3j_core _k140_d[] = +{ { "one", 3, 0, _140_one_d, _140_one_ha }, + {} +}; +static c3_c* _k140_ha[] = { + "9b82a903093c077afb3f0b9d4e95e1a9c9789d1ca605b57bbacf79857e3d5c52", + 0 +}; + +/* new jets +*/ + static u3j_harm _139_hex_json_de_a[] = {{".2", u3we_json_de}, {}}; + static u3j_harm _139_hex_json_en_a[] = {{".2", u3we_json_en}, {}}; +static u3j_core _139_hex_json_d[] = + { { "de", 15, _139_hex_json_de_a, 0, no_hashes }, + { "en", 15, _139_hex_json_en_a, 0, no_hashes }, + {} + }; + + + +static u3j_core _139_hex_d[] = +{ + { "lore", 63, _140_hex_lore_a, 0, no_hashes }, + { "leer", 63, _140_hex_leer_a, 0, no_hashes }, + { "loss", 63, _140_hex_loss_a, 0, no_hashes }, + { "lune", 127, _140_hex_lune_a, 0, no_hashes }, + + { "coed", 63, 0, _140_hex_coed_d, no_hashes }, + { "aes", 31, 0, _140_hex_aes_d, no_hashes }, + + { "hmac", 63, 0, _140_hex_hmac_d, no_hashes }, + { "argon", 31, 0, _140_hex_argon_d, no_hashes }, + { "blake", 31, 0, _140_hex_blake_d, no_hashes }, + { "kecc", 31, 0, _140_hex_kecc_d, no_hashes }, + { "ripemd", 31, 0, _140_hex_ripe_d, no_hashes }, + { "scr", 31, 0, _140_hex_scr_d, no_hashes }, + { "secp", 6, 0, _140_hex_secp_d, no_hashes }, + { "mimes", 31, 0, _140_hex_mimes_d, no_hashes }, + { "json", 31, 0, _139_hex_json_d, no_hashes }, + {} +}; + +static u3j_core _139_pen_d[] = +{ { "hex", 7, 0, _139_hex_d, no_hashes }, + + { "cell", 7, _140_pen_cell_a, 0, no_hashes }, + { "comb", 7, _140_pen_comb_a, 0, no_hashes }, + { "cons", 7, _140_pen_cons_a, 0, no_hashes }, + { "core", 7, _140_pen_core_a, 0, no_hashes }, + { "face", 7, _140_pen_face_a, 0, no_hashes }, + { "fitz", 7, _140_pen_fitz_a, 0, no_hashes }, + { "flan", 7, _140_pen_flan_a, 0, no_hashes }, + { "flip", 7, _140_pen_flip_a, 0, no_hashes }, + { "flor", 7, _140_pen_flor_a, 0, no_hashes }, + { "fork", 7, _140_pen_fork_a, 0, no_hashes }, + { "look", 7, _140_pen_look_a, 0, no_hashes }, + { "loot", 7, _140_pen_loot_a, 0, no_hashes }, + { "ut", 15, 0, _140_pen__ut_d, no_hashes, _140_pen__ut_ho }, + {} +}; + +static u3j_core _139_qua_d[] = +{ { "pen", 3, 0, _139_pen_d, no_hashes, _140_pen_ho }, + + { "po", 7, 0, _140_qua__po_d, no_hashes }, + + { "trip", 7, _140_qua_trip_a, 0, no_hashes }, + + { "bend", 7, 0, _140_qua__bend_d, no_hashes }, + { "cold", 7, 0, _140_qua__cold_d, no_hashes }, + { "comp", 7, 0, _140_qua__comp_d, no_hashes }, + { "cook", 7, 0, _140_qua__cook_d, no_hashes }, + { "easy", 7, 0, _140_qua__easy_d, no_hashes }, + { "glue", 7, 0, _140_qua__glue_d, no_hashes }, + { "here", 7, 0, _140_qua__here_d, no_hashes }, + { "just", 7, 0, _140_qua__just_d, no_hashes }, + { "mask", 7, 0, _140_qua__mask_d, no_hashes }, + { "shim", 7, 0, _140_qua__shim_d, no_hashes }, + { "stag", 7, 0, _140_qua__stag_d, no_hashes }, + { "stew", 7, 0, _140_qua__stew_d, no_hashes }, + { "stir", 7, 0, _140_qua__stir_d, no_hashes }, + + { "pfix", 7, _140_qua_pfix_a, 0, no_hashes }, + { "plug", 7, _140_qua_plug_a, 0, no_hashes }, + { "pose", 7, _140_qua_pose_a, 0, no_hashes }, + { "sfix", 7, _140_qua_sfix_a, 0, no_hashes }, + + { "mink", 7, _140_qua_mink_a, 0, no_hashes }, + { "mole", 7, _140_qua_mole_a, 0, no_hashes }, + { "mule", 7, _140_qua_mule_a, 0, no_hashes }, + + { "scot", 7, _140_qua_scot_a, 0, no_hashes }, + { "scow", 7, _140_qua_scow_a, 0, no_hashes }, + { "slaw", 7, _140_qua_slaw_a, 0, no_hashes }, + {} +}; + +static u3j_core _139_tri_d[] = +{ { "qua", 3, 0, _139_qua_d, no_hashes, _140_qua_ho }, + + { "cofl", 7, 0, _140_tri__cofl_d, no_hashes }, + { "rd", 7, 0, _140_tri__rd_d, no_hashes }, + { "rs", 7, 0, _140_tri__rs_d, no_hashes }, + { "rq", 7, 0, _140_tri__rq_d, no_hashes }, + { "rh", 7, 0, _140_tri__rh_d, no_hashes }, + { "og", 7, 0, _140_tri__og_d, no_hashes }, + + { "sha", 7, 0, _140_tri__sha_d, no_hashes }, + { "shax", 7, _140_tri_shax_a, 0, no_hashes }, + { "shay", 7, _140_tri_shay_a, 0, no_hashes }, + { "shas", 7, _140_tri_shas_a, 0, no_hashes }, + { "shal", 7, _140_tri_shal_a, 0, no_hashes }, + + { "ob", 3, 0, _140_ob_d, no_hashes, _140_ob_ho }, + {} +}; + +static u3j_harm _139_two__in_apt_a[] = {{".2", u3wdi_apt}, {}}; + +static u3j_core _139_two__in_d[] = + { { "apt", 7, _139_two__in_apt_a, 0, no_hashes }, + { "bif", 7, _140_two__in_bif_a, 0, no_hashes }, + { "del", 7, _140_two__in_del_a, 0, no_hashes }, + { "dif", 7, _140_two__in_dif_a, 0, no_hashes }, + { "gas", 7, _140_two__in_gas_a, 0, no_hashes }, + { "has", 7, _140_two__in_has_a, 0, no_hashes }, + { "int", 7, _140_two__in_int_a, 0, no_hashes }, + { "put", 7, _140_two__in_put_a, 0, no_hashes }, + { "rep", 7, _140_two__in_rep_a, 0, no_hashes }, + { "run", 7, _140_two__in_run_a, 0, no_hashes }, + { "tap", 7, _140_two__in_tap_a, 0, no_hashes }, + { "uni", 7, _140_two__in_uni_a, 0, no_hashes }, + { "wyt", 3, _140_two__in_wyt_a, 0, no_hashes }, + {} + }; + +static u3j_core _139_two_d[] = +{ { "tri", 3, 0, _139_tri_d, no_hashes, _140_tri_ho }, + + { "find", 7, _140_two_find_a, 0, no_hashes }, + { "flop", 7, _140_two_flop_a, 0, no_hashes }, + { "lent", 7, _140_two_lent_a, 0, no_hashes }, + { "levy", 7, _140_two_levy_a, 0, no_hashes }, + { "lien", 7, _140_two_lien_a, 0, no_hashes }, + { "murn", 7, _140_two_murn_a, 0, no_hashes }, + { "need", 7, _140_two_need_a, 0, no_hashes }, + { "reap", 7, _140_two_reap_a, 0, no_hashes }, + { "reel", 7, _140_two_reel_a, 0, no_hashes }, + { "roll", 7, _140_two_roll_a, 0, no_hashes }, + { "skid", 7, _140_two_skid_a, 0, no_hashes }, + { "skim", 7, _140_two_skim_a, 0, no_hashes }, + { "skip", 7, _140_two_skip_a, 0, no_hashes }, + { "scag", 7, _140_two_scag_a, 0, no_hashes }, + { "slag", 7, _140_two_slag_a, 0, no_hashes }, + { "snag", 7, _140_two_snag_a, 0, no_hashes }, + { "sort", 7, _140_two_sort_a, 0, no_hashes }, + { "turn", 7, _140_two_turn_a, 0, no_hashes }, + { "weld", 7, _140_two_weld_a, 0, no_hashes }, + { "welp", 7, _140_two_welp_a, 0, no_hashes }, + { "zing", 7, _140_two_zing_a, 0, no_hashes }, + + { "bex", 7, _140_two_bex_a, 0, no_hashes }, + { "cat", 7, _140_two_cat_a, 0, no_hashes }, + { "can", 7, _140_two_can_a, 0, no_hashes }, + { "con", 7, _140_two_con_a, 0, no_hashes }, + { "cue", 7, _140_two_cue_a, 0, no_hashes }, + { "cut", 7, _140_two_cut_a, 0, no_hashes }, + { "dis", 7, _140_two_dis_a, 0, no_hashes }, + { "dor", 7, _140_two_dor_a, 0, no_hashes }, + { "end", 7, _140_two_end_a, 0, no_hashes }, + { "gor", 7, _140_two_gor_a, 0, no_hashes }, + { "jam", 7, _140_two_jam_a, 0, no_hashes }, + { "lsh", 7, _140_two_lsh_a, 0, no_hashes }, + { "mat", 7, _140_two_mat_a, 0, no_hashes }, + { "met", 7, _140_two_met_a, 0, no_hashes }, + { "mix", 7, _140_two_mix_a, 0, no_hashes }, + { "mor", 7, _140_two_mor_a, 0, no_hashes }, + { "mug", 7, _140_two_mug_a, 0, no_hashes }, + { "muk", 59, _140_two_muk_a, 0, no_hashes }, + { "rap", 7, _140_two_rap_a, 0, no_hashes }, + { "rep", 7, _140_two_rep_a, 0, no_hashes }, + { "rev", 7, _140_two_rev_a, 0, no_hashes }, + { "rip", 7, _140_two_rip_a, 0, no_hashes }, + { "rsh", 7, _140_two_rsh_a, 0, no_hashes }, + { "swp", 7, _140_two_swp_a, 0, no_hashes }, + { "rub", 7, _140_two_rub_a, 0, no_hashes }, + { "pow", 7, _140_two_pow_a, 0, no_hashes }, + { "sqt", 7, _140_two_sqt_a, 0, no_hashes }, + { "xeb", 7, _140_two_xeb_a, 0, no_hashes }, + + { "by", 7, 0, _140_two__by_d, no_hashes }, + { "in", 7, 0, _139_two__in_d, no_hashes }, + {} +}; + +static u3j_core _139_one_d[] = +{ { "two", 3, 0, _139_two_d, no_hashes }, + + { "add", 7, _140_one_add_a, 0, no_hashes }, + { "dec", 7, _140_one_dec_a, 0, no_hashes }, + { "div", 7, _140_one_div_a, 0, no_hashes }, + { "dvr", 7, _140_one_dvr_a, 0, no_hashes }, + { "gte", 7, _140_one_gte_a, 0, no_hashes }, + { "gth", 7, _140_one_gth_a, 0, no_hashes }, + { "lte", 7, _140_one_lte_a, 0, no_hashes }, + { "lth", 7, _140_one_lth_a, 0, no_hashes }, + { "max", 7, _140_one_max_a, 0, no_hashes }, + { "min", 7, _140_one_min_a, 0, no_hashes }, + { "mod", 7, _140_one_mod_a, 0, no_hashes }, + { "mul", 7, _140_one_mul_a, 0, no_hashes }, + { "sub", 7, _140_one_sub_a, 0, no_hashes }, + + { "cap", 7, _140_one_cap_a, 0, no_hashes }, + { "mas", 7, _140_one_mas_a, 0, no_hashes }, + { "peg", 7, _140_one_peg_a, 0, no_hashes }, + {} +}; + +u3j_core _k139_d[] = +{ { "one", 3, 0, _139_one_d, no_hashes }, + {} +}; + + static u3j_harm _138_hex_blake3_hash_a[] = {{".2", u3we_blake3_hash, c3y}, {}}; + static u3j_harm _138_hex_blake3_compress_a[] = {{".2", u3we_blake3_compress, c3y}, {}}; + static u3j_harm _138_hex_blake3_chunk_output_a[] = {{".2", u3we_blake3_chunk_output, c3y}, {}}; + static u3j_core _138_hex_blake3_d[] = + { { "hash", 7, _138_hex_blake3_hash_a, 0, no_hashes }, + { "chunk-output", 7, _138_hex_blake3_chunk_output_a, 0, no_hashes }, + {} + }; + static u3j_core _138_hex_blake3_impl_d[] = + { { "compress", 7, _138_hex_blake3_compress_a, 0, no_hashes }, + { "blake3", 7, 0, _138_hex_blake3_d, no_hashes }, + {} + }; +static u3j_core _138_hex_blake_d[] = + { { "blake2b", 7, _140_hex_blake2b_a, 0, no_hashes }, + { "blake3-impl", 7, 0, _138_hex_blake3_impl_d, no_hashes }, + {} + }; + + static u3j_harm _138_hex_chacha_crypt_a[] = {{".2", u3we_chacha_crypt, c3y}, {}}; + static u3j_harm _138_hex_chacha_xchacha_a[] = {{".2", u3we_chacha_xchacha, c3y}, {}}; +static u3j_core _138_hex_chacha_d[] = + { { "crypt", 7, _138_hex_chacha_crypt_a, 0, no_hashes }, + { "xchacha", 7, _138_hex_chacha_xchacha_a, 0, no_hashes }, + {} + }; + +static u3j_core _138_hex_d[] = +{ { "lore", 63, _140_hex_lore_a, 0, no_hashes }, + { "leer", 63, _140_hex_leer_a, 0, no_hashes }, + { "loss", 63, _140_hex_loss_a, 0, no_hashes }, + { "lune", 127, _140_hex_lune_a, 0, no_hashes }, + + { "coed", 63, 0, _140_hex_coed_d, no_hashes }, + { "aes", 31, 0, _140_hex_aes_d, no_hashes }, + + { "hmac", 63, 0, _140_hex_hmac_d, no_hashes }, + { "argon", 31, 0, _140_hex_argon_d, no_hashes }, + { "blake", 31, 0, _138_hex_blake_d, no_hashes }, + { "chacha", 31, 0, _138_hex_chacha_d, no_hashes }, + { "kecc", 31, 0, _140_hex_kecc_d, no_hashes }, + { "ripemd", 31, 0, _140_hex_ripe_d, no_hashes }, + { "scr", 31, 0, _140_hex_scr_d, no_hashes }, + { "secp", 6, 0, _140_hex_secp_d, no_hashes }, + { "mimes", 31, 0, _140_hex_mimes_d, no_hashes }, + { "json", 31, 0, _139_hex_json_d, no_hashes }, + {} +}; + +static u3j_core _138_pen_d[] = +{ { "hex", 7, 0, _138_hex_d, no_hashes }, + + { "cell", 7, _140_pen_cell_a, 0, no_hashes }, + { "comb", 7, _140_pen_comb_a, 0, no_hashes }, + { "cons", 7, _140_pen_cons_a, 0, no_hashes }, + { "core", 7, _140_pen_core_a, 0, no_hashes }, + { "face", 7, _140_pen_face_a, 0, no_hashes }, + { "fitz", 7, _140_pen_fitz_a, 0, no_hashes }, + // flan, flip, and flor removed + // + { "fork", 7, _140_pen_fork_a, 0, no_hashes }, + { "look", 7, _140_pen_look_a, 0, no_hashes }, + { "loot", 7, _140_pen_loot_a, 0, no_hashes }, + { "ut", 15, 0, _140_pen__ut_d, no_hashes, _140_pen__ut_ho }, + {} +}; + +static u3j_core _138_qua_d[] = +{ { "pen", 3, 0, _138_pen_d, no_hashes, _140_pen_ho }, + + { "po", 7, 0, _140_qua__po_d, no_hashes }, + + { "trip", 7, _140_qua_trip_a, 0, no_hashes }, + + { "bend", 7, 0, _140_qua__bend_d, no_hashes }, + { "cold", 7, 0, _140_qua__cold_d, no_hashes }, + { "comp", 7, 0, _140_qua__comp_d, no_hashes }, + { "cook", 7, 0, _140_qua__cook_d, no_hashes }, + { "easy", 7, 0, _140_qua__easy_d, no_hashes }, + { "glue", 7, 0, _140_qua__glue_d, no_hashes }, + { "here", 7, 0, _140_qua__here_d, no_hashes }, + { "just", 7, 0, _140_qua__just_d, no_hashes }, + { "mask", 7, 0, _140_qua__mask_d, no_hashes }, + { "shim", 7, 0, _140_qua__shim_d, no_hashes }, + { "stag", 7, 0, _140_qua__stag_d, no_hashes }, + { "stew", 7, 0, _140_qua__stew_d, no_hashes }, + { "stir", 7, 0, _140_qua__stir_d, no_hashes }, + + { "pfix", 7, _140_qua_pfix_a, 0, no_hashes }, + { "plug", 7, _140_qua_plug_a, 0, no_hashes }, + { "pose", 7, _140_qua_pose_a, 0, no_hashes }, + { "sfix", 7, _140_qua_sfix_a, 0, no_hashes }, + + { "mink", 7, _140_qua_mink_a, 0, no_hashes }, + { "mole", 7, _140_qua_mole_a, 0, no_hashes }, + { "mule", 7, _140_qua_mule_a, 0, no_hashes }, + + { "scot", 7, _140_qua_scot_a, 0, no_hashes }, + { "scow", 7, _140_qua_scow_a, 0, no_hashes }, + { "slaw", 7, _140_qua_slaw_a, 0, no_hashes }, + {} +}; + +static u3j_core _138_tri_d[] = +{ { "qua", 3, 0, _138_qua_d, no_hashes, _140_qua_ho }, + + { "cofl", 7, 0, _140_tri__cofl_d, no_hashes }, + { "rd", 7, 0, _140_tri__rd_d, no_hashes }, + { "rs", 7, 0, _140_tri__rs_d, no_hashes }, + { "rq", 7, 0, _140_tri__rq_d, no_hashes }, + { "rh", 7, 0, _140_tri__rh_d, no_hashes }, + { "og", 7, 0, _140_tri__og_d, no_hashes }, + + { "sha", 7, 0, _140_tri__sha_d, no_hashes }, + { "shax", 7, _140_tri_shax_a, 0, no_hashes }, + { "shay", 7, _140_tri_shay_a, 0, no_hashes }, + { "shas", 7, _140_tri_shas_a, 0, no_hashes }, + { "shal", 7, _140_tri_shal_a, 0, no_hashes }, + + { "ob", 3, 0, _140_ob_d, no_hashes, _140_ob_ho }, + {} +}; + +static u3j_harm _138_two__by_bif_a[] = {{".2", u3wdb_bif, c3y}, {}}; + +static u3j_core _138_two__by_d[] = + { { "all", 7, _140_two__by_all_a, 0, _140_two__by_all_ha }, + { "any", 7, _140_two__by_any_a, 0, _140_two__by_any_ha }, + { "apt", 7, _140_two__by_apt_a, 0, _140_two__by_apt_ha }, + { "bif", 7, _138_two__by_bif_a, 0, no_hashes }, + { "del", 7, _140_two__by_del_a, 0, _140_two__by_del_ha }, + { "dif", 7, _140_two__by_dif_a, 0, _140_two__by_dif_ha }, + { "gas", 7, _140_two__by_gas_a, 0, _140_two__by_gas_ha }, + { "get", 7, _140_two__by_get_a, 0, _140_two__by_get_ha }, + { "has", 7, _140_two__by_has_a, 0, _140_two__by_has_ha }, + { "int", 7, _140_two__by_int_a, 0, _140_two__by_int_ha }, + { "jab", 7, _140_two__by_jab_a, 0, _140_two__by_jab_ha }, + { "key", 7, _140_two__by_key_a, 0, _140_two__by_key_ha }, + { "put", 7, _140_two__by_put_a, 0, _140_two__by_put_ha }, + { "rep", 7, _140_two__by_rep_a, 0, _140_two__by_rep_ha }, + { "run", 7, _140_two__by_run_a, 0, _140_two__by_run_ha }, + { "tap", 7, _140_two__by_tap_a, 0, _140_two__by_tap_ha }, + { "uni", 7, _140_two__by_uni_a, 0, _140_two__by_uni_ha }, + { "urn", 7, _140_two__by_urn_a, 0, _140_two__by_urn_ha }, + { "wyt", 3, _140_two__by_wyt_a, 0, _140_two__by_wyt_ha }, + {} + }; + +static u3j_harm _138_two_mate_a[] = {{".2", u3wb_mate, c3y}, {}}; + +static u3j_harm _138_two_aor_a[] = {{".2", u3wc_aor, c3y}, {}}; + +static u3j_core _138_two_d[] = +{ { "tri", 3, 0, _138_tri_d, no_hashes, _140_tri_ho }, + + { "find", 7, _140_two_find_a, 0, no_hashes }, + { "flop", 7, _140_two_flop_a, 0, no_hashes }, + { "lent", 7, _140_two_lent_a, 0, no_hashes }, + { "levy", 7, _140_two_levy_a, 0, no_hashes }, + { "lien", 7, _140_two_lien_a, 0, no_hashes }, + { "murn", 7, _140_two_murn_a, 0, no_hashes }, + { "need", 7, _140_two_need_a, 0, no_hashes }, + { "mate", 7, _138_two_mate_a, 0, no_hashes }, + { "reap", 7, _140_two_reap_a, 0, no_hashes }, + { "reel", 7, _140_two_reel_a, 0, no_hashes }, + { "roll", 7, _140_two_roll_a, 0, no_hashes }, + { "skid", 7, _140_two_skid_a, 0, no_hashes }, + { "skim", 7, _140_two_skim_a, 0, no_hashes }, + { "skip", 7, _140_two_skip_a, 0, no_hashes }, + { "scag", 7, _140_two_scag_a, 0, no_hashes }, + { "slag", 7, _140_two_slag_a, 0, no_hashes }, + { "snag", 7, _140_two_snag_a, 0, no_hashes }, + { "sort", 7, _140_two_sort_a, 0, no_hashes }, + { "turn", 7, _140_two_turn_a, 0, no_hashes }, + { "weld", 7, _140_two_weld_a, 0, no_hashes }, + { "welp", 7, _140_two_welp_a, 0, no_hashes }, + { "zing", 7, _140_two_zing_a, 0, no_hashes }, + + { "aor", 7, _138_two_aor_a, 0, no_hashes }, + { "bex", 7, _140_two_bex_a, 0, no_hashes }, + { "cat", 7, _140_two_cat_a, 0, no_hashes }, + { "can", 7, _140_two_can_a, 0, no_hashes }, + { "con", 7, _140_two_con_a, 0, no_hashes }, + { "cue", 7, _140_two_cue_a, 0, no_hashes }, + { "cut", 7, _140_two_cut_a, 0, no_hashes }, + { "dis", 7, _140_two_dis_a, 0, no_hashes }, + { "dor", 7, _140_two_dor_a, 0, no_hashes }, + { "end", 7, _140_two_end_a, 0, no_hashes }, + { "gor", 7, _140_two_gor_a, 0, no_hashes }, + { "jam", 7, _140_two_jam_a, 0, no_hashes }, + { "lsh", 7, _140_two_lsh_a, 0, no_hashes }, + { "mat", 7, _140_two_mat_a, 0, no_hashes }, + { "met", 7, _140_two_met_a, 0, no_hashes }, + { "mix", 7, _140_two_mix_a, 0, no_hashes }, + { "mor", 7, _140_two_mor_a, 0, no_hashes }, + { "mug", 7, _140_two_mug_a, 0, no_hashes }, + { "muk", 59, _140_two_muk_a, 0, no_hashes }, + { "rap", 7, _140_two_rap_a, 0, no_hashes }, + { "rep", 7, _140_two_rep_a, 0, no_hashes }, + { "rev", 7, _140_two_rev_a, 0, no_hashes }, + { "rip", 7, _140_two_rip_a, 0, no_hashes }, + { "rsh", 7, _140_two_rsh_a, 0, no_hashes }, + { "swp", 7, _140_two_swp_a, 0, no_hashes }, + { "rub", 7, _140_two_rub_a, 0, no_hashes }, + { "pow", 7, _140_two_pow_a, 0, no_hashes }, + { "sqt", 7, _140_two_sqt_a, 0, no_hashes }, + { "xeb", 7, _140_two_xeb_a, 0, no_hashes }, + + { "by", 7, 0, _138_two__by_d, no_hashes }, + { "in", 7, 0, _139_two__in_d, no_hashes }, + {} +}; + +static u3j_core _138_one_d[] = +{ { "two", 3, 0, _138_two_d, no_hashes }, + + { "add", 7, _140_one_add_a, 0, no_hashes }, + { "dec", 7, _140_one_dec_a, 0, no_hashes }, + { "div", 7, _140_one_div_a, 0, no_hashes }, + { "dvr", 7, _140_one_dvr_a, 0, no_hashes }, + { "gte", 7, _140_one_gte_a, 0, no_hashes }, + { "gth", 7, _140_one_gth_a, 0, no_hashes }, + { "lte", 7, _140_one_lte_a, 0, no_hashes }, + { "lth", 7, _140_one_lth_a, 0, no_hashes }, + { "max", 7, _140_one_max_a, 0, no_hashes }, + { "min", 7, _140_one_min_a, 0, no_hashes }, + { "mod", 7, _140_one_mod_a, 0, no_hashes }, + { "mul", 7, _140_one_mul_a, 0, no_hashes }, + { "sub", 7, _140_one_sub_a, 0, no_hashes }, + + { "cap", 7, _140_one_cap_a, 0, no_hashes }, + { "mas", 7, _140_one_mas_a, 0, no_hashes }, + { "peg", 7, _140_one_peg_a, 0, no_hashes }, + {} +}; + +static u3j_core _k138_d[] = +{ { "one", 3, 0, _138_one_d, no_hashes }, + {} +}; + + +static u3j_core _a50_two__by_d[] = + { { "apt", 7, _140_two__by_apt_a, 0, _140_two__by_apt_ha }, + { "del", 7, _140_two__by_del_a, 0, _140_two__by_del_ha }, + { "get", 7, _140_two__by_get_a, 0, _140_two__by_get_ha }, + { "has", 7, _140_two__by_has_a, 0, _140_two__by_has_ha }, + { "put", 7, _140_two__by_put_a, 0, _140_two__by_put_ha }, + {} + }; + +static u3j_core _a50_two__in_d[] = + { { "apt", 7, _140_two__in_apt_a, 0, _140_two__in_apt_ha }, // NB: 140 jet + { "del", 7, _140_two__in_del_a, 0, _140_two__in_del_ha }, + { "put", 7, _140_two__in_put_a, 0, _140_two__in_put_ha }, + {} + }; + +u3j_core _a50_d[] = +{ { "add", 7, _140_one_add_a, 0, _140_one_add_ha }, + { "dec", 7, _140_one_dec_a, 0, _140_one_dec_ha }, + { "div", 7, _140_one_div_a, 0, _140_one_div_ha }, + { "dvr", 7, _140_one_dvr_a, 0, _140_one_dvr_ha }, + { "gte", 7, _140_one_gte_a, 0, _140_one_gte_ha }, + { "gth", 7, _140_one_gth_a, 0, _140_one_gth_ha }, + { "lte", 7, _140_one_lte_a, 0, _140_one_lte_ha }, + { "lth", 7, _140_one_lth_a, 0, _140_one_lth_ha }, + { "mod", 7, _140_one_mod_a, 0, _140_one_mod_ha }, + { "mul", 7, _140_one_mul_a, 0, _140_one_mul_ha }, + { "sub", 7, _140_one_sub_a, 0, _140_one_sub_ha }, + + { "bex", 7, _140_two_bex_a, 0, _140_two_bex_ha }, + { "cat", 7, _140_two_cat_a, 0, _140_two_cat_ha }, + { "can", 7, _140_two_can_a, 0, _140_two_can_ha }, + { "con", 7, _140_two_con_a, 0, _140_two_con_ha }, + { "cut", 7, _140_two_cut_a, 0, _140_two_cut_ha }, + { "dis", 7, _140_two_dis_a, 0, _140_two_dis_ha }, + { "dor", 7, _140_two_dor_a, 0, _140_two_dor_ha }, + { "end", 7, _140_two_end_a, 0, _140_two_end_ha }, + { "gor", 7, _140_two_gor_a, 0, _140_two_gor_ha }, + { "lsh", 7, _140_two_lsh_a, 0, _140_two_lsh_ha }, + { "met", 7, _140_two_met_a, 0, _140_two_met_ha }, + { "mix", 7, _140_two_mix_a, 0, _140_two_mix_ha }, + { "mor", 7, _140_two_mor_a, 0, _140_two_mor_ha }, + { "mug", 7, _140_two_mug_a, 0, _140_two_mug_ha }, + { "rep", 7, _140_two_rep_a, 0, _140_two_rep_ha }, + { "rip", 7, _140_two_rip_a, 0, _140_two_rip_ha }, + { "rsh", 7, _140_two_rsh_a, 0, _140_two_rsh_ha }, + { "swp", 7, _140_two_swp_a, 0, _140_two_swp_ha }, + + { "flop", 7, _140_two_flop_a, 0, _140_two_flop_ha }, + { "lent", 7, _140_two_lent_a, 0, _140_two_lent_ha }, + { "levy", 7, _140_two_levy_a, 0, _140_two_levy_ha }, + { "reap", 7, _140_two_reap_a, 0, _140_two_reap_ha }, + { "slag", 7, _140_two_slag_a, 0, _140_two_slag_ha }, + { "snag", 7, _140_two_snag_a, 0, _140_two_snag_ha }, + { "turn", 7, _140_two_turn_a, 0, _140_two_turn_ha }, + { "welp", 7, _140_two_welp_a, 0, _140_two_welp_ha }, + + { "by", 7, 0, _a50_two__by_d, _140_two__by_ha }, + { "in", 7, 0, _a50_two__in_d, _140_two__in_ha }, + {} +}; + +extern u3j_core _k137_d[]; +extern u3j_core _k136_d[]; + +static u3j_core _d[] = +{ { "k140", 0, 0, _k140_d, _k140_ha, 0, (u3j_core*) 140, 0 }, + { "k139", 0, 0, _k139_d, no_hashes, 0, (u3j_core*) 139, 0 }, + { "k138", 0, 0, _k138_d, no_hashes, 0, (u3j_core*) 138, 0 }, + { "k137", 0, 0, _k137_d, no_hashes, 0, (u3j_core*) 137, 0 }, + { "k136", 0, 0, _k136_d, no_hashes, 0, (u3j_core*) 136, 0 }, + { "a50", 0, 0, _a50_d, _k140_ha, 0, (u3j_core*) c3__a50, 0 }, + {} +}; + +u3j_dash +u3j_Dash = { + _d, + 0, + 0 +}; + diff --git a/vere/pkg/noun/jets/w.h b/vere/pkg/noun/jets/w.h new file mode 100644 index 0000000..57d9677 --- /dev/null +++ b/vere/pkg/noun/jets/w.h @@ -0,0 +1,433 @@ +/// @file + +#ifndef U3_JETS_W_H +#define U3_JETS_W_H + +#include "types.h" + + /** Tier 1. + **/ + u3_noun u3wa_add(u3_noun); + u3_noun u3wa_dec(u3_noun); + u3_noun u3wa_div(u3_noun); + u3_noun u3wa_gte(u3_noun); + u3_noun u3wa_gth(u3_noun); + u3_noun u3wa_lte(u3_noun); + u3_noun u3wa_lth(u3_noun); + u3_noun u3wa_max(u3_noun); + u3_noun u3wa_min(u3_noun); + u3_noun u3wa_mod(u3_noun); + u3_noun u3wa_mul(u3_noun); + u3_noun u3wa_sub(u3_noun); + + /** Tier 2. + **/ + u3_noun u3wb_bind(u3_noun); + u3_noun u3wb_clap(u3_noun); + u3_noun u3wb_drop(u3_noun); + u3_noun u3wb_find(u3_noun); + u3_noun u3wb_flop(u3_noun); + u3_noun u3wb_lent(u3_noun); + u3_noun u3wb_levy(u3_noun); + u3_noun u3wb_lien(u3_noun); + u3_noun u3wb_murn(u3_noun); + u3_noun u3wb_need(u3_noun); + u3_noun u3wb_mate(u3_noun); + u3_noun u3wb_reap(u3_noun); + u3_noun u3wb_reel(u3_noun); + u3_noun u3wb_roll(u3_noun); + u3_noun u3wb_skid(u3_noun); + u3_noun u3wb_skim(u3_noun); + u3_noun u3wb_skip(u3_noun); + u3_noun u3wb_scag(u3_noun); + u3_noun u3wb_slag(u3_noun); + u3_noun u3wb_snag(u3_noun); + u3_noun u3wb_sort(u3_noun); + u3_noun u3wb_turn(u3_noun); + u3_noun u3wb_weld(u3_noun); +# define u3wb_welp u3wb_weld + u3_noun u3wb_zing(u3_noun); + + /** Tier 3. + **/ + u3_noun u3wc_aor(u3_noun); + u3_noun u3wc_bex(u3_noun); + u3_noun u3wc_xeb(u3_noun); + u3_noun u3wc_can(u3_noun); + u3_noun u3wc_cap(u3_noun); + u3_noun u3wc_cat(u3_noun); + u3_noun u3wc_clz(u3_noun); + u3_noun u3wc_con(u3_noun); + u3_noun u3wc_ctz(u3_noun); + u3_noun u3wc_cut(u3_noun); + u3_noun u3wc_dis(u3_noun); + u3_noun u3wc_dor(u3_noun); + u3_noun u3wc_dvr(u3_noun); + u3_noun u3wc_end(u3_noun); + u3_noun u3wc_gor(u3_noun); + u3_noun u3wc_ham(u3_noun); + u3_noun u3wc_hew(u3_noun); + u3_noun u3wc_lsh(u3_noun); + u3_noun u3wc_mas(u3_noun); + u3_noun u3wc_met(u3_noun); + u3_noun u3wc_mix(u3_noun); + u3_noun u3wc_mor(u3_noun); + u3_noun u3wc_mug(u3_noun); + u3_noun u3wc_muk(u3_noun); + u3_noun u3wc_peg(u3_noun); + u3_noun u3wc_pow(u3_noun); + u3_noun u3wc_rap(u3_noun); + u3_noun u3wc_rep(u3_noun); + u3_noun u3wc_rev(u3_noun); + u3_noun u3wc_rig(u3_noun); + u3_noun u3wc_rip(u3_noun); + u3_noun u3wc_rsh(u3_noun); + u3_noun u3wc_sew(u3_noun); + u3_noun u3wc_swp(u3_noun); + u3_noun u3wc_sqt(u3_noun); + + u3_noun u3wcp_ins(u3_noun); + u3_noun u3wcp_ind(u3_noun); + u3_noun u3wcp_tos(u3_noun); + u3_noun u3wcp_tod(u3_noun); + + /** Tier 4. + **/ + u3_noun u3wdb_all(u3_noun); + u3_noun u3wdb_any(u3_noun); + u3_noun u3wdb_apt(u3_noun); + u3_noun u3wdb_bif(u3_noun); + u3_noun u3wdb_del(u3_noun); + u3_noun u3wdb_dif(u3_noun); + u3_noun u3wdb_gas(u3_noun); + u3_noun u3wdb_get(u3_noun); + u3_noun u3wdb_has(u3_noun); + u3_noun u3wdb_int(u3_noun); + u3_noun u3wdb_jab(u3_noun); + u3_noun u3wdb_key(u3_noun); + u3_noun u3wdb_put(u3_noun); +# define u3wdb_tap u3wdi_tap + u3_noun u3wdb_uni(u3_noun); + u3_noun u3wdb_urn(u3_noun); +# define u3wdb_rep u3wdi_rep + u3_noun u3wdb_run(u3_noun); +# define u3wdb_wyt u3wdi_wyt + + u3_noun u3wdi_apt_140(u3_noun); + u3_noun u3wdi_apt(u3_noun); + u3_noun u3wdi_bif(u3_noun); + u3_noun u3wdi_del(u3_noun); + u3_noun u3wdi_dif(u3_noun); + u3_noun u3wdi_gas(u3_noun); + u3_noun u3wdi_has(u3_noun); + u3_noun u3wdi_int(u3_noun); + u3_noun u3wdi_put(u3_noun); + u3_noun u3wdi_rep(u3_noun); + u3_noun u3wdi_run(u3_noun); + u3_noun u3wdi_tap(u3_noun); + u3_noun u3wdi_uni(u3_noun); + u3_noun u3wdi_wyt(u3_noun); + + /** Tier 5. + **/ + u3_noun u3we_cue(u3_noun); + u3_noun u3we_jam(u3_noun); + u3_noun u3we_mat(u3_noun); + u3_noun u3we_rub(u3_noun); + u3_noun u3we_leer(u3_noun); + u3_noun u3we_lore(u3_noun); + u3_noun u3we_loss(u3_noun); + u3_noun u3we_lune(u3_noun); + u3_noun u3we_mice(u3_noun); + u3_noun u3we_mink(u3_noun); + u3_noun u3we_mole(u3_noun); + u3_noun u3we_mule(u3_noun); + u3_noun u3we_repg(u3_noun); + u3_noun u3we_rexp(u3_noun); + u3_noun u3we_trip(u3_noun); + + u3_noun u3we_scow(u3_noun); + u3_noun u3we_scot(u3_noun); + u3_noun u3we_slaw(u3_noun); + + u3_noun u3we_pfix(u3_noun); + u3_noun u3we_plug(u3_noun); + u3_noun u3we_pose(u3_noun); + u3_noun u3we_sfix(u3_noun); + + u3_noun u3wea_ecba_en(u3_noun); + u3_noun u3wea_ecba_de(u3_noun); + u3_noun u3wea_ecbb_en(u3_noun); + u3_noun u3wea_ecbb_de(u3_noun); + u3_noun u3wea_ecbc_en(u3_noun); + u3_noun u3wea_ecbc_de(u3_noun); + + u3_noun u3wea_cbca_en(u3_noun); + u3_noun u3wea_cbca_de(u3_noun); + u3_noun u3wea_cbcb_en(u3_noun); + u3_noun u3wea_cbcb_de(u3_noun); + u3_noun u3wea_cbcc_en(u3_noun); + u3_noun u3wea_cbcc_de(u3_noun); + + u3_noun u3wea_siva_en(u3_noun); + u3_noun u3wea_siva_de(u3_noun); + u3_noun u3wea_sivb_en(u3_noun); + u3_noun u3wea_sivb_de(u3_noun); + u3_noun u3wea_sivc_en(u3_noun); + u3_noun u3wea_sivc_de(u3_noun); + + u3_noun u3wea_de(u3_noun); + u3_noun u3wea_en(u3_noun); + + u3_noun u3wes_hsh(u3_noun); + u3_noun u3wes_hsl(u3_noun); + u3_noun u3wes_pbk(u3_noun); + u3_noun u3wes_pbl(u3_noun); + + u3_noun u3we_shax(u3_noun); + u3_noun u3we_shay(u3_noun); + u3_noun u3we_shas(u3_noun); + u3_noun u3we_shal(u3_noun); + u3_noun u3we_sha1(u3_noun); + + u3_noun u3we_fein_ob(u3_noun); + u3_noun u3we_fynd_ob(u3_noun); + + u3_noun u3weo_raw(u3_noun); + + u3_noun u3wee_scad(u3_noun); + u3_noun u3wee_scas(u3_noun); + u3_noun u3wee_scap(u3_noun); + + u3_noun u3wee_puck(u3_noun); + u3_noun u3wee_luck(u3_noun); + u3_noun u3wee_sign(u3_noun); + u3_noun u3wee_sign_raw(u3_noun); + u3_noun u3wee_veri(u3_noun); + u3_noun u3wee_sign_octs(u3_noun); + u3_noun u3wee_sign_octs_raw(u3_noun); + u3_noun u3wee_veri_octs(u3_noun); + u3_noun u3wee_shar(u3_noun); + u3_noun u3wee_slar(u3_noun); + u3_noun u3wee_recs(u3_noun); + u3_noun u3wee_smac(u3_noun); + u3_noun u3wee_point_neg(u3_noun); + u3_noun u3wee_point_add(u3_noun); + u3_noun u3wee_scalarmult(u3_noun); + u3_noun u3wee_scalarmult_base(u3_noun); + u3_noun u3wee_add_scalarmult_scalarmult_base(u3_noun); + u3_noun u3wee_add_double_scalarmult(u3_noun); + + u3_noun u3we_hmac(u3_noun); + + u3_noun u3we_kecc224(u3_noun); + u3_noun u3we_kecc256(u3_noun); + u3_noun u3we_kecc384(u3_noun); + u3_noun u3we_kecc512(u3_noun); + + u3_noun u3we_argon2(u3_noun); + + u3_noun u3we_blake2b(u3_noun); + u3_noun u3we_blake3_hash(u3_noun); + u3_noun u3we_blake3_chunk_output(u3_noun); + u3_noun u3we_blake3_compress(u3_noun); + + u3_noun u3we_chacha_crypt(u3_noun); + u3_noun u3we_chacha_xchacha(u3_noun); + + u3_noun u3we_adler32(u3_noun); + u3_noun u3we_crc32(u3_noun); + + u3_noun u3we_ripe(u3_noun); + + u3_noun u3we_make(u3_noun); + u3_noun u3we_sign(u3_noun); + u3_noun u3we_reco(u3_noun); + + u3_noun u3we_sosi(u3_noun); + u3_noun u3we_sove(u3_noun); + + u3_noun u3we_en_base16(u3_noun); + u3_noun u3we_de_base16(u3_noun); + + u3_noun u3we_json_de(u3_noun); + u3_atom u3we_json_en(u3_noun); + + u3_noun u3we_bend_fun(u3_noun); + u3_noun u3we_cold_fun(u3_noun); + u3_noun u3we_cook_fun(u3_noun); + u3_noun u3we_comp_fun(u3_noun); + u3_noun u3we_easy_fun(u3_noun); + u3_noun u3we_glue_fun(u3_noun); + u3_noun u3we_here_fun(u3_noun); + u3_noun u3we_just_fun(u3_noun); + u3_noun u3we_mask_fun(u3_noun); + u3_noun u3we_shim_fun(u3_noun); + u3_noun u3we_stag_fun(u3_noun); + u3_noun u3we_stew_fun(u3_noun); + u3_noun u3we_stir_fun(u3_noun); + + u3_noun u3wef_drg(u3_noun); + u3_noun u3wef_lug(u3_noun); + + u3_noun u3wer_add(u3_noun); + u3_noun u3wer_sub(u3_noun); + u3_noun u3wer_mul(u3_noun); + u3_noun u3wer_div(u3_noun); + u3_noun u3wer_sqt(u3_noun); + u3_noun u3wer_fma(u3_noun); + u3_noun u3wer_lth(u3_noun); + u3_noun u3wer_lte(u3_noun); + u3_noun u3wer_equ(u3_noun); + u3_noun u3wer_gte(u3_noun); + u3_noun u3wer_gth(u3_noun); + + u3_noun u3wet_add(u3_noun); + u3_noun u3wet_sub(u3_noun); + u3_noun u3wet_mul(u3_noun); + u3_noun u3wet_div(u3_noun); + u3_noun u3wet_sqt(u3_noun); + u3_noun u3wet_fma(u3_noun); + u3_noun u3wet_lth(u3_noun); + u3_noun u3wet_lte(u3_noun); + u3_noun u3wet_equ(u3_noun); + u3_noun u3wet_gte(u3_noun); + u3_noun u3wet_gth(u3_noun); + + u3_noun u3weq_add(u3_noun); + u3_noun u3weq_sub(u3_noun); + u3_noun u3weq_mul(u3_noun); + u3_noun u3weq_div(u3_noun); + u3_noun u3weq_sqt(u3_noun); + u3_noun u3weq_fma(u3_noun); + u3_noun u3weq_lth(u3_noun); + u3_noun u3weq_lte(u3_noun); + u3_noun u3weq_equ(u3_noun); + u3_noun u3weq_gte(u3_noun); + u3_noun u3weq_gth(u3_noun); + + u3_noun u3wes_add(u3_noun); + u3_noun u3wes_sub(u3_noun); + u3_noun u3wes_mul(u3_noun); + u3_noun u3wes_div(u3_noun); + u3_noun u3wes_sqt(u3_noun); + u3_noun u3wes_fma(u3_noun); + u3_noun u3wes_lth(u3_noun); + u3_noun u3wes_lte(u3_noun); + u3_noun u3wes_equ(u3_noun); + u3_noun u3wes_gte(u3_noun); + u3_noun u3wes_gth(u3_noun); + + u3_noun u3we_crc32(u3_noun); + u3_noun u3we_decompress_zlib(u3_noun); + u3_noun u3we_decompress_gzip(u3_noun); + + u3_noun u3we_lia_run_v1(u3_noun); + u3_noun u3we_lia_run_once(u3_noun); + + //+| %utilities + u3_noun u3we_bytestream_rip_octs(u3_noun); + u3_noun u3we_bytestream_cat_octs(u3_noun); + u3_noun u3we_bytestream_can_octs(u3_noun); + //+| %navigation + u3_noun u3we_bytestream_skip_line(u3_noun); + u3_noun u3we_bytestream_find_byte(u3_noun); + u3_noun u3we_bytestream_seek_byte(u3_noun); + //+| %read-byte + u3_noun u3we_bytestream_read_byte(u3_noun); + //+| %read-octs + u3_noun u3we_bytestream_read_octs(u3_noun); + //+| %transformation + u3_noun u3we_bytestream_chunk(u3_noun); + u3_noun u3we_bytestream_extract(u3_noun); + u3_noun u3we_bytestream_fuse_extract(u3_noun); + //+| %bitstream + u3_noun u3we_bytestream_need_bits(u3_noun); + u3_noun u3we_bytestream_drop_bits(u3_noun); + // u3_noun u3we_bytestream_skip_bits(u3_noun); + u3_noun u3we_bytestream_peek_bits(u3_noun); + u3_noun u3we_bytestream_read_bits(u3_noun); + // u3_noun u3we_bytestream_read_need_bits(u3_noun); + u3_noun u3we_bytestream_byte_bits(u3_noun); + + /** Tier 6. + **/ + u3_noun u3wf_bull(u3_noun); + u3_noun u3wf_cell(u3_noun); + u3_noun u3wf_comb(u3_noun); + u3_noun u3wf_cons(u3_noun); + u3_noun u3wf_core(u3_noun); + u3_noun u3wf_cube(u3_noun); + u3_noun u3wf_face(u3_noun); + u3_noun u3wf_fine(u3_noun); + u3_noun u3wf_fitz(u3_noun); + u3_noun u3wf_flan_139(u3_noun); + u3_noun u3wf_flay(u3_noun); + u3_noun u3wf_flip_139(u3_noun); + u3_noun u3wf_flor_139(u3_noun); + u3_noun u3wf_forq(u3_noun); + u3_noun u3wf_fork(u3_noun); + u3_noun u3wf_hint(u3_noun); + u3_noun u3wf_hike(u3_noun); + u3_noun u3wf_look(u3_noun); + u3_noun u3wf_loot(u3_noun); + + u3_noun u3wfl_bunt(u3_noun); + u3_noun u3wfl_whip(u3_noun); + + u3_noun u3wfp_hack(u3_noun); + u3_noun u3wfp_late(u3_noun); + u3_noun u3wfp_open(u3_noun); + u3_noun u3wfp_rake(u3_noun); + + u3_noun u3wfu_busk(u3_noun); + u3_noun u3wfu_crop(u3_noun); + u3_noun u3wfu_find(u3_noun); + u3_noun u3wfu_fond(u3_noun); + u3_noun u3wfu_fish(u3_noun); + u3_noun u3wfu_fuse(u3_noun); + u3_noun u3wfu_redo(u3_noun); + u3_noun u3wfu_mint(u3_noun); + u3_noun u3wfu_mull(u3_noun); + u3_noun u3wfu_nest_dext(u3_noun); + u3_noun u3wfu_peek(u3_noun); + u3_noun u3wfu_play(u3_noun); + u3_noun u3wfu_repo(u3_noun); + u3_noun u3wfu_rest(u3_noun); + + /** Tier 7. + **/ + u3_noun u3wg_plot_fax(u3_noun); + u3_noun u3wg_plot_met(u3_noun); + u3_noun u3wi_la_add(u3_noun); + u3_noun u3wi_la_sub(u3_noun); + u3_noun u3wi_la_mul(u3_noun); + u3_noun u3wi_la_div(u3_noun); + u3_noun u3wi_la_mod(u3_noun); + u3_noun u3wi_la_adds(u3_noun); + u3_noun u3wi_la_subs(u3_noun); + u3_noun u3wi_la_muls(u3_noun); + u3_noun u3wi_la_divs(u3_noun); + u3_noun u3wi_la_mods(u3_noun); + u3_noun u3wi_la_dot(u3_noun); + u3_noun u3wi_la_diag(u3_noun); + u3_noun u3wi_la_transpose(u3_noun); + u3_noun u3wi_la_cumsum(u3_noun); + u3_noun u3wi_la_argmin(u3_noun); + u3_noun u3wi_la_argmax(u3_noun); + u3_noun u3wi_la_ravel(u3_noun); + u3_noun u3wi_la_min(u3_noun); + u3_noun u3wi_la_max(u3_noun); + u3_noun u3wi_la_linspace(u3_noun); + u3_noun u3wi_la_range(u3_noun); + u3_noun u3wi_la_abs(u3_noun); + u3_noun u3wi_la_gth(u3_noun); + u3_noun u3wi_la_gte(u3_noun); + u3_noun u3wi_la_lth(u3_noun); + u3_noun u3wi_la_lte(u3_noun); + + u3_noun u3wi_la_trace(u3_noun); + u3_noun u3wi_la_mmul(u3_noun); + +#endif /* ifndef U3_JETS_W_H */ + diff --git a/vere/pkg/noun/jets_tests.c b/vere/pkg/noun/jets_tests.c new file mode 100644 index 0000000..222b31a --- /dev/null +++ b/vere/pkg/noun/jets_tests.c @@ -0,0 +1,994 @@ +/// @file + +#include "noun.h" + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + u3m_init(1 << 20); + u3m_pave(c3y); +} + +static inline c3_i +_ud_etch(c3_d num_d, const c3_c* num_c) +{ + u3_atom num = u3i_chub(num_d); + c3_c* out_c; + size_t len_i = u3s_etch_ud_c(num, &out_c); + c3_i ret_i = 1; + + if ( 0 != strcmp(num_c, out_c) ) { + fprintf(stderr, "etch_ud: %" PRIu64 " fail; expected %s, got '%s'\r\n", + num_d, num_c, out_c); + ret_i = 0; + } + else { + u3_noun out = u3s_etch_ud(num); + u3_noun tou = u3i_bytes(len_i, (c3_y*)out_c); + + if ( c3n == u3r_sing(tou, out) ) { + fprintf(stderr, "etch_ud: %" PRIu64 " mismatch; expected %s\r\n", num_d, num_c); + u3m_p("out", out); + ret_i = 0; + } + + u3z(out); + u3z(tou); + } + + c3_free(out_c); + u3z(num); + + return ret_i; +} + +static c3_i +_test_etch_ud(void) +{ + c3_i ret_i = 1; + + ret_i &= _ud_etch(0, "0"); + ret_i &= _ud_etch(1, "1"); + ret_i &= _ud_etch(12, "12"); + ret_i &= _ud_etch(123, "123"); + ret_i &= _ud_etch(1234, "1.234"); + ret_i &= _ud_etch(12345, "12.345"); + ret_i &= _ud_etch(123456, "123.456"); + ret_i &= _ud_etch(1234567, "1.234.567"); + ret_i &= _ud_etch(12345678, "12.345.678"); + ret_i &= _ud_etch(123456789, "123.456.789"); + ret_i &= _ud_etch(100000000, "100.000.000"); + ret_i &= _ud_etch(101101101, "101.101.101"); + ret_i &= _ud_etch(201201201, "201.201.201"); + ret_i &= _ud_etch(302201100, "302.201.100"); + + ret_i &= _ud_etch(8589934592ULL, "8.589.934.592"); + ret_i &= _ud_etch(2305843009213693952ULL, "2.305.843.009.213.693.952"); + ret_i &= _ud_etch(18446744073709551615ULL, "18.446.744.073.709.551.615"); + + { + c3_c* num_c = "340.282.366.920.938.463.463.374.607.431.768.211.456"; + u3_atom num = u3qc_bex(128); + c3_c* out_c; + size_t len_i = u3s_etch_ud_c(num, &out_c); + + if ( 0 != strncmp(num_c, out_c, len_i) ) { + fprintf(stderr, "etch_ud: (bex 128) fail; expected %s, got '%s'\r\n", + num_c, out_c); + ret_i = 0; + } + else { + u3_noun out = u3s_etch_ud(num); + u3_noun tou = u3i_bytes(len_i, (c3_y*)out_c); + + if ( c3n == u3r_sing(tou, out) ) { + fprintf(stderr, "etch_ud: (bex 128) mismatch; expected %s\r\n", num_c); + u3m_p("out", out); + ret_i = 0; + } + + u3z(out); + u3z(tou); + } + + c3_free(out_c); + u3z(num); + } + + return ret_i; +} + +static inline c3_i +_ux_etch(c3_d num_d, const c3_c* num_c) +{ + u3_atom num = u3i_chub(num_d); + c3_c* out_c; + size_t len_i = u3s_etch_ux_c(num, &out_c); + c3_i ret_i = 1; + + if ( 0 != strcmp(num_c, out_c) ) { + fprintf(stderr, "etch_ux: 0x%" PRIx64 " fail; expected %s, got '%s'\r\n", + num_d, num_c, out_c); + ret_i = 0; + } + else { + u3_noun out = u3s_etch_ux(num); + u3_noun tou = u3i_bytes(len_i, (c3_y*)out_c); + + if ( c3n == u3r_sing(tou, out) ) { + fprintf(stderr, "etch_ux: 0x%" PRIx64 " mismatch; expected %s\r\n", num_d, num_c); + u3m_p("out", out); + ret_i = 0; + } + + u3z(out); + u3z(tou); + } + + c3_free(out_c); + u3z(num); + + return ret_i; +} + +static c3_i +_test_etch_ux(void) +{ + c3_i ret_i = 1; + + ret_i &= _ux_etch(0x0, "0x0"); + ret_i &= _ux_etch(0x1, "0x1"); + ret_i &= _ux_etch(0x12, "0x12"); + ret_i &= _ux_etch(0x123, "0x123"); + ret_i &= _ux_etch(0x1234, "0x1234"); + ret_i &= _ux_etch(0x12345, "0x1.2345"); + ret_i &= _ux_etch(0x123456, "0x12.3456"); + ret_i &= _ux_etch(0x1234567, "0x123.4567"); + ret_i &= _ux_etch(0x12345678, "0x1234.5678"); + ret_i &= _ux_etch(0x123456789, "0x1.2345.6789"); + ret_i &= _ux_etch(0x100000000, "0x1.0000.0000"); + ret_i &= _ux_etch(0x101101101, "0x1.0110.1101"); + ret_i &= _ux_etch(0x201201201, "0x2.0120.1201"); + ret_i &= _ux_etch(0x302201100, "0x3.0220.1100"); + + ret_i &= _ux_etch(0x123456789abcdefULL, "0x123.4567.89ab.cdef"); + ret_i &= _ux_etch(0x8589934592ULL, "0x85.8993.4592"); + ret_i &= _ux_etch(0x5843009213693952ULL, "0x5843.0092.1369.3952"); + ret_i &= _ux_etch(0x6744073709551615ULL, "0x6744.0737.0955.1615"); + + { + c3_c* num_c = "0x1.0000.0000.0000.0000.0000.0000.0000.0000"; + u3_atom num = u3qc_bex(128); + c3_c* out_c; + size_t len_i = u3s_etch_ux_c(num, &out_c); + + if ( 0 != strncmp(num_c, out_c, len_i) ) { + fprintf(stderr, "etch_ux: (bex 128) fail; expected %s, got '%s'\r\n", + num_c, out_c); + ret_i = 0; + } + else { + u3_noun out = u3s_etch_ux(num); + u3_noun tou = u3i_bytes(len_i, (c3_y*)out_c); + + if ( c3n == u3r_sing(tou, out) ) { + fprintf(stderr, "etch_ux: (bex 128) mismatch; expected %s\r\n", num_c); + u3m_p("out", out); + ret_i = 0; + } + + u3z(out); + u3z(tou); + } + + c3_free(out_c); + u3z(num); + } + + return ret_i; +} + +static inline c3_i +_uv_etch(c3_d num_d, const c3_c* num_c) +{ + u3_atom num = u3i_chub(num_d); + c3_c* out_c; + size_t len_i = u3s_etch_uv_c(num, &out_c); + c3_i ret_i = 1; + + if ( 0 != strcmp(num_c, out_c) ) { + fprintf(stderr, "etch_uv: 0x%" PRIx64 " fail; expected %s, got '%s'\r\n", + num_d, num_c, out_c); + ret_i = 0; + } + else { + u3_noun out = u3s_etch_uv(num); + u3_noun tou = u3i_bytes(len_i, (c3_y*)out_c); + + if ( c3n == u3r_sing(tou, out) ) { + fprintf(stderr, "etch_uv: 0x%" PRIx64 " mismatch; expected %s\r\n", num_d, num_c); + u3m_p("out", out); + ret_i = 0; + } + + u3z(out); + u3z(tou); + } + + c3_free(out_c); + u3z(num); + + return ret_i; +} + +static c3_i +_test_etch_uv(void) +{ + c3_i ret_i = 1; + + ret_i &= _uv_etch(0x0, "0v0"); + ret_i &= _uv_etch(0x1, "0v1"); + ret_i &= _uv_etch(0x10, "0vg"); + ret_i &= _uv_etch(0x12, "0vi"); + ret_i &= _uv_etch(0x123, "0v93"); + ret_i &= _uv_etch(0x1234, "0v4hk"); + ret_i &= _uv_etch(0x12345, "0v28q5"); + ret_i &= _uv_etch(0x123456, "0v14d2m"); + ret_i &= _uv_etch(0x1234567, "0vi6hb7"); + ret_i &= _uv_etch(0x12345678, "0v9.38ljo"); + ret_i &= _uv_etch(0x123456789, "0v4h.kaps9"); + ret_i &= _uv_etch(0x100000000, "0v40.00000"); + ret_i &= _uv_etch(0x101101101, "0v40.h0481"); + ret_i &= _uv_etch(0x201201201, "0v80.i04g1"); + ret_i &= _uv_etch(0x302201100, "0vc1.20480"); + + ret_i &= _uv_etch(0x123456789abcdefULL, "0v28.q5cu4.qnjff"); + ret_i &= _uv_etch(0x8589934592ULL, "0vgm4.p6hci"); + ret_i &= _uv_etch(0x5843009213693952ULL, "0v5gg.o0i89.mieai"); + ret_i &= _uv_etch(0x6744073709551615ULL, "0v6eh.076s4.la5gl"); + + { + c3_c* num_c = "0v8.00000.00000.00000.00000.00000"; + u3_atom num = u3qc_bex(128); + c3_c* out_c; + size_t len_i = u3s_etch_uv_c(num, &out_c); + + if ( 0 != strncmp(num_c, out_c, len_i) ) { + fprintf(stderr, "etch_uv: (bex 128) fail; expected %s, got '%s'\r\n", + num_c, out_c); + ret_i = 0; + } + else { + u3_noun out = u3s_etch_uv(num); + u3_noun tou = u3i_bytes(len_i, (c3_y*)out_c); + + if ( c3n == u3r_sing(tou, out) ) { + // fprintf(stderr, "etch_uv: (bex 128) mismatch; expected %s\r\n", num_c); + u3m_p("out", out); + ret_i = 0; + } + + u3z(out); + u3z(tou); + } + + c3_free(out_c); + u3z(num); + } + + return ret_i; +} + +static inline c3_i +_uw_etch(c3_d num_d, const c3_c* num_c) +{ + u3_atom num = u3i_chub(num_d); + c3_c* out_c; + size_t len_i = u3s_etch_uw_c(num, &out_c); + c3_i ret_i = 1; + + if ( 0 != strcmp(num_c, out_c) ) { + fprintf(stderr, "etch_uw: 0x%" PRIx64 " fail; expected %s, got '%s'\r\n", + num_d, num_c, out_c); + ret_i = 0; + } + else { + u3_noun out = u3s_etch_uw(num); + u3_noun tou = u3i_bytes(len_i, (c3_y*)out_c); + + if ( c3n == u3r_sing(tou, out) ) { + fprintf(stderr, "etch_uw: 0x%" PRIx64 " mismatch; expected %s\r\n", num_d, num_c); + u3m_p("out", out); + ret_i = 0; + } + + u3z(out); + u3z(tou); + } + + c3_free(out_c); + u3z(num); + + return ret_i; +} + +static c3_i +_test_etch_uw(void) +{ + c3_i ret_i = 1; + + ret_i &= _uw_etch(0x0, "0w0"); + ret_i &= _uw_etch(0x1, "0w1"); + ret_i &= _uw_etch(0x10, "0wg"); + ret_i &= _uw_etch(0x12, "0wi"); + ret_i &= _uw_etch(0x123, "0w4z"); + ret_i &= _uw_etch(0x1234, "0w18Q"); + ret_i &= _uw_etch(0x12345, "0wid5"); + ret_i &= _uw_etch(0x123456, "0w4zhm"); + ret_i &= _uw_etch(0x1234567, "0w18QlD"); + ret_i &= _uw_etch(0x12345678, "0wid5pU"); + ret_i &= _uw_etch(0x123456789, "0w4.zhmu9"); + ret_i &= _uw_etch(0x100000000, "0w4.00000"); + ret_i &= _uw_etch(0x101101101, "0w4.14141"); + ret_i &= _uw_etch(0x201201201, "0w8.18181"); + ret_i &= _uw_etch(0x302201100, "0wc.28140"); + + ret_i &= _uw_etch(0x123456789abcdefULL, "0w4zhmu.9GYTL"); + ret_i &= _uw_etch(0x8589934592ULL, "0w8m.9AQmi"); + ret_i &= _uw_etch(0x5843009213693952ULL, "0w5.x3098.jqjBi"); + ret_i &= _uw_etch(0x6744073709551615ULL, "0w6.t41Ps.9lhol"); + + { + c3_c* num_c = "0w40.00000.00000.00000.00000"; + u3_atom num = u3qc_bex(128); + c3_c* out_c; + size_t len_i = u3s_etch_uw_c(num, &out_c); + + if ( 0 != strncmp(num_c, out_c, len_i) ) { + fprintf(stderr, "etch_uw: (bex 128) fail; expected %s, got '%s'\r\n", + num_c, out_c); + ret_i = 0; + } + else { + u3_noun out = u3s_etch_uw(num); + u3_noun tou = u3i_bytes(len_i, (c3_y*)out_c); + + if ( c3n == u3r_sing(tou, out) ) { + fprintf(stderr, "etch_uw: (bex 128) mismatch; expected %s\r\n", num_c); + u3m_p("out", out); + ret_i = 0; + } + + u3z(out); + u3z(tou); + } + + c3_free(out_c); + u3z(num); + } + + return ret_i; +} + +static inline c3_i +_ud_good(c3_w num_w, const c3_c* num_c) +{ + u3_weak out; + if ( num_w != (out = u3s_sift_ud_bytes(strlen(num_c), (c3_y*)num_c)) ) { + if ( u3_none == out ) { + fprintf(stderr, "sift_ud: %s fail; expected %u\r\n", num_c, num_w); + } + else { + fprintf(stderr, "sift_ud: %s wrong; expected %u: actual %u\r\n", num_c, num_w, out); + } + return 0; + } + + return 1; +} + +static inline c3_i +_ud_fail(const c3_c* num_c) +{ + u3_weak out; + if ( u3_none != (out = u3s_sift_ud_bytes(strlen(num_c), (c3_y*)num_c)) ) { + u3m_p("out", out); + fprintf(stderr, "sift_ud: %s expected fail\r\n", num_c); + return 0; + } + + return 1; +} + +static c3_i +_test_sift_ud(void) +{ + c3_i ret_i = 1; + + ret_i &= _ud_good(0, "0"); + ret_i &= _ud_good(1, "1"); + ret_i &= _ud_good(12, "12"); + ret_i &= _ud_good(123, "123"); + ret_i &= _ud_good(1234, "1.234"); + ret_i &= _ud_good(12345, "12.345"); + ret_i &= _ud_good(123456, "123.456"); + ret_i &= _ud_good(1234567, "1.234.567"); + ret_i &= _ud_good(12345678, "12.345.678"); + ret_i &= _ud_good(123456789, "123.456.789"); + ret_i &= _ud_good(100000000, "100.000.000"); + ret_i &= _ud_good(101101101, "101.101.101"); + ret_i &= _ud_good(201201201, "201.201.201"); + ret_i &= _ud_good(302201100, "302.201.100"); + + ret_i &= _ud_fail("01"); + ret_i &= _ud_fail("02"); + ret_i &= _ud_fail("003"); + ret_i &= _ud_fail("1234"); + ret_i &= _ud_fail("1234.5"); + ret_i &= _ud_fail("1234.567.8"); + ret_i &= _ud_fail("1234.56..78."); + ret_i &= _ud_fail("123.45a"); + ret_i &= _ud_fail(".123.456"); + + { + c3_c* num_c = "4.294.967.296"; + u3_weak out = u3s_sift_ud_bytes(strlen(num_c), (c3_y*)num_c); + u3_atom pro = u3qc_bex(32); + + if ( u3_none == out ) { + fprintf(stderr, "sift_ud: (bex 32) fail\r\n"); + ret_i = 0; + } + + if ( c3n == u3r_sing(pro, out) ) { + u3m_p("out", out); + fprintf(stderr, "sift_ud: (bex 32) wrong\r\n"); + ret_i = 0; + } + + u3z(out); u3z(pro); + } + + + { + c3_c* num_c = "340.282.366.920.938.463.463.374.607.431.768.211.456"; + u3_weak out = u3s_sift_ud_bytes(strlen(num_c), (c3_y*)num_c); + u3_atom pro = u3qc_bex(128); + + if ( u3_none == out ) { + fprintf(stderr, "sift_ud: (bex 128) fail\r\n"); + ret_i = 0; + } + + if ( c3n == u3r_sing(pro, out) ) { + u3m_p("out", out); + fprintf(stderr, "sift_ud: (bex 128) wrong\r\n"); + ret_i = 0; + } + + u3z(out); u3z(pro); + } + + return ret_i; +} + +static c3_i +_test_en_base16(void) +{ + c3_i ret_i = 1; + + { + u3_atom dat = 0xaa; + u3_atom pro = u3qe_en_base16(u3r_met(3, dat), dat); + + if ( c3n == u3r_sing_c("aa", pro) ) { + fprintf(stderr, "en_base16: fail (a)\r\n"); + ret_i = 0; + } + + u3z(pro); + } + + { + u3_atom dat = 0x1234; + u3_atom pro = u3qe_en_base16(u3r_met(3, dat), dat); + + if ( c3n == u3r_sing_c("1234", pro) ) { + fprintf(stderr, "en_base16: fail (b)\r\n"); + ret_i = 0; + } + + u3z(pro); + } + + { + u3_atom dat = 0xf012; + u3_atom pro = u3qe_en_base16(u3r_met(3, dat), dat); + + if ( c3n == u3r_sing_c("f012", pro) ) { + fprintf(stderr, "en_base16: fail (c)\r\n"); + ret_i = 0; + } + + u3z(pro); + } + + { + u3_atom dat = 0x10b; + u3_atom pro = u3qe_en_base16(u3r_met(3, dat), dat); + + if ( c3n == u3r_sing_c("010b", pro) ) { + fprintf(stderr, "en_base16: fail (d)\r\n"); + ret_i = 0; + } + + u3z(pro); + } + + { + u3_atom pro = u3qe_en_base16(3, 0x1234); + + if ( c3n == u3r_sing_c("001234", pro) ) { + fprintf(stderr, "en_base16: fail (e)\r\n"); + ret_i = 0; + } + + u3z(pro); + } + + { + u3_atom pro = u3qe_en_base16(1, 0x1234); + + if ( c3n == u3r_sing_c("34", pro) ) { + fprintf(stderr, "en_base16: fail (f)\r\n"); + ret_i = 0; + } + + u3z(pro); + } + + return ret_i; +} + + +static c3_i +_test_de_base16(void) +{ + c3_i ret_i = 1; + + { + u3_noun inp = u3i_string("aa"); + u3_noun pro = u3qe_de_base16(inp); + u3_atom len, dat; + + if ( c3n == u3r_pq(pro, u3_nul, &len, &dat) ) { + fprintf(stderr, "de_base16: fail cell (a)\r\n"); + ret_i = 0; + } + + if ( 1 != len ) { + fprintf(stderr, "de_base16: fail len (a)\r\n"); + ret_i = 0; + } + + if ( 0xaa != dat ) { + fprintf(stderr, "de_base16: fail dat (a)\r\n"); + ret_i = 0; + } + + u3z(inp); u3z(pro); + } + + { + u3_noun inp = u3i_string("1234"); + u3_noun pro = u3qe_de_base16(inp); + u3_atom len, dat; + + if ( c3n == u3r_pq(pro, u3_nul, &len, &dat) ) { + fprintf(stderr, "de_base16: fail cell (b)\r\n"); + ret_i = 0; + } + + if ( 2 != len ) { + fprintf(stderr, "de_base16: fail len (b)\r\n"); + ret_i = 0; + } + + if ( 0x1234 != dat ) { + fprintf(stderr, "de_base16: fail dat (b)\r\n"); + ret_i = 0; + } + + u3z(inp); u3z(pro); + } + + { + u3_noun inp = u3i_string("f012"); + u3_noun pro = u3qe_de_base16(inp); + u3_atom len, dat; + + if ( c3n == u3r_pq(pro, u3_nul, &len, &dat) ) { + fprintf(stderr, "de_base16: fail cell (c)\r\n"); + ret_i = 0; + } + + if ( 2 != len ) { + fprintf(stderr, "de_base16: fail len (c)\r\n"); + ret_i = 0; + } + + if ( 0xf012 != dat ) { + fprintf(stderr, "de_base16: fail dat (c)\r\n"); + ret_i = 0; + } + + u3z(inp); u3z(pro); + } + + { + u3_noun inp = u3i_string("010b"); + u3_noun pro = u3qe_de_base16(inp); + u3_atom len, dat; + + if ( c3n == u3r_pq(pro, u3_nul, &len, &dat) ) { + fprintf(stderr, "de_base16: fail cell (d)\r\n"); + ret_i = 0; + } + + if ( 2 != len ) { + fprintf(stderr, "de_base16: fail len (d)\r\n"); + ret_i = 0; + } + + if ( 0x10b != dat ) { + fprintf(stderr, "de_base16: fail dat (d)\r\n"); + ret_i = 0; + } + + u3z(inp); u3z(pro); + } + + { + u3_noun inp = u3i_string("10b"); + u3_noun pro = u3qe_de_base16(inp); + u3_atom len, dat; + + if ( c3n == u3r_pq(pro, u3_nul, &len, &dat) ) { + fprintf(stderr, "de_base16: fail cell (e)\r\n"); + ret_i = 0; + } + + if ( 2 != len ) { + fprintf(stderr, "de_base16: fail len (e)\r\n"); + ret_i = 0; + } + + if ( 0x10b != dat ) { + fprintf(stderr, "de_base16: fail dat (e)\r\n"); + ret_i = 0; + } + + u3z(inp); u3z(pro); + } + + { + u3_noun inp = u3i_string("001234"); + u3_noun pro = u3qe_de_base16(inp); + u3_atom len, dat; + + if ( c3n == u3r_pq(pro, u3_nul, &len, &dat) ) { + fprintf(stderr, "de_base16: fail cell (f)\r\n"); + ret_i = 0; + } + + if ( 3 != len ) { + fprintf(stderr, "de_base16: fail len (f)\r\n"); + ret_i = 0; + } + + if ( 0x1234 != dat ) { + fprintf(stderr, "de_base16: fail dat (f)\r\n"); + ret_i = 0; + } + + u3z(inp); u3z(pro); + } + + return ret_i; +} + +static c3_i +_test_base16(void) +{ + c3_i ret_i = 1; + + ret_i &= _test_en_base16(); + ret_i &= _test_de_base16(); + + return ret_i; +} + +static c3_w +_fein_ob_w(c3_w inp_w) +{ + u3_atom inp = u3i_word(inp_w); + u3_atom act = u3qe_fein_ob(inp); + c3_w act_w = u3r_word(0, act); + u3z(inp); u3z(act); + return act_w; +} + +static c3_i +_expect_fein_ob_w(c3_w inp_w, c3_w exp_w) +{ + c3_w act_w = _fein_ob_w(inp_w); + + if ( act_w != exp_w ) { + fprintf(stderr, "fein: inp=0x%08x exp=0x%08x act=0x%08x\n", + inp_w, exp_w, act_w); + return 0; + } + + return 1; +} + +static c3_i +_test_fein_ob(void) +{ + c3_i ret_i = 1; + + ret_i &= _expect_fein_ob_w(0, 0); + ret_i &= _expect_fein_ob_w(0xffff, 0xffff); + ret_i &= _expect_fein_ob_w(0x1b08f, 0x76b920e5); + ret_i &= _expect_fein_ob_w(0x10000, 0x423e60bf); + ret_i &= _expect_fein_ob_w(0x10001, 0xd4400acb); + ret_i &= _expect_fein_ob_w(0x10002, 0xf429043); + ret_i &= _expect_fein_ob_w(0x10000000, 0xa04bc7fa); + ret_i &= _expect_fein_ob_w(0x1234abcd, 0x686f6c25); + ret_i &= _expect_fein_ob_w(0xabcd1234, 0x4a220c8); + ret_i &= _expect_fein_ob_w(0xdeadbeef, 0x909bc4a9); + ret_i &= _expect_fein_ob_w(0xfffff, 0x6746b96b); + ret_i &= _expect_fein_ob_w(0xffffffff, 0xbba4dcce); + + return ret_i; +} + +static c3_w +_fynd_ob_w(c3_w inp_w) +{ + u3_atom inp = u3i_word(inp_w); + u3_atom act = u3qe_fynd_ob(inp); + c3_w act_w = u3r_word(0, act); + u3z(inp); u3z(act); + return act_w; +} + +static c3_i +_expect_fynd_ob_w(c3_w exp_w, c3_w inp_w) +{ + c3_w act_w = _fynd_ob_w(inp_w); + + if ( act_w != exp_w ) { + fprintf(stderr, "fynd: inp=0x%08x exp=0x%08x act=0x%08x\n", + inp_w, exp_w, act_w); + return 0; + } + + return 1; +} + +static c3_i +_test_fynd_ob(void) +{ + c3_i ret_i = 1; + + ret_i &= _expect_fynd_ob_w(0, 0); + ret_i &= _expect_fynd_ob_w(0xffff, 0xffff); + ret_i &= _expect_fynd_ob_w(0x10000, 0x423e60bf); + ret_i &= _expect_fynd_ob_w(0x10001, 0xd4400acb); + ret_i &= _expect_fynd_ob_w(0x10002, 0xf429043); + ret_i &= _expect_fynd_ob_w(0x10000000, 0xa04bc7fa); + ret_i &= _expect_fynd_ob_w(0x1234abcd, 0x686f6c25); + ret_i &= _expect_fynd_ob_w(0xabcd1234, 0x4a220c8); + ret_i &= _expect_fynd_ob_w(0xdeadbeef, 0x909bc4a9); + ret_i &= _expect_fynd_ob_w(0xfffff, 0x6746b96b); + ret_i &= _expect_fynd_ob_w(0xffffffff, 0xbba4dcce); + + return ret_i; +} + +static c3_i +_exhaust_roundtrip_fein_fynd_ob(void) +{ + c3_i ret_i = 1; + c3_w fyn_w, i_w; + + { + u3_atom fen, fyn; + + for ( i_w = 0x10000; i_w < 0x80000000; i_w++ ) { + fen = u3qe_fein_ob(i_w); + fyn = u3qe_fynd_ob(fen); + fyn_w = u3r_word(0, fyn); + + if ( i_w != fyn_w ) { + fprintf(stderr, "fein/fynd: inp=0x%08x fein=0x%08x fynd=0x%08x\n", + i_w, u3r_word(0, fen), fyn_w); + ret_i = 0; + } + u3z(fen); u3z(fyn); + + if ( !(i_w % 0x1000000) ) { + fprintf(stderr, "fein/fynd: 0x%x done\n", i_w); + } + } + } + + { + c3_w fen_w; + + do { + fen_w = _fein_ob_w(i_w); + fyn_w = _fynd_ob_w(fen_w); + if ( i_w != fyn_w ) { + fprintf(stderr, "fein/fynd: inp=0x%08x fein=0x%08x fynd=0x%08x\n", + i_w, fen_w, fyn_w); + ret_i = 0; + } + + if ( !(i_w % 0x1000000) ) { + fprintf(stderr, "fein/fynd: 0x%x done\n", i_w); + } + } + while ( ++i_w ); + } + + return ret_i; +} + +static c3_i +_test_ob(void) +{ + c3_i ret_i = 1; + ret_i &= _test_fein_ob(); + ret_i &= _test_fynd_ob(); + // disabled, takes almost ~m15 + // + // ret_i &= _exhaust_roundtrip_fein_fynd_ob(); + return ret_i; +} + +static c3_i +_test_mas(void) +{ + c3_i ret_i = 1; + u3_atom res; + + if ( 0x4000 != (res = u3qc_mas(0x8000)) ) { + fprintf(stderr, "test mas fail: (mas 0x8000) != 0x4000: 0x'%x'\r\n", res); + ret_i = 0; + } + + if ( 0x20000000 != (res = u3qc_mas(0x40000000)) ) { + fprintf(stderr, "test mas fail: (mas 0x4000.0000) != 0x2000.0000: 0x%x\r\n", res); + ret_i = 0; + } + + { + u3_atom sam, pro; + + sam = u3qc_bex(36); + pro = u3qc_bex(35); + res = u3qc_mas(sam); + + if ( c3n == u3r_sing(pro, res) ) { + c3_c* out_c; + u3s_etch_ux_c(res, &out_c); + fprintf(stderr, "test mas fail: (mas (bex 36)) != (bex 35): %s\r\n", out_c); + c3_free(out_c); + ret_i = 0; + } + + u3z(res); u3z(sam); u3z(pro); + + sam = u3qc_bex(64); + pro = u3qc_bex(63); + res = u3qc_mas(sam); + + if ( c3n == u3r_sing(pro, res) ) { + c3_c* out_c; + u3s_etch_ux_c(res, &out_c); + fprintf(stderr, "test mas fail: (mas (bex 64)) != (bex 63): %s\r\n", out_c); + c3_free(out_c); + ret_i = 0; + } + + u3z(res); u3z(sam); u3z(pro); + + sam = u3qc_bex(65); + pro = u3qc_bex(64); + res = u3qc_mas(sam); + + if ( c3n == u3r_sing(pro, res) ) { + c3_c* out_c; + u3s_etch_ux_c(res, &out_c); + fprintf(stderr, "test mas fail: (mas (bex 65)) != (bex 64): %s\r\n", out_c); + c3_free(out_c); + ret_i = 0; + } + + u3z(res); u3z(sam); u3z(pro); + } + + return ret_i; +} + +static c3_i +_test_jets(void) +{ + c3_i ret_i = 1; + + if ( !_test_etch_ud() ) { + fprintf(stderr, "test jets: etch_ud: failed\r\n"); + ret_i = 0; + } + + if ( !_test_etch_ux() ) { + fprintf(stderr, "test jets: etch_ux: failed\r\n"); + ret_i = 0; + } + + if ( !_test_etch_uv() ) { + fprintf(stderr, "test jets: etch_uv: failed\r\n"); + ret_i = 0; + } + + if ( !_test_etch_uw() ) { + fprintf(stderr, "test jets: etch_uw: failed\r\n"); + ret_i = 0; + } + + if ( !_test_sift_ud() ) { + fprintf(stderr, "test jets: sift_ud: failed\r\n"); + ret_i = 0; + } + + if ( !_test_base16() ) { + fprintf(stderr, "test jets: base16: failed\r\n"); + ret_i = 0; + } + + if ( !_test_ob() ) { + fprintf(stderr, "test jets: ob: failed\r\n"); + ret_i = 0; + } + + if ( !_test_mas() ) { + fprintf(stderr, "test jets: mas: failed\r\n"); + ret_i = 0; + } + + return ret_i; +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + if ( !_test_jets() ) { + fprintf(stderr, "test jets: failed\r\n"); + exit(1); + } + + // GC + // + u3m_grab(u3_none); + + fprintf(stderr, "test jets: ok\r\n"); + return 0; +} diff --git a/vere/pkg/noun/log.c b/vere/pkg/noun/log.c new file mode 100644 index 0000000..ee1888e --- /dev/null +++ b/vere/pkg/noun/log.c @@ -0,0 +1,40 @@ +/// @file + +#include "log.h" + +#include + +#include "options.h" + +void +u3l_log(const char* format, ...) +{ + va_list myargs; + va_start(myargs, format); + + if (u3C.stderr_log_f) { + // the user set their own logging function. render the line and redirect + // to them. + // + char msg[4096]; + vsnprintf(msg, 4096, format, myargs); + u3C.stderr_log_f(msg); + } else { + // this process did not set a logging function, fallback to stderr + // + vfprintf(stderr, format, myargs); + fprintf(stderr, "\r\n"); + fflush(stderr); + } + + va_end(myargs); +} + +u3_weak +u3l_punt(const char* name, u3_weak pro) +{ + if ( u3_none == pro ) { + u3l_log("%s-punt", name); + } + return pro; +} diff --git a/vere/pkg/noun/log.h b/vere/pkg/noun/log.h new file mode 100644 index 0000000..4e94147 --- /dev/null +++ b/vere/pkg/noun/log.h @@ -0,0 +1,24 @@ +/// @file + +#ifndef U3_LOG_H +#define U3_LOG_H + +#include "types.h" + +/* u3l_log(): logs to stderr or redirects to configured function. +*/ + void + u3l_log(const char* format, ...) + __attribute__ ((format (printf, 1, 2))); + +/* u3l_punt(): condtionally logs a named punt + * (e.g. "mint-punt" for the `name` "mint") + * when `pro` is u3_none, and returns pro. + * For use when a jet driver declines to handle + * a core, when the user should be somehow notified + * (e.g. in a cryptographic jet). + */ + u3_weak + u3l_punt(const char* name, u3_weak pro); + +#endif /* ifndef U3_LOG_H */ diff --git a/vere/pkg/noun/manage.c b/vere/pkg/noun/manage.c new file mode 100644 index 0000000..92e36dc --- /dev/null +++ b/vere/pkg/noun/manage.c @@ -0,0 +1,2615 @@ +/// @file + +#include "manage.h" + +#include +#ifndef U3_OS_windows +#include +#endif +#include +#include +#if defined(U3_OS_osx) +#include +#endif +#include +#include +#if defined(U3_OS_linux) +#define UNW_LOCAL_ONLY +#include +#endif + +#include "allocate.h" +#include "backtrace.h" +#include "events.h" +#include "hashtable.h" +#include "imprison.h" +#include "jets.h" +#include "jets/k.h" +#include "jets/q.h" +#include "log.h" +#include "nock.h" +#include "openssl/crypto.h" +#include "options.h" +#include "rsignal.h" +#include "retrieve.h" +#include "trace.h" +#include "urcrypt.h" +#include "vortex.h" +#include "whereami.h" +#include "xtract.h" + +// XX stack-overflow recovery should be gated by -a +// +#undef NO_OVERFLOW + + /* (u3_noun)setjmp(u3R->esc.buf): setjmp within road. + */ +#if 0 + c3_o + u3m_trap(void); +#else +# define u3m_trap() (u3_noun)(setjmp(u3R->esc.buf)) +#endif + + /* u3m_signal(): treat a nock-level exception as a signal interrupt. + */ + void + u3m_signal(u3_noun sig_l); + + /* u3m_dump(): dump the current road to stderr. + */ + void + u3m_dump(void); + + /* u3m_fall(): return to parent road. + */ + void + u3m_fall(void); + + /* u3m_leap(): in u3R, create a new road within the existing one. + */ + void + u3m_leap(c3_w pad_w); + + /* u3m_golf(): record cap length for u3m_flog(). + */ + c3_w + u3m_golf(void); + + /* u3m_flog(): pop the cap. + ** + ** A common sequence for inner allocation is: + ** + ** c3_w gof_w = u3m_golf(); + ** u3m_leap(); + ** // allocate some inner stuff... + ** u3m_fall(); + ** // inner stuff is still valid, but on cap + ** u3m_flog(gof_w); + ** + ** u3m_flog(0) simply clears the cap. + */ + void + u3m_flog(c3_w gof_w); + + /* u3m_soft_top(): top-level safety wrapper. + */ + u3_noun + u3m_soft_top(c3_w mil_w, // timer ms + c3_w pad_w, // base memory pad + u3_funk fun_f, + u3_noun arg); + + +// u3m_signal uses restricted functionality signals for compatibility reasons: +// some platforms may not provide true POSIX asynchronous signals and their +// compat layer will then implement this restricted functionality subset. +// u3m_signal never needs to interrupt I/O operations, its signal handlers +// do not manipulate signals, do not modify shared state, and always either +// return or longjmp. +// +static jmp_buf u3_Signal; + +#ifndef U3_OS_windows +#include "sigsegv.h" + +#ifndef SIGSTKSZ +# define SIGSTKSZ 16384 +#endif +#ifndef NO_OVERFLOW +static uint8_t Sigstk[SIGSTKSZ]; +#endif +#endif + +#ifdef U3_OS_windows +#include "veh_handler.h" +#endif + +#if 0 +/* _cm_punt(): crudely print trace. +*/ +static void +_cm_punt(u3_noun tax) +{ + u3_noun xat; + + for ( xat = tax; xat; xat = u3t(xat) ) { + u3m_p("&", u3h(xat)); + } +} +#endif + +/* _cm_emergency(): write emergency text to stderr, never failing. +*/ +static void +_cm_emergency(c3_c* cap_c, c3_l sig_l) +{ + write(2, "\r\n", 2); + write(2, cap_c, strlen(cap_c)); + + if ( sig_l ) { + write(2, ": ", 2); + write(2, &sig_l, 4); + } + + write(2, "\r\n", 2); +} + +static void _cm_overflow(void *arg1, void *arg2, void *arg3) +{ + (void)(arg1); + (void)(arg2); + (void)(arg3); + u3m_signal(c3__over); +} + +/* _cm_signal_handle(): handle a signal in general. +*/ +static void +_cm_signal_handle(c3_l sig_l) +{ +#ifndef U3_OS_windows + if ( c3__over == sig_l ) { +#ifndef NO_OVERFLOW + sigsegv_leave_handler(_cm_overflow, NULL, NULL, NULL); +#endif + } else +#endif + { + u3m_signal(sig_l); + } +} + +#ifndef NO_OVERFLOW +static void +#ifndef U3_OS_windows +_cm_signal_handle_over(int emergency, stackoverflow_context_t scp) +#else +_cm_signal_handle_over(int x) +#endif +{ + _cm_signal_handle(c3__over); +} +#endif + +static void +_cm_signal_handle_term(int x) +{ + // Ignore if we are using base memory from work memory, very rare. + // + if ( (0 != u3H->rod_u.kid_p) && (&(u3H->rod_u) == u3R) ) { + _cm_emergency("ignored", c3__term); + } + else { + _cm_signal_handle(c3__term); + } +} + +static void +_cm_signal_handle_intr(int x) +{ + // Interrupt: stop work. Ignore if not working, or (rarely) using base. + // + if ( &(u3H->rod_u) == u3R ) { + _cm_emergency("ignored", c3__intr); + } + else { + _cm_signal_handle(c3__intr); + } +} + +static void +_cm_signal_handle_alrm(int x) +{ + _cm_signal_handle(c3__alrm); +} + +/* _cm_signal_reset(): reset top road after signal longjmp. +*/ +static void +_cm_signal_reset(void) +{ + u3R = &u3H->rod_u; + u3R->cap_p = u3R->mat_p; + u3R->ear_p = 0; + u3R->kid_p = 0; +} + +#if 0 +/* _cm_stack_recover(): recover stack trace, with lacunae. +*/ +static u3_noun +_cm_stack_recover(u3a_road* rod_u) +{ + c3_w len_w; + + len_w = 0; + { + u3_noun tax = rod_u->bug.tax; + + while ( tax ) { + len_w++; + tax = u3t(tax); + } + + if ( len_w < 4096 ) { + return u3a_take(rod_u->bug.tax); + } + else { + u3_noun beg, fin; + c3_w i_w; + + tax = rod_u->bug.tax; + beg = u3_nul; + for ( i_w = 0; i_w < 2048; i_w++ ) { + beg = u3nc(u3a_take(u3h(tax)), beg); + tax = u3t(tax); + } + beg = u3kb_flop(beg); + + for ( i_w = 0; i_w < (len_w - 4096); i_w++ ) { + tax = u3t(tax); + } + fin = u3nc(u3nc(c3__lose, c3__over), u3a_take(tax)); + + return u3kb_weld(beg, fin); + } + } +} +#endif + +/* _cm_stack_unwind(): unwind to the top level, preserving all frames. +*/ +static u3_noun +_cm_stack_unwind(void) +{ + u3_noun tax; + + while ( u3R != &(u3H->rod_u) ) { + u3_noun yat = u3m_love(u3R->bug.tax); + + u3R->bug.tax = u3kb_weld(yat, u3R->bug.tax); + } + tax = u3R->bug.tax; + + u3R->bug.tax = 0; + return tax; +} + +/* _cm_signal_recover(): recover from a deep signal, after longjmp. Free arg. +*/ +static u3_noun +_cm_signal_recover(c3_l sig_l, u3_noun arg) +{ + u3_noun tax; + + // Unlikely to be set, but it can be made to happen. + // + tax = u3H->rod_u.bug.tax; + u3H->rod_u.bug.tax = 0; + + if ( NULL != stk_u ) { + stk_u->off_w = u3H->rod_u.off_w; + stk_u->fow_w = u3H->rod_u.fow_w; + } + + if ( &(u3H->rod_u) == u3R ) { + // A top-level crash - rather odd. We should GC. + // + _cm_emergency("recover: top", sig_l); + u3C.wag_w |= u3o_check_corrupt; + + // Reset the top road - the problem could be a fat cap. + // + _cm_signal_reset(); + + if ( (c3__meme == sig_l) && (u3a_open(u3R) <= 256) ) { + // Out of memory at the top level. Error becomes c3__full, + // and we release the emergency buffer. To continue work, + // we need to readjust the image, eg, migrate to 64 bit. + // + u3z(u3R->bug.mer); + u3R->bug.mer = 0; + sig_l = c3__full; + } + return u3nt(3, sig_l, tax); + } + else { + u3_noun pro; + + // A signal was generated while we were within Nock. + // + _cm_emergency("recover: dig", sig_l); + +#if 0 + // Descend to the innermost trace, collecting stack. + // + { + u3a_road* rod_u; + + u3R = &(u3H->rod_u); + rod_u = u3R; + + while ( rod_u->kid_p ) { +#if 0 + u3l_log("collecting %d frames", + u3kb_lent((u3to(u3_road, rod_u->kid_p)->bug.tax)); +#endif + tax = u3kb_weld(_cm_stack_recover(u3to(u3_road, rod_u->kid_p)), tax); + rod_u = u3to(u3_road, rod_u->kid_p); + } + } +#else + tax = _cm_stack_unwind(); +#endif + pro = u3nt(3, sig_l, tax); + _cm_signal_reset(); + + u3z(arg); + return pro; + } +} + +/* _cm_signal_deep(): start deep processing; set timer for [mil_w] or 0. +*/ +static void +_cm_signal_deep(c3_w mil_w) +{ + // disable outer system signal handling + // + if ( 0 != u3C.sign_hold_f ) { + u3C.sign_hold_f(); + } + +#ifndef NO_OVERFLOW +#ifndef U3_OS_windows + if ( 0 != stackoverflow_install_handler(_cm_signal_handle_over, Sigstk, SIGSTKSZ)) { + u3l_log("unable to install stack overflow handler"); + abort(); + } +#else + rsignal_install_handler(SIGSTK, _cm_signal_handle_over); +#endif +#endif + rsignal_install_handler(SIGINT, _cm_signal_handle_intr); + rsignal_install_handler(SIGTERM, _cm_signal_handle_term); + + // Provide a little emergency memory, for use in case things + // go utterly haywire. + // + if ( 0 == u3H->rod_u.bug.mer ) { + u3H->rod_u.bug.mer = u3i_string( + "emergency buffer with sufficient space to cons the trace and bail" + ); + } + + if ( mil_w ) { + struct itimerval itm_u; + + timerclear(&itm_u.it_interval); + itm_u.it_value.tv_sec = (mil_w / 1000); + itm_u.it_value.tv_usec = 1000 * (mil_w % 1000); + + if ( rsignal_setitimer(ITIMER_VIRTUAL, &itm_u, 0) ) { + u3l_log("loom: set timer failed %s", strerror(errno)); + } + else { + rsignal_install_handler(SIGVTALRM, _cm_signal_handle_alrm); + } + } + + u3t_boot(); +} + +/* _cm_signal_done(): +*/ +static void +_cm_signal_done(void) +{ + rsignal_deinstall_handler(SIGINT); + rsignal_deinstall_handler(SIGTERM); + rsignal_deinstall_handler(SIGVTALRM); + +#ifndef NO_OVERFLOW +#ifndef U3_OS_windows + stackoverflow_deinstall_handler(); +#else + rsignal_install_handler(SIGSTK, _cm_signal_handle_over); +#endif +#endif + { + struct itimerval itm_u; + + timerclear(&itm_u.it_interval); + timerclear(&itm_u.it_value); + + if ( rsignal_setitimer(ITIMER_VIRTUAL, &itm_u, 0) ) { + u3l_log("loom: clear timer failed %s", strerror(errno)); + } + } + + // restore outer system signal handling + // + if ( 0 != u3C.sign_move_f ) { + u3C.sign_move_f(); + } + + u3t_boff(); +} + +/* u3m_signal(): treat a nock-level exception as a signal interrupt. +*/ +void +u3m_signal(u3_noun sig_l) +{ + rsignal_longjmp(u3_Signal, sig_l); +} + +/* u3m_file(): load file, as atom, or bail. +*/ +u3_noun +u3m_file(c3_c* pas_c) +{ + struct stat buf_b; + c3_i fid_i = c3_open(pas_c, O_RDONLY, 0644); + c3_w fln_w, red_w; + c3_y* pad_y; + + if ( (fid_i < 0) || (fstat(fid_i, &buf_b) < 0) ) { + u3l_log("%s: %s", pas_c, strerror(errno)); + return u3m_bail(c3__fail); + } + fln_w = buf_b.st_size; + pad_y = c3_malloc(buf_b.st_size); + + red_w = read(fid_i, pad_y, fln_w); + close(fid_i); + + if ( fln_w != red_w ) { + c3_free(pad_y); + return u3m_bail(c3__fail); + } + else { + u3_noun pad = u3i_bytes(fln_w, (c3_y *)pad_y); + c3_free(pad_y); + + return pad; + } +} + +/* u3m_mark(): mark all nouns in the road. +*/ +u3m_quac** +u3m_mark(void) +{ + u3m_quac** qua_u = c3_malloc(sizeof(*qua_u) * 5); + qua_u[0] = u3v_mark(); + qua_u[1] = u3j_mark(); + qua_u[2] = u3n_mark(); + qua_u[3] = u3a_mark_road(); // NB: must be the last thing marked + qua_u[4] = NULL; + + return qua_u; +} + +/* _pave_parts(): build internal tables. +*/ +static void +_pave_parts(void) +{ + u3a_init_heap(); + + if ( &(u3H->rod_u) != u3R ) { + u3R->cel.cel_p = u3of(u3_post, u3a_walloc(1U << u3a_page)); + } + + u3R->cax.har_p = u3h_new_cache(u3C.hap_w); // transient + u3R->cax.per_p = u3h_new_cache(u3C.per_w); // persistent + u3R->jed.war_p = u3h_new(); + u3R->jed.cod_p = u3h_new(); + u3R->jed.han_p = u3h_new(); + u3R->jed.bas_p = u3h_new(); + u3R->byc.har_p = u3h_new(); +} + +static c3_d +_pave_params(void) +{ + // pam_d bits: + // { word-size[1], virtual-bits[2], page-size[3], bytecode[5], ... } + // + // word-size: 0==32, 1==64 + // page-size: relative binary-log in bytes + // + // + return 0 + ^ (u3a_vits << 1) + ^ ((u3a_page + 2 - 12) << 3) + ^ (U3N_VERLAT << 6); +} + +/* _pave_home(): initialize pristine home road. +*/ +static void +_pave_home(void) +{ + u3_post top_p = u3C.wor_i - u3a_walign; + u3_post bot_p = 1U << u3a_page; + + u3H = u3to(u3v_home, 0); + memset(u3H, 0, sizeof(u3v_home)); + u3H->ver_d = U3V_VERLAT; + u3H->pam_d = _pave_params(); + + u3R = &u3H->rod_u; + + u3R->rut_p = u3R->hat_p = bot_p; + u3R->mat_p = u3R->cap_p = top_p; + + _pave_parts(); +} + +STATIC_ASSERT( (c3_wiseof(u3v_home) <= (1U << u3a_page)), + "home road size" ); + +STATIC_ASSERT( ((c3_wiseof(u3v_home) * 4) == sizeof(u3v_home)), + "home road alignment" ); + +STATIC_ASSERT( U3N_VERLAT < (1U << 5), "5-bit bytecode version" ); + +/* _find_home(): in restored image, point to home road. +*/ +static void +_find_home(void) +{ + c3_d ver_d = *((c3_d*)u3_Loom); + + if ( ver_d != U3V_VERLAT ) { + fprintf(stderr, "loom: checkpoint version mismatch: " + "have %" PRIu64 ", need %" PRIu64 "\r\n", + ver_d, U3V_VERLAT); + abort(); + } + + c3_d pam_d = *((c3_d*)u3_Loom + 1); + + if ( pam_d & 1 ) { + fprintf(stderr, "word-size mismatch: 64-bit snapshot in 32-bit binary\r\n"); + abort(); + } + if ( ((pam_d >> 1) & 3) != u3a_vits ) { + fprintf(stderr, "virtual-bits mismatch: %u in snapshot; %u in binary\r\n", + (c3_w)((pam_d >> 1) & 3), u3a_vits); + abort(); + } + if ( (12 + ((pam_d >> 3) & 7)) != (u3a_page + 2) ) { + fprintf(stderr, "page-size mismatch: %u in snapshot; %u in binary\r\n", + 1U << (12 + ((pam_d >> 3) & 7)), (c3_w)u3a_page + 2); + abort(); + } + + // NB: the home road is always north + // + { + u3_post top_p = u3C.wor_i - u3a_walign; + + u3H = u3to(u3v_home, 0); + u3R = &u3H->rod_u; + + // this looks risky, but there are no legitimate scenarios + // where it's wrong + // + u3R->mat_p = u3R->cap_p = top_p; + } + + // check for obvious corruption + // + { + c3_w nor_w; + u3_post low_p, hig_p; + u3m_water(&low_p, &hig_p); + + nor_w = (low_p + ((1 << u3a_page) - 1)) >> u3a_page; + + if ( nor_w > u3P.img_u.pgs_w ) { + fprintf(stderr, "loom: corrupt size (%u, %u)\r\n", + nor_w, u3P.img_u.pgs_w); + u3_assert(!"loom: corrupt size"); + } + + // the north segment is in-order on disk; it being oversized + // doesn't necessarily indicate corruption. + // + if ( nor_w < u3P.img_u.pgs_w ) { + fprintf(stderr, "loom: strange size north (%u, %u)\r\n", + nor_w, u3P.img_u.pgs_w); + } + + // XX move me + // + u3a_ream(); + } + + /* As a further guard against any sneaky loom corruption */ + u3a_loom_sane(); + + _rod_vaal(u3R); + + if ( ((pam_d >> 6) & 31) != U3N_VERLAT ) { + fprintf(stderr, "loom: discarding stale bytecode programs\r\n"); + u3j_ream(); + u3n_ream(); + u3n_reclaim(); + u3j_reclaim(); + u3H->pam_d = _pave_params(); + } +} + +/* u3m_pave(): instantiate or activate image. +*/ +void +u3m_pave(c3_o nuu_o) +{ + if ( c3y == nuu_o ) { + _pave_home(); + } + else { + _find_home(); + } +} + +#if 0 +/* u3m_clear(): clear all allocated data in road. +*/ +void +u3m_clear(void) +{ + u3h_free(u3R->cax.har_p); + u3j_free(); + u3n_free(); +} + +void +u3m_dump(void) +{ + c3_w hat_w; + c3_w fre_w = 0; + c3_w i_w; + + hat_w = _(u3a_is_north(u3R)) ? u3R->hat_w - u3R->rut_w + : u3R->rut_w - u3R->hat_w; + + for ( i_w = 0; i_w < u3_cc_fbox_no; i_w++ ) { + u3a_fbox* fre_u = u3R->all.fre_u[i_w]; + + while ( fre_u ) { + fre_w += fre_u->box_u.siz_w; + fre_u = fre_u->nex_u; + } + } + u3l_log("dump: hat_w %x, fre_w %x, allocated %x", + hat_w, fre_w, (hat_w - fre_w)); + + if ( 0 != (hat_w - fre_w) ) { + c3_w* box_w = _(u3a_is_north(u3R)) ? u3R->rut_w : u3R->hat_w; + c3_w mem_w = 0; + + while ( box_w < (_(u3a_is_north(u3R)) ? u3R->hat_w : u3R->rut_w) ) { + u3a_box* box_u = (void *)box_w; + + if ( 0 != box_u->use_w ) { +#ifdef U3_MEMORY_DEBUG + // u3l_log("live %d words, code %x", box_u->siz_w, box_u->cod_w); +#endif + mem_w += box_u->siz_w; + } + box_w += box_u->siz_w; + } + + u3l_log("second count: %x", mem_w); + } +} +#endif + +struct bt_cb_data { + c3_y count; + c3_y fail; + c3_c* pn_c; +}; + +static void +err_cb(void* data, const char* msg, int errnum) +{ + struct bt_cb_data* bdata = (struct bt_cb_data *)data; + bdata->count++; + + if ( bdata->count <= 1 ) { + /* u3l_log("Backtrace error %d: %s", errnum, msg); */ + bdata->fail = 1; + } +} + +static int +bt_cb(void* data, + uintptr_t pc, + const char* filename, + int lineno, + const char* function) +{ + #ifndef U3_OS_windows + struct bt_cb_data* bdata = (struct bt_cb_data *)data; + bdata->count++; + + Dl_info info = {}; + c3_c* fname_c = {0}; + + if ( dladdr((void *)pc, &info) ) { + for ( c3_w i_w = 0; info.dli_fname[i_w] != 0; i_w++ ) + if ( info.dli_fname[i_w] == '/' ) { + fname_c = (c3_c*)&info.dli_fname[i_w + 1]; + } + } + + if ( bdata->count <= 100 ) { + c3_c* loc[128]; + if (filename != 0) { + snprintf((c3_c*)loc, 128, "%s:%d", filename, lineno); + } + else { + snprintf((c3_c*)loc, 128, "%s", fname_c != 0 ? fname_c : "-"); + } + + c3_c* fn_c; + if (function != 0 || bdata->pn_c != 0) { + fn_c = (c3_c*)(function != 0 ? function : bdata->pn_c); + } + else { + fn_c = (c3_c*)(info.dli_sname != 0 ? info.dli_sname : "-"); + } + + fprintf(stderr, "%-3d %-35s %s\r\n", bdata->count - 1, fn_c, (c3_c *)loc); + + bdata->pn_c = 0; + return 0; + } + else { + bdata->pn_c = 0; + return 1; + } + #endif + return 0; +} + +/* _self_path(): get binary self-path. + */ +static c3_y +_self_path(c3_c *pat_c) +{ + c3_i len_i = 0; + c3_i pat_i; + + if ( 0 < (len_i = wai_getExecutablePath(NULL, 0, &pat_i)) ) { + wai_getExecutablePath(pat_c, len_i, &pat_i); + pat_c[len_i] = 0; + return 0; + } + + return 1; +} + +void +u3m_stacktrace() +{ +#ifndef U3_OS_windows + void* bt_state; + struct bt_cb_data data = { 0, 0, 0 }; + c3_c* self_path_c[4096] = {0}; + +#if defined(U3_OS_osx) + fprintf(stderr, "Stacktrace:\r\n"); + + if ( _self_path((c3_c*)self_path_c) == 0 ) { + bt_state = backtrace_create_state((const c3_c*)self_path_c, 0, err_cb, 0); + backtrace_full(bt_state, 0, bt_cb, err_cb, &data); + if (data.fail == 0) { + fprintf(stderr, "\r\n"); + } + } + else { + data.fail = 1; + } + + if ( data.fail == 1 ) { + void* array[100]; + c3_c** strings; + size_t size = backtrace(array, 100); + + strings = backtrace_symbols(array, size); + + if ( strings[0] == NULL ) { + fprintf(stderr, "Backtrace failed\r\n"); + } + else { + for ( c3_i i = 0; i < size; i++ ) { + fprintf(stderr, "%s\r\n", strings[i]); + } + fprintf(stderr, "\r\n"); + } + + free(strings); + } +#elif defined(U3_OS_linux) + /* TODO: Fix unwind not getting past signal trampoline on linux aarch64 + */ + fprintf(stderr, "Stacktrace:\r\n"); + + if ( _self_path((c3_c*)self_path_c) == 0 ) { + bt_state = backtrace_create_state((const c3_c*)self_path_c, 0, err_cb, 0); + + unw_context_t context; + unw_cursor_t cursor; + unw_getcontext(&context); + unw_init_local(&cursor, &context); + unw_word_t pc, sp; + + c3_c* pn_c[1024] = {0}; + c3_w offp_w = 0; + + do { + unw_get_reg(&cursor, UNW_REG_IP, &pc); + unw_get_reg(&cursor, UNW_REG_SP, &sp); + if ( 0 == unw_get_proc_name(&cursor, (c3_c*)pn_c, 1024, (unw_word_t *)&offp_w) ) + data.pn_c = (c3_c*)pn_c; + backtrace_pcinfo(bt_state, pc - 1, bt_cb, err_cb, &data); + } while (unw_step(&cursor) > 0); + + if ( (data.count > 0) ) { + fprintf(stderr, "\r\n"); + } + } + else { + data.fail = 1; + fprintf(stderr, "Backtrace failed\r\n"); + } +#endif +#endif +} + +/* u3m_bail(): bail out. Does not return. +** +** Bail motes: +** +** %evil :: erroneous cryptography +** %exit :: semantic failure +** %oops :: assertion failure +** %intr :: interrupt +** %fail :: computability failure +** %over :: stack overflow (a kind of %fail) +** %meme :: out of memory +** +** These are equivalents of the full exception noun, the error ball: +** +** $% [%0 success] +** [%1 paths] +** [%2 trace] +** [%3 code trace] +** == +** +** XX several of these abort() calls should be gated by -a +*/ +c3_i +u3m_bail(u3_noun how) +{ + // printf some metadata + // + switch ( how ) { + case c3__evil: + case c3__exit: break; + + default: { + if ( _(u3ud(how)) ) { + c3_c str_c[5]; + + str_c[0] = ((how >> 0) & 0xff); + str_c[1] = ((how >> 8) & 0xff); + str_c[2] = ((how >> 16) & 0xff); + str_c[3] = ((how >> 24) & 0xff); + str_c[4] = 0; + fprintf(stderr, "\r\nbail: %s\r\n", str_c); + } + else if ( 1 != u3h(how) ) { + u3_assert(_(u3ud(u3h(how)))); + fprintf(stderr, "\r\nbail: %d\r\n", u3h(how)); + } + } + } + + if ( &(u3H->rod_u) == u3R ) { + // XX set exit code + // + fprintf(stderr, "home: bailing out\r\n\r\n"); + u3m_stacktrace(); + abort(); + } + + // intercept fatal errors + // + switch ( how ) { + case c3__foul: + case c3__oops: { + // XX set exit code + // + fprintf(stderr, "bailing out\r\n\r\n"); + u3m_stacktrace(); + abort(); + } + } + + if ( &(u3H->rod_u) == u3R ) { + // For top-level errors, which shouldn't happen often, we have no + // choice but to use the signal process; and we require the flat + // form of how. + // + // XX JB: these seem unrecoverable, at least wrt memory management, + // so they've been disabled above for now + // + u3_assert(_(u3a_is_cat(how))); + u3m_signal(how); + } + + // release the emergency buffer, ensuring space for cells + // + u3z(u3R->bug.mer); + u3R->bug.mer = 0; + + /* Reconstruct a correct error ball. + */ + if ( _(u3ud(how)) ) { + switch ( how ) { + case c3__exit: { + how = u3nc(2, u3R->bug.tax); + } break; + + default: { + how = u3nt(3, how, u3R->bug.tax); + } break; + } + } + + // Reset the spin stack pointer + if ( NULL != stk_u ) { + stk_u->off_w = u3R->off_w; + stk_u->fow_w = u3R->fow_w; + } + + /* Longjmp, with an underscore. + */ + _longjmp(u3R->esc.buf, how); +} + +int c3_cooked(void) { return u3m_bail(c3__oops); } + +/* u3m_error(): bail out with %exit, ct_pushing error. +*/ +c3_i +u3m_error(c3_c* str_c) +{ + u3t_mean(u3i_string(str_c)); + return u3m_bail(c3__exit); +} + +/* u3m_leap(): in u3R, create a new road within the existing one. +*/ +void +u3m_leap(c3_w pad_w) +{ + u3_road* rod_u; + + _rod_vaal(u3R); + + // push a new road struct onto the stack + // + { + u3a_pile pil_u; + c3_p ptr_p; + u3a_pile_prep(&pil_u, sizeof(u3a_road) + 15); // XX refactor to wiseof + ptr_p = (c3_p)u3a_push(&pil_u); + + // XX add push_once, push_once_aligned + // + if ( ptr_p & 15 ) { + ptr_p &= ~15; + if ( c3n == u3a_is_north(u3R) ) { + ptr_p += 16; + } + } + + rod_u = (void*)ptr_p; + memset(rod_u, 0, sizeof(u3a_road)); + } + + /* Allocate a region on the cap. + */ + { + u3p(c3_w) bot_p, top_p; /* S: bot_p = new mat. N: bot_p = new rut */ + + if ( c3y == u3a_is_north(u3R) ) { + // pad and page-align the hat + // + bot_p = u3R->hat_p + pad_w; + bot_p += (1U << u3a_page) - 1; + bot_p &= ~((1U << u3a_page) - 1); + top_p = u3R->cap_p; + top_p &= ~((1U << u3a_page) - 1); + + if ( bot_p >= top_p ) { + u3m_bail(c3__meme); + } + + u3e_ward(bot_p - 1, top_p); + rod_u->mat_p = rod_u->cap_p = bot_p; + rod_u->rut_p = rod_u->hat_p = top_p; + + // in a south road, the heap is high and the stack is low + // + // the heap starts at the end of the memory segment; + // the stack starts at the base memory pointer [mem_w], + // and ends after the space for the road structure [siz_w] + // + // 00~~~|M|+++|C|######|H|---|R|~~~FFF + // ^---u3R which _pave_road returns + // + // XX obsolete? + + _rod_vaal(rod_u); +#if 0 + fprintf(stderr, "NPAR.hat_p: 0x%x %p, SKID.hat_p: 0x%x %p\r\n", + u3R->hat_p, u3a_into(u3R->hat_p), + rod_u->hat_p, u3a_into(rod_u->hat_p)); +#endif + } + else { + bot_p = u3R->cap_p; + bot_p += (1U << u3a_page) - 1; + bot_p &= ~((1U << u3a_page) - 1); + top_p = u3R->hat_p - pad_w; + top_p &= ~((1U << u3a_page) - 1); + + // XX moar + if ( (u3R->hat_p < pad_w) || (bot_p >= top_p) ) { + u3m_bail(c3__meme); + } + + u3e_ward(bot_p - 1, top_p); + rod_u->rut_p = rod_u->hat_p = bot_p; + rod_u->mat_p = rod_u->cap_p = top_p; + + // in a north road, the heap is low and the stack is high + // + // the heap starts at the base memory pointer [mem_w]; + // the stack starts at the end of the memory segment, + // minus space for the road structure [siz_w] + // + // 00~~~|R|---|H|######|C|+++|M|~~~FF + // ^--u3R which _pave_road returns (u3H for home road) + // + // XX obsolete? + + _rod_vaal(rod_u); + +#if 0 + fprintf(stderr, "SPAR.hat_p: 0x%x %p, NKID.hat_p: 0x%x %p\r\n", + u3R->hat_p, u3a_into(u3R->hat_p), + rod_u->hat_p, u3a_into(rod_u->hat_p)); + +#endif + } + } + + /* Attach the new road to its parents. + */ + { + u3_assert(0 == u3R->kid_p); + rod_u->par_p = u3of(u3_road, u3R); + u3R->kid_p = u3of(u3_road, rod_u); + } + + // Add slow stack pointer to rod_u + if ( NULL != stk_u ) { + rod_u->off_w = stk_u->off_w; + rod_u->fow_w = stk_u->fow_w; + } + + /* Set up the new road. + */ + { + u3R = rod_u; + _pave_parts(); + } +#ifdef U3_MEMORY_DEBUG + rod_u->all.fre_w = 0; +#endif + + _rod_vaal(u3R); +} + +void +_print_diff(c3_c* cap_c, c3_w a, c3_w b) +{ + c3_w diff = apar_p); + +#if 0 + /* If you're printing a lot of these you need to change + * u3a_print_memory from fprintf to u3l_log + */ + fprintf(stderr, "fall: from %s %p, to %s %p (cap 0x%x, was 0x%x)\r\n", + _(u3a_is_north(u3R)) ? "north" : "south", + (void*)u3R, + _(u3a_is_north(u3to(u3_road, u3R->par_p))) ? "north" : "south", + u3to(void, u3R->par_p), + u3R->hat_p, + u3R->rut_p); + _print_diff("unused free", u3R->hat_p, u3R->cap_p); + _print_diff("freeing", u3R->rut_p, u3R->hat_p); + _print_diff("stack", u3R->cap_p, u3R->mat_p); + static c3_w wat_w = 500000000; + if (u3to(u3_road, u3R->par_p) == &u3H->rod_u) { + wat_w = 500000000; + } + else { + wat_w = c3_min(wat_w, + u3R->hat_p < u3R->cap_p ? + u3R->cap_p - u3R->hat_p : + u3R->hat_p - u3R->cap_p); + } + u3a_print_memory(stderr, "low water mark", wat_w); + +#endif + + u3to(u3_road, u3R->par_p)->pro.nox_d += u3R->pro.nox_d; + u3to(u3_road, u3R->par_p)->pro.cel_d += u3R->pro.cel_d; + + /* The new cap is the old hat - it's as simple as that. + */ + u3to(u3_road, u3R->par_p)->cap_p = u3R->hat_p; + + /* And, we're back home. + */ + u3R = u3to(u3_road, u3R->par_p); + u3R->kid_p = 0; +} + +/* u3m_hate(): new, integrated leap mechanism (enter). +*/ +void +u3m_hate(c3_w pad_w) +{ + u3_assert(0 == u3R->ear_p); + + u3R->ear_p = u3R->cap_p; + u3m_leap(pad_w); + + u3R->bug.mer = u3i_string( + "emergency buffer with sufficient space to cons the trace and bail" + ); +} + +/* u3m_love(): return product from leap. +*/ +u3_noun +u3m_love(u3_noun pro) +{ + // save cache pointers from current road + // + u3p(u3h_root) byc_p = u3R->byc.har_p; + u3a_jets jed_u = u3R->jed; + u3p(u3h_root) per_p = u3R->cax.per_p; + + // fallback to parent road (child heap on parent's stack) + // + u3m_fall(); + + // copy product and caches off our stack + // + pro = u3a_take(pro); + jed_u = u3j_take(jed_u); + byc_p = u3n_take(byc_p); + per_p = u3h_take(per_p); + + // pop the stack + // + u3a_drop_heap(u3R->cap_p, u3R->ear_p); + u3R->cap_p = u3R->ear_p; + u3R->ear_p = 0; + + // integrate junior caches + // + u3j_reap(jed_u); + u3n_reap(byc_p); + u3z_reap(u3z_memo_keep, per_p); + + return pro; +} + +/* u3m_golf(): record cap_p length for u3m_flog(). +*/ +c3_w +u3m_golf(void) +{ + if ( c3y == u3a_is_north(u3R) ) { + return u3R->mat_p - u3R->cap_p; + } + else { + return u3R->cap_p - u3R->mat_p; + } +} + +/* u3m_flog(): reset cap_p. +*/ +void +u3m_flog(c3_w gof_w) +{ + // Enable memsets in case of memory corruption. + // + if ( c3y == u3a_is_north(u3R) ) { + u3_post bot_p = (u3R->mat_p - gof_w); + // c3_w len_w = (bot_w - u3R->cap_w); + + // memset(u3R->cap_w, 0, 4 * len_w); + u3R->cap_p = bot_p; + } + else { + u3_post bot_p = u3R->mat_p + gof_w; + // c3_w len_w = (u3R->cap_w - bot_w); + + // memset(bot_w, 0, 4 * len_w); // + u3R->cap_p = bot_p; + } +} + +/* u3m_water(): produce watermarks. +*/ +void +u3m_water(u3_post* low_p, u3_post* hig_p) +{ + // allow the segfault handler to fire before the road is set + // + // while not explicitly possible in the codebase, + // compiler optimizations can reorder stores + // + if ( !u3R ) { + *low_p = 0; + *hig_p = u3C.wor_i - 1; + } + // in a north road, hat points to the end of the heap + 1 word, + // while cap points to the top of the stack + // + else if ( c3y == u3a_is_north(u3R) ) { + *low_p = u3R->hat_p - 1; + *hig_p = u3R->cap_p; + } + // in a south road, hat points to the end of the heap, + // while cap points to the top of the stack + 1 word + // + else { + *low_p = u3R->cap_p - 1; + *hig_p = u3R->hat_p; + } +} + +/* u3m_soft_top(): top-level safety wrapper. +*/ +u3_noun +u3m_soft_top(c3_w mil_w, // timer ms + c3_w pad_w, // base memory pad + u3_funk fun_f, + u3_noun arg) +{ + u3_noun why, pro; + volatile c3_l sig_l = 0; + + /* Enter internal signal regime. + */ + _cm_signal_deep(mil_w); + + if ( 0 != (sig_l = rsignal_setjmp(u3_Signal)) ) { + // reinitialize trace state + // + u3t_init(); + + // return to blank state + // + _cm_signal_done(); + + // recover memory state from the top down + // + return _cm_signal_recover(sig_l, arg); + } + + /* Record the cap, and leap. + */ + u3m_hate(pad_w); + + /* Trap for ordinary nock exceptions. + */ + if ( 0 == (why = (u3_noun)setjmp(u3R->esc.buf)) ) { + pro = fun_f(arg); + + /* Make sure the inner routine did not create garbage. + */ + if ( u3C.wag_w & u3o_debug_ram ) { +#ifdef U3_CPU_DEBUG + if ( u3R->all.max_w > 1000000 ) { + u3a_print_memory(stderr, "execute: top", u3R->all.max_w); + } +#endif + u3m_grab(pro, u3_none); + } + + /* Revert to external signal regime. + */ + _cm_signal_done(); + + /* Produce success, on the old road. + */ + pro = u3nc(0, u3m_love(pro)); + } + else { + /* Overload the error result. + */ + pro = u3m_love(why); + } + + /* Revert to external signal regime. + */ + _cm_signal_done(); + + /* Free the argument. + */ + u3z(arg); + + /* Return the product. + */ + return pro; +} + +/* u3m_soft_sure(): top-level call assumed correct. +*/ +u3_noun +u3m_soft_sure(u3_funk fun_f, u3_noun arg) +{ + u3_noun pro, pru = u3m_soft_top(0, (1 << 18), fun_f, arg); + + u3_assert(_(u3du(pru))); + pro = u3k(u3t(pru)); + u3z(pru); + + return pro; +} + +/* u3m_soft_slam: top-level call. +*/ +u3_noun _cm_slam(u3_noun arg) { return u3n_slam_on(u3h(arg), u3t(arg)); } +u3_noun +u3m_soft_slam(u3_noun gat, u3_noun sam) +{ + return u3m_soft_sure(_cm_slam, u3nc(gat, sam)); +} + +/* u3m_soft_nock: top-level nock. +*/ +u3_noun _cm_nock(u3_noun arg) { return u3n_nock_on(u3h(arg), u3t(arg)); } +u3_noun +u3m_soft_nock(u3_noun bus, u3_noun fol) +{ + return u3m_soft_sure(_cm_nock, u3nc(bus, fol)); +} + +static void +_hamt_map(u3_noun kev, void* cax_p) +{ + u3_noun* old = cax_p; + u3_noun key, val, new; + u3x_cell(kev, &key, &val); + new = u3qdb_put(*old, u3t(key), val); + u3z(*old); + *old = new; +} + +/* u3m_soft_cax(): descend into virtualization context, with cache. +*/ +u3_noun +u3m_soft_cax(u3_funq fun_f, + u3_noun aga, + u3_noun agb) +{ + u3_noun why = 0, pro; + u3_noun cax = u3_nul; + + /* Save and set memo cache harvesting flag. + */ + c3_w wag_w = u3C.wag_w; + u3C.wag_w |= u3o_cash; + + /* Record the cap, and leap. + */ + u3m_hate(1 << 18); + + /* Configure the new road. + */ + { + u3R->ski.gul = u3_nul; + u3R->pro.don = u3to(u3_road, u3R->par_p)->pro.don; + u3R->pro.trace = u3to(u3_road, u3R->par_p)->pro.trace; + u3R->bug.tax = 0; + } + u3t_on(coy_o); + + /* Trap for exceptions. + */ + if ( 0 == (why = (u3_noun)setjmp(u3R->esc.buf)) ) { + u3t_off(coy_o); + pro = fun_f(aga, agb); + u3C.wag_w = wag_w; + +#ifdef U3_CPU_DEBUG + if ( u3R->all.max_w > 1000000 ) { + u3a_print_memory(stderr, "execute: run", u3R->all.max_w); + } +#endif + + /* Today you can't run -g without memory debug, but you should be + * able to. + */ +#ifdef U3_MEMORY_DEBUG + if ( u3C.wag_w & u3o_debug_ram ) { + u3m_grab(pro, u3_none); + } +#endif + + /* Produce success, on the old road. + */ + u3h_walk_with(u3R->cax.per_p, _hamt_map, &cax); + pro = u3nc(u3nc(0, pro), cax); + pro = u3m_love(pro); + } + else { + u3t_init(); + u3C.wag_w = wag_w; + + /* Produce - or fall again. + */ + { + u3_assert(_(u3du(why))); + switch ( u3h(why) ) { + default: u3_assert(0); return 0; + + case 1: { // blocking request + pro = u3nc(u3nc(2, u3m_love(u3R->bug.tax)), u3_nul); + } break; + + case 2: { // true exit + pro = u3nc(u3m_love(why), u3_nul); + } break; + + case 3: { // failure; rebail w/trace + u3_noun yod = u3m_love(u3t(why)); + + u3m_bail + (u3nt(3, + u3a_take(u3h(yod)), + u3kb_weld(u3t(yod), u3k(u3R->bug.tax)))); + } break; + } + } + } + /* Release the arguments. + */ + { + u3z(aga); + u3z(agb); + } + + /* Return the product. + */ + return pro; +} + +/* u3m_soft_run(): descend into virtualization context. +*/ +u3_noun +u3m_soft_run(u3_noun gul, + u3_funq fun_f, + u3_noun aga, + u3_noun agb) +{ + u3_noun why = 0, pro; + + /* Record the cap, and leap. + */ + u3m_hate(1 << 18); + + /* Configure the new road. + */ + + { + // XX review + if ( (u3_nul == gul) || (u3C.wag_w & u3o_cash) ) { + u3R->ski.gul = u3_nul; + } + else { + u3R->ski.gul = u3nc(gul, u3to(u3_road, u3R->par_p)->ski.gul); + } + u3R->pro.don = u3to(u3_road, u3R->par_p)->pro.don; + u3R->pro.trace = u3to(u3_road, u3R->par_p)->pro.trace; + u3R->bug.tax = 0; + } + u3t_on(coy_o); + + /* Trap for exceptions. + */ + if ( 0 == (why = (u3_noun)setjmp(u3R->esc.buf)) ) { + u3t_off(coy_o); + pro = fun_f(aga, agb); + +#ifdef U3_CPU_DEBUG + if ( u3R->all.max_w > 1000000 ) { + u3a_print_memory(stderr, "execute: run", u3R->all.max_w); + } +#endif + + /* Today you can't run -g without memory debug, but you should be + * able to. + */ +#ifdef U3_MEMORY_DEBUG + if ( u3C.wag_w & u3o_debug_ram ) { + u3m_grab(pro, u3_none); + } +#endif + + /* Produce success, on the old road. + */ + pro = u3nc(0, u3m_love(pro)); + } + else { + u3t_init(); + + /* Produce - or fall again. + */ + { + u3_assert(_(u3du(why))); + switch ( u3h(why) ) { + default: u3_assert(0); return 0; + + case 0: { // unusual: bail with success. + pro = u3m_love(why); + } break; + + case 1: { // blocking request + pro = u3m_love(why); + } break; + + case 2: { // true exit + pro = u3m_love(why); + } break; + + case 3: { // failure; rebail w/trace + u3_noun yod = u3m_love(u3t(why)); + + u3m_bail + (u3nt(3, + u3a_take(u3h(yod)), + u3kb_weld(u3t(yod), u3k(u3R->bug.tax)))); + } break; + + case 4: { // meta-bail + u3m_bail(u3m_love(u3t(why))); + } break; + } + } + } + + /* Release the arguments. + */ + { + u3z(gul); + u3z(aga); + u3z(agb); + } + + /* Return the product. + */ + return pro; +} + +/* u3m_soft_esc(): namespace lookup. Produces direct result. +*/ +u3_noun +u3m_soft_esc(u3_noun ref, u3_noun sam) +{ + u3_noun why, gul, pro; + + /* Assert preconditions. + */ + { + gul = u3h(u3R->ski.gul); + } + + /* Record the cap, and leap. + */ + u3m_hate(1 << 18); + + /* Configure the new road. + */ + { + u3R->ski.gul = u3t(u3to(u3_road, u3R->par_p)->ski.gul); + u3R->pro.don = u3to(u3_road, u3R->par_p)->pro.don; + u3R->pro.trace = u3to(u3_road, u3R->par_p)->pro.trace; + u3R->bug.tax = 0; + } + + /* Trap for exceptions. + */ + if ( 0 == (why = (u3_noun)setjmp(u3R->esc.buf)) ) { + pro = u3n_slam_on(gul, u3nc(ref, sam)); + + /* Fall back to the old road, leaving temporary memory intact. + */ + pro = u3m_love(pro); + } + else { + u3t_init(); + + /* Push the error back up to the calling context - not the run we + ** are in, but the caller of the run, matching pure nock semantics. + */ + u3m_bail(u3nc(4, u3m_love(why))); + } + + /* Release the sample. Note that we used it above, but in a junior + ** road, so its refcount is intact. + */ + u3z(ref); + u3z(sam); + + /* Return the product. + */ + return pro; +} + +/* u3m_grab(): garbage-collect the world, plus extra roots. +*/ +void +u3m_grab(u3_noun som, ...) // terminate with u3_none +{ + // u3h_free(u3R->cax.har_p); + // u3R->cax.har_p = u3h_new(); + + u3a_mark_init(); + { + va_list vap; + u3_noun tur; + + va_start(vap, som); + + if ( som != u3_none ) { + u3a_mark_noun(som); + + while ( u3_none != (tur = va_arg(vap, u3_noun)) ) { + u3a_mark_noun(tur); + } + } + va_end(vap); + } + u3m_mark(); // XX leaks + u3a_sweep(); +} + +/* u3m_soft(): top-level wrapper. +** +** Produces [0 product] or [%error (list tank)], top last. +*/ +u3_noun +u3m_soft(c3_w mil_w, + u3_funk fun_f, + u3_noun arg) +{ + u3_noun why; + + why = u3m_soft_top(mil_w, (1 << 20), fun_f, arg); // 4M pad + + if ( 0 == u3h(why) ) { + return why; + } + else { + u3_noun tax, cod, pro; + + switch ( u3h(why) ) { + case 2: { + cod = c3__exit; + tax = u3t(why); + } break; + + case 3: { + cod = u3h(u3t(why)); + tax = u3t(u3t(why)); + } break; + + // don't use .^ at the top level! + // + default: { + u3m_p("invalid mot", u3h(why)); + u3_assert(0); + } + } + + // don't call +mook if we have no kernel + // + // This is required to soft the boot sequence. + // + if ( 0 == u3A->roc ) { + while ( u3_nul != tax ) { + u3_noun dat, mot, val; + u3x_cell(tax, &dat, &tax); + + if ( c3y == u3r_cell(dat, &mot, &val) ) { + if ( c3__spot == mot ) { + u3m_p("tax", val); + } + else if ( (c3__mean == mot) + && (c3y == u3a_is_atom(val)) ) + { + u3m_p("men", val); + } + else { + u3m_p("mot", mot); + } + } + } + + pro = u3nc(u3k(cod), u3_nul); + } + // %evil leaves no trace + // + else if ( c3__evil == cod ) { + pro = u3nc(u3k(cod), u3_nul); + } + else { + u3_noun mok = u3dc("mook", 2, u3k(tax)); + pro = u3nc(u3k(cod), u3k(u3t(mok))); + u3z(mok); + } + + u3z(why); + return pro; + } +} + +/* _cm_is_tas(): yes iff som (RETAIN) is @tas. +*/ +static c3_o +_cm_is_tas(u3_atom som, c3_w len_w) +{ + c3_w i_w; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_c c_c = u3r_byte(i_w, som); + + if ( islower(c_c) || + (isdigit(c_c) && (0 != i_w) && ((len_w - 1) != i_w)) + || '-' == c_c ) + { + continue; + } + return c3n; + } + return c3y; +} + +/* _cm_is_ta(): yes iff som (RETAIN) is @ta. +*/ +static c3_o +_cm_is_ta(u3_noun som, c3_w len_w) +{ + c3_w i_w; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_c c_c = u3r_byte(i_w, som); + + if ( (c_c < 32) || (c_c > 127) ) { + return c3n; + } + } + return c3y; +} + +/* _cm_hex(): hex byte. +*/ +c3_y _cm_hex(c3_y c_y) +{ + if ( c_y < 10 ) + return '0' + c_y; + else return 'a' + (c_y - 10); +} + +/* _cm_in_pretty: measure/cut prettyprint. +*/ +static c3_w +_cm_in_pretty(u3_noun som, c3_o sel_o, c3_c* str_c) +{ + if ( _(u3du(som)) ) { + c3_w sel_w, one_w, two_w; + + sel_w = 0; + if ( _(sel_o) ) { + if ( str_c ) { *(str_c++) = '['; } + sel_w += 1; + } + + one_w = _cm_in_pretty(u3h(som), c3y, str_c); + if ( str_c ) { + str_c += one_w; + *(str_c++) = ' '; + } + two_w = _cm_in_pretty(u3t(som), c3n, str_c); + if ( str_c ) { str_c += two_w; } + + if ( _(sel_o) ) { + if ( str_c ) { *(str_c++) = ']'; } + sel_w += 1; + } + return one_w + two_w + 1 + sel_w; + } + else { + if ( som < 65536 ) { + c3_c buf_c[6]; + c3_w len_w; + + snprintf(buf_c, 6, "%d", som); + len_w = strlen(buf_c); + + if ( str_c ) { strcpy(str_c, buf_c); str_c += len_w; } + return len_w; + } + else { + c3_w len_w = u3r_met(3, som); + + if ( _(_cm_is_tas(som, len_w)) ) { + if ( str_c ) { + *(str_c++) = '%'; + u3r_bytes(0, len_w, (c3_y *)str_c, som); + str_c += len_w; + } + return len_w + 1; + } + else if ( _(_cm_is_ta(som, len_w)) ) { + if ( str_c ) { + *(str_c++) = '\''; + u3r_bytes(0, len_w, (c3_y *)str_c, som); + str_c += len_w; + *(str_c++) = '\''; + } + return len_w + 2; + } + else { + c3_c *buf_c = c3_malloc(2 + (2 * len_w) + 1); + c3_w i_w = 0; + c3_w a_w = 0; + + buf_c[a_w++] = '0'; + buf_c[a_w++] = 'x'; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_y c_y = u3r_byte(len_w - (i_w + 1), som); + + if ( (i_w == 0) && (c_y <= 0xf) ) { + buf_c[a_w++] = _cm_hex(c_y); + } else { + buf_c[a_w++] = _cm_hex(c_y >> 4); + buf_c[a_w++] = _cm_hex(c_y & 0xf); + } + } + buf_c[a_w] = 0; + len_w = a_w; + + if ( str_c ) { strcpy(str_c, buf_c); str_c += len_w; } + + c3_free(buf_c); + return len_w; + } + } + } +} + +/* u3m_pretty(): dumb prettyprint to string. +*/ +c3_c* +u3m_pretty(u3_noun som) +{ + c3_w len_w = _cm_in_pretty(som, c3y, 0); + c3_c* pre_c = c3_malloc(len_w + 1); + + _cm_in_pretty(som, c3y, pre_c); + pre_c[len_w] = 0; + return pre_c; +} + +/* _cm_in_pretty_path: measure/cut prettyprint. + * + * Modeled after _cm_in_pretty(), the backend to u3m_p(), but with the + * assumption that we're always displaying a path. + */ +static c3_w +_cm_in_pretty_path(u3_noun som, c3_c* str_c) +{ + if ( _(u3du(som)) ) { + c3_w sel_w, one_w, two_w; + if ( str_c ) { + *(str_c++) = '/'; + } + sel_w = 1; + + one_w = _cm_in_pretty_path(u3h(som), str_c); + if ( str_c ) { + str_c += one_w; + } + + two_w = _cm_in_pretty_path(u3t(som), str_c); + if ( str_c ) { + str_c += two_w; + } + + return sel_w + one_w + two_w; + } + else { + c3_w len_w = u3r_met(3, som); + if ( str_c && len_w ) { + u3r_bytes(0, len_w, (c3_y *)str_c, som); + str_c += len_w; + } + return len_w; + } +} + +/* u3m_pretty_path(): prettyprint a path to string. +*/ +c3_c* +u3m_pretty_path(u3_noun som) +{ + c3_w len_w = _cm_in_pretty_path(som, NULL); + c3_c* pre_c = c3_malloc(len_w + 1); + + _cm_in_pretty_path(som, pre_c); + pre_c[len_w] = 0; + return pre_c; +} + +/* u3m_p(): dumb print with caption. +*/ +void +u3m_p(const c3_c* cap_c, u3_noun som) +{ + c3_c* pre_c = u3m_pretty(som); + + u3l_log("%s: %s", cap_c, pre_c); + c3_free(pre_c); +} + +/* u3m_tape(): dump a tape to stdout. +*/ +void +u3m_tape(u3_noun tep) +{ + u3_noun tap = tep; + + while ( u3_nul != tap ) { + c3_c car_c; + + if ( u3h(tap) >= 127 ) { + car_c = '?'; + } else car_c = u3h(tap); + + putc(car_c, stdout); + tap = u3t(tap); + } + u3z(tep); +} + +/* u3m_wall(): dump a wall to stdout. +*/ +void +u3m_wall(u3_noun wol) +{ + u3_noun wal = wol; + + while ( u3_nul != wal ) { + u3m_tape(u3k(u3h(wal))); + + putc(13, stdout); + putc(10, stdout); + + wal = u3t(wal); + } + u3z(wol); +} + +/* _cm_limits(): set up global modes and limits. +*/ +static void +_cm_limits(void) +{ +#ifndef U3_OS_windows + struct rlimit rlm; + + // Moar stack. + // + { + u3_assert( 0 == getrlimit(RLIMIT_STACK, &rlm) ); + + rlm.rlim_cur = c3_min(rlm.rlim_max, (65536 << 10)); + + if ( 0 != setrlimit(RLIMIT_STACK, &rlm) ) { + u3l_log("boot: stack size: %s", strerror(errno)); + exit(1); + } + } + + // Moar filez. + // + { + getrlimit(RLIMIT_NOFILE, &rlm); + + #ifdef U3_OS_osx + rlm.rlim_cur = c3_min(OPEN_MAX, rlm.rlim_max); + #else + rlm.rlim_cur = rlm.rlim_max; + #endif + + // no exit, not a critical limit + // + if ( 0 != setrlimit(RLIMIT_NOFILE, &rlm) ) { + u3l_log("boot: open file limit: %s", strerror(errno)); + } + } + + // Moar core. + // +# ifndef ASAN_ENABLED + { + getrlimit(RLIMIT_CORE, &rlm); + rlm.rlim_cur = RLIM_INFINITY; + + // no exit, not a critical limit + // + if ( 0 != setrlimit(RLIMIT_CORE, &rlm) ) { + u3l_log("boot: core limit: %s", strerror(errno)); + } + } +# endif +#endif +} + +/* u3m_fault(): handle a memory event with libsigsegv protocol. + */ +c3_i +u3m_fault(void* adr_v, c3_i ser_i) +{ + c3_w* adr_w = (c3_w*)adr_v; + u3_post low_p, hig_p; + + // let the stack overflow handler run. + // + if ( 0 == ser_i ) { + return 0; + } + // this could be avoided by registering the loom bounds in libsigsegv + // + else if ( (adr_w < u3_Loom) || (adr_w >= (u3_Loom + u3C.wor_i)) ) { + fprintf(stderr, "loom: external fault: %p (%p : %p)\r\n\r\n", + (void *)adr_w, (void *)u3_Loom, (void *)(u3_Loom + u3C.wor_i)); + u3m_stacktrace(); + u3_assert(0); + return 0; + } + + u3m_water(&low_p, &hig_p); + + switch ( u3e_fault(low_p, hig_p, u3a_outa(adr_w)) ) { + // page tracking invariants violated, fatal + // + case u3e_flaw_sham: { + u3_assert(0); + return 0; + } + + // virtual memory failure (protections) + // + // XX s/b recoverable, need to u3m_signal() a new mote + // + case u3e_flaw_base: { + u3_assert(0); + return 0; + } + + // loom limits exceeded, recoverable + // + case u3e_flaw_meme: { + u3m_signal(c3__meme); // doesn't return + return 1; + } + + case u3e_flaw_good: return 1; + } + + u3_assert(!"unpossible"); +} + +/* u3m_foul(): dirty all pages and disable tracking. +*/ +void +u3m_foul(void) +{ + if ( c3n == u3e_yolo() ) { + return; + } + + u3e_foul(); +} + +/* u3m_save(): update the checkpoint. +*/ +void +u3m_save(void) +{ + u3_post low_p, hig_p; + u3m_water(&low_p, &hig_p); + + u3a_wait(); + + u3_assert(u3R == &u3H->rod_u); + + u3e_save(low_p, hig_p); + + u3a_dash(); +} + +/* u3m_toss(): discard ephemeral memory. +*/ +void +u3m_toss(void) +{ + u3_post low_p, hig_p; + u3m_water(&low_p, &hig_p); + + if ( ((low_p + u3C.tos_w) < u3C.wor_i) + && (hig_p > u3C.tos_w) ) + { + low_p += u3C.tos_w; + hig_p -= u3C.tos_w; + + if ( low_p < hig_p ) { + u3e_toss(low_p, hig_p); + } + } +} + +/* u3m_ward(): tend the guardpage. +*/ +void +u3m_ward(void) +{ + u3_post low_p, hig_p; + u3m_water(&low_p, &hig_p); + +#if 1 // XX redundant + { + c3_w low_w, hig_w; + + if ( c3y == u3a_is_north(u3R) ) { + low_w = u3R->hat_p; + hig_w = u3R->cap_p; + } + else { + low_w = u3R->cap_p; + hig_w = u3R->hat_p; + } + + if ( (low_w > (u3P.gar_w << u3a_page)) + || (hig_w < (u3P.gar_w << u3a_page)) ) + { + u3_assert( ((low_p >> u3a_page) >= u3P.gar_w) + || ((hig_p >> u3a_page) <= u3P.gar_w) ); + } + } +#endif + + u3e_ward(low_p, hig_p); +} + +/* _cm_signals(): set up interrupts, etc. +*/ +static void +_cm_signals(void) +{ +#ifndef U3_OS_windows + if ( 0 != sigsegv_install_handler(u3m_fault) ) { + u3l_log("boot: sigsegv install failed"); + exit(1); + } + +# if defined(U3_OS_PROF) + // Block SIGPROF, so that if/when we reactivate it on the + // main thread for profiling, we won't get hits in parallel + // on other threads. + if ( u3C.wag_w & u3o_debug_cpu ) { + sigset_t set; + + sigemptyset(&set); + sigaddset(&set, SIGPROF); + + if ( 0 != pthread_sigmask(SIG_BLOCK, &set, NULL) ) { + u3l_log("boot: thread mask SIGPROF: %s", strerror(errno)); + exit(1); + } + } +#endif +#else + if (0 == AddVectoredExceptionHandler(1, _windows_exception_filter)) { + u3l_log("boot: vectored exception handler install failed"); + exit(1); + } +#endif +} + +/* _cm_malloc_ssl(): openssl-shaped malloc +*/ +static void* +_cm_malloc_ssl(size_t len_i +#if OPENSSL_VERSION_NUMBER >= 0x10100000L + , const char* file, int line +#endif + ) +{ + return u3a_malloc(len_i); +} + +/* _cm_realloc_ssl(): openssl-shaped realloc. +*/ +static void* +_cm_realloc_ssl(void* lag_v, size_t len_i +#if OPENSSL_VERSION_NUMBER >= 0x10100000L + , const char* file, int line +#endif + ) +{ + return u3a_realloc(lag_v, len_i); +} + +/* _cm_free_ssl(): openssl-shaped free. +*/ +static void +_cm_free_ssl(void* tox_v +#if OPENSSL_VERSION_NUMBER >= 0x10100000L + , const char* file, int line +#endif + ) +{ + u3a_free(tox_v); +} + +extern void u3je_secp_init(void); + +/* _cm_crypto(): initialize openssl and crypto jets. +*/ +static void +_cm_crypto(void) +{ + /* Initialize OpenSSL with loom allocation functions. */ + if ( 0 == CRYPTO_set_mem_functions(&_cm_malloc_ssl, + &_cm_realloc_ssl, + &_cm_free_ssl) ) { + u3l_log("%s", "openssl initialization failed"); + abort(); + } + + u3je_secp_init(); +} + +/* _cm_realloc2(): gmp-shaped realloc. +*/ +static void* +_cm_realloc2(void* lag_v, size_t old_i, size_t new_i) +{ + return u3a_realloc(lag_v, new_i); +} + +/* _cm_free2(): gmp-shaped free. +*/ +static void +_cm_free2(void* tox_v, size_t siz_i) +{ + u3a_free(tox_v); +} + +/* u3m_init(): start the environment. +*/ +void +u3m_init(size_t len_i) +{ + _cm_limits(); + _cm_signals(); + _cm_crypto(); + + u3a_init_once(); + + // make sure GMP uses our malloc. + // + mp_set_memory_functions(u3a_malloc, _cm_realloc2, _cm_free2); + + // make sure that [len_i] is a fully-addressible non-zero power of two. + // + if ( !len_i + || (len_i & (len_i - 1)) + || (len_i < (1 << (u3a_page + 2))) + || (len_i > u3a_bytes) ) + { + u3l_log("loom: bad size: %zu", len_i); + exit(1); + } + + // map at fixed address. + // + { + void* map_v = mmap((void *)u3_Loom, + len_i, + (PROT_READ | PROT_WRITE), + (MAP_ANON | MAP_FIXED | MAP_PRIVATE), + -1, 0); + + if ( -1 == (c3_ps)map_v ) { + map_v = mmap((void *)0, + len_i, + (PROT_READ | PROT_WRITE), + (MAP_ANON | MAP_PRIVATE), + -1, 0); + + u3l_log("boot: mapping %zuMB failed", len_i >> 20); + u3l_log("see https://docs.urbit.org/user-manual/running/cloud-hosting" + " for adding swap space"); + if ( -1 != (c3_ps)map_v ) { + u3l_log("if porting to a new platform, try U3_OS_LoomBase %p", + map_v); + } + exit(1); + } + + u3C.wor_i = len_i >> 2; + u3l_log("loom: mapped %zuMB", len_i >> 20); + } +} + +extern void u3je_secp_stop(void); + +/* u3m_stop(): graceful shutdown cleanup. +*/ +void +u3m_stop(void) +{ + u3t_sstack_exit(); + + u3e_stop(); + u3je_secp_stop(); +} + +/* u3m_pier(): make a pier. +*/ +c3_c* +u3m_pier(c3_c* dir_c) +{ + c3_c ful_c[8193]; + + u3C.dir_c = dir_c; + + snprintf(ful_c, 8192, "%s", dir_c); + if ( c3_mkdir(ful_c, 0700) ) { + if ( EEXIST != errno ) { + fprintf(stderr, "loom: pier create: %s\r\n", strerror(errno)); + exit(1); + } + } + + snprintf(ful_c, 8192, "%s/.urb", dir_c); + if ( c3_mkdir(ful_c, 0700) ) { + if ( EEXIST != errno ) { + fprintf(stderr, "loom: .urb create: %s\r\n", strerror(errno)); + exit(1); + } + } + + snprintf(ful_c, 8192, "%s/.urb/chk", dir_c); + if ( c3_mkdir(ful_c, 0700) ) { + if ( EEXIST != errno ) { + fprintf(stderr, "loom: .urb/chk create: %s\r\n", strerror(errno)); + exit(1); + } + } + + return strdup(dir_c); +} + +/* u3m_boot(): start the u3 system. return next event, starting from 1. +*/ +c3_d +u3m_boot(c3_c* dir_c, size_t len_i) +{ + c3_o nuu_o; + + u3C.dir_c = dir_c; + + /* Activate the loom. + */ + u3m_init(len_i); + + /* Activate the storage system. + */ + nuu_o = u3e_live(c3n, u3m_pier(dir_c)); + + /* Activate tracing. + */ + u3C.slog_f = 0; + u3C.sign_hold_f = 0; + u3C.sign_move_f = 0; + u3t_init(); + + /* Construct or activate the allocator. + */ + u3m_pave(nuu_o); + + /* GC immediately if requested + */ + if ( (c3n == nuu_o) && (u3C.wag_w & u3o_check_corrupt) ) { + u3l_log("boot: gc requested"); + u3m_grab(u3_none); + u3C.wag_w &= ~u3o_check_corrupt; + u3l_log("boot: gc complete"); + } + + /* Initialize the jet system. + */ + { + c3_w len_w = u3j_boot(nuu_o); + u3l_log("boot: installed %d jets", len_w); + } + + /* Reactivate jets on old kernel. + */ + if ( c3n == nuu_o ) { + u3j_ream(); + u3n_ream(); + return u3A->eve_d; + } + else { + /* Basic initialization. + */ + memset(u3A, 0, sizeof(*u3A)); + return 0; + } +} + +/* u3m_boot_lite(): start without checkpointing. +*/ +c3_d +u3m_boot_lite(size_t len_i) +{ + /* Activate the loom. + */ + u3m_init(len_i); + + /* Activate tracing. + */ + u3C.slog_f = 0; + u3C.sign_hold_f = 0; + u3C.sign_move_f = 0; + u3t_init(); + + /* Construct or activate the allocator. + */ + u3m_pave(c3y); + + /* Place the guard page. + */ + u3e_init(); + + /* Initialize the jet system. + */ + u3j_boot(c3y); + + /* Basic initialization. + */ + memset(u3A, 0, sizeof(*u3A)); + return 0; +} + +/* u3m_reclaim: clear persistent caches to reclaim memory. +*/ +void +u3m_reclaim(void) +{ + u3v_reclaim(); + u3j_reclaim(); + u3n_reclaim(); + u3a_reclaim(); +} + +/* _cm_pack_rewrite(): trace through arena, rewriting pointers. +*/ +static void +_cm_pack_rewrite(void) +{ + // XX fix u3a_rewrite* to support south roads + // + u3_assert( &(u3H->rod_u) == u3R ); + + // NB: these implementations must be kept in sync with u3m_reclaim(); + // anything not reclaimed must be rewritable + // + u3v_rewrite_compact(); + u3j_rewrite_compact(); + u3n_rewrite_compact(); + u3a_rewrite_compact(); +} + +/* u3m_pack: compact (defragment) memory, returns u3a_open delta. +*/ +c3_w +u3m_pack(void) +{ + c3_w pre_w = u3a_open(u3R); + + // reclaim first, to free space, and discard anything we can't/don't rewrite + // + u3m_reclaim(); + + // sweep the heap, finding and saving new locations + // + u3a_pack_seek(u3R); + + // trace roots, rewriting inner pointers + // + _cm_pack_rewrite(); + + // sweep the heap, relocating objects to their new locations + // + u3a_pack_move(u3R); + + return (u3a_open(u3R) - pre_w); +} diff --git a/vere/pkg/noun/manage.h b/vere/pkg/noun/manage.h new file mode 100644 index 0000000..f0779e9 --- /dev/null +++ b/vere/pkg/noun/manage.h @@ -0,0 +1,215 @@ +/// @file + +#ifndef U3_MANAGE_H +#define U3_MANAGE_H + +// #include "v1/manage.h" +// #include "v2/manage.h" + +#include "c3/c3.h" +#include "types.h" +#include "version.h" + + /** System management. + **/ + /* u3m_boot(): start the u3 system. return next event, starting from 1. + */ + c3_d + u3m_boot(c3_c* dir_c, size_t len_i); + + /* u3m_pier(): make a pier. + */ + c3_c* + u3m_pier(c3_c* dir_c); + + /* u3m_boot_lite(): start without checkpointing. + */ + c3_d + u3m_boot_lite(size_t len_i); + + /* u3m_stop(): graceful shutdown cleanup. */ + void + u3m_stop(void); + + /* u3m_bail(): bail out. Does not return. + ** + ** Bail motes: + ** + ** %exit :: semantic failure + ** %evil :: bad crypto + ** %intr :: interrupt + ** %fail :: execution failure + ** %foul :: assert failure + ** %need :: network block + ** %meme :: out of memory + ** %time :: timed out + ** %oops :: assertion failure + */ + c3_i + u3m_bail(c3_m how_m) __attribute__((noreturn)); + + /* u3m_fault(): handle a memory event with libsigsegv protocol. + */ + c3_i + u3m_fault(void* adr_v, c3_i ser_i); + + /* u3m_foul(): dirty all pages and disable tracking. + */ + void + u3m_foul(void); + + /* u3m_backup(): copy snapshot to .urb/bhk (if it doesn't exist yet). + */ + c3_o + u3m_backup(c3_o); + + /* u3m_save(): update the checkpoint. + */ + void + u3m_save(void); + + /* u3m_toss(): discard ephemeral memory. + */ + void + u3m_toss(void); + + /* u3m_ward(): tend the guardpage. + */ + void + u3m_ward(void); + + /* u3m_init(): start the environment. + */ + void + u3m_init(size_t len_i); + + /* u3m_pave(): instantiate or activate image. + */ + void + u3m_pave(c3_o nuu_o); + + /* u3m_signal(): treat a nock-level exception as a signal interrupt. + */ + void + u3m_signal(u3_noun sig_l); + + /* u3m_file(): load file, as atom, or bail. + */ + u3_noun + u3m_file(c3_c* pas_c); + + /* u3m_error(): bail out with %exit, ct_pushing error. + */ + c3_i + u3m_error(c3_c* str_c); + + /* u3m_hate(): new, integrated leap mechanism (enter). + */ + void + u3m_hate(c3_w pad_w); + + /* u3m_love(): return product from leap. + */ + u3_noun + u3m_love(u3_noun pro); + + /* u3m_soft(): system soft wrapper. unifies unix and nock errors. + ** + ** Produces [%$ result] or [%error (list tank)]. + */ + u3_noun + u3m_soft(c3_w mil_w, u3_funk fun_f, u3_noun arg); + + /* u3m_soft_cax(): descend into virtualization context, with cache. + */ + u3_noun + u3m_soft_cax(u3_funq fun_f, u3_noun aga, u3_noun agb); + + /* u3m_soft_slam: top-level call. + */ + u3_noun + u3m_soft_slam(u3_noun gat, u3_noun sam); + + /* u3m_soft_nock: top-level nock. + */ + u3_noun + u3m_soft_nock(u3_noun bus, u3_noun fol); + + /* u3m_soft_sure(): top-level call assumed correct. + */ + u3_noun + u3m_soft_sure(u3_funk fun_f, u3_noun arg); + + /* u3m_soft_run(): descend into virtualization context. + */ + u3_noun + u3m_soft_run(u3_noun gul, + u3_funq fun_f, + u3_noun aga, + u3_noun agb); + + /* u3m_soft_esc(): namespace lookup to (unit ,*). + */ + u3_noun + u3m_soft_esc(u3_noun ref, u3_noun sam); + + + /* u3m_quac: memory report. + */ + typedef struct _u3m_quac { + c3_c* nam_c; + c3_w siz_w; + struct _u3m_quac** qua_u; + } u3m_quac; + + /* u3m_mark(): mark all nouns in the road. + */ + u3m_quac** + u3m_mark(); + + /* u3m_grab(): garbage-collect the world, plus extra roots. + */ + void + u3m_grab(u3_noun som, ...); // terminate with u3_none + + /* u3m_water(): produce high and low watermarks. Asserts u3R == u3H. + */ + void + u3m_water(u3_post* low_p, u3_post* hig_p); + + /* u3m_pretty(): dumb prettyprint to string. RETAIN. + */ + c3_c* + u3m_pretty(u3_noun som); + + /* u3m_pretty_path(): prettyprint a path to string. RETAIN. + */ + c3_c* + u3m_pretty_path(u3_noun som); + + /* u3m_p(): dumb print with caption. RETAIN. + */ + void + u3m_p(const c3_c* cap_c, u3_noun som); + + /* u3m_tape(): dump a tape to stdout. + */ + void + u3m_tape(u3_noun tep); + + /* u3m_wall(): dump a wall to stdout. + */ + void + u3m_wall(u3_noun wol); + + /* u3m_reclaim: clear persistent caches to reclaim memory. + */ + void + u3m_reclaim(void); + + /* u3m_pack: compact (defragment) memory, returns u3a_open delta. + */ + c3_w + u3m_pack(void); + +#endif /* ifndef U3_MANAGE_H */ diff --git a/vere/pkg/noun/nock.c b/vere/pkg/noun/nock.c new file mode 100644 index 0000000..8218efa --- /dev/null +++ b/vere/pkg/noun/nock.c @@ -0,0 +1,3268 @@ +/// @file + +#include "nock.h" + +#include "allocate.h" +#include "hashtable.h" +#include "imprison.h" +#include "jets.h" +#include "jets/k.h" +#include "jets/q.h" +#include "manage.h" +#include "options.h" +#include "retrieve.h" +#include "trace.h" +#include "vortex.h" +#include "xtract.h" +#include "zave.h" + + +// define to have each opcode printed as it executes, +// along with some other debugging info +# undef VERBOSE_BYTECODE + +#if 0 +// Retained for debugging purposes. +static u3_noun _n_nock_on(u3_noun bus, u3_noun fol); + +/* _n_hint(): process hint. +*/ +static u3_noun +_n_hint(u3_noun zep, + u3_noun hod, + u3_noun bus, + u3_noun nex) +{ + switch ( zep ) { + default: { + // u3m_p("weird zep", zep); + u3a_lose(zep); + u3a_lose(hod); + + return _n_nock_on(bus, nex); + } + + case c3__hunk: + case c3__lose: + case c3__mean: + case c3__spot: { + u3_noun tac = u3nc(zep, hod); + u3_noun pro; + + u3t_push(tac); +#if 0 + { + static int low_i; + + if ( !low_i ) { + low_i = 1; + if ( 0 == (u3R->pro.nox_d % 65536ULL) ) { + if ( c3__spot == zep ) { + u3l_log("spot %d/%d : %d/%d", + u3h(u3h(u3t(hod))), + u3t(u3h(u3t(hod))), + u3h(u3t(u3t(hod))), + u3t(u3t(u3t(hod)))); + } + } + low_i = 0; + } + } +#endif + pro = _n_nock_on(bus, nex); + u3t_drop(); + + return pro; + } + + case c3__live: { + if ( c3y == u3ud(hod) ) { + u3t_off(noc_o); + u3t_heck(hod); + u3t_on(noc_o); + } else { + u3z(hod); + } + return _n_nock_on(bus, nex); + } + + case c3__slog: { + if ( !(u3C.wag_w & u3o_quiet) ) { + u3t_off(noc_o); + u3t_slog(hod); + u3t_on(noc_o); + } + return _n_nock_on(bus, nex); + } + + case c3__germ: { + u3_noun pro = _n_nock_on(bus, nex); + + if ( c3y == u3r_sing(pro, hod) ) { + u3z(pro); return hod; + } else { + u3z(hod); return pro; + } + } + + case c3__fast: { + u3_noun pro = _n_nock_on(bus, nex); + + u3t_off(noc_o); + u3j_mine(hod, u3k(pro)); + u3t_on(noc_o); + + return pro; + } + + case c3__memo: { + u3z(hod); +#if 0 + return _n_nock_on(bus, nex); +#else + { + u3_noun pro = u3z_find_2(144 + c3__nock, bus, nex); + + if ( pro != u3_none ) { + u3z(bus); u3z(nex); + return pro; + } + pro = _n_nock_on(u3k(bus), u3k(nex)); + + if ( &(u3H->rod_u) != u3R ) { + u3z_save_2(144 + c3__nock, bus, nex, pro); + } + + u3z(bus); u3z(nex); + + return pro; + } +#endif + } + + case c3__sole: { + u3z(hod); + { + u3_noun pro = _n_nock_on(bus, nex); + + // return u3z_uniq(pro); + return pro; + } + } + } +} + +/* _n_nock_on(): produce .*(bus fol). Do not virtualize. +*/ +static u3_noun +_n_nock_on(u3_noun bus, u3_noun fol) +{ + u3_noun hib, gal; + + while ( 1 ) { + hib = u3h(fol); + gal = u3t(fol); + +#ifdef U3_CPU_DEBUG + u3R->pro.nox_d += 1; +#endif + + if ( c3y == u3du(hib) ) { + u3_noun poz, riv; + + poz = _n_nock_on(u3k(bus), u3k(hib)); + riv = _n_nock_on(bus, u3k(gal)); + + u3a_lose(fol); + return u3i_cell(poz, riv); + } + else switch ( hib ) { + default: return u3m_bail(c3__exit); + + case 0: { + if ( c3n == u3ud(gal) ) { + return u3m_bail(c3__exit); + } + else { + u3_noun pro = u3k(u3at(gal, bus)); + + u3a_lose(bus); u3a_lose(fol); + return pro; + } + } + u3_assert(!"not reached"); + + case 1: { + u3_noun pro = u3k(gal); + + u3a_lose(bus); u3a_lose(fol); + return pro; + } + u3_assert(!"not reached"); + + case 2: { + u3_noun nex = _n_nock_on(u3k(bus), u3k(u3t(gal))); + u3_noun seb = _n_nock_on(bus, u3k(u3h(gal))); + + u3a_lose(fol); + bus = seb; + fol = nex; + continue; + } + u3_assert(!"not reached"); + + case 3: { + u3_noun gof, pro; + + gof = _n_nock_on(bus, u3k(gal)); + pro = u3du(gof); + + u3a_lose(gof); u3a_lose(fol); + return pro; + } + u3_assert(!"not reached"); + + case 4: { + u3_noun gof, pro; + + gof = _n_nock_on(bus, u3k(gal)); + pro = u3i_vint(gof); + + u3a_lose(fol); + return pro; + } + u3_assert(!"not reached"); + + case 5: { + u3_noun wim = _n_nock_on(bus, u3k(gal)); + u3_noun pro = u3r_sing(u3h(wim), u3t(wim)); + + u3a_lose(wim); u3a_lose(fol); + return pro; + } + u3_assert(!"not reached"); + + case 6: { + u3_noun b_gal, c_gal, d_gal; + + u3x_trel(gal, &b_gal, &c_gal, &d_gal); + { + u3_noun tys = _n_nock_on(u3k(bus), u3k(b_gal)); + u3_noun nex; + + if ( 0 == tys ) { + nex = u3k(c_gal); + } else if ( 1 == tys ) { + nex = u3k(d_gal); + } else return u3m_bail(c3__exit); + + u3a_lose(fol); + fol = nex; + continue; + } + } + u3_assert(!"not reached"); + + case 7: { + u3_noun b_gal, c_gal; + + u3x_cell(gal, &b_gal, &c_gal); + { + u3_noun bod = _n_nock_on(bus, u3k(b_gal)); + u3_noun nex = u3k(c_gal); + + u3a_lose(fol); + bus = bod; + fol = nex; + continue; + } + } + u3_assert(!"not reached"); + + case 8: { + u3_noun b_gal, c_gal; + + u3x_cell(gal, &b_gal, &c_gal); + { + u3_noun heb = _n_nock_on(u3k(bus), u3k(b_gal)); + u3_noun bod = u3nc(heb, bus); + u3_noun nex = u3k(c_gal); + + u3a_lose(fol); + bus = bod; + fol = nex; + continue; + } + } + u3_assert(!"not reached"); + + case 9: { + u3_noun b_gal, c_gal; + + u3x_cell(gal, &b_gal, &c_gal); + { + u3_noun seb = _n_nock_on(bus, u3k(c_gal)); + u3_noun pro; + + u3t_off(noc_o); + pro = u3j_kick(seb, b_gal); + u3t_on(noc_o); + + if ( u3_none != pro ) { + u3a_lose(fol); + return pro; + } + else { + if ( c3n == u3ud(b_gal) ) { + return u3m_bail(c3__exit); + } + else { + u3_noun nex = u3k(u3at(b_gal, seb)); + + u3a_lose(fol); + bus = seb; + fol = nex; + continue; + } + } + } + } + u3_assert(!"not reached"); + + case 10: { + u3_noun p_gal, q_gal; + + u3x_cell(gal, &p_gal, &q_gal); + { + u3_noun zep, hod, nex; + + if ( c3y == u3du(p_gal) ) { + u3_noun b_gal = u3h(p_gal); + u3_noun c_gal = u3t(p_gal); + u3_noun d_gal = q_gal; + + zep = u3k(b_gal); + hod = _n_nock_on(u3k(bus), u3k(c_gal)); + nex = u3k(d_gal); + } + else { + u3_noun b_gal = p_gal; + u3_noun c_gal = q_gal; + + zep = u3k(b_gal); + hod = u3_nul; + nex = u3k(c_gal); + } + + u3a_lose(fol); + return _n_hint(zep, hod, bus, nex); + } + } + + case 11: { + u3_noun ref = _n_nock_on(u3k(bus), u3k(u3h(gal))); + u3_noun gof = _n_nock_on(bus, u3k(u3t(gal))); + u3_noun val; + + u3t_off(noc_o); + val = u3m_soft_esc(u3k(ref), u3k(gof)); + u3t_on(noc_o); + + if ( !_(u3du(val)) ) { + u3m_bail(u3nt(1, gof, 0)); + } + if ( !_(u3du(u3t(val))) ) { + // + // replace with proper error stack push + // + u3t_push(u3nt(c3__hunk, ref, gof)); + return u3m_bail(c3__exit); + } + else { + u3_noun pro; + + u3z(ref); + u3z(gof); + u3z(fol); + pro = u3k(u3t(u3t(val))); + u3z(val); + + return pro; + } + } + u3_assert(!"not reached"); + } + } +} +#endif + +// Several opcodes "overflow" (from byte to short index) to their successor, so +// order can matter here. +// Note that we use an X macro (https://en.wikipedia.org/wiki/X_Macro) to unify +// the opcode's enum name, string representation, and computed goto into a +// single structure. +#define OPCODES \ + /* non-nock bytecodes */ \ + X(HALT, "halt", &&do_halt), /* 0: terminator, end of bytcode program */ \ + X(BAIL, "bail", &&do_bail), /* 1: deterministic crash */ \ + /* stack manipulation */ \ + X(COPY, "copy", &&do_copy), /* 2 */ \ + X(SWAP, "swap", &&do_swap), /* 3 */ \ + X(TOSS, "toss", &&do_toss), /* 4 */ \ + /* auto-cons */ \ + X(AUTO, "auto", &&do_auto), /* 5: kept */ \ + X(AULT, "ault", &&do_ault), /* 6: lost */ \ + /* general purposes */ \ + X(SNOC, "snoc", &&do_snoc), /* 7: keep */ \ + X(SNOL, "snol", &&do_snol), /* 8: lose */ \ + /* nock 0: head */ \ + X(HEAD, "head", &&do_head), /* 9: keep */ \ + X(HELD, "held", &&do_held), /* 10: lose */ \ + /* nock 0: tail */ \ + X(TAIL, "tail", &&do_tail), /* 11: keep */ \ + X(TALL, "tall", &&do_tall), /* 12: lose */ \ + /* nock 0: fragment (keep) */ \ + X(FABK, "fabk", &&do_fabk), /* 13: c3_y */ \ + X(FASK, "fask", &&do_fask), /* 14: c3_s */ \ + X(FIBK, "fibk", &&do_fibk), /* 15: c3_y */ \ + X(FISK, "fisk", &&do_fisk), /* 16: c3_s */ \ + /* nock 0: fragment (lose) */ \ + X(FABL, "fabl", &&do_fabl), /* 17: c3_y */ \ + X(FASL, "fasl", &&do_fasl), /* 18: c3_s */ \ + X(FIBL, "fibl", &&do_fibl), /* 19: c3_y */ \ + X(FISL, "fisl", &&do_fisl), /* 20: c3_s */ \ + /* nock 1: literal (keep) */ \ + X(LIT0, "lit0", &&do_lit0), /* 21: a literal 0 */ \ + X(LIT1, "lit1", &&do_lit1), /* 22: a literal 1 */ \ + X(LITB, "litb", &&do_litb), /* 23: c3_y */ \ + X(LITS, "lits", &&do_lits), /* 24: c3_s */ \ + X(LIBK, "libk", &&do_libk), /* 25: c3_y */ \ + X(LISK, "lisk", &&do_lisk), /* 26: c3_s */ \ + /* nock 1: literal (lose) */ \ + X(LIL0, "lil0", &&do_lil0), /* 27: a literal 0 */ \ + X(LIL1, "lil1", &&do_lil1), /* 28: a literal 1 */ \ + X(LILB, "lilb", &&do_lilb), /* 29: c3_y */ \ + X(LILS, "lils", &&do_lils), /* 30: c3_s */ \ + X(LIBL, "libl", &&do_libl), /* 31: c3_y */ \ + X(LISL, "lisl", &&do_lisl), /* 32: c3_s */ \ + /* nock 2: nock */ \ + X(NOLK, "nolk", &&do_nolk), /* 33, lost */ \ + X(NOCT, "noct", &&do_noct), /* 34, tail */ \ + X(NOCK, "nock", &&do_nock), /* 35, kept */ \ + /* nock 3 & 4 */ \ + X(DEEP, "deep", &&do_deep), /* 36 */ \ + X(BUMP, "bump", &&do_bump), /* 37 */ \ + /* nock 5: equality */ \ + X(SAM0, "sam0", &&do_sam0), /* 38: test that it is equal to 0 */ \ + X(SAM1, "sam1", &&do_sam1), /* 39: test that it is equal to 1 */ \ + X(SAMB, "samb", &&do_samb), /* 40: test equality for vars size c3_b */ \ + X(SAMS, "sams", &&do_sams), /* 41: test equality for vars size c3_s */ \ + X(SANB, "sanb", &&do_sanb), /* 42: test equality for vars size c3_b */ \ + X(SANS, "sans", &&do_sans), /* 43: test equality for vars size c3_s */ \ + X(SAME, "same", &&do_same), /* 44 */ \ + X(SALM, "salm", &&do_salm), /* 45 */ \ + X(SAMC, "samc", &&do_samc), /* 46 */ \ + /* related to nock 6: unconditional skips */ \ + X(SBIP, "sbip", &&do_sbip), /* 47: c3_b */ \ + X(SIPS, "sips", &&do_sips), /* 48: c3_s */ \ + X(SWIP, "swip", &&do_swip), /* 49: c3_l */ \ + /* related to nock 6: conditional skips */ \ + X(SBIN, "sbin", &&do_sbin), /* 50: c3_b */ \ + X(SINS, "sins", &&do_sins), /* 51: c3_s */ \ + X(SWIN, "swin", &&do_swin), /* 52: c3_l */ \ + /* nock 9 */ \ + X(KICB, "kicb", &&do_kicb), /* 53: c3_b */ \ + X(KICS, "kics", &&do_kics), /* 54: c3_s */ \ + X(TICB, "ticb", &&do_ticb), /* 55: c3_b */ \ + X(TICS, "tics", &&do_tics), /* 56: c3_s */ \ + /* nock 12: scry (only defined in arvo, not in base nock spec) */ \ + X(WILS, "wils", &&do_wils), /* 57 */ \ + X(WISH, "wish", &&do_wish), /* 58 */ \ + /* nock 11: hint processing */ \ + X(BUSH, "bush", &&do_bush), /* 59: c3_b */ \ + X(SUSH, "sush", &&do_sush), /* 60: c3_s */ \ + X(DROP, "drop", &&do_drop), /* 61 */ \ + X(HECK, "heck", &&do_heck), /* 62 */ \ + X(SLOG, "slog", &&do_slog), /* 63 */ \ + /* nock 11: fast (keep) */ \ + X(BAST, "bast", &&do_bast), /* 64: c3_b */ \ + X(SAST, "sast", &&do_sast), /* 65: c3_s */ \ + /* nock 11: fast (lost) */ \ + X(BALT, "balt", &&do_balt), /* 66: c3_b */ \ + X(SALT, "salt", &&do_salt), /* 67: c3_s */ \ + /* nock 11: memo (keep) */ \ + X(SKIB, "skib", &&do_skib), /* 68: c3_b */ \ + X(SKIS, "skis", &&do_skis), /* 69: c3_s */ \ + /* nock 11: memo (lose) */ \ + X(SLIB, "slib", &&do_slib), /* 70: c3_b */ \ + X(SLIS, "slis", &&do_slis), /* 71: c3_s */ \ + X(SAVE, "save", &&do_save), /* 72 */ \ + /* nock 11: before formula */ \ + X(HILB, "hilb", &&do_hilb), /* 73: atomic, byte */ \ + X(HILS, "hils", &&do_hils), /* 74: atomic, short */ \ + X(HINB, "hinb", &&do_hinb), /* 75: arbitrary, byte */ \ + X(HINS, "hins", &&do_hins), /* 76: arbitrary, short */ \ + /* nock 11: after formula */ \ + X(HILK, "hilk", &&do_hilk), /* 77: atomic, keep */ \ + X(HILL, "hill", &&do_hill), /* 78: atomic, lose */ \ + X(HINK, "hink", &&do_hink), /* 79: arbitrary, keep */ \ + X(HINL, "hinl", &&do_hinl), /* 80: arbitrary, lose */ \ + /* nock 10 */ \ + X(MUTH, "muth", &&do_muth), /* 81 */ \ + X(KUTH, "kuth", &&do_kuth), /* 82 */ \ + X(MUTT, "mutt", &&do_mutt), /* 83 */ \ + X(KUTT, "kutt", &&do_kutt), /* 84 */ \ + X(MUSM, "musm", &&do_musm), /* 85 */ \ + X(KUSM, "kusm", &&do_kusm), /* 86 */ \ + X(MUTB, "mutb", &&do_mutb), /* 87: c3_b */ \ + X(MUTS, "muts", &&do_muts), /* 88: c3_s */ \ + X(MITB, "mitb", &&do_mitb), /* 89: c3_b */ \ + X(MITS, "mits", &&do_mits), /* 90: c3_s */ \ + X(KUTB, "kutb", &&do_kutb), /* 91: c3_b */ \ + X(KUTS, "kuts", &&do_kuts), /* 92: c3_s */ \ + X(KITB, "kitb", &&do_kitb), /* 93: c3_b */ \ + X(KITS, "kits", &&do_kits), /* 94: c3_s */ \ + X(LAST, NULL, NULL), /* 95 */ + +// Opcodes. Define X to select the enum name from OPCODES. +#define X(opcode, name, indirect_jump) opcode +enum { OPCODES }; +#undef X + +/* _n_arg(): return the size (in bytes) of an opcode's argument + */ +static inline c3_y +_n_arg(c3_y cod_y) +{ + switch ( cod_y ) { + case FABK: case FABL: case FIBL: case FIBK: + case LILB: case LITB: case LIBL: case LIBK: + case SAMB: case SANB: case SBIP: case SBIN: + case SLIB: case SKIB: case KICB: case TICB: + case BUSH: case BAST: case BALT: + case MUTB: case KUTB: case MITB: case KITB: + case HILB: case HINB: + return sizeof(c3_y); + + case FASK: case FASL: case FISL: case FISK: + case LILS: case LITS: case LISL: case LISK: + case SAMS: case SANS: case SIPS: case SINS: + case SLIS: case SKIS: case KICS: case TICS: + case SUSH: case SAST: case SALT: + case MUTS: case KUTS: case MITS: case KITS: + case HILS: case HINS: + return sizeof(c3_s); + + case SWIP: case SWIN: + return sizeof(c3_l); + + default: + u3_assert( cod_y < LAST ); + return 0; + } +} + + +/* _n_melt(): measure space for list of ops (from _n_comp) */ +static u3_noun +_n_melt(u3_noun ops, c3_w* byc_w, c3_w* cal_w, + c3_w* reg_w, c3_w* lit_w, c3_w* mem_w) +{ + c3_w len_w = u3qb_lent(ops), + i_w = len_w - 1, + a_w; + c3_y cod_y; + c3_y* siz_y = u3a_malloc(len_w); + u3_noun op, sip = u3_nul; + + while ( u3_nul != ops ) { + op = u3h(ops); + if ( c3n == u3du(op) ) { + switch ( op ) { + default: + siz_y[i_w] = 1; + break; + + case BAST: case BALT: + a_w = (*reg_w)++; + if ( a_w <= 0xFF ) { + siz_y[i_w] = 2; + } + else if ( a_w <= 0xFFFF ) { + siz_y[i_w] = 3; + } + else { + fprintf(stderr, "_n_melt(): over 2^16 registration sites.\r\n"); + u3_assert(0); + } + break; + } + } + else { + cod_y = u3h(op); + + switch ( cod_y ) { + default: + siz_y[i_w] = 1 + _n_arg(cod_y); + break; + + case SBIP: case SBIN: { + c3_l tot_l = 0, + sip_l = u3t(op); + c3_w j_w, k_w = i_w; + for ( j_w = 0; j_w < sip_l; ++j_w ) { + tot_l += siz_y[++k_w]; + } + sip = u3nc(tot_l, sip); + siz_y[i_w] = tot_l <= 0xFF ? 2 : tot_l <= 0xFFFF ? 3 : 5; + break; + } + + case SKIB: case SLIB: { + c3_l tot_l = 0, + sip_l = u3h(u3t(u3t(op))); + c3_w j_w, k_w = i_w; + for ( j_w = 0; j_w < sip_l; ++j_w ) { + tot_l += siz_y[++k_w]; + } + sip = u3nc(tot_l, sip); + a_w = (*mem_w)++; + if ( a_w <= 0xFF ) { + siz_y[i_w] = 2; + } + else if ( a_w <= 0xFFFF ) { + siz_y[i_w] = 3; + } + else { + fprintf(stderr, "_n_melt(): over 2^16 memos.\r\n"); + u3_assert(0); + } + break; + } + + case SIPS: case SINS: case SWIP: case SWIN: + case SAST: case SALT: case KICS: case TICS: + case FISK: case FISL: case SUSH: case SANS: + case LISL: case LISK: case SKIS: case SLIS: + case HILS: case HINS: + u3_assert(0); //overflows + break; + + case KICB: case TICB: + a_w = (*cal_w)++; + if ( a_w <= 0xFF ) { + siz_y[i_w] = 2; + } + else if ( a_w <= 0xFFFF ) { + siz_y[i_w] = 3; + } + else { + fprintf(stderr, "_n_melt(): over 2^16 call sites.\r\n"); + u3_assert(0); + } + break; + + case BUSH: case FIBK: case FIBL: + case SANB: case LIBL: case LIBK: + case KITB: case MITB: + case HILB: case HINB: + a_w = (*lit_w)++; + if ( a_w <= 0xFF ) { + siz_y[i_w] = 2; + } + else if ( a_w <= 0xFFFF ) { + siz_y[i_w] = 3; + } + else { + fprintf(stderr, "_n_melt(): over 2^16 literals.\r\n"); + u3_assert(0); + } + break; + } + } + + *(byc_w) += siz_y[i_w--]; + ops = u3t(ops); + } + + u3a_free(siz_y); + return u3kb_flop(sip); +} + +/* _n_prog_dat(): return pointer to program's data segment + */ +static void* +_n_prog_dat(u3n_prog* pog_u) +{ + return ((void*) pog_u) + sizeof(u3n_prog); +} + +/* _n_prog_new(): allocate and set up pointers for u3n_prog + */ +static u3n_prog* +_n_prog_new(c3_w byc_w, c3_w cal_w, + c3_w reg_w, c3_w lit_w, c3_w mem_w) +{ + c3_w cab_w = (sizeof(u3j_site) * cal_w), + reb_w = (sizeof(u3j_rite) * reg_w), + lib_w = (sizeof(u3_noun) * lit_w), + meb_w = (sizeof(u3n_memo) * mem_w), + pad_w = (8 - byc_w % 8) % 8, + pod_w = lit_w % 2, + ped_w = mem_w % 2, + dat_w = byc_w + cab_w + reb_w + lib_w + meb_w + pad_w + + (pod_w * sizeof(u3_noun)) + (ped_w * sizeof(u3n_memo)); + + u3n_prog* pog_u = u3a_malloc(sizeof(u3n_prog) + dat_w); + pog_u->byc_u.own_o = c3y; + pog_u->byc_u.len_w = byc_w; + pog_u->byc_u.ops_y = (c3_y*) _n_prog_dat(pog_u); + + pog_u->lit_u.len_w = lit_w; + pog_u->lit_u.non = (u3_noun*) (pog_u->byc_u.ops_y + pog_u->byc_u.len_w + pad_w); + + pog_u->mem_u.len_w = mem_w; + pog_u->mem_u.sot_u = (u3n_memo*) (pog_u->lit_u.non + pog_u->lit_u.len_w + pod_w); + + pog_u->cal_u.len_w = cal_w; + pog_u->cal_u.sit_u = (u3j_site*) (pog_u->mem_u.sot_u + pog_u->mem_u.len_w + ped_w); + + pog_u->reg_u.len_w = reg_w; + pog_u->reg_u.rit_u = (u3j_rite*) (pog_u->cal_u.sit_u + pog_u->cal_u.len_w); + + return pog_u; +} + +/* _n_prog_old(): as _n_prog_new(), + * but leech off senior program's data segment + */ +static u3n_prog* +_n_prog_old(u3n_prog* sep_u) +{ + c3_w cab_w = sizeof(u3j_site) * sep_u->cal_u.len_w, + reb_w = sizeof(u3j_rite) * sep_u->reg_u.len_w, + lib_w = sizeof(u3_noun) * sep_u->lit_u.len_w, + meb_w = sizeof(u3n_memo) * sep_u->mem_u.len_w, + pod_w = sep_u->lit_u.len_w % 2, + ped_w = sep_u->mem_u.len_w % 2, + dat_w = cab_w + reb_w + lib_w + meb_w + + (pod_w * sizeof(u3_noun)) + (ped_w * sizeof(u3n_memo)); + + u3n_prog* pog_u = u3a_malloc(sizeof(u3n_prog) + dat_w); + pog_u->byc_u.own_o = c3n; + pog_u->byc_u.len_w = sep_u->byc_u.len_w; + pog_u->byc_u.ops_y = sep_u->byc_u.ops_y; + + pog_u->lit_u.len_w = sep_u->lit_u.len_w; + pog_u->lit_u.non = (u3_noun*) _n_prog_dat(pog_u); + + pog_u->mem_u.len_w = sep_u->mem_u.len_w; + pog_u->mem_u.sot_u = (u3n_memo*) (pog_u->lit_u.non + pog_u->lit_u.len_w + pod_w); + + pog_u->cal_u.len_w = sep_u->cal_u.len_w; + pog_u->cal_u.sit_u = (u3j_site*) (pog_u->mem_u.sot_u + pog_u->mem_u.len_w + ped_w); + + pog_u->reg_u.len_w = sep_u->reg_u.len_w; + pog_u->reg_u.rit_u = (u3j_rite*) (pog_u->cal_u.sit_u + pog_u->cal_u.len_w); + + memcpy(pog_u->lit_u.non, sep_u->lit_u.non, dat_w); + return pog_u; +} + +/* _n_prog_asm_inx(): write an index to the bytestream with overflow + */ +static void +_n_prog_asm_inx(c3_y* buf_y, c3_w* i_w, c3_s inx_s, c3_y cod) +{ + if ( inx_s <= 0xFF ) { + buf_y[(*i_w)--] = (c3_y) (inx_s); + buf_y[*i_w] = (c3_y) cod; + } + else { + buf_y[(*i_w)--] = (c3_y) (inx_s >> 8); + buf_y[(*i_w)--] = (c3_y) (inx_s); + // the short-index versions of these opcodes must immediately + // follow the byte-index versions because of this convention + buf_y[(*i_w)] = cod + 1; + } +} + +/* _n_prog_asm(): assemble list of ops (from _n_comp) into u3n_prog + */ +static void +_n_prog_asm(u3_noun ops, u3n_prog* pog_u, u3_noun sip) +{ + u3_noun top = ops; + c3_y* buf_y = pog_u->byc_u.ops_y; + c3_s lit_s = 0, + cal_s = 0, + mem_s = 0, + reg_s = 0; + c3_w i_w = pog_u->byc_u.len_w-1; + + buf_y[i_w] = HALT; + + while ( i_w-- > 0 ) { + u3_noun op = u3h(ops); + if ( c3y == u3ud(op) ) { + switch ( op ) { + default: + buf_y[i_w] = (c3_y) op; + break; + + /* registration site index args */ + case BAST: case BALT: { + _n_prog_asm_inx(buf_y, &i_w, reg_s, op); + u3j_rite* rit_u = &(pog_u->reg_u.rit_u[reg_s++]); + rit_u->own_o = c3n; + rit_u->clu = u3_none; + rit_u->fin_p = 0; + break; + } + } + } + else { + u3_noun cod = u3h(op); + switch ( cod ) { + default: + u3_assert(0); + return; + + /* memo index args */ + case SKIB: case SLIB: { + u3n_memo* mem_u; + c3_l sip_l = u3h(sip); + u3_noun tmp = sip; + sip = u3k(u3t(sip)); + u3z(tmp); + _n_prog_asm_inx(buf_y, &i_w, mem_s, cod); + mem_u = &(pog_u->mem_u.sot_u[mem_s++]); + mem_u->sip_l = sip_l; + // [op_y, cid, mem_w, nef] + mem_u->key = u3k(u3t(u3t(u3t(op)))); + mem_u->cid = u3h(u3t(op)); + break; + } + + /* skips */ + case SBIP: case SBIN: { + c3_l sip_l = u3h(sip); + u3_noun tmp = sip; + sip = u3k(u3t(sip)); + u3z(tmp); + if ( sip_l <= 0xFF ) { + buf_y[i_w--] = (c3_y) sip_l; + buf_y[i_w] = (c3_y) cod; + } + else if ( sip_l <= 0xFFFF ) { + buf_y[i_w--] = (c3_y) (sip_l >> 8); + buf_y[i_w--] = (c3_y) sip_l; + buf_y[i_w] = (c3_y) cod + 1; + } + else { + buf_y[i_w--] = (c3_y) (sip_l >> 24); + buf_y[i_w--] = (c3_y) (sip_l >> 16); + buf_y[i_w--] = (c3_y) (sip_l >> 8); + buf_y[i_w--] = (c3_y) sip_l; + buf_y[i_w] = (c3_y) cod + 2; + } + break; + } + + /* 8-bit direct args */ + case FABK: case FABL: + case LITB: case LILB: + case MUTB: case KUTB: + case SAMB: + buf_y[i_w--] = (c3_y) u3t(op); + buf_y[i_w] = (c3_y) cod; + break; + + /* 16-bit direct args */ + case FASK: case FASL: + case LILS: case LITS: + case MUTS: case KUTS: + case SAMS: case SIPS: case SINS: { + c3_s off_s = u3t(op); + buf_y[i_w--] = (c3_y) (off_s >> 8); + buf_y[i_w--] = (c3_y) off_s; + buf_y[i_w] = (c3_y) cod; + break; + } + + /* 31-bit direct args */ + case SWIP: case SWIN: { + c3_w off_l = u3t(op); + buf_y[i_w--] = (c3_y) (off_l >> 24); + buf_y[i_w--] = (c3_y) (off_l >> 16); + buf_y[i_w--] = (c3_y) (off_l >> 8); + buf_y[i_w--] = (c3_y) off_l; + buf_y[i_w] = (c3_y) cod; + break; + } + + /* literal index args */ + case FIBK: case FIBL: + case LIBK: case LIBL: + case BUSH: case SANB: + case KITB: case MITB: + case HILB: case HINB: + _n_prog_asm_inx(buf_y, &i_w, lit_s, cod); + pog_u->lit_u.non[lit_s++] = u3k(u3t(op)); + break; + + /* call site index args */ + case TICB: case KICB: { + _n_prog_asm_inx(buf_y, &i_w, cal_s, cod); + u3j_site* sit_u = &(pog_u->cal_u.sit_u[cal_s++]); + sit_u->axe = u3k(u3t(op)); + sit_u->pog_p = 0; + sit_u->bat = u3_none; + sit_u->bas = u3_none; + sit_u->loc = u3_none; + sit_u->lab = u3_none; + sit_u->jet_o = c3n; + sit_u->fon_o = c3n; + sit_u->cop_u = NULL; + sit_u->ham_u = NULL; + sit_u->fin_p = 0; + break; + } + } + } + ops = u3t(ops); + } + u3z(top); + // this assert will fail if we overflow a c3_w worth of instructions + u3_assert(u3_nul == ops); + // this is just a sanity check + u3_assert(u3_nul == sip); +} + +/* _n_prog_from_ops(): new program from _n_comp() product + */ +static u3n_prog* +_n_prog_from_ops(u3_noun ops) +{ + u3_noun sip; + u3n_prog* pog_u; + c3_w byc_w = 1, // HALT + cal_w = 0, + reg_w = 0, + lit_w = 0, + mem_w = 0; + + sip = _n_melt(ops, &byc_w, &cal_w, ®_w, &lit_w, &mem_w); + pog_u = _n_prog_new(byc_w, cal_w, reg_w, lit_w, mem_w); + _n_prog_asm(ops, pog_u, sip); + return pog_u; +} + +#if 0 +/* _n_print_stack(): print out the cap stack up to a designated "empty" + * used only for debugging + */ +static void _n_print_stack(u3p(u3_noun) empty) { + c3_w cur_p = u3R->cap_p; + fprintf(stderr, "["); + int first = 1; + while ( cur_p != empty ) { + if ( first ) { + first = 0; + } + else { + fprintf(stderr, " "); + } + if ( c3y == u3a_is_north(u3R) ) { + fprintf(stderr, "%u", *(u3to(u3_noun, cur_p))); + cur_p++; + } + else { + fprintf(stderr, "%u", *(u3to(u3_noun, cur_p-1))); + cur_p--; + } + } + fprintf(stderr, "]\r\n"); +} +#endif + +// Define X to select the opcode string representation from OPCODES. +# define X(opcode, name, indirect_jump) name +static c3_c* opcode_names[] = { OPCODES }; +# undef X + +/* _n_apen(): emit the instructions contained in src to dst + */ +static inline void +_n_apen(u3_noun* dst, u3_noun src) +{ + *dst = u3kb_weld(src, *dst); +} + +/* _n_emit(): emit a single instruction to ops + */ +static inline void +_n_emit(u3_noun *ops, u3_noun op) +{ + *ops = u3nc(op, *ops); +} + +static c3_w _n_comp(u3_noun*, u3_noun, c3_o, c3_o); + +/* _n_bint(): hint-processing helper for _n_comp. + * hif: hint-formula (first part of 11). RETAIN. + * nef: next-formula (second part of 11). RETAIN. + */ +static c3_w +_n_bint(u3_noun* ops, u3_noun hif, u3_noun nef, c3_o los_o, c3_o tel_o) +{ + c3_w tot_w = 0; + + if ( c3n == u3du(hif) ) { + // compile whitelisted atomic hints to dispatch protocol; + // compute and drop all others; + // + switch ( hif ) { + default: { + return _n_comp(ops, nef, los_o, tel_o); + } + case c3__cash: + case c3__xray: + case c3__meme: + case c3__nara: + case c3__hela: + case c3__bout: { + u3_noun fen = u3_nul; + c3_w nef_w = _n_comp(&fen, nef, los_o, c3n); + // add appropriate hind opcode + ++nef_w; _n_emit(&fen, ( c3y == los_o ) ? HILL : HILK); + // skip over the cleanup opcode + ++nef_w; _n_emit(&fen, u3nc(SBIP, 1)); + + // call hilt_fore + // HILB overflows to HILS + ++tot_w; _n_emit(ops, u3nc(HILB, u3nc(u3k(hif), u3k(nef)))); + // if fore return c3n, skip fen + ++tot_w; _n_emit(ops, u3nc(SBIN, nef_w)); + tot_w += nef_w; _n_apen(ops, fen); + // post-skip cleanup opcode + ++tot_w; _n_emit(ops, ( c3y == los_o ) ? TOSS : SWAP); + } break; + } + } + else { + u3_noun zep, hod; + u3x_cell(hif, &zep, &hod); + + switch ( zep ) { + default: { + // compile whitelisted dynamic hints to dispatch protocol; + // compute and drop all others; + // + switch ( zep ) { + default: { + tot_w += _n_comp(ops, hod, c3n, c3n); + ++tot_w; _n_emit(ops, TOSS); + tot_w += _n_comp(ops, nef, los_o, tel_o); + } break; + case c3__xray: + case c3__meme: + case c3__nara: + case c3__hela: + case c3__spin: + case c3__bout: { + u3_noun fen = u3_nul; + c3_w nef_w = _n_comp(&fen, nef, los_o, c3n); + // add appropriate hind opcode + ++nef_w; _n_emit(&fen, ( c3y == los_o ) ? HINL : HINK); + // skip over the cleanup opcode + ++nef_w; _n_emit(&fen, u3nc(SBIP, 1)); + + // push clue + tot_w += _n_comp(ops, hod, c3n, c3n); + // call hint_fore + // HINB overflows to HINS + ++tot_w; _n_emit(ops, u3nc(HINB, u3nc(u3k(zep), u3k(nef)))); + // if fore return c3n, skip fen + ++tot_w; _n_emit(ops, u3nc(SBIN, nef_w)); + tot_w += nef_w; _n_apen(ops, fen); + // post-skip cleanup opcode + ++tot_w; _n_emit(ops, ( c3y == los_o ) ? TOSS : SWAP); + } break; + } + } break; + + case c3__hunk: + case c3__lose: + case c3__mean: + case c3__spot: + tot_w += _n_comp(ops, hod, c3n, c3n); + ++tot_w; _n_emit(ops, u3nc(BUSH, zep)); // overflows to SUSH + tot_w += _n_comp(ops, nef, los_o, c3n); + ++tot_w; _n_emit(ops, DROP); + break; + + case c3__live: + tot_w += _n_comp(ops, hod, c3n, c3n); + ++tot_w; _n_emit(ops, HECK); + tot_w += _n_comp(ops, nef, los_o, tel_o); + break; + + case c3__slog: + tot_w += _n_comp(ops, hod, c3n, c3n); + ++tot_w; _n_emit(ops, SLOG); + tot_w += _n_comp(ops, nef, los_o, tel_o); + break; + + // germ and sole are unused... + + case c3__fast: + tot_w += _n_comp(ops, hod, c3n, c3n); + ++tot_w; _n_emit(ops, SWAP); + tot_w += _n_comp(ops, nef, los_o, c3n); + // overflows to SALT / SAST + ++tot_w; _n_emit(ops, (c3y == los_o) ? BALT : BAST); + break; + + case c3__memo: { + u3_noun mem = u3_nul; + c3_w mem_w = 0; + c3_y op_y; + + tot_w += _n_comp(ops, hod, c3n, c3n); + ++tot_w; _n_emit(ops, TOSS); + + mem_w += _n_comp(&mem, nef, c3y, c3n); + ++mem_w; _n_emit(&mem, SAVE); + + op_y = (c3y == los_o) ? SLIB : SKIB; // overflows to SLIS / SKIS + u3z_cid cid = u3z_memo_toss; + { + u3_weak con = u3r_skip(hod); + if ( (u3_none != con) && (c3y == u3du(con)) ) { + cid = u3z_memo_keep; + } + } + ++tot_w; _n_emit(ops, u3nq(op_y, cid, mem_w, u3k(nef))); + tot_w += mem_w; _n_apen(ops, mem); + break; + } + } + } + + return tot_w; +} + +static c3_t +_n_formulaic(u3_noun fol) +{ + u3_noun op, ar, a, b, c; + if ( c3n == u3r_cell(fol, &op, &ar) ) { + return 0; + } + if ( c3y == u3du(op) ) { + return _n_formulaic(op) && _n_formulaic(ar); + } + else switch ( op ) { + case 0: + return ( c3y == u3ud(ar) ); + case 1: + return 1; + case 3: + case 4: + return _n_formulaic(ar); + case 2: + case 5: + case 7: + case 8: + case 12: + return (c3y == u3r_cell(ar, &a, &b)) + && _n_formulaic(a) && _n_formulaic(b); + case 6: { + u3_noun lit; + + if ( c3n == u3r_trel(ar, &a, &b, &c) || !_n_formulaic(a) ) { + return 0; + } + + if ( c3n == u3r_safe(a, &lit) || u3_none == lit ) { + return _n_formulaic(b) || _n_formulaic(c); + } + + switch (lit) { + case 0: return _n_formulaic(b); + case 1: return _n_formulaic(c); + default: return 0; + } + } + case 9: + return (c3y == u3r_cell(ar, &a, &b)) + && (c3y == u3ud(a)) + && _n_formulaic(b); + case 10: + if ( c3n == u3r_cell(ar, &a, &b) ) { + return 0; + } + if ( c3n == u3du(a) ) { + return 0; + } + if ( c3n == u3ud(u3h(a)) ) { + return 0; + } + return _n_formulaic(u3t(a)) && _n_formulaic(b); + case 11: + if ( c3n == u3r_cell(ar, &a, &b) ) { + return 0; + } + if ( !_n_formulaic(b) ) { + return 0; + } + if ( c3y == u3ud(a) ) { + return 1; + } + else { + return ( c3y == u3ud(u3h(a)) ) && _n_formulaic(u3t(a)); + } + default: + return 0; + } +} + +/* _n_comp(): compile nock formula to reversed opcode list + * ops is a pointer to a list (to be emitted to) + * fol is the nock formula to compile. RETAIN. + * los_o indicates whether we should remove our + * subject from the stack + * tel_o is yes if this formula is in tail position + * return: number of instructions added to the opcode list + */ +static c3_w +_n_comp(u3_noun* ops, u3_noun fol, c3_o los_o, c3_o tel_o) +{ + c3_y op_y; + c3_w tot_w = 0; + u3_noun cod, arg, hed, tel; + u3x_cell(fol, &cod, &arg); + if ( c3y == u3du(cod) ) { + tot_w += _n_comp(ops, cod, c3n, c3n); + ++tot_w; _n_emit(ops, SWAP); + tot_w += _n_comp(ops, arg, los_o, c3n); + ++tot_w; _n_emit(ops, (c3y == los_o ) ? AULT : AUTO); + } + else switch ( cod ) { + case 0: + if ( c3n == u3ud(arg) ) { + u3m_bail(c3__exit); + return 0; + } + switch ( arg ) { + case 0: + ++tot_w; _n_emit(ops, BAIL); + break; + case 1: + if ( c3n == los_o ) { + ++tot_w; _n_emit(ops, COPY); + } + break; + case 2: + ++tot_w; _n_emit(ops, (c3y == los_o) ? HELD : HEAD); + break; + case 3: + ++tot_w; _n_emit(ops, (c3y == los_o) ? TALL : TAIL); + break; + default: + op_y = (c3y == los_o) + ? (arg <= 0xFF ? FABL : arg <= 0xFFFF ? FASL : FIBL) // overflows to FISL + : (arg <= 0xFF ? FABK : arg <= 0xFFFF ? FASK : FIBK); // overflows to FISK + ++tot_w; _n_emit(ops, u3nc(op_y, u3k(arg))); + break; + } + break; + + case 1: + switch ( arg ) { + case 0: + ++tot_w; _n_emit(ops, (c3y == los_o) ? LIL0 : LIT0); + break; + case 1: + ++tot_w; _n_emit(ops, (c3y == los_o) ? LIL1 : LIT1); + break; + default: + op_y = (c3y == los_o) + ? (arg <= 0xFF ? LILB : arg <= 0xFFFF ? LILS : LIBL) // overflows to LISL + : (arg <= 0xFF ? LITB : arg <= 0xFFFF ? LITS : LIBK); // overflows to LISK + ++tot_w; _n_emit(ops, u3nc(op_y, u3k(arg))); + break; + } + break; + + case 2: + u3x_cell(arg, &hed, &tel); + tot_w += _n_comp(ops, hed, c3n, c3n); + ++tot_w; _n_emit(ops, SWAP); + tot_w += _n_comp(ops, tel, los_o, c3n); + /* things in tail position replace (so, lose) top of stack, + * so NOCT "loses" and there is no non-losing version */ + op_y = (c3y == tel_o) ? NOCT + : ((c3y == los_o) ? NOLK : NOCK); + ++tot_w; _n_emit(ops, op_y); + break; + + case 3: + tot_w += _n_comp(ops, arg, los_o, c3n); + ++tot_w; _n_emit(ops, DEEP); + break; + + case 4: + tot_w += _n_comp(ops, arg, los_o, c3n); + ++tot_w; _n_emit(ops, BUMP); + break; + + case 5: { + u3x_cell(arg, &hed, &tel); + + if ( c3n == u3du(hed) ) { + u3m_bail(c3__exit); + return 0; + } + else { + c3_t hec_t, tec_t; + hec_t = (1 == u3h(hed)); + if ( c3n == u3du(tel) ) { + u3m_bail(c3__exit); + break; + } + else { + tec_t = (1 == u3h(tel)); + } + if ( hec_t && tec_t ) { + if ( c3y == u3r_sing(u3t(hed), u3t(tel)) ) { + ++tot_w; _n_emit(ops, (c3y == los_o) ? LIL0 : LIT0); + } + else { + ++tot_w; _n_emit(ops, (c3y == los_o) ? LIL1 : LIT1); + } + } + else if ( !hec_t && !tec_t ) { + tot_w += _n_comp(ops, hed, c3n, c3n); + ++tot_w; _n_emit(ops, SWAP); + tot_w += _n_comp(ops, tel, los_o, c3n); + ++tot_w; _n_emit(ops, (c3y == los_o) ? SALM : SAME); + } + else { + tot_w += _n_comp(ops, (hec_t ? tel : hed), los_o, c3n); + u3_noun lit = u3t(hec_t ? hed : tel); + switch ( lit ) { + case 0: + ++tot_w; _n_emit(ops, SAM0); + break; + case 1: + ++tot_w; _n_emit(ops, SAM1); + break; + default: + // overflows to SANS + op_y = lit <= 0xFF ? SAMB : lit <= 0xFFFF ? SAMS : SANB; + ++tot_w; _n_emit(ops, u3nc(op_y, u3k(lit))); + } + } + } + break; + } + + case 6: { + u3_noun mid, lit; + u3x_trel(arg, &hed, &mid, &tel); + if ( c3y == u3r_safe(hed, &lit) && u3_none != lit ) { + switch ( lit ) { + case 0: + tot_w += _n_comp(ops, mid, los_o, tel_o); + break; + + case 1: + tot_w += _n_comp(ops, tel, los_o, tel_o); + break; + + default: + ++tot_w; _n_emit(ops, BAIL); + break; + } + } + else { + u3_noun yep = u3_nul, + nop = u3_nul; + c3_w yep_w, nop_w; + c3_t yep_t, nop_t; + + tot_w += _n_comp(ops, hed, c3n, c3n); + yep_t = _n_formulaic(mid); + nop_t = _n_formulaic(tel); + + if ( !yep_t && !nop_t ) { + u3m_bail(c3__exit); + break; + } + + if ( yep_t ) { + yep_w = _n_comp(&yep, mid, los_o, tel_o); + } + else { + yep_w = 1; _n_emit(&yep, BAIL); + } + + if ( nop_t ) { + nop_w = _n_comp(&nop, tel, los_o, tel_o); + } + else { + nop_w = 1; _n_emit(&nop, BAIL); + } + + // SBIP and SBIN get sized during assembly + ++yep_w; _n_emit(&yep, u3nc(SBIP, nop_w)); + ++tot_w; _n_emit(ops, u3nc(SBIN, yep_w)); + tot_w += yep_w; _n_apen(ops, yep); + tot_w += nop_w; _n_apen(ops, nop); + } + break; + } + + case 7: + u3x_cell(arg, &hed, &tel); + tot_w += _n_comp(ops, hed, los_o, c3n); + tot_w += _n_comp(ops, tel, c3y, tel_o); + break; + + case 8: + u3x_cell(arg, &hed, &tel); + tot_w += _n_comp(ops, hed, c3n, c3n); + ++tot_w; _n_emit(ops, (c3y == los_o) ? SNOL : SNOC); + tot_w += _n_comp(ops, tel, c3y, tel_o); + break; + + case 9: + u3x_cell(arg, &hed, &tel); + if ( (1 == hed) || (3 == u3qc_cap(u3x_atom(hed))) ) { + u3_noun mac = u3nq(7, u3k(tel), 2, u3nt(u3nc(0, 1), 0, u3k(hed))); + tot_w += _n_comp(ops, mac, los_o, tel_o); + u3z(mac); + } + else { + tot_w += _n_comp(ops, tel, (c3y == tel_o ? c3y : los_o), c3n); + op_y = (c3y == tel_o) ? TICB : KICB; // overflows to TICS/KICS + ++tot_w; _n_emit(ops, u3nc(op_y, u3k(hed))); + } + break; + + case 10: { + u3_noun axe, nef; + u3x_cell(arg, &hed, &tel); + u3x_cell(hed, &axe, &nef); + tot_w += _n_comp(ops, tel, c3n, c3n); + ++tot_w; _n_emit(ops, SWAP); + tot_w += _n_comp(ops, nef, los_o, c3n); + + ++tot_w; + switch ( axe ) { + case 2: + _n_emit(ops, (c3y == los_o) ? MUTH : KUTH); + break; + + case 3: + _n_emit(ops, (c3y == los_o) ? MUTT : KUTT); + break; + + case u3x_sam: + _n_emit(ops, (c3y == los_o) ? MUSM : KUSM); + break; + + default: + op_y = (c3y == los_o) + ? (axe <= 0xFF) ? MUTB : (axe <= 0xFFFF) ? MUTS : MITB // overflows to MITS + : (axe <= 0xFF) ? KUTB : (axe <= 0xFFFF) ? KUTS : KITB; // overflows to KITS + _n_emit(ops, u3nc(op_y, u3k(axe))); + break; + } + break; + } + + case 11: + u3x_cell(arg, &hed, &tel); + tot_w += _n_bint(ops, hed, tel, los_o, tel_o); + break; + + case 12: + u3x_cell(arg, &hed, &tel); + tot_w += _n_comp(ops, hed, c3n, c3n); + ++tot_w; _n_emit(ops, SWAP); + tot_w += _n_comp(ops, tel, los_o, c3n); + ++tot_w; _n_emit(ops, (c3y == los_o) ? WILS : WISH); + break; + + default: + u3m_bail(c3__exit); + return 0; + } + return tot_w; +} + +/* _n_push(): push a noun onto the stack. RETAIN + * mov: -1 north, 1 south + * off: 0 north, -1 south + */ +static inline void +_n_push(c3_ys mov, c3_ys off, u3_noun a) +{ + u3R->cap_p += mov; + + // XX switch to u3a_push() + // +#ifndef U3_GUARD_PAGE + if ( 0 == off ) { + if( !(u3R->cap_p > u3R->hat_p) ) { + u3m_bail(c3__meme); + } + } + else { + if( !(u3R->cap_p < u3R->hat_p) ) { + u3m_bail(c3__meme); + } + } +#endif + + u3_noun* p = u3to(u3_noun, u3R->cap_p + off); + *p = a; +} + +/* _n_peek(): pointer to noun at top of stack + * off: 0 north, -1 south + */ +static inline u3_noun* +_n_peek(c3_ys off) +{ + return u3to(u3_noun, u3R->cap_p + off); +} + +/* _n_peet(): address of the next-to-top of stack + * mov: -1 north, 1 south + * off: 0 north, -1 south + */ +static inline u3_noun* +_n_peet(c3_ys mov, c3_ys off) +{ + return u3to(u3_noun, (u3R->cap_p - mov) + off); +} + +/* _n_pop(): pop a noun from the cap stack + * mov: -1 north, 1 south + */ +static inline void +_n_pop(c3_ys mov) +{ + u3R->cap_p -= mov; +} + +/* _n_pep(): pop and return noun from the cap stack + * mov: -1 north, 1 south + * off: 0 north, -1 south + */ +static inline u3_noun +_n_pep(c3_ys mov, c3_ys off) +{ + u3_noun r = *(_n_peek(off)); + _n_pop(mov); + return r; +} + +/* _n_toss(): pep and lose + */ +static inline void +_n_toss(c3_ys mov, c3_ys off) +{ + u3z(_n_pep(mov, off)); +} + +/* _n_resh(): read a c3_s from the bytecode stream + */ +static inline c3_s +_n_resh(c3_y* buf, c3_w* ip_w) +{ + c3_y les = buf[(*ip_w)++]; + c3_y mos = buf[(*ip_w)++]; + return les | (mos << 8); +} + +/* _n_rewo(): read a c3_w from the bytecode stream. + */ +static inline c3_w +_n_rewo(c3_y* buf, c3_w* ip_w) +{ + c3_y one = buf[(*ip_w)++], + two = buf[(*ip_w)++], + tre = buf[(*ip_w)++], + qua = buf[(*ip_w)++]; + return one | (two << 8) | (tre << 16) | (qua << 24); +} + +/* _n_swap(): swap two items on the top of the stack, return pointer to top + */ +static inline u3_noun* +_n_swap(c3_ys mov, c3_ys off) +{ + u3_noun* top = _n_peek(off); + u3_noun* up = _n_peet(mov, off); + u3_noun tmp = *up; + *up = *top; + *top = tmp; + return top; +} + +#ifdef VERBOSE_BYTECODE +/* _n_print_byc(): print bytecode. used for debugging. + */ +static void +_n_print_byc(c3_y* pog, c3_w her_w) +{ + c3_w ip_w = 0; + if ( her_w == 0 ) { + fprintf(stderr, "begin: {"); + } + else { + fprintf(stderr, "resume: {"); + } + int first = 1; + while ( pog[ip_w] ) { + if ( first ) { + first = 0; + } + else if (ip_w == her_w) { + fprintf(stderr, " [*]"); + } + else { + fprintf(stderr, " "); + } + switch ( _n_arg(pog[ip_w]) ) { + case 0: + fprintf(stderr, "%s", opcode_names[pog[ip_w++]]); + break; + + case 1: + fprintf(stderr, "[%s ", opcode_names[pog[ip_w++]]); + fprintf(stderr, "%u]", pog[ip_w++]); + break; + + case 2: + fprintf(stderr, "[%s ", opcode_names[pog[ip_w++]]); + fprintf(stderr, "%u]", _n_resh(pog, &ip_w)); + break; + + case 4: + fprintf(stderr, "[%s", opcode_names[pog[ip_w++]]); + fprintf(stderr, "%u]", _n_rewo(pog, &ip_w)); + break; + default: + u3_assert(0); + break; + } + } + fprintf(stderr, " halt}\r\n"); +} +#endif + +/* _n_bite(): compile a nock formula to bytecode. RETAIN. + */ +static inline u3n_prog* +_n_bite(u3_noun fol) { + u3_noun ops = u3_nul; + _n_comp(&ops, fol, c3y, c3y); + return _n_prog_from_ops(ops); +} + +static inline c3_w +_cn_of_prog(u3n_prog *pog_u) +{ + u3_post pog_p = u3of(u3n_prog, pog_u); + return pog_p >> u3a_vits; +} + +static inline u3n_prog* +_cn_to_prog(c3_w pog_w) +{ + u3_post pog_p = pog_w << u3a_vits; + return u3to(u3n_prog, pog_p); +} + +/* _n_find(): return prog for given formula with prefix (u3_nul for none). + * RETAIN. + */ +static u3n_prog* +_n_find(u3_noun pre, u3_noun fol) +{ + u3_noun key = u3nc(u3k(pre), u3k(fol)); + u3_weak pog = u3h_git(u3R->byc.har_p, key); + if ( u3_none != pog ) { + u3z(key); + return _cn_to_prog(pog); + } + else if ( u3R != &u3H->rod_u ) { + u3a_road* rod_u = u3R; + while ( rod_u->par_p ) { + rod_u = u3to(u3a_road, rod_u->par_p); + pog = u3h_git(rod_u->byc.har_p, key); + if ( u3_none != pog ) { + c3_w i_w; + u3n_prog* old = _n_prog_old(_cn_to_prog(pog)); + for ( i_w = 0; i_w < old->reg_u.len_w; ++i_w ) { + u3j_rite* rit_u = &(old->reg_u.rit_u[i_w]); + rit_u->own_o = c3n; + } + for ( i_w = 0; i_w < old->cal_u.len_w; ++i_w ) { + u3j_site* sit_u = &(old->cal_u.sit_u[i_w]); + sit_u->bat = u3_none; + sit_u->pog_p = 0; + sit_u->fon_o = c3n; + } + u3h_put(u3R->byc.har_p, key, _cn_of_prog(old)); + u3z(key); + return old; + } + } + } + + { + u3n_prog* gop = _n_bite(fol); + u3h_put(u3R->byc.har_p, key, _cn_of_prog(gop)); + u3z(key); + return gop; + } +} + +/* u3n_find(): return prog for given formula, + * split by key (u3_nul for no key). RETAIN. + */ +u3p(u3n_prog) +u3n_find(u3_noun key, u3_noun fol) +{ + u3p(u3n_prog) pog_p; + u3t_on(noc_o); + pog_p = u3of(u3n_prog, _n_find(key, fol)); + u3t_off(noc_o); + return pog_p; +} + +/* _cn_prog_free(): free memory retained by program pog_u +*/ +static void +_cn_prog_free(u3n_prog* pog_u) +{ + c3_w dex_w; + for (dex_w = 0; dex_w < pog_u->lit_u.len_w; ++dex_w) { + u3z(pog_u->lit_u.non[dex_w]); + } + for (dex_w = 0; dex_w < pog_u->mem_u.len_w; ++dex_w) { + u3z(pog_u->mem_u.sot_u[dex_w].key); + } + for (dex_w = 0; dex_w < pog_u->cal_u.len_w; ++dex_w) { + u3j_site_lose(&(pog_u->cal_u.sit_u[dex_w])); + } + for (dex_w = 0; dex_w < pog_u->reg_u.len_w; ++dex_w) { + u3j_rite_lose(&(pog_u->reg_u.rit_u[dex_w])); + } + u3a_free(pog_u); +} + +/* _cn_intlen(): find the number of characters num_w would take to print. +** num_w: an int we want to later serialize to a string +*/ +c3_w +_cn_intlen(c3_w num_w) +{ + c3_w len_w=0; + while(num_w){ + num_w/=10; + len_w++; + } + return len_w; +} + +/* _cn_is_indexed(): return true if bop_w is an opcodes that uses pog_u->lit_u.non +** bop_w: opcode (assumed 0-94) +*/ +c3_b +_cn_is_indexed(c3_w bop_w) +{ + switch (bop_w) { + case FIBK: case FISK: + case FIBL: case FISL: + case LIBK: case LISK: + case LIBL: case LISL: + case BUSH: case SUSH: + case SANB: case SANS: + case KITB: case KITS: + case MITB: case MITS: + case HILB: case HILS: + case HINB: case HINS: + return 1; + default: + return 0; + } +} + +/* _cn_pog_to_num(): read a bytecode from the steam and advance the index +** par_w: c3_w: can be 0, 2, 4 +** pog_y: c3_y*: a bytecode stream +** ip_w: c3_w: an index into pog +*/ +#define _cn_pog_to_num(par_w, pog_y, ip_w) (\ + par_w == 4 ? _n_rewo(pog_y, &ip_w): \ + par_w == 2 ? _n_resh(pog_y, &ip_w): \ + pog_y[ip_w++]) + +/* _cn_etch_bytecode(): render a nock program as string of bytecodes +** fol: a nock formula to compile and render +** returns: a u3i_string noun of the rendered bytecode +*/ +u3_noun +_cn_etch_bytecode(u3_noun fol) { + u3n_prog* pog_u = _n_bite(fol); + c3_y* pog_y = pog_u->byc_u.ops_y; + c3_w len_w = pog_u->byc_u.len_w; + c3_w ip_w=0, num_w=0, bop_w=0, dex_w=0; + c3_w len_c = 2; // closing "}", null terminator + // set par_w (parameter flag) to an invalid value, + // so we can break imeadately if needed + c3_w par_w = 5; + // lets count the chars in this string + while ( ip_w < len_w ) { + par_w = _n_arg(pog_y[ip_w]); + bop_w = pog_y[ip_w++]; // move ip_w for reading a opcode name + dex_w = _cn_is_indexed(bop_w); // is this an indexed bytecode argument + len_c += 5; // a leading space, and opcode name + if (par_w > 0) { // if pair: "[bytecode arg]" else "bytecode" + len_c += 3; // "[", space between opcode & arg, "]" + if ( dex_w ) len_c += 2; // 'i:' + len_c += _cn_intlen( // length of the bytecode argument + _cn_pog_to_num(par_w, pog_y, ip_w) + ); + } + } + // reset so we can loop again + ip_w=0, num_w=0, bop_w=0, dex_w=0, par_w=5; + // init our string, and give it a trailing null + c3_c str_c[len_c]; + str_c[0] = 0; + // lets print this string + while ( ip_w < len_w ) { + par_w = _n_arg(pog_y[ip_w]); + bop_w = pog_y[ip_w++]; // move ip_w for reading a opcode name + dex_w = _cn_is_indexed(bop_w); // is this an indexed bytecode argument + strcat(str_c, " "); // leading space + if (par_w > 0) strcat(str_c, "["); // add "[" if the opcode pairs + strncat(str_c, opcode_names[bop_w], 4); // add the opcode name + if (par_w > 0) { // finish the pair + strcat(str_c, " "); // add the space between byt and arg + if ( dex_w ) strcat(str_c, "i:"); // indexed args are labeled as "index of arg" + num_w = _cn_pog_to_num(par_w, pog_y, ip_w); // the bytecode argument + if (num_w == 0) { // + strcat(str_c, "0"); // handle a literal zero + } // + else { // + c3_w x = 0; // + for (x = _cn_intlen(num_w); x > 0; x--) { // + strcat(str_c, "_"); // prefill the buffer + } // + c3_w f = strlen(str_c)-1; // get the index of the last prefill + while (num_w > 0) { // stringify number in LSB order + str_c[f--] = (num_w%10)+'0'; // .. stringify the tail of num into tail of buf + num_w /= 10; // .. turncate num by one digit + } // + } // + strcat(str_c, "]"); // add the closing brace + } + } + // replace the first leading space and append the last char to the string + str_c[0] = '{'; + strcat(str_c, "}"); + _cn_prog_free(pog_u); + return u3i_string(str_c); +} + + +/* _n_hilt_fore(): literal (atomic) dynamic hint, before formula evaluation. +** hin: [hint-atom, formula]. TRANSFER +** bus: subject. RETAIN +** out: token for _n_hilt_hind(); convention: +** [hint-atom] or [hint-atom data], ~ if unused. +** +** any hints herein must be whitelisted in _n_burn(). +*/ +static c3_o +_n_hilt_fore(u3_noun hin, u3_noun bus, u3_noun* out) +{ + u3_noun tag, fol; + u3x_cell(hin, &tag, &fol); + + switch ( tag ) { + case c3__cash: { + u3_atom har = u3i_word(u3h_count(u3R->cax.har_p)); + u3h_discount(u3R->cax.har_p); + u3_atom per = u3i_word(u3h_count(u3R->cax.per_p)); + u3h_discount(u3R->cax.per_p); + *out = u3i_cell(tag, u3i_cell(har, per)); + } break; + + case c3__bout: { + u3_atom now = u3i_chub(u3t_trace_time()); + *out = u3i_cell(tag, now); + } break; + + case c3__nara : { + u3t_slog_nara(0); + *out = u3_nul; + } break; + + case c3__hela : { + u3t_slog_hela(0); + *out = u3_nul; + } break; + + case c3__xray : { + u3t_slog(u3nc(0, _cn_etch_bytecode(fol))); + *out = u3_nul; + } break; + + case c3__meme : { + u3t_slog(u3nc(0, u3t_etch_meme(0))); + *out = u3_nul; + } break; + + default: { + *out = u3_nul; + } break; + } + + u3z(hin); + return c3y; +} + +/* _n_hilt_hind(): literal (atomic) dynamic hint, after formula evaluation. +** tok: token from _n_hilt_fore(). TRANSFER +** pro: product of formula evaluation. RETAIN +*/ +static void +_n_hilt_hind(u3_noun tok, u3_noun pro) +{ + u3_noun p_tok, q_tok, r_tok; + if ( (c3y == u3r_cell(tok, &p_tok, &q_tok)) && (c3__bout == p_tok) ) { + u3_atom delta = u3ka_sub(u3i_chub(u3t_trace_time()), u3k(q_tok)); + c3_c str_c[64]; + u3a_print_time(str_c, "took", u3r_chub(0, delta)); + u3t_slog(u3nc(0, u3i_string(str_c))); + u3z(delta); + } + else if ( (c3y == u3r_trel(tok, &p_tok, &q_tok, &r_tok)) && + (c3__cash == p_tok) ) { + c3_c str_c[4096]; + + u3_atom har = u3i_word(u3h_count(u3R->cax.har_p)); + u3h_discount(u3R->cax.har_p); + u3_atom har_delta = u3ka_sub(har, u3k(q_tok)); + u3a_print_memory_str(str_c, "ephemeral cache", + u3r_word(0, har_delta)); + u3t_slog(u3nc(0, u3i_string(str_c))); + + u3_atom per = u3i_word(u3h_count(u3R->cax.per_p)); + u3h_discount(u3R->cax.per_p); + u3_atom per_delta = u3ka_sub(per, u3k(r_tok)); + u3a_print_memory_str(str_c, "persistent cache", + u3r_word(0, per_delta)); + u3t_slog(u3nc(0, u3i_string(str_c))); + + u3z(har_delta); + u3z(per_delta); + } + else { + u3_assert( u3_nul == tok ); + } + + u3z(tok); +} + +/* _n_hint_fore(): arbitrary dynamic hint, before formula evaluation +** hin: [hint-atom, formula]. TRANSFER +** bus: subject. RETAIN +** clu: product of the hint-formula. TRANSFER +** also, token for _n_hilt_hind(); convention: +** [hint-atom] or [hint-atom data], ~ if unused. +** +** any hints herein must be whitelisted in _n_burn(). +*/ +static c3_o +_n_hint_fore(u3_cell hin, u3_noun bus, u3_noun* clu) +{ + u3_noun tag, fol; + u3x_cell(hin, &tag, &fol); + + switch ( tag ) { + case c3__bout: { + u3_atom now = u3i_chub(u3t_trace_time()); + *clu = u3nt(u3k(tag), *clu, now); + } break; + + case c3__spin: { + u3t_sstack_push(*clu); + *clu = c3__spin; + } break; + + case c3__nara: { + u3_noun pri, tan; + if ( c3y == u3r_cell(*clu, &pri, &tan) ) { + c3_l pri_l = c3y == u3a_is_cat(pri) ? pri : 0; + u3t_slog_cap(pri_l, u3i_string("trace of"), u3k(tan)); + u3t_slog_nara(pri_l); + } + u3z(*clu); + *clu = u3_nul; + } break; + + case c3__hela: { + u3_noun pri, tan; + if ( c3y == u3r_cell(*clu, &pri, &tan) ) { + c3_l pri_l = c3y == u3a_is_cat(pri) ? pri : 0; + u3t_slog_cap(pri_l, u3i_string("trace of"), u3k(tan)); + u3t_slog_hela(pri_l); + } + u3z(*clu); + *clu = u3_nul; + } break; + + case c3__xray : { + u3_noun pri, tan; + if ( c3y == u3r_cell(*clu, &pri, &tan) ) { + c3_l pri_l = c3y == u3a_is_cat(pri) ? pri : 0; + u3t_slog_cap(pri_l, u3k(tan), _cn_etch_bytecode(fol)); + } + u3z(*clu); + *clu = u3_nul; + } break; + + case c3__meme : { + u3_noun pri, tan; + if ( c3y == u3r_cell(*clu, &pri, &tan) ) { + c3_l mod_l = c3y == u3a_is_cat(pri) ? pri : 0; + // replace with better str fmt + u3t_slog_cap(1, u3k(tan), u3t_etch_meme(mod_l)); + } + u3z(*clu); + *clu = u3_nul; + } break; + + default: { + u3z(*clu); + *clu = u3_nul; + } break; + } + + u3z(hin); + return c3y; +} + +/* _n_hint_hind(): arbitrary dynamic hint, after formula evaluation. +** tok: token from _n_hint_fore(). TRANSFER +** pro: product of formula evaluation. RETAIN +*/ +static void +_n_hint_hind(u3_noun tok, u3_noun pro) +{ + u3_noun p_tok, q_tok, r_tok; + if ( c3__spin == tok ) { + u3t_sstack_pop(); + } + else if ( (c3y == u3r_trel(tok, &p_tok, &q_tok, &r_tok)) && (c3__bout == p_tok) ) { + // get the microseconds elapsed + u3_atom delta = u3ka_sub(u3i_chub(u3t_trace_time()), u3k(r_tok)); + + // unpack q_tok to get the priority integer and the tank + // p_q_tok is the priority, q_q_tok is the tank we will work with + u3_noun p_q_tok, q_q_tok; + u3_assert(c3y == u3r_cell(q_tok, &p_q_tok, &q_q_tok)); + + // format the timing report + c3_c str_c[64]; + u3a_print_time(str_c, "took", u3r_chub(0, delta)); + + // join the timing report with the original tank from q_q_tok like so: + // "q_q_tok: report" + // prepend the priority to form a cell of the same shape q_tok + // send this to ut3_slog so that it can be logged out + c3_l pri_l = c3y == u3a_is_cat(p_q_tok) ? p_q_tok : 0; + u3t_slog_cap(pri_l, u3k(q_q_tok), u3i_string(str_c)); + u3z(delta); + } + else { + u3_assert( u3_nul == tok ); + } + + u3z(tok); +} + +/* _n_kick(): stop tracing noc and kick a u3j_site. + */ +static u3_weak +_n_kick(u3_noun cor, u3j_site* sit_u) +{ + u3_weak pro; + u3t_off(noc_o); + pro = u3j_site_kick(cor, sit_u); + u3t_on(noc_o); + return pro; +} + +/* _n_kale(): bail(exit) if not cell + */ +static inline u3_noun +_n_kale(u3_noun a) +{ + if ( c3n == u3du(a) ) { + u3m_bail(c3__exit); + } + return a; +} + +typedef struct __attribute__((__packed__)) { + u3n_prog* pog_u; + c3_w ip_w; +} burnframe; + +/* _n_burn(): pog: program + * bus: subject (TRANSFER) + * mov: -1 north, 1 south + * off: 0 north, -1 south + */ +static u3_noun +_n_burn(u3n_prog* pog_u, u3_noun bus, c3_ys mov, c3_ys off) +{ + + // Opcode jump table. Define X to select the opcode computed goto from + // OPCODES. +# define X(opcode, name, indirect_jump) indirect_jump + static void* lab[] = { OPCODES }; +# undef X + + u3j_site* sit_u; + u3j_rite* rit_u; + u3n_memo* mem_u; + c3_y *pog = pog_u->byc_u.ops_y; + c3_w sip_w, ip_w = 0; + u3_noun* top; + u3_noun x, o; + u3p(void) empty; + burnframe* fam; + + empty = u3R->cap_p; + _n_push(mov, off, bus); + +#ifdef U3_CPU_DEBUG + u3R->pro.nox_d += 1; +#endif +#ifdef VERBOSE_BYTECODE + #define BURN() fprintf(stderr, "%s ", opcode_names[pog[ip_w]]); goto *lab[pog[ip_w++]] +#else + #define BURN() goto *lab[pog[ip_w++]] +#endif + BURN(); + { + do_halt: // [product ...burnframes...] + x = _n_pep(mov, off); +#ifdef VERBOSE_BYTECODE + fprintf(stderr, "return\r\n"); +#endif + if ( empty == u3R->cap_p ) { + return x; + } + else { + fam = u3to(burnframe, u3R->cap_p) + off; + pog_u = fam->pog_u; + pog = pog_u->byc_u.ops_y; + ip_w = fam->ip_w; + + u3R->cap_p = u3of(burnframe, fam - (mov+off)); + _n_push(mov, off, x); +#ifdef VERBOSE_BYTECODE + _n_print_byc(pog, ip_w); +#endif + BURN(); + } + + do_bail: + u3m_bail(c3__exit); + return u3_none; + + do_copy: + top = _n_peek(off); + _n_push(mov, off, u3k(*top)); + BURN(); + + do_swap: + _n_swap(mov, off); + BURN(); + + do_toss: + _n_toss(mov, off); + BURN(); + + do_auto: // [tel bus hed] + x = _n_pep(mov, off); // [bus hed] + top = _n_swap(mov, off); // [hed bus] + *top = u3nc(*top, x); // [pro bus] + BURN(); + + do_ault: // [tel hed] + x = _n_pep(mov, off); // [hed] + top = _n_peek(off); + *top = u3nc(*top, x); // [pro] + BURN(); + + do_snoc: // [hed tel] + x = _n_pep(mov, off); + top = _n_peek(off); + _n_push(mov, off, u3nc(x, u3k(*top))); + BURN(); + + do_snol: + x = _n_pep(mov, off); + top = _n_peek(off); + *top = u3nc(x, *top); + BURN(); + + do_head: + top = _n_peek(off); + _n_push(mov, off, u3k(u3h(_n_kale(*top)))); + BURN(); + + do_held: + top = _n_peek(off); + o = _n_kale(*top); + *top = u3k(u3h(o)); + u3z(o); + BURN(); + + do_tail: + top = _n_peek(off); + _n_push(mov, off, u3k(u3t(_n_kale(*top)))); + BURN(); + + do_tall: + top = _n_peek(off); + o = _n_kale(*top); + *top = u3k(u3t(o)); + u3z(o); + BURN(); + + do_fisk: + x = pog_u->lit_u.non[_n_resh(pog, &ip_w)]; + goto frag_in; + + do_fibk: + x = pog_u->lit_u.non[pog[ip_w++]]; + goto frag_in; + + do_fask: + x = _n_resh(pog, &ip_w); + goto frag_in; + + do_fabk: + x = pog[ip_w++]; + frag_in: + top = _n_peek(off); + _n_push(mov, off, u3k(u3x_at(x, *top))); + BURN(); + + do_fisl: + x = pog_u->lit_u.non[_n_resh(pog, &ip_w)]; + goto flag_in; + + do_fibl: + x = pog_u->lit_u.non[pog[ip_w++]]; + goto flag_in; + + do_fasl: + x = _n_resh(pog, &ip_w); + goto flag_in; + + do_fabl: + x = pog[ip_w++]; + flag_in: + top = _n_peek(off); + o = *top; + *top = u3k(u3x_at(x, o)); + u3z(o); + BURN(); + + do_lit0: + _n_push(mov, off, 0); + BURN(); + + do_lit1: + _n_push(mov, off, 1); + BURN(); + + do_litb: + _n_push(mov, off, pog[ip_w++]); + BURN(); + + do_lits: + _n_push(mov, off, _n_resh(pog, &ip_w)); + BURN(); + + do_libk: + _n_push(mov, off, u3k(pog_u->lit_u.non[pog[ip_w++]])); + BURN(); + + do_lisk: + _n_push(mov, off, u3k(pog_u->lit_u.non[_n_resh(pog, &ip_w)])); + BURN(); + + do_lil1: + x = 1; + goto lil_in; + + do_lilb: + x = pog[ip_w++]; + goto lil_in; + + do_lils: + x = _n_resh(pog, &ip_w); + goto lil_in; + + do_libl: + x = u3k(pog_u->lit_u.non[pog[ip_w++]]); + goto lil_in; + + do_lisl: + x = u3k(pog_u->lit_u.non[_n_resh(pog, &ip_w)]); + goto lil_in; + + do_lil0: + x = 0; + lil_in: + top = _n_peek(off); + u3z(*top); + *top = x; + BURN(); + + do_noct: // [fol bus] + o = _n_pep(mov, off); // [bus] + goto nock_out; + + do_nolk: // [fol bus] + o = _n_pep(mov, off); // [bus] + goto nock_in; + + do_nock: // [fol old bus] + o = _n_pep(mov, off); // [old bus] + _n_swap(mov, off); // [bus old] + nock_in: + x = _n_pep(mov, off); + fam = u3to(burnframe, u3R->cap_p) + off + mov; + u3R->cap_p = u3of(burnframe, fam - off); + fam->ip_w = ip_w; + fam->pog_u = pog_u; + _n_push(mov, off, x); + nock_out: + pog_u = _n_find(u3_nul, o); + pog = pog_u->byc_u.ops_y; + ip_w = 0; +#ifdef U3_CPU_DEBUG + u3R->pro.nox_d += 1; +#endif +#ifdef VERBOSE_BYTECODE + fprintf(stderr, "\r\nnock jump: %u\r\n", o); + _n_print_byc(pog, ip_w); +#endif + u3z(o); + BURN(); + + do_deep: + top = _n_peek(off); + o = *top; + *top = u3du(o); + u3z(o); + BURN(); + + do_bump: + top = _n_peek(off); + *top = u3i_vint(*top); + BURN(); + + do_sam0: + top = _n_peek(off); + if ( *top == 0 ) { + *top = c3y; + } + else { + u3z(*top); + *top = c3n; + } + BURN(); + + do_sam1: + top = _n_peek(off); + if ( *top == 1 ) { + *top = c3y; + } + else { + u3z(*top); + *top = c3n; + } + BURN(); + + do_samb: + top = _n_peek(off); + if ( *top == pog[ip_w++] ) { + *top = c3y; + } + else { + u3z(*top); + *top = c3n; + } + BURN(); + + do_sams: + top = _n_peek(off); + if ( *top == _n_resh(pog, &ip_w) ) { + *top = c3y; + } + else { + u3z(*top); + *top = c3n; + } + BURN(); + + do_sans: + x = pog_u->lit_u.non[_n_resh(pog, &ip_w)]; + goto samn_in; + do_sanb: + x = pog_u->lit_u.non[pog[ip_w++]]; + samn_in: + top = _n_peek(off); + o = *top; + *top = u3r_sing(o, x); + u3z(o); + BURN(); + + do_same: + x = _n_pep(mov, off); + _n_swap(mov, off); + goto same_in; + + do_salm: + x = _n_pep(mov, off); + goto same_in; + + same_in: + top = _n_peek(off); + o = *top; + *top = u3r_sing(x, o); + u3z(o); + u3z(x); + BURN(); + + do_samc: + top = _n_peek(off); + o = *top; + *top = u3r_sing(u3h(o), u3t(o)); + u3z(o); + BURN(); + + do_sbip: + sip_w = pog[ip_w++]; + ip_w += sip_w; + BURN(); + + do_sips: + sip_w = _n_resh(pog, &ip_w); + ip_w += sip_w; + BURN(); + + do_swip: + sip_w = _n_rewo(pog, &ip_w); + ip_w += sip_w; + BURN(); + + do_swin: + sip_w = _n_rewo(pog, &ip_w); + goto skin_in; + + do_sins: + sip_w = _n_resh(pog, &ip_w); + goto skin_in; + + do_sbin: + sip_w = pog[ip_w++]; + skin_in: + x = _n_pep(mov, off); + if ( c3n == x ) { + ip_w += sip_w; + } + else if ( c3y != x ) { + u3m_bail(c3__exit); + return u3_none; + } + BURN(); + + do_kics: + x = _n_resh(pog, &ip_w); + goto kick_in; + + do_kicb: + x = pog[ip_w++]; + kick_in: + sit_u = &(pog_u->cal_u.sit_u[x]); + top = _n_peek(off); + o = *top; + *top = _n_kick(o, sit_u); + if ( u3_none == *top ) { + _n_pop(mov); + + fam = u3to(burnframe, u3R->cap_p) + off + mov; + u3R->cap_p = u3of(burnframe, fam - off); + fam->ip_w = ip_w; + fam->pog_u = pog_u; + + pog_u = u3to(u3n_prog, sit_u->pog_p); + pog = pog_u->byc_u.ops_y; + ip_w = 0; +#ifdef U3_CPU_DEBUG + u3R->pro.nox_d += 1; +#endif +#ifdef VERBOSE_BYTECODE + fprintf(stderr, "\r\nhead kick jump: %u, sp: %p\r\n", u3r_at(sit_u->axe, cor), top); + _n_print_byc(pog, ip_w); +#endif + _n_push(mov, off, o); + } +#ifdef VERBOSE_BYTECODE + else { + fprintf(stderr, "head jet\r\n"); + } +#endif + BURN(); + + do_tics: + x = _n_resh(pog, &ip_w); + goto tick_in; + + do_ticb: + x = pog[ip_w++]; + tick_in: + sit_u = &(pog_u->cal_u.sit_u[x]); + top = _n_peek(off); + o = *top; + *top = _n_kick(o, sit_u); + if ( u3_none == *top ) { + *top = o; + pog_u = u3to(u3n_prog, sit_u->pog_p); + pog = pog_u->byc_u.ops_y; + ip_w = 0; +#ifdef U3_CPU_DEBUG + u3R->pro.nox_d += 1; +#endif +#ifdef VERBOSE_BYTECODE + fprintf(stderr, "\r\ntail kick jump: %u, sp: %p\r\n", u3x_at(sit_u->axe, o);, top); + _n_print_byc(pog, ip_w); +#endif + } +#ifdef VERBOSE_BYTECODE + else { + fprintf(stderr, "tail jet\r\n"); + } +#endif + BURN(); + + do_wils: // [gof ref] + o = _n_pep(mov,off); // [ref] + top = _n_peek(off); + goto wish_in; + + do_wish: // [gof bus ref] + o = _n_pep(mov,off); // [bus ref] + top = _n_swap(mov, off); // [ref bus] + wish_in: + u3t_off(noc_o); + x = u3m_soft_esc(u3k(*top), u3k(o)); + u3t_on(noc_o); + + if ( c3n == u3du(x) ) { + u3m_bail(u3nc(1, o)); + return u3_none; + } + else if ( c3n == u3du(u3t(x)) ) { + u3t_push(u3nt(c3__hunk, *top, o)); + u3m_bail(c3__exit); + return u3_none; + } + else { + u3z(o); + u3z(*top); + *top = u3k(u3t(u3t(x))); + u3z(x); + BURN(); + } + + do_sush: + x = _n_resh(pog, &ip_w); + goto cush_in; + + do_bush: + x = pog[ip_w++]; + cush_in: + x = u3k(pog_u->lit_u.non[x]); + o = _n_pep(mov, off); + u3t_push(u3nc(x, o)); + BURN(); + + do_drop: + u3t_drop(); + BURN(); + + do_heck: + x = _n_pep(mov, off); + if ( c3y == u3ud(x) ) { + u3t_off(noc_o); + u3t_heck(x); + u3t_on(noc_o); + } + else { + u3z(x); + } + BURN(); + + do_slog: + x = _n_pep(mov, off); + if ( !(u3C.wag_w & u3o_quiet) ) { + u3t_off(noc_o); + u3t_slog(x); + u3t_on(noc_o); + } + else { + u3z(x); + } + BURN(); + + + do_sast: + x = _n_resh(pog, &ip_w); + goto fast_in; + + do_bast: + x = pog[ip_w++]; + goto fast_in; + + do_salt: + x = _n_resh(pog, &ip_w); + goto falt_in; + do_balt: + x = pog[ip_w++]; + falt_in: // [pro clu] + o = _n_pep(mov, off); // [clu] + top = _n_peek(off); + goto fast_out; + + fast_in: // [pro bus clu] + o = _n_pep(mov, off); // [bus clu] + top = _n_swap(mov, off); // [clu bus] + fast_out: + rit_u = &(pog_u->reg_u.rit_u[x]); + u3t_off(noc_o); + u3j_rite_mine(rit_u, *top, u3k(o)); + u3t_on(noc_o); + *top = o; + BURN(); + + do_skis: + x = _n_resh(pog, &ip_w); + goto skim_in; + + do_skib: + x = pog[ip_w++]; + skim_in: + mem_u = &(pog_u->mem_u.sot_u[x]); + top = _n_peek(off); + x = u3k(*top); + goto skim_out; + + do_slis: + x = _n_resh(pog, &ip_w); + goto slim_in; + + do_slib: + x = pog[ip_w++]; + slim_in: + mem_u = &(pog_u->mem_u.sot_u[x]); + x = _n_pep(mov, off); + skim_out: + o = u3k(mem_u->key); + x = u3nc(x, o); + o = u3z_find_m(mem_u->cid, 144 + c3__nock, x); + if ( u3_none == o ) { + _n_push(mov, off, u3nc(mem_u->cid, x)); + _n_push(mov, off, u3k(u3h(x))); + } + else { + ip_w += mem_u->sip_l; + _n_push(mov, off, o); + u3z(x); + } + BURN(); + + do_save: + x = _n_pep(mov, off); // product + top = _n_peek(off); + o = *top; + if ( ( u3z_memo_toss == u3h(o) ) + ? ( &(u3H->rod_u) != u3R ) + : ( 0 == u3R->ski.gul ) ) { // prevents userspace from persistence + u3z_save_m(u3h(o), 144 + c3__nock, u3t(o), x); + } + // XX can we still print? + // else if ( u3z_memo_keep == u3h(o) ) { + // fprintf(stderr, "\r\nnock: userspace can't save to persistent cache\r\n"); + // } + *top = x; + u3z(o); + BURN(); + + do_hilb: + x = pog[ip_w++]; + goto hilt_fore_in; + + do_hils: + x = _n_resh(pog, &ip_w); + hilt_fore_in: + x = u3k(pog_u->lit_u.non[x]); + top = _n_peek(off); // bus + x = _n_hilt_fore(x, *top, &o); + _n_push(mov, off, o); + _n_swap(mov, off); // bus + _n_push(mov, off, x); // shortcircuit if c3n + BURN(); + + do_hinb: + x = pog[ip_w++]; + goto hint_fore_in; + + do_hins: + x = _n_resh(pog, &ip_w); + hint_fore_in: // [clu bus] + x = u3k(pog_u->lit_u.non[x]); + o = _n_pep(mov, off); // [bus] + top = _n_peek(off); + x = _n_hint_fore(x, *top, &o); + _n_push(mov, off, o); // [tok bus] + _n_swap(mov, off); // [bus tok] + _n_push(mov, off, x); // [kip bus tok] + BURN(); + + do_hilk: // [pro bus tok] + x = _n_pep(mov, off); // [bus tok] + _n_swap(mov, off); // [tok bus] + o = _n_pep(mov, off); // [bus] + _n_push(mov, off, x); // [pro bus] + _n_hilt_hind(o, x); + BURN(); + + do_hill: // [pro tok] + top = _n_swap(mov, off); // [tok pro] + o = _n_pep(mov, off); // [pro] + top = _n_peek(off); + _n_hilt_hind(o, *top); + BURN(); + + do_hink: // [pro bus tok] + x = _n_pep(mov, off); // [bus tok] + _n_swap(mov, off); // [tok bus] + o = _n_pep(mov, off); // [bus] + _n_push(mov, off, x); // [pro bus] + _n_hint_hind(o, x); + BURN(); + + do_hinl: // [pro tok] + top = _n_swap(mov, off); // [tok pro] + o = _n_pep(mov, off); // [pro] + top = _n_peek(off); + _n_hint_hind(o, *top); + BURN(); + + do_kuth: + x = _n_pep(mov, off); + top = _n_swap(mov, off); + goto muth_in; + do_muth: + x = _n_pep(mov, off); + top = _n_peek(off); + muth_in: + o = *top; + *top = u3nc(x, u3k(u3t(o))); + u3z(o); + BURN(); + + do_kutt: + x = _n_pep(mov, off); + top = _n_swap(mov, off); + goto mutt_in; + do_mutt: + x = _n_pep(mov, off); + top = _n_peek(off); + mutt_in: + o = *top; + *top = u3nc(u3k(u3h(o)), x); + u3z(o); + BURN(); + + do_kusm: + x = _n_pep(mov, off); + top = _n_swap(mov, off); + goto musm_in; + do_musm: + x = _n_pep(mov, off); + top = _n_peek(off); + musm_in: + o = *top; + *top = u3nt(u3k(u3h(o)), x, u3k(u3t(u3t(o)))); + u3z(o); + BURN(); + + do_kitb: + x = pog_u->lit_u.non[pog[ip_w++]]; + goto kut_in; + + do_kits: + x = pog_u->lit_u.non[_n_resh(pog, &ip_w)]; + goto kut_in; + + do_kuts: + x = _n_resh(pog, &ip_w); + goto kut_in; + + do_kutb: + x = pog[ip_w++]; + kut_in: + o = _n_pep(mov, off); + top = _n_swap(mov, off); + goto edit_in; + + do_mitb: + x = pog_u->lit_u.non[pog[ip_w++]]; + goto mut_in; + + do_mits: + x = pog_u->lit_u.non[_n_resh(pog, &ip_w)]; + goto mut_in; + + do_muts: + x = _n_resh(pog, &ip_w); + goto mut_in; + + do_mutb: + x = pog[ip_w++]; + mut_in: + o = _n_pep(mov, off); + top = _n_peek(off); + edit_in: + *top = u3i_edit(*top, x, o); + BURN(); + } +} + +/* _n_burn_out(): execute u3n_prog with bus as subject. + */ +static u3_noun +_n_burn_out(u3_noun bus, u3n_prog* pog_u) +{ + c3_ys mov, off; + if ( c3y == u3a_is_north(u3R) ) { + mov = -1; + off = 0; + } + else { + mov = 1; + off = -1; + } + return _n_burn(pog_u, bus, mov, off); +} + +/* u3n_burn(): execute u3n_prog with bus as subject. + */ +u3_noun +u3n_burn(u3p(u3n_prog) pog_p, u3_noun bus) +{ + u3_noun pro; + u3t_on(noc_o); + pro = _n_burn_out(bus, u3to(u3n_prog, pog_p)); + u3t_off(noc_o); + return pro; +} + +/* _n_burn_on(): produce .*(bus fol) with bytecode interpreter + */ +static u3_noun +_n_burn_on(u3_noun bus, u3_noun fol) +{ + u3n_prog* pog_u = _n_find(u3_nul, fol); + + u3z(fol); + return _n_burn_out(bus, pog_u); +} + +/* u3n_nock_on(): produce .*(bus fol). Do not virtualize. +*/ +u3_noun +u3n_nock_on(u3_noun bus, u3_noun fol) +{ + u3_noun pro; + + u3t_on(noc_o); +#if 0 + pro = _n_nock_on(bus, fol); +#else + pro = _n_burn_on(bus, fol); +#endif + u3t_off(noc_o); + + return pro; +} + +/* _cn_take_prog_dat(): take references from junior u3n_prog. +*/ +static void +_cn_take_prog_dat(u3n_prog* dst_u, u3n_prog* src_u) +{ + c3_w i_w; + + for ( i_w = 0; i_w < src_u->lit_u.len_w; ++i_w ) { + dst_u->lit_u.non[i_w] = u3a_take(src_u->lit_u.non[i_w]); + } + + for ( i_w = 0; i_w < src_u->mem_u.len_w; ++i_w ) { + u3n_memo* emo_u = &(src_u->mem_u.sot_u[i_w]); + u3n_memo* ome_u = &(dst_u->mem_u.sot_u[i_w]); + ome_u->sip_l = emo_u->sip_l; + ome_u->key = u3a_take(emo_u->key); + ome_u->cid = emo_u->cid; + } + + for ( i_w = 0; i_w < src_u->cal_u.len_w; ++i_w ) { + u3j_site_take(&(dst_u->cal_u.sit_u[i_w]), + &(src_u->cal_u.sit_u[i_w])); + } + + for ( i_w = 0; i_w < src_u->reg_u.len_w; ++i_w ) { + u3j_rite_take(&(dst_u->reg_u.rit_u[i_w]), + &(src_u->reg_u.rit_u[i_w])); + } +} + +/* _cn_take_prog_cb(): u3h_take_with cb for taking junior u3n_prog's. +*/ +static u3p(u3n_prog) +_cn_take_prog_cb(c3_w pog_w) +{ + u3n_prog* pog_u = _cn_to_prog(pog_w); + u3n_prog* gop_u; + + if ( c3y == pog_u->byc_u.own_o ) { + c3_w pad_w = (8 - pog_u->byc_u.len_w % 8) % 8; + gop_u = _n_prog_new(pog_u->byc_u.len_w, + pog_u->cal_u.len_w, + pog_u->reg_u.len_w, + pog_u->lit_u.len_w, + pog_u->mem_u.len_w); + memcpy(gop_u->byc_u.ops_y, pog_u->byc_u.ops_y, pog_u->byc_u.len_w + pad_w); + } + else { + gop_u = _n_prog_old(pog_u); + } + + _cn_take_prog_dat(gop_u, pog_u); + // _n_prog_take_dat(gop_u, pog_u, c3n); + + return _cn_of_prog(gop_u); +} + +/* u3n_take(): copy junior bytecode state. +*/ +u3p(u3h_root) +u3n_take(u3p(u3h_root) har_p) +{ + return u3h_take_with(har_p, _cn_take_prog_cb); +} + +/* _cn_merge_prog_dat(): copy references from src_u u3n_prog to dst_u. +*/ +static void +_cn_merge_prog_dat(u3n_prog* dst_u, u3n_prog* src_u) +{ + c3_w i_w; + + for ( i_w = 0; i_w < src_u->lit_u.len_w; ++i_w ) { + u3z(dst_u->lit_u.non[i_w]); + dst_u->lit_u.non[i_w] = src_u->lit_u.non[i_w]; + } + + for ( i_w = 0; i_w < src_u->mem_u.len_w; ++i_w ) { + u3n_memo* emo_u = &(dst_u->mem_u.sot_u[i_w]); + u3n_memo* ome_u = &(src_u->mem_u.sot_u[i_w]); + u3z(emo_u->key); + emo_u->sip_l = ome_u->sip_l; + emo_u->key = ome_u->key; + emo_u->cid = ome_u->cid; + } + + for ( i_w = 0; i_w < src_u->cal_u.len_w; ++i_w ) { + u3j_site_merge(&(dst_u->cal_u.sit_u[i_w]), + &(src_u->cal_u.sit_u[i_w])); + } + + for ( i_w = 0; i_w < src_u->reg_u.len_w; ++i_w ) { + u3j_rite_merge(&(dst_u->reg_u.rit_u[i_w]), + &(src_u->reg_u.rit_u[i_w])); + } +} + +/* _cn_merge_prog_cb(): u3h_walk_with cb for integrating taken u3n_prog's. +*/ +static void +_cn_merge_prog_cb(u3_noun kev, void* wit) +{ + u3p(u3h_root) har_p = *(u3p(u3h_root)*)wit; + u3n_prog* pog_u; + u3_weak got; + u3_noun key; + c3_w pog_w; + u3x_cell(kev, &key, &pog_w); + + pog_u = _cn_to_prog(pog_w); + got = u3h_git(har_p, key); + + if ( u3_none != got ) { + u3n_prog* sep_u = _cn_to_prog(got); + _cn_merge_prog_dat(sep_u, pog_u); + u3a_free(pog_u); + pog_u = sep_u; + } + + u3h_put(har_p, key, _cn_of_prog(pog_u)); +} + +/* u3n_reap(): promote bytecode state. +*/ +void +u3n_reap(u3p(u3h_root) har_p) +{ + u3h_walk_with(har_p, _cn_merge_prog_cb, &u3R->byc.har_p); + // NB *not* u3n_free, _cn_merge_prog_cb() transfers u3n_prog's + u3h_free(har_p); +} + +/* _n_ream(): ream program call sites +*/ +void +_n_ream(u3_noun kev) +{ + u3n_prog* pog_u = _cn_to_prog(u3t(kev)); + + c3_w pad_w = (8 - pog_u->byc_u.len_w % 8) % 8; + c3_w pod_w = pog_u->lit_u.len_w % 2; + c3_w ped_w = pog_u->mem_u.len_w % 2; + // fix up pointers for loom portability + pog_u->byc_u.ops_y = (c3_y*) _n_prog_dat(pog_u); + pog_u->lit_u.non = (u3_noun*) (pog_u->byc_u.ops_y + pog_u->byc_u.len_w + pad_w); + pog_u->mem_u.sot_u = (u3n_memo*) (pog_u->lit_u.non + pog_u->lit_u.len_w + pod_w); + pog_u->cal_u.sit_u = (u3j_site*) (pog_u->mem_u.sot_u + pog_u->mem_u.len_w + ped_w); + pog_u->reg_u.rit_u = (u3j_rite*) (pog_u->cal_u.sit_u + pog_u->cal_u.len_w); + + for ( c3_w i_w = 0; i_w < pog_u->cal_u.len_w; ++i_w ) { + u3j_site_ream(&(pog_u->cal_u.sit_u[i_w])); + } +} + +/* u3n_ream(): refresh after restoring from checkpoint. +*/ +void +u3n_ream() +{ + u3_assert(u3R == &(u3H->rod_u)); + u3h_walk(u3R->byc.har_p, _n_ream); +} + +/* _n_prog_mark(): mark program for gc. +*/ +static c3_w +_n_prog_mark(u3n_prog* pog_u) +{ + c3_w i_w, tot_w = u3a_mark_mptr(pog_u); + + for ( i_w = 0; i_w < pog_u->lit_u.len_w; ++i_w ) { + tot_w += u3a_mark_noun(pog_u->lit_u.non[i_w]); + } + + for ( i_w = 0; i_w < pog_u->mem_u.len_w; ++i_w ) { + tot_w += u3a_mark_noun(pog_u->mem_u.sot_u[i_w].key); + } + + for ( i_w = 0; i_w < pog_u->cal_u.len_w; ++i_w ) { + tot_w += u3j_site_mark(&(pog_u->cal_u.sit_u[i_w])); + } + + for ( i_w = 0; i_w < pog_u->reg_u.len_w; ++i_w ) { + tot_w += u3j_rite_mark(&(pog_u->reg_u.rit_u[i_w])); + } + + return tot_w; +} + +/* _n_bam(): u3h_walk_with helper for u3n_mark + */ +static void +_n_bam(u3_noun kev, void* dat) +{ + u3n_prog* pog = _cn_to_prog(u3t(kev)); + c3_w* bam_w = dat; + + *bam_w += _n_prog_mark(pog); +} + +/* u3n_mark(): mark the bytecode cache for gc. + */ +u3m_quac* +u3n_mark() +{ + u3m_quac** qua_u = c3_malloc(sizeof(*qua_u) * 3); + + qua_u[0] = c3_calloc(sizeof(*qua_u[0])); + qua_u[0]->nam_c = strdup("bytecode programs"); + + u3p(u3h_root) har_p = u3R->byc.har_p; + u3h_walk_with(har_p, _n_bam, &qua_u[0]->siz_w); + qua_u[0]->siz_w = qua_u[0]->siz_w * 4; + + qua_u[1] = c3_calloc(sizeof(*qua_u[1])); + qua_u[1]->nam_c = strdup("bytecode cache"); + qua_u[1]->siz_w = u3h_mark(har_p) * 4; + + qua_u[2] = NULL; + + u3m_quac* tot_u = c3_malloc(sizeof(*tot_u)); + tot_u->nam_c = strdup("total nock stuff"); + tot_u->siz_w = qua_u[0]->siz_w + qua_u[1]->siz_w; + tot_u->qua_u = qua_u; + + return tot_u; +} + +/* u3n_reclaim(): clear ad-hoc persistent caches to reclaim memory. +*/ +void +u3n_reclaim(void) +{ + // clear the bytecode cache + // + // We can't just u3h_free() -- the value is a post to a u3n_prog. + // Note that the hank cache *must* also be freed (in u3j_reclaim()) + // + u3n_free(); + u3R->byc.har_p = u3h_new(); +} + +/* u3n_rewrite_compact(): rewrite the bytecode cache for compaction. + * + * NB: u3R->byc.har_p *must* be cleared (currently via u3n_reclaim above), + * since it contains things that look like nouns but aren't. + * Specifically, it contains "cells" where the tail is a + * pointer to a u3a_malloc'ed block that contains loom pointers. + * + * You should be able to walk this with u3h_walk and rewrite the + * pointers, but you need to be careful to handle that u3a_malloc + * pointers can't be turned into a box by stepping back two words. You + * must step back one word to get the padding, step then step back that + * many more words (plus one?). + */ +void +u3n_rewrite_compact() +{ + u3h_relocate(&(u3R->byc.har_p)); +} + + +/* _n_feb(): u3h_walk helper for u3n_free + */ +static void +_n_feb(u3_noun kev) +{ + _cn_prog_free(_cn_to_prog(u3t(kev))); +} + +/* u3n_free(): free bytecode cache + */ +void +u3n_free() +{ + u3p(u3h_root) har_p = u3R->byc.har_p; + u3h_walk(har_p, _n_feb); + u3h_free(har_p); +} + +/* u3n_kick_on(): fire `gat` without changing the sample. +*/ +u3_noun +u3n_kick_on(u3_noun gat) +{ + return u3j_kink(gat, 2); +} + +c3_w exc_w; + +/* u3n_slam_on(): produce (gat sam). +*/ +u3_noun +u3n_slam_on(u3_noun gat, u3_noun sam) +{ + u3_noun cor = u3nc(u3k(u3h(gat)), u3nc(sam, u3k(u3t(u3t(gat))))); + +#if 0 + if ( &u3H->rod_u == u3R ) { + if ( exc_w == 1 ) { + u3_assert(0); + } + exc_w++; + } +#endif + u3z(gat); + return u3n_kick_on(cor); +} + +/* u3n_nock_et(): produce .*(bus fol), as ++toon, in namespace. +*/ +u3_noun +u3n_nock_et(u3_noun gul, u3_noun bus, u3_noun fol) +{ + return u3m_soft_run(gul, u3n_nock_on, bus, fol); +} + +/* u3n_slam_et(): produce (gat sam), as ++toon, in namespace. +*/ +u3_noun +u3n_slam_et(u3_noun gul, u3_noun gat, u3_noun sam) +{ + return u3m_soft_run(gul, u3n_slam_on, gat, sam); +} + +/* u3n_nock_an(): as nock_et(), but with the scry handler that always blocks. +*/ +u3_noun +u3n_nock_an(u3_noun bus, u3_noun fol) +{ + u3_noun gul = u3nt(u3nc(1, 0), u3nc(0, 0), 0); // |~(^ ~) + return u3n_nock_et(gul, bus, fol); +} + + diff --git a/vere/pkg/noun/nock.h b/vere/pkg/noun/nock.h new file mode 100644 index 0000000..5c34515 --- /dev/null +++ b/vere/pkg/noun/nock.h @@ -0,0 +1,149 @@ +/// @file + +#ifndef U3_NOCK_H +#define U3_NOCK_H + +#include + +#include "c3/c3.h" +#include "jets.h" +#include "types.h" +#include "zave.h" + + /** Data structures. + *** + **/ + + /* u3n_memo: %memo hint space + */ + typedef struct { + c3_l sip_l; + u3_noun key; + u3z_cid cid; + } u3n_memo; + + /* u3n_prog: program compiled from nock + */ + typedef struct _u3n_prog { + struct { + c3_o own_o; // program owns ops_y? + c3_w len_w; // length of bytecode (bytes) + c3_y* ops_y; // actual array of bytes + } byc_u; // bytecode + struct { + c3_w len_w; // number of literals + u3_noun* non; // array of literals + } lit_u; // literals + struct { + c3_w len_w; // number of memo slots + u3n_memo* sot_u; // array of memo slots + } mem_u; // memo slot data + struct { + c3_w len_w; // number of calls sites + u3j_site* sit_u; // array of sites + } cal_u; // call site data + struct { + c3_w len_w; // number of registration sites + u3j_rite* rit_u; // array of sites + } reg_u; // registration site data + } u3n_prog; + + /** Functions. + **/ + /* u3n_nock_on(): produce .*(bus fol). + */ + u3_noun + u3n_nock_on(u3_noun bus, u3_noun fol); + + /* u3n_find(): return prog for given formula, + * split by key (u3_nul for none). RETAIN. + */ + u3p(u3n_prog) + u3n_find(u3_noun key, u3_noun fol); + + /* u3n_burn(): execute u3n_prog with bus as subject. + */ + u3_noun + u3n_burn(u3p(u3n_prog) pog_p, u3_noun bus); + + /* u3n_slam_on(): produce (gat sam). + */ + u3_noun + u3n_slam_on(u3_noun gat, u3_noun sam); + + /* u3n_kick_on(): fire `gat` without changing the sample. + */ + u3_noun + u3n_kick_on(u3_noun gat); + + /* u3n_nock_in(): produce .*(bus fol), as ++toon, in namespace. + */ + u3_noun + u3n_nock_in(u3_noun fly, u3_noun bus, u3_noun fol); + + /* u3n_nock_it(): produce .*(bus fol), as ++toon, in namespace. + */ + u3_noun + u3n_nock_it(u3_noun sea, u3_noun bus, u3_noun fol); + + /* u3n_nock_et(): produce .*(bus fol), as ++toon, in namespace. + */ + u3_noun + u3n_nock_et(u3_noun gul, u3_noun bus, u3_noun fol); + + /* u3n_slam_in(): produce (gat sam), as ++toon, in namespace. + */ + u3_noun + u3n_slam_in(u3_noun fly, u3_noun gat, u3_noun sam); + + /* u3n_slam_it(): produce (gat sam), as ++toon, in namespace. + */ + u3_noun + u3n_slam_it(u3_noun sea, u3_noun gat, u3_noun sam); + + /* u3n_slam_et(): produce (gat sam), as ++toon, in namespace. + */ + u3_noun + u3n_slam_it(u3_noun gul, u3_noun gat, u3_noun sam); + + /* u3n_nock_an(): as slam_in(), but with empty fly. + */ + u3_noun + u3n_nock_an(u3_noun bus, u3_noun fol); + + /* u3n_reap(): promote bytecode state. + */ + void + u3n_reap(u3p(u3h_root) har_p); + + /* u3n_take(): copy junior bytecode state. + */ + u3p(u3h_root) + u3n_take(u3p(u3h_root) har_p); + + /* u3n_mark(): mark bytecode cache. + */ + u3m_quac* + u3n_mark(); + + /* u3n_reclaim(): clear ad-hoc persistent caches to reclaim memory. + */ + void + u3n_reclaim(void); + + /* u3n_rewrite_compact(): rewrite bytecode cache for compaction. + */ + void + u3n_rewrite_compact(void); + + /* u3n_free(): free bytecode cache. + */ + void + u3n_free(void); + + /* u3n_ream(): refresh after restoring from checkpoint. + */ + void + u3n_ream(void); + +#endif /* ifndef U3_NOCK_H */ diff --git a/vere/pkg/noun/nock_tests.c b/vere/pkg/noun/nock_tests.c new file mode 100644 index 0000000..8d4a7d2 --- /dev/null +++ b/vere/pkg/noun/nock_tests.c @@ -0,0 +1,83 @@ +/// @file + +#include "noun.h" + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + u3m_boot_lite(1 << 24); +} + +static u3_noun +_nock_fol(u3_noun fol) +{ + return u3n_nock_on(u3_nul, fol); +} + +static c3_i +_test_nock_meme(void) +{ + // (jam !=(=(~ =|(i=@ |-(?:(=(i ^~((bex 32))) ~ [i $(i +(i))])))))) + // + const c3_y buf_y[] = { + 0xe1, 0x16, 0x1b, 0x4, 0x1b, 0xe1, 0x20, 0x58, 0x1c, 0x76, 0x4d, 0x96, 0xd8, + 0x31, 0x60, 0x0, 0x0, 0x0, 0x0, 0xd8, 0x8, 0x37, 0xce, 0xd, 0x92, 0x21, + 0x83, 0x68, 0x61, 0x87, 0x39, 0xce, 0x4d, 0xe, 0x92, 0x21, 0x87, 0x19, 0x8 + }; + u3_noun fol = u3s_cue_bytes(sizeof(buf_y), buf_y); + u3_noun gon; + c3_w i_w; + c3_i ret_i = 1; + + for ( i_w = 0; i_w < 3; i_w++ ) { + gon = u3m_soft(0, _nock_fol, u3k(fol)); + + if ( c3n == u3r_p(gon, c3__meme, 0) ) { + u3m_p("nock meme unexpected mote", u3h(gon)); + ret_i = 0; + u3z(gon); + break; + } + + u3z(gon); + } + + u3z(fol); + + return ret_i; +} + +static c3_i +_test_meme(void) +{ + c3_i ret_i = 1; + + if ( !_test_nock_meme() ) { + fprintf(stderr, "test nock meme: failed\r\n"); + ret_i = 0; + } + + return ret_i; +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + if ( !_test_meme() ) { + fprintf(stderr, "test meme: failed\r\n"); + exit(1); + } + + // GC + // + u3m_grab(u3_none); + + fprintf(stderr, "test meme: ok\r\n"); + return 0; +} diff --git a/vere/pkg/noun/noun.h b/vere/pkg/noun/noun.h new file mode 100644 index 0000000..965330a --- /dev/null +++ b/vere/pkg/noun/noun.h @@ -0,0 +1,26 @@ +/// @file + +#ifndef U3_NOUN_H +#define U3_NOUN_H + +#include "allocate.h" +#include "hashtable.h" +#include "error.h" +#include "jets.h" +#include "jets/k.h" +#include "jets/q.h" +#include "manage.h" +#include "options.h" +#include "serial.h" +#include "types.h" +#include "vortex.h" +#include "zave.h" +#include "imprison.h" +#include "log.h" +#include "nock.h" +#include "retrieve.h" +#include "trace.h" +#include "urth.h" +#include "xtract.h" + +#endif /* ifndef U3_NOUN_H */ diff --git a/vere/pkg/noun/options.c b/vere/pkg/noun/options.c new file mode 100644 index 0000000..cef3479 --- /dev/null +++ b/vere/pkg/noun/options.c @@ -0,0 +1,5 @@ +/// @file + +#include "options.h" + +u3o_config u3o_Config; diff --git a/vere/pkg/noun/options.h b/vere/pkg/noun/options.h new file mode 100644 index 0000000..615b765 --- /dev/null +++ b/vere/pkg/noun/options.h @@ -0,0 +1,59 @@ +/// @file + +#ifndef U3_OPTIONS_H +#define U3_OPTIONS_H + +#include "c3/c3.h" +#include "types.h" + + /** Data structures. + **/ + /* u3o_config: process / system configuration. + */ + typedef struct _u3o_config { + u3_noun who; // single identity + c3_c* dir_c; // execution directory (pier) + c3_c* eph_c; // ephemeral file + c3_w wag_w; // flags (both ways) + size_t wor_i; // loom word-length (<= u3a_words) + c3_w tos_w; // loom toss skip-length + c3_w hap_w; // transient memoization cache size + c3_w per_w; // persistent memoization cache size + void (*stderr_log_f)(c3_c*); // errors from c code + void (*slog_f)(u3_noun); // function pointer for slog + void (*sign_hold_f)(void); // suspend system signal regime + void (*sign_move_f)(void); // restore system signal regime + } u3o_config; + + /* u3o_flag: process/system flags. + ** + ** _debug flags are set outside u3 and heard inside it. + ** _check flags are set inside u3 and heard outside it. + */ + enum u3o_flag { // execution flags + u3o_debug_ram = 1 << 0, // debug: gc + u3o_debug_cpu = 1 << 1, // debug: profile + u3o_check_corrupt = 1 << 2, // check: gc memory + u3o_check_fatal = 1 << 3, // check: unrecoverable + u3o_verbose = 1 << 4, // be remarkably wordy + u3o_dryrun = 1 << 5, // don't touch checkpoint + u3o_quiet = 1 << 6, // disable ~& + u3o_hashless = 1 << 7, // disable hashboard + u3o_trace = 1 << 8, // enables trace dumping + u3o_no_demand = 1 << 9, // disables demand paging + u3o_auto_meld = 1 << 10, // enables meld under pressure + u3o_soft_mugs = 1 << 11, // continue replay on mismatch + u3o_swap = 1 << 12, // enables ephemeral file + u3o_toss = 1 << 13, // reclaim often + u3o_cash = 1 << 14, // memo cache harvesting + u3o_yolo = 1 << 15 // no brakes! + }; + + /** Globals. + **/ + /* u3_Config / u3C: global memory control. + */ + extern u3o_config u3o_Config; +# define u3C u3o_Config + +#endif /* ifndef U3_OPTIONS_H */ diff --git a/vere/pkg/noun/palloc.c b/vere/pkg/noun/palloc.c new file mode 100644 index 0000000..f8999d6 --- /dev/null +++ b/vere/pkg/noun/palloc.c @@ -0,0 +1,2400 @@ + +#include "c3/c3.h" +#include "allocate.h" +#include "options.h" +#include "vortex.h" + +#undef SANITY + +#ifdef ASAN_ENABLED + // XX build problems importing + // + void __asan_poison_memory_region(void const volatile *addr, size_t size); + void __asan_unpoison_memory_region(void const volatile *addr, size_t size); +# define ASAN_POISON_MEMORY_REGION(addr, size) \ + __asan_poison_memory_region((addr), (size)) +# define ASAN_UNPOISON_MEMORY_REGION(addr, size) \ + __asan_unpoison_memory_region((addr), (size)) +#else +# define ASAN_POISON_MEMORY_REGION(addr, size) ((void) (addr), (void) (size)) +# define ASAN_UNPOISON_MEMORY_REGION(addr, size) ((void) (addr), (void) (size)) +#endif + +#ifndef BASE + #define BASE u3R->rut_p +#endif + +#define page_to_post(pag_w) (BASE + (HEAP.dir_ws * (c3_ws)((c3_w)(pag_w - HEAP.off_ws) << u3a_page))) +#define post_to_page(som_p) (_abs_dif(som_p, (c3_ws)BASE + HEAP.off_ws) >> u3a_page) + +#ifndef HEAP + #define HEAP u3R->hep +#endif + +static u3_post _imalloc(c3_w); +static void _ifree(u3_post); + +static __inline__ c3_w +_abs_dif(c3_w a_w, c3_w b_w) +{ + // c3_ds dif_ds = a_w - b_w; + // c3_d mas_d = dif_ds >> 63; + // return (dif_ds + mas_d) ^ mas_d; + return (a_w > b_w ) ? a_w - b_w : b_w - a_w; +} + +static void +_init_once(void) +{ + u3a_hunk_dose *hun_u; + c3_s mun_w = 0; + + for (c3_g bit_g = 0; bit_g < u3a_crag_no; bit_g++ ) { + hun_u = &(u3a_Hunk[bit_g]); + hun_u->log_s = bit_g + u3a_min_log; + hun_u->len_s = 1U << hun_u->log_s; + hun_u->tot_s = 1U << (u3a_page - hun_u->log_s); + hun_u->map_s = (hun_u->tot_s + 31) >> 5; + hun_u->siz_s = c3_wiseof(u3a_crag) + hun_u->map_s - 1; + + // metacircular base case + // + // trivially deducible from exhaustive enumeration + // + if ( hun_u->len_s <= (hun_u->siz_s << 1) ) { + hun_u->hun_s = 1U + ((hun_u->siz_s - 1) >> hun_u->log_s); + } + else { + hun_u->hun_s = 0; + } + + hun_u->ful_s = hun_u->tot_s - hun_u->hun_s; + mun_w = c3_max(mun_w, hun_u->hun_s); + } + + u3_assert( 32 > mun_w ); +} + +static void +_drop(u3_post som_p, c3_w len_w) +{ + ASAN_UNPOISON_MEMORY_REGION(u3a_into(som_p), (c3_z)len_w << 2); +} + +static void +_init_heap(void) +{ + u3p(u3a_crag) *dir_u; + + if ( c3y == u3a_is_north(u3R) ) { + HEAP.dir_ws = 1; + HEAP.off_ws = 0; + } + else { + HEAP.dir_ws = -1; + HEAP.off_ws = -1; + } + + assert( !(u3R->hat_p & ((1U << u3a_page) - 1)) ); + assert( u3R->hat_p > u3a_rest_pg ); + assert( u3R->hat_p == u3R->rut_p ); + + // XX check for overflow + + HEAP.pag_p = u3R->hat_p; + HEAP.pag_p += HEAP.off_ws * (c3_ws)(1U << u3a_page); + HEAP.siz_w = 1U << u3a_page; + HEAP.len_w = 1; + + u3R->hat_p += HEAP.dir_ws * (c3_ws)(1U << u3a_page); + + dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + + memset(dir_u, 0, 1U << (u3a_page + 2)); + dir_u[0] = u3a_head_pg; + +#ifdef SANITY + assert( 0 == post_to_page(HEAP.pag_p) ); + assert( HEAP.pag_p == page_to_post(0) ); + assert( HEAP.len_w == post_to_page(u3R->hat_p + HEAP.off_ws) ); +#endif + + HEAP.cac_p = _imalloc(c3_wiseof(u3a_dell)); +} + +static void +_extend_directory(c3_w siz_w) // num pages +{ + u3p(u3a_crag) *dir_u, *old_u; + u3_post old_p = HEAP.pag_p; + c3_w nex_w, dif_w, pag_w; + + old_u = u3to(u3p(u3a_crag), HEAP.pag_p); + nex_w = HEAP.len_w + siz_w; // num words + nex_w += (1U << u3a_page) - 1; + nex_w &= ~((1U << u3a_page) - 1); + dif_w = nex_w >> u3a_page; // new pages + + HEAP.pag_p = u3R->hat_p; + HEAP.pag_p += HEAP.off_ws * (c3_ws)nex_w; + u3R->hat_p += HEAP.dir_ws * (c3_ws)nex_w; // XX overflow + + // XX depend on the guard page for these? + // + if ( 1 == HEAP.dir_ws ) { + if ( u3R->hat_p >= u3R->cap_p ) { + u3m_bail(c3__meme); return; + } + } + else { + if ( u3R->hat_p <= u3R->cap_p ) { + u3m_bail(c3__meme); return; + } + } + + dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + pag_w = post_to_page(HEAP.pag_p); + +#ifdef SANITY + assert( pag_w == (HEAP.len_w - (HEAP.off_ws * (dif_w - 1))) ); +#endif + + { + c3_z len_z = (c3_z)HEAP.len_w << 2; + c3_z dif_z = (c3_z)dif_w << 2; + + ASAN_UNPOISON_MEMORY_REGION(dir_u, (c3_z)nex_w << 2); + + memcpy(dir_u, old_u, len_z); + + dir_u[pag_w] = u3a_head_pg; + + for ( c3_w i_w = 1; i_w < dif_w; i_w++ ) { + dir_u[pag_w + (HEAP.dir_ws * (c3_ws)i_w)] = u3a_rest_pg; + } + + memset((c3_y*)dir_u + len_z + dif_z, 0, ((c3_z)nex_w << 2) - len_z - dif_z); + } + + HEAP.len_w += dif_w; + HEAP.siz_w = nex_w; + + _ifree(old_p); + +#ifdef SANITY + assert( HEAP.len_w == post_to_page(u3R->hat_p + HEAP.off_ws) ); + assert( dir_u[HEAP.len_w - 1] ); +#endif +} + +static u3_post +_extend_heap(c3_w siz_w) // num pages +{ + u3_post pag_p; + +#ifdef SANITY + assert( HEAP.siz_w >= HEAP.len_w ); +#endif + + if ( (HEAP.siz_w - HEAP.len_w) < siz_w ) { + _extend_directory(siz_w); + } + + pag_p = u3R->hat_p; + pag_p += HEAP.off_ws * (c3_ws)(siz_w << u3a_page); + + u3R->hat_p += HEAP.dir_ws * (c3_ws)(siz_w << u3a_page); + + // XX depend on the guard page for these? + // + if ( 1 == HEAP.dir_ws ) { + if ( u3R->hat_p >= u3R->cap_p ) { + return u3m_bail(c3__meme); + } + } + else { + if ( u3R->hat_p <= u3R->cap_p ) { + return u3m_bail(c3__meme); + } + } + + HEAP.len_w += siz_w; + + ASAN_POISON_MEMORY_REGION(u3a_into(pag_p), siz_w << (u3a_page + 2)); + +#ifdef SANITY + assert( HEAP.len_w == post_to_page(u3R->hat_p + HEAP.off_ws) ); +#endif + + return pag_p; +} + +static u3_post +_alloc_pages(c3_w siz_w) // num pages +{ + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + u3a_dell* fre_u = u3tn(u3a_dell, HEAP.fre_p); + u3a_dell* del_u = NULL; + c3_w pag_w = 0; + + while ( fre_u ) { + // XX sanity + + if ( fre_u->siz_w < siz_w ) { + fre_u = u3tn(u3a_dell, fre_u->nex_p); + continue; + } + else if ( fre_u->siz_w == siz_w ) { + pag_w = fre_u->pag_w; + + if ( fre_u->nex_p ) { + u3to(u3a_dell, fre_u->nex_p)->pre_p = fre_u->pre_p; + } + else { + HEAP.erf_p = fre_u->pre_p; + } + + if ( fre_u->pre_p ) { + u3to(u3a_dell, fre_u->pre_p)->nex_p = fre_u->nex_p; + } + else { + HEAP.fre_p = fre_u->nex_p; + } + + del_u = fre_u; + } + else { + pag_w = fre_u->pag_w; + fre_u->pag_w += siz_w; + fre_u->siz_w -= siz_w; + } + break; + } + + u3_post pag_p; + + if ( pag_w ) { + // XX groace + // + pag_w -= HEAP.off_ws * (siz_w - 1); + pag_p = page_to_post(pag_w); + +#ifdef SANITY + assert( pag_w < HEAP.len_w ); + + // XX sanity + assert( u3a_free_pg == dir_u[pag_w] ); + for ( c3_w i_w = 1; i_w < siz_w; i_w++ ) { + assert( u3a_free_pg == dir_u[pag_w + (HEAP.dir_ws * (c3_ws)i_w)] ); + } +#endif + } + else { + pag_p = _extend_heap(siz_w); + pag_w = post_to_page(pag_p); + dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + +#ifdef SANITY + assert( pag_w < HEAP.len_w ); + assert( (pag_w + ((HEAP.off_ws + 1) * siz_w) - HEAP.off_ws) == HEAP.len_w ); +#endif + } + + dir_u[pag_w] = u3a_head_pg; + + for ( c3_w i_w = 1; i_w < siz_w; i_w++ ) { + dir_u[pag_w + (HEAP.dir_ws * (c3_ws)i_w)] = u3a_rest_pg; + } + + // XX junk + + ASAN_UNPOISON_MEMORY_REGION(u3a_into(pag_p), siz_w << (u3a_page + 2)); + + if ( del_u ) { + if ( !HEAP.cac_p ) { + HEAP.cac_p = u3of(u3a_dell, del_u); + } + else { + _ifree(u3of(u3a_dell, del_u)); + } + } + +#ifdef SANITY + assert( HEAP.len_w == post_to_page(u3R->hat_p + HEAP.off_ws) ); + assert( dir_u[HEAP.len_w - 1] ); +#endif + + return pag_p; +} + +static void +_rake_chunks(c3_w len_w, c3_w max_w, c3_t rak_t, c3_w* out_w, u3_post* out_p) +{ + c3_g bit_g = (c3_g)c3_bits_word(len_w - 1) - u3a_min_log; // 0-9, inclusive + const u3a_hunk_dose *hun_u = &(u3a_Hunk[bit_g]); + u3_post pag_p = HEAP.wee_p[bit_g]; + u3a_crag *pag_u; + c3_w hav_w = *out_w; + + if ( rak_t ) { + c3_w *map_w; + c3_g pos_g; + u3_post bas_p; + c3_w off_w; + + while ( pag_p ) { + pag_u = u3to(u3a_crag, pag_p); + bas_p = page_to_post(pag_u->pag_w); + map_w = pag_u->map_w; + + while ( !*map_w ) { map_w++; } + off_w = (map_w - pag_u->map_w) << 5; + + if ( (max_w - hav_w) < pag_u->fre_s ) { + while ( hav_w < max_w ) { + pos_g = c3_tz_w(*map_w); + *map_w &= ~(1U << pos_g); + + out_p[hav_w++] = bas_p + ((off_w + pos_g) << pag_u->log_s); + pag_u->fre_s--; + + ASAN_UNPOISON_MEMORY_REGION(u3a_into(out_p[hav_w - 1]), (c3_z)hun_u->len_s << 2); + + if ( !*map_w ) { + do { map_w++; } while ( !*map_w ); + off_w = (map_w - pag_u->map_w) << 5; + } + } + + HEAP.wee_p[bit_g] = pag_p; + *out_w = hav_w; + return; + } + + ASAN_UNPOISON_MEMORY_REGION(u3a_into(bas_p), 1U << (u3a_page + 2)); + + while ( 1 ) { + pos_g = c3_tz_w(*map_w); + *map_w &= ~(1U << pos_g); + + out_p[hav_w++] = bas_p + ((off_w + pos_g) << pag_u->log_s); + + if ( !--pag_u->fre_s ) { + break; + } + + if ( !*map_w ) { + do { map_w++; } while ( !*map_w ); + off_w = (map_w - pag_u->map_w) << 5; + } + } + + pag_p = pag_u->nex_p; + pag_u->nex_p = 0; + + if ( hav_w == max_w ) { + HEAP.wee_p[bit_g] = pag_p; + *out_w = hav_w; + return; + } + } + + HEAP.wee_p[bit_g] = 0; + } + + // XX s/b ful_s + if ( hun_u->tot_s > (max_w - hav_w) ) { + *out_w = hav_w; + return; + } + + // manually inlined _make_chunks(), storing each chunk-post to [*out_p] + // + { + u3_post hun_p; + c3_w pag_w; + + pag_p = _alloc_pages(1); + pag_w = post_to_page(pag_p); + hun_p = ( hun_u->hun_s ) ? pag_p : _imalloc(hun_u->siz_s); + pag_u = u3to(u3a_crag, hun_p); + pag_u->pag_w = pag_w; + pag_u->log_s = hun_u->log_s; + pag_u->fre_s = 0; + pag_u->nex_p = 0; + // initialize bitmap (zeros, none free) + // + memset(pag_u->map_w, 0, (c3_z)hun_u->map_s << 2); + + { + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + dir_u[pag_w] = hun_p; + } + + for ( c3_s i_s = hun_u->hun_s; i_s < hun_u->tot_s; i_s++ ) { + out_p[hav_w++] = pag_p + (i_s << pag_u->log_s); + } + + *out_w = hav_w; + } +} + +static u3_post +_make_chunks(c3_g bit_g) // 0-9, inclusive +{ + const u3a_hunk_dose *hun_u = &(u3a_Hunk[bit_g]); + u3a_crag *pag_u; + u3_post hun_p, pag_p = _alloc_pages(1); + c3_w pag_w = post_to_page(pag_p); + + ASAN_POISON_MEMORY_REGION(u3a_into(pag_p), 1U << (u3a_page + 2)); + + if ( hun_u->hun_s ) { + hun_p = pag_p; + ASAN_UNPOISON_MEMORY_REGION(u3a_into(pag_p), (c3_z)hun_u->hun_s << (hun_u->log_s + 2)); + } + else { + hun_p = _imalloc(hun_u->siz_s); + } + + pag_u = u3to(u3a_crag, hun_p); + pag_u->pag_w = pag_w; + pag_u->log_s = hun_u->log_s; + pag_u->fre_s = hun_u->ful_s; + + // initialize bitmap (ones, all free) + // + if ( hun_u->tot_s < 32 ) { + pag_u->map_w[0] = (1U << hun_u->tot_s) - 1; + } + else { + memset(pag_u->map_w, 0xff, (c3_z)hun_u->map_s << 2); + } + + // reserve chunks stolen for pginfo + // NB: max [hun_s] guarded by assertion in _init_once() + // + pag_u->map_w[0] &= ~0U << hun_u->hun_s; + + { + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + dir_u[pag_w] = hun_p; + } + + pag_u->nex_p = HEAP.wee_p[bit_g]; + HEAP.wee_p[bit_g] = hun_p; + + return hun_p; +} + +static u3_post +_alloc_words(c3_w len_w) // 4-2.048, inclusive +{ + c3_g bit_g = (c3_g)c3_bits_word(len_w - 1) - u3a_min_log; // 0-9, inclusive + const u3a_hunk_dose *hun_u = &(u3a_Hunk[bit_g]); + u3a_crag *pag_u; + c3_w *map_w; + c3_g pos_g; + + if ( !HEAP.wee_p[bit_g] ) { + pag_u = u3to(u3a_crag, _make_chunks(bit_g)); + } + else { + pag_u = u3to(u3a_crag, HEAP.wee_p[bit_g]); + // XX sanity + + if ( 1 == pag_u->fre_s ) { + HEAP.wee_p[bit_g] = pag_u->nex_p; + pag_u->nex_p = 0; + } + } + + pag_u->fre_s--; + map_w = pag_u->map_w; + while ( !*map_w ) { map_w++; } + + pos_g = c3_tz_w(*map_w); + *map_w &= ~(1U << pos_g); + + { + u3_post out_p, bas_p = page_to_post(pag_u->pag_w); + c3_w off_w = (map_w - pag_u->map_w) << 5; + + out_p = bas_p + ((off_w + pos_g) << pag_u->log_s); + ASAN_UNPOISON_MEMORY_REGION(u3a_into(out_p), hun_u->len_s << 2); + // XX poison suffix + + return out_p; + } +} + +static u3_post +_imalloc(c3_w len_w) +{ + if ( len_w > (1U << (u3a_page - 1)) ) { + len_w += (1U << u3a_page) - 1; + len_w >>= u3a_page; + // XX poison suffix + return _alloc_pages(len_w); + } + + return _alloc_words(c3_max(len_w, u3a_minimum)); +} + +static inline c3_w +_pages_size(c3_w pag_w) +{ + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + c3_w siz_w = 1; + + // head-page 0 in a south road can only have a size of 1 + // + if ( pag_w || !HEAP.off_ws ) { + while( dir_u[pag_w + (HEAP.dir_ws * (c3_ws)siz_w)] == u3a_rest_pg ) { + siz_w++; + } + } + + return siz_w; +} + +static c3_w +_free_pages(u3_post som_p, c3_w pag_w, u3_post dir_p) +{ + u3a_dell *cac_u, *fre_u, *del_u = NULL; + c3_w nex_w, siz_w = 1; + u3_post fre_p; + + if ( u3a_free_pg == dir_p ) { + fprintf(stderr, "\033[31m" + "palloc: double free page som_p=0x%x pag_w=%u\r\n" + "\033[0m", + som_p, pag_w); + u3_assert(!"loom: corrupt"); return 0; + } + + if ( u3a_head_pg != dir_p ) { + fprintf(stderr, "\033[31m" + "palloc: wrong page som_p=0x%x dir_p=0x%x\r\n" + "\033[0m", + som_p, dir_p); + u3_assert(!"loom: corrupt"); return 0; + } + + if ( som_p & ((1U << u3a_page) - 1) ) { + fprintf(stderr, "\033[31m" + "palloc: bad page alignment som_p=0x%x\r\n" + "\033[0m", + som_p); + u3_assert(!"loom: corrupt"); return 0; + } + + { + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + + dir_u[pag_w] = u3a_free_pg; + + // head-page 0 in a south road can only have a size of 1 + // + if ( pag_w || !HEAP.off_ws ) { + while( dir_u[pag_w + (HEAP.dir_ws * (c3_ws)siz_w)] == u3a_rest_pg ) { + dir_u[pag_w + (HEAP.dir_ws * (c3_ws)siz_w)] = u3a_free_pg; + siz_w++; + } + } + } + + // XX groace + // + if ( HEAP.off_ws ) { + nex_w = pag_w + 1; + pag_w = nex_w - siz_w; + } + else { + nex_w = pag_w + siz_w; + } + +#ifdef SANITY + assert( pag_w < HEAP.len_w ); + assert( HEAP.len_w == post_to_page(u3R->hat_p + HEAP.off_ws) ); +#endif + + if ( nex_w == HEAP.len_w ) { + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + c3_w wiz_w = siz_w; + + // check if prior pages are already free + // + if ( !dir_u[HEAP.len_w - (siz_w + 1)] ) { + assert( HEAP.erf_p ); + fre_u = u3to(u3a_dell, HEAP.erf_p); + assert( (fre_u->pag_w + fre_u->siz_w) == pag_w ); + + if ( fre_u->pre_p ) { + HEAP.erf_p = fre_u->pre_p; + u3to(u3a_dell, fre_u->pre_p)->nex_p = 0; + } + else { + HEAP.fre_p = HEAP.erf_p = 0; + } + + pag_w = fre_u->pag_w; // NB: clobbers + siz_w += fre_u->siz_w; + + // XX groace + // + pag_w -= HEAP.off_ws * (siz_w - 1); + som_p = page_to_post(pag_w); + } + else { + fre_u = NULL; + } + + ASAN_UNPOISON_MEMORY_REGION(u3a_into(som_p), siz_w << (u3a_page + 2)); + u3R->hat_p -= HEAP.dir_ws * (c3_ws)(siz_w << u3a_page); + HEAP.len_w -= siz_w; + + // fprintf(stderr, "shrink heap 0x%x 0x%x %u:%u (%u) 0x%x\r\n", + // som_p, som_p + (siz_w << u3a_page), pag_w, wiz_w, siz_w, u3R->hat_p); + +#ifdef SANITY + assert( HEAP.len_w == post_to_page(u3R->hat_p + HEAP.off_ws) ); + assert( dir_u[HEAP.len_w - 1] ); +#endif + + if ( fre_u ) { + _ifree(u3of(u3a_dell, fre_u)); + } + + return wiz_w; + } + + // XX madv_free + + ASAN_POISON_MEMORY_REGION(u3a_into(som_p), siz_w << (u3a_page + 2)); + + // XX add temporary freelist entry? + // if ( !HEAP.cac_p && !HEAP.fre_p + // && !HEAP.wee_p[(c3_bits_word(c3_wiseof(*cac_u) - 1) - u3a_min_log)] ) + // { + // fprintf(stderr, "palloc: growing heap to free pages\r\n"); + // } + + if ( !HEAP.cac_p ) { + fre_p = _imalloc(c3_wiseof(*cac_u)); + } + else { + fre_p = HEAP.cac_p; + HEAP.cac_p = 0; + } + + cac_u = u3to(u3a_dell, fre_p); + cac_u->pag_w = pag_w; + cac_u->siz_w = siz_w; + + if ( !(fre_u = u3tn(u3a_dell, HEAP.fre_p)) ) { + // fprintf(stderr, "free pages 0x%x (%u) via 0x%x\r\n", som_p, siz_w, HEAP.cac_p); + cac_u->nex_p = 0; + cac_u->pre_p = 0; + HEAP.fre_p = HEAP.erf_p = fre_p; + fre_p = 0; + } + else { + c3_w fex_w; + + while ( ((fex_w = fre_u->pag_w + fre_u->siz_w) < pag_w) + && fre_u->nex_p ) + { + fre_u = u3to(u3a_dell, fre_u->nex_p); + } + + if ( fre_u->pag_w > nex_w ) { // insert before + cac_u->nex_p = u3of(u3a_dell, fre_u); + cac_u->pre_p = fre_u->pre_p; + + fre_u->pre_p = fre_p; + + // XX sanity + if ( cac_u->pre_p ) { + u3to(u3a_dell, cac_u->pre_p)->nex_p = fre_p; + } + else { + HEAP.fre_p = fre_p; + } + + fre_p = 0; + } + else if ( fex_w == pag_w ) { // append to entry + fre_u->siz_w += siz_w; + + // coalesce with next entry + // + if ( fre_u->nex_p + && ((fex_w + siz_w) == u3to(u3a_dell, fre_u->nex_p)->pag_w) ) + { + del_u = u3to(u3a_dell, fre_u->nex_p); + fre_u->siz_w += del_u->siz_w; + fre_u->nex_p = del_u->nex_p; + + // XX sanity + if ( del_u->nex_p ) { + u3to(u3a_dell, del_u->nex_p)->pre_p = u3of(u3a_dell, fre_u); + } + else { + HEAP.erf_p = u3of(u3a_dell, fre_u); + } + } + } + else if ( fre_u->pag_w == nex_w ) { // prepend to entry + fre_u->siz_w += siz_w; + fre_u->pag_w = pag_w; + } + else if ( !fre_u->nex_p ) { // insert after + cac_u->nex_p = 0; + cac_u->pre_p = u3of(u3a_dell, fre_u); + HEAP.erf_p = fre_u->nex_p = fre_p; + fre_p = 0; + } + else { + fprintf(stderr, "\033[31m" + "palloc: free list hosed at som_p=0x%x pag=%u len=%u\r\n" + "\033[0m", + (u3_post)u3of(u3a_dell, fre_u), fre_u->pag_w, fre_u->siz_w); + u3_assert(!"loom: corrupt"); return 0; + } + } + + if ( fre_p ) { + if ( !HEAP.cac_p ) { + HEAP.cac_p = fre_p; + } + else { + _ifree(fre_p); + } + + if ( del_u ) { + _ifree(u3of(u3a_dell, del_u)); + } + } + + return siz_w; +} + +static void +_free_words(u3_post som_p, c3_w pag_w, u3_post dir_p) +{ + u3a_crag *pag_u = u3to(u3a_crag, dir_p); + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + +#ifdef SANITY + assert( page_to_post(pag_u->pag_w) == (som_p & ~((1U << u3a_page) - 1)) ); + assert( pag_u->log_s < u3a_page ); +#endif + + c3_g bit_g = pag_u->log_s - u3a_min_log; + c3_w pos_w = (som_p & ((1U << u3a_page) - 1)) >> pag_u->log_s; + const u3a_hunk_dose *hun_u = &(u3a_Hunk[bit_g]); + + if ( som_p & (hun_u->len_s - 1) ) { + fprintf(stderr, "\033[31m" + "palloc: bad alignment som_p=0x%x pag=%u cag=0x%x len_s=%u\r\n" + "\033[0m", + som_p, post_to_page(som_p), dir_p, hun_u->len_s); + u3_assert(!"loom: corrupt"); return; + } + + if ( pag_u->map_w[pos_w >> 5] & (1U << (pos_w & 31)) ) { + fprintf(stderr, "\033[31m" + "palloc: double free som_p=0x%x pag=0x%x\r\n" + "\033[0m", + som_p, dir_p); + u3_assert(!"loom: corrupt"); return; + } + + pag_u->map_w[pos_w >> 5] |= (1U << (pos_w & 31)); + pag_u->fre_s++; + + ASAN_POISON_MEMORY_REGION(u3a_into(som_p), hun_u->len_s << 2); + + { + u3_post *bit_p = &(HEAP.wee_p[bit_g]); + u3a_crag *bit_u, *nex_u; + + if ( 1 == pag_u->fre_s ) { + // page newly non-full, link + // + + if ( &(u3H->rod_u) == u3R ) { + while ( *bit_p ) { + bit_u = u3to(u3a_crag, *bit_p); + nex_u = u3tn(u3a_crag, bit_u->nex_p); + + if ( nex_u && (nex_u->pag_w < pag_u->pag_w) ) { + bit_p = &(bit_u->nex_p); + continue; + } + + break; + } + } + + pag_u->nex_p = *bit_p; + *bit_p = dir_p; + } + else if ( pag_u->fre_s == hun_u->ful_s ) { + // page now free + // + while ( *bit_p != dir_p ) { + bit_u = u3to(u3a_crag, *bit_p); + bit_p = &(bit_u->nex_p); + + // XX sanity: must be in list + } + + *bit_p = pag_u->nex_p; + + dir_u[pag_u->pag_w] = u3a_head_pg; + som_p = page_to_post(pag_u->pag_w); // NB: clobbers + if ( som_p != dir_p ) { + _ifree(dir_p); + } + _ifree(som_p); + } + } +} + +static void +_ifree(u3_post som_p) +{ + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + c3_w pag_w = post_to_page(som_p); + + if ( pag_w >= HEAP.len_w ) { + fprintf(stderr, "\033[31m" + "palloc: page out of heap som_p=0x%x pag_w=%u len_w=%u\r\n" + "\033[0m", + som_p, pag_w, HEAP.len_w); + u3_assert(!"loom: corrupt"); return; + } + + u3_post dir_p = dir_u[pag_w]; + + if ( dir_p <= u3a_rest_pg ) { + (void)_free_pages(som_p, pag_w, dir_p); + } + else { + _free_words(som_p, pag_w, dir_p); + } +} + +static u3_post +_irealloc(u3_post som_p, c3_w len_w) +{ + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + c3_w pag_w = post_to_page(som_p); + c3_w old_w; + + if ( pag_w >= HEAP.len_w ) { + fprintf(stderr, "\033[31m" + "palloc: realloc page out of heap som_p=0x%x pag_w=%u\r\n" + "\033[0m", + som_p, pag_w); + u3_assert(!"loom: corrupt"); return 0; + } + + u3_post dir_p = dir_u[pag_w]; + + if ( u3a_head_pg == dir_p ) { + if ( som_p & ((1U << u3a_page) - 1) ) { + fprintf(stderr, "\033[31m" + "palloc: realloc bad page alignment som_p=0x%x\r\n" + "\033[0m", + som_p); + u3_assert(!"loom: corrupt"); return 0; + } + + { + c3_w dif_w, siz_w = _pages_size(pag_w); + + old_w = siz_w << u3a_page; + + if ( (len_w < old_w) + && (dif_w = (old_w - len_w) >> u3a_page) ) + { + pag_w += HEAP.dir_ws * (siz_w - dif_w); + (void)_free_pages(page_to_post(pag_w), pag_w, u3a_head_pg); + + // XX junk + // XX unpoison prefix, poison suffix + return som_p; + } + + // XX also grow in place if sufficient adjacent pages are free? + } + } + else if ( u3a_rest_pg >= dir_p ) { + fprintf(stderr, "\033[31m" + "palloc: realloc wrong page som_p=0x%x\r\n" + "\033[0m", + som_p); + u3_assert(!"loom: corrupt"); return 0; + } + else { + u3a_crag *pag_u = u3to(u3a_crag, dir_p); + c3_w pos_w = (som_p & ((1U << u3a_page) - 1)) >> pag_u->log_s; + const u3a_hunk_dose *hun_u = &(u3a_Hunk[pag_u->log_s - u3a_min_log]); + + if ( som_p & (hun_u->len_s - 1) ) { + fprintf(stderr, "\033[31m" + "palloc: realloc bad alignment som_p=0x%x pag=0x%x len_s=%u\r\n" + "\033[0m", + som_p, dir_p, hun_u->len_s); + u3_assert(!"loom: corrupt"); return 0; + } + + if ( pag_u->map_w[pos_w >> 5] & (1U << (pos_w & 31)) ) { + fprintf(stderr, "\033[31m" + "palloc: realloc free som_p=0x%x pag=0x%x\r\n" + "\033[0m", + som_p, dir_p); + u3_assert(!"loom: corrupt"); return 0; + } + + old_w = hun_u->len_s; + + if ( (len_w <= old_w) + && ((len_w > (old_w >> 1)) || (u3a_minimum == old_w)) ) + { + // XX junk + // XX unpoison prefix, poison suffix + return som_p; + } + } + + { + u3_post new_p = _imalloc(len_w); + + memcpy(u3a_into(new_p), u3a_into(som_p), (c3_z)c3_min(len_w, old_w) << 2); + _ifree(som_p); + + return new_p; + } +} + +static void +_post_status(u3_post som_p) +{ + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + c3_w pag_w = post_to_page(som_p); + + if ( pag_w >= HEAP.len_w ) { + fprintf(stderr, "palloc: out of heap: post som_p=0x%x pag_w=%u len_w=%u\r\n", + som_p, pag_w, HEAP.len_w); + return; + } + + u3_post dir_p = dir_u[pag_w]; + + if ( dir_p <= u3a_rest_pg ) { + if ( som_p & ((1U << u3a_page) - 1) ) { + fprintf(stderr, "palloc: page not aligned som_p=0x%x (0x%x)\r\n", + som_p, som_p & ~(((1U << u3a_page) - 1))); + } + + if ( u3a_free_pg == dir_p ) { + fprintf(stderr, "palloc: free page som_p=0x%x pag_w=%u\r\n", + som_p, pag_w); + } + else if ( u3a_head_pg != dir_p ) { + fprintf(stderr, "palloc: rest page som_p=0x%x dir_p=0x%x\r\n", + som_p, dir_p); + } + else { + // XX include size + fprintf(stderr, "palloc: head page in-use som_p=0x%x\r\n", + som_p); + } + } + else { + u3a_crag *pag_u = u3to(u3a_crag, dir_p); + +#ifdef SANITY + assert( page_to_post(pag_u->pag_w) == (som_p & ~((1U << u3a_page) - 1)) ); + assert( pag_u->log_s < u3a_page ); +#endif + + c3_w pos_w = (som_p & ((1U << u3a_page) - 1)) >> pag_u->log_s; + const u3a_hunk_dose *hun_u = &(u3a_Hunk[pag_u->log_s - u3a_min_log]); + + if ( som_p & (hun_u->len_s - 1) ) { + fprintf(stderr, "palloc: bad alignment som_p=0x%x (0x%x) pag=0x%x len_s=%u\r\n", + som_p, som_p & ~((1U << u3a_page) - 1), + dir_p, hun_u->len_s); + } + + if ( pag_u->map_w[pos_w >> 5] & (1U << (pos_w & 31)) ) { + fprintf(stderr, "palloc: words free som_p=0x%x pag=0x%x len=%u\r\n", + som_p, dir_p, hun_u->len_s); + } + else { + fprintf(stderr, "palloc: words in-use som_p=0x%x pag=0x%x, len=%u\r\n", + som_p, dir_p, hun_u->len_s); + } + } +} + +static c3_w +_idle_pages(void) +{ + u3a_dell* fre_u = u3tn(u3a_dell, HEAP.fre_p); + c3_w tot_w = 0; + + while ( fre_u ) { + tot_w += fre_u->siz_w; + fre_u = u3tn(u3a_dell, fre_u->nex_p); + } + + return tot_w; +} + +static c3_w +_idle_words(void) +{ + u3a_crag *pag_u; + c3_w pag_w, siz_w, tot_w = 0; + + for ( c3_w i_w = 0; i_w < u3a_crag_no; i_w++ ) { + pag_u = u3tn(u3a_crag, HEAP.wee_p[i_w]); + siz_w = pag_w = 0; + + while ( pag_u ) { + siz_w += pag_u->fre_s; + pag_u = u3tn(u3a_crag, pag_u->nex_p); + pag_w++; + } + + if ( (u3C.wag_w & u3o_verbose) && siz_w ) { + fprintf(stderr, "idle words: class=%u (%u words) blocks=%u (in %u pages) ", + i_w, (1U << (i_w + u3a_min_log)), siz_w, pag_w); + u3a_print_memory(stderr, "total", siz_w << (i_w + u3a_min_log)); + } + + tot_w += siz_w << (i_w + u3a_min_log); + } + + return tot_w; +} + +static void +_poison_pages(void) +{ + u3a_dell *fre_u = u3tn(u3a_dell, HEAP.fre_p); + u3_post pag_p; + + while ( fre_u ) { + pag_p = page_to_post(fre_u->pag_w); + ASAN_POISON_MEMORY_REGION(u3a_into(pag_p), fre_u->siz_w << (u3a_page + 2)); + fre_u = u3tn(u3a_dell, fre_u->nex_p); + } +} + +static void +_poison_words(void) +{ + const u3a_hunk_dose *hun_u; + u3_post pag_p, hun_p; + u3a_crag *pag_u; + c3_w off_w, wor_w, len_w, *map_w; + c3_g pos_g; + c3_s fre_s; + + for ( c3_w i_w = 0; i_w < u3a_crag_no; i_w++ ) { + hun_u = &(u3a_Hunk[i_w]); + pag_u = u3tn(u3a_crag, HEAP.wee_p[i_w]); + + while ( pag_u ) { + pag_p = page_to_post(pag_u->pag_w); + map_w = pag_u->map_w; + len_w = (c3_w)hun_u->len_s << 2; + fre_s = pag_u->fre_s; + + do { + while ( !*map_w ) { map_w++; } + wor_w = *map_w; + off_w = (map_w - pag_u->map_w) << 5; + + do { + pos_g = c3_tz_w(wor_w); + wor_w &= ~(1U << pos_g); + hun_p = pag_p + ((off_w + pos_g) << pag_u->log_s); + + ASAN_POISON_MEMORY_REGION(u3a_into(hun_p), len_w); + + } while ( --fre_s && wor_w ); + + map_w++; + } while ( fre_s ); + + pag_u = u3tn(u3a_crag, pag_u->nex_p); + } + } +} + +static void +_unpoison_words(void) +{ + u3a_crag *pag_u; + u3_post pag_p; + + for ( c3_w i_w = 0; i_w < u3a_crag_no; i_w++ ) { + pag_u = u3tn(u3a_crag, HEAP.wee_p[i_w]); + + while ( pag_u ) { + pag_p = page_to_post(pag_u->pag_w); + ASAN_UNPOISON_MEMORY_REGION(u3a_into(pag_p), 1U << (u3a_page + 2)); + pag_u = u3tn(u3a_crag, pag_u->nex_p); + } + } +} + +static c3_w +_mark_post(u3_post som_p) +{ + c3_w pag_w = post_to_page(som_p); + c3_w blk_w = pag_w >> 5; + c3_w bit_w = pag_w & 31; + c3_w siz_w; + + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + u3_post dir_p = dir_u[pag_w]; + + // som_p is a one-or-more page allocation + // + if ( dir_p <= u3a_rest_pg ) { + if ( som_p & ((1U << u3a_page) - 1) ) { + fprintf(stderr, "palloc: mark: page not aligned som_p=0x%x (0x%x)\r\n", + som_p, som_p & ~(((1U << u3a_page) - 1))); + return 0; + } + + if ( u3a_free_pg == dir_p ) { + fprintf(stderr, "palloc: mark: free page som_p=0x%x pag_w=%u\r\n", + som_p, pag_w); + return 0; + } + else if ( u3a_head_pg != dir_p ) { + fprintf(stderr, "palloc: mark: rest page som_p=0x%x dir_p=0x%x\r\n", + som_p, dir_p); + return 0; + } + + // page(s) already marked + // + if ( u3a_Mark.bit_w[blk_w] & (1U << bit_w) ) { + return 0; + } + + u3a_Mark.bit_w[blk_w] |= 1U << bit_w; + + siz_w = _pages_size(pag_w); + siz_w <<= u3a_page; + + return siz_w; + } + // som_p is a chunk allocation + // + else { + u3a_crag *pag_u = u3to(u3a_crag, dir_p); + c3_w pos_w = (som_p & ((1U << u3a_page) - 1)) >> pag_u->log_s; + c3_g bit_g = pag_u->log_s - u3a_min_log; + const u3a_hunk_dose *hun_u = &(u3a_Hunk[bit_g]); + c3_w *mar_w; + + if ( som_p & (hun_u->len_s - 1) ) { + fprintf(stderr, "palloc: mark: bad alignment som_p=0x%x (0x%x) pag=0x%x (%u) len_s=%u\r\n", + som_p, som_p & ~((1U << u3a_page) - 1), + dir_p, pag_u->pag_w, hun_u->len_s); + return 0; + } + + if ( pag_u->map_w[pos_w >> 5] & (1U << (pos_w & 31)) ) { + fprintf(stderr, "palloc: mark: words free som_p=0x%x pag=0x%x (%u) len=%u\r\n", + som_p, dir_p, pag_u->pag_w, hun_u->len_s); + return 0; + } + + // page is marked + // + if ( u3a_Mark.bit_w[blk_w] & (1U << bit_w) ) { + mar_w = u3a_Mark.buf_w + u3a_Mark.buf_w[pag_w]; + + if ( !(mar_w[pos_w >> 5] & (1U << (pos_w & 31))) ) { + return 0; + } + } + // page is unmarked, allocate and initialize mark-array + // + else { + mar_w = u3a_mark_alloc(hun_u->map_s); + u3a_Mark.buf_w[pag_w] = mar_w - u3a_Mark.buf_w; + memset(mar_w, 0xff, (c3_z)hun_u->map_s << 2); + + // mark page metadata + // + if ( !hun_u->hun_s ) { + u3a_Mark.wee_w[bit_g] += _mark_post(dir_p); + mar_w = u3a_Mark.buf_w + u3a_Mark.buf_w[pag_w]; + } + else { + // NB: max [hun_s] guarded by assertion in _init_once() + // + mar_w[0] &= ~0U << hun_u->hun_s; + u3a_Mark.wee_w[bit_g] += (c3_w)hun_u->hun_s << pag_u->log_s; + } + + u3a_Mark.bit_w[blk_w] |= 1U << bit_w; + } + + mar_w[pos_w >> 5] &= ~(1U << (pos_w & 31)); + siz_w = hun_u->len_s; + + return siz_w; + } +} + +static void +_print_chunk(FILE* fil_u, u3_post som_p, c3_w siz_w) +{ + c3_w *ptr_w = u3to(c3_w, som_p); + + fprintf(fil_u, "{ "); + // XX log minimum or u3a_minimum + for ( c3_w j_w = 0; j_w < 4; j_w++ ) { + fprintf(fil_u, "0x%x, ", ptr_w[j_w]); + } + + if ( siz_w > 4 ) { + fprintf(fil_u, "... "); + } + + fprintf(fil_u, "}\r\n"); +} + +static c3_w +_sweep_directory(void) +{ + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + c3_w pag_w, blk_w, bit_w, siz_w, leq_w = 0, tot_w = 0; + u3_post dir_p; + + // unlink leaked whole chunk-pages + // (we do this first so we won't need to dereference the metadata) + // + { + u3a_crag *pag_u; + u3_post *bit_p; + c3_g bit_g; + + for ( bit_g = 0; bit_g < u3a_crag_no; bit_g++ ) { + bit_p = &(HEAP.wee_p[bit_g]); + + while ( *bit_p ) { + pag_u = u3to(u3a_crag, *bit_p); + pag_w = pag_u->pag_w; + blk_w = pag_w >> 5; + bit_w = pag_w & 31; + + if ( !(u3a_Mark.bit_w[blk_w] & (1U << bit_w)) ) { + *bit_p = pag_u->nex_p; + } + else { + bit_p = &(pag_u->nex_p); + } + } + } + } + + for ( pag_w = 0; pag_w < HEAP.len_w; pag_w++ ) { + blk_w = pag_w >> 5; + bit_w = pag_w & 31; + dir_p = dir_u[pag_w]; + + if ( u3a_head_pg == dir_p ) { + if ( !(u3a_Mark.bit_w[blk_w] & (1U << bit_w)) ) { + siz_w = _free_pages(page_to_post(pag_w), pag_w, dir_p); + if ( 1 == siz_w ) { + fprintf(stderr, "palloc: leaked page %u\r\n", pag_w); + } + else { + fprintf(stderr, "palloc: leaked pages %u-%u\r\n", + pag_w, pag_w + siz_w - 1); + } + leq_w += siz_w << u3a_page; + } + else { + siz_w = _pages_size(pag_w); + tot_w += siz_w << u3a_page; + } + } + else if ( u3a_rest_pg < dir_p ) { + // entire chunk page is unmarked + // + if ( !(u3a_Mark.bit_w[blk_w] & (1U << bit_w)) ) { + fprintf(stderr, "palloc: leaked chunk page %u\r\n", pag_w); + (void)_free_pages(page_to_post(pag_w), pag_w, u3a_head_pg); + leq_w += 1U << u3a_page; + } + else { + u3a_crag *pag_u = u3to(u3a_crag, dir_p); + c3_g bit_g = pag_u->log_s - u3a_min_log; + const u3a_hunk_dose *hun_u = &(u3a_Hunk[bit_g]); + u3_post som_p, bas_p = page_to_post(pag_u->pag_w); + c3_w *mar_w = u3a_Mark.buf_w + u3a_Mark.buf_w[pag_w]; + + siz_w = hun_u->len_s; + + if ( 0 == memcmp(mar_w, pag_u->map_w, (c3_z)hun_u->map_s << 2) ) { + tot_w += siz_w * (hun_u->tot_s - pag_u->fre_s); + } + // NB: since at least one chunk is marked, + // _free_words() will never free [pag_u] + // + else { + for ( c3_s i_s = 0; i_s < hun_u->tot_s; i_s++ ) { + blk_w = i_s >> 5; + bit_w = i_s & 31; + + if ( !(pag_u->map_w[blk_w] & (1U << bit_w)) ) { + if ( !(mar_w[blk_w] & (1U << bit_w)) ) { + tot_w += siz_w; + } + else { + som_p = bas_p + ((c3_w)i_s << pag_u->log_s); + + fprintf(stderr, "palloc: leak: 0x%x (chunk %u in page %u)\r\n", som_p, i_s, pag_w); + + _print_chunk(stderr, som_p, siz_w); + _free_words(som_p, pag_w, dir_p); + leq_w += siz_w; + } + } + } + } + } + } + } + + if ( leq_w ) { + u3a_print_memory(stderr, "palloc: sweep: leaked", leq_w); + // u3_assert(0); + } + + if ( u3C.wag_w & u3o_verbose ) { + u3a_print_memory(stderr, "palloc: off-heap: used", u3a_Mark.len_w); + u3a_print_memory(stderr, "palloc: off-heap: total", u3a_Mark.siz_w); + } + + u3a_mark_done(); // XX move + + return tot_w; +} + +static c3_w +_count_post(u3_post som_p, c3_y rat_y) +{ + c3_w pag_w = post_to_page(som_p); + c3_w blk_w = pag_w >> 5; + c3_w bit_w = pag_w & 31; + c3_w siz_w; + + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + u3_post dir_p = dir_u[pag_w]; + + // som_p is a one-or-more page allocation + // + if ( dir_p <= u3a_rest_pg ) { + if ( som_p & ((1U << u3a_page) - 1) ) { + fprintf(stderr, "palloc: mark: page not aligned som_p=0x%x (0x%x)\r\n", + som_p, som_p & ~(((1U << u3a_page) - 1))); + return 0; + } + + if ( u3a_free_pg == dir_p ) { + fprintf(stderr, "palloc: mark: free page som_p=0x%x pag_w=%u\r\n", + som_p, pag_w); + return 0; + } + else if ( u3a_head_pg != dir_p ) { + fprintf(stderr, "palloc: mark: rest page som_p=0x%x dir_p=0x%x\r\n", + som_p, dir_p); + return 0; + } + + switch ( rat_y ) { + case 0: { // not refcounted + u3_assert( (c3_ws)u3a_Mark.buf_w[pag_w] <= 0 ); + u3a_Mark.buf_w[pag_w] -= 1; + } break; + + case 1: { // refcounted + // NB: "premarked" + // + if ( 0x80000000 == u3a_Mark.buf_w[pag_w] ) { + u3a_Mark.buf_w[pag_w] = 1; + } + else { + u3_assert( (c3_ws)u3a_Mark.buf_w[pag_w] >= 0 ); + u3a_Mark.buf_w[pag_w] += 1; + } + } break; + + case 2: { // refcounted, pre-mark + if ( !u3a_Mark.buf_w[pag_w] ) { + u3a_Mark.buf_w[pag_w] = 0x80000000; + } + } break; + + default: u3_assert(0); + } + + // page(s) already marked + // + if ( u3a_Mark.bit_w[blk_w] & (1U << bit_w) ) { + return 0; + } + + u3a_Mark.bit_w[blk_w] |= 1U << bit_w; + + siz_w = _pages_size(pag_w); + siz_w <<= u3a_page; + + return siz_w; + } + // som_p is a chunk allocation + // + else { + u3a_crag *pag_u = u3to(u3a_crag, dir_p); + c3_g bit_g = pag_u->log_s - u3a_min_log; + const u3a_hunk_dose *hun_u = &(u3a_Hunk[bit_g]); + c3_w pos_w = (som_p & ((1U << u3a_page) - 1)) >> pag_u->log_s; + c3_w *mar_w; + + if ( som_p & (hun_u->len_s - 1) ) { + fprintf(stderr, "palloc: count: bad alignment som_p=0x%x (0x%x) pag=0x%x (%u) len_s=%u\r\n", + som_p, som_p & ~((1U << u3a_page) - 1), + dir_p, pag_u->pag_w, hun_u->len_s); + return 0; + } + + if ( pag_u->map_w[pos_w >> 5] & (1U << (pos_w & 31)) ) { + fprintf(stderr, "palloc: count: words free som_p=0x%x pag=0x%x (%u) len=%u\r\n", + som_p, dir_p, pag_u->pag_w, hun_u->len_s); + return 0; + } + + // page is marked + // + if ( u3a_Mark.bit_w[blk_w] & (1U << bit_w) ) { + mar_w = u3a_Mark.buf_w + u3a_Mark.buf_w[pag_w]; + siz_w = (!mar_w[pos_w]) ? hun_u->len_s : 0; + } + // page is unmarked, allocate and initialize mark-array + // + else { + siz_w = hun_u->len_s; + mar_w = u3a_mark_alloc(hun_u->tot_s); + u3a_Mark.buf_w[pag_w] = mar_w - u3a_Mark.buf_w; + memset(mar_w, 0, (c3_z)hun_u->tot_s << 2); + + // mark page metadata + // + if ( !hun_u->hun_s ) { + u3a_Mark.wee_w[bit_g] += _count_post(dir_p, 0); + mar_w = u3a_Mark.buf_w + u3a_Mark.buf_w[pag_w]; + } + else { + memset(mar_w, 0xff, (c3_z)hun_u->hun_s << 2); + u3a_Mark.wee_w[bit_g] += (c3_w)hun_u->hun_s << pag_u->log_s; + } + + u3a_Mark.bit_w[blk_w] |= 1U << bit_w; + } + + switch ( rat_y ) { + case 0: { // not refcounted + u3_assert( (c3_ws)mar_w[pos_w] <= 0 ); + mar_w[pos_w] -= 1; + } break; + + case 1: { // refcounted + // NB: "premarked" + // + if ( 0x80000000 == mar_w[pos_w] ) { + mar_w[pos_w] = 1; + } + else { + u3_assert( (c3_ws)mar_w[pos_w] >= 0 ); + mar_w[pos_w] += 1; + } + } break; + + case 2: { // refcounted, pre-mark + if ( !mar_w[pos_w] ) { + mar_w[pos_w] = 0x80000000; + } + } break; + + default: u3_assert(0); + } + + return siz_w; + } +} + +static c3_w +_sweep_counts(void) +{ + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + c3_w pag_w, blk_w, bit_w, siz_w, weq_w = 0, leq_w = 0, tot_w = 0; + u3_post dir_p, som_p; + c3_w *use_w; + + // unlink leaked whole chunk-pages + // (we do this first so we won't need to dereference the metadata) + // + { + u3a_crag *pag_u; + u3_post *bit_p; + c3_g bit_g; + + for ( bit_g = 0; bit_g < u3a_crag_no; bit_g++ ) { + bit_p = &(HEAP.wee_p[bit_g]); + + while ( *bit_p ) { + pag_u = u3to(u3a_crag, *bit_p); + pag_w = pag_u->pag_w; + blk_w = pag_w >> 5; + bit_w = pag_w & 31; + + if ( !(u3a_Mark.bit_w[blk_w] & (1U << bit_w)) ) { + *bit_p = pag_u->nex_p; + } + else { + bit_p = &(pag_u->nex_p); + } + } + } + } + + for ( pag_w = 0; pag_w < HEAP.len_w; pag_w++ ) { + blk_w = pag_w >> 5; + bit_w = pag_w & 31; + dir_p = dir_u[pag_w]; + + if ( u3a_head_pg == dir_p ) { + som_p = page_to_post(pag_w); + + if ( !(u3a_Mark.bit_w[blk_w] & (1U << bit_w)) ) { + siz_w = _free_pages(som_p, pag_w, dir_p); + if ( 1 == siz_w ) { + fprintf(stderr, "palloc: leaked page %u (0x%x)\r\n", pag_w, page_to_post(pag_w)); + } + else { + fprintf(stderr, "palloc: leaked pages %u-%u (0x%x)\r\n", + pag_w, pag_w + siz_w - 1, page_to_post(pag_w)); + } + leq_w += siz_w << u3a_page; + } + else { + siz_w = _pages_size(pag_w); + + if ( (c3_ws)u3a_Mark.buf_w[pag_w] > 0 ) { + use_w = u3to(c3_w, som_p); + + if ( *use_w != u3a_Mark.buf_w[pag_w] ) { + fprintf(stderr, "weak: 0x%x have %u need %u\r\n", som_p, *use_w, u3a_Mark.buf_w[pag_w]); + *use_w = u3a_Mark.buf_w[pag_w]; + weq_w += siz_w << u3a_page;; + } + else { + tot_w += siz_w << u3a_page; + } + } + else if ( 0x80000000 == u3a_Mark.buf_w[pag_w] ) { + fprintf(stderr, "sweep: error: premarked %u pages at 0x%x\r\n", + siz_w, som_p); + u3_assert(0); + } + else { + tot_w += siz_w << u3a_page; + } + } + } + else if ( u3a_rest_pg < dir_p ) { + // entire chunk page is unmarked + // + if ( !(u3a_Mark.bit_w[blk_w] & (1U << bit_w)) ) { + fprintf(stderr, "palloc: leaked chunk page %u\r\n", pag_w); + (void)_free_pages(page_to_post(pag_w), pag_w, u3a_head_pg); + leq_w += 1U << u3a_page; + } + else { + u3a_crag *pag_u = u3to(u3a_crag, dir_p); + c3_g bit_g = pag_u->log_s - u3a_min_log; + const u3a_hunk_dose *hun_u = &(u3a_Hunk[bit_g]); + u3_post bas_p = page_to_post(pag_u->pag_w); + c3_w *mar_w = u3a_Mark.buf_w + u3a_Mark.buf_w[pag_w]; + c3_w pos_w; + + siz_w = hun_u->len_s; + + // NB: since at least one chunk is marked, + // _free_words() will never free [pag_u] + // + for ( c3_s i_s = 0; i_s < hun_u->tot_s; i_s++ ) { + pos_w = i_s; + blk_w = i_s >> 5; + bit_w = i_s & 31; + som_p = bas_p + ((c3_w)i_s << pag_u->log_s); + + if ( !(pag_u->map_w[blk_w] & (1U << bit_w)) ) { + if ( mar_w[pos_w] ) { + if ( (c3_ws)mar_w[pos_w] > 0 ) { + use_w = u3to(c3_w, som_p); + + if ( *use_w != mar_w[pos_w] ) { + fprintf(stderr, "weak: 0x%x have %u need %u\r\n", som_p, *use_w, mar_w[pos_w]); + _print_chunk(stderr, som_p, siz_w); + *use_w = mar_w[pos_w]; + weq_w += siz_w; + } + else { + tot_w += siz_w; + } + } + else if ( 0x80000000 == mar_w[pos_w] ) { + fprintf(stderr, "sweep: error: premarked 0x%x (chunk %u in page %u)\r\n", + som_p, i_s, pag_w); + u3_assert(0); + } + else { + if ( (c3_ws)mar_w[pos_w] < -1 ) { + fprintf(stderr, "alias: 0x%x count %d\r\n", som_p, (c3_ws)mar_w[pos_w]); + } + tot_w += siz_w; + } + } + else { + fprintf(stderr, "palloc: leak: 0x%x (chunk %u in page %u)\r\n", som_p, i_s, pag_w); + + _print_chunk(stderr, som_p, siz_w); + _free_words(som_p, pag_w, dir_p); + leq_w += siz_w; + } + } + } + } + } + } + + if ( leq_w ) { + u3a_print_memory(stderr, "palloc: sweep: leaked", leq_w); + // u3_assert(0); + } + if ( weq_w ) { + u3a_print_memory(stderr, "palloc: sweep: weaked", weq_w); + // u3_assert(0); + } + + if ( u3C.wag_w & u3o_verbose ) { + u3a_print_memory(stderr, "palloc: off-heap: used", u3a_Mark.len_w); + u3a_print_memory(stderr, "palloc: off-heap: total", u3a_Mark.siz_w); + } + + u3a_mark_done(); // XX move + + return tot_w; +} + +typedef struct { + u3_post dir_p; + c3_s log_s; // log2(len) + struct { + c3_w pag_w; // previous page in class (original number) + c3_s fre_s; // previous hunks available + c3_s pos_s; // previous hunks used + } pre_u; + c3_w mar_w[0]; +} _ca_prag; + +typedef struct { + u3_post dir_p; + c3_s log_s; + c3_w mar_w[0]; +} _ca_frag; + +// adapted from https://stackoverflow.com/a/27663998 and +// https://gist.github.com/ideasman42/5921b0edfc6aa41a9ce0 +// +static u3p(u3a_crag) +_sort_crag(u3p(u3a_crag) hed_p) +{ + c3_w bon_w, biz_w = 1; // block count, size + u3p(u3a_crag) s_p, l_p, r_p, *tal_p; + c3_w l_w, r_w; + c3_t l_t, r_t; + + do { + l_p = r_p = hed_p; + + hed_p = 0; + tal_p = &hed_p; + bon_w = 0; + + while ( l_p ) { + r_w = biz_w; + + bon_w++; + for ( l_w = 0; (l_w < biz_w) && r_p; l_w++) { + r_p = u3to(u3a_crag, r_p)->nex_p; + } + + l_t = (0 == l_w); + r_t = (0 == r_w) || !r_p; + + while ( !l_t || !r_t ) { + if ( r_t || (!l_t && (u3to(u3a_crag, l_p)->pag_w < u3to(u3a_crag, r_p)->pag_w)) ) { + s_p = l_p; + l_p = u3to(u3a_crag, l_p)->nex_p; + l_w--; + l_t = (0 == l_w); + } + else { + s_p = r_p; + r_p = u3to(u3a_crag, r_p)->nex_p; + r_w--; + r_t = (0 == r_w) || !r_p; + } + + *tal_p = s_p; + tal_p = &(u3to(u3a_crag, s_p)->nex_p); + } + + l_p = r_p; + } + + *tal_p = 0; + biz_w <<= 1; + } + while ( bon_w > 1 ); + + return hed_p; +} + +static void +_pack_seek_hunks(void) +{ + const u3a_hunk_dose *hun_u; + u3_post dir_p, nex_p, fre_p; + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + c3_w len_w, sum_w, i_w, *hap_w, *hum_w; + c3_g bit_g = u3a_crag_no; + u3a_crag *pag_u; + _ca_prag *rag_u; + + struct { + c3_w pag_w; // previous page in class (original number) + c3_s fre_s; // previous hunks available + c3_s pos_s; // previous hunks used + u3_post dir_p; + } pre_u; + + while ( bit_g-- ) { + if ( !HEAP.wee_p[bit_g] ) { + continue; + } + + // XX investigate, should only be required on inner roads + // + HEAP.wee_p[bit_g] = _sort_crag(HEAP.wee_p[bit_g]); + dir_p = HEAP.wee_p[bit_g]; + hun_u = &(u3a_Hunk[bit_g]); + memset(&pre_u, 0, sizeof(pre_u)); + + len_w = c3_wiseof(_ca_prag) + (3 * hun_u->map_s); + + while ( dir_p ) { + pag_u = u3to(u3a_crag, dir_p); + nex_p = pag_u->nex_p; + pag_u->nex_p = 0; + + u3_assert( (pre_u.pag_w < pag_u->pag_w) + || (!pre_u.pag_w && !pag_u->pag_w) ); + + rag_u = u3a_pack_alloc(len_w); + hap_w = &(rag_u->mar_w[hun_u->map_s]); + hum_w = &(hap_w[hun_u->map_s]); + rag_u->log_s = hun_u->log_s; + rag_u->pre_u.pag_w = pre_u.pag_w; + rag_u->pre_u.fre_s = pre_u.fre_s; + rag_u->pre_u.pos_s = pre_u.pos_s; + + memset(rag_u->mar_w, 0, hun_u->map_s << 2); + + for ( i_w = 0; i_w < hun_u->map_s; i_w++ ) { + hap_w[i_w] = ~(pag_u->map_w[i_w]); + } + + if ( hun_u->tot_s < 32 ) { + hap_w[0] &= (1U << hun_u->tot_s) - 1; + } + + sum_w = 0; + for ( i_w = 0; i_w < hun_u->map_s; i_w++ ) { + hum_w[i_w] = sum_w; + sum_w += c3_pc_w(hap_w[i_w]); + } + + u3a_Gack.buf_w[pag_u->pag_w] = ((c3_w*)rag_u - u3a_Gack.buf_w) | (1U << 31); + + c3_s pos_s = hun_u->ful_s - pag_u->fre_s; + + u3_assert( (pos_s + hun_u->hun_s) == sum_w ); + + // there is a previous page, and it will be full + // + if ( (pos_s == pre_u.fre_s) + || (pre_u.dir_p && (pos_s > pre_u.fre_s)) ) + { + u3a_crag *peg_u = u3to(u3a_crag, pre_u.dir_p); + memset(peg_u->map_w, 0, hun_u->map_s << 2); + peg_u->fre_s = 0; + } + + // current page will be empty + // + if ( pos_s <= pre_u.fre_s ) { + rag_u->dir_p = 0; + dir_u[pag_u->pag_w] = u3a_free_pg; + fre_p = hun_u->hun_s ? 0 : dir_p; + } + else { + fre_p = 0; + } + + // previous page is the same + // + if ( pos_s < pre_u.fre_s ) { + pre_u.fre_s -= pos_s; + pre_u.pos_s += pos_s; + } + // current becomes previous + // + else if ( pos_s > pre_u.fre_s ) { + rag_u->dir_p = dir_p; + pos_s -= pre_u.fre_s; + pre_u.fre_s += pag_u->fre_s; + pre_u.pag_w = pag_u->pag_w; + pre_u.pos_s = pos_s; + pre_u.dir_p = dir_p; + } + // no previous page + // + else { + memset(&pre_u, 0, sizeof(pre_u)); + } + + if ( fre_p ) { + _ifree(fre_p); + } + + dir_p = nex_p; + } + + HEAP.wee_p[bit_g] = pre_u.dir_p; + + if ( pre_u.dir_p ) { + u3a_crag *peg_u = u3to(u3a_crag, pre_u.dir_p); + c3_s pos_s = pre_u.pos_s + hun_u->hun_s; + c3_s max_s = pos_s >> 5; + + memset(peg_u->map_w, 0, max_s << 2); + peg_u->map_w[max_s++] = ~0U << (pos_s & 31); + memset(&(peg_u->map_w[max_s]), 0xff, (hun_u->map_s - max_s) << 2); + + peg_u->fre_s = pre_u.fre_s; + } + } +} + +static void +_pack_seek(void) +{ + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + c3_w blk_w, bit_w, fre_w = 0; + u3_post dir_p; + + { + u3_post fre_p; + u3a_dell *fre_u; + + while ( (fre_p = HEAP.fre_p) ) { + fre_u = u3to(u3a_dell, fre_p); + HEAP.fre_p = fre_u->nex_p; + _ifree(fre_p); + } + } + + _pack_seek_hunks(); + + for ( c3_w pag_w = 0; pag_w < HEAP.len_w; pag_w++ ) { + if ( u3a_free_pg == (dir_p = dir_u[pag_w]) ) { + fre_w++; + continue; + } + + blk_w = pag_w >> 5; + bit_w = pag_w & 31; + u3a_Gack.pap_w[blk_w] |= 1U << bit_w; + + if ( u3a_rest_pg >= dir_p ) { + u3a_Gack.buf_w[pag_w] = dir_p; + } + // chunk page, not processed above (ie, full) + // + else if ( !u3a_Gack.buf_w[pag_w] ) { + u3a_crag *pag_u = u3to(u3a_crag, dir_p); + c3_g bit_g = pag_u->log_s - u3a_min_log; + const u3a_hunk_dose *hun_u = &(u3a_Hunk[bit_g]); + + _ca_frag *fag_u = u3a_pack_alloc(c3_wiseof(_ca_frag) + hun_u->map_s); + u3a_Gack.buf_w[pag_w] = (c3_w*)fag_u - u3a_Gack.buf_w; + + fag_u->dir_p = dir_p; + fag_u->log_s = pag_u->log_s; + memset(fag_u->mar_w, 0, (c3_z)hun_u->map_s << 2); + } + } + + // shrink page directory + // + { + c3_w old_w = HEAP.siz_w >> u3a_page; + c3_w dif_w = (HEAP.siz_w - (HEAP.len_w - fre_w)) >> u3a_page; + c3_w pag_w = post_to_page(HEAP.pag_p); + c3_w gap_w; + + for ( c3_w i_w = 0; i_w < dif_w; i_w++ ) { + gap_w = pag_w + (HEAP.dir_ws * (old_w - i_w - 1)); + blk_w = gap_w >> 5; + bit_w = gap_w & 31; + u3a_Gack.buf_w[gap_w] = u3a_free_pg; + u3a_Gack.pap_w[blk_w] &= ~(1U << bit_w); + } + + HEAP.siz_w -= dif_w << u3a_page; + } + + // calculate cumulative sums of bitmap popcounts + // + { + c3_w sum_w = 0, max_w = (HEAP.len_w + 31) >> 5; + + for ( c3_w i_w = 0; i_w < max_w; i_w++ ) { + u3a_Gack.pum_w[i_w] = sum_w; + sum_w += c3_pc_w(u3a_Gack.pap_w[i_w]); + } + } +} + +static inline c3_w +_pack_relocate_page(c3_w pag_w) +{ + c3_w blk_w = pag_w >> 5; + c3_w bit_w = pag_w & 31; + c3_w top_w = u3a_Gack.pap_w[blk_w] & ((1U << bit_w) - 1); + c3_w new_w = u3a_Gack.pum_w[blk_w]; // XX blk_w - 1, since pum_w[0] is always 0? + + return new_w + c3_pc_w(top_w); +} + +static inline u3_post +_pack_relocate_hunk(_ca_prag *rag_u, c3_w pag_w, c3_w pos_w) +{ + const u3a_hunk_dose *hun_u = &(u3a_Hunk[rag_u->log_s - u3a_min_log]); + c3_w blk_w = pos_w >> 5; + c3_w bit_w = pos_w & 31; + c3_w *hap_w = &(rag_u->mar_w[hun_u->map_s]); + c3_w *hum_w = &(hap_w[hun_u->map_s]); + c3_w top_w = hap_w[blk_w] & ((1U << bit_w) - 1); + c3_w new_w = hum_w[blk_w]; // XX blk_w - 1, since hum_w[0] is always 0? + + new_w += c3_pc_w(top_w); + + if ( new_w >= hun_u->hun_s ) { + if ( new_w < (rag_u->pre_u.fre_s + hun_u->hun_s) ) { + pag_w = rag_u->pre_u.pag_w; + new_w += rag_u->pre_u.pos_s; + } + else { + new_w -= rag_u->pre_u.fre_s; + } + } + + { + u3_post out_p = page_to_post(_pack_relocate_page(pag_w)); + out_p += new_w << rag_u->log_s; + return out_p; + } +} + +static u3_post +_pack_relocate_mark(u3_post som_p, c3_t *fir_t) +{ + c3_w pag_w = post_to_page(som_p); + c3_w dir_w = u3a_Gack.buf_w[pag_w]; + u3_post out_p = 0; + c3_t out_t = 0; + c3_w blk_w, bit_w; + + u3_assert(som_p); + + // som_p is a one-or-more page allocation + // + if ( u3a_rest_pg >= dir_w ) { + // XX sanity + blk_w = pag_w >> 5; + bit_w = pag_w & 31; + + if ( !(u3a_Gack.bit_w[blk_w] & (1U << bit_w)) ) { + u3a_Gack.bit_w[blk_w] |= (1U << bit_w); + out_t = 1; + } + + out_p = page_to_post(_pack_relocate_page(pag_w)); + } + // som_p is a chunk in a full page (map old pag_w to new) + // + else if ( !(dir_w >> 31) ) { + // XX sanity + _ca_frag *fag_u = (void*)(u3a_Gack.buf_w + dir_w); + c3_w rem_w = som_p & ((1U << u3a_page) - 1); + c3_w pos_w = rem_w >> fag_u->log_s; // XX c/b pos_s + + blk_w = pos_w >> 5; + bit_w = pos_w & 31; + + if ( !(fag_u->mar_w[blk_w] & (1U << bit_w)) ) { + fag_u->mar_w[blk_w] |= (1U << bit_w); + out_t = 1; + } + + out_p = page_to_post(_pack_relocate_page(pag_w)); + out_p += rem_w; + } + // som_p is a chunk in a partial page (map old pos_w to new) + // + else { + _ca_prag *rag_u = (void*)(u3a_Gack.buf_w + (dir_w & ((1U << 31) - 1))); + c3_w pos_w = (som_p & ((1U << u3a_page) - 1)) >> rag_u->log_s; // XX c/b pos_s + + // XX sanity + // NB map inverted, free state updated + + blk_w = pos_w >> 5; + bit_w = pos_w & 31; + + if ( !(rag_u->mar_w[blk_w] & (1U << bit_w)) ) { + rag_u->mar_w[blk_w] |= (1U << bit_w); + out_t = 1; + } + + out_p = _pack_relocate_hunk(rag_u, pag_w, pos_w); + } + + *fir_t = out_t; + return out_p; +} + +static u3_post +_pack_relocate(u3_post som_p) +{ + c3_w pag_w = post_to_page(som_p); + c3_w dir_w = u3a_Gack.buf_w[pag_w]; + u3_post out_p; + + u3_assert(som_p); + + // som_p is a one-or-more page allocation + // + if ( u3a_rest_pg >= dir_w ) { + // XX sanity + out_p = page_to_post(_pack_relocate_page(pag_w)); + } + // som_p is a chunk in a full page (map old pag_w to new) + // + else if ( !(dir_w >> 31) ) { + // XX sanity + out_p = page_to_post(_pack_relocate_page(pag_w)); + out_p += som_p & ((1U << u3a_page) - 1); + } + // som_p is a chunk in a partial page (map old pos_w to new) + // + else { + _ca_prag *rag_u = (void*)(u3a_Gack.buf_w + (dir_w & ((1U << 31) - 1))); + c3_w pos_w = (som_p & ((1U << u3a_page) - 1)) >> rag_u->log_s; // XX c/b pos_s + + // XX sanity + // NB map inverted, free state updated + + out_p = _pack_relocate_hunk(rag_u, pag_w, pos_w); + } + + return out_p; +} + +static void +_pack_relocate_heap(void) +{ + // this is possible if freeing unused u3a_crag's + // caused an entire hunk page to be free'd + // NB: this corrupts pre_p + // + if ( HEAP.fre_p ) { + u3a_dell *fre_u; + + if ( !HEAP.cac_p ) { + fre_u = u3to(u3a_dell, HEAP.fre_p); + HEAP.cac_p = HEAP.fre_p; + HEAP.fre_p = fre_u->nex_p; + } + + u3_post *ref_p = &(HEAP.fre_p); + + while ( *ref_p ) { + fre_u = u3to(u3a_dell, *ref_p); + *ref_p = _pack_relocate(*ref_p); + ref_p = &(fre_u->nex_p); + } + } + + HEAP.pag_p = _pack_relocate(HEAP.pag_p); + + if ( HEAP.cac_p ) { + HEAP.cac_p = _pack_relocate(HEAP.cac_p); + } + + for ( c3_g bit_g = 0; bit_g < u3a_crag_no; bit_g++ ) { + if ( HEAP.wee_p[bit_g] ) { + HEAP.wee_p[bit_g] = _pack_relocate(HEAP.wee_p[bit_g]); + } + } + + for ( c3_w pag_w = 0; pag_w < HEAP.len_w; pag_w++ ) { + c3_w *wor_w, dir_w = u3a_Gack.buf_w[pag_w]; + + if ( u3a_rest_pg < dir_w ) { + dir_w &= (1U << 31) - 1; + wor_w = u3a_Gack.buf_w + dir_w; // (fag_u | rag_u)->dir_p + if ( *wor_w ) { + u3a_crag *pag_u = u3to(u3a_crag, *wor_w); + pag_u->pag_w = _pack_relocate_page(pag_u->pag_w); + *wor_w = _pack_relocate(*wor_w); + } + } + } +} + +static c3_i +_pack_move_chunks(c3_w pag_w, c3_w dir_w) +{ + _ca_prag *rag_u = (void*)(u3a_Gack.buf_w + dir_w); + const u3a_hunk_dose *hun_u = &(u3a_Hunk[rag_u->log_s - u3a_min_log]); + c3_w *hap_w = &(rag_u->mar_w[hun_u->map_s]); + c3_w off_w = 1U << rag_u->log_s; + c3_z len_i = off_w << 2; + c3_w *src_w, *dst_w, new_w; + c3_s max_s, fre_s, new_s, pos_s = hun_u->hun_s; + + src_w = u3to(c3_w, page_to_post(pag_w) + (pos_s << rag_u->log_s)); + + max_s = 1U << (u3a_page - rag_u->log_s); + + if ( rag_u->pre_u.pag_w ) { + new_w = _pack_relocate_page(rag_u->pre_u.pag_w); + new_s = hun_u->hun_s + rag_u->pre_u.pos_s; + fre_s = rag_u->pre_u.fre_s; + + dst_w = u3to(c3_w, page_to_post(new_w) + (new_s << rag_u->log_s)); + + // move up to [fre_s] chunks to (relocated) previous page + // + while ( (pos_s < max_s) && fre_s ) { + if ( hap_w[pos_s >> 5] & (1U << (pos_s & 31)) ) { + ASAN_UNPOISON_MEMORY_REGION(dst_w, len_i); + memcpy(dst_w, src_w, len_i); + fre_s--; + dst_w += off_w; + } + + pos_s++; + src_w += off_w; + } + + // advance src position past any free chunks + // + while ( (pos_s < max_s) ) { + if ( hap_w[pos_s >> 5] & (1U << (pos_s & 31)) ) { + break; + } + + pos_s++; + src_w += off_w; + } + + if ( pos_s == max_s ) { + return 0; + } + } + + new_w = _pack_relocate_page(pag_w); + new_s = hun_u->hun_s; + + // skip chunks that don't need to move + // (possible if a partial-chunk page is in the first + // contiguously used pages in the heap) + // + // XX unlikely() + // + if ( new_w == pag_w ) { + if ( new_s == pos_s ) { + while ( (pos_s < max_s) + && (hap_w[pos_s >> 5] & (1U << (pos_s & 31))) ) + { + pos_s++; + src_w += off_w; + } + + new_s = pos_s++; + src_w += off_w; + } + } + // relocate inline metadata + // + else if ( hun_u->hun_s ) { + c3_w* soc_w = u3to(c3_w, page_to_post(pag_w)); + c3_w* doc_w = u3to(c3_w, page_to_post(new_w)); + + ASAN_UNPOISON_MEMORY_REGION(doc_w, len_i * hun_u->hun_s); + memcpy(doc_w, soc_w, len_i * hun_u->hun_s); + + // XX bump pos_s/src_w if !pos_s ? + } + + u3_assert( (new_w < pag_w) || (new_s < pos_s) ); + + dst_w = u3to(c3_w, page_to_post(new_w) + (new_s << rag_u->log_s)); + + // move remaining chunks to relocated page + // + while ( pos_s < max_s ) { + if ( hap_w[pos_s >> 5] & (1U << (pos_s & 31)) ) { + ASAN_UNPOISON_MEMORY_REGION(dst_w, len_i); + memcpy(dst_w, src_w, len_i); + dst_w += off_w; + } + + pos_s++; + src_w += off_w; + } + + // XX assume(rag_u->dir_p) + // + u3a_Gack.buf_w[new_w] = rag_u->dir_p; + return 1; +} + +static void +_pack_move(void) +{ + c3_z len_i = 1U << (u3a_page + 2); + c3_ws off_ws = HEAP.dir_ws * (1U << u3a_page); + c3_w dir_w, new_w, pag_w = 0; + c3_w *src_w, *dst_w; + + // NB: these loops iterate over the temp page dir instead of + // the bitmap, as partial chunk pages can be marked free + // + + // skip pages that don't need to move, + // compacting partial chunk-pages in-place + // + while ( (pag_w < HEAP.len_w) && (dir_w = u3a_Gack.buf_w[pag_w]) ) { + if ( u3a_rest_pg < dir_w ) { + if ( !(dir_w >> 31) ) { + u3a_Gack.buf_w[pag_w] = u3a_Gack.buf_w[dir_w]; // NB: fag_u->dir_p + } + else if ( !_pack_move_chunks(pag_w, dir_w & ((1U << 31) - 1)) ) { + break; + } + } + + pag_w++; + } + + new_w = pag_w++; + dst_w = u3to(c3_w, page_to_post(new_w)); + src_w = u3to(c3_w, page_to_post(pag_w)); + + while( pag_w < HEAP.len_w ) { + // XX assume(new_w < pag_w) + // XX assume(new_w == _pack_relocate_page(pag_w)) + // XX assume(dst_w == u3to(c3_w, page_to_post(new_w))) + // XX assume(src_w == u3to(c3_w, page_to_post(pag_w))) + // + dir_w = u3a_Gack.buf_w[pag_w]; + + if ( u3a_free_pg != dir_w ) { + if ( (u3a_rest_pg >= dir_w) || !(dir_w >> 31) ) { + ASAN_UNPOISON_MEMORY_REGION(dst_w, len_i); + memcpy(dst_w, src_w, len_i); + u3a_Gack.buf_w[new_w] = (u3a_rest_pg >= dir_w) + ? dir_w + : u3a_Gack.buf_w[dir_w]; // NB: fag_u->dir_p + new_w++; + dst_w += off_ws; + } + else if ( _pack_move_chunks(pag_w, dir_w & ((1U << 31) - 1)) ) { + new_w++; + dst_w += off_ws; + } + } + + pag_w++; + src_w += off_ws; + fflush(stderr); // XX remove + } + + _poison_words(); + + { + u3p(u3a_crag) *dir_u = u3to(u3p(u3a_crag), HEAP.pag_p); + HEAP.len_w = new_w; + memcpy(dir_u, u3a_Gack.buf_w, new_w << 2); + memset(dir_u + new_w, 0, (HEAP.siz_w - new_w) << 2); + } + + u3a_print_memory(stderr, "palloc: off-heap: used", u3a_Gack.len_w); + u3a_print_memory(stderr, "palloc: off-heap: total", u3a_Gack.siz_w); + + { + u3a_dell *fre_u; + u3_post fre_p; + + while ( (fre_p = HEAP.fre_p) ) { + fre_u = u3to(u3a_dell, fre_p); + HEAP.fre_p = fre_u->nex_p; + _ifree(fre_p); + } + } +} diff --git a/vere/pkg/noun/palloc_tests.c b/vere/pkg/noun/palloc_tests.c new file mode 100644 index 0000000..b93f634 --- /dev/null +++ b/vere/pkg/noun/palloc_tests.c @@ -0,0 +1,91 @@ +/// @file + +#include "events.h" + +struct heap { + u3p(u3a_dell) fre_p; // free list + u3p(u3a_dell) erf_p; // free list + u3p(u3a_dell) cac_p; // cached pgfree struct + u3_post bot_p; // XX s/b rut_p + c3_ws dir_ws; // 1 || -1 (multiplicand for local offsets) + c3_ws off_ws; // 0 || -1 (word-offset for hat && rut) + c3_w siz_w; // directory size + c3_w len_w; // directory entries + u3p(u3a_crag*) pag_p; // directory + u3p(u3a_crag) wee_p[u3a_crag_no]; // chunk lists +}; + +struct heap hep_u; + +#define HEAP (hep_u) +#define BASE (hep_u.bot_p) + +#include "./palloc.c" + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + u3m_init(1 << 22); + u3e_init(); + u3m_pave(c3y); +} + +static void +_test_print_chunks(void) +{ + u3a_hunk_dose *hun_u; + c3_g met_g; + c3_w hun_w; + + for ( c3_g bit_g = 0; bit_g < u3a_crag_no; bit_g++ ) { + hun_u = &(u3a_Hunk[bit_g]); + met_g = (c3_g)c3_bits_word((c3_w)hun_u->siz_s - 1) - u3a_min_log; + hun_w = 1U + ((hun_u->siz_s - 1) >> hun_u->log_s); + + fprintf(stderr, "chunks: %s pginfo: bit=%u log=%u len=%u tot=%u, siz=%u, chunks=%u met=%u\n", + ( hun_u->hun_s ? "inline" : "malloc" ), bit_g, + hun_u->log_s, hun_u->len_s, hun_u->tot_s, hun_u->siz_s, hun_w, met_g); + } +} + +static void +_test_print_pages(c3_w max_w) +{ + u3_post pot_p; + c3_w i_w; + + hep_u.dir_ws = 1; + hep_u.off_ws = 0; + hep_u.bot_p = 0x1000; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + pot_p = page_to_post(i_w); + fprintf(stderr, "north at bot=0x%x pag=%u == 0x%x == pag=%u\n", + hep_u.bot_p, i_w, pot_p, post_to_page(pot_p)); + } + + + hep_u.dir_ws = -1; + hep_u.off_ws = -1; + hep_u.bot_p += max_w << u3a_page; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + pot_p = page_to_post(i_w); + fprintf(stderr, "south at bot=0x%x pag=%u == 0x%x == pag=%u\n", + hep_u.bot_p, i_w, pot_p, post_to_page(pot_p)); + } +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + _test_print_chunks(); + _test_print_pages(10); + return 0; +} diff --git a/vere/pkg/noun/platform/darwin/rsignal.h b/vere/pkg/noun/platform/darwin/rsignal.h new file mode 100644 index 0000000..a14670e --- /dev/null +++ b/vere/pkg/noun/platform/darwin/rsignal.h @@ -0,0 +1,13 @@ +/// @file + +#ifndef NOUN_PLATFORM_DARWIN_RSIGNAL_H +#define NOUN_PLATFORM_DARWIN_RSIGNAL_H + +#define rsignal_jmpbuf sigjmp_buf +#define rsignal_setjmp(buf) sigsetjmp((buf), 1) +#define rsignal_longjmp siglongjmp +#define rsignal_install_handler signal +#define rsignal_deinstall_handler(sig) signal((sig), SIG_IGN) +#define rsignal_setitimer setitimer + +#endif /* ifndef NOUN_PLATFORM_DARWIN_RSIGNAL_H */ diff --git a/vere/pkg/noun/platform/linux/rsignal.h b/vere/pkg/noun/platform/linux/rsignal.h new file mode 100644 index 0000000..9c55cee --- /dev/null +++ b/vere/pkg/noun/platform/linux/rsignal.h @@ -0,0 +1,13 @@ +/// @file + +#ifndef NOUN_PLATFORM_LINUX_RSIGNAL_H +#define NOUN_PLATFORM_LINUX_RSIGNAL_H + +#define rsignal_jmpbuf sigjmp_buf +#define rsignal_setjmp(buf) sigsetjmp((buf), 1) +#define rsignal_longjmp siglongjmp +#define rsignal_install_handler signal +#define rsignal_deinstall_handler(sig) signal((sig), SIG_IGN) +#define rsignal_setitimer setitimer + +#endif /* ifndef NOUN_PLATFORM_LINUX_RSIGNAL_H */ diff --git a/vere/pkg/noun/platform/windows/rsignal.c b/vere/pkg/noun/platform/windows/rsignal.c new file mode 100644 index 0000000..d927835 --- /dev/null +++ b/vere/pkg/noun/platform/windows/rsignal.c @@ -0,0 +1,167 @@ +#include "noun.h" +#include "rsignal.h" +#include + +int err_win_to_posix(DWORD winerr); + +// The current implementation of rsignal_ is single-threaded, +// but it can be extended to multi-threaded by replacing these +// static variables with a thread id-based hash map. +// +static __p_sig_fn_t _fns[SIG_COUNT]; +static volatile DWORD _tid; +static HANDLE _hvt; + +void rsignal_install_handler(int sig, __p_sig_fn_t fn) +{ + if (sig < 0 || sig >= SIG_COUNT) + return; + + DWORD newtid = GetCurrentThreadId(); + DWORD oldtid = InterlockedExchange((volatile LONG*)&_tid, newtid); + if (oldtid != 0 && oldtid != newtid) { + fprintf(stderr, "\r\nrsignal_install_handler: %lu -> %lu\r\n", oldtid, newtid); + return; + } + + __p_sig_fn_t oldfn = InterlockedExchangePointer((PVOID*)&_fns[sig], fn); + if (fn != 0 && oldfn != 0 && oldfn != fn) { + fprintf(stderr, "\r\nrsignal_install_handler: %p -> %p\r\n", oldfn, fn); + } +} + +void rsignal_deinstall_handler(int sig) +{ + rsignal_install_handler(sig, 0); +} + +void rsignal_raise(int sig) +{ + if (sig < 0 || sig >= SIG_COUNT) + return; + + __p_sig_fn_t oldfn = InterlockedExchangePointer((PVOID*)&_fns[sig], 0); + if (oldfn == 0) + return; + + if (_tid == GetCurrentThreadId()) { + oldfn(sig); + return; + } + + HANDLE hthread = OpenThread(THREAD_ALL_ACCESS, FALSE, _tid); + if (!hthread) { + fprintf(stderr, "\r\nrsignal_raise: OpenThread(%lu): %lu\r\n", _tid, GetLastError()); + return; + } + + if (SuspendThread(hthread) < 0) { + fprintf(stderr, "\r\nrsignal_raise: SuspendThread(%lu): %lu\r\n", _tid, GetLastError()); + goto cleanup; + } + + oldfn(sig); + + if (!ResumeThread(hthread)) { + fprintf(stderr, "\r\nrsignal_raise: ResumeThread(%lu): %lu\r\n", _tid, GetLastError()); + + // abort because the main thread is stuck + abort(); + } + +cleanup: + CloseHandle(hthread); +} + +static void _rsignal_vt_cb(PVOID param, BOOLEAN timedOut) +{ + rsignal_raise(SIGVTALRM); +} + +int rsignal_setitimer(int type, struct itimerval *in, struct itimerval *out) +{ + if (in == 0) { + errno = EFAULT; + return -1; + } + + if (type != ITIMER_VIRTUAL || out != 0) { + errno = ENOTSUP; + return -1; + } + + if (_hvt != NULL) { + DeleteTimerQueueTimer(NULL, _hvt, NULL); + _hvt = NULL; + } + + if (timerisset(&in->it_value) && !CreateTimerQueueTimer(&_hvt, NULL, _rsignal_vt_cb, NULL, + in->it_value.tv_sec * 1000 + in->it_value.tv_usec / 1000, + in->it_interval.tv_sec * 1000 + in->it_interval.tv_usec / 1000, 0)) + { + errno = err_win_to_posix(GetLastError()); + return -1; + } else { + return 0; + } +} + +// direct import from ntdll.dll +extern DWORD64 __imp_KiUserExceptionDispatcher; + +static void _rsignal_longjmp(intptr_t* builtin_jb) +{ + __builtin_longjmp((void**)builtin_jb, 1); +} + +void rsignal_post_longjmp(DWORD tid, intptr_t* builtin_jb) +{ + HANDLE hthread = OpenThread(THREAD_ALL_ACCESS, FALSE, tid); + if (!hthread) { + fprintf(stderr, "\r\nrsignal: OpenThread(%lu): %lu\r\n", tid, GetLastError()); + return; + } + + CONTEXT context; + context.ContextFlags = CONTEXT_CONTROL | CONTEXT_INTEGER; + if (!GetThreadContext(hthread, &context)) { + fprintf(stderr, "\r\nrsignal: GetThreadContext(%lu): %lu\r\n", tid, GetLastError()); + goto cleanup; + } + + // see if the thread is currently handling a structured exception + // if so, let the handler (usually the libsigsegv handler) finish + // and set up the the signal to run at the exception resume point + // otherwise, passing a parameter to fn is completely unreliable + // + DWORD64 kibase; + PRUNTIME_FUNCTION ki = RtlLookupFunctionEntry(__imp_KiUserExceptionDispatcher, &kibase, NULL); + CONTEXT c = context; + while (1) + { + DWORD64 base, frame; + PRUNTIME_FUNCTION f = RtlLookupFunctionEntry(c.Rip, &base, NULL); + if (!f) break; + if (f == ki) + { + // KiUserExceptionDispatcher has a "bare" frame + // with $rsp pointing to the CONTEXT structure + // + ((PCONTEXT)c.Rsp)->Rip = (DWORD64)_rsignal_longjmp; + ((PCONTEXT)c.Rsp)->Rcx = (DWORD64)builtin_jb; + goto cleanup; + } + PVOID handler_data; + RtlVirtualUnwind(0, base, c.Rip, f, &c, &handler_data, &frame, NULL); + } + + context.Rip = (DWORD64)_rsignal_longjmp; + context.Rcx = (DWORD64)builtin_jb; + if (!SetThreadContext(hthread, &context)) { + fprintf(stderr, "\r\nrsignal: SetThreadContext(%lu): %lu\r\n", tid, GetLastError()); + goto cleanup; + } + +cleanup: + CloseHandle(hthread); +} diff --git a/vere/pkg/noun/platform/windows/rsignal.h b/vere/pkg/noun/platform/windows/rsignal.h new file mode 100644 index 0000000..998652c --- /dev/null +++ b/vere/pkg/noun/platform/windows/rsignal.h @@ -0,0 +1,21 @@ +#include "windows.h" + +#ifndef _RSIGNAL_H +#define _RSIGNAL_H + +#define rsignal_setjmp setjmp +#define rsignal_longjmp longjmp + +void rsignal_raise(int sig); +void rsignal_install_handler(int sig, __p_sig_fn_t fn); +void rsignal_deinstall_handler(int sig); +void rsignal_post_longjmp(unsigned long tid, intptr_t* builtin_jb); + +#define ITIMER_VIRTUAL 1 +struct itimerval { + struct timeval it_value, it_interval; +}; + +int rsignal_setitimer(int type, struct itimerval *in, struct itimerval *out); + +#endif//_RSIGNAL_H diff --git a/vere/pkg/noun/platform/windows/veh_handler.c b/vere/pkg/noun/platform/windows/veh_handler.c new file mode 100644 index 0000000..d2a035c --- /dev/null +++ b/vere/pkg/noun/platform/windows/veh_handler.c @@ -0,0 +1,26 @@ +#include "noun.h" +#include "rsignal.h" + +c3_i +u3m_fault(void* adr_v, c3_i ser_i); + +/* _windows_exception_filter: replaces libsigsegv on windows + using vectored exception handling + */ +LONG WINAPI +_windows_exception_filter(struct _EXCEPTION_POINTERS *ExceptionInfo) +{ + EXCEPTION_RECORD ExceptionRecord = *ExceptionInfo->ExceptionRecord; + if (ExceptionRecord.ExceptionCode == EXCEPTION_ACCESS_VIOLATION && + ExceptionRecord.ExceptionInformation[0] == 1 && + u3m_fault((void*)ExceptionRecord.ExceptionInformation[1], 1)) + { + return EXCEPTION_CONTINUE_EXECUTION; + } + + if (ExceptionRecord.ExceptionCode == EXCEPTION_STACK_OVERFLOW) { + rsignal_raise(SIGSTK); + } + + return EXCEPTION_CONTINUE_SEARCH; +} diff --git a/vere/pkg/noun/platform/windows/veh_handler.h b/vere/pkg/noun/platform/windows/veh_handler.h new file mode 100644 index 0000000..dfa4b69 --- /dev/null +++ b/vere/pkg/noun/platform/windows/veh_handler.h @@ -0,0 +1 @@ +LONG WINAPI _windows_exception_filter(struct _EXCEPTION_POINTERS *ExceptionInfo); diff --git a/vere/pkg/noun/retrieve.c b/vere/pkg/noun/retrieve.c new file mode 100644 index 0000000..3d2e182 --- /dev/null +++ b/vere/pkg/noun/retrieve.c @@ -0,0 +1,1943 @@ +/// @file + +#include "retrieve.h" + +#include "allocate.h" +#include "hashtable.h" +#include "imprison.h" +#include "murmur3.h" +#include "trace.h" +#include "xtract.h" + + +// declarations of inline functions +// +c3_o +u3r_cell(u3_noun a, u3_noun* b, u3_noun* c); +c3_o +u3r_trel(u3_noun a, u3_noun* b, u3_noun* c, u3_noun* d); +c3_o +u3r_qual(u3_noun a, + u3_noun* b, + u3_noun* c, + u3_noun* d, + u3_noun* e); +c3_o +u3r_quil(u3_noun a, + u3_noun* b, + u3_noun* c, + u3_noun* d, + u3_noun* e, + u3_noun* f); +c3_o +u3r_hext(u3_noun a, + u3_noun* b, + u3_noun* c, + u3_noun* d, + u3_noun* e, + u3_noun* f, + u3_noun* g); + +/* _frag_word(): fast fragment/branch prediction for top word. +*/ +static u3_weak +_frag_word(c3_w a_w, u3_noun b) +{ + u3_assert(0 != a_w); + + { + c3_w dep_w = u3x_dep(a_w); + + while ( dep_w ) { + if ( c3n == u3a_is_cell(b) ) { + return u3_none; + } + else { + u3a_cell* b_u = u3a_to_ptr(b); + + b = *(((u3_noun*)&(b_u->hed)) + (1 & (a_w >> (dep_w - 1)))); + dep_w--; + } + } + return b; + } +} + +/* _frag_deep(): fast fragment/branch for deep words. +*/ +static u3_weak +_frag_deep(c3_w a_w, u3_noun b) +{ + c3_w dep_w = 32; + + while ( dep_w ) { + if ( c3n == u3a_is_cell(b) ) { + return u3_none; + } + else { + u3a_cell* b_u = u3a_to_ptr(b); + + b = *(((u3_noun*)&(b_u->hed)) + (1 & (a_w >> (dep_w - 1)))); + dep_w--; + } + } + return b; +} + +/* u3r_at(): +** +** Return fragment (a) of (b), or u3_none if not applicable. +*/ +u3_weak +u3r_at(u3_atom a, u3_noun b) +{ + u3_assert(u3_none != a); + u3_assert(u3_none != b); + + u3t_on(far_o); + + if ( 0 == a ) { + u3t_off(far_o); + return u3_none; + } + + if ( _(u3a_is_cat(a)) ) { + u3t_off(far_o); + return _frag_word(a, b); + } + else { + if ( !_(u3a_is_pug(a)) ) { + u3t_off(far_o); + return u3_none; + } + else { + u3a_atom* a_u = u3a_to_ptr(a); + c3_w len_w = a_u->len_w; + + b = _frag_word(a_u->buf_w[len_w - 1], b); + len_w -= 1; + + if ( u3_none == b ) { + u3t_off(far_o); + return b; + } + + while ( len_w ) { + b = _frag_deep(a_u->buf_w[len_w - 1], b); + + if ( u3_none == b ) { + u3t_off(far_o); + + return b; + } else { + len_w--; + } + } + u3t_off(far_o); + + return b; + } + } +} + +/* u3r_mean(): +** +** Attempt to deconstruct `a` by axis, noun pairs; 0 terminates. +** Axes must be sorted in tree order. +*/ + struct _mean_pair { + c3_w axe_w; + u3_noun* som; + }; + + static c3_w + _mean_cut(c3_w len_w, + struct _mean_pair* prs_m) + { + c3_w i_w, cut_t, cut_w; + + cut_t = 0; + cut_w = 0; + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w axe_w = prs_m[i_w].axe_w; + + if ( (cut_t == 0) && (3 == u3x_cap(axe_w)) ) { + cut_t = 1; + cut_w = i_w; + } + prs_m[i_w].axe_w = u3x_mas(axe_w); + } + return cut_t ? cut_w : i_w; + } + + static c3_o + _mean_extract(u3_noun som, + c3_w len_w, + struct _mean_pair* prs_m) + { + if ( len_w == 0 ) { + return c3y; + } + else if ( (len_w == 1) && (1 == prs_m[0].axe_w) ) { + *prs_m->som = som; + return c3y; + } + else { + if ( c3n == u3a_is_cell(som) ) { + return c3n; + } else { + c3_w cut_w = _mean_cut(len_w, prs_m); + + return c3a + (_mean_extract(u3a_h(som), cut_w, prs_m), + _mean_extract(u3a_t(som), (len_w - cut_w), (prs_m + cut_w))); + } + } + } + +c3_o +u3r_vmean(u3_noun som, va_list ap) +{ + va_list aq; + c3_w len_w; + struct _mean_pair* prs_m; + + u3_assert(u3_none != som); + + // traverse copy of va_list for alloca + // + va_copy(aq, ap); + len_w = 0; + + while ( 1 ) { + if ( 0 == va_arg(aq, c3_w) ) { + break; + } + va_arg(aq, u3_noun*); + len_w++; + } + + va_end(aq); + + u3_assert( 0 != len_w ); + prs_m = alloca(len_w * sizeof(struct _mean_pair)); + + // traverse va_list and extract args + // + { + c3_w i_w; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + prs_m[i_w].axe_w = va_arg(ap, c3_w); + prs_m[i_w].som = va_arg(ap, u3_noun*); + } + + va_end(ap); + } + + // extract axis from som + // + return _mean_extract(som, len_w, prs_m); +} + +c3_o +u3r_mean(u3_noun som, ...) +{ + c3_o ret_o; + va_list ap; + + va_start(ap, som); + ret_o = u3r_vmean(som, ap); + va_end(ap); + + return ret_o; +} + +// stack frame for tracking noun comparison and unification +// +// we always compare arbitrary nouns in a none-frame. +// when we compare two cells, we change the none-frame to a head-frame +// and push a new none-frame for their heads. if the heads are equal, +// we get the cells from the head-frame and unify their head pointers. +// then, we convert the head-frame to a tail-frame and repeat with +// the tails, mutatis mutandis. +// +// in Hoon, this structure would be: +// +// $% [%none a=* b=*] +// [%head a=^ b=^] +// [%tail a=^ b=^] +// == +// +#define SING_NONE 0 +#define SING_HEAD 1 +#define SING_TAIL 2 + +typedef struct { + c3_y sat_y; + u3_noun a; + u3_noun b; +} eqframe; + +/* _cr_sing_push(): push a new stack frame, initialized as SING_NONE. +*/ +static inline eqframe* +_cr_sing_push(u3a_pile* pil_u, u3_noun a, u3_noun b) +{ + eqframe* fam_u = u3a_push(pil_u); + fam_u->sat_y = SING_NONE; + fam_u->a = a; + fam_u->b = b; + return fam_u; +} + +/* _cr_sing_mug(): short-circuit comparison if mugs are present and not equal. +*/ +static inline c3_o +_cr_sing_mug(u3a_noun* a_u, u3a_noun* b_u) +{ + // XX add debug assertions that both mugs are 31-bit + // (ie, not u3a_take() relocation references) + // + if ( a_u->mug_w && b_u->mug_w && (a_u->mug_w != b_u->mug_w) ) { + return c3n; + } + + return c3y; +} + +/* _cr_sing_atom(): check if atom [a] is indirect and equal to noun [b] +*/ +static inline c3_o +_cr_sing_atom(u3_atom a, u3_noun b) +{ + // [a] is an atom, not pointer-equal to noun [b]. + // if they're not both indirect atoms, they can't be equal. + // + if ( (c3n == u3a_is_pug(a)) + || (c3n == u3a_is_pug(b)) ) + { + return c3n; + } + else { + u3a_atom* a_u = u3a_to_ptr(a); + u3a_atom* b_u = u3a_to_ptr(b); + + // [a] and [b] are not equal if their mugs are present and not equal. + // + if ( c3n == _cr_sing_mug((u3a_noun*)a_u, (u3a_noun*)b_u) ) { + return c3n; + } + else { + c3_w a_w = a_u->len_w; + c3_w b_w = b_u->len_w; + + // [a] and [b] are not equal if their lengths are not equal + // + if ( a_w != b_w ) { + return c3n; + } + else { + c3_w i_w; + + // XX memcmp + // + for ( i_w = 0; i_w < a_w; i_w++ ) { + if ( a_u->buf_w[i_w] != b_u->buf_w[i_w] ) { + return c3n; + } + } + } + } + } + + return c3y; +} + +/* _cr_sing_cape_test(): check for previous comparison of [a] and [b]. +*/ +static inline c3_o +_cr_sing_cape_test(u3p(u3h_root) har_p, u3_noun a, u3_noun b) +{ + u3_noun key = u3nc(u3a_to_off(a) >> u3a_vits, + u3a_to_off(b) >> u3a_vits); + u3_noun val; + + u3t_off(euq_o); + val = u3h_git(har_p, key); + u3t_on(euq_o); + + u3z(key); + return ( u3_none != val ) ? c3y : c3n; +} + +/* _cr_sing_cape_keep(): store [a] and [b] to short-circuit subsequent tests. +** NB: [a] and [b] (which MUST be equal nouns) +** are cons'd as offsets (direct atoms) to avoid refcount churn. +*/ +static inline void +_cr_sing_cape_keep(u3p(u3h_root) har_p, u3_noun a, u3_noun b) +{ + // only store if [a] and [b] are copies of each other + // + if ( a != b ) { + c3_dessert( (c3n == u3a_is_cat(a)) && (c3n == u3a_is_cat(b)) ); + + u3_noun key = u3nc(u3a_to_off(a) >> u3a_vits, + u3a_to_off(b) >> u3a_vits); + u3t_off(euq_o); + u3h_put(har_p, key, c3y); + u3t_on(euq_o); + u3z(key); + } +} + +static inline __attribute__((always_inline)) void +_cr_sing_wed(u3_noun *restrict a, u3_noun *restrict b) +{ + if ( *a != *b ) { + u3a_wed(a, b); + } +} + +/* _cr_sing_cape(): unifying equality with comparison deduplication + * (tightly coupled to _cr_sing) + */ +static c3_o +_cr_sing_cape(u3a_pile* pil_u, u3p(u3h_root) har_p) +{ + eqframe* fam_u = u3a_peek(pil_u); + u3_noun a, b; + u3a_cell* a_u; + u3a_cell* b_u; + + // loop while arguments remain on the stack + // + do { + a = fam_u->a; + b = fam_u->b; + + switch ( fam_u->sat_y ) { + + // [a] and [b] are arbitrary nouns + // + case SING_NONE: { + if ( a == b ) { + break; + } + else if ( c3y == u3a_is_atom(a) ) { + if ( c3n == _cr_sing_atom(a, b) ) { + return c3n; + } + else { + break; + } + } + else if ( c3y == u3a_is_atom(b) ) { + return c3n; + } + // [a] and [b] are cells + // + else { + a_u = u3a_to_ptr(a); + b_u = u3a_to_ptr(b); + + // short-circuiting mug check + // + if ( c3n == _cr_sing_mug((u3a_noun*)a_u, (u3a_noun*)b_u) ) { + return c3n; + } + // short-circuiting re-comparison check + // + else if ( c3y == _cr_sing_cape_test(har_p, a, b) ) { + fam_u = u3a_pop(pil_u); + continue; + } + // upgrade none-frame to head-frame, check heads + // + else { + fam_u->sat_y = SING_HEAD; + fam_u = _cr_sing_push(pil_u, a_u->hed, b_u->hed); + continue; + } + } + } break; + + // cells [a] and [b] have equal heads + // + case SING_HEAD: { + a_u = u3a_to_ptr(a); + b_u = u3a_to_ptr(b); + _cr_sing_wed(&(a_u->hed), &(b_u->hed)); + + // upgrade head-frame to tail-frame, check tails + // + fam_u->sat_y = SING_TAIL; + fam_u = _cr_sing_push(pil_u, a_u->tel, b_u->tel); + continue; + } + + // cells [a] and [b] are equal + // + case SING_TAIL: { + a_u = u3a_to_ptr(a); + b_u = u3a_to_ptr(b); + _cr_sing_wed(&(a_u->tel), &(b_u->tel)); + } break; + + default: { + u3_assert(0); + } break; + } + + // track equal pairs to short-circuit possible (re-)comparison + // + _cr_sing_cape_keep(har_p, a, b); + + fam_u = u3a_pop(pil_u); + } + while ( c3n == u3a_pile_done(pil_u) ); + + return c3y; +} + +/* _cr_sing(): unifying equality. +*/ +static c3_o +_cr_sing(u3_noun a, u3_noun b) +{ + c3_s ovr_s = 0; + u3a_cell* a_u; + u3a_cell* b_u; + eqframe* fam_u; + u3a_pile pil_u; + + // initialize stack control, push arguments onto the stack (none-frame) + // + u3a_pile_prep(&pil_u, sizeof(eqframe)); + fam_u = _cr_sing_push(&pil_u, a, b); + + // loop while arguments are on the stack + // + while ( c3n == u3a_pile_done(&pil_u) ) { + a = fam_u->a; + b = fam_u->b; + + switch ( fam_u->sat_y ) { + + // [a] and [b] are arbitrary nouns + // + case SING_NONE: { + if ( a == b ) { + break; + } + else if ( c3y == u3a_is_atom(a) ) { + if ( c3n == _cr_sing_atom(a, b) ) { + u3R->cap_p = pil_u.top_p; + return c3n; + } + else { + break; + } + } + else if ( c3y == u3a_is_atom(b) ) { + u3R->cap_p = pil_u.top_p; + return c3n; + } + // [a] and [b] are cells + // + else { + a_u = u3a_to_ptr(a); + b_u = u3a_to_ptr(b); + + // short-circuiting mug check + // + if ( c3n == _cr_sing_mug((u3a_noun*)a_u, (u3a_noun*)b_u) ) { + u3R->cap_p = pil_u.top_p; + return c3n; + } + // upgrade none-frame to head-frame, check heads + // + else { + fam_u->sat_y = SING_HEAD; + fam_u = _cr_sing_push(&pil_u, a_u->hed, b_u->hed); + continue; + } + } + } break; + + // cells [a] and [b] have equal heads + // + case SING_HEAD: { + a_u = u3a_to_ptr(a); + b_u = u3a_to_ptr(b); + _cr_sing_wed(&(a_u->hed), &(b_u->hed)); + + // upgrade head-frame to tail-frame, check tails + // + fam_u->sat_y = SING_TAIL; + fam_u = _cr_sing_push(&pil_u, a_u->tel, b_u->tel); + continue; + } + + // cells [a] and [b] are equal + // + case SING_TAIL: { + a_u = u3a_to_ptr(a); + b_u = u3a_to_ptr(b); + _cr_sing_wed(&(a_u->tel), &(b_u->tel)); + } break; + + default: { + u3_assert(0); + } break; + } + + // [ovr_s] counts comparisons, if it overflows, we've likely hit + // a pathological case (highly duplicated tree), so we de-duplicate + // subsequent comparisons by maintaining a set of equal pairs. + // + if ( 0 == ++ovr_s ) { + u3p(u3h_root) har_p = u3h_new(); + c3_o ret_o = _cr_sing_cape(&pil_u, har_p); + u3h_free(har_p); + u3R->cap_p = pil_u.top_p; + return ret_o; + } + + fam_u = u3a_pop(&pil_u); + } + + return c3y; +} + +/* u3r_sing(): Yes iff [a] and [b] are the same noun. +*/ +c3_o +u3r_sing(u3_noun a, u3_noun b) +{ + c3_o ret_o; + u3t_on(euq_o); + ret_o = _cr_sing(a, b); + u3t_off(euq_o); + return ret_o; +} + +c3_o +u3r_fing(u3_noun a, + u3_noun b) +{ + return (a == b) ? c3y : c3n; +} + +/* u3r_sing_cell(): +** +** Yes iff `[p q]` and `b` are the same noun. +*/ +c3_o +u3r_sing_cell(u3_noun p, + u3_noun q, + u3_noun b) +{ + return c3a(_(u3a_is_cell(b)), + c3a(u3r_sing(p, u3a_h(b)), + u3r_sing(q, u3a_t(b)))); +} +c3_o +u3r_fing_cell(u3_noun p, + u3_noun q, + u3_noun b) +{ + return c3a(_(u3a_is_cell(b)), + c3a(u3r_fing(p, u3a_h(b)), + u3r_fing(q, u3a_t(b)))); +} + +/* u3r_sing_mixt(): +** +** Yes iff `[p q]` and `b` are the same noun. +*/ +c3_o +u3r_sing_mixt(const c3_c* p_c, + u3_noun q, + u3_noun b) +{ + return c3a(_(u3a_is_cell(b)), + c3a(u3r_sing_c(p_c, u3a_h(b)), + u3r_sing(q, u3a_t(b)))); +} +c3_o +u3r_fing_mixt(const c3_c* p_c, + u3_noun q, + u3_noun b) +{ + return c3a(_(u3a_is_cell(b)), + c3a(u3r_sing_c(p_c, u3a_h(b)), + u3r_fing(q, u3a_t(b)))); +} + +/* u3r_sing_trel(): +** +** Yes iff `[p q r]` and `b` are the same noun. +*/ +c3_o +u3r_sing_trel(u3_noun p, + u3_noun q, + u3_noun r, + u3_noun b) +{ + return c3a(_(u3a_is_cell(b)), + c3a(u3r_sing(p, u3a_h(b)), + u3r_sing_cell(q, r, u3a_t(b)))); +} +c3_o +u3r_fing_trel(u3_noun p, + u3_noun q, + u3_noun r, + u3_noun b) +{ + return c3a(_(u3a_is_cell(b)), + c3a(u3r_fing(p, u3a_h(b)), + u3r_fing_cell(q, r, u3a_t(b)))); +} + +/* u3r_sing_qual(): +** +** Yes iff `[p q r]` and `b` are the same noun. +*/ +c3_o +u3r_sing_qual(u3_noun p, + u3_noun q, + u3_noun r, + u3_noun s, + u3_noun b) +{ + return c3a(_(u3a_is_cell(b)), + c3a(u3r_sing(p, u3a_h(b)), + u3r_sing_trel(q, r, s, u3a_t(b)))); +} +c3_o +u3r_fing_qual(u3_noun p, + u3_noun q, + u3_noun r, + u3_noun s, + u3_noun b) +{ + return c3a(_(u3a_is_cell(b)), + c3a(u3r_fing(p, u3a_h(b)), + u3r_fing_trel(q, r, s, u3a_t(b)))); +} + +/* u3r_nord(): +** +** Return 0, 1 or 2 if `a` is below, equal to, or above `b`. +*/ +u3_atom +u3r_nord(u3_noun a, + u3_noun b) +{ + u3_assert(u3_none != a); + u3_assert(u3_none != b); + + if ( a == b ) { + return 1; + } + else { + if ( _(u3a_is_atom(a)) ) { + if ( !_(u3a_is_atom(b)) ) { + return 0; + } else { + if ( _(u3a_is_cat(a)) ) { + if ( _(u3a_is_cat(b)) ) { + return (a < b) ? 0 : 2; + } + else return 0; + } + else if ( _(u3a_is_cat(b)) ) { + return 2; + } + else { + u3a_atom* a_u = u3a_to_ptr(a); + u3a_atom* b_u = u3a_to_ptr(b); + + c3_w w_rez = a_u->len_w; + c3_w w_mox = b_u->len_w; + + if ( w_rez != w_mox ) { + return (w_rez < w_mox) ? 0 : 2; + } + else { + c3_w i_w; + + for ( i_w = 0; i_w < w_rez; i_w++ ) { + c3_w ai_w = a_u->buf_w[i_w]; + c3_w bi_w = b_u->buf_w[i_w]; + + if ( ai_w != bi_w ) { + return (ai_w < bi_w) ? 0 : 2; + } + } + return 1; + } + } + } + } else { + if ( _(u3a_is_atom(b)) ) { + return 2; + } else { + u3_atom c = u3r_nord(u3a_h(a), u3a_h(b)); + + if ( 1 == c ) { + return u3r_nord(u3a_t(a), u3a_t(b)); + } else { + return c; + } + } + } + } +} + +/* u3r_sing_c(): cord/C-string value equivalence. +*/ +c3_o +u3r_sing_c(const c3_c* a_c, + u3_noun b) +{ + u3_assert(u3_none != b); + + if ( !_(u3a_is_atom(b)) ) { + return c3n; + } + else { + c3_w w_sof = strlen(a_c); + c3_w i_w; + + if ( w_sof != u3r_met(3, b) ) { + return c3n; + } + for ( i_w = 0; i_w < w_sof; i_w++ ) { + if ( u3r_byte(i_w, b) != a_c[i_w] ) { + return c3n; + } + } + return c3y; + } +} + +/* u3r_bush(): +** +** Factor [a] as a bush [b.[p q] c]. +*/ +c3_o +u3r_bush(u3_noun a, + u3_noun* b, + u3_noun* c) +{ + u3_assert(u3_none != a); + + if ( _(u3a_is_atom(a)) ) { + return c3n; + } + else { + *b = u3a_h(a); + + if ( _(u3a_is_atom(*b)) ) { + return c3n; + } else { + *c = u3a_t(a); + return c3y; + } + } +} + +/* u3r_bite(): retrieve/default $bloq and $step from $bite. +*/ +c3_o +u3r_bite(u3_noun bite, u3_atom* bloq, u3_atom *step) +{ + u3_noun hed, tal; + + if ( c3n == u3r_cell(bite, &hed, &tal) ) { + *bloq = bite; + *step = 1; + return c3y; + } + else if ( (c3n == u3a_is_atom(hed)) + || (c3n == u3a_is_atom(tal)) ) + { + return c3n; + } + else { + *bloq = hed; + *step = tal; + return c3y; + } +} + +/* u3r_p(): +** +** & [0] if [a] is of the form [b *c]. +*/ +c3_o +u3r_p(u3_noun a, + u3_noun b, + u3_noun* c) +{ + u3_noun feg, nux; + + if ( (c3y == u3r_cell(a, &feg, &nux)) && + (c3y == u3r_sing(feg, b)) ) + { + if ( c ) *c = nux; + return c3y; + } + else return c3n; +} + +/* u3r_pq(): +** +** & [0] if [a] is of the form [b *c d]. +*/ +c3_o +u3r_pq(u3_noun a, + u3_noun b, + u3_noun* c, + u3_noun* d) +{ + u3_noun nux; + + if ( (c3y == u3r_p(a, b, &nux)) && + (c3y == u3r_cell(nux, c, d)) ) + { + return c3y; + } + else return c3n; +} + +/* u3r_pqr(): +** +** & [0] if [a] is of the form [b *c *d *e]. +*/ +c3_o +u3r_pqr(u3_noun a, + u3_noun b, + u3_noun* c, + u3_noun* d, + u3_noun* e) +{ + u3_noun nux; + + if ( (c3y == u3r_p(a, b, &nux)) && + (c3y == u3r_trel(nux, c, d, e)) ) + { + return c3y; + } + else return c3n; +} + +/* u3r_pqrs(): +** +** & [0] if [a] is of the form [b *c *d *e *f]. +*/ +c3_o +u3r_pqrs(u3_noun a, + u3_noun b, + u3_noun* c, + u3_noun* d, + u3_noun* e, + u3_noun* f) +{ + u3_noun nux; + + if ( (c3y == u3r_p(a, b, &nux)) && + (c3y == u3r_qual(nux, c, d, e, f)) ) + { + return c3y; + } + else return c3n; +} + +/* u3r_met(): +** +** Return the size of (b) in bits, rounded up to +** (1 << a_y). +** +** For example, (a_y == 3) returns the size in bytes. +** NB: (a_y) must be < 37. +*/ +c3_w +u3r_met(c3_y a_y, + u3_atom b) +{ + c3_dessert(u3_none != b); + c3_dessert(_(u3a_is_atom(b))); + + if ( b == 0 ) { + return 0; + } + /* gal_w: number of words besides (daz_w) in (b). + ** daz_w: top word in (b). + */ + c3_w gal_w; + c3_w daz_w; + + if ( _(u3a_is_cat(b)) ) { + gal_w = 0; + daz_w = b; + } + else { + u3a_atom* b_u = u3a_to_ptr(b); + + gal_w = (b_u->len_w) - 1; + daz_w = b_u->buf_w[gal_w]; + } + + /* 5 because 1<<2 bytes in c3_w, 1<<3 bits in byte. + aka log2(CHAR_BIT * sizeof gal_w) + a_y < 5 informs whether we shift return left or right + */ + if (a_y < 5) { + c3_y max_y = (1 << a_y) - 1; + c3_y gow_y = 5 - a_y; + + if (gal_w > ((UINT32_MAX - (32 + max_y)) >> gow_y)) + return u3m_bail(c3__fail); + + return (gal_w << gow_y) + + ((c3_bits_word(daz_w) + max_y) + >> a_y); + } + c3_y gow_y = (a_y - 5); + return ((gal_w + 1) + ((1 << gow_y) - 1)) >> gow_y; +} + +/* u3r_bit(): +** +** Return bit (a_w) of (b). +*/ +c3_b +u3r_bit(c3_w a_w, + u3_atom b) +{ + u3_assert(u3_none != b); + u3_assert(_(u3a_is_atom(b))); + + if ( _(u3a_is_cat(b)) ) { + if ( a_w >= 31 ) { + return 0; + } + else return (1 & (b >> a_w)); + } + else { + u3a_atom* b_u = u3a_to_ptr(b); + c3_y vut_y = (a_w & 31); + c3_w pix_w = (a_w >> 5); + + if ( pix_w >= b_u->len_w ) { + return 0; + } + else { + c3_w nys_w = b_u->buf_w[pix_w]; + + return (1 & (nys_w >> vut_y)); + } + } +} + +/* u3r_byte(): +** +** Return byte (a_w) of (b). +*/ +c3_y +u3r_byte(c3_w a_w, + u3_atom b) +{ + u3_assert(u3_none != b); + u3_assert(_(u3a_is_atom(b))); + + if ( _(u3a_is_cat(b)) ) { + if ( a_w > 3 ) { + return 0; + } + else return (255 & (b >> (a_w << 3))); + } + else { + u3a_atom* b_u = u3a_to_ptr(b); + c3_y vut_y = (a_w & 3); + c3_w pix_w = (a_w >> 2); + + if ( pix_w >= b_u->len_w ) { + return 0; + } + else { + c3_w nys_w = b_u->buf_w[pix_w]; + + return (255 & (nys_w >> (vut_y << 3))); + } + } +} + +/* u3r_bytes(): +** +** Copy bytes (a_w) through (a_w + b_w - 1) from (d) to (c). +*/ +void +u3r_bytes(c3_w a_w, + c3_w b_w, + c3_y* c_y, + u3_atom d) +{ + u3_assert(u3_none != d); + u3_assert(_(u3a_is_atom(d))); + + if ( _(u3a_is_cat(d)) ) { + c3_w e_w = d >> (c3_min(a_w, 4) << 3); + c3_w m_w = c3_min(b_w, 4); + memcpy(c_y, (c3_y*)&e_w, m_w); + if ( b_w > 4 ) { + memset(c_y + 4, 0, b_w - 4); + } + } + else { + u3a_atom* d_u = u3a_to_ptr(d); + c3_w n_w = d_u->len_w << 2; + c3_y* x_y = (c3_y*)d_u->buf_w + a_w; + + if ( a_w >= n_w ) { + memset(c_y, 0, b_w); + } + else { + c3_w z_w = c3_min(b_w, n_w - a_w); + memcpy(c_y, x_y, z_w); + if ( b_w > n_w - a_w ) { + memset(c_y + z_w, 0, b_w + a_w - n_w); + } + } + } +} + +/* u3r_bytes_fit(): +** +** Copy (len_w) bytes of (a) into (buf_y) if it fits, returning overage +*/ +c3_w +u3r_bytes_fit(c3_w len_w, c3_y *buf_y, u3_atom a) +{ + c3_w met_w = u3r_met(3, a); + if ( met_w <= len_w ) { + u3r_bytes(0, len_w, buf_y, a); + return 0; + } + else { + return len_w - met_w; + } +} + +/* u3r_bytes_alloc(): +** +** Copy (len_w) bytes starting at (a_w) from (b) into a fresh allocation. +*/ +c3_y* +u3r_bytes_alloc(c3_w a_w, + c3_w len_w, + u3_atom b) +{ + c3_y* b_y = u3a_malloc(len_w); + u3r_bytes(a_w, a_w + len_w, b_y, b); + return b_y; +} + +/* u3r_bytes_all(): +** +** Allocate and return a new byte array with all the bytes of (a), +** storing the length in (len_w). +*/ +c3_y* +u3r_bytes_all(c3_w* len_w, u3_atom a) +{ + c3_w met_w = *len_w = u3r_met(3, a); + return u3r_bytes_alloc(0, met_w, a); +} + +/* u3r_mp(): +** +** Copy (b) into (a_mp). +*/ +void +u3r_mp(mpz_t a_mp, + u3_atom b) +{ + u3_assert(u3_none != b); + u3_assert(_(u3a_is_atom(b))); + + if ( _(u3a_is_cat(b)) ) { + mpz_init_set_ui(a_mp, b); + } + else { + u3a_atom* b_u = u3a_to_ptr(b); + c3_w len_w = b_u->len_w; + c3_d bit_d = (c3_d)len_w << 5; + + // avoid reallocation on import, if possible + // + mpz_init2(a_mp, (c3_w)c3_min(bit_d, UINT32_MAX)); + mpz_import(a_mp, len_w, -1, sizeof(c3_w), 0, 0, b_u->buf_w); + } +} + +/* u3r_short(): +** +** Return short (a_w) of (b). +*/ +c3_s +u3r_short(c3_w a_w, + u3_atom b) +{ + u3_assert( u3_none != b ); + u3_assert( c3y == u3a_is_atom(b) ); + + if ( c3y == u3a_is_cat(b) ) { + switch ( a_w ) { + case 0: return b & 0xffff; + case 1: return b >> 16; + default: return 0; + } + } + else { + u3a_atom* b_u = u3a_to_ptr(b); + c3_w nix_w = a_w >> 1; + + if ( nix_w >= b_u->len_w ) { + return 0; + } + else { + c3_w wor_w = b_u->buf_w[nix_w]; + + return ( a_w & 1 ) ? (wor_w >> 16) : (wor_w & 0xffff); + } + } +} + +/* u3r_word(): +** +** Return word (a_w) of (b). +*/ +c3_w +u3r_word(c3_w a_w, + u3_atom b) +{ + u3_assert(u3_none != b); + u3_assert(_(u3a_is_atom(b))); + + if ( _(u3a_is_cat(b)) ) { + if ( a_w > 0 ) { + return 0; + } + else return b; + } + else { + u3a_atom* b_u = u3a_to_ptr(b); + + if ( a_w >= b_u->len_w ) { + return 0; + } + else return b_u->buf_w[a_w]; + } +} + +/* u3r_word_fit(): +** +** Fill (out_w) with (a) if it fits, returning success. +*/ +c3_t +u3r_word_fit(c3_w *out_w, u3_atom a) +{ + if ( u3r_met(5, a) > 1 ) { + return 0; + } + else { + *out_w = u3r_word(0, a); + return 1; + } +} + +/* u3r_chub(): +** +** Return double-word (a_w) of (b). +*/ +c3_d +u3r_chub(c3_w a_w, + u3_atom b) +{ + c3_w wlo_w = u3r_word(a_w * 2, b); + c3_w whi_w = u3r_word(1 + (a_w * 2), b); + + return (((uint64_t)whi_w) << 32ULL) | ((uint64_t)wlo_w); +} + +/* u3r_words(): +** +** Copy words (a_w) through (a_w + b_w - 1) from (d) to (c). +*/ +void +u3r_words(c3_w a_w, + c3_w b_w, + c3_w* c_w, + u3_atom d) +{ + u3_assert(u3_none != d); + u3_assert(_(u3a_is_atom(d))); + + if ( b_w == 0 ) { + return; + } + if ( _(u3a_is_cat(d)) ) { + if ( a_w == 0 ) { + *c_w = d; + memset((c3_y*)(c_w + 1), 0, (b_w - 1) << 2); + } + else { + memset((c3_y*)c_w, 0, b_w << 2); + } + } + else { + u3a_atom* d_u = u3a_to_ptr(d); + if ( a_w >= d_u->len_w ) { + memset((c3_y*)c_w, 0, b_w << 2); + } + else { + c3_w z_w = c3_min(b_w, d_u->len_w - a_w); + c3_w* x_w = d_u->buf_w + a_w; + memcpy((c3_y*)c_w, (c3_y*)x_w, z_w << 2); + if ( b_w > d_u->len_w - a_w ) { + memset((c3_y*)(c_w + z_w), 0, (b_w + a_w - d_u->len_w) << 2); + } + } + } +} + +/* u3r_chubs(): +** +** Copy double-words (a_w) through (a_w + b_w - 1) from (d) to (c). +*/ +void +u3r_chubs(c3_w a_w, + c3_w b_w, + c3_d* c_d, + u3_atom d) +{ + /* XX: assumes little-endian + */ + u3r_words(a_w * 2, b_w * 2, (c3_w *)c_d, d); +} + +/* u3r_safe_byte(): validate and retrieve byte. +*/ +c3_o +u3r_safe_byte(u3_noun dat, c3_y* out_y) +{ + if ( (c3n == u3a_is_atom(dat)) + || (1 < u3r_met(3, dat)) ) + { + return c3n; + } + + *out_y = u3r_byte(0, dat); + return c3y; +} + +/* u3r_safe_word(): validate and retrieve word. +*/ +c3_o +u3r_safe_word(u3_noun dat, c3_w* out_w) +{ + if ( (c3n == u3a_is_atom(dat)) + || (1 < u3r_met(5, dat)) ) + { + return c3n; + } + + *out_w = u3r_word(0, dat); + return c3y; +} + +/* u3r_safe_chub(): validate and retrieve chub. +*/ +c3_o +u3r_safe_chub(u3_noun dat, c3_d* out_d) +{ + if ( (c3n == u3a_is_atom(dat)) + || (1 < u3r_met(6, dat)) ) + { + return c3n; + } + + *out_d = u3r_chub(0, dat); + return c3y; +} + +/* u3r_chop_bits(): +** +** XOR `wid_d` bits from`src_w` at `bif_g` to `dst_w` at `bif_g` +** +** NB: [dst_w] must have space for [bit_g + wid_d] bits +*/ +void +u3r_chop_bits(c3_g bif_g, + c3_d wid_d, + c3_g bit_g, + c3_w* dst_w, + const c3_w* src_w) +{ + c3_y fib_y = 32 - bif_g; + c3_y tib_y = 32 - bit_g; + + // we need to chop words + // + if ( wid_d >= tib_y ) { + // align *dst_w + // + if ( bit_g ) { + c3_w low_w = src_w[0] >> bif_g; + + if ( bif_g > bit_g ) { + low_w ^= src_w[1] << fib_y; + } + + *dst_w++ ^= low_w << bit_g; + + wid_d -= tib_y; + bif_g += tib_y; + src_w += !!(bif_g >> 5); + bif_g &= 31; + fib_y = 32 - bif_g; + } + + { + size_t i_i, byt_i = wid_d >> 5; + + if ( !bif_g ) { + for ( i_i = 0; i_i < byt_i; i_i++ ) { + dst_w[i_i] ^= src_w[i_i]; + } + } + else { + for ( i_i = 0; i_i < byt_i; i_i++ ) { + dst_w[i_i] ^= (src_w[i_i] >> bif_g) ^ (src_w[i_i + 1] << fib_y); + } + } + + src_w += byt_i; + dst_w += byt_i; + wid_d &= 31; + bit_g = 0; + } + } + + // we need to chop (more) bits + // + if ( wid_d ) { + c3_w hig_w = src_w[0] >> bif_g; + + if ( wid_d > fib_y ) { + hig_w ^= src_w[1] << fib_y; + } + + *dst_w ^= (hig_w & (((c3_d)1 << wid_d) - 1)) << bit_g; + } +} + +/* u3r_chop_words(): +** +** Into the bloq space of `met`, from position `fum` for a +** span of `wid`, to position `tou`, XOR from `src_w` +** into `dst_w`. +** +** NB: [dst_w] must have space for [tou_w + wid_w] bloqs +*/ +void +u3r_chop_words(c3_g met_g, + c3_w fum_w, + c3_w wid_w, + c3_w tou_w, + c3_w* dst_w, + c3_w len_w, + const c3_w* src_w) +{ + // operate on words + // + if ( met_g >= 5 ) { + size_t i_i, wid_i; + + { + c3_g hut_g = met_g - 5; + size_t fum_i = (size_t)fum_w << hut_g; + size_t tou_i = (size_t)tou_w << hut_g; + size_t tot_i; + + wid_i = (size_t)wid_w << hut_g; + tot_i = fum_i + wid_i; + + // since [dst_w] must have space for (tou_w + wid_w) bloqs, + // neither conversion can overflow + // + if ( (fum_i >> hut_g != fum_w) || (tot_i - wid_i != fum_i) ) { + u3m_bail(c3__fail); + return; + } + else if ( fum_i >= len_w ) { + return; + } + + if ( tot_i > len_w ) { + wid_i -= tot_i - len_w; + } + + src_w += fum_i; + dst_w += tou_i; + } + + for ( i_i = 0; i_i < wid_i; i_i++ ) { + dst_w[i_i] ^= src_w[i_i]; + } + } + // operate on bits + // + else { + c3_d wid_d = (c3_d)wid_w << met_g; + c3_g bif_g, bit_g; + + { + c3_d len_d = (c3_d)len_w << 5; + c3_d fum_d = (c3_d)fum_w << met_g; + c3_d tou_d = (c3_d)tou_w << met_g; + c3_d tot_d = fum_d + wid_d; + + // see above + // + if ( (fum_d >> met_g != fum_w) || (tot_d - wid_d != fum_d) ) { + u3m_bail(c3__fail); + return; + } + else if ( fum_d > len_d ) { + return; + } + + if ( tot_d > len_d ) { + wid_d -= tot_d - len_d; + } + + src_w += fum_d >> 5; + dst_w += tou_d >> 5; + bif_g = fum_d & 31; + bit_g = tou_d & 31; + } + + u3r_chop_bits(bif_g, wid_d, bit_g, dst_w, src_w); + } +} + +/* u3r_chop(): +** +** Into the bloq space of `met`, from position `fum` for a +** span of `wid`, to position `tou`, XOR from atom `src` +** into `dst_w`. +** +** NB: [dst_w] must have space for [tou_w + wid_w] bloqs +*/ +void +u3r_chop(c3_g met_g, + c3_w fum_w, + c3_w wid_w, + c3_w tou_w, + c3_w* dst_w, + u3_atom src) +{ + c3_w* src_w; + c3_w len_w; + + if ( _(u3a_is_cat(src)) ) { + len_w = src ? 1 : 0; + src_w = &src; + } + else { + u3a_atom* src_u = u3a_to_ptr(src); + + u3_assert(u3_none != src); + u3_assert(_(u3a_is_atom(src))); + + len_w = src_u->len_w; + src_w = src_u->buf_w; + } + + u3r_chop_words(met_g, fum_w, wid_w, tou_w, dst_w, len_w, src_w); +} + +/* u3r_string(): `a` as malloced C string. +*/ +c3_c* +u3r_string(u3_atom a) +{ + c3_w met_w = u3r_met(3, a); + c3_c* str_c = c3_malloc(met_w + 1); + + u3r_bytes(0, met_w, (c3_y*)str_c, a); + str_c[met_w] = 0; + return str_c; +} + +/* u3r_tape(): `a`, a list of bytes, as malloced C string. +*/ +c3_y* +u3r_tape(u3_noun a) +{ + u3_noun b; + c3_w i_w; + c3_y *a_y; + + for ( i_w = 0, b=a; c3y == u3a_is_cell(b); i_w++, b=u3a_t(b) ) + ; + a_y = c3_malloc(i_w + 1); + + for ( i_w = 0, b=a; c3y == u3a_is_cell(b); i_w++, b=u3a_t(b) ) { + a_y[i_w] = u3a_h(b); + } + a_y[i_w] = 0; + + return a_y; +} + +/* u3r_mug_both(): Join two mugs. +*/ +c3_l +u3r_mug_both(c3_l lef_l, c3_l rit_l) +{ + c3_y len_y = 4 + ((c3_bits_word(rit_l) + 0x7) >> 3); + c3_w syd_w = 0xdeadbeef; + c3_w i_w = 0; + c3_y buf_y[8]; + + buf_y[0] = lef_l & 0xff; + buf_y[1] = (lef_l >> 8) & 0xff; + buf_y[2] = (lef_l >> 16) & 0xff; + buf_y[3] = (lef_l >> 24) & 0xff; + buf_y[4] = rit_l & 0xff; + buf_y[5] = (rit_l >> 8) & 0xff; + buf_y[6] = (rit_l >> 16) & 0xff; + buf_y[7] = (rit_l >> 24) & 0xff; + + while ( i_w < 8 ) { + c3_w haz_w; + c3_l ham_l; + + MurmurHash3_x86_32(buf_y, len_y, syd_w, &haz_w); + ham_l = (haz_w >> 31) ^ (haz_w & 0x7fffffff); + + if ( 0 == ham_l ) { + syd_w++; i_w++; + } + else { + return ham_l; + } + } + + return 0xfffe; +} + +/* u3r_mug_bytes(): Compute the mug of `buf`, `len`, LSW first. +*/ +c3_l +u3r_mug_bytes(const c3_y *buf_y, + c3_w len_w) +{ + c3_w syd_w = 0xcafebabe; + c3_w i_w = 0; + + while ( i_w < 8 ) { + c3_w haz_w; + c3_l ham_l; + + MurmurHash3_x86_32(buf_y, len_w, syd_w, &haz_w); + ham_l = (haz_w >> 31) ^ (haz_w & 0x7fffffff); + + if ( 0 == ham_l ) { + syd_w++; i_w++; + } + else { + return ham_l; + } + } + + return 0x7fff; +} + +/* u3r_mug_c(): Compute the mug of `a`, LSB first. +*/ +c3_l +u3r_mug_c(const c3_c* a_c) +{ + return u3r_mug_bytes((c3_y*)a_c, strlen(a_c)); +} + +/* u3r_mug_cell(): Compute the mug of the cell `[hed tel]`. +*/ +c3_l +u3r_mug_cell(u3_noun hed, + u3_noun tel) +{ + c3_w lus_w = u3r_mug(hed); + c3_w biq_w = u3r_mug(tel); + + return u3r_mug_both(lus_w, biq_w); +} + +/* u3r_mug_chub(): Compute the mug of `num`, LSW first. +*/ +c3_l +u3r_mug_chub(c3_d num_d) +{ + c3_w buf_w[2]; + + buf_w[0] = (c3_w)(num_d & 0xffffffffULL); + buf_w[1] = (c3_w)(num_d >> 32); + + return u3r_mug_words(buf_w, 2); +} + +/* u3r_mug_words(): 31-bit nonzero MurmurHash3 on raw words. +*/ +c3_l +u3r_mug_words(const c3_w* key_w, c3_w len_w) +{ + c3_w byt_w; + + // ignore trailing zeros + // + while ( len_w && !key_w[len_w - 1] ) { + len_w--; + } + + // calculate byte-width a la u3r_met(3, ...) + // + if ( !len_w ) { + byt_w = 0; + } + else { + c3_w gal_w = len_w - 1; + c3_w daz_w = key_w[gal_w]; + + byt_w = (gal_w << 2) + ((c3_bits_word(daz_w) + 7) >> 3); + } + + // XX: assumes little-endian + // + return u3r_mug_bytes((c3_y*)key_w, byt_w); +} + +/* _cr_mug: stack frame for recording cell traversal +** !mug == head-frame +*/ +typedef struct { + c3_l mug_l; + u3_cell cel; +} _cr_mugf; + +/* _cr_mug_next(): advance mug calculation, pushing cells onto the stack. +*/ +static inline c3_l +_cr_mug_next(u3a_pile* pil_u, u3_noun veb) +{ + while ( 1 ) { + // veb is a direct atom, mug is not memoized + // + if ( c3y == u3a_is_cat(veb) ) { + return (c3_l)u3r_mug_words(&veb, 1); + } + // veb is indirect, a pointer into the loom + // + else { + u3a_noun* veb_u = u3a_to_ptr(veb); + + // veb has already been mugged, return memoized value + // + // XX add debug assertion that mug is 31-bit? + // + if ( veb_u->mug_w ) { + return (c3_l)veb_u->mug_w; + } + // veb is an indirect atom, mug its bytes and memoize + // + else if ( c3y == u3a_is_atom(veb) ) { + u3a_atom* vat_u = (u3a_atom*)veb_u; + c3_l mug_l = u3r_mug_words(vat_u->buf_w, vat_u->len_w); + vat_u->mug_w = mug_l; + return mug_l; + } + // veb is a cell, push a stack frame to mark head-recursion + // and read the head + // + else { + u3a_cell* cel_u = (u3a_cell*)veb_u; + _cr_mugf* fam_u = u3a_push(pil_u); + + fam_u->mug_l = 0; + fam_u->cel = veb; + + veb = cel_u->hed; + continue; + } + } + } +} + +/* u3r_mug(): statefully mug a noun with 31-bit murmur3. +*/ +c3_l +u3r_mug(u3_noun veb) +{ + u3a_pile pil_u; + _cr_mugf* fam_u; + c3_l mug_l; + + // sanity check + // + u3_assert( u3_none != veb ); + + u3a_pile_prep(&pil_u, sizeof(*fam_u)); + + // commence mugging + // + mug_l = _cr_mug_next(&pil_u, veb); + + // process cell results + // + if ( c3n == u3a_pile_done(&pil_u) ) { + fam_u = u3a_peek(&pil_u); + + do { + // head-frame: stash mug and continue into the tail + // + if ( !fam_u->mug_l ) { + u3a_cell* cel_u = u3a_to_ptr(fam_u->cel); + + fam_u->mug_l = mug_l; + mug_l = _cr_mug_next(&pil_u, cel_u->tel); + fam_u = u3a_peek(&pil_u); + } + // tail-frame: calculate/memoize cell mug and pop the stack + // + else { + u3a_cell* cel_u = u3a_to_ptr(fam_u->cel); + + mug_l = u3r_mug_both(fam_u->mug_l, mug_l); + cel_u->mug_w = mug_l; + fam_u = u3a_pop(&pil_u); + } + } + while ( c3n == u3a_pile_done(&pil_u) ); + } + + return mug_l; +} + +/* u3r_skip(): +** +** Extract a constant from a formula, ignoring +** safe/static hints, doing no computation. +*/ +u3_weak +u3r_skip(u3_noun fol) +{ + while ( c3y == u3du(fol) ) { + switch ( u3h(fol) ) { + default: return u3_none; + case 1: return u3t(fol); + case 11: { + u3_noun arg = u3t(fol), + hod = u3h(arg); + + if ( (c3y == u3du(hod)) && (u3_none == u3r_skip(u3t(hod))) ) { + return u3_none; + } + fol = u3t(arg); + } + } + } + return u3_none; +} + +/* u3r_safe(): +** +** Returns yes if the formula won't crash +** and has no hints, returning constant result +** if possible. *out is undefined if the return +** is c3n +*/ +c3_o +u3r_safe(u3_noun fol, u3_weak* out) +{ + u3_noun h_fol, t_fol; + c3_o saf_o; + + if ( c3n == u3r_cell(fol, &h_fol, &t_fol) ) { + return c3n; + } + switch ( h_fol ) { + default: return c3n; + case 0: + *out = u3_none; + return __(1 == t_fol); + + case 1: + *out = t_fol; + return c3y; + + case 3: { + u3_weak o; + saf_o = u3r_safe(t_fol, &o); + if ( _(saf_o) ) { + *out = (u3_none == o) ? u3_none : u3du(o); + } + return saf_o; + } + + case 5: { + u3_noun p, q; + u3_weak o1, o2; + saf_o = c3a(u3r_cell(t_fol, &p, &q), + c3a(u3r_safe(p, &o1), u3r_safe(q, &o2))); + + if ( _(saf_o) ) { + *out = (u3_none == o1) ? u3_none + : (u3_none == o2) ? u3_none + : u3r_sing(o1, o2); + } + return saf_o; + } + + case 6: { + u3_noun p, q, r; + u3_weak o; + saf_o = c3a(u3r_trel(t_fol, &p, &q, &r), u3r_safe(p, &o)); + + if ( _(saf_o) ) { + switch ( o ) { + case c3y: return u3r_safe(q, out); + case c3n: return u3r_safe(r, out); + default: return c3n; + } + } + else { + return c3n; + } + } + + case 7: + case 8: { + u3_noun p, q; + u3_weak o; + return c3a(u3r_cell(t_fol, &p, &q), + c3a(u3r_safe(p, &o), u3r_safe(q, out))); + } + } +} diff --git a/vere/pkg/noun/retrieve.h b/vere/pkg/noun/retrieve.h new file mode 100644 index 0000000..c02c008 --- /dev/null +++ b/vere/pkg/noun/retrieve.h @@ -0,0 +1,547 @@ +/// @file + +#ifndef U3_RETRIEVE_H +#define U3_RETRIEVE_H + +#include "c3/c3.h" +#include "allocate.h" +#include "error.h" +#include "gmp.h" +#include "types.h" + + /** u3r_*: read without ever crashing. + **/ + + /* u3r_cell(): factor (a) as a cell (b c). + */ + inline c3_o + u3r_cell(u3_noun a, u3_noun* b, u3_noun* c) + { + u3a_cell* cel_u; + + u3_assert(u3_none != a); + + if ( c3y == u3a_is_cell(a) ) { + cel_u = u3a_to_ptr(a); + if ( b ) *b = cel_u->hed; + if ( c ) *c = cel_u->tel; + return c3y; + } + else { + return c3n; + } + } + + /* u3r_trel(): factor (a) as a trel (b c d). + */ + inline c3_o + u3r_trel(u3_noun a, u3_noun *b, u3_noun *c, u3_noun *d) + { + u3_noun guf; + + if ( (c3y == u3r_cell(a, b, &guf)) && + (c3y == u3r_cell(guf, c, d)) ) { + return c3y; + } + else { + return c3n; + } + } + + /* u3r_qual(): factor (a) as a qual (b c d e). + */ + inline c3_o + u3r_qual(u3_noun a, + u3_noun* b, + u3_noun* c, + u3_noun* d, + u3_noun* e) + { + u3_noun guf; + + if ( (c3y == u3r_cell(a, b, &guf)) && + (c3y == u3r_trel(guf, c, d, e)) ) { + return c3y; + } + else return c3n; + } + + /* u3r_quil(): factor (a) as a quil (b c d e f). + */ + inline c3_o + u3r_quil(u3_noun a, + u3_noun* b, + u3_noun* c, + u3_noun* d, + u3_noun* e, + u3_noun* f) + { + u3_noun guf; + + if ( (c3y == u3r_cell(a, b, &guf)) && + (c3y == u3r_qual(guf, c, d, e, f)) ) { + return c3y; + } + else return c3n; + } + + /* u3r_hext(): factor (a) as a hext (b c d e f g) + */ + inline c3_o + u3r_hext(u3_noun a, + u3_noun* b, + u3_noun* c, + u3_noun* d, + u3_noun* e, + u3_noun* f, + u3_noun* g) + { + u3_noun guf; + + if ( (c3y == u3r_cell(a, b, &guf)) && + (c3y == u3r_quil(guf, c, d, e, f, g)) ) { + return c3y; + } + else return c3n; + } + + /* u3r_at(): fragment `a` of `b`, or u3_none. + */ + u3_weak + u3r_at(u3_atom a, u3_weak b); + + /* u3r_mean(): + ** + ** Attempt to deconstruct `a` by axis, noun pairs; 0 terminates. + ** Axes must be sorted in tree order. + */ + c3_o + u3r_vmean(u3_noun a, va_list ap); + c3_o + u3r_mean(u3_noun a, ...); + + /* u3r_mug_both(): Join two mugs. + */ + c3_l + u3r_mug_both(c3_w lef_w, c3_w rit_w); + + /* u3r_mug_bytes(): Compute the mug of `buf`, `len`, LSW first. + */ + c3_l + u3r_mug_bytes(const c3_y *buf_y, + c3_w len_w); + + /* u3r_mug_c(): Compute the mug of `a`, LSB first. + */ + c3_l + u3r_mug_c(const c3_c *a_c); + + /* u3r_mug_cell(): Compute the mug of the cell `[hed tel]`. + */ + c3_l + u3r_mug_cell(u3_noun hed, + u3_noun tel); + + /* u3r_mug_chub(): Compute the mug of `num`, LSW first. + */ + c3_l + u3r_mug_chub(c3_d num_d); + + /* u3r_mug_words(): 31-bit nonzero MurmurHash3 on raw words. + */ + c3_l + u3r_mug_words(const c3_w* key_w, c3_w len_w); + + /* u3r_mug(): statefully mug a noun with 31-bit murmur3. + */ + c3_l + u3r_mug(u3_noun veb); + + /* u3r_fing(): + ** + ** Yes iff (a) and (b) are the same copy of the same noun. + ** (Ie, by pointer equality - u3r_sing with false negatives.) + */ + c3_o + u3r_fing(u3_noun a, + u3_noun b); + + /* u3r_fing_cell(): + ** + ** Yes iff `[p q]` and `b` are the same copy of the same noun. + */ + c3_o + u3r_fing_cell(u3_noun p, + u3_noun q, + u3_noun b); + + /* u3r_fing_mixt(): + ** + ** Yes iff `[p q]` and `b` are the same copy of the same noun. + */ + c3_o + u3r_fing_mixt(const c3_c* p_c, + u3_noun q, + u3_noun b); + + /* u3r_fing_trel(): + ** + ** Yes iff `[p q r]` and `b` are the same copy of the same noun. + */ + c3_o + u3r_fing_trel(u3_noun p, + u3_noun q, + u3_noun r, + u3_noun b); + + /* u3r_fing_qual(): + ** + ** Yes iff `[p q r s]` and `b` are the same copy of the same noun. + */ + c3_o + u3r_fing_qual(u3_noun p, + u3_noun q, + u3_noun r, + u3_noun s, + u3_noun b); + + /* u3r_sing(): noun value equality. + ** + ** Unifies noun pointers on inner roads. + */ + c3_o + u3r_sing(u3_noun a, u3_noun b); + + /* u3r_sing_c(): cord/C-string value equivalence. + */ + c3_o + u3r_sing_c(const c3_c* a_c, + u3_noun b); + + /* u3r_sing_cell(): + ** + ** Yes iff `[p q]` and `b` are the same noun. + */ + c3_o + u3r_sing_cell(u3_noun p, + u3_noun q, + u3_noun b); + + /* u3r_sing_mixt(): + ** + ** Yes iff `[p q]` and `b` are the same noun. + */ + c3_o + u3r_sing_mixt(const c3_c* p_c, + u3_noun q, + u3_noun b); + + /* u3r_sing_trel(): + ** + ** Yes iff `[p q r]` and `b` are the same noun. + */ + c3_o + u3r_sing_trel(u3_noun p, + u3_noun q, + u3_noun r, + u3_noun b); + + /* u3r_sing_qual(): + ** + ** Yes iff `[p q r s]` and `b` are the same noun. + */ + c3_o + u3r_sing_qual(u3_noun p, + u3_noun q, + u3_noun r, + u3_noun s, + u3_noun b); + + /* u3r_nord(): + ** + ** Return 0, 1 or 2 if `a` is below, equal to, or above `b`. + */ + u3_atom + u3r_nord(u3_noun a, + u3_noun b); + + /* u3r_mold(): + ** + ** Divide `a` as a mold `[b.[p q] c]`. + */ + c3_o + u3r_mold(u3_noun a, + u3_noun* b, + u3_noun* c); + + /* u3r_bite(): retrieve/default $bloq and $step from $bite. + */ + c3_o + u3r_bite(u3_noun bite, u3_atom* bloq, u3_atom *step); + + /* u3r_p(): + ** + ** & [0] if [a] is of the form [b *c]. + */ + c3_o + u3r_p(u3_noun a, + u3_noun b, + u3_noun* c); + + /* u3r_bush(): + ** + ** Factor [a] as a bush [b.[p q] c]. + */ + c3_o + u3r_bush(u3_noun a, + u3_noun* b, + u3_noun* c); + + /* u3r_pq(): + ** + ** & [0] if [a] is of the form [b *c d]. + */ + c3_o + u3r_pq(u3_noun a, + u3_noun b, + u3_noun* c, + u3_noun* d); + + /* u3r_pqr(): + ** + ** & [0] if [a] is of the form [b *c *d *e]. + */ + c3_o + u3r_pqr(u3_noun a, + u3_noun b, + u3_noun* c, + u3_noun* d, + u3_noun* e); + + /* u3r_pqrs(): + ** + ** & [0] if [a] is of the form [b *c *d *e *f]. + */ + c3_o + u3r_pqrs(u3_noun a, + u3_noun b, + u3_noun* c, + u3_noun* d, + u3_noun* e, + u3_noun* f); + + /* u3r_met(): + ** + ** Return the size of (b) in bits, rounded up to + ** (1 << a_y). + ** + ** For example, (a_y == 3) returns the size in bytes. + ** NB: (a_y) must be < 37. + */ + c3_w + u3r_met(c3_y a_y, + u3_atom b); + + /* u3r_bit(): + ** + ** Return bit (a_w) of (b). + */ + c3_b + u3r_bit(c3_w a_w, + u3_atom b); + + /* u3r_byte(): + ** + ** Return byte (a_w) of (b). + */ + c3_y + u3r_byte(c3_w a_w, + u3_atom b); + + /* u3r_bytes(): + ** + ** Copy bytes (a_w) through (a_w + b_w - 1) from (d) to (c). + */ + void + u3r_bytes(c3_w a_w, + c3_w b_w, + c3_y* c_y, + u3_atom d); + + /* u3r_bytes_fit(): + ** + ** Copy (len_w) bytes of (a) into (buf_y) if it fits, returning overage. + */ + c3_w + u3r_bytes_fit(c3_w len_w, + c3_y* buf_y, + u3_atom a); + + /* u3r_bytes_alloc(): + ** + ** Copy (len_w) bytes starting at (a_w) from (b) into a fresh allocation. + */ + c3_y* + u3r_bytes_alloc(c3_w a_w, + c3_w len_w, + u3_atom b); + + /* u3r_bytes_all(): + ** + ** Allocate and return a new byte array with all the bytes of (a), + ** storing the length in (len_w). + */ + c3_y* + u3r_bytes_all(c3_w* len_w, + u3_atom a); + + /* u3r_chop_bits(): + ** + ** XOR `wid_d` bits from`src_w` at `bif_g` to `dst_w` at `bif_g` + ** + ** NB: [dst_w] must have space for [bit_g + wid_d] bits + */ + void + u3r_chop_bits(c3_g bif_g, + c3_d wid_d, + c3_g bit_g, + c3_w* dst_w, + const c3_w* src_w); + + /* u3r_chop_words(): + ** + ** Into the bloq space of `met`, from position `fum` for a + ** span of `wid`, to position `tou`, XOR from `src_w` + ** into `dst_w`. + ** + ** NB: [dst_w] must have space for [tou_w + wid_w] bloqs + */ + void + u3r_chop_words(c3_g met_g, + c3_w fum_w, + c3_w wid_w, + c3_w tou_w, + c3_w* dst_w, + c3_w len_w, + const c3_w* src_w); + + /* u3r_chop(): + ** + ** Into the bloq space of `met`, from position `fum` for a + ** span of `wid`, to position `tou`, XOR from atom `src` + ** into `dst_w`. + ** + ** NB: [dst_w] must have space for [tou_w + wid_w] bloqs + */ + void + u3r_chop(c3_g met_g, + c3_w fum_w, + c3_w wid_w, + c3_w tou_w, + c3_w* dst_w, + u3_atom src); + + /* u3r_mp(): + ** + ** Copy (b) into (a_mp). + */ + void + u3r_mp(mpz_t a_mp, + u3_atom b); + + /* u3r_short(): + ** + ** Return short (a_w) of (b). + */ + c3_s + u3r_short(c3_w a_w, + u3_atom b); + + /* u3r_word(): + ** + ** Return word (a_w) of (b). + */ + c3_w + u3r_word(c3_w a_w, + u3_atom b); + + + /* u3r_word_fit(): + ** + ** Fill (out_w) with (a) if it fits, returning success. + */ + c3_t + u3r_word_fit(c3_w* out_w, + u3_atom a); + + /* u3r_chub(): + ** + ** Return double-word (a_w) of (b). + */ + c3_d + u3r_chub(c3_w a_w, + u3_atom b); + + /* u3r_words(): + ** + ** Copy words (a_w) through (a_w + b_w - 1) from (d) to (c). + */ + void + u3r_words(c3_w a_w, + c3_w b_w, + c3_w* c_w, + u3_atom d); + + /* u3r_chubs(): + ** + ** Copy double-words (a_w) through (a_w + b_w - 1) from (d) to (c). + */ + void + u3r_chubs(c3_w a_w, + c3_w b_w, + c3_d* c_d, + u3_atom d); + + /* u3r_safe_byte(): validate and retrieve byte. + */ + c3_o + u3r_safe_byte(u3_noun dat, c3_y* out_y); + + /* u3r_safe_word(): validate and retrieve word. + */ + c3_o + u3r_safe_word(u3_noun dat, c3_w* out_w); + + /* u3r_safe_chub(): validate and retrieve chub. + */ + c3_o + u3r_safe_chub(u3_noun dat, c3_d* out_d); + + /* u3r_string(): `a`, a text atom, as malloced C string. + */ + c3_c* + u3r_string(u3_atom a); + + /* u3r_tape(): `a`, a list of bytes, as malloced C string. + */ + c3_y* + u3r_tape(u3_noun a); + + /* u3r_skip(): + ** + ** Extract a constant from a formula, ignoring + ** safe/static hints, doing no computation. + */ + u3_weak + u3r_skip(u3_noun fol); + + /* u3r_safe(): + ** + ** Returns yes if the formula won't crash + ** and has no hints, returning constant result + ** if possible + */ + c3_o + u3r_safe(u3_noun fol, u3_weak* out); + +#endif /* ifndef U3_RETRIEVE_H */ diff --git a/vere/pkg/noun/retrieve_tests.c b/vere/pkg/noun/retrieve_tests.c new file mode 100644 index 0000000..7ba7fa5 --- /dev/null +++ b/vere/pkg/noun/retrieve_tests.c @@ -0,0 +1,247 @@ +/// @file + +#include "noun.h" + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + u3m_init(1 << 20); + u3m_pave(c3y); +} + +/* _test_mug(): spot check u3r_mug hashes. +*/ +static c3_i +_test_mug(void) +{ + c3_i ret_i = 1; + + if ( 0x4d441035 != u3r_mug_c("Hello, world!") ) { + fprintf(stderr, "fail (a)\r\n"); + ret_i = 0; + } + + { + u3_noun a = u3i_string("Hello, world!"); + + if ( 0x4d441035 != u3r_mug(a) ) { + fprintf(stderr, "fail (b)\r\n"); + ret_i = 0; + } + + u3z(a); + } + + { + c3_y byt_y[1]; + + if ( 0x79ff04e8 != u3r_mug_bytes(0, 0) ) { + fprintf(stderr, "fail (c) (0)\r\n"); + ret_i = 0; + } + + byt_y[0] = 1; + + if ( 0x715c2a60 != u3r_mug_bytes(byt_y, 1) ) { + fprintf(stderr, "fail (c) (1)\r\n"); + ret_i = 0; + } + + byt_y[0] = 2; + + if ( 0x718b9468 != u3r_mug_bytes(byt_y, 1) ) { + fprintf(stderr, "fail (c) (2)\r\n"); + ret_i = 0; + } + } + + if ( 0x3a811aec != u3r_mug_both(0x715c2a60, u3r_mug_cell(2, 3)) ) { + fprintf(stderr, "fail (d)\r\n"); + ret_i = 0; + } + + + { + if ( 0x192f5588 != u3r_mug_cell(0, 0) ) { + fprintf(stderr, "fail (e) (1)\r\n"); + ret_i = 0; + } + + if ( 0x6b32ec46 != u3r_mug_cell(1, 1) ) { + fprintf(stderr, "fail (e) (2)\r\n"); + ret_i = 0; + } + + if ( 0x2effe10 != u3r_mug_cell(2, 2) ) { + fprintf(stderr, "fail (e) (3)\r\n"); + ret_i = 0; + } + } + + { + u3_noun a = u3i_string("xxxxxxxxxxxxxxxxxxxxxxxxxxxx"); + + if ( 0x64dfda5c != u3r_mug(a) ) { + fprintf(stderr, "fail (f)\r\n"); + ret_i = 0; + } + + u3z(a); + } + + { + u3_noun a = u3qc_bex(32); + + if ( 0x7cefb7f != u3r_mug_cell(0, a) ) { + fprintf(stderr, "fail (g)\r\n"); + ret_i = 0; + } + + u3z(a); + } + + { + u3_noun a = u3ka_dec(u3qc_bex(128)); + + if ( 0x2aa06bfc != u3r_mug_cell(a, 1) ) { + fprintf(stderr, "fail (h)\r\n"); + ret_i = 0; + } + + u3z(a); + } + + { + // stick some zero bytes in a string + // + u3_noun str = u3kc_lsh(3, 1, + u3kc_mix(u3qc_bex(212), + u3i_string("abcdefjhijklmnopqrstuvwxyz"))); + + c3_w byt_w = u3r_met(3, str); + c3_w wor_w = u3r_met(5, str); + c3_y* str_y = c3_malloc(byt_w); + c3_w* str_w = c3_malloc(4 * wor_w); + c3_d str_d = 0; + + u3r_bytes(0, byt_w, str_y, str); + u3r_words(0, wor_w, str_w, str); + + str_d |= str_w[0]; + str_d |= ((c3_d)str_w[1] << 32ULL); + + if ( 0x34d08717 != u3r_mug(str) ) { + fprintf(stderr, "fail (i) (1) \r\n"); + ret_i = 0; + } + if ( 0x34d08717 != u3r_mug_bytes(str_y, byt_w) ) { + fprintf(stderr, "fail (i) (2)\r\n"); + ret_i = 0; + } + if ( 0x34d08717 != u3r_mug_words(str_w, wor_w) ) { + fprintf(stderr, "fail (i) (3)\r\n"); + ret_i = 0; + } + if ( u3r_mug_words(str_w, 2) != u3r_mug_chub(str_d) ) { + fprintf(stderr, "fail (i) (4)\r\n"); + ret_i = 0; + } + + c3_free(str_y); + c3_free(str_w); + u3z(str); + } + + { + c3_w som_w[4] = { 0, 0, 0, 1 }; + u3_noun som = u3i_words(4, som_w); + + if ( 0x519bd45c != u3r_mug(som) ) { + fprintf(stderr, "fail (j) (1)\r\n"); + ret_i = 0; + } + + if ( 0x519bd45c != u3r_mug_words(som_w, 4) ) { + fprintf(stderr, "fail (j) (2)\r\n"); + ret_i = 0; + } + + u3z(som); + } + + { + c3_w som_w[4] = { 0, 1, 0, 1 }; + u3_noun som = u3i_words(4, som_w); + + if ( 0x540eb8a9 != u3r_mug(som) ) { + fprintf(stderr, "fail (k) (1)\r\n"); + ret_i = 0; + } + + if ( 0x540eb8a9 != u3r_mug_words(som_w, 4) ) { + fprintf(stderr, "fail (k) (2)\r\n"); + ret_i = 0; + } + + u3z(som); + } + + { + c3_w som_w[4] = { 1, 1, 0, 1 }; + u3_noun som = u3i_words(4, som_w); + + if ( 0x319d28f9 != u3r_mug(som) ) { + fprintf(stderr, "fail (l) (1)\r\n"); + ret_i = 0; + } + + if ( 0x319d28f9 != u3r_mug_words(som_w, 4) ) { + fprintf(stderr, "fail (l) (2)\r\n"); + ret_i = 0; + } + + u3z(som); + } + + { + c3_w som_w[4] = { 0, 0, 0, 0xffff }; + u3_noun som = u3i_words(4, som_w); + + if ( 0x5230a260 != u3r_mug(som) ) { + fprintf(stderr, "fail (m) (1)\r\n"); + ret_i = 0; + } + + if ( 0x5230a260 != u3r_mug_words(som_w, 4) ) { + fprintf(stderr, "fail (m) (2)\r\n"); + ret_i = 0; + } + + u3z(som); + } + + return ret_i; +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + if ( !_test_mug() ) { + fprintf(stderr, "test_mug: failed\r\n"); + exit(1); + } + + // GC + // + u3m_grab(u3_none); + + fprintf(stderr, "test_mug: ok\n"); + + return 0; +} diff --git a/vere/pkg/noun/serial.c b/vere/pkg/noun/serial.c new file mode 100644 index 0000000..5dd6f59 --- /dev/null +++ b/vere/pkg/noun/serial.c @@ -0,0 +1,1456 @@ +/// @file + +#include "serial.h" + +#include +#include + +#include "allocate.h" +#include "hashtable.h" +#include "jets/k.h" +#include "jets/q.h" +#include "retrieve.h" +#include "serial.h" +#include "ur/ur.h" +#include "vortex.h" +#include "xtract.h" + +const c3_y u3s_dit_y[64] = { + '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', 'w', 'x', 'y', 'z', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + '-', '~' +}; + +/* _cs_jam_buf: struct for tracking the fibonacci-allocated jam of a noun +*/ +struct _cs_jam_fib { + u3i_slab* sab_u; + u3p(u3h_root) har_p; + c3_w a_w; + c3_w b_w; + c3_w bit_w; +}; + +/* _cs_jam_fib_grow(): reallocate buffer with fibonacci growth +*/ +static inline void +_cs_jam_fib_grow(struct _cs_jam_fib* fib_u, c3_w mor_w) +{ + c3_w wan_w = fib_u->bit_w + mor_w; + + // check for c3_w overflow + // + if ( wan_w < mor_w ) { + u3m_bail(c3__fail); + return; + } + + if ( wan_w > fib_u->a_w ) { + c3_w c_w = 0; + + // fibonacci growth + // + while ( c_w < wan_w ) { + c_w = fib_u->a_w + fib_u->b_w; + fib_u->b_w = fib_u->a_w; + fib_u->a_w = c_w; + } + + u3i_slab_grow(fib_u->sab_u, 0, c_w); + } +} + +/* _cs_jam_fib_chop(): chop [met_w] bits of [a] into [fib_u] +*/ +static inline void +_cs_jam_fib_chop(struct _cs_jam_fib* fib_u, c3_w met_w, u3_noun a) +{ + c3_w bit_w = fib_u->bit_w; + _cs_jam_fib_grow(fib_u, met_w); + fib_u->bit_w += met_w; + + { + c3_w* buf_w = fib_u->sab_u->buf_w; + u3r_chop(0, 0, met_w, bit_w, buf_w, a); + } +} + +/* _cs_jam_fib_mat(): length-prefixed encode (mat) [a] into [fib_u] +*/ +static void +_cs_jam_fib_mat(struct _cs_jam_fib* fib_u, u3_noun a) +{ + if ( 0 == a ) { + _cs_jam_fib_chop(fib_u, 1, 1); + } + else { + c3_w a_w = u3r_met(0, a); + c3_w b_w = c3_bits_word(a_w); + c3_w bit_w = fib_u->bit_w; + + // amortize overflow checks and reallocation + // + { + c3_w met_w = a_w + (2 * b_w); + + if ( a_w > (UINT32_MAX - 64) ) { + u3m_bail(c3__fail); + return; + } + + _cs_jam_fib_grow(fib_u, met_w); + fib_u->bit_w += met_w; + } + + { + c3_w src_w[2]; + c3_w* buf_w = fib_u->sab_u->buf_w; + + // _cs_jam_fib_chop(fib_u, b_w+1, 1 << b_w); + // + { + c3_d dat_d = (c3_d)1 << b_w; + src_w[0] = (c3_w)dat_d; + src_w[1] = dat_d >> 32; + + u3r_chop_words(0, 0, b_w + 1, bit_w, buf_w, 2, src_w); + bit_w += b_w + 1; + } + + // _cs_jam_fib_chop(fib_u, b_w-1, a_w); + // + { + src_w[0] = a_w; + u3r_chop_words(0, 0, b_w - 1, bit_w, buf_w, 1, src_w); + bit_w += b_w - 1; + } + + // _cs_jam_fib_chop(fib_u, a_w, a); + // + u3r_chop(0, 0, a_w, bit_w, buf_w, a); + } + } +} + +/* _cs_jam_fib_atom_cb(): encode atom or backref +*/ +static void +_cs_jam_fib_atom_cb(u3_atom a, void* ptr_v) +{ + struct _cs_jam_fib* fib_u = ptr_v; + u3_weak b = u3h_git(fib_u->har_p, a); + + // if [a] has no backref, encode atom and put cursor into [har_p] + // + if ( u3_none == b ) { + u3h_put(fib_u->har_p, a, u3i_words(1, &(fib_u->bit_w))); + _cs_jam_fib_chop(fib_u, 1, 0); + _cs_jam_fib_mat(fib_u, a); + } + else { + c3_w a_w = u3r_met(0, a); + c3_w b_w = u3r_met(0, b); + + // if [a] is smaller than the backref, encode atom + // + if ( a_w <= b_w ) { + _cs_jam_fib_chop(fib_u, 1, 0); + _cs_jam_fib_mat(fib_u, a); + } + // otherwise, encode backref + // + else { + _cs_jam_fib_chop(fib_u, 2, 3); + _cs_jam_fib_mat(fib_u, b); + } + } +} + +/* _cs_jam_fib_cell_cb(): encode cell or backref +*/ +static c3_o +_cs_jam_fib_cell_cb(u3_noun a, void* ptr_v) +{ + struct _cs_jam_fib* fib_u = ptr_v; + u3_weak b = u3h_git(fib_u->har_p, a); + + // if [a] has no backref, encode cell and put cursor into [har_p] + // + if ( u3_none == b ) { + u3h_put(fib_u->har_p, a, u3i_words(1, &(fib_u->bit_w))); + _cs_jam_fib_chop(fib_u, 2, 1); + return c3y; + } + // otherwise, encode backref and shortcircuit traversal + // + else { + _cs_jam_fib_chop(fib_u, 2, 3); + _cs_jam_fib_mat(fib_u, b); + return c3n; + } +} + +/* u3s_jam_fib(): jam without atom allocation. +** +** returns atom-suitable words, and *bit_w will have +** the length (in bits). return should be freed with u3a_wfree(). +*/ +c3_w +u3s_jam_fib(u3i_slab* sab_u, u3_noun a) +{ + struct _cs_jam_fib fib_u; + fib_u.har_p = u3h_new(); + fib_u.sab_u = sab_u; + + // fib(12) is small enough to be reasonably fast to allocate. + // fib(11) is needed to get fib(13). + // + // + fib_u.a_w = ur_fib12; + fib_u.b_w = ur_fib11; + fib_u.bit_w = 0; + u3i_slab_init(sab_u, 0, fib_u.a_w); + + u3a_walk_fore(a, &fib_u, _cs_jam_fib_atom_cb, _cs_jam_fib_cell_cb); + + u3h_free(fib_u.har_p); + return fib_u.bit_w; +} + +typedef struct _jam_xeno_s { + u3p(u3h_root) har_p; + ur_bsw_t rit_u; +} _jam_xeno_t; + +/* _cs_coin_chub(): shortcircuit u3i_chubs(). +*/ +static inline u3_atom +_cs_coin_chub(c3_d a_d) +{ + return ( 0x7fffffffULL >= a_d ) ? a_d : u3i_chubs(1, &a_d); +} + +/* _cs_jam_xeno_atom(): encode in/direct atom in bitstream. +*/ +static inline void +_cs_jam_bsw_atom(ur_bsw_t* rit_u, c3_w met_w, u3_atom a) +{ + if ( c3y == u3a_is_cat(a) ) { + // XX need a ur_bsw_atom32() + // + ur_bsw_atom64(rit_u, (c3_y)met_w, (c3_d)a); + } + else { + u3a_atom* vat_u = u3a_to_ptr(a); + // XX assumes little-endian + // XX need a ur_bsw_atom_words() + // + c3_y* byt_y = (c3_y*)vat_u->buf_w; + ur_bsw_atom_bytes(rit_u, (c3_d)met_w, byt_y); + } +} + +/* _cs_jam_bsw_back(): encode in/direct backref in bitstream. +*/ +static inline void +_cs_jam_bsw_back(ur_bsw_t* rit_u, c3_w met_w, u3_atom a) +{ + c3_d bak_d = ( c3y == u3a_is_cat(a) ) + ? (c3_d)a + : u3r_chub(0, a); + + // XX need a ur_bsw_back32() + // + ur_bsw_back64(rit_u, (c3_y)met_w, bak_d); +} + +/* _cs_jam_xeno_atom(): encode atom or backref in bitstream. +*/ +static void +_cs_jam_xeno_atom(u3_atom a, void* ptr_v) +{ + _jam_xeno_t* jam_u = ptr_v; + ur_bsw_t* rit_u = &(jam_u->rit_u); + u3_weak bak = u3h_git(jam_u->har_p, a); + c3_w met_w = u3r_met(0, a); + + if ( u3_none == bak ) { + u3h_put(jam_u->har_p, a, _cs_coin_chub(rit_u->bits)); + _cs_jam_bsw_atom(rit_u, met_w, a); + } + else { + c3_w bak_w = u3r_met(0, bak); + + if ( met_w <= bak_w ) { + _cs_jam_bsw_atom(rit_u, met_w, a); + } + else { + _cs_jam_bsw_back(rit_u, bak_w, bak); + } + } +} + +/* _cs_jam_xeno_cell(): encode cell or backref in bitstream. +*/ +static c3_o +_cs_jam_xeno_cell(u3_noun a, void* ptr_v) +{ + _jam_xeno_t* jam_u = ptr_v; + ur_bsw_t* rit_u = &(jam_u->rit_u); + u3_weak bak = u3h_git(jam_u->har_p, a); + + if ( u3_none == bak ) { + u3h_put(jam_u->har_p, a, _cs_coin_chub(rit_u->bits)); + ur_bsw_cell(rit_u); + return c3y; + } + else { + _cs_jam_bsw_back(rit_u, u3r_met(0, bak), bak); + return c3n; + } +} + +/* u3s_jam_xeno(): jam with off-loom buffer (re-)allocation. +*/ +c3_d +u3s_jam_xeno(u3_noun a, c3_d* len_d, c3_y** byt_y) +{ + _jam_xeno_t jam_u = {0}; + ur_bsw_init(&jam_u.rit_u, ur_fib11, ur_fib12); + jam_u.har_p = u3h_new(); + + u3a_walk_fore(a, &jam_u, _cs_jam_xeno_atom, _cs_jam_xeno_cell); + + u3h_free(jam_u.har_p); + return ur_bsw_done(&jam_u.rit_u, len_d, byt_y); +} + +/* _cs_cue: stack frame for tracking intermediate cell results +*/ +typedef struct _cs_cue { + u3_weak hed; // head of a cell or u3_none + u3_atom wid; // bitwidth of [hed] or 0 + u3_atom cur; // bit-cursor position +} _cs_cue; + +/* _cs_rub: rub, TRANSFER [cur], RETAIN [a] +*/ +static inline u3_noun +_cs_rub(u3_atom cur, u3_atom a) +{ + u3_noun pro = u3qe_rub(cur, a); + u3z(cur); + return pro; +} + +/* _cs_cue_next(): advance into [a], reading next value +** TRANSFER [cur], RETAIN [a] +*/ +static inline u3_noun +_cs_cue_next(u3a_pile* pil_u, + u3p(u3h_root) har_p, + u3_atom cur, + u3_atom a, + u3_atom* wid) +{ + while ( 1 ) { + // read tag bit at cur + // + c3_y tag_y = u3qc_cut(0, cur, 1, a); + + // low bit unset, (1 + cur) points to an atom + // + // produce atom and the width we read + // + if ( 0 == tag_y ) { + u3_noun bur = _cs_rub(u3i_vint(cur), a); + u3_noun pro = u3k(u3t(bur)); + + u3h_put(har_p, cur, u3k(pro)); + *wid = u3qa_inc(u3h(bur)); + + u3z(bur); + return pro; + } + else { + // read tag bit at (1 + cur) + // + { + u3_noun x = u3qa_inc(cur); + tag_y = u3qc_cut(0, x, 1, a); + u3z(x); + } + + // next bit set, (2 + cur) points to a backref + // + // produce referenced value and the width we read + // + if ( 1 == tag_y ) { + u3_noun bur = _cs_rub(u3ka_add(2, cur), a); + u3_noun pro = u3x_good(u3h_get(har_p, u3t(bur))); + + *wid = u3qa_add(2, u3h(bur)); + + u3z(bur); + return pro; + } + // next bit unset, (2 + cur) points to the head of a cell + // + // push a head-frame onto the road stack and read the head + // + else { + _cs_cue* fam_u = u3a_push(pil_u); + + // NB: fam_u->wid unused in head-frame + // + fam_u->hed = u3_none; + fam_u->cur = cur; + + cur = u3qa_add(2, cur); + continue; + } + } + } +} + +u3_noun +u3s_cue(u3_atom a) +{ + // pro: cue'd noun product + // wid: bitwidth read to produce [pro] + // fam_u: stack frame + // har_p: backreference table + // pil_u: stack control structure + // + u3_noun pro; + u3_atom wid; + _cs_cue* fam_u; + u3p(u3h_root) har_p = u3h_new(); + u3a_pile pil_u; + + // initialize stack control + // + u3a_pile_prep(&pil_u, sizeof(*fam_u)); + + // commence cueing at bit-position 0 + // + pro = _cs_cue_next(&pil_u, har_p, 0, a, &wid); + + // process cell results + // + if ( c3n == u3a_pile_done(&pil_u) ) { + fam_u = u3a_peek(&pil_u); + + do { + // head-frame: stash [pro] and [wid]; continue into the tail + // + if ( u3_none == fam_u->hed ) { + // NB: fam_u->wid unused in head-frame + // + fam_u->hed = pro; + fam_u->wid = wid; + + // continue reading at the bit-position after [pro] + { + u3_noun cur = u3ka_add(2, u3qa_add(wid, fam_u->cur)); + pro = _cs_cue_next(&pil_u, har_p, cur, a, &wid); + } + + fam_u = u3a_peek(&pil_u); + } + // tail-frame: cons cell, recalculate [wid], and pop the stack + // + else { + pro = u3nc(fam_u->hed, pro); + u3h_put(har_p, fam_u->cur, u3k(pro)); + u3z(fam_u->cur); + wid = u3ka_add(2, u3ka_add(wid, fam_u->wid)); + fam_u = u3a_pop(&pil_u); + } + } while ( c3n == u3a_pile_done(&pil_u) ); + } + + u3z(wid); + u3h_free(har_p); + + return pro; +} + +/* +** stack frame for recording head vs tail iteration +** +** $? [u3_none bits=@] +** [hed=* bits=@] +*/ +typedef struct _cue_frame_s { + u3_weak ref; + c3_d bit_d; +} _cue_frame_t; + +/* _cs_cue_xeno_next(): read next value from bitstream, dictionary off-loom. +*/ +static inline ur_cue_res_e +_cs_cue_xeno_next(u3a_pile* pil_u, + ur_bsr_t* red_u, + ur_dict32_t* dic_u, + u3_noun* out) +{ + ur_root_t* rot_u = 0; + + while ( 1 ) { + c3_d len_d, bit_d = red_u->bits; + ur_cue_tag_e tag_e; + ur_cue_res_e res_e; + + if ( ur_cue_good != (res_e = ur_bsr_tag(red_u, &tag_e)) ) { + return res_e; + } + + switch ( tag_e ) { + default: u3_assert(0); + + case ur_jam_cell: { + _cue_frame_t* fam_u = u3a_push(pil_u); + + fam_u->ref = u3_none; + fam_u->bit_d = bit_d; + continue; + } + + case ur_jam_back: { + if ( ur_cue_good != (res_e = ur_bsr_rub_len(red_u, &len_d)) ) { + return res_e; + } + else if ( 62 < len_d ) { + return ur_cue_meme; + } + else { + c3_d bak_d = ur_bsr64_any(red_u, len_d); + c3_w bak_w; + + if ( !ur_dict32_get(rot_u, dic_u, bak_d, &bak_w) ) { + return ur_cue_back; + } + + *out = u3k((u3_noun)bak_w); + return ur_cue_good; + } + } + + case ur_jam_atom: { + if ( ur_cue_good != (res_e = ur_bsr_rub_len(red_u, &len_d)) ) { + return res_e; + } + + if ( 31 >= len_d ) { + *out = (u3_noun)ur_bsr32_any(red_u, len_d); + } + else { + c3_d byt_d = (len_d + 0x7) >> 3; + u3i_slab sab_u; + + if ( 0xffffffffULL < byt_d) { + return ur_cue_meme; + } + else { + u3i_slab_init(&sab_u, 3, byt_d); + ur_bsr_bytes_any(red_u, len_d, sab_u.buf_y); + *out = u3i_slab_mint_bytes(&sab_u); + } + } + + ur_dict32_put(rot_u, dic_u, bit_d, *out); + return ur_cue_good; + } + } + } +} + +struct _u3_cue_xeno { + ur_dict32_t dic_u; +}; + +/* _cs_cue_xeno(): cue on-loom, with off-loom dictionary in handle. +*/ +static u3_weak +_cs_cue_xeno(u3_cue_xeno* sil_u, + c3_d len_d, + const c3_y* byt_y) +{ + ur_bsr_t red_u = {0}; + ur_dict32_t* dic_u = &sil_u->dic_u; + u3a_pile pil_u; + _cue_frame_t* fam_u; + ur_cue_res_e res_e; + u3_noun ref; + + // initialize stack control + // + u3a_pile_prep(&pil_u, sizeof(*fam_u)); + + // init bitstream-reader + // + if ( ur_cue_good != (res_e = ur_bsr_init(&red_u, len_d, byt_y)) ) { + return c3n; + } + // bit-cursor (and backreferences) must fit in 62-bit direct atoms + // + else if ( 0x7ffffffffffffffULL < len_d ) { + return c3n; + } + + // advance into stream + // + res_e = _cs_cue_xeno_next(&pil_u, &red_u, dic_u, &ref); + + // process cell results + // + if ( (c3n == u3a_pile_done(&pil_u)) + && (ur_cue_good == res_e) ) + { + fam_u = u3a_peek(&pil_u); + + do { + // f is a head-frame; stash result and read the tail from the stream + // + if ( u3_none == fam_u->ref ) { + fam_u->ref = ref; + res_e = _cs_cue_xeno_next(&pil_u, &red_u, dic_u, &ref); + fam_u = u3a_peek(&pil_u); + } + // f is a tail-frame; pop the stack and continue + // + else { + ur_root_t* rot_u = 0; + + ref = u3nc(fam_u->ref, ref); + ur_dict32_put(rot_u, dic_u, fam_u->bit_d, ref); + fam_u = u3a_pop(&pil_u); + } + } + while ( (c3n == u3a_pile_done(&pil_u)) + && (ur_cue_good == res_e) ); + } + + if ( ur_cue_good == res_e ) { + return ref; + } + // on failure, unwind the stack and dispose of intermediate nouns + // + else if ( c3n == u3a_pile_done(&pil_u) ) { + do { + if ( u3_none != fam_u->ref ) { + u3z(fam_u->ref); + } + fam_u = u3a_pop(&pil_u); + } + while ( c3n == u3a_pile_done(&pil_u) ); + } + + return u3_none; +} + +/* u3s_cue_xeno_init_with(): initialize a cue_xeno handle as specified. +*/ +u3_cue_xeno* +u3s_cue_xeno_init_with(c3_d pre_d, c3_d siz_d) +{ + u3_cue_xeno* sil_u; + + sil_u = c3_calloc(sizeof(*sil_u)); + ur_dict32_grow((ur_root_t*)0, &sil_u->dic_u, pre_d, siz_d); + + return sil_u; +} + +/* u3s_cue_xeno_init(): initialize a cue_xeno handle. +*/ +u3_cue_xeno* +u3s_cue_xeno_init(void) +{ + return u3s_cue_xeno_init_with(ur_fib10, ur_fib11); +} + +/* u3s_cue_xeno_init(): cue on-loom, with off-loom dictionary in handle. +*/ +u3_weak +u3s_cue_xeno_with(u3_cue_xeno* sil_u, + c3_d len_d, + const c3_y* byt_y) +{ + u3_weak som; + + u3_assert( &(u3H->rod_u) == u3R ); + + som = _cs_cue_xeno(sil_u, len_d, byt_y); + ur_dict32_wipe(&sil_u->dic_u); + return som; +} + +/* u3s_cue_xeno_init(): dispose cue_xeno handle. +*/ +void +u3s_cue_xeno_done(u3_cue_xeno* sil_u) +{ + ur_dict_free((ur_dict_t*)&sil_u->dic_u); + c3_free(sil_u); +} + +/* u3s_cue_xeno(): cue on-loom, with off-loom dictionary. +*/ +u3_weak +u3s_cue_xeno(c3_d len_d, + const c3_y* byt_y) +{ + u3_cue_xeno* sil_u; + u3_weak som; + + u3_assert( &(u3H->rod_u) == u3R ); + + sil_u = u3s_cue_xeno_init(); + som = _cs_cue_xeno(sil_u, len_d, byt_y); + u3s_cue_xeno_done(sil_u); + return som; +} + +/* _cs_cue_need(): bail on ur_cue_* read failures. +*/ +static inline void +_cs_cue_need(ur_cue_res_e res_e) +{ + if ( ur_cue_good == res_e ) { + return; + } + else { + c3_m mot_m = (ur_cue_meme == res_e) ? c3__meme : c3__exit; + u3m_bail(mot_m); + } +} + +/* _cs_cue_get(): u3h_get wrapper handling allocation and refcounts. +*/ +static inline u3_weak +_cs_cue_get(u3p(u3h_root) har_p, c3_d key_d) +{ + u3_atom key = _cs_coin_chub(key_d); + u3_weak pro = u3h_get(har_p, key); + u3z(key); + return pro; +} + +/* _cs_cue_put(): u3h_put wrapper handling allocation and refcounts. +*/ +static inline u3_noun +_cs_cue_put(u3p(u3h_root) har_p, c3_d key_d, u3_noun val) +{ + u3_atom key = _cs_coin_chub(key_d); + u3h_put(har_p, key, u3k(val)); + u3z(key); + return val; +} + +/* _cs_cue_bytes_next(): read next value from bitstream. +*/ +static inline u3_noun +_cs_cue_bytes_next(u3a_pile* pil_u, + u3p(u3h_root) har_p, + ur_bsr_t* red_u) +{ + while ( 1 ) { + c3_d len_d, bit_d = red_u->bits; + ur_cue_tag_e tag_e; + + _cs_cue_need(ur_bsr_tag(red_u, &tag_e)); + + switch ( tag_e ) { + default: u3_assert(0); + + case ur_jam_cell: { + _cue_frame_t* fam_u = u3a_push(pil_u); + + fam_u->ref = u3_none; + fam_u->bit_d = bit_d; + continue; + } + + case ur_jam_back: { + _cs_cue_need(ur_bsr_rub_len(red_u, &len_d)); + + if ( 62 < len_d ) { + return u3m_bail(c3__meme); + } + else { + c3_d bak_d = ur_bsr64_any(red_u, len_d); + u3_weak bak = _cs_cue_get(har_p, bak_d); + return u3x_good(bak); + } + } + + case ur_jam_atom: { + u3_atom vat; + + _cs_cue_need(ur_bsr_rub_len(red_u, &len_d)); + + if ( 31 >= len_d ) { + vat = (u3_noun)ur_bsr32_any(red_u, len_d); + } + else { + u3i_slab sab_u; + u3i_slab_init(&sab_u, 0, len_d); + + ur_bsr_bytes_any(red_u, len_d, sab_u.buf_y); + vat = u3i_slab_mint_bytes(&sab_u); + } + + return _cs_cue_put(har_p, bit_d, vat); + } + } + } +} + +/* u3s_cue_bytes(): cue bytes onto the loom. +*/ +u3_noun +u3s_cue_bytes(c3_d len_d, const c3_y* byt_y) +{ + ur_bsr_t red_u = {0}; + u3a_pile pil_u; + _cue_frame_t* fam_u; + u3p(u3h_root) har_p; + u3_noun ref; + + // initialize stack control + // + u3a_pile_prep(&pil_u, sizeof(*fam_u)); + + // initialize a hash table for dereferencing backrefs + // + har_p = u3h_new(); + + // init bitstream-reader + // + _cs_cue_need(ur_bsr_init(&red_u, len_d, byt_y)); + + // bit-cursor (and backreferences) must fit in 62-bit direct atoms + // + if ( 0x7ffffffffffffffULL < len_d ) { + return u3m_bail(c3__meme); + } + + // advance into stream + // + ref = _cs_cue_bytes_next(&pil_u, har_p, &red_u); + + // process cell results + // + if ( c3n == u3a_pile_done(&pil_u) ) { + fam_u = u3a_peek(&pil_u); + + do { + // f is a head-frame; stash result and read the tail from the stream + // + if ( u3_none == fam_u->ref ) { + fam_u->ref = ref; + ref = _cs_cue_bytes_next(&pil_u, har_p, &red_u); + fam_u = u3a_peek(&pil_u); + } + // f is a tail-frame; pop the stack and continue + // + else { + ref = u3nc(fam_u->ref, ref); + _cs_cue_put(har_p, fam_u->bit_d, ref); + fam_u = u3a_pop(&pil_u); + } + } + while ( c3n == u3a_pile_done(&pil_u) ); + } + + u3h_free(har_p); + + return ref; +} + +/* u3s_cue_atom(): cue atom. +*/ +u3_noun +u3s_cue_atom(u3_atom a) +{ + c3_w len_w = u3r_met(3, a); + c3_y* byt_y; + + // XX assumes little-endian + // + if ( c3y == u3a_is_cat(a) ) { + byt_y = (c3_y*)&a; + } + else { + u3a_atom* vat_u = u3a_to_ptr(a); + byt_y = (c3_y*)vat_u->buf_w; + } + + return u3s_cue_bytes((c3_d)len_w, byt_y); +} + +/* _cs_etch_ud_size(): output length in @ud for given mpz_t. +*/ +static inline size_t +_cs_etch_ud_size(mpz_t a_mp) +{ + size_t len_i = mpz_sizeinbase(a_mp, 10); + return len_i + (len_i / 3); // separators +} + +/* _cs_etch_ud_bytes(): atom to @ud impl. +*/ +static size_t +_cs_etch_ud_bytes(mpz_t a_mp, size_t len_i, c3_y* hun_y) +{ + c3_y* buf_y = hun_y + (len_i - 1); + mpz_t b_mp; + c3_w b_w; + + mpz_init2(b_mp, 10); + + if ( !mpz_size(a_mp) ) { + *buf_y-- = '0'; + } + else { + while ( 1 ) { + b_w = mpz_tdiv_qr_ui(a_mp, b_mp, a_mp, 1000); + u3_assert( mpz_get_ui(b_mp) == b_w ); // XX + + if ( !mpz_size(a_mp) ) { + while ( b_w ) { + *buf_y-- = '0' + (b_w % 10); + b_w /= 10; + } + break; + } + + *buf_y-- = '0' + (b_w % 10); + b_w /= 10; + *buf_y-- = '0' + (b_w % 10); + b_w /= 10; + *buf_y-- = '0' + (b_w % 10); + *buf_y-- = '.'; + } + } + + buf_y++; + + u3_assert( buf_y >= hun_y ); // XX + + // mpz_sizeinbase may overestimate by 1 + // + { + size_t dif_i = buf_y - hun_y; + + if ( dif_i ) { + len_i -= dif_i; + memmove(hun_y, buf_y, len_i); + memset(hun_y + len_i, 0, dif_i); + } + } + + mpz_clear(b_mp); + + return len_i; +} + +/* u3s_etch_ud_smol(): c3_d to @ud +** +** =(26 (met 3 (scot %ud (dec (bex 64))))) +*/ +c3_y* +u3s_etch_ud_smol(c3_d a_d, c3_y hun_y[26]) +{ + c3_y* buf_y = hun_y + 25; + c3_w b_w; + + if ( !a_d ) { + *buf_y-- = '0'; + } + else { + while ( 1 ) { + b_w = a_d % 1000; + a_d /= 1000; + + if ( !a_d ) { + while ( b_w ) { + *buf_y-- = '0' + (b_w % 10); + b_w /= 10; + } + break; + } + + *buf_y-- = '0' + (b_w % 10); + b_w /= 10; + *buf_y-- = '0' + (b_w % 10); + b_w /= 10; + *buf_y-- = '0' + (b_w % 10); + *buf_y-- = '.'; + } + } + + return buf_y + 1; +} + +/* u3s_etch_ud(): atom to @ud. +*/ +u3_atom +u3s_etch_ud(u3_atom a) +{ + c3_d a_d; + + if ( c3y == u3r_safe_chub(a, &a_d) ) { + c3_y hun_y[26]; + c3_y* buf_y = u3s_etch_ud_smol(a_d, hun_y); + c3_w dif_w = (c3_p)buf_y - (c3_p)hun_y; + return u3i_bytes(26 - dif_w, buf_y); + } + + u3i_slab sab_u; + size_t len_i; + mpz_t a_mp; + u3r_mp(a_mp, a); + + len_i = _cs_etch_ud_size(a_mp); + u3i_slab_bare(&sab_u, 3, len_i); + sab_u.buf_w[sab_u.len_w - 1] = 0; + + _cs_etch_ud_bytes(a_mp, len_i, sab_u.buf_y); + + mpz_clear(a_mp); + return u3i_slab_mint_bytes(&sab_u); +} + +/* u3s_etch_ud_c(): atom to @ud, as a malloc'd c string. +*/ +size_t +u3s_etch_ud_c(u3_atom a, c3_c** out_c) +{ + c3_d a_d; + size_t len_i; + c3_y* buf_y; + + if ( c3y == u3r_safe_chub(a, &a_d) ) { + c3_y hun_y[26]; + + buf_y = u3s_etch_ud_smol(a_d, hun_y); + len_i = 26 - ((c3_p)buf_y - (c3_p)hun_y); + + *out_c = c3_malloc(len_i + 1); + (*out_c)[len_i] = 0; + memcpy(*out_c, buf_y, len_i); + + return len_i; + } + + mpz_t a_mp; + u3r_mp(a_mp, a); + + len_i = _cs_etch_ud_size(a_mp); + buf_y = c3_malloc(len_i + 1); + buf_y[len_i] = 0; + + len_i = _cs_etch_ud_bytes(a_mp, len_i, buf_y); + + mpz_clear(a_mp); + + *out_c = (c3_c*)buf_y; + return len_i; +} + +/* _cs_etch_ux_bytes(): atom to @ux impl. +*/ +static void +_cs_etch_ux_bytes(u3_atom a, c3_w len_w, c3_y* buf_y) +{ + c3_w i_w; + c3_s inp_s; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + inp_s = u3r_short(i_w, a); + + *buf_y-- = u3s_dit_y[(inp_s >> 0) & 0xf]; + *buf_y-- = u3s_dit_y[(inp_s >> 4) & 0xf]; + *buf_y-- = u3s_dit_y[(inp_s >> 8) & 0xf]; + *buf_y-- = u3s_dit_y[(inp_s >> 12) & 0xf]; + *buf_y-- = '.'; + } + + inp_s = u3r_short(len_w, a); + + while ( inp_s ) { + *buf_y-- = u3s_dit_y[inp_s & 0xf]; + inp_s >>= 4; + } + + *buf_y-- = 'x'; + *buf_y = '0'; +} + +/* u3s_etch_ux(): atom to @ux. +*/ +u3_atom +u3s_etch_ux(u3_atom a) +{ + if ( u3_blip == a ) { + return c3_s3('0', 'x', '0'); + } + + c3_w sep_w = u3r_met(4, a) - 1; // number of separators + c3_w las_w = u3r_met(2, u3r_short(sep_w, a)); // digits before separator + c3_w len_w = 2 + las_w + (sep_w * 5); // output bytes + u3i_slab sab_u; + u3i_slab_bare(&sab_u, 3, len_w); + sab_u.buf_w[sab_u.len_w - 1] = 0; + + _cs_etch_ux_bytes(a, sep_w, sab_u.buf_y + len_w - 1); + + return u3i_slab_moot_bytes(&sab_u); +} + +/* u3s_etch_ux_c(): atom to @ux, as a malloc'd c string. +*/ +size_t +u3s_etch_ux_c(u3_atom a, c3_c** out_c) +{ + if ( u3_blip == a ) { + *out_c = strdup("0x0"); + return 3; + } + + c3_y* buf_y; + c3_w sep_w = u3r_met(4, a) - 1; + c3_w las_w = u3r_met(2, u3r_short(sep_w, a)); + size_t len_i = 2 + las_w + (sep_w * 5); + + buf_y = c3_malloc(1 + len_i); + buf_y[len_i] = 0; + _cs_etch_ux_bytes(a, sep_w, buf_y + len_i - 1); + + *out_c = (c3_c*)buf_y; + return len_i; +} + +// uint div+ceil non-zero +// +#define _divc_nz(x, y) (((x) + ((y) - 1)) / (y)) + +/* _cs_etch_uv_size(): output length in @uv (and aligned bits). +*/ +static inline size_t +_cs_etch_uv_size(u3_atom a, c3_w* out_w) +{ + c3_w met_w = u3r_met(0, a); + c3_w sep_w = _divc_nz(met_w, 25) - 1; // number of separators + c3_w max_w = sep_w * 25; + c3_w end_w = 0; + u3r_chop(0, max_w, 25, 0, &end_w, a); + + c3_w bit_w = c3_bits_word(end_w); + c3_w las_w = _divc_nz(bit_w, 5); // digits before separator + + *out_w = max_w; + return 2 + las_w + (sep_w * 6); +} + + +/* _cs_etch_uv_bytes(): atom to @uv impl. +*/ +static void +_cs_etch_uv_bytes(u3_atom a, c3_w max_w, c3_y* buf_y) +{ + c3_w i_w; + c3_w inp_w; + + for ( i_w = 0; i_w < max_w; i_w += 25 ) { + inp_w = 0; + u3r_chop(0, i_w, 25, 0, &inp_w, a); + + *buf_y-- = u3s_dit_y[(inp_w >> 0) & 0x1f]; + *buf_y-- = u3s_dit_y[(inp_w >> 5) & 0x1f]; + *buf_y-- = u3s_dit_y[(inp_w >> 10) & 0x1f]; + *buf_y-- = u3s_dit_y[(inp_w >> 15) & 0x1f]; + *buf_y-- = u3s_dit_y[(inp_w >> 20) & 0x1f]; + *buf_y-- = '.'; + } + + inp_w = 0; + u3r_chop(0, max_w, 25, 0, &inp_w, a); + + while ( inp_w ) { + *buf_y-- = u3s_dit_y[inp_w & 0x1f]; + inp_w >>= 5; + } + + *buf_y-- = 'v'; + *buf_y = '0'; +} + +/* u3s_etch_uv(): atom to @uv. +*/ +u3_atom +u3s_etch_uv(u3_atom a) +{ + if ( u3_blip == a ) { + return c3_s3('0', 'v', '0'); + } + + u3i_slab sab_u; + c3_w max_w; + size_t len_i = _cs_etch_uv_size(a, &max_w); + + u3i_slab_bare(&sab_u, 3, len_i); + sab_u.buf_w[sab_u.len_w - 1] = 0; + + _cs_etch_uv_bytes(a, max_w, sab_u.buf_y + len_i - 1); + + return u3i_slab_moot_bytes(&sab_u); +} + +/* u3s_etch_uv_c(): atom to @uv, as a malloc'd c string. +*/ +size_t +u3s_etch_uv_c(u3_atom a, c3_c** out_c) +{ + if ( u3_blip == a ) { + *out_c = strdup("0v0"); + return 3; + } + + c3_y* buf_y; + c3_w max_w; + size_t len_i = _cs_etch_uv_size(a, &max_w); + + buf_y = c3_malloc(1 + len_i); + buf_y[len_i] = 0; + _cs_etch_uv_bytes(a, max_w, buf_y + len_i - 1); + + *out_c = (c3_c*)buf_y; + return len_i; +} + +/* _cs_etch_uw_size(): output length in @uw (and aligned bits). +*/ +static inline size_t +_cs_etch_uw_size(u3_atom a, c3_w* out_w) +{ + c3_w met_w = u3r_met(0, a); + c3_w sep_w = _divc_nz(met_w, 30) - 1; // number of separators + c3_w max_w = sep_w * 30; + c3_w end_w = 0; + u3r_chop(0, max_w, 30, 0, &end_w, a); + + c3_w bit_w = c3_bits_word(end_w); + c3_w las_w = _divc_nz(bit_w, 6); // digits before separator + + *out_w = max_w; + return 2 + las_w + (sep_w * 6); +} + +/* _cs_etch_uw_bytes(): atom to @uw impl. +*/ +static void +_cs_etch_uw_bytes(u3_atom a, c3_w max_w, c3_y* buf_y) +{ + c3_w i_w; + c3_w inp_w; + + for ( i_w = 0; i_w < max_w; i_w += 30 ) { + inp_w = 0; + u3r_chop(0, i_w, 30, 0, &inp_w, a); + + *buf_y-- = u3s_dit_y[(inp_w >> 0) & 0x3f]; + *buf_y-- = u3s_dit_y[(inp_w >> 6) & 0x3f]; + *buf_y-- = u3s_dit_y[(inp_w >> 12) & 0x3f]; + *buf_y-- = u3s_dit_y[(inp_w >> 18) & 0x3f]; + *buf_y-- = u3s_dit_y[(inp_w >> 24) & 0x3f]; + *buf_y-- = '.'; + } + + inp_w = 0; + u3r_chop(0, max_w, 30, 0, &inp_w, a); + + while ( inp_w ) { + *buf_y-- = u3s_dit_y[inp_w & 0x3f]; + inp_w >>= 6; + } + + *buf_y-- = 'w'; + *buf_y = '0'; +} + +/* u3s_etch_uw(): atom to @uw. +*/ +u3_atom +u3s_etch_uw(u3_atom a) +{ + if ( u3_blip == a ) { + return c3_s3('0', 'w', '0'); + } + + u3i_slab sab_u; + c3_w max_w; + size_t len_i = _cs_etch_uw_size(a, &max_w); + + u3i_slab_bare(&sab_u, 3, len_i); + sab_u.buf_w[sab_u.len_w - 1] = 0; + + _cs_etch_uw_bytes(a, max_w, sab_u.buf_y + len_i - 1); + + return u3i_slab_moot_bytes(&sab_u); +} + +/* u3s_etch_uw_c(): atom to @uw, as a malloc'd c string. +*/ +size_t +u3s_etch_uw_c(u3_atom a, c3_c** out_c) +{ + if ( u3_blip == a ) { + *out_c = strdup("0w0"); + return 3; + } + + c3_y* buf_y; + c3_w max_w; + size_t len_i = _cs_etch_uw_size(a, &max_w); + + buf_y = c3_malloc(1 + len_i); + buf_y[len_i] = 0; + _cs_etch_uw_bytes(a, max_w, buf_y + len_i - 1); + + *out_c = (c3_c*)buf_y; + return len_i; +} + +#undef _divc_nz + +#define DIGIT(a) ( ((a) >= '0') && ((a) <= '9') ) +#define BLOCK(a) ( ('.' == (a)[0]) \ + && DIGIT(a[1]) \ + && DIGIT(a[2]) \ + && DIGIT(a[3]) ) + +/* u3s_sift_ud_bytes: parse @ud +*/ +u3_weak +u3s_sift_ud_bytes(c3_w len_w, c3_y* byt_y) +{ + c3_y num_y = len_w % 4; // leading digits length + c3_s val_s = 0; // leading digits value + + // +ape:ag: just 0 + // + if ( !len_w ) return u3_none; + if ( '0' == *byt_y ) return ( 1 == len_w ) ? (u3_noun)0 : u3_none; + + // +ted:ab: leading nonzero (checked above), plus up to 2 digits + // +#define NEXT() do { \ + if ( !DIGIT(*byt_y) ) return u3_none; \ + val_s *= 10; \ + val_s += *byt_y++ - '0'; \ + } while (0) + + switch ( num_y ) { + case 3: NEXT(); + case 2: NEXT(); + case 1: NEXT(); break; + case 0: return u3_none; + } + +#undef NEXT + + len_w -= num_y; + + // +tid:ab: dot-prefixed 3-digit blocks + // + // avoid gmp allocation if possible + // - 19 decimal digits fit in 64 bits + // - 18 digits is 24 bytes with separators + // + if ( ((1 == num_y) && (24 >= len_w)) + || (20 >= len_w) ) + { + c3_d val_d = val_s; + + while ( len_w ) { + if ( !BLOCK(byt_y) ) return u3_none; + + byt_y++; + + val_d *= 10; + val_d += *byt_y++ - '0'; + val_d *= 10; + val_d += *byt_y++ - '0'; + val_d *= 10; + val_d += *byt_y++ - '0'; + + len_w -= 4; + } + + return u3i_chub(val_d); + } + + { + // avoid gmp realloc if possible + // + mpz_t a_mp; + { + c3_d bit_d = (c3_d)(len_w / 4) * 10; + mpz_init2(a_mp, (c3_w)c3_min(bit_d, UINT32_MAX)); + mpz_set_ui(a_mp, val_s); + } + + while ( len_w ) { + if ( !BLOCK(byt_y) ) { + mpz_clear(a_mp); + return u3_none; + } + + byt_y++; + + val_s = *byt_y++ - '0'; + val_s *= 10; + val_s += *byt_y++ - '0'; + val_s *= 10; + val_s += *byt_y++ - '0'; + + mpz_mul_ui(a_mp, a_mp, 1000); + mpz_add_ui(a_mp, a_mp, val_s); + + len_w -= 4; + } + + return u3i_mp(a_mp); + } +} + +#undef BLOCK +#undef DIGIT + +/* u3s_sift_ud: parse @ud. +*/ +u3_weak +u3s_sift_ud(u3_atom a) +{ + c3_w len_w = u3r_met(3, a); + c3_y* byt_y; + + // XX assumes little-endian + // + if ( c3y == u3a_is_cat(a) ) { + byt_y = (c3_y*)&a; + } + else { + u3a_atom* vat_u = u3a_to_ptr(a); + byt_y = (c3_y*)vat_u->buf_w; + } + + return u3s_sift_ud_bytes(len_w, byt_y); +} diff --git a/vere/pkg/noun/serial.h b/vere/pkg/noun/serial.h new file mode 100644 index 0000000..d7dd5a8 --- /dev/null +++ b/vere/pkg/noun/serial.h @@ -0,0 +1,137 @@ +/// @file + +#ifndef U3_SERIAL_H +#define U3_SERIAL_H + +#include "c3/c3.h" +#include "imprison.h" +#include "types.h" + /* constants + */ + /* u3_dit_y: digit table for @ux/@uv/@uw. + */ + extern const c3_y u3s_dit_y[64]; + + /* opaque handles + */ + /* u3_cue_xeno: handle for cue-ing with an off-loom dictionary. + */ + typedef struct _u3_cue_xeno u3_cue_xeno; + + /* Noun serialization. All noun arguments RETAINED. + */ + + /* u3s_jam_fib(): jam without atom allocation. + ** + ** returns atom-suitable words, and *bit_w will have + ** the length (in bits). return should be freed with u3a_wfree(). + */ + c3_w + u3s_jam_fib(u3i_slab* sab_u, u3_noun a); + + /* u3s_jam_xeno(): jam with off-loom buffer (re-)allocation. + */ + c3_d + u3s_jam_xeno(u3_noun a, c3_d* len_d, c3_y** byt_y); + + /* u3s_cue(): cue [a] + */ + u3_noun + u3s_cue(u3_atom a); + + /* u3s_cue_xeno_init_with(): initialize a cue_xeno handle as specified. + */ + u3_cue_xeno* + u3s_cue_xeno_init_with(c3_d pre_d, c3_d siz_d); + + /* u3s_cue_xeno_init(): initialize a cue_xeno handle. + */ + u3_cue_xeno* + u3s_cue_xeno_init(void); + + /* u3s_cue_xeno_init(): cue on-loom, with off-loom dictionary in handle. + */ + u3_weak + u3s_cue_xeno_with(u3_cue_xeno* sil_u, + c3_d len_d, + const c3_y* byt_y); + + /* u3s_cue_xeno_init(): dispose cue_xeno handle. + */ + void + u3s_cue_xeno_done(u3_cue_xeno* sil_u); + + /* u3s_cue_xeno(): cue on-loom, with off-loom dictionary. + */ + u3_weak + u3s_cue_xeno(c3_d len_d, + const c3_y* byt_y); + + /* u3s_cue_bytes(): cue bytes onto the loom. + */ + u3_noun + u3s_cue_bytes(c3_d len_d, const c3_y* byt_y); + + /* u3s_cue_atom(): cue atom. + */ + u3_noun + u3s_cue_atom(u3_atom a); + + /* u3s_etch_ud_smol(): c3_d to @ud + ** + ** =(26 (met 3 (scot %ud (dec (bex 64))))) + */ + c3_y* + u3s_etch_ud_smol(c3_d a_d, c3_y hun_y[26]); + + /* u3s_etch_ud(): atom to @ud. + */ + u3_atom + u3s_etch_ud(u3_atom a); + + /* u3s_etch_ud_c(): atom to @ud, as a malloc'd c string. + */ + size_t + u3s_etch_ud_c(u3_atom a, c3_c** out_c); + + /* u3s_etch_ux(): atom to @ux. + */ + u3_atom + u3s_etch_ux(u3_atom a); + + /* u3s_etch_ux_c(): atom to @ux, as a malloc'd c string. + */ + size_t + u3s_etch_ux_c(u3_atom a, c3_c** out_c); + + /* u3s_etch_uv(): atom to @uv. + */ + u3_atom + u3s_etch_uv(u3_atom a); + + /* u3s_etch_uv_c(): atom to @uv, as a malloc'd c string. + */ + size_t + u3s_etch_uv_c(u3_atom a, c3_c** out_c); + + /* u3s_etch_uw(): atom to @uw. + */ + u3_atom + u3s_etch_uw(u3_atom a); + + /* u3s_etch_uw_c(): atom to @uw, as a malloc'd c string. + */ + size_t + u3s_etch_uw_c(u3_atom a, c3_c** out_c); + + /* u3s_sift_ud_bytes: parse @ud. + */ + u3_weak + u3s_sift_ud_bytes(c3_w len_w, c3_y* byt_y); + + /* u3s_sift_ud: parse @ud. + */ + u3_weak + u3s_sift_ud(u3_atom a); + +#endif /* ifndef U3_SERIAL_H */ diff --git a/vere/pkg/noun/serial_tests.c b/vere/pkg/noun/serial_tests.c new file mode 100644 index 0000000..5f1caf7 --- /dev/null +++ b/vere/pkg/noun/serial_tests.c @@ -0,0 +1,264 @@ +/// @file + +#include "noun.h" + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + u3m_boot_lite(1 << 24); +} + +static void +_byte_print(c3_d out_d, + c3_y* out_y, + c3_w len_w, + const c3_y* byt_y) +{ + c3_d i_d; + + fprintf(stderr, " actual: { "); + for ( i_d = 0; i_d < out_d; i_d++ ) { + fprintf(stderr, "0x%x, ", out_y[i_d]); + } + fprintf(stderr, "}\r\n"); + fprintf(stderr, " expect: { "); + for ( i_d = 0; i_d < len_w; i_d++ ) { + fprintf(stderr, "0x%x, ", byt_y[i_d]); + } + fprintf(stderr, "}\r\n"); +} + +static c3_i +_test_jam_spec(const c3_c* cap_c, + u3_noun ref, + c3_w len_w, + const c3_y* byt_y) +{ + c3_i ret_i = 1; + c3_d out_d; + c3_y* out_y; + + { + u3s_jam_xeno(ref, &out_d, &out_y); + + if ( 0 != memcmp(out_y, byt_y, len_w) ) { + fprintf(stderr, "\033[31mjam xeno %s fail\033[0m\r\n", cap_c); + _byte_print(out_d, out_y, len_w, byt_y); + ret_i = 0; + } + + free(out_y); + } + + { + u3i_slab sab_u; + c3_w bit_w = u3s_jam_fib(&sab_u, ref); + + out_d = ((c3_d)bit_w + 0x7) >> 3; + // XX assumes little-endian + // + out_y = sab_u.buf_y; + + if ( 0 != memcmp(out_y, byt_y, len_w) ) { + fprintf(stderr, "\033[31mjam fib %s fail\033[0m\r\n", cap_c); + _byte_print(out_d, out_y, len_w, byt_y); + ret_i = 0; + } + + u3i_slab_free(&sab_u); + } + + return ret_i; +} + +static c3_i +_test_cue_spec(const c3_c* cap_c, + u3_noun ref, + c3_w len_w, + const c3_y* byt_y) +{ + c3_i ret_i = 1; + + { + u3_noun pro = u3m_soft(0, u3s_cue_atom, u3i_bytes(len_w, byt_y)); + u3_noun tag, out; + + u3x_cell(pro, &tag, &out); + + if ( u3_blip != tag ) { + fprintf(stderr, "\033[31mcue %s fail 1\033[0m\r\n", cap_c); + ret_i = 0; + } + else if ( c3n == u3r_sing(ref, out) ) { + fprintf(stderr, "\033[31mcue %s fail 2\033[0m\r\n", cap_c); + u3m_p("ref", ref); + u3m_p("out", out); + ret_i = 0; + } + + u3z(pro); + } + + { + u3_noun out; + + if ( u3_none == (out = u3s_cue_xeno(len_w, byt_y)) ) { + fprintf(stderr, "\033[31mcue %s fail 3\033[0m\r\n", cap_c); + ret_i = 0; + } + else if ( c3n == u3r_sing(ref, out) ) { + fprintf(stderr, "\033[31mcue %s fail 4\033[0m\r\n", cap_c); + u3m_p("ref", ref); + u3m_p("out", out); + ret_i = 0; + } + + u3z(out); + } + + return ret_i; +} + +static c3_i +_test_jam_roundtrip(void) +{ + c3_i ret_i = 1; + +# define TEST_CASE(a, b) \ + const c3_c* cap_c = a; \ + u3_noun ref = b; \ + ret_i &= _test_jam_spec(cap_c, ref, sizeof(res_y), res_y); \ + ret_i &= _test_cue_spec(cap_c, ref, sizeof(res_y), res_y); \ + u3z(ref); + + { + c3_y res_y[1] = { 0x2 }; + TEST_CASE("0", 0); + } + + { + c3_y res_y[1] = { 0xc }; + TEST_CASE("1", 1); + } + + { + c3_y res_y[1] = { 0x48 }; + TEST_CASE("2", 2); + } + + { + c3_y res_y[6] = { 0xc0, 0x37, 0xb, 0x9b, 0xa3, 0x3 }; + TEST_CASE("%fast", c3__fast); + } + + { + c3_y res_y[6] = { 0xc0, 0x37, 0xab, 0x63, 0x63, 0x3 }; + TEST_CASE("%full", c3__full); + } + + { + c3_y res_y[1] = { 0x29 }; + TEST_CASE("[0 0]", u3nc(0, 0)); + } + + { + c3_y res_y[2] = { 0x31, 0x3 }; + TEST_CASE("[1 1]", u3nc(1, 1)); + } + + { + c3_y res_y[2] = { 0x31, 0x12 }; + TEST_CASE("[1 2]", u3nc(1, 2)); + } + + { + c3_y res_y[2] = { 0x21, 0xd1 }; + TEST_CASE("[2 3]", u3nc(2, 3)); + } + + { + c3_y res_y[11] = { 0x1, 0xdf, 0x2c, 0x6c, 0x8e, 0xe, 0x7c, 0xb3, 0x3a, 0x36, 0x36 }; + TEST_CASE("[%fast %full]", u3nc(c3__fast, c3__full)); + } + + { + c3_y res_y[2] = { 0x71, 0xcc }; + TEST_CASE("[1 1 1]", u3nc(1, u3nc(1, 1))); + } + + { + c3_y res_y[3] = { 0x71, 0x48, 0x34 }; + TEST_CASE("[1 2 3]", u3nt(1, 2, 3)); + } + + { + c3_y res_y[12] = { 0x1, 0xdf, 0x2c, 0x6c, 0x8e, 0x1e, 0xf0, 0xcd, 0xea, 0xd8, 0xd8, 0x93 }; + TEST_CASE("[%fast %full %fast]", u3nc(c3__fast, u3nc(c3__full, c3__fast))); + } + + { + c3_y res_y[3] = { 0xc5, 0x48, 0x34 }; + TEST_CASE("[[1 2] 3]", u3nc(u3nc(1, 2), 3)); + } + + { + c3_y res_y[5] = { 0xc5, 0xc8, 0x26, 0x27, 0x1 }; + TEST_CASE("[[1 2] [1 2] 1 2]", u3nt(u3nc(1, 2), u3nc(1, 2), u3nc(1, 2))); + } + + { + c3_y res_y[6] = { 0xa5, 0x35, 0x19, 0xf3, 0x18, 0x5 }; + TEST_CASE("[[0 0] [[0 0] 1 1] 1 1]", u3nc(u3nc(0, 0), u3nc(u3nc(u3nc(0, 0), u3nc(1, 1)), u3nc(1, 1)))); + } + + { + c3_y res_y[14] = { 0x15, 0x17, 0xb2, 0xd0, 0x85, 0x59, 0xb8, 0x61, 0x87, 0x5f, 0x10, 0x54, 0x55, 0x5 }; + TEST_CASE("deep", u3nc(u3nc(u3nc(1, u3nc(u3nc(2, u3nc(u3nc(3, u3nc(u3nc(4, u3nc(u3nt(5, 6, u3nc(7, u3nc(u3nc(8, 0), 0))), 0)), 0)), 0)), 0)), 0), 0)); + } + + { + c3_y inp_y[33] = { 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, 1 }; + c3_y res_y[35] = { 0, 12, 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, 8 }; + TEST_CASE("wide", u3i_bytes(sizeof(inp_y), inp_y)); + } + + { + c3_y inp_y[16] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0xa8, 0xab, 0x60, 0xef, 0x2d, 0xd, 0x0, 0x0, 0x80 }; + c3_y res_y[19] = { 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x50, 0x57, 0xc1, 0xde, 0x5b, 0x1a, 0x0, 0x0, 0x0, 0x1 }; + TEST_CASE("date", u3i_bytes(sizeof(inp_y), inp_y)); + } + + { + u3_noun a = u3i_string("abcdefjhijklmnopqrstuvwxyz"); + c3_y res_y[32] = { + 0x1, 0xf8, 0xc, 0x13, 0x1b, 0x23, 0x2b, 0x33, 0x53, 0x43, 0x4b, + 0x53, 0x5b, 0x63, 0x6b, 0x73, 0x7b, 0x83, 0x8b, 0x93, 0x9b, 0xa3, + 0xab, 0xb3, 0xbb, 0xc3, 0xcb, 0xd3, 0x87, 0xc, 0x3d, 0x9 + }; + TEST_CASE("alpha", u3nq(u3k(a), 2, 3, a)); + } + + return ret_i; +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + if ( !_test_jam_roundtrip() ) { + fprintf(stderr, "test jam: failed\r\n"); + exit(1); + } + + // GC + // + u3m_grab(u3_none); + + fprintf(stderr, "test jam: ok\r\n"); + return 0; +} diff --git a/vere/pkg/noun/ship.c b/vere/pkg/noun/ship.c new file mode 100644 index 0000000..6aebff7 --- /dev/null +++ b/vere/pkg/noun/ship.c @@ -0,0 +1,109 @@ +#include "c3/c3.h" +#include "types.h" +#include "imprison.h" +#include "retrieve.h" +#include "vortex.h" +#include "ship.h" + +static inline void +_s_chub_to_bytes(c3_y byt_y[8], c3_d num_d) +{ + byt_y[0] = num_d & 0xff; + byt_y[1] = (num_d >> 8) & 0xff; + byt_y[2] = (num_d >> 16) & 0xff; + byt_y[3] = (num_d >> 24) & 0xff; + byt_y[4] = (num_d >> 32) & 0xff; + byt_y[5] = (num_d >> 40) & 0xff; + byt_y[6] = (num_d >> 48) & 0xff; + byt_y[7] = (num_d >> 56) & 0xff; +} + +static inline c3_d +_s_bytes_to_chub(c3_y byt_y[8]) +{ + return (c3_d)byt_y[0] + | (c3_d)byt_y[1] << 8 + | (c3_d)byt_y[2] << 16 + | (c3_d)byt_y[3] << 24 + | (c3_d)byt_y[4] << 32 + | (c3_d)byt_y[5] << 40 + | (c3_d)byt_y[6] << 48 + | (c3_d)byt_y[7] << 56; +} + +void +u3_ship_to_bytes(u3_ship who_u, c3_y len_y, c3_y* buf_y) +{ + c3_y sip_y[16] = {0}; + + _s_chub_to_bytes(sip_y, who_u[0]); + _s_chub_to_bytes(sip_y + 8, who_u[1]); + + memcpy(buf_y, sip_y, c3_min(16, len_y)); +} + +void +u3_ship_of_bytes(u3_ship who_u, c3_y len_y, c3_y* buf_y) +{ + c3_y sip_y[16] = {0}; + memcpy(sip_y, buf_y, c3_min(16, len_y)); + + who_u[0] = _s_bytes_to_chub(sip_y); + who_u[1] = _s_bytes_to_chub(sip_y + 8); +} + +u3_atom +u3_ship_to_noun(u3_ship who_u) +{ + return u3i_chubs(2, who_u); +} + +c3_c* +u3_ship_to_string(u3_ship who_u) +{ + u3_noun ser = u3dc("scot", c3__p, u3_ship_to_noun(who_u)); + c3_c* who_c = u3r_string(ser); + u3z(ser); + return who_c; +} + +void +u3_ship_of_noun(u3_ship who_u, u3_noun who) +{ + u3r_chubs(0, 2, who_u, who); +} + +c3_o +u3_ships_equal(u3_ship sip_u, u3_ship sap_u) +{ + return __((sip_u[0] == sap_u[0]) && (sip_u[1] == sap_u[1])); +} + +void +u3_ship_copy(u3_ship des_u, u3_ship src_u) +{ + des_u[0] = src_u[0]; + des_u[1] = src_u[1]; +} + +c3_l +u3_ship_rank(u3_ship who_u) +{ + if ( who_u[1] ) return c3__pawn; + else if ( who_u[0] >> 32 ) return c3__earl; + else if ( who_u[0] >> 16 ) return c3__duke; + else if ( who_u[0] >> 8 ) return c3__king; + else return c3__czar; +} + +c3_y +u3_ship_czar(u3_ship who_u) { return who_u[0] & 0xFF; } + +c3_s +u3_ship_king(u3_ship who_u) { return who_u[0] & 0xffff; } + +c3_w +u3_ship_duke(u3_ship who_u) { return who_u[0] & 0xffffffff; } + +c3_d +u3_ship_earl(u3_ship who_u) { return who_u[0]; } diff --git a/vere/pkg/noun/ship.h b/vere/pkg/noun/ship.h new file mode 100644 index 0000000..8104c42 --- /dev/null +++ b/vere/pkg/noun/ship.h @@ -0,0 +1,57 @@ +#ifndef U3_SHIP_H +#define U3_SHIP_H + +#include "c3/c3.h" +#include "types.h" + +typedef c3_d u3_ship[2]; + +void +u3_ship_to_bytes(c3_d sip_d[2], c3_y len_y, c3_y* buf_y); + +void +u3_ship_of_bytes(u3_ship who_u, c3_y len_y, c3_y* buf_y); + +u3_atom +u3_ship_to_noun(u3_ship who_u); + +void +u3_ship_of_noun(u3_ship who_u, u3_noun who); + +c3_c* +u3_ship_to_string(u3_ship who_u); + +c3_o +u3_ships_equal(u3_ship sip_u, u3_ship sap_u); + +c3_l +u3_ship_rank(u3_ship who_u); + +void +u3_ship_copy(u3_ship des_u, u3_ship src_u); + +/** +* Returns a ship's galaxy byte prefix. +*/ +c3_y +u3_ship_czar(u3_ship who_u); + +/** +* Returns a ship's star prefix. +*/ +c3_s +u3_ship_king(u3_ship who_u); + +/** +* Returns a ship's planet prefix. +*/ +c3_w +u3_ship_duke(u3_ship who_u); + +/** +* Returns a ship's moon prefix. +*/ +c3_d +u3_ship_earl(u3_ship who_u); + +#endif /* ifndef U3_SHIP_H */ diff --git a/vere/pkg/noun/trace.c b/vere/pkg/noun/trace.c new file mode 100644 index 0000000..8ddbf2e --- /dev/null +++ b/vere/pkg/noun/trace.c @@ -0,0 +1,1242 @@ +/// @file + +#include "trace.h" + +#include +#include +#include +#include +#include + +#include "allocate.h" +#include "imprison.h" +#include "jets/k.h" +#include "log.h" +#include "manage.h" +#include "options.h" +#include "retrieve.h" +#include "vortex.h" + +/** Global variables. +**/ +u3t_spin *stk_u; +u3t_trace u3t_Trace; + +static c3_o _ct_lop_o; + +/// Nock PID. +static c3_ws _nock_pid_i = 0; + +/// JSON trace file. +static FILE* _file_u = NULL; + +/// Trace counter. Tracks the number of entries written to the JSON trace file. +static c3_w _trace_cnt_w = 0; + +/// File counter. Tracks the number of times u3t_trace_close() has been called. +static c3_w _file_cnt_w = 0; + +/* u3t_push(): push on trace stack. +*/ +void +u3t_push(u3_noun mon) +{ + u3R->bug.tax = u3nc(mon, u3R->bug.tax); +} + +/* u3t_mean(): push `[%mean roc]` on trace stack. +*/ +void +u3t_mean(u3_noun roc) +{ + u3R->bug.tax = u3nc(u3nc(c3__mean, roc), u3R->bug.tax); +} + +/* u3t_drop(): drop from meaning stack. +*/ +void +u3t_drop(void) +{ + u3_assert(_(u3du(u3R->bug.tax))); + { + u3_noun tax = u3R->bug.tax; + + u3R->bug.tax = u3k(u3t(tax)); + u3z(tax); + } +} + +/* u3t_slog(): print directly. +*/ +void +u3t_slog(u3_noun hod) +{ + if ( 0 != u3C.slog_f ) { + u3C.slog_f(hod); + } + else { + u3z(hod); + } +} + +/* u3t_heck(): profile point. +*/ +void +u3t_heck(u3_atom cog) +{ +#if 0 + u3R->pro.cel_d++; +#else + c3_w len_w = u3r_met(3, cog); + c3_c* str_c = alloca(1 + len_w); + + u3r_bytes(0, len_w, (c3_y *)str_c, cog); + str_c[len_w] = 0; + + // Profile sampling, because it allocates on the home road, + // only works on when we're not at home. + // + if ( &(u3H->rod_u) != u3R ) { + u3a_road* rod_u; + + rod_u = u3R; + u3R = &(u3H->rod_u); + { + if ( 0 == u3R->pro.day ) { + u3R->pro.day = u3do("doss", 0); + } + u3R->pro.day = u3dc("pi-heck", u3i_string(str_c), u3R->pro.day); + } + u3R = rod_u; + } +#endif +} + +#if 0 +static void +_ct_sane(u3_noun lab) +{ + if ( u3_nul != lab ) { + u3_assert(c3y == u3du(lab)); + u3_assert(c3y == u3ud(u3h(lab))); + _ct_sane(u3t(lab)); + } +} +#endif + +#if 1 +/* _t_samp_process(): process raw sample data from live road. +*/ +static u3_noun +_t_samp_process(u3_road* rod_u) +{ + u3_noun pef = u3_nul; // (list (pair path (map path ,@ud))) + u3_noun muf = u3_nul; // (map path ,@ud) + c3_w len_w = 0; + + // Accumulate a label/map stack which collapses recursive segments. + // + while ( rod_u ) { + u3_noun don = rod_u->pro.don; + + while ( u3_nul != don ) { + // Get surface allocated label + // + // u3_noun lab = u3nc(u3i_string("foobar"), 0); + u3_noun laj = u3h(don), + lab = u3a_take(laj); + u3a_wash(laj); + + // Add the label to the traced label stack, trimming recursion. + // + { + u3_noun old; + + if ( u3_none == (old = u3kdb_get(u3k(muf), u3k(lab))) ) { + muf = u3kdb_put(muf, u3k(lab), len_w); + pef = u3nc(u3nc(lab, u3k(muf)), pef); + len_w += 1; + } + else { + if ( !_(u3a_is_cat(old)) ) { + u3m_bail(c3__fail); + } + + u3z(muf); + while ( len_w > (old + 1) ) { + u3_noun t_pef = u3k(u3t(pef)); + + len_w -= 1; + u3z(pef); + pef = t_pef; + } + muf = u3k(u3t(u3h(pef))); + u3z(lab); + } + } + don = u3t(don); + } + rod_u = u3tn(u3_road, rod_u->par_p); + } + u3z(muf); + + // Lose the maps and save a pure label stack in original order. + // + { + u3_noun pal = u3_nul; + + while ( u3_nul != pef ) { + u3_noun h_pef = u3h(pef); + u3_noun t_pef = u3k(u3t(pef)); + + pal = u3nc(u3k(u3h(h_pef)), pal); + + u3z(pef); + pef = t_pef; + } + + // u3l_log("sample: stack length %d", u3kb_lent(u3k(pal))); + return pal; + } +} +#endif + +/* u3t_samp(): sample. +*/ +void +u3t_samp(void) +{ + if ( c3y == _ct_lop_o ) { + // _ct_lop_o here is a mutex for modifying pro.don. we + // do not want to sample in the middle of doing that, as + // it can cause memory errors. + return; + } + + c3_w old_wag = u3C.wag_w; + u3C.wag_w &= ~u3o_debug_cpu; + u3C.wag_w &= ~u3o_trace; + + // Profile sampling, because it allocates on the home road, + // only works on when we're not at home. + // + if ( &(u3H->rod_u) != u3R ) { + c3_l mot_l; + u3a_road* rod_u; + + if ( _(u3T.mal_o) ) { + mot_l = c3_s3('m','a','l'); + } + else if ( _(u3T.coy_o) ) { + mot_l = c3_s3('c','o','y'); + } + else if ( _(u3T.euq_o) ) { + mot_l = c3_s3('e','u','q'); + } + else if ( _(u3T.far_o) ) { + mot_l = c3_s3('f','a','r'); + } + else if ( _(u3T.noc_o) ) { + u3_assert(!_(u3T.glu_o)); + mot_l = c3_s3('n','o','c'); + } + else if ( _(u3T.glu_o) ) { + mot_l = c3_s3('g','l','u'); + } + else { + mot_l = c3_s3('f','u','n'); + } + + rod_u = u3R; + u3R = &(u3H->rod_u); + { + u3_noun lab = _t_samp_process(rod_u); + + u3_assert(u3R == &u3H->rod_u); + if ( 0 == u3R->pro.day ) { + /* bunt a +doss + */ + u3R->pro.day = u3nt(u3nq(0, 0, 0, u3nq(0, 0, 0, 0)), 0, 0); + } + u3R->pro.day = u3dt("pi-noon", mot_l, lab, u3R->pro.day); + } + u3R = rod_u; + } + u3C.wag_w = old_wag; +} + +/* u3t_come(): push on profile stack; return yes if active push. RETAIN. +*/ +c3_o +u3t_come(u3_noun lab) +{ + if ( (u3_nul == u3R->pro.don) || !_(u3r_sing(lab, u3h(u3R->pro.don))) ) { + u3a_gain(lab); + _ct_lop_o = c3y; + u3R->pro.don = u3nc(lab, u3R->pro.don); + _ct_lop_o = c3n; + return c3y; + } + else return c3n; +} + +/* u3t_flee(): pop off profile stack. +*/ +void +u3t_flee(void) +{ + _ct_lop_o = c3y; + u3_noun don = u3R->pro.don; + u3R->pro.don = u3k(u3t(don)); + _ct_lop_o = c3n; + u3z(don); +} + +/* u3t_trace_open(): opens a trace file and writes the preamble. +*/ +void +u3t_trace_open(const c3_c* dir_c) +{ + c3_c fil_c[2048]; + + if ( !dir_c ) { + return; + } + + snprintf(fil_c, 2048, "%s/.urb/put/trace", dir_c); + + struct stat st; + if ( (-1 == stat(fil_c, &st)) + && (-1 == c3_mkdir(fil_c, 0700)) ) + { + fprintf(stderr, "mkdir: %s failed: %s\r\n", fil_c, strerror(errno)); + return; + } + + c3_c lif_c[2056]; + snprintf(lif_c, 2056, "%s/%d.json", fil_c, _file_cnt_w); + + _file_u = c3_fopen(lif_c, "w"); + _nock_pid_i = (int)getpid(); + + if ( !_file_u ) { + fprintf(stderr, "trace open: %s\r\n", strerror(errno)); + return; + } + + fprintf(_file_u, "[ "); + + // We have two "threads", the event processing and the nock stuff. + // tid 1 = event processing + // tid 2 = nock processing + fprintf(_file_u, + "{\"name\": \"process_name\", \"ph\": \"M\", \"pid\": %d, \"args\": " + "{\"name\": \"urbit\"}},\n", + _nock_pid_i); + fprintf(_file_u, + "{\"name\": \"thread_name\", \"ph\": \"M\", \"pid\": %d, \"tid\": 1, " + "\"args\": {\"name\": \"Event Processing\"}},\n", + _nock_pid_i); + fprintf(_file_u, + "{\"name\": \"thread_sort_index\", \"ph\": \"M\", \"pid\": %d, " + "\"tid\": 1, \"args\": {\"sort_index\": 1}},\n", + _nock_pid_i); + fprintf(_file_u, + "{\"name\": \"thread_name\", \"ph\": \"M\", \"pid\": %d, \"tid\": 2, " + "\"args\": {\"name\": \"Nock\"}},\n", + _nock_pid_i); + fprintf(_file_u, + "{\"name\": \"thread_sort_index\", \"ph\": \"M\", \"pid\": %d, " + "\"tid\": 2, \"args\": {\"sort_index\": 2}},\n", + _nock_pid_i); + _trace_cnt_w = 5; +} + +/* u3t_trace_close(): closes a trace file. optional. +*/ +void +u3t_trace_close(void) +{ + if ( !_file_u ) + return; + + // We don't terminate the JSON because of the file format. + fclose(_file_u); + _trace_cnt_w = 0; + _file_cnt_w++; +} + +/* u3t_trace_time(): microsecond clock +*/ +c3_d u3t_trace_time(void) +{ + struct timeval tim_tv; + gettimeofday(&tim_tv, 0); + return 1000000ULL * tim_tv.tv_sec + tim_tv.tv_usec; +} + +/* u3t_nock_trace_push(): push a trace onto the trace stack; returns yes if pushed. + * + * The trace stack is a stack of [path time-entered]. + */ +c3_o +u3t_nock_trace_push(u3_noun lab) +{ + if ( !_file_u ) + return c3n; + + if ( (u3_nul == u3R->pro.trace) || + !_(u3r_sing(lab, u3h(u3h(u3R->pro.trace)))) ) { + u3a_gain(lab); + c3_d time = u3t_trace_time(); + u3R->pro.trace = u3nc(u3nc(lab, u3i_chubs(1, &time)), u3R->pro.trace); + return c3y; + } + else { + return c3n; + } +} + +/* u3t_nock_trace_pop(): pops a trace from the trace stack. + * + * When we remove the trace from the stack, we check to see if the sample is + * large enough to process, as we'll otherwise keep track of individual +add + * calls. If it is, we write it out to the tracefile. + */ +void +u3t_nock_trace_pop(void) +{ + if ( !_file_u ) + return; + + u3_noun trace = u3R->pro.trace; + u3R->pro.trace = u3k(u3t(trace)); + + u3_noun item = u3h(trace); + u3_noun lab = u3h(item); + c3_d start_time = u3r_chub(0, u3t(item)); + + // 33microseconds (a 30th of a millisecond). + c3_d duration = u3t_trace_time() - start_time; + if (duration > 33) { + c3_c* name = u3m_pretty_path(lab); + + fprintf(_file_u, + "{\"cat\": \"nock\", \"name\": \"%s\", \"ph\":\"%c\", \"pid\": %d, " + "\"tid\": 2, \"ts\": %" PRIu64 ", \"dur\": %" PRIu64 "}, \n", + name, + 'X', + _nock_pid_i, + start_time, + duration); + + c3_free(name); + _trace_cnt_w++; + } + + u3z(trace); +} + +/* u3t_event_trace(): dumps a simple event from outside nock. +*/ +void +u3t_event_trace(const c3_c* name, c3_c type) +{ + if ( !_file_u ) + return; + + fprintf(_file_u, + "{\"cat\": \"event\", \"name\": \"%s\", \"ph\":\"%c\", \"pid\": %d, " + "\"tid\": 1, \"ts\": %" PRIu64 ", \"id\": \"0x100\"}, \n", + name, + type, + _nock_pid_i, + u3t_trace_time()); + _trace_cnt_w++; +} + +/* u3t_print_steps: print step counter. +*/ +void +u3t_print_steps(FILE* fil_u, c3_c* cap_c, c3_d sep_d) +{ + u3_assert( 0 != fil_u ); + + c3_w gib_w = (sep_d / 1000000000ULL); + c3_w mib_w = (sep_d % 1000000000ULL) / 1000000ULL; + c3_w kib_w = (sep_d % 1000000ULL) / 1000ULL; + c3_w bib_w = (sep_d % 1000ULL); + + // XX prints to stderr since it's called on shutdown, daemon may be gone + // + if ( sep_d ) { + if ( gib_w ) { + fprintf(fil_u, "%s: G/%d.%03d.%03d.%03d\r\n", + cap_c, gib_w, mib_w, kib_w, bib_w); + } + else if ( mib_w ) { + fprintf(fil_u, "%s: M/%d.%03d.%03d\r\n", cap_c, mib_w, kib_w, bib_w); + } + else if ( kib_w ) { + fprintf(fil_u, "%s: K/%d.%03d\r\n", cap_c, kib_w, bib_w); + } + else if ( bib_w ) { + fprintf(fil_u, "%s: %d\r\n", cap_c, bib_w); + } + } +} + +/* u3t_damp(): print and clear profile data. +*/ +void +u3t_damp(FILE* fil_u) +{ + u3_assert( 0 != fil_u ); + + if ( 0 != u3R->pro.day ) { + u3_noun wol = u3do("pi-tell", u3R->pro.day); + + // XX prints to stderr since it's called on shutdown, daemon may be gone + // + { + u3_noun low = wol; + + while ( u3_nul != low ) { + c3_c* str_c = (c3_c*)u3r_tape(u3h(low)); + fputs(str_c, fil_u); + fputs("\r\n", fil_u); + + c3_free(str_c); + low = u3t(low); + } + + u3z(wol); + } + + /* bunt a +doss + */ + u3R->pro.day = u3nt(u3nq(0, 0, 0, u3nq(0, 0, 0, 0)), 0, 0); + } + + u3t_print_steps(fil_u, "nocks", u3R->pro.nox_d); + u3t_print_steps(fil_u, "cells", u3R->pro.cel_d); + + u3R->pro.nox_d = 0; + u3R->pro.cel_d = 0; +} + +/* _ct_sigaction(): profile sigaction callback. +*/ +void _ct_sigaction(c3_i x_i) +{ + u3t_samp(); +} + +/* u3t_init(): initialize tracing layer. +*/ +void +u3t_init(void) +{ + u3T.noc_o = c3n; + u3T.glu_o = c3n; + u3T.mal_o = c3n; + u3T.far_o = c3n; + u3T.coy_o = c3n; + u3T.euq_o = c3n; +} + +c3_w +u3t_trace_cnt(void) +{ + return _trace_cnt_w; +} + +c3_w +u3t_file_cnt(void) +{ + return _file_cnt_w; +} + +/* u3t_boot(): turn sampling on. +*/ +void +u3t_boot(void) +{ +#ifndef U3_OS_windows + if ( u3C.wag_w & u3o_debug_cpu ) { + _ct_lop_o = c3n; +#if defined(U3_OS_PROF) + // skip profiling if we don't yet have an arvo kernel + // + if ( 0 == u3A->roc ) { + return; + } + + // Register _ct_sigaction to be called on `SIGPROF`. + { + struct sigaction sig_s = {{0}}; + sig_s.sa_handler = _ct_sigaction; + sigemptyset(&(sig_s.sa_mask)); + sigaction(SIGPROF, &sig_s, 0); + } + + // Unblock `SIGPROF` for this thread (we will block it again when `u3t_boff` is called). + { + sigset_t set; + sigemptyset(&set); + sigaddset(&set, SIGPROF); + if ( 0 != pthread_sigmask(SIG_UNBLOCK, &set, NULL) ) { + u3l_log("trace: thread mask SIGPROF: %s", strerror(errno)); + } + } + + // Ask for SIGPROF to be sent every 10ms. + { + struct itimerval itm_v = {{0}}; + itm_v.it_interval.tv_usec = 10000; + itm_v.it_value = itm_v.it_interval; + setitimer(ITIMER_PROF, &itm_v, 0); + } +#endif + } +#endif +} + +/* u3t_boff(): turn profile sampling off. +*/ +void +u3t_boff(void) +{ +#ifndef U3_OS_windows + if ( u3C.wag_w & u3o_debug_cpu ) { +#if defined(U3_OS_PROF) + // Mask SIGPROF signals in this thread (and this is the only + // thread that unblocked them). + { + sigset_t set; + sigemptyset(&set); + sigaddset(&set, SIGPROF); + if ( 0 != pthread_sigmask(SIG_BLOCK, &set, NULL) ) { + u3l_log("trace: thread mask SIGPROF: %s", strerror(errno)); + } + } + + // Disable the SIGPROF timer. + { + struct itimerval itm_v = {{0}}; + setitimer(ITIMER_PROF, &itm_v, 0); + } + + // Ignore SIGPROF signals. + { + struct sigaction sig_s = {{0}}; + sigemptyset(&(sig_s.sa_mask)); + sig_s.sa_handler = SIG_IGN; + sigaction(SIGPROF, &sig_s, 0); + } +#endif + } +#endif +} + + +/* u3t_slog_cap(): slog a tank with a caption with +** a given priority c3_l (assumed 0-3). +*/ +void +u3t_slog_cap(c3_l pri_l, u3_noun cap, u3_noun tan) +{ + u3t_slog( + u3nc( + pri_l, + u3nt( + c3__rose, + u3nt(u3nt(':', ' ', u3_nul), u3_nul, u3_nul), + u3nt(cap, tan, u3_nul) + ) + ) + ); +} + + +/* u3t_slog_trace(): given a c3_l priority pri and a raw stack tax +** flop the order into start-to-end, render, and slog each item +** until done. +*/ +void +u3t_slog_trace(c3_l pri_l, u3_noun tax) +{ + // render the stack + // Note: ton is a reference to a data struct + // we have just allocated + // lit is used as a moving cursor pointer through + // that allocated struct + // once we finish lit will be null, but ton will still + // point to the whole valid allocated data structure + // and thus we can free it safely at the end of the func + // to clean up after ourselves. + // Note: flop reverses the stack trace list 'tax' + u3_noun ton = u3dc("mook", 2, u3kb_flop(tax)); + u3_noun lit = u3t(ton); + + // print the stack one stack item at a time + while ( u3_nul != lit ) { + u3t_slog(u3nc(pri_l, u3k(u3h(lit)) )); + lit = u3t(lit); + } + + u3z(ton); +} + + +/* u3t_slog_nara(): slog only the deepest road's trace with +** c3_l priority pri +*/ +void +u3t_slog_nara(c3_l pri_l) +{ + u3_noun tax = u3k(u3R->bug.tax); + u3t_slog_trace(pri_l, tax); +} + + +/* u3t_slog_hela(): join all roads' traces together into one tax +** and pass it to slog_trace along with the given c3_l priority pri_l +*/ +void +u3t_slog_hela(c3_l pri_l) +{ + // rod_u protects us from mutating the global state + u3_road* rod_u = u3R; + + // inits to the the current road's trace + u3_noun tax = u3k(rod_u->bug.tax); + + // while there is a parent road ref ... + while ( &(u3H->rod_u) != rod_u ) { + // ... point at the next road and append its stack to tax + rod_u = u3tn(u3_road, rod_u->par_p); + tax = u3kb_weld(tax, u3k(rod_u->bug.tax)); + } + + u3t_slog_trace(pri_l, tax); +} + +/* _ct_roundf(): truncate a float to precision equivalent to %.2f */ +static float +_ct_roundf(float per_f) +{ + // scale the percentage so that all siginificant digits + // would be retained when truncted to an int, then add 0.5 + // to account for rounding without using round or roundf + float big_f = (per_f*10000)+0.5; + // truncate to int + c3_w big_w = (c3_w) big_f; + // convert to float and scale down such that + // our last two digits are right of the decimal + float tuc_f = (float) big_w/100.0; + return tuc_f; +} + +/* _ct_meme_percent(): convert two ints into a percentage */ +static float +_ct_meme_percent(c3_w lit_w, c3_w big_w) +{ + // get the percentage of our inputs as a float + float raw_f = (float) lit_w/big_w; + return _ct_roundf(raw_f); +} + +/* _ct_all_heap_size(): return the size in bytes of ALL space on the Loom +** over all roads, currently in use as heap. +*/ +static c3_w +_ct_all_heap_size(u3_road* r) { + if (r == &(u3H->rod_u)) { + return u3a_heap(r)*4; + } else { + // recurse + return (u3a_heap(r)*4) + _ct_all_heap_size(u3tn(u3_road, r->par_p)); + } +} + +/* These two structs, bar_item and bar_info, store the mutable data +** to normalize measured Loom usage values into ints that will fit +** into a fixed width ascii bar chart. +*/ +struct +bar_item { + // index + c3_w dex_w; + // lower bound + c3_w low_w; + // original value + float ori_f; + // difference + float dif_f; +}; + +struct +bar_info { + struct bar_item s[6]; +}; + +/* _ct_boost_small(): we want zero to be zero, +** anything between zero and one to be one, +** and all else to be whatever it is. +*/ +static float +_ct_boost_small(float num_f) +{ + return + 0.0 >= num_f ? 0.0: + 1.0 > num_f ? 1.0: + num_f; +} + +/* _ct_global_difference(): each low_w represents the normalized integer value + * of its loom item, and ideally the sum of all loom low_w + * values should be 100. This function reports how far from + * the ideal bar_u is. +*/ +static c3_ws +_ct_global_difference(struct bar_info bar_u) +{ + c3_w low_w = 0; + for (c3_w i=0; i < 6; i++) { + low_w += bar_u.s[i].low_w; + } + return 100 - low_w; +} + +/* _ct_compute_roundoff_error(): for each loom item in bar_u +** compute the current difference between the int +** size and the original float size. +*/ +static struct bar_info +_ct_compute_roundoff_error(struct bar_info bar_u) +{ + for (c3_w i=0; i < 6; i++) { + bar_u.s[i].dif_f = bar_u.s[i].ori_f - bar_u.s[i].low_w; + } + return bar_u; +} + +/* _ct_sort_by_roundoff_error(): sort loom items from most mis-sized to least */ +static struct bar_info +_ct_sort_by_roundoff_error(struct bar_info bar_u) +{ + struct bar_item tem_u; + for (c3_w i=1; i < 6; i++) { + for (c3_w j=0; j < 6-i; j++) { + if (bar_u.s[j+1].dif_f > bar_u.s[j].dif_f) { + tem_u = bar_u.s[j]; + bar_u.s[j] = bar_u.s[j+1]; + bar_u.s[j+1] = tem_u; + } + } + } + return bar_u; +} + +/* _ct_sort_by_index(): sort loom items into loom order */ +static struct bar_info +_ct_sort_by_index(struct bar_info bar_u) +{ + struct bar_item tem_u; + for (c3_w i=1; i < 6; i++) { + for (c3_w j=0; j < 6-i; j++) { + if (bar_u.s[j+1].dex_w < bar_u.s[j].dex_w) { + tem_u = bar_u.s[j]; + bar_u.s[j] = bar_u.s[j+1]; + bar_u.s[j+1] = tem_u; + } + } + } + return bar_u; +} + +/* _ct_reduce_error(): reduce error by one int step + * making oversized things a bit smaller + * and undersized things a bit bigger +*/ +static struct bar_info +_ct_reduce_error(struct bar_info bar_u, c3_ws dif_s) +{ + for (c3_w i=0; i < 6; i++) { + if (bar_u.s[i].low_w == 0) continue; + if (bar_u.s[i].low_w == 1) continue; + if (dif_s > 0) { + bar_u.s[i].low_w++; + dif_s--; + } + if (dif_s < 0) { + bar_u.s[i].low_w--; + dif_s++; + } + } + return bar_u; +} + +/* _ct_report_bargraph(): render all six raw loom elements into a fixed-size ascii bargraph */ +static void +_ct_report_bargraph( + c3_c bar_c[105], float hip_f, float hep_f, float fre_f, float pen_f, float tak_f, float tik_f +) +{ + float in[6]; + in[0] = _ct_boost_small(hip_f); + in[1] = _ct_boost_small(hep_f); + in[2] = _ct_boost_small(fre_f); + in[3] = _ct_boost_small(pen_f); + in[4] = _ct_boost_small(tak_f); + in[5] = _ct_boost_small(tik_f); + + // init the list of structs + struct bar_info bar_u; + for (c3_w i=0; i < 6; i++) { + bar_u.s[i].dex_w = i; + bar_u.s[i].ori_f = in[i]; + bar_u.s[i].low_w = (c3_w) bar_u.s[i].ori_f; + } + + // repeatedly adjust for roundoff error + // until it is elemenated or we go 100 cycles + c3_ws dif_s = 0; + for (c3_w x=0; x<100; x++) { + bar_u = _ct_compute_roundoff_error(bar_u); + dif_s = _ct_global_difference(bar_u); + if (dif_s == 0) break; + bar_u = _ct_sort_by_roundoff_error(bar_u); + bar_u = _ct_reduce_error(bar_u, dif_s); + } + bar_u = _ct_sort_by_index(bar_u); + + for (c3_w x=1; x<104; x++) { + bar_c[x] = ' '; + } + bar_c[0] = '['; + + // create our bar chart + const c3_c sym_c[6] = "=-%#+~"; + c3_w x = 0, y = 0; + for (c3_w i=0; i < 6; i++) { + x++; + for (c3_w j=0; j < bar_u.s[i].low_w; j++) { + bar_c[x+j] = sym_c[i]; + y = x+j; + } + if (y > 0) x = y; + } + bar_c[101] = ']'; + bar_c[102] = 0; +} + +/* _ct_size_prefix(): return the correct metric scalar prifix for a given int */ +static c3_c +_ct_size_prefix(c3_d num_d) +{ + return + (num_d / 1000000000) ? 'G': + (num_d % 1000000000) / 1000000 ? 'M': + (num_d % 1000000) / 1000 ? 'K': + (num_d % 1000) ? ' ': + 'X'; +} + +/* _ct_report_string(): convert a int into a string, adding a metric scale prefix letter*/ +static void +_ct_report_string(c3_c rep_c[32], c3_d num_d) +{ + memset(rep_c, ' ', 31); + + // add the G/M/K prefix + rep_c[24] = _ct_size_prefix(num_d); + // consume wor_w into a string one base-10 digit at a time + // including dot formatting + c3_w i = 0, j = 0; + while (num_d > 0) { + if (j == 3) { + rep_c[22-i] = '.'; + i++; + j = 0; + } else { + rep_c[22-i] = (num_d%10)+'0'; + num_d /= 10; + i++; + j++; + } + } +} + +/* _ct_etch_road_depth(): return a the current road depth as a fixed size string */ +static void + _ct_etch_road_depth(c3_c rep_c[32], u3_road* r, c3_w num_w) { + if (r == &(u3H->rod_u)) { + _ct_report_string(rep_c, num_w); + // this will be incorrectly indented, so we fix that here + c3_w i = 14; + while (i > 0) { + rep_c[i] = rep_c[i+16]; + rep_c[i+16] = ' '; + i--; + } + } else { + _ct_etch_road_depth(rep_c, u3tn(u3_road, r->par_p), ++num_w); + } +} + +/* _ct_etch_memory(): create a single line report of a given captioned item + * with a percentage of space used and the bytes used + * scaled by a metric scaling postfix (ie MB, GB, etc) +*/ +static void +_ct_etch_memory(c3_c rep_c[32], float per_f, c3_w num_w) +{ + // create the basic report string + _ct_report_string(rep_c, num_w); + // add the Bytes postfix to the size report + rep_c[25] = 'B'; + + // add the space-percentage into the report + rep_c[2] = '0', rep_c[3] = '.', rep_c[4] = '0', rep_c[5] = '0'; + c3_w per_i = (c3_w) (per_f*100); + c3_w i = 0; + while (per_i > 0 && i < 6) { + if (i != 2) { + rep_c[5-i] = (per_i%10)+'0'; + per_i /= 10; + } + i++; + } + // add the percent sign + rep_c[6] = '%'; +} + +/* _ct_etch_steps(): create a single line report of a given captioned item +** scaled by a metric scaling postfix, but unitless. +*/ +static void +_ct_etch_steps(c3_c rep_c[32], c3_d sep_d) +{ + _ct_report_string(rep_c, sep_d); +} + +/* u3t_etch_meme(): report memory stats at call time */ +u3_noun +u3t_etch_meme(c3_l mod_l) +{ + u3a_road* lum_r; + lum_r = &(u3H->rod_u); + // this will need to switch to c3_d when we go to a 64 loom + c3_w top_w = u3a_full(lum_r)*4, + ful_w = u3a_full(u3R)*4, + fre_w = u3a_idle(u3R)*4, + tak_w = u3a_temp(u3R)*4, + hap_w = u3a_heap(u3R)*4, + pen_w = u3a_open(u3R)*4; + + c3_w imu_w = top_w-ful_w; + c3_w hep_w = hap_w-fre_w; + + + float hep_f = _ct_meme_percent(hep_w, top_w), + fre_f = _ct_meme_percent(fre_w, top_w), + pen_f = _ct_meme_percent(pen_w, top_w), + tak_f = _ct_meme_percent(tak_w, top_w); + float ful_f = hep_f + fre_f + pen_f + tak_f; + + c3_w hip_w = _ct_all_heap_size(u3R) - hap_w; + c3_w tik_w = imu_w - hip_w; + float hip_f = _ct_meme_percent(hip_w, top_w), + tik_f = _ct_meme_percent(tik_w, top_w); + +#ifdef U3_CPU_DEBUG + /* iff we are using CPU_DEBUG env var + ** we can report more facts: + ** max_w: max allocated on the current road (not global, not including child roads) + ** cel_d: max cells allocated in current road (inc closed kids, but not parents) + ** nox_d: nock steps performed in current road + */ + c3_w max_w = (u3R->all.max_w*4)+imu_w; + float max_f = _ct_meme_percent(max_w, top_w); + c3_d cel_d = u3R->pro.cel_d; + c3_d nox_d = u3R->pro.nox_d; + // iff we have a max_f we will render it into the bar graph + // in other words iff we have max_f it will always replace something + c3_w inc_w = (max_f > hip_f+1.0) ? (c3_w) max_f+0.5 : (c3_w) hip_f+1.5; +#endif + + // warn if any sanity checks have failed + if (100.01 < (hip_f + hep_f + fre_f + pen_f + tak_f + tik_f)) + u3t_slog_cap(2, u3i_string("warning"), u3i_string("loom sums over 100.01%")); + if ( 99.99 > (hip_f + hep_f + fre_f + pen_f + tak_f + tik_f)) + u3t_slog_cap(2, u3i_string("warning"), u3i_string("loom sums under 99.99%")); + + c3_c bar_c[105]; + bar_c[0] = 0; + _ct_report_bargraph(bar_c, hip_f, hep_f, fre_f, pen_f, tak_f, tik_f); + + c3_w dol = (c3_w) _ct_roundf(hip_f/100); + bar_c[dol] = '$'; +#ifdef U3_CPU_DEBUG + if (max_f > 0.0) { + bar_c[inc_w] = '|'; + } +#endif + + c3_c dir_n[8]; + dir_n[0] = 0; + if ( u3a_is_north(u3R) == c3y ) { + strcat(dir_n, " North"); + } else { + strcat(dir_n, " South"); + } + + if (mod_l == 0) { + return u3i_string(bar_c); + } + else { + c3_c rep_c[32]; + rep_c[31] = 0; + c3_c str_c[1024]; + str_c[0] = 0; + // each report line is at most 54 chars long + strcat(str_c, "Legend | Report:"); + + strcat(str_c, "\n loom: "); _ct_etch_memory(rep_c, 100.0, top_w); strcat(str_c, rep_c); + strcat(str_c, "\n road: "); _ct_etch_memory(rep_c, ful_f, ful_w); strcat(str_c, rep_c); + strcat(str_c, "\n"); + strcat(str_c, "\n = immutable heap: "); _ct_etch_memory(rep_c, hip_f, hip_w); strcat(str_c, rep_c); + strcat(str_c, "\n - solid heap: "); _ct_etch_memory(rep_c, hep_f, hep_w); strcat(str_c, rep_c); + strcat(str_c, "\n % freed heap: "); _ct_etch_memory(rep_c, fre_f, fre_w); strcat(str_c, rep_c); + strcat(str_c, "\n # open space: "); _ct_etch_memory(rep_c, pen_f, pen_w); strcat(str_c, rep_c); + strcat(str_c, "\n + stack: "); _ct_etch_memory(rep_c, tak_f, tak_w); strcat(str_c, rep_c); + strcat(str_c, "\n ~ immutable stack: "); _ct_etch_memory(rep_c, tik_f, tik_w); strcat(str_c, rep_c); + strcat(str_c, "\n"); + strcat(str_c, "\n $ allocation frame: "); _ct_etch_memory(rep_c, hip_f, hip_w); strcat(str_c, rep_c); +#ifdef U3_CPU_DEBUG + strcat(str_c, "\n | road max memory: "); _ct_etch_memory(rep_c, max_f, max_w); strcat(str_c, rep_c); + strcat(str_c, "\n"); + strcat(str_c, "\n road cells made: "); _ct_etch_steps(rep_c, cel_d); strcat(str_c, rep_c); + strcat(str_c, "\n road nocks made: "); _ct_etch_steps(rep_c, nox_d); strcat(str_c, rep_c); +#endif + strcat(str_c, "\n road direction: "); strcat(str_c, dir_n); + strcat(str_c, "\n road depth: "); _ct_etch_road_depth(rep_c, u3R, 1); strcat(str_c, rep_c); + strcat(str_c, "\n\nLoom: "); strcat(str_c, bar_c); + return u3i_string(str_c); + } +} + +/* u3t_sstack_init: initalize a root node on the spin stack +*/ +void +u3t_sstack_init() +{ +#ifndef U3_OS_windows + c3_c shm_name[256]; + snprintf(shm_name, sizeof(shm_name), SLOW_STACK_NAME, getppid()); + c3_w shm_fd = shm_open(shm_name, O_CREAT | O_RDWR, 0666); + if ( -1 == shm_fd) { + perror("shm_open failed"); + return; + } + + if ( -1 == ftruncate(shm_fd, TRACE_PSIZE)) { + perror("truncate failed"); + return; + } + + stk_u = mmap(NULL, TRACE_PSIZE, PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0); + + if ( MAP_FAILED == stk_u ) { + perror("mmap failed"); + return; + } + + stk_u->off_w = 0; + stk_u->fow_w = 0; + u3t_sstack_push(c3__root); +#endif +} + +#ifndef U3_OS_windows +/* u3t_sstack_open: initalize a root node on the spin stack + */ +u3t_spin* +u3t_sstack_open() +{ + //Setup spin stack + c3_c shm_name[256]; + snprintf(shm_name, sizeof(shm_name), SLOW_STACK_NAME, getpid()); + c3_w shm_fd = shm_open(shm_name, O_CREAT | O_RDWR, 0); + if ( -1 == shm_fd) { + perror("shm_open failed"); + return NULL; + } + + u3t_spin* stk_u = mmap(NULL, TRACE_PSIZE, + PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0); + + if ( MAP_FAILED == stk_u ) { + perror("mmap failed"); + return NULL; + } + + return stk_u; +} +#endif +/* u3t_sstack_exit: shutdown the shared memory for thespin stack +*/ +void +u3t_sstack_exit() +{ + munmap(stk_u, u3a_page); +} + +/* u3t_sstack_push: push a noun on the spin stack. +*/ +void +u3t_sstack_push(u3_noun nam) +{ + if ( !stk_u ) { + u3z(nam); + return; + } + + if ( c3n == u3ud(nam) ) { + u3z(nam); + nam = c3__cell; + } + + c3_w met_w = u3r_met(3, nam); + + // Exit if full + if ( 0 < stk_u->fow_w || + sizeof(stk_u->dat_y) < stk_u->off_w + met_w + sizeof(c3_w) ) { + stk_u->fow_w++; + return; + } + + u3r_bytes(0, met_w, (c3_y*)(stk_u->dat_y+stk_u->off_w), nam); + stk_u->off_w += met_w; + + memcpy(&stk_u->dat_y[stk_u->off_w], &met_w, sizeof(c3_w)); + stk_u->off_w += sizeof(c3_w); + u3z(nam); +} + +/* u3t_sstack_pop: pop a noun from the spin stack. +*/ +void +u3t_sstack_pop() +{ + if ( !stk_u ) return; + if ( 0 < stk_u->fow_w ) { + stk_u->fow_w--; + } else { + c3_w len_w = (c3_w) stk_u->dat_y[stk_u->off_w - sizeof(c3_w)]; + stk_u->off_w -= (len_w+sizeof(c3_w)); + } +} + diff --git a/vere/pkg/noun/trace.h b/vere/pkg/noun/trace.h new file mode 100644 index 0000000..f4e0f2b --- /dev/null +++ b/vere/pkg/noun/trace.h @@ -0,0 +1,230 @@ +/// @file + +#ifndef U3_TRACE_H +#define U3_TRACE_H + +#include +#include + +#include "c3/c3.h" +#include "options.h" +#include "types.h" +#include "allocate.h" + +#ifdef U3_CPU_DEBUG +# include "options.h" +#endif + +#define SLOW_STACK_NAME "/spin_stack_page_%d" +#define TRACE_PSIZE (1U << (u3a_page +2)) + + /** Data structures. + **/ + /* u3t_trace: fast execution flags. + */ + typedef struct _u3t_trace { + c3_o noc_o; // now executing in nock interpreter + c3_o glu_o; // now executing in jet glue + c3_o mal_o; // now executing in allocator + c3_o far_o; // now executing in fragmentor + c3_o coy_o; // now executing in copy + c3_o euq_o; // now executing in equal + } u3t_trace; + + /* u3t_spin: %spin hint stack + */ + typedef struct { + c3_w off_w; + c3_w fow_w; + c3_y dat_y[TRACE_PSIZE - 2*sizeof(c3_w)]; + } u3t_spin; + + /** Macros. + **/ +# ifdef U3_CPU_DEBUG +# define u3t_on(var) \ + (u3T.var = (u3C.wag_w & u3o_debug_cpu) \ + ? (c3n == u3T.var) ? c3y : (abort(), 0) \ + : u3T.var) +# else +# define u3t_on(var) +#endif + +# ifdef U3_CPU_DEBUG +# define u3t_off(var) \ + (u3T.var = (u3C.wag_w & u3o_debug_cpu) \ + ? (c3y == u3T.var) ? c3n : (abort(), 0) \ + : u3T.var) +# else +# define u3t_off(var) +#endif + + + /** Functions. + **/ + /* u3t_init(): initialize tracing layer. + */ + void + u3t_init(void); + + /// @return Number of entries written to the JSON trace file. + c3_w + u3t_trace_cnt(void); + + /// @return Number of times u3t_trace_close() has been called. + c3_w + u3t_file_cnt(void); + + /* u3t_push(): push on trace stack. + */ + void + u3t_push(u3_noun mon); + + /* u3t_mean(): push `[%mean roc]` on trace stack. + */ + void + u3t_mean(u3_noun roc); + + /* u3t_drop(): drop from meaning stack. + */ + void + u3t_drop(void); + + /* u3t_slog(): print directly. + */ + void + u3t_slog(u3_noun hod); + + /* u3t_heck(): profile point. + */ + void + u3t_heck(u3_atom cog); + + /* u3t_samp(): sample. + */ + void + u3t_samp(void); + + /* u3t_come(): push on profile stack; return yes if active push. RETAIN. + */ + c3_o + u3t_come(u3_noun bat); + + /* u3t_flee(): pop off profile stack. + */ + void + u3t_flee(void); + + /* u3t_trace_open(): opens the path for writing tracing information. + */ + void + u3t_trace_open(const c3_c *dir_c); + + /* u3t_trace_close(): closes the trace file. optional. + */ + void + u3t_trace_close(void); + + /* u3t_trace_time(): returns current time since system epoc, + * whatever it is per system, in microseconds. + */ + c3_d + u3t_trace_time(void); + + /* u3t_nock_trace_push(): pushes a frame onto the trace stack; + * return yes if active push. + */ + c3_o + u3t_nock_trace_push(u3_noun lab); + + /* u3t_nock_trace_pop(): pop off trace stack. + */ + void + u3t_nock_trace_pop(void); + + /* u3t_event_trace(): record a lifecycle event. + */ + void + u3t_event_trace(const c3_c* name, c3_c type); + + /* u3t_damp(): print and clear profile data. + */ + void + u3t_damp(FILE* fil_u); + + /* u3t_boff(): turn profile sampling off. + */ + void + u3t_boff(void); + + /* u3t_boot(): turn sampling on. + */ + void + u3t_boot(void); + + /* u3t_slog_cap(): slog a tank with a caption with + ** a given priority c3_l (assumed 0-3). + */ + void + u3t_slog_cap(c3_l pri_l, u3_noun cap, u3_noun tan); + + /* u3t_slog_trace(): given a c3_l priority pri and a raw stack tax + ** flop the order into start-to-end, render, and slog each item + ** until done. + */ + void + u3t_slog_trace(c3_l pri_l, u3_noun tax); + + /* u3t_slog_nara(): slog only the deepest road's trace with + ** c3_l priority pri + */ + void + u3t_slog_nara(c3_l pri_l); + + /* u3t_slog_hela(): join all roads' traces together into one tax + ** and pass it to slog_trace along with the given c3_l priority pri_l + */ + void + u3t_slog_hela(c3_l pri_l); + + /* u3t_etch_meme(): report memory stats at call time + */ + u3_noun + u3t_etch_meme(c3_l mod_l); + + /* u3t_sstack_init: initalize a root node on the spin stack + */ + void + u3t_sstack_init(void); + + /* u3t_sstack_init: initalize a root node on the spin stack + */ + u3t_spin* + u3t_sstack_open(void); + + /* u3t_sstack_exit: initalize a root node on the spin stack + */ + void + u3t_sstack_exit(void); + + /* u3t_sstack_push: push a noun on the spin stack. + */ + void + u3t_sstack_push(u3_noun nam); + + /* u3t_sstack_pop: pop a noun from the spin stack. + */ + void + u3t_sstack_pop(void); + + + /** Globals. + **/ + /// Tracing profiler. + extern u3t_trace u3t_Trace; + extern u3t_spin* stk_u; + +# define u3T u3t_Trace + + +#endif /* ifndef U3_TRACE_H */ diff --git a/vere/pkg/noun/types.h b/vere/pkg/noun/types.h new file mode 100644 index 0000000..6819eb6 --- /dev/null +++ b/vere/pkg/noun/types.h @@ -0,0 +1,64 @@ +/// @file +/// +/// Various noun types. + +#ifndef U3_TYPES_H +#define U3_TYPES_H + +#include "c3/c3.h" + +/// Sentinel value for u3_noun types that aren't actually nouns. +#define u3_none (u3_noun)0xffffffff + +/// 0, or `~` in Hoon. +#define u3_nul 0 + +/// 0, or `%$` in Hoon. +#define u3_blip 0 + +/// Pointer offset into the loom. +/// +/// Declare variables of this type using u3p() to annotate the type of the +/// pointee. Ensure that variable names of this type end in `_p`. +typedef c3_w u3_post; +#define u3p(type) u3_post + +/// Tagged noun pointer. +/// +/// If bit 31 is 0, the noun is a direct 31-bit atom (also called a "cat"). +/// If bit 31 is 1 and bit 30 is 0, an indirect atom (also called a "pug"). +/// If bit 31 is 1 and bit 30 is 1, an indirect cell (also called a "pom"). +/// +/// Bits 0-29 are a word offset (i.e. u3_post) against the loom. +typedef c3_w u3_noun; + +/// Optional noun type. +/// +/// u3_weak is either a valid noun or u3_none. +typedef u3_noun u3_weak; + +/// Atom. +typedef u3_noun u3_atom; + +/// Term (Hoon aura @tas). +typedef u3_noun u3_term; + +/// Cell of the form `[a b]`. +typedef u3_noun u3_cell; + +/// Cell of the form `[a b c]`. +typedef u3_noun u3_trel; + +/// Cell of the form `[a b c d]`. +typedef u3_noun u3_qual; + +/// Cell of the form `[a b c d e]`. +typedef u3_noun u3_quin; + +/// Unary noun function. +typedef u3_noun (*u3_funk)(u3_noun); + +/// Binary noun function. +typedef u3_noun (*u3_funq)(u3_noun, u3_noun); + +#endif /* ifndef U3_TYPES_H */ diff --git a/vere/pkg/noun/urth.c b/vere/pkg/noun/urth.c new file mode 100644 index 0000000..91b64bb --- /dev/null +++ b/vere/pkg/noun/urth.c @@ -0,0 +1,1042 @@ +/// @file + +#include "urth.h" + +#include +#include +#include +#include + +#include "allocate.h" +#include "hashtable.h" +#include "imprison.h" +#include "jets.h" +#include "manage.h" +#include "options.h" +#include "retrieve.h" +#include "serial.h" +#include "ur/ur.h" +#include "vortex.h" + +/* _cu_atom_to_ref(): allocate indirect atom off-loom. +*/ +static inline ur_nref +_cu_atom_to_ref(ur_root_t* rot_u, u3a_atom* vat_u) +{ + ur_nref ref; + c3_d val_d; + + switch ( vat_u->len_w ) { + case 2: { + val_d = ((c3_d)vat_u->buf_w[1]) << 32 + | ((c3_d)vat_u->buf_w[0]); + ref = ur_coin64(rot_u, val_d); + } break; + + case 1: { + val_d = (c3_d)vat_u->buf_w[0]; + ref = ur_coin64(rot_u, val_d); + } break; + + default: { + // XX assumes little-endian + // + c3_y* byt_y = (c3_y*)vat_u->buf_w; + c3_d len_d = ((c3_d)vat_u->len_w) << 2; + + u3_assert( len_d ); + + // NB: this call will account for any trailing null bytes + // caused by an overestimate in [len_d] + // + ref = ur_coin_bytes(rot_u, len_d, byt_y); + } break; + } + + return ref; +} + +/* _cu_box_check(): check loom allocation box for relocation pointer. +*/ +static inline c3_o +_cu_box_check(u3a_noun* som_u, ur_nref* ref) +{ + c3_w* box_w = (void*)som_u; + + if ( 0xffffffff == box_w[0] ) { + *ref = ( ((c3_d)box_w[2]) << 32 + | ((c3_d)box_w[1]) ); + return c3y; + } + + return c3n; +} + +/* _cu_box_stash(): overwrite an allocation box with relocation pointer. +*/ +static inline void +_cu_box_stash(u3a_noun* som_u, ur_nref ref) +{ + c3_w* box_w = (void*)som_u; + + // overwrite u3a_atom with reallocated reference + // + box_w[0] = 0xffffffff; + box_w[1] = ref & 0xffffffff; + box_w[2] = ref >> 32; +} + +/* +** stack frame for recording head vs tail iteration +** +** $? [LOM_HEAD cell=*] +** [ref=* cell=*] +*/ + +#define LOM_HEAD 0xffffffffffffffffULL + +typedef struct _cu_frame_s +{ + ur_nref ref; + u3a_cell* cel_u; +} _cu_frame; + +typedef struct _cu_stack_s +{ + c3_w pre_w; + c3_w siz_w; + c3_w fil_w; + _cu_frame* fam_u; +} _cu_stack; + +/* _cu_from_loom_next(): advance off-loom reallocation traversal. +*/ +static inline ur_nref +_cu_from_loom_next(_cu_stack* tac_u, ur_root_t* rot_u, u3_noun a) +{ + while ( 1 ) { + // u3 direct == ur direct + // + if ( c3y == u3a_is_cat(a) ) { + return (ur_nref)a; + } + else { + u3a_noun* som_u = u3a_to_ptr(a); + ur_nref ref; + + // check for relocation pointers + // + if ( c3y == _cu_box_check(som_u, &ref) ) { + return ref; + } + // reallocate indirect atoms, stashing relocation pointers + // + else if ( c3y == u3a_is_atom(a) ) { + ref = _cu_atom_to_ref(rot_u, (u3a_atom*)som_u); + _cu_box_stash(som_u, ref); + return ref; + } + else { + u3a_cell* cel_u = (u3a_cell*)som_u; + + // reallocate the stack if full + // + if ( tac_u->fil_w == tac_u->siz_w ) { + c3_w nex_w = tac_u->pre_w + tac_u->siz_w; // XX overflow + tac_u->fam_u = c3_realloc(tac_u->fam_u, nex_w * sizeof(*tac_u->fam_u)); + tac_u->pre_w = tac_u->siz_w; + tac_u->siz_w = nex_w; + } + + // push a head-frame and continue into the head + // + { + _cu_frame* fam_u = &(tac_u->fam_u[tac_u->fil_w++]); + fam_u->ref = LOM_HEAD; + fam_u->cel_u = cel_u; + } + + a = cel_u->hed; + continue; + } + } + } +} + +/* _cu_from_loom(): reallocate [a] off loom, in [r]. +*/ +static ur_nref +_cu_from_loom(ur_root_t* rot_u, u3_noun a) +{ + _cu_stack tac_u = {0}; + ur_nref ref; + + tac_u.pre_w = ur_fib10; + tac_u.siz_w = ur_fib11; + tac_u.fam_u = c3_malloc(tac_u.siz_w * sizeof(*tac_u.fam_u)); + + ref = _cu_from_loom_next(&tac_u, rot_u, a); + + // incorporate reallocated ref, accounting for cells + // + while ( tac_u.fil_w ) { + // peek at the top of the stack + // + _cu_frame* fam_u = &(tac_u.fam_u[tac_u.fil_w - 1]); + + // [fam_u] is a head-frame; stash ref and continue into the tail + // + if ( LOM_HEAD == fam_u->ref ) { + fam_u->ref = ref; + ref = _cu_from_loom_next(&tac_u, rot_u, fam_u->cel_u->tel); + } + // [fam_u] is a tail-frame; cons refs and pop the stack + // + else { + ref = ur_cons(rot_u, fam_u->ref, ref); + _cu_box_stash((u3a_noun*)fam_u->cel_u, ref); + tac_u.fil_w--; + } + } + + c3_free(tac_u.fam_u); + + return ref; +} + +/* _cu_vec: parameters for cold-state hamt walk. +*/ +typedef struct _cu_vec_s { + ur_nvec_t* vec_u; + ur_root_t* rot_u; +} _cu_vec; + +/* _cu_hamt_walk(): reallocate key/value pair in hamt walk. +*/ +static void +_cu_hamt_walk(u3_noun kev, void* ptr) +{ + _cu_vec* dat_u = (_cu_vec*)ptr; + ur_nvec_t* vec_u = dat_u->vec_u; + ur_root_t* rot_u = dat_u->rot_u; + + vec_u->refs[vec_u->fill++] = _cu_from_loom(rot_u, kev); +} + +/* _cu_all_from_loom(): reallocate essential persistent state off-loom. +** +** NB: destroys the loom. +*/ +static ur_nref +_cu_all_from_loom(ur_root_t* rot_u, ur_nvec_t* cod_u) +{ + ur_nref ken = _cu_from_loom(rot_u, u3A->roc); + c3_w cod_w = u3h_wyt(u3R->jed.cod_p); + _cu_vec dat_u = { .vec_u = cod_u, .rot_u = rot_u }; + + ur_nvec_init(cod_u, cod_w); + u3h_walk_with(u3R->jed.cod_p, _cu_hamt_walk, &dat_u); + + return ken; +} + +typedef struct _cu_loom_s { + ur_dict32_t map_u; // direct->indirect mapping + u3_atom *vat; // indirect atoms + u3_noun *cel; // cells +} _cu_loom; + +/* _cu_ref_to_noun(): lookup/allocate [ref] on the loom. +*/ +static u3_noun +_cu_ref_to_noun(ur_root_t* rot_u, ur_nref ref, _cu_loom* lom_u) +{ + switch ( ur_nref_tag(ref) ) { + default: u3_assert(0); + + // all ur indirect atoms have been pre-reallocated on the loom. + // + case ur_iatom: return lom_u->vat[ur_nref_idx(ref)]; + + + // cells were allocated off-loom in cons-order, and are traversed + // in the same order: we've already relocated any one we could need here. + // + case ur_icell: return lom_u->cel[ur_nref_idx(ref)]; + + // u3 direct atoms are 31-bit, while ur direct atoms are 62-bit; + // we use a hashtable to deduplicate the non-overlapping space + // + case ur_direct: { + u3_atom vat; + + if ( 0x7fffffffULL >= ref ) { + return (u3_atom)ref; + } + else if ( ur_dict32_get(rot_u, &lom_u->map_u, ref, (c3_w*)&vat) ) { + return vat; + } + else { + { + c3_w wor_w[2] = { ref & 0xffffffff, ref >> 32 }; + vat = (c3_w)u3i_words(2, wor_w); + } + + ur_dict32_put(0, &lom_u->map_u, ref, (c3_w)vat); + return vat; + } + } break; + } +} + +/* _cu_all_to_loom(): reallocate all of [rot_u] on the loom, restore roots. +** NB: requires all roots to be cells +** does *not* track refcounts, which must be +** subsequently reconstructed via tracing. +*/ +static void +_cu_all_to_loom(ur_root_t* rot_u, ur_nref ken, ur_nvec_t* cod_u) +{ + _cu_loom lom_u = {0}; + c3_d i_d, fil_d; + + ur_dict32_grow(0, &lom_u.map_u, ur_fib11, ur_fib12); + + // allocate all atoms on the loom. + // + { + c3_d* len_d = rot_u->atoms.lens; + c3_y** byt_y = rot_u->atoms.bytes; + + fil_d = rot_u->atoms.fill; + lom_u.vat = calloc(fil_d, sizeof(u3_atom)); + + for ( i_d = 0; i_d < fil_d; i_d++ ) { + lom_u.vat[i_d] = u3i_bytes(len_d[i_d], byt_y[i_d]); + } + } + + // allocate all cells on the loom. + // + { + ur_nref* hed = rot_u->cells.heads; + ur_nref* tal = rot_u->cells.tails; + u3_noun cel; + + fil_d = rot_u->cells.fill; + lom_u.cel = c3_calloc(fil_d * sizeof(u3_noun)); + + for ( i_d = 0; i_d < fil_d; i_d++ ) { + cel = u3nc(_cu_ref_to_noun(rot_u, hed[i_d], &lom_u), + _cu_ref_to_noun(rot_u, tal[i_d], &lom_u)); + lom_u.cel[i_d] = cel; + u3r_mug(cel); + } + } + + // restore kernel reference (always a cell) + // + u3A->roc = lom_u.cel[ur_nref_idx(ken)]; + + // restore cold jet state (always cells) + // + { + c3_d max_d = cod_u->fill; + c3_d i_d; + ur_nref ref; + u3_noun kev; + + for ( i_d = 0; i_d < max_d; i_d++) { + ref = cod_u->refs[i_d]; + kev = lom_u.cel[ur_nref_idx(ref)]; + u3h_put(u3R->jed.cod_p, u3h(kev), u3k(u3t(kev))); + u3z(kev); + } + } + + // dispose of relocation pointers + // + c3_free(lom_u.cel); + c3_free(lom_u.vat); + ur_dict_free((ur_dict_t*)&lom_u.map_u); +} + +/* _cu_realloc(): hash-cons roots off-loom, reallocate on loom. +*/ +static ur_nref +_cu_realloc(FILE* fil_u, ur_root_t** tor_u, ur_nvec_t* doc_u) +{ +#ifdef U3_MEMORY_DEBUG + u3_assert(0); +#endif + + // bypassing page tracking as an optimization + // + // NB: u3m_foul() will mark all as dirty, and + // u3e_save() will reinstate protection flags + // + u3m_foul(); + + // stash event number + // + c3_d eve_d = u3A->eve_d; + + // reallocate kernel and cold jet state + // + ur_root_t* rot_u = ur_root_init(); + ur_nvec_t cod_u; + ur_nref ken = _cu_all_from_loom(rot_u, &cod_u); + + // print [rot_u] measurements + // + if ( fil_u ) { + ur_root_info(fil_u, rot_u); + fprintf(fil_u, "\r\n"); + } + + // reinitialize loom + // + // NB: hot jet state is not yet re-established + // + u3m_pave(c3y); + + // reallocate all nouns on the loom + // + _cu_all_to_loom(rot_u, ken, &cod_u); + + // allocate new hot jet state + // + u3j_boot(c3y); + + // establish correct refcounts via tracing + // + c3_w wag_w = u3C.wag_w; + u3C.wag_w |= u3o_debug_ram; + u3m_grab(u3_none); + u3C.wag_w = wag_w; + + // re-establish warm jet state + // + u3j_ream(); + + // restore event number + // + u3A->eve_d = eve_d; + + // mark all pages dirty + // + u3m_foul(); + + *tor_u = rot_u; + *doc_u = cod_u; + + return ken; +} + +/* u3u_meld(): globally deduplicate memory, returns u3a_open delta. +*/ +#ifdef U3_MEMORY_DEBUG +c3_w +u3u_meld(void) +{ + fprintf(stderr, "u3: unable to meld under U3_MEMORY_DEBUG\r\n"); + return 0; +} +#else +c3_w +u3u_meld(void) +{ + c3_w pre_w = u3a_open(u3R); + ur_root_t* rot_u; + ur_nvec_t cod_u; + + u3_assert( &(u3H->rod_u) == u3R ); + + _cu_realloc(stderr, &rot_u, &cod_u); + + // dispose off-loom structures + // + ur_nvec_free(&cod_u); + ur_root_free(rot_u); + return (u3a_open(u3R) - pre_w); +} +#endif + +/* BEGIN helper functions for u3u_melt + ------------------------------------------------------------------- +*/ +/* _cj_warm_tap(): tap war_p to rel +*/ +static void +_cj_warm_tap(u3_noun kev, void* wit) +{ + u3_noun* rel = wit; + *rel = u3nc(u3k(kev), *rel); +} + +static inline u3_weak +_cu_melt_get(u3p(u3h_root) set_p, u3_noun som) +{ + u3_post hav_p = u3h_git(set_p, som); + + if ( u3_none == hav_p ) { + return u3_none; + } + + // restore tag bits from [som] + // + return (hav_p >> u3a_vits) | (som & 0xc0000000); +} + +static inline void +_cu_melt_put(u3p(u3h_root) set_p, u3_noun som) +{ + // strip tag bits from [som] to skip refcounts + // + u3_post hav_p = u3a_to_off(som); + u3h_put(set_p, som, hav_p); +} + +static void +_cu_melt_noun(u3p(u3h_root) set_p, u3_noun* mos) +{ + u3_noun som = *mos; + u3_weak hav; + + // skip direct atoms + // + if ( c3y == u3a_is_cat(som) ) { + return; + } + + // [som] equals [hav], and [hav] is canonical + // + if ( u3_none != (hav = _cu_melt_get(set_p, som)) ) { + if ( hav != som ) { + u3z(som); + *mos = u3k(hav); + } + return; + } + + // traverse subtrees + // + if ( c3y == u3a_is_cell(som) ) { + u3a_cell *cel_u = u3a_to_ptr(som); + _cu_melt_noun(set_p, &cel_u->hed); + _cu_melt_noun(set_p, &cel_u->tel); + } + + // [som] is canonical + // + _cu_melt_put(set_p, som); +} + +/* u3u_melt(): globally deduplicate memory and pack in-place. +*/ +c3_w +u3u_melt(void) +{ + c3_w pre_w = u3a_open(u3R); + + // Verify that we're on the main road. + // + u3_assert( &(u3H->rod_u) == u3R ); + + // Store a cons list of the cold jet registrations in `cod` + // + u3_noun cod = u3_nul; + u3h_walk_with(u3R->jed.cod_p, _cj_warm_tap, &cod); + + u3m_reclaim(); // refresh the byte-code interpreter. + + u3h_free(u3R->cax.per_p); + u3R->cax.per_p = u3h_new_cache(u3C.per_w); + + u3h_free(u3R->jed.cod_p); + u3R->jed.cod_p = u3h_new(); + + { + u3p(u3h_root) set_p = u3h_new(); // temp hashtable + + _cu_melt_noun(set_p, &cod); // melt the jets + _cu_melt_noun(set_p, &u3A->roc); // melt the kernel + + u3h_free(set_p); // release the temp hashtable + } + + // re-initialize the jets + // + u3j_boot(c3y); + + // Put the jet registrations back. Loop over cod putting them back into the cold jet + // dashboard. Then re-run the garbage collector. + // + { + u3_noun codc = cod; + + while(u3_nul != cod) { + u3_noun kev = u3h(cod); + u3h_put(u3R->jed.cod_p, u3h(kev), u3k(u3t(kev))); + cod = u3t(cod); + } + + u3z(codc); + } + + // remove free space + // + u3j_ream(); + u3m_pack(); + + return (u3a_open(u3R) - pre_w); +} + +/* _cu_rock_path(): format rock path. +*/ +static c3_o +_cu_rock_path(c3_c* dir_c, c3_d eve_d, c3_c** out_c) +{ + c3_w nam_w = 1 + snprintf(0, 0, "%s/.urb/roc/%" PRIu64 ".jam", dir_c, eve_d); + c3_c* nam_c = c3_malloc(nam_w); + c3_i ret_i; + + ret_i = snprintf(nam_c, nam_w, "%s/.urb/roc/%" PRIu64 ".jam", dir_c, eve_d); + + if ( ret_i < 0 ) { + fprintf(stderr, "rock: path format failed (%s, %" PRIu64 "): %s\r\n", + dir_c, eve_d, strerror(errno)); + c3_free(nam_c); + return c3n; + } + else if ( ret_i >= nam_w ) { + fprintf(stderr, "rock: path format failed (%s, %" PRIu64 "): truncated\r\n", + dir_c, eve_d); + c3_free(nam_c); + return c3n; + } + + *out_c = nam_c; + return c3y; +} + +/* _cu_rock_path_make(): format rock path, creating directory if necessary.. +*/ +static c3_o +_cu_rock_path_make(c3_c* dir_c, c3_d eve_d, c3_c** out_c) +{ + c3_w nam_w = 1 + snprintf(0, 0, "%s/.urb/roc/%" PRIu64 ".jam", dir_c, eve_d); + c3_c* nam_c = c3_malloc(nam_w); + c3_i ret_i; + + // create $pier/.urb/roc, if it doesn't exist + // + // NB, $pier/.urb is guaranteed to already exist + // + { + ret_i = snprintf(nam_c, nam_w, "%s/.urb/roc", dir_c); + + if ( ret_i < 0 ) { + fprintf(stderr, "rock: path format failed (%s, %" PRIu64 "): %s\r\n", + dir_c, eve_d, strerror(errno)); + c3_free(nam_c); + return c3n; + } + else if ( ret_i >= nam_w ) { + fprintf(stderr, "rock: path format failed (%s, %" PRIu64 "): truncated\r\n", + dir_c, eve_d); + c3_free(nam_c); + return c3n; + } + + if ( c3_mkdir(nam_c, 0700) + && (EEXIST != errno) ) + { + fprintf(stderr, "rock: directory create failed (%s, %" PRIu64 "): %s\r\n", + dir_c, eve_d, strerror(errno)); + c3_free(nam_c); + return c3n; + } + } + + ret_i = snprintf(nam_c, nam_w, "%s/.urb/roc/%" PRIu64 ".jam", dir_c, eve_d); + + if ( ret_i < 0 ) { + fprintf(stderr, "rock: path format failed (%s, %" PRIu64 "): %s\r\n", + dir_c, eve_d, strerror(errno)); + c3_free(nam_c); + return c3n; + } + else if ( ret_i >= nam_w ) { + fprintf(stderr, "rock: path format failed (%s, %" PRIu64 "): truncated\r\n", + dir_c, eve_d); + c3_free(nam_c); + return c3n; + } + + *out_c = nam_c; + return c3y; +} + +static c3_o +_cu_rock_save(c3_c* dir_c, c3_d eve_d, c3_d len_d, c3_y* byt_y) +{ + c3_i fid_i; + + // open rock file, creating the containing directory if necessary + // + { + c3_c* nam_c; + + if ( c3n == _cu_rock_path_make(dir_c, eve_d, &nam_c) ) { + return c3n; + } + + if ( -1 == (fid_i = c3_open(nam_c, O_RDWR | O_CREAT | O_TRUNC, 0644)) ) { + fprintf(stderr, "rock: c3_open failed (%s, %" PRIu64 "): %s\r\n", + dir_c, eve_d, strerror(errno)); + c3_free(nam_c); + return c3n; + } + + c3_free(nam_c); + } + + // write jam-buffer into [fid_i] + // + // XX deduplicate with _write() wrapper in term.c + // + { + ssize_t ret_i; + + while ( len_d > 0 ) { + c3_w lop_w = 0; + // retry interrupt/async errors + // + do { + // abort pathological retry loop + // + if ( 100 == ++lop_w ) { + fprintf(stderr, "rock: write loop: %s\r\n", strerror(errno)); + close(fid_i); + // XX unlink file? + // + return c3n; + } + + ret_i = write(fid_i, byt_y, len_d); + } + while ( (ret_i < 0) + && ( (errno == EINTR) + || (errno == EAGAIN) + || (errno == EWOULDBLOCK) )); + + // assert on true errors + // + // NB: can't call u3l_log here or we would re-enter _write() + // + if ( ret_i < 0 ) { + fprintf(stderr, "rock: write failed %s\r\n", strerror(errno)); + close(fid_i); + // XX unlink file? + // + return c3n; + } + // continue partial writes + // + else { + len_d -= ret_i; + byt_y += ret_i; + } + } + } + + close(fid_i); + + return c3y; +} + +/* u3u_cram(): globably deduplicate memory, and write a rock to disk. +*/ +#ifdef U3_MEMORY_DEBUG +c3_o +u3u_cram(c3_c* dir_c, c3_d eve_d) +{ + fprintf(stderr, "u3: unable to cram under U3_MEMORY_DEBUG\r\n"); + return c3n; +} +#else +c3_o +u3u_cram(c3_c* dir_c, c3_d eve_d) +{ + c3_o ret_o = c3y; + c3_d len_d; + c3_y* byt_y; + + u3_assert( &(u3H->rod_u) == u3R ); + + { + ur_root_t* rot_u; + ur_nvec_t cod_u; + ur_nref ken = _cu_realloc(stderr, &rot_u, &cod_u); + + { + ur_nref roc = u3_nul; + c3_d max_d = cod_u.fill; + c3_d i_d; + + // cons vector of cold jet-state entries onto a list + // + for ( i_d = 0; i_d < max_d; i_d++) { + roc = ur_cons(rot_u, cod_u.refs[i_d], roc); + } + + { + c3_c* has_c = "hashboard"; + ur_nref has = ur_coin_bytes(rot_u, strlen(has_c), (c3_y*)has_c); + roc = ur_cons(rot_u, has, roc); + } + + roc = ur_cons(rot_u, ur_coin64(rot_u, c3__arvo), + ur_cons(rot_u, ken, roc)); + + ur_jam(rot_u, roc, &len_d, &byt_y); + } + + // dispose off-loom structures + // + ur_nvec_free(&cod_u); + ur_root_free(rot_u); + } + + // write jam-buffer into pier + // + if ( c3n == _cu_rock_save(dir_c, eve_d, len_d, byt_y) ) { + ret_o = c3n; + } + + c3_free(byt_y); + + return ret_o; +} +#endif + +/* u3u_mmap_read(): open and mmap the file at [pat_c] for reading. +*/ +c3_o +u3u_mmap_read(c3_c* cap_c, c3_c* pat_c, c3_d* out_d, c3_y** out_y) +{ + c3_i fid_i; + c3_d len_d; + + // open file + // + if ( -1 == (fid_i = c3_open(pat_c, O_RDONLY, 0644)) ) { + fprintf(stderr, "%s: c3_open failed (%s): %s\r\n", + cap_c, pat_c, strerror(errno)); + return c3n; + } + + // measure file + // + { + struct stat buf_b; + + if ( -1 == fstat(fid_i, &buf_b) ) { + fprintf(stderr, "%s: stat failed (%s): %s\r\n", + cap_c, pat_c, strerror(errno)); + close(fid_i); + return c3n; + } + + len_d = buf_b.st_size; + } + + // mmap file + // + { + void* ptr_v; + + if ( MAP_FAILED == (ptr_v = mmap(0, len_d, PROT_READ, MAP_SHARED, fid_i, 0)) ) { + fprintf(stderr, "%s: mmap failed (%s): %s\r\n", + cap_c, pat_c, strerror(errno)); + close(fid_i); + return c3n; + } + + *out_d = len_d; + *out_y = (c3_y*)ptr_v; + } + + // close file + // + close(fid_i); + + return c3y; +} + +/* u3u_mmap(): open/create file-backed mmap at [pat_c] for read/write. +*/ +c3_o +u3u_mmap(c3_c* cap_c, c3_c* pat_c, c3_d len_d, c3_y** out_y) +{ + c3_i fid_i; + + // open file + // + if ( -1 == (fid_i = c3_open(pat_c, O_RDWR | O_CREAT | O_TRUNC, 0644)) ) { + fprintf(stderr, "%s: c3_open failed (%s): %s\r\n", + cap_c, pat_c, strerror(errno)); + return c3n; + } + + // grow [fid_i] to [len_w] + // + // XX build with _FILE_OFFSET_BITS == 64 ? + // + if ( 0 != ftruncate(fid_i, len_d) ) { + fprintf(stderr, "%s: ftruncate grow %s: %s\r\n", + cap_c, pat_c, strerror(errno)); + close(fid_i); + return c3n; + } + + // mmap file + // + { + void* ptr_v; + + if ( MAP_FAILED == (ptr_v = mmap(0, len_d, PROT_READ|PROT_WRITE, MAP_SHARED, fid_i, 0)) ) { + fprintf(stderr, "%s: mmap failed (%s): %s\r\n", + cap_c, pat_c, strerror(errno)); + close(fid_i); + return c3n; + } + + *out_y = (c3_y*)ptr_v; + } + + // close file + // + close(fid_i); + + return c3y; +} + +/* u3u_mmap_save(): sync file-backed mmap. +*/ +c3_o +u3u_mmap_save(c3_c* cap_c, c3_c* pat_c, c3_d len_d, c3_y* byt_y) +{ + if ( 0 != msync(byt_y, len_d, MS_SYNC) ) { + fprintf(stderr, "%s: msync %s: %s\r\n", cap_c, pat_c, strerror(errno)); + return c3n; + } + + return c3y; +} + +/* u3u_munmap(): unmap the region at [byt_y]. +*/ +c3_o +u3u_munmap(c3_d len_d, c3_y* byt_y) +{ + if ( 0 != munmap(byt_y, len_d) ) { + return c3n; + } + + return c3y; +} + +/* u3u_uncram(): restore persistent state from a rock. +*/ +c3_o +u3u_uncram(c3_c* dir_c, c3_d eve_d) +{ + c3_c* nam_c; + c3_d len_d; + c3_y* byt_y; + + // load rock file into buffer + // + if ( c3n == _cu_rock_path(dir_c, eve_d, &nam_c) ) { + fprintf(stderr, "uncram: failed to make rock path (%s, %" PRIu64 ")\r\n", + dir_c, eve_d); + return c3n; + } + else if ( c3n == u3u_mmap_read("rock", nam_c, &len_d, &byt_y) ) { + c3_free(nam_c); + return c3n; + } + + // bypassing page tracking as an optimization + // + // NB: u3m_foul() will mark all as dirty, and + // u3e_save() will reinstate protection flags + // + u3m_foul(); + + // reinitialize loom + // + // NB: hot jet state is not yet re-established + // + u3m_pave(c3y); + + // cue rock, restore persistent state + // + // XX errors are fatal, barring a full "u3m_reboot"-type operation. + // + { + // XX tune the initial dictionary size for less reallocation + // + u3_cue_xeno* sil_u = u3s_cue_xeno_init_with(ur_fib33, ur_fib34); + u3_weak ref = u3s_cue_xeno_with(sil_u, len_d, byt_y); + u3_noun roc, doc, tag, cod; + + u3s_cue_xeno_done(sil_u); + + if ( u3_none == ref ) { + fprintf(stderr, "uncram: failed to cue rock\r\n"); + c3_free(nam_c); + return c3n; + } + else if ( c3n == u3r_pq(ref, c3__arvo, &roc, &doc) + || (c3n == u3r_cell(doc, &tag, &cod)) + || (c3n == u3r_sing_c("hashboard", tag)) ) + { + fprintf(stderr, "uncram: failed: invalid rock format\r\n"); + u3z(ref); + c3_free(nam_c); + return c3n; + } + + u3A->roc = u3k(roc); + u3j_load(u3k(cod)); + + u3z(ref); + } + + u3u_munmap(len_d, byt_y); + + // allocate new hot jet state; re-establish warm + // + u3j_boot(c3y); + u3j_ream(); + + // restore event number + // + u3A->eve_d = eve_d; + + // leave rocks on disk + // + // if ( 0 != c3_unlink(nam_c) ) { + // fprintf(stderr, "uncram: failed to delete rock (%s, %" PRIu64 "): %s\r\n", + // dir_c, eve_d, strerror(errno)); + // c3_free(nam_c); + // return c3n; + // } + + c3_free(nam_c); + + return c3y; +} diff --git a/vere/pkg/noun/urth.h b/vere/pkg/noun/urth.h new file mode 100644 index 0000000..a11b9aa --- /dev/null +++ b/vere/pkg/noun/urth.h @@ -0,0 +1,49 @@ +/// @file + +#ifndef U3_URTH_H +#define U3_URTH_H + +#include "c3/c3.h" + + /** Functions. + **/ + /* u3u_meld(): globally deduplicate memory, returns u3a_open delta. + */ + c3_w + u3u_meld(void) __attribute__ ((deprecated)); + + /* u3u_melt(): globally deduplicate memory and pack in-place. + */ + c3_w + u3u_melt(void) __attribute__ ((deprecated)); + + /* u3u_cram(): globably deduplicate memory, and write a rock to disk. + */ + c3_o + u3u_cram(c3_c* dir_c, c3_d eve_d); + /* u3u_uncram(): restore persistent state from a rock. + */ + c3_o + u3u_uncram(c3_c* dir_c, c3_d eve_d); + + /* u3u_mmap_read(): open and mmap the file at [pat_c] for reading. + */ + c3_o + u3u_mmap_read(c3_c* cap_c, c3_c* pat_c, c3_d* out_d, c3_y** out_y); + + /* u3u_mmap(): open/create file-backed mmap at [pat_c] for read/write. + */ + c3_o + u3u_mmap(c3_c* cap_c, c3_c* pat_c, c3_d len_d, c3_y** out_y); + + /* u3u_mmap_save(): sync file-backed mmap. + */ + c3_o + u3u_mmap_save(c3_c* cap_c, c3_c* pat_c, c3_d len_d, c3_y* byt_y); + + /* u3u_munmap(): unmap the region at [byt_y]. + */ + c3_o + u3u_munmap(c3_d len_d, c3_y* byt_y); + +#endif /* ifndef U3_URTH_H */ diff --git a/vere/pkg/noun/version.h b/vere/pkg/noun/version.h new file mode 100644 index 0000000..88c6ac4 --- /dev/null +++ b/vere/pkg/noun/version.h @@ -0,0 +1,43 @@ +#ifndef U3_VERSION_H +#define U3_VERSION_H + +/* loom layout + */ +typedef c3_d u3v_version; + +#define U3V_VER1 (u3v_version)1 // 1.0 +#define U3V_VER2 (u3v_version)2 // 2.0: pointer compression +#define U3V_VER3 (u3v_version)3 // 3.0-rc: persistent memoization +#define U3V_VER4 (u3v_version)4 // 3.0: bytecode alignment +#define U3V_VER5 (u3v_version)5 // ?? palloc +#define U3V_VERLAT U3V_VER5 + +/* bytecode semantics (within u3v_version) + */ +typedef c3_w u3n_version; + +#define U3N_VER1 (u3n_version)0 // zero-indexedfor backcompat +#define U3N_VER2 (u3n_version)1 +#define U3N_VERLAT U3N_VER2 + +/* snapshot patch format + */ +typedef c3_w u3e_version; + +#define U3P_VER2 (u3e_version)2 // top-level checksum added +#define U3P_VERLAT U3P_VER2 + +/* top-level event log format + */ +#define U3D_VER1 1 // <= 2.0 +#define U3D_VER2 2 // migration to 3.0 in-progress +#define U3D_VER3 3 // 3.0 (epoch system) +#define U3D_VERLAT U3D_VER3 + +/* epoch layout +*/ +#define U3E_VER1 1 // north+south.bin +#define U3E_VER2 2 // image.bin +#define U3E_VERLAT U3E_VER2 + +#endif /* ifndef U3_VERSION_H */ diff --git a/vere/pkg/noun/verstable.h b/vere/pkg/noun/verstable.h new file mode 100644 index 0000000..e34cff0 --- /dev/null +++ b/vere/pkg/noun/verstable.h @@ -0,0 +1,1949 @@ +/*------------------------------------------------- VERSTABLE v2.1.1 --------------------------------------------------- + +Verstable is a C99-compatible, open-addressing hash table using quadratic probing and the following additions: + +* All keys that hash (i.e. "belong") to the same bucket (their "home bucket") are linked together by an 11-bit integer + specifying the quadratic displacement, relative to that bucket, of the next key in the chain. + +* If a chain of keys exists for a given bucket, then it always begins at that bucket. To maintain this policy, a 1-bit + flag is used to mark whether the key occupying a bucket belongs there. When inserting a new key, if the bucket it + belongs to is occupied by a key that does not belong there, then the occupying key is evicted and the new key takes + the bucket. + +* A 4-bit fragment of each key's hash code is also stored. + +* The aforementioned metadata associated with each bucket (the 4-bit hash fragment, the 1-bit flag, and the 11-bit link + to the next key in the chain) are stored together in a uint16_t array rather than in the bucket alongside the key and + (optionally) the value. + +One way to conceptualize this scheme is as a chained hash table in which overflowing keys are stored not in separate +memory allocations but in otherwise unused buckets. In this regard, it shares similarities with Malte Skarupke's Bytell +hash table (https://www.youtube.com/watch?v=M2fKMP47slQ) and traditional "coalesced hashing". + +Advantages of this scheme include: + +* Fast lookups impervious to load factor: If the table contains any key belonging to the lookup key's home bucket, then + that bucket contains the first in a traversable chain of all keys belonging to it. Hence, only the home bucket and + other buckets containing keys belonging to it are ever probed. Moreover, the stored hash fragments allow skipping most + non-matching keys in the chain without accessing the actual buckets array or calling the (potentially expensive) key + comparison function. + +* Fast insertions: Insertions are faster than they are in other schemes that move keys around (e.g. Robin Hood) because + they only move, at most, one existing key. + +* Fast, tombstone-free deletions: Deletions, which usually require tombstones in quadratic-probing hash tables, are + tombstone-free and only move, at most, one existing key. + +* Fast iteration: The separate metadata array allows keys in sparsely populated tables to be found without incurring the + frequent cache misses that would result from traversing the buckets array. + +Usage example: + + +---------------------------------------------------------+----------------------------------------------------------+ + | Using the generic macro API (C11 and later): | Using the prefixed functions API (C99 and later): | + |---------------------------------------------------------+----------------------------------------------------------+ + | #include | #include | + | | | + | // Instantiating a set template. | // Instantiating a set template. | + | #define NAME int_set | #define NAME int_set | + | #define KEY_TY int | #define KEY_TY int | + | #include "verstable.h" | #define HASH_FN vt_hash_integer | + | | #define CMPR_FN vt_cmpr_integer | + | // Instantiating a map template. | #include "verstable.h" | + | #define NAME int_int_map | | + | #define KEY_TY int | // Instantiating a map template. | + | #define VAL_TY int | #define NAME int_int_map | + | #include "verstable.h" | #define KEY_TY int | + | | #define VAL_TY int | + | int main( void ) | #define HASH_FN vt_hash_integer | + | { | #define CMPR_FN vt_cmpr_integer | + | // Set. | #include "verstable.h" | + | | | + | int_set our_set; | int main( void ) | + | vt_init( &our_set ); | { | + | | // Set. | + | // Inserting keys. | | + | for( int i = 0; i < 10; ++i ) | int_set our_set; | + | { | int_set_init( &our_set ); | + | int_set_itr itr = vt_insert( &our_set, i ); | | + | if( vt_is_end( itr ) ) | // Inserting keys. | + | { | for( int i = 0; i < 10; ++i ) | + | // Out of memory, so abort. | { | + | vt_cleanup( &our_set ); | int_set_itr itr = | + | return 1; | int_set_insert( &our_set, i ); | + | } | if( int_set_is_end( itr ) ) | + | } | { | + | | // Out of memory, so abort. | + | // Erasing keys. | int_set_cleanup( &our_set ); | + | for( int i = 0; i < 10; i += 3 ) | return 1; | + | vt_erase( &our_set, i ); | } | + | | } | + | // Retrieving keys. | | + | for( int i = 0; i < 10; ++i ) | // Erasing keys. | + | { | for( int i = 0; i < 10; i += 3 ) | + | int_set_itr itr = vt_get( &our_set, i ); | int_set_erase( &our_set, i ); | + | if( !vt_is_end( itr ) ) | | + | printf( "%d ", itr.data->key ); | // Retrieving keys. | + | } | for( int i = 0; i < 10; ++i ) | + | // Printed: 1 2 4 5 7 8 | { | + | | int_set_itr itr = int_set_get( &our_set, i ); | + | // Iteration. | if( !int_set_is_end( itr ) ) | + | for( | printf( "%d ", itr.data->key ); | + | int_set_itr itr = vt_first( &our_set ); | } | + | !vt_is_end( itr ); | // Printed: 1 2 4 5 7 8 | + | itr = vt_next( itr ) | | + | ) | // Iteration. | + | printf( "%d ", itr.data->key ); | for( | + | // Printed: 2 4 7 1 5 8 | int_set_itr itr = | + | | int_set_first( &our_set ); | + | vt_cleanup( &our_set ); | !int_set_is_end( itr ); | + | | itr = int_set_next( itr ) | + | // Map. | ) | + | | printf( "%d ", itr.data->key ); | + | int_int_map our_map; | // Printed: 2 4 7 1 5 8 | + | vt_init( &our_map ); | | + | | int_set_cleanup( &our_set ); | + | // Inserting keys and values. | | + | for( int i = 0; i < 10; ++i ) | // Map. | + | { | | + | int_int_map_itr itr = | int_int_map our_map; | + | vt_insert( &our_map, i, i + 1 ); | int_int_map_init( &our_map ); | + | if( vt_is_end( itr ) ) | | + | { | // Inserting keys and values. | + | // Out of memory, so abort. | for( int i = 0; i < 10; ++i ) | + | vt_cleanup( &our_map ); | { | + | return 1; | int_int_map_itr itr = | + | } | int_int_map_insert( &our_map, i, i + 1 ); | + | } | if( int_int_map_is_end( itr ) ) | + | | { | + | // Erasing keys and values. | // Out of memory, so abort. | + | for( int i = 0; i < 10; i += 3 ) | int_int_map_cleanup( &our_map ); | + | vt_erase( &our_map, i ); | return 1; | + | | } | + | // Retrieving keys and values. | } | + | for( int i = 0; i < 10; ++i ) | | + | { | // Erasing keys and values. | + | int_int_map_itr itr = vt_get( &our_map, i ); | for( int i = 0; i < 10; i += 3 ) | + | if( !vt_is_end( itr ) ) | int_int_map_erase( &our_map, i ); | + | printf( | | + | "%d:%d ", | // Retrieving keys and values. | + | itr.data->key, | for( int i = 0; i < 10; ++i ) | + | itr.data->val | { | + | ); | int_int_map_itr itr = | + | } | int_int_map_get( &our_map, i ); | + | // Printed: 1:2 2:3 4:5 5:6 7:8 8:9 | if( !int_int_map_is_end( itr ) ) | + | | printf( | + | // Iteration. | "%d:%d ", | + | for( | itr.data->key, | + | int_int_map_itr itr = vt_first( &our_map ); | itr.data->val | + | !vt_is_end( itr ); | ); | + | itr = vt_next( itr ) | } | + | ) | // Printed: 1:2 2:3 4:5 5:6 7:8 8:9 | + | printf( | | + | "%d:%d ", | // Iteration. | + | itr.data->key, | for( | + | itr.data->val | int_int_map_itr itr = | + | ); | int_int_map_first( &our_map ); | + | // Printed: 2:3 4:5 7:8 1:2 5:6 8:9 | !int_int_map_is_end( itr ); | + | | itr = int_int_map_next( itr ) | + | vt_cleanup( &our_map ); | ) | + | } | printf( | + | | "%d:%d ", | + | | itr.data->key, | + | | itr.data->val | + | | ); | + | | // Printed: 2:3 4:5 7:8 1:2 5:6 8:9 | + | | | + | | int_int_map_cleanup( &our_map ); | + | | } | + | | | + +---------------------------------------------------------+----------------------------------------------------------+ + +API: + + Instantiating a hash table template: + + Create a new hash table type in the following manner: + + #define NAME + #define KEY_TY + #include "verstable.h" + + The NAME macro specifies the name of hash table type that the library will declare, the prefix for the functions + associated with it, and the prefix for the associated iterator type. + + The KEY_TY macro specifies the key type. + + In C99, it is also always necessary to define HASH_FN and CMPR_FN (see below) before including the header. + + The following macros may also be defined before including the header: + + #define VAL_TY + + The type of the value associated with each key. + If this macro is defined, the hash table acts as a map associating keys with values. + Otherwise, it acts as a set containing only keys. + + #define HASH_FN + + The name of the existing function used to hash each key. + The function should have the signature uint64_t ( KEY_TY key ) and return a 64-bit hash code. + For best performance, the hash function should provide a high level of entropy across all bits. + There are two default hash functions: vt_hash_integer for all integer types up to 64 bits in size, and + vt_hash_string for NULL-terminated strings (i.e. char *). + When KEY_TY is one of such types and the compiler is in C11 mode or later, HASH_FN may be left undefined, in + which case the appropriate default function is inferred from KEY_TY. + Otherwise, HASH_FN must be defined. + + #define CMPR_FN + + The name of the existing function used to compare two keys. + The function should have the signature bool ( KEY_TY key_1, KEY_TY key_2 ) and return true if the two keys are + equal. + There are two default comparison functions: vt_cmpr_integer for all integer types up to 64 bits in size, and + vt_cmpr_string for NULL-terminated strings (i.e. char *). + As with the default hash functions, in C11 or later the appropriate default comparison function is inferred if + KEY_TY is one of such types and CMPR_FN is left undefined. + Otherwise, CMPR_FN must be defined. + + #define MAX_LOAD + + The floating-point load factor at which the hash table automatically doubles the size of its internal buckets + array. + The default is 0.9, i.e. 90%. + + #define KEY_DTOR_FN + + The name of the existing destructor function, with the signature void ( KEY_TY key ), called on a key when it is + erased from the table or replaced by a newly inserted key. + The API functions that may call the key destructor are NAME_insert, NAME_erase, NAME_erase_itr, NAME_clear, + and NAME_cleanup. + + #define VAL_DTOR_FN + + The name of the existing destructor function, with the signature void ( VAL_TY val ), called on a value when it + is erased from the table or replaced by a newly inserted value. + The API functions that may call the value destructor are NAME_insert, NAME_erase, NAME_erase_itr, NAME_clear, + and NAME_cleanup. + + #define CTX_TY + + The type of the hash table type's ctx (context) member. + This member only exists if CTX_TY was defined. + It is intended to be used in conjunction with MALLOC_FN and FREE_FN (see below). + + #define MALLOC_FN + + The name of the existing function used to allocate memory. + If CTX_TY was defined, the signature should be void *( size_t size, CTX_TY *ctx ), where size is the number of + bytes to allocate and ctx points to the table's ctx member. + Otherwise, the signature should be void *( size_t size ). + The default wraps stdlib.h's malloc. + + #define FREE_FN + + The name of the existing function used to free memory. + If CTX_TY was defined, the signature should be void ( void *ptr, size_t size, CTX_TY *ctx ), where ptr points to + the memory to free, size is the number of bytes that were allocated, and ctx points to the table's ctx member. + Otherwise, the signature should be void ( void *ptr, size_t size ). + The default wraps stdlib.h's free. + + #define HEADER_MODE + #define IMPLEMENTATION_MODE + + By default, all hash table functions are defined as static inline functions, the intent being that a given hash + table template should be instantiated once per translation unit; for best performance, this is the recommended + way to use the library. + However, it is also possible separate the struct definitions and function declarations from the function + definitions such that one implementation can be shared across all translation units (as in a traditional header + and source file pair). + In that case, instantiate a template wherever it is needed by defining HEADER_MODE, along with only NAME, + KEY_TY, and (optionally) VAL_TY, CTX_TY, and header guards, and including the library, e.g.: + + #ifndef INT_INT_MAP_H + #define INT_INT_MAP_H + #define NAME int_int_map + #define KEY_TY int + #define VAL_TY int + #define HEADER_MODE + #include "verstable.h" + #endif + + In one source file, define IMPLEMENTATION_MODE, along with NAME, KEY_TY, and any of the aforementioned optional + macros, and include the library, e.g.: + + #define NAME int_int_map + #define KEY_TY int + #define VAL_TY int + #define HASH_FN vt_hash_integer // C99. + #define CMPR_FN vt_cmpr_integer // C99. + #define MAX_LOAD 0.8 + #define IMPLEMENTATION_MODE + #include "verstable.h" + + Including the library automatically undefines all the aforementioned macros after they have been used to instantiate + the template. + + Functions: + + The functions associated with a hash table type are all prefixed with the name the user supplied via the NAME macro. + In C11 and later, the generic "vt_"-prefixed macros may be used to automatically select the correct version of the + specified function based on the arguments. + + void NAME_init( NAME *table ) + void NAME_init( NAME *table, CTX_TY ctx ) + // C11 generic macro: vt_init. + + Initializes the table for use. + If CTX_TY was defined, ctx sets the table's ctx member. + + bool NAME_init_clone( NAME *table, NAME *source ) + bool NAME_init_clone( NAME *table, NAME *source, CTX_TY ctx ) + // C11 generic macro: vt_init_clone. + + Initializes the table as a shallow copy of the specified source table. + If CTX_TY was defined, ctx sets the table's ctx member. + Returns false in the case of memory allocation failure. + + size_t NAME_size( NAME *table ) // C11 generic macro: vt_size. + + Returns the number of keys currently in the table. + + size_t NAME_bucket_count( NAME *table ) // C11 generic macro: vt_bucket_count. + + Returns the table's current bucket count. + + NAME_itr NAME_insert( NAME *table, KEY_TY key ) + NAME_itr NAME_insert( NAME *table, KEY_TY key, VAL_TY val ) + // C11 generic macro: vt_insert. + + Inserts the specified key (and value, if VAL_TY was defined) into the hash table. + If the same key already exists, then the new key (and value) replaces the existing key (and value). + Returns an iterator to the new key, or an end iterator in the case of memory allocation failure. + + NAME_itr NAME_get_or_insert( NAME *table, KEY_TY key ) + NAME_itr NAME_get_or_insert( NAME *table, KEY_TY key, VAL_TY val ) + // C11 generic macro: vt_get_or_insert. + + Inserts the specified key (and value, if VAL_TY was defined) if it does not already exist in the table. + Returns an iterator to the new key if it was inserted, or an iterator to the existing key, or an end iterator if + the key did not exist but the new key could not be inserted because of memory allocation failure. + Determine whether the key was inserted by comparing the table's size before and after the call. + + NAME_itr NAME_get( NAME *table, KEY_TY key ) // C11 generic macro: vt_get. + + Returns a iterator to the specified key, or an end iterator if no such key exists. + + bool NAME_erase( NAME *table, KEY_TY key ) // C11 generic macro: vt_erase. + + Erases the specified key (and associated value, if VAL_TY was defined), if it exists. + Returns true if a key was erased. + + NAME_itr NAME_erase_itr( NAME *table, NAME_itr itr ) // C11 generic macro: vt_erase_itr. + + Erases the key (and associated value, if VAL_TY was defined) pointed to by the specified iterator. + Returns an iterator to the next key in the table, or an end iterator if the erased key was the last one. + + bool NAME_reserve( NAME *table, size_t size ) // C11 generic macro: vt_reserve. + + Ensures that the bucket count is large enough to support the specified key count (i.e. size) without rehashing. + Returns false if unsuccessful due to memory allocation failure. + + bool NAME_shrink( NAME *table ) // C11 generic macro: vt_shrink. + + Shrinks the bucket count to best accommodate the current size. + Returns false if unsuccessful due to memory allocation failure. + + NAME_itr NAME_first( NAME *table ) // C11 generic macro: vt_first. + + Returns an iterator to the first key in the table, or an end iterator if the table is empty. + + bool NAME_is_end( NAME *table, NAME_itr itr ) // C11 generic macro: vt_is_end. + + Returns true if the iterator is an end iterator. + + NAME_itr NAME_next( NAME_itr itr ) // C11 generic macro: vt_next. + + Returns an iterator to the key after the one pointed to by the specified iterator, or an end iterator if the + specified iterator points to the last key in the table. + + void NAME_clear( NAME *table ) // C11 generic macro: vt_clear. + + Erases all keys (and values, if VAL_TY was defined) in the table. + + void NAME_cleanup( NAME *table ) // C11 generic macro: vt_cleanup. + + Erases all keys (and values, if VAL_TY was defined) in the table, frees all memory associated with it, and + initializes it for reuse. + + Iterators: + + Access the key (and value, if VAL_TY was defined) that an iterator points to using the NAME_itr struct's data + member: + + itr.data->key + itr.data->val + + Functions that may insert new keys (NAME_insert and NAME_get_or_insert), erase keys (NAME_erase and NAME_erase_itr), + or reallocate the internal bucket array (NAME_reserve and NAME_shrink) invalidate all exiting iterators. + To delete keys during iteration and resume iterating, use the return value of NAME_erase_itr. + +Version history: + + 18/06/2024 2.1.1: Fixed a bug affecting iteration on big-endian platforms under MSVC. + 27/05/2024 2.1.0: Replaced the Murmur3 mixer with the fast-hash mixer as the default integer hash function. + Fixed a bug that could theoretically cause a crash on rehash (triggerable in testing using + NAME_shrink with a maximum load factor significantly higher than 1.0). + 06/02/2024 2.0.0: Improved custom allocator support by introducing the CTX_TY option and allowing user-supplied free + functions to receive the allocation size. + Improved documentation. + Introduced various optimizations, including storing the buckets-array size mask instead of the + bucket count, eliminating empty-table checks, combining the buckets memory and metadata memory into + one allocation, and adding branch prediction macros. + Fixed a bug that caused a key to be used after destruction during erasure. + 12/12/2023 1.0.0: Initial release. + +License (MIT): + + Copyright (c) 2023-2024 Jackson L. Allan + + 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. + +*/ + +/*--------------------------------------------------------------------------------------------------------------------*/ +/* Common header section */ +/*--------------------------------------------------------------------------------------------------------------------*/ + +#ifndef VERSTABLE_H +#define VERSTABLE_H + +#include +#include +#include +#include +#include +#include + +// Two-way concatenation macro. +#define VT_CAT_( a, b ) a##b +#define VT_CAT( a, b ) VT_CAT_( a, b ) + +// Branch optimization macros. +#ifdef __GNUC__ +#define VT_LIKELY( expression ) __builtin_expect( (bool)( expression ), true ) +#define VT_UNLIKELY( expression ) __builtin_expect( (bool)( expression ), false ) +#else +#define VT_LIKELY( expression ) ( expression ) +#define VT_UNLIKELY( expression ) ( expression ) +#endif + +// Masks for manipulating and extracting data from a bucket's uint16_t metadatum. +#define VT_EMPTY 0x0000 +#define VT_HASH_FRAG_MASK 0xF000 // 0b1111000000000000. +#define VT_IN_HOME_BUCKET_MASK 0x0800 // 0b0000100000000000. +#define VT_DISPLACEMENT_MASK 0x07FF // 0b0000011111111111, also denotes the displacement limit. Set to VT_LOAD to 1.0 + // to test proper handling of encroachment on the displacement limit during + // inserts. + +// Extracts a hash fragment from a uint64_t hash code. +// We take the highest four bits so that keys that map (via modulo) to the same bucket have distinct hash fragments. +static inline uint16_t vt_hashfrag( uint64_t hash ) +{ + return ( hash >> 48 ) & VT_HASH_FRAG_MASK; +} + +// Standard quadratic probing formula that guarantees that all buckets are visited when the bucket count is a power of +// two (at least in theory, because the displacement limit could terminate the search early when the bucket count is +// high). +static inline size_t vt_quadratic( uint16_t displacement ) +{ + return ( (size_t)displacement * displacement + displacement ) / 2; +} + +#define VT_MIN_NONZERO_BUCKET_COUNT 8 // Must be a power of two. + +// Function to find the left-most non-zero uint16_t in a uint64_t. +// This function is used when we scan four buckets at a time while iterating and relies on compiler intrinsics wherever +// possible. + +#if defined( __GNUC__ ) && ULLONG_MAX == 0xFFFFFFFFFFFFFFFF + +static inline int vt_first_nonzero_uint16( uint64_t val ) +{ + const uint16_t endian_checker = 0x0001; + if( *(const char *)&endian_checker ) // Little-endian (the compiler will optimize away the check at -O1 and above). + return __builtin_ctzll( val ) / 16; + + return __builtin_clzll( val ) / 16; +} + +#elif defined( _MSC_VER ) && ( defined( _M_X64 ) || defined( _M_ARM64 ) ) + +#include +#pragma intrinsic(_BitScanForward64) +#pragma intrinsic(_BitScanReverse64) + +static inline int vt_first_nonzero_uint16( uint64_t val ) +{ + unsigned long result; + + const uint16_t endian_checker = 0x0001; + if( *(const char *)&endian_checker ) + _BitScanForward64( &result, val ); + else + { + _BitScanReverse64( &result, val ); + result = 63 - result; + } + + return result / 16; +} + +#else + +static inline int vt_first_nonzero_uint16( uint64_t val ) +{ + int result = 0; + + uint32_t half; + memcpy( &half, &val, sizeof( uint32_t ) ); + if( !half ) + result += 2; + + uint16_t quarter; + memcpy( &quarter, (char *)&val + result * sizeof( uint16_t ), sizeof( uint16_t ) ); + if( !quarter ) + result += 1; + + return result; +} + +#endif + +// When the bucket count is zero, setting the metadata pointer to point to a VT_EMPTY placeholder, rather than NULL, +// allows us to avoid checking for a zero bucket count during insertion and lookup. +static const uint16_t vt_empty_placeholder_metadatum = VT_EMPTY; + +// Default hash and comparison functions. + +// Fast-hash, as described by https://jonkagstrom.com/bit-mixer-construction and +// https://code.google.com/archive/p/fast-hash. +// In testing, this hash function provided slightly better performance than the Murmur3 mixer. +static inline uint64_t vt_hash_integer( uint64_t key ) +{ + key ^= key >> 23; + key *= 0x2127599bf4325c37ull; + key ^= key >> 47; + return key; +} + +// FNV-1a. +static inline uint64_t vt_hash_string( char *key ) +{ + uint64_t hash = 0xcbf29ce484222325ull; + while( *key ) + hash = ( (unsigned char)*key++ ^ hash ) * 0x100000001b3ull; + + return hash; +} + +static inline bool vt_cmpr_integer( uint64_t key_1, uint64_t key_2 ) +{ + return key_1 == key_2; +} + +static inline bool vt_cmpr_string( char *key_1, char *key_2 ) +{ + return strcmp( key_1, key_2 ) == 0; +} + +// Default allocation and free functions. + +static inline void *vt_malloc( size_t size ) +{ + return malloc( size ); +} + +static inline void vt_free( void *ptr, size_t size ) +{ + (void)size; + free( ptr ); +} + +static inline void *vt_malloc_with_ctx( size_t size, void *ctx ) +{ + (void)ctx; + return malloc( size ); +} + +static inline void vt_free_with_ctx( void *ptr, size_t size, void *ctx ) +{ + (void)size; + (void)ctx; + free( ptr ); +} + +// The rest of the common header section pertains to the C11 generic macro API. +// This interface is based on the extendible-_Generic mechanism documented in detail at +// https://github.com/JacksonAllan/CC/blob/main/articles/Better_C_Generics_Part_1_The_Extendible_Generic.md. +// In summary, instantiating a template also defines wrappers for the template's types and functions with names in the +// pattern of vt_table_NNNN and vt_init_NNNN, where NNNN is an automatically generated integer unique to the template +// instance in the current translation unit. +// These wrappers plug in to _Generic-based API macros, which use preprocessor magic to automatically generate _Generic +// slots for every existing template instance. +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined( VT_NO_C11_GENERIC_API ) + +// Octal counter that supports up to 511 hash table templates. +#define VT_TEMPLATE_COUNT_D1 0 // Digit 1, i.e. least significant digit. +#define VT_TEMPLATE_COUNT_D2 0 +#define VT_TEMPLATE_COUNT_D3 0 + +// Four-way concatenation macro. +#define VT_CAT_4_( a, b, c, d ) a##b##c##d +#define VT_CAT_4( a, b, c, d ) VT_CAT_4_( a, b, c, d ) + +// Provides the current value of the counter as a three-digit octal number preceded by 0. +#define VT_TEMPLATE_COUNT VT_CAT_4( 0, VT_TEMPLATE_COUNT_D3, VT_TEMPLATE_COUNT_D2, VT_TEMPLATE_COUNT_D1 ) + +// _Generic-slot generation macros. + +#define VT_GENERIC_SLOT( ty, fn, n ) , VT_CAT( ty, n ): VT_CAT( fn, n ) +#define VT_R1_0( ty, fn, d3, d2 ) +#define VT_R1_1( ty, fn, d3, d2 ) VT_GENERIC_SLOT( ty, fn, VT_CAT_4( 0, d3, d2, 0 ) ) +#define VT_R1_2( ty, fn, d3, d2 ) VT_GENERIC_SLOT( ty, fn, VT_CAT_4( 0, d3, d2, 1 ) ) VT_R1_1( ty, fn, d3, d2 ) +#define VT_R1_3( ty, fn, d3, d2 ) VT_GENERIC_SLOT( ty, fn, VT_CAT_4( 0, d3, d2, 2 ) ) VT_R1_2( ty, fn, d3, d2 ) +#define VT_R1_4( ty, fn, d3, d2 ) VT_GENERIC_SLOT( ty, fn, VT_CAT_4( 0, d3, d2, 3 ) ) VT_R1_3( ty, fn, d3, d2 ) +#define VT_R1_5( ty, fn, d3, d2 ) VT_GENERIC_SLOT( ty, fn, VT_CAT_4( 0, d3, d2, 4 ) ) VT_R1_4( ty, fn, d3, d2 ) +#define VT_R1_6( ty, fn, d3, d2 ) VT_GENERIC_SLOT( ty, fn, VT_CAT_4( 0, d3, d2, 5 ) ) VT_R1_5( ty, fn, d3, d2 ) +#define VT_R1_7( ty, fn, d3, d2 ) VT_GENERIC_SLOT( ty, fn, VT_CAT_4( 0, d3, d2, 6 ) ) VT_R1_6( ty, fn, d3, d2 ) +#define VT_R1_8( ty, fn, d3, d2 ) VT_GENERIC_SLOT( ty, fn, VT_CAT_4( 0, d3, d2, 7 ) ) VT_R1_7( ty, fn, d3, d2 ) +#define VT_R2_0( ty, fn, d3 ) +#define VT_R2_1( ty, fn, d3 ) VT_R1_8( ty, fn, d3, 0 ) +#define VT_R2_2( ty, fn, d3 ) VT_R1_8( ty, fn, d3, 1 ) VT_R2_1( ty, fn, d3 ) +#define VT_R2_3( ty, fn, d3 ) VT_R1_8( ty, fn, d3, 2 ) VT_R2_2( ty, fn, d3 ) +#define VT_R2_4( ty, fn, d3 ) VT_R1_8( ty, fn, d3, 3 ) VT_R2_3( ty, fn, d3 ) +#define VT_R2_5( ty, fn, d3 ) VT_R1_8( ty, fn, d3, 4 ) VT_R2_4( ty, fn, d3 ) +#define VT_R2_6( ty, fn, d3 ) VT_R1_8( ty, fn, d3, 5 ) VT_R2_5( ty, fn, d3 ) +#define VT_R2_7( ty, fn, d3 ) VT_R1_8( ty, fn, d3, 6 ) VT_R2_6( ty, fn, d3 ) +#define VT_R2_8( ty, fn, d3 ) VT_R1_8( ty, fn, d3, 7 ) VT_R2_7( ty, fn, d3 ) +#define VT_R3_0( ty, fn ) +#define VT_R3_1( ty, fn ) VT_R2_8( ty, fn, 0 ) +#define VT_R3_2( ty, fn ) VT_R2_8( ty, fn, 1 ) VT_R3_1( ty, fn ) +#define VT_R3_3( ty, fn ) VT_R2_8( ty, fn, 2 ) VT_R3_2( ty, fn ) +#define VT_R3_4( ty, fn ) VT_R2_8( ty, fn, 3 ) VT_R3_3( ty, fn ) +#define VT_R3_5( ty, fn ) VT_R2_8( ty, fn, 4 ) VT_R3_4( ty, fn ) +#define VT_R3_6( ty, fn ) VT_R2_8( ty, fn, 5 ) VT_R3_5( ty, fn ) +#define VT_R3_7( ty, fn ) VT_R2_8( ty, fn, 6 ) VT_R3_6( ty, fn ) + +#define VT_GENERIC_SLOTS( ty, fn ) \ +VT_CAT( VT_R1_, VT_TEMPLATE_COUNT_D1 )( ty, fn, VT_TEMPLATE_COUNT_D3, VT_TEMPLATE_COUNT_D2 ) \ +VT_CAT( VT_R2_, VT_TEMPLATE_COUNT_D2 )( ty, fn, VT_TEMPLATE_COUNT_D3 ) \ +VT_CAT( VT_R3_, VT_TEMPLATE_COUNT_D3 )( ty, fn ) \ + +// Actual generic API macros. + +// vt_init must be handled as a special case because it could take one or two arguments, depending on whether CTX_TY +// was defined. +#define VT_ARG_3( _1, _2, _3, ... ) _3 +#define vt_init( ... ) VT_ARG_3( __VA_ARGS__, vt_init_with_ctx, vt_init_without_ctx, )( __VA_ARGS__ ) +#define vt_init_without_ctx( table ) _Generic( *( table ) VT_GENERIC_SLOTS( vt_table_, vt_init_ ) )( table ) +#define vt_init_with_ctx( table, ... ) _Generic( *( table ) \ + VT_GENERIC_SLOTS( vt_table_, vt_init_ ) \ +)( table, __VA_ARGS__ ) \ + +#define vt_init_clone( table, ... ) _Generic( *( table ) \ + VT_GENERIC_SLOTS( vt_table_, vt_init_clone_ ) \ +)( table, __VA_ARGS__ ) \ + +#define vt_size( table )_Generic( *( table ) VT_GENERIC_SLOTS( vt_table_, vt_size_ ) )( table ) + +#define vt_bucket_count( table ) _Generic( *( table ) VT_GENERIC_SLOTS( vt_table_, vt_bucket_count_ ) )( table ) + +#define vt_is_end( itr ) _Generic( itr VT_GENERIC_SLOTS( vt_table_itr_, vt_is_end_ ) )( itr ) + +#define vt_insert( table, ... ) _Generic( *( table ) VT_GENERIC_SLOTS( vt_table_, vt_insert_ ) )( table, __VA_ARGS__ ) + +#define vt_get_or_insert( table, ... ) _Generic( *( table ) \ + VT_GENERIC_SLOTS( vt_table_, vt_get_or_insert_ ) \ +)( table, __VA_ARGS__ ) \ + +#define vt_get( table, ... ) _Generic( *( table ) VT_GENERIC_SLOTS( vt_table_, vt_get_ ) )( table, __VA_ARGS__ ) + +#define vt_erase( table, ... ) _Generic( *( table ) VT_GENERIC_SLOTS( vt_table_, vt_erase_ ) )( table, __VA_ARGS__ ) + +#define vt_next( itr ) _Generic( itr VT_GENERIC_SLOTS( vt_table_itr_, vt_next_ ) )( itr ) + +#define vt_erase_itr( table, ... ) _Generic( *( table ) \ + VT_GENERIC_SLOTS( vt_table_, vt_erase_itr_ ) \ +)( table, __VA_ARGS__ ) \ + +#define vt_reserve( table, ... ) _Generic( *( table ) VT_GENERIC_SLOTS( vt_table_, vt_reserve_ ) )( table, __VA_ARGS__ ) + +#define vt_shrink( table ) _Generic( *( table ) VT_GENERIC_SLOTS( vt_table_, vt_shrink_ ) )( table ) + +#define vt_first( table ) _Generic( *( table ) VT_GENERIC_SLOTS( vt_table_, vt_first_ ) )( table ) + +#define vt_clear( table ) _Generic( *( table ) VT_GENERIC_SLOTS( vt_table_, vt_clear_ ) )( table ) + +#define vt_cleanup( table ) _Generic( *( table ) VT_GENERIC_SLOTS( vt_table_, vt_cleanup_ ) )( table ) + +#endif + +#endif + +/*--------------------------------------------------------------------------------------------------------------------*/ +/* Prefixed structs */ +/*--------------------------------------------------------------------------------------------------------------------*/ + +#ifndef IMPLEMENTATION_MODE + +typedef struct +{ + KEY_TY key; + #ifdef VAL_TY + VAL_TY val; + #endif +} VT_CAT( NAME, _bucket ); + +typedef struct +{ + VT_CAT( NAME, _bucket ) *data; + uint16_t *metadatum; + uint16_t *metadata_end; // Iterators carry an internal end pointer so that NAME_is_end does not need the table to be + // passed in as an argument. + // This also allows for the zero-bucket-count check to occur once in NAME_first, rather than + // repeatedly in NAME_is_end. + size_t home_bucket; // SIZE_MAX if home bucket is unknown. +} VT_CAT( NAME, _itr ); + +typedef struct +{ + size_t key_count; + size_t buckets_mask; // Rather than storing the bucket count directly, we store the bit mask used to reduce a hash + // code or displacement-derived bucket index to the buckets array, i.e. the bucket count minus + // one. + // Consequently, a zero bucket count (i.e. when .metadata points to the placeholder) constitutes + // a special case, represented by all bits unset (i.e. zero). + VT_CAT( NAME, _bucket ) *buckets; + uint16_t *metadata; // As described above, each metadatum consists of a 4-bit hash-code fragment (X), a 1-bit flag + // indicating whether the key in this bucket begins a chain associated with the bucket (Y), and + // an 11-bit value indicating the quadratic displacement of the next key in the chain (Z): + // XXXXYZZZZZZZZZZZ. + #ifdef CTX_TY + CTX_TY ctx; + #endif +} NAME; + +#endif + +/*--------------------------------------------------------------------------------------------------------------------*/ +/* Function prototypes */ +/*--------------------------------------------------------------------------------------------------------------------*/ + +#if defined( HEADER_MODE ) || defined( IMPLEMENTATION_MODE ) +#define VT_API_FN_QUALIFIERS +#else +#define VT_API_FN_QUALIFIERS static inline +#endif + +#ifndef IMPLEMENTATION_MODE + +VT_API_FN_QUALIFIERS void VT_CAT( NAME, _init )( + NAME * + #ifdef CTX_TY + , CTX_TY + #endif +); + +VT_API_FN_QUALIFIERS bool VT_CAT( NAME, _init_clone )( + NAME *, + NAME * + #ifdef CTX_TY + , CTX_TY + #endif +); + +VT_API_FN_QUALIFIERS size_t VT_CAT( NAME, _size )( NAME * ); + +VT_API_FN_QUALIFIERS size_t VT_CAT( NAME, _bucket_count )( NAME * ); + +VT_API_FN_QUALIFIERS bool VT_CAT( NAME, _is_end )( VT_CAT( NAME, _itr ) ); + +VT_API_FN_QUALIFIERS VT_CAT( NAME, _itr ) VT_CAT( NAME, _insert )( + NAME *, + KEY_TY + #ifdef VAL_TY + , VAL_TY + #endif +); + +VT_API_FN_QUALIFIERS VT_CAT( NAME, _itr ) VT_CAT( NAME, _get_or_insert )( + NAME *, + KEY_TY + #ifdef VAL_TY + , VAL_TY + #endif +); + +VT_API_FN_QUALIFIERS VT_CAT( NAME, _itr ) VT_CAT( NAME, _get )( + NAME *table, + KEY_TY key +); + +VT_API_FN_QUALIFIERS bool VT_CAT( NAME, _erase )( NAME *, KEY_TY ); + +VT_API_FN_QUALIFIERS VT_CAT( NAME, _itr ) VT_CAT( NAME, _next )( VT_CAT( NAME, _itr ) ); + +VT_API_FN_QUALIFIERS bool VT_CAT( NAME, _reserve )( NAME *, size_t ); + +VT_API_FN_QUALIFIERS bool VT_CAT( NAME, _shrink )( NAME * ); + +VT_API_FN_QUALIFIERS VT_CAT( NAME, _itr ) VT_CAT( NAME, _first )( NAME * ); + +VT_API_FN_QUALIFIERS void VT_CAT( NAME, _clear )( NAME * ); + +VT_API_FN_QUALIFIERS void VT_CAT( NAME, _cleanup )( NAME * ); + +// Not an API function, but must be prototyped anyway because it is called by the inline NAME_erase_itr below. +VT_API_FN_QUALIFIERS bool VT_CAT( NAME, _erase_itr_raw ) ( NAME *, VT_CAT( NAME, _itr ) ); + +// Erases the key pointed to by itr and returns an iterator to the next key in the table. +// This function must be inlined to ensure that the compiler optimizes away the NAME_fast_forward call if the returned +// iterator is discarded. +#ifdef __GNUC__ +static inline __attribute__((always_inline)) +#elif defined( _MSC_VER ) +static __forceinline +#else +static inline +#endif +VT_CAT( NAME, _itr ) VT_CAT( NAME, _erase_itr )( NAME *table, VT_CAT( NAME, _itr ) itr ) +{ + if( VT_CAT( NAME, _erase_itr_raw )( table, itr ) ) + return VT_CAT( NAME, _next )( itr ); + + return itr; +} + +#endif + +/*--------------------------------------------------------------------------------------------------------------------*/ +/* Function implementations */ +/*--------------------------------------------------------------------------------------------------------------------*/ + +#ifndef HEADER_MODE + +// Default settings. + +#ifndef MAX_LOAD +#define MAX_LOAD 0.9 +#endif + +#if !defined( MALLOC ) || !defined( FREE ) +#include +#endif + +#ifndef MALLOC_FN +#ifdef CTX_TY +#define MALLOC_FN vt_malloc_with_ctx +#else +#define MALLOC_FN vt_malloc +#endif +#endif + +#ifndef FREE_FN +#ifdef CTX_TY +#define FREE_FN vt_free_with_ctx +#else +#define FREE_FN vt_free +#endif +#endif + +#ifndef HASH_FN +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +#ifdef _MSC_VER // In MSVC, the compound literal in the _Generic triggers a warning about unused local variables at /W4. +#define HASH_FN \ +_Pragma( "warning( push )" ) \ +_Pragma( "warning( disable: 4189 )" ) \ +_Generic( ( KEY_TY ){ 0 }, char *: vt_hash_string, default: vt_hash_integer ) \ +_Pragma( "warning( pop )" ) +#else +#define HASH_FN _Generic( ( KEY_TY ){ 0 }, char *: vt_hash_string, default: vt_hash_integer ) +#endif +#else +#error Hash function inference is only available in C11 and later. In C99, you need to define HASH_FN manually to \ +vt_hash_integer, vt_hash_string, or your own custom function with the signature uint64_t ( KEY_TY ). +#endif +#endif + +#ifndef CMPR_FN +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +#ifdef _MSC_VER +#define CMPR_FN \ +_Pragma( "warning( push )" ) \ +_Pragma( "warning( disable: 4189 )" ) \ +_Generic( ( KEY_TY ){ 0 }, char *: vt_cmpr_string, default: vt_cmpr_integer ) \ +_Pragma( "warning( pop )" ) +#else +#define CMPR_FN _Generic( ( KEY_TY ){ 0 }, char *: vt_cmpr_string, default: vt_cmpr_integer ) +#endif +#else +#error Comparison function inference is only available in C11 and later. In C99, you need to define CMPR_FN manually \ +to vt_cmpr_integer, vt_cmpr_string, or your own custom function with the signature bool ( KEY_TY, KEY_TY ). +#endif +#endif + +VT_API_FN_QUALIFIERS void VT_CAT( NAME, _init )( + NAME *table + #ifdef CTX_TY + , CTX_TY ctx + #endif +) +{ + table->key_count = 0; + table->buckets_mask = 0x0000000000000000ull; + table->buckets = NULL; + table->metadata = (uint16_t *)&vt_empty_placeholder_metadatum; + #ifdef CTX_TY + table->ctx = ctx; + #endif +} + +// For efficiency, especially in the case of a small table, the buckets array and metadata share the same dynamic memory +// allocation: +// +-----------------------------+-----+----------------+--------+ +// | Buckets | Pad | Metadata | Excess | +// +-----------------------------+-----+----------------+--------+ +// Any allocated metadata array requires four excess elements to ensure that iteration functions, which read four +// metadata at a time, never read beyond the end of it. +// This function returns the offset of the beginning of the metadata, i.e. the size of the buckets array plus the +// (usually zero) padding. +// It assumes that the bucket count is not zero. +static inline size_t VT_CAT( NAME, _metadata_offset )( NAME *table ) +{ + // Use sizeof, rather than alignof, for C99 compatibility. + return ( ( ( table->buckets_mask + 1 ) * sizeof( VT_CAT( NAME, _bucket ) ) + sizeof( uint16_t ) - 1 ) / + sizeof( uint16_t ) ) * sizeof( uint16_t ); +} + +// Returns the total allocation size, including the buckets array, padding, metadata, and excess metadata. +// As above, this function assumes that the bucket count is not zero. +static inline size_t VT_CAT( NAME, _total_alloc_size )( NAME *table ) +{ + return VT_CAT( NAME, _metadata_offset )( table ) + ( table->buckets_mask + 1 + 4 ) * sizeof( uint16_t ); +} + +VT_API_FN_QUALIFIERS bool VT_CAT( NAME, _init_clone )( + NAME *table, + NAME *source + #ifdef CTX_TY + , CTX_TY ctx + #endif +) +{ + table->key_count = source->key_count; + table->buckets_mask = source->buckets_mask; + #ifdef CTX_TY + table->ctx = ctx; + #endif + + if( !source->buckets_mask ) + { + table->metadata = (uint16_t *)&vt_empty_placeholder_metadatum; + table->buckets = NULL; + return true; + } + + void *allocation = MALLOC_FN( + VT_CAT( NAME, _total_alloc_size )( table ) + #ifdef CTX_TY + , &table->ctx + #endif + ); + + if( VT_UNLIKELY( !allocation ) ) + return false; + + table->buckets = (VT_CAT( NAME, _bucket ) *)allocation; + table->metadata = (uint16_t *)( (unsigned char *)allocation + VT_CAT( NAME, _metadata_offset )( table ) ); + memcpy( allocation, source->buckets, VT_CAT( NAME, _total_alloc_size )( table ) ); + + return true; +} + +VT_API_FN_QUALIFIERS size_t VT_CAT( NAME, _size )( NAME *table ) +{ + return table->key_count; +} + +VT_API_FN_QUALIFIERS size_t VT_CAT( NAME, _bucket_count )( NAME *table ) +{ + // If the bucket count is zero, buckets_mask will be zero, not the bucket count minus one. + // We account for this special case by adding (bool)buckets_mask rather than one. + return table->buckets_mask + (bool)table->buckets_mask; +} + +VT_API_FN_QUALIFIERS bool VT_CAT( NAME, _is_end )( VT_CAT( NAME, _itr ) itr ) +{ + return itr.metadatum == itr.metadata_end; +} + +// Finds the earliest empty bucket in which a key belonging to home_bucket can be placed, assuming that home_bucket +// is already occupied. +// The reason to begin the search at home_bucket, rather than the end of the existing chain, is that keys deleted from +// other chains might have freed up buckets that could fall in this chain before the final key. +// Returns true if an empty bucket within the range of the displacement limit was found, in which case the final two +// pointer arguments contain the index of the empty bucket and its quadratic displacement from home_bucket. +static inline bool VT_CAT( NAME, _find_first_empty )( + NAME *table, + size_t home_bucket, + size_t *empty, + uint16_t *displacement +) +{ + *displacement = 1; + size_t linear_dispacement = 1; + + while( true ) + { + *empty = ( home_bucket + linear_dispacement ) & table->buckets_mask; + if( table->metadata[ *empty ] == VT_EMPTY ) + return true; + + if( VT_UNLIKELY( ++*displacement == VT_DISPLACEMENT_MASK ) ) + return false; + + linear_dispacement += *displacement; + } +} + +// Finds the key in the chain beginning in home_bucket after which to link a new key with displacement_to_empty +// quadratic displacement and returns the index of the bucket containing that key. +// Although the new key could simply be linked to the end of the chain, keeping the chain ordered by displacement +// theoretically improves cache locality during lookups. +static inline size_t VT_CAT( NAME, _find_insert_location_in_chain )( + NAME *table, + size_t home_bucket, + uint16_t displacement_to_empty +) +{ + size_t candidate = home_bucket; + while( true ) + { + uint16_t displacement = table->metadata[ candidate ] & VT_DISPLACEMENT_MASK; + + if( displacement > displacement_to_empty ) + return candidate; + + candidate = ( home_bucket + vt_quadratic( displacement ) ) & table->buckets_mask; + } +} + +// Frees up a bucket occupied by a key not belonging there so that a new key belonging there can be placed there as the +// beginning of a new chain. +// This requires: +// * Finding the previous key in the chain to which the occupying key belongs by rehashing it and then traversing the +// chain. +// * Disconnecting the key from the chain. +// * Finding the appropriate empty bucket to which to move the key. +// * Moving the key (and value) data to the empty bucket. +// * Re-linking the key to the chain. +// Returns true if the eviction succeeded, or false if no empty bucket to which to evict the occupying key could be +// found within the displacement limit. +static inline bool VT_CAT( NAME, _evict )( NAME *table, size_t bucket ) +{ + // Find the previous key in chain. + size_t home_bucket = HASH_FN( table->buckets[ bucket ].key ) & table->buckets_mask; + size_t prev = home_bucket; + while( true ) + { + size_t next = ( home_bucket + vt_quadratic( table->metadata[ prev ] & VT_DISPLACEMENT_MASK ) ) & + table->buckets_mask; + + if( next == bucket ) + break; + + prev = next; + } + + // Disconnect the key from chain. + table->metadata[ prev ] = ( table->metadata[ prev ] & ~VT_DISPLACEMENT_MASK ) | ( table->metadata[ bucket ] & + VT_DISPLACEMENT_MASK ); + + // Find the empty bucket to which to move the key. + size_t empty; + uint16_t displacement; + if( VT_UNLIKELY( !VT_CAT( NAME, _find_first_empty )( table, home_bucket, &empty, &displacement ) ) ) + return false; + + // Find the key in the chain after which to link the moved key. + prev = VT_CAT( NAME, _find_insert_location_in_chain )( table, home_bucket, displacement ); + + // Move the key (and value) data. + table->buckets[ empty ] = table->buckets[ bucket ]; + + // Re-link the key to the chain from its new bucket. + table->metadata[ empty ] = ( table->metadata[ bucket ] & VT_HASH_FRAG_MASK ) | ( table->metadata[ prev ] & + VT_DISPLACEMENT_MASK ); + table->metadata[ prev ] = ( table->metadata[ prev ] & ~VT_DISPLACEMENT_MASK ) | displacement; + + return true; +} + +// Returns an end iterator, i.e. any iterator for which .metadatum == .metadata_end. +// This function just cleans up the library code in functions that return an end iterator as a failure indicator. +static inline VT_CAT( NAME, _itr ) VT_CAT( NAME, _end_itr )( void ) +{ + VT_CAT( NAME, _itr ) itr = { NULL, NULL, NULL, 0 }; + return itr; +} + +// Inserts a key, optionally replacing the existing key if it already exists. +// There are two main cases that must be handled: +// * If the key's home bucket is empty or occupied by a key that does not belong there, then the key is inserted there, +// evicting the occupying key if there is one. +// * Otherwise, the chain of keys beginning at the home bucket is (if unique is false) traversed in search of a matching +// key. +// If none is found, then the new key is inserted at the earliest available bucket, per quadratic probing from the +// home bucket, and then linked to the chain in a manner that maintains its quadratic order. +// The unique argument tells the function whether to skip searching for the key before inserting it (on rehashing, this +// step is unnecessary). +// The replace argument tells the function whether to replace an existing key. +// If replace is true, the function returns an iterator to the inserted key, or an end iterator if the key was not +// inserted because of the maximum load factor or displacement limit constraints. +// If replace is false, then the return value is as described above, except that if the key already exists, the function +// returns an iterator to the existing key. +static inline VT_CAT( NAME, _itr ) VT_CAT( NAME, _insert_raw )( + NAME *table, + KEY_TY key, + #ifdef VAL_TY + VAL_TY *val, + #endif + bool unique, + bool replace +) +{ + uint64_t hash = HASH_FN( key ); + uint16_t hashfrag = vt_hashfrag( hash ); + size_t home_bucket = hash & table->buckets_mask; + + // Case 1: The home bucket is empty or contains a key that doesn't belong there. + // This case also implicitly handles the case of a zero bucket count, since home_bucket will be zero and metadata[ 0 ] + // will be the empty placeholder. + // In that scenario, the zero buckets_mask triggers the below load-factor check. + if( !( table->metadata[ home_bucket ] & VT_IN_HOME_BUCKET_MASK ) ) + { + if( + // Load-factor check. + VT_UNLIKELY( table->key_count + 1 > VT_CAT( NAME, _bucket_count )( table ) * MAX_LOAD ) || + // Vacate the home bucket if it contains a key. + ( table->metadata[ home_bucket ] != VT_EMPTY && VT_UNLIKELY( !VT_CAT( NAME, _evict )( table, home_bucket ) ) ) + ) + return VT_CAT( NAME, _end_itr )(); + + table->buckets[ home_bucket ].key = key; + #ifdef VAL_TY + table->buckets[ home_bucket ].val = *val; + #endif + table->metadata[ home_bucket ] = hashfrag | VT_IN_HOME_BUCKET_MASK | VT_DISPLACEMENT_MASK; + + ++table->key_count; + + VT_CAT( NAME, _itr ) itr = { + table->buckets + home_bucket, + table->metadata + home_bucket, + table->metadata + table->buckets_mask + 1, // Iteration stopper (i.e. the first of the four excess metadata). + home_bucket + }; + return itr; + } + + // Case 2: The home bucket contains the beginning of a chain. + + // Optionally, check the existing chain. + if( !unique ) + { + size_t bucket = home_bucket; + while( true ) + { + if( + ( table->metadata[ bucket ] & VT_HASH_FRAG_MASK ) == hashfrag && + VT_LIKELY( CMPR_FN( table->buckets[ bucket ].key, key ) ) + ) + { + if( replace ) + { + #ifdef KEY_DTOR_FN + KEY_DTOR_FN( table->buckets[ bucket ].key ); + #endif + table->buckets[ bucket ].key = key; + + #ifdef VAL_TY + #ifdef VAL_DTOR_FN + VAL_DTOR_FN( table->buckets[ bucket ].val ); + #endif + table->buckets[ bucket ].val = *val; + #endif + } + + VT_CAT( NAME, _itr ) itr = { + table->buckets + bucket, + table->metadata + bucket, + table->metadata + table->buckets_mask + 1, + home_bucket + }; + return itr; + } + + uint16_t displacement = table->metadata[ bucket ] & VT_DISPLACEMENT_MASK; + if( displacement == VT_DISPLACEMENT_MASK ) + break; + + bucket = ( home_bucket + vt_quadratic( displacement ) ) & table->buckets_mask; + } + } + + size_t empty; + uint16_t displacement; + if( + VT_UNLIKELY( + // Load-factor check. + table->key_count + 1 > VT_CAT( NAME, _bucket_count )( table ) * MAX_LOAD || + // Find the earliest empty bucket, per quadratic probing. + !VT_CAT( NAME, _find_first_empty )( table, home_bucket, &empty, &displacement ) + ) + ) + return VT_CAT( NAME, _end_itr )(); + + // Insert the new key (and value) in the empty bucket and link it to the chain. + + size_t prev = VT_CAT( NAME, _find_insert_location_in_chain )( table, home_bucket, displacement ); + + table->buckets[ empty ].key = key; + #ifdef VAL_TY + table->buckets[ empty ].val = *val; + #endif + table->metadata[ empty ] = hashfrag | ( table->metadata[ prev ] & VT_DISPLACEMENT_MASK ); + table->metadata[ prev ] = ( table->metadata[ prev ] & ~VT_DISPLACEMENT_MASK ) | displacement; + + ++table->key_count; + + VT_CAT( NAME, _itr ) itr = { + table->buckets + empty, + table->metadata + empty, + table->metadata + table->buckets_mask + 1, + home_bucket + }; + return itr; +} + +// Resizes the bucket array. +// This function assumes that bucket_count is a power of two and large enough to accommodate all keys without violating +// the maximum load factor. +// Returns false in the case of allocation failure. +// As this function is called very rarely in _insert and _get_or_insert, ideally it should not be inlined into those +// functions. +// In testing, the no-inline approach showed a performance benefit when inserting existing keys (i.e. replacing). +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wattributes" // Silence warning about combining noinline with static inline. +__attribute__((noinline)) static inline +#elif defined( _MSC_VER ) +__declspec(noinline) static inline +#else +static inline +#endif +bool VT_CAT( NAME, _rehash )( NAME *table, size_t bucket_count ) +{ + // The attempt to resize the bucket array and rehash the keys must occur inside a loop that incrementally doubles the + // target bucket count because a failure could theoretically occur at any load factor due to the displacement limit. + while( true ) + { + NAME new_table = { + 0, + bucket_count - 1, + NULL, + NULL + #ifdef CTX_TY + , table->ctx + #endif + }; + + void *allocation = MALLOC_FN( + VT_CAT( NAME, _total_alloc_size )( &new_table ) + #ifdef CTX_TY + , &new_table.ctx + #endif + ); + + if( VT_UNLIKELY( !allocation ) ) + return false; + + new_table.buckets = (VT_CAT( NAME, _bucket ) *)allocation; + new_table.metadata = (uint16_t *)( (unsigned char *)allocation + VT_CAT( NAME, _metadata_offset )( &new_table ) ); + + memset( new_table.metadata, 0x00, ( bucket_count + 4 ) * sizeof( uint16_t ) ); + + // Iteration stopper at the end of the actual metadata array (i.e. the first of the four excess metadata). + new_table.metadata[ bucket_count ] = 0x01; + + for( size_t bucket = 0; bucket < VT_CAT( NAME, _bucket_count )( table ); ++bucket ) + if( table->metadata[ bucket ] != VT_EMPTY ) + { + VT_CAT( NAME, _itr ) itr = VT_CAT( NAME, _insert_raw )( + &new_table, + table->buckets[ bucket ].key, + #ifdef VAL_TY + &table->buckets[ bucket ].val, + #endif + true, + false + ); + + if( VT_UNLIKELY( VT_CAT( NAME, _is_end )( itr ) ) ) + break; + } + + // If a key could not be reinserted due to the displacement limit, double the bucket count and retry. + if( VT_UNLIKELY( new_table.key_count < table->key_count ) ) + { + FREE_FN( + new_table.buckets, + VT_CAT( NAME, _total_alloc_size )( &new_table ) + #ifdef CTX_TY + , &new_table.ctx + #endif + ); + + bucket_count *= 2; + continue; + } + + if( table->buckets_mask ) + FREE_FN( + table->buckets, + VT_CAT( NAME, _total_alloc_size )( table ) + #ifdef CTX_TY + , &table->ctx + #endif + ); + + *table = new_table; + return true; + } +} +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif + +// Inserts a key, replacing the existing key if it already exists. +// This function wraps insert_raw in a loop that handles growing and rehashing the table if a new key cannot be inserted +// because of the maximum load factor or displacement limit constraints. +// Returns an iterator to the inserted key, or an end iterator in the case of allocation failure. +VT_API_FN_QUALIFIERS VT_CAT( NAME, _itr ) VT_CAT( NAME, _insert )( + NAME *table, + KEY_TY key + #ifdef VAL_TY + , VAL_TY val + #endif +) +{ + while( true ) + { + VT_CAT( NAME, _itr ) itr = VT_CAT( NAME, _insert_raw )( + table, + key, + #ifdef VAL_TY + &val, + #endif + false, + true + ); + + if( + // Lookup succeeded, in which case itr points to the found key. + VT_LIKELY( !VT_CAT( NAME, _is_end )( itr ) ) || + // Lookup failed and rehash also fails, in which case itr is an end iterator. + VT_UNLIKELY( + !VT_CAT( NAME, _rehash )( + table, table->buckets_mask ? VT_CAT( NAME, _bucket_count )( table ) * 2 : VT_MIN_NONZERO_BUCKET_COUNT + ) + ) + ) + return itr; + } +} + +// Same as NAME_insert, except that if the key already exists, no insertion occurs and the function returns an iterator +// to the existing key. +VT_API_FN_QUALIFIERS VT_CAT( NAME, _itr ) VT_CAT( NAME, _get_or_insert )( + NAME *table, + KEY_TY key + #ifdef VAL_TY + , VAL_TY val + #endif +) +{ + while( true ) + { + VT_CAT( NAME, _itr ) itr = VT_CAT( NAME, _insert_raw )( + table, + key, + #ifdef VAL_TY + &val, + #endif + false, + false + ); + + if( + // Lookup succeeded, in which case itr points to the found key. + VT_LIKELY( !VT_CAT( NAME, _is_end )( itr ) ) || + // Lookup failed and rehash also fails, in which case itr is an end iterator. + VT_UNLIKELY( + !VT_CAT( NAME, _rehash )( + table, table->buckets_mask ? VT_CAT( NAME, _bucket_count )( table ) * 2 : VT_MIN_NONZERO_BUCKET_COUNT + ) + ) + ) + return itr; + } +} + +// Returns an iterator pointing to the specified key, or an end iterator if the key does not exist. +VT_API_FN_QUALIFIERS VT_CAT( NAME, _itr ) VT_CAT( NAME, _get )( NAME *table, KEY_TY key ) +{ + uint64_t hash = HASH_FN( key ); + size_t home_bucket = hash & table->buckets_mask; + + // If the home bucket is empty or contains a key that does not belong there, then our key does not exist. + // This check also implicitly handles the case of a zero bucket count, since home_bucket will be zero and + // metadata[ 0 ] will be the empty placeholder. + if( !( table->metadata[ home_bucket ] & VT_IN_HOME_BUCKET_MASK ) ) + return VT_CAT( NAME, _end_itr )(); + + // Traverse the chain of keys belonging to the home bucket. + uint16_t hashfrag = vt_hashfrag( hash ); + size_t bucket = home_bucket; + while( true ) + { + if( + ( table->metadata[ bucket ] & VT_HASH_FRAG_MASK ) == hashfrag && + VT_LIKELY( CMPR_FN( table->buckets[ bucket ].key, key ) ) + ) + { + VT_CAT( NAME, _itr ) itr = { + table->buckets + bucket, + table->metadata + bucket, + table->metadata + table->buckets_mask + 1, + home_bucket + }; + return itr; + } + + uint16_t displacement = table->metadata[ bucket ] & VT_DISPLACEMENT_MASK; + if( displacement == VT_DISPLACEMENT_MASK ) + return VT_CAT( NAME, _end_itr )(); + + bucket = ( home_bucket + vt_quadratic( displacement ) ) & table->buckets_mask; + } +} + +// Erases the key pointed to by the specified iterator. +// The erasure always occurs at the end of the chain to which the key belongs. +// If the key to be erased is not the last in the chain, it is swapped with the last so that erasure occurs at the end. +// This helps keep a chain's keys close to their home bucket for the sake of cache locality. +// Returns true if, in the case of iteration from first to end, NAME_next should now be called on the iterator to find +// the next key. +// This return value is necessary because at the iterator location, the erasure could result in an empty bucket, a +// bucket containing a moved key already visited during the iteration, or a bucket containing a moved key not yet +// visited. +VT_API_FN_QUALIFIERS bool VT_CAT( NAME, _erase_itr_raw )( NAME *table, VT_CAT( NAME, _itr ) itr ) +{ + --table->key_count; + size_t itr_bucket = itr.metadatum - table->metadata; + + // Case 1: The key is the only one in its chain, so just remove it. + if( + table->metadata[ itr_bucket ] & VT_IN_HOME_BUCKET_MASK && + ( table->metadata[ itr_bucket ] & VT_DISPLACEMENT_MASK ) == VT_DISPLACEMENT_MASK + ) + { + #ifdef KEY_DTOR_FN + KEY_DTOR_FN( table->buckets[ itr_bucket ].key ); + #endif + + #ifdef VAL_DTOR_FN + VAL_DTOR_FN( table->buckets[ itr_bucket ].val ); + #endif + + table->metadata[ itr_bucket ] = VT_EMPTY; + return true; + } + + // Case 2 and 3 require that we know the key's home bucket, which the iterator may not have recorded. + if( itr.home_bucket == SIZE_MAX ) + { + if( table->metadata[ itr_bucket ] & VT_IN_HOME_BUCKET_MASK ) + itr.home_bucket = itr_bucket; + else + itr.home_bucket = HASH_FN( table->buckets[ itr_bucket ].key ) & table->buckets_mask; + } + + // The key can now be safely destructed for cases 2 and 3. + #ifdef KEY_DTOR_FN + KEY_DTOR_FN( table->buckets[ itr_bucket ].key ); + #endif + + #ifdef VAL_DTOR_FN + VAL_DTOR_FN( table->buckets[ itr_bucket ].val ); + #endif + + // Case 2: The key is the last in a multi-key chain. + // Traverse the chain from the beginning and find the penultimate key. + // Then disconnect the key and erase. + if( ( table->metadata[ itr_bucket ] & VT_DISPLACEMENT_MASK ) == VT_DISPLACEMENT_MASK ) + { + size_t bucket = itr.home_bucket; + while( true ) + { + uint16_t displacement = table->metadata[ bucket ] & VT_DISPLACEMENT_MASK; + size_t next = ( itr.home_bucket + vt_quadratic( displacement ) ) & table->buckets_mask; + if( next == itr_bucket ) + { + table->metadata[ bucket ] |= VT_DISPLACEMENT_MASK; + table->metadata[ itr_bucket ] = VT_EMPTY; + return true; + } + + bucket = next; + } + } + + // Case 3: The chain has multiple keys, and the key is not the last one. + // Traverse the chain from the key to be erased and find the last and penultimate keys. + // Disconnect the last key from the chain, and swap it with the key to erase. + size_t bucket = itr_bucket; + while( true ) + { + size_t prev = bucket; + bucket = ( itr.home_bucket + vt_quadratic( table->metadata[ bucket ] & VT_DISPLACEMENT_MASK ) ) & + table->buckets_mask; + + if( ( table->metadata[ bucket ] & VT_DISPLACEMENT_MASK ) == VT_DISPLACEMENT_MASK ) + { + table->buckets[ itr_bucket ] = table->buckets[ bucket ]; + + table->metadata[ itr_bucket ] = ( table->metadata[ itr_bucket ] & ~VT_HASH_FRAG_MASK ) | ( + table->metadata[ bucket ] & VT_HASH_FRAG_MASK ); + + table->metadata[ prev ] |= VT_DISPLACEMENT_MASK; + table->metadata[ bucket ] = VT_EMPTY; + + // Whether the iterator should be advanced depends on whether the key moved to the iterator bucket came from + // before or after that bucket. + // In the former case, the iteration would already have hit the moved key, so the iterator should still be + // advanced. + if( bucket > itr_bucket ) + return false; + + return true; + } + } +} + +// Erases the specified key, if it exists. +// Returns true if a key was erased. +VT_API_FN_QUALIFIERS bool VT_CAT( NAME, _erase )( NAME *table, KEY_TY key ) +{ + VT_CAT( NAME, _itr ) itr = VT_CAT( NAME, _get)( table, key ); + if( VT_CAT( NAME, _is_end )( itr ) ) + return false; + + VT_CAT( NAME, _erase_itr_raw )( table, itr ); + return true; +} + +// Finds the first occupied bucket at or after the bucket pointed to by itr. +// This function scans four buckets at a time, ideally using intrinsics. +static inline void VT_CAT( NAME, _fast_forward )( VT_CAT( NAME, _itr ) *itr ) +{ + while( true ) + { + uint64_t metadata; + memcpy( &metadata, itr->metadatum, sizeof( uint64_t ) ); + if( metadata ) + { + int offset = vt_first_nonzero_uint16( metadata ); + itr->data += offset; + itr->metadatum += offset; + itr->home_bucket = SIZE_MAX; + return; + } + + itr->data += 4; + itr->metadatum += 4; + } +} + +VT_API_FN_QUALIFIERS VT_CAT( NAME, _itr ) VT_CAT( NAME, _next )( VT_CAT( NAME, _itr ) itr ) +{ + ++itr.data; + ++itr.metadatum; + VT_CAT( NAME, _fast_forward )( &itr ); + return itr; +} + +// Returns the minimum bucket count required to accommodate a certain number of keys, which is governed by the maximum +// load factor. +static inline size_t VT_CAT( NAME, _min_bucket_count_for_size )( size_t size ) +{ + if( size == 0 ) + return 0; + + // Round up to a power of two. + size_t bucket_count = VT_MIN_NONZERO_BUCKET_COUNT; + while( size > bucket_count * MAX_LOAD ) + bucket_count *= 2; + + return bucket_count; +} + +VT_API_FN_QUALIFIERS bool VT_CAT( NAME, _reserve )( NAME *table, size_t size ) +{ + size_t bucket_count = VT_CAT( NAME, _min_bucket_count_for_size )( size ); + + if( bucket_count <= VT_CAT( NAME, _bucket_count )( table ) ) + return true; + + return VT_CAT( NAME, _rehash )( table, bucket_count ); +} + +VT_API_FN_QUALIFIERS bool VT_CAT( NAME, _shrink )( NAME *table ) +{ + size_t bucket_count = VT_CAT( NAME, _min_bucket_count_for_size )( table->key_count ); + + if( bucket_count == VT_CAT( NAME, _bucket_count )( table ) ) // Shrink unnecessary. + return true; + + if( bucket_count == 0 ) + { + FREE_FN( + table->buckets, + VT_CAT( NAME, _total_alloc_size )( table ) + #ifdef CTX_TY + , &table->ctx + #endif + ); + + table->buckets_mask = 0x0000000000000000ull; + table->metadata = (uint16_t *)&vt_empty_placeholder_metadatum; + return true; + } + + return VT_CAT( NAME, _rehash )( table, bucket_count ); +} + +VT_API_FN_QUALIFIERS VT_CAT( NAME, _itr ) VT_CAT( NAME, _first )( NAME *table ) +{ + if( !table->key_count ) + return VT_CAT( NAME, _end_itr )(); + + VT_CAT( NAME, _itr ) itr = { table->buckets, table->metadata, table->metadata + table->buckets_mask + 1, SIZE_MAX }; + VT_CAT( NAME, _fast_forward )( &itr ); + return itr; +} + +VT_API_FN_QUALIFIERS void VT_CAT( NAME, _clear )( NAME *table ) +{ + if( !table->key_count ) + return; + + for( size_t i = 0; i < VT_CAT( NAME, _bucket_count )( table ); ++i ) + { + if( table->metadata[ i ] != VT_EMPTY ) + { + #ifdef KEY_DTOR_FN + KEY_DTOR_FN( table->buckets[ i ].key ); + #endif + #ifdef VAL_DTOR_FN + VAL_DTOR_FN( table->buckets[ i ].val ); + #endif + } + + table->metadata[ i ] = VT_EMPTY; + } + + table->key_count = 0; +} + +VT_API_FN_QUALIFIERS void VT_CAT( NAME, _cleanup )( NAME *table ) +{ + if( !table->buckets_mask ) + return; + + #if defined( KEY_DTOR_FN ) || defined( VAL_DTOR_FN ) + VT_CAT( NAME, _clear )( table ); + #endif + + FREE_FN( + table->buckets, + VT_CAT( NAME, _total_alloc_size )( table ) + #ifdef CTX_TY + , &table->ctx + #endif + ); + + VT_CAT( NAME, _init )( + table + #ifdef CTX_TY + , table->ctx + #endif + ); +} + +#endif + +/*--------------------------------------------------------------------------------------------------------------------*/ +/* Wrapper types and functions for the C11 generic API */ +/*--------------------------------------------------------------------------------------------------------------------*/ + +#if defined(__STDC_VERSION__) && \ + __STDC_VERSION__ >= 201112L && \ + !defined( IMPLEMENTATION_MODE ) && \ + !defined( VT_NO_C11_GENERIC_API ) \ + +typedef NAME VT_CAT( vt_table_, VT_TEMPLATE_COUNT ); +typedef VT_CAT( NAME, _itr ) VT_CAT( vt_table_itr_, VT_TEMPLATE_COUNT ); + +static inline void VT_CAT( vt_init_, VT_TEMPLATE_COUNT )( + NAME *table + #ifdef CTX_TY + , CTX_TY ctx + #endif +) +{ + VT_CAT( NAME, _init )( + table + #ifdef CTX_TY + , ctx + #endif + ); +} + +static inline bool VT_CAT( vt_init_clone_, VT_TEMPLATE_COUNT )( + NAME *table, + NAME* source + #ifdef CTX_TY + , CTX_TY ctx + #endif +) +{ + return VT_CAT( NAME, _init_clone )( + table, + source + #ifdef CTX_TY + , ctx + #endif + ); +} + +static inline size_t VT_CAT( vt_size_, VT_TEMPLATE_COUNT )( NAME *table ) +{ + return VT_CAT( NAME, _size )( table ); +} + +static inline size_t VT_CAT( vt_bucket_count_, VT_TEMPLATE_COUNT )( NAME *table ) +{ + return VT_CAT( NAME, _bucket_count )( table ); +} + +static inline bool VT_CAT( vt_is_end_, VT_TEMPLATE_COUNT )( VT_CAT( NAME, _itr ) itr ) +{ + return VT_CAT( NAME, _is_end )( itr ); +} + +static inline VT_CAT( NAME, _itr ) VT_CAT( vt_insert_, VT_TEMPLATE_COUNT )( + NAME *table, + KEY_TY key + #ifdef VAL_TY + , VAL_TY val + #endif +) +{ + return VT_CAT( NAME, _insert )( + table, + key + #ifdef VAL_TY + , val + #endif + ); +} + +static inline VT_CAT( NAME, _itr ) VT_CAT( vt_get_or_insert_, VT_TEMPLATE_COUNT )( + NAME *table, + KEY_TY key + #ifdef VAL_TY + , VAL_TY val + #endif +) +{ + return VT_CAT( NAME, _get_or_insert )( + table, + key + #ifdef VAL_TY + , val + #endif + ); +} + +static inline VT_CAT( NAME, _itr ) VT_CAT( vt_get_, VT_TEMPLATE_COUNT )( NAME *table, KEY_TY key ) +{ + return VT_CAT( NAME, _get )( table, key ); +} + +static inline bool VT_CAT( vt_erase_, VT_TEMPLATE_COUNT )( NAME *table, KEY_TY key ) +{ + return VT_CAT( NAME, _erase )( table, key ); +} + +static inline VT_CAT( NAME, _itr ) VT_CAT( vt_next_, VT_TEMPLATE_COUNT )( VT_CAT( NAME, _itr ) itr ) +{ + return VT_CAT( NAME, _next )( itr ); +} + +static inline VT_CAT( NAME, _itr ) VT_CAT( vt_erase_itr_, VT_TEMPLATE_COUNT )( NAME *table, VT_CAT( NAME, _itr ) itr ) +{ + return VT_CAT( NAME, _erase_itr )( table, itr ); +} + +static inline bool VT_CAT( vt_reserve_, VT_TEMPLATE_COUNT )( NAME *table, size_t bucket_count ) +{ + return VT_CAT( NAME, _reserve )( table, bucket_count ); +} + +static inline bool VT_CAT( vt_shrink_, VT_TEMPLATE_COUNT )( NAME *table ) +{ + return VT_CAT( NAME, _shrink )( table ); +} + +static inline VT_CAT( NAME, _itr ) VT_CAT( vt_first_, VT_TEMPLATE_COUNT )( NAME *table ) +{ + return VT_CAT( NAME, _first )( table ); +} + +static inline void VT_CAT( vt_clear_, VT_TEMPLATE_COUNT )( NAME *table ) +{ + VT_CAT( NAME, _clear )( table ); +} + +static inline void VT_CAT( vt_cleanup_, VT_TEMPLATE_COUNT )( NAME *table ) +{ + VT_CAT( NAME, _cleanup )( table ); +} + +// Increment the template counter. +#if VT_TEMPLATE_COUNT_D1 == 0 +#undef VT_TEMPLATE_COUNT_D1 +#define VT_TEMPLATE_COUNT_D1 1 +#elif VT_TEMPLATE_COUNT_D1 == 1 +#undef VT_TEMPLATE_COUNT_D1 +#define VT_TEMPLATE_COUNT_D1 2 +#elif VT_TEMPLATE_COUNT_D1 == 2 +#undef VT_TEMPLATE_COUNT_D1 +#define VT_TEMPLATE_COUNT_D1 3 +#elif VT_TEMPLATE_COUNT_D1 == 3 +#undef VT_TEMPLATE_COUNT_D1 +#define VT_TEMPLATE_COUNT_D1 4 +#elif VT_TEMPLATE_COUNT_D1 == 4 +#undef VT_TEMPLATE_COUNT_D1 +#define VT_TEMPLATE_COUNT_D1 5 +#elif VT_TEMPLATE_COUNT_D1 == 5 +#undef VT_TEMPLATE_COUNT_D1 +#define VT_TEMPLATE_COUNT_D1 6 +#elif VT_TEMPLATE_COUNT_D1 == 6 +#undef VT_TEMPLATE_COUNT_D1 +#define VT_TEMPLATE_COUNT_D1 7 +#elif VT_TEMPLATE_COUNT_D1 == 7 +#undef VT_TEMPLATE_COUNT_D1 +#define VT_TEMPLATE_COUNT_D1 0 +#if VT_TEMPLATE_COUNT_D2 == 0 +#undef VT_TEMPLATE_COUNT_D2 +#define VT_TEMPLATE_COUNT_D2 1 +#elif VT_TEMPLATE_COUNT_D2 == 1 +#undef VT_TEMPLATE_COUNT_D2 +#define VT_TEMPLATE_COUNT_D2 2 +#elif VT_TEMPLATE_COUNT_D2 == 2 +#undef VT_TEMPLATE_COUNT_D2 +#define VT_TEMPLATE_COUNT_D2 3 +#elif VT_TEMPLATE_COUNT_D2 == 3 +#undef VT_TEMPLATE_COUNT_D2 +#define VT_TEMPLATE_COUNT_D2 4 +#elif VT_TEMPLATE_COUNT_D2 == 4 +#undef VT_TEMPLATE_COUNT_D2 +#define VT_TEMPLATE_COUNT_D2 5 +#elif VT_TEMPLATE_COUNT_D2 == 5 +#undef VT_TEMPLATE_COUNT_D2 +#define VT_TEMPLATE_COUNT_D2 6 +#elif VT_TEMPLATE_COUNT_D2 == 6 +#undef VT_TEMPLATE_COUNT_D2 +#define VT_TEMPLATE_COUNT_D2 7 +#elif VT_TEMPLATE_COUNT_D2 == 7 +#undef VT_TEMPLATE_COUNT_D2 +#define VT_TEMPLATE_COUNT_D2 0 +#if VT_TEMPLATE_COUNT_D3 == 0 +#undef VT_TEMPLATE_COUNT_D3 +#define VT_TEMPLATE_COUNT_D3 1 +#elif VT_TEMPLATE_COUNT_D3 == 1 +#undef VT_TEMPLATE_COUNT_D3 +#define VT_TEMPLATE_COUNT_D3 2 +#elif VT_TEMPLATE_COUNT_D3 == 2 +#undef VT_TEMPLATE_COUNT_D3 +#define VT_TEMPLATE_COUNT_D3 3 +#elif VT_TEMPLATE_COUNT_D3 == 3 +#undef VT_TEMPLATE_COUNT_D3 +#define VT_TEMPLATE_COUNT_D3 4 +#elif VT_TEMPLATE_COUNT_D3 == 4 +#undef VT_TEMPLATE_COUNT_D3 +#define VT_TEMPLATE_COUNT_D3 5 +#elif VT_TEMPLATE_COUNT_D3 == 5 +#undef VT_TEMPLATE_COUNT_D3 +#define VT_TEMPLATE_COUNT_D3 6 +#elif VT_TEMPLATE_COUNT_D3 == 6 +#undef VT_TEMPLATE_COUNT_D3 +#define VT_TEMPLATE_COUNT_D3 7 +#elif VT_TEMPLATE_COUNT_D3 == 7 +#error Sorry, the number of template instances is limited to 511. Define VT_NO_C11_GENERIC_API globally and use the \ +C99 prefixed function API to circumvent this restriction. +#endif +#endif +#endif + +#endif + +#undef NAME +#undef KEY_TY +#undef VAL_TY +#undef HASH_FN +#undef CMPR_FN +#undef MAX_LOAD +#undef KEY_DTOR_FN +#undef VAL_DTOR_FN +#undef CTX_TY +#undef MALLOC_FN +#undef FREE_FN +#undef HEADER_MODE +#undef IMPLEMENTATION_MODE +#undef VT_API_FN_QUALIFIERS diff --git a/vere/pkg/noun/vortex.c b/vere/pkg/noun/vortex.c new file mode 100644 index 0000000..8496307 --- /dev/null +++ b/vere/pkg/noun/vortex.c @@ -0,0 +1,411 @@ +/// @file + +#include "vortex.h" + +#include "allocate.h" +#include "imprison.h" +#include "jets/k.h" +#include "jets/q.h" +#include "log.h" +#include "manage.h" +#include "nock.h" +#include "retrieve.h" +#include "trace.h" +#include "xtract.h" + +#define _CVX_LOAD 4 +#define _CVX_PEEK 22 +#define _CVX_POKE 23 +#define _CVX_WISH 10 + +u3v_home* u3v_Home; + +/* u3v_life(): execute initial lifecycle, producing Arvo core. +*/ +u3_noun +u3v_life(u3_noun eve) +{ + u3_noun lyf = u3nt(2, u3nc(0, 3), u3nc(0, 2)); + u3_noun gat = u3n_nock_on(eve, lyf); + u3_noun cor = u3k(u3x_at(7, gat)); + + u3z(gat); + return cor; +} + +/* u3v_boot(): evaluate boot sequence, making a kernel +*/ +c3_o +u3v_boot(u3_noun eve) +{ + c3_d len_d; + { + u3_noun len = u3qb_lent(eve); + u3_assert( c3y == u3r_safe_chub(len, &len_d) ); + u3z(len); + } + + { + u3_noun pro = u3m_soft(0, u3v_life, eve); + + if ( u3_blip != u3h(pro) ) { + u3z(pro); + return c3n; + } + + u3z(u3A->roc); + u3A->roc = u3k(u3t(pro)); + u3A->eve_d = len_d; + u3z(pro); + } + + return c3y; +} + +/* _cv_lite(): load lightweight, core-only pill. +*/ +static u3_noun +_cv_lite(u3_noun pil) +{ + u3_noun eve, pro; + + { + u3_noun hed, tal; + u3x_cell(pil, &hed, &tal); + if ( !_(u3r_sing_c("ivory", hed)) ) { + u3m_bail(c3__exit); + } + eve = tal; + } + + u3l_log("lite: arvo formula %x", u3r_mug(pil)); + pro = u3v_life(u3k(eve)); + u3l_log("lite: core %x", u3r_mug(pro)); + + u3z(pil); + return pro; +} + +/* u3v_boot_lite(): light bootstrap sequence, just making a kernel. +*/ +c3_o +u3v_boot_lite(u3_noun pil) +{ + // ensure zero-initialized kernel + // + u3A->roc = 0; + + { + u3_noun pro = u3m_soft(0, _cv_lite, pil); + + if ( u3_blip != u3h(pro) ) { + u3z(pro); + return c3n; + } + + u3A->roc = u3k(u3t(pro)); + u3z(pro); + } + + u3l_log("lite: final state %x", u3r_mug(u3A->roc)); + + return c3y; +} + +/* _cv_nock_wish(): call wish through hardcoded interface. +*/ +static u3_noun +_cv_nock_wish(u3_noun txt) +{ + u3_noun fun, pro; + + fun = u3n_nock_on(u3k(u3A->roc), u3k(u3x_at(_CVX_WISH, u3A->roc))); + pro = u3n_slam_on(fun, txt); + + return pro; +} + +/* u3v_wish_n(): text expression with cache. with the input as a u3_noun. +*/ +u3_noun +u3v_wish_n(u3_noun txt) +{ + u3t_event_trace("u3v_wish", 'b'); + u3_weak exp = u3kdb_get(u3k(u3A->yot), u3k(txt)); + + if ( u3_none == exp ) { + exp = _cv_nock_wish(u3k(txt)); + + // It's probably not a good idea to use u3v_wish() + // outside the top level... (as the result is uncached) + // + if ( u3R == &u3H->rod_u ) { + u3A->yot = u3kdb_put(u3A->yot, u3k(txt), u3k(exp)); + } + } + + u3t_event_trace("u3v_wish", 'e'); + + u3z(txt); + return exp; +} + +/* u3v_wish(): text expression with cache. +*/ +u3_noun +u3v_wish(const c3_c* str_c) +{ + u3t_event_trace("u3v_wish", 'b'); + u3_noun txt = u3i_string(str_c); + u3_weak exp = u3kdb_get(u3k(u3A->yot), u3k(txt)); + + if ( u3_none == exp ) { + exp = _cv_nock_wish(u3k(txt)); + + // It's probably not a good idea to use u3v_wish() + // outside the top level... (as the result is uncached) + // + if ( u3R == &u3H->rod_u ) { + u3A->yot = u3kdb_put(u3A->yot, u3k(txt), u3k(exp)); + } + } + + u3t_event_trace("u3v_wish", 'e'); + + u3z(txt); + return exp; +} + +/* u3v_do(): use a kernel gate. +*/ +u3_noun +u3v_do(const c3_c* txt_c, u3_noun sam) +{ + u3_noun gat = u3v_wish(txt_c); + u3_noun pro; + +#if 0 + if ( &u3H->rod_u == u3R ) { + pro = u3m_soft_slam(gat, sam); + } + else { + pro = u3n_slam_on(gat, sam); + } +#else + pro = u3n_slam_on(gat, sam); +#endif + + return pro; +} + +/* u3v_lily(): parse little atom. +*/ +c3_o +u3v_lily(u3_noun fot, u3_noun txt, c3_l* tid_l) +{ + c3_w wad_w; + u3_noun uco = u3dc("slaw", fot, u3k(txt)); + u3_noun p_uco, q_uco; + + if ( (c3n == u3r_cell(uco, &p_uco, &q_uco)) || + (u3_nul != p_uco) || + (c3n == u3r_safe_word(q_uco, &wad_w)) || + (wad_w & 0x80000000) ) + { + c3_c* txt_c = u3r_string(txt); + u3l_log("strange lily %s", txt_c); + c3_free(txt_c); + u3z(txt); u3z(uco); + return c3n; + } + else { + *tid_l = (c3_l)wad_w; + u3z(txt); u3z(uco); + return c3y; + } +} + +/* u3v_peek(): query the reck namespace (protected). +*/ +u3_noun +u3v_peek(u3_noun sam) +{ + u3_noun fun = u3n_nock_on(u3k(u3A->roc), u3k(u3x_at(_CVX_PEEK, u3A->roc))); + return u3n_slam_on(fun, sam); +} + +/* u3v_soft_peek(): softly query the reck namespace. +*/ +u3_noun +u3v_soft_peek(c3_w mil_w, u3_noun sam) +{ + u3_noun gon = u3m_soft(mil_w, u3v_peek, sam); + u3_noun tag, dat; + u3x_cell(gon, &tag, &dat); + + // read failed, produce trace + // + // NB, reads *should not* fail deterministically + // + if ( u3_blip != tag ) { + return u3nc(c3n, gon); + } + + // read succeeded, produce result + // + { + u3_noun pro = u3nc(c3y, u3k(dat)); + u3z(gon); + return pro; + } +} + +/* u3v_poke(): compute a timestamped ovum. +*/ +u3_noun +u3v_poke(u3_noun sam) +{ + u3_noun fun = u3n_nock_on(u3k(u3A->roc), u3k(u3x_at(_CVX_POKE, u3A->roc))); + u3_noun pro; + + { +# ifdef U3_MEMORY_DEBUG + c3_w cod_w = u3a_lush(u3h(u3t(u3t(sam)))); +# endif + + pro = u3n_slam_on(fun, sam); + +# ifdef U3_MEMORY_DEBUG + u3a_lop(cod_w); +# endif + } + + return pro; +} + +/* u3v_poke_sure(): inject an event, saving new state if successful. +*/ +c3_o +u3v_poke_sure(c3_w mil_w, u3_noun eve, u3_noun* pro) +{ + u3_noun gon = u3m_soft(mil_w, u3v_poke, eve); + u3_noun tag, dat; + u3x_cell(gon, &tag, &dat); + + // event failed, produce trace + // + if ( u3_blip != tag ) { + *pro = gon; + return c3n; + } + + // event succeeded, persist state and produce effects + // + { + u3_noun vir, cor; + u3x_cell(dat, &vir, &cor); + + u3z(u3A->roc); + u3A->roc = u3k(cor); + u3A->eve_d++; + + *pro = u3k(vir); + u3z(gon); + return c3y; + } +} + +/* u3v_tank(): dump single tank. +*/ +void +u3v_tank(u3_noun blu, c3_l tab_l, u3_noun tac) +{ + u3v_punt(blu, tab_l, u3nc(tac, u3_nul)); +} + +/* u3v_punt(): dump tank list. +*/ +void +u3v_punt(u3_noun blu, c3_l tab_l, u3_noun tac) +{ +#if 0 + u3_noun blu = u3_term_get_blew(0); +#endif + c3_l col_l = u3h(blu); + u3_noun cat = tac; + + // We are calling nock here, but hopefully need no protection. + // + while ( c3y == u3du(cat) ) { + u3_noun wol = u3dc("wash", u3nc(tab_l, col_l), u3k(u3h(cat))); + + u3m_wall(wol); + cat = u3t(cat); + } + u3z(tac); + u3z(blu); +} + +/* u3v_sway(): print trace. +*/ +void +u3v_sway(u3_noun blu, c3_l tab_l, u3_noun tax) +{ + u3_noun mok = u3dc("mook", 2, tax); + + u3v_punt(blu, tab_l, u3k(u3t(mok))); + u3z(mok); +} + +/* u3v_mark(): mark arvo kernel. +*/ +u3m_quac* +u3v_mark() +{ + u3v_arvo* arv_u = &(u3H->arv_u); + + u3m_quac** qua_u = c3_malloc(sizeof(*qua_u) * 3); + + qua_u[0] = c3_calloc(sizeof(*qua_u[0])); + qua_u[0]->nam_c = strdup("kernel"); + qua_u[0]->siz_w = u3a_mark_noun(arv_u->roc) * 4; + + qua_u[1] = c3_calloc(sizeof(*qua_u[2])); + qua_u[1]->nam_c = strdup("wish cache"); + qua_u[1]->siz_w = u3a_mark_noun(arv_u->yot) * 4; + + qua_u[2] = NULL; + + u3m_quac* tot_u = c3_malloc(sizeof(*tot_u)); + tot_u->nam_c = strdup("total arvo stuff"); + tot_u->siz_w = qua_u[0]->siz_w + qua_u[1]->siz_w; + tot_u->qua_u = qua_u; + + return tot_u; +} + +/* u3v_reclaim(): clear ad-hoc persistent caches to reclaim memory. +*/ +void +u3v_reclaim(void) +{ + // clear the u3v_wish cache + // + // NB: this would leak if not on the home road + // + if ( &(u3H->rod_u) == u3R ) { + u3z(u3A->yot); + u3A->yot = u3_nul; + } +} + +/* u3v_rewrite_compact(): rewrite arvo kernel for compaction. +*/ +void +u3v_rewrite_compact(void) +{ + // XX fix these to correctly no-op on inner roads + // + u3a_relocate_noun(&(u3A->roc)); + u3a_relocate_noun(&(u3A->yot)); +} diff --git a/vere/pkg/noun/vortex.h b/vere/pkg/noun/vortex.h new file mode 100644 index 0000000..9b48ba5 --- /dev/null +++ b/vere/pkg/noun/vortex.h @@ -0,0 +1,135 @@ +/// @file + +#ifndef U3_VORTEX_H +#define U3_VORTEX_H + +#include "allocate.h" +#include "c3/c3.h" +#include "imprison.h" +#include "version.h" + + /** Data structures. + **/ + /* u3v_arvo: modern arvo structure. + */ + typedef struct _u3v_arvo { + c3_d eve_d; // event number + u3_noun roc; // kernel core + u3_noun yot; // cached gates + } u3v_arvo; + + /* u3v_home: all internal (within image) state. + ** NB: version must first for ease of migration. + */ + typedef struct _u3v_home { + u3v_version ver_d; // version number + c3_d pam_d; // parameters + u3v_arvo arv_u; // arvo state + u3a_road rod_u; // storage state + } u3v_home; + + + /** Globals. + **/ + /// Arvo internal state. + extern u3v_home* u3v_Home; +# define u3H u3v_Home +# define u3A (&(u3v_Home->arv_u)) + + /** Functions. + **/ + /* u3v_life(): execute initial lifecycle, producing Arvo core. + */ + u3_noun + u3v_life(u3_noun eve); + + /* u3v_boot(): evaluate boot sequence, making a kernel + */ + c3_o + u3v_boot(u3_noun eve); + + /* u3v_boot_lite(): light bootstrap sequence, just making a kernel. + */ + c3_o + u3v_boot_lite(u3_noun lit); + + /* u3v_wish_n(): text expression with cache. + */ + u3_noun + u3v_wish_n(const u3_noun txt); + + /* u3v_do(): use a kernel function. + */ + u3_noun + u3v_do(const c3_c* txt_c, u3_noun arg); +# define u3do(txt_c, a) u3v_do(txt_c, a) +# define u3dc(txt_c, a, b) u3v_do(txt_c, u3nc(a, b)) +# define u3dt(txt_c, a, b, c) u3v_do(txt_c, u3nt(a, b, c)) +# define u3dq(txt_c, a, b, c, d) u3v_do(txt_c, u3nq(a, b, c, d)) + + /* u3v_wish(): text expression with cache. + */ + u3_noun + u3v_wish(const c3_c* str_c); + + /* u3v_lily(): parse little atom. + */ + c3_o + u3v_lily(u3_noun fot, u3_noun txt, c3_l* tid_l); + + /* u3v_peek(): query the reck namespace. + */ + u3_noun + u3v_peek(u3_noun hap); + + /* u3v_soft_peek(): softly query the reck namespace. + */ + u3_noun + u3v_soft_peek(c3_w mil_w, u3_noun sam); + + /* u3v_poke(): compute a timestamped ovum. + */ + u3_noun + u3v_poke(u3_noun sam); + + /* u3v_poke_sure(): inject an event, saving new state if successful. + */ + c3_o + u3v_poke_sure(c3_w mil_w, u3_noun eve, u3_noun* pro); + + /* u3v_tank(): dump single tank. + */ + void + u3v_tank(u3_noun blu, c3_l tab_l, u3_noun tac); + + /* u3v_punt(): dump tank list. + */ + void + u3v_punt(u3_noun blu, c3_l tab_l, u3_noun tac); + + /* u3v_sway(): print trace. + */ + void + u3v_sway(u3_noun blu, c3_l tab_l, u3_noun tax); + + /* u3v_plan(): queue ovum (external). + */ + void + u3v_plan(u3_noun pax, u3_noun fav); + + /* u3v_mark(): mark arvo kernel. + */ + u3m_quac* + u3v_mark(); + + /* u3v_reclaim(): clear ad-hoc persistent caches to reclaim memory. + */ + void + u3v_reclaim(void); + + /* u3v_rewrite_compact(): rewrite arvo kernel for compaction. + */ + void + u3v_rewrite_compact(void); + +#endif /* ifndef U3_VORTEX_H */ diff --git a/vere/pkg/noun/xtract.c b/vere/pkg/noun/xtract.c new file mode 100644 index 0000000..f18aa68 --- /dev/null +++ b/vere/pkg/noun/xtract.c @@ -0,0 +1,33 @@ +/// @file + +#include "xtract.h" + +#include "manage.h" +#include "retrieve.h" + +u3_atom +u3x_atom(u3_noun a); +u3_noun +u3x_good(u3_weak som); +c3_o +u3x_loob(u3_noun a); + +/* u3x_mean(): +** +** Attempt to deconstruct `a` by axis, noun pairs; 0 terminates. +** Axes must be sorted in tree order. +*/ +void +u3x_mean(u3_noun som, ...) +{ + c3_o ret_o; + va_list ap; + + va_start(ap, som); + ret_o = u3r_vmean(som, ap); + va_end(ap); + + if ( c3n == ret_o ) { + u3m_bail(c3__exit); + } +} diff --git a/vere/pkg/noun/xtract.h b/vere/pkg/noun/xtract.h new file mode 100644 index 0000000..c527a43 --- /dev/null +++ b/vere/pkg/noun/xtract.h @@ -0,0 +1,162 @@ +/// @file + +#ifndef U3_XTRACT_H +#define U3_XTRACT_H + +#include "c3/c3.h" +#include "types.h" +#include "allocate.h" +#include "manage.h" + + /** Constants. + **/ + /* Conventional axes for gate call. + */ +# define u3x_pay 3 // payload +# define u3x_sam 6 // sample +# define u3x_sam_1 6 +# define u3x_sam_2 12 +# define u3x_sam_3 13 +# define u3x_sam_4 24 +# define u3x_sam_5 25 +# define u3x_sam_6 26 +# define u3x_sam_12 52 +# define u3x_sam_13 53 +# define u3x_sam_7 27 +# define u3x_sam_14 54 +# define u3x_sam_15 55 +# define u3x_sam_30 110 +# define u3x_sam_31 111 +# define u3x_sam_62 222 +# define u3x_sam_63 223 +# define u3x_con 7 // context +# define u3x_con_2 14 // context +# define u3x_con_3 15 // context +# define u3x_con_sam 30 // sample in gate context +# define u3x_con_sam_2 60 +# define u3x_con_sam_3 61 +# define u3x_bat 2 // battery + + + /** Macros. + **/ + /* Word axis macros. For 31-bit axes only. + */ + + /* u3x_at (u3at): fragment. + */ +# define u3x_at(a, b) u3x_good(u3r_at(a, b)) +# define u3at(a, b) u3x_at(a, b) + + /* u3x_bite(): xtract/default $bloq and $step from $bite. + */ +# define u3x_bite(a, b, c) \ + do { \ + if ( c3n == u3r_bite(a, b, c) ) { \ + u3m_bail(c3__exit); \ + } \ + } while (0) + + /* u3x_dep(): number of axis bits. + */ +# define u3x_dep(a_w) (c3_bits_word(a_w) - 1) + + /* u3x_cap(): root axis, 2 or 3. + */ +# define u3x_cap(a_w) ({ \ + u3_assert( 1 < a_w ); \ + (0x2 | (a_w >> (u3x_dep(a_w) - 1))); }) + + /* u3x_mas(): remainder after cap. + */ +# define u3x_mas(a_w) ({ \ + u3_assert( 1 < a_w ); \ + ( (a_w & ~(1 << u3x_dep(a_w))) | (1 << (u3x_dep(a_w) - 1)) ); }) + + /* u3x_peg(): connect two axes. + */ +# define u3x_peg(a_w, b_w) \ + ( (a_w << u3x_dep(b_w)) | (b_w &~ (1 << u3x_dep(b_w))) ) + + /* u3x_cell(): divide `a` as a cell `[b c]`. + */ +# define u3x_cell(a, b, c) \ + do { \ + if ( c3n == u3r_cell(a, b, c) ) { \ + u3m_bail(c3__exit); \ + } \ + } while (0) + + /* u3x_trel(): divide `a` as a trel `[b c d]`, or bail. + */ +# define u3x_trel(a, b, c, d) \ + do { \ + if ( c3n == u3r_trel(a, b, c, d) ) { \ + u3m_bail(c3__exit); \ + } \ + } while (0) + + /* u3x_qual(): divide `a` as a quadruple `[b c d e]`. + */ +# define u3x_qual(a, b, c, d, e) \ + do { \ + if ( c3n == u3r_qual(a, b, c, d, e) ) { \ + u3m_bail(c3__exit); \ + } \ + } while (0) + + /* u3x_quil(): divide `a` as a quintuple `[b c d e f]`. + */ +# define u3x_quil(a, b, c, d, e, f) \ + do { \ + if ( c3n == u3r_quil(a, b, c, d, e, f) ) { \ + u3m_bail(c3__exit); \ + } \ + } while (0) + + /* u3x_hext(): divide `a` as a hextuple `[b c d e f g]`. + */ +# define u3x_hext(a, b, c, d, e, f, g) \ + do { \ + if ( c3n == u3r_hext(a, b, c, d, e, f, g) ) { \ + u3m_bail(c3__exit); \ + } \ + } while (0) + + /** Functions. + **/ + /** u3x_*: read, but bail with c3__exit on a crash. + **/ + /* u3x_atom(): atom or exit. + */ + inline u3_atom + u3x_atom(u3_noun a) + { + return ( c3y == u3a_is_cell(a) ) ? u3m_bail(c3__exit) : a; + } + + /* u3x_good(): test for u3_none. + */ + inline u3_noun + u3x_good(u3_weak som) + { + return ( u3_none == som ) ? u3m_bail(c3__exit) : som; + } + + /* u3x_loob(): loobean or exit. + */ + inline c3_o + u3x_loob(u3_noun a) + { + return ( a > 1 ) ? u3m_bail(c3__exit) : a; + } + + /* u3x_mean(): + ** + ** Attempt to deconstruct `a` by axis, noun pairs; 0 terminates. + ** Axes must be sorted in tree order. + */ + void + u3x_mean(u3_noun a, ...); + +#endif /* ifndef U3_XTRACT_H */ diff --git a/vere/pkg/noun/zave.c b/vere/pkg/noun/zave.c new file mode 100644 index 0000000..2530718 --- /dev/null +++ b/vere/pkg/noun/zave.c @@ -0,0 +1,157 @@ +/// @file + +#include "zave.h" + +#include "allocate.h" +#include "hashtable.h" +#include "imprison.h" +#include "options.h" +#include "vortex.h" + +/* u3z_key(): construct a memo cache-key. Arguments retained. +*/ +u3_noun +u3z_key(c3_m fun, u3_noun one) +{ + return u3nc(fun, u3k(one)); +} +u3_noun +u3z_key_2(c3_m fun, u3_noun one, u3_noun two) +{ + return u3nt(fun, u3k(one), u3k(two)); +} +u3_noun +u3z_key_3(c3_m fun, u3_noun one, u3_noun two, u3_noun tri) +{ + return u3nq(fun, u3k(one), u3k(two), u3k(tri)); +} +u3_noun +u3z_key_4(c3_m fun, u3_noun one, u3_noun two, u3_noun tri, u3_noun qua) +{ + return u3nc(fun, u3nq(u3k(one), u3k(two), u3k(tri), u3k(qua))); +} +u3_noun +u3z_key_5(c3_m fun, u3_noun one, u3_noun two, u3_noun tri, u3_noun qua, u3_noun qin) +{ + return u3nc(fun, u3nq(u3k(one), u3k(two), u3k(tri), u3nc(u3k(qua), u3k(qin)))); +} + +/* _har(): get the memo cache for the given cid. +*/ +static u3p(u3h_root) +_har(u3a_road* rod_u, u3z_cid cid) +{ + switch ( cid ) { + case u3z_memo_toss: + return rod_u->cax.har_p; + case u3z_memo_keep: + return rod_u->cax.per_p; + } + u3_assert(0); +} + +/* u3z_find(): find in memo cache. Arguments retained. +*/ +u3_weak +u3z_find(u3z_cid cid, u3_noun key) +{ + if ( (u3z_memo_toss == cid) || (u3C.wag_w & u3o_cash) ) { + // XX under cash lookup in parent roads, + // copying cache hits into the current road + return u3h_get(_har(u3R, cid), key); + } + else { + // XX needs to be benchmarked (up vs. down search) + u3a_road* rod_u = &(u3H->rod_u); + while ( 1 ) { + u3_weak got = u3h_get(_har(rod_u, cid), key); + if ( u3_none != got ) { + return got; + } + if ( 0 == rod_u->kid_p ) { + return u3_none; + } + rod_u = u3to(u3a_road, rod_u->kid_p); + }; + } +} + +/* u3z_find_up(): find in persistent memo cache, + starting from the current road. Arguments retained +*/ +u3_weak +u3z_find_up(u3_noun key) +{ + u3a_road* rod_u = u3R; + while ( 1 ) { + u3_weak got = u3h_get(_har(rod_u, u3z_memo_keep), key); + if ( u3_none != got ) { + return got; + } + if ( rod_u == &(u3H->rod_u) ) { + return u3_none; + } + rod_u = u3to(u3a_road, rod_u->par_p); + } +} + +u3_weak +u3z_find_m(u3z_cid cid, c3_m fun, u3_noun one) +{ + u3_noun key = u3nc(fun, u3k(one)); + u3_weak val; + val = u3z_find(cid, key); + u3z(key); + + return val; +} + +/* u3z_save(): save in memo cache. TRANSFER key; RETAIN val +*/ +u3_noun +u3z_save(u3z_cid cid, u3_noun key, u3_noun val) +{ + u3h_put(_har(u3R, cid), key, u3k(val)); + u3z(key); + return val; +} + +/* u3z_save_m(): save in memo cache. Arguments retained. +*/ +u3_noun +u3z_save_m(u3z_cid cid, c3_m fun, u3_noun one, u3_noun val) +{ + u3_noun key = u3nc(fun, u3k(one)); + + u3h_put(_har(u3R, cid), key, u3k(val)); + u3z(key); + return val; +} + +/* u3z_uniq(): uniquify with memo cache. XX not used. +*/ +u3_noun +u3z_uniq(u3z_cid cid, u3_noun som) +{ + u3_noun key = u3nc(c3__uniq, u3k(som)); + u3_noun val = u3h_get(_har(u3R, cid), key); + + if ( u3_none != val ) { + u3z(key); u3z(som); return val; + } + else { + u3h_put(_har(u3R, cid), key, u3k(som)); + return som; + } +} + +/* u3z_reap(): promote memoization cache state. +*/ +void +u3z_reap(u3z_cid cid, u3p(u3h_root) har_p) +{ + u3_assert(u3z_memo_toss != cid); + + u3h_uni(_har(u3R, cid), har_p); + u3h_free(har_p); +} diff --git a/vere/pkg/noun/zave.h b/vere/pkg/noun/zave.h new file mode 100644 index 0000000..f7e2be9 --- /dev/null +++ b/vere/pkg/noun/zave.h @@ -0,0 +1,69 @@ +/// @file + +#ifndef U3_ZAVE_H +#define U3_ZAVE_H + +#include "c3/c3.h" +#include "types.h" + + /** Memoization. + *** + *** The memo cache is keyed by an arbitrary symbolic function + *** and a noun argument to that (logical) function. Functions + *** are predefined by C-level callers, but 0 means nock. + *** + *** Memo functions RETAIN keys and transfer values. + **/ + /* u3z_cid: cache id + */ + typedef enum { + u3z_memo_toss = 0, + u3z_memo_keep = 1, + // u3z_memo_ford = 2, + // u3z_memo_ames = 3, + // ... + } u3z_cid; + + /* u3z_key*(): construct a memo cache-key. Arguments retained. + */ + u3_noun u3z_key(c3_m, u3_noun); + u3_noun u3z_key_2(c3_m, u3_noun, u3_noun); + u3_noun u3z_key_3(c3_m, u3_noun, u3_noun, u3_noun); + u3_noun u3z_key_4(c3_m, u3_noun, u3_noun, u3_noun, u3_noun); + u3_noun u3z_key_5(c3_m, u3_noun, u3_noun, u3_noun, u3_noun, u3_noun); + + /* u3z_find*(): find in memo cache. Arguments retained + */ + u3_weak u3z_find(u3z_cid cid, u3_noun key); + u3_weak u3z_find_m(u3z_cid cid, c3_m fun_m, u3_noun one); + u3_weak u3z_find_up(u3_noun key); + + /* u3z_save(): save in memo cache. TRANSFER key; RETAIN val; + */ + u3_noun u3z_save(u3z_cid cid, u3_noun key, u3_noun val); + + /* u3z_save_m(): save in memo cache. Arguments retained + */ + u3_noun u3z_save_m(u3z_cid cid, c3_m fun_m, u3_noun one, u3_noun val); + + /* u3z_uniq(): uniquify with memo cache. + */ + u3_noun + u3z_uniq(u3z_cid cid, u3_noun som); + + /* u3z_reap(): promote memoization cache state. + */ + void + u3z_reap(u3z_cid cid, u3p(u3h_root) har_p); + + /* u3z_free(): free memoization cache. + */ + void + u3z_free(u3z_cid cid); + + /* u3z_ream(): refresh after restoring from checkpoint. + */ + void + u3z_ream(u3z_cid cid); + +#endif /* ifndef U3_ZAVE_H */ diff --git a/vere/pkg/past/build.zig b/vere/pkg/past/build.zig new file mode 100644 index 0000000..6f059af --- /dev/null +++ b/vere/pkg/past/build.zig @@ -0,0 +1,88 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const copts: []const []const u8 = + b.option([]const []const u8, "copt", "") orelse &.{}; + + const pkg_past = b.addStaticLibrary(.{ + .name = "past", + .target = target, + .optimize = optimize, + }); + + if (target.result.os.tag.isDarwin() and !target.query.isNative()) { + const macos_sdk = b.lazyDependency("macos_sdk", .{ + .target = target, + .optimize = optimize, + }); + if (macos_sdk != null) { + pkg_past.addSystemIncludePath(macos_sdk.?.path("usr/include")); + pkg_past.addLibraryPath(macos_sdk.?.path("usr/lib")); + pkg_past.addFrameworkPath(macos_sdk.?.path("System/Library/Frameworks")); + } + } + + const pkg_c3 = b.dependency("pkg_c3", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_noun = b.dependency("pkg_noun", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const gmp = b.dependency("gmp", .{ + .target = target, + .optimize = optimize, + }); + + pkg_past.linkLibC(); + + pkg_past.linkLibrary(pkg_c3.artifact("c3")); + pkg_past.linkLibrary(pkg_noun.artifact("noun")); + pkg_past.linkLibrary(gmp.artifact("gmp")); + + var flags = std.ArrayList([]const u8).init(b.allocator); + defer flags.deinit(); + try flags.appendSlice(&.{ + // "-pedantic", + "-std=gnu23", + }); + try flags.appendSlice(copts); + + pkg_past.addCSourceFiles(.{ + .root = b.path(""), + .files = &c_source_files, + .flags = flags.items, + }); + + for (install_headers) |h| pkg_past.installHeader(b.path(h), h); + + b.installArtifact(pkg_past); +} + +const c_source_files = [_][]const u8{ + "v1.c", + "v2.c", + "v3.c", + "v4.c", + "migrate_v2.c", + "migrate_v3.c", + "migrate_v4.c", + "migrate_v5.c", +}; + +const install_headers = [_][]const u8{ + "v1.h", + "v2.h", + "v3.h", + "v4.h", + "v5.h", + "migrate.h", +}; diff --git a/vere/pkg/past/build.zig.zon b/vere/pkg/past/build.zig.zon new file mode 100644 index 0000000..f69189b --- /dev/null +++ b/vere/pkg/past/build.zig.zon @@ -0,0 +1,23 @@ +.{ + .name = "past", + .version = "0.0.1", + .dependencies = .{ + .macos_sdk = .{ + .url = "https://github.com/joseluisq/macosx-sdks/releases/download/14.5/MacOSX14.5.sdk.tar.xz", + .hash = "N-V-__8AAKtK4FMzqcFsY_ZrpMg9bGH0h7BqZDXtVyAerMtM", + .lazy = true, + }, + .pkg_c3 = .{ + .path = "../c3", + }, + .pkg_noun = .{ + .path = "../noun", + }, + .gmp = .{ + .path = "../../ext/gmp", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/pkg/past/migrate.h b/vere/pkg/past/migrate.h new file mode 100644 index 0000000..14f6022 --- /dev/null +++ b/vere/pkg/past/migrate.h @@ -0,0 +1,13 @@ +#ifndef U3_MIGRATE_H +#define U3_MIGRATE_H + +void +u3_migrate_v2(c3_d eve_d); +void +u3_migrate_v3(c3_d eve_d); +void +u3_migrate_v4(c3_d eve_d); +void +u3_migrate_v5(c3_d eve_d); + +#endif /* U3_MIGRATE_H */ diff --git a/vere/pkg/past/migrate_v2.c b/vere/pkg/past/migrate_v2.c new file mode 100644 index 0000000..2aed4d9 --- /dev/null +++ b/vere/pkg/past/migrate_v2.c @@ -0,0 +1,368 @@ +#include "v1.h" +#include "v2.h" +#include "options.h" + +static void +_migv2h_rewrite(u3p(u3h_root) har_p); + + +/*** allocate.c +***/ + +static u3_noun +_migv2_rewritten_noun(u3_noun som) +{ + if ( c3y == u3a_v2_is_cat(som) ) { + return som; + } + u3_post som_p = u3a_v2_rewritten(u3a_v1_to_off(som)); + + if ( c3y == u3a_v2_is_pug(som) ) { + som_p = u3a_v2_to_pug(som_p); + } + else { + som_p = u3a_v2_to_pom(som_p); + } + + return som_p; +} + +static void +_migv2_rewrite_noun(u3_noun som) +{ + if ( c3n == u3a_v2_is_cell(som) ) { + return; + } + + if ( c3n == u3a_v2_rewrite_ptr(u3a_v1_to_ptr((som))) ) return; + + u3a_v2_cell* cel = (u3a_v2_cell*) u3a_v1_to_ptr(som); + + _migv2_rewrite_noun(cel->hed); + _migv2_rewrite_noun(cel->tel); + + cel->hed = _migv2_rewritten_noun(cel->hed); + cel->tel = _migv2_rewritten_noun(cel->tel); +} + +/* _migv2a_rewrite_compact(): rewrite pointers in ad-hoc persistent road structures. +*/ +void +_migv2a_rewrite_compact(void) +{ + _migv2_rewrite_noun(u3R_v2->ski.gul); + _migv2_rewrite_noun(u3R_v2->bug.tax); + _migv2_rewrite_noun(u3R_v2->bug.mer); + _migv2_rewrite_noun(u3R_v2->pro.don); + _migv2_rewrite_noun(u3R_v2->pro.day); + _migv2_rewrite_noun(u3R_v2->pro.trace); + _migv2h_rewrite(u3R_v2->cax.har_p); + + u3R_v2->ski.gul = _migv2_rewritten_noun(u3R_v2->ski.gul); + u3R_v2->bug.tax = _migv2_rewritten_noun(u3R_v2->bug.tax); + u3R_v2->bug.mer = _migv2_rewritten_noun(u3R_v2->bug.mer); + u3R_v2->pro.don = _migv2_rewritten_noun(u3R_v2->pro.don); + u3R_v2->pro.day = _migv2_rewritten_noun(u3R_v2->pro.day); + u3R_v2->pro.trace = _migv2_rewritten_noun(u3R_v2->pro.trace); + u3R_v2->cax.har_p = u3a_v2_rewritten(u3R_v2->cax.har_p); +} + + +/*** hashtable.c +***/ + +/* _migv2h_rewrite_buck(): rewrite buck for compaction. +*/ +void +_migv2h_rewrite_buck(u3h_v2_buck* hab_u) +{ + if ( c3n == u3a_v2_rewrite_ptr(hab_u) ) return; + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + u3_noun som = u3h_v2_slot_to_noun(hab_u->sot_w[i_w]); + hab_u->sot_w[i_w] = u3h_v2_noun_to_slot(_migv2_rewritten_noun(som)); + _migv2_rewrite_noun(som); + } +} + +/* _migv2h_rewrite_node(): rewrite node for compaction. +*/ +void +_migv2h_rewrite_node(u3h_v2_node* han_u, c3_w lef_w) +{ + if ( c3n == u3a_v2_rewrite_ptr(han_u) ) return; + + c3_w len_w = c3_pc_w(han_u->map_w); + c3_w i_w; + + lef_w -= 5; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w sot_w = han_u->sot_w[i_w]; + + if ( _(u3h_v2_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_v2_slot_to_noun(sot_w); + han_u->sot_w[i_w] = u3h_v2_noun_to_slot(_migv2_rewritten_noun(kev)); + + _migv2_rewrite_noun(kev); + } + else { + void* hav_v = u3h_v1_slot_to_node(sot_w); + u3h_v2_node* nod_u = u3v2to(u3h_v2_node, u3a_v2_rewritten(u3v2of(u3h_v2_node,hav_v))); + + han_u->sot_w[i_w] = u3h_v2_node_to_slot(nod_u); + + if ( 0 == lef_w ) { + _migv2h_rewrite_buck(hav_v); + } else { + _migv2h_rewrite_node(hav_v, lef_w); + } + } + } +} + +/* _migv2h_rewrite(): rewrite pointers during compaction. +*/ +void +_migv2h_rewrite(u3p(u3h_v2_root) har_p) +{ + u3h_v2_root* har_u = u3v2to(u3h_v2_root, har_p); + c3_w i_w; + + if ( c3n == u3a_v2_rewrite_ptr(har_u) ) return; + + for ( i_w = 0; i_w < 64; i_w++ ) { + c3_w sot_w = har_u->sot_w[i_w]; + + if ( _(u3h_v2_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_v2_slot_to_noun(sot_w); + har_u->sot_w[i_w] = u3h_v2_noun_to_slot(_migv2_rewritten_noun(kev)); + + _migv2_rewrite_noun(kev); + } + else if ( _(u3h_v2_slot_is_node(sot_w)) ) { + u3h_v2_node* han_u = (u3h_v2_node*) u3h_v1_slot_to_node(sot_w); + u3h_v2_node* nod_u = u3v2to(u3h_v2_node, u3a_v2_rewritten(u3v2of(u3h_v2_node,han_u))); + + har_u->sot_w[i_w] = u3h_v2_node_to_slot(nod_u); + + _migv2h_rewrite_node(han_u, 25); + } + } +} + + +/* _migv2j_rewrite_compact(): rewrite jet state for compaction. + * + * NB: u3R_v2->jed.han_p *must* be cleared (currently via u3j_v2_reclaim above) + * since it contains hanks which are not nouns but have loom pointers. + * Alternately, rewrite the entries with u3h_v2_walk, using u3j_v2_mark as a + * template for how to walk. There's an untested attempt at this in git + * history at e8a307a. +*/ +void +_migv2j_rewrite_compact(void) +{ + _migv2h_rewrite(u3R_v2->jed.war_p); + _migv2h_rewrite(u3R_v2->jed.cod_p); + _migv2h_rewrite(u3R_v2->jed.han_p); + _migv2h_rewrite(u3R_v2->jed.bas_p); + + _migv2h_rewrite(u3R_v2->jed.hot_p); + u3R_v2->jed.hot_p = u3a_v2_rewritten(u3R_v2->jed.hot_p); + + u3R_v2->jed.war_p = u3a_v2_rewritten(u3R_v2->jed.war_p); + u3R_v2->jed.cod_p = u3a_v2_rewritten(u3R_v2->jed.cod_p); + u3R_v2->jed.han_p = u3a_v2_rewritten(u3R_v2->jed.han_p); + u3R_v2->jed.bas_p = u3a_v2_rewritten(u3R_v2->jed.bas_p); +} + +/* _migv2n_rewrite_compact(): rewrite the bytecode cache for compaction. + * + * NB: u3R_v2->byc.har_p *must* be cleared (currently via u3n_v2_reclaim above), + * since it contains things that look like nouns but aren't. + * Specifically, it contains "cells" where the tail is a + * pointer to a u3a_v2_malloc'ed block that contains loom pointers. + * + * You should be able to walk this with u3h_v2_walk and rewrite the + * pointers, but you need to be careful to handle that u3a_v2_malloc + * pointers can't be turned into a box by stepping back two words. You + * must step back one word to get the padding, step then step back that + * many more words (plus one?). + */ +void +_migv2n_rewrite_compact(void) +{ + _migv2h_rewrite(u3R_v2->byc.har_p); + u3R_v2->byc.har_p = u3a_v2_rewritten(u3R_v2->byc.har_p); +} + +/* _migv2v_rewrite_compact(): rewrite arvo kernel for compaction. +*/ +void +_migv2v_rewrite_compact(void) +{ + u3v_v2_arvo* arv_u = &(u3H_v2->arv_u); + + _migv2_rewrite_noun(arv_u->roc); + _migv2_rewrite_noun(arv_u->now); + _migv2_rewrite_noun(arv_u->yot); + + arv_u->roc = _migv2_rewritten_noun(arv_u->roc); + arv_u->now = _migv2_rewritten_noun(arv_u->now); + arv_u->yot = _migv2_rewritten_noun(arv_u->yot); +} + +/* _cm_pack_rewrite(): trace through arena, rewriting pointers. +*/ +static void +_cm_pack_rewrite(void) +{ + _migv2v_rewrite_compact(); + _migv2j_rewrite_compact(); + _migv2n_rewrite_compact(); + _migv2a_rewrite_compact(); +} + +static void +_migrate_reclaim(void) +{ + // XX update this and similar printfs + fprintf(stderr, "loom: migration reclaim\r\n"); + u3m_v1_reclaim(); +} + +static void +_migrate_seek(const u3a_v2_road *rod_u) +{ + /* + very much like u3a_v2_pack_seek with the following changes: + - there is no need to account for free space as |pack is performed before + the migration + - odd sized boxes will be padded by one word to achieve an even size + - rut will be moved from one word ahead of u3_Loom to two words ahead + */ + c3_w * box_w = u3a_v2_into(rod_u->rut_p); + c3_w * end_w = u3a_v2_into(rod_u->hat_p); + u3_post new_p = (rod_u->rut_p + 1 + c3_wiseof(u3a_v2_box)); + u3a_v2_box * box_u = (void *)box_w; + + fprintf(stderr, "loom: migration seek\r\n"); + + for (; box_w < end_w + ; box_w += box_u->siz_w + , box_u = (void*)box_w) + { + if (!box_u->use_w) + continue; + u3_assert(box_u->siz_w); + u3_assert(box_u->use_w); + box_w[box_u->siz_w - 1] = new_p; + new_p = c3_align(new_p + box_u->siz_w, 2, C3_ALGHI); + } +} + +static void +_migrate_rewrite(void) +{ + fprintf(stderr, "loom: migration rewrite\r\n"); + + _cm_pack_rewrite(); +} + +static void +_migrate_move(u3a_v2_road *rod_u) +{ + fprintf(stderr, "loom: migration move\r\n"); + + c3_z hiz_z = u3a_v2_heap(rod_u) * sizeof(c3_w); + + /* calculate required shift distance to prevent write head overlapping read head */ + c3_w off_w = 1; /* at least 1 word because u3R_v1->rut_p migrates from 1 to 2 */ + for (u3a_v2_box *box_u = u3a_v2_into(rod_u->rut_p) + ; (void *)box_u < u3a_v2_into(rod_u->hat_p) + ; box_u = (void *)((c3_w *)box_u + box_u->siz_w)) + off_w += box_u->siz_w & 1; /* odd-sized boxes are padded by one word */ + + /* shift */ + memmove(u3a_v2_into(u3H_v2->rod_u.rut_p + off_w), + u3a_v2_into(u3H_v2->rod_u.rut_p), + hiz_z); + /* manually zero the former rut */ + *(c3_w *)u3a_v2_into(rod_u->rut_p) = 0; + + /* relocate boxes to DWORD-aligned addresses stored in trailing size word */ + c3_w *box_w = u3a_v2_into(rod_u->rut_p + off_w); + c3_w *end_w = u3a_v2_into(rod_u->hat_p + off_w); + u3a_v2_box *old_u = (void *)box_w; + c3_w siz_w = old_u->siz_w; + u3p(c3_w) new_p = rod_u->rut_p + 1 + c3_wiseof(u3a_v2_box); + c3_w *new_w; + + for (; box_w < end_w + ; box_w += siz_w + , old_u = (void *)box_w + , siz_w = old_u->siz_w) { + old_u->use_w &= 0x7fffffff; + + if (!old_u->use_w) + continue; + + new_w = (void *)u3a_v2_botox(u3a_v2_into(new_p)); + u3_assert(box_w[siz_w - 1] == new_p); + u3_assert(new_w <= box_w); + + c3_w i_w; + for (i_w = 0; i_w < siz_w - 1; i_w++) + new_w[i_w] = box_w[i_w]; + + if (siz_w & 1) { + new_w[i_w++] = 0; /* pad odd sized boxes */ + new_w[i_w++] = siz_w + 1; /* restore trailing size word */ + new_w[0] = siz_w + 1; /* and the leading size word */ + } + else { + new_w[i_w++] = siz_w; + } + + new_p += i_w; + } + + /* restore proper heap state */ + rod_u->rut_p = 2; + rod_u->hat_p = new_p - c3_wiseof(u3a_v2_box); + + /* like |pack, clear the free lists and cell allocator */ + for (c3_w i_w = 0; i_w < u3a_v2_fbox_no; i_w++) + u3R_v1->all.fre_p[i_w] = 0; + + u3R_v1->all.fre_w = 0; + u3R_v1->all.cel_p = 0; +} + +void +u3_migrate_v2(c3_d eve_d) +{ + u3_v1_load(u3C.wor_i); + + if ( eve_d != u3H_v1->arv_u.eve_d ) { + fprintf(stderr, "loom: migrate (v2) stale snapshot: have %" + PRIu64 ", need %" PRIu64 "\r\n", + u3H_v1->arv_u.eve_d, eve_d); + abort(); + } + + fprintf(stderr, "loom: pointer compression migration running...\r\n"); + + /* perform the migration in a pattern similar to |pack */ + _migrate_reclaim(); + _migrate_seek(&u3H_v1->rod_u); + _migrate_rewrite(); + _migrate_move(&u3H_v1->rod_u); + + /* finally update the version and commit to disk */ + u3H_v1->ver_w = U3V_VER2; + + fprintf(stderr, "loom: pointer compression migration done\r\n"); +} diff --git a/vere/pkg/past/migrate_v3.c b/vere/pkg/past/migrate_v3.c new file mode 100644 index 0000000..9c79413 --- /dev/null +++ b/vere/pkg/past/migrate_v3.c @@ -0,0 +1,100 @@ +#include "v2.h" +#include "v3.h" +#include "options.h" + +/* u3_migrate_v3: perform loom migration if necessary. +*/ +void +u3_migrate_v3(c3_d eve_d) +{ + u3_v2_load(u3C.wor_i); + + if ( eve_d != u3H_v2->arv_u.eve_d ) { + fprintf(stderr, "loom: migrate (v3) stale snapshot: have %" + PRIu64 ", need %" PRIu64 "\r\n", + u3H_v2->arv_u.eve_d, eve_d); + abort(); + } + + fprintf(stderr, "loom: memoization migration running...\r\n"); + + // set globals (required for aliased functions) + u3R_v3 = (u3a_v3_road*)u3R_v2; + u3H_v3 = (u3v_v3_home*)u3H_v2; + u3a_v2_ream(); + + // free bytecode caches in old road + u3j_v2_reclaim(); + u3n_v2_reclaim(); + + // old road + u3v_v2_home* hum_u = u3H_v2; + u3a_v2_road* rud_u = &hum_u->rod_u; + + // new home, new road + u3v_v3_home hom_u = {0}; + u3a_v3_road rod_u = {0}; + + // copy members, one-by-one, from old road to new road + rod_u.par_p = rud_u->par_p; + rod_u.kid_p = rud_u->kid_p; + rod_u.nex_p = rud_u->nex_p; + + rod_u.cap_p = rud_u->cap_p; + rod_u.hat_p = rud_u->hat_p; + rod_u.mat_p = rud_u->mat_p; + rod_u.rut_p = rud_u->rut_p; + rod_u.ear_p = rud_u->ear_p; + + // no need to zero-out fut_w + // no need to do anything with esc + + rod_u.how.fag_w = rud_u->how.fag_w; + + memcpy(rod_u.all.fre_p, rud_u->all.fre_p, sizeof(rud_u->all.fre_p)); + rod_u.all.cel_p = rud_u->all.cel_p; + rod_u.all.fre_w = rud_u->all.fre_w; + rod_u.all.max_w = rud_u->all.max_w; + + rod_u.jed.hot_p = rud_u->jed.hot_p; + rod_u.jed.war_p = rud_u->jed.war_p; + rod_u.jed.cod_p = rud_u->jed.cod_p; + rod_u.jed.han_p = rud_u->jed.han_p; + rod_u.jed.bas_p = rud_u->jed.bas_p; + + rod_u.byc.har_p = rud_u->byc.har_p; + + rod_u.ski.gul = rud_u->ski.gul; + + rod_u.bug.tax = rud_u->bug.tax; + rod_u.bug.mer = rud_u->bug.mer; + + rod_u.pro.nox_d = rud_u->pro.nox_d; + rod_u.pro.cel_d = rud_u->pro.cel_d; + rod_u.pro.don = rud_u->pro.don; + rod_u.pro.trace = rud_u->pro.trace; + rod_u.pro.day = rud_u->pro.day; + + rod_u.cax.har_p = rud_u->cax.har_p; + + // prepare the new home, update the version + hom_u.arv_u = hum_u->arv_u; + hom_u.rod_u = rod_u; + + // place the new home over the old one + c3_w *mem_w = u3_Loom_v3 + u3a_v3_walign; + c3_w len_w = u3C.wor_i - u3a_v3_walign; + c3_w siz_w = c3_wiseof(u3v_v3_home); + c3_w *mat_w = c3_align(mem_w + len_w - siz_w, u3a_v3_balign, C3_ALGLO); + memcpy(mat_w, &hom_u, sizeof(u3v_v3_home)); + + // set globals + u3H_v3 = (void*)mat_w; + u3R_v3 = &u3H_v3->rod_u; + u3H_v3->ver_w = U3V_VER3; + + // initialize persistent cache + u3R_v3->cax.per_p = u3h_v3_new_cache(u3C.per_w); + + fprintf(stderr, "loom: memoization migration done\r\n"); +} diff --git a/vere/pkg/past/migrate_v4.c b/vere/pkg/past/migrate_v4.c new file mode 100644 index 0000000..3ca4176 --- /dev/null +++ b/vere/pkg/past/migrate_v4.c @@ -0,0 +1,29 @@ +#include "v3.h" +#include "v4.h" +#include "options.h" + +# define u3m_v3_reclaim u3m_v4_reclaim + +/* u3_migrate_v4: perform loom migration if necessary. +*/ +void +u3_migrate_v4(c3_d eve_d) +{ + u3_v3_load(u3C.wor_i); + + if ( eve_d != u3H_v3->arv_u.eve_d ) { + fprintf(stderr, "loom: migrate (v4) stale snapshot: have %" + PRIu64 ", need %" PRIu64 "\r\n", + u3H_v3->arv_u.eve_d, eve_d); + abort(); + } + + fprintf(stderr, "loom: bytecode alignment migration running...\r\n"); + + u3m_v3_reclaim(); + + u3H_v4 = u3H_v3; + u3H_v4->ver_w = U3V_VER4; + + fprintf(stderr, "loom: bytecode alignment migration done\r\n"); +} diff --git a/vere/pkg/past/migrate_v5.c b/vere/pkg/past/migrate_v5.c new file mode 100644 index 0000000..8ceb5db --- /dev/null +++ b/vere/pkg/past/migrate_v5.c @@ -0,0 +1,167 @@ +#include "v4.h" +#include "options.h" + +static c3_d +_v4_hash(u3_noun foo) +{ + return foo * 11400714819323198485ULL; +} + +static c3_i +_v4_cmp(u3_noun a, u3_noun b) +{ + return a == b; +} + +#define NAME _v4_to_v5 +#define KEY_TY u3_noun +#define VAL_TY u3_noun +#define HASH_FN _v4_hash +#define CMPR_FN _v4_cmp +#include "verstable.h" + +typedef struct { + u3_weak hed; + u3_v4_noun cel; +} _copy_frame; + +typedef struct { + _v4_to_v5 map_u; + c3_w len_w; + c3_w siz_w; + _copy_frame *tac; + u3_post ham_p; +} _copy_ctx; + +static u3_atom +_copy_atom(u3_atom old) +{ + u3a_v4_atom *old_u = u3a_v4_to_ptr(old); + c3_w *nov_w = u3a_v5_walloc(old_u->len_w + c3_wiseof(u3a_v5_atom)); + u3a_v5_atom *vat_u = (void *)nov_w; + + vat_u->use_w = 1; + vat_u->mug_w = old_u->mug_w; + vat_u->len_w = old_u->len_w; + + memcpy(vat_u->buf_w, old_u->buf_w, old_u->len_w << 2); + + return u3a_v5_to_pug(u3a_v5_outa(nov_w)); +} + +static u3_noun +_copy_v4_next(_copy_ctx *cop_u, u3_noun old) +{ + _v4_to_v5_itr vit_u; + _copy_frame *top_u; + + while ( 1 ) { + if ( c3y == u3a_v4_is_cat(old) ) return old; + + vit_u = vt_get(&(cop_u->map_u), old); + + if ( !vt_is_end(vit_u) ) return u3a_v5_gain(vit_u.data->val); + + if ( c3n == u3a_v4_is_cell(old) ) { + u3_atom new = _copy_atom(old); + vit_u = vt_insert( &(cop_u->map_u), old, new ); + u3_assert( !vt_is_end(vit_u) ); + return new; + } + + if ( cop_u->len_w == cop_u->siz_w ) { + cop_u->siz_w += c3_min(cop_u->siz_w, 1024); + cop_u->tac = c3_realloc(cop_u->tac, sizeof(*cop_u->tac) * cop_u->siz_w); + } + + top_u = &(cop_u->tac[cop_u->len_w++]); + top_u->hed = u3_v4_none; + top_u->cel = old; + old = u3a_v4_head(old); + continue; + } +} + +static u3_noun +_copy_v4_noun(_copy_ctx *cop_u, u3_noun old) +{ + _v4_to_v5_itr vit_u; + _copy_frame *top_u; + u3a_v4_cell *cel_u; + u3_noun new; + + cop_u->len_w = 0; + + new = _copy_v4_next(cop_u, old); + + while ( cop_u->len_w ) { + top_u = &(cop_u->tac[cop_u->len_w - 1]); + + if ( u3_none == top_u->hed ) { + top_u->hed = new; + new = _copy_v4_next(cop_u, u3a_v4_tail(top_u->cel)); + } + else { + new = u3i_v5_cell(top_u->hed, new); + vit_u = vt_insert( &(cop_u->map_u), top_u->cel, new ); + u3_assert( !vt_is_end(vit_u) ); + cop_u->len_w--; + } + } + + return new; +} + +static void +_copy_v4_hamt(u3_noun kev, void* ptr_v) +{ + _copy_ctx *cop_u = ptr_v; + u3_noun key = _copy_v4_noun(cop_u, u3a_v4_head(kev)); + u3_noun val = _copy_v4_noun(cop_u, u3a_v4_tail(kev)); + u3h_v5_put(cop_u->ham_p, key, val); + u3a_v5_lose(key); +} + +void +u3_migrate_v5(c3_d eve_d) +{ + _copy_ctx cop_u = {0}; + + // XX assumes u3m_init() and u3m_pave(c3y) have already been called + + u3_v4_load(u3C.wor_i); + + if ( eve_d != u3A_v4->eve_d ) { + fprintf(stderr, "loom: migrate (v5) stale snapshot: have %" + PRIu64 ", need %" PRIu64 "\r\n", + u3A_v4->eve_d, eve_d); + abort(); + } + + fprintf(stderr, "loom: allocator migration running...\r\n"); + + cop_u.siz_w = 32; + cop_u.tac = c3_malloc(sizeof(*cop_u.tac) * cop_u.siz_w); + vt_init(&(cop_u.map_u)); + + // XX install cel_p temporarily? + + u3A_v5->eve_d = u3A_v4->eve_d; + u3A_v5->roc = _copy_v4_noun(&cop_u, u3A_v4->roc); + + cop_u.ham_p = u3R_v5->jed.cod_p; + u3h_v4_walk_with(u3R_v4->jed.cod_p, _copy_v4_hamt, &cop_u); + cop_u.ham_p = u3R_v5->cax.per_p; + u3h_v4_walk_with(u3R_v4->cax.per_p, _copy_v4_hamt, &cop_u); + + // NB: pave does *not* allocate hot_p + // + u3j_v5_boot(c3y); + u3j_v5_ream(); + + vt_cleanup(&cop_u.map_u); + + c3_free(cop_u.tac); + + fprintf(stderr, "loom: allocator migration done\r\n"); +} diff --git a/vere/pkg/past/v1.c b/vere/pkg/past/v1.c new file mode 100644 index 0000000..e5349ad --- /dev/null +++ b/vere/pkg/past/v1.c @@ -0,0 +1,636 @@ +#include "v1.h" + + /*** allocate.h + ***/ + +# define u3a_v1_botox u3a_v2_botox +# define u3a_v1_box u3a_v2_box +# define u3a_v1_cell u3a_v2_cell +# define u3a_v1_fbox u3a_v2_fbox +# define u3a_v1_fbox_no u3a_v2_fbox_no +# define u3a_v1_into u3a_v2_into +# define u3a_v1_is_cat u3a_v2_is_cat +# define u3a_v1_is_north u3a_v2_is_north +# define u3a_v1_is_pom u3a_v2_is_pom +# define u3a_v1_minimum u3a_v2_minimum +# define u3a_v1_outa u3a_v2_outa + +# define u3v1to u3v2to +# define u3v1of u3v2of + + /*** hashtable.h + ***/ + +# define u3h_v1_buck u3h_v2_buck +# define u3h_v1_node u3h_v2_node +# define u3h_v1_root u3h_v2_root +# define u3h_v1_slot_is_node u3h_v2_slot_is_node +# define u3h_v1_slot_is_noun u3h_v2_slot_is_noun +# define u3h_v1_slot_to_noun u3h_v2_slot_to_noun + + /* u3h_v1_free(): free hashtable. + */ + void + u3h_v1_free_nodes(u3p(u3h_v1_root) har_p); + + + /*** jets.h + ***/ +# define u3j_v1_fink u3j_v2_fink +# define u3j_v1_fist u3j_v2_fist +# define u3j_v1_hank u3j_v2_hank +# define u3j_v1_rite u3j_v2_rite +# define u3j_v1_site u3j_v2_site + + + /*** nock.h + ***/ +# define u3n_v1_memo u3n_v2_memo +# define u3n_v1_prog u3n_v2_prog + + + /*** vortex.h + ***/ +# define u3A_v1 u3A_v2 + + +/*** allocate.c +***/ + +/* _box_v1_slot(): select the right free list to search for a block. +*/ +static c3_w +_box_v1_slot(c3_w siz_w) +{ + if ( siz_w < u3a_v1_minimum ) { + return 0; + } + else { + c3_w i_w = 1; + + while ( 1 ) { + if ( i_w == u3a_v1_fbox_no ) { + return (i_w - 1); + } + if ( siz_w < 16 ) { + return i_w; + } + siz_w = (siz_w + 1) >> 1; + i_w += 1; + } + } +} + +/* _box_v1_make(): construct a box. +*/ +static u3a_v1_box* +_box_v1_make(void* box_v, c3_w siz_w, c3_w use_w) +{ + u3a_v1_box* box_u = box_v; + c3_w* box_w = box_v; + + u3_assert(siz_w >= u3a_v1_minimum); + + box_w[0] = siz_w; + box_w[siz_w - 1] = siz_w; + box_u->use_w = use_w; + + return box_u; +} + +/* _box_v1_attach(): attach a box to the free list. +*/ +static void +_box_v1_attach(u3a_v1_box* box_u) +{ + u3_assert(box_u->siz_w >= (1 + c3_wiseof(u3a_v1_fbox))); + u3_assert(0 != u3v1of(u3a_v1_fbox, box_u)); + + { + c3_w sel_w = _box_v1_slot(box_u->siz_w); + u3p(u3a_v1_fbox) fre_p = u3v1of(u3a_v1_fbox, box_u); + u3p(u3a_v1_fbox)* pfr_p = &u3R_v1->all.fre_p[sel_w]; + u3p(u3a_v1_fbox) nex_p = *pfr_p; + + u3v1to(u3a_v1_fbox, fre_p)->pre_p = 0; + u3v1to(u3a_v1_fbox, fre_p)->nex_p = nex_p; + if ( u3v1to(u3a_v1_fbox, fre_p)->nex_p ) { + u3v1to(u3a_v1_fbox, u3v1to(u3a_v1_fbox, fre_p)->nex_p)->pre_p = fre_p; + } + (*pfr_p) = fre_p; + } +} + +/* _box_v1_detach(): detach a box from the free list. +*/ +static void +_box_v1_detach(u3a_v1_box* box_u) +{ + u3p(u3a_v1_fbox) fre_p = u3v1of(u3a_v1_fbox, box_u); + u3p(u3a_v1_fbox) pre_p = u3v1to(u3a_v1_fbox, fre_p)->pre_p; + u3p(u3a_v1_fbox) nex_p = u3v1to(u3a_v1_fbox, fre_p)->nex_p; + + + if ( nex_p ) { + if ( u3v1to(u3a_v1_fbox, nex_p)->pre_p != fre_p ) { + u3_assert(!"loom: corrupt"); + } + u3v1to(u3a_v1_fbox, nex_p)->pre_p = pre_p; + } + if ( pre_p ) { + if( u3v1to(u3a_v1_fbox, pre_p)->nex_p != fre_p ) { + u3_assert(!"loom: corrupt"); + } + u3v1to(u3a_v1_fbox, pre_p)->nex_p = nex_p; + } + else { + c3_w sel_w = _box_v1_slot(box_u->siz_w); + + if ( fre_p != u3R_v1->all.fre_p[sel_w] ) { + u3_assert(!"loom: corrupt"); + } + u3R_v1->all.fre_p[sel_w] = nex_p; + } +} + +/* _box_v1_free(): free and coalesce. +*/ +static void +_box_v1_free(u3a_v1_box* box_u) +{ + c3_w* box_w = (c3_w *)(void *)box_u; + + u3_assert(box_u->use_w != 0); + box_u->use_w -= 1; + if ( 0 != box_u->use_w ) { + return; + } + + // we're always migrating a north road, so no need to check for it + { + /* Try to coalesce with the block below. + */ + if ( box_w != u3a_v1_into(u3R_v1->rut_p) ) { + c3_w laz_w = *(box_w - 1); + u3a_v1_box* pox_u = (u3a_v1_box*)(void *)(box_w - laz_w); + + if ( 0 == pox_u->use_w ) { + _box_v1_detach(pox_u); + _box_v1_make(pox_u, (laz_w + box_u->siz_w), 0); + + box_u = pox_u; + box_w = (c3_w*)(void *)pox_u; + } + } + + /* Try to coalesce with the block above, or the wilderness. + */ + if ( (box_w + box_u->siz_w) == u3a_v1_into(u3R_v1->hat_p) ) { + u3R_v1->hat_p = u3a_v1_outa(box_w); + } + else { + u3a_v1_box* nox_u = (u3a_v1_box*)(void *)(box_w + box_u->siz_w); + + if ( 0 == nox_u->use_w ) { + _box_v1_detach(nox_u); + _box_v1_make(box_u, (box_u->siz_w + nox_u->siz_w), 0); + } + _box_v1_attach(box_u); + } + } +} + +/* u3a_v1_wfree(): free storage. +*/ +void +u3a_v1_wfree(void* tox_v) +{ + _box_v1_free(u3a_v1_botox(tox_v)); +} + +/* u3a_v1_free(): free for aligned malloc. +*/ +void +u3a_v1_free(void* tox_v) +{ + if (NULL == tox_v) + return; + + c3_w* tox_w = tox_v; + c3_w pad_w = tox_w[-1]; + c3_w* org_w = tox_w - (pad_w + 1); + + u3a_v1_wfree(org_w); +} + +/* u3a_v1_reclaim(): clear ad-hoc persistent caches to reclaim memory. +*/ +void +u3a_v1_reclaim(void) +{ + // clear the memoization cache + // + u3h_v1_free_nodes(u3R_v1->cax.har_p); +} + +/* _me_v1_lose_north(): lose on a north road. +*/ +static void +_me_v1_lose_north(u3_noun dog) +{ +top: + { + c3_w* dog_w = u3a_v1_to_ptr(dog); + u3a_v1_box* box_u = u3a_v1_botox(dog_w); + + if ( box_u->use_w > 1 ) { + box_u->use_w -= 1; + } + else { + if ( 0 == box_u->use_w ) { + fprintf(stderr, "bail: foul\r\n"); + abort(); + } + else { + if ( _(u3a_v1_is_pom(dog)) ) { + u3a_v1_cell* dog_u = (void *)dog_w; + u3_noun h_dog = dog_u->hed; + u3_noun t_dog = dog_u->tel; + + if ( !_(u3a_v1_is_cat(h_dog)) ) { + _me_v1_lose_north(h_dog); + } + u3a_v1_wfree(dog_w); + if ( !_(u3a_v1_is_cat(t_dog)) ) { + dog = t_dog; + goto top; + } + } + else { + u3a_v1_wfree(dog_w); + } + } + } + } +} + +/* u3a_v1_lose(): lose a reference count. +*/ +void +u3a_v1_lose(u3_noun som) +{ + if ( !_(u3a_v1_is_cat(som)) ) { + _me_v1_lose_north(som); + } +} + + +/*** hashtable.c +***/ + +/* _ch_v1_free_buck(): free bucket +*/ +static void +_ch_v1_free_buck(u3h_v1_buck* hab_u) +{ + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + u3a_v1_lose(u3h_v1_slot_to_noun(hab_u->sot_w[i_w])); + } + u3a_v1_wfree(hab_u); +} + +/* _ch_v1_free_node(): free node. +*/ +static void +_ch_v1_free_node(u3h_v1_node* han_u, c3_w lef_w) +{ + c3_w len_w = c3_pc_w(han_u->map_w); + c3_w i_w; + + lef_w -= 5; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w sot_w = han_u->sot_w[i_w]; + + if ( _(u3h_v1_slot_is_noun(sot_w)) ) { + u3a_v1_lose(u3h_v1_slot_to_noun(sot_w)); + } + else { + void* hav_v = u3h_v1_slot_to_node(sot_w); + + if ( 0 == lef_w ) { + _ch_v1_free_buck(hav_v); + } else { + _ch_v1_free_node(hav_v, lef_w); + } + } + } + u3a_v1_wfree(han_u); +} + +/* u3h_v1_free_nodes(): free hashtable nodes. +*/ +void +u3h_v1_free_nodes(u3p(u3h_v1_root) har_p) +{ + u3h_v1_root* har_u = u3v1to(u3h_v1_root, har_p); + c3_w i_w; + + for ( i_w = 0; i_w < 64; i_w++ ) { + c3_w sot_w = har_u->sot_w[i_w]; + + if ( _(u3h_v1_slot_is_noun(sot_w)) ) { + u3a_v1_lose(u3h_v1_slot_to_noun(sot_w)); + } + else if ( _(u3h_v1_slot_is_node(sot_w)) ) { + u3h_v1_node* han_u = (u3h_v1_node*) u3h_v1_slot_to_node(sot_w); + + _ch_v1_free_node(han_u, 25); + } + har_u->sot_w[i_w] = 0; + } + har_u->use_w = 0; + har_u->arm_u.mug_w = 0; + har_u->arm_u.inx_w = 0; +} + +/* _ch_v1_walk_buck(): walk bucket for gc. +*/ +static void +_ch_v1_walk_buck(u3h_v1_buck* hab_u, void (*fun_f)(u3_noun, void*), void* wit) +{ + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + fun_f(u3h_v1_slot_to_noun(hab_u->sot_w[i_w]), wit); + } +} + +/* _ch_v1_walk_node(): walk node for gc. +*/ +static void +_ch_v1_walk_node(u3h_v1_node* han_u, c3_w lef_w, void (*fun_f)(u3_noun, void*), void* wit) +{ + c3_w len_w = c3_pc_w(han_u->map_w); + c3_w i_w; + + lef_w -= 5; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w sot_w = han_u->sot_w[i_w]; + + if ( _(u3h_v1_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_v1_slot_to_noun(sot_w); + + fun_f(kev, wit); + } + else { + void* hav_v = u3h_v1_slot_to_node(sot_w); + + if ( 0 == lef_w ) { + _ch_v1_walk_buck(hav_v, fun_f, wit); + } else { + _ch_v1_walk_node(hav_v, lef_w, fun_f, wit); + } + } + } +} + +/* u3h_v1_walk_with(): traverse hashtable with key, value fn and data + * argument; RETAINS. +*/ +void +u3h_v1_walk_with(u3p(u3h_v1_root) har_p, + void (*fun_f)(u3_noun, void*), + void* wit) +{ + u3h_v1_root* har_u = u3v1to(u3h_v1_root, har_p); + c3_w i_w; + + for ( i_w = 0; i_w < 64; i_w++ ) { + c3_w sot_w = har_u->sot_w[i_w]; + + if ( _(u3h_v1_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_v1_slot_to_noun(sot_w); + + fun_f(kev, wit); + } + else if ( _(u3h_v1_slot_is_node(sot_w)) ) { + u3h_v1_node* han_u = (u3h_v1_node*) u3h_v1_slot_to_node(sot_w); + + _ch_v1_walk_node(han_u, 25, fun_f, wit); + } + } +} + +/* _ch_v1_walk_plain(): use plain u3_noun fun_f for each node + */ +static void +_ch_v1_walk_plain(u3_noun kev, void* wit) +{ + void (*fun_f)(u3_noun) = (void (*)(u3_noun))wit; + fun_f(kev); +} + +/* u3h_v1_walk(): u3h_v1_walk_with, but with no data argument + */ +void +u3h_v1_walk(u3p(u3h_v1_root) har_p, void (*fun_f)(u3_noun)) +{ + u3h_v1_walk_with(har_p, _ch_v1_walk_plain, (void *)fun_f); +} + + +/*** jets.c +***/ + +/* _cj_fink_free(): lose and free everything in a u3j_v1_fink. +*/ +static void +_cj_v1_fink_free(u3p(u3j_v1_fink) fin_p) +{ + c3_w i_w; + u3j_v1_fink* fin_u = u3v1to(u3j_v1_fink, fin_p); + u3a_v1_lose(fin_u->sat); + for ( i_w = 0; i_w < fin_u->len_w; ++i_w ) { + u3j_v1_fist* fis_u = &(fin_u->fis_u[i_w]); + u3a_v1_lose(fis_u->bat); + u3a_v1_lose(fis_u->pax); + } + u3a_v1_wfree(fin_u); +} + +/* u3j_v1_rite_lose(): lose references of u3j_v1_rite (but do not free). + */ +void +u3j_v1_rite_lose(u3j_v1_rite* rit_u) +{ + if ( (c3y == rit_u->own_o) && u3_none != rit_u->clu ) { + u3a_v1_lose(rit_u->clu); + _cj_v1_fink_free(rit_u->fin_p); + } +} + + +/* u3j_v1_site_lose(): lose references of u3j_v1_site (but do not free). + */ +void +u3j_v1_site_lose(u3j_v1_site* sit_u) +{ + u3a_v1_lose(sit_u->axe); + if ( u3_none != sit_u->bat ) { + u3a_v1_lose(sit_u->bat); + } + if ( u3_none != sit_u->bas ) { + u3a_v1_lose(sit_u->bas); + } + if ( u3_none != sit_u->loc ) { + u3a_v1_lose(sit_u->loc); + u3a_v1_lose(sit_u->lab); + if ( c3y == sit_u->fon_o ) { + if ( sit_u->fin_p ) { + _cj_v1_fink_free(sit_u->fin_p); + } + } + } +} + +/* _cj_v1_free_hank(): free an entry from the hank cache. +*/ +static void +_cj_v1_free_hank(u3_noun kev) +{ + u3a_v1_cell* cel_u = (u3a_v1_cell*) u3a_v1_to_ptr(kev); + u3j_v1_hank* han_u = u3v1to(u3j_v1_hank, cel_u->tel); + if ( u3_none != han_u->hax ) { + u3a_v1_lose(han_u->hax); + u3j_v1_site_lose(&(han_u->sit_u)); + } + u3a_v1_wfree(han_u); +} + +/* u3j_v1_reclaim(): clear ad-hoc persistent caches to reclaim memory. +*/ +void +u3j_v1_reclaim(void) +{ + // clear the jet hank cache + // + u3h_v1_walk(u3R_v1->jed.han_p, _cj_v1_free_hank); + u3h_v1_free_nodes(u3R_v1->jed.han_p); +} + + +/*** nock.c +***/ + +/* _cn_v1_prog_free(): free memory retained by program pog_u +*/ +static void +_cn_v1_prog_free(u3n_v1_prog* pog_u) +{ + // fix up pointers for loom portability + pog_u->byc_u.ops_y = (c3_y*) ((void*) pog_u) + sizeof(u3n_v1_prog); + pog_u->lit_u.non = (u3_noun*) (pog_u->byc_u.ops_y + pog_u->byc_u.len_w); + pog_u->mem_u.sot_u = (u3n_v1_memo*) (pog_u->lit_u.non + pog_u->lit_u.len_w); + pog_u->cal_u.sit_u = (u3j_v1_site*) (pog_u->mem_u.sot_u + pog_u->mem_u.len_w); + pog_u->reg_u.rit_u = (u3j_v1_rite*) (pog_u->cal_u.sit_u + pog_u->cal_u.len_w); + + c3_w dex_w; + for (dex_w = 0; dex_w < pog_u->lit_u.len_w; ++dex_w) { + u3a_v1_lose(pog_u->lit_u.non[dex_w]); + } + for (dex_w = 0; dex_w < pog_u->mem_u.len_w; ++dex_w) { + u3a_v1_lose(pog_u->mem_u.sot_u[dex_w].key); + } + for (dex_w = 0; dex_w < pog_u->cal_u.len_w; ++dex_w) { + u3j_v1_site_lose(&(pog_u->cal_u.sit_u[dex_w])); + } + for (dex_w = 0; dex_w < pog_u->reg_u.len_w; ++dex_w) { + u3j_v1_rite_lose(&(pog_u->reg_u.rit_u[dex_w])); + } + u3a_v1_free(pog_u); +} + +/* _n_v1_feb(): u3h_v1_walk helper for u3n_v1_free + */ +static void +_n_v1_feb(u3_noun kev) +{ + u3a_v1_cell *cel_u = (u3a_v1_cell*) u3a_v1_to_ptr(kev); + _cn_v1_prog_free(u3v1to(u3n_v1_prog, cel_u->tel)); +} + +/* u3n_v1_free(): free bytecode cache + */ +void +u3n_v1_free(void) +{ + u3p(u3h_v1_root) har_p = u3R_v1->byc.har_p; + u3h_v1_walk(har_p, _n_v1_feb); + u3h_v1_free_nodes(har_p); +} + +/* u3n_v1_reclaim(): clear ad-hoc persistent caches to reclaim memory. +*/ +void +u3n_v1_reclaim(void) +{ + // clear the bytecode cache + // + // We can't just u3h_v1_free() -- the value is a post to a u3n_v1_prog. + // Note that the hank cache *must* also be freed (in u3j_v1_reclaim()) + // + u3n_v1_free(); +} + + +/*** vortex.c +***/ + +/* u3v_v1_reclaim(): clear ad-hoc persistent caches to reclaim memory. +*/ +void +u3v_v1_reclaim(void) +{ + // clear the u3v_wish cache + // + u3a_v1_lose(u3A_v1->yot); + u3A_v1->yot = u3_nul; +} + +/*** init +***/ + +void +u3_v1_load(c3_z wor_i) +{ + c3_w len_w = wor_i - 1; + c3_w ver_w = *(u3_Loom_v1 + len_w); + + u3_assert( U3V_VER1 == ver_w ); + + c3_w* mem_w = u3_Loom_v1 + 1; + c3_w siz_w = c3_wiseof(u3v_v1_home); + c3_w* mat_w = (mem_w + len_w) - siz_w; + + u3H_v1 = (void *)mat_w; + u3R_v1 = &u3H_v1->rod_u; + + u3R_v1->cap_p = u3R_v1->mat_p = u3a_v1_outa(u3H_v1); +} + + +/*** manage.c +***/ + +void +u3m_v1_reclaim(void) +{ + u3v_v1_reclaim(); + u3j_v1_reclaim(); + u3n_v1_reclaim(); + u3a_v1_reclaim(); +} diff --git a/vere/pkg/past/v1.h b/vere/pkg/past/v1.h new file mode 100644 index 0000000..cf811d4 --- /dev/null +++ b/vere/pkg/past/v1.h @@ -0,0 +1,42 @@ +#ifndef U3_V1_H +#define U3_V1_H + +#include "v2.h" + + /*** allocate.h + ***/ +# define u3_Loom_v1 u3_Loom_v2 + +# define u3a_v1_to_off(som) ((som) & 0x3fffffff) +# define u3a_v1_to_ptr(som) (u3a_v1_into(u3a_v1_to_off(som))) + +# define u3a_v1_into u3a_v2_into +# define u3a_v1_outa u3a_v2_outa +# define u3R_v1 u3R_v2 + + + /*** hashtable.h + ***/ +# define u3h_v1_slot_to_node(sot) (u3a_v1_into((sot) & 0x3fffffff)) + + + /*** manage.h + ***/ + /* u3m_v1_reclaim: clear persistent caches to reclaim memory + */ + void + u3m_v1_reclaim(void); + + + /*** vortex.h + ***/ +# define u3H_v1 u3H_v2 +# define u3v_v1_home u3v_v2_home + + + /*** init + ***/ + void + u3_v1_load(c3_z wor_i); + +#endif /* U3_V1_H */ diff --git a/vere/pkg/past/v2.c b/vere/pkg/past/v2.c new file mode 100644 index 0000000..46ef8ea --- /dev/null +++ b/vere/pkg/past/v2.c @@ -0,0 +1,116 @@ +#include "v2.h" + +# define u3h_v2_free u3h_v3_free +# define u3h_v2_walk u3h_v3_walk +# define u3h_v2_new u3h_v3_new + +u3a_v2_road* u3a_v2_Road; +u3v_v2_home* u3v_v2_Home; + + +/*** jets.c +***/ + +/* u3j_v2_reclaim(): clear ad-hoc persistent caches to reclaim memory. +*/ +void +u3j_v2_reclaim(void) +{ + // set globals (required for aliased functions) + // XX confirm + u3H_v3 = (u3v_v3_home*) u3H_v2; + u3R_v3 = (u3a_v3_road*) u3R_v2; + + // clear the jet hank cache + // + u3h_v2_walk(u3R_v2->jed.han_p, u3j_v2_free_hank); + u3h_v2_free(u3R_v2->jed.han_p); + u3R_v2->jed.han_p = u3h_v2_new(); +} + + +/*** nock.c +***/ + +/* _cn_v2_prog_free(): free memory retained by program pog_u +*/ +static void +_cn_v2_prog_free(u3n_v2_prog* pog_u) +{ + // fix up pointers for loom portability + pog_u->byc_u.ops_y = (c3_y*) ((void*) pog_u) + sizeof(u3n_v2_prog); + pog_u->lit_u.non = (u3_noun*) (pog_u->byc_u.ops_y + pog_u->byc_u.len_w); + pog_u->mem_u.sot_u = (u3n_v2_memo*) (pog_u->lit_u.non + pog_u->lit_u.len_w); + pog_u->cal_u.sit_u = (u3j_v2_site*) (pog_u->mem_u.sot_u + pog_u->mem_u.len_w); + pog_u->reg_u.rit_u = (u3j_v2_rite*) (pog_u->cal_u.sit_u + pog_u->cal_u.len_w); + + c3_w dex_w; + for (dex_w = 0; dex_w < pog_u->lit_u.len_w; ++dex_w) { + u3a_v2_lose(pog_u->lit_u.non[dex_w]); + } + for (dex_w = 0; dex_w < pog_u->mem_u.len_w; ++dex_w) { + u3a_v2_lose(pog_u->mem_u.sot_u[dex_w].key); + } + for (dex_w = 0; dex_w < pog_u->cal_u.len_w; ++dex_w) { + u3j_v2_site_lose(&(pog_u->cal_u.sit_u[dex_w])); + } + for (dex_w = 0; dex_w < pog_u->reg_u.len_w; ++dex_w) { + u3j_v2_rite_lose(&(pog_u->reg_u.rit_u[dex_w])); + } + u3a_v2_free(pog_u); +} + +/* _n_v2_feb(): u3h_v2_walk helper for u3n_v2_free + */ +static void +_n_v2_feb(u3_noun kev) +{ + u3a_v2_cell *cel_u = (u3a_v2_cell*) u3a_v2_to_ptr(kev); + _cn_v2_prog_free(u3v2to(u3n_v2_prog, cel_u->tel)); +} + +/* u3n_v2_free(): free bytecode cache + */ +void +u3n_v2_free(void) +{ + u3p(u3h_v2_root) har_p = u3R_v2->byc.har_p; + u3h_v2_walk(har_p, _n_v2_feb); + u3h_v2_free(har_p); +} + +/* u3n_v2_reclaim(): clear ad-hoc persistent caches to reclaim memory. +*/ +void +u3n_v2_reclaim(void) +{ + // set globals (required for aliased functions) + u3H_v3 = (u3v_v3_home*) u3H_v2; + u3R_v3 = (u3a_v3_road*) u3R_v2; + + // clear the bytecode cache + u3n_v2_free(); + u3R_v2->byc.har_p = u3h_v2_new(); +} + + +/*** init +***/ + +void +u3_v2_load(c3_z wor_i) +{ + c3_w ver_w = *(u3_Loom_v2 + wor_i - 1); + + u3_assert( U3V_VER2 == ver_w ); + + c3_w *mem_w = u3_Loom_v2 + u3a_v2_walign; + c3_w len_w = wor_i - u3a_v2_walign; + c3_w suz_w = c3_wiseof(u3v_v2_home); + c3_w *mut_w = c3_align(mem_w + len_w - suz_w, u3a_v2_balign, C3_ALGLO); + + // set v2 globals + u3H_v2 = (void *)mut_w; + u3R_v2 = &u3H_v2->rod_u; + u3R_v2->cap_p = u3R_v2->mat_p = u3a_v2_outa(u3H_v2); +} diff --git a/vere/pkg/past/v2.h b/vere/pkg/past/v2.h new file mode 100644 index 0000000..cf042ec --- /dev/null +++ b/vere/pkg/past/v2.h @@ -0,0 +1,216 @@ +#ifndef U3_V2_H +#define U3_V2_H + +#include "v3.h" + + /*** allocate.h + ***/ +# define u3_Loom_v2 u3_Loom_v3 + +# define u3a_v2_heap u3a_v3_heap +# define u3a_v2_is_cat u3a_v3_is_cat +# define u3a_v2_is_cell u3a_v3_is_cell +# define u3a_v2_is_north u3a_v3_is_north +# define u3a_v2_is_pom u3a_v3_is_pom +# define u3a_v2_is_pug u3a_v3_is_pug +# define u3a_v2_vits u3a_v3_vits + +# define u3a_v2_into u3a_v3_into +# define u3a_v2_outa u3a_v3_outa + +# define u3a_v2_botox u3a_v3_botox +# define u3a_v2_box u3a_v3_box +# define u3a_v2_cell u3a_v3_cell +# define u3a_v2_fbox u3a_v3_fbox +# define u3a_v2_fbox_no u3a_v3_fbox_no +# define u3a_v2_minimum u3a_v3_minimum +# define u3a_v2_rewrite_ptr u3a_v3_rewrite_ptr +# define u3a_v2_rewritten u3a_v3_rewritten +# define u3a_v2_to_pug u3a_v3_to_pug +# define u3a_v2_to_pom u3a_v3_to_pom +# define u3a_v2_wfree u3a_v3_wfree + +# define u3v2to u3v3to +# define u3v2of u3v3of + +# define u3a_v2_free u3a_v3_free +# define u3a_v2_lose u3a_v3_lose +# define u3a_v2_to_off u3a_v3_to_off +# define u3a_v2_to_ptr u3a_v3_to_ptr +# define u3a_v2_ream u3a_v3_ream +# define u3a_v2_balign u3a_v3_balign +# define u3a_v2_walign u3a_v3_walign + + /* u3a_v2_road: contiguous allocation and execution context. + */ + typedef struct _u3a_v2_road { + u3p(struct _u3a_v2_road) par_p; // parent road + u3p(struct _u3a_v2_road) kid_p; // child road list + u3p(struct _u3a_v2_road) nex_p; // sibling road + + u3p(c3_w) cap_p; // top of transient region + u3p(c3_w) hat_p; // top of durable region + u3p(c3_w) mat_p; // bottom of transient region + u3p(c3_w) rut_p; // bottom of durable region + u3p(c3_w) ear_p; // original cap if kid is live + + c3_w fut_w[32]; // futureproof buffer + + struct { // escape buffer + union { + jmp_buf buf; + c3_w buf_w[256]; // futureproofing + }; + } esc; + + struct { // miscellaneous config + c3_w fag_w; // flag bits + } how; // + + struct { // allocation pools + u3p(u3a_v2_fbox) fre_p[u3a_v2_fbox_no]; // heap by node size log + u3p(u3a_v2_fbox) cel_p; // custom cell allocator + c3_w fre_w; // number of free words + c3_w max_w; // maximum allocated + } all; + + struct { + u3p(u3h_root) hot_p; // hot state (home road only) + u3p(u3h_root) war_p; // warm state + u3p(u3h_root) cod_p; // cold state + u3p(u3h_root) han_p; // hank cache + u3p(u3h_root) bas_p; // battery hashes + } jed; // jet dashboard + + struct { // bytecode state + u3p(u3h_root) har_p; // formula->post of bytecode + } byc; + + struct { // namespace + u3_noun gul; // (list $+(* (unit (unit)))) now + } ski; + + struct { // trace stack + u3_noun tax; // (list ,*) + u3_noun mer; // emergency buffer to release + } bug; + + struct { // profile stack + c3_d nox_d; // nock steps + c3_d cel_d; // cell allocations + u3_noun don; // (list batt) + u3_noun trace; // (list trace) + u3_noun day; // doss, only in u3H (moveme) + } pro; + + struct { // memoization + u3p(u3h_v2_root) har_p; // (map (pair term noun) noun) + } cax; + } u3a_v2_road; + + /** Globals. + **/ + /// Current road (thread-local). + extern u3a_v2_road* u3a_v2_Road; +# define u3R_v2 u3a_v2_Road + + + /*** jets.h + ***/ +# define u3j_v2_fink u3j_v3_fink +# define u3j_v2_fist u3j_v3_fist +# define u3j_v2_hank u3j_v3_hank +# define u3j_v2_rite u3j_v3_rite +# define u3j_v2_site u3j_v3_site +# define u3j_v2_rite_lose u3j_v3_rite_lose +# define u3j_v2_site_lose u3j_v3_site_lose +# define u3j_v2_free_hank u3j_v3_free_hank + + /* u3j_v2_reclaim(): clear ad-hoc persistent caches to reclaim memory. + */ + void + u3j_v2_reclaim(void); + + /*** hashtable.h + ***/ +# define u3h_v2_buck u3h_v3_buck +# define u3h_v2_node u3h_v3_node +# define u3h_v2_root u3h_v3_root +# define u3h_v2_slot_is_node u3h_v3_slot_is_node +# define u3h_v2_slot_is_noun u3h_v3_slot_is_noun +# define u3h_v2_noun_to_slot u3h_v3_noun_to_slot +# define u3h_v2_slot_to_noun u3h_v3_slot_to_noun + +# define u3h_v2_slot_to_node(sot) (u3a_v2_into(((sot) & 0x3fffffff) << u3a_v2_vits)) +# define u3h_v2_node_to_slot(ptr) ((u3a_v2_outa((ptr)) >> u3a_v2_vits) | 0x40000000) + + + /*** nock.h + ***/ + /* u3n_memo: %memo hint space + */ + typedef struct { + c3_l sip_l; + u3_noun key; + } u3n_v2_memo; + + /* u3n_v2_prog: program compiled from nock + */ + typedef struct _u3n_v2_prog { + struct { + c3_o own_o; // program owns ops_y? + c3_w len_w; // length of bytecode (bytes) + c3_y* ops_y; // actual array of bytes + } byc_u; // bytecode + struct { + c3_w len_w; // number of literals + u3_noun* non; // array of literals + } lit_u; // literals + struct { + c3_w len_w; // number of memo slots + u3n_v2_memo* sot_u; // array of memo slots + } mem_u; // memo slot data + struct { + c3_w len_w; // number of calls sites + u3j_v2_site* sit_u; // array of sites + } cal_u; // call site data + struct { + c3_w len_w; // number of registration sites + u3j_v2_rite* rit_u; // array of sites + } reg_u; // registration site data + } u3n_v2_prog; + + /* u3n_v2_reclaim(): clear ad-hoc persistent caches to reclaim memory. + */ + void + u3n_v2_reclaim(void); + + + /*** vortex.h + ***/ +# define u3v_v2_arvo u3v_v3_arvo +# define u3v_v2_version u3v_v3_version + + /* u3v_v2_home: all internal (within image) state. + ** NB: version must be last for discriminability in north road + */ + typedef struct _u3v_v2_home { + u3a_v2_road rod_u; // storage state + u3v_v2_arvo arv_u; // arvo state + u3v_v2_version ver_w; // version number + } u3v_v2_home; + + /** Globals. + **/ + /// Arvo internal state. + extern u3v_v2_home* u3v_v2_Home; +# define u3H_v2 u3v_v2_Home +# define u3A_v2 (&(u3v_v2_Home->arv_u)) + + + /*** init + ***/ + void + u3_v2_load(c3_z wor_i); + +#endif /* U3_V2_H */ diff --git a/vere/pkg/past/v3.c b/vere/pkg/past/v3.c new file mode 100644 index 0000000..05326c0 --- /dev/null +++ b/vere/pkg/past/v3.c @@ -0,0 +1,22 @@ +#include "v3.h" + +/*** init +***/ + +void +u3_v3_load(c3_z wor_i) +{ + c3_w ver_w = *(u3_Loom_v3 + wor_i - 1); + + u3_assert( U3V_VER3 == ver_w ); + + c3_w* mem_w = u3_Loom_v3 + u3a_v3_walign; + c3_w siz_w = c3_wiseof(u3v_v3_home); + c3_w len_w = wor_i - u3a_v3_walign; + c3_w* mat_w = c3_align(mem_w + len_w - siz_w, u3a_v3_balign, C3_ALGLO); + + u3H_v3 = (void *)mat_w; + u3R_v3 = &u3H_v3->rod_u; + + u3R_v3->cap_p = u3R_v3->mat_p = u3a_v3_outa(u3H_v3); +} diff --git a/vere/pkg/past/v3.h b/vere/pkg/past/v3.h new file mode 100644 index 0000000..ba3b8c2 --- /dev/null +++ b/vere/pkg/past/v3.h @@ -0,0 +1,92 @@ +#ifndef U3_V3_H +#define U3_V3_H + +#include "v4.h" + + /*** allocate.h + ***/ +# define u3_Loom_v3 u3_Loom_v4 +# define u3R_v3 u3a_v4_Road + +# define u3a_v3_heap u3a_v4_heap +# define u3a_v3_is_cat u3a_v4_is_cat +# define u3a_v3_is_cell u3a_v4_is_cell +# define u3a_v3_is_north u3a_v4_is_north +# define u3a_v3_is_pom u3a_v4_is_pom +# define u3a_v3_is_pug u3a_v4_is_pug +# define u3a_v3_vits u3a_v4_vits + +# define u3a_v3_road u3a_v4_road +# define u3a_v3_walloc u3a_v4_walloc +# define u3a_v3_into u3a_v4_into +# define u3a_v3_outa u3a_v4_outa + +# define u3a_v3_botox u3a_v4_botox +# define u3a_v3_box u3a_v4_box +# define u3a_v3_cell u3a_v4_cell +# define u3a_v3_fbox u3a_v4_fbox +# define u3a_v3_fbox_no u3a_v4_fbox_no +# define u3a_v3_minimum u3a_v4_minimum +# define u3a_v3_rewrite u3a_v4_rewrite +# define u3a_v3_rewrite_ptr u3a_v4_rewrite_ptr +# define u3a_v3_rewritten u3a_v4_rewritten +# define u3a_v3_to_pug u3a_v4_to_pug +# define u3a_v3_to_pom u3a_v4_to_pom +# define u3a_v3_wfree u3a_v4_wfree + +# define u3v3to u3v4to +# define u3v3of u3v4of + +# define u3a_v3_free u3a_v4_free +# define u3a_v3_lose u3a_v4_lose +# define u3a_v3_to_off u3a_v4_to_off +# define u3a_v3_to_ptr u3a_v4_to_ptr +# define u3a_v3_ream u3a_v4_ream +# define u3a_v3_balign u3a_v4_balign +# define u3a_v3_walign u3a_v4_walign + + + /*** jets.h + ***/ +# define u3j_v3_fink u3j_v4_fink +# define u3j_v3_fist u3j_v4_fist +# define u3j_v3_hank u3j_v4_hank +# define u3j_v3_rite u3j_v4_rite +# define u3j_v3_site u3j_v4_site + +# define u3j_v3_rite_lose u3j_v4_rite_lose +# define u3j_v3_site_lose u3j_v4_site_lose +# define u3j_v3_free_hank u3j_v4_free_hank + + + /*** hashtable.h + ***/ +# define u3h_v3_buck u3h_v4_buck +# define u3h_v3_node u3h_v4_node +# define u3h_v3_root u3h_v4_root + +# define u3h_v3_free u3h_v4_free +# define u3h_v3_walk u3h_v4_walk +# define u3h_v3_new u3h_v4_new +# define u3h_v3_new_cache u3h_v4_new_cache +# define u3h_v3_slot_is_node u3h_v4_slot_is_node +# define u3h_v3_slot_is_noun u3h_v4_slot_is_noun +# define u3h_v3_noun_to_slot u3h_v4_noun_to_slot +# define u3h_v3_slot_to_noun u3h_v4_slot_to_noun + + + /*** vortex.h + ***/ +# define u3v_v3_version u3v_v4_version +# define u3v_v3_arvo u3v_v4_arvo +# define u3H_v3 u3v_v4_Home +# define u3A_v3 (&(u3H_v3)->arv_u) +# define u3v_v3_home u3v_v4_home + + + /*** init + ***/ + void + u3_v3_load(c3_z wor_i); + +#endif /* U3_V3_H */ diff --git a/vere/pkg/past/v4.c b/vere/pkg/past/v4.c new file mode 100644 index 0000000..2d9bd05 --- /dev/null +++ b/vere/pkg/past/v4.c @@ -0,0 +1,826 @@ +#include "v4.h" + +#include "nock.h" + + /*** current + ***/ +# define u3a_v4_is_pom u3a_v5_is_pom +# define u3a_v4_north_is_normal u3a_v5_north_is_normal +# define u3n_v4_prog u3n_v5_prog + +# define u3a_v4_boxed(len_w) (len_w + c3_wiseof(u3a_v4_box) + 1) +# define u3a_v4_boxto(box_v) ( (void *) \ + ( (u3a_v4_box *)(void *)(box_v) + 1 ) ) +# define u3a_v4_botox(tox_v) ( (u3a_v4_box *)(void *)(tox_v) - 1 ) +# define u3h_v4_slot_to_node(sot) (u3a_v4_into(((sot) & 0x3fffffff) << u3a_v4_vits)) + +u3a_v4_road* u3a_v4_Road; +u3v_v4_home* u3v_v4_Home; + +/*** allocate.c +***/ + +static c3_w +_box_v4_slot(c3_w siz_w) +{ + if ( u3a_v4_minimum == siz_w ) { + return 0; + } + else if ( !(siz_w >> 4) ) { + return 1; + } + else { + c3_w bit_w = c3_bits_word(siz_w) - 3; + c3_w max_w = u3a_v4_fbox_no - 1; + return c3_min(bit_w, max_w); + } +} + +static u3a_v4_box* +_box_v4_make(void* box_v, c3_w siz_w, c3_w use_w) +{ + u3a_v4_box* box_u = box_v; + c3_w* box_w = box_v; + + u3_assert(siz_w >= u3a_v4_minimum); + + box_u->siz_w = siz_w; + box_w[siz_w - 1] = siz_w; /* stor size at end of allocation as well */ + box_u->use_w = use_w; + + return box_u; +} + +/* _box_v4_attach(): attach a box to the free list. +*/ +static void +_box_v4_attach(u3a_v4_box* box_u) +{ + u3_assert(box_u->siz_w >= (1 + c3_wiseof(u3a_v4_fbox))); + u3_assert(0 != u3v4of(u3a_v4_fbox, box_u)); + + { + c3_w sel_w = _box_v4_slot(box_u->siz_w); + u3p(u3a_v4_fbox) fre_p = u3v4of(u3a_v4_fbox, box_u); + u3p(u3a_v4_fbox)* pfr_p = &u3R_v4->all.fre_p[sel_w]; + u3p(u3a_v4_fbox) nex_p = *pfr_p; + + u3v4to(u3a_v4_fbox, fre_p)->pre_p = 0; + u3v4to(u3a_v4_fbox, fre_p)->nex_p = nex_p; + if ( u3v4to(u3a_v4_fbox, fre_p)->nex_p ) { + u3v4to(u3a_v4_fbox, u3v4to(u3a_v4_fbox, fre_p)->nex_p)->pre_p = fre_p; + } + (*pfr_p) = fre_p; + } +} + +/* _box_v4_detach(): detach a box from the free list. +*/ +static void +_box_v4_detach(u3a_v4_box* box_u) +{ + u3p(u3a_v4_fbox) fre_p = u3v4of(u3a_v4_fbox, box_u); + u3p(u3a_v4_fbox) pre_p = u3v4to(u3a_v4_fbox, fre_p)->pre_p; + u3p(u3a_v4_fbox) nex_p = u3v4to(u3a_v4_fbox, fre_p)->nex_p; + + if ( nex_p ) { + if ( u3v4to(u3a_v4_fbox, nex_p)->pre_p != fre_p ) { + u3_assert(!"loom: corrupt"); + } + u3v4to(u3a_v4_fbox, nex_p)->pre_p = pre_p; + } + if ( pre_p ) { + if( u3v4to(u3a_v4_fbox, pre_p)->nex_p != fre_p ) { + u3_assert(!"loom: corrupt"); + } + u3v4to(u3a_v4_fbox, pre_p)->nex_p = nex_p; + } + else { + c3_w sel_w = _box_v4_slot(box_u->siz_w); + + if ( fre_p != u3R_v4->all.fre_p[sel_w] ) { + u3_assert(!"loom: corrupt"); + } + u3R_v4->all.fre_p[sel_w] = nex_p; + } +} + +/* _ca_box_make_hat(): allocate directly on the hat. +*/ +static u3a_v4_box* +_ca_v4_box_make_hat(c3_w len_w, c3_w ald_w, c3_w off_w, c3_w use_w) +{ + c3_w + pad_w, /* padding between returned pointer and box */ + siz_w; /* total size of allocation */ + u3_post + box_p, /* start of box */ + all_p; /* start of returned pointer */ + + // NB: always north + { + box_p = all_p = u3R_v4->hat_p; + all_p += c3_wiseof(u3a_v4_box) + off_w; + pad_w = c3_align(all_p, ald_w, C3_ALGHI) + - all_p; + siz_w = c3_align(len_w + pad_w, u3a_v4_walign, C3_ALGHI); + + if ( (siz_w >= (u3R_v4->cap_p - u3R_v4->hat_p)) ) { + // XX wat do + fprintf(stderr, "bail: meme\r\n"); + abort(); + return 0; + } + u3R_v4->hat_p += siz_w; + } + + + return _box_v4_make(u3a_v4_into(box_p), siz_w, use_w); +} + + +/* _ca_willoc(): u3a_v4_walloc() internals. +*/ +static void* +_ca_v4_willoc(c3_w len_w, c3_w ald_w, c3_w off_w) +{ + c3_w siz_w = c3_max(u3a_v4_minimum, u3a_v4_boxed(len_w)); + c3_w sel_w = _box_v4_slot(siz_w); + + if ( (sel_w != 0) && (sel_w != u3a_v4_fbox_no - 1) ) { + sel_w += 1; + } + + while ( 1 ) { + u3p(u3a_v4_fbox) *pfr_p = &u3R_v4->all.fre_p[sel_w]; + + while ( 1 ) { + /* increment until we get a non-null freelist */ + if ( 0 == *pfr_p ) { + if ( sel_w < (u3a_v4_fbox_no - 1) ) { + sel_w += 1; + break; + } + else { + // nothing in top free list; chip away at the hat + // + u3a_v4_box* box_u; + box_u = _ca_v4_box_make_hat(siz_w, ald_w, off_w, 1); + return u3a_v4_boxto(box_u); + } + } + else { /* we got a non-null freelist */ + u3_post all_p = *pfr_p; + all_p += c3_wiseof(u3a_v4_box) + off_w; + c3_w pad_w = c3_align(all_p, ald_w, C3_ALGHI) - all_p; + c3_w des_w = c3_align(siz_w + pad_w, u3a_v4_walign, C3_ALGHI); + + if ( (des_w) > u3v4to(u3a_v4_fbox, *pfr_p)->box_u.siz_w ) { + /* This free block is too small. Continue searching. + */ + pfr_p = &(u3v4to(u3a_v4_fbox, *pfr_p)->nex_p); + continue; + } + else { /* free block fits desired alloc size */ + u3a_v4_box* box_u = &(u3v4to(u3a_v4_fbox, *pfr_p)->box_u); + + /* We have found a free block of adequate size. Remove it + ** from the free list. + */ + /* misc free list consistency checks. + TODO: in the future should probably only run for C3DBG builds */ + { + if ( (0 != u3v4to(u3a_v4_fbox, *pfr_p)->pre_p) && + (u3v4to(u3a_v4_fbox, u3v4to(u3a_v4_fbox, *pfr_p)->pre_p)->nex_p + != (*pfr_p)) ) + { /* this->pre->nex isn't this */ + u3_assert(!"loom: corrupt"); + } + + if( (0 != u3v4to(u3a_v4_fbox, *pfr_p)->nex_p) && + (u3v4to(u3a_v4_fbox, u3v4to(u3a_v4_fbox, *pfr_p)->nex_p)->pre_p + != (*pfr_p)) ) + { /* this->nex->pre isn't this */ + u3_assert(!"loom: corrupt"); + } + + /* pop the block */ + /* this->nex->pre = this->pre */ + if ( 0 != u3v4to(u3a_v4_fbox, *pfr_p)->nex_p ) { + u3v4to(u3a_v4_fbox, u3v4to(u3a_v4_fbox, *pfr_p)->nex_p)->pre_p = + u3v4to(u3a_v4_fbox, *pfr_p)->pre_p; + } + /* this = this->nex */ + *pfr_p = u3v4to(u3a_v4_fbox, *pfr_p)->nex_p; + } + + /* If we can chop off another block, do it. + */ + if ( (des_w + u3a_v4_minimum) <= box_u->siz_w ) { + /* Split the block. + */ + c3_w* box_w = ((c3_w *)(void *)box_u); + c3_w* end_w = box_w + des_w; + c3_w lef_w = (box_u->siz_w - des_w); + + _box_v4_attach(_box_v4_make(end_w, lef_w, 0)); + return u3a_v4_boxto(_box_v4_make(box_w, des_w, 1)); + } + else { + u3_assert(0 == box_u->use_w); + box_u->use_w = 1; + return u3a_v4_boxto(box_u); + } + } + } + } + } +} + +static void* +_ca_v4_walloc(c3_w len_w, c3_w ald_w, c3_w off_w) +{ + void* ptr_v; + ptr_v = _ca_v4_willoc(len_w, ald_w, off_w); + return ptr_v; +} + +/* u3a_v4_walloc(): allocate storage words on hat heap. +*/ +void* +u3a_v4_walloc(c3_w len_w) +{ + void* ptr_v; + ptr_v = _ca_v4_walloc(len_w, 1, 0); + return ptr_v; +} + + +/* _box_v4_free(): free and coalesce. +*/ +static void +_box_v4_free(u3a_v4_box* box_u) +{ + c3_w* box_w = (c3_w *)(void *)box_u; + + u3_assert(box_u->use_w != 0); + box_u->use_w -= 1; + if ( 0 != box_u->use_w ) { + return; + } + + // always north + { /* north */ + /* Try to coalesce with the block below. + */ + if ( box_w != u3a_v4_into(u3R_v4->rut_p) ) { + c3_w laz_w = *(box_w - 1); /* the size of a box stored at the end of its allocation */ + u3a_v4_box* pox_u = (u3a_v4_box*)(void *)(box_w - laz_w); /* the head of the adjacent box below */ + + if ( 0 == pox_u->use_w ) { + _box_v4_detach(pox_u); + _box_v4_make(pox_u, (laz_w + box_u->siz_w), 0); + + box_u = pox_u; + box_w = (c3_w*)(void *)pox_u; + } + } + + /* Try to coalesce with the block above, or the wilderness. + */ + if ( (box_w + box_u->siz_w) == u3a_v4_into(u3R_v4->hat_p) ) { + u3R_v4->hat_p = u3a_v4_outa(box_w); + } + else { + u3a_v4_box* nox_u = (u3a_v4_box*)(void *)(box_w + box_u->siz_w); + + if ( 0 == nox_u->use_w ) { + _box_v4_detach(nox_u); + _box_v4_make(box_u, (box_u->siz_w + nox_u->siz_w), 0); + } + _box_v4_attach(box_u); + } + } /* end north */ +} + +/* u3a_v4_wfree(): free storage. +*/ +void +u3a_v4_wfree(void* tox_v) +{ + _box_v4_free(u3a_v4_botox(tox_v)); +} + +/* u3a_v4_free(): free for aligned malloc. +*/ +void +u3a_v4_free(void* tox_v) +{ + if (NULL == tox_v) + return; + + c3_w* tox_w = tox_v; + c3_w pad_w = tox_w[-1]; + c3_w* org_w = tox_w - (pad_w + 1); + + u3a_v4_wfree(org_w); +} + +/* _me_lose_north(): lose on a north road. +*/ +static void +_me_v4_lose_north(u3_noun dog) +{ +top: + if ( c3y == u3a_v4_north_is_normal(u3R_v4, dog) ) { + c3_w* dog_w = u3a_v4_to_ptr(dog); + u3a_v4_box* box_u = u3a_v4_botox(dog_w); + + if ( box_u->use_w > 1 ) { + box_u->use_w -= 1; + } + else { + if ( 0 == box_u->use_w ) { + fprintf(stderr, "bail: foul\r\n"); + abort(); + } + else { + if ( _(u3a_v4_is_pom(dog)) ) { + u3a_v4_cell* dog_u = (void *)dog_w; + u3_noun h_dog = dog_u->hed; + u3_noun t_dog = dog_u->tel; + + if ( !_(u3a_v4_is_cat(h_dog)) ) { + _me_v4_lose_north(h_dog); + } + u3a_v4_wfree(dog_w); // same as cfree at home + if ( !_(u3a_v4_is_cat(t_dog)) ) { + dog = t_dog; + goto top; + } + } + else { + u3a_v4_wfree(dog_w); + } + } + } + } +} + +/* u3a_v4_lose(): lose a reference count. +*/ +void +u3a_v4_lose(u3_noun som) +{ + if ( !_(u3a_v4_is_cat(som)) ) { + _me_v4_lose_north(som); + } +} + +/* u3a_v4_ream(): ream free-lists. +*/ +void +u3a_v4_ream(void) +{ + u3p(u3a_v4_fbox) lit_p; + u3a_v4_fbox* fox_u; + c3_w sel_w, i_w; + + for ( i_w = 0; i_w < u3a_v4_fbox_no; i_w++ ) { + lit_p = u3R_v4->all.fre_p[i_w]; + + while ( lit_p ) { + fox_u = u3v4to(u3a_v4_fbox, lit_p); + lit_p = fox_u->nex_p; + sel_w = _box_v4_slot(fox_u->box_u.siz_w); + + if ( sel_w != i_w ) { + // inlined _box_detach() + // + { + u3p(u3a_v4_fbox) fre_p = u3v4of(u3a_v4_fbox, &(fox_u->box_u)); + u3p(u3a_v4_fbox) pre_p = u3v4to(u3a_v4_fbox, fre_p)->pre_p; + u3p(u3a_v4_fbox) nex_p = u3v4to(u3a_v4_fbox, fre_p)->nex_p; + + if ( nex_p ) { + if ( u3v4to(u3a_v4_fbox, nex_p)->pre_p != fre_p ) { + u3_assert(!"loom: corrupt"); + } + u3v4to(u3a_v4_fbox, nex_p)->pre_p = pre_p; + } + if ( pre_p ) { + if( u3v4to(u3a_v4_fbox, pre_p)->nex_p != fre_p ) { + u3_assert(!"loom: corrupt"); + } + u3v4to(u3a_v4_fbox, pre_p)->nex_p = nex_p; + } + else { + if ( fre_p != u3R_v4->all.fre_p[i_w] ) { + u3_assert(!"loom: corrupt"); + } + u3R_v4->all.fre_p[i_w] = nex_p; + } + } + + // inlined _box_attach() + { + u3p(u3a_v4_fbox) fre_p = u3v4of(u3a_v4_fbox, &(fox_u->box_u)); + u3p(u3a_v4_fbox)* pfr_p = &u3R_v4->all.fre_p[sel_w]; + u3p(u3a_v4_fbox) nex_p = *pfr_p; + + u3v4to(u3a_v4_fbox, fre_p)->pre_p = 0; + u3v4to(u3a_v4_fbox, fre_p)->nex_p = nex_p; + if ( nex_p ) { + u3v4to(u3a_v4_fbox, nex_p)->pre_p = fre_p; + } + (*pfr_p) = fre_p; + } + } + } + } +} + +/* u3a_v4_rewrite_ptr(): mark a pointer as already having been rewritten +*/ +c3_o +u3a_v4_rewrite_ptr(void* ptr_v) +{ + u3a_v4_box* box_u = u3a_v4_botox(ptr_v); + if ( box_u->use_w & 0x80000000 ) { + /* Already rewritten. + */ + return c3n; + } + box_u->use_w |= 0x80000000; + return c3y; +} + +u3_post +u3a_v4_rewritten(u3_post ptr_v) +{ + u3a_v4_box* box_u = u3a_v4_botox(u3a_v4_into(ptr_v)); + c3_w* box_w = (c3_w*) box_u; + return (u3_post)box_w[box_u->siz_w - 1]; +} + + /*** jets.h + ***/ +/* _cj_fink_free(): lose and free everything in a u3j_fink. +*/ +static void +_cj_v4_fink_free(u3p(u3j_v4_fink) fin_p) +{ + c3_w i_w; + u3j_v4_fink* fin_u = u3v4to(u3j_v4_fink, fin_p); + u3a_v4_lose(fin_u->sat); + for ( i_w = 0; i_w < fin_u->len_w; ++i_w ) { + u3j_v4_fist* fis_u = &(fin_u->fis_u[i_w]); + u3a_v4_lose(fis_u->bat); + u3a_v4_lose(fis_u->pax); + } + u3a_v4_wfree(fin_u); +} + +/* u3j_v4_site_lose(): lose references of u3j_site (but do not free). + */ +void +u3j_v4_site_lose(u3j_v4_site* sit_u) +{ + u3a_v4_lose(sit_u->axe); + if ( u3_none != sit_u->bat ) { + u3a_v4_lose(sit_u->bat); + } + if ( u3_none != sit_u->bas ) { + u3a_v4_lose(sit_u->bas); + } + if ( u3_none != sit_u->loc ) { + u3a_v4_lose(sit_u->loc); + u3a_v4_lose(sit_u->lab); + if ( c3y == sit_u->fon_o ) { + _cj_v4_fink_free(sit_u->fin_p); + } + } +} + +/* u3j_rite_lose(): lose references of u3j_rite (but do not free). + */ +void +u3j_v4_rite_lose(u3j_v4_rite* rit_u) +{ + if ( (c3y == rit_u->own_o) && u3_none != rit_u->clu ) { + u3a_v4_lose(rit_u->clu); + _cj_v4_fink_free(rit_u->fin_p); + } +} + +/* u3j_free_hank(): free an entry from the hank cache. +*/ +void +u3j_v4_free_hank(u3_noun kev) +{ + u3a_v4_cell* kev_u = (u3a_v4_cell*) u3a_v4_to_ptr(kev); + u3j_v4_hank* han_u = u3v4to(u3j_v4_hank, kev_u->tel); + if ( u3_none != han_u->hax ) { + u3a_v4_lose(han_u->hax); + u3j_v4_site_lose(&(han_u->sit_u)); + } + u3a_v4_wfree(han_u); +} + + + /*** hashtable.h + ***/ +/* u3h_v4_new_cache(): create hashtable with bounded size. +*/ +u3p(u3h_v4_root) +u3h_v4_new_cache(c3_w max_w) +{ + u3h_v4_root* har_u = u3a_v4_walloc(c3_wiseof(u3h_v4_root)); + u3p(u3h_v4_root) har_p = u3v4of(u3h_v4_root, har_u); + c3_w i_w; + + har_u->max_w = max_w; + har_u->use_w = 0; + har_u->arm_u.mug_w = 0; + har_u->arm_u.inx_w = 0; + + for ( i_w = 0; i_w < 64; i_w++ ) { + har_u->sot_w[i_w] = 0; + } + return har_p; +} + +/* u3h_v4_new(): create hashtable. +*/ +u3p(u3h_v4_root) +u3h_v4_new(void) +{ + return u3h_v4_new_cache(0); +} + +/* _ch_free_buck(): free bucket +*/ +static void +_ch_v4_free_buck(u3h_v4_buck* hab_u) +{ + //fprintf(stderr, "free buck\r\n"); + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + u3a_v4_lose(u3h_v4_slot_to_noun(hab_u->sot_w[i_w])); + } + u3a_v4_wfree(hab_u); +} + +/* _ch_free_node(): free node. +*/ +static void +_ch_v4_free_node(u3h_v4_node* han_u, c3_w lef_w, c3_o pin_o) +{ + c3_w len_w = c3_pc_w(han_u->map_w); + c3_w i_w; + + lef_w -= 5; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w sot_w = han_u->sot_w[i_w]; + if ( _(u3h_v4_slot_is_null(sot_w))) { + } else if ( _(u3h_v4_slot_is_noun(sot_w)) ) { + u3a_v4_lose(u3h_v4_slot_to_noun(sot_w)); + } else { + void* hav_v = u3h_v4_slot_to_node(sot_w); + + if ( 0 == lef_w ) { + _ch_v4_free_buck(hav_v); + } else { + _ch_v4_free_node(hav_v, lef_w, pin_o); + } + } + } + u3a_v4_wfree(han_u); +} + +/* u3h_v4_free(): free hashtable. +*/ +void +u3h_v4_free(u3p(u3h_v4_root) har_p) +{ + u3h_v4_root* har_u = u3v4to(u3h_v4_root, har_p); + c3_w i_w; + + for ( i_w = 0; i_w < 64; i_w++ ) { + c3_w sot_w = har_u->sot_w[i_w]; + + if ( _(u3h_v4_slot_is_noun(sot_w)) ) { + u3a_v4_lose(u3h_v4_slot_to_noun(sot_w)); + } + else if ( _(u3h_v4_slot_is_node(sot_w)) ) { + u3h_v4_node* han_u = u3h_v4_slot_to_node(sot_w); + + _ch_v4_free_node(han_u, 25, i_w == 57); + } + } + u3a_v4_wfree(har_u); +} + + +/* _ch_walk_buck(): walk bucket for gc. +*/ +static void +_ch_v4_walk_buck(u3h_v4_buck* hab_u, void (*fun_f)(u3_noun, void*), void* wit) +{ + c3_w i_w; + + for ( i_w = 0; i_w < hab_u->len_w; i_w++ ) { + fun_f(u3h_v4_slot_to_noun(hab_u->sot_w[i_w]), wit); + } +} + +/* _ch_walk_node(): walk node for gc. +*/ +static void +_ch_v4_walk_node(u3h_v4_node* han_u, c3_w lef_w, void (*fun_f)(u3_noun, void*), void* wit) +{ + c3_w len_w = c3_pc_w(han_u->map_w); + c3_w i_w; + + lef_w -= 5; + + for ( i_w = 0; i_w < len_w; i_w++ ) { + c3_w sot_w = han_u->sot_w[i_w]; + + if ( _(u3h_v4_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_v4_slot_to_noun(sot_w); + + fun_f(kev, wit); + } + else { + void* hav_v = u3h_v4_slot_to_node(sot_w); + + if ( 0 == lef_w ) { + _ch_v4_walk_buck(hav_v, fun_f, wit); + } else { + _ch_v4_walk_node(hav_v, lef_w, fun_f, wit); + } + } + } +} + +/* u3h_v4_walk_with(): traverse hashtable with key, value fn and data + * argument; RETAINS. +*/ +void +u3h_v4_walk_with(u3p(u3h_v4_root) har_p, + void (*fun_f)(u3_noun, void*), + void* wit) +{ + u3h_v4_root* har_u = u3v4to(u3h_v4_root, har_p); + c3_w i_w; + + for ( i_w = 0; i_w < 64; i_w++ ) { + c3_w sot_w = har_u->sot_w[i_w]; + + if ( _(u3h_v4_slot_is_noun(sot_w)) ) { + u3_noun kev = u3h_v4_slot_to_noun(sot_w); + + fun_f(kev, wit); + } + else if ( _(u3h_v4_slot_is_node(sot_w)) ) { + u3h_v4_node* han_u = u3h_v4_slot_to_node(sot_w); + + _ch_v4_walk_node(han_u, 25, fun_f, wit); + } + } +} + +/* _ch_walk_plain(): use plain u3_noun fun_f for each node + */ +static void +_ch_v4_walk_plain(u3_noun kev, void* wit) +{ + void (*fun_f)(u3_noun) = (void (*)(u3_noun))wit; + fun_f(kev); +} + +/* u3h_v4_walk(): u3h_v4_walk_with, but with no data argument +*/ +void +u3h_v4_walk(u3p(u3h_v4_root) har_p, void (*fun_f)(u3_noun)) +{ + u3h_v4_walk_with(har_p, _ch_v4_walk_plain, (void *)fun_f); +} + +/* u3j_v4_reclaim(): clear ad-hoc persistent caches to reclaim memory. +*/ +void +u3j_v4_reclaim(void) +{ + // clear the jet hank cache + // + u3h_v4_walk(u3R_v4->jed.han_p, u3j_v4_free_hank); + u3h_v4_free(u3R_v4->jed.han_p); + u3R_v4->jed.han_p = u3h_v4_new(); +} + + +/* _cn_prog_free(): free memory retained by program pog_u +*/ +static void +_cn_v4_prog_free(u3n_v4_prog* pog_u) +{ + // ream pointers inline + // + c3_w pad_w = (8 - pog_u->byc_u.len_w % 8) % 8; + c3_w pod_w = pog_u->lit_u.len_w % 2; + c3_w ped_w = pog_u->mem_u.len_w % 2; + + pog_u->byc_u.ops_y = (c3_y*)((void*) pog_u) + sizeof(u3n_v4_prog); + pog_u->lit_u.non = (u3_noun*) (pog_u->byc_u.ops_y + pog_u->byc_u.len_w + pad_w); + pog_u->mem_u.sot_u = (u3n_memo*) (pog_u->lit_u.non + pog_u->lit_u.len_w + pod_w); + pog_u->cal_u.sit_u = (u3j_v4_site*) (pog_u->mem_u.sot_u + pog_u->mem_u.len_w + ped_w); + pog_u->reg_u.rit_u = (u3j_v4_rite*) (pog_u->cal_u.sit_u + pog_u->cal_u.len_w); + + // NB: site reaming elided + + c3_w dex_w; + for (dex_w = 0; dex_w < pog_u->lit_u.len_w; ++dex_w) { + u3a_v4_lose(pog_u->lit_u.non[dex_w]); + } + for (dex_w = 0; dex_w < pog_u->mem_u.len_w; ++dex_w) { + u3a_v4_lose(pog_u->mem_u.sot_u[dex_w].key); + } + for (dex_w = 0; dex_w < pog_u->cal_u.len_w; ++dex_w) { + u3j_v4_site_lose(&(pog_u->cal_u.sit_u[dex_w])); + } + for (dex_w = 0; dex_w < pog_u->reg_u.len_w; ++dex_w) { + u3j_v4_rite_lose(&(pog_u->reg_u.rit_u[dex_w])); + } + u3a_v4_free(pog_u); +} + +/* _n_feb(): u3h_walk helper for u3n_free + */ +static void +_n_v4_feb(u3_noun kev) +{ + u3a_v4_cell* kev_u = (u3a_v4_cell*) u3a_v4_to_ptr(kev); + _cn_v4_prog_free(u3v4to(u3n_v4_prog, kev_u->tel)); +} + +/* u3n_free(): free bytecode cache + */ +void +u3n_v4_free() +{ + u3p(u3h_v4_root) har_p = u3R_v4->byc.har_p; + u3h_v4_walk(har_p, _n_v4_feb); + u3h_v4_free(har_p); +} + +/* u3n_reclaim(): clear ad-hoc persistent caches to reclaim memory. +*/ +void +u3n_v4_reclaim(void) +{ + // clear the bytecode cache + // + // We can't just u3h_free() -- the value is a post to a u3n_prog. + // Note that the hank cache *must* also be freed (in u3j_reclaim()) + // + u3n_v4_free(); + u3R_v4->byc.har_p = u3h_v4_new(); +} + + /*** manage.h + ***/ + +/* u3m_reclaim: clear persistent caches to reclaim memory. +*/ +void +u3m_v4_reclaim(void) +{ + // NB: subset: u3a and u3v excluded + u3j_v4_reclaim(); + u3n_v4_reclaim(); +} + +/*** init +***/ + +void +u3_v4_load(c3_z wor_i) +{ + c3_w ver_w = *(u3_Loom_v4 + wor_i - 1); + + u3_assert( U3V_VER4 == ver_w ); + + c3_w* mem_w = u3_Loom_v4 + u3a_v4_walign; + c3_w siz_w = c3_wiseof(u3v_v4_home); + c3_w len_w = wor_i - u3a_v4_walign; + c3_w* mat_w = c3_align(mem_w + len_w - siz_w, u3a_v4_balign, C3_ALGLO); + + u3H_v4 = (void *)mat_w; + u3R_v4 = &u3H_v4->rod_u; + + u3R_v4->cap_p = u3R_v4->mat_p = u3a_v4_outa(u3H_v4); +} \ No newline at end of file diff --git a/vere/pkg/past/v4.h b/vere/pkg/past/v4.h new file mode 100644 index 0000000..0d0e536 --- /dev/null +++ b/vere/pkg/past/v4.h @@ -0,0 +1,242 @@ +#ifndef U3_V4_H +#define U3_V4_H + +#include "v5.h" + + /*** current + ***/ +# define u3_v4_noun u3_v5_noun +# define u3_v4_none u3_v5_none + +# define u3a_v4_heap u3a_v5_heap +# define u3a_v4_is_cat u3a_v5_is_cat +# define u3a_v4_is_cell u3a_v5_is_cell +# define u3a_v4_is_north u3a_v5_is_north +# define u3a_v4_is_pom u3a_v5_is_pom +# define u3a_v4_is_pug u3a_v5_is_pug +# define u3a_v4_north_is_normal u3a_v5_north_is_normal + +# define u3j_v4_fink u3j_v5_fink +# define u3j_v4_fist u3j_v5_fist +# define u3j_v4_hank u3j_v5_hank +# define u3j_v4_rite u3j_v5_rite +# define u3j_v4_site u3j_v5_site + +# define u3h_v4_buck u3h_v5_buck +# define u3h_v4_node u3h_v5_node +# define u3h_v4_root u3h_v5_root +# define u3h_v4_slot_is_node u3h_v5_slot_is_node +# define u3h_v4_slot_is_noun u3h_v5_slot_is_noun +# define u3h_v4_slot_is_null u3h_v5_slot_is_null +# define u3h_v4_noun_to_slot u3h_v5_noun_to_slot +# define u3h_v4_slot_to_noun u3h_v5_slot_to_noun + + /*** allocate.h + ***/ + +# define u3_Loom_v4 (u3_Loom + ((c3_z)1 << u3a_bits_max)) +# define u3a_v4_vits 1 +# define u3a_v4_walign (1 << u3a_v4_vits) +# define u3a_v4_balign (sizeof(c3_w)*u3a_v4_walign) +# define u3a_v4_fbox_no 27 +# define u3a_v4_minimum ((c3_w)( 1 + c3_wiseof(u3a_v4_box) + c3_wiseof(u3a_v4_cell) )) +# define u3a_v4_into(x) ((void *)(u3_Loom_v4 + (x))) +# define u3a_v4_outa(p) ((c3_w *)(void *)(p) - u3_Loom_v4) +# define u3v4to(type, x) ((type *)u3a_v4_into(x)) +# define u3v4of(type, x) (u3a_v4_outa((type*)x)) + + + typedef struct { + c3_w mug_w; + } u3a_v4_noun; + + typedef struct { + c3_w mug_w; + c3_w len_w; + c3_w buf_w[0]; + } u3a_v4_atom; + + typedef struct { + c3_w mug_w; + u3_noun hed; + u3_noun tel; + } u3a_v4_cell; + + typedef struct _u3a_v4_box { + c3_w siz_w; // size of this box + c3_w use_w; // reference count; free if 0 + } u3a_v4_box; + + typedef struct _u3a_v4_fbox { + u3a_v4_box box_u; + u3p(struct _u3a_v4_fbox) pre_p; + u3p(struct _u3a_v4_fbox) nex_p; + } u3a_v4_fbox; + + typedef struct _u3a_v4_road { + u3p(struct _u3a_v4_road) par_p; // parent road + u3p(struct _u3a_v4_road) kid_p; // child road list + u3p(struct _u3a_v4_road) nex_p; // sibling road + + u3p(c3_w) cap_p; // top of transient region + u3p(c3_w) hat_p; // top of durable region + u3p(c3_w) mat_p; // bottom of transient region + u3p(c3_w) rut_p; // bottom of durable region + u3p(c3_w) ear_p; // original cap if kid is live + + c3_w off_w; // spin stack offset + c3_w fow_w; // spin stack overflow count + + c3_w fut_w[30]; // futureproof buffer + + struct { // escape buffer + union { + jmp_buf buf; + c3_w buf_w[256]; // futureproofing + }; + } esc; + + struct { // miscellaneous config + c3_w fag_w; // flag bits + } how; // + + struct { // allocation pools + u3p(u3a_v4_fbox) fre_p[u3a_v4_fbox_no]; // heap by node size log + u3p(u3a_v4_fbox) cel_p; // custom cell allocator + c3_w fre_w; // number of free words + c3_w max_w; // maximum allocated + } all; + + struct { + u3p(u3h_root) hot_p; // hot state (home road only) + u3p(u3h_root) war_p; // warm state + u3p(u3h_root) cod_p; // cold state + u3p(u3h_root) han_p; // hank cache + u3p(u3h_root) bas_p; // battery hashes + } jed; // jet dashboard + + struct { // bytecode state + u3p(u3h_v4_root) har_p; // formula->post of bytecode + } byc; + + struct { // scry namespace + u3_noun gul; // (list $+(* (unit (unit)))) now + } ski; + + struct { // trace stack + u3_noun tax; // (list ,*) + u3_noun mer; // emergency buffer to release + } bug; + + struct { // profile stack + c3_d nox_d; // nock steps + c3_d cel_d; // cell allocations + u3_noun don; // (list batt) + u3_noun trace; // (list trace) + u3_noun day; // doss, only in u3H (moveme) + } pro; + + struct { // memoization caches + u3p(u3h_v4_root) har_p; // transient + u3p(u3h_v4_root) per_p; // persistent + } cax; + } u3a_v4_road; + typedef u3a_v4_road u3_v4_road; + + extern u3a_v4_road* u3a_v4_Road; +# define u3R_v4 u3a_v4_Road + +# define u3a_v4_to_off(som) (((som) & 0x3fffffff) << u3a_v4_vits) +# define u3a_v4_to_ptr(som) (u3a_v4_into(u3a_v4_to_off(som))) +# define u3a_v4_to_pug(off) ((off >> u3a_v4_vits) | 0x80000000) +# define u3a_v4_to_pom(off) ((off >> u3a_v4_vits) | 0xc0000000) +# define u3a_v4_botox(tox_v) ( (u3a_v4_box *)(void *)(tox_v) - 1 ) + +// XX abort() instead of u3m_bail? +// +# define u3a_v4_head(som) \ + ( _(u3a_v4_is_cell(som)) \ + ? ( ((u3a_v4_cell *)u3a_v4_to_ptr(som))->hed )\ + : u3m_bail(c3__exit) ) +# define u3a_v4_tail(som) \ + ( _(u3a_v4_is_cell(som)) \ + ? ( ((u3a_v4_cell *)u3a_v4_to_ptr(som))->tel )\ + : u3m_bail(c3__exit) ) + + void* + u3a_v4_walloc(c3_w len_w); + void + u3a_v4_wfree(void* lag_v); + void + u3a_v4_free(void* tox_v); + void + u3a_v4_lose(u3_weak som); + void + u3a_v4_ream(void); + c3_o + u3a_v4_rewrite_ptr(void* ptr_v); + u3_post + u3a_v4_rewritten(u3_post som_p); + + + /*** jets.h + ***/ + void + u3j_v4_rite_lose(u3j_v4_rite* rit_u); + void + u3j_v4_site_lose(u3j_v4_site* sit_u); + void + u3j_v4_free_hank(u3_noun kev); + + + /*** hashtable.h + ***/ + void + u3h_v4_free(u3p(u3h_v4_root) har_p); + u3p(u3h_v4_root) + u3h_v4_new(void); + u3p(u3h_v4_root) + u3h_v4_new_cache(c3_w max_w); + void + u3h_v4_walk(u3p(u3h_v4_root) har_p, void (*fun_f)(u3_noun)); + void + u3h_v4_walk_with(u3p(u3h_v4_root) har_p, + void (*fun_f)(u3_noun, void*), + void* wit); + + /*** manage.h + ***/ + void + u3m_v4_reclaim(void); + + /*** vortex.h + ***/ + typedef struct __attribute__((__packed__)) _u3v_v4_arvo { + c3_d eve_d; // event number + u3_noun yot; // cached gates + u3_noun now; // current time + u3_noun roc; // kernel core + } u3v_v4_arvo; + + typedef c3_w u3v_v4_version; + + /* u3v_home: all internal (within image) state. + ** NB: version must be last for discriminability in north road + */ + typedef struct _u3v_v4_home { + u3a_v4_road rod_u; // storage state + u3v_v4_arvo arv_u; // arvo state + u3v_v4_version ver_w; // version number + } u3v_v4_home; + +extern u3v_v4_home* u3v_v4_Home; +# define u3H_v4 u3v_v4_Home +# define u3A_v4 (&(u3v_v4_Home->arv_u)) + + + /*** init + ***/ + void + u3_v4_load(c3_z wor_i); + +#endif /* U3_V4_H */ diff --git a/vere/pkg/past/v5.h b/vere/pkg/past/v5.h new file mode 100644 index 0000000..4dcdb86 --- /dev/null +++ b/vere/pkg/past/v5.h @@ -0,0 +1,60 @@ +#ifndef U3_V5_H +#define U3_V5_H + +#include "allocate.h" +#include "hashtable.h" +#include "imprison.h" +#include "jets.h" +#include "nock.h" +#include "retrieve.h" +#include "vortex.h" + + /*** current + ***/ +# define u3_v5_cell u3_cell +# define u3_v5_noun u3_noun +# define u3_v5_none u3_none + +# define u3A_v5 u3A +# define u3R_v5 u3R +# define u3j_v5_boot u3j_boot +# define u3j_v5_ream u3j_ream +# define u3a_v5_walloc u3a_walloc +# define u3a_v5_to_pug u3a_to_pug +# define u3a_v5_outa u3a_outa +# define u3a_v5_gain u3a_gain +# define u3i_v5_cell u3i_cell +# define u3h_v5_put u3h_put +# define u3a_v5_lose u3a_lose + +# define u3a_v5_atom u3a_atom +# define u3a_v5_is_atom u3a_is_atom +# define u3a_v5_is_pom u3a_is_pom +# define u3a_v5_north_is_normal u3a_north_is_normal +# define u3n_v5_prog u3n_prog +# define u3r_v5_mug_both u3r_mug_both +# define u3r_v5_mug_words u3r_mug_words + +# define u3a_v5_heap u3a_heap +# define u3a_v5_is_cat u3a_is_cat +# define u3a_v5_is_cell u3a_is_cell +# define u3a_v5_is_north u3a_is_north +# define u3a_v5_is_pom u3a_is_pom +# define u3a_v5_is_pug u3a_is_pug + +# define u3j_v5_fink u3j_fink +# define u3j_v5_fist u3j_fist +# define u3j_v5_hank u3j_hank +# define u3j_v5_rite u3j_rite +# define u3j_v5_site u3j_site + +# define u3h_v5_buck u3h_buck +# define u3h_v5_node u3h_node +# define u3h_v5_root u3h_root +# define u3h_v5_slot_is_node u3h_slot_is_node +# define u3h_v5_slot_is_noun u3h_slot_is_noun +# define u3h_v5_slot_is_null u3h_slot_is_null +# define u3h_v5_noun_to_slot u3h_noun_to_slot +# define u3h_v5_slot_to_noun u3h_slot_to_noun + +#endif /* U3_V5_H */ diff --git a/vere/pkg/ur/bitstream.c b/vere/pkg/ur/bitstream.c new file mode 100644 index 0000000..6cf95e6 --- /dev/null +++ b/vere/pkg/ur/bitstream.c @@ -0,0 +1,1283 @@ +/// @file + +#include "bitstream.h" + +#include +#include +#include +#include + +#include "defs.h" + +ur_cue_res_e +ur_bsr_init(ur_bsr_t *bsr, uint64_t len, const uint8_t *bytes) +{ + // check for overflow + // + if ( (len << 3) < len ) { + return ur_cue_meme; + } + + bsr->left = len; + bsr->bytes = bytes; + + return ur_cue_good; +} + +ur_bool_t +ur_bsr_sane(ur_bsr_t *bsr) +{ + ur_bool_t ret = 8 > bsr->off; + + if ( !bsr->left ) { + ret = ret && (!bsr->off && !bsr->bytes); + } + + return ret; +} + +ur_cue_res_e +ur_bsr_bit(ur_bsr_t *bsr, uint8_t *out) +{ + uint64_t left = bsr->left; + + if ( !left ) { + return ur_cue_gone; + } + else { + const uint8_t *b = bsr->bytes; + uint8_t off = bsr->off; + uint8_t bit = (b[0] >> off) & 1; + + if ( 7 == off ) { + bsr->bytes = ( --left ) ? (b + 1) : 0; + bsr->left = left; + bsr->off = 0; + } + else { + bsr->off = 1 + off; + } + + bsr->bits++; + + *out = bit; + return ur_cue_good; + } +} + +uint8_t +ur_bsr_bit_any(ur_bsr_t *bsr) +{ + uint64_t left = bsr->left; + + bsr->bits++; + + if ( !left ) { + return 0; + } + else { + const uint8_t *b = bsr->bytes; + uint8_t off = bsr->off; + uint8_t bit = (b[0] >> off) & 1; + + if ( 7 == off ) { + bsr->bytes = ( --left ) ? (b + 1) : 0; + bsr->left = left; + bsr->off = 0; + } + else { + bsr->off = 1 + off; + } + + return bit; + } +} + +uint8_t +ur_bsr8_any(ur_bsr_t *bsr, uint8_t len) +{ + uint64_t left = bsr->left; + + len = ur_min(8, len); + + bsr->bits += len; + + if ( !left ) { + return 0; + } + else { + uint8_t off = bsr->off; + uint8_t rest = 8 - off; + const uint8_t *b = bsr->bytes; + uint8_t m = b[0] >> off; + + if ( len < rest ) { + bsr->off = off + len; + return m & ((1 << len) - 1); + } + else if ( 1 == left ) { + bsr->off = 0; + bsr->left = 0; + bsr->bytes = 0; + return m; + } + else { + off = len - rest; + + bsr->off = off; + bsr->left--; + bsr->bytes++; + + { + uint8_t l = b[1] & ((1 << off) - 1); + return m ^ (l << rest); + } + } + } +} + +uint32_t +ur_bsr32_any(ur_bsr_t *bsr, uint8_t len) +{ + uint64_t left = bsr->left; + + len = ur_min(32, len); + + bsr->bits += len; + + if ( !left ) { + return 0; + } + else { + uint8_t off = bsr->off; + uint8_t rest = 8 - off; + uint32_t m = bsr->bytes[0] >> off; + + if ( len < rest ) { + bsr->off = off + len; + return m & ((1 << len) - 1); + } + else { + const uint8_t *b; + uint8_t mask, len_byt; + uint32_t l; + + len -= rest; + left--; + b = ++bsr->bytes; + + len_byt = len >> 3; + + if ( len_byt >= left ) { + len_byt = left; + bsr->off = off = 0; + bsr->left = 0; + bsr->bytes = 0; + } + else { + bsr->off = off = ur_mask_3(len); + bsr->left = left - len_byt; + bsr->bytes += len_byt; + } + + mask = (1 << off) - 1; + + switch ( len_byt ) { + default: assert(0); + + case 4: { + l = (uint32_t)b[0] + ^ (uint32_t)b[1] << 8 + ^ (uint32_t)b[2] << 16 + ^ (uint32_t)b[3] << 24; + } break; + + case 3: { + l = (uint32_t)b[0] + ^ (uint32_t)b[1] << 8 + ^ (uint32_t)b[2] << 16; + + if ( mask ) { + l ^= (uint32_t)(b[3] & mask) << 24; + } + } break; + + case 2: { + l = (uint32_t)b[0] + ^ (uint32_t)b[1] << 8; + + if ( mask ) { + l ^= (uint32_t)(b[2] & mask) << 16; + } + } break; + + case 1: { + l = (uint32_t)b[0]; + + if ( mask ) { + l ^= (uint32_t)(b[1] & mask) << 8; + } + } break; + + case 0: { + l = ( mask ) ? (uint32_t)(b[0] & mask) : 0; + } break; + } + + return m ^ (l << rest); + } + } +} + +uint64_t +ur_bsr64_any(ur_bsr_t *bsr, uint8_t len) +{ + uint64_t left = bsr->left; + + len = ur_min(64, len); + + bsr->bits += len; + + if ( !left ) { + return 0; + } + else { + uint8_t off = bsr->off; + uint8_t rest = 8 - off; + uint64_t m = bsr->bytes[0] >> off; + + if ( len < rest ) { + bsr->off = off + len; + return m & ((1 << len) - 1); + } + else { + const uint8_t *b; + uint8_t mask, len_byt; + uint64_t l; + + len -= rest; + left--; + b = ++bsr->bytes; + + len_byt = len >> 3; + + if ( len_byt >= left ) { + len_byt = left; + bsr->off = off = 0; + bsr->left = 0; + bsr->bytes = 0; + } + else { + bsr->off = off = ur_mask_3(len); + bsr->left = left - len_byt; + bsr->bytes += len_byt; + } + + mask = (1 << off) - 1; + + switch ( len_byt ) { + case 8: { + l = (uint64_t)b[0] + ^ (uint64_t)b[1] << 8 + ^ (uint64_t)b[2] << 16 + ^ (uint64_t)b[3] << 24 + ^ (uint64_t)b[4] << 32 + ^ (uint64_t)b[5] << 40 + ^ (uint64_t)b[6] << 48 + ^ (uint64_t)b[7] << 56; + } break; + + case 7: { + l = (uint64_t)b[0] + ^ (uint64_t)b[1] << 8 + ^ (uint64_t)b[2] << 16 + ^ (uint64_t)b[3] << 24 + ^ (uint64_t)b[4] << 32 + ^ (uint64_t)b[5] << 40 + ^ (uint64_t)b[6] << 48; + + if ( mask ) { + l ^= (uint64_t)(b[7] & mask) << 56; + } + } break; + + case 6: { + l = (uint64_t)b[0] + ^ (uint64_t)b[1] << 8 + ^ (uint64_t)b[2] << 16 + ^ (uint64_t)b[3] << 24 + ^ (uint64_t)b[4] << 32 + ^ (uint64_t)b[5] << 40; + + if ( mask ) { + l ^= (uint64_t)(b[6] & mask) << 48; + } + } break; + + case 5: { + l = (uint64_t)b[0] + ^ (uint64_t)b[1] << 8 + ^ (uint64_t)b[2] << 16 + ^ (uint64_t)b[3] << 24 + ^ (uint64_t)b[4] << 32; + + if ( mask ) { + l ^= (uint64_t)(b[5] & mask) << 40; + } + } break; + + case 4: { + l = (uint64_t)b[0] + ^ (uint64_t)b[1] << 8 + ^ (uint64_t)b[2] << 16 + ^ (uint64_t)b[3] << 24; + + if ( mask ) { + l ^= (uint64_t)(b[4] & mask) << 32; + } + } break; + + case 3: { + l = (uint64_t)b[0] + ^ (uint64_t)b[1] << 8 + ^ (uint64_t)b[2] << 16; + + if ( mask ) { + l ^= (uint64_t)(b[3] & mask) << 24; + } + } break; + + case 2: { + l = (uint64_t)b[0] + ^ (uint64_t)b[1] << 8; + + if ( mask ) { + l ^= (uint64_t)(b[2] & mask) << 16; + } + } break; + + case 1: { + l = (uint64_t)b[0]; + + if ( mask ) { + l ^= (uint64_t)(b[1] & mask) << 8; + } + } break; + + case 0: { + l = ( mask ) ? (uint64_t)(b[0] & mask) : 0; + } break; + } + + return m ^ (l << rest); + } + } +} + +void +ur_bsr_bytes_any(ur_bsr_t *bsr, uint64_t len, uint8_t *out) +{ + uint64_t left = bsr->left; + + bsr->bits += len; + + if ( !left ) { + return; + } + else { + const uint8_t *b = bsr->bytes; + uint8_t off = bsr->off; + uint64_t len_byt = len >> 3; + uint8_t len_bit = ur_mask_3(len); + uint64_t need = len_byt + !!len_bit; + + if ( !off ) { + if ( need > left ) { + memcpy(out, b, left); + left = 0; + bsr->bytes = 0; + } + else { + memcpy(out, b, len_byt); + off = len_bit; + + if ( off ) { + out[len_byt] = b[len_byt] & ((1 << off) - 1); + } + + left -= len_byt; + bsr->bytes = ( left ) ? b + len_byt : 0; + } + } + // the most-significant bits from a byte in the stream + // become the least-significant bits of an output byte, and vice-versa + // + else { + uint8_t rest = 8 - off; + uint64_t last = left - 1; + uint64_t max = ur_min(last, len_byt); + uint8_t m, l; + + // loop over all the bytes we need (or all that remain) + // + { + uint64_t i; + + for ( i = 0; i < max; i++ ) { + out[i] = (b[i] >> off) ^ (b[i + 1] << rest); + } + + b += max; + m = *b >> off; + } + + // we're reading into or beyond the last byte [bsr] + // + // [m] holds all the remaining bits in [bsr], + // but we might not need all of it + // + if ( need >= left ) { + uint8_t bits = len - (last << 3); + + if ( bits < rest ) { + out[max] = m & ((1 << len_bit) - 1); + bsr->bytes = b; + left = 1; + off += len_bit; + } + else { + out[max] = m; + bsr->bytes = 0; + left = 0; + off = 0; + } + } + // we need less than a byte, but it might span multiple bytes + // + else { + uint8_t bits = off + len_bit; + uint8_t step = !!(bits >> 3); + + bsr->bytes = b + step; + left -= len_byt + step; + off = ur_mask_3(bits); + + if ( len_bit ) { + if ( len_bit <= rest ) { + out[max] = m & ((1 << len_bit) - 1); + } + else { + l = *++b & ((1 << off) - 1); + out[max] = (m ^ (l << rest)) & ((1 << len_bit) - 1); + } + } + } + } + + bsr->off = off; + bsr->left = left; + } +} + +void +ur_bsr_skip_any(ur_bsr_t *bsr, uint64_t len) +{ + uint64_t left = bsr->left; + + bsr->bits += len; + + if ( !left ) { + return; + } + else { + const uint8_t *b = bsr->bytes; + uint8_t off = bsr->off; + uint64_t len_byt = len >> 3; + uint8_t len_bit = ur_mask_3(len); + uint64_t need = len_byt + !!len_bit; + uint8_t rest = 8 - off; + uint64_t last = left - 1; + + b += ur_min(last, len_byt) + 1; + + if ( need >= left ) { + uint8_t bits = len - (last << 3); + + if ( bits < rest ) { + bsr->bytes = b - 1; + left = 1; + off += len_bit; + } + else { + bsr->bytes = 0; + left = 0; + off = 0; + } + } + else { + uint8_t bits = off + len_bit; + uint8_t step = !!(bits >> 3); + + bsr->bytes = b - (1 - step); + left -= len_byt + step; + off = ur_mask_3(bits); + } + + bsr->off = off; + bsr->left = left; + } +} + +static inline ur_cue_res_e +_bsr_set_gone(ur_bsr_t *bsr, uint8_t bits) +{ + bsr->bits += bits; + bsr->bytes = 0; + bsr->left = 0; + bsr->off = 0; + return ur_cue_gone; +} + +ur_cue_res_e +ur_bsr_tag(ur_bsr_t *bsr, ur_cue_tag_e *out) +{ + uint64_t left = bsr->left; + + if ( !left ) { + return ur_cue_gone; + } + else { + const uint8_t *b = bsr->bytes; + uint8_t off = bsr->off; + uint8_t bit = (b[0] >> off) & 1; + uint8_t len = 1; + + if ( 0 == bit ) { + *out = ur_jam_atom; + } + else { + if ( 7 == off ) { + if ( 1 == left ) { + return _bsr_set_gone(bsr, 1); + } + + bit = b[1] & 1; + } + else { + bit = (b[0] >> (off + 1)) & 1; + } + + len++; + *out = ( 0 == bit ) ? ur_jam_cell : ur_jam_back; + } + + { + uint8_t bits = off + len; + uint8_t bytes = bits >> 3; + + left -= bytes; + + if ( !left ) { + bsr->bytes = 0; + bsr->left = 0; + bsr->off = 0; + } + else { + bsr->bytes += bytes; + bsr->left = left; + bsr->off = ur_mask_3(bits); + } + + bsr->bits += len; + + return ur_cue_good; + } + } +} + +static inline ur_cue_res_e +_bsr_log_meme(ur_bsr_t *bsr) +{ + bsr->bits += 256; + bsr->bytes += 32; + bsr->left -= 32; + return ur_cue_meme; +} + +ur_cue_res_e +ur_bsr_log(ur_bsr_t *bsr, uint8_t *out) +{ + uint64_t left = bsr->left; + + if ( !left ) { + return ur_cue_gone; + } + else { + uint8_t off = bsr->off; + const uint8_t *b = bsr->bytes; + uint8_t byt = b[0] >> off; + uint8_t skip = 0; + + while ( !byt ) { + if ( 32 == skip ) { + return _bsr_log_meme(bsr); + } + + byt = b[++skip]; + + if ( skip == left ) { + return _bsr_set_gone(bsr, (skip << 3) - off); + } + } + + { + uint32_t zeros = ur_tz8(byt) + (skip ? ((skip << 3) - off) : 0); + + if ( 255 < zeros ) { + return _bsr_log_meme(bsr); + } + else { + uint32_t bits = off + 1 + zeros; + uint8_t bytes = bits >> 3; + + left -= bytes; + + bsr->bytes = left ? (b + bytes) : 0; + bsr->bits += 1 + zeros; + bsr->left = left; + bsr->off = ur_mask_3(bits); + + *out = zeros; + return ur_cue_good; + } + } + } +} + +ur_cue_res_e +ur_bsr_rub_len(ur_bsr_t *bsr, uint64_t *out) +{ + ur_cue_res_e res; + uint8_t len; + + if ( ur_cue_good != (res = ur_bsr_log(bsr, &len)) ) { + return res; + } + else if ( 64 <= len ) { + return ur_cue_meme; + } + + switch ( len ) { + case 0: { + *out = 0; + } break; + + case 1: { + *out = 1; + } break; + + default: { + len--; + *out = ur_bsr64_any(bsr, len) ^ (1ULL << len); + } break; + } + + return ur_cue_good; +} + +/* +** bitstream-writer operations follow a pattern of an unsafe (inline) +** implementation, unsafe wrt to buffer size and reallocation, +** wrapped in a public function with buffer size checks. +** +** higher-level operations made up of multiple discrete writes check +** the buffer size once for all involved writes. +** +** this pattern should be easily adaptable to an alternate bitstream-writer +** implementation that flushes accumulated output periodically instead +** of reallocating the output buffer. +*/ + +void +ur_bsw_init(ur_bsw_t *bsw, uint64_t prev, uint64_t size) +{ + bsw->prev = prev; + bsw->size = size; + bsw->bytes = calloc(size, 1); + + if ( !bsw->bytes ) { + fprintf(stderr, + "ur: bitstream-init allocation failed, out of memory\r\n"); + abort(); + } +} + +void +ur_bsw_grow(ur_bsw_t *bsw, uint64_t step) +{ + uint64_t size = bsw->size; + uint64_t next = size + step; + + bsw->bytes = realloc(bsw->bytes, next); + + if ( !bsw->bytes ) { + fprintf(stderr, + "ur: bitstream-write allocation failed, out of memory\r\n"); + abort(); + } + + memset(bsw->bytes + size, 0, step); + + bsw->prev = size; + bsw->size = next; +} + +ur_bool_t +ur_bsw_sane(ur_bsw_t *bsw) +{ + return ( (8 > bsw->off) + && ((bsw->fill << 3) + bsw->off == bsw->bits) ); +} + +uint64_t +ur_bsw_done(ur_bsw_t *bsw, uint64_t *len, uint8_t **byt) +{ + uint64_t bits = bsw->bits; + + *len = bsw->fill + !!bsw->off; + *byt = bsw->bytes; + + memset(bsw, 0, sizeof(*bsw)); + + return bits; +} + +static inline void +_bsw_bit_unsafe(ur_bsw_t *bsw, uint8_t bit) +{ + uint64_t fill = bsw->fill; + uint8_t off = bsw->off; + + bsw->bytes[fill] ^= (bit & 1) << off; + + if ( 7 == off ) { + bsw->fill = 1 + fill; + bsw->off = 0; + } + else { + bsw->off = 1 + off; + } + + bsw->bits++; +} + +void +ur_bsw_bit(ur_bsw_t *bsw, uint8_t bit) +{ + if ( (7 == bsw->off) + && ((1 + bsw->fill) == bsw->size) ) + { + ur_bsw_grow(bsw, bsw->prev); + } + + _bsw_bit_unsafe(bsw, bit); +} + +static inline void +_bsw8_unsafe(ur_bsw_t *bsw, uint8_t len, uint8_t byt) +{ + uint64_t fill = bsw->fill; + uint8_t off = bsw->off; + uint8_t rest = 8 - off; + uint8_t l, m; + + // the least-significant bits of the input become the + // most-significant bits of a byte in the output stream + // + if ( len < rest ) { + l = byt & ((1 << len) - 1); + + bsw->bytes[fill] ^= l << off; + bsw->off = off + len; + } + // and vice-versa + // + else { + l = byt & ((1 << rest) - 1); + m = byt >> rest; + + bsw->bytes[fill++] ^= l << off; + off = len - rest; + bsw->bytes[fill] = m & ((1 << off) - 1); + + bsw->fill = fill; + bsw->off = off; + } + + bsw->bits += len; +} + +void +ur_bsw8(ur_bsw_t *bsw, uint8_t len, uint8_t byt) +{ + len = ur_min(8, len); + + if ( bsw->fill + !!((bsw->off + len) >> 3) >= bsw->size ) { + ur_bsw_grow(bsw, bsw->prev); + } + + _bsw8_unsafe(bsw, len, byt); +} + +static inline void +_bsw32_unsafe(ur_bsw_t *bsw, uint8_t len, uint32_t val) +{ + uint64_t fill = bsw->fill; + uint8_t off = bsw->off; + uint8_t *bytes = bsw->bytes; + + bsw->bits += len; + + if ( off ) { + uint8_t rest = 8 - off; + + if ( len < rest ) { + bytes[fill] ^= (val & ((1 << len) - 1)) << off; + bsw->off = off + len; + return; + } + + bytes[fill++] ^= (val & ((1 << rest) - 1)) << off; + val >>= rest; + len -= rest; + } + + switch ( len >> 3 ) { + case 4: { + bytes[fill++] = ur_mask_8(val); + bytes[fill++] = ur_mask_8(val >> 8); + bytes[fill++] = ur_mask_8(val >> 16); + bytes[fill++] = ur_mask_8(val >> 24); + + // no offset is possible here + // + bsw->fill = fill; + bsw->off = 0; + return; + } + + case 3: { + bytes[fill++] = ur_mask_8(val); + bytes[fill++] = ur_mask_8(val >> 8); + bytes[fill++] = ur_mask_8(val >> 16); + val >>= 24; + } break; + + case 2: { + bytes[fill++] = ur_mask_8(val); + bytes[fill++] = ur_mask_8(val >> 8); + val >>= 16; + } break; + + case 1: { + bytes[fill++] = ur_mask_8(val); + val >>= 8; + } break; + } + + off = ur_mask_3(len); + + if ( off ) { + bytes[fill] = (uint8_t)(val & ((1 << off) - 1)); + } + + bsw->fill = fill; + bsw->off = off; +} + +void +ur_bsw32(ur_bsw_t *bsw, uint8_t len, uint32_t val) +{ + uint8_t need; + + len = ur_min(32, len); + need = ur_bloq_up3( bsw->off + len ); + + if ( bsw->fill + need >= bsw->size ) { + ur_bsw_grow(bsw, ur_max(need, bsw->prev)); + } + + _bsw32_unsafe(bsw, len, val); +} + +static inline void +_bsw64_unsafe(ur_bsw_t *bsw, uint8_t len, uint64_t val) +{ + uint64_t fill = bsw->fill; + uint8_t off = bsw->off; + uint8_t *bytes = bsw->bytes; + + bsw->bits += len; + + if ( off ) { + uint8_t rest = 8 - off; + + if ( len < rest ) { + bytes[fill] ^= (val & ((1 << len) - 1)) << off; + bsw->off = off + len; + return; + } + + bytes[fill++] ^= (val & ((1 << rest) - 1)) << off; + val >>= rest; + len -= rest; + } + + switch ( len >> 3 ) { + case 8: { + bytes[fill++] = ur_mask_8(val); + bytes[fill++] = ur_mask_8(val >> 8); + bytes[fill++] = ur_mask_8(val >> 16); + bytes[fill++] = ur_mask_8(val >> 24); + bytes[fill++] = ur_mask_8(val >> 32); + bytes[fill++] = ur_mask_8(val >> 40); + bytes[fill++] = ur_mask_8(val >> 48); + bytes[fill++] = ur_mask_8(val >> 56); + + // no offset is possible here + // + bsw->fill = fill; + bsw->off = 0; + return; + } + + case 7: { + bytes[fill++] = ur_mask_8(val); + bytes[fill++] = ur_mask_8(val >> 8); + bytes[fill++] = ur_mask_8(val >> 16); + bytes[fill++] = ur_mask_8(val >> 24); + bytes[fill++] = ur_mask_8(val >> 32); + bytes[fill++] = ur_mask_8(val >> 40); + bytes[fill++] = ur_mask_8(val >> 48); + val >>= 56; + } break; + + case 6: { + bytes[fill++] = ur_mask_8(val); + bytes[fill++] = ur_mask_8(val >> 8); + bytes[fill++] = ur_mask_8(val >> 16); + bytes[fill++] = ur_mask_8(val >> 24); + bytes[fill++] = ur_mask_8(val >> 32); + bytes[fill++] = ur_mask_8(val >> 40); + val >>= 48; + } break; + + case 5: { + bytes[fill++] = ur_mask_8(val); + bytes[fill++] = ur_mask_8(val >> 8); + bytes[fill++] = ur_mask_8(val >> 16); + bytes[fill++] = ur_mask_8(val >> 24); + bytes[fill++] = ur_mask_8(val >> 32); + val >>= 40; + } break; + + case 4: { + bytes[fill++] = ur_mask_8(val); + bytes[fill++] = ur_mask_8(val >> 8); + bytes[fill++] = ur_mask_8(val >> 16); + bytes[fill++] = ur_mask_8(val >> 24); + val >>= 32; + } break; + + case 3: { + bytes[fill++] = ur_mask_8(val); + bytes[fill++] = ur_mask_8(val >> 8); + bytes[fill++] = ur_mask_8(val >> 16); + val >>= 24; + } break; + + case 2: { + bytes[fill++] = ur_mask_8(val); + bytes[fill++] = ur_mask_8(val >> 8); + val >>= 16; + } break; + + case 1: { + bytes[fill++] = ur_mask_8(val); + val >>= 8; + } break; + } + + off = ur_mask_3(len); + + if ( off ) { + bytes[fill] = (uint8_t)(val & ((1 << off) - 1)); + } + + bsw->fill = fill; + bsw->off = off; +} + +void +ur_bsw64(ur_bsw_t *bsw, uint8_t len, uint64_t val) +{ + uint8_t need; + + len = ur_min(64, len); + need = ur_bloq_up3( bsw->off + len ); + + if ( bsw->fill + need >= bsw->size ) { + ur_bsw_grow(bsw, ur_max(need, bsw->prev)); + } + + _bsw64_unsafe(bsw, len, val); +} + +static inline void +_bsw_bytes_unsafe(ur_bsw_t *bsw, const uint64_t len, const uint8_t* src) +{ + uint64_t fill = bsw->fill; + uint8_t off = bsw->off; + uint8_t *dst = bsw->bytes + fill; + + if ( !off ) { + const uint64_t len_byt = len >> 3; + const uint8_t len_bit = ur_mask_3(len); + + memcpy(dst, src, len_byt); + bsw->fill = fill + len_byt; + + if ( len_bit ) { + dst[len_byt] = src[len_byt] & ((1 << len_bit) - 1); + bsw->off = len_bit; + } + } + else { + const uint8_t rest = 8 - off; + + if ( rest >= len ) { + uint16_t ful = off + len; + + *dst ^= (*src & ((1 << len) - 1)) << off; + + if ( ful >> 3 ) { + bsw->fill = fill + 1; + } + + bsw->off = ur_mask_3(ful); + } + else { + const uint64_t nel = len - rest; + const uint64_t len_byt = nel >> 3; + const uint8_t len_bit = ur_mask_3(nel); + + *dst++ ^= *src << off; + + for ( uint64_t i = 0; i < len_byt; i++ ) { + dst[i] = (src[i] >> rest) ^ (src[i + 1] << off); + } + + { + uint8_t tal = (src[len_byt] >> rest) + ^ (( off >= len_bit ) ? 0 : (src[len_byt + 1] << off)); + dst[len_byt] = tal & ((1 << len_bit) - 1); + } + + bsw->fill = fill + len_byt + 1; + bsw->off = len_bit; + } + } + + bsw->bits += len; +} + +void +ur_bsw_bytes(ur_bsw_t *bsw, uint64_t len, uint8_t *byt) +{ + uint64_t need = ur_bloq_up3(len + bsw->off); + + if ( bsw->fill + need >= bsw->size ) { + ur_bsw_grow(bsw, ur_max(need, bsw->prev)); + } + + _bsw_bytes_unsafe(bsw, len, byt); +} + +static inline void +_bsw_bex_unsafe(ur_bsw_t *bsw, uint8_t n) +{ + uint64_t fill = bsw->fill; + uint8_t off = bsw->off; + uint32_t bits = n + off; + + fill += bits >> 3; + off = ur_mask_3(bits); + + bsw->bytes[fill] ^= 1 << off; + + if ( 7 == off ) { + bsw->off = 0; + bsw->fill = 1 + fill; + } + else { + bsw->off = 1 + off; + bsw->fill = fill; + } + + bsw->bits += 1 + n; +} + +void +ur_bsw_bex(ur_bsw_t *bsw, uint8_t n) +{ + uint64_t need = ur_bloq_up3(1 + n + bsw->off); + + if ( bsw->fill + need >= bsw->size ) { + ur_bsw_grow(bsw, ur_max(need, bsw->prev)); + } + + _bsw_bex_unsafe(bsw, n); +} + +static inline void +_bsw_mat64_unsafe(ur_bsw_t *bsw, uint8_t len, uint64_t val) +{ + if ( 0 == len ) { + _bsw_bit_unsafe(bsw, 1); + } + else { + { + uint8_t nel = ur_met0_64(len); + _bsw_bex_unsafe(bsw, nel); + _bsw64_unsafe(bsw, nel - 1, len); + } + + _bsw64_unsafe(bsw, len, val); + } +} + +/* +* the length of a "mat" run-length encoded atom of [len] bits +*/ +#define MAT_LEN(len) ( ( 0 == len ) ? 1 : len + (2 * ur_met0_64((uint64_t)len)) ) + +void +ur_bsw_mat64(ur_bsw_t *bsw, uint8_t len, uint64_t val) +{ + uint8_t need; + + len = ur_min(64, len); + need = ur_bloq_up3( bsw->off + MAT_LEN(len) ); + + if ( bsw->fill + need >= bsw->size ) { + ur_bsw_grow(bsw, ur_max(need, bsw->prev)); + } + + _bsw_mat64_unsafe(bsw, len, val); +} + +static inline void +_bsw_mat_bytes_unsafe(ur_bsw_t *bsw, uint64_t len, uint8_t *byt) +{ + if ( 0 == len ) { + _bsw_bit_unsafe(bsw, 1); + } + else { + // write run-length + // + { + uint8_t nel = ur_met0_64(len); + _bsw_bex_unsafe(bsw, nel); + _bsw64_unsafe(bsw, nel - 1, len); + } + + _bsw_bytes_unsafe(bsw, len, byt); + } +} + +void +ur_bsw_mat_bytes(ur_bsw_t *bsw, uint64_t len, uint8_t *byt) +{ + uint64_t need = ur_bloq_up3( bsw->off + MAT_LEN(len) ); + + if ( bsw->fill + need >= bsw->size ) { + ur_bsw_grow(bsw, ur_max(need, bsw->prev)); + } + + _bsw_mat_bytes_unsafe(bsw, len, byt); +} + +static inline void +_bsw_back64(ur_bsw_t *bsw, uint8_t len, uint64_t val) +{ + _bsw8_unsafe(bsw, 2, 3); + _bsw_mat64_unsafe(bsw, len, val); +} + +void +ur_bsw_back64(ur_bsw_t *bsw, uint8_t len, uint64_t val) +{ + uint8_t need; + + len = ur_min(64, len); + need = ur_bloq_up3( 2 + bsw->off + MAT_LEN(len) ); + + if ( bsw->fill + need >= bsw->size ) { + ur_bsw_grow(bsw, ur_max(need, bsw->prev)); + } + + _bsw_back64(bsw, len, val); +} + +static inline void +_bsw_atom64(ur_bsw_t *bsw, uint8_t len, uint64_t val) +{ + _bsw_bit_unsafe(bsw, 0); + _bsw_mat64_unsafe(bsw, len, val); +} + +void +ur_bsw_atom64(ur_bsw_t *bsw, uint8_t len, uint64_t val) +{ + uint8_t need; + + len = ur_min(64, len); + need = ur_bloq_up3( 1 + bsw->off + MAT_LEN(len) ); + + if ( bsw->fill + need >= bsw->size ) { + ur_bsw_grow(bsw, ur_max(need, bsw->prev)); + } + + _bsw_atom64(bsw, len, val); +} + +static inline void +_bsw_atom_bytes_unsafe(ur_bsw_t *bsw, uint64_t len, uint8_t *byt) +{ + _bsw_bit_unsafe(bsw, 0); + _bsw_mat_bytes_unsafe(bsw, len, byt); +} + +void +ur_bsw_atom_bytes(ur_bsw_t *bsw, uint64_t len, uint8_t *byt) +{ + uint64_t need = ur_bloq_up3( 1 + bsw->off + MAT_LEN(len) ); + + if ( bsw->fill + need >= bsw->size ) { + ur_bsw_grow(bsw, ur_max(need, bsw->prev)); + } + + _bsw_atom_bytes_unsafe(bsw, len, byt); +} + +void +ur_bsw_cell(ur_bsw_t *bsw) +{ + uint8_t need = ur_bloq_up3( 2 + bsw->off ); + + if ( bsw->fill + need >= bsw->size ) { + ur_bsw_grow(bsw, ur_max(need, bsw->prev)); + } + + _bsw8_unsafe(bsw, 2, 1); +} diff --git a/vere/pkg/ur/bitstream.h b/vere/pkg/ur/bitstream.h new file mode 100644 index 0000000..a4b7859 --- /dev/null +++ b/vere/pkg/ur/bitstream.h @@ -0,0 +1,239 @@ +/// @file + +#ifndef UR_BITSTREAM_H +#define UR_BITSTREAM_H + +#include + +#include "defs.h" + +/* +** stateful bitstream reader, backed by a byte-buffer, +** maintaing a 64-bit bit-cursor, and supporting a variety +** of read sizes and patterns. +** +** NB: ur_bsr*_any() functions behave as if the stream were infinite, +** subject to the overall limit of the bit-cursor. +** +*/ +typedef struct ur_bsr_s { + uint64_t left; + uint64_t bits; + uint8_t off; + const uint8_t *bytes; +} ur_bsr_t; + +/* +** generalized bitstream-reader/cue response enum +*/ +typedef enum { + ur_cue_good = 0, // successful read + ur_cue_back = 1, // missing backreference + ur_cue_gone = 2, // read off the end of the stream + ur_cue_meme = 3 // exceeded memory representation +} ur_cue_res_e; + +/* +** jam/cue type tag enumeration +*/ +typedef enum { + ur_jam_atom = 0, + ur_jam_cell = 1, + ur_jam_back = 2 +} ur_cue_tag_e; + +/* +** stateful bitstream writer, backed by a byte-buffer automatically +** reallocated with fibonacc growth, maintaing a 64-bit bit-cursor, +** and supporting a variety of write sizes and patterns. +** +*/ +typedef struct ur_bsw_s { + uint64_t prev; + uint64_t size; + uint64_t fill; + uint64_t bits; + uint8_t off; + uint8_t *bytes; +} ur_bsw_t; + +/* +** initialize bitstream-reader and check for 64-bit bit-cursor overflow. +*/ +ur_cue_res_e +ur_bsr_init(ur_bsr_t *bsr, uint64_t len, const uint8_t *bytes); + +/* +** validate bitstream-reader invariants. +*/ +ur_bool_t +ur_bsr_sane(ur_bsr_t *bsr); + +/* +** read a bit, failing at EOS +*/ +ur_cue_res_e +ur_bsr_bit(ur_bsr_t *bsr, uint8_t *out); + +/* +** read a bit +*/ +uint8_t +ur_bsr_bit_any(ur_bsr_t *bsr); + +/* +** read N (up to 8) bits into a uint8. +*/ +uint8_t +ur_bsr8_any(ur_bsr_t *bsr, uint8_t len); + +/* +** read N (up to 32) bits into a uint32. +*/ +uint32_t +ur_bsr32_any(ur_bsr_t *bsr, uint8_t len); + +/* +** read N (up to 64) bits into a uint64. +*/ +uint64_t +ur_bsr64_any(ur_bsr_t *bsr, uint8_t len); + +/* +** read N bits into a zero-initialized byte array. +*/ +void +ur_bsr_bytes_any(ur_bsr_t *bsr, uint64_t len, uint8_t *out); + +/* +** advance the bitstream cursor as if we had read N bits. +*/ +void +ur_bsr_skip_any(ur_bsr_t *bsr, uint64_t len); + +/* +** read a jam/cue type tag. +*/ +ur_cue_res_e +ur_bsr_tag(ur_bsr_t *bsr, ur_cue_tag_e *out); + +/* +** read a binary exponent, producing the binary log. +** +** read N (up to 255) zero bits followed by a 1, produce N. +*/ +ur_cue_res_e +ur_bsr_log(ur_bsr_t *bsr, uint8_t *out); + +/* +** read an atomic run-length (a la +rub). +** +** read a binary log N, then read N (up to 64) bits, +** produce (N-bits ^ (1 << N)) +*/ +ur_cue_res_e +ur_bsr_rub_len(ur_bsr_t *bsr, uint64_t *out); + +/* +** initialize bitstream-writer with prev/size for fibonacci growth. +*/ +void +ur_bsw_init(ur_bsw_t *bsw, uint64_t prev, uint64_t size); + +/* +** reallocate bitstream write buffer with max(fibonacci, step) growth. +*/ +void +ur_bsw_grow(ur_bsw_t *bsw, uint64_t step); + +/* +** validate bitstream-writer invariants. +*/ +ur_bool_t +ur_bsw_sane(ur_bsw_t *bsw); + +/* +** return bit-length, produce byte-buffer. +*/ +uint64_t +ur_bsw_done(ur_bsw_t *bsw, uint64_t *len, uint8_t **byt); + +/* +** write a bit +*/ +void +ur_bsw_bit(ur_bsw_t *bsw, uint8_t bit); + +/* +** write N (up to 8) bits of a uint8. +*/ +void +ur_bsw8(ur_bsw_t *bsw, uint8_t len, uint8_t byt); + +/* +** write N (up to 32) bits of a uint32. +*/ +void +ur_bsw32(ur_bsw_t *bsw, uint8_t len, uint32_t val); + +/* +** write N (up to 64) bits of a uint64. +*/ +void +ur_bsw64(ur_bsw_t *bsw, uint8_t len, uint64_t val); + +/* +** write N bits of a byte array. +** +** NB: [byt] must contain at least N bits. +*/ +void +ur_bsw_bytes(ur_bsw_t *bsw, uint64_t len, uint8_t *byt); + +/* +** write a binary exponent (N zero bits, followed by a 1). +*/ +void +ur_bsw_bex(ur_bsw_t *bsw, uint8_t n); + +/* +** write N (up to 64) run-length prefixed bits (a la +mat). +*/ +void +ur_bsw_mat64(ur_bsw_t *bsw, uint8_t len, uint64_t val); + +/* +** write N run-length prefixed bits (a la +mat). +** +** NB: [byt] must contain at least N bits. +*/ +void +ur_bsw_mat_bytes(ur_bsw_t *bsw, uint64_t len, uint8_t *byt); + +/* +** write a backref tag (1, 1) and N (up to 64) run-length prefixed bits. +*/ +void +ur_bsw_back64(ur_bsw_t *bsw, uint8_t len, uint64_t val); + +/* +** write an atom tag (0) and N (up to 64) run-length prefixed bits. +*/ +void +ur_bsw_atom64(ur_bsw_t *bsw, uint8_t len, uint64_t val); + +/* +** write an atom tag (0) and N run-length prefixed bits. +** +** NB: [byt] must contain at least N bits. +*/ +void +ur_bsw_atom_bytes(ur_bsw_t *bsw, uint64_t len, uint8_t *byt); + +/* +** write a cell tag (1, 0) +*/ +void +ur_bsw_cell(ur_bsw_t *bsw); + +#endif diff --git a/vere/pkg/ur/build.zig b/vere/pkg/ur/build.zig new file mode 100644 index 0000000..abd1ec0 --- /dev/null +++ b/vere/pkg/ur/build.zig @@ -0,0 +1,42 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const copts: []const []const u8 = + b.option([]const []const u8, "copt", "") orelse &.{}; + + const pkg_ur = b.addStaticLibrary(.{ + .name = "ur", + .target = target, + .optimize = optimize, + }); + + const murmur3 = b.dependency("murmur3", .{ + .target = target, + .optimize = optimize, + }); + + pkg_ur.linkLibC(); + pkg_ur.linkLibrary(murmur3.artifact("murmur3")); + + pkg_ur.addIncludePath(b.path("")); + pkg_ur.addCSourceFiles(.{ + .root = b.path(""), + .files = &.{ + "bitstream.c", + "hashcons.c", + "serial.c", + }, + .flags = copts, + }); + + pkg_ur.installHeader(b.path("bitstream.h"), "ur/bitstream.h"); + pkg_ur.installHeader(b.path("defs.h"), "ur/defs.h"); + pkg_ur.installHeader(b.path("hashcons.h"), "ur/hashcons.h"); + pkg_ur.installHeader(b.path("serial.h"), "ur/serial.h"); + pkg_ur.installHeader(b.path("ur.h"), "ur/ur.h"); + + b.installArtifact(pkg_ur); +} diff --git a/vere/pkg/ur/build.zig.zon b/vere/pkg/ur/build.zig.zon new file mode 100644 index 0000000..2330f45 --- /dev/null +++ b/vere/pkg/ur/build.zig.zon @@ -0,0 +1,13 @@ +.{ + .name = .ur, + .fingeprint = 0xad9a8f5c919f2264, + .version = "0.0.1", + .dependencies = .{ + .murmur3 = .{ + .path = "../../ext/murmur3", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/pkg/ur/defs.h b/vere/pkg/ur/defs.h new file mode 100644 index 0000000..68d6f74 --- /dev/null +++ b/vere/pkg/ur/defs.h @@ -0,0 +1,86 @@ +/// @file + +#ifndef UR_DEFS_H +#define UR_DEFS_H + +#include +#include +#include + +typedef uint8_t ur_bool_t; + +#define ur_min(a, b) ( ((a) < (b)) ? (a) : (b) ) +#define ur_max(a, b) ( ((a) > (b)) ? (a) : (b) ) + +/* +** fibonacci constants, for convenient initialization of +** objects intended to be reallocated with fibonacci growth +*/ +#define ur_fib10 55 +#define ur_fib11 89 +#define ur_fib12 144 +#define ur_fib27 196418 +#define ur_fib28 317811 +#define ur_fib33 3524578 +#define ur_fib34 5702887 + +/* +** bit-masking helpers +*/ +#define ur_mask_3(a) (a & 0x7) +#define ur_mask_8(a) (a & 0xff) +#define ur_mask_31(a) (a & 0x7fffffff) +#define ur_mask_62(a) (a & 0x3fffffffffffffffULL) + +/* +** bloq (binary exponent) conversions +*/ +#define ur_bloq_up1(a) ( (a + 0x1) >> 1 ) +#define ur_bloq_up2(a) ( (a + 0x3) >> 2 ) +#define ur_bloq_up3(a) ( (a + 0x7) >> 3 ) + +/* +** atom measurement +*/ +#if (32 == (CHAR_BIT * __SIZEOF_INT__)) +# define ur_lz32 __builtin_clz +# define ur_tz32 __builtin_ctz +#elif (32 == (CHAR_BIT * __SIZEOF_LONG__)) +# define ur_lz32 __builtin_clzl +# define ur_tz32 __builtin_ctzl +#else +# error "port me" +#endif + +#if (64 == (CHAR_BIT * __SIZEOF_LONG__)) +# define ur_lz64 __builtin_clzl +# define ur_tz64 __builtin_ctzl +#elif (64 == (CHAR_BIT * __SIZEOF_LONG_LONG__)) +# define ur_lz64 __builtin_clzll +# define ur_tz64 __builtin_ctzll +#else +# error "port me" +#endif + +#define ur_lz8(a) ( ur_lz32(a) - 24 ) +#define ur_tz8 ur_tz32 + +#define ur_met0_8(a) ( (a) ? 8 - ur_lz8(a) : 0 ) +#define ur_met0_32(a) ( (a) ? 32 - ur_lz32(a) : 0 ) +#define ur_met0_64(a) ( (a) ? 64 - ur_lz64(a) : 0 ) + +/* +** unsafe wrt trailing null bytes, which are invalid +*/ +inline uint64_t +ur_met0_bytes_unsafe(uint64_t len, uint8_t *byt) +{ + uint64_t last = len - 1; + return (last << 3) + ur_met0_8(byt[last]); +} + +#define ur_met3_8(a) ur_bloq_up3(ur_met0_8(a)) +#define ur_met3_32(a) ur_bloq_up3(ur_met0_32(a)) +#define ur_met3_64(a) ur_bloq_up3(ur_met0_64(a)) + +#endif /* ifndef UR_DEFS_H */ diff --git a/vere/pkg/ur/hashcons.c b/vere/pkg/ur/hashcons.c new file mode 100644 index 0000000..ea2338b --- /dev/null +++ b/vere/pkg/ur/hashcons.c @@ -0,0 +1,1026 @@ +/// @file + +#include "hashcons.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "defs.h" +#include "murmur3.h" + +// declarations of inline functions +// +uint64_t +ur_met0_bytes_unsafe(uint64_t len, uint8_t *byt); + +static void* +_oom(const char* cap, void* v) +{ + if ( !v ) { + fprintf(stderr, + "ur: hashcons: %s: allocation failed, out of memory\r\n", cap); + abort(); + } + + return v; +} + +void +ur_dict32_grow(ur_root_t *r, ur_dict32_t *dict, uint64_t prev, uint64_t size) +{ + ur_pail32_t *buckets, *old_buckets = dict->buckets; + uint8_t *fills, *old_fills = dict->fills; + uint64_t old_size = dict->size; + uint64_t i, next = prev + size; + + buckets = _oom("dict32_grow", calloc(next, sizeof(*buckets))); + fills = _oom("dict32_grow", calloc(next, sizeof(*fills))); + + if ( old_buckets ) { + for ( i = 0; i < old_size; i++ ) { + ur_pail32_t *old_bucket = &(old_buckets[i]); + uint8_t j, old_fill = old_fills[i]; + + for ( j = 0; j < old_fill; j++ ) { + uint32_t val = old_bucket->vals[j]; + ur_nref ref = old_bucket->refs[j]; + ur_mug mug = ur_nref_mug(r, ref); + + uint64_t idx = ( mug % next ); + ur_pail32_t *bucket = &(buckets[idx]); + uint8_t new_fill = fills[idx]; + + if ( ur_pail_max == new_fill ) { + free(buckets); + free(fills); + return ur_dict32_grow(r, dict, size, next); + } + + bucket->refs[new_fill] = ref; + bucket->vals[new_fill] = val; + fills[idx] = 1 + new_fill; + } + } + + free(old_buckets); + free(old_fills); + } + + dict->prev = size; + dict->size = next; + dict->fills = fills; + dict->buckets = buckets; +} + +ur_bool_t +ur_dict32_get(ur_root_t *r, ur_dict32_t *dict, ur_nref ref, uint32_t *out) +{ + ur_mug mug = ur_nref_mug(r, ref); + uint64_t idx = ( mug % dict->size ); + + ur_pail32_t *bucket = &(dict->buckets[idx]); + uint8_t i, fill = dict->fills[idx]; + + for ( i = 0; i < fill; i++ ) { + if ( ref == bucket->refs[i] ) { + *out = bucket->vals[i]; + return 1; + } + } + + return 0; +} + +void +ur_dict32_put(ur_root_t *r, ur_dict32_t *dict, ur_nref ref, uint32_t val) +{ + ur_mug mug = ur_nref_mug(r, ref); + + while ( 1 ) { + uint64_t idx = ( mug % dict->size ); + ur_pail32_t *bucket = &(dict->buckets[idx]); + uint8_t i, fill = dict->fills[idx]; + + for ( i = 0; i < fill; i++ ) { + if ( ref == bucket->refs[i] ) { + bucket->vals[i] = val; + return; + } + } + + if ( ur_pail_max == fill ) { + ur_dict32_grow(r, dict, dict->prev, dict->size); + continue; + } + + bucket->refs[fill] = ref; + bucket->vals[fill] = val; + dict->fills[idx] = 1 + fill; + break; + } +} + +void +ur_dict32_wipe(ur_dict32_t *dict) +{ + uint8_t *fills = dict->fills; + uint64_t size = dict->size; + + memset(fills, 0, sizeof(*fills) * size); +} + +void +ur_dict64_grow(ur_root_t *r, ur_dict64_t *dict, uint64_t prev, uint64_t size) +{ + ur_pail64_t *buckets, *old_buckets = dict->buckets; + uint8_t *fills, *old_fills = dict->fills; + uint64_t old_size = dict->size; + uint64_t i, next = prev + size; + + buckets = _oom("dict64_grow", calloc(next, sizeof(*buckets))); + fills = _oom("dict64_grow", calloc(next, sizeof(*fills))); + + if ( old_buckets ) { + for ( i = 0; i < old_size; i++ ) { + ur_pail64_t *old_bucket = &(old_buckets[i]); + uint8_t j, old_fill = old_fills[i]; + + for ( j = 0; j < old_fill; j++ ) { + uint64_t val = old_bucket->vals[j]; + ur_nref ref = old_bucket->refs[j]; + ur_mug mug = ur_nref_mug(r, ref); + + uint64_t idx = ( mug % next ); + ur_pail64_t *bucket = &(buckets[idx]); + uint8_t new_fill = fills[idx]; + + if ( ur_pail_max == new_fill ) { + free(buckets); + free(fills); + return ur_dict64_grow(r, dict, size, next); + } + + bucket->refs[new_fill] = ref; + bucket->vals[new_fill] = val; + fills[idx] = 1 + new_fill; + } + } + + free(old_buckets); + free(old_fills); + } + + dict->prev = size; + dict->size = next; + dict->fills = fills; + dict->buckets = buckets; +} + +ur_bool_t +ur_dict64_get(ur_root_t *r, ur_dict64_t *dict, ur_nref ref, uint64_t *out) +{ + ur_mug mug = ur_nref_mug(r, ref); + uint64_t idx = ( mug % dict->size ); + + ur_pail64_t *bucket = &(dict->buckets[idx]); + uint8_t i, fill = dict->fills[idx]; + + for ( i = 0; i < fill; i++ ) { + if ( ref == bucket->refs[i] ) { + *out = bucket->vals[i]; + return 1; + } + } + + return 0; +} + +void +ur_dict64_put(ur_root_t *r, ur_dict64_t *dict, ur_nref ref, uint64_t val) +{ + ur_mug mug = ur_nref_mug(r, ref); + + while ( 1 ) { + uint64_t idx = ( mug % dict->size ); + ur_pail64_t *bucket = &(dict->buckets[idx]); + uint8_t i, fill = dict->fills[idx]; + + for ( i = 0; i < fill; i++ ) { + if ( ref == bucket->refs[i] ) { + bucket->vals[i] = val; + return; + } + } + + if ( ur_pail_max == fill ) { + ur_dict64_grow(r, dict, dict->prev, dict->size); + continue; + } + + bucket->refs[fill] = ref; + bucket->vals[fill] = val; + dict->fills[idx] = 1 + fill; + break; + } +} + +void +ur_dict64_wipe(ur_dict64_t *dict) +{ + uint8_t *fills = dict->fills; + uint64_t size = dict->size; + + memset(fills, 0, sizeof(*fills) * size); +} + +void +ur_dict_grow(ur_root_t *r, ur_dict_t *dict, uint64_t prev, uint64_t size) +{ + ur_pail_t *buckets, *old_buckets = dict->buckets; + uint8_t *fills, *old_fills = dict->fills; + uint64_t old_size = dict->size; + uint64_t i, next = prev + size; + + buckets = _oom("dict_grow", calloc(next, sizeof(*buckets))); + fills = _oom("dict_grow", calloc(next, sizeof(*fills))); + + if ( old_buckets ) { + for ( i = 0; i < old_size; i++ ) { + ur_pail_t *old_bucket = &(old_buckets[i]); + uint8_t j, old_fill = old_fills[i]; + + for ( j = 0; j < old_fill; j++ ) { + ur_nref ref = old_bucket->refs[j]; + ur_mug mug = ur_nref_mug(r, ref); + + uint64_t idx = ( mug % next ); + ur_pail_t *bucket = &(buckets[idx]); + uint8_t new_fill = fills[idx]; + + if ( ur_pail_max == new_fill ) { + free(buckets); + free(fills); + return ur_dict_grow(r, dict, size, next); + } + + bucket->refs[new_fill] = ref; + fills[idx] = 1 + new_fill; + } + } + + free(old_buckets); + free(old_fills); + } + + dict->prev = size; + dict->size = next; + dict->fills = fills; + dict->buckets = buckets; +} + +ur_bool_t +ur_dict_get(ur_root_t *r, ur_dict_t *dict, ur_nref ref) +{ + ur_mug mug = ur_nref_mug(r, ref); + uint64_t idx = ( mug % dict->size ); + + ur_pail_t *bucket = &(dict->buckets[idx]); + uint8_t i, fill = dict->fills[idx]; + + for ( i = 0; i < fill; i++ ) { + if ( ref == bucket->refs[i] ) { + return 1; + } + } + + return 0; +} + +void +ur_dict_put(ur_root_t *r, ur_dict_t *dict, ur_nref ref) +{ + ur_mug mug = ur_nref_mug(r, ref); + + while ( 1 ) { + uint64_t idx = ( mug % dict->size ); + ur_pail_t *bucket = &(dict->buckets[idx]); + uint8_t i, fill = dict->fills[idx]; + + for ( i = 0; i < fill; i++ ) { + if ( ref == bucket->refs[i] ) { + return; + } + } + + if ( ur_pail_max == fill ) { + ur_dict_grow(r, dict, dict->prev, dict->size); + continue; + } + + bucket->refs[fill] = ref; + dict->fills[idx] = 1 + fill; + break; + } +} + +void +ur_dict_wipe(ur_dict_t *dict) +{ + uint8_t *fills = dict -> fills; + uint64_t size = dict->size; + + memset(fills, 0, sizeof(*fills) * size); +} + +void +ur_dict_free(ur_dict_t *dict) +{ + free(dict->buckets); + free(dict->fills); + dict->buckets = 0; +} + +ur_mug +ur_mug_bytes(const uint8_t *byt, uint64_t len) +{ + uint32_t seed = 0xcafebabe; + uint8_t i = 0; + + while ( i < 8 ) { + ur_mug mug; + uint32_t raw; + MurmurHash3_x86_32(byt, len, seed, &raw); + mug = (raw >> 31) ^ ( ur_mask_31(raw) ); + + if ( 0 == mug ) { + seed++; i++; + } + else { + return mug; + } + } + + return (ur_mug)0x7fff; +} + +ur_mug +ur_mug32(uint32_t x) +{ + uint8_t byt[4] = { + ur_mask_8(x >> 0), + ur_mask_8(x >> 8), + ur_mask_8(x >> 16), + ur_mask_8(x >> 24) + }; + + return ur_mug_bytes(byt, ur_met3_32(x)); +} + +ur_mug +ur_mug64(uint64_t x) +{ + uint8_t byt[8] = { + ur_mask_8(x >> 0), + ur_mask_8(x >> 8), + ur_mask_8(x >> 16), + ur_mask_8(x >> 24), + ur_mask_8(x >> 32), + ur_mask_8(x >> 40), + ur_mask_8(x >> 48), + ur_mask_8(x >> 56) + }; + + return ur_mug_bytes(byt, ur_met3_64(x)); +} + +ur_mug +ur_mug_both(ur_mug hed, ur_mug tal) +{ + uint32_t seed = 0xdeadbeef; + uint8_t len = 4 + ur_bloq_up3(ur_met0_32(tal)); + uint8_t i = 0; + uint8_t byt[8] = { + ur_mask_8(hed >> 0), + ur_mask_8(hed >> 8), + ur_mask_8(hed >> 16), + ur_mask_8(hed >> 24), + ur_mask_8(tal >> 0), + ur_mask_8(tal >> 8), + ur_mask_8(tal >> 16), + ur_mask_8(tal >> 24) + }; + + while ( i < 8 ) { + ur_mug mug; + uint32_t raw; + MurmurHash3_x86_32(byt, len, seed, &raw); + mug = (raw >> 31) ^ ( ur_mask_31(raw) ); + + if ( 0 == mug ) { + seed++; i++; + } + else { + return mug; + } + } + + return (ur_mug)0xfffe; +} + +ur_mug +ur_nref_mug(ur_root_t *r, ur_nref ref) +{ + switch ( ur_nref_tag(ref) ) { + default: assert(0); + + case ur_direct: return ur_mug64(ref); + case ur_iatom: return r->atoms.mugs[ur_nref_idx(ref)]; + case ur_icell: return r->cells.mugs[ur_nref_idx(ref)]; + } +} + +ur_bool_t +ur_deep(ur_nref ref) +{ + return ur_icell == ur_nref_tag(ref); +} + +ur_nref +ur_head(ur_root_t *r, ur_nref ref) +{ + assert( ur_deep(ref) ); + return r->cells.heads[ur_nref_idx(ref)]; +} + +ur_nref +ur_tail(ur_root_t *r, ur_nref ref) +{ + assert( ur_deep(ref) ); + return r->cells.tails[ur_nref_idx(ref)]; +} + +void +ur_atoms_grow(ur_atoms_t *atoms) +{ + uint64_t prev = atoms->prev; + uint64_t size = atoms->size; + uint64_t next = prev + size; + uint8_t **bytes = atoms->bytes; + uint64_t *lens = atoms->lens; + ur_mug *mugs = atoms->mugs; + + atoms->bytes = _oom("atoms_grow", malloc(next * ( sizeof(*atoms->bytes) + + sizeof(*atoms->lens) + + sizeof(*atoms->mugs) ))); + atoms->lens = (void*)((char*)atoms->bytes + (next * sizeof(*atoms->bytes))); + atoms->mugs = (void*)((char*)atoms->lens + (next * sizeof(*atoms->lens))); + + if ( bytes ) { + memcpy(atoms->bytes, bytes, size * (sizeof(*bytes))); + memcpy(atoms->lens, lens, size * (sizeof(*lens))); + memcpy(atoms->mugs, mugs, size * (sizeof(*mugs))); + + free(bytes); + } + + atoms->prev = size; + atoms->size = next; +} + +void +ur_cells_grow(ur_cells_t *cells) +{ + uint64_t prev = cells->prev; + uint64_t size = cells->size; + uint64_t next = prev + size; + ur_nref *heads = cells->heads; + ur_nref *tails = cells->tails; + ur_mug *mugs = cells->mugs; + + cells->heads = _oom("cells_grow", malloc(next * ( sizeof(*cells->heads) + + sizeof(*cells->heads) + + sizeof(*cells->mugs) ))); + cells->tails = (void*)((char*)cells->heads + (next * sizeof(*cells->heads))); + cells->mugs = (void*)((char*)cells->tails + (next * sizeof(*cells->tails))); + + if ( heads ) { + memcpy(cells->heads, heads, size * (sizeof(*heads))); + memcpy(cells->tails, tails, size * (sizeof(*tails))); + memcpy(cells->mugs, mugs, size * (sizeof(*mugs))); + + free(heads); + } + + cells->prev = size; + cells->size = next; +} + +void +ur_bytes(ur_root_t *r, ur_nref ref, uint8_t **byt, uint64_t *len) +{ + assert( !ur_deep(ref) ); + switch ( ur_nref_tag(ref) ) { + default: assert(0); + + case ur_direct: { + *len = ur_met3_64(ref); + // XX little-endian + // + *byt = (uint8_t*)&ref; + } break; + + case ur_iatom: { + uint64_t idx = ur_nref_idx(ref); + *len = r->atoms.lens[idx]; + *byt = r->atoms.bytes[idx]; + } break; + } +} + +uint64_t +ur_met(ur_root_t *r, uint8_t bloq, ur_nref ref) +{ + uint64_t m_bit; + + // XX return bool for cells, length in out parameter + // + assert( !ur_deep(ref) ); + + if ( ur_direct == ur_nref_tag(ref) ) { + m_bit = ur_met0_64(ref); + } + else { + uint64_t idx = ur_nref_idx(ref); + uint64_t len = r->atoms.lens[idx]; + uint8_t *byt = r->atoms.bytes[idx]; + + m_bit = ur_met0_bytes_unsafe(len, byt); + } + + switch ( bloq ) { + case 0: return m_bit; + case 1: return ur_bloq_up1(m_bit); + case 2: return ur_bloq_up2(m_bit); + case 3: return ur_bloq_up3(m_bit); + + default: { + uint64_t m_byt = ur_bloq_up3(m_bit); + uint8_t off = (bloq - 3); + return (m_byt + ((1ULL << off) - 1)) >> off; + } + } +} + +static ur_nref +_coin_unsafe(ur_atoms_t *atoms, ur_mug mug, uint64_t len, uint8_t *byt) +{ + uint64_t fill = atoms->fill; + ur_tag tag = ur_iatom; + ur_nref tom = ( fill | ((uint64_t)tag << 62) ); + + // XX necessary? + // + assert( 62 >= ur_met0_64(fill) ); + + atoms->bytes[fill] = byt; + atoms->lens[fill] = len; + atoms->mugs[fill] = mug; + atoms->fill = 1 + fill; + + return tom; +} + +static ur_nref +_cons_unsafe(ur_cells_t *cells, ur_mug mug, ur_nref hed, ur_nref tal) +{ + uint64_t fill = cells->fill; + ur_tag tag = ur_icell; + ur_nref cel = ( fill | ((uint64_t)tag << 62) ); + + // XX necessary? + // + assert( 62 >= ur_met0_64(fill) ); + + cells->mugs[fill] = mug; + cells->heads[fill] = hed; + cells->tails[fill] = tal; + cells->fill = 1 + fill; + + return cel; +} + +ur_nref +ur_coin_bytes_unsafe(ur_root_t *r, uint64_t len, uint8_t *byt) +{ + ur_atoms_t *atoms = &(r->atoms); + ur_dict_t *dict = &(atoms->dict); + ur_mug mug = ur_mug_bytes(byt, len); + + while ( 1 ) { + uint64_t idx = ( mug % dict->size ); + ur_pail_t *bucket = &(dict->buckets[idx]); + uint8_t i, b_fill = dict->fills[idx]; + ur_nref tom; + + for ( i = 0; i < b_fill; i++ ) { + uint8_t *t_byt; + uint64_t t_len; + tom = bucket->refs[i]; + + ur_bytes(r, tom, &t_byt, &t_len); + + if ( (t_len == len) + && (0 == memcmp(t_byt, byt, len)) ) + { + return tom; + } + } + + if ( ur_pail_max == b_fill ) { + ur_dict_grow(r, dict, dict->prev, dict->size); + continue; + } + + if ( atoms->fill == atoms->size ) { + ur_atoms_grow(atoms); + } + + tom = _coin_unsafe(atoms, mug, len, byt); + + bucket->refs[b_fill] = tom; + dict->fills[idx] = 1 + b_fill; + + return tom; + } +} + +ur_nref +ur_coin_bytes(ur_root_t *r, uint64_t len, uint8_t *byt) +{ + // strip trailing zeroes + // + while ( len && !byt[len - 1] ) { + len--; + } + + // produce a direct atom if possible + // + if ( 62 >= ur_met0_bytes_unsafe(len, byt) ) { + uint64_t i, direct = 0; + + for ( i = 0; i < len; i++ ) { + direct |= byt[i] << (8 * i); + } + + return (ur_nref)direct; + } + else { + uint8_t *copy = _oom("coin_bytes", malloc(len)); + memcpy(copy, byt, len); + + return ur_coin_bytes_unsafe(r, len, copy); + } +} + +ur_nref +ur_coin64(ur_root_t *r, uint64_t n) +{ + if ( ur_direct == ur_nref_tag(n) ) { + return n; + } + else { + uint8_t *byt; + assert( 8 == ur_met3_64(n) ); + + byt = _oom("coin64", malloc(8)); + + byt[0] = ur_mask_8(n); + byt[1] = ur_mask_8(n >> 8); + byt[2] = ur_mask_8(n >> 16); + byt[3] = ur_mask_8(n >> 24); + byt[4] = ur_mask_8(n >> 32); + byt[5] = ur_mask_8(n >> 40); + byt[6] = ur_mask_8(n >> 48); + byt[7] = ur_mask_8(n >> 56); + + return ur_coin_bytes_unsafe(r, 8, byt); + } +} + +ur_nref +ur_cons(ur_root_t *r, ur_nref hed, ur_nref tal) +{ + ur_cells_t *cells = &(r->cells); + ur_dict_t *dict = &(cells->dict); + ur_mug mug = ur_mug_both(ur_nref_mug(r, hed), + ur_nref_mug(r, tal)); + + while ( 1 ) { + uint64_t idx = ( mug % dict->size ); + ur_pail_t *bucket = &(dict->buckets[idx]); + uint8_t i, b_fill = dict->fills[idx]; + ur_nref cel; + + for ( i = 0; i < b_fill; i++ ) { + cel = bucket->refs[i]; + + if ( (hed == ur_head(r, cel)) + && (tal == ur_tail(r, cel)) ) + { + return cel; + } + } + + if ( ur_pail_max == b_fill ) { + ur_dict_grow(r, dict, dict->prev, dict->size); + continue; + } + + if ( cells->fill == cells->size ) { + ur_cells_grow(cells); + } + + cel = _cons_unsafe(cells, mug, hed, tal); + + bucket->refs[b_fill] = cel; + dict->fills[idx] = 1 + b_fill; + + return cel; + } +} + +static void +_print_memory(FILE *f, const char *c, uint64_t bytes) +{ + if ( !bytes ) { + fprintf(f, "%s: B/0\r\n", c); + } + else { + uint32_t g = (bytes / 1000000000); + uint32_t m = (bytes % 1000000000) / 1000000; + uint32_t k = (bytes % 1000000) / 1000; + uint32_t b = (bytes % 1000); + + if ( g ) { + fprintf(f, "%s: GB/%d.%03d.%03d.%03d\r\n", c, g, m, k, b); + } + else if ( m ) { + fprintf(f, "%s: MB/%d.%03d.%03d\r\n", c, m, k, b); + } + else if ( k ) { + fprintf(f, "%s: KB/%d.%03d\r\n", c, k, b); + } + else if ( b ) { + fprintf(f, "%s: B/%d\r\n", c, b); + } + } +} + +static uint64_t +_dict_info(FILE *f, ur_dict_t *dict) +{ + uint64_t data = dict->size * sizeof(*dict->buckets); + _print_memory(f, " dict", data); + return data; +} + +static uint64_t +_atoms_info(FILE *f, ur_atoms_t *atoms) +{ + uint64_t total = 0; + uint64_t size = atoms->size; + uint64_t fill = atoms->fill; + uint64_t refs = size * ( sizeof(*atoms->bytes) + + sizeof(*atoms->lens) + + sizeof(*atoms->mugs) ); + uint64_t i, data = 0; + + fprintf(f, " atoms (%" PRIu64 "):\r\n", fill); + + _print_memory(f, " refs", refs); + total += refs; + + for ( i = 0; i < fill; i++ ) { + data += atoms->lens[i]; + } + _print_memory(f, " data", data); + total += data; + + total += _dict_info(f, &(atoms->dict)); + _print_memory(f, " total", total); + return total; +} + +static uint64_t +_cells_info(FILE *f, ur_cells_t *cells) +{ + uint64_t total = 0; + uint64_t size = cells->size; + uint64_t fill = cells->fill; + uint64_t refs = size * ( sizeof(*cells->heads) + + sizeof(*cells->heads) + + sizeof(*cells->mugs) ); + + fprintf(f, " cells (%" PRIu64 "):\r\n", fill); + + _print_memory(f, " refs", refs); + total += refs; + + total += _dict_info(f, &(cells->dict)); + _print_memory(f, " total", total); + return total; +} + +void +ur_root_info(FILE *f, ur_root_t *r) +{ + uint64_t total = 0; + + fprintf(stderr, "hash-cons arena:\r\n"); + + { + uint64_t root = sizeof(*r); + _print_memory(f, " root", root); + total += root; + } + + total += _atoms_info(f, &(r->atoms)); + total += _cells_info(f, &(r->cells)); + + _print_memory(f, "total", total); +} + +static void +_atoms_free(ur_atoms_t *atoms) +{ + uint8_t **bytes = atoms->bytes; + uint64_t i, fill = atoms->fill; + + for ( i = 0; i < fill; i++ ) { + free(bytes[i]); + } + + ur_dict_free(&(atoms->dict)); + free(bytes); +} + +static void +_cells_free(ur_cells_t *cells) +{ + ur_dict_free(&(cells->dict)); + free(cells->heads); +} + +void +ur_root_free(ur_root_t *r) +{ + _atoms_free(&(r->atoms)); + _cells_free(&(r->cells)); + free(r); +} + +ur_root_t* +ur_root_init(void) +{ + ur_root_t *r = _oom("root_init", calloc(1, sizeof(*r))); + + { + ur_dict_t *dict; + + // allocate atom storage + // + r->atoms.prev = ur_fib11; + r->atoms.size = ur_fib12; + ur_atoms_grow(&(r->atoms)); + + // allocate atom hashtable + // + dict = &(r->atoms.dict); + ur_dict_grow(r, dict, ur_fib11, ur_fib12); + + // allocate cell storage + // + r->cells.prev = ur_fib11; + r->cells.size = ur_fib12; + ur_cells_grow(&(r->cells)); + + // allocate cell hashtable + // + dict = &(r->cells.dict); + ur_dict_grow(r, dict, ur_fib11, ur_fib12); + } + + return r; +} + +void +ur_nvec_free(ur_nvec_t *v) +{ + free(v->refs); +} + +void +ur_nvec_init(ur_nvec_t *v, uint64_t size) +{ + v->fill = 0; + v->refs = _oom("nvec_init", calloc(size, sizeof(ur_nref))); +} + +/* +** define opaque struct ur_walk_fore_s (ie, ur_walk_fore_t) +*/ +struct ur_walk_fore_s { + ur_root_t *r; + uint32_t prev; + uint32_t size; + ur_nref *top; +}; + +ur_walk_fore_t* +ur_walk_fore_init_with(ur_root_t *r, + uint32_t s_prev, + uint32_t s_size) +{ + ur_walk_fore_t *w = _oom("walk_fore", malloc(sizeof(*w))); + w->top = _oom("walk_fore", malloc(s_size * sizeof(*w->top))); + w->prev = s_prev; + w->size = s_size; + w->r = r; + + return w; +} + +ur_walk_fore_t* +ur_walk_fore_init(ur_root_t *r) +{ + return ur_walk_fore_init_with(r, ur_fib10, ur_fib11); +} + +void +ur_walk_fore_with(ur_walk_fore_t *w, + ur_nref ref, + void *v, + void (*atom)(ur_root_t*, ur_nref, void*), + ur_bool_t (*cell)(ur_root_t*, ur_nref, void*)) +{ + ur_root_t *r = w->r; + uint32_t fill = 1; + + *w->top = ref; + + do { + // visit atom, pop stack + // + if ( !ur_deep(ref) ) { + atom(r, ref, v); + fill--; + } + // visit cell, pop stack if false + // + else if ( !cell(r, ref, v) ) { + fill--; + } + // push the tail, continue into the head + // + else { + w->top[fill++] = ur_tail(r, ref); + + // reallocate "stack" if full + // + if ( w->size == fill ) { + uint32_t next = w->prev + w->size; + w->top = _oom("walk_fore", realloc(w->top, next * sizeof(*w->top))); + w->prev = w->size; + w->size = next; + } + + w->top[fill] = ur_head(r, ref); + } + + ref = w->top[fill]; + } while ( fill ); +} + +void +ur_walk_fore_done(ur_walk_fore_t *w) +{ + free(w->top); + free(w); +} + +void +ur_walk_fore(ur_root_t *r, + ur_nref ref, + void *v, + void (*atom)(ur_root_t*, ur_nref, void*), + ur_bool_t (*cell)(ur_root_t*, ur_nref, void*)) +{ + ur_walk_fore_t *w = ur_walk_fore_init(r); + ur_walk_fore_with(w, ref, v, atom, cell); + ur_walk_fore_done(w); +} diff --git a/vere/pkg/ur/hashcons.h b/vere/pkg/ur/hashcons.h new file mode 100644 index 0000000..8e0afea --- /dev/null +++ b/vere/pkg/ur/hashcons.h @@ -0,0 +1,259 @@ +/// @file + +#ifndef UR_HASHCONS_H +#define UR_HASHCONS_H + +#include +#include +#include +#include + +#include "defs.h" + +/* +** 64-bit noun references, with the top 2 bits reserved for type tags. +*/ +typedef uint64_t ur_nref; + +typedef enum { + ur_direct = 0, + ur_iatom = 1, + ur_icell = 2, +} ur_tag; + +#define ur_nref_tag(ref) ( ref >> 62 ) +#define ur_nref_idx(ref) ur_mask_62(ref) + +/* +** 31-bit, non-zero, murmur3-based noun hash. +*/ +typedef uint32_t ur_mug; + +/* +** associative structures (dictionaries) of noun references, +** distributed by mug across fixed-size buckets (pails), +** reallocated with fibonacci growth once a bucket is full. +** +** - ur_dict_t: set of noun references +** - ur_dict32_t: map from noun reference to uint32 +** - ur_dict32_t: map from noun reference to uint64 +*/ + +#define ur_pail_max 10 + +typedef struct ur_pail32_s { + ur_nref refs[ur_pail_max]; + uint32_t vals[ur_pail_max]; +} ur_pail32_t; + +typedef struct ur_dict32_s { + uint64_t prev; + uint64_t size; + uint8_t *fills; + ur_pail32_t *buckets; +} ur_dict32_t; + +typedef struct ur_pail64_s { + ur_nref refs[ur_pail_max]; + uint64_t vals[ur_pail_max]; +} ur_pail64_t; + +typedef struct ur_dict64_s { + uint64_t prev; + uint64_t size; + uint8_t *fills; + ur_pail64_t *buckets; +} ur_dict64_t; + +typedef struct ur_pail_s { + ur_nref refs[ur_pail_max]; +} ur_pail_t; + +typedef struct ur_dict_s { + uint64_t prev; + uint64_t size; + uint8_t *fills; + ur_pail_t *buckets; +} ur_dict_t; + +/* +** cells are hash-consed, atoms are deduplicated (byte-array comparison), +** mug hashes are stored, and noun references are unique within a root. +*/ +typedef struct ur_cells_s { + ur_dict_t dict; + uint64_t prev; + uint64_t size; + uint64_t fill; + ur_mug *mugs; + ur_nref *heads; + ur_nref *tails; +} ur_cells_t; + +typedef struct ur_atoms_s { + ur_dict_t dict; + uint64_t prev; + uint64_t size; + uint64_t fill; + ur_mug *mugs; + uint8_t **bytes; + uint64_t *lens; +} ur_atoms_t; + +typedef struct ur_root_s { + ur_cells_t cells; + ur_atoms_t atoms; +} ur_root_t; + +/* +** a vector of noun references. +*/ +typedef struct ur_nvec_s { + uint64_t fill; + ur_nref* refs; +} ur_nvec_t; + +/* +** opaque handle for repeated traversal. +*/ +typedef struct ur_walk_fore_s ur_walk_fore_t; + +/* +** type-specific dictionary operations. +** +** NB: [r] is only used to retrieve the stored mug of cells and +** indirect atoms. If all references are direct atoms (62-bits or less), +** [r] can be null. This option is used extensively in cue (de-serialization) +** implementations, where the dictionary keys are bit-cursors. +*/ +void +ur_dict32_grow(ur_root_t *r, ur_dict32_t *dict, uint64_t prev, uint64_t size); + +ur_bool_t +ur_dict32_get(ur_root_t *r, ur_dict32_t *dict, ur_nref ref, uint32_t *out); + +void +ur_dict32_put(ur_root_t *r, ur_dict32_t *dict, ur_nref ref, uint32_t val); + +void +ur_dict32_wipe(ur_dict32_t *dict); + +void +ur_dict64_grow(ur_root_t *r, ur_dict64_t *dict, uint64_t prev, uint64_t size); + +ur_bool_t +ur_dict64_get(ur_root_t *r, ur_dict64_t *dict, ur_nref ref, uint64_t *out); + +void +ur_dict64_put(ur_root_t *r, ur_dict64_t *dict, ur_nref ref, uint64_t val); + +void +ur_dict64_wipe(ur_dict64_t *dict); + +void +ur_dict_grow(ur_root_t *r, ur_dict_t *dict, uint64_t prev, uint64_t size); + +ur_bool_t +ur_dict_get(ur_root_t *r, ur_dict_t *dict, ur_nref ref); + +void +ur_dict_put(ur_root_t *r, ur_dict_t *dict, ur_nref ref); + +void +ur_dict_wipe(ur_dict_t *dict); + +/* +** free the buckets of any dictionary (cast to ur_dict_t*). +*/ +void +ur_dict_free(ur_dict_t *dict); + +/* +** measure the bloq (binary-exponent) length of an atom in [r] +*/ +uint64_t +ur_met(ur_root_t *r, uint8_t bloq, ur_nref ref); + +/* +** find or allocate an atom in [r] +** +** unsafe variant is unsafe wrt allocation (byte arrays must be +** allocated with system malloc) and trailing null bytes (not allowed). +*/ +ur_nref +ur_coin_bytes_unsafe(ur_root_t *r, uint64_t len, uint8_t *byt); + +ur_nref +ur_coin_bytes(ur_root_t *r, uint64_t len, uint8_t *byt); + +ur_nref +ur_coin64(ur_root_t *r, uint64_t n); + +/* +** find or construct a cell in [r] +*/ +ur_nref +ur_cons(ur_root_t *r, ur_nref hed, ur_nref tal); + +/* +** calculate the mug of [ref], or produce the stored value in [r]. +*/ +ur_mug +ur_nref_mug(ur_root_t *r, ur_nref ref); + +/* +** initialize a noun arena (root). +*/ +ur_root_t* +ur_root_init(void); + +/* +** print root details to [f] +*/ +void +ur_root_info(FILE *f, ur_root_t *r); + +/* +** dispose all allocations in [r] +*/ +void +ur_root_free(ur_root_t *r); + +/* +** initialize or dispose a vector of noun references +*/ +void +ur_nvec_init(ur_nvec_t *v, uint64_t size); + +void +ur_nvec_free(ur_nvec_t *v); + +/* +** depth-first, pre-order noun traversal, cells can short-circuit. +*/ +void +ur_walk_fore(ur_root_t *r, + ur_nref ref, + void *v, + void (*atom)(ur_root_t*, ur_nref, void*), + ur_bool_t (*cell)(ur_root_t*, ur_nref, void*)); + +ur_walk_fore_t* +ur_walk_fore_init_with(ur_root_t *r, + uint32_t s_prev, + uint32_t s_size); + +ur_walk_fore_t* +ur_walk_fore_init(ur_root_t *r); + +void +ur_walk_fore_with(ur_walk_fore_t *w, + ur_nref ref, + void *v, + void (*atom)(ur_root_t*, ur_nref, void*), + ur_bool_t (*cell)(ur_root_t*, ur_nref, void*)); + +void +ur_walk_fore_done(ur_walk_fore_t *w); + +#endif /* ifndef UR_HASHCONS_H */ diff --git a/vere/pkg/ur/serial.c b/vere/pkg/ur/serial.c new file mode 100644 index 0000000..72fb448 --- /dev/null +++ b/vere/pkg/ur/serial.c @@ -0,0 +1,588 @@ +/// @file + +#include "serial.h" + +#include +#include + +static void* +_oom(const char* cap, void* v) +{ + if ( !v ) { + fprintf(stderr, + "ur: hashcons: %s: allocation failed, out of memory\r\n", cap); + abort(); + } + + return v; +} + +static inline void +_bsw_atom(ur_root_t *r, ur_nref ref, ur_bsw_t *bsw, uint64_t len) +{ + switch ( ur_nref_tag(ref) ) { + default: assert(0); + + case ur_direct: return ur_bsw_atom64(bsw, len, ref); + + case ur_iatom: { + uint8_t *byt = r->atoms.bytes[ur_nref_idx(ref)]; + return ur_bsw_atom_bytes(bsw, len, byt); + } + } +} + +/* +** define opaque struct ur_jam_s (ie, ur_jam_t) +*/ +struct ur_jam_s { + ur_root_t *r; + ur_walk_fore_t *w; + ur_dict64_t dict; + ur_bsw_t bsw; +}; + +static void +_jam_atom(ur_root_t *r, ur_nref ref, void *ptr) +{ + ur_jam_t *j = ptr; + ur_dict64_t *dict = &j->dict; + ur_bsw_t *bsw = &j->bsw; + uint64_t bak, len = ur_met(r, 0, ref); + + if ( !ur_dict64_get(r, dict, ref, &bak) ) { + ur_dict64_put(r, dict, ref, bsw->bits); + + _bsw_atom(r, ref, bsw, len); + } + else { + uint64_t len_bak = ur_met0_64(bak); + + if ( len <= len_bak ) { + _bsw_atom(r, ref, bsw, len); + } + else { + ur_bsw_back64(bsw, len_bak, bak); + } + } +} + +static ur_bool_t +_jam_cell(ur_root_t *r, ur_nref ref, void *ptr) +{ + ur_jam_t *j = ptr; + ur_dict64_t *dict = &j->dict; + ur_bsw_t *bsw = &j->bsw; + uint64_t bak; + + if ( !ur_dict64_get(r, dict, ref, &bak) ) { + ur_dict64_put(r, dict, ref, bsw->bits); + + ur_bsw_cell(bsw); + return 1; + } + else { + ur_bsw_back64(bsw, ur_met0_64(bak), bak); + return 0; + } +} + +static uint64_t +_jam(ur_jam_t *j, + ur_nref ref, + uint64_t *len, + uint8_t **byt) +{ + ur_bsw_init(&j->bsw, ur_fib11, ur_fib12); + ur_walk_fore_with(j->w, ref, j, _jam_atom, _jam_cell); + return ur_bsw_done(&j->bsw, len, byt); +} + +ur_jam_t* +ur_jam_init_with(ur_root_t *r, + uint64_t d_prev, + uint64_t d_size, + uint32_t s_prev, + uint32_t s_size) +{ + ur_jam_t *j = _oom("jam_init", calloc(sizeof(*j), 1)); + j->w = ur_walk_fore_init_with(r, s_prev, s_size); + j->r = r; + + ur_dict64_grow(r, &j->dict, d_prev, d_size); + + return j; +} + +ur_jam_t* +ur_jam_init(ur_root_t *r) +{ + return ur_jam_init_with(r, ur_fib11, ur_fib12, // dict sizes + ur_fib10, ur_fib11); // stack sizes +} + +uint64_t +ur_jam_with(ur_jam_t *j, + ur_nref ref, + uint64_t *len, + uint8_t **byt) +{ + uint64_t bits = _jam(j, ref, len, byt); + ur_dict64_wipe(&j->dict); + return bits; +} + +void +ur_jam_done(ur_jam_t *j) +{ + ur_dict_free((ur_dict_t*)&j->dict); + ur_walk_fore_done(j->w); + free(j); +} + +uint64_t +ur_jam(ur_root_t *r, + ur_nref ref, + uint64_t *len, + uint8_t **byt) +{ + ur_jam_t *j = ur_jam_init(r); + uint64_t bits = _jam(j, ref, len, byt); + ur_jam_done(j); + return bits; +} + +/* +** stack frame for recording head vs tail iteration +** +** $? [CUE_HEAD bits=@] +** [hed=* bits=@] +*/ + +#define CUE_HEAD 0xffffffffffffffffULL + +typedef struct _cue_frame_s { + uint64_t ref; + uint64_t bits; +} _cue_frame_t; + +typedef struct _cue_stack_s { + uint32_t prev; + uint32_t size; + uint32_t fill; + _cue_frame_t* f; +} _cue_stack_t; + +static inline ur_cue_res_e +_cue_next(ur_root_t *r, + _cue_stack_t *s, + ur_bsr_t *bsr, + ur_dict64_t *dict, + ur_nref *out) +{ + while ( 1 ) { + uint64_t len, bits = bsr->bits; + ur_cue_tag_e tag; + ur_cue_res_e res; + + if ( ur_cue_good != (res = ur_bsr_tag(bsr, &tag)) ) { + return res; + } + + switch ( tag ) { + default: assert(0); + + case ur_jam_cell: { + // reallocate the stack if full + // + if ( s->fill == s->size ) { + uint32_t next = s->prev + s->size; + s->f = _oom("cue_next stack", realloc(s->f, next * sizeof(*s->f))); + s->prev = s->size; + s->size = next; + } + + // save a head-frame and read the head from the stream + // + { + _cue_frame_t* f = &(s->f[s->fill++]); + f->ref = CUE_HEAD; + f->bits = bits; + } + continue; + } + + case ur_jam_back: { + if ( ur_cue_good != (res = ur_bsr_rub_len(bsr, &len)) ) { + return res; + } + else if ( 62 < len ) { + return ur_cue_meme; + } + else { + uint64_t val, bak = ur_bsr64_any(bsr, len); + + if ( !ur_dict64_get(r, dict, bak, &val) ) { + return ur_cue_back; + } + + *out = (ur_nref)val; + return ur_cue_good; + } + } + + case ur_jam_atom: { + if ( ur_cue_good != (res = ur_bsr_rub_len(bsr, &len)) ) { + return res; + } + else if ( 62 >= len ) { + *out = (ur_nref)ur_bsr64_any(bsr, len); + } + else { + uint64_t len_byt = (len >> 3) + !!ur_mask_3(len); + uint8_t *byt = _oom("cue_next bytes", calloc(len_byt, 1)); + + ur_bsr_bytes_any(bsr, len, byt); + + // strip trailing zeroes + // + while ( len_byt && !byt[len_byt - 1] ) { + len_byt--; + } + + *out = ur_coin_bytes_unsafe(r, len_byt, byt); + } + + ur_dict64_put(r, dict, bits, (uint64_t)*out); + return ur_cue_good; + } + } + } +} + +/* +** define opaque struct ur_cue_s (ie, ur_cue_t) +*/ +struct ur_cue_s { + ur_root_t *r; + _cue_stack_t s; + ur_dict64_t dict; +}; + +static ur_cue_res_e +_cue(ur_cue_t *c, + uint64_t len, + const uint8_t *byt, + ur_nref *out) +{ + ur_bsr_t bsr = {0}; + ur_root_t *r = c->r; + _cue_stack_t *s = &c->s; + ur_dict64_t *dict = &c->dict; + ur_cue_res_e res; + ur_nref ref; + + // init bitstream-reader + // + if ( ur_cue_good != (res = ur_bsr_init(&bsr, len, byt)) ) { + return res; + } + // bit-cursor (and backreferences) must fit in 62-bit direct atoms + // + else if ( 0x7ffffffffffffffULL < len ) { + return ur_cue_meme; + } + + // advance into stream + // + res = _cue_next(r, s, &bsr, dict, &ref); + + // process result + // + while ( s->fill && (ur_cue_good == res) ) { + // peek at the top of the stack + // + _cue_frame_t *f = &(s->f[s->fill - 1]); + + // f is a head-frame; stash result and read the tail from the stream + // + if ( CUE_HEAD == f->ref ) { + f->ref = ref; + res = _cue_next(r, s, &bsr, dict, &ref); + } + // f is a tail-frame; pop the stack and continue + // + else { + ref = ur_cons(r, f->ref, ref); + ur_dict64_put(r, dict, f->bits, (uint64_t)ref); + s->fill--; + } + } + + if ( ur_cue_good == res ) { + *out = ref; + } + return res; +} + +ur_cue_t* +ur_cue_init_with(ur_root_t *r, + uint64_t d_prev, + uint64_t d_size, + uint32_t s_prev, + uint32_t s_size) +{ + ur_cue_t* c = _oom("cue_init", calloc(sizeof(*c), 1)); + c->r = r; + + ur_dict64_grow(r, &c->dict, d_prev, d_size); + + c->s.prev = s_prev; + c->s.size = s_size; + c->s.f = _oom("cue_test_init", malloc(s_size * sizeof(*c->s.f))); + + return c; +} + +ur_cue_t* +ur_cue_init(ur_root_t *r) +{ + return ur_cue_init_with(r, ur_fib11, ur_fib12, // dict sizes + ur_fib10, ur_fib11); // stack sizes +} + +ur_cue_res_e +ur_cue_with(ur_cue_t *c, + uint64_t len, + const uint8_t *byt, + ur_nref *out) +{ + ur_cue_res_e res = _cue(c, len, byt, out); + + // XX check size, shrink if above threshold + // + ur_dict64_wipe(&c->dict); + c->s.fill = 0; + + return res; +} + +void +ur_cue_done(ur_cue_t *c) +{ + + ur_dict_free((ur_dict_t*)&c->dict); + free(c->s.f); + free(c); +} + +ur_cue_res_e +ur_cue(ur_root_t *r, + uint64_t len, + const uint8_t *byt, + ur_nref *out) +{ + ur_cue_t *c = ur_cue_init(r); + ur_cue_res_e res = _cue(c, len, byt, out); + + ur_cue_done(c); + return res; +} + +/* +** stack frame for recording head vs tail iteration +** +** [hed=? bits=@] +** +*/ + +typedef struct _cue_test_frame_s { + ur_bool_t tal; + uint64_t bits; +} _cue_test_frame_t; + +typedef struct _cue_test_stack_s { + uint32_t prev; + uint32_t size; + uint32_t fill; + _cue_test_frame_t* f; +} _cue_test_stack_t; + +static inline ur_cue_res_e +_cue_test_next(_cue_test_stack_t *s, + ur_bsr_t *bsr, + ur_dict_t *dict) +{ + while ( 1 ) { + uint64_t len, bits = bsr->bits; + ur_cue_tag_e tag; + ur_cue_res_e res; + + if ( ur_cue_good != (res = ur_bsr_tag(bsr, &tag)) ) { + return res; + } + + switch ( tag ) { + default: assert(0); + + case ur_jam_cell: { + // reallocate the stack if full + // + if ( s->fill == s->size ) { + uint32_t next = s->prev + s->size; + s->f = _oom("cue_test", realloc(s->f, next * sizeof(*s->f))); + s->prev = s->size; + s->size = next; + } + + // save a head-frame and read the head from the stream + // + { + _cue_test_frame_t* f = &(s->f[s->fill++]); + f->tal = 0; + f->bits = bits; + } + continue; + } + + case ur_jam_back: { + if ( ur_cue_good != (res = ur_bsr_rub_len(bsr, &len)) ) { + return res; + } + else if ( 62 < len ) { + return ur_cue_meme; + } + else { + uint64_t bak = ur_bsr64_any(bsr, len); + return ur_dict_get((ur_root_t*)0, dict, bak) + ? ur_cue_good + : ur_cue_back; + } + } + + case ur_jam_atom: { + if ( ur_cue_good != (res = ur_bsr_rub_len(bsr, &len)) ) { + return res; + } + + ur_bsr_skip_any(bsr, len); + ur_dict_put((ur_root_t*)0, dict, bits); + return ur_cue_good; + } + } + } +} + +/* +** define opaque struct ur_cue_test_s (ie, ur_cue_test_t) +*/ +struct ur_cue_test_s { + _cue_test_stack_t s; + ur_dict_t dict; +}; + +static ur_cue_res_e +_cue_test(ur_cue_test_t *t, + uint64_t len, + const uint8_t *byt) +{ + ur_bsr_t bsr = {0}; + _cue_test_stack_t *s = &t->s; + ur_dict_t *dict = &t->dict; + ur_cue_res_e res; + + // init bitstream-reader + // + if ( ur_cue_good != (res = ur_bsr_init(&bsr, len, byt)) ) { + return res; + } + // bit-cursor (and backreferences) must fit in 62-bit direct atoms + // + else if ( 0x7ffffffffffffffULL < len ) { + return ur_cue_meme; + } + + // advance into stream + // + res = _cue_test_next(s, &bsr, dict); + + // process result + // + while ( s->fill && (ur_cue_good == res) ) { + // peek at the top of the stack + // + _cue_test_frame_t *f = &(s->f[s->fill - 1]); + + // f is a head-frame; stash result and read the tail from the stream + // + if ( !f->tal ) { + f->tal = 1; + res = _cue_test_next(s, &bsr, dict); + } + // f is a tail-frame; pop the stack and continue + // + else { + ur_dict_put((ur_root_t*)0, dict, f->bits); + s->fill--; + } + } + + return res; +} + +ur_cue_test_t* +ur_cue_test_init_with(uint64_t d_prev, + uint64_t d_size, + uint32_t s_prev, + uint32_t s_size) +{ + ur_cue_test_t* t = _oom("cue_test_init", calloc(sizeof(*t), 1)); + + ur_dict_grow((ur_root_t*)0, &t->dict, d_prev, d_size); + + t->s.prev = s_prev; + t->s.size = s_size; + t->s.f = _oom("cue_test_init", malloc(s_size * sizeof(*t->s.f))); + + return t; +} + +ur_cue_test_t* +ur_cue_test_init(void) +{ + return ur_cue_test_init_with(ur_fib11, ur_fib12, // dict sizes + ur_fib10, ur_fib11); // stack sizes +} + +ur_bool_t +ur_cue_test_with(ur_cue_test_t *t, + uint64_t len, + const uint8_t *byt) +{ + ur_bool_t ret = ur_cue_good == _cue_test(t, len, byt); + + // XX check size, shrink if above threshold + // + ur_dict_wipe(&t->dict); + t->s.fill = 0; + + return ret; +} + +void +ur_cue_test_done(ur_cue_test_t *t) +{ + ur_dict_free(&t->dict); + free(t->s.f); + free(t); +} + +ur_bool_t +ur_cue_test(uint64_t len, const uint8_t *byt) +{ + ur_cue_test_t *t = ur_cue_test_init(); + ur_bool_t ret = ur_cue_good == _cue_test(t, len, byt); + + ur_cue_test_done(t); + return ret; +} diff --git a/vere/pkg/ur/serial.h b/vere/pkg/ur/serial.h new file mode 100644 index 0000000..3044c4b --- /dev/null +++ b/vere/pkg/ur/serial.h @@ -0,0 +1,114 @@ +/// @file + +#ifndef UR_SERIAL_H +#define UR_SERIAL_H + +#include + +#include "bitstream.h" +#include "defs.h" +#include "hashcons.h" + +/* +** bit-wise serialization of a noun into a byte-buffer. +** supports up to 64-bits of bit-addressed output (nearly 2 EiB). +** (as this is an impractical volume data, cursor overflow is not checked.) +** +** jam_with* api factors out stack/dict (re)allocation, +** for better performance inside hot loops. +** +*/ + +typedef struct ur_jam_s ur_jam_t; + +uint64_t +ur_jam_unsafe(ur_root_t *r, + ur_nref ref, + ur_dict64_t *dict, + uint64_t *len, + uint8_t **byt); + +uint64_t +ur_jam(ur_root_t *r, + ur_nref ref, + uint64_t *len, + uint8_t **byt); + +ur_jam_t* +ur_jam_init_with(ur_root_t *r, + uint64_t d_prev, + uint64_t d_size, + uint32_t s_prev, + uint32_t s_size); + +ur_jam_t* +ur_jam_init(ur_root_t *r); + +uint64_t +ur_jam_with(ur_jam_t *j, + ur_nref ref, + uint64_t *len, + uint8_t **byt); +void +ur_jam_done(ur_jam_t *j); + +/* +** bitwise deserialization of a byte-buffer into a noun. +** supports up to 62-bits of bit-addressed input (511 PiB). +** returns [ur_cue_good] on success. +** +** cue_with factors out stack/dict (re)allocation, +** for better performance of hot loops. +** +** cue_test does not allocate nouns, but merely parses the input; +** cue_test_with* api factors out stack/dict (re)allocation, +** for better performance of repeated tests. +** +*/ + +typedef struct ur_cue_test_s ur_cue_test_t; +typedef struct ur_cue_s ur_cue_t; + +ur_cue_res_e +ur_cue(ur_root_t *r, uint64_t len, const uint8_t *byt, ur_nref *out); + +ur_cue_t* +ur_cue_init_with(ur_root_t *r, + uint64_t d_prev, + uint64_t d_size, + uint32_t s_prev, + uint32_t s_size); + +ur_cue_t* +ur_cue_init(ur_root_t *r); + +ur_cue_res_e +ur_cue_with(ur_cue_t *c, + uint64_t len, + const uint8_t *byt, + ur_nref *out); + +void +ur_cue_done(ur_cue_t *c); + +ur_bool_t +ur_cue_test(uint64_t len, const uint8_t *byt); + +ur_cue_test_t* +ur_cue_test_init_with(uint64_t d_prev, + uint64_t d_size, + uint32_t s_prev, + uint32_t s_size); + +ur_cue_test_t* +ur_cue_test_init(void); + +ur_bool_t +ur_cue_test_with(ur_cue_test_t *t, + uint64_t len, + const uint8_t *byt); + +void +ur_cue_test_done(ur_cue_test_t *t); + +#endif /* ifndef UR_SERIAL_H */ diff --git a/vere/pkg/ur/tests.c b/vere/pkg/ur/tests.c new file mode 100644 index 0000000..e0516b6 --- /dev/null +++ b/vere/pkg/ur/tests.c @@ -0,0 +1,1862 @@ +/// @file + +#include "ur.h" + +#include +#include +#include +#include +#include +#include + +/* +** initialize helper for bitstream-writer tests. +*/ +static void +_bsw_reinit(ur_bsw_t *bsw, uint64_t prev, uint64_t size) +{ + bsw->prev = prev; + bsw->size = size; + bsw->bits = 0; + bsw->fill = 0; + bsw->off = 0; + + free(bsw->bytes); + bsw->bytes = calloc(size, 1); +} + +/* +** check bitstream-writer test invariants. +*/ +static int +_bsw_bit_check(const char* cap, ur_bsw_t *bsw, uint8_t byt, uint8_t off) +{ + int ret = 1; + + if ( !ur_bsw_sane(bsw) ) { + fprintf(stderr, "%s: insane off=%u fill=%" PRIu64 " bits=%" PRIu64 "\r\n", + cap, bsw->off, bsw->fill, bsw->bits); + ret = 0; + } + + if ( byt != bsw->bytes[0] ) { + fprintf(stderr, "%s: bytes fail (%u, %u)\r\n", cap, byt, bsw->bytes[0]); + ret = 0; + } + + if ( off != bsw->off ) { + fprintf(stderr, "%s: offset fail (%u, %u)\r\n", cap, off, bsw->off); + ret = 0; + } + + return ret; +} + +/* +** test 8 sequential writes of a set bit. +*/ +static int +_test_bsw_bit_ones(void) +{ + int ret = 1; + ur_bsw_t bsw = {0}; + _bsw_reinit(&bsw, 1, 1); + + ret &= _bsw_bit_check("bsw ones init", &bsw, 0x0, 0); + + ur_bsw_bit(&bsw, 1); + ret &= _bsw_bit_check("bsw ones a", &bsw, 0x1, 1); + + ur_bsw_bit(&bsw, 1); + ret &= _bsw_bit_check("bsw ones b", &bsw, 0x3, 2); + + ur_bsw_bit(&bsw, 1); + ret &= _bsw_bit_check("bsw ones c", &bsw, 0x7, 3); + + ur_bsw_bit(&bsw, 1); + ret &= _bsw_bit_check("bsw ones d", &bsw, 0xf, 4); + + ur_bsw_bit(&bsw, 1); + ret &= _bsw_bit_check("bsw ones e", &bsw, 0x1f, 5); + + ur_bsw_bit(&bsw, 1); + ret &= _bsw_bit_check("bsw ones f", &bsw, 0x3f, 6); + + ur_bsw_bit(&bsw, 1); + ret &= _bsw_bit_check("bsw ones g", &bsw, 0x7f, 7); + + ur_bsw_bit(&bsw, 1); + ret &= _bsw_bit_check("bsw ones h", &bsw, 0xff, 0); + + if ( bsw.size != 2 ) { + fprintf(stderr, "bsw ones grow: fail\r\n"); + ret = 0; + } + + free(bsw.bytes); + + return ret; +} + +/* +** test 8 sequential writes of 1 null bit. +*/ +static int +_test_bsw_bit_zeros(void) +{ + int ret = 1; + ur_bsw_t bsw = {0}; + _bsw_reinit(&bsw, 1, 1); + + ret &= _bsw_bit_check("bsw zeros init", &bsw, 0x0, 0); + + ur_bsw_bit(&bsw, 0); + ret &= _bsw_bit_check("bsw zeros a", &bsw, 0x0, 1); + + ur_bsw_bit(&bsw, 0); + ret &= _bsw_bit_check("bsw zeros b", &bsw, 0x0, 2); + + ur_bsw_bit(&bsw, 0); + ret &= _bsw_bit_check("bsw zeros c", &bsw, 0x0, 3); + + ur_bsw_bit(&bsw, 0); + ret &= _bsw_bit_check("bsw zeros d", &bsw, 0x0, 4); + + ur_bsw_bit(&bsw, 0); + ret &= _bsw_bit_check("bsw zeros e", &bsw, 0x0, 5); + + ur_bsw_bit(&bsw, 0); + ret &= _bsw_bit_check("bsw zeros f", &bsw, 0x0, 6); + + ur_bsw_bit(&bsw, 0); + ret &= _bsw_bit_check("bsw zeros g", &bsw, 0x0, 7); + + ur_bsw_bit(&bsw, 0); + ret &= _bsw_bit_check("bsw zeros h", &bsw, 0x0, 0); + + if ( bsw.size != 2 ) { + fprintf(stderr, "bsw zeros grow: fail\r\n"); + ret = 0; + } + + free(bsw.bytes); + + return ret; +} + +/* +** test 8 sequential writes of alternating bits. +*/ +static int +_test_bsw_bit_alt(void) +{ + int ret = 1; + ur_bsw_t bsw = {0}; + _bsw_reinit(&bsw, 1, 1); + + ret &= _bsw_bit_check("bsw alt init", &bsw, 0x0, 0); + + ur_bsw_bit(&bsw, 0); + ret &= _bsw_bit_check("bsw alt a", &bsw, 0x0, 1); + + ur_bsw_bit(&bsw, 1); + ret &= _bsw_bit_check("bsw alt b", &bsw, 0x2, 2); + + ur_bsw_bit(&bsw, 0); + ret &= _bsw_bit_check("bsw alt c", &bsw, 0x2, 3); + + ur_bsw_bit(&bsw, 1); + ret &= _bsw_bit_check("bsw alt d", &bsw, 0xa, 4); + + ur_bsw_bit(&bsw, 0); + ret &= _bsw_bit_check("bsw alt e", &bsw, 0xa, 5); + + ur_bsw_bit(&bsw, 1); + ret &= _bsw_bit_check("bsw alt f", &bsw, 0x2a, 6); + + ur_bsw_bit(&bsw, 0); + ret &= _bsw_bit_check("bsw alt g", &bsw, 0x2a, 7); + + ur_bsw_bit(&bsw, 1); + ret &= _bsw_bit_check("bsw alt h", &bsw, 0xaa, 0); + + if ( bsw.size != 2 ) { + fprintf(stderr, "bsw alt grow: fail\r\n"); + ret = 0; + } + + free(bsw.bytes); + + return ret; +} + +static int +_test_bsw_bit(void) +{ + return _test_bsw_bit_ones() + & _test_bsw_bit_zeros() + & _test_bsw_bit_alt(); +} + +/* +** subsequents bitstream-writer tests assume the correctnesss of +** ur_bsw_bit(), and compare the output of a bit-at-a-time +** "golden master" with that of the relevant, higher-level operation. +** +** XX the "golden" master implementations shouldn't be in bitstream module, +** as we don't intend to run them, but it's kind of weird implement them +** in the test itself. +** +*/ +static int +_bsw_cmp_check(const char* cap, uint8_t val, uint8_t off, uint8_t len, ur_bsw_t *a, ur_bsw_t *b) +{ + int ret = 1; + + if ( !ur_bsw_sane(a) ) { + fprintf(stderr, "%s: val 0x%02x off %u, len %u: a insane off=%u fill=%" PRIu64 " bits=%" PRIu64 "\r\n", + cap, val, off, len, a->off, a->fill, a->bits); + ret = 0; + } + if ( !ur_bsw_sane(b) ) { + fprintf(stderr, "%s: val 0x%02x off %u len %u: b insane off=%u fill=%" PRIu64 " bits=%" PRIu64 "\r\n", + cap, val, off, len, b->off, b->fill, b->bits); + ret = 0; + } + + if ( a->off != b->off ) { + fprintf(stderr, "%s: val 0x%02x off %u len %u: offset fail (%u, %u)\r\n", + cap, val, off, len, a->off, b->off); + ret = 0; + } + + if ( a->fill != b->fill ) { + fprintf(stderr, "%s: val 0x%02x off %u len %u: fill fail (%" PRIu64 ", %" PRIu64 ")\r\n", + cap, val, off, len, a->fill, b->fill); + ret = 0; + } + + { + uint64_t k, len_byt = a->fill + !!a->off; + + if ( memcmp(a->bytes, b->bytes, len_byt) ) { + fprintf(stderr, "%s: val 0x%02x off %u, len %u not equal off=%u fill=%" PRIu64 "\r\n", + cap, val, off, len, b->off, b->fill); + fprintf(stderr, " a: { "); + for ( k = 0; k < len_byt; k++ ) { + fprintf(stderr, "%02x, ", a->bytes[k]); + } + fprintf(stderr, "}\r\n"); + fprintf(stderr, " b: { "); + for ( k = 0; k < len_byt; k++ ) { + fprintf(stderr, "%02x, ", b->bytes[k]); + } + fprintf(stderr, "}\r\n"); + ret = 0; + } + } + + return ret; +} + +/* +** ur_bsw8 golden master +*/ +static void +_bsw8_slow(ur_bsw_t *bsw, uint8_t len, uint8_t byt) +{ + len = ur_min(8, len); + + while ( len ) { + ur_bsw_bit(bsw, byt); + byt >>= 1; + len--; + } +} + +/* +** at varying offsets, write varying numbers of bits via +** ur_bsw8 and master, comparing the result each time. +*/ +static int +_test_bsw8_loop(const char* cap, uint8_t val) +{ + int ret = 1; + ur_bsw_t a = {0}; + ur_bsw_t b = {0}; + uint8_t i, j; + + for ( i = 0; i < 8; i++) { + for ( j = 0; j <= 8; j++ ) { + _bsw_reinit(&a, 1, 1); + _bsw_reinit(&b, 1, 1); + a.off = a.bits = b.off = b.bits = i; + + _bsw8_slow(&a, j, val); + ur_bsw8(&b, j, val); + + ret &= _bsw_cmp_check(cap, val, i, j, &a, &b); + } + } + + return ret; +} + +static int +_test_bsw8(void) +{ + return _test_bsw8_loop("bsw bits ones", 0xff) + & _test_bsw8_loop("bsw bits zeros", 0x0) + & _test_bsw8_loop("bsw bits alt 1", 0xaa) + & _test_bsw8_loop("bsw bits alt 2", 0x55); +} + +/* +** ur_bsw32 golden master +*/ +static void +_bsw32_slow(ur_bsw_t *bsw, uint8_t len, uint32_t val) +{ + len = ur_min(32, len); + + while ( len ) { + ur_bsw_bit(bsw, val & 0xff); + val >>= 1; + len--; + } +} + +/* +** at varying offsets, write varying numbers of bits via +** ur_bsw32 and master, comparing the result each time. +*/ +static int +_test_bsw32_loop(const char* cap, uint32_t val) +{ + int ret = 1; + ur_bsw_t a = {0}; + ur_bsw_t b = {0}; + uint8_t i, j; + + for ( i = 0; i < 8; i++) { + for ( j = 0; j <= 32; j++ ) { + _bsw_reinit(&a, 1, 1); + _bsw_reinit(&b, 1, 1); + a.off = a.bits = b.off = b.bits = i; + + _bsw32_slow(&a, j, val); + ur_bsw32(&b, j, val); + + ret &= _bsw_cmp_check(cap, val, i, j, &a, &b); + } + } + + return ret; +} + +static int +_test_bsw32(void) +{ + return _test_bsw32_loop("bsw 32 ones", 0xffffffff) + & _test_bsw32_loop("bsw 32 zeros", 0x0) + & _test_bsw32_loop("bsw 32 alt 1", 0xaaaaaaaa) + & _test_bsw32_loop("bsw 32 alt 2", 0x55555555); +} + +/* +** ur_bsw64 golden master +*/ +static void +_bsw64_slow(ur_bsw_t *bsw, uint8_t len, uint64_t val) +{ + len = ur_min(64, len); + + while ( len ) { + ur_bsw_bit(bsw, val & 0xff); + val >>= 1; + len--; + } +} + +/* +** at varying offsets, write varying numbers of bits via +** ur_bsw64 and master, comparing the result each time. +*/ +static int +_test_bsw64_loop(const char* cap, uint64_t val) +{ + int ret = 1; + ur_bsw_t a = {0}; + ur_bsw_t b = {0}; + uint8_t i, j; + + for ( i = 0; i < 8; i++) { + for ( j = 0; j <= 64; j++ ) { + _bsw_reinit(&a, 1, 1); + _bsw_reinit(&b, 1, 1); + a.off = a.bits = b.off = b.bits = i; + + _bsw64_slow(&a, j, val); + ur_bsw64(&b, j, val); + + ret &= _bsw_cmp_check(cap, val, i, j, &a, &b); + } + } + + return ret; +} + +static int +_test_bsw64(void) +{ + return _test_bsw64_loop("bsw 64 ones", 0xffffffffffffffffULL) + & _test_bsw64_loop("bsw 64 zeros", 0x0ULL) + & _test_bsw64_loop("bsw 64 alt 1", 0xaaaaaaaaaaaaaaaaULL) + & _test_bsw64_loop("bsw 64 alt 2", 0x5555555555555555ULL); +} + +/* +** ur_bsw_bytes() golden master +*/ +static void +_bsw_bytes_slow(ur_bsw_t *bsw, uint64_t len, uint8_t *byt) +{ + uint64_t i, len_byt = len >> 3; + + for ( i = 0; i < len_byt; i++ ) { + _bsw8_slow(bsw, 8, byt[i]); + len -= 8; + } + + _bsw8_slow(bsw, len, byt[len_byt]); +} + +/* +** at varying offsets, write varying numbers of bits via +** ur_bsw_bytes and master, comparing the result each time. +*/ +static int +_test_bsw_bytes_loop(const char* cap, uint64_t len, uint8_t val) +{ + int ret = 1; + ur_bsw_t a = {0}; + ur_bsw_t b = {0}; + uint8_t i, j, *byt; + uint64_t len_bit = len << 3; + + byt = malloc(len); + memset(byt, val, len); + + for ( i = 0; i < 8; i++) { + for ( j = 0; j < len_bit; j++ ) { + _bsw_reinit(&a, 1, 1); + _bsw_reinit(&b, 1, 1); + a.off = a.bits = b.off = b.bits = i; + + _bsw_bytes_slow(&a, j, byt); + ur_bsw_bytes(&b, j, byt); + + ret &= _bsw_cmp_check(cap, val, i, j, &a, &b); + } + } + + free(byt); + + return ret; +} + +static int +_test_bsw_bytes(void) +{ + return _test_bsw_bytes_loop("bsw bytes nought", 0, 0x0) + & _test_bsw_bytes_loop("bsw bytes ones odd", 3, 0xff) + & _test_bsw_bytes_loop("bsw bytes ones even", 4, 0xff) + & _test_bsw_bytes_loop("bsw bytes zeros odd", 5, 0x0) + & _test_bsw_bytes_loop("bsw bytes zeros even", 6, 0x0) + & _test_bsw_bytes_loop("bsw bytes alt 1 odd", 7, 0xaa) + & _test_bsw_bytes_loop("bsw bytes alt 1 even", 8, 0xaa) + & _test_bsw_bytes_loop("bsw bytes alt 2 odd", 9, 0x55) + & _test_bsw_bytes_loop("bsw bytes alt 2 even", 10, 0x55); +} + +/* +** ur_bsw_bex golden master +*/ +static void +_bsw_bex_slow(ur_bsw_t *bsw, uint8_t n) +{ + while ( n >= 64 ) { + _bsw64_slow(bsw, 64, 0); + n -= 64; + } + + _bsw64_slow(bsw, n + 1, 1ULL << n); +} + +/* +** at varying offsets, write varying numbers of bits via +** ur_bsw_bex and master, comparing the result each time. +*/ +static int +_test_bsw_bex() +{ + int ret = 1; + ur_bsw_t a = {0}; + ur_bsw_t b = {0}; + uint8_t i; + uint32_t j; + + for ( i = 0; i < 8; i++) { + for ( j = 0; j < 256; j++ ) { + _bsw_reinit(&a, 1, 1); + _bsw_reinit(&b, 1, 1); + a.off = a.bits = b.off = b.bits = i; + + _bsw_bex_slow(&a, j); + ur_bsw_bex(&b, j); + + ret &= _bsw_cmp_check("bsw bex", j, i, j + 1, &a, &b); + } + } + + return ret; +} + +static int +_test_bsw(void) +{ + return _test_bsw_bit() + & _test_bsw8() + & _test_bsw32() + & _test_bsw64() + & _test_bsw_bytes() + & _test_bsw_bex(); +} + +/* +** check bitstream-reader test invariants. +*/ +static int +_bsr_bit_check(const char *cap, + ur_bsr_t *bsr, + uint8_t off, + uint64_t bits, + uint8_t exp, + uint8_t val, + ur_cue_res_e ser, + ur_cue_res_e res) +{ + int ret = 1; + + if ( !ur_bsr_sane(bsr) ) { + fprintf(stderr, "%s: insane off=%u left=%" PRIu64 " bits=%" PRIu64 "\r\n", + cap, bsr->off, bsr->left, bsr->bits); + ret = 0; + } + + if ( ser != res ) { + fprintf(stderr, "%s: res not equal (%s, %s) off=%u left=%" PRIu64 " byte=%02x bits=%" PRIu64 "\r\n", + cap, (ur_cue_good == ser) ? "good" : "gone", + (ur_cue_good == res) ? "good" : "gone", + bsr->off, bsr->left, bsr->left ? bsr->bytes[0] : 0, bsr->bits); + ret = 0; + } + + if ( (ur_cue_good == res) && (exp != val) ) { + fprintf(stderr, "%s: val not equal (%02x, %02x) off=%u left=%" PRIu64 " byte=%02x bits=%" PRIu64 "\r\n", + cap, exp, val, bsr->off, bsr->left, bsr->left ? bsr->bytes[0] : 0, bsr->bits); + ret = 0; + } + + if ( off != bsr->off ) { + fprintf(stderr, "%s: offset fail (%u, %u)\r\n", cap, off, bsr->off); + ret = 0; + } + + if ( bits != bsr->bits ) { + fprintf(stderr, "%s: bits fail (%" PRIu64 ", %" PRIu64 ")\r\n", cap, bits, bsr->bits); + ret = 0; + } + + return ret; +} + +/* +** read a bit 8 times from a bitstream initialized to all ones, +** checking invariants and result after each read. +*/ +static int +_test_bsr_bit_ones(void) +{ + int ret = 1; + uint8_t ones[1] = { 0xff }; + ur_bsr_t bsr = { .left = sizeof(ones), .bytes = ones }; + uint8_t out; + ur_cue_res_e res; + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 1", &bsr, 1, 1, ur_cue_good, res, 1, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 2", &bsr, 2, 2, ur_cue_good, res, 1, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 3", &bsr, 3, 3, ur_cue_good, res, 1, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 4", &bsr, 4, 4, ur_cue_good, res, 1, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 5", &bsr, 5, 5, ur_cue_good, res, 1, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 6", &bsr, 6, 6, ur_cue_good, res, 1, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 7", &bsr, 7, 7, ur_cue_good, res, 1, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 8", &bsr, 0, 8, ur_cue_good, res, 1, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 9", &bsr, 0, 8, ur_cue_gone, res, 0, 0); + + return ret; +} + +/* +** read a bit 8 times from a bitstream initialized to all zeros, +** checking invariants and result after each read. +*/ +static int +_test_bsr_bit_zeros(void) +{ + int ret = 1; + uint8_t ones[1] = { 0x0 }; + ur_bsr_t bsr = { .left = sizeof(ones), .bytes = ones }; + uint8_t out; + ur_cue_res_e res; + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 1", &bsr, 1, 1, ur_cue_good, res, 0, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 2", &bsr, 2, 2, ur_cue_good, res, 0, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 3", &bsr, 3, 3, ur_cue_good, res, 0, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 4", &bsr, 4, 4, ur_cue_good, res, 0, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 5", &bsr, 5, 5, ur_cue_good, res, 0, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 6", &bsr, 6, 6, ur_cue_good, res, 0, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 7", &bsr, 7, 7, ur_cue_good, res, 0, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 8", &bsr, 0, 8, ur_cue_good, res, 0, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 9", &bsr, 0, 8, ur_cue_gone, res, 0, 0); + + return ret; +} + +/* +** read a bit 8 times from a bitstream initialized to alternating zeros and ones, +** checking invariants and result after each read. +*/ +static int +_test_bsr_bit_alt(void) +{ + int ret = 1; + uint8_t ones[1] = { 0xaa }; + ur_bsr_t bsr = { .left = sizeof(ones), .bytes = ones }; + uint8_t out; + ur_cue_res_e res; + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 1", &bsr, 1, 1, ur_cue_good, res, 0, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 2", &bsr, 2, 2, ur_cue_good, res, 1, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 3", &bsr, 3, 3, ur_cue_good, res, 0, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 4", &bsr, 4, 4, ur_cue_good, res, 1, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 5", &bsr, 5, 5, ur_cue_good, res, 0, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 6", &bsr, 6, 6, ur_cue_good, res, 1, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 7", &bsr, 7, 7, ur_cue_good, res, 0, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 8", &bsr, 0, 8, ur_cue_good, res, 1, out); + + res = ur_bsr_bit(&bsr, &out); + ret &= _bsr_bit_check("bsr bit ones 9", &bsr, 0, 8, ur_cue_gone, res, 0, 0); + + return ret; +} + +static int +_test_bsr_bit(void) +{ + return _test_bsr_bit_ones() + & _test_bsr_bit_zeros() + & _test_bsr_bit_alt(); +} + +/* +** check bitstream-reader test invariants, after (maybe) reading +** of the end of the stream. +*/ +static int +_bsr_bit_any_check(const char* cap, ur_bsr_t *bsr, uint8_t off, uint64_t bits, uint8_t exp, uint8_t val) +{ + int ret = 1; + + if ( !ur_bsr_sane(bsr) ) { + fprintf(stderr, "%s: insane off=%u left=%" PRIu64 " bits=%" PRIu64 "\r\n", + cap, bsr->off, bsr->left, bsr->bits); + ret = 0; + } + + if ( exp != val ) { + fprintf(stderr, "%s: not equal (%02x, %02x) off=%u left=%" PRIu64 " byte=%02x bits=%" PRIu64 "\r\n", + cap, exp, val, bsr->off, bsr->left, bsr->left ? bsr->bytes[0] : 0, bsr->bits); + ret = 0; + } + + if ( off != bsr->off ) { + fprintf(stderr, "%s: offset fail (%u, %u)\r\n", cap, off, bsr->off); + ret = 0; + } + + if ( bits != bsr->bits ) { + fprintf(stderr, "%s: bits fail (%" PRIu64 ", %" PRIu64 ")\r\n", cap, bits, bsr->bits); + ret = 0; + } + + return ret; +} + +/* +** read a bit 17 times from a bitstream initialized to 8 ones, +** checking invariants and result after each read. +*/ +static int +_test_bsr_bit_any_ones(void) +{ + int ret = 1; + uint8_t ones[1] = { 0xff }; + ur_bsr_t bsr = { .left = sizeof(ones), .bytes = ones }; + uint8_t out; + + ret &= _bsr_bit_any_check("bsr bit-any ones init", &bsr, 0, 0, 0, 0); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones 1", &bsr, 1, 1, 1, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones 2", &bsr, 2, 2, 1, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones 3", &bsr, 3, 3, 1, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones 4", &bsr, 4, 4, 1, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones 5", &bsr, 5, 5, 1, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones 6", &bsr, 6, 6, 1, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones 7", &bsr, 7, 7, 1, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones 8", &bsr, 0, 8, 1, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones off 9", &bsr, 0, 9, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones off 10", &bsr, 0, 10, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones off 11", &bsr, 0, 11, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones off 12", &bsr, 0, 12, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones off 13", &bsr, 0, 13, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones off 14", &bsr, 0, 14, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones off 15", &bsr, 0, 15, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones off 16", &bsr, 0, 16, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any ones off 17", &bsr, 0, 17, 0, out); + + return ret; +} + +/* +** read a bit 17 times from a bitstream initialized to 8 zeros, +** checking invariants and result after each read. +*/ +static int +_test_bsr_bit_any_zeros(void) +{ + int ret = 1; + uint8_t ones[1] = { 0x0 }; + ur_bsr_t bsr = { .left = sizeof(ones), .bytes = ones }; + uint8_t out; + + ret &= _bsr_bit_any_check("bsr bit-any zeros init", &bsr, 0, 0, 0, 0); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros 1", &bsr, 1, 1, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros 2", &bsr, 2, 2, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros 3", &bsr, 3, 3, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros 4", &bsr, 4, 4, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros 5", &bsr, 5, 5, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros 6", &bsr, 6, 6, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros 7", &bsr, 7, 7, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros 8", &bsr, 0, 8, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros off 9", &bsr, 0, 9, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros off 10", &bsr, 0, 10, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros off 11", &bsr, 0, 11, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros off 12", &bsr, 0, 12, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros off 13", &bsr, 0, 13, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros off 14", &bsr, 0, 14, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros off 15", &bsr, 0, 15, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros off 16", &bsr, 0, 16, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any zeros off 17", &bsr, 0, 17, 0, out); + + return ret; +} + +/* +** read a bit 17 times from a bitstream initialized to 8 bits of alternating, +** ones and zeros, checking invariants and result after each read. +*/ +static int +_test_bsr_bit_any_alt(void) +{ + int ret = 1; + uint8_t ones[1] = { 0xaa }; + ur_bsr_t bsr = { .left = sizeof(ones), .bytes = ones }; + uint8_t out; + + ret &= _bsr_bit_any_check("bsr bit-any alt init", &bsr, 0, 0, 0, 0); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt 1", &bsr, 1, 1, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt 2", &bsr, 2, 2, 1, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt 3", &bsr, 3, 3, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt 4", &bsr, 4, 4, 1, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt 5", &bsr, 5, 5, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt 6", &bsr, 6, 6, 1, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt 7", &bsr, 7, 7, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt 8", &bsr, 0, 8, 1, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt off 9", &bsr, 0, 9, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt off 10", &bsr, 0, 10, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt off 11", &bsr, 0, 11, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt off 12", &bsr, 0, 12, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt off 13", &bsr, 0, 13, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt off 14", &bsr, 0, 14, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt off 15", &bsr, 0, 15, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt off 16", &bsr, 0, 16, 0, out); + + out = ur_bsr_bit_any(&bsr); + ret &= _bsr_bit_any_check("bsr bit-any alt off 17", &bsr, 0, 17, 0, out); + + return ret; +} + +static int +_test_bsr_bit_any(void) +{ + return _test_bsr_bit_any_ones() + & _test_bsr_bit_any_zeros() + & _test_bsr_bit_any_alt(); +} + +/* +** subsequents bitstream-reader tests assume the correctnesss of +** ur_bsr_bit_any(), and compare the output of a bit-at-a-time +** "golden master" with that of the relevant, higher-level operation. +** +** XX the "golden" master implementations shouldn't be in bitstream module, +** as we don't intend to run them, but it's kind of weird implement them +** in the test itself. +** +*/ +static int +_bsr_cmp_any_check(const char* cap, uint8_t off, uint8_t len, ur_bsr_t *a, ur_bsr_t *b) +{ + int ret = 1; + + if ( !ur_bsr_sane(a) ) { + fprintf(stderr, "%s: off %u, len %u a insane off=%u left=%" PRIu64 " bits=%" PRIu64 "\r\n", + cap, off, len, a->off, a->left, a->bits); + ret = 0; + } + + if ( !ur_bsr_sane(b) ) { + fprintf(stderr, "%s: off %u, len %u a insane off=%u left=%" PRIu64 " bits=%" PRIu64 "\r\n", + cap, off, len, b->off, b->left, b->bits); + ret = 0; + } + + if ( a->off != b->off ) { + fprintf(stderr, "%s: off %u len %u: offset fail (%u, %u)\r\n", + cap, off, len, a->off, b->off); + ret = 0; + } + + if ( a->left != b->left ) { + fprintf(stderr, "%s: off %u len %u: left fail (%" PRIu64 ", %" PRIu64 ")\r\n", + cap, off, len, a->left, b->left); + ret = 0; + } + + if ( a->bits != b->bits ) { + fprintf(stderr, "%s: off %u len %u: bits fail (%" PRIu64 ", %" PRIu64 ")\r\n", + cap, off, len, a->bits, b->bits); + ret = 0; + } + + if ( a->bytes != b->bytes ) { + fprintf(stderr, "%s: off %u len %u: bytes fail (%p, %p)\r\n", + cap, off, len, a->bytes, b->bytes); + ret = 0; + } + + return ret; +} + +/* +** ur_bsr8_any golden master +*/ +static uint8_t +_bsr8_any_slow(ur_bsr_t *bsr, uint8_t len) +{ + uint8_t i, out = 0; + + len = ur_min(8, len); + + for ( i = 0; i < len; i++ ) { + out ^= ur_bsr_bit_any(bsr) << i; + } + + return out; +} + +/* +** from a bitstream-reader initialized with varying values/lengths/offsets, +** read a varying numbers of bits via ur_bsr8_any and master, comparing +** the results and respective states each time. +*/ +static int +_test_bsr8_loop(const char *cap, uint8_t len, uint8_t val) +{ + int ret = 1; + uint8_t *bytes; + ur_bsr_t a, b; + uint8_t c, d, i, j; + + bytes = malloc(len); + memset(bytes, val, len); + + for ( i = 0; i < 8; i++) { + for ( j = 0; j <= 8; j++ ) { + a.left = b.left = len; + a.bytes = b.bytes = bytes; + a.off = a.bits = b.off = b.bits = i; + + c = _bsr8_any_slow(&a, j); + d = ur_bsr8_any(&b, j); + + ret &= _bsr_cmp_any_check(cap, i, j, &a, &b); + + if ( c != d ) { + fprintf(stderr, "%s: off %u, len %u not equal (%02x, %02x) off=%u left=%" PRIu64 " byte=%02x bits=%" PRIu64 "\r\n", + cap, i, j, c, d, b.off, b.left, b.left ? b.bytes[0] : 0, b.bits); + ret = 0; + } + } + } + + free(bytes); + + return ret; +} + +static int +_test_bsr8(void) +{ + return _test_bsr8_loop("bsr8 ones 1", 1, 0xff) + & _test_bsr8_loop("bsr8 ones 2", 2, 0xff) + & _test_bsr8_loop("bsr8 zeros 1", 1, 0x0) + & _test_bsr8_loop("bsr8 zeros 2", 2, 0x0) + & _test_bsr8_loop("bsr8 alt-1 1", 1, 0xaa) + & _test_bsr8_loop("bsr8 alt-1 2", 2, 0xaa) + & _test_bsr8_loop("bsr8 alt-2 1", 1, 0x55) + & _test_bsr8_loop("bsr8 alt-2 2", 2, 0x55); +} + +/* +** ur_bsr32_any golden master +*/ +static uint32_t +_bsr32_any_slow(ur_bsr_t *bsr, uint8_t len) +{ + uint32_t out = 0; + uint8_t i; + + len = ur_min(32, len); + + for ( i = 0; i < len; i++ ) { + out ^= (uint32_t)ur_bsr_bit_any(bsr) << i; + } + + return out; +} + +/* +** from a bitstream-reader initialized with varying values/lengths/offsets, +** read a varying numbers of bits via ur_bsr32_any and master, comparing +** the results and respective states each time. +*/ +static int +_test_bsr32_loop(const char *cap, uint8_t len, uint8_t val) +{ + int ret = 1; + uint8_t *bytes; + ur_bsr_t a, b; + uint32_t c, d; + uint8_t i, j; + + bytes = malloc(len); + memset(bytes, val, len); + + for ( i = 0; i < 8; i++) { + for ( j = 0; j <= 32; j++ ) { + a.left = b.left = len; + a.bytes = b.bytes = bytes; + a.off = a.bits = b.off = b.bits = i; + + c = _bsr32_any_slow(&a, j); + d = ur_bsr32_any(&b, j); + + ret &= _bsr_cmp_any_check(cap, i, j, &a, &b); + + if ( c != d ) { + fprintf(stderr, "%s: off %u, len %u not equal (%08x, %08x) off=%u left=%" PRIu64 " byte=%02x bits=%" PRIu64 "\r\n", + cap, i, j, c, d, b.off, b.left, b.left ? b.bytes[0] : 0, b.bits); + ret = 0; + } + } + } + + free(bytes); + + return ret; +} + +static int +_test_bsr32(void) +{ + return _test_bsr32_loop("bsr32 ones 1", 1, 0xff) + & _test_bsr32_loop("bsr32 ones 2", 2, 0xff) + & _test_bsr32_loop("bsr32 ones 3", 3, 0xff) + & _test_bsr32_loop("bsr32 ones 4", 4, 0xff) + & _test_bsr32_loop("bsr32 zeros 1", 1, 0x0) + & _test_bsr32_loop("bsr32 zeros 2", 2, 0x0) + & _test_bsr32_loop("bsr32 zeros 3", 3, 0x0) + & _test_bsr32_loop("bsr32 zeros 4", 4, 0x0) + & _test_bsr32_loop("bsr32 alt-1 1", 1, 0xaa) + & _test_bsr32_loop("bsr32 alt-1 2", 2, 0xaa) + & _test_bsr32_loop("bsr32 alt-1 3", 3, 0xaa) + & _test_bsr32_loop("bsr32 alt-1 4", 4, 0xaa) + & _test_bsr32_loop("bsr32 alt-2 1", 1, 0x55) + & _test_bsr32_loop("bsr32 alt-2 2", 2, 0x55) + & _test_bsr32_loop("bsr32 alt-2 3", 3, 0x55) + & _test_bsr32_loop("bsr32 alt-2 4", 4, 0x55); +} + +/* +** ur_bsr64_any golden master +*/ +static uint64_t +_bsr64_any_slow(ur_bsr_t *bsr, uint8_t len) +{ + uint64_t out = 0; + uint8_t i; + + len = ur_min(64, len); + + for ( i = 0; i < len; i++ ) { + out ^= (uint64_t)ur_bsr_bit_any(bsr) << i; + } + + return out; +} + +/* +** from a bitstream-reader initialized with varying values/lengths/offsets, +** read a varying numbers of bits via ur_bsr64_any and master, comparing +** the results and respective states each time. +*/ +static int +_test_bsr64_loop(const char *cap, uint8_t len, uint8_t val) +{ + int ret = 1; + uint8_t *bytes; + ur_bsr_t a, b; + uint64_t c, d; + uint8_t i, j; + + bytes = malloc(len); + memset(bytes, val, len); + + for ( i = 0; i < 8; i++) { + for ( j = 0; j <= 64; j++ ) { + a.left = b.left = len; + a.bytes = b.bytes = bytes; + a.off = a.bits = b.off = b.bits = i; + + c = _bsr64_any_slow(&a, j); + d = ur_bsr64_any(&b, j); + + ret &= _bsr_cmp_any_check(cap, i, j, &a, &b); + + if ( c != d ) { + fprintf(stderr, "%s: off %u, len %u not equal (%016" PRIx64", %016" PRIx64") off=%u left=%" PRIu64 " byte=%02x bits=%" PRIu64 "\r\n", + cap, i, j, c, d, b.off, b.left, b.left ? b.bytes[0] : 0, b.bits); + ret = 0; + } + } + } + + free(bytes); + + return ret; +} + +static int +_test_bsr64(void) +{ + return _test_bsr64_loop("bsr64 ones 1", 1, 0xff) + & _test_bsr64_loop("bsr64 ones 2", 2, 0xff) + & _test_bsr64_loop("bsr64 ones 3", 3, 0xff) + & _test_bsr64_loop("bsr64 ones 4", 4, 0xff) + & _test_bsr64_loop("bsr64 ones 5", 5, 0xff) + & _test_bsr64_loop("bsr64 ones 6", 6, 0xff) + & _test_bsr64_loop("bsr64 ones 7", 7, 0xff) + & _test_bsr64_loop("bsr64 ones 8", 8, 0xff) + & _test_bsr64_loop("bsr64 zeros 1", 1, 0x0) + & _test_bsr64_loop("bsr64 zeros 2", 2, 0x0) + & _test_bsr64_loop("bsr64 zeros 3", 3, 0x0) + & _test_bsr64_loop("bsr64 zeros 4", 4, 0x0) + & _test_bsr64_loop("bsr64 zeros 5", 5, 0x0) + & _test_bsr64_loop("bsr64 zeros 6", 6, 0x0) + & _test_bsr64_loop("bsr64 zeros 7", 7, 0x0) + & _test_bsr64_loop("bsr64 zeros 8", 8, 0x0) + & _test_bsr64_loop("bsr64 alt-1 1", 1, 0xaa) + & _test_bsr64_loop("bsr64 alt-1 2", 2, 0xaa) + & _test_bsr64_loop("bsr64 alt-1 3", 3, 0xaa) + & _test_bsr64_loop("bsr64 alt-1 4", 4, 0xaa) + & _test_bsr64_loop("bsr64 alt-1 5", 5, 0xaa) + & _test_bsr64_loop("bsr64 alt-1 6", 6, 0xaa) + & _test_bsr64_loop("bsr64 alt-1 7", 7, 0xaa) + & _test_bsr64_loop("bsr64 alt-1 8", 8, 0xaa) + & _test_bsr64_loop("bsr64 alt-2 1", 1, 0x55) + & _test_bsr64_loop("bsr64 alt-2 2", 2, 0x55) + & _test_bsr64_loop("bsr64 alt-2 3", 3, 0x55) + & _test_bsr64_loop("bsr64 alt-2 4", 4, 0x55) + & _test_bsr64_loop("bsr64 alt-2 5", 5, 0x55) + & _test_bsr64_loop("bsr64 alt-2 6", 6, 0x55) + & _test_bsr64_loop("bsr64 alt-2 7", 7, 0x55) + & _test_bsr64_loop("bsr64 alt-2 8", 8, 0x55); +} + +/* +** ur_bsr_bytes_any golden master +*/ +static void +_bsr_bytes_any_slow(ur_bsr_t *bsr, uint64_t len, uint8_t *out) +{ + uint64_t i, len_byt = len >> 3, len_bit = ur_mask_3(len); + + for ( i = 0; i < len_byt; i++ ) { + out[i] = _bsr8_any_slow(bsr, 8); + } + + if ( len_bit ) { + out[len_byt] = _bsr8_any_slow(bsr, len_bit); + } +} + +/* +** from a bitstream-reader initialized with varying values/lengths/offsets, +** read a varying numbers of bits via ur_bsr_bytes_any and master, comparing +** the results and respective states each time. +*/ +static int +_test_bsr_bytes_any_loop(const char *cap, uint8_t len, uint8_t val) +{ + int ret = 1; + uint64_t max = (len << 3) + 7; + ur_bsr_t a, b; + uint8_t *bytes, *c, *d; + uint8_t i, j, k; + + c = malloc(1 + len); + d = malloc(1 + len); + bytes = malloc(len); + memset(bytes, val, len); + + for ( i = 0; i < 8; i++) { + for ( j = 1; j <= max; j++ ) { + a.left = b.left = len; + a.bytes = b.bytes = len ? bytes : 0; + a.off = b.off = len ? i : 0; + a.bits = b.bits = i; + memset(c, 0x0, len); + memset(d, 0x0, len); + + _bsr_bytes_any_slow(&a, j, c); + ur_bsr_bytes_any(&b, j, d); + + ret &= _bsr_cmp_any_check(cap, i, j, &a, &b); + + if ( memcmp(c, d, len) ) { + fprintf(stderr, "%s: off %u, len %u not equal off=%u left=%" PRIu64 " bits=%" PRIu64 "\r\n", + cap, i, j, b.off, b.left, b.bits); + fprintf(stderr, " a: { "); + for ( k = 0; k < len; k++ ) { + fprintf(stderr, "%02x, ", c[k]); + } + fprintf(stderr, "}\r\n"); + fprintf(stderr, " b: { "); + for ( k = 0; k < len; k++ ) { + fprintf(stderr, "%02x, ", d[k]); + } + fprintf(stderr, "}\r\n"); + ret = 0; + } + } + } + + free(bytes); + free(d); + free(c); + + return ret; +} + +static int +_test_bsr_bytes_any(void) +{ + return _test_bsr_bytes_any_loop("bsr bytes nought", 0, 0x0) + & _test_bsr_bytes_any_loop("bsr bytes ones odd", 3, 0xff) + & _test_bsr_bytes_any_loop("bsr bytes ones even", 4, 0xff) + & _test_bsr_bytes_any_loop("bsr bytes zeros odd", 5, 0x0) + & _test_bsr_bytes_any_loop("bsr bytes zeros even", 6, 0x0) + & _test_bsr_bytes_any_loop("bsr bytes alt 1 odd", 7, 0xaa) + & _test_bsr_bytes_any_loop("bsr bytes alt 1 even", 8, 0xaa) + & _test_bsr_bytes_any_loop("bsr bytes alt 2 odd", 9, 0x55) + & _test_bsr_bytes_any_loop("bsr bytes alt 2 even", 10, 0x55); +} + +/* +** from a bitstream-reader initialized with varying values/lengths/offsets, +** skip a varying numbers of bits via ur_bsr_skip_any and read the same via +** ur_bsr_bytes_any master, comparing the respective states each time. +*/ +static int +_test_bsr_skip_any_loop(const char *cap, uint8_t len, uint8_t val) +{ + int ret = 1; + uint64_t max = (len << 3) + 7; + ur_bsr_t a, b; + uint8_t *bytes, *c; + uint8_t i, j; + + c = malloc(1 + len); + bytes = malloc(len); + memset(bytes, val, len); + + for ( i = 0; i < 8; i++) { + for ( j = 1; j <= max; j++ ) { + a.left = b.left = len; + a.bytes = b.bytes = len ? bytes : 0; + a.off = b.off = len ? i : 0; + a.bits = b.bits = i; + memset(c, 0x0, len); + + _bsr_bytes_any_slow(&a, j, c); + ur_bsr_skip_any(&b, j); + + ret &= _bsr_cmp_any_check(cap, i, j, &a, &b); + } + } + + free(bytes); + free(c); + + return ret; +} + +static int +_test_bsr_skip_any(void) +{ + return _test_bsr_skip_any_loop("bsr skip nought", 0, 0x0) + & _test_bsr_skip_any_loop("bsr skip ones odd", 3, 0xff) + & _test_bsr_skip_any_loop("bsr skip ones even", 4, 0xff) + & _test_bsr_skip_any_loop("bsr skip zeros odd", 5, 0x0) + & _test_bsr_skip_any_loop("bsr skip zeros even", 6, 0x0) + & _test_bsr_skip_any_loop("bsr skip alt 1 odd", 7, 0xaa) + & _test_bsr_skip_any_loop("bsr skip alt 1 even", 8, 0xaa) + & _test_bsr_skip_any_loop("bsr skip alt 2 odd", 9, 0x55) + & _test_bsr_skip_any_loop("bsr skip alt 2 even", 10, 0x55); +} + +/* +** compare the result and state of two reads (that were not permitted +** to read past the end of the stream). +*/ +static int +_bsr_cmp_check(const char* cap, + uint8_t off, + uint8_t len, + ur_bsr_t *a, + ur_bsr_t *b, + uint8_t c, + uint8_t d, + ur_cue_res_e e, + ur_cue_res_e f) +{ + int ret = 1; + + if ( !ur_bsr_sane(a) ) { + fprintf(stderr, "%s: off %u, len %u a insane off=%u left=%" PRIu64 " bits=%" PRIu64 "\r\n", + cap, off, len, a->off, a->left, a->bits); + ret = 0; + } + + if ( !ur_bsr_sane(b) ) { + fprintf(stderr, "%s: off %u, len %u a insane off=%u left=%" PRIu64 " bits=%" PRIu64 "\r\n", + cap, off, len, b->off, b->left, b->bits); + ret = 0; + } + + if ( e != f ) { + fprintf(stderr, "%s: off %u, len %u ret not equal (%s, %s) off=%u left=%" PRIu64 " bits=%" PRIu64 "\r\n", + cap, off, len, + (ur_cue_good == e) ? "good" : "gone", + (ur_cue_good == f) ? "good" : "gone", + b->off, b->left, b->bits); + ret = 0; + } + + if ( (ur_cue_good == e) && (c != d) ) { + fprintf(stderr, "%s: off %u, len %u val not equal (%02x, %02x) off=%u left=%" PRIu64 " bits=%" PRIu64 "\r\n", + cap, off, len, c, d, b->off, b->left, b->bits); + ret = 0; + } + + if ( a->off != b->off ) { + fprintf(stderr, "%s: off %u len %u: offset fail (%u, %u)\r\n", + cap, off, len, a->off, b->off); + ret = 0; + } + + if ( a->left != b->left ) { + fprintf(stderr, "%s: off %u len %u: left fail (%" PRIu64 ", %" PRIu64 ")\r\n", + cap, off, len, a->left, b->left); + ret = 0; + } + + if ( a->bits != b->bits ) { + fprintf(stderr, "%s: off %u len %u: bits fail (%" PRIu64 ", %" PRIu64 ")\r\n", + cap, off, len, a->bits, b->bits); + ret = 0; + } + + if ( a->bytes != b->bytes ) { + fprintf(stderr, "%s: off %u len %u: bytes fail (%p, %p)\r\n", + cap, off, len, a->bytes, b->bytes); + ret = 0; + } + + + return ret; +} + +/* +** ur_bsr_log golden master +*/ +static ur_cue_res_e +_bsr_log_slow(ur_bsr_t *bsr, uint8_t *out) +{ + ur_cue_res_e res; + uint8_t bit, i = 0; + + do { + if ( ur_cue_good != (res = ur_bsr_bit(bsr, &bit)) ) { + return res; + } + else if ( bit ) { + *out = i; + return ur_cue_good; + } + } + while ( ++i ); + + return ur_cue_meme; +} + +/* +** from a bitstream-reader initialized with varying values/lengths/offsets, +** read a varying numbers of bits via ur_bsr_log and master, comparing +** the results and respective states each time. +*/ +static int +_test_bsr_log_loop(const char *cap, uint8_t len, uint8_t val) +{ + int ret = 1; + ur_bsr_t a, b; + uint8_t *bytes, c, d; + uint8_t i, j; + ur_cue_res_e e, f; + + bytes = malloc(len); + + for ( i = 0; i < 8; i++) { + for ( j = 0; j < len; j++ ) { + a.left = b.left = len; + a.bytes = b.bytes = bytes; + a.off = a.bits = b.off = b.bits = i; + + memset(bytes, 0x0, j); + memset(bytes + j, val, len - j); + + e = _bsr_log_slow(&a, &c); + f = ur_bsr_log(&b, &d); + + ret &= _bsr_cmp_check(cap, i, j, &a, &b, c, d, e, f); + } + } + + free(bytes); + + return ret; +} + +static int +_test_bsr_log(void) +{ + int ret = _test_bsr_log_loop("bsr log nought", 0, 0x0) + & _test_bsr_log_loop("bsr log ones odd", 3, 0xff) + & _test_bsr_log_loop("bsr log ones even", 4, 0xff) + & _test_bsr_log_loop("bsr log ones big", 50, 0xff) + & _test_bsr_log_loop("bsr log zeros odd", 5, 0x0) + & _test_bsr_log_loop("bsr log zeros even", 6, 0x0) + & _test_bsr_log_loop("bsr log zeros big", 50, 0x0); + + { + uint8_t i, j = 5; + char cap[1024]; + + for ( i = 0; i < 8; i++ ) { + snprintf(cap, 1000, "bsr log 1<<%u odd", i); + ret &= _test_bsr_log_loop((const char*)cap, j++, 0x1 << i); + + snprintf(cap, 1000, "bsr log 1<<%u even", i); + ret &= _test_bsr_log_loop((const char*)cap, j++, 0x1 << i); + + snprintf(cap, 1000, "bsr log 1<<%u big", i); + ret &= _test_bsr_log_loop((const char*)cap, 50, 0x1 << i); + } + } + + return ret; +} + +/* +** ur_bsr_tag golden master +*/ +static ur_cue_res_e +_bsr_tag_slow(ur_bsr_t *bsr, ur_cue_tag_e *out) +{ + ur_cue_res_e res; + uint8_t bit; + + if ( ur_cue_good != (res = ur_bsr_bit(bsr, &bit)) ) { + return res; + } + else if ( 0 == bit ) { + *out = ur_jam_atom; + return ur_cue_good; + } + else if ( ur_cue_good != (res = ur_bsr_bit(bsr, &bit)) ) { + return res; + } + + *out = ( 0 == bit ) ? ur_jam_cell : ur_jam_back; + return ur_cue_good; +} + +/* +** from a bitstream-reader initialized with varying values/lengths/offsets, +** read a jam type tag via ur_bsr_tag and master, comparing the results and +** respective states each time. +*/ +static int +_test_bsr_tag_loop(const char *cap, uint8_t len, uint8_t val) +{ + int ret = 1; + ur_bsr_t a, b; + uint8_t *bytes; + ur_cue_tag_e c, d; + uint8_t i, j; + ur_cue_res_e e, f; + + bytes = malloc(len); + + for ( i = 0; i < 8; i++) { + for ( j = 0; j < len; j++ ) { + a.left = b.left = len; + a.bytes = b.bytes = bytes; + a.off = a.bits = b.off = b.bits = i; + + memset(bytes, 0x0, j); + memset(bytes + j, val, len - j); + + e = _bsr_tag_slow(&a, &c); + f = ur_bsr_tag(&b, &d); + + ret &= _bsr_cmp_check(cap, i, j, &a, &b, c, d, e, f); + } + } + + free(bytes); + + return ret; +} + +static int +_test_bsr_tag(void) +{ + return _test_bsr_tag_loop("bsr tag nought", 0, 0x0) + & _test_bsr_tag_loop("bsr tag ones 1", 1, 0xff) + & _test_bsr_tag_loop("bsr tag ones 2", 2, 0xff) + & _test_bsr_tag_loop("bsr tag zeros 1", 1, 0x0) + & _test_bsr_tag_loop("bsr tag zeros 2", 2, 0x0) + & _test_bsr_tag_loop("bsr tag alt-1 1", 1, 0xaa) + & _test_bsr_tag_loop("bsr tag alt-1 2", 2, 0xaa) + & _test_bsr_tag_loop("bsr tag alt-2 1", 1, 0x55) + & _test_bsr_tag_loop("bsr tag alt-2 2", 2, 0x55); +} + +static int +_test_bsr(void) +{ + return _test_bsr_bit() + & _test_bsr_bit_any() + & _test_bsr_bytes_any() + & _test_bsr_skip_any() + & _test_bsr8() + & _test_bsr32() + & _test_bsr64() + & _test_bsr_log() + & _test_bsr_tag(); +} + +static int +_test_jam_spec(const char *cap, + ur_root_t *r, + ur_nref ref, + size_t len, + const uint8_t *res) +{ + uint64_t i, out_len; + uint8_t *out; + int ret; + + ur_jam(r, ref, &out_len, &out); + + if ( 0 != memcmp(out, res, len) ) { + fprintf(stderr, "\033[31mjam %s fail\033[0m\r\n", cap); + + fprintf(stderr, " actual: { "); + for ( i = 0; i < out_len; i++ ) { + fprintf(stderr, "0x%x, ", out[i]); + } + fprintf(stderr, "}\r\n"); + fprintf(stderr, " expect: { "); + for ( i = 0; i < len; i++ ) { + fprintf(stderr, "0x%x, ", res[i]); + } + fprintf(stderr, "}\r\n"); + + ret = 0; + } + else { + ret = 1; + } + + free(out); + + return ret; +} + +static int +_test_cue_spec(const char *cap, + ur_root_t* r, + ur_nref ref, + size_t len, + const uint8_t *res) +{ + int ret = 1; + ur_nref out; + + if ( !ur_cue_test(len, res) ) { + fprintf(stderr, "\033[31mcue %s fail 1\033[0m\r\n", cap); + ret = 0; + } + + if ( ur_cue_good != ur_cue(r, len, res, &out) ) { + fprintf(stderr, "\033[31mcue %s fail 2\033[0m\r\n", cap); + ret = 0; + } + else if ( ref != out ) { + fprintf(stderr, "\033[31mcue %s fail 3 ref=%" PRIu64 " out=%" PRIu64 " \033[0m\r\n", cap, ref, out); + ret = 0; + } + + return ret; +} + +/* +** test jam/cue correctness and roundtrips across a variety of inputs +*/ +static int +_test_jam_cue(void) +{ + ur_root_t *r = ur_root_init(); + int ret = 1; + +# define NC(a, b) ur_cons(r, a, b) +# define NT(a, b, c) NC(a, NC(b, c)) + +# define FAST 0x74736166 +# define FULL 0x6c6c7566 + +# define TEST_CASE(a, b) \ + const char* cap = a; \ + ur_nref ref = b; \ + ret &= _test_jam_spec(cap, r, ref, sizeof(res), res); \ + ret &= _test_cue_spec(cap, r, ref, sizeof(res), res); \ + + { + uint8_t res[1] = { 0x2 }; + TEST_CASE("0", 0); + } + + { + uint8_t res[1] = { 0xc }; + TEST_CASE("1", 1); + } + + { + uint8_t res[1] = { 0x48 }; + TEST_CASE("2", 2); + } + + { + uint8_t res[6] = { 0xc0, 0x37, 0xb, 0x9b, 0xa3, 0x3 }; + TEST_CASE("%fast", FAST); + } + + { + uint8_t res[6] = { 0xc0, 0x37, 0xab, 0x63, 0x63, 0x3 }; + TEST_CASE("%full", FULL); + } + + { + uint8_t res[1] = { 0x29 }; + TEST_CASE("[0 0]", NC(0, 0)); + } + + { + uint8_t res[2] = { 0x31, 0x3 }; + TEST_CASE("[1 1]", NC(1, 1)); + } + + { + uint8_t res[2] = { 0x21, 0xd1 }; + TEST_CASE("[2 3]", NC(2, 3)); + } + + { + uint8_t res[11] = { 0x1, 0xdf, 0x2c, 0x6c, 0x8e, 0xe, 0x7c, 0xb3, 0x3a, 0x36, 0x36 }; + TEST_CASE("[%fast %full]", NC(FAST, FULL)); + } + + { + uint8_t res[2] = { 0x71, 0xcc }; + TEST_CASE("[1 1 1]", NC(1, NC(1, 1))); + } + + { + uint8_t res[12] = { 0x1, 0xdf, 0x2c, 0x6c, 0x8e, 0x1e, 0xf0, 0xcd, 0xea, 0xd8, 0xd8, 0x93 }; + TEST_CASE("[%fast %full %fast]", NC(FAST, NC(FULL, FAST))); + } + + { + uint8_t res[6] = { 0xa5, 0x35, 0x19, 0xf3, 0x18, 0x5 }; + TEST_CASE("[[0 0] [[0 0] 1 1] 1 1]", NC(NC(0, 0), NC(NC(NC(0, 0), NC(1, 1)), NC(1, 1)))); + } + + { + uint8_t res[14] = { 0x15, 0x17, 0xb2, 0xd0, 0x85, 0x59, 0xb8, 0x61, 0x87, 0x5f, 0x10, 0x54, 0x55, 0x5 }; + TEST_CASE("deep", NC(NC(NC(1, NC(NC(2, NC(NC(3, NC(NC(4, NC(NT(5, 6, NC(7, NC(NC(8, 0), 0))), 0)), 0)), 0)), 0)), 0), 0)); + } + + { + uint8_t inp[33] = { 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, 1 }; + uint8_t res[35] = { 0, 12, 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, 8 }; + TEST_CASE("wide", ur_coin_bytes(r, sizeof(inp), inp)); + } + + { + uint8_t inp[16] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0xa8, 0xab, 0x60, 0xef, 0x2d, 0xd, 0x0, 0x0, 0x80 }; + uint8_t res[19] = { 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x50, 0x57, 0xc1, 0xde, 0x5b, 0x1a, 0x0, 0x0, 0x0, 0x1 }; + TEST_CASE("date", ur_coin_bytes(r, sizeof(inp), inp)); + } + + ur_root_free(r); + + return ret; +} + +static int +_test_ur(void) +{ + int ret = 1; + + if ( !_test_bsw() ) { + fprintf(stderr, "ur test bsw failed\r\n"); + ret = 0; + } + + if ( !_test_bsr() ) { + fprintf(stderr, "ur test bsr failed\r\n"); + ret = 0; + } + + if ( !_test_jam_cue() ) { + fprintf(stderr, "ur test jam/cue failed\r\n"); + ret = 0; + } + + return ret; +} + +int +main(int argc, char* argv[]) +{ + if ( !_test_ur() ) { + fprintf(stderr, "ur test failed\r\n"); + return 1; + } + + fprintf(stderr, "ur ok\n"); + return 0; +} diff --git a/vere/pkg/ur/ur.h b/vere/pkg/ur/ur.h new file mode 100644 index 0000000..cfa0c47 --- /dev/null +++ b/vere/pkg/ur/ur.h @@ -0,0 +1,11 @@ +/// @file + +#ifndef UR_H +#define UR_H + +#include "bitstream.h" +#include "defs.h" +#include "hashcons.h" +#include "serial.h" + +#endif /* ifndef UR_H */ diff --git a/vere/pkg/vere/PACE b/vere/pkg/vere/PACE new file mode 100644 index 0000000..b2d1a77 --- /dev/null +++ b/vere/pkg/vere/PACE @@ -0,0 +1 @@ +once diff --git a/vere/pkg/vere/VERSION b/vere/pkg/vere/VERSION new file mode 100644 index 0000000..68209c0 --- /dev/null +++ b/vere/pkg/vere/VERSION @@ -0,0 +1 @@ +1.17 \ No newline at end of file diff --git a/vere/pkg/vere/ames_tests.c b/vere/pkg/vere/ames_tests.c new file mode 100644 index 0000000..e76622f --- /dev/null +++ b/vere/pkg/vere/ames_tests.c @@ -0,0 +1,102 @@ +/// @file + +#include "./io/ames.c" + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + u3m_init(1 << 22); + u3m_pave(c3y); +} + +/* _test_ames(): spot check ames helpers +*/ +static void +_test_ames(void) +{ + u3_lane lan_u; + lan_u.pip_w = 0x7f000001; + lan_u.por_s = 12345; + + u3_noun lan = u3_ames_encode_lane(lan_u); + u3_lane nal_u = u3_ames_decode_lane(u3k(lan)); + u3_lane nal_u2 = u3_ames_decode_lane(lan); + + if ( !(lan_u.pip_w == nal_u.pip_w && lan_u.por_s == nal_u.por_s) ) { + fprintf(stderr, "ames: lane fail (a)\r\n"); + fprintf(stderr, "pip: %d, por: %d\r\n", nal_u.pip_w, nal_u.por_s); + exit(1); + } +} + +static c3_i +_test_stun_addr_roundtrip(u3_lane* inn_u) +{ + c3_c res_c[16] = {0}; + c3_y rep_y[40]; + c3_y req_y[20] = {0}; + c3_i ret_i = 0; + + u3_stun_make_response(req_y, inn_u, rep_y); + + u3_lane lan_u; + + if ( c3n == u3_stun_find_xor_mapped_address(rep_y, sizeof(rep_y), &lan_u) ) { + fprintf(stderr, "stun: failed to find addr in response\r\n"); + ret_i = 1; + } + else { + if ( lan_u.pip_w != inn_u->pip_w ) { + fprintf(stderr, "stun: addr mismatch %x %x\r\n", lan_u.pip_w, inn_u->pip_w); + ret_i = 1; + } + + if ( lan_u.por_s != inn_u->por_s ) { + fprintf(stderr, "stun: addr mismatch %u %u\r\n", lan_u.por_s, inn_u->por_s); + ret_i = 1; + } + } + + return ret_i; +} + +static c3_i +_test_stun(void) +{ + u3_lane inn_u = { .pip_w = 0x7f000001, .por_s = 13337 }; + c3_w len_w = 256; + + while ( len_w-- ) { + if ( _test_stun_addr_roundtrip(&inn_u) ) { + return 1; + } + + inn_u.pip_w++; + inn_u.por_s++; + } + + return 0; +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + _test_ames(); + + if ( _test_stun() ) { + fprintf(stderr, "ames: stun tests failed\r\n"); + } + + // GC + // + u3m_grab(u3_none); + + fprintf(stderr, "ames okeedokee\n"); + return 0; +} diff --git a/vere/pkg/vere/arena.h b/vere/pkg/vere/arena.h new file mode 100644 index 0000000..58d6b05 --- /dev/null +++ b/vere/pkg/vere/arena.h @@ -0,0 +1,47 @@ +#ifndef VERE_ARENA_H +#define VERE_ARENA_H + +#include +#include +#include +#include +#include + +typedef struct { + char* dat; + char* beg; + char* end; +} arena; + +#define new(a, t, n) (t*)arena_alloc(a, sizeof(t), _Alignof(t), n) + +static void* arena_alloc(arena* a, ptrdiff_t size, ptrdiff_t align, ptrdiff_t count) +{ + ptrdiff_t padding = -(uintptr_t)a->beg & (align - 1); + ptrdiff_t available = a->end - a->beg - padding; + if (available < 0 || count > available/size) { + abort(); + } + void *p = a->beg + padding; + a->beg += padding + count*size; + return p; + // return memset(p, 0, count*size); +} + +static arena arena_create(ptrdiff_t cap) +{ + arena a = {0}; + a.dat = (char*)malloc(cap); + a.beg = a.dat; + a.end = a.beg ? a.beg+cap : 0; + return a; +} + + +static void arena_free(arena* a) +{ + free(a->dat); + a = (arena*)0; +} + +#endif diff --git a/vere/pkg/vere/auto.c b/vere/pkg/vere/auto.c new file mode 100644 index 0000000..0083e39 --- /dev/null +++ b/vere/pkg/vere/auto.c @@ -0,0 +1,445 @@ +/// @file + +#include "vere.h" + +#include "noun.h" + +/* u3_auto_plan(): enqueue an ovum. +*/ +u3_ovum* +u3_auto_plan(u3_auto* car_u, u3_ovum *egg_u) +{ + egg_u->car_u = car_u; + + if ( !car_u->ent_u ) { + u3_assert(!car_u->ext_u); + + egg_u->pre_u = egg_u->nex_u = 0; + car_u->ent_u = car_u->ext_u = egg_u; + car_u->dep_w = 1; + } + // enqueue at driver entry (back of the line) + // + // [pre_u] points towards [ext_u] (back in time) + // [nex_u] points towards [ent_u] (forward in time) + // + else { + egg_u->nex_u = 0; + egg_u->pre_u = car_u->ent_u; + + car_u->ent_u->nex_u = egg_u; + car_u->ent_u = egg_u; + car_u->dep_w++; + } + + u3_pier_spin(car_u->pir_u); + + return egg_u; +} + +/* u3_auto_redo(): retry an ovum. +*/ +u3_ovum* +u3_auto_redo(u3_auto* car_u, u3_ovum *egg_u) +{ + u3_assert( egg_u->car_u == car_u ); + + egg_u->try_w++; + + if ( !car_u->ent_u ) { + u3_assert(!car_u->ext_u); + + egg_u->pre_u = egg_u->nex_u = 0; + car_u->ent_u = car_u->ext_u = egg_u; + car_u->dep_w = 1; + } + // enqueue at driver exit (front of the line) + // + else { + egg_u->nex_u = car_u->ext_u; + egg_u->pre_u = 0; + + car_u->ext_u->pre_u = egg_u; + car_u->ext_u = egg_u; + car_u->dep_w++; + } + + u3_pier_spin(car_u->pir_u); + + return egg_u; +} + +/* u3_auto_peer(): subscribe to updates. +*/ +void +u3_auto_peer(u3_ovum* egg_u, + void* ptr_v, + u3_ovum_peer news_f, + u3_ovum_bail bail_f) +{ + egg_u->ptr_v = ptr_v; + egg_u->cb_u.news_f = news_f; + egg_u->cb_u.bail_f = bail_f; +} + +/* u3_auto_bail_slog(): print a bail notification. +*/ +void +u3_auto_bail_slog(u3_ovum* egg_u, u3_noun lud) +{ + c3_c* car_c = u3r_string(egg_u->car_u->nam_m); + u3_noun dul = lud; + c3_w len_w = 1; + + while ( u3_nul != dul ) { + u3l_log("%s: bail %u", car_c, len_w++); + u3_pier_punt_goof(car_c, u3k(u3h(dul))); + + dul = u3t(dul); + } + + u3_pier_punt_ovum(car_c, u3k(egg_u->wir), u3k(u3h(egg_u->cad))); + + u3z(lud); + c3_free(car_c); +} + +/* u3_auto_bail(): notify driver that [egg_u] crashed. +*/ +void +u3_auto_bail(u3_ovum* egg_u, u3_noun lud) +{ + // optional + // + if ( egg_u->cb_u.bail_f ) { + c3_l cod_l = u3a_lush(egg_u->car_u->nam_m); + egg_u->cb_u.bail_f(egg_u, lud); + u3a_lop(cod_l); + } + else { + u3_auto_bail_slog(egg_u, lud); + u3_ovum_free(egg_u); + } +} + +/* _auto_news(): notify driver of ovum status +*/ +static void +_auto_news(u3_ovum* egg_u, u3_ovum_news new_e) +{ + // optional + // + if ( egg_u->cb_u.news_f ) { + c3_l cod_l = u3a_lush(egg_u->car_u->nam_m); + egg_u->cb_u.news_f(egg_u, new_e); + u3a_lop(cod_l); + } +} + +/* u3_auto_done(): notify driver of [egg_u] completion. +*/ +void +u3_auto_done(u3_ovum* egg_u) +{ + _auto_news(egg_u, u3_ovum_done); + u3_ovum_free(egg_u); +} + +/* u3_auto_work(): notify driver of [egg_u] commencement. +*/ +void +u3_auto_work(u3_ovum* egg_u) +{ + _auto_news(egg_u, u3_ovum_work); +} + +/* u3_auto_drop(): dequeue and dispose an ovum. +*/ +void +u3_auto_drop(u3_auto* car_u, u3_ovum* egg_u) +{ + { + u3_assert( egg_u->car_u ); + + // the previous ovum (or [ext_u]) will point to our next ovum + // + if ( !egg_u->pre_u ) { + egg_u->car_u->ext_u = egg_u->nex_u; + } + else { + egg_u->pre_u->nex_u = egg_u->nex_u; + } + + // the next ovum (or [ent_u]) will point to our previous ovum + // + if ( !egg_u->nex_u ) { + egg_u->car_u->ent_u = egg_u->pre_u; + } + else { + egg_u->nex_u->pre_u = egg_u->pre_u; + } + + egg_u->car_u->dep_w--; + + egg_u->nex_u = egg_u->pre_u = 0; + } + + // notify driver if not self-caused + // + if ( egg_u->car_u && ( car_u != egg_u->car_u ) ) { + _auto_news(egg_u, u3_ovum_drop); + } + + u3_ovum_free(egg_u); +} + +/* u3_auto_next(): select an ovum, dequeue and construct. +*/ +u3_ovum* +u3_auto_next(u3_auto* car_u, u3_noun* ovo) +{ + while ( car_u ) { + if ( !car_u->ext_u ) { + car_u = car_u->nex_u; + continue; + } + else { + u3_ovum* egg_u = car_u->ext_u; + + u3_assert( !egg_u->pre_u ); + + if ( egg_u->nex_u ) { + egg_u->nex_u->pre_u = 0; + car_u->ext_u = egg_u->nex_u; + car_u->dep_w--; + } + else { + car_u->ent_u = car_u->ext_u = 0; + car_u->dep_w = 0; + } + + egg_u->nex_u = 0; + + u3_auto_work(egg_u); + + *ovo = u3nc(u3nc(u3k(egg_u->tar), u3k(egg_u->wir)), + u3k(egg_u->cad)); + + return egg_u; + } + } + + return 0; +} + +/* _auto_kick_lost(): print details of unroutable effect. RETAIN +*/ +static void +_auto_kick_lost(u3_noun pax, u3_noun fav) +{ + u3_noun tox = u3do("spat", u3k(pax)); + c3_c* tag_c = u3r_string(u3h(fav)); + c3_c* pax_c = u3r_string(tox); + + u3l_log("kick: lost %%%s on %s", tag_c, pax_c); + + c3_free(pax_c); + c3_free(tag_c); + u3z(tox); +} + +/* _auto_kick(): kick with leak label. +*/ +static c3_o +_auto_kick(u3_auto* car_u, u3_noun pax, u3_noun fav) +{ + c3_l cod_l = u3a_lush(car_u->nam_m); + c3_o kik_o = car_u->io.kick_f(car_u, pax, fav); + u3a_lop(cod_l); + return kik_o; +} + +/* u3_auto_kick(): route effects to a linked driver. RETAIN +*/ +void +u3_auto_kick(u3_auto* car_u, u3_noun act) +{ + u3_auto* rac_u = car_u; + u3_noun fec, pax, wir, cad; + + while ( u3_nul != act ) { + fec = u3h(act); + u3x_cell(fec, &pax, &cad); + + // XX temporary backwards compatibility, remove + // + if ( c3n == u3r_p(pax, u3_blip, &wir) ) { + wir = pax; + } + + while ( c3n == _auto_kick(car_u, u3k(wir), u3k(cad)) ) { + if ( car_u->nex_u ) { + car_u = car_u->nex_u; + continue; + } + else { + _auto_kick_lost(wir, cad); + break; + } + } + + car_u = rac_u; + act = u3t(act); + } +} + +/* u3_auto_live(): check if all drivers are live. +*/ +c3_o +u3_auto_live(u3_auto* car_u) +{ + while ( car_u ) { + if ( c3n == car_u->liv_o ) { + return c3n; + } + + car_u = car_u->nex_u; + } + + return c3y; +} + +/* u3_auto_talk(): start all drivers. +*/ +void +u3_auto_talk(u3_auto* car_u) +{ + c3_l cod_l; + + while ( car_u ) { + cod_l = u3a_lush(car_u->nam_m); + car_u->io.talk_f(car_u); + u3a_lop(cod_l); + car_u = car_u->nex_u; + } +} + +/* u3_auto_exit(): close all drivers. +*/ +void +u3_auto_exit(u3_auto* car_u) +{ + u3_auto* nex_u; + c3_l cod_l; + + while ( car_u ) { + nex_u = car_u->nex_u; + + { + u3_ovum *egg_u = car_u->ext_u; + u3_ovum *xen_u; + + while ( egg_u ) { + xen_u = egg_u->nex_u; + u3_ovum_free(egg_u); + egg_u = xen_u; + } + } + + cod_l = u3a_lush(car_u->nam_m); + car_u->io.exit_f(car_u); + u3a_lop(cod_l); + + car_u = nex_u; + } +} + +/* u3_auto_info(): status info as a (list mass), all drivers. +*/ +u3_noun +u3_auto_info(u3_auto* car_u) +{ + u3_noun lit = u3_nul; + + while ( car_u ) { + if ( car_u->io.info_f ) { + lit = u3nc(u3_pier_mass(car_u->nam_m, car_u->io.info_f(car_u)), lit); + } + car_u = car_u->nex_u; + } + return u3kb_flop(lit); +} + +/* u3_auto_slog(): print status info. +*/ +void +u3_auto_slog(u3_auto* car_u) +{ + u3_auto* nex_u; + + u3l_log(" drivers:"); + + while ( car_u ) { + nex_u = car_u->nex_u; + + u3l_log(" %.*s: live=%s, queue=%u", + u3r_met(3, car_u->nam_m), + (c3_c*)&car_u->nam_m, + ( c3y == car_u->liv_o ) ? "&" : "|", + car_u->dep_w); + + // XX details + // + if ( car_u->io.slog_f ) { + c3_l cod_l = u3a_lush(car_u->nam_m); + car_u->io.slog_f(car_u); + u3a_lop(cod_l); + } + + car_u = nex_u; + } +} + +/* _auto_link(): validate and link initalized [car_u] +*/ +static u3_auto* +_auto_link(u3_auto* car_u, u3_pier* pir_u, u3_auto* nex_u) +{ + // skip null drivers + // + if ( !car_u ) { + return nex_u; + } + + // assert that io callbacks are present (info_f and slog_f are optional) + // + u3_assert( car_u->io.talk_f ); + u3_assert( car_u->io.kick_f ); + u3_assert( car_u->io.exit_f ); + + car_u->pir_u = pir_u; + car_u->nex_u = nex_u; + return car_u; +} + +/* u3_auto_init(): initialize all drivers. +*/ +u3_auto* +u3_auto_init(u3_pier* pir_u) +{ + u3_auto* car_u = 0; + + car_u = _auto_link(u3_hind_io_init(pir_u), pir_u, car_u); + car_u = _auto_link(u3_behn_io_init(pir_u), pir_u, car_u); + car_u = _auto_link(u3_conn_io_init(pir_u), pir_u, car_u); + car_u = _auto_link(u3_lick_io_init(pir_u), pir_u, car_u); + car_u = _auto_link(u3_mesa_io_init(pir_u), pir_u, car_u); + car_u = _auto_link(u3_ames_io_init(pir_u), pir_u, car_u); + car_u = _auto_link(u3_http_io_init(pir_u), pir_u, car_u); + car_u = _auto_link(u3_cttp_io_init(pir_u), pir_u, car_u); + car_u = _auto_link(u3_unix_io_init(pir_u), pir_u, car_u); + car_u = _auto_link(u3_term_io_init(pir_u), pir_u, car_u); + car_u = _auto_link(u3_fore_io_init(pir_u), pir_u, car_u); + + return car_u; +} diff --git a/vere/pkg/vere/benchmarks.c b/vere/pkg/vere/benchmarks.c new file mode 100644 index 0000000..9898217 --- /dev/null +++ b/vere/pkg/vere/benchmarks.c @@ -0,0 +1,465 @@ +/// @file + +#include "noun.h" +#include "jets/q.h" +#include "ur/ur.h" +#include "vere.h" + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + u3m_boot_lite(1 << 24); +} + +/* _ames_writ_ex(): |hi packet from fake ~zod to fake ~nec +*/ +static u3_noun +_ames_writ_ex(void) +{ + c3_y bod_y[63] = { + 0x30, 0x90, 0x2d, 0x0, 0x0, 0x0, 0x1, 0x0, 0x9, 0xc0, 0xd0, + 0x0, 0x4, 0x40, 0x30, 0xf4, 0xa, 0x3d, 0x45, 0x86, 0x66, 0x2c, + 0x2, 0x38, 0xf8, 0x72, 0xa3, 0x9, 0xf6, 0x6, 0xf3, 0x0, 0xbe, + 0x67, 0x61, 0x49, 0x50, 0x4, 0x3c, 0x13, 0xb2, 0x96, 0x42, 0x1b, + 0x62, 0xac, 0x97, 0xff, 0x24, 0xeb, 0x69, 0x1b, 0xb2, 0x60, 0x72, + 0xa, 0x53, 0xdf, 0xe8, 0x8a, 0x9c, 0x6f, 0xb3 + }; + u3_noun lan = u3nc(0, 1); + u3_noun cad = u3nt(c3__send, lan, u3i_bytes(sizeof(bod_y), bod_y)); + u3_noun wir = u3nt(c3__newt, 0x1234, u3_nul); + u3_noun ovo = u3nc(u3nc(u3_blip, wir), cad); + u3_noun wen; + + { + struct timeval tim_u; + gettimeofday(&tim_u, 0); + wen = u3_time_in_tv(&tim_u); + } + + return u3nt(c3__work, 0, u3nc(wen, ovo)); +} + +static void +_jam_bench(void) +{ + struct timeval b4, f2, d0; + c3_w mil_w, i_w, max_w = 10000; + u3_noun wit = _ames_writ_ex(); + + fprintf(stderr, "\r\njam microbenchmark:\r\n"); + + { + gettimeofday(&b4, 0); + + { + u3i_slab sab_u; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + u3s_jam_fib(&sab_u, wit); + u3i_slab_free(&sab_u); + } + } + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " jam og: %u ms\r\n", mil_w); + } + + { + gettimeofday(&b4, 0); + + { + c3_d len_d; + c3_y* byt_y; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + u3s_jam_xeno(wit, &len_d, &byt_y); + c3_free(byt_y); + } + } + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " jam xeno: %u ms\r\n", mil_w); + } + + while ( 1 ) { + ur_root_t* rot_u = ur_root_init(); + c3_d len_d; + c3_y* byt_y; + ur_nref ref; + + u3s_jam_xeno(wit, &len_d, &byt_y); + if ( ur_cue_good != ur_cue(rot_u, len_d, byt_y, &ref) ) { + fprintf(stderr, " jam bench: cue failed wtf\r\n"); + break; + } + + c3_free(byt_y); + + { + gettimeofday(&b4, 0); + + for ( i_w = 0; i_w < max_w; i_w++ ) { + ur_jam(rot_u, ref, &len_d, &byt_y); + c3_free(byt_y); + } + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " jam cons: %u ms\r\n", mil_w); + } + + { + gettimeofday(&b4, 0); + + { + ur_jam_t *jam_u = ur_jam_init(rot_u); + c3_d len_d; + c3_y* byt_y; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + ur_jam_with(jam_u, ref, &len_d, &byt_y); + c3_free(byt_y); + } + + ur_jam_done(jam_u); + } + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " jam cons with: %u ms\r\n", mil_w); + } + + ur_root_free(rot_u); + break; + } + + u3z(wit); +} + +static void +_cue_bench(void) +{ + struct timeval b4, f2, d0; + c3_w mil_w, i_w, max_w = 20000; + u3_atom vat = u3ke_jam(_ames_writ_ex()); + + fprintf(stderr, "\r\ncue microbenchmark:\r\n"); + + { + gettimeofday(&b4, 0); + + for ( i_w = 0; i_w < max_w; i_w++ ) { + u3z(u3s_cue(vat)); + } + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " cue og: %u ms\r\n", mil_w); + } + + { + gettimeofday(&b4, 0); + + for ( i_w = 0; i_w < max_w; i_w++ ) { + u3z(u3s_cue_atom(vat)); + } + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " cue atom: %u ms\r\n", mil_w); + } + + { + gettimeofday(&b4, 0); + + { + c3_w len_w = u3r_met(3, vat); + // XX assumes little-endian + // + c3_y* byt_y = ( c3y == u3a_is_cat(vat) ) + ? (c3_y*)&vat + : (c3_y*)((u3a_atom*)u3a_to_ptr(vat))->buf_w; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + u3z(u3s_cue_xeno(len_w, byt_y)); + } + } + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " cue xeno: %u ms\r\n", mil_w); + } + + { + gettimeofday(&b4, 0); + + { + u3_cue_xeno* sil_u = u3s_cue_xeno_init(); + + c3_w len_w = u3r_met(3, vat); + // XX assumes little-endian + // + c3_y* byt_y = ( c3y == u3a_is_cat(vat) ) + ? (c3_y*)&vat + : (c3_y*)((u3a_atom*)u3a_to_ptr(vat))->buf_w; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + u3z(u3s_cue_xeno_with(sil_u, len_w, byt_y)); + } + + u3s_cue_xeno_done(sil_u); + } + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " cue xeno with: %u ms\r\n", mil_w); + } + + { + gettimeofday(&b4, 0); + + { + c3_w len_w = u3r_met(3, vat); + // XX assumes little-endian + // + c3_y* byt_y = ( c3y == u3a_is_cat(vat) ) + ? (c3_y*)&vat + : (c3_y*)((u3a_atom*)u3a_to_ptr(vat))->buf_w; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + ur_cue_test(len_w, byt_y); + } + } + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " cue test: %u ms\r\n", mil_w); + } + + { + gettimeofday(&b4, 0); + + { + ur_cue_test_t *t = ur_cue_test_init(); + + c3_w len_w = u3r_met(3, vat); + // XX assumes little-endian + // + c3_y* byt_y = ( c3y == u3a_is_cat(vat) ) + ? (c3_y*)&vat + : (c3_y*)((u3a_atom*)u3a_to_ptr(vat))->buf_w; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + ur_cue_test_with(t, len_w, byt_y); + } + + ur_cue_test_done(t); + } + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " cue test with: %u ms\r\n", mil_w); + } + + { + gettimeofday(&b4, 0); + + { + ur_root_t* rot_u = ur_root_init(); + ur_nref ref; + c3_w len_w = u3r_met(3, vat); + // XX assumes little-endian + // + c3_y* byt_y = ( c3y == u3a_is_cat(vat) ) + ? (c3_y*)&vat + : (c3_y*)((u3a_atom*)u3a_to_ptr(vat))->buf_w; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + ur_cue(rot_u, len_w, byt_y, &ref); + } + + ur_root_free(rot_u); + } + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " cue cons: %u ms\r\n", mil_w); + } + + { + gettimeofday(&b4, 0); + + { + ur_root_t* rot_u; + ur_nref ref; + c3_w len_w = u3r_met(3, vat); + // XX assumes little-endian + // + c3_y* byt_y = ( c3y == u3a_is_cat(vat) ) + ? (c3_y*)&vat + : (c3_y*)((u3a_atom*)u3a_to_ptr(vat))->buf_w; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + rot_u = ur_root_init(); + ur_cue(rot_u, len_w, byt_y, &ref); + ur_root_free(rot_u); + } + } + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " cue re-cons: %u ms\r\n", mil_w); + } + + u3z(vat); +} + +static u3_noun +_cue_loop(u3_atom a) +{ + c3_w i_w, max_w = 20000; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + u3z(u3s_cue(a)); + } + + return u3_blip; +} + +static u3_noun +_cue_atom_loop(u3_atom a) +{ + c3_w i_w, max_w = 20000; + + for ( i_w = 0; i_w < max_w; i_w++ ) { + u3z(u3s_cue_atom(a)); + } + + return u3_blip; +} + +static void +_cue_soft_bench(void) +{ + struct timeval b4, f2, d0; + u3_atom vat = u3ke_jam(_ames_writ_ex()); + c3_w mil_w; + + fprintf(stderr, "\r\ncue virtual microbenchmark:\r\n"); + + { + gettimeofday(&b4, 0); + + u3z(u3m_soft(0, _cue_loop, u3k(vat))); + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " cue virtual og: %u ms\r\n", mil_w); + } + + { + gettimeofday(&b4, 0); + + u3z(u3m_soft(0, _cue_atom_loop, u3k(vat))); + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " cue virtual atom: %u ms\r\n", mil_w); + } + + u3z(vat); +} + +static void +_edit_bench_impl(c3_w max_w) +{ + u3_assert( max_w && (c3y == u3a_is_cat(max_w)) ); + + c3_w* axe_w = c3_calloc(((max_w + 31) >> 5) << 2); + c3_w bit_w; + u3_noun lit = u3qb_reap(max_w, 1); + u3_noun axe; + + axe_w[0] = bit_w = 2; + + do { + axe = u3i_words((bit_w + 31) >> 5, axe_w); + lit = u3i_edit(lit, axe, 2); + u3z(axe); + + axe_w[bit_w >> 5] |= (c3_w)1 << (bit_w & 31); + bit_w++; + } + while ( bit_w <= max_w ); + + u3z(lit); + c3_free(axe_w); +} + +static void +_edit_bench(void) +{ + struct timeval b4, f2, d0; + c3_w mil_w; + + fprintf(stderr, "\r\nopcode 10 microbenchmark:\r\n"); + + { + gettimeofday(&b4, 0); + + _edit_bench_impl(1000); + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " opcode 10 1k list: %u ms\r\n", mil_w); + } + + { + gettimeofday(&b4, 0); + + _edit_bench_impl(10000); + + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + mil_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + fprintf(stderr, " opcode 10 10k list: %u ms\r\n", mil_w); + } +} + +/* main(): run all benchmarks +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + _jam_bench(); + _cue_bench(); + _cue_soft_bench(); + _edit_bench(); + + // GC + // + u3m_grab(u3_none); + + return 0; +} diff --git a/vere/pkg/vere/boot_tests.c b/vere/pkg/vere/boot_tests.c new file mode 100644 index 0000000..d9728d8 --- /dev/null +++ b/vere/pkg/vere/boot_tests.c @@ -0,0 +1,70 @@ +/// @file + +#include "ivory.h" +#include "noun.h" +#include "ur/ur.h" +#include "vere.h" + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + c3_d len_d = u3_Ivory_pill_len; + c3_y* byt_y = u3_Ivory_pill; + u3_cue_xeno* sil_u; + u3_weak pil; + + u3C.wag_w |= u3o_hashless; + u3m_boot_lite(1 << 26); + sil_u = u3s_cue_xeno_init_with(ur_fib27, ur_fib28); + if ( u3_none == (pil = u3s_cue_xeno_with(sil_u, len_d, byt_y)) ) { + printf("*** fail _setup 1\n"); + exit(1); + } + u3s_cue_xeno_done(sil_u); + if ( c3n == u3v_boot_lite(pil) ) { + printf("*** fail _setup 2\n"); + exit(1); + } +} + +/* _test_lily(): test small noun parsing. +*/ +static void +_test_lily() +{ + c3_l lit_l; + c3_w big_w[] = {0, 0, 1}; + u3_noun big = u3i_words(3, big_w); + u3_noun cod = u3dc("scot", c3__uv, big); + + if ( c3y == u3v_lily(c3__uv, cod, &lit_l) ) { + printf("*** fail _test_lily-1\n"); + exit(1); + } + cod = u3dc("scot", c3__ud, 0x7fffffff); + if ( (c3n == u3v_lily(c3__ud, cod, &lit_l)) || + (0x7fffffff != lit_l) ) { + printf("*** fail _test_lily-2a\n"); + exit(1); + } + cod = u3dc("scot", c3__ux, u3i_word(0x80000000)); + if ( c3y == u3v_lily(c3__ux, cod, &lit_l) ) { + printf("*** fail _test_lily-2b\n"); + exit(1); + } +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + _test_lily(); + + fprintf(stderr, "test boot: ok\n"); + return 0; +} diff --git a/vere/pkg/vere/build.zig b/vere/pkg/vere/build.zig new file mode 100644 index 0000000..6832a32 --- /dev/null +++ b/vere/pkg/vere/build.zig @@ -0,0 +1,264 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const t = target.result; + + const copts: []const []const u8 = + b.option([]const []const u8, "copt", "") orelse &.{}; + const pace = b.option([]const u8, "pace", "") orelse "live"; + // @panic("Missing required option: pace"); + const version = b.option([]const u8, "version", "") orelse "3.5"; + // @panic("Missing required option: version"); + + const pkg_vere = b.addStaticLibrary(.{ + .name = "vere", + .target = target, + .optimize = optimize, + }); + + if (target.result.os.tag.isDarwin() and !target.query.isNative()) { + const macos_sdk = b.lazyDependency("macos_sdk", .{ + .target = target, + .optimize = optimize, + }); + if (macos_sdk != null) { + pkg_vere.addSystemIncludePath(macos_sdk.?.path("usr/include")); + pkg_vere.addLibraryPath(macos_sdk.?.path("usr/lib")); + pkg_vere.addFrameworkPath(macos_sdk.?.path("System/Library/Frameworks")); + } + } + + const pkg_c3 = b.dependency("pkg_c3", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_ent = b.dependency("pkg_ent", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_ur = b.dependency("pkg_ur", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_noun = b.dependency("pkg_noun", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const pkg_past = b.dependency("pkg_past", .{ + .target = target, + .optimize = optimize, + .copt = copts, + }); + + const avahi = b.dependency("avahi", .{ + .target = target, + .optimize = optimize, + }); + + const curl = b.dependency("curl", .{ + .target = target, + .optimize = optimize, + }); + + const gmp = b.dependency("gmp", .{ + .target = target, + .optimize = optimize, + }); + + const h2o = b.dependency("h2o", .{ + .target = target, + .optimize = optimize, + }); + + const libuv = b.dependency("libuv", .{ + .target = target, + .optimize = optimize, + }); + + const lmdb = b.dependency("lmdb", .{ + .target = target, + .optimize = optimize, + }); + + const natpmp = b.dependency("natpmp", .{ + .target = target, + .optimize = optimize, + }); + + const openssl = b.dependency("openssl", .{ + .target = target, + .optimize = optimize, + }); + + const urcrypt = b.dependency("urcrypt", .{ + .target = target, + .optimize = optimize, + }); + + const zlib = b.dependency("zlib", .{ + .target = target, + .optimize = optimize, + }); + + const pace_h = b.addWriteFile("pace.h", blk: { + var output = std.ArrayList(u8).init(b.allocator); + defer output.deinit(); + + try output.appendSlice(b.fmt( + \\#ifndef URBIT_PACE_H + \\#define URBIT_PACE_H + \\#define U3_VERE_PACE "{s}" + \\#endif + \\ + , .{pace})); + + break :blk try output.toOwnedSlice(); + }); + + const version_h = b.addWriteFile("version.h", blk: { + var output = std.ArrayList(u8).init(b.allocator); + defer output.deinit(); + + try output.appendSlice(b.fmt( + \\#ifndef URBIT_VERSION_H + \\#define URBIT_VERSION_H + \\#define URBIT_VERSION "{s}" + \\#endif + \\ + , .{version})); + + break :blk try output.toOwnedSlice(); + }); + + pkg_vere.addIncludePath(pace_h.getDirectory()); + pkg_vere.addIncludePath(version_h.getDirectory()); + pkg_vere.addIncludePath(b.path("")); + pkg_vere.addIncludePath(b.path("ivory")); + pkg_vere.addIncludePath(b.path("ca_bundle")); + + if (t.os.tag == .linux) { + pkg_vere.linkLibrary(avahi.artifact("dns-sd")); + } + pkg_vere.linkLibrary(natpmp.artifact("natpmp")); + pkg_vere.linkLibrary(curl.artifact("curl")); + + pkg_vere.linkLibrary(gmp.artifact("gmp")); + + pkg_vere.linkLibrary(h2o.artifact("h2o")); + pkg_vere.linkLibrary(libuv.artifact("libuv")); + pkg_vere.linkLibrary(lmdb.artifact("lmdb")); + pkg_vere.linkLibrary(openssl.artifact("ssl")); + pkg_vere.linkLibrary(urcrypt.artifact("urcrypt")); + pkg_vere.linkLibrary(zlib.artifact("z")); + pkg_vere.linkLibrary(pkg_c3.artifact("c3")); + pkg_vere.linkLibrary(pkg_ent.artifact("ent")); + pkg_vere.linkLibrary(pkg_ur.artifact("ur")); + pkg_vere.linkLibrary(pkg_noun.artifact("noun")); + pkg_vere.linkLibrary(pkg_past.artifact("past")); + pkg_vere.linkLibC(); + + var files = std.ArrayList([]const u8).init(b.allocator); + defer files.deinit(); + try files.appendSlice(&c_source_files); + if (t.os.tag == .macos) { + try files.appendSlice(&.{ + "platform/darwin/daemon.c", + "platform/darwin/ptty.c", + "platform/darwin/mach.c", + }); + } + if (t.os.tag == .linux) { + try files.appendSlice(&.{ + "platform/linux/daemon.c", + "platform/linux/ptty.c", + }); + } + + if (t.os.tag == .windows) { + pkg_vere.addIncludePath(b.path("platform/windows")); + try files.appendSlice(&.{ + "platform/windows/ptty.c", + "platform/windows/ctrlc.c", + "platform/windows/daemon.c", + }); + } + + var flags = std.ArrayList([]const u8).init(b.allocator); + defer flags.deinit(); + try flags.appendSlice(&.{ + "-std=gnu23", + }); + try flags.appendSlice(copts); + + pkg_vere.addCSourceFiles(.{ + .root = b.path(""), + .files = files.items, + .flags = flags.items, + }); + + for (install_headers) |h| pkg_vere.installHeader(b.path(h), h); + pkg_vere.installHeader(b.path("ivory/ivory.h"), "ivory.h"); + pkg_vere.installHeader(b.path("ca_bundle/ca_bundle.h"), "ca_bundle.h"); + pkg_vere.installHeader(pace_h.getDirectory().path(b, "pace.h"), "pace.h"); + pkg_vere.installHeader(version_h.getDirectory().path(b, "version.h"), "version.h"); + + b.installArtifact(pkg_vere); +} + +const c_source_files = [_][]const u8{ + "auto.c", + "ca_bundle/ca_bundle.c", + "dawn.c", + "db/lmdb.c", + "disk.c", + "foil.c", + "io/ames.c", + "io/ames/stun.c", + "io/behn.c", + "io/conn.c", + "io/cttp.c", + "io/fore.c", + "io/hind.c", + "io/http.c", + "io/lick.c", + "io/lss.c", + "io/mesa.c", + "io/mesa/bitset.c", + "io/mesa/pact.c", + "io/term.c", + "io/unix.c", + "ivory/ivory.c", + "king.c", + "lord.c", + "mars.c", + "mdns.c", + "melt.c", + "newt.c", + "pier.c", + "time.c", + "ward.c", +}; + +const install_headers = [_][]const u8{ + "db/lmdb.h", + "dns_sd.h", + "io/ames/stun.h", + "io/lss.h", + "io/mesa/bitset.h", + "io/mesa/mesa.h", + "io/serial.h", + "arena.h", + "mars.h", + "mdns.h", + "vere.h", +}; diff --git a/vere/pkg/vere/build.zig.zon b/vere/pkg/vere/build.zig.zon new file mode 100644 index 0000000..2d1b2ff --- /dev/null +++ b/vere/pkg/vere/build.zig.zon @@ -0,0 +1,61 @@ +.{ + .name = .vere, + .fingerprint = 0x1dda7349d562b3e, + .version = "0.0.1", + .dependencies = .{ + .macos_sdk = .{ + .url = "https://github.com/joseluisq/macosx-sdks/releases/download/14.5/MacOSX14.5.sdk.tar.xz", + .hash = "N-V-__8AAKtK4FMzqcFsY_ZrpMg9bGH0h7BqZDXtVyAerMtM", + .lazy = true, + }, + .pkg_c3 = .{ + .path = "../c3", + }, + .pkg_ent = .{ + .path = "../ent", + }, + .pkg_ur = .{ + .path = "../ur", + }, + .pkg_noun = .{ + .path = "../noun", + }, + .pkg_past = .{ + .path = "../past", + }, + .avahi = .{ + .path = "../../ext/avahi", + }, + .curl = .{ + .path = "../../ext/curl", + }, + .gmp = .{ + .path = "../../ext/gmp", + }, + .h2o = .{ + .path = "../../ext/h2o", + }, + .libuv = .{ + .path = "../../ext/libuv", + }, + .lmdb = .{ + .path = "../../ext/lmdb", + }, + .natpmp = .{ + .path = "../../ext/natpmp", + }, + .openssl = .{ + .path = "../../ext/openssl", + }, + .urcrypt = .{ + .path = "../../ext/urcrypt", + }, + .zlib = .{ + .url = "https://github.com/allyourcodebase/zlib/archive/61e7df7e996ec5a5f13a653db3c419adb340d6ef.tar.gz", + .hash = "zlib-1.3.1-ZZQ7lbYMAAB1hTSOKSXAKAgHsfDcyWNH_37ojw5WSpgR", + }, + }, + .paths = .{ + "", + }, +} diff --git a/vere/pkg/vere/ca_bundle/ca_bundle.c b/vere/pkg/vere/ca_bundle/ca_bundle.c new file mode 100644 index 0000000..1278f70 --- /dev/null +++ b/vere/pkg/vere/ca_bundle/ca_bundle.c @@ -0,0 +1,4 @@ +#include "ca_bundle.h" +unsigned char include_ca_bundle_crt[] = { + 0x23, 0x23, 0x0a, 0x23, 0x23, 0x20, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x43, 0x41, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x0a, 0x23, 0x23, 0x0a, 0x23, 0x23, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x4d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c, 0x61, 0x20, 0x61, 0x73, 0x20, 0x6f, 0x66, 0x3a, 0x20, 0x54, 0x75, 0x65, 0x20, 0x4a, 0x75, 0x6c, 0x20, 0x20, 0x32, 0x20, 0x30, 0x33, 0x3a, 0x31, 0x32, 0x3a, 0x30, 0x34, 0x20, 0x32, 0x30, 0x32, 0x34, 0x20, 0x47, 0x4d, 0x54, 0x0a, 0x23, 0x23, 0x0a, 0x23, 0x23, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x58, 0x2e, 0x35, 0x30, 0x39, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x0a, 0x23, 0x23, 0x20, 0x28, 0x43, 0x41, 0x29, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x73, 0x65, 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x4d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c, 0x61, 0x27, 0x73, 0x20, 0x72, 0x6f, 0x6f, 0x74, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x0a, 0x23, 0x23, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x63, 0x65, 0x72, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x74, 0x78, 0x74, 0x29, 0x2e, 0x20, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c, 0x61, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x74, 0x72, 0x65, 0x65, 0x3a, 0x0a, 0x23, 0x23, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x68, 0x67, 0x2e, 0x6d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x6d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c, 0x61, 0x2d, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x2f, 0x72, 0x61, 0x77, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2f, 0x6e, 0x73, 0x73, 0x2f, 0x6c, 0x69, 0x62, 0x2f, 0x63, 0x6b, 0x66, 0x77, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x73, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x74, 0x78, 0x74, 0x0a, 0x23, 0x23, 0x0a, 0x23, 0x23, 0x20, 0x49, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x50, 0x45, 0x4d, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x0a, 0x23, 0x23, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x63, 0x75, 0x72, 0x6c, 0x20, 0x2f, 0x20, 0x6c, 0x69, 0x62, 0x63, 0x75, 0x72, 0x6c, 0x20, 0x2f, 0x20, 0x70, 0x68, 0x70, 0x5f, 0x63, 0x75, 0x72, 0x6c, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x0a, 0x23, 0x23, 0x20, 0x61, 0x6e, 0x20, 0x41, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2b, 0x6d, 0x6f, 0x64, 0x5f, 0x73, 0x73, 0x6c, 0x20, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x23, 0x23, 0x20, 0x4a, 0x75, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x43, 0x41, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x2e, 0x0a, 0x23, 0x23, 0x0a, 0x23, 0x23, 0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x6f, 0x6e, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6d, 0x6b, 0x2d, 0x63, 0x61, 0x2d, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x70, 0x6c, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x2e, 0x32, 0x39, 0x2e, 0x0a, 0x23, 0x23, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x3a, 0x20, 0x34, 0x35, 0x36, 0x66, 0x66, 0x30, 0x39, 0x35, 0x64, 0x64, 0x65, 0x36, 0x64, 0x64, 0x37, 0x33, 0x33, 0x35, 0x34, 0x63, 0x35, 0x63, 0x32, 0x38, 0x63, 0x37, 0x33, 0x64, 0x39, 0x63, 0x30, 0x36, 0x66, 0x35, 0x33, 0x62, 0x36, 0x31, 0x61, 0x38, 0x30, 0x33, 0x39, 0x36, 0x33, 0x34, 0x31, 0x34, 0x63, 0x62, 0x39, 0x31, 0x61, 0x31, 0x64, 0x39, 0x32, 0x39, 0x34, 0x35, 0x63, 0x64, 0x64, 0x33, 0x0a, 0x23, 0x23, 0x0a, 0x0a, 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x64, 0x54, 0x43, 0x43, 0x41, 0x6c, 0x32, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4c, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x46, 0x55, 0x74, 0x61, 0x77, 0x35, 0x51, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x77, 0x56, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x6b, 0x55, 0x78, 0x0a, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x45, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x67, 0x62, 0x6e, 0x59, 0x74, 0x63, 0x32, 0x45, 0x78, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x42, 0x31, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x78, 0x47, 0x7a, 0x41, 0x5a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x6b, 0x64, 0x73, 0x0a, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x35, 0x4f, 0x44, 0x41, 0x35, 0x4d, 0x44, 0x45, 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x46, 0x77, 0x30, 0x79, 0x4f, 0x44, 0x41, 0x78, 0x4d, 0x6a, 0x67, 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x4d, 0x46, 0x63, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4a, 0x46, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x47, 0x35, 0x32, 0x4c, 0x58, 0x4e, 0x68, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x77, 0x64, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x52, 0x73, 0x77, 0x47, 0x51, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x4a, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x77, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x44, 0x61, 0x0a, 0x44, 0x75, 0x61, 0x5a, 0x6a, 0x63, 0x36, 0x6a, 0x34, 0x30, 0x2b, 0x4b, 0x66, 0x76, 0x76, 0x78, 0x69, 0x34, 0x4d, 0x6c, 0x61, 0x2b, 0x70, 0x49, 0x48, 0x2f, 0x45, 0x71, 0x73, 0x4c, 0x6d, 0x56, 0x45, 0x51, 0x53, 0x39, 0x38, 0x47, 0x50, 0x52, 0x34, 0x6d, 0x64, 0x6d, 0x7a, 0x78, 0x7a, 0x64, 0x7a, 0x78, 0x74, 0x49, 0x4b, 0x2b, 0x36, 0x4e, 0x69, 0x59, 0x36, 0x61, 0x72, 0x79, 0x6d, 0x41, 0x5a, 0x61, 0x76, 0x70, 0x78, 0x79, 0x30, 0x53, 0x79, 0x36, 0x73, 0x63, 0x0a, 0x54, 0x48, 0x41, 0x48, 0x6f, 0x54, 0x30, 0x4b, 0x4d, 0x4d, 0x30, 0x56, 0x6a, 0x55, 0x2f, 0x34, 0x33, 0x64, 0x53, 0x4d, 0x55, 0x42, 0x55, 0x63, 0x37, 0x31, 0x44, 0x75, 0x78, 0x43, 0x37, 0x33, 0x2f, 0x4f, 0x6c, 0x53, 0x38, 0x70, 0x46, 0x39, 0x34, 0x47, 0x33, 0x56, 0x4e, 0x54, 0x43, 0x4f, 0x58, 0x6b, 0x4e, 0x7a, 0x38, 0x6b, 0x48, 0x70, 0x31, 0x57, 0x72, 0x6a, 0x73, 0x6f, 0x6b, 0x36, 0x56, 0x6a, 0x6b, 0x34, 0x62, 0x77, 0x59, 0x38, 0x69, 0x47, 0x6c, 0x62, 0x0a, 0x4b, 0x6b, 0x33, 0x46, 0x70, 0x31, 0x53, 0x34, 0x62, 0x49, 0x6e, 0x4d, 0x6d, 0x2f, 0x6b, 0x38, 0x79, 0x75, 0x58, 0x39, 0x69, 0x66, 0x55, 0x53, 0x50, 0x4a, 0x4a, 0x34, 0x6c, 0x74, 0x62, 0x63, 0x64, 0x47, 0x36, 0x54, 0x52, 0x47, 0x48, 0x52, 0x6a, 0x63, 0x64, 0x47, 0x73, 0x6e, 0x55, 0x4f, 0x68, 0x75, 0x67, 0x5a, 0x69, 0x74, 0x56, 0x74, 0x62, 0x4e, 0x56, 0x34, 0x46, 0x70, 0x57, 0x69, 0x36, 0x63, 0x67, 0x4b, 0x4f, 0x4f, 0x76, 0x79, 0x4a, 0x42, 0x4e, 0x50, 0x0a, 0x63, 0x31, 0x53, 0x54, 0x45, 0x34, 0x55, 0x36, 0x47, 0x37, 0x77, 0x65, 0x4e, 0x4c, 0x57, 0x4c, 0x42, 0x59, 0x79, 0x35, 0x64, 0x34, 0x75, 0x78, 0x32, 0x78, 0x38, 0x67, 0x6b, 0x61, 0x73, 0x4a, 0x55, 0x32, 0x36, 0x51, 0x7a, 0x6e, 0x73, 0x33, 0x64, 0x4c, 0x6c, 0x77, 0x52, 0x35, 0x45, 0x69, 0x55, 0x57, 0x4d, 0x57, 0x65, 0x61, 0x36, 0x78, 0x72, 0x6b, 0x45, 0x6d, 0x43, 0x4d, 0x67, 0x5a, 0x4b, 0x39, 0x46, 0x47, 0x71, 0x6b, 0x6a, 0x57, 0x5a, 0x43, 0x72, 0x58, 0x0a, 0x67, 0x7a, 0x54, 0x2f, 0x4c, 0x43, 0x72, 0x42, 0x62, 0x42, 0x6c, 0x44, 0x53, 0x67, 0x65, 0x46, 0x35, 0x39, 0x4e, 0x38, 0x39, 0x69, 0x46, 0x6f, 0x37, 0x2b, 0x72, 0x79, 0x55, 0x70, 0x39, 0x2f, 0x6b, 0x35, 0x44, 0x50, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x67, 0x65, 0x32, 0x59, 0x61, 0x52, 0x51, 0x32, 0x58, 0x79, 0x6f, 0x6c, 0x51, 0x4c, 0x33, 0x30, 0x45, 0x7a, 0x54, 0x53, 0x6f, 0x2f, 0x2f, 0x7a, 0x39, 0x53, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x0a, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x45, 0x41, 0x31, 0x6e, 0x50, 0x6e, 0x66, 0x45, 0x39, 0x32, 0x30, 0x49, 0x32, 0x2f, 0x37, 0x4c, 0x71, 0x69, 0x76, 0x6a, 0x54, 0x46, 0x4b, 0x44, 0x4b, 0x31, 0x66, 0x50, 0x78, 0x73, 0x6e, 0x43, 0x77, 0x72, 0x76, 0x51, 0x6d, 0x65, 0x55, 0x37, 0x39, 0x72, 0x58, 0x71, 0x6f, 0x52, 0x53, 0x4c, 0x62, 0x6c, 0x43, 0x4b, 0x4f, 0x7a, 0x79, 0x6a, 0x31, 0x68, 0x54, 0x64, 0x4e, 0x47, 0x43, 0x62, 0x4d, 0x2b, 0x77, 0x36, 0x44, 0x6a, 0x0a, 0x59, 0x31, 0x55, 0x62, 0x38, 0x72, 0x72, 0x76, 0x72, 0x54, 0x6e, 0x68, 0x51, 0x37, 0x6b, 0x34, 0x6f, 0x2b, 0x59, 0x76, 0x69, 0x69, 0x59, 0x37, 0x37, 0x36, 0x42, 0x51, 0x56, 0x76, 0x6e, 0x47, 0x43, 0x76, 0x30, 0x34, 0x7a, 0x63, 0x51, 0x4c, 0x63, 0x46, 0x47, 0x55, 0x6c, 0x35, 0x67, 0x45, 0x33, 0x38, 0x4e, 0x66, 0x6c, 0x4e, 0x55, 0x56, 0x79, 0x52, 0x52, 0x42, 0x6e, 0x4d, 0x52, 0x64, 0x64, 0x57, 0x51, 0x56, 0x44, 0x66, 0x39, 0x56, 0x4d, 0x4f, 0x79, 0x47, 0x0a, 0x6a, 0x2f, 0x38, 0x4e, 0x37, 0x79, 0x79, 0x35, 0x59, 0x30, 0x62, 0x32, 0x71, 0x76, 0x7a, 0x66, 0x76, 0x47, 0x6e, 0x39, 0x4c, 0x68, 0x4a, 0x49, 0x5a, 0x4a, 0x72, 0x67, 0x6c, 0x66, 0x43, 0x6d, 0x37, 0x79, 0x6d, 0x50, 0x41, 0x62, 0x45, 0x56, 0x74, 0x51, 0x77, 0x64, 0x70, 0x66, 0x35, 0x70, 0x4c, 0x47, 0x6b, 0x6b, 0x65, 0x42, 0x36, 0x7a, 0x70, 0x78, 0x78, 0x78, 0x59, 0x75, 0x37, 0x4b, 0x79, 0x4a, 0x65, 0x73, 0x46, 0x31, 0x32, 0x4b, 0x77, 0x76, 0x68, 0x48, 0x0a, 0x68, 0x6d, 0x34, 0x71, 0x78, 0x46, 0x59, 0x78, 0x6c, 0x64, 0x42, 0x6e, 0x69, 0x59, 0x55, 0x72, 0x2b, 0x57, 0x79, 0x6d, 0x58, 0x55, 0x61, 0x64, 0x44, 0x4b, 0x71, 0x43, 0x35, 0x4a, 0x6c, 0x52, 0x33, 0x58, 0x43, 0x33, 0x32, 0x31, 0x59, 0x39, 0x59, 0x65, 0x52, 0x71, 0x34, 0x56, 0x7a, 0x57, 0x39, 0x76, 0x34, 0x39, 0x33, 0x6b, 0x48, 0x4d, 0x42, 0x36, 0x35, 0x6a, 0x55, 0x72, 0x39, 0x54, 0x55, 0x2f, 0x51, 0x72, 0x36, 0x63, 0x66, 0x39, 0x74, 0x76, 0x65, 0x43, 0x0a, 0x58, 0x34, 0x58, 0x53, 0x51, 0x52, 0x6a, 0x62, 0x67, 0x62, 0x4d, 0x45, 0x48, 0x4d, 0x55, 0x66, 0x70, 0x49, 0x42, 0x76, 0x46, 0x53, 0x44, 0x4a, 0x33, 0x67, 0x79, 0x49, 0x43, 0x68, 0x33, 0x57, 0x5a, 0x6c, 0x58, 0x69, 0x2f, 0x45, 0x6a, 0x4a, 0x4b, 0x53, 0x5a, 0x70, 0x34, 0x41, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x20, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x20, 0x32, 0x30, 0x34, 0x38, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x4b, 0x6a, 0x43, 0x43, 0x41, 0x78, 0x4b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x45, 0x4f, 0x47, 0x50, 0x65, 0x2b, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x43, 0x42, 0x74, 0x44, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4c, 0x52, 0x57, 0x35, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x35, 0x75, 0x0a, 0x5a, 0x58, 0x51, 0x78, 0x51, 0x44, 0x41, 0x2b, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x55, 0x4e, 0x33, 0x64, 0x33, 0x64, 0x79, 0x35, 0x6c, 0x62, 0x6e, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x6d, 0x35, 0x6c, 0x64, 0x43, 0x39, 0x44, 0x55, 0x46, 0x4e, 0x66, 0x4d, 0x6a, 0x41, 0x30, 0x4f, 0x43, 0x42, 0x70, 0x62, 0x6d, 0x4e, 0x76, 0x63, 0x6e, 0x41, 0x75, 0x49, 0x47, 0x4a, 0x35, 0x49, 0x48, 0x4a, 0x6c, 0x5a, 0x69, 0x34, 0x67, 0x4b, 0x47, 0x78, 0x70, 0x0a, 0x62, 0x57, 0x6c, 0x30, 0x63, 0x79, 0x42, 0x73, 0x61, 0x57, 0x46, 0x69, 0x4c, 0x69, 0x6b, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x48, 0x43, 0x68, 0x6a, 0x4b, 0x53, 0x41, 0x78, 0x4f, 0x54, 0x6b, 0x35, 0x49, 0x45, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x75, 0x62, 0x6d, 0x56, 0x30, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x4d, 0x7a, 0x41, 0x78, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x4d, 0x54, 0x4b, 0x6b, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x75, 0x62, 0x6d, 0x56, 0x30, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x43, 0x67, 0x79, 0x4d, 0x44, 0x51, 0x34, 0x4b, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x35, 0x4f, 0x54, 0x45, 0x79, 0x4d, 0x6a, 0x51, 0x78, 0x0a, 0x4e, 0x7a, 0x55, 0x77, 0x4e, 0x54, 0x46, 0x61, 0x46, 0x77, 0x30, 0x79, 0x4f, 0x54, 0x41, 0x33, 0x4d, 0x6a, 0x51, 0x78, 0x4e, 0x44, 0x45, 0x31, 0x4d, 0x54, 0x4a, 0x61, 0x4d, 0x49, 0x47, 0x30, 0x4d, 0x52, 0x51, 0x77, 0x45, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x74, 0x46, 0x62, 0x6e, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x6d, 0x35, 0x6c, 0x64, 0x44, 0x46, 0x41, 0x4d, 0x44, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x51, 0x33, 0x0a, 0x64, 0x33, 0x64, 0x33, 0x4c, 0x6d, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x75, 0x62, 0x6d, 0x56, 0x30, 0x4c, 0x30, 0x4e, 0x51, 0x55, 0x31, 0x38, 0x79, 0x4d, 0x44, 0x51, 0x34, 0x49, 0x47, 0x6c, 0x75, 0x59, 0x32, 0x39, 0x79, 0x63, 0x43, 0x34, 0x67, 0x59, 0x6e, 0x6b, 0x67, 0x63, 0x6d, 0x56, 0x6d, 0x4c, 0x69, 0x41, 0x6f, 0x62, 0x47, 0x6c, 0x74, 0x61, 0x58, 0x52, 0x7a, 0x49, 0x47, 0x78, 0x70, 0x59, 0x57, 0x49, 0x75, 0x4b, 0x54, 0x45, 0x6c, 0x0a, 0x4d, 0x43, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x63, 0x4b, 0x47, 0x4d, 0x70, 0x49, 0x44, 0x45, 0x35, 0x4f, 0x54, 0x6b, 0x67, 0x52, 0x57, 0x35, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x35, 0x75, 0x5a, 0x58, 0x51, 0x67, 0x54, 0x47, 0x6c, 0x74, 0x61, 0x58, 0x52, 0x6c, 0x5a, 0x44, 0x45, 0x7a, 0x4d, 0x44, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x71, 0x52, 0x57, 0x35, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x35, 0x75, 0x0a, 0x5a, 0x58, 0x51, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x4b, 0x44, 0x49, 0x77, 0x4e, 0x44, 0x67, 0x70, 0x4d, 0x49, 0x49, 0x42, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x38, 0x41, 0x0a, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x72, 0x55, 0x31, 0x4c, 0x71, 0x52, 0x4b, 0x47, 0x73, 0x75, 0x71, 0x6a, 0x49, 0x41, 0x63, 0x56, 0x46, 0x6d, 0x51, 0x71, 0x4b, 0x30, 0x76, 0x52, 0x76, 0x77, 0x74, 0x4b, 0x54, 0x59, 0x37, 0x74, 0x67, 0x48, 0x61, 0x6c, 0x5a, 0x37, 0x64, 0x34, 0x51, 0x4d, 0x42, 0x7a, 0x51, 0x73, 0x68, 0x6f, 0x77, 0x4e, 0x74, 0x54, 0x4b, 0x39, 0x31, 0x65, 0x75, 0x48, 0x61, 0x59, 0x4e, 0x5a, 0x4f, 0x4c, 0x0a, 0x47, 0x70, 0x31, 0x38, 0x45, 0x7a, 0x6f, 0x4f, 0x48, 0x31, 0x75, 0x33, 0x48, 0x73, 0x2f, 0x6c, 0x4a, 0x42, 0x51, 0x65, 0x73, 0x59, 0x47, 0x70, 0x6a, 0x58, 0x32, 0x34, 0x7a, 0x47, 0x74, 0x4c, 0x41, 0x2f, 0x45, 0x43, 0x44, 0x4e, 0x79, 0x72, 0x70, 0x55, 0x41, 0x6b, 0x41, 0x48, 0x39, 0x30, 0x6c, 0x4b, 0x47, 0x64, 0x43, 0x43, 0x6d, 0x7a, 0x69, 0x41, 0x76, 0x31, 0x68, 0x33, 0x65, 0x64, 0x56, 0x63, 0x33, 0x6b, 0x77, 0x33, 0x37, 0x58, 0x61, 0x6d, 0x53, 0x72, 0x0a, 0x68, 0x52, 0x53, 0x47, 0x6c, 0x56, 0x75, 0x58, 0x4d, 0x6c, 0x42, 0x76, 0x50, 0x63, 0x69, 0x36, 0x5a, 0x67, 0x7a, 0x6a, 0x2f, 0x4c, 0x32, 0x34, 0x53, 0x63, 0x46, 0x32, 0x69, 0x55, 0x6b, 0x5a, 0x2f, 0x63, 0x43, 0x6f, 0x76, 0x59, 0x6d, 0x6a, 0x5a, 0x79, 0x2f, 0x47, 0x6e, 0x37, 0x78, 0x78, 0x47, 0x57, 0x43, 0x34, 0x4c, 0x65, 0x6b, 0x73, 0x79, 0x5a, 0x42, 0x32, 0x5a, 0x6e, 0x75, 0x55, 0x34, 0x71, 0x39, 0x34, 0x31, 0x6d, 0x56, 0x54, 0x58, 0x54, 0x7a, 0x57, 0x0a, 0x6e, 0x4c, 0x4c, 0x50, 0x4b, 0x51, 0x50, 0x35, 0x4c, 0x36, 0x52, 0x51, 0x73, 0x74, 0x52, 0x49, 0x7a, 0x67, 0x55, 0x79, 0x56, 0x59, 0x72, 0x39, 0x73, 0x6d, 0x52, 0x4d, 0x44, 0x75, 0x53, 0x59, 0x42, 0x33, 0x58, 0x62, 0x66, 0x39, 0x2b, 0x35, 0x43, 0x46, 0x56, 0x67, 0x68, 0x54, 0x41, 0x70, 0x2b, 0x58, 0x74, 0x49, 0x70, 0x47, 0x6d, 0x47, 0x34, 0x7a, 0x55, 0x2f, 0x48, 0x6f, 0x5a, 0x64, 0x65, 0x6e, 0x6f, 0x56, 0x76, 0x65, 0x38, 0x41, 0x6a, 0x68, 0x55, 0x69, 0x0a, 0x56, 0x42, 0x63, 0x41, 0x6b, 0x43, 0x61, 0x54, 0x76, 0x41, 0x35, 0x4a, 0x61, 0x4a, 0x47, 0x2f, 0x2b, 0x45, 0x66, 0x54, 0x6e, 0x5a, 0x56, 0x43, 0x77, 0x51, 0x35, 0x4e, 0x33, 0x32, 0x38, 0x6d, 0x7a, 0x38, 0x4d, 0x59, 0x49, 0x57, 0x4a, 0x6d, 0x51, 0x33, 0x44, 0x57, 0x31, 0x63, 0x41, 0x48, 0x34, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x0a, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x56, 0x65, 0x53, 0x42, 0x30, 0x52, 0x47, 0x41, 0x76, 0x74, 0x69, 0x4a, 0x75, 0x51, 0x69, 0x6a, 0x4d, 0x66, 0x6d, 0x68, 0x4a, 0x41, 0x6b, 0x57, 0x75, 0x58, 0x41, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x0a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x44, 0x75, 0x62, 0x6a, 0x31, 0x61, 0x62, 0x4d, 0x4f, 0x64, 0x54, 0x6d, 0x58, 0x78, 0x36, 0x65, 0x61, 0x64, 0x4e, 0x6c, 0x39, 0x63, 0x5a, 0x6c, 0x5a, 0x44, 0x37, 0x42, 0x68, 0x2f, 0x4b, 0x4d, 0x33, 0x78, 0x47, 0x59, 0x34, 0x2b, 0x57, 0x5a, 0x69, 0x54, 0x36, 0x51, 0x42, 0x73, 0x68, 0x4a, 0x38, 0x72, 0x6d, 0x63, 0x6e, 0x50, 0x79, 0x0a, 0x54, 0x2f, 0x34, 0x78, 0x6d, 0x66, 0x33, 0x49, 0x44, 0x45, 0x78, 0x6f, 0x55, 0x38, 0x61, 0x41, 0x67, 0x68, 0x4f, 0x59, 0x2b, 0x72, 0x61, 0x74, 0x32, 0x6c, 0x30, 0x39, 0x38, 0x63, 0x35, 0x75, 0x39, 0x68, 0x55, 0x52, 0x6c, 0x49, 0x49, 0x4d, 0x37, 0x6a, 0x2b, 0x56, 0x72, 0x78, 0x47, 0x72, 0x44, 0x39, 0x63, 0x76, 0x33, 0x68, 0x38, 0x44, 0x6a, 0x31, 0x63, 0x73, 0x48, 0x73, 0x6d, 0x37, 0x6d, 0x68, 0x70, 0x45, 0x6c, 0x65, 0x73, 0x59, 0x54, 0x36, 0x59, 0x66, 0x0a, 0x7a, 0x58, 0x31, 0x58, 0x45, 0x43, 0x2b, 0x62, 0x42, 0x41, 0x6c, 0x61, 0x68, 0x4c, 0x56, 0x75, 0x32, 0x42, 0x30, 0x36, 0x34, 0x64, 0x61, 0x65, 0x30, 0x57, 0x78, 0x35, 0x58, 0x6e, 0x6b, 0x63, 0x46, 0x4d, 0x58, 0x6a, 0x30, 0x45, 0x79, 0x54, 0x4f, 0x32, 0x55, 0x38, 0x37, 0x64, 0x38, 0x39, 0x76, 0x71, 0x62, 0x6c, 0x6c, 0x52, 0x72, 0x44, 0x74, 0x52, 0x6e, 0x44, 0x76, 0x56, 0x35, 0x62, 0x75, 0x2f, 0x38, 0x6a, 0x37, 0x32, 0x67, 0x5a, 0x79, 0x78, 0x4b, 0x54, 0x0a, 0x4a, 0x31, 0x77, 0x44, 0x4c, 0x57, 0x38, 0x77, 0x30, 0x42, 0x36, 0x32, 0x47, 0x71, 0x7a, 0x65, 0x57, 0x76, 0x66, 0x52, 0x71, 0x71, 0x67, 0x6e, 0x70, 0x76, 0x35, 0x35, 0x67, 0x63, 0x52, 0x35, 0x6d, 0x54, 0x4e, 0x58, 0x75, 0x68, 0x4b, 0x77, 0x71, 0x65, 0x42, 0x43, 0x62, 0x4a, 0x50, 0x4b, 0x56, 0x74, 0x37, 0x2b, 0x62, 0x59, 0x51, 0x4c, 0x43, 0x49, 0x74, 0x2b, 0x6a, 0x65, 0x72, 0x58, 0x6d, 0x43, 0x48, 0x47, 0x38, 0x2b, 0x63, 0x38, 0x65, 0x53, 0x39, 0x65, 0x0a, 0x6e, 0x4e, 0x46, 0x4d, 0x46, 0x59, 0x33, 0x68, 0x37, 0x43, 0x49, 0x33, 0x7a, 0x4a, 0x70, 0x44, 0x43, 0x35, 0x66, 0x63, 0x67, 0x4a, 0x43, 0x4e, 0x73, 0x32, 0x65, 0x62, 0x62, 0x30, 0x67, 0x49, 0x46, 0x56, 0x62, 0x50, 0x76, 0x2f, 0x45, 0x72, 0x66, 0x46, 0x36, 0x61, 0x64, 0x75, 0x6c, 0x5a, 0x6b, 0x4d, 0x56, 0x38, 0x67, 0x7a, 0x55, 0x52, 0x5a, 0x56, 0x45, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 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, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x64, 0x7a, 0x43, 0x43, 0x41, 0x6c, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x45, 0x41, 0x67, 0x41, 0x41, 0x75, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x61, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x4a, 0x52, 0x54, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x43, 0x68, 0x4d, 0x4a, 0x51, 0x6d, 0x46, 0x73, 0x64, 0x47, 0x6c, 0x74, 0x62, 0x33, 0x4a, 0x6c, 0x4d, 0x52, 0x4d, 0x77, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x77, 0x70, 0x44, 0x65, 0x57, 0x4a, 0x6c, 0x63, 0x6c, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x53, 0x49, 0x77, 0x49, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x6c, 0x43, 0x59, 0x57, 0x78, 0x30, 0x61, 0x57, 0x31, 0x76, 0x63, 0x6d, 0x55, 0x67, 0x51, 0x33, 0x6c, 0x69, 0x0a, 0x5a, 0x58, 0x4a, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41, 0x77, 0x4d, 0x44, 0x55, 0x78, 0x4d, 0x6a, 0x45, 0x34, 0x4e, 0x44, 0x59, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x49, 0x31, 0x4d, 0x44, 0x55, 0x78, 0x4d, 0x6a, 0x49, 0x7a, 0x4e, 0x54, 0x6b, 0x77, 0x4d, 0x46, 0x6f, 0x77, 0x57, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x0a, 0x53, 0x55, 0x55, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x43, 0x55, 0x4a, 0x68, 0x62, 0x48, 0x52, 0x70, 0x62, 0x57, 0x39, 0x79, 0x5a, 0x54, 0x45, 0x54, 0x4d, 0x42, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x4b, 0x51, 0x33, 0x6c, 0x69, 0x5a, 0x58, 0x4a, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x44, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x5a, 0x51, 0x6d, 0x46, 0x73, 0x0a, 0x64, 0x47, 0x6c, 0x74, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x45, 0x4e, 0x35, 0x59, 0x6d, 0x56, 0x79, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x44, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4b, 0x4d, 0x45, 0x0a, 0x75, 0x79, 0x4b, 0x72, 0x6d, 0x44, 0x31, 0x58, 0x36, 0x43, 0x5a, 0x79, 0x6d, 0x72, 0x56, 0x35, 0x31, 0x43, 0x6e, 0x69, 0x34, 0x65, 0x69, 0x56, 0x67, 0x4c, 0x47, 0x77, 0x34, 0x31, 0x75, 0x4f, 0x4b, 0x79, 0x6d, 0x61, 0x5a, 0x4e, 0x2b, 0x68, 0x58, 0x65, 0x32, 0x77, 0x43, 0x51, 0x56, 0x74, 0x32, 0x79, 0x67, 0x75, 0x7a, 0x6d, 0x4b, 0x69, 0x59, 0x76, 0x36, 0x30, 0x69, 0x4e, 0x6f, 0x53, 0x36, 0x7a, 0x6a, 0x72, 0x49, 0x5a, 0x33, 0x41, 0x51, 0x53, 0x73, 0x42, 0x0a, 0x55, 0x6e, 0x75, 0x49, 0x64, 0x39, 0x4d, 0x63, 0x6a, 0x38, 0x65, 0x36, 0x75, 0x59, 0x69, 0x31, 0x61, 0x67, 0x6e, 0x6e, 0x63, 0x2b, 0x67, 0x52, 0x51, 0x4b, 0x66, 0x52, 0x7a, 0x4d, 0x70, 0x69, 0x6a, 0x53, 0x33, 0x6c, 0x6a, 0x77, 0x75, 0x6d, 0x55, 0x4e, 0x4b, 0x6f, 0x55, 0x4d, 0x4d, 0x6f, 0x36, 0x76, 0x57, 0x72, 0x4a, 0x59, 0x65, 0x4b, 0x6d, 0x70, 0x59, 0x63, 0x71, 0x57, 0x65, 0x34, 0x50, 0x77, 0x7a, 0x56, 0x39, 0x2f, 0x6c, 0x53, 0x45, 0x79, 0x2f, 0x43, 0x0a, 0x47, 0x39, 0x56, 0x77, 0x63, 0x50, 0x43, 0x50, 0x77, 0x42, 0x4c, 0x4b, 0x42, 0x73, 0x75, 0x61, 0x34, 0x64, 0x6e, 0x4b, 0x4d, 0x33, 0x70, 0x33, 0x31, 0x76, 0x6a, 0x73, 0x75, 0x66, 0x46, 0x6f, 0x52, 0x45, 0x4a, 0x49, 0x45, 0x39, 0x4c, 0x41, 0x77, 0x71, 0x53, 0x75, 0x58, 0x6d, 0x44, 0x2b, 0x74, 0x71, 0x59, 0x46, 0x2f, 0x4c, 0x54, 0x64, 0x42, 0x31, 0x6b, 0x43, 0x31, 0x46, 0x6b, 0x59, 0x6d, 0x47, 0x50, 0x31, 0x70, 0x57, 0x50, 0x67, 0x6b, 0x41, 0x78, 0x39, 0x0a, 0x58, 0x62, 0x49, 0x47, 0x65, 0x76, 0x4f, 0x46, 0x36, 0x75, 0x76, 0x55, 0x41, 0x36, 0x35, 0x65, 0x68, 0x44, 0x35, 0x66, 0x2f, 0x78, 0x58, 0x74, 0x61, 0x62, 0x7a, 0x35, 0x4f, 0x54, 0x5a, 0x79, 0x64, 0x63, 0x39, 0x33, 0x55, 0x6b, 0x33, 0x7a, 0x79, 0x5a, 0x41, 0x73, 0x75, 0x54, 0x33, 0x6c, 0x79, 0x53, 0x4e, 0x54, 0x50, 0x78, 0x38, 0x6b, 0x6d, 0x43, 0x46, 0x63, 0x42, 0x35, 0x6b, 0x70, 0x76, 0x63, 0x59, 0x36, 0x37, 0x4f, 0x64, 0x75, 0x68, 0x6a, 0x70, 0x72, 0x0a, 0x6c, 0x33, 0x52, 0x6a, 0x4d, 0x37, 0x31, 0x6f, 0x47, 0x44, 0x48, 0x77, 0x65, 0x49, 0x31, 0x32, 0x76, 0x2f, 0x79, 0x65, 0x6a, 0x6c, 0x30, 0x71, 0x68, 0x71, 0x64, 0x4e, 0x6b, 0x4e, 0x77, 0x6e, 0x47, 0x6a, 0x6b, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x46, 0x4d, 0x45, 0x4d, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4f, 0x57, 0x64, 0x57, 0x54, 0x43, 0x43, 0x52, 0x31, 0x6a, 0x4d, 0x72, 0x50, 0x6f, 0x49, 0x0a, 0x56, 0x44, 0x61, 0x47, 0x65, 0x7a, 0x71, 0x31, 0x42, 0x45, 0x33, 0x77, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x49, 0x4d, 0x41, 0x59, 0x42, 0x41, 0x66, 0x38, 0x43, 0x41, 0x51, 0x4d, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x0a, 0x42, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x43, 0x46, 0x44, 0x46, 0x32, 0x4f, 0x35, 0x47, 0x39, 0x52, 0x61, 0x45, 0x49, 0x46, 0x6f, 0x4e, 0x32, 0x37, 0x54, 0x79, 0x63, 0x6c, 0x68, 0x41, 0x4f, 0x39, 0x39, 0x32, 0x54, 0x39, 0x4c, 0x64, 0x63, 0x77, 0x34, 0x36, 0x51, 0x51, 0x46, 0x2b, 0x76, 0x61, 0x4b, 0x53, 0x6d, 0x32, 0x65, 0x54, 0x39, 0x32, 0x39, 0x68, 0x6b, 0x54, 0x49, 0x37, 0x67, 0x51, 0x43, 0x76, 0x6c, 0x59, 0x70, 0x4e, 0x52, 0x68, 0x0a, 0x63, 0x4c, 0x30, 0x45, 0x59, 0x57, 0x6f, 0x53, 0x69, 0x68, 0x66, 0x56, 0x43, 0x72, 0x33, 0x46, 0x76, 0x44, 0x42, 0x38, 0x31, 0x75, 0x6b, 0x4d, 0x4a, 0x59, 0x32, 0x47, 0x51, 0x45, 0x2f, 0x73, 0x7a, 0x4b, 0x4e, 0x2b, 0x4f, 0x4d, 0x59, 0x33, 0x45, 0x55, 0x2f, 0x74, 0x33, 0x57, 0x67, 0x78, 0x6a, 0x6b, 0x7a, 0x53, 0x73, 0x77, 0x46, 0x30, 0x37, 0x72, 0x35, 0x31, 0x58, 0x67, 0x64, 0x49, 0x47, 0x6e, 0x39, 0x77, 0x2f, 0x78, 0x5a, 0x63, 0x68, 0x4d, 0x42, 0x35, 0x0a, 0x68, 0x62, 0x67, 0x46, 0x2f, 0x58, 0x2b, 0x2b, 0x5a, 0x52, 0x47, 0x6a, 0x44, 0x38, 0x41, 0x43, 0x74, 0x50, 0x68, 0x53, 0x4e, 0x7a, 0x6b, 0x45, 0x31, 0x61, 0x6b, 0x78, 0x65, 0x68, 0x69, 0x2f, 0x6f, 0x43, 0x72, 0x30, 0x45, 0x70, 0x6e, 0x33, 0x6f, 0x30, 0x57, 0x43, 0x34, 0x7a, 0x78, 0x65, 0x39, 0x5a, 0x32, 0x65, 0x74, 0x63, 0x69, 0x65, 0x66, 0x43, 0x37, 0x49, 0x70, 0x4a, 0x35, 0x4f, 0x43, 0x42, 0x52, 0x4c, 0x62, 0x66, 0x31, 0x77, 0x62, 0x57, 0x73, 0x61, 0x0a, 0x59, 0x37, 0x31, 0x6b, 0x35, 0x68, 0x2b, 0x33, 0x7a, 0x76, 0x44, 0x79, 0x6e, 0x79, 0x36, 0x37, 0x47, 0x37, 0x66, 0x79, 0x55, 0x49, 0x68, 0x7a, 0x6b, 0x73, 0x4c, 0x69, 0x34, 0x78, 0x61, 0x4e, 0x6d, 0x6a, 0x49, 0x43, 0x71, 0x34, 0x34, 0x59, 0x33, 0x65, 0x6b, 0x51, 0x45, 0x65, 0x35, 0x2b, 0x4e, 0x61, 0x75, 0x51, 0x72, 0x7a, 0x34, 0x77, 0x6c, 0x48, 0x72, 0x51, 0x4d, 0x7a, 0x32, 0x6e, 0x5a, 0x51, 0x2f, 0x31, 0x2f, 0x49, 0x36, 0x65, 0x59, 0x73, 0x39, 0x48, 0x0a, 0x52, 0x43, 0x77, 0x42, 0x58, 0x62, 0x73, 0x64, 0x74, 0x54, 0x4c, 0x53, 0x52, 0x39, 0x49, 0x34, 0x4c, 0x74, 0x44, 0x2b, 0x67, 0x64, 0x77, 0x79, 0x61, 0x68, 0x36, 0x31, 0x37, 0x6a, 0x7a, 0x56, 0x2f, 0x4f, 0x65, 0x42, 0x48, 0x52, 0x6e, 0x44, 0x4a, 0x45, 0x4c, 0x71, 0x59, 0x7a, 0x6d, 0x70, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 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, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x6b, 0x54, 0x43, 0x43, 0x41, 0x33, 0x6d, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x45, 0x52, 0x57, 0x74, 0x51, 0x56, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x43, 0x42, 0x73, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x46, 0x6a, 0x41, 0x55, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x6f, 0x54, 0x44, 0x55, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4f, 0x54, 0x41, 0x33, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x4d, 0x48, 0x64, 0x33, 0x64, 0x79, 0x35, 0x6c, 0x62, 0x6e, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x6d, 0x35, 0x6c, 0x64, 0x43, 0x39, 0x44, 0x55, 0x46, 0x4d, 0x67, 0x61, 0x58, 0x4d, 0x67, 0x61, 0x57, 0x35, 0x6a, 0x62, 0x33, 0x4a, 0x77, 0x0a, 0x62, 0x33, 0x4a, 0x68, 0x64, 0x47, 0x56, 0x6b, 0x49, 0x47, 0x4a, 0x35, 0x49, 0x48, 0x4a, 0x6c, 0x5a, 0x6d, 0x56, 0x79, 0x5a, 0x57, 0x35, 0x6a, 0x5a, 0x54, 0x45, 0x66, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x57, 0x4b, 0x47, 0x4d, 0x70, 0x49, 0x44, 0x49, 0x77, 0x4d, 0x44, 0x59, 0x67, 0x52, 0x57, 0x35, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x6a, 0x45, 0x74, 0x4d, 0x43, 0x73, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x6b, 0x52, 0x57, 0x35, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41, 0x32, 0x4d, 0x54, 0x45, 0x79, 0x4e, 0x7a, 0x49, 0x77, 0x4d, 0x6a, 0x4d, 0x30, 0x0a, 0x4d, 0x6c, 0x6f, 0x58, 0x44, 0x54, 0x49, 0x32, 0x4d, 0x54, 0x45, 0x79, 0x4e, 0x7a, 0x49, 0x77, 0x4e, 0x54, 0x4d, 0x30, 0x4d, 0x6c, 0x6f, 0x77, 0x67, 0x62, 0x41, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x59, 0x77, 0x46, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x31, 0x46, 0x62, 0x6e, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x0a, 0x4d, 0x54, 0x6b, 0x77, 0x4e, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x7a, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x57, 0x35, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x35, 0x75, 0x5a, 0x58, 0x51, 0x76, 0x51, 0x31, 0x42, 0x54, 0x49, 0x47, 0x6c, 0x7a, 0x49, 0x47, 0x6c, 0x75, 0x59, 0x32, 0x39, 0x79, 0x63, 0x47, 0x39, 0x79, 0x59, 0x58, 0x52, 0x6c, 0x5a, 0x43, 0x42, 0x69, 0x65, 0x53, 0x42, 0x79, 0x5a, 0x57, 0x5a, 0x6c, 0x63, 0x6d, 0x56, 0x75, 0x0a, 0x59, 0x32, 0x55, 0x78, 0x48, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x46, 0x69, 0x68, 0x6a, 0x4b, 0x53, 0x41, 0x79, 0x4d, 0x44, 0x41, 0x32, 0x49, 0x45, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4c, 0x54, 0x41, 0x72, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4a, 0x45, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x0a, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x54, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x0a, 0x41, 0x4c, 0x61, 0x56, 0x74, 0x6b, 0x4e, 0x43, 0x2b, 0x73, 0x5a, 0x74, 0x4b, 0x6d, 0x39, 0x49, 0x33, 0x35, 0x52, 0x4d, 0x4f, 0x56, 0x63, 0x46, 0x37, 0x73, 0x4e, 0x35, 0x45, 0x55, 0x46, 0x6f, 0x4e, 0x75, 0x33, 0x73, 0x2f, 0x70, 0x6f, 0x42, 0x6a, 0x36, 0x45, 0x34, 0x4b, 0x50, 0x7a, 0x33, 0x45, 0x45, 0x5a, 0x6d, 0x4c, 0x6b, 0x30, 0x65, 0x47, 0x72, 0x45, 0x61, 0x54, 0x73, 0x62, 0x52, 0x77, 0x4a, 0x57, 0x49, 0x73, 0x4d, 0x6e, 0x2f, 0x4d, 0x59, 0x73, 0x7a, 0x0a, 0x41, 0x39, 0x75, 0x33, 0x67, 0x33, 0x73, 0x2b, 0x49, 0x49, 0x52, 0x65, 0x37, 0x62, 0x4a, 0x57, 0x4b, 0x4b, 0x66, 0x34, 0x34, 0x4c, 0x6c, 0x41, 0x63, 0x54, 0x66, 0x46, 0x79, 0x30, 0x63, 0x4f, 0x6c, 0x79, 0x70, 0x6f, 0x77, 0x43, 0x4b, 0x56, 0x59, 0x68, 0x58, 0x62, 0x52, 0x39, 0x6e, 0x31, 0x30, 0x43, 0x76, 0x2f, 0x67, 0x6b, 0x76, 0x4a, 0x72, 0x54, 0x37, 0x65, 0x54, 0x4e, 0x75, 0x51, 0x67, 0x46, 0x41, 0x2f, 0x43, 0x59, 0x71, 0x45, 0x41, 0x4f, 0x77, 0x77, 0x0a, 0x43, 0x6a, 0x30, 0x59, 0x7a, 0x66, 0x76, 0x39, 0x4b, 0x6c, 0x6d, 0x61, 0x49, 0x35, 0x55, 0x58, 0x4c, 0x45, 0x57, 0x65, 0x48, 0x32, 0x35, 0x44, 0x65, 0x57, 0x30, 0x4d, 0x58, 0x4a, 0x6a, 0x2b, 0x53, 0x4b, 0x66, 0x46, 0x49, 0x30, 0x64, 0x63, 0x58, 0x76, 0x31, 0x75, 0x35, 0x78, 0x36, 0x30, 0x39, 0x6d, 0x68, 0x46, 0x30, 0x59, 0x61, 0x44, 0x57, 0x36, 0x4b, 0x4b, 0x6a, 0x62, 0x48, 0x6a, 0x4b, 0x59, 0x44, 0x2b, 0x4a, 0x58, 0x47, 0x49, 0x72, 0x62, 0x36, 0x38, 0x0a, 0x6a, 0x36, 0x78, 0x53, 0x6c, 0x6b, 0x75, 0x71, 0x55, 0x59, 0x33, 0x6b, 0x45, 0x7a, 0x45, 0x5a, 0x36, 0x45, 0x35, 0x4e, 0x6e, 0x39, 0x75, 0x73, 0x73, 0x32, 0x72, 0x56, 0x76, 0x44, 0x6c, 0x55, 0x63, 0x63, 0x70, 0x36, 0x65, 0x6e, 0x2b, 0x51, 0x33, 0x58, 0x30, 0x64, 0x67, 0x4e, 0x6d, 0x42, 0x75, 0x31, 0x6b, 0x6d, 0x77, 0x68, 0x48, 0x2b, 0x35, 0x70, 0x50, 0x69, 0x39, 0x34, 0x44, 0x6b, 0x5a, 0x66, 0x73, 0x30, 0x4e, 0x77, 0x34, 0x70, 0x67, 0x48, 0x42, 0x4e, 0x0a, 0x72, 0x7a, 0x69, 0x47, 0x4c, 0x70, 0x35, 0x2f, 0x56, 0x36, 0x2b, 0x65, 0x46, 0x36, 0x37, 0x72, 0x48, 0x4d, 0x73, 0x6f, 0x49, 0x56, 0x2b, 0x32, 0x48, 0x4e, 0x6a, 0x6e, 0x6f, 0x67, 0x51, 0x69, 0x2b, 0x64, 0x50, 0x61, 0x32, 0x4d, 0x73, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4f, 0x42, 0x73, 0x44, 0x43, 0x42, 0x72, 0x54, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x0a, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x72, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x41, 0x45, 0x4a, 0x44, 0x41, 0x69, 0x67, 0x41, 0x38, 0x79, 0x4d, 0x44, 0x41, 0x32, 0x4d, 0x54, 0x45, 0x79, 0x4e, 0x7a, 0x49, 0x77, 0x4d, 0x6a, 0x4d, 0x30, 0x4d, 0x6c, 0x71, 0x42, 0x44, 0x7a, 0x49, 0x77, 0x4d, 0x6a, 0x59, 0x78, 0x4d, 0x54, 0x49, 0x33, 0x4d, 0x6a, 0x41, 0x31, 0x0a, 0x4d, 0x7a, 0x51, 0x79, 0x57, 0x6a, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x4d, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x52, 0x6f, 0x6b, 0x4f, 0x52, 0x6e, 0x70, 0x4b, 0x5a, 0x54, 0x67, 0x4d, 0x65, 0x47, 0x5a, 0x71, 0x54, 0x78, 0x39, 0x30, 0x74, 0x44, 0x2b, 0x34, 0x53, 0x39, 0x62, 0x54, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x61, 0x4a, 0x44, 0x6b, 0x5a, 0x36, 0x53, 0x6d, 0x55, 0x34, 0x44, 0x48, 0x0a, 0x68, 0x6d, 0x61, 0x6b, 0x38, 0x66, 0x64, 0x4c, 0x51, 0x2f, 0x75, 0x45, 0x76, 0x57, 0x30, 0x77, 0x48, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x5a, 0x39, 0x42, 0x30, 0x45, 0x41, 0x42, 0x42, 0x41, 0x77, 0x44, 0x68, 0x73, 0x49, 0x56, 0x6a, 0x63, 0x75, 0x4d, 0x54, 0x6f, 0x30, 0x4c, 0x6a, 0x41, 0x44, 0x41, 0x67, 0x53, 0x51, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x42, 0x51, 0x55, 0x41, 0x0a, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x43, 0x54, 0x31, 0x44, 0x43, 0x77, 0x31, 0x77, 0x4d, 0x67, 0x4b, 0x74, 0x44, 0x35, 0x59, 0x2b, 0x69, 0x52, 0x44, 0x41, 0x55, 0x67, 0x71, 0x56, 0x38, 0x5a, 0x79, 0x6e, 0x74, 0x79, 0x54, 0x74, 0x53, 0x78, 0x32, 0x39, 0x43, 0x57, 0x2b, 0x31, 0x52, 0x61, 0x47, 0x53, 0x77, 0x4d, 0x43, 0x50, 0x65, 0x79, 0x76, 0x49, 0x57, 0x6f, 0x6e, 0x58, 0x39, 0x74, 0x4f, 0x31, 0x4b, 0x7a, 0x4b, 0x74, 0x76, 0x6e, 0x31, 0x49, 0x53, 0x4d, 0x0a, 0x59, 0x2f, 0x59, 0x50, 0x79, 0x79, 0x59, 0x42, 0x6b, 0x56, 0x42, 0x73, 0x39, 0x46, 0x38, 0x55, 0x34, 0x70, 0x4e, 0x30, 0x77, 0x42, 0x4f, 0x65, 0x4d, 0x44, 0x70, 0x51, 0x34, 0x37, 0x52, 0x67, 0x78, 0x52, 0x7a, 0x77, 0x49, 0x6b, 0x53, 0x4e, 0x63, 0x55, 0x65, 0x73, 0x79, 0x42, 0x72, 0x4a, 0x36, 0x5a, 0x75, 0x61, 0x41, 0x47, 0x41, 0x54, 0x2f, 0x33, 0x42, 0x2b, 0x58, 0x78, 0x46, 0x4e, 0x53, 0x52, 0x75, 0x7a, 0x46, 0x56, 0x4a, 0x37, 0x79, 0x56, 0x54, 0x61, 0x0a, 0x76, 0x35, 0x32, 0x56, 0x72, 0x32, 0x75, 0x61, 0x32, 0x4a, 0x37, 0x70, 0x38, 0x65, 0x52, 0x44, 0x6a, 0x65, 0x49, 0x52, 0x52, 0x44, 0x71, 0x2f, 0x72, 0x37, 0x32, 0x44, 0x51, 0x6e, 0x4e, 0x53, 0x69, 0x36, 0x71, 0x37, 0x70, 0x79, 0x6e, 0x50, 0x39, 0x57, 0x51, 0x63, 0x43, 0x6b, 0x33, 0x52, 0x76, 0x4b, 0x71, 0x73, 0x6e, 0x79, 0x72, 0x51, 0x2f, 0x33, 0x39, 0x2f, 0x32, 0x6e, 0x33, 0x71, 0x73, 0x65, 0x30, 0x77, 0x4a, 0x63, 0x47, 0x45, 0x32, 0x6a, 0x54, 0x53, 0x0a, 0x57, 0x33, 0x69, 0x44, 0x56, 0x75, 0x79, 0x63, 0x4e, 0x73, 0x4d, 0x6d, 0x34, 0x68, 0x48, 0x32, 0x5a, 0x30, 0x6b, 0x64, 0x6b, 0x71, 0x75, 0x4d, 0x2b, 0x2b, 0x76, 0x2f, 0x65, 0x75, 0x36, 0x46, 0x53, 0x71, 0x64, 0x51, 0x67, 0x50, 0x43, 0x6e, 0x58, 0x45, 0x71, 0x55, 0x4c, 0x6c, 0x38, 0x46, 0x6d, 0x54, 0x78, 0x53, 0x51, 0x65, 0x44, 0x4e, 0x74, 0x47, 0x50, 0x50, 0x41, 0x55, 0x4f, 0x36, 0x6e, 0x49, 0x50, 0x63, 0x6a, 0x32, 0x41, 0x37, 0x38, 0x31, 0x71, 0x30, 0x0a, 0x74, 0x48, 0x75, 0x75, 0x32, 0x67, 0x75, 0x51, 0x4f, 0x48, 0x58, 0x76, 0x67, 0x52, 0x31, 0x6d, 0x30, 0x76, 0x64, 0x58, 0x63, 0x44, 0x61, 0x7a, 0x76, 0x2f, 0x77, 0x6f, 0x72, 0x33, 0x45, 0x6c, 0x68, 0x56, 0x73, 0x54, 0x2f, 0x68, 0x35, 0x2f, 0x57, 0x72, 0x51, 0x38, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6f, 0x64, 0x6f, 0x20, 0x41, 0x41, 0x41, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x72, 0x6f, 0x6f, 0x74, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x4d, 0x6a, 0x43, 0x43, 0x41, 0x78, 0x71, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x37, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x48, 0x51, 0x6a, 0x45, 0x62, 0x4d, 0x42, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x41, 0x77, 0x53, 0x0a, 0x52, 0x33, 0x4a, 0x6c, 0x59, 0x58, 0x52, 0x6c, 0x63, 0x69, 0x42, 0x4e, 0x59, 0x57, 0x35, 0x6a, 0x61, 0x47, 0x56, 0x7a, 0x64, 0x47, 0x56, 0x79, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x44, 0x41, 0x64, 0x54, 0x59, 0x57, 0x78, 0x6d, 0x62, 0x33, 0x4a, 0x6b, 0x4d, 0x52, 0x6f, 0x77, 0x47, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x42, 0x46, 0x44, 0x62, 0x32, 0x31, 0x76, 0x5a, 0x47, 0x38, 0x67, 0x51, 0x30, 0x45, 0x67, 0x0a, 0x54, 0x47, 0x6c, 0x74, 0x61, 0x58, 0x52, 0x6c, 0x5a, 0x44, 0x45, 0x68, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x59, 0x51, 0x55, 0x46, 0x42, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x6c, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41, 0x30, 0x4d, 0x44, 0x45, 0x77, 0x4d, 0x54, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x0a, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x49, 0x34, 0x4d, 0x54, 0x49, 0x7a, 0x4d, 0x54, 0x49, 0x7a, 0x4e, 0x54, 0x6b, 0x31, 0x4f, 0x56, 0x6f, 0x77, 0x65, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x30, 0x49, 0x78, 0x47, 0x7a, 0x41, 0x5a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x4d, 0x45, 0x6b, 0x64, 0x79, 0x5a, 0x57, 0x46, 0x30, 0x5a, 0x58, 0x49, 0x67, 0x54, 0x57, 0x46, 0x75, 0x59, 0x32, 0x68, 0x6c, 0x0a, 0x63, 0x33, 0x52, 0x6c, 0x63, 0x6a, 0x45, 0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x77, 0x77, 0x48, 0x55, 0x32, 0x46, 0x73, 0x5a, 0x6d, 0x39, 0x79, 0x5a, 0x44, 0x45, 0x61, 0x4d, 0x42, 0x67, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x52, 0x51, 0x32, 0x39, 0x74, 0x62, 0x32, 0x52, 0x76, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x49, 0x54, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x4d, 0x4d, 0x47, 0x45, 0x46, 0x42, 0x51, 0x53, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x5a, 0x53, 0x42, 0x54, 0x5a, 0x58, 0x4a, 0x32, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x7a, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x0a, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4c, 0x35, 0x41, 0x6e, 0x66, 0x52, 0x75, 0x34, 0x65, 0x70, 0x32, 0x68, 0x78, 0x78, 0x4e, 0x52, 0x55, 0x53, 0x4f, 0x76, 0x6b, 0x62, 0x49, 0x67, 0x77, 0x61, 0x64, 0x77, 0x53, 0x72, 0x2b, 0x47, 0x42, 0x2b, 0x4f, 0x35, 0x41, 0x4c, 0x36, 0x38, 0x36, 0x74, 0x64, 0x55, 0x49, 0x6f, 0x57, 0x4d, 0x51, 0x75, 0x61, 0x42, 0x74, 0x44, 0x46, 0x63, 0x43, 0x4c, 0x4e, 0x53, 0x53, 0x31, 0x55, 0x59, 0x38, 0x79, 0x32, 0x62, 0x6d, 0x68, 0x47, 0x0a, 0x43, 0x31, 0x50, 0x71, 0x79, 0x30, 0x77, 0x6b, 0x77, 0x4c, 0x78, 0x79, 0x54, 0x75, 0x72, 0x78, 0x46, 0x61, 0x37, 0x30, 0x56, 0x4a, 0x6f, 0x53, 0x43, 0x73, 0x4e, 0x36, 0x73, 0x6a, 0x4e, 0x67, 0x34, 0x74, 0x71, 0x4a, 0x56, 0x66, 0x4d, 0x69, 0x57, 0x50, 0x50, 0x65, 0x33, 0x4d, 0x2f, 0x76, 0x67, 0x34, 0x61, 0x69, 0x6a, 0x4a, 0x52, 0x50, 0x6e, 0x32, 0x6a, 0x79, 0x6d, 0x4a, 0x42, 0x47, 0x68, 0x43, 0x66, 0x48, 0x64, 0x72, 0x2f, 0x6a, 0x7a, 0x44, 0x55, 0x73, 0x0a, 0x69, 0x31, 0x34, 0x48, 0x5a, 0x47, 0x57, 0x43, 0x77, 0x45, 0x69, 0x77, 0x71, 0x4a, 0x48, 0x35, 0x59, 0x5a, 0x39, 0x32, 0x49, 0x46, 0x43, 0x6f, 0x6b, 0x63, 0x64, 0x6d, 0x74, 0x65, 0x74, 0x34, 0x59, 0x67, 0x4e, 0x57, 0x38, 0x49, 0x6f, 0x61, 0x45, 0x2b, 0x6f, 0x78, 0x6f, 0x78, 0x36, 0x67, 0x6d, 0x66, 0x30, 0x34, 0x39, 0x76, 0x59, 0x6e, 0x4d, 0x6c, 0x68, 0x76, 0x42, 0x2f, 0x56, 0x72, 0x75, 0x50, 0x73, 0x55, 0x4b, 0x36, 0x2b, 0x33, 0x71, 0x73, 0x7a, 0x57, 0x0a, 0x59, 0x31, 0x39, 0x7a, 0x6a, 0x4e, 0x6f, 0x46, 0x6d, 0x61, 0x67, 0x34, 0x71, 0x4d, 0x73, 0x58, 0x65, 0x44, 0x5a, 0x52, 0x72, 0x4f, 0x6d, 0x65, 0x39, 0x48, 0x67, 0x36, 0x6a, 0x63, 0x38, 0x50, 0x32, 0x55, 0x4c, 0x69, 0x6d, 0x41, 0x79, 0x72, 0x4c, 0x35, 0x38, 0x4f, 0x41, 0x64, 0x37, 0x76, 0x6e, 0x35, 0x6c, 0x4a, 0x38, 0x53, 0x33, 0x66, 0x72, 0x48, 0x52, 0x4e, 0x47, 0x35, 0x69, 0x31, 0x52, 0x38, 0x58, 0x6c, 0x4b, 0x64, 0x48, 0x35, 0x6b, 0x42, 0x6a, 0x48, 0x0a, 0x59, 0x70, 0x79, 0x2b, 0x67, 0x38, 0x63, 0x6d, 0x65, 0x7a, 0x36, 0x4b, 0x4a, 0x63, 0x66, 0x41, 0x33, 0x5a, 0x33, 0x6d, 0x4e, 0x57, 0x67, 0x51, 0x49, 0x4a, 0x32, 0x50, 0x32, 0x4e, 0x37, 0x53, 0x77, 0x34, 0x53, 0x63, 0x44, 0x56, 0x37, 0x6f, 0x4c, 0x38, 0x6b, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4f, 0x42, 0x77, 0x44, 0x43, 0x42, 0x76, 0x54, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x6f, 0x42, 0x45, 0x4b, 0x0a, 0x49, 0x7a, 0x36, 0x57, 0x38, 0x51, 0x66, 0x73, 0x34, 0x71, 0x38, 0x70, 0x37, 0x34, 0x4b, 0x6c, 0x66, 0x39, 0x41, 0x77, 0x70, 0x4c, 0x51, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x65, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x66, 0x0a, 0x42, 0x48, 0x51, 0x77, 0x63, 0x6a, 0x41, 0x34, 0x6f, 0x44, 0x61, 0x67, 0x4e, 0x49, 0x59, 0x79, 0x61, 0x48, 0x52, 0x30, 0x63, 0x44, 0x6f, 0x76, 0x4c, 0x32, 0x4e, 0x79, 0x62, 0x43, 0x35, 0x6a, 0x62, 0x32, 0x31, 0x76, 0x5a, 0x47, 0x39, 0x6a, 0x59, 0x53, 0x35, 0x6a, 0x62, 0x32, 0x30, 0x76, 0x51, 0x55, 0x46, 0x42, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x56, 0x54, 0x5a, 0x58, 0x4a, 0x32, 0x61, 0x57, 0x4e, 0x6c, 0x0a, 0x63, 0x79, 0x35, 0x6a, 0x63, 0x6d, 0x77, 0x77, 0x4e, 0x71, 0x41, 0x30, 0x6f, 0x44, 0x4b, 0x47, 0x4d, 0x47, 0x68, 0x30, 0x64, 0x48, 0x41, 0x36, 0x4c, 0x79, 0x39, 0x6a, 0x63, 0x6d, 0x77, 0x75, 0x59, 0x32, 0x39, 0x74, 0x62, 0x32, 0x52, 0x76, 0x4c, 0x6d, 0x35, 0x6c, 0x64, 0x43, 0x39, 0x42, 0x51, 0x55, 0x46, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x5a, 0x56, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x0a, 0x4c, 0x6d, 0x4e, 0x79, 0x62, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x45, 0x41, 0x43, 0x46, 0x62, 0x38, 0x41, 0x76, 0x43, 0x62, 0x36, 0x50, 0x2b, 0x6b, 0x2b, 0x74, 0x5a, 0x37, 0x78, 0x6b, 0x53, 0x41, 0x7a, 0x6b, 0x2f, 0x45, 0x78, 0x66, 0x59, 0x41, 0x57, 0x4d, 0x79, 0x6d, 0x74, 0x72, 0x77, 0x55, 0x53, 0x57, 0x67, 0x45, 0x64, 0x75, 0x6a, 0x6d, 0x0a, 0x37, 0x6c, 0x33, 0x73, 0x41, 0x67, 0x39, 0x67, 0x31, 0x6f, 0x31, 0x51, 0x47, 0x45, 0x38, 0x6d, 0x54, 0x67, 0x48, 0x6a, 0x35, 0x72, 0x43, 0x6c, 0x37, 0x72, 0x2b, 0x38, 0x64, 0x46, 0x52, 0x42, 0x76, 0x2f, 0x33, 0x38, 0x45, 0x72, 0x6a, 0x48, 0x54, 0x31, 0x72, 0x30, 0x69, 0x57, 0x41, 0x46, 0x66, 0x32, 0x43, 0x33, 0x42, 0x55, 0x72, 0x7a, 0x39, 0x76, 0x48, 0x43, 0x76, 0x38, 0x53, 0x35, 0x64, 0x49, 0x61, 0x32, 0x4c, 0x58, 0x31, 0x72, 0x7a, 0x4e, 0x4c, 0x7a, 0x0a, 0x52, 0x74, 0x30, 0x76, 0x78, 0x75, 0x42, 0x71, 0x77, 0x38, 0x4d, 0x30, 0x41, 0x79, 0x78, 0x39, 0x6c, 0x74, 0x31, 0x61, 0x77, 0x67, 0x36, 0x6e, 0x43, 0x70, 0x6e, 0x42, 0x42, 0x59, 0x75, 0x72, 0x44, 0x43, 0x2f, 0x7a, 0x58, 0x44, 0x72, 0x50, 0x62, 0x44, 0x64, 0x56, 0x43, 0x59, 0x66, 0x65, 0x55, 0x30, 0x42, 0x73, 0x57, 0x4f, 0x2f, 0x38, 0x74, 0x71, 0x74, 0x6c, 0x62, 0x67, 0x54, 0x32, 0x47, 0x39, 0x77, 0x38, 0x34, 0x46, 0x6f, 0x56, 0x78, 0x70, 0x37, 0x5a, 0x0a, 0x38, 0x56, 0x6c, 0x49, 0x4d, 0x43, 0x46, 0x6c, 0x41, 0x32, 0x7a, 0x73, 0x36, 0x53, 0x46, 0x7a, 0x37, 0x4a, 0x73, 0x44, 0x6f, 0x65, 0x41, 0x33, 0x72, 0x61, 0x41, 0x56, 0x47, 0x49, 0x2f, 0x36, 0x75, 0x67, 0x4c, 0x4f, 0x70, 0x79, 0x79, 0x70, 0x45, 0x42, 0x4d, 0x73, 0x31, 0x4f, 0x55, 0x49, 0x4a, 0x71, 0x73, 0x69, 0x6c, 0x32, 0x44, 0x34, 0x6b, 0x46, 0x35, 0x30, 0x31, 0x4b, 0x4b, 0x61, 0x55, 0x37, 0x33, 0x79, 0x71, 0x57, 0x6a, 0x67, 0x6f, 0x6d, 0x37, 0x43, 0x0a, 0x31, 0x32, 0x79, 0x78, 0x6f, 0x77, 0x2b, 0x65, 0x76, 0x2b, 0x74, 0x6f, 0x35, 0x31, 0x62, 0x79, 0x72, 0x76, 0x4c, 0x6a, 0x4b, 0x7a, 0x67, 0x36, 0x43, 0x59, 0x47, 0x31, 0x61, 0x34, 0x58, 0x58, 0x76, 0x69, 0x33, 0x74, 0x50, 0x78, 0x71, 0x33, 0x73, 0x6d, 0x50, 0x69, 0x39, 0x57, 0x49, 0x73, 0x67, 0x74, 0x52, 0x71, 0x41, 0x45, 0x46, 0x51, 0x38, 0x54, 0x6d, 0x44, 0x6e, 0x35, 0x58, 0x70, 0x4e, 0x70, 0x61, 0x59, 0x62, 0x67, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x51, 0x75, 0x6f, 0x56, 0x61, 0x64, 0x69, 0x73, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x74, 0x7a, 0x43, 0x43, 0x41, 0x35, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x43, 0x42, 0x51, 0x6b, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x77, 0x52, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x6b, 0x30, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x0a, 0x45, 0x46, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x47, 0x7a, 0x41, 0x5a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x6c, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x6a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x77, 0x4e, 0x6a, 0x45, 0x78, 0x4d, 0x6a, 0x51, 0x78, 0x0a, 0x4f, 0x44, 0x49, 0x33, 0x4d, 0x44, 0x42, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4d, 0x54, 0x45, 0x78, 0x4d, 0x6a, 0x51, 0x78, 0x4f, 0x44, 0x49, 0x7a, 0x4d, 0x7a, 0x4e, 0x61, 0x4d, 0x45, 0x55, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4a, 0x4e, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x42, 0x52, 0x64, 0x57, 0x39, 0x57, 0x59, 0x57, 0x52, 0x70, 0x63, 0x79, 0x42, 0x4d, 0x0a, 0x61, 0x57, 0x31, 0x70, 0x64, 0x47, 0x56, 0x6b, 0x4d, 0x52, 0x73, 0x77, 0x47, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x4a, 0x52, 0x64, 0x57, 0x39, 0x57, 0x59, 0x57, 0x52, 0x70, 0x63, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x49, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x0a, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x61, 0x47, 0x4d, 0x70, 0x4c, 0x6c, 0x41, 0x30, 0x41, 0x4c, 0x61, 0x38, 0x44, 0x4b, 0x59, 0x72, 0x77, 0x44, 0x34, 0x48, 0x49, 0x72, 0x6b, 0x77, 0x5a, 0x68, 0x52, 0x30, 0x49, 0x6e, 0x36, 0x73, 0x70, 0x52, 0x49, 0x58, 0x7a, 0x4c, 0x34, 0x47, 0x74, 0x4d, 0x68, 0x36, 0x51, 0x52, 0x72, 0x2b, 0x6a, 0x68, 0x69, 0x59, 0x61, 0x48, 0x76, 0x35, 0x2b, 0x48, 0x42, 0x67, 0x36, 0x0a, 0x58, 0x4a, 0x78, 0x67, 0x46, 0x79, 0x6f, 0x36, 0x64, 0x49, 0x4d, 0x7a, 0x4d, 0x48, 0x31, 0x68, 0x56, 0x42, 0x48, 0x4c, 0x37, 0x61, 0x76, 0x67, 0x35, 0x74, 0x4b, 0x69, 0x66, 0x76, 0x56, 0x72, 0x62, 0x78, 0x69, 0x33, 0x43, 0x67, 0x73, 0x74, 0x2f, 0x65, 0x6b, 0x2b, 0x37, 0x77, 0x72, 0x47, 0x73, 0x78, 0x44, 0x70, 0x33, 0x4d, 0x4a, 0x47, 0x46, 0x2f, 0x68, 0x64, 0x2f, 0x61, 0x54, 0x61, 0x2f, 0x35, 0x35, 0x4a, 0x57, 0x70, 0x7a, 0x6d, 0x4d, 0x2b, 0x59, 0x6b, 0x0a, 0x6c, 0x76, 0x63, 0x2f, 0x75, 0x6c, 0x73, 0x72, 0x48, 0x48, 0x6f, 0x31, 0x77, 0x74, 0x5a, 0x6e, 0x2f, 0x71, 0x74, 0x6d, 0x55, 0x49, 0x74, 0x74, 0x4b, 0x47, 0x41, 0x72, 0x37, 0x39, 0x64, 0x67, 0x77, 0x38, 0x65, 0x54, 0x76, 0x49, 0x30, 0x32, 0x6b, 0x66, 0x4e, 0x2f, 0x2b, 0x4e, 0x73, 0x52, 0x45, 0x38, 0x53, 0x63, 0x64, 0x33, 0x62, 0x42, 0x72, 0x72, 0x63, 0x43, 0x61, 0x6f, 0x46, 0x36, 0x71, 0x55, 0x57, 0x44, 0x34, 0x67, 0x58, 0x6d, 0x75, 0x56, 0x62, 0x42, 0x0a, 0x6c, 0x44, 0x65, 0x50, 0x53, 0x48, 0x46, 0x6a, 0x49, 0x75, 0x77, 0x58, 0x5a, 0x51, 0x65, 0x56, 0x69, 0x6b, 0x76, 0x66, 0x6a, 0x38, 0x5a, 0x61, 0x43, 0x75, 0x57, 0x77, 0x34, 0x31, 0x39, 0x65, 0x61, 0x78, 0x47, 0x72, 0x44, 0x50, 0x6d, 0x46, 0x36, 0x30, 0x54, 0x70, 0x2b, 0x41, 0x52, 0x7a, 0x38, 0x75, 0x6e, 0x2b, 0x58, 0x4a, 0x69, 0x4d, 0x39, 0x58, 0x4f, 0x76, 0x61, 0x37, 0x52, 0x2b, 0x7a, 0x64, 0x52, 0x63, 0x41, 0x69, 0x74, 0x4d, 0x4f, 0x65, 0x47, 0x79, 0x0a, 0x6c, 0x5a, 0x55, 0x74, 0x51, 0x6f, 0x66, 0x58, 0x31, 0x62, 0x4f, 0x51, 0x51, 0x37, 0x64, 0x73, 0x45, 0x2f, 0x48, 0x65, 0x33, 0x66, 0x62, 0x45, 0x2b, 0x49, 0x6b, 0x2f, 0x30, 0x58, 0x58, 0x31, 0x6b, 0x73, 0x4f, 0x52, 0x31, 0x59, 0x71, 0x49, 0x30, 0x4a, 0x44, 0x73, 0x33, 0x47, 0x33, 0x65, 0x69, 0x63, 0x4a, 0x6c, 0x63, 0x5a, 0x61, 0x4c, 0x44, 0x51, 0x50, 0x39, 0x6e, 0x4c, 0x39, 0x62, 0x46, 0x71, 0x79, 0x53, 0x32, 0x2b, 0x72, 0x2b, 0x65, 0x58, 0x79, 0x74, 0x0a, 0x36, 0x36, 0x2f, 0x33, 0x46, 0x73, 0x76, 0x62, 0x7a, 0x53, 0x55, 0x72, 0x35, 0x52, 0x2f, 0x37, 0x6d, 0x70, 0x2f, 0x69, 0x55, 0x63, 0x77, 0x36, 0x55, 0x77, 0x78, 0x49, 0x35, 0x67, 0x36, 0x39, 0x79, 0x62, 0x52, 0x32, 0x42, 0x6c, 0x4c, 0x6d, 0x45, 0x52, 0x4f, 0x46, 0x63, 0x6d, 0x4d, 0x44, 0x42, 0x4f, 0x41, 0x45, 0x4e, 0x69, 0x73, 0x67, 0x47, 0x51, 0x4c, 0x6f, 0x64, 0x4b, 0x63, 0x66, 0x74, 0x73, 0x6c, 0x57, 0x5a, 0x76, 0x42, 0x31, 0x4a, 0x64, 0x78, 0x6e, 0x0a, 0x77, 0x51, 0x35, 0x68, 0x59, 0x49, 0x69, 0x7a, 0x50, 0x74, 0x47, 0x6f, 0x2f, 0x4b, 0x50, 0x61, 0x48, 0x62, 0x44, 0x52, 0x73, 0x53, 0x4e, 0x55, 0x33, 0x30, 0x52, 0x32, 0x62, 0x65, 0x31, 0x42, 0x32, 0x4d, 0x47, 0x79, 0x49, 0x72, 0x5a, 0x54, 0x48, 0x4e, 0x38, 0x31, 0x48, 0x64, 0x79, 0x68, 0x64, 0x79, 0x6f, 0x78, 0x35, 0x43, 0x33, 0x31, 0x35, 0x65, 0x58, 0x62, 0x79, 0x4f, 0x44, 0x2f, 0x35, 0x59, 0x44, 0x58, 0x43, 0x32, 0x4f, 0x67, 0x2f, 0x7a, 0x4f, 0x68, 0x0a, 0x44, 0x37, 0x6f, 0x73, 0x46, 0x52, 0x58, 0x71, 0x6c, 0x37, 0x50, 0x53, 0x6f, 0x72, 0x57, 0x2b, 0x38, 0x6f, 0x79, 0x57, 0x48, 0x68, 0x71, 0x50, 0x48, 0x57, 0x79, 0x6b, 0x59, 0x54, 0x65, 0x35, 0x68, 0x6e, 0x4d, 0x7a, 0x31, 0x35, 0x65, 0x57, 0x6e, 0x69, 0x4e, 0x39, 0x67, 0x71, 0x52, 0x4d, 0x67, 0x65, 0x4b, 0x68, 0x30, 0x62, 0x70, 0x6e, 0x58, 0x35, 0x55, 0x48, 0x6f, 0x79, 0x63, 0x52, 0x37, 0x68, 0x59, 0x51, 0x65, 0x37, 0x78, 0x46, 0x53, 0x6b, 0x79, 0x79, 0x0a, 0x42, 0x4e, 0x4b, 0x72, 0x37, 0x39, 0x58, 0x39, 0x44, 0x46, 0x48, 0x4f, 0x55, 0x47, 0x6f, 0x49, 0x4d, 0x66, 0x6d, 0x52, 0x32, 0x67, 0x79, 0x50, 0x5a, 0x46, 0x77, 0x44, 0x77, 0x7a, 0x71, 0x4c, 0x49, 0x44, 0x39, 0x75, 0x6a, 0x57, 0x63, 0x39, 0x4f, 0x74, 0x62, 0x2b, 0x66, 0x56, 0x75, 0x49, 0x79, 0x56, 0x37, 0x37, 0x7a, 0x47, 0x48, 0x63, 0x69, 0x7a, 0x4e, 0x33, 0x30, 0x30, 0x51, 0x79, 0x4e, 0x51, 0x6c, 0x69, 0x42, 0x4a, 0x49, 0x57, 0x45, 0x4e, 0x69, 0x65, 0x0a, 0x4a, 0x30, 0x66, 0x37, 0x4f, 0x79, 0x48, 0x6a, 0x2b, 0x4f, 0x73, 0x64, 0x57, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x34, 0x47, 0x77, 0x4d, 0x49, 0x47, 0x74, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x43, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x0a, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x51, 0x61, 0x68, 0x47, 0x4b, 0x38, 0x53, 0x45, 0x77, 0x7a, 0x4a, 0x51, 0x54, 0x55, 0x37, 0x74, 0x44, 0x32, 0x41, 0x38, 0x51, 0x5a, 0x52, 0x74, 0x47, 0x55, 0x61, 0x7a, 0x42, 0x75, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x4d, 0x45, 0x5a, 0x7a, 0x42, 0x6c, 0x67, 0x42, 0x51, 0x61, 0x68, 0x47, 0x4b, 0x38, 0x53, 0x45, 0x77, 0x7a, 0x4a, 0x51, 0x54, 0x55, 0x37, 0x74, 0x44, 0x32, 0x41, 0x38, 0x51, 0x5a, 0x52, 0x74, 0x47, 0x55, 0x0a, 0x61, 0x36, 0x46, 0x4a, 0x70, 0x45, 0x63, 0x77, 0x52, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x6b, 0x30, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x45, 0x46, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x47, 0x7a, 0x41, 0x5a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x0a, 0x45, 0x6c, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x6f, 0x49, 0x43, 0x42, 0x51, 0x6b, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x44, 0x34, 0x4b, 0x46, 0x6b, 0x32, 0x66, 0x42, 0x6c, 0x75, 0x6f, 0x72, 0x6e, 0x46, 0x64, 0x4c, 0x77, 0x55, 0x76, 0x0a, 0x5a, 0x2b, 0x59, 0x54, 0x52, 0x59, 0x50, 0x45, 0x4e, 0x76, 0x62, 0x7a, 0x77, 0x43, 0x59, 0x4d, 0x44, 0x62, 0x56, 0x48, 0x5a, 0x46, 0x33, 0x34, 0x74, 0x48, 0x4c, 0x4a, 0x52, 0x71, 0x55, 0x44, 0x47, 0x43, 0x64, 0x56, 0x69, 0x58, 0x68, 0x39, 0x64, 0x75, 0x71, 0x57, 0x4e, 0x49, 0x41, 0x58, 0x49, 0x4e, 0x7a, 0x6e, 0x67, 0x2f, 0x69, 0x4e, 0x2f, 0x41, 0x65, 0x34, 0x32, 0x6c, 0x39, 0x4e, 0x4c, 0x6d, 0x65, 0x79, 0x68, 0x50, 0x33, 0x5a, 0x52, 0x50, 0x78, 0x33, 0x0a, 0x55, 0x49, 0x48, 0x6d, 0x66, 0x4c, 0x54, 0x4a, 0x44, 0x51, 0x74, 0x79, 0x55, 0x2f, 0x68, 0x32, 0x42, 0x77, 0x64, 0x42, 0x52, 0x35, 0x59, 0x4d, 0x2b, 0x2b, 0x43, 0x43, 0x4a, 0x70, 0x4e, 0x56, 0x6a, 0x50, 0x34, 0x69, 0x48, 0x32, 0x42, 0x6c, 0x66, 0x46, 0x2f, 0x6e, 0x4a, 0x72, 0x50, 0x33, 0x4d, 0x70, 0x43, 0x59, 0x55, 0x4e, 0x51, 0x33, 0x63, 0x56, 0x58, 0x32, 0x6b, 0x69, 0x46, 0x34, 0x39, 0x35, 0x56, 0x35, 0x2b, 0x76, 0x67, 0x74, 0x4a, 0x6f, 0x64, 0x6d, 0x0a, 0x56, 0x6a, 0x42, 0x33, 0x70, 0x6a, 0x64, 0x34, 0x4d, 0x31, 0x49, 0x51, 0x57, 0x4b, 0x34, 0x2f, 0x59, 0x59, 0x37, 0x79, 0x61, 0x72, 0x48, 0x76, 0x47, 0x48, 0x35, 0x4b, 0x57, 0x57, 0x50, 0x4b, 0x6a, 0x61, 0x4a, 0x57, 0x31, 0x61, 0x63, 0x76, 0x76, 0x46, 0x59, 0x66, 0x7a, 0x7a, 0x6e, 0x42, 0x34, 0x76, 0x73, 0x4b, 0x71, 0x42, 0x55, 0x73, 0x66, 0x55, 0x31, 0x36, 0x59, 0x38, 0x5a, 0x73, 0x6c, 0x30, 0x51, 0x38, 0x30, 0x6d, 0x2f, 0x44, 0x53, 0x68, 0x63, 0x4b, 0x0a, 0x2b, 0x4a, 0x44, 0x53, 0x56, 0x36, 0x49, 0x5a, 0x55, 0x61, 0x55, 0x74, 0x6c, 0x30, 0x48, 0x61, 0x42, 0x30, 0x2b, 0x70, 0x55, 0x4e, 0x71, 0x51, 0x6a, 0x5a, 0x52, 0x47, 0x34, 0x54, 0x37, 0x77, 0x6c, 0x50, 0x30, 0x51, 0x41, 0x44, 0x6a, 0x31, 0x4f, 0x2b, 0x68, 0x41, 0x34, 0x62, 0x52, 0x75, 0x56, 0x68, 0x6f, 0x67, 0x7a, 0x47, 0x39, 0x59, 0x6a, 0x65, 0x30, 0x75, 0x52, 0x59, 0x2f, 0x57, 0x36, 0x5a, 0x4d, 0x2f, 0x35, 0x37, 0x45, 0x73, 0x33, 0x7a, 0x72, 0x57, 0x0a, 0x49, 0x6f, 0x7a, 0x63, 0x68, 0x4c, 0x73, 0x69, 0x62, 0x39, 0x44, 0x34, 0x35, 0x4d, 0x59, 0x35, 0x36, 0x51, 0x53, 0x49, 0x50, 0x4d, 0x4f, 0x36, 0x36, 0x31, 0x56, 0x36, 0x62, 0x59, 0x43, 0x5a, 0x4a, 0x50, 0x56, 0x73, 0x41, 0x66, 0x76, 0x34, 0x6c, 0x37, 0x43, 0x55, 0x57, 0x2b, 0x76, 0x39, 0x30, 0x6d, 0x2f, 0x78, 0x64, 0x32, 0x67, 0x4e, 0x4e, 0x57, 0x51, 0x6a, 0x72, 0x4c, 0x68, 0x56, 0x6f, 0x51, 0x50, 0x52, 0x54, 0x55, 0x49, 0x5a, 0x33, 0x50, 0x68, 0x31, 0x0a, 0x57, 0x56, 0x61, 0x6a, 0x2b, 0x61, 0x68, 0x4a, 0x65, 0x66, 0x69, 0x76, 0x44, 0x72, 0x6b, 0x52, 0x6f, 0x48, 0x79, 0x33, 0x61, 0x75, 0x30, 0x30, 0x30, 0x4c, 0x59, 0x6d, 0x59, 0x6a, 0x67, 0x61, 0x68, 0x77, 0x7a, 0x34, 0x36, 0x50, 0x30, 0x75, 0x30, 0x35, 0x42, 0x2f, 0x42, 0x35, 0x45, 0x71, 0x48, 0x64, 0x5a, 0x2b, 0x58, 0x49, 0x57, 0x44, 0x6d, 0x62, 0x41, 0x34, 0x43, 0x44, 0x2f, 0x70, 0x58, 0x76, 0x6b, 0x31, 0x42, 0x2b, 0x54, 0x4a, 0x59, 0x6d, 0x35, 0x58, 0x0a, 0x66, 0x36, 0x64, 0x51, 0x6c, 0x66, 0x65, 0x36, 0x79, 0x4a, 0x76, 0x6d, 0x6a, 0x71, 0x49, 0x42, 0x78, 0x64, 0x5a, 0x6d, 0x76, 0x33, 0x6c, 0x68, 0x38, 0x7a, 0x77, 0x63, 0x34, 0x62, 0x6d, 0x43, 0x58, 0x46, 0x32, 0x67, 0x77, 0x2b, 0x6e, 0x59, 0x53, 0x4c, 0x30, 0x5a, 0x6f, 0x68, 0x45, 0x55, 0x47, 0x57, 0x36, 0x79, 0x68, 0x68, 0x74, 0x6f, 0x50, 0x6b, 0x67, 0x33, 0x47, 0x6f, 0x69, 0x33, 0x58, 0x5a, 0x5a, 0x65, 0x6e, 0x4d, 0x66, 0x76, 0x4a, 0x32, 0x49, 0x49, 0x0a, 0x34, 0x70, 0x45, 0x5a, 0x58, 0x4e, 0x4c, 0x78, 0x49, 0x64, 0x32, 0x36, 0x46, 0x30, 0x4b, 0x43, 0x6c, 0x33, 0x47, 0x42, 0x55, 0x7a, 0x47, 0x70, 0x6e, 0x2f, 0x5a, 0x39, 0x59, 0x72, 0x39, 0x79, 0x34, 0x61, 0x4f, 0x54, 0x48, 0x63, 0x79, 0x4b, 0x4a, 0x6c, 0x6f, 0x4a, 0x4f, 0x4e, 0x44, 0x4f, 0x31, 0x77, 0x32, 0x41, 0x46, 0x72, 0x52, 0x34, 0x70, 0x54, 0x71, 0x48, 0x54, 0x49, 0x32, 0x4b, 0x70, 0x64, 0x56, 0x47, 0x6c, 0x2f, 0x49, 0x73, 0x45, 0x4c, 0x6d, 0x38, 0x0a, 0x56, 0x43, 0x4c, 0x41, 0x41, 0x56, 0x42, 0x70, 0x51, 0x35, 0x37, 0x30, 0x73, 0x75, 0x39, 0x74, 0x2b, 0x4f, 0x7a, 0x61, 0x38, 0x65, 0x4f, 0x78, 0x37, 0x39, 0x2b, 0x52, 0x6a, 0x31, 0x51, 0x71, 0x43, 0x79, 0x58, 0x42, 0x4a, 0x68, 0x6e, 0x45, 0x55, 0x68, 0x41, 0x46, 0x5a, 0x64, 0x57, 0x43, 0x45, 0x4f, 0x72, 0x43, 0x4d, 0x63, 0x30, 0x75, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x51, 0x75, 0x6f, 0x56, 0x61, 0x64, 0x69, 0x73, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x47, 0x6e, 0x54, 0x43, 0x43, 0x42, 0x49, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x43, 0x42, 0x63, 0x59, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x77, 0x52, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x6b, 0x30, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x0a, 0x45, 0x46, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x47, 0x7a, 0x41, 0x5a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x6c, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x7a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x77, 0x4e, 0x6a, 0x45, 0x78, 0x4d, 0x6a, 0x51, 0x78, 0x0a, 0x4f, 0x54, 0x45, 0x78, 0x4d, 0x6a, 0x4e, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4d, 0x54, 0x45, 0x78, 0x4d, 0x6a, 0x51, 0x78, 0x4f, 0x54, 0x41, 0x32, 0x4e, 0x44, 0x52, 0x61, 0x4d, 0x45, 0x55, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4a, 0x4e, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x42, 0x52, 0x64, 0x57, 0x39, 0x57, 0x59, 0x57, 0x52, 0x70, 0x63, 0x79, 0x42, 0x4d, 0x0a, 0x61, 0x57, 0x31, 0x70, 0x64, 0x47, 0x56, 0x6b, 0x4d, 0x52, 0x73, 0x77, 0x47, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x4a, 0x52, 0x64, 0x57, 0x39, 0x57, 0x59, 0x57, 0x52, 0x70, 0x63, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x4d, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x0a, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x44, 0x4d, 0x56, 0x30, 0x49, 0x57, 0x56, 0x4a, 0x7a, 0x6d, 0x6d, 0x4e, 0x50, 0x54, 0x54, 0x65, 0x37, 0x2b, 0x37, 0x63, 0x65, 0x66, 0x51, 0x7a, 0x6c, 0x4b, 0x5a, 0x62, 0x50, 0x6f, 0x46, 0x6f, 0x67, 0x30, 0x32, 0x77, 0x31, 0x5a, 0x6b, 0x58, 0x54, 0x50, 0x6b, 0x72, 0x67, 0x45, 0x51, 0x4b, 0x30, 0x43, 0x53, 0x7a, 0x47, 0x72, 0x76, 0x49, 0x32, 0x52, 0x61, 0x4e, 0x67, 0x67, 0x0a, 0x44, 0x68, 0x6f, 0x42, 0x34, 0x68, 0x70, 0x37, 0x54, 0x68, 0x64, 0x64, 0x34, 0x6f, 0x71, 0x33, 0x50, 0x35, 0x6b, 0x61, 0x7a, 0x65, 0x74, 0x68, 0x71, 0x38, 0x4a, 0x6c, 0x70, 0x68, 0x2b, 0x33, 0x74, 0x37, 0x32, 0x33, 0x6a, 0x2f, 0x7a, 0x39, 0x63, 0x49, 0x38, 0x4c, 0x6f, 0x47, 0x65, 0x2b, 0x41, 0x61, 0x4a, 0x5a, 0x7a, 0x33, 0x48, 0x6d, 0x44, 0x79, 0x6c, 0x32, 0x2f, 0x37, 0x46, 0x57, 0x65, 0x55, 0x55, 0x72, 0x48, 0x35, 0x35, 0x36, 0x56, 0x4f, 0x69, 0x6a, 0x0a, 0x4b, 0x54, 0x56, 0x6f, 0x70, 0x41, 0x46, 0x50, 0x44, 0x36, 0x51, 0x75, 0x4e, 0x2b, 0x38, 0x62, 0x76, 0x2b, 0x4f, 0x50, 0x45, 0x4b, 0x68, 0x79, 0x71, 0x31, 0x68, 0x58, 0x35, 0x31, 0x53, 0x47, 0x79, 0x4d, 0x6e, 0x7a, 0x57, 0x39, 0x6f, 0x73, 0x32, 0x6c, 0x32, 0x4f, 0x62, 0x6a, 0x79, 0x6a, 0x50, 0x74, 0x72, 0x37, 0x67, 0x75, 0x58, 0x64, 0x38, 0x6c, 0x79, 0x79, 0x42, 0x54, 0x4e, 0x76, 0x69, 0x6a, 0x62, 0x4f, 0x30, 0x42, 0x4e, 0x4f, 0x2f, 0x37, 0x39, 0x4b, 0x0a, 0x44, 0x44, 0x52, 0x4d, 0x70, 0x73, 0x4d, 0x68, 0x76, 0x56, 0x41, 0x45, 0x56, 0x65, 0x75, 0x78, 0x75, 0x35, 0x33, 0x37, 0x52, 0x52, 0x35, 0x6b, 0x46, 0x64, 0x35, 0x56, 0x41, 0x59, 0x77, 0x43, 0x64, 0x72, 0x58, 0x4c, 0x6f, 0x54, 0x39, 0x43, 0x61, 0x62, 0x77, 0x76, 0x76, 0x57, 0x68, 0x44, 0x46, 0x6c, 0x61, 0x4a, 0x4b, 0x6a, 0x64, 0x68, 0x6b, 0x66, 0x32, 0x6d, 0x72, 0x6b, 0x37, 0x41, 0x79, 0x78, 0x52, 0x6c, 0x6c, 0x44, 0x64, 0x4c, 0x6b, 0x67, 0x62, 0x76, 0x0a, 0x42, 0x4e, 0x44, 0x49, 0x6e, 0x49, 0x6a, 0x62, 0x43, 0x33, 0x75, 0x42, 0x72, 0x37, 0x45, 0x39, 0x4b, 0x73, 0x52, 0x6c, 0x4f, 0x6e, 0x69, 0x32, 0x37, 0x74, 0x79, 0x41, 0x73, 0x64, 0x4c, 0x54, 0x6d, 0x5a, 0x77, 0x36, 0x37, 0x6d, 0x74, 0x61, 0x61, 0x37, 0x4f, 0x4e, 0x74, 0x39, 0x58, 0x4f, 0x6e, 0x4d, 0x4b, 0x2b, 0x70, 0x55, 0x73, 0x76, 0x46, 0x72, 0x47, 0x65, 0x61, 0x44, 0x73, 0x47, 0x62, 0x36, 0x35, 0x39, 0x6e, 0x2f, 0x6a, 0x65, 0x37, 0x4d, 0x77, 0x70, 0x0a, 0x70, 0x35, 0x69, 0x6a, 0x4a, 0x55, 0x4d, 0x76, 0x37, 0x2f, 0x46, 0x66, 0x4a, 0x75, 0x47, 0x49, 0x54, 0x66, 0x68, 0x65, 0x62, 0x74, 0x66, 0x5a, 0x46, 0x47, 0x34, 0x5a, 0x4d, 0x32, 0x6d, 0x6e, 0x4f, 0x34, 0x53, 0x4a, 0x6b, 0x38, 0x52, 0x54, 0x56, 0x52, 0x4f, 0x68, 0x55, 0x58, 0x68, 0x41, 0x2b, 0x4c, 0x6a, 0x4a, 0x6f, 0x75, 0x35, 0x37, 0x75, 0x6c, 0x4a, 0x43, 0x67, 0x35, 0x34, 0x55, 0x37, 0x51, 0x56, 0x53, 0x57, 0x6c, 0x6c, 0x57, 0x70, 0x35, 0x66, 0x38, 0x0a, 0x6e, 0x54, 0x38, 0x4b, 0x4b, 0x64, 0x6a, 0x63, 0x54, 0x35, 0x45, 0x4f, 0x45, 0x37, 0x7a, 0x65, 0x6c, 0x61, 0x54, 0x66, 0x69, 0x35, 0x6d, 0x2b, 0x72, 0x4a, 0x73, 0x7a, 0x69, 0x4f, 0x2b, 0x31, 0x67, 0x61, 0x38, 0x62, 0x78, 0x69, 0x4a, 0x54, 0x79, 0x50, 0x62, 0x48, 0x37, 0x70, 0x63, 0x55, 0x73, 0x4d, 0x56, 0x38, 0x65, 0x46, 0x4c, 0x49, 0x38, 0x4d, 0x35, 0x75, 0x64, 0x32, 0x43, 0x45, 0x70, 0x75, 0x6b, 0x71, 0x64, 0x69, 0x44, 0x74, 0x57, 0x41, 0x45, 0x58, 0x0a, 0x4d, 0x4a, 0x50, 0x70, 0x47, 0x6f, 0x76, 0x67, 0x63, 0x32, 0x50, 0x5a, 0x61, 0x70, 0x4b, 0x55, 0x53, 0x55, 0x36, 0x30, 0x72, 0x55, 0x71, 0x46, 0x78, 0x4b, 0x4d, 0x69, 0x4d, 0x50, 0x77, 0x4a, 0x37, 0x57, 0x67, 0x69, 0x63, 0x36, 0x61, 0x49, 0x44, 0x46, 0x55, 0x68, 0x57, 0x4d, 0x58, 0x68, 0x4f, 0x70, 0x38, 0x71, 0x33, 0x63, 0x72, 0x68, 0x6b, 0x4f, 0x44, 0x5a, 0x63, 0x36, 0x74, 0x73, 0x67, 0x4c, 0x6a, 0x6f, 0x43, 0x32, 0x53, 0x54, 0x6f, 0x4a, 0x79, 0x4d, 0x0a, 0x47, 0x66, 0x2b, 0x7a, 0x30, 0x67, 0x7a, 0x73, 0x6b, 0x53, 0x61, 0x48, 0x69, 0x72, 0x4f, 0x69, 0x34, 0x58, 0x43, 0x50, 0x4c, 0x41, 0x72, 0x6c, 0x7a, 0x57, 0x31, 0x6f, 0x55, 0x65, 0x76, 0x61, 0x50, 0x77, 0x56, 0x2f, 0x69, 0x7a, 0x4c, 0x6d, 0x45, 0x31, 0x78, 0x72, 0x2f, 0x6c, 0x39, 0x41, 0x34, 0x69, 0x4c, 0x49, 0x74, 0x4c, 0x52, 0x6b, 0x54, 0x39, 0x61, 0x36, 0x66, 0x55, 0x67, 0x2b, 0x71, 0x47, 0x6b, 0x4d, 0x31, 0x37, 0x75, 0x47, 0x63, 0x63, 0x6c, 0x7a, 0x0a, 0x75, 0x44, 0x38, 0x37, 0x6e, 0x53, 0x56, 0x4c, 0x32, 0x76, 0x39, 0x41, 0x36, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x34, 0x49, 0x42, 0x6c, 0x54, 0x43, 0x43, 0x41, 0x5a, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x43, 0x42, 0x34, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x67, 0x42, 0x49, 0x48, 0x5a, 0x4d, 0x49, 0x48, 0x57, 0x4d, 0x49, 0x48, 0x54, 0x0a, 0x42, 0x67, 0x6b, 0x72, 0x42, 0x67, 0x45, 0x45, 0x41, 0x62, 0x35, 0x59, 0x41, 0x41, 0x4d, 0x77, 0x67, 0x63, 0x55, 0x77, 0x67, 0x5a, 0x4d, 0x47, 0x43, 0x43, 0x73, 0x47, 0x41, 0x51, 0x55, 0x46, 0x42, 0x77, 0x49, 0x43, 0x4d, 0x49, 0x47, 0x47, 0x47, 0x6f, 0x47, 0x44, 0x51, 0x57, 0x35, 0x35, 0x49, 0x48, 0x56, 0x7a, 0x5a, 0x53, 0x42, 0x76, 0x5a, 0x69, 0x42, 0x30, 0x61, 0x47, 0x6c, 0x7a, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x0a, 0x59, 0x58, 0x52, 0x6c, 0x49, 0x47, 0x4e, 0x76, 0x62, 0x6e, 0x4e, 0x30, 0x61, 0x58, 0x52, 0x31, 0x64, 0x47, 0x56, 0x7a, 0x49, 0x47, 0x46, 0x6a, 0x59, 0x32, 0x56, 0x77, 0x64, 0x47, 0x46, 0x75, 0x59, 0x32, 0x55, 0x67, 0x62, 0x32, 0x59, 0x67, 0x64, 0x47, 0x68, 0x6c, 0x49, 0x46, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x79, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x0a, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x5a, 0x53, 0x42, 0x51, 0x62, 0x32, 0x78, 0x70, 0x59, 0x33, 0x6b, 0x67, 0x4c, 0x79, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x46, 0x42, 0x79, 0x59, 0x57, 0x4e, 0x30, 0x61, 0x57, 0x4e, 0x6c, 0x49, 0x46, 0x4e, 0x30, 0x59, 0x58, 0x52, 0x6c, 0x62, 0x57, 0x56, 0x75, 0x64, 0x43, 0x34, 0x77, 0x4c, 0x51, 0x59, 0x49, 0x4b, 0x77, 0x59, 0x42, 0x0a, 0x42, 0x51, 0x55, 0x48, 0x41, 0x67, 0x45, 0x57, 0x49, 0x57, 0x68, 0x30, 0x64, 0x48, 0x41, 0x36, 0x4c, 0x79, 0x39, 0x33, 0x64, 0x33, 0x63, 0x75, 0x63, 0x58, 0x56, 0x76, 0x64, 0x6d, 0x46, 0x6b, 0x61, 0x58, 0x4e, 0x6e, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4c, 0x32, 0x4e, 0x77, 0x63, 0x7a, 0x41, 0x4c, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x0a, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x50, 0x4c, 0x41, 0x45, 0x2b, 0x43, 0x43, 0x51, 0x7a, 0x37, 0x37, 0x37, 0x69, 0x39, 0x6e, 0x4d, 0x70, 0x59, 0x31, 0x58, 0x4e, 0x75, 0x34, 0x79, 0x77, 0x4c, 0x51, 0x4d, 0x47, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x77, 0x52, 0x6e, 0x4d, 0x47, 0x57, 0x41, 0x46, 0x50, 0x4c, 0x41, 0x45, 0x2b, 0x43, 0x43, 0x51, 0x7a, 0x37, 0x37, 0x37, 0x69, 0x39, 0x6e, 0x4d, 0x70, 0x59, 0x31, 0x58, 0x4e, 0x75, 0x34, 0x0a, 0x79, 0x77, 0x4c, 0x51, 0x6f, 0x55, 0x6d, 0x6b, 0x52, 0x7a, 0x42, 0x46, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x43, 0x54, 0x54, 0x45, 0x5a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x51, 0x55, 0x58, 0x56, 0x76, 0x56, 0x6d, 0x46, 0x6b, 0x61, 0x58, 0x4d, 0x67, 0x54, 0x47, 0x6c, 0x74, 0x61, 0x58, 0x52, 0x6c, 0x5a, 0x44, 0x45, 0x62, 0x4d, 0x42, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x41, 0x78, 0x4d, 0x53, 0x55, 0x58, 0x56, 0x76, 0x56, 0x6d, 0x46, 0x6b, 0x61, 0x58, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x7a, 0x67, 0x67, 0x49, 0x46, 0x78, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x54, 0x36, 0x32, 0x67, 0x4c, 0x45, 0x7a, 0x36, 0x77, 0x50, 0x4a, 0x76, 0x39, 0x32, 0x5a, 0x56, 0x0a, 0x71, 0x79, 0x4d, 0x30, 0x37, 0x75, 0x63, 0x70, 0x32, 0x73, 0x4e, 0x62, 0x74, 0x72, 0x43, 0x44, 0x32, 0x64, 0x44, 0x51, 0x34, 0x69, 0x48, 0x37, 0x38, 0x32, 0x43, 0x6e, 0x4f, 0x31, 0x31, 0x67, 0x55, 0x79, 0x65, 0x69, 0x6d, 0x2f, 0x59, 0x49, 0x49, 0x69, 0x72, 0x6e, 0x76, 0x36, 0x42, 0x79, 0x35, 0x5a, 0x77, 0x6b, 0x61, 0x6a, 0x47, 0x78, 0x6b, 0x48, 0x6f, 0x6e, 0x32, 0x34, 0x51, 0x52, 0x69, 0x53, 0x65, 0x6d, 0x64, 0x31, 0x6f, 0x34, 0x31, 0x37, 0x2b, 0x73, 0x0a, 0x68, 0x76, 0x7a, 0x75, 0x58, 0x59, 0x4f, 0x38, 0x42, 0x73, 0x62, 0x52, 0x64, 0x32, 0x73, 0x50, 0x62, 0x53, 0x51, 0x76, 0x53, 0x33, 0x70, 0x73, 0x70, 0x77, 0x65, 0x57, 0x79, 0x75, 0x4f, 0x45, 0x6e, 0x36, 0x32, 0x49, 0x69, 0x78, 0x32, 0x72, 0x46, 0x6f, 0x31, 0x62, 0x5a, 0x68, 0x66, 0x5a, 0x46, 0x76, 0x53, 0x4c, 0x67, 0x4e, 0x4c, 0x64, 0x2b, 0x4c, 0x4a, 0x32, 0x77, 0x2f, 0x77, 0x34, 0x45, 0x36, 0x6f, 0x4d, 0x33, 0x6b, 0x4a, 0x70, 0x4b, 0x32, 0x37, 0x7a, 0x0a, 0x50, 0x4f, 0x75, 0x41, 0x4a, 0x39, 0x76, 0x31, 0x70, 0x6b, 0x51, 0x4e, 0x6e, 0x31, 0x70, 0x56, 0x57, 0x51, 0x76, 0x56, 0x44, 0x56, 0x4a, 0x49, 0x78, 0x61, 0x36, 0x66, 0x38, 0x69, 0x2b, 0x41, 0x78, 0x65, 0x6f, 0x79, 0x55, 0x44, 0x55, 0x53, 0x6c, 0x79, 0x37, 0x42, 0x34, 0x66, 0x2f, 0x78, 0x49, 0x34, 0x68, 0x52, 0x4f, 0x4a, 0x2f, 0x79, 0x5a, 0x6c, 0x5a, 0x32, 0x35, 0x77, 0x39, 0x52, 0x6c, 0x36, 0x56, 0x53, 0x44, 0x45, 0x31, 0x4a, 0x55, 0x5a, 0x55, 0x32, 0x0a, 0x50, 0x62, 0x2b, 0x69, 0x53, 0x77, 0x77, 0x51, 0x48, 0x59, 0x61, 0x5a, 0x54, 0x4b, 0x72, 0x7a, 0x63, 0x68, 0x47, 0x54, 0x35, 0x4f, 0x72, 0x32, 0x6d, 0x39, 0x71, 0x6f, 0x58, 0x61, 0x64, 0x4e, 0x74, 0x35, 0x34, 0x43, 0x72, 0x6e, 0x4d, 0x41, 0x79, 0x4e, 0x6f, 0x6a, 0x41, 0x2b, 0x6a, 0x35, 0x36, 0x68, 0x6c, 0x30, 0x59, 0x67, 0x43, 0x55, 0x79, 0x79, 0x49, 0x67, 0x76, 0x70, 0x53, 0x6e, 0x57, 0x62, 0x57, 0x43, 0x61, 0x72, 0x36, 0x5a, 0x65, 0x58, 0x71, 0x70, 0x0a, 0x38, 0x6b, 0x6f, 0x6b, 0x55, 0x76, 0x64, 0x30, 0x2f, 0x62, 0x70, 0x4f, 0x35, 0x71, 0x67, 0x64, 0x41, 0x6d, 0x36, 0x78, 0x44, 0x59, 0x42, 0x45, 0x77, 0x61, 0x37, 0x54, 0x49, 0x7a, 0x64, 0x66, 0x75, 0x34, 0x56, 0x38, 0x4b, 0x35, 0x49, 0x75, 0x36, 0x48, 0x36, 0x6c, 0x69, 0x39, 0x32, 0x5a, 0x34, 0x62, 0x38, 0x6e, 0x62, 0x79, 0x31, 0x64, 0x71, 0x6e, 0x75, 0x48, 0x2f, 0x67, 0x72, 0x64, 0x53, 0x2f, 0x79, 0x4f, 0x39, 0x53, 0x62, 0x6b, 0x62, 0x6e, 0x42, 0x43, 0x0a, 0x62, 0x6a, 0x50, 0x73, 0x4d, 0x5a, 0x35, 0x37, 0x6b, 0x38, 0x48, 0x6b, 0x79, 0x57, 0x6b, 0x61, 0x50, 0x63, 0x42, 0x72, 0x54, 0x69, 0x4a, 0x74, 0x37, 0x71, 0x74, 0x59, 0x54, 0x63, 0x62, 0x51, 0x51, 0x63, 0x45, 0x72, 0x36, 0x6b, 0x38, 0x53, 0x68, 0x31, 0x37, 0x72, 0x52, 0x64, 0x68, 0x73, 0x39, 0x5a, 0x67, 0x43, 0x30, 0x36, 0x44, 0x59, 0x56, 0x59, 0x6f, 0x47, 0x6d, 0x52, 0x6d, 0x69, 0x6f, 0x48, 0x66, 0x52, 0x4d, 0x4a, 0x36, 0x73, 0x7a, 0x48, 0x58, 0x75, 0x0a, 0x67, 0x2f, 0x57, 0x77, 0x59, 0x6a, 0x6e, 0x50, 0x62, 0x46, 0x66, 0x69, 0x54, 0x4e, 0x4b, 0x52, 0x43, 0x77, 0x35, 0x31, 0x4b, 0x42, 0x75, 0x61, 0x76, 0x2f, 0x30, 0x61, 0x51, 0x2f, 0x48, 0x4b, 0x64, 0x2f, 0x73, 0x37, 0x6a, 0x32, 0x47, 0x34, 0x61, 0x53, 0x67, 0x57, 0x51, 0x67, 0x52, 0x65, 0x63, 0x43, 0x6f, 0x63, 0x49, 0x64, 0x69, 0x50, 0x34, 0x62, 0x30, 0x6a, 0x57, 0x79, 0x31, 0x30, 0x51, 0x4a, 0x4c, 0x5a, 0x59, 0x78, 0x6b, 0x4e, 0x63, 0x39, 0x31, 0x70, 0x0a, 0x76, 0x47, 0x4a, 0x48, 0x76, 0x4f, 0x42, 0x30, 0x4b, 0x37, 0x4c, 0x72, 0x66, 0x62, 0x35, 0x42, 0x47, 0x37, 0x58, 0x41, 0x52, 0x73, 0x57, 0x68, 0x49, 0x73, 0x74, 0x66, 0x54, 0x73, 0x45, 0x6f, 0x6b, 0x74, 0x34, 0x59, 0x75, 0x74, 0x55, 0x71, 0x4b, 0x4c, 0x73, 0x52, 0x69, 0x78, 0x65, 0x54, 0x6d, 0x4a, 0x6c, 0x67, 0x6c, 0x46, 0x77, 0x6a, 0x7a, 0x31, 0x6f, 0x6e, 0x6c, 0x31, 0x34, 0x4c, 0x42, 0x51, 0x61, 0x54, 0x4e, 0x78, 0x34, 0x37, 0x61, 0x54, 0x62, 0x72, 0x0a, 0x71, 0x5a, 0x35, 0x68, 0x48, 0x59, 0x38, 0x79, 0x32, 0x6f, 0x34, 0x4d, 0x31, 0x6e, 0x51, 0x2b, 0x65, 0x77, 0x6b, 0x6b, 0x32, 0x67, 0x46, 0x33, 0x52, 0x38, 0x51, 0x37, 0x7a, 0x54, 0x53, 0x4d, 0x6d, 0x66, 0x58, 0x4b, 0x34, 0x53, 0x56, 0x68, 0x4d, 0x37, 0x4a, 0x5a, 0x47, 0x2b, 0x4a, 0x75, 0x31, 0x7a, 0x64, 0x58, 0x74, 0x67, 0x32, 0x70, 0x45, 0x74, 0x6f, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x58, 0x52, 0x61, 0x6d, 0x70, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x4d, 0x44, 0x43, 0x43, 0x41, 0x78, 0x69, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x55, 0x4a, 0x52, 0x73, 0x37, 0x42, 0x6a, 0x71, 0x31, 0x5a, 0x78, 0x4e, 0x31, 0x5a, 0x66, 0x76, 0x64, 0x59, 0x2b, 0x67, 0x72, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x43, 0x42, 0x67, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x48, 0x6a, 0x41, 0x63, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x46, 0x58, 0x64, 0x33, 0x64, 0x79, 0x35, 0x34, 0x63, 0x6d, 0x46, 0x74, 0x63, 0x48, 0x4e, 0x6c, 0x59, 0x33, 0x56, 0x79, 0x61, 0x58, 0x52, 0x35, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x54, 0x45, 0x6b, 0x4d, 0x43, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x62, 0x57, 0x46, 0x4a, 0x68, 0x62, 0x58, 0x41, 0x67, 0x55, 0x32, 0x56, 0x6a, 0x0a, 0x64, 0x58, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x55, 0x32, 0x56, 0x79, 0x64, 0x6d, 0x6c, 0x6a, 0x5a, 0x58, 0x4d, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x53, 0x30, 0x77, 0x4b, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x52, 0x59, 0x55, 0x6d, 0x46, 0x74, 0x63, 0x43, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x0a, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x51, 0x78, 0x4d, 0x54, 0x41, 0x78, 0x4d, 0x54, 0x63, 0x78, 0x4e, 0x44, 0x41, 0x30, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x55, 0x77, 0x4d, 0x54, 0x41, 0x78, 0x4d, 0x44, 0x55, 0x7a, 0x4e, 0x7a, 0x45, 0x35, 0x57, 0x6a, 0x43, 0x42, 0x67, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x0a, 0x48, 0x6a, 0x41, 0x63, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x46, 0x58, 0x64, 0x33, 0x64, 0x79, 0x35, 0x34, 0x63, 0x6d, 0x46, 0x74, 0x63, 0x48, 0x4e, 0x6c, 0x59, 0x33, 0x56, 0x79, 0x61, 0x58, 0x52, 0x35, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x54, 0x45, 0x6b, 0x4d, 0x43, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x62, 0x57, 0x46, 0x4a, 0x68, 0x62, 0x58, 0x41, 0x67, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x58, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x0a, 0x55, 0x32, 0x56, 0x79, 0x64, 0x6d, 0x6c, 0x6a, 0x5a, 0x58, 0x4d, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x53, 0x30, 0x77, 0x4b, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x52, 0x59, 0x55, 0x6d, 0x46, 0x74, 0x63, 0x43, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x0a, 0x64, 0x48, 0x6b, 0x77, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43, 0x59, 0x4a, 0x42, 0x36, 0x39, 0x46, 0x62, 0x53, 0x36, 0x33, 0x38, 0x65, 0x4d, 0x70, 0x53, 0x65, 0x32, 0x4f, 0x41, 0x74, 0x70, 0x38, 0x37, 0x5a, 0x4f, 0x71, 0x43, 0x77, 0x75, 0x0a, 0x49, 0x52, 0x31, 0x63, 0x52, 0x4e, 0x38, 0x68, 0x58, 0x58, 0x34, 0x6a, 0x64, 0x50, 0x35, 0x65, 0x66, 0x72, 0x52, 0x4b, 0x74, 0x36, 0x61, 0x74, 0x48, 0x36, 0x37, 0x67, 0x42, 0x68, 0x62, 0x69, 0x6d, 0x31, 0x76, 0x5a, 0x5a, 0x33, 0x52, 0x72, 0x58, 0x59, 0x43, 0x50, 0x4b, 0x5a, 0x32, 0x47, 0x47, 0x39, 0x6d, 0x63, 0x44, 0x5a, 0x68, 0x74, 0x64, 0x68, 0x41, 0x6f, 0x57, 0x4f, 0x52, 0x6c, 0x73, 0x48, 0x39, 0x4b, 0x6d, 0x48, 0x6d, 0x66, 0x34, 0x4d, 0x4d, 0x78, 0x0a, 0x66, 0x6f, 0x41, 0x72, 0x74, 0x59, 0x7a, 0x41, 0x51, 0x44, 0x73, 0x52, 0x68, 0x74, 0x44, 0x4c, 0x6f, 0x6f, 0x59, 0x32, 0x59, 0x4b, 0x54, 0x56, 0x4d, 0x49, 0x4a, 0x74, 0x32, 0x57, 0x37, 0x51, 0x44, 0x78, 0x49, 0x45, 0x4d, 0x35, 0x64, 0x66, 0x54, 0x32, 0x46, 0x61, 0x38, 0x4f, 0x54, 0x35, 0x6b, 0x61, 0x76, 0x6e, 0x48, 0x54, 0x75, 0x38, 0x36, 0x4d, 0x2f, 0x30, 0x61, 0x79, 0x30, 0x30, 0x66, 0x4f, 0x4a, 0x49, 0x59, 0x52, 0x79, 0x4f, 0x38, 0x32, 0x46, 0x45, 0x0a, 0x7a, 0x47, 0x2b, 0x67, 0x53, 0x71, 0x6d, 0x55, 0x73, 0x45, 0x33, 0x61, 0x35, 0x36, 0x6b, 0x30, 0x65, 0x6e, 0x49, 0x34, 0x71, 0x45, 0x48, 0x4d, 0x50, 0x4a, 0x51, 0x52, 0x66, 0x65, 0x76, 0x49, 0x70, 0x6f, 0x79, 0x33, 0x68, 0x73, 0x76, 0x4b, 0x4d, 0x7a, 0x76, 0x5a, 0x50, 0x54, 0x65, 0x4c, 0x2b, 0x33, 0x6f, 0x2b, 0x68, 0x69, 0x7a, 0x6e, 0x63, 0x39, 0x63, 0x4b, 0x56, 0x36, 0x78, 0x6b, 0x6d, 0x78, 0x6e, 0x72, 0x39, 0x41, 0x38, 0x45, 0x43, 0x49, 0x71, 0x73, 0x0a, 0x41, 0x78, 0x63, 0x5a, 0x5a, 0x50, 0x52, 0x61, 0x4a, 0x53, 0x4b, 0x4e, 0x4e, 0x43, 0x79, 0x79, 0x39, 0x6d, 0x67, 0x64, 0x45, 0x6d, 0x33, 0x54, 0x69, 0x68, 0x34, 0x55, 0x32, 0x73, 0x53, 0x50, 0x70, 0x75, 0x49, 0x6a, 0x68, 0x64, 0x56, 0x36, 0x44, 0x62, 0x31, 0x71, 0x34, 0x4f, 0x6e, 0x73, 0x37, 0x42, 0x65, 0x37, 0x51, 0x68, 0x74, 0x6e, 0x71, 0x69, 0x58, 0x74, 0x52, 0x59, 0x4d, 0x68, 0x2f, 0x4d, 0x48, 0x4a, 0x66, 0x4e, 0x56, 0x69, 0x50, 0x76, 0x72, 0x79, 0x0a, 0x78, 0x53, 0x33, 0x54, 0x2f, 0x64, 0x52, 0x6c, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x67, 0x5a, 0x38, 0x77, 0x67, 0x5a, 0x77, 0x77, 0x45, 0x77, 0x59, 0x4a, 0x4b, 0x77, 0x59, 0x42, 0x42, 0x41, 0x47, 0x43, 0x4e, 0x78, 0x51, 0x43, 0x42, 0x41, 0x59, 0x65, 0x42, 0x41, 0x42, 0x44, 0x41, 0x45, 0x45, 0x77, 0x43, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x0a, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4d, 0x5a, 0x50, 0x6f, 0x6a, 0x30, 0x47, 0x59, 0x34, 0x51, 0x4a, 0x6e, 0x4d, 0x35, 0x69, 0x35, 0x41, 0x53, 0x73, 0x6a, 0x56, 0x79, 0x31, 0x36, 0x62, 0x59, 0x62, 0x4d, 0x44, 0x59, 0x47, 0x41, 0x31, 0x55, 0x64, 0x48, 0x77, 0x51, 0x76, 0x4d, 0x43, 0x30, 0x77, 0x4b, 0x36, 0x41, 0x70, 0x0a, 0x6f, 0x43, 0x65, 0x47, 0x4a, 0x57, 0x68, 0x30, 0x64, 0x48, 0x41, 0x36, 0x4c, 0x79, 0x39, 0x6a, 0x63, 0x6d, 0x77, 0x75, 0x65, 0x48, 0x4a, 0x68, 0x62, 0x58, 0x42, 0x7a, 0x5a, 0x57, 0x4e, 0x31, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x35, 0x6a, 0x62, 0x32, 0x30, 0x76, 0x57, 0x45, 0x64, 0x44, 0x51, 0x53, 0x35, 0x6a, 0x63, 0x6d, 0x77, 0x77, 0x45, 0x41, 0x59, 0x4a, 0x4b, 0x77, 0x59, 0x42, 0x42, 0x41, 0x47, 0x43, 0x4e, 0x78, 0x55, 0x42, 0x42, 0x41, 0x4d, 0x43, 0x0a, 0x41, 0x51, 0x45, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4a, 0x45, 0x56, 0x4f, 0x51, 0x4d, 0x42, 0x47, 0x32, 0x66, 0x37, 0x53, 0x68, 0x7a, 0x35, 0x43, 0x6d, 0x42, 0x62, 0x6f, 0x64, 0x70, 0x4e, 0x6c, 0x32, 0x4c, 0x35, 0x4a, 0x46, 0x4d, 0x6e, 0x31, 0x34, 0x4a, 0x6b, 0x54, 0x70, 0x41, 0x75, 0x77, 0x30, 0x6b, 0x62, 0x4b, 0x35, 0x72, 0x63, 0x0a, 0x2f, 0x4b, 0x68, 0x34, 0x5a, 0x7a, 0x58, 0x78, 0x48, 0x66, 0x41, 0x52, 0x76, 0x62, 0x64, 0x49, 0x34, 0x78, 0x44, 0x32, 0x44, 0x64, 0x38, 0x2f, 0x30, 0x73, 0x6d, 0x32, 0x71, 0x6c, 0x57, 0x6b, 0x53, 0x4c, 0x6f, 0x43, 0x32, 0x39, 0x35, 0x5a, 0x4c, 0x68, 0x56, 0x62, 0x4f, 0x35, 0x30, 0x57, 0x66, 0x55, 0x66, 0x58, 0x4e, 0x2b, 0x70, 0x66, 0x54, 0x58, 0x59, 0x53, 0x4e, 0x72, 0x73, 0x66, 0x31, 0x36, 0x47, 0x42, 0x42, 0x45, 0x59, 0x67, 0x6f, 0x79, 0x78, 0x74, 0x0a, 0x71, 0x5a, 0x34, 0x42, 0x66, 0x6a, 0x38, 0x70, 0x7a, 0x67, 0x43, 0x54, 0x33, 0x2f, 0x33, 0x4a, 0x6b, 0x6e, 0x4f, 0x4a, 0x69, 0x57, 0x53, 0x65, 0x35, 0x79, 0x76, 0x6b, 0x48, 0x4a, 0x45, 0x73, 0x30, 0x72, 0x6e, 0x4f, 0x66, 0x63, 0x35, 0x76, 0x4d, 0x5a, 0x6e, 0x54, 0x35, 0x72, 0x37, 0x53, 0x48, 0x70, 0x44, 0x77, 0x43, 0x52, 0x52, 0x35, 0x58, 0x43, 0x4f, 0x72, 0x54, 0x64, 0x4c, 0x61, 0x49, 0x52, 0x39, 0x4e, 0x6d, 0x58, 0x6d, 0x64, 0x34, 0x63, 0x38, 0x6e, 0x0a, 0x6e, 0x78, 0x43, 0x62, 0x48, 0x49, 0x67, 0x4e, 0x73, 0x49, 0x70, 0x6b, 0x51, 0x54, 0x47, 0x34, 0x44, 0x6d, 0x79, 0x51, 0x4a, 0x4b, 0x53, 0x62, 0x58, 0x48, 0x47, 0x50, 0x75, 0x72, 0x74, 0x2b, 0x48, 0x42, 0x76, 0x62, 0x61, 0x6f, 0x41, 0x50, 0x49, 0x62, 0x7a, 0x70, 0x32, 0x36, 0x61, 0x33, 0x51, 0x50, 0x53, 0x79, 0x69, 0x36, 0x6d, 0x78, 0x35, 0x4f, 0x2b, 0x61, 0x47, 0x74, 0x41, 0x39, 0x61, 0x5a, 0x6e, 0x75, 0x71, 0x43, 0x69, 0x6a, 0x34, 0x54, 0x79, 0x7a, 0x0a, 0x38, 0x4c, 0x49, 0x52, 0x6e, 0x4d, 0x39, 0x38, 0x51, 0x4f, 0x62, 0x64, 0x35, 0x30, 0x4e, 0x39, 0x6f, 0x74, 0x67, 0x36, 0x74, 0x61, 0x6d, 0x4e, 0x38, 0x6a, 0x53, 0x5a, 0x78, 0x4e, 0x51, 0x51, 0x34, 0x51, 0x62, 0x39, 0x43, 0x59, 0x51, 0x51, 0x4f, 0x2b, 0x37, 0x45, 0x54, 0x50, 0x54, 0x73, 0x4a, 0x33, 0x78, 0x43, 0x77, 0x6e, 0x52, 0x38, 0x67, 0x6f, 0x6f, 0x4a, 0x79, 0x62, 0x51, 0x44, 0x4a, 0x62, 0x77, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x41, 0x44, 0x43, 0x43, 0x41, 0x75, 0x69, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x6a, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x68, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x59, 0x0a, 0x56, 0x47, 0x68, 0x6c, 0x49, 0x45, 0x64, 0x76, 0x49, 0x45, 0x52, 0x68, 0x5a, 0x47, 0x52, 0x35, 0x49, 0x45, 0x64, 0x79, 0x62, 0x33, 0x56, 0x77, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x4d, 0x54, 0x45, 0x77, 0x4c, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x79, 0x68, 0x48, 0x62, 0x79, 0x42, 0x45, 0x59, 0x57, 0x52, 0x6b, 0x65, 0x53, 0x42, 0x44, 0x62, 0x47, 0x46, 0x7a, 0x63, 0x79, 0x41, 0x79, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x0a, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41, 0x30, 0x4d, 0x44, 0x59, 0x79, 0x4f, 0x54, 0x45, 0x33, 0x4d, 0x44, 0x59, 0x79, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x30, 0x4d, 0x44, 0x59, 0x79, 0x4f, 0x54, 0x45, 0x33, 0x4d, 0x44, 0x59, 0x79, 0x4d, 0x46, 0x6f, 0x77, 0x59, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x49, 0x54, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x47, 0x46, 0x52, 0x6f, 0x5a, 0x53, 0x42, 0x48, 0x62, 0x79, 0x42, 0x45, 0x59, 0x57, 0x52, 0x6b, 0x65, 0x53, 0x42, 0x48, 0x63, 0x6d, 0x39, 0x31, 0x63, 0x43, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x6a, 0x45, 0x78, 0x4d, 0x43, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x6f, 0x52, 0x32, 0x38, 0x67, 0x0a, 0x52, 0x47, 0x46, 0x6b, 0x5a, 0x48, 0x6b, 0x67, 0x51, 0x32, 0x78, 0x68, 0x63, 0x33, 0x4d, 0x67, 0x4d, 0x69, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x54, 0x43, 0x43, 0x41, 0x53, 0x41, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x0a, 0x67, 0x67, 0x45, 0x4e, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x67, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4e, 0x36, 0x64, 0x31, 0x2b, 0x70, 0x58, 0x47, 0x45, 0x6d, 0x68, 0x57, 0x2b, 0x76, 0x58, 0x58, 0x30, 0x69, 0x47, 0x36, 0x72, 0x37, 0x64, 0x2f, 0x2b, 0x54, 0x76, 0x5a, 0x78, 0x7a, 0x30, 0x5a, 0x57, 0x69, 0x7a, 0x56, 0x33, 0x47, 0x67, 0x58, 0x6e, 0x65, 0x37, 0x37, 0x5a, 0x74, 0x4a, 0x36, 0x58, 0x43, 0x41, 0x50, 0x56, 0x59, 0x59, 0x59, 0x77, 0x68, 0x76, 0x0a, 0x32, 0x76, 0x4c, 0x4d, 0x30, 0x44, 0x39, 0x2f, 0x41, 0x6c, 0x51, 0x69, 0x56, 0x42, 0x44, 0x59, 0x73, 0x6f, 0x48, 0x55, 0x77, 0x48, 0x55, 0x39, 0x53, 0x33, 0x2f, 0x48, 0x64, 0x38, 0x4d, 0x2b, 0x65, 0x4b, 0x73, 0x61, 0x41, 0x37, 0x55, 0x67, 0x61, 0x79, 0x39, 0x71, 0x4b, 0x37, 0x48, 0x46, 0x69, 0x48, 0x37, 0x45, 0x75, 0x78, 0x36, 0x77, 0x77, 0x64, 0x68, 0x46, 0x4a, 0x32, 0x2b, 0x71, 0x4e, 0x31, 0x6a, 0x33, 0x68, 0x79, 0x62, 0x58, 0x32, 0x43, 0x33, 0x32, 0x0a, 0x71, 0x52, 0x65, 0x33, 0x48, 0x33, 0x49, 0x32, 0x54, 0x71, 0x59, 0x58, 0x50, 0x32, 0x57, 0x59, 0x6b, 0x74, 0x73, 0x71, 0x62, 0x6c, 0x32, 0x69, 0x2f, 0x6f, 0x6a, 0x67, 0x43, 0x39, 0x35, 0x2f, 0x35, 0x59, 0x30, 0x56, 0x34, 0x65, 0x76, 0x4c, 0x4f, 0x74, 0x58, 0x69, 0x45, 0x71, 0x49, 0x54, 0x4c, 0x64, 0x69, 0x4f, 0x72, 0x31, 0x38, 0x53, 0x50, 0x61, 0x41, 0x49, 0x42, 0x51, 0x69, 0x32, 0x58, 0x4b, 0x56, 0x6c, 0x4f, 0x41, 0x52, 0x46, 0x6d, 0x52, 0x36, 0x6a, 0x0a, 0x59, 0x47, 0x42, 0x30, 0x78, 0x55, 0x47, 0x6c, 0x63, 0x6d, 0x49, 0x62, 0x59, 0x73, 0x55, 0x66, 0x62, 0x31, 0x38, 0x61, 0x51, 0x72, 0x34, 0x43, 0x55, 0x57, 0x57, 0x6f, 0x72, 0x69, 0x4d, 0x59, 0x61, 0x76, 0x78, 0x34, 0x41, 0x36, 0x6c, 0x4e, 0x66, 0x34, 0x44, 0x44, 0x2b, 0x71, 0x74, 0x61, 0x2f, 0x4b, 0x46, 0x41, 0x70, 0x4d, 0x6f, 0x5a, 0x46, 0x76, 0x36, 0x79, 0x79, 0x4f, 0x39, 0x65, 0x63, 0x77, 0x33, 0x75, 0x64, 0x37, 0x32, 0x61, 0x39, 0x6e, 0x6d, 0x59, 0x0a, 0x76, 0x4c, 0x45, 0x48, 0x5a, 0x36, 0x49, 0x56, 0x44, 0x64, 0x32, 0x67, 0x57, 0x4d, 0x5a, 0x45, 0x65, 0x77, 0x6f, 0x2b, 0x59, 0x69, 0x68, 0x66, 0x75, 0x6b, 0x45, 0x48, 0x55, 0x31, 0x6a, 0x50, 0x45, 0x58, 0x34, 0x34, 0x64, 0x4d, 0x58, 0x34, 0x2f, 0x37, 0x56, 0x70, 0x6b, 0x49, 0x2b, 0x45, 0x64, 0x4f, 0x71, 0x58, 0x47, 0x36, 0x38, 0x43, 0x41, 0x51, 0x4f, 0x6a, 0x67, 0x63, 0x41, 0x77, 0x67, 0x62, 0x30, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x0a, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4e, 0x4c, 0x45, 0x73, 0x4e, 0x4b, 0x52, 0x31, 0x45, 0x77, 0x52, 0x63, 0x62, 0x4e, 0x68, 0x79, 0x7a, 0x32, 0x68, 0x2f, 0x74, 0x32, 0x6f, 0x61, 0x74, 0x54, 0x6a, 0x4d, 0x49, 0x47, 0x4e, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x4d, 0x45, 0x67, 0x59, 0x55, 0x77, 0x67, 0x59, 0x4b, 0x41, 0x46, 0x4e, 0x4c, 0x45, 0x73, 0x4e, 0x4b, 0x52, 0x31, 0x45, 0x77, 0x52, 0x63, 0x62, 0x4e, 0x68, 0x79, 0x7a, 0x32, 0x68, 0x2f, 0x74, 0x32, 0x6f, 0x0a, 0x61, 0x74, 0x54, 0x6a, 0x6f, 0x57, 0x65, 0x6b, 0x5a, 0x54, 0x42, 0x6a, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x68, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x59, 0x56, 0x47, 0x68, 0x6c, 0x49, 0x45, 0x64, 0x76, 0x49, 0x45, 0x52, 0x68, 0x5a, 0x47, 0x52, 0x35, 0x49, 0x45, 0x64, 0x79, 0x62, 0x33, 0x56, 0x77, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x0a, 0x4d, 0x54, 0x45, 0x77, 0x4c, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x79, 0x68, 0x48, 0x62, 0x79, 0x42, 0x45, 0x59, 0x57, 0x52, 0x6b, 0x65, 0x53, 0x42, 0x44, 0x62, 0x47, 0x46, 0x7a, 0x63, 0x79, 0x41, 0x79, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x67, 0x67, 0x45, 0x41, 0x4d, 0x41, 0x77, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x44, 0x4a, 0x4c, 0x38, 0x37, 0x4c, 0x4b, 0x50, 0x70, 0x48, 0x38, 0x45, 0x73, 0x61, 0x68, 0x42, 0x34, 0x79, 0x4f, 0x64, 0x36, 0x41, 0x7a, 0x42, 0x68, 0x52, 0x63, 0x6b, 0x42, 0x34, 0x59, 0x39, 0x77, 0x69, 0x6d, 0x0a, 0x50, 0x51, 0x6f, 0x5a, 0x2b, 0x59, 0x65, 0x41, 0x45, 0x57, 0x35, 0x70, 0x35, 0x4a, 0x59, 0x58, 0x4d, 0x50, 0x38, 0x30, 0x6b, 0x57, 0x4e, 0x79, 0x4f, 0x4f, 0x37, 0x4d, 0x48, 0x41, 0x47, 0x6a, 0x48, 0x5a, 0x51, 0x6f, 0x70, 0x44, 0x48, 0x32, 0x65, 0x73, 0x52, 0x55, 0x31, 0x2f, 0x62, 0x6c, 0x4d, 0x56, 0x67, 0x44, 0x6f, 0x73, 0x7a, 0x4f, 0x59, 0x74, 0x75, 0x55, 0x52, 0x58, 0x4f, 0x31, 0x76, 0x30, 0x58, 0x4a, 0x4a, 0x4c, 0x58, 0x56, 0x67, 0x67, 0x4b, 0x74, 0x0a, 0x49, 0x33, 0x6c, 0x70, 0x6a, 0x62, 0x69, 0x32, 0x54, 0x63, 0x37, 0x50, 0x54, 0x4d, 0x6f, 0x7a, 0x49, 0x2b, 0x67, 0x63, 0x69, 0x4b, 0x71, 0x64, 0x69, 0x30, 0x46, 0x75, 0x46, 0x73, 0x6b, 0x67, 0x35, 0x59, 0x6d, 0x65, 0x7a, 0x54, 0x76, 0x61, 0x63, 0x50, 0x64, 0x2b, 0x6d, 0x53, 0x59, 0x67, 0x46, 0x46, 0x51, 0x6c, 0x71, 0x32, 0x35, 0x7a, 0x68, 0x65, 0x61, 0x62, 0x49, 0x5a, 0x30, 0x4b, 0x62, 0x49, 0x49, 0x4f, 0x71, 0x50, 0x6a, 0x43, 0x44, 0x50, 0x6f, 0x51, 0x0a, 0x48, 0x6d, 0x79, 0x57, 0x37, 0x34, 0x63, 0x4e, 0x78, 0x41, 0x39, 0x68, 0x69, 0x36, 0x33, 0x75, 0x67, 0x79, 0x75, 0x56, 0x2b, 0x49, 0x36, 0x53, 0x68, 0x48, 0x49, 0x35, 0x36, 0x79, 0x44, 0x71, 0x67, 0x2b, 0x32, 0x44, 0x7a, 0x5a, 0x64, 0x75, 0x43, 0x4c, 0x7a, 0x72, 0x54, 0x69, 0x61, 0x32, 0x63, 0x79, 0x76, 0x6b, 0x30, 0x2f, 0x5a, 0x4d, 0x2f, 0x69, 0x5a, 0x78, 0x34, 0x6d, 0x45, 0x52, 0x64, 0x45, 0x72, 0x2f, 0x56, 0x78, 0x71, 0x48, 0x44, 0x33, 0x56, 0x49, 0x0a, 0x4c, 0x73, 0x39, 0x52, 0x61, 0x52, 0x65, 0x67, 0x41, 0x68, 0x4a, 0x68, 0x6c, 0x64, 0x58, 0x52, 0x51, 0x4c, 0x49, 0x51, 0x54, 0x4f, 0x37, 0x45, 0x72, 0x42, 0x42, 0x44, 0x70, 0x71, 0x57, 0x65, 0x43, 0x74, 0x57, 0x56, 0x59, 0x70, 0x6f, 0x4e, 0x7a, 0x34, 0x69, 0x43, 0x78, 0x54, 0x49, 0x4d, 0x35, 0x43, 0x75, 0x66, 0x52, 0x65, 0x59, 0x4e, 0x6e, 0x79, 0x69, 0x63, 0x73, 0x62, 0x6b, 0x71, 0x57, 0x6c, 0x65, 0x74, 0x4e, 0x77, 0x2b, 0x76, 0x48, 0x58, 0x2f, 0x62, 0x0a, 0x76, 0x5a, 0x38, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x44, 0x7a, 0x43, 0x43, 0x41, 0x76, 0x65, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x6f, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x6c, 0x4d, 0x43, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x63, 0x0a, 0x55, 0x33, 0x52, 0x68, 0x63, 0x6d, 0x5a, 0x70, 0x5a, 0x57, 0x78, 0x6b, 0x49, 0x46, 0x52, 0x6c, 0x59, 0x32, 0x68, 0x75, 0x62, 0x32, 0x78, 0x76, 0x5a, 0x32, 0x6c, 0x6c, 0x63, 0x79, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x6a, 0x45, 0x79, 0x4d, 0x44, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x70, 0x55, 0x33, 0x52, 0x68, 0x63, 0x6d, 0x5a, 0x70, 0x5a, 0x57, 0x78, 0x6b, 0x49, 0x45, 0x4e, 0x73, 0x59, 0x58, 0x4e, 0x7a, 0x49, 0x44, 0x49, 0x67, 0x0a, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x51, 0x77, 0x4e, 0x6a, 0x49, 0x35, 0x4d, 0x54, 0x63, 0x7a, 0x4f, 0x54, 0x45, 0x32, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x51, 0x77, 0x4e, 0x6a, 0x49, 0x35, 0x4d, 0x54, 0x63, 0x7a, 0x4f, 0x54, 0x45, 0x32, 0x57, 0x6a, 0x42, 0x6f, 0x0a, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x6c, 0x4d, 0x43, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x63, 0x55, 0x33, 0x52, 0x68, 0x63, 0x6d, 0x5a, 0x70, 0x5a, 0x57, 0x78, 0x6b, 0x49, 0x46, 0x52, 0x6c, 0x59, 0x32, 0x68, 0x75, 0x62, 0x32, 0x78, 0x76, 0x5a, 0x32, 0x6c, 0x6c, 0x63, 0x79, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x6a, 0x45, 0x79, 0x4d, 0x44, 0x41, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x70, 0x55, 0x33, 0x52, 0x68, 0x63, 0x6d, 0x5a, 0x70, 0x5a, 0x57, 0x78, 0x6b, 0x49, 0x45, 0x4e, 0x73, 0x59, 0x58, 0x4e, 0x7a, 0x49, 0x44, 0x49, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x67, 0x67, 0x45, 0x67, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x0a, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x51, 0x41, 0x77, 0x67, 0x67, 0x45, 0x49, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43, 0x33, 0x4d, 0x73, 0x6a, 0x2b, 0x36, 0x58, 0x47, 0x6d, 0x42, 0x49, 0x57, 0x74, 0x44, 0x42, 0x46, 0x6b, 0x33, 0x38, 0x35, 0x4e, 0x37, 0x38, 0x67, 0x44, 0x47, 0x49, 0x63, 0x2f, 0x6f, 0x61, 0x76, 0x37, 0x50, 0x4b, 0x61, 0x66, 0x38, 0x4d, 0x4f, 0x68, 0x32, 0x74, 0x54, 0x59, 0x0a, 0x62, 0x69, 0x74, 0x54, 0x6b, 0x50, 0x73, 0x6b, 0x70, 0x44, 0x36, 0x45, 0x38, 0x4a, 0x37, 0x6f, 0x58, 0x2b, 0x7a, 0x6c, 0x4a, 0x30, 0x54, 0x31, 0x4b, 0x4b, 0x59, 0x2f, 0x65, 0x39, 0x37, 0x67, 0x4b, 0x76, 0x44, 0x49, 0x72, 0x31, 0x4d, 0x76, 0x6e, 0x73, 0x6f, 0x46, 0x41, 0x5a, 0x4d, 0x65, 0x6a, 0x32, 0x59, 0x63, 0x4f, 0x61, 0x64, 0x4e, 0x2b, 0x6c, 0x71, 0x32, 0x63, 0x77, 0x51, 0x6c, 0x5a, 0x75, 0x74, 0x33, 0x66, 0x2b, 0x64, 0x5a, 0x78, 0x6b, 0x71, 0x5a, 0x0a, 0x4a, 0x52, 0x52, 0x55, 0x36, 0x79, 0x62, 0x48, 0x38, 0x33, 0x38, 0x5a, 0x31, 0x54, 0x42, 0x77, 0x6a, 0x36, 0x2b, 0x77, 0x52, 0x69, 0x72, 0x2f, 0x72, 0x65, 0x73, 0x70, 0x37, 0x64, 0x65, 0x66, 0x71, 0x67, 0x53, 0x48, 0x6f, 0x39, 0x54, 0x35, 0x69, 0x61, 0x55, 0x30, 0x58, 0x39, 0x74, 0x44, 0x6b, 0x59, 0x49, 0x32, 0x32, 0x57, 0x59, 0x38, 0x73, 0x62, 0x69, 0x35, 0x67, 0x76, 0x32, 0x63, 0x4f, 0x6a, 0x34, 0x51, 0x79, 0x44, 0x76, 0x76, 0x42, 0x6d, 0x56, 0x6d, 0x0a, 0x65, 0x70, 0x73, 0x5a, 0x47, 0x44, 0x33, 0x2f, 0x63, 0x56, 0x45, 0x38, 0x4d, 0x43, 0x35, 0x66, 0x76, 0x6a, 0x31, 0x33, 0x63, 0x37, 0x4a, 0x64, 0x42, 0x6d, 0x7a, 0x44, 0x49, 0x31, 0x61, 0x61, 0x4b, 0x34, 0x55, 0x6d, 0x6b, 0x68, 0x79, 0x6e, 0x41, 0x72, 0x50, 0x6b, 0x50, 0x77, 0x32, 0x76, 0x43, 0x48, 0x6d, 0x43, 0x75, 0x44, 0x59, 0x39, 0x36, 0x70, 0x7a, 0x54, 0x4e, 0x62, 0x4f, 0x38, 0x61, 0x63, 0x72, 0x31, 0x7a, 0x4a, 0x33, 0x6f, 0x2f, 0x57, 0x53, 0x4e, 0x0a, 0x46, 0x34, 0x41, 0x7a, 0x62, 0x6c, 0x35, 0x4b, 0x58, 0x5a, 0x6e, 0x4a, 0x48, 0x6f, 0x65, 0x30, 0x6e, 0x52, 0x72, 0x41, 0x31, 0x57, 0x34, 0x54, 0x4e, 0x53, 0x4e, 0x65, 0x33, 0x35, 0x74, 0x66, 0x50, 0x65, 0x2f, 0x57, 0x39, 0x33, 0x62, 0x43, 0x36, 0x6a, 0x36, 0x37, 0x65, 0x41, 0x30, 0x63, 0x51, 0x6d, 0x64, 0x72, 0x42, 0x4e, 0x6a, 0x34, 0x31, 0x74, 0x70, 0x76, 0x69, 0x2f, 0x4a, 0x45, 0x6f, 0x41, 0x47, 0x72, 0x41, 0x67, 0x45, 0x44, 0x6f, 0x34, 0x48, 0x46, 0x0a, 0x4d, 0x49, 0x48, 0x43, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x2f, 0x58, 0x37, 0x66, 0x52, 0x7a, 0x74, 0x30, 0x66, 0x68, 0x76, 0x52, 0x62, 0x56, 0x61, 0x7a, 0x63, 0x31, 0x78, 0x44, 0x43, 0x44, 0x71, 0x6d, 0x49, 0x35, 0x7a, 0x43, 0x42, 0x6b, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6a, 0x42, 0x49, 0x47, 0x4b, 0x4d, 0x49, 0x47, 0x48, 0x67, 0x42, 0x53, 0x2f, 0x58, 0x37, 0x66, 0x52, 0x7a, 0x74, 0x30, 0x66, 0x0a, 0x68, 0x76, 0x52, 0x62, 0x56, 0x61, 0x7a, 0x63, 0x31, 0x78, 0x44, 0x43, 0x44, 0x71, 0x6d, 0x49, 0x35, 0x36, 0x46, 0x73, 0x70, 0x47, 0x6f, 0x77, 0x61, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x48, 0x46, 0x4e, 0x30, 0x59, 0x58, 0x4a, 0x6d, 0x61, 0x57, 0x56, 0x73, 0x5a, 0x43, 0x42, 0x55, 0x5a, 0x57, 0x4e, 0x6f, 0x0a, 0x62, 0x6d, 0x39, 0x73, 0x62, 0x32, 0x64, 0x70, 0x5a, 0x58, 0x4d, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x4b, 0x56, 0x4e, 0x30, 0x59, 0x58, 0x4a, 0x6d, 0x61, 0x57, 0x56, 0x73, 0x5a, 0x43, 0x42, 0x44, 0x62, 0x47, 0x46, 0x7a, 0x63, 0x79, 0x41, 0x79, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x0a, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x67, 0x67, 0x45, 0x41, 0x4d, 0x41, 0x77, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x41, 0x57, 0x64, 0x50, 0x34, 0x69, 0x64, 0x30, 0x63, 0x6b, 0x61, 0x56, 0x61, 0x47, 0x73, 0x0a, 0x61, 0x66, 0x50, 0x7a, 0x57, 0x64, 0x71, 0x62, 0x41, 0x59, 0x63, 0x61, 0x54, 0x31, 0x65, 0x70, 0x6f, 0x58, 0x6b, 0x4a, 0x4b, 0x74, 0x76, 0x33, 0x4c, 0x37, 0x49, 0x65, 0x7a, 0x4d, 0x64, 0x65, 0x61, 0x74, 0x69, 0x44, 0x68, 0x36, 0x47, 0x58, 0x37, 0x30, 0x6b, 0x31, 0x50, 0x6e, 0x63, 0x47, 0x51, 0x56, 0x68, 0x69, 0x76, 0x34, 0x35, 0x59, 0x75, 0x41, 0x70, 0x6e, 0x50, 0x2b, 0x79, 0x7a, 0x33, 0x53, 0x46, 0x6d, 0x48, 0x38, 0x6c, 0x55, 0x2b, 0x6e, 0x4c, 0x4d, 0x0a, 0x50, 0x55, 0x78, 0x41, 0x32, 0x49, 0x47, 0x76, 0x64, 0x35, 0x36, 0x44, 0x65, 0x72, 0x75, 0x69, 0x78, 0x2f, 0x55, 0x30, 0x46, 0x34, 0x37, 0x5a, 0x45, 0x55, 0x44, 0x30, 0x2f, 0x43, 0x77, 0x71, 0x54, 0x52, 0x56, 0x2f, 0x70, 0x32, 0x4a, 0x64, 0x4c, 0x69, 0x58, 0x54, 0x41, 0x41, 0x73, 0x67, 0x47, 0x68, 0x31, 0x6f, 0x2b, 0x52, 0x65, 0x34, 0x39, 0x4c, 0x32, 0x4c, 0x37, 0x53, 0x68, 0x5a, 0x33, 0x55, 0x30, 0x57, 0x69, 0x78, 0x65, 0x44, 0x79, 0x4c, 0x4a, 0x6c, 0x0a, 0x78, 0x79, 0x31, 0x36, 0x70, 0x61, 0x71, 0x38, 0x55, 0x34, 0x5a, 0x74, 0x33, 0x56, 0x65, 0x6b, 0x79, 0x76, 0x67, 0x67, 0x51, 0x51, 0x74, 0x6f, 0x38, 0x50, 0x54, 0x37, 0x64, 0x4c, 0x35, 0x57, 0x58, 0x58, 0x70, 0x35, 0x39, 0x66, 0x6b, 0x64, 0x68, 0x65, 0x4d, 0x74, 0x6c, 0x62, 0x37, 0x31, 0x63, 0x5a, 0x42, 0x44, 0x7a, 0x49, 0x30, 0x66, 0x6d, 0x67, 0x41, 0x4b, 0x68, 0x79, 0x6e, 0x70, 0x56, 0x53, 0x4a, 0x59, 0x41, 0x43, 0x50, 0x71, 0x34, 0x78, 0x4a, 0x44, 0x0a, 0x4b, 0x56, 0x74, 0x48, 0x43, 0x4e, 0x32, 0x4d, 0x51, 0x57, 0x70, 0x6c, 0x42, 0x71, 0x6a, 0x6c, 0x49, 0x61, 0x70, 0x42, 0x74, 0x4a, 0x55, 0x68, 0x6c, 0x62, 0x6c, 0x39, 0x30, 0x54, 0x53, 0x72, 0x45, 0x39, 0x61, 0x74, 0x76, 0x4e, 0x7a, 0x69, 0x50, 0x54, 0x6e, 0x4e, 0x76, 0x54, 0x35, 0x31, 0x63, 0x4b, 0x45, 0x59, 0x57, 0x51, 0x50, 0x4a, 0x49, 0x72, 0x53, 0x50, 0x6e, 0x4e, 0x56, 0x65, 0x4b, 0x74, 0x65, 0x6c, 0x74, 0x74, 0x51, 0x4b, 0x62, 0x66, 0x69, 0x33, 0x0a, 0x51, 0x42, 0x46, 0x47, 0x6d, 0x68, 0x39, 0x35, 0x44, 0x6d, 0x4b, 0x2f, 0x44, 0x35, 0x66, 0x73, 0x34, 0x43, 0x38, 0x66, 0x46, 0x35, 0x51, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x74, 0x7a, 0x43, 0x43, 0x41, 0x70, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x44, 0x4f, 0x66, 0x67, 0x35, 0x52, 0x66, 0x59, 0x52, 0x76, 0x36, 0x50, 0x35, 0x57, 0x44, 0x38, 0x47, 0x2f, 0x41, 0x77, 0x4f, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x6c, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4d, 0x53, 0x51, 0x77, 0x0a, 0x49, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x74, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x42, 0x63, 0x33, 0x4e, 0x31, 0x63, 0x6d, 0x56, 0x6b, 0x49, 0x45, 0x6c, 0x45, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x59, 0x78, 0x4d, 0x54, 0x45, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x45, 0x78, 0x0a, 0x4d, 0x54, 0x45, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x42, 0x6c, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x0a, 0x45, 0x78, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4d, 0x53, 0x51, 0x77, 0x49, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x74, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x42, 0x63, 0x33, 0x4e, 0x31, 0x63, 0x6d, 0x56, 0x6b, 0x49, 0x45, 0x6c, 0x45, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x77, 0x0a, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43, 0x74, 0x44, 0x68, 0x58, 0x4f, 0x35, 0x45, 0x4f, 0x41, 0x58, 0x4c, 0x47, 0x48, 0x38, 0x37, 0x64, 0x67, 0x2b, 0x58, 0x45, 0x53, 0x70, 0x61, 0x37, 0x63, 0x4a, 0x70, 0x53, 0x49, 0x71, 0x76, 0x54, 0x4f, 0x0a, 0x39, 0x53, 0x41, 0x35, 0x4b, 0x46, 0x68, 0x67, 0x44, 0x50, 0x69, 0x41, 0x32, 0x71, 0x6b, 0x56, 0x6c, 0x54, 0x4a, 0x68, 0x50, 0x4c, 0x57, 0x78, 0x4b, 0x49, 0x53, 0x4b, 0x69, 0x74, 0x79, 0x66, 0x43, 0x67, 0x79, 0x44, 0x46, 0x33, 0x71, 0x50, 0x6b, 0x4b, 0x79, 0x4b, 0x35, 0x33, 0x6c, 0x54, 0x58, 0x44, 0x47, 0x45, 0x4b, 0x76, 0x59, 0x50, 0x6d, 0x44, 0x49, 0x32, 0x64, 0x73, 0x7a, 0x65, 0x33, 0x54, 0x79, 0x6f, 0x6f, 0x75, 0x39, 0x71, 0x2b, 0x79, 0x48, 0x79, 0x0a, 0x55, 0x6d, 0x48, 0x66, 0x6e, 0x79, 0x44, 0x58, 0x48, 0x2b, 0x4b, 0x78, 0x32, 0x66, 0x34, 0x59, 0x5a, 0x4e, 0x49, 0x53, 0x57, 0x31, 0x2f, 0x35, 0x57, 0x42, 0x67, 0x31, 0x76, 0x45, 0x66, 0x4e, 0x6f, 0x54, 0x62, 0x35, 0x61, 0x33, 0x2f, 0x55, 0x73, 0x44, 0x67, 0x2b, 0x77, 0x52, 0x76, 0x44, 0x6a, 0x44, 0x50, 0x5a, 0x32, 0x43, 0x38, 0x59, 0x2f, 0x69, 0x67, 0x50, 0x73, 0x36, 0x65, 0x44, 0x31, 0x73, 0x4e, 0x75, 0x52, 0x4d, 0x42, 0x68, 0x4e, 0x5a, 0x59, 0x57, 0x0a, 0x2f, 0x6c, 0x6d, 0x63, 0x69, 0x33, 0x5a, 0x74, 0x31, 0x2f, 0x47, 0x69, 0x53, 0x77, 0x30, 0x72, 0x2f, 0x77, 0x74, 0x79, 0x32, 0x70, 0x35, 0x67, 0x30, 0x49, 0x36, 0x51, 0x4e, 0x63, 0x5a, 0x34, 0x56, 0x59, 0x63, 0x67, 0x6f, 0x63, 0x2f, 0x6c, 0x62, 0x51, 0x72, 0x49, 0x53, 0x58, 0x77, 0x78, 0x6d, 0x44, 0x4e, 0x73, 0x49, 0x75, 0x6d, 0x48, 0x30, 0x44, 0x4a, 0x61, 0x6f, 0x72, 0x6f, 0x54, 0x67, 0x68, 0x48, 0x74, 0x4f, 0x52, 0x65, 0x64, 0x6d, 0x54, 0x70, 0x79, 0x0a, 0x6f, 0x65, 0x62, 0x36, 0x70, 0x4e, 0x6e, 0x56, 0x46, 0x7a, 0x46, 0x31, 0x72, 0x6f, 0x56, 0x39, 0x49, 0x71, 0x34, 0x2f, 0x41, 0x55, 0x61, 0x47, 0x39, 0x69, 0x68, 0x35, 0x79, 0x4c, 0x48, 0x61, 0x35, 0x46, 0x63, 0x58, 0x78, 0x48, 0x34, 0x63, 0x44, 0x72, 0x43, 0x30, 0x6b, 0x71, 0x5a, 0x57, 0x73, 0x37, 0x32, 0x79, 0x6c, 0x2b, 0x32, 0x71, 0x70, 0x2f, 0x43, 0x33, 0x78, 0x61, 0x67, 0x2f, 0x6c, 0x52, 0x62, 0x51, 0x2f, 0x36, 0x47, 0x57, 0x36, 0x77, 0x68, 0x66, 0x0a, 0x47, 0x48, 0x64, 0x50, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x59, 0x7a, 0x42, 0x68, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x46, 0x0a, 0x36, 0x36, 0x4b, 0x76, 0x39, 0x4a, 0x4c, 0x4c, 0x67, 0x6a, 0x45, 0x74, 0x55, 0x59, 0x75, 0x6e, 0x70, 0x79, 0x47, 0x64, 0x38, 0x32, 0x33, 0x49, 0x44, 0x7a, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x4d, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x52, 0x46, 0x36, 0x36, 0x4b, 0x76, 0x39, 0x4a, 0x4c, 0x4c, 0x67, 0x6a, 0x45, 0x74, 0x55, 0x59, 0x75, 0x6e, 0x70, 0x79, 0x47, 0x64, 0x38, 0x32, 0x33, 0x49, 0x44, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x0a, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x45, 0x41, 0x6f, 0x67, 0x36, 0x38, 0x33, 0x2b, 0x4c, 0x74, 0x38, 0x4f, 0x4e, 0x79, 0x63, 0x33, 0x70, 0x6b, 0x6c, 0x4c, 0x2f, 0x33, 0x63, 0x6d, 0x62, 0x59, 0x4d, 0x75, 0x52, 0x43, 0x64, 0x57, 0x4b, 0x75, 0x68, 0x2b, 0x76, 0x79, 0x31, 0x64, 0x6e, 0x65, 0x56, 0x72, 0x4f, 0x66, 0x7a, 0x4d, 0x34, 0x55, 0x4b, 0x4c, 0x6b, 0x4e, 0x6c, 0x32, 0x42, 0x63, 0x0a, 0x45, 0x6b, 0x78, 0x59, 0x35, 0x4e, 0x4d, 0x39, 0x67, 0x30, 0x6c, 0x46, 0x57, 0x4a, 0x63, 0x31, 0x61, 0x52, 0x71, 0x6f, 0x52, 0x2b, 0x70, 0x57, 0x78, 0x6e, 0x6d, 0x72, 0x45, 0x74, 0x68, 0x6e, 0x67, 0x59, 0x54, 0x66, 0x66, 0x77, 0x6b, 0x38, 0x6c, 0x4f, 0x61, 0x34, 0x4a, 0x69, 0x77, 0x67, 0x76, 0x54, 0x32, 0x7a, 0x4b, 0x49, 0x6e, 0x33, 0x58, 0x2f, 0x38, 0x69, 0x34, 0x70, 0x65, 0x45, 0x48, 0x2b, 0x6c, 0x6c, 0x37, 0x34, 0x66, 0x67, 0x33, 0x38, 0x46, 0x6e, 0x0a, 0x53, 0x62, 0x4e, 0x64, 0x36, 0x37, 0x49, 0x4a, 0x4b, 0x75, 0x73, 0x6d, 0x37, 0x58, 0x69, 0x2b, 0x66, 0x54, 0x38, 0x72, 0x38, 0x37, 0x63, 0x6d, 0x4e, 0x57, 0x31, 0x66, 0x69, 0x51, 0x47, 0x32, 0x53, 0x56, 0x75, 0x66, 0x41, 0x51, 0x57, 0x62, 0x71, 0x7a, 0x30, 0x6c, 0x77, 0x63, 0x79, 0x32, 0x66, 0x38, 0x4c, 0x78, 0x62, 0x34, 0x62, 0x47, 0x2b, 0x6d, 0x52, 0x6f, 0x36, 0x34, 0x45, 0x74, 0x6c, 0x4f, 0x74, 0x43, 0x74, 0x2f, 0x71, 0x4d, 0x48, 0x74, 0x31, 0x69, 0x0a, 0x38, 0x62, 0x35, 0x51, 0x5a, 0x37, 0x64, 0x73, 0x76, 0x66, 0x50, 0x78, 0x48, 0x32, 0x73, 0x4d, 0x4e, 0x67, 0x63, 0x57, 0x66, 0x7a, 0x64, 0x38, 0x71, 0x56, 0x74, 0x74, 0x65, 0x76, 0x45, 0x53, 0x52, 0x6d, 0x43, 0x44, 0x31, 0x79, 0x63, 0x45, 0x76, 0x6b, 0x76, 0x4f, 0x6c, 0x37, 0x37, 0x44, 0x5a, 0x79, 0x70, 0x6f, 0x45, 0x64, 0x2b, 0x41, 0x35, 0x77, 0x77, 0x7a, 0x5a, 0x72, 0x38, 0x54, 0x44, 0x52, 0x52, 0x75, 0x38, 0x33, 0x38, 0x66, 0x59, 0x78, 0x41, 0x65, 0x0a, 0x2b, 0x6f, 0x30, 0x62, 0x4a, 0x57, 0x31, 0x73, 0x6a, 0x36, 0x57, 0x33, 0x59, 0x51, 0x47, 0x78, 0x30, 0x71, 0x4d, 0x6d, 0x6f, 0x52, 0x42, 0x78, 0x6e, 0x61, 0x33, 0x69, 0x77, 0x2f, 0x6e, 0x44, 0x6d, 0x56, 0x47, 0x33, 0x4b, 0x77, 0x63, 0x49, 0x7a, 0x69, 0x37, 0x6d, 0x55, 0x4c, 0x4b, 0x6e, 0x2b, 0x67, 0x70, 0x46, 0x4c, 0x36, 0x4c, 0x77, 0x38, 0x67, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x72, 0x7a, 0x43, 0x43, 0x41, 0x70, 0x65, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x43, 0x44, 0x76, 0x67, 0x56, 0x70, 0x42, 0x43, 0x52, 0x72, 0x47, 0x68, 0x64, 0x57, 0x72, 0x4a, 0x57, 0x5a, 0x48, 0x48, 0x53, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x68, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4d, 0x53, 0x41, 0x77, 0x0a, 0x48, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x64, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x77, 0x4e, 0x6a, 0x45, 0x78, 0x4d, 0x54, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4d, 0x54, 0x45, 0x78, 0x4d, 0x54, 0x41, 0x77, 0x0a, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x4d, 0x47, 0x45, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x78, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x45, 0x48, 0x64, 0x33, 0x0a, 0x64, 0x79, 0x35, 0x6b, 0x61, 0x57, 0x64, 0x70, 0x59, 0x32, 0x56, 0x79, 0x64, 0x43, 0x35, 0x6a, 0x62, 0x32, 0x30, 0x78, 0x49, 0x44, 0x41, 0x65, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x46, 0x30, 0x52, 0x70, 0x5a, 0x32, 0x6c, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x49, 0x49, 0x42, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x0a, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x34, 0x6a, 0x76, 0x68, 0x45, 0x58, 0x4c, 0x65, 0x71, 0x4b, 0x54, 0x54, 0x6f, 0x31, 0x65, 0x71, 0x55, 0x4b, 0x4b, 0x50, 0x43, 0x33, 0x65, 0x51, 0x79, 0x61, 0x4b, 0x6c, 0x37, 0x68, 0x4c, 0x4f, 0x6c, 0x6c, 0x73, 0x42, 0x43, 0x53, 0x44, 0x4d, 0x41, 0x5a, 0x4f, 0x6e, 0x0a, 0x54, 0x6a, 0x43, 0x33, 0x55, 0x2f, 0x64, 0x44, 0x78, 0x47, 0x6b, 0x41, 0x56, 0x35, 0x33, 0x69, 0x6a, 0x53, 0x4c, 0x64, 0x68, 0x77, 0x5a, 0x41, 0x41, 0x49, 0x45, 0x4a, 0x7a, 0x73, 0x34, 0x62, 0x67, 0x37, 0x2f, 0x66, 0x7a, 0x54, 0x74, 0x78, 0x52, 0x75, 0x4c, 0x57, 0x5a, 0x73, 0x63, 0x46, 0x73, 0x33, 0x59, 0x6e, 0x46, 0x6f, 0x39, 0x37, 0x6e, 0x68, 0x36, 0x56, 0x66, 0x65, 0x36, 0x33, 0x53, 0x4b, 0x4d, 0x49, 0x32, 0x74, 0x61, 0x76, 0x65, 0x67, 0x77, 0x35, 0x0a, 0x42, 0x6d, 0x56, 0x2f, 0x53, 0x6c, 0x30, 0x66, 0x76, 0x42, 0x66, 0x34, 0x71, 0x37, 0x37, 0x75, 0x4b, 0x4e, 0x64, 0x30, 0x66, 0x33, 0x70, 0x34, 0x6d, 0x56, 0x6d, 0x46, 0x61, 0x47, 0x35, 0x63, 0x49, 0x7a, 0x4a, 0x4c, 0x76, 0x30, 0x37, 0x41, 0x36, 0x46, 0x70, 0x74, 0x34, 0x33, 0x43, 0x2f, 0x64, 0x78, 0x43, 0x2f, 0x2f, 0x41, 0x48, 0x32, 0x68, 0x64, 0x6d, 0x6f, 0x52, 0x42, 0x42, 0x59, 0x4d, 0x71, 0x6c, 0x31, 0x47, 0x4e, 0x58, 0x52, 0x6f, 0x72, 0x35, 0x48, 0x0a, 0x34, 0x69, 0x64, 0x71, 0x39, 0x4a, 0x6f, 0x7a, 0x2b, 0x45, 0x6b, 0x49, 0x59, 0x49, 0x76, 0x55, 0x58, 0x37, 0x51, 0x36, 0x68, 0x4c, 0x2b, 0x68, 0x71, 0x6b, 0x70, 0x4d, 0x66, 0x54, 0x37, 0x50, 0x54, 0x31, 0x39, 0x73, 0x64, 0x6c, 0x36, 0x67, 0x53, 0x7a, 0x65, 0x52, 0x6e, 0x74, 0x77, 0x69, 0x35, 0x6d, 0x33, 0x4f, 0x46, 0x42, 0x71, 0x4f, 0x61, 0x73, 0x76, 0x2b, 0x7a, 0x62, 0x4d, 0x55, 0x5a, 0x42, 0x66, 0x48, 0x57, 0x79, 0x6d, 0x65, 0x4d, 0x72, 0x2f, 0x79, 0x0a, 0x37, 0x76, 0x72, 0x54, 0x43, 0x30, 0x4c, 0x55, 0x71, 0x37, 0x64, 0x42, 0x4d, 0x74, 0x6f, 0x4d, 0x31, 0x4f, 0x2f, 0x34, 0x67, 0x64, 0x57, 0x37, 0x6a, 0x56, 0x67, 0x2f, 0x74, 0x52, 0x76, 0x6f, 0x53, 0x53, 0x69, 0x69, 0x63, 0x4e, 0x6f, 0x78, 0x42, 0x4e, 0x33, 0x33, 0x73, 0x68, 0x62, 0x79, 0x54, 0x41, 0x70, 0x4f, 0x42, 0x36, 0x6a, 0x74, 0x53, 0x6a, 0x31, 0x65, 0x74, 0x58, 0x2b, 0x6a, 0x6b, 0x4d, 0x4f, 0x76, 0x4a, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x0a, 0x6f, 0x32, 0x4d, 0x77, 0x59, 0x54, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x41, 0x39, 0x35, 0x51, 0x4e, 0x56, 0x62, 0x52, 0x54, 0x4c, 0x74, 0x6d, 0x0a, 0x38, 0x4b, 0x50, 0x69, 0x47, 0x78, 0x76, 0x44, 0x6c, 0x37, 0x49, 0x39, 0x30, 0x56, 0x55, 0x77, 0x48, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6a, 0x42, 0x42, 0x67, 0x77, 0x46, 0x6f, 0x41, 0x55, 0x41, 0x39, 0x35, 0x51, 0x4e, 0x56, 0x62, 0x52, 0x54, 0x4c, 0x74, 0x6d, 0x38, 0x4b, 0x50, 0x69, 0x47, 0x78, 0x76, 0x44, 0x6c, 0x37, 0x49, 0x39, 0x30, 0x56, 0x55, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x0a, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4d, 0x75, 0x63, 0x4e, 0x36, 0x70, 0x49, 0x45, 0x78, 0x49, 0x4b, 0x2b, 0x74, 0x31, 0x45, 0x6e, 0x45, 0x39, 0x53, 0x73, 0x50, 0x54, 0x66, 0x72, 0x67, 0x54, 0x31, 0x65, 0x58, 0x6b, 0x49, 0x6f, 0x79, 0x51, 0x59, 0x2f, 0x45, 0x73, 0x72, 0x68, 0x4d, 0x41, 0x74, 0x75, 0x64, 0x58, 0x48, 0x2f, 0x76, 0x54, 0x42, 0x48, 0x31, 0x6a, 0x4c, 0x75, 0x47, 0x32, 0x63, 0x65, 0x6e, 0x54, 0x6e, 0x6d, 0x43, 0x6d, 0x72, 0x0a, 0x45, 0x62, 0x58, 0x6a, 0x63, 0x4b, 0x43, 0x68, 0x7a, 0x55, 0x79, 0x49, 0x6d, 0x5a, 0x4f, 0x4d, 0x6b, 0x58, 0x44, 0x69, 0x71, 0x77, 0x38, 0x63, 0x76, 0x70, 0x4f, 0x70, 0x2f, 0x32, 0x50, 0x56, 0x35, 0x41, 0x64, 0x67, 0x30, 0x36, 0x4f, 0x2f, 0x6e, 0x56, 0x73, 0x4a, 0x38, 0x64, 0x57, 0x4f, 0x34, 0x31, 0x50, 0x30, 0x6a, 0x6d, 0x50, 0x36, 0x50, 0x36, 0x66, 0x62, 0x74, 0x47, 0x62, 0x66, 0x59, 0x6d, 0x62, 0x57, 0x30, 0x57, 0x35, 0x42, 0x6a, 0x66, 0x49, 0x74, 0x0a, 0x74, 0x65, 0x70, 0x33, 0x53, 0x70, 0x2b, 0x64, 0x57, 0x4f, 0x49, 0x72, 0x57, 0x63, 0x42, 0x41, 0x49, 0x2b, 0x30, 0x74, 0x4b, 0x49, 0x4a, 0x46, 0x50, 0x6e, 0x6c, 0x55, 0x6b, 0x69, 0x61, 0x59, 0x34, 0x49, 0x42, 0x49, 0x71, 0x44, 0x66, 0x76, 0x38, 0x4e, 0x5a, 0x35, 0x59, 0x42, 0x62, 0x65, 0x72, 0x4f, 0x67, 0x4f, 0x7a, 0x57, 0x36, 0x73, 0x52, 0x42, 0x63, 0x34, 0x4c, 0x30, 0x6e, 0x61, 0x34, 0x55, 0x55, 0x2b, 0x4b, 0x72, 0x6b, 0x32, 0x55, 0x38, 0x38, 0x36, 0x0a, 0x55, 0x41, 0x62, 0x33, 0x4c, 0x75, 0x6a, 0x45, 0x56, 0x30, 0x6c, 0x73, 0x59, 0x53, 0x45, 0x59, 0x31, 0x51, 0x53, 0x74, 0x65, 0x44, 0x77, 0x73, 0x4f, 0x6f, 0x42, 0x72, 0x70, 0x2b, 0x75, 0x76, 0x46, 0x52, 0x54, 0x70, 0x32, 0x49, 0x6e, 0x42, 0x75, 0x54, 0x68, 0x73, 0x34, 0x70, 0x46, 0x73, 0x69, 0x76, 0x39, 0x6b, 0x75, 0x58, 0x63, 0x6c, 0x56, 0x7a, 0x44, 0x41, 0x47, 0x79, 0x53, 0x6a, 0x34, 0x64, 0x7a, 0x70, 0x33, 0x30, 0x64, 0x38, 0x74, 0x62, 0x51, 0x6b, 0x0a, 0x43, 0x41, 0x55, 0x77, 0x37, 0x43, 0x32, 0x39, 0x43, 0x37, 0x39, 0x46, 0x76, 0x31, 0x43, 0x35, 0x71, 0x66, 0x50, 0x72, 0x6d, 0x41, 0x45, 0x53, 0x72, 0x63, 0x69, 0x49, 0x78, 0x70, 0x67, 0x30, 0x58, 0x34, 0x30, 0x4b, 0x50, 0x4d, 0x62, 0x70, 0x31, 0x5a, 0x57, 0x56, 0x62, 0x64, 0x34, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 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, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x78, 0x54, 0x43, 0x43, 0x41, 0x71, 0x32, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x41, 0x71, 0x78, 0x63, 0x4a, 0x6d, 0x6f, 0x4c, 0x51, 0x4a, 0x75, 0x50, 0x43, 0x33, 0x6e, 0x79, 0x72, 0x6b, 0x59, 0x6c, 0x64, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x73, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4d, 0x53, 0x73, 0x77, 0x0a, 0x4b, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x4a, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x49, 0x61, 0x57, 0x64, 0x6f, 0x49, 0x45, 0x46, 0x7a, 0x63, 0x33, 0x56, 0x79, 0x59, 0x57, 0x35, 0x6a, 0x5a, 0x53, 0x42, 0x46, 0x56, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41, 0x32, 0x4d, 0x54, 0x45, 0x78, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x0a, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x78, 0x4d, 0x54, 0x45, 0x78, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x77, 0x62, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x46, 0x54, 0x41, 0x54, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x44, 0x45, 0x52, 0x70, 0x5a, 0x32, 0x6c, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x7a, 0x45, 0x5a, 0x0a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x51, 0x64, 0x33, 0x64, 0x33, 0x4c, 0x6d, 0x52, 0x70, 0x5a, 0x32, 0x6c, 0x6a, 0x5a, 0x58, 0x4a, 0x30, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x54, 0x45, 0x72, 0x4d, 0x43, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x69, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x47, 0x6c, 0x6e, 0x61, 0x43, 0x42, 0x42, 0x63, 0x33, 0x4e, 0x31, 0x63, 0x6d, 0x46, 0x75, 0x0a, 0x59, 0x32, 0x55, 0x67, 0x52, 0x56, 0x59, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x54, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4d, 0x62, 0x4d, 0x35, 0x58, 0x50, 0x6d, 0x2b, 0x39, 0x53, 0x37, 0x35, 0x53, 0x30, 0x74, 0x0a, 0x4d, 0x71, 0x62, 0x66, 0x35, 0x59, 0x45, 0x2f, 0x79, 0x63, 0x30, 0x6c, 0x53, 0x62, 0x5a, 0x78, 0x4b, 0x73, 0x50, 0x56, 0x6c, 0x44, 0x52, 0x6e, 0x6f, 0x67, 0x6f, 0x63, 0x73, 0x46, 0x39, 0x70, 0x70, 0x6b, 0x43, 0x78, 0x78, 0x4c, 0x65, 0x79, 0x6a, 0x39, 0x43, 0x59, 0x70, 0x4b, 0x6c, 0x42, 0x57, 0x54, 0x72, 0x54, 0x33, 0x4a, 0x54, 0x57, 0x50, 0x4e, 0x74, 0x30, 0x4f, 0x4b, 0x52, 0x4b, 0x7a, 0x45, 0x30, 0x6c, 0x67, 0x76, 0x64, 0x4b, 0x70, 0x56, 0x4d, 0x53, 0x0a, 0x4f, 0x4f, 0x37, 0x7a, 0x53, 0x57, 0x31, 0x78, 0x6b, 0x58, 0x35, 0x6a, 0x74, 0x71, 0x75, 0x6d, 0x58, 0x38, 0x4f, 0x6b, 0x68, 0x50, 0x68, 0x50, 0x59, 0x6c, 0x47, 0x2b, 0x2b, 0x4d, 0x58, 0x73, 0x32, 0x7a, 0x69, 0x53, 0x34, 0x77, 0x62, 0x6c, 0x43, 0x4a, 0x45, 0x4d, 0x78, 0x43, 0x68, 0x42, 0x56, 0x66, 0x76, 0x4c, 0x57, 0x6f, 0x6b, 0x56, 0x66, 0x6e, 0x48, 0x6f, 0x4e, 0x62, 0x39, 0x4e, 0x63, 0x67, 0x6b, 0x39, 0x76, 0x6a, 0x6f, 0x34, 0x55, 0x46, 0x74, 0x33, 0x0a, 0x4d, 0x52, 0x75, 0x4e, 0x73, 0x38, 0x63, 0x6b, 0x52, 0x5a, 0x71, 0x6e, 0x72, 0x47, 0x30, 0x41, 0x46, 0x46, 0x6f, 0x45, 0x74, 0x37, 0x6f, 0x54, 0x36, 0x31, 0x45, 0x4b, 0x6d, 0x45, 0x46, 0x42, 0x49, 0x6b, 0x35, 0x6c, 0x59, 0x59, 0x65, 0x42, 0x51, 0x56, 0x43, 0x6d, 0x65, 0x56, 0x79, 0x4a, 0x33, 0x68, 0x6c, 0x4b, 0x56, 0x39, 0x55, 0x75, 0x35, 0x6c, 0x30, 0x63, 0x55, 0x79, 0x78, 0x2b, 0x6d, 0x4d, 0x30, 0x61, 0x42, 0x68, 0x61, 0x6b, 0x61, 0x48, 0x50, 0x51, 0x0a, 0x4e, 0x41, 0x51, 0x54, 0x58, 0x4b, 0x46, 0x78, 0x30, 0x31, 0x70, 0x38, 0x56, 0x64, 0x74, 0x65, 0x5a, 0x4f, 0x45, 0x33, 0x68, 0x7a, 0x42, 0x57, 0x42, 0x4f, 0x55, 0x52, 0x74, 0x43, 0x6d, 0x41, 0x45, 0x76, 0x46, 0x35, 0x4f, 0x59, 0x69, 0x69, 0x41, 0x68, 0x46, 0x38, 0x4a, 0x32, 0x61, 0x33, 0x69, 0x4c, 0x64, 0x34, 0x38, 0x73, 0x6f, 0x4b, 0x71, 0x44, 0x69, 0x72, 0x43, 0x6d, 0x54, 0x43, 0x76, 0x32, 0x5a, 0x64, 0x6c, 0x59, 0x54, 0x42, 0x6f, 0x53, 0x55, 0x65, 0x0a, 0x68, 0x31, 0x30, 0x61, 0x55, 0x41, 0x73, 0x67, 0x45, 0x73, 0x78, 0x42, 0x75, 0x32, 0x34, 0x4c, 0x55, 0x54, 0x69, 0x34, 0x53, 0x38, 0x73, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x6a, 0x4d, 0x47, 0x45, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x0a, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4c, 0x45, 0x2b, 0x77, 0x32, 0x6b, 0x44, 0x2b, 0x4c, 0x39, 0x48, 0x41, 0x64, 0x53, 0x59, 0x4a, 0x68, 0x6f, 0x49, 0x41, 0x75, 0x39, 0x6a, 0x5a, 0x43, 0x76, 0x44, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x77, 0x51, 0x59, 0x4d, 0x42, 0x61, 0x41, 0x46, 0x4c, 0x45, 0x2b, 0x77, 0x32, 0x6b, 0x44, 0x2b, 0x4c, 0x39, 0x48, 0x41, 0x64, 0x53, 0x59, 0x0a, 0x4a, 0x68, 0x6f, 0x49, 0x41, 0x75, 0x39, 0x6a, 0x5a, 0x43, 0x76, 0x44, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x42, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x41, 0x63, 0x47, 0x67, 0x61, 0x58, 0x33, 0x4e, 0x65, 0x63, 0x6e, 0x7a, 0x79, 0x49, 0x5a, 0x67, 0x59, 0x49, 0x56, 0x79, 0x48, 0x62, 0x49, 0x55, 0x66, 0x34, 0x4b, 0x6d, 0x65, 0x71, 0x76, 0x78, 0x67, 0x79, 0x64, 0x6b, 0x41, 0x51, 0x0a, 0x56, 0x38, 0x47, 0x4b, 0x38, 0x33, 0x72, 0x5a, 0x45, 0x57, 0x57, 0x4f, 0x4e, 0x66, 0x71, 0x65, 0x2f, 0x45, 0x57, 0x31, 0x6e, 0x74, 0x6c, 0x4d, 0x4d, 0x55, 0x75, 0x34, 0x6b, 0x65, 0x68, 0x44, 0x4c, 0x49, 0x36, 0x7a, 0x65, 0x4d, 0x37, 0x62, 0x34, 0x31, 0x4e, 0x35, 0x63, 0x64, 0x62, 0x6c, 0x49, 0x5a, 0x51, 0x42, 0x32, 0x6c, 0x57, 0x48, 0x6d, 0x69, 0x52, 0x6b, 0x39, 0x6f, 0x70, 0x6d, 0x7a, 0x4e, 0x36, 0x63, 0x4e, 0x38, 0x32, 0x6f, 0x4e, 0x4c, 0x46, 0x70, 0x0a, 0x6d, 0x79, 0x50, 0x49, 0x6e, 0x6e, 0x67, 0x69, 0x4b, 0x33, 0x42, 0x44, 0x34, 0x31, 0x56, 0x48, 0x4d, 0x57, 0x45, 0x5a, 0x37, 0x31, 0x6a, 0x46, 0x68, 0x53, 0x39, 0x4f, 0x4d, 0x50, 0x61, 0x67, 0x4d, 0x52, 0x59, 0x6a, 0x79, 0x4f, 0x66, 0x69, 0x5a, 0x52, 0x59, 0x7a, 0x79, 0x37, 0x38, 0x61, 0x47, 0x36, 0x41, 0x39, 0x2b, 0x4d, 0x70, 0x65, 0x69, 0x7a, 0x47, 0x4c, 0x59, 0x41, 0x69, 0x4a, 0x4c, 0x51, 0x77, 0x47, 0x58, 0x46, 0x4b, 0x33, 0x78, 0x50, 0x6b, 0x4b, 0x0a, 0x6d, 0x4e, 0x45, 0x56, 0x58, 0x35, 0x38, 0x53, 0x76, 0x6e, 0x77, 0x32, 0x59, 0x7a, 0x69, 0x39, 0x52, 0x4b, 0x52, 0x2f, 0x35, 0x43, 0x59, 0x72, 0x43, 0x73, 0x53, 0x58, 0x61, 0x51, 0x33, 0x70, 0x6a, 0x4f, 0x4c, 0x41, 0x45, 0x46, 0x65, 0x34, 0x79, 0x48, 0x59, 0x53, 0x6b, 0x56, 0x58, 0x79, 0x53, 0x47, 0x6e, 0x59, 0x76, 0x43, 0x6f, 0x43, 0x57, 0x77, 0x39, 0x45, 0x31, 0x43, 0x41, 0x78, 0x32, 0x2f, 0x53, 0x36, 0x63, 0x43, 0x5a, 0x64, 0x6b, 0x47, 0x43, 0x65, 0x0a, 0x76, 0x45, 0x73, 0x58, 0x43, 0x53, 0x2b, 0x30, 0x79, 0x78, 0x35, 0x44, 0x61, 0x4d, 0x6b, 0x48, 0x4a, 0x38, 0x48, 0x53, 0x58, 0x50, 0x66, 0x71, 0x49, 0x62, 0x6c, 0x6f, 0x45, 0x70, 0x77, 0x38, 0x6e, 0x4c, 0x2b, 0x65, 0x2f, 0x49, 0x42, 0x63, 0x6d, 0x32, 0x50, 0x4e, 0x37, 0x45, 0x65, 0x71, 0x4a, 0x53, 0x64, 0x6e, 0x6f, 0x44, 0x66, 0x7a, 0x41, 0x49, 0x4a, 0x39, 0x56, 0x4e, 0x65, 0x70, 0x2b, 0x4f, 0x6b, 0x75, 0x45, 0x36, 0x4e, 0x33, 0x36, 0x42, 0x39, 0x4b, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x73, 0x73, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x47, 0x6f, 0x6c, 0x64, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x75, 0x6a, 0x43, 0x43, 0x41, 0x36, 0x4b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4a, 0x41, 0x4c, 0x74, 0x41, 0x48, 0x45, 0x50, 0x31, 0x58, 0x6b, 0x2b, 0x77, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x42, 0x51, 0x55, 0x41, 0x4d, 0x45, 0x55, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4e, 0x49, 0x4d, 0x52, 0x55, 0x77, 0x0a, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x78, 0x54, 0x64, 0x32, 0x6c, 0x7a, 0x63, 0x31, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x67, 0x51, 0x55, 0x63, 0x78, 0x48, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x46, 0x6c, 0x4e, 0x33, 0x61, 0x58, 0x4e, 0x7a, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x69, 0x42, 0x48, 0x62, 0x32, 0x78, 0x6b, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x43, 0x30, 0x67, 0x52, 0x7a, 0x49, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x0a, 0x4d, 0x44, 0x59, 0x78, 0x4d, 0x44, 0x49, 0x31, 0x4d, 0x44, 0x67, 0x7a, 0x4d, 0x44, 0x4d, 0x31, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x59, 0x78, 0x4d, 0x44, 0x49, 0x31, 0x4d, 0x44, 0x67, 0x7a, 0x4d, 0x44, 0x4d, 0x31, 0x57, 0x6a, 0x42, 0x46, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x44, 0x53, 0x44, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x55, 0x33, 0x64, 0x70, 0x0a, 0x63, 0x33, 0x4e, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x45, 0x46, 0x48, 0x4d, 0x52, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x5a, 0x54, 0x64, 0x32, 0x6c, 0x7a, 0x63, 0x31, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x67, 0x52, 0x32, 0x39, 0x73, 0x5a, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x74, 0x49, 0x45, 0x63, 0x79, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x0a, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x45, 0x41, 0x72, 0x2b, 0x54, 0x75, 0x66, 0x6f, 0x73, 0x6b, 0x44, 0x68, 0x4a, 0x75, 0x71, 0x56, 0x41, 0x74, 0x46, 0x6b, 0x51, 0x37, 0x6b, 0x70, 0x4a, 0x63, 0x79, 0x72, 0x68, 0x64, 0x68, 0x4a, 0x4a, 0x43, 0x45, 0x79, 0x71, 0x38, 0x5a, 0x56, 0x65, 0x43, 0x51, 0x44, 0x35, 0x58, 0x4a, 0x4d, 0x31, 0x51, 0x69, 0x79, 0x55, 0x71, 0x0a, 0x74, 0x32, 0x2f, 0x38, 0x37, 0x36, 0x4c, 0x51, 0x77, 0x42, 0x38, 0x43, 0x4a, 0x45, 0x6f, 0x54, 0x6c, 0x6f, 0x38, 0x6a, 0x45, 0x2b, 0x59, 0x6f, 0x57, 0x41, 0x43, 0x6a, 0x52, 0x38, 0x63, 0x47, 0x70, 0x34, 0x51, 0x6a, 0x4b, 0x37, 0x75, 0x39, 0x6c, 0x69, 0x74, 0x2f, 0x56, 0x63, 0x79, 0x4c, 0x77, 0x56, 0x63, 0x66, 0x44, 0x6d, 0x4a, 0x6c, 0x44, 0x39, 0x30, 0x39, 0x56, 0x6f, 0x70, 0x7a, 0x32, 0x71, 0x35, 0x2b, 0x62, 0x62, 0x71, 0x42, 0x48, 0x48, 0x35, 0x43, 0x0a, 0x6a, 0x43, 0x41, 0x31, 0x32, 0x55, 0x4e, 0x4e, 0x68, 0x50, 0x71, 0x45, 0x32, 0x31, 0x49, 0x73, 0x38, 0x77, 0x34, 0x6e, 0x64, 0x77, 0x74, 0x72, 0x76, 0x78, 0x45, 0x76, 0x63, 0x6e, 0x69, 0x66, 0x4c, 0x74, 0x67, 0x2b, 0x35, 0x68, 0x67, 0x33, 0x57, 0x69, 0x70, 0x79, 0x2b, 0x64, 0x70, 0x69, 0x6b, 0x4a, 0x4b, 0x56, 0x79, 0x68, 0x2b, 0x63, 0x36, 0x62, 0x4d, 0x38, 0x4b, 0x38, 0x76, 0x7a, 0x41, 0x52, 0x4f, 0x2f, 0x57, 0x73, 0x2f, 0x42, 0x74, 0x51, 0x70, 0x67, 0x0a, 0x76, 0x64, 0x32, 0x31, 0x6d, 0x57, 0x52, 0x54, 0x75, 0x4b, 0x43, 0x57, 0x73, 0x32, 0x2f, 0x69, 0x4a, 0x6e, 0x65, 0x52, 0x6a, 0x4f, 0x42, 0x69, 0x45, 0x41, 0x4b, 0x66, 0x4e, 0x41, 0x2b, 0x6b, 0x31, 0x5a, 0x49, 0x7a, 0x55, 0x64, 0x36, 0x2b, 0x6a, 0x62, 0x71, 0x45, 0x65, 0x6d, 0x41, 0x38, 0x61, 0x74, 0x75, 0x66, 0x4b, 0x2b, 0x7a, 0x65, 0x33, 0x67, 0x45, 0x2f, 0x62, 0x6b, 0x33, 0x6c, 0x55, 0x49, 0x62, 0x4c, 0x74, 0x4b, 0x2f, 0x74, 0x52, 0x45, 0x44, 0x46, 0x0a, 0x79, 0x6c, 0x71, 0x4d, 0x32, 0x74, 0x49, 0x72, 0x66, 0x4b, 0x6a, 0x75, 0x76, 0x71, 0x62, 0x6c, 0x43, 0x71, 0x6f, 0x4f, 0x70, 0x64, 0x38, 0x46, 0x55, 0x72, 0x64, 0x56, 0x78, 0x79, 0x4a, 0x64, 0x4d, 0x6d, 0x71, 0x58, 0x6c, 0x32, 0x4d, 0x54, 0x32, 0x38, 0x6e, 0x62, 0x65, 0x54, 0x5a, 0x37, 0x68, 0x54, 0x70, 0x4b, 0x78, 0x56, 0x4b, 0x4a, 0x2b, 0x53, 0x54, 0x6e, 0x6e, 0x58, 0x65, 0x70, 0x67, 0x76, 0x39, 0x56, 0x48, 0x4b, 0x56, 0x78, 0x61, 0x53, 0x76, 0x52, 0x0a, 0x41, 0x69, 0x54, 0x79, 0x73, 0x79, 0x62, 0x55, 0x61, 0x39, 0x6f, 0x45, 0x56, 0x65, 0x58, 0x42, 0x43, 0x73, 0x64, 0x74, 0x4d, 0x44, 0x65, 0x51, 0x4b, 0x75, 0x53, 0x65, 0x46, 0x44, 0x4e, 0x65, 0x46, 0x68, 0x64, 0x56, 0x78, 0x56, 0x75, 0x31, 0x79, 0x7a, 0x53, 0x4a, 0x6b, 0x76, 0x47, 0x64, 0x4a, 0x6f, 0x2b, 0x68, 0x42, 0x39, 0x54, 0x47, 0x73, 0x6e, 0x68, 0x51, 0x32, 0x77, 0x77, 0x4d, 0x43, 0x33, 0x77, 0x4c, 0x6a, 0x45, 0x48, 0x58, 0x75, 0x65, 0x6e, 0x64, 0x0a, 0x6a, 0x49, 0x6a, 0x33, 0x6f, 0x30, 0x32, 0x79, 0x4d, 0x73, 0x7a, 0x59, 0x46, 0x39, 0x72, 0x4e, 0x74, 0x38, 0x35, 0x6d, 0x6e, 0x64, 0x54, 0x39, 0x58, 0x76, 0x2b, 0x39, 0x6c, 0x7a, 0x34, 0x70, 0x64, 0x65, 0x64, 0x2b, 0x70, 0x32, 0x4a, 0x59, 0x72, 0x79, 0x55, 0x30, 0x70, 0x55, 0x48, 0x48, 0x50, 0x62, 0x77, 0x4e, 0x55, 0x4d, 0x6f, 0x44, 0x41, 0x77, 0x38, 0x49, 0x57, 0x68, 0x2b, 0x56, 0x63, 0x33, 0x68, 0x69, 0x76, 0x36, 0x39, 0x79, 0x46, 0x47, 0x6b, 0x4f, 0x0a, 0x70, 0x65, 0x55, 0x44, 0x44, 0x6e, 0x69, 0x4f, 0x4a, 0x69, 0x68, 0x43, 0x38, 0x41, 0x63, 0x4c, 0x59, 0x69, 0x41, 0x51, 0x5a, 0x7a, 0x6c, 0x47, 0x2b, 0x71, 0x6b, 0x44, 0x7a, 0x41, 0x51, 0x34, 0x65, 0x6d, 0x62, 0x76, 0x49, 0x49, 0x4f, 0x31, 0x6a, 0x45, 0x70, 0x57, 0x6a, 0x70, 0x45, 0x41, 0x2f, 0x49, 0x35, 0x63, 0x67, 0x74, 0x36, 0x49, 0x6f, 0x4d, 0x50, 0x69, 0x61, 0x47, 0x35, 0x39, 0x6a, 0x65, 0x38, 0x38, 0x33, 0x57, 0x58, 0x30, 0x58, 0x61, 0x78, 0x52, 0x0a, 0x37, 0x79, 0x53, 0x41, 0x72, 0x71, 0x70, 0x57, 0x6c, 0x32, 0x2f, 0x35, 0x72, 0x58, 0x33, 0x61, 0x59, 0x54, 0x2b, 0x59, 0x64, 0x7a, 0x79, 0x6c, 0x6b, 0x62, 0x59, 0x63, 0x6a, 0x43, 0x62, 0x61, 0x5a, 0x61, 0x49, 0x4a, 0x62, 0x63, 0x48, 0x69, 0x56, 0x4f, 0x4f, 0x35, 0x79, 0x6b, 0x78, 0x4d, 0x67, 0x49, 0x39, 0x33, 0x65, 0x32, 0x43, 0x61, 0x48, 0x74, 0x2b, 0x32, 0x38, 0x6b, 0x67, 0x65, 0x44, 0x72, 0x70, 0x4f, 0x56, 0x47, 0x32, 0x59, 0x34, 0x4f, 0x47, 0x69, 0x0a, 0x47, 0x71, 0x4a, 0x33, 0x55, 0x4d, 0x2f, 0x45, 0x59, 0x35, 0x4c, 0x73, 0x52, 0x78, 0x6d, 0x64, 0x36, 0x2b, 0x5a, 0x72, 0x7a, 0x73, 0x45, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4f, 0x42, 0x72, 0x44, 0x43, 0x42, 0x71, 0x54, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x0a, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x57, 0x79, 0x56, 0x37, 0x6c, 0x71, 0x52, 0x6c, 0x55, 0x58, 0x36, 0x34, 0x4f, 0x66, 0x50, 0x41, 0x65, 0x47, 0x5a, 0x65, 0x36, 0x44, 0x72, 0x6e, 0x38, 0x4f, 0x34, 0x77, 0x48, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6a, 0x42, 0x42, 0x67, 0x77, 0x46, 0x6f, 0x41, 0x55, 0x57, 0x79, 0x56, 0x37, 0x6c, 0x71, 0x52, 0x6c, 0x55, 0x58, 0x36, 0x34, 0x0a, 0x4f, 0x66, 0x50, 0x41, 0x65, 0x47, 0x5a, 0x65, 0x36, 0x44, 0x72, 0x6e, 0x38, 0x4f, 0x34, 0x77, 0x52, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x67, 0x42, 0x44, 0x38, 0x77, 0x50, 0x54, 0x41, 0x37, 0x42, 0x67, 0x6c, 0x67, 0x68, 0x58, 0x51, 0x42, 0x57, 0x51, 0x45, 0x43, 0x41, 0x51, 0x45, 0x77, 0x4c, 0x6a, 0x41, 0x73, 0x42, 0x67, 0x67, 0x72, 0x42, 0x67, 0x45, 0x46, 0x42, 0x51, 0x63, 0x43, 0x41, 0x52, 0x59, 0x67, 0x61, 0x48, 0x52, 0x30, 0x63, 0x44, 0x6f, 0x76, 0x0a, 0x4c, 0x33, 0x4a, 0x6c, 0x63, 0x47, 0x39, 0x7a, 0x61, 0x58, 0x52, 0x76, 0x63, 0x6e, 0x6b, 0x75, 0x63, 0x33, 0x64, 0x70, 0x63, 0x33, 0x4e, 0x7a, 0x61, 0x57, 0x64, 0x75, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x53, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x43, 0x65, 0x36, 0x34, 0x35, 0x52, 0x38, 0x38, 0x61, 0x37, 0x41, 0x33, 0x68, 0x66, 0x6d, 0x0a, 0x35, 0x64, 0x6a, 0x56, 0x39, 0x56, 0x53, 0x77, 0x67, 0x2f, 0x53, 0x37, 0x7a, 0x56, 0x34, 0x46, 0x65, 0x30, 0x2b, 0x66, 0x64, 0x57, 0x61, 0x76, 0x50, 0x4f, 0x68, 0x57, 0x66, 0x76, 0x78, 0x79, 0x65, 0x44, 0x67, 0x44, 0x32, 0x53, 0x74, 0x69, 0x47, 0x77, 0x43, 0x35, 0x2b, 0x4f, 0x6c, 0x67, 0x7a, 0x63, 0x7a, 0x4f, 0x55, 0x59, 0x72, 0x48, 0x55, 0x44, 0x46, 0x75, 0x34, 0x55, 0x70, 0x2b, 0x47, 0x43, 0x39, 0x70, 0x57, 0x62, 0x59, 0x39, 0x5a, 0x49, 0x45, 0x72, 0x0a, 0x34, 0x34, 0x4f, 0x45, 0x35, 0x69, 0x4b, 0x48, 0x6a, 0x6e, 0x33, 0x67, 0x37, 0x67, 0x4b, 0x5a, 0x59, 0x62, 0x67, 0x65, 0x39, 0x4c, 0x67, 0x72, 0x69, 0x42, 0x49, 0x57, 0x68, 0x4d, 0x49, 0x78, 0x6b, 0x7a, 0x69, 0x57, 0x4d, 0x61, 0x61, 0x35, 0x4f, 0x31, 0x4d, 0x2f, 0x77, 0x79, 0x53, 0x54, 0x56, 0x6c, 0x74, 0x70, 0x6b, 0x75, 0x7a, 0x46, 0x77, 0x62, 0x73, 0x34, 0x41, 0x4f, 0x50, 0x73, 0x46, 0x36, 0x6d, 0x34, 0x33, 0x4d, 0x64, 0x38, 0x41, 0x59, 0x4f, 0x66, 0x0a, 0x4d, 0x6b, 0x65, 0x36, 0x55, 0x69, 0x49, 0x30, 0x48, 0x54, 0x4a, 0x36, 0x43, 0x56, 0x61, 0x6e, 0x66, 0x43, 0x55, 0x32, 0x71, 0x54, 0x31, 0x4c, 0x32, 0x73, 0x43, 0x43, 0x62, 0x77, 0x71, 0x37, 0x45, 0x73, 0x69, 0x48, 0x53, 0x79, 0x63, 0x52, 0x2b, 0x52, 0x34, 0x74, 0x78, 0x35, 0x4d, 0x2f, 0x6e, 0x74, 0x74, 0x66, 0x4a, 0x6d, 0x74, 0x53, 0x32, 0x53, 0x36, 0x4b, 0x38, 0x52, 0x54, 0x47, 0x52, 0x49, 0x30, 0x56, 0x71, 0x62, 0x65, 0x2f, 0x76, 0x64, 0x36, 0x6d, 0x0a, 0x47, 0x75, 0x36, 0x75, 0x4c, 0x66, 0x74, 0x49, 0x64, 0x78, 0x66, 0x2b, 0x75, 0x2b, 0x79, 0x76, 0x47, 0x50, 0x55, 0x71, 0x55, 0x66, 0x41, 0x35, 0x68, 0x4a, 0x65, 0x56, 0x62, 0x47, 0x34, 0x62, 0x77, 0x79, 0x76, 0x45, 0x64, 0x47, 0x42, 0x35, 0x4a, 0x62, 0x41, 0x4b, 0x4a, 0x39, 0x2f, 0x66, 0x58, 0x74, 0x49, 0x35, 0x7a, 0x30, 0x56, 0x39, 0x51, 0x6b, 0x76, 0x66, 0x73, 0x79, 0x77, 0x65, 0x78, 0x63, 0x5a, 0x64, 0x79, 0x6c, 0x55, 0x36, 0x6f, 0x4a, 0x78, 0x70, 0x0a, 0x6d, 0x6f, 0x2f, 0x61, 0x37, 0x37, 0x4b, 0x77, 0x50, 0x4a, 0x2b, 0x48, 0x62, 0x42, 0x49, 0x72, 0x5a, 0x58, 0x41, 0x56, 0x55, 0x6a, 0x45, 0x61, 0x4a, 0x4d, 0x39, 0x76, 0x4d, 0x53, 0x4e, 0x51, 0x48, 0x34, 0x78, 0x50, 0x6a, 0x79, 0x50, 0x44, 0x64, 0x45, 0x46, 0x6a, 0x48, 0x46, 0x57, 0x6f, 0x46, 0x4e, 0x30, 0x2b, 0x34, 0x46, 0x46, 0x51, 0x7a, 0x2f, 0x45, 0x62, 0x4d, 0x46, 0x59, 0x4f, 0x6b, 0x72, 0x43, 0x43, 0x68, 0x64, 0x69, 0x44, 0x79, 0x79, 0x4a, 0x6b, 0x0a, 0x76, 0x43, 0x32, 0x34, 0x4a, 0x64, 0x56, 0x55, 0x6f, 0x72, 0x67, 0x47, 0x36, 0x71, 0x32, 0x53, 0x70, 0x43, 0x53, 0x67, 0x77, 0x59, 0x61, 0x31, 0x53, 0x68, 0x4e, 0x71, 0x52, 0x38, 0x38, 0x75, 0x43, 0x31, 0x61, 0x56, 0x56, 0x4d, 0x76, 0x4f, 0x6d, 0x74, 0x74, 0x71, 0x74, 0x4b, 0x61, 0x79, 0x32, 0x30, 0x45, 0x49, 0x68, 0x69, 0x64, 0x33, 0x39, 0x32, 0x71, 0x67, 0x51, 0x6d, 0x77, 0x4c, 0x4f, 0x4d, 0x37, 0x58, 0x64, 0x56, 0x41, 0x79, 0x6b, 0x73, 0x4c, 0x66, 0x0a, 0x4b, 0x7a, 0x41, 0x69, 0x53, 0x4e, 0x44, 0x56, 0x51, 0x54, 0x67, 0x6c, 0x58, 0x61, 0x54, 0x70, 0x58, 0x5a, 0x2f, 0x47, 0x6c, 0x48, 0x58, 0x51, 0x52, 0x66, 0x30, 0x77, 0x6c, 0x30, 0x4f, 0x50, 0x6b, 0x4b, 0x73, 0x4b, 0x78, 0x34, 0x5a, 0x7a, 0x59, 0x45, 0x70, 0x70, 0x4c, 0x64, 0x36, 0x6c, 0x65, 0x4e, 0x63, 0x47, 0x32, 0x6d, 0x71, 0x65, 0x53, 0x7a, 0x35, 0x33, 0x4f, 0x69, 0x41, 0x54, 0x49, 0x67, 0x48, 0x51, 0x76, 0x32, 0x69, 0x65, 0x59, 0x32, 0x42, 0x72, 0x0a, 0x4e, 0x55, 0x30, 0x4c, 0x62, 0x62, 0x71, 0x68, 0x50, 0x63, 0x43, 0x54, 0x34, 0x48, 0x38, 0x6a, 0x73, 0x31, 0x57, 0x74, 0x63, 0x69, 0x56, 0x4f, 0x52, 0x76, 0x6e, 0x53, 0x46, 0x75, 0x2b, 0x77, 0x5a, 0x4d, 0x45, 0x42, 0x6e, 0x75, 0x6e, 0x4b, 0x6f, 0x47, 0x71, 0x59, 0x44, 0x73, 0x2f, 0x59, 0x59, 0x50, 0x49, 0x76, 0x53, 0x62, 0x6a, 0x6b, 0x51, 0x75, 0x45, 0x34, 0x4e, 0x52, 0x62, 0x30, 0x79, 0x47, 0x35, 0x50, 0x39, 0x34, 0x46, 0x57, 0x36, 0x4c, 0x71, 0x6a, 0x0a, 0x76, 0x69, 0x4f, 0x76, 0x72, 0x76, 0x31, 0x76, 0x41, 0x2b, 0x41, 0x43, 0x4f, 0x7a, 0x42, 0x32, 0x2b, 0x68, 0x74, 0x74, 0x51, 0x63, 0x38, 0x42, 0x73, 0x65, 0x6d, 0x34, 0x79, 0x57, 0x62, 0x30, 0x32, 0x79, 0x62, 0x7a, 0x4f, 0x71, 0x52, 0x30, 0x38, 0x6b, 0x6b, 0x6b, 0x57, 0x38, 0x6d, 0x77, 0x30, 0x46, 0x66, 0x42, 0x2b, 0x6a, 0x35, 0x36, 0x34, 0x5a, 0x66, 0x4a, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x73, 0x73, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x53, 0x69, 0x6c, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x76, 0x54, 0x43, 0x43, 0x41, 0x36, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x54, 0x78, 0x76, 0x55, 0x4c, 0x31, 0x53, 0x37, 0x4c, 0x30, 0x73, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x77, 0x52, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x67, 0x78, 0x46, 0x54, 0x41, 0x54, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x44, 0x46, 0x4e, 0x33, 0x61, 0x58, 0x4e, 0x7a, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x69, 0x42, 0x42, 0x52, 0x7a, 0x45, 0x68, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x59, 0x55, 0x33, 0x64, 0x70, 0x63, 0x33, 0x4e, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x4e, 0x70, 0x62, 0x48, 0x5a, 0x6c, 0x63, 0x69, 0x42, 0x44, 0x51, 0x53, 0x41, 0x74, 0x49, 0x45, 0x63, 0x79, 0x4d, 0x42, 0x34, 0x58, 0x0a, 0x44, 0x54, 0x41, 0x32, 0x4d, 0x54, 0x41, 0x79, 0x4e, 0x54, 0x41, 0x34, 0x4d, 0x7a, 0x49, 0x30, 0x4e, 0x6c, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x32, 0x4d, 0x54, 0x41, 0x79, 0x4e, 0x54, 0x41, 0x34, 0x4d, 0x7a, 0x49, 0x30, 0x4e, 0x6c, 0x6f, 0x77, 0x52, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x67, 0x78, 0x46, 0x54, 0x41, 0x54, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x44, 0x46, 0x4e, 0x33, 0x0a, 0x61, 0x58, 0x4e, 0x7a, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x69, 0x42, 0x42, 0x52, 0x7a, 0x45, 0x68, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x59, 0x55, 0x33, 0x64, 0x70, 0x63, 0x33, 0x4e, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x4e, 0x70, 0x62, 0x48, 0x5a, 0x6c, 0x63, 0x69, 0x42, 0x44, 0x51, 0x53, 0x41, 0x74, 0x49, 0x45, 0x63, 0x79, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x0a, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x45, 0x41, 0x78, 0x50, 0x47, 0x48, 0x66, 0x39, 0x4e, 0x34, 0x4d, 0x66, 0x63, 0x34, 0x79, 0x66, 0x6a, 0x44, 0x6d, 0x55, 0x4f, 0x38, 0x78, 0x2f, 0x65, 0x38, 0x4e, 0x2b, 0x64, 0x4f, 0x63, 0x62, 0x70, 0x4c, 0x6a, 0x36, 0x56, 0x7a, 0x48, 0x56, 0x78, 0x75, 0x6d, 0x4b, 0x34, 0x44, 0x56, 0x36, 0x34, 0x34, 0x0a, 0x4e, 0x30, 0x4d, 0x76, 0x46, 0x7a, 0x30, 0x66, 0x79, 0x4d, 0x35, 0x6f, 0x45, 0x4d, 0x46, 0x34, 0x72, 0x68, 0x6b, 0x44, 0x4b, 0x78, 0x44, 0x36, 0x4c, 0x48, 0x6d, 0x44, 0x39, 0x75, 0x69, 0x35, 0x61, 0x4c, 0x6c, 0x56, 0x38, 0x67, 0x52, 0x45, 0x70, 0x7a, 0x6e, 0x35, 0x2f, 0x41, 0x53, 0x4c, 0x48, 0x76, 0x47, 0x69, 0x54, 0x53, 0x66, 0x35, 0x59, 0x58, 0x75, 0x36, 0x74, 0x2b, 0x57, 0x69, 0x45, 0x37, 0x62, 0x72, 0x59, 0x54, 0x37, 0x51, 0x62, 0x4e, 0x48, 0x6d, 0x0a, 0x2b, 0x2f, 0x70, 0x65, 0x37, 0x52, 0x32, 0x30, 0x6e, 0x71, 0x41, 0x31, 0x57, 0x36, 0x47, 0x53, 0x79, 0x2f, 0x42, 0x4a, 0x6b, 0x76, 0x36, 0x46, 0x43, 0x67, 0x55, 0x2b, 0x35, 0x74, 0x6b, 0x4c, 0x34, 0x6b, 0x2b, 0x37, 0x33, 0x4a, 0x55, 0x33, 0x2f, 0x4a, 0x48, 0x70, 0x4d, 0x6a, 0x55, 0x69, 0x30, 0x52, 0x38, 0x36, 0x54, 0x69, 0x65, 0x46, 0x6e, 0x62, 0x41, 0x56, 0x6c, 0x44, 0x4c, 0x61, 0x59, 0x51, 0x31, 0x48, 0x54, 0x57, 0x42, 0x43, 0x72, 0x70, 0x4a, 0x48, 0x0a, 0x36, 0x49, 0x4e, 0x61, 0x55, 0x46, 0x6a, 0x70, 0x69, 0x6f, 0x75, 0x35, 0x58, 0x61, 0x48, 0x63, 0x33, 0x5a, 0x6c, 0x4b, 0x48, 0x7a, 0x5a, 0x6e, 0x75, 0x30, 0x6a, 0x6b, 0x67, 0x37, 0x59, 0x33, 0x36, 0x30, 0x67, 0x36, 0x72, 0x77, 0x39, 0x6e, 0x6a, 0x78, 0x63, 0x48, 0x36, 0x41, 0x54, 0x4b, 0x37, 0x32, 0x6f, 0x78, 0x68, 0x39, 0x54, 0x41, 0x74, 0x76, 0x6d, 0x55, 0x63, 0x58, 0x74, 0x6e, 0x5a, 0x4c, 0x69, 0x32, 0x6b, 0x55, 0x70, 0x43, 0x65, 0x32, 0x55, 0x75, 0x0a, 0x4d, 0x47, 0x6f, 0x4d, 0x39, 0x5a, 0x44, 0x75, 0x6c, 0x65, 0x62, 0x79, 0x7a, 0x59, 0x4c, 0x73, 0x32, 0x61, 0x46, 0x4b, 0x37, 0x50, 0x61, 0x79, 0x53, 0x2b, 0x56, 0x46, 0x68, 0x65, 0x5a, 0x74, 0x65, 0x4a, 0x4d, 0x45, 0x4c, 0x70, 0x79, 0x43, 0x62, 0x54, 0x61, 0x70, 0x78, 0x44, 0x46, 0x6b, 0x48, 0x34, 0x61, 0x44, 0x43, 0x79, 0x72, 0x30, 0x4e, 0x51, 0x70, 0x34, 0x79, 0x56, 0x58, 0x50, 0x51, 0x62, 0x42, 0x48, 0x36, 0x54, 0x43, 0x66, 0x6d, 0x62, 0x35, 0x68, 0x0a, 0x71, 0x41, 0x61, 0x45, 0x75, 0x53, 0x68, 0x36, 0x58, 0x7a, 0x6a, 0x5a, 0x47, 0x36, 0x6b, 0x34, 0x73, 0x49, 0x4e, 0x2f, 0x63, 0x38, 0x48, 0x44, 0x4f, 0x30, 0x67, 0x71, 0x67, 0x67, 0x38, 0x68, 0x6d, 0x37, 0x6a, 0x4d, 0x71, 0x44, 0x58, 0x44, 0x68, 0x42, 0x75, 0x44, 0x73, 0x7a, 0x36, 0x2b, 0x70, 0x4a, 0x56, 0x70, 0x41, 0x54, 0x71, 0x4a, 0x41, 0x48, 0x67, 0x45, 0x32, 0x63, 0x6e, 0x30, 0x6d, 0x52, 0x6d, 0x72, 0x56, 0x6e, 0x35, 0x62, 0x69, 0x34, 0x59, 0x35, 0x0a, 0x46, 0x5a, 0x47, 0x6b, 0x45, 0x43, 0x77, 0x4a, 0x4d, 0x6f, 0x42, 0x67, 0x73, 0x35, 0x50, 0x41, 0x4b, 0x72, 0x59, 0x59, 0x43, 0x35, 0x31, 0x2b, 0x6a, 0x55, 0x6e, 0x79, 0x45, 0x45, 0x70, 0x2f, 0x2b, 0x64, 0x56, 0x47, 0x4c, 0x78, 0x6d, 0x53, 0x6f, 0x35, 0x6d, 0x6e, 0x4a, 0x71, 0x79, 0x37, 0x6a, 0x44, 0x7a, 0x6d, 0x44, 0x72, 0x78, 0x48, 0x42, 0x39, 0x78, 0x7a, 0x55, 0x66, 0x46, 0x77, 0x5a, 0x43, 0x38, 0x49, 0x2b, 0x62, 0x52, 0x48, 0x48, 0x54, 0x42, 0x73, 0x0a, 0x52, 0x4f, 0x6f, 0x70, 0x4e, 0x34, 0x57, 0x53, 0x61, 0x47, 0x61, 0x38, 0x67, 0x7a, 0x6a, 0x2b, 0x65, 0x7a, 0x6b, 0x75, 0x30, 0x31, 0x44, 0x77, 0x48, 0x2f, 0x74, 0x65, 0x59, 0x4c, 0x61, 0x70, 0x70, 0x76, 0x6f, 0x6e, 0x51, 0x66, 0x47, 0x62, 0x47, 0x48, 0x4c, 0x79, 0x39, 0x59, 0x52, 0x30, 0x53, 0x73, 0x6c, 0x6e, 0x78, 0x46, 0x53, 0x75, 0x53, 0x47, 0x54, 0x66, 0x6a, 0x4e, 0x46, 0x75, 0x73, 0x42, 0x33, 0x68, 0x42, 0x34, 0x38, 0x49, 0x48, 0x70, 0x6d, 0x63, 0x0a, 0x63, 0x65, 0x6c, 0x4d, 0x32, 0x4b, 0x58, 0x33, 0x52, 0x78, 0x49, 0x66, 0x64, 0x4e, 0x46, 0x52, 0x6e, 0x6f, 0x62, 0x7a, 0x77, 0x71, 0x49, 0x6a, 0x51, 0x41, 0x74, 0x7a, 0x32, 0x30, 0x75, 0x6d, 0x35, 0x33, 0x4d, 0x47, 0x6a, 0x4d, 0x47, 0x67, 0x36, 0x63, 0x46, 0x5a, 0x72, 0x45, 0x62, 0x36, 0x35, 0x69, 0x2f, 0x34, 0x7a, 0x33, 0x47, 0x63, 0x52, 0x6d, 0x32, 0x35, 0x78, 0x42, 0x57, 0x4e, 0x4f, 0x48, 0x6b, 0x44, 0x52, 0x55, 0x6a, 0x76, 0x78, 0x46, 0x33, 0x58, 0x0a, 0x43, 0x4f, 0x36, 0x48, 0x4f, 0x53, 0x4b, 0x47, 0x73, 0x67, 0x30, 0x50, 0x57, 0x45, 0x50, 0x33, 0x63, 0x61, 0x6c, 0x49, 0x4c, 0x76, 0x33, 0x71, 0x31, 0x68, 0x38, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4f, 0x42, 0x72, 0x44, 0x43, 0x42, 0x71, 0x54, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x0a, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x46, 0x36, 0x44, 0x4e, 0x77, 0x65, 0x52, 0x42, 0x74, 0x6a, 0x70, 0x62, 0x4f, 0x38, 0x74, 0x46, 0x6e, 0x62, 0x30, 0x63, 0x77, 0x70, 0x6a, 0x36, 0x68, 0x6c, 0x67, 0x77, 0x48, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6a, 0x42, 0x42, 0x67, 0x77, 0x46, 0x6f, 0x41, 0x55, 0x46, 0x36, 0x44, 0x4e, 0x77, 0x65, 0x52, 0x42, 0x0a, 0x74, 0x6a, 0x70, 0x62, 0x4f, 0x38, 0x74, 0x46, 0x6e, 0x62, 0x30, 0x63, 0x77, 0x70, 0x6a, 0x36, 0x68, 0x6c, 0x67, 0x77, 0x52, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x67, 0x42, 0x44, 0x38, 0x77, 0x50, 0x54, 0x41, 0x37, 0x42, 0x67, 0x6c, 0x67, 0x68, 0x58, 0x51, 0x42, 0x57, 0x51, 0x45, 0x44, 0x41, 0x51, 0x45, 0x77, 0x4c, 0x6a, 0x41, 0x73, 0x42, 0x67, 0x67, 0x72, 0x42, 0x67, 0x45, 0x46, 0x42, 0x51, 0x63, 0x43, 0x41, 0x52, 0x59, 0x67, 0x61, 0x48, 0x52, 0x30, 0x0a, 0x63, 0x44, 0x6f, 0x76, 0x4c, 0x33, 0x4a, 0x6c, 0x63, 0x47, 0x39, 0x7a, 0x61, 0x58, 0x52, 0x76, 0x63, 0x6e, 0x6b, 0x75, 0x63, 0x33, 0x64, 0x70, 0x63, 0x33, 0x4e, 0x7a, 0x61, 0x57, 0x64, 0x75, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x53, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x48, 0x50, 0x47, 0x67, 0x65, 0x41, 0x6e, 0x30, 0x69, 0x30, 0x50, 0x0a, 0x34, 0x4a, 0x55, 0x77, 0x34, 0x70, 0x70, 0x42, 0x66, 0x31, 0x41, 0x73, 0x58, 0x31, 0x39, 0x69, 0x59, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x6b, 0x59, 0x44, 0x48, 0x52, 0x4a, 0x31, 0x6c, 0x32, 0x45, 0x36, 0x6b, 0x46, 0x53, 0x47, 0x47, 0x39, 0x59, 0x72, 0x56, 0x42, 0x57, 0x49, 0x47, 0x72, 0x47, 0x76, 0x53, 0x68, 0x70, 0x57, 0x4a, 0x48, 0x63, 0x6b, 0x52, 0x45, 0x31, 0x71, 0x54, 0x6f, 0x64, 0x76, 0x42, 0x71, 0x6c, 0x59, 0x4a, 0x37, 0x59, 0x48, 0x33, 0x39, 0x46, 0x0a, 0x6b, 0x57, 0x6e, 0x5a, 0x66, 0x72, 0x74, 0x34, 0x63, 0x73, 0x45, 0x47, 0x44, 0x79, 0x72, 0x4f, 0x6a, 0x34, 0x56, 0x77, 0x59, 0x61, 0x79, 0x67, 0x7a, 0x51, 0x75, 0x34, 0x4f, 0x53, 0x6c, 0x57, 0x68, 0x44, 0x4a, 0x4f, 0x68, 0x72, 0x73, 0x39, 0x78, 0x43, 0x72, 0x5a, 0x31, 0x78, 0x39, 0x79, 0x37, 0x76, 0x35, 0x52, 0x6f, 0x53, 0x4a, 0x42, 0x73, 0x58, 0x45, 0x43, 0x59, 0x78, 0x71, 0x43, 0x73, 0x47, 0x4b, 0x72, 0x58, 0x6c, 0x63, 0x53, 0x48, 0x39, 0x2f, 0x4c, 0x0a, 0x33, 0x58, 0x57, 0x67, 0x77, 0x46, 0x31, 0x35, 0x6b, 0x49, 0x77, 0x62, 0x34, 0x46, 0x44, 0x6d, 0x33, 0x6a, 0x48, 0x2b, 0x6d, 0x48, 0x74, 0x77, 0x58, 0x36, 0x57, 0x51, 0x32, 0x4b, 0x33, 0x34, 0x41, 0x72, 0x5a, 0x76, 0x30, 0x32, 0x44, 0x64, 0x51, 0x45, 0x73, 0x69, 0x78, 0x54, 0x32, 0x74, 0x4f, 0x6e, 0x71, 0x66, 0x47, 0x68, 0x70, 0x48, 0x6b, 0x58, 0x6b, 0x7a, 0x75, 0x6f, 0x4c, 0x63, 0x4d, 0x6d, 0x6b, 0x44, 0x6c, 0x6d, 0x34, 0x66, 0x53, 0x2f, 0x42, 0x78, 0x0a, 0x2f, 0x75, 0x4e, 0x6e, 0x63, 0x71, 0x43, 0x78, 0x76, 0x31, 0x79, 0x4c, 0x35, 0x50, 0x71, 0x5a, 0x49, 0x73, 0x65, 0x45, 0x75, 0x52, 0x75, 0x4e, 0x49, 0x35, 0x63, 0x2f, 0x37, 0x53, 0x58, 0x67, 0x7a, 0x32, 0x57, 0x37, 0x39, 0x57, 0x45, 0x45, 0x37, 0x39, 0x30, 0x65, 0x73, 0x6c, 0x70, 0x42, 0x49, 0x6c, 0x71, 0x68, 0x6e, 0x31, 0x30, 0x73, 0x36, 0x46, 0x76, 0x4a, 0x62, 0x61, 0x6b, 0x4d, 0x44, 0x48, 0x69, 0x71, 0x59, 0x4d, 0x5a, 0x57, 0x6a, 0x77, 0x46, 0x61, 0x0a, 0x44, 0x47, 0x69, 0x38, 0x61, 0x52, 0x6c, 0x35, 0x78, 0x42, 0x39, 0x2b, 0x6c, 0x77, 0x57, 0x2f, 0x78, 0x65, 0x6b, 0x6b, 0x55, 0x56, 0x37, 0x55, 0x31, 0x55, 0x74, 0x54, 0x37, 0x64, 0x6b, 0x6a, 0x57, 0x6a, 0x59, 0x44, 0x5a, 0x61, 0x50, 0x42, 0x41, 0x36, 0x31, 0x42, 0x4d, 0x50, 0x4e, 0x47, 0x47, 0x34, 0x57, 0x51, 0x72, 0x32, 0x57, 0x31, 0x31, 0x62, 0x48, 0x6b, 0x46, 0x6c, 0x74, 0x34, 0x64, 0x52, 0x32, 0x58, 0x65, 0x6d, 0x31, 0x5a, 0x71, 0x53, 0x71, 0x50, 0x0a, 0x65, 0x39, 0x37, 0x44, 0x68, 0x34, 0x6b, 0x51, 0x6d, 0x55, 0x6c, 0x7a, 0x65, 0x4d, 0x67, 0x39, 0x76, 0x56, 0x45, 0x31, 0x64, 0x43, 0x72, 0x56, 0x38, 0x58, 0x35, 0x70, 0x47, 0x79, 0x71, 0x37, 0x4f, 0x37, 0x30, 0x6c, 0x75, 0x4a, 0x70, 0x61, 0x50, 0x58, 0x4a, 0x68, 0x6b, 0x47, 0x61, 0x48, 0x37, 0x67, 0x7a, 0x57, 0x54, 0x64, 0x51, 0x52, 0x64, 0x41, 0x74, 0x71, 0x2f, 0x67, 0x73, 0x44, 0x2f, 0x4b, 0x4e, 0x56, 0x56, 0x34, 0x6e, 0x2b, 0x53, 0x73, 0x75, 0x75, 0x0a, 0x57, 0x78, 0x63, 0x46, 0x79, 0x50, 0x4b, 0x4e, 0x49, 0x7a, 0x46, 0x54, 0x4f, 0x4e, 0x49, 0x74, 0x61, 0x6a, 0x2b, 0x43, 0x75, 0x59, 0x30, 0x49, 0x61, 0x76, 0x64, 0x65, 0x51, 0x58, 0x52, 0x75, 0x77, 0x78, 0x46, 0x2b, 0x42, 0x36, 0x77, 0x70, 0x59, 0x4a, 0x45, 0x2f, 0x4f, 0x4d, 0x70, 0x58, 0x45, 0x41, 0x32, 0x39, 0x4d, 0x43, 0x2f, 0x48, 0x70, 0x65, 0x5a, 0x42, 0x6f, 0x4e, 0x71, 0x75, 0x42, 0x59, 0x65, 0x61, 0x6f, 0x4b, 0x52, 0x6c, 0x62, 0x45, 0x77, 0x4a, 0x0a, 0x44, 0x49, 0x6d, 0x36, 0x75, 0x4e, 0x4f, 0x35, 0x77, 0x4a, 0x4f, 0x4b, 0x4d, 0x50, 0x71, 0x4e, 0x35, 0x5a, 0x70, 0x72, 0x46, 0x51, 0x46, 0x4f, 0x5a, 0x36, 0x72, 0x61, 0x59, 0x6c, 0x59, 0x2b, 0x68, 0x41, 0x68, 0x6d, 0x30, 0x73, 0x51, 0x32, 0x66, 0x61, 0x63, 0x2b, 0x45, 0x50, 0x79, 0x49, 0x34, 0x4e, 0x53, 0x41, 0x35, 0x51, 0x43, 0x39, 0x71, 0x76, 0x4e, 0x4f, 0x42, 0x71, 0x4e, 0x36, 0x61, 0x76, 0x6c, 0x69, 0x63, 0x75, 0x4d, 0x4a, 0x54, 0x2b, 0x75, 0x62, 0x0a, 0x44, 0x67, 0x45, 0x6a, 0x38, 0x5a, 0x2b, 0x37, 0x66, 0x4e, 0x7a, 0x63, 0x62, 0x42, 0x47, 0x58, 0x4a, 0x62, 0x4c, 0x79, 0x74, 0x47, 0x4d, 0x55, 0x30, 0x67, 0x59, 0x71, 0x5a, 0x34, 0x79, 0x44, 0x39, 0x63, 0x37, 0x71, 0x42, 0x39, 0x69, 0x61, 0x61, 0x68, 0x37, 0x73, 0x35, 0x41, 0x71, 0x37, 0x4b, 0x6b, 0x7a, 0x72, 0x43, 0x57, 0x41, 0x35, 0x7a, 0x73, 0x70, 0x69, 0x32, 0x43, 0x35, 0x75, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x75, 0x44, 0x43, 0x43, 0x41, 0x71, 0x43, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x44, 0x50, 0x43, 0x4f, 0x58, 0x41, 0x67, 0x57, 0x70, 0x61, 0x31, 0x43, 0x66, 0x2f, 0x44, 0x72, 0x4a, 0x78, 0x68, 0x5a, 0x30, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x49, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x67, 0x4d, 0x42, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x58, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x58, 0x4a, 0x6c, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x51, 0x32, 0x39, 0x79, 0x63, 0x47, 0x39, 0x79, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x78, 0x46, 0x7a, 0x41, 0x56, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x44, 0x6c, 0x4e, 0x6c, 0x59, 0x33, 0x56, 0x79, 0x5a, 0x56, 0x52, 0x79, 0x0a, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41, 0x32, 0x4d, 0x54, 0x45, 0x77, 0x4e, 0x7a, 0x45, 0x35, 0x4d, 0x7a, 0x45, 0x78, 0x4f, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x49, 0x35, 0x4d, 0x54, 0x49, 0x7a, 0x4d, 0x54, 0x45, 0x35, 0x4e, 0x44, 0x41, 0x31, 0x4e, 0x56, 0x6f, 0x77, 0x53, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x49, 0x44, 0x41, 0x65, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x46, 0x31, 0x4e, 0x6c, 0x59, 0x33, 0x56, 0x79, 0x5a, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x45, 0x4e, 0x76, 0x63, 0x6e, 0x42, 0x76, 0x63, 0x6d, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x4d, 0x52, 0x63, 0x77, 0x46, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x77, 0x35, 0x54, 0x5a, 0x57, 0x4e, 0x31, 0x63, 0x6d, 0x56, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x44, 0x51, 0x54, 0x43, 0x43, 0x0a, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4b, 0x75, 0x6b, 0x67, 0x65, 0x57, 0x56, 0x7a, 0x66, 0x58, 0x32, 0x46, 0x49, 0x37, 0x43, 0x54, 0x38, 0x72, 0x55, 0x34, 0x6e, 0x69, 0x56, 0x57, 0x4a, 0x78, 0x42, 0x34, 0x51, 0x32, 0x5a, 0x51, 0x43, 0x51, 0x58, 0x0a, 0x4f, 0x5a, 0x45, 0x7a, 0x5a, 0x75, 0x6d, 0x2b, 0x34, 0x59, 0x4f, 0x76, 0x59, 0x6c, 0x79, 0x4a, 0x30, 0x66, 0x77, 0x6b, 0x57, 0x32, 0x47, 0x7a, 0x34, 0x42, 0x45, 0x52, 0x51, 0x52, 0x77, 0x64, 0x62, 0x76, 0x43, 0x34, 0x75, 0x2f, 0x6a, 0x65, 0x70, 0x34, 0x47, 0x36, 0x70, 0x6b, 0x6a, 0x47, 0x6e, 0x78, 0x32, 0x39, 0x76, 0x6f, 0x36, 0x70, 0x51, 0x54, 0x36, 0x34, 0x6c, 0x4f, 0x30, 0x70, 0x47, 0x74, 0x53, 0x4f, 0x30, 0x67, 0x4d, 0x64, 0x41, 0x2b, 0x39, 0x74, 0x0a, 0x44, 0x57, 0x63, 0x63, 0x56, 0x39, 0x63, 0x47, 0x72, 0x63, 0x72, 0x49, 0x39, 0x66, 0x34, 0x4f, 0x72, 0x32, 0x59, 0x6c, 0x53, 0x41, 0x53, 0x57, 0x43, 0x31, 0x32, 0x6a, 0x75, 0x68, 0x62, 0x44, 0x43, 0x45, 0x2f, 0x52, 0x52, 0x76, 0x67, 0x55, 0x58, 0x50, 0x4c, 0x49, 0x58, 0x67, 0x47, 0x5a, 0x62, 0x66, 0x32, 0x49, 0x7a, 0x49, 0x61, 0x6f, 0x77, 0x57, 0x38, 0x78, 0x51, 0x6d, 0x78, 0x53, 0x50, 0x6d, 0x6a, 0x4c, 0x38, 0x78, 0x6b, 0x30, 0x33, 0x37, 0x75, 0x48, 0x0a, 0x47, 0x46, 0x61, 0x41, 0x4a, 0x73, 0x54, 0x51, 0x33, 0x4d, 0x42, 0x76, 0x33, 0x39, 0x36, 0x67, 0x77, 0x70, 0x45, 0x57, 0x6f, 0x47, 0x51, 0x52, 0x53, 0x30, 0x53, 0x38, 0x48, 0x76, 0x62, 0x6e, 0x2b, 0x6d, 0x50, 0x65, 0x5a, 0x71, 0x78, 0x32, 0x70, 0x48, 0x47, 0x6a, 0x37, 0x44, 0x61, 0x55, 0x61, 0x48, 0x70, 0x33, 0x70, 0x4c, 0x48, 0x6e, 0x44, 0x69, 0x2b, 0x42, 0x65, 0x75, 0x4b, 0x31, 0x63, 0x6f, 0x62, 0x76, 0x6f, 0x6d, 0x75, 0x4c, 0x38, 0x41, 0x2f, 0x62, 0x0a, 0x30, 0x31, 0x6b, 0x2f, 0x75, 0x6e, 0x4b, 0x38, 0x52, 0x43, 0x53, 0x63, 0x34, 0x33, 0x4f, 0x7a, 0x39, 0x36, 0x39, 0x58, 0x4c, 0x30, 0x49, 0x6d, 0x6e, 0x61, 0x6c, 0x30, 0x75, 0x67, 0x42, 0x53, 0x38, 0x6b, 0x76, 0x4e, 0x55, 0x33, 0x78, 0x48, 0x43, 0x7a, 0x61, 0x46, 0x44, 0x6d, 0x61, 0x70, 0x43, 0x4a, 0x63, 0x57, 0x4e, 0x46, 0x66, 0x42, 0x5a, 0x76, 0x65, 0x41, 0x34, 0x2b, 0x31, 0x77, 0x56, 0x4d, 0x65, 0x54, 0x34, 0x43, 0x34, 0x6f, 0x46, 0x56, 0x6d, 0x48, 0x0a, 0x75, 0x72, 0x73, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4f, 0x42, 0x6e, 0x54, 0x43, 0x42, 0x6d, 0x6a, 0x41, 0x54, 0x42, 0x67, 0x6b, 0x72, 0x42, 0x67, 0x45, 0x45, 0x41, 0x59, 0x49, 0x33, 0x46, 0x41, 0x49, 0x45, 0x42, 0x68, 0x34, 0x45, 0x41, 0x45, 0x4d, 0x41, 0x51, 0x54, 0x41, 0x4c, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x0a, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x51, 0x6a, 0x4b, 0x32, 0x46, 0x76, 0x6f, 0x45, 0x2f, 0x66, 0x35, 0x64, 0x53, 0x33, 0x72, 0x44, 0x2f, 0x66, 0x64, 0x4d, 0x51, 0x42, 0x31, 0x61, 0x51, 0x36, 0x38, 0x77, 0x4e, 0x41, 0x59, 0x44, 0x56, 0x52, 0x30, 0x66, 0x42, 0x43, 0x30, 0x77, 0x4b, 0x7a, 0x41, 0x70, 0x6f, 0x43, 0x65, 0x67, 0x4a, 0x59, 0x59, 0x6a, 0x0a, 0x61, 0x48, 0x52, 0x30, 0x63, 0x44, 0x6f, 0x76, 0x4c, 0x32, 0x4e, 0x79, 0x62, 0x43, 0x35, 0x7a, 0x5a, 0x57, 0x4e, 0x31, 0x63, 0x6d, 0x56, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x35, 0x6a, 0x62, 0x32, 0x30, 0x76, 0x55, 0x31, 0x52, 0x44, 0x51, 0x53, 0x35, 0x6a, 0x63, 0x6d, 0x77, 0x77, 0x45, 0x41, 0x59, 0x4a, 0x4b, 0x77, 0x59, 0x42, 0x42, 0x41, 0x47, 0x43, 0x4e, 0x78, 0x55, 0x42, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x41, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x0a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x44, 0x44, 0x74, 0x54, 0x30, 0x72, 0x68, 0x57, 0x44, 0x70, 0x53, 0x63, 0x6c, 0x75, 0x31, 0x70, 0x71, 0x4e, 0x6c, 0x47, 0x4b, 0x61, 0x37, 0x55, 0x54, 0x74, 0x33, 0x36, 0x5a, 0x33, 0x71, 0x30, 0x35, 0x39, 0x63, 0x34, 0x45, 0x56, 0x6c, 0x65, 0x77, 0x33, 0x4b, 0x57, 0x2b, 0x4a, 0x77, 0x55, 0x4c, 0x4b, 0x55, 0x42, 0x52, 0x53, 0x75, 0x0a, 0x53, 0x63, 0x65, 0x4e, 0x51, 0x51, 0x63, 0x53, 0x63, 0x35, 0x52, 0x2b, 0x44, 0x43, 0x4d, 0x68, 0x2f, 0x62, 0x77, 0x51, 0x66, 0x32, 0x41, 0x51, 0x57, 0x6e, 0x4c, 0x31, 0x6d, 0x41, 0x36, 0x73, 0x37, 0x4c, 0x6c, 0x2f, 0x33, 0x58, 0x70, 0x76, 0x58, 0x64, 0x4d, 0x63, 0x39, 0x50, 0x2b, 0x49, 0x42, 0x57, 0x6c, 0x43, 0x71, 0x51, 0x56, 0x78, 0x79, 0x4c, 0x65, 0x73, 0x4a, 0x75, 0x67, 0x75, 0x74, 0x49, 0x78, 0x71, 0x2f, 0x33, 0x48, 0x63, 0x75, 0x4c, 0x48, 0x66, 0x0a, 0x6d, 0x62, 0x78, 0x38, 0x49, 0x56, 0x51, 0x72, 0x35, 0x46, 0x69, 0x69, 0x75, 0x31, 0x63, 0x70, 0x72, 0x70, 0x36, 0x70, 0x6f, 0x78, 0x6b, 0x6d, 0x44, 0x35, 0x6b, 0x75, 0x43, 0x4c, 0x44, 0x76, 0x2f, 0x57, 0x6e, 0x50, 0x6d, 0x52, 0x6f, 0x4a, 0x6a, 0x65, 0x4f, 0x6e, 0x6e, 0x79, 0x76, 0x4a, 0x4e, 0x6a, 0x52, 0x37, 0x4a, 0x4c, 0x4e, 0x34, 0x54, 0x4a, 0x55, 0x58, 0x70, 0x41, 0x59, 0x6d, 0x48, 0x72, 0x5a, 0x6b, 0x55, 0x6a, 0x5a, 0x66, 0x59, 0x47, 0x66, 0x5a, 0x0a, 0x6e, 0x4d, 0x55, 0x46, 0x64, 0x41, 0x76, 0x6e, 0x5a, 0x79, 0x50, 0x53, 0x43, 0x50, 0x79, 0x49, 0x36, 0x61, 0x36, 0x4c, 0x66, 0x2b, 0x45, 0x77, 0x39, 0x44, 0x64, 0x2b, 0x2f, 0x63, 0x59, 0x79, 0x32, 0x69, 0x32, 0x65, 0x52, 0x44, 0x41, 0x77, 0x62, 0x4f, 0x34, 0x48, 0x33, 0x74, 0x49, 0x30, 0x2f, 0x4e, 0x4c, 0x2f, 0x51, 0x50, 0x5a, 0x4c, 0x39, 0x47, 0x5a, 0x47, 0x42, 0x6c, 0x53, 0x6d, 0x38, 0x6a, 0x49, 0x4b, 0x59, 0x79, 0x59, 0x77, 0x61, 0x35, 0x76, 0x52, 0x0a, 0x33, 0x49, 0x74, 0x48, 0x75, 0x75, 0x47, 0x35, 0x31, 0x57, 0x4c, 0x51, 0x6f, 0x71, 0x44, 0x30, 0x5a, 0x77, 0x56, 0x34, 0x4b, 0x57, 0x4d, 0x61, 0x62, 0x77, 0x54, 0x57, 0x2b, 0x4d, 0x5a, 0x4d, 0x6f, 0x35, 0x71, 0x78, 0x4e, 0x37, 0x53, 0x4e, 0x35, 0x53, 0x68, 0x4c, 0x48, 0x5a, 0x34, 0x73, 0x77, 0x72, 0x68, 0x6f, 0x76, 0x4f, 0x30, 0x43, 0x37, 0x6a, 0x45, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x76, 0x44, 0x43, 0x43, 0x41, 0x71, 0x53, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x42, 0x31, 0x59, 0x69, 0x70, 0x4f, 0x6a, 0x55, 0x69, 0x6f, 0x6c, 0x4e, 0x39, 0x42, 0x50, 0x49, 0x38, 0x50, 0x6a, 0x71, 0x70, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x4b, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x67, 0x4d, 0x42, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x58, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x58, 0x4a, 0x6c, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x51, 0x32, 0x39, 0x79, 0x63, 0x47, 0x39, 0x79, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x46, 0x4e, 0x6c, 0x59, 0x33, 0x56, 0x79, 0x5a, 0x53, 0x42, 0x48, 0x0a, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x51, 0x30, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x59, 0x78, 0x4d, 0x54, 0x41, 0x33, 0x4d, 0x54, 0x6b, 0x30, 0x4d, 0x6a, 0x49, 0x34, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x6a, 0x6b, 0x78, 0x4d, 0x6a, 0x4d, 0x78, 0x4d, 0x54, 0x6b, 0x31, 0x4d, 0x6a, 0x41, 0x32, 0x57, 0x6a, 0x42, 0x4b, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x67, 0x0a, 0x4d, 0x42, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x58, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x58, 0x4a, 0x6c, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x51, 0x32, 0x39, 0x79, 0x63, 0x47, 0x39, 0x79, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x46, 0x4e, 0x6c, 0x59, 0x33, 0x56, 0x79, 0x5a, 0x53, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x0a, 0x51, 0x30, 0x45, 0x77, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43, 0x76, 0x4e, 0x53, 0x37, 0x59, 0x72, 0x47, 0x78, 0x56, 0x61, 0x51, 0x5a, 0x78, 0x35, 0x52, 0x4e, 0x6f, 0x4a, 0x4c, 0x4e, 0x50, 0x32, 0x4d, 0x77, 0x68, 0x52, 0x2f, 0x6a, 0x78, 0x0a, 0x59, 0x44, 0x69, 0x4a, 0x69, 0x51, 0x50, 0x70, 0x76, 0x65, 0x70, 0x65, 0x52, 0x6c, 0x4d, 0x4a, 0x33, 0x46, 0x7a, 0x31, 0x57, 0x75, 0x6a, 0x33, 0x52, 0x53, 0x6f, 0x43, 0x36, 0x7a, 0x46, 0x68, 0x31, 0x79, 0x6b, 0x7a, 0x54, 0x4d, 0x37, 0x48, 0x66, 0x41, 0x6f, 0x33, 0x66, 0x67, 0x2b, 0x36, 0x4d, 0x70, 0x6a, 0x68, 0x48, 0x5a, 0x65, 0x76, 0x6a, 0x38, 0x66, 0x63, 0x79, 0x54, 0x69, 0x57, 0x38, 0x39, 0x73, 0x61, 0x2f, 0x46, 0x48, 0x74, 0x61, 0x4d, 0x62, 0x51, 0x0a, 0x62, 0x71, 0x52, 0x38, 0x4a, 0x4e, 0x47, 0x75, 0x51, 0x73, 0x69, 0x57, 0x55, 0x47, 0x4d, 0x75, 0x34, 0x50, 0x35, 0x31, 0x2f, 0x70, 0x69, 0x6e, 0x58, 0x30, 0x6b, 0x75, 0x6c, 0x65, 0x4d, 0x35, 0x4d, 0x32, 0x53, 0x4f, 0x48, 0x71, 0x52, 0x66, 0x6b, 0x4e, 0x4a, 0x6e, 0x50, 0x4c, 0x4c, 0x5a, 0x2f, 0x6b, 0x47, 0x35, 0x56, 0x61, 0x63, 0x4a, 0x6a, 0x6e, 0x49, 0x46, 0x48, 0x6f, 0x76, 0x64, 0x52, 0x49, 0x57, 0x43, 0x51, 0x74, 0x42, 0x4a, 0x77, 0x42, 0x31, 0x67, 0x0a, 0x38, 0x4e, 0x45, 0x58, 0x4c, 0x4a, 0x58, 0x72, 0x39, 0x71, 0x58, 0x42, 0x6b, 0x71, 0x50, 0x46, 0x77, 0x71, 0x63, 0x49, 0x59, 0x41, 0x31, 0x67, 0x42, 0x42, 0x43, 0x57, 0x65, 0x5a, 0x34, 0x57, 0x4e, 0x4f, 0x61, 0x70, 0x74, 0x76, 0x6f, 0x6c, 0x52, 0x54, 0x6e, 0x49, 0x48, 0x6d, 0x58, 0x35, 0x6b, 0x2f, 0x57, 0x71, 0x38, 0x56, 0x4c, 0x63, 0x6d, 0x5a, 0x67, 0x39, 0x70, 0x59, 0x59, 0x61, 0x44, 0x44, 0x55, 0x7a, 0x2b, 0x6b, 0x75, 0x6c, 0x42, 0x41, 0x59, 0x56, 0x0a, 0x48, 0x44, 0x47, 0x41, 0x37, 0x36, 0x6f, 0x59, 0x61, 0x38, 0x4a, 0x37, 0x31, 0x39, 0x72, 0x4f, 0x2b, 0x54, 0x4d, 0x67, 0x31, 0x66, 0x57, 0x39, 0x61, 0x6a, 0x4d, 0x74, 0x67, 0x51, 0x54, 0x37, 0x73, 0x46, 0x7a, 0x55, 0x6e, 0x4b, 0x50, 0x69, 0x58, 0x42, 0x33, 0x6a, 0x71, 0x55, 0x4a, 0x31, 0x58, 0x6e, 0x76, 0x55, 0x64, 0x2b, 0x38, 0x35, 0x56, 0x4c, 0x72, 0x4a, 0x43, 0x68, 0x67, 0x62, 0x45, 0x70, 0x6c, 0x4a, 0x4c, 0x34, 0x68, 0x4c, 0x2f, 0x56, 0x42, 0x69, 0x0a, 0x30, 0x58, 0x50, 0x6e, 0x6a, 0x33, 0x70, 0x44, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x67, 0x5a, 0x30, 0x77, 0x67, 0x5a, 0x6f, 0x77, 0x45, 0x77, 0x59, 0x4a, 0x4b, 0x77, 0x59, 0x42, 0x42, 0x41, 0x47, 0x43, 0x4e, 0x78, 0x51, 0x43, 0x42, 0x41, 0x59, 0x65, 0x42, 0x41, 0x42, 0x44, 0x41, 0x45, 0x45, 0x77, 0x43, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x0a, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4b, 0x39, 0x45, 0x42, 0x4d, 0x4a, 0x42, 0x66, 0x6b, 0x69, 0x44, 0x32, 0x30, 0x34, 0x35, 0x41, 0x75, 0x7a, 0x73, 0x68, 0x48, 0x72, 0x6d, 0x7a, 0x73, 0x6d, 0x6b, 0x4d, 0x44, 0x51, 0x47, 0x41, 0x31, 0x55, 0x64, 0x48, 0x77, 0x51, 0x74, 0x4d, 0x43, 0x73, 0x77, 0x4b, 0x61, 0x41, 0x6e, 0x0a, 0x6f, 0x43, 0x57, 0x47, 0x49, 0x32, 0x68, 0x30, 0x64, 0x48, 0x41, 0x36, 0x4c, 0x79, 0x39, 0x6a, 0x63, 0x6d, 0x77, 0x75, 0x63, 0x32, 0x56, 0x6a, 0x64, 0x58, 0x4a, 0x6c, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4c, 0x31, 0x4e, 0x48, 0x51, 0x30, 0x45, 0x75, 0x59, 0x33, 0x4a, 0x73, 0x4d, 0x42, 0x41, 0x47, 0x43, 0x53, 0x73, 0x47, 0x41, 0x51, 0x51, 0x42, 0x67, 0x6a, 0x63, 0x56, 0x41, 0x51, 0x51, 0x44, 0x41, 0x67, 0x45, 0x41, 0x0a, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x42, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x42, 0x6a, 0x47, 0x67, 0x68, 0x41, 0x66, 0x61, 0x52, 0x65, 0x55, 0x77, 0x31, 0x33, 0x32, 0x48, 0x71, 0x75, 0x48, 0x77, 0x30, 0x4c, 0x55, 0x52, 0x59, 0x44, 0x37, 0x78, 0x68, 0x38, 0x79, 0x4f, 0x4f, 0x76, 0x61, 0x6c, 0x69, 0x54, 0x46, 0x47, 0x43, 0x52, 0x73, 0x6f, 0x54, 0x63, 0x69, 0x45, 0x36, 0x2b, 0x0a, 0x4f, 0x59, 0x6f, 0x36, 0x38, 0x2b, 0x61, 0x43, 0x69, 0x56, 0x30, 0x42, 0x4e, 0x37, 0x4f, 0x72, 0x4a, 0x4b, 0x51, 0x56, 0x44, 0x70, 0x49, 0x31, 0x57, 0x6b, 0x70, 0x45, 0x58, 0x6b, 0x35, 0x58, 0x2b, 0x6e, 0x58, 0x4f, 0x48, 0x30, 0x6a, 0x4f, 0x5a, 0x76, 0x51, 0x38, 0x51, 0x43, 0x61, 0x53, 0x6d, 0x47, 0x77, 0x62, 0x37, 0x69, 0x52, 0x47, 0x44, 0x42, 0x65, 0x7a, 0x55, 0x71, 0x58, 0x62, 0x70, 0x5a, 0x47, 0x52, 0x7a, 0x7a, 0x66, 0x54, 0x62, 0x2b, 0x63, 0x6e, 0x0a, 0x43, 0x44, 0x70, 0x4f, 0x47, 0x52, 0x38, 0x36, 0x70, 0x31, 0x68, 0x63, 0x46, 0x38, 0x39, 0x35, 0x50, 0x34, 0x76, 0x6b, 0x70, 0x39, 0x4d, 0x6d, 0x49, 0x35, 0x30, 0x6d, 0x44, 0x31, 0x68, 0x70, 0x2f, 0x45, 0x64, 0x2b, 0x73, 0x74, 0x43, 0x4e, 0x69, 0x35, 0x4f, 0x2f, 0x4b, 0x55, 0x39, 0x44, 0x61, 0x58, 0x52, 0x32, 0x5a, 0x30, 0x76, 0x50, 0x42, 0x34, 0x7a, 0x6d, 0x41, 0x76, 0x65, 0x31, 0x34, 0x62, 0x52, 0x44, 0x74, 0x55, 0x73, 0x74, 0x46, 0x4a, 0x2f, 0x35, 0x0a, 0x33, 0x43, 0x59, 0x4e, 0x76, 0x36, 0x5a, 0x48, 0x64, 0x41, 0x62, 0x59, 0x69, 0x4e, 0x45, 0x36, 0x4b, 0x54, 0x43, 0x45, 0x7a, 0x74, 0x49, 0x35, 0x67, 0x47, 0x49, 0x62, 0x71, 0x4d, 0x64, 0x58, 0x53, 0x62, 0x78, 0x71, 0x56, 0x56, 0x46, 0x6e, 0x46, 0x55, 0x71, 0x2b, 0x4e, 0x51, 0x66, 0x6b, 0x31, 0x58, 0x57, 0x59, 0x4e, 0x33, 0x6b, 0x77, 0x46, 0x4e, 0x73, 0x70, 0x6e, 0x57, 0x7a, 0x46, 0x61, 0x63, 0x78, 0x48, 0x56, 0x61, 0x49, 0x77, 0x39, 0x38, 0x78, 0x63, 0x0a, 0x66, 0x38, 0x4c, 0x44, 0x6d, 0x42, 0x78, 0x72, 0x54, 0x68, 0x61, 0x41, 0x36, 0x33, 0x70, 0x34, 0x5a, 0x55, 0x57, 0x69, 0x41, 0x42, 0x71, 0x76, 0x44, 0x41, 0x31, 0x56, 0x5a, 0x44, 0x52, 0x49, 0x75, 0x4a, 0x4b, 0x35, 0x38, 0x62, 0x52, 0x51, 0x4b, 0x66, 0x4a, 0x50, 0x49, 0x78, 0x2f, 0x61, 0x62, 0x4b, 0x77, 0x66, 0x52, 0x4f, 0x48, 0x64, 0x49, 0x33, 0x68, 0x52, 0x57, 0x38, 0x63, 0x57, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x48, 0x54, 0x43, 0x43, 0x41, 0x77, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x54, 0x6f, 0x45, 0x74, 0x69, 0x6f, 0x4a, 0x6c, 0x34, 0x41, 0x73, 0x43, 0x37, 0x6a, 0x34, 0x31, 0x41, 0x6b, 0x62, 0x6c, 0x50, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x43, 0x42, 0x67, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x30, 0x49, 0x78, 0x47, 0x7a, 0x41, 0x5a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x45, 0x6b, 0x64, 0x79, 0x5a, 0x57, 0x46, 0x30, 0x5a, 0x58, 0x49, 0x67, 0x54, 0x57, 0x46, 0x75, 0x59, 0x32, 0x68, 0x6c, 0x63, 0x33, 0x52, 0x6c, 0x63, 0x6a, 0x45, 0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x78, 0x4d, 0x48, 0x55, 0x32, 0x46, 0x73, 0x5a, 0x6d, 0x39, 0x79, 0x5a, 0x44, 0x45, 0x61, 0x4d, 0x42, 0x67, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x52, 0x51, 0x30, 0x39, 0x4e, 0x54, 0x30, 0x52, 0x50, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x4a, 0x7a, 0x41, 0x6c, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x48, 0x6b, 0x4e, 0x50, 0x54, 0x55, 0x39, 0x45, 0x54, 0x79, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x0a, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x77, 0x4e, 0x6a, 0x45, 0x79, 0x4d, 0x44, 0x45, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x46, 0x77, 0x30, 0x79, 0x4f, 0x54, 0x45, 0x79, 0x4d, 0x7a, 0x45, 0x79, 0x4d, 0x7a, 0x55, 0x35, 0x4e, 0x54, 0x6c, 0x61, 0x4d, 0x49, 0x47, 0x42, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x48, 0x51, 0x6a, 0x45, 0x62, 0x0a, 0x4d, 0x42, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x42, 0x4d, 0x53, 0x52, 0x33, 0x4a, 0x6c, 0x59, 0x58, 0x52, 0x6c, 0x63, 0x69, 0x42, 0x4e, 0x59, 0x57, 0x35, 0x6a, 0x61, 0x47, 0x56, 0x7a, 0x64, 0x47, 0x56, 0x79, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x45, 0x77, 0x64, 0x54, 0x59, 0x57, 0x78, 0x6d, 0x62, 0x33, 0x4a, 0x6b, 0x4d, 0x52, 0x6f, 0x77, 0x47, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x46, 0x44, 0x0a, 0x54, 0x30, 0x31, 0x50, 0x52, 0x45, 0x38, 0x67, 0x51, 0x30, 0x45, 0x67, 0x54, 0x47, 0x6c, 0x74, 0x61, 0x58, 0x52, 0x6c, 0x5a, 0x44, 0x45, 0x6e, 0x4d, 0x43, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x65, 0x51, 0x30, 0x39, 0x4e, 0x54, 0x30, 0x52, 0x50, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x0a, 0x4d, 0x49, 0x49, 0x42, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x30, 0x45, 0x43, 0x4c, 0x69, 0x33, 0x4c, 0x6a, 0x6b, 0x52, 0x76, 0x33, 0x55, 0x63, 0x45, 0x62, 0x56, 0x41, 0x53, 0x59, 0x30, 0x36, 0x6d, 0x2f, 0x77, 0x65, 0x61, 0x4b, 0x58, 0x54, 0x75, 0x48, 0x0a, 0x2b, 0x37, 0x75, 0x49, 0x7a, 0x67, 0x33, 0x6a, 0x4c, 0x7a, 0x38, 0x47, 0x6c, 0x76, 0x43, 0x69, 0x4b, 0x56, 0x43, 0x5a, 0x72, 0x74, 0x73, 0x37, 0x6f, 0x56, 0x65, 0x77, 0x64, 0x46, 0x46, 0x78, 0x7a, 0x65, 0x31, 0x43, 0x6b, 0x55, 0x31, 0x42, 0x2f, 0x71, 0x6e, 0x49, 0x32, 0x47, 0x71, 0x47, 0x64, 0x30, 0x53, 0x37, 0x57, 0x57, 0x61, 0x58, 0x55, 0x46, 0x36, 0x30, 0x31, 0x43, 0x78, 0x77, 0x52, 0x4d, 0x2f, 0x61, 0x4e, 0x35, 0x56, 0x43, 0x61, 0x54, 0x77, 0x77, 0x0a, 0x78, 0x48, 0x47, 0x7a, 0x55, 0x76, 0x41, 0x68, 0x54, 0x61, 0x48, 0x59, 0x75, 0x6a, 0x6c, 0x38, 0x48, 0x4a, 0x36, 0x6a, 0x4a, 0x4a, 0x33, 0x79, 0x67, 0x78, 0x61, 0x59, 0x71, 0x68, 0x5a, 0x38, 0x51, 0x35, 0x73, 0x56, 0x57, 0x37, 0x65, 0x75, 0x4e, 0x4a, 0x48, 0x2b, 0x31, 0x47, 0x49, 0x6d, 0x47, 0x45, 0x61, 0x61, 0x50, 0x2b, 0x76, 0x42, 0x2b, 0x66, 0x47, 0x51, 0x56, 0x2b, 0x75, 0x73, 0x65, 0x67, 0x32, 0x4c, 0x32, 0x33, 0x49, 0x77, 0x61, 0x6d, 0x62, 0x56, 0x0a, 0x34, 0x45, 0x61, 0x6a, 0x63, 0x4e, 0x78, 0x6f, 0x32, 0x66, 0x38, 0x45, 0x53, 0x49, 0x6c, 0x33, 0x33, 0x72, 0x58, 0x70, 0x2b, 0x32, 0x64, 0x74, 0x51, 0x65, 0x6d, 0x38, 0x4f, 0x62, 0x30, 0x79, 0x32, 0x57, 0x49, 0x43, 0x38, 0x62, 0x47, 0x6f, 0x50, 0x57, 0x34, 0x33, 0x6e, 0x4f, 0x49, 0x76, 0x34, 0x74, 0x4f, 0x69, 0x4a, 0x6f, 0x76, 0x47, 0x75, 0x46, 0x56, 0x44, 0x69, 0x4f, 0x45, 0x6a, 0x50, 0x71, 0x58, 0x53, 0x4a, 0x44, 0x6c, 0x71, 0x52, 0x36, 0x73, 0x41, 0x0a, 0x31, 0x4b, 0x47, 0x7a, 0x71, 0x53, 0x58, 0x2b, 0x44, 0x54, 0x2b, 0x6e, 0x48, 0x62, 0x72, 0x54, 0x55, 0x63, 0x45, 0x4c, 0x70, 0x4e, 0x71, 0x73, 0x4f, 0x4f, 0x39, 0x56, 0x55, 0x43, 0x51, 0x46, 0x5a, 0x55, 0x61, 0x54, 0x4e, 0x45, 0x38, 0x74, 0x6a, 0x61, 0x33, 0x47, 0x31, 0x43, 0x45, 0x5a, 0x30, 0x6f, 0x37, 0x4b, 0x42, 0x57, 0x46, 0x78, 0x42, 0x33, 0x4e, 0x48, 0x35, 0x59, 0x6f, 0x5a, 0x45, 0x72, 0x30, 0x45, 0x54, 0x63, 0x35, 0x4f, 0x6e, 0x4b, 0x56, 0x49, 0x0a, 0x72, 0x4c, 0x73, 0x6d, 0x39, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x34, 0x47, 0x4f, 0x4d, 0x49, 0x47, 0x4c, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x51, 0x4c, 0x57, 0x4f, 0x57, 0x4c, 0x78, 0x6b, 0x77, 0x56, 0x4e, 0x36, 0x52, 0x41, 0x71, 0x54, 0x43, 0x70, 0x49, 0x62, 0x35, 0x48, 0x4e, 0x6c, 0x70, 0x57, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x0a, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x42, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x38, 0x45, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x44, 0x36, 0x67, 0x50, 0x4b, 0x41, 0x36, 0x68, 0x6a, 0x68, 0x6f, 0x64, 0x48, 0x52, 0x77, 0x4f, 0x69, 0x38, 0x76, 0x59, 0x33, 0x4a, 0x73, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x57, 0x39, 0x6b, 0x0a, 0x62, 0x32, 0x4e, 0x68, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x53, 0x39, 0x44, 0x54, 0x30, 0x31, 0x50, 0x52, 0x45, 0x39, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x4c, 0x6d, 0x4e, 0x79, 0x62, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x0a, 0x41, 0x51, 0x45, 0x41, 0x50, 0x70, 0x69, 0x65, 0x6d, 0x2f, 0x59, 0x62, 0x36, 0x64, 0x63, 0x35, 0x74, 0x33, 0x69, 0x75, 0x48, 0x58, 0x49, 0x59, 0x53, 0x64, 0x4f, 0x48, 0x35, 0x45, 0x4f, 0x43, 0x36, 0x7a, 0x2f, 0x4a, 0x71, 0x76, 0x57, 0x6f, 0x74, 0x65, 0x39, 0x56, 0x66, 0x43, 0x46, 0x53, 0x5a, 0x66, 0x6e, 0x56, 0x44, 0x65, 0x46, 0x73, 0x39, 0x44, 0x36, 0x4d, 0x6b, 0x33, 0x4f, 0x52, 0x4c, 0x67, 0x4c, 0x45, 0x54, 0x67, 0x64, 0x78, 0x62, 0x38, 0x43, 0x50, 0x0a, 0x4f, 0x47, 0x45, 0x49, 0x71, 0x42, 0x36, 0x42, 0x43, 0x73, 0x41, 0x76, 0x49, 0x43, 0x39, 0x42, 0x69, 0x35, 0x48, 0x63, 0x53, 0x45, 0x57, 0x38, 0x38, 0x63, 0x62, 0x65, 0x75, 0x6e, 0x5a, 0x72, 0x4d, 0x38, 0x67, 0x41, 0x4c, 0x54, 0x46, 0x47, 0x54, 0x4f, 0x33, 0x6e, 0x6e, 0x63, 0x2b, 0x49, 0x6c, 0x50, 0x38, 0x7a, 0x77, 0x46, 0x62, 0x6f, 0x4a, 0x49, 0x59, 0x6d, 0x75, 0x4e, 0x67, 0x34, 0x4f, 0x4e, 0x38, 0x71, 0x61, 0x39, 0x30, 0x53, 0x7a, 0x4d, 0x63, 0x2f, 0x0a, 0x52, 0x78, 0x64, 0x4d, 0x6f, 0x73, 0x49, 0x47, 0x6c, 0x67, 0x6e, 0x57, 0x32, 0x2f, 0x34, 0x2f, 0x50, 0x45, 0x5a, 0x42, 0x33, 0x31, 0x6a, 0x69, 0x56, 0x67, 0x38, 0x38, 0x4f, 0x38, 0x45, 0x63, 0x6b, 0x7a, 0x58, 0x5a, 0x4f, 0x46, 0x4b, 0x73, 0x37, 0x73, 0x6a, 0x73, 0x4c, 0x6a, 0x42, 0x4f, 0x6c, 0x44, 0x57, 0x30, 0x4a, 0x42, 0x39, 0x4c, 0x65, 0x47, 0x6e, 0x61, 0x38, 0x67, 0x49, 0x34, 0x7a, 0x4a, 0x56, 0x53, 0x6b, 0x2f, 0x42, 0x77, 0x4a, 0x56, 0x6d, 0x63, 0x0a, 0x49, 0x47, 0x66, 0x45, 0x37, 0x76, 0x6d, 0x4c, 0x56, 0x32, 0x48, 0x30, 0x6b, 0x6e, 0x5a, 0x39, 0x50, 0x34, 0x53, 0x4e, 0x56, 0x62, 0x66, 0x6f, 0x35, 0x61, 0x7a, 0x56, 0x38, 0x66, 0x55, 0x5a, 0x56, 0x71, 0x5a, 0x61, 0x2b, 0x35, 0x41, 0x63, 0x72, 0x35, 0x50, 0x72, 0x35, 0x52, 0x7a, 0x55, 0x5a, 0x35, 0x64, 0x64, 0x42, 0x41, 0x36, 0x2b, 0x43, 0x34, 0x4f, 0x6d, 0x46, 0x34, 0x4f, 0x35, 0x4d, 0x42, 0x4b, 0x67, 0x78, 0x54, 0x4d, 0x56, 0x42, 0x62, 0x6b, 0x4e, 0x0a, 0x2b, 0x38, 0x63, 0x46, 0x64, 0x75, 0x50, 0x59, 0x53, 0x6f, 0x33, 0x38, 0x4e, 0x42, 0x65, 0x6a, 0x78, 0x69, 0x45, 0x6f, 0x76, 0x6a, 0x42, 0x46, 0x4d, 0x52, 0x37, 0x48, 0x65, 0x4c, 0x35, 0x59, 0x59, 0x54, 0x69, 0x73, 0x4f, 0x2b, 0x49, 0x42, 0x5a, 0x51, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x45, 0x43, 0x43, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x69, 0x54, 0x43, 0x43, 0x41, 0x67, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x48, 0x30, 0x65, 0x76, 0x71, 0x6d, 0x49, 0x41, 0x63, 0x46, 0x42, 0x55, 0x54, 0x41, 0x47, 0x65, 0x6d, 0x32, 0x4f, 0x5a, 0x4b, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x43, 0x42, 0x68, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x0a, 0x52, 0x30, 0x49, 0x78, 0x47, 0x7a, 0x41, 0x5a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x45, 0x6b, 0x64, 0x79, 0x5a, 0x57, 0x46, 0x30, 0x5a, 0x58, 0x49, 0x67, 0x54, 0x57, 0x46, 0x75, 0x59, 0x32, 0x68, 0x6c, 0x63, 0x33, 0x52, 0x6c, 0x63, 0x6a, 0x45, 0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x78, 0x4d, 0x48, 0x55, 0x32, 0x46, 0x73, 0x5a, 0x6d, 0x39, 0x79, 0x5a, 0x44, 0x45, 0x61, 0x4d, 0x42, 0x67, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x43, 0x68, 0x4d, 0x52, 0x51, 0x30, 0x39, 0x4e, 0x54, 0x30, 0x52, 0x50, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x49, 0x6b, 0x4e, 0x50, 0x54, 0x55, 0x39, 0x45, 0x54, 0x79, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x0a, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x67, 0x77, 0x4d, 0x7a, 0x41, 0x32, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x67, 0x77, 0x4d, 0x54, 0x45, 0x34, 0x4d, 0x6a, 0x4d, 0x31, 0x4f, 0x54, 0x55, 0x35, 0x57, 0x6a, 0x43, 0x42, 0x68, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x30, 0x49, 0x78, 0x0a, 0x47, 0x7a, 0x41, 0x5a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x45, 0x6b, 0x64, 0x79, 0x5a, 0x57, 0x46, 0x30, 0x5a, 0x58, 0x49, 0x67, 0x54, 0x57, 0x46, 0x75, 0x59, 0x32, 0x68, 0x6c, 0x63, 0x33, 0x52, 0x6c, 0x63, 0x6a, 0x45, 0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x78, 0x4d, 0x48, 0x55, 0x32, 0x46, 0x73, 0x5a, 0x6d, 0x39, 0x79, 0x5a, 0x44, 0x45, 0x61, 0x4d, 0x42, 0x67, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x52, 0x0a, 0x51, 0x30, 0x39, 0x4e, 0x54, 0x30, 0x52, 0x50, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x49, 0x6b, 0x4e, 0x50, 0x54, 0x55, 0x39, 0x45, 0x54, 0x79, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x0a, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x51, 0x44, 0x52, 0x33, 0x73, 0x76, 0x64, 0x63, 0x6d, 0x43, 0x46, 0x59, 0x58, 0x37, 0x64, 0x65, 0x53, 0x52, 0x46, 0x74, 0x53, 0x72, 0x59, 0x70, 0x6e, 0x31, 0x50, 0x6c, 0x49, 0x4c, 0x42, 0x73, 0x35, 0x42, 0x41, 0x48, 0x2b, 0x58, 0x0a, 0x34, 0x51, 0x6f, 0x6b, 0x50, 0x42, 0x30, 0x42, 0x42, 0x4f, 0x34, 0x39, 0x30, 0x6f, 0x30, 0x4a, 0x6c, 0x77, 0x7a, 0x67, 0x64, 0x65, 0x54, 0x36, 0x2b, 0x33, 0x65, 0x4b, 0x4b, 0x76, 0x55, 0x44, 0x59, 0x45, 0x73, 0x32, 0x69, 0x78, 0x59, 0x6a, 0x46, 0x71, 0x30, 0x4a, 0x63, 0x66, 0x52, 0x4b, 0x39, 0x43, 0x68, 0x51, 0x74, 0x50, 0x36, 0x49, 0x48, 0x47, 0x34, 0x2f, 0x62, 0x43, 0x38, 0x76, 0x43, 0x56, 0x6c, 0x62, 0x70, 0x56, 0x73, 0x4c, 0x4d, 0x35, 0x6e, 0x69, 0x0a, 0x77, 0x7a, 0x32, 0x4a, 0x2b, 0x57, 0x6f, 0x73, 0x37, 0x37, 0x4c, 0x54, 0x42, 0x75, 0x6d, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x31, 0x63, 0x61, 0x63, 0x5a, 0x53, 0x42, 0x6d, 0x38, 0x6e, 0x5a, 0x33, 0x71, 0x51, 0x55, 0x66, 0x66, 0x6c, 0x4d, 0x52, 0x49, 0x64, 0x35, 0x6e, 0x54, 0x65, 0x54, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x0a, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6f, 0x41, 0x44, 0x42, 0x6c, 0x41, 0x6a, 0x45, 0x41, 0x37, 0x77, 0x4e, 0x62, 0x65, 0x71, 0x79, 0x33, 0x65, 0x41, 0x70, 0x79, 0x74, 0x34, 0x6a, 0x66, 0x2f, 0x37, 0x56, 0x47, 0x0a, 0x46, 0x41, 0x6b, 0x4b, 0x2b, 0x71, 0x44, 0x6d, 0x66, 0x51, 0x6a, 0x47, 0x47, 0x6f, 0x65, 0x39, 0x47, 0x4b, 0x68, 0x7a, 0x76, 0x53, 0x62, 0x4b, 0x59, 0x41, 0x79, 0x64, 0x7a, 0x70, 0x6d, 0x66, 0x7a, 0x31, 0x77, 0x50, 0x4d, 0x4f, 0x47, 0x2b, 0x46, 0x44, 0x48, 0x71, 0x41, 0x6a, 0x41, 0x55, 0x39, 0x4a, 0x4d, 0x38, 0x53, 0x61, 0x63, 0x7a, 0x65, 0x70, 0x42, 0x47, 0x52, 0x37, 0x4e, 0x6a, 0x66, 0x52, 0x4f, 0x62, 0x54, 0x72, 0x64, 0x76, 0x47, 0x44, 0x65, 0x41, 0x0a, 0x55, 0x2f, 0x37, 0x64, 0x49, 0x4f, 0x41, 0x31, 0x6d, 0x6a, 0x62, 0x52, 0x78, 0x77, 0x47, 0x35, 0x35, 0x74, 0x7a, 0x64, 0x38, 0x2f, 0x38, 0x64, 0x4c, 0x44, 0x6f, 0x57, 0x56, 0x39, 0x6d, 0x53, 0x4f, 0x64, 0x59, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x65, 0x72, 0x74, 0x69, 0x67, 0x6e, 0x61, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x71, 0x44, 0x43, 0x43, 0x41, 0x70, 0x43, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4a, 0x41, 0x50, 0x37, 0x63, 0x34, 0x77, 0x45, 0x50, 0x79, 0x55, 0x6a, 0x2f, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x42, 0x51, 0x55, 0x41, 0x4d, 0x44, 0x51, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x5a, 0x53, 0x4d, 0x52, 0x49, 0x77, 0x0a, 0x45, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x6c, 0x45, 0x61, 0x47, 0x6c, 0x74, 0x65, 0x57, 0x39, 0x30, 0x61, 0x58, 0x4d, 0x78, 0x45, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x43, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x32, 0x35, 0x68, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41, 0x33, 0x4d, 0x44, 0x59, 0x79, 0x4f, 0x54, 0x45, 0x31, 0x4d, 0x54, 0x4d, 0x77, 0x4e, 0x56, 0x6f, 0x58, 0x44, 0x54, 0x49, 0x33, 0x0a, 0x4d, 0x44, 0x59, 0x79, 0x4f, 0x54, 0x45, 0x31, 0x4d, 0x54, 0x4d, 0x77, 0x4e, 0x56, 0x6f, 0x77, 0x4e, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x6c, 0x49, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x55, 0x52, 0x6f, 0x61, 0x57, 0x31, 0x35, 0x62, 0x33, 0x52, 0x70, 0x63, 0x7a, 0x45, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x49, 0x0a, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6e, 0x62, 0x6d, 0x45, 0x77, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x44, 0x49, 0x61, 0x50, 0x48, 0x4a, 0x31, 0x74, 0x61, 0x7a, 0x4e, 0x48, 0x55, 0x6d, 0x67, 0x68, 0x37, 0x73, 0x74, 0x4c, 0x37, 0x71, 0x0a, 0x58, 0x4f, 0x45, 0x6d, 0x37, 0x52, 0x46, 0x48, 0x59, 0x65, 0x47, 0x69, 0x66, 0x42, 0x5a, 0x34, 0x51, 0x43, 0x48, 0x6b, 0x59, 0x4a, 0x35, 0x61, 0x79, 0x47, 0x50, 0x68, 0x78, 0x4c, 0x47, 0x57, 0x6b, 0x76, 0x38, 0x59, 0x62, 0x57, 0x6b, 0x6a, 0x34, 0x53, 0x74, 0x69, 0x39, 0x39, 0x33, 0x69, 0x4e, 0x69, 0x2b, 0x52, 0x42, 0x37, 0x6c, 0x49, 0x7a, 0x77, 0x37, 0x73, 0x65, 0x62, 0x59, 0x73, 0x35, 0x7a, 0x52, 0x4c, 0x63, 0x41, 0x67, 0x6c, 0x6f, 0x7a, 0x79, 0x48, 0x0a, 0x47, 0x78, 0x6e, 0x79, 0x67, 0x51, 0x63, 0x50, 0x4f, 0x4a, 0x41, 0x5a, 0x30, 0x78, 0x48, 0x2b, 0x68, 0x72, 0x54, 0x79, 0x30, 0x56, 0x34, 0x65, 0x48, 0x70, 0x62, 0x4e, 0x67, 0x47, 0x7a, 0x4f, 0x4f, 0x7a, 0x47, 0x54, 0x74, 0x76, 0x4b, 0x67, 0x30, 0x4b, 0x6d, 0x56, 0x45, 0x6e, 0x32, 0x6c, 0x6d, 0x73, 0x78, 0x72, 0x79, 0x49, 0x52, 0x57, 0x69, 0x6a, 0x4f, 0x70, 0x35, 0x79, 0x49, 0x56, 0x55, 0x78, 0x62, 0x77, 0x7a, 0x42, 0x66, 0x73, 0x56, 0x31, 0x2f, 0x70, 0x0a, 0x6f, 0x67, 0x71, 0x59, 0x43, 0x64, 0x37, 0x6a, 0x58, 0x35, 0x78, 0x76, 0x33, 0x45, 0x6a, 0x6a, 0x68, 0x51, 0x73, 0x56, 0x57, 0x71, 0x61, 0x36, 0x6e, 0x36, 0x78, 0x49, 0x34, 0x77, 0x6d, 0x79, 0x39, 0x2f, 0x51, 0x79, 0x33, 0x6c, 0x34, 0x30, 0x76, 0x68, 0x78, 0x34, 0x58, 0x55, 0x4a, 0x62, 0x7a, 0x67, 0x34, 0x69, 0x6a, 0x30, 0x32, 0x51, 0x31, 0x33, 0x30, 0x79, 0x47, 0x4c, 0x4d, 0x4c, 0x4c, 0x47, 0x71, 0x2f, 0x6a, 0x6a, 0x38, 0x55, 0x45, 0x59, 0x6b, 0x67, 0x0a, 0x44, 0x6e, 0x63, 0x55, 0x74, 0x54, 0x32, 0x55, 0x43, 0x49, 0x66, 0x33, 0x4a, 0x52, 0x37, 0x56, 0x73, 0x6d, 0x41, 0x41, 0x37, 0x47, 0x38, 0x71, 0x4b, 0x43, 0x56, 0x75, 0x4b, 0x6a, 0x34, 0x59, 0x59, 0x78, 0x63, 0x6c, 0x50, 0x7a, 0x35, 0x45, 0x49, 0x42, 0x62, 0x32, 0x4a, 0x73, 0x67, 0x6c, 0x72, 0x67, 0x56, 0x4b, 0x74, 0x4f, 0x64, 0x6a, 0x4c, 0x50, 0x4f, 0x4d, 0x46, 0x6c, 0x4e, 0x2b, 0x58, 0x50, 0x73, 0x52, 0x47, 0x67, 0x6a, 0x42, 0x52, 0x6d, 0x4b, 0x66, 0x0a, 0x49, 0x72, 0x6a, 0x78, 0x77, 0x6f, 0x31, 0x70, 0x33, 0x50, 0x6f, 0x36, 0x57, 0x41, 0x62, 0x66, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x67, 0x62, 0x77, 0x77, 0x67, 0x62, 0x6b, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x47, 0x75, 0x33, 0x2b, 0x51, 0x54, 0x6d, 0x51, 0x0a, 0x74, 0x43, 0x52, 0x5a, 0x76, 0x67, 0x48, 0x79, 0x55, 0x74, 0x56, 0x46, 0x39, 0x6c, 0x6f, 0x35, 0x33, 0x42, 0x45, 0x77, 0x5a, 0x41, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6a, 0x42, 0x46, 0x30, 0x77, 0x57, 0x34, 0x41, 0x55, 0x47, 0x75, 0x33, 0x2b, 0x51, 0x54, 0x6d, 0x51, 0x74, 0x43, 0x52, 0x5a, 0x76, 0x67, 0x48, 0x79, 0x55, 0x74, 0x56, 0x46, 0x39, 0x6c, 0x6f, 0x35, 0x33, 0x42, 0x47, 0x68, 0x4f, 0x4b, 0x51, 0x32, 0x4d, 0x44, 0x51, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x5a, 0x53, 0x4d, 0x52, 0x49, 0x77, 0x45, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x6c, 0x45, 0x61, 0x47, 0x6c, 0x74, 0x65, 0x57, 0x39, 0x30, 0x61, 0x58, 0x4d, 0x78, 0x45, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x43, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x32, 0x35, 0x68, 0x67, 0x67, 0x6b, 0x41, 0x2f, 0x74, 0x7a, 0x6a, 0x41, 0x51, 0x2f, 0x4a, 0x0a, 0x53, 0x50, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x42, 0x45, 0x47, 0x43, 0x57, 0x43, 0x47, 0x53, 0x41, 0x47, 0x47, 0x2b, 0x45, 0x49, 0x42, 0x41, 0x51, 0x51, 0x45, 0x41, 0x77, 0x49, 0x41, 0x42, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x45, 0x41, 0x0a, 0x68, 0x51, 0x4d, 0x65, 0x6b, 0x6e, 0x48, 0x32, 0x51, 0x71, 0x2f, 0x68, 0x6f, 0x32, 0x47, 0x65, 0x36, 0x2f, 0x50, 0x41, 0x44, 0x2f, 0x4b, 0x6c, 0x31, 0x4e, 0x71, 0x56, 0x35, 0x74, 0x61, 0x2b, 0x61, 0x44, 0x59, 0x39, 0x66, 0x6d, 0x34, 0x66, 0x54, 0x49, 0x72, 0x76, 0x30, 0x51, 0x38, 0x68, 0x62, 0x56, 0x36, 0x6c, 0x55, 0x6d, 0x50, 0x4f, 0x45, 0x76, 0x6a, 0x76, 0x4b, 0x74, 0x70, 0x76, 0x36, 0x7a, 0x66, 0x2b, 0x45, 0x77, 0x4c, 0x48, 0x79, 0x7a, 0x73, 0x2b, 0x0a, 0x49, 0x6d, 0x76, 0x61, 0x59, 0x53, 0x35, 0x2f, 0x31, 0x48, 0x49, 0x39, 0x33, 0x54, 0x44, 0x68, 0x48, 0x6b, 0x78, 0x41, 0x47, 0x59, 0x77, 0x50, 0x31, 0x35, 0x7a, 0x52, 0x67, 0x7a, 0x42, 0x37, 0x6d, 0x46, 0x6e, 0x63, 0x66, 0x63, 0x61, 0x35, 0x44, 0x43, 0x6c, 0x4d, 0x6f, 0x54, 0x4f, 0x69, 0x36, 0x32, 0x63, 0x36, 0x5a, 0x59, 0x54, 0x54, 0x6c, 0x75, 0x4c, 0x74, 0x64, 0x6b, 0x56, 0x77, 0x6a, 0x37, 0x55, 0x72, 0x33, 0x76, 0x6b, 0x6a, 0x31, 0x6b, 0x6c, 0x75, 0x0a, 0x50, 0x42, 0x53, 0x31, 0x78, 0x70, 0x38, 0x31, 0x48, 0x6c, 0x44, 0x51, 0x77, 0x59, 0x39, 0x71, 0x63, 0x45, 0x51, 0x43, 0x59, 0x73, 0x75, 0x75, 0x48, 0x57, 0x68, 0x42, 0x70, 0x36, 0x70, 0x58, 0x36, 0x46, 0x4f, 0x71, 0x42, 0x39, 0x49, 0x47, 0x39, 0x74, 0x55, 0x55, 0x42, 0x67, 0x75, 0x52, 0x41, 0x33, 0x55, 0x73, 0x62, 0x48, 0x4b, 0x31, 0x59, 0x5a, 0x57, 0x61, 0x44, 0x59, 0x75, 0x35, 0x44, 0x65, 0x66, 0x31, 0x33, 0x31, 0x54, 0x4e, 0x33, 0x75, 0x62, 0x59, 0x0a, 0x31, 0x67, 0x6b, 0x49, 0x6c, 0x32, 0x50, 0x6c, 0x77, 0x53, 0x36, 0x77, 0x74, 0x30, 0x51, 0x6d, 0x77, 0x43, 0x62, 0x41, 0x72, 0x31, 0x55, 0x77, 0x6e, 0x6a, 0x76, 0x56, 0x4e, 0x69, 0x6f, 0x5a, 0x42, 0x50, 0x52, 0x63, 0x48, 0x76, 0x2f, 0x50, 0x4c, 0x4c, 0x66, 0x2f, 0x30, 0x50, 0x32, 0x48, 0x51, 0x42, 0x48, 0x56, 0x45, 0x53, 0x4f, 0x37, 0x53, 0x4d, 0x41, 0x68, 0x71, 0x61, 0x51, 0x6f, 0x4c, 0x66, 0x30, 0x56, 0x2b, 0x4c, 0x42, 0x4f, 0x4b, 0x2f, 0x51, 0x77, 0x0a, 0x57, 0x79, 0x48, 0x38, 0x45, 0x5a, 0x45, 0x30, 0x76, 0x6b, 0x48, 0x76, 0x65, 0x35, 0x32, 0x58, 0x64, 0x66, 0x2b, 0x58, 0x6c, 0x63, 0x43, 0x57, 0x57, 0x43, 0x2f, 0x71, 0x75, 0x30, 0x62, 0x58, 0x75, 0x2b, 0x54, 0x5a, 0x4c, 0x67, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x65, 0x50, 0x4b, 0x49, 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, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x73, 0x44, 0x43, 0x43, 0x41, 0x35, 0x69, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x46, 0x63, 0x69, 0x39, 0x5a, 0x55, 0x64, 0x63, 0x72, 0x37, 0x69, 0x58, 0x41, 0x46, 0x37, 0x6b, 0x42, 0x74, 0x4b, 0x38, 0x6e, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x65, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x55, 0x56, 0x7a, 0x45, 0x6a, 0x4d, 0x43, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x61, 0x51, 0x32, 0x68, 0x31, 0x62, 0x6d, 0x64, 0x6f, 0x64, 0x32, 0x45, 0x67, 0x56, 0x47, 0x56, 0x73, 0x5a, 0x57, 0x4e, 0x76, 0x62, 0x53, 0x42, 0x44, 0x62, 0x79, 0x34, 0x73, 0x49, 0x45, 0x78, 0x30, 0x5a, 0x43, 0x34, 0x78, 0x4b, 0x6a, 0x41, 0x6f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x4d, 0x49, 0x57, 0x56, 0x51, 0x53, 0x30, 0x6b, 0x67, 0x0a, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x77, 0x4e, 0x44, 0x45, 0x79, 0x4d, 0x6a, 0x41, 0x77, 0x4d, 0x6a, 0x4d, 0x78, 0x4d, 0x6a, 0x64, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4e, 0x44, 0x45, 0x79, 0x4d, 0x6a, 0x41, 0x77, 0x4d, 0x6a, 0x4d, 0x78, 0x0a, 0x4d, 0x6a, 0x64, 0x61, 0x4d, 0x46, 0x34, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x52, 0x58, 0x4d, 0x53, 0x4d, 0x77, 0x49, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x42, 0x70, 0x44, 0x61, 0x48, 0x56, 0x75, 0x5a, 0x32, 0x68, 0x33, 0x59, 0x53, 0x42, 0x55, 0x5a, 0x57, 0x78, 0x6c, 0x59, 0x32, 0x39, 0x74, 0x49, 0x45, 0x4e, 0x76, 0x4c, 0x69, 0x77, 0x67, 0x54, 0x48, 0x52, 0x6b, 0x4c, 0x6a, 0x45, 0x71, 0x0a, 0x4d, 0x43, 0x67, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x77, 0x77, 0x68, 0x5a, 0x56, 0x42, 0x4c, 0x53, 0x53, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x0a, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x45, 0x41, 0x34, 0x53, 0x55, 0x50, 0x37, 0x6f, 0x33, 0x62, 0x69, 0x44, 0x4e, 0x31, 0x5a, 0x38, 0x32, 0x74, 0x48, 0x33, 0x30, 0x36, 0x54, 0x6d, 0x32, 0x64, 0x30, 0x79, 0x38, 0x55, 0x38, 0x32, 0x4e, 0x30, 0x79, 0x77, 0x45, 0x68, 0x61, 0x6a, 0x66, 0x71, 0x68, 0x46, 0x41, 0x48, 0x53, 0x79, 0x5a, 0x62, 0x43, 0x55, 0x4e, 0x73, 0x0a, 0x49, 0x5a, 0x35, 0x71, 0x79, 0x4e, 0x55, 0x44, 0x39, 0x57, 0x42, 0x70, 0x6a, 0x38, 0x7a, 0x77, 0x49, 0x75, 0x51, 0x66, 0x35, 0x2f, 0x64, 0x71, 0x49, 0x6a, 0x47, 0x33, 0x4c, 0x42, 0x58, 0x79, 0x34, 0x50, 0x34, 0x41, 0x61, 0x6b, 0x50, 0x2f, 0x68, 0x32, 0x58, 0x47, 0x74, 0x52, 0x72, 0x42, 0x70, 0x30, 0x78, 0x74, 0x49, 0x6e, 0x41, 0x68, 0x69, 0x6a, 0x48, 0x79, 0x6c, 0x33, 0x53, 0x4a, 0x43, 0x52, 0x49, 0x6d, 0x48, 0x4a, 0x37, 0x4b, 0x32, 0x52, 0x4b, 0x69, 0x0a, 0x6c, 0x54, 0x7a, 0x61, 0x36, 0x57, 0x65, 0x2f, 0x43, 0x4b, 0x42, 0x6b, 0x34, 0x39, 0x5a, 0x43, 0x74, 0x30, 0x58, 0x76, 0x6c, 0x2f, 0x54, 0x32, 0x39, 0x64, 0x65, 0x31, 0x53, 0x68, 0x55, 0x43, 0x57, 0x48, 0x32, 0x59, 0x57, 0x45, 0x74, 0x67, 0x76, 0x4d, 0x33, 0x58, 0x44, 0x5a, 0x6f, 0x54, 0x4d, 0x31, 0x50, 0x52, 0x59, 0x66, 0x6c, 0x36, 0x31, 0x64, 0x64, 0x34, 0x73, 0x35, 0x6f, 0x7a, 0x39, 0x77, 0x43, 0x47, 0x7a, 0x68, 0x31, 0x4e, 0x6c, 0x44, 0x69, 0x76, 0x0a, 0x71, 0x4f, 0x78, 0x34, 0x55, 0x58, 0x43, 0x4b, 0x58, 0x42, 0x43, 0x44, 0x55, 0x53, 0x48, 0x33, 0x45, 0x54, 0x30, 0x30, 0x68, 0x6c, 0x37, 0x6c, 0x53, 0x4d, 0x32, 0x58, 0x67, 0x59, 0x49, 0x31, 0x54, 0x42, 0x6e, 0x73, 0x5a, 0x66, 0x5a, 0x72, 0x78, 0x51, 0x57, 0x68, 0x37, 0x6b, 0x63, 0x54, 0x31, 0x72, 0x4d, 0x68, 0x4a, 0x35, 0x51, 0x51, 0x43, 0x74, 0x6b, 0x6b, 0x4f, 0x37, 0x71, 0x2b, 0x52, 0x42, 0x4e, 0x47, 0x4d, 0x44, 0x2b, 0x58, 0x50, 0x4e, 0x6a, 0x58, 0x0a, 0x31, 0x32, 0x72, 0x75, 0x4f, 0x7a, 0x6a, 0x6a, 0x4b, 0x39, 0x53, 0x58, 0x44, 0x72, 0x6b, 0x62, 0x35, 0x77, 0x64, 0x4a, 0x66, 0x7a, 0x63, 0x71, 0x2b, 0x58, 0x64, 0x34, 0x7a, 0x31, 0x54, 0x74, 0x57, 0x30, 0x61, 0x64, 0x6f, 0x34, 0x41, 0x4f, 0x6b, 0x55, 0x50, 0x42, 0x31, 0x6c, 0x74, 0x66, 0x46, 0x4c, 0x71, 0x66, 0x70, 0x6f, 0x30, 0x6b, 0x52, 0x30, 0x42, 0x5a, 0x76, 0x33, 0x49, 0x34, 0x73, 0x6a, 0x5a, 0x73, 0x4e, 0x2f, 0x2b, 0x5a, 0x30, 0x56, 0x30, 0x4f, 0x0a, 0x57, 0x51, 0x71, 0x72, 0x61, 0x66, 0x66, 0x41, 0x73, 0x67, 0x52, 0x46, 0x65, 0x6c, 0x51, 0x41, 0x72, 0x72, 0x35, 0x54, 0x39, 0x72, 0x58, 0x6e, 0x34, 0x66, 0x67, 0x38, 0x6f, 0x7a, 0x48, 0x53, 0x71, 0x66, 0x34, 0x68, 0x55, 0x6d, 0x54, 0x46, 0x70, 0x6d, 0x66, 0x77, 0x64, 0x51, 0x63, 0x47, 0x6c, 0x42, 0x53, 0x42, 0x56, 0x63, 0x59, 0x6e, 0x35, 0x41, 0x47, 0x50, 0x46, 0x38, 0x46, 0x71, 0x63, 0x64, 0x65, 0x2b, 0x53, 0x2f, 0x75, 0x55, 0x57, 0x48, 0x31, 0x2b, 0x0a, 0x45, 0x54, 0x4f, 0x78, 0x51, 0x76, 0x64, 0x69, 0x62, 0x42, 0x6a, 0x57, 0x7a, 0x77, 0x6c, 0x6f, 0x50, 0x6e, 0x39, 0x73, 0x39, 0x68, 0x36, 0x50, 0x59, 0x71, 0x32, 0x6c, 0x59, 0x39, 0x73, 0x4a, 0x70, 0x78, 0x38, 0x69, 0x51, 0x6b, 0x45, 0x65, 0x62, 0x35, 0x6d, 0x4b, 0x50, 0x74, 0x66, 0x35, 0x50, 0x30, 0x42, 0x36, 0x65, 0x62, 0x43, 0x6c, 0x41, 0x5a, 0x4c, 0x53, 0x6e, 0x54, 0x30, 0x49, 0x46, 0x61, 0x55, 0x51, 0x41, 0x53, 0x32, 0x7a, 0x4d, 0x6e, 0x61, 0x6f, 0x0a, 0x6c, 0x51, 0x32, 0x7a, 0x65, 0x70, 0x72, 0x37, 0x42, 0x78, 0x42, 0x34, 0x45, 0x57, 0x2f, 0x68, 0x6a, 0x38, 0x65, 0x36, 0x44, 0x79, 0x55, 0x61, 0x64, 0x43, 0x72, 0x6c, 0x48, 0x4a, 0x68, 0x42, 0x6d, 0x64, 0x38, 0x68, 0x68, 0x2b, 0x69, 0x56, 0x42, 0x6d, 0x6f, 0x4b, 0x73, 0x32, 0x70, 0x48, 0x64, 0x6d, 0x58, 0x32, 0x4f, 0x73, 0x2b, 0x50, 0x59, 0x68, 0x63, 0x5a, 0x65, 0x77, 0x6f, 0x6f, 0x7a, 0x52, 0x72, 0x53, 0x67, 0x78, 0x34, 0x68, 0x78, 0x79, 0x79, 0x2f, 0x0a, 0x76, 0x76, 0x39, 0x68, 0x61, 0x4c, 0x64, 0x6e, 0x47, 0x37, 0x74, 0x34, 0x54, 0x59, 0x33, 0x4f, 0x5a, 0x2b, 0x58, 0x6b, 0x77, 0x59, 0x36, 0x33, 0x49, 0x32, 0x62, 0x69, 0x6e, 0x5a, 0x42, 0x31, 0x4e, 0x4a, 0x69, 0x70, 0x4e, 0x69, 0x75, 0x4b, 0x6d, 0x70, 0x53, 0x35, 0x6e, 0x65, 0x7a, 0x4d, 0x69, 0x72, 0x48, 0x34, 0x4a, 0x59, 0x6c, 0x63, 0x57, 0x72, 0x59, 0x76, 0x6a, 0x42, 0x39, 0x74, 0x65, 0x53, 0x53, 0x6e, 0x55, 0x6d, 0x6a, 0x44, 0x68, 0x44, 0x58, 0x69, 0x0a, 0x5a, 0x6f, 0x31, 0x6a, 0x44, 0x69, 0x56, 0x4e, 0x31, 0x52, 0x6d, 0x79, 0x35, 0x6e, 0x6b, 0x33, 0x70, 0x79, 0x4b, 0x64, 0x56, 0x44, 0x45, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x71, 0x4d, 0x47, 0x67, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x42, 0x34, 0x4d, 0x39, 0x37, 0x5a, 0x6e, 0x38, 0x75, 0x47, 0x53, 0x4a, 0x67, 0x6c, 0x46, 0x77, 0x46, 0x55, 0x35, 0x4c, 0x6e, 0x63, 0x2f, 0x51, 0x6b, 0x71, 0x69, 0x0a, 0x4d, 0x41, 0x77, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x4f, 0x51, 0x59, 0x45, 0x5a, 0x79, 0x6f, 0x48, 0x41, 0x41, 0x51, 0x78, 0x4d, 0x43, 0x38, 0x77, 0x4c, 0x51, 0x49, 0x42, 0x41, 0x44, 0x41, 0x4a, 0x42, 0x67, 0x55, 0x72, 0x44, 0x67, 0x4d, 0x43, 0x47, 0x67, 0x55, 0x41, 0x4d, 0x41, 0x63, 0x47, 0x42, 0x57, 0x63, 0x71, 0x41, 0x77, 0x41, 0x41, 0x42, 0x42, 0x52, 0x46, 0x73, 0x4d, 0x4c, 0x48, 0x0a, 0x43, 0x6c, 0x5a, 0x38, 0x37, 0x6c, 0x74, 0x34, 0x44, 0x4a, 0x58, 0x35, 0x47, 0x46, 0x50, 0x42, 0x70, 0x68, 0x7a, 0x59, 0x45, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x43, 0x62, 0x4f, 0x44, 0x55, 0x31, 0x6b, 0x42, 0x50, 0x70, 0x56, 0x4a, 0x75, 0x66, 0x47, 0x42, 0x75, 0x76, 0x6c, 0x32, 0x49, 0x43, 0x4f, 0x31, 0x4a, 0x32, 0x42, 0x30, 0x0a, 0x31, 0x47, 0x71, 0x5a, 0x4e, 0x46, 0x35, 0x73, 0x41, 0x46, 0x50, 0x5a, 0x6e, 0x2f, 0x4b, 0x6d, 0x73, 0x53, 0x51, 0x48, 0x52, 0x47, 0x6f, 0x71, 0x78, 0x71, 0x57, 0x4f, 0x65, 0x42, 0x4c, 0x6f, 0x52, 0x39, 0x6c, 0x59, 0x47, 0x78, 0x4d, 0x71, 0x58, 0x6e, 0x6d, 0x62, 0x6e, 0x77, 0x6f, 0x71, 0x5a, 0x36, 0x59, 0x6c, 0x50, 0x77, 0x5a, 0x70, 0x56, 0x6e, 0x50, 0x44, 0x69, 0x6d, 0x5a, 0x49, 0x2b, 0x79, 0x6d, 0x42, 0x56, 0x33, 0x51, 0x47, 0x79, 0x70, 0x7a, 0x71, 0x0a, 0x4b, 0x4f, 0x67, 0x34, 0x5a, 0x79, 0x59, 0x72, 0x38, 0x64, 0x57, 0x31, 0x50, 0x32, 0x57, 0x54, 0x2b, 0x44, 0x5a, 0x64, 0x6a, 0x6f, 0x32, 0x4e, 0x51, 0x43, 0x43, 0x48, 0x47, 0x65, 0x72, 0x76, 0x4a, 0x38, 0x41, 0x39, 0x74, 0x44, 0x6b, 0x50, 0x4a, 0x58, 0x74, 0x6f, 0x55, 0x48, 0x52, 0x56, 0x6e, 0x41, 0x78, 0x5a, 0x66, 0x56, 0x6f, 0x39, 0x51, 0x5a, 0x51, 0x6c, 0x55, 0x67, 0x6a, 0x67, 0x52, 0x79, 0x77, 0x56, 0x4d, 0x52, 0x6e, 0x56, 0x76, 0x77, 0x64, 0x56, 0x0a, 0x78, 0x72, 0x73, 0x53, 0x74, 0x5a, 0x66, 0x30, 0x58, 0x34, 0x4f, 0x46, 0x75, 0x6e, 0x48, 0x42, 0x32, 0x57, 0x79, 0x42, 0x45, 0x58, 0x59, 0x4b, 0x43, 0x72, 0x43, 0x2f, 0x67, 0x70, 0x66, 0x33, 0x36, 0x6a, 0x33, 0x36, 0x2b, 0x75, 0x77, 0x74, 0x71, 0x53, 0x69, 0x55, 0x4f, 0x31, 0x62, 0x64, 0x30, 0x6c, 0x45, 0x75, 0x72, 0x73, 0x43, 0x39, 0x43, 0x42, 0x57, 0x4d, 0x64, 0x31, 0x49, 0x30, 0x6c, 0x74, 0x61, 0x62, 0x72, 0x4e, 0x4d, 0x64, 0x6a, 0x6d, 0x45, 0x50, 0x0a, 0x4e, 0x58, 0x75, 0x62, 0x72, 0x6a, 0x6c, 0x70, 0x43, 0x32, 0x4a, 0x67, 0x51, 0x43, 0x41, 0x32, 0x6a, 0x36, 0x2f, 0x37, 0x4e, 0x75, 0x34, 0x74, 0x43, 0x45, 0x6f, 0x64, 0x75, 0x4c, 0x2b, 0x62, 0x58, 0x50, 0x6a, 0x71, 0x70, 0x52, 0x75, 0x67, 0x63, 0x36, 0x62, 0x59, 0x2b, 0x47, 0x37, 0x67, 0x4d, 0x77, 0x52, 0x66, 0x61, 0x4b, 0x6f, 0x6e, 0x68, 0x2b, 0x33, 0x5a, 0x77, 0x5a, 0x43, 0x63, 0x37, 0x62, 0x33, 0x6a, 0x61, 0x6a, 0x57, 0x76, 0x59, 0x39, 0x2b, 0x72, 0x0a, 0x47, 0x4e, 0x6d, 0x36, 0x35, 0x75, 0x6c, 0x4b, 0x36, 0x6c, 0x43, 0x4b, 0x44, 0x32, 0x47, 0x54, 0x48, 0x75, 0x49, 0x74, 0x47, 0x65, 0x49, 0x77, 0x6c, 0x44, 0x57, 0x53, 0x58, 0x51, 0x36, 0x32, 0x42, 0x36, 0x38, 0x5a, 0x67, 0x49, 0x39, 0x48, 0x6b, 0x46, 0x46, 0x4c, 0x4c, 0x6b, 0x33, 0x64, 0x68, 0x65, 0x4c, 0x53, 0x43, 0x6c, 0x49, 0x4b, 0x46, 0x35, 0x72, 0x38, 0x47, 0x72, 0x42, 0x51, 0x41, 0x75, 0x55, 0x42, 0x6f, 0x32, 0x4d, 0x33, 0x49, 0x55, 0x78, 0x45, 0x0a, 0x78, 0x4a, 0x74, 0x52, 0x6d, 0x52, 0x45, 0x4f, 0x63, 0x35, 0x77, 0x47, 0x6a, 0x31, 0x51, 0x75, 0x70, 0x79, 0x68, 0x65, 0x52, 0x44, 0x6d, 0x48, 0x56, 0x69, 0x30, 0x33, 0x76, 0x59, 0x56, 0x45, 0x6c, 0x4f, 0x45, 0x4d, 0x53, 0x79, 0x79, 0x63, 0x77, 0x35, 0x4b, 0x46, 0x4e, 0x47, 0x48, 0x4c, 0x44, 0x37, 0x69, 0x62, 0x53, 0x6b, 0x4e, 0x53, 0x2f, 0x6a, 0x51, 0x36, 0x66, 0x62, 0x6a, 0x70, 0x4b, 0x64, 0x78, 0x32, 0x71, 0x63, 0x67, 0x77, 0x2b, 0x42, 0x52, 0x78, 0x0a, 0x67, 0x4d, 0x59, 0x65, 0x4e, 0x6b, 0x68, 0x30, 0x49, 0x6b, 0x46, 0x63, 0x68, 0x34, 0x4c, 0x6f, 0x47, 0x48, 0x47, 0x4c, 0x51, 0x59, 0x6c, 0x45, 0x35, 0x33, 0x35, 0x59, 0x57, 0x36, 0x69, 0x34, 0x6a, 0x52, 0x50, 0x70, 0x70, 0x32, 0x7a, 0x44, 0x52, 0x2b, 0x32, 0x7a, 0x47, 0x70, 0x31, 0x69, 0x72, 0x6f, 0x32, 0x43, 0x36, 0x70, 0x53, 0x65, 0x33, 0x56, 0x6b, 0x51, 0x77, 0x36, 0x33, 0x64, 0x34, 0x6b, 0x33, 0x6a, 0x4d, 0x64, 0x58, 0x48, 0x37, 0x4f, 0x6a, 0x79, 0x0a, 0x73, 0x50, 0x36, 0x53, 0x48, 0x68, 0x59, 0x4b, 0x47, 0x76, 0x7a, 0x5a, 0x38, 0x2f, 0x67, 0x6e, 0x74, 0x73, 0x6d, 0x2b, 0x48, 0x62, 0x52, 0x73, 0x5a, 0x4a, 0x42, 0x2f, 0x39, 0x4f, 0x54, 0x45, 0x57, 0x39, 0x63, 0x33, 0x72, 0x6b, 0x49, 0x4f, 0x33, 0x61, 0x51, 0x61, 0x62, 0x33, 0x79, 0x49, 0x56, 0x4d, 0x55, 0x57, 0x62, 0x75, 0x46, 0x36, 0x61, 0x43, 0x37, 0x34, 0x4f, 0x72, 0x38, 0x4e, 0x70, 0x44, 0x79, 0x4a, 0x4f, 0x33, 0x69, 0x6e, 0x54, 0x6d, 0x4f, 0x44, 0x0a, 0x42, 0x43, 0x45, 0x49, 0x5a, 0x34, 0x33, 0x79, 0x67, 0x6b, 0x6e, 0x51, 0x57, 0x2f, 0x32, 0x78, 0x7a, 0x51, 0x2b, 0x44, 0x68, 0x4e, 0x51, 0x2b, 0x49, 0x49, 0x58, 0x33, 0x53, 0x6a, 0x30, 0x72, 0x6e, 0x50, 0x30, 0x71, 0x43, 0x67, 0x6c, 0x4e, 0x36, 0x6f, 0x48, 0x34, 0x45, 0x5a, 0x77, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x63, 0x65, 0x72, 0x74, 0x53, 0x49, 0x47, 0x4e, 0x20, 0x52, 0x4f, 0x4f, 0x54, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x4f, 0x44, 0x43, 0x43, 0x41, 0x69, 0x43, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x47, 0x49, 0x41, 0x59, 0x46, 0x46, 0x6e, 0x41, 0x43, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x42, 0x51, 0x55, 0x41, 0x4d, 0x44, 0x73, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x4a, 0x50, 0x4d, 0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x68, 0x6a, 0x5a, 0x58, 0x4a, 0x30, 0x55, 0x30, 0x6c, 0x48, 0x54, 0x6a, 0x45, 0x5a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x51, 0x59, 0x32, 0x56, 0x79, 0x64, 0x46, 0x4e, 0x4a, 0x52, 0x30, 0x34, 0x67, 0x55, 0x6b, 0x39, 0x50, 0x56, 0x43, 0x42, 0x44, 0x51, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x77, 0x4e, 0x6a, 0x41, 0x33, 0x4d, 0x44, 0x51, 0x78, 0x4e, 0x7a, 0x49, 0x77, 0x4d, 0x44, 0x52, 0x61, 0x0a, 0x46, 0x77, 0x30, 0x7a, 0x4d, 0x54, 0x41, 0x33, 0x4d, 0x44, 0x51, 0x78, 0x4e, 0x7a, 0x49, 0x77, 0x4d, 0x44, 0x52, 0x61, 0x4d, 0x44, 0x73, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x4a, 0x50, 0x4d, 0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x68, 0x6a, 0x5a, 0x58, 0x4a, 0x30, 0x55, 0x30, 0x6c, 0x48, 0x54, 0x6a, 0x45, 0x5a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x43, 0x78, 0x4d, 0x51, 0x59, 0x32, 0x56, 0x79, 0x64, 0x46, 0x4e, 0x4a, 0x52, 0x30, 0x34, 0x67, 0x55, 0x6b, 0x39, 0x50, 0x56, 0x43, 0x42, 0x44, 0x51, 0x54, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4c, 0x63, 0x7a, 0x75, 0x58, 0x37, 0x49, 0x0a, 0x4a, 0x55, 0x71, 0x4f, 0x74, 0x64, 0x75, 0x30, 0x4b, 0x42, 0x75, 0x71, 0x56, 0x35, 0x44, 0x6f, 0x30, 0x53, 0x4c, 0x54, 0x5a, 0x4c, 0x72, 0x54, 0x6b, 0x2b, 0x6a, 0x55, 0x72, 0x49, 0x5a, 0x68, 0x51, 0x47, 0x70, 0x67, 0x56, 0x32, 0x68, 0x55, 0x68, 0x45, 0x32, 0x38, 0x61, 0x6c, 0x51, 0x43, 0x42, 0x66, 0x2f, 0x66, 0x6d, 0x35, 0x6f, 0x71, 0x72, 0x6c, 0x30, 0x48, 0x6a, 0x30, 0x72, 0x44, 0x4b, 0x48, 0x2f, 0x76, 0x2b, 0x79, 0x76, 0x36, 0x65, 0x66, 0x48, 0x48, 0x0a, 0x72, 0x66, 0x41, 0x51, 0x55, 0x79, 0x53, 0x51, 0x69, 0x32, 0x62, 0x4a, 0x71, 0x49, 0x69, 0x72, 0x72, 0x31, 0x71, 0x6a, 0x41, 0x4f, 0x6d, 0x2b, 0x75, 0x6b, 0x62, 0x75, 0x57, 0x33, 0x4e, 0x37, 0x4c, 0x42, 0x65, 0x43, 0x67, 0x56, 0x35, 0x69, 0x4c, 0x4b, 0x45, 0x43, 0x5a, 0x62, 0x4f, 0x39, 0x78, 0x53, 0x73, 0x41, 0x66, 0x73, 0x54, 0x38, 0x41, 0x7a, 0x4e, 0x58, 0x44, 0x65, 0x33, 0x69, 0x2b, 0x73, 0x35, 0x64, 0x52, 0x64, 0x59, 0x34, 0x7a, 0x54, 0x57, 0x32, 0x0a, 0x73, 0x73, 0x48, 0x51, 0x6e, 0x49, 0x46, 0x4b, 0x71, 0x75, 0x53, 0x79, 0x41, 0x56, 0x77, 0x64, 0x6a, 0x31, 0x2b, 0x5a, 0x78, 0x4c, 0x47, 0x74, 0x32, 0x34, 0x67, 0x68, 0x36, 0x35, 0x41, 0x49, 0x67, 0x6f, 0x44, 0x7a, 0x4d, 0x4b, 0x4e, 0x44, 0x35, 0x70, 0x43, 0x43, 0x72, 0x6c, 0x55, 0x6f, 0x53, 0x65, 0x31, 0x62, 0x31, 0x36, 0x6b, 0x51, 0x4f, 0x41, 0x37, 0x2b, 0x6a, 0x30, 0x78, 0x62, 0x6d, 0x30, 0x62, 0x71, 0x51, 0x66, 0x57, 0x77, 0x43, 0x48, 0x54, 0x44, 0x0a, 0x30, 0x49, 0x67, 0x7a, 0x74, 0x6e, 0x7a, 0x58, 0x64, 0x4e, 0x2f, 0x63, 0x68, 0x4e, 0x46, 0x44, 0x44, 0x6e, 0x55, 0x35, 0x6f, 0x53, 0x56, 0x41, 0x4b, 0x4f, 0x70, 0x34, 0x79, 0x77, 0x34, 0x73, 0x4c, 0x6a, 0x6d, 0x64, 0x6a, 0x49, 0x74, 0x75, 0x46, 0x68, 0x77, 0x76, 0x4a, 0x6f, 0x49, 0x51, 0x34, 0x75, 0x4e, 0x6c, 0x6c, 0x41, 0x6f, 0x45, 0x77, 0x46, 0x37, 0x33, 0x58, 0x56, 0x76, 0x34, 0x45, 0x4f, 0x4c, 0x51, 0x75, 0x6e, 0x70, 0x4c, 0x2b, 0x39, 0x34, 0x33, 0x0a, 0x41, 0x41, 0x41, 0x61, 0x57, 0x79, 0x6a, 0x6a, 0x30, 0x70, 0x78, 0x7a, 0x50, 0x6a, 0x4b, 0x48, 0x6d, 0x4b, 0x48, 0x4a, 0x55, 0x53, 0x2f, 0x58, 0x33, 0x71, 0x77, 0x7a, 0x73, 0x30, 0x38, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x0a, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x63, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4f, 0x43, 0x4d, 0x6d, 0x39, 0x73, 0x6c, 0x53, 0x62, 0x50, 0x78, 0x66, 0x49, 0x62, 0x57, 0x73, 0x6b, 0x4b, 0x48, 0x43, 0x39, 0x42, 0x72, 0x6f, 0x4e, 0x6e, 0x6b, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x42, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x0a, 0x41, 0x51, 0x41, 0x2b, 0x30, 0x68, 0x79, 0x4a, 0x4c, 0x6a, 0x58, 0x38, 0x2b, 0x48, 0x58, 0x64, 0x35, 0x6e, 0x39, 0x6c, 0x69, 0x50, 0x52, 0x79, 0x54, 0x4d, 0x6b, 0x73, 0x31, 0x7a, 0x4a, 0x4f, 0x38, 0x39, 0x30, 0x5a, 0x65, 0x55, 0x65, 0x39, 0x6a, 0x6a, 0x74, 0x62, 0x6b, 0x77, 0x39, 0x51, 0x53, 0x53, 0x51, 0x54, 0x61, 0x78, 0x51, 0x47, 0x63, 0x75, 0x38, 0x4a, 0x30, 0x36, 0x47, 0x68, 0x34, 0x30, 0x43, 0x45, 0x79, 0x65, 0x63, 0x59, 0x4d, 0x6e, 0x51, 0x38, 0x0a, 0x53, 0x47, 0x34, 0x50, 0x6e, 0x30, 0x76, 0x55, 0x39, 0x78, 0x37, 0x54, 0x6b, 0x34, 0x5a, 0x6b, 0x56, 0x4a, 0x64, 0x6a, 0x63, 0x6c, 0x44, 0x56, 0x56, 0x63, 0x2f, 0x36, 0x49, 0x4a, 0x4d, 0x43, 0x6f, 0x70, 0x76, 0x44, 0x49, 0x35, 0x4e, 0x4f, 0x46, 0x6c, 0x56, 0x32, 0x6f, 0x48, 0x42, 0x35, 0x62, 0x63, 0x30, 0x68, 0x48, 0x38, 0x38, 0x76, 0x4c, 0x62, 0x77, 0x5a, 0x34, 0x34, 0x67, 0x78, 0x2b, 0x46, 0x6b, 0x61, 0x67, 0x51, 0x6e, 0x49, 0x6c, 0x36, 0x5a, 0x30, 0x0a, 0x78, 0x32, 0x44, 0x45, 0x57, 0x38, 0x78, 0x58, 0x6a, 0x72, 0x4a, 0x31, 0x2f, 0x52, 0x73, 0x43, 0x43, 0x64, 0x74, 0x5a, 0x62, 0x33, 0x4b, 0x54, 0x61, 0x66, 0x63, 0x78, 0x51, 0x64, 0x61, 0x49, 0x4f, 0x4c, 0x2b, 0x48, 0x73, 0x72, 0x30, 0x57, 0x65, 0x66, 0x6d, 0x71, 0x35, 0x4c, 0x36, 0x49, 0x4a, 0x64, 0x31, 0x68, 0x4a, 0x79, 0x4d, 0x63, 0x74, 0x54, 0x45, 0x48, 0x42, 0x44, 0x61, 0x30, 0x47, 0x70, 0x43, 0x39, 0x6f, 0x48, 0x52, 0x78, 0x55, 0x49, 0x6c, 0x74, 0x0a, 0x76, 0x42, 0x54, 0x6a, 0x44, 0x34, 0x61, 0x75, 0x38, 0x61, 0x73, 0x2b, 0x78, 0x36, 0x41, 0x4a, 0x7a, 0x4b, 0x4e, 0x49, 0x30, 0x65, 0x44, 0x62, 0x5a, 0x4f, 0x65, 0x53, 0x74, 0x63, 0x2b, 0x76, 0x63, 0x6b, 0x4e, 0x77, 0x69, 0x2f, 0x6e, 0x44, 0x68, 0x44, 0x77, 0x54, 0x71, 0x6e, 0x36, 0x53, 0x6d, 0x31, 0x64, 0x54, 0x6b, 0x2f, 0x70, 0x77, 0x77, 0x70, 0x45, 0x4f, 0x4d, 0x66, 0x6d, 0x62, 0x5a, 0x31, 0x33, 0x70, 0x6c, 0x6a, 0x68, 0x65, 0x58, 0x37, 0x4e, 0x7a, 0x0a, 0x54, 0x6f, 0x67, 0x56, 0x5a, 0x39, 0x36, 0x65, 0x64, 0x68, 0x42, 0x69, 0x49, 0x4c, 0x35, 0x56, 0x61, 0x5a, 0x56, 0x44, 0x41, 0x44, 0x6c, 0x4e, 0x39, 0x75, 0x36, 0x77, 0x57, 0x6b, 0x35, 0x4a, 0x52, 0x46, 0x52, 0x59, 0x58, 0x30, 0x4b, 0x44, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x4e, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x20, 0x41, 0x72, 0x61, 0x6e, 0x79, 0x20, 0x28, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x47, 0x6f, 0x6c, 0x64, 0x29, 0x20, 0x46, 0xc5, 0x91, 0x74, 0x61, 0x6e, 0xc3, 0xba, 0x73, 0xc3, 0xad, 0x74, 0x76, 0xc3, 0xa1, 0x6e, 0x79, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x46, 0x54, 0x43, 0x43, 0x41, 0x76, 0x32, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x47, 0x53, 0x55, 0x45, 0x73, 0x35, 0x41, 0x41, 0x51, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x4d, 0x49, 0x47, 0x6e, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x49, 0x56, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x77, 0x77, 0x49, 0x51, 0x6e, 0x56, 0x6b, 0x59, 0x58, 0x42, 0x6c, 0x63, 0x33, 0x51, 0x78, 0x46, 0x54, 0x41, 0x54, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x44, 0x45, 0x35, 0x6c, 0x64, 0x45, 0x78, 0x76, 0x59, 0x32, 0x73, 0x67, 0x53, 0x32, 0x5a, 0x30, 0x4c, 0x6a, 0x45, 0x33, 0x4d, 0x44, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x77, 0x77, 0x75, 0x56, 0x47, 0x46, 0x75, 0x77, 0x37, 0x70, 0x7a, 0x77, 0x36, 0x31, 0x30, 0x0a, 0x64, 0x73, 0x4f, 0x68, 0x62, 0x6e, 0x6c, 0x72, 0x61, 0x57, 0x46, 0x6b, 0x77, 0x37, 0x4e, 0x72, 0x49, 0x43, 0x68, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x4b, 0x54, 0x45, 0x31, 0x4d, 0x44, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x73, 0x54, 0x6d, 0x56, 0x30, 0x54, 0x47, 0x39, 0x6a, 0x61, 0x79, 0x42, 0x42, 0x0a, 0x63, 0x6d, 0x46, 0x75, 0x65, 0x53, 0x41, 0x6f, 0x51, 0x32, 0x78, 0x68, 0x63, 0x33, 0x4d, 0x67, 0x52, 0x32, 0x39, 0x73, 0x5a, 0x43, 0x6b, 0x67, 0x52, 0x73, 0x57, 0x52, 0x64, 0x47, 0x46, 0x75, 0x77, 0x37, 0x70, 0x7a, 0x77, 0x36, 0x31, 0x30, 0x64, 0x73, 0x4f, 0x68, 0x62, 0x6e, 0x6b, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x67, 0x78, 0x4d, 0x6a, 0x45, 0x78, 0x4d, 0x54, 0x55, 0x77, 0x4f, 0x44, 0x49, 0x78, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x6a, 0x67, 0x78, 0x0a, 0x4d, 0x6a, 0x41, 0x32, 0x4d, 0x54, 0x55, 0x77, 0x4f, 0x44, 0x49, 0x78, 0x57, 0x6a, 0x43, 0x42, 0x70, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x53, 0x46, 0x55, 0x78, 0x45, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x4d, 0x43, 0x45, 0x4a, 0x31, 0x5a, 0x47, 0x46, 0x77, 0x5a, 0x58, 0x4e, 0x30, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x78, 0x4f, 0x0a, 0x5a, 0x58, 0x52, 0x4d, 0x62, 0x32, 0x4e, 0x72, 0x49, 0x45, 0x74, 0x6d, 0x64, 0x43, 0x34, 0x78, 0x4e, 0x7a, 0x41, 0x31, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x4d, 0x4c, 0x6c, 0x52, 0x68, 0x62, 0x73, 0x4f, 0x36, 0x63, 0x38, 0x4f, 0x74, 0x64, 0x48, 0x62, 0x44, 0x6f, 0x57, 0x35, 0x35, 0x61, 0x32, 0x6c, 0x68, 0x5a, 0x4d, 0x4f, 0x7a, 0x61, 0x79, 0x41, 0x6f, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x0a, 0x62, 0x69, 0x42, 0x54, 0x5a, 0x58, 0x4a, 0x32, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x79, 0x6b, 0x78, 0x4e, 0x54, 0x41, 0x7a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x4c, 0x45, 0x35, 0x6c, 0x64, 0x45, 0x78, 0x76, 0x59, 0x32, 0x73, 0x67, 0x51, 0x58, 0x4a, 0x68, 0x62, 0x6e, 0x6b, 0x67, 0x4b, 0x45, 0x4e, 0x73, 0x59, 0x58, 0x4e, 0x7a, 0x49, 0x45, 0x64, 0x76, 0x62, 0x47, 0x51, 0x70, 0x49, 0x45, 0x62, 0x46, 0x6b, 0x58, 0x52, 0x68, 0x62, 0x73, 0x4f, 0x36, 0x0a, 0x63, 0x38, 0x4f, 0x74, 0x64, 0x48, 0x62, 0x44, 0x6f, 0x57, 0x35, 0x35, 0x4d, 0x49, 0x49, 0x42, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x78, 0x43, 0x52, 0x65, 0x63, 0x37, 0x35, 0x4c, 0x62, 0x52, 0x54, 0x44, 0x6f, 0x66, 0x54, 0x6a, 0x6c, 0x35, 0x42, 0x75, 0x0a, 0x30, 0x6a, 0x42, 0x46, 0x48, 0x6a, 0x7a, 0x75, 0x5a, 0x39, 0x6c, 0x6b, 0x34, 0x42, 0x71, 0x4b, 0x66, 0x38, 0x6f, 0x77, 0x79, 0x6f, 0x50, 0x6a, 0x49, 0x4d, 0x48, 0x6a, 0x39, 0x44, 0x72, 0x54, 0x6c, 0x46, 0x38, 0x61, 0x66, 0x46, 0x74, 0x74, 0x76, 0x7a, 0x42, 0x50, 0x68, 0x43, 0x66, 0x32, 0x6e, 0x78, 0x39, 0x4a, 0x76, 0x4d, 0x61, 0x5a, 0x43, 0x70, 0x44, 0x79, 0x44, 0x2f, 0x56, 0x2f, 0x51, 0x34, 0x51, 0x33, 0x59, 0x31, 0x47, 0x4c, 0x65, 0x71, 0x56, 0x77, 0x0a, 0x2f, 0x48, 0x70, 0x59, 0x7a, 0x59, 0x36, 0x62, 0x37, 0x63, 0x4e, 0x47, 0x62, 0x49, 0x52, 0x77, 0x58, 0x64, 0x72, 0x7a, 0x41, 0x5a, 0x41, 0x6a, 0x2f, 0x45, 0x34, 0x77, 0x71, 0x58, 0x37, 0x68, 0x4a, 0x32, 0x50, 0x6e, 0x37, 0x57, 0x51, 0x38, 0x6f, 0x4c, 0x6a, 0x4a, 0x4d, 0x32, 0x50, 0x2b, 0x46, 0x70, 0x44, 0x2f, 0x73, 0x4c, 0x6a, 0x39, 0x31, 0x36, 0x6a, 0x41, 0x77, 0x4a, 0x52, 0x44, 0x43, 0x37, 0x62, 0x56, 0x57, 0x61, 0x61, 0x65, 0x56, 0x74, 0x41, 0x6b, 0x0a, 0x48, 0x33, 0x42, 0x35, 0x72, 0x39, 0x73, 0x35, 0x56, 0x41, 0x31, 0x6c, 0x64, 0x64, 0x6b, 0x56, 0x51, 0x5a, 0x51, 0x42, 0x72, 0x31, 0x37, 0x73, 0x39, 0x6f, 0x33, 0x78, 0x2f, 0x36, 0x31, 0x6b, 0x2f, 0x69, 0x43, 0x61, 0x31, 0x31, 0x7a, 0x72, 0x2f, 0x71, 0x59, 0x66, 0x43, 0x47, 0x53, 0x6a, 0x69, 0x33, 0x5a, 0x56, 0x72, 0x52, 0x34, 0x37, 0x4b, 0x47, 0x41, 0x75, 0x68, 0x79, 0x58, 0x6f, 0x71, 0x71, 0x38, 0x66, 0x78, 0x6d, 0x52, 0x47, 0x49, 0x4c, 0x64, 0x77, 0x0a, 0x66, 0x7a, 0x7a, 0x65, 0x53, 0x4e, 0x75, 0x57, 0x55, 0x37, 0x63, 0x35, 0x64, 0x2b, 0x51, 0x61, 0x34, 0x73, 0x63, 0x57, 0x68, 0x48, 0x61, 0x58, 0x57, 0x79, 0x2b, 0x37, 0x47, 0x52, 0x57, 0x46, 0x2b, 0x47, 0x6d, 0x46, 0x39, 0x5a, 0x6d, 0x6e, 0x71, 0x66, 0x49, 0x30, 0x70, 0x36, 0x6d, 0x32, 0x70, 0x67, 0x50, 0x38, 0x62, 0x34, 0x59, 0x39, 0x56, 0x48, 0x78, 0x32, 0x42, 0x4a, 0x74, 0x72, 0x2b, 0x55, 0x42, 0x64, 0x41, 0x44, 0x54, 0x48, 0x4c, 0x70, 0x6c, 0x31, 0x0a, 0x6e, 0x65, 0x57, 0x49, 0x41, 0x36, 0x70, 0x4e, 0x2b, 0x41, 0x50, 0x53, 0x51, 0x6e, 0x62, 0x41, 0x47, 0x77, 0x49, 0x44, 0x41, 0x4b, 0x69, 0x4c, 0x6f, 0x30, 0x55, 0x77, 0x51, 0x7a, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x43, 0x44, 0x41, 0x47, 0x41, 0x51, 0x48, 0x2f, 0x41, 0x67, 0x45, 0x45, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x0a, 0x42, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x7a, 0x50, 0x70, 0x6e, 0x6b, 0x2f, 0x43, 0x32, 0x75, 0x4e, 0x43, 0x6c, 0x77, 0x42, 0x37, 0x7a, 0x55, 0x2f, 0x32, 0x4d, 0x55, 0x39, 0x2b, 0x44, 0x31, 0x35, 0x59, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4b, 0x74, 0x2f, 0x37, 0x68, 0x77, 0x57, 0x0a, 0x71, 0x5a, 0x77, 0x38, 0x55, 0x51, 0x43, 0x67, 0x77, 0x42, 0x45, 0x49, 0x42, 0x61, 0x65, 0x5a, 0x35, 0x6d, 0x38, 0x42, 0x69, 0x46, 0x52, 0x68, 0x62, 0x76, 0x47, 0x35, 0x47, 0x4b, 0x31, 0x4b, 0x72, 0x66, 0x36, 0x42, 0x51, 0x43, 0x4f, 0x55, 0x4c, 0x2f, 0x74, 0x31, 0x66, 0x43, 0x38, 0x6f, 0x53, 0x32, 0x49, 0x6b, 0x67, 0x59, 0x49, 0x4c, 0x39, 0x57, 0x48, 0x78, 0x48, 0x47, 0x36, 0x34, 0x59, 0x54, 0x6a, 0x72, 0x67, 0x66, 0x70, 0x69, 0x6f, 0x54, 0x74, 0x61, 0x0a, 0x59, 0x74, 0x4f, 0x55, 0x5a, 0x63, 0x54, 0x68, 0x35, 0x6d, 0x32, 0x43, 0x2b, 0x43, 0x38, 0x6c, 0x63, 0x4c, 0x49, 0x68, 0x4a, 0x73, 0x46, 0x79, 0x55, 0x52, 0x2b, 0x4d, 0x4c, 0x4d, 0x4f, 0x45, 0x6b, 0x4d, 0x4e, 0x61, 0x6a, 0x37, 0x72, 0x50, 0x39, 0x4b, 0x64, 0x6c, 0x70, 0x65, 0x75, 0x59, 0x30, 0x66, 0x73, 0x46, 0x73, 0x6b, 0x5a, 0x31, 0x46, 0x53, 0x4e, 0x71, 0x62, 0x34, 0x56, 0x6a, 0x4d, 0x49, 0x44, 0x77, 0x31, 0x5a, 0x34, 0x66, 0x4b, 0x52, 0x7a, 0x43, 0x0a, 0x62, 0x4c, 0x42, 0x51, 0x57, 0x56, 0x32, 0x51, 0x57, 0x7a, 0x75, 0x6f, 0x44, 0x54, 0x44, 0x50, 0x76, 0x33, 0x31, 0x2f, 0x7a, 0x76, 0x47, 0x64, 0x67, 0x37, 0x33, 0x4a, 0x52, 0x6d, 0x34, 0x67, 0x70, 0x76, 0x6c, 0x68, 0x55, 0x62, 0x6f, 0x68, 0x4c, 0x33, 0x75, 0x2b, 0x70, 0x52, 0x56, 0x6a, 0x6f, 0x64, 0x53, 0x56, 0x68, 0x2f, 0x47, 0x65, 0x75, 0x66, 0x4f, 0x4a, 0x38, 0x7a, 0x32, 0x46, 0x75, 0x4c, 0x6a, 0x62, 0x76, 0x72, 0x57, 0x35, 0x4b, 0x66, 0x6e, 0x61, 0x0a, 0x4e, 0x77, 0x55, 0x41, 0x53, 0x5a, 0x51, 0x44, 0x68, 0x45, 0x54, 0x6e, 0x76, 0x30, 0x4d, 0x78, 0x7a, 0x33, 0x57, 0x4c, 0x4a, 0x64, 0x48, 0x30, 0x70, 0x6d, 0x54, 0x31, 0x6b, 0x76, 0x61, 0x72, 0x42, 0x65, 0x73, 0x39, 0x36, 0x61, 0x55, 0x4c, 0x4e, 0x6d, 0x4c, 0x61, 0x7a, 0x41, 0x5a, 0x66, 0x4e, 0x6f, 0x75, 0x32, 0x58, 0x6a, 0x47, 0x34, 0x4b, 0x76, 0x74, 0x65, 0x39, 0x6e, 0x48, 0x66, 0x52, 0x43, 0x61, 0x65, 0x78, 0x4f, 0x59, 0x4e, 0x6b, 0x62, 0x51, 0x75, 0x0a, 0x64, 0x5a, 0x57, 0x41, 0x55, 0x57, 0x70, 0x4c, 0x4d, 0x4b, 0x61, 0x77, 0x59, 0x71, 0x47, 0x54, 0x38, 0x5a, 0x76, 0x59, 0x7a, 0x73, 0x52, 0x6a, 0x64, 0x54, 0x39, 0x5a, 0x52, 0x37, 0x45, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x31, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x62, 0x54, 0x43, 0x43, 0x41, 0x6c, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x59, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x4b, 0x55, 0x44, 0x45, 0x72, 0x4d, 0x43, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x69, 0x0a, 0x53, 0x6d, 0x46, 0x77, 0x59, 0x57, 0x34, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x54, 0x5a, 0x58, 0x4a, 0x32, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x79, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x6a, 0x45, 0x63, 0x4d, 0x42, 0x6f, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x54, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x58, 0x4a, 0x6c, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x69, 0x42, 0x53, 0x0a, 0x62, 0x32, 0x39, 0x30, 0x51, 0x30, 0x45, 0x78, 0x4d, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x77, 0x4f, 0x54, 0x41, 0x30, 0x4d, 0x44, 0x67, 0x77, 0x4e, 0x44, 0x55, 0x32, 0x4e, 0x44, 0x64, 0x61, 0x46, 0x77, 0x30, 0x79, 0x4f, 0x54, 0x41, 0x30, 0x4d, 0x44, 0x67, 0x77, 0x4e, 0x44, 0x55, 0x32, 0x4e, 0x44, 0x64, 0x61, 0x4d, 0x46, 0x67, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x70, 0x51, 0x4d, 0x53, 0x73, 0x77, 0x0a, 0x4b, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x79, 0x4a, 0x4b, 0x59, 0x58, 0x42, 0x68, 0x62, 0x69, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x4d, 0x52, 0x77, 0x77, 0x47, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x4e, 0x54, 0x5a, 0x57, 0x4e, 0x31, 0x0a, 0x63, 0x6d, 0x56, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x52, 0x44, 0x51, 0x54, 0x45, 0x78, 0x4d, 0x49, 0x49, 0x42, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x2f, 0x58, 0x65, 0x71, 0x70, 0x52, 0x79, 0x51, 0x42, 0x54, 0x76, 0x4c, 0x0a, 0x54, 0x4a, 0x73, 0x7a, 0x69, 0x31, 0x6f, 0x55, 0x52, 0x61, 0x54, 0x6e, 0x6b, 0x42, 0x62, 0x52, 0x33, 0x31, 0x66, 0x53, 0x49, 0x52, 0x43, 0x6b, 0x46, 0x2f, 0x33, 0x66, 0x72, 0x4e, 0x59, 0x66, 0x70, 0x2b, 0x54, 0x62, 0x66, 0x50, 0x66, 0x73, 0x33, 0x37, 0x67, 0x44, 0x32, 0x70, 0x52, 0x59, 0x2f, 0x56, 0x31, 0x79, 0x66, 0x49, 0x77, 0x2f, 0x58, 0x77, 0x46, 0x6e, 0x64, 0x42, 0x57, 0x57, 0x34, 0x77, 0x49, 0x38, 0x68, 0x39, 0x75, 0x75, 0x79, 0x77, 0x47, 0x4f, 0x0a, 0x77, 0x76, 0x4e, 0x6d, 0x78, 0x6f, 0x56, 0x46, 0x39, 0x41, 0x4c, 0x47, 0x4f, 0x72, 0x56, 0x69, 0x73, 0x71, 0x2f, 0x36, 0x6e, 0x4c, 0x2b, 0x6b, 0x35, 0x74, 0x53, 0x41, 0x4d, 0x4a, 0x6a, 0x7a, 0x44, 0x62, 0x61, 0x54, 0x6a, 0x36, 0x6e, 0x55, 0x32, 0x44, 0x62, 0x79, 0x73, 0x50, 0x79, 0x4b, 0x79, 0x69, 0x79, 0x68, 0x46, 0x54, 0x4f, 0x56, 0x4d, 0x64, 0x72, 0x41, 0x47, 0x2f, 0x4c, 0x75, 0x59, 0x70, 0x6d, 0x47, 0x59, 0x7a, 0x2b, 0x2f, 0x33, 0x5a, 0x4d, 0x71, 0x0a, 0x67, 0x36, 0x68, 0x32, 0x75, 0x52, 0x4d, 0x66, 0x74, 0x38, 0x35, 0x4f, 0x51, 0x6f, 0x57, 0x50, 0x49, 0x75, 0x63, 0x75, 0x47, 0x76, 0x4b, 0x56, 0x43, 0x62, 0x49, 0x46, 0x74, 0x55, 0x52, 0x4f, 0x64, 0x36, 0x45, 0x67, 0x76, 0x61, 0x6e, 0x79, 0x54, 0x67, 0x70, 0x39, 0x55, 0x4b, 0x33, 0x31, 0x42, 0x51, 0x31, 0x46, 0x54, 0x30, 0x5a, 0x78, 0x2f, 0x53, 0x67, 0x2b, 0x55, 0x2f, 0x73, 0x45, 0x32, 0x43, 0x33, 0x58, 0x5a, 0x52, 0x31, 0x4b, 0x47, 0x2f, 0x72, 0x50, 0x0a, 0x4f, 0x37, 0x41, 0x78, 0x6d, 0x6a, 0x56, 0x75, 0x79, 0x49, 0x73, 0x47, 0x30, 0x77, 0x43, 0x52, 0x38, 0x70, 0x51, 0x49, 0x5a, 0x55, 0x79, 0x78, 0x4e, 0x41, 0x59, 0x41, 0x65, 0x6f, 0x6e, 0x69, 0x38, 0x4d, 0x63, 0x44, 0x57, 0x63, 0x2f, 0x56, 0x31, 0x75, 0x69, 0x6e, 0x4d, 0x72, 0x50, 0x6d, 0x6d, 0x45, 0x43, 0x47, 0x78, 0x63, 0x30, 0x6e, 0x45, 0x6f, 0x76, 0x4d, 0x65, 0x38, 0x36, 0x33, 0x45, 0x54, 0x78, 0x69, 0x59, 0x41, 0x63, 0x6a, 0x50, 0x69, 0x74, 0x41, 0x0a, 0x62, 0x70, 0x53, 0x41, 0x43, 0x57, 0x32, 0x32, 0x73, 0x32, 0x39, 0x33, 0x62, 0x7a, 0x55, 0x49, 0x55, 0x50, 0x73, 0x43, 0x68, 0x38, 0x55, 0x2b, 0x69, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x57, 0x2f, 0x68, 0x4e, 0x54, 0x37, 0x4b, 0x6c, 0x68, 0x74, 0x51, 0x36, 0x30, 0x76, 0x46, 0x6a, 0x6d, 0x71, 0x43, 0x2b, 0x43, 0x66, 0x5a, 0x58, 0x0a, 0x74, 0x39, 0x34, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4b, 0x43, 0x68, 0x0a, 0x4f, 0x42, 0x5a, 0x6d, 0x4c, 0x71, 0x64, 0x57, 0x48, 0x79, 0x47, 0x63, 0x42, 0x76, 0x6f, 0x64, 0x37, 0x62, 0x6b, 0x69, 0x78, 0x54, 0x67, 0x6d, 0x32, 0x45, 0x35, 0x50, 0x37, 0x4b, 0x4e, 0x2f, 0x65, 0x64, 0x35, 0x47, 0x49, 0x61, 0x47, 0x48, 0x64, 0x34, 0x38, 0x48, 0x43, 0x4a, 0x71, 0x79, 0x70, 0x4d, 0x57, 0x76, 0x44, 0x7a, 0x4b, 0x59, 0x43, 0x33, 0x78, 0x6d, 0x4b, 0x62, 0x61, 0x62, 0x66, 0x53, 0x56, 0x53, 0x53, 0x55, 0x4f, 0x72, 0x54, 0x43, 0x34, 0x72, 0x0a, 0x62, 0x6e, 0x70, 0x77, 0x72, 0x78, 0x59, 0x4f, 0x34, 0x77, 0x4a, 0x73, 0x2b, 0x30, 0x4c, 0x6d, 0x47, 0x4a, 0x31, 0x46, 0x32, 0x46, 0x58, 0x49, 0x36, 0x44, 0x76, 0x64, 0x35, 0x2b, 0x48, 0x30, 0x4c, 0x67, 0x73, 0x63, 0x4e, 0x46, 0x78, 0x73, 0x57, 0x45, 0x72, 0x37, 0x6a, 0x49, 0x68, 0x51, 0x58, 0x35, 0x55, 0x63, 0x76, 0x2b, 0x32, 0x72, 0x49, 0x72, 0x56, 0x6c, 0x73, 0x34, 0x57, 0x36, 0x6e, 0x67, 0x2b, 0x34, 0x72, 0x65, 0x56, 0x36, 0x47, 0x34, 0x70, 0x51, 0x0a, 0x4f, 0x68, 0x32, 0x39, 0x44, 0x62, 0x78, 0x37, 0x56, 0x46, 0x41, 0x4c, 0x75, 0x55, 0x4b, 0x76, 0x56, 0x61, 0x41, 0x59, 0x67, 0x61, 0x31, 0x6c, 0x6d, 0x65, 0x2b, 0x2b, 0x35, 0x4a, 0x79, 0x2f, 0x78, 0x49, 0x57, 0x72, 0x51, 0x62, 0x4a, 0x55, 0x62, 0x39, 0x77, 0x6c, 0x7a, 0x65, 0x31, 0x34, 0x34, 0x6f, 0x34, 0x4d, 0x6a, 0x51, 0x6c, 0x4a, 0x33, 0x57, 0x4e, 0x37, 0x57, 0x6d, 0x6d, 0x57, 0x41, 0x69, 0x47, 0x6f, 0x76, 0x56, 0x4a, 0x5a, 0x36, 0x58, 0x30, 0x31, 0x0a, 0x79, 0x38, 0x68, 0x53, 0x79, 0x6e, 0x2b, 0x42, 0x2f, 0x74, 0x6c, 0x72, 0x30, 0x2f, 0x63, 0x52, 0x37, 0x53, 0x58, 0x66, 0x2b, 0x4f, 0x66, 0x35, 0x70, 0x50, 0x70, 0x79, 0x6c, 0x34, 0x52, 0x54, 0x44, 0x61, 0x58, 0x51, 0x4d, 0x68, 0x68, 0x52, 0x64, 0x6c, 0x6b, 0x55, 0x62, 0x41, 0x2f, 0x72, 0x37, 0x46, 0x2b, 0x41, 0x6a, 0x48, 0x56, 0x44, 0x67, 0x38, 0x4f, 0x46, 0x6d, 0x50, 0x39, 0x4d, 0x6e, 0x69, 0x30, 0x4e, 0x35, 0x48, 0x65, 0x44, 0x6b, 0x30, 0x36, 0x31, 0x0a, 0x6c, 0x67, 0x65, 0x4c, 0x4b, 0x42, 0x4f, 0x62, 0x6a, 0x42, 0x6d, 0x4e, 0x51, 0x53, 0x64, 0x4a, 0x51, 0x4f, 0x37, 0x65, 0x35, 0x69, 0x4e, 0x45, 0x4f, 0x64, 0x79, 0x68, 0x49, 0x74, 0x61, 0x36, 0x41, 0x2f, 0x49, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x20, 0x65, 0x2d, 0x53, 0x7a, 0x69, 0x67, 0x6e, 0x6f, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x30, 0x39, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x43, 0x6a, 0x43, 0x43, 0x41, 0x76, 0x4b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4a, 0x41, 0x4d, 0x4a, 0x2b, 0x51, 0x77, 0x52, 0x4f, 0x52, 0x7a, 0x38, 0x5a, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x4d, 0x49, 0x47, 0x43, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x49, 0x56, 0x54, 0x45, 0x52, 0x0a, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x77, 0x77, 0x49, 0x51, 0x6e, 0x56, 0x6b, 0x59, 0x58, 0x42, 0x6c, 0x63, 0x33, 0x51, 0x78, 0x46, 0x6a, 0x41, 0x55, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x44, 0x55, 0x31, 0x70, 0x59, 0x33, 0x4a, 0x76, 0x63, 0x32, 0x56, 0x6a, 0x49, 0x45, 0x78, 0x30, 0x5a, 0x43, 0x34, 0x78, 0x4a, 0x7a, 0x41, 0x6c, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x48, 0x6b, 0x31, 0x70, 0x59, 0x33, 0x4a, 0x76, 0x0a, 0x63, 0x32, 0x56, 0x6a, 0x49, 0x47, 0x55, 0x74, 0x55, 0x33, 0x70, 0x70, 0x5a, 0x32, 0x35, 0x76, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x6a, 0x41, 0x77, 0x4f, 0x54, 0x45, 0x66, 0x4d, 0x42, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x4a, 0x41, 0x52, 0x59, 0x51, 0x61, 0x57, 0x35, 0x6d, 0x62, 0x30, 0x42, 0x6c, 0x4c, 0x58, 0x4e, 0x36, 0x61, 0x57, 0x64, 0x75, 0x62, 0x79, 0x35, 0x6f, 0x0a, 0x64, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x77, 0x4f, 0x54, 0x41, 0x32, 0x4d, 0x54, 0x59, 0x78, 0x4d, 0x54, 0x4d, 0x77, 0x4d, 0x54, 0x68, 0x61, 0x46, 0x77, 0x30, 0x79, 0x4f, 0x54, 0x45, 0x79, 0x4d, 0x7a, 0x41, 0x78, 0x4d, 0x54, 0x4d, 0x77, 0x4d, 0x54, 0x68, 0x61, 0x4d, 0x49, 0x47, 0x43, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x49, 0x56, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x77, 0x77, 0x49, 0x51, 0x6e, 0x56, 0x6b, 0x59, 0x58, 0x42, 0x6c, 0x63, 0x33, 0x51, 0x78, 0x46, 0x6a, 0x41, 0x55, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x44, 0x55, 0x31, 0x70, 0x59, 0x33, 0x4a, 0x76, 0x63, 0x32, 0x56, 0x6a, 0x49, 0x45, 0x78, 0x30, 0x5a, 0x43, 0x34, 0x78, 0x4a, 0x7a, 0x41, 0x6c, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x48, 0x6b, 0x31, 0x70, 0x59, 0x33, 0x4a, 0x76, 0x63, 0x32, 0x56, 0x6a, 0x49, 0x47, 0x55, 0x74, 0x0a, 0x55, 0x33, 0x70, 0x70, 0x5a, 0x32, 0x35, 0x76, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x6a, 0x41, 0x77, 0x4f, 0x54, 0x45, 0x66, 0x4d, 0x42, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x4a, 0x41, 0x52, 0x59, 0x51, 0x61, 0x57, 0x35, 0x6d, 0x62, 0x30, 0x42, 0x6c, 0x4c, 0x58, 0x4e, 0x36, 0x61, 0x57, 0x64, 0x75, 0x62, 0x79, 0x35, 0x6f, 0x64, 0x54, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x0a, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4f, 0x6e, 0x34, 0x6a, 0x2f, 0x4e, 0x6a, 0x72, 0x64, 0x71, 0x47, 0x32, 0x4b, 0x66, 0x67, 0x51, 0x76, 0x76, 0x50, 0x6b, 0x64, 0x36, 0x6d, 0x4a, 0x76, 0x69, 0x5a, 0x70, 0x57, 0x4e, 0x77, 0x72, 0x5a, 0x75, 0x75, 0x79, 0x6a, 0x4e, 0x41, 0x0a, 0x66, 0x57, 0x32, 0x57, 0x62, 0x71, 0x45, 0x4f, 0x52, 0x4f, 0x37, 0x68, 0x45, 0x35, 0x32, 0x55, 0x51, 0x6c, 0x4b, 0x61, 0x76, 0x58, 0x57, 0x46, 0x64, 0x43, 0x79, 0x6f, 0x44, 0x68, 0x32, 0x54, 0x74, 0x68, 0x69, 0x33, 0x6a, 0x43, 0x79, 0x6f, 0x7a, 0x2f, 0x74, 0x63, 0x63, 0x62, 0x6e, 0x61, 0x37, 0x50, 0x37, 0x6f, 0x66, 0x6f, 0x2f, 0x6b, 0x4c, 0x78, 0x32, 0x79, 0x71, 0x48, 0x57, 0x48, 0x32, 0x4c, 0x65, 0x68, 0x35, 0x54, 0x76, 0x50, 0x6d, 0x55, 0x70, 0x47, 0x0a, 0x30, 0x49, 0x4d, 0x5a, 0x66, 0x63, 0x43, 0x68, 0x45, 0x68, 0x79, 0x56, 0x62, 0x55, 0x72, 0x30, 0x32, 0x4d, 0x65, 0x6c, 0x54, 0x54, 0x4d, 0x75, 0x68, 0x54, 0x6c, 0x41, 0x64, 0x58, 0x34, 0x55, 0x66, 0x49, 0x41, 0x53, 0x6d, 0x46, 0x44, 0x48, 0x51, 0x57, 0x65, 0x34, 0x6f, 0x49, 0x42, 0x68, 0x56, 0x4b, 0x5a, 0x73, 0x54, 0x68, 0x2f, 0x67, 0x6e, 0x51, 0x34, 0x48, 0x36, 0x63, 0x6d, 0x36, 0x4d, 0x2b, 0x66, 0x2b, 0x77, 0x46, 0x55, 0x6f, 0x4c, 0x41, 0x4b, 0x41, 0x0a, 0x70, 0x78, 0x6e, 0x31, 0x6e, 0x74, 0x78, 0x56, 0x55, 0x77, 0x4f, 0x58, 0x65, 0x77, 0x64, 0x49, 0x2f, 0x35, 0x6e, 0x37, 0x4e, 0x34, 0x6f, 0x6b, 0x78, 0x46, 0x6e, 0x4d, 0x55, 0x42, 0x42, 0x6a, 0x6a, 0x71, 0x71, 0x70, 0x47, 0x72, 0x43, 0x45, 0x47, 0x6f, 0x62, 0x35, 0x58, 0x37, 0x75, 0x78, 0x55, 0x47, 0x36, 0x6b, 0x30, 0x51, 0x72, 0x4d, 0x31, 0x58, 0x46, 0x2b, 0x48, 0x36, 0x63, 0x62, 0x66, 0x50, 0x56, 0x54, 0x62, 0x69, 0x4a, 0x66, 0x79, 0x79, 0x76, 0x6d, 0x0a, 0x31, 0x48, 0x78, 0x64, 0x72, 0x74, 0x62, 0x43, 0x78, 0x6b, 0x7a, 0x6c, 0x42, 0x51, 0x48, 0x5a, 0x37, 0x56, 0x66, 0x38, 0x77, 0x53, 0x4e, 0x35, 0x2f, 0x50, 0x72, 0x49, 0x4a, 0x49, 0x4f, 0x56, 0x38, 0x37, 0x56, 0x71, 0x55, 0x51, 0x48, 0x51, 0x64, 0x39, 0x62, 0x70, 0x45, 0x71, 0x48, 0x35, 0x47, 0x6f, 0x50, 0x37, 0x67, 0x68, 0x75, 0x35, 0x73, 0x4a, 0x66, 0x30, 0x64, 0x67, 0x59, 0x7a, 0x51, 0x30, 0x6d, 0x67, 0x2f, 0x77, 0x75, 0x31, 0x2b, 0x72, 0x55, 0x43, 0x0a, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4f, 0x42, 0x67, 0x44, 0x42, 0x2b, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54, 0x4c, 0x44, 0x38, 0x62, 0x66, 0x0a, 0x51, 0x6b, 0x50, 0x4d, 0x50, 0x63, 0x75, 0x31, 0x53, 0x43, 0x4f, 0x68, 0x47, 0x6e, 0x71, 0x6d, 0x4b, 0x72, 0x73, 0x30, 0x61, 0x44, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x4d, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x54, 0x4c, 0x44, 0x38, 0x62, 0x66, 0x51, 0x6b, 0x50, 0x4d, 0x50, 0x63, 0x75, 0x31, 0x53, 0x43, 0x4f, 0x68, 0x47, 0x6e, 0x71, 0x6d, 0x4b, 0x72, 0x73, 0x30, 0x61, 0x44, 0x41, 0x62, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x45, 0x45, 0x0a, 0x46, 0x44, 0x41, 0x53, 0x67, 0x52, 0x42, 0x70, 0x62, 0x6d, 0x5a, 0x76, 0x51, 0x47, 0x55, 0x74, 0x63, 0x33, 0x70, 0x70, 0x5a, 0x32, 0x35, 0x76, 0x4c, 0x6d, 0x68, 0x31, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x44, 0x4a, 0x30, 0x51, 0x35, 0x65, 0x4c, 0x74, 0x58, 0x4d, 0x73, 0x33, 0x77, 0x2b, 0x79, 0x2f, 0x77, 0x39, 0x2f, 0x77, 0x30, 0x6f, 0x0a, 0x6c, 0x5a, 0x4d, 0x45, 0x79, 0x4c, 0x2f, 0x61, 0x7a, 0x58, 0x6d, 0x34, 0x51, 0x35, 0x44, 0x77, 0x70, 0x4c, 0x37, 0x76, 0x38, 0x75, 0x38, 0x68, 0x6d, 0x4c, 0x7a, 0x55, 0x31, 0x46, 0x30, 0x47, 0x39, 0x75, 0x35, 0x43, 0x37, 0x44, 0x42, 0x73, 0x6f, 0x4b, 0x71, 0x70, 0x79, 0x76, 0x47, 0x76, 0x69, 0x76, 0x6f, 0x2f, 0x43, 0x33, 0x4e, 0x71, 0x50, 0x75, 0x6f, 0x75, 0x51, 0x48, 0x34, 0x66, 0x72, 0x6c, 0x52, 0x68, 0x65, 0x65, 0x73, 0x75, 0x43, 0x44, 0x66, 0x58, 0x0a, 0x49, 0x2f, 0x4f, 0x4d, 0x6e, 0x37, 0x34, 0x64, 0x73, 0x65, 0x47, 0x6b, 0x64, 0x64, 0x75, 0x67, 0x34, 0x6c, 0x51, 0x55, 0x73, 0x62, 0x6f, 0x63, 0x4b, 0x61, 0x51, 0x59, 0x39, 0x68, 0x4b, 0x36, 0x6f, 0x68, 0x51, 0x55, 0x34, 0x7a, 0x45, 0x31, 0x79, 0x45, 0x44, 0x2f, 0x74, 0x2b, 0x41, 0x46, 0x64, 0x6c, 0x66, 0x42, 0x48, 0x46, 0x6e, 0x79, 0x2b, 0x4c, 0x2f, 0x6b, 0x37, 0x53, 0x56, 0x69, 0x58, 0x49, 0x54, 0x77, 0x66, 0x6e, 0x34, 0x66, 0x73, 0x37, 0x37, 0x35, 0x0a, 0x74, 0x79, 0x45, 0x52, 0x7a, 0x41, 0x4d, 0x42, 0x56, 0x6e, 0x43, 0x6e, 0x45, 0x4a, 0x49, 0x65, 0x47, 0x7a, 0x53, 0x42, 0x48, 0x71, 0x32, 0x63, 0x47, 0x73, 0x4d, 0x45, 0x50, 0x4f, 0x30, 0x43, 0x59, 0x64, 0x59, 0x65, 0x42, 0x76, 0x4e, 0x66, 0x4f, 0x6f, 0x66, 0x79, 0x4b, 0x2f, 0x46, 0x46, 0x68, 0x2b, 0x55, 0x39, 0x72, 0x4e, 0x48, 0x48, 0x56, 0x34, 0x53, 0x39, 0x61, 0x36, 0x37, 0x63, 0x32, 0x50, 0x6d, 0x32, 0x47, 0x32, 0x4a, 0x77, 0x43, 0x7a, 0x30, 0x32, 0x0a, 0x79, 0x55, 0x4c, 0x79, 0x4d, 0x74, 0x64, 0x36, 0x59, 0x65, 0x62, 0x53, 0x32, 0x7a, 0x33, 0x50, 0x79, 0x4b, 0x6e, 0x4a, 0x6d, 0x39, 0x7a, 0x62, 0x57, 0x45, 0x54, 0x58, 0x62, 0x7a, 0x69, 0x76, 0x66, 0x33, 0x6a, 0x54, 0x6f, 0x36, 0x30, 0x61, 0x64, 0x62, 0x6f, 0x63, 0x77, 0x54, 0x5a, 0x38, 0x6a, 0x78, 0x35, 0x74, 0x48, 0x4d, 0x4e, 0x31, 0x52, 0x71, 0x34, 0x31, 0x42, 0x61, 0x62, 0x32, 0x58, 0x44, 0x30, 0x68, 0x37, 0x6c, 0x62, 0x77, 0x79, 0x59, 0x49, 0x69, 0x0a, 0x4c, 0x58, 0x70, 0x55, 0x71, 0x33, 0x44, 0x44, 0x66, 0x53, 0x4a, 0x6c, 0x67, 0x6e, 0x43, 0x57, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x52, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x58, 0x7a, 0x43, 0x43, 0x41, 0x6b, 0x65, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4c, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x49, 0x56, 0x68, 0x54, 0x43, 0x4b, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x54, 0x44, 0x45, 0x67, 0x4d, 0x42, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x58, 0x52, 0x32, 0x78, 0x76, 0x0a, 0x59, 0x6d, 0x46, 0x73, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x43, 0x30, 0x67, 0x55, 0x6a, 0x4d, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x43, 0x6b, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x43, 0x6b, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x0a, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x6b, 0x77, 0x4d, 0x7a, 0x45, 0x34, 0x4d, 0x54, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x6a, 0x6b, 0x77, 0x4d, 0x7a, 0x45, 0x34, 0x4d, 0x54, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x42, 0x4d, 0x4d, 0x53, 0x41, 0x77, 0x48, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x64, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x54, 0x0a, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4c, 0x53, 0x42, 0x53, 0x4d, 0x7a, 0x45, 0x54, 0x4d, 0x42, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4b, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x6a, 0x45, 0x54, 0x4d, 0x42, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x4b, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x55, 0x32, 0x6c, 0x6e, 0x0a, 0x62, 0x6a, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4d, 0x77, 0x6c, 0x64, 0x70, 0x42, 0x35, 0x42, 0x6e, 0x67, 0x69, 0x46, 0x76, 0x58, 0x41, 0x67, 0x37, 0x61, 0x45, 0x79, 0x69, 0x69, 0x65, 0x2f, 0x51, 0x56, 0x32, 0x45, 0x63, 0x57, 0x74, 0x0a, 0x69, 0x48, 0x4c, 0x38, 0x52, 0x67, 0x4a, 0x44, 0x78, 0x37, 0x4b, 0x4b, 0x6e, 0x51, 0x52, 0x66, 0x4a, 0x4d, 0x73, 0x75, 0x53, 0x2b, 0x46, 0x67, 0x67, 0x6b, 0x62, 0x68, 0x55, 0x71, 0x73, 0x4d, 0x67, 0x55, 0x64, 0x77, 0x62, 0x4e, 0x31, 0x6b, 0x30, 0x65, 0x76, 0x31, 0x4c, 0x4b, 0x4d, 0x50, 0x67, 0x6a, 0x30, 0x4d, 0x4b, 0x36, 0x36, 0x58, 0x31, 0x37, 0x59, 0x55, 0x68, 0x68, 0x42, 0x35, 0x75, 0x7a, 0x73, 0x54, 0x67, 0x48, 0x65, 0x4d, 0x43, 0x4f, 0x46, 0x4a, 0x0a, 0x30, 0x6d, 0x70, 0x69, 0x4c, 0x78, 0x39, 0x65, 0x2b, 0x70, 0x5a, 0x6f, 0x33, 0x34, 0x6b, 0x6e, 0x6c, 0x54, 0x69, 0x66, 0x42, 0x74, 0x63, 0x2b, 0x79, 0x63, 0x73, 0x6d, 0x57, 0x51, 0x31, 0x7a, 0x33, 0x72, 0x44, 0x49, 0x36, 0x53, 0x59, 0x4f, 0x67, 0x78, 0x58, 0x47, 0x37, 0x31, 0x75, 0x4c, 0x30, 0x67, 0x52, 0x67, 0x79, 0x6b, 0x6d, 0x6d, 0x4b, 0x50, 0x5a, 0x70, 0x4f, 0x2f, 0x62, 0x4c, 0x79, 0x43, 0x69, 0x52, 0x35, 0x5a, 0x32, 0x4b, 0x59, 0x56, 0x63, 0x33, 0x0a, 0x72, 0x48, 0x51, 0x55, 0x33, 0x48, 0x54, 0x67, 0x4f, 0x75, 0x35, 0x79, 0x4c, 0x79, 0x36, 0x63, 0x2b, 0x39, 0x43, 0x37, 0x76, 0x2f, 0x55, 0x39, 0x41, 0x4f, 0x45, 0x47, 0x4d, 0x2b, 0x69, 0x43, 0x4b, 0x36, 0x35, 0x54, 0x70, 0x6a, 0x6f, 0x57, 0x63, 0x34, 0x7a, 0x64, 0x51, 0x51, 0x34, 0x67, 0x4f, 0x73, 0x43, 0x30, 0x70, 0x36, 0x48, 0x70, 0x73, 0x6b, 0x2b, 0x51, 0x4c, 0x6a, 0x4a, 0x67, 0x36, 0x56, 0x66, 0x4c, 0x75, 0x51, 0x53, 0x53, 0x61, 0x47, 0x6a, 0x6c, 0x0a, 0x4f, 0x43, 0x5a, 0x67, 0x64, 0x62, 0x4b, 0x66, 0x64, 0x2f, 0x2b, 0x52, 0x46, 0x4f, 0x2b, 0x75, 0x49, 0x45, 0x6e, 0x38, 0x72, 0x55, 0x41, 0x56, 0x53, 0x4e, 0x45, 0x43, 0x4d, 0x57, 0x45, 0x5a, 0x58, 0x72, 0x69, 0x58, 0x37, 0x36, 0x31, 0x33, 0x74, 0x32, 0x53, 0x61, 0x65, 0x72, 0x39, 0x66, 0x77, 0x52, 0x50, 0x76, 0x6d, 0x32, 0x4c, 0x37, 0x44, 0x57, 0x7a, 0x67, 0x56, 0x47, 0x6b, 0x57, 0x71, 0x51, 0x50, 0x61, 0x62, 0x75, 0x6d, 0x44, 0x6b, 0x33, 0x46, 0x32, 0x0a, 0x78, 0x6d, 0x6d, 0x46, 0x67, 0x68, 0x63, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x0a, 0x46, 0x49, 0x2f, 0x77, 0x53, 0x33, 0x2b, 0x6f, 0x4c, 0x6b, 0x55, 0x6b, 0x72, 0x6b, 0x31, 0x51, 0x2b, 0x6d, 0x4f, 0x61, 0x69, 0x39, 0x37, 0x69, 0x33, 0x52, 0x75, 0x38, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x42, 0x4c, 0x51, 0x4e, 0x76, 0x41, 0x55, 0x4b, 0x72, 0x2b, 0x79, 0x41, 0x7a, 0x76, 0x39, 0x35, 0x5a, 0x55, 0x52, 0x55, 0x6d, 0x37, 0x0a, 0x6c, 0x67, 0x41, 0x4a, 0x51, 0x61, 0x79, 0x7a, 0x45, 0x34, 0x61, 0x47, 0x4b, 0x41, 0x63, 0x7a, 0x79, 0x6d, 0x76, 0x6d, 0x64, 0x4c, 0x6d, 0x36, 0x41, 0x43, 0x32, 0x75, 0x70, 0x41, 0x72, 0x54, 0x39, 0x66, 0x48, 0x78, 0x44, 0x34, 0x71, 0x2f, 0x63, 0x32, 0x64, 0x4b, 0x67, 0x38, 0x64, 0x45, 0x65, 0x33, 0x6a, 0x67, 0x72, 0x32, 0x35, 0x73, 0x62, 0x77, 0x4d, 0x70, 0x6a, 0x6a, 0x4d, 0x35, 0x52, 0x63, 0x4f, 0x4f, 0x35, 0x4c, 0x6c, 0x58, 0x62, 0x4b, 0x72, 0x38, 0x0a, 0x45, 0x70, 0x62, 0x73, 0x55, 0x38, 0x59, 0x74, 0x35, 0x43, 0x52, 0x73, 0x75, 0x5a, 0x52, 0x6a, 0x2b, 0x39, 0x78, 0x54, 0x61, 0x47, 0x64, 0x57, 0x50, 0x6f, 0x4f, 0x34, 0x7a, 0x7a, 0x55, 0x68, 0x77, 0x38, 0x6c, 0x6f, 0x2f, 0x73, 0x37, 0x61, 0x77, 0x6c, 0x4f, 0x71, 0x7a, 0x4a, 0x43, 0x4b, 0x36, 0x66, 0x42, 0x64, 0x52, 0x6f, 0x79, 0x56, 0x33, 0x58, 0x70, 0x59, 0x4b, 0x42, 0x6f, 0x76, 0x48, 0x64, 0x37, 0x4e, 0x41, 0x44, 0x64, 0x42, 0x6a, 0x2b, 0x31, 0x45, 0x0a, 0x62, 0x64, 0x64, 0x54, 0x4b, 0x4a, 0x64, 0x2b, 0x38, 0x32, 0x63, 0x45, 0x48, 0x68, 0x58, 0x58, 0x69, 0x70, 0x61, 0x30, 0x30, 0x39, 0x35, 0x4d, 0x4a, 0x36, 0x52, 0x4d, 0x47, 0x33, 0x4e, 0x7a, 0x64, 0x76, 0x51, 0x58, 0x6d, 0x63, 0x49, 0x66, 0x65, 0x67, 0x37, 0x6a, 0x4c, 0x51, 0x69, 0x74, 0x43, 0x68, 0x77, 0x73, 0x2f, 0x7a, 0x79, 0x72, 0x56, 0x51, 0x34, 0x50, 0x6b, 0x58, 0x34, 0x32, 0x36, 0x38, 0x4e, 0x58, 0x53, 0x62, 0x37, 0x68, 0x4c, 0x69, 0x31, 0x38, 0x0a, 0x59, 0x49, 0x76, 0x44, 0x51, 0x56, 0x45, 0x54, 0x49, 0x35, 0x33, 0x4f, 0x39, 0x7a, 0x4a, 0x72, 0x6c, 0x41, 0x47, 0x6f, 0x6d, 0x65, 0x63, 0x73, 0x4d, 0x78, 0x38, 0x36, 0x4f, 0x79, 0x58, 0x53, 0x68, 0x6b, 0x44, 0x4f, 0x4f, 0x79, 0x79, 0x47, 0x65, 0x4d, 0x6c, 0x68, 0x4c, 0x78, 0x53, 0x36, 0x37, 0x74, 0x74, 0x56, 0x62, 0x39, 0x2b, 0x45, 0x37, 0x67, 0x55, 0x4a, 0x54, 0x62, 0x30, 0x6f, 0x32, 0x48, 0x4c, 0x4f, 0x30, 0x32, 0x4a, 0x51, 0x5a, 0x52, 0x37, 0x72, 0x0a, 0x6b, 0x70, 0x65, 0x44, 0x4d, 0x64, 0x6d, 0x7a, 0x74, 0x63, 0x70, 0x48, 0x57, 0x44, 0x39, 0x66, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x49, 0x7a, 0x65, 0x6e, 0x70, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x38, 0x54, 0x43, 0x43, 0x41, 0x39, 0x6d, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x41, 0x4c, 0x43, 0x33, 0x57, 0x68, 0x5a, 0x49, 0x58, 0x37, 0x2f, 0x68, 0x79, 0x2f, 0x57, 0x4c, 0x31, 0x78, 0x6e, 0x6d, 0x66, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x41, 0x34, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x46, 0x55, 0x7a, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x4c, 0x53, 0x56, 0x70, 0x46, 0x54, 0x6c, 0x42, 0x46, 0x49, 0x46, 0x4d, 0x75, 0x51, 0x53, 0x34, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x43, 0x6b, 0x6c, 0x36, 0x5a, 0x57, 0x35, 0x77, 0x5a, 0x53, 0x35, 0x6a, 0x62, 0x32, 0x30, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x63, 0x78, 0x4d, 0x6a, 0x45, 0x7a, 0x0a, 0x4d, 0x54, 0x4d, 0x77, 0x4f, 0x44, 0x49, 0x34, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x63, 0x78, 0x4d, 0x6a, 0x45, 0x7a, 0x4d, 0x44, 0x67, 0x79, 0x4e, 0x7a, 0x49, 0x31, 0x57, 0x6a, 0x41, 0x34, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x46, 0x55, 0x7a, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x4c, 0x53, 0x56, 0x70, 0x46, 0x54, 0x6c, 0x42, 0x46, 0x49, 0x46, 0x4d, 0x75, 0x0a, 0x51, 0x53, 0x34, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x43, 0x6b, 0x6c, 0x36, 0x5a, 0x57, 0x35, 0x77, 0x5a, 0x53, 0x35, 0x6a, 0x62, 0x32, 0x30, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x44, 0x4a, 0x0a, 0x30, 0x33, 0x72, 0x4b, 0x44, 0x78, 0x36, 0x73, 0x70, 0x34, 0x62, 0x6f, 0x46, 0x6d, 0x56, 0x71, 0x73, 0x63, 0x49, 0x62, 0x52, 0x54, 0x4a, 0x78, 0x6c, 0x64, 0x6e, 0x2b, 0x45, 0x46, 0x76, 0x4d, 0x72, 0x2b, 0x65, 0x6c, 0x65, 0x51, 0x47, 0x50, 0x69, 0x63, 0x50, 0x4b, 0x38, 0x6c, 0x56, 0x78, 0x39, 0x33, 0x65, 0x2b, 0x64, 0x35, 0x54, 0x7a, 0x63, 0x71, 0x51, 0x73, 0x52, 0x4e, 0x69, 0x65, 0x6b, 0x70, 0x73, 0x55, 0x4f, 0x71, 0x48, 0x6e, 0x4a, 0x4a, 0x41, 0x4b, 0x0a, 0x43, 0x6c, 0x61, 0x4f, 0x78, 0x64, 0x67, 0x6d, 0x6c, 0x4f, 0x48, 0x5a, 0x53, 0x4f, 0x45, 0x74, 0x50, 0x74, 0x6f, 0x4b, 0x63, 0x74, 0x32, 0x6a, 0x6d, 0x52, 0x58, 0x61, 0x67, 0x61, 0x4b, 0x48, 0x39, 0x48, 0x74, 0x75, 0x4a, 0x6e, 0x65, 0x4a, 0x57, 0x4b, 0x33, 0x57, 0x36, 0x77, 0x79, 0x79, 0x51, 0x58, 0x70, 0x7a, 0x62, 0x6d, 0x33, 0x62, 0x65, 0x6e, 0x68, 0x42, 0x36, 0x51, 0x69, 0x49, 0x45, 0x6e, 0x36, 0x48, 0x4c, 0x6d, 0x59, 0x52, 0x59, 0x32, 0x78, 0x55, 0x0a, 0x2b, 0x7a, 0x79, 0x64, 0x63, 0x73, 0x43, 0x38, 0x4c, 0x76, 0x2f, 0x43, 0x74, 0x39, 0x30, 0x4e, 0x64, 0x75, 0x4d, 0x36, 0x31, 0x2f, 0x65, 0x30, 0x61, 0x4c, 0x36, 0x69, 0x39, 0x65, 0x4f, 0x42, 0x62, 0x73, 0x46, 0x47, 0x62, 0x31, 0x32, 0x4e, 0x34, 0x45, 0x33, 0x47, 0x56, 0x46, 0x57, 0x4a, 0x47, 0x6a, 0x4d, 0x78, 0x43, 0x72, 0x46, 0x58, 0x75, 0x61, 0x4f, 0x4b, 0x6d, 0x4d, 0x50, 0x73, 0x4f, 0x7a, 0x54, 0x46, 0x6c, 0x55, 0x46, 0x70, 0x66, 0x6e, 0x58, 0x43, 0x0a, 0x50, 0x43, 0x44, 0x46, 0x59, 0x62, 0x70, 0x52, 0x52, 0x36, 0x41, 0x67, 0x6b, 0x4a, 0x4f, 0x68, 0x6b, 0x45, 0x76, 0x7a, 0x54, 0x6e, 0x79, 0x46, 0x52, 0x56, 0x53, 0x61, 0x30, 0x51, 0x55, 0x6d, 0x51, 0x62, 0x43, 0x31, 0x54, 0x52, 0x30, 0x7a, 0x76, 0x73, 0x51, 0x44, 0x79, 0x43, 0x56, 0x38, 0x77, 0x58, 0x44, 0x62, 0x4f, 0x2f, 0x51, 0x4a, 0x4c, 0x56, 0x51, 0x6e, 0x53, 0x4b, 0x77, 0x76, 0x34, 0x63, 0x53, 0x73, 0x50, 0x73, 0x6a, 0x4c, 0x6b, 0x6b, 0x78, 0x54, 0x0a, 0x4f, 0x54, 0x63, 0x6a, 0x37, 0x4e, 0x4d, 0x42, 0x2b, 0x65, 0x41, 0x4a, 0x52, 0x45, 0x31, 0x4e, 0x5a, 0x4d, 0x44, 0x68, 0x44, 0x56, 0x71, 0x48, 0x49, 0x72, 0x79, 0x74, 0x47, 0x36, 0x50, 0x2b, 0x4a, 0x72, 0x55, 0x56, 0x38, 0x36, 0x66, 0x38, 0x68, 0x42, 0x6e, 0x70, 0x37, 0x4b, 0x47, 0x49, 0x74, 0x45, 0x52, 0x70, 0x68, 0x49, 0x50, 0x7a, 0x69, 0x64, 0x46, 0x30, 0x42, 0x71, 0x6e, 0x4d, 0x43, 0x39, 0x62, 0x43, 0x33, 0x69, 0x65, 0x46, 0x55, 0x43, 0x62, 0x4b, 0x0a, 0x46, 0x37, 0x6a, 0x4a, 0x65, 0x6f, 0x64, 0x57, 0x4c, 0x42, 0x6f, 0x42, 0x48, 0x6d, 0x79, 0x2b, 0x45, 0x36, 0x30, 0x51, 0x72, 0x4c, 0x55, 0x6b, 0x39, 0x54, 0x69, 0x52, 0x6f, 0x64, 0x5a, 0x4c, 0x32, 0x76, 0x47, 0x37, 0x30, 0x74, 0x35, 0x48, 0x74, 0x66, 0x47, 0x38, 0x67, 0x66, 0x5a, 0x5a, 0x61, 0x38, 0x38, 0x5a, 0x55, 0x2b, 0x6d, 0x4e, 0x46, 0x63, 0x74, 0x4b, 0x79, 0x36, 0x6c, 0x76, 0x52, 0x4f, 0x55, 0x62, 0x51, 0x63, 0x2f, 0x68, 0x68, 0x71, 0x66, 0x4b, 0x0a, 0x30, 0x47, 0x71, 0x66, 0x76, 0x45, 0x79, 0x4e, 0x42, 0x6a, 0x4e, 0x61, 0x6f, 0x6f, 0x58, 0x6c, 0x6b, 0x44, 0x57, 0x67, 0x59, 0x6c, 0x77, 0x57, 0x54, 0x76, 0x44, 0x6a, 0x6f, 0x76, 0x6f, 0x44, 0x47, 0x72, 0x51, 0x73, 0x63, 0x62, 0x4e, 0x59, 0x4c, 0x4e, 0x35, 0x37, 0x43, 0x39, 0x73, 0x61, 0x44, 0x2b, 0x76, 0x65, 0x49, 0x52, 0x38, 0x47, 0x64, 0x77, 0x59, 0x44, 0x73, 0x4d, 0x6e, 0x76, 0x6d, 0x66, 0x7a, 0x41, 0x75, 0x55, 0x38, 0x4c, 0x68, 0x69, 0x6a, 0x2b, 0x0a, 0x30, 0x72, 0x6e, 0x71, 0x34, 0x39, 0x71, 0x6c, 0x77, 0x30, 0x64, 0x70, 0x45, 0x75, 0x44, 0x62, 0x38, 0x50, 0x59, 0x5a, 0x69, 0x2b, 0x31, 0x37, 0x63, 0x4e, 0x63, 0x43, 0x31, 0x75, 0x32, 0x48, 0x47, 0x43, 0x67, 0x73, 0x42, 0x43, 0x52, 0x4d, 0x64, 0x2b, 0x52, 0x49, 0x69, 0x68, 0x72, 0x47, 0x4f, 0x35, 0x72, 0x55, 0x44, 0x38, 0x72, 0x36, 0x64, 0x64, 0x49, 0x42, 0x51, 0x46, 0x71, 0x4e, 0x65, 0x62, 0x2b, 0x4c, 0x7a, 0x30, 0x76, 0x50, 0x71, 0x68, 0x62, 0x42, 0x0a, 0x6c, 0x65, 0x53, 0x74, 0x54, 0x49, 0x6f, 0x2b, 0x46, 0x35, 0x48, 0x55, 0x73, 0x57, 0x4c, 0x6c, 0x67, 0x75, 0x57, 0x41, 0x42, 0x4b, 0x51, 0x44, 0x66, 0x6f, 0x32, 0x2f, 0x32, 0x6e, 0x2b, 0x69, 0x44, 0x35, 0x64, 0x50, 0x44, 0x4e, 0x4d, 0x4e, 0x2b, 0x39, 0x66, 0x52, 0x35, 0x58, 0x4a, 0x2b, 0x48, 0x4d, 0x68, 0x33, 0x2f, 0x31, 0x75, 0x61, 0x44, 0x37, 0x65, 0x75, 0x42, 0x55, 0x62, 0x6c, 0x38, 0x61, 0x67, 0x57, 0x37, 0x45, 0x65, 0x6b, 0x46, 0x77, 0x49, 0x44, 0x0a, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x34, 0x48, 0x32, 0x4d, 0x49, 0x48, 0x7a, 0x4d, 0x49, 0x47, 0x77, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x45, 0x45, 0x67, 0x61, 0x67, 0x77, 0x67, 0x61, 0x57, 0x42, 0x44, 0x32, 0x6c, 0x75, 0x5a, 0x6d, 0x39, 0x41, 0x61, 0x58, 0x70, 0x6c, 0x62, 0x6e, 0x42, 0x6c, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x61, 0x53, 0x42, 0x6b, 0x54, 0x43, 0x42, 0x6a, 0x6a, 0x46, 0x48, 0x4d, 0x45, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x2b, 0x0a, 0x53, 0x56, 0x70, 0x46, 0x54, 0x6c, 0x42, 0x46, 0x49, 0x46, 0x4d, 0x75, 0x51, 0x53, 0x34, 0x67, 0x4c, 0x53, 0x42, 0x44, 0x53, 0x55, 0x59, 0x67, 0x51, 0x54, 0x41, 0x78, 0x4d, 0x7a, 0x4d, 0x33, 0x4d, 0x6a, 0x59, 0x77, 0x4c, 0x56, 0x4a, 0x4e, 0x5a, 0x58, 0x4a, 0x6a, 0x4c, 0x6c, 0x5a, 0x70, 0x64, 0x47, 0x39, 0x79, 0x61, 0x57, 0x45, 0x74, 0x52, 0x32, 0x46, 0x7a, 0x64, 0x47, 0x56, 0x70, 0x65, 0x69, 0x42, 0x55, 0x4d, 0x54, 0x41, 0x31, 0x4e, 0x53, 0x42, 0x47, 0x0a, 0x4e, 0x6a, 0x49, 0x67, 0x55, 0x7a, 0x67, 0x78, 0x51, 0x7a, 0x42, 0x42, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6b, 0x4d, 0x4f, 0x6b, 0x46, 0x32, 0x5a, 0x47, 0x45, 0x67, 0x5a, 0x47, 0x56, 0x73, 0x49, 0x45, 0x31, 0x6c, 0x5a, 0x47, 0x6c, 0x30, 0x5a, 0x58, 0x4a, 0x79, 0x59, 0x57, 0x35, 0x6c, 0x62, 0x79, 0x42, 0x46, 0x64, 0x47, 0x39, 0x79, 0x59, 0x6d, 0x6c, 0x6b, 0x5a, 0x57, 0x45, 0x67, 0x4d, 0x54, 0x51, 0x67, 0x4c, 0x53, 0x41, 0x77, 0x4d, 0x54, 0x41, 0x78, 0x0a, 0x4d, 0x43, 0x42, 0x57, 0x61, 0x58, 0x52, 0x76, 0x63, 0x6d, 0x6c, 0x68, 0x4c, 0x55, 0x64, 0x68, 0x63, 0x33, 0x52, 0x6c, 0x61, 0x58, 0x6f, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x0a, 0x42, 0x42, 0x59, 0x45, 0x46, 0x42, 0x30, 0x63, 0x5a, 0x51, 0x36, 0x6f, 0x38, 0x69, 0x56, 0x37, 0x74, 0x4a, 0x48, 0x50, 0x35, 0x4c, 0x47, 0x78, 0x35, 0x72, 0x31, 0x56, 0x64, 0x47, 0x77, 0x46, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x41, 0x51, 0x42, 0x34, 0x70, 0x67, 0x77, 0x57, 0x53, 0x70, 0x39, 0x4d, 0x69, 0x44, 0x72, 0x41, 0x79, 0x77, 0x36, 0x6c, 0x0a, 0x46, 0x6e, 0x32, 0x66, 0x75, 0x55, 0x68, 0x66, 0x47, 0x49, 0x38, 0x4e, 0x59, 0x6a, 0x62, 0x32, 0x7a, 0x52, 0x6c, 0x72, 0x72, 0x4b, 0x76, 0x56, 0x39, 0x70, 0x46, 0x39, 0x72, 0x6e, 0x48, 0x7a, 0x50, 0x37, 0x4d, 0x4f, 0x65, 0x49, 0x57, 0x62, 0x6c, 0x61, 0x51, 0x6e, 0x49, 0x55, 0x64, 0x43, 0x53, 0x6e, 0x78, 0x49, 0x4f, 0x76, 0x56, 0x46, 0x66, 0x4c, 0x4d, 0x4d, 0x6a, 0x6c, 0x46, 0x34, 0x72, 0x4a, 0x55, 0x54, 0x33, 0x73, 0x62, 0x39, 0x66, 0x62, 0x67, 0x61, 0x0a, 0x6b, 0x45, 0x79, 0x72, 0x6b, 0x67, 0x50, 0x48, 0x37, 0x55, 0x49, 0x42, 0x7a, 0x67, 0x2f, 0x59, 0x73, 0x66, 0x71, 0x69, 0x6b, 0x75, 0x46, 0x67, 0x62, 0x61, 0x35, 0x36, 0x61, 0x77, 0x6d, 0x71, 0x78, 0x69, 0x6e, 0x75, 0x61, 0x45, 0x6c, 0x6e, 0x4d, 0x49, 0x41, 0x6b, 0x65, 0x6a, 0x45, 0x57, 0x4f, 0x56, 0x74, 0x2b, 0x38, 0x52, 0x77, 0x75, 0x33, 0x57, 0x77, 0x4a, 0x72, 0x66, 0x49, 0x78, 0x77, 0x59, 0x4a, 0x4f, 0x75, 0x62, 0x76, 0x35, 0x76, 0x72, 0x38, 0x71, 0x0a, 0x68, 0x54, 0x2f, 0x41, 0x51, 0x4b, 0x4d, 0x36, 0x57, 0x66, 0x78, 0x5a, 0x53, 0x7a, 0x77, 0x6f, 0x4a, 0x4e, 0x75, 0x30, 0x46, 0x58, 0x57, 0x75, 0x44, 0x59, 0x69, 0x36, 0x4c, 0x6e, 0x50, 0x41, 0x76, 0x56, 0x69, 0x48, 0x35, 0x55, 0x4c, 0x79, 0x36, 0x31, 0x37, 0x75, 0x48, 0x6a, 0x41, 0x69, 0x6d, 0x63, 0x73, 0x33, 0x30, 0x63, 0x51, 0x68, 0x62, 0x49, 0x48, 0x73, 0x76, 0x6d, 0x30, 0x6d, 0x35, 0x68, 0x7a, 0x6b, 0x51, 0x69, 0x43, 0x65, 0x52, 0x37, 0x43, 0x73, 0x0a, 0x67, 0x31, 0x6c, 0x77, 0x4c, 0x44, 0x58, 0x57, 0x72, 0x7a, 0x59, 0x30, 0x74, 0x4d, 0x30, 0x37, 0x2b, 0x44, 0x4b, 0x6f, 0x37, 0x2b, 0x4e, 0x34, 0x69, 0x66, 0x75, 0x4e, 0x52, 0x53, 0x7a, 0x61, 0x6e, 0x4c, 0x68, 0x2b, 0x51, 0x42, 0x78, 0x68, 0x35, 0x7a, 0x36, 0x69, 0x6b, 0x69, 0x78, 0x4c, 0x38, 0x73, 0x33, 0x36, 0x6d, 0x4c, 0x59, 0x70, 0x2f, 0x2f, 0x50, 0x79, 0x65, 0x36, 0x6b, 0x66, 0x4c, 0x71, 0x43, 0x54, 0x56, 0x79, 0x76, 0x65, 0x68, 0x51, 0x50, 0x35, 0x0a, 0x61, 0x54, 0x66, 0x4c, 0x6e, 0x6e, 0x68, 0x71, 0x42, 0x62, 0x54, 0x46, 0x4d, 0x58, 0x69, 0x4a, 0x37, 0x48, 0x71, 0x6e, 0x68, 0x65, 0x47, 0x35, 0x65, 0x7a, 0x7a, 0x65, 0x76, 0x68, 0x35, 0x35, 0x68, 0x4d, 0x36, 0x66, 0x63, 0x41, 0x35, 0x5a, 0x77, 0x6a, 0x55, 0x75, 0x6b, 0x43, 0x6f, 0x78, 0x32, 0x65, 0x52, 0x46, 0x65, 0x6b, 0x47, 0x6b, 0x4c, 0x68, 0x4f, 0x62, 0x4e, 0x41, 0x35, 0x6d, 0x65, 0x30, 0x6d, 0x72, 0x5a, 0x4a, 0x66, 0x51, 0x52, 0x73, 0x4e, 0x35, 0x0a, 0x6e, 0x58, 0x4a, 0x51, 0x59, 0x36, 0x61, 0x59, 0x57, 0x77, 0x61, 0x39, 0x53, 0x47, 0x33, 0x59, 0x4f, 0x59, 0x4e, 0x77, 0x36, 0x44, 0x58, 0x77, 0x42, 0x64, 0x47, 0x71, 0x76, 0x4f, 0x50, 0x62, 0x79, 0x41, 0x4c, 0x71, 0x66, 0x50, 0x32, 0x43, 0x32, 0x73, 0x4a, 0x62, 0x55, 0x6a, 0x57, 0x75, 0x6d, 0x44, 0x71, 0x74, 0x75, 0x6a, 0x57, 0x54, 0x49, 0x36, 0x63, 0x66, 0x53, 0x4e, 0x30, 0x31, 0x52, 0x70, 0x69, 0x79, 0x45, 0x47, 0x6a, 0x6b, 0x70, 0x54, 0x48, 0x43, 0x0a, 0x43, 0x6c, 0x67, 0x75, 0x47, 0x59, 0x45, 0x51, 0x79, 0x56, 0x42, 0x31, 0x2f, 0x4f, 0x70, 0x61, 0x46, 0x73, 0x34, 0x52, 0x31, 0x2b, 0x37, 0x76, 0x55, 0x49, 0x67, 0x74, 0x59, 0x66, 0x38, 0x2f, 0x51, 0x6e, 0x4d, 0x46, 0x6c, 0x45, 0x50, 0x56, 0x6a, 0x6a, 0x78, 0x4f, 0x41, 0x54, 0x6f, 0x5a, 0x70, 0x52, 0x39, 0x47, 0x54, 0x6e, 0x66, 0x51, 0x58, 0x65, 0x57, 0x42, 0x49, 0x69, 0x47, 0x48, 0x2f, 0x70, 0x52, 0x39, 0x68, 0x4e, 0x69, 0x54, 0x72, 0x64, 0x5a, 0x6f, 0x0a, 0x51, 0x30, 0x69, 0x79, 0x32, 0x2b, 0x74, 0x7a, 0x4a, 0x4f, 0x65, 0x52, 0x66, 0x31, 0x53, 0x6b, 0x74, 0x6f, 0x41, 0x2b, 0x6e, 0x61, 0x4d, 0x38, 0x54, 0x48, 0x4c, 0x43, 0x56, 0x38, 0x53, 0x67, 0x31, 0x4d, 0x77, 0x34, 0x4a, 0x38, 0x37, 0x56, 0x42, 0x70, 0x36, 0x69, 0x53, 0x4e, 0x6e, 0x70, 0x6e, 0x38, 0x36, 0x43, 0x63, 0x44, 0x61, 0x54, 0x6d, 0x6a, 0x76, 0x66, 0x6c, 0x69, 0x48, 0x6a, 0x57, 0x62, 0x63, 0x4d, 0x32, 0x70, 0x45, 0x33, 0x38, 0x50, 0x31, 0x5a, 0x0a, 0x57, 0x72, 0x4f, 0x5a, 0x79, 0x47, 0x6c, 0x73, 0x51, 0x79, 0x59, 0x42, 0x4e, 0x57, 0x4e, 0x67, 0x56, 0x59, 0x6b, 0x44, 0x4f, 0x6e, 0x58, 0x59, 0x75, 0x6b, 0x72, 0x5a, 0x56, 0x50, 0x2f, 0x75, 0x33, 0x6f, 0x44, 0x59, 0x4c, 0x64, 0x45, 0x34, 0x31, 0x56, 0x34, 0x74, 0x43, 0x35, 0x68, 0x39, 0x50, 0x6d, 0x7a, 0x62, 0x2f, 0x43, 0x61, 0x49, 0x78, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 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, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x78, 0x54, 0x43, 0x43, 0x41, 0x71, 0x32, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x43, 0x42, 0x67, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x0a, 0x42, 0x30, 0x46, 0x79, 0x61, 0x58, 0x70, 0x76, 0x62, 0x6d, 0x45, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x43, 0x6c, 0x4e, 0x6a, 0x62, 0x33, 0x52, 0x30, 0x63, 0x32, 0x52, 0x68, 0x62, 0x47, 0x55, 0x78, 0x47, 0x6a, 0x41, 0x59, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x45, 0x55, 0x64, 0x76, 0x52, 0x47, 0x46, 0x6b, 0x5a, 0x48, 0x6b, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x0a, 0x4d, 0x54, 0x45, 0x77, 0x4c, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x68, 0x48, 0x62, 0x79, 0x42, 0x45, 0x59, 0x57, 0x52, 0x6b, 0x65, 0x53, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x6c, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x41, 0x74, 0x49, 0x45, 0x63, 0x79, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41, 0x35, 0x0a, 0x4d, 0x44, 0x6b, 0x77, 0x4d, 0x54, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x33, 0x4d, 0x54, 0x49, 0x7a, 0x4d, 0x54, 0x49, 0x7a, 0x4e, 0x54, 0x6b, 0x31, 0x4f, 0x56, 0x6f, 0x77, 0x67, 0x59, 0x4d, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x49, 0x45, 0x77, 0x64, 0x42, 0x63, 0x6d, 0x6c, 0x36, 0x0a, 0x62, 0x32, 0x35, 0x68, 0x4d, 0x52, 0x4d, 0x77, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x45, 0x77, 0x70, 0x54, 0x59, 0x32, 0x39, 0x30, 0x64, 0x48, 0x4e, 0x6b, 0x59, 0x57, 0x78, 0x6c, 0x4d, 0x52, 0x6f, 0x77, 0x47, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x46, 0x48, 0x62, 0x30, 0x52, 0x68, 0x5a, 0x47, 0x52, 0x35, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x53, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x6a, 0x45, 0x78, 0x4d, 0x43, 0x38, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x6f, 0x52, 0x32, 0x38, 0x67, 0x52, 0x47, 0x46, 0x6b, 0x5a, 0x48, 0x6b, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x5a, 0x53, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x4c, 0x53, 0x42, 0x48, 0x4d, 0x6a, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x0a, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4c, 0x39, 0x78, 0x59, 0x67, 0x6a, 0x78, 0x2b, 0x6c, 0x6b, 0x30, 0x39, 0x78, 0x76, 0x4a, 0x47, 0x4b, 0x50, 0x33, 0x67, 0x45, 0x6c, 0x59, 0x36, 0x53, 0x4b, 0x44, 0x45, 0x36, 0x62, 0x46, 0x49, 0x45, 0x4d, 0x42, 0x4f, 0x34, 0x54, 0x78, 0x35, 0x6f, 0x56, 0x4a, 0x6e, 0x79, 0x66, 0x71, 0x0a, 0x39, 0x6f, 0x51, 0x62, 0x54, 0x71, 0x43, 0x30, 0x32, 0x33, 0x43, 0x59, 0x78, 0x7a, 0x49, 0x42, 0x73, 0x51, 0x55, 0x2b, 0x42, 0x30, 0x37, 0x75, 0x39, 0x50, 0x70, 0x50, 0x4c, 0x31, 0x6b, 0x77, 0x49, 0x75, 0x65, 0x72, 0x47, 0x56, 0x5a, 0x72, 0x34, 0x6f, 0x41, 0x48, 0x2f, 0x50, 0x4d, 0x57, 0x64, 0x59, 0x41, 0x35, 0x55, 0x58, 0x76, 0x6c, 0x2b, 0x54, 0x57, 0x32, 0x64, 0x45, 0x36, 0x70, 0x6a, 0x59, 0x49, 0x54, 0x35, 0x4c, 0x59, 0x2f, 0x71, 0x51, 0x4f, 0x44, 0x0a, 0x2b, 0x71, 0x4b, 0x2b, 0x69, 0x68, 0x56, 0x71, 0x66, 0x39, 0x34, 0x4c, 0x77, 0x37, 0x59, 0x5a, 0x46, 0x41, 0x58, 0x4b, 0x36, 0x73, 0x4f, 0x6f, 0x42, 0x4a, 0x51, 0x37, 0x52, 0x6e, 0x77, 0x79, 0x44, 0x66, 0x4d, 0x41, 0x5a, 0x69, 0x4c, 0x49, 0x6a, 0x57, 0x6c, 0x74, 0x4e, 0x6f, 0x77, 0x52, 0x47, 0x4c, 0x66, 0x54, 0x73, 0x68, 0x78, 0x67, 0x74, 0x44, 0x6a, 0x36, 0x41, 0x6f, 0x7a, 0x4f, 0x30, 0x39, 0x31, 0x47, 0x42, 0x39, 0x34, 0x4b, 0x50, 0x75, 0x74, 0x64, 0x0a, 0x66, 0x4d, 0x68, 0x38, 0x2b, 0x37, 0x41, 0x72, 0x55, 0x36, 0x53, 0x53, 0x59, 0x6d, 0x6c, 0x52, 0x4a, 0x51, 0x56, 0x68, 0x47, 0x6b, 0x53, 0x42, 0x6a, 0x43, 0x79, 0x70, 0x51, 0x35, 0x59, 0x6a, 0x33, 0x36, 0x77, 0x36, 0x67, 0x5a, 0x6f, 0x4f, 0x4b, 0x63, 0x55, 0x63, 0x71, 0x65, 0x6c, 0x64, 0x48, 0x72, 0x61, 0x65, 0x6e, 0x6a, 0x41, 0x4b, 0x4f, 0x63, 0x37, 0x78, 0x69, 0x49, 0x44, 0x37, 0x53, 0x31, 0x33, 0x4d, 0x4d, 0x75, 0x79, 0x46, 0x59, 0x6b, 0x4d, 0x6c, 0x0a, 0x4e, 0x41, 0x4a, 0x57, 0x4a, 0x77, 0x47, 0x52, 0x74, 0x44, 0x74, 0x77, 0x4b, 0x6a, 0x39, 0x75, 0x73, 0x65, 0x69, 0x63, 0x69, 0x41, 0x46, 0x39, 0x6e, 0x39, 0x54, 0x35, 0x32, 0x31, 0x4e, 0x74, 0x59, 0x4a, 0x32, 0x2f, 0x4c, 0x4f, 0x64, 0x59, 0x71, 0x37, 0x68, 0x66, 0x52, 0x76, 0x7a, 0x4f, 0x78, 0x42, 0x73, 0x44, 0x50, 0x41, 0x6e, 0x72, 0x53, 0x54, 0x46, 0x63, 0x61, 0x55, 0x61, 0x7a, 0x34, 0x45, 0x63, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x0a, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x44, 0x71, 0x61, 0x68, 0x51, 0x63, 0x51, 0x5a, 0x79, 0x69, 0x32, 0x37, 0x2f, 0x61, 0x39, 0x0a, 0x42, 0x55, 0x46, 0x75, 0x49, 0x4d, 0x47, 0x55, 0x32, 0x67, 0x2f, 0x65, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x43, 0x5a, 0x32, 0x31, 0x31, 0x35, 0x31, 0x66, 0x6d, 0x58, 0x57, 0x57, 0x63, 0x44, 0x59, 0x66, 0x46, 0x2b, 0x4f, 0x77, 0x59, 0x78, 0x64, 0x53, 0x32, 0x68, 0x49, 0x49, 0x35, 0x50, 0x5a, 0x59, 0x65, 0x30, 0x39, 0x36, 0x61, 0x63, 0x0a, 0x76, 0x4e, 0x6a, 0x70, 0x4c, 0x39, 0x44, 0x62, 0x57, 0x75, 0x37, 0x50, 0x64, 0x49, 0x78, 0x7a, 0x74, 0x44, 0x68, 0x43, 0x32, 0x67, 0x56, 0x37, 0x2b, 0x41, 0x4a, 0x31, 0x75, 0x50, 0x32, 0x6c, 0x73, 0x64, 0x65, 0x75, 0x39, 0x74, 0x66, 0x65, 0x45, 0x38, 0x74, 0x54, 0x45, 0x48, 0x36, 0x4b, 0x52, 0x74, 0x47, 0x58, 0x2b, 0x72, 0x63, 0x75, 0x4b, 0x78, 0x47, 0x72, 0x6b, 0x4c, 0x41, 0x6e, 0x67, 0x50, 0x6e, 0x6f, 0x6e, 0x31, 0x72, 0x70, 0x4e, 0x35, 0x2b, 0x72, 0x0a, 0x35, 0x4e, 0x39, 0x73, 0x73, 0x34, 0x55, 0x58, 0x6e, 0x54, 0x33, 0x5a, 0x4a, 0x45, 0x39, 0x35, 0x6b, 0x54, 0x58, 0x57, 0x58, 0x77, 0x54, 0x72, 0x67, 0x49, 0x4f, 0x72, 0x6d, 0x67, 0x49, 0x74, 0x74, 0x52, 0x44, 0x30, 0x32, 0x4a, 0x44, 0x48, 0x42, 0x48, 0x4e, 0x41, 0x37, 0x58, 0x49, 0x6c, 0x6f, 0x4b, 0x6d, 0x66, 0x37, 0x4a, 0x36, 0x72, 0x61, 0x42, 0x4b, 0x5a, 0x56, 0x38, 0x61, 0x50, 0x45, 0x6a, 0x6f, 0x4a, 0x70, 0x4c, 0x31, 0x45, 0x2f, 0x51, 0x59, 0x56, 0x0a, 0x4e, 0x38, 0x47, 0x62, 0x35, 0x44, 0x4b, 0x6a, 0x37, 0x54, 0x6a, 0x6f, 0x32, 0x47, 0x54, 0x7a, 0x4c, 0x48, 0x34, 0x55, 0x2f, 0x41, 0x4c, 0x71, 0x6e, 0x38, 0x33, 0x2f, 0x42, 0x32, 0x67, 0x58, 0x32, 0x79, 0x4b, 0x51, 0x4f, 0x43, 0x31, 0x36, 0x6a, 0x64, 0x46, 0x55, 0x38, 0x57, 0x6e, 0x6a, 0x58, 0x7a, 0x50, 0x4b, 0x65, 0x6a, 0x31, 0x37, 0x43, 0x75, 0x50, 0x4b, 0x66, 0x31, 0x38, 0x35, 0x35, 0x65, 0x4a, 0x31, 0x75, 0x73, 0x56, 0x32, 0x47, 0x44, 0x50, 0x4f, 0x0a, 0x4c, 0x50, 0x41, 0x76, 0x54, 0x4b, 0x33, 0x33, 0x73, 0x65, 0x66, 0x4f, 0x54, 0x36, 0x6a, 0x45, 0x6d, 0x30, 0x70, 0x55, 0x42, 0x73, 0x56, 0x2f, 0x66, 0x64, 0x55, 0x49, 0x44, 0x2b, 0x49, 0x63, 0x2f, 0x6e, 0x34, 0x58, 0x75, 0x4b, 0x78, 0x65, 0x39, 0x74, 0x51, 0x57, 0x73, 0x6b, 0x4d, 0x4a, 0x44, 0x45, 0x33, 0x32, 0x70, 0x32, 0x75, 0x30, 0x6d, 0x59, 0x52, 0x6c, 0x79, 0x6e, 0x71, 0x49, 0x34, 0x75, 0x4a, 0x45, 0x76, 0x6c, 0x7a, 0x33, 0x36, 0x68, 0x7a, 0x31, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 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, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x33, 0x54, 0x43, 0x43, 0x41, 0x73, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x43, 0x42, 0x6a, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x0a, 0x42, 0x30, 0x46, 0x79, 0x61, 0x58, 0x70, 0x76, 0x62, 0x6d, 0x45, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x43, 0x6c, 0x4e, 0x6a, 0x62, 0x33, 0x52, 0x30, 0x63, 0x32, 0x52, 0x68, 0x62, 0x47, 0x55, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x48, 0x46, 0x4e, 0x30, 0x59, 0x58, 0x4a, 0x6d, 0x61, 0x57, 0x56, 0x73, 0x5a, 0x43, 0x42, 0x55, 0x5a, 0x57, 0x4e, 0x6f, 0x62, 0x6d, 0x39, 0x73, 0x0a, 0x62, 0x32, 0x64, 0x70, 0x5a, 0x58, 0x4d, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4b, 0x56, 0x4e, 0x30, 0x59, 0x58, 0x4a, 0x6d, 0x61, 0x57, 0x56, 0x73, 0x5a, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x6c, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x0a, 0x65, 0x53, 0x41, 0x74, 0x49, 0x45, 0x63, 0x79, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41, 0x35, 0x4d, 0x44, 0x6b, 0x77, 0x4d, 0x54, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x33, 0x4d, 0x54, 0x49, 0x7a, 0x4d, 0x54, 0x49, 0x7a, 0x4e, 0x54, 0x6b, 0x31, 0x4f, 0x56, 0x6f, 0x77, 0x67, 0x59, 0x38, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x41, 0x77, 0x0a, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x49, 0x45, 0x77, 0x64, 0x42, 0x63, 0x6d, 0x6c, 0x36, 0x62, 0x32, 0x35, 0x68, 0x4d, 0x52, 0x4d, 0x77, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x45, 0x77, 0x70, 0x54, 0x59, 0x32, 0x39, 0x30, 0x64, 0x48, 0x4e, 0x6b, 0x59, 0x57, 0x78, 0x6c, 0x4d, 0x53, 0x55, 0x77, 0x49, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x78, 0x54, 0x64, 0x47, 0x46, 0x79, 0x5a, 0x6d, 0x6c, 0x6c, 0x62, 0x47, 0x51, 0x67, 0x0a, 0x56, 0x47, 0x56, 0x6a, 0x61, 0x47, 0x35, 0x76, 0x62, 0x47, 0x39, 0x6e, 0x61, 0x57, 0x56, 0x7a, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x4d, 0x54, 0x49, 0x77, 0x4d, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x6c, 0x54, 0x64, 0x47, 0x46, 0x79, 0x5a, 0x6d, 0x6c, 0x6c, 0x62, 0x47, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x5a, 0x53, 0x42, 0x42, 0x0a, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x4c, 0x53, 0x42, 0x48, 0x4d, 0x6a, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4c, 0x33, 0x74, 0x77, 0x51, 0x50, 0x38, 0x39, 0x6f, 0x2f, 0x38, 0x41, 0x72, 0x46, 0x76, 0x0a, 0x57, 0x35, 0x39, 0x49, 0x32, 0x5a, 0x31, 0x35, 0x34, 0x71, 0x4b, 0x33, 0x41, 0x32, 0x46, 0x57, 0x47, 0x4d, 0x4e, 0x48, 0x74, 0x74, 0x66, 0x4b, 0x50, 0x54, 0x55, 0x75, 0x69, 0x55, 0x50, 0x33, 0x6f, 0x57, 0x6d, 0x62, 0x33, 0x6f, 0x6f, 0x61, 0x2f, 0x52, 0x4d, 0x67, 0x6e, 0x4c, 0x52, 0x4a, 0x64, 0x7a, 0x49, 0x70, 0x56, 0x76, 0x32, 0x35, 0x37, 0x49, 0x7a, 0x64, 0x49, 0x76, 0x70, 0x79, 0x33, 0x43, 0x64, 0x68, 0x6c, 0x2b, 0x37, 0x32, 0x57, 0x6f, 0x54, 0x73, 0x0a, 0x62, 0x68, 0x6d, 0x35, 0x69, 0x53, 0x7a, 0x63, 0x68, 0x46, 0x76, 0x56, 0x64, 0x50, 0x74, 0x72, 0x58, 0x38, 0x57, 0x4a, 0x70, 0x52, 0x42, 0x53, 0x69, 0x55, 0x5a, 0x56, 0x39, 0x4c, 0x68, 0x31, 0x48, 0x4f, 0x5a, 0x2f, 0x35, 0x46, 0x53, 0x75, 0x53, 0x2f, 0x68, 0x56, 0x63, 0x6c, 0x63, 0x43, 0x47, 0x66, 0x67, 0x58, 0x63, 0x56, 0x6e, 0x72, 0x48, 0x69, 0x67, 0x48, 0x64, 0x4d, 0x57, 0x64, 0x53, 0x4c, 0x35, 0x73, 0x74, 0x50, 0x53, 0x6b, 0x73, 0x50, 0x4e, 0x6b, 0x0a, 0x4e, 0x33, 0x6d, 0x53, 0x77, 0x4f, 0x78, 0x47, 0x58, 0x6e, 0x2f, 0x68, 0x62, 0x56, 0x4e, 0x4d, 0x59, 0x71, 0x2f, 0x4e, 0x48, 0x77, 0x74, 0x6a, 0x75, 0x7a, 0x71, 0x64, 0x2b, 0x2f, 0x78, 0x35, 0x41, 0x4a, 0x68, 0x68, 0x64, 0x4d, 0x38, 0x6d, 0x67, 0x6b, 0x42, 0x6a, 0x38, 0x37, 0x4a, 0x79, 0x61, 0x68, 0x6b, 0x4e, 0x6d, 0x63, 0x72, 0x55, 0x44, 0x6e, 0x58, 0x4d, 0x4e, 0x2f, 0x75, 0x4c, 0x69, 0x63, 0x46, 0x5a, 0x38, 0x57, 0x4a, 0x2f, 0x58, 0x37, 0x4e, 0x66, 0x0a, 0x5a, 0x54, 0x44, 0x34, 0x70, 0x37, 0x64, 0x4e, 0x64, 0x6c, 0x6f, 0x65, 0x64, 0x6c, 0x34, 0x30, 0x77, 0x4f, 0x69, 0x57, 0x56, 0x70, 0x6d, 0x4b, 0x73, 0x2f, 0x42, 0x2f, 0x70, 0x4d, 0x32, 0x39, 0x33, 0x44, 0x49, 0x78, 0x66, 0x4a, 0x48, 0x50, 0x34, 0x46, 0x38, 0x52, 0x2b, 0x47, 0x75, 0x71, 0x53, 0x56, 0x7a, 0x52, 0x6d, 0x5a, 0x54, 0x52, 0x6f, 0x75, 0x4e, 0x6a, 0x57, 0x77, 0x6c, 0x32, 0x74, 0x56, 0x5a, 0x69, 0x34, 0x55, 0x74, 0x30, 0x48, 0x5a, 0x62, 0x55, 0x0a, 0x4a, 0x74, 0x51, 0x49, 0x42, 0x46, 0x6e, 0x51, 0x6d, 0x41, 0x34, 0x4f, 0x35, 0x74, 0x37, 0x38, 0x77, 0x2b, 0x77, 0x66, 0x6b, 0x50, 0x45, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x0a, 0x41, 0x51, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x48, 0x77, 0x4d, 0x4d, 0x68, 0x2b, 0x6e, 0x32, 0x54, 0x42, 0x2f, 0x78, 0x48, 0x31, 0x6f, 0x6f, 0x32, 0x4b, 0x6f, 0x6f, 0x63, 0x36, 0x72, 0x42, 0x31, 0x73, 0x6e, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x41, 0x52, 0x57, 0x66, 0x6f, 0x6c, 0x0a, 0x54, 0x77, 0x4e, 0x76, 0x6c, 0x4a, 0x6b, 0x37, 0x6d, 0x68, 0x2b, 0x43, 0x68, 0x54, 0x6e, 0x55, 0x64, 0x67, 0x57, 0x55, 0x58, 0x75, 0x45, 0x6f, 0x6b, 0x32, 0x31, 0x69, 0x58, 0x51, 0x6e, 0x43, 0x6f, 0x4b, 0x6a, 0x55, 0x73, 0x48, 0x55, 0x34, 0x38, 0x54, 0x52, 0x71, 0x6e, 0x65, 0x53, 0x66, 0x69, 0x6f, 0x59, 0x6d, 0x55, 0x65, 0x59, 0x73, 0x30, 0x63, 0x59, 0x74, 0x62, 0x70, 0x55, 0x67, 0x53, 0x70, 0x49, 0x42, 0x37, 0x4c, 0x69, 0x4b, 0x5a, 0x33, 0x73, 0x78, 0x0a, 0x34, 0x6d, 0x63, 0x75, 0x6a, 0x4a, 0x55, 0x44, 0x4a, 0x69, 0x35, 0x44, 0x6e, 0x55, 0x6f, 0x78, 0x39, 0x67, 0x36, 0x31, 0x44, 0x4c, 0x75, 0x33, 0x34, 0x6a, 0x64, 0x2f, 0x49, 0x72, 0x6f, 0x41, 0x6f, 0x77, 0x35, 0x37, 0x55, 0x76, 0x74, 0x72, 0x75, 0x7a, 0x76, 0x45, 0x30, 0x33, 0x6c, 0x52, 0x54, 0x73, 0x32, 0x51, 0x39, 0x47, 0x63, 0x48, 0x47, 0x63, 0x67, 0x38, 0x52, 0x6e, 0x6f, 0x4e, 0x41, 0x58, 0x33, 0x46, 0x57, 0x4f, 0x64, 0x74, 0x35, 0x6f, 0x55, 0x77, 0x0a, 0x46, 0x35, 0x6f, 0x6b, 0x78, 0x42, 0x44, 0x67, 0x42, 0x50, 0x66, 0x67, 0x38, 0x6e, 0x2f, 0x55, 0x71, 0x67, 0x72, 0x2f, 0x51, 0x68, 0x30, 0x33, 0x37, 0x5a, 0x54, 0x6c, 0x5a, 0x46, 0x6b, 0x53, 0x49, 0x48, 0x63, 0x34, 0x30, 0x7a, 0x49, 0x2b, 0x4f, 0x49, 0x46, 0x31, 0x6c, 0x6e, 0x50, 0x36, 0x61, 0x49, 0x2b, 0x78, 0x79, 0x38, 0x34, 0x66, 0x78, 0x65, 0x7a, 0x36, 0x6e, 0x48, 0x37, 0x50, 0x66, 0x72, 0x48, 0x78, 0x42, 0x79, 0x32, 0x32, 0x2f, 0x4c, 0x2f, 0x4b, 0x0a, 0x70, 0x4c, 0x2f, 0x51, 0x6c, 0x77, 0x56, 0x4b, 0x76, 0x4f, 0x6f, 0x59, 0x4b, 0x41, 0x4b, 0x51, 0x76, 0x56, 0x52, 0x34, 0x43, 0x53, 0x46, 0x78, 0x30, 0x39, 0x46, 0x39, 0x48, 0x64, 0x6b, 0x57, 0x73, 0x4b, 0x6c, 0x68, 0x50, 0x64, 0x41, 0x4b, 0x41, 0x43, 0x4c, 0x38, 0x78, 0x33, 0x76, 0x4c, 0x43, 0x57, 0x52, 0x46, 0x43, 0x7a, 0x74, 0x41, 0x67, 0x66, 0x64, 0x39, 0x66, 0x44, 0x4c, 0x31, 0x6d, 0x4d, 0x70, 0x59, 0x6a, 0x6e, 0x30, 0x71, 0x37, 0x70, 0x42, 0x5a, 0x0a, 0x63, 0x32, 0x54, 0x35, 0x4e, 0x6e, 0x52, 0x65, 0x4a, 0x61, 0x48, 0x31, 0x5a, 0x67, 0x55, 0x75, 0x66, 0x7a, 0x6b, 0x56, 0x71, 0x53, 0x72, 0x37, 0x55, 0x49, 0x75, 0x4f, 0x68, 0x57, 0x6e, 0x30, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 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, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x37, 0x7a, 0x43, 0x43, 0x41, 0x74, 0x65, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x43, 0x42, 0x6d, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x0a, 0x42, 0x30, 0x46, 0x79, 0x61, 0x58, 0x70, 0x76, 0x62, 0x6d, 0x45, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x43, 0x6c, 0x4e, 0x6a, 0x62, 0x33, 0x52, 0x30, 0x63, 0x32, 0x52, 0x68, 0x62, 0x47, 0x55, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x48, 0x46, 0x4e, 0x30, 0x59, 0x58, 0x4a, 0x6d, 0x61, 0x57, 0x56, 0x73, 0x5a, 0x43, 0x42, 0x55, 0x5a, 0x57, 0x4e, 0x6f, 0x62, 0x6d, 0x39, 0x73, 0x0a, 0x62, 0x32, 0x64, 0x70, 0x5a, 0x58, 0x4d, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4f, 0x7a, 0x41, 0x35, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4d, 0x6c, 0x4e, 0x30, 0x59, 0x58, 0x4a, 0x6d, 0x61, 0x57, 0x56, 0x73, 0x5a, 0x43, 0x42, 0x54, 0x5a, 0x58, 0x4a, 0x32, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x6c, 0x0a, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x41, 0x74, 0x49, 0x45, 0x63, 0x79, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41, 0x35, 0x4d, 0x44, 0x6b, 0x77, 0x4d, 0x54, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x33, 0x4d, 0x54, 0x49, 0x7a, 0x4d, 0x54, 0x49, 0x7a, 0x4e, 0x54, 0x6b, 0x31, 0x4f, 0x56, 0x6f, 0x77, 0x67, 0x5a, 0x67, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x49, 0x45, 0x77, 0x64, 0x42, 0x63, 0x6d, 0x6c, 0x36, 0x62, 0x32, 0x35, 0x68, 0x4d, 0x52, 0x4d, 0x77, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x45, 0x77, 0x70, 0x54, 0x59, 0x32, 0x39, 0x30, 0x64, 0x48, 0x4e, 0x6b, 0x59, 0x57, 0x78, 0x6c, 0x4d, 0x53, 0x55, 0x77, 0x49, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x78, 0x54, 0x0a, 0x64, 0x47, 0x46, 0x79, 0x5a, 0x6d, 0x6c, 0x6c, 0x62, 0x47, 0x51, 0x67, 0x56, 0x47, 0x56, 0x6a, 0x61, 0x47, 0x35, 0x76, 0x62, 0x47, 0x39, 0x6e, 0x61, 0x57, 0x56, 0x7a, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x4d, 0x54, 0x73, 0x77, 0x4f, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x7a, 0x4a, 0x54, 0x64, 0x47, 0x46, 0x79, 0x5a, 0x6d, 0x6c, 0x6c, 0x62, 0x47, 0x51, 0x67, 0x55, 0x32, 0x56, 0x79, 0x64, 0x6d, 0x6c, 0x6a, 0x5a, 0x58, 0x4d, 0x67, 0x0a, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x5a, 0x53, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x4c, 0x53, 0x42, 0x48, 0x4d, 0x6a, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x0a, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4e, 0x55, 0x4d, 0x4f, 0x73, 0x51, 0x71, 0x2b, 0x55, 0x37, 0x69, 0x39, 0x62, 0x34, 0x5a, 0x6c, 0x31, 0x2b, 0x4f, 0x69, 0x46, 0x4f, 0x78, 0x48, 0x7a, 0x2f, 0x4c, 0x7a, 0x35, 0x38, 0x67, 0x45, 0x32, 0x30, 0x70, 0x4f, 0x73, 0x67, 0x50, 0x66, 0x54, 0x7a, 0x33, 0x61, 0x33, 0x59, 0x34, 0x59, 0x39, 0x6b, 0x32, 0x59, 0x4b, 0x69, 0x62, 0x58, 0x6c, 0x77, 0x41, 0x67, 0x4c, 0x49, 0x76, 0x57, 0x58, 0x2f, 0x32, 0x0a, 0x68, 0x2f, 0x6b, 0x6c, 0x51, 0x34, 0x62, 0x6e, 0x61, 0x52, 0x74, 0x53, 0x6d, 0x70, 0x44, 0x68, 0x63, 0x65, 0x50, 0x59, 0x4c, 0x51, 0x31, 0x4f, 0x62, 0x2f, 0x62, 0x49, 0x53, 0x64, 0x6d, 0x32, 0x38, 0x78, 0x70, 0x57, 0x72, 0x69, 0x75, 0x32, 0x64, 0x42, 0x54, 0x72, 0x7a, 0x2f, 0x73, 0x6d, 0x34, 0x78, 0x71, 0x36, 0x48, 0x5a, 0x59, 0x75, 0x61, 0x6a, 0x74, 0x59, 0x6c, 0x49, 0x6c, 0x48, 0x56, 0x76, 0x38, 0x6c, 0x6f, 0x4a, 0x4e, 0x77, 0x55, 0x34, 0x50, 0x61, 0x0a, 0x68, 0x48, 0x51, 0x55, 0x77, 0x32, 0x65, 0x65, 0x42, 0x47, 0x67, 0x36, 0x33, 0x34, 0x35, 0x41, 0x57, 0x68, 0x31, 0x4b, 0x54, 0x73, 0x39, 0x44, 0x6b, 0x54, 0x76, 0x6e, 0x56, 0x74, 0x59, 0x41, 0x63, 0x4d, 0x74, 0x53, 0x37, 0x6e, 0x74, 0x39, 0x72, 0x6a, 0x72, 0x6e, 0x76, 0x44, 0x48, 0x35, 0x52, 0x66, 0x62, 0x43, 0x59, 0x4d, 0x38, 0x54, 0x57, 0x51, 0x49, 0x72, 0x67, 0x4d, 0x77, 0x30, 0x52, 0x39, 0x2b, 0x35, 0x33, 0x70, 0x42, 0x6c, 0x62, 0x51, 0x4c, 0x50, 0x0a, 0x4c, 0x4a, 0x47, 0x6d, 0x70, 0x75, 0x66, 0x65, 0x68, 0x52, 0x68, 0x4a, 0x66, 0x47, 0x5a, 0x4f, 0x6f, 0x7a, 0x70, 0x74, 0x71, 0x62, 0x58, 0x75, 0x4e, 0x43, 0x36, 0x36, 0x44, 0x51, 0x4f, 0x34, 0x4d, 0x39, 0x39, 0x48, 0x36, 0x37, 0x46, 0x72, 0x6a, 0x53, 0x58, 0x5a, 0x6d, 0x38, 0x36, 0x42, 0x30, 0x55, 0x56, 0x47, 0x4d, 0x70, 0x5a, 0x77, 0x68, 0x39, 0x34, 0x43, 0x44, 0x6b, 0x6c, 0x44, 0x68, 0x62, 0x5a, 0x73, 0x63, 0x37, 0x74, 0x6b, 0x36, 0x6d, 0x46, 0x42, 0x0a, 0x72, 0x4d, 0x6e, 0x55, 0x56, 0x4e, 0x2b, 0x48, 0x4c, 0x38, 0x63, 0x69, 0x73, 0x69, 0x62, 0x4d, 0x6e, 0x31, 0x6c, 0x55, 0x61, 0x4a, 0x2f, 0x38, 0x76, 0x69, 0x6f, 0x76, 0x78, 0x46, 0x55, 0x63, 0x64, 0x55, 0x42, 0x67, 0x46, 0x34, 0x55, 0x43, 0x56, 0x54, 0x6d, 0x4c, 0x66, 0x77, 0x55, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x0a, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4a, 0x78, 0x66, 0x41, 0x4e, 0x2b, 0x71, 0x41, 0x64, 0x63, 0x77, 0x4b, 0x7a, 0x69, 0x49, 0x6f, 0x72, 0x68, 0x74, 0x53, 0x70, 0x7a, 0x79, 0x45, 0x5a, 0x47, 0x44, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x0a, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x42, 0x4c, 0x4e, 0x71, 0x61, 0x45, 0x64, 0x32, 0x6e, 0x64, 0x4f, 0x78, 0x6d, 0x66, 0x5a, 0x79, 0x4d, 0x49, 0x62, 0x77, 0x35, 0x68, 0x79, 0x66, 0x32, 0x45, 0x33, 0x46, 0x2f, 0x59, 0x4e, 0x6f, 0x48, 0x4e, 0x32, 0x42, 0x74, 0x42, 0x4c, 0x5a, 0x39, 0x67, 0x33, 0x63, 0x63, 0x61, 0x61, 0x4e, 0x6e, 0x52, 0x62, 0x6f, 0x62, 0x68, 0x69, 0x43, 0x50, 0x50, 0x0a, 0x45, 0x39, 0x35, 0x44, 0x7a, 0x2b, 0x49, 0x30, 0x73, 0x77, 0x53, 0x64, 0x48, 0x79, 0x6e, 0x56, 0x76, 0x2f, 0x68, 0x65, 0x79, 0x4e, 0x58, 0x42, 0x76, 0x65, 0x36, 0x53, 0x62, 0x7a, 0x4a, 0x30, 0x38, 0x70, 0x47, 0x43, 0x4c, 0x37, 0x32, 0x43, 0x51, 0x6e, 0x71, 0x74, 0x4b, 0x72, 0x63, 0x67, 0x66, 0x55, 0x32, 0x38, 0x65, 0x6c, 0x55, 0x53, 0x77, 0x68, 0x58, 0x71, 0x76, 0x66, 0x64, 0x71, 0x6c, 0x53, 0x35, 0x73, 0x64, 0x4a, 0x2f, 0x50, 0x48, 0x4c, 0x54, 0x79, 0x0a, 0x78, 0x51, 0x47, 0x6a, 0x68, 0x64, 0x42, 0x79, 0x50, 0x71, 0x31, 0x7a, 0x71, 0x77, 0x75, 0x62, 0x64, 0x51, 0x78, 0x74, 0x52, 0x62, 0x65, 0x4f, 0x6c, 0x4b, 0x79, 0x57, 0x4e, 0x37, 0x57, 0x67, 0x30, 0x49, 0x38, 0x56, 0x52, 0x77, 0x37, 0x6a, 0x36, 0x49, 0x50, 0x64, 0x6a, 0x2f, 0x33, 0x76, 0x51, 0x51, 0x46, 0x33, 0x7a, 0x43, 0x65, 0x70, 0x59, 0x6f, 0x55, 0x7a, 0x38, 0x6a, 0x63, 0x49, 0x37, 0x33, 0x48, 0x50, 0x64, 0x77, 0x62, 0x65, 0x79, 0x42, 0x6b, 0x64, 0x0a, 0x69, 0x45, 0x44, 0x50, 0x66, 0x55, 0x59, 0x64, 0x2f, 0x78, 0x37, 0x48, 0x34, 0x63, 0x37, 0x2f, 0x49, 0x39, 0x76, 0x47, 0x2b, 0x6f, 0x31, 0x56, 0x54, 0x71, 0x6b, 0x43, 0x35, 0x30, 0x63, 0x52, 0x52, 0x6a, 0x37, 0x30, 0x2f, 0x62, 0x31, 0x37, 0x4b, 0x53, 0x61, 0x37, 0x71, 0x57, 0x46, 0x69, 0x4e, 0x79, 0x69, 0x32, 0x4c, 0x53, 0x72, 0x32, 0x45, 0x49, 0x5a, 0x6b, 0x79, 0x58, 0x43, 0x6e, 0x30, 0x71, 0x32, 0x33, 0x4b, 0x58, 0x42, 0x35, 0x36, 0x6a, 0x7a, 0x61, 0x0a, 0x59, 0x79, 0x57, 0x66, 0x2f, 0x57, 0x69, 0x33, 0x4d, 0x4f, 0x78, 0x77, 0x2b, 0x33, 0x57, 0x4b, 0x74, 0x32, 0x31, 0x67, 0x5a, 0x37, 0x49, 0x65, 0x79, 0x4c, 0x6e, 0x70, 0x32, 0x4b, 0x68, 0x76, 0x41, 0x6f, 0x74, 0x6e, 0x44, 0x55, 0x30, 0x6d, 0x56, 0x33, 0x48, 0x61, 0x49, 0x50, 0x7a, 0x42, 0x53, 0x6c, 0x43, 0x4e, 0x73, 0x53, 0x69, 0x36, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x66, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x54, 0x44, 0x43, 0x43, 0x41, 0x6a, 0x53, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x64, 0x33, 0x63, 0x47, 0x4a, 0x79, 0x61, 0x70, 0x73, 0x58, 0x77, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x52, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x46, 0x44, 0x41, 0x53, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x30, 0x46, 0x6d, 0x5a, 0x6d, 0x6c, 0x79, 0x62, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x52, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x5a, 0x42, 0x5a, 0x6d, 0x5a, 0x70, 0x63, 0x6d, 0x31, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x44, 0x62, 0x32, 0x31, 0x74, 0x5a, 0x58, 0x4a, 0x6a, 0x61, 0x57, 0x46, 0x73, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x77, 0x0a, 0x4d, 0x44, 0x45, 0x79, 0x4f, 0x54, 0x45, 0x30, 0x4d, 0x44, 0x59, 0x77, 0x4e, 0x6c, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x77, 0x4d, 0x54, 0x49, 0x7a, 0x4d, 0x54, 0x45, 0x30, 0x4d, 0x44, 0x59, 0x77, 0x4e, 0x6c, 0x6f, 0x77, 0x52, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x46, 0x44, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x30, 0x46, 0x6d, 0x5a, 0x6d, 0x6c, 0x79, 0x0a, 0x62, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x52, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x5a, 0x42, 0x5a, 0x6d, 0x5a, 0x70, 0x63, 0x6d, 0x31, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x44, 0x62, 0x32, 0x31, 0x74, 0x5a, 0x58, 0x4a, 0x6a, 0x61, 0x57, 0x46, 0x73, 0x4d, 0x49, 0x49, 0x42, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x0a, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x39, 0x68, 0x74, 0x50, 0x5a, 0x77, 0x63, 0x72, 0x6f, 0x52, 0x58, 0x31, 0x42, 0x69, 0x4c, 0x4c, 0x48, 0x77, 0x47, 0x79, 0x34, 0x33, 0x4e, 0x46, 0x42, 0x6b, 0x52, 0x4a, 0x4c, 0x4c, 0x74, 0x4a, 0x4a, 0x52, 0x54, 0x57, 0x7a, 0x73, 0x4f, 0x33, 0x71, 0x79, 0x78, 0x50, 0x78, 0x6b, 0x45, 0x79, 0x6c, 0x46, 0x66, 0x36, 0x45, 0x71, 0x64, 0x62, 0x0a, 0x44, 0x75, 0x4b, 0x50, 0x48, 0x78, 0x36, 0x47, 0x47, 0x61, 0x65, 0x71, 0x74, 0x53, 0x32, 0x35, 0x58, 0x77, 0x32, 0x4b, 0x77, 0x71, 0x2b, 0x46, 0x4e, 0x58, 0x6b, 0x79, 0x4c, 0x62, 0x73, 0x63, 0x59, 0x6a, 0x66, 0x79, 0x73, 0x56, 0x74, 0x4b, 0x50, 0x63, 0x72, 0x4e, 0x63, 0x56, 0x2f, 0x70, 0x51, 0x72, 0x36, 0x55, 0x36, 0x4d, 0x6a, 0x65, 0x2b, 0x53, 0x4a, 0x49, 0x5a, 0x4d, 0x62, 0x6c, 0x71, 0x38, 0x59, 0x72, 0x62, 0x61, 0x30, 0x46, 0x38, 0x50, 0x72, 0x56, 0x0a, 0x43, 0x38, 0x2b, 0x61, 0x35, 0x66, 0x42, 0x51, 0x70, 0x49, 0x73, 0x37, 0x52, 0x36, 0x55, 0x6a, 0x57, 0x33, 0x70, 0x36, 0x2b, 0x44, 0x4d, 0x2f, 0x75, 0x4f, 0x2b, 0x5a, 0x6c, 0x2b, 0x4d, 0x67, 0x77, 0x64, 0x59, 0x6f, 0x69, 0x63, 0x2b, 0x55, 0x2b, 0x37, 0x6c, 0x46, 0x37, 0x65, 0x4e, 0x41, 0x46, 0x78, 0x48, 0x55, 0x64, 0x50, 0x41, 0x4c, 0x4d, 0x65, 0x49, 0x72, 0x4a, 0x6d, 0x71, 0x62, 0x54, 0x46, 0x65, 0x75, 0x72, 0x43, 0x41, 0x2b, 0x75, 0x6b, 0x56, 0x36, 0x0a, 0x42, 0x66, 0x4f, 0x39, 0x6d, 0x32, 0x6b, 0x56, 0x72, 0x6e, 0x31, 0x4f, 0x49, 0x47, 0x50, 0x45, 0x4e, 0x58, 0x59, 0x36, 0x42, 0x77, 0x4c, 0x4a, 0x4e, 0x2f, 0x33, 0x48, 0x52, 0x2b, 0x37, 0x6f, 0x38, 0x58, 0x59, 0x64, 0x63, 0x78, 0x58, 0x79, 0x6c, 0x36, 0x53, 0x31, 0x79, 0x48, 0x70, 0x35, 0x32, 0x55, 0x4b, 0x71, 0x4b, 0x33, 0x39, 0x63, 0x2f, 0x73, 0x34, 0x6d, 0x54, 0x36, 0x4e, 0x6d, 0x67, 0x54, 0x57, 0x76, 0x52, 0x4c, 0x70, 0x55, 0x48, 0x68, 0x77, 0x77, 0x0a, 0x4d, 0x6d, 0x57, 0x64, 0x35, 0x6a, 0x79, 0x54, 0x58, 0x6c, 0x42, 0x4f, 0x65, 0x75, 0x4d, 0x36, 0x31, 0x47, 0x37, 0x4d, 0x47, 0x76, 0x76, 0x35, 0x30, 0x6a, 0x65, 0x75, 0x4a, 0x43, 0x71, 0x72, 0x56, 0x77, 0x4d, 0x69, 0x4b, 0x41, 0x31, 0x4a, 0x64, 0x58, 0x2b, 0x33, 0x4b, 0x4e, 0x70, 0x31, 0x76, 0x34, 0x37, 0x6a, 0x33, 0x41, 0x35, 0x35, 0x4d, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x6e, 0x5a, 0x50, 0x47, 0x55, 0x34, 0x74, 0x65, 0x79, 0x71, 0x38, 0x2f, 0x6e, 0x78, 0x34, 0x50, 0x35, 0x5a, 0x6d, 0x56, 0x76, 0x43, 0x54, 0x32, 0x6c, 0x49, 0x38, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x0a, 0x41, 0x51, 0x59, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x46, 0x69, 0x73, 0x39, 0x41, 0x51, 0x4f, 0x7a, 0x63, 0x41, 0x4e, 0x2f, 0x77, 0x72, 0x39, 0x31, 0x4c, 0x6f, 0x57, 0x58, 0x79, 0x6d, 0x39, 0x65, 0x32, 0x69, 0x5a, 0x57, 0x45, 0x6e, 0x53, 0x74, 0x42, 0x30, 0x33, 0x54, 0x58, 0x38, 0x6e, 0x66, 0x55, 0x59, 0x47, 0x58, 0x55, 0x50, 0x47, 0x0a, 0x68, 0x69, 0x34, 0x2b, 0x63, 0x37, 0x49, 0x6d, 0x66, 0x55, 0x2b, 0x54, 0x71, 0x62, 0x62, 0x45, 0x4b, 0x70, 0x71, 0x72, 0x49, 0x5a, 0x63, 0x55, 0x73, 0x64, 0x36, 0x4d, 0x30, 0x36, 0x75, 0x4a, 0x46, 0x64, 0x68, 0x72, 0x4a, 0x4e, 0x54, 0x78, 0x46, 0x71, 0x37, 0x59, 0x70, 0x46, 0x7a, 0x55, 0x66, 0x31, 0x47, 0x4f, 0x37, 0x52, 0x67, 0x42, 0x73, 0x5a, 0x4e, 0x6a, 0x76, 0x62, 0x7a, 0x34, 0x59, 0x59, 0x43, 0x61, 0x6e, 0x72, 0x48, 0x4f, 0x51, 0x6e, 0x44, 0x69, 0x0a, 0x71, 0x58, 0x30, 0x47, 0x4a, 0x58, 0x30, 0x6e, 0x6f, 0x66, 0x35, 0x76, 0x37, 0x4c, 0x4d, 0x65, 0x4a, 0x4e, 0x72, 0x6a, 0x53, 0x31, 0x55, 0x61, 0x41, 0x44, 0x73, 0x31, 0x74, 0x44, 0x76, 0x5a, 0x31, 0x31, 0x30, 0x77, 0x2f, 0x59, 0x45, 0x54, 0x69, 0x66, 0x4c, 0x43, 0x42, 0x69, 0x76, 0x74, 0x5a, 0x38, 0x53, 0x4f, 0x79, 0x55, 0x4f, 0x79, 0x58, 0x47, 0x73, 0x56, 0x69, 0x51, 0x4b, 0x38, 0x59, 0x76, 0x78, 0x4f, 0x38, 0x72, 0x55, 0x7a, 0x71, 0x72, 0x4a, 0x76, 0x0a, 0x30, 0x77, 0x71, 0x69, 0x55, 0x4f, 0x50, 0x32, 0x4f, 0x2b, 0x67, 0x75, 0x52, 0x4d, 0x4c, 0x62, 0x5a, 0x6a, 0x69, 0x70, 0x4d, 0x31, 0x5a, 0x49, 0x38, 0x57, 0x30, 0x62, 0x4d, 0x34, 0x30, 0x4e, 0x6a, 0x44, 0x39, 0x67, 0x4e, 0x35, 0x33, 0x54, 0x79, 0x6d, 0x31, 0x2b, 0x4e, 0x48, 0x34, 0x4e, 0x6e, 0x33, 0x4a, 0x32, 0x69, 0x78, 0x75, 0x66, 0x63, 0x76, 0x31, 0x53, 0x4e, 0x55, 0x46, 0x46, 0x41, 0x70, 0x59, 0x76, 0x48, 0x4c, 0x4b, 0x61, 0x63, 0x30, 0x6b, 0x68, 0x0a, 0x73, 0x55, 0x6c, 0x48, 0x52, 0x55, 0x65, 0x30, 0x37, 0x32, 0x6f, 0x30, 0x45, 0x63, 0x6c, 0x4e, 0x6d, 0x73, 0x78, 0x5a, 0x74, 0x39, 0x59, 0x43, 0x6e, 0x6c, 0x70, 0x4f, 0x5a, 0x62, 0x57, 0x55, 0x72, 0x68, 0x76, 0x66, 0x4b, 0x62, 0x41, 0x57, 0x38, 0x62, 0x38, 0x41, 0x6e, 0x67, 0x63, 0x36, 0x46, 0x32, 0x53, 0x31, 0x42, 0x4c, 0x55, 0x6a, 0x49, 0x5a, 0x6b, 0x4b, 0x6c, 0x54, 0x75, 0x58, 0x66, 0x4f, 0x38, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x66, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x54, 0x44, 0x43, 0x43, 0x41, 0x6a, 0x53, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x66, 0x45, 0x38, 0x45, 0x4f, 0x52, 0x7a, 0x55, 0x6d, 0x53, 0x30, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x77, 0x52, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x46, 0x44, 0x41, 0x53, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x30, 0x46, 0x6d, 0x5a, 0x6d, 0x6c, 0x79, 0x62, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x52, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x5a, 0x42, 0x5a, 0x6d, 0x5a, 0x70, 0x63, 0x6d, 0x31, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x4f, 0x5a, 0x58, 0x52, 0x33, 0x62, 0x33, 0x4a, 0x72, 0x61, 0x57, 0x35, 0x6e, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x77, 0x0a, 0x4d, 0x44, 0x45, 0x79, 0x4f, 0x54, 0x45, 0x30, 0x4d, 0x44, 0x67, 0x79, 0x4e, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x77, 0x4d, 0x54, 0x49, 0x7a, 0x4d, 0x54, 0x45, 0x30, 0x4d, 0x44, 0x67, 0x79, 0x4e, 0x46, 0x6f, 0x77, 0x52, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x46, 0x44, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x30, 0x46, 0x6d, 0x5a, 0x6d, 0x6c, 0x79, 0x0a, 0x62, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x52, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x5a, 0x42, 0x5a, 0x6d, 0x5a, 0x70, 0x63, 0x6d, 0x31, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x4f, 0x5a, 0x58, 0x52, 0x33, 0x62, 0x33, 0x4a, 0x72, 0x61, 0x57, 0x35, 0x6e, 0x4d, 0x49, 0x49, 0x42, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x0a, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x74, 0x49, 0x54, 0x4d, 0x4d, 0x78, 0x63, 0x75, 0x61, 0x35, 0x52, 0x73, 0x61, 0x32, 0x46, 0x53, 0x6f, 0x4f, 0x75, 0x6a, 0x7a, 0x33, 0x6d, 0x55, 0x54, 0x4f, 0x57, 0x55, 0x67, 0x4a, 0x6e, 0x4c, 0x56, 0x57, 0x52, 0x45, 0x5a, 0x59, 0x39, 0x6e, 0x5a, 0x4f, 0x49, 0x47, 0x34, 0x31, 0x77, 0x33, 0x53, 0x66, 0x59, 0x76, 0x6d, 0x34, 0x53, 0x45, 0x0a, 0x48, 0x69, 0x33, 0x79, 0x59, 0x4a, 0x30, 0x77, 0x54, 0x73, 0x79, 0x45, 0x68, 0x65, 0x49, 0x73, 0x7a, 0x78, 0x36, 0x65, 0x2f, 0x6a, 0x61, 0x72, 0x4d, 0x33, 0x63, 0x31, 0x52, 0x4e, 0x67, 0x31, 0x6c, 0x68, 0x6f, 0x39, 0x4e, 0x75, 0x68, 0x36, 0x44, 0x74, 0x6a, 0x56, 0x52, 0x36, 0x46, 0x71, 0x61, 0x59, 0x76, 0x5a, 0x2f, 0x4c, 0x73, 0x36, 0x72, 0x6e, 0x6c, 0x61, 0x31, 0x66, 0x54, 0x57, 0x63, 0x62, 0x75, 0x61, 0x6b, 0x43, 0x4e, 0x72, 0x6d, 0x72, 0x65, 0x49, 0x0a, 0x64, 0x49, 0x63, 0x4d, 0x48, 0x6c, 0x2b, 0x35, 0x6e, 0x69, 0x33, 0x36, 0x71, 0x31, 0x4d, 0x72, 0x33, 0x4c, 0x74, 0x32, 0x50, 0x70, 0x4e, 0x4d, 0x43, 0x41, 0x69, 0x4d, 0x48, 0x71, 0x49, 0x6a, 0x48, 0x4e, 0x52, 0x71, 0x72, 0x53, 0x4b, 0x36, 0x6d, 0x51, 0x45, 0x75, 0x62, 0x57, 0x58, 0x4c, 0x76, 0x69, 0x52, 0x6d, 0x56, 0x53, 0x52, 0x4c, 0x51, 0x45, 0x53, 0x78, 0x47, 0x39, 0x66, 0x68, 0x77, 0x6f, 0x58, 0x41, 0x33, 0x68, 0x41, 0x2f, 0x50, 0x65, 0x32, 0x34, 0x0a, 0x2f, 0x50, 0x48, 0x78, 0x49, 0x31, 0x50, 0x63, 0x76, 0x32, 0x57, 0x58, 0x62, 0x39, 0x6e, 0x35, 0x51, 0x48, 0x47, 0x4e, 0x66, 0x62, 0x32, 0x56, 0x31, 0x4d, 0x36, 0x2b, 0x6f, 0x46, 0x34, 0x6e, 0x49, 0x39, 0x37, 0x39, 0x70, 0x74, 0x41, 0x6d, 0x44, 0x67, 0x41, 0x70, 0x36, 0x7a, 0x78, 0x47, 0x38, 0x44, 0x31, 0x67, 0x76, 0x7a, 0x39, 0x51, 0x30, 0x74, 0x77, 0x6d, 0x51, 0x56, 0x47, 0x65, 0x46, 0x44, 0x64, 0x43, 0x42, 0x4b, 0x4e, 0x77, 0x56, 0x36, 0x67, 0x62, 0x0a, 0x68, 0x2b, 0x30, 0x74, 0x2b, 0x6e, 0x76, 0x75, 0x6a, 0x41, 0x72, 0x6a, 0x71, 0x57, 0x61, 0x4a, 0x47, 0x63, 0x74, 0x42, 0x2b, 0x64, 0x31, 0x45, 0x4e, 0x6d, 0x48, 0x50, 0x34, 0x6e, 0x64, 0x47, 0x79, 0x48, 0x33, 0x32, 0x39, 0x4a, 0x4b, 0x42, 0x4e, 0x76, 0x33, 0x62, 0x4e, 0x50, 0x46, 0x79, 0x66, 0x76, 0x4d, 0x4d, 0x46, 0x72, 0x32, 0x30, 0x46, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x42, 0x78, 0x2f, 0x53, 0x35, 0x35, 0x7a, 0x61, 0x77, 0x6d, 0x36, 0x69, 0x51, 0x4c, 0x53, 0x77, 0x65, 0x6c, 0x41, 0x51, 0x55, 0x48, 0x54, 0x45, 0x79, 0x4c, 0x30, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x0a, 0x41, 0x51, 0x59, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x49, 0x6c, 0x58, 0x73, 0x68, 0x5a, 0x36, 0x71, 0x4d, 0x4c, 0x39, 0x31, 0x74, 0x6d, 0x62, 0x6d, 0x7a, 0x54, 0x43, 0x6e, 0x4c, 0x51, 0x79, 0x46, 0x45, 0x32, 0x6e, 0x70, 0x4e, 0x2f, 0x73, 0x76, 0x71, 0x65, 0x2b, 0x2b, 0x45, 0x50, 0x62, 0x6b, 0x54, 0x66, 0x4f, 0x74, 0x44, 0x49, 0x75, 0x0a, 0x55, 0x46, 0x55, 0x61, 0x4e, 0x55, 0x35, 0x32, 0x51, 0x33, 0x45, 0x67, 0x37, 0x35, 0x4e, 0x33, 0x54, 0x68, 0x56, 0x77, 0x4c, 0x6f, 0x66, 0x44, 0x77, 0x52, 0x31, 0x74, 0x33, 0x4d, 0x75, 0x31, 0x4a, 0x39, 0x51, 0x73, 0x56, 0x74, 0x46, 0x53, 0x55, 0x7a, 0x70, 0x45, 0x30, 0x6e, 0x50, 0x49, 0x78, 0x42, 0x73, 0x46, 0x5a, 0x56, 0x70, 0x69, 0x6b, 0x70, 0x7a, 0x75, 0x51, 0x59, 0x30, 0x78, 0x32, 0x2b, 0x63, 0x30, 0x36, 0x6c, 0x6b, 0x68, 0x31, 0x51, 0x46, 0x36, 0x0a, 0x31, 0x32, 0x53, 0x34, 0x5a, 0x44, 0x6e, 0x4e, 0x79, 0x65, 0x32, 0x76, 0x37, 0x55, 0x73, 0x44, 0x53, 0x4b, 0x65, 0x67, 0x6d, 0x51, 0x47, 0x41, 0x33, 0x47, 0x57, 0x6a, 0x4e, 0x71, 0x35, 0x6c, 0x57, 0x55, 0x68, 0x50, 0x67, 0x6b, 0x76, 0x49, 0x5a, 0x66, 0x46, 0x58, 0x48, 0x65, 0x56, 0x5a, 0x4c, 0x67, 0x6f, 0x2f, 0x62, 0x4e, 0x6a, 0x52, 0x39, 0x65, 0x55, 0x4a, 0x74, 0x47, 0x78, 0x55, 0x41, 0x41, 0x72, 0x67, 0x46, 0x55, 0x32, 0x48, 0x64, 0x57, 0x32, 0x33, 0x0a, 0x57, 0x4a, 0x5a, 0x61, 0x33, 0x57, 0x33, 0x53, 0x41, 0x4b, 0x44, 0x30, 0x6d, 0x30, 0x69, 0x2b, 0x77, 0x7a, 0x65, 0x6b, 0x75, 0x6a, 0x62, 0x67, 0x66, 0x49, 0x65, 0x46, 0x6c, 0x78, 0x6f, 0x56, 0x6f, 0x74, 0x34, 0x75, 0x6f, 0x6c, 0x75, 0x39, 0x72, 0x78, 0x6a, 0x35, 0x6b, 0x46, 0x44, 0x4e, 0x63, 0x46, 0x6e, 0x34, 0x4a, 0x32, 0x64, 0x48, 0x79, 0x38, 0x65, 0x67, 0x42, 0x7a, 0x70, 0x39, 0x30, 0x53, 0x78, 0x64, 0x62, 0x42, 0x6b, 0x36, 0x5a, 0x72, 0x56, 0x39, 0x0a, 0x2f, 0x5a, 0x46, 0x76, 0x67, 0x72, 0x47, 0x2b, 0x43, 0x4a, 0x50, 0x62, 0x46, 0x45, 0x66, 0x78, 0x6f, 0x6a, 0x66, 0x48, 0x52, 0x5a, 0x34, 0x38, 0x78, 0x33, 0x65, 0x76, 0x5a, 0x4b, 0x69, 0x54, 0x33, 0x2f, 0x5a, 0x70, 0x67, 0x34, 0x4a, 0x67, 0x38, 0x6b, 0x6c, 0x43, 0x4e, 0x4f, 0x31, 0x61, 0x41, 0x46, 0x53, 0x46, 0x48, 0x42, 0x59, 0x32, 0x6b, 0x67, 0x78, 0x63, 0x2b, 0x71, 0x61, 0x74, 0x76, 0x39, 0x73, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x66, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x52, 0x6a, 0x43, 0x43, 0x41, 0x79, 0x36, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x62, 0x59, 0x77, 0x55, 0x52, 0x72, 0x47, 0x6d, 0x43, 0x75, 0x34, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x77, 0x51, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x46, 0x44, 0x41, 0x53, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x30, 0x46, 0x6d, 0x5a, 0x6d, 0x6c, 0x79, 0x62, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x52, 0x77, 0x77, 0x47, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x4e, 0x42, 0x5a, 0x6d, 0x5a, 0x70, 0x63, 0x6d, 0x31, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x51, 0x63, 0x6d, 0x56, 0x74, 0x61, 0x58, 0x56, 0x74, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x77, 0x4d, 0x44, 0x45, 0x79, 0x0a, 0x4f, 0x54, 0x45, 0x30, 0x4d, 0x54, 0x41, 0x7a, 0x4e, 0x6c, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x77, 0x4d, 0x54, 0x49, 0x7a, 0x4d, 0x54, 0x45, 0x30, 0x4d, 0x54, 0x41, 0x7a, 0x4e, 0x6c, 0x6f, 0x77, 0x51, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x46, 0x44, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x30, 0x46, 0x6d, 0x5a, 0x6d, 0x6c, 0x79, 0x62, 0x56, 0x52, 0x79, 0x0a, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x52, 0x77, 0x77, 0x47, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x4e, 0x42, 0x5a, 0x6d, 0x5a, 0x70, 0x63, 0x6d, 0x31, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x51, 0x63, 0x6d, 0x56, 0x74, 0x61, 0x58, 0x56, 0x74, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x38, 0x41, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x45, 0x41, 0x78, 0x42, 0x4c, 0x66, 0x71, 0x56, 0x2f, 0x2b, 0x51, 0x64, 0x33, 0x64, 0x39, 0x5a, 0x2b, 0x4b, 0x34, 0x2f, 0x61, 0x73, 0x34, 0x54, 0x78, 0x34, 0x6d, 0x72, 0x7a, 0x59, 0x38, 0x48, 0x39, 0x36, 0x6f, 0x44, 0x4d, 0x71, 0x33, 0x49, 0x30, 0x67, 0x57, 0x36, 0x34, 0x74, 0x62, 0x2b, 0x65, 0x54, 0x32, 0x54, 0x5a, 0x77, 0x61, 0x6d, 0x6a, 0x50, 0x6a, 0x6c, 0x47, 0x6a, 0x68, 0x56, 0x74, 0x6e, 0x0a, 0x42, 0x4b, 0x41, 0x51, 0x4a, 0x47, 0x39, 0x64, 0x4b, 0x49, 0x4c, 0x42, 0x6c, 0x31, 0x66, 0x59, 0x53, 0x43, 0x6b, 0x54, 0x74, 0x75, 0x47, 0x2b, 0x6b, 0x55, 0x33, 0x66, 0x68, 0x51, 0x78, 0x54, 0x47, 0x4a, 0x6f, 0x65, 0x4a, 0x4b, 0x4a, 0x50, 0x6a, 0x2f, 0x43, 0x69, 0x68, 0x51, 0x76, 0x4c, 0x39, 0x43, 0x6c, 0x2f, 0x30, 0x71, 0x52, 0x59, 0x37, 0x69, 0x5a, 0x4e, 0x79, 0x61, 0x71, 0x6f, 0x65, 0x35, 0x72, 0x5a, 0x2b, 0x6a, 0x6a, 0x65, 0x52, 0x46, 0x63, 0x56, 0x0a, 0x35, 0x66, 0x69, 0x4d, 0x79, 0x4e, 0x6c, 0x49, 0x34, 0x67, 0x30, 0x57, 0x4a, 0x78, 0x30, 0x65, 0x79, 0x49, 0x4f, 0x46, 0x4a, 0x62, 0x65, 0x36, 0x71, 0x6c, 0x56, 0x42, 0x7a, 0x41, 0x4d, 0x69, 0x53, 0x79, 0x32, 0x52, 0x6a, 0x59, 0x76, 0x6d, 0x69, 0x61, 0x39, 0x6d, 0x78, 0x2b, 0x6e, 0x2f, 0x4b, 0x2b, 0x6b, 0x38, 0x72, 0x4e, 0x72, 0x53, 0x73, 0x38, 0x50, 0x68, 0x61, 0x4a, 0x79, 0x4a, 0x2b, 0x48, 0x6f, 0x41, 0x56, 0x74, 0x37, 0x30, 0x56, 0x5a, 0x56, 0x73, 0x0a, 0x2b, 0x37, 0x70, 0x6b, 0x33, 0x57, 0x4b, 0x4c, 0x33, 0x77, 0x74, 0x33, 0x4d, 0x75, 0x74, 0x69, 0x7a, 0x43, 0x61, 0x61, 0x6d, 0x37, 0x75, 0x71, 0x59, 0x6f, 0x4e, 0x4d, 0x74, 0x41, 0x5a, 0x36, 0x4d, 0x4d, 0x67, 0x70, 0x76, 0x2b, 0x30, 0x47, 0x54, 0x5a, 0x65, 0x35, 0x48, 0x4d, 0x51, 0x78, 0x4b, 0x39, 0x56, 0x66, 0x76, 0x46, 0x4d, 0x53, 0x46, 0x35, 0x79, 0x5a, 0x56, 0x79, 0x6c, 0x6d, 0x64, 0x32, 0x45, 0x68, 0x4d, 0x51, 0x63, 0x75, 0x4a, 0x55, 0x6d, 0x64, 0x0a, 0x47, 0x50, 0x4c, 0x75, 0x38, 0x79, 0x74, 0x78, 0x6a, 0x4c, 0x57, 0x36, 0x4f, 0x51, 0x64, 0x4a, 0x64, 0x2f, 0x7a, 0x76, 0x4c, 0x70, 0x4b, 0x51, 0x42, 0x59, 0x30, 0x74, 0x4c, 0x33, 0x64, 0x37, 0x37, 0x30, 0x4f, 0x2f, 0x4e, 0x62, 0x75, 0x61, 0x32, 0x50, 0x6c, 0x7a, 0x70, 0x79, 0x7a, 0x79, 0x30, 0x46, 0x66, 0x75, 0x4b, 0x45, 0x34, 0x6d, 0x58, 0x34, 0x2b, 0x51, 0x61, 0x41, 0x6b, 0x76, 0x75, 0x50, 0x6a, 0x63, 0x42, 0x75, 0x6b, 0x75, 0x6d, 0x6a, 0x35, 0x52, 0x0a, 0x70, 0x39, 0x45, 0x69, 0x78, 0x41, 0x71, 0x6e, 0x4f, 0x45, 0x68, 0x73, 0x73, 0x2f, 0x6e, 0x2f, 0x66, 0x61, 0x75, 0x47, 0x56, 0x2b, 0x4f, 0x36, 0x31, 0x6f, 0x56, 0x34, 0x64, 0x37, 0x70, 0x44, 0x36, 0x6b, 0x68, 0x2f, 0x39, 0x74, 0x69, 0x2b, 0x49, 0x32, 0x30, 0x65, 0x76, 0x39, 0x45, 0x32, 0x62, 0x46, 0x68, 0x63, 0x38, 0x65, 0x36, 0x6b, 0x47, 0x56, 0x51, 0x61, 0x39, 0x51, 0x50, 0x53, 0x64, 0x75, 0x62, 0x68, 0x6a, 0x4c, 0x30, 0x38, 0x73, 0x39, 0x4e, 0x49, 0x0a, 0x53, 0x2b, 0x4c, 0x49, 0x2b, 0x48, 0x2b, 0x53, 0x71, 0x48, 0x5a, 0x47, 0x6e, 0x45, 0x4a, 0x6c, 0x50, 0x71, 0x51, 0x65, 0x77, 0x51, 0x63, 0x44, 0x57, 0x6b, 0x59, 0x74, 0x75, 0x4a, 0x66, 0x7a, 0x74, 0x39, 0x57, 0x79, 0x56, 0x53, 0x48, 0x76, 0x75, 0x74, 0x78, 0x4d, 0x41, 0x4a, 0x66, 0x37, 0x46, 0x4a, 0x55, 0x6e, 0x4d, 0x37, 0x2f, 0x6f, 0x51, 0x30, 0x64, 0x47, 0x30, 0x67, 0x69, 0x5a, 0x46, 0x6d, 0x41, 0x37, 0x6d, 0x6e, 0x37, 0x53, 0x35, 0x75, 0x30, 0x34, 0x0a, 0x36, 0x75, 0x77, 0x42, 0x48, 0x6a, 0x78, 0x49, 0x56, 0x6b, 0x6b, 0x4a, 0x78, 0x30, 0x77, 0x33, 0x41, 0x4a, 0x36, 0x49, 0x44, 0x73, 0x42, 0x7a, 0x34, 0x57, 0x39, 0x6d, 0x36, 0x58, 0x4a, 0x48, 0x4d, 0x44, 0x34, 0x51, 0x35, 0x51, 0x73, 0x44, 0x79, 0x5a, 0x70, 0x43, 0x41, 0x47, 0x7a, 0x46, 0x6c, 0x48, 0x35, 0x68, 0x78, 0x49, 0x72, 0x66, 0x66, 0x34, 0x49, 0x61, 0x43, 0x31, 0x6e, 0x45, 0x57, 0x54, 0x4a, 0x33, 0x73, 0x37, 0x78, 0x67, 0x61, 0x56, 0x59, 0x35, 0x0a, 0x2f, 0x62, 0x51, 0x47, 0x65, 0x79, 0x7a, 0x57, 0x5a, 0x44, 0x62, 0x5a, 0x76, 0x55, 0x6a, 0x74, 0x68, 0x42, 0x39, 0x2b, 0x70, 0x53, 0x4b, 0x50, 0x4b, 0x72, 0x68, 0x43, 0x39, 0x49, 0x4b, 0x33, 0x31, 0x46, 0x4f, 0x51, 0x65, 0x45, 0x34, 0x74, 0x47, 0x76, 0x32, 0x42, 0x62, 0x30, 0x54, 0x58, 0x4f, 0x77, 0x46, 0x30, 0x6c, 0x6b, 0x4c, 0x67, 0x41, 0x4f, 0x49, 0x75, 0x61, 0x2b, 0x72, 0x46, 0x37, 0x6e, 0x4b, 0x73, 0x75, 0x37, 0x2f, 0x2b, 0x36, 0x71, 0x71, 0x6f, 0x0a, 0x2b, 0x4e, 0x7a, 0x32, 0x73, 0x6e, 0x6d, 0x4b, 0x74, 0x6d, 0x63, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4a, 0x33, 0x41, 0x5a, 0x36, 0x59, 0x4d, 0x49, 0x74, 0x6b, 0x6d, 0x39, 0x55, 0x57, 0x72, 0x70, 0x6d, 0x56, 0x53, 0x45, 0x53, 0x66, 0x59, 0x52, 0x61, 0x78, 0x6a, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x0a, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x44, 0x41, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x41, 0x51, 0x43, 0x7a, 0x56, 0x30, 0x30, 0x51, 0x59, 0x6b, 0x34, 0x36, 0x35, 0x4b, 0x7a, 0x71, 0x75, 0x42, 0x79, 0x76, 0x0a, 0x4d, 0x69, 0x50, 0x49, 0x73, 0x30, 0x6c, 0x61, 0x55, 0x5a, 0x78, 0x32, 0x4b, 0x49, 0x31, 0x35, 0x71, 0x6c, 0x64, 0x47, 0x46, 0x39, 0x58, 0x31, 0x55, 0x76, 0x61, 0x33, 0x52, 0x4f, 0x67, 0x49, 0x52, 0x4c, 0x38, 0x59, 0x68, 0x4e, 0x49, 0x4c, 0x67, 0x4d, 0x33, 0x46, 0x45, 0x76, 0x30, 0x41, 0x56, 0x51, 0x56, 0x68, 0x68, 0x30, 0x48, 0x63, 0x74, 0x53, 0x53, 0x65, 0x50, 0x4d, 0x54, 0x59, 0x79, 0x50, 0x74, 0x77, 0x6e, 0x69, 0x39, 0x34, 0x6c, 0x6f, 0x4d, 0x67, 0x0a, 0x4e, 0x74, 0x35, 0x38, 0x44, 0x32, 0x6b, 0x54, 0x69, 0x4b, 0x56, 0x31, 0x4e, 0x70, 0x67, 0x49, 0x70, 0x73, 0x62, 0x66, 0x72, 0x4d, 0x37, 0x6a, 0x57, 0x4e, 0x61, 0x33, 0x50, 0x74, 0x36, 0x36, 0x38, 0x2b, 0x73, 0x30, 0x51, 0x4e, 0x69, 0x69, 0x67, 0x66, 0x56, 0x34, 0x50, 0x79, 0x2f, 0x56, 0x70, 0x66, 0x7a, 0x5a, 0x6f, 0x74, 0x52, 0x65, 0x42, 0x41, 0x34, 0x58, 0x72, 0x66, 0x35, 0x42, 0x38, 0x4f, 0x57, 0x79, 0x63, 0x76, 0x70, 0x45, 0x67, 0x6a, 0x4e, 0x43, 0x0a, 0x36, 0x43, 0x31, 0x59, 0x39, 0x31, 0x61, 0x4d, 0x59, 0x6a, 0x2b, 0x36, 0x51, 0x72, 0x43, 0x63, 0x44, 0x46, 0x78, 0x2b, 0x4c, 0x6d, 0x55, 0x6d, 0x58, 0x46, 0x4e, 0x50, 0x41, 0x4c, 0x4a, 0x34, 0x66, 0x71, 0x45, 0x4e, 0x6d, 0x53, 0x32, 0x4e, 0x75, 0x42, 0x32, 0x4f, 0x6f, 0x73, 0x53, 0x77, 0x2f, 0x57, 0x44, 0x51, 0x4d, 0x4b, 0x53, 0x4f, 0x79, 0x41, 0x52, 0x69, 0x71, 0x63, 0x54, 0x74, 0x4e, 0x64, 0x35, 0x36, 0x6c, 0x2b, 0x30, 0x4f, 0x4f, 0x46, 0x36, 0x53, 0x0a, 0x4c, 0x35, 0x4e, 0x77, 0x70, 0x61, 0x6d, 0x63, 0x62, 0x36, 0x64, 0x39, 0x45, 0x78, 0x31, 0x2b, 0x78, 0x67, 0x68, 0x49, 0x73, 0x56, 0x35, 0x6e, 0x36, 0x31, 0x45, 0x49, 0x4a, 0x65, 0x6e, 0x6d, 0x4a, 0x57, 0x74, 0x53, 0x4b, 0x5a, 0x47, 0x63, 0x30, 0x6a, 0x6c, 0x7a, 0x43, 0x46, 0x66, 0x65, 0x6d, 0x51, 0x61, 0x30, 0x57, 0x35, 0x30, 0x51, 0x42, 0x75, 0x48, 0x43, 0x41, 0x4b, 0x69, 0x34, 0x48, 0x45, 0x6f, 0x43, 0x43, 0x68, 0x54, 0x51, 0x77, 0x55, 0x48, 0x4b, 0x0a, 0x2b, 0x34, 0x77, 0x31, 0x49, 0x58, 0x32, 0x43, 0x4f, 0x50, 0x4b, 0x70, 0x56, 0x4a, 0x45, 0x5a, 0x4e, 0x5a, 0x4f, 0x55, 0x62, 0x57, 0x6f, 0x36, 0x78, 0x62, 0x4c, 0x51, 0x75, 0x34, 0x6d, 0x47, 0x6b, 0x2b, 0x69, 0x62, 0x79, 0x51, 0x38, 0x36, 0x70, 0x33, 0x71, 0x34, 0x6f, 0x66, 0x42, 0x34, 0x52, 0x76, 0x72, 0x38, 0x4e, 0x79, 0x2f, 0x6c, 0x69, 0x6f, 0x54, 0x7a, 0x33, 0x2f, 0x34, 0x45, 0x32, 0x61, 0x46, 0x6f, 0x6f, 0x43, 0x38, 0x6b, 0x34, 0x67, 0x6d, 0x56, 0x0a, 0x42, 0x74, 0x57, 0x56, 0x79, 0x75, 0x45, 0x6b, 0x6c, 0x75, 0x74, 0x38, 0x39, 0x70, 0x4d, 0x46, 0x75, 0x2b, 0x31, 0x7a, 0x36, 0x53, 0x33, 0x52, 0x64, 0x54, 0x6e, 0x58, 0x35, 0x79, 0x54, 0x62, 0x32, 0x45, 0x35, 0x66, 0x51, 0x34, 0x2b, 0x65, 0x30, 0x42, 0x51, 0x35, 0x76, 0x31, 0x56, 0x77, 0x53, 0x4a, 0x6c, 0x58, 0x4d, 0x62, 0x53, 0x63, 0x37, 0x6b, 0x71, 0x59, 0x41, 0x35, 0x59, 0x77, 0x48, 0x32, 0x41, 0x47, 0x37, 0x68, 0x73, 0x6a, 0x2f, 0x6f, 0x46, 0x67, 0x0a, 0x49, 0x78, 0x70, 0x48, 0x59, 0x6f, 0x57, 0x6c, 0x7a, 0x42, 0x6b, 0x30, 0x67, 0x47, 0x2b, 0x7a, 0x72, 0x42, 0x72, 0x6a, 0x6e, 0x2f, 0x42, 0x37, 0x53, 0x4b, 0x33, 0x56, 0x41, 0x64, 0x6c, 0x6e, 0x74, 0x71, 0x6c, 0x79, 0x6b, 0x2b, 0x6f, 0x74, 0x5a, 0x72, 0x57, 0x79, 0x75, 0x4f, 0x51, 0x39, 0x50, 0x4c, 0x4c, 0x76, 0x54, 0x49, 0x7a, 0x71, 0x36, 0x77, 0x65, 0x2f, 0x71, 0x7a, 0x57, 0x61, 0x56, 0x59, 0x61, 0x38, 0x47, 0x4b, 0x61, 0x31, 0x71, 0x46, 0x36, 0x30, 0x0a, 0x67, 0x32, 0x78, 0x72, 0x61, 0x55, 0x44, 0x54, 0x6e, 0x39, 0x7a, 0x78, 0x77, 0x32, 0x6c, 0x72, 0x75, 0x65, 0x46, 0x74, 0x43, 0x66, 0x54, 0x78, 0x71, 0x6c, 0x42, 0x32, 0x43, 0x6e, 0x70, 0x39, 0x65, 0x68, 0x65, 0x68, 0x56, 0x5a, 0x5a, 0x43, 0x6d, 0x54, 0x45, 0x4a, 0x33, 0x57, 0x41, 0x52, 0x6a, 0x51, 0x55, 0x77, 0x66, 0x75, 0x61, 0x4f, 0x52, 0x74, 0x47, 0x64, 0x46, 0x4e, 0x72, 0x48, 0x46, 0x2b, 0x51, 0x46, 0x6c, 0x6f, 0x7a, 0x45, 0x4a, 0x4c, 0x55, 0x62, 0x0a, 0x7a, 0x78, 0x51, 0x48, 0x73, 0x6b, 0x44, 0x34, 0x6f, 0x35, 0x35, 0x42, 0x68, 0x72, 0x77, 0x45, 0x30, 0x47, 0x75, 0x57, 0x79, 0x43, 0x71, 0x41, 0x4e, 0x50, 0x32, 0x2f, 0x37, 0x77, 0x61, 0x6a, 0x33, 0x56, 0x6a, 0x46, 0x68, 0x54, 0x30, 0x2b, 0x6a, 0x2f, 0x36, 0x65, 0x4b, 0x65, 0x43, 0x32, 0x75, 0x41, 0x6c, 0x6f, 0x47, 0x52, 0x77, 0x59, 0x51, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x66, 0x66, 0x69, 0x72, 0x6d, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x20, 0x45, 0x43, 0x43, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x42, 0x2f, 0x6a, 0x43, 0x43, 0x41, 0x59, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x64, 0x4a, 0x63, 0x6c, 0x69, 0x73, 0x63, 0x2f, 0x65, 0x6c, 0x51, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x4d, 0x77, 0x52, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x46, 0x44, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x30, 0x46, 0x6d, 0x5a, 0x6d, 0x6c, 0x79, 0x62, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x53, 0x41, 0x77, 0x48, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x64, 0x42, 0x5a, 0x6d, 0x5a, 0x70, 0x63, 0x6d, 0x31, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x51, 0x63, 0x6d, 0x56, 0x74, 0x61, 0x58, 0x56, 0x74, 0x49, 0x45, 0x56, 0x44, 0x51, 0x7a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x44, 0x41, 0x78, 0x0a, 0x4d, 0x6a, 0x6b, 0x78, 0x4e, 0x44, 0x49, 0x77, 0x4d, 0x6a, 0x52, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x44, 0x45, 0x79, 0x4d, 0x7a, 0x45, 0x78, 0x4e, 0x44, 0x49, 0x77, 0x4d, 0x6a, 0x52, 0x61, 0x4d, 0x45, 0x55, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x51, 0x77, 0x45, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x74, 0x42, 0x5a, 0x6d, 0x5a, 0x70, 0x63, 0x6d, 0x31, 0x55, 0x0a, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x44, 0x45, 0x67, 0x4d, 0x42, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x58, 0x51, 0x57, 0x5a, 0x6d, 0x61, 0x58, 0x4a, 0x74, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x55, 0x48, 0x4a, 0x6c, 0x62, 0x57, 0x6c, 0x31, 0x62, 0x53, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x0a, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x51, 0x4e, 0x4d, 0x46, 0x34, 0x62, 0x46, 0x5a, 0x30, 0x44, 0x30, 0x4b, 0x46, 0x35, 0x4e, 0x62, 0x63, 0x36, 0x50, 0x4a, 0x4a, 0x36, 0x79, 0x68, 0x55, 0x63, 0x7a, 0x57, 0x4c, 0x7a, 0x6e, 0x43, 0x5a, 0x63, 0x42, 0x7a, 0x33, 0x6c, 0x56, 0x50, 0x71, 0x6a, 0x31, 0x73, 0x77, 0x53, 0x36, 0x76, 0x51, 0x55, 0x58, 0x2b, 0x69, 0x4f, 0x47, 0x61, 0x73, 0x76, 0x4c, 0x6b, 0x6a, 0x6d, 0x72, 0x42, 0x68, 0x44, 0x65, 0x4b, 0x7a, 0x51, 0x0a, 0x4e, 0x38, 0x4f, 0x39, 0x73, 0x73, 0x30, 0x73, 0x35, 0x6b, 0x66, 0x69, 0x47, 0x75, 0x5a, 0x6a, 0x75, 0x44, 0x30, 0x75, 0x4c, 0x33, 0x6a, 0x45, 0x54, 0x39, 0x76, 0x30, 0x44, 0x36, 0x52, 0x6f, 0x54, 0x46, 0x56, 0x79, 0x61, 0x35, 0x55, 0x64, 0x54, 0x68, 0x68, 0x43, 0x6c, 0x58, 0x6a, 0x4d, 0x4e, 0x7a, 0x79, 0x52, 0x34, 0x70, 0x74, 0x6c, 0x4b, 0x79, 0x6d, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x0a, 0x42, 0x42, 0x53, 0x61, 0x72, 0x79, 0x6c, 0x36, 0x77, 0x42, 0x45, 0x31, 0x4e, 0x53, 0x5a, 0x52, 0x4d, 0x41, 0x44, 0x44, 0x61, 0x76, 0x35, 0x41, 0x31, 0x61, 0x37, 0x57, 0x50, 0x44, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x4b, 0x0a, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6e, 0x41, 0x44, 0x42, 0x6b, 0x41, 0x6a, 0x41, 0x58, 0x43, 0x66, 0x4f, 0x48, 0x69, 0x46, 0x42, 0x61, 0x72, 0x38, 0x6a, 0x41, 0x51, 0x72, 0x39, 0x48, 0x58, 0x2f, 0x56, 0x73, 0x61, 0x6f, 0x62, 0x67, 0x78, 0x43, 0x64, 0x30, 0x35, 0x44, 0x68, 0x54, 0x31, 0x77, 0x56, 0x2f, 0x47, 0x7a, 0x54, 0x6a, 0x78, 0x69, 0x2b, 0x7a, 0x79, 0x67, 0x6b, 0x38, 0x4e, 0x35, 0x33, 0x58, 0x0a, 0x35, 0x37, 0x68, 0x47, 0x38, 0x66, 0x32, 0x68, 0x34, 0x6e, 0x45, 0x43, 0x4d, 0x45, 0x4a, 0x5a, 0x68, 0x30, 0x50, 0x55, 0x55, 0x64, 0x2b, 0x36, 0x30, 0x77, 0x6b, 0x79, 0x57, 0x73, 0x36, 0x49, 0x66, 0x6c, 0x63, 0x39, 0x6e, 0x46, 0x39, 0x43, 0x61, 0x2f, 0x55, 0x48, 0x4c, 0x62, 0x58, 0x77, 0x67, 0x70, 0x50, 0x35, 0x57, 0x57, 0x2b, 0x75, 0x5a, 0x50, 0x70, 0x59, 0x35, 0x59, 0x73, 0x65, 0x34, 0x32, 0x4f, 0x2b, 0x74, 0x59, 0x48, 0x4e, 0x62, 0x77, 0x4b, 0x4d, 0x0a, 0x65, 0x51, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 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, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x75, 0x7a, 0x43, 0x43, 0x41, 0x71, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x44, 0x42, 0x45, 0x54, 0x41, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x42, 0x51, 0x55, 0x41, 0x4d, 0x48, 0x34, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x42, 0x4d, 0x4d, 0x53, 0x49, 0x77, 0x49, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x0a, 0x45, 0x78, 0x6c, 0x56, 0x62, 0x6d, 0x6c, 0x36, 0x5a, 0x58, 0x52, 0x76, 0x49, 0x46, 0x52, 0x6c, 0x59, 0x32, 0x68, 0x75, 0x62, 0x32, 0x78, 0x76, 0x5a, 0x32, 0x6c, 0x6c, 0x63, 0x79, 0x42, 0x54, 0x4c, 0x6b, 0x45, 0x75, 0x4d, 0x53, 0x63, 0x77, 0x4a, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x35, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x64, 0x57, 0x30, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x0a, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x78, 0x49, 0x6a, 0x41, 0x67, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x47, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x31, 0x62, 0x53, 0x42, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x47, 0x56, 0x6b, 0x49, 0x45, 0x35, 0x6c, 0x64, 0x48, 0x64, 0x76, 0x63, 0x6d, 0x73, 0x67, 0x51, 0x30, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x67, 0x78, 0x4d, 0x44, 0x49, 0x79, 0x0a, 0x4d, 0x54, 0x49, 0x77, 0x4e, 0x7a, 0x4d, 0x33, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x6a, 0x6b, 0x78, 0x4d, 0x6a, 0x4d, 0x78, 0x4d, 0x54, 0x49, 0x77, 0x4e, 0x7a, 0x4d, 0x33, 0x57, 0x6a, 0x42, 0x2b, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x51, 0x54, 0x44, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x5a, 0x56, 0x57, 0x35, 0x70, 0x65, 0x6d, 0x56, 0x30, 0x62, 0x79, 0x42, 0x55, 0x0a, 0x5a, 0x57, 0x4e, 0x6f, 0x62, 0x6d, 0x39, 0x73, 0x62, 0x32, 0x64, 0x70, 0x5a, 0x58, 0x4d, 0x67, 0x55, 0x79, 0x35, 0x42, 0x4c, 0x6a, 0x45, 0x6e, 0x4d, 0x43, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x65, 0x51, 0x32, 0x56, 0x79, 0x64, 0x48, 0x56, 0x74, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x0a, 0x4d, 0x53, 0x49, 0x77, 0x49, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x6c, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x64, 0x57, 0x30, 0x67, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x52, 0x6c, 0x5a, 0x43, 0x42, 0x4f, 0x5a, 0x58, 0x52, 0x33, 0x62, 0x33, 0x4a, 0x72, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x49, 0x49, 0x42, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x0a, 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x34, 0x2f, 0x74, 0x39, 0x6f, 0x33, 0x4b, 0x36, 0x77, 0x76, 0x44, 0x4a, 0x46, 0x49, 0x66, 0x31, 0x61, 0x77, 0x46, 0x4f, 0x34, 0x57, 0x35, 0x41, 0x42, 0x37, 0x70, 0x74, 0x4a, 0x31, 0x31, 0x2f, 0x39, 0x31, 0x73, 0x74, 0x73, 0x31, 0x72, 0x48, 0x55, 0x56, 0x2b, 0x72, 0x70, 0x44, 0x4b, 0x6d, 0x59, 0x59, 0x65, 0x32, 0x62, 0x67, 0x2b, 0x47, 0x30, 0x6a, 0x41, 0x43, 0x0a, 0x6c, 0x2f, 0x6a, 0x58, 0x61, 0x56, 0x65, 0x68, 0x47, 0x44, 0x6c, 0x64, 0x61, 0x6d, 0x52, 0x35, 0x78, 0x67, 0x46, 0x5a, 0x72, 0x44, 0x77, 0x78, 0x53, 0x6a, 0x68, 0x38, 0x30, 0x67, 0x54, 0x53, 0x53, 0x79, 0x6a, 0x6f, 0x49, 0x46, 0x38, 0x37, 0x42, 0x36, 0x4c, 0x4d, 0x54, 0x58, 0x50, 0x62, 0x38, 0x36, 0x35, 0x50, 0x78, 0x31, 0x62, 0x56, 0x57, 0x71, 0x65, 0x57, 0x69, 0x66, 0x72, 0x7a, 0x71, 0x32, 0x6a, 0x55, 0x49, 0x34, 0x5a, 0x5a, 0x4a, 0x38, 0x38, 0x4a, 0x0a, 0x4a, 0x37, 0x79, 0x73, 0x62, 0x6e, 0x4b, 0x44, 0x48, 0x44, 0x42, 0x79, 0x33, 0x2b, 0x43, 0x69, 0x36, 0x64, 0x4c, 0x68, 0x64, 0x48, 0x55, 0x5a, 0x76, 0x53, 0x71, 0x65, 0x65, 0x78, 0x56, 0x55, 0x42, 0x42, 0x76, 0x58, 0x51, 0x7a, 0x6d, 0x74, 0x56, 0x53, 0x6a, 0x46, 0x34, 0x68, 0x71, 0x37, 0x39, 0x4d, 0x44, 0x6b, 0x72, 0x6a, 0x68, 0x4a, 0x4d, 0x38, 0x78, 0x32, 0x68, 0x5a, 0x38, 0x35, 0x52, 0x64, 0x4b, 0x6b, 0x6e, 0x76, 0x49, 0x53, 0x6a, 0x46, 0x48, 0x34, 0x0a, 0x66, 0x4f, 0x51, 0x74, 0x66, 0x2f, 0x57, 0x73, 0x58, 0x2b, 0x73, 0x57, 0x6e, 0x37, 0x45, 0x74, 0x30, 0x62, 0x72, 0x4d, 0x6b, 0x55, 0x4a, 0x33, 0x54, 0x43, 0x58, 0x4a, 0x6b, 0x44, 0x68, 0x76, 0x32, 0x2f, 0x44, 0x4d, 0x2b, 0x34, 0x34, 0x65, 0x6c, 0x31, 0x6b, 0x2b, 0x31, 0x57, 0x42, 0x4f, 0x35, 0x67, 0x55, 0x6f, 0x37, 0x55, 0x6c, 0x35, 0x45, 0x30, 0x75, 0x36, 0x53, 0x4e, 0x73, 0x76, 0x2b, 0x58, 0x4c, 0x54, 0x4f, 0x63, 0x72, 0x2b, 0x48, 0x39, 0x67, 0x30, 0x0a, 0x63, 0x76, 0x57, 0x30, 0x51, 0x4d, 0x38, 0x78, 0x41, 0x63, 0x50, 0x73, 0x33, 0x68, 0x45, 0x74, 0x46, 0x31, 0x30, 0x66, 0x75, 0x46, 0x44, 0x52, 0x58, 0x68, 0x6d, 0x6e, 0x61, 0x64, 0x34, 0x48, 0x4d, 0x79, 0x6a, 0x4b, 0x55, 0x4a, 0x58, 0x35, 0x70, 0x31, 0x54, 0x4c, 0x56, 0x49, 0x5a, 0x51, 0x52, 0x61, 0x6e, 0x35, 0x53, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x0a, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x51, 0x49, 0x64, 0x73, 0x33, 0x4c, 0x42, 0x2f, 0x38, 0x6b, 0x39, 0x73, 0x58, 0x4e, 0x37, 0x62, 0x75, 0x51, 0x76, 0x4f, 0x4b, 0x45, 0x4e, 0x30, 0x5a, 0x31, 0x39, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x0a, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4b, 0x61, 0x6f, 0x72, 0x53, 0x4c, 0x4f, 0x41, 0x54, 0x32, 0x6d, 0x6f, 0x2f, 0x39, 0x69, 0x30, 0x45, 0x69, 0x64, 0x69, 0x31, 0x35, 0x79, 0x73, 0x48, 0x68, 0x45, 0x34, 0x39, 0x77, 0x63, 0x72, 0x77, 0x6e, 0x39, 0x49, 0x30, 0x6a, 0x36, 0x76, 0x53, 0x72, 0x45, 0x75, 0x56, 0x55, 0x45, 0x74, 0x52, 0x43, 0x6a, 0x0a, 0x6a, 0x53, 0x66, 0x65, 0x43, 0x34, 0x4a, 0x6a, 0x30, 0x4f, 0x37, 0x65, 0x44, 0x44, 0x64, 0x35, 0x51, 0x56, 0x73, 0x69, 0x73, 0x72, 0x43, 0x61, 0x51, 0x56, 0x79, 0x6d, 0x63, 0x4f, 0x44, 0x55, 0x30, 0x48, 0x66, 0x4c, 0x49, 0x39, 0x4d, 0x41, 0x34, 0x47, 0x78, 0x57, 0x4c, 0x2b, 0x46, 0x70, 0x44, 0x51, 0x33, 0x5a, 0x71, 0x72, 0x38, 0x68, 0x67, 0x56, 0x44, 0x5a, 0x42, 0x71, 0x57, 0x6f, 0x2f, 0x35, 0x55, 0x33, 0x30, 0x4b, 0x72, 0x2b, 0x34, 0x72, 0x50, 0x31, 0x0a, 0x6d, 0x53, 0x31, 0x46, 0x68, 0x49, 0x72, 0x6c, 0x51, 0x67, 0x6e, 0x58, 0x64, 0x41, 0x49, 0x76, 0x39, 0x34, 0x6e, 0x59, 0x6d, 0x65, 0x6d, 0x38, 0x4a, 0x39, 0x52, 0x48, 0x6a, 0x62, 0x6f, 0x4e, 0x52, 0x68, 0x78, 0x33, 0x7a, 0x78, 0x53, 0x6b, 0x48, 0x4c, 0x6d, 0x6b, 0x4d, 0x63, 0x53, 0x63, 0x4b, 0x48, 0x51, 0x44, 0x4e, 0x50, 0x38, 0x7a, 0x47, 0x53, 0x61, 0x6c, 0x36, 0x51, 0x31, 0x30, 0x74, 0x7a, 0x36, 0x58, 0x78, 0x6e, 0x62, 0x6f, 0x4a, 0x35, 0x61, 0x6a, 0x0a, 0x5a, 0x74, 0x33, 0x68, 0x72, 0x76, 0x4a, 0x42, 0x57, 0x38, 0x71, 0x59, 0x56, 0x6f, 0x4e, 0x7a, 0x63, 0x4f, 0x53, 0x47, 0x47, 0x74, 0x49, 0x78, 0x51, 0x62, 0x6f, 0x76, 0x76, 0x69, 0x30, 0x54, 0x57, 0x6e, 0x5a, 0x76, 0x54, 0x75, 0x68, 0x4f, 0x67, 0x51, 0x34, 0x2f, 0x57, 0x77, 0x4d, 0x69, 0x6f, 0x42, 0x4b, 0x2b, 0x5a, 0x6c, 0x67, 0x52, 0x53, 0x73, 0x73, 0x44, 0x78, 0x4c, 0x51, 0x71, 0x4b, 0x69, 0x32, 0x57, 0x46, 0x2b, 0x41, 0x35, 0x56, 0x4c, 0x78, 0x49, 0x0a, 0x30, 0x33, 0x59, 0x6e, 0x6e, 0x5a, 0x6f, 0x74, 0x42, 0x71, 0x62, 0x4a, 0x37, 0x44, 0x6e, 0x53, 0x71, 0x39, 0x75, 0x66, 0x6d, 0x67, 0x73, 0x6e, 0x41, 0x6a, 0x55, 0x70, 0x73, 0x55, 0x43, 0x56, 0x35, 0x2f, 0x6e, 0x6f, 0x6e, 0x46, 0x57, 0x49, 0x47, 0x55, 0x62, 0x57, 0x74, 0x7a, 0x54, 0x31, 0x66, 0x73, 0x34, 0x35, 0x6d, 0x74, 0x6b, 0x34, 0x38, 0x56, 0x48, 0x33, 0x54, 0x79, 0x77, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x57, 0x43, 0x41, 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, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x65, 0x7a, 0x43, 0x43, 0x41, 0x6d, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x66, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x55, 0x56, 0x7a, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x4a, 0x0a, 0x56, 0x45, 0x46, 0x4a, 0x56, 0x30, 0x46, 0x4f, 0x4c, 0x55, 0x4e, 0x42, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x44, 0x41, 0x64, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x53, 0x6f, 0x77, 0x4b, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x43, 0x46, 0x55, 0x56, 0x30, 0x4e, 0x42, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x0a, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x67, 0x77, 0x4f, 0x44, 0x49, 0x34, 0x4d, 0x44, 0x63, 0x79, 0x4e, 0x44, 0x4d, 0x7a, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x41, 0x78, 0x4d, 0x6a, 0x4d, 0x78, 0x4d, 0x54, 0x55, 0x31, 0x4f, 0x54, 0x55, 0x35, 0x57, 0x6a, 0x42, 0x66, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x55, 0x56, 0x7a, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x4a, 0x56, 0x45, 0x46, 0x4a, 0x56, 0x30, 0x46, 0x4f, 0x4c, 0x55, 0x4e, 0x42, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x44, 0x41, 0x64, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x53, 0x6f, 0x77, 0x4b, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x43, 0x46, 0x55, 0x56, 0x30, 0x4e, 0x42, 0x0a, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x0a, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43, 0x77, 0x66, 0x6e, 0x4b, 0x34, 0x70, 0x41, 0x4f, 0x55, 0x35, 0x71, 0x66, 0x65, 0x43, 0x54, 0x69, 0x52, 0x53, 0x68, 0x46, 0x41, 0x68, 0x36, 0x64, 0x38, 0x57, 0x57, 0x51, 0x55, 0x65, 0x37, 0x55, 0x52, 0x45, 0x4e, 0x33, 0x2b, 0x76, 0x39, 0x58, 0x41, 0x75, 0x31, 0x62, 0x69, 0x68, 0x53, 0x58, 0x30, 0x4e, 0x58, 0x49, 0x50, 0x2b, 0x46, 0x50, 0x51, 0x51, 0x65, 0x46, 0x45, 0x41, 0x63, 0x4b, 0x30, 0x48, 0x4d, 0x4d, 0x78, 0x0a, 0x51, 0x68, 0x5a, 0x48, 0x68, 0x54, 0x4d, 0x69, 0x64, 0x72, 0x49, 0x4b, 0x62, 0x77, 0x2f, 0x6c, 0x4a, 0x56, 0x42, 0x50, 0x68, 0x59, 0x61, 0x2b, 0x76, 0x35, 0x67, 0x75, 0x45, 0x47, 0x63, 0x65, 0x76, 0x68, 0x45, 0x46, 0x68, 0x67, 0x57, 0x51, 0x78, 0x46, 0x6e, 0x51, 0x66, 0x48, 0x67, 0x51, 0x73, 0x49, 0x42, 0x63, 0x74, 0x2b, 0x48, 0x48, 0x4b, 0x33, 0x58, 0x4c, 0x66, 0x4a, 0x2b, 0x75, 0x74, 0x64, 0x47, 0x64, 0x49, 0x7a, 0x64, 0x6a, 0x70, 0x39, 0x78, 0x43, 0x0a, 0x6f, 0x69, 0x32, 0x53, 0x42, 0x42, 0x74, 0x51, 0x77, 0x58, 0x75, 0x34, 0x50, 0x68, 0x76, 0x4a, 0x56, 0x67, 0x53, 0x4c, 0x4c, 0x31, 0x4b, 0x62, 0x72, 0x61, 0x6c, 0x57, 0x36, 0x63, 0x48, 0x2f, 0x72, 0x61, 0x6c, 0x59, 0x68, 0x7a, 0x43, 0x32, 0x67, 0x66, 0x65, 0x58, 0x52, 0x66, 0x77, 0x5a, 0x56, 0x7a, 0x73, 0x72, 0x62, 0x2b, 0x52, 0x48, 0x39, 0x4a, 0x6c, 0x46, 0x2f, 0x68, 0x33, 0x78, 0x2b, 0x4a, 0x65, 0x6a, 0x69, 0x42, 0x30, 0x33, 0x48, 0x46, 0x79, 0x50, 0x0a, 0x34, 0x48, 0x59, 0x6c, 0x6d, 0x6c, 0x44, 0x34, 0x6f, 0x46, 0x54, 0x2f, 0x52, 0x4a, 0x42, 0x32, 0x49, 0x39, 0x49, 0x79, 0x78, 0x73, 0x4f, 0x72, 0x42, 0x72, 0x2f, 0x38, 0x2b, 0x37, 0x2f, 0x7a, 0x72, 0x58, 0x32, 0x53, 0x59, 0x67, 0x4a, 0x62, 0x4b, 0x64, 0x4d, 0x31, 0x6f, 0x35, 0x4f, 0x61, 0x51, 0x32, 0x52, 0x67, 0x58, 0x62, 0x4c, 0x36, 0x4d, 0x76, 0x38, 0x37, 0x42, 0x4b, 0x39, 0x4e, 0x51, 0x47, 0x72, 0x35, 0x78, 0x2b, 0x50, 0x76, 0x49, 0x2f, 0x31, 0x72, 0x0a, 0x79, 0x2b, 0x55, 0x50, 0x69, 0x7a, 0x67, 0x4e, 0x37, 0x67, 0x72, 0x38, 0x2f, 0x67, 0x2b, 0x59, 0x6e, 0x7a, 0x41, 0x78, 0x33, 0x57, 0x78, 0x53, 0x5a, 0x66, 0x6d, 0x4c, 0x67, 0x62, 0x34, 0x69, 0x34, 0x52, 0x78, 0x59, 0x41, 0x37, 0x71, 0x52, 0x47, 0x34, 0x6b, 0x48, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x0a, 0x42, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x71, 0x4f, 0x46, 0x73, 0x6d, 0x6a, 0x64, 0x36, 0x4c, 0x57, 0x76, 0x4a, 0x50, 0x65, 0x6c, 0x53, 0x44, 0x47, 0x52, 0x6a, 0x6a, 0x43, 0x44, 0x57, 0x6d, 0x75, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x0a, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x45, 0x41, 0x50, 0x4e, 0x56, 0x33, 0x50, 0x64, 0x72, 0x66, 0x69, 0x62, 0x71, 0x48, 0x44, 0x41, 0x68, 0x55, 0x61, 0x69, 0x42, 0x51, 0x6b, 0x72, 0x36, 0x77, 0x51, 0x54, 0x32, 0x35, 0x4a, 0x6d, 0x53, 0x44, 0x43, 0x69, 0x2f, 0x6f, 0x51, 0x4d, 0x43, 0x58, 0x4b, 0x43, 0x65, 0x43, 0x4d, 0x45, 0x72, 0x4a, 0x6b, 0x2f, 0x39, 0x71, 0x35, 0x36, 0x59, 0x41, 0x66, 0x34, 0x6c, 0x43, 0x0a, 0x6d, 0x74, 0x59, 0x52, 0x35, 0x56, 0x50, 0x4f, 0x4c, 0x38, 0x7a, 0x79, 0x32, 0x67, 0x58, 0x45, 0x2f, 0x75, 0x4a, 0x51, 0x78, 0x44, 0x71, 0x47, 0x66, 0x63, 0x7a, 0x61, 0x66, 0x68, 0x41, 0x4a, 0x4f, 0x35, 0x49, 0x31, 0x4b, 0x6c, 0x4f, 0x79, 0x2f, 0x75, 0x73, 0x72, 0x42, 0x64, 0x6c, 0x73, 0x58, 0x65, 0x62, 0x51, 0x37, 0x39, 0x4e, 0x71, 0x5a, 0x70, 0x34, 0x56, 0x4b, 0x49, 0x56, 0x36, 0x36, 0x49, 0x49, 0x41, 0x72, 0x42, 0x36, 0x6e, 0x43, 0x57, 0x6c, 0x57, 0x0a, 0x51, 0x74, 0x4e, 0x6f, 0x55, 0x52, 0x69, 0x2b, 0x56, 0x4a, 0x71, 0x2f, 0x52, 0x45, 0x47, 0x36, 0x53, 0x62, 0x34, 0x67, 0x75, 0x6d, 0x6c, 0x63, 0x37, 0x72, 0x68, 0x33, 0x7a, 0x63, 0x35, 0x73, 0x48, 0x36, 0x32, 0x44, 0x6c, 0x68, 0x68, 0x39, 0x44, 0x72, 0x55, 0x55, 0x4f, 0x59, 0x54, 0x78, 0x4b, 0x4f, 0x6b, 0x74, 0x6f, 0x35, 0x35, 0x37, 0x48, 0x6e, 0x70, 0x79, 0x57, 0x6f, 0x4f, 0x7a, 0x65, 0x57, 0x2f, 0x76, 0x74, 0x50, 0x7a, 0x51, 0x43, 0x71, 0x56, 0x59, 0x0a, 0x54, 0x30, 0x62, 0x66, 0x2b, 0x32, 0x31, 0x35, 0x57, 0x66, 0x4b, 0x45, 0x49, 0x6c, 0x4b, 0x75, 0x44, 0x38, 0x7a, 0x37, 0x66, 0x44, 0x76, 0x6e, 0x61, 0x73, 0x70, 0x48, 0x59, 0x63, 0x4e, 0x36, 0x2b, 0x4e, 0x4f, 0x53, 0x42, 0x42, 0x2b, 0x34, 0x49, 0x49, 0x54, 0x68, 0x4e, 0x6c, 0x51, 0x57, 0x78, 0x30, 0x44, 0x65, 0x4f, 0x34, 0x70, 0x7a, 0x33, 0x4e, 0x2f, 0x47, 0x43, 0x55, 0x7a, 0x66, 0x37, 0x4e, 0x72, 0x2f, 0x31, 0x46, 0x4e, 0x43, 0x6f, 0x63, 0x6e, 0x79, 0x0a, 0x59, 0x68, 0x30, 0x69, 0x67, 0x7a, 0x79, 0x58, 0x78, 0x66, 0x6b, 0x5a, 0x59, 0x69, 0x65, 0x73, 0x5a, 0x53, 0x4c, 0x58, 0x30, 0x7a, 0x7a, 0x47, 0x35, 0x59, 0x36, 0x79, 0x55, 0x38, 0x78, 0x4a, 0x7a, 0x72, 0x77, 0x77, 0x2f, 0x6e, 0x73, 0x4f, 0x4d, 0x35, 0x44, 0x37, 0x37, 0x64, 0x49, 0x55, 0x6b, 0x52, 0x38, 0x48, 0x72, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x64, 0x7a, 0x43, 0x43, 0x41, 0x6c, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x64, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x4b, 0x55, 0x44, 0x45, 0x6c, 0x4d, 0x43, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x63, 0x0a, 0x55, 0x30, 0x56, 0x44, 0x54, 0x30, 0x30, 0x67, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x55, 0x33, 0x6c, 0x7a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x44, 0x54, 0x79, 0x34, 0x73, 0x54, 0x46, 0x52, 0x45, 0x4c, 0x6a, 0x45, 0x6e, 0x4d, 0x43, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x65, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x58, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x51, 0x32, 0x39, 0x74, 0x62, 0x58, 0x56, 0x75, 0x61, 0x57, 0x4e, 0x68, 0x0a, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x51, 0x30, 0x45, 0x79, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41, 0x35, 0x4d, 0x44, 0x55, 0x79, 0x4f, 0x54, 0x41, 0x31, 0x4d, 0x44, 0x41, 0x7a, 0x4f, 0x56, 0x6f, 0x58, 0x44, 0x54, 0x49, 0x35, 0x4d, 0x44, 0x55, 0x79, 0x4f, 0x54, 0x41, 0x31, 0x4d, 0x44, 0x41, 0x7a, 0x4f, 0x56, 0x6f, 0x77, 0x58, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x0a, 0x53, 0x6c, 0x41, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x48, 0x46, 0x4e, 0x46, 0x51, 0x30, 0x39, 0x4e, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x46, 0x4e, 0x35, 0x63, 0x33, 0x52, 0x6c, 0x62, 0x58, 0x4d, 0x67, 0x51, 0x30, 0x38, 0x75, 0x4c, 0x45, 0x78, 0x55, 0x52, 0x43, 0x34, 0x78, 0x4a, 0x7a, 0x41, 0x6c, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x48, 0x6c, 0x4e, 0x6c, 0x59, 0x33, 0x56, 0x79, 0x0a, 0x61, 0x58, 0x52, 0x35, 0x49, 0x45, 0x4e, 0x76, 0x62, 0x57, 0x31, 0x31, 0x62, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x45, 0x4e, 0x42, 0x4d, 0x6a, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x0a, 0x41, 0x4e, 0x41, 0x56, 0x4f, 0x56, 0x4b, 0x78, 0x55, 0x72, 0x4f, 0x36, 0x78, 0x56, 0x6d, 0x43, 0x78, 0x46, 0x31, 0x53, 0x72, 0x6a, 0x70, 0x44, 0x5a, 0x59, 0x42, 0x4c, 0x78, 0x2f, 0x4b, 0x57, 0x76, 0x4e, 0x73, 0x32, 0x6c, 0x39, 0x61, 0x6d, 0x5a, 0x49, 0x79, 0x6f, 0x58, 0x76, 0x44, 0x6a, 0x43, 0x68, 0x7a, 0x33, 0x33, 0x35, 0x63, 0x39, 0x53, 0x36, 0x37, 0x32, 0x58, 0x65, 0x77, 0x68, 0x74, 0x55, 0x47, 0x72, 0x7a, 0x62, 0x6c, 0x2b, 0x64, 0x70, 0x2b, 0x2b, 0x0a, 0x2b, 0x54, 0x34, 0x32, 0x4e, 0x4b, 0x41, 0x37, 0x77, 0x66, 0x59, 0x78, 0x45, 0x55, 0x56, 0x30, 0x6b, 0x7a, 0x31, 0x58, 0x67, 0x4d, 0x58, 0x35, 0x69, 0x5a, 0x6e, 0x4b, 0x35, 0x61, 0x74, 0x71, 0x31, 0x4c, 0x58, 0x61, 0x51, 0x5a, 0x41, 0x51, 0x77, 0x64, 0x62, 0x57, 0x51, 0x6f, 0x6e, 0x43, 0x76, 0x2f, 0x51, 0x34, 0x45, 0x70, 0x56, 0x4d, 0x56, 0x41, 0x58, 0x33, 0x4e, 0x75, 0x52, 0x46, 0x67, 0x33, 0x73, 0x55, 0x5a, 0x64, 0x62, 0x63, 0x44, 0x45, 0x33, 0x52, 0x0a, 0x33, 0x6e, 0x34, 0x4d, 0x71, 0x7a, 0x76, 0x45, 0x46, 0x62, 0x34, 0x36, 0x56, 0x71, 0x5a, 0x61, 0x62, 0x33, 0x5a, 0x70, 0x55, 0x71, 0x6c, 0x36, 0x75, 0x63, 0x6a, 0x72, 0x61, 0x70, 0x70, 0x64, 0x55, 0x74, 0x41, 0x74, 0x43, 0x6d, 0x73, 0x31, 0x46, 0x67, 0x6b, 0x51, 0x68, 0x4e, 0x42, 0x71, 0x79, 0x6a, 0x6f, 0x47, 0x41, 0x44, 0x64, 0x48, 0x35, 0x48, 0x35, 0x58, 0x54, 0x7a, 0x2b, 0x4c, 0x36, 0x32, 0x65, 0x34, 0x69, 0x4b, 0x72, 0x46, 0x76, 0x6c, 0x4e, 0x56, 0x0a, 0x73, 0x70, 0x48, 0x45, 0x66, 0x62, 0x6d, 0x77, 0x68, 0x52, 0x6b, 0x47, 0x65, 0x43, 0x37, 0x62, 0x59, 0x52, 0x72, 0x36, 0x68, 0x66, 0x56, 0x4b, 0x6b, 0x61, 0x48, 0x6e, 0x46, 0x74, 0x57, 0x4f, 0x6f, 0x6a, 0x6e, 0x66, 0x6c, 0x4c, 0x68, 0x77, 0x48, 0x79, 0x67, 0x2f, 0x69, 0x2f, 0x78, 0x41, 0x58, 0x6d, 0x4f, 0x44, 0x50, 0x49, 0x4d, 0x71, 0x47, 0x70, 0x6c, 0x72, 0x7a, 0x39, 0x35, 0x5a, 0x61, 0x6a, 0x76, 0x38, 0x62, 0x78, 0x62, 0x58, 0x48, 0x2f, 0x31, 0x4b, 0x0a, 0x45, 0x4f, 0x74, 0x4f, 0x67, 0x68, 0x59, 0x36, 0x72, 0x43, 0x63, 0x4d, 0x55, 0x2f, 0x47, 0x74, 0x31, 0x53, 0x53, 0x77, 0x61, 0x77, 0x4e, 0x51, 0x77, 0x53, 0x30, 0x38, 0x46, 0x74, 0x31, 0x45, 0x4e, 0x43, 0x63, 0x61, 0x64, 0x66, 0x73, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x41, 0x71, 0x46, 0x71, 0x58, 0x64, 0x6c, 0x42, 0x5a, 0x68, 0x38, 0x0a, 0x51, 0x49, 0x48, 0x34, 0x44, 0x35, 0x63, 0x73, 0x4f, 0x50, 0x45, 0x4b, 0x37, 0x44, 0x7a, 0x50, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x0a, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x42, 0x4d, 0x4f, 0x71, 0x4e, 0x45, 0x72, 0x4c, 0x6c, 0x46, 0x73, 0x63, 0x65, 0x54, 0x66, 0x73, 0x67, 0x4c, 0x43, 0x6b, 0x4c, 0x66, 0x5a, 0x4f, 0x6f, 0x63, 0x37, 0x6c, 0x6c, 0x73, 0x43, 0x4c, 0x71, 0x4a, 0x58, 0x32, 0x72, 0x4b, 0x53, 0x70, 0x57, 0x65, 0x65, 0x6f, 0x38, 0x48, 0x78, 0x64, 0x70, 0x46, 0x63, 0x6f, 0x4a, 0x78, 0x44, 0x6a, 0x72, 0x53, 0x7a, 0x47, 0x2b, 0x6e, 0x74, 0x4b, 0x45, 0x6a, 0x0a, 0x75, 0x2f, 0x59, 0x6b, 0x6e, 0x38, 0x73, 0x58, 0x2f, 0x6f, 0x79, 0x6d, 0x7a, 0x73, 0x4c, 0x53, 0x32, 0x38, 0x79, 0x4e, 0x2f, 0x48, 0x48, 0x38, 0x41, 0x79, 0x6e, 0x42, 0x62, 0x46, 0x30, 0x7a, 0x58, 0x32, 0x53, 0x32, 0x5a, 0x54, 0x75, 0x4a, 0x62, 0x78, 0x68, 0x32, 0x65, 0x50, 0x58, 0x63, 0x6f, 0x6b, 0x67, 0x66, 0x47, 0x54, 0x2b, 0x4f, 0x6b, 0x2b, 0x76, 0x78, 0x2b, 0x68, 0x66, 0x75, 0x7a, 0x55, 0x37, 0x6a, 0x42, 0x42, 0x4a, 0x56, 0x31, 0x75, 0x58, 0x6b, 0x0a, 0x33, 0x66, 0x73, 0x2b, 0x42, 0x58, 0x7a, 0x69, 0x48, 0x56, 0x37, 0x47, 0x70, 0x37, 0x79, 0x58, 0x54, 0x32, 0x67, 0x36, 0x39, 0x65, 0x6b, 0x75, 0x43, 0x6b, 0x4f, 0x32, 0x72, 0x31, 0x64, 0x63, 0x59, 0x6d, 0x68, 0x38, 0x74, 0x2f, 0x32, 0x6a, 0x69, 0x6f, 0x53, 0x67, 0x72, 0x47, 0x4b, 0x2b, 0x4b, 0x77, 0x6d, 0x48, 0x4e, 0x50, 0x42, 0x71, 0x41, 0x62, 0x75, 0x62, 0x4b, 0x56, 0x59, 0x38, 0x2f, 0x67, 0x41, 0x33, 0x7a, 0x79, 0x4e, 0x73, 0x38, 0x55, 0x36, 0x71, 0x0a, 0x74, 0x6e, 0x52, 0x47, 0x45, 0x6d, 0x79, 0x52, 0x37, 0x6a, 0x54, 0x56, 0x37, 0x4a, 0x71, 0x52, 0x35, 0x30, 0x53, 0x2b, 0x6b, 0x44, 0x46, 0x79, 0x31, 0x55, 0x6b, 0x43, 0x39, 0x67, 0x4c, 0x6c, 0x39, 0x42, 0x2f, 0x72, 0x66, 0x4e, 0x6d, 0x57, 0x56, 0x61, 0x6e, 0x2f, 0x37, 0x49, 0x72, 0x35, 0x6d, 0x55, 0x66, 0x2f, 0x4e, 0x56, 0x6f, 0x43, 0x71, 0x67, 0x54, 0x4c, 0x69, 0x6c, 0x75, 0x48, 0x63, 0x53, 0x6d, 0x52, 0x76, 0x61, 0x53, 0x30, 0x65, 0x67, 0x32, 0x39, 0x0a, 0x6d, 0x76, 0x56, 0x58, 0x49, 0x77, 0x41, 0x48, 0x49, 0x52, 0x63, 0x2f, 0x53, 0x6a, 0x6e, 0x52, 0x42, 0x55, 0x6b, 0x4c, 0x70, 0x37, 0x59, 0x33, 0x67, 0x61, 0x56, 0x64, 0x6a, 0x4b, 0x6f, 0x7a, 0x58, 0x6f, 0x45, 0x6f, 0x66, 0x4b, 0x64, 0x39, 0x4a, 0x2b, 0x73, 0x41, 0x72, 0x6f, 0x30, 0x33, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x61, 0x6c, 0x69, 0x73, 0x20, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x75, 0x7a, 0x43, 0x43, 0x41, 0x36, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x56, 0x77, 0x6f, 0x52, 0x6c, 0x30, 0x4c, 0x45, 0x34, 0x38, 0x77, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x61, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x53, 0x56, 0x51, 0x78, 0x44, 0x6a, 0x41, 0x4d, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x4d, 0x42, 0x55, 0x31, 0x70, 0x62, 0x47, 0x46, 0x75, 0x4d, 0x53, 0x4d, 0x77, 0x49, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x42, 0x70, 0x42, 0x59, 0x33, 0x52, 0x68, 0x62, 0x47, 0x6c, 0x7a, 0x49, 0x46, 0x4d, 0x75, 0x63, 0x43, 0x35, 0x42, 0x4c, 0x69, 0x38, 0x77, 0x4d, 0x7a, 0x4d, 0x31, 0x4f, 0x44, 0x55, 0x79, 0x4d, 0x44, 0x6b, 0x32, 0x4e, 0x7a, 0x45, 0x6e, 0x4d, 0x43, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x41, 0x77, 0x77, 0x65, 0x51, 0x57, 0x4e, 0x30, 0x59, 0x57, 0x78, 0x70, 0x63, 0x79, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x5a, 0x57, 0x35, 0x30, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x78, 0x4d, 0x44, 0x6b, 0x79, 0x4d, 0x6a, 0x45, 0x78, 0x4d, 0x6a, 0x49, 0x77, 0x4d, 0x6c, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x77, 0x4d, 0x44, 0x6b, 0x79, 0x0a, 0x4d, 0x6a, 0x45, 0x78, 0x4d, 0x6a, 0x49, 0x77, 0x4d, 0x6c, 0x6f, 0x77, 0x61, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x53, 0x56, 0x51, 0x78, 0x44, 0x6a, 0x41, 0x4d, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x4d, 0x42, 0x55, 0x31, 0x70, 0x62, 0x47, 0x46, 0x75, 0x4d, 0x53, 0x4d, 0x77, 0x49, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x42, 0x70, 0x42, 0x59, 0x33, 0x52, 0x68, 0x62, 0x47, 0x6c, 0x7a, 0x0a, 0x49, 0x46, 0x4d, 0x75, 0x63, 0x43, 0x35, 0x42, 0x4c, 0x69, 0x38, 0x77, 0x4d, 0x7a, 0x4d, 0x31, 0x4f, 0x44, 0x55, 0x79, 0x4d, 0x44, 0x6b, 0x32, 0x4e, 0x7a, 0x45, 0x6e, 0x4d, 0x43, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x65, 0x51, 0x57, 0x4e, 0x30, 0x59, 0x57, 0x78, 0x70, 0x63, 0x79, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x5a, 0x57, 0x35, 0x30, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x0a, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x45, 0x41, 0x70, 0x38, 0x62, 0x45, 0x70, 0x53, 0x6d, 0x6b, 0x4c, 0x4f, 0x2f, 0x6c, 0x47, 0x4d, 0x57, 0x77, 0x55, 0x4b, 0x4e, 0x76, 0x55, 0x54, 0x75, 0x66, 0x43, 0x6c, 0x72, 0x4a, 0x0a, 0x77, 0x6b, 0x67, 0x34, 0x43, 0x73, 0x49, 0x63, 0x6f, 0x42, 0x68, 0x2f, 0x6b, 0x62, 0x57, 0x48, 0x75, 0x55, 0x41, 0x2f, 0x33, 0x52, 0x31, 0x6f, 0x48, 0x77, 0x69, 0x44, 0x31, 0x53, 0x30, 0x65, 0x69, 0x4b, 0x44, 0x34, 0x6a, 0x31, 0x61, 0x50, 0x62, 0x5a, 0x6b, 0x43, 0x6b, 0x70, 0x41, 0x57, 0x31, 0x56, 0x38, 0x49, 0x62, 0x49, 0x6e, 0x58, 0x34, 0x61, 0x79, 0x38, 0x49, 0x4d, 0x4b, 0x78, 0x34, 0x49, 0x4e, 0x52, 0x69, 0x6d, 0x6c, 0x4e, 0x41, 0x4a, 0x5a, 0x61, 0x0a, 0x62, 0x79, 0x2f, 0x41, 0x52, 0x48, 0x36, 0x6a, 0x44, 0x75, 0x53, 0x52, 0x7a, 0x56, 0x6a, 0x75, 0x33, 0x50, 0x76, 0x48, 0x48, 0x6b, 0x56, 0x48, 0x33, 0x53, 0x65, 0x35, 0x43, 0x41, 0x47, 0x66, 0x70, 0x69, 0x45, 0x64, 0x39, 0x55, 0x45, 0x74, 0x4c, 0x30, 0x7a, 0x39, 0x4b, 0x4b, 0x33, 0x67, 0x69, 0x71, 0x30, 0x69, 0x74, 0x46, 0x5a, 0x6c, 0x6a, 0x6f, 0x5a, 0x55, 0x6a, 0x35, 0x4e, 0x44, 0x4b, 0x64, 0x34, 0x35, 0x52, 0x6e, 0x69, 0x6a, 0x4d, 0x43, 0x4f, 0x36, 0x0a, 0x7a, 0x66, 0x42, 0x39, 0x45, 0x31, 0x66, 0x41, 0x58, 0x64, 0x4b, 0x44, 0x61, 0x30, 0x68, 0x4d, 0x78, 0x4b, 0x75, 0x66, 0x67, 0x46, 0x70, 0x62, 0x4f, 0x72, 0x33, 0x4a, 0x70, 0x79, 0x49, 0x2f, 0x67, 0x43, 0x63, 0x7a, 0x57, 0x77, 0x36, 0x33, 0x69, 0x67, 0x78, 0x64, 0x42, 0x7a, 0x63, 0x49, 0x79, 0x32, 0x7a, 0x53, 0x65, 0x6b, 0x63, 0x69, 0x52, 0x44, 0x58, 0x46, 0x7a, 0x4d, 0x77, 0x75, 0x6a, 0x74, 0x30, 0x71, 0x37, 0x62, 0x64, 0x39, 0x5a, 0x67, 0x31, 0x66, 0x0a, 0x59, 0x56, 0x45, 0x69, 0x56, 0x52, 0x76, 0x6a, 0x52, 0x75, 0x50, 0x6a, 0x50, 0x64, 0x41, 0x31, 0x59, 0x70, 0x72, 0x62, 0x72, 0x78, 0x54, 0x49, 0x57, 0x36, 0x48, 0x4d, 0x69, 0x52, 0x76, 0x68, 0x4d, 0x43, 0x62, 0x38, 0x6f, 0x4a, 0x73, 0x66, 0x67, 0x61, 0x64, 0x48, 0x48, 0x77, 0x54, 0x72, 0x6f, 0x7a, 0x6d, 0x53, 0x42, 0x70, 0x2b, 0x5a, 0x30, 0x37, 0x2f, 0x54, 0x36, 0x6b, 0x39, 0x51, 0x6e, 0x42, 0x6e, 0x2b, 0x6c, 0x6f, 0x63, 0x65, 0x50, 0x47, 0x58, 0x32, 0x0a, 0x6f, 0x78, 0x67, 0x6b, 0x67, 0x34, 0x59, 0x51, 0x35, 0x31, 0x51, 0x2b, 0x71, 0x44, 0x70, 0x32, 0x4a, 0x45, 0x2b, 0x42, 0x49, 0x63, 0x58, 0x6a, 0x44, 0x77, 0x4c, 0x34, 0x6b, 0x35, 0x52, 0x48, 0x49, 0x4c, 0x76, 0x2b, 0x31, 0x41, 0x37, 0x54, 0x61, 0x4c, 0x6e, 0x64, 0x78, 0x48, 0x71, 0x45, 0x67, 0x75, 0x4e, 0x54, 0x56, 0x48, 0x6e, 0x64, 0x32, 0x35, 0x7a, 0x53, 0x38, 0x67, 0x65, 0x62, 0x4c, 0x72, 0x61, 0x38, 0x50, 0x75, 0x32, 0x46, 0x62, 0x65, 0x38, 0x6c, 0x0a, 0x45, 0x66, 0x4b, 0x58, 0x47, 0x6b, 0x4a, 0x68, 0x39, 0x30, 0x71, 0x58, 0x36, 0x49, 0x75, 0x78, 0x45, 0x41, 0x66, 0x36, 0x5a, 0x59, 0x47, 0x79, 0x6f, 0x6a, 0x6e, 0x50, 0x39, 0x7a, 0x7a, 0x2f, 0x47, 0x50, 0x76, 0x47, 0x38, 0x56, 0x71, 0x4c, 0x57, 0x65, 0x49, 0x43, 0x72, 0x48, 0x75, 0x53, 0x30, 0x45, 0x34, 0x55, 0x54, 0x31, 0x6c, 0x46, 0x39, 0x67, 0x78, 0x65, 0x4b, 0x46, 0x2b, 0x77, 0x36, 0x44, 0x39, 0x46, 0x7a, 0x38, 0x2b, 0x76, 0x6d, 0x32, 0x2f, 0x37, 0x0a, 0x68, 0x4e, 0x4e, 0x33, 0x57, 0x70, 0x56, 0x76, 0x72, 0x4a, 0x53, 0x45, 0x6e, 0x75, 0x36, 0x38, 0x77, 0x45, 0x71, 0x50, 0x53, 0x70, 0x50, 0x34, 0x52, 0x43, 0x48, 0x69, 0x4d, 0x55, 0x56, 0x68, 0x55, 0x45, 0x34, 0x51, 0x32, 0x4f, 0x4d, 0x31, 0x66, 0x45, 0x77, 0x5a, 0x74, 0x4e, 0x34, 0x46, 0x76, 0x36, 0x4d, 0x47, 0x6e, 0x38, 0x69, 0x31, 0x7a, 0x65, 0x51, 0x66, 0x31, 0x78, 0x63, 0x47, 0x44, 0x58, 0x71, 0x56, 0x64, 0x46, 0x55, 0x4e, 0x61, 0x42, 0x72, 0x38, 0x0a, 0x45, 0x42, 0x74, 0x69, 0x5a, 0x4a, 0x31, 0x74, 0x34, 0x4a, 0x57, 0x67, 0x77, 0x35, 0x51, 0x48, 0x56, 0x77, 0x30, 0x55, 0x35, 0x72, 0x30, 0x46, 0x2b, 0x37, 0x69, 0x66, 0x35, 0x74, 0x2b, 0x4c, 0x34, 0x73, 0x62, 0x6e, 0x66, 0x70, 0x62, 0x32, 0x55, 0x38, 0x57, 0x41, 0x4e, 0x46, 0x41, 0x6f, 0x57, 0x50, 0x41, 0x53, 0x55, 0x48, 0x45, 0x58, 0x4d, 0x4c, 0x72, 0x6d, 0x65, 0x47, 0x4f, 0x38, 0x39, 0x4c, 0x4b, 0x74, 0x6d, 0x79, 0x75, 0x79, 0x2f, 0x75, 0x45, 0x35, 0x0a, 0x6a, 0x46, 0x36, 0x36, 0x43, 0x79, 0x43, 0x55, 0x33, 0x6e, 0x75, 0x44, 0x75, 0x50, 0x2f, 0x6a, 0x56, 0x6f, 0x32, 0x33, 0x45, 0x65, 0x6b, 0x37, 0x6a, 0x50, 0x4b, 0x78, 0x77, 0x56, 0x32, 0x64, 0x70, 0x41, 0x74, 0x4d, 0x4b, 0x39, 0x6d, 0x79, 0x47, 0x50, 0x57, 0x31, 0x6e, 0x30, 0x73, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x6a, 0x4d, 0x47, 0x45, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x46, 0x4c, 0x59, 0x0a, 0x69, 0x44, 0x72, 0x49, 0x6e, 0x33, 0x68, 0x6d, 0x37, 0x59, 0x6e, 0x7a, 0x65, 0x7a, 0x68, 0x77, 0x6c, 0x4d, 0x6b, 0x43, 0x41, 0x6a, 0x62, 0x51, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6a, 0x42, 0x42, 0x67, 0x77, 0x46, 0x6f, 0x41, 0x55, 0x55, 0x74, 0x69, 0x49, 0x4f, 0x73, 0x69, 0x66, 0x65, 0x47, 0x62, 0x74, 0x0a, 0x69, 0x66, 0x4e, 0x37, 0x4f, 0x48, 0x43, 0x55, 0x79, 0x51, 0x49, 0x43, 0x4e, 0x74, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x41, 0x51, 0x41, 0x4c, 0x65, 0x33, 0x4b, 0x48, 0x77, 0x47, 0x43, 0x6d, 0x53, 0x55, 0x79, 0x49, 0x0a, 0x57, 0x4f, 0x59, 0x64, 0x69, 0x50, 0x63, 0x55, 0x5a, 0x45, 0x69, 0x6d, 0x32, 0x46, 0x67, 0x4b, 0x44, 0x6b, 0x38, 0x54, 0x4e, 0x64, 0x38, 0x31, 0x48, 0x64, 0x54, 0x74, 0x42, 0x6a, 0x48, 0x49, 0x67, 0x54, 0x35, 0x71, 0x31, 0x64, 0x30, 0x37, 0x47, 0x6a, 0x4c, 0x75, 0x6b, 0x44, 0x30, 0x52, 0x30, 0x69, 0x37, 0x30, 0x6a, 0x73, 0x4e, 0x6a, 0x4c, 0x69, 0x4e, 0x6d, 0x73, 0x47, 0x65, 0x2b, 0x62, 0x37, 0x62, 0x41, 0x45, 0x7a, 0x6c, 0x67, 0x71, 0x71, 0x49, 0x30, 0x0a, 0x4a, 0x5a, 0x4e, 0x31, 0x55, 0x74, 0x36, 0x6e, 0x6e, 0x61, 0x30, 0x4f, 0x68, 0x34, 0x6c, 0x53, 0x63, 0x57, 0x6f, 0x57, 0x50, 0x42, 0x6b, 0x64, 0x67, 0x2f, 0x69, 0x61, 0x4b, 0x57, 0x57, 0x2b, 0x39, 0x44, 0x2b, 0x61, 0x32, 0x66, 0x44, 0x7a, 0x57, 0x6f, 0x63, 0x68, 0x63, 0x59, 0x42, 0x4e, 0x79, 0x2b, 0x41, 0x34, 0x6d, 0x7a, 0x2b, 0x37, 0x2b, 0x75, 0x41, 0x77, 0x54, 0x63, 0x2b, 0x47, 0x30, 0x32, 0x55, 0x51, 0x47, 0x52, 0x6a, 0x52, 0x6c, 0x77, 0x4b, 0x78, 0x0a, 0x4b, 0x33, 0x4a, 0x43, 0x61, 0x4b, 0x79, 0x67, 0x76, 0x55, 0x35, 0x61, 0x32, 0x68, 0x69, 0x2f, 0x61, 0x35, 0x69, 0x42, 0x30, 0x50, 0x32, 0x61, 0x76, 0x6c, 0x34, 0x56, 0x53, 0x4d, 0x30, 0x52, 0x46, 0x62, 0x6e, 0x41, 0x4b, 0x56, 0x79, 0x30, 0x36, 0x49, 0x6a, 0x33, 0x50, 0x6a, 0x61, 0x75, 0x74, 0x32, 0x4c, 0x39, 0x48, 0x6d, 0x4c, 0x65, 0x63, 0x48, 0x67, 0x51, 0x48, 0x45, 0x68, 0x62, 0x32, 0x72, 0x79, 0x6b, 0x4f, 0x4c, 0x70, 0x6e, 0x37, 0x56, 0x55, 0x2b, 0x0a, 0x58, 0x6c, 0x66, 0x66, 0x31, 0x41, 0x4e, 0x41, 0x54, 0x49, 0x47, 0x6b, 0x30, 0x6b, 0x39, 0x6a, 0x70, 0x77, 0x6c, 0x43, 0x43, 0x52, 0x54, 0x38, 0x41, 0x4b, 0x6e, 0x43, 0x67, 0x48, 0x4e, 0x50, 0x4c, 0x73, 0x42, 0x41, 0x32, 0x52, 0x46, 0x37, 0x53, 0x4f, 0x70, 0x36, 0x41, 0x73, 0x44, 0x54, 0x36, 0x79, 0x67, 0x42, 0x4a, 0x6c, 0x68, 0x30, 0x77, 0x63, 0x42, 0x7a, 0x49, 0x6d, 0x32, 0x54, 0x6c, 0x66, 0x30, 0x35, 0x66, 0x62, 0x73, 0x71, 0x34, 0x2f, 0x61, 0x43, 0x0a, 0x34, 0x79, 0x79, 0x58, 0x58, 0x30, 0x34, 0x66, 0x6b, 0x5a, 0x54, 0x36, 0x2f, 0x69, 0x79, 0x6a, 0x32, 0x48, 0x59, 0x61, 0x75, 0x45, 0x32, 0x79, 0x4f, 0x45, 0x2b, 0x62, 0x2b, 0x68, 0x31, 0x49, 0x59, 0x48, 0x6b, 0x6d, 0x34, 0x76, 0x50, 0x39, 0x71, 0x64, 0x43, 0x61, 0x36, 0x48, 0x43, 0x50, 0x53, 0x58, 0x72, 0x57, 0x35, 0x62, 0x30, 0x4b, 0x44, 0x74, 0x73, 0x74, 0x38, 0x34, 0x32, 0x2f, 0x36, 0x2b, 0x4f, 0x6b, 0x66, 0x63, 0x76, 0x48, 0x6c, 0x58, 0x48, 0x6f, 0x0a, 0x32, 0x71, 0x4e, 0x38, 0x78, 0x63, 0x4c, 0x34, 0x64, 0x4a, 0x49, 0x45, 0x47, 0x34, 0x61, 0x73, 0x70, 0x43, 0x4a, 0x54, 0x51, 0x4c, 0x61, 0x73, 0x2f, 0x6b, 0x78, 0x32, 0x7a, 0x2f, 0x75, 0x55, 0x4d, 0x73, 0x41, 0x31, 0x6e, 0x33, 0x59, 0x2f, 0x62, 0x75, 0x57, 0x51, 0x62, 0x71, 0x43, 0x6d, 0x4a, 0x71, 0x4b, 0x34, 0x4c, 0x4c, 0x37, 0x52, 0x4b, 0x34, 0x58, 0x39, 0x70, 0x32, 0x6a, 0x49, 0x75, 0x67, 0x45, 0x72, 0x73, 0x57, 0x78, 0x30, 0x48, 0x62, 0x68, 0x7a, 0x0a, 0x6c, 0x65, 0x66, 0x75, 0x74, 0x38, 0x63, 0x6c, 0x38, 0x41, 0x42, 0x4d, 0x41, 0x4c, 0x4a, 0x2b, 0x74, 0x67, 0x75, 0x4c, 0x48, 0x50, 0x50, 0x41, 0x55, 0x4a, 0x34, 0x6c, 0x75, 0x65, 0x41, 0x49, 0x33, 0x6a, 0x5a, 0x6d, 0x2f, 0x7a, 0x65, 0x6c, 0x30, 0x62, 0x74, 0x55, 0x5a, 0x43, 0x7a, 0x4a, 0x4a, 0x37, 0x56, 0x4c, 0x6b, 0x6e, 0x35, 0x6c, 0x2f, 0x39, 0x4d, 0x74, 0x34, 0x62, 0x6c, 0x4f, 0x76, 0x48, 0x2b, 0x6b, 0x51, 0x53, 0x47, 0x51, 0x51, 0x58, 0x65, 0x6d, 0x0a, 0x4f, 0x52, 0x2f, 0x71, 0x6e, 0x75, 0x4f, 0x66, 0x30, 0x47, 0x5a, 0x76, 0x42, 0x65, 0x79, 0x71, 0x64, 0x6e, 0x36, 0x2f, 0x61, 0x78, 0x61, 0x67, 0x36, 0x37, 0x58, 0x48, 0x2f, 0x4a, 0x4a, 0x55, 0x4c, 0x79, 0x73, 0x52, 0x4a, 0x79, 0x55, 0x33, 0x65, 0x45, 0x78, 0x52, 0x61, 0x72, 0x44, 0x7a, 0x7a, 0x46, 0x68, 0x64, 0x46, 0x50, 0x46, 0x71, 0x53, 0x42, 0x58, 0x2f, 0x77, 0x67, 0x65, 0x32, 0x73, 0x59, 0x30, 0x50, 0x6a, 0x6c, 0x78, 0x51, 0x52, 0x72, 0x4d, 0x39, 0x0a, 0x76, 0x77, 0x47, 0x59, 0x54, 0x37, 0x4a, 0x5a, 0x56, 0x45, 0x63, 0x2b, 0x4e, 0x48, 0x74, 0x34, 0x62, 0x56, 0x61, 0x54, 0x4c, 0x6e, 0x50, 0x71, 0x5a, 0x69, 0x68, 0x34, 0x7a, 0x52, 0x30, 0x55, 0x76, 0x36, 0x43, 0x50, 0x4c, 0x79, 0x36, 0x34, 0x4c, 0x6f, 0x37, 0x79, 0x46, 0x49, 0x72, 0x4d, 0x36, 0x62, 0x56, 0x38, 0x2b, 0x32, 0x79, 0x64, 0x44, 0x4b, 0x58, 0x68, 0x6c, 0x67, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x42, 0x75, 0x79, 0x70, 0x61, 0x73, 0x73, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x57, 0x54, 0x43, 0x43, 0x41, 0x30, 0x47, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x4f, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x4f, 0x54, 0x7a, 0x45, 0x64, 0x4d, 0x42, 0x73, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x55, 0x0a, 0x51, 0x6e, 0x56, 0x35, 0x63, 0x47, 0x46, 0x7a, 0x63, 0x79, 0x42, 0x42, 0x55, 0x79, 0x30, 0x35, 0x4f, 0x44, 0x4d, 0x78, 0x4e, 0x6a, 0x4d, 0x7a, 0x4d, 0x6a, 0x63, 0x78, 0x49, 0x44, 0x41, 0x65, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x46, 0x30, 0x4a, 0x31, 0x65, 0x58, 0x42, 0x68, 0x63, 0x33, 0x4d, 0x67, 0x51, 0x32, 0x78, 0x68, 0x63, 0x33, 0x4d, 0x67, 0x4d, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x42, 0x34, 0x58, 0x0a, 0x44, 0x54, 0x45, 0x77, 0x4d, 0x54, 0x41, 0x79, 0x4e, 0x6a, 0x41, 0x34, 0x4d, 0x7a, 0x67, 0x77, 0x4d, 0x31, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x77, 0x4d, 0x54, 0x41, 0x79, 0x4e, 0x6a, 0x41, 0x34, 0x4d, 0x7a, 0x67, 0x77, 0x4d, 0x31, 0x6f, 0x77, 0x54, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x54, 0x6b, 0x38, 0x78, 0x48, 0x54, 0x41, 0x62, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x46, 0x45, 0x4a, 0x31, 0x0a, 0x65, 0x58, 0x42, 0x68, 0x63, 0x33, 0x4d, 0x67, 0x51, 0x56, 0x4d, 0x74, 0x4f, 0x54, 0x67, 0x7a, 0x4d, 0x54, 0x59, 0x7a, 0x4d, 0x7a, 0x49, 0x33, 0x4d, 0x53, 0x41, 0x77, 0x48, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x64, 0x43, 0x64, 0x58, 0x6c, 0x77, 0x59, 0x58, 0x4e, 0x7a, 0x49, 0x45, 0x4e, 0x73, 0x59, 0x58, 0x4e, 0x7a, 0x49, 0x44, 0x49, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x54, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x0a, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4e, 0x66, 0x48, 0x58, 0x76, 0x66, 0x42, 0x42, 0x39, 0x52, 0x33, 0x2b, 0x30, 0x4d, 0x68, 0x39, 0x50, 0x54, 0x31, 0x61, 0x65, 0x54, 0x75, 0x4d, 0x67, 0x48, 0x62, 0x6f, 0x34, 0x59, 0x66, 0x35, 0x46, 0x6b, 0x4e, 0x75, 0x75, 0x64, 0x31, 0x0a, 0x67, 0x31, 0x4c, 0x72, 0x36, 0x68, 0x78, 0x68, 0x46, 0x55, 0x69, 0x37, 0x48, 0x51, 0x66, 0x4b, 0x6a, 0x4b, 0x36, 0x77, 0x33, 0x4a, 0x61, 0x64, 0x36, 0x73, 0x4e, 0x67, 0x6b, 0x6f, 0x61, 0x43, 0x4b, 0x48, 0x4f, 0x63, 0x56, 0x67, 0x62, 0x2f, 0x53, 0x32, 0x54, 0x77, 0x44, 0x43, 0x6f, 0x33, 0x53, 0x62, 0x58, 0x6c, 0x7a, 0x77, 0x78, 0x38, 0x37, 0x76, 0x46, 0x4b, 0x75, 0x33, 0x4d, 0x77, 0x5a, 0x66, 0x50, 0x56, 0x4c, 0x34, 0x4f, 0x32, 0x66, 0x75, 0x50, 0x6e, 0x0a, 0x39, 0x5a, 0x36, 0x72, 0x59, 0x50, 0x6e, 0x54, 0x38, 0x5a, 0x32, 0x53, 0x64, 0x49, 0x72, 0x6b, 0x48, 0x4a, 0x61, 0x73, 0x57, 0x34, 0x44, 0x70, 0x74, 0x66, 0x51, 0x78, 0x68, 0x36, 0x4e, 0x52, 0x2f, 0x4d, 0x64, 0x2b, 0x6f, 0x57, 0x2b, 0x4f, 0x55, 0x33, 0x66, 0x55, 0x6c, 0x38, 0x46, 0x56, 0x4d, 0x35, 0x49, 0x2b, 0x47, 0x43, 0x39, 0x31, 0x31, 0x4b, 0x32, 0x47, 0x53, 0x63, 0x75, 0x56, 0x72, 0x31, 0x51, 0x47, 0x62, 0x4e, 0x67, 0x47, 0x45, 0x34, 0x31, 0x62, 0x0a, 0x2f, 0x2b, 0x45, 0x6d, 0x47, 0x56, 0x6e, 0x41, 0x4a, 0x4c, 0x71, 0x42, 0x63, 0x58, 0x6d, 0x51, 0x52, 0x46, 0x42, 0x6f, 0x4a, 0x4a, 0x52, 0x66, 0x75, 0x4c, 0x4d, 0x52, 0x38, 0x53, 0x6c, 0x42, 0x59, 0x61, 0x4e, 0x42, 0x79, 0x79, 0x4d, 0x32, 0x31, 0x63, 0x48, 0x78, 0x4d, 0x6c, 0x41, 0x51, 0x54, 0x6e, 0x2f, 0x30, 0x68, 0x70, 0x50, 0x73, 0x68, 0x4e, 0x4f, 0x4f, 0x76, 0x45, 0x75, 0x2f, 0x58, 0x41, 0x46, 0x4f, 0x42, 0x7a, 0x33, 0x63, 0x46, 0x49, 0x71, 0x55, 0x0a, 0x43, 0x71, 0x54, 0x71, 0x63, 0x2f, 0x73, 0x4c, 0x55, 0x65, 0x67, 0x54, 0x42, 0x78, 0x6a, 0x36, 0x44, 0x76, 0x45, 0x72, 0x30, 0x56, 0x51, 0x56, 0x66, 0x54, 0x7a, 0x68, 0x39, 0x37, 0x51, 0x5a, 0x51, 0x6d, 0x64, 0x69, 0x58, 0x6e, 0x66, 0x67, 0x6f, 0x6c, 0x58, 0x73, 0x74, 0x74, 0x6c, 0x70, 0x46, 0x39, 0x55, 0x36, 0x72, 0x30, 0x54, 0x74, 0x53, 0x73, 0x57, 0x65, 0x35, 0x48, 0x6f, 0x6e, 0x66, 0x4f, 0x56, 0x31, 0x31, 0x36, 0x72, 0x4c, 0x4a, 0x65, 0x66, 0x66, 0x0a, 0x61, 0x77, 0x72, 0x62, 0x44, 0x30, 0x32, 0x54, 0x54, 0x71, 0x69, 0x67, 0x7a, 0x58, 0x73, 0x75, 0x38, 0x6c, 0x6b, 0x42, 0x61, 0x72, 0x63, 0x4e, 0x75, 0x41, 0x65, 0x42, 0x66, 0x6f, 0x73, 0x34, 0x47, 0x7a, 0x6a, 0x6d, 0x43, 0x6c, 0x65, 0x5a, 0x50, 0x65, 0x34, 0x68, 0x36, 0x4b, 0x50, 0x31, 0x44, 0x42, 0x62, 0x64, 0x69, 0x2b, 0x77, 0x30, 0x6a, 0x70, 0x77, 0x71, 0x48, 0x41, 0x41, 0x56, 0x46, 0x34, 0x31, 0x6f, 0x67, 0x39, 0x4a, 0x77, 0x6e, 0x78, 0x67, 0x49, 0x0a, 0x7a, 0x52, 0x46, 0x6f, 0x31, 0x63, 0x6c, 0x72, 0x55, 0x73, 0x33, 0x45, 0x52, 0x6f, 0x2f, 0x63, 0x74, 0x66, 0x50, 0x59, 0x56, 0x33, 0x4d, 0x65, 0x36, 0x5a, 0x51, 0x35, 0x42, 0x4c, 0x2f, 0x54, 0x33, 0x6a, 0x6a, 0x65, 0x74, 0x46, 0x50, 0x73, 0x61, 0x52, 0x79, 0x69, 0x66, 0x73, 0x53, 0x50, 0x35, 0x42, 0x74, 0x77, 0x72, 0x66, 0x4b, 0x69, 0x2b, 0x66, 0x76, 0x33, 0x46, 0x6d, 0x52, 0x6d, 0x61, 0x5a, 0x39, 0x4a, 0x55, 0x61, 0x4c, 0x69, 0x46, 0x52, 0x68, 0x6e, 0x0a, 0x42, 0x6b, 0x70, 0x2f, 0x31, 0x57, 0x79, 0x31, 0x54, 0x62, 0x4d, 0x7a, 0x34, 0x47, 0x48, 0x72, 0x58, 0x62, 0x37, 0x70, 0x6d, 0x41, 0x38, 0x79, 0x31, 0x78, 0x31, 0x4c, 0x50, 0x43, 0x35, 0x61, 0x41, 0x56, 0x4b, 0x52, 0x43, 0x66, 0x4c, 0x66, 0x36, 0x6f, 0x33, 0x59, 0x42, 0x6b, 0x42, 0x6a, 0x71, 0x68, 0x48, 0x6b, 0x2f, 0x73, 0x4d, 0x33, 0x6e, 0x68, 0x52, 0x53, 0x50, 0x2f, 0x54, 0x69, 0x7a, 0x50, 0x4a, 0x68, 0x6b, 0x39, 0x48, 0x39, 0x5a, 0x32, 0x76, 0x58, 0x0a, 0x55, 0x71, 0x36, 0x2f, 0x61, 0x4b, 0x74, 0x41, 0x51, 0x36, 0x42, 0x58, 0x4e, 0x56, 0x4e, 0x34, 0x38, 0x46, 0x50, 0x34, 0x59, 0x55, 0x49, 0x48, 0x5a, 0x4d, 0x62, 0x58, 0x62, 0x35, 0x74, 0x4d, 0x4f, 0x41, 0x31, 0x6a, 0x72, 0x47, 0x4b, 0x76, 0x4e, 0x6f, 0x75, 0x69, 0x63, 0x77, 0x6f, 0x4e, 0x39, 0x53, 0x47, 0x39, 0x64, 0x4b, 0x70, 0x4e, 0x36, 0x6e, 0x49, 0x44, 0x53, 0x64, 0x76, 0x48, 0x58, 0x78, 0x31, 0x69, 0x59, 0x38, 0x66, 0x39, 0x33, 0x5a, 0x48, 0x73, 0x0a, 0x4d, 0x2b, 0x37, 0x31, 0x62, 0x62, 0x52, 0x75, 0x4d, 0x47, 0x6a, 0x65, 0x79, 0x4e, 0x59, 0x6d, 0x73, 0x48, 0x56, 0x65, 0x65, 0x37, 0x51, 0x48, 0x49, 0x4a, 0x69, 0x68, 0x64, 0x6a, 0x4b, 0x34, 0x54, 0x57, 0x78, 0x50, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x0a, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4d, 0x6d, 0x41, 0x64, 0x2b, 0x42, 0x69, 0x6b, 0x6f, 0x4c, 0x31, 0x52, 0x70, 0x7a, 0x7a, 0x75, 0x76, 0x64, 0x4d, 0x77, 0x39, 0x36, 0x34, 0x6f, 0x36, 0x30, 0x35, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x0a, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x55, 0x31, 0x38, 0x68, 0x39, 0x62, 0x71, 0x77, 0x4f, 0x6c, 0x49, 0x35, 0x4c, 0x4a, 0x4b, 0x77, 0x62, 0x41, 0x44, 0x4a, 0x37, 0x38, 0x34, 0x67, 0x37, 0x77, 0x62, 0x79, 0x6c, 0x70, 0x37, 0x70, 0x70, 0x48, 0x52, 0x2f, 0x65, 0x68, 0x62, 0x38, 0x74, 0x2f, 0x57, 0x32, 0x2b, 0x78, 0x55, 0x62, 0x50, 0x36, 0x75, 0x6d, 0x77, 0x48, 0x4a, 0x64, 0x45, 0x4c, 0x46, 0x78, 0x37, 0x72, 0x78, 0x50, 0x34, 0x36, 0x32, 0x73, 0x0a, 0x41, 0x32, 0x30, 0x75, 0x63, 0x53, 0x36, 0x76, 0x78, 0x4f, 0x4f, 0x74, 0x6f, 0x37, 0x30, 0x4d, 0x45, 0x61, 0x65, 0x30, 0x2f, 0x30, 0x71, 0x79, 0x65, 0x78, 0x41, 0x51, 0x48, 0x36, 0x64, 0x58, 0x51, 0x62, 0x4c, 0x41, 0x72, 0x76, 0x51, 0x73, 0x57, 0x64, 0x5a, 0x48, 0x45, 0x49, 0x6a, 0x7a, 0x49, 0x56, 0x45, 0x70, 0x4d, 0x4d, 0x70, 0x67, 0x68, 0x71, 0x39, 0x47, 0x71, 0x78, 0x33, 0x74, 0x4f, 0x6c, 0x75, 0x77, 0x6c, 0x4e, 0x35, 0x45, 0x34, 0x30, 0x45, 0x49, 0x0a, 0x6f, 0x73, 0x48, 0x73, 0x48, 0x64, 0x62, 0x39, 0x54, 0x37, 0x62, 0x57, 0x52, 0x39, 0x41, 0x55, 0x43, 0x38, 0x72, 0x6d, 0x79, 0x72, 0x56, 0x37, 0x64, 0x33, 0x35, 0x42, 0x48, 0x31, 0x36, 0x44, 0x78, 0x37, 0x61, 0x4d, 0x4f, 0x5a, 0x61, 0x77, 0x50, 0x35, 0x61, 0x42, 0x51, 0x57, 0x39, 0x67, 0x6b, 0x4f, 0x4c, 0x6f, 0x2b, 0x66, 0x73, 0x69, 0x63, 0x64, 0x6c, 0x39, 0x73, 0x7a, 0x31, 0x47, 0x76, 0x37, 0x53, 0x45, 0x72, 0x35, 0x41, 0x63, 0x44, 0x34, 0x38, 0x53, 0x0a, 0x61, 0x71, 0x2f, 0x76, 0x37, 0x68, 0x35, 0x36, 0x72, 0x67, 0x4a, 0x4b, 0x69, 0x68, 0x63, 0x72, 0x64, 0x76, 0x36, 0x73, 0x56, 0x49, 0x6b, 0x6b, 0x4c, 0x45, 0x38, 0x2f, 0x74, 0x72, 0x4b, 0x6e, 0x54, 0x6f, 0x79, 0x6f, 0x6b, 0x5a, 0x66, 0x37, 0x4b, 0x63, 0x5a, 0x37, 0x58, 0x43, 0x32, 0x35, 0x79, 0x32, 0x61, 0x32, 0x74, 0x36, 0x68, 0x62, 0x45, 0x6c, 0x47, 0x46, 0x74, 0x51, 0x6c, 0x2b, 0x59, 0x6e, 0x68, 0x77, 0x2f, 0x71, 0x6c, 0x71, 0x59, 0x4c, 0x59, 0x64, 0x0a, 0x44, 0x6e, 0x6b, 0x4d, 0x2f, 0x63, 0x72, 0x71, 0x4a, 0x49, 0x42, 0x79, 0x77, 0x35, 0x63, 0x2f, 0x38, 0x6e, 0x65, 0x72, 0x51, 0x79, 0x49, 0x4b, 0x78, 0x2b, 0x75, 0x32, 0x44, 0x49, 0x53, 0x43, 0x4c, 0x49, 0x42, 0x72, 0x51, 0x59, 0x6f, 0x49, 0x77, 0x4f, 0x75, 0x6c, 0x61, 0x39, 0x2b, 0x5a, 0x45, 0x73, 0x75, 0x4b, 0x31, 0x56, 0x36, 0x41, 0x44, 0x4a, 0x48, 0x67, 0x4a, 0x67, 0x67, 0x32, 0x53, 0x4d, 0x58, 0x36, 0x4f, 0x42, 0x45, 0x31, 0x2f, 0x79, 0x57, 0x44, 0x0a, 0x4c, 0x66, 0x4a, 0x36, 0x76, 0x39, 0x72, 0x39, 0x6a, 0x76, 0x36, 0x6c, 0x79, 0x30, 0x55, 0x73, 0x48, 0x38, 0x53, 0x49, 0x55, 0x36, 0x35, 0x33, 0x44, 0x74, 0x6d, 0x61, 0x64, 0x73, 0x57, 0x4f, 0x4c, 0x42, 0x32, 0x6a, 0x75, 0x74, 0x58, 0x73, 0x4d, 0x71, 0x37, 0x41, 0x71, 0x71, 0x7a, 0x33, 0x30, 0x58, 0x70, 0x4e, 0x36, 0x39, 0x51, 0x48, 0x34, 0x6b, 0x6a, 0x33, 0x49, 0x6f, 0x36, 0x77, 0x70, 0x4a, 0x39, 0x71, 0x7a, 0x6f, 0x36, 0x79, 0x73, 0x6d, 0x44, 0x30, 0x0a, 0x6f, 0x79, 0x4c, 0x51, 0x49, 0x2b, 0x75, 0x55, 0x57, 0x6e, 0x70, 0x70, 0x33, 0x51, 0x2b, 0x2f, 0x51, 0x46, 0x65, 0x73, 0x61, 0x31, 0x6c, 0x51, 0x32, 0x61, 0x4f, 0x5a, 0x34, 0x57, 0x37, 0x2b, 0x6a, 0x51, 0x46, 0x35, 0x4a, 0x79, 0x4d, 0x56, 0x33, 0x70, 0x4b, 0x64, 0x65, 0x77, 0x6c, 0x4e, 0x57, 0x75, 0x64, 0x4c, 0x53, 0x44, 0x42, 0x61, 0x47, 0x4f, 0x59, 0x4b, 0x62, 0x65, 0x61, 0x50, 0x34, 0x4e, 0x4b, 0x37, 0x35, 0x74, 0x39, 0x38, 0x62, 0x69, 0x47, 0x43, 0x0a, 0x77, 0x57, 0x67, 0x35, 0x54, 0x62, 0x53, 0x59, 0x57, 0x47, 0x5a, 0x69, 0x7a, 0x45, 0x71, 0x51, 0x58, 0x73, 0x50, 0x36, 0x4a, 0x77, 0x53, 0x78, 0x65, 0x52, 0x56, 0x30, 0x6d, 0x63, 0x79, 0x2b, 0x72, 0x53, 0x44, 0x65, 0x4a, 0x6d, 0x41, 0x63, 0x36, 0x31, 0x5a, 0x52, 0x70, 0x71, 0x50, 0x71, 0x35, 0x4b, 0x4d, 0x2f, 0x70, 0x2f, 0x39, 0x68, 0x33, 0x50, 0x46, 0x61, 0x54, 0x57, 0x77, 0x79, 0x49, 0x30, 0x50, 0x75, 0x72, 0x4b, 0x6a, 0x75, 0x37, 0x6b, 0x6f, 0x53, 0x0a, 0x43, 0x54, 0x78, 0x64, 0x63, 0x63, 0x4b, 0x2b, 0x65, 0x66, 0x72, 0x43, 0x68, 0x32, 0x67, 0x64, 0x43, 0x2f, 0x31, 0x63, 0x61, 0x63, 0x77, 0x47, 0x30, 0x4a, 0x70, 0x39, 0x56, 0x4a, 0x6b, 0x71, 0x79, 0x54, 0x6b, 0x61, 0x47, 0x61, 0x39, 0x4c, 0x4b, 0x6b, 0x50, 0x7a, 0x59, 0x31, 0x31, 0x61, 0x57, 0x4f, 0x49, 0x76, 0x34, 0x78, 0x33, 0x6b, 0x71, 0x64, 0x62, 0x51, 0x43, 0x74, 0x43, 0x65, 0x76, 0x39, 0x65, 0x42, 0x43, 0x66, 0x48, 0x4a, 0x78, 0x79, 0x59, 0x4e, 0x0a, 0x72, 0x4a, 0x67, 0x57, 0x56, 0x71, 0x41, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x42, 0x75, 0x79, 0x70, 0x61, 0x73, 0x73, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x57, 0x54, 0x43, 0x43, 0x41, 0x30, 0x47, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x4f, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x4f, 0x54, 0x7a, 0x45, 0x64, 0x4d, 0x42, 0x73, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x55, 0x0a, 0x51, 0x6e, 0x56, 0x35, 0x63, 0x47, 0x46, 0x7a, 0x63, 0x79, 0x42, 0x42, 0x55, 0x79, 0x30, 0x35, 0x4f, 0x44, 0x4d, 0x78, 0x4e, 0x6a, 0x4d, 0x7a, 0x4d, 0x6a, 0x63, 0x78, 0x49, 0x44, 0x41, 0x65, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x46, 0x30, 0x4a, 0x31, 0x65, 0x58, 0x42, 0x68, 0x63, 0x33, 0x4d, 0x67, 0x51, 0x32, 0x78, 0x68, 0x63, 0x33, 0x4d, 0x67, 0x4d, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x42, 0x34, 0x58, 0x0a, 0x44, 0x54, 0x45, 0x77, 0x4d, 0x54, 0x41, 0x79, 0x4e, 0x6a, 0x41, 0x34, 0x4d, 0x6a, 0x67, 0x31, 0x4f, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x77, 0x4d, 0x54, 0x41, 0x79, 0x4e, 0x6a, 0x41, 0x34, 0x4d, 0x6a, 0x67, 0x31, 0x4f, 0x46, 0x6f, 0x77, 0x54, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x54, 0x6b, 0x38, 0x78, 0x48, 0x54, 0x41, 0x62, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x46, 0x45, 0x4a, 0x31, 0x0a, 0x65, 0x58, 0x42, 0x68, 0x63, 0x33, 0x4d, 0x67, 0x51, 0x56, 0x4d, 0x74, 0x4f, 0x54, 0x67, 0x7a, 0x4d, 0x54, 0x59, 0x7a, 0x4d, 0x7a, 0x49, 0x33, 0x4d, 0x53, 0x41, 0x77, 0x48, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x64, 0x43, 0x64, 0x58, 0x6c, 0x77, 0x59, 0x58, 0x4e, 0x7a, 0x49, 0x45, 0x4e, 0x73, 0x59, 0x58, 0x4e, 0x7a, 0x49, 0x44, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x54, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x0a, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4b, 0x58, 0x61, 0x43, 0x70, 0x55, 0x57, 0x55, 0x4f, 0x4f, 0x56, 0x38, 0x6c, 0x36, 0x64, 0x64, 0x6a, 0x45, 0x47, 0x4d, 0x6e, 0x71, 0x62, 0x38, 0x52, 0x42, 0x32, 0x75, 0x41, 0x43, 0x61, 0x74, 0x56, 0x49, 0x32, 0x7a, 0x53, 0x52, 0x48, 0x0a, 0x73, 0x4a, 0x38, 0x59, 0x5a, 0x4c, 0x79, 0x61, 0x39, 0x76, 0x72, 0x56, 0x65, 0x64, 0x69, 0x51, 0x59, 0x6b, 0x77, 0x69, 0x4c, 0x39, 0x34, 0x34, 0x50, 0x64, 0x62, 0x67, 0x71, 0x4f, 0x6b, 0x63, 0x4c, 0x4e, 0x74, 0x34, 0x45, 0x65, 0x6d, 0x4f, 0x61, 0x46, 0x45, 0x56, 0x63, 0x73, 0x66, 0x7a, 0x4d, 0x34, 0x66, 0x6b, 0x6f, 0x46, 0x30, 0x4c, 0x58, 0x4f, 0x42, 0x58, 0x42, 0x79, 0x6f, 0x77, 0x39, 0x63, 0x33, 0x45, 0x4e, 0x33, 0x63, 0x6f, 0x54, 0x52, 0x69, 0x52, 0x0a, 0x35, 0x72, 0x2f, 0x56, 0x55, 0x76, 0x31, 0x78, 0x4c, 0x58, 0x41, 0x2b, 0x35, 0x38, 0x62, 0x45, 0x69, 0x75, 0x50, 0x77, 0x4b, 0x41, 0x76, 0x30, 0x64, 0x70, 0x69, 0x68, 0x69, 0x34, 0x64, 0x56, 0x73, 0x6a, 0x6f, 0x54, 0x2f, 0x4c, 0x63, 0x2b, 0x4a, 0x7a, 0x65, 0x4f, 0x49, 0x75, 0x4f, 0x6f, 0x54, 0x79, 0x72, 0x76, 0x59, 0x4c, 0x73, 0x39, 0x74, 0x7a, 0x6e, 0x44, 0x44, 0x67, 0x46, 0x48, 0x6d, 0x56, 0x30, 0x53, 0x54, 0x39, 0x74, 0x44, 0x2b, 0x6c, 0x65, 0x68, 0x0a, 0x37, 0x66, 0x6d, 0x64, 0x76, 0x68, 0x46, 0x48, 0x4a, 0x6c, 0x73, 0x54, 0x6d, 0x4b, 0x74, 0x64, 0x46, 0x6f, 0x71, 0x77, 0x4e, 0x78, 0x78, 0x58, 0x6e, 0x55, 0x58, 0x2f, 0x69, 0x4a, 0x59, 0x32, 0x76, 0x37, 0x76, 0x4b, 0x42, 0x33, 0x74, 0x76, 0x68, 0x32, 0x50, 0x58, 0x30, 0x44, 0x4a, 0x71, 0x31, 0x6c, 0x31, 0x73, 0x44, 0x50, 0x47, 0x7a, 0x62, 0x6a, 0x6e, 0x69, 0x61, 0x7a, 0x45, 0x75, 0x4f, 0x51, 0x41, 0x6e, 0x46, 0x4e, 0x34, 0x34, 0x77, 0x4f, 0x77, 0x5a, 0x0a, 0x5a, 0x6f, 0x59, 0x53, 0x36, 0x4a, 0x31, 0x79, 0x46, 0x68, 0x4e, 0x6b, 0x55, 0x73, 0x65, 0x70, 0x4e, 0x78, 0x7a, 0x39, 0x67, 0x6a, 0x44, 0x74, 0x68, 0x42, 0x67, 0x64, 0x39, 0x4b, 0x35, 0x63, 0x2f, 0x33, 0x41, 0x54, 0x41, 0x4f, 0x75, 0x78, 0x39, 0x54, 0x4e, 0x36, 0x53, 0x39, 0x5a, 0x56, 0x2b, 0x41, 0x57, 0x4e, 0x53, 0x32, 0x6d, 0x77, 0x39, 0x62, 0x4d, 0x6f, 0x4e, 0x6c, 0x77, 0x55, 0x78, 0x46, 0x46, 0x7a, 0x54, 0x57, 0x73, 0x4c, 0x38, 0x54, 0x51, 0x48, 0x0a, 0x32, 0x78, 0x63, 0x35, 0x31, 0x39, 0x77, 0x6f, 0x65, 0x32, 0x76, 0x31, 0x6e, 0x2f, 0x4d, 0x75, 0x77, 0x55, 0x38, 0x58, 0x4b, 0x68, 0x44, 0x7a, 0x7a, 0x4d, 0x72, 0x6f, 0x36, 0x2f, 0x31, 0x72, 0x71, 0x79, 0x36, 0x61, 0x6e, 0x79, 0x32, 0x43, 0x62, 0x67, 0x54, 0x55, 0x55, 0x67, 0x47, 0x54, 0x4c, 0x54, 0x32, 0x47, 0x2f, 0x48, 0x37, 0x38, 0x33, 0x2b, 0x39, 0x43, 0x48, 0x61, 0x5a, 0x72, 0x37, 0x37, 0x6b, 0x67, 0x78, 0x76, 0x65, 0x39, 0x6f, 0x4b, 0x65, 0x56, 0x0a, 0x2f, 0x61, 0x66, 0x6d, 0x69, 0x53, 0x54, 0x59, 0x7a, 0x49, 0x77, 0x30, 0x62, 0x4f, 0x49, 0x6a, 0x4c, 0x39, 0x6b, 0x53, 0x47, 0x69, 0x47, 0x35, 0x56, 0x5a, 0x46, 0x76, 0x43, 0x35, 0x46, 0x35, 0x47, 0x51, 0x79, 0x74, 0x51, 0x49, 0x67, 0x4c, 0x63, 0x4f, 0x4a, 0x36, 0x30, 0x67, 0x37, 0x59, 0x61, 0x45, 0x69, 0x37, 0x67, 0x68, 0x4d, 0x35, 0x45, 0x46, 0x6a, 0x70, 0x32, 0x43, 0x6f, 0x48, 0x78, 0x68, 0x4c, 0x62, 0x57, 0x4e, 0x76, 0x53, 0x4f, 0x31, 0x55, 0x51, 0x0a, 0x52, 0x77, 0x55, 0x56, 0x5a, 0x32, 0x4a, 0x2b, 0x47, 0x47, 0x4f, 0x6d, 0x52, 0x6a, 0x38, 0x4a, 0x44, 0x6c, 0x51, 0x79, 0x58, 0x72, 0x38, 0x4e, 0x59, 0x6e, 0x6f, 0x6e, 0x37, 0x34, 0x44, 0x6f, 0x32, 0x39, 0x6c, 0x4c, 0x42, 0x6c, 0x6f, 0x33, 0x57, 0x69, 0x58, 0x51, 0x43, 0x42, 0x4a, 0x33, 0x31, 0x47, 0x38, 0x4a, 0x55, 0x4a, 0x63, 0x39, 0x79, 0x42, 0x33, 0x44, 0x33, 0x34, 0x78, 0x46, 0x4d, 0x46, 0x62, 0x47, 0x30, 0x32, 0x53, 0x72, 0x5a, 0x76, 0x50, 0x41, 0x0a, 0x58, 0x70, 0x61, 0x63, 0x77, 0x38, 0x54, 0x76, 0x77, 0x33, 0x78, 0x72, 0x69, 0x7a, 0x70, 0x35, 0x66, 0x37, 0x4e, 0x4a, 0x7a, 0x7a, 0x33, 0x69, 0x69, 0x5a, 0x2b, 0x67, 0x4d, 0x45, 0x75, 0x46, 0x75, 0x5a, 0x79, 0x55, 0x4a, 0x48, 0x6d, 0x50, 0x66, 0x57, 0x75, 0x70, 0x52, 0x57, 0x67, 0x50, 0x4b, 0x39, 0x44, 0x78, 0x32, 0x68, 0x7a, 0x4c, 0x61, 0x62, 0x6a, 0x4b, 0x53, 0x57, 0x4a, 0x74, 0x79, 0x4e, 0x42, 0x6a, 0x59, 0x74, 0x31, 0x67, 0x44, 0x31, 0x69, 0x71, 0x0a, 0x6a, 0x36, 0x47, 0x38, 0x42, 0x61, 0x56, 0x6d, 0x6f, 0x73, 0x38, 0x62, 0x64, 0x72, 0x4b, 0x45, 0x5a, 0x4c, 0x46, 0x4d, 0x4f, 0x56, 0x4c, 0x41, 0x4d, 0x4c, 0x72, 0x77, 0x6a, 0x45, 0x73, 0x43, 0x73, 0x4c, 0x61, 0x33, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x0a, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x45, 0x65, 0x34, 0x7a, 0x66, 0x2f, 0x6c, 0x62, 0x2b, 0x37, 0x34, 0x73, 0x75, 0x77, 0x76, 0x54, 0x67, 0x37, 0x35, 0x4a, 0x62, 0x43, 0x4f, 0x50, 0x47, 0x76, 0x44, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x0a, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x41, 0x43, 0x41, 0x6a, 0x51, 0x54, 0x55, 0x45, 0x6b, 0x4d, 0x4a, 0x41, 0x59, 0x6d, 0x44, 0x76, 0x34, 0x6a, 0x56, 0x4d, 0x31, 0x7a, 0x2b, 0x73, 0x34, 0x6a, 0x53, 0x51, 0x75, 0x4b, 0x46, 0x76, 0x64, 0x76, 0x6f, 0x57, 0x46, 0x71, 0x52, 0x49, 0x4e, 0x79, 0x7a, 0x70, 0x6b, 0x4d, 0x4c, 0x79, 0x50, 0x50, 0x67, 0x4b, 0x6e, 0x39, 0x69, 0x42, 0x35, 0x62, 0x74, 0x62, 0x32, 0x69, 0x55, 0x73, 0x70, 0x4b, 0x64, 0x56, 0x0a, 0x63, 0x53, 0x51, 0x79, 0x39, 0x73, 0x67, 0x4c, 0x38, 0x72, 0x78, 0x71, 0x2b, 0x4a, 0x4f, 0x73, 0x73, 0x67, 0x66, 0x43, 0x58, 0x35, 0x2f, 0x62, 0x7a, 0x4d, 0x69, 0x4b, 0x71, 0x72, 0x35, 0x71, 0x62, 0x2b, 0x46, 0x4a, 0x45, 0x4d, 0x77, 0x78, 0x31, 0x34, 0x43, 0x37, 0x75, 0x38, 0x6a, 0x59, 0x6f, 0x67, 0x35, 0x6b, 0x56, 0x2b, 0x71, 0x69, 0x39, 0x63, 0x4b, 0x70, 0x4d, 0x52, 0x58, 0x53, 0x49, 0x47, 0x72, 0x73, 0x2f, 0x43, 0x49, 0x42, 0x4b, 0x4d, 0x2b, 0x47, 0x0a, 0x75, 0x49, 0x41, 0x65, 0x71, 0x63, 0x77, 0x52, 0x70, 0x54, 0x7a, 0x79, 0x46, 0x72, 0x4e, 0x48, 0x6e, 0x66, 0x7a, 0x53, 0x67, 0x43, 0x48, 0x45, 0x79, 0x39, 0x42, 0x48, 0x63, 0x45, 0x47, 0x68, 0x79, 0x6f, 0x4d, 0x5a, 0x43, 0x43, 0x78, 0x74, 0x38, 0x6c, 0x31, 0x33, 0x6e, 0x49, 0x6f, 0x55, 0x45, 0x39, 0x51, 0x32, 0x48, 0x4a, 0x4c, 0x77, 0x35, 0x51, 0x59, 0x33, 0x33, 0x4b, 0x62, 0x6d, 0x6b, 0x4a, 0x73, 0x34, 0x6a, 0x31, 0x78, 0x72, 0x47, 0x30, 0x61, 0x47, 0x0a, 0x51, 0x30, 0x4a, 0x66, 0x50, 0x67, 0x45, 0x48, 0x55, 0x31, 0x52, 0x64, 0x5a, 0x58, 0x33, 0x33, 0x69, 0x6e, 0x4f, 0x68, 0x6d, 0x6c, 0x52, 0x61, 0x48, 0x79, 0x6c, 0x44, 0x46, 0x43, 0x66, 0x43, 0x68, 0x51, 0x2b, 0x31, 0x69, 0x48, 0x73, 0x61, 0x4f, 0x35, 0x53, 0x33, 0x48, 0x57, 0x43, 0x6e, 0x74, 0x5a, 0x7a, 0x6e, 0x4b, 0x57, 0x6c, 0x58, 0x57, 0x70, 0x75, 0x54, 0x65, 0x6b, 0x4d, 0x77, 0x47, 0x77, 0x50, 0x58, 0x59, 0x73, 0x68, 0x41, 0x70, 0x71, 0x72, 0x38, 0x0a, 0x5a, 0x4f, 0x52, 0x4b, 0x31, 0x35, 0x46, 0x54, 0x41, 0x61, 0x67, 0x67, 0x69, 0x47, 0x36, 0x63, 0x58, 0x30, 0x53, 0x35, 0x79, 0x32, 0x43, 0x42, 0x4e, 0x4f, 0x78, 0x76, 0x30, 0x33, 0x33, 0x61, 0x53, 0x46, 0x2f, 0x72, 0x74, 0x4a, 0x43, 0x38, 0x4c, 0x61, 0x6b, 0x63, 0x43, 0x36, 0x77, 0x63, 0x31, 0x61, 0x4a, 0x6f, 0x49, 0x49, 0x41, 0x45, 0x31, 0x76, 0x79, 0x78, 0x6a, 0x79, 0x2b, 0x37, 0x53, 0x6a, 0x45, 0x4e, 0x53, 0x6f, 0x59, 0x63, 0x36, 0x2b, 0x49, 0x32, 0x0a, 0x4b, 0x53, 0x62, 0x31, 0x32, 0x74, 0x6a, 0x45, 0x38, 0x6e, 0x56, 0x68, 0x7a, 0x33, 0x36, 0x75, 0x64, 0x6d, 0x4e, 0x4b, 0x65, 0x6b, 0x42, 0x6c, 0x6b, 0x34, 0x66, 0x34, 0x48, 0x6f, 0x43, 0x4d, 0x68, 0x75, 0x57, 0x47, 0x31, 0x6f, 0x38, 0x4f, 0x2f, 0x46, 0x4d, 0x73, 0x59, 0x4f, 0x67, 0x57, 0x59, 0x52, 0x71, 0x69, 0x50, 0x6b, 0x4e, 0x37, 0x7a, 0x54, 0x6c, 0x67, 0x56, 0x47, 0x72, 0x31, 0x38, 0x6f, 0x6b, 0x6d, 0x41, 0x57, 0x69, 0x44, 0x53, 0x4b, 0x49, 0x7a, 0x0a, 0x36, 0x4d, 0x6b, 0x45, 0x6b, 0x62, 0x49, 0x52, 0x4e, 0x42, 0x45, 0x2b, 0x36, 0x74, 0x42, 0x44, 0x47, 0x52, 0x38, 0x44, 0x6b, 0x35, 0x41, 0x4d, 0x2f, 0x31, 0x45, 0x39, 0x56, 0x2f, 0x52, 0x42, 0x62, 0x75, 0x48, 0x4c, 0x6f, 0x4c, 0x37, 0x72, 0x79, 0x57, 0x50, 0x4e, 0x62, 0x63, 0x7a, 0x6b, 0x2b, 0x44, 0x61, 0x71, 0x61, 0x4a, 0x33, 0x74, 0x76, 0x56, 0x32, 0x58, 0x63, 0x45, 0x51, 0x4e, 0x74, 0x67, 0x34, 0x31, 0x33, 0x4f, 0x45, 0x4d, 0x58, 0x62, 0x75, 0x67, 0x0a, 0x55, 0x5a, 0x54, 0x4c, 0x66, 0x68, 0x62, 0x72, 0x45, 0x53, 0x2b, 0x6a, 0x6b, 0x6b, 0x58, 0x49, 0x54, 0x48, 0x48, 0x5a, 0x76, 0x4d, 0x6d, 0x5a, 0x55, 0x6c, 0x64, 0x47, 0x4c, 0x31, 0x44, 0x50, 0x76, 0x54, 0x56, 0x70, 0x39, 0x44, 0x30, 0x56, 0x7a, 0x67, 0x61, 0x6c, 0x4c, 0x41, 0x38, 0x2b, 0x39, 0x6f, 0x47, 0x36, 0x6c, 0x4c, 0x76, 0x44, 0x75, 0x37, 0x39, 0x6c, 0x65, 0x4e, 0x4b, 0x47, 0x65, 0x66, 0x39, 0x4a, 0x4f, 0x78, 0x71, 0x44, 0x44, 0x50, 0x44, 0x65, 0x0a, 0x65, 0x4f, 0x7a, 0x49, 0x38, 0x6b, 0x31, 0x4d, 0x47, 0x74, 0x36, 0x43, 0x4b, 0x66, 0x6a, 0x42, 0x57, 0x74, 0x72, 0x74, 0x37, 0x75, 0x59, 0x6e, 0x58, 0x75, 0x68, 0x46, 0x30, 0x4a, 0x30, 0x63, 0x55, 0x61, 0x68, 0x6f, 0x71, 0x30, 0x54, 0x6a, 0x30, 0x49, 0x74, 0x71, 0x34, 0x2f, 0x67, 0x37, 0x75, 0x39, 0x78, 0x4e, 0x31, 0x32, 0x54, 0x79, 0x55, 0x62, 0x37, 0x6d, 0x71, 0x71, 0x74, 0x61, 0x36, 0x54, 0x48, 0x75, 0x42, 0x72, 0x78, 0x7a, 0x76, 0x78, 0x4e, 0x69, 0x0a, 0x43, 0x70, 0x2f, 0x48, 0x75, 0x5a, 0x63, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x2d, 0x54, 0x65, 0x6c, 0x65, 0x53, 0x65, 0x63, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x77, 0x7a, 0x43, 0x43, 0x41, 0x71, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x43, 0x42, 0x67, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x45, 0x55, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x0a, 0x49, 0x6c, 0x51, 0x74, 0x55, 0x33, 0x6c, 0x7a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x46, 0x62, 0x6e, 0x52, 0x6c, 0x63, 0x6e, 0x42, 0x79, 0x61, 0x58, 0x4e, 0x6c, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x49, 0x45, 0x64, 0x74, 0x59, 0x6b, 0x67, 0x78, 0x48, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x4d, 0x46, 0x6c, 0x51, 0x74, 0x55, 0x33, 0x6c, 0x7a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x55, 0x0a, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x57, 0x35, 0x30, 0x5a, 0x58, 0x49, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x48, 0x46, 0x51, 0x74, 0x56, 0x47, 0x56, 0x73, 0x5a, 0x56, 0x4e, 0x6c, 0x59, 0x79, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x73, 0x59, 0x58, 0x4e, 0x7a, 0x49, 0x44, 0x4d, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x67, 0x78, 0x0a, 0x4d, 0x44, 0x41, 0x78, 0x4d, 0x54, 0x41, 0x79, 0x4f, 0x54, 0x55, 0x32, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x4d, 0x78, 0x4d, 0x44, 0x41, 0x78, 0x4d, 0x6a, 0x4d, 0x31, 0x4f, 0x54, 0x55, 0x35, 0x57, 0x6a, 0x43, 0x42, 0x67, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x45, 0x55, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x49, 0x6c, 0x51, 0x74, 0x55, 0x33, 0x6c, 0x7a, 0x0a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x46, 0x62, 0x6e, 0x52, 0x6c, 0x63, 0x6e, 0x42, 0x79, 0x61, 0x58, 0x4e, 0x6c, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x49, 0x45, 0x64, 0x74, 0x59, 0x6b, 0x67, 0x78, 0x48, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x4d, 0x46, 0x6c, 0x51, 0x74, 0x55, 0x33, 0x6c, 0x7a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x44, 0x0a, 0x5a, 0x57, 0x35, 0x30, 0x5a, 0x58, 0x49, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x48, 0x46, 0x51, 0x74, 0x56, 0x47, 0x56, 0x73, 0x5a, 0x56, 0x4e, 0x6c, 0x59, 0x79, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x73, 0x59, 0x58, 0x4e, 0x7a, 0x49, 0x44, 0x4d, 0x77, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x0a, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43, 0x39, 0x64, 0x5a, 0x50, 0x77, 0x59, 0x69, 0x4a, 0x76, 0x4a, 0x4b, 0x37, 0x67, 0x65, 0x6e, 0x61, 0x73, 0x66, 0x62, 0x33, 0x5a, 0x4a, 0x4e, 0x57, 0x34, 0x74, 0x2f, 0x7a, 0x4e, 0x38, 0x45, 0x4c, 0x67, 0x36, 0x33, 0x69, 0x49, 0x56, 0x6c, 0x36, 0x62, 0x6d, 0x6c, 0x51, 0x64, 0x54, 0x51, 0x79, 0x4b, 0x0a, 0x39, 0x74, 0x50, 0x50, 0x63, 0x50, 0x52, 0x53, 0x74, 0x64, 0x69, 0x54, 0x42, 0x4f, 0x4e, 0x47, 0x68, 0x6e, 0x46, 0x42, 0x53, 0x69, 0x76, 0x77, 0x4b, 0x69, 0x78, 0x56, 0x41, 0x39, 0x5a, 0x49, 0x77, 0x2b, 0x41, 0x35, 0x4f, 0x4f, 0x33, 0x79, 0x58, 0x44, 0x77, 0x2f, 0x52, 0x4c, 0x79, 0x54, 0x50, 0x57, 0x47, 0x72, 0x54, 0x73, 0x30, 0x4e, 0x76, 0x76, 0x41, 0x67, 0x4a, 0x31, 0x67, 0x4f, 0x52, 0x48, 0x38, 0x45, 0x47, 0x6f, 0x65, 0x6c, 0x31, 0x35, 0x59, 0x55, 0x0a, 0x4e, 0x70, 0x44, 0x51, 0x53, 0x58, 0x75, 0x68, 0x64, 0x66, 0x73, 0x61, 0x61, 0x33, 0x4f, 0x78, 0x2b, 0x4d, 0x36, 0x70, 0x43, 0x53, 0x7a, 0x79, 0x55, 0x39, 0x58, 0x44, 0x46, 0x45, 0x53, 0x34, 0x68, 0x71, 0x58, 0x32, 0x69, 0x79, 0x73, 0x35, 0x32, 0x71, 0x4d, 0x7a, 0x56, 0x4e, 0x6e, 0x36, 0x63, 0x68, 0x72, 0x33, 0x49, 0x68, 0x55, 0x63, 0x69, 0x4a, 0x46, 0x72, 0x66, 0x32, 0x62, 0x6c, 0x77, 0x32, 0x71, 0x41, 0x73, 0x43, 0x54, 0x7a, 0x33, 0x34, 0x5a, 0x46, 0x0a, 0x69, 0x50, 0x30, 0x5a, 0x66, 0x33, 0x57, 0x48, 0x48, 0x78, 0x2b, 0x78, 0x47, 0x77, 0x70, 0x7a, 0x4a, 0x46, 0x75, 0x35, 0x5a, 0x65, 0x41, 0x73, 0x56, 0x4d, 0x68, 0x67, 0x30, 0x32, 0x59, 0x58, 0x50, 0x2b, 0x48, 0x4d, 0x56, 0x44, 0x4e, 0x7a, 0x6b, 0x51, 0x49, 0x36, 0x70, 0x6e, 0x39, 0x37, 0x64, 0x6a, 0x6d, 0x69, 0x48, 0x35, 0x61, 0x32, 0x4f, 0x4b, 0x36, 0x31, 0x79, 0x4a, 0x4e, 0x30, 0x48, 0x5a, 0x36, 0x35, 0x74, 0x4f, 0x56, 0x67, 0x6e, 0x53, 0x39, 0x57, 0x0a, 0x30, 0x65, 0x44, 0x72, 0x58, 0x6c, 0x74, 0x4d, 0x45, 0x6e, 0x41, 0x4d, 0x62, 0x45, 0x51, 0x67, 0x71, 0x78, 0x48, 0x59, 0x39, 0x42, 0x6e, 0x32, 0x30, 0x70, 0x78, 0x53, 0x4e, 0x2b, 0x66, 0x36, 0x74, 0x73, 0x49, 0x78, 0x4f, 0x30, 0x72, 0x55, 0x46, 0x4a, 0x6d, 0x74, 0x78, 0x78, 0x72, 0x31, 0x58, 0x56, 0x2f, 0x36, 0x42, 0x37, 0x68, 0x38, 0x44, 0x52, 0x2f, 0x57, 0x67, 0x78, 0x36, 0x7a, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x0a, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x31, 0x41, 0x2f, 0x64, 0x32, 0x4f, 0x32, 0x47, 0x43, 0x61, 0x68, 0x4b, 0x71, 0x47, 0x46, 0x50, 0x72, 0x0a, 0x41, 0x79, 0x47, 0x55, 0x76, 0x2f, 0x37, 0x4f, 0x79, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x45, 0x41, 0x56, 0x6a, 0x33, 0x76, 0x6c, 0x4e, 0x57, 0x39, 0x32, 0x6e, 0x4f, 0x79, 0x57, 0x4c, 0x36, 0x75, 0x6b, 0x4b, 0x32, 0x59, 0x4a, 0x35, 0x66, 0x2b, 0x41, 0x62, 0x47, 0x77, 0x55, 0x67, 0x43, 0x34, 0x54, 0x65, 0x51, 0x62, 0x49, 0x58, 0x51, 0x62, 0x0a, 0x66, 0x73, 0x44, 0x75, 0x58, 0x6d, 0x6b, 0x71, 0x4a, 0x61, 0x39, 0x63, 0x31, 0x68, 0x33, 0x61, 0x30, 0x6e, 0x6e, 0x4a, 0x38, 0x35, 0x63, 0x70, 0x34, 0x49, 0x61, 0x48, 0x33, 0x67, 0x52, 0x5a, 0x44, 0x2f, 0x46, 0x5a, 0x31, 0x47, 0x53, 0x46, 0x53, 0x35, 0x6d, 0x76, 0x4a, 0x51, 0x51, 0x65, 0x79, 0x55, 0x61, 0x70, 0x6c, 0x39, 0x36, 0x43, 0x73, 0x68, 0x74, 0x77, 0x6e, 0x35, 0x7a, 0x32, 0x72, 0x33, 0x45, 0x78, 0x33, 0x58, 0x73, 0x46, 0x70, 0x53, 0x7a, 0x54, 0x0a, 0x75, 0x63, 0x70, 0x48, 0x39, 0x73, 0x72, 0x79, 0x39, 0x75, 0x65, 0x74, 0x75, 0x55, 0x67, 0x2f, 0x76, 0x42, 0x61, 0x33, 0x77, 0x57, 0x33, 0x30, 0x36, 0x67, 0x6d, 0x76, 0x37, 0x50, 0x4f, 0x31, 0x35, 0x77, 0x57, 0x65, 0x70, 0x68, 0x36, 0x4b, 0x55, 0x31, 0x48, 0x57, 0x6b, 0x34, 0x48, 0x4d, 0x64, 0x4a, 0x50, 0x32, 0x75, 0x64, 0x71, 0x6d, 0x4a, 0x51, 0x56, 0x30, 0x65, 0x56, 0x70, 0x2b, 0x51, 0x44, 0x36, 0x43, 0x53, 0x79, 0x59, 0x52, 0x4d, 0x47, 0x37, 0x68, 0x0a, 0x50, 0x30, 0x48, 0x48, 0x52, 0x77, 0x41, 0x31, 0x31, 0x66, 0x58, 0x54, 0x39, 0x31, 0x51, 0x2b, 0x67, 0x54, 0x33, 0x61, 0x53, 0x57, 0x71, 0x61, 0x73, 0x2b, 0x38, 0x51, 0x50, 0x65, 0x62, 0x72, 0x62, 0x39, 0x48, 0x49, 0x49, 0x6b, 0x66, 0x4c, 0x7a, 0x4d, 0x38, 0x42, 0x4d, 0x5a, 0x4c, 0x5a, 0x47, 0x4f, 0x4d, 0x69, 0x76, 0x67, 0x6b, 0x65, 0x47, 0x6a, 0x35, 0x61, 0x73, 0x75, 0x52, 0x72, 0x44, 0x46, 0x52, 0x36, 0x66, 0x55, 0x4e, 0x4f, 0x75, 0x49, 0x6d, 0x6c, 0x0a, 0x65, 0x39, 0x65, 0x69, 0x50, 0x5a, 0x61, 0x47, 0x7a, 0x50, 0x49, 0x6d, 0x4e, 0x43, 0x31, 0x71, 0x6b, 0x70, 0x32, 0x61, 0x47, 0x74, 0x41, 0x77, 0x34, 0x6c, 0x31, 0x4f, 0x42, 0x4c, 0x42, 0x66, 0x69, 0x79, 0x42, 0x2b, 0x64, 0x38, 0x45, 0x39, 0x6c, 0x59, 0x4c, 0x52, 0x52, 0x70, 0x6f, 0x37, 0x50, 0x48, 0x69, 0x34, 0x62, 0x36, 0x48, 0x51, 0x44, 0x57, 0x53, 0x69, 0x65, 0x42, 0x34, 0x70, 0x54, 0x70, 0x50, 0x44, 0x70, 0x46, 0x51, 0x55, 0x57, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x2d, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x43, 0x41, 0x20, 0x32, 0x20, 0x32, 0x30, 0x30, 0x39, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x4d, 0x7a, 0x43, 0x43, 0x41, 0x78, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x44, 0x43, 0x59, 0x50, 0x7a, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x4d, 0x45, 0x30, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x52, 0x46, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x0a, 0x44, 0x41, 0x78, 0x45, 0x4c, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x45, 0x64, 0x74, 0x59, 0x6b, 0x67, 0x78, 0x4a, 0x7a, 0x41, 0x6c, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x48, 0x6b, 0x51, 0x74, 0x56, 0x46, 0x4a, 0x56, 0x55, 0x31, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x62, 0x47, 0x46, 0x7a, 0x63, 0x79, 0x41, 0x7a, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x49, 0x67, 0x4d, 0x6a, 0x41, 0x77, 0x4f, 0x54, 0x41, 0x65, 0x0a, 0x46, 0x77, 0x30, 0x77, 0x4f, 0x54, 0x45, 0x78, 0x4d, 0x44, 0x55, 0x77, 0x4f, 0x44, 0x4d, 0x31, 0x4e, 0x54, 0x68, 0x61, 0x46, 0x77, 0x30, 0x79, 0x4f, 0x54, 0x45, 0x78, 0x4d, 0x44, 0x55, 0x77, 0x4f, 0x44, 0x4d, 0x31, 0x4e, 0x54, 0x68, 0x61, 0x4d, 0x45, 0x30, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x52, 0x46, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x78, 0x45, 0x0a, 0x4c, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x45, 0x64, 0x74, 0x59, 0x6b, 0x67, 0x78, 0x4a, 0x7a, 0x41, 0x6c, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x48, 0x6b, 0x51, 0x74, 0x56, 0x46, 0x4a, 0x56, 0x55, 0x31, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x62, 0x47, 0x46, 0x7a, 0x63, 0x79, 0x41, 0x7a, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x49, 0x67, 0x4d, 0x6a, 0x41, 0x77, 0x4f, 0x54, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x0a, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4e, 0x4f, 0x79, 0x53, 0x73, 0x39, 0x36, 0x52, 0x2b, 0x39, 0x31, 0x6d, 0x79, 0x50, 0x36, 0x4f, 0x69, 0x2f, 0x57, 0x55, 0x45, 0x57, 0x4a, 0x4e, 0x54, 0x72, 0x47, 0x61, 0x39, 0x76, 0x2b, 0x32, 0x77, 0x42, 0x6f, 0x71, 0x4f, 0x41, 0x44, 0x0a, 0x45, 0x52, 0x30, 0x33, 0x55, 0x41, 0x69, 0x66, 0x54, 0x55, 0x70, 0x6f, 0x6c, 0x44, 0x57, 0x7a, 0x55, 0x39, 0x47, 0x55, 0x59, 0x36, 0x63, 0x67, 0x56, 0x71, 0x2f, 0x65, 0x55, 0x58, 0x6a, 0x73, 0x4b, 0x6a, 0x33, 0x7a, 0x53, 0x45, 0x68, 0x51, 0x50, 0x67, 0x72, 0x66, 0x52, 0x6c, 0x57, 0x4c, 0x4a, 0x32, 0x33, 0x44, 0x45, 0x45, 0x30, 0x4e, 0x6b, 0x56, 0x4a, 0x44, 0x32, 0x49, 0x66, 0x67, 0x58, 0x55, 0x34, 0x32, 0x74, 0x53, 0x48, 0x4b, 0x58, 0x7a, 0x6c, 0x41, 0x0a, 0x42, 0x46, 0x39, 0x62, 0x66, 0x73, 0x79, 0x6a, 0x78, 0x69, 0x75, 0x70, 0x51, 0x42, 0x37, 0x5a, 0x4e, 0x6f, 0x54, 0x57, 0x53, 0x50, 0x4f, 0x53, 0x48, 0x6a, 0x52, 0x47, 0x49, 0x43, 0x54, 0x42, 0x70, 0x46, 0x47, 0x4f, 0x53, 0x68, 0x72, 0x76, 0x55, 0x44, 0x39, 0x70, 0x58, 0x52, 0x6c, 0x2f, 0x52, 0x63, 0x50, 0x48, 0x41, 0x59, 0x39, 0x52, 0x79, 0x53, 0x50, 0x6f, 0x63, 0x71, 0x36, 0x30, 0x76, 0x46, 0x59, 0x4a, 0x66, 0x78, 0x4c, 0x4c, 0x48, 0x4c, 0x47, 0x76, 0x0a, 0x4b, 0x5a, 0x41, 0x4b, 0x79, 0x56, 0x58, 0x4d, 0x44, 0x39, 0x4f, 0x30, 0x47, 0x75, 0x31, 0x48, 0x4e, 0x56, 0x70, 0x4b, 0x37, 0x5a, 0x78, 0x7a, 0x42, 0x43, 0x48, 0x51, 0x71, 0x72, 0x30, 0x4d, 0x45, 0x37, 0x55, 0x41, 0x79, 0x69, 0x5a, 0x73, 0x78, 0x47, 0x73, 0x4d, 0x6c, 0x46, 0x71, 0x56, 0x6c, 0x4e, 0x70, 0x51, 0x6d, 0x76, 0x48, 0x2f, 0x70, 0x53, 0x74, 0x6d, 0x4d, 0x61, 0x54, 0x4a, 0x4f, 0x4b, 0x44, 0x66, 0x48, 0x52, 0x2b, 0x34, 0x43, 0x53, 0x37, 0x7a, 0x0a, 0x70, 0x2b, 0x68, 0x6e, 0x55, 0x71, 0x75, 0x56, 0x48, 0x2b, 0x42, 0x47, 0x50, 0x74, 0x69, 0x6b, 0x77, 0x38, 0x70, 0x61, 0x78, 0x54, 0x47, 0x41, 0x36, 0x45, 0x69, 0x61, 0x6e, 0x35, 0x52, 0x70, 0x2f, 0x68, 0x6e, 0x64, 0x32, 0x48, 0x4e, 0x38, 0x67, 0x63, 0x71, 0x57, 0x33, 0x6f, 0x37, 0x74, 0x73, 0x7a, 0x49, 0x46, 0x5a, 0x59, 0x51, 0x30, 0x35, 0x75, 0x62, 0x39, 0x56, 0x78, 0x43, 0x31, 0x58, 0x33, 0x61, 0x2f, 0x4c, 0x37, 0x41, 0x51, 0x44, 0x63, 0x55, 0x43, 0x0a, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4f, 0x43, 0x41, 0x52, 0x6f, 0x77, 0x67, 0x67, 0x45, 0x57, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x50, 0x33, 0x61, 0x46, 0x4d, 0x53, 0x66, 0x4d, 0x4e, 0x34, 0x68, 0x76, 0x52, 0x35, 0x43, 0x4f, 0x66, 0x79, 0x72, 0x59, 0x79, 0x4e, 0x4a, 0x0a, 0x34, 0x50, 0x47, 0x45, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x43, 0x42, 0x30, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x66, 0x42, 0x49, 0x48, 0x4c, 0x4d, 0x49, 0x48, 0x49, 0x4d, 0x49, 0x47, 0x41, 0x6f, 0x48, 0x36, 0x67, 0x66, 0x49, 0x5a, 0x36, 0x62, 0x47, 0x52, 0x68, 0x63, 0x44, 0x6f, 0x76, 0x4c, 0x32, 0x52, 0x70, 0x63, 0x6d, 0x56, 0x6a, 0x64, 0x47, 0x39, 0x79, 0x0a, 0x65, 0x53, 0x35, 0x6b, 0x4c, 0x58, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x6d, 0x35, 0x6c, 0x64, 0x43, 0x39, 0x44, 0x54, 0x6a, 0x31, 0x45, 0x4c, 0x56, 0x52, 0x53, 0x56, 0x56, 0x4e, 0x55, 0x4a, 0x54, 0x49, 0x77, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x55, 0x79, 0x4d, 0x45, 0x4e, 0x73, 0x59, 0x58, 0x4e, 0x7a, 0x4a, 0x54, 0x49, 0x77, 0x4d, 0x79, 0x55, 0x79, 0x4d, 0x45, 0x4e, 0x42, 0x4a, 0x54, 0x49, 0x77, 0x4d, 0x69, 0x55, 0x79, 0x4d, 0x44, 0x49, 0x77, 0x0a, 0x4d, 0x44, 0x6b, 0x73, 0x54, 0x7a, 0x31, 0x45, 0x4c, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4a, 0x54, 0x49, 0x77, 0x52, 0x32, 0x31, 0x69, 0x53, 0x43, 0x78, 0x44, 0x50, 0x55, 0x52, 0x46, 0x50, 0x32, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x6c, 0x63, 0x6d, 0x56, 0x32, 0x62, 0x32, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6d, 0x78, 0x70, 0x63, 0x33, 0x51, 0x77, 0x51, 0x36, 0x42, 0x42, 0x6f, 0x44, 0x2b, 0x47, 0x0a, 0x50, 0x57, 0x68, 0x30, 0x64, 0x48, 0x41, 0x36, 0x4c, 0x79, 0x39, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x43, 0x31, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x35, 0x75, 0x5a, 0x58, 0x51, 0x76, 0x59, 0x33, 0x4a, 0x73, 0x4c, 0x32, 0x51, 0x74, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x52, 0x66, 0x63, 0x6d, 0x39, 0x76, 0x64, 0x46, 0x39, 0x6a, 0x62, 0x47, 0x46, 0x7a, 0x63, 0x31, 0x38, 0x7a, 0x58, 0x32, 0x4e, 0x68, 0x58, 0x7a, 0x4a, 0x66, 0x4d, 0x6a, 0x41, 0x77, 0x0a, 0x4f, 0x53, 0x35, 0x6a, 0x63, 0x6d, 0x77, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x48, 0x2b, 0x58, 0x32, 0x7a, 0x44, 0x49, 0x33, 0x36, 0x53, 0x63, 0x66, 0x53, 0x46, 0x36, 0x67, 0x48, 0x44, 0x4f, 0x46, 0x42, 0x4a, 0x70, 0x69, 0x42, 0x53, 0x56, 0x59, 0x45, 0x51, 0x42, 0x72, 0x4c, 0x4c, 0x70, 0x4d, 0x45, 0x2b, 0x62, 0x55, 0x4d, 0x4a, 0x6d, 0x0a, 0x32, 0x48, 0x36, 0x4e, 0x4d, 0x4c, 0x56, 0x77, 0x4d, 0x65, 0x6e, 0x69, 0x61, 0x63, 0x66, 0x7a, 0x63, 0x4e, 0x73, 0x67, 0x46, 0x59, 0x62, 0x51, 0x44, 0x66, 0x43, 0x2b, 0x72, 0x41, 0x46, 0x31, 0x68, 0x4d, 0x35, 0x2b, 0x6e, 0x30, 0x32, 0x2f, 0x74, 0x32, 0x41, 0x37, 0x6e, 0x50, 0x50, 0x4b, 0x48, 0x65, 0x4a, 0x65, 0x61, 0x4e, 0x69, 0x6a, 0x6e, 0x5a, 0x66, 0x6c, 0x51, 0x47, 0x44, 0x53, 0x4e, 0x69, 0x48, 0x2b, 0x30, 0x4c, 0x53, 0x34, 0x46, 0x39, 0x70, 0x30, 0x0a, 0x6f, 0x33, 0x2f, 0x55, 0x33, 0x37, 0x43, 0x59, 0x41, 0x71, 0x78, 0x76, 0x61, 0x32, 0x73, 0x73, 0x4a, 0x53, 0x52, 0x79, 0x6f, 0x57, 0x58, 0x75, 0x4a, 0x56, 0x72, 0x6c, 0x35, 0x6a, 0x4c, 0x6e, 0x38, 0x74, 0x2b, 0x72, 0x53, 0x66, 0x72, 0x7a, 0x6b, 0x47, 0x6b, 0x6a, 0x32, 0x77, 0x54, 0x5a, 0x35, 0x31, 0x78, 0x59, 0x2f, 0x47, 0x58, 0x55, 0x6c, 0x37, 0x37, 0x4d, 0x2f, 0x43, 0x34, 0x4b, 0x7a, 0x43, 0x55, 0x71, 0x4e, 0x51, 0x54, 0x34, 0x59, 0x4a, 0x45, 0x56, 0x0a, 0x64, 0x54, 0x31, 0x42, 0x2f, 0x79, 0x4d, 0x66, 0x47, 0x63, 0x68, 0x73, 0x36, 0x34, 0x4a, 0x54, 0x42, 0x4b, 0x62, 0x6b, 0x54, 0x43, 0x4a, 0x4e, 0x6a, 0x59, 0x79, 0x36, 0x7a, 0x6c, 0x74, 0x7a, 0x37, 0x47, 0x52, 0x55, 0x55, 0x47, 0x33, 0x52, 0x6e, 0x46, 0x58, 0x37, 0x61, 0x63, 0x4d, 0x32, 0x77, 0x34, 0x79, 0x38, 0x50, 0x49, 0x57, 0x6d, 0x61, 0x77, 0x6f, 0x6d, 0x44, 0x65, 0x43, 0x54, 0x6d, 0x47, 0x43, 0x75, 0x66, 0x73, 0x59, 0x6b, 0x6c, 0x34, 0x70, 0x68, 0x0a, 0x58, 0x35, 0x47, 0x4f, 0x5a, 0x70, 0x49, 0x4a, 0x68, 0x7a, 0x62, 0x4e, 0x69, 0x35, 0x73, 0x74, 0x50, 0x76, 0x5a, 0x52, 0x31, 0x46, 0x44, 0x55, 0x57, 0x53, 0x69, 0x39, 0x67, 0x2f, 0x4c, 0x4d, 0x4b, 0x48, 0x74, 0x54, 0x68, 0x6d, 0x33, 0x59, 0x4a, 0x6f, 0x68, 0x77, 0x31, 0x2b, 0x71, 0x52, 0x7a, 0x54, 0x36, 0x35, 0x79, 0x73, 0x43, 0x51, 0x62, 0x6c, 0x72, 0x47, 0x58, 0x6e, 0x52, 0x6c, 0x31, 0x31, 0x7a, 0x2b, 0x6f, 0x2b, 0x49, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x2d, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x43, 0x41, 0x20, 0x32, 0x20, 0x45, 0x56, 0x20, 0x32, 0x30, 0x30, 0x39, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x51, 0x7a, 0x43, 0x43, 0x41, 0x79, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x44, 0x43, 0x59, 0x50, 0x30, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x4d, 0x46, 0x41, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x52, 0x46, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x0a, 0x44, 0x41, 0x78, 0x45, 0x4c, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x45, 0x64, 0x74, 0x59, 0x6b, 0x67, 0x78, 0x4b, 0x6a, 0x41, 0x6f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x49, 0x55, 0x51, 0x74, 0x56, 0x46, 0x4a, 0x56, 0x55, 0x31, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x62, 0x47, 0x46, 0x7a, 0x63, 0x79, 0x41, 0x7a, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x49, 0x67, 0x52, 0x56, 0x59, 0x67, 0x4d, 0x6a, 0x41, 0x77, 0x0a, 0x4f, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x77, 0x4f, 0x54, 0x45, 0x78, 0x4d, 0x44, 0x55, 0x77, 0x4f, 0x44, 0x55, 0x77, 0x4e, 0x44, 0x5a, 0x61, 0x46, 0x77, 0x30, 0x79, 0x4f, 0x54, 0x45, 0x78, 0x4d, 0x44, 0x55, 0x77, 0x4f, 0x44, 0x55, 0x77, 0x4e, 0x44, 0x5a, 0x61, 0x4d, 0x46, 0x41, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x52, 0x46, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x0a, 0x44, 0x41, 0x78, 0x45, 0x4c, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x45, 0x64, 0x74, 0x59, 0x6b, 0x67, 0x78, 0x4b, 0x6a, 0x41, 0x6f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x49, 0x55, 0x51, 0x74, 0x56, 0x46, 0x4a, 0x56, 0x55, 0x31, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x62, 0x47, 0x46, 0x7a, 0x63, 0x79, 0x41, 0x7a, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x49, 0x67, 0x52, 0x56, 0x59, 0x67, 0x4d, 0x6a, 0x41, 0x77, 0x0a, 0x4f, 0x54, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4a, 0x6e, 0x78, 0x68, 0x44, 0x52, 0x77, 0x75, 0x69, 0x2b, 0x33, 0x4d, 0x4b, 0x43, 0x4f, 0x76, 0x58, 0x77, 0x45, 0x7a, 0x37, 0x35, 0x69, 0x76, 0x4a, 0x6e, 0x39, 0x67, 0x70, 0x66, 0x53, 0x0a, 0x65, 0x67, 0x70, 0x6e, 0x6c, 0x6a, 0x67, 0x4a, 0x39, 0x68, 0x42, 0x4f, 0x6c, 0x53, 0x4a, 0x7a, 0x6d, 0x59, 0x33, 0x61, 0x46, 0x53, 0x33, 0x6e, 0x42, 0x66, 0x77, 0x5a, 0x63, 0x79, 0x4b, 0x33, 0x6a, 0x70, 0x67, 0x41, 0x76, 0x44, 0x77, 0x39, 0x72, 0x4b, 0x46, 0x73, 0x2b, 0x39, 0x5a, 0x35, 0x4a, 0x55, 0x75, 0x74, 0x38, 0x4d, 0x78, 0x6b, 0x32, 0x6f, 0x67, 0x2b, 0x4b, 0x62, 0x67, 0x50, 0x43, 0x64, 0x4d, 0x30, 0x33, 0x54, 0x50, 0x31, 0x59, 0x74, 0x48, 0x68, 0x0a, 0x7a, 0x52, 0x6e, 0x70, 0x37, 0x68, 0x68, 0x50, 0x54, 0x46, 0x69, 0x75, 0x34, 0x68, 0x37, 0x57, 0x44, 0x46, 0x73, 0x56, 0x57, 0x74, 0x67, 0x36, 0x75, 0x4d, 0x51, 0x59, 0x5a, 0x42, 0x37, 0x6a, 0x4d, 0x37, 0x4b, 0x31, 0x69, 0x58, 0x64, 0x4f, 0x44, 0x4c, 0x2f, 0x5a, 0x6c, 0x47, 0x73, 0x54, 0x6c, 0x32, 0x38, 0x53, 0x6f, 0x2f, 0x36, 0x5a, 0x71, 0x51, 0x54, 0x4d, 0x46, 0x65, 0x78, 0x67, 0x61, 0x44, 0x62, 0x74, 0x43, 0x48, 0x75, 0x33, 0x39, 0x62, 0x2b, 0x54, 0x0a, 0x37, 0x57, 0x59, 0x78, 0x67, 0x34, 0x7a, 0x47, 0x63, 0x54, 0x53, 0x48, 0x54, 0x68, 0x66, 0x71, 0x72, 0x34, 0x75, 0x52, 0x6a, 0x52, 0x78, 0x57, 0x51, 0x61, 0x34, 0x69, 0x4e, 0x31, 0x34, 0x33, 0x38, 0x68, 0x33, 0x5a, 0x30, 0x53, 0x30, 0x4e, 0x4c, 0x32, 0x6c, 0x52, 0x70, 0x37, 0x35, 0x6d, 0x70, 0x6f, 0x6f, 0x36, 0x4b, 0x72, 0x33, 0x48, 0x47, 0x72, 0x48, 0x68, 0x46, 0x50, 0x43, 0x2b, 0x4f, 0x68, 0x32, 0x35, 0x7a, 0x31, 0x75, 0x78, 0x61, 0x76, 0x36, 0x30, 0x0a, 0x73, 0x55, 0x59, 0x67, 0x6f, 0x76, 0x73, 0x65, 0x4f, 0x33, 0x44, 0x76, 0x6b, 0x35, 0x68, 0x39, 0x6a, 0x48, 0x4f, 0x57, 0x38, 0x73, 0x58, 0x76, 0x68, 0x58, 0x43, 0x74, 0x4b, 0x53, 0x62, 0x38, 0x48, 0x67, 0x51, 0x2b, 0x48, 0x4b, 0x44, 0x59, 0x44, 0x38, 0x74, 0x53, 0x67, 0x32, 0x4a, 0x38, 0x37, 0x6f, 0x74, 0x54, 0x6c, 0x5a, 0x43, 0x70, 0x56, 0x36, 0x4c, 0x71, 0x59, 0x51, 0x58, 0x59, 0x2b, 0x55, 0x33, 0x45, 0x4a, 0x2f, 0x70, 0x75, 0x72, 0x65, 0x33, 0x35, 0x0a, 0x31, 0x31, 0x48, 0x33, 0x61, 0x36, 0x55, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4f, 0x43, 0x41, 0x53, 0x51, 0x77, 0x67, 0x67, 0x45, 0x67, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4e, 0x4f, 0x55, 0x69, 0x6b, 0x78, 0x69, 0x45, 0x79, 0x6f, 0x5a, 0x4c, 0x73, 0x79, 0x76, 0x0a, 0x63, 0x6f, 0x70, 0x39, 0x4e, 0x74, 0x65, 0x61, 0x48, 0x4e, 0x78, 0x6e, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x43, 0x42, 0x33, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x66, 0x42, 0x49, 0x48, 0x56, 0x4d, 0x49, 0x48, 0x53, 0x4d, 0x49, 0x47, 0x48, 0x6f, 0x49, 0x47, 0x45, 0x6f, 0x49, 0x47, 0x42, 0x68, 0x6e, 0x39, 0x73, 0x5a, 0x47, 0x46, 0x77, 0x4f, 0x69, 0x38, 0x76, 0x0a, 0x5a, 0x47, 0x6c, 0x79, 0x5a, 0x57, 0x4e, 0x30, 0x62, 0x33, 0x4a, 0x35, 0x4c, 0x6d, 0x51, 0x74, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x75, 0x62, 0x6d, 0x56, 0x30, 0x4c, 0x30, 0x4e, 0x4f, 0x50, 0x55, 0x51, 0x74, 0x56, 0x46, 0x4a, 0x56, 0x55, 0x31, 0x51, 0x6c, 0x4d, 0x6a, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x4a, 0x54, 0x49, 0x77, 0x51, 0x32, 0x78, 0x68, 0x63, 0x33, 0x4d, 0x6c, 0x4d, 0x6a, 0x41, 0x7a, 0x4a, 0x54, 0x49, 0x77, 0x51, 0x30, 0x45, 0x6c, 0x0a, 0x4d, 0x6a, 0x41, 0x79, 0x4a, 0x54, 0x49, 0x77, 0x52, 0x56, 0x59, 0x6c, 0x4d, 0x6a, 0x41, 0x79, 0x4d, 0x44, 0x41, 0x35, 0x4c, 0x45, 0x38, 0x39, 0x52, 0x43, 0x31, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x55, 0x79, 0x4d, 0x45, 0x64, 0x74, 0x59, 0x6b, 0x67, 0x73, 0x51, 0x7a, 0x31, 0x45, 0x52, 0x54, 0x39, 0x6a, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x5a, 0x58, 0x4a, 0x6c, 0x64, 0x6d, 0x39, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x0a, 0x62, 0x32, 0x35, 0x73, 0x61, 0x58, 0x4e, 0x30, 0x4d, 0x45, 0x61, 0x67, 0x52, 0x4b, 0x42, 0x43, 0x68, 0x6b, 0x42, 0x6f, 0x64, 0x48, 0x52, 0x77, 0x4f, 0x69, 0x38, 0x76, 0x64, 0x33, 0x64, 0x33, 0x4c, 0x6d, 0x51, 0x74, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x75, 0x62, 0x6d, 0x56, 0x30, 0x4c, 0x32, 0x4e, 0x79, 0x62, 0x43, 0x39, 0x6b, 0x4c, 0x58, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x58, 0x33, 0x4a, 0x76, 0x62, 0x33, 0x52, 0x66, 0x59, 0x32, 0x78, 0x68, 0x0a, 0x63, 0x33, 0x4e, 0x66, 0x4d, 0x31, 0x39, 0x6a, 0x59, 0x56, 0x38, 0x79, 0x58, 0x32, 0x56, 0x32, 0x58, 0x7a, 0x49, 0x77, 0x4d, 0x44, 0x6b, 0x75, 0x59, 0x33, 0x4a, 0x73, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x41, 0x30, 0x37, 0x58, 0x74, 0x61, 0x50, 0x4b, 0x53, 0x55, 0x69, 0x4f, 0x38, 0x61, 0x45, 0x58, 0x55, 0x48, 0x4c, 0x37, 0x50, 0x2b, 0x0a, 0x50, 0x50, 0x6f, 0x65, 0x55, 0x53, 0x62, 0x72, 0x68, 0x2f, 0x59, 0x70, 0x33, 0x75, 0x44, 0x78, 0x31, 0x4d, 0x59, 0x6b, 0x43, 0x65, 0x6e, 0x42, 0x7a, 0x31, 0x55, 0x62, 0x74, 0x44, 0x44, 0x5a, 0x7a, 0x68, 0x72, 0x2b, 0x42, 0x6c, 0x47, 0x6d, 0x46, 0x61, 0x51, 0x74, 0x37, 0x37, 0x4a, 0x4c, 0x76, 0x79, 0x41, 0x6f, 0x4a, 0x55, 0x6e, 0x52, 0x70, 0x6a, 0x5a, 0x33, 0x4e, 0x4f, 0x68, 0x6b, 0x33, 0x31, 0x4b, 0x78, 0x45, 0x63, 0x64, 0x7a, 0x65, 0x73, 0x30, 0x35, 0x0a, 0x6e, 0x73, 0x4b, 0x74, 0x6a, 0x48, 0x45, 0x68, 0x38, 0x6c, 0x70, 0x72, 0x72, 0x39, 0x38, 0x38, 0x54, 0x6c, 0x57, 0x76, 0x73, 0x6f, 0x52, 0x6c, 0x46, 0x49, 0x6d, 0x35, 0x64, 0x38, 0x73, 0x71, 0x4d, 0x62, 0x37, 0x50, 0x6f, 0x32, 0x33, 0x50, 0x62, 0x30, 0x69, 0x55, 0x4d, 0x6b, 0x5a, 0x76, 0x35, 0x33, 0x47, 0x4d, 0x6f, 0x4b, 0x61, 0x45, 0x47, 0x54, 0x63, 0x48, 0x38, 0x67, 0x4e, 0x46, 0x43, 0x53, 0x75, 0x47, 0x64, 0x58, 0x7a, 0x66, 0x58, 0x32, 0x6c, 0x58, 0x0a, 0x41, 0x4e, 0x74, 0x75, 0x32, 0x4b, 0x5a, 0x79, 0x49, 0x6b, 0x74, 0x51, 0x31, 0x48, 0x57, 0x59, 0x56, 0x74, 0x2b, 0x33, 0x47, 0x50, 0x39, 0x44, 0x51, 0x31, 0x43, 0x75, 0x65, 0x6b, 0x52, 0x37, 0x38, 0x48, 0x6c, 0x52, 0x31, 0x30, 0x4d, 0x39, 0x70, 0x39, 0x4f, 0x42, 0x30, 0x2f, 0x44, 0x4a, 0x54, 0x37, 0x6e, 0x61, 0x78, 0x70, 0x65, 0x47, 0x30, 0x49, 0x4c, 0x44, 0x35, 0x45, 0x4a, 0x74, 0x2f, 0x72, 0x44, 0x69, 0x5a, 0x45, 0x34, 0x4f, 0x4a, 0x75, 0x64, 0x41, 0x0a, 0x4e, 0x43, 0x61, 0x31, 0x43, 0x49, 0x6e, 0x58, 0x43, 0x47, 0x4e, 0x6a, 0x4f, 0x43, 0x64, 0x31, 0x48, 0x6a, 0x50, 0x71, 0x62, 0x71, 0x6a, 0x64, 0x6e, 0x35, 0x6c, 0x50, 0x64, 0x45, 0x32, 0x42, 0x69, 0x59, 0x42, 0x4c, 0x33, 0x5a, 0x71, 0x58, 0x4b, 0x56, 0x77, 0x76, 0x76, 0x6f, 0x46, 0x42, 0x75, 0x59, 0x7a, 0x2f, 0x36, 0x6e, 0x31, 0x67, 0x42, 0x70, 0x37, 0x4e, 0x31, 0x7a, 0x33, 0x54, 0x4c, 0x71, 0x4d, 0x56, 0x76, 0x4b, 0x6a, 0x6d, 0x4a, 0x75, 0x56, 0x76, 0x0a, 0x77, 0x39, 0x79, 0x34, 0x41, 0x79, 0x48, 0x71, 0x6e, 0x78, 0x62, 0x78, 0x4c, 0x46, 0x53, 0x31, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x41, 0x20, 0x44, 0x69, 0x73, 0x69, 0x67, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x61, 0x54, 0x43, 0x43, 0x41, 0x31, 0x47, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4a, 0x41, 0x4a, 0x4b, 0x34, 0x69, 0x4e, 0x75, 0x77, 0x69, 0x73, 0x46, 0x6a, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x4d, 0x46, 0x49, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x4e, 0x4c, 0x4d, 0x52, 0x4d, 0x77, 0x0a, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x45, 0x77, 0x70, 0x43, 0x63, 0x6d, 0x46, 0x30, 0x61, 0x58, 0x4e, 0x73, 0x59, 0x58, 0x5a, 0x68, 0x4d, 0x52, 0x4d, 0x77, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x70, 0x45, 0x61, 0x58, 0x4e, 0x70, 0x5a, 0x79, 0x42, 0x68, 0x4c, 0x6e, 0x4d, 0x75, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x42, 0x44, 0x51, 0x53, 0x42, 0x45, 0x61, 0x58, 0x4e, 0x70, 0x0a, 0x5a, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x46, 0x49, 0x79, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x79, 0x4d, 0x44, 0x63, 0x78, 0x4f, 0x54, 0x41, 0x35, 0x4d, 0x54, 0x55, 0x7a, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x79, 0x4d, 0x44, 0x63, 0x78, 0x4f, 0x54, 0x41, 0x35, 0x4d, 0x54, 0x55, 0x7a, 0x4d, 0x46, 0x6f, 0x77, 0x55, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x55, 0x30, 0x73, 0x78, 0x0a, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x43, 0x6b, 0x4a, 0x79, 0x59, 0x58, 0x52, 0x70, 0x63, 0x32, 0x78, 0x68, 0x64, 0x6d, 0x45, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x43, 0x6b, 0x52, 0x70, 0x63, 0x32, 0x6c, 0x6e, 0x49, 0x47, 0x45, 0x75, 0x63, 0x79, 0x34, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x45, 0x4e, 0x42, 0x49, 0x45, 0x52, 0x70, 0x0a, 0x63, 0x32, 0x6c, 0x6e, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x55, 0x6a, 0x49, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x69, 0x6f, 0x38, 0x51, 0x41, 0x43, 0x64, 0x61, 0x46, 0x58, 0x53, 0x31, 0x74, 0x46, 0x50, 0x62, 0x43, 0x0a, 0x77, 0x33, 0x4f, 0x65, 0x4e, 0x63, 0x4a, 0x78, 0x56, 0x58, 0x36, 0x42, 0x2b, 0x36, 0x74, 0x47, 0x55, 0x4f, 0x44, 0x42, 0x66, 0x45, 0x6c, 0x34, 0x35, 0x71, 0x74, 0x35, 0x57, 0x44, 0x7a, 0x61, 0x2f, 0x33, 0x77, 0x63, 0x6e, 0x39, 0x69, 0x58, 0x41, 0x6e, 0x67, 0x2b, 0x61, 0x30, 0x45, 0x45, 0x36, 0x55, 0x47, 0x39, 0x76, 0x67, 0x4d, 0x73, 0x52, 0x66, 0x59, 0x76, 0x5a, 0x4e, 0x53, 0x72, 0x58, 0x61, 0x4e, 0x48, 0x50, 0x57, 0x53, 0x62, 0x36, 0x57, 0x69, 0x61, 0x0a, 0x78, 0x73, 0x77, 0x62, 0x50, 0x37, 0x71, 0x2b, 0x73, 0x6f, 0x73, 0x30, 0x41, 0x69, 0x36, 0x59, 0x56, 0x52, 0x6e, 0x38, 0x6a, 0x47, 0x2b, 0x71, 0x58, 0x39, 0x70, 0x4d, 0x7a, 0x6b, 0x30, 0x44, 0x49, 0x61, 0x50, 0x59, 0x30, 0x6a, 0x53, 0x54, 0x56, 0x70, 0x62, 0x4c, 0x54, 0x41, 0x77, 0x41, 0x46, 0x6a, 0x78, 0x66, 0x47, 0x73, 0x33, 0x49, 0x78, 0x32, 0x79, 0x6d, 0x72, 0x64, 0x4d, 0x78, 0x70, 0x37, 0x7a, 0x6f, 0x35, 0x65, 0x46, 0x6d, 0x31, 0x74, 0x4c, 0x37, 0x0a, 0x41, 0x37, 0x52, 0x42, 0x5a, 0x63, 0x6b, 0x51, 0x72, 0x67, 0x34, 0x46, 0x59, 0x38, 0x61, 0x41, 0x61, 0x6d, 0x6b, 0x77, 0x2f, 0x64, 0x4c, 0x75, 0x6b, 0x4f, 0x38, 0x4e, 0x4a, 0x39, 0x2b, 0x66, 0x6c, 0x58, 0x50, 0x30, 0x34, 0x53, 0x58, 0x61, 0x62, 0x42, 0x62, 0x65, 0x51, 0x54, 0x67, 0x30, 0x36, 0x6f, 0x76, 0x38, 0x30, 0x65, 0x67, 0x45, 0x46, 0x47, 0x45, 0x74, 0x51, 0x58, 0x36, 0x73, 0x78, 0x33, 0x64, 0x4f, 0x79, 0x31, 0x46, 0x55, 0x2b, 0x31, 0x36, 0x53, 0x0a, 0x47, 0x42, 0x73, 0x45, 0x57, 0x6d, 0x6a, 0x47, 0x79, 0x63, 0x54, 0x36, 0x74, 0x78, 0x4f, 0x67, 0x6d, 0x4c, 0x63, 0x52, 0x4b, 0x37, 0x66, 0x57, 0x56, 0x38, 0x78, 0x38, 0x6e, 0x68, 0x66, 0x52, 0x79, 0x79, 0x58, 0x2b, 0x68, 0x6b, 0x34, 0x6b, 0x4c, 0x6c, 0x59, 0x4d, 0x65, 0x45, 0x32, 0x65, 0x41, 0x52, 0x4b, 0x6d, 0x4b, 0x36, 0x63, 0x42, 0x5a, 0x57, 0x35, 0x38, 0x59, 0x68, 0x32, 0x45, 0x68, 0x4e, 0x2f, 0x71, 0x77, 0x47, 0x75, 0x31, 0x70, 0x53, 0x71, 0x56, 0x0a, 0x67, 0x38, 0x4e, 0x54, 0x45, 0x51, 0x78, 0x7a, 0x48, 0x51, 0x75, 0x79, 0x52, 0x70, 0x44, 0x52, 0x51, 0x6a, 0x72, 0x4f, 0x51, 0x47, 0x36, 0x56, 0x72, 0x66, 0x2f, 0x47, 0x6c, 0x4b, 0x31, 0x75, 0x6c, 0x34, 0x53, 0x4f, 0x66, 0x57, 0x2b, 0x65, 0x69, 0x6f, 0x41, 0x4e, 0x53, 0x57, 0x31, 0x7a, 0x34, 0x6e, 0x75, 0x53, 0x48, 0x73, 0x50, 0x7a, 0x77, 0x66, 0x50, 0x72, 0x4c, 0x67, 0x56, 0x76, 0x32, 0x52, 0x76, 0x50, 0x4e, 0x33, 0x59, 0x45, 0x79, 0x4c, 0x52, 0x61, 0x0a, 0x35, 0x42, 0x65, 0x6e, 0x79, 0x39, 0x31, 0x32, 0x48, 0x39, 0x41, 0x5a, 0x64, 0x75, 0x67, 0x73, 0x42, 0x62, 0x50, 0x57, 0x6e, 0x44, 0x54, 0x59, 0x6c, 0x74, 0x78, 0x68, 0x68, 0x35, 0x45, 0x46, 0x35, 0x45, 0x51, 0x49, 0x4d, 0x38, 0x48, 0x61, 0x75, 0x51, 0x68, 0x6c, 0x31, 0x4b, 0x36, 0x79, 0x4e, 0x67, 0x33, 0x72, 0x75, 0x6a, 0x69, 0x36, 0x44, 0x4f, 0x57, 0x62, 0x6e, 0x75, 0x75, 0x4e, 0x5a, 0x74, 0x32, 0x5a, 0x7a, 0x39, 0x61, 0x4a, 0x51, 0x66, 0x59, 0x45, 0x0a, 0x6b, 0x6f, 0x6f, 0x70, 0x4b, 0x57, 0x31, 0x72, 0x4f, 0x68, 0x7a, 0x6e, 0x64, 0x58, 0x30, 0x43, 0x63, 0x51, 0x37, 0x7a, 0x77, 0x4f, 0x65, 0x39, 0x79, 0x78, 0x6e, 0x64, 0x6e, 0x57, 0x43, 0x79, 0x77, 0x6d, 0x5a, 0x67, 0x74, 0x72, 0x45, 0x45, 0x37, 0x73, 0x6e, 0x6d, 0x68, 0x72, 0x6d, 0x61, 0x5a, 0x6b, 0x43, 0x6f, 0x35, 0x78, 0x48, 0x74, 0x67, 0x55, 0x55, 0x44, 0x69, 0x2f, 0x5a, 0x6e, 0x57, 0x65, 0x6a, 0x42, 0x42, 0x68, 0x47, 0x39, 0x33, 0x63, 0x2b, 0x41, 0x0a, 0x41, 0x6b, 0x39, 0x6c, 0x51, 0x48, 0x68, 0x63, 0x52, 0x31, 0x44, 0x49, 0x6d, 0x2b, 0x59, 0x66, 0x67, 0x58, 0x76, 0x6b, 0x52, 0x4b, 0x68, 0x62, 0x68, 0x5a, 0x72, 0x69, 0x33, 0x6c, 0x72, 0x56, 0x78, 0x2f, 0x6b, 0x36, 0x52, 0x47, 0x5a, 0x4c, 0x35, 0x44, 0x4a, 0x55, 0x66, 0x4f, 0x52, 0x73, 0x6e, 0x4c, 0x4d, 0x4f, 0x50, 0x52, 0x65, 0x69, 0x73, 0x6a, 0x51, 0x53, 0x31, 0x6e, 0x36, 0x79, 0x71, 0x45, 0x6d, 0x37, 0x30, 0x58, 0x6f, 0x6f, 0x51, 0x4c, 0x36, 0x69, 0x0a, 0x46, 0x68, 0x2f, 0x66, 0x35, 0x44, 0x63, 0x66, 0x45, 0x58, 0x50, 0x37, 0x6b, 0x41, 0x70, 0x6c, 0x51, 0x36, 0x49, 0x4e, 0x66, 0x50, 0x67, 0x47, 0x41, 0x56, 0x55, 0x7a, 0x66, 0x62, 0x41, 0x4e, 0x75, 0x50, 0x54, 0x31, 0x72, 0x71, 0x56, 0x43, 0x56, 0x33, 0x77, 0x32, 0x45, 0x59, 0x78, 0x37, 0x58, 0x73, 0x51, 0x44, 0x6e, 0x59, 0x78, 0x35, 0x6e, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x74, 0x5a, 0x6e, 0x34, 0x72, 0x37, 0x43, 0x55, 0x39, 0x65, 0x4d, 0x67, 0x31, 0x67, 0x71, 0x74, 0x7a, 0x6b, 0x35, 0x57, 0x70, 0x43, 0x35, 0x75, 0x0a, 0x51, 0x75, 0x30, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x43, 0x59, 0x47, 0x58, 0x6e, 0x44, 0x6e, 0x5a, 0x54, 0x50, 0x49, 0x67, 0x6d, 0x37, 0x5a, 0x6e, 0x42, 0x63, 0x36, 0x47, 0x33, 0x70, 0x6d, 0x73, 0x67, 0x48, 0x32, 0x65, 0x44, 0x74, 0x70, 0x58, 0x69, 0x2f, 0x71, 0x2f, 0x30, 0x37, 0x35, 0x4b, 0x4d, 0x4f, 0x59, 0x4b, 0x6d, 0x46, 0x4d, 0x0a, 0x74, 0x43, 0x51, 0x53, 0x69, 0x6e, 0x31, 0x74, 0x45, 0x52, 0x54, 0x33, 0x6e, 0x4c, 0x58, 0x4b, 0x35, 0x72, 0x79, 0x65, 0x4a, 0x34, 0x35, 0x4d, 0x47, 0x63, 0x69, 0x70, 0x76, 0x58, 0x72, 0x41, 0x31, 0x7a, 0x59, 0x4f, 0x62, 0x59, 0x56, 0x79, 0x62, 0x71, 0x6a, 0x47, 0x6f, 0x6d, 0x33, 0x32, 0x2b, 0x6e, 0x4e, 0x6a, 0x66, 0x37, 0x78, 0x75, 0x65, 0x51, 0x67, 0x63, 0x6e, 0x59, 0x71, 0x66, 0x47, 0x6f, 0x70, 0x54, 0x70, 0x74, 0x69, 0x37, 0x32, 0x54, 0x56, 0x56, 0x0a, 0x73, 0x52, 0x48, 0x46, 0x71, 0x51, 0x4f, 0x7a, 0x56, 0x6a, 0x75, 0x35, 0x68, 0x4a, 0x4d, 0x69, 0x58, 0x6e, 0x37, 0x42, 0x39, 0x68, 0x4a, 0x53, 0x69, 0x2b, 0x6f, 0x73, 0x5a, 0x37, 0x7a, 0x2b, 0x4e, 0x6b, 0x7a, 0x31, 0x75, 0x4d, 0x2f, 0x52, 0x73, 0x30, 0x6d, 0x53, 0x4f, 0x39, 0x4d, 0x70, 0x44, 0x70, 0x6b, 0x62, 0x6c, 0x76, 0x64, 0x68, 0x75, 0x44, 0x76, 0x45, 0x4b, 0x37, 0x5a, 0x34, 0x62, 0x4c, 0x51, 0x6a, 0x62, 0x2f, 0x44, 0x39, 0x30, 0x37, 0x4a, 0x65, 0x0a, 0x64, 0x52, 0x2b, 0x5a, 0x6c, 0x61, 0x69, 0x73, 0x39, 0x74, 0x72, 0x68, 0x78, 0x54, 0x46, 0x37, 0x2b, 0x39, 0x46, 0x47, 0x73, 0x39, 0x4b, 0x38, 0x5a, 0x37, 0x52, 0x69, 0x56, 0x4c, 0x6f, 0x4a, 0x39, 0x32, 0x4f, 0x77, 0x6b, 0x36, 0x4b, 0x61, 0x2b, 0x65, 0x6c, 0x53, 0x4c, 0x6f, 0x74, 0x67, 0x45, 0x71, 0x76, 0x38, 0x39, 0x57, 0x42, 0x57, 0x37, 0x78, 0x42, 0x63, 0x69, 0x38, 0x51, 0x61, 0x51, 0x74, 0x79, 0x44, 0x57, 0x32, 0x51, 0x4f, 0x79, 0x37, 0x57, 0x38, 0x0a, 0x31, 0x6b, 0x2f, 0x42, 0x66, 0x44, 0x78, 0x75, 0x6a, 0x52, 0x4e, 0x74, 0x2b, 0x33, 0x76, 0x72, 0x4d, 0x4e, 0x44, 0x63, 0x54, 0x61, 0x2f, 0x46, 0x31, 0x62, 0x61, 0x6c, 0x54, 0x46, 0x74, 0x78, 0x79, 0x65, 0x67, 0x78, 0x76, 0x75, 0x67, 0x34, 0x42, 0x6b, 0x69, 0x68, 0x47, 0x75, 0x4c, 0x71, 0x30, 0x74, 0x34, 0x53, 0x4f, 0x56, 0x67, 0x61, 0x2f, 0x34, 0x41, 0x4f, 0x67, 0x6e, 0x58, 0x6d, 0x74, 0x38, 0x6b, 0x48, 0x62, 0x41, 0x37, 0x76, 0x2f, 0x7a, 0x6a, 0x78, 0x0a, 0x6d, 0x48, 0x48, 0x45, 0x74, 0x33, 0x38, 0x4f, 0x46, 0x64, 0x41, 0x6c, 0x61, 0x62, 0x30, 0x69, 0x6e, 0x53, 0x76, 0x74, 0x42, 0x66, 0x5a, 0x47, 0x52, 0x36, 0x7a, 0x74, 0x77, 0x50, 0x44, 0x55, 0x4f, 0x2b, 0x4c, 0x73, 0x37, 0x70, 0x5a, 0x62, 0x6b, 0x42, 0x4e, 0x4f, 0x48, 0x6c, 0x59, 0x36, 0x36, 0x37, 0x44, 0x76, 0x6c, 0x72, 0x75, 0x57, 0x49, 0x78, 0x47, 0x36, 0x38, 0x6b, 0x4f, 0x47, 0x64, 0x47, 0x53, 0x56, 0x79, 0x43, 0x68, 0x31, 0x33, 0x78, 0x30, 0x31, 0x0a, 0x75, 0x74, 0x49, 0x33, 0x67, 0x7a, 0x68, 0x54, 0x4f, 0x44, 0x59, 0x37, 0x7a, 0x32, 0x7a, 0x70, 0x2b, 0x57, 0x73, 0x4f, 0x30, 0x50, 0x73, 0x45, 0x36, 0x45, 0x39, 0x33, 0x31, 0x32, 0x55, 0x42, 0x65, 0x49, 0x59, 0x4d, 0x65, 0x6a, 0x34, 0x68, 0x59, 0x76, 0x46, 0x2f, 0x59, 0x33, 0x45, 0x4d, 0x79, 0x5a, 0x39, 0x45, 0x32, 0x36, 0x67, 0x6e, 0x6f, 0x6e, 0x57, 0x2b, 0x62, 0x6f, 0x45, 0x2b, 0x31, 0x38, 0x44, 0x72, 0x47, 0x35, 0x67, 0x50, 0x63, 0x46, 0x77, 0x30, 0x0a, 0x73, 0x6f, 0x72, 0x4d, 0x77, 0x49, 0x55, 0x59, 0x36, 0x32, 0x35, 0x36, 0x73, 0x2f, 0x64, 0x61, 0x6f, 0x51, 0x65, 0x2f, 0x71, 0x55, 0x4b, 0x53, 0x38, 0x32, 0x41, 0x69, 0x6c, 0x2b, 0x51, 0x55, 0x6f, 0x51, 0x65, 0x62, 0x54, 0x6e, 0x62, 0x41, 0x6a, 0x6e, 0x33, 0x39, 0x70, 0x43, 0x58, 0x48, 0x52, 0x2b, 0x33, 0x2f, 0x48, 0x33, 0x4f, 0x73, 0x7a, 0x4d, 0x4f, 0x6c, 0x36, 0x57, 0x38, 0x4b, 0x6a, 0x70, 0x74, 0x6c, 0x77, 0x6c, 0x43, 0x46, 0x74, 0x61, 0x4f, 0x67, 0x0a, 0x55, 0x78, 0x4c, 0x4d, 0x56, 0x59, 0x64, 0x68, 0x38, 0x34, 0x47, 0x75, 0x45, 0x45, 0x5a, 0x68, 0x76, 0x55, 0x51, 0x68, 0x75, 0x4d, 0x49, 0x39, 0x64, 0x4d, 0x39, 0x2b, 0x4a, 0x44, 0x58, 0x36, 0x48, 0x41, 0x63, 0x4f, 0x6d, 0x7a, 0x30, 0x69, 0x79, 0x75, 0x38, 0x78, 0x4c, 0x34, 0x79, 0x73, 0x45, 0x72, 0x33, 0x76, 0x51, 0x43, 0x6a, 0x38, 0x4b, 0x57, 0x65, 0x66, 0x73, 0x68, 0x4e, 0x50, 0x5a, 0x69, 0x54, 0x45, 0x55, 0x78, 0x6e, 0x70, 0x48, 0x69, 0x6b, 0x56, 0x0a, 0x37, 0x2b, 0x5a, 0x74, 0x73, 0x48, 0x38, 0x74, 0x5a, 0x2f, 0x33, 0x7a, 0x62, 0x42, 0x74, 0x31, 0x52, 0x71, 0x50, 0x6c, 0x53, 0x68, 0x66, 0x70, 0x70, 0x4e, 0x63, 0x4c, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x43, 0x43, 0x56, 0x52, 0x41, 0x49, 0x5a, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x48, 0x30, 0x7a, 0x43, 0x43, 0x42, 0x62, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x58, 0x73, 0x4f, 0x33, 0x70, 0x6b, 0x4e, 0x2f, 0x70, 0x4f, 0x41, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x77, 0x51, 0x6a, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x4a, 0x51, 0x55, 0x4e, 0x44, 0x56, 0x6c, 0x4a, 0x42, 0x0a, 0x53, 0x56, 0x6f, 0x78, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x44, 0x41, 0x64, 0x51, 0x53, 0x30, 0x6c, 0x42, 0x51, 0x30, 0x4e, 0x57, 0x4d, 0x51, 0x30, 0x77, 0x43, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x52, 0x42, 0x51, 0x30, 0x4e, 0x57, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x46, 0x55, 0x7a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x54, 0x41, 0x31, 0x0a, 0x4d, 0x44, 0x55, 0x77, 0x4f, 0x54, 0x4d, 0x33, 0x4d, 0x7a, 0x64, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4d, 0x44, 0x45, 0x79, 0x4d, 0x7a, 0x45, 0x77, 0x4f, 0x54, 0x4d, 0x33, 0x4d, 0x7a, 0x64, 0x61, 0x4d, 0x45, 0x49, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x43, 0x55, 0x46, 0x44, 0x51, 0x31, 0x5a, 0x53, 0x51, 0x55, 0x6c, 0x61, 0x4d, 0x54, 0x45, 0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x77, 0x77, 0x48, 0x0a, 0x55, 0x45, 0x74, 0x4a, 0x51, 0x55, 0x4e, 0x44, 0x56, 0x6a, 0x45, 0x4e, 0x4d, 0x41, 0x73, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x45, 0x51, 0x55, 0x4e, 0x44, 0x56, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x56, 0x4d, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x0a, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x62, 0x71, 0x61, 0x75, 0x2f, 0x59, 0x55, 0x71, 0x58, 0x72, 0x79, 0x2b, 0x58, 0x5a, 0x70, 0x70, 0x30, 0x58, 0x39, 0x44, 0x5a, 0x6c, 0x76, 0x33, 0x50, 0x34, 0x75, 0x52, 0x6d, 0x37, 0x78, 0x38, 0x66, 0x52, 0x7a, 0x50, 0x43, 0x52, 0x4b, 0x50, 0x66, 0x6d, 0x74, 0x34, 0x66, 0x74, 0x56, 0x54, 0x64, 0x46, 0x58, 0x78, 0x70, 0x4e, 0x52, 0x46, 0x76, 0x75, 0x38, 0x67, 0x4d, 0x0a, 0x6a, 0x6d, 0x6f, 0x59, 0x48, 0x74, 0x69, 0x50, 0x32, 0x52, 0x61, 0x38, 0x45, 0x45, 0x67, 0x32, 0x58, 0x50, 0x42, 0x6a, 0x73, 0x35, 0x42, 0x61, 0x58, 0x43, 0x51, 0x33, 0x31, 0x36, 0x50, 0x57, 0x79, 0x77, 0x6c, 0x78, 0x75, 0x66, 0x45, 0x42, 0x63, 0x6f, 0x53, 0x77, 0x66, 0x64, 0x74, 0x4e, 0x67, 0x4d, 0x33, 0x38, 0x30, 0x32, 0x2f, 0x4a, 0x2b, 0x4e, 0x71, 0x32, 0x44, 0x6f, 0x4c, 0x53, 0x52, 0x59, 0x57, 0x6f, 0x47, 0x32, 0x69, 0x6f, 0x50, 0x65, 0x6a, 0x30, 0x0a, 0x52, 0x47, 0x79, 0x39, 0x6f, 0x63, 0x4c, 0x4c, 0x41, 0x37, 0x36, 0x4d, 0x50, 0x68, 0x4d, 0x41, 0x68, 0x4e, 0x39, 0x4b, 0x53, 0x4d, 0x44, 0x6a, 0x49, 0x67, 0x72, 0x6f, 0x36, 0x54, 0x65, 0x6e, 0x47, 0x45, 0x79, 0x78, 0x43, 0x51, 0x30, 0x6a, 0x56, 0x6e, 0x38, 0x45, 0x54, 0x64, 0x6b, 0x58, 0x68, 0x42, 0x69, 0x6c, 0x79, 0x4e, 0x70, 0x41, 0x6c, 0x48, 0x50, 0x72, 0x7a, 0x67, 0x35, 0x58, 0x50, 0x41, 0x4f, 0x42, 0x4f, 0x70, 0x30, 0x4b, 0x6f, 0x56, 0x64, 0x44, 0x0a, 0x61, 0x61, 0x78, 0x58, 0x62, 0x58, 0x6d, 0x51, 0x65, 0x4f, 0x57, 0x31, 0x74, 0x44, 0x76, 0x59, 0x76, 0x45, 0x79, 0x4e, 0x4b, 0x4b, 0x47, 0x6e, 0x6f, 0x36, 0x65, 0x36, 0x41, 0x6b, 0x34, 0x6c, 0x30, 0x53, 0x71, 0x75, 0x37, 0x61, 0x34, 0x44, 0x49, 0x72, 0x68, 0x72, 0x49, 0x41, 0x38, 0x77, 0x4b, 0x46, 0x53, 0x56, 0x66, 0x2b, 0x44, 0x75, 0x7a, 0x67, 0x70, 0x6d, 0x6e, 0x64, 0x46, 0x41, 0x4c, 0x57, 0x34, 0x69, 0x72, 0x35, 0x30, 0x61, 0x77, 0x51, 0x55, 0x5a, 0x0a, 0x30, 0x6d, 0x2f, 0x41, 0x38, 0x70, 0x2f, 0x34, 0x65, 0x37, 0x4d, 0x43, 0x51, 0x76, 0x74, 0x51, 0x71, 0x52, 0x30, 0x74, 0x6b, 0x77, 0x38, 0x6a, 0x71, 0x38, 0x62, 0x42, 0x44, 0x35, 0x4c, 0x2f, 0x30, 0x4b, 0x49, 0x56, 0x39, 0x56, 0x4d, 0x4a, 0x63, 0x52, 0x7a, 0x2f, 0x52, 0x52, 0x4f, 0x45, 0x35, 0x69, 0x5a, 0x65, 0x2b, 0x4f, 0x43, 0x49, 0x48, 0x41, 0x72, 0x38, 0x46, 0x72, 0x61, 0x6f, 0x63, 0x77, 0x61, 0x34, 0x38, 0x47, 0x4f, 0x45, 0x41, 0x71, 0x44, 0x47, 0x0a, 0x57, 0x75, 0x7a, 0x6e, 0x64, 0x4e, 0x39, 0x77, 0x72, 0x71, 0x4f, 0x44, 0x4a, 0x65, 0x72, 0x57, 0x78, 0x35, 0x65, 0x48, 0x6b, 0x36, 0x66, 0x47, 0x69, 0x6f, 0x6f, 0x7a, 0x6c, 0x32, 0x41, 0x33, 0x45, 0x44, 0x36, 0x58, 0x50, 0x6d, 0x34, 0x70, 0x46, 0x64, 0x61, 0x68, 0x44, 0x39, 0x47, 0x49, 0x4c, 0x42, 0x4b, 0x66, 0x62, 0x36, 0x71, 0x6b, 0x78, 0x6b, 0x4c, 0x72, 0x51, 0x61, 0x4c, 0x6a, 0x6c, 0x55, 0x50, 0x54, 0x41, 0x59, 0x56, 0x74, 0x6a, 0x72, 0x73, 0x37, 0x0a, 0x38, 0x79, 0x4d, 0x32, 0x78, 0x2f, 0x34, 0x37, 0x34, 0x4b, 0x45, 0x6c, 0x42, 0x30, 0x69, 0x72, 0x79, 0x59, 0x6c, 0x30, 0x2f, 0x77, 0x69, 0x50, 0x67, 0x4c, 0x2f, 0x41, 0x6c, 0x6d, 0x58, 0x7a, 0x37, 0x75, 0x78, 0x4c, 0x61, 0x4c, 0x32, 0x64, 0x69, 0x4d, 0x4d, 0x78, 0x73, 0x30, 0x44, 0x78, 0x36, 0x4d, 0x2f, 0x32, 0x4f, 0x4c, 0x75, 0x63, 0x35, 0x4e, 0x46, 0x2f, 0x31, 0x4f, 0x56, 0x59, 0x6d, 0x33, 0x7a, 0x36, 0x31, 0x50, 0x4d, 0x4f, 0x6d, 0x33, 0x57, 0x52, 0x0a, 0x35, 0x4c, 0x70, 0x53, 0x4c, 0x68, 0x6c, 0x2b, 0x30, 0x66, 0x58, 0x4e, 0x57, 0x68, 0x6e, 0x38, 0x75, 0x67, 0x62, 0x32, 0x2b, 0x31, 0x4b, 0x6f, 0x53, 0x35, 0x6b, 0x45, 0x33, 0x66, 0x6a, 0x35, 0x74, 0x49, 0x74, 0x51, 0x6f, 0x30, 0x35, 0x69, 0x69, 0x66, 0x43, 0x48, 0x4a, 0x50, 0x71, 0x44, 0x51, 0x73, 0x47, 0x48, 0x2b, 0x74, 0x55, 0x74, 0x4b, 0x53, 0x70, 0x61, 0x63, 0x58, 0x70, 0x6b, 0x61, 0x74, 0x63, 0x6e, 0x59, 0x47, 0x4d, 0x4e, 0x32, 0x38, 0x35, 0x4a, 0x0a, 0x39, 0x59, 0x30, 0x66, 0x6b, 0x49, 0x6b, 0x79, 0x46, 0x2f, 0x68, 0x7a, 0x51, 0x37, 0x6a, 0x53, 0x57, 0x70, 0x4f, 0x47, 0x59, 0x64, 0x62, 0x68, 0x64, 0x51, 0x72, 0x71, 0x65, 0x57, 0x5a, 0x32, 0x69, 0x45, 0x39, 0x78, 0x36, 0x77, 0x51, 0x6c, 0x31, 0x67, 0x70, 0x61, 0x65, 0x70, 0x50, 0x6c, 0x75, 0x55, 0x73, 0x58, 0x51, 0x41, 0x2b, 0x78, 0x74, 0x72, 0x6e, 0x31, 0x33, 0x6b, 0x2f, 0x63, 0x34, 0x4c, 0x4f, 0x73, 0x4f, 0x78, 0x46, 0x77, 0x59, 0x49, 0x52, 0x4b, 0x0a, 0x51, 0x32, 0x36, 0x5a, 0x49, 0x4d, 0x41, 0x70, 0x63, 0x51, 0x72, 0x41, 0x5a, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x34, 0x49, 0x43, 0x79, 0x7a, 0x43, 0x43, 0x41, 0x73, 0x63, 0x77, 0x66, 0x51, 0x59, 0x49, 0x4b, 0x77, 0x59, 0x42, 0x42, 0x51, 0x55, 0x48, 0x41, 0x51, 0x45, 0x45, 0x63, 0x54, 0x42, 0x76, 0x4d, 0x45, 0x77, 0x47, 0x43, 0x43, 0x73, 0x47, 0x41, 0x51, 0x55, 0x46, 0x42, 0x7a, 0x41, 0x43, 0x68, 0x6b, 0x42, 0x6f, 0x64, 0x48, 0x52, 0x77, 0x0a, 0x4f, 0x69, 0x38, 0x76, 0x64, 0x33, 0x64, 0x33, 0x4c, 0x6d, 0x46, 0x6a, 0x59, 0x33, 0x59, 0x75, 0x5a, 0x58, 0x4d, 0x76, 0x5a, 0x6d, 0x6c, 0x73, 0x5a, 0x57, 0x46, 0x6b, 0x62, 0x57, 0x6c, 0x75, 0x4c, 0x30, 0x46, 0x79, 0x59, 0x32, 0x68, 0x70, 0x64, 0x6d, 0x39, 0x7a, 0x4c, 0x32, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x57, 0x52, 0x76, 0x63, 0x79, 0x39, 0x79, 0x59, 0x57, 0x6c, 0x36, 0x59, 0x57, 0x4e, 0x6a, 0x64, 0x6a, 0x45, 0x75, 0x0a, 0x59, 0x33, 0x4a, 0x30, 0x4d, 0x42, 0x38, 0x47, 0x43, 0x43, 0x73, 0x47, 0x41, 0x51, 0x55, 0x46, 0x42, 0x7a, 0x41, 0x42, 0x68, 0x68, 0x4e, 0x6f, 0x64, 0x48, 0x52, 0x77, 0x4f, 0x69, 0x38, 0x76, 0x62, 0x32, 0x4e, 0x7a, 0x63, 0x43, 0x35, 0x68, 0x59, 0x32, 0x4e, 0x32, 0x4c, 0x6d, 0x56, 0x7a, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54, 0x53, 0x68, 0x37, 0x54, 0x6a, 0x33, 0x7a, 0x63, 0x6e, 0x6b, 0x31, 0x58, 0x32, 0x0a, 0x56, 0x75, 0x71, 0x42, 0x35, 0x54, 0x62, 0x4d, 0x6a, 0x42, 0x34, 0x2f, 0x76, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x77, 0x51, 0x59, 0x4d, 0x42, 0x61, 0x41, 0x46, 0x4e, 0x4b, 0x48, 0x74, 0x4f, 0x50, 0x66, 0x4e, 0x79, 0x65, 0x54, 0x56, 0x66, 0x5a, 0x57, 0x36, 0x6f, 0x48, 0x6c, 0x4e, 0x73, 0x79, 0x4d, 0x0a, 0x48, 0x6a, 0x2b, 0x39, 0x4d, 0x49, 0x49, 0x42, 0x63, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x67, 0x42, 0x49, 0x49, 0x42, 0x61, 0x6a, 0x43, 0x43, 0x41, 0x57, 0x59, 0x77, 0x67, 0x67, 0x46, 0x69, 0x42, 0x67, 0x52, 0x56, 0x48, 0x53, 0x41, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x57, 0x44, 0x43, 0x43, 0x41, 0x53, 0x49, 0x47, 0x43, 0x43, 0x73, 0x47, 0x41, 0x51, 0x55, 0x46, 0x42, 0x77, 0x49, 0x43, 0x4d, 0x49, 0x49, 0x42, 0x46, 0x42, 0x36, 0x43, 0x41, 0x52, 0x41, 0x41, 0x0a, 0x51, 0x51, 0x42, 0x31, 0x41, 0x48, 0x51, 0x41, 0x62, 0x77, 0x42, 0x79, 0x41, 0x47, 0x6b, 0x41, 0x5a, 0x41, 0x42, 0x68, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x6b, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x44, 0x41, 0x47, 0x55, 0x41, 0x63, 0x67, 0x42, 0x30, 0x41, 0x47, 0x6b, 0x41, 0x5a, 0x67, 0x42, 0x70, 0x41, 0x47, 0x4d, 0x41, 0x59, 0x51, 0x42, 0x6a, 0x41, 0x47, 0x6b, 0x41, 0x38, 0x77, 0x42, 0x75, 0x41, 0x43, 0x41, 0x41, 0x55, 0x67, 0x42, 0x68, 0x0a, 0x41, 0x4f, 0x30, 0x41, 0x65, 0x67, 0x41, 0x67, 0x41, 0x47, 0x51, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x47, 0x77, 0x41, 0x59, 0x51, 0x41, 0x67, 0x41, 0x45, 0x45, 0x41, 0x51, 0x77, 0x42, 0x44, 0x41, 0x46, 0x59, 0x41, 0x49, 0x41, 0x41, 0x6f, 0x41, 0x45, 0x45, 0x41, 0x5a, 0x77, 0x42, 0x6c, 0x41, 0x47, 0x34, 0x41, 0x59, 0x77, 0x42, 0x70, 0x41, 0x47, 0x45, 0x41, 0x49, 0x41, 0x42, 0x6b, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x55, 0x41, 0x47, 0x55, 0x41, 0x0a, 0x59, 0x77, 0x42, 0x75, 0x41, 0x47, 0x38, 0x41, 0x62, 0x41, 0x42, 0x76, 0x41, 0x47, 0x63, 0x41, 0x37, 0x51, 0x42, 0x68, 0x41, 0x43, 0x41, 0x41, 0x65, 0x51, 0x41, 0x67, 0x41, 0x45, 0x4d, 0x41, 0x5a, 0x51, 0x42, 0x79, 0x41, 0x48, 0x51, 0x41, 0x61, 0x51, 0x42, 0x6d, 0x41, 0x47, 0x6b, 0x41, 0x59, 0x77, 0x42, 0x68, 0x41, 0x47, 0x4d, 0x41, 0x61, 0x51, 0x44, 0x7a, 0x41, 0x47, 0x34, 0x41, 0x49, 0x41, 0x42, 0x46, 0x41, 0x47, 0x77, 0x41, 0x5a, 0x51, 0x42, 0x6a, 0x0a, 0x41, 0x48, 0x51, 0x41, 0x63, 0x67, 0x44, 0x7a, 0x41, 0x47, 0x34, 0x41, 0x61, 0x51, 0x42, 0x6a, 0x41, 0x47, 0x45, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x45, 0x4d, 0x41, 0x53, 0x51, 0x42, 0x47, 0x41, 0x43, 0x41, 0x41, 0x55, 0x51, 0x41, 0x30, 0x41, 0x44, 0x59, 0x41, 0x4d, 0x41, 0x41, 0x78, 0x41, 0x44, 0x45, 0x41, 0x4e, 0x51, 0x41, 0x32, 0x41, 0x45, 0x55, 0x41, 0x4b, 0x51, 0x41, 0x75, 0x41, 0x43, 0x41, 0x41, 0x51, 0x77, 0x42, 0x51, 0x41, 0x46, 0x4d, 0x41, 0x0a, 0x49, 0x41, 0x42, 0x6c, 0x41, 0x47, 0x34, 0x41, 0x49, 0x41, 0x42, 0x6f, 0x41, 0x48, 0x51, 0x41, 0x64, 0x41, 0x42, 0x77, 0x41, 0x44, 0x6f, 0x41, 0x4c, 0x77, 0x41, 0x76, 0x41, 0x48, 0x63, 0x41, 0x64, 0x77, 0x42, 0x33, 0x41, 0x43, 0x34, 0x41, 0x59, 0x51, 0x42, 0x6a, 0x41, 0x47, 0x4d, 0x41, 0x64, 0x67, 0x41, 0x75, 0x41, 0x47, 0x55, 0x41, 0x63, 0x7a, 0x41, 0x77, 0x42, 0x67, 0x67, 0x72, 0x42, 0x67, 0x45, 0x46, 0x42, 0x51, 0x63, 0x43, 0x41, 0x52, 0x59, 0x6b, 0x0a, 0x61, 0x48, 0x52, 0x30, 0x63, 0x44, 0x6f, 0x76, 0x4c, 0x33, 0x64, 0x33, 0x64, 0x79, 0x35, 0x68, 0x59, 0x32, 0x4e, 0x32, 0x4c, 0x6d, 0x56, 0x7a, 0x4c, 0x32, 0x78, 0x6c, 0x5a, 0x32, 0x6c, 0x7a, 0x62, 0x47, 0x46, 0x6a, 0x61, 0x57, 0x39, 0x75, 0x58, 0x32, 0x4d, 0x75, 0x61, 0x48, 0x52, 0x74, 0x4d, 0x46, 0x55, 0x47, 0x41, 0x31, 0x55, 0x64, 0x48, 0x77, 0x52, 0x4f, 0x4d, 0x45, 0x77, 0x77, 0x53, 0x71, 0x42, 0x49, 0x6f, 0x45, 0x61, 0x47, 0x52, 0x47, 0x68, 0x30, 0x0a, 0x64, 0x48, 0x41, 0x36, 0x4c, 0x79, 0x39, 0x33, 0x64, 0x33, 0x63, 0x75, 0x59, 0x57, 0x4e, 0x6a, 0x64, 0x69, 0x35, 0x6c, 0x63, 0x79, 0x39, 0x6d, 0x61, 0x57, 0x78, 0x6c, 0x59, 0x57, 0x52, 0x74, 0x61, 0x57, 0x34, 0x76, 0x51, 0x58, 0x4a, 0x6a, 0x61, 0x47, 0x6c, 0x32, 0x62, 0x33, 0x4d, 0x76, 0x59, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x5a, 0x47, 0x39, 0x7a, 0x4c, 0x33, 0x4a, 0x68, 0x61, 0x58, 0x70, 0x68, 0x59, 0x32, 0x4e, 0x32, 0x0a, 0x4d, 0x56, 0x39, 0x6b, 0x5a, 0x58, 0x49, 0x75, 0x59, 0x33, 0x4a, 0x73, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x45, 0x45, 0x45, 0x44, 0x41, 0x4f, 0x67, 0x51, 0x78, 0x68, 0x59, 0x32, 0x4e, 0x32, 0x51, 0x47, 0x46, 0x6a, 0x59, 0x33, 0x59, 0x75, 0x5a, 0x58, 0x4d, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x0a, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4a, 0x63, 0x78, 0x41, 0x70, 0x2f, 0x6e, 0x2f, 0x55, 0x4e, 0x6e, 0x53, 0x45, 0x51, 0x55, 0x35, 0x43, 0x6d, 0x48, 0x37, 0x55, 0x77, 0x6f, 0x5a, 0x74, 0x43, 0x50, 0x4e, 0x64, 0x70, 0x4e, 0x59, 0x62, 0x64, 0x4b, 0x6c, 0x30, 0x32, 0x31, 0x32, 0x35, 0x44, 0x67, 0x42, 0x53, 0x34, 0x4f, 0x78, 0x6e, 0x6e, 0x51, 0x38, 0x70, 0x64, 0x70, 0x44, 0x37, 0x30, 0x45, 0x0a, 0x52, 0x39, 0x6d, 0x2b, 0x32, 0x37, 0x55, 0x70, 0x32, 0x70, 0x76, 0x5a, 0x72, 0x71, 0x6d, 0x5a, 0x31, 0x64, 0x4d, 0x38, 0x4d, 0x4a, 0x50, 0x31, 0x6a, 0x61, 0x47, 0x6f, 0x2f, 0x41, 0x61, 0x4e, 0x52, 0x50, 0x54, 0x4b, 0x46, 0x70, 0x56, 0x38, 0x4d, 0x39, 0x78, 0x69, 0x69, 0x36, 0x67, 0x33, 0x2b, 0x43, 0x66, 0x59, 0x43, 0x53, 0x30, 0x62, 0x37, 0x38, 0x67, 0x55, 0x4a, 0x79, 0x43, 0x70, 0x5a, 0x45, 0x54, 0x2f, 0x4c, 0x74, 0x5a, 0x31, 0x71, 0x6d, 0x78, 0x4e, 0x0a, 0x59, 0x45, 0x41, 0x5a, 0x53, 0x55, 0x4e, 0x55, 0x59, 0x39, 0x72, 0x69, 0x7a, 0x4c, 0x70, 0x6d, 0x35, 0x55, 0x39, 0x45, 0x65, 0x6c, 0x76, 0x5a, 0x61, 0x6f, 0x45, 0x72, 0x51, 0x4e, 0x56, 0x2f, 0x2b, 0x51, 0x45, 0x6e, 0x57, 0x43, 0x7a, 0x49, 0x37, 0x55, 0x69, 0x52, 0x66, 0x44, 0x2b, 0x6d, 0x41, 0x4d, 0x2f, 0x45, 0x4b, 0x58, 0x4d, 0x52, 0x4e, 0x74, 0x36, 0x47, 0x47, 0x54, 0x36, 0x64, 0x37, 0x68, 0x6d, 0x4b, 0x47, 0x39, 0x57, 0x77, 0x37, 0x59, 0x34, 0x39, 0x0a, 0x6e, 0x43, 0x72, 0x41, 0x44, 0x64, 0x67, 0x39, 0x5a, 0x75, 0x4d, 0x38, 0x44, 0x62, 0x33, 0x56, 0x6c, 0x46, 0x7a, 0x69, 0x34, 0x71, 0x63, 0x31, 0x47, 0x77, 0x51, 0x41, 0x39, 0x6a, 0x39, 0x61, 0x6a, 0x65, 0x70, 0x44, 0x76, 0x56, 0x2b, 0x4a, 0x48, 0x61, 0x6e, 0x42, 0x73, 0x4d, 0x79, 0x5a, 0x34, 0x6b, 0x30, 0x41, 0x43, 0x74, 0x72, 0x4a, 0x4a, 0x31, 0x76, 0x6e, 0x45, 0x35, 0x42, 0x63, 0x35, 0x50, 0x55, 0x7a, 0x6f, 0x6c, 0x56, 0x74, 0x33, 0x4f, 0x41, 0x4a, 0x0a, 0x54, 0x53, 0x2b, 0x78, 0x4a, 0x6c, 0x73, 0x6e, 0x64, 0x51, 0x41, 0x4a, 0x78, 0x47, 0x4a, 0x33, 0x4b, 0x51, 0x68, 0x66, 0x6e, 0x6c, 0x6d, 0x73, 0x74, 0x6e, 0x36, 0x74, 0x6e, 0x31, 0x51, 0x77, 0x49, 0x67, 0x50, 0x42, 0x48, 0x6e, 0x46, 0x6b, 0x2f, 0x76, 0x6b, 0x34, 0x43, 0x70, 0x59, 0x59, 0x33, 0x51, 0x49, 0x55, 0x72, 0x43, 0x50, 0x4c, 0x42, 0x68, 0x77, 0x65, 0x70, 0x48, 0x32, 0x4e, 0x44, 0x64, 0x34, 0x6e, 0x51, 0x65, 0x69, 0x74, 0x32, 0x68, 0x57, 0x33, 0x0a, 0x73, 0x43, 0x50, 0x64, 0x4b, 0x36, 0x6a, 0x54, 0x32, 0x69, 0x57, 0x48, 0x37, 0x65, 0x68, 0x56, 0x52, 0x45, 0x32, 0x49, 0x39, 0x44, 0x5a, 0x2b, 0x68, 0x4a, 0x70, 0x34, 0x72, 0x50, 0x63, 0x4f, 0x56, 0x6b, 0x6b, 0x4f, 0x31, 0x6a, 0x4d, 0x6c, 0x31, 0x6f, 0x52, 0x51, 0x51, 0x6d, 0x77, 0x67, 0x45, 0x68, 0x30, 0x71, 0x31, 0x62, 0x36, 0x38, 0x38, 0x6e, 0x43, 0x42, 0x70, 0x48, 0x42, 0x67, 0x76, 0x67, 0x57, 0x31, 0x6d, 0x35, 0x34, 0x45, 0x52, 0x4c, 0x35, 0x68, 0x0a, 0x49, 0x36, 0x7a, 0x70, 0x70, 0x53, 0x53, 0x4d, 0x45, 0x59, 0x43, 0x55, 0x57, 0x71, 0x4b, 0x69, 0x75, 0x55, 0x6e, 0x53, 0x77, 0x64, 0x7a, 0x52, 0x70, 0x2b, 0x30, 0x78, 0x45, 0x53, 0x79, 0x65, 0x47, 0x61, 0x62, 0x75, 0x34, 0x56, 0x58, 0x68, 0x77, 0x4f, 0x72, 0x50, 0x44, 0x59, 0x54, 0x6b, 0x46, 0x37, 0x65, 0x69, 0x66, 0x4b, 0x58, 0x65, 0x56, 0x53, 0x55, 0x47, 0x37, 0x73, 0x7a, 0x41, 0x68, 0x31, 0x78, 0x41, 0x32, 0x73, 0x79, 0x56, 0x50, 0x31, 0x58, 0x67, 0x0a, 0x4e, 0x63, 0x65, 0x34, 0x68, 0x4c, 0x36, 0x30, 0x58, 0x63, 0x31, 0x36, 0x67, 0x77, 0x46, 0x79, 0x37, 0x6f, 0x66, 0x6d, 0x58, 0x78, 0x32, 0x75, 0x74, 0x59, 0x58, 0x47, 0x4a, 0x74, 0x2f, 0x6d, 0x77, 0x5a, 0x72, 0x70, 0x48, 0x67, 0x4a, 0x48, 0x6e, 0x79, 0x71, 0x6f, 0x62, 0x61, 0x6c, 0x62, 0x7a, 0x2b, 0x78, 0x46, 0x64, 0x33, 0x2b, 0x59, 0x4a, 0x35, 0x6f, 0x79, 0x58, 0x53, 0x72, 0x6a, 0x68, 0x4f, 0x37, 0x46, 0x6d, 0x47, 0x59, 0x76, 0x6c, 0x69, 0x41, 0x64, 0x0a, 0x33, 0x64, 0x6a, 0x44, 0x4a, 0x39, 0x65, 0x77, 0x2b, 0x66, 0x37, 0x5a, 0x66, 0x63, 0x33, 0x51, 0x6e, 0x34, 0x38, 0x4c, 0x46, 0x46, 0x68, 0x52, 0x6e, 0x79, 0x2b, 0x4c, 0x77, 0x7a, 0x67, 0x74, 0x33, 0x75, 0x69, 0x50, 0x31, 0x6f, 0x32, 0x48, 0x70, 0x50, 0x56, 0x57, 0x51, 0x78, 0x61, 0x5a, 0x4c, 0x50, 0x53, 0x6b, 0x56, 0x72, 0x51, 0x30, 0x75, 0x47, 0x45, 0x33, 0x79, 0x63, 0x4a, 0x59, 0x67, 0x42, 0x75, 0x67, 0x6c, 0x36, 0x48, 0x38, 0x57, 0x59, 0x33, 0x70, 0x0a, 0x45, 0x66, 0x62, 0x52, 0x44, 0x30, 0x74, 0x56, 0x4e, 0x45, 0x59, 0x71, 0x69, 0x34, 0x59, 0x37, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x57, 0x43, 0x41, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x51, 0x54, 0x43, 0x43, 0x41, 0x79, 0x6d, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x43, 0x44, 0x4c, 0x34, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x55, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x46, 0x63, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x0a, 0x43, 0x56, 0x52, 0x42, 0x53, 0x56, 0x64, 0x42, 0x54, 0x69, 0x31, 0x44, 0x51, 0x54, 0x45, 0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x48, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x54, 0x45, 0x63, 0x4d, 0x42, 0x6f, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x54, 0x56, 0x46, 0x64, 0x44, 0x51, 0x53, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x0a, 0x51, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x6a, 0x41, 0x32, 0x4d, 0x6a, 0x63, 0x77, 0x4e, 0x6a, 0x49, 0x34, 0x4d, 0x7a, 0x4e, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4d, 0x44, 0x45, 0x79, 0x4d, 0x7a, 0x45, 0x78, 0x4e, 0x54, 0x55, 0x35, 0x4e, 0x54, 0x6c, 0x61, 0x4d, 0x46, 0x45, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x52, 0x58, 0x4d, 0x52, 0x49, 0x77, 0x45, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x0a, 0x45, 0x77, 0x6c, 0x55, 0x51, 0x55, 0x6c, 0x58, 0x51, 0x55, 0x34, 0x74, 0x51, 0x30, 0x45, 0x78, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x42, 0x31, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x78, 0x48, 0x44, 0x41, 0x61, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x31, 0x52, 0x58, 0x51, 0x30, 0x45, 0x67, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x0a, 0x51, 0x30, 0x45, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x77, 0x42, 0x64, 0x76, 0x49, 0x36, 0x34, 0x7a, 0x45, 0x62, 0x6f, 0x6f, 0x68, 0x37, 0x34, 0x35, 0x4e, 0x6e, 0x48, 0x45, 0x4b, 0x48, 0x31, 0x4a, 0x77, 0x37, 0x57, 0x32, 0x43, 0x0a, 0x6e, 0x4a, 0x66, 0x46, 0x31, 0x30, 0x78, 0x4f, 0x52, 0x55, 0x6e, 0x4c, 0x51, 0x45, 0x4b, 0x31, 0x45, 0x6a, 0x52, 0x73, 0x47, 0x63, 0x4a, 0x30, 0x70, 0x44, 0x46, 0x66, 0x68, 0x51, 0x4b, 0x58, 0x37, 0x45, 0x4d, 0x7a, 0x43, 0x6c, 0x50, 0x53, 0x6e, 0x49, 0x79, 0x4f, 0x74, 0x37, 0x68, 0x35, 0x32, 0x79, 0x76, 0x56, 0x61, 0x76, 0x4b, 0x4f, 0x5a, 0x73, 0x54, 0x75, 0x4b, 0x77, 0x45, 0x48, 0x6b, 0x74, 0x53, 0x7a, 0x30, 0x41, 0x4c, 0x66, 0x55, 0x50, 0x5a, 0x56, 0x0a, 0x72, 0x32, 0x59, 0x4f, 0x79, 0x2b, 0x42, 0x48, 0x59, 0x43, 0x38, 0x72, 0x4d, 0x6a, 0x6b, 0x31, 0x55, 0x6a, 0x6f, 0x6f, 0x67, 0x2f, 0x68, 0x37, 0x46, 0x73, 0x59, 0x59, 0x75, 0x47, 0x4c, 0x57, 0x52, 0x79, 0x57, 0x52, 0x7a, 0x76, 0x41, 0x5a, 0x45, 0x6b, 0x32, 0x74, 0x59, 0x2f, 0x58, 0x54, 0x50, 0x33, 0x56, 0x66, 0x4b, 0x66, 0x43, 0x68, 0x4d, 0x42, 0x77, 0x71, 0x6f, 0x4a, 0x69, 0x6d, 0x46, 0x62, 0x33, 0x75, 0x2f, 0x52, 0x6b, 0x32, 0x38, 0x4f, 0x4b, 0x52, 0x0a, 0x51, 0x34, 0x2f, 0x36, 0x79, 0x74, 0x59, 0x51, 0x4a, 0x30, 0x6c, 0x4d, 0x37, 0x39, 0x33, 0x42, 0x38, 0x59, 0x56, 0x77, 0x6d, 0x38, 0x72, 0x71, 0x71, 0x46, 0x70, 0x44, 0x2f, 0x47, 0x32, 0x47, 0x62, 0x33, 0x50, 0x70, 0x4e, 0x30, 0x57, 0x70, 0x38, 0x44, 0x62, 0x48, 0x7a, 0x49, 0x68, 0x31, 0x48, 0x72, 0x74, 0x73, 0x42, 0x76, 0x2b, 0x62, 0x61, 0x7a, 0x34, 0x58, 0x37, 0x47, 0x47, 0x71, 0x63, 0x58, 0x7a, 0x47, 0x48, 0x61, 0x4c, 0x33, 0x53, 0x65, 0x6b, 0x56, 0x0a, 0x74, 0x54, 0x7a, 0x57, 0x6f, 0x57, 0x48, 0x31, 0x45, 0x66, 0x63, 0x46, 0x62, 0x78, 0x33, 0x39, 0x45, 0x62, 0x37, 0x51, 0x4d, 0x41, 0x66, 0x43, 0x4b, 0x62, 0x41, 0x4a, 0x54, 0x69, 0x62, 0x63, 0x34, 0x36, 0x4b, 0x6f, 0x6b, 0x57, 0x6f, 0x66, 0x77, 0x70, 0x46, 0x46, 0x69, 0x46, 0x7a, 0x6c, 0x6d, 0x4c, 0x68, 0x78, 0x70, 0x52, 0x55, 0x5a, 0x79, 0x58, 0x78, 0x31, 0x45, 0x63, 0x78, 0x77, 0x64, 0x45, 0x38, 0x74, 0x6d, 0x78, 0x32, 0x52, 0x52, 0x50, 0x31, 0x57, 0x0a, 0x4b, 0x4b, 0x44, 0x2b, 0x75, 0x34, 0x5a, 0x71, 0x79, 0x50, 0x70, 0x63, 0x43, 0x31, 0x6a, 0x63, 0x78, 0x6b, 0x74, 0x32, 0x79, 0x4b, 0x73, 0x69, 0x32, 0x58, 0x4d, 0x50, 0x70, 0x66, 0x52, 0x61, 0x41, 0x6f, 0x6b, 0x2f, 0x54, 0x35, 0x34, 0x69, 0x67, 0x75, 0x36, 0x69, 0x64, 0x46, 0x4d, 0x71, 0x50, 0x56, 0x4d, 0x6e, 0x61, 0x52, 0x31, 0x73, 0x6a, 0x6a, 0x49, 0x73, 0x5a, 0x41, 0x41, 0x6d, 0x59, 0x32, 0x45, 0x32, 0x54, 0x71, 0x4e, 0x47, 0x74, 0x7a, 0x39, 0x39, 0x0a, 0x73, 0x79, 0x32, 0x73, 0x62, 0x5a, 0x43, 0x69, 0x6c, 0x61, 0x4c, 0x4f, 0x7a, 0x39, 0x71, 0x43, 0x35, 0x77, 0x63, 0x30, 0x47, 0x5a, 0x62, 0x70, 0x75, 0x43, 0x47, 0x71, 0x4b, 0x58, 0x36, 0x6d, 0x4f, 0x4c, 0x36, 0x4f, 0x4b, 0x55, 0x6f, 0x68, 0x5a, 0x6e, 0x6b, 0x66, 0x73, 0x38, 0x4f, 0x31, 0x43, 0x57, 0x66, 0x65, 0x31, 0x74, 0x51, 0x48, 0x52, 0x76, 0x4d, 0x71, 0x32, 0x75, 0x59, 0x69, 0x4e, 0x32, 0x44, 0x4c, 0x67, 0x62, 0x59, 0x50, 0x6f, 0x41, 0x2f, 0x70, 0x0a, 0x79, 0x4a, 0x56, 0x2f, 0x76, 0x31, 0x57, 0x52, 0x42, 0x58, 0x72, 0x50, 0x50, 0x52, 0x58, 0x41, 0x62, 0x39, 0x34, 0x4a, 0x6c, 0x41, 0x47, 0x44, 0x31, 0x7a, 0x51, 0x62, 0x7a, 0x45, 0x43, 0x6c, 0x38, 0x4c, 0x69, 0x62, 0x5a, 0x39, 0x57, 0x59, 0x6b, 0x54, 0x75, 0x6e, 0x68, 0x48, 0x69, 0x56, 0x4a, 0x71, 0x52, 0x61, 0x43, 0x50, 0x67, 0x72, 0x64, 0x4c, 0x51, 0x41, 0x42, 0x44, 0x7a, 0x66, 0x75, 0x42, 0x53, 0x4f, 0x36, 0x4e, 0x2b, 0x70, 0x6a, 0x57, 0x78, 0x6e, 0x0a, 0x6b, 0x6a, 0x4d, 0x64, 0x77, 0x4c, 0x66, 0x53, 0x37, 0x4a, 0x4c, 0x49, 0x76, 0x67, 0x6d, 0x2f, 0x4c, 0x43, 0x6b, 0x46, 0x62, 0x77, 0x4a, 0x72, 0x6e, 0x75, 0x2b, 0x38, 0x76, 0x79, 0x71, 0x38, 0x57, 0x38, 0x42, 0x51, 0x6a, 0x30, 0x46, 0x77, 0x63, 0x59, 0x65, 0x79, 0x54, 0x62, 0x63, 0x45, 0x71, 0x59, 0x53, 0x6a, 0x4d, 0x71, 0x2b, 0x75, 0x37, 0x6d, 0x73, 0x58, 0x69, 0x37, 0x4b, 0x78, 0x2f, 0x6d, 0x7a, 0x68, 0x6b, 0x49, 0x79, 0x49, 0x71, 0x4a, 0x64, 0x49, 0x0a, 0x7a, 0x73, 0x68, 0x4e, 0x79, 0x2f, 0x4d, 0x47, 0x7a, 0x31, 0x39, 0x71, 0x43, 0x6b, 0x4b, 0x78, 0x48, 0x68, 0x35, 0x33, 0x4c, 0x34, 0x36, 0x67, 0x35, 0x70, 0x49, 0x4f, 0x42, 0x76, 0x77, 0x46, 0x49, 0x74, 0x49, 0x6d, 0x34, 0x54, 0x46, 0x52, 0x66, 0x54, 0x4c, 0x63, 0x44, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x79, 0x4d, 0x77, 0x49, 0x54, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x0a, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x58, 0x7a, 0x53, 0x42, 0x64, 0x75, 0x2b, 0x57, 0x48, 0x64, 0x58, 0x6c, 0x74, 0x64, 0x6b, 0x43, 0x59, 0x34, 0x51, 0x57, 0x77, 0x61, 0x36, 0x67, 0x0a, 0x63, 0x46, 0x47, 0x6e, 0x39, 0x30, 0x78, 0x48, 0x4e, 0x63, 0x67, 0x4c, 0x31, 0x79, 0x67, 0x39, 0x69, 0x58, 0x48, 0x5a, 0x71, 0x6a, 0x4e, 0x42, 0x36, 0x68, 0x51, 0x62, 0x62, 0x43, 0x45, 0x41, 0x77, 0x47, 0x78, 0x43, 0x47, 0x58, 0x36, 0x66, 0x61, 0x56, 0x73, 0x67, 0x51, 0x74, 0x2b, 0x69, 0x30, 0x74, 0x72, 0x45, 0x66, 0x4a, 0x64, 0x4c, 0x6a, 0x62, 0x44, 0x6f, 0x72, 0x4d, 0x6a, 0x75, 0x70, 0x57, 0x6b, 0x45, 0x6d, 0x51, 0x71, 0x53, 0x70, 0x71, 0x73, 0x6e, 0x0a, 0x4c, 0x68, 0x70, 0x4e, 0x67, 0x62, 0x2b, 0x45, 0x31, 0x48, 0x41, 0x65, 0x72, 0x55, 0x66, 0x2b, 0x2f, 0x55, 0x71, 0x64, 0x4d, 0x2b, 0x44, 0x79, 0x75, 0x63, 0x52, 0x46, 0x43, 0x43, 0x45, 0x4b, 0x32, 0x6d, 0x6c, 0x70, 0x63, 0x33, 0x49, 0x4e, 0x76, 0x6a, 0x54, 0x2b, 0x6c, 0x49, 0x75, 0x74, 0x77, 0x78, 0x34, 0x31, 0x31, 0x36, 0x4b, 0x44, 0x37, 0x2b, 0x55, 0x34, 0x78, 0x36, 0x57, 0x46, 0x48, 0x36, 0x76, 0x50, 0x4e, 0x4f, 0x77, 0x2f, 0x4b, 0x50, 0x34, 0x4d, 0x0a, 0x38, 0x56, 0x65, 0x47, 0x54, 0x73, 0x6c, 0x56, 0x39, 0x78, 0x7a, 0x55, 0x32, 0x4b, 0x56, 0x39, 0x42, 0x6e, 0x70, 0x76, 0x31, 0x64, 0x38, 0x51, 0x33, 0x34, 0x46, 0x4f, 0x49, 0x57, 0x57, 0x78, 0x74, 0x75, 0x45, 0x58, 0x65, 0x5a, 0x56, 0x46, 0x42, 0x73, 0x35, 0x66, 0x7a, 0x4e, 0x78, 0x47, 0x69, 0x57, 0x4e, 0x6f, 0x52, 0x49, 0x32, 0x54, 0x39, 0x47, 0x52, 0x77, 0x6f, 0x44, 0x32, 0x64, 0x4b, 0x41, 0x58, 0x44, 0x4f, 0x58, 0x43, 0x34, 0x59, 0x6e, 0x73, 0x67, 0x0a, 0x2f, 0x65, 0x54, 0x62, 0x36, 0x51, 0x69, 0x68, 0x75, 0x4a, 0x34, 0x39, 0x43, 0x63, 0x64, 0x50, 0x2b, 0x79, 0x7a, 0x34, 0x6b, 0x33, 0x5a, 0x42, 0x33, 0x6c, 0x4c, 0x67, 0x34, 0x56, 0x66, 0x53, 0x6e, 0x51, 0x4f, 0x38, 0x64, 0x35, 0x37, 0x2b, 0x6e, 0x69, 0x6c, 0x65, 0x39, 0x38, 0x46, 0x52, 0x59, 0x42, 0x2f, 0x65, 0x32, 0x67, 0x75, 0x79, 0x4c, 0x58, 0x57, 0x33, 0x51, 0x30, 0x69, 0x54, 0x35, 0x2f, 0x5a, 0x35, 0x78, 0x6f, 0x52, 0x64, 0x67, 0x46, 0x6c, 0x67, 0x0a, 0x6c, 0x50, 0x78, 0x34, 0x6d, 0x49, 0x38, 0x38, 0x6b, 0x31, 0x48, 0x74, 0x51, 0x4a, 0x41, 0x48, 0x33, 0x32, 0x52, 0x6a, 0x4a, 0x4d, 0x74, 0x4f, 0x63, 0x51, 0x57, 0x68, 0x31, 0x35, 0x51, 0x61, 0x69, 0x44, 0x4c, 0x78, 0x49, 0x6e, 0x51, 0x69, 0x72, 0x71, 0x57, 0x6d, 0x32, 0x42, 0x4a, 0x70, 0x54, 0x47, 0x43, 0x6a, 0x41, 0x75, 0x34, 0x72, 0x37, 0x4e, 0x52, 0x6a, 0x6b, 0x67, 0x74, 0x65, 0x76, 0x69, 0x39, 0x32, 0x61, 0x36, 0x4f, 0x32, 0x4a, 0x72, 0x79, 0x50, 0x0a, 0x41, 0x39, 0x67, 0x4b, 0x38, 0x6b, 0x78, 0x6b, 0x52, 0x72, 0x30, 0x35, 0x59, 0x75, 0x57, 0x57, 0x36, 0x7a, 0x52, 0x6a, 0x45, 0x53, 0x6a, 0x4d, 0x6c, 0x66, 0x47, 0x74, 0x37, 0x2b, 0x2f, 0x63, 0x67, 0x46, 0x68, 0x49, 0x36, 0x55, 0x75, 0x34, 0x36, 0x6d, 0x57, 0x73, 0x36, 0x66, 0x79, 0x41, 0x74, 0x62, 0x58, 0x49, 0x52, 0x66, 0x6d, 0x73, 0x77, 0x5a, 0x2f, 0x5a, 0x75, 0x65, 0x70, 0x69, 0x69, 0x49, 0x37, 0x45, 0x38, 0x55, 0x75, 0x44, 0x45, 0x71, 0x33, 0x6d, 0x0a, 0x69, 0x34, 0x54, 0x57, 0x6e, 0x73, 0x4c, 0x72, 0x67, 0x78, 0x69, 0x66, 0x61, 0x72, 0x73, 0x62, 0x4a, 0x47, 0x41, 0x7a, 0x63, 0x4d, 0x7a, 0x73, 0x39, 0x7a, 0x4c, 0x7a, 0x58, 0x4e, 0x6c, 0x35, 0x66, 0x65, 0x2b, 0x65, 0x70, 0x50, 0x37, 0x4a, 0x49, 0x38, 0x4d, 0x6b, 0x37, 0x68, 0x57, 0x53, 0x73, 0x54, 0x32, 0x52, 0x54, 0x79, 0x61, 0x47, 0x76, 0x57, 0x5a, 0x7a, 0x4a, 0x42, 0x50, 0x71, 0x70, 0x4b, 0x35, 0x6a, 0x77, 0x61, 0x31, 0x39, 0x68, 0x41, 0x4d, 0x38, 0x0a, 0x45, 0x48, 0x69, 0x47, 0x47, 0x33, 0x6e, 0x6a, 0x78, 0x50, 0x50, 0x79, 0x42, 0x4a, 0x55, 0x67, 0x72, 0x69, 0x4f, 0x43, 0x78, 0x4c, 0x4d, 0x36, 0x41, 0x47, 0x4b, 0x2f, 0x35, 0x6a, 0x59, 0x6b, 0x34, 0x56, 0x65, 0x36, 0x78, 0x78, 0x36, 0x51, 0x64, 0x64, 0x56, 0x66, 0x50, 0x35, 0x56, 0x68, 0x4b, 0x38, 0x45, 0x37, 0x7a, 0x65, 0x57, 0x7a, 0x61, 0x47, 0x48, 0x51, 0x52, 0x69, 0x61, 0x70, 0x49, 0x56, 0x4a, 0x70, 0x4c, 0x65, 0x73, 0x75, 0x78, 0x2b, 0x74, 0x33, 0x0a, 0x7a, 0x71, 0x59, 0x36, 0x74, 0x51, 0x4d, 0x7a, 0x54, 0x33, 0x62, 0x52, 0x35, 0x31, 0x78, 0x55, 0x41, 0x56, 0x33, 0x4c, 0x65, 0x50, 0x54, 0x4a, 0x44, 0x4c, 0x2f, 0x50, 0x45, 0x6f, 0x34, 0x58, 0x4c, 0x53, 0x4e, 0x6f, 0x6c, 0x4f, 0x65, 0x72, 0x2f, 0x71, 0x6d, 0x79, 0x4b, 0x77, 0x62, 0x51, 0x42, 0x4d, 0x30, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x65, 0x6c, 0x69, 0x61, 0x53, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x76, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x4f, 0x44, 0x43, 0x43, 0x41, 0x79, 0x43, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x52, 0x41, 0x4a, 0x57, 0x2b, 0x46, 0x71, 0x44, 0x33, 0x4c, 0x6b, 0x62, 0x78, 0x65, 0x7a, 0x6d, 0x43, 0x63, 0x76, 0x71, 0x4c, 0x7a, 0x5a, 0x59, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x46, 0x42, 0x51, 0x41, 0x77, 0x4e, 0x7a, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x43, 0x67, 0x77, 0x4c, 0x56, 0x47, 0x56, 0x73, 0x61, 0x57, 0x46, 0x54, 0x62, 0x32, 0x35, 0x6c, 0x63, 0x6d, 0x45, 0x78, 0x48, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x46, 0x6c, 0x52, 0x6c, 0x62, 0x47, 0x6c, 0x68, 0x55, 0x32, 0x39, 0x75, 0x5a, 0x58, 0x4a, 0x68, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x64, 0x6a, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x63, 0x78, 0x4d, 0x44, 0x45, 0x34, 0x0a, 0x4d, 0x54, 0x49, 0x77, 0x4d, 0x44, 0x55, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x49, 0x78, 0x4d, 0x44, 0x45, 0x34, 0x4d, 0x54, 0x49, 0x77, 0x4d, 0x44, 0x55, 0x77, 0x57, 0x6a, 0x41, 0x33, 0x4d, 0x52, 0x51, 0x77, 0x45, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x74, 0x55, 0x5a, 0x57, 0x78, 0x70, 0x59, 0x56, 0x4e, 0x76, 0x62, 0x6d, 0x56, 0x79, 0x59, 0x54, 0x45, 0x66, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x57, 0x0a, 0x56, 0x47, 0x56, 0x73, 0x61, 0x57, 0x46, 0x54, 0x62, 0x32, 0x35, 0x6c, 0x63, 0x6d, 0x45, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x42, 0x32, 0x4d, 0x54, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4d, 0x4b, 0x2b, 0x0a, 0x36, 0x79, 0x66, 0x77, 0x49, 0x61, 0x50, 0x7a, 0x61, 0x53, 0x5a, 0x56, 0x66, 0x70, 0x33, 0x46, 0x56, 0x52, 0x61, 0x52, 0x58, 0x50, 0x33, 0x76, 0x49, 0x62, 0x39, 0x54, 0x67, 0x48, 0x6f, 0x74, 0x30, 0x70, 0x47, 0x4d, 0x59, 0x7a, 0x48, 0x77, 0x37, 0x43, 0x54, 0x77, 0x77, 0x36, 0x58, 0x53, 0x63, 0x6e, 0x77, 0x51, 0x62, 0x66, 0x51, 0x33, 0x74, 0x2b, 0x58, 0x6d, 0x66, 0x48, 0x6e, 0x71, 0x6a, 0x4c, 0x57, 0x43, 0x69, 0x36, 0x35, 0x49, 0x74, 0x71, 0x77, 0x41, 0x0a, 0x33, 0x47, 0x56, 0x31, 0x37, 0x43, 0x70, 0x4e, 0x58, 0x38, 0x47, 0x48, 0x39, 0x53, 0x42, 0x6c, 0x4b, 0x34, 0x47, 0x6f, 0x52, 0x7a, 0x36, 0x4a, 0x49, 0x35, 0x55, 0x77, 0x46, 0x70, 0x42, 0x2f, 0x36, 0x46, 0x63, 0x48, 0x53, 0x4f, 0x63, 0x5a, 0x72, 0x72, 0x39, 0x46, 0x5a, 0x37, 0x45, 0x33, 0x47, 0x77, 0x59, 0x71, 0x2f, 0x74, 0x37, 0x35, 0x72, 0x48, 0x32, 0x44, 0x2b, 0x31, 0x36, 0x36, 0x35, 0x49, 0x2b, 0x58, 0x5a, 0x37, 0x35, 0x4c, 0x6a, 0x6f, 0x31, 0x6b, 0x0a, 0x42, 0x31, 0x63, 0x34, 0x56, 0x57, 0x6b, 0x30, 0x4e, 0x6a, 0x30, 0x54, 0x53, 0x4f, 0x39, 0x50, 0x34, 0x74, 0x4e, 0x6d, 0x48, 0x71, 0x54, 0x50, 0x47, 0x72, 0x64, 0x65, 0x4e, 0x6a, 0x50, 0x55, 0x74, 0x41, 0x61, 0x39, 0x47, 0x41, 0x48, 0x39, 0x64, 0x34, 0x52, 0x51, 0x41, 0x45, 0x58, 0x31, 0x6a, 0x46, 0x33, 0x6f, 0x49, 0x37, 0x78, 0x2b, 0x2f, 0x6a, 0x58, 0x68, 0x37, 0x56, 0x42, 0x37, 0x71, 0x54, 0x43, 0x4e, 0x47, 0x64, 0x4d, 0x4a, 0x6a, 0x6d, 0x68, 0x6e, 0x0a, 0x58, 0x62, 0x38, 0x38, 0x6c, 0x78, 0x68, 0x54, 0x75, 0x79, 0x6c, 0x69, 0x78, 0x63, 0x70, 0x65, 0x63, 0x73, 0x48, 0x48, 0x6c, 0x74, 0x54, 0x62, 0x4c, 0x61, 0x43, 0x30, 0x48, 0x32, 0x6b, 0x44, 0x37, 0x4f, 0x72, 0x69, 0x55, 0x50, 0x45, 0x4d, 0x50, 0x50, 0x43, 0x73, 0x38, 0x31, 0x4d, 0x74, 0x38, 0x42, 0x7a, 0x31, 0x37, 0x57, 0x77, 0x35, 0x4f, 0x58, 0x4f, 0x41, 0x46, 0x73, 0x68, 0x53, 0x73, 0x43, 0x50, 0x4e, 0x34, 0x44, 0x37, 0x63, 0x33, 0x54, 0x78, 0x48, 0x0a, 0x6f, 0x4c, 0x73, 0x31, 0x69, 0x75, 0x4b, 0x59, 0x61, 0x49, 0x75, 0x2b, 0x35, 0x62, 0x39, 0x79, 0x37, 0x74, 0x4c, 0x36, 0x70, 0x65, 0x30, 0x53, 0x37, 0x66, 0x79, 0x59, 0x47, 0x4b, 0x6b, 0x6d, 0x64, 0x74, 0x77, 0x6f, 0x53, 0x78, 0x41, 0x67, 0x48, 0x4e, 0x4e, 0x2f, 0x46, 0x6e, 0x63, 0x74, 0x37, 0x57, 0x2b, 0x41, 0x39, 0x30, 0x6d, 0x37, 0x55, 0x77, 0x57, 0x37, 0x58, 0x57, 0x6a, 0x48, 0x31, 0x4d, 0x68, 0x31, 0x46, 0x6a, 0x2b, 0x4a, 0x57, 0x6f, 0x76, 0x33, 0x0a, 0x46, 0x30, 0x66, 0x55, 0x54, 0x50, 0x48, 0x53, 0x69, 0x58, 0x6b, 0x2b, 0x54, 0x54, 0x32, 0x59, 0x71, 0x47, 0x48, 0x65, 0x4f, 0x68, 0x37, 0x53, 0x2b, 0x46, 0x34, 0x44, 0x34, 0x4d, 0x48, 0x4a, 0x48, 0x49, 0x7a, 0x54, 0x6a, 0x55, 0x33, 0x54, 0x6c, 0x54, 0x61, 0x7a, 0x4e, 0x31, 0x39, 0x6a, 0x59, 0x35, 0x73, 0x7a, 0x46, 0x50, 0x41, 0x74, 0x4a, 0x6d, 0x74, 0x54, 0x66, 0x49, 0x6d, 0x4d, 0x4d, 0x73, 0x4a, 0x75, 0x37, 0x44, 0x30, 0x68, 0x41, 0x44, 0x6e, 0x4a, 0x0a, 0x6f, 0x57, 0x6a, 0x69, 0x55, 0x49, 0x4d, 0x75, 0x73, 0x44, 0x6f, 0x72, 0x38, 0x7a, 0x61, 0x67, 0x72, 0x43, 0x2f, 0x6b, 0x62, 0x32, 0x48, 0x43, 0x55, 0x51, 0x6b, 0x35, 0x50, 0x6f, 0x74, 0x54, 0x75, 0x62, 0x74, 0x6e, 0x32, 0x74, 0x78, 0x54, 0x75, 0x58, 0x5a, 0x5a, 0x4e, 0x70, 0x31, 0x44, 0x35, 0x53, 0x44, 0x67, 0x50, 0x54, 0x4a, 0x67, 0x68, 0x53, 0x4a, 0x52, 0x74, 0x38, 0x63, 0x7a, 0x75, 0x39, 0x30, 0x56, 0x4c, 0x36, 0x52, 0x34, 0x70, 0x67, 0x64, 0x37, 0x0a, 0x67, 0x55, 0x59, 0x32, 0x42, 0x49, 0x62, 0x64, 0x65, 0x54, 0x58, 0x48, 0x6c, 0x53, 0x77, 0x37, 0x73, 0x4b, 0x4d, 0x58, 0x4e, 0x65, 0x56, 0x7a, 0x48, 0x37, 0x52, 0x63, 0x57, 0x65, 0x2f, 0x61, 0x36, 0x68, 0x42, 0x6c, 0x65, 0x33, 0x72, 0x51, 0x66, 0x35, 0x2b, 0x7a, 0x74, 0x43, 0x6f, 0x33, 0x4f, 0x33, 0x43, 0x4c, 0x6d, 0x31, 0x75, 0x35, 0x4b, 0x37, 0x66, 0x73, 0x73, 0x6c, 0x45, 0x53, 0x6c, 0x31, 0x4d, 0x70, 0x57, 0x74, 0x54, 0x77, 0x45, 0x68, 0x44, 0x63, 0x0a, 0x54, 0x77, 0x4b, 0x37, 0x45, 0x70, 0x49, 0x76, 0x59, 0x74, 0x51, 0x2f, 0x61, 0x55, 0x4e, 0x38, 0x44, 0x64, 0x62, 0x38, 0x57, 0x48, 0x55, 0x42, 0x69, 0x4a, 0x31, 0x59, 0x46, 0x6b, 0x76, 0x65, 0x75, 0x70, 0x44, 0x2f, 0x52, 0x77, 0x47, 0x4a, 0x42, 0x6d, 0x72, 0x32, 0x58, 0x37, 0x4b, 0x51, 0x61, 0x72, 0x4d, 0x43, 0x70, 0x67, 0x4b, 0x49, 0x76, 0x37, 0x4e, 0x48, 0x66, 0x69, 0x72, 0x5a, 0x31, 0x66, 0x70, 0x6f, 0x65, 0x44, 0x56, 0x4e, 0x41, 0x67, 0x4d, 0x42, 0x0a, 0x41, 0x41, 0x47, 0x6a, 0x50, 0x7a, 0x41, 0x39, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x43, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54, 0x77, 0x6a, 0x31, 0x6b, 0x34, 0x41, 0x4c, 0x50, 0x31, 0x6a, 0x35, 0x71, 0x57, 0x0a, 0x44, 0x4e, 0x58, 0x72, 0x2b, 0x6e, 0x75, 0x71, 0x46, 0x2b, 0x67, 0x54, 0x45, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x76, 0x75, 0x52, 0x63, 0x59, 0x6b, 0x34, 0x6b, 0x39, 0x41, 0x77, 0x49, 0x2f, 0x2f, 0x44, 0x54, 0x44, 0x47, 0x6a, 0x6b, 0x6b, 0x30, 0x6b, 0x69, 0x50, 0x30, 0x51, 0x6e, 0x62, 0x37, 0x74, 0x74, 0x33, 0x6f, 0x4e, 0x6d, 0x0a, 0x7a, 0x71, 0x6a, 0x4d, 0x44, 0x66, 0x7a, 0x31, 0x6d, 0x67, 0x62, 0x6c, 0x64, 0x78, 0x53, 0x52, 0x36, 0x35, 0x31, 0x42, 0x65, 0x35, 0x6b, 0x71, 0x68, 0x4f, 0x58, 0x2f, 0x2f, 0x43, 0x48, 0x42, 0x58, 0x66, 0x44, 0x6b, 0x48, 0x31, 0x65, 0x33, 0x64, 0x61, 0x6d, 0x68, 0x58, 0x77, 0x49, 0x6d, 0x2f, 0x39, 0x66, 0x48, 0x39, 0x30, 0x37, 0x65, 0x54, 0x2f, 0x6a, 0x33, 0x48, 0x45, 0x62, 0x41, 0x65, 0x6b, 0x39, 0x41, 0x4c, 0x43, 0x49, 0x31, 0x38, 0x42, 0x6d, 0x78, 0x0a, 0x30, 0x47, 0x74, 0x6e, 0x4c, 0x4c, 0x43, 0x6f, 0x34, 0x4d, 0x42, 0x41, 0x4e, 0x7a, 0x58, 0x32, 0x68, 0x46, 0x78, 0x63, 0x34, 0x36, 0x39, 0x43, 0x65, 0x50, 0x36, 0x6e, 0x79, 0x51, 0x31, 0x51, 0x36, 0x67, 0x32, 0x45, 0x64, 0x76, 0x5a, 0x52, 0x37, 0x34, 0x4e, 0x54, 0x78, 0x6e, 0x72, 0x2f, 0x44, 0x6c, 0x5a, 0x4a, 0x4c, 0x6f, 0x39, 0x36, 0x31, 0x67, 0x7a, 0x6d, 0x4a, 0x31, 0x54, 0x6a, 0x54, 0x51, 0x70, 0x67, 0x63, 0x6d, 0x4c, 0x4e, 0x6b, 0x51, 0x66, 0x57, 0x0a, 0x70, 0x62, 0x2f, 0x49, 0x6d, 0x57, 0x76, 0x74, 0x78, 0x42, 0x6e, 0x6d, 0x71, 0x30, 0x77, 0x52, 0x4f, 0x4d, 0x56, 0x76, 0x4d, 0x65, 0x4a, 0x75, 0x53, 0x63, 0x67, 0x2f, 0x64, 0x6f, 0x41, 0x6d, 0x41, 0x79, 0x59, 0x70, 0x34, 0x44, 0x62, 0x32, 0x39, 0x69, 0x42, 0x54, 0x34, 0x78, 0x64, 0x77, 0x4e, 0x42, 0x65, 0x64, 0x59, 0x32, 0x67, 0x65, 0x61, 0x2b, 0x7a, 0x44, 0x54, 0x59, 0x61, 0x34, 0x45, 0x7a, 0x41, 0x76, 0x58, 0x55, 0x59, 0x4e, 0x52, 0x30, 0x50, 0x56, 0x0a, 0x47, 0x36, 0x70, 0x5a, 0x44, 0x72, 0x6c, 0x63, 0x6a, 0x51, 0x5a, 0x49, 0x72, 0x58, 0x53, 0x48, 0x58, 0x38, 0x66, 0x38, 0x4d, 0x56, 0x52, 0x42, 0x45, 0x2b, 0x4c, 0x48, 0x49, 0x51, 0x36, 0x65, 0x34, 0x42, 0x34, 0x4e, 0x34, 0x63, 0x42, 0x37, 0x51, 0x34, 0x57, 0x51, 0x78, 0x59, 0x70, 0x59, 0x78, 0x6d, 0x55, 0x4b, 0x65, 0x46, 0x66, 0x79, 0x78, 0x69, 0x4d, 0x50, 0x41, 0x64, 0x6b, 0x67, 0x53, 0x39, 0x34, 0x50, 0x2b, 0x35, 0x4b, 0x46, 0x64, 0x53, 0x70, 0x63, 0x0a, 0x63, 0x34, 0x31, 0x74, 0x65, 0x79, 0x57, 0x52, 0x79, 0x75, 0x35, 0x46, 0x72, 0x67, 0x5a, 0x4c, 0x41, 0x4d, 0x7a, 0x54, 0x73, 0x56, 0x6c, 0x51, 0x32, 0x6a, 0x71, 0x49, 0x4f, 0x79, 0x6c, 0x44, 0x52, 0x6c, 0x36, 0x58, 0x4b, 0x31, 0x54, 0x4f, 0x55, 0x32, 0x2b, 0x4e, 0x53, 0x75, 0x65, 0x57, 0x2b, 0x72, 0x39, 0x78, 0x44, 0x6b, 0x4b, 0x4c, 0x66, 0x50, 0x30, 0x6f, 0x6f, 0x4e, 0x42, 0x49, 0x79, 0x74, 0x72, 0x45, 0x67, 0x55, 0x79, 0x37, 0x6f, 0x6e, 0x4f, 0x54, 0x0a, 0x4a, 0x73, 0x6a, 0x72, 0x44, 0x4e, 0x59, 0x6d, 0x69, 0x4c, 0x62, 0x41, 0x4a, 0x4d, 0x2b, 0x37, 0x76, 0x56, 0x76, 0x72, 0x64, 0x58, 0x33, 0x70, 0x43, 0x49, 0x36, 0x47, 0x4d, 0x79, 0x78, 0x35, 0x64, 0x77, 0x6c, 0x70, 0x70, 0x59, 0x6e, 0x38, 0x73, 0x33, 0x43, 0x51, 0x68, 0x33, 0x61, 0x50, 0x30, 0x79, 0x4b, 0x37, 0x51, 0x73, 0x36, 0x39, 0x63, 0x77, 0x73, 0x67, 0x4a, 0x69, 0x72, 0x51, 0x6d, 0x7a, 0x31, 0x77, 0x48, 0x69, 0x52, 0x73, 0x7a, 0x59, 0x64, 0x32, 0x0a, 0x71, 0x52, 0x65, 0x57, 0x74, 0x38, 0x38, 0x4e, 0x6b, 0x76, 0x75, 0x4f, 0x47, 0x4b, 0x6d, 0x59, 0x53, 0x64, 0x47, 0x65, 0x2f, 0x6d, 0x42, 0x45, 0x63, 0x69, 0x47, 0x35, 0x47, 0x65, 0x33, 0x43, 0x39, 0x54, 0x48, 0x78, 0x4f, 0x55, 0x69, 0x49, 0x6b, 0x43, 0x52, 0x31, 0x56, 0x42, 0x61, 0x74, 0x7a, 0x76, 0x54, 0x34, 0x61, 0x52, 0x52, 0x6b, 0x4f, 0x66, 0x75, 0x6a, 0x75, 0x4c, 0x70, 0x77, 0x51, 0x4d, 0x63, 0x6e, 0x48, 0x4c, 0x2f, 0x45, 0x56, 0x6c, 0x50, 0x36, 0x0a, 0x59, 0x32, 0x58, 0x51, 0x38, 0x78, 0x77, 0x4f, 0x46, 0x76, 0x56, 0x72, 0x68, 0x6c, 0x68, 0x4e, 0x47, 0x4e, 0x54, 0x6b, 0x44, 0x59, 0x36, 0x6c, 0x6e, 0x56, 0x75, 0x52, 0x33, 0x48, 0x59, 0x6b, 0x55, 0x44, 0x2f, 0x47, 0x4b, 0x76, 0x76, 0x5a, 0x74, 0x35, 0x79, 0x31, 0x31, 0x75, 0x62, 0x51, 0x32, 0x65, 0x67, 0x5a, 0x69, 0x78, 0x56, 0x78, 0x53, 0x4b, 0x32, 0x33, 0x36, 0x74, 0x68, 0x5a, 0x69, 0x4e, 0x53, 0x51, 0x76, 0x78, 0x61, 0x7a, 0x32, 0x65, 0x6d, 0x73, 0x0a, 0x57, 0x57, 0x46, 0x55, 0x79, 0x42, 0x79, 0x36, 0x79, 0x73, 0x48, 0x4b, 0x34, 0x62, 0x6b, 0x67, 0x54, 0x49, 0x38, 0x36, 0x6b, 0x34, 0x6d, 0x6c, 0x6f, 0x4d, 0x79, 0x2f, 0x30, 0x2f, 0x5a, 0x31, 0x70, 0x48, 0x57, 0x57, 0x62, 0x56, 0x59, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x2d, 0x54, 0x65, 0x6c, 0x65, 0x53, 0x65, 0x63, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x77, 0x7a, 0x43, 0x43, 0x41, 0x71, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x43, 0x42, 0x67, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x45, 0x55, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x0a, 0x49, 0x6c, 0x51, 0x74, 0x55, 0x33, 0x6c, 0x7a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x46, 0x62, 0x6e, 0x52, 0x6c, 0x63, 0x6e, 0x42, 0x79, 0x61, 0x58, 0x4e, 0x6c, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x49, 0x45, 0x64, 0x74, 0x59, 0x6b, 0x67, 0x78, 0x48, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x4d, 0x46, 0x6c, 0x51, 0x74, 0x55, 0x33, 0x6c, 0x7a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x55, 0x0a, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x57, 0x35, 0x30, 0x5a, 0x58, 0x49, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x48, 0x46, 0x51, 0x74, 0x56, 0x47, 0x56, 0x73, 0x5a, 0x56, 0x4e, 0x6c, 0x59, 0x79, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x73, 0x59, 0x58, 0x4e, 0x7a, 0x49, 0x44, 0x49, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x67, 0x78, 0x0a, 0x4d, 0x44, 0x41, 0x78, 0x4d, 0x54, 0x41, 0x30, 0x4d, 0x44, 0x45, 0x30, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x4d, 0x78, 0x4d, 0x44, 0x41, 0x78, 0x4d, 0x6a, 0x4d, 0x31, 0x4f, 0x54, 0x55, 0x35, 0x57, 0x6a, 0x43, 0x42, 0x67, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x45, 0x55, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x49, 0x6c, 0x51, 0x74, 0x55, 0x33, 0x6c, 0x7a, 0x0a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x46, 0x62, 0x6e, 0x52, 0x6c, 0x63, 0x6e, 0x42, 0x79, 0x61, 0x58, 0x4e, 0x6c, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x49, 0x45, 0x64, 0x74, 0x59, 0x6b, 0x67, 0x78, 0x48, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x4d, 0x46, 0x6c, 0x51, 0x74, 0x55, 0x33, 0x6c, 0x7a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x44, 0x0a, 0x5a, 0x57, 0x35, 0x30, 0x5a, 0x58, 0x49, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x48, 0x46, 0x51, 0x74, 0x56, 0x47, 0x56, 0x73, 0x5a, 0x56, 0x4e, 0x6c, 0x59, 0x79, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x73, 0x59, 0x58, 0x4e, 0x7a, 0x49, 0x44, 0x49, 0x77, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x0a, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43, 0x71, 0x58, 0x39, 0x6f, 0x62, 0x58, 0x2b, 0x68, 0x7a, 0x6b, 0x65, 0x58, 0x61, 0x58, 0x50, 0x53, 0x69, 0x35, 0x6b, 0x66, 0x6c, 0x38, 0x32, 0x68, 0x56, 0x59, 0x41, 0x55, 0x64, 0x41, 0x71, 0x53, 0x7a, 0x6d, 0x31, 0x6e, 0x7a, 0x48, 0x6f, 0x71, 0x76, 0x4e, 0x4b, 0x33, 0x38, 0x44, 0x63, 0x4c, 0x5a, 0x0a, 0x53, 0x42, 0x6e, 0x75, 0x61, 0x59, 0x2f, 0x4a, 0x49, 0x50, 0x77, 0x68, 0x71, 0x67, 0x63, 0x5a, 0x37, 0x62, 0x42, 0x63, 0x72, 0x47, 0x58, 0x48, 0x58, 0x2b, 0x30, 0x43, 0x66, 0x48, 0x74, 0x38, 0x4c, 0x52, 0x76, 0x57, 0x75, 0x72, 0x6d, 0x41, 0x77, 0x68, 0x69, 0x43, 0x46, 0x6f, 0x54, 0x36, 0x5a, 0x72, 0x41, 0x49, 0x78, 0x6c, 0x51, 0x6a, 0x67, 0x65, 0x54, 0x4e, 0x75, 0x55, 0x6b, 0x2f, 0x39, 0x6b, 0x39, 0x75, 0x4e, 0x30, 0x67, 0x6f, 0x4f, 0x41, 0x2f, 0x46, 0x0a, 0x76, 0x75, 0x64, 0x6f, 0x63, 0x50, 0x30, 0x35, 0x6c, 0x30, 0x33, 0x53, 0x78, 0x35, 0x69, 0x52, 0x55, 0x4b, 0x72, 0x45, 0x52, 0x4c, 0x4d, 0x6a, 0x66, 0x54, 0x6c, 0x48, 0x36, 0x56, 0x4a, 0x69, 0x31, 0x68, 0x4b, 0x54, 0x58, 0x72, 0x63, 0x78, 0x6c, 0x6b, 0x49, 0x46, 0x2b, 0x33, 0x61, 0x6e, 0x48, 0x71, 0x50, 0x31, 0x77, 0x76, 0x7a, 0x70, 0x65, 0x73, 0x56, 0x73, 0x71, 0x58, 0x46, 0x50, 0x36, 0x73, 0x74, 0x34, 0x76, 0x47, 0x43, 0x76, 0x78, 0x39, 0x37, 0x30, 0x0a, 0x32, 0x63, 0x75, 0x2b, 0x66, 0x6a, 0x4f, 0x6c, 0x62, 0x70, 0x53, 0x44, 0x38, 0x44, 0x54, 0x36, 0x49, 0x61, 0x76, 0x71, 0x6a, 0x6e, 0x4b, 0x67, 0x50, 0x36, 0x54, 0x65, 0x4d, 0x46, 0x76, 0x76, 0x68, 0x6b, 0x31, 0x71, 0x6c, 0x56, 0x74, 0x44, 0x52, 0x4b, 0x67, 0x51, 0x46, 0x52, 0x7a, 0x6c, 0x41, 0x56, 0x66, 0x46, 0x6d, 0x50, 0x48, 0x6d, 0x42, 0x69, 0x69, 0x52, 0x71, 0x69, 0x44, 0x46, 0x74, 0x31, 0x4d, 0x6d, 0x55, 0x55, 0x4f, 0x79, 0x43, 0x78, 0x47, 0x56, 0x0a, 0x57, 0x4f, 0x48, 0x41, 0x44, 0x33, 0x62, 0x5a, 0x77, 0x49, 0x31, 0x38, 0x67, 0x66, 0x4e, 0x79, 0x63, 0x4a, 0x35, 0x76, 0x2f, 0x68, 0x71, 0x4f, 0x32, 0x56, 0x38, 0x31, 0x78, 0x72, 0x4a, 0x76, 0x4e, 0x48, 0x79, 0x2b, 0x53, 0x45, 0x2f, 0x69, 0x57, 0x6a, 0x6e, 0x58, 0x32, 0x4a, 0x31, 0x34, 0x6e, 0x70, 0x2b, 0x47, 0x50, 0x67, 0x4e, 0x65, 0x47, 0x59, 0x74, 0x45, 0x6f, 0x74, 0x58, 0x48, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x0a, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x2f, 0x57, 0x53, 0x41, 0x32, 0x41, 0x48, 0x6d, 0x67, 0x6f, 0x43, 0x4a, 0x72, 0x6a, 0x4e, 0x58, 0x79, 0x0a, 0x59, 0x64, 0x4b, 0x34, 0x4c, 0x4d, 0x75, 0x43, 0x53, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x45, 0x41, 0x4d, 0x51, 0x4f, 0x69, 0x59, 0x51, 0x73, 0x66, 0x64, 0x4f, 0x68, 0x79, 0x4e, 0x73, 0x5a, 0x74, 0x2b, 0x55, 0x32, 0x65, 0x2b, 0x69, 0x4b, 0x6f, 0x34, 0x59, 0x46, 0x57, 0x7a, 0x38, 0x32, 0x37, 0x6e, 0x2b, 0x71, 0x72, 0x6b, 0x52, 0x6b, 0x34, 0x0a, 0x72, 0x36, 0x70, 0x38, 0x46, 0x55, 0x33, 0x7a, 0x74, 0x71, 0x4f, 0x4e, 0x70, 0x66, 0x53, 0x4f, 0x39, 0x6b, 0x53, 0x70, 0x70, 0x2b, 0x67, 0x68, 0x6c, 0x61, 0x30, 0x2b, 0x41, 0x47, 0x49, 0x57, 0x69, 0x50, 0x41, 0x43, 0x75, 0x76, 0x78, 0x68, 0x49, 0x2b, 0x59, 0x7a, 0x6d, 0x7a, 0x42, 0x36, 0x61, 0x7a, 0x5a, 0x69, 0x65, 0x36, 0x30, 0x45, 0x49, 0x34, 0x52, 0x59, 0x5a, 0x65, 0x4c, 0x62, 0x4b, 0x34, 0x72, 0x6e, 0x4a, 0x56, 0x4d, 0x33, 0x59, 0x6c, 0x4e, 0x66, 0x0a, 0x76, 0x4e, 0x6f, 0x42, 0x59, 0x69, 0x6d, 0x69, 0x70, 0x69, 0x64, 0x78, 0x35, 0x6a, 0x6f, 0x69, 0x66, 0x73, 0x46, 0x76, 0x48, 0x5a, 0x56, 0x77, 0x49, 0x45, 0x6f, 0x48, 0x4e, 0x4e, 0x2f, 0x71, 0x2f, 0x78, 0x57, 0x41, 0x35, 0x62, 0x72, 0x58, 0x65, 0x74, 0x68, 0x62, 0x64, 0x58, 0x77, 0x46, 0x65, 0x69, 0x6c, 0x48, 0x66, 0x6b, 0x43, 0x6f, 0x4d, 0x52, 0x4e, 0x33, 0x7a, 0x55, 0x41, 0x37, 0x74, 0x46, 0x46, 0x48, 0x65, 0x69, 0x34, 0x52, 0x34, 0x30, 0x63, 0x52, 0x0a, 0x33, 0x70, 0x31, 0x6d, 0x30, 0x49, 0x76, 0x56, 0x56, 0x47, 0x62, 0x36, 0x67, 0x31, 0x58, 0x71, 0x66, 0x4d, 0x49, 0x70, 0x69, 0x52, 0x76, 0x70, 0x62, 0x37, 0x50, 0x4f, 0x34, 0x67, 0x57, 0x45, 0x79, 0x53, 0x38, 0x2b, 0x65, 0x49, 0x56, 0x69, 0x62, 0x73, 0x6c, 0x66, 0x77, 0x58, 0x68, 0x6a, 0x64, 0x46, 0x6a, 0x41, 0x53, 0x42, 0x67, 0x4d, 0x6d, 0x54, 0x6e, 0x72, 0x70, 0x4d, 0x77, 0x61, 0x74, 0x58, 0x6c, 0x61, 0x6a, 0x52, 0x57, 0x63, 0x32, 0x42, 0x51, 0x4e, 0x0a, 0x39, 0x6e, 0x6f, 0x48, 0x56, 0x38, 0x63, 0x69, 0x67, 0x77, 0x55, 0x74, 0x50, 0x4a, 0x73, 0x6c, 0x4a, 0x6a, 0x30, 0x59, 0x73, 0x36, 0x6c, 0x44, 0x66, 0x4d, 0x6a, 0x49, 0x71, 0x32, 0x53, 0x50, 0x44, 0x71, 0x4f, 0x2f, 0x6e, 0x42, 0x75, 0x64, 0x4d, 0x4e, 0x76, 0x61, 0x30, 0x42, 0x6b, 0x75, 0x71, 0x6a, 0x7a, 0x78, 0x2b, 0x7a, 0x4f, 0x41, 0x64, 0x75, 0x54, 0x4e, 0x72, 0x52, 0x6c, 0x50, 0x42, 0x53, 0x65, 0x4f, 0x45, 0x36, 0x46, 0x75, 0x77, 0x67, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x74, 0x6f, 0x73, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x32, 0x30, 0x31, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x64, 0x7a, 0x43, 0x43, 0x41, 0x6c, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x58, 0x44, 0x50, 0x4c, 0x59, 0x69, 0x78, 0x66, 0x73, 0x7a, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x50, 0x44, 0x45, 0x65, 0x4d, 0x42, 0x77, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x56, 0x51, 0x58, 0x52, 0x76, 0x63, 0x79, 0x42, 0x55, 0x0a, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x47, 0x56, 0x6b, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x41, 0x79, 0x4d, 0x44, 0x45, 0x78, 0x4d, 0x51, 0x30, 0x77, 0x43, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x52, 0x42, 0x64, 0x47, 0x39, 0x7a, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x45, 0x52, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x54, 0x41, 0x33, 0x4d, 0x44, 0x63, 0x78, 0x4e, 0x44, 0x55, 0x34, 0x0a, 0x4d, 0x7a, 0x42, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4d, 0x44, 0x45, 0x79, 0x4d, 0x7a, 0x45, 0x79, 0x4d, 0x7a, 0x55, 0x35, 0x4e, 0x54, 0x6c, 0x61, 0x4d, 0x44, 0x77, 0x78, 0x48, 0x6a, 0x41, 0x63, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x46, 0x55, 0x46, 0x30, 0x62, 0x33, 0x4d, 0x67, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x52, 0x6c, 0x5a, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x4d, 0x6a, 0x41, 0x78, 0x4d, 0x54, 0x45, 0x4e, 0x4d, 0x41, 0x73, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x45, 0x51, 0x58, 0x52, 0x76, 0x63, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x45, 0x55, 0x77, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43, 0x56, 0x0a, 0x68, 0x54, 0x75, 0x58, 0x62, 0x79, 0x6f, 0x37, 0x4c, 0x6a, 0x76, 0x50, 0x70, 0x76, 0x4d, 0x70, 0x4e, 0x62, 0x37, 0x50, 0x47, 0x4b, 0x77, 0x2b, 0x71, 0x74, 0x6e, 0x34, 0x54, 0x61, 0x41, 0x2b, 0x47, 0x6b, 0x65, 0x35, 0x76, 0x4a, 0x72, 0x66, 0x38, 0x76, 0x37, 0x4d, 0x50, 0x6b, 0x66, 0x6f, 0x65, 0x70, 0x62, 0x43, 0x4a, 0x49, 0x34, 0x31, 0x39, 0x4b, 0x6b, 0x4d, 0x2f, 0x49, 0x4c, 0x39, 0x62, 0x63, 0x46, 0x79, 0x59, 0x69, 0x65, 0x39, 0x36, 0x6d, 0x76, 0x72, 0x0a, 0x35, 0x34, 0x72, 0x4d, 0x56, 0x44, 0x36, 0x51, 0x55, 0x4d, 0x2b, 0x41, 0x31, 0x4a, 0x58, 0x37, 0x36, 0x4c, 0x57, 0x43, 0x31, 0x42, 0x54, 0x46, 0x74, 0x71, 0x6c, 0x56, 0x4a, 0x56, 0x66, 0x62, 0x73, 0x56, 0x44, 0x32, 0x73, 0x47, 0x42, 0x6b, 0x57, 0x58, 0x70, 0x70, 0x7a, 0x77, 0x4f, 0x33, 0x62, 0x77, 0x32, 0x2b, 0x79, 0x6a, 0x35, 0x76, 0x64, 0x48, 0x4c, 0x71, 0x71, 0x6a, 0x41, 0x71, 0x63, 0x32, 0x4b, 0x2b, 0x53, 0x5a, 0x46, 0x68, 0x79, 0x42, 0x48, 0x2b, 0x0a, 0x44, 0x67, 0x4d, 0x71, 0x39, 0x32, 0x6f, 0x67, 0x33, 0x41, 0x49, 0x56, 0x44, 0x56, 0x34, 0x56, 0x61, 0x76, 0x7a, 0x6a, 0x67, 0x73, 0x47, 0x31, 0x78, 0x5a, 0x31, 0x6b, 0x43, 0x57, 0x79, 0x6a, 0x57, 0x5a, 0x67, 0x48, 0x4a, 0x38, 0x63, 0x62, 0x6c, 0x69, 0x74, 0x68, 0x64, 0x48, 0x46, 0x73, 0x51, 0x2f, 0x48, 0x33, 0x4e, 0x59, 0x6b, 0x51, 0x34, 0x4a, 0x37, 0x73, 0x56, 0x61, 0x45, 0x33, 0x49, 0x71, 0x4b, 0x48, 0x42, 0x41, 0x55, 0x73, 0x52, 0x33, 0x32, 0x30, 0x0a, 0x48, 0x4c, 0x6c, 0x69, 0x4b, 0x57, 0x59, 0x6f, 0x79, 0x72, 0x66, 0x68, 0x6b, 0x2f, 0x57, 0x6b, 0x6c, 0x41, 0x4f, 0x5a, 0x75, 0x58, 0x43, 0x46, 0x74, 0x65, 0x5a, 0x49, 0x36, 0x6f, 0x31, 0x51, 0x2f, 0x4e, 0x6e, 0x65, 0x7a, 0x47, 0x38, 0x48, 0x44, 0x74, 0x30, 0x4c, 0x63, 0x70, 0x32, 0x41, 0x4d, 0x42, 0x59, 0x48, 0x6c, 0x54, 0x38, 0x6f, 0x44, 0x76, 0x33, 0x46, 0x64, 0x55, 0x39, 0x54, 0x31, 0x6e, 0x53, 0x61, 0x74, 0x43, 0x51, 0x75, 0x6a, 0x67, 0x4b, 0x52, 0x0a, 0x7a, 0x33, 0x62, 0x46, 0x6d, 0x78, 0x35, 0x56, 0x64, 0x4a, 0x78, 0x34, 0x49, 0x62, 0x48, 0x77, 0x4c, 0x66, 0x45, 0x4c, 0x6e, 0x38, 0x4c, 0x56, 0x6c, 0x68, 0x67, 0x66, 0x38, 0x46, 0x51, 0x69, 0x65, 0x6f, 0x77, 0x48, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x66, 0x54, 0x42, 0x37, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x6e, 0x70, 0x51, 0x61, 0x78, 0x4c, 0x4b, 0x59, 0x4a, 0x59, 0x4f, 0x37, 0x52, 0x0a, 0x6c, 0x2b, 0x6c, 0x77, 0x72, 0x72, 0x77, 0x37, 0x47, 0x57, 0x7a, 0x62, 0x49, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x77, 0x51, 0x59, 0x4d, 0x42, 0x61, 0x41, 0x46, 0x4b, 0x65, 0x6c, 0x42, 0x72, 0x45, 0x73, 0x70, 0x67, 0x6c, 0x67, 0x37, 0x74, 0x47, 0x58, 0x36, 0x58, 0x43, 0x75, 0x76, 0x44, 0x73, 0x5a, 0x0a, 0x62, 0x4e, 0x73, 0x68, 0x4d, 0x42, 0x67, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x41, 0x51, 0x52, 0x4d, 0x41, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4c, 0x4b, 0x77, 0x59, 0x42, 0x42, 0x41, 0x47, 0x77, 0x4c, 0x51, 0x4d, 0x45, 0x41, 0x51, 0x45, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x0a, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x41, 0x6d, 0x64, 0x7a, 0x54, 0x62, 0x6c, 0x45, 0x69, 0x47, 0x4b, 0x6b, 0x47, 0x64, 0x4c, 0x44, 0x34, 0x47, 0x6b, 0x47, 0x44, 0x45, 0x6a, 0x4b, 0x77, 0x4c, 0x56, 0x4c, 0x67, 0x66, 0x75, 0x58, 0x76, 0x54, 0x42, 0x7a, 0x6e, 0x6b, 0x2b, 0x6a, 0x35, 0x37, 0x73, 0x6a, 0x31, 0x4f, 0x37, 0x5a, 0x38, 0x6a, 0x76, 0x5a, 0x66, 0x7a, 0x61, 0x31, 0x7a, 0x76, 0x37, 0x76, 0x31, 0x41, 0x70, 0x74, 0x2b, 0x68, 0x0a, 0x6b, 0x36, 0x45, 0x4b, 0x68, 0x71, 0x7a, 0x76, 0x49, 0x4e, 0x42, 0x35, 0x41, 0x62, 0x31, 0x34, 0x39, 0x78, 0x6e, 0x59, 0x4a, 0x44, 0x45, 0x30, 0x42, 0x41, 0x47, 0x6d, 0x75, 0x68, 0x57, 0x61, 0x77, 0x79, 0x66, 0x63, 0x32, 0x45, 0x38, 0x50, 0x7a, 0x42, 0x68, 0x6a, 0x2f, 0x35, 0x6b, 0x50, 0x44, 0x70, 0x46, 0x72, 0x64, 0x52, 0x62, 0x68, 0x49, 0x66, 0x7a, 0x59, 0x4a, 0x73, 0x64, 0x48, 0x74, 0x36, 0x62, 0x50, 0x57, 0x48, 0x4a, 0x78, 0x66, 0x72, 0x72, 0x68, 0x0a, 0x54, 0x5a, 0x56, 0x48, 0x4f, 0x38, 0x6d, 0x76, 0x62, 0x61, 0x47, 0x30, 0x77, 0x65, 0x79, 0x4a, 0x39, 0x72, 0x51, 0x50, 0x4f, 0x4c, 0x58, 0x69, 0x5a, 0x4e, 0x77, 0x6c, 0x7a, 0x36, 0x62, 0x62, 0x36, 0x35, 0x70, 0x63, 0x6d, 0x61, 0x48, 0x46, 0x43, 0x4e, 0x37, 0x39, 0x35, 0x74, 0x72, 0x56, 0x31, 0x6c, 0x70, 0x46, 0x44, 0x4d, 0x53, 0x33, 0x77, 0x72, 0x55, 0x55, 0x37, 0x37, 0x51, 0x52, 0x2f, 0x77, 0x34, 0x56, 0x74, 0x66, 0x58, 0x31, 0x32, 0x38, 0x61, 0x39, 0x0a, 0x36, 0x31, 0x71, 0x6e, 0x38, 0x46, 0x59, 0x69, 0x71, 0x54, 0x78, 0x6c, 0x56, 0x4d, 0x59, 0x56, 0x71, 0x4c, 0x32, 0x47, 0x6e, 0x73, 0x32, 0x44, 0x6c, 0x6d, 0x68, 0x36, 0x63, 0x59, 0x47, 0x4a, 0x34, 0x51, 0x76, 0x68, 0x36, 0x68, 0x45, 0x62, 0x61, 0x41, 0x6a, 0x4d, 0x61, 0x5a, 0x37, 0x73, 0x6e, 0x6b, 0x47, 0x65, 0x52, 0x44, 0x49, 0x6d, 0x65, 0x75, 0x4b, 0x48, 0x43, 0x6e, 0x45, 0x39, 0x36, 0x2b, 0x52, 0x61, 0x70, 0x4e, 0x4c, 0x62, 0x78, 0x63, 0x33, 0x47, 0x0a, 0x33, 0x6d, 0x42, 0x2f, 0x75, 0x66, 0x4e, 0x50, 0x52, 0x4a, 0x4c, 0x76, 0x4b, 0x72, 0x63, 0x59, 0x50, 0x71, 0x63, 0x5a, 0x32, 0x51, 0x74, 0x39, 0x73, 0x54, 0x64, 0x42, 0x51, 0x72, 0x43, 0x36, 0x59, 0x42, 0x33, 0x79, 0x2f, 0x67, 0x6b, 0x52, 0x73, 0x50, 0x43, 0x48, 0x65, 0x36, 0x65, 0x64, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x51, 0x75, 0x6f, 0x56, 0x61, 0x64, 0x69, 0x73, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, 0x20, 0x47, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x59, 0x44, 0x43, 0x43, 0x41, 0x30, 0x69, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x65, 0x46, 0x68, 0x66, 0x4c, 0x71, 0x30, 0x73, 0x47, 0x55, 0x76, 0x6a, 0x4e, 0x77, 0x63, 0x31, 0x4e, 0x42, 0x4d, 0x6f, 0x74, 0x5a, 0x62, 0x55, 0x5a, 0x5a, 0x4d, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x53, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x6b, 0x30, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x45, 0x46, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x48, 0x6a, 0x41, 0x63, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x46, 0x56, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x46, 0x4a, 0x76, 0x0a, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x53, 0x42, 0x48, 0x4d, 0x7a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x6a, 0x41, 0x78, 0x4d, 0x54, 0x49, 0x78, 0x4e, 0x7a, 0x49, 0x33, 0x4e, 0x44, 0x52, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x6a, 0x41, 0x78, 0x4d, 0x54, 0x49, 0x78, 0x4e, 0x7a, 0x49, 0x33, 0x4e, 0x44, 0x52, 0x61, 0x4d, 0x45, 0x67, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4a, 0x4e, 0x0a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x42, 0x52, 0x64, 0x57, 0x39, 0x57, 0x59, 0x57, 0x52, 0x70, 0x63, 0x79, 0x42, 0x4d, 0x61, 0x57, 0x31, 0x70, 0x64, 0x47, 0x56, 0x6b, 0x4d, 0x52, 0x34, 0x77, 0x48, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x56, 0x52, 0x64, 0x57, 0x39, 0x57, 0x59, 0x57, 0x52, 0x70, 0x63, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x45, 0x67, 0x0a, 0x52, 0x7a, 0x4d, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x67, 0x76, 0x6c, 0x41, 0x51, 0x6a, 0x75, 0x6e, 0x79, 0x62, 0x45, 0x43, 0x30, 0x42, 0x4a, 0x79, 0x46, 0x75, 0x54, 0x48, 0x4b, 0x33, 0x43, 0x33, 0x6b, 0x45, 0x61, 0x6b, 0x45, 0x0a, 0x50, 0x42, 0x74, 0x56, 0x77, 0x65, 0x64, 0x59, 0x4d, 0x42, 0x30, 0x6b, 0x74, 0x4d, 0x50, 0x76, 0x68, 0x64, 0x36, 0x4d, 0x4c, 0x4f, 0x48, 0x42, 0x50, 0x64, 0x2b, 0x43, 0x35, 0x6b, 0x2b, 0x74, 0x52, 0x34, 0x64, 0x73, 0x37, 0x46, 0x74, 0x4a, 0x77, 0x55, 0x72, 0x56, 0x75, 0x34, 0x2f, 0x73, 0x68, 0x36, 0x78, 0x2f, 0x67, 0x70, 0x71, 0x47, 0x37, 0x44, 0x30, 0x44, 0x6d, 0x56, 0x49, 0x42, 0x30, 0x6a, 0x57, 0x65, 0x72, 0x4e, 0x72, 0x77, 0x55, 0x38, 0x6c, 0x6d, 0x0a, 0x50, 0x4e, 0x53, 0x73, 0x41, 0x67, 0x48, 0x61, 0x4a, 0x4e, 0x4d, 0x37, 0x71, 0x41, 0x4a, 0x47, 0x72, 0x36, 0x51, 0x63, 0x34, 0x2f, 0x68, 0x7a, 0x57, 0x48, 0x61, 0x33, 0x39, 0x67, 0x36, 0x51, 0x44, 0x62, 0x58, 0x77, 0x7a, 0x38, 0x7a, 0x36, 0x2b, 0x63, 0x5a, 0x4d, 0x35, 0x63, 0x4f, 0x47, 0x4d, 0x41, 0x71, 0x4e, 0x46, 0x33, 0x34, 0x31, 0x36, 0x38, 0x58, 0x66, 0x75, 0x77, 0x36, 0x63, 0x77, 0x49, 0x32, 0x48, 0x34, 0x34, 0x67, 0x34, 0x68, 0x57, 0x66, 0x36, 0x0a, 0x50, 0x73, 0x65, 0x72, 0x34, 0x42, 0x4f, 0x63, 0x42, 0x52, 0x69, 0x59, 0x7a, 0x35, 0x50, 0x31, 0x73, 0x5a, 0x4b, 0x30, 0x2f, 0x43, 0x50, 0x54, 0x7a, 0x39, 0x58, 0x45, 0x4a, 0x30, 0x6e, 0x67, 0x6e, 0x6a, 0x79, 0x62, 0x43, 0x4b, 0x4f, 0x4c, 0x58, 0x53, 0x6f, 0x68, 0x34, 0x50, 0x77, 0x35, 0x71, 0x6c, 0x50, 0x61, 0x66, 0x58, 0x37, 0x50, 0x47, 0x67, 0x6c, 0x54, 0x76, 0x46, 0x30, 0x46, 0x42, 0x4d, 0x2b, 0x68, 0x53, 0x6f, 0x2b, 0x4c, 0x64, 0x6f, 0x49, 0x4e, 0x0a, 0x6f, 0x66, 0x6a, 0x53, 0x78, 0x78, 0x52, 0x33, 0x57, 0x35, 0x41, 0x32, 0x42, 0x34, 0x47, 0x62, 0x50, 0x67, 0x62, 0x36, 0x55, 0x6c, 0x35, 0x6a, 0x78, 0x61, 0x59, 0x41, 0x2f, 0x71, 0x58, 0x70, 0x55, 0x68, 0x74, 0x53, 0x74, 0x5a, 0x49, 0x35, 0x63, 0x67, 0x4d, 0x4a, 0x59, 0x72, 0x32, 0x77, 0x59, 0x42, 0x5a, 0x75, 0x70, 0x74, 0x30, 0x6c, 0x77, 0x67, 0x4e, 0x6d, 0x33, 0x66, 0x4d, 0x45, 0x30, 0x55, 0x44, 0x69, 0x54, 0x6f, 0x75, 0x47, 0x39, 0x47, 0x2f, 0x6c, 0x0a, 0x67, 0x36, 0x41, 0x6e, 0x68, 0x46, 0x34, 0x45, 0x77, 0x66, 0x57, 0x51, 0x76, 0x54, 0x41, 0x39, 0x78, 0x4f, 0x2b, 0x6f, 0x61, 0x62, 0x77, 0x34, 0x6d, 0x36, 0x53, 0x6b, 0x6c, 0x74, 0x46, 0x69, 0x32, 0x6d, 0x6e, 0x41, 0x41, 0x5a, 0x61, 0x75, 0x79, 0x38, 0x52, 0x52, 0x4e, 0x4f, 0x6f, 0x4d, 0x71, 0x76, 0x38, 0x68, 0x6a, 0x6c, 0x6d, 0x50, 0x53, 0x6c, 0x7a, 0x6b, 0x59, 0x5a, 0x71, 0x6e, 0x30, 0x75, 0x6b, 0x71, 0x65, 0x49, 0x31, 0x52, 0x50, 0x54, 0x6f, 0x56, 0x0a, 0x37, 0x71, 0x4a, 0x5a, 0x6a, 0x71, 0x6c, 0x63, 0x33, 0x73, 0x58, 0x35, 0x6b, 0x43, 0x4c, 0x6c, 0x69, 0x45, 0x56, 0x78, 0x33, 0x5a, 0x47, 0x5a, 0x62, 0x48, 0x71, 0x66, 0x50, 0x54, 0x32, 0x59, 0x66, 0x46, 0x37, 0x32, 0x76, 0x68, 0x5a, 0x6f, 0x6f, 0x46, 0x36, 0x75, 0x43, 0x79, 0x50, 0x38, 0x57, 0x67, 0x2b, 0x71, 0x49, 0x6e, 0x59, 0x74, 0x79, 0x61, 0x45, 0x51, 0x48, 0x65, 0x54, 0x54, 0x52, 0x43, 0x4f, 0x51, 0x69, 0x4a, 0x2f, 0x47, 0x4b, 0x75, 0x62, 0x58, 0x0a, 0x39, 0x5a, 0x71, 0x7a, 0x57, 0x42, 0x34, 0x76, 0x4d, 0x49, 0x6b, 0x49, 0x47, 0x31, 0x53, 0x69, 0x74, 0x5a, 0x67, 0x6a, 0x37, 0x41, 0x68, 0x33, 0x48, 0x4a, 0x56, 0x64, 0x59, 0x64, 0x48, 0x4c, 0x69, 0x5a, 0x78, 0x66, 0x6f, 0x6b, 0x71, 0x52, 0x6d, 0x75, 0x38, 0x68, 0x71, 0x6b, 0x6b, 0x57, 0x43, 0x4b, 0x69, 0x39, 0x59, 0x53, 0x67, 0x78, 0x79, 0x58, 0x53, 0x74, 0x68, 0x66, 0x62, 0x5a, 0x78, 0x62, 0x47, 0x4c, 0x30, 0x65, 0x55, 0x51, 0x4d, 0x6b, 0x31, 0x66, 0x0a, 0x69, 0x79, 0x41, 0x36, 0x50, 0x45, 0x6b, 0x66, 0x4d, 0x34, 0x56, 0x5a, 0x44, 0x64, 0x76, 0x4c, 0x43, 0x58, 0x56, 0x44, 0x61, 0x58, 0x50, 0x37, 0x61, 0x33, 0x46, 0x39, 0x38, 0x4e, 0x2f, 0x45, 0x54, 0x48, 0x33, 0x47, 0x6f, 0x79, 0x37, 0x49, 0x6c, 0x58, 0x6e, 0x4c, 0x63, 0x36, 0x4b, 0x4f, 0x54, 0x6b, 0x30, 0x6b, 0x2b, 0x31, 0x37, 0x6b, 0x42, 0x4c, 0x35, 0x79, 0x47, 0x36, 0x59, 0x6e, 0x4c, 0x55, 0x6c, 0x61, 0x6d, 0x58, 0x72, 0x58, 0x58, 0x41, 0x6b, 0x67, 0x0a, 0x74, 0x33, 0x2b, 0x55, 0x75, 0x55, 0x2f, 0x78, 0x44, 0x52, 0x78, 0x65, 0x69, 0x45, 0x49, 0x62, 0x45, 0x62, 0x66, 0x6e, 0x6b, 0x64, 0x75, 0x65, 0x62, 0x50, 0x52, 0x71, 0x33, 0x34, 0x77, 0x47, 0x6d, 0x41, 0x4f, 0x74, 0x7a, 0x43, 0x6a, 0x76, 0x70, 0x55, 0x66, 0x7a, 0x55, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x0a, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x6f, 0x35, 0x66, 0x57, 0x38, 0x31, 0x36, 0x69, 0x45, 0x4f, 0x47, 0x72, 0x52, 0x5a, 0x38, 0x38, 0x46, 0x32, 0x51, 0x38, 0x37, 0x67, 0x46, 0x77, 0x6e, 0x4d, 0x77, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x0a, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x42, 0x6a, 0x36, 0x57, 0x33, 0x58, 0x38, 0x50, 0x6e, 0x72, 0x48, 0x58, 0x33, 0x66, 0x48, 0x79, 0x74, 0x2f, 0x50, 0x58, 0x38, 0x4d, 0x53, 0x78, 0x45, 0x42, 0x64, 0x31, 0x44, 0x4b, 0x71, 0x75, 0x47, 0x72, 0x58, 0x31, 0x52, 0x55, 0x56, 0x52, 0x70, 0x67, 0x6a, 0x70, 0x65, 0x61, 0x51, 0x57, 0x78, 0x69, 0x5a, 0x54, 0x4f, 0x4f, 0x74, 0x51, 0x71, 0x4f, 0x43, 0x0a, 0x4d, 0x54, 0x61, 0x49, 0x7a, 0x65, 0x6e, 0x37, 0x78, 0x41, 0x53, 0x57, 0x53, 0x49, 0x73, 0x42, 0x78, 0x34, 0x30, 0x42, 0x7a, 0x31, 0x73, 0x7a, 0x42, 0x70, 0x5a, 0x47, 0x5a, 0x6e, 0x51, 0x64, 0x54, 0x2b, 0x33, 0x42, 0x74, 0x72, 0x6d, 0x30, 0x44, 0x57, 0x48, 0x4d, 0x59, 0x33, 0x37, 0x58, 0x4c, 0x6e, 0x65, 0x4d, 0x6c, 0x68, 0x77, 0x71, 0x49, 0x32, 0x68, 0x72, 0x68, 0x56, 0x64, 0x32, 0x63, 0x44, 0x4d, 0x54, 0x2f, 0x75, 0x46, 0x50, 0x70, 0x69, 0x4e, 0x33, 0x0a, 0x47, 0x50, 0x6f, 0x61, 0x6a, 0x4f, 0x69, 0x39, 0x5a, 0x63, 0x6e, 0x50, 0x50, 0x2f, 0x54, 0x4a, 0x46, 0x39, 0x7a, 0x72, 0x78, 0x37, 0x7a, 0x41, 0x42, 0x43, 0x34, 0x74, 0x52, 0x69, 0x39, 0x70, 0x5a, 0x73, 0x4d, 0x62, 0x6a, 0x2f, 0x37, 0x73, 0x50, 0x74, 0x50, 0x4b, 0x6c, 0x4c, 0x39, 0x32, 0x43, 0x69, 0x55, 0x4e, 0x71, 0x58, 0x73, 0x43, 0x48, 0x4b, 0x6e, 0x51, 0x4f, 0x31, 0x38, 0x4c, 0x77, 0x49, 0x45, 0x36, 0x50, 0x57, 0x54, 0x68, 0x76, 0x36, 0x63, 0x74, 0x0a, 0x54, 0x72, 0x31, 0x4e, 0x78, 0x4e, 0x67, 0x70, 0x78, 0x69, 0x49, 0x59, 0x30, 0x4d, 0x57, 0x73, 0x63, 0x67, 0x4b, 0x43, 0x50, 0x36, 0x6f, 0x36, 0x6f, 0x6a, 0x6f, 0x69, 0x6c, 0x7a, 0x48, 0x64, 0x43, 0x47, 0x50, 0x44, 0x64, 0x52, 0x53, 0x35, 0x59, 0x43, 0x67, 0x74, 0x57, 0x32, 0x6a, 0x67, 0x46, 0x71, 0x6c, 0x6d, 0x67, 0x69, 0x4e, 0x52, 0x39, 0x65, 0x74, 0x54, 0x32, 0x44, 0x47, 0x62, 0x65, 0x2b, 0x6d, 0x33, 0x6e, 0x55, 0x76, 0x72, 0x69, 0x42, 0x62, 0x50, 0x0a, 0x2b, 0x56, 0x30, 0x34, 0x69, 0x6b, 0x6b, 0x77, 0x6a, 0x2b, 0x33, 0x78, 0x36, 0x78, 0x6e, 0x30, 0x64, 0x78, 0x6f, 0x78, 0x47, 0x45, 0x31, 0x6e, 0x56, 0x47, 0x77, 0x76, 0x62, 0x32, 0x58, 0x35, 0x32, 0x7a, 0x33, 0x73, 0x49, 0x65, 0x78, 0x65, 0x39, 0x50, 0x53, 0x4c, 0x79, 0x6d, 0x42, 0x6c, 0x56, 0x4e, 0x46, 0x78, 0x5a, 0x50, 0x54, 0x35, 0x70, 0x71, 0x4f, 0x42, 0x4d, 0x7a, 0x59, 0x7a, 0x63, 0x66, 0x43, 0x6b, 0x65, 0x46, 0x39, 0x4f, 0x72, 0x59, 0x4d, 0x68, 0x0a, 0x33, 0x6a, 0x52, 0x4a, 0x6a, 0x65, 0x68, 0x5a, 0x72, 0x4a, 0x33, 0x79, 0x64, 0x6c, 0x6f, 0x32, 0x38, 0x68, 0x50, 0x30, 0x72, 0x2b, 0x41, 0x4a, 0x78, 0x32, 0x45, 0x71, 0x62, 0x50, 0x66, 0x67, 0x6e, 0x61, 0x36, 0x37, 0x68, 0x6b, 0x6f, 0x6f, 0x62, 0x79, 0x37, 0x75, 0x74, 0x48, 0x6e, 0x4e, 0x6b, 0x44, 0x50, 0x44, 0x73, 0x33, 0x62, 0x36, 0x39, 0x66, 0x42, 0x73, 0x6e, 0x51, 0x47, 0x51, 0x2b, 0x70, 0x36, 0x51, 0x39, 0x70, 0x78, 0x79, 0x7a, 0x30, 0x66, 0x61, 0x0a, 0x77, 0x78, 0x2f, 0x6b, 0x4e, 0x53, 0x42, 0x54, 0x38, 0x6c, 0x54, 0x52, 0x33, 0x32, 0x47, 0x44, 0x70, 0x67, 0x4c, 0x69, 0x4a, 0x54, 0x6a, 0x65, 0x68, 0x54, 0x49, 0x74, 0x58, 0x6e, 0x4f, 0x51, 0x55, 0x6c, 0x31, 0x43, 0x78, 0x4d, 0x34, 0x39, 0x53, 0x2b, 0x48, 0x35, 0x47, 0x59, 0x51, 0x64, 0x31, 0x61, 0x4a, 0x51, 0x7a, 0x45, 0x48, 0x37, 0x51, 0x52, 0x54, 0x44, 0x76, 0x64, 0x62, 0x4a, 0x57, 0x71, 0x4e, 0x6a, 0x5a, 0x67, 0x4b, 0x41, 0x76, 0x51, 0x55, 0x36, 0x0a, 0x4f, 0x30, 0x65, 0x63, 0x37, 0x41, 0x41, 0x6d, 0x54, 0x50, 0x57, 0x49, 0x55, 0x62, 0x2b, 0x6f, 0x49, 0x33, 0x38, 0x59, 0x42, 0x37, 0x41, 0x4c, 0x37, 0x59, 0x73, 0x6d, 0x6f, 0x57, 0x54, 0x54, 0x59, 0x55, 0x72, 0x72, 0x58, 0x4a, 0x2f, 0x65, 0x73, 0x36, 0x39, 0x6e, 0x41, 0x37, 0x4d, 0x66, 0x33, 0x57, 0x31, 0x64, 0x61, 0x57, 0x68, 0x70, 0x71, 0x31, 0x34, 0x36, 0x37, 0x48, 0x78, 0x70, 0x76, 0x4d, 0x63, 0x37, 0x68, 0x55, 0x36, 0x65, 0x46, 0x62, 0x6d, 0x30, 0x0a, 0x46, 0x55, 0x2f, 0x44, 0x6c, 0x58, 0x70, 0x59, 0x31, 0x38, 0x6c, 0x73, 0x36, 0x57, 0x79, 0x35, 0x38, 0x79, 0x6c, 0x6a, 0x58, 0x72, 0x51, 0x73, 0x38, 0x43, 0x30, 0x39, 0x37, 0x56, 0x70, 0x6c, 0x34, 0x4b, 0x6c, 0x62, 0x51, 0x4d, 0x4a, 0x49, 0x6d, 0x59, 0x46, 0x74, 0x6e, 0x68, 0x38, 0x47, 0x4b, 0x6a, 0x77, 0x53, 0x74, 0x49, 0x73, 0x50, 0x6d, 0x36, 0x49, 0x6b, 0x38, 0x4b, 0x61, 0x4e, 0x31, 0x6e, 0x72, 0x67, 0x53, 0x37, 0x5a, 0x6b, 0x6c, 0x6d, 0x4f, 0x56, 0x0a, 0x68, 0x4d, 0x4a, 0x4b, 0x7a, 0x52, 0x77, 0x75, 0x4a, 0x49, 0x63, 0x7a, 0x59, 0x4f, 0x58, 0x44, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x51, 0x75, 0x6f, 0x56, 0x61, 0x64, 0x69, 0x73, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32, 0x20, 0x47, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x59, 0x44, 0x43, 0x43, 0x41, 0x30, 0x69, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x52, 0x46, 0x63, 0x30, 0x4a, 0x46, 0x75, 0x42, 0x69, 0x5a, 0x73, 0x31, 0x38, 0x73, 0x36, 0x34, 0x4b, 0x7a, 0x74, 0x62, 0x70, 0x79, 0x62, 0x77, 0x64, 0x53, 0x67, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x53, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x6b, 0x30, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x45, 0x46, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x48, 0x6a, 0x41, 0x63, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x46, 0x56, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x46, 0x4a, 0x76, 0x0a, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x69, 0x42, 0x48, 0x4d, 0x7a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x6a, 0x41, 0x78, 0x4d, 0x54, 0x49, 0x78, 0x4f, 0x44, 0x55, 0x35, 0x4d, 0x7a, 0x4a, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x6a, 0x41, 0x78, 0x4d, 0x54, 0x49, 0x78, 0x4f, 0x44, 0x55, 0x35, 0x4d, 0x7a, 0x4a, 0x61, 0x4d, 0x45, 0x67, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4a, 0x4e, 0x0a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x42, 0x52, 0x64, 0x57, 0x39, 0x57, 0x59, 0x57, 0x52, 0x70, 0x63, 0x79, 0x42, 0x4d, 0x61, 0x57, 0x31, 0x70, 0x64, 0x47, 0x56, 0x6b, 0x4d, 0x52, 0x34, 0x77, 0x48, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x56, 0x52, 0x64, 0x57, 0x39, 0x57, 0x59, 0x57, 0x52, 0x70, 0x63, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x49, 0x67, 0x0a, 0x52, 0x7a, 0x4d, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x68, 0x72, 0x69, 0x57, 0x79, 0x41, 0x52, 0x6a, 0x63, 0x56, 0x34, 0x67, 0x2f, 0x52, 0x75, 0x76, 0x35, 0x72, 0x2b, 0x4c, 0x72, 0x49, 0x33, 0x48, 0x69, 0x6d, 0x74, 0x46, 0x68, 0x0a, 0x5a, 0x69, 0x46, 0x66, 0x71, 0x71, 0x38, 0x6e, 0x55, 0x65, 0x56, 0x75, 0x47, 0x78, 0x62, 0x55, 0x4c, 0x58, 0x31, 0x51, 0x73, 0x46, 0x4e, 0x33, 0x76, 0x58, 0x67, 0x36, 0x59, 0x4f, 0x4a, 0x6b, 0x41, 0x70, 0x74, 0x38, 0x68, 0x70, 0x76, 0x57, 0x47, 0x6f, 0x36, 0x74, 0x2f, 0x78, 0x38, 0x56, 0x66, 0x39, 0x57, 0x56, 0x48, 0x68, 0x4c, 0x4c, 0x35, 0x68, 0x53, 0x45, 0x42, 0x4d, 0x48, 0x66, 0x4e, 0x72, 0x4d, 0x57, 0x6e, 0x34, 0x72, 0x6a, 0x79, 0x64, 0x75, 0x59, 0x0a, 0x4e, 0x4d, 0x37, 0x59, 0x4d, 0x78, 0x63, 0x6f, 0x52, 0x76, 0x79, 0x6e, 0x79, 0x66, 0x44, 0x53, 0x74, 0x4e, 0x56, 0x4e, 0x43, 0x58, 0x4a, 0x4a, 0x2b, 0x66, 0x4b, 0x48, 0x34, 0x36, 0x6e, 0x61, 0x66, 0x61, 0x46, 0x39, 0x61, 0x37, 0x49, 0x36, 0x4a, 0x61, 0x6c, 0x74, 0x55, 0x6b, 0x53, 0x73, 0x2b, 0x4c, 0x35, 0x75, 0x2b, 0x39, 0x79, 0x6d, 0x63, 0x35, 0x47, 0x51, 0x59, 0x61, 0x59, 0x44, 0x46, 0x43, 0x44, 0x79, 0x35, 0x34, 0x65, 0x6a, 0x69, 0x4b, 0x32, 0x74, 0x0a, 0x6f, 0x49, 0x7a, 0x2f, 0x70, 0x67, 0x73, 0x6c, 0x55, 0x69, 0x58, 0x6e, 0x46, 0x67, 0x48, 0x56, 0x79, 0x37, 0x67, 0x31, 0x67, 0x51, 0x79, 0x6a, 0x4f, 0x2f, 0x44, 0x68, 0x34, 0x66, 0x78, 0x61, 0x58, 0x63, 0x36, 0x41, 0x63, 0x57, 0x33, 0x34, 0x53, 0x61, 0x73, 0x2b, 0x4f, 0x37, 0x71, 0x34, 0x31, 0x34, 0x41, 0x42, 0x2b, 0x36, 0x58, 0x72, 0x57, 0x37, 0x50, 0x46, 0x58, 0x6d, 0x41, 0x71, 0x4d, 0x61, 0x43, 0x76, 0x4e, 0x2b, 0x67, 0x67, 0x4f, 0x70, 0x2b, 0x6f, 0x0a, 0x4d, 0x69, 0x77, 0x4d, 0x7a, 0x41, 0x6b, 0x64, 0x30, 0x35, 0x36, 0x4f, 0x58, 0x62, 0x78, 0x4d, 0x6d, 0x4f, 0x37, 0x46, 0x47, 0x6d, 0x68, 0x37, 0x37, 0x46, 0x4f, 0x6d, 0x36, 0x52, 0x51, 0x31, 0x6f, 0x39, 0x2f, 0x4e, 0x67, 0x4a, 0x38, 0x4d, 0x53, 0x50, 0x73, 0x63, 0x39, 0x50, 0x47, 0x2f, 0x53, 0x72, 0x6a, 0x36, 0x31, 0x59, 0x78, 0x78, 0x53, 0x73, 0x63, 0x66, 0x72, 0x66, 0x35, 0x42, 0x6d, 0x72, 0x4f, 0x44, 0x58, 0x66, 0x4b, 0x45, 0x56, 0x75, 0x2b, 0x6c, 0x0a, 0x56, 0x30, 0x50, 0x4f, 0x4b, 0x61, 0x32, 0x4d, 0x71, 0x31, 0x57, 0x2f, 0x78, 0x50, 0x74, 0x62, 0x41, 0x64, 0x30, 0x6a, 0x49, 0x61, 0x46, 0x59, 0x41, 0x49, 0x37, 0x44, 0x30, 0x47, 0x6f, 0x54, 0x37, 0x52, 0x50, 0x6a, 0x45, 0x69, 0x75, 0x41, 0x33, 0x47, 0x66, 0x6d, 0x6c, 0x62, 0x4c, 0x4e, 0x48, 0x69, 0x4a, 0x75, 0x4b, 0x76, 0x68, 0x42, 0x31, 0x50, 0x4c, 0x4b, 0x46, 0x41, 0x65, 0x4e, 0x69, 0x6c, 0x55, 0x53, 0x78, 0x6d, 0x6e, 0x31, 0x75, 0x49, 0x5a, 0x6f, 0x0a, 0x4c, 0x31, 0x4e, 0x65, 0x73, 0x4e, 0x4b, 0x71, 0x49, 0x63, 0x47, 0x59, 0x35, 0x6a, 0x44, 0x6a, 0x5a, 0x31, 0x58, 0x48, 0x6d, 0x32, 0x36, 0x73, 0x47, 0x61, 0x68, 0x56, 0x70, 0x6b, 0x55, 0x47, 0x30, 0x43, 0x4d, 0x36, 0x32, 0x2b, 0x74, 0x6c, 0x58, 0x53, 0x6f, 0x52, 0x45, 0x66, 0x41, 0x37, 0x54, 0x38, 0x70, 0x74, 0x39, 0x44, 0x54, 0x45, 0x63, 0x65, 0x54, 0x2f, 0x41, 0x46, 0x72, 0x32, 0x58, 0x4b, 0x34, 0x6a, 0x59, 0x49, 0x56, 0x7a, 0x38, 0x65, 0x51, 0x51, 0x0a, 0x73, 0x53, 0x57, 0x75, 0x31, 0x5a, 0x4b, 0x37, 0x45, 0x38, 0x45, 0x4d, 0x34, 0x44, 0x6e, 0x61, 0x74, 0x44, 0x6c, 0x58, 0x74, 0x61, 0x73, 0x31, 0x71, 0x6e, 0x49, 0x68, 0x4f, 0x34, 0x4d, 0x31, 0x35, 0x7a, 0x48, 0x66, 0x65, 0x69, 0x46, 0x75, 0x75, 0x44, 0x49, 0x49, 0x66, 0x52, 0x30, 0x79, 0x6b, 0x52, 0x56, 0x4b, 0x59, 0x6e, 0x4c, 0x50, 0x34, 0x33, 0x65, 0x68, 0x76, 0x4e, 0x55, 0x52, 0x47, 0x33, 0x59, 0x42, 0x5a, 0x77, 0x6a, 0x67, 0x51, 0x51, 0x76, 0x44, 0x0a, 0x36, 0x78, 0x56, 0x75, 0x2b, 0x4b, 0x51, 0x5a, 0x32, 0x61, 0x4b, 0x72, 0x72, 0x2b, 0x49, 0x6e, 0x55, 0x6c, 0x59, 0x72, 0x41, 0x6f, 0x6f, 0x73, 0x46, 0x43, 0x54, 0x35, 0x76, 0x30, 0x49, 0x43, 0x76, 0x79, 0x62, 0x49, 0x78, 0x6f, 0x2f, 0x67, 0x62, 0x6a, 0x68, 0x39, 0x55, 0x79, 0x33, 0x6c, 0x37, 0x5a, 0x69, 0x7a, 0x6c, 0x57, 0x4e, 0x6f, 0x66, 0x2f, 0x6b, 0x31, 0x39, 0x4e, 0x2b, 0x49, 0x78, 0x57, 0x41, 0x31, 0x6b, 0x73, 0x42, 0x38, 0x61, 0x52, 0x78, 0x68, 0x0a, 0x6c, 0x52, 0x62, 0x51, 0x36, 0x39, 0x34, 0x4c, 0x72, 0x7a, 0x34, 0x45, 0x45, 0x45, 0x56, 0x6c, 0x57, 0x46, 0x41, 0x34, 0x72, 0x30, 0x6a, 0x79, 0x57, 0x62, 0x59, 0x57, 0x38, 0x6a, 0x77, 0x4e, 0x6b, 0x41, 0x4c, 0x47, 0x63, 0x43, 0x34, 0x42, 0x72, 0x54, 0x77, 0x56, 0x31, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x0a, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x37, 0x65, 0x64, 0x76, 0x64, 0x6c, 0x71, 0x2f, 0x59, 0x4f, 0x78, 0x4a, 0x57, 0x38, 0x61, 0x6c, 0x64, 0x37, 0x74, 0x79, 0x46, 0x6e, 0x47, 0x62, 0x78, 0x44, 0x30, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x0a, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4a, 0x48, 0x66, 0x67, 0x44, 0x39, 0x44, 0x43, 0x58, 0x35, 0x78, 0x77, 0x76, 0x66, 0x72, 0x73, 0x34, 0x69, 0x50, 0x34, 0x56, 0x47, 0x79, 0x76, 0x44, 0x31, 0x31, 0x2b, 0x53, 0x68, 0x64, 0x79, 0x4c, 0x79, 0x5a, 0x6d, 0x33, 0x74, 0x64, 0x71, 0x75, 0x58, 0x4b, 0x34, 0x51, 0x72, 0x33, 0x36, 0x4c, 0x4c, 0x54, 0x6e, 0x39, 0x31, 0x6e, 0x4d, 0x58, 0x36, 0x36, 0x0a, 0x41, 0x61, 0x72, 0x48, 0x61, 0x6b, 0x45, 0x37, 0x6b, 0x4e, 0x51, 0x49, 0x58, 0x4c, 0x4a, 0x67, 0x61, 0x70, 0x44, 0x77, 0x79, 0x4d, 0x34, 0x44, 0x59, 0x76, 0x6d, 0x4c, 0x37, 0x66, 0x74, 0x75, 0x4b, 0x74, 0x77, 0x47, 0x54, 0x54, 0x77, 0x70, 0x44, 0x34, 0x6b, 0x57, 0x69, 0x6c, 0x68, 0x4d, 0x53, 0x41, 0x2f, 0x6f, 0x68, 0x47, 0x48, 0x71, 0x50, 0x48, 0x4b, 0x6d, 0x64, 0x2b, 0x52, 0x43, 0x72, 0x6f, 0x69, 0x6a, 0x51, 0x31, 0x68, 0x35, 0x66, 0x71, 0x37, 0x4b, 0x0a, 0x70, 0x56, 0x4d, 0x4e, 0x71, 0x54, 0x31, 0x77, 0x76, 0x53, 0x41, 0x5a, 0x59, 0x61, 0x52, 0x73, 0x4f, 0x50, 0x78, 0x44, 0x4d, 0x75, 0x48, 0x42, 0x52, 0x2f, 0x2f, 0x34, 0x37, 0x50, 0x45, 0x52, 0x49, 0x6a, 0x4b, 0x57, 0x6e, 0x4d, 0x4c, 0x32, 0x57, 0x32, 0x6d, 0x57, 0x65, 0x79, 0x41, 0x4d, 0x51, 0x30, 0x47, 0x61, 0x57, 0x2f, 0x5a, 0x5a, 0x47, 0x59, 0x6a, 0x65, 0x56, 0x59, 0x67, 0x33, 0x55, 0x51, 0x74, 0x34, 0x58, 0x41, 0x6f, 0x65, 0x6f, 0x30, 0x4c, 0x39, 0x0a, 0x78, 0x35, 0x32, 0x49, 0x44, 0x38, 0x44, 0x79, 0x65, 0x41, 0x49, 0x6b, 0x56, 0x4a, 0x4f, 0x76, 0x69, 0x59, 0x65, 0x49, 0x79, 0x55, 0x71, 0x41, 0x48, 0x65, 0x72, 0x51, 0x62, 0x6a, 0x35, 0x68, 0x4c, 0x6a, 0x61, 0x37, 0x4e, 0x51, 0x34, 0x6e, 0x6c, 0x76, 0x31, 0x6d, 0x4e, 0x44, 0x74, 0x68, 0x63, 0x6e, 0x50, 0x78, 0x46, 0x6c, 0x78, 0x48, 0x42, 0x6c, 0x52, 0x4a, 0x41, 0x48, 0x70, 0x59, 0x45, 0x72, 0x41, 0x4b, 0x37, 0x34, 0x58, 0x39, 0x73, 0x62, 0x67, 0x7a, 0x0a, 0x64, 0x57, 0x71, 0x54, 0x48, 0x42, 0x4c, 0x6d, 0x59, 0x46, 0x35, 0x76, 0x48, 0x58, 0x2f, 0x4a, 0x48, 0x79, 0x50, 0x4c, 0x68, 0x47, 0x47, 0x66, 0x48, 0x6f, 0x4a, 0x45, 0x2b, 0x56, 0x2b, 0x74, 0x59, 0x6c, 0x55, 0x6b, 0x6d, 0x6c, 0x4b, 0x59, 0x37, 0x56, 0x48, 0x6e, 0x6f, 0x58, 0x36, 0x58, 0x4f, 0x75, 0x59, 0x76, 0x48, 0x78, 0x48, 0x61, 0x55, 0x34, 0x41, 0x73, 0x68, 0x5a, 0x36, 0x72, 0x4e, 0x52, 0x44, 0x62, 0x49, 0x6c, 0x39, 0x71, 0x78, 0x56, 0x36, 0x58, 0x0a, 0x55, 0x2f, 0x49, 0x79, 0x41, 0x67, 0x6b, 0x77, 0x6f, 0x31, 0x6a, 0x77, 0x44, 0x51, 0x48, 0x56, 0x63, 0x73, 0x61, 0x78, 0x66, 0x47, 0x6c, 0x37, 0x77, 0x2f, 0x55, 0x32, 0x52, 0x63, 0x78, 0x68, 0x62, 0x6c, 0x35, 0x4d, 0x6c, 0x4d, 0x56, 0x65, 0x72, 0x75, 0x67, 0x4f, 0x58, 0x6f, 0x75, 0x2f, 0x39, 0x38, 0x33, 0x67, 0x37, 0x61, 0x45, 0x4f, 0x47, 0x7a, 0x50, 0x75, 0x56, 0x42, 0x6a, 0x2b, 0x44, 0x37, 0x37, 0x76, 0x66, 0x6f, 0x52, 0x72, 0x51, 0x2b, 0x4e, 0x77, 0x0a, 0x6d, 0x4e, 0x74, 0x64, 0x64, 0x62, 0x49, 0x4e, 0x57, 0x51, 0x65, 0x46, 0x46, 0x53, 0x4d, 0x35, 0x31, 0x76, 0x48, 0x66, 0x71, 0x53, 0x59, 0x50, 0x31, 0x6b, 0x6a, 0x48, 0x73, 0x36, 0x59, 0x69, 0x39, 0x54, 0x4d, 0x33, 0x57, 0x70, 0x56, 0x48, 0x6e, 0x33, 0x75, 0x36, 0x47, 0x42, 0x56, 0x76, 0x2f, 0x39, 0x59, 0x55, 0x5a, 0x49, 0x4e, 0x4a, 0x30, 0x67, 0x70, 0x6e, 0x49, 0x64, 0x73, 0x50, 0x4e, 0x57, 0x4e, 0x67, 0x4b, 0x43, 0x4c, 0x6a, 0x73, 0x5a, 0x57, 0x44, 0x0a, 0x7a, 0x59, 0x57, 0x6d, 0x33, 0x53, 0x38, 0x50, 0x35, 0x32, 0x64, 0x53, 0x62, 0x72, 0x73, 0x76, 0x68, 0x58, 0x7a, 0x31, 0x53, 0x6e, 0x50, 0x6e, 0x78, 0x54, 0x37, 0x41, 0x76, 0x53, 0x45, 0x53, 0x42, 0x54, 0x2f, 0x38, 0x74, 0x77, 0x4e, 0x4a, 0x41, 0x6c, 0x76, 0x49, 0x4a, 0x65, 0x62, 0x69, 0x56, 0x44, 0x6a, 0x31, 0x65, 0x59, 0x65, 0x4d, 0x48, 0x56, 0x4f, 0x79, 0x54, 0x6f, 0x56, 0x37, 0x42, 0x6a, 0x6a, 0x48, 0x4c, 0x50, 0x6a, 0x34, 0x73, 0x48, 0x4b, 0x4e, 0x0a, 0x4a, 0x65, 0x56, 0x33, 0x55, 0x76, 0x51, 0x44, 0x48, 0x45, 0x69, 0x6d, 0x55, 0x46, 0x2b, 0x49, 0x49, 0x44, 0x42, 0x75, 0x38, 0x6f, 0x4a, 0x44, 0x71, 0x7a, 0x32, 0x58, 0x68, 0x4f, 0x64, 0x54, 0x2b, 0x79, 0x48, 0x42, 0x54, 0x77, 0x38, 0x69, 0x6d, 0x6f, 0x61, 0x34, 0x57, 0x53, 0x72, 0x32, 0x52, 0x7a, 0x30, 0x5a, 0x69, 0x43, 0x33, 0x6f, 0x68, 0x65, 0x47, 0x65, 0x37, 0x49, 0x55, 0x49, 0x61, 0x72, 0x46, 0x73, 0x4e, 0x4d, 0x6b, 0x64, 0x37, 0x45, 0x67, 0x72, 0x0a, 0x4f, 0x33, 0x6a, 0x74, 0x5a, 0x73, 0x53, 0x4f, 0x65, 0x57, 0x6d, 0x44, 0x33, 0x6e, 0x2b, 0x4d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x51, 0x75, 0x6f, 0x56, 0x61, 0x64, 0x69, 0x73, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x33, 0x20, 0x47, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x59, 0x44, 0x43, 0x43, 0x41, 0x30, 0x69, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x4c, 0x76, 0x57, 0x62, 0x41, 0x69, 0x69, 0x6e, 0x32, 0x33, 0x72, 0x2f, 0x31, 0x61, 0x4f, 0x70, 0x37, 0x72, 0x30, 0x44, 0x6f, 0x4d, 0x38, 0x53, 0x61, 0x68, 0x30, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x53, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x6b, 0x30, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x45, 0x46, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x48, 0x6a, 0x41, 0x63, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x46, 0x56, 0x46, 0x31, 0x62, 0x31, 0x5a, 0x68, 0x5a, 0x47, 0x6c, 0x7a, 0x49, 0x46, 0x4a, 0x76, 0x0a, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x79, 0x42, 0x48, 0x4d, 0x7a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x6a, 0x41, 0x78, 0x4d, 0x54, 0x49, 0x79, 0x4d, 0x44, 0x49, 0x32, 0x4d, 0x7a, 0x4a, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x6a, 0x41, 0x78, 0x4d, 0x54, 0x49, 0x79, 0x4d, 0x44, 0x49, 0x32, 0x4d, 0x7a, 0x4a, 0x61, 0x4d, 0x45, 0x67, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4a, 0x4e, 0x0a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x42, 0x52, 0x64, 0x57, 0x39, 0x57, 0x59, 0x57, 0x52, 0x70, 0x63, 0x79, 0x42, 0x4d, 0x61, 0x57, 0x31, 0x70, 0x64, 0x47, 0x56, 0x6b, 0x4d, 0x52, 0x34, 0x77, 0x48, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x56, 0x52, 0x64, 0x57, 0x39, 0x57, 0x59, 0x57, 0x52, 0x70, 0x63, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x4d, 0x67, 0x0a, 0x52, 0x7a, 0x4d, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x7a, 0x79, 0x77, 0x34, 0x51, 0x5a, 0x34, 0x37, 0x71, 0x46, 0x4a, 0x65, 0x6e, 0x4d, 0x69, 0x6f, 0x4b, 0x56, 0x6a, 0x5a, 0x2f, 0x61, 0x45, 0x7a, 0x48, 0x73, 0x32, 0x38, 0x36, 0x0a, 0x49, 0x78, 0x53, 0x52, 0x2f, 0x78, 0x6c, 0x2f, 0x70, 0x63, 0x71, 0x73, 0x37, 0x72, 0x4e, 0x32, 0x6e, 0x58, 0x72, 0x70, 0x69, 0x78, 0x75, 0x72, 0x61, 0x7a, 0x48, 0x62, 0x2b, 0x67, 0x74, 0x54, 0x54, 0x4b, 0x2f, 0x46, 0x70, 0x52, 0x70, 0x35, 0x50, 0x49, 0x70, 0x4d, 0x2f, 0x36, 0x7a, 0x66, 0x4a, 0x64, 0x35, 0x4f, 0x32, 0x59, 0x49, 0x79, 0x43, 0x30, 0x54, 0x65, 0x79, 0x74, 0x75, 0x4d, 0x72, 0x4b, 0x4e, 0x75, 0x46, 0x6f, 0x4d, 0x37, 0x70, 0x6d, 0x52, 0x4c, 0x0a, 0x4d, 0x6f, 0x6e, 0x37, 0x46, 0x68, 0x59, 0x34, 0x66, 0x75, 0x74, 0x44, 0x34, 0x74, 0x4e, 0x30, 0x53, 0x73, 0x4a, 0x69, 0x43, 0x6e, 0x4d, 0x4b, 0x33, 0x55, 0x6d, 0x7a, 0x56, 0x39, 0x4b, 0x77, 0x43, 0x6f, 0x57, 0x64, 0x63, 0x54, 0x7a, 0x65, 0x6f, 0x38, 0x76, 0x41, 0x4d, 0x76, 0x4d, 0x42, 0x4f, 0x53, 0x42, 0x44, 0x47, 0x7a, 0x58, 0x52, 0x55, 0x37, 0x4f, 0x78, 0x37, 0x73, 0x57, 0x54, 0x61, 0x59, 0x49, 0x2b, 0x46, 0x72, 0x55, 0x6f, 0x52, 0x71, 0x48, 0x65, 0x0a, 0x36, 0x6f, 0x6b, 0x4a, 0x37, 0x55, 0x4f, 0x34, 0x42, 0x55, 0x61, 0x4b, 0x68, 0x76, 0x56, 0x5a, 0x52, 0x37, 0x34, 0x62, 0x62, 0x77, 0x45, 0x68, 0x45, 0x4c, 0x6e, 0x39, 0x71, 0x64, 0x49, 0x6f, 0x79, 0x68, 0x41, 0x35, 0x43, 0x63, 0x6f, 0x54, 0x4e, 0x73, 0x2b, 0x63, 0x72, 0x61, 0x31, 0x41, 0x64, 0x48, 0x6b, 0x72, 0x41, 0x6a, 0x38, 0x30, 0x2f, 0x2f, 0x6f, 0x67, 0x61, 0x58, 0x33, 0x54, 0x37, 0x6d, 0x48, 0x31, 0x75, 0x72, 0x50, 0x6e, 0x4d, 0x4e, 0x41, 0x33, 0x0a, 0x49, 0x34, 0x5a, 0x79, 0x59, 0x55, 0x55, 0x70, 0x53, 0x46, 0x6c, 0x6f, 0x62, 0x33, 0x65, 0x6d, 0x4c, 0x6f, 0x47, 0x2b, 0x42, 0x30, 0x31, 0x76, 0x72, 0x38, 0x37, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x46, 0x48, 0x41, 0x47, 0x6a, 0x78, 0x2b, 0x66, 0x2b, 0x49, 0x64, 0x70, 0x73, 0x51, 0x37, 0x76, 0x77, 0x34, 0x6b, 0x5a, 0x36, 0x2b, 0x6f, 0x63, 0x59, 0x66, 0x78, 0x36, 0x62, 0x49, 0x72, 0x63, 0x31, 0x67, 0x4d, 0x4c, 0x6e, 0x69, 0x61, 0x36, 0x45, 0x74, 0x33, 0x55, 0x0a, 0x56, 0x44, 0x6d, 0x72, 0x4a, 0x71, 0x4d, 0x7a, 0x36, 0x6e, 0x57, 0x42, 0x32, 0x69, 0x33, 0x4e, 0x44, 0x30, 0x2f, 0x6b, 0x41, 0x39, 0x48, 0x76, 0x46, 0x5a, 0x63, 0x62, 0x61, 0x35, 0x44, 0x46, 0x41, 0x70, 0x43, 0x54, 0x5a, 0x67, 0x49, 0x68, 0x73, 0x55, 0x66, 0x65, 0x69, 0x35, 0x70, 0x4b, 0x67, 0x4c, 0x6c, 0x56, 0x6a, 0x37, 0x57, 0x69, 0x4c, 0x38, 0x44, 0x57, 0x4d, 0x32, 0x66, 0x61, 0x66, 0x73, 0x53, 0x6e, 0x74, 0x41, 0x52, 0x45, 0x36, 0x30, 0x66, 0x37, 0x0a, 0x35, 0x6c, 0x69, 0x35, 0x39, 0x77, 0x7a, 0x77, 0x65, 0x79, 0x75, 0x78, 0x77, 0x48, 0x41, 0x70, 0x77, 0x30, 0x42, 0x69, 0x4c, 0x54, 0x74, 0x49, 0x61, 0x64, 0x77, 0x6a, 0x50, 0x45, 0x6a, 0x72, 0x65, 0x77, 0x6c, 0x35, 0x71, 0x57, 0x33, 0x61, 0x71, 0x44, 0x43, 0x59, 0x7a, 0x34, 0x42, 0x79, 0x41, 0x34, 0x69, 0x6d, 0x57, 0x30, 0x61, 0x75, 0x63, 0x6e, 0x6c, 0x38, 0x43, 0x41, 0x4d, 0x68, 0x5a, 0x61, 0x36, 0x33, 0x34, 0x52, 0x79, 0x6c, 0x73, 0x53, 0x71, 0x69, 0x0a, 0x4d, 0x64, 0x35, 0x6d, 0x42, 0x50, 0x66, 0x41, 0x64, 0x4f, 0x68, 0x78, 0x33, 0x76, 0x38, 0x39, 0x57, 0x63, 0x79, 0x57, 0x4a, 0x68, 0x4b, 0x4c, 0x68, 0x5a, 0x56, 0x58, 0x47, 0x71, 0x74, 0x72, 0x64, 0x51, 0x74, 0x45, 0x50, 0x52, 0x45, 0x6f, 0x50, 0x48, 0x74, 0x68, 0x74, 0x2b, 0x4b, 0x50, 0x5a, 0x30, 0x2f, 0x6c, 0x37, 0x44, 0x78, 0x4d, 0x59, 0x49, 0x42, 0x70, 0x56, 0x7a, 0x67, 0x65, 0x41, 0x56, 0x75, 0x4e, 0x56, 0x65, 0x6a, 0x48, 0x33, 0x38, 0x44, 0x4d, 0x0a, 0x64, 0x79, 0x4d, 0x30, 0x53, 0x58, 0x56, 0x38, 0x39, 0x70, 0x67, 0x52, 0x36, 0x79, 0x33, 0x65, 0x37, 0x55, 0x45, 0x75, 0x46, 0x41, 0x55, 0x43, 0x66, 0x2b, 0x44, 0x2b, 0x49, 0x4f, 0x73, 0x31, 0x35, 0x78, 0x47, 0x73, 0x49, 0x73, 0x35, 0x58, 0x50, 0x64, 0x37, 0x4a, 0x4d, 0x47, 0x30, 0x51, 0x41, 0x34, 0x58, 0x4e, 0x38, 0x66, 0x2b, 0x4d, 0x46, 0x72, 0x58, 0x42, 0x73, 0x6a, 0x36, 0x49, 0x62, 0x47, 0x42, 0x2f, 0x6b, 0x45, 0x2b, 0x56, 0x39, 0x2f, 0x59, 0x74, 0x0a, 0x72, 0x51, 0x45, 0x35, 0x42, 0x77, 0x54, 0x36, 0x64, 0x59, 0x42, 0x39, 0x76, 0x30, 0x6c, 0x51, 0x37, 0x65, 0x2f, 0x4a, 0x78, 0x48, 0x77, 0x63, 0x36, 0x34, 0x42, 0x2b, 0x32, 0x37, 0x62, 0x51, 0x33, 0x52, 0x50, 0x2b, 0x79, 0x64, 0x4f, 0x63, 0x31, 0x37, 0x4b, 0x58, 0x71, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x0a, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x78, 0x68, 0x66, 0x51, 0x76, 0x4b, 0x6a, 0x71, 0x41, 0x6b, 0x50, 0x79, 0x47, 0x77, 0x61, 0x5a, 0x58, 0x53, 0x75, 0x51, 0x49, 0x4c, 0x6e, 0x58, 0x6e, 0x4f, 0x51, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x0a, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x44, 0x52, 0x68, 0x32, 0x56, 0x61, 0x31, 0x45, 0x6f, 0x64, 0x56, 0x54, 0x64, 0x32, 0x6a, 0x4e, 0x54, 0x46, 0x47, 0x75, 0x36, 0x51, 0x48, 0x63, 0x72, 0x78, 0x66, 0x59, 0x57, 0x4c, 0x6f, 0x70, 0x66, 0x73, 0x4c, 0x4e, 0x37, 0x45, 0x38, 0x74, 0x72, 0x50, 0x36, 0x4b, 0x5a, 0x31, 0x2f, 0x41, 0x76, 0x57, 0x6b, 0x79, 0x61, 0x69, 0x54, 0x74, 0x33, 0x70, 0x78, 0x0a, 0x4b, 0x47, 0x6d, 0x50, 0x63, 0x2b, 0x46, 0x53, 0x6b, 0x4e, 0x72, 0x56, 0x76, 0x6a, 0x72, 0x6c, 0x74, 0x33, 0x5a, 0x71, 0x56, 0x6f, 0x41, 0x68, 0x33, 0x31, 0x33, 0x6d, 0x36, 0x54, 0x71, 0x65, 0x35, 0x54, 0x37, 0x32, 0x6f, 0x6d, 0x6e, 0x48, 0x4b, 0x67, 0x71, 0x77, 0x47, 0x45, 0x66, 0x63, 0x49, 0x48, 0x42, 0x39, 0x55, 0x71, 0x4d, 0x2b, 0x57, 0x58, 0x7a, 0x42, 0x75, 0x73, 0x6e, 0x49, 0x46, 0x55, 0x42, 0x68, 0x79, 0x6e, 0x4c, 0x57, 0x63, 0x4b, 0x7a, 0x53, 0x0a, 0x74, 0x2f, 0x41, 0x63, 0x35, 0x49, 0x59, 0x70, 0x38, 0x4d, 0x37, 0x76, 0x61, 0x47, 0x50, 0x51, 0x74, 0x53, 0x43, 0x4b, 0x46, 0x57, 0x47, 0x61, 0x66, 0x6f, 0x61, 0x59, 0x74, 0x4d, 0x6e, 0x43, 0x64, 0x76, 0x76, 0x4d, 0x75, 0x6a, 0x41, 0x57, 0x7a, 0x4b, 0x4e, 0x68, 0x78, 0x6e, 0x51, 0x54, 0x35, 0x57, 0x76, 0x76, 0x6f, 0x78, 0x58, 0x71, 0x41, 0x2f, 0x34, 0x54, 0x69, 0x32, 0x54, 0x6b, 0x30, 0x38, 0x48, 0x53, 0x36, 0x49, 0x54, 0x37, 0x53, 0x64, 0x45, 0x51, 0x0a, 0x54, 0x58, 0x6c, 0x6d, 0x36, 0x36, 0x72, 0x39, 0x39, 0x49, 0x30, 0x78, 0x48, 0x6e, 0x41, 0x55, 0x72, 0x64, 0x7a, 0x65, 0x5a, 0x78, 0x4e, 0x4d, 0x67, 0x52, 0x56, 0x68, 0x76, 0x4c, 0x66, 0x5a, 0x6b, 0x58, 0x64, 0x78, 0x47, 0x59, 0x46, 0x67, 0x75, 0x2f, 0x42, 0x59, 0x70, 0x62, 0x57, 0x63, 0x43, 0x2f, 0x65, 0x50, 0x49, 0x6c, 0x55, 0x6e, 0x77, 0x45, 0x73, 0x42, 0x62, 0x54, 0x75, 0x5a, 0x44, 0x64, 0x51, 0x64, 0x6d, 0x32, 0x4e, 0x6e, 0x4c, 0x39, 0x44, 0x75, 0x0a, 0x44, 0x63, 0x70, 0x6d, 0x76, 0x4a, 0x52, 0x50, 0x70, 0x71, 0x33, 0x74, 0x2f, 0x4f, 0x35, 0x6a, 0x72, 0x46, 0x63, 0x2f, 0x5a, 0x53, 0x58, 0x50, 0x73, 0x6f, 0x61, 0x50, 0x30, 0x41, 0x6a, 0x2f, 0x75, 0x48, 0x59, 0x55, 0x62, 0x74, 0x37, 0x6c, 0x4a, 0x2b, 0x79, 0x72, 0x65, 0x4c, 0x56, 0x54, 0x75, 0x62, 0x59, 0x2f, 0x36, 0x43, 0x44, 0x35, 0x30, 0x71, 0x69, 0x2b, 0x59, 0x55, 0x62, 0x4b, 0x68, 0x34, 0x79, 0x45, 0x38, 0x2f, 0x6e, 0x78, 0x6f, 0x47, 0x69, 0x62, 0x0a, 0x49, 0x68, 0x36, 0x42, 0x4a, 0x70, 0x73, 0x51, 0x42, 0x4a, 0x46, 0x78, 0x77, 0x41, 0x59, 0x66, 0x33, 0x4b, 0x44, 0x54, 0x75, 0x56, 0x61, 0x6e, 0x34, 0x35, 0x67, 0x74, 0x66, 0x34, 0x4f, 0x64, 0x33, 0x34, 0x77, 0x72, 0x6e, 0x44, 0x4b, 0x4f, 0x4d, 0x70, 0x54, 0x77, 0x41, 0x54, 0x77, 0x69, 0x4b, 0x70, 0x39, 0x44, 0x77, 0x69, 0x37, 0x44, 0x6d, 0x44, 0x6b, 0x48, 0x4f, 0x48, 0x76, 0x38, 0x58, 0x67, 0x42, 0x43, 0x48, 0x2f, 0x4d, 0x79, 0x4a, 0x6e, 0x6d, 0x44, 0x0a, 0x68, 0x50, 0x62, 0x6c, 0x38, 0x4d, 0x46, 0x52, 0x45, 0x73, 0x41, 0x4c, 0x48, 0x67, 0x51, 0x6a, 0x44, 0x46, 0x53, 0x6c, 0x54, 0x43, 0x39, 0x4a, 0x78, 0x55, 0x72, 0x52, 0x74, 0x6d, 0x35, 0x67, 0x44, 0x57, 0x76, 0x38, 0x61, 0x34, 0x75, 0x46, 0x4a, 0x47, 0x53, 0x33, 0x69, 0x51, 0x36, 0x72, 0x4a, 0x55, 0x64, 0x62, 0x50, 0x4d, 0x39, 0x2b, 0x53, 0x62, 0x33, 0x48, 0x36, 0x51, 0x72, 0x47, 0x32, 0x76, 0x64, 0x2b, 0x44, 0x68, 0x63, 0x49, 0x30, 0x30, 0x69, 0x58, 0x0a, 0x30, 0x48, 0x47, 0x53, 0x38, 0x41, 0x38, 0x35, 0x50, 0x6a, 0x52, 0x71, 0x48, 0x48, 0x33, 0x59, 0x38, 0x69, 0x4b, 0x75, 0x75, 0x32, 0x6e, 0x30, 0x4d, 0x37, 0x53, 0x6d, 0x53, 0x46, 0x58, 0x52, 0x44, 0x77, 0x34, 0x6d, 0x36, 0x4f, 0x79, 0x32, 0x43, 0x79, 0x32, 0x6e, 0x68, 0x54, 0x58, 0x4e, 0x2f, 0x56, 0x6e, 0x49, 0x6e, 0x39, 0x48, 0x4e, 0x50, 0x6c, 0x6f, 0x70, 0x4e, 0x4c, 0x6b, 0x39, 0x68, 0x4d, 0x36, 0x78, 0x5a, 0x64, 0x52, 0x5a, 0x6b, 0x5a, 0x46, 0x57, 0x0a, 0x64, 0x53, 0x48, 0x42, 0x64, 0x35, 0x37, 0x35, 0x65, 0x75, 0x46, 0x67, 0x6e, 0x64, 0x4f, 0x74, 0x42, 0x42, 0x6a, 0x30, 0x66, 0x4f, 0x74, 0x65, 0x6b, 0x34, 0x39, 0x54, 0x53, 0x69, 0x49, 0x70, 0x2b, 0x45, 0x67, 0x72, 0x50, 0x6b, 0x32, 0x47, 0x72, 0x46, 0x74, 0x2f, 0x79, 0x77, 0x61, 0x5a, 0x57, 0x57, 0x44, 0x59, 0x57, 0x47, 0x57, 0x56, 0x6a, 0x55, 0x54, 0x52, 0x39, 0x33, 0x39, 0x2b, 0x4a, 0x33, 0x39, 0x39, 0x72, 0x6f, 0x44, 0x31, 0x42, 0x30, 0x79, 0x32, 0x0a, 0x50, 0x70, 0x78, 0x78, 0x56, 0x4a, 0x6b, 0x45, 0x53, 0x2f, 0x31, 0x59, 0x2b, 0x5a, 0x6a, 0x30, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x47, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x6c, 0x6a, 0x43, 0x43, 0x41, 0x6e, 0x36, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x43, 0x35, 0x4d, 0x63, 0x4f, 0x74, 0x59, 0x35, 0x5a, 0x2b, 0x70, 0x6e, 0x49, 0x37, 0x2f, 0x44, 0x72, 0x35, 0x72, 0x30, 0x53, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x6c, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4d, 0x53, 0x51, 0x77, 0x0a, 0x49, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x74, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x42, 0x63, 0x33, 0x4e, 0x31, 0x63, 0x6d, 0x56, 0x6b, 0x49, 0x45, 0x6c, 0x45, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x52, 0x7a, 0x49, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x4d, 0x77, 0x4f, 0x44, 0x41, 0x78, 0x4d, 0x54, 0x49, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x67, 0x77, 0x0a, 0x4d, 0x54, 0x45, 0x31, 0x4d, 0x54, 0x49, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x42, 0x6c, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x0a, 0x45, 0x78, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4d, 0x53, 0x51, 0x77, 0x49, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x74, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x42, 0x63, 0x33, 0x4e, 0x31, 0x63, 0x6d, 0x56, 0x6b, 0x49, 0x45, 0x6c, 0x45, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x52, 0x7a, 0x49, 0x77, 0x0a, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x44, 0x5a, 0x35, 0x79, 0x67, 0x76, 0x55, 0x6a, 0x38, 0x32, 0x63, 0x6b, 0x6d, 0x49, 0x6b, 0x7a, 0x54, 0x7a, 0x2b, 0x47, 0x6f, 0x65, 0x4d, 0x56, 0x53, 0x41, 0x6e, 0x36, 0x31, 0x55, 0x51, 0x62, 0x56, 0x48, 0x0a, 0x33, 0x35, 0x61, 0x6f, 0x31, 0x4b, 0x2b, 0x41, 0x4c, 0x62, 0x6b, 0x4b, 0x7a, 0x33, 0x58, 0x39, 0x69, 0x61, 0x56, 0x39, 0x4a, 0x50, 0x72, 0x6a, 0x49, 0x67, 0x77, 0x72, 0x76, 0x4a, 0x55, 0x58, 0x43, 0x7a, 0x4f, 0x2f, 0x47, 0x55, 0x31, 0x42, 0x42, 0x70, 0x41, 0x41, 0x76, 0x51, 0x78, 0x4e, 0x45, 0x50, 0x34, 0x48, 0x74, 0x65, 0x63, 0x63, 0x62, 0x69, 0x4a, 0x56, 0x4d, 0x57, 0x57, 0x58, 0x76, 0x64, 0x4d, 0x58, 0x30, 0x68, 0x35, 0x69, 0x38, 0x39, 0x76, 0x71, 0x0a, 0x62, 0x46, 0x43, 0x4d, 0x50, 0x34, 0x51, 0x4d, 0x6c, 0x73, 0x2b, 0x33, 0x79, 0x77, 0x50, 0x67, 0x79, 0x6d, 0x32, 0x68, 0x46, 0x45, 0x77, 0x62, 0x69, 0x64, 0x33, 0x74, 0x41, 0x4c, 0x42, 0x53, 0x66, 0x4b, 0x2b, 0x52, 0x62, 0x4c, 0x45, 0x34, 0x45, 0x39, 0x48, 0x70, 0x45, 0x67, 0x6a, 0x41, 0x41, 0x4c, 0x41, 0x63, 0x4b, 0x78, 0x48, 0x61, 0x64, 0x33, 0x41, 0x32, 0x6d, 0x36, 0x37, 0x4f, 0x65, 0x59, 0x66, 0x63, 0x67, 0x6e, 0x44, 0x6d, 0x43, 0x58, 0x52, 0x77, 0x0a, 0x56, 0x57, 0x6d, 0x76, 0x6f, 0x32, 0x69, 0x66, 0x76, 0x39, 0x32, 0x32, 0x65, 0x62, 0x50, 0x79, 0x6e, 0x58, 0x41, 0x70, 0x56, 0x66, 0x53, 0x72, 0x2f, 0x35, 0x56, 0x68, 0x38, 0x38, 0x6c, 0x41, 0x62, 0x78, 0x33, 0x52, 0x76, 0x70, 0x4f, 0x37, 0x30, 0x34, 0x67, 0x71, 0x75, 0x35, 0x32, 0x2f, 0x63, 0x6c, 0x70, 0x57, 0x63, 0x54, 0x73, 0x2f, 0x31, 0x50, 0x50, 0x52, 0x43, 0x76, 0x34, 0x6f, 0x37, 0x36, 0x50, 0x75, 0x32, 0x5a, 0x6d, 0x76, 0x41, 0x39, 0x4f, 0x50, 0x0a, 0x59, 0x4c, 0x66, 0x79, 0x6b, 0x71, 0x47, 0x78, 0x76, 0x59, 0x6d, 0x4a, 0x48, 0x7a, 0x44, 0x4e, 0x77, 0x36, 0x59, 0x75, 0x59, 0x6a, 0x4f, 0x75, 0x46, 0x67, 0x4a, 0x33, 0x52, 0x46, 0x72, 0x6e, 0x67, 0x51, 0x6f, 0x38, 0x70, 0x30, 0x51, 0x75, 0x65, 0x62, 0x67, 0x2f, 0x42, 0x4c, 0x78, 0x63, 0x6f, 0x49, 0x66, 0x68, 0x47, 0x36, 0x39, 0x52, 0x6a, 0x73, 0x33, 0x73, 0x4c, 0x50, 0x72, 0x34, 0x2f, 0x6d, 0x33, 0x77, 0x4f, 0x6e, 0x79, 0x71, 0x69, 0x2b, 0x52, 0x6e, 0x0a, 0x6c, 0x54, 0x47, 0x4e, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54, 0x4f, 0x0a, 0x77, 0x30, 0x71, 0x35, 0x6d, 0x56, 0x58, 0x79, 0x75, 0x4e, 0x74, 0x67, 0x76, 0x36, 0x6c, 0x2b, 0x76, 0x56, 0x61, 0x31, 0x6c, 0x7a, 0x61, 0x6e, 0x31, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x45, 0x41, 0x79, 0x71, 0x56, 0x56, 0x6a, 0x4f, 0x50, 0x49, 0x51, 0x57, 0x35, 0x70, 0x4a, 0x36, 0x64, 0x31, 0x45, 0x65, 0x38, 0x38, 0x68, 0x6a, 0x5a, 0x76, 0x0a, 0x30, 0x70, 0x33, 0x47, 0x65, 0x44, 0x67, 0x64, 0x61, 0x5a, 0x61, 0x69, 0x6b, 0x6d, 0x6b, 0x75, 0x4f, 0x47, 0x79, 0x62, 0x66, 0x51, 0x54, 0x55, 0x69, 0x61, 0x57, 0x78, 0x4d, 0x54, 0x65, 0x4b, 0x79, 0x53, 0x48, 0x4d, 0x71, 0x32, 0x7a, 0x4e, 0x69, 0x78, 0x79, 0x61, 0x31, 0x72, 0x39, 0x49, 0x30, 0x6a, 0x4a, 0x6d, 0x77, 0x59, 0x72, 0x41, 0x38, 0x79, 0x38, 0x36, 0x37, 0x38, 0x44, 0x6a, 0x31, 0x4a, 0x47, 0x47, 0x30, 0x56, 0x44, 0x6a, 0x41, 0x39, 0x74, 0x7a, 0x0a, 0x64, 0x32, 0x39, 0x4b, 0x4f, 0x56, 0x50, 0x74, 0x33, 0x69, 0x62, 0x48, 0x74, 0x58, 0x32, 0x76, 0x4b, 0x30, 0x4c, 0x52, 0x64, 0x57, 0x4c, 0x6a, 0x53, 0x69, 0x73, 0x43, 0x78, 0x31, 0x42, 0x4c, 0x34, 0x47, 0x6e, 0x69, 0x6c, 0x6d, 0x77, 0x4f, 0x52, 0x47, 0x59, 0x51, 0x52, 0x49, 0x2b, 0x74, 0x42, 0x65, 0x76, 0x34, 0x65, 0x61, 0x79, 0x6d, 0x47, 0x2b, 0x67, 0x33, 0x4e, 0x4a, 0x31, 0x54, 0x79, 0x57, 0x47, 0x71, 0x6f, 0x6c, 0x4b, 0x76, 0x53, 0x6e, 0x41, 0x57, 0x0a, 0x68, 0x73, 0x49, 0x36, 0x79, 0x4c, 0x45, 0x54, 0x63, 0x44, 0x62, 0x59, 0x7a, 0x2b, 0x37, 0x30, 0x43, 0x6a, 0x54, 0x56, 0x57, 0x30, 0x7a, 0x39, 0x42, 0x35, 0x79, 0x69, 0x75, 0x74, 0x6b, 0x42, 0x63, 0x6c, 0x7a, 0x7a, 0x54, 0x63, 0x48, 0x64, 0x44, 0x72, 0x45, 0x63, 0x44, 0x63, 0x52, 0x6a, 0x76, 0x71, 0x33, 0x30, 0x46, 0x50, 0x75, 0x4a, 0x37, 0x4b, 0x4a, 0x42, 0x44, 0x6b, 0x7a, 0x4d, 0x79, 0x46, 0x64, 0x41, 0x30, 0x47, 0x34, 0x44, 0x71, 0x73, 0x30, 0x4d, 0x0a, 0x6a, 0x6f, 0x6d, 0x5a, 0x6d, 0x57, 0x7a, 0x77, 0x50, 0x44, 0x43, 0x76, 0x4f, 0x4e, 0x39, 0x76, 0x76, 0x4b, 0x4f, 0x2b, 0x4b, 0x53, 0x41, 0x6e, 0x71, 0x33, 0x54, 0x2f, 0x45, 0x79, 0x4a, 0x34, 0x33, 0x70, 0x64, 0x53, 0x56, 0x52, 0x36, 0x44, 0x74, 0x56, 0x51, 0x67, 0x41, 0x2b, 0x36, 0x75, 0x77, 0x45, 0x39, 0x57, 0x33, 0x6a, 0x66, 0x4d, 0x77, 0x33, 0x2b, 0x71, 0x42, 0x43, 0x65, 0x37, 0x30, 0x33, 0x65, 0x34, 0x59, 0x74, 0x73, 0x58, 0x66, 0x4a, 0x77, 0x6f, 0x0a, 0x49, 0x68, 0x4e, 0x7a, 0x62, 0x4d, 0x38, 0x6d, 0x39, 0x59, 0x6f, 0x70, 0x35, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x47, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x52, 0x6a, 0x43, 0x43, 0x41, 0x63, 0x32, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x43, 0x36, 0x46, 0x61, 0x2b, 0x68, 0x33, 0x66, 0x6f, 0x4c, 0x56, 0x4a, 0x52, 0x4b, 0x2f, 0x4e, 0x4a, 0x4b, 0x42, 0x73, 0x37, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x6c, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4d, 0x53, 0x51, 0x77, 0x49, 0x67, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x74, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x42, 0x63, 0x33, 0x4e, 0x31, 0x63, 0x6d, 0x56, 0x6b, 0x49, 0x45, 0x6c, 0x45, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x52, 0x7a, 0x4d, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x4d, 0x77, 0x4f, 0x44, 0x41, 0x78, 0x4d, 0x54, 0x49, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x67, 0x77, 0x4d, 0x54, 0x45, 0x31, 0x0a, 0x4d, 0x54, 0x49, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x42, 0x6c, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x42, 0x33, 0x0a, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4d, 0x53, 0x51, 0x77, 0x49, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x74, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x42, 0x63, 0x33, 0x4e, 0x31, 0x63, 0x6d, 0x56, 0x6b, 0x49, 0x45, 0x6c, 0x45, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x52, 0x7a, 0x4d, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x0a, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x51, 0x5a, 0x35, 0x37, 0x79, 0x73, 0x52, 0x47, 0x58, 0x74, 0x7a, 0x62, 0x67, 0x2f, 0x57, 0x50, 0x75, 0x4e, 0x73, 0x56, 0x65, 0x70, 0x52, 0x43, 0x30, 0x46, 0x46, 0x66, 0x4c, 0x76, 0x43, 0x2f, 0x38, 0x51, 0x64, 0x4a, 0x2b, 0x31, 0x59, 0x6c, 0x4a, 0x66, 0x5a, 0x6e, 0x34, 0x66, 0x35, 0x64, 0x77, 0x62, 0x0a, 0x52, 0x58, 0x6b, 0x4c, 0x7a, 0x4d, 0x5a, 0x54, 0x43, 0x70, 0x32, 0x4e, 0x58, 0x51, 0x4c, 0x5a, 0x71, 0x56, 0x6e, 0x65, 0x41, 0x6c, 0x72, 0x32, 0x6c, 0x53, 0x6f, 0x4f, 0x6a, 0x54, 0x68, 0x4b, 0x69, 0x6b, 0x6e, 0x47, 0x76, 0x4d, 0x59, 0x44, 0x4f, 0x41, 0x64, 0x66, 0x56, 0x64, 0x70, 0x2b, 0x43, 0x57, 0x37, 0x69, 0x66, 0x31, 0x37, 0x51, 0x52, 0x53, 0x41, 0x50, 0x57, 0x58, 0x59, 0x51, 0x31, 0x71, 0x41, 0x6b, 0x38, 0x43, 0x33, 0x65, 0x4e, 0x76, 0x4a, 0x73, 0x0a, 0x4b, 0x54, 0x6d, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54, 0x4c, 0x30, 0x4c, 0x32, 0x70, 0x34, 0x5a, 0x67, 0x46, 0x0a, 0x55, 0x61, 0x46, 0x4e, 0x4e, 0x36, 0x4b, 0x44, 0x65, 0x63, 0x36, 0x4e, 0x48, 0x53, 0x72, 0x6b, 0x68, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6e, 0x41, 0x44, 0x42, 0x6b, 0x41, 0x6a, 0x41, 0x6c, 0x70, 0x49, 0x46, 0x46, 0x41, 0x6d, 0x73, 0x53, 0x53, 0x33, 0x56, 0x30, 0x54, 0x38, 0x67, 0x6a, 0x34, 0x33, 0x44, 0x79, 0x64, 0x58, 0x4c, 0x65, 0x66, 0x49, 0x6e, 0x77, 0x7a, 0x35, 0x46, 0x79, 0x0a, 0x59, 0x5a, 0x35, 0x65, 0x45, 0x4a, 0x4a, 0x5a, 0x56, 0x72, 0x6d, 0x44, 0x78, 0x78, 0x44, 0x6e, 0x4f, 0x4f, 0x6c, 0x59, 0x4a, 0x6a, 0x5a, 0x39, 0x31, 0x65, 0x51, 0x30, 0x68, 0x6a, 0x6b, 0x43, 0x4d, 0x48, 0x77, 0x32, 0x55, 0x2f, 0x41, 0x77, 0x35, 0x57, 0x4a, 0x6a, 0x4f, 0x70, 0x6e, 0x69, 0x74, 0x71, 0x4d, 0x37, 0x6d, 0x7a, 0x54, 0x36, 0x48, 0x74, 0x6f, 0x51, 0x6b, 0x6e, 0x46, 0x65, 0x6b, 0x52, 0x4f, 0x6e, 0x33, 0x61, 0x52, 0x75, 0x6b, 0x73, 0x77, 0x79, 0x0a, 0x31, 0x76, 0x55, 0x68, 0x5a, 0x73, 0x63, 0x76, 0x36, 0x70, 0x5a, 0x6a, 0x61, 0x6d, 0x56, 0x46, 0x6b, 0x70, 0x55, 0x42, 0x74, 0x41, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x47, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x6a, 0x6a, 0x43, 0x43, 0x41, 0x6e, 0x61, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x41, 0x7a, 0x72, 0x78, 0x35, 0x71, 0x63, 0x52, 0x71, 0x61, 0x43, 0x37, 0x4b, 0x47, 0x53, 0x78, 0x48, 0x51, 0x6e, 0x36, 0x35, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x68, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4d, 0x53, 0x41, 0x77, 0x0a, 0x48, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x64, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x48, 0x4d, 0x6a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x7a, 0x41, 0x34, 0x4d, 0x44, 0x45, 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4f, 0x44, 0x41, 0x78, 0x4d, 0x54, 0x55, 0x78, 0x0a, 0x4d, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x4d, 0x47, 0x45, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x78, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x45, 0x48, 0x64, 0x33, 0x0a, 0x64, 0x79, 0x35, 0x6b, 0x61, 0x57, 0x64, 0x70, 0x59, 0x32, 0x56, 0x79, 0x64, 0x43, 0x35, 0x6a, 0x62, 0x32, 0x30, 0x78, 0x49, 0x44, 0x41, 0x65, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x46, 0x30, 0x52, 0x70, 0x5a, 0x32, 0x6c, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x63, 0x79, 0x4d, 0x49, 0x49, 0x42, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x0a, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x75, 0x7a, 0x66, 0x4e, 0x4e, 0x4e, 0x78, 0x37, 0x61, 0x38, 0x6d, 0x79, 0x61, 0x4a, 0x43, 0x74, 0x53, 0x6e, 0x58, 0x2f, 0x52, 0x72, 0x6f, 0x68, 0x43, 0x67, 0x69, 0x4e, 0x39, 0x52, 0x6c, 0x55, 0x79, 0x66, 0x75, 0x49, 0x32, 0x2f, 0x4f, 0x75, 0x38, 0x6a, 0x71, 0x4a, 0x0a, 0x6b, 0x54, 0x78, 0x36, 0x35, 0x71, 0x73, 0x47, 0x47, 0x6d, 0x76, 0x50, 0x72, 0x43, 0x33, 0x6f, 0x58, 0x67, 0x6b, 0x6b, 0x52, 0x4c, 0x70, 0x69, 0x6d, 0x6e, 0x37, 0x57, 0x6f, 0x36, 0x68, 0x2b, 0x34, 0x46, 0x52, 0x31, 0x49, 0x41, 0x57, 0x73, 0x55, 0x4c, 0x65, 0x63, 0x59, 0x78, 0x70, 0x73, 0x4d, 0x4e, 0x7a, 0x61, 0x48, 0x78, 0x6d, 0x78, 0x31, 0x78, 0x37, 0x65, 0x2f, 0x64, 0x66, 0x67, 0x79, 0x35, 0x53, 0x44, 0x4e, 0x36, 0x37, 0x73, 0x48, 0x30, 0x4e, 0x4f, 0x0a, 0x33, 0x58, 0x73, 0x73, 0x30, 0x72, 0x30, 0x75, 0x70, 0x53, 0x2f, 0x6b, 0x71, 0x62, 0x69, 0x74, 0x4f, 0x74, 0x53, 0x5a, 0x70, 0x4c, 0x59, 0x6c, 0x36, 0x5a, 0x74, 0x72, 0x41, 0x47, 0x43, 0x53, 0x59, 0x50, 0x39, 0x50, 0x49, 0x55, 0x6b, 0x59, 0x39, 0x32, 0x65, 0x51, 0x71, 0x32, 0x45, 0x47, 0x6e, 0x49, 0x2f, 0x79, 0x75, 0x75, 0x6d, 0x30, 0x36, 0x5a, 0x49, 0x79, 0x61, 0x37, 0x58, 0x7a, 0x56, 0x2b, 0x68, 0x64, 0x47, 0x38, 0x32, 0x4d, 0x48, 0x61, 0x75, 0x56, 0x0a, 0x42, 0x4a, 0x56, 0x4a, 0x38, 0x7a, 0x55, 0x74, 0x6c, 0x75, 0x4e, 0x4a, 0x62, 0x64, 0x31, 0x33, 0x34, 0x2f, 0x74, 0x4a, 0x53, 0x37, 0x53, 0x73, 0x56, 0x51, 0x65, 0x70, 0x6a, 0x35, 0x57, 0x7a, 0x74, 0x43, 0x4f, 0x37, 0x54, 0x47, 0x31, 0x46, 0x38, 0x50, 0x61, 0x70, 0x73, 0x70, 0x55, 0x77, 0x74, 0x50, 0x31, 0x4d, 0x56, 0x59, 0x77, 0x6e, 0x53, 0x6c, 0x63, 0x55, 0x66, 0x49, 0x4b, 0x64, 0x7a, 0x58, 0x4f, 0x53, 0x30, 0x78, 0x5a, 0x4b, 0x42, 0x67, 0x79, 0x4d, 0x0a, 0x55, 0x4e, 0x47, 0x50, 0x48, 0x67, 0x6d, 0x2b, 0x46, 0x36, 0x48, 0x6d, 0x49, 0x63, 0x72, 0x39, 0x67, 0x2b, 0x55, 0x51, 0x76, 0x49, 0x4f, 0x6c, 0x43, 0x73, 0x52, 0x6e, 0x4b, 0x50, 0x5a, 0x7a, 0x46, 0x42, 0x51, 0x39, 0x52, 0x6e, 0x62, 0x44, 0x68, 0x78, 0x53, 0x4a, 0x49, 0x54, 0x52, 0x4e, 0x72, 0x77, 0x39, 0x46, 0x44, 0x4b, 0x5a, 0x4a, 0x6f, 0x62, 0x71, 0x37, 0x6e, 0x4d, 0x57, 0x78, 0x4d, 0x34, 0x4d, 0x70, 0x68, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x0a, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x54, 0x69, 0x4a, 0x55, 0x49, 0x42, 0x69, 0x56, 0x35, 0x75, 0x4e, 0x75, 0x0a, 0x35, 0x67, 0x2f, 0x36, 0x2b, 0x72, 0x6b, 0x53, 0x37, 0x51, 0x59, 0x58, 0x6a, 0x7a, 0x6b, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x47, 0x42, 0x6e, 0x4b, 0x4a, 0x52, 0x76, 0x44, 0x6b, 0x68, 0x6a, 0x36, 0x7a, 0x48, 0x64, 0x36, 0x6d, 0x63, 0x59, 0x31, 0x59, 0x6c, 0x39, 0x50, 0x4d, 0x57, 0x4c, 0x53, 0x6e, 0x2f, 0x70, 0x76, 0x74, 0x73, 0x72, 0x0a, 0x46, 0x39, 0x2b, 0x77, 0x58, 0x33, 0x4e, 0x33, 0x4b, 0x6a, 0x49, 0x54, 0x4f, 0x59, 0x46, 0x6e, 0x51, 0x6f, 0x51, 0x6a, 0x38, 0x6b, 0x56, 0x6e, 0x4e, 0x65, 0x79, 0x49, 0x76, 0x2f, 0x69, 0x50, 0x73, 0x47, 0x45, 0x4d, 0x4e, 0x4b, 0x53, 0x75, 0x49, 0x45, 0x79, 0x45, 0x78, 0x74, 0x76, 0x34, 0x4e, 0x65, 0x46, 0x32, 0x32, 0x64, 0x2b, 0x6d, 0x51, 0x72, 0x76, 0x48, 0x52, 0x41, 0x69, 0x47, 0x66, 0x7a, 0x5a, 0x30, 0x4a, 0x46, 0x72, 0x61, 0x62, 0x41, 0x30, 0x55, 0x0a, 0x57, 0x54, 0x57, 0x39, 0x38, 0x6b, 0x6e, 0x64, 0x74, 0x68, 0x2f, 0x4a, 0x73, 0x77, 0x31, 0x48, 0x4b, 0x6a, 0x32, 0x5a, 0x4c, 0x37, 0x74, 0x63, 0x75, 0x37, 0x58, 0x55, 0x49, 0x4f, 0x47, 0x5a, 0x58, 0x31, 0x4e, 0x47, 0x46, 0x64, 0x74, 0x6f, 0x6d, 0x2f, 0x44, 0x7a, 0x4d, 0x4e, 0x55, 0x2b, 0x4d, 0x65, 0x4b, 0x4e, 0x68, 0x4a, 0x37, 0x6a, 0x69, 0x74, 0x72, 0x61, 0x6c, 0x6a, 0x34, 0x31, 0x45, 0x36, 0x56, 0x66, 0x38, 0x50, 0x6c, 0x77, 0x55, 0x48, 0x42, 0x48, 0x0a, 0x51, 0x52, 0x46, 0x58, 0x47, 0x55, 0x37, 0x41, 0x6a, 0x36, 0x34, 0x47, 0x78, 0x4a, 0x55, 0x54, 0x46, 0x79, 0x38, 0x62, 0x4a, 0x5a, 0x39, 0x31, 0x38, 0x72, 0x47, 0x4f, 0x6d, 0x61, 0x46, 0x76, 0x45, 0x37, 0x46, 0x42, 0x63, 0x66, 0x36, 0x49, 0x4b, 0x73, 0x68, 0x50, 0x45, 0x43, 0x42, 0x56, 0x31, 0x2f, 0x4d, 0x55, 0x52, 0x65, 0x58, 0x67, 0x52, 0x50, 0x54, 0x71, 0x68, 0x35, 0x55, 0x79, 0x6b, 0x77, 0x37, 0x2b, 0x55, 0x30, 0x62, 0x36, 0x4c, 0x4a, 0x33, 0x2f, 0x0a, 0x69, 0x79, 0x4b, 0x35, 0x53, 0x39, 0x6b, 0x4a, 0x52, 0x61, 0x54, 0x65, 0x70, 0x4c, 0x69, 0x61, 0x57, 0x4e, 0x30, 0x62, 0x66, 0x56, 0x4b, 0x66, 0x6a, 0x6c, 0x6c, 0x44, 0x69, 0x49, 0x47, 0x6b, 0x6e, 0x69, 0x62, 0x56, 0x62, 0x36, 0x33, 0x64, 0x44, 0x63, 0x59, 0x33, 0x66, 0x65, 0x30, 0x44, 0x6b, 0x68, 0x76, 0x6c, 0x64, 0x31, 0x39, 0x32, 0x37, 0x6a, 0x79, 0x4e, 0x78, 0x46, 0x31, 0x57, 0x57, 0x36, 0x4c, 0x5a, 0x5a, 0x6d, 0x36, 0x7a, 0x4e, 0x54, 0x66, 0x6c, 0x0a, 0x4d, 0x72, 0x59, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x47, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x50, 0x7a, 0x43, 0x43, 0x41, 0x63, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x42, 0x56, 0x56, 0x57, 0x76, 0x50, 0x4a, 0x65, 0x70, 0x44, 0x55, 0x31, 0x77, 0x36, 0x51, 0x50, 0x31, 0x61, 0x74, 0x46, 0x63, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x68, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4d, 0x53, 0x41, 0x77, 0x48, 0x67, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x64, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x48, 0x4d, 0x7a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x7a, 0x41, 0x34, 0x4d, 0x44, 0x45, 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4f, 0x44, 0x41, 0x78, 0x4d, 0x54, 0x55, 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x0a, 0x4d, 0x44, 0x42, 0x61, 0x4d, 0x47, 0x45, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x78, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x45, 0x48, 0x64, 0x33, 0x64, 0x79, 0x35, 0x6b, 0x0a, 0x61, 0x57, 0x64, 0x70, 0x59, 0x32, 0x56, 0x79, 0x64, 0x43, 0x35, 0x6a, 0x62, 0x32, 0x30, 0x78, 0x49, 0x44, 0x41, 0x65, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x46, 0x30, 0x52, 0x70, 0x5a, 0x32, 0x6c, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x63, 0x7a, 0x4d, 0x48, 0x59, 0x77, 0x45, 0x41, 0x59, 0x48, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x43, 0x0a, 0x41, 0x51, 0x59, 0x46, 0x4b, 0x34, 0x45, 0x45, 0x41, 0x43, 0x49, 0x44, 0x59, 0x67, 0x41, 0x45, 0x33, 0x61, 0x66, 0x5a, 0x75, 0x34, 0x71, 0x34, 0x43, 0x2f, 0x73, 0x4c, 0x66, 0x79, 0x48, 0x53, 0x38, 0x4c, 0x36, 0x2b, 0x63, 0x2f, 0x4d, 0x7a, 0x58, 0x52, 0x71, 0x38, 0x4e, 0x4f, 0x72, 0x65, 0x78, 0x70, 0x75, 0x38, 0x30, 0x4a, 0x58, 0x32, 0x38, 0x4d, 0x7a, 0x51, 0x43, 0x37, 0x70, 0x68, 0x57, 0x31, 0x46, 0x47, 0x66, 0x70, 0x34, 0x74, 0x6e, 0x2b, 0x36, 0x4f, 0x0a, 0x59, 0x77, 0x77, 0x58, 0x37, 0x41, 0x64, 0x77, 0x39, 0x63, 0x2b, 0x45, 0x4c, 0x6b, 0x43, 0x44, 0x6e, 0x4f, 0x67, 0x2f, 0x51, 0x57, 0x30, 0x37, 0x72, 0x64, 0x4f, 0x6b, 0x46, 0x46, 0x6b, 0x32, 0x65, 0x4a, 0x30, 0x44, 0x51, 0x2b, 0x34, 0x51, 0x45, 0x32, 0x78, 0x79, 0x33, 0x71, 0x36, 0x49, 0x70, 0x36, 0x46, 0x72, 0x74, 0x55, 0x50, 0x4f, 0x5a, 0x39, 0x77, 0x6a, 0x2f, 0x77, 0x4d, 0x63, 0x6f, 0x2b, 0x49, 0x2b, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x73, 0x39, 0x74, 0x49, 0x70, 0x50, 0x6d, 0x68, 0x78, 0x64, 0x69, 0x75, 0x4e, 0x6b, 0x48, 0x4d, 0x45, 0x57, 0x4e, 0x70, 0x0a, 0x59, 0x69, 0x6d, 0x38, 0x53, 0x38, 0x59, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x4d, 0x44, 0x61, 0x41, 0x41, 0x77, 0x5a, 0x51, 0x49, 0x78, 0x41, 0x4b, 0x32, 0x38, 0x38, 0x6d, 0x77, 0x2f, 0x45, 0x6b, 0x72, 0x52, 0x4c, 0x54, 0x6e, 0x44, 0x43, 0x67, 0x6d, 0x58, 0x63, 0x2f, 0x53, 0x49, 0x4e, 0x6f, 0x79, 0x49, 0x4a, 0x37, 0x76, 0x6d, 0x69, 0x49, 0x31, 0x51, 0x68, 0x61, 0x64, 0x6a, 0x2b, 0x5a, 0x34, 0x79, 0x0a, 0x33, 0x6d, 0x61, 0x54, 0x44, 0x2f, 0x48, 0x4d, 0x73, 0x51, 0x6d, 0x50, 0x33, 0x57, 0x79, 0x72, 0x2b, 0x6d, 0x74, 0x2f, 0x6f, 0x41, 0x49, 0x77, 0x4f, 0x57, 0x5a, 0x62, 0x77, 0x6d, 0x53, 0x4e, 0x75, 0x4a, 0x35, 0x51, 0x33, 0x4b, 0x6a, 0x56, 0x53, 0x61, 0x4c, 0x74, 0x78, 0x39, 0x7a, 0x52, 0x53, 0x58, 0x38, 0x58, 0x41, 0x62, 0x6a, 0x49, 0x68, 0x6f, 0x39, 0x4f, 0x6a, 0x49, 0x67, 0x72, 0x71, 0x4a, 0x71, 0x70, 0x69, 0x73, 0x58, 0x52, 0x41, 0x4c, 0x33, 0x34, 0x0a, 0x56, 0x4f, 0x4b, 0x61, 0x35, 0x56, 0x74, 0x38, 0x73, 0x79, 0x63, 0x58, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x47, 0x34, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x6b, 0x44, 0x43, 0x43, 0x41, 0x33, 0x69, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x42, 0x5a, 0x73, 0x62, 0x56, 0x35, 0x36, 0x4f, 0x49, 0x54, 0x4c, 0x69, 0x4f, 0x51, 0x65, 0x39, 0x70, 0x33, 0x64, 0x31, 0x58, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x44, 0x42, 0x69, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4d, 0x53, 0x45, 0x77, 0x0a, 0x48, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x68, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x47, 0x56, 0x6b, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x52, 0x7a, 0x51, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x4d, 0x77, 0x4f, 0x44, 0x41, 0x78, 0x4d, 0x54, 0x49, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x67, 0x77, 0x4d, 0x54, 0x45, 0x31, 0x0a, 0x4d, 0x54, 0x49, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x42, 0x69, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x42, 0x33, 0x0a, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x47, 0x6c, 0x6e, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4d, 0x53, 0x45, 0x77, 0x48, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x68, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x47, 0x56, 0x6b, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x52, 0x7a, 0x51, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x0a, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x2f, 0x35, 0x70, 0x42, 0x7a, 0x61, 0x4e, 0x36, 0x37, 0x35, 0x46, 0x31, 0x4b, 0x50, 0x44, 0x41, 0x69, 0x4d, 0x47, 0x6b, 0x7a, 0x37, 0x4d, 0x4b, 0x6e, 0x4a, 0x53, 0x37, 0x4a, 0x49, 0x54, 0x33, 0x79, 0x69, 0x74, 0x68, 0x5a, 0x77, 0x75, 0x45, 0x70, 0x0a, 0x70, 0x7a, 0x31, 0x59, 0x71, 0x33, 0x61, 0x61, 0x7a, 0x61, 0x35, 0x37, 0x47, 0x34, 0x51, 0x4e, 0x78, 0x44, 0x41, 0x66, 0x38, 0x78, 0x75, 0x6b, 0x4f, 0x42, 0x62, 0x72, 0x56, 0x73, 0x61, 0x58, 0x62, 0x52, 0x32, 0x72, 0x73, 0x6e, 0x6e, 0x79, 0x79, 0x68, 0x48, 0x53, 0x35, 0x46, 0x2f, 0x57, 0x42, 0x54, 0x78, 0x53, 0x44, 0x31, 0x49, 0x66, 0x78, 0x70, 0x34, 0x56, 0x70, 0x58, 0x36, 0x2b, 0x6e, 0x36, 0x6c, 0x58, 0x46, 0x6c, 0x6c, 0x56, 0x63, 0x71, 0x39, 0x6f, 0x0a, 0x6b, 0x33, 0x44, 0x43, 0x73, 0x72, 0x70, 0x31, 0x6d, 0x57, 0x70, 0x7a, 0x4d, 0x70, 0x54, 0x52, 0x45, 0x45, 0x51, 0x51, 0x4c, 0x74, 0x2b, 0x43, 0x38, 0x77, 0x65, 0x45, 0x35, 0x6e, 0x51, 0x37, 0x62, 0x58, 0x48, 0x69, 0x4c, 0x51, 0x77, 0x62, 0x37, 0x69, 0x44, 0x56, 0x79, 0x53, 0x41, 0x64, 0x59, 0x79, 0x6b, 0x74, 0x7a, 0x75, 0x78, 0x65, 0x54, 0x73, 0x69, 0x54, 0x2b, 0x43, 0x46, 0x68, 0x6d, 0x7a, 0x54, 0x72, 0x42, 0x63, 0x5a, 0x65, 0x37, 0x46, 0x73, 0x61, 0x0a, 0x76, 0x4f, 0x76, 0x4a, 0x7a, 0x38, 0x32, 0x73, 0x4e, 0x45, 0x42, 0x66, 0x73, 0x58, 0x70, 0x6d, 0x37, 0x6e, 0x66, 0x49, 0x53, 0x4b, 0x68, 0x6d, 0x56, 0x31, 0x65, 0x66, 0x56, 0x46, 0x69, 0x4f, 0x44, 0x43, 0x75, 0x33, 0x54, 0x36, 0x63, 0x77, 0x32, 0x56, 0x62, 0x75, 0x79, 0x6e, 0x74, 0x64, 0x34, 0x36, 0x33, 0x4a, 0x54, 0x31, 0x37, 0x6c, 0x4e, 0x65, 0x63, 0x78, 0x79, 0x39, 0x71, 0x54, 0x58, 0x74, 0x79, 0x4f, 0x6a, 0x34, 0x44, 0x61, 0x74, 0x70, 0x47, 0x59, 0x0a, 0x51, 0x4a, 0x42, 0x35, 0x77, 0x33, 0x6a, 0x48, 0x74, 0x72, 0x48, 0x45, 0x74, 0x57, 0x6f, 0x59, 0x4f, 0x41, 0x4d, 0x51, 0x6a, 0x64, 0x6a, 0x55, 0x4e, 0x36, 0x51, 0x75, 0x42, 0x58, 0x32, 0x49, 0x39, 0x59, 0x49, 0x2b, 0x45, 0x4a, 0x46, 0x77, 0x71, 0x31, 0x57, 0x43, 0x51, 0x54, 0x4c, 0x58, 0x32, 0x77, 0x52, 0x7a, 0x4b, 0x6d, 0x36, 0x52, 0x41, 0x58, 0x77, 0x68, 0x54, 0x4e, 0x53, 0x38, 0x72, 0x68, 0x73, 0x44, 0x64, 0x56, 0x31, 0x34, 0x5a, 0x74, 0x6b, 0x36, 0x0a, 0x4d, 0x55, 0x53, 0x61, 0x4d, 0x30, 0x43, 0x2f, 0x43, 0x4e, 0x64, 0x61, 0x53, 0x61, 0x54, 0x43, 0x35, 0x71, 0x6d, 0x67, 0x5a, 0x39, 0x32, 0x6b, 0x4a, 0x37, 0x79, 0x68, 0x54, 0x7a, 0x6d, 0x31, 0x45, 0x56, 0x67, 0x58, 0x39, 0x79, 0x52, 0x63, 0x52, 0x6f, 0x39, 0x6b, 0x39, 0x38, 0x46, 0x70, 0x69, 0x48, 0x61, 0x59, 0x64, 0x6a, 0x31, 0x5a, 0x58, 0x55, 0x4a, 0x32, 0x68, 0x34, 0x6d, 0x58, 0x61, 0x58, 0x70, 0x49, 0x38, 0x4f, 0x43, 0x69, 0x45, 0x68, 0x74, 0x6d, 0x0a, 0x6d, 0x6e, 0x54, 0x4b, 0x33, 0x6b, 0x73, 0x65, 0x35, 0x77, 0x35, 0x6a, 0x72, 0x75, 0x62, 0x55, 0x37, 0x35, 0x4b, 0x53, 0x4f, 0x70, 0x34, 0x39, 0x33, 0x41, 0x44, 0x6b, 0x52, 0x53, 0x57, 0x4a, 0x74, 0x70, 0x70, 0x45, 0x47, 0x53, 0x74, 0x2b, 0x77, 0x4a, 0x53, 0x30, 0x30, 0x6d, 0x46, 0x74, 0x36, 0x7a, 0x50, 0x5a, 0x78, 0x64, 0x39, 0x4c, 0x42, 0x41, 0x44, 0x4d, 0x66, 0x52, 0x79, 0x56, 0x77, 0x34, 0x2f, 0x33, 0x49, 0x62, 0x4b, 0x79, 0x45, 0x62, 0x65, 0x37, 0x0a, 0x66, 0x2f, 0x4c, 0x56, 0x6a, 0x48, 0x41, 0x73, 0x51, 0x57, 0x43, 0x71, 0x73, 0x57, 0x4d, 0x59, 0x52, 0x4a, 0x55, 0x61, 0x64, 0x6d, 0x4a, 0x2b, 0x39, 0x6f, 0x43, 0x77, 0x2b, 0x2b, 0x68, 0x6b, 0x70, 0x6a, 0x50, 0x52, 0x69, 0x51, 0x66, 0x68, 0x76, 0x62, 0x66, 0x6d, 0x51, 0x36, 0x51, 0x59, 0x75, 0x4b, 0x5a, 0x33, 0x41, 0x65, 0x45, 0x50, 0x6c, 0x41, 0x77, 0x68, 0x48, 0x62, 0x4a, 0x55, 0x4b, 0x53, 0x57, 0x4a, 0x62, 0x4f, 0x55, 0x4f, 0x55, 0x6c, 0x46, 0x48, 0x0a, 0x64, 0x4c, 0x34, 0x6d, 0x72, 0x4c, 0x5a, 0x42, 0x64, 0x64, 0x35, 0x36, 0x72, 0x46, 0x2b, 0x4e, 0x50, 0x38, 0x6d, 0x38, 0x30, 0x30, 0x45, 0x52, 0x45, 0x6c, 0x76, 0x6c, 0x45, 0x46, 0x44, 0x72, 0x4d, 0x63, 0x58, 0x4b, 0x63, 0x68, 0x59, 0x69, 0x43, 0x64, 0x39, 0x38, 0x54, 0x48, 0x55, 0x2f, 0x59, 0x2b, 0x77, 0x68, 0x58, 0x38, 0x51, 0x67, 0x55, 0x57, 0x74, 0x76, 0x73, 0x61, 0x75, 0x47, 0x69, 0x30, 0x2f, 0x43, 0x31, 0x6b, 0x56, 0x66, 0x6e, 0x53, 0x44, 0x38, 0x0a, 0x6f, 0x52, 0x37, 0x46, 0x77, 0x49, 0x2b, 0x69, 0x73, 0x58, 0x34, 0x4b, 0x4a, 0x70, 0x6e, 0x31, 0x35, 0x47, 0x6b, 0x76, 0x6d, 0x42, 0x30, 0x74, 0x39, 0x64, 0x6d, 0x70, 0x73, 0x68, 0x33, 0x6c, 0x47, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x0a, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x37, 0x4e, 0x66, 0x6a, 0x67, 0x74, 0x4a, 0x78, 0x58, 0x57, 0x52, 0x4d, 0x33, 0x79, 0x35, 0x6e, 0x50, 0x2b, 0x65, 0x36, 0x6d, 0x4b, 0x34, 0x63, 0x44, 0x30, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x44, 0x0a, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4c, 0x74, 0x68, 0x32, 0x58, 0x32, 0x70, 0x62, 0x4c, 0x34, 0x58, 0x78, 0x4a, 0x45, 0x62, 0x77, 0x36, 0x47, 0x69, 0x41, 0x49, 0x33, 0x6a, 0x5a, 0x47, 0x67, 0x50, 0x56, 0x73, 0x39, 0x33, 0x72, 0x6e, 0x44, 0x35, 0x2f, 0x5a, 0x70, 0x4b, 0x6d, 0x62, 0x6e, 0x4a, 0x65, 0x46, 0x77, 0x4d, 0x44, 0x46, 0x2f, 0x6b, 0x35, 0x68, 0x51, 0x70, 0x56, 0x67, 0x73, 0x32, 0x53, 0x56, 0x31, 0x45, 0x59, 0x2b, 0x43, 0x74, 0x6e, 0x4a, 0x59, 0x59, 0x0a, 0x5a, 0x68, 0x73, 0x6a, 0x44, 0x54, 0x31, 0x35, 0x36, 0x57, 0x31, 0x72, 0x31, 0x6c, 0x54, 0x34, 0x30, 0x6a, 0x7a, 0x42, 0x51, 0x30, 0x43, 0x75, 0x48, 0x56, 0x44, 0x31, 0x55, 0x76, 0x79, 0x51, 0x4f, 0x37, 0x75, 0x59, 0x6d, 0x57, 0x6c, 0x72, 0x78, 0x38, 0x47, 0x6e, 0x71, 0x47, 0x69, 0x6b, 0x4a, 0x39, 0x79, 0x64, 0x2b, 0x53, 0x65, 0x75, 0x4d, 0x49, 0x57, 0x35, 0x39, 0x6d, 0x64, 0x4e, 0x4f, 0x6a, 0x36, 0x50, 0x57, 0x54, 0x6b, 0x69, 0x55, 0x30, 0x54, 0x72, 0x0a, 0x79, 0x46, 0x30, 0x44, 0x79, 0x75, 0x31, 0x51, 0x65, 0x6e, 0x31, 0x69, 0x49, 0x51, 0x71, 0x41, 0x79, 0x48, 0x4e, 0x6d, 0x30, 0x61, 0x41, 0x46, 0x59, 0x46, 0x2f, 0x6f, 0x70, 0x62, 0x53, 0x6e, 0x72, 0x36, 0x6a, 0x33, 0x62, 0x54, 0x57, 0x63, 0x66, 0x46, 0x71, 0x4b, 0x31, 0x71, 0x49, 0x34, 0x6d, 0x66, 0x4e, 0x34, 0x69, 0x2f, 0x52, 0x4e, 0x30, 0x69, 0x41, 0x4c, 0x33, 0x67, 0x54, 0x75, 0x6a, 0x4a, 0x74, 0x48, 0x67, 0x58, 0x49, 0x4e, 0x77, 0x42, 0x51, 0x79, 0x0a, 0x37, 0x7a, 0x42, 0x5a, 0x4c, 0x71, 0x37, 0x67, 0x63, 0x66, 0x4a, 0x57, 0x35, 0x47, 0x71, 0x58, 0x62, 0x35, 0x4a, 0x51, 0x62, 0x5a, 0x61, 0x4e, 0x61, 0x48, 0x71, 0x61, 0x73, 0x6a, 0x59, 0x55, 0x65, 0x67, 0x62, 0x79, 0x4a, 0x4c, 0x6b, 0x4a, 0x45, 0x56, 0x44, 0x58, 0x43, 0x4c, 0x47, 0x34, 0x69, 0x58, 0x71, 0x45, 0x49, 0x32, 0x46, 0x43, 0x4b, 0x65, 0x57, 0x6a, 0x7a, 0x61, 0x49, 0x67, 0x51, 0x64, 0x66, 0x52, 0x6e, 0x47, 0x54, 0x5a, 0x36, 0x69, 0x61, 0x68, 0x0a, 0x69, 0x78, 0x54, 0x58, 0x54, 0x42, 0x6d, 0x79, 0x55, 0x45, 0x46, 0x78, 0x50, 0x54, 0x39, 0x4e, 0x63, 0x43, 0x4f, 0x47, 0x44, 0x45, 0x72, 0x63, 0x67, 0x64, 0x4c, 0x4d, 0x4d, 0x70, 0x53, 0x45, 0x44, 0x51, 0x67, 0x4a, 0x6c, 0x78, 0x78, 0x50, 0x77, 0x4f, 0x35, 0x72, 0x49, 0x48, 0x51, 0x77, 0x30, 0x75, 0x41, 0x35, 0x4e, 0x42, 0x43, 0x46, 0x49, 0x52, 0x55, 0x42, 0x43, 0x4f, 0x68, 0x56, 0x4d, 0x74, 0x35, 0x78, 0x53, 0x64, 0x6b, 0x6f, 0x46, 0x31, 0x42, 0x4e, 0x0a, 0x35, 0x72, 0x35, 0x4e, 0x30, 0x58, 0x57, 0x73, 0x30, 0x4d, 0x72, 0x37, 0x51, 0x62, 0x68, 0x44, 0x70, 0x61, 0x72, 0x54, 0x77, 0x77, 0x56, 0x45, 0x54, 0x79, 0x77, 0x32, 0x6d, 0x2b, 0x4c, 0x36, 0x34, 0x6b, 0x57, 0x34, 0x49, 0x31, 0x4e, 0x73, 0x42, 0x6d, 0x39, 0x6e, 0x56, 0x58, 0x39, 0x47, 0x74, 0x55, 0x77, 0x2f, 0x62, 0x69, 0x68, 0x61, 0x65, 0x53, 0x62, 0x53, 0x70, 0x4b, 0x68, 0x69, 0x6c, 0x39, 0x49, 0x65, 0x34, 0x75, 0x31, 0x4b, 0x69, 0x37, 0x77, 0x62, 0x0a, 0x2f, 0x55, 0x64, 0x4b, 0x44, 0x64, 0x39, 0x6e, 0x5a, 0x6e, 0x36, 0x79, 0x57, 0x30, 0x48, 0x51, 0x4f, 0x2b, 0x54, 0x30, 0x4f, 0x2f, 0x51, 0x45, 0x59, 0x2b, 0x6e, 0x76, 0x77, 0x6c, 0x51, 0x41, 0x55, 0x61, 0x43, 0x4b, 0x4b, 0x73, 0x6e, 0x4f, 0x65, 0x4d, 0x7a, 0x56, 0x36, 0x6f, 0x63, 0x45, 0x47, 0x4c, 0x50, 0x4f, 0x72, 0x30, 0x6d, 0x49, 0x72, 0x2f, 0x4f, 0x53, 0x6d, 0x62, 0x61, 0x7a, 0x35, 0x6d, 0x45, 0x50, 0x30, 0x6f, 0x55, 0x41, 0x35, 0x31, 0x41, 0x61, 0x0a, 0x35, 0x42, 0x75, 0x56, 0x6e, 0x52, 0x6d, 0x68, 0x75, 0x5a, 0x79, 0x78, 0x6d, 0x37, 0x45, 0x41, 0x48, 0x75, 0x2f, 0x51, 0x44, 0x30, 0x39, 0x43, 0x62, 0x4d, 0x6b, 0x4b, 0x76, 0x4f, 0x35, 0x44, 0x2b, 0x6a, 0x70, 0x78, 0x70, 0x63, 0x68, 0x4e, 0x4a, 0x71, 0x55, 0x31, 0x2f, 0x59, 0x6c, 0x64, 0x76, 0x49, 0x56, 0x69, 0x48, 0x54, 0x4c, 0x53, 0x6f, 0x43, 0x74, 0x55, 0x37, 0x5a, 0x70, 0x58, 0x77, 0x64, 0x76, 0x36, 0x45, 0x4d, 0x38, 0x5a, 0x74, 0x34, 0x74, 0x4b, 0x0a, 0x47, 0x34, 0x38, 0x42, 0x74, 0x69, 0x65, 0x56, 0x55, 0x2b, 0x69, 0x32, 0x69, 0x57, 0x31, 0x62, 0x76, 0x47, 0x6a, 0x55, 0x49, 0x2b, 0x69, 0x4c, 0x55, 0x61, 0x4a, 0x57, 0x2b, 0x66, 0x43, 0x6d, 0x67, 0x4b, 0x44, 0x57, 0x48, 0x72, 0x4f, 0x38, 0x44, 0x77, 0x39, 0x54, 0x64, 0x53, 0x6d, 0x71, 0x36, 0x68, 0x4e, 0x33, 0x35, 0x4e, 0x36, 0x4d, 0x67, 0x53, 0x47, 0x74, 0x42, 0x78, 0x42, 0x48, 0x45, 0x61, 0x32, 0x48, 0x50, 0x51, 0x66, 0x52, 0x64, 0x62, 0x7a, 0x50, 0x0a, 0x38, 0x32, 0x5a, 0x2b, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x32, 0x44, 0x43, 0x43, 0x41, 0x38, 0x43, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x54, 0x4b, 0x72, 0x35, 0x79, 0x74, 0x74, 0x6a, 0x62, 0x2b, 0x41, 0x66, 0x39, 0x30, 0x37, 0x59, 0x57, 0x77, 0x4f, 0x47, 0x6e, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x44, 0x43, 0x42, 0x68, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x30, 0x49, 0x78, 0x47, 0x7a, 0x41, 0x5a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x45, 0x6b, 0x64, 0x79, 0x5a, 0x57, 0x46, 0x30, 0x5a, 0x58, 0x49, 0x67, 0x54, 0x57, 0x46, 0x75, 0x59, 0x32, 0x68, 0x6c, 0x63, 0x33, 0x52, 0x6c, 0x63, 0x6a, 0x45, 0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x78, 0x4d, 0x48, 0x55, 0x32, 0x46, 0x73, 0x5a, 0x6d, 0x39, 0x79, 0x5a, 0x44, 0x45, 0x61, 0x4d, 0x42, 0x67, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x52, 0x51, 0x30, 0x39, 0x4e, 0x54, 0x30, 0x52, 0x50, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x49, 0x6b, 0x4e, 0x50, 0x54, 0x55, 0x39, 0x45, 0x54, 0x79, 0x42, 0x53, 0x55, 0x30, 0x45, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x0a, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x41, 0x77, 0x4d, 0x54, 0x45, 0x35, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x67, 0x77, 0x4d, 0x54, 0x45, 0x34, 0x4d, 0x6a, 0x4d, 0x31, 0x4f, 0x54, 0x55, 0x35, 0x57, 0x6a, 0x43, 0x42, 0x68, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x0a, 0x52, 0x30, 0x49, 0x78, 0x47, 0x7a, 0x41, 0x5a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x45, 0x6b, 0x64, 0x79, 0x5a, 0x57, 0x46, 0x30, 0x5a, 0x58, 0x49, 0x67, 0x54, 0x57, 0x46, 0x75, 0x59, 0x32, 0x68, 0x6c, 0x63, 0x33, 0x52, 0x6c, 0x63, 0x6a, 0x45, 0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x78, 0x4d, 0x48, 0x55, 0x32, 0x46, 0x73, 0x5a, 0x6d, 0x39, 0x79, 0x5a, 0x44, 0x45, 0x61, 0x4d, 0x42, 0x67, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x43, 0x68, 0x4d, 0x52, 0x51, 0x30, 0x39, 0x4e, 0x54, 0x30, 0x52, 0x50, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x45, 0x78, 0x70, 0x62, 0x57, 0x6c, 0x30, 0x5a, 0x57, 0x51, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x49, 0x6b, 0x4e, 0x50, 0x54, 0x55, 0x39, 0x45, 0x54, 0x79, 0x42, 0x53, 0x55, 0x30, 0x45, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x0a, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x52, 0x36, 0x46, 0x53, 0x53, 0x30, 0x67, 0x70, 0x57, 0x73, 0x61, 0x77, 0x4e, 0x4a, 0x4e, 0x33, 0x46, 0x7a, 0x30, 0x52, 0x6e, 0x0a, 0x64, 0x4a, 0x6b, 0x72, 0x4e, 0x36, 0x4e, 0x39, 0x49, 0x33, 0x41, 0x41, 0x63, 0x62, 0x78, 0x54, 0x33, 0x38, 0x54, 0x36, 0x4b, 0x68, 0x4b, 0x50, 0x53, 0x33, 0x38, 0x51, 0x56, 0x72, 0x32, 0x66, 0x63, 0x48, 0x4b, 0x33, 0x59, 0x58, 0x2f, 0x4a, 0x53, 0x77, 0x38, 0x58, 0x70, 0x7a, 0x33, 0x6a, 0x73, 0x41, 0x52, 0x68, 0x37, 0x76, 0x38, 0x52, 0x6c, 0x38, 0x66, 0x30, 0x68, 0x6a, 0x34, 0x4b, 0x2b, 0x6a, 0x35, 0x63, 0x2b, 0x5a, 0x50, 0x6d, 0x4e, 0x48, 0x72, 0x5a, 0x0a, 0x46, 0x47, 0x76, 0x6e, 0x6e, 0x4c, 0x4f, 0x46, 0x6f, 0x49, 0x4a, 0x36, 0x64, 0x71, 0x39, 0x78, 0x6b, 0x4e, 0x66, 0x73, 0x2f, 0x51, 0x33, 0x36, 0x6e, 0x47, 0x7a, 0x36, 0x33, 0x37, 0x43, 0x43, 0x39, 0x42, 0x52, 0x2b, 0x2b, 0x62, 0x37, 0x45, 0x70, 0x69, 0x39, 0x50, 0x66, 0x35, 0x6c, 0x2f, 0x74, 0x66, 0x78, 0x6e, 0x51, 0x33, 0x4b, 0x39, 0x44, 0x41, 0x44, 0x57, 0x69, 0x65, 0x74, 0x72, 0x4c, 0x4e, 0x50, 0x74, 0x6a, 0x35, 0x67, 0x63, 0x46, 0x4b, 0x74, 0x2b, 0x0a, 0x35, 0x65, 0x4e, 0x75, 0x2f, 0x4e, 0x69, 0x6f, 0x35, 0x4a, 0x49, 0x6b, 0x32, 0x6b, 0x4e, 0x72, 0x59, 0x72, 0x68, 0x56, 0x2f, 0x65, 0x72, 0x42, 0x76, 0x47, 0x79, 0x32, 0x69, 0x2f, 0x4d, 0x4f, 0x6a, 0x5a, 0x72, 0x6b, 0x6d, 0x32, 0x78, 0x70, 0x6d, 0x66, 0x68, 0x34, 0x53, 0x44, 0x42, 0x46, 0x31, 0x61, 0x33, 0x68, 0x44, 0x54, 0x78, 0x46, 0x59, 0x50, 0x77, 0x79, 0x6c, 0x6c, 0x45, 0x6e, 0x76, 0x47, 0x66, 0x44, 0x79, 0x69, 0x36, 0x32, 0x61, 0x2b, 0x70, 0x47, 0x0a, 0x78, 0x38, 0x63, 0x67, 0x6f, 0x4c, 0x45, 0x66, 0x5a, 0x64, 0x35, 0x49, 0x43, 0x4c, 0x71, 0x6b, 0x54, 0x71, 0x6e, 0x79, 0x67, 0x30, 0x59, 0x33, 0x68, 0x4f, 0x76, 0x6f, 0x7a, 0x49, 0x46, 0x49, 0x51, 0x32, 0x64, 0x4f, 0x63, 0x69, 0x71, 0x62, 0x58, 0x4c, 0x31, 0x4d, 0x47, 0x79, 0x69, 0x4b, 0x58, 0x43, 0x4a, 0x37, 0x74, 0x4b, 0x75, 0x59, 0x32, 0x65, 0x37, 0x67, 0x55, 0x59, 0x50, 0x44, 0x43, 0x55, 0x5a, 0x4f, 0x62, 0x54, 0x36, 0x5a, 0x2b, 0x70, 0x55, 0x58, 0x0a, 0x32, 0x6e, 0x77, 0x7a, 0x56, 0x30, 0x45, 0x38, 0x6a, 0x56, 0x48, 0x74, 0x43, 0x37, 0x5a, 0x63, 0x72, 0x79, 0x78, 0x6a, 0x47, 0x74, 0x39, 0x58, 0x79, 0x44, 0x2b, 0x38, 0x36, 0x56, 0x33, 0x45, 0x6d, 0x36, 0x39, 0x46, 0x6d, 0x65, 0x4b, 0x6a, 0x57, 0x69, 0x53, 0x30, 0x75, 0x71, 0x6c, 0x57, 0x50, 0x63, 0x39, 0x76, 0x71, 0x76, 0x39, 0x4a, 0x57, 0x4c, 0x37, 0x77, 0x71, 0x50, 0x2f, 0x30, 0x75, 0x4b, 0x33, 0x70, 0x4e, 0x2f, 0x75, 0x36, 0x75, 0x50, 0x51, 0x4c, 0x0a, 0x4f, 0x76, 0x6e, 0x6f, 0x51, 0x30, 0x49, 0x65, 0x69, 0x64, 0x69, 0x45, 0x79, 0x78, 0x50, 0x78, 0x32, 0x62, 0x76, 0x68, 0x69, 0x57, 0x43, 0x34, 0x6a, 0x43, 0x68, 0x57, 0x72, 0x42, 0x51, 0x64, 0x6e, 0x41, 0x72, 0x6e, 0x63, 0x65, 0x76, 0x50, 0x44, 0x74, 0x30, 0x39, 0x71, 0x5a, 0x61, 0x68, 0x53, 0x4c, 0x30, 0x38, 0x39, 0x36, 0x2b, 0x31, 0x44, 0x53, 0x4a, 0x4d, 0x77, 0x42, 0x47, 0x42, 0x37, 0x46, 0x59, 0x37, 0x39, 0x74, 0x4f, 0x69, 0x34, 0x6c, 0x75, 0x33, 0x0a, 0x73, 0x67, 0x51, 0x69, 0x55, 0x70, 0x57, 0x41, 0x6b, 0x32, 0x6e, 0x6f, 0x6a, 0x6b, 0x78, 0x6c, 0x38, 0x5a, 0x45, 0x44, 0x4c, 0x58, 0x42, 0x30, 0x41, 0x75, 0x71, 0x4c, 0x5a, 0x78, 0x55, 0x70, 0x61, 0x56, 0x49, 0x43, 0x75, 0x39, 0x66, 0x66, 0x55, 0x47, 0x70, 0x56, 0x52, 0x72, 0x2b, 0x67, 0x6f, 0x79, 0x68, 0x68, 0x66, 0x33, 0x44, 0x51, 0x77, 0x36, 0x4b, 0x71, 0x4c, 0x43, 0x47, 0x71, 0x52, 0x38, 0x34, 0x6f, 0x6e, 0x41, 0x5a, 0x46, 0x64, 0x72, 0x2b, 0x43, 0x0a, 0x47, 0x43, 0x65, 0x30, 0x31, 0x61, 0x36, 0x30, 0x79, 0x31, 0x44, 0x6d, 0x61, 0x2f, 0x52, 0x4d, 0x68, 0x6e, 0x45, 0x77, 0x36, 0x61, 0x62, 0x66, 0x46, 0x6f, 0x62, 0x67, 0x32, 0x50, 0x39, 0x41, 0x33, 0x66, 0x76, 0x51, 0x51, 0x6f, 0x68, 0x2f, 0x6f, 0x7a, 0x4d, 0x36, 0x4c, 0x6c, 0x77, 0x65, 0x51, 0x52, 0x47, 0x42, 0x59, 0x38, 0x34, 0x59, 0x63, 0x57, 0x73, 0x72, 0x37, 0x4b, 0x61, 0x4b, 0x74, 0x7a, 0x46, 0x63, 0x4f, 0x6d, 0x70, 0x48, 0x34, 0x4d, 0x4e, 0x35, 0x0a, 0x57, 0x64, 0x59, 0x67, 0x47, 0x71, 0x2f, 0x79, 0x61, 0x70, 0x69, 0x71, 0x63, 0x72, 0x78, 0x58, 0x53, 0x74, 0x4a, 0x4c, 0x6e, 0x62, 0x73, 0x51, 0x2f, 0x4c, 0x42, 0x4d, 0x51, 0x65, 0x58, 0x74, 0x48, 0x54, 0x31, 0x65, 0x4b, 0x4a, 0x32, 0x63, 0x7a, 0x4c, 0x2b, 0x7a, 0x55, 0x64, 0x71, 0x6e, 0x52, 0x2b, 0x57, 0x45, 0x55, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x0a, 0x46, 0x67, 0x51, 0x55, 0x75, 0x36, 0x39, 0x2b, 0x41, 0x6a, 0x33, 0x36, 0x70, 0x76, 0x45, 0x38, 0x68, 0x49, 0x36, 0x74, 0x37, 0x6a, 0x69, 0x59, 0x37, 0x4e, 0x6b, 0x79, 0x4d, 0x74, 0x51, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x0a, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x41, 0x72, 0x78, 0x31, 0x55, 0x61, 0x45, 0x74, 0x36, 0x35, 0x52, 0x75, 0x32, 0x79, 0x79, 0x54, 0x55, 0x45, 0x55, 0x41, 0x4a, 0x4e, 0x4d, 0x6e, 0x4d, 0x76, 0x6c, 0x77, 0x46, 0x54, 0x50, 0x6f, 0x43, 0x57, 0x4f, 0x41, 0x76, 0x6e, 0x39, 0x73, 0x4b, 0x49, 0x4e, 0x39, 0x53, 0x43, 0x59, 0x50, 0x42, 0x4d, 0x74, 0x0a, 0x72, 0x46, 0x61, 0x69, 0x73, 0x4e, 0x5a, 0x2b, 0x45, 0x5a, 0x4c, 0x70, 0x4c, 0x72, 0x71, 0x65, 0x4c, 0x70, 0x70, 0x79, 0x73, 0x62, 0x30, 0x5a, 0x52, 0x47, 0x78, 0x68, 0x4e, 0x61, 0x4b, 0x61, 0x74, 0x42, 0x59, 0x53, 0x61, 0x56, 0x71, 0x4d, 0x34, 0x64, 0x63, 0x2b, 0x70, 0x42, 0x72, 0x6f, 0x4c, 0x77, 0x50, 0x30, 0x72, 0x6d, 0x45, 0x64, 0x45, 0x42, 0x73, 0x71, 0x70, 0x49, 0x74, 0x36, 0x78, 0x66, 0x34, 0x46, 0x70, 0x75, 0x48, 0x41, 0x31, 0x73, 0x6a, 0x2b, 0x0a, 0x6e, 0x71, 0x36, 0x50, 0x4b, 0x37, 0x6f, 0x39, 0x6d, 0x66, 0x6a, 0x59, 0x63, 0x77, 0x6c, 0x59, 0x52, 0x6d, 0x36, 0x6d, 0x6e, 0x50, 0x54, 0x58, 0x4a, 0x39, 0x4f, 0x56, 0x32, 0x6a, 0x65, 0x44, 0x63, 0x68, 0x7a, 0x54, 0x63, 0x2b, 0x43, 0x69, 0x52, 0x35, 0x6b, 0x44, 0x4f, 0x46, 0x33, 0x56, 0x53, 0x58, 0x6b, 0x41, 0x4b, 0x52, 0x7a, 0x48, 0x37, 0x4a, 0x73, 0x67, 0x48, 0x41, 0x63, 0x6b, 0x61, 0x56, 0x64, 0x34, 0x73, 0x6a, 0x6e, 0x38, 0x4f, 0x6f, 0x53, 0x67, 0x0a, 0x74, 0x5a, 0x78, 0x38, 0x6a, 0x62, 0x38, 0x75, 0x6b, 0x32, 0x49, 0x6e, 0x74, 0x7a, 0x6e, 0x61, 0x46, 0x78, 0x69, 0x75, 0x76, 0x54, 0x77, 0x4a, 0x61, 0x50, 0x2b, 0x45, 0x6d, 0x7a, 0x7a, 0x56, 0x31, 0x67, 0x73, 0x44, 0x34, 0x31, 0x65, 0x65, 0x46, 0x50, 0x66, 0x52, 0x36, 0x30, 0x2f, 0x49, 0x76, 0x59, 0x63, 0x6a, 0x74, 0x37, 0x5a, 0x4a, 0x51, 0x33, 0x6d, 0x46, 0x58, 0x4c, 0x72, 0x72, 0x6b, 0x67, 0x75, 0x68, 0x78, 0x75, 0x68, 0x6f, 0x71, 0x45, 0x77, 0x57, 0x0a, 0x73, 0x52, 0x71, 0x5a, 0x43, 0x75, 0x68, 0x54, 0x4c, 0x4a, 0x4b, 0x37, 0x6f, 0x51, 0x6b, 0x59, 0x64, 0x51, 0x78, 0x6c, 0x71, 0x48, 0x76, 0x4c, 0x49, 0x37, 0x63, 0x61, 0x77, 0x69, 0x69, 0x46, 0x77, 0x78, 0x76, 0x2f, 0x30, 0x43, 0x74, 0x69, 0x37, 0x36, 0x52, 0x37, 0x43, 0x5a, 0x47, 0x59, 0x5a, 0x34, 0x77, 0x55, 0x41, 0x63, 0x31, 0x6f, 0x42, 0x6d, 0x70, 0x6a, 0x49, 0x58, 0x55, 0x44, 0x67, 0x49, 0x69, 0x4b, 0x62, 0x6f, 0x48, 0x47, 0x68, 0x66, 0x4b, 0x70, 0x0a, 0x70, 0x43, 0x33, 0x6e, 0x39, 0x4b, 0x55, 0x6b, 0x45, 0x45, 0x65, 0x44, 0x79, 0x73, 0x33, 0x30, 0x6a, 0x58, 0x6c, 0x59, 0x73, 0x51, 0x61, 0x62, 0x35, 0x78, 0x6f, 0x71, 0x32, 0x5a, 0x30, 0x42, 0x31, 0x35, 0x52, 0x39, 0x37, 0x51, 0x4e, 0x4b, 0x79, 0x76, 0x44, 0x62, 0x36, 0x4b, 0x6b, 0x42, 0x50, 0x76, 0x56, 0x57, 0x6d, 0x63, 0x6b, 0x65, 0x6a, 0x6b, 0x6b, 0x39, 0x75, 0x2b, 0x55, 0x4a, 0x75, 0x65, 0x42, 0x50, 0x53, 0x5a, 0x49, 0x39, 0x46, 0x6f, 0x4a, 0x41, 0x0a, 0x7a, 0x4d, 0x78, 0x5a, 0x78, 0x75, 0x59, 0x36, 0x37, 0x52, 0x49, 0x75, 0x61, 0x54, 0x78, 0x73, 0x6c, 0x62, 0x48, 0x39, 0x71, 0x68, 0x31, 0x37, 0x66, 0x34, 0x61, 0x2b, 0x48, 0x67, 0x34, 0x79, 0x52, 0x76, 0x76, 0x37, 0x45, 0x34, 0x39, 0x31, 0x66, 0x30, 0x79, 0x4c, 0x53, 0x30, 0x5a, 0x6a, 0x2f, 0x67, 0x41, 0x30, 0x51, 0x48, 0x44, 0x42, 0x77, 0x37, 0x6d, 0x68, 0x33, 0x61, 0x5a, 0x77, 0x34, 0x67, 0x53, 0x7a, 0x51, 0x62, 0x7a, 0x70, 0x67, 0x4a, 0x48, 0x71, 0x0a, 0x5a, 0x4a, 0x78, 0x36, 0x34, 0x53, 0x49, 0x44, 0x71, 0x5a, 0x78, 0x75, 0x62, 0x77, 0x35, 0x6c, 0x54, 0x32, 0x79, 0x48, 0x68, 0x31, 0x37, 0x7a, 0x62, 0x71, 0x44, 0x35, 0x64, 0x61, 0x57, 0x62, 0x51, 0x4f, 0x68, 0x54, 0x73, 0x69, 0x65, 0x64, 0x53, 0x72, 0x6e, 0x41, 0x64, 0x79, 0x47, 0x4e, 0x2f, 0x34, 0x66, 0x79, 0x33, 0x72, 0x79, 0x4d, 0x37, 0x78, 0x66, 0x66, 0x74, 0x30, 0x6b, 0x4c, 0x30, 0x66, 0x4a, 0x75, 0x4d, 0x41, 0x73, 0x61, 0x44, 0x6b, 0x35, 0x32, 0x0a, 0x37, 0x52, 0x48, 0x38, 0x39, 0x65, 0x6c, 0x57, 0x73, 0x6e, 0x32, 0x2f, 0x78, 0x32, 0x30, 0x4b, 0x6b, 0x34, 0x79, 0x6c, 0x30, 0x4d, 0x43, 0x32, 0x48, 0x62, 0x34, 0x36, 0x54, 0x70, 0x53, 0x69, 0x31, 0x32, 0x35, 0x73, 0x43, 0x38, 0x4b, 0x4b, 0x66, 0x50, 0x6f, 0x67, 0x38, 0x38, 0x54, 0x6b, 0x35, 0x63, 0x30, 0x4e, 0x71, 0x4d, 0x75, 0x52, 0x6b, 0x72, 0x46, 0x38, 0x68, 0x65, 0x79, 0x31, 0x46, 0x47, 0x6c, 0x6d, 0x44, 0x6f, 0x4c, 0x6e, 0x7a, 0x63, 0x37, 0x49, 0x0a, 0x4c, 0x61, 0x5a, 0x52, 0x66, 0x79, 0x48, 0x42, 0x4e, 0x56, 0x4f, 0x46, 0x42, 0x6b, 0x70, 0x64, 0x6e, 0x36, 0x32, 0x37, 0x47, 0x31, 0x39, 0x30, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x55, 0x53, 0x45, 0x52, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x33, 0x6a, 0x43, 0x43, 0x41, 0x38, 0x61, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x41, 0x66, 0x31, 0x74, 0x4d, 0x50, 0x79, 0x6a, 0x79, 0x6c, 0x47, 0x6f, 0x47, 0x37, 0x78, 0x6b, 0x44, 0x6a, 0x55, 0x44, 0x4c, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x44, 0x43, 0x42, 0x69, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x43, 0x6b, 0x35, 0x6c, 0x64, 0x79, 0x42, 0x4b, 0x5a, 0x58, 0x4a, 0x7a, 0x5a, 0x58, 0x6b, 0x78, 0x46, 0x44, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x43, 0x30, 0x70, 0x6c, 0x63, 0x6e, 0x4e, 0x6c, 0x65, 0x53, 0x42, 0x44, 0x61, 0x58, 0x52, 0x35, 0x4d, 0x52, 0x34, 0x77, 0x48, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x0a, 0x45, 0x78, 0x56, 0x55, 0x61, 0x47, 0x55, 0x67, 0x56, 0x56, 0x4e, 0x46, 0x55, 0x6c, 0x52, 0x53, 0x56, 0x56, 0x4e, 0x55, 0x49, 0x45, 0x35, 0x6c, 0x64, 0x48, 0x64, 0x76, 0x63, 0x6d, 0x73, 0x78, 0x4c, 0x6a, 0x41, 0x73, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4a, 0x56, 0x56, 0x54, 0x52, 0x56, 0x4a, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x53, 0x55, 0x30, 0x45, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x0a, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x41, 0x77, 0x4d, 0x6a, 0x41, 0x78, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x67, 0x77, 0x4d, 0x54, 0x45, 0x34, 0x4d, 0x6a, 0x4d, 0x31, 0x4f, 0x54, 0x55, 0x35, 0x57, 0x6a, 0x43, 0x42, 0x69, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x43, 0x6b, 0x35, 0x6c, 0x64, 0x79, 0x42, 0x4b, 0x5a, 0x58, 0x4a, 0x7a, 0x5a, 0x58, 0x6b, 0x78, 0x46, 0x44, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x43, 0x30, 0x70, 0x6c, 0x63, 0x6e, 0x4e, 0x6c, 0x65, 0x53, 0x42, 0x44, 0x61, 0x58, 0x52, 0x35, 0x4d, 0x52, 0x34, 0x77, 0x48, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x0a, 0x45, 0x78, 0x56, 0x55, 0x61, 0x47, 0x55, 0x67, 0x56, 0x56, 0x4e, 0x46, 0x55, 0x6c, 0x52, 0x53, 0x56, 0x56, 0x4e, 0x55, 0x49, 0x45, 0x35, 0x6c, 0x64, 0x48, 0x64, 0x76, 0x63, 0x6d, 0x73, 0x78, 0x4c, 0x6a, 0x41, 0x73, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4a, 0x56, 0x56, 0x54, 0x52, 0x56, 0x4a, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x53, 0x55, 0x30, 0x45, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x0a, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x41, 0x45, 0x6d, 0x55, 0x58, 0x4e, 0x67, 0x37, 0x44, 0x32, 0x77, 0x69, 0x7a, 0x0a, 0x30, 0x4b, 0x78, 0x58, 0x44, 0x58, 0x62, 0x74, 0x7a, 0x53, 0x66, 0x54, 0x54, 0x4b, 0x31, 0x51, 0x67, 0x32, 0x48, 0x69, 0x71, 0x69, 0x42, 0x4e, 0x43, 0x53, 0x31, 0x6b, 0x43, 0x64, 0x7a, 0x4f, 0x69, 0x5a, 0x2f, 0x4d, 0x50, 0x61, 0x6e, 0x73, 0x39, 0x73, 0x2f, 0x42, 0x33, 0x50, 0x48, 0x54, 0x73, 0x64, 0x5a, 0x37, 0x4e, 0x79, 0x67, 0x52, 0x4b, 0x30, 0x66, 0x61, 0x4f, 0x63, 0x61, 0x38, 0x4f, 0x68, 0x6d, 0x30, 0x58, 0x36, 0x61, 0x39, 0x66, 0x5a, 0x32, 0x6a, 0x0a, 0x59, 0x30, 0x4b, 0x32, 0x64, 0x76, 0x4b, 0x70, 0x4f, 0x79, 0x75, 0x52, 0x2b, 0x4f, 0x4a, 0x76, 0x30, 0x4f, 0x77, 0x57, 0x49, 0x4a, 0x41, 0x4a, 0x50, 0x75, 0x4c, 0x6f, 0x64, 0x4d, 0x6b, 0x59, 0x74, 0x4a, 0x48, 0x55, 0x59, 0x6d, 0x54, 0x62, 0x66, 0x36, 0x4d, 0x47, 0x38, 0x59, 0x67, 0x59, 0x61, 0x70, 0x41, 0x69, 0x50, 0x4c, 0x7a, 0x2b, 0x45, 0x2f, 0x43, 0x48, 0x46, 0x48, 0x76, 0x32, 0x35, 0x42, 0x2b, 0x4f, 0x31, 0x4f, 0x52, 0x52, 0x78, 0x68, 0x46, 0x6e, 0x0a, 0x52, 0x67, 0x68, 0x52, 0x79, 0x34, 0x59, 0x55, 0x56, 0x44, 0x2b, 0x38, 0x4d, 0x2f, 0x35, 0x2b, 0x62, 0x4a, 0x7a, 0x2f, 0x46, 0x70, 0x30, 0x59, 0x76, 0x56, 0x47, 0x4f, 0x4e, 0x61, 0x61, 0x6e, 0x5a, 0x73, 0x68, 0x79, 0x5a, 0x39, 0x73, 0x68, 0x5a, 0x72, 0x48, 0x55, 0x6d, 0x33, 0x67, 0x44, 0x77, 0x46, 0x41, 0x36, 0x36, 0x4d, 0x7a, 0x77, 0x33, 0x4c, 0x79, 0x65, 0x54, 0x50, 0x36, 0x76, 0x42, 0x5a, 0x59, 0x31, 0x48, 0x31, 0x64, 0x61, 0x74, 0x2f, 0x2f, 0x4f, 0x0a, 0x2b, 0x54, 0x32, 0x33, 0x4c, 0x4c, 0x62, 0x32, 0x56, 0x4e, 0x33, 0x49, 0x35, 0x78, 0x49, 0x36, 0x54, 0x61, 0x35, 0x4d, 0x69, 0x72, 0x64, 0x63, 0x6d, 0x72, 0x53, 0x33, 0x49, 0x44, 0x33, 0x4b, 0x66, 0x79, 0x49, 0x30, 0x72, 0x6e, 0x34, 0x37, 0x61, 0x47, 0x59, 0x42, 0x52, 0x4f, 0x63, 0x42, 0x54, 0x6b, 0x5a, 0x54, 0x6d, 0x7a, 0x4e, 0x67, 0x39, 0x35, 0x53, 0x2b, 0x55, 0x7a, 0x65, 0x51, 0x63, 0x30, 0x50, 0x7a, 0x4d, 0x73, 0x4e, 0x54, 0x37, 0x39, 0x75, 0x71, 0x0a, 0x2f, 0x6e, 0x52, 0x4f, 0x61, 0x63, 0x64, 0x72, 0x6a, 0x47, 0x43, 0x54, 0x33, 0x73, 0x54, 0x48, 0x44, 0x4e, 0x2f, 0x68, 0x4d, 0x71, 0x37, 0x4d, 0x6b, 0x7a, 0x74, 0x52, 0x65, 0x4a, 0x56, 0x6e, 0x69, 0x2b, 0x34, 0x39, 0x56, 0x76, 0x34, 0x4d, 0x30, 0x47, 0x6b, 0x50, 0x47, 0x77, 0x2f, 0x7a, 0x4a, 0x53, 0x5a, 0x72, 0x4d, 0x32, 0x33, 0x33, 0x62, 0x6b, 0x66, 0x36, 0x63, 0x30, 0x50, 0x6c, 0x66, 0x67, 0x36, 0x6c, 0x5a, 0x72, 0x45, 0x70, 0x66, 0x44, 0x4b, 0x45, 0x0a, 0x59, 0x31, 0x57, 0x4a, 0x78, 0x41, 0x33, 0x42, 0x6b, 0x31, 0x51, 0x77, 0x47, 0x52, 0x4f, 0x73, 0x30, 0x33, 0x30, 0x33, 0x70, 0x2b, 0x74, 0x64, 0x4f, 0x6d, 0x77, 0x31, 0x58, 0x4e, 0x74, 0x42, 0x31, 0x78, 0x4c, 0x61, 0x71, 0x55, 0x6b, 0x4c, 0x33, 0x39, 0x69, 0x41, 0x69, 0x67, 0x6d, 0x54, 0x59, 0x6f, 0x36, 0x31, 0x5a, 0x73, 0x38, 0x6c, 0x69, 0x4d, 0x32, 0x45, 0x75, 0x4c, 0x45, 0x2f, 0x70, 0x44, 0x6b, 0x50, 0x32, 0x51, 0x4b, 0x65, 0x36, 0x78, 0x4a, 0x4d, 0x0a, 0x6c, 0x58, 0x7a, 0x7a, 0x61, 0x77, 0x57, 0x70, 0x58, 0x68, 0x61, 0x44, 0x7a, 0x4c, 0x68, 0x6e, 0x34, 0x75, 0x67, 0x54, 0x6e, 0x63, 0x78, 0x62, 0x67, 0x74, 0x4e, 0x4d, 0x73, 0x2b, 0x31, 0x62, 0x2f, 0x39, 0x37, 0x6c, 0x63, 0x36, 0x77, 0x6a, 0x4f, 0x79, 0x30, 0x41, 0x76, 0x7a, 0x56, 0x56, 0x64, 0x41, 0x6c, 0x4a, 0x32, 0x45, 0x6c, 0x59, 0x47, 0x6e, 0x2b, 0x53, 0x4e, 0x75, 0x5a, 0x52, 0x6b, 0x67, 0x37, 0x7a, 0x4a, 0x6e, 0x30, 0x63, 0x54, 0x52, 0x65, 0x38, 0x0a, 0x79, 0x65, 0x78, 0x44, 0x4a, 0x74, 0x43, 0x2f, 0x51, 0x56, 0x39, 0x41, 0x71, 0x55, 0x52, 0x45, 0x39, 0x4a, 0x6e, 0x6e, 0x56, 0x34, 0x65, 0x65, 0x55, 0x42, 0x39, 0x58, 0x56, 0x4b, 0x67, 0x2b, 0x2f, 0x58, 0x52, 0x6a, 0x4c, 0x37, 0x46, 0x51, 0x5a, 0x51, 0x6e, 0x6d, 0x57, 0x45, 0x49, 0x75, 0x51, 0x78, 0x70, 0x4d, 0x74, 0x50, 0x41, 0x6c, 0x52, 0x31, 0x6e, 0x36, 0x42, 0x42, 0x36, 0x54, 0x31, 0x43, 0x5a, 0x47, 0x53, 0x6c, 0x43, 0x42, 0x73, 0x74, 0x36, 0x2b, 0x0a, 0x65, 0x4c, 0x66, 0x38, 0x5a, 0x78, 0x58, 0x68, 0x79, 0x56, 0x65, 0x45, 0x48, 0x67, 0x39, 0x6a, 0x31, 0x75, 0x6c, 0x69, 0x75, 0x74, 0x5a, 0x66, 0x56, 0x53, 0x37, 0x71, 0x58, 0x4d, 0x59, 0x6f, 0x43, 0x41, 0x51, 0x6c, 0x4f, 0x62, 0x67, 0x4f, 0x4b, 0x36, 0x6e, 0x79, 0x54, 0x4a, 0x63, 0x63, 0x42, 0x7a, 0x38, 0x4e, 0x55, 0x76, 0x58, 0x74, 0x37, 0x79, 0x2b, 0x43, 0x44, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x55, 0x33, 0x6d, 0x2f, 0x57, 0x71, 0x6f, 0x72, 0x53, 0x73, 0x39, 0x55, 0x67, 0x4f, 0x48, 0x59, 0x6d, 0x38, 0x43, 0x64, 0x38, 0x72, 0x49, 0x44, 0x5a, 0x73, 0x73, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x0a, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x46, 0x7a, 0x55, 0x66, 0x41, 0x33, 0x50, 0x39, 0x77, 0x46, 0x39, 0x51, 0x5a, 0x6c, 0x6c, 0x44, 0x48, 0x50, 0x46, 0x55, 0x70, 0x2f, 0x4c, 0x2b, 0x4d, 0x2b, 0x5a, 0x42, 0x6e, 0x38, 0x62, 0x32, 0x6b, 0x4d, 0x56, 0x6e, 0x35, 0x34, 0x43, 0x56, 0x56, 0x65, 0x57, 0x0a, 0x46, 0x50, 0x46, 0x53, 0x50, 0x43, 0x65, 0x48, 0x6c, 0x43, 0x6a, 0x74, 0x48, 0x7a, 0x6f, 0x42, 0x4e, 0x36, 0x4a, 0x32, 0x2f, 0x46, 0x4e, 0x51, 0x77, 0x49, 0x53, 0x62, 0x78, 0x6d, 0x74, 0x4f, 0x75, 0x6f, 0x77, 0x68, 0x54, 0x36, 0x4b, 0x4f, 0x56, 0x57, 0x4b, 0x52, 0x38, 0x32, 0x6b, 0x56, 0x32, 0x4c, 0x79, 0x49, 0x34, 0x38, 0x53, 0x71, 0x43, 0x2f, 0x33, 0x76, 0x71, 0x4f, 0x6c, 0x4c, 0x56, 0x53, 0x6f, 0x47, 0x49, 0x47, 0x31, 0x56, 0x65, 0x43, 0x6b, 0x5a, 0x0a, 0x37, 0x6c, 0x38, 0x77, 0x58, 0x45, 0x73, 0x6b, 0x45, 0x56, 0x58, 0x2f, 0x4a, 0x4a, 0x70, 0x75, 0x58, 0x69, 0x6f, 0x72, 0x37, 0x67, 0x74, 0x4e, 0x6e, 0x33, 0x2f, 0x33, 0x41, 0x54, 0x69, 0x55, 0x46, 0x4a, 0x56, 0x44, 0x42, 0x77, 0x6e, 0x37, 0x59, 0x4b, 0x6e, 0x75, 0x48, 0x4b, 0x73, 0x53, 0x6a, 0x4b, 0x43, 0x61, 0x58, 0x71, 0x65, 0x59, 0x61, 0x6c, 0x6c, 0x74, 0x69, 0x7a, 0x38, 0x49, 0x2b, 0x38, 0x6a, 0x52, 0x52, 0x61, 0x38, 0x59, 0x46, 0x57, 0x53, 0x51, 0x0a, 0x45, 0x67, 0x39, 0x7a, 0x4b, 0x43, 0x37, 0x46, 0x34, 0x69, 0x52, 0x4f, 0x2f, 0x46, 0x6a, 0x73, 0x38, 0x50, 0x52, 0x46, 0x2f, 0x69, 0x4b, 0x7a, 0x36, 0x79, 0x2b, 0x4f, 0x30, 0x74, 0x6c, 0x46, 0x59, 0x51, 0x58, 0x42, 0x6c, 0x32, 0x2b, 0x6f, 0x64, 0x6e, 0x4b, 0x50, 0x69, 0x34, 0x77, 0x32, 0x72, 0x37, 0x38, 0x4e, 0x42, 0x63, 0x35, 0x78, 0x6a, 0x65, 0x61, 0x6d, 0x62, 0x78, 0x39, 0x73, 0x70, 0x6e, 0x46, 0x69, 0x78, 0x64, 0x6a, 0x51, 0x67, 0x33, 0x49, 0x4d, 0x0a, 0x38, 0x57, 0x63, 0x52, 0x69, 0x51, 0x79, 0x63, 0x45, 0x30, 0x78, 0x79, 0x4e, 0x4e, 0x2b, 0x38, 0x31, 0x58, 0x48, 0x66, 0x71, 0x6e, 0x48, 0x64, 0x34, 0x62, 0x6c, 0x73, 0x6a, 0x44, 0x77, 0x53, 0x58, 0x57, 0x58, 0x61, 0x76, 0x56, 0x63, 0x53, 0x74, 0x6b, 0x4e, 0x72, 0x2f, 0x2b, 0x58, 0x65, 0x54, 0x57, 0x59, 0x52, 0x55, 0x63, 0x2b, 0x5a, 0x72, 0x75, 0x77, 0x58, 0x74, 0x75, 0x68, 0x78, 0x6b, 0x59, 0x7a, 0x65, 0x53, 0x66, 0x37, 0x64, 0x4e, 0x58, 0x47, 0x69, 0x0a, 0x46, 0x53, 0x65, 0x55, 0x48, 0x4d, 0x39, 0x68, 0x34, 0x79, 0x61, 0x37, 0x62, 0x36, 0x4e, 0x6e, 0x4a, 0x53, 0x46, 0x64, 0x35, 0x74, 0x30, 0x64, 0x43, 0x79, 0x35, 0x6f, 0x47, 0x7a, 0x75, 0x43, 0x72, 0x2b, 0x79, 0x44, 0x5a, 0x34, 0x58, 0x55, 0x6d, 0x46, 0x46, 0x30, 0x73, 0x62, 0x6d, 0x5a, 0x67, 0x49, 0x6e, 0x2f, 0x66, 0x33, 0x67, 0x5a, 0x58, 0x48, 0x6c, 0x4b, 0x59, 0x43, 0x36, 0x53, 0x51, 0x4b, 0x35, 0x4d, 0x4e, 0x79, 0x6f, 0x73, 0x79, 0x63, 0x64, 0x69, 0x0a, 0x79, 0x41, 0x35, 0x64, 0x39, 0x7a, 0x5a, 0x62, 0x79, 0x75, 0x41, 0x6c, 0x4a, 0x51, 0x47, 0x30, 0x33, 0x52, 0x6f, 0x48, 0x6e, 0x48, 0x63, 0x41, 0x50, 0x39, 0x44, 0x63, 0x31, 0x65, 0x77, 0x39, 0x31, 0x50, 0x71, 0x37, 0x50, 0x38, 0x79, 0x46, 0x31, 0x6d, 0x39, 0x2f, 0x71, 0x53, 0x33, 0x66, 0x75, 0x51, 0x4c, 0x33, 0x39, 0x5a, 0x65, 0x61, 0x74, 0x54, 0x58, 0x61, 0x77, 0x32, 0x65, 0x77, 0x68, 0x30, 0x71, 0x70, 0x4b, 0x4a, 0x34, 0x6a, 0x6a, 0x76, 0x39, 0x63, 0x0a, 0x4a, 0x32, 0x76, 0x68, 0x73, 0x45, 0x2f, 0x7a, 0x42, 0x2b, 0x34, 0x41, 0x4c, 0x74, 0x52, 0x5a, 0x68, 0x38, 0x74, 0x53, 0x51, 0x5a, 0x58, 0x71, 0x39, 0x45, 0x66, 0x58, 0x37, 0x6d, 0x52, 0x42, 0x56, 0x58, 0x79, 0x4e, 0x57, 0x51, 0x4b, 0x56, 0x33, 0x57, 0x4b, 0x64, 0x77, 0x72, 0x6e, 0x75, 0x57, 0x69, 0x68, 0x30, 0x68, 0x4b, 0x57, 0x62, 0x74, 0x35, 0x44, 0x48, 0x44, 0x41, 0x66, 0x66, 0x39, 0x59, 0x6b, 0x32, 0x64, 0x44, 0x4c, 0x57, 0x4b, 0x4d, 0x47, 0x77, 0x0a, 0x73, 0x41, 0x76, 0x67, 0x6e, 0x45, 0x7a, 0x44, 0x48, 0x4e, 0x62, 0x38, 0x34, 0x32, 0x6d, 0x31, 0x52, 0x30, 0x61, 0x42, 0x4c, 0x36, 0x4b, 0x43, 0x71, 0x39, 0x4e, 0x6a, 0x52, 0x48, 0x44, 0x45, 0x6a, 0x66, 0x38, 0x74, 0x4d, 0x37, 0x71, 0x74, 0x6a, 0x33, 0x75, 0x31, 0x63, 0x49, 0x69, 0x75, 0x50, 0x68, 0x6e, 0x50, 0x51, 0x43, 0x6a, 0x59, 0x2f, 0x4d, 0x69, 0x51, 0x75, 0x31, 0x32, 0x5a, 0x49, 0x76, 0x56, 0x53, 0x35, 0x6c, 0x6a, 0x46, 0x48, 0x34, 0x67, 0x78, 0x0a, 0x51, 0x2b, 0x36, 0x49, 0x48, 0x64, 0x66, 0x47, 0x6a, 0x6a, 0x78, 0x44, 0x61, 0x68, 0x32, 0x6e, 0x47, 0x4e, 0x35, 0x39, 0x50, 0x52, 0x62, 0x78, 0x59, 0x76, 0x6e, 0x4b, 0x6b, 0x4b, 0x6a, 0x39, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x55, 0x53, 0x45, 0x52, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x43, 0x43, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x6a, 0x7a, 0x43, 0x43, 0x41, 0x68, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x58, 0x49, 0x75, 0x5a, 0x78, 0x56, 0x71, 0x55, 0x78, 0x64, 0x4a, 0x78, 0x56, 0x74, 0x37, 0x4e, 0x69, 0x59, 0x44, 0x4d, 0x4a, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x43, 0x42, 0x69, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x0a, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x43, 0x6b, 0x35, 0x6c, 0x64, 0x79, 0x42, 0x4b, 0x5a, 0x58, 0x4a, 0x7a, 0x5a, 0x58, 0x6b, 0x78, 0x46, 0x44, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x43, 0x30, 0x70, 0x6c, 0x63, 0x6e, 0x4e, 0x6c, 0x65, 0x53, 0x42, 0x44, 0x61, 0x58, 0x52, 0x35, 0x4d, 0x52, 0x34, 0x77, 0x48, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x56, 0x55, 0x0a, 0x61, 0x47, 0x55, 0x67, 0x56, 0x56, 0x4e, 0x46, 0x55, 0x6c, 0x52, 0x53, 0x56, 0x56, 0x4e, 0x55, 0x49, 0x45, 0x35, 0x6c, 0x64, 0x48, 0x64, 0x76, 0x63, 0x6d, 0x73, 0x78, 0x4c, 0x6a, 0x41, 0x73, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4a, 0x56, 0x56, 0x54, 0x52, 0x56, 0x4a, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x0a, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x41, 0x77, 0x4d, 0x6a, 0x41, 0x78, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x67, 0x77, 0x4d, 0x54, 0x45, 0x34, 0x4d, 0x6a, 0x4d, 0x31, 0x4f, 0x54, 0x55, 0x35, 0x57, 0x6a, 0x43, 0x42, 0x69, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x0a, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x43, 0x6b, 0x35, 0x6c, 0x64, 0x79, 0x42, 0x4b, 0x5a, 0x58, 0x4a, 0x7a, 0x5a, 0x58, 0x6b, 0x78, 0x46, 0x44, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x43, 0x30, 0x70, 0x6c, 0x63, 0x6e, 0x4e, 0x6c, 0x65, 0x53, 0x42, 0x44, 0x61, 0x58, 0x52, 0x35, 0x4d, 0x52, 0x34, 0x77, 0x48, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x56, 0x55, 0x0a, 0x61, 0x47, 0x55, 0x67, 0x56, 0x56, 0x4e, 0x46, 0x55, 0x6c, 0x52, 0x53, 0x56, 0x56, 0x4e, 0x55, 0x49, 0x45, 0x35, 0x6c, 0x64, 0x48, 0x64, 0x76, 0x63, 0x6d, 0x73, 0x78, 0x4c, 0x6a, 0x41, 0x73, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4a, 0x56, 0x56, 0x54, 0x52, 0x56, 0x4a, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x0a, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x51, 0x61, 0x72, 0x46, 0x52, 0x61, 0x71, 0x66, 0x6c, 0x6f, 0x49, 0x2b, 0x64, 0x36, 0x31, 0x53, 0x52, 0x76, 0x55, 0x38, 0x5a, 0x61, 0x32, 0x45, 0x75, 0x72, 0x78, 0x74, 0x57, 0x32, 0x0a, 0x30, 0x65, 0x5a, 0x7a, 0x63, 0x61, 0x37, 0x64, 0x6e, 0x4e, 0x59, 0x4d, 0x59, 0x66, 0x33, 0x62, 0x6f, 0x49, 0x6b, 0x44, 0x75, 0x41, 0x55, 0x55, 0x37, 0x46, 0x66, 0x4f, 0x37, 0x6c, 0x30, 0x2f, 0x34, 0x69, 0x47, 0x7a, 0x7a, 0x76, 0x66, 0x55, 0x69, 0x6e, 0x6e, 0x67, 0x6f, 0x34, 0x4e, 0x2b, 0x4c, 0x5a, 0x66, 0x51, 0x59, 0x63, 0x54, 0x78, 0x6d, 0x64, 0x77, 0x6c, 0x6b, 0x57, 0x4f, 0x72, 0x66, 0x7a, 0x43, 0x6a, 0x74, 0x48, 0x44, 0x69, 0x78, 0x36, 0x45, 0x7a, 0x0a, 0x6e, 0x50, 0x4f, 0x2f, 0x4c, 0x6c, 0x78, 0x54, 0x73, 0x56, 0x2b, 0x7a, 0x66, 0x54, 0x4a, 0x2f, 0x69, 0x6a, 0x54, 0x6a, 0x65, 0x58, 0x6d, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x51, 0x36, 0x34, 0x51, 0x6d, 0x47, 0x31, 0x4d, 0x38, 0x5a, 0x77, 0x70, 0x5a, 0x32, 0x64, 0x45, 0x6c, 0x32, 0x33, 0x4f, 0x41, 0x31, 0x78, 0x6d, 0x4e, 0x6a, 0x6d, 0x6a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6f, 0x41, 0x44, 0x42, 0x6c, 0x41, 0x6a, 0x41, 0x32, 0x5a, 0x36, 0x45, 0x57, 0x43, 0x4e, 0x7a, 0x6b, 0x6c, 0x77, 0x42, 0x42, 0x0a, 0x48, 0x55, 0x36, 0x2b, 0x34, 0x57, 0x4d, 0x42, 0x7a, 0x7a, 0x75, 0x71, 0x51, 0x68, 0x46, 0x6b, 0x6f, 0x4a, 0x32, 0x55, 0x4f, 0x51, 0x49, 0x52, 0x65, 0x56, 0x78, 0x37, 0x48, 0x66, 0x70, 0x6b, 0x75, 0x65, 0x34, 0x57, 0x51, 0x72, 0x4f, 0x2f, 0x69, 0x73, 0x49, 0x4a, 0x78, 0x4f, 0x7a, 0x6b, 0x73, 0x55, 0x30, 0x43, 0x4d, 0x51, 0x44, 0x70, 0x4b, 0x6d, 0x46, 0x48, 0x6a, 0x46, 0x4a, 0x4b, 0x53, 0x30, 0x34, 0x59, 0x63, 0x50, 0x62, 0x57, 0x52, 0x4e, 0x5a, 0x75, 0x0a, 0x39, 0x59, 0x4f, 0x36, 0x62, 0x56, 0x69, 0x39, 0x4a, 0x4e, 0x6c, 0x57, 0x53, 0x4f, 0x72, 0x76, 0x78, 0x4b, 0x4a, 0x47, 0x67, 0x59, 0x68, 0x71, 0x4f, 0x6b, 0x62, 0x52, 0x71, 0x5a, 0x74, 0x4e, 0x79, 0x57, 0x48, 0x61, 0x30, 0x56, 0x31, 0x58, 0x61, 0x68, 0x67, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x52, 0x35, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x48, 0x6a, 0x43, 0x43, 0x41, 0x61, 0x53, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x52, 0x59, 0x46, 0x6c, 0x4a, 0x34, 0x43, 0x59, 0x75, 0x75, 0x31, 0x58, 0x35, 0x43, 0x6e, 0x65, 0x4b, 0x63, 0x66, 0x6c, 0x4b, 0x32, 0x47, 0x77, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x4d, 0x77, 0x55, 0x44, 0x45, 0x6b, 0x4d, 0x43, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x62, 0x0a, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x69, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x74, 0x49, 0x46, 0x49, 0x31, 0x4d, 0x52, 0x4d, 0x77, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x70, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x4d, 0x52, 0x4d, 0x77, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x0a, 0x45, 0x77, 0x70, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x79, 0x4d, 0x54, 0x45, 0x78, 0x4d, 0x7a, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x34, 0x4d, 0x44, 0x45, 0x78, 0x4f, 0x54, 0x41, 0x7a, 0x4d, 0x54, 0x51, 0x77, 0x4e, 0x31, 0x6f, 0x77, 0x55, 0x44, 0x45, 0x6b, 0x4d, 0x43, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x62, 0x0a, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x69, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x74, 0x49, 0x46, 0x49, 0x31, 0x4d, 0x52, 0x4d, 0x77, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x70, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x4d, 0x52, 0x4d, 0x77, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x0a, 0x45, 0x77, 0x70, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x4d, 0x48, 0x59, 0x77, 0x45, 0x41, 0x59, 0x48, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x43, 0x41, 0x51, 0x59, 0x46, 0x4b, 0x34, 0x45, 0x45, 0x41, 0x43, 0x49, 0x44, 0x59, 0x67, 0x41, 0x45, 0x52, 0x30, 0x55, 0x4f, 0x6c, 0x76, 0x74, 0x39, 0x58, 0x62, 0x2f, 0x70, 0x4f, 0x64, 0x45, 0x68, 0x2b, 0x4a, 0x38, 0x4c, 0x74, 0x74, 0x56, 0x37, 0x48, 0x70, 0x49, 0x36, 0x0a, 0x53, 0x46, 0x6b, 0x63, 0x38, 0x47, 0x49, 0x78, 0x4c, 0x63, 0x42, 0x36, 0x4b, 0x50, 0x34, 0x61, 0x70, 0x31, 0x79, 0x7a, 0x74, 0x73, 0x79, 0x58, 0x35, 0x30, 0x58, 0x55, 0x57, 0x50, 0x72, 0x52, 0x64, 0x32, 0x31, 0x44, 0x6f, 0x73, 0x43, 0x48, 0x5a, 0x54, 0x51, 0x4b, 0x48, 0x33, 0x72, 0x64, 0x36, 0x7a, 0x77, 0x7a, 0x6f, 0x63, 0x57, 0x64, 0x54, 0x61, 0x52, 0x76, 0x51, 0x5a, 0x55, 0x34, 0x66, 0x38, 0x6b, 0x65, 0x68, 0x4f, 0x76, 0x52, 0x6e, 0x6b, 0x6d, 0x53, 0x0a, 0x68, 0x35, 0x53, 0x48, 0x44, 0x44, 0x71, 0x46, 0x53, 0x6d, 0x61, 0x66, 0x6e, 0x56, 0x6d, 0x54, 0x54, 0x5a, 0x64, 0x68, 0x42, 0x6f, 0x5a, 0x4b, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x50, 0x65, 0x59, 0x70, 0x53, 0x4a, 0x76, 0x71, 0x42, 0x38, 0x6f, 0x68, 0x52, 0x45, 0x6f, 0x6d, 0x33, 0x6d, 0x37, 0x65, 0x30, 0x6f, 0x50, 0x51, 0x6e, 0x31, 0x6b, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x4d, 0x44, 0x61, 0x41, 0x41, 0x77, 0x5a, 0x51, 0x49, 0x78, 0x41, 0x4f, 0x56, 0x70, 0x45, 0x73, 0x6c, 0x75, 0x32, 0x38, 0x59, 0x78, 0x0a, 0x75, 0x67, 0x6c, 0x42, 0x34, 0x5a, 0x66, 0x34, 0x2b, 0x2f, 0x32, 0x61, 0x34, 0x6e, 0x30, 0x53, 0x79, 0x65, 0x31, 0x38, 0x5a, 0x4e, 0x50, 0x4c, 0x42, 0x53, 0x57, 0x4c, 0x56, 0x74, 0x6d, 0x67, 0x35, 0x31, 0x35, 0x64, 0x54, 0x67, 0x75, 0x44, 0x6e, 0x46, 0x74, 0x32, 0x4b, 0x61, 0x41, 0x4a, 0x4a, 0x69, 0x46, 0x71, 0x59, 0x67, 0x49, 0x77, 0x63, 0x64, 0x4b, 0x31, 0x6a, 0x31, 0x7a, 0x71, 0x4f, 0x2b, 0x46, 0x34, 0x43, 0x59, 0x57, 0x6f, 0x64, 0x5a, 0x49, 0x37, 0x0a, 0x79, 0x46, 0x7a, 0x39, 0x53, 0x4f, 0x38, 0x4e, 0x64, 0x43, 0x4b, 0x6f, 0x43, 0x4f, 0x4a, 0x75, 0x78, 0x55, 0x6e, 0x4f, 0x78, 0x77, 0x79, 0x38, 0x70, 0x32, 0x46, 0x70, 0x38, 0x66, 0x63, 0x37, 0x34, 0x53, 0x72, 0x4c, 0x2b, 0x53, 0x76, 0x7a, 0x5a, 0x70, 0x41, 0x33, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x49, 0x64, 0x65, 0x6e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x59, 0x44, 0x43, 0x43, 0x41, 0x30, 0x69, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x43, 0x67, 0x46, 0x43, 0x67, 0x41, 0x41, 0x41, 0x41, 0x55, 0x55, 0x6a, 0x79, 0x45, 0x53, 0x31, 0x41, 0x41, 0x41, 0x41, 0x41, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x4b, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4a, 0x53, 0x57, 0x52, 0x6c, 0x62, 0x6c, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x53, 0x63, 0x77, 0x4a, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x35, 0x4a, 0x5a, 0x47, 0x56, 0x75, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x51, 0x32, 0x39, 0x74, 0x62, 0x57, 0x56, 0x79, 0x59, 0x32, 0x6c, 0x68, 0x62, 0x43, 0x42, 0x53, 0x0a, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x51, 0x77, 0x4d, 0x54, 0x45, 0x32, 0x4d, 0x54, 0x67, 0x78, 0x4d, 0x6a, 0x49, 0x7a, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x51, 0x77, 0x4d, 0x54, 0x45, 0x32, 0x4d, 0x54, 0x67, 0x78, 0x4d, 0x6a, 0x49, 0x7a, 0x57, 0x6a, 0x42, 0x4b, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x53, 0x0a, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4a, 0x53, 0x57, 0x52, 0x6c, 0x62, 0x6c, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x53, 0x63, 0x77, 0x4a, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x35, 0x4a, 0x5a, 0x47, 0x56, 0x75, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x51, 0x32, 0x39, 0x74, 0x62, 0x57, 0x56, 0x79, 0x59, 0x32, 0x6c, 0x68, 0x62, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x0a, 0x49, 0x44, 0x45, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x6e, 0x55, 0x42, 0x6e, 0x65, 0x50, 0x35, 0x6b, 0x39, 0x31, 0x44, 0x4e, 0x47, 0x38, 0x57, 0x39, 0x52, 0x59, 0x59, 0x4b, 0x79, 0x71, 0x55, 0x2b, 0x50, 0x5a, 0x34, 0x6c, 0x64, 0x0a, 0x68, 0x4e, 0x6c, 0x54, 0x33, 0x51, 0x77, 0x6f, 0x32, 0x64, 0x66, 0x77, 0x2f, 0x36, 0x36, 0x56, 0x51, 0x33, 0x4b, 0x5a, 0x2b, 0x62, 0x56, 0x64, 0x66, 0x49, 0x72, 0x42, 0x51, 0x75, 0x45, 0x78, 0x55, 0x48, 0x54, 0x52, 0x67, 0x51, 0x31, 0x38, 0x7a, 0x5a, 0x73, 0x68, 0x71, 0x30, 0x50, 0x69, 0x72, 0x4b, 0x31, 0x65, 0x68, 0x6d, 0x37, 0x7a, 0x43, 0x59, 0x6f, 0x66, 0x57, 0x6a, 0x4b, 0x39, 0x6f, 0x75, 0x75, 0x55, 0x2b, 0x65, 0x68, 0x63, 0x43, 0x75, 0x7a, 0x2f, 0x0a, 0x6d, 0x4e, 0x4b, 0x76, 0x63, 0x62, 0x4f, 0x30, 0x55, 0x35, 0x39, 0x4f, 0x68, 0x2b, 0x2b, 0x53, 0x76, 0x4c, 0x33, 0x73, 0x54, 0x7a, 0x49, 0x77, 0x69, 0x45, 0x73, 0x58, 0x58, 0x6c, 0x66, 0x45, 0x55, 0x38, 0x4c, 0x32, 0x41, 0x70, 0x65, 0x4e, 0x32, 0x57, 0x49, 0x72, 0x76, 0x79, 0x51, 0x66, 0x59, 0x6f, 0x33, 0x66, 0x77, 0x37, 0x67, 0x70, 0x53, 0x30, 0x6c, 0x34, 0x50, 0x4a, 0x4e, 0x67, 0x69, 0x43, 0x4c, 0x38, 0x6d, 0x64, 0x6f, 0x32, 0x79, 0x4d, 0x4b, 0x69, 0x0a, 0x31, 0x43, 0x78, 0x55, 0x41, 0x47, 0x63, 0x31, 0x62, 0x6e, 0x4f, 0x2f, 0x41, 0x6c, 0x6a, 0x77, 0x70, 0x4e, 0x33, 0x6c, 0x73, 0x4b, 0x49, 0x6d, 0x65, 0x73, 0x72, 0x67, 0x4e, 0x71, 0x55, 0x5a, 0x46, 0x76, 0x58, 0x39, 0x74, 0x2b, 0x2b, 0x75, 0x50, 0x30, 0x44, 0x31, 0x62, 0x56, 0x6f, 0x45, 0x2f, 0x63, 0x34, 0x30, 0x79, 0x69, 0x54, 0x63, 0x64, 0x43, 0x4d, 0x62, 0x58, 0x54, 0x4d, 0x54, 0x45, 0x6c, 0x33, 0x45, 0x41, 0x53, 0x58, 0x32, 0x4d, 0x4e, 0x30, 0x43, 0x0a, 0x58, 0x5a, 0x2f, 0x67, 0x31, 0x55, 0x65, 0x39, 0x74, 0x4f, 0x73, 0x62, 0x6f, 0x62, 0x74, 0x4a, 0x53, 0x64, 0x69, 0x66, 0x57, 0x77, 0x4c, 0x7a, 0x69, 0x75, 0x51, 0x6b, 0x6b, 0x4f, 0x52, 0x69, 0x54, 0x30, 0x2f, 0x42, 0x72, 0x34, 0x73, 0x4f, 0x64, 0x42, 0x65, 0x6f, 0x30, 0x58, 0x4b, 0x49, 0x61, 0x6e, 0x6f, 0x42, 0x53, 0x63, 0x79, 0x30, 0x52, 0x6e, 0x6e, 0x47, 0x46, 0x37, 0x48, 0x61, 0x6d, 0x42, 0x34, 0x48, 0x57, 0x66, 0x70, 0x31, 0x49, 0x59, 0x56, 0x6c, 0x0a, 0x33, 0x5a, 0x42, 0x57, 0x7a, 0x76, 0x75, 0x72, 0x70, 0x57, 0x43, 0x64, 0x78, 0x4a, 0x33, 0x35, 0x55, 0x72, 0x43, 0x4c, 0x76, 0x59, 0x66, 0x35, 0x6a, 0x79, 0x73, 0x6a, 0x43, 0x69, 0x4e, 0x32, 0x4f, 0x2f, 0x63, 0x7a, 0x34, 0x63, 0x6b, 0x41, 0x38, 0x32, 0x6e, 0x35, 0x53, 0x36, 0x4c, 0x67, 0x54, 0x72, 0x78, 0x2b, 0x6b, 0x7a, 0x6d, 0x45, 0x42, 0x2f, 0x64, 0x45, 0x63, 0x48, 0x37, 0x2b, 0x42, 0x31, 0x72, 0x6c, 0x73, 0x61, 0x7a, 0x52, 0x47, 0x4d, 0x7a, 0x79, 0x0a, 0x4e, 0x65, 0x56, 0x4a, 0x53, 0x51, 0x6a, 0x4b, 0x56, 0x73, 0x6b, 0x39, 0x2b, 0x77, 0x38, 0x59, 0x66, 0x59, 0x73, 0x37, 0x77, 0x52, 0x50, 0x43, 0x54, 0x59, 0x2f, 0x4a, 0x54, 0x77, 0x34, 0x33, 0x36, 0x52, 0x2b, 0x68, 0x44, 0x6d, 0x72, 0x66, 0x59, 0x69, 0x37, 0x4c, 0x4e, 0x51, 0x5a, 0x52, 0x65, 0x53, 0x7a, 0x49, 0x4a, 0x54, 0x6a, 0x30, 0x2b, 0x6b, 0x75, 0x6e, 0x69, 0x56, 0x79, 0x63, 0x30, 0x75, 0x4d, 0x4e, 0x4f, 0x59, 0x5a, 0x4b, 0x64, 0x48, 0x7a, 0x56, 0x0a, 0x57, 0x59, 0x66, 0x43, 0x50, 0x30, 0x34, 0x4d, 0x58, 0x46, 0x4c, 0x30, 0x50, 0x66, 0x64, 0x53, 0x67, 0x76, 0x48, 0x71, 0x6f, 0x36, 0x7a, 0x39, 0x53, 0x54, 0x51, 0x61, 0x4b, 0x50, 0x4e, 0x42, 0x69, 0x44, 0x6f, 0x54, 0x37, 0x75, 0x6a, 0x65, 0x2f, 0x35, 0x6b, 0x64, 0x58, 0x37, 0x72, 0x4c, 0x36, 0x42, 0x37, 0x79, 0x75, 0x56, 0x42, 0x67, 0x77, 0x44, 0x48, 0x54, 0x63, 0x2b, 0x58, 0x76, 0x76, 0x71, 0x44, 0x74, 0x4d, 0x77, 0x74, 0x30, 0x76, 0x69, 0x41, 0x67, 0x0a, 0x78, 0x47, 0x64, 0x73, 0x38, 0x41, 0x67, 0x44, 0x65, 0x6c, 0x57, 0x41, 0x66, 0x30, 0x5a, 0x4f, 0x6c, 0x71, 0x66, 0x30, 0x48, 0x6a, 0x37, 0x68, 0x39, 0x74, 0x67, 0x4a, 0x34, 0x54, 0x4e, 0x6b, 0x4b, 0x32, 0x50, 0x58, 0x4d, 0x6c, 0x36, 0x66, 0x2b, 0x63, 0x42, 0x37, 0x44, 0x33, 0x68, 0x76, 0x6c, 0x37, 0x79, 0x54, 0x6d, 0x76, 0x6d, 0x63, 0x45, 0x70, 0x42, 0x34, 0x65, 0x6f, 0x43, 0x48, 0x46, 0x64, 0x64, 0x79, 0x64, 0x4a, 0x78, 0x56, 0x64, 0x48, 0x69, 0x78, 0x0a, 0x75, 0x75, 0x46, 0x75, 0x63, 0x41, 0x53, 0x36, 0x54, 0x36, 0x43, 0x36, 0x61, 0x4d, 0x4e, 0x37, 0x2f, 0x7a, 0x48, 0x77, 0x63, 0x7a, 0x30, 0x39, 0x6c, 0x43, 0x71, 0x78, 0x43, 0x30, 0x45, 0x4f, 0x6f, 0x50, 0x35, 0x4e, 0x69, 0x47, 0x56, 0x72, 0x65, 0x54, 0x4f, 0x30, 0x31, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x0a, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x37, 0x55, 0x51, 0x5a, 0x77, 0x4e, 0x50, 0x77, 0x42, 0x6f, 0x76, 0x75, 0x70, 0x48, 0x75, 0x2b, 0x51, 0x75, 0x63, 0x6d, 0x56, 0x4d, 0x69, 0x4f, 0x4e, 0x6e, 0x59, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x0a, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x41, 0x32, 0x75, 0x6b, 0x44, 0x4c, 0x32, 0x70, 0x6b, 0x74, 0x38, 0x52, 0x48, 0x59, 0x5a, 0x59, 0x52, 0x34, 0x6e, 0x4b, 0x4d, 0x31, 0x65, 0x56, 0x4f, 0x38, 0x6c, 0x76, 0x4f, 0x4d, 0x49, 0x6b, 0x50, 0x6b, 0x70, 0x31, 0x36, 0x35, 0x6f, 0x43, 0x4f, 0x47, 0x55, 0x41, 0x46, 0x6a, 0x76, 0x4c, 0x69, 0x35, 0x2b, 0x55, 0x31, 0x4b, 0x4d, 0x74, 0x6c, 0x77, 0x48, 0x0a, 0x36, 0x6f, 0x69, 0x36, 0x6d, 0x59, 0x74, 0x51, 0x6c, 0x4e, 0x65, 0x43, 0x67, 0x4e, 0x39, 0x68, 0x43, 0x51, 0x43, 0x54, 0x72, 0x51, 0x30, 0x55, 0x35, 0x73, 0x37, 0x42, 0x38, 0x6a, 0x65, 0x55, 0x65, 0x4c, 0x42, 0x66, 0x6e, 0x4c, 0x4f, 0x69, 0x63, 0x37, 0x69, 0x50, 0x42, 0x5a, 0x4d, 0x34, 0x7a, 0x59, 0x30, 0x2b, 0x73, 0x4c, 0x6a, 0x37, 0x77, 0x4d, 0x2b, 0x78, 0x38, 0x75, 0x77, 0x74, 0x4c, 0x52, 0x76, 0x4d, 0x37, 0x4b, 0x71, 0x61, 0x73, 0x36, 0x70, 0x67, 0x0a, 0x67, 0x68, 0x73, 0x74, 0x4f, 0x38, 0x4f, 0x45, 0x50, 0x56, 0x65, 0x4b, 0x6c, 0x68, 0x36, 0x63, 0x64, 0x62, 0x6a, 0x54, 0x4d, 0x4d, 0x31, 0x67, 0x43, 0x49, 0x4f, 0x51, 0x30, 0x34, 0x35, 0x55, 0x38, 0x55, 0x31, 0x6d, 0x77, 0x46, 0x31, 0x30, 0x41, 0x30, 0x43, 0x6a, 0x37, 0x6f, 0x56, 0x2b, 0x77, 0x68, 0x39, 0x33, 0x6e, 0x41, 0x62, 0x6f, 0x77, 0x61, 0x63, 0x59, 0x58, 0x56, 0x4b, 0x56, 0x37, 0x63, 0x6e, 0x64, 0x4a, 0x5a, 0x35, 0x74, 0x2b, 0x71, 0x6e, 0x74, 0x0a, 0x6f, 0x7a, 0x6f, 0x30, 0x30, 0x46, 0x6c, 0x37, 0x32, 0x75, 0x31, 0x51, 0x38, 0x7a, 0x57, 0x2f, 0x37, 0x65, 0x73, 0x55, 0x54, 0x54, 0x48, 0x48, 0x59, 0x50, 0x54, 0x61, 0x38, 0x59, 0x65, 0x63, 0x34, 0x6b, 0x6a, 0x69, 0x78, 0x73, 0x55, 0x33, 0x2b, 0x77, 0x59, 0x51, 0x2b, 0x6e, 0x56, 0x5a, 0x5a, 0x6a, 0x46, 0x48, 0x4b, 0x64, 0x70, 0x32, 0x6d, 0x68, 0x7a, 0x70, 0x67, 0x71, 0x37, 0x76, 0x6d, 0x72, 0x6c, 0x52, 0x39, 0x34, 0x67, 0x6a, 0x6d, 0x6d, 0x6d, 0x56, 0x0a, 0x59, 0x6a, 0x7a, 0x6c, 0x56, 0x59, 0x41, 0x32, 0x31, 0x31, 0x51, 0x43, 0x2f, 0x2f, 0x47, 0x35, 0x58, 0x63, 0x37, 0x55, 0x49, 0x32, 0x2f, 0x59, 0x52, 0x59, 0x52, 0x4b, 0x57, 0x32, 0x58, 0x76, 0x69, 0x51, 0x7a, 0x64, 0x46, 0x4b, 0x63, 0x67, 0x79, 0x78, 0x69, 0x6c, 0x4a, 0x62, 0x51, 0x4e, 0x2b, 0x51, 0x48, 0x77, 0x6f, 0x74, 0x4c, 0x30, 0x41, 0x4d, 0x68, 0x30, 0x6a, 0x71, 0x45, 0x71, 0x53, 0x49, 0x35, 0x6c, 0x32, 0x78, 0x50, 0x45, 0x34, 0x69, 0x55, 0x58, 0x0a, 0x66, 0x65, 0x75, 0x2b, 0x68, 0x31, 0x73, 0x58, 0x49, 0x46, 0x52, 0x52, 0x6b, 0x30, 0x70, 0x54, 0x41, 0x77, 0x76, 0x73, 0x58, 0x63, 0x6f, 0x7a, 0x37, 0x57, 0x4c, 0x39, 0x52, 0x63, 0x63, 0x76, 0x57, 0x39, 0x78, 0x59, 0x6f, 0x49, 0x41, 0x35, 0x35, 0x76, 0x72, 0x58, 0x2f, 0x68, 0x4d, 0x55, 0x70, 0x75, 0x30, 0x39, 0x6c, 0x45, 0x70, 0x43, 0x64, 0x4e, 0x54, 0x44, 0x64, 0x31, 0x6c, 0x7a, 0x7a, 0x59, 0x39, 0x47, 0x76, 0x6c, 0x55, 0x34, 0x37, 0x2f, 0x72, 0x6f, 0x0a, 0x6b, 0x54, 0x4c, 0x71, 0x6c, 0x31, 0x67, 0x45, 0x49, 0x74, 0x34, 0x34, 0x77, 0x38, 0x79, 0x38, 0x62, 0x63, 0x6b, 0x7a, 0x4f, 0x6d, 0x6f, 0x4b, 0x61, 0x54, 0x2b, 0x67, 0x79, 0x4f, 0x70, 0x79, 0x6a, 0x34, 0x78, 0x6a, 0x68, 0x69, 0x4f, 0x39, 0x62, 0x54, 0x79, 0x57, 0x6e, 0x70, 0x58, 0x67, 0x53, 0x55, 0x79, 0x71, 0x6f, 0x72, 0x6b, 0x71, 0x47, 0x35, 0x77, 0x32, 0x67, 0x58, 0x6a, 0x74, 0x77, 0x2b, 0x68, 0x47, 0x34, 0x69, 0x5a, 0x5a, 0x52, 0x48, 0x55, 0x65, 0x0a, 0x32, 0x58, 0x57, 0x4a, 0x55, 0x63, 0x30, 0x51, 0x68, 0x4a, 0x31, 0x68, 0x59, 0x4d, 0x74, 0x64, 0x2b, 0x5a, 0x63, 0x69, 0x54, 0x59, 0x36, 0x59, 0x35, 0x75, 0x4e, 0x2f, 0x39, 0x6c, 0x75, 0x37, 0x72, 0x73, 0x33, 0x4b, 0x53, 0x6f, 0x46, 0x72, 0x58, 0x67, 0x76, 0x7a, 0x55, 0x65, 0x46, 0x30, 0x4b, 0x2b, 0x6c, 0x2b, 0x4a, 0x36, 0x66, 0x5a, 0x6d, 0x55, 0x6c, 0x4f, 0x2b, 0x4b, 0x57, 0x41, 0x32, 0x79, 0x55, 0x50, 0x48, 0x47, 0x4e, 0x69, 0x69, 0x73, 0x6b, 0x7a, 0x0a, 0x5a, 0x32, 0x73, 0x38, 0x45, 0x49, 0x50, 0x47, 0x72, 0x64, 0x36, 0x6f, 0x7a, 0x52, 0x61, 0x4f, 0x6a, 0x66, 0x41, 0x48, 0x4e, 0x33, 0x47, 0x66, 0x38, 0x71, 0x76, 0x38, 0x51, 0x66, 0x58, 0x42, 0x69, 0x2b, 0x77, 0x41, 0x4e, 0x31, 0x30, 0x4a, 0x35, 0x55, 0x36, 0x41, 0x37, 0x2f, 0x71, 0x78, 0x58, 0x44, 0x67, 0x47, 0x70, 0x52, 0x74, 0x4b, 0x34, 0x64, 0x77, 0x34, 0x4c, 0x54, 0x7a, 0x63, 0x71, 0x78, 0x2b, 0x51, 0x47, 0x74, 0x56, 0x4b, 0x6e, 0x4f, 0x37, 0x52, 0x0a, 0x63, 0x47, 0x7a, 0x4d, 0x37, 0x76, 0x52, 0x58, 0x2b, 0x42, 0x69, 0x36, 0x68, 0x47, 0x36, 0x48, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x49, 0x64, 0x65, 0x6e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x53, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x5a, 0x6a, 0x43, 0x43, 0x41, 0x30, 0x36, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x43, 0x67, 0x46, 0x43, 0x67, 0x41, 0x41, 0x41, 0x41, 0x55, 0x55, 0x6a, 0x7a, 0x30, 0x5a, 0x38, 0x41, 0x41, 0x41, 0x41, 0x41, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x4e, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4a, 0x53, 0x57, 0x52, 0x6c, 0x62, 0x6c, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x53, 0x6f, 0x77, 0x4b, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x46, 0x4a, 0x5a, 0x47, 0x56, 0x75, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x55, 0x48, 0x56, 0x69, 0x62, 0x47, 0x6c, 0x6a, 0x49, 0x46, 0x4e, 0x6c, 0x59, 0x33, 0x52, 0x76, 0x0a, 0x63, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x51, 0x77, 0x4d, 0x54, 0x45, 0x32, 0x4d, 0x54, 0x63, 0x31, 0x4d, 0x7a, 0x4d, 0x79, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x51, 0x77, 0x4d, 0x54, 0x45, 0x32, 0x4d, 0x54, 0x63, 0x31, 0x4d, 0x7a, 0x4d, 0x79, 0x57, 0x6a, 0x42, 0x4e, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4a, 0x53, 0x57, 0x52, 0x6c, 0x62, 0x6c, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4d, 0x53, 0x6f, 0x77, 0x4b, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x46, 0x4a, 0x5a, 0x47, 0x56, 0x75, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x55, 0x48, 0x56, 0x69, 0x62, 0x47, 0x6c, 0x6a, 0x49, 0x46, 0x4e, 0x6c, 0x59, 0x33, 0x52, 0x76, 0x63, 0x69, 0x42, 0x53, 0x0a, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x45, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x32, 0x49, 0x70, 0x54, 0x38, 0x70, 0x45, 0x69, 0x76, 0x36, 0x45, 0x64, 0x72, 0x43, 0x76, 0x73, 0x6e, 0x64, 0x75, 0x54, 0x79, 0x0a, 0x50, 0x34, 0x6f, 0x37, 0x65, 0x6b, 0x6f, 0x73, 0x4d, 0x53, 0x71, 0x4d, 0x6a, 0x62, 0x43, 0x70, 0x77, 0x7a, 0x46, 0x72, 0x71, 0x48, 0x64, 0x32, 0x68, 0x43, 0x61, 0x32, 0x72, 0x49, 0x46, 0x43, 0x44, 0x51, 0x6a, 0x72, 0x56, 0x56, 0x69, 0x37, 0x65, 0x76, 0x69, 0x38, 0x5a, 0x58, 0x33, 0x79, 0x6f, 0x47, 0x32, 0x4c, 0x71, 0x45, 0x66, 0x70, 0x59, 0x6e, 0x59, 0x65, 0x45, 0x65, 0x34, 0x49, 0x46, 0x4e, 0x47, 0x79, 0x52, 0x42, 0x62, 0x30, 0x36, 0x74, 0x44, 0x36, 0x0a, 0x48, 0x69, 0x39, 0x65, 0x32, 0x38, 0x74, 0x7a, 0x51, 0x61, 0x36, 0x38, 0x41, 0x4c, 0x42, 0x4b, 0x4b, 0x30, 0x43, 0x79, 0x72, 0x4f, 0x45, 0x37, 0x53, 0x38, 0x49, 0x74, 0x6e, 0x65, 0x53, 0x68, 0x6d, 0x2b, 0x77, 0x61, 0x4f, 0x68, 0x37, 0x77, 0x43, 0x4c, 0x50, 0x51, 0x35, 0x43, 0x51, 0x31, 0x42, 0x35, 0x2b, 0x63, 0x74, 0x4d, 0x6c, 0x53, 0x62, 0x64, 0x73, 0x48, 0x79, 0x6f, 0x2b, 0x31, 0x57, 0x2f, 0x43, 0x44, 0x38, 0x30, 0x2f, 0x48, 0x4c, 0x61, 0x58, 0x49, 0x0a, 0x72, 0x63, 0x75, 0x56, 0x49, 0x4b, 0x51, 0x78, 0x4b, 0x46, 0x64, 0x59, 0x57, 0x75, 0x53, 0x4e, 0x47, 0x35, 0x71, 0x72, 0x6e, 0x67, 0x30, 0x4d, 0x38, 0x67, 0x6f, 0x7a, 0x4f, 0x53, 0x49, 0x35, 0x43, 0x70, 0x63, 0x75, 0x38, 0x31, 0x4e, 0x33, 0x75, 0x55, 0x52, 0x46, 0x2f, 0x59, 0x54, 0x4c, 0x4e, 0x69, 0x43, 0x42, 0x57, 0x53, 0x32, 0x61, 0x62, 0x32, 0x31, 0x49, 0x53, 0x47, 0x48, 0x4b, 0x54, 0x4e, 0x39, 0x54, 0x30, 0x61, 0x39, 0x53, 0x76, 0x45, 0x53, 0x66, 0x0a, 0x71, 0x79, 0x39, 0x72, 0x67, 0x33, 0x4c, 0x76, 0x64, 0x59, 0x44, 0x61, 0x42, 0x6a, 0x4d, 0x62, 0x58, 0x63, 0x6a, 0x61, 0x59, 0x38, 0x5a, 0x4e, 0x7a, 0x61, 0x78, 0x6d, 0x4d, 0x63, 0x33, 0x52, 0x33, 0x6a, 0x36, 0x48, 0x45, 0x44, 0x62, 0x68, 0x75, 0x61, 0x52, 0x36, 0x37, 0x32, 0x42, 0x51, 0x73, 0x73, 0x76, 0x4b, 0x70, 0x6c, 0x62, 0x67, 0x4e, 0x36, 0x2b, 0x72, 0x4e, 0x42, 0x4d, 0x35, 0x4a, 0x65, 0x67, 0x35, 0x5a, 0x75, 0x53, 0x59, 0x65, 0x71, 0x6f, 0x53, 0x0a, 0x6d, 0x4a, 0x78, 0x5a, 0x5a, 0x6f, 0x59, 0x2b, 0x72, 0x66, 0x47, 0x77, 0x79, 0x6a, 0x34, 0x47, 0x44, 0x33, 0x76, 0x77, 0x45, 0x55, 0x73, 0x33, 0x6f, 0x45, 0x52, 0x74, 0x65, 0x38, 0x75, 0x6f, 0x6a, 0x48, 0x48, 0x30, 0x31, 0x62, 0x57, 0x52, 0x4e, 0x73, 0x7a, 0x77, 0x46, 0x63, 0x59, 0x72, 0x33, 0x6c, 0x45, 0x58, 0x73, 0x5a, 0x64, 0x4d, 0x55, 0x44, 0x32, 0x78, 0x6c, 0x56, 0x6c, 0x38, 0x42, 0x58, 0x30, 0x74, 0x49, 0x64, 0x55, 0x41, 0x76, 0x77, 0x46, 0x6e, 0x0a, 0x6f, 0x6c, 0x35, 0x37, 0x70, 0x6c, 0x7a, 0x79, 0x39, 0x79, 0x4c, 0x78, 0x6b, 0x41, 0x32, 0x54, 0x32, 0x36, 0x70, 0x45, 0x55, 0x57, 0x62, 0x4d, 0x66, 0x58, 0x59, 0x44, 0x36, 0x32, 0x71, 0x6f, 0x4b, 0x6a, 0x67, 0x5a, 0x6c, 0x33, 0x59, 0x4e, 0x61, 0x34, 0x70, 0x68, 0x2b, 0x62, 0x7a, 0x32, 0x37, 0x6e, 0x62, 0x39, 0x63, 0x43, 0x76, 0x64, 0x4b, 0x54, 0x7a, 0x34, 0x43, 0x68, 0x35, 0x62, 0x51, 0x68, 0x79, 0x4c, 0x56, 0x69, 0x39, 0x56, 0x47, 0x78, 0x79, 0x68, 0x0a, 0x4c, 0x72, 0x58, 0x48, 0x46, 0x75, 0x62, 0x34, 0x71, 0x6a, 0x79, 0x53, 0x6a, 0x6d, 0x6d, 0x32, 0x41, 0x63, 0x47, 0x31, 0x68, 0x70, 0x32, 0x4a, 0x44, 0x77, 0x73, 0x34, 0x6c, 0x46, 0x54, 0x6f, 0x36, 0x74, 0x79, 0x65, 0x50, 0x53, 0x57, 0x38, 0x55, 0x79, 0x62, 0x74, 0x31, 0x61, 0x73, 0x35, 0x71, 0x73, 0x56, 0x41, 0x54, 0x46, 0x53, 0x72, 0x73, 0x72, 0x54, 0x5a, 0x32, 0x66, 0x6a, 0x58, 0x63, 0x74, 0x73, 0x63, 0x76, 0x47, 0x32, 0x39, 0x5a, 0x56, 0x2f, 0x76, 0x0a, 0x69, 0x44, 0x55, 0x71, 0x5a, 0x69, 0x2f, 0x75, 0x39, 0x72, 0x4e, 0x6c, 0x38, 0x44, 0x4f, 0x4e, 0x66, 0x4a, 0x68, 0x42, 0x61, 0x55, 0x59, 0x50, 0x51, 0x78, 0x78, 0x70, 0x2b, 0x70, 0x75, 0x31, 0x30, 0x47, 0x46, 0x71, 0x7a, 0x63, 0x70, 0x4c, 0x32, 0x55, 0x79, 0x51, 0x52, 0x71, 0x73, 0x56, 0x57, 0x61, 0x46, 0x48, 0x56, 0x43, 0x6b, 0x75, 0x67, 0x79, 0x68, 0x66, 0x48, 0x4d, 0x4b, 0x69, 0x71, 0x33, 0x49, 0x58, 0x41, 0x41, 0x61, 0x4f, 0x52, 0x65, 0x79, 0x4c, 0x0a, 0x34, 0x6a, 0x4d, 0x39, 0x66, 0x39, 0x6f, 0x5a, 0x52, 0x4f, 0x52, 0x69, 0x63, 0x73, 0x50, 0x66, 0x49, 0x73, 0x62, 0x79, 0x56, 0x74, 0x54, 0x64, 0x58, 0x35, 0x56, 0x79, 0x37, 0x57, 0x31, 0x66, 0x39, 0x30, 0x67, 0x44, 0x57, 0x2f, 0x33, 0x46, 0x4b, 0x71, 0x44, 0x32, 0x63, 0x79, 0x4f, 0x45, 0x45, 0x42, 0x73, 0x42, 0x35, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x0a, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x34, 0x33, 0x48, 0x67, 0x6e, 0x74, 0x69, 0x6e, 0x51, 0x74, 0x6e, 0x62, 0x63, 0x5a, 0x46, 0x72, 0x6c, 0x4a, 0x50, 0x72, 0x77, 0x36, 0x50, 0x52, 0x46, 0x4b, 0x4d, 0x77, 0x0a, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x45, 0x66, 0x36, 0x33, 0x51, 0x71, 0x77, 0x45, 0x5a, 0x45, 0x34, 0x72, 0x55, 0x31, 0x64, 0x39, 0x2b, 0x55, 0x4f, 0x6c, 0x31, 0x51, 0x5a, 0x67, 0x6b, 0x69, 0x48, 0x56, 0x49, 0x79, 0x71, 0x5a, 0x4a, 0x6e, 0x59, 0x57, 0x76, 0x36, 0x49, 0x41, 0x63, 0x56, 0x59, 0x70, 0x5a, 0x6d, 0x78, 0x49, 0x31, 0x51, 0x6a, 0x0a, 0x74, 0x32, 0x6f, 0x64, 0x49, 0x46, 0x66, 0x6c, 0x41, 0x57, 0x4a, 0x42, 0x46, 0x39, 0x4d, 0x4a, 0x32, 0x33, 0x58, 0x4c, 0x62, 0x6c, 0x53, 0x51, 0x64, 0x66, 0x34, 0x61, 0x6e, 0x34, 0x45, 0x4b, 0x77, 0x74, 0x33, 0x58, 0x39, 0x77, 0x6e, 0x51, 0x57, 0x33, 0x49, 0x56, 0x35, 0x42, 0x34, 0x4a, 0x61, 0x6a, 0x30, 0x7a, 0x38, 0x79, 0x47, 0x61, 0x35, 0x68, 0x56, 0x2b, 0x72, 0x56, 0x48, 0x56, 0x44, 0x52, 0x44, 0x74, 0x66, 0x55, 0x4c, 0x41, 0x6a, 0x2b, 0x37, 0x41, 0x0a, 0x6d, 0x67, 0x6a, 0x56, 0x51, 0x64, 0x5a, 0x63, 0x44, 0x69, 0x46, 0x70, 0x62, 0x6f, 0x42, 0x68, 0x44, 0x68, 0x58, 0x41, 0x75, 0x4d, 0x2f, 0x46, 0x53, 0x52, 0x4a, 0x53, 0x7a, 0x4c, 0x34, 0x36, 0x7a, 0x4e, 0x51, 0x75, 0x4f, 0x41, 0x58, 0x65, 0x4e, 0x66, 0x30, 0x66, 0x62, 0x37, 0x69, 0x41, 0x61, 0x4a, 0x67, 0x39, 0x54, 0x61, 0x44, 0x4b, 0x51, 0x47, 0x58, 0x53, 0x63, 0x33, 0x7a, 0x31, 0x69, 0x39, 0x6b, 0x4b, 0x6c, 0x54, 0x2f, 0x59, 0x50, 0x79, 0x4e, 0x74, 0x0a, 0x47, 0x74, 0x45, 0x71, 0x4a, 0x42, 0x6e, 0x5a, 0x68, 0x62, 0x4d, 0x58, 0x37, 0x33, 0x68, 0x75, 0x71, 0x56, 0x6a, 0x52, 0x49, 0x39, 0x50, 0x48, 0x45, 0x2b, 0x31, 0x79, 0x4a, 0x58, 0x39, 0x64, 0x73, 0x58, 0x4e, 0x77, 0x30, 0x48, 0x38, 0x47, 0x6c, 0x77, 0x6d, 0x45, 0x4b, 0x59, 0x42, 0x68, 0x48, 0x66, 0x70, 0x65, 0x2f, 0x33, 0x4f, 0x73, 0x6f, 0x4f, 0x4f, 0x4a, 0x75, 0x42, 0x78, 0x78, 0x46, 0x63, 0x62, 0x65, 0x4d, 0x58, 0x38, 0x53, 0x33, 0x4f, 0x46, 0x74, 0x0a, 0x6d, 0x36, 0x2f, 0x6e, 0x36, 0x4a, 0x39, 0x31, 0x65, 0x45, 0x79, 0x72, 0x52, 0x6a, 0x75, 0x61, 0x7a, 0x72, 0x38, 0x46, 0x47, 0x46, 0x31, 0x4e, 0x46, 0x54, 0x77, 0x57, 0x6d, 0x68, 0x6c, 0x51, 0x42, 0x4a, 0x71, 0x79, 0x6d, 0x6d, 0x39, 0x6c, 0x69, 0x31, 0x4a, 0x66, 0x50, 0x46, 0x67, 0x45, 0x4b, 0x43, 0x58, 0x41, 0x5a, 0x6d, 0x45, 0x78, 0x66, 0x72, 0x6e, 0x67, 0x64, 0x62, 0x6b, 0x61, 0x71, 0x49, 0x48, 0x57, 0x63, 0x68, 0x65, 0x7a, 0x78, 0x51, 0x4d, 0x78, 0x0a, 0x4e, 0x52, 0x46, 0x34, 0x65, 0x4b, 0x4c, 0x67, 0x36, 0x54, 0x43, 0x4d, 0x66, 0x34, 0x44, 0x66, 0x57, 0x4e, 0x38, 0x38, 0x75, 0x69, 0x65, 0x57, 0x34, 0x6f, 0x41, 0x30, 0x62, 0x65, 0x4f, 0x59, 0x30, 0x32, 0x51, 0x6e, 0x72, 0x45, 0x68, 0x2b, 0x4b, 0x48, 0x64, 0x63, 0x78, 0x69, 0x56, 0x68, 0x4a, 0x66, 0x69, 0x46, 0x44, 0x47, 0x58, 0x36, 0x78, 0x44, 0x49, 0x76, 0x70, 0x5a, 0x67, 0x46, 0x35, 0x50, 0x67, 0x4c, 0x5a, 0x78, 0x59, 0x57, 0x78, 0x6f, 0x4b, 0x34, 0x0a, 0x4d, 0x68, 0x6e, 0x35, 0x2b, 0x62, 0x6c, 0x35, 0x33, 0x42, 0x2f, 0x4e, 0x36, 0x36, 0x2b, 0x72, 0x44, 0x74, 0x30, 0x62, 0x32, 0x30, 0x58, 0x6b, 0x65, 0x75, 0x63, 0x43, 0x34, 0x70, 0x56, 0x64, 0x2f, 0x47, 0x6e, 0x77, 0x55, 0x32, 0x6c, 0x68, 0x6c, 0x58, 0x56, 0x35, 0x43, 0x31, 0x35, 0x56, 0x35, 0x6a, 0x67, 0x63, 0x6c, 0x4b, 0x6c, 0x5a, 0x4d, 0x35, 0x37, 0x49, 0x63, 0x58, 0x52, 0x35, 0x66, 0x31, 0x47, 0x4a, 0x74, 0x73, 0x68, 0x71, 0x75, 0x44, 0x44, 0x49, 0x0a, 0x61, 0x6a, 0x6a, 0x44, 0x62, 0x70, 0x37, 0x68, 0x4e, 0x78, 0x62, 0x71, 0x42, 0x57, 0x4a, 0x4d, 0x57, 0x78, 0x4a, 0x48, 0x37, 0x61, 0x65, 0x30, 0x73, 0x31, 0x68, 0x57, 0x78, 0x30, 0x6e, 0x7a, 0x66, 0x78, 0x4a, 0x6f, 0x43, 0x54, 0x46, 0x78, 0x38, 0x47, 0x33, 0x34, 0x54, 0x6b, 0x66, 0x37, 0x31, 0x6f, 0x58, 0x75, 0x78, 0x56, 0x68, 0x41, 0x47, 0x61, 0x51, 0x64, 0x70, 0x2f, 0x6c, 0x4c, 0x51, 0x7a, 0x66, 0x63, 0x61, 0x46, 0x70, 0x50, 0x7a, 0x2b, 0x76, 0x43, 0x0a, 0x5a, 0x48, 0x54, 0x65, 0x74, 0x42, 0x58, 0x5a, 0x39, 0x46, 0x52, 0x55, 0x47, 0x69, 0x38, 0x63, 0x31, 0x35, 0x64, 0x78, 0x56, 0x4a, 0x43, 0x4f, 0x32, 0x53, 0x43, 0x64, 0x55, 0x79, 0x74, 0x2f, 0x71, 0x34, 0x2f, 0x69, 0x36, 0x6a, 0x43, 0x38, 0x55, 0x44, 0x66, 0x76, 0x38, 0x55, 0x65, 0x31, 0x66, 0x58, 0x77, 0x73, 0x42, 0x4f, 0x78, 0x6f, 0x6e, 0x62, 0x52, 0x4a, 0x52, 0x42, 0x44, 0x30, 0x63, 0x6b, 0x73, 0x63, 0x5a, 0x4f, 0x66, 0x38, 0x35, 0x6d, 0x75, 0x51, 0x0a, 0x33, 0x57, 0x6c, 0x39, 0x61, 0x66, 0x30, 0x41, 0x56, 0x71, 0x57, 0x33, 0x72, 0x4c, 0x61, 0x74, 0x74, 0x38, 0x6f, 0x2b, 0x41, 0x65, 0x2b, 0x63, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 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, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x50, 0x6a, 0x43, 0x43, 0x41, 0x79, 0x61, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x45, 0x53, 0x6c, 0x4f, 0x4d, 0x4b, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x43, 0x42, 0x76, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x46, 0x6a, 0x41, 0x55, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x6f, 0x54, 0x44, 0x55, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4b, 0x44, 0x41, 0x6d, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x48, 0x31, 0x4e, 0x6c, 0x5a, 0x53, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x57, 0x35, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x35, 0x75, 0x5a, 0x58, 0x51, 0x76, 0x62, 0x47, 0x56, 0x6e, 0x59, 0x57, 0x77, 0x74, 0x64, 0x47, 0x56, 0x79, 0x0a, 0x62, 0x58, 0x4d, 0x78, 0x4f, 0x54, 0x41, 0x33, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x4d, 0x43, 0x68, 0x6a, 0x4b, 0x53, 0x41, 0x79, 0x4d, 0x44, 0x41, 0x35, 0x49, 0x45, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x67, 0x4c, 0x53, 0x42, 0x6d, 0x62, 0x33, 0x49, 0x67, 0x59, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x70, 0x6c, 0x5a, 0x43, 0x42, 0x31, 0x63, 0x32, 0x55, 0x67, 0x0a, 0x62, 0x32, 0x35, 0x73, 0x65, 0x54, 0x45, 0x79, 0x4d, 0x44, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x70, 0x52, 0x57, 0x35, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x43, 0x30, 0x67, 0x52, 0x7a, 0x49, 0x77, 0x0a, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x44, 0x6b, 0x77, 0x4e, 0x7a, 0x41, 0x33, 0x4d, 0x54, 0x63, 0x79, 0x4e, 0x54, 0x55, 0x30, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x41, 0x78, 0x4d, 0x6a, 0x41, 0x33, 0x4d, 0x54, 0x63, 0x31, 0x4e, 0x54, 0x55, 0x30, 0x57, 0x6a, 0x43, 0x42, 0x76, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x46, 0x6a, 0x41, 0x55, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x0a, 0x44, 0x55, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4b, 0x44, 0x41, 0x6d, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x48, 0x31, 0x4e, 0x6c, 0x5a, 0x53, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x57, 0x35, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x35, 0x75, 0x5a, 0x58, 0x51, 0x76, 0x62, 0x47, 0x56, 0x6e, 0x59, 0x57, 0x77, 0x74, 0x64, 0x47, 0x56, 0x79, 0x62, 0x58, 0x4d, 0x78, 0x0a, 0x4f, 0x54, 0x41, 0x33, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x4d, 0x43, 0x68, 0x6a, 0x4b, 0x53, 0x41, 0x79, 0x4d, 0x44, 0x41, 0x35, 0x49, 0x45, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x67, 0x4c, 0x53, 0x42, 0x6d, 0x62, 0x33, 0x49, 0x67, 0x59, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x70, 0x6c, 0x5a, 0x43, 0x42, 0x31, 0x63, 0x32, 0x55, 0x67, 0x62, 0x32, 0x35, 0x73, 0x0a, 0x65, 0x54, 0x45, 0x79, 0x4d, 0x44, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x70, 0x52, 0x57, 0x35, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x43, 0x30, 0x67, 0x52, 0x7a, 0x49, 0x77, 0x67, 0x67, 0x45, 0x69, 0x0a, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43, 0x36, 0x68, 0x4c, 0x5a, 0x79, 0x32, 0x35, 0x34, 0x4d, 0x61, 0x2b, 0x4b, 0x5a, 0x36, 0x54, 0x41, 0x42, 0x70, 0x33, 0x62, 0x71, 0x4d, 0x72, 0x69, 0x56, 0x51, 0x52, 0x72, 0x4a, 0x32, 0x6d, 0x46, 0x4f, 0x57, 0x48, 0x4c, 0x50, 0x0a, 0x2f, 0x76, 0x61, 0x43, 0x65, 0x62, 0x39, 0x7a, 0x59, 0x51, 0x59, 0x4b, 0x70, 0x53, 0x66, 0x59, 0x73, 0x31, 0x2f, 0x54, 0x52, 0x55, 0x34, 0x63, 0x63, 0x74, 0x5a, 0x4f, 0x4d, 0x76, 0x4a, 0x79, 0x69, 0x67, 0x2f, 0x33, 0x67, 0x78, 0x6e, 0x51, 0x61, 0x6f, 0x43, 0x41, 0x41, 0x45, 0x55, 0x65, 0x73, 0x4d, 0x66, 0x6e, 0x6d, 0x72, 0x38, 0x53, 0x56, 0x79, 0x63, 0x63, 0x6f, 0x32, 0x67, 0x76, 0x43, 0x6f, 0x65, 0x39, 0x61, 0x6d, 0x73, 0x4f, 0x58, 0x6d, 0x58, 0x7a, 0x0a, 0x48, 0x48, 0x66, 0x56, 0x31, 0x49, 0x57, 0x4e, 0x63, 0x43, 0x47, 0x30, 0x73, 0x7a, 0x4c, 0x6e, 0x69, 0x36, 0x4c, 0x56, 0x68, 0x6a, 0x6b, 0x43, 0x73, 0x62, 0x6a, 0x53, 0x52, 0x38, 0x37, 0x6b, 0x79, 0x55, 0x6e, 0x45, 0x4f, 0x36, 0x66, 0x65, 0x2b, 0x31, 0x52, 0x39, 0x56, 0x37, 0x37, 0x77, 0x36, 0x47, 0x37, 0x43, 0x65, 0x62, 0x49, 0x36, 0x43, 0x31, 0x58, 0x69, 0x55, 0x4a, 0x67, 0x57, 0x4d, 0x68, 0x4e, 0x63, 0x4c, 0x33, 0x68, 0x57, 0x77, 0x63, 0x4b, 0x55, 0x0a, 0x73, 0x2f, 0x4a, 0x61, 0x35, 0x43, 0x65, 0x61, 0x6e, 0x79, 0x54, 0x58, 0x78, 0x75, 0x7a, 0x51, 0x6d, 0x79, 0x57, 0x43, 0x34, 0x38, 0x7a, 0x43, 0x78, 0x45, 0x58, 0x46, 0x6a, 0x4a, 0x64, 0x36, 0x42, 0x6d, 0x73, 0x71, 0x45, 0x5a, 0x2b, 0x70, 0x43, 0x6d, 0x35, 0x49, 0x4f, 0x32, 0x2f, 0x62, 0x31, 0x42, 0x45, 0x5a, 0x51, 0x76, 0x65, 0x50, 0x42, 0x37, 0x2f, 0x31, 0x55, 0x31, 0x2b, 0x63, 0x50, 0x76, 0x51, 0x58, 0x4c, 0x4f, 0x5a, 0x70, 0x72, 0x45, 0x34, 0x79, 0x0a, 0x54, 0x47, 0x4a, 0x33, 0x36, 0x72, 0x66, 0x6f, 0x35, 0x62, 0x73, 0x30, 0x76, 0x42, 0x6d, 0x4c, 0x72, 0x70, 0x78, 0x52, 0x35, 0x37, 0x64, 0x2b, 0x74, 0x56, 0x4f, 0x78, 0x4d, 0x79, 0x4c, 0x6c, 0x62, 0x63, 0x39, 0x77, 0x50, 0x42, 0x72, 0x36, 0x34, 0x70, 0x74, 0x6e, 0x74, 0x6f, 0x50, 0x30, 0x6a, 0x61, 0x57, 0x76, 0x59, 0x6b, 0x78, 0x4e, 0x34, 0x46, 0x69, 0x73, 0x5a, 0x44, 0x51, 0x53, 0x41, 0x2f, 0x69, 0x32, 0x6a, 0x5a, 0x52, 0x6a, 0x4a, 0x4b, 0x52, 0x78, 0x0a, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x71, 0x63, 0x69, 0x5a, 0x36, 0x0a, 0x30, 0x42, 0x37, 0x76, 0x66, 0x65, 0x63, 0x37, 0x61, 0x56, 0x48, 0x55, 0x62, 0x49, 0x32, 0x66, 0x6b, 0x42, 0x4a, 0x6d, 0x71, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x45, 0x41, 0x65, 0x5a, 0x38, 0x64, 0x6c, 0x73, 0x61, 0x32, 0x65, 0x54, 0x38, 0x69, 0x6a, 0x59, 0x66, 0x54, 0x68, 0x77, 0x4d, 0x45, 0x59, 0x47, 0x70, 0x72, 0x6d, 0x69, 0x35, 0x5a, 0x0a, 0x69, 0x58, 0x4d, 0x52, 0x72, 0x45, 0x50, 0x52, 0x39, 0x52, 0x50, 0x2f, 0x6a, 0x54, 0x6b, 0x72, 0x77, 0x50, 0x4b, 0x39, 0x54, 0x33, 0x43, 0x4d, 0x71, 0x53, 0x2f, 0x71, 0x46, 0x38, 0x51, 0x4c, 0x56, 0x4a, 0x37, 0x55, 0x47, 0x35, 0x61, 0x59, 0x4d, 0x7a, 0x79, 0x6f, 0x72, 0x57, 0x4b, 0x69, 0x41, 0x48, 0x61, 0x72, 0x57, 0x57, 0x6c, 0x75, 0x42, 0x68, 0x31, 0x2b, 0x78, 0x4c, 0x6c, 0x45, 0x6a, 0x5a, 0x69, 0x76, 0x45, 0x74, 0x52, 0x68, 0x32, 0x77, 0x6f, 0x5a, 0x0a, 0x52, 0x6b, 0x66, 0x7a, 0x36, 0x2f, 0x64, 0x6a, 0x77, 0x55, 0x41, 0x46, 0x51, 0x4b, 0x58, 0x53, 0x74, 0x2f, 0x53, 0x31, 0x6d, 0x6a, 0x61, 0x2f, 0x71, 0x59, 0x68, 0x32, 0x69, 0x41, 0x52, 0x56, 0x42, 0x43, 0x75, 0x63, 0x68, 0x33, 0x38, 0x61, 0x4e, 0x7a, 0x78, 0x2b, 0x4c, 0x61, 0x55, 0x61, 0x32, 0x4e, 0x53, 0x4a, 0x58, 0x73, 0x71, 0x39, 0x72, 0x44, 0x31, 0x73, 0x32, 0x47, 0x32, 0x76, 0x31, 0x66, 0x4e, 0x32, 0x44, 0x38, 0x30, 0x37, 0x69, 0x44, 0x67, 0x69, 0x0a, 0x6e, 0x57, 0x79, 0x54, 0x6d, 0x73, 0x51, 0x39, 0x76, 0x34, 0x49, 0x62, 0x5a, 0x54, 0x2b, 0x6d, 0x44, 0x31, 0x32, 0x71, 0x2f, 0x4f, 0x57, 0x79, 0x46, 0x63, 0x71, 0x31, 0x72, 0x63, 0x61, 0x38, 0x50, 0x64, 0x43, 0x45, 0x36, 0x4f, 0x6f, 0x47, 0x63, 0x72, 0x42, 0x4e, 0x4f, 0x54, 0x4a, 0x34, 0x76, 0x7a, 0x34, 0x52, 0x6e, 0x41, 0x75, 0x6b, 0x6e, 0x5a, 0x6f, 0x68, 0x38, 0x2f, 0x43, 0x62, 0x43, 0x7a, 0x42, 0x34, 0x32, 0x38, 0x48, 0x63, 0x68, 0x30, 0x50, 0x2b, 0x0a, 0x76, 0x47, 0x4f, 0x61, 0x79, 0x73, 0x58, 0x43, 0x48, 0x4d, 0x6e, 0x48, 0x6a, 0x66, 0x38, 0x37, 0x45, 0x6c, 0x67, 0x49, 0x35, 0x72, 0x59, 0x39, 0x37, 0x48, 0x6f, 0x73, 0x54, 0x76, 0x75, 0x44, 0x6c, 0x73, 0x34, 0x4d, 0x50, 0x47, 0x6d, 0x48, 0x56, 0x48, 0x4f, 0x6b, 0x63, 0x38, 0x4b, 0x54, 0x2f, 0x31, 0x45, 0x51, 0x72, 0x42, 0x56, 0x55, 0x41, 0x64, 0x6a, 0x38, 0x42, 0x62, 0x47, 0x4a, 0x6f, 0x58, 0x39, 0x30, 0x67, 0x35, 0x70, 0x4a, 0x31, 0x39, 0x78, 0x4f, 0x0a, 0x65, 0x34, 0x70, 0x49, 0x62, 0x34, 0x74, 0x46, 0x39, 0x67, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 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, 0x45, 0x43, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x2b, 0x54, 0x43, 0x43, 0x41, 0x6f, 0x43, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4e, 0x41, 0x4b, 0x61, 0x4c, 0x65, 0x53, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x41, 0x55, 0x4e, 0x43, 0x52, 0x2b, 0x54, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x43, 0x42, 0x76, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x0a, 0x46, 0x6a, 0x41, 0x55, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x44, 0x55, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4b, 0x44, 0x41, 0x6d, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x48, 0x31, 0x4e, 0x6c, 0x5a, 0x53, 0x42, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x57, 0x35, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x35, 0x75, 0x5a, 0x58, 0x51, 0x76, 0x62, 0x47, 0x56, 0x6e, 0x0a, 0x59, 0x57, 0x77, 0x74, 0x64, 0x47, 0x56, 0x79, 0x62, 0x58, 0x4d, 0x78, 0x4f, 0x54, 0x41, 0x33, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x4d, 0x43, 0x68, 0x6a, 0x4b, 0x53, 0x41, 0x79, 0x4d, 0x44, 0x45, 0x79, 0x49, 0x45, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x67, 0x4c, 0x53, 0x42, 0x6d, 0x62, 0x33, 0x49, 0x67, 0x59, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x70, 0x6c, 0x0a, 0x5a, 0x43, 0x42, 0x31, 0x63, 0x32, 0x55, 0x67, 0x62, 0x32, 0x35, 0x73, 0x65, 0x54, 0x45, 0x7a, 0x4d, 0x44, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x71, 0x52, 0x57, 0x35, 0x30, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x0a, 0x49, 0x43, 0x30, 0x67, 0x52, 0x55, 0x4d, 0x78, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x79, 0x4d, 0x54, 0x49, 0x78, 0x4f, 0x44, 0x45, 0x31, 0x4d, 0x6a, 0x55, 0x7a, 0x4e, 0x6c, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x33, 0x4d, 0x54, 0x49, 0x78, 0x4f, 0x44, 0x45, 0x31, 0x4e, 0x54, 0x55, 0x7a, 0x4e, 0x6c, 0x6f, 0x77, 0x67, 0x62, 0x38, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x59, 0x77, 0x0a, 0x46, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x31, 0x46, 0x62, 0x6e, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x4d, 0x53, 0x67, 0x77, 0x4a, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x39, 0x54, 0x5a, 0x57, 0x55, 0x67, 0x64, 0x33, 0x64, 0x33, 0x4c, 0x6d, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x75, 0x62, 0x6d, 0x56, 0x30, 0x4c, 0x32, 0x78, 0x6c, 0x5a, 0x32, 0x46, 0x73, 0x0a, 0x4c, 0x58, 0x52, 0x6c, 0x63, 0x6d, 0x31, 0x7a, 0x4d, 0x54, 0x6b, 0x77, 0x4e, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x7a, 0x41, 0x6f, 0x59, 0x79, 0x6b, 0x67, 0x4d, 0x6a, 0x41, 0x78, 0x4d, 0x69, 0x42, 0x46, 0x62, 0x6e, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x49, 0x43, 0x30, 0x67, 0x5a, 0x6d, 0x39, 0x79, 0x49, 0x47, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x36, 0x5a, 0x57, 0x51, 0x67, 0x0a, 0x64, 0x58, 0x4e, 0x6c, 0x49, 0x47, 0x39, 0x75, 0x62, 0x48, 0x6b, 0x78, 0x4d, 0x7a, 0x41, 0x78, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4b, 0x6b, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x41, 0x74, 0x0a, 0x49, 0x45, 0x56, 0x44, 0x4d, 0x54, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x49, 0x51, 0x54, 0x79, 0x64, 0x43, 0x36, 0x62, 0x55, 0x46, 0x37, 0x34, 0x6d, 0x7a, 0x51, 0x36, 0x31, 0x56, 0x66, 0x5a, 0x67, 0x49, 0x61, 0x4a, 0x50, 0x52, 0x62, 0x69, 0x57, 0x6c, 0x48, 0x34, 0x37, 0x6a, 0x43, 0x66, 0x66, 0x48, 0x79, 0x0a, 0x41, 0x73, 0x57, 0x66, 0x6f, 0x50, 0x5a, 0x62, 0x31, 0x59, 0x73, 0x47, 0x47, 0x59, 0x5a, 0x50, 0x55, 0x78, 0x42, 0x74, 0x42, 0x79, 0x51, 0x6e, 0x6f, 0x61, 0x44, 0x34, 0x31, 0x55, 0x63, 0x5a, 0x59, 0x55, 0x78, 0x39, 0x79, 0x70, 0x4d, 0x6e, 0x36, 0x6e, 0x51, 0x4d, 0x37, 0x32, 0x2b, 0x57, 0x43, 0x66, 0x35, 0x6a, 0x37, 0x48, 0x42, 0x64, 0x4e, 0x71, 0x31, 0x6e, 0x64, 0x36, 0x37, 0x4a, 0x6e, 0x58, 0x78, 0x56, 0x52, 0x44, 0x71, 0x69, 0x59, 0x31, 0x45, 0x66, 0x0a, 0x39, 0x65, 0x4e, 0x69, 0x31, 0x4b, 0x6c, 0x48, 0x42, 0x7a, 0x37, 0x4d, 0x49, 0x4b, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x0a, 0x46, 0x4c, 0x64, 0x6a, 0x35, 0x78, 0x72, 0x64, 0x6a, 0x65, 0x6b, 0x49, 0x70, 0x6c, 0x57, 0x44, 0x70, 0x4f, 0x42, 0x71, 0x55, 0x45, 0x46, 0x6c, 0x45, 0x55, 0x4a, 0x4a, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x44, 0x41, 0x32, 0x63, 0x41, 0x4d, 0x47, 0x51, 0x43, 0x4d, 0x47, 0x46, 0x35, 0x32, 0x4f, 0x56, 0x43, 0x52, 0x39, 0x38, 0x63, 0x72, 0x6c, 0x4f, 0x5a, 0x46, 0x37, 0x5a, 0x76, 0x48, 0x48, 0x33, 0x68, 0x0a, 0x76, 0x78, 0x47, 0x55, 0x30, 0x51, 0x4f, 0x49, 0x64, 0x65, 0x53, 0x4e, 0x69, 0x61, 0x53, 0x4b, 0x64, 0x30, 0x62, 0x65, 0x62, 0x57, 0x48, 0x76, 0x41, 0x76, 0x58, 0x37, 0x74, 0x64, 0x2f, 0x4d, 0x2f, 0x6b, 0x37, 0x2f, 0x2f, 0x71, 0x6e, 0x6d, 0x70, 0x77, 0x49, 0x77, 0x57, 0x35, 0x6e, 0x58, 0x68, 0x54, 0x63, 0x47, 0x74, 0x58, 0x73, 0x49, 0x2f, 0x65, 0x73, 0x6e, 0x69, 0x30, 0x71, 0x55, 0x2b, 0x65, 0x48, 0x36, 0x70, 0x34, 0x34, 0x6d, 0x43, 0x4f, 0x68, 0x38, 0x0a, 0x6b, 0x6d, 0x68, 0x74, 0x63, 0x39, 0x68, 0x76, 0x4a, 0x71, 0x77, 0x68, 0x41, 0x72, 0x69, 0x5a, 0x74, 0x79, 0x5a, 0x42, 0x57, 0x79, 0x56, 0x67, 0x72, 0x74, 0x42, 0x49, 0x47, 0x75, 0x34, 0x47, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x46, 0x43, 0x41, 0x20, 0x45, 0x56, 0x20, 0x52, 0x4f, 0x4f, 0x54, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x6a, 0x54, 0x43, 0x43, 0x41, 0x33, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x45, 0x47, 0x45, 0x72, 0x4d, 0x31, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x57, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x44, 0x54, 0x6a, 0x45, 0x77, 0x4d, 0x43, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x43, 0x67, 0x77, 0x6e, 0x51, 0x32, 0x68, 0x70, 0x62, 0x6d, 0x45, 0x67, 0x52, 0x6d, 0x6c, 0x75, 0x59, 0x57, 0x35, 0x6a, 0x61, 0x57, 0x46, 0x73, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x41, 0x78, 0x44, 0x52, 0x6b, 0x4e, 0x42, 0x0a, 0x49, 0x45, 0x56, 0x57, 0x49, 0x46, 0x4a, 0x50, 0x54, 0x31, 0x51, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x49, 0x77, 0x4f, 0x44, 0x41, 0x34, 0x4d, 0x44, 0x4d, 0x77, 0x4e, 0x7a, 0x41, 0x78, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x6a, 0x6b, 0x78, 0x4d, 0x6a, 0x4d, 0x78, 0x4d, 0x44, 0x4d, 0x77, 0x4e, 0x7a, 0x41, 0x78, 0x57, 0x6a, 0x42, 0x57, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x44, 0x54, 0x6a, 0x45, 0x77, 0x0a, 0x4d, 0x43, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x6e, 0x51, 0x32, 0x68, 0x70, 0x62, 0x6d, 0x45, 0x67, 0x52, 0x6d, 0x6c, 0x75, 0x59, 0x57, 0x35, 0x6a, 0x61, 0x57, 0x46, 0x73, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x0a, 0x44, 0x41, 0x78, 0x44, 0x52, 0x6b, 0x4e, 0x42, 0x49, 0x45, 0x56, 0x57, 0x49, 0x46, 0x4a, 0x50, 0x54, 0x31, 0x51, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x44, 0x58, 0x58, 0x57, 0x76, 0x4e, 0x45, 0x44, 0x38, 0x66, 0x42, 0x56, 0x6e, 0x56, 0x0a, 0x42, 0x55, 0x30, 0x33, 0x73, 0x51, 0x37, 0x73, 0x6d, 0x43, 0x75, 0x4f, 0x46, 0x52, 0x33, 0x36, 0x6b, 0x30, 0x73, 0x58, 0x67, 0x69, 0x46, 0x78, 0x45, 0x46, 0x4c, 0x58, 0x55, 0x57, 0x52, 0x77, 0x46, 0x73, 0x4a, 0x56, 0x61, 0x55, 0x32, 0x4f, 0x46, 0x57, 0x32, 0x66, 0x76, 0x77, 0x77, 0x62, 0x77, 0x75, 0x43, 0x6a, 0x5a, 0x39, 0x59, 0x4d, 0x72, 0x4d, 0x38, 0x69, 0x72, 0x71, 0x39, 0x33, 0x56, 0x43, 0x70, 0x4c, 0x54, 0x49, 0x70, 0x54, 0x55, 0x6e, 0x72, 0x44, 0x0a, 0x37, 0x69, 0x37, 0x65, 0x73, 0x33, 0x45, 0x6c, 0x77, 0x65, 0x6c, 0x64, 0x50, 0x65, 0x36, 0x68, 0x4c, 0x36, 0x50, 0x33, 0x4b, 0x6a, 0x7a, 0x4a, 0x49, 0x78, 0x31, 0x71, 0x71, 0x78, 0x32, 0x68, 0x70, 0x2f, 0x48, 0x7a, 0x37, 0x4b, 0x44, 0x56, 0x52, 0x4d, 0x38, 0x56, 0x7a, 0x33, 0x49, 0x76, 0x48, 0x57, 0x4f, 0x58, 0x36, 0x4a, 0x6e, 0x35, 0x2f, 0x5a, 0x4f, 0x6b, 0x56, 0x49, 0x42, 0x4d, 0x55, 0x74, 0x52, 0x53, 0x71, 0x79, 0x35, 0x4a, 0x33, 0x35, 0x44, 0x4e, 0x0a, 0x75, 0x46, 0x2b, 0x2b, 0x50, 0x39, 0x36, 0x68, 0x79, 0x6b, 0x30, 0x67, 0x31, 0x43, 0x58, 0x6f, 0x68, 0x43, 0x6c, 0x54, 0x74, 0x37, 0x47, 0x49, 0x48, 0x2f, 0x2f, 0x36, 0x32, 0x70, 0x43, 0x66, 0x43, 0x71, 0x6b, 0x74, 0x51, 0x54, 0x2b, 0x78, 0x38, 0x52, 0x67, 0x70, 0x37, 0x68, 0x5a, 0x5a, 0x4c, 0x44, 0x52, 0x4a, 0x47, 0x71, 0x67, 0x47, 0x31, 0x36, 0x69, 0x49, 0x30, 0x67, 0x4e, 0x79, 0x65, 0x6a, 0x4c, 0x69, 0x36, 0x6d, 0x68, 0x4e, 0x62, 0x69, 0x79, 0x57, 0x0a, 0x5a, 0x58, 0x76, 0x4b, 0x57, 0x66, 0x72, 0x79, 0x34, 0x74, 0x33, 0x75, 0x4d, 0x43, 0x7a, 0x37, 0x7a, 0x45, 0x61, 0x73, 0x78, 0x47, 0x50, 0x72, 0x62, 0x33, 0x38, 0x32, 0x4b, 0x7a, 0x52, 0x7a, 0x45, 0x70, 0x52, 0x2f, 0x33, 0x38, 0x77, 0x6d, 0x6e, 0x76, 0x46, 0x79, 0x58, 0x56, 0x42, 0x6c, 0x57, 0x59, 0x39, 0x70, 0x73, 0x34, 0x64, 0x65, 0x4d, 0x6d, 0x2f, 0x44, 0x47, 0x49, 0x71, 0x31, 0x6c, 0x59, 0x2b, 0x77, 0x65, 0x6a, 0x66, 0x65, 0x57, 0x6b, 0x55, 0x37, 0x0a, 0x78, 0x7a, 0x62, 0x68, 0x37, 0x32, 0x66, 0x52, 0x4f, 0x64, 0x4f, 0x58, 0x57, 0x33, 0x4e, 0x69, 0x47, 0x55, 0x67, 0x74, 0x68, 0x78, 0x77, 0x47, 0x2b, 0x33, 0x53, 0x59, 0x49, 0x45, 0x6c, 0x7a, 0x38, 0x41, 0x58, 0x53, 0x47, 0x37, 0x47, 0x67, 0x6f, 0x37, 0x63, 0x62, 0x63, 0x4e, 0x4f, 0x49, 0x61, 0x62, 0x6c, 0x61, 0x31, 0x6a, 0x6a, 0x30, 0x59, 0x74, 0x77, 0x6c, 0x69, 0x33, 0x69, 0x2f, 0x2b, 0x4f, 0x68, 0x2b, 0x75, 0x46, 0x7a, 0x4a, 0x6c, 0x55, 0x39, 0x66, 0x0a, 0x70, 0x79, 0x32, 0x35, 0x49, 0x47, 0x76, 0x50, 0x61, 0x39, 0x33, 0x31, 0x44, 0x66, 0x53, 0x43, 0x74, 0x2f, 0x53, 0x79, 0x5a, 0x69, 0x34, 0x51, 0x4b, 0x50, 0x61, 0x58, 0x57, 0x6e, 0x75, 0x57, 0x46, 0x6f, 0x38, 0x42, 0x47, 0x53, 0x31, 0x73, 0x62, 0x6e, 0x38, 0x35, 0x57, 0x41, 0x5a, 0x6b, 0x67, 0x77, 0x47, 0x44, 0x67, 0x38, 0x4e, 0x4e, 0x6b, 0x74, 0x30, 0x79, 0x78, 0x6f, 0x65, 0x6b, 0x4e, 0x2b, 0x6b, 0x57, 0x7a, 0x71, 0x6f, 0x74, 0x61, 0x4b, 0x38, 0x4b, 0x0a, 0x67, 0x57, 0x55, 0x36, 0x63, 0x4d, 0x47, 0x62, 0x72, 0x55, 0x31, 0x74, 0x56, 0x4d, 0x6f, 0x71, 0x4c, 0x55, 0x75, 0x46, 0x47, 0x37, 0x4f, 0x41, 0x35, 0x6e, 0x42, 0x46, 0x44, 0x57, 0x74, 0x65, 0x4e, 0x66, 0x42, 0x2f, 0x4f, 0x37, 0x69, 0x63, 0x35, 0x41, 0x52, 0x77, 0x69, 0x52, 0x49, 0x6c, 0x6b, 0x39, 0x6f, 0x4b, 0x6d, 0x53, 0x4a, 0x67, 0x61, 0x6d, 0x4e, 0x67, 0x54, 0x6e, 0x59, 0x47, 0x6d, 0x45, 0x36, 0x39, 0x67, 0x36, 0x30, 0x64, 0x57, 0x49, 0x6f, 0x6c, 0x0a, 0x68, 0x64, 0x4c, 0x48, 0x5a, 0x52, 0x34, 0x74, 0x6a, 0x73, 0x62, 0x66, 0x74, 0x73, 0x62, 0x68, 0x66, 0x34, 0x6f, 0x45, 0x49, 0x52, 0x55, 0x70, 0x64, 0x50, 0x41, 0x2b, 0x6e, 0x4a, 0x43, 0x64, 0x44, 0x43, 0x37, 0x78, 0x69, 0x6a, 0x35, 0x61, 0x71, 0x67, 0x77, 0x4a, 0x48, 0x73, 0x66, 0x56, 0x50, 0x4b, 0x50, 0x74, 0x6c, 0x38, 0x4d, 0x65, 0x4e, 0x50, 0x6f, 0x34, 0x2b, 0x51, 0x67, 0x4f, 0x34, 0x38, 0x42, 0x64, 0x4b, 0x34, 0x50, 0x52, 0x56, 0x6d, 0x72, 0x4a, 0x0a, 0x74, 0x71, 0x68, 0x55, 0x55, 0x79, 0x35, 0x34, 0x4d, 0x6d, 0x63, 0x39, 0x67, 0x6e, 0x39, 0x30, 0x30, 0x50, 0x76, 0x68, 0x74, 0x67, 0x56, 0x67, 0x75, 0x58, 0x44, 0x62, 0x6a, 0x67, 0x76, 0x35, 0x45, 0x31, 0x68, 0x76, 0x63, 0x57, 0x41, 0x51, 0x55, 0x68, 0x43, 0x35, 0x77, 0x55, 0x45, 0x4a, 0x37, 0x33, 0x49, 0x66, 0x5a, 0x7a, 0x46, 0x34, 0x2f, 0x35, 0x59, 0x46, 0x6a, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x32, 0x4d, 0x77, 0x59, 0x54, 0x41, 0x66, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x4d, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x54, 0x6a, 0x2f, 0x69, 0x33, 0x39, 0x4b, 0x4e, 0x41, 0x4c, 0x74, 0x62, 0x71, 0x32, 0x6f, 0x73, 0x53, 0x2f, 0x42, 0x71, 0x6f, 0x46, 0x6a, 0x4a, 0x50, 0x37, 0x4c, 0x7a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x0a, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x34, 0x2f, 0x34, 0x74, 0x2f, 0x53, 0x6a, 0x51, 0x43, 0x37, 0x57, 0x36, 0x74, 0x71, 0x4c, 0x45, 0x76, 0x77, 0x61, 0x71, 0x42, 0x59, 0x79, 0x54, 0x2b, 0x79, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x0a, 0x41, 0x43, 0x58, 0x47, 0x75, 0x6d, 0x76, 0x72, 0x68, 0x38, 0x76, 0x65, 0x67, 0x6a, 0x6d, 0x57, 0x50, 0x66, 0x42, 0x45, 0x70, 0x32, 0x75, 0x45, 0x63, 0x77, 0x50, 0x65, 0x6e, 0x53, 0x74, 0x50, 0x75, 0x69, 0x42, 0x2f, 0x76, 0x48, 0x69, 0x79, 0x7a, 0x35, 0x65, 0x77, 0x47, 0x35, 0x7a, 0x7a, 0x31, 0x33, 0x6b, 0x75, 0x39, 0x55, 0x69, 0x32, 0x30, 0x76, 0x73, 0x58, 0x69, 0x4f, 0x62, 0x54, 0x65, 0x6a, 0x2f, 0x74, 0x55, 0x78, 0x50, 0x51, 0x34, 0x69, 0x39, 0x71, 0x0a, 0x65, 0x63, 0x73, 0x41, 0x49, 0x79, 0x6a, 0x6d, 0x48, 0x6a, 0x64, 0x58, 0x4e, 0x59, 0x6d, 0x45, 0x77, 0x6e, 0x5a, 0x50, 0x4e, 0x44, 0x61, 0x74, 0x5a, 0x38, 0x50, 0x4f, 0x51, 0x51, 0x61, 0x49, 0x78, 0x66, 0x66, 0x75, 0x32, 0x42, 0x71, 0x34, 0x31, 0x67, 0x74, 0x2f, 0x55, 0x50, 0x2b, 0x54, 0x71, 0x68, 0x64, 0x4c, 0x6a, 0x4f, 0x7a, 0x74, 0x55, 0x6d, 0x43, 0x79, 0x70, 0x41, 0x62, 0x71, 0x54, 0x75, 0x76, 0x30, 0x61, 0x78, 0x6e, 0x39, 0x36, 0x2f, 0x55, 0x61, 0x0a, 0x34, 0x43, 0x55, 0x71, 0x6d, 0x74, 0x7a, 0x48, 0x51, 0x54, 0x62, 0x33, 0x79, 0x48, 0x51, 0x46, 0x68, 0x44, 0x6d, 0x56, 0x4f, 0x64, 0x59, 0x4c, 0x4f, 0x36, 0x51, 0x6e, 0x2b, 0x67, 0x6a, 0x59, 0x58, 0x42, 0x37, 0x34, 0x42, 0x47, 0x42, 0x53, 0x45, 0x53, 0x67, 0x6f, 0x41, 0x2f, 0x2f, 0x76, 0x55, 0x32, 0x59, 0x41, 0x70, 0x55, 0x6f, 0x30, 0x46, 0x6d, 0x5a, 0x38, 0x2f, 0x51, 0x6d, 0x6b, 0x72, 0x70, 0x35, 0x6e, 0x47, 0x6d, 0x39, 0x42, 0x43, 0x32, 0x73, 0x47, 0x0a, 0x45, 0x35, 0x75, 0x50, 0x68, 0x6e, 0x45, 0x46, 0x74, 0x43, 0x2b, 0x4e, 0x69, 0x57, 0x59, 0x7a, 0x4b, 0x58, 0x5a, 0x55, 0x6d, 0x68, 0x48, 0x34, 0x4a, 0x2f, 0x71, 0x79, 0x50, 0x35, 0x48, 0x67, 0x7a, 0x67, 0x30, 0x62, 0x38, 0x7a, 0x41, 0x61, 0x72, 0x62, 0x38, 0x69, 0x58, 0x52, 0x76, 0x54, 0x76, 0x79, 0x55, 0x46, 0x54, 0x65, 0x47, 0x53, 0x47, 0x6e, 0x2b, 0x5a, 0x6e, 0x7a, 0x78, 0x45, 0x6b, 0x38, 0x72, 0x55, 0x51, 0x45, 0x6c, 0x73, 0x67, 0x49, 0x66, 0x58, 0x0a, 0x42, 0x44, 0x72, 0x44, 0x4d, 0x6c, 0x49, 0x31, 0x44, 0x6c, 0x62, 0x34, 0x70, 0x64, 0x31, 0x39, 0x78, 0x49, 0x73, 0x4e, 0x45, 0x52, 0x39, 0x54, 0x79, 0x78, 0x36, 0x79, 0x46, 0x37, 0x5a, 0x6f, 0x64, 0x31, 0x72, 0x67, 0x31, 0x4d, 0x76, 0x49, 0x42, 0x36, 0x37, 0x31, 0x4f, 0x69, 0x36, 0x4f, 0x4e, 0x37, 0x66, 0x51, 0x41, 0x55, 0x74, 0x44, 0x4b, 0x58, 0x65, 0x4d, 0x4f, 0x5a, 0x65, 0x50, 0x67, 0x6c, 0x72, 0x34, 0x55, 0x65, 0x57, 0x4a, 0x6f, 0x42, 0x6a, 0x6e, 0x0a, 0x61, 0x48, 0x39, 0x64, 0x43, 0x69, 0x37, 0x37, 0x6f, 0x30, 0x63, 0x4f, 0x50, 0x61, 0x59, 0x6a, 0x65, 0x73, 0x59, 0x42, 0x78, 0x34, 0x2f, 0x49, 0x58, 0x72, 0x39, 0x74, 0x67, 0x46, 0x61, 0x2b, 0x69, 0x69, 0x53, 0x36, 0x4d, 0x2b, 0x71, 0x66, 0x34, 0x54, 0x49, 0x52, 0x6e, 0x76, 0x48, 0x53, 0x54, 0x34, 0x44, 0x32, 0x47, 0x30, 0x43, 0x76, 0x4f, 0x4a, 0x34, 0x52, 0x55, 0x48, 0x6c, 0x7a, 0x45, 0x68, 0x4c, 0x4e, 0x35, 0x6d, 0x79, 0x64, 0x4c, 0x49, 0x68, 0x79, 0x0a, 0x50, 0x44, 0x43, 0x42, 0x42, 0x70, 0x45, 0x69, 0x36, 0x6c, 0x6d, 0x74, 0x32, 0x68, 0x6b, 0x75, 0x49, 0x73, 0x4b, 0x4e, 0x75, 0x59, 0x79, 0x48, 0x34, 0x47, 0x61, 0x38, 0x63, 0x79, 0x4e, 0x66, 0x49, 0x57, 0x52, 0x6a, 0x67, 0x45, 0x6a, 0x31, 0x6f, 0x44, 0x77, 0x59, 0x50, 0x5a, 0x54, 0x49, 0x53, 0x45, 0x45, 0x64, 0x51, 0x4c, 0x70, 0x65, 0x2f, 0x76, 0x35, 0x57, 0x4f, 0x61, 0x48, 0x49, 0x7a, 0x31, 0x36, 0x65, 0x47, 0x57, 0x52, 0x47, 0x45, 0x4e, 0x6f, 0x58, 0x0a, 0x6b, 0x62, 0x63, 0x46, 0x67, 0x4b, 0x79, 0x4c, 0x6d, 0x5a, 0x4a, 0x39, 0x35, 0x36, 0x4c, 0x59, 0x42, 0x77, 0x73, 0x32, 0x4a, 0x2b, 0x64, 0x49, 0x65, 0x57, 0x43, 0x4b, 0x77, 0x39, 0x63, 0x54, 0x58, 0x50, 0x68, 0x79, 0x51, 0x4e, 0x39, 0x4b, 0x79, 0x38, 0x2b, 0x5a, 0x41, 0x41, 0x6f, 0x41, 0x43, 0x78, 0x47, 0x56, 0x32, 0x6c, 0x5a, 0x46, 0x41, 0x34, 0x67, 0x4b, 0x6e, 0x32, 0x66, 0x51, 0x31, 0x58, 0x6d, 0x78, 0x71, 0x49, 0x31, 0x41, 0x62, 0x51, 0x33, 0x43, 0x0a, 0x65, 0x6b, 0x44, 0x36, 0x38, 0x31, 0x39, 0x6b, 0x52, 0x35, 0x4c, 0x4c, 0x55, 0x37, 0x6d, 0x37, 0x57, 0x63, 0x35, 0x50, 0x2f, 0x64, 0x41, 0x56, 0x55, 0x77, 0x48, 0x59, 0x33, 0x2b, 0x76, 0x5a, 0x35, 0x6e, 0x62, 0x76, 0x30, 0x43, 0x4f, 0x37, 0x4f, 0x36, 0x6c, 0x35, 0x73, 0x39, 0x55, 0x43, 0x4b, 0x63, 0x32, 0x4a, 0x6f, 0x35, 0x59, 0x50, 0x53, 0x6a, 0x58, 0x6e, 0x54, 0x6b, 0x4c, 0x41, 0x64, 0x63, 0x30, 0x48, 0x7a, 0x2b, 0x59, 0x73, 0x36, 0x33, 0x73, 0x75, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x4f, 0x49, 0x53, 0x54, 0x45, 0x20, 0x57, 0x49, 0x53, 0x65, 0x4b, 0x65, 0x79, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x47, 0x42, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x74, 0x54, 0x43, 0x43, 0x41, 0x70, 0x32, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x64, 0x72, 0x45, 0x67, 0x55, 0x6e, 0x54, 0x77, 0x68, 0x59, 0x64, 0x47, 0x73, 0x2f, 0x67, 0x6a, 0x47, 0x76, 0x62, 0x43, 0x77, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x74, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x44, 0x53, 0x44, 0x45, 0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x48, 0x56, 0x30, 0x6c, 0x54, 0x5a, 0x55, 0x74, 0x6c, 0x65, 0x54, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x5a, 0x54, 0x30, 0x6c, 0x54, 0x56, 0x45, 0x55, 0x67, 0x52, 0x6d, 0x39, 0x31, 0x62, 0x6d, 0x52, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x46, 0x62, 0x6d, 0x52, 0x76, 0x63, 0x6e, 0x4e, 0x6c, 0x0a, 0x5a, 0x44, 0x45, 0x6f, 0x4d, 0x43, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x66, 0x54, 0x30, 0x6c, 0x54, 0x56, 0x45, 0x55, 0x67, 0x56, 0x30, 0x6c, 0x54, 0x5a, 0x55, 0x74, 0x6c, 0x65, 0x53, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x48, 0x51, 0x69, 0x42, 0x44, 0x51, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4e, 0x44, 0x45, 0x79, 0x4d, 0x44, 0x45, 0x78, 0x4e, 0x54, 0x41, 0x77, 0x0a, 0x4d, 0x7a, 0x4a, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4f, 0x54, 0x45, 0x79, 0x4d, 0x44, 0x45, 0x78, 0x4e, 0x54, 0x45, 0x77, 0x4d, 0x7a, 0x46, 0x61, 0x4d, 0x47, 0x30, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4e, 0x49, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x64, 0x58, 0x53, 0x56, 0x4e, 0x6c, 0x53, 0x32, 0x56, 0x35, 0x4d, 0x53, 0x49, 0x77, 0x49, 0x41, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x6c, 0x50, 0x53, 0x56, 0x4e, 0x55, 0x52, 0x53, 0x42, 0x47, 0x62, 0x33, 0x56, 0x75, 0x5a, 0x47, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x56, 0x75, 0x5a, 0x47, 0x39, 0x79, 0x63, 0x32, 0x56, 0x6b, 0x4d, 0x53, 0x67, 0x77, 0x4a, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x39, 0x50, 0x53, 0x56, 0x4e, 0x55, 0x52, 0x53, 0x42, 0x58, 0x53, 0x56, 0x4e, 0x6c, 0x53, 0x32, 0x56, 0x35, 0x49, 0x45, 0x64, 0x73, 0x0a, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x64, 0x43, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x49, 0x49, 0x42, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x32, 0x42, 0x65, 0x33, 0x48, 0x45, 0x6f, 0x6b, 0x4b, 0x74, 0x61, 0x58, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x48, 0x76, 0x74, 0x39, 0x4f, 0x4f, 0x2b, 0x59, 0x39, 0x62, 0x49, 0x35, 0x6d, 0x45, 0x34, 0x6e, 0x75, 0x42, 0x46, 0x64, 0x65, 0x39, 0x49, 0x6c, 0x6c, 0x49, 0x69, 0x43, 0x46, 0x53, 0x5a, 0x71, 0x47, 0x7a, 0x47, 0x37, 0x71, 0x46, 0x73, 0x68, 0x49, 0x53, 0x76, 0x59, 0x44, 0x30, 0x36, 0x66, 0x57, 0x76, 0x47, 0x78, 0x57, 0x75, 0x52, 0x35, 0x31, 0x6a, 0x49, 0x6a, 0x4b, 0x2b, 0x46, 0x54, 0x7a, 0x4a, 0x6c, 0x46, 0x58, 0x48, 0x74, 0x50, 0x0a, 0x72, 0x62, 0x79, 0x2f, 0x68, 0x30, 0x6f, 0x4c, 0x53, 0x35, 0x64, 0x61, 0x71, 0x50, 0x5a, 0x49, 0x37, 0x48, 0x31, 0x37, 0x44, 0x63, 0x30, 0x68, 0x42, 0x74, 0x2b, 0x65, 0x46, 0x66, 0x31, 0x42, 0x69, 0x6b, 0x69, 0x33, 0x49, 0x50, 0x53, 0x68, 0x65, 0x68, 0x74, 0x58, 0x31, 0x46, 0x31, 0x51, 0x2f, 0x37, 0x70, 0x6e, 0x32, 0x43, 0x4f, 0x5a, 0x48, 0x38, 0x67, 0x2f, 0x34, 0x39, 0x37, 0x2f, 0x62, 0x31, 0x74, 0x33, 0x73, 0x57, 0x74, 0x75, 0x75, 0x4d, 0x6c, 0x6b, 0x0a, 0x39, 0x2b, 0x48, 0x4b, 0x51, 0x55, 0x59, 0x4f, 0x4b, 0x58, 0x48, 0x51, 0x75, 0x53, 0x50, 0x38, 0x79, 0x59, 0x46, 0x66, 0x54, 0x76, 0x64, 0x76, 0x33, 0x37, 0x2b, 0x45, 0x72, 0x58, 0x4e, 0x6b, 0x75, 0x37, 0x64, 0x43, 0x6a, 0x6d, 0x6e, 0x32, 0x31, 0x48, 0x59, 0x64, 0x66, 0x70, 0x32, 0x6e, 0x75, 0x46, 0x65, 0x4b, 0x55, 0x57, 0x64, 0x79, 0x31, 0x39, 0x53, 0x6f, 0x75, 0x4a, 0x56, 0x55, 0x51, 0x48, 0x4d, 0x44, 0x39, 0x75, 0x72, 0x30, 0x36, 0x2f, 0x34, 0x6f, 0x0a, 0x51, 0x6e, 0x63, 0x2f, 0x6e, 0x53, 0x4d, 0x62, 0x73, 0x72, 0x59, 0x39, 0x67, 0x42, 0x51, 0x48, 0x54, 0x43, 0x35, 0x50, 0x39, 0x39, 0x55, 0x4b, 0x46, 0x67, 0x32, 0x39, 0x5a, 0x6b, 0x4d, 0x33, 0x66, 0x69, 0x4e, 0x44, 0x65, 0x63, 0x4e, 0x41, 0x68, 0x76, 0x56, 0x4d, 0x4b, 0x64, 0x71, 0x4f, 0x6d, 0x71, 0x30, 0x4e, 0x70, 0x51, 0x53, 0x48, 0x69, 0x42, 0x36, 0x46, 0x34, 0x2b, 0x6c, 0x54, 0x31, 0x5a, 0x76, 0x49, 0x69, 0x77, 0x4e, 0x6a, 0x65, 0x4f, 0x76, 0x67, 0x0a, 0x47, 0x55, 0x70, 0x75, 0x75, 0x79, 0x39, 0x72, 0x4d, 0x32, 0x52, 0x59, 0x6b, 0x36, 0x31, 0x70, 0x76, 0x34, 0x38, 0x62, 0x37, 0x34, 0x4a, 0x49, 0x78, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x31, 0x45, 0x77, 0x54, 0x7a, 0x41, 0x4c, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x0a, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x4e, 0x51, 0x2f, 0x49, 0x4e, 0x6d, 0x4e, 0x65, 0x34, 0x71, 0x50, 0x73, 0x2b, 0x54, 0x74, 0x6d, 0x46, 0x63, 0x35, 0x52, 0x55, 0x75, 0x4f, 0x52, 0x6d, 0x6a, 0x30, 0x77, 0x45, 0x41, 0x59, 0x4a, 0x4b, 0x77, 0x59, 0x42, 0x42, 0x41, 0x47, 0x43, 0x4e, 0x78, 0x55, 0x42, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x41, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x0a, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x45, 0x42, 0x4d, 0x2b, 0x34, 0x65, 0x79, 0x6d, 0x59, 0x47, 0x51, 0x66, 0x70, 0x33, 0x46, 0x73, 0x4c, 0x41, 0x6d, 0x7a, 0x59, 0x68, 0x37, 0x4b, 0x7a, 0x4b, 0x4e, 0x62, 0x72, 0x67, 0x68, 0x63, 0x56, 0x69, 0x58, 0x66, 0x61, 0x34, 0x33, 0x46, 0x4b, 0x38, 0x2b, 0x35, 0x2f, 0x65, 0x61, 0x34, 0x6e, 0x33, 0x32, 0x63, 0x5a, 0x69, 0x5a, 0x42, 0x4b, 0x70, 0x44, 0x0a, 0x64, 0x48, 0x69, 0x6a, 0x34, 0x30, 0x6c, 0x68, 0x50, 0x6e, 0x4f, 0x4d, 0x54, 0x5a, 0x54, 0x67, 0x2b, 0x58, 0x48, 0x45, 0x74, 0x68, 0x59, 0x4f, 0x55, 0x33, 0x67, 0x66, 0x31, 0x71, 0x4b, 0x48, 0x4c, 0x77, 0x49, 0x35, 0x67, 0x53, 0x6b, 0x38, 0x72, 0x78, 0x57, 0x59, 0x49, 0x54, 0x44, 0x2b, 0x4b, 0x4a, 0x41, 0x41, 0x6a, 0x4e, 0x48, 0x68, 0x79, 0x2f, 0x70, 0x65, 0x79, 0x50, 0x33, 0x34, 0x45, 0x45, 0x59, 0x37, 0x6f, 0x6e, 0x68, 0x43, 0x6b, 0x52, 0x64, 0x30, 0x0a, 0x56, 0x51, 0x72, 0x65, 0x55, 0x47, 0x64, 0x4e, 0x5a, 0x74, 0x47, 0x6e, 0x2f, 0x2f, 0x33, 0x5a, 0x77, 0x4c, 0x57, 0x6f, 0x6f, 0x34, 0x72, 0x4f, 0x5a, 0x76, 0x55, 0x50, 0x51, 0x38, 0x32, 0x6e, 0x4b, 0x31, 0x64, 0x37, 0x59, 0x30, 0x5a, 0x71, 0x71, 0x69, 0x35, 0x53, 0x32, 0x50, 0x54, 0x74, 0x34, 0x57, 0x32, 0x74, 0x4b, 0x5a, 0x42, 0x34, 0x53, 0x4c, 0x72, 0x68, 0x49, 0x36, 0x71, 0x6a, 0x69, 0x65, 0x79, 0x31, 0x71, 0x35, 0x62, 0x41, 0x74, 0x45, 0x75, 0x69, 0x0a, 0x48, 0x5a, 0x65, 0x65, 0x65, 0x76, 0x4a, 0x75, 0x51, 0x48, 0x48, 0x66, 0x61, 0x50, 0x46, 0x6c, 0x54, 0x63, 0x35, 0x38, 0x42, 0x64, 0x39, 0x54, 0x5a, 0x61, 0x6d, 0x6c, 0x38, 0x4c, 0x47, 0x58, 0x42, 0x48, 0x41, 0x56, 0x52, 0x67, 0x4f, 0x59, 0x31, 0x4e, 0x4b, 0x2f, 0x56, 0x4c, 0x53, 0x67, 0x57, 0x48, 0x31, 0x53, 0x62, 0x39, 0x70, 0x57, 0x4a, 0x6d, 0x4c, 0x55, 0x32, 0x4e, 0x75, 0x4a, 0x4d, 0x57, 0x38, 0x63, 0x38, 0x43, 0x4c, 0x43, 0x30, 0x32, 0x49, 0x63, 0x0a, 0x4e, 0x63, 0x31, 0x4d, 0x61, 0x52, 0x56, 0x55, 0x47, 0x70, 0x43, 0x59, 0x33, 0x75, 0x73, 0x65, 0x58, 0x38, 0x70, 0x33, 0x78, 0x38, 0x75, 0x4f, 0x50, 0x55, 0x4e, 0x70, 0x6e, 0x4a, 0x70, 0x59, 0x30, 0x43, 0x51, 0x37, 0x33, 0x78, 0x74, 0x41, 0x6c, 0x6e, 0x34, 0x31, 0x72, 0x59, 0x48, 0x48, 0x54, 0x6e, 0x47, 0x36, 0x69, 0x42, 0x4d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x5a, 0x41, 0x46, 0x49, 0x52, 0x20, 0x52, 0x4f, 0x4f, 0x54, 0x20, 0x43, 0x41, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x63, 0x6a, 0x43, 0x43, 0x41, 0x6c, 0x71, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x50, 0x6f, 0x70, 0x64, 0x42, 0x2b, 0x78, 0x56, 0x30, 0x6a, 0x4c, 0x56, 0x74, 0x2b, 0x4f, 0x32, 0x58, 0x77, 0x48, 0x72, 0x4c, 0x64, 0x7a, 0x6b, 0x31, 0x75, 0x51, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x55, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x55, 0x45, 0x77, 0x78, 0x4b, 0x44, 0x41, 0x6d, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x48, 0x30, 0x74, 0x79, 0x59, 0x57, 0x70, 0x76, 0x64, 0x32, 0x45, 0x67, 0x53, 0x58, 0x70, 0x69, 0x59, 0x53, 0x42, 0x53, 0x62, 0x33, 0x70, 0x73, 0x61, 0x57, 0x4e, 0x36, 0x5a, 0x57, 0x35, 0x70, 0x62, 0x33, 0x64, 0x68, 0x49, 0x46, 0x4d, 0x75, 0x51, 0x53, 0x34, 0x78, 0x47, 0x44, 0x41, 0x57, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x4d, 0x4d, 0x44, 0x31, 0x4e, 0x61, 0x51, 0x55, 0x5a, 0x4a, 0x55, 0x69, 0x42, 0x53, 0x54, 0x30, 0x39, 0x55, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x6a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4e, 0x54, 0x45, 0x77, 0x4d, 0x54, 0x6b, 0x77, 0x4e, 0x7a, 0x51, 0x7a, 0x4d, 0x7a, 0x42, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4e, 0x54, 0x45, 0x77, 0x4d, 0x54, 0x6b, 0x77, 0x4e, 0x7a, 0x51, 0x7a, 0x4d, 0x7a, 0x42, 0x61, 0x4d, 0x46, 0x45, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x42, 0x4d, 0x4d, 0x53, 0x67, 0x77, 0x4a, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x42, 0x39, 0x4c, 0x63, 0x6d, 0x46, 0x71, 0x62, 0x33, 0x64, 0x68, 0x49, 0x45, 0x6c, 0x36, 0x59, 0x6d, 0x45, 0x67, 0x55, 0x6d, 0x39, 0x36, 0x62, 0x47, 0x6c, 0x6a, 0x65, 0x6d, 0x56, 0x75, 0x61, 0x57, 0x39, 0x33, 0x59, 0x53, 0x42, 0x54, 0x4c, 0x6b, 0x45, 0x75, 0x4d, 0x52, 0x67, 0x77, 0x46, 0x67, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x44, 0x44, 0x41, 0x39, 0x54, 0x57, 0x6b, 0x46, 0x47, 0x53, 0x56, 0x49, 0x67, 0x55, 0x6b, 0x39, 0x50, 0x56, 0x43, 0x42, 0x44, 0x51, 0x54, 0x49, 0x77, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43, 0x33, 0x76, 0x44, 0x35, 0x51, 0x0a, 0x71, 0x45, 0x76, 0x4e, 0x51, 0x4c, 0x58, 0x4f, 0x59, 0x65, 0x65, 0x57, 0x79, 0x72, 0x53, 0x68, 0x32, 0x67, 0x77, 0x69, 0x73, 0x50, 0x71, 0x31, 0x65, 0x33, 0x59, 0x41, 0x64, 0x34, 0x77, 0x4c, 0x7a, 0x33, 0x32, 0x6f, 0x68, 0x73, 0x77, 0x6d, 0x55, 0x65, 0x51, 0x67, 0x50, 0x59, 0x55, 0x4d, 0x31, 0x6c, 0x6a, 0x6a, 0x35, 0x2f, 0x51, 0x71, 0x47, 0x4a, 0x33, 0x61, 0x30, 0x61, 0x34, 0x6d, 0x37, 0x75, 0x74, 0x54, 0x33, 0x50, 0x53, 0x51, 0x31, 0x68, 0x4e, 0x4b, 0x0a, 0x44, 0x4a, 0x41, 0x38, 0x77, 0x2f, 0x54, 0x61, 0x30, 0x6f, 0x34, 0x4e, 0x6b, 0x6a, 0x72, 0x63, 0x73, 0x62, 0x48, 0x2f, 0x4f, 0x4e, 0x37, 0x44, 0x75, 0x69, 0x31, 0x66, 0x67, 0x4c, 0x6b, 0x43, 0x76, 0x55, 0x71, 0x64, 0x47, 0x77, 0x2b, 0x30, 0x77, 0x38, 0x4c, 0x42, 0x5a, 0x77, 0x50, 0x64, 0x33, 0x42, 0x75, 0x63, 0x50, 0x62, 0x4f, 0x77, 0x33, 0x67, 0x41, 0x65, 0x71, 0x44, 0x52, 0x48, 0x75, 0x35, 0x72, 0x72, 0x2f, 0x67, 0x73, 0x55, 0x76, 0x54, 0x61, 0x45, 0x0a, 0x32, 0x67, 0x30, 0x67, 0x76, 0x2f, 0x70, 0x62, 0x79, 0x36, 0x6b, 0x57, 0x49, 0x4b, 0x30, 0x35, 0x59, 0x4f, 0x34, 0x76, 0x64, 0x62, 0x62, 0x6e, 0x6c, 0x35, 0x7a, 0x35, 0x50, 0x76, 0x31, 0x2b, 0x54, 0x57, 0x39, 0x4e, 0x4c, 0x2b, 0x2b, 0x49, 0x44, 0x57, 0x72, 0x36, 0x33, 0x66, 0x45, 0x39, 0x62, 0x69, 0x43, 0x6c, 0x6f, 0x42, 0x4b, 0x30, 0x54, 0x58, 0x43, 0x35, 0x7a, 0x74, 0x64, 0x79, 0x4f, 0x34, 0x6d, 0x54, 0x70, 0x34, 0x43, 0x45, 0x48, 0x43, 0x64, 0x4a, 0x0a, 0x63, 0x6b, 0x6d, 0x31, 0x2f, 0x7a, 0x75, 0x56, 0x6e, 0x73, 0x48, 0x4d, 0x79, 0x41, 0x48, 0x73, 0x36, 0x41, 0x36, 0x4b, 0x43, 0x70, 0x62, 0x6e, 0x73, 0x36, 0x61, 0x48, 0x35, 0x64, 0x62, 0x35, 0x42, 0x53, 0x73, 0x4e, 0x6c, 0x30, 0x42, 0x77, 0x50, 0x4c, 0x71, 0x73, 0x64, 0x56, 0x71, 0x63, 0x31, 0x55, 0x32, 0x64, 0x41, 0x67, 0x72, 0x53, 0x53, 0x35, 0x74, 0x6d, 0x53, 0x30, 0x59, 0x48, 0x46, 0x32, 0x57, 0x74, 0x6e, 0x32, 0x79, 0x49, 0x41, 0x4e, 0x77, 0x69, 0x0a, 0x69, 0x65, 0x44, 0x68, 0x5a, 0x4e, 0x52, 0x6e, 0x76, 0x44, 0x46, 0x35, 0x59, 0x54, 0x79, 0x37, 0x79, 0x6b, 0x48, 0x4e, 0x58, 0x47, 0x6f, 0x41, 0x79, 0x44, 0x77, 0x34, 0x6a, 0x6c, 0x69, 0x76, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x0a, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x51, 0x75, 0x46, 0x71, 0x6c, 0x4b, 0x47, 0x4c, 0x58, 0x4c, 0x7a, 0x50, 0x56, 0x76, 0x55, 0x50, 0x4d, 0x6a, 0x58, 0x2f, 0x68, 0x64, 0x35, 0x36, 0x7a, 0x77, 0x79, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x0a, 0x41, 0x51, 0x45, 0x41, 0x74, 0x58, 0x50, 0x34, 0x41, 0x39, 0x78, 0x5a, 0x57, 0x78, 0x31, 0x32, 0x36, 0x61, 0x4d, 0x71, 0x65, 0x35, 0x41, 0x6f, 0x73, 0x6b, 0x33, 0x41, 0x4d, 0x30, 0x2b, 0x71, 0x6d, 0x72, 0x48, 0x55, 0x75, 0x4f, 0x51, 0x6e, 0x2f, 0x36, 0x6d, 0x57, 0x6d, 0x63, 0x35, 0x47, 0x34, 0x47, 0x31, 0x38, 0x54, 0x4b, 0x49, 0x34, 0x70, 0x41, 0x5a, 0x77, 0x38, 0x50, 0x52, 0x42, 0x45, 0x65, 0x77, 0x2f, 0x52, 0x34, 0x30, 0x2f, 0x63, 0x6f, 0x66, 0x35, 0x0a, 0x4f, 0x2f, 0x32, 0x6b, 0x62, 0x79, 0x74, 0x54, 0x41, 0x4f, 0x44, 0x2f, 0x4f, 0x62, 0x6c, 0x71, 0x42, 0x77, 0x37, 0x72, 0x48, 0x52, 0x7a, 0x32, 0x6f, 0x6e, 0x4b, 0x51, 0x79, 0x34, 0x49, 0x39, 0x45, 0x59, 0x4b, 0x4c, 0x30, 0x72, 0x75, 0x66, 0x4b, 0x71, 0x38, 0x68, 0x35, 0x6d, 0x4f, 0x47, 0x6e, 0x58, 0x6b, 0x5a, 0x37, 0x2f, 0x65, 0x37, 0x44, 0x44, 0x57, 0x51, 0x77, 0x34, 0x72, 0x74, 0x54, 0x77, 0x2f, 0x31, 0x7a, 0x42, 0x4c, 0x5a, 0x70, 0x44, 0x36, 0x37, 0x0a, 0x6f, 0x50, 0x77, 0x67, 0x6c, 0x56, 0x39, 0x50, 0x4a, 0x69, 0x38, 0x52, 0x49, 0x34, 0x4e, 0x4f, 0x64, 0x51, 0x63, 0x50, 0x76, 0x35, 0x76, 0x52, 0x74, 0x42, 0x33, 0x70, 0x45, 0x41, 0x54, 0x2b, 0x79, 0x6d, 0x43, 0x50, 0x6f, 0x6b, 0x79, 0x34, 0x72, 0x63, 0x2f, 0x68, 0x6b, 0x41, 0x2f, 0x4e, 0x72, 0x67, 0x72, 0x48, 0x58, 0x58, 0x75, 0x33, 0x55, 0x4e, 0x4c, 0x55, 0x59, 0x66, 0x72, 0x56, 0x46, 0x64, 0x76, 0x58, 0x6e, 0x34, 0x64, 0x52, 0x56, 0x4f, 0x75, 0x6c, 0x0a, 0x34, 0x2b, 0x76, 0x4a, 0x68, 0x61, 0x41, 0x6c, 0x49, 0x44, 0x66, 0x37, 0x6a, 0x73, 0x34, 0x4d, 0x4e, 0x49, 0x54, 0x68, 0x50, 0x49, 0x47, 0x79, 0x64, 0x30, 0x35, 0x44, 0x70, 0x59, 0x68, 0x66, 0x68, 0x6d, 0x65, 0x68, 0x50, 0x65, 0x61, 0x30, 0x58, 0x47, 0x47, 0x32, 0x50, 0x74, 0x76, 0x2b, 0x74, 0x79, 0x6a, 0x46, 0x6f, 0x67, 0x65, 0x75, 0x74, 0x63, 0x72, 0x4b, 0x6a, 0x53, 0x6f, 0x53, 0x37, 0x35, 0x66, 0x74, 0x77, 0x6a, 0x43, 0x6b, 0x79, 0x53, 0x70, 0x36, 0x0a, 0x2b, 0x2f, 0x4e, 0x4e, 0x49, 0x78, 0x75, 0x5a, 0x4d, 0x7a, 0x53, 0x67, 0x4c, 0x76, 0x57, 0x70, 0x43, 0x7a, 0x2f, 0x55, 0x58, 0x65, 0x48, 0x50, 0x68, 0x4a, 0x2f, 0x69, 0x47, 0x63, 0x4a, 0x66, 0x69, 0x74, 0x59, 0x67, 0x48, 0x75, 0x4e, 0x7a, 0x74, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 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, 0x20, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x30, 0x6a, 0x43, 0x43, 0x41, 0x37, 0x71, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x49, 0x64, 0x62, 0x51, 0x53, 0x6b, 0x38, 0x6c, 0x44, 0x38, 0x6b, 0x79, 0x4e, 0x2f, 0x79, 0x71, 0x58, 0x68, 0x4b, 0x4e, 0x36, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x30, 0x46, 0x41, 0x44, 0x43, 0x42, 0x67, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x55, 0x45, 0x77, 0x78, 0x49, 0x6a, 0x41, 0x67, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x47, 0x56, 0x56, 0x75, 0x61, 0x58, 0x70, 0x6c, 0x64, 0x47, 0x38, 0x67, 0x56, 0x47, 0x56, 0x6a, 0x61, 0x47, 0x35, 0x76, 0x62, 0x47, 0x39, 0x6e, 0x61, 0x57, 0x56, 0x7a, 0x49, 0x46, 0x4d, 0x75, 0x51, 0x53, 0x34, 0x78, 0x4a, 0x7a, 0x41, 0x6c, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x48, 0x6b, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x31, 0x0a, 0x62, 0x53, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x54, 0x45, 0x6b, 0x4d, 0x43, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x62, 0x51, 0x32, 0x56, 0x79, 0x64, 0x48, 0x56, 0x74, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x5a, 0x57, 0x51, 0x67, 0x54, 0x6d, 0x56, 0x30, 0x64, 0x32, 0x39, 0x79, 0x0a, 0x61, 0x79, 0x42, 0x44, 0x51, 0x53, 0x41, 0x79, 0x4d, 0x43, 0x49, 0x59, 0x44, 0x7a, 0x49, 0x77, 0x4d, 0x54, 0x45, 0x78, 0x4d, 0x44, 0x41, 0x32, 0x4d, 0x44, 0x67, 0x7a, 0x4f, 0x54, 0x55, 0x32, 0x57, 0x68, 0x67, 0x50, 0x4d, 0x6a, 0x41, 0x30, 0x4e, 0x6a, 0x45, 0x77, 0x4d, 0x44, 0x59, 0x77, 0x4f, 0x44, 0x4d, 0x35, 0x4e, 0x54, 0x5a, 0x61, 0x4d, 0x49, 0x47, 0x41, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x51, 0x0a, 0x54, 0x44, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x5a, 0x56, 0x57, 0x35, 0x70, 0x65, 0x6d, 0x56, 0x30, 0x62, 0x79, 0x42, 0x55, 0x5a, 0x57, 0x4e, 0x6f, 0x62, 0x6d, 0x39, 0x73, 0x62, 0x32, 0x64, 0x70, 0x5a, 0x58, 0x4d, 0x67, 0x55, 0x79, 0x35, 0x42, 0x4c, 0x6a, 0x45, 0x6e, 0x4d, 0x43, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x65, 0x51, 0x32, 0x56, 0x79, 0x64, 0x48, 0x56, 0x74, 0x49, 0x45, 0x4e, 0x6c, 0x0a, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x4d, 0x53, 0x51, 0x77, 0x49, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x74, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x64, 0x57, 0x30, 0x67, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x52, 0x6c, 0x5a, 0x43, 0x42, 0x4f, 0x5a, 0x58, 0x52, 0x33, 0x62, 0x33, 0x4a, 0x72, 0x49, 0x45, 0x4e, 0x42, 0x0a, 0x49, 0x44, 0x49, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x39, 0x2b, 0x58, 0x6a, 0x34, 0x35, 0x74, 0x57, 0x41, 0x44, 0x47, 0x53, 0x64, 0x68, 0x68, 0x75, 0x57, 0x5a, 0x47, 0x63, 0x2f, 0x49, 0x6a, 0x6f, 0x65, 0x64, 0x51, 0x46, 0x39, 0x0a, 0x37, 0x2f, 0x74, 0x63, 0x5a, 0x34, 0x7a, 0x4a, 0x7a, 0x46, 0x78, 0x72, 0x71, 0x5a, 0x48, 0x6d, 0x75, 0x55, 0x4c, 0x6c, 0x49, 0x45, 0x75, 0x62, 0x32, 0x70, 0x74, 0x37, 0x75, 0x5a, 0x6c, 0x64, 0x32, 0x5a, 0x75, 0x41, 0x53, 0x39, 0x65, 0x45, 0x51, 0x43, 0x73, 0x6e, 0x30, 0x2b, 0x69, 0x36, 0x4d, 0x4c, 0x73, 0x2b, 0x43, 0x52, 0x71, 0x6e, 0x53, 0x5a, 0x58, 0x76, 0x4b, 0x30, 0x41, 0x6b, 0x77, 0x70, 0x66, 0x48, 0x70, 0x2b, 0x36, 0x62, 0x4a, 0x65, 0x2b, 0x6f, 0x0a, 0x43, 0x67, 0x43, 0x58, 0x68, 0x56, 0x71, 0x71, 0x6e, 0x64, 0x77, 0x70, 0x79, 0x65, 0x49, 0x31, 0x42, 0x2b, 0x74, 0x77, 0x54, 0x55, 0x72, 0x57, 0x77, 0x62, 0x4e, 0x57, 0x75, 0x4b, 0x46, 0x42, 0x4f, 0x4a, 0x76, 0x52, 0x2b, 0x7a, 0x46, 0x2f, 0x6a, 0x2b, 0x42, 0x66, 0x34, 0x62, 0x45, 0x2f, 0x44, 0x34, 0x34, 0x57, 0x53, 0x57, 0x44, 0x58, 0x42, 0x6f, 0x30, 0x59, 0x2b, 0x61, 0x6f, 0x6d, 0x45, 0x4b, 0x73, 0x71, 0x30, 0x39, 0x44, 0x52, 0x5a, 0x34, 0x30, 0x62, 0x0a, 0x52, 0x72, 0x35, 0x48, 0x4d, 0x4e, 0x55, 0x75, 0x63, 0x74, 0x48, 0x46, 0x59, 0x39, 0x72, 0x6e, 0x59, 0x33, 0x6c, 0x45, 0x66, 0x6b, 0x74, 0x6a, 0x4a, 0x49, 0x6d, 0x47, 0x4c, 0x6a, 0x51, 0x2f, 0x4b, 0x55, 0x78, 0x53, 0x69, 0x79, 0x71, 0x6e, 0x77, 0x4f, 0x4b, 0x52, 0x4b, 0x49, 0x6d, 0x35, 0x77, 0x46, 0x76, 0x35, 0x48, 0x64, 0x6e, 0x6e, 0x4a, 0x36, 0x33, 0x2f, 0x6d, 0x67, 0x4b, 0x58, 0x77, 0x63, 0x5a, 0x51, 0x6b, 0x70, 0x73, 0x43, 0x4c, 0x4c, 0x32, 0x70, 0x0a, 0x75, 0x54, 0x52, 0x5a, 0x43, 0x72, 0x2b, 0x45, 0x53, 0x76, 0x2f, 0x66, 0x2f, 0x72, 0x4f, 0x66, 0x36, 0x39, 0x6d, 0x65, 0x34, 0x4a, 0x67, 0x6a, 0x37, 0x4b, 0x5a, 0x72, 0x64, 0x78, 0x59, 0x71, 0x32, 0x38, 0x79, 0x74, 0x4f, 0x78, 0x79, 0x6b, 0x68, 0x39, 0x78, 0x47, 0x63, 0x31, 0x34, 0x5a, 0x59, 0x6d, 0x68, 0x46, 0x56, 0x2b, 0x53, 0x51, 0x67, 0x6b, 0x4b, 0x37, 0x51, 0x74, 0x62, 0x77, 0x59, 0x65, 0x44, 0x42, 0x6f, 0x7a, 0x31, 0x6d, 0x6f, 0x31, 0x33, 0x30, 0x0a, 0x47, 0x4f, 0x36, 0x49, 0x79, 0x59, 0x30, 0x58, 0x52, 0x53, 0x6d, 0x5a, 0x4d, 0x6e, 0x55, 0x43, 0x4d, 0x65, 0x34, 0x70, 0x4a, 0x73, 0x68, 0x72, 0x41, 0x75, 0x61, 0x31, 0x59, 0x6b, 0x56, 0x2f, 0x4e, 0x78, 0x56, 0x61, 0x49, 0x32, 0x69, 0x4a, 0x31, 0x44, 0x37, 0x65, 0x54, 0x69, 0x65, 0x77, 0x38, 0x45, 0x41, 0x4d, 0x76, 0x45, 0x30, 0x58, 0x79, 0x30, 0x32, 0x69, 0x73, 0x78, 0x37, 0x51, 0x42, 0x6c, 0x72, 0x64, 0x39, 0x70, 0x50, 0x50, 0x56, 0x33, 0x57, 0x5a, 0x0a, 0x39, 0x66, 0x71, 0x47, 0x47, 0x6d, 0x64, 0x34, 0x73, 0x37, 0x2b, 0x57, 0x2f, 0x6a, 0x54, 0x63, 0x76, 0x65, 0x64, 0x53, 0x56, 0x75, 0x57, 0x7a, 0x35, 0x58, 0x56, 0x37, 0x31, 0x30, 0x47, 0x52, 0x42, 0x64, 0x78, 0x64, 0x61, 0x65, 0x4f, 0x56, 0x44, 0x55, 0x4f, 0x35, 0x2f, 0x49, 0x4f, 0x57, 0x4f, 0x5a, 0x56, 0x37, 0x62, 0x49, 0x42, 0x61, 0x54, 0x78, 0x4e, 0x79, 0x78, 0x74, 0x64, 0x39, 0x4b, 0x58, 0x70, 0x45, 0x75, 0x6c, 0x4b, 0x6b, 0x4b, 0x74, 0x56, 0x42, 0x0a, 0x52, 0x67, 0x6b, 0x67, 0x2f, 0x69, 0x4b, 0x67, 0x74, 0x6c, 0x73, 0x77, 0x6a, 0x62, 0x79, 0x4a, 0x44, 0x4e, 0x58, 0x58, 0x63, 0x50, 0x69, 0x48, 0x55, 0x76, 0x33, 0x61, 0x37, 0x36, 0x78, 0x52, 0x4c, 0x67, 0x65, 0x7a, 0x54, 0x76, 0x37, 0x51, 0x43, 0x64, 0x70, 0x77, 0x37, 0x35, 0x6a, 0x36, 0x56, 0x75, 0x5a, 0x74, 0x32, 0x37, 0x56, 0x58, 0x53, 0x39, 0x7a, 0x6c, 0x4c, 0x43, 0x55, 0x56, 0x79, 0x4a, 0x34, 0x75, 0x65, 0x45, 0x37, 0x34, 0x32, 0x70, 0x79, 0x65, 0x0a, 0x68, 0x69, 0x7a, 0x4b, 0x56, 0x2f, 0x4d, 0x61, 0x35, 0x63, 0x69, 0x53, 0x69, 0x78, 0x71, 0x43, 0x6c, 0x6e, 0x72, 0x44, 0x76, 0x46, 0x41, 0x53, 0x61, 0x64, 0x67, 0x4f, 0x57, 0x6b, 0x61, 0x4c, 0x4f, 0x75, 0x73, 0x6d, 0x2b, 0x69, 0x50, 0x4a, 0x74, 0x72, 0x43, 0x42, 0x76, 0x6b, 0x49, 0x41, 0x70, 0x50, 0x6a, 0x57, 0x2f, 0x6a, 0x41, 0x75, 0x78, 0x39, 0x4a, 0x47, 0x39, 0x75, 0x57, 0x4f, 0x64, 0x66, 0x33, 0x79, 0x7a, 0x4c, 0x6e, 0x51, 0x68, 0x31, 0x76, 0x4d, 0x0a, 0x42, 0x68, 0x42, 0x67, 0x75, 0x34, 0x4d, 0x31, 0x74, 0x31, 0x35, 0x6e, 0x33, 0x6b, 0x66, 0x73, 0x6d, 0x55, 0x6a, 0x78, 0x70, 0x4b, 0x45, 0x56, 0x2f, 0x71, 0x32, 0x4d, 0x59, 0x6f, 0x34, 0x35, 0x56, 0x55, 0x38, 0x35, 0x46, 0x72, 0x6d, 0x78, 0x59, 0x35, 0x33, 0x2f, 0x74, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x0a, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x32, 0x6f, 0x56, 0x51, 0x35, 0x41, 0x73, 0x4f, 0x67, 0x50, 0x34, 0x36, 0x4b, 0x76, 0x50, 0x72, 0x55, 0x2b, 0x42, 0x79, 0x6d, 0x30, 0x54, 0x6f, 0x4f, 0x2f, 0x54, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x0a, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4e, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x48, 0x47, 0x6c, 0x44, 0x73, 0x37, 0x6b, 0x36, 0x62, 0x38, 0x2f, 0x4f, 0x4e, 0x57, 0x4a, 0x57, 0x73, 0x51, 0x43, 0x59, 0x66, 0x74, 0x4d, 0x78, 0x52, 0x51, 0x58, 0x4c, 0x59, 0x74, 0x50, 0x55, 0x32, 0x73, 0x51, 0x46, 0x2f, 0x78, 0x6c, 0x68, 0x4d, 0x63, 0x51, 0x53, 0x5a, 0x44, 0x65, 0x32, 0x38, 0x63, 0x6d, 0x6b, 0x34, 0x67, 0x6d, 0x62, 0x33, 0x44, 0x57, 0x0a, 0x41, 0x6c, 0x34, 0x35, 0x6f, 0x50, 0x65, 0x50, 0x71, 0x35, 0x61, 0x31, 0x70, 0x52, 0x4e, 0x63, 0x67, 0x52, 0x52, 0x74, 0x44, 0x6f, 0x47, 0x43, 0x45, 0x52, 0x75, 0x4b, 0x54, 0x73, 0x5a, 0x50, 0x70, 0x64, 0x31, 0x69, 0x48, 0x6b, 0x54, 0x66, 0x43, 0x56, 0x6e, 0x30, 0x57, 0x33, 0x63, 0x4c, 0x4e, 0x2b, 0x6d, 0x4c, 0x49, 0x4d, 0x62, 0x34, 0x43, 0x6b, 0x34, 0x75, 0x57, 0x42, 0x7a, 0x72, 0x4d, 0x39, 0x44, 0x50, 0x68, 0x6d, 0x44, 0x4a, 0x32, 0x76, 0x75, 0x41, 0x0a, 0x4c, 0x35, 0x35, 0x4d, 0x59, 0x49, 0x52, 0x34, 0x50, 0x53, 0x46, 0x6b, 0x31, 0x76, 0x74, 0x42, 0x48, 0x78, 0x67, 0x50, 0x35, 0x38, 0x6c, 0x31, 0x63, 0x62, 0x32, 0x39, 0x58, 0x4e, 0x34, 0x30, 0x68, 0x7a, 0x35, 0x42, 0x73, 0x41, 0x37, 0x32, 0x75, 0x64, 0x59, 0x2f, 0x43, 0x52, 0x4f, 0x57, 0x46, 0x43, 0x2f, 0x65, 0x6d, 0x68, 0x31, 0x61, 0x75, 0x56, 0x62, 0x4f, 0x4e, 0x54, 0x71, 0x77, 0x58, 0x33, 0x42, 0x4e, 0x58, 0x75, 0x4d, 0x70, 0x38, 0x53, 0x4d, 0x6f, 0x0a, 0x63, 0x6c, 0x6d, 0x32, 0x71, 0x38, 0x4b, 0x4d, 0x5a, 0x69, 0x59, 0x63, 0x64, 0x79, 0x77, 0x6d, 0x64, 0x6a, 0x57, 0x4c, 0x4b, 0x4b, 0x64, 0x70, 0x6f, 0x50, 0x6b, 0x37, 0x39, 0x53, 0x50, 0x64, 0x68, 0x52, 0x42, 0x30, 0x79, 0x5a, 0x41, 0x44, 0x56, 0x70, 0x48, 0x6e, 0x72, 0x37, 0x70, 0x48, 0x31, 0x42, 0x4b, 0x58, 0x45, 0x53, 0x4c, 0x6a, 0x6f, 0x6b, 0x6d, 0x55, 0x62, 0x4f, 0x65, 0x33, 0x6c, 0x45, 0x75, 0x36, 0x4c, 0x61, 0x54, 0x61, 0x4d, 0x34, 0x74, 0x4d, 0x0a, 0x70, 0x6b, 0x54, 0x2f, 0x57, 0x6a, 0x7a, 0x47, 0x48, 0x57, 0x54, 0x59, 0x74, 0x54, 0x48, 0x6b, 0x70, 0x6a, 0x78, 0x36, 0x71, 0x46, 0x63, 0x4c, 0x32, 0x2b, 0x31, 0x68, 0x47, 0x73, 0x76, 0x78, 0x7a, 0x6e, 0x4e, 0x33, 0x59, 0x36, 0x53, 0x48, 0x62, 0x30, 0x78, 0x52, 0x4f, 0x4e, 0x62, 0x6b, 0x58, 0x38, 0x65, 0x66, 0x74, 0x6f, 0x45, 0x71, 0x35, 0x49, 0x56, 0x49, 0x65, 0x56, 0x68, 0x65, 0x4f, 0x2f, 0x6a, 0x62, 0x41, 0x6f, 0x4a, 0x6e, 0x77, 0x54, 0x6e, 0x62, 0x0a, 0x77, 0x33, 0x52, 0x4c, 0x50, 0x54, 0x59, 0x65, 0x2b, 0x53, 0x6d, 0x54, 0x69, 0x47, 0x68, 0x62, 0x71, 0x45, 0x51, 0x5a, 0x49, 0x66, 0x43, 0x6e, 0x36, 0x49, 0x45, 0x4e, 0x4c, 0x4f, 0x69, 0x54, 0x4e, 0x72, 0x51, 0x33, 0x73, 0x73, 0x71, 0x77, 0x47, 0x79, 0x5a, 0x36, 0x6d, 0x69, 0x55, 0x66, 0x6d, 0x70, 0x71, 0x41, 0x6e, 0x6b, 0x73, 0x71, 0x50, 0x2f, 0x75, 0x6a, 0x6d, 0x76, 0x35, 0x7a, 0x4d, 0x6e, 0x48, 0x43, 0x6e, 0x73, 0x5a, 0x79, 0x34, 0x59, 0x70, 0x6f, 0x0a, 0x4a, 0x2f, 0x48, 0x6b, 0x44, 0x37, 0x54, 0x45, 0x54, 0x4b, 0x56, 0x68, 0x6b, 0x2f, 0x69, 0x58, 0x45, 0x41, 0x63, 0x71, 0x4d, 0x43, 0x57, 0x70, 0x75, 0x63, 0x68, 0x78, 0x75, 0x4f, 0x39, 0x6f, 0x7a, 0x43, 0x31, 0x2b, 0x39, 0x65, 0x42, 0x2b, 0x44, 0x34, 0x4b, 0x6f, 0x62, 0x37, 0x61, 0x36, 0x62, 0x49, 0x4e, 0x44, 0x64, 0x38, 0x32, 0x4b, 0x6b, 0x68, 0x65, 0x68, 0x6e, 0x6c, 0x74, 0x34, 0x46, 0x6a, 0x31, 0x46, 0x34, 0x6a, 0x4e, 0x79, 0x33, 0x65, 0x46, 0x6d, 0x0a, 0x79, 0x70, 0x6e, 0x54, 0x79, 0x63, 0x55, 0x6d, 0x2f, 0x51, 0x31, 0x6f, 0x42, 0x45, 0x61, 0x75, 0x74, 0x74, 0x6d, 0x62, 0x6a, 0x4c, 0x34, 0x5a, 0x76, 0x72, 0x48, 0x47, 0x38, 0x68, 0x6e, 0x6a, 0x58, 0x41, 0x4c, 0x4b, 0x4c, 0x4e, 0x68, 0x76, 0x53, 0x67, 0x66, 0x5a, 0x79, 0x54, 0x58, 0x61, 0x51, 0x48, 0x58, 0x79, 0x78, 0x4b, 0x63, 0x5a, 0x62, 0x35, 0x35, 0x43, 0x45, 0x4a, 0x68, 0x31, 0x35, 0x70, 0x57, 0x4c, 0x59, 0x4c, 0x7a, 0x74, 0x78, 0x52, 0x4c, 0x58, 0x0a, 0x69, 0x73, 0x37, 0x56, 0x6d, 0x46, 0x78, 0x57, 0x6c, 0x67, 0x50, 0x46, 0x37, 0x6e, 0x63, 0x47, 0x4e, 0x66, 0x2f, 0x50, 0x35, 0x4f, 0x34, 0x2f, 0x45, 0x32, 0x48, 0x75, 0x32, 0x39, 0x6f, 0x74, 0x68, 0x66, 0x44, 0x4e, 0x72, 0x70, 0x32, 0x79, 0x47, 0x41, 0x6c, 0x46, 0x77, 0x35, 0x4b, 0x68, 0x63, 0x68, 0x66, 0x38, 0x52, 0x37, 0x61, 0x67, 0x43, 0x79, 0x7a, 0x78, 0x78, 0x4e, 0x35, 0x44, 0x61, 0x41, 0x68, 0x71, 0x58, 0x7a, 0x76, 0x77, 0x64, 0x6d, 0x50, 0x37, 0x0a, 0x7a, 0x41, 0x59, 0x73, 0x70, 0x73, 0x62, 0x69, 0x44, 0x72, 0x57, 0x35, 0x76, 0x69, 0x53, 0x50, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x48, 0x65, 0x6c, 0x6c, 0x65, 0x6e, 0x69, 0x63, 0x20, 0x41, 0x63, 0x61, 0x64, 0x65, 0x6d, 0x69, 0x63, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x52, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x49, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x20, 0x32, 0x30, 0x31, 0x35, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x47, 0x43, 0x7a, 0x43, 0x43, 0x41, 0x2f, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x43, 0x42, 0x70, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x31, 0x49, 0x78, 0x44, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x0a, 0x42, 0x6b, 0x46, 0x30, 0x61, 0x47, 0x56, 0x75, 0x63, 0x7a, 0x46, 0x45, 0x4d, 0x45, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x37, 0x53, 0x47, 0x56, 0x73, 0x62, 0x47, 0x56, 0x75, 0x61, 0x57, 0x4d, 0x67, 0x51, 0x57, 0x4e, 0x68, 0x5a, 0x47, 0x56, 0x74, 0x61, 0x57, 0x4d, 0x67, 0x59, 0x57, 0x35, 0x6b, 0x49, 0x46, 0x4a, 0x6c, 0x63, 0x32, 0x56, 0x68, 0x63, 0x6d, 0x4e, 0x6f, 0x49, 0x45, 0x6c, 0x75, 0x63, 0x33, 0x52, 0x70, 0x64, 0x48, 0x56, 0x30, 0x0a, 0x61, 0x57, 0x39, 0x75, 0x63, 0x79, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x4c, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x78, 0x51, 0x44, 0x41, 0x2b, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4e, 0x30, 0x68, 0x6c, 0x62, 0x47, 0x78, 0x6c, 0x62, 0x6d, 0x6c, 0x6a, 0x49, 0x45, 0x46, 0x6a, 0x59, 0x57, 0x52, 0x6c, 0x62, 0x57, 0x6c, 0x6a, 0x49, 0x47, 0x46, 0x75, 0x5a, 0x43, 0x42, 0x53, 0x5a, 0x58, 0x4e, 0x6c, 0x0a, 0x59, 0x58, 0x4a, 0x6a, 0x61, 0x43, 0x42, 0x4a, 0x62, 0x6e, 0x4e, 0x30, 0x61, 0x58, 0x52, 0x31, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6e, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x49, 0x77, 0x4d, 0x54, 0x55, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x55, 0x77, 0x4e, 0x7a, 0x41, 0x33, 0x4d, 0x54, 0x41, 0x78, 0x4d, 0x54, 0x49, 0x78, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x41, 0x77, 0x4e, 0x6a, 0x4d, 0x77, 0x4d, 0x54, 0x41, 0x78, 0x0a, 0x4d, 0x54, 0x49, 0x78, 0x57, 0x6a, 0x43, 0x42, 0x70, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x31, 0x49, 0x78, 0x44, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x42, 0x6b, 0x46, 0x30, 0x61, 0x47, 0x56, 0x75, 0x63, 0x7a, 0x46, 0x45, 0x4d, 0x45, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x37, 0x53, 0x47, 0x56, 0x73, 0x62, 0x47, 0x56, 0x75, 0x61, 0x57, 0x4d, 0x67, 0x0a, 0x51, 0x57, 0x4e, 0x68, 0x5a, 0x47, 0x56, 0x74, 0x61, 0x57, 0x4d, 0x67, 0x59, 0x57, 0x35, 0x6b, 0x49, 0x46, 0x4a, 0x6c, 0x63, 0x32, 0x56, 0x68, 0x63, 0x6d, 0x4e, 0x6f, 0x49, 0x45, 0x6c, 0x75, 0x63, 0x33, 0x52, 0x70, 0x64, 0x48, 0x56, 0x30, 0x61, 0x57, 0x39, 0x75, 0x63, 0x79, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x4c, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x78, 0x51, 0x44, 0x41, 0x2b, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x4d, 0x54, 0x4e, 0x30, 0x68, 0x6c, 0x62, 0x47, 0x78, 0x6c, 0x62, 0x6d, 0x6c, 0x6a, 0x49, 0x45, 0x46, 0x6a, 0x59, 0x57, 0x52, 0x6c, 0x62, 0x57, 0x6c, 0x6a, 0x49, 0x47, 0x46, 0x75, 0x5a, 0x43, 0x42, 0x53, 0x5a, 0x58, 0x4e, 0x6c, 0x59, 0x58, 0x4a, 0x6a, 0x61, 0x43, 0x42, 0x4a, 0x62, 0x6e, 0x4e, 0x30, 0x61, 0x58, 0x52, 0x31, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6e, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x49, 0x77, 0x0a, 0x4d, 0x54, 0x55, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x44, 0x43, 0x2b, 0x4b, 0x6b, 0x2f, 0x47, 0x34, 0x6e, 0x38, 0x50, 0x44, 0x77, 0x45, 0x58, 0x54, 0x32, 0x51, 0x4e, 0x72, 0x43, 0x52, 0x4f, 0x6e, 0x6b, 0x38, 0x5a, 0x6c, 0x72, 0x76, 0x0a, 0x62, 0x54, 0x6b, 0x42, 0x53, 0x52, 0x71, 0x30, 0x74, 0x38, 0x39, 0x2f, 0x54, 0x53, 0x4e, 0x54, 0x74, 0x35, 0x41, 0x41, 0x34, 0x78, 0x4d, 0x71, 0x4b, 0x4b, 0x59, 0x78, 0x38, 0x5a, 0x45, 0x41, 0x34, 0x79, 0x6a, 0x73, 0x72, 0x69, 0x46, 0x42, 0x7a, 0x68, 0x2f, 0x61, 0x2f, 0x58, 0x30, 0x53, 0x57, 0x77, 0x47, 0x44, 0x44, 0x37, 0x6d, 0x77, 0x58, 0x35, 0x6e, 0x68, 0x38, 0x68, 0x4b, 0x44, 0x67, 0x45, 0x30, 0x47, 0x50, 0x74, 0x2b, 0x73, 0x72, 0x2b, 0x65, 0x68, 0x0a, 0x69, 0x47, 0x73, 0x78, 0x72, 0x2f, 0x43, 0x4c, 0x30, 0x42, 0x67, 0x7a, 0x75, 0x4e, 0x74, 0x46, 0x61, 0x6a, 0x54, 0x30, 0x41, 0x6f, 0x41, 0x6b, 0x4b, 0x41, 0x6f, 0x43, 0x46, 0x5a, 0x56, 0x65, 0x64, 0x69, 0x6f, 0x4e, 0x6d, 0x54, 0x6f, 0x55, 0x57, 0x2f, 0x62, 0x4c, 0x79, 0x31, 0x4f, 0x38, 0x45, 0x30, 0x30, 0x42, 0x69, 0x44, 0x65, 0x55, 0x4a, 0x52, 0x74, 0x43, 0x76, 0x43, 0x4c, 0x59, 0x6a, 0x71, 0x4f, 0x57, 0x58, 0x6a, 0x72, 0x5a, 0x4d, 0x74, 0x73, 0x2b, 0x0a, 0x36, 0x50, 0x41, 0x51, 0x5a, 0x65, 0x31, 0x30, 0x34, 0x53, 0x2b, 0x6e, 0x66, 0x4b, 0x38, 0x6e, 0x4e, 0x4c, 0x73, 0x70, 0x66, 0x5a, 0x75, 0x32, 0x7a, 0x77, 0x6e, 0x49, 0x35, 0x64, 0x4d, 0x4b, 0x2f, 0x49, 0x68, 0x6c, 0x5a, 0x58, 0x51, 0x4b, 0x33, 0x48, 0x4d, 0x63, 0x58, 0x4d, 0x31, 0x41, 0x73, 0x52, 0x7a, 0x55, 0x74, 0x6f, 0x53, 0x4d, 0x54, 0x46, 0x44, 0x50, 0x61, 0x49, 0x36, 0x6f, 0x57, 0x61, 0x37, 0x43, 0x4a, 0x30, 0x36, 0x43, 0x6f, 0x6a, 0x58, 0x64, 0x0a, 0x46, 0x50, 0x51, 0x66, 0x2f, 0x37, 0x4a, 0x33, 0x31, 0x59, 0x63, 0x76, 0x71, 0x6d, 0x35, 0x39, 0x4a, 0x43, 0x66, 0x6e, 0x78, 0x73, 0x73, 0x6d, 0x35, 0x75, 0x58, 0x2b, 0x5a, 0x77, 0x64, 0x6a, 0x32, 0x45, 0x55, 0x4e, 0x33, 0x54, 0x70, 0x5a, 0x5a, 0x54, 0x6c, 0x59, 0x65, 0x70, 0x4b, 0x5a, 0x63, 0x6a, 0x32, 0x63, 0x68, 0x46, 0x36, 0x49, 0x49, 0x62, 0x6a, 0x56, 0x39, 0x43, 0x7a, 0x38, 0x32, 0x58, 0x42, 0x53, 0x54, 0x33, 0x69, 0x34, 0x76, 0x54, 0x77, 0x72, 0x0a, 0x69, 0x35, 0x57, 0x59, 0x39, 0x62, 0x50, 0x52, 0x61, 0x4d, 0x38, 0x67, 0x46, 0x48, 0x35, 0x4d, 0x58, 0x46, 0x2f, 0x6e, 0x69, 0x2b, 0x58, 0x31, 0x4e, 0x59, 0x45, 0x5a, 0x4e, 0x39, 0x63, 0x52, 0x43, 0x4c, 0x64, 0x6d, 0x76, 0x74, 0x4e, 0x4b, 0x7a, 0x6f, 0x4e, 0x58, 0x41, 0x44, 0x72, 0x44, 0x67, 0x66, 0x67, 0x58, 0x79, 0x35, 0x49, 0x32, 0x58, 0x64, 0x47, 0x6a, 0x32, 0x48, 0x55, 0x62, 0x34, 0x59, 0x73, 0x6e, 0x36, 0x6e, 0x70, 0x49, 0x51, 0x66, 0x31, 0x46, 0x0a, 0x47, 0x51, 0x61, 0x74, 0x4a, 0x35, 0x6c, 0x4f, 0x77, 0x58, 0x42, 0x48, 0x33, 0x62, 0x57, 0x66, 0x67, 0x56, 0x4d, 0x53, 0x35, 0x62, 0x47, 0x4d, 0x53, 0x46, 0x30, 0x78, 0x51, 0x78, 0x66, 0x6a, 0x6a, 0x4d, 0x5a, 0x36, 0x59, 0x35, 0x5a, 0x4c, 0x4b, 0x54, 0x42, 0x4f, 0x68, 0x45, 0x35, 0x69, 0x47, 0x56, 0x34, 0x38, 0x7a, 0x70, 0x65, 0x51, 0x70, 0x58, 0x38, 0x42, 0x36, 0x35, 0x33, 0x67, 0x2b, 0x49, 0x75, 0x4a, 0x33, 0x53, 0x57, 0x59, 0x50, 0x5a, 0x4b, 0x32, 0x0a, 0x66, 0x75, 0x2f, 0x5a, 0x38, 0x56, 0x46, 0x52, 0x66, 0x53, 0x30, 0x6d, 0x79, 0x47, 0x6c, 0x5a, 0x59, 0x65, 0x43, 0x73, 0x61, 0x72, 0x67, 0x71, 0x4e, 0x68, 0x45, 0x45, 0x65, 0x6c, 0x43, 0x39, 0x4d, 0x6f, 0x53, 0x2b, 0x4c, 0x39, 0x78, 0x79, 0x31, 0x64, 0x63, 0x64, 0x46, 0x6b, 0x66, 0x6b, 0x52, 0x32, 0x59, 0x67, 0x50, 0x2f, 0x53, 0x57, 0x78, 0x61, 0x2b, 0x4f, 0x41, 0x58, 0x71, 0x6c, 0x44, 0x33, 0x70, 0x6b, 0x39, 0x51, 0x30, 0x59, 0x68, 0x39, 0x6d, 0x75, 0x0a, 0x69, 0x4e, 0x58, 0x36, 0x68, 0x4d, 0x45, 0x36, 0x77, 0x47, 0x6b, 0x6f, 0x4c, 0x66, 0x49, 0x4e, 0x61, 0x46, 0x47, 0x71, 0x34, 0x36, 0x56, 0x33, 0x78, 0x71, 0x53, 0x51, 0x44, 0x71, 0x45, 0x33, 0x69, 0x7a, 0x45, 0x6a, 0x52, 0x38, 0x45, 0x4a, 0x43, 0x4f, 0x74, 0x75, 0x39, 0x33, 0x69, 0x62, 0x31, 0x34, 0x4c, 0x38, 0x68, 0x43, 0x43, 0x5a, 0x53, 0x52, 0x6d, 0x32, 0x45, 0x6b, 0x61, 0x78, 0x2b, 0x30, 0x56, 0x56, 0x46, 0x71, 0x6d, 0x6a, 0x5a, 0x61, 0x79, 0x63, 0x0a, 0x42, 0x77, 0x2f, 0x71, 0x61, 0x39, 0x77, 0x66, 0x4c, 0x67, 0x5a, 0x79, 0x37, 0x49, 0x61, 0x49, 0x45, 0x75, 0x51, 0x74, 0x32, 0x31, 0x38, 0x46, 0x4c, 0x2b, 0x54, 0x77, 0x41, 0x39, 0x4d, 0x6d, 0x4d, 0x2b, 0x65, 0x41, 0x77, 0x73, 0x31, 0x43, 0x6f, 0x52, 0x63, 0x30, 0x43, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x0a, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x63, 0x52, 0x56, 0x6e, 0x79, 0x4d, 0x6a, 0x4a, 0x76, 0x58, 0x56, 0x64, 0x63, 0x74, 0x41, 0x34, 0x47, 0x47, 0x71, 0x64, 0x38, 0x33, 0x45, 0x6b, 0x56, 0x41, 0x73, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x0a, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x48, 0x57, 0x37, 0x62, 0x56, 0x52, 0x4c, 0x71, 0x68, 0x42, 0x59, 0x52, 0x6a, 0x54, 0x79, 0x59, 0x74, 0x63, 0x57, 0x4e, 0x6c, 0x30, 0x49, 0x58, 0x74, 0x56, 0x73, 0x79, 0x49, 0x65, 0x39, 0x74, 0x43, 0x35, 0x47, 0x38, 0x6a, 0x48, 0x34, 0x66, 0x4f, 0x70, 0x43, 0x74, 0x5a, 0x4d, 0x57, 0x56, 0x64, 0x79, 0x68, 0x44, 0x42, 0x4b, 0x67, 0x32, 0x6d, 0x46, 0x2b, 0x0a, 0x44, 0x31, 0x68, 0x59, 0x63, 0x32, 0x52, 0x79, 0x78, 0x2b, 0x68, 0x46, 0x6a, 0x74, 0x79, 0x70, 0x38, 0x69, 0x59, 0x2f, 0x78, 0x6e, 0x6d, 0x4d, 0x73, 0x56, 0x4d, 0x49, 0x4d, 0x34, 0x47, 0x77, 0x56, 0x68, 0x4f, 0x2b, 0x35, 0x6c, 0x46, 0x63, 0x32, 0x4a, 0x73, 0x4b, 0x54, 0x30, 0x75, 0x63, 0x56, 0x6c, 0x4d, 0x43, 0x36, 0x55, 0x2f, 0x32, 0x44, 0x57, 0x44, 0x71, 0x54, 0x55, 0x4a, 0x56, 0x36, 0x48, 0x77, 0x62, 0x49, 0x53, 0x48, 0x54, 0x47, 0x7a, 0x72, 0x4d, 0x0a, 0x64, 0x2f, 0x4b, 0x34, 0x6b, 0x50, 0x46, 0x6f, 0x78, 0x2f, 0x6c, 0x61, 0x2f, 0x76, 0x6f, 0x74, 0x39, 0x4c, 0x2f, 0x4a, 0x39, 0x55, 0x55, 0x62, 0x7a, 0x6a, 0x67, 0x51, 0x4b, 0x6a, 0x65, 0x4b, 0x65, 0x61, 0x4f, 0x30, 0x34, 0x77, 0x6c, 0x73, 0x68, 0x59, 0x61, 0x54, 0x2f, 0x34, 0x6d, 0x57, 0x4a, 0x33, 0x69, 0x42, 0x6a, 0x32, 0x66, 0x6a, 0x52, 0x6e, 0x52, 0x55, 0x6a, 0x74, 0x6b, 0x4e, 0x61, 0x65, 0x4a, 0x4b, 0x39, 0x45, 0x31, 0x30, 0x41, 0x2f, 0x2b, 0x79, 0x0a, 0x64, 0x2b, 0x32, 0x56, 0x5a, 0x35, 0x66, 0x6b, 0x73, 0x63, 0x57, 0x72, 0x76, 0x32, 0x6f, 0x6a, 0x36, 0x4e, 0x53, 0x55, 0x34, 0x6b, 0x51, 0x6f, 0x59, 0x73, 0x52, 0x4c, 0x34, 0x76, 0x44, 0x59, 0x34, 0x69, 0x6c, 0x72, 0x47, 0x6e, 0x42, 0x2b, 0x4a, 0x47, 0x47, 0x54, 0x65, 0x30, 0x38, 0x44, 0x4d, 0x69, 0x55, 0x4e, 0x52, 0x53, 0x51, 0x72, 0x6c, 0x72, 0x52, 0x47, 0x61, 0x72, 0x39, 0x4b, 0x43, 0x2f, 0x65, 0x61, 0x6a, 0x38, 0x47, 0x73, 0x47, 0x73, 0x56, 0x6e, 0x0a, 0x38, 0x32, 0x38, 0x30, 0x30, 0x76, 0x70, 0x7a, 0x59, 0x34, 0x7a, 0x76, 0x46, 0x72, 0x43, 0x6f, 0x70, 0x45, 0x59, 0x71, 0x2b, 0x4f, 0x73, 0x53, 0x37, 0x48, 0x4b, 0x30, 0x37, 0x2f, 0x67, 0x72, 0x66, 0x6f, 0x78, 0x53, 0x77, 0x49, 0x75, 0x45, 0x56, 0x50, 0x6b, 0x76, 0x50, 0x75, 0x4e, 0x56, 0x71, 0x4e, 0x78, 0x6d, 0x73, 0x64, 0x6e, 0x68, 0x58, 0x39, 0x69, 0x7a, 0x6a, 0x46, 0x6b, 0x30, 0x57, 0x61, 0x53, 0x72, 0x54, 0x32, 0x79, 0x37, 0x48, 0x78, 0x6a, 0x62, 0x0a, 0x64, 0x61, 0x76, 0x59, 0x79, 0x35, 0x4c, 0x4e, 0x6c, 0x44, 0x68, 0x68, 0x44, 0x67, 0x63, 0x47, 0x48, 0x30, 0x74, 0x47, 0x45, 0x50, 0x45, 0x56, 0x76, 0x6f, 0x32, 0x46, 0x58, 0x44, 0x74, 0x4b, 0x4b, 0x34, 0x46, 0x35, 0x44, 0x37, 0x52, 0x70, 0x6e, 0x30, 0x6c, 0x51, 0x6c, 0x30, 0x33, 0x33, 0x44, 0x6c, 0x5a, 0x64, 0x77, 0x4a, 0x56, 0x71, 0x77, 0x6a, 0x62, 0x44, 0x47, 0x32, 0x6a, 0x4a, 0x39, 0x53, 0x72, 0x63, 0x52, 0x35, 0x71, 0x2b, 0x73, 0x73, 0x37, 0x46, 0x0a, 0x4a, 0x65, 0x6a, 0x36, 0x41, 0x37, 0x6e, 0x61, 0x2b, 0x52, 0x5a, 0x75, 0x6b, 0x59, 0x54, 0x31, 0x48, 0x43, 0x6a, 0x49, 0x2f, 0x43, 0x62, 0x4d, 0x31, 0x78, 0x79, 0x51, 0x56, 0x71, 0x64, 0x66, 0x62, 0x7a, 0x6f, 0x45, 0x76, 0x4d, 0x31, 0x34, 0x69, 0x51, 0x75, 0x4f, 0x44, 0x79, 0x2b, 0x6a, 0x71, 0x6b, 0x2b, 0x69, 0x47, 0x78, 0x49, 0x39, 0x46, 0x67, 0x68, 0x41, 0x44, 0x2f, 0x46, 0x47, 0x54, 0x4e, 0x65, 0x71, 0x65, 0x77, 0x6a, 0x42, 0x43, 0x76, 0x56, 0x74, 0x0a, 0x4a, 0x39, 0x34, 0x43, 0x6a, 0x38, 0x72, 0x44, 0x74, 0x53, 0x76, 0x4b, 0x36, 0x65, 0x76, 0x49, 0x49, 0x56, 0x4d, 0x34, 0x70, 0x63, 0x77, 0x37, 0x32, 0x48, 0x63, 0x33, 0x4d, 0x4b, 0x4a, 0x50, 0x32, 0x57, 0x2f, 0x52, 0x38, 0x6b, 0x43, 0x74, 0x51, 0x58, 0x6f, 0x58, 0x78, 0x64, 0x5a, 0x4b, 0x4e, 0x59, 0x6d, 0x33, 0x51, 0x64, 0x56, 0x38, 0x68, 0x6e, 0x39, 0x56, 0x54, 0x59, 0x4e, 0x4b, 0x70, 0x58, 0x4d, 0x67, 0x77, 0x44, 0x71, 0x76, 0x6b, 0x50, 0x47, 0x61, 0x0a, 0x4a, 0x49, 0x37, 0x5a, 0x6a, 0x6e, 0x48, 0x4b, 0x65, 0x37, 0x69, 0x47, 0x32, 0x72, 0x4b, 0x50, 0x6d, 0x54, 0x34, 0x64, 0x45, 0x77, 0x30, 0x53, 0x45, 0x65, 0x37, 0x55, 0x71, 0x2f, 0x44, 0x70, 0x46, 0x58, 0x59, 0x43, 0x35, 0x4f, 0x44, 0x66, 0x71, 0x69, 0x41, 0x65, 0x57, 0x32, 0x47, 0x46, 0x5a, 0x45, 0x43, 0x70, 0x6b, 0x4a, 0x63, 0x4e, 0x72, 0x56, 0x50, 0x53, 0x57, 0x68, 0x32, 0x48, 0x61, 0x67, 0x43, 0x58, 0x5a, 0x57, 0x4b, 0x30, 0x76, 0x6d, 0x39, 0x71, 0x0a, 0x70, 0x2f, 0x55, 0x73, 0x51, 0x75, 0x30, 0x79, 0x72, 0x62, 0x59, 0x68, 0x6e, 0x72, 0x36, 0x38, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x48, 0x65, 0x6c, 0x6c, 0x65, 0x6e, 0x69, 0x63, 0x20, 0x41, 0x63, 0x61, 0x64, 0x65, 0x6d, 0x69, 0x63, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x52, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x49, 0x6e, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x20, 0x32, 0x30, 0x31, 0x35, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x77, 0x7a, 0x43, 0x43, 0x41, 0x6b, 0x71, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x6a, 0x43, 0x42, 0x71, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x31, 0x49, 0x78, 0x44, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x42, 0x6b, 0x46, 0x30, 0x0a, 0x61, 0x47, 0x56, 0x75, 0x63, 0x7a, 0x46, 0x45, 0x4d, 0x45, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x37, 0x53, 0x47, 0x56, 0x73, 0x62, 0x47, 0x56, 0x75, 0x61, 0x57, 0x4d, 0x67, 0x51, 0x57, 0x4e, 0x68, 0x5a, 0x47, 0x56, 0x74, 0x61, 0x57, 0x4d, 0x67, 0x59, 0x57, 0x35, 0x6b, 0x49, 0x46, 0x4a, 0x6c, 0x63, 0x32, 0x56, 0x68, 0x63, 0x6d, 0x4e, 0x6f, 0x49, 0x45, 0x6c, 0x75, 0x63, 0x33, 0x52, 0x70, 0x64, 0x48, 0x56, 0x30, 0x61, 0x57, 0x39, 0x75, 0x0a, 0x63, 0x79, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x4c, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x78, 0x52, 0x44, 0x42, 0x43, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4f, 0x30, 0x68, 0x6c, 0x62, 0x47, 0x78, 0x6c, 0x62, 0x6d, 0x6c, 0x6a, 0x49, 0x45, 0x46, 0x6a, 0x59, 0x57, 0x52, 0x6c, 0x62, 0x57, 0x6c, 0x6a, 0x49, 0x47, 0x46, 0x75, 0x5a, 0x43, 0x42, 0x53, 0x5a, 0x58, 0x4e, 0x6c, 0x59, 0x58, 0x4a, 0x6a, 0x0a, 0x61, 0x43, 0x42, 0x4a, 0x62, 0x6e, 0x4e, 0x30, 0x61, 0x58, 0x52, 0x31, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6e, 0x4d, 0x67, 0x52, 0x55, 0x4e, 0x44, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x52, 0x44, 0x51, 0x53, 0x41, 0x79, 0x4d, 0x44, 0x45, 0x31, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x31, 0x4d, 0x44, 0x63, 0x77, 0x4e, 0x7a, 0x45, 0x77, 0x4d, 0x7a, 0x63, 0x78, 0x4d, 0x6c, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x77, 0x4d, 0x44, 0x59, 0x7a, 0x4d, 0x44, 0x45, 0x77, 0x0a, 0x4d, 0x7a, 0x63, 0x78, 0x4d, 0x6c, 0x6f, 0x77, 0x67, 0x61, 0x6f, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x64, 0x53, 0x4d, 0x51, 0x38, 0x77, 0x44, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x45, 0x77, 0x5a, 0x42, 0x64, 0x47, 0x68, 0x6c, 0x62, 0x6e, 0x4d, 0x78, 0x52, 0x44, 0x42, 0x43, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x4f, 0x30, 0x68, 0x6c, 0x62, 0x47, 0x78, 0x6c, 0x62, 0x6d, 0x6c, 0x6a, 0x0a, 0x49, 0x45, 0x46, 0x6a, 0x59, 0x57, 0x52, 0x6c, 0x62, 0x57, 0x6c, 0x6a, 0x49, 0x47, 0x46, 0x75, 0x5a, 0x43, 0x42, 0x53, 0x5a, 0x58, 0x4e, 0x6c, 0x59, 0x58, 0x4a, 0x6a, 0x61, 0x43, 0x42, 0x4a, 0x62, 0x6e, 0x4e, 0x30, 0x61, 0x58, 0x52, 0x31, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6e, 0x4d, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x4d, 0x55, 0x51, 0x77, 0x51, 0x67, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x44, 0x45, 0x7a, 0x74, 0x49, 0x5a, 0x57, 0x78, 0x73, 0x5a, 0x57, 0x35, 0x70, 0x59, 0x79, 0x42, 0x42, 0x59, 0x32, 0x46, 0x6b, 0x5a, 0x57, 0x31, 0x70, 0x59, 0x79, 0x42, 0x68, 0x62, 0x6d, 0x51, 0x67, 0x55, 0x6d, 0x56, 0x7a, 0x5a, 0x57, 0x46, 0x79, 0x59, 0x32, 0x67, 0x67, 0x53, 0x57, 0x35, 0x7a, 0x64, 0x47, 0x6c, 0x30, 0x64, 0x58, 0x52, 0x70, 0x62, 0x32, 0x35, 0x7a, 0x49, 0x45, 0x56, 0x44, 0x51, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x0a, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x6a, 0x41, 0x78, 0x4e, 0x54, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x4a, 0x4b, 0x67, 0x51, 0x65, 0x68, 0x4c, 0x67, 0x6f, 0x52, 0x63, 0x34, 0x76, 0x67, 0x78, 0x45, 0x5a, 0x6d, 0x47, 0x5a, 0x45, 0x34, 0x4a, 0x4a, 0x53, 0x2b, 0x64, 0x51, 0x53, 0x38, 0x4b, 0x72, 0x6a, 0x56, 0x50, 0x0a, 0x64, 0x4a, 0x57, 0x79, 0x55, 0x57, 0x52, 0x72, 0x6a, 0x57, 0x76, 0x6d, 0x50, 0x33, 0x43, 0x56, 0x38, 0x41, 0x56, 0x45, 0x52, 0x36, 0x5a, 0x79, 0x4f, 0x46, 0x42, 0x32, 0x6c, 0x51, 0x4a, 0x61, 0x6a, 0x71, 0x34, 0x6f, 0x6e, 0x76, 0x6b, 0x74, 0x54, 0x70, 0x6e, 0x76, 0x4c, 0x45, 0x68, 0x76, 0x54, 0x43, 0x55, 0x70, 0x36, 0x4e, 0x46, 0x78, 0x57, 0x39, 0x38, 0x64, 0x77, 0x58, 0x55, 0x33, 0x74, 0x4e, 0x66, 0x36, 0x65, 0x33, 0x70, 0x43, 0x6e, 0x47, 0x6f, 0x4b, 0x0a, 0x56, 0x6c, 0x70, 0x38, 0x61, 0x51, 0x75, 0x71, 0x67, 0x41, 0x6b, 0x6b, 0x62, 0x48, 0x37, 0x42, 0x52, 0x71, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x0a, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4c, 0x51, 0x69, 0x43, 0x34, 0x4b, 0x5a, 0x4a, 0x41, 0x45, 0x4f, 0x6e, 0x4c, 0x76, 0x6b, 0x44, 0x76, 0x32, 0x2f, 0x2b, 0x35, 0x63, 0x67, 0x6b, 0x35, 0x6b, 0x71, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x32, 0x63, 0x41, 0x4d, 0x47, 0x51, 0x43, 0x4d, 0x47, 0x66, 0x4f, 0x46, 0x6d, 0x49, 0x34, 0x6f, 0x71, 0x78, 0x69, 0x52, 0x61, 0x65, 0x70, 0x6c, 0x53, 0x54, 0x41, 0x0a, 0x47, 0x69, 0x65, 0x63, 0x4d, 0x6a, 0x76, 0x41, 0x77, 0x4e, 0x57, 0x36, 0x71, 0x65, 0x66, 0x34, 0x42, 0x45, 0x4e, 0x54, 0x68, 0x65, 0x35, 0x53, 0x49, 0x64, 0x36, 0x64, 0x39, 0x53, 0x57, 0x44, 0x50, 0x70, 0x35, 0x59, 0x53, 0x79, 0x2f, 0x58, 0x5a, 0x78, 0x4d, 0x4f, 0x49, 0x51, 0x49, 0x77, 0x42, 0x65, 0x46, 0x31, 0x41, 0x64, 0x35, 0x6f, 0x37, 0x53, 0x6f, 0x66, 0x54, 0x55, 0x77, 0x4a, 0x43, 0x41, 0x33, 0x73, 0x53, 0x36, 0x31, 0x6b, 0x46, 0x79, 0x6a, 0x6e, 0x0a, 0x64, 0x63, 0x35, 0x46, 0x5a, 0x58, 0x49, 0x68, 0x46, 0x38, 0x73, 0x69, 0x51, 0x51, 0x36, 0x4d, 0x45, 0x35, 0x67, 0x34, 0x6d, 0x6c, 0x52, 0x74, 0x6d, 0x38, 0x72, 0x69, 0x66, 0x4f, 0x6f, 0x43, 0x57, 0x43, 0x4b, 0x52, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x49, 0x53, 0x52, 0x47, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x58, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x61, 0x7a, 0x43, 0x43, 0x41, 0x31, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x52, 0x41, 0x49, 0x49, 0x51, 0x7a, 0x37, 0x44, 0x53, 0x51, 0x4f, 0x4e, 0x5a, 0x52, 0x47, 0x50, 0x67, 0x75, 0x32, 0x4f, 0x43, 0x69, 0x77, 0x41, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x54, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x4b, 0x54, 0x41, 0x6e, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x49, 0x45, 0x6c, 0x75, 0x64, 0x47, 0x56, 0x79, 0x62, 0x6d, 0x56, 0x30, 0x49, 0x46, 0x4e, 0x6c, 0x59, 0x33, 0x56, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x46, 0x4a, 0x6c, 0x63, 0x32, 0x56, 0x68, 0x63, 0x6d, 0x4e, 0x6f, 0x49, 0x45, 0x64, 0x79, 0x62, 0x33, 0x56, 0x77, 0x4d, 0x52, 0x55, 0x77, 0x45, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x0a, 0x45, 0x77, 0x78, 0x4a, 0x55, 0x31, 0x4a, 0x48, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x57, 0x44, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x55, 0x77, 0x4e, 0x6a, 0x41, 0x30, 0x4d, 0x54, 0x45, 0x77, 0x4e, 0x44, 0x4d, 0x34, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x55, 0x77, 0x4e, 0x6a, 0x41, 0x30, 0x4d, 0x54, 0x45, 0x77, 0x4e, 0x44, 0x4d, 0x34, 0x57, 0x6a, 0x42, 0x50, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x70, 0x4d, 0x43, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x67, 0x53, 0x57, 0x35, 0x30, 0x5a, 0x58, 0x4a, 0x75, 0x5a, 0x58, 0x51, 0x67, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x58, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x55, 0x6d, 0x56, 0x7a, 0x5a, 0x57, 0x46, 0x79, 0x59, 0x32, 0x67, 0x67, 0x52, 0x33, 0x4a, 0x76, 0x64, 0x58, 0x41, 0x78, 0x46, 0x54, 0x41, 0x54, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x0a, 0x44, 0x45, 0x6c, 0x54, 0x55, 0x6b, 0x63, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x59, 0x4d, 0x54, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4b, 0x33, 0x6f, 0x4a, 0x48, 0x50, 0x30, 0x46, 0x44, 0x66, 0x7a, 0x6d, 0x35, 0x34, 0x72, 0x0a, 0x56, 0x79, 0x67, 0x63, 0x68, 0x37, 0x37, 0x63, 0x74, 0x39, 0x38, 0x34, 0x6b, 0x49, 0x78, 0x75, 0x50, 0x4f, 0x5a, 0x58, 0x6f, 0x48, 0x6a, 0x33, 0x64, 0x63, 0x4b, 0x69, 0x2f, 0x76, 0x56, 0x71, 0x62, 0x76, 0x59, 0x41, 0x54, 0x79, 0x6a, 0x62, 0x33, 0x6d, 0x69, 0x47, 0x62, 0x45, 0x53, 0x54, 0x74, 0x72, 0x46, 0x6a, 0x2f, 0x52, 0x51, 0x53, 0x61, 0x37, 0x38, 0x66, 0x30, 0x75, 0x6f, 0x78, 0x6d, 0x79, 0x46, 0x2b, 0x30, 0x54, 0x4d, 0x38, 0x75, 0x6b, 0x6a, 0x31, 0x0a, 0x33, 0x58, 0x6e, 0x66, 0x73, 0x37, 0x6a, 0x2f, 0x45, 0x76, 0x45, 0x68, 0x6d, 0x6b, 0x76, 0x42, 0x69, 0x6f, 0x5a, 0x78, 0x61, 0x55, 0x70, 0x6d, 0x5a, 0x6d, 0x79, 0x50, 0x66, 0x6a, 0x78, 0x77, 0x76, 0x36, 0x30, 0x70, 0x49, 0x67, 0x62, 0x7a, 0x35, 0x4d, 0x44, 0x6d, 0x67, 0x4b, 0x37, 0x69, 0x53, 0x34, 0x2b, 0x33, 0x6d, 0x58, 0x36, 0x55, 0x41, 0x35, 0x2f, 0x54, 0x52, 0x35, 0x64, 0x38, 0x6d, 0x55, 0x67, 0x6a, 0x55, 0x2b, 0x67, 0x34, 0x72, 0x6b, 0x38, 0x4b, 0x0a, 0x62, 0x34, 0x4d, 0x75, 0x30, 0x55, 0x6c, 0x58, 0x6a, 0x49, 0x42, 0x30, 0x74, 0x74, 0x6f, 0x76, 0x30, 0x44, 0x69, 0x4e, 0x65, 0x77, 0x4e, 0x77, 0x49, 0x52, 0x74, 0x31, 0x38, 0x6a, 0x41, 0x38, 0x2b, 0x6f, 0x2b, 0x75, 0x33, 0x64, 0x70, 0x6a, 0x71, 0x2b, 0x73, 0x57, 0x54, 0x38, 0x4b, 0x4f, 0x45, 0x55, 0x74, 0x2b, 0x7a, 0x77, 0x76, 0x6f, 0x2f, 0x37, 0x56, 0x33, 0x4c, 0x76, 0x53, 0x79, 0x65, 0x30, 0x72, 0x67, 0x54, 0x42, 0x49, 0x6c, 0x44, 0x48, 0x43, 0x4e, 0x0a, 0x41, 0x79, 0x6d, 0x67, 0x34, 0x56, 0x4d, 0x6b, 0x37, 0x42, 0x50, 0x5a, 0x37, 0x68, 0x6d, 0x2f, 0x45, 0x4c, 0x4e, 0x4b, 0x6a, 0x44, 0x2b, 0x4a, 0x6f, 0x32, 0x46, 0x52, 0x33, 0x71, 0x79, 0x48, 0x42, 0x35, 0x54, 0x30, 0x59, 0x33, 0x48, 0x73, 0x4c, 0x75, 0x4a, 0x76, 0x57, 0x35, 0x69, 0x42, 0x34, 0x59, 0x6c, 0x63, 0x4e, 0x48, 0x6c, 0x73, 0x64, 0x75, 0x38, 0x37, 0x6b, 0x47, 0x4a, 0x35, 0x35, 0x74, 0x75, 0x6b, 0x6d, 0x69, 0x38, 0x6d, 0x78, 0x64, 0x41, 0x51, 0x0a, 0x34, 0x51, 0x37, 0x65, 0x32, 0x52, 0x43, 0x4f, 0x46, 0x76, 0x75, 0x33, 0x39, 0x36, 0x6a, 0x33, 0x78, 0x2b, 0x55, 0x43, 0x42, 0x35, 0x69, 0x50, 0x4e, 0x67, 0x69, 0x56, 0x35, 0x2b, 0x49, 0x33, 0x6c, 0x67, 0x30, 0x32, 0x64, 0x5a, 0x37, 0x37, 0x44, 0x6e, 0x4b, 0x78, 0x48, 0x5a, 0x75, 0x38, 0x41, 0x2f, 0x6c, 0x4a, 0x42, 0x64, 0x69, 0x42, 0x33, 0x51, 0x57, 0x30, 0x4b, 0x74, 0x5a, 0x42, 0x36, 0x61, 0x77, 0x42, 0x64, 0x70, 0x55, 0x4b, 0x44, 0x39, 0x6a, 0x66, 0x0a, 0x31, 0x62, 0x30, 0x53, 0x48, 0x7a, 0x55, 0x76, 0x4b, 0x42, 0x64, 0x73, 0x30, 0x70, 0x6a, 0x42, 0x71, 0x41, 0x6c, 0x6b, 0x64, 0x32, 0x35, 0x48, 0x4e, 0x37, 0x72, 0x4f, 0x72, 0x46, 0x6c, 0x65, 0x61, 0x4a, 0x31, 0x2f, 0x63, 0x74, 0x61, 0x4a, 0x78, 0x51, 0x5a, 0x42, 0x4b, 0x54, 0x35, 0x5a, 0x50, 0x74, 0x30, 0x6d, 0x39, 0x53, 0x54, 0x4a, 0x45, 0x61, 0x64, 0x61, 0x6f, 0x30, 0x78, 0x41, 0x48, 0x30, 0x61, 0x68, 0x6d, 0x62, 0x57, 0x6e, 0x4f, 0x6c, 0x46, 0x75, 0x0a, 0x68, 0x6a, 0x75, 0x65, 0x66, 0x58, 0x4b, 0x6e, 0x45, 0x67, 0x56, 0x34, 0x57, 0x65, 0x30, 0x2b, 0x55, 0x58, 0x67, 0x56, 0x43, 0x77, 0x4f, 0x50, 0x6a, 0x64, 0x41, 0x76, 0x42, 0x62, 0x49, 0x2b, 0x65, 0x30, 0x6f, 0x63, 0x53, 0x33, 0x4d, 0x46, 0x45, 0x76, 0x7a, 0x47, 0x36, 0x75, 0x42, 0x51, 0x45, 0x33, 0x78, 0x44, 0x6b, 0x33, 0x53, 0x7a, 0x79, 0x6e, 0x54, 0x6e, 0x6a, 0x68, 0x38, 0x42, 0x43, 0x4e, 0x41, 0x77, 0x31, 0x46, 0x74, 0x78, 0x4e, 0x72, 0x51, 0x48, 0x0a, 0x75, 0x73, 0x45, 0x77, 0x4d, 0x46, 0x78, 0x49, 0x74, 0x34, 0x49, 0x37, 0x6d, 0x4b, 0x5a, 0x39, 0x59, 0x49, 0x71, 0x69, 0x6f, 0x79, 0x6d, 0x43, 0x7a, 0x4c, 0x71, 0x39, 0x67, 0x77, 0x51, 0x62, 0x6f, 0x6f, 0x4d, 0x44, 0x51, 0x61, 0x48, 0x57, 0x42, 0x66, 0x45, 0x62, 0x77, 0x72, 0x62, 0x77, 0x71, 0x48, 0x79, 0x47, 0x4f, 0x30, 0x61, 0x6f, 0x53, 0x43, 0x71, 0x49, 0x33, 0x48, 0x61, 0x61, 0x64, 0x72, 0x38, 0x66, 0x61, 0x71, 0x55, 0x39, 0x47, 0x59, 0x2f, 0x72, 0x0a, 0x4f, 0x50, 0x4e, 0x6b, 0x33, 0x73, 0x67, 0x72, 0x44, 0x51, 0x6f, 0x6f, 0x2f, 0x2f, 0x66, 0x62, 0x34, 0x68, 0x56, 0x43, 0x31, 0x43, 0x4c, 0x51, 0x4a, 0x31, 0x33, 0x68, 0x65, 0x66, 0x34, 0x59, 0x35, 0x33, 0x43, 0x49, 0x72, 0x55, 0x37, 0x6d, 0x32, 0x59, 0x73, 0x36, 0x78, 0x74, 0x30, 0x6e, 0x55, 0x57, 0x37, 0x2f, 0x76, 0x47, 0x54, 0x31, 0x4d, 0x30, 0x4e, 0x50, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x34, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x35, 0x74, 0x46, 0x6e, 0x6d, 0x65, 0x37, 0x62, 0x6c, 0x35, 0x41, 0x46, 0x7a, 0x67, 0x41, 0x69, 0x49, 0x79, 0x42, 0x70, 0x59, 0x0a, 0x39, 0x75, 0x6d, 0x62, 0x62, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x56, 0x52, 0x39, 0x59, 0x71, 0x62, 0x79, 0x79, 0x71, 0x46, 0x44, 0x51, 0x44, 0x4c, 0x48, 0x59, 0x47, 0x6d, 0x6b, 0x67, 0x4a, 0x79, 0x6b, 0x49, 0x72, 0x47, 0x46, 0x31, 0x58, 0x49, 0x70, 0x75, 0x2b, 0x49, 0x4c, 0x6c, 0x61, 0x53, 0x2f, 0x56, 0x39, 0x6c, 0x5a, 0x4c, 0x0a, 0x75, 0x62, 0x68, 0x7a, 0x45, 0x46, 0x6e, 0x54, 0x49, 0x5a, 0x64, 0x2b, 0x35, 0x30, 0x78, 0x78, 0x2b, 0x37, 0x4c, 0x53, 0x59, 0x4b, 0x30, 0x35, 0x71, 0x41, 0x76, 0x71, 0x46, 0x79, 0x46, 0x57, 0x68, 0x66, 0x46, 0x51, 0x44, 0x6c, 0x6e, 0x72, 0x7a, 0x75, 0x42, 0x5a, 0x36, 0x62, 0x72, 0x4a, 0x46, 0x65, 0x2b, 0x47, 0x6e, 0x59, 0x2b, 0x45, 0x67, 0x50, 0x62, 0x6b, 0x36, 0x5a, 0x47, 0x51, 0x33, 0x42, 0x65, 0x62, 0x59, 0x68, 0x74, 0x46, 0x38, 0x47, 0x61, 0x56, 0x0a, 0x30, 0x6e, 0x78, 0x76, 0x77, 0x75, 0x6f, 0x37, 0x37, 0x78, 0x2f, 0x50, 0x79, 0x39, 0x61, 0x75, 0x4a, 0x2f, 0x47, 0x70, 0x73, 0x4d, 0x69, 0x75, 0x2f, 0x58, 0x31, 0x2b, 0x6d, 0x76, 0x6f, 0x69, 0x42, 0x4f, 0x76, 0x2f, 0x32, 0x58, 0x2f, 0x71, 0x6b, 0x53, 0x73, 0x69, 0x73, 0x52, 0x63, 0x4f, 0x6a, 0x2f, 0x4b, 0x4b, 0x4e, 0x46, 0x74, 0x59, 0x32, 0x50, 0x77, 0x42, 0x79, 0x56, 0x53, 0x35, 0x75, 0x43, 0x62, 0x4d, 0x69, 0x6f, 0x67, 0x7a, 0x69, 0x55, 0x77, 0x74, 0x0a, 0x68, 0x44, 0x79, 0x43, 0x33, 0x2b, 0x36, 0x57, 0x56, 0x77, 0x57, 0x36, 0x4c, 0x4c, 0x76, 0x33, 0x78, 0x4c, 0x66, 0x48, 0x54, 0x6a, 0x75, 0x43, 0x76, 0x6a, 0x48, 0x49, 0x49, 0x6e, 0x4e, 0x7a, 0x6b, 0x74, 0x48, 0x43, 0x67, 0x4b, 0x51, 0x35, 0x4f, 0x52, 0x41, 0x7a, 0x49, 0x34, 0x4a, 0x4d, 0x50, 0x4a, 0x2b, 0x47, 0x73, 0x6c, 0x57, 0x59, 0x48, 0x62, 0x34, 0x70, 0x68, 0x6f, 0x77, 0x69, 0x6d, 0x35, 0x37, 0x69, 0x61, 0x7a, 0x74, 0x58, 0x4f, 0x6f, 0x4a, 0x77, 0x0a, 0x54, 0x64, 0x77, 0x4a, 0x78, 0x34, 0x6e, 0x4c, 0x43, 0x67, 0x64, 0x4e, 0x62, 0x4f, 0x68, 0x64, 0x6a, 0x73, 0x6e, 0x76, 0x7a, 0x71, 0x76, 0x48, 0x75, 0x37, 0x55, 0x72, 0x54, 0x6b, 0x58, 0x57, 0x53, 0x74, 0x41, 0x6d, 0x7a, 0x4f, 0x56, 0x79, 0x79, 0x67, 0x68, 0x71, 0x70, 0x5a, 0x58, 0x6a, 0x46, 0x61, 0x48, 0x33, 0x70, 0x4f, 0x33, 0x4a, 0x4c, 0x46, 0x2b, 0x6c, 0x2b, 0x2f, 0x2b, 0x73, 0x4b, 0x41, 0x49, 0x75, 0x76, 0x74, 0x64, 0x37, 0x75, 0x2b, 0x4e, 0x78, 0x0a, 0x65, 0x35, 0x41, 0x57, 0x30, 0x77, 0x64, 0x65, 0x52, 0x6c, 0x4e, 0x38, 0x4e, 0x77, 0x64, 0x43, 0x6a, 0x4e, 0x50, 0x45, 0x6c, 0x70, 0x7a, 0x56, 0x6d, 0x62, 0x55, 0x71, 0x34, 0x4a, 0x55, 0x61, 0x67, 0x45, 0x69, 0x75, 0x54, 0x44, 0x6b, 0x48, 0x7a, 0x73, 0x78, 0x48, 0x70, 0x46, 0x4b, 0x56, 0x4b, 0x37, 0x71, 0x34, 0x2b, 0x36, 0x33, 0x53, 0x4d, 0x31, 0x4e, 0x39, 0x35, 0x52, 0x31, 0x4e, 0x62, 0x64, 0x57, 0x68, 0x73, 0x63, 0x64, 0x43, 0x62, 0x2b, 0x5a, 0x41, 0x0a, 0x4a, 0x7a, 0x56, 0x63, 0x6f, 0x79, 0x69, 0x33, 0x42, 0x34, 0x33, 0x6e, 0x6a, 0x54, 0x4f, 0x51, 0x35, 0x79, 0x4f, 0x66, 0x2b, 0x31, 0x43, 0x63, 0x65, 0x57, 0x78, 0x47, 0x31, 0x62, 0x51, 0x56, 0x73, 0x35, 0x5a, 0x75, 0x66, 0x70, 0x73, 0x4d, 0x6c, 0x6a, 0x71, 0x34, 0x55, 0x69, 0x30, 0x2f, 0x31, 0x6c, 0x76, 0x68, 0x2b, 0x77, 0x6a, 0x43, 0x68, 0x50, 0x34, 0x6b, 0x71, 0x4b, 0x4f, 0x4a, 0x32, 0x71, 0x78, 0x71, 0x34, 0x52, 0x67, 0x71, 0x73, 0x61, 0x68, 0x44, 0x0a, 0x59, 0x56, 0x76, 0x54, 0x48, 0x39, 0x77, 0x37, 0x6a, 0x58, 0x62, 0x79, 0x4c, 0x65, 0x69, 0x4e, 0x64, 0x64, 0x38, 0x58, 0x4d, 0x32, 0x77, 0x39, 0x55, 0x2f, 0x74, 0x37, 0x79, 0x30, 0x46, 0x66, 0x2f, 0x39, 0x79, 0x69, 0x30, 0x47, 0x45, 0x34, 0x34, 0x5a, 0x61, 0x34, 0x72, 0x46, 0x32, 0x4c, 0x4e, 0x39, 0x64, 0x31, 0x31, 0x54, 0x50, 0x41, 0x6d, 0x52, 0x47, 0x75, 0x6e, 0x55, 0x48, 0x42, 0x63, 0x6e, 0x57, 0x45, 0x76, 0x67, 0x4a, 0x42, 0x51, 0x6c, 0x39, 0x6e, 0x0a, 0x4a, 0x45, 0x69, 0x55, 0x30, 0x5a, 0x73, 0x6e, 0x76, 0x67, 0x63, 0x2f, 0x75, 0x62, 0x68, 0x50, 0x67, 0x58, 0x52, 0x52, 0x34, 0x58, 0x71, 0x33, 0x37, 0x5a, 0x30, 0x6a, 0x34, 0x72, 0x37, 0x67, 0x31, 0x53, 0x67, 0x45, 0x45, 0x7a, 0x77, 0x78, 0x41, 0x35, 0x37, 0x64, 0x65, 0x6d, 0x79, 0x50, 0x78, 0x67, 0x63, 0x59, 0x78, 0x6e, 0x2f, 0x65, 0x52, 0x34, 0x34, 0x2f, 0x4b, 0x4a, 0x34, 0x45, 0x42, 0x73, 0x2b, 0x6c, 0x56, 0x44, 0x52, 0x33, 0x76, 0x65, 0x79, 0x4a, 0x0a, 0x6d, 0x2b, 0x6b, 0x58, 0x51, 0x39, 0x39, 0x62, 0x32, 0x31, 0x2f, 0x2b, 0x6a, 0x68, 0x35, 0x58, 0x6f, 0x73, 0x31, 0x41, 0x6e, 0x58, 0x35, 0x69, 0x49, 0x74, 0x72, 0x65, 0x47, 0x43, 0x63, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x43, 0x20, 0x52, 0x41, 0x49, 0x5a, 0x20, 0x46, 0x4e, 0x4d, 0x54, 0x2d, 0x52, 0x43, 0x4d, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x67, 0x7a, 0x43, 0x43, 0x41, 0x32, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x50, 0x58, 0x5a, 0x4f, 0x4e, 0x4d, 0x47, 0x63, 0x32, 0x79, 0x41, 0x59, 0x64, 0x47, 0x73, 0x64, 0x55, 0x68, 0x47, 0x6b, 0x48, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x4d, 0x44, 0x73, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x0a, 0x41, 0x6b, 0x56, 0x54, 0x4d, 0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x68, 0x47, 0x54, 0x6b, 0x31, 0x55, 0x4c, 0x56, 0x4a, 0x44, 0x54, 0x54, 0x45, 0x5a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x77, 0x77, 0x51, 0x51, 0x55, 0x4d, 0x67, 0x55, 0x6b, 0x46, 0x4a, 0x57, 0x69, 0x42, 0x47, 0x54, 0x6b, 0x31, 0x55, 0x4c, 0x56, 0x4a, 0x44, 0x54, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x77, 0x4f, 0x44, 0x45, 0x77, 0x0a, 0x4d, 0x6a, 0x6b, 0x78, 0x4e, 0x54, 0x55, 0x35, 0x4e, 0x54, 0x5a, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4d, 0x44, 0x41, 0x78, 0x4d, 0x44, 0x45, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x4d, 0x44, 0x73, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x56, 0x54, 0x4d, 0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x68, 0x47, 0x54, 0x6b, 0x31, 0x55, 0x4c, 0x56, 0x4a, 0x44, 0x0a, 0x54, 0x54, 0x45, 0x5a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x77, 0x77, 0x51, 0x51, 0x55, 0x4d, 0x67, 0x55, 0x6b, 0x46, 0x4a, 0x57, 0x69, 0x42, 0x47, 0x54, 0x6b, 0x31, 0x55, 0x4c, 0x56, 0x4a, 0x44, 0x54, 0x54, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x0a, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4c, 0x70, 0x78, 0x67, 0x48, 0x70, 0x4d, 0x68, 0x6d, 0x35, 0x2f, 0x79, 0x42, 0x4e, 0x74, 0x77, 0x4d, 0x5a, 0x39, 0x48, 0x41, 0x43, 0x58, 0x6a, 0x79, 0x77, 0x4d, 0x49, 0x37, 0x73, 0x51, 0x6d, 0x6b, 0x43, 0x70, 0x47, 0x72, 0x65, 0x48, 0x69, 0x50, 0x69, 0x62, 0x56, 0x6d, 0x72, 0x37, 0x35, 0x6e, 0x75, 0x4f, 0x69, 0x35, 0x4b, 0x4f, 0x70, 0x79, 0x56, 0x64, 0x57, 0x52, 0x48, 0x62, 0x4e, 0x69, 0x36, 0x33, 0x55, 0x52, 0x63, 0x66, 0x0a, 0x71, 0x51, 0x67, 0x66, 0x42, 0x42, 0x63, 0x6b, 0x57, 0x4b, 0x6f, 0x33, 0x53, 0x68, 0x6a, 0x66, 0x35, 0x54, 0x6e, 0x55, 0x56, 0x2f, 0x33, 0x58, 0x77, 0x53, 0x79, 0x52, 0x41, 0x5a, 0x48, 0x69, 0x49, 0x74, 0x51, 0x44, 0x77, 0x46, 0x6a, 0x38, 0x64, 0x30, 0x66, 0x73, 0x6a, 0x7a, 0x35, 0x30, 0x51, 0x37, 0x71, 0x73, 0x4e, 0x49, 0x31, 0x4e, 0x4f, 0x48, 0x5a, 0x6e, 0x6a, 0x72, 0x44, 0x49, 0x62, 0x7a, 0x41, 0x7a, 0x57, 0x48, 0x46, 0x63, 0x74, 0x50, 0x56, 0x72, 0x0a, 0x62, 0x74, 0x51, 0x42, 0x55, 0x4c, 0x67, 0x54, 0x66, 0x6d, 0x78, 0x4b, 0x6f, 0x30, 0x6e, 0x52, 0x49, 0x42, 0x6e, 0x75, 0x76, 0x4d, 0x41, 0x70, 0x47, 0x47, 0x57, 0x6e, 0x33, 0x76, 0x37, 0x76, 0x33, 0x51, 0x71, 0x51, 0x49, 0x65, 0x63, 0x61, 0x5a, 0x35, 0x4a, 0x43, 0x45, 0x4a, 0x68, 0x66, 0x54, 0x7a, 0x43, 0x38, 0x50, 0x68, 0x78, 0x46, 0x74, 0x42, 0x44, 0x58, 0x61, 0x45, 0x41, 0x55, 0x77, 0x45, 0x44, 0x36, 0x35, 0x33, 0x63, 0x58, 0x65, 0x75, 0x59, 0x4c, 0x0a, 0x6a, 0x32, 0x56, 0x62, 0x50, 0x4e, 0x6d, 0x61, 0x55, 0x74, 0x75, 0x31, 0x76, 0x5a, 0x35, 0x47, 0x7a, 0x7a, 0x33, 0x72, 0x6b, 0x51, 0x55, 0x43, 0x77, 0x4a, 0x61, 0x79, 0x64, 0x6b, 0x78, 0x4e, 0x45, 0x4a, 0x59, 0x37, 0x6b, 0x76, 0x71, 0x63, 0x66, 0x77, 0x2b, 0x5a, 0x33, 0x37, 0x34, 0x6a, 0x4e, 0x55, 0x55, 0x65, 0x41, 0x6c, 0x7a, 0x2b, 0x74, 0x61, 0x69, 0x62, 0x6d, 0x53, 0x58, 0x61, 0x58, 0x76, 0x4d, 0x69, 0x77, 0x7a, 0x6e, 0x31, 0x35, 0x43, 0x6f, 0x75, 0x0a, 0x30, 0x38, 0x59, 0x66, 0x78, 0x47, 0x79, 0x71, 0x78, 0x52, 0x78, 0x71, 0x41, 0x51, 0x56, 0x4b, 0x4c, 0x39, 0x4c, 0x46, 0x77, 0x61, 0x67, 0x30, 0x4a, 0x6c, 0x31, 0x6d, 0x70, 0x64, 0x49, 0x43, 0x49, 0x66, 0x6b, 0x59, 0x74, 0x77, 0x62, 0x31, 0x54, 0x70, 0x6c, 0x76, 0x71, 0x4b, 0x74, 0x4d, 0x55, 0x65, 0x6a, 0x50, 0x55, 0x42, 0x6a, 0x46, 0x64, 0x38, 0x67, 0x35, 0x43, 0x53, 0x78, 0x4a, 0x6b, 0x6a, 0x4b, 0x5a, 0x71, 0x4c, 0x73, 0x58, 0x46, 0x33, 0x6d, 0x77, 0x0a, 0x57, 0x73, 0x58, 0x6d, 0x6f, 0x38, 0x52, 0x5a, 0x5a, 0x55, 0x63, 0x31, 0x67, 0x31, 0x36, 0x70, 0x36, 0x44, 0x55, 0x4c, 0x6d, 0x62, 0x76, 0x6b, 0x7a, 0x53, 0x44, 0x47, 0x6d, 0x30, 0x6f, 0x47, 0x4f, 0x62, 0x56, 0x6f, 0x2f, 0x43, 0x4b, 0x36, 0x37, 0x6c, 0x57, 0x4d, 0x4b, 0x30, 0x37, 0x71, 0x38, 0x37, 0x48, 0x6a, 0x2f, 0x4c, 0x61, 0x5a, 0x6d, 0x74, 0x56, 0x43, 0x2b, 0x6e, 0x46, 0x4e, 0x43, 0x4d, 0x2b, 0x48, 0x48, 0x6d, 0x70, 0x78, 0x66, 0x66, 0x6e, 0x54, 0x0a, 0x74, 0x4f, 0x6d, 0x6c, 0x63, 0x59, 0x46, 0x37, 0x77, 0x6b, 0x35, 0x48, 0x6c, 0x71, 0x58, 0x32, 0x64, 0x6f, 0x57, 0x6a, 0x4b, 0x49, 0x2f, 0x70, 0x67, 0x47, 0x36, 0x42, 0x55, 0x36, 0x56, 0x74, 0x58, 0x37, 0x68, 0x49, 0x2b, 0x63, 0x4c, 0x35, 0x4e, 0x71, 0x59, 0x75, 0x53, 0x66, 0x2b, 0x34, 0x6c, 0x73, 0x4b, 0x4d, 0x42, 0x37, 0x4f, 0x62, 0x69, 0x46, 0x6a, 0x38, 0x36, 0x78, 0x73, 0x63, 0x33, 0x69, 0x31, 0x77, 0x34, 0x70, 0x65, 0x53, 0x4d, 0x4b, 0x47, 0x4a, 0x0a, 0x34, 0x37, 0x78, 0x56, 0x71, 0x43, 0x66, 0x57, 0x53, 0x2b, 0x32, 0x51, 0x72, 0x59, 0x76, 0x36, 0x59, 0x79, 0x56, 0x5a, 0x4c, 0x61, 0x67, 0x31, 0x33, 0x63, 0x71, 0x58, 0x4d, 0x37, 0x7a, 0x6c, 0x7a, 0x63, 0x65, 0x64, 0x30, 0x65, 0x7a, 0x76, 0x58, 0x67, 0x35, 0x4b, 0x6b, 0x41, 0x59, 0x6d, 0x59, 0x36, 0x32, 0x35, 0x32, 0x54, 0x55, 0x74, 0x42, 0x37, 0x70, 0x32, 0x5a, 0x53, 0x79, 0x73, 0x56, 0x34, 0x39, 0x39, 0x39, 0x41, 0x65, 0x55, 0x31, 0x34, 0x45, 0x43, 0x0a, 0x6c, 0x6c, 0x32, 0x6a, 0x42, 0x30, 0x6e, 0x56, 0x65, 0x74, 0x42, 0x58, 0x2b, 0x52, 0x76, 0x6e, 0x55, 0x30, 0x5a, 0x31, 0x71, 0x72, 0x42, 0x35, 0x51, 0x73, 0x74, 0x6f, 0x63, 0x51, 0x6a, 0x70, 0x59, 0x4c, 0x30, 0x35, 0x61, 0x63, 0x37, 0x30, 0x72, 0x38, 0x4e, 0x57, 0x51, 0x4d, 0x65, 0x74, 0x55, 0x71, 0x49, 0x4a, 0x35, 0x47, 0x2b, 0x47, 0x52, 0x34, 0x6f, 0x66, 0x36, 0x79, 0x67, 0x6e, 0x58, 0x59, 0x4d, 0x67, 0x72, 0x77, 0x54, 0x4a, 0x62, 0x46, 0x61, 0x61, 0x0a, 0x69, 0x30, 0x62, 0x31, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x67, 0x59, 0x4d, 0x77, 0x67, 0x59, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x0a, 0x46, 0x50, 0x64, 0x39, 0x78, 0x66, 0x33, 0x45, 0x36, 0x4a, 0x6f, 0x62, 0x64, 0x32, 0x53, 0x6e, 0x39, 0x52, 0x32, 0x67, 0x7a, 0x4c, 0x2b, 0x48, 0x59, 0x4a, 0x70, 0x74, 0x4d, 0x44, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x41, 0x51, 0x33, 0x4d, 0x44, 0x55, 0x77, 0x4d, 0x77, 0x59, 0x45, 0x56, 0x52, 0x30, 0x67, 0x41, 0x44, 0x41, 0x72, 0x4d, 0x43, 0x6b, 0x47, 0x43, 0x43, 0x73, 0x47, 0x41, 0x51, 0x55, 0x46, 0x42, 0x77, 0x49, 0x42, 0x46, 0x68, 0x31, 0x6f, 0x0a, 0x64, 0x48, 0x52, 0x77, 0x4f, 0x69, 0x38, 0x76, 0x64, 0x33, 0x64, 0x33, 0x4c, 0x6d, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x75, 0x5a, 0x6d, 0x35, 0x74, 0x64, 0x43, 0x35, 0x6c, 0x63, 0x79, 0x39, 0x6b, 0x63, 0x47, 0x4e, 0x7a, 0x4c, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x42, 0x35, 0x42, 0x4b, 0x33, 0x2f, 0x4d, 0x6a, 0x54, 0x76, 0x44, 0x44, 0x0a, 0x6e, 0x46, 0x46, 0x6c, 0x6d, 0x35, 0x77, 0x69, 0x6f, 0x6f, 0x6f, 0x4d, 0x68, 0x66, 0x4e, 0x7a, 0x4b, 0x57, 0x74, 0x4e, 0x2f, 0x67, 0x48, 0x69, 0x71, 0x51, 0x78, 0x6a, 0x41, 0x62, 0x38, 0x45, 0x5a, 0x36, 0x57, 0x64, 0x6d, 0x46, 0x2f, 0x39, 0x41, 0x52, 0x50, 0x36, 0x37, 0x4a, 0x70, 0x69, 0x36, 0x59, 0x62, 0x2b, 0x74, 0x6d, 0x4c, 0x53, 0x62, 0x6b, 0x79, 0x55, 0x2b, 0x38, 0x42, 0x31, 0x52, 0x58, 0x78, 0x6c, 0x44, 0x50, 0x69, 0x79, 0x4e, 0x38, 0x2b, 0x73, 0x0a, 0x44, 0x38, 0x2b, 0x4e, 0x62, 0x2f, 0x6b, 0x5a, 0x39, 0x34, 0x2f, 0x73, 0x48, 0x76, 0x4a, 0x77, 0x6e, 0x76, 0x44, 0x4b, 0x75, 0x4f, 0x2b, 0x33, 0x2f, 0x33, 0x59, 0x33, 0x64, 0x6c, 0x76, 0x32, 0x62, 0x6f, 0x6a, 0x7a, 0x72, 0x32, 0x49, 0x79, 0x49, 0x70, 0x4d, 0x4e, 0x4f, 0x6d, 0x71, 0x4f, 0x46, 0x47, 0x59, 0x4d, 0x4c, 0x56, 0x4e, 0x30, 0x56, 0x32, 0x55, 0x65, 0x31, 0x62, 0x4c, 0x64, 0x49, 0x34, 0x45, 0x37, 0x70, 0x57, 0x59, 0x6a, 0x4a, 0x32, 0x63, 0x4a, 0x0a, 0x6a, 0x2b, 0x46, 0x33, 0x71, 0x6b, 0x50, 0x4e, 0x5a, 0x56, 0x45, 0x49, 0x37, 0x56, 0x46, 0x59, 0x2f, 0x75, 0x59, 0x35, 0x2b, 0x63, 0x74, 0x48, 0x68, 0x4b, 0x51, 0x56, 0x38, 0x58, 0x61, 0x37, 0x70, 0x4f, 0x36, 0x6b, 0x4f, 0x38, 0x52, 0x66, 0x37, 0x37, 0x49, 0x7a, 0x6c, 0x68, 0x45, 0x59, 0x74, 0x38, 0x6c, 0x6c, 0x76, 0x68, 0x6a, 0x68, 0x6f, 0x36, 0x54, 0x63, 0x2b, 0x68, 0x6a, 0x35, 0x30, 0x37, 0x77, 0x54, 0x6d, 0x7a, 0x6c, 0x36, 0x4e, 0x4c, 0x72, 0x54, 0x0a, 0x51, 0x66, 0x76, 0x36, 0x4d, 0x6f, 0x6f, 0x71, 0x74, 0x79, 0x75, 0x47, 0x43, 0x32, 0x6d, 0x44, 0x4f, 0x4c, 0x37, 0x4e, 0x69, 0x69, 0x34, 0x4c, 0x63, 0x4b, 0x32, 0x4e, 0x4a, 0x70, 0x4c, 0x75, 0x48, 0x76, 0x55, 0x42, 0x4b, 0x77, 0x72, 0x5a, 0x31, 0x70, 0x65, 0x62, 0x62, 0x75, 0x43, 0x6f, 0x47, 0x52, 0x77, 0x36, 0x49, 0x59, 0x73, 0x4d, 0x48, 0x6b, 0x43, 0x74, 0x41, 0x2b, 0x66, 0x64, 0x5a, 0x6e, 0x37, 0x31, 0x75, 0x53, 0x41, 0x4e, 0x41, 0x2b, 0x69, 0x57, 0x0a, 0x2b, 0x59, 0x4a, 0x46, 0x31, 0x44, 0x6e, 0x67, 0x6f, 0x41, 0x42, 0x64, 0x31, 0x35, 0x6a, 0x6d, 0x66, 0x5a, 0x35, 0x6e, 0x63, 0x38, 0x4f, 0x61, 0x4b, 0x76, 0x65, 0x72, 0x69, 0x36, 0x45, 0x36, 0x46, 0x4f, 0x38, 0x30, 0x76, 0x46, 0x49, 0x4f, 0x69, 0x5a, 0x69, 0x61, 0x42, 0x45, 0x43, 0x45, 0x48, 0x58, 0x35, 0x46, 0x61, 0x5a, 0x4e, 0x58, 0x7a, 0x75, 0x76, 0x4f, 0x2b, 0x46, 0x42, 0x38, 0x54, 0x78, 0x78, 0x75, 0x42, 0x45, 0x4f, 0x62, 0x2b, 0x64, 0x59, 0x37, 0x0a, 0x49, 0x78, 0x6a, 0x70, 0x36, 0x6f, 0x37, 0x52, 0x54, 0x55, 0x61, 0x4e, 0x38, 0x54, 0x76, 0x6b, 0x61, 0x73, 0x71, 0x36, 0x2b, 0x79, 0x4f, 0x33, 0x6d, 0x2f, 0x71, 0x5a, 0x41, 0x53, 0x6c, 0x61, 0x57, 0x46, 0x6f, 0x74, 0x34, 0x2f, 0x6e, 0x55, 0x62, 0x51, 0x34, 0x6d, 0x72, 0x63, 0x46, 0x75, 0x4e, 0x4c, 0x77, 0x79, 0x2b, 0x41, 0x77, 0x46, 0x2b, 0x6d, 0x57, 0x6a, 0x32, 0x7a, 0x73, 0x33, 0x67, 0x79, 0x4c, 0x70, 0x31, 0x74, 0x78, 0x79, 0x4d, 0x2f, 0x31, 0x64, 0x0a, 0x38, 0x69, 0x43, 0x39, 0x64, 0x6a, 0x77, 0x6a, 0x32, 0x69, 0x6a, 0x33, 0x2b, 0x52, 0x76, 0x72, 0x57, 0x57, 0x54, 0x56, 0x33, 0x46, 0x39, 0x79, 0x66, 0x69, 0x44, 0x38, 0x7a, 0x59, 0x6d, 0x31, 0x6b, 0x47, 0x64, 0x4e, 0x59, 0x6e, 0x6f, 0x2f, 0x54, 0x71, 0x30, 0x64, 0x77, 0x7a, 0x6e, 0x2b, 0x65, 0x76, 0x51, 0x6f, 0x46, 0x74, 0x39, 0x42, 0x39, 0x6b, 0x69, 0x41, 0x42, 0x64, 0x63, 0x50, 0x55, 0x58, 0x6d, 0x73, 0x45, 0x4b, 0x76, 0x55, 0x37, 0x41, 0x4e, 0x6d, 0x0a, 0x35, 0x6d, 0x71, 0x77, 0x75, 0x6a, 0x47, 0x53, 0x51, 0x6b, 0x42, 0x71, 0x76, 0x6a, 0x72, 0x54, 0x63, 0x75, 0x46, 0x71, 0x4e, 0x31, 0x57, 0x38, 0x72, 0x42, 0x32, 0x56, 0x74, 0x32, 0x6c, 0x68, 0x38, 0x6b, 0x4f, 0x52, 0x64, 0x4f, 0x61, 0x67, 0x30, 0x77, 0x6f, 0x6b, 0x52, 0x71, 0x45, 0x49, 0x72, 0x39, 0x62, 0x61, 0x52, 0x52, 0x6d, 0x57, 0x31, 0x46, 0x4d, 0x64, 0x57, 0x34, 0x52, 0x35, 0x38, 0x4d, 0x44, 0x33, 0x52, 0x2b, 0x2b, 0x4c, 0x6a, 0x38, 0x55, 0x47, 0x0a, 0x72, 0x70, 0x31, 0x4d, 0x59, 0x70, 0x33, 0x2f, 0x52, 0x67, 0x54, 0x34, 0x30, 0x38, 0x6d, 0x32, 0x45, 0x43, 0x56, 0x41, 0x64, 0x66, 0x34, 0x57, 0x71, 0x73, 0x6c, 0x4b, 0x59, 0x49, 0x59, 0x76, 0x75, 0x75, 0x38, 0x77, 0x64, 0x2b, 0x52, 0x55, 0x34, 0x72, 0x69, 0x45, 0x6d, 0x56, 0x69, 0x41, 0x71, 0x68, 0x4f, 0x4c, 0x55, 0x54, 0x70, 0x50, 0x53, 0x50, 0x61, 0x4c, 0x74, 0x72, 0x4d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x51, 0x54, 0x43, 0x43, 0x41, 0x69, 0x6d, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x54, 0x42, 0x6d, 0x79, 0x66, 0x7a, 0x35, 0x6d, 0x2f, 0x6a, 0x41, 0x6f, 0x35, 0x34, 0x76, 0x42, 0x34, 0x69, 0x6b, 0x50, 0x6d, 0x6c, 0x6a, 0x5a, 0x62, 0x79, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x41, 0x35, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x50, 0x4d, 0x41, 0x30, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x47, 0x51, 0x57, 0x31, 0x68, 0x65, 0x6d, 0x39, 0x75, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x42, 0x42, 0x62, 0x57, 0x46, 0x36, 0x62, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x78, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x31, 0x0a, 0x4d, 0x44, 0x55, 0x79, 0x4e, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x34, 0x4d, 0x44, 0x45, 0x78, 0x4e, 0x7a, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x77, 0x4f, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x44, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x42, 0x6b, 0x46, 0x74, 0x59, 0x58, 0x70, 0x76, 0x0a, 0x62, 0x6a, 0x45, 0x5a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x51, 0x51, 0x57, 0x31, 0x68, 0x65, 0x6d, 0x39, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x54, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6f, 0x43, 0x0a, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4c, 0x4a, 0x34, 0x67, 0x48, 0x48, 0x4b, 0x65, 0x4e, 0x58, 0x6a, 0x63, 0x61, 0x39, 0x48, 0x67, 0x46, 0x42, 0x30, 0x66, 0x57, 0x37, 0x59, 0x31, 0x34, 0x68, 0x32, 0x39, 0x4a, 0x6c, 0x6f, 0x39, 0x31, 0x67, 0x68, 0x59, 0x50, 0x6c, 0x30, 0x68, 0x41, 0x45, 0x76, 0x72, 0x41, 0x49, 0x74, 0x68, 0x74, 0x4f, 0x67, 0x51, 0x33, 0x70, 0x4f, 0x73, 0x71, 0x54, 0x51, 0x4e, 0x72, 0x6f, 0x42, 0x76, 0x6f, 0x33, 0x62, 0x53, 0x4d, 0x67, 0x48, 0x0a, 0x46, 0x7a, 0x5a, 0x4d, 0x39, 0x4f, 0x36, 0x49, 0x49, 0x38, 0x63, 0x2b, 0x36, 0x7a, 0x66, 0x31, 0x74, 0x52, 0x6e, 0x34, 0x53, 0x57, 0x69, 0x77, 0x33, 0x74, 0x65, 0x35, 0x64, 0x6a, 0x67, 0x64, 0x59, 0x5a, 0x36, 0x6b, 0x2f, 0x6f, 0x49, 0x32, 0x70, 0x65, 0x56, 0x4b, 0x56, 0x75, 0x52, 0x46, 0x34, 0x66, 0x6e, 0x39, 0x74, 0x42, 0x62, 0x36, 0x64, 0x4e, 0x71, 0x63, 0x6d, 0x7a, 0x55, 0x35, 0x4c, 0x2f, 0x71, 0x77, 0x49, 0x46, 0x41, 0x47, 0x62, 0x48, 0x72, 0x51, 0x0a, 0x67, 0x4c, 0x4b, 0x6d, 0x2b, 0x61, 0x2f, 0x73, 0x52, 0x78, 0x6d, 0x50, 0x55, 0x44, 0x67, 0x48, 0x33, 0x4b, 0x4b, 0x48, 0x4f, 0x56, 0x6a, 0x34, 0x75, 0x74, 0x57, 0x70, 0x2b, 0x55, 0x68, 0x6e, 0x4d, 0x4a, 0x62, 0x75, 0x6c, 0x48, 0x68, 0x65, 0x62, 0x34, 0x6d, 0x6a, 0x55, 0x63, 0x41, 0x77, 0x68, 0x6d, 0x61, 0x68, 0x52, 0x57, 0x61, 0x36, 0x56, 0x4f, 0x75, 0x6a, 0x77, 0x35, 0x48, 0x35, 0x53, 0x4e, 0x7a, 0x2f, 0x30, 0x65, 0x67, 0x77, 0x4c, 0x58, 0x30, 0x74, 0x0a, 0x64, 0x48, 0x41, 0x31, 0x31, 0x34, 0x67, 0x6b, 0x39, 0x35, 0x37, 0x45, 0x57, 0x57, 0x36, 0x37, 0x63, 0x34, 0x63, 0x58, 0x38, 0x6a, 0x4a, 0x47, 0x4b, 0x4c, 0x68, 0x44, 0x2b, 0x72, 0x63, 0x64, 0x71, 0x73, 0x71, 0x30, 0x38, 0x70, 0x38, 0x6b, 0x44, 0x69, 0x31, 0x4c, 0x39, 0x33, 0x46, 0x63, 0x58, 0x6d, 0x6e, 0x2f, 0x36, 0x70, 0x55, 0x43, 0x79, 0x7a, 0x69, 0x4b, 0x72, 0x6c, 0x41, 0x34, 0x62, 0x39, 0x76, 0x37, 0x4c, 0x57, 0x49, 0x62, 0x78, 0x63, 0x63, 0x65, 0x0a, 0x56, 0x4f, 0x46, 0x33, 0x34, 0x47, 0x66, 0x49, 0x44, 0x35, 0x79, 0x48, 0x49, 0x39, 0x59, 0x2f, 0x51, 0x43, 0x42, 0x2f, 0x49, 0x49, 0x44, 0x45, 0x67, 0x45, 0x77, 0x2b, 0x4f, 0x79, 0x51, 0x6d, 0x6a, 0x67, 0x53, 0x75, 0x62, 0x4a, 0x72, 0x49, 0x71, 0x67, 0x30, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x0a, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x49, 0x51, 0x59, 0x7a, 0x49, 0x55, 0x30, 0x37, 0x4c, 0x77, 0x4d, 0x6c, 0x4a, 0x51, 0x75, 0x43, 0x46, 0x6d, 0x63, 0x78, 0x37, 0x49, 0x51, 0x54, 0x67, 0x6f, 0x49, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x0a, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x43, 0x59, 0x38, 0x6a, 0x64, 0x61, 0x51, 0x5a, 0x43, 0x68, 0x47, 0x73, 0x56, 0x32, 0x55, 0x53, 0x67, 0x67, 0x4e, 0x69, 0x4d, 0x4f, 0x72, 0x75, 0x59, 0x6f, 0x75, 0x36, 0x72, 0x34, 0x6c, 0x4b, 0x35, 0x49, 0x70, 0x44, 0x42, 0x2f, 0x47, 0x2f, 0x77, 0x6b, 0x6a, 0x55, 0x75, 0x30, 0x79, 0x4b, 0x47, 0x58, 0x39, 0x72, 0x62, 0x78, 0x65, 0x6e, 0x44, 0x49, 0x55, 0x35, 0x50, 0x4d, 0x0a, 0x43, 0x43, 0x6a, 0x6a, 0x6d, 0x43, 0x58, 0x50, 0x49, 0x36, 0x54, 0x35, 0x33, 0x69, 0x48, 0x54, 0x66, 0x49, 0x55, 0x4a, 0x72, 0x55, 0x36, 0x61, 0x64, 0x54, 0x72, 0x43, 0x43, 0x32, 0x71, 0x4a, 0x65, 0x48, 0x5a, 0x45, 0x52, 0x78, 0x68, 0x6c, 0x62, 0x49, 0x31, 0x42, 0x6a, 0x6a, 0x74, 0x2f, 0x6d, 0x73, 0x76, 0x30, 0x74, 0x61, 0x64, 0x51, 0x31, 0x77, 0x55, 0x73, 0x4e, 0x2b, 0x67, 0x44, 0x53, 0x36, 0x33, 0x70, 0x59, 0x61, 0x41, 0x43, 0x62, 0x76, 0x58, 0x79, 0x0a, 0x38, 0x4d, 0x57, 0x79, 0x37, 0x56, 0x75, 0x33, 0x33, 0x50, 0x71, 0x55, 0x58, 0x48, 0x65, 0x65, 0x45, 0x36, 0x56, 0x2f, 0x55, 0x71, 0x32, 0x56, 0x38, 0x76, 0x69, 0x54, 0x4f, 0x39, 0x36, 0x4c, 0x58, 0x46, 0x76, 0x4b, 0x57, 0x6c, 0x4a, 0x62, 0x59, 0x4b, 0x38, 0x55, 0x39, 0x30, 0x76, 0x76, 0x6f, 0x2f, 0x75, 0x66, 0x51, 0x4a, 0x56, 0x74, 0x4d, 0x56, 0x54, 0x38, 0x51, 0x74, 0x50, 0x48, 0x52, 0x68, 0x38, 0x6a, 0x72, 0x64, 0x6b, 0x50, 0x53, 0x48, 0x43, 0x61, 0x0a, 0x32, 0x58, 0x56, 0x34, 0x63, 0x64, 0x46, 0x79, 0x51, 0x7a, 0x52, 0x31, 0x62, 0x6c, 0x64, 0x5a, 0x77, 0x67, 0x4a, 0x63, 0x4a, 0x6d, 0x41, 0x70, 0x7a, 0x79, 0x4d, 0x5a, 0x46, 0x6f, 0x36, 0x49, 0x51, 0x36, 0x58, 0x55, 0x35, 0x4d, 0x73, 0x49, 0x2b, 0x79, 0x4d, 0x52, 0x51, 0x2b, 0x68, 0x44, 0x4b, 0x58, 0x4a, 0x69, 0x6f, 0x61, 0x6c, 0x64, 0x58, 0x67, 0x6a, 0x55, 0x6b, 0x4b, 0x36, 0x34, 0x32, 0x4d, 0x34, 0x55, 0x77, 0x74, 0x42, 0x56, 0x38, 0x6f, 0x62, 0x32, 0x0a, 0x78, 0x4a, 0x4e, 0x44, 0x64, 0x32, 0x5a, 0x68, 0x77, 0x4c, 0x6e, 0x6f, 0x51, 0x64, 0x65, 0x58, 0x65, 0x47, 0x41, 0x44, 0x62, 0x6b, 0x70, 0x79, 0x72, 0x71, 0x58, 0x52, 0x66, 0x62, 0x6f, 0x51, 0x6e, 0x6f, 0x5a, 0x73, 0x47, 0x34, 0x71, 0x35, 0x57, 0x54, 0x50, 0x34, 0x36, 0x38, 0x53, 0x51, 0x76, 0x76, 0x47, 0x35, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x51, 0x54, 0x43, 0x43, 0x41, 0x79, 0x6d, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x54, 0x42, 0x6d, 0x79, 0x66, 0x30, 0x70, 0x59, 0x31, 0x68, 0x70, 0x38, 0x4b, 0x44, 0x2b, 0x57, 0x47, 0x65, 0x50, 0x68, 0x62, 0x4a, 0x72, 0x75, 0x4b, 0x4e, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x44, 0x41, 0x35, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x50, 0x4d, 0x41, 0x30, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x47, 0x51, 0x57, 0x31, 0x68, 0x65, 0x6d, 0x39, 0x75, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x42, 0x42, 0x62, 0x57, 0x46, 0x36, 0x62, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x79, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x31, 0x0a, 0x4d, 0x44, 0x55, 0x79, 0x4e, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x77, 0x4d, 0x44, 0x55, 0x79, 0x4e, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x77, 0x4f, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x44, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x42, 0x6b, 0x46, 0x74, 0x59, 0x58, 0x70, 0x76, 0x0a, 0x62, 0x6a, 0x45, 0x5a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x51, 0x51, 0x57, 0x31, 0x68, 0x65, 0x6d, 0x39, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x6a, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x0a, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4b, 0x32, 0x57, 0x6e, 0x79, 0x32, 0x63, 0x53, 0x6b, 0x78, 0x4b, 0x67, 0x58, 0x6c, 0x52, 0x6d, 0x65, 0x79, 0x4b, 0x79, 0x32, 0x74, 0x67, 0x55, 0x52, 0x4f, 0x38, 0x54, 0x57, 0x30, 0x47, 0x2f, 0x4c, 0x41, 0x49, 0x6a, 0x64, 0x30, 0x5a, 0x45, 0x47, 0x72, 0x48, 0x4a, 0x67, 0x77, 0x31, 0x32, 0x4d, 0x42, 0x76, 0x49, 0x49, 0x54, 0x70, 0x6c, 0x4c, 0x47, 0x62, 0x68, 0x51, 0x50, 0x44, 0x57, 0x39, 0x74, 0x4b, 0x36, 0x4d, 0x6a, 0x34, 0x0a, 0x6b, 0x48, 0x62, 0x5a, 0x57, 0x30, 0x2f, 0x6a, 0x54, 0x4f, 0x67, 0x47, 0x4e, 0x6b, 0x33, 0x4d, 0x6d, 0x71, 0x77, 0x39, 0x44, 0x4a, 0x41, 0x72, 0x6b, 0x74, 0x51, 0x47, 0x47, 0x57, 0x43, 0x73, 0x4e, 0x30, 0x52, 0x35, 0x68, 0x59, 0x47, 0x43, 0x72, 0x56, 0x6f, 0x33, 0x34, 0x41, 0x33, 0x4d, 0x6e, 0x61, 0x5a, 0x4d, 0x55, 0x6e, 0x62, 0x71, 0x51, 0x35, 0x32, 0x33, 0x42, 0x4e, 0x46, 0x51, 0x39, 0x6c, 0x58, 0x67, 0x31, 0x64, 0x4b, 0x6d, 0x53, 0x59, 0x58, 0x70, 0x0a, 0x4e, 0x2b, 0x6e, 0x4b, 0x66, 0x71, 0x35, 0x63, 0x6c, 0x55, 0x31, 0x49, 0x6d, 0x6a, 0x2b, 0x75, 0x49, 0x46, 0x70, 0x74, 0x69, 0x4a, 0x58, 0x5a, 0x4e, 0x4c, 0x68, 0x53, 0x47, 0x6b, 0x4f, 0x51, 0x73, 0x4c, 0x39, 0x73, 0x42, 0x62, 0x6d, 0x32, 0x65, 0x4c, 0x66, 0x71, 0x30, 0x4f, 0x51, 0x36, 0x50, 0x42, 0x4a, 0x54, 0x59, 0x76, 0x39, 0x4b, 0x38, 0x6e, 0x75, 0x2b, 0x4e, 0x51, 0x57, 0x70, 0x45, 0x6a, 0x54, 0x6a, 0x38, 0x32, 0x52, 0x30, 0x59, 0x69, 0x77, 0x39, 0x0a, 0x41, 0x45, 0x6c, 0x61, 0x4b, 0x50, 0x34, 0x79, 0x52, 0x4c, 0x75, 0x48, 0x33, 0x57, 0x55, 0x6e, 0x41, 0x6e, 0x45, 0x37, 0x32, 0x6b, 0x72, 0x33, 0x48, 0x39, 0x72, 0x4e, 0x39, 0x79, 0x46, 0x56, 0x6b, 0x45, 0x38, 0x50, 0x37, 0x4b, 0x36, 0x43, 0x34, 0x5a, 0x39, 0x72, 0x32, 0x55, 0x58, 0x54, 0x75, 0x2f, 0x42, 0x66, 0x68, 0x2b, 0x30, 0x38, 0x4c, 0x44, 0x6d, 0x47, 0x32, 0x6a, 0x2f, 0x65, 0x37, 0x48, 0x4a, 0x56, 0x36, 0x33, 0x6d, 0x6a, 0x72, 0x64, 0x76, 0x64, 0x0a, 0x66, 0x4c, 0x43, 0x36, 0x48, 0x4d, 0x37, 0x38, 0x33, 0x6b, 0x38, 0x31, 0x64, 0x73, 0x38, 0x50, 0x2b, 0x48, 0x67, 0x66, 0x61, 0x6a, 0x5a, 0x52, 0x52, 0x69, 0x64, 0x68, 0x57, 0x2b, 0x6d, 0x65, 0x7a, 0x2f, 0x43, 0x69, 0x56, 0x58, 0x31, 0x38, 0x4a, 0x59, 0x70, 0x76, 0x4c, 0x37, 0x54, 0x46, 0x7a, 0x34, 0x51, 0x75, 0x4b, 0x2f, 0x30, 0x4e, 0x55, 0x52, 0x42, 0x73, 0x2b, 0x31, 0x38, 0x62, 0x76, 0x42, 0x74, 0x2b, 0x78, 0x61, 0x34, 0x37, 0x6d, 0x41, 0x45, 0x78, 0x0a, 0x6b, 0x76, 0x38, 0x4c, 0x56, 0x2f, 0x53, 0x61, 0x73, 0x72, 0x6c, 0x58, 0x36, 0x61, 0x76, 0x76, 0x44, 0x58, 0x62, 0x52, 0x38, 0x4f, 0x37, 0x30, 0x7a, 0x6f, 0x61, 0x6e, 0x34, 0x47, 0x37, 0x70, 0x74, 0x47, 0x6d, 0x68, 0x33, 0x32, 0x6e, 0x32, 0x4d, 0x38, 0x5a, 0x70, 0x4c, 0x70, 0x63, 0x54, 0x6e, 0x71, 0x57, 0x48, 0x73, 0x46, 0x63, 0x51, 0x67, 0x54, 0x66, 0x4a, 0x55, 0x37, 0x4f, 0x37, 0x66, 0x2f, 0x61, 0x53, 0x30, 0x5a, 0x7a, 0x51, 0x47, 0x50, 0x53, 0x53, 0x0a, 0x62, 0x74, 0x71, 0x44, 0x54, 0x36, 0x5a, 0x6a, 0x6d, 0x55, 0x79, 0x6c, 0x2b, 0x31, 0x37, 0x76, 0x49, 0x57, 0x52, 0x36, 0x49, 0x46, 0x39, 0x73, 0x5a, 0x49, 0x55, 0x56, 0x79, 0x7a, 0x66, 0x70, 0x59, 0x67, 0x77, 0x4c, 0x4b, 0x68, 0x62, 0x63, 0x41, 0x53, 0x34, 0x79, 0x32, 0x6a, 0x35, 0x4c, 0x39, 0x5a, 0x34, 0x36, 0x39, 0x68, 0x64, 0x41, 0x6c, 0x4f, 0x2b, 0x65, 0x6b, 0x51, 0x69, 0x47, 0x2b, 0x72, 0x35, 0x6a, 0x71, 0x46, 0x6f, 0x7a, 0x37, 0x4d, 0x74, 0x30, 0x0a, 0x51, 0x35, 0x58, 0x35, 0x62, 0x47, 0x6c, 0x53, 0x4e, 0x73, 0x63, 0x70, 0x62, 0x2f, 0x78, 0x56, 0x41, 0x31, 0x77, 0x66, 0x2b, 0x35, 0x2b, 0x39, 0x52, 0x2b, 0x76, 0x6e, 0x53, 0x55, 0x65, 0x56, 0x43, 0x30, 0x36, 0x4a, 0x49, 0x67, 0x6c, 0x4a, 0x34, 0x50, 0x56, 0x68, 0x48, 0x76, 0x47, 0x2f, 0x4c, 0x6f, 0x70, 0x79, 0x62, 0x6f, 0x42, 0x5a, 0x2f, 0x31, 0x63, 0x36, 0x2b, 0x58, 0x55, 0x79, 0x6f, 0x30, 0x35, 0x66, 0x37, 0x4f, 0x30, 0x6f, 0x59, 0x74, 0x6c, 0x4e, 0x0a, 0x63, 0x2f, 0x4c, 0x4d, 0x67, 0x52, 0x64, 0x67, 0x37, 0x63, 0x33, 0x72, 0x33, 0x4e, 0x75, 0x6e, 0x79, 0x73, 0x56, 0x2b, 0x41, 0x72, 0x33, 0x79, 0x56, 0x41, 0x68, 0x55, 0x2f, 0x62, 0x51, 0x74, 0x43, 0x53, 0x77, 0x58, 0x56, 0x45, 0x71, 0x59, 0x30, 0x56, 0x54, 0x68, 0x55, 0x57, 0x63, 0x49, 0x30, 0x75, 0x31, 0x75, 0x66, 0x6d, 0x38, 0x2f, 0x30, 0x69, 0x32, 0x42, 0x57, 0x53, 0x6c, 0x6d, 0x79, 0x35, 0x41, 0x35, 0x6c, 0x52, 0x45, 0x65, 0x64, 0x43, 0x66, 0x2b, 0x0a, 0x33, 0x65, 0x75, 0x76, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x77, 0x0a, 0x44, 0x50, 0x42, 0x4d, 0x4d, 0x50, 0x51, 0x46, 0x57, 0x41, 0x4a, 0x49, 0x2f, 0x54, 0x50, 0x6c, 0x55, 0x71, 0x39, 0x4c, 0x68, 0x4f, 0x4e, 0x6d, 0x55, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x71, 0x71, 0x69, 0x41, 0x6a, 0x77, 0x35, 0x34, 0x6f, 0x2b, 0x43, 0x69, 0x31, 0x4d, 0x33, 0x6d, 0x39, 0x5a, 0x68, 0x36, 0x4f, 0x2b, 0x6f, 0x41, 0x0a, 0x41, 0x37, 0x43, 0x58, 0x44, 0x70, 0x4f, 0x38, 0x57, 0x71, 0x6a, 0x32, 0x4c, 0x49, 0x78, 0x79, 0x68, 0x36, 0x6d, 0x78, 0x2f, 0x48, 0x39, 0x7a, 0x2f, 0x57, 0x4e, 0x78, 0x65, 0x4b, 0x57, 0x48, 0x57, 0x63, 0x38, 0x77, 0x34, 0x51, 0x30, 0x51, 0x73, 0x68, 0x4e, 0x61, 0x62, 0x59, 0x4c, 0x31, 0x61, 0x75, 0x61, 0x41, 0x6e, 0x36, 0x41, 0x46, 0x43, 0x32, 0x6a, 0x6b, 0x52, 0x32, 0x76, 0x48, 0x61, 0x74, 0x2b, 0x32, 0x2f, 0x58, 0x63, 0x79, 0x63, 0x75, 0x55, 0x59, 0x0a, 0x2b, 0x67, 0x6e, 0x30, 0x6f, 0x4a, 0x4d, 0x73, 0x58, 0x64, 0x4b, 0x4d, 0x64, 0x59, 0x56, 0x32, 0x5a, 0x5a, 0x41, 0x4d, 0x41, 0x33, 0x6d, 0x33, 0x4d, 0x53, 0x4e, 0x6a, 0x72, 0x58, 0x69, 0x44, 0x43, 0x59, 0x5a, 0x6f, 0x68, 0x4d, 0x72, 0x2f, 0x2b, 0x63, 0x38, 0x6d, 0x6d, 0x70, 0x4a, 0x35, 0x35, 0x38, 0x31, 0x4c, 0x78, 0x65, 0x64, 0x68, 0x70, 0x78, 0x66, 0x4c, 0x38, 0x36, 0x6b, 0x53, 0x6b, 0x35, 0x4e, 0x72, 0x70, 0x2b, 0x67, 0x76, 0x55, 0x35, 0x4c, 0x45, 0x0a, 0x59, 0x46, 0x69, 0x77, 0x7a, 0x41, 0x4a, 0x52, 0x47, 0x46, 0x75, 0x46, 0x6a, 0x57, 0x4a, 0x5a, 0x59, 0x37, 0x61, 0x74, 0x74, 0x4e, 0x36, 0x61, 0x2b, 0x79, 0x62, 0x33, 0x41, 0x43, 0x66, 0x41, 0x58, 0x56, 0x55, 0x33, 0x64, 0x4a, 0x6e, 0x4a, 0x55, 0x48, 0x2f, 0x6a, 0x57, 0x53, 0x35, 0x45, 0x34, 0x79, 0x77, 0x6c, 0x37, 0x75, 0x78, 0x4d, 0x4d, 0x6e, 0x65, 0x30, 0x6e, 0x78, 0x72, 0x70, 0x53, 0x31, 0x30, 0x67, 0x78, 0x64, 0x72, 0x39, 0x48, 0x49, 0x63, 0x57, 0x0a, 0x78, 0x6b, 0x50, 0x6f, 0x31, 0x4c, 0x73, 0x6d, 0x6d, 0x6b, 0x56, 0x77, 0x58, 0x71, 0x6b, 0x4c, 0x4e, 0x31, 0x50, 0x69, 0x52, 0x6e, 0x73, 0x6e, 0x2f, 0x65, 0x42, 0x47, 0x38, 0x6f, 0x6d, 0x33, 0x7a, 0x45, 0x4b, 0x32, 0x79, 0x79, 0x67, 0x6d, 0x62, 0x74, 0x6d, 0x6c, 0x79, 0x54, 0x72, 0x49, 0x51, 0x52, 0x4e, 0x67, 0x39, 0x31, 0x43, 0x4d, 0x46, 0x61, 0x36, 0x79, 0x62, 0x52, 0x6f, 0x56, 0x47, 0x6c, 0x64, 0x34, 0x35, 0x70, 0x49, 0x71, 0x32, 0x57, 0x57, 0x51, 0x0a, 0x67, 0x6a, 0x39, 0x73, 0x41, 0x71, 0x2b, 0x75, 0x45, 0x6a, 0x6f, 0x6e, 0x6c, 0x6a, 0x59, 0x45, 0x31, 0x78, 0x32, 0x69, 0x67, 0x47, 0x4f, 0x70, 0x6d, 0x2f, 0x48, 0x6c, 0x75, 0x72, 0x52, 0x38, 0x46, 0x4c, 0x42, 0x4f, 0x79, 0x62, 0x45, 0x66, 0x64, 0x46, 0x38, 0x34, 0x39, 0x6c, 0x48, 0x71, 0x6d, 0x2f, 0x6f, 0x73, 0x6f, 0x68, 0x48, 0x55, 0x71, 0x53, 0x30, 0x6e, 0x47, 0x6b, 0x57, 0x78, 0x72, 0x37, 0x4a, 0x4f, 0x63, 0x51, 0x33, 0x41, 0x57, 0x45, 0x62, 0x57, 0x0a, 0x61, 0x51, 0x62, 0x4c, 0x55, 0x38, 0x75, 0x7a, 0x2f, 0x6d, 0x74, 0x42, 0x7a, 0x55, 0x46, 0x2b, 0x66, 0x55, 0x77, 0x50, 0x66, 0x48, 0x4a, 0x35, 0x65, 0x6c, 0x6e, 0x4e, 0x58, 0x6b, 0x6f, 0x4f, 0x72, 0x4a, 0x75, 0x70, 0x6d, 0x48, 0x4e, 0x35, 0x66, 0x4c, 0x54, 0x30, 0x7a, 0x4c, 0x6d, 0x34, 0x42, 0x77, 0x79, 0x79, 0x64, 0x46, 0x79, 0x34, 0x78, 0x32, 0x2b, 0x49, 0x6f, 0x5a, 0x43, 0x6e, 0x39, 0x4b, 0x72, 0x35, 0x76, 0x32, 0x63, 0x36, 0x39, 0x42, 0x6f, 0x56, 0x0a, 0x59, 0x68, 0x36, 0x33, 0x6e, 0x37, 0x34, 0x39, 0x73, 0x53, 0x6d, 0x76, 0x5a, 0x36, 0x45, 0x53, 0x38, 0x6c, 0x67, 0x51, 0x47, 0x56, 0x4d, 0x44, 0x4d, 0x42, 0x75, 0x34, 0x47, 0x6f, 0x6e, 0x32, 0x6e, 0x4c, 0x32, 0x58, 0x41, 0x34, 0x36, 0x6a, 0x43, 0x66, 0x4d, 0x64, 0x69, 0x79, 0x48, 0x78, 0x74, 0x4e, 0x2f, 0x6b, 0x48, 0x4e, 0x47, 0x66, 0x5a, 0x51, 0x49, 0x47, 0x36, 0x6c, 0x7a, 0x57, 0x45, 0x37, 0x4f, 0x45, 0x37, 0x36, 0x4b, 0x6c, 0x58, 0x49, 0x78, 0x33, 0x0a, 0x4b, 0x61, 0x64, 0x6f, 0x77, 0x47, 0x75, 0x75, 0x51, 0x4e, 0x4b, 0x6f, 0x74, 0x4f, 0x72, 0x4e, 0x38, 0x49, 0x31, 0x4c, 0x4f, 0x4a, 0x77, 0x5a, 0x6d, 0x68, 0x73, 0x6f, 0x56, 0x4c, 0x69, 0x4a, 0x6b, 0x4f, 0x2f, 0x4b, 0x64, 0x59, 0x45, 0x2b, 0x48, 0x76, 0x4a, 0x6b, 0x4a, 0x4d, 0x63, 0x59, 0x72, 0x30, 0x37, 0x2f, 0x52, 0x35, 0x34, 0x48, 0x39, 0x6a, 0x56, 0x6c, 0x70, 0x4e, 0x4d, 0x4b, 0x56, 0x76, 0x2f, 0x31, 0x46, 0x32, 0x52, 0x73, 0x37, 0x36, 0x67, 0x69, 0x0a, 0x4a, 0x55, 0x6d, 0x54, 0x74, 0x74, 0x38, 0x41, 0x46, 0x39, 0x70, 0x59, 0x66, 0x6c, 0x33, 0x75, 0x78, 0x52, 0x75, 0x77, 0x30, 0x64, 0x46, 0x66, 0x49, 0x52, 0x44, 0x48, 0x2b, 0x66, 0x4f, 0x36, 0x41, 0x67, 0x6f, 0x6e, 0x42, 0x38, 0x58, 0x78, 0x31, 0x73, 0x66, 0x54, 0x34, 0x50, 0x73, 0x4a, 0x59, 0x47, 0x77, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x42, 0x74, 0x6a, 0x43, 0x43, 0x41, 0x56, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x54, 0x42, 0x6d, 0x79, 0x66, 0x31, 0x58, 0x53, 0x58, 0x4e, 0x6d, 0x59, 0x2f, 0x4f, 0x77, 0x75, 0x61, 0x32, 0x65, 0x69, 0x65, 0x64, 0x67, 0x50, 0x79, 0x53, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x6a, 0x41, 0x35, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x50, 0x4d, 0x41, 0x30, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x47, 0x51, 0x57, 0x31, 0x68, 0x65, 0x6d, 0x39, 0x75, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x42, 0x42, 0x62, 0x57, 0x46, 0x36, 0x62, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x7a, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x31, 0x4d, 0x44, 0x55, 0x79, 0x0a, 0x4e, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x77, 0x4d, 0x44, 0x55, 0x79, 0x4e, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x77, 0x4f, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x44, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x42, 0x6b, 0x46, 0x74, 0x59, 0x58, 0x70, 0x76, 0x62, 0x6a, 0x45, 0x5a, 0x0a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x51, 0x51, 0x57, 0x31, 0x68, 0x65, 0x6d, 0x39, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x7a, 0x42, 0x5a, 0x4d, 0x42, 0x4d, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x77, 0x45, 0x48, 0x41, 0x30, 0x49, 0x41, 0x42, 0x43, 0x6d, 0x58, 0x70, 0x38, 0x5a, 0x42, 0x0a, 0x66, 0x38, 0x41, 0x4e, 0x6d, 0x2b, 0x67, 0x42, 0x47, 0x31, 0x62, 0x47, 0x38, 0x6c, 0x4b, 0x6c, 0x75, 0x69, 0x32, 0x79, 0x45, 0x75, 0x6a, 0x53, 0x4c, 0x74, 0x66, 0x36, 0x79, 0x63, 0x58, 0x59, 0x71, 0x6d, 0x30, 0x66, 0x63, 0x34, 0x45, 0x37, 0x4f, 0x35, 0x68, 0x72, 0x4f, 0x58, 0x77, 0x7a, 0x70, 0x63, 0x56, 0x4f, 0x68, 0x6f, 0x36, 0x41, 0x46, 0x32, 0x68, 0x69, 0x52, 0x56, 0x64, 0x39, 0x52, 0x46, 0x67, 0x64, 0x73, 0x7a, 0x66, 0x6c, 0x5a, 0x77, 0x6a, 0x72, 0x0a, 0x5a, 0x74, 0x36, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x72, 0x74, 0x74, 0x76, 0x58, 0x42, 0x70, 0x34, 0x33, 0x0a, 0x72, 0x44, 0x43, 0x47, 0x42, 0x35, 0x46, 0x77, 0x78, 0x35, 0x7a, 0x45, 0x47, 0x62, 0x46, 0x34, 0x77, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x67, 0x4e, 0x4a, 0x41, 0x44, 0x42, 0x47, 0x41, 0x69, 0x45, 0x41, 0x34, 0x49, 0x57, 0x53, 0x6f, 0x78, 0x65, 0x33, 0x6a, 0x66, 0x6b, 0x72, 0x42, 0x71, 0x57, 0x54, 0x72, 0x42, 0x71, 0x59, 0x61, 0x47, 0x46, 0x79, 0x2b, 0x75, 0x47, 0x68, 0x30, 0x50, 0x73, 0x63, 0x0a, 0x65, 0x47, 0x43, 0x6d, 0x51, 0x35, 0x6e, 0x46, 0x75, 0x4d, 0x51, 0x43, 0x49, 0x51, 0x43, 0x63, 0x41, 0x75, 0x2f, 0x78, 0x6c, 0x4a, 0x79, 0x7a, 0x6c, 0x76, 0x6e, 0x72, 0x78, 0x69, 0x72, 0x34, 0x74, 0x69, 0x7a, 0x2b, 0x4f, 0x70, 0x41, 0x55, 0x46, 0x74, 0x65, 0x4d, 0x59, 0x79, 0x52, 0x49, 0x48, 0x4e, 0x38, 0x77, 0x66, 0x64, 0x56, 0x6f, 0x4f, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x34, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x42, 0x38, 0x6a, 0x43, 0x43, 0x41, 0x58, 0x69, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x54, 0x42, 0x6d, 0x79, 0x66, 0x31, 0x38, 0x47, 0x37, 0x45, 0x45, 0x77, 0x70, 0x51, 0x2b, 0x56, 0x78, 0x65, 0x33, 0x73, 0x73, 0x79, 0x42, 0x72, 0x42, 0x44, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x41, 0x35, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x50, 0x4d, 0x41, 0x30, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x47, 0x51, 0x57, 0x31, 0x68, 0x65, 0x6d, 0x39, 0x75, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x42, 0x42, 0x62, 0x57, 0x46, 0x36, 0x62, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x30, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x31, 0x4d, 0x44, 0x55, 0x79, 0x0a, 0x4e, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x77, 0x4d, 0x44, 0x55, 0x79, 0x4e, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x77, 0x4f, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x44, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x42, 0x6b, 0x46, 0x74, 0x59, 0x58, 0x70, 0x76, 0x62, 0x6a, 0x45, 0x5a, 0x0a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x51, 0x51, 0x57, 0x31, 0x68, 0x65, 0x6d, 0x39, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4e, 0x44, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x4e, 0x4b, 0x72, 0x69, 0x6a, 0x64, 0x50, 0x6f, 0x31, 0x4d, 0x4e, 0x0a, 0x2f, 0x73, 0x47, 0x4b, 0x65, 0x30, 0x75, 0x6f, 0x65, 0x30, 0x5a, 0x4c, 0x59, 0x37, 0x42, 0x69, 0x39, 0x69, 0x30, 0x62, 0x32, 0x77, 0x68, 0x78, 0x49, 0x64, 0x49, 0x41, 0x36, 0x47, 0x4f, 0x39, 0x6d, 0x69, 0x66, 0x37, 0x38, 0x44, 0x6c, 0x75, 0x58, 0x65, 0x6f, 0x39, 0x70, 0x63, 0x6d, 0x42, 0x71, 0x71, 0x4e, 0x62, 0x49, 0x4a, 0x68, 0x46, 0x58, 0x52, 0x62, 0x62, 0x2f, 0x65, 0x67, 0x51, 0x62, 0x65, 0x4f, 0x63, 0x34, 0x4f, 0x4f, 0x39, 0x58, 0x34, 0x52, 0x69, 0x0a, 0x38, 0x33, 0x42, 0x6b, 0x4d, 0x36, 0x44, 0x4c, 0x4a, 0x43, 0x39, 0x77, 0x75, 0x6f, 0x69, 0x68, 0x4b, 0x71, 0x42, 0x31, 0x2b, 0x49, 0x47, 0x75, 0x59, 0x67, 0x62, 0x45, 0x67, 0x64, 0x73, 0x35, 0x62, 0x69, 0x6d, 0x77, 0x48, 0x76, 0x6f, 0x75, 0x58, 0x4b, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4e, 0x50, 0x73, 0x78, 0x7a, 0x70, 0x6c, 0x62, 0x73, 0x7a, 0x68, 0x32, 0x6e, 0x61, 0x61, 0x56, 0x76, 0x75, 0x63, 0x38, 0x34, 0x5a, 0x74, 0x56, 0x2b, 0x57, 0x42, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x44, 0x41, 0x32, 0x67, 0x41, 0x0a, 0x4d, 0x47, 0x55, 0x43, 0x4d, 0x44, 0x71, 0x4c, 0x49, 0x66, 0x47, 0x39, 0x66, 0x68, 0x47, 0x74, 0x30, 0x4f, 0x39, 0x59, 0x6c, 0x69, 0x2f, 0x57, 0x36, 0x35, 0x31, 0x2b, 0x6b, 0x49, 0x30, 0x72, 0x7a, 0x32, 0x5a, 0x56, 0x77, 0x79, 0x7a, 0x6a, 0x4b, 0x4b, 0x6c, 0x77, 0x43, 0x6b, 0x63, 0x4f, 0x38, 0x44, 0x64, 0x5a, 0x45, 0x76, 0x38, 0x74, 0x6d, 0x5a, 0x51, 0x6f, 0x54, 0x69, 0x70, 0x50, 0x4e, 0x55, 0x30, 0x7a, 0x57, 0x67, 0x49, 0x78, 0x41, 0x4f, 0x70, 0x31, 0x0a, 0x41, 0x45, 0x34, 0x37, 0x78, 0x44, 0x71, 0x55, 0x45, 0x70, 0x48, 0x4a, 0x57, 0x45, 0x61, 0x64, 0x49, 0x52, 0x4e, 0x79, 0x70, 0x34, 0x69, 0x63, 0x69, 0x75, 0x52, 0x4d, 0x53, 0x74, 0x75, 0x57, 0x31, 0x4b, 0x79, 0x4c, 0x61, 0x32, 0x74, 0x4a, 0x45, 0x6c, 0x4d, 0x7a, 0x72, 0x64, 0x66, 0x6b, 0x76, 0x69, 0x54, 0x38, 0x74, 0x51, 0x70, 0x32, 0x31, 0x4b, 0x57, 0x38, 0x45, 0x41, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x55, 0x42, 0x49, 0x54, 0x41, 0x4b, 0x20, 0x4b, 0x61, 0x6d, 0x75, 0x20, 0x53, 0x4d, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x4b, 0x6f, 0x6b, 0x20, 0x53, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x6b, 0x61, 0x73, 0x69, 0x20, 0x2d, 0x20, 0x53, 0x75, 0x72, 0x75, 0x6d, 0x20, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x45, 0x59, 0x7a, 0x43, 0x43, 0x41, 0x30, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42, 0x41, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x43, 0x42, 0x30, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x46, 0x49, 0x78, 0x47, 0x44, 0x41, 0x57, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x0a, 0x44, 0x30, 0x64, 0x6c, 0x59, 0x6e, 0x70, 0x6c, 0x49, 0x43, 0x30, 0x67, 0x53, 0x32, 0x39, 0x6a, 0x59, 0x57, 0x56, 0x73, 0x61, 0x54, 0x46, 0x43, 0x4d, 0x45, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x35, 0x56, 0x48, 0x56, 0x79, 0x61, 0x32, 0x6c, 0x35, 0x5a, 0x53, 0x42, 0x43, 0x61, 0x57, 0x78, 0x70, 0x62, 0x58, 0x4e, 0x6c, 0x62, 0x43, 0x42, 0x32, 0x5a, 0x53, 0x42, 0x55, 0x5a, 0x57, 0x74, 0x75, 0x62, 0x32, 0x78, 0x76, 0x61, 0x6d, 0x6c, 0x72, 0x0a, 0x49, 0x45, 0x46, 0x79, 0x59, 0x58, 0x4e, 0x30, 0x61, 0x58, 0x4a, 0x74, 0x59, 0x53, 0x42, 0x4c, 0x64, 0x58, 0x4a, 0x31, 0x62, 0x58, 0x55, 0x67, 0x4c, 0x53, 0x42, 0x55, 0x56, 0x55, 0x4a, 0x4a, 0x56, 0x45, 0x46, 0x4c, 0x4d, 0x53, 0x30, 0x77, 0x4b, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x79, 0x52, 0x4c, 0x59, 0x57, 0x31, 0x31, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x72, 0x59, 0x58, 0x4e, 0x35, 0x62, 0x32, 0x34, 0x67, 0x0a, 0x54, 0x57, 0x56, 0x79, 0x61, 0x32, 0x56, 0x36, 0x61, 0x53, 0x41, 0x74, 0x49, 0x45, 0x74, 0x68, 0x62, 0x58, 0x55, 0x67, 0x55, 0x30, 0x30, 0x78, 0x4e, 0x6a, 0x41, 0x30, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4c, 0x56, 0x52, 0x56, 0x51, 0x6b, 0x6c, 0x55, 0x51, 0x55, 0x73, 0x67, 0x53, 0x32, 0x46, 0x74, 0x64, 0x53, 0x42, 0x54, 0x54, 0x53, 0x42, 0x54, 0x55, 0x30, 0x77, 0x67, 0x53, 0x32, 0x39, 0x72, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x0a, 0x5a, 0x6d, 0x6c, 0x72, 0x59, 0x58, 0x4e, 0x70, 0x49, 0x43, 0x30, 0x67, 0x55, 0x33, 0x56, 0x79, 0x64, 0x57, 0x30, 0x67, 0x4d, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x7a, 0x45, 0x78, 0x4d, 0x6a, 0x55, 0x77, 0x4f, 0x44, 0x49, 0x31, 0x4e, 0x54, 0x56, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x7a, 0x45, 0x77, 0x4d, 0x6a, 0x55, 0x77, 0x4f, 0x44, 0x49, 0x31, 0x4e, 0x54, 0x56, 0x61, 0x4d, 0x49, 0x48, 0x53, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x55, 0x55, 0x6a, 0x45, 0x59, 0x4d, 0x42, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x78, 0x4d, 0x50, 0x52, 0x32, 0x56, 0x69, 0x65, 0x6d, 0x55, 0x67, 0x4c, 0x53, 0x42, 0x4c, 0x62, 0x32, 0x4e, 0x68, 0x5a, 0x57, 0x78, 0x70, 0x4d, 0x55, 0x49, 0x77, 0x51, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x7a, 0x6c, 0x55, 0x64, 0x58, 0x4a, 0x72, 0x61, 0x58, 0x6c, 0x6c, 0x49, 0x45, 0x4a, 0x70, 0x62, 0x47, 0x6c, 0x74, 0x0a, 0x63, 0x32, 0x56, 0x73, 0x49, 0x48, 0x5a, 0x6c, 0x49, 0x46, 0x52, 0x6c, 0x61, 0x32, 0x35, 0x76, 0x62, 0x47, 0x39, 0x71, 0x61, 0x57, 0x73, 0x67, 0x51, 0x58, 0x4a, 0x68, 0x63, 0x33, 0x52, 0x70, 0x63, 0x6d, 0x31, 0x68, 0x49, 0x45, 0x74, 0x31, 0x63, 0x6e, 0x56, 0x74, 0x64, 0x53, 0x41, 0x74, 0x49, 0x46, 0x52, 0x56, 0x51, 0x6b, 0x6c, 0x55, 0x51, 0x55, 0x73, 0x78, 0x4c, 0x54, 0x41, 0x72, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x4a, 0x45, 0x74, 0x68, 0x0a, 0x62, 0x58, 0x55, 0x67, 0x55, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x74, 0x68, 0x63, 0x33, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x4e, 0x5a, 0x58, 0x4a, 0x72, 0x5a, 0x58, 0x70, 0x70, 0x49, 0x43, 0x30, 0x67, 0x53, 0x32, 0x46, 0x74, 0x64, 0x53, 0x42, 0x54, 0x54, 0x54, 0x45, 0x32, 0x4d, 0x44, 0x51, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x74, 0x56, 0x46, 0x56, 0x43, 0x53, 0x56, 0x52, 0x42, 0x53, 0x79, 0x42, 0x4c, 0x59, 0x57, 0x31, 0x31, 0x0a, 0x49, 0x46, 0x4e, 0x4e, 0x49, 0x46, 0x4e, 0x54, 0x54, 0x43, 0x42, 0x4c, 0x62, 0x32, 0x73, 0x67, 0x55, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x74, 0x68, 0x63, 0x32, 0x6b, 0x67, 0x4c, 0x53, 0x42, 0x54, 0x64, 0x58, 0x4a, 0x31, 0x62, 0x53, 0x41, 0x78, 0x4d, 0x49, 0x49, 0x42, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x38, 0x41, 0x0a, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x72, 0x33, 0x55, 0x77, 0x4d, 0x36, 0x71, 0x37, 0x61, 0x39, 0x4f, 0x5a, 0x4c, 0x42, 0x49, 0x33, 0x68, 0x4e, 0x6d, 0x4e, 0x65, 0x35, 0x65, 0x41, 0x30, 0x32, 0x37, 0x6e, 0x2f, 0x35, 0x74, 0x51, 0x6c, 0x54, 0x36, 0x51, 0x6c, 0x56, 0x5a, 0x43, 0x31, 0x78, 0x6c, 0x38, 0x4a, 0x6f, 0x53, 0x4e, 0x6b, 0x76, 0x6f, 0x42, 0x48, 0x54, 0x6f, 0x50, 0x34, 0x6d, 0x51, 0x34, 0x74, 0x34, 0x79, 0x38, 0x0a, 0x36, 0x49, 0x6a, 0x35, 0x69, 0x79, 0x53, 0x72, 0x4c, 0x71, 0x50, 0x31, 0x4e, 0x2b, 0x52, 0x41, 0x6a, 0x68, 0x67, 0x6c, 0x65, 0x59, 0x4e, 0x31, 0x48, 0x7a, 0x76, 0x2f, 0x62, 0x4b, 0x6a, 0x46, 0x78, 0x6c, 0x62, 0x34, 0x74, 0x4f, 0x32, 0x4b, 0x52, 0x4b, 0x4f, 0x72, 0x62, 0x45, 0x7a, 0x38, 0x48, 0x64, 0x44, 0x63, 0x37, 0x32, 0x69, 0x39, 0x7a, 0x2b, 0x53, 0x71, 0x7a, 0x76, 0x42, 0x56, 0x39, 0x36, 0x49, 0x30, 0x31, 0x49, 0x4e, 0x72, 0x4e, 0x33, 0x77, 0x63, 0x0a, 0x77, 0x76, 0x36, 0x31, 0x41, 0x2b, 0x78, 0x58, 0x7a, 0x72, 0x79, 0x30, 0x74, 0x63, 0x58, 0x74, 0x41, 0x41, 0x39, 0x54, 0x4e, 0x79, 0x70, 0x4e, 0x39, 0x45, 0x38, 0x4d, 0x67, 0x2f, 0x75, 0x47, 0x7a, 0x38, 0x76, 0x2b, 0x6a, 0x45, 0x36, 0x39, 0x68, 0x2f, 0x6d, 0x6e, 0x69, 0x79, 0x46, 0x58, 0x6e, 0x48, 0x72, 0x66, 0x41, 0x32, 0x65, 0x4a, 0x4c, 0x4a, 0x32, 0x58, 0x59, 0x61, 0x63, 0x51, 0x75, 0x46, 0x57, 0x51, 0x66, 0x77, 0x34, 0x74, 0x4a, 0x7a, 0x68, 0x30, 0x0a, 0x33, 0x2b, 0x66, 0x39, 0x32, 0x6b, 0x34, 0x53, 0x34, 0x30, 0x30, 0x56, 0x49, 0x67, 0x4c, 0x49, 0x34, 0x4f, 0x44, 0x38, 0x44, 0x36, 0x32, 0x4b, 0x31, 0x38, 0x6c, 0x55, 0x55, 0x4d, 0x77, 0x37, 0x44, 0x38, 0x6f, 0x57, 0x67, 0x49, 0x54, 0x51, 0x55, 0x56, 0x62, 0x44, 0x6a, 0x6c, 0x5a, 0x2f, 0x69, 0x53, 0x49, 0x7a, 0x4c, 0x2b, 0x61, 0x46, 0x43, 0x72, 0x32, 0x6c, 0x71, 0x42, 0x73, 0x32, 0x33, 0x74, 0x50, 0x63, 0x4c, 0x47, 0x30, 0x37, 0x78, 0x78, 0x4f, 0x39, 0x0a, 0x57, 0x53, 0x4d, 0x73, 0x35, 0x75, 0x57, 0x6b, 0x39, 0x39, 0x67, 0x4c, 0x37, 0x65, 0x71, 0x51, 0x51, 0x45, 0x53, 0x6f, 0x6c, 0x62, 0x75, 0x54, 0x31, 0x64, 0x43, 0x41, 0x4e, 0x4c, 0x5a, 0x47, 0x65, 0x41, 0x34, 0x66, 0x41, 0x4a, 0x4e, 0x47, 0x34, 0x65, 0x37, 0x70, 0x2b, 0x65, 0x78, 0x50, 0x46, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x0a, 0x5a, 0x54, 0x2f, 0x48, 0x69, 0x6f, 0x62, 0x47, 0x50, 0x4e, 0x30, 0x38, 0x56, 0x46, 0x77, 0x31, 0x2b, 0x44, 0x72, 0x74, 0x55, 0x67, 0x78, 0x48, 0x56, 0x38, 0x67, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x0a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x43, 0x6f, 0x2f, 0x34, 0x66, 0x45, 0x79, 0x6a, 0x71, 0x37, 0x68, 0x6d, 0x46, 0x78, 0x4c, 0x58, 0x73, 0x39, 0x72, 0x48, 0x6d, 0x6f, 0x4a, 0x30, 0x69, 0x4b, 0x70, 0x45, 0x73, 0x64, 0x65, 0x56, 0x33, 0x31, 0x7a, 0x56, 0x6d, 0x53, 0x41, 0x68, 0x48, 0x71, 0x54, 0x35, 0x41, 0x6d, 0x35, 0x45, 0x4d, 0x32, 0x66, 0x4b, 0x69, 0x66, 0x68, 0x0a, 0x41, 0x48, 0x65, 0x2b, 0x53, 0x4d, 0x67, 0x31, 0x71, 0x49, 0x47, 0x66, 0x35, 0x4c, 0x67, 0x73, 0x79, 0x58, 0x38, 0x4f, 0x73, 0x4e, 0x4a, 0x4c, 0x4e, 0x31, 0x33, 0x71, 0x75, 0x64, 0x55, 0x4c, 0x58, 0x6a, 0x53, 0x39, 0x39, 0x48, 0x4d, 0x70, 0x77, 0x2b, 0x30, 0x6d, 0x46, 0x5a, 0x78, 0x2b, 0x43, 0x46, 0x4f, 0x4b, 0x57, 0x49, 0x33, 0x51, 0x53, 0x79, 0x6a, 0x66, 0x77, 0x62, 0x50, 0x66, 0x49, 0x50, 0x50, 0x35, 0x34, 0x2b, 0x4d, 0x36, 0x33, 0x38, 0x79, 0x63, 0x0a, 0x6c, 0x4e, 0x68, 0x4f, 0x54, 0x38, 0x4e, 0x72, 0x46, 0x37, 0x66, 0x33, 0x63, 0x75, 0x69, 0x74, 0x5a, 0x6a, 0x4f, 0x31, 0x4a, 0x56, 0x4f, 0x72, 0x34, 0x50, 0x68, 0x4d, 0x71, 0x5a, 0x33, 0x39, 0x38, 0x67, 0x32, 0x36, 0x72, 0x72, 0x6e, 0x5a, 0x71, 0x73, 0x5a, 0x72, 0x2b, 0x5a, 0x4f, 0x37, 0x72, 0x71, 0x75, 0x34, 0x6c, 0x7a, 0x77, 0x44, 0x47, 0x72, 0x70, 0x44, 0x78, 0x70, 0x61, 0x35, 0x52, 0x58, 0x49, 0x34, 0x73, 0x36, 0x65, 0x68, 0x6c, 0x6a, 0x32, 0x52, 0x0a, 0x65, 0x33, 0x37, 0x41, 0x49, 0x56, 0x4e, 0x4d, 0x68, 0x2b, 0x33, 0x79, 0x43, 0x31, 0x53, 0x56, 0x55, 0x5a, 0x50, 0x56, 0x49, 0x71, 0x55, 0x4e, 0x69, 0x76, 0x47, 0x54, 0x44, 0x6a, 0x35, 0x55, 0x44, 0x72, 0x44, 0x59, 0x79, 0x55, 0x37, 0x63, 0x38, 0x6a, 0x45, 0x79, 0x56, 0x75, 0x70, 0x6b, 0x2b, 0x65, 0x71, 0x31, 0x6e, 0x52, 0x5a, 0x6d, 0x51, 0x6e, 0x4c, 0x7a, 0x66, 0x39, 0x4f, 0x78, 0x4d, 0x55, 0x50, 0x38, 0x70, 0x49, 0x34, 0x58, 0x38, 0x57, 0x30, 0x6a, 0x0a, 0x71, 0x35, 0x52, 0x6d, 0x2b, 0x4b, 0x33, 0x37, 0x44, 0x77, 0x68, 0x75, 0x4a, 0x69, 0x31, 0x2f, 0x46, 0x77, 0x63, 0x4a, 0x73, 0x6f, 0x7a, 0x37, 0x55, 0x4d, 0x43, 0x66, 0x6c, 0x6f, 0x33, 0x50, 0x74, 0x76, 0x30, 0x41, 0x6e, 0x56, 0x6f, 0x55, 0x6d, 0x72, 0x38, 0x43, 0x52, 0x50, 0x58, 0x42, 0x77, 0x70, 0x38, 0x69, 0x58, 0x71, 0x49, 0x50, 0x6f, 0x65, 0x4d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x47, 0x44, 0x43, 0x41, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x41, 0x55, 0x54, 0x48, 0x20, 0x52, 0x35, 0x20, 0x52, 0x4f, 0x4f, 0x54, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x69, 0x44, 0x43, 0x43, 0x41, 0x33, 0x43, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x66, 0x51, 0x6d, 0x58, 0x2f, 0x76, 0x42, 0x48, 0x36, 0x6e, 0x6f, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x59, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x34, 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x4b, 0x55, 0x64, 0x56, 0x51, 0x55, 0x35, 0x48, 0x49, 0x45, 0x52, 0x50, 0x54, 0x6b, 0x63, 0x67, 0x51, 0x30, 0x56, 0x53, 0x56, 0x45, 0x6c, 0x47, 0x53, 0x55, 0x4e, 0x42, 0x56, 0x45, 0x55, 0x67, 0x51, 0x56, 0x56, 0x55, 0x53, 0x45, 0x39, 0x53, 0x53, 0x56, 0x52, 0x5a, 0x49, 0x45, 0x4e, 0x50, 0x4c, 0x69, 0x78, 0x4d, 0x56, 0x45, 0x51, 0x75, 0x4d, 0x52, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x0a, 0x44, 0x42, 0x5a, 0x48, 0x52, 0x45, 0x4e, 0x42, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x51, 0x56, 0x56, 0x55, 0x53, 0x43, 0x42, 0x53, 0x4e, 0x53, 0x42, 0x53, 0x54, 0x30, 0x39, 0x55, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x30, 0x4d, 0x54, 0x45, 0x79, 0x4e, 0x6a, 0x41, 0x31, 0x4d, 0x54, 0x4d, 0x78, 0x4e, 0x56, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x77, 0x4d, 0x54, 0x49, 0x7a, 0x4d, 0x54, 0x45, 0x31, 0x4e, 0x54, 0x6b, 0x31, 0x4f, 0x56, 0x6f, 0x77, 0x0a, 0x59, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x34, 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x4b, 0x55, 0x64, 0x56, 0x51, 0x55, 0x35, 0x48, 0x49, 0x45, 0x52, 0x50, 0x54, 0x6b, 0x63, 0x67, 0x51, 0x30, 0x56, 0x53, 0x56, 0x45, 0x6c, 0x47, 0x53, 0x55, 0x4e, 0x42, 0x56, 0x45, 0x55, 0x67, 0x51, 0x56, 0x56, 0x55, 0x53, 0x45, 0x39, 0x53, 0x53, 0x56, 0x52, 0x5a, 0x0a, 0x49, 0x45, 0x4e, 0x50, 0x4c, 0x69, 0x78, 0x4d, 0x56, 0x45, 0x51, 0x75, 0x4d, 0x52, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x5a, 0x48, 0x52, 0x45, 0x4e, 0x42, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x51, 0x56, 0x56, 0x55, 0x53, 0x43, 0x42, 0x53, 0x4e, 0x53, 0x42, 0x53, 0x54, 0x30, 0x39, 0x55, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x0a, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x45, 0x41, 0x32, 0x61, 0x4d, 0x57, 0x38, 0x4d, 0x68, 0x30, 0x64, 0x48, 0x65, 0x62, 0x37, 0x7a, 0x4d, 0x4e, 0x4f, 0x77, 0x5a, 0x2b, 0x56, 0x66, 0x79, 0x31, 0x59, 0x49, 0x39, 0x32, 0x68, 0x68, 0x4a, 0x43, 0x66, 0x56, 0x5a, 0x6d, 0x50, 0x6f, 0x69, 0x43, 0x37, 0x58, 0x4a, 0x6a, 0x44, 0x70, 0x36, 0x4c, 0x33, 0x54, 0x51, 0x73, 0x0a, 0x41, 0x6c, 0x46, 0x52, 0x77, 0x78, 0x6e, 0x39, 0x57, 0x56, 0x53, 0x45, 0x79, 0x66, 0x46, 0x72, 0x73, 0x30, 0x79, 0x77, 0x36, 0x65, 0x68, 0x47, 0x58, 0x54, 0x6a, 0x47, 0x6f, 0x71, 0x63, 0x75, 0x45, 0x56, 0x65, 0x36, 0x67, 0x68, 0x57, 0x69, 0x6e, 0x49, 0x39, 0x74, 0x73, 0x4a, 0x6c, 0x4b, 0x43, 0x76, 0x4c, 0x72, 0x69, 0x58, 0x42, 0x6a, 0x54, 0x6e, 0x6e, 0x45, 0x74, 0x31, 0x75, 0x39, 0x6f, 0x6c, 0x32, 0x78, 0x38, 0x6b, 0x45, 0x43, 0x4b, 0x36, 0x32, 0x70, 0x0a, 0x4f, 0x71, 0x50, 0x73, 0x65, 0x51, 0x72, 0x73, 0x58, 0x7a, 0x72, 0x6a, 0x2f, 0x65, 0x2b, 0x41, 0x50, 0x4b, 0x30, 0x30, 0x6d, 0x78, 0x71, 0x72, 0x69, 0x43, 0x5a, 0x37, 0x56, 0x71, 0x4b, 0x43, 0x68, 0x68, 0x2f, 0x72, 0x4e, 0x59, 0x6d, 0x44, 0x66, 0x31, 0x2b, 0x75, 0x4b, 0x55, 0x34, 0x39, 0x74, 0x6d, 0x37, 0x73, 0x72, 0x73, 0x48, 0x77, 0x4a, 0x35, 0x75, 0x75, 0x34, 0x2f, 0x54, 0x73, 0x37, 0x36, 0x35, 0x2f, 0x39, 0x34, 0x59, 0x39, 0x63, 0x6e, 0x72, 0x72, 0x0a, 0x70, 0x66, 0x74, 0x5a, 0x54, 0x71, 0x66, 0x72, 0x6c, 0x59, 0x77, 0x69, 0x4f, 0x58, 0x6e, 0x68, 0x4c, 0x51, 0x69, 0x50, 0x7a, 0x4c, 0x79, 0x52, 0x75, 0x45, 0x48, 0x33, 0x46, 0x4d, 0x45, 0x6a, 0x71, 0x63, 0x4f, 0x74, 0x6d, 0x6b, 0x56, 0x45, 0x73, 0x37, 0x4c, 0x58, 0x4c, 0x4d, 0x33, 0x47, 0x4b, 0x65, 0x4a, 0x51, 0x45, 0x4b, 0x35, 0x63, 0x79, 0x34, 0x4b, 0x4f, 0x46, 0x78, 0x67, 0x32, 0x66, 0x5a, 0x66, 0x6d, 0x69, 0x4a, 0x71, 0x77, 0x54, 0x54, 0x51, 0x4a, 0x0a, 0x39, 0x43, 0x79, 0x35, 0x57, 0x6d, 0x59, 0x71, 0x73, 0x42, 0x65, 0x62, 0x6e, 0x68, 0x35, 0x32, 0x6e, 0x55, 0x70, 0x6d, 0x4d, 0x55, 0x48, 0x66, 0x50, 0x2f, 0x76, 0x46, 0x42, 0x75, 0x38, 0x62, 0x74, 0x6e, 0x34, 0x61, 0x52, 0x6a, 0x62, 0x33, 0x5a, 0x47, 0x4d, 0x37, 0x34, 0x7a, 0x6b, 0x59, 0x49, 0x2b, 0x64, 0x6e, 0x64, 0x52, 0x54, 0x56, 0x64, 0x56, 0x65, 0x53, 0x4e, 0x37, 0x32, 0x2b, 0x61, 0x68, 0x73, 0x6d, 0x55, 0x50, 0x49, 0x32, 0x4a, 0x67, 0x61, 0x51, 0x0a, 0x78, 0x58, 0x41, 0x42, 0x5a, 0x47, 0x31, 0x32, 0x5a, 0x75, 0x47, 0x52, 0x32, 0x32, 0x34, 0x48, 0x77, 0x47, 0x47, 0x41, 0x4c, 0x72, 0x49, 0x75, 0x4c, 0x34, 0x78, 0x77, 0x70, 0x39, 0x45, 0x37, 0x50, 0x4c, 0x4f, 0x52, 0x35, 0x47, 0x36, 0x32, 0x78, 0x44, 0x74, 0x77, 0x38, 0x6d, 0x79, 0x53, 0x6c, 0x77, 0x6e, 0x4e, 0x52, 0x33, 0x30, 0x59, 0x77, 0x50, 0x4f, 0x37, 0x6e, 0x67, 0x2f, 0x57, 0x69, 0x36, 0x34, 0x48, 0x74, 0x6c, 0x6f, 0x50, 0x7a, 0x67, 0x73, 0x4d, 0x0a, 0x52, 0x36, 0x66, 0x6c, 0x50, 0x72, 0x69, 0x39, 0x66, 0x63, 0x65, 0x62, 0x4e, 0x61, 0x42, 0x68, 0x6c, 0x7a, 0x70, 0x42, 0x64, 0x52, 0x66, 0x4d, 0x4b, 0x35, 0x5a, 0x33, 0x4b, 0x70, 0x49, 0x68, 0x48, 0x74, 0x6d, 0x56, 0x64, 0x69, 0x42, 0x6e, 0x61, 0x4d, 0x38, 0x4e, 0x76, 0x64, 0x2f, 0x57, 0x48, 0x77, 0x6c, 0x71, 0x6d, 0x75, 0x4c, 0x4d, 0x63, 0x33, 0x47, 0x6b, 0x4c, 0x33, 0x30, 0x53, 0x67, 0x4c, 0x64, 0x54, 0x4d, 0x45, 0x5a, 0x65, 0x53, 0x31, 0x53, 0x5a, 0x0a, 0x44, 0x32, 0x66, 0x4a, 0x70, 0x63, 0x6a, 0x79, 0x49, 0x4d, 0x47, 0x43, 0x37, 0x4a, 0x30, 0x52, 0x33, 0x38, 0x49, 0x43, 0x2b, 0x78, 0x6f, 0x37, 0x30, 0x65, 0x30, 0x67, 0x6d, 0x75, 0x39, 0x6c, 0x5a, 0x4a, 0x49, 0x51, 0x44, 0x53, 0x72, 0x69, 0x33, 0x6e, 0x44, 0x78, 0x47, 0x47, 0x65, 0x43, 0x6a, 0x47, 0x48, 0x65, 0x75, 0x4c, 0x7a, 0x52, 0x4c, 0x35, 0x7a, 0x37, 0x44, 0x39, 0x41, 0x72, 0x37, 0x52, 0x74, 0x32, 0x75, 0x65, 0x51, 0x35, 0x56, 0x66, 0x6a, 0x34, 0x0a, 0x6f, 0x52, 0x32, 0x34, 0x71, 0x6f, 0x41, 0x41, 0x54, 0x49, 0x4c, 0x6e, 0x73, 0x6e, 0x38, 0x4a, 0x75, 0x4c, 0x77, 0x77, 0x6f, 0x43, 0x38, 0x4e, 0x39, 0x56, 0x4b, 0x65, 0x6a, 0x76, 0x65, 0x53, 0x73, 0x77, 0x6f, 0x41, 0x48, 0x51, 0x42, 0x55, 0x6c, 0x77, 0x62, 0x67, 0x73, 0x51, 0x66, 0x5a, 0x78, 0x77, 0x39, 0x63, 0x5a, 0x58, 0x30, 0x38, 0x62, 0x56, 0x6c, 0x58, 0x35, 0x4f, 0x32, 0x6c, 0x6a, 0x65, 0x6c, 0x41, 0x55, 0x35, 0x38, 0x56, 0x53, 0x36, 0x42, 0x78, 0x0a, 0x39, 0x68, 0x6f, 0x68, 0x34, 0x39, 0x70, 0x77, 0x42, 0x69, 0x46, 0x59, 0x46, 0x49, 0x65, 0x46, 0x64, 0x33, 0x6d, 0x71, 0x67, 0x6e, 0x6b, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4f, 0x4c, 0x4a, 0x51, 0x4a, 0x39, 0x4e, 0x7a, 0x75, 0x69, 0x61, 0x6f, 0x58, 0x7a, 0x50, 0x44, 0x6a, 0x39, 0x6c, 0x78, 0x53, 0x6d, 0x49, 0x61, 0x68, 0x6c, 0x52, 0x0a, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x41, 0x51, 0x44, 0x52, 0x53, 0x56, 0x66, 0x67, 0x0a, 0x70, 0x38, 0x78, 0x6f, 0x57, 0x4c, 0x6f, 0x42, 0x44, 0x79, 0x73, 0x5a, 0x7a, 0x59, 0x32, 0x77, 0x59, 0x55, 0x57, 0x73, 0x45, 0x65, 0x31, 0x6a, 0x55, 0x47, 0x6e, 0x34, 0x48, 0x33, 0x2b, 0x2b, 0x46, 0x6f, 0x2f, 0x39, 0x6e, 0x65, 0x73, 0x4c, 0x71, 0x6a, 0x4a, 0x48, 0x64, 0x74, 0x4a, 0x6e, 0x4a, 0x4f, 0x32, 0x39, 0x66, 0x44, 0x4d, 0x79, 0x6c, 0x79, 0x72, 0x48, 0x42, 0x59, 0x5a, 0x6d, 0x44, 0x52, 0x64, 0x39, 0x46, 0x42, 0x55, 0x62, 0x31, 0x4f, 0x76, 0x39, 0x0a, 0x48, 0x35, 0x72, 0x32, 0x58, 0x70, 0x64, 0x70, 0x74, 0x78, 0x6f, 0x6c, 0x70, 0x41, 0x71, 0x7a, 0x6b, 0x54, 0x39, 0x66, 0x4e, 0x71, 0x79, 0x4c, 0x37, 0x46, 0x65, 0x6f, 0x50, 0x75, 0x65, 0x42, 0x69, 0x68, 0x68, 0x58, 0x4f, 0x59, 0x56, 0x30, 0x47, 0x6b, 0x4c, 0x48, 0x36, 0x56, 0x73, 0x54, 0x58, 0x34, 0x2f, 0x35, 0x43, 0x4f, 0x6d, 0x53, 0x64, 0x49, 0x33, 0x31, 0x52, 0x39, 0x4b, 0x72, 0x4f, 0x39, 0x62, 0x37, 0x65, 0x47, 0x5a, 0x4f, 0x4e, 0x6e, 0x33, 0x35, 0x0a, 0x36, 0x5a, 0x4c, 0x70, 0x42, 0x4e, 0x37, 0x39, 0x53, 0x57, 0x50, 0x38, 0x62, 0x66, 0x73, 0x55, 0x63, 0x5a, 0x4e, 0x6e, 0x4c, 0x30, 0x64, 0x4b, 0x74, 0x37, 0x6e, 0x2f, 0x48, 0x69, 0x70, 0x7a, 0x63, 0x45, 0x59, 0x77, 0x76, 0x31, 0x72, 0x79, 0x4c, 0x33, 0x6d, 0x6c, 0x34, 0x59, 0x30, 0x4d, 0x32, 0x66, 0x6d, 0x79, 0x59, 0x7a, 0x65, 0x4d, 0x4e, 0x32, 0x57, 0x46, 0x63, 0x47, 0x70, 0x63, 0x57, 0x77, 0x6c, 0x79, 0x75, 0x61, 0x31, 0x6a, 0x50, 0x4c, 0x48, 0x64, 0x0a, 0x2b, 0x50, 0x77, 0x79, 0x76, 0x7a, 0x65, 0x47, 0x35, 0x4c, 0x75, 0x4f, 0x6d, 0x43, 0x64, 0x2b, 0x75, 0x68, 0x38, 0x57, 0x34, 0x58, 0x41, 0x52, 0x38, 0x67, 0x50, 0x66, 0x4a, 0x57, 0x49, 0x79, 0x4a, 0x79, 0x59, 0x59, 0x4d, 0x6f, 0x53, 0x66, 0x2f, 0x77, 0x41, 0x36, 0x45, 0x37, 0x71, 0x61, 0x54, 0x66, 0x52, 0x50, 0x75, 0x42, 0x52, 0x77, 0x49, 0x72, 0x48, 0x4b, 0x4b, 0x35, 0x44, 0x4f, 0x4b, 0x63, 0x46, 0x77, 0x39, 0x43, 0x2b, 0x64, 0x66, 0x2f, 0x4b, 0x51, 0x0a, 0x48, 0x74, 0x5a, 0x61, 0x33, 0x37, 0x64, 0x47, 0x2f, 0x4f, 0x61, 0x47, 0x2b, 0x73, 0x76, 0x67, 0x49, 0x48, 0x5a, 0x36, 0x75, 0x71, 0x62, 0x4c, 0x39, 0x58, 0x7a, 0x65, 0x59, 0x71, 0x57, 0x78, 0x69, 0x2b, 0x37, 0x65, 0x67, 0x6d, 0x61, 0x4b, 0x54, 0x6a, 0x6f, 0x77, 0x48, 0x7a, 0x2b, 0x41, 0x79, 0x36, 0x30, 0x6e, 0x75, 0x67, 0x78, 0x65, 0x31, 0x39, 0x43, 0x78, 0x56, 0x73, 0x70, 0x33, 0x63, 0x62, 0x4b, 0x31, 0x64, 0x61, 0x46, 0x51, 0x71, 0x55, 0x42, 0x44, 0x0a, 0x46, 0x38, 0x49, 0x6f, 0x32, 0x63, 0x39, 0x53, 0x69, 0x31, 0x76, 0x49, 0x59, 0x39, 0x52, 0x43, 0x50, 0x71, 0x41, 0x7a, 0x65, 0x6b, 0x59, 0x75, 0x39, 0x77, 0x6f, 0x67, 0x52, 0x6c, 0x52, 0x2b, 0x61, 0x6b, 0x38, 0x78, 0x38, 0x59, 0x46, 0x2b, 0x51, 0x6e, 0x51, 0x34, 0x5a, 0x58, 0x4d, 0x6e, 0x37, 0x73, 0x5a, 0x38, 0x75, 0x49, 0x37, 0x58, 0x70, 0x54, 0x72, 0x58, 0x6d, 0x4b, 0x47, 0x63, 0x6a, 0x42, 0x42, 0x56, 0x30, 0x39, 0x74, 0x4c, 0x37, 0x45, 0x43, 0x51, 0x0a, 0x38, 0x73, 0x31, 0x75, 0x56, 0x39, 0x4a, 0x69, 0x44, 0x6e, 0x78, 0x58, 0x6b, 0x37, 0x47, 0x6e, 0x62, 0x63, 0x32, 0x64, 0x67, 0x37, 0x73, 0x71, 0x35, 0x2b, 0x57, 0x32, 0x4f, 0x33, 0x46, 0x59, 0x72, 0x66, 0x33, 0x52, 0x52, 0x62, 0x78, 0x61, 0x6b, 0x65, 0x35, 0x54, 0x46, 0x57, 0x2f, 0x54, 0x52, 0x51, 0x6c, 0x31, 0x62, 0x72, 0x71, 0x51, 0x58, 0x52, 0x34, 0x45, 0x7a, 0x7a, 0x66, 0x66, 0x48, 0x71, 0x68, 0x6d, 0x73, 0x59, 0x7a, 0x6d, 0x49, 0x47, 0x72, 0x76, 0x0a, 0x2f, 0x45, 0x68, 0x4f, 0x64, 0x4a, 0x68, 0x43, 0x72, 0x79, 0x6c, 0x76, 0x4c, 0x6d, 0x72, 0x48, 0x2b, 0x33, 0x33, 0x52, 0x5a, 0x6a, 0x45, 0x69, 0x7a, 0x49, 0x59, 0x41, 0x66, 0x6d, 0x61, 0x44, 0x44, 0x45, 0x4c, 0x30, 0x76, 0x54, 0x53, 0x53, 0x77, 0x78, 0x72, 0x71, 0x54, 0x38, 0x70, 0x2b, 0x63, 0x6b, 0x30, 0x4c, 0x63, 0x49, 0x79, 0x6d, 0x53, 0x4c, 0x75, 0x6d, 0x6f, 0x52, 0x54, 0x32, 0x2b, 0x31, 0x68, 0x45, 0x6d, 0x52, 0x53, 0x75, 0x71, 0x67, 0x75, 0x54, 0x0a, 0x61, 0x61, 0x41, 0x70, 0x4a, 0x55, 0x71, 0x6c, 0x79, 0x79, 0x76, 0x64, 0x69, 0x6d, 0x59, 0x48, 0x46, 0x6e, 0x67, 0x56, 0x56, 0x33, 0x45, 0x62, 0x37, 0x50, 0x56, 0x48, 0x68, 0x50, 0x4f, 0x65, 0x4d, 0x54, 0x64, 0x36, 0x31, 0x58, 0x38, 0x6b, 0x72, 0x65, 0x53, 0x38, 0x2f, 0x66, 0x33, 0x4d, 0x62, 0x6f, 0x50, 0x6f, 0x44, 0x4b, 0x69, 0x33, 0x51, 0x57, 0x77, 0x48, 0x33, 0x62, 0x30, 0x38, 0x68, 0x70, 0x63, 0x76, 0x30, 0x67, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x53, 0x4c, 0x2e, 0x63, 0x6f, 0x6d, 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, 0x52, 0x53, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x33, 0x54, 0x43, 0x43, 0x41, 0x38, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x65, 0x79, 0x79, 0x62, 0x30, 0x78, 0x61, 0x41, 0x4d, 0x70, 0x6b, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x66, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x44, 0x6a, 0x41, 0x4d, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x4d, 0x42, 0x56, 0x52, 0x6c, 0x65, 0x47, 0x46, 0x7a, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x44, 0x41, 0x64, 0x49, 0x62, 0x33, 0x56, 0x7a, 0x64, 0x47, 0x39, 0x75, 0x4d, 0x52, 0x67, 0x77, 0x46, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x39, 0x54, 0x55, 0x30, 0x77, 0x67, 0x51, 0x32, 0x39, 0x79, 0x63, 0x47, 0x39, 0x79, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x78, 0x0a, 0x4d, 0x54, 0x41, 0x76, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x4b, 0x46, 0x4e, 0x54, 0x54, 0x43, 0x35, 0x6a, 0x62, 0x32, 0x30, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x42, 0x53, 0x55, 0x30, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x59, 0x77, 0x0a, 0x4d, 0x6a, 0x45, 0x79, 0x4d, 0x54, 0x63, 0x7a, 0x4f, 0x54, 0x4d, 0x35, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x45, 0x77, 0x4d, 0x6a, 0x45, 0x79, 0x4d, 0x54, 0x63, 0x7a, 0x4f, 0x54, 0x4d, 0x35, 0x57, 0x6a, 0x42, 0x38, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x4f, 0x4d, 0x41, 0x77, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x41, 0x77, 0x46, 0x56, 0x47, 0x56, 0x34, 0x59, 0x58, 0x4d, 0x78, 0x0a, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x4d, 0x42, 0x30, 0x68, 0x76, 0x64, 0x58, 0x4e, 0x30, 0x62, 0x32, 0x34, 0x78, 0x47, 0x44, 0x41, 0x57, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x44, 0x31, 0x4e, 0x54, 0x54, 0x43, 0x42, 0x44, 0x62, 0x33, 0x4a, 0x77, 0x62, 0x33, 0x4a, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6a, 0x45, 0x78, 0x4d, 0x43, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x6f, 0x55, 0x31, 0x4e, 0x4d, 0x0a, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x53, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x46, 0x4a, 0x54, 0x51, 0x54, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x0a, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x50, 0x6b, 0x50, 0x33, 0x61, 0x4d, 0x72, 0x66, 0x63, 0x76, 0x51, 0x4b, 0x76, 0x37, 0x73, 0x5a, 0x34, 0x57, 0x6d, 0x35, 0x79, 0x34, 0x62, 0x75, 0x6e, 0x66, 0x68, 0x34, 0x2f, 0x57, 0x76, 0x70, 0x4f, 0x7a, 0x36, 0x53, 0x6c, 0x32, 0x52, 0x78, 0x46, 0x64, 0x48, 0x61, 0x78, 0x68, 0x33, 0x61, 0x33, 0x62, 0x79, 0x2f, 0x5a, 0x50, 0x6b, 0x50, 0x51, 0x2f, 0x43, 0x0a, 0x46, 0x70, 0x34, 0x4c, 0x5a, 0x73, 0x4e, 0x57, 0x6c, 0x4a, 0x34, 0x58, 0x67, 0x34, 0x58, 0x4f, 0x56, 0x75, 0x2f, 0x79, 0x46, 0x76, 0x30, 0x41, 0x59, 0x76, 0x55, 0x69, 0x43, 0x56, 0x54, 0x6f, 0x5a, 0x52, 0x64, 0x4f, 0x51, 0x62, 0x6e, 0x67, 0x54, 0x30, 0x61, 0x58, 0x71, 0x68, 0x76, 0x49, 0x75, 0x47, 0x35, 0x69, 0x58, 0x6d, 0x6d, 0x78, 0x58, 0x39, 0x73, 0x71, 0x41, 0x6e, 0x37, 0x38, 0x62, 0x4d, 0x72, 0x7a, 0x51, 0x64, 0x6a, 0x74, 0x30, 0x4f, 0x6a, 0x38, 0x0a, 0x50, 0x32, 0x46, 0x49, 0x37, 0x62, 0x41, 0x44, 0x46, 0x42, 0x30, 0x51, 0x44, 0x6b, 0x73, 0x5a, 0x34, 0x4c, 0x74, 0x4f, 0x37, 0x49, 0x5a, 0x6c, 0x2f, 0x7a, 0x62, 0x7a, 0x58, 0x6d, 0x63, 0x43, 0x43, 0x35, 0x32, 0x47, 0x56, 0x57, 0x48, 0x39, 0x65, 0x6a, 0x6a, 0x74, 0x2f, 0x75, 0x49, 0x5a, 0x41, 0x4c, 0x64, 0x76, 0x6f, 0x56, 0x42, 0x69, 0x64, 0x58, 0x51, 0x38, 0x6f, 0x50, 0x72, 0x49, 0x4a, 0x5a, 0x4b, 0x30, 0x62, 0x6e, 0x6f, 0x69, 0x78, 0x2f, 0x67, 0x65, 0x0a, 0x6f, 0x65, 0x4f, 0x79, 0x33, 0x5a, 0x45, 0x78, 0x71, 0x79, 0x73, 0x64, 0x42, 0x50, 0x2b, 0x6c, 0x53, 0x67, 0x51, 0x33, 0x36, 0x59, 0x57, 0x6b, 0x4d, 0x79, 0x76, 0x39, 0x34, 0x74, 0x5a, 0x56, 0x4e, 0x48, 0x77, 0x5a, 0x70, 0x45, 0x70, 0x6f, 0x78, 0x37, 0x4b, 0x6f, 0x30, 0x37, 0x66, 0x4b, 0x6f, 0x5a, 0x4f, 0x49, 0x36, 0x38, 0x47, 0x58, 0x76, 0x49, 0x7a, 0x35, 0x48, 0x64, 0x6b, 0x69, 0x68, 0x43, 0x52, 0x30, 0x78, 0x77, 0x51, 0x39, 0x61, 0x71, 0x6b, 0x70, 0x0a, 0x6b, 0x38, 0x7a, 0x72, 0x75, 0x46, 0x76, 0x68, 0x2f, 0x6c, 0x38, 0x6c, 0x71, 0x6a, 0x52, 0x59, 0x79, 0x4d, 0x45, 0x6a, 0x56, 0x4a, 0x30, 0x62, 0x6d, 0x42, 0x48, 0x44, 0x4f, 0x4a, 0x78, 0x2b, 0x50, 0x59, 0x5a, 0x73, 0x70, 0x51, 0x39, 0x41, 0x68, 0x6e, 0x77, 0x43, 0x39, 0x46, 0x77, 0x43, 0x54, 0x79, 0x6a, 0x4c, 0x72, 0x6e, 0x47, 0x66, 0x44, 0x7a, 0x72, 0x49, 0x4d, 0x2f, 0x34, 0x52, 0x4a, 0x54, 0x58, 0x71, 0x2f, 0x4c, 0x72, 0x46, 0x59, 0x44, 0x33, 0x5a, 0x0a, 0x66, 0x42, 0x6a, 0x56, 0x73, 0x71, 0x6e, 0x54, 0x64, 0x58, 0x67, 0x44, 0x63, 0x69, 0x4c, 0x4b, 0x4f, 0x73, 0x4d, 0x66, 0x37, 0x79, 0x7a, 0x6c, 0x4c, 0x71, 0x6e, 0x36, 0x6e, 0x69, 0x79, 0x32, 0x55, 0x55, 0x62, 0x39, 0x72, 0x77, 0x50, 0x57, 0x36, 0x6d, 0x42, 0x6f, 0x36, 0x6f, 0x55, 0x57, 0x4e, 0x6d, 0x75, 0x46, 0x36, 0x52, 0x37, 0x41, 0x73, 0x39, 0x33, 0x45, 0x4a, 0x4e, 0x79, 0x41, 0x4b, 0x6f, 0x46, 0x42, 0x62, 0x5a, 0x51, 0x2b, 0x79, 0x4f, 0x44, 0x4a, 0x0a, 0x67, 0x55, 0x45, 0x41, 0x6e, 0x6c, 0x36, 0x2f, 0x66, 0x38, 0x55, 0x49, 0x6d, 0x4b, 0x49, 0x59, 0x4c, 0x45, 0x4a, 0x41, 0x73, 0x2f, 0x6c, 0x76, 0x4f, 0x43, 0x64, 0x4c, 0x54, 0x6f, 0x44, 0x30, 0x50, 0x59, 0x46, 0x48, 0x34, 0x49, 0x68, 0x38, 0x36, 0x68, 0x7a, 0x4f, 0x74, 0x58, 0x56, 0x63, 0x55, 0x53, 0x34, 0x63, 0x4b, 0x33, 0x38, 0x61, 0x63, 0x69, 0x6a, 0x6e, 0x41, 0x4c, 0x58, 0x52, 0x64, 0x4d, 0x62, 0x58, 0x35, 0x4a, 0x2b, 0x74, 0x42, 0x35, 0x4f, 0x32, 0x0a, 0x55, 0x7a, 0x55, 0x31, 0x2f, 0x44, 0x66, 0x6b, 0x77, 0x2f, 0x5a, 0x64, 0x46, 0x72, 0x34, 0x68, 0x63, 0x39, 0x36, 0x53, 0x43, 0x76, 0x69, 0x67, 0x59, 0x32, 0x71, 0x38, 0x6c, 0x70, 0x4a, 0x71, 0x50, 0x76, 0x69, 0x38, 0x5a, 0x56, 0x57, 0x62, 0x33, 0x76, 0x55, 0x4e, 0x69, 0x53, 0x59, 0x45, 0x2f, 0x43, 0x55, 0x61, 0x70, 0x69, 0x56, 0x70, 0x79, 0x38, 0x4a, 0x74, 0x79, 0x6e, 0x7a, 0x69, 0x57, 0x56, 0x2b, 0x58, 0x72, 0x4f, 0x76, 0x76, 0x4c, 0x73, 0x69, 0x38, 0x0a, 0x31, 0x78, 0x74, 0x5a, 0x50, 0x43, 0x76, 0x4d, 0x38, 0x68, 0x6e, 0x49, 0x6b, 0x32, 0x73, 0x6e, 0x59, 0x78, 0x6e, 0x50, 0x2f, 0x4f, 0x6b, 0x6d, 0x2b, 0x4d, 0x70, 0x78, 0x6d, 0x33, 0x2b, 0x54, 0x2f, 0x6a, 0x52, 0x6e, 0x68, 0x45, 0x36, 0x5a, 0x36, 0x2f, 0x79, 0x7a, 0x65, 0x41, 0x6b, 0x7a, 0x63, 0x4c, 0x70, 0x6d, 0x70, 0x6e, 0x62, 0x74, 0x47, 0x33, 0x50, 0x72, 0x47, 0x71, 0x55, 0x4e, 0x78, 0x43, 0x49, 0x54, 0x49, 0x4a, 0x52, 0x57, 0x43, 0x6b, 0x34, 0x73, 0x0a, 0x62, 0x45, 0x36, 0x78, 0x2f, 0x63, 0x2b, 0x63, 0x43, 0x62, 0x71, 0x69, 0x4d, 0x2b, 0x32, 0x48, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x59, 0x7a, 0x42, 0x68, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54, 0x64, 0x42, 0x41, 0x6b, 0x48, 0x6f, 0x76, 0x56, 0x36, 0x66, 0x56, 0x4a, 0x54, 0x45, 0x70, 0x4b, 0x56, 0x37, 0x6a, 0x69, 0x41, 0x4a, 0x51, 0x32, 0x6d, 0x57, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x77, 0x51, 0x59, 0x4d, 0x42, 0x61, 0x41, 0x46, 0x4e, 0x30, 0x45, 0x43, 0x51, 0x65, 0x69, 0x39, 0x58, 0x70, 0x39, 0x55, 0x6c, 0x4d, 0x53, 0x6b, 0x70, 0x58, 0x75, 0x4f, 0x49, 0x41, 0x6c, 0x44, 0x61, 0x5a, 0x5a, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x0a, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x49, 0x42, 0x67, 0x52, 0x6c, 0x43, 0x6e, 0x37, 0x4a, 0x70, 0x30, 0x63, 0x48, 0x68, 0x35, 0x77, 0x59, 0x66, 0x47, 0x56, 0x63, 0x70, 0x4e, 0x78, 0x4a, 0x4b, 0x31, 0x6f, 0x6b, 0x31, 0x69, 0x4f, 0x4d, 0x71, 0x38, 0x62, 0x73, 0x33, 0x41, 0x44, 0x2f, 0x43, 0x55, 0x72, 0x0a, 0x64, 0x49, 0x57, 0x51, 0x50, 0x58, 0x68, 0x71, 0x39, 0x4c, 0x6d, 0x4c, 0x70, 0x5a, 0x63, 0x37, 0x74, 0x52, 0x69, 0x52, 0x75, 0x78, 0x36, 0x6e, 0x2b, 0x55, 0x42, 0x62, 0x6b, 0x66, 0x6c, 0x56, 0x6d, 0x61, 0x38, 0x65, 0x45, 0x64, 0x42, 0x63, 0x48, 0x61, 0x64, 0x6d, 0x34, 0x37, 0x47, 0x55, 0x42, 0x77, 0x77, 0x79, 0x4f, 0x61, 0x62, 0x71, 0x47, 0x37, 0x42, 0x35, 0x32, 0x42, 0x32, 0x63, 0x63, 0x45, 0x54, 0x6a, 0x69, 0x74, 0x33, 0x45, 0x2b, 0x5a, 0x55, 0x66, 0x0a, 0x69, 0x6a, 0x68, 0x44, 0x50, 0x77, 0x47, 0x46, 0x70, 0x55, 0x65, 0x6e, 0x50, 0x55, 0x61, 0x79, 0x76, 0x4f, 0x55, 0x69, 0x61, 0x50, 0x64, 0x37, 0x6e, 0x4e, 0x67, 0x73, 0x50, 0x67, 0x6f, 0x68, 0x79, 0x43, 0x30, 0x7a, 0x72, 0x4c, 0x2f, 0x46, 0x67, 0x5a, 0x6b, 0x78, 0x64, 0x4d, 0x46, 0x31, 0x63, 0x63, 0x57, 0x2b, 0x73, 0x66, 0x41, 0x6a, 0x52, 0x66, 0x53, 0x64, 0x61, 0x2f, 0x77, 0x5a, 0x59, 0x35, 0x32, 0x6a, 0x76, 0x41, 0x54, 0x47, 0x47, 0x41, 0x73, 0x6c, 0x0a, 0x75, 0x31, 0x4f, 0x4a, 0x44, 0x37, 0x4f, 0x41, 0x55, 0x4e, 0x35, 0x46, 0x37, 0x6b, 0x52, 0x2f, 0x71, 0x35, 0x52, 0x34, 0x5a, 0x4a, 0x6a, 0x54, 0x39, 0x69, 0x6a, 0x64, 0x68, 0x39, 0x68, 0x77, 0x5a, 0x58, 0x54, 0x37, 0x44, 0x72, 0x6b, 0x54, 0x36, 0x36, 0x63, 0x50, 0x59, 0x61, 0x6b, 0x79, 0x6c, 0x73, 0x7a, 0x65, 0x75, 0x2b, 0x31, 0x6a, 0x54, 0x42, 0x69, 0x37, 0x71, 0x55, 0x44, 0x33, 0x6f, 0x46, 0x52, 0x75, 0x49, 0x49, 0x68, 0x78, 0x64, 0x52, 0x6a, 0x71, 0x0a, 0x65, 0x72, 0x51, 0x30, 0x63, 0x75, 0x41, 0x6a, 0x4a, 0x33, 0x64, 0x63, 0x74, 0x70, 0x44, 0x71, 0x68, 0x69, 0x56, 0x41, 0x71, 0x2b, 0x38, 0x7a, 0x44, 0x38, 0x75, 0x66, 0x67, 0x72, 0x36, 0x69, 0x49, 0x50, 0x76, 0x32, 0x74, 0x53, 0x30, 0x61, 0x35, 0x73, 0x4b, 0x46, 0x73, 0x58, 0x51, 0x50, 0x2b, 0x38, 0x68, 0x6c, 0x41, 0x71, 0x52, 0x53, 0x41, 0x55, 0x66, 0x64, 0x53, 0x53, 0x4c, 0x42, 0x76, 0x39, 0x6a, 0x72, 0x61, 0x36, 0x78, 0x2b, 0x33, 0x75, 0x78, 0x6a, 0x0a, 0x4d, 0x78, 0x57, 0x33, 0x49, 0x77, 0x69, 0x50, 0x78, 0x67, 0x2b, 0x4e, 0x51, 0x56, 0x72, 0x64, 0x6a, 0x73, 0x57, 0x35, 0x6a, 0x2b, 0x56, 0x46, 0x50, 0x33, 0x6a, 0x62, 0x75, 0x74, 0x49, 0x62, 0x51, 0x4c, 0x48, 0x2b, 0x63, 0x55, 0x30, 0x2f, 0x34, 0x49, 0x47, 0x69, 0x75, 0x6c, 0x36, 0x30, 0x37, 0x42, 0x58, 0x67, 0x6b, 0x39, 0x30, 0x49, 0x48, 0x33, 0x37, 0x68, 0x56, 0x5a, 0x6b, 0x4c, 0x49, 0x64, 0x36, 0x54, 0x6e, 0x67, 0x72, 0x37, 0x35, 0x71, 0x4e, 0x4a, 0x0a, 0x76, 0x54, 0x59, 0x77, 0x2f, 0x75, 0x64, 0x33, 0x73, 0x71, 0x42, 0x31, 0x6c, 0x37, 0x55, 0x74, 0x67, 0x59, 0x67, 0x58, 0x5a, 0x53, 0x44, 0x33, 0x32, 0x70, 0x41, 0x41, 0x6e, 0x38, 0x6c, 0x53, 0x7a, 0x44, 0x4c, 0x4b, 0x4e, 0x58, 0x7a, 0x31, 0x50, 0x51, 0x2f, 0x59, 0x4b, 0x39, 0x66, 0x31, 0x4a, 0x6d, 0x7a, 0x4a, 0x42, 0x6a, 0x53, 0x57, 0x46, 0x75, 0x70, 0x77, 0x57, 0x52, 0x6f, 0x79, 0x65, 0x58, 0x6b, 0x4c, 0x74, 0x6f, 0x68, 0x2f, 0x44, 0x31, 0x4a, 0x49, 0x0a, 0x50, 0x62, 0x39, 0x73, 0x32, 0x4b, 0x4a, 0x45, 0x4c, 0x74, 0x46, 0x4f, 0x74, 0x33, 0x4a, 0x59, 0x30, 0x34, 0x6b, 0x54, 0x6c, 0x66, 0x35, 0x45, 0x71, 0x2f, 0x6a, 0x58, 0x69, 0x78, 0x74, 0x75, 0x6e, 0x4c, 0x77, 0x73, 0x6f, 0x46, 0x76, 0x56, 0x61, 0x67, 0x43, 0x76, 0x58, 0x7a, 0x66, 0x68, 0x31, 0x66, 0x6f, 0x51, 0x43, 0x35, 0x69, 0x63, 0x68, 0x75, 0x63, 0x6d, 0x6a, 0x38, 0x37, 0x77, 0x37, 0x47, 0x36, 0x4b, 0x56, 0x77, 0x75, 0x41, 0x34, 0x30, 0x36, 0x79, 0x0a, 0x77, 0x4b, 0x42, 0x6a, 0x59, 0x5a, 0x43, 0x36, 0x56, 0x57, 0x67, 0x33, 0x64, 0x47, 0x71, 0x32, 0x6b, 0x74, 0x75, 0x66, 0x6f, 0x59, 0x59, 0x69, 0x74, 0x6d, 0x55, 0x6e, 0x44, 0x75, 0x79, 0x32, 0x6e, 0x30, 0x4a, 0x67, 0x35, 0x47, 0x66, 0x43, 0x74, 0x64, 0x70, 0x42, 0x43, 0x38, 0x54, 0x54, 0x69, 0x32, 0x45, 0x62, 0x76, 0x50, 0x6f, 0x66, 0x6b, 0x53, 0x76, 0x58, 0x52, 0x41, 0x64, 0x65, 0x75, 0x69, 0x6d, 0x73, 0x32, 0x63, 0x58, 0x70, 0x37, 0x31, 0x4e, 0x49, 0x0a, 0x57, 0x75, 0x75, 0x41, 0x38, 0x53, 0x68, 0x59, 0x49, 0x63, 0x32, 0x77, 0x42, 0x6c, 0x58, 0x37, 0x4a, 0x7a, 0x39, 0x54, 0x6b, 0x48, 0x43, 0x70, 0x42, 0x42, 0x35, 0x58, 0x4a, 0x37, 0x6b, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x53, 0x4c, 0x2e, 0x63, 0x6f, 0x6d, 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, 0x45, 0x43, 0x43, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x6a, 0x54, 0x43, 0x43, 0x41, 0x68, 0x53, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x64, 0x65, 0x62, 0x66, 0x79, 0x38, 0x46, 0x6f, 0x57, 0x36, 0x67, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x49, 0x77, 0x66, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x44, 0x6a, 0x41, 0x4d, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x67, 0x4d, 0x42, 0x56, 0x52, 0x6c, 0x65, 0x47, 0x46, 0x7a, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x44, 0x41, 0x64, 0x49, 0x62, 0x33, 0x56, 0x7a, 0x64, 0x47, 0x39, 0x75, 0x4d, 0x52, 0x67, 0x77, 0x46, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x39, 0x54, 0x55, 0x30, 0x77, 0x67, 0x51, 0x32, 0x39, 0x79, 0x63, 0x47, 0x39, 0x79, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x78, 0x4d, 0x54, 0x41, 0x76, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x4b, 0x46, 0x4e, 0x54, 0x54, 0x43, 0x35, 0x6a, 0x62, 0x32, 0x30, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x59, 0x77, 0x4d, 0x6a, 0x45, 0x79, 0x0a, 0x4d, 0x54, 0x67, 0x78, 0x4e, 0x44, 0x41, 0x7a, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x45, 0x77, 0x4d, 0x6a, 0x45, 0x79, 0x4d, 0x54, 0x67, 0x78, 0x4e, 0x44, 0x41, 0x7a, 0x57, 0x6a, 0x42, 0x38, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x4f, 0x4d, 0x41, 0x77, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x41, 0x77, 0x46, 0x56, 0x47, 0x56, 0x34, 0x59, 0x58, 0x4d, 0x78, 0x45, 0x44, 0x41, 0x4f, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x4d, 0x42, 0x30, 0x68, 0x76, 0x64, 0x58, 0x4e, 0x30, 0x62, 0x32, 0x34, 0x78, 0x47, 0x44, 0x41, 0x57, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x44, 0x31, 0x4e, 0x54, 0x54, 0x43, 0x42, 0x44, 0x62, 0x33, 0x4a, 0x77, 0x62, 0x33, 0x4a, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6a, 0x45, 0x78, 0x4d, 0x43, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x6f, 0x55, 0x31, 0x4e, 0x4d, 0x4c, 0x6d, 0x4e, 0x76, 0x0a, 0x62, 0x53, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x45, 0x56, 0x44, 0x51, 0x7a, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x0a, 0x42, 0x45, 0x56, 0x75, 0x71, 0x56, 0x44, 0x45, 0x70, 0x69, 0x4d, 0x32, 0x6e, 0x6c, 0x38, 0x6f, 0x6a, 0x52, 0x66, 0x4c, 0x6c, 0x69, 0x4a, 0x6b, 0x50, 0x39, 0x78, 0x36, 0x6a, 0x68, 0x33, 0x4d, 0x43, 0x4c, 0x4f, 0x69, 0x63, 0x53, 0x53, 0x36, 0x6a, 0x6b, 0x6d, 0x35, 0x42, 0x42, 0x74, 0x48, 0x6c, 0x6c, 0x69, 0x72, 0x4c, 0x5a, 0x58, 0x49, 0x37, 0x5a, 0x34, 0x49, 0x4e, 0x63, 0x67, 0x6e, 0x36, 0x34, 0x6d, 0x4d, 0x55, 0x31, 0x6a, 0x72, 0x59, 0x6f, 0x72, 0x2b, 0x0a, 0x38, 0x46, 0x73, 0x50, 0x61, 0x7a, 0x46, 0x53, 0x59, 0x30, 0x45, 0x37, 0x69, 0x63, 0x33, 0x73, 0x37, 0x4c, 0x61, 0x4e, 0x47, 0x64, 0x4d, 0x30, 0x42, 0x39, 0x79, 0x37, 0x78, 0x67, 0x5a, 0x2f, 0x77, 0x6b, 0x57, 0x56, 0x37, 0x4d, 0x74, 0x2f, 0x71, 0x43, 0x50, 0x67, 0x43, 0x65, 0x6d, 0x42, 0x2b, 0x76, 0x4e, 0x48, 0x30, 0x36, 0x4e, 0x6a, 0x4d, 0x47, 0x45, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x49, 0x4c, 0x52, 0x0a, 0x68, 0x58, 0x4d, 0x77, 0x35, 0x7a, 0x55, 0x45, 0x30, 0x34, 0x34, 0x43, 0x6b, 0x76, 0x76, 0x6c, 0x70, 0x4e, 0x48, 0x45, 0x49, 0x65, 0x6a, 0x4e, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6a, 0x42, 0x42, 0x67, 0x77, 0x46, 0x6f, 0x41, 0x55, 0x67, 0x74, 0x47, 0x46, 0x63, 0x7a, 0x44, 0x6e, 0x4e, 0x51, 0x54, 0x54, 0x0a, 0x6a, 0x67, 0x4b, 0x53, 0x2b, 0x2b, 0x57, 0x6b, 0x30, 0x63, 0x51, 0x68, 0x36, 0x4d, 0x30, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x32, 0x63, 0x41, 0x4d, 0x47, 0x51, 0x43, 0x4d, 0x47, 0x2f, 0x6e, 0x36, 0x31, 0x6b, 0x52, 0x70, 0x47, 0x44, 0x50, 0x59, 0x62, 0x43, 0x57, 0x0a, 0x65, 0x2b, 0x30, 0x46, 0x2b, 0x53, 0x38, 0x54, 0x6b, 0x64, 0x7a, 0x74, 0x35, 0x66, 0x78, 0x51, 0x61, 0x78, 0x46, 0x47, 0x52, 0x72, 0x4d, 0x63, 0x49, 0x51, 0x42, 0x69, 0x75, 0x37, 0x37, 0x44, 0x35, 0x2b, 0x6a, 0x4e, 0x42, 0x35, 0x6e, 0x35, 0x44, 0x51, 0x74, 0x64, 0x63, 0x6a, 0x37, 0x45, 0x71, 0x67, 0x49, 0x77, 0x48, 0x37, 0x79, 0x36, 0x43, 0x2b, 0x49, 0x77, 0x4a, 0x50, 0x74, 0x38, 0x62, 0x59, 0x42, 0x56, 0x43, 0x70, 0x6b, 0x2b, 0x67, 0x41, 0x30, 0x7a, 0x0a, 0x35, 0x57, 0x61, 0x6a, 0x73, 0x36, 0x4f, 0x37, 0x70, 0x64, 0x57, 0x4c, 0x6a, 0x77, 0x6b, 0x73, 0x70, 0x6c, 0x31, 0x2b, 0x34, 0x76, 0x41, 0x48, 0x43, 0x47, 0x68, 0x74, 0x30, 0x6e, 0x78, 0x70, 0x62, 0x6c, 0x2f, 0x66, 0x35, 0x57, 0x70, 0x6c, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x53, 0x4c, 0x2e, 0x63, 0x6f, 0x6d, 0x20, 0x45, 0x56, 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, 0x52, 0x53, 0x41, 0x20, 0x52, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x36, 0x7a, 0x43, 0x43, 0x41, 0x39, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x56, 0x72, 0x59, 0x70, 0x7a, 0x54, 0x53, 0x38, 0x65, 0x50, 0x59, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x67, 0x59, 0x49, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x51, 0x34, 0x77, 0x0a, 0x44, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x49, 0x44, 0x41, 0x56, 0x55, 0x5a, 0x58, 0x68, 0x68, 0x63, 0x7a, 0x45, 0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x77, 0x77, 0x48, 0x53, 0x47, 0x39, 0x31, 0x63, 0x33, 0x52, 0x76, 0x62, 0x6a, 0x45, 0x59, 0x4d, 0x42, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x50, 0x55, 0x31, 0x4e, 0x4d, 0x49, 0x45, 0x4e, 0x76, 0x63, 0x6e, 0x42, 0x76, 0x63, 0x6d, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x0a, 0x4d, 0x54, 0x63, 0x77, 0x4e, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x43, 0x35, 0x54, 0x55, 0x30, 0x77, 0x75, 0x59, 0x32, 0x39, 0x74, 0x49, 0x45, 0x56, 0x57, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x55, 0x6c, 0x4e, 0x42, 0x49, 0x46, 0x49, 0x79, 0x0a, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x33, 0x4d, 0x44, 0x55, 0x7a, 0x4d, 0x54, 0x45, 0x34, 0x4d, 0x54, 0x51, 0x7a, 0x4e, 0x31, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x79, 0x4d, 0x44, 0x55, 0x7a, 0x4d, 0x44, 0x45, 0x34, 0x4d, 0x54, 0x51, 0x7a, 0x4e, 0x31, 0x6f, 0x77, 0x67, 0x59, 0x49, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x51, 0x34, 0x77, 0x44, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x49, 0x0a, 0x44, 0x41, 0x56, 0x55, 0x5a, 0x58, 0x68, 0x68, 0x63, 0x7a, 0x45, 0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x77, 0x77, 0x48, 0x53, 0x47, 0x39, 0x31, 0x63, 0x33, 0x52, 0x76, 0x62, 0x6a, 0x45, 0x59, 0x4d, 0x42, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x50, 0x55, 0x31, 0x4e, 0x4d, 0x49, 0x45, 0x4e, 0x76, 0x63, 0x6e, 0x42, 0x76, 0x63, 0x6d, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x4d, 0x54, 0x63, 0x77, 0x4e, 0x51, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x44, 0x44, 0x43, 0x35, 0x54, 0x55, 0x30, 0x77, 0x75, 0x59, 0x32, 0x39, 0x74, 0x49, 0x45, 0x56, 0x57, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x55, 0x6c, 0x4e, 0x42, 0x49, 0x46, 0x49, 0x79, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x6a, 0x41, 0x4e, 0x0a, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x45, 0x41, 0x6a, 0x7a, 0x5a, 0x6c, 0x51, 0x4f, 0x48, 0x57, 0x54, 0x63, 0x44, 0x58, 0x74, 0x4f, 0x6c, 0x47, 0x32, 0x6d, 0x76, 0x71, 0x4d, 0x30, 0x66, 0x4e, 0x54, 0x50, 0x6c, 0x39, 0x66, 0x62, 0x36, 0x39, 0x4c, 0x54, 0x33, 0x77, 0x32, 0x33, 0x6a, 0x68, 0x0a, 0x68, 0x71, 0x58, 0x5a, 0x75, 0x67, 0x6c, 0x58, 0x61, 0x4f, 0x31, 0x58, 0x50, 0x71, 0x44, 0x51, 0x43, 0x45, 0x47, 0x44, 0x35, 0x79, 0x68, 0x42, 0x4a, 0x42, 0x2f, 0x6a, 0x63, 0x68, 0x58, 0x51, 0x41, 0x52, 0x72, 0x37, 0x58, 0x6e, 0x41, 0x6a, 0x73, 0x73, 0x75, 0x66, 0x4f, 0x65, 0x50, 0x50, 0x78, 0x55, 0x37, 0x47, 0x6b, 0x6d, 0x30, 0x6d, 0x78, 0x6e, 0x75, 0x37, 0x73, 0x39, 0x6f, 0x6e, 0x6e, 0x51, 0x71, 0x47, 0x36, 0x59, 0x45, 0x33, 0x42, 0x66, 0x37, 0x77, 0x0a, 0x63, 0x58, 0x48, 0x73, 0x77, 0x78, 0x7a, 0x70, 0x59, 0x36, 0x49, 0x58, 0x46, 0x4a, 0x33, 0x76, 0x47, 0x32, 0x66, 0x54, 0x68, 0x56, 0x55, 0x43, 0x41, 0x74, 0x5a, 0x4a, 0x79, 0x63, 0x78, 0x61, 0x34, 0x62, 0x48, 0x33, 0x62, 0x7a, 0x4b, 0x66, 0x79, 0x64, 0x51, 0x37, 0x69, 0x45, 0x47, 0x6f, 0x6e, 0x4c, 0x33, 0x4c, 0x71, 0x39, 0x74, 0x74, 0x65, 0x77, 0x6b, 0x66, 0x6f, 0x6b, 0x78, 0x79, 0x6b, 0x4e, 0x6f, 0x72, 0x43, 0x50, 0x7a, 0x50, 0x50, 0x46, 0x54, 0x4f, 0x0a, 0x5a, 0x77, 0x2b, 0x6f, 0x7a, 0x31, 0x32, 0x57, 0x47, 0x51, 0x76, 0x45, 0x34, 0x33, 0x4c, 0x72, 0x72, 0x64, 0x46, 0x39, 0x48, 0x53, 0x66, 0x76, 0x6b, 0x75, 0x73, 0x51, 0x76, 0x31, 0x76, 0x72, 0x4f, 0x36, 0x2f, 0x50, 0x67, 0x4e, 0x33, 0x42, 0x30, 0x70, 0x59, 0x45, 0x57, 0x33, 0x70, 0x2b, 0x70, 0x4b, 0x6b, 0x38, 0x4f, 0x48, 0x61, 0x6b, 0x59, 0x6f, 0x36, 0x67, 0x4f, 0x56, 0x37, 0x71, 0x64, 0x38, 0x39, 0x64, 0x41, 0x46, 0x6d, 0x50, 0x5a, 0x69, 0x77, 0x2b, 0x0a, 0x42, 0x36, 0x4b, 0x6a, 0x42, 0x53, 0x59, 0x52, 0x61, 0x5a, 0x66, 0x71, 0x68, 0x62, 0x63, 0x50, 0x6c, 0x67, 0x74, 0x4c, 0x79, 0x45, 0x44, 0x68, 0x55, 0x4c, 0x6f, 0x75, 0x69, 0x73, 0x76, 0x33, 0x44, 0x35, 0x6f, 0x69, 0x35, 0x33, 0x2b, 0x61, 0x4e, 0x78, 0x50, 0x4e, 0x38, 0x6b, 0x30, 0x54, 0x61, 0x79, 0x48, 0x52, 0x77, 0x4d, 0x77, 0x69, 0x38, 0x71, 0x46, 0x47, 0x39, 0x6b, 0x52, 0x70, 0x6e, 0x4d, 0x70, 0x68, 0x4e, 0x51, 0x63, 0x41, 0x62, 0x39, 0x5a, 0x68, 0x0a, 0x43, 0x42, 0x48, 0x71, 0x75, 0x72, 0x6a, 0x32, 0x36, 0x62, 0x4e, 0x67, 0x35, 0x55, 0x32, 0x35, 0x37, 0x4a, 0x38, 0x55, 0x5a, 0x73, 0x6c, 0x58, 0x57, 0x4e, 0x76, 0x4e, 0x68, 0x32, 0x6e, 0x34, 0x69, 0x6f, 0x59, 0x53, 0x41, 0x30, 0x65, 0x2f, 0x5a, 0x68, 0x4e, 0x32, 0x72, 0x48, 0x64, 0x39, 0x4e, 0x43, 0x53, 0x46, 0x67, 0x38, 0x33, 0x58, 0x71, 0x70, 0x79, 0x51, 0x47, 0x70, 0x38, 0x68, 0x4c, 0x48, 0x39, 0x34, 0x74, 0x32, 0x53, 0x34, 0x32, 0x4f, 0x69, 0x6d, 0x0a, 0x39, 0x48, 0x69, 0x7a, 0x56, 0x63, 0x75, 0x45, 0x30, 0x6a, 0x4c, 0x45, 0x65, 0x4b, 0x36, 0x6a, 0x6a, 0x32, 0x48, 0x64, 0x7a, 0x67, 0x68, 0x54, 0x72, 0x65, 0x79, 0x49, 0x2f, 0x42, 0x58, 0x6b, 0x6d, 0x67, 0x33, 0x6d, 0x6e, 0x78, 0x70, 0x33, 0x7a, 0x6b, 0x79, 0x50, 0x75, 0x42, 0x51, 0x56, 0x50, 0x57, 0x4b, 0x63, 0x68, 0x6a, 0x67, 0x47, 0x41, 0x47, 0x59, 0x53, 0x35, 0x46, 0x6c, 0x32, 0x57, 0x6c, 0x50, 0x41, 0x41, 0x70, 0x69, 0x69, 0x45, 0x43, 0x74, 0x6f, 0x0a, 0x52, 0x48, 0x75, 0x4f, 0x65, 0x63, 0x34, 0x7a, 0x53, 0x6e, 0x61, 0x71, 0x57, 0x34, 0x45, 0x57, 0x47, 0x37, 0x57, 0x4b, 0x32, 0x4e, 0x41, 0x41, 0x65, 0x31, 0x35, 0x69, 0x74, 0x41, 0x6e, 0x57, 0x68, 0x6d, 0x4d, 0x4f, 0x70, 0x67, 0x57, 0x56, 0x53, 0x62, 0x6f, 0x6f, 0x69, 0x34, 0x69, 0x54, 0x73, 0x6a, 0x51, 0x63, 0x32, 0x4b, 0x52, 0x56, 0x62, 0x72, 0x63, 0x63, 0x30, 0x4e, 0x36, 0x5a, 0x56, 0x54, 0x73, 0x6a, 0x39, 0x43, 0x4c, 0x67, 0x2b, 0x53, 0x6c, 0x6d, 0x0a, 0x4a, 0x75, 0x77, 0x67, 0x55, 0x48, 0x66, 0x62, 0x53, 0x67, 0x75, 0x50, 0x76, 0x75, 0x55, 0x43, 0x59, 0x48, 0x42, 0x42, 0x58, 0x74, 0x53, 0x75, 0x55, 0x44, 0x6b, 0x69, 0x46, 0x43, 0x62, 0x4c, 0x73, 0x6a, 0x74, 0x7a, 0x64, 0x46, 0x56, 0x48, 0x42, 0x33, 0x6d, 0x42, 0x4f, 0x61, 0x67, 0x77, 0x45, 0x30, 0x54, 0x6c, 0x42, 0x49, 0x71, 0x75, 0x6c, 0x68, 0x4d, 0x6c, 0x51, 0x67, 0x2b, 0x35, 0x55, 0x38, 0x53, 0x62, 0x2f, 0x4d, 0x33, 0x6b, 0x48, 0x4e, 0x34, 0x38, 0x0a, 0x2b, 0x71, 0x76, 0x57, 0x42, 0x6b, 0x6f, 0x66, 0x5a, 0x36, 0x61, 0x59, 0x4d, 0x42, 0x7a, 0x64, 0x4c, 0x4e, 0x76, 0x63, 0x47, 0x4a, 0x56, 0x58, 0x5a, 0x73, 0x62, 0x2f, 0x58, 0x49, 0x74, 0x57, 0x39, 0x58, 0x63, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x6a, 0x4d, 0x47, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x53, 0x4d, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x54, 0x35, 0x59, 0x4c, 0x76, 0x55, 0x34, 0x39, 0x55, 0x30, 0x39, 0x72, 0x6a, 0x31, 0x42, 0x6f, 0x41, 0x6c, 0x70, 0x33, 0x50, 0x62, 0x52, 0x6d, 0x6d, 0x6f, 0x6e, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x2b, 0x57, 0x43, 0x37, 0x31, 0x4f, 0x50, 0x56, 0x4e, 0x50, 0x61, 0x34, 0x39, 0x51, 0x61, 0x41, 0x4a, 0x61, 0x64, 0x7a, 0x32, 0x30, 0x5a, 0x70, 0x0a, 0x71, 0x4a, 0x34, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x41, 0x51, 0x42, 0x57, 0x73, 0x34, 0x37, 0x4c, 0x43, 0x70, 0x31, 0x4a, 0x6a, 0x72, 0x2b, 0x6b, 0x78, 0x4a, 0x47, 0x37, 0x5a, 0x68, 0x63, 0x46, 0x55, 0x5a, 0x68, 0x31, 0x0a, 0x2b, 0x2b, 0x56, 0x51, 0x4c, 0x48, 0x71, 0x65, 0x38, 0x52, 0x54, 0x36, 0x71, 0x39, 0x4f, 0x4b, 0x50, 0x76, 0x2b, 0x52, 0x4b, 0x59, 0x39, 0x6a, 0x69, 0x39, 0x69, 0x30, 0x71, 0x56, 0x51, 0x42, 0x44, 0x62, 0x36, 0x54, 0x68, 0x69, 0x2f, 0x35, 0x53, 0x6d, 0x33, 0x48, 0x58, 0x76, 0x56, 0x58, 0x2b, 0x63, 0x70, 0x56, 0x48, 0x42, 0x4b, 0x2b, 0x52, 0x77, 0x38, 0x32, 0x78, 0x64, 0x39, 0x71, 0x74, 0x39, 0x74, 0x31, 0x77, 0x6b, 0x63, 0x6c, 0x66, 0x37, 0x6e, 0x78, 0x0a, 0x59, 0x2f, 0x68, 0x6f, 0x4c, 0x56, 0x55, 0x45, 0x30, 0x66, 0x4b, 0x4e, 0x73, 0x4b, 0x54, 0x50, 0x76, 0x44, 0x78, 0x65, 0x48, 0x33, 0x6a, 0x6e, 0x70, 0x61, 0x41, 0x67, 0x63, 0x4c, 0x41, 0x45, 0x78, 0x62, 0x66, 0x33, 0x63, 0x71, 0x66, 0x65, 0x49, 0x67, 0x32, 0x39, 0x4d, 0x79, 0x56, 0x47, 0x6a, 0x47, 0x53, 0x53, 0x4a, 0x75, 0x4d, 0x2b, 0x4c, 0x6d, 0x4f, 0x57, 0x32, 0x70, 0x75, 0x4d, 0x50, 0x66, 0x67, 0x59, 0x43, 0x64, 0x63, 0x44, 0x7a, 0x48, 0x32, 0x47, 0x0a, 0x67, 0x75, 0x44, 0x4b, 0x42, 0x41, 0x64, 0x52, 0x55, 0x4e, 0x66, 0x2f, 0x6b, 0x74, 0x55, 0x4d, 0x37, 0x39, 0x71, 0x47, 0x6e, 0x35, 0x6e, 0x58, 0x36, 0x37, 0x65, 0x76, 0x61, 0x4f, 0x49, 0x35, 0x4a, 0x70, 0x53, 0x36, 0x61, 0x4c, 0x65, 0x2f, 0x67, 0x39, 0x50, 0x71, 0x65, 0x6d, 0x63, 0x39, 0x59, 0x6d, 0x65, 0x75, 0x4a, 0x65, 0x56, 0x79, 0x36, 0x4f, 0x4c, 0x6b, 0x37, 0x4b, 0x34, 0x53, 0x39, 0x6b, 0x73, 0x72, 0x50, 0x4a, 0x2f, 0x70, 0x73, 0x45, 0x44, 0x7a, 0x0a, 0x4f, 0x46, 0x53, 0x7a, 0x2f, 0x62, 0x64, 0x6f, 0x79, 0x4e, 0x72, 0x47, 0x6a, 0x31, 0x45, 0x38, 0x73, 0x76, 0x75, 0x52, 0x33, 0x42, 0x7a, 0x6e, 0x6d, 0x35, 0x33, 0x68, 0x74, 0x77, 0x31, 0x79, 0x6a, 0x2b, 0x4b, 0x6b, 0x78, 0x4b, 0x6c, 0x34, 0x2b, 0x65, 0x73, 0x55, 0x72, 0x4d, 0x5a, 0x44, 0x42, 0x63, 0x4a, 0x6c, 0x4f, 0x53, 0x67, 0x59, 0x41, 0x73, 0x4f, 0x43, 0x73, 0x70, 0x30, 0x46, 0x76, 0x6d, 0x58, 0x74, 0x6c, 0x6c, 0x39, 0x6c, 0x64, 0x44, 0x7a, 0x37, 0x0a, 0x43, 0x54, 0x55, 0x75, 0x65, 0x35, 0x77, 0x54, 0x2f, 0x52, 0x73, 0x50, 0x58, 0x63, 0x64, 0x74, 0x67, 0x54, 0x70, 0x57, 0x44, 0x38, 0x77, 0x37, 0x34, 0x61, 0x38, 0x43, 0x4c, 0x79, 0x4b, 0x73, 0x52, 0x73, 0x70, 0x47, 0x50, 0x4b, 0x41, 0x63, 0x54, 0x4e, 0x5a, 0x45, 0x74, 0x46, 0x34, 0x75, 0x58, 0x42, 0x56, 0x6d, 0x43, 0x65, 0x45, 0x6d, 0x4b, 0x66, 0x37, 0x47, 0x55, 0x6d, 0x47, 0x36, 0x73, 0x58, 0x50, 0x2f, 0x77, 0x77, 0x79, 0x63, 0x35, 0x57, 0x78, 0x71, 0x0a, 0x6c, 0x44, 0x38, 0x55, 0x79, 0x6b, 0x41, 0x57, 0x6c, 0x59, 0x54, 0x7a, 0x57, 0x61, 0x6d, 0x73, 0x58, 0x30, 0x78, 0x68, 0x6b, 0x32, 0x33, 0x52, 0x4f, 0x38, 0x79, 0x69, 0x6c, 0x51, 0x77, 0x69, 0x70, 0x6d, 0x64, 0x6e, 0x52, 0x43, 0x36, 0x35, 0x32, 0x64, 0x4b, 0x4b, 0x51, 0x62, 0x4e, 0x6d, 0x43, 0x31, 0x72, 0x37, 0x66, 0x53, 0x4f, 0x6c, 0x38, 0x68, 0x71, 0x77, 0x2f, 0x39, 0x36, 0x62, 0x67, 0x35, 0x51, 0x75, 0x30, 0x54, 0x2f, 0x66, 0x6b, 0x72, 0x65, 0x52, 0x0a, 0x72, 0x77, 0x55, 0x37, 0x5a, 0x63, 0x65, 0x67, 0x62, 0x4c, 0x48, 0x4e, 0x59, 0x68, 0x4c, 0x44, 0x6b, 0x42, 0x76, 0x6a, 0x4a, 0x63, 0x34, 0x30, 0x76, 0x47, 0x39, 0x33, 0x64, 0x72, 0x45, 0x51, 0x77, 0x2f, 0x63, 0x46, 0x47, 0x73, 0x44, 0x57, 0x72, 0x33, 0x52, 0x69, 0x53, 0x42, 0x64, 0x33, 0x6b, 0x6d, 0x6d, 0x51, 0x59, 0x52, 0x7a, 0x65, 0x6c, 0x59, 0x42, 0x30, 0x56, 0x49, 0x38, 0x59, 0x48, 0x4d, 0x50, 0x7a, 0x41, 0x39, 0x43, 0x2f, 0x70, 0x45, 0x4e, 0x31, 0x0a, 0x68, 0x6c, 0x4d, 0x59, 0x65, 0x67, 0x6f, 0x75, 0x43, 0x52, 0x77, 0x32, 0x6e, 0x35, 0x48, 0x39, 0x67, 0x6f, 0x6f, 0x69, 0x53, 0x39, 0x45, 0x4f, 0x55, 0x43, 0x58, 0x64, 0x79, 0x77, 0x4d, 0x4d, 0x46, 0x38, 0x6d, 0x44, 0x41, 0x41, 0x68, 0x4f, 0x4e, 0x55, 0x32, 0x4b, 0x69, 0x2b, 0x33, 0x77, 0x41, 0x70, 0x52, 0x6d, 0x4c, 0x45, 0x52, 0x2f, 0x79, 0x35, 0x55, 0x6e, 0x6c, 0x68, 0x65, 0x74, 0x43, 0x54, 0x43, 0x73, 0x74, 0x6e, 0x45, 0x58, 0x62, 0x6f, 0x73, 0x58, 0x0a, 0x39, 0x68, 0x77, 0x4a, 0x31, 0x43, 0x30, 0x37, 0x6d, 0x4b, 0x56, 0x78, 0x30, 0x31, 0x51, 0x54, 0x32, 0x57, 0x44, 0x7a, 0x39, 0x55, 0x74, 0x6d, 0x54, 0x2f, 0x72, 0x78, 0x37, 0x69, 0x41, 0x53, 0x6a, 0x62, 0x53, 0x73, 0x56, 0x37, 0x46, 0x46, 0x59, 0x36, 0x47, 0x73, 0x64, 0x71, 0x6e, 0x43, 0x2b, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x53, 0x4c, 0x2e, 0x63, 0x6f, 0x6d, 0x20, 0x45, 0x56, 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, 0x45, 0x43, 0x43, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x6c, 0x44, 0x43, 0x43, 0x41, 0x68, 0x71, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x4c, 0x43, 0x6d, 0x63, 0x57, 0x78, 0x62, 0x74, 0x42, 0x5a, 0x55, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x49, 0x77, 0x66, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x44, 0x6a, 0x41, 0x4d, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x67, 0x4d, 0x42, 0x56, 0x52, 0x6c, 0x65, 0x47, 0x46, 0x7a, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x44, 0x41, 0x64, 0x49, 0x62, 0x33, 0x56, 0x7a, 0x64, 0x47, 0x39, 0x75, 0x4d, 0x52, 0x67, 0x77, 0x46, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x39, 0x54, 0x55, 0x30, 0x77, 0x67, 0x51, 0x32, 0x39, 0x79, 0x63, 0x47, 0x39, 0x79, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x78, 0x4e, 0x44, 0x41, 0x79, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x4b, 0x31, 0x4e, 0x54, 0x54, 0x43, 0x35, 0x6a, 0x62, 0x32, 0x30, 0x67, 0x52, 0x56, 0x59, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x59, 0x77, 0x0a, 0x4d, 0x6a, 0x45, 0x79, 0x4d, 0x54, 0x67, 0x78, 0x4e, 0x54, 0x49, 0x7a, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x45, 0x77, 0x4d, 0x6a, 0x45, 0x79, 0x4d, 0x54, 0x67, 0x78, 0x4e, 0x54, 0x49, 0x7a, 0x57, 0x6a, 0x42, 0x2f, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x4f, 0x4d, 0x41, 0x77, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x41, 0x77, 0x46, 0x56, 0x47, 0x56, 0x34, 0x59, 0x58, 0x4d, 0x78, 0x0a, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x4d, 0x42, 0x30, 0x68, 0x76, 0x64, 0x58, 0x4e, 0x30, 0x62, 0x32, 0x34, 0x78, 0x47, 0x44, 0x41, 0x57, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x44, 0x31, 0x4e, 0x54, 0x54, 0x43, 0x42, 0x44, 0x62, 0x33, 0x4a, 0x77, 0x62, 0x33, 0x4a, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6a, 0x45, 0x30, 0x4d, 0x44, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x72, 0x55, 0x31, 0x4e, 0x4d, 0x0a, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x53, 0x42, 0x46, 0x56, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x45, 0x56, 0x44, 0x51, 0x7a, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x0a, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x4b, 0x6f, 0x53, 0x52, 0x35, 0x43, 0x59, 0x47, 0x2f, 0x76, 0x76, 0x77, 0x30, 0x41, 0x48, 0x67, 0x79, 0x42, 0x4f, 0x38, 0x54, 0x43, 0x43, 0x6f, 0x67, 0x62, 0x52, 0x38, 0x70, 0x4b, 0x47, 0x59, 0x66, 0x4c, 0x32, 0x49, 0x57, 0x6a, 0x4b, 0x41, 0x4d, 0x54, 0x48, 0x36, 0x6b, 0x4d, 0x41, 0x56, 0x49, 0x62, 0x63, 0x2f, 0x52, 0x2f, 0x66, 0x41, 0x4c, 0x68, 0x42, 0x59, 0x6c, 0x7a, 0x63, 0x63, 0x42, 0x59, 0x79, 0x0a, 0x33, 0x68, 0x2b, 0x5a, 0x31, 0x4d, 0x7a, 0x46, 0x42, 0x38, 0x67, 0x49, 0x48, 0x32, 0x45, 0x57, 0x42, 0x31, 0x45, 0x39, 0x66, 0x56, 0x77, 0x48, 0x55, 0x2b, 0x4d, 0x31, 0x4f, 0x49, 0x7a, 0x66, 0x7a, 0x5a, 0x2f, 0x5a, 0x4c, 0x67, 0x31, 0x4b, 0x74, 0x68, 0x6b, 0x75, 0x57, 0x6e, 0x42, 0x61, 0x42, 0x75, 0x32, 0x2b, 0x38, 0x4b, 0x47, 0x77, 0x79, 0x74, 0x41, 0x4a, 0x4b, 0x61, 0x4e, 0x6a, 0x4d, 0x47, 0x45, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x0a, 0x42, 0x42, 0x59, 0x45, 0x46, 0x46, 0x76, 0x4b, 0x58, 0x75, 0x58, 0x65, 0x30, 0x6f, 0x47, 0x71, 0x7a, 0x61, 0x67, 0x74, 0x5a, 0x46, 0x47, 0x32, 0x32, 0x58, 0x4b, 0x62, 0x6c, 0x2b, 0x5a, 0x50, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6a, 0x42, 0x42, 0x67, 0x77, 0x46, 0x6f, 0x41, 0x55, 0x57, 0x38, 0x70, 0x65, 0x0a, 0x35, 0x64, 0x37, 0x53, 0x67, 0x61, 0x72, 0x4e, 0x71, 0x43, 0x31, 0x6b, 0x55, 0x62, 0x62, 0x5a, 0x63, 0x70, 0x75, 0x58, 0x35, 0x6b, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x32, 0x67, 0x41, 0x4d, 0x47, 0x55, 0x43, 0x4d, 0x51, 0x43, 0x4b, 0x35, 0x6b, 0x43, 0x4a, 0x0a, 0x4e, 0x2b, 0x76, 0x70, 0x31, 0x52, 0x50, 0x5a, 0x79, 0x74, 0x52, 0x72, 0x4a, 0x50, 0x4f, 0x77, 0x50, 0x59, 0x64, 0x47, 0x57, 0x42, 0x72, 0x73, 0x73, 0x64, 0x39, 0x76, 0x2b, 0x31, 0x61, 0x36, 0x63, 0x47, 0x76, 0x48, 0x4f, 0x4d, 0x7a, 0x6f, 0x73, 0x59, 0x78, 0x50, 0x44, 0x2f, 0x66, 0x78, 0x5a, 0x33, 0x59, 0x4f, 0x67, 0x39, 0x41, 0x65, 0x55, 0x59, 0x38, 0x43, 0x4d, 0x44, 0x33, 0x32, 0x49, 0x79, 0x67, 0x6d, 0x54, 0x4d, 0x5a, 0x67, 0x68, 0x35, 0x4d, 0x6d, 0x0a, 0x6d, 0x37, 0x49, 0x31, 0x48, 0x72, 0x72, 0x57, 0x39, 0x7a, 0x7a, 0x52, 0x48, 0x4d, 0x37, 0x36, 0x4a, 0x54, 0x79, 0x6d, 0x47, 0x6f, 0x45, 0x56, 0x57, 0x2f, 0x4d, 0x53, 0x44, 0x32, 0x7a, 0x75, 0x5a, 0x59, 0x72, 0x4a, 0x68, 0x36, 0x6a, 0x35, 0x42, 0x2b, 0x42, 0x69, 0x6d, 0x6f, 0x78, 0x63, 0x53, 0x67, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x52, 0x36, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x67, 0x7a, 0x43, 0x43, 0x41, 0x32, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4f, 0x52, 0x65, 0x61, 0x37, 0x41, 0x34, 0x4d, 0x7a, 0x77, 0x34, 0x56, 0x6c, 0x53, 0x4f, 0x62, 0x2f, 0x52, 0x56, 0x45, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x77, 0x54, 0x44, 0x45, 0x67, 0x4d, 0x42, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x58, 0x0a, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x43, 0x30, 0x67, 0x55, 0x6a, 0x59, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x43, 0x6b, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x43, 0x6b, 0x64, 0x73, 0x0a, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x51, 0x78, 0x4d, 0x6a, 0x45, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x51, 0x78, 0x4d, 0x6a, 0x45, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x42, 0x4d, 0x4d, 0x53, 0x41, 0x77, 0x48, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x64, 0x48, 0x62, 0x47, 0x39, 0x69, 0x0a, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4c, 0x53, 0x42, 0x53, 0x4e, 0x6a, 0x45, 0x54, 0x4d, 0x42, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4b, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x6a, 0x45, 0x54, 0x4d, 0x42, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x4b, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x0a, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x6a, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4a, 0x55, 0x48, 0x36, 0x48, 0x50, 0x4b, 0x5a, 0x76, 0x6e, 0x73, 0x46, 0x4d, 0x70, 0x37, 0x50, 0x50, 0x63, 0x4e, 0x43, 0x50, 0x47, 0x30, 0x52, 0x51, 0x73, 0x73, 0x0a, 0x67, 0x72, 0x52, 0x49, 0x78, 0x75, 0x74, 0x62, 0x50, 0x4b, 0x36, 0x44, 0x75, 0x45, 0x47, 0x53, 0x4d, 0x78, 0x53, 0x6b, 0x62, 0x33, 0x2f, 0x70, 0x4b, 0x73, 0x7a, 0x47, 0x73, 0x49, 0x68, 0x72, 0x78, 0x62, 0x61, 0x4a, 0x30, 0x63, 0x61, 0x79, 0x2f, 0x78, 0x54, 0x4f, 0x55, 0x52, 0x51, 0x68, 0x37, 0x45, 0x72, 0x64, 0x47, 0x31, 0x72, 0x47, 0x31, 0x6f, 0x66, 0x75, 0x54, 0x54, 0x6f, 0x56, 0x42, 0x75, 0x31, 0x6b, 0x5a, 0x67, 0x75, 0x53, 0x67, 0x4d, 0x70, 0x45, 0x0a, 0x33, 0x6e, 0x4f, 0x55, 0x54, 0x76, 0x4f, 0x6e, 0x69, 0x58, 0x39, 0x50, 0x65, 0x47, 0x4d, 0x49, 0x79, 0x42, 0x4a, 0x51, 0x62, 0x55, 0x4a, 0x6d, 0x4c, 0x30, 0x32, 0x35, 0x65, 0x53, 0x68, 0x4e, 0x55, 0x68, 0x71, 0x4b, 0x47, 0x6f, 0x43, 0x33, 0x47, 0x59, 0x45, 0x4f, 0x66, 0x73, 0x53, 0x4b, 0x76, 0x47, 0x52, 0x4d, 0x49, 0x52, 0x78, 0x44, 0x61, 0x4e, 0x63, 0x39, 0x50, 0x49, 0x72, 0x46, 0x73, 0x6d, 0x62, 0x56, 0x6b, 0x4a, 0x71, 0x33, 0x4d, 0x51, 0x62, 0x46, 0x0a, 0x76, 0x75, 0x4a, 0x74, 0x4d, 0x67, 0x61, 0x6d, 0x48, 0x76, 0x6d, 0x35, 0x36, 0x36, 0x71, 0x6a, 0x75, 0x4c, 0x2b, 0x2b, 0x67, 0x6d, 0x4e, 0x51, 0x30, 0x50, 0x41, 0x59, 0x69, 0x64, 0x2f, 0x6b, 0x44, 0x33, 0x6e, 0x31, 0x36, 0x71, 0x49, 0x66, 0x4b, 0x74, 0x4a, 0x77, 0x4c, 0x6e, 0x76, 0x6e, 0x76, 0x4a, 0x4f, 0x37, 0x62, 0x56, 0x50, 0x69, 0x53, 0x48, 0x79, 0x4d, 0x45, 0x41, 0x63, 0x34, 0x2f, 0x32, 0x61, 0x79, 0x64, 0x32, 0x46, 0x2b, 0x34, 0x4f, 0x71, 0x4d, 0x0a, 0x50, 0x4b, 0x71, 0x30, 0x70, 0x50, 0x62, 0x7a, 0x6c, 0x55, 0x6f, 0x53, 0x42, 0x32, 0x33, 0x39, 0x6a, 0x4c, 0x4b, 0x4a, 0x7a, 0x39, 0x43, 0x67, 0x59, 0x58, 0x66, 0x49, 0x57, 0x48, 0x53, 0x77, 0x31, 0x43, 0x4d, 0x36, 0x39, 0x31, 0x30, 0x36, 0x79, 0x71, 0x4c, 0x62, 0x6e, 0x51, 0x6e, 0x65, 0x58, 0x55, 0x51, 0x74, 0x6b, 0x50, 0x47, 0x42, 0x7a, 0x56, 0x65, 0x53, 0x2b, 0x6e, 0x36, 0x38, 0x55, 0x41, 0x52, 0x6a, 0x4e, 0x4e, 0x39, 0x72, 0x6b, 0x78, 0x69, 0x2b, 0x0a, 0x61, 0x7a, 0x61, 0x79, 0x4f, 0x65, 0x53, 0x73, 0x4a, 0x44, 0x61, 0x33, 0x38, 0x4f, 0x2b, 0x32, 0x48, 0x42, 0x4e, 0x58, 0x6b, 0x37, 0x62, 0x65, 0x73, 0x76, 0x6a, 0x69, 0x68, 0x62, 0x64, 0x7a, 0x6f, 0x72, 0x67, 0x31, 0x71, 0x6b, 0x58, 0x79, 0x34, 0x4a, 0x30, 0x32, 0x6f, 0x57, 0x39, 0x55, 0x69, 0x76, 0x46, 0x79, 0x56, 0x6d, 0x34, 0x75, 0x69, 0x4d, 0x56, 0x52, 0x51, 0x6b, 0x51, 0x56, 0x6c, 0x4f, 0x36, 0x6a, 0x78, 0x54, 0x69, 0x57, 0x6d, 0x30, 0x35, 0x4f, 0x0a, 0x57, 0x67, 0x74, 0x48, 0x38, 0x77, 0x59, 0x32, 0x53, 0x58, 0x63, 0x77, 0x76, 0x48, 0x45, 0x33, 0x35, 0x61, 0x62, 0x73, 0x49, 0x51, 0x68, 0x31, 0x2f, 0x4f, 0x5a, 0x68, 0x46, 0x6a, 0x39, 0x33, 0x31, 0x64, 0x6d, 0x52, 0x6c, 0x34, 0x51, 0x4b, 0x62, 0x4e, 0x51, 0x43, 0x54, 0x58, 0x54, 0x41, 0x46, 0x4f, 0x33, 0x39, 0x4f, 0x66, 0x75, 0x44, 0x38, 0x6c, 0x34, 0x55, 0x6f, 0x51, 0x53, 0x77, 0x43, 0x2b, 0x6e, 0x2b, 0x37, 0x6f, 0x2f, 0x68, 0x62, 0x67, 0x75, 0x79, 0x0a, 0x43, 0x4c, 0x4e, 0x68, 0x5a, 0x67, 0x6c, 0x71, 0x73, 0x51, 0x59, 0x36, 0x5a, 0x5a, 0x5a, 0x5a, 0x77, 0x50, 0x41, 0x31, 0x2f, 0x63, 0x6e, 0x61, 0x4b, 0x49, 0x30, 0x61, 0x45, 0x59, 0x64, 0x77, 0x67, 0x51, 0x71, 0x6f, 0x6d, 0x6e, 0x55, 0x64, 0x6e, 0x6a, 0x71, 0x47, 0x42, 0x51, 0x43, 0x65, 0x32, 0x34, 0x44, 0x57, 0x4a, 0x66, 0x6e, 0x63, 0x42, 0x5a, 0x34, 0x6e, 0x57, 0x55, 0x78, 0x32, 0x4f, 0x56, 0x76, 0x71, 0x2b, 0x61, 0x57, 0x68, 0x32, 0x49, 0x4d, 0x50, 0x0a, 0x30, 0x66, 0x2f, 0x66, 0x4d, 0x42, 0x48, 0x35, 0x68, 0x63, 0x38, 0x7a, 0x53, 0x50, 0x58, 0x4b, 0x62, 0x57, 0x51, 0x55, 0x4c, 0x48, 0x70, 0x59, 0x54, 0x39, 0x4e, 0x4c, 0x43, 0x45, 0x6e, 0x46, 0x6c, 0x57, 0x51, 0x61, 0x59, 0x77, 0x35, 0x35, 0x50, 0x66, 0x57, 0x7a, 0x6a, 0x4d, 0x70, 0x59, 0x72, 0x5a, 0x78, 0x43, 0x52, 0x58, 0x6c, 0x75, 0x44, 0x6f, 0x63, 0x5a, 0x58, 0x46, 0x53, 0x78, 0x5a, 0x62, 0x61, 0x2f, 0x6a, 0x4a, 0x76, 0x63, 0x45, 0x2b, 0x6b, 0x4e, 0x0a, 0x62, 0x37, 0x67, 0x75, 0x33, 0x47, 0x64, 0x75, 0x79, 0x59, 0x73, 0x52, 0x74, 0x59, 0x51, 0x55, 0x69, 0x67, 0x41, 0x5a, 0x63, 0x49, 0x4e, 0x35, 0x6b, 0x5a, 0x65, 0x52, 0x31, 0x42, 0x6f, 0x6e, 0x76, 0x7a, 0x63, 0x65, 0x4d, 0x67, 0x66, 0x59, 0x46, 0x47, 0x4d, 0x38, 0x4b, 0x45, 0x79, 0x76, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x59, 0x7a, 0x42, 0x68, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x0a, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x75, 0x62, 0x41, 0x57, 0x6a, 0x6b, 0x78, 0x50, 0x69, 0x6f, 0x75, 0x66, 0x69, 0x31, 0x78, 0x7a, 0x57, 0x78, 0x2f, 0x42, 0x2f, 0x79, 0x47, 0x64, 0x54, 0x6f, 0x44, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x53, 0x4d, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x53, 0x75, 0x62, 0x41, 0x57, 0x6a, 0x6b, 0x78, 0x50, 0x69, 0x6f, 0x75, 0x66, 0x69, 0x31, 0x78, 0x7a, 0x57, 0x78, 0x2f, 0x42, 0x2f, 0x79, 0x47, 0x64, 0x54, 0x6f, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x67, 0x79, 0x58, 0x74, 0x36, 0x4e, 0x48, 0x39, 0x6c, 0x56, 0x4c, 0x4e, 0x0a, 0x6e, 0x73, 0x41, 0x45, 0x6f, 0x4a, 0x46, 0x70, 0x35, 0x6c, 0x7a, 0x51, 0x68, 0x4e, 0x37, 0x63, 0x72, 0x61, 0x4a, 0x50, 0x36, 0x45, 0x64, 0x34, 0x31, 0x6d, 0x57, 0x59, 0x71, 0x56, 0x75, 0x6f, 0x50, 0x49, 0x64, 0x38, 0x41, 0x6f, 0x72, 0x52, 0x62, 0x72, 0x63, 0x57, 0x63, 0x2b, 0x5a, 0x66, 0x77, 0x46, 0x53, 0x59, 0x31, 0x58, 0x53, 0x2b, 0x77, 0x63, 0x33, 0x69, 0x45, 0x5a, 0x47, 0x74, 0x49, 0x78, 0x67, 0x39, 0x33, 0x65, 0x46, 0x79, 0x52, 0x4a, 0x61, 0x30, 0x0a, 0x6c, 0x56, 0x37, 0x41, 0x65, 0x34, 0x36, 0x5a, 0x65, 0x42, 0x5a, 0x44, 0x45, 0x31, 0x5a, 0x58, 0x73, 0x36, 0x4b, 0x7a, 0x4f, 0x37, 0x56, 0x33, 0x33, 0x45, 0x42, 0x79, 0x72, 0x4b, 0x50, 0x72, 0x6d, 0x7a, 0x55, 0x2b, 0x73, 0x51, 0x67, 0x68, 0x6f, 0x65, 0x66, 0x45, 0x51, 0x7a, 0x64, 0x35, 0x4d, 0x72, 0x36, 0x31, 0x35, 0x35, 0x77, 0x73, 0x54, 0x4c, 0x78, 0x44, 0x4b, 0x5a, 0x6d, 0x4f, 0x4d, 0x4e, 0x4f, 0x73, 0x49, 0x65, 0x44, 0x6a, 0x48, 0x66, 0x72, 0x59, 0x0a, 0x42, 0x7a, 0x4e, 0x32, 0x56, 0x41, 0x41, 0x69, 0x4b, 0x72, 0x6c, 0x4e, 0x49, 0x43, 0x35, 0x77, 0x61, 0x4e, 0x72, 0x6c, 0x55, 0x2f, 0x79, 0x44, 0x58, 0x4e, 0x4f, 0x64, 0x38, 0x76, 0x39, 0x45, 0x44, 0x45, 0x52, 0x6d, 0x38, 0x74, 0x4c, 0x6a, 0x76, 0x55, 0x59, 0x41, 0x47, 0x6d, 0x30, 0x43, 0x75, 0x69, 0x56, 0x64, 0x6a, 0x61, 0x45, 0x78, 0x55, 0x64, 0x31, 0x55, 0x52, 0x68, 0x78, 0x4e, 0x32, 0x35, 0x6d, 0x57, 0x37, 0x78, 0x6f, 0x63, 0x42, 0x46, 0x79, 0x6d, 0x0a, 0x46, 0x65, 0x39, 0x34, 0x34, 0x48, 0x6e, 0x2b, 0x58, 0x64, 0x73, 0x2b, 0x71, 0x6b, 0x78, 0x56, 0x2f, 0x5a, 0x6f, 0x56, 0x71, 0x57, 0x2f, 0x68, 0x70, 0x76, 0x76, 0x66, 0x63, 0x44, 0x44, 0x70, 0x77, 0x2b, 0x35, 0x43, 0x52, 0x75, 0x33, 0x43, 0x6b, 0x77, 0x57, 0x4a, 0x2b, 0x6e, 0x31, 0x6a, 0x65, 0x7a, 0x2f, 0x51, 0x63, 0x59, 0x46, 0x38, 0x41, 0x4f, 0x69, 0x59, 0x72, 0x67, 0x35, 0x34, 0x4e, 0x4d, 0x4d, 0x6c, 0x2b, 0x36, 0x38, 0x4b, 0x6e, 0x79, 0x42, 0x72, 0x0a, 0x33, 0x54, 0x73, 0x54, 0x6a, 0x78, 0x4b, 0x4d, 0x34, 0x6b, 0x45, 0x61, 0x53, 0x48, 0x70, 0x7a, 0x6f, 0x48, 0x64, 0x70, 0x78, 0x37, 0x5a, 0x63, 0x66, 0x34, 0x4c, 0x49, 0x48, 0x76, 0x35, 0x59, 0x47, 0x79, 0x67, 0x72, 0x71, 0x47, 0x79, 0x74, 0x58, 0x6d, 0x33, 0x41, 0x42, 0x64, 0x4a, 0x37, 0x74, 0x2b, 0x75, 0x41, 0x2f, 0x69, 0x55, 0x33, 0x2f, 0x67, 0x4b, 0x62, 0x61, 0x4b, 0x78, 0x43, 0x58, 0x63, 0x50, 0x75, 0x39, 0x63, 0x7a, 0x63, 0x38, 0x46, 0x42, 0x31, 0x0a, 0x30, 0x6a, 0x5a, 0x70, 0x6e, 0x4f, 0x5a, 0x37, 0x42, 0x4e, 0x39, 0x75, 0x42, 0x6d, 0x6d, 0x32, 0x33, 0x67, 0x6f, 0x4a, 0x53, 0x46, 0x6d, 0x48, 0x36, 0x33, 0x73, 0x55, 0x59, 0x48, 0x70, 0x6b, 0x71, 0x6d, 0x6c, 0x44, 0x37, 0x35, 0x48, 0x48, 0x54, 0x4f, 0x77, 0x59, 0x33, 0x57, 0x7a, 0x76, 0x55, 0x79, 0x32, 0x4d, 0x6d, 0x65, 0x46, 0x65, 0x38, 0x6e, 0x49, 0x2b, 0x7a, 0x31, 0x54, 0x49, 0x76, 0x57, 0x66, 0x73, 0x70, 0x41, 0x39, 0x4d, 0x52, 0x66, 0x2f, 0x54, 0x0a, 0x75, 0x54, 0x41, 0x6a, 0x42, 0x30, 0x79, 0x50, 0x45, 0x4c, 0x2b, 0x47, 0x6c, 0x74, 0x6d, 0x5a, 0x57, 0x72, 0x53, 0x5a, 0x56, 0x78, 0x79, 0x6b, 0x7a, 0x4c, 0x73, 0x56, 0x69, 0x56, 0x4f, 0x36, 0x4c, 0x41, 0x55, 0x50, 0x35, 0x4d, 0x53, 0x65, 0x47, 0x62, 0x45, 0x59, 0x4e, 0x4e, 0x56, 0x4d, 0x6e, 0x62, 0x72, 0x74, 0x39, 0x78, 0x2b, 0x76, 0x4a, 0x4a, 0x55, 0x45, 0x65, 0x4b, 0x67, 0x44, 0x75, 0x2b, 0x36, 0x42, 0x35, 0x64, 0x70, 0x66, 0x66, 0x49, 0x74, 0x4b, 0x0a, 0x6f, 0x5a, 0x42, 0x30, 0x4a, 0x61, 0x65, 0x7a, 0x50, 0x6b, 0x76, 0x49, 0x4c, 0x46, 0x61, 0x39, 0x78, 0x38, 0x6a, 0x76, 0x4f, 0x4f, 0x4a, 0x63, 0x6b, 0x76, 0x42, 0x35, 0x39, 0x35, 0x79, 0x45, 0x75, 0x6e, 0x51, 0x74, 0x59, 0x51, 0x45, 0x67, 0x66, 0x6e, 0x37, 0x52, 0x38, 0x6b, 0x38, 0x48, 0x57, 0x56, 0x2b, 0x4c, 0x4c, 0x55, 0x4e, 0x53, 0x36, 0x30, 0x59, 0x4d, 0x6c, 0x4f, 0x48, 0x31, 0x5a, 0x6b, 0x64, 0x35, 0x64, 0x39, 0x56, 0x55, 0x57, 0x78, 0x2b, 0x74, 0x0a, 0x4a, 0x44, 0x66, 0x4c, 0x52, 0x56, 0x70, 0x4f, 0x6f, 0x45, 0x52, 0x49, 0x79, 0x4e, 0x69, 0x77, 0x6d, 0x63, 0x55, 0x56, 0x68, 0x41, 0x6e, 0x32, 0x31, 0x6b, 0x6c, 0x4a, 0x77, 0x47, 0x57, 0x34, 0x35, 0x68, 0x70, 0x78, 0x62, 0x71, 0x43, 0x6f, 0x38, 0x59, 0x4c, 0x6f, 0x52, 0x54, 0x35, 0x73, 0x31, 0x67, 0x4c, 0x58, 0x43, 0x6d, 0x65, 0x44, 0x42, 0x56, 0x72, 0x4a, 0x70, 0x42, 0x41, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x4f, 0x49, 0x53, 0x54, 0x45, 0x20, 0x57, 0x49, 0x53, 0x65, 0x4b, 0x65, 0x79, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x47, 0x43, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x61, 0x54, 0x43, 0x43, 0x41, 0x65, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x49, 0x53, 0x70, 0x57, 0x44, 0x4b, 0x37, 0x61, 0x44, 0x4b, 0x74, 0x41, 0x52, 0x62, 0x38, 0x72, 0x6f, 0x69, 0x30, 0x36, 0x36, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x74, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x44, 0x0a, 0x53, 0x44, 0x45, 0x51, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x48, 0x56, 0x30, 0x6c, 0x54, 0x5a, 0x55, 0x74, 0x6c, 0x65, 0x54, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x5a, 0x54, 0x30, 0x6c, 0x54, 0x56, 0x45, 0x55, 0x67, 0x52, 0x6d, 0x39, 0x31, 0x62, 0x6d, 0x52, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x46, 0x62, 0x6d, 0x52, 0x76, 0x63, 0x6e, 0x4e, 0x6c, 0x5a, 0x44, 0x45, 0x6f, 0x0a, 0x4d, 0x43, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x66, 0x54, 0x30, 0x6c, 0x54, 0x56, 0x45, 0x55, 0x67, 0x56, 0x30, 0x6c, 0x54, 0x5a, 0x55, 0x74, 0x6c, 0x65, 0x53, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x48, 0x51, 0x79, 0x42, 0x44, 0x51, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4e, 0x7a, 0x41, 0x31, 0x4d, 0x44, 0x6b, 0x77, 0x4f, 0x54, 0x51, 0x34, 0x4d, 0x7a, 0x52, 0x61, 0x0a, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x6a, 0x41, 0x31, 0x4d, 0x44, 0x6b, 0x77, 0x4f, 0x54, 0x55, 0x34, 0x4d, 0x7a, 0x4e, 0x61, 0x4d, 0x47, 0x30, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4e, 0x49, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x64, 0x58, 0x53, 0x56, 0x4e, 0x6c, 0x53, 0x32, 0x56, 0x35, 0x4d, 0x53, 0x49, 0x77, 0x49, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x0a, 0x45, 0x78, 0x6c, 0x50, 0x53, 0x56, 0x4e, 0x55, 0x52, 0x53, 0x42, 0x47, 0x62, 0x33, 0x56, 0x75, 0x5a, 0x47, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x56, 0x75, 0x5a, 0x47, 0x39, 0x79, 0x63, 0x32, 0x56, 0x6b, 0x4d, 0x53, 0x67, 0x77, 0x4a, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x39, 0x50, 0x53, 0x56, 0x4e, 0x55, 0x52, 0x53, 0x42, 0x58, 0x53, 0x56, 0x4e, 0x6c, 0x53, 0x32, 0x56, 0x35, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x0a, 0x62, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x64, 0x44, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x48, 0x59, 0x77, 0x45, 0x41, 0x59, 0x48, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x43, 0x41, 0x51, 0x59, 0x46, 0x4b, 0x34, 0x45, 0x45, 0x41, 0x43, 0x49, 0x44, 0x59, 0x67, 0x41, 0x45, 0x54, 0x4f, 0x6c, 0x51, 0x77, 0x4d, 0x59, 0x50, 0x63, 0x68, 0x69, 0x38, 0x32, 0x50, 0x47, 0x36, 0x73, 0x34, 0x6e, 0x69, 0x65, 0x55, 0x71, 0x6a, 0x46, 0x71, 0x64, 0x72, 0x0a, 0x56, 0x43, 0x54, 0x62, 0x55, 0x66, 0x2f, 0x71, 0x39, 0x41, 0x6b, 0x6b, 0x77, 0x77, 0x73, 0x69, 0x6e, 0x38, 0x74, 0x71, 0x4a, 0x34, 0x4b, 0x42, 0x44, 0x64, 0x4c, 0x41, 0x72, 0x7a, 0x48, 0x6b, 0x64, 0x49, 0x4a, 0x75, 0x79, 0x69, 0x58, 0x5a, 0x6a, 0x48, 0x57, 0x64, 0x38, 0x64, 0x76, 0x51, 0x6d, 0x71, 0x4a, 0x4c, 0x49, 0x58, 0x34, 0x57, 0x70, 0x32, 0x4f, 0x51, 0x30, 0x6a, 0x6e, 0x55, 0x73, 0x59, 0x64, 0x34, 0x58, 0x78, 0x69, 0x57, 0x44, 0x31, 0x41, 0x62, 0x0a, 0x4e, 0x54, 0x63, 0x50, 0x61, 0x73, 0x62, 0x63, 0x32, 0x52, 0x4e, 0x4e, 0x70, 0x49, 0x36, 0x51, 0x4e, 0x2b, 0x61, 0x39, 0x57, 0x7a, 0x47, 0x52, 0x6f, 0x31, 0x51, 0x77, 0x55, 0x6a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x53, 0x49, 0x63, 0x55, 0x72, 0x4f, 0x50, 0x44, 0x6e, 0x70, 0x42, 0x67, 0x4f, 0x74, 0x66, 0x4b, 0x69, 0x65, 0x37, 0x54, 0x72, 0x59, 0x79, 0x30, 0x55, 0x47, 0x59, 0x77, 0x45, 0x41, 0x59, 0x4a, 0x4b, 0x77, 0x59, 0x42, 0x42, 0x41, 0x47, 0x43, 0x4e, 0x78, 0x55, 0x42, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x41, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x0a, 0x41, 0x77, 0x4d, 0x44, 0x61, 0x41, 0x41, 0x77, 0x5a, 0x51, 0x49, 0x77, 0x4a, 0x73, 0x64, 0x70, 0x57, 0x39, 0x7a, 0x56, 0x35, 0x37, 0x4c, 0x6e, 0x79, 0x41, 0x79, 0x4d, 0x6a, 0x4d, 0x50, 0x64, 0x65, 0x59, 0x77, 0x62, 0x59, 0x39, 0x58, 0x4a, 0x55, 0x70, 0x52, 0x4f, 0x54, 0x59, 0x4a, 0x4b, 0x63, 0x78, 0x36, 0x79, 0x67, 0x49, 0x53, 0x70, 0x4a, 0x63, 0x42, 0x4d, 0x57, 0x6d, 0x31, 0x4a, 0x4b, 0x57, 0x42, 0x34, 0x45, 0x2b, 0x4a, 0x2b, 0x53, 0x4f, 0x74, 0x6b, 0x0a, 0x41, 0x6a, 0x45, 0x41, 0x32, 0x7a, 0x51, 0x67, 0x4d, 0x67, 0x6a, 0x2f, 0x6d, 0x6b, 0x6b, 0x43, 0x74, 0x6f, 0x6a, 0x65, 0x46, 0x4b, 0x39, 0x64, 0x62, 0x4a, 0x6c, 0x78, 0x6a, 0x52, 0x6f, 0x2f, 0x69, 0x39, 0x66, 0x67, 0x6f, 0x6a, 0x61, 0x47, 0x48, 0x41, 0x65, 0x43, 0x4f, 0x6e, 0x5a, 0x54, 0x2f, 0x63, 0x4b, 0x69, 0x37, 0x65, 0x39, 0x37, 0x73, 0x49, 0x42, 0x50, 0x57, 0x41, 0x39, 0x4c, 0x55, 0x7a, 0x6d, 0x39, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x55, 0x43, 0x41, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x47, 0x32, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x52, 0x6a, 0x43, 0x43, 0x41, 0x79, 0x36, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x58, 0x64, 0x2b, 0x78, 0x32, 0x6c, 0x71, 0x6a, 0x37, 0x56, 0x32, 0x2b, 0x57, 0x6d, 0x55, 0x67, 0x5a, 0x51, 0x4f, 0x51, 0x37, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x41, 0x39, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x44, 0x54, 0x6a, 0x45, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x49, 0x56, 0x57, 0x35, 0x70, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x78, 0x47, 0x7a, 0x41, 0x5a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x45, 0x6c, 0x56, 0x44, 0x51, 0x53, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x52, 0x7a, 0x49, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x44, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x0a, 0x4e, 0x6a, 0x41, 0x7a, 0x4d, 0x54, 0x45, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x44, 0x45, 0x79, 0x4d, 0x7a, 0x45, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x4d, 0x44, 0x30, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4e, 0x4f, 0x4d, 0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x68, 0x56, 0x62, 0x6d, 0x6c, 0x55, 0x0a, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x44, 0x45, 0x62, 0x4d, 0x42, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x53, 0x56, 0x55, 0x4e, 0x42, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x48, 0x4d, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x38, 0x41, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x45, 0x41, 0x78, 0x65, 0x59, 0x72, 0x62, 0x33, 0x7a, 0x76, 0x4a, 0x67, 0x55, 0x6e, 0x6f, 0x34, 0x45, 0x6b, 0x32, 0x6d, 0x2f, 0x4c, 0x41, 0x66, 0x6d, 0x5a, 0x6d, 0x71, 0x6b, 0x79, 0x77, 0x69, 0x4b, 0x48, 0x59, 0x55, 0x47, 0x52, 0x4f, 0x38, 0x76, 0x44, 0x61, 0x42, 0x73, 0x47, 0x78, 0x55, 0x79, 0x70, 0x4b, 0x38, 0x46, 0x6e, 0x46, 0x79, 0x49, 0x64, 0x4b, 0x2b, 0x33, 0x35, 0x4b, 0x59, 0x6d, 0x54, 0x0a, 0x6f, 0x6e, 0x69, 0x39, 0x6b, 0x6d, 0x75, 0x67, 0x6f, 0x77, 0x32, 0x69, 0x66, 0x73, 0x71, 0x54, 0x73, 0x36, 0x62, 0x52, 0x6a, 0x44, 0x58, 0x56, 0x64, 0x66, 0x6b, 0x58, 0x39, 0x73, 0x39, 0x46, 0x78, 0x65, 0x56, 0x36, 0x37, 0x48, 0x65, 0x54, 0x6f, 0x49, 0x38, 0x6a, 0x72, 0x67, 0x34, 0x61, 0x41, 0x33, 0x2b, 0x2b, 0x31, 0x4e, 0x44, 0x74, 0x4c, 0x6e, 0x75, 0x72, 0x52, 0x69, 0x4e, 0x62, 0x2f, 0x79, 0x7a, 0x6d, 0x56, 0x48, 0x71, 0x55, 0x77, 0x43, 0x6f, 0x56, 0x0a, 0x38, 0x4d, 0x6d, 0x4e, 0x73, 0x48, 0x6f, 0x37, 0x4a, 0x4f, 0x48, 0x58, 0x61, 0x4f, 0x49, 0x78, 0x50, 0x41, 0x59, 0x7a, 0x52, 0x72, 0x5a, 0x55, 0x45, 0x61, 0x61, 0x6c, 0x4c, 0x79, 0x4a, 0x55, 0x4b, 0x6c, 0x67, 0x4e, 0x41, 0x51, 0x4c, 0x78, 0x2b, 0x68, 0x56, 0x52, 0x5a, 0x32, 0x7a, 0x41, 0x2b, 0x74, 0x65, 0x32, 0x47, 0x33, 0x2f, 0x52, 0x56, 0x6f, 0x67, 0x76, 0x47, 0x6a, 0x71, 0x4e, 0x4f, 0x37, 0x75, 0x43, 0x45, 0x65, 0x42, 0x48, 0x41, 0x4e, 0x42, 0x53, 0x0a, 0x68, 0x36, 0x76, 0x37, 0x68, 0x6e, 0x34, 0x50, 0x4a, 0x47, 0x74, 0x41, 0x6e, 0x54, 0x52, 0x6e, 0x76, 0x49, 0x33, 0x48, 0x4c, 0x59, 0x5a, 0x76, 0x65, 0x54, 0x36, 0x4f, 0x71, 0x54, 0x77, 0x58, 0x53, 0x33, 0x2b, 0x77, 0x6d, 0x65, 0x4f, 0x77, 0x63, 0x57, 0x44, 0x63, 0x43, 0x2f, 0x56, 0x6b, 0x77, 0x38, 0x35, 0x44, 0x76, 0x47, 0x31, 0x78, 0x75, 0x64, 0x4c, 0x65, 0x4a, 0x31, 0x75, 0x4b, 0x36, 0x4e, 0x6a, 0x47, 0x72, 0x75, 0x46, 0x5a, 0x66, 0x63, 0x38, 0x6f, 0x0a, 0x4c, 0x54, 0x57, 0x34, 0x6c, 0x56, 0x59, 0x61, 0x38, 0x62, 0x4a, 0x59, 0x53, 0x37, 0x63, 0x53, 0x4e, 0x38, 0x68, 0x38, 0x73, 0x2b, 0x31, 0x4c, 0x67, 0x4f, 0x47, 0x4e, 0x2b, 0x6a, 0x49, 0x6a, 0x74, 0x6d, 0x2b, 0x33, 0x53, 0x4a, 0x55, 0x49, 0x73, 0x55, 0x52, 0x4f, 0x68, 0x59, 0x77, 0x36, 0x41, 0x6c, 0x51, 0x67, 0x4c, 0x39, 0x2b, 0x2f, 0x56, 0x30, 0x38, 0x37, 0x4f, 0x70, 0x41, 0x68, 0x31, 0x38, 0x45, 0x6d, 0x4e, 0x56, 0x51, 0x67, 0x37, 0x4d, 0x63, 0x2f, 0x0a, 0x52, 0x2b, 0x7a, 0x76, 0x57, 0x72, 0x39, 0x4c, 0x65, 0x73, 0x47, 0x74, 0x4f, 0x78, 0x64, 0x51, 0x58, 0x47, 0x4c, 0x59, 0x44, 0x30, 0x74, 0x4b, 0x33, 0x43, 0x76, 0x36, 0x62, 0x72, 0x78, 0x7a, 0x6b, 0x73, 0x33, 0x73, 0x78, 0x31, 0x44, 0x6f, 0x51, 0x5a, 0x62, 0x58, 0x71, 0x58, 0x35, 0x74, 0x32, 0x4f, 0x6b, 0x64, 0x6a, 0x34, 0x71, 0x31, 0x75, 0x56, 0x69, 0x53, 0x75, 0x6b, 0x71, 0x53, 0x4b, 0x77, 0x78, 0x57, 0x2f, 0x59, 0x44, 0x72, 0x43, 0x50, 0x42, 0x65, 0x0a, 0x4b, 0x57, 0x34, 0x62, 0x48, 0x41, 0x79, 0x76, 0x6a, 0x35, 0x4f, 0x4a, 0x72, 0x64, 0x75, 0x39, 0x6f, 0x35, 0x34, 0x68, 0x79, 0x6f, 0x6b, 0x5a, 0x37, 0x4e, 0x2b, 0x31, 0x77, 0x78, 0x72, 0x72, 0x46, 0x76, 0x35, 0x34, 0x4e, 0x6b, 0x7a, 0x57, 0x62, 0x74, 0x41, 0x2b, 0x46, 0x78, 0x79, 0x51, 0x46, 0x32, 0x73, 0x6d, 0x75, 0x76, 0x74, 0x36, 0x4c, 0x37, 0x38, 0x52, 0x48, 0x42, 0x67, 0x4f, 0x4c, 0x58, 0x4d, 0x44, 0x6a, 0x36, 0x44, 0x6c, 0x4e, 0x61, 0x42, 0x61, 0x0a, 0x34, 0x6b, 0x78, 0x31, 0x48, 0x58, 0x48, 0x68, 0x4f, 0x54, 0x68, 0x54, 0x65, 0x45, 0x44, 0x4d, 0x67, 0x35, 0x50, 0x58, 0x43, 0x70, 0x36, 0x64, 0x57, 0x34, 0x2b, 0x4b, 0x35, 0x4f, 0x58, 0x67, 0x53, 0x4f, 0x52, 0x49, 0x73, 0x6b, 0x66, 0x4e, 0x54, 0x69, 0x70, 0x31, 0x4b, 0x6e, 0x76, 0x79, 0x49, 0x76, 0x62, 0x4a, 0x76, 0x67, 0x6d, 0x52, 0x6c, 0x6c, 0x64, 0x36, 0x69, 0x49, 0x69, 0x73, 0x37, 0x6e, 0x43, 0x73, 0x2b, 0x64, 0x77, 0x70, 0x34, 0x77, 0x77, 0x63, 0x0a, 0x4f, 0x78, 0x4a, 0x4f, 0x52, 0x4e, 0x61, 0x6e, 0x54, 0x72, 0x41, 0x6d, 0x79, 0x50, 0x50, 0x5a, 0x47, 0x70, 0x65, 0x52, 0x61, 0x4f, 0x72, 0x76, 0x6a, 0x55, 0x59, 0x47, 0x30, 0x6c, 0x5a, 0x46, 0x57, 0x4a, 0x6f, 0x38, 0x44, 0x41, 0x2b, 0x44, 0x75, 0x41, 0x55, 0x6c, 0x77, 0x7a, 0x6e, 0x50, 0x4f, 0x36, 0x51, 0x30, 0x69, 0x62, 0x64, 0x35, 0x45, 0x69, 0x39, 0x48, 0x78, 0x65, 0x65, 0x70, 0x6c, 0x32, 0x6e, 0x38, 0x70, 0x6e, 0x64, 0x6e, 0x74, 0x64, 0x39, 0x37, 0x0a, 0x38, 0x58, 0x70, 0x6c, 0x46, 0x65, 0x52, 0x68, 0x56, 0x6d, 0x55, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x0a, 0x42, 0x42, 0x59, 0x45, 0x46, 0x49, 0x48, 0x45, 0x6a, 0x4d, 0x7a, 0x31, 0x35, 0x44, 0x44, 0x2f, 0x70, 0x51, 0x77, 0x49, 0x58, 0x34, 0x77, 0x56, 0x5a, 0x79, 0x46, 0x30, 0x41, 0x64, 0x2f, 0x66, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x41, 0x51, 0x41, 0x54, 0x5a, 0x53, 0x4c, 0x31, 0x6a, 0x69, 0x75, 0x74, 0x52, 0x4f, 0x54, 0x4c, 0x2f, 0x37, 0x6c, 0x6f, 0x0a, 0x35, 0x73, 0x4f, 0x41, 0x53, 0x44, 0x30, 0x45, 0x65, 0x2f, 0x6f, 0x6a, 0x4c, 0x33, 0x72, 0x74, 0x4e, 0x74, 0x71, 0x79, 0x7a, 0x6d, 0x33, 0x32, 0x35, 0x70, 0x37, 0x6c, 0x58, 0x31, 0x69, 0x50, 0x79, 0x7a, 0x63, 0x79, 0x6f, 0x63, 0x68, 0x6c, 0x74, 0x71, 0x34, 0x34, 0x50, 0x54, 0x55, 0x62, 0x50, 0x72, 0x77, 0x37, 0x74, 0x67, 0x54, 0x51, 0x76, 0x50, 0x6c, 0x4a, 0x39, 0x5a, 0x76, 0x33, 0x68, 0x63, 0x55, 0x32, 0x74, 0x73, 0x75, 0x38, 0x2b, 0x4d, 0x67, 0x35, 0x0a, 0x31, 0x65, 0x52, 0x66, 0x42, 0x37, 0x30, 0x56, 0x56, 0x4a, 0x64, 0x30, 0x79, 0x73, 0x72, 0x74, 0x54, 0x37, 0x71, 0x36, 0x5a, 0x48, 0x61, 0x66, 0x67, 0x62, 0x69, 0x45, 0x52, 0x55, 0x6c, 0x4d, 0x6a, 0x57, 0x2b, 0x69, 0x36, 0x37, 0x48, 0x4d, 0x30, 0x63, 0x4f, 0x55, 0x32, 0x6b, 0x54, 0x43, 0x35, 0x75, 0x4c, 0x71, 0x47, 0x4f, 0x69, 0x69, 0x48, 0x79, 0x63, 0x46, 0x75, 0x74, 0x66, 0x6c, 0x31, 0x71, 0x6e, 0x4e, 0x33, 0x65, 0x39, 0x32, 0x6d, 0x49, 0x30, 0x41, 0x0a, 0x44, 0x73, 0x30, 0x62, 0x2b, 0x67, 0x4f, 0x33, 0x6a, 0x6f, 0x42, 0x59, 0x44, 0x69, 0x63, 0x2f, 0x55, 0x76, 0x75, 0x55, 0x6f, 0x73, 0x70, 0x65, 0x5a, 0x63, 0x6e, 0x57, 0x68, 0x4e, 0x71, 0x35, 0x4e, 0x58, 0x48, 0x7a, 0x4a, 0x73, 0x42, 0x50, 0x64, 0x2b, 0x61, 0x42, 0x4a, 0x39, 0x4a, 0x33, 0x4f, 0x35, 0x6f, 0x55, 0x62, 0x33, 0x6e, 0x30, 0x39, 0x74, 0x44, 0x68, 0x30, 0x35, 0x53, 0x36, 0x30, 0x46, 0x64, 0x52, 0x76, 0x53, 0x63, 0x46, 0x44, 0x63, 0x48, 0x39, 0x0a, 0x79, 0x42, 0x49, 0x77, 0x37, 0x6d, 0x2b, 0x4e, 0x45, 0x53, 0x73, 0x49, 0x6e, 0x64, 0x54, 0x55, 0x76, 0x34, 0x42, 0x46, 0x46, 0x4a, 0x71, 0x49, 0x52, 0x4e, 0x6f, 0x77, 0x36, 0x72, 0x53, 0x6e, 0x34, 0x2b, 0x37, 0x76, 0x57, 0x34, 0x4c, 0x56, 0x50, 0x74, 0x61, 0x74, 0x65, 0x4a, 0x4c, 0x62, 0x58, 0x44, 0x7a, 0x7a, 0x32, 0x4b, 0x33, 0x36, 0x75, 0x47, 0x74, 0x2f, 0x78, 0x44, 0x59, 0x6f, 0x74, 0x67, 0x49, 0x56, 0x69, 0x6c, 0x51, 0x73, 0x6e, 0x4c, 0x41, 0x58, 0x0a, 0x63, 0x34, 0x37, 0x51, 0x4e, 0x36, 0x4d, 0x55, 0x50, 0x4a, 0x69, 0x56, 0x41, 0x41, 0x77, 0x70, 0x42, 0x56, 0x75, 0x65, 0x53, 0x55, 0x6d, 0x78, 0x58, 0x38, 0x66, 0x6a, 0x79, 0x38, 0x38, 0x6e, 0x5a, 0x59, 0x34, 0x31, 0x46, 0x37, 0x64, 0x58, 0x79, 0x44, 0x44, 0x5a, 0x51, 0x56, 0x75, 0x35, 0x46, 0x4c, 0x62, 0x6f, 0x77, 0x67, 0x2b, 0x55, 0x4d, 0x61, 0x65, 0x55, 0x6d, 0x4d, 0x78, 0x71, 0x36, 0x37, 0x58, 0x68, 0x4a, 0x2f, 0x55, 0x51, 0x71, 0x41, 0x48, 0x6f, 0x0a, 0x6a, 0x68, 0x4a, 0x69, 0x36, 0x49, 0x6a, 0x4d, 0x74, 0x58, 0x39, 0x47, 0x6c, 0x38, 0x43, 0x62, 0x45, 0x47, 0x59, 0x34, 0x47, 0x6a, 0x5a, 0x47, 0x58, 0x79, 0x4a, 0x6f, 0x50, 0x64, 0x2f, 0x4a, 0x78, 0x68, 0x4d, 0x6e, 0x71, 0x31, 0x4d, 0x47, 0x72, 0x4b, 0x49, 0x38, 0x68, 0x67, 0x5a, 0x6c, 0x62, 0x37, 0x46, 0x2b, 0x73, 0x53, 0x6c, 0x45, 0x6d, 0x71, 0x4f, 0x36, 0x53, 0x57, 0x6b, 0x6f, 0x61, 0x59, 0x2f, 0x58, 0x35, 0x56, 0x2b, 0x74, 0x42, 0x49, 0x5a, 0x6b, 0x0a, 0x62, 0x78, 0x71, 0x67, 0x44, 0x4d, 0x55, 0x49, 0x59, 0x73, 0x36, 0x41, 0x6f, 0x39, 0x44, 0x7a, 0x37, 0x47, 0x6a, 0x65, 0x76, 0x6a, 0x50, 0x48, 0x46, 0x31, 0x74, 0x2f, 0x67, 0x4d, 0x52, 0x4d, 0x54, 0x4c, 0x47, 0x6d, 0x68, 0x49, 0x72, 0x44, 0x4f, 0x37, 0x67, 0x4a, 0x7a, 0x52, 0x53, 0x42, 0x75, 0x68, 0x6a, 0x6a, 0x56, 0x46, 0x63, 0x32, 0x2f, 0x74, 0x73, 0x76, 0x66, 0x45, 0x65, 0x68, 0x4f, 0x6a, 0x50, 0x49, 0x2b, 0x56, 0x67, 0x37, 0x52, 0x45, 0x2b, 0x78, 0x0a, 0x79, 0x67, 0x4b, 0x4a, 0x42, 0x4a, 0x59, 0x6f, 0x61, 0x4d, 0x56, 0x4c, 0x75, 0x43, 0x61, 0x4a, 0x75, 0x39, 0x59, 0x7a, 0x4c, 0x31, 0x44, 0x56, 0x2f, 0x70, 0x71, 0x4a, 0x75, 0x68, 0x67, 0x79, 0x6b, 0x6c, 0x54, 0x47, 0x57, 0x2b, 0x43, 0x64, 0x2b, 0x56, 0x37, 0x6c, 0x44, 0x53, 0x4b, 0x62, 0x39, 0x74, 0x72, 0x69, 0x79, 0x43, 0x47, 0x79, 0x59, 0x69, 0x47, 0x71, 0x68, 0x6b, 0x43, 0x79, 0x4c, 0x6d, 0x54, 0x54, 0x58, 0x38, 0x6a, 0x6a, 0x66, 0x68, 0x46, 0x6e, 0x0a, 0x52, 0x52, 0x38, 0x46, 0x2f, 0x75, 0x4f, 0x69, 0x37, 0x37, 0x4f, 0x6f, 0x73, 0x2f, 0x4e, 0x39, 0x6a, 0x2f, 0x67, 0x4d, 0x48, 0x79, 0x49, 0x66, 0x4c, 0x58, 0x43, 0x30, 0x75, 0x41, 0x45, 0x30, 0x64, 0x6a, 0x41, 0x41, 0x35, 0x53, 0x4e, 0x34, 0x70, 0x31, 0x62, 0x58, 0x55, 0x42, 0x2b, 0x4b, 0x2b, 0x77, 0x62, 0x31, 0x77, 0x68, 0x6e, 0x77, 0x30, 0x41, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x55, 0x43, 0x41, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x57, 0x6a, 0x43, 0x43, 0x41, 0x30, 0x4b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x54, 0x39, 0x49, 0x72, 0x6a, 0x2f, 0x56, 0x6b, 0x79, 0x44, 0x4f, 0x65, 0x54, 0x7a, 0x52, 0x59, 0x5a, 0x69, 0x4e, 0x77, 0x59, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x48, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x44, 0x54, 0x6a, 0x45, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x49, 0x56, 0x57, 0x35, 0x70, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x48, 0x46, 0x56, 0x44, 0x51, 0x53, 0x42, 0x46, 0x65, 0x48, 0x52, 0x6c, 0x62, 0x6d, 0x52, 0x6c, 0x5a, 0x43, 0x42, 0x57, 0x59, 0x57, 0x78, 0x70, 0x5a, 0x47, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x0a, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x55, 0x77, 0x4d, 0x7a, 0x45, 0x7a, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x67, 0x78, 0x4d, 0x6a, 0x4d, 0x78, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x42, 0x48, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x44, 0x54, 0x6a, 0x45, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x49, 0x56, 0x57, 0x35, 0x70, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x48, 0x46, 0x56, 0x44, 0x51, 0x53, 0x42, 0x46, 0x65, 0x48, 0x52, 0x6c, 0x62, 0x6d, 0x52, 0x6c, 0x5a, 0x43, 0x42, 0x57, 0x59, 0x57, 0x78, 0x70, 0x5a, 0x47, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x77, 0x67, 0x67, 0x49, 0x69, 0x0a, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x70, 0x43, 0x51, 0x63, 0x6f, 0x45, 0x77, 0x4b, 0x77, 0x6d, 0x65, 0x42, 0x6b, 0x71, 0x68, 0x35, 0x44, 0x46, 0x6e, 0x70, 0x7a, 0x73, 0x5a, 0x47, 0x67, 0x64, 0x54, 0x36, 0x6f, 0x2b, 0x75, 0x4d, 0x34, 0x41, 0x48, 0x72, 0x73, 0x0a, 0x69, 0x57, 0x6f, 0x67, 0x44, 0x34, 0x76, 0x46, 0x73, 0x4a, 0x73, 0x7a, 0x41, 0x31, 0x71, 0x47, 0x78, 0x6c, 0x69, 0x47, 0x31, 0x63, 0x47, 0x46, 0x75, 0x30, 0x2f, 0x47, 0x6e, 0x45, 0x42, 0x4e, 0x79, 0x72, 0x37, 0x75, 0x61, 0x5a, 0x61, 0x34, 0x72, 0x59, 0x45, 0x77, 0x6d, 0x6e, 0x79, 0x53, 0x42, 0x65, 0x73, 0x46, 0x4b, 0x35, 0x70, 0x49, 0x30, 0x4c, 0x68, 0x32, 0x50, 0x70, 0x62, 0x49, 0x49, 0x4c, 0x76, 0x53, 0x73, 0x50, 0x47, 0x50, 0x32, 0x4b, 0x78, 0x46, 0x0a, 0x52, 0x76, 0x2b, 0x71, 0x5a, 0x32, 0x43, 0x30, 0x64, 0x33, 0x35, 0x71, 0x48, 0x7a, 0x77, 0x61, 0x55, 0x6e, 0x6f, 0x45, 0x50, 0x51, 0x63, 0x38, 0x68, 0x51, 0x32, 0x45, 0x30, 0x42, 0x39, 0x32, 0x43, 0x76, 0x64, 0x71, 0x46, 0x4e, 0x39, 0x79, 0x34, 0x7a, 0x52, 0x38, 0x56, 0x30, 0x35, 0x57, 0x41, 0x54, 0x35, 0x35, 0x38, 0x61, 0x6f, 0x70, 0x4f, 0x32, 0x7a, 0x36, 0x2b, 0x49, 0x39, 0x74, 0x54, 0x63, 0x67, 0x31, 0x33, 0x36, 0x37, 0x72, 0x33, 0x43, 0x54, 0x75, 0x0a, 0x65, 0x55, 0x57, 0x6e, 0x68, 0x62, 0x59, 0x46, 0x69, 0x4e, 0x36, 0x49, 0x58, 0x53, 0x56, 0x38, 0x6c, 0x32, 0x52, 0x6e, 0x43, 0x64, 0x6d, 0x2f, 0x57, 0x68, 0x55, 0x46, 0x68, 0x76, 0x4d, 0x4a, 0x48, 0x75, 0x78, 0x59, 0x4d, 0x6a, 0x4d, 0x52, 0x38, 0x33, 0x64, 0x6b, 0x73, 0x48, 0x59, 0x66, 0x35, 0x42, 0x41, 0x31, 0x46, 0x78, 0x76, 0x79, 0x44, 0x72, 0x46, 0x73, 0x70, 0x43, 0x71, 0x6a, 0x63, 0x2f, 0x77, 0x4a, 0x48, 0x78, 0x34, 0x79, 0x47, 0x56, 0x4d, 0x52, 0x0a, 0x35, 0x39, 0x6d, 0x7a, 0x4c, 0x43, 0x35, 0x32, 0x4c, 0x71, 0x47, 0x6a, 0x33, 0x6e, 0x35, 0x71, 0x69, 0x41, 0x6e, 0x6f, 0x38, 0x67, 0x65, 0x4b, 0x2b, 0x4c, 0x4c, 0x4e, 0x45, 0x4f, 0x66, 0x69, 0x63, 0x30, 0x43, 0x54, 0x75, 0x77, 0x6a, 0x52, 0x50, 0x2b, 0x48, 0x38, 0x43, 0x35, 0x53, 0x7a, 0x4a, 0x65, 0x39, 0x38, 0x70, 0x74, 0x66, 0x52, 0x72, 0x35, 0x2f, 0x2f, 0x6c, 0x70, 0x72, 0x31, 0x6b, 0x58, 0x75, 0x59, 0x43, 0x33, 0x66, 0x55, 0x66, 0x75, 0x67, 0x48, 0x0a, 0x30, 0x6d, 0x4b, 0x31, 0x6c, 0x54, 0x6e, 0x6a, 0x38, 0x2f, 0x46, 0x74, 0x44, 0x77, 0x35, 0x6c, 0x68, 0x49, 0x70, 0x6a, 0x56, 0x4d, 0x57, 0x41, 0x74, 0x75, 0x43, 0x65, 0x53, 0x33, 0x31, 0x48, 0x4a, 0x71, 0x63, 0x42, 0x43, 0x46, 0x33, 0x52, 0x69, 0x4a, 0x37, 0x58, 0x77, 0x7a, 0x4a, 0x45, 0x2b, 0x6f, 0x4a, 0x4b, 0x43, 0x6d, 0x68, 0x55, 0x66, 0x7a, 0x68, 0x54, 0x41, 0x38, 0x79, 0x6b, 0x41, 0x44, 0x4e, 0x6b, 0x55, 0x56, 0x6b, 0x4c, 0x6f, 0x34, 0x4b, 0x52, 0x0a, 0x65, 0x6c, 0x37, 0x73, 0x46, 0x73, 0x4c, 0x7a, 0x4b, 0x75, 0x5a, 0x69, 0x32, 0x69, 0x72, 0x62, 0x57, 0x57, 0x49, 0x51, 0x4a, 0x55, 0x6f, 0x71, 0x67, 0x51, 0x74, 0x48, 0x42, 0x30, 0x4d, 0x47, 0x63, 0x49, 0x66, 0x53, 0x2b, 0x70, 0x4d, 0x52, 0x4b, 0x58, 0x70, 0x49, 0x54, 0x65, 0x75, 0x55, 0x78, 0x33, 0x42, 0x4e, 0x72, 0x32, 0x66, 0x56, 0x55, 0x62, 0x47, 0x41, 0x49, 0x41, 0x45, 0x42, 0x74, 0x48, 0x6f, 0x49, 0x70, 0x70, 0x42, 0x2f, 0x54, 0x75, 0x44, 0x76, 0x0a, 0x42, 0x30, 0x47, 0x48, 0x72, 0x32, 0x71, 0x6c, 0x58, 0x6f, 0x76, 0x37, 0x7a, 0x31, 0x43, 0x79, 0x6d, 0x6c, 0x53, 0x76, 0x77, 0x34, 0x6d, 0x36, 0x57, 0x43, 0x33, 0x31, 0x4d, 0x4a, 0x69, 0x78, 0x4e, 0x6e, 0x49, 0x35, 0x66, 0x6b, 0x6b, 0x45, 0x2f, 0x53, 0x6d, 0x6e, 0x54, 0x48, 0x6e, 0x6b, 0x42, 0x56, 0x66, 0x62, 0x6c, 0x4c, 0x6b, 0x57, 0x55, 0x34, 0x31, 0x47, 0x73, 0x78, 0x32, 0x56, 0x59, 0x56, 0x64, 0x57, 0x66, 0x36, 0x2f, 0x77, 0x46, 0x6c, 0x74, 0x68, 0x0a, 0x57, 0x47, 0x38, 0x32, 0x55, 0x42, 0x45, 0x4c, 0x32, 0x4b, 0x77, 0x72, 0x6c, 0x52, 0x59, 0x61, 0x44, 0x68, 0x38, 0x49, 0x7a, 0x54, 0x59, 0x30, 0x5a, 0x52, 0x42, 0x69, 0x5a, 0x74, 0x57, 0x41, 0x58, 0x78, 0x51, 0x67, 0x58, 0x79, 0x30, 0x4d, 0x6f, 0x48, 0x67, 0x4b, 0x61, 0x4e, 0x59, 0x73, 0x31, 0x2b, 0x6c, 0x76, 0x4b, 0x39, 0x4a, 0x4b, 0x42, 0x5a, 0x50, 0x38, 0x6e, 0x6d, 0x39, 0x72, 0x5a, 0x2f, 0x2b, 0x49, 0x38, 0x55, 0x36, 0x6c, 0x61, 0x55, 0x70, 0x53, 0x0a, 0x4e, 0x77, 0x58, 0x71, 0x78, 0x68, 0x61, 0x4e, 0x30, 0x73, 0x53, 0x5a, 0x30, 0x59, 0x49, 0x72, 0x4f, 0x37, 0x6f, 0x31, 0x64, 0x66, 0x64, 0x52, 0x55, 0x56, 0x6a, 0x7a, 0x79, 0x41, 0x66, 0x64, 0x35, 0x4c, 0x51, 0x44, 0x66, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x32, 0x58, 0x51, 0x36, 0x35, 0x44, 0x41, 0x39, 0x44, 0x66, 0x63, 0x53, 0x0a, 0x33, 0x48, 0x35, 0x61, 0x42, 0x5a, 0x38, 0x65, 0x4e, 0x4a, 0x72, 0x33, 0x34, 0x52, 0x51, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x0a, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x44, 0x61, 0x4e, 0x6c, 0x38, 0x78, 0x43, 0x46, 0x57, 0x51, 0x70, 0x4e, 0x35, 0x73, 0x6d, 0x4c, 0x4e, 0x62, 0x37, 0x72, 0x68, 0x56, 0x70, 0x4c, 0x47, 0x73, 0x61, 0x47, 0x76, 0x64, 0x66, 0x74, 0x76, 0x6b, 0x48, 0x54, 0x46, 0x6e, 0x71, 0x38, 0x38, 0x6e, 0x49, 0x75, 0x61, 0x37, 0x4d, 0x75, 0x69, 0x35, 0x36, 0x33, 0x4d, 0x44, 0x31, 0x73, 0x43, 0x33, 0x41, 0x4f, 0x36, 0x2b, 0x66, 0x63, 0x41, 0x55, 0x52, 0x0a, 0x61, 0x70, 0x38, 0x6c, 0x54, 0x77, 0x45, 0x70, 0x63, 0x4f, 0x50, 0x6c, 0x44, 0x4f, 0x48, 0x71, 0x57, 0x6e, 0x7a, 0x63, 0x53, 0x62, 0x76, 0x42, 0x48, 0x69, 0x71, 0x42, 0x39, 0x52, 0x5a, 0x4c, 0x63, 0x70, 0x48, 0x49, 0x6f, 0x6a, 0x47, 0x35, 0x71, 0x74, 0x72, 0x38, 0x6e, 0x52, 0x2f, 0x7a, 0x58, 0x55, 0x41, 0x43, 0x45, 0x2f, 0x78, 0x4f, 0x48, 0x41, 0x62, 0x4b, 0x73, 0x78, 0x53, 0x51, 0x56, 0x42, 0x63, 0x5a, 0x45, 0x68, 0x72, 0x78, 0x48, 0x39, 0x63, 0x4d, 0x0a, 0x61, 0x56, 0x72, 0x32, 0x63, 0x58, 0x6a, 0x30, 0x6c, 0x48, 0x32, 0x52, 0x43, 0x34, 0x37, 0x73, 0x6b, 0x46, 0x53, 0x4f, 0x76, 0x47, 0x2b, 0x68, 0x54, 0x4b, 0x76, 0x38, 0x64, 0x47, 0x54, 0x39, 0x63, 0x5a, 0x72, 0x34, 0x51, 0x51, 0x65, 0x68, 0x7a, 0x5a, 0x48, 0x6b, 0x50, 0x4a, 0x72, 0x67, 0x6d, 0x7a, 0x49, 0x35, 0x63, 0x36, 0x73, 0x71, 0x31, 0x57, 0x6e, 0x49, 0x65, 0x4a, 0x45, 0x6d, 0x4d, 0x58, 0x33, 0x69, 0x78, 0x7a, 0x44, 0x78, 0x2f, 0x42, 0x52, 0x34, 0x0a, 0x64, 0x78, 0x49, 0x4f, 0x45, 0x2f, 0x54, 0x64, 0x46, 0x70, 0x53, 0x2f, 0x53, 0x32, 0x64, 0x37, 0x63, 0x46, 0x4f, 0x46, 0x79, 0x72, 0x43, 0x37, 0x38, 0x7a, 0x68, 0x4e, 0x4c, 0x4a, 0x41, 0x35, 0x77, 0x41, 0x33, 0x43, 0x58, 0x57, 0x76, 0x70, 0x34, 0x75, 0x58, 0x56, 0x69, 0x49, 0x33, 0x57, 0x4c, 0x4c, 0x2b, 0x72, 0x47, 0x37, 0x36, 0x31, 0x4b, 0x49, 0x63, 0x53, 0x46, 0x33, 0x52, 0x75, 0x2f, 0x48, 0x33, 0x38, 0x6a, 0x39, 0x43, 0x48, 0x4a, 0x72, 0x41, 0x62, 0x0a, 0x2b, 0x37, 0x6c, 0x73, 0x71, 0x2b, 0x4b, 0x65, 0x50, 0x52, 0x58, 0x42, 0x4f, 0x79, 0x35, 0x6e, 0x41, 0x6c, 0x69, 0x52, 0x6e, 0x2b, 0x2f, 0x34, 0x51, 0x68, 0x38, 0x73, 0x74, 0x32, 0x6a, 0x31, 0x64, 0x61, 0x33, 0x50, 0x74, 0x66, 0x62, 0x2f, 0x45, 0x58, 0x33, 0x43, 0x38, 0x43, 0x53, 0x6c, 0x72, 0x64, 0x50, 0x36, 0x6f, 0x44, 0x79, 0x70, 0x2b, 0x6c, 0x33, 0x63, 0x70, 0x61, 0x44, 0x76, 0x52, 0x4b, 0x53, 0x2b, 0x31, 0x75, 0x6a, 0x6c, 0x35, 0x42, 0x4f, 0x57, 0x0a, 0x46, 0x33, 0x73, 0x47, 0x50, 0x6a, 0x4c, 0x74, 0x78, 0x37, 0x64, 0x43, 0x76, 0x48, 0x61, 0x6a, 0x32, 0x47, 0x55, 0x34, 0x4b, 0x7a, 0x67, 0x31, 0x55, 0x53, 0x45, 0x4f, 0x44, 0x6d, 0x38, 0x75, 0x4e, 0x42, 0x4e, 0x41, 0x34, 0x53, 0x74, 0x6e, 0x44, 0x47, 0x31, 0x4b, 0x51, 0x54, 0x41, 0x59, 0x49, 0x31, 0x6f, 0x79, 0x56, 0x5a, 0x6e, 0x4a, 0x46, 0x2b, 0x41, 0x38, 0x33, 0x76, 0x62, 0x73, 0x65, 0x61, 0x30, 0x72, 0x57, 0x42, 0x6d, 0x69, 0x72, 0x53, 0x77, 0x69, 0x0a, 0x47, 0x70, 0x57, 0x4f, 0x76, 0x70, 0x61, 0x51, 0x58, 0x55, 0x4a, 0x58, 0x78, 0x50, 0x6b, 0x55, 0x41, 0x7a, 0x55, 0x72, 0x48, 0x43, 0x31, 0x52, 0x56, 0x77, 0x69, 0x6e, 0x4f, 0x74, 0x34, 0x2f, 0x35, 0x4d, 0x69, 0x30, 0x41, 0x33, 0x50, 0x43, 0x77, 0x53, 0x61, 0x41, 0x75, 0x77, 0x74, 0x43, 0x48, 0x36, 0x30, 0x4e, 0x72, 0x79, 0x5a, 0x79, 0x32, 0x73, 0x79, 0x2b, 0x73, 0x36, 0x4f, 0x44, 0x57, 0x41, 0x32, 0x43, 0x78, 0x52, 0x39, 0x47, 0x55, 0x65, 0x4f, 0x63, 0x0a, 0x47, 0x4d, 0x79, 0x4e, 0x6d, 0x34, 0x33, 0x73, 0x53, 0x65, 0x74, 0x31, 0x55, 0x4e, 0x57, 0x4d, 0x4b, 0x46, 0x6e, 0x4b, 0x64, 0x44, 0x54, 0x61, 0x6a, 0x41, 0x73, 0x68, 0x71, 0x78, 0x37, 0x71, 0x47, 0x2b, 0x58, 0x48, 0x2f, 0x52, 0x55, 0x2b, 0x77, 0x42, 0x65, 0x71, 0x2b, 0x79, 0x4e, 0x75, 0x4a, 0x6b, 0x62, 0x4c, 0x2b, 0x76, 0x6d, 0x78, 0x63, 0x6d, 0x74, 0x70, 0x7a, 0x79, 0x4b, 0x45, 0x43, 0x32, 0x49, 0x50, 0x72, 0x4e, 0x6b, 0x5a, 0x41, 0x4a, 0x53, 0x69, 0x0a, 0x64, 0x6a, 0x7a, 0x55, 0x4c, 0x5a, 0x72, 0x74, 0x42, 0x4a, 0x34, 0x74, 0x42, 0x6d, 0x49, 0x51, 0x4e, 0x31, 0x49, 0x63, 0x68, 0x58, 0x49, 0x62, 0x4a, 0x2b, 0x58, 0x4d, 0x78, 0x6a, 0x48, 0x73, 0x4e, 0x2b, 0x78, 0x6a, 0x57, 0x5a, 0x73, 0x4c, 0x48, 0x58, 0x62, 0x4d, 0x66, 0x6a, 0x4b, 0x61, 0x69, 0x4a, 0x55, 0x49, 0x4e, 0x6c, 0x4b, 0x37, 0x33, 0x6e, 0x5a, 0x66, 0x64, 0x6b, 0x6c, 0x4a, 0x72, 0x58, 0x2b, 0x39, 0x5a, 0x53, 0x43, 0x79, 0x79, 0x63, 0x45, 0x72, 0x0a, 0x64, 0x68, 0x68, 0x32, 0x6e, 0x31, 0x61, 0x78, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x65, 0x72, 0x74, 0x69, 0x67, 0x6e, 0x61, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x47, 0x57, 0x7a, 0x43, 0x43, 0x42, 0x45, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x52, 0x41, 0x4d, 0x72, 0x70, 0x47, 0x34, 0x6e, 0x78, 0x56, 0x51, 0x4d, 0x4e, 0x6f, 0x2b, 0x5a, 0x42, 0x62, 0x63, 0x54, 0x6a, 0x70, 0x75, 0x45, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x57, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x6c, 0x49, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x55, 0x52, 0x6f, 0x61, 0x57, 0x31, 0x35, 0x62, 0x33, 0x52, 0x70, 0x63, 0x7a, 0x45, 0x63, 0x4d, 0x42, 0x6f, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x77, 0x77, 0x54, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x69, 0x41, 0x30, 0x4f, 0x44, 0x45, 0x30, 0x4e, 0x6a, 0x4d, 0x77, 0x4f, 0x44, 0x45, 0x77, 0x4d, 0x44, 0x41, 0x7a, 0x4e, 0x6a, 0x45, 0x5a, 0x0a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x51, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6e, 0x62, 0x6d, 0x45, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4d, 0x7a, 0x45, 0x77, 0x4d, 0x44, 0x45, 0x77, 0x4f, 0x44, 0x4d, 0x79, 0x4d, 0x6a, 0x64, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4d, 0x7a, 0x45, 0x77, 0x4d, 0x44, 0x45, 0x77, 0x4f, 0x44, 0x4d, 0x79, 0x4d, 0x6a, 0x64, 0x61, 0x0a, 0x4d, 0x46, 0x6f, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x5a, 0x53, 0x4d, 0x52, 0x49, 0x77, 0x45, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x6c, 0x45, 0x61, 0x47, 0x6c, 0x74, 0x65, 0x57, 0x39, 0x30, 0x61, 0x58, 0x4d, 0x78, 0x48, 0x44, 0x41, 0x61, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x4d, 0x45, 0x7a, 0x41, 0x77, 0x4d, 0x44, 0x49, 0x67, 0x4e, 0x44, 0x67, 0x78, 0x4e, 0x44, 0x59, 0x7a, 0x0a, 0x4d, 0x44, 0x67, 0x78, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x7a, 0x59, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x45, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x32, 0x35, 0x68, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x0a, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x44, 0x4e, 0x47, 0x44, 0x6c, 0x6c, 0x47, 0x6c, 0x6d, 0x78, 0x36, 0x6d, 0x51, 0x57, 0x44, 0x6f, 0x79, 0x55, 0x4a, 0x4a, 0x56, 0x38, 0x67, 0x39, 0x50, 0x46, 0x4f, 0x53, 0x62, 0x63, 0x44, 0x4f, 0x38, 0x57, 0x56, 0x34, 0x33, 0x58, 0x32, 0x4b, 0x79, 0x6a, 0x51, 0x6e, 0x2b, 0x43, 0x79, 0x75, 0x33, 0x4e, 0x57, 0x39, 0x73, 0x4f, 0x74, 0x79, 0x33, 0x74, 0x52, 0x51, 0x67, 0x58, 0x0a, 0x73, 0x74, 0x6d, 0x7a, 0x79, 0x39, 0x59, 0x58, 0x55, 0x6e, 0x49, 0x6f, 0x32, 0x34, 0x35, 0x4f, 0x6e, 0x6f, 0x71, 0x32, 0x43, 0x2f, 0x6d, 0x65, 0x68, 0x4a, 0x70, 0x4e, 0x64, 0x74, 0x34, 0x69, 0x4b, 0x56, 0x7a, 0x53, 0x73, 0x39, 0x49, 0x47, 0x50, 0x6a, 0x41, 0x35, 0x71, 0x58, 0x53, 0x6a, 0x6b, 0x6c, 0x59, 0x63, 0x6f, 0x57, 0x39, 0x4d, 0x43, 0x69, 0x42, 0x74, 0x6e, 0x79, 0x4e, 0x36, 0x74, 0x4d, 0x62, 0x61, 0x4c, 0x4f, 0x51, 0x64, 0x4c, 0x4e, 0x79, 0x7a, 0x0a, 0x4b, 0x4e, 0x41, 0x54, 0x38, 0x6b, 0x78, 0x4f, 0x41, 0x6b, 0x6d, 0x68, 0x56, 0x45, 0x43, 0x65, 0x35, 0x75, 0x55, 0x46, 0x6f, 0x43, 0x32, 0x45, 0x79, 0x50, 0x2b, 0x59, 0x62, 0x4e, 0x44, 0x72, 0x69, 0x68, 0x71, 0x45, 0x43, 0x42, 0x36, 0x33, 0x61, 0x43, 0x50, 0x75, 0x49, 0x39, 0x56, 0x77, 0x7a, 0x6d, 0x31, 0x52, 0x61, 0x52, 0x44, 0x75, 0x6f, 0x58, 0x72, 0x43, 0x30, 0x53, 0x49, 0x78, 0x77, 0x6f, 0x4b, 0x46, 0x30, 0x76, 0x4a, 0x56, 0x64, 0x6c, 0x42, 0x38, 0x0a, 0x4a, 0x58, 0x72, 0x4a, 0x68, 0x46, 0x77, 0x4c, 0x72, 0x4e, 0x31, 0x43, 0x54, 0x69, 0x76, 0x6e, 0x67, 0x71, 0x49, 0x6b, 0x69, 0x63, 0x75, 0x51, 0x73, 0x74, 0x44, 0x75, 0x49, 0x37, 0x70, 0x6d, 0x54, 0x4c, 0x74, 0x69, 0x70, 0x50, 0x6c, 0x54, 0x57, 0x6d, 0x52, 0x37, 0x66, 0x4a, 0x6a, 0x36, 0x6f, 0x30, 0x69, 0x65, 0x44, 0x35, 0x57, 0x75, 0x70, 0x78, 0x6a, 0x30, 0x61, 0x75, 0x77, 0x75, 0x41, 0x30, 0x57, 0x76, 0x38, 0x48, 0x54, 0x34, 0x4b, 0x73, 0x31, 0x36, 0x0a, 0x58, 0x64, 0x47, 0x2b, 0x52, 0x43, 0x59, 0x79, 0x4b, 0x66, 0x48, 0x78, 0x39, 0x57, 0x7a, 0x4d, 0x66, 0x67, 0x49, 0x68, 0x43, 0x35, 0x39, 0x76, 0x70, 0x44, 0x2b, 0x2b, 0x6e, 0x56, 0x50, 0x69, 0x7a, 0x33, 0x32, 0x70, 0x4c, 0x48, 0x78, 0x59, 0x47, 0x70, 0x66, 0x68, 0x50, 0x54, 0x63, 0x33, 0x47, 0x47, 0x59, 0x6f, 0x30, 0x6b, 0x44, 0x46, 0x55, 0x59, 0x71, 0x4d, 0x77, 0x79, 0x33, 0x4f, 0x55, 0x34, 0x67, 0x6b, 0x57, 0x47, 0x51, 0x77, 0x46, 0x73, 0x57, 0x71, 0x0a, 0x34, 0x4e, 0x59, 0x4b, 0x70, 0x6b, 0x44, 0x66, 0x65, 0x50, 0x62, 0x31, 0x42, 0x48, 0x78, 0x70, 0x45, 0x34, 0x53, 0x38, 0x30, 0x64, 0x47, 0x6e, 0x42, 0x73, 0x38, 0x42, 0x39, 0x32, 0x6a, 0x41, 0x71, 0x46, 0x65, 0x37, 0x4f, 0x6d, 0x47, 0x74, 0x42, 0x49, 0x79, 0x54, 0x34, 0x36, 0x33, 0x38, 0x38, 0x4e, 0x74, 0x45, 0x62, 0x56, 0x6e, 0x63, 0x53, 0x56, 0x6d, 0x75, 0x72, 0x4a, 0x71, 0x5a, 0x4e, 0x6a, 0x42, 0x42, 0x65, 0x33, 0x59, 0x7a, 0x49, 0x6f, 0x65, 0x6a, 0x0a, 0x77, 0x70, 0x4b, 0x47, 0x62, 0x76, 0x6c, 0x77, 0x37, 0x71, 0x36, 0x48, 0x68, 0x35, 0x55, 0x62, 0x78, 0x48, 0x71, 0x39, 0x4d, 0x66, 0x50, 0x55, 0x30, 0x75, 0x57, 0x5a, 0x2f, 0x37, 0x35, 0x49, 0x37, 0x48, 0x58, 0x31, 0x65, 0x42, 0x59, 0x64, 0x70, 0x6e, 0x44, 0x42, 0x66, 0x7a, 0x77, 0x62, 0x6f, 0x5a, 0x4c, 0x37, 0x7a, 0x38, 0x67, 0x38, 0x31, 0x73, 0x57, 0x54, 0x43, 0x6f, 0x2f, 0x31, 0x56, 0x54, 0x70, 0x32, 0x6c, 0x63, 0x35, 0x5a, 0x6d, 0x49, 0x6f, 0x4a, 0x0a, 0x6c, 0x58, 0x63, 0x79, 0x6d, 0x6f, 0x4f, 0x36, 0x4c, 0x41, 0x51, 0x36, 0x6c, 0x37, 0x33, 0x55, 0x4c, 0x37, 0x37, 0x58, 0x62, 0x4a, 0x75, 0x69, 0x79, 0x6e, 0x31, 0x74, 0x4a, 0x73, 0x6c, 0x56, 0x31, 0x63, 0x2f, 0x44, 0x65, 0x56, 0x49, 0x49, 0x43, 0x5a, 0x6b, 0x48, 0x4a, 0x43, 0x31, 0x6b, 0x4a, 0x57, 0x75, 0x6d, 0x49, 0x57, 0x6d, 0x62, 0x61, 0x74, 0x31, 0x30, 0x54, 0x57, 0x75, 0x58, 0x65, 0x6b, 0x47, 0x39, 0x71, 0x78, 0x66, 0x35, 0x6b, 0x42, 0x64, 0x49, 0x0a, 0x6a, 0x7a, 0x62, 0x35, 0x4c, 0x64, 0x58, 0x46, 0x32, 0x2b, 0x36, 0x71, 0x68, 0x55, 0x56, 0x42, 0x2b, 0x73, 0x30, 0x36, 0x52, 0x62, 0x46, 0x6f, 0x35, 0x6a, 0x5a, 0x4d, 0x6d, 0x35, 0x42, 0x58, 0x37, 0x43, 0x4f, 0x35, 0x68, 0x77, 0x6a, 0x43, 0x78, 0x41, 0x6e, 0x78, 0x6c, 0x34, 0x59, 0x71, 0x4b, 0x45, 0x33, 0x69, 0x64, 0x4d, 0x44, 0x61, 0x78, 0x49, 0x7a, 0x62, 0x33, 0x2b, 0x4b, 0x68, 0x46, 0x31, 0x6e, 0x4f, 0x4a, 0x46, 0x6c, 0x30, 0x4d, 0x64, 0x70, 0x2f, 0x0a, 0x2f, 0x54, 0x42, 0x74, 0x32, 0x64, 0x7a, 0x68, 0x61, 0x75, 0x48, 0x38, 0x58, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x34, 0x49, 0x42, 0x47, 0x6a, 0x43, 0x43, 0x41, 0x52, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x0a, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x42, 0x69, 0x48, 0x56, 0x75, 0x42, 0x75, 0x64, 0x2b, 0x34, 0x6b, 0x4e, 0x54, 0x78, 0x4f, 0x63, 0x35, 0x6f, 0x66, 0x31, 0x75, 0x48, 0x69, 0x65, 0x58, 0x34, 0x72, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x77, 0x51, 0x59, 0x4d, 0x42, 0x61, 0x41, 0x46, 0x42, 0x69, 0x48, 0x56, 0x75, 0x42, 0x75, 0x64, 0x2b, 0x34, 0x6b, 0x4e, 0x54, 0x78, 0x4f, 0x63, 0x35, 0x6f, 0x66, 0x0a, 0x31, 0x75, 0x48, 0x69, 0x65, 0x58, 0x34, 0x72, 0x4d, 0x45, 0x51, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x41, 0x51, 0x39, 0x4d, 0x44, 0x73, 0x77, 0x4f, 0x51, 0x59, 0x45, 0x56, 0x52, 0x30, 0x67, 0x41, 0x44, 0x41, 0x78, 0x4d, 0x43, 0x38, 0x47, 0x43, 0x43, 0x73, 0x47, 0x41, 0x51, 0x55, 0x46, 0x42, 0x77, 0x49, 0x42, 0x46, 0x69, 0x4e, 0x6f, 0x64, 0x48, 0x52, 0x77, 0x63, 0x7a, 0x6f, 0x76, 0x4c, 0x33, 0x64, 0x33, 0x64, 0x33, 0x63, 0x75, 0x59, 0x32, 0x56, 0x79, 0x0a, 0x64, 0x47, 0x6c, 0x6e, 0x62, 0x6d, 0x45, 0x75, 0x5a, 0x6e, 0x49, 0x76, 0x59, 0x58, 0x56, 0x30, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x47, 0x56, 0x7a, 0x4c, 0x7a, 0x42, 0x74, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x38, 0x45, 0x5a, 0x6a, 0x42, 0x6b, 0x4d, 0x43, 0x2b, 0x67, 0x4c, 0x61, 0x41, 0x72, 0x68, 0x69, 0x6c, 0x6f, 0x64, 0x48, 0x52, 0x77, 0x4f, 0x69, 0x38, 0x76, 0x59, 0x33, 0x4a, 0x73, 0x4c, 0x6d, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x32, 0x35, 0x68, 0x0a, 0x4c, 0x6d, 0x5a, 0x79, 0x4c, 0x32, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x32, 0x35, 0x68, 0x63, 0x6d, 0x39, 0x76, 0x64, 0x47, 0x4e, 0x68, 0x4c, 0x6d, 0x4e, 0x79, 0x62, 0x44, 0x41, 0x78, 0x6f, 0x43, 0x2b, 0x67, 0x4c, 0x59, 0x59, 0x72, 0x61, 0x48, 0x52, 0x30, 0x63, 0x44, 0x6f, 0x76, 0x4c, 0x32, 0x4e, 0x79, 0x62, 0x43, 0x35, 0x6b, 0x61, 0x47, 0x6c, 0x74, 0x65, 0x57, 0x39, 0x30, 0x61, 0x58, 0x4d, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4c, 0x32, 0x4e, 0x6c, 0x0a, 0x63, 0x6e, 0x52, 0x70, 0x5a, 0x32, 0x35, 0x68, 0x63, 0x6d, 0x39, 0x76, 0x64, 0x47, 0x4e, 0x68, 0x4c, 0x6d, 0x4e, 0x79, 0x62, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x6c, 0x4c, 0x69, 0x65, 0x54, 0x2f, 0x44, 0x6a, 0x6c, 0x51, 0x67, 0x69, 0x35, 0x38, 0x31, 0x6f, 0x51, 0x66, 0x63, 0x63, 0x56, 0x64, 0x56, 0x38, 0x41, 0x4f, 0x49, 0x74, 0x0a, 0x4f, 0x6f, 0x6c, 0x64, 0x61, 0x44, 0x67, 0x76, 0x55, 0x53, 0x49, 0x4c, 0x53, 0x6f, 0x33, 0x4c, 0x36, 0x62, 0x74, 0x64, 0x50, 0x72, 0x74, 0x63, 0x50, 0x62, 0x45, 0x6f, 0x2f, 0x75, 0x52, 0x54, 0x56, 0x52, 0x50, 0x50, 0x6f, 0x5a, 0x41, 0x62, 0x41, 0x68, 0x31, 0x66, 0x5a, 0x6b, 0x59, 0x4a, 0x4d, 0x79, 0x6a, 0x68, 0x44, 0x53, 0x53, 0x58, 0x63, 0x4e, 0x4d, 0x51, 0x48, 0x2b, 0x70, 0x6b, 0x56, 0x35, 0x61, 0x37, 0x58, 0x64, 0x72, 0x6e, 0x78, 0x49, 0x78, 0x50, 0x0a, 0x54, 0x47, 0x52, 0x47, 0x48, 0x56, 0x79, 0x48, 0x34, 0x31, 0x6e, 0x65, 0x51, 0x74, 0x47, 0x62, 0x71, 0x48, 0x36, 0x6d, 0x69, 0x64, 0x32, 0x50, 0x48, 0x4d, 0x6b, 0x77, 0x67, 0x75, 0x30, 0x37, 0x6e, 0x4d, 0x33, 0x41, 0x36, 0x52, 0x6e, 0x67, 0x61, 0x74, 0x67, 0x43, 0x64, 0x54, 0x65, 0x72, 0x39, 0x7a, 0x51, 0x6f, 0x4b, 0x4a, 0x48, 0x79, 0x42, 0x41, 0x70, 0x50, 0x4e, 0x65, 0x4e, 0x67, 0x4a, 0x67, 0x48, 0x36, 0x30, 0x42, 0x47, 0x4d, 0x2b, 0x52, 0x46, 0x71, 0x0a, 0x37, 0x71, 0x38, 0x39, 0x77, 0x31, 0x44, 0x54, 0x6a, 0x31, 0x38, 0x7a, 0x65, 0x54, 0x79, 0x47, 0x71, 0x48, 0x4e, 0x46, 0x6b, 0x49, 0x77, 0x67, 0x74, 0x6e, 0x4a, 0x7a, 0x46, 0x79, 0x4f, 0x2b, 0x42, 0x32, 0x58, 0x6c, 0x65, 0x4a, 0x49, 0x4e, 0x75, 0x67, 0x48, 0x41, 0x36, 0x34, 0x77, 0x63, 0x5a, 0x72, 0x2b, 0x73, 0x68, 0x6e, 0x63, 0x42, 0x6c, 0x41, 0x32, 0x63, 0x35, 0x75, 0x6b, 0x35, 0x6a, 0x52, 0x2b, 0x6d, 0x55, 0x59, 0x79, 0x5a, 0x44, 0x44, 0x6c, 0x33, 0x0a, 0x34, 0x62, 0x53, 0x62, 0x2b, 0x68, 0x78, 0x6e, 0x56, 0x32, 0x39, 0x71, 0x61, 0x6f, 0x36, 0x70, 0x4b, 0x30, 0x78, 0x58, 0x65, 0x58, 0x70, 0x58, 0x49, 0x73, 0x2f, 0x4e, 0x58, 0x32, 0x4e, 0x47, 0x6a, 0x56, 0x78, 0x5a, 0x4f, 0x6f, 0x62, 0x34, 0x4d, 0x6b, 0x64, 0x69, 0x6f, 0x32, 0x63, 0x4e, 0x47, 0x4a, 0x48, 0x63, 0x2b, 0x36, 0x5a, 0x72, 0x39, 0x55, 0x68, 0x68, 0x63, 0x79, 0x4e, 0x5a, 0x6a, 0x67, 0x4b, 0x6e, 0x76, 0x45, 0x54, 0x71, 0x39, 0x45, 0x6d, 0x64, 0x0a, 0x38, 0x56, 0x52, 0x59, 0x2b, 0x57, 0x43, 0x76, 0x32, 0x68, 0x69, 0x6b, 0x4c, 0x79, 0x68, 0x46, 0x33, 0x48, 0x71, 0x67, 0x69, 0x49, 0x5a, 0x64, 0x38, 0x7a, 0x76, 0x6e, 0x2f, 0x79, 0x6b, 0x31, 0x67, 0x50, 0x78, 0x6b, 0x51, 0x35, 0x54, 0x6d, 0x34, 0x78, 0x78, 0x76, 0x76, 0x71, 0x30, 0x4f, 0x4b, 0x6d, 0x4f, 0x5a, 0x4b, 0x38, 0x6c, 0x2b, 0x68, 0x66, 0x5a, 0x78, 0x36, 0x41, 0x59, 0x44, 0x6c, 0x66, 0x37, 0x65, 0x6a, 0x30, 0x67, 0x63, 0x57, 0x74, 0x53, 0x53, 0x0a, 0x36, 0x43, 0x76, 0x75, 0x35, 0x7a, 0x48, 0x62, 0x75, 0x67, 0x52, 0x71, 0x68, 0x35, 0x6a, 0x6e, 0x78, 0x56, 0x2f, 0x76, 0x66, 0x61, 0x63, 0x69, 0x39, 0x77, 0x48, 0x59, 0x54, 0x66, 0x6d, 0x4a, 0x30, 0x41, 0x36, 0x61, 0x42, 0x56, 0x6d, 0x6b, 0x6e, 0x70, 0x6a, 0x5a, 0x62, 0x79, 0x76, 0x4b, 0x63, 0x4c, 0x35, 0x6b, 0x77, 0x6c, 0x57, 0x6a, 0x39, 0x4f, 0x6d, 0x76, 0x77, 0x35, 0x49, 0x70, 0x33, 0x49, 0x67, 0x57, 0x4a, 0x4a, 0x6b, 0x38, 0x6a, 0x53, 0x61, 0x59, 0x0a, 0x74, 0x6c, 0x75, 0x33, 0x7a, 0x4d, 0x36, 0x33, 0x4e, 0x77, 0x66, 0x39, 0x4a, 0x74, 0x6d, 0x59, 0x68, 0x53, 0x54, 0x2f, 0x57, 0x53, 0x4d, 0x44, 0x6d, 0x75, 0x32, 0x64, 0x6e, 0x61, 0x6a, 0x6b, 0x58, 0x6a, 0x6a, 0x4f, 0x31, 0x31, 0x49, 0x4e, 0x62, 0x39, 0x49, 0x2f, 0x62, 0x62, 0x45, 0x46, 0x61, 0x30, 0x6e, 0x4f, 0x69, 0x70, 0x46, 0x47, 0x63, 0x2f, 0x54, 0x32, 0x4c, 0x2f, 0x43, 0x6f, 0x63, 0x33, 0x63, 0x4f, 0x5a, 0x61, 0x79, 0x68, 0x6a, 0x57, 0x5a, 0x53, 0x0a, 0x61, 0x58, 0x35, 0x4c, 0x61, 0x41, 0x7a, 0x48, 0x48, 0x6a, 0x63, 0x6e, 0x67, 0x36, 0x57, 0x4d, 0x78, 0x77, 0x4c, 0x6b, 0x46, 0x4d, 0x31, 0x4a, 0x41, 0x62, 0x42, 0x7a, 0x73, 0x2f, 0x33, 0x47, 0x6b, 0x44, 0x70, 0x76, 0x30, 0x6d, 0x7a, 0x74, 0x4f, 0x2b, 0x37, 0x73, 0x6b, 0x62, 0x36, 0x69, 0x51, 0x31, 0x32, 0x4c, 0x41, 0x45, 0x70, 0x6d, 0x4a, 0x55, 0x52, 0x77, 0x33, 0x6b, 0x41, 0x50, 0x2b, 0x48, 0x77, 0x56, 0x39, 0x36, 0x4c, 0x4f, 0x50, 0x4e, 0x64, 0x65, 0x0a, 0x45, 0x34, 0x79, 0x42, 0x46, 0x78, 0x67, 0x58, 0x30, 0x62, 0x33, 0x78, 0x64, 0x78, 0x41, 0x36, 0x31, 0x47, 0x55, 0x35, 0x77, 0x53, 0x65, 0x73, 0x56, 0x79, 0x77, 0x6c, 0x56, 0x50, 0x2b, 0x69, 0x32, 0x6b, 0x2b, 0x4b, 0x59, 0x54, 0x6c, 0x65, 0x72, 0x6a, 0x31, 0x4b, 0x6a, 0x4c, 0x30, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x65, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x6c, 0x44, 0x43, 0x43, 0x41, 0x6e, 0x79, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4b, 0x4d, 0x66, 0x58, 0x6b, 0x59, 0x67, 0x78, 0x73, 0x57, 0x4f, 0x33, 0x57, 0x32, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x6e, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x4a, 0x54, 0x6a, 0x45, 0x54, 0x0a, 0x4d, 0x42, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x4b, 0x5a, 0x57, 0x31, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x42, 0x4c, 0x53, 0x54, 0x45, 0x6c, 0x4d, 0x43, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x63, 0x5a, 0x55, 0x31, 0x31, 0x5a, 0x47, 0x68, 0x79, 0x59, 0x53, 0x42, 0x55, 0x5a, 0x57, 0x4e, 0x6f, 0x62, 0x6d, 0x39, 0x73, 0x62, 0x32, 0x64, 0x70, 0x5a, 0x58, 0x4d, 0x67, 0x54, 0x47, 0x6c, 0x74, 0x61, 0x58, 0x52, 0x6c, 0x0a, 0x5a, 0x44, 0x45, 0x63, 0x4d, 0x42, 0x6f, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x54, 0x5a, 0x57, 0x31, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4c, 0x53, 0x42, 0x48, 0x4d, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4f, 0x44, 0x41, 0x79, 0x4d, 0x54, 0x67, 0x78, 0x4f, 0x44, 0x4d, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x7a, 0x41, 0x79, 0x4d, 0x54, 0x67, 0x78, 0x0a, 0x4f, 0x44, 0x4d, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x4d, 0x47, 0x63, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x6c, 0x4f, 0x4d, 0x52, 0x4d, 0x77, 0x45, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x77, 0x70, 0x6c, 0x62, 0x56, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x67, 0x55, 0x45, 0x74, 0x4a, 0x4d, 0x53, 0x55, 0x77, 0x49, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x78, 0x6c, 0x54, 0x58, 0x56, 0x6b, 0x0a, 0x61, 0x48, 0x4a, 0x68, 0x49, 0x46, 0x52, 0x6c, 0x59, 0x32, 0x68, 0x75, 0x62, 0x32, 0x78, 0x76, 0x5a, 0x32, 0x6c, 0x6c, 0x63, 0x79, 0x42, 0x4d, 0x61, 0x57, 0x31, 0x70, 0x64, 0x47, 0x56, 0x6b, 0x4d, 0x52, 0x77, 0x77, 0x47, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x4e, 0x6c, 0x62, 0x56, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x74, 0x49, 0x45, 0x63, 0x78, 0x4d, 0x49, 0x49, 0x42, 0x0a, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x6b, 0x30, 0x75, 0x37, 0x36, 0x57, 0x61, 0x4b, 0x37, 0x70, 0x31, 0x62, 0x31, 0x54, 0x53, 0x54, 0x30, 0x42, 0x73, 0x65, 0x77, 0x2b, 0x65, 0x65, 0x75, 0x47, 0x51, 0x7a, 0x66, 0x32, 0x4e, 0x34, 0x61, 0x4c, 0x54, 0x4e, 0x0a, 0x4c, 0x6e, 0x46, 0x31, 0x31, 0x35, 0x73, 0x67, 0x78, 0x6b, 0x30, 0x70, 0x76, 0x4c, 0x5a, 0x6f, 0x59, 0x49, 0x72, 0x33, 0x49, 0x5a, 0x70, 0x57, 0x4e, 0x56, 0x72, 0x7a, 0x64, 0x72, 0x33, 0x59, 0x7a, 0x5a, 0x72, 0x2f, 0x6b, 0x31, 0x5a, 0x4c, 0x70, 0x56, 0x6b, 0x47, 0x6f, 0x5a, 0x4d, 0x30, 0x4b, 0x64, 0x30, 0x57, 0x4e, 0x48, 0x56, 0x4f, 0x38, 0x6f, 0x47, 0x30, 0x78, 0x35, 0x5a, 0x4f, 0x72, 0x52, 0x6b, 0x56, 0x55, 0x6b, 0x72, 0x2b, 0x50, 0x48, 0x42, 0x31, 0x0a, 0x63, 0x4d, 0x32, 0x76, 0x4b, 0x36, 0x73, 0x56, 0x6d, 0x6a, 0x4d, 0x38, 0x71, 0x72, 0x4f, 0x4c, 0x71, 0x73, 0x31, 0x44, 0x2f, 0x66, 0x58, 0x71, 0x63, 0x50, 0x2f, 0x74, 0x7a, 0x78, 0x45, 0x37, 0x6c, 0x4d, 0x35, 0x4f, 0x4d, 0x68, 0x62, 0x54, 0x49, 0x30, 0x41, 0x71, 0x64, 0x37, 0x4f, 0x76, 0x50, 0x41, 0x45, 0x73, 0x62, 0x4f, 0x32, 0x5a, 0x4c, 0x49, 0x76, 0x5a, 0x54, 0x6d, 0x6d, 0x59, 0x73, 0x76, 0x65, 0x50, 0x51, 0x62, 0x41, 0x79, 0x65, 0x47, 0x48, 0x57, 0x0a, 0x44, 0x56, 0x2f, 0x44, 0x2b, 0x71, 0x4a, 0x41, 0x6b, 0x68, 0x31, 0x63, 0x46, 0x2b, 0x5a, 0x77, 0x50, 0x6a, 0x58, 0x6e, 0x6f, 0x72, 0x66, 0x43, 0x59, 0x75, 0x4b, 0x72, 0x70, 0x44, 0x68, 0x4d, 0x74, 0x54, 0x6b, 0x31, 0x62, 0x2b, 0x6f, 0x44, 0x61, 0x66, 0x6f, 0x36, 0x56, 0x47, 0x69, 0x46, 0x62, 0x64, 0x62, 0x79, 0x4c, 0x30, 0x4e, 0x56, 0x48, 0x70, 0x45, 0x4e, 0x44, 0x74, 0x6a, 0x56, 0x61, 0x71, 0x53, 0x57, 0x30, 0x52, 0x4d, 0x38, 0x4c, 0x48, 0x68, 0x51, 0x0a, 0x36, 0x44, 0x71, 0x53, 0x30, 0x68, 0x64, 0x57, 0x35, 0x54, 0x55, 0x61, 0x51, 0x42, 0x77, 0x2b, 0x6a, 0x53, 0x7a, 0x74, 0x4f, 0x64, 0x39, 0x43, 0x34, 0x49, 0x4e, 0x42, 0x64, 0x4e, 0x2b, 0x6a, 0x7a, 0x63, 0x4b, 0x47, 0x59, 0x45, 0x68, 0x6f, 0x34, 0x32, 0x6b, 0x4c, 0x56, 0x41, 0x43, 0x4c, 0x35, 0x48, 0x5a, 0x70, 0x49, 0x51, 0x31, 0x35, 0x54, 0x6a, 0x51, 0x49, 0x58, 0x68, 0x54, 0x43, 0x7a, 0x4c, 0x47, 0x33, 0x72, 0x64, 0x64, 0x38, 0x63, 0x49, 0x72, 0x48, 0x0a, 0x68, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x2b, 0x2b, 0x38, 0x4e, 0x68, 0x70, 0x36, 0x77, 0x34, 0x39, 0x32, 0x70, 0x75, 0x66, 0x45, 0x68, 0x46, 0x33, 0x38, 0x2b, 0x2f, 0x50, 0x42, 0x33, 0x4b, 0x78, 0x6f, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x0a, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x41, 0x46, 0x6e, 0x2f, 0x38, 0x6f, 0x7a, 0x31, 0x68, 0x33, 0x31, 0x78, 0x50, 0x61, 0x4f, 0x66, 0x47, 0x31, 0x76, 0x52, 0x32, 0x76, 0x6a, 0x54, 0x6e, 0x47, 0x73, 0x32, 0x0a, 0x76, 0x5a, 0x75, 0x70, 0x59, 0x65, 0x76, 0x65, 0x46, 0x69, 0x78, 0x30, 0x50, 0x5a, 0x37, 0x6d, 0x64, 0x64, 0x72, 0x58, 0x75, 0x71, 0x65, 0x38, 0x51, 0x68, 0x66, 0x6e, 0x50, 0x5a, 0x48, 0x72, 0x35, 0x58, 0x33, 0x64, 0x50, 0x70, 0x7a, 0x78, 0x7a, 0x35, 0x4b, 0x73, 0x62, 0x45, 0x6a, 0x4d, 0x77, 0x69, 0x49, 0x2f, 0x61, 0x54, 0x76, 0x46, 0x74, 0x68, 0x55, 0x76, 0x6f, 0x7a, 0x58, 0x47, 0x61, 0x43, 0x6f, 0x63, 0x56, 0x36, 0x38, 0x35, 0x37, 0x34, 0x33, 0x51, 0x0a, 0x4e, 0x63, 0x4d, 0x59, 0x44, 0x48, 0x73, 0x41, 0x56, 0x68, 0x7a, 0x4e, 0x69, 0x78, 0x6c, 0x30, 0x33, 0x72, 0x34, 0x50, 0x45, 0x75, 0x44, 0x51, 0x71, 0x71, 0x45, 0x2f, 0x41, 0x6a, 0x53, 0x78, 0x63, 0x4d, 0x36, 0x64, 0x47, 0x4e, 0x59, 0x49, 0x41, 0x77, 0x6c, 0x47, 0x37, 0x6d, 0x44, 0x67, 0x66, 0x72, 0x62, 0x45, 0x53, 0x51, 0x52, 0x52, 0x66, 0x58, 0x42, 0x67, 0x76, 0x4b, 0x71, 0x79, 0x2f, 0x33, 0x6c, 0x79, 0x65, 0x71, 0x59, 0x64, 0x50, 0x56, 0x38, 0x71, 0x0a, 0x2b, 0x4d, 0x72, 0x69, 0x2f, 0x54, 0x6d, 0x33, 0x52, 0x37, 0x6e, 0x72, 0x66, 0x74, 0x38, 0x45, 0x49, 0x36, 0x2f, 0x36, 0x6e, 0x41, 0x59, 0x48, 0x36, 0x66, 0x74, 0x6a, 0x6b, 0x34, 0x42, 0x41, 0x74, 0x63, 0x5a, 0x73, 0x43, 0x6a, 0x45, 0x6f, 0x7a, 0x67, 0x79, 0x66, 0x7a, 0x37, 0x4d, 0x6a, 0x4e, 0x59, 0x42, 0x42, 0x6a, 0x57, 0x7a, 0x45, 0x4e, 0x33, 0x75, 0x42, 0x4c, 0x34, 0x43, 0x68, 0x51, 0x45, 0x4b, 0x46, 0x36, 0x64, 0x6b, 0x34, 0x6a, 0x65, 0x69, 0x68, 0x0a, 0x55, 0x38, 0x30, 0x42, 0x76, 0x32, 0x6e, 0x6f, 0x57, 0x67, 0x62, 0x79, 0x52, 0x51, 0x75, 0x51, 0x2b, 0x71, 0x37, 0x68, 0x76, 0x35, 0x33, 0x79, 0x72, 0x6c, 0x63, 0x38, 0x70, 0x61, 0x36, 0x79, 0x56, 0x76, 0x53, 0x4c, 0x5a, 0x55, 0x44, 0x70, 0x2f, 0x54, 0x47, 0x42, 0x4c, 0x50, 0x51, 0x35, 0x43, 0x64, 0x6a, 0x75, 0x61, 0x36, 0x65, 0x30, 0x70, 0x68, 0x30, 0x56, 0x70, 0x5a, 0x6a, 0x33, 0x41, 0x59, 0x48, 0x59, 0x68, 0x58, 0x33, 0x7a, 0x55, 0x56, 0x78, 0x78, 0x0a, 0x69, 0x4e, 0x36, 0x36, 0x7a, 0x42, 0x2b, 0x41, 0x66, 0x6b, 0x6f, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x65, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x54, 0x6a, 0x43, 0x43, 0x41, 0x64, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4b, 0x50, 0x50, 0x59, 0x48, 0x71, 0x57, 0x68, 0x77, 0x44, 0x74, 0x71, 0x4c, 0x68, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x72, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x4a, 0x54, 0x6a, 0x45, 0x54, 0x4d, 0x42, 0x45, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x4b, 0x5a, 0x57, 0x31, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x42, 0x4c, 0x53, 0x54, 0x45, 0x6c, 0x4d, 0x43, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x63, 0x5a, 0x55, 0x31, 0x31, 0x5a, 0x47, 0x68, 0x79, 0x59, 0x53, 0x42, 0x55, 0x5a, 0x57, 0x4e, 0x6f, 0x62, 0x6d, 0x39, 0x73, 0x62, 0x32, 0x64, 0x70, 0x5a, 0x58, 0x4d, 0x67, 0x54, 0x47, 0x6c, 0x74, 0x61, 0x58, 0x52, 0x6c, 0x5a, 0x44, 0x45, 0x67, 0x0a, 0x4d, 0x42, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x58, 0x5a, 0x57, 0x31, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x45, 0x56, 0x44, 0x51, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x43, 0x30, 0x67, 0x52, 0x7a, 0x4d, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x67, 0x77, 0x4d, 0x6a, 0x45, 0x34, 0x4d, 0x54, 0x67, 0x7a, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x4d, 0x77, 0x4d, 0x6a, 0x45, 0x34, 0x0a, 0x4d, 0x54, 0x67, 0x7a, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x42, 0x72, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x4a, 0x54, 0x6a, 0x45, 0x54, 0x4d, 0x42, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x4b, 0x5a, 0x57, 0x31, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x42, 0x4c, 0x53, 0x54, 0x45, 0x6c, 0x4d, 0x43, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x63, 0x5a, 0x55, 0x31, 0x31, 0x0a, 0x5a, 0x47, 0x68, 0x79, 0x59, 0x53, 0x42, 0x55, 0x5a, 0x57, 0x4e, 0x6f, 0x62, 0x6d, 0x39, 0x73, 0x62, 0x32, 0x64, 0x70, 0x5a, 0x58, 0x4d, 0x67, 0x54, 0x47, 0x6c, 0x74, 0x61, 0x58, 0x52, 0x6c, 0x5a, 0x44, 0x45, 0x67, 0x4d, 0x42, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x58, 0x5a, 0x57, 0x31, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x45, 0x56, 0x44, 0x51, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x43, 0x30, 0x67, 0x0a, 0x52, 0x7a, 0x4d, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x51, 0x6a, 0x70, 0x51, 0x79, 0x34, 0x4c, 0x52, 0x4c, 0x31, 0x4b, 0x50, 0x4f, 0x78, 0x73, 0x74, 0x33, 0x69, 0x41, 0x68, 0x4b, 0x41, 0x6e, 0x6a, 0x6c, 0x66, 0x53, 0x55, 0x32, 0x66, 0x79, 0x53, 0x55, 0x30, 0x57, 0x58, 0x54, 0x73, 0x75, 0x77, 0x59, 0x63, 0x0a, 0x35, 0x38, 0x42, 0x79, 0x72, 0x2b, 0x69, 0x75, 0x4c, 0x2b, 0x46, 0x42, 0x56, 0x49, 0x63, 0x55, 0x71, 0x45, 0x71, 0x79, 0x36, 0x48, 0x79, 0x43, 0x35, 0x6c, 0x74, 0x71, 0x74, 0x64, 0x79, 0x7a, 0x64, 0x63, 0x36, 0x4c, 0x42, 0x74, 0x43, 0x47, 0x49, 0x37, 0x39, 0x47, 0x31, 0x59, 0x34, 0x50, 0x50, 0x77, 0x54, 0x30, 0x31, 0x78, 0x79, 0x53, 0x66, 0x76, 0x61, 0x6c, 0x59, 0x38, 0x4c, 0x31, 0x58, 0x34, 0x34, 0x75, 0x54, 0x36, 0x45, 0x59, 0x47, 0x51, 0x49, 0x72, 0x0a, 0x4d, 0x67, 0x71, 0x43, 0x5a, 0x48, 0x30, 0x57, 0x6b, 0x39, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x38, 0x58, 0x51, 0x4b, 0x45, 0x45, 0x39, 0x54, 0x4d, 0x69, 0x70, 0x75, 0x42, 0x7a, 0x68, 0x63, 0x63, 0x4c, 0x69, 0x6b, 0x65, 0x6e, 0x45, 0x68, 0x6a, 0x51, 0x6a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x0a, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x70, 0x41, 0x44, 0x42, 0x6d, 0x41, 0x6a, 0x45, 0x41, 0x76, 0x76, 0x4e, 0x68, 0x7a, 0x77, 0x49, 0x51, 0x48, 0x57, 0x53, 0x56, 0x42, 0x37, 0x67, 0x59, 0x62, 0x6f, 0x69, 0x46, 0x42, 0x53, 0x2b, 0x44, 0x0a, 0x43, 0x42, 0x65, 0x51, 0x79, 0x68, 0x2b, 0x4b, 0x54, 0x4f, 0x67, 0x4e, 0x47, 0x33, 0x71, 0x78, 0x72, 0x64, 0x57, 0x42, 0x43, 0x55, 0x66, 0x76, 0x4f, 0x36, 0x77, 0x49, 0x42, 0x48, 0x78, 0x63, 0x6d, 0x62, 0x48, 0x74, 0x52, 0x77, 0x66, 0x53, 0x41, 0x6a, 0x45, 0x41, 0x6e, 0x62, 0x70, 0x56, 0x2f, 0x4b, 0x6c, 0x4b, 0x36, 0x4f, 0x33, 0x74, 0x35, 0x6e, 0x59, 0x42, 0x51, 0x6e, 0x76, 0x49, 0x2b, 0x47, 0x44, 0x5a, 0x6a, 0x56, 0x47, 0x4c, 0x56, 0x54, 0x76, 0x37, 0x0a, 0x6a, 0x48, 0x76, 0x72, 0x5a, 0x51, 0x6e, 0x44, 0x2b, 0x4a, 0x62, 0x4e, 0x52, 0x36, 0x69, 0x43, 0x38, 0x68, 0x5a, 0x56, 0x64, 0x79, 0x52, 0x2b, 0x45, 0x68, 0x43, 0x56, 0x42, 0x43, 0x79, 0x6a, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x65, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x43, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x63, 0x7a, 0x43, 0x43, 0x41, 0x6c, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4c, 0x41, 0x4b, 0x37, 0x50, 0x41, 0x4c, 0x72, 0x45, 0x7a, 0x7a, 0x4c, 0x34, 0x51, 0x37, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x56, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x0a, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x43, 0x6d, 0x56, 0x74, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x69, 0x42, 0x51, 0x53, 0x30, 0x6b, 0x78, 0x46, 0x44, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x43, 0x32, 0x56, 0x4e, 0x64, 0x57, 0x52, 0x6f, 0x63, 0x6d, 0x45, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x77, 0x77, 0x47, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x4e, 0x6c, 0x62, 0x56, 0x4e, 0x70, 0x0a, 0x5a, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x74, 0x49, 0x45, 0x4d, 0x78, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x34, 0x4d, 0x44, 0x49, 0x78, 0x4f, 0x44, 0x45, 0x34, 0x4d, 0x7a, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x7a, 0x4d, 0x44, 0x49, 0x78, 0x4f, 0x44, 0x45, 0x34, 0x4d, 0x7a, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x77, 0x56, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x43, 0x6d, 0x56, 0x74, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x69, 0x42, 0x51, 0x53, 0x30, 0x6b, 0x78, 0x46, 0x44, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x43, 0x32, 0x56, 0x4e, 0x64, 0x57, 0x52, 0x6f, 0x63, 0x6d, 0x45, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x52, 0x77, 0x77, 0x47, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x0a, 0x45, 0x78, 0x4e, 0x6c, 0x62, 0x56, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x74, 0x49, 0x45, 0x4d, 0x78, 0x4d, 0x49, 0x49, 0x42, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x42, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x51, 0x45, 0x41, 0x7a, 0x2b, 0x75, 0x70, 0x0a, 0x75, 0x66, 0x47, 0x5a, 0x42, 0x63, 0x7a, 0x59, 0x4b, 0x43, 0x46, 0x4b, 0x38, 0x33, 0x4d, 0x30, 0x55, 0x59, 0x52, 0x57, 0x45, 0x50, 0x57, 0x67, 0x54, 0x79, 0x77, 0x53, 0x34, 0x2f, 0x6f, 0x54, 0x6d, 0x69, 0x66, 0x51, 0x7a, 0x2f, 0x6c, 0x35, 0x47, 0x6e, 0x52, 0x66, 0x48, 0x58, 0x6b, 0x35, 0x2f, 0x46, 0x76, 0x34, 0x63, 0x49, 0x37, 0x67, 0x6b, 0x6c, 0x4c, 0x33, 0x35, 0x43, 0x58, 0x35, 0x56, 0x49, 0x50, 0x5a, 0x48, 0x64, 0x50, 0x49, 0x57, 0x6f, 0x55, 0x2f, 0x0a, 0x58, 0x73, 0x65, 0x32, 0x42, 0x2b, 0x34, 0x2b, 0x77, 0x4d, 0x36, 0x61, 0x72, 0x36, 0x78, 0x57, 0x51, 0x69, 0x6f, 0x35, 0x4a, 0x58, 0x44, 0x57, 0x76, 0x37, 0x56, 0x37, 0x4e, 0x71, 0x32, 0x73, 0x39, 0x6e, 0x50, 0x63, 0x7a, 0x64, 0x63, 0x64, 0x69, 0x6f, 0x4f, 0x6c, 0x2b, 0x79, 0x75, 0x51, 0x46, 0x54, 0x64, 0x72, 0x48, 0x43, 0x5a, 0x48, 0x33, 0x44, 0x73, 0x70, 0x56, 0x70, 0x4e, 0x71, 0x73, 0x38, 0x46, 0x71, 0x4f, 0x70, 0x30, 0x39, 0x39, 0x63, 0x47, 0x58, 0x0a, 0x4f, 0x46, 0x67, 0x46, 0x69, 0x78, 0x77, 0x52, 0x34, 0x2b, 0x53, 0x30, 0x75, 0x46, 0x32, 0x46, 0x48, 0x59, 0x50, 0x2b, 0x65, 0x46, 0x38, 0x4c, 0x52, 0x57, 0x67, 0x59, 0x53, 0x4b, 0x56, 0x47, 0x63, 0x7a, 0x51, 0x37, 0x2f, 0x67, 0x2f, 0x49, 0x64, 0x72, 0x76, 0x48, 0x47, 0x50, 0x4d, 0x46, 0x30, 0x59, 0x62, 0x7a, 0x68, 0x65, 0x33, 0x6e, 0x75, 0x64, 0x6b, 0x79, 0x72, 0x56, 0x57, 0x49, 0x7a, 0x71, 0x61, 0x32, 0x6b, 0x62, 0x42, 0x50, 0x72, 0x48, 0x34, 0x56, 0x0a, 0x49, 0x35, 0x62, 0x32, 0x50, 0x2f, 0x41, 0x67, 0x4e, 0x42, 0x62, 0x65, 0x43, 0x73, 0x62, 0x45, 0x42, 0x45, 0x56, 0x35, 0x66, 0x36, 0x66, 0x39, 0x76, 0x74, 0x4b, 0x70, 0x70, 0x61, 0x2b, 0x63, 0x78, 0x53, 0x4d, 0x71, 0x39, 0x7a, 0x77, 0x68, 0x62, 0x4c, 0x32, 0x76, 0x6a, 0x30, 0x37, 0x46, 0x4f, 0x72, 0x4c, 0x7a, 0x4e, 0x42, 0x4c, 0x38, 0x33, 0x34, 0x41, 0x61, 0x53, 0x61, 0x54, 0x55, 0x71, 0x5a, 0x58, 0x33, 0x6e, 0x6f, 0x6c, 0x65, 0x6f, 0x6f, 0x6d, 0x73, 0x0a, 0x6c, 0x4d, 0x75, 0x6f, 0x61, 0x4a, 0x75, 0x76, 0x69, 0x6d, 0x55, 0x6e, 0x7a, 0x59, 0x6e, 0x75, 0x33, 0x59, 0x79, 0x31, 0x61, 0x79, 0x6c, 0x77, 0x51, 0x36, 0x42, 0x70, 0x43, 0x2b, 0x53, 0x35, 0x44, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x2f, 0x71, 0x48, 0x67, 0x63, 0x42, 0x34, 0x71, 0x41, 0x7a, 0x6c, 0x53, 0x57, 0x6b, 0x4b, 0x2b, 0x0a, 0x58, 0x4a, 0x47, 0x46, 0x65, 0x68, 0x69, 0x71, 0x54, 0x62, 0x55, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x0a, 0x67, 0x67, 0x45, 0x42, 0x41, 0x4d, 0x4a, 0x4b, 0x56, 0x76, 0x6f, 0x56, 0x49, 0x58, 0x73, 0x6f, 0x6f, 0x75, 0x6e, 0x6c, 0x48, 0x66, 0x76, 0x34, 0x4c, 0x63, 0x51, 0x35, 0x6c, 0x6b, 0x46, 0x4d, 0x4f, 0x79, 0x63, 0x73, 0x78, 0x47, 0x77, 0x59, 0x46, 0x59, 0x44, 0x47, 0x72, 0x4b, 0x39, 0x48, 0x57, 0x53, 0x38, 0x6d, 0x43, 0x2b, 0x4d, 0x32, 0x73, 0x4f, 0x38, 0x37, 0x2f, 0x6b, 0x4f, 0x58, 0x53, 0x54, 0x4b, 0x5a, 0x45, 0x68, 0x56, 0x62, 0x33, 0x78, 0x45, 0x70, 0x0a, 0x2f, 0x36, 0x74, 0x54, 0x2b, 0x4c, 0x76, 0x42, 0x65, 0x41, 0x2b, 0x73, 0x6e, 0x46, 0x4f, 0x76, 0x56, 0x37, 0x31, 0x6f, 0x6a, 0x44, 0x31, 0x70, 0x4d, 0x2f, 0x43, 0x6a, 0x6f, 0x43, 0x4e, 0x6a, 0x4f, 0x32, 0x52, 0x6e, 0x49, 0x6b, 0x53, 0x74, 0x31, 0x58, 0x48, 0x4c, 0x56, 0x69, 0x70, 0x34, 0x6b, 0x71, 0x4e, 0x50, 0x45, 0x6a, 0x45, 0x32, 0x4e, 0x75, 0x4c, 0x65, 0x2f, 0x67, 0x44, 0x45, 0x6f, 0x32, 0x41, 0x50, 0x4a, 0x36, 0x32, 0x67, 0x73, 0x49, 0x71, 0x31, 0x0a, 0x4e, 0x6e, 0x70, 0x53, 0x6f, 0x62, 0x30, 0x6e, 0x39, 0x43, 0x41, 0x6e, 0x59, 0x75, 0x68, 0x4e, 0x6c, 0x43, 0x51, 0x54, 0x35, 0x41, 0x6f, 0x45, 0x36, 0x54, 0x79, 0x72, 0x4c, 0x73, 0x68, 0x44, 0x43, 0x55, 0x72, 0x47, 0x59, 0x51, 0x54, 0x6c, 0x53, 0x54, 0x52, 0x2b, 0x30, 0x38, 0x54, 0x49, 0x39, 0x51, 0x2f, 0x41, 0x71, 0x75, 0x6d, 0x36, 0x56, 0x46, 0x37, 0x7a, 0x59, 0x79, 0x74, 0x50, 0x54, 0x31, 0x44, 0x55, 0x2f, 0x72, 0x6c, 0x37, 0x6d, 0x59, 0x77, 0x39, 0x0a, 0x77, 0x43, 0x36, 0x38, 0x41, 0x69, 0x76, 0x54, 0x78, 0x45, 0x44, 0x6b, 0x69, 0x67, 0x63, 0x78, 0x48, 0x70, 0x76, 0x4f, 0x4a, 0x70, 0x6b, 0x54, 0x2b, 0x78, 0x48, 0x71, 0x6d, 0x69, 0x49, 0x4d, 0x45, 0x52, 0x6e, 0x48, 0x58, 0x68, 0x75, 0x42, 0x55, 0x44, 0x44, 0x49, 0x6c, 0x68, 0x4a, 0x75, 0x35, 0x38, 0x74, 0x42, 0x66, 0x35, 0x45, 0x37, 0x6f, 0x6b, 0x65, 0x33, 0x56, 0x49, 0x41, 0x62, 0x33, 0x41, 0x44, 0x4d, 0x6d, 0x70, 0x44, 0x71, 0x77, 0x38, 0x4e, 0x51, 0x0a, 0x42, 0x6d, 0x49, 0x4d, 0x4d, 0x4d, 0x41, 0x56, 0x53, 0x4b, 0x65, 0x6f, 0x57, 0x58, 0x7a, 0x68, 0x72, 0x69, 0x4b, 0x69, 0x34, 0x67, 0x70, 0x36, 0x44, 0x2f, 0x70, 0x69, 0x71, 0x31, 0x4a, 0x4d, 0x34, 0x66, 0x48, 0x66, 0x79, 0x72, 0x36, 0x44, 0x44, 0x55, 0x49, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x65, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x43, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x4b, 0x7a, 0x43, 0x43, 0x41, 0x62, 0x47, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4b, 0x65, 0x33, 0x47, 0x32, 0x67, 0x6c, 0x61, 0x34, 0x45, 0x6e, 0x79, 0x63, 0x71, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x61, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x54, 0x4d, 0x42, 0x45, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x4b, 0x5a, 0x57, 0x31, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x42, 0x4c, 0x53, 0x54, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4c, 0x5a, 0x55, 0x31, 0x31, 0x5a, 0x47, 0x68, 0x79, 0x59, 0x53, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x78, 0x49, 0x44, 0x41, 0x65, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x46, 0x32, 0x56, 0x74, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x69, 0x42, 0x46, 0x0a, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x74, 0x49, 0x45, 0x4d, 0x7a, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x34, 0x4d, 0x44, 0x49, 0x78, 0x4f, 0x44, 0x45, 0x34, 0x4d, 0x7a, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x7a, 0x4d, 0x44, 0x49, 0x78, 0x4f, 0x44, 0x45, 0x34, 0x4d, 0x7a, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x77, 0x57, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x54, 0x43, 0x6d, 0x56, 0x74, 0x55, 0x32, 0x6c, 0x6e, 0x62, 0x69, 0x42, 0x51, 0x53, 0x30, 0x6b, 0x78, 0x46, 0x44, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x43, 0x32, 0x56, 0x4e, 0x64, 0x57, 0x52, 0x6f, 0x63, 0x6d, 0x45, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4d, 0x53, 0x41, 0x77, 0x48, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x0a, 0x45, 0x78, 0x64, 0x6c, 0x62, 0x56, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x67, 0x52, 0x55, 0x4e, 0x44, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4c, 0x53, 0x42, 0x44, 0x4d, 0x7a, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x50, 0x32, 0x6c, 0x59, 0x61, 0x35, 0x37, 0x4a, 0x68, 0x41, 0x64, 0x0a, 0x36, 0x62, 0x63, 0x69, 0x4d, 0x4b, 0x34, 0x47, 0x39, 0x49, 0x47, 0x7a, 0x73, 0x55, 0x4a, 0x78, 0x6c, 0x54, 0x6d, 0x38, 0x30, 0x31, 0x4c, 0x6a, 0x72, 0x36, 0x2f, 0x35, 0x38, 0x70, 0x63, 0x31, 0x6b, 0x6a, 0x5a, 0x47, 0x44, 0x6f, 0x65, 0x56, 0x6a, 0x62, 0x6b, 0x35, 0x57, 0x75, 0x6d, 0x37, 0x33, 0x39, 0x44, 0x2b, 0x79, 0x41, 0x64, 0x42, 0x50, 0x4c, 0x74, 0x56, 0x62, 0x34, 0x4f, 0x6a, 0x61, 0x76, 0x74, 0x69, 0x73, 0x49, 0x47, 0x4a, 0x41, 0x6e, 0x42, 0x39, 0x0a, 0x53, 0x4d, 0x56, 0x4b, 0x34, 0x2b, 0x6b, 0x69, 0x56, 0x43, 0x4a, 0x4e, 0x6b, 0x37, 0x74, 0x43, 0x44, 0x4b, 0x39, 0x33, 0x6e, 0x43, 0x4f, 0x6d, 0x66, 0x64, 0x64, 0x68, 0x45, 0x63, 0x35, 0x6c, 0x78, 0x2f, 0x68, 0x2f, 0x2f, 0x76, 0x58, 0x79, 0x71, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x50, 0x74, 0x61, 0x53, 0x4e, 0x43, 0x41, 0x49, 0x45, 0x44, 0x79, 0x71, 0x4f, 0x6b, 0x41, 0x0a, 0x42, 0x32, 0x6b, 0x5a, 0x64, 0x36, 0x66, 0x6d, 0x77, 0x2f, 0x54, 0x50, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x44, 0x41, 0x32, 0x67, 0x41, 0x0a, 0x4d, 0x47, 0x55, 0x43, 0x4d, 0x51, 0x43, 0x30, 0x32, 0x43, 0x38, 0x43, 0x69, 0x66, 0x32, 0x32, 0x54, 0x47, 0x4b, 0x36, 0x51, 0x30, 0x34, 0x54, 0x68, 0x48, 0x4b, 0x31, 0x72, 0x74, 0x30, 0x63, 0x33, 0x74, 0x61, 0x31, 0x33, 0x46, 0x61, 0x50, 0x57, 0x45, 0x42, 0x61, 0x4c, 0x64, 0x34, 0x67, 0x54, 0x43, 0x4b, 0x44, 0x79, 0x70, 0x4f, 0x6f, 0x66, 0x75, 0x34, 0x53, 0x51, 0x4d, 0x66, 0x57, 0x68, 0x30, 0x2f, 0x34, 0x33, 0x34, 0x55, 0x43, 0x4d, 0x42, 0x77, 0x55, 0x0a, 0x5a, 0x4f, 0x52, 0x38, 0x6c, 0x6f, 0x4d, 0x52, 0x6e, 0x4c, 0x44, 0x52, 0x57, 0x6d, 0x46, 0x4c, 0x70, 0x67, 0x39, 0x4a, 0x30, 0x77, 0x44, 0x38, 0x6f, 0x66, 0x7a, 0x6b, 0x70, 0x66, 0x39, 0x2f, 0x72, 0x64, 0x63, 0x77, 0x30, 0x4d, 0x64, 0x33, 0x66, 0x37, 0x36, 0x42, 0x42, 0x31, 0x55, 0x77, 0x55, 0x43, 0x41, 0x55, 0x39, 0x56, 0x63, 0x34, 0x43, 0x71, 0x67, 0x78, 0x55, 0x51, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x48, 0x6f, 0x6e, 0x67, 0x6b, 0x6f, 0x6e, 0x67, 0x20, 0x50, 0x6f, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x7a, 0x7a, 0x43, 0x43, 0x41, 0x37, 0x65, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x43, 0x42, 0x5a, 0x66, 0x69, 0x6b, 0x79, 0x6c, 0x37, 0x41, 0x44, 0x4a, 0x6b, 0x30, 0x44, 0x66, 0x78, 0x4d, 0x61, 0x75, 0x49, 0x37, 0x67, 0x63, 0x57, 0x71, 0x51, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x62, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x53, 0x45, 0x73, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x54, 0x43, 0x55, 0x68, 0x76, 0x62, 0x6d, 0x63, 0x67, 0x53, 0x32, 0x39, 0x75, 0x5a, 0x7a, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x78, 0x4d, 0x4a, 0x53, 0x47, 0x39, 0x75, 0x5a, 0x79, 0x42, 0x4c, 0x62, 0x32, 0x35, 0x6e, 0x4d, 0x52, 0x59, 0x77, 0x46, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x0a, 0x45, 0x77, 0x31, 0x49, 0x62, 0x32, 0x35, 0x6e, 0x61, 0x32, 0x39, 0x75, 0x5a, 0x79, 0x42, 0x51, 0x62, 0x33, 0x4e, 0x30, 0x4d, 0x53, 0x41, 0x77, 0x48, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x64, 0x49, 0x62, 0x32, 0x35, 0x6e, 0x61, 0x32, 0x39, 0x75, 0x5a, 0x79, 0x42, 0x51, 0x62, 0x33, 0x4e, 0x30, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x7a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4e, 0x7a, 0x41, 0x32, 0x0a, 0x4d, 0x44, 0x4d, 0x77, 0x4d, 0x6a, 0x49, 0x35, 0x4e, 0x44, 0x5a, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x6a, 0x41, 0x32, 0x4d, 0x44, 0x4d, 0x77, 0x4d, 0x6a, 0x49, 0x35, 0x4e, 0x44, 0x5a, 0x61, 0x4d, 0x47, 0x38, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x68, 0x4c, 0x4d, 0x52, 0x49, 0x77, 0x45, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x49, 0x45, 0x77, 0x6c, 0x49, 0x62, 0x32, 0x35, 0x6e, 0x49, 0x45, 0x74, 0x76, 0x0a, 0x62, 0x6d, 0x63, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x43, 0x55, 0x68, 0x76, 0x62, 0x6d, 0x63, 0x67, 0x53, 0x32, 0x39, 0x75, 0x5a, 0x7a, 0x45, 0x57, 0x4d, 0x42, 0x51, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4e, 0x53, 0x47, 0x39, 0x75, 0x5a, 0x32, 0x74, 0x76, 0x62, 0x6d, 0x63, 0x67, 0x55, 0x47, 0x39, 0x7a, 0x64, 0x44, 0x45, 0x67, 0x4d, 0x42, 0x34, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x58, 0x0a, 0x53, 0x47, 0x39, 0x75, 0x5a, 0x32, 0x74, 0x76, 0x62, 0x6d, 0x63, 0x67, 0x55, 0x47, 0x39, 0x7a, 0x64, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x4d, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x7a, 0x0a, 0x69, 0x4e, 0x66, 0x71, 0x7a, 0x67, 0x38, 0x67, 0x54, 0x72, 0x37, 0x6d, 0x31, 0x67, 0x4e, 0x74, 0x37, 0x6c, 0x6e, 0x38, 0x77, 0x6c, 0x66, 0x66, 0x4b, 0x57, 0x69, 0x68, 0x67, 0x77, 0x34, 0x2b, 0x61, 0x4d, 0x64, 0x6f, 0x57, 0x4a, 0x77, 0x63, 0x59, 0x45, 0x75, 0x4a, 0x51, 0x77, 0x79, 0x35, 0x31, 0x42, 0x57, 0x79, 0x37, 0x73, 0x46, 0x4f, 0x64, 0x65, 0x6d, 0x31, 0x70, 0x2b, 0x2f, 0x6c, 0x36, 0x54, 0x57, 0x5a, 0x35, 0x4d, 0x77, 0x63, 0x35, 0x30, 0x74, 0x66, 0x0a, 0x6a, 0x54, 0x4d, 0x77, 0x49, 0x44, 0x4e, 0x54, 0x32, 0x61, 0x61, 0x37, 0x31, 0x54, 0x34, 0x54, 0x6a, 0x75, 0x6b, 0x66, 0x68, 0x30, 0x6d, 0x74, 0x55, 0x43, 0x31, 0x51, 0x79, 0x68, 0x69, 0x2b, 0x41, 0x56, 0x69, 0x69, 0x45, 0x33, 0x43, 0x57, 0x75, 0x34, 0x6d, 0x49, 0x56, 0x6f, 0x42, 0x63, 0x2b, 0x4c, 0x30, 0x73, 0x50, 0x4f, 0x46, 0x4d, 0x56, 0x34, 0x69, 0x37, 0x30, 0x37, 0x6d, 0x56, 0x37, 0x38, 0x76, 0x48, 0x39, 0x74, 0x6f, 0x78, 0x64, 0x43, 0x69, 0x6d, 0x0a, 0x35, 0x6c, 0x53, 0x4a, 0x39, 0x55, 0x45, 0x78, 0x79, 0x75, 0x55, 0x6d, 0x47, 0x73, 0x32, 0x43, 0x34, 0x48, 0x44, 0x61, 0x4f, 0x79, 0x6d, 0x37, 0x31, 0x51, 0x50, 0x31, 0x6d, 0x62, 0x70, 0x56, 0x39, 0x57, 0x54, 0x52, 0x59, 0x41, 0x36, 0x7a, 0x69, 0x55, 0x6d, 0x34, 0x69, 0x69, 0x38, 0x46, 0x30, 0x6f, 0x52, 0x46, 0x4b, 0x48, 0x79, 0x50, 0x61, 0x46, 0x41, 0x53, 0x65, 0x50, 0x77, 0x4c, 0x74, 0x56, 0x50, 0x4c, 0x77, 0x70, 0x67, 0x63, 0x68, 0x4b, 0x4f, 0x65, 0x0a, 0x73, 0x4c, 0x34, 0x6a, 0x70, 0x4e, 0x72, 0x63, 0x79, 0x43, 0x73, 0x65, 0x32, 0x6d, 0x35, 0x46, 0x48, 0x6f, 0x6d, 0x59, 0x32, 0x76, 0x6b, 0x41, 0x4c, 0x67, 0x62, 0x70, 0x44, 0x44, 0x74, 0x77, 0x31, 0x56, 0x41, 0x6c, 0x69, 0x4a, 0x6e, 0x4c, 0x7a, 0x58, 0x4e, 0x67, 0x39, 0x39, 0x58, 0x2f, 0x4e, 0x57, 0x66, 0x46, 0x6f, 0x62, 0x78, 0x65, 0x71, 0x38, 0x31, 0x4b, 0x75, 0x45, 0x58, 0x72, 0x79, 0x47, 0x67, 0x65, 0x44, 0x51, 0x30, 0x55, 0x52, 0x68, 0x4c, 0x6a, 0x0a, 0x30, 0x6d, 0x52, 0x69, 0x69, 0x6b, 0x4b, 0x59, 0x76, 0x4c, 0x54, 0x47, 0x43, 0x41, 0x6a, 0x34, 0x2f, 0x61, 0x68, 0x4d, 0x5a, 0x4a, 0x78, 0x32, 0x41, 0x62, 0x30, 0x76, 0x71, 0x57, 0x77, 0x7a, 0x44, 0x39, 0x67, 0x2f, 0x4b, 0x4c, 0x67, 0x38, 0x61, 0x51, 0x46, 0x43, 0x68, 0x6e, 0x35, 0x70, 0x77, 0x63, 0x6b, 0x47, 0x79, 0x75, 0x56, 0x36, 0x52, 0x6d, 0x58, 0x70, 0x77, 0x74, 0x5a, 0x51, 0x51, 0x53, 0x34, 0x2f, 0x74, 0x2b, 0x54, 0x74, 0x62, 0x4e, 0x65, 0x2f, 0x0a, 0x4a, 0x67, 0x45, 0x52, 0x6f, 0x68, 0x59, 0x70, 0x53, 0x6d, 0x73, 0x30, 0x42, 0x70, 0x44, 0x73, 0x45, 0x39, 0x4b, 0x32, 0x2b, 0x32, 0x70, 0x32, 0x30, 0x6a, 0x7a, 0x74, 0x38, 0x4e, 0x59, 0x74, 0x33, 0x65, 0x45, 0x56, 0x37, 0x4b, 0x4f, 0x62, 0x4c, 0x79, 0x7a, 0x4a, 0x50, 0x69, 0x76, 0x6b, 0x61, 0x54, 0x76, 0x2f, 0x63, 0x69, 0x57, 0x78, 0x4e, 0x6f, 0x5a, 0x62, 0x78, 0x33, 0x39, 0x72, 0x69, 0x31, 0x55, 0x62, 0x53, 0x73, 0x55, 0x67, 0x59, 0x54, 0x32, 0x75, 0x0a, 0x79, 0x31, 0x44, 0x68, 0x43, 0x44, 0x71, 0x2b, 0x73, 0x49, 0x39, 0x6a, 0x51, 0x56, 0x4d, 0x77, 0x43, 0x46, 0x6b, 0x38, 0x6d, 0x42, 0x31, 0x33, 0x75, 0x6d, 0x4f, 0x52, 0x65, 0x73, 0x6f, 0x51, 0x55, 0x47, 0x43, 0x2f, 0x38, 0x4e, 0x65, 0x38, 0x6c, 0x59, 0x65, 0x50, 0x6c, 0x38, 0x58, 0x2b, 0x6c, 0x32, 0x6f, 0x42, 0x6c, 0x4b, 0x4e, 0x38, 0x57, 0x34, 0x55, 0x64, 0x4b, 0x6a, 0x6b, 0x36, 0x30, 0x46, 0x53, 0x68, 0x30, 0x54, 0x6c, 0x78, 0x6e, 0x66, 0x30, 0x68, 0x0a, 0x2b, 0x62, 0x56, 0x37, 0x38, 0x4f, 0x4c, 0x67, 0x41, 0x6f, 0x39, 0x75, 0x6c, 0x69, 0x51, 0x6c, 0x4c, 0x4b, 0x41, 0x65, 0x4c, 0x4b, 0x6a, 0x45, 0x69, 0x61, 0x66, 0x76, 0x37, 0x5a, 0x6b, 0x47, 0x4c, 0x37, 0x59, 0x4b, 0x54, 0x45, 0x2f, 0x62, 0x6f, 0x73, 0x77, 0x33, 0x47, 0x71, 0x39, 0x48, 0x68, 0x53, 0x32, 0x4b, 0x58, 0x38, 0x51, 0x30, 0x4e, 0x45, 0x77, 0x41, 0x2f, 0x52, 0x69, 0x54, 0x5a, 0x78, 0x50, 0x52, 0x4e, 0x2b, 0x5a, 0x49, 0x74, 0x49, 0x73, 0x47, 0x0a, 0x78, 0x56, 0x64, 0x37, 0x47, 0x59, 0x59, 0x4b, 0x65, 0x63, 0x73, 0x41, 0x79, 0x56, 0x4b, 0x76, 0x51, 0x76, 0x38, 0x33, 0x6a, 0x2b, 0x47, 0x6a, 0x48, 0x6e, 0x6f, 0x39, 0x55, 0x4b, 0x74, 0x6a, 0x42, 0x75, 0x63, 0x56, 0x74, 0x54, 0x2b, 0x32, 0x52, 0x54, 0x65, 0x55, 0x4e, 0x37, 0x46, 0x2b, 0x38, 0x6b, 0x6a, 0x44, 0x66, 0x38, 0x56, 0x31, 0x2f, 0x70, 0x65, 0x4e, 0x52, 0x59, 0x38, 0x61, 0x70, 0x78, 0x70, 0x79, 0x4b, 0x42, 0x70, 0x41, 0x44, 0x77, 0x49, 0x44, 0x0a, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x32, 0x4d, 0x77, 0x59, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x4d, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x51, 0x58, 0x6e, 0x63, 0x30, 0x65, 0x0a, 0x69, 0x39, 0x59, 0x35, 0x4b, 0x33, 0x44, 0x54, 0x58, 0x4e, 0x53, 0x67, 0x75, 0x42, 0x2b, 0x77, 0x41, 0x50, 0x7a, 0x46, 0x59, 0x54, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x46, 0x35, 0x33, 0x4e, 0x48, 0x6f, 0x76, 0x57, 0x4f, 0x53, 0x74, 0x77, 0x30, 0x31, 0x7a, 0x55, 0x6f, 0x4c, 0x67, 0x66, 0x73, 0x41, 0x44, 0x38, 0x78, 0x57, 0x45, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x0a, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x46, 0x62, 0x56, 0x65, 0x32, 0x37, 0x6d, 0x49, 0x67, 0x48, 0x53, 0x51, 0x70, 0x73, 0x59, 0x31, 0x51, 0x37, 0x58, 0x5a, 0x69, 0x4e, 0x63, 0x34, 0x2f, 0x36, 0x67, 0x78, 0x35, 0x4c, 0x53, 0x36, 0x5a, 0x53, 0x74, 0x53, 0x36, 0x4c, 0x47, 0x37, 0x42, 0x4a, 0x38, 0x64, 0x4e, 0x56, 0x49, 0x30, 0x6c, 0x6b, 0x55, 0x6d, 0x63, 0x44, 0x72, 0x75, 0x64, 0x48, 0x72, 0x39, 0x45, 0x67, 0x77, 0x0a, 0x57, 0x36, 0x32, 0x6e, 0x56, 0x33, 0x4f, 0x5a, 0x71, 0x64, 0x50, 0x6c, 0x74, 0x39, 0x45, 0x75, 0x57, 0x53, 0x52, 0x59, 0x33, 0x47, 0x67, 0x75, 0x4c, 0x6d, 0x4c, 0x59, 0x61, 0x75, 0x52, 0x77, 0x43, 0x79, 0x30, 0x67, 0x55, 0x43, 0x43, 0x6b, 0x4d, 0x70, 0x58, 0x52, 0x41, 0x4a, 0x69, 0x37, 0x30, 0x2f, 0x33, 0x33, 0x4d, 0x76, 0x4a, 0x4a, 0x72, 0x73, 0x5a, 0x36, 0x34, 0x45, 0x65, 0x2b, 0x62, 0x73, 0x37, 0x4c, 0x6f, 0x33, 0x49, 0x36, 0x4c, 0x57, 0x6c, 0x64, 0x0a, 0x79, 0x38, 0x6a, 0x6f, 0x52, 0x54, 0x6e, 0x55, 0x2b, 0x6b, 0x4c, 0x42, 0x45, 0x55, 0x78, 0x33, 0x58, 0x5a, 0x4c, 0x37, 0x61, 0x76, 0x39, 0x59, 0x52, 0x4f, 0x58, 0x72, 0x67, 0x5a, 0x36, 0x76, 0x6f, 0x4a, 0x6d, 0x74, 0x76, 0x71, 0x6b, 0x42, 0x5a, 0x73, 0x73, 0x34, 0x48, 0x54, 0x7a, 0x66, 0x51, 0x78, 0x2f, 0x30, 0x54, 0x57, 0x36, 0x30, 0x75, 0x68, 0x64, 0x47, 0x2f, 0x48, 0x33, 0x39, 0x68, 0x34, 0x46, 0x35, 0x61, 0x67, 0x30, 0x7a, 0x44, 0x2f, 0x6f, 0x76, 0x0a, 0x2b, 0x42, 0x53, 0x35, 0x67, 0x4c, 0x4e, 0x64, 0x54, 0x61, 0x71, 0x58, 0x34, 0x66, 0x6e, 0x6b, 0x47, 0x4d, 0x58, 0x34, 0x31, 0x54, 0x69, 0x4d, 0x4a, 0x6a, 0x7a, 0x39, 0x38, 0x69, 0x6a, 0x69, 0x37, 0x6c, 0x70, 0x4a, 0x69, 0x43, 0x7a, 0x66, 0x65, 0x54, 0x32, 0x4f, 0x6e, 0x70, 0x41, 0x38, 0x76, 0x55, 0x46, 0x4b, 0x4f, 0x74, 0x31, 0x62, 0x39, 0x70, 0x71, 0x30, 0x7a, 0x6a, 0x38, 0x6c, 0x4d, 0x48, 0x38, 0x79, 0x66, 0x61, 0x49, 0x44, 0x6c, 0x4e, 0x44, 0x63, 0x0a, 0x65, 0x71, 0x46, 0x53, 0x33, 0x6d, 0x36, 0x54, 0x6a, 0x52, 0x67, 0x6d, 0x2f, 0x56, 0x57, 0x73, 0x76, 0x59, 0x2b, 0x62, 0x30, 0x73, 0x2b, 0x76, 0x35, 0x34, 0x59, 0x73, 0x79, 0x78, 0x38, 0x4a, 0x62, 0x36, 0x4e, 0x76, 0x71, 0x59, 0x54, 0x55, 0x63, 0x37, 0x39, 0x4e, 0x6f, 0x58, 0x51, 0x62, 0x54, 0x69, 0x4e, 0x67, 0x38, 0x73, 0x77, 0x4f, 0x71, 0x6e, 0x2b, 0x6b, 0x6e, 0x45, 0x77, 0x6c, 0x71, 0x4c, 0x4a, 0x6d, 0x4f, 0x7a, 0x6a, 0x2f, 0x32, 0x5a, 0x51, 0x77, 0x0a, 0x39, 0x6e, 0x4b, 0x45, 0x76, 0x6d, 0x68, 0x56, 0x45, 0x41, 0x2f, 0x47, 0x63, 0x79, 0x77, 0x57, 0x61, 0x5a, 0x4d, 0x48, 0x2f, 0x72, 0x46, 0x46, 0x37, 0x62, 0x75, 0x69, 0x56, 0x57, 0x71, 0x77, 0x32, 0x72, 0x56, 0x4b, 0x41, 0x69, 0x55, 0x6e, 0x68, 0x64, 0x65, 0x33, 0x74, 0x34, 0x5a, 0x45, 0x46, 0x6f, 0x6c, 0x73, 0x67, 0x43, 0x73, 0x2b, 0x6c, 0x36, 0x6d, 0x63, 0x31, 0x58, 0x35, 0x56, 0x54, 0x4d, 0x62, 0x65, 0x52, 0x52, 0x41, 0x63, 0x36, 0x75, 0x6b, 0x37, 0x0a, 0x6e, 0x77, 0x4e, 0x54, 0x37, 0x75, 0x35, 0x36, 0x41, 0x51, 0x49, 0x57, 0x65, 0x4e, 0x54, 0x6f, 0x77, 0x72, 0x35, 0x47, 0x64, 0x6f, 0x67, 0x54, 0x50, 0x79, 0x4b, 0x37, 0x53, 0x42, 0x49, 0x64, 0x55, 0x67, 0x43, 0x30, 0x41, 0x6e, 0x34, 0x68, 0x47, 0x68, 0x36, 0x63, 0x4a, 0x66, 0x54, 0x7a, 0x50, 0x56, 0x34, 0x65, 0x30, 0x68, 0x7a, 0x35, 0x73, 0x79, 0x32, 0x32, 0x39, 0x7a, 0x64, 0x63, 0x78, 0x73, 0x73, 0x68, 0x54, 0x72, 0x44, 0x33, 0x6d, 0x55, 0x63, 0x59, 0x0a, 0x68, 0x63, 0x45, 0x72, 0x75, 0x6c, 0x57, 0x75, 0x42, 0x75, 0x72, 0x51, 0x42, 0x37, 0x4c, 0x63, 0x71, 0x39, 0x43, 0x43, 0x6c, 0x6e, 0x58, 0x4f, 0x30, 0x6c, 0x44, 0x2b, 0x6d, 0x65, 0x66, 0x50, 0x4c, 0x35, 0x2f, 0x6e, 0x64, 0x74, 0x46, 0x68, 0x4b, 0x76, 0x73, 0x68, 0x75, 0x7a, 0x48, 0x51, 0x71, 0x70, 0x39, 0x48, 0x70, 0x4c, 0x49, 0x69, 0x79, 0x68, 0x59, 0x36, 0x55, 0x46, 0x66, 0x45, 0x57, 0x30, 0x4e, 0x6e, 0x78, 0x57, 0x56, 0x69, 0x41, 0x30, 0x6b, 0x42, 0x0a, 0x36, 0x30, 0x50, 0x5a, 0x32, 0x50, 0x69, 0x65, 0x72, 0x63, 0x2b, 0x78, 0x59, 0x77, 0x35, 0x46, 0x39, 0x4b, 0x42, 0x61, 0x4c, 0x4a, 0x73, 0x74, 0x78, 0x61, 0x62, 0x41, 0x72, 0x61, 0x68, 0x48, 0x39, 0x43, 0x64, 0x4d, 0x4f, 0x41, 0x30, 0x75, 0x47, 0x30, 0x6b, 0x37, 0x55, 0x76, 0x54, 0x6f, 0x69, 0x49, 0x4d, 0x72, 0x56, 0x43, 0x6a, 0x55, 0x38, 0x6a, 0x56, 0x53, 0x74, 0x44, 0x4b, 0x44, 0x59, 0x6d, 0x6c, 0x6b, 0x44, 0x4a, 0x47, 0x63, 0x6e, 0x35, 0x66, 0x71, 0x0a, 0x64, 0x42, 0x62, 0x39, 0x48, 0x78, 0x45, 0x47, 0x6d, 0x70, 0x76, 0x30, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 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, 0x34, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x47, 0x53, 0x7a, 0x43, 0x43, 0x42, 0x44, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x52, 0x41, 0x4e, 0x6d, 0x31, 0x51, 0x33, 0x2b, 0x76, 0x71, 0x54, 0x6b, 0x50, 0x41, 0x41, 0x41, 0x41, 0x41, 0x46, 0x56, 0x6c, 0x72, 0x56, 0x67, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x67, 0x62, 0x34, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x59, 0x77, 0x46, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x31, 0x46, 0x62, 0x6e, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x4d, 0x53, 0x67, 0x77, 0x4a, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x39, 0x54, 0x5a, 0x57, 0x55, 0x67, 0x64, 0x33, 0x64, 0x33, 0x4c, 0x6d, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x75, 0x0a, 0x62, 0x6d, 0x56, 0x30, 0x4c, 0x32, 0x78, 0x6c, 0x5a, 0x32, 0x46, 0x73, 0x4c, 0x58, 0x52, 0x6c, 0x63, 0x6d, 0x31, 0x7a, 0x4d, 0x54, 0x6b, 0x77, 0x4e, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x7a, 0x41, 0x6f, 0x59, 0x79, 0x6b, 0x67, 0x4d, 0x6a, 0x41, 0x78, 0x4e, 0x53, 0x42, 0x46, 0x62, 0x6e, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x49, 0x43, 0x30, 0x67, 0x5a, 0x6d, 0x39, 0x79, 0x49, 0x47, 0x46, 0x31, 0x0a, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x36, 0x5a, 0x57, 0x51, 0x67, 0x64, 0x58, 0x4e, 0x6c, 0x49, 0x47, 0x39, 0x75, 0x62, 0x48, 0x6b, 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4b, 0x55, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x0a, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x41, 0x74, 0x49, 0x45, 0x63, 0x30, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x31, 0x4d, 0x44, 0x55, 0x79, 0x4e, 0x7a, 0x45, 0x78, 0x4d, 0x54, 0x45, 0x78, 0x4e, 0x6c, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x33, 0x4d, 0x54, 0x49, 0x79, 0x4e, 0x7a, 0x45, 0x78, 0x4e, 0x44, 0x45, 0x78, 0x4e, 0x6c, 0x6f, 0x77, 0x67, 0x62, 0x34, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x0a, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x59, 0x77, 0x46, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x31, 0x46, 0x62, 0x6e, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x4d, 0x53, 0x67, 0x77, 0x4a, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x39, 0x54, 0x5a, 0x57, 0x55, 0x67, 0x64, 0x33, 0x64, 0x33, 0x4c, 0x6d, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x75, 0x62, 0x6d, 0x56, 0x30, 0x0a, 0x4c, 0x32, 0x78, 0x6c, 0x5a, 0x32, 0x46, 0x73, 0x4c, 0x58, 0x52, 0x6c, 0x63, 0x6d, 0x31, 0x7a, 0x4d, 0x54, 0x6b, 0x77, 0x4e, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x7a, 0x41, 0x6f, 0x59, 0x79, 0x6b, 0x67, 0x4d, 0x6a, 0x41, 0x78, 0x4e, 0x53, 0x42, 0x46, 0x62, 0x6e, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x49, 0x43, 0x30, 0x67, 0x5a, 0x6d, 0x39, 0x79, 0x49, 0x47, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x0a, 0x63, 0x6d, 0x6c, 0x36, 0x5a, 0x57, 0x51, 0x67, 0x64, 0x58, 0x4e, 0x6c, 0x49, 0x47, 0x39, 0x75, 0x62, 0x48, 0x6b, 0x78, 0x4d, 0x6a, 0x41, 0x77, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x4b, 0x55, 0x56, 0x75, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x0a, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x41, 0x74, 0x49, 0x45, 0x63, 0x30, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x45, 0x41, 0x73, 0x65, 0x77, 0x73, 0x51, 0x75, 0x37, 0x69, 0x30, 0x54, 0x44, 0x2f, 0x70, 0x5a, 0x4a, 0x48, 0x34, 0x69, 0x33, 0x44, 0x0a, 0x75, 0x6d, 0x53, 0x58, 0x62, 0x63, 0x72, 0x33, 0x44, 0x62, 0x56, 0x5a, 0x77, 0x62, 0x50, 0x4c, 0x71, 0x47, 0x67, 0x5a, 0x32, 0x4b, 0x2b, 0x45, 0x62, 0x54, 0x42, 0x77, 0x58, 0x58, 0x37, 0x7a, 0x4c, 0x74, 0x4a, 0x54, 0x6d, 0x65, 0x48, 0x2b, 0x48, 0x31, 0x37, 0x5a, 0x53, 0x4b, 0x39, 0x64, 0x45, 0x34, 0x33, 0x62, 0x2f, 0x32, 0x4d, 0x7a, 0x54, 0x64, 0x4d, 0x41, 0x41, 0x72, 0x7a, 0x45, 0x2b, 0x4e, 0x45, 0x47, 0x43, 0x4a, 0x52, 0x35, 0x57, 0x49, 0x6f, 0x56, 0x0a, 0x33, 0x69, 0x6d, 0x7a, 0x2f, 0x66, 0x33, 0x45, 0x54, 0x2b, 0x69, 0x71, 0x34, 0x71, 0x41, 0x37, 0x65, 0x63, 0x32, 0x2f, 0x61, 0x30, 0x4d, 0x79, 0x33, 0x64, 0x6c, 0x30, 0x45, 0x4c, 0x6e, 0x33, 0x39, 0x47, 0x6a, 0x55, 0x75, 0x39, 0x43, 0x48, 0x31, 0x61, 0x70, 0x4c, 0x69, 0x69, 0x70, 0x76, 0x4b, 0x67, 0x53, 0x31, 0x73, 0x71, 0x62, 0x48, 0x6f, 0x48, 0x72, 0x6d, 0x53, 0x4b, 0x76, 0x53, 0x30, 0x56, 0x6e, 0x4d, 0x31, 0x6e, 0x34, 0x6a, 0x35, 0x70, 0x64, 0x73, 0x0a, 0x38, 0x45, 0x4c, 0x6c, 0x33, 0x46, 0x46, 0x4c, 0x46, 0x55, 0x48, 0x74, 0x53, 0x55, 0x72, 0x4a, 0x33, 0x68, 0x43, 0x58, 0x31, 0x6e, 0x62, 0x42, 0x37, 0x36, 0x57, 0x31, 0x4e, 0x68, 0x53, 0x58, 0x4e, 0x64, 0x68, 0x34, 0x49, 0x6a, 0x56, 0x53, 0x37, 0x30, 0x4f, 0x39, 0x32, 0x79, 0x66, 0x62, 0x59, 0x56, 0x61, 0x43, 0x4e, 0x4e, 0x7a, 0x4c, 0x69, 0x47, 0x41, 0x4d, 0x43, 0x31, 0x72, 0x6c, 0x4c, 0x41, 0x48, 0x47, 0x56, 0x4b, 0x2f, 0x58, 0x71, 0x73, 0x45, 0x51, 0x0a, 0x65, 0x39, 0x49, 0x46, 0x57, 0x72, 0x68, 0x41, 0x6e, 0x6f, 0x61, 0x6e, 0x77, 0x35, 0x43, 0x47, 0x41, 0x6c, 0x5a, 0x53, 0x43, 0x58, 0x71, 0x63, 0x30, 0x69, 0x65, 0x43, 0x55, 0x30, 0x70, 0x6c, 0x55, 0x6d, 0x72, 0x31, 0x50, 0x4f, 0x65, 0x6f, 0x38, 0x70, 0x79, 0x76, 0x69, 0x37, 0x33, 0x54, 0x44, 0x74, 0x54, 0x55, 0x58, 0x6d, 0x36, 0x48, 0x6e, 0x6d, 0x6f, 0x39, 0x52, 0x52, 0x33, 0x52, 0x58, 0x52, 0x76, 0x30, 0x36, 0x51, 0x71, 0x73, 0x59, 0x4a, 0x6e, 0x37, 0x0a, 0x69, 0x62, 0x54, 0x2f, 0x6d, 0x43, 0x7a, 0x50, 0x66, 0x42, 0x33, 0x70, 0x41, 0x71, 0x6f, 0x45, 0x6d, 0x68, 0x36, 0x34, 0x33, 0x49, 0x68, 0x75, 0x4a, 0x62, 0x4e, 0x73, 0x5a, 0x76, 0x63, 0x38, 0x6b, 0x50, 0x4e, 0x58, 0x77, 0x62, 0x4d, 0x76, 0x39, 0x57, 0x33, 0x79, 0x2b, 0x38, 0x71, 0x68, 0x2b, 0x43, 0x6d, 0x64, 0x52, 0x6f, 0x75, 0x7a, 0x61, 0x76, 0x62, 0x6d, 0x5a, 0x77, 0x65, 0x2b, 0x4c, 0x47, 0x63, 0x4b, 0x4b, 0x68, 0x39, 0x61, 0x73, 0x6a, 0x35, 0x58, 0x0a, 0x78, 0x4e, 0x4d, 0x68, 0x49, 0x57, 0x4e, 0x6c, 0x55, 0x70, 0x45, 0x62, 0x73, 0x5a, 0x6d, 0x4f, 0x65, 0x58, 0x37, 0x6d, 0x36, 0x34, 0x30, 0x41, 0x32, 0x56, 0x71, 0x71, 0x36, 0x6e, 0x50, 0x6f, 0x70, 0x49, 0x49, 0x43, 0x52, 0x35, 0x62, 0x2b, 0x57, 0x34, 0x35, 0x55, 0x59, 0x61, 0x50, 0x72, 0x4c, 0x30, 0x73, 0x77, 0x73, 0x49, 0x73, 0x6a, 0x64, 0x58, 0x4a, 0x38, 0x49, 0x54, 0x7a, 0x49, 0x39, 0x76, 0x46, 0x30, 0x31, 0x42, 0x78, 0x37, 0x6f, 0x77, 0x56, 0x56, 0x0a, 0x37, 0x72, 0x74, 0x4e, 0x4f, 0x7a, 0x4b, 0x2b, 0x6d, 0x6e, 0x64, 0x6d, 0x6e, 0x71, 0x78, 0x70, 0x6b, 0x43, 0x49, 0x48, 0x48, 0x32, 0x45, 0x36, 0x6c, 0x72, 0x37, 0x6c, 0x6d, 0x6b, 0x2f, 0x4d, 0x42, 0x54, 0x77, 0x6f, 0x57, 0x64, 0x50, 0x42, 0x44, 0x46, 0x53, 0x6f, 0x57, 0x57, 0x47, 0x39, 0x79, 0x48, 0x4a, 0x4d, 0x36, 0x4e, 0x79, 0x66, 0x68, 0x33, 0x2b, 0x39, 0x6e, 0x45, 0x67, 0x32, 0x58, 0x70, 0x57, 0x6a, 0x44, 0x72, 0x6b, 0x34, 0x4a, 0x46, 0x58, 0x38, 0x0a, 0x64, 0x57, 0x62, 0x72, 0x41, 0x75, 0x4d, 0x49, 0x4e, 0x43, 0x6c, 0x4b, 0x78, 0x75, 0x4d, 0x72, 0x4c, 0x7a, 0x4f, 0x67, 0x32, 0x71, 0x4f, 0x47, 0x70, 0x52, 0x4b, 0x58, 0x2f, 0x59, 0x41, 0x72, 0x32, 0x68, 0x52, 0x43, 0x34, 0x35, 0x4b, 0x39, 0x50, 0x76, 0x4a, 0x64, 0x58, 0x6d, 0x64, 0x30, 0x4c, 0x68, 0x79, 0x49, 0x52, 0x79, 0x6b, 0x30, 0x58, 0x2b, 0x49, 0x79, 0x71, 0x4a, 0x77, 0x6c, 0x4e, 0x34, 0x79, 0x36, 0x6d, 0x41, 0x43, 0x58, 0x69, 0x30, 0x6d, 0x57, 0x0a, 0x48, 0x76, 0x30, 0x6c, 0x69, 0x71, 0x7a, 0x63, 0x32, 0x74, 0x68, 0x64, 0x64, 0x47, 0x35, 0x6d, 0x73, 0x50, 0x39, 0x45, 0x33, 0x36, 0x45, 0x59, 0x78, 0x72, 0x35, 0x49, 0x4c, 0x7a, 0x65, 0x55, 0x65, 0x50, 0x69, 0x56, 0x53, 0x6a, 0x39, 0x2f, 0x45, 0x31, 0x35, 0x64, 0x57, 0x66, 0x31, 0x30, 0x68, 0x6b, 0x4e, 0x6a, 0x63, 0x30, 0x6b, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x0a, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4a, 0x38, 0x34, 0x78, 0x46, 0x59, 0x6a, 0x77, 0x7a, 0x6e, 0x6f, 0x6f, 0x48, 0x46, 0x73, 0x36, 0x46, 0x52, 0x4d, 0x35, 0x4f, 0x67, 0x36, 0x73, 0x62, 0x39, 0x6e, 0x0a, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x41, 0x51, 0x41, 0x53, 0x35, 0x55, 0x4b, 0x6d, 0x65, 0x34, 0x73, 0x50, 0x44, 0x4f, 0x52, 0x47, 0x70, 0x62, 0x5a, 0x67, 0x51, 0x49, 0x65, 0x4d, 0x4a, 0x58, 0x36, 0x74, 0x75, 0x47, 0x67, 0x75, 0x57, 0x38, 0x5a, 0x41, 0x64, 0x6a, 0x77, 0x44, 0x2b, 0x4d, 0x6c, 0x5a, 0x39, 0x50, 0x4f, 0x72, 0x59, 0x73, 0x34, 0x51, 0x0a, 0x6a, 0x62, 0x52, 0x61, 0x5a, 0x49, 0x78, 0x6f, 0x77, 0x4c, 0x42, 0x79, 0x51, 0x7a, 0x54, 0x53, 0x47, 0x77, 0x76, 0x32, 0x4c, 0x46, 0x50, 0x53, 0x79, 0x70, 0x42, 0x4c, 0x68, 0x6d, 0x62, 0x38, 0x71, 0x6f, 0x4d, 0x69, 0x39, 0x49, 0x73, 0x61, 0x62, 0x79, 0x5a, 0x49, 0x72, 0x48, 0x5a, 0x33, 0x43, 0x4c, 0x2f, 0x46, 0x6d, 0x46, 0x7a, 0x30, 0x4a, 0x6f, 0x6d, 0x65, 0x65, 0x38, 0x4f, 0x35, 0x5a, 0x44, 0x49, 0x42, 0x66, 0x39, 0x50, 0x44, 0x33, 0x56, 0x68, 0x74, 0x0a, 0x37, 0x4c, 0x47, 0x72, 0x68, 0x46, 0x56, 0x30, 0x64, 0x34, 0x51, 0x45, 0x4a, 0x31, 0x4a, 0x72, 0x68, 0x6b, 0x7a, 0x4f, 0x33, 0x62, 0x6c, 0x6c, 0x2f, 0x39, 0x62, 0x47, 0x58, 0x70, 0x2b, 0x61, 0x45, 0x4a, 0x6c, 0x4c, 0x64, 0x57, 0x72, 0x2b, 0x61, 0x75, 0x6d, 0x58, 0x49, 0x4f, 0x54, 0x6b, 0x64, 0x6e, 0x72, 0x47, 0x30, 0x43, 0x53, 0x71, 0x6b, 0x4d, 0x30, 0x67, 0x6b, 0x4c, 0x70, 0x48, 0x5a, 0x50, 0x74, 0x2f, 0x42, 0x37, 0x4e, 0x54, 0x65, 0x4c, 0x55, 0x4b, 0x0a, 0x59, 0x76, 0x4a, 0x7a, 0x51, 0x38, 0x35, 0x42, 0x4b, 0x34, 0x46, 0x71, 0x4c, 0x6f, 0x55, 0x57, 0x6c, 0x46, 0x50, 0x55, 0x61, 0x31, 0x39, 0x79, 0x49, 0x71, 0x74, 0x52, 0x4c, 0x55, 0x4c, 0x56, 0x41, 0x4a, 0x79, 0x5a, 0x76, 0x39, 0x36, 0x37, 0x6c, 0x44, 0x74, 0x58, 0x2f, 0x5a, 0x72, 0x31, 0x68, 0x73, 0x74, 0x57, 0x4f, 0x31, 0x75, 0x49, 0x41, 0x65, 0x56, 0x38, 0x4b, 0x45, 0x73, 0x44, 0x2b, 0x55, 0x6d, 0x44, 0x66, 0x4c, 0x4a, 0x2f, 0x66, 0x4f, 0x50, 0x74, 0x0a, 0x6a, 0x71, 0x46, 0x2f, 0x59, 0x46, 0x4f, 0x4f, 0x56, 0x5a, 0x31, 0x51, 0x4e, 0x42, 0x49, 0x50, 0x74, 0x35, 0x64, 0x37, 0x62, 0x49, 0x64, 0x4b, 0x52, 0x4f, 0x66, 0x31, 0x62, 0x65, 0x79, 0x41, 0x4e, 0x2f, 0x42, 0x59, 0x47, 0x57, 0x35, 0x4b, 0x61, 0x48, 0x62, 0x77, 0x48, 0x35, 0x4c, 0x6b, 0x36, 0x72, 0x57, 0x53, 0x30, 0x32, 0x46, 0x52, 0x45, 0x41, 0x75, 0x74, 0x70, 0x39, 0x6c, 0x66, 0x78, 0x31, 0x2f, 0x63, 0x48, 0x36, 0x4e, 0x63, 0x6a, 0x4b, 0x46, 0x2b, 0x0a, 0x6d, 0x37, 0x65, 0x65, 0x30, 0x31, 0x5a, 0x76, 0x5a, 0x6c, 0x34, 0x48, 0x6c, 0x69, 0x44, 0x74, 0x43, 0x33, 0x54, 0x37, 0x5a, 0x6b, 0x36, 0x4c, 0x45, 0x52, 0x58, 0x70, 0x67, 0x55, 0x6c, 0x2b, 0x62, 0x37, 0x44, 0x55, 0x55, 0x48, 0x38, 0x69, 0x31, 0x31, 0x39, 0x6c, 0x41, 0x67, 0x32, 0x6d, 0x39, 0x49, 0x55, 0x65, 0x32, 0x4b, 0x34, 0x47, 0x53, 0x30, 0x71, 0x6e, 0x30, 0x6a, 0x46, 0x6d, 0x77, 0x76, 0x6a, 0x4f, 0x35, 0x51, 0x69, 0x6d, 0x70, 0x41, 0x4b, 0x57, 0x0a, 0x52, 0x47, 0x68, 0x58, 0x78, 0x4e, 0x55, 0x7a, 0x7a, 0x78, 0x6b, 0x76, 0x46, 0x4d, 0x53, 0x55, 0x48, 0x48, 0x75, 0x6b, 0x32, 0x66, 0x43, 0x66, 0x44, 0x72, 0x47, 0x41, 0x34, 0x74, 0x47, 0x65, 0x45, 0x57, 0x53, 0x70, 0x69, 0x42, 0x45, 0x36, 0x64, 0x6f, 0x4c, 0x6c, 0x59, 0x73, 0x4b, 0x41, 0x32, 0x4b, 0x53, 0x44, 0x37, 0x5a, 0x50, 0x76, 0x66, 0x43, 0x2b, 0x51, 0x73, 0x44, 0x4a, 0x4d, 0x6c, 0x68, 0x56, 0x6f, 0x53, 0x46, 0x4c, 0x55, 0x6d, 0x51, 0x6a, 0x41, 0x0a, 0x4a, 0x4f, 0x67, 0x63, 0x34, 0x37, 0x4f, 0x6c, 0x49, 0x51, 0x36, 0x53, 0x77, 0x4a, 0x41, 0x66, 0x7a, 0x79, 0x42, 0x66, 0x79, 0x6a, 0x73, 0x34, 0x78, 0x37, 0x64, 0x74, 0x4f, 0x76, 0x50, 0x6d, 0x52, 0x4c, 0x67, 0x4f, 0x4d, 0x57, 0x75, 0x49, 0x6a, 0x6e, 0x44, 0x72, 0x6e, 0x42, 0x64, 0x53, 0x71, 0x45, 0x47, 0x55, 0x4c, 0x6f, 0x65, 0x32, 0x35, 0x36, 0x59, 0x53, 0x78, 0x58, 0x58, 0x66, 0x57, 0x38, 0x41, 0x4b, 0x62, 0x6e, 0x75, 0x6b, 0x35, 0x46, 0x36, 0x47, 0x0a, 0x2b, 0x54, 0x61, 0x55, 0x33, 0x33, 0x66, 0x44, 0x36, 0x51, 0x33, 0x41, 0x4f, 0x66, 0x46, 0x35, 0x75, 0x30, 0x61, 0x4f, 0x71, 0x30, 0x4e, 0x5a, 0x4a, 0x37, 0x63, 0x67, 0x75, 0x79, 0x50, 0x70, 0x56, 0x6b, 0x41, 0x68, 0x37, 0x44, 0x45, 0x39, 0x5a, 0x61, 0x70, 0x44, 0x38, 0x6a, 0x33, 0x66, 0x63, 0x45, 0x54, 0x68, 0x75, 0x6b, 0x30, 0x6d, 0x45, 0x44, 0x75, 0x59, 0x6e, 0x2f, 0x50, 0x49, 0x6a, 0x68, 0x73, 0x34, 0x56, 0x69, 0x46, 0x71, 0x55, 0x5a, 0x50, 0x54, 0x0a, 0x6b, 0x63, 0x70, 0x47, 0x32, 0x6f, 0x6d, 0x33, 0x50, 0x56, 0x4f, 0x44, 0x4c, 0x41, 0x67, 0x66, 0x69, 0x34, 0x39, 0x54, 0x33, 0x66, 0x2b, 0x73, 0x48, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x45, 0x43, 0x43, 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, 0x32, 0x30, 0x31, 0x37, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x57, 0x54, 0x43, 0x43, 0x41, 0x64, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x5a, 0x76, 0x49, 0x39, 0x72, 0x34, 0x66, 0x65, 0x69, 0x37, 0x46, 0x4b, 0x36, 0x67, 0x78, 0x58, 0x4d, 0x51, 0x48, 0x43, 0x37, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x6c, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x65, 0x4d, 0x42, 0x77, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x56, 0x54, 0x57, 0x6c, 0x6a, 0x63, 0x6d, 0x39, 0x7a, 0x62, 0x32, 0x5a, 0x30, 0x49, 0x45, 0x4e, 0x76, 0x63, 0x6e, 0x42, 0x76, 0x63, 0x6d, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x4d, 0x54, 0x59, 0x77, 0x4e, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x31, 0x4e, 0x61, 0x57, 0x4e, 0x79, 0x62, 0x33, 0x4e, 0x76, 0x5a, 0x6e, 0x51, 0x67, 0x52, 0x55, 0x4e, 0x44, 0x0a, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x55, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x44, 0x49, 0x77, 0x4d, 0x54, 0x63, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x6b, 0x78, 0x4d, 0x6a, 0x45, 0x34, 0x4d, 0x6a, 0x4d, 0x77, 0x4e, 0x6a, 0x51, 0x31, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x49, 0x77, 0x4e, 0x7a, 0x45, 0x34, 0x0a, 0x4d, 0x6a, 0x4d, 0x78, 0x4e, 0x6a, 0x41, 0x30, 0x57, 0x6a, 0x42, 0x6c, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x65, 0x4d, 0x42, 0x77, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x56, 0x54, 0x57, 0x6c, 0x6a, 0x63, 0x6d, 0x39, 0x7a, 0x62, 0x32, 0x5a, 0x30, 0x49, 0x45, 0x4e, 0x76, 0x63, 0x6e, 0x42, 0x76, 0x63, 0x6d, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x4d, 0x54, 0x59, 0x77, 0x0a, 0x4e, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x31, 0x4e, 0x61, 0x57, 0x4e, 0x79, 0x62, 0x33, 0x4e, 0x76, 0x5a, 0x6e, 0x51, 0x67, 0x52, 0x55, 0x4e, 0x44, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x55, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x44, 0x49, 0x77, 0x4d, 0x54, 0x63, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x0a, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x54, 0x55, 0x76, 0x44, 0x30, 0x43, 0x51, 0x6e, 0x56, 0x42, 0x45, 0x79, 0x50, 0x4e, 0x67, 0x41, 0x53, 0x47, 0x41, 0x6c, 0x45, 0x76, 0x61, 0x71, 0x69, 0x42, 0x59, 0x67, 0x74, 0x6c, 0x7a, 0x50, 0x62, 0x4b, 0x6e, 0x52, 0x35, 0x76, 0x53, 0x6d, 0x5a, 0x52, 0x6f, 0x67, 0x50, 0x5a, 0x6e, 0x5a, 0x48, 0x36, 0x0a, 0x74, 0x68, 0x61, 0x78, 0x6a, 0x47, 0x37, 0x65, 0x66, 0x4d, 0x33, 0x62, 0x65, 0x61, 0x59, 0x76, 0x7a, 0x72, 0x76, 0x4f, 0x63, 0x53, 0x2f, 0x6c, 0x70, 0x61, 0x73, 0x6f, 0x37, 0x47, 0x4d, 0x45, 0x5a, 0x70, 0x6e, 0x34, 0x2b, 0x76, 0x4b, 0x54, 0x45, 0x41, 0x58, 0x68, 0x67, 0x53, 0x68, 0x43, 0x34, 0x38, 0x5a, 0x6f, 0x39, 0x4f, 0x59, 0x62, 0x68, 0x47, 0x42, 0x4b, 0x69, 0x61, 0x2f, 0x74, 0x65, 0x51, 0x38, 0x37, 0x7a, 0x76, 0x48, 0x32, 0x52, 0x50, 0x55, 0x42, 0x0a, 0x65, 0x4d, 0x43, 0x6a, 0x56, 0x44, 0x42, 0x53, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54, 0x49, 0x79, 0x35, 0x6c, 0x79, 0x63, 0x46, 0x49, 0x4d, 0x0a, 0x2b, 0x4f, 0x61, 0x2b, 0x73, 0x67, 0x52, 0x58, 0x4b, 0x53, 0x72, 0x50, 0x51, 0x68, 0x44, 0x74, 0x4e, 0x54, 0x41, 0x51, 0x42, 0x67, 0x6b, 0x72, 0x42, 0x67, 0x45, 0x45, 0x41, 0x59, 0x49, 0x33, 0x46, 0x51, 0x45, 0x45, 0x41, 0x77, 0x49, 0x42, 0x41, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6f, 0x41, 0x44, 0x42, 0x6c, 0x41, 0x6a, 0x42, 0x59, 0x38, 0x6b, 0x33, 0x71, 0x44, 0x50, 0x6c, 0x66, 0x0a, 0x58, 0x75, 0x35, 0x67, 0x4b, 0x63, 0x73, 0x36, 0x38, 0x74, 0x76, 0x57, 0x4d, 0x6f, 0x51, 0x5a, 0x50, 0x33, 0x7a, 0x56, 0x4c, 0x38, 0x4b, 0x78, 0x7a, 0x4a, 0x4f, 0x75, 0x55, 0x4c, 0x73, 0x4a, 0x4d, 0x73, 0x62, 0x47, 0x37, 0x58, 0x37, 0x4a, 0x4e, 0x70, 0x51, 0x53, 0x35, 0x47, 0x69, 0x46, 0x42, 0x71, 0x49, 0x62, 0x30, 0x43, 0x38, 0x43, 0x4d, 0x51, 0x43, 0x5a, 0x36, 0x52, 0x61, 0x30, 0x44, 0x76, 0x70, 0x57, 0x53, 0x4e, 0x53, 0x6b, 0x4d, 0x42, 0x61, 0x52, 0x0a, 0x65, 0x4e, 0x74, 0x55, 0x6a, 0x47, 0x55, 0x42, 0x69, 0x75, 0x64, 0x51, 0x5a, 0x73, 0x49, 0x78, 0x74, 0x7a, 0x6d, 0x36, 0x75, 0x42, 0x6f, 0x69, 0x42, 0x30, 0x37, 0x38, 0x61, 0x31, 0x51, 0x57, 0x49, 0x50, 0x38, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x44, 0x45, 0x32, 0x6d, 0x54, 0x33, 0x4d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x52, 0x53, 0x41, 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, 0x32, 0x30, 0x31, 0x37, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x71, 0x44, 0x43, 0x43, 0x41, 0x35, 0x43, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x48, 0x74, 0x4f, 0x58, 0x43, 0x56, 0x2f, 0x59, 0x74, 0x4c, 0x4e, 0x48, 0x63, 0x42, 0x36, 0x71, 0x76, 0x6e, 0x39, 0x46, 0x73, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x44, 0x42, 0x6c, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x65, 0x4d, 0x42, 0x77, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x56, 0x54, 0x57, 0x6c, 0x6a, 0x63, 0x6d, 0x39, 0x7a, 0x62, 0x32, 0x5a, 0x30, 0x49, 0x45, 0x4e, 0x76, 0x63, 0x6e, 0x42, 0x76, 0x63, 0x6d, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x4d, 0x54, 0x59, 0x77, 0x4e, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x31, 0x4e, 0x61, 0x57, 0x4e, 0x79, 0x62, 0x33, 0x4e, 0x76, 0x5a, 0x6e, 0x51, 0x67, 0x0a, 0x55, 0x6c, 0x4e, 0x42, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x55, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x44, 0x49, 0x77, 0x4d, 0x54, 0x63, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x6b, 0x78, 0x4d, 0x6a, 0x45, 0x34, 0x4d, 0x6a, 0x49, 0x31, 0x4d, 0x54, 0x49, 0x79, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x49, 0x77, 0x0a, 0x4e, 0x7a, 0x45, 0x34, 0x4d, 0x6a, 0x4d, 0x77, 0x4d, 0x44, 0x49, 0x7a, 0x57, 0x6a, 0x42, 0x6c, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x65, 0x4d, 0x42, 0x77, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x56, 0x54, 0x57, 0x6c, 0x6a, 0x63, 0x6d, 0x39, 0x7a, 0x62, 0x32, 0x5a, 0x30, 0x49, 0x45, 0x4e, 0x76, 0x63, 0x6e, 0x42, 0x76, 0x63, 0x6d, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x0a, 0x4d, 0x54, 0x59, 0x77, 0x4e, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x31, 0x4e, 0x61, 0x57, 0x4e, 0x79, 0x62, 0x33, 0x4e, 0x76, 0x5a, 0x6e, 0x51, 0x67, 0x55, 0x6c, 0x4e, 0x42, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x55, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x44, 0x49, 0x77, 0x4d, 0x54, 0x63, 0x77, 0x0a, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x44, 0x4b, 0x57, 0x37, 0x36, 0x55, 0x4d, 0x34, 0x77, 0x70, 0x6c, 0x5a, 0x45, 0x57, 0x43, 0x70, 0x57, 0x39, 0x52, 0x32, 0x4c, 0x42, 0x69, 0x66, 0x4f, 0x5a, 0x4e, 0x74, 0x39, 0x47, 0x6b, 0x4d, 0x6d, 0x6c, 0x0a, 0x37, 0x58, 0x68, 0x71, 0x62, 0x30, 0x65, 0x52, 0x61, 0x50, 0x67, 0x6e, 0x5a, 0x31, 0x41, 0x7a, 0x48, 0x61, 0x47, 0x6d, 0x2b, 0x2b, 0x44, 0x6c, 0x51, 0x36, 0x4f, 0x45, 0x41, 0x6c, 0x63, 0x42, 0x58, 0x5a, 0x78, 0x49, 0x51, 0x49, 0x4a, 0x54, 0x45, 0x4c, 0x79, 0x2f, 0x78, 0x7a, 0x74, 0x6f, 0x6b, 0x4c, 0x61, 0x43, 0x4c, 0x65, 0x58, 0x30, 0x5a, 0x64, 0x44, 0x4d, 0x62, 0x52, 0x6e, 0x4d, 0x6c, 0x66, 0x6c, 0x37, 0x72, 0x45, 0x71, 0x55, 0x72, 0x51, 0x37, 0x65, 0x0a, 0x53, 0x30, 0x4d, 0x64, 0x68, 0x77, 0x65, 0x53, 0x45, 0x35, 0x43, 0x41, 0x67, 0x32, 0x51, 0x31, 0x4f, 0x51, 0x54, 0x38, 0x35, 0x65, 0x6c, 0x73, 0x73, 0x37, 0x59, 0x66, 0x55, 0x4a, 0x51, 0x34, 0x5a, 0x56, 0x42, 0x63, 0x46, 0x30, 0x61, 0x35, 0x74, 0x6f, 0x57, 0x31, 0x48, 0x4c, 0x55, 0x58, 0x36, 0x4e, 0x5a, 0x46, 0x6e, 0x64, 0x69, 0x79, 0x4a, 0x72, 0x44, 0x4b, 0x78, 0x48, 0x42, 0x4b, 0x72, 0x6d, 0x43, 0x6b, 0x33, 0x62, 0x50, 0x5a, 0x37, 0x50, 0x77, 0x37, 0x0a, 0x31, 0x56, 0x64, 0x79, 0x76, 0x44, 0x2f, 0x49, 0x79, 0x62, 0x4c, 0x65, 0x53, 0x32, 0x76, 0x34, 0x49, 0x32, 0x77, 0x44, 0x77, 0x41, 0x57, 0x39, 0x6c, 0x63, 0x66, 0x4e, 0x63, 0x7a, 0x74, 0x6d, 0x67, 0x47, 0x54, 0x6a, 0x47, 0x71, 0x77, 0x75, 0x2b, 0x55, 0x63, 0x46, 0x38, 0x67, 0x61, 0x32, 0x6d, 0x33, 0x50, 0x31, 0x65, 0x44, 0x4e, 0x62, 0x78, 0x36, 0x48, 0x37, 0x4a, 0x79, 0x71, 0x68, 0x74, 0x4a, 0x71, 0x52, 0x6a, 0x4a, 0x48, 0x54, 0x4f, 0x6f, 0x49, 0x2b, 0x0a, 0x64, 0x6b, 0x43, 0x30, 0x7a, 0x56, 0x4a, 0x68, 0x55, 0x58, 0x41, 0x6f, 0x50, 0x38, 0x58, 0x46, 0x57, 0x76, 0x4c, 0x4a, 0x6a, 0x45, 0x6d, 0x37, 0x46, 0x46, 0x74, 0x4e, 0x79, 0x50, 0x39, 0x6e, 0x54, 0x55, 0x77, 0x53, 0x6c, 0x71, 0x33, 0x31, 0x2f, 0x6e, 0x69, 0x6f, 0x6c, 0x34, 0x66, 0x58, 0x2f, 0x56, 0x34, 0x67, 0x67, 0x4e, 0x79, 0x68, 0x53, 0x79, 0x4c, 0x37, 0x31, 0x49, 0x6d, 0x74, 0x75, 0x73, 0x35, 0x48, 0x6c, 0x30, 0x64, 0x56, 0x65, 0x34, 0x39, 0x46, 0x0a, 0x79, 0x47, 0x63, 0x6f, 0x68, 0x4a, 0x55, 0x63, 0x61, 0x44, 0x44, 0x76, 0x37, 0x30, 0x6e, 0x67, 0x4e, 0x58, 0x74, 0x6b, 0x35, 0x35, 0x69, 0x77, 0x6c, 0x4e, 0x70, 0x4e, 0x68, 0x54, 0x73, 0x2b, 0x56, 0x63, 0x51, 0x6f, 0x72, 0x31, 0x66, 0x7a, 0x6e, 0x68, 0x50, 0x62, 0x52, 0x69, 0x65, 0x66, 0x48, 0x71, 0x4a, 0x65, 0x52, 0x49, 0x4f, 0x6b, 0x70, 0x63, 0x72, 0x56, 0x45, 0x37, 0x4e, 0x4c, 0x50, 0x38, 0x54, 0x6a, 0x77, 0x75, 0x61, 0x47, 0x59, 0x61, 0x52, 0x53, 0x0a, 0x4d, 0x4c, 0x6c, 0x36, 0x49, 0x45, 0x39, 0x76, 0x44, 0x7a, 0x68, 0x54, 0x79, 0x7a, 0x4d, 0x4d, 0x45, 0x79, 0x75, 0x50, 0x31, 0x70, 0x71, 0x39, 0x4b, 0x73, 0x67, 0x74, 0x73, 0x52, 0x78, 0x39, 0x53, 0x31, 0x48, 0x4b, 0x52, 0x39, 0x46, 0x49, 0x4a, 0x33, 0x4a, 0x64, 0x68, 0x2b, 0x76, 0x56, 0x52, 0x65, 0x5a, 0x49, 0x5a, 0x5a, 0x32, 0x76, 0x55, 0x70, 0x43, 0x36, 0x57, 0x36, 0x49, 0x59, 0x5a, 0x56, 0x63, 0x53, 0x6e, 0x32, 0x69, 0x35, 0x31, 0x42, 0x56, 0x72, 0x0a, 0x6c, 0x4d, 0x52, 0x70, 0x49, 0x70, 0x6a, 0x30, 0x4d, 0x2b, 0x44, 0x74, 0x2b, 0x56, 0x47, 0x4f, 0x51, 0x56, 0x44, 0x4a, 0x4e, 0x45, 0x39, 0x32, 0x6b, 0x4b, 0x7a, 0x38, 0x4f, 0x4d, 0x48, 0x59, 0x34, 0x58, 0x75, 0x35, 0x34, 0x2b, 0x4f, 0x55, 0x34, 0x55, 0x5a, 0x70, 0x79, 0x77, 0x34, 0x4b, 0x55, 0x47, 0x73, 0x54, 0x75, 0x71, 0x77, 0x50, 0x4e, 0x31, 0x71, 0x33, 0x45, 0x72, 0x57, 0x51, 0x67, 0x52, 0x35, 0x57, 0x72, 0x6c, 0x63, 0x69, 0x68, 0x74, 0x6e, 0x4a, 0x0a, 0x30, 0x74, 0x48, 0x58, 0x55, 0x65, 0x4f, 0x72, 0x4f, 0x38, 0x5a, 0x56, 0x2f, 0x52, 0x34, 0x4f, 0x30, 0x33, 0x51, 0x4b, 0x30, 0x64, 0x71, 0x71, 0x36, 0x6d, 0x6d, 0x34, 0x6c, 0x79, 0x69, 0x50, 0x53, 0x4d, 0x51, 0x48, 0x2b, 0x46, 0x4a, 0x44, 0x4f, 0x76, 0x54, 0x4b, 0x56, 0x54, 0x55, 0x73, 0x73, 0x4b, 0x5a, 0x71, 0x77, 0x4a, 0x7a, 0x35, 0x38, 0x6f, 0x48, 0x68, 0x45, 0x6d, 0x72, 0x41, 0x52, 0x64, 0x6c, 0x6e, 0x73, 0x38, 0x37, 0x2f, 0x49, 0x36, 0x4b, 0x4a, 0x0a, 0x43, 0x6c, 0x54, 0x55, 0x46, 0x4c, 0x6b, 0x71, 0x71, 0x4e, 0x66, 0x73, 0x2b, 0x61, 0x76, 0x4e, 0x4a, 0x56, 0x67, 0x79, 0x65, 0x59, 0x2b, 0x51, 0x57, 0x35, 0x67, 0x35, 0x78, 0x41, 0x67, 0x47, 0x77, 0x61, 0x78, 0x2f, 0x44, 0x6a, 0x30, 0x41, 0x70, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x31, 0x51, 0x77, 0x55, 0x6a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x0a, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x43, 0x63, 0x74, 0x5a, 0x66, 0x34, 0x61, 0x79, 0x63, 0x49, 0x38, 0x61, 0x77, 0x7a, 0x6e, 0x6a, 0x77, 0x4e, 0x6e, 0x70, 0x76, 0x37, 0x74, 0x4e, 0x73, 0x69, 0x4d, 0x77, 0x45, 0x41, 0x59, 0x4a, 0x4b, 0x77, 0x59, 0x42, 0x42, 0x41, 0x47, 0x43, 0x0a, 0x4e, 0x78, 0x55, 0x42, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x41, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4b, 0x79, 0x76, 0x50, 0x6c, 0x33, 0x43, 0x45, 0x5a, 0x61, 0x4a, 0x6a, 0x71, 0x50, 0x6e, 0x6b, 0x74, 0x61, 0x58, 0x46, 0x62, 0x67, 0x54, 0x6f, 0x71, 0x5a, 0x43, 0x4c, 0x67, 0x4c, 0x4e, 0x46, 0x67, 0x56, 0x5a, 0x4a, 0x38, 0x6f, 0x67, 0x0a, 0x36, 0x4c, 0x71, 0x34, 0x36, 0x42, 0x72, 0x73, 0x54, 0x61, 0x69, 0x58, 0x56, 0x71, 0x35, 0x6c, 0x51, 0x37, 0x47, 0x50, 0x41, 0x4a, 0x74, 0x53, 0x7a, 0x56, 0x58, 0x4e, 0x55, 0x7a, 0x6c, 0x74, 0x59, 0x6b, 0x79, 0x4c, 0x44, 0x56, 0x74, 0x38, 0x4c, 0x6b, 0x53, 0x2f, 0x67, 0x78, 0x43, 0x50, 0x38, 0x31, 0x4f, 0x43, 0x67, 0x4d, 0x4e, 0x50, 0x4f, 0x73, 0x64, 0x75, 0x45, 0x54, 0x2f, 0x6d, 0x34, 0x78, 0x61, 0x52, 0x68, 0x50, 0x74, 0x74, 0x68, 0x48, 0x38, 0x30, 0x0a, 0x64, 0x4b, 0x32, 0x4a, 0x70, 0x38, 0x36, 0x35, 0x31, 0x39, 0x65, 0x66, 0x68, 0x47, 0x53, 0x53, 0x76, 0x70, 0x57, 0x68, 0x72, 0x51, 0x6c, 0x54, 0x4d, 0x39, 0x33, 0x75, 0x43, 0x75, 0x70, 0x4b, 0x55, 0x59, 0x35, 0x76, 0x56, 0x61, 0x75, 0x36, 0x74, 0x5a, 0x52, 0x47, 0x72, 0x6f, 0x78, 0x2f, 0x32, 0x4b, 0x4a, 0x51, 0x4a, 0x57, 0x56, 0x67, 0x67, 0x45, 0x62, 0x62, 0x4d, 0x77, 0x53, 0x75, 0x62, 0x4c, 0x57, 0x59, 0x64, 0x46, 0x51, 0x6c, 0x33, 0x4a, 0x50, 0x6b, 0x0a, 0x2b, 0x4f, 0x4e, 0x56, 0x46, 0x54, 0x32, 0x34, 0x62, 0x63, 0x4d, 0x4b, 0x70, 0x42, 0x4c, 0x42, 0x61, 0x59, 0x56, 0x75, 0x33, 0x32, 0x54, 0x78, 0x55, 0x35, 0x6e, 0x68, 0x53, 0x6e, 0x55, 0x67, 0x6e, 0x5a, 0x55, 0x50, 0x35, 0x4e, 0x62, 0x63, 0x41, 0x2f, 0x46, 0x5a, 0x47, 0x4f, 0x68, 0x48, 0x69, 0x62, 0x4a, 0x58, 0x57, 0x70, 0x53, 0x32, 0x71, 0x64, 0x67, 0x58, 0x4b, 0x78, 0x64, 0x4a, 0x35, 0x58, 0x62, 0x4c, 0x77, 0x56, 0x61, 0x5a, 0x4f, 0x6a, 0x65, 0x78, 0x0a, 0x2f, 0x32, 0x6b, 0x73, 0x6b, 0x5a, 0x47, 0x54, 0x34, 0x64, 0x39, 0x4d, 0x6f, 0x7a, 0x64, 0x32, 0x54, 0x61, 0x47, 0x66, 0x2b, 0x47, 0x30, 0x65, 0x48, 0x64, 0x50, 0x36, 0x37, 0x50, 0x76, 0x30, 0x52, 0x52, 0x30, 0x54, 0x62, 0x63, 0x2f, 0x33, 0x57, 0x65, 0x55, 0x69, 0x4a, 0x33, 0x49, 0x72, 0x68, 0x76, 0x4e, 0x58, 0x75, 0x7a, 0x44, 0x74, 0x4a, 0x45, 0x33, 0x63, 0x66, 0x56, 0x61, 0x37, 0x6f, 0x37, 0x50, 0x34, 0x4e, 0x48, 0x6d, 0x4a, 0x77, 0x65, 0x44, 0x79, 0x0a, 0x41, 0x6d, 0x48, 0x33, 0x70, 0x76, 0x77, 0x50, 0x75, 0x78, 0x77, 0x58, 0x43, 0x36, 0x35, 0x42, 0x32, 0x58, 0x79, 0x39, 0x4a, 0x36, 0x50, 0x39, 0x4c, 0x6a, 0x72, 0x52, 0x6b, 0x35, 0x53, 0x78, 0x63, 0x78, 0x30, 0x6b, 0x69, 0x36, 0x39, 0x62, 0x49, 0x49, 0x6d, 0x74, 0x74, 0x32, 0x64, 0x6d, 0x65, 0x66, 0x55, 0x36, 0x78, 0x71, 0x61, 0x57, 0x4d, 0x2f, 0x35, 0x54, 0x6b, 0x73, 0x68, 0x47, 0x73, 0x52, 0x47, 0x52, 0x78, 0x70, 0x6c, 0x2f, 0x6a, 0x38, 0x6e, 0x57, 0x0a, 0x5a, 0x6a, 0x45, 0x67, 0x51, 0x52, 0x43, 0x48, 0x4c, 0x51, 0x7a, 0x57, 0x77, 0x61, 0x38, 0x30, 0x6d, 0x4d, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x54, 0x56, 0x39, 0x48, 0x42, 0x38, 0x44, 0x78, 0x36, 0x6a, 0x4b, 0x58, 0x42, 0x2f, 0x5a, 0x55, 0x68, 0x6f, 0x48, 0x48, 0x42, 0x6b, 0x32, 0x64, 0x78, 0x45, 0x75, 0x71, 0x50, 0x69, 0x41, 0x70, 0x70, 0x47, 0x57, 0x53, 0x5a, 0x49, 0x31, 0x62, 0x37, 0x72, 0x43, 0x6f, 0x75, 0x63, 0x4c, 0x35, 0x6d, 0x78, 0x41, 0x79, 0x45, 0x0a, 0x37, 0x2b, 0x57, 0x4c, 0x38, 0x35, 0x4d, 0x42, 0x2b, 0x47, 0x71, 0x51, 0x6b, 0x32, 0x64, 0x4c, 0x73, 0x6d, 0x69, 0x6a, 0x74, 0x57, 0x4b, 0x50, 0x36, 0x54, 0x2b, 0x4d, 0x65, 0x6a, 0x74, 0x65, 0x44, 0x2b, 0x65, 0x4d, 0x75, 0x4d, 0x5a, 0x38, 0x37, 0x7a, 0x66, 0x39, 0x64, 0x4f, 0x4c, 0x49, 0x54, 0x7a, 0x4e, 0x79, 0x34, 0x5a, 0x51, 0x35, 0x62, 0x62, 0x30, 0x53, 0x72, 0x37, 0x34, 0x4d, 0x54, 0x6e, 0x42, 0x38, 0x47, 0x32, 0x2b, 0x4e, 0x73, 0x7a, 0x4b, 0x54, 0x0a, 0x63, 0x30, 0x51, 0x57, 0x62, 0x65, 0x6a, 0x30, 0x39, 0x2b, 0x43, 0x56, 0x67, 0x49, 0x2b, 0x57, 0x58, 0x54, 0x69, 0x6b, 0x39, 0x4b, 0x76, 0x65, 0x43, 0x6a, 0x43, 0x48, 0x6b, 0x39, 0x68, 0x4e, 0x41, 0x48, 0x46, 0x69, 0x52, 0x53, 0x64, 0x4c, 0x4f, 0x6b, 0x4b, 0x45, 0x57, 0x33, 0x39, 0x6c, 0x74, 0x32, 0x63, 0x30, 0x55, 0x69, 0x32, 0x63, 0x46, 0x6d, 0x75, 0x71, 0x71, 0x4e, 0x68, 0x37, 0x6f, 0x30, 0x4a, 0x4d, 0x63, 0x63, 0x63, 0x4d, 0x79, 0x6a, 0x36, 0x44, 0x0a, 0x35, 0x4b, 0x62, 0x76, 0x74, 0x77, 0x45, 0x77, 0x58, 0x6c, 0x47, 0x6a, 0x65, 0x66, 0x56, 0x77, 0x61, 0x61, 0x5a, 0x42, 0x52, 0x41, 0x2b, 0x47, 0x73, 0x43, 0x79, 0x52, 0x78, 0x6a, 0x33, 0x71, 0x72, 0x67, 0x2b, 0x45, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x65, 0x2d, 0x53, 0x7a, 0x69, 0x67, 0x6e, 0x6f, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x31, 0x37, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x51, 0x44, 0x43, 0x43, 0x41, 0x65, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4d, 0x41, 0x56, 0x52, 0x49, 0x37, 0x79, 0x48, 0x39, 0x6c, 0x31, 0x6b, 0x4e, 0x39, 0x51, 0x51, 0x4b, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x43, 0x4d, 0x48, 0x45, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x68, 0x56, 0x4d, 0x52, 0x45, 0x77, 0x0a, 0x44, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x44, 0x41, 0x68, 0x43, 0x64, 0x57, 0x52, 0x68, 0x63, 0x47, 0x56, 0x7a, 0x64, 0x44, 0x45, 0x57, 0x4d, 0x42, 0x51, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x4e, 0x54, 0x57, 0x6c, 0x6a, 0x63, 0x6d, 0x39, 0x7a, 0x5a, 0x57, 0x4d, 0x67, 0x54, 0x48, 0x52, 0x6b, 0x4c, 0x6a, 0x45, 0x58, 0x4d, 0x42, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x59, 0x51, 0x77, 0x4f, 0x56, 0x6b, 0x46, 0x55, 0x53, 0x46, 0x55, 0x74, 0x0a, 0x4d, 0x6a, 0x4d, 0x31, 0x4f, 0x44, 0x51, 0x30, 0x4f, 0x54, 0x63, 0x78, 0x48, 0x6a, 0x41, 0x63, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x46, 0x57, 0x55, 0x74, 0x55, 0x33, 0x70, 0x70, 0x5a, 0x32, 0x35, 0x76, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x6a, 0x41, 0x78, 0x4e, 0x7a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4e, 0x7a, 0x41, 0x34, 0x4d, 0x6a, 0x49, 0x78, 0x4d, 0x6a, 0x41, 0x33, 0x4d, 0x44, 0x5a, 0x61, 0x0a, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x6a, 0x41, 0x34, 0x4d, 0x6a, 0x49, 0x78, 0x4d, 0x6a, 0x41, 0x33, 0x4d, 0x44, 0x5a, 0x61, 0x4d, 0x48, 0x45, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x68, 0x56, 0x4d, 0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x44, 0x41, 0x68, 0x43, 0x64, 0x57, 0x52, 0x68, 0x63, 0x47, 0x56, 0x7a, 0x64, 0x44, 0x45, 0x57, 0x4d, 0x42, 0x51, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x43, 0x67, 0x77, 0x4e, 0x54, 0x57, 0x6c, 0x6a, 0x63, 0x6d, 0x39, 0x7a, 0x5a, 0x57, 0x4d, 0x67, 0x54, 0x48, 0x52, 0x6b, 0x4c, 0x6a, 0x45, 0x58, 0x4d, 0x42, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x59, 0x51, 0x77, 0x4f, 0x56, 0x6b, 0x46, 0x55, 0x53, 0x46, 0x55, 0x74, 0x4d, 0x6a, 0x4d, 0x31, 0x4f, 0x44, 0x51, 0x30, 0x4f, 0x54, 0x63, 0x78, 0x48, 0x6a, 0x41, 0x63, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x46, 0x57, 0x55, 0x74, 0x55, 0x33, 0x70, 0x70, 0x0a, 0x5a, 0x32, 0x35, 0x76, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x6a, 0x41, 0x78, 0x4e, 0x7a, 0x42, 0x5a, 0x4d, 0x42, 0x4d, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x77, 0x45, 0x48, 0x41, 0x30, 0x49, 0x41, 0x42, 0x4a, 0x62, 0x63, 0x50, 0x59, 0x72, 0x59, 0x73, 0x48, 0x74, 0x76, 0x78, 0x69, 0x65, 0x2b, 0x52, 0x4a, 0x43, 0x78, 0x0a, 0x73, 0x31, 0x59, 0x56, 0x65, 0x34, 0x35, 0x44, 0x4a, 0x48, 0x30, 0x61, 0x68, 0x46, 0x6e, 0x75, 0x59, 0x32, 0x69, 0x79, 0x78, 0x6c, 0x36, 0x48, 0x30, 0x42, 0x56, 0x49, 0x48, 0x71, 0x69, 0x51, 0x72, 0x62, 0x31, 0x54, 0x6f, 0x74, 0x72, 0x65, 0x4f, 0x70, 0x43, 0x6d, 0x59, 0x46, 0x39, 0x6f, 0x4d, 0x72, 0x57, 0x47, 0x51, 0x64, 0x2b, 0x48, 0x57, 0x79, 0x78, 0x37, 0x78, 0x66, 0x35, 0x38, 0x65, 0x74, 0x71, 0x6a, 0x59, 0x7a, 0x42, 0x68, 0x4d, 0x41, 0x38, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x48, 0x45, 0x52, 0x55, 0x49, 0x30, 0x61, 0x72, 0x42, 0x65, 0x41, 0x79, 0x78, 0x72, 0x38, 0x37, 0x47, 0x79, 0x5a, 0x44, 0x76, 0x0a, 0x76, 0x7a, 0x41, 0x45, 0x77, 0x44, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x4d, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x53, 0x48, 0x45, 0x52, 0x55, 0x49, 0x30, 0x61, 0x72, 0x42, 0x65, 0x41, 0x79, 0x78, 0x72, 0x38, 0x37, 0x47, 0x79, 0x5a, 0x44, 0x76, 0x76, 0x7a, 0x41, 0x45, 0x77, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x67, 0x4e, 0x4a, 0x41, 0x44, 0x42, 0x47, 0x41, 0x69, 0x45, 0x41, 0x0a, 0x74, 0x56, 0x66, 0x64, 0x31, 0x34, 0x70, 0x56, 0x43, 0x7a, 0x62, 0x68, 0x68, 0x6b, 0x54, 0x36, 0x31, 0x4e, 0x6c, 0x6f, 0x6a, 0x62, 0x6a, 0x63, 0x49, 0x34, 0x71, 0x4b, 0x44, 0x64, 0x51, 0x76, 0x66, 0x65, 0x70, 0x7a, 0x37, 0x4c, 0x39, 0x4e, 0x62, 0x4b, 0x67, 0x43, 0x49, 0x51, 0x44, 0x4c, 0x70, 0x62, 0x51, 0x53, 0x2b, 0x75, 0x65, 0x31, 0x36, 0x4d, 0x39, 0x2b, 0x6b, 0x2f, 0x7a, 0x7a, 0x4e, 0x59, 0x39, 0x76, 0x54, 0x6c, 0x70, 0x38, 0x74, 0x4c, 0x78, 0x4f, 0x0a, 0x73, 0x76, 0x78, 0x79, 0x71, 0x6c, 0x74, 0x5a, 0x2b, 0x65, 0x66, 0x63, 0x4d, 0x51, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x63, 0x65, 0x72, 0x74, 0x53, 0x49, 0x47, 0x4e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x47, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x52, 0x7a, 0x43, 0x43, 0x41, 0x79, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4a, 0x45, 0x51, 0x41, 0x30, 0x74, 0x6b, 0x37, 0x47, 0x4e, 0x69, 0x30, 0x32, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x4d, 0x45, 0x45, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x4a, 0x50, 0x4d, 0x52, 0x51, 0x77, 0x0a, 0x45, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x74, 0x44, 0x52, 0x56, 0x4a, 0x55, 0x55, 0x30, 0x6c, 0x48, 0x54, 0x69, 0x42, 0x54, 0x51, 0x54, 0x45, 0x63, 0x4d, 0x42, 0x6f, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x54, 0x59, 0x32, 0x56, 0x79, 0x64, 0x46, 0x4e, 0x4a, 0x52, 0x30, 0x34, 0x67, 0x55, 0x6b, 0x39, 0x50, 0x56, 0x43, 0x42, 0x44, 0x51, 0x53, 0x42, 0x48, 0x4d, 0x6a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4e, 0x7a, 0x41, 0x79, 0x0a, 0x4d, 0x44, 0x59, 0x77, 0x4f, 0x54, 0x49, 0x33, 0x4d, 0x7a, 0x56, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x6a, 0x41, 0x79, 0x4d, 0x44, 0x59, 0x77, 0x4f, 0x54, 0x49, 0x33, 0x4d, 0x7a, 0x56, 0x61, 0x4d, 0x45, 0x45, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x4a, 0x50, 0x4d, 0x52, 0x51, 0x77, 0x45, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x74, 0x44, 0x52, 0x56, 0x4a, 0x55, 0x55, 0x30, 0x6c, 0x48, 0x0a, 0x54, 0x69, 0x42, 0x54, 0x51, 0x54, 0x45, 0x63, 0x4d, 0x42, 0x6f, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x54, 0x59, 0x32, 0x56, 0x79, 0x64, 0x46, 0x4e, 0x4a, 0x52, 0x30, 0x34, 0x67, 0x55, 0x6b, 0x39, 0x50, 0x56, 0x43, 0x42, 0x44, 0x51, 0x53, 0x42, 0x48, 0x4d, 0x6a, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x0a, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4d, 0x44, 0x46, 0x64, 0x52, 0x6d, 0x52, 0x66, 0x55, 0x52, 0x30, 0x64, 0x49, 0x66, 0x2b, 0x44, 0x6a, 0x75, 0x57, 0x33, 0x4e, 0x67, 0x42, 0x46, 0x73, 0x7a, 0x75, 0x59, 0x35, 0x48, 0x6e, 0x43, 0x32, 0x2f, 0x4f, 0x4f, 0x77, 0x70, 0x70, 0x47, 0x6e, 0x7a, 0x43, 0x34, 0x36, 0x2b, 0x43, 0x6a, 0x6f, 0x62, 0x58, 0x58, 0x6f, 0x39, 0x58, 0x36, 0x39, 0x4d, 0x68, 0x57, 0x66, 0x30, 0x35, 0x0a, 0x4e, 0x30, 0x49, 0x77, 0x76, 0x6c, 0x44, 0x71, 0x74, 0x67, 0x2b, 0x70, 0x69, 0x4e, 0x67, 0x75, 0x4c, 0x57, 0x6b, 0x68, 0x35, 0x39, 0x45, 0x33, 0x47, 0x45, 0x35, 0x39, 0x6b, 0x64, 0x55, 0x57, 0x58, 0x32, 0x74, 0x62, 0x41, 0x4d, 0x49, 0x35, 0x51, 0x77, 0x30, 0x32, 0x68, 0x56, 0x4b, 0x35, 0x55, 0x32, 0x55, 0x50, 0x48, 0x55, 0x4c, 0x6c, 0x6a, 0x38, 0x38, 0x46, 0x30, 0x2b, 0x37, 0x63, 0x44, 0x42, 0x72, 0x5a, 0x75, 0x49, 0x74, 0x34, 0x49, 0x6d, 0x66, 0x6b, 0x0a, 0x61, 0x62, 0x42, 0x6f, 0x78, 0x54, 0x7a, 0x6b, 0x62, 0x46, 0x70, 0x47, 0x35, 0x38, 0x33, 0x48, 0x2b, 0x75, 0x2f, 0x45, 0x37, 0x45, 0x75, 0x39, 0x61, 0x71, 0x53, 0x73, 0x2f, 0x63, 0x77, 0x6f, 0x55, 0x65, 0x2b, 0x53, 0x74, 0x43, 0x6d, 0x72, 0x71, 0x7a, 0x57, 0x61, 0x54, 0x4f, 0x54, 0x45, 0x43, 0x4d, 0x59, 0x6d, 0x7a, 0x50, 0x68, 0x70, 0x6e, 0x2b, 0x53, 0x63, 0x38, 0x43, 0x6e, 0x54, 0x58, 0x50, 0x6e, 0x47, 0x46, 0x69, 0x57, 0x65, 0x49, 0x38, 0x4d, 0x67, 0x0a, 0x77, 0x54, 0x30, 0x50, 0x50, 0x7a, 0x68, 0x41, 0x73, 0x50, 0x36, 0x43, 0x52, 0x44, 0x69, 0x71, 0x57, 0x68, 0x71, 0x4b, 0x61, 0x32, 0x4e, 0x59, 0x4f, 0x4c, 0x51, 0x56, 0x30, 0x37, 0x59, 0x52, 0x61, 0x58, 0x73, 0x65, 0x56, 0x4f, 0x36, 0x4d, 0x47, 0x69, 0x4b, 0x73, 0x63, 0x70, 0x63, 0x2f, 0x49, 0x31, 0x6d, 0x62, 0x79, 0x53, 0x4b, 0x45, 0x77, 0x51, 0x64, 0x50, 0x7a, 0x48, 0x2f, 0x69, 0x56, 0x38, 0x6f, 0x53, 0x63, 0x4c, 0x75, 0x6d, 0x5a, 0x66, 0x4e, 0x70, 0x0a, 0x64, 0x57, 0x4f, 0x39, 0x6c, 0x66, 0x73, 0x62, 0x6c, 0x38, 0x33, 0x6b, 0x71, 0x4b, 0x2f, 0x32, 0x30, 0x55, 0x36, 0x6f, 0x32, 0x59, 0x70, 0x78, 0x4a, 0x4d, 0x30, 0x32, 0x50, 0x62, 0x79, 0x57, 0x78, 0x50, 0x46, 0x73, 0x71, 0x61, 0x37, 0x6c, 0x7a, 0x77, 0x31, 0x75, 0x4b, 0x41, 0x32, 0x77, 0x44, 0x72, 0x58, 0x4b, 0x55, 0x58, 0x74, 0x34, 0x46, 0x4d, 0x4d, 0x67, 0x4c, 0x33, 0x2f, 0x37, 0x46, 0x46, 0x58, 0x68, 0x45, 0x5a, 0x6e, 0x39, 0x31, 0x51, 0x71, 0x68, 0x0a, 0x6e, 0x67, 0x4c, 0x6a, 0x59, 0x6c, 0x2f, 0x72, 0x4e, 0x55, 0x73, 0x73, 0x75, 0x48, 0x4c, 0x6f, 0x50, 0x6a, 0x31, 0x50, 0x72, 0x43, 0x79, 0x37, 0x4c, 0x6f, 0x62, 0x69, 0x6f, 0x33, 0x61, 0x50, 0x35, 0x5a, 0x4d, 0x71, 0x7a, 0x36, 0x57, 0x72, 0x79, 0x46, 0x79, 0x4e, 0x53, 0x77, 0x62, 0x2f, 0x45, 0x6b, 0x61, 0x73, 0x65, 0x4d, 0x73, 0x55, 0x42, 0x7a, 0x58, 0x67, 0x71, 0x64, 0x2b, 0x4c, 0x36, 0x61, 0x38, 0x56, 0x54, 0x78, 0x61, 0x4a, 0x57, 0x37, 0x33, 0x32, 0x0a, 0x6a, 0x63, 0x5a, 0x5a, 0x72, 0x6f, 0x69, 0x46, 0x44, 0x73, 0x47, 0x4a, 0x36, 0x78, 0x39, 0x6e, 0x78, 0x55, 0x57, 0x4f, 0x2f, 0x32, 0x30, 0x33, 0x4e, 0x69, 0x74, 0x34, 0x5a, 0x6f, 0x4f, 0x52, 0x55, 0x53, 0x73, 0x39, 0x2f, 0x31, 0x46, 0x33, 0x64, 0x6d, 0x4b, 0x68, 0x37, 0x47, 0x63, 0x2b, 0x50, 0x6f, 0x47, 0x44, 0x34, 0x46, 0x61, 0x70, 0x55, 0x42, 0x38, 0x66, 0x65, 0x70, 0x6d, 0x72, 0x59, 0x37, 0x2b, 0x45, 0x46, 0x33, 0x66, 0x78, 0x44, 0x54, 0x76, 0x66, 0x0a, 0x39, 0x35, 0x78, 0x68, 0x73, 0x7a, 0x57, 0x59, 0x69, 0x6a, 0x71, 0x79, 0x37, 0x44, 0x77, 0x61, 0x4e, 0x7a, 0x39, 0x2b, 0x6a, 0x35, 0x4c, 0x50, 0x32, 0x52, 0x49, 0x55, 0x5a, 0x4e, 0x6f, 0x51, 0x41, 0x68, 0x56, 0x42, 0x2f, 0x30, 0x2f, 0x45, 0x36, 0x78, 0x79, 0x6a, 0x79, 0x66, 0x71, 0x5a, 0x39, 0x30, 0x62, 0x70, 0x34, 0x52, 0x6a, 0x5a, 0x73, 0x62, 0x67, 0x79, 0x4c, 0x63, 0x73, 0x55, 0x44, 0x46, 0x44, 0x59, 0x67, 0x32, 0x57, 0x44, 0x37, 0x72, 0x6c, 0x63, 0x0a, 0x7a, 0x38, 0x73, 0x46, 0x57, 0x6b, 0x7a, 0x36, 0x47, 0x5a, 0x64, 0x72, 0x31, 0x6c, 0x30, 0x54, 0x30, 0x38, 0x4a, 0x63, 0x56, 0x4c, 0x77, 0x79, 0x63, 0x36, 0x42, 0x34, 0x39, 0x66, 0x46, 0x74, 0x48, 0x73, 0x75, 0x66, 0x70, 0x61, 0x61, 0x66, 0x49, 0x74, 0x7a, 0x52, 0x55, 0x5a, 0x36, 0x43, 0x65, 0x57, 0x52, 0x67, 0x4b, 0x52, 0x4d, 0x2b, 0x6f, 0x2f, 0x31, 0x50, 0x63, 0x6d, 0x71, 0x72, 0x34, 0x74, 0x54, 0x6c, 0x75, 0x43, 0x52, 0x56, 0x4c, 0x45, 0x52, 0x4c, 0x0a, 0x69, 0x6f, 0x68, 0x45, 0x6e, 0x4d, 0x71, 0x45, 0x30, 0x79, 0x6f, 0x37, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x0a, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x43, 0x49, 0x53, 0x31, 0x6d, 0x78, 0x74, 0x65, 0x67, 0x34, 0x42, 0x58, 0x72, 0x7a, 0x6b, 0x77, 0x4a, 0x64, 0x38, 0x52, 0x67, 0x6e, 0x6c, 0x52, 0x75, 0x41, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x59, 0x4e, 0x34, 0x61, 0x75, 0x4f, 0x66, 0x79, 0x59, 0x49, 0x4c, 0x56, 0x41, 0x7a, 0x4f, 0x42, 0x0a, 0x79, 0x77, 0x61, 0x4b, 0x38, 0x53, 0x4a, 0x4a, 0x36, 0x65, 0x6a, 0x71, 0x6b, 0x58, 0x2f, 0x47, 0x4d, 0x31, 0x35, 0x6f, 0x47, 0x51, 0x4f, 0x47, 0x4f, 0x30, 0x4d, 0x42, 0x7a, 0x77, 0x64, 0x77, 0x35, 0x41, 0x67, 0x65, 0x5a, 0x59, 0x57, 0x52, 0x35, 0x68, 0x45, 0x69, 0x74, 0x2f, 0x55, 0x43, 0x49, 0x34, 0x36, 0x75, 0x75, 0x52, 0x35, 0x39, 0x48, 0x33, 0x35, 0x73, 0x35, 0x72, 0x30, 0x6c, 0x31, 0x5a, 0x55, 0x61, 0x38, 0x67, 0x57, 0x6d, 0x72, 0x34, 0x55, 0x43, 0x0a, 0x62, 0x36, 0x37, 0x34, 0x31, 0x6a, 0x48, 0x2f, 0x4a, 0x63, 0x6c, 0x4b, 0x79, 0x4d, 0x65, 0x4b, 0x71, 0x64, 0x6d, 0x66, 0x53, 0x30, 0x6d, 0x62, 0x45, 0x56, 0x65, 0x5a, 0x6b, 0x6b, 0x4d, 0x52, 0x33, 0x72, 0x59, 0x7a, 0x70, 0x4d, 0x7a, 0x58, 0x6a, 0x57, 0x52, 0x39, 0x31, 0x4d, 0x30, 0x38, 0x4b, 0x43, 0x79, 0x30, 0x6d, 0x70, 0x62, 0x71, 0x54, 0x66, 0x58, 0x45, 0x52, 0x4d, 0x51, 0x6c, 0x71, 0x69, 0x43, 0x41, 0x32, 0x43, 0x6c, 0x56, 0x39, 0x2b, 0x42, 0x42, 0x0a, 0x2f, 0x41, 0x59, 0x6d, 0x2f, 0x37, 0x6b, 0x32, 0x39, 0x55, 0x4d, 0x55, 0x41, 0x32, 0x5a, 0x34, 0x34, 0x52, 0x47, 0x78, 0x32, 0x69, 0x42, 0x66, 0x52, 0x67, 0x42, 0x34, 0x41, 0x43, 0x47, 0x6c, 0x48, 0x67, 0x41, 0x6f, 0x59, 0x58, 0x68, 0x76, 0x71, 0x41, 0x45, 0x42, 0x6a, 0x35, 0x30, 0x30, 0x6d, 0x76, 0x2f, 0x30, 0x4f, 0x4a, 0x44, 0x37, 0x75, 0x4e, 0x47, 0x7a, 0x63, 0x67, 0x62, 0x4a, 0x63, 0x65, 0x61, 0x42, 0x78, 0x58, 0x6e, 0x74, 0x43, 0x36, 0x5a, 0x35, 0x0a, 0x38, 0x68, 0x4d, 0x4c, 0x6e, 0x50, 0x64, 0x64, 0x44, 0x6e, 0x73, 0x6b, 0x6b, 0x37, 0x52, 0x49, 0x32, 0x34, 0x5a, 0x66, 0x33, 0x6c, 0x43, 0x47, 0x65, 0x4f, 0x64, 0x41, 0x35, 0x6a, 0x47, 0x6f, 0x6b, 0x48, 0x5a, 0x77, 0x59, 0x61, 0x2b, 0x63, 0x4e, 0x79, 0x77, 0x52, 0x74, 0x59, 0x4b, 0x33, 0x71, 0x71, 0x34, 0x6b, 0x4e, 0x46, 0x74, 0x79, 0x44, 0x47, 0x6b, 0x4e, 0x7a, 0x56, 0x6d, 0x66, 0x39, 0x6e, 0x47, 0x76, 0x6e, 0x41, 0x76, 0x52, 0x43, 0x6a, 0x6a, 0x35, 0x0a, 0x42, 0x69, 0x4b, 0x44, 0x55, 0x79, 0x55, 0x4d, 0x2f, 0x46, 0x48, 0x45, 0x35, 0x72, 0x37, 0x69, 0x4f, 0x5a, 0x55, 0x4c, 0x4a, 0x4b, 0x32, 0x76, 0x30, 0x5a, 0x58, 0x6b, 0x6c, 0x74, 0x64, 0x30, 0x5a, 0x47, 0x74, 0x78, 0x54, 0x67, 0x49, 0x38, 0x71, 0x6f, 0x58, 0x7a, 0x49, 0x4b, 0x4e, 0x44, 0x4f, 0x58, 0x5a, 0x62, 0x62, 0x46, 0x44, 0x2b, 0x6d, 0x70, 0x77, 0x55, 0x48, 0x6d, 0x55, 0x55, 0x69, 0x68, 0x57, 0x39, 0x6f, 0x34, 0x4a, 0x46, 0x57, 0x6b, 0x6c, 0x57, 0x0a, 0x61, 0x74, 0x4b, 0x63, 0x73, 0x57, 0x4d, 0x79, 0x35, 0x57, 0x48, 0x67, 0x55, 0x79, 0x49, 0x4f, 0x70, 0x77, 0x70, 0x4a, 0x36, 0x73, 0x74, 0x2b, 0x48, 0x36, 0x6a, 0x69, 0x59, 0x6f, 0x44, 0x32, 0x45, 0x45, 0x56, 0x53, 0x6d, 0x41, 0x59, 0x59, 0x33, 0x71, 0x58, 0x4e, 0x4c, 0x33, 0x2b, 0x71, 0x31, 0x4f, 0x6b, 0x2b, 0x43, 0x48, 0x4c, 0x73, 0x49, 0x77, 0x4d, 0x43, 0x50, 0x4b, 0x61, 0x71, 0x32, 0x4c, 0x78, 0x6e, 0x64, 0x44, 0x30, 0x55, 0x46, 0x2f, 0x74, 0x55, 0x0a, 0x53, 0x78, 0x66, 0x6a, 0x30, 0x33, 0x6b, 0x39, 0x62, 0x57, 0x74, 0x4a, 0x79, 0x53, 0x67, 0x4f, 0x4c, 0x6e, 0x52, 0x51, 0x76, 0x77, 0x7a, 0x5a, 0x52, 0x6a, 0x6f, 0x51, 0x68, 0x73, 0x6d, 0x6e, 0x50, 0x2b, 0x6d, 0x67, 0x37, 0x48, 0x2f, 0x72, 0x70, 0x58, 0x64, 0x59, 0x61, 0x58, 0x48, 0x6d, 0x67, 0x77, 0x6f, 0x33, 0x38, 0x6f, 0x5a, 0x4a, 0x61, 0x72, 0x35, 0x35, 0x43, 0x4a, 0x44, 0x32, 0x41, 0x68, 0x5a, 0x6b, 0x50, 0x75, 0x58, 0x61, 0x54, 0x48, 0x34, 0x4d, 0x0a, 0x4e, 0x4d, 0x6e, 0x35, 0x58, 0x37, 0x61, 0x7a, 0x4b, 0x46, 0x47, 0x6e, 0x70, 0x79, 0x75, 0x71, 0x53, 0x66, 0x71, 0x4e, 0x5a, 0x53, 0x6c, 0x4f, 0x34, 0x32, 0x73, 0x54, 0x70, 0x35, 0x53, 0x6a, 0x4c, 0x56, 0x46, 0x74, 0x65, 0x41, 0x78, 0x45, 0x79, 0x39, 0x2f, 0x65, 0x43, 0x47, 0x2f, 0x4f, 0x6f, 0x32, 0x53, 0x72, 0x30, 0x35, 0x57, 0x45, 0x31, 0x4c, 0x6c, 0x53, 0x56, 0x48, 0x4a, 0x37, 0x6c, 0x69, 0x58, 0x4d, 0x76, 0x47, 0x6e, 0x6a, 0x53, 0x47, 0x34, 0x4e, 0x0a, 0x30, 0x4d, 0x65, 0x64, 0x4a, 0x35, 0x71, 0x71, 0x2b, 0x42, 0x4f, 0x53, 0x33, 0x52, 0x37, 0x66, 0x59, 0x35, 0x38, 0x31, 0x71, 0x52, 0x59, 0x32, 0x37, 0x49, 0x79, 0x34, 0x67, 0x2f, 0x51, 0x39, 0x69, 0x59, 0x2f, 0x4e, 0x74, 0x42, 0x64, 0x65, 0x31, 0x37, 0x4d, 0x58, 0x51, 0x52, 0x42, 0x64, 0x4a, 0x33, 0x4e, 0x67, 0x68, 0x56, 0x64, 0x4a, 0x49, 0x67, 0x63, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x72, 0x75, 0x73, 0x74, 0x77, 0x61, 0x76, 0x65, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x32, 0x6a, 0x43, 0x43, 0x41, 0x38, 0x4b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4d, 0x42, 0x66, 0x63, 0x4f, 0x68, 0x74, 0x70, 0x4a, 0x38, 0x30, 0x59, 0x31, 0x4c, 0x72, 0x71, 0x79, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x4d, 0x49, 0x47, 0x49, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x41, 0x77, 0x49, 0x53, 0x57, 0x78, 0x73, 0x61, 0x57, 0x35, 0x76, 0x61, 0x58, 0x4d, 0x78, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x4d, 0x42, 0x30, 0x4e, 0x6f, 0x61, 0x57, 0x4e, 0x68, 0x5a, 0x32, 0x38, 0x78, 0x49, 0x54, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x47, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x64, 0x32, 0x46, 0x32, 0x0a, 0x5a, 0x53, 0x42, 0x49, 0x62, 0x32, 0x78, 0x6b, 0x61, 0x57, 0x35, 0x6e, 0x63, 0x79, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x6a, 0x45, 0x78, 0x4d, 0x43, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x6f, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x52, 0x33, 0x59, 0x58, 0x5a, 0x6c, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x0a, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4e, 0x7a, 0x41, 0x34, 0x4d, 0x6a, 0x4d, 0x78, 0x4f, 0x54, 0x4d, 0x30, 0x4d, 0x54, 0x4a, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x6a, 0x41, 0x34, 0x4d, 0x6a, 0x4d, 0x78, 0x4f, 0x54, 0x4d, 0x30, 0x4d, 0x54, 0x4a, 0x61, 0x4d, 0x49, 0x47, 0x49, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x41, 0x77, 0x49, 0x53, 0x57, 0x78, 0x73, 0x61, 0x57, 0x35, 0x76, 0x61, 0x58, 0x4d, 0x78, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x4d, 0x42, 0x30, 0x4e, 0x6f, 0x61, 0x57, 0x4e, 0x68, 0x5a, 0x32, 0x38, 0x78, 0x49, 0x54, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x47, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x64, 0x32, 0x46, 0x32, 0x0a, 0x5a, 0x53, 0x42, 0x49, 0x62, 0x32, 0x78, 0x6b, 0x61, 0x57, 0x35, 0x6e, 0x63, 0x79, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x6a, 0x45, 0x78, 0x4d, 0x43, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x6f, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x52, 0x33, 0x59, 0x58, 0x5a, 0x6c, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x0a, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x54, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4c, 0x6c, 0x64, 0x55, 0x53, 0x68, 0x4c, 0x50, 0x44, 0x65, 0x53, 0x30, 0x59, 0x4c, 0x4f, 0x76, 0x52, 0x32, 0x39, 0x0a, 0x7a, 0x64, 0x32, 0x34, 0x71, 0x38, 0x38, 0x4b, 0x50, 0x75, 0x46, 0x64, 0x35, 0x64, 0x79, 0x71, 0x43, 0x62, 0x6c, 0x58, 0x41, 0x6a, 0x37, 0x6d, 0x59, 0x32, 0x48, 0x66, 0x38, 0x67, 0x2b, 0x43, 0x59, 0x36, 0x36, 0x6a, 0x39, 0x36, 0x78, 0x7a, 0x30, 0x58, 0x7a, 0x6e, 0x73, 0x77, 0x75, 0x76, 0x43, 0x41, 0x41, 0x4a, 0x57, 0x58, 0x2f, 0x4e, 0x4b, 0x53, 0x71, 0x49, 0x6b, 0x34, 0x63, 0x58, 0x47, 0x49, 0x44, 0x74, 0x69, 0x4c, 0x4b, 0x30, 0x74, 0x68, 0x41, 0x66, 0x0a, 0x4c, 0x64, 0x5a, 0x66, 0x56, 0x61, 0x49, 0x54, 0x58, 0x64, 0x48, 0x47, 0x36, 0x77, 0x5a, 0x57, 0x69, 0x59, 0x6a, 0x2b, 0x72, 0x44, 0x4b, 0x64, 0x2f, 0x56, 0x7a, 0x44, 0x42, 0x63, 0x64, 0x75, 0x37, 0x6f, 0x61, 0x4a, 0x75, 0x6f, 0x67, 0x44, 0x6e, 0x58, 0x49, 0x68, 0x68, 0x70, 0x43, 0x75, 0x6a, 0x77, 0x4f, 0x6c, 0x33, 0x4a, 0x2b, 0x49, 0x4b, 0x4d, 0x75, 0x6a, 0x6b, 0x6b, 0x6b, 0x50, 0x37, 0x4e, 0x41, 0x50, 0x34, 0x6d, 0x31, 0x45, 0x54, 0x34, 0x42, 0x71, 0x0a, 0x73, 0x74, 0x54, 0x6e, 0x6f, 0x41, 0x70, 0x54, 0x41, 0x62, 0x71, 0x4f, 0x6c, 0x35, 0x46, 0x32, 0x62, 0x72, 0x7a, 0x38, 0x31, 0x57, 0x73, 0x32, 0x35, 0x6b, 0x43, 0x49, 0x31, 0x6e, 0x73, 0x76, 0x58, 0x77, 0x58, 0x6f, 0x4c, 0x47, 0x30, 0x52, 0x38, 0x2b, 0x65, 0x79, 0x76, 0x70, 0x4a, 0x45, 0x54, 0x4e, 0x4b, 0x58, 0x70, 0x50, 0x37, 0x53, 0x63, 0x6f, 0x46, 0x44, 0x42, 0x35, 0x7a, 0x70, 0x45, 0x54, 0x37, 0x31, 0x69, 0x78, 0x70, 0x5a, 0x66, 0x52, 0x39, 0x6f, 0x0a, 0x57, 0x4e, 0x30, 0x45, 0x41, 0x43, 0x79, 0x57, 0x38, 0x30, 0x4f, 0x7a, 0x66, 0x70, 0x67, 0x5a, 0x64, 0x4e, 0x6d, 0x63, 0x63, 0x39, 0x6b, 0x59, 0x76, 0x6b, 0x48, 0x48, 0x4e, 0x48, 0x6e, 0x5a, 0x39, 0x47, 0x4c, 0x43, 0x51, 0x37, 0x6d, 0x7a, 0x4a, 0x37, 0x41, 0x69, 0x79, 0x2f, 0x6b, 0x39, 0x55, 0x73, 0x63, 0x77, 0x52, 0x37, 0x50, 0x4a, 0x50, 0x72, 0x68, 0x71, 0x34, 0x75, 0x66, 0x6f, 0x67, 0x58, 0x42, 0x65, 0x51, 0x6f, 0x74, 0x50, 0x4a, 0x71, 0x58, 0x2b, 0x0a, 0x4f, 0x73, 0x49, 0x67, 0x62, 0x72, 0x76, 0x34, 0x46, 0x6f, 0x37, 0x4e, 0x44, 0x4b, 0x6d, 0x30, 0x47, 0x32, 0x78, 0x32, 0x45, 0x4f, 0x46, 0x59, 0x65, 0x55, 0x59, 0x2b, 0x56, 0x4d, 0x36, 0x41, 0x71, 0x46, 0x63, 0x4a, 0x4e, 0x79, 0x6b, 0x62, 0x6d, 0x52, 0x4f, 0x50, 0x44, 0x4d, 0x6a, 0x57, 0x4c, 0x42, 0x7a, 0x37, 0x42, 0x65, 0x67, 0x49, 0x6c, 0x54, 0x31, 0x6c, 0x52, 0x74, 0x7a, 0x75, 0x7a, 0x57, 0x6e, 0x69, 0x54, 0x59, 0x2b, 0x48, 0x4b, 0x45, 0x34, 0x30, 0x0a, 0x43, 0x7a, 0x37, 0x50, 0x46, 0x4e, 0x6d, 0x37, 0x33, 0x62, 0x5a, 0x51, 0x6d, 0x71, 0x31, 0x33, 0x31, 0x42, 0x6e, 0x57, 0x32, 0x68, 0x71, 0x49, 0x79, 0x45, 0x34, 0x62, 0x4a, 0x33, 0x58, 0x59, 0x73, 0x67, 0x6a, 0x78, 0x72, 0x6f, 0x4d, 0x77, 0x75, 0x52, 0x45, 0x4f, 0x7a, 0x59, 0x66, 0x77, 0x68, 0x49, 0x30, 0x56, 0x63, 0x6e, 0x79, 0x68, 0x37, 0x38, 0x7a, 0x79, 0x69, 0x47, 0x47, 0x36, 0x39, 0x47, 0x6d, 0x37, 0x44, 0x49, 0x77, 0x4c, 0x64, 0x56, 0x63, 0x45, 0x0a, 0x75, 0x45, 0x34, 0x71, 0x46, 0x43, 0x34, 0x39, 0x44, 0x78, 0x77, 0x65, 0x4d, 0x71, 0x5a, 0x69, 0x4e, 0x75, 0x35, 0x6d, 0x34, 0x69, 0x4b, 0x34, 0x42, 0x55, 0x42, 0x6a, 0x45, 0x43, 0x4c, 0x7a, 0x4d, 0x78, 0x31, 0x30, 0x63, 0x6f, 0x6f, 0x73, 0x39, 0x54, 0x6b, 0x70, 0x6f, 0x4e, 0x50, 0x6e, 0x47, 0x34, 0x43, 0x45, 0x4c, 0x63, 0x55, 0x39, 0x34, 0x30, 0x32, 0x78, 0x2f, 0x52, 0x70, 0x76, 0x75, 0x6d, 0x55, 0x48, 0x4f, 0x31, 0x6a, 0x73, 0x51, 0x6b, 0x55, 0x6d, 0x0a, 0x2b, 0x39, 0x6a, 0x61, 0x4a, 0x58, 0x4c, 0x45, 0x39, 0x67, 0x43, 0x78, 0x49, 0x6e, 0x6d, 0x39, 0x34, 0x33, 0x78, 0x5a, 0x59, 0x6b, 0x71, 0x63, 0x42, 0x57, 0x38, 0x39, 0x7a, 0x75, 0x62, 0x57, 0x52, 0x32, 0x4f, 0x5a, 0x78, 0x69, 0x52, 0x76, 0x63, 0x68, 0x4c, 0x49, 0x72, 0x48, 0x2b, 0x51, 0x74, 0x41, 0x75, 0x52, 0x63, 0x4f, 0x69, 0x33, 0x35, 0x68, 0x59, 0x51, 0x63, 0x52, 0x66, 0x4f, 0x33, 0x67, 0x5a, 0x50, 0x53, 0x45, 0x46, 0x39, 0x4e, 0x55, 0x71, 0x6a, 0x0a, 0x69, 0x66, 0x4c, 0x4a, 0x53, 0x33, 0x74, 0x42, 0x45, 0x57, 0x31, 0x6e, 0x74, 0x77, 0x69, 0x59, 0x54, 0x4f, 0x55, 0x52, 0x47, 0x61, 0x35, 0x43, 0x67, 0x4e, 0x7a, 0x37, 0x6b, 0x41, 0x58, 0x55, 0x2b, 0x46, 0x44, 0x4b, 0x76, 0x75, 0x53, 0x74, 0x78, 0x38, 0x4b, 0x55, 0x31, 0x78, 0x61, 0x64, 0x35, 0x68, 0x65, 0x50, 0x72, 0x7a, 0x62, 0x37, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x0a, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4a, 0x6e, 0x67, 0x47, 0x57, 0x63, 0x4e, 0x59, 0x74, 0x74, 0x32, 0x73, 0x39, 0x6f, 0x39, 0x75, 0x46, 0x76, 0x6f, 0x2f, 0x55, 0x4c, 0x53, 0x4d, 0x51, 0x36, 0x48, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x0a, 0x42, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x6d, 0x48, 0x4e, 0x77, 0x34, 0x72, 0x44, 0x54, 0x37, 0x54, 0x6e, 0x73, 0x54, 0x47, 0x44, 0x5a, 0x71, 0x52, 0x4b, 0x47, 0x46, 0x78, 0x36, 0x57, 0x30, 0x4f, 0x68, 0x55, 0x4b, 0x44, 0x74, 0x6b, 0x4c, 0x53, 0x47, 0x6d, 0x2b, 0x4a, 0x31, 0x57, 0x45, 0x32, 0x70, 0x49, 0x50, 0x55, 0x2f, 0x48, 0x0a, 0x50, 0x69, 0x6e, 0x62, 0x62, 0x56, 0x69, 0x44, 0x56, 0x44, 0x32, 0x48, 0x66, 0x53, 0x4d, 0x46, 0x31, 0x4f, 0x51, 0x63, 0x33, 0x4f, 0x67, 0x34, 0x5a, 0x59, 0x62, 0x46, 0x64, 0x61, 0x64, 0x61, 0x32, 0x7a, 0x55, 0x46, 0x76, 0x58, 0x66, 0x65, 0x75, 0x79, 0x6b, 0x33, 0x51, 0x41, 0x55, 0x48, 0x77, 0x35, 0x52, 0x53, 0x6e, 0x38, 0x70, 0x6b, 0x33, 0x66, 0x45, 0x62, 0x4b, 0x39, 0x78, 0x47, 0x43, 0x68, 0x41, 0x43, 0x4d, 0x66, 0x31, 0x4b, 0x61, 0x41, 0x30, 0x48, 0x0a, 0x5a, 0x4a, 0x44, 0x6d, 0x48, 0x76, 0x55, 0x71, 0x6f, 0x61, 0x69, 0x37, 0x50, 0x46, 0x33, 0x35, 0x6f, 0x77, 0x67, 0x4c, 0x45, 0x51, 0x7a, 0x78, 0x50, 0x79, 0x30, 0x51, 0x6c, 0x47, 0x2f, 0x2b, 0x34, 0x6a, 0x53, 0x48, 0x67, 0x39, 0x62, 0x50, 0x35, 0x52, 0x73, 0x31, 0x62, 0x64, 0x49, 0x44, 0x34, 0x62, 0x41, 0x4e, 0x71, 0x4b, 0x43, 0x71, 0x52, 0x69, 0x65, 0x43, 0x4e, 0x71, 0x63, 0x56, 0x74, 0x67, 0x69, 0x6d, 0x51, 0x6c, 0x52, 0x58, 0x74, 0x70, 0x6c, 0x61, 0x0a, 0x34, 0x67, 0x74, 0x35, 0x6b, 0x4e, 0x64, 0x58, 0x45, 0x6c, 0x45, 0x31, 0x47, 0x59, 0x68, 0x42, 0x61, 0x43, 0x58, 0x55, 0x4e, 0x78, 0x65, 0x45, 0x46, 0x66, 0x73, 0x42, 0x63, 0x74, 0x79, 0x56, 0x33, 0x6c, 0x49, 0x6d, 0x49, 0x4a, 0x67, 0x6d, 0x34, 0x6e, 0x62, 0x31, 0x4a, 0x32, 0x2f, 0x36, 0x41, 0x44, 0x74, 0x4b, 0x59, 0x64, 0x6b, 0x4e, 0x79, 0x31, 0x47, 0x54, 0x4b, 0x76, 0x30, 0x57, 0x42, 0x70, 0x61, 0x6e, 0x49, 0x35, 0x6f, 0x6a, 0x53, 0x50, 0x35, 0x52, 0x0a, 0x76, 0x62, 0x62, 0x45, 0x73, 0x4c, 0x46, 0x55, 0x7a, 0x74, 0x35, 0x73, 0x51, 0x61, 0x30, 0x57, 0x5a, 0x33, 0x37, 0x62, 0x2f, 0x54, 0x6a, 0x4e, 0x75, 0x54, 0x68, 0x4f, 0x73, 0x73, 0x46, 0x67, 0x79, 0x35, 0x30, 0x58, 0x33, 0x31, 0x69, 0x65, 0x65, 0x6d, 0x4b, 0x79, 0x4a, 0x6f, 0x39, 0x30, 0x6c, 0x5a, 0x76, 0x6b, 0x57, 0x78, 0x33, 0x53, 0x44, 0x39, 0x32, 0x59, 0x48, 0x4a, 0x74, 0x5a, 0x75, 0x53, 0x50, 0x54, 0x4d, 0x61, 0x43, 0x6d, 0x2f, 0x7a, 0x6a, 0x64, 0x0a, 0x7a, 0x79, 0x42, 0x50, 0x36, 0x56, 0x68, 0x57, 0x4f, 0x6d, 0x66, 0x44, 0x30, 0x66, 0x61, 0x5a, 0x6d, 0x5a, 0x32, 0x36, 0x4e, 0x72, 0x61, 0x41, 0x4c, 0x34, 0x68, 0x48, 0x54, 0x34, 0x61, 0x2f, 0x52, 0x44, 0x71, 0x41, 0x35, 0x44, 0x63, 0x63, 0x70, 0x72, 0x72, 0x71, 0x6c, 0x35, 0x67, 0x52, 0x30, 0x49, 0x52, 0x69, 0x52, 0x32, 0x51, 0x65, 0x71, 0x75, 0x35, 0x41, 0x76, 0x7a, 0x53, 0x78, 0x6e, 0x49, 0x39, 0x4f, 0x34, 0x66, 0x4b, 0x53, 0x54, 0x78, 0x2b, 0x4f, 0x0a, 0x38, 0x35, 0x36, 0x58, 0x33, 0x76, 0x4f, 0x6d, 0x65, 0x57, 0x71, 0x4a, 0x63, 0x55, 0x39, 0x4c, 0x4a, 0x78, 0x64, 0x49, 0x2f, 0x75, 0x7a, 0x30, 0x55, 0x41, 0x39, 0x50, 0x53, 0x58, 0x33, 0x4d, 0x52, 0x65, 0x4f, 0x39, 0x65, 0x6b, 0x44, 0x46, 0x51, 0x64, 0x78, 0x68, 0x56, 0x69, 0x63, 0x47, 0x61, 0x65, 0x56, 0x79, 0x51, 0x59, 0x48, 0x54, 0x74, 0x67, 0x47, 0x4a, 0x6f, 0x43, 0x38, 0x36, 0x63, 0x6e, 0x6e, 0x2b, 0x4f, 0x6a, 0x43, 0x2f, 0x51, 0x65, 0x7a, 0x48, 0x0a, 0x59, 0x6a, 0x36, 0x52, 0x53, 0x38, 0x66, 0x5a, 0x4d, 0x58, 0x5a, 0x43, 0x2b, 0x66, 0x63, 0x38, 0x59, 0x2b, 0x77, 0x6d, 0x6a, 0x48, 0x4d, 0x4d, 0x66, 0x52, 0x6f, 0x64, 0x36, 0x71, 0x68, 0x38, 0x68, 0x36, 0x6a, 0x43, 0x4a, 0x33, 0x7a, 0x68, 0x4d, 0x30, 0x45, 0x50, 0x7a, 0x38, 0x2f, 0x38, 0x41, 0x4b, 0x41, 0x69, 0x67, 0x4a, 0x35, 0x4b, 0x70, 0x32, 0x38, 0x41, 0x73, 0x45, 0x46, 0x46, 0x74, 0x79, 0x4c, 0x4b, 0x61, 0x45, 0x6a, 0x46, 0x51, 0x71, 0x4b, 0x75, 0x0a, 0x33, 0x52, 0x33, 0x79, 0x34, 0x47, 0x35, 0x4f, 0x42, 0x56, 0x69, 0x78, 0x77, 0x4a, 0x41, 0x57, 0x4b, 0x71, 0x51, 0x39, 0x45, 0x45, 0x43, 0x2b, 0x6a, 0x32, 0x4a, 0x6a, 0x67, 0x36, 0x6d, 0x63, 0x67, 0x6e, 0x30, 0x74, 0x41, 0x75, 0x6d, 0x44, 0x4d, 0x48, 0x7a, 0x4c, 0x4a, 0x38, 0x6e, 0x39, 0x48, 0x6d, 0x59, 0x41, 0x73, 0x43, 0x37, 0x54, 0x49, 0x53, 0x2b, 0x4f, 0x4d, 0x78, 0x5a, 0x73, 0x6d, 0x4f, 0x30, 0x51, 0x71, 0x41, 0x66, 0x57, 0x7a, 0x4a, 0x50, 0x50, 0x0a, 0x32, 0x39, 0x46, 0x70, 0x48, 0x4f, 0x54, 0x4b, 0x79, 0x65, 0x43, 0x32, 0x6e, 0x4f, 0x6e, 0x4f, 0x63, 0x58, 0x48, 0x65, 0x62, 0x44, 0x38, 0x57, 0x70, 0x48, 0x6b, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x72, 0x75, 0x73, 0x74, 0x77, 0x61, 0x76, 0x65, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x45, 0x43, 0x43, 0x20, 0x50, 0x32, 0x35, 0x36, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x59, 0x44, 0x43, 0x43, 0x41, 0x67, 0x65, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4d, 0x44, 0x57, 0x70, 0x66, 0x43, 0x44, 0x38, 0x6f, 0x58, 0x44, 0x35, 0x52, 0x6c, 0x64, 0x39, 0x64, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x43, 0x4d, 0x49, 0x47, 0x52, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x52, 0x0a, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x42, 0x4d, 0x49, 0x53, 0x57, 0x78, 0x73, 0x61, 0x57, 0x35, 0x76, 0x61, 0x58, 0x4d, 0x78, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x42, 0x30, 0x4e, 0x6f, 0x61, 0x57, 0x4e, 0x68, 0x5a, 0x32, 0x38, 0x78, 0x49, 0x54, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x47, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x64, 0x32, 0x46, 0x32, 0x5a, 0x53, 0x42, 0x49, 0x0a, 0x62, 0x32, 0x78, 0x6b, 0x61, 0x57, 0x35, 0x6e, 0x63, 0x79, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x6a, 0x45, 0x36, 0x4d, 0x44, 0x67, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x78, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x52, 0x33, 0x59, 0x58, 0x5a, 0x6c, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x44, 0x49, 0x31, 0x4e, 0x69, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x0a, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4e, 0x7a, 0x41, 0x34, 0x4d, 0x6a, 0x4d, 0x78, 0x4f, 0x54, 0x4d, 0x31, 0x4d, 0x54, 0x42, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x6a, 0x41, 0x34, 0x4d, 0x6a, 0x4d, 0x78, 0x4f, 0x54, 0x4d, 0x31, 0x4d, 0x54, 0x42, 0x61, 0x4d, 0x49, 0x47, 0x52, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x42, 0x4d, 0x49, 0x53, 0x57, 0x78, 0x73, 0x61, 0x57, 0x35, 0x76, 0x61, 0x58, 0x4d, 0x78, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x42, 0x30, 0x4e, 0x6f, 0x61, 0x57, 0x4e, 0x68, 0x5a, 0x32, 0x38, 0x78, 0x49, 0x54, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x47, 0x46, 0x52, 0x79, 0x0a, 0x64, 0x58, 0x4e, 0x30, 0x64, 0x32, 0x46, 0x32, 0x5a, 0x53, 0x42, 0x49, 0x62, 0x32, 0x78, 0x6b, 0x61, 0x57, 0x35, 0x6e, 0x63, 0x79, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x6a, 0x45, 0x36, 0x4d, 0x44, 0x67, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x78, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x52, 0x33, 0x59, 0x58, 0x5a, 0x6c, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x44, 0x49, 0x31, 0x0a, 0x4e, 0x69, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x54, 0x42, 0x5a, 0x4d, 0x42, 0x4d, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x77, 0x45, 0x48, 0x41, 0x30, 0x49, 0x41, 0x42, 0x48, 0x37, 0x37, 0x62, 0x4f, 0x59, 0x6a, 0x0a, 0x34, 0x33, 0x4d, 0x79, 0x43, 0x4d, 0x70, 0x67, 0x35, 0x6c, 0x4f, 0x63, 0x75, 0x6e, 0x53, 0x4e, 0x47, 0x4c, 0x42, 0x34, 0x6b, 0x46, 0x4b, 0x41, 0x33, 0x54, 0x6a, 0x41, 0x53, 0x68, 0x33, 0x52, 0x71, 0x4d, 0x79, 0x54, 0x70, 0x4a, 0x63, 0x47, 0x4f, 0x4d, 0x6f, 0x4e, 0x46, 0x57, 0x4c, 0x47, 0x6a, 0x67, 0x45, 0x71, 0x5a, 0x5a, 0x32, 0x71, 0x33, 0x7a, 0x53, 0x52, 0x4c, 0x6f, 0x48, 0x42, 0x35, 0x44, 0x4f, 0x53, 0x4d, 0x63, 0x54, 0x39, 0x43, 0x54, 0x71, 0x6d, 0x0a, 0x50, 0x36, 0x32, 0x6a, 0x51, 0x7a, 0x42, 0x42, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x44, 0x41, 0x77, 0x63, 0x47, 0x41, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x6f, 0x30, 0x45, 0x47, 0x72, 0x4a, 0x42, 0x74, 0x0a, 0x30, 0x55, 0x72, 0x72, 0x64, 0x61, 0x56, 0x4b, 0x45, 0x4a, 0x6d, 0x7a, 0x73, 0x61, 0x47, 0x4c, 0x53, 0x76, 0x63, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x49, 0x44, 0x52, 0x77, 0x41, 0x77, 0x52, 0x41, 0x49, 0x67, 0x42, 0x2b, 0x5a, 0x55, 0x32, 0x67, 0x36, 0x67, 0x57, 0x72, 0x4b, 0x75, 0x45, 0x5a, 0x2b, 0x48, 0x78, 0x62, 0x62, 0x2f, 0x61, 0x64, 0x34, 0x6c, 0x76, 0x76, 0x69, 0x67, 0x74, 0x77, 0x6a, 0x7a, 0x0a, 0x52, 0x4d, 0x34, 0x71, 0x33, 0x77, 0x67, 0x68, 0x44, 0x44, 0x63, 0x43, 0x49, 0x43, 0x30, 0x6d, 0x41, 0x36, 0x41, 0x46, 0x76, 0x57, 0x76, 0x52, 0x39, 0x6c, 0x7a, 0x34, 0x5a, 0x63, 0x79, 0x47, 0x62, 0x62, 0x4f, 0x63, 0x4e, 0x45, 0x68, 0x6a, 0x68, 0x41, 0x6e, 0x46, 0x6a, 0x58, 0x63, 0x61, 0x34, 0x73, 0x79, 0x63, 0x34, 0x58, 0x52, 0x37, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x72, 0x75, 0x73, 0x74, 0x77, 0x61, 0x76, 0x65, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x45, 0x43, 0x43, 0x20, 0x50, 0x33, 0x38, 0x34, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x6e, 0x54, 0x43, 0x43, 0x41, 0x69, 0x53, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4d, 0x43, 0x4c, 0x32, 0x46, 0x6c, 0x32, 0x79, 0x5a, 0x4a, 0x36, 0x53, 0x41, 0x61, 0x45, 0x63, 0x37, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x44, 0x4d, 0x49, 0x47, 0x52, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x52, 0x0a, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x42, 0x4d, 0x49, 0x53, 0x57, 0x78, 0x73, 0x61, 0x57, 0x35, 0x76, 0x61, 0x58, 0x4d, 0x78, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x42, 0x30, 0x4e, 0x6f, 0x61, 0x57, 0x4e, 0x68, 0x5a, 0x32, 0x38, 0x78, 0x49, 0x54, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x47, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x64, 0x32, 0x46, 0x32, 0x5a, 0x53, 0x42, 0x49, 0x0a, 0x62, 0x32, 0x78, 0x6b, 0x61, 0x57, 0x35, 0x6e, 0x63, 0x79, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x6a, 0x45, 0x36, 0x4d, 0x44, 0x67, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x78, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x52, 0x33, 0x59, 0x58, 0x5a, 0x6c, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x44, 0x4d, 0x34, 0x4e, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x0a, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4e, 0x7a, 0x41, 0x34, 0x4d, 0x6a, 0x4d, 0x78, 0x4f, 0x54, 0x4d, 0x32, 0x4e, 0x44, 0x4e, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x6a, 0x41, 0x34, 0x4d, 0x6a, 0x4d, 0x78, 0x4f, 0x54, 0x4d, 0x32, 0x4e, 0x44, 0x4e, 0x61, 0x4d, 0x49, 0x47, 0x52, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x42, 0x4d, 0x49, 0x53, 0x57, 0x78, 0x73, 0x61, 0x57, 0x35, 0x76, 0x61, 0x58, 0x4d, 0x78, 0x45, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x54, 0x42, 0x30, 0x4e, 0x6f, 0x61, 0x57, 0x4e, 0x68, 0x5a, 0x32, 0x38, 0x78, 0x49, 0x54, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x47, 0x46, 0x52, 0x79, 0x0a, 0x64, 0x58, 0x4e, 0x30, 0x64, 0x32, 0x46, 0x32, 0x5a, 0x53, 0x42, 0x49, 0x62, 0x32, 0x78, 0x6b, 0x61, 0x57, 0x35, 0x6e, 0x63, 0x79, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x6a, 0x45, 0x36, 0x4d, 0x44, 0x67, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x78, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x52, 0x33, 0x59, 0x58, 0x5a, 0x6c, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x44, 0x4d, 0x34, 0x0a, 0x4e, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x54, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x47, 0x76, 0x61, 0x44, 0x58, 0x55, 0x31, 0x43, 0x44, 0x46, 0x48, 0x0a, 0x42, 0x61, 0x35, 0x46, 0x6d, 0x56, 0x58, 0x78, 0x45, 0x52, 0x4d, 0x75, 0x53, 0x76, 0x67, 0x51, 0x4d, 0x53, 0x4f, 0x6a, 0x66, 0x6f, 0x50, 0x54, 0x66, 0x79, 0x67, 0x49, 0x4f, 0x69, 0x59, 0x61, 0x4f, 0x73, 0x2b, 0x58, 0x67, 0x68, 0x2b, 0x41, 0x74, 0x79, 0x63, 0x4a, 0x6a, 0x39, 0x47, 0x4f, 0x4d, 0x4d, 0x51, 0x4b, 0x6d, 0x77, 0x36, 0x73, 0x57, 0x41, 0x53, 0x72, 0x39, 0x7a, 0x5a, 0x39, 0x6c, 0x43, 0x4f, 0x6b, 0x6d, 0x77, 0x71, 0x4b, 0x69, 0x36, 0x76, 0x72, 0x0a, 0x2f, 0x54, 0x6b, 0x6c, 0x5a, 0x76, 0x46, 0x65, 0x2f, 0x6f, 0x79, 0x75, 0x6a, 0x55, 0x46, 0x35, 0x6e, 0x51, 0x6c, 0x67, 0x7a, 0x69, 0x69, 0x70, 0x30, 0x34, 0x70, 0x74, 0x38, 0x39, 0x5a, 0x46, 0x31, 0x50, 0x4b, 0x59, 0x68, 0x44, 0x68, 0x6c, 0x6f, 0x4b, 0x4e, 0x44, 0x4d, 0x45, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x51, 0x4d, 0x44, 0x42, 0x77, 0x59, 0x41, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x56, 0x71, 0x59, 0x53, 0x4a, 0x30, 0x73, 0x45, 0x79, 0x76, 0x52, 0x6a, 0x4c, 0x62, 0x4b, 0x59, 0x48, 0x54, 0x73, 0x6a, 0x6e, 0x6e, 0x62, 0x36, 0x43, 0x6b, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6e, 0x0a, 0x41, 0x44, 0x42, 0x6b, 0x41, 0x6a, 0x41, 0x33, 0x41, 0x5a, 0x4b, 0x58, 0x52, 0x52, 0x4a, 0x2b, 0x6f, 0x50, 0x4d, 0x2b, 0x72, 0x52, 0x6b, 0x36, 0x63, 0x74, 0x33, 0x30, 0x55, 0x4a, 0x4d, 0x44, 0x45, 0x72, 0x35, 0x45, 0x30, 0x6b, 0x39, 0x42, 0x70, 0x49, 0x79, 0x63, 0x6e, 0x52, 0x2b, 0x6a, 0x39, 0x73, 0x4b, 0x53, 0x35, 0x30, 0x67, 0x55, 0x2f, 0x6b, 0x36, 0x62, 0x70, 0x5a, 0x46, 0x58, 0x72, 0x73, 0x59, 0x33, 0x63, 0x72, 0x73, 0x43, 0x4d, 0x47, 0x63, 0x6c, 0x0a, 0x43, 0x72, 0x45, 0x4d, 0x58, 0x75, 0x36, 0x70, 0x59, 0x35, 0x4a, 0x76, 0x35, 0x5a, 0x41, 0x4c, 0x2f, 0x6d, 0x59, 0x69, 0x79, 0x6b, 0x66, 0x39, 0x69, 0x6a, 0x48, 0x33, 0x67, 0x2f, 0x35, 0x36, 0x76, 0x78, 0x43, 0x2b, 0x47, 0x43, 0x73, 0x65, 0x6a, 0x2f, 0x59, 0x70, 0x48, 0x70, 0x52, 0x5a, 0x37, 0x34, 0x34, 0x68, 0x4e, 0x38, 0x74, 0x52, 0x6d, 0x4b, 0x56, 0x75, 0x53, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x4e, 0x41, 0x56, 0x45, 0x52, 0x20, 0x47, 0x6c, 0x6f, 0x62, 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, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x6f, 0x6a, 0x43, 0x43, 0x41, 0x34, 0x71, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x41, 0x5a, 0x51, 0x77, 0x48, 0x71, 0x49, 0x4c, 0x33, 0x66, 0x58, 0x46, 0x4d, 0x79, 0x71, 0x78, 0x51, 0x30, 0x52, 0x78, 0x2b, 0x4e, 0x5a, 0x51, 0x54, 0x51, 0x30, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x77, 0x61, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x53, 0x31, 0x49, 0x78, 0x4a, 0x6a, 0x41, 0x6b, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x48, 0x55, 0x35, 0x42, 0x56, 0x6b, 0x56, 0x53, 0x49, 0x45, 0x4a, 0x56, 0x55, 0x30, 0x6c, 0x4f, 0x52, 0x56, 0x4e, 0x54, 0x49, 0x46, 0x42, 0x4d, 0x51, 0x56, 0x52, 0x47, 0x54, 0x31, 0x4a, 0x4e, 0x49, 0x45, 0x4e, 0x76, 0x63, 0x6e, 0x41, 0x75, 0x4d, 0x54, 0x49, 0x77, 0x4d, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x0a, 0x44, 0x43, 0x6c, 0x4f, 0x51, 0x56, 0x5a, 0x46, 0x55, 0x69, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x68, 0x76, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4e, 0x7a, 0x41, 0x34, 0x4d, 0x54, 0x67, 0x77, 0x4f, 0x44, 0x55, 0x34, 0x0a, 0x4e, 0x44, 0x4a, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4e, 0x7a, 0x41, 0x34, 0x4d, 0x54, 0x67, 0x79, 0x4d, 0x7a, 0x55, 0x35, 0x4e, 0x54, 0x6c, 0x61, 0x4d, 0x47, 0x6b, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x74, 0x53, 0x4d, 0x53, 0x59, 0x77, 0x4a, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x42, 0x31, 0x4f, 0x51, 0x56, 0x5a, 0x46, 0x55, 0x69, 0x42, 0x43, 0x56, 0x56, 0x4e, 0x4a, 0x54, 0x6b, 0x56, 0x54, 0x0a, 0x55, 0x79, 0x42, 0x51, 0x54, 0x45, 0x46, 0x55, 0x52, 0x6b, 0x39, 0x53, 0x54, 0x53, 0x42, 0x44, 0x62, 0x33, 0x4a, 0x77, 0x4c, 0x6a, 0x45, 0x79, 0x4d, 0x44, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x70, 0x54, 0x6b, 0x46, 0x57, 0x52, 0x56, 0x49, 0x67, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x0a, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x32, 0x31, 0x50, 0x47, 0x54, 0x58, 0x4c, 0x56, 0x41, 0x69, 0x51, 0x71, 0x72, 0x44, 0x5a, 0x42, 0x62, 0x0a, 0x55, 0x47, 0x4f, 0x75, 0x6b, 0x4a, 0x52, 0x30, 0x46, 0x30, 0x56, 0x79, 0x31, 0x6e, 0x74, 0x6c, 0x57, 0x69, 0x6c, 0x4c, 0x70, 0x31, 0x61, 0x67, 0x53, 0x37, 0x67, 0x76, 0x51, 0x6e, 0x58, 0x70, 0x32, 0x58, 0x73, 0x6b, 0x57, 0x6a, 0x46, 0x6c, 0x71, 0x78, 0x63, 0x58, 0x30, 0x54, 0x4d, 0x36, 0x32, 0x52, 0x48, 0x63, 0x51, 0x44, 0x61, 0x48, 0x33, 0x38, 0x64, 0x71, 0x36, 0x53, 0x5a, 0x65, 0x57, 0x59, 0x70, 0x33, 0x34, 0x2b, 0x68, 0x49, 0x6e, 0x44, 0x45, 0x57, 0x0a, 0x2b, 0x6a, 0x36, 0x52, 0x73, 0x63, 0x72, 0x4a, 0x6f, 0x2b, 0x4b, 0x66, 0x7a, 0x69, 0x46, 0x54, 0x6f, 0x77, 0x49, 0x32, 0x4d, 0x4d, 0x74, 0x53, 0x41, 0x75, 0x58, 0x61, 0x4d, 0x6c, 0x33, 0x44, 0x78, 0x65, 0x62, 0x35, 0x37, 0x68, 0x48, 0x48, 0x69, 0x38, 0x6c, 0x45, 0x48, 0x6f, 0x53, 0x54, 0x47, 0x45, 0x71, 0x30, 0x6e, 0x2b, 0x55, 0x53, 0x5a, 0x47, 0x6e, 0x51, 0x4a, 0x6f, 0x56, 0x69, 0x41, 0x62, 0x62, 0x4a, 0x41, 0x68, 0x32, 0x2b, 0x67, 0x31, 0x47, 0x37, 0x0a, 0x58, 0x4e, 0x72, 0x34, 0x72, 0x52, 0x56, 0x71, 0x6d, 0x66, 0x65, 0x53, 0x56, 0x50, 0x63, 0x30, 0x57, 0x2b, 0x6d, 0x2f, 0x36, 0x69, 0x6d, 0x42, 0x45, 0x74, 0x52, 0x54, 0x6b, 0x5a, 0x61, 0x7a, 0x6b, 0x56, 0x72, 0x64, 0x2f, 0x70, 0x42, 0x7a, 0x4b, 0x50, 0x73, 0x77, 0x52, 0x72, 0x58, 0x4b, 0x43, 0x41, 0x66, 0x48, 0x63, 0x58, 0x4c, 0x4a, 0x5a, 0x74, 0x4d, 0x30, 0x6c, 0x2f, 0x61, 0x4d, 0x39, 0x42, 0x68, 0x4b, 0x34, 0x64, 0x41, 0x39, 0x57, 0x6b, 0x57, 0x32, 0x0a, 0x61, 0x61, 0x63, 0x70, 0x2b, 0x79, 0x50, 0x4f, 0x69, 0x4e, 0x67, 0x53, 0x6e, 0x41, 0x42, 0x49, 0x71, 0x4b, 0x59, 0x50, 0x73, 0x7a, 0x75, 0x53, 0x6a, 0x58, 0x45, 0x4f, 0x64, 0x4d, 0x57, 0x4c, 0x79, 0x45, 0x7a, 0x35, 0x39, 0x4a, 0x75, 0x4f, 0x75, 0x44, 0x78, 0x70, 0x37, 0x57, 0x38, 0x37, 0x55, 0x43, 0x39, 0x59, 0x37, 0x63, 0x53, 0x77, 0x30, 0x42, 0x77, 0x62, 0x61, 0x67, 0x7a, 0x69, 0x76, 0x45, 0x53, 0x71, 0x32, 0x4d, 0x30, 0x55, 0x58, 0x5a, 0x52, 0x34, 0x0a, 0x59, 0x62, 0x38, 0x4f, 0x62, 0x74, 0x6f, 0x71, 0x76, 0x43, 0x38, 0x4d, 0x43, 0x33, 0x47, 0x6d, 0x73, 0x78, 0x59, 0x2f, 0x6e, 0x4f, 0x62, 0x35, 0x7a, 0x4a, 0x39, 0x54, 0x4e, 0x65, 0x49, 0x44, 0x6f, 0x4b, 0x41, 0x59, 0x76, 0x37, 0x76, 0x78, 0x76, 0x76, 0x54, 0x57, 0x6a, 0x49, 0x63, 0x4e, 0x51, 0x76, 0x63, 0x47, 0x75, 0x66, 0x46, 0x74, 0x37, 0x51, 0x53, 0x55, 0x71, 0x50, 0x36, 0x32, 0x30, 0x77, 0x62, 0x47, 0x51, 0x47, 0x48, 0x66, 0x6e, 0x5a, 0x33, 0x7a, 0x0a, 0x56, 0x48, 0x62, 0x4f, 0x55, 0x7a, 0x6f, 0x42, 0x70, 0x70, 0x4a, 0x42, 0x37, 0x41, 0x53, 0x6a, 0x6a, 0x77, 0x32, 0x69, 0x31, 0x51, 0x6e, 0x4b, 0x31, 0x73, 0x75, 0x61, 0x38, 0x65, 0x39, 0x44, 0x58, 0x63, 0x43, 0x72, 0x70, 0x55, 0x48, 0x50, 0x58, 0x46, 0x4e, 0x77, 0x63, 0x4d, 0x6d, 0x49, 0x70, 0x69, 0x33, 0x55, 0x61, 0x32, 0x46, 0x7a, 0x55, 0x43, 0x61, 0x47, 0x59, 0x51, 0x35, 0x66, 0x47, 0x38, 0x49, 0x72, 0x34, 0x6f, 0x7a, 0x56, 0x75, 0x35, 0x33, 0x42, 0x0a, 0x41, 0x30, 0x4b, 0x36, 0x6c, 0x4e, 0x70, 0x66, 0x71, 0x62, 0x44, 0x4b, 0x7a, 0x45, 0x30, 0x4b, 0x37, 0x30, 0x64, 0x70, 0x41, 0x79, 0x38, 0x69, 0x2b, 0x2f, 0x45, 0x6f, 0x7a, 0x72, 0x39, 0x64, 0x55, 0x47, 0x57, 0x6f, 0x6b, 0x47, 0x32, 0x7a, 0x64, 0x4c, 0x41, 0x49, 0x78, 0x36, 0x79, 0x6f, 0x30, 0x65, 0x73, 0x2b, 0x6e, 0x50, 0x78, 0x64, 0x47, 0x6f, 0x4d, 0x75, 0x4b, 0x38, 0x75, 0x31, 0x38, 0x30, 0x53, 0x64, 0x4f, 0x71, 0x63, 0x58, 0x59, 0x5a, 0x61, 0x69, 0x0a, 0x63, 0x64, 0x4e, 0x77, 0x6c, 0x68, 0x56, 0x4e, 0x74, 0x30, 0x78, 0x7a, 0x37, 0x68, 0x6c, 0x63, 0x78, 0x56, 0x73, 0x2b, 0x51, 0x66, 0x36, 0x73, 0x64, 0x57, 0x41, 0x37, 0x47, 0x32, 0x50, 0x4f, 0x41, 0x4e, 0x33, 0x61, 0x43, 0x4a, 0x42, 0x69, 0x74, 0x4f, 0x55, 0x74, 0x37, 0x6b, 0x69, 0x6e, 0x61, 0x78, 0x65, 0x5a, 0x56, 0x4c, 0x36, 0x48, 0x53, 0x75, 0x4f, 0x70, 0x58, 0x67, 0x52, 0x4d, 0x36, 0x78, 0x42, 0x74, 0x56, 0x4e, 0x62, 0x76, 0x38, 0x65, 0x6a, 0x79, 0x0a, 0x59, 0x68, 0x62, 0x4c, 0x67, 0x47, 0x76, 0x74, 0x50, 0x65, 0x33, 0x31, 0x48, 0x7a, 0x43, 0x6c, 0x72, 0x6b, 0x76, 0x4a, 0x45, 0x2b, 0x32, 0x4b, 0x41, 0x51, 0x48, 0x4a, 0x75, 0x46, 0x46, 0x59, 0x77, 0x47, 0x59, 0x36, 0x73, 0x57, 0x5a, 0x4c, 0x78, 0x4e, 0x55, 0x78, 0x41, 0x6d, 0x4c, 0x70, 0x64, 0x49, 0x51, 0x4d, 0x32, 0x30, 0x31, 0x47, 0x4c, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x30, 0x70, 0x2b, 0x49, 0x33, 0x36, 0x48, 0x4e, 0x4c, 0x4c, 0x33, 0x73, 0x39, 0x54, 0x73, 0x42, 0x41, 0x5a, 0x4d, 0x7a, 0x4a, 0x37, 0x4c, 0x72, 0x59, 0x45, 0x73, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x0a, 0x41, 0x66, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x44, 0x4c, 0x4b, 0x67, 0x4c, 0x4f, 0x64, 0x50, 0x56, 0x51, 0x47, 0x33, 0x64, 0x4c, 0x53, 0x4c, 0x76, 0x43, 0x6b, 0x41, 0x53, 0x45, 0x4c, 0x5a, 0x30, 0x6a, 0x4b, 0x62, 0x59, 0x37, 0x67, 0x79, 0x4b, 0x6f, 0x4e, 0x71, 0x6f, 0x30, 0x68, 0x56, 0x34, 0x2f, 0x47, 0x50, 0x6e, 0x72, 0x4b, 0x0a, 0x32, 0x31, 0x48, 0x55, 0x55, 0x72, 0x50, 0x55, 0x6c, 0x6f, 0x53, 0x6c, 0x57, 0x47, 0x42, 0x2f, 0x35, 0x51, 0x75, 0x4f, 0x48, 0x2f, 0x58, 0x63, 0x43, 0x68, 0x57, 0x42, 0x35, 0x54, 0x75, 0x32, 0x74, 0x79, 0x49, 0x76, 0x43, 0x5a, 0x77, 0x54, 0x46, 0x72, 0x46, 0x73, 0x44, 0x44, 0x55, 0x49, 0x62, 0x61, 0x74, 0x6a, 0x63, 0x75, 0x33, 0x63, 0x76, 0x75, 0x7a, 0x48, 0x56, 0x2b, 0x59, 0x77, 0x49, 0x48, 0x48, 0x57, 0x31, 0x78, 0x44, 0x42, 0x45, 0x31, 0x55, 0x42, 0x0a, 0x6a, 0x43, 0x70, 0x44, 0x35, 0x45, 0x48, 0x78, 0x7a, 0x7a, 0x70, 0x36, 0x55, 0x35, 0x4c, 0x4f, 0x6f, 0x67, 0x4d, 0x46, 0x44, 0x54, 0x6a, 0x66, 0x41, 0x72, 0x73, 0x51, 0x4c, 0x74, 0x6b, 0x37, 0x30, 0x70, 0x74, 0x36, 0x77, 0x4b, 0x47, 0x6d, 0x2b, 0x4c, 0x55, 0x78, 0x35, 0x76, 0x52, 0x31, 0x79, 0x62, 0x6c, 0x54, 0x6d, 0x58, 0x56, 0x48, 0x49, 0x6c, 0x6f, 0x55, 0x46, 0x63, 0x64, 0x34, 0x47, 0x37, 0x61, 0x64, 0x36, 0x51, 0x7a, 0x34, 0x47, 0x33, 0x62, 0x78, 0x0a, 0x68, 0x59, 0x54, 0x65, 0x6f, 0x64, 0x6f, 0x53, 0x37, 0x36, 0x54, 0x69, 0x45, 0x4a, 0x64, 0x36, 0x65, 0x4e, 0x34, 0x4d, 0x55, 0x5a, 0x65, 0x6f, 0x49, 0x55, 0x43, 0x4c, 0x68, 0x72, 0x30, 0x4e, 0x38, 0x46, 0x35, 0x4f, 0x53, 0x7a, 0x61, 0x37, 0x4f, 0x79, 0x41, 0x66, 0x69, 0x6b, 0x4a, 0x57, 0x34, 0x51, 0x73, 0x61, 0x76, 0x33, 0x76, 0x51, 0x49, 0x6b, 0x4d, 0x73, 0x52, 0x49, 0x7a, 0x37, 0x35, 0x53, 0x71, 0x30, 0x62, 0x42, 0x77, 0x63, 0x75, 0x70, 0x54, 0x67, 0x0a, 0x45, 0x33, 0x34, 0x68, 0x35, 0x70, 0x72, 0x43, 0x79, 0x38, 0x56, 0x43, 0x5a, 0x4c, 0x51, 0x65, 0x6c, 0x48, 0x73, 0x49, 0x4a, 0x63, 0x68, 0x78, 0x7a, 0x49, 0x64, 0x46, 0x56, 0x34, 0x58, 0x54, 0x6e, 0x79, 0x6c, 0x69, 0x49, 0x6f, 0x4e, 0x52, 0x6c, 0x77, 0x41, 0x59, 0x6c, 0x33, 0x64, 0x71, 0x6d, 0x4a, 0x4c, 0x4a, 0x66, 0x47, 0x42, 0x73, 0x33, 0x32, 0x78, 0x39, 0x53, 0x75, 0x52, 0x77, 0x54, 0x4d, 0x4b, 0x65, 0x75, 0x42, 0x33, 0x33, 0x30, 0x44, 0x54, 0x48, 0x0a, 0x44, 0x38, 0x7a, 0x37, 0x70, 0x2f, 0x38, 0x44, 0x76, 0x71, 0x31, 0x77, 0x6b, 0x4e, 0x6f, 0x4c, 0x33, 0x63, 0x68, 0x74, 0x6c, 0x31, 0x2b, 0x61, 0x66, 0x77, 0x6b, 0x79, 0x51, 0x66, 0x33, 0x4e, 0x6f, 0x73, 0x78, 0x61, 0x62, 0x55, 0x7a, 0x79, 0x71, 0x6b, 0x6e, 0x2b, 0x5a, 0x76, 0x6a, 0x70, 0x32, 0x44, 0x58, 0x72, 0x44, 0x69, 0x67, 0x65, 0x37, 0x6b, 0x67, 0x76, 0x4f, 0x74, 0x42, 0x35, 0x43, 0x54, 0x68, 0x38, 0x70, 0x69, 0x4b, 0x43, 0x6b, 0x35, 0x58, 0x51, 0x0a, 0x41, 0x37, 0x36, 0x2b, 0x41, 0x71, 0x41, 0x46, 0x33, 0x53, 0x41, 0x69, 0x34, 0x32, 0x38, 0x64, 0x69, 0x44, 0x52, 0x67, 0x78, 0x75, 0x59, 0x4b, 0x75, 0x51, 0x6c, 0x31, 0x43, 0x2f, 0x41, 0x48, 0x36, 0x47, 0x6d, 0x57, 0x4e, 0x63, 0x66, 0x37, 0x49, 0x34, 0x47, 0x4f, 0x4f, 0x44, 0x6d, 0x34, 0x52, 0x53, 0x74, 0x44, 0x65, 0x4b, 0x4c, 0x52, 0x4c, 0x42, 0x54, 0x2f, 0x44, 0x53, 0x68, 0x79, 0x63, 0x70, 0x57, 0x62, 0x58, 0x67, 0x6e, 0x62, 0x69, 0x55, 0x53, 0x59, 0x0a, 0x71, 0x71, 0x46, 0x4a, 0x75, 0x33, 0x46, 0x53, 0x38, 0x72, 0x2f, 0x32, 0x2f, 0x79, 0x65, 0x68, 0x4e, 0x71, 0x2b, 0x34, 0x74, 0x6e, 0x65, 0x49, 0x33, 0x54, 0x71, 0x6b, 0x62, 0x5a, 0x73, 0x30, 0x6b, 0x4e, 0x77, 0x55, 0x58, 0x54, 0x43, 0x2f, 0x74, 0x2b, 0x73, 0x58, 0x35, 0x49, 0x65, 0x33, 0x63, 0x64, 0x43, 0x68, 0x31, 0x33, 0x63, 0x56, 0x31, 0x45, 0x4c, 0x58, 0x38, 0x76, 0x4d, 0x78, 0x6d, 0x56, 0x32, 0x62, 0x33, 0x52, 0x5a, 0x74, 0x50, 0x2b, 0x6f, 0x47, 0x0a, 0x49, 0x2f, 0x68, 0x47, 0x6f, 0x69, 0x4c, 0x74, 0x6b, 0x2f, 0x62, 0x64, 0x6d, 0x75, 0x59, 0x71, 0x68, 0x37, 0x47, 0x59, 0x56, 0x50, 0x45, 0x69, 0x39, 0x32, 0x74, 0x46, 0x34, 0x2b, 0x4b, 0x4f, 0x64, 0x68, 0x32, 0x61, 0x6a, 0x63, 0x51, 0x47, 0x6a, 0x54, 0x61, 0x33, 0x46, 0x50, 0x4f, 0x64, 0x56, 0x47, 0x6d, 0x33, 0x6a, 0x6a, 0x7a, 0x56, 0x70, 0x47, 0x32, 0x54, 0x67, 0x62, 0x65, 0x74, 0x39, 0x72, 0x31, 0x6b, 0x65, 0x38, 0x4c, 0x4a, 0x61, 0x44, 0x6d, 0x67, 0x0a, 0x6b, 0x70, 0x7a, 0x4e, 0x4e, 0x49, 0x61, 0x52, 0x6b, 0x50, 0x70, 0x6b, 0x55, 0x5a, 0x33, 0x2b, 0x2f, 0x75, 0x75, 0x6c, 0x39, 0x58, 0x58, 0x65, 0x69, 0x66, 0x64, 0x79, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x43, 0x20, 0x52, 0x41, 0x49, 0x5a, 0x20, 0x46, 0x4e, 0x4d, 0x54, 0x2d, 0x52, 0x43, 0x4d, 0x20, 0x53, 0x45, 0x52, 0x56, 0x49, 0x44, 0x4f, 0x52, 0x45, 0x53, 0x20, 0x53, 0x45, 0x47, 0x55, 0x52, 0x4f, 0x53, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x62, 0x6a, 0x43, 0x43, 0x41, 0x66, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x59, 0x76, 0x59, 0x79, 0x62, 0x4f, 0x58, 0x45, 0x34, 0x32, 0x68, 0x63, 0x47, 0x32, 0x4c, 0x64, 0x6e, 0x43, 0x36, 0x64, 0x6c, 0x54, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x34, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x46, 0x0a, 0x55, 0x7a, 0x45, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x49, 0x52, 0x6b, 0x35, 0x4e, 0x56, 0x43, 0x31, 0x53, 0x51, 0x30, 0x30, 0x78, 0x44, 0x6a, 0x41, 0x4d, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x73, 0x4d, 0x42, 0x55, 0x4e, 0x6c, 0x63, 0x6d, 0x56, 0x7a, 0x4d, 0x52, 0x67, 0x77, 0x46, 0x67, 0x59, 0x44, 0x56, 0x51, 0x52, 0x68, 0x44, 0x41, 0x39, 0x57, 0x51, 0x56, 0x52, 0x46, 0x55, 0x79, 0x31, 0x52, 0x4d, 0x6a, 0x67, 0x79, 0x0a, 0x4e, 0x6a, 0x41, 0x77, 0x4e, 0x45, 0x6f, 0x78, 0x4c, 0x44, 0x41, 0x71, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x49, 0x30, 0x46, 0x44, 0x49, 0x46, 0x4a, 0x42, 0x53, 0x56, 0x6f, 0x67, 0x52, 0x6b, 0x35, 0x4e, 0x56, 0x43, 0x31, 0x53, 0x51, 0x30, 0x30, 0x67, 0x55, 0x30, 0x56, 0x53, 0x56, 0x6b, 0x6c, 0x45, 0x54, 0x31, 0x4a, 0x46, 0x55, 0x79, 0x42, 0x54, 0x52, 0x55, 0x64, 0x56, 0x55, 0x6b, 0x39, 0x54, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x34, 0x0a, 0x4d, 0x54, 0x49, 0x79, 0x4d, 0x44, 0x41, 0x35, 0x4d, 0x7a, 0x63, 0x7a, 0x4d, 0x31, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x7a, 0x4d, 0x54, 0x49, 0x79, 0x4d, 0x44, 0x41, 0x35, 0x4d, 0x7a, 0x63, 0x7a, 0x4d, 0x31, 0x6f, 0x77, 0x65, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x56, 0x4d, 0x78, 0x45, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x45, 0x5a, 0x4f, 0x54, 0x56, 0x51, 0x74, 0x0a, 0x55, 0x6b, 0x4e, 0x4e, 0x4d, 0x51, 0x34, 0x77, 0x44, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x44, 0x41, 0x56, 0x44, 0x5a, 0x58, 0x4a, 0x6c, 0x63, 0x7a, 0x45, 0x59, 0x4d, 0x42, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x59, 0x51, 0x77, 0x50, 0x56, 0x6b, 0x46, 0x55, 0x52, 0x56, 0x4d, 0x74, 0x55, 0x54, 0x49, 0x34, 0x4d, 0x6a, 0x59, 0x77, 0x4d, 0x44, 0x52, 0x4b, 0x4d, 0x53, 0x77, 0x77, 0x4b, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x43, 0x4e, 0x42, 0x0a, 0x51, 0x79, 0x42, 0x53, 0x51, 0x55, 0x6c, 0x61, 0x49, 0x45, 0x5a, 0x4f, 0x54, 0x56, 0x51, 0x74, 0x55, 0x6b, 0x4e, 0x4e, 0x49, 0x46, 0x4e, 0x46, 0x55, 0x6c, 0x5a, 0x4a, 0x52, 0x45, 0x39, 0x53, 0x52, 0x56, 0x4d, 0x67, 0x55, 0x30, 0x56, 0x48, 0x56, 0x56, 0x4a, 0x50, 0x55, 0x7a, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x0a, 0x42, 0x50, 0x61, 0x36, 0x56, 0x31, 0x50, 0x49, 0x79, 0x71, 0x76, 0x66, 0x4e, 0x6b, 0x70, 0x53, 0x49, 0x65, 0x53, 0x58, 0x30, 0x6f, 0x4e, 0x6e, 0x6e, 0x76, 0x42, 0x6c, 0x55, 0x64, 0x42, 0x65, 0x68, 0x38, 0x64, 0x48, 0x73, 0x56, 0x6e, 0x79, 0x56, 0x30, 0x65, 0x62, 0x41, 0x41, 0x4b, 0x54, 0x52, 0x42, 0x64, 0x70, 0x32, 0x30, 0x4c, 0x48, 0x73, 0x62, 0x49, 0x36, 0x47, 0x41, 0x36, 0x30, 0x58, 0x59, 0x79, 0x7a, 0x5a, 0x6c, 0x32, 0x68, 0x4e, 0x50, 0x6b, 0x32, 0x0a, 0x4c, 0x45, 0x6e, 0x62, 0x38, 0x30, 0x62, 0x38, 0x73, 0x30, 0x52, 0x70, 0x52, 0x42, 0x4e, 0x6d, 0x2f, 0x64, 0x66, 0x46, 0x2f, 0x61, 0x38, 0x32, 0x54, 0x63, 0x34, 0x44, 0x54, 0x51, 0x64, 0x78, 0x7a, 0x36, 0x39, 0x71, 0x42, 0x64, 0x4b, 0x69, 0x51, 0x31, 0x6f, 0x4b, 0x55, 0x6d, 0x38, 0x42, 0x41, 0x30, 0x36, 0x4f, 0x69, 0x36, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x0a, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x41, 0x47, 0x35, 0x4c, 0x2b, 0x2b, 0x2f, 0x45, 0x59, 0x5a, 0x67, 0x38, 0x6b, 0x2f, 0x51, 0x51, 0x57, 0x36, 0x72, 0x63, 0x78, 0x2f, 0x6e, 0x30, 0x6d, 0x35, 0x4a, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x0a, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x44, 0x41, 0x32, 0x6b, 0x41, 0x4d, 0x47, 0x59, 0x43, 0x4d, 0x51, 0x43, 0x75, 0x53, 0x75, 0x4d, 0x72, 0x51, 0x4d, 0x4e, 0x30, 0x45, 0x66, 0x4b, 0x56, 0x72, 0x52, 0x59, 0x6a, 0x33, 0x6b, 0x34, 0x4d, 0x47, 0x75, 0x5a, 0x64, 0x70, 0x53, 0x52, 0x65, 0x61, 0x30, 0x52, 0x37, 0x2f, 0x44, 0x6a, 0x69, 0x54, 0x38, 0x75, 0x63, 0x52, 0x52, 0x63, 0x52, 0x54, 0x42, 0x51, 0x6e, 0x4a, 0x6c, 0x55, 0x35, 0x64, 0x55, 0x6f, 0x44, 0x0a, 0x7a, 0x42, 0x4f, 0x51, 0x6e, 0x35, 0x49, 0x43, 0x4d, 0x51, 0x44, 0x36, 0x53, 0x6d, 0x78, 0x67, 0x69, 0x48, 0x50, 0x7a, 0x37, 0x72, 0x69, 0x59, 0x59, 0x71, 0x6e, 0x4f, 0x4b, 0x38, 0x4c, 0x5a, 0x69, 0x71, 0x5a, 0x77, 0x4d, 0x52, 0x32, 0x76, 0x73, 0x4a, 0x52, 0x4d, 0x36, 0x30, 0x2f, 0x47, 0x34, 0x39, 0x48, 0x7a, 0x59, 0x71, 0x63, 0x38, 0x2f, 0x35, 0x4d, 0x75, 0x42, 0x31, 0x78, 0x4a, 0x41, 0x57, 0x64, 0x70, 0x45, 0x67, 0x4a, 0x79, 0x76, 0x2b, 0x63, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x34, 0x36, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x57, 0x6a, 0x43, 0x43, 0x41, 0x30, 0x4b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x53, 0x45, 0x64, 0x4b, 0x37, 0x75, 0x64, 0x63, 0x6a, 0x47, 0x4a, 0x35, 0x41, 0x58, 0x77, 0x71, 0x64, 0x4c, 0x64, 0x44, 0x66, 0x4a, 0x57, 0x66, 0x52, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x44, 0x41, 0x55, 0x41, 0x4d, 0x45, 0x59, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4a, 0x46, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x47, 0x35, 0x32, 0x4c, 0x58, 0x4e, 0x68, 0x4d, 0x52, 0x77, 0x77, 0x47, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x4e, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x0a, 0x62, 0x33, 0x51, 0x67, 0x55, 0x6a, 0x51, 0x32, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x35, 0x4d, 0x44, 0x4d, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x32, 0x4d, 0x44, 0x4d, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x77, 0x52, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x6b, 0x55, 0x78, 0x47, 0x54, 0x41, 0x58, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x45, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x67, 0x62, 0x6e, 0x59, 0x74, 0x63, 0x32, 0x45, 0x78, 0x48, 0x44, 0x41, 0x61, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x30, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x53, 0x4e, 0x44, 0x59, 0x77, 0x67, 0x67, 0x49, 0x69, 0x0a, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x73, 0x72, 0x48, 0x51, 0x79, 0x36, 0x4c, 0x4e, 0x6c, 0x35, 0x62, 0x72, 0x74, 0x51, 0x79, 0x59, 0x64, 0x70, 0x6f, 0x6b, 0x4e, 0x52, 0x62, 0x6f, 0x70, 0x69, 0x4c, 0x4b, 0x6b, 0x48, 0x57, 0x50, 0x64, 0x30, 0x38, 0x45, 0x73, 0x0a, 0x43, 0x56, 0x65, 0x4a, 0x4f, 0x61, 0x46, 0x56, 0x36, 0x57, 0x63, 0x30, 0x64, 0x77, 0x78, 0x75, 0x35, 0x46, 0x55, 0x64, 0x55, 0x69, 0x58, 0x53, 0x45, 0x32, 0x74, 0x65, 0x34, 0x52, 0x32, 0x70, 0x74, 0x33, 0x32, 0x4a, 0x4d, 0x6c, 0x38, 0x4e, 0x6e, 0x70, 0x38, 0x73, 0x65, 0x6d, 0x4e, 0x67, 0x51, 0x42, 0x2b, 0x6d, 0x73, 0x4c, 0x5a, 0x34, 0x6a, 0x35, 0x6c, 0x55, 0x6c, 0x67, 0x68, 0x59, 0x72, 0x75, 0x51, 0x47, 0x76, 0x47, 0x49, 0x46, 0x41, 0x68, 0x61, 0x2f, 0x0a, 0x72, 0x36, 0x67, 0x6a, 0x41, 0x37, 0x61, 0x55, 0x44, 0x37, 0x78, 0x75, 0x62, 0x4d, 0x4c, 0x4c, 0x31, 0x61, 0x61, 0x37, 0x44, 0x4f, 0x6e, 0x32, 0x77, 0x51, 0x4c, 0x37, 0x49, 0x64, 0x35, 0x6d, 0x33, 0x52, 0x65, 0x72, 0x64, 0x45, 0x4c, 0x76, 0x38, 0x48, 0x51, 0x76, 0x4a, 0x66, 0x54, 0x71, 0x61, 0x31, 0x56, 0x62, 0x6b, 0x4e, 0x75, 0x64, 0x33, 0x31, 0x36, 0x48, 0x43, 0x6b, 0x44, 0x37, 0x72, 0x52, 0x6c, 0x72, 0x2b, 0x2f, 0x66, 0x4b, 0x59, 0x49, 0x6a, 0x65, 0x0a, 0x32, 0x73, 0x47, 0x50, 0x31, 0x71, 0x37, 0x56, 0x66, 0x39, 0x51, 0x38, 0x67, 0x2b, 0x37, 0x58, 0x46, 0x6b, 0x79, 0x44, 0x52, 0x54, 0x4e, 0x72, 0x4a, 0x39, 0x43, 0x47, 0x30, 0x42, 0x77, 0x74, 0x61, 0x2f, 0x4f, 0x72, 0x66, 0x66, 0x47, 0x46, 0x71, 0x66, 0x55, 0x6f, 0x30, 0x71, 0x33, 0x76, 0x38, 0x34, 0x52, 0x4c, 0x48, 0x49, 0x66, 0x38, 0x45, 0x36, 0x4d, 0x36, 0x63, 0x71, 0x4a, 0x61, 0x45, 0x53, 0x76, 0x57, 0x4a, 0x33, 0x45, 0x6e, 0x37, 0x59, 0x45, 0x74, 0x0a, 0x62, 0x57, 0x61, 0x42, 0x6b, 0x6f, 0x65, 0x30, 0x47, 0x31, 0x68, 0x36, 0x7a, 0x44, 0x38, 0x4b, 0x2b, 0x6b, 0x5a, 0x50, 0x54, 0x58, 0x68, 0x63, 0x2b, 0x43, 0x74, 0x49, 0x34, 0x77, 0x53, 0x45, 0x79, 0x31, 0x33, 0x32, 0x74, 0x47, 0x71, 0x7a, 0x5a, 0x66, 0x78, 0x43, 0x6e, 0x6c, 0x45, 0x6d, 0x49, 0x79, 0x44, 0x4c, 0x50, 0x52, 0x54, 0x35, 0x67, 0x65, 0x31, 0x6c, 0x46, 0x67, 0x42, 0x50, 0x47, 0x6d, 0x53, 0x58, 0x5a, 0x67, 0x6a, 0x50, 0x6a, 0x48, 0x76, 0x6a, 0x0a, 0x4b, 0x38, 0x43, 0x64, 0x2b, 0x52, 0x54, 0x79, 0x47, 0x2f, 0x46, 0x57, 0x61, 0x68, 0x61, 0x2f, 0x4c, 0x49, 0x57, 0x46, 0x7a, 0x58, 0x67, 0x34, 0x6d, 0x75, 0x74, 0x43, 0x61, 0x67, 0x49, 0x30, 0x47, 0x49, 0x4d, 0x58, 0x54, 0x70, 0x52, 0x57, 0x2b, 0x4c, 0x61, 0x43, 0x74, 0x66, 0x4f, 0x57, 0x33, 0x54, 0x33, 0x7a, 0x76, 0x6e, 0x38, 0x67, 0x64, 0x7a, 0x35, 0x37, 0x47, 0x53, 0x4e, 0x72, 0x4c, 0x4e, 0x52, 0x79, 0x63, 0x30, 0x4e, 0x58, 0x66, 0x65, 0x44, 0x34, 0x0a, 0x31, 0x32, 0x6c, 0x50, 0x46, 0x7a, 0x59, 0x45, 0x2b, 0x63, 0x43, 0x51, 0x59, 0x44, 0x64, 0x46, 0x33, 0x75, 0x59, 0x4d, 0x32, 0x48, 0x53, 0x4e, 0x72, 0x70, 0x79, 0x69, 0x62, 0x58, 0x52, 0x64, 0x51, 0x72, 0x34, 0x47, 0x39, 0x64, 0x6c, 0x6b, 0x62, 0x67, 0x49, 0x51, 0x72, 0x49, 0x6d, 0x77, 0x54, 0x44, 0x73, 0x48, 0x54, 0x55, 0x42, 0x2b, 0x4a, 0x4d, 0x57, 0x4b, 0x6d, 0x49, 0x4a, 0x35, 0x6a, 0x71, 0x53, 0x6e, 0x67, 0x69, 0x43, 0x4e, 0x49, 0x2f, 0x6f, 0x6e, 0x0a, 0x63, 0x63, 0x6e, 0x66, 0x78, 0x6b, 0x46, 0x30, 0x6f, 0x45, 0x33, 0x32, 0x6b, 0x52, 0x62, 0x63, 0x52, 0x6f, 0x78, 0x66, 0x4b, 0x57, 0x4d, 0x78, 0x57, 0x58, 0x45, 0x4d, 0x32, 0x47, 0x2f, 0x43, 0x74, 0x6a, 0x4a, 0x39, 0x2b, 0x2b, 0x5a, 0x64, 0x55, 0x36, 0x5a, 0x2b, 0x46, 0x66, 0x79, 0x37, 0x64, 0x58, 0x78, 0x64, 0x37, 0x50, 0x6a, 0x32, 0x46, 0x78, 0x7a, 0x73, 0x78, 0x32, 0x73, 0x5a, 0x79, 0x2f, 0x4e, 0x37, 0x38, 0x43, 0x73, 0x48, 0x70, 0x64, 0x6c, 0x73, 0x0a, 0x65, 0x56, 0x52, 0x32, 0x62, 0x4a, 0x30, 0x63, 0x70, 0x6d, 0x34, 0x4f, 0x36, 0x58, 0x6b, 0x4d, 0x71, 0x43, 0x4e, 0x71, 0x6f, 0x39, 0x38, 0x62, 0x4d, 0x44, 0x47, 0x66, 0x73, 0x56, 0x52, 0x37, 0x2f, 0x6d, 0x72, 0x4c, 0x5a, 0x71, 0x72, 0x63, 0x5a, 0x64, 0x43, 0x69, 0x6e, 0x6b, 0x71, 0x61, 0x42, 0x79, 0x46, 0x72, 0x67, 0x59, 0x2f, 0x62, 0x78, 0x46, 0x6e, 0x36, 0x33, 0x69, 0x4c, 0x41, 0x42, 0x4a, 0x7a, 0x6a, 0x71, 0x6c, 0x73, 0x32, 0x6b, 0x2b, 0x67, 0x39, 0x0a, 0x76, 0x58, 0x71, 0x68, 0x6e, 0x51, 0x74, 0x32, 0x73, 0x51, 0x76, 0x48, 0x6e, 0x66, 0x33, 0x50, 0x6d, 0x4b, 0x67, 0x47, 0x77, 0x76, 0x67, 0x71, 0x6f, 0x36, 0x47, 0x44, 0x6f, 0x4c, 0x63, 0x6c, 0x63, 0x71, 0x55, 0x43, 0x34, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x0a, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x41, 0x31, 0x79, 0x72, 0x63, 0x34, 0x47, 0x48, 0x71, 0x4d, 0x79, 0x77, 0x70, 0x74, 0x57, 0x55, 0x34, 0x6a, 0x61, 0x57, 0x53, 0x66, 0x38, 0x46, 0x6d, 0x53, 0x77, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x0a, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x48, 0x78, 0x34, 0x37, 0x50, 0x59, 0x43, 0x4c, 0x4c, 0x74, 0x62, 0x66, 0x70, 0x49, 0x72, 0x58, 0x54, 0x6e, 0x63, 0x76, 0x74, 0x67, 0x64, 0x6f, 0x6b, 0x49, 0x7a, 0x54, 0x66, 0x6e, 0x76, 0x70, 0x43, 0x6f, 0x37, 0x52, 0x47, 0x6b, 0x65, 0x72, 0x4e, 0x6c, 0x46, 0x6f, 0x30, 0x34, 0x38, 0x70, 0x39, 0x67, 0x6b, 0x55, 0x62, 0x4a, 0x55, 0x48, 0x4a, 0x4e, 0x4f, 0x78, 0x4f, 0x39, 0x37, 0x6b, 0x34, 0x56, 0x67, 0x0a, 0x4a, 0x75, 0x6f, 0x4a, 0x53, 0x4f, 0x44, 0x31, 0x75, 0x38, 0x66, 0x70, 0x61, 0x4e, 0x4b, 0x37, 0x61, 0x6a, 0x46, 0x78, 0x7a, 0x48, 0x6d, 0x75, 0x45, 0x61, 0x6a, 0x77, 0x6d, 0x66, 0x33, 0x6c, 0x48, 0x37, 0x77, 0x76, 0x71, 0x4d, 0x78, 0x58, 0x36, 0x33, 0x62, 0x45, 0x49, 0x61, 0x5a, 0x48, 0x55, 0x31, 0x56, 0x4e, 0x61, 0x4c, 0x38, 0x46, 0x70, 0x4f, 0x37, 0x58, 0x4a, 0x71, 0x74, 0x69, 0x32, 0x6b, 0x4d, 0x33, 0x53, 0x2b, 0x4c, 0x47, 0x74, 0x65, 0x57, 0x79, 0x0a, 0x67, 0x78, 0x6b, 0x36, 0x78, 0x39, 0x50, 0x62, 0x54, 0x5a, 0x34, 0x49, 0x65, 0x76, 0x50, 0x75, 0x7a, 0x7a, 0x35, 0x69, 0x2b, 0x36, 0x7a, 0x6f, 0x59, 0x4d, 0x7a, 0x52, 0x78, 0x36, 0x46, 0x63, 0x67, 0x30, 0x58, 0x45, 0x52, 0x63, 0x7a, 0x7a, 0x46, 0x32, 0x73, 0x55, 0x79, 0x51, 0x51, 0x43, 0x50, 0x74, 0x49, 0x6b, 0x70, 0x6e, 0x6e, 0x70, 0x48, 0x73, 0x36, 0x69, 0x35, 0x38, 0x46, 0x5a, 0x46, 0x5a, 0x38, 0x64, 0x34, 0x6b, 0x75, 0x61, 0x50, 0x70, 0x39, 0x32, 0x0a, 0x43, 0x43, 0x31, 0x72, 0x32, 0x4c, 0x70, 0x58, 0x46, 0x4e, 0x71, 0x44, 0x36, 0x76, 0x36, 0x4d, 0x56, 0x65, 0x6e, 0x51, 0x54, 0x71, 0x6e, 0x4d, 0x64, 0x7a, 0x47, 0x78, 0x52, 0x42, 0x46, 0x36, 0x58, 0x4c, 0x45, 0x2b, 0x30, 0x78, 0x52, 0x46, 0x46, 0x52, 0x68, 0x69, 0x4a, 0x42, 0x50, 0x53, 0x79, 0x30, 0x33, 0x4f, 0x58, 0x49, 0x50, 0x42, 0x4e, 0x76, 0x49, 0x51, 0x74, 0x51, 0x36, 0x49, 0x62, 0x62, 0x6a, 0x68, 0x56, 0x70, 0x2b, 0x4a, 0x33, 0x70, 0x5a, 0x6d, 0x0a, 0x4f, 0x55, 0x64, 0x6b, 0x4c, 0x47, 0x35, 0x4e, 0x72, 0x6d, 0x4a, 0x37, 0x76, 0x32, 0x42, 0x30, 0x47, 0x62, 0x68, 0x57, 0x72, 0x4a, 0x4b, 0x73, 0x46, 0x6a, 0x4c, 0x74, 0x72, 0x57, 0x68, 0x56, 0x2f, 0x70, 0x69, 0x36, 0x30, 0x7a, 0x54, 0x65, 0x39, 0x4d, 0x6c, 0x68, 0x77, 0x77, 0x36, 0x47, 0x39, 0x6b, 0x75, 0x45, 0x59, 0x4f, 0x34, 0x4e, 0x65, 0x37, 0x55, 0x79, 0x57, 0x48, 0x6d, 0x52, 0x56, 0x53, 0x79, 0x42, 0x51, 0x37, 0x4e, 0x30, 0x48, 0x33, 0x71, 0x71, 0x0a, 0x4a, 0x5a, 0x34, 0x64, 0x31, 0x36, 0x47, 0x4c, 0x75, 0x63, 0x31, 0x43, 0x4c, 0x67, 0x53, 0x6b, 0x5a, 0x6f, 0x4e, 0x4e, 0x69, 0x54, 0x57, 0x32, 0x62, 0x4b, 0x67, 0x32, 0x53, 0x6e, 0x6b, 0x68, 0x65, 0x43, 0x4c, 0x51, 0x51, 0x72, 0x7a, 0x52, 0x51, 0x44, 0x47, 0x51, 0x6f, 0x62, 0x34, 0x45, 0x7a, 0x38, 0x70, 0x6e, 0x37, 0x66, 0x58, 0x77, 0x67, 0x4e, 0x4e, 0x67, 0x79, 0x59, 0x4d, 0x71, 0x49, 0x67, 0x58, 0x51, 0x42, 0x7a, 0x74, 0x53, 0x76, 0x77, 0x79, 0x65, 0x0a, 0x71, 0x69, 0x76, 0x35, 0x75, 0x2b, 0x59, 0x66, 0x6a, 0x79, 0x57, 0x36, 0x68, 0x59, 0x30, 0x58, 0x48, 0x67, 0x4c, 0x2b, 0x58, 0x56, 0x41, 0x45, 0x56, 0x38, 0x2f, 0x2b, 0x4c, 0x62, 0x7a, 0x76, 0x58, 0x4d, 0x41, 0x61, 0x71, 0x37, 0x61, 0x66, 0x4a, 0x4d, 0x62, 0x66, 0x63, 0x32, 0x68, 0x49, 0x6b, 0x43, 0x77, 0x55, 0x39, 0x44, 0x39, 0x53, 0x47, 0x75, 0x54, 0x53, 0x79, 0x78, 0x54, 0x44, 0x59, 0x57, 0x6e, 0x50, 0x34, 0x76, 0x6b, 0x59, 0x78, 0x62, 0x6f, 0x7a, 0x0a, 0x6e, 0x78, 0x53, 0x6a, 0x42, 0x46, 0x32, 0x35, 0x63, 0x66, 0x65, 0x31, 0x6c, 0x4e, 0x6a, 0x32, 0x4d, 0x38, 0x46, 0x61, 0x77, 0x54, 0x53, 0x4c, 0x66, 0x4a, 0x76, 0x64, 0x6b, 0x7a, 0x72, 0x6e, 0x45, 0x36, 0x4a, 0x77, 0x59, 0x5a, 0x2b, 0x76, 0x6a, 0x2b, 0x76, 0x59, 0x78, 0x58, 0x58, 0x34, 0x4d, 0x32, 0x62, 0x55, 0x64, 0x47, 0x63, 0x36, 0x4e, 0x33, 0x65, 0x63, 0x35, 0x39, 0x32, 0x6b, 0x44, 0x33, 0x5a, 0x44, 0x5a, 0x6f, 0x70, 0x44, 0x38, 0x70, 0x2f, 0x37, 0x0a, 0x44, 0x45, 0x4a, 0x34, 0x59, 0x39, 0x48, 0x69, 0x44, 0x32, 0x39, 0x37, 0x31, 0x4b, 0x45, 0x39, 0x64, 0x4a, 0x65, 0x46, 0x74, 0x30, 0x67, 0x35, 0x51, 0x64, 0x59, 0x67, 0x2f, 0x4e, 0x41, 0x36, 0x73, 0x2f, 0x72, 0x6f, 0x62, 0x38, 0x53, 0x4b, 0x75, 0x6e, 0x45, 0x33, 0x76, 0x6f, 0x75, 0x58, 0x73, 0x58, 0x67, 0x78, 0x54, 0x37, 0x50, 0x6e, 0x74, 0x67, 0x4d, 0x54, 0x7a, 0x6c, 0x53, 0x64, 0x72, 0x69, 0x56, 0x5a, 0x7a, 0x48, 0x38, 0x31, 0x58, 0x77, 0x6a, 0x33, 0x0a, 0x51, 0x45, 0x55, 0x78, 0x65, 0x43, 0x70, 0x36, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x45, 0x34, 0x36, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x7a, 0x43, 0x43, 0x41, 0x5a, 0x47, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x53, 0x45, 0x64, 0x4b, 0x37, 0x75, 0x6a, 0x4e, 0x75, 0x31, 0x4c, 0x7a, 0x6d, 0x4a, 0x47, 0x6a, 0x46, 0x44, 0x59, 0x51, 0x64, 0x6d, 0x4f, 0x68, 0x44, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x44, 0x4d, 0x45, 0x59, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x0a, 0x41, 0x6b, 0x4a, 0x46, 0x4d, 0x52, 0x6b, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x47, 0x35, 0x32, 0x4c, 0x58, 0x4e, 0x68, 0x4d, 0x52, 0x77, 0x77, 0x47, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x4e, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x0a, 0x52, 0x54, 0x51, 0x32, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x35, 0x4d, 0x44, 0x4d, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x32, 0x4d, 0x44, 0x4d, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x77, 0x52, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x6b, 0x55, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x6f, 0x54, 0x45, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x67, 0x62, 0x6e, 0x59, 0x74, 0x63, 0x32, 0x45, 0x78, 0x48, 0x44, 0x41, 0x61, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x30, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x46, 0x4e, 0x44, 0x59, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x0a, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x53, 0x63, 0x44, 0x72, 0x48, 0x50, 0x74, 0x2b, 0x69, 0x65, 0x55, 0x6e, 0x64, 0x31, 0x4e, 0x50, 0x71, 0x6c, 0x52, 0x71, 0x65, 0x74, 0x4d, 0x68, 0x6b, 0x79, 0x74, 0x41, 0x65, 0x70, 0x4a, 0x38, 0x71, 0x55, 0x75, 0x77, 0x7a, 0x53, 0x43, 0x68, 0x44, 0x48, 0x32, 0x6f, 0x6d, 0x77, 0x6c, 0x77, 0x78, 0x77, 0x45, 0x77, 0x6b, 0x42, 0x0a, 0x6a, 0x74, 0x6a, 0x71, 0x52, 0x2b, 0x71, 0x2b, 0x73, 0x6f, 0x41, 0x72, 0x7a, 0x66, 0x77, 0x6f, 0x44, 0x64, 0x75, 0x73, 0x76, 0x4b, 0x53, 0x47, 0x4e, 0x2b, 0x31, 0x77, 0x43, 0x41, 0x42, 0x31, 0x36, 0x70, 0x4d, 0x4c, 0x65, 0x79, 0x35, 0x53, 0x6e, 0x43, 0x4e, 0x6f, 0x49, 0x77, 0x5a, 0x44, 0x37, 0x4a, 0x49, 0x76, 0x55, 0x34, 0x54, 0x62, 0x2b, 0x30, 0x63, 0x55, 0x42, 0x2b, 0x68, 0x66, 0x6c, 0x47, 0x64, 0x64, 0x79, 0x58, 0x71, 0x42, 0x50, 0x43, 0x43, 0x6a, 0x0a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x51, 0x78, 0x43, 0x70, 0x43, 0x50, 0x74, 0x73, 0x61, 0x64, 0x30, 0x6b, 0x52, 0x4c, 0x0a, 0x67, 0x4c, 0x57, 0x69, 0x35, 0x68, 0x2b, 0x78, 0x45, 0x6b, 0x38, 0x62, 0x6c, 0x54, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6f, 0x41, 0x44, 0x42, 0x6c, 0x41, 0x6a, 0x45, 0x41, 0x33, 0x31, 0x53, 0x51, 0x37, 0x5a, 0x76, 0x76, 0x69, 0x35, 0x51, 0x43, 0x6b, 0x78, 0x65, 0x43, 0x6d, 0x62, 0x36, 0x7a, 0x6e, 0x69, 0x7a, 0x32, 0x43, 0x35, 0x47, 0x4d, 0x6e, 0x30, 0x6f, 0x55, 0x73, 0x66, 0x5a, 0x6b, 0x0a, 0x76, 0x4c, 0x74, 0x6f, 0x55, 0x52, 0x4d, 0x4d, 0x41, 0x2f, 0x63, 0x56, 0x69, 0x34, 0x52, 0x67, 0x75, 0x59, 0x76, 0x2f, 0x55, 0x6f, 0x37, 0x6e, 0x6a, 0x4c, 0x77, 0x63, 0x41, 0x6a, 0x41, 0x38, 0x2b, 0x52, 0x48, 0x55, 0x6a, 0x45, 0x37, 0x41, 0x77, 0x57, 0x48, 0x43, 0x46, 0x55, 0x79, 0x71, 0x71, 0x78, 0x30, 0x4c, 0x4d, 0x56, 0x38, 0x37, 0x48, 0x4f, 0x49, 0x41, 0x6c, 0x30, 0x51, 0x78, 0x35, 0x76, 0x35, 0x7a, 0x6c, 0x69, 0x2f, 0x61, 0x6c, 0x74, 0x50, 0x2b, 0x0a, 0x43, 0x41, 0x65, 0x7a, 0x4e, 0x49, 0x6d, 0x38, 0x42, 0x5a, 0x2f, 0x33, 0x48, 0x6f, 0x62, 0x75, 0x69, 0x33, 0x41, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x4e, 0x46, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x37, 0x7a, 0x43, 0x43, 0x41, 0x39, 0x65, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x44, 0x64, 0x50, 0x6a, 0x76, 0x47, 0x7a, 0x35, 0x61, 0x37, 0x45, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x67, 0x59, 0x51, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x55, 0x54, 0x43, 0x55, 0x63, 0x32, 0x4d, 0x7a, 0x49, 0x34, 0x0a, 0x4e, 0x7a, 0x55, 0x78, 0x4d, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x56, 0x4d, 0x78, 0x4a, 0x7a, 0x41, 0x6c, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x48, 0x6b, 0x46, 0x4f, 0x52, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x76, 0x63, 0x6d, 0x6c, 0x6b, 0x59, 0x57, 0x51, 0x67, 0x5a, 0x47, 0x55, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x59, 0x32, 0x6c, 0x76, 0x0a, 0x62, 0x6a, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4d, 0x4c, 0x51, 0x55, 0x35, 0x47, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x46, 0x4a, 0x68, 0x61, 0x58, 0x6f, 0x78, 0x49, 0x6a, 0x41, 0x67, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x47, 0x55, 0x46, 0x4f, 0x52, 0x69, 0x42, 0x54, 0x5a, 0x57, 0x4e, 0x31, 0x63, 0x6d, 0x55, 0x67, 0x55, 0x32, 0x56, 0x79, 0x64, 0x6d, 0x56, 0x79, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x0a, 0x51, 0x30, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x6b, 0x77, 0x4f, 0x54, 0x41, 0x30, 0x4d, 0x54, 0x41, 0x77, 0x4d, 0x44, 0x4d, 0x34, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x6b, 0x77, 0x4f, 0x44, 0x4d, 0x77, 0x4d, 0x54, 0x41, 0x77, 0x4d, 0x44, 0x4d, 0x34, 0x57, 0x6a, 0x43, 0x42, 0x68, 0x44, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x52, 0x4d, 0x4a, 0x52, 0x7a, 0x59, 0x7a, 0x4d, 0x6a, 0x67, 0x33, 0x4e, 0x54, 0x45, 0x77, 0x0a, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x46, 0x55, 0x7a, 0x45, 0x6e, 0x4d, 0x43, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x65, 0x51, 0x55, 0x35, 0x47, 0x49, 0x45, 0x46, 0x31, 0x64, 0x47, 0x39, 0x79, 0x61, 0x57, 0x52, 0x68, 0x5a, 0x43, 0x42, 0x6b, 0x5a, 0x53, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x6a, 0x61, 0x57, 0x39, 0x75, 0x4d, 0x52, 0x51, 0x77, 0x0a, 0x45, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x77, 0x74, 0x42, 0x54, 0x6b, 0x59, 0x67, 0x51, 0x30, 0x45, 0x67, 0x55, 0x6d, 0x46, 0x70, 0x65, 0x6a, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x5a, 0x51, 0x55, 0x35, 0x47, 0x49, 0x46, 0x4e, 0x6c, 0x59, 0x33, 0x56, 0x79, 0x5a, 0x53, 0x42, 0x54, 0x5a, 0x58, 0x4a, 0x32, 0x5a, 0x58, 0x49, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x54, 0x43, 0x43, 0x0a, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4e, 0x76, 0x72, 0x61, 0x79, 0x76, 0x6d, 0x5a, 0x46, 0x53, 0x56, 0x67, 0x70, 0x43, 0x6a, 0x63, 0x71, 0x51, 0x5a, 0x41, 0x5a, 0x32, 0x63, 0x43, 0x34, 0x46, 0x66, 0x63, 0x30, 0x6d, 0x36, 0x70, 0x36, 0x7a, 0x7a, 0x0a, 0x42, 0x45, 0x35, 0x37, 0x6c, 0x67, 0x76, 0x73, 0x45, 0x65, 0x42, 0x62, 0x70, 0x68, 0x7a, 0x4f, 0x47, 0x39, 0x49, 0x4e, 0x67, 0x78, 0x77, 0x72, 0x75, 0x4a, 0x34, 0x64, 0x66, 0x6b, 0x55, 0x79, 0x59, 0x41, 0x38, 0x48, 0x36, 0x58, 0x64, 0x59, 0x66, 0x70, 0x39, 0x71, 0x79, 0x47, 0x46, 0x4f, 0x74, 0x69, 0x62, 0x42, 0x54, 0x49, 0x33, 0x2f, 0x54, 0x4f, 0x38, 0x30, 0x73, 0x68, 0x39, 0x6c, 0x32, 0x4c, 0x6c, 0x34, 0x39, 0x61, 0x32, 0x70, 0x63, 0x62, 0x6e, 0x76, 0x0a, 0x54, 0x31, 0x67, 0x64, 0x70, 0x64, 0x35, 0x30, 0x49, 0x4a, 0x65, 0x68, 0x37, 0x57, 0x68, 0x4d, 0x33, 0x70, 0x49, 0x58, 0x53, 0x37, 0x79, 0x72, 0x2f, 0x32, 0x57, 0x61, 0x6e, 0x76, 0x74, 0x48, 0x32, 0x56, 0x64, 0x79, 0x38, 0x77, 0x6d, 0x68, 0x72, 0x6e, 0x5a, 0x45, 0x45, 0x32, 0x36, 0x63, 0x4c, 0x55, 0x51, 0x35, 0x76, 0x50, 0x6e, 0x48, 0x4f, 0x36, 0x52, 0x59, 0x50, 0x55, 0x47, 0x39, 0x74, 0x4d, 0x4a, 0x4a, 0x6f, 0x38, 0x67, 0x4e, 0x30, 0x70, 0x63, 0x76, 0x0a, 0x42, 0x32, 0x56, 0x53, 0x41, 0x4b, 0x64, 0x75, 0x79, 0x4b, 0x39, 0x6f, 0x37, 0x50, 0x51, 0x55, 0x6c, 0x72, 0x5a, 0x58, 0x48, 0x31, 0x62, 0x44, 0x4f, 0x5a, 0x38, 0x72, 0x62, 0x65, 0x54, 0x7a, 0x50, 0x76, 0x59, 0x31, 0x5a, 0x4e, 0x6f, 0x4d, 0x48, 0x4b, 0x47, 0x45, 0x53, 0x79, 0x39, 0x4c, 0x53, 0x2b, 0x49, 0x73, 0x4a, 0x4a, 0x31, 0x74, 0x6b, 0x30, 0x44, 0x72, 0x74, 0x53, 0x4f, 0x4f, 0x4d, 0x73, 0x70, 0x76, 0x52, 0x64, 0x4f, 0x6f, 0x69, 0x58, 0x73, 0x65, 0x0a, 0x7a, 0x78, 0x37, 0x36, 0x57, 0x30, 0x4f, 0x4c, 0x7a, 0x63, 0x32, 0x6f, 0x44, 0x32, 0x72, 0x4b, 0x44, 0x46, 0x36, 0x35, 0x6e, 0x6b, 0x65, 0x50, 0x38, 0x4e, 0x6d, 0x32, 0x43, 0x67, 0x74, 0x59, 0x5a, 0x52, 0x63, 0x7a, 0x75, 0x53, 0x50, 0x6b, 0x64, 0x78, 0x6c, 0x39, 0x79, 0x30, 0x6f, 0x75, 0x6b, 0x6e, 0x74, 0x50, 0x4c, 0x78, 0x42, 0x33, 0x73, 0x59, 0x30, 0x76, 0x61, 0x4a, 0x78, 0x69, 0x7a, 0x4f, 0x42, 0x51, 0x2b, 0x4f, 0x79, 0x52, 0x70, 0x31, 0x52, 0x4d, 0x0a, 0x56, 0x77, 0x6e, 0x56, 0x64, 0x6d, 0x50, 0x46, 0x36, 0x47, 0x55, 0x65, 0x37, 0x6d, 0x31, 0x71, 0x7a, 0x77, 0x6d, 0x64, 0x2b, 0x6e, 0x78, 0x50, 0x72, 0x57, 0x41, 0x49, 0x2f, 0x56, 0x61, 0x5a, 0x44, 0x78, 0x55, 0x73, 0x65, 0x36, 0x6d, 0x41, 0x71, 0x34, 0x78, 0x68, 0x6a, 0x30, 0x6f, 0x48, 0x64, 0x6b, 0x4c, 0x65, 0x50, 0x66, 0x54, 0x64, 0x73, 0x69, 0x51, 0x7a, 0x57, 0x37, 0x69, 0x31, 0x6f, 0x30, 0x54, 0x4a, 0x72, 0x48, 0x39, 0x33, 0x50, 0x42, 0x30, 0x6a, 0x0a, 0x37, 0x49, 0x4b, 0x70, 0x70, 0x75, 0x4c, 0x49, 0x42, 0x6b, 0x77, 0x43, 0x2f, 0x71, 0x78, 0x63, 0x6d, 0x5a, 0x6b, 0x4c, 0x4c, 0x78, 0x43, 0x4b, 0x70, 0x76, 0x52, 0x2f, 0x31, 0x59, 0x64, 0x30, 0x44, 0x56, 0x6c, 0x4a, 0x52, 0x66, 0x62, 0x77, 0x63, 0x56, 0x77, 0x35, 0x4b, 0x64, 0x61, 0x2f, 0x53, 0x69, 0x4f, 0x4c, 0x39, 0x56, 0x38, 0x42, 0x59, 0x39, 0x4b, 0x48, 0x63, 0x79, 0x69, 0x31, 0x53, 0x77, 0x72, 0x31, 0x2b, 0x4b, 0x75, 0x43, 0x4c, 0x48, 0x35, 0x7a, 0x0a, 0x4a, 0x54, 0x49, 0x64, 0x43, 0x32, 0x4d, 0x4b, 0x46, 0x34, 0x45, 0x41, 0x2f, 0x37, 0x5a, 0x32, 0x58, 0x75, 0x65, 0x30, 0x73, 0x55, 0x44, 0x4b, 0x49, 0x62, 0x76, 0x56, 0x67, 0x46, 0x48, 0x6c, 0x53, 0x46, 0x4a, 0x6e, 0x4c, 0x4e, 0x4a, 0x68, 0x69, 0x51, 0x63, 0x4e, 0x44, 0x38, 0x35, 0x43, 0x64, 0x38, 0x42, 0x45, 0x63, 0x35, 0x78, 0x45, 0x55, 0x4b, 0x44, 0x62, 0x45, 0x41, 0x6f, 0x74, 0x6c, 0x52, 0x79, 0x42, 0x72, 0x2b, 0x51, 0x63, 0x35, 0x52, 0x51, 0x65, 0x0a, 0x38, 0x54, 0x5a, 0x42, 0x41, 0x51, 0x49, 0x76, 0x66, 0x58, 0x4f, 0x6e, 0x33, 0x6b, 0x4c, 0x4d, 0x54, 0x4f, 0x6d, 0x4a, 0x44, 0x56, 0x62, 0x33, 0x6e, 0x35, 0x48, 0x55, 0x41, 0x38, 0x5a, 0x73, 0x79, 0x59, 0x2f, 0x62, 0x32, 0x42, 0x7a, 0x67, 0x51, 0x4a, 0x68, 0x64, 0x5a, 0x70, 0x6d, 0x59, 0x67, 0x47, 0x34, 0x74, 0x2f, 0x77, 0x48, 0x46, 0x7a, 0x73, 0x74, 0x47, 0x48, 0x36, 0x77, 0x43, 0x78, 0x6b, 0x50, 0x6d, 0x72, 0x71, 0x4b, 0x45, 0x50, 0x4d, 0x56, 0x4f, 0x0a, 0x48, 0x6a, 0x31, 0x74, 0x79, 0x52, 0x52, 0x4d, 0x34, 0x79, 0x35, 0x42, 0x75, 0x38, 0x6f, 0x35, 0x76, 0x7a, 0x59, 0x38, 0x4b, 0x68, 0x6d, 0x71, 0x51, 0x59, 0x64, 0x4f, 0x70, 0x63, 0x35, 0x4c, 0x4d, 0x6e, 0x6e, 0x64, 0x6b, 0x45, 0x6c, 0x2f, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x59, 0x7a, 0x42, 0x68, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x77, 0x51, 0x59, 0x4d, 0x42, 0x61, 0x41, 0x46, 0x4a, 0x78, 0x66, 0x30, 0x47, 0x78, 0x6a, 0x0a, 0x6f, 0x31, 0x2b, 0x54, 0x79, 0x70, 0x4f, 0x59, 0x43, 0x4b, 0x32, 0x4d, 0x68, 0x36, 0x55, 0x73, 0x58, 0x4d, 0x45, 0x33, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x63, 0x58, 0x39, 0x42, 0x73, 0x59, 0x36, 0x4e, 0x66, 0x6b, 0x38, 0x71, 0x54, 0x6d, 0x41, 0x69, 0x74, 0x6a, 0x49, 0x65, 0x6c, 0x4c, 0x46, 0x7a, 0x42, 0x4e, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x0a, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x54, 0x68, 0x36, 0x35, 0x69, 0x73, 0x61, 0x67, 0x6d, 0x44, 0x39, 0x75, 0x77, 0x32, 0x6e, 0x41, 0x61, 0x6c, 0x78, 0x4a, 0x0a, 0x55, 0x71, 0x7a, 0x4c, 0x4b, 0x31, 0x31, 0x34, 0x4f, 0x4d, 0x48, 0x56, 0x56, 0x49, 0x53, 0x66, 0x6b, 0x2f, 0x43, 0x48, 0x47, 0x54, 0x30, 0x73, 0x5a, 0x6f, 0x6e, 0x72, 0x44, 0x55, 0x4c, 0x38, 0x7a, 0x50, 0x42, 0x31, 0x68, 0x54, 0x2b, 0x4c, 0x39, 0x49, 0x42, 0x64, 0x65, 0x65, 0x55, 0x58, 0x5a, 0x37, 0x30, 0x31, 0x67, 0x75, 0x4c, 0x79, 0x50, 0x49, 0x35, 0x39, 0x57, 0x7a, 0x62, 0x4c, 0x57, 0x6f, 0x41, 0x41, 0x4b, 0x66, 0x4c, 0x4f, 0x4b, 0x79, 0x7a, 0x78, 0x0a, 0x6a, 0x36, 0x70, 0x74, 0x42, 0x5a, 0x4e, 0x73, 0x63, 0x73, 0x64, 0x57, 0x36, 0x39, 0x39, 0x51, 0x49, 0x79, 0x6a, 0x6c, 0x52, 0x52, 0x41, 0x39, 0x36, 0x47, 0x65, 0x6a, 0x72, 0x77, 0x35, 0x56, 0x44, 0x35, 0x41, 0x4a, 0x59, 0x75, 0x39, 0x4c, 0x57, 0x61, 0x4c, 0x32, 0x55, 0x2f, 0x48, 0x41, 0x4e, 0x65, 0x51, 0x76, 0x77, 0x53, 0x53, 0x39, 0x65, 0x53, 0x39, 0x4f, 0x49, 0x43, 0x49, 0x37, 0x2f, 0x52, 0x6f, 0x67, 0x73, 0x4b, 0x51, 0x4f, 0x4c, 0x48, 0x44, 0x74, 0x0a, 0x64, 0x44, 0x2b, 0x34, 0x45, 0x35, 0x55, 0x47, 0x55, 0x63, 0x6a, 0x6f, 0x68, 0x79, 0x62, 0x4b, 0x70, 0x46, 0x74, 0x71, 0x46, 0x69, 0x47, 0x53, 0x33, 0x58, 0x4e, 0x67, 0x6e, 0x68, 0x41, 0x59, 0x33, 0x6a, 0x79, 0x42, 0x36, 0x75, 0x67, 0x59, 0x77, 0x33, 0x79, 0x4a, 0x38, 0x6f, 0x74, 0x51, 0x50, 0x72, 0x30, 0x52, 0x34, 0x68, 0x55, 0x44, 0x71, 0x44, 0x5a, 0x39, 0x4d, 0x77, 0x46, 0x73, 0x53, 0x42, 0x58, 0x58, 0x69, 0x4a, 0x43, 0x5a, 0x42, 0x4d, 0x58, 0x4d, 0x0a, 0x35, 0x67, 0x66, 0x30, 0x76, 0x50, 0x53, 0x51, 0x37, 0x52, 0x50, 0x69, 0x36, 0x6f, 0x76, 0x44, 0x6a, 0x36, 0x4d, 0x7a, 0x44, 0x38, 0x45, 0x70, 0x54, 0x42, 0x4e, 0x4f, 0x32, 0x68, 0x56, 0x57, 0x63, 0x58, 0x4e, 0x79, 0x67, 0x6c, 0x44, 0x32, 0x6d, 0x6a, 0x4e, 0x38, 0x6f, 0x72, 0x47, 0x6f, 0x47, 0x6a, 0x52, 0x30, 0x5a, 0x56, 0x7a, 0x4f, 0x30, 0x65, 0x75, 0x72, 0x55, 0x2b, 0x41, 0x61, 0x67, 0x4e, 0x6a, 0x71, 0x4f, 0x6b, 0x6e, 0x6b, 0x4a, 0x6a, 0x43, 0x62, 0x0a, 0x35, 0x52, 0x79, 0x4b, 0x71, 0x4b, 0x6b, 0x56, 0x4d, 0x6f, 0x61, 0x5a, 0x6b, 0x67, 0x6f, 0x51, 0x49, 0x31, 0x59, 0x53, 0x34, 0x50, 0x62, 0x4f, 0x54, 0x4f, 0x4b, 0x37, 0x76, 0x74, 0x75, 0x4e, 0x6b, 0x6e, 0x4d, 0x42, 0x5a, 0x69, 0x39, 0x69, 0x50, 0x72, 0x4a, 0x79, 0x4a, 0x30, 0x55, 0x32, 0x37, 0x55, 0x31, 0x57, 0x34, 0x35, 0x65, 0x5a, 0x2f, 0x7a, 0x6f, 0x31, 0x50, 0x71, 0x56, 0x55, 0x53, 0x6c, 0x4a, 0x5a, 0x53, 0x32, 0x44, 0x62, 0x37, 0x76, 0x35, 0x34, 0x0a, 0x45, 0x58, 0x39, 0x4b, 0x33, 0x42, 0x52, 0x35, 0x59, 0x4c, 0x5a, 0x72, 0x5a, 0x41, 0x50, 0x62, 0x46, 0x59, 0x50, 0x68, 0x6f, 0x72, 0x37, 0x32, 0x49, 0x35, 0x64, 0x51, 0x38, 0x41, 0x6b, 0x7a, 0x4e, 0x71, 0x64, 0x78, 0x6c, 0x69, 0x58, 0x7a, 0x75, 0x55, 0x4a, 0x39, 0x32, 0x7a, 0x67, 0x2f, 0x4c, 0x46, 0x69, 0x73, 0x36, 0x45, 0x4c, 0x68, 0x44, 0x74, 0x6a, 0x54, 0x4f, 0x30, 0x77, 0x75, 0x67, 0x75, 0x6d, 0x44, 0x4c, 0x6d, 0x73, 0x78, 0x32, 0x64, 0x31, 0x48, 0x0a, 0x68, 0x6b, 0x39, 0x74, 0x6c, 0x35, 0x45, 0x75, 0x54, 0x2b, 0x49, 0x6f, 0x63, 0x54, 0x55, 0x57, 0x30, 0x66, 0x4a, 0x7a, 0x2f, 0x69, 0x55, 0x72, 0x42, 0x30, 0x63, 0x6b, 0x59, 0x79, 0x66, 0x49, 0x2b, 0x50, 0x62, 0x5a, 0x61, 0x2f, 0x77, 0x53, 0x4d, 0x56, 0x59, 0x49, 0x77, 0x46, 0x4e, 0x43, 0x72, 0x35, 0x7a, 0x51, 0x4d, 0x33, 0x37, 0x38, 0x42, 0x76, 0x41, 0x78, 0x52, 0x41, 0x4d, 0x55, 0x38, 0x56, 0x6a, 0x71, 0x38, 0x6d, 0x6f, 0x4e, 0x71, 0x52, 0x47, 0x79, 0x0a, 0x67, 0x37, 0x37, 0x46, 0x47, 0x72, 0x38, 0x48, 0x36, 0x6c, 0x6e, 0x63, 0x6f, 0x34, 0x67, 0x31, 0x37, 0x35, 0x78, 0x32, 0x4d, 0x6a, 0x78, 0x4e, 0x42, 0x69, 0x4c, 0x4f, 0x46, 0x65, 0x58, 0x64, 0x6e, 0x74, 0x69, 0x50, 0x32, 0x74, 0x37, 0x53, 0x78, 0x44, 0x6e, 0x6c, 0x46, 0x34, 0x48, 0x50, 0x4f, 0x45, 0x66, 0x72, 0x66, 0x34, 0x68, 0x74, 0x57, 0x52, 0x76, 0x66, 0x6e, 0x30, 0x49, 0x55, 0x72, 0x6e, 0x37, 0x50, 0x71, 0x4c, 0x42, 0x6d, 0x5a, 0x64, 0x6f, 0x33, 0x0a, 0x72, 0x35, 0x2b, 0x71, 0x50, 0x65, 0x6f, 0x6f, 0x74, 0x74, 0x37, 0x56, 0x4d, 0x56, 0x67, 0x57, 0x67, 0x6c, 0x76, 0x71, 0x75, 0x78, 0x6c, 0x31, 0x41, 0x6e, 0x4d, 0x61, 0x79, 0x6b, 0x67, 0x61, 0x49, 0x5a, 0x4f, 0x51, 0x43, 0x6f, 0x36, 0x54, 0x68, 0x4b, 0x64, 0x39, 0x4f, 0x79, 0x4d, 0x59, 0x6b, 0x6f, 0x6d, 0x67, 0x6a, 0x61, 0x77, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x20, 0x45, 0x43, 0x2d, 0x33, 0x38, 0x34, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x5a, 0x54, 0x43, 0x43, 0x41, 0x65, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x65, 0x49, 0x38, 0x6e, 0x58, 0x49, 0x45, 0x53, 0x55, 0x69, 0x43, 0x6c, 0x42, 0x4e, 0x41, 0x74, 0x33, 0x62, 0x70, 0x7a, 0x39, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x30, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x51, 0x0a, 0x54, 0x44, 0x45, 0x68, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x59, 0x51, 0x58, 0x4e, 0x7a, 0x5a, 0x57, 0x4e, 0x76, 0x49, 0x45, 0x52, 0x68, 0x64, 0x47, 0x45, 0x67, 0x55, 0x33, 0x6c, 0x7a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x54, 0x4c, 0x6b, 0x45, 0x75, 0x4d, 0x53, 0x63, 0x77, 0x4a, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x35, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x64, 0x57, 0x30, 0x67, 0x51, 0x32, 0x56, 0x79, 0x0a, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x31, 0x62, 0x53, 0x42, 0x46, 0x51, 0x79, 0x30, 0x7a, 0x4f, 0x44, 0x51, 0x67, 0x51, 0x30, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x67, 0x77, 0x4d, 0x7a, 0x49, 0x32, 0x0a, 0x4d, 0x44, 0x63, 0x79, 0x4e, 0x44, 0x55, 0x30, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x4d, 0x77, 0x4d, 0x7a, 0x49, 0x32, 0x4d, 0x44, 0x63, 0x79, 0x4e, 0x44, 0x55, 0x30, 0x57, 0x6a, 0x42, 0x30, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x51, 0x54, 0x44, 0x45, 0x68, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x59, 0x51, 0x58, 0x4e, 0x7a, 0x5a, 0x57, 0x4e, 0x76, 0x49, 0x45, 0x52, 0x68, 0x0a, 0x64, 0x47, 0x45, 0x67, 0x55, 0x33, 0x6c, 0x7a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x54, 0x4c, 0x6b, 0x45, 0x75, 0x4d, 0x53, 0x63, 0x77, 0x4a, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x35, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x64, 0x57, 0x30, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x78, 0x0a, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x45, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x31, 0x62, 0x53, 0x42, 0x46, 0x51, 0x79, 0x30, 0x7a, 0x4f, 0x44, 0x51, 0x67, 0x51, 0x30, 0x45, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x54, 0x45, 0x4b, 0x49, 0x36, 0x72, 0x47, 0x46, 0x74, 0x71, 0x0a, 0x76, 0x6d, 0x35, 0x6b, 0x4e, 0x32, 0x50, 0x6b, 0x7a, 0x65, 0x79, 0x72, 0x4f, 0x76, 0x66, 0x4d, 0x6f, 0x62, 0x67, 0x4f, 0x67, 0x6b, 0x6e, 0x58, 0x68, 0x69, 0x6d, 0x66, 0x6f, 0x5a, 0x54, 0x79, 0x34, 0x32, 0x42, 0x34, 0x6d, 0x49, 0x46, 0x34, 0x42, 0x6b, 0x33, 0x79, 0x37, 0x4a, 0x6f, 0x4f, 0x56, 0x32, 0x43, 0x44, 0x6e, 0x37, 0x54, 0x6d, 0x46, 0x79, 0x38, 0x61, 0x73, 0x31, 0x30, 0x43, 0x57, 0x34, 0x6b, 0x6a, 0x50, 0x4d, 0x49, 0x52, 0x42, 0x53, 0x71, 0x6e, 0x0a, 0x69, 0x42, 0x4d, 0x59, 0x38, 0x31, 0x43, 0x45, 0x31, 0x37, 0x30, 0x30, 0x4c, 0x43, 0x65, 0x4a, 0x56, 0x66, 0x2f, 0x4f, 0x54, 0x4f, 0x66, 0x66, 0x70, 0x68, 0x38, 0x6f, 0x78, 0x50, 0x42, 0x55, 0x77, 0x37, 0x6c, 0x38, 0x74, 0x31, 0x4f, 0x74, 0x36, 0x38, 0x4b, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x0a, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x49, 0x30, 0x47, 0x5a, 0x6e, 0x51, 0x6b, 0x64, 0x6a, 0x72, 0x7a, 0x69, 0x66, 0x65, 0x38, 0x31, 0x72, 0x31, 0x48, 0x66, 0x53, 0x2b, 0x38, 0x45, 0x46, 0x39, 0x4c, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6f, 0x0a, 0x41, 0x44, 0x42, 0x6c, 0x41, 0x6a, 0x41, 0x44, 0x56, 0x53, 0x32, 0x6d, 0x35, 0x68, 0x6a, 0x45, 0x66, 0x4f, 0x2f, 0x4a, 0x55, 0x47, 0x37, 0x42, 0x4a, 0x77, 0x2b, 0x63, 0x68, 0x36, 0x39, 0x75, 0x31, 0x52, 0x73, 0x49, 0x47, 0x4c, 0x32, 0x53, 0x4b, 0x63, 0x48, 0x76, 0x6c, 0x4a, 0x46, 0x34, 0x30, 0x6a, 0x6f, 0x63, 0x56, 0x59, 0x6c, 0x69, 0x35, 0x52, 0x73, 0x4a, 0x48, 0x72, 0x70, 0x6b, 0x61, 0x2f, 0x46, 0x32, 0x74, 0x4e, 0x51, 0x43, 0x4d, 0x51, 0x43, 0x30, 0x0a, 0x51, 0x6f, 0x53, 0x5a, 0x2f, 0x36, 0x76, 0x6e, 0x6e, 0x76, 0x75, 0x52, 0x6c, 0x79, 0x64, 0x64, 0x33, 0x4c, 0x42, 0x62, 0x4d, 0x48, 0x48, 0x4f, 0x58, 0x6a, 0x67, 0x61, 0x61, 0x74, 0x6b, 0x6c, 0x35, 0x2b, 0x72, 0x33, 0x59, 0x5a, 0x4a, 0x57, 0x2b, 0x4f, 0x72, 0x61, 0x4e, 0x73, 0x4b, 0x48, 0x5a, 0x5a, 0x59, 0x75, 0x63, 0x69, 0x55, 0x76, 0x66, 0x39, 0x2f, 0x44, 0x45, 0x38, 0x6b, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x77, 0x44, 0x43, 0x43, 0x41, 0x36, 0x69, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x48, 0x72, 0x39, 0x5a, 0x55, 0x4c, 0x6a, 0x4a, 0x67, 0x44, 0x64, 0x4d, 0x42, 0x76, 0x66, 0x72, 0x56, 0x55, 0x2b, 0x31, 0x37, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x30, 0x46, 0x41, 0x44, 0x42, 0x36, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x51, 0x54, 0x44, 0x45, 0x68, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x59, 0x51, 0x58, 0x4e, 0x7a, 0x5a, 0x57, 0x4e, 0x76, 0x49, 0x45, 0x52, 0x68, 0x64, 0x47, 0x45, 0x67, 0x55, 0x33, 0x6c, 0x7a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x54, 0x4c, 0x6b, 0x45, 0x75, 0x4d, 0x53, 0x63, 0x77, 0x4a, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x35, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x64, 0x57, 0x30, 0x67, 0x0a, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x78, 0x48, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x46, 0x6b, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x31, 0x62, 0x53, 0x42, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x47, 0x56, 0x6b, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x77, 0x0a, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x67, 0x77, 0x4d, 0x7a, 0x45, 0x32, 0x4d, 0x54, 0x49, 0x78, 0x4d, 0x44, 0x45, 0x7a, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x4d, 0x77, 0x4d, 0x7a, 0x45, 0x32, 0x4d, 0x54, 0x49, 0x78, 0x4d, 0x44, 0x45, 0x7a, 0x57, 0x6a, 0x42, 0x36, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x51, 0x54, 0x44, 0x45, 0x68, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x59, 0x0a, 0x51, 0x58, 0x4e, 0x7a, 0x5a, 0x57, 0x4e, 0x76, 0x49, 0x45, 0x52, 0x68, 0x64, 0x47, 0x45, 0x67, 0x55, 0x33, 0x6c, 0x7a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x54, 0x4c, 0x6b, 0x45, 0x75, 0x4d, 0x53, 0x63, 0x77, 0x4a, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x35, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x64, 0x57, 0x30, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x42, 0x0a, 0x64, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x78, 0x48, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x46, 0x6b, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x31, 0x62, 0x53, 0x42, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x47, 0x56, 0x6b, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x0a, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x44, 0x52, 0x4c, 0x59, 0x36, 0x37, 0x74, 0x7a, 0x62, 0x71, 0x62, 0x54, 0x65, 0x52, 0x6e, 0x30, 0x36, 0x54, 0x70, 0x77, 0x58, 0x6b, 0x4b, 0x51, 0x4d, 0x6c, 0x7a, 0x68, 0x79, 0x43, 0x39, 0x33, 0x79, 0x5a, 0x6e, 0x30, 0x45, 0x47, 0x7a, 0x65, 0x32, 0x6a, 0x75, 0x73, 0x44, 0x62, 0x43, 0x53, 0x7a, 0x42, 0x66, 0x4e, 0x38, 0x70, 0x0a, 0x66, 0x6b, 0x74, 0x6c, 0x4c, 0x35, 0x4f, 0x6e, 0x31, 0x41, 0x46, 0x72, 0x41, 0x79, 0x67, 0x59, 0x6f, 0x39, 0x69, 0x64, 0x42, 0x63, 0x45, 0x71, 0x32, 0x45, 0x58, 0x78, 0x6b, 0x64, 0x37, 0x66, 0x4f, 0x39, 0x43, 0x41, 0x41, 0x6f, 0x7a, 0x50, 0x4f, 0x41, 0x2f, 0x71, 0x70, 0x31, 0x78, 0x34, 0x45, 0x61, 0x54, 0x42, 0x79, 0x49, 0x56, 0x63, 0x4a, 0x64, 0x50, 0x54, 0x73, 0x75, 0x63, 0x6c, 0x7a, 0x78, 0x46, 0x55, 0x6c, 0x36, 0x73, 0x31, 0x77, 0x42, 0x35, 0x32, 0x0a, 0x48, 0x4f, 0x38, 0x41, 0x55, 0x35, 0x38, 0x35, 0x33, 0x42, 0x53, 0x6c, 0x4c, 0x43, 0x49, 0x6c, 0x73, 0x33, 0x4a, 0x79, 0x2f, 0x49, 0x32, 0x7a, 0x35, 0x54, 0x34, 0x49, 0x48, 0x68, 0x51, 0x71, 0x4e, 0x77, 0x75, 0x49, 0x50, 0x4d, 0x71, 0x77, 0x39, 0x4d, 0x6a, 0x43, 0x6f, 0x61, 0x36, 0x38, 0x77, 0x62, 0x34, 0x70, 0x5a, 0x31, 0x58, 0x69, 0x2f, 0x4b, 0x31, 0x5a, 0x58, 0x50, 0x36, 0x39, 0x56, 0x79, 0x79, 0x77, 0x6b, 0x49, 0x33, 0x43, 0x37, 0x54, 0x65, 0x32, 0x0a, 0x66, 0x4a, 0x6d, 0x49, 0x74, 0x64, 0x55, 0x44, 0x6d, 0x6a, 0x30, 0x56, 0x44, 0x54, 0x30, 0x36, 0x71, 0x4b, 0x68, 0x46, 0x38, 0x4a, 0x56, 0x4f, 0x4a, 0x56, 0x6b, 0x64, 0x7a, 0x5a, 0x68, 0x70, 0x75, 0x39, 0x50, 0x4d, 0x4d, 0x73, 0x6d, 0x4e, 0x37, 0x34, 0x48, 0x2b, 0x72, 0x58, 0x32, 0x4a, 0x75, 0x37, 0x70, 0x67, 0x45, 0x38, 0x70, 0x6c, 0x6c, 0x57, 0x65, 0x67, 0x38, 0x78, 0x6e, 0x32, 0x41, 0x31, 0x62, 0x55, 0x61, 0x74, 0x4d, 0x6e, 0x34, 0x71, 0x47, 0x74, 0x0a, 0x67, 0x2f, 0x42, 0x4b, 0x45, 0x69, 0x4a, 0x33, 0x48, 0x41, 0x56, 0x7a, 0x34, 0x68, 0x6c, 0x78, 0x51, 0x73, 0x44, 0x73, 0x64, 0x55, 0x61, 0x61, 0x6b, 0x46, 0x6a, 0x67, 0x61, 0x6f, 0x34, 0x72, 0x70, 0x55, 0x59, 0x77, 0x42, 0x49, 0x34, 0x5a, 0x73, 0x68, 0x66, 0x6a, 0x76, 0x71, 0x6d, 0x36, 0x66, 0x31, 0x62, 0x78, 0x4a, 0x41, 0x50, 0x58, 0x73, 0x69, 0x45, 0x6f, 0x64, 0x67, 0x34, 0x32, 0x4d, 0x45, 0x78, 0x35, 0x31, 0x55, 0x47, 0x61, 0x6d, 0x71, 0x69, 0x34, 0x0a, 0x4e, 0x62, 0x6f, 0x4d, 0x4f, 0x76, 0x4a, 0x45, 0x47, 0x79, 0x43, 0x49, 0x39, 0x38, 0x55, 0x6c, 0x31, 0x7a, 0x33, 0x47, 0x34, 0x7a, 0x35, 0x44, 0x33, 0x59, 0x66, 0x2b, 0x78, 0x4f, 0x72, 0x31, 0x55, 0x7a, 0x35, 0x4d, 0x5a, 0x66, 0x38, 0x37, 0x53, 0x73, 0x74, 0x34, 0x57, 0x6d, 0x73, 0x58, 0x58, 0x77, 0x33, 0x48, 0x77, 0x30, 0x39, 0x4f, 0x6d, 0x69, 0x71, 0x69, 0x37, 0x56, 0x64, 0x4e, 0x49, 0x75, 0x4a, 0x47, 0x6d, 0x6a, 0x38, 0x50, 0x6b, 0x54, 0x51, 0x6b, 0x0a, 0x66, 0x56, 0x58, 0x6a, 0x6a, 0x4a, 0x55, 0x33, 0x30, 0x78, 0x72, 0x77, 0x43, 0x53, 0x73, 0x73, 0x30, 0x73, 0x6d, 0x4e, 0x74, 0x41, 0x30, 0x41, 0x71, 0x32, 0x63, 0x70, 0x4b, 0x4e, 0x67, 0x42, 0x39, 0x52, 0x6b, 0x45, 0x74, 0x68, 0x32, 0x2b, 0x64, 0x76, 0x35, 0x79, 0x58, 0x4d, 0x53, 0x46, 0x79, 0x74, 0x4b, 0x41, 0x51, 0x64, 0x38, 0x46, 0x71, 0x4b, 0x50, 0x56, 0x68, 0x4a, 0x42, 0x50, 0x43, 0x2f, 0x50, 0x67, 0x50, 0x35, 0x73, 0x5a, 0x30, 0x6a, 0x65, 0x4a, 0x0a, 0x50, 0x2f, 0x4a, 0x37, 0x55, 0x68, 0x79, 0x4d, 0x39, 0x75, 0x48, 0x33, 0x50, 0x41, 0x65, 0x58, 0x6a, 0x41, 0x36, 0x69, 0x57, 0x59, 0x45, 0x4d, 0x73, 0x70, 0x41, 0x39, 0x30, 0x2b, 0x4e, 0x5a, 0x52, 0x75, 0x30, 0x50, 0x71, 0x61, 0x66, 0x65, 0x67, 0x47, 0x74, 0x61, 0x71, 0x67, 0x65, 0x32, 0x47, 0x63, 0x75, 0x38, 0x56, 0x2f, 0x4f, 0x58, 0x49, 0x58, 0x6f, 0x4d, 0x73, 0x53, 0x74, 0x30, 0x50, 0x75, 0x76, 0x61, 0x70, 0x32, 0x63, 0x74, 0x54, 0x4d, 0x53, 0x59, 0x0a, 0x6e, 0x6a, 0x59, 0x4a, 0x64, 0x6d, 0x5a, 0x6d, 0x2f, 0x42, 0x6f, 0x2f, 0x36, 0x6b, 0x68, 0x55, 0x48, 0x4c, 0x34, 0x77, 0x76, 0x59, 0x42, 0x51, 0x76, 0x33, 0x79, 0x31, 0x7a, 0x67, 0x44, 0x32, 0x44, 0x47, 0x48, 0x5a, 0x35, 0x79, 0x51, 0x44, 0x34, 0x4f, 0x4d, 0x42, 0x67, 0x51, 0x36, 0x39, 0x32, 0x49, 0x55, 0x30, 0x69, 0x4c, 0x32, 0x79, 0x4e, 0x71, 0x68, 0x37, 0x58, 0x41, 0x6a, 0x6c, 0x52, 0x49, 0x43, 0x4d, 0x62, 0x2f, 0x67, 0x76, 0x31, 0x53, 0x48, 0x4b, 0x0a, 0x48, 0x52, 0x7a, 0x51, 0x2b, 0x38, 0x53, 0x31, 0x68, 0x39, 0x45, 0x36, 0x54, 0x73, 0x64, 0x32, 0x74, 0x54, 0x56, 0x49, 0x74, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x4d, 0x2b, 0x78, 0x78, 0x31, 0x0a, 0x76, 0x41, 0x4c, 0x54, 0x6e, 0x30, 0x34, 0x75, 0x53, 0x4e, 0x6e, 0x35, 0x59, 0x46, 0x53, 0x71, 0x78, 0x4c, 0x4e, 0x50, 0x2b, 0x6a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4e, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x45, 0x69, 0x69, 0x31, 0x51, 0x41, 0x4c, 0x0a, 0x4c, 0x74, 0x41, 0x2f, 0x76, 0x42, 0x7a, 0x56, 0x74, 0x56, 0x52, 0x4a, 0x48, 0x6c, 0x70, 0x72, 0x39, 0x4f, 0x54, 0x79, 0x34, 0x45, 0x41, 0x33, 0x34, 0x4d, 0x77, 0x55, 0x65, 0x37, 0x6e, 0x4a, 0x2b, 0x6a, 0x57, 0x31, 0x64, 0x52, 0x65, 0x54, 0x61, 0x67, 0x56, 0x70, 0x68, 0x5a, 0x7a, 0x4e, 0x54, 0x78, 0x6c, 0x34, 0x57, 0x78, 0x6d, 0x42, 0x38, 0x32, 0x4d, 0x2b, 0x77, 0x38, 0x35, 0x62, 0x6a, 0x2f, 0x55, 0x76, 0x58, 0x67, 0x46, 0x32, 0x45, 0x7a, 0x38, 0x73, 0x0a, 0x41, 0x4c, 0x6e, 0x4e, 0x6c, 0x6c, 0x49, 0x35, 0x53, 0x57, 0x30, 0x45, 0x54, 0x73, 0x58, 0x70, 0x44, 0x34, 0x59, 0x4e, 0x34, 0x66, 0x71, 0x7a, 0x58, 0x34, 0x49, 0x53, 0x38, 0x54, 0x72, 0x4f, 0x5a, 0x67, 0x59, 0x6b, 0x4e, 0x43, 0x76, 0x6f, 0x7a, 0x4d, 0x72, 0x6e, 0x61, 0x64, 0x79, 0x48, 0x6e, 0x63, 0x49, 0x30, 0x31, 0x33, 0x6e, 0x52, 0x30, 0x33, 0x65, 0x34, 0x71, 0x6c, 0x6c, 0x59, 0x2f, 0x70, 0x30, 0x6d, 0x2b, 0x6a, 0x69, 0x47, 0x50, 0x70, 0x32, 0x4b, 0x0a, 0x68, 0x32, 0x52, 0x58, 0x35, 0x52, 0x63, 0x36, 0x34, 0x76, 0x6d, 0x4e, 0x75, 0x65, 0x4d, 0x7a, 0x65, 0x4d, 0x47, 0x51, 0x32, 0x4c, 0x6a, 0x64, 0x74, 0x34, 0x4e, 0x52, 0x35, 0x4d, 0x54, 0x4d, 0x49, 0x39, 0x55, 0x47, 0x66, 0x4f, 0x5a, 0x52, 0x30, 0x38, 0x30, 0x30, 0x4d, 0x63, 0x44, 0x32, 0x52, 0x72, 0x73, 0x4c, 0x72, 0x66, 0x77, 0x39, 0x45, 0x41, 0x55, 0x71, 0x4f, 0x30, 0x71, 0x52, 0x4a, 0x65, 0x36, 0x4d, 0x31, 0x49, 0x53, 0x48, 0x67, 0x43, 0x71, 0x38, 0x0a, 0x43, 0x59, 0x79, 0x71, 0x4f, 0x68, 0x4e, 0x66, 0x36, 0x44, 0x52, 0x35, 0x55, 0x4d, 0x45, 0x51, 0x47, 0x66, 0x6e, 0x54, 0x4b, 0x42, 0x37, 0x55, 0x30, 0x56, 0x45, 0x77, 0x4b, 0x62, 0x4f, 0x75, 0x6b, 0x47, 0x66, 0x57, 0x48, 0x77, 0x70, 0x6a, 0x73, 0x63, 0x57, 0x70, 0x78, 0x6b, 0x49, 0x78, 0x59, 0x78, 0x65, 0x55, 0x37, 0x32, 0x6e, 0x4c, 0x4c, 0x2f, 0x71, 0x4d, 0x46, 0x48, 0x33, 0x45, 0x51, 0x78, 0x69, 0x4a, 0x32, 0x66, 0x41, 0x79, 0x51, 0x4f, 0x61, 0x41, 0x0a, 0x34, 0x6b, 0x5a, 0x66, 0x35, 0x65, 0x50, 0x42, 0x41, 0x46, 0x6d, 0x6f, 0x2b, 0x65, 0x67, 0x67, 0x76, 0x49, 0x6b, 0x73, 0x44, 0x6b, 0x63, 0x30, 0x43, 0x2b, 0x70, 0x58, 0x77, 0x6c, 0x4d, 0x32, 0x2f, 0x4b, 0x66, 0x55, 0x72, 0x7a, 0x48, 0x4e, 0x2f, 0x67, 0x4c, 0x6c, 0x64, 0x66, 0x71, 0x35, 0x4a, 0x77, 0x6e, 0x35, 0x38, 0x2f, 0x55, 0x37, 0x79, 0x6e, 0x32, 0x66, 0x71, 0x53, 0x4c, 0x4c, 0x69, 0x4d, 0x6d, 0x71, 0x30, 0x55, 0x63, 0x39, 0x4e, 0x6e, 0x65, 0x6f, 0x0a, 0x57, 0x57, 0x52, 0x72, 0x4a, 0x38, 0x2f, 0x76, 0x4a, 0x38, 0x48, 0x6a, 0x4a, 0x4c, 0x57, 0x47, 0x39, 0x36, 0x35, 0x2b, 0x4d, 0x6b, 0x32, 0x77, 0x65, 0x57, 0x6a, 0x52, 0x4f, 0x65, 0x69, 0x51, 0x57, 0x4d, 0x4f, 0x44, 0x76, 0x41, 0x38, 0x73, 0x31, 0x70, 0x66, 0x72, 0x7a, 0x67, 0x7a, 0x68, 0x49, 0x4d, 0x66, 0x61, 0x74, 0x7a, 0x37, 0x44, 0x50, 0x37, 0x38, 0x76, 0x33, 0x44, 0x53, 0x6b, 0x2b, 0x79, 0x73, 0x68, 0x7a, 0x57, 0x65, 0x50, 0x53, 0x2f, 0x54, 0x6a, 0x0a, 0x36, 0x74, 0x51, 0x2f, 0x35, 0x30, 0x2b, 0x36, 0x75, 0x61, 0x57, 0x54, 0x52, 0x52, 0x78, 0x6d, 0x48, 0x79, 0x48, 0x36, 0x5a, 0x46, 0x35, 0x76, 0x34, 0x48, 0x61, 0x55, 0x4d, 0x73, 0x74, 0x31, 0x39, 0x57, 0x37, 0x6c, 0x39, 0x6f, 0x2f, 0x48, 0x75, 0x4b, 0x54, 0x4d, 0x71, 0x4a, 0x5a, 0x39, 0x5a, 0x50, 0x73, 0x6b, 0x57, 0x6b, 0x6f, 0x44, 0x62, 0x47, 0x73, 0x34, 0x78, 0x75, 0x67, 0x44, 0x51, 0x35, 0x72, 0x33, 0x56, 0x37, 0x6d, 0x7a, 0x4b, 0x57, 0x6d, 0x54, 0x0a, 0x4f, 0x50, 0x51, 0x44, 0x38, 0x72, 0x76, 0x37, 0x67, 0x6d, 0x73, 0x48, 0x49, 0x4e, 0x46, 0x53, 0x48, 0x35, 0x70, 0x6b, 0x41, 0x6e, 0x75, 0x59, 0x5a, 0x74, 0x74, 0x63, 0x54, 0x56, 0x6f, 0x50, 0x30, 0x49, 0x53, 0x56, 0x6f, 0x44, 0x77, 0x55, 0x51, 0x77, 0x62, 0x4b, 0x79, 0x74, 0x75, 0x34, 0x51, 0x54, 0x62, 0x61, 0x61, 0x6b, 0x52, 0x6e, 0x68, 0x36, 0x2b, 0x76, 0x34, 0x30, 0x55, 0x52, 0x46, 0x57, 0x6b, 0x49, 0x73, 0x72, 0x34, 0x57, 0x4f, 0x5a, 0x63, 0x6b, 0x0a, 0x62, 0x78, 0x4a, 0x46, 0x30, 0x57, 0x64, 0x64, 0x43, 0x61, 0x6a, 0x4a, 0x46, 0x64, 0x72, 0x36, 0x30, 0x71, 0x5a, 0x66, 0x45, 0x32, 0x45, 0x66, 0x76, 0x34, 0x57, 0x73, 0x74, 0x4b, 0x32, 0x74, 0x42, 0x5a, 0x51, 0x49, 0x67, 0x78, 0x35, 0x31, 0x46, 0x39, 0x4e, 0x78, 0x4f, 0x35, 0x4e, 0x51, 0x49, 0x31, 0x6d, 0x67, 0x37, 0x54, 0x79, 0x52, 0x56, 0x4a, 0x31, 0x32, 0x41, 0x4d, 0x58, 0x44, 0x75, 0x44, 0x6a, 0x62, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x75, 0x6e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x73, 0x7a, 0x43, 0x43, 0x41, 0x35, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x45, 0x77, 0x4c, 0x56, 0x34, 0x6b, 0x42, 0x4d, 0x6b, 0x6b, 0x61, 0x47, 0x46, 0x6d, 0x64, 0x64, 0x74, 0x4c, 0x75, 0x37, 0x73, 0x6d, 0x73, 0x2b, 0x2f, 0x42, 0x4d, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x59, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x45, 0x34, 0x78, 0x4e, 0x7a, 0x41, 0x31, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x4c, 0x6b, 0x46, 0x6e, 0x5a, 0x57, 0x35, 0x6a, 0x5a, 0x53, 0x42, 0x4f, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x35, 0x68, 0x62, 0x47, 0x55, 0x67, 0x5a, 0x47, 0x55, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x46, 0x62, 0x47, 0x56, 0x6a, 0x0a, 0x64, 0x48, 0x4a, 0x76, 0x62, 0x6d, 0x6c, 0x78, 0x64, 0x57, 0x55, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x45, 0x46, 0x52, 0x31, 0x62, 0x6c, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x6b, 0x77, 0x4e, 0x44, 0x49, 0x32, 0x4d, 0x44, 0x67, 0x31, 0x4e, 0x7a, 0x55, 0x32, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x51, 0x77, 0x0a, 0x4e, 0x44, 0x49, 0x32, 0x4d, 0x44, 0x67, 0x31, 0x4e, 0x7a, 0x55, 0x32, 0x57, 0x6a, 0x42, 0x68, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x55, 0x54, 0x6a, 0x45, 0x33, 0x4d, 0x44, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x75, 0x51, 0x57, 0x64, 0x6c, 0x62, 0x6d, 0x4e, 0x6c, 0x49, 0x45, 0x35, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6d, 0x46, 0x73, 0x5a, 0x53, 0x42, 0x6b, 0x5a, 0x53, 0x42, 0x44, 0x0a, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x56, 0x73, 0x5a, 0x57, 0x4e, 0x30, 0x63, 0x6d, 0x39, 0x75, 0x61, 0x58, 0x46, 0x31, 0x5a, 0x54, 0x45, 0x5a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x51, 0x56, 0x48, 0x56, 0x75, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x54, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x0a, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4d, 0x50, 0x4e, 0x30, 0x2f, 0x79, 0x39, 0x42, 0x46, 0x50, 0x64, 0x44, 0x43, 0x41, 0x36, 0x31, 0x59, 0x67, 0x75, 0x42, 0x55, 0x74, 0x42, 0x39, 0x59, 0x4f, 0x43, 0x66, 0x76, 0x64, 0x5a, 0x6e, 0x35, 0x36, 0x65, 0x59, 0x2b, 0x68, 0x7a, 0x0a, 0x32, 0x76, 0x59, 0x47, 0x71, 0x55, 0x38, 0x66, 0x74, 0x50, 0x6b, 0x4c, 0x48, 0x7a, 0x6d, 0x4d, 0x6d, 0x69, 0x44, 0x51, 0x66, 0x67, 0x62, 0x55, 0x37, 0x44, 0x54, 0x5a, 0x68, 0x72, 0x78, 0x31, 0x57, 0x34, 0x65, 0x49, 0x38, 0x4e, 0x4c, 0x5a, 0x31, 0x4b, 0x4d, 0x4b, 0x73, 0x6d, 0x77, 0x62, 0x36, 0x30, 0x6b, 0x73, 0x50, 0x71, 0x78, 0x64, 0x32, 0x4a, 0x51, 0x44, 0x6f, 0x4f, 0x77, 0x30, 0x35, 0x54, 0x44, 0x45, 0x4e, 0x58, 0x33, 0x37, 0x4a, 0x6b, 0x30, 0x62, 0x0a, 0x62, 0x6a, 0x42, 0x55, 0x32, 0x50, 0x57, 0x41, 0x52, 0x5a, 0x77, 0x35, 0x72, 0x5a, 0x7a, 0x4a, 0x4a, 0x51, 0x52, 0x4e, 0x6d, 0x70, 0x41, 0x2b, 0x54, 0x6b, 0x42, 0x75, 0x69, 0x6d, 0x76, 0x4e, 0x4b, 0x57, 0x66, 0x47, 0x7a, 0x43, 0x33, 0x67, 0x64, 0x4f, 0x67, 0x46, 0x56, 0x77, 0x70, 0x49, 0x55, 0x50, 0x70, 0x36, 0x51, 0x39, 0x70, 0x2b, 0x37, 0x46, 0x75, 0x61, 0x44, 0x6d, 0x4a, 0x32, 0x2f, 0x75, 0x71, 0x64, 0x48, 0x59, 0x56, 0x79, 0x37, 0x42, 0x47, 0x37, 0x0a, 0x4e, 0x65, 0x67, 0x66, 0x4a, 0x37, 0x2f, 0x42, 0x6f, 0x63, 0x65, 0x37, 0x53, 0x42, 0x62, 0x64, 0x56, 0x74, 0x66, 0x4d, 0x54, 0x71, 0x44, 0x68, 0x75, 0x61, 0x7a, 0x62, 0x31, 0x59, 0x4d, 0x5a, 0x47, 0x6f, 0x58, 0x52, 0x6c, 0x4a, 0x66, 0x58, 0x79, 0x71, 0x4e, 0x6c, 0x43, 0x2f, 0x4d, 0x34, 0x2b, 0x51, 0x4b, 0x75, 0x33, 0x66, 0x5a, 0x6e, 0x7a, 0x38, 0x6b, 0x2f, 0x39, 0x59, 0x6f, 0x73, 0x52, 0x78, 0x71, 0x5a, 0x62, 0x77, 0x55, 0x4e, 0x2f, 0x64, 0x41, 0x64, 0x0a, 0x67, 0x6a, 0x48, 0x38, 0x4b, 0x63, 0x77, 0x41, 0x57, 0x4a, 0x65, 0x52, 0x54, 0x49, 0x41, 0x41, 0x48, 0x44, 0x4f, 0x46, 0x6c, 0x69, 0x2f, 0x4c, 0x51, 0x63, 0x4b, 0x4c, 0x45, 0x49, 0x54, 0x44, 0x43, 0x53, 0x53, 0x4a, 0x48, 0x37, 0x55, 0x50, 0x32, 0x64, 0x6c, 0x33, 0x52, 0x78, 0x69, 0x53, 0x6c, 0x47, 0x42, 0x63, 0x78, 0x35, 0x6b, 0x44, 0x50, 0x50, 0x37, 0x33, 0x6c, 0x61, 0x64, 0x39, 0x55, 0x4b, 0x47, 0x41, 0x77, 0x71, 0x6d, 0x44, 0x72, 0x56, 0x69, 0x57, 0x0a, 0x56, 0x53, 0x48, 0x62, 0x68, 0x6c, 0x6e, 0x55, 0x72, 0x38, 0x61, 0x38, 0x33, 0x59, 0x46, 0x75, 0x42, 0x39, 0x74, 0x67, 0x59, 0x76, 0x37, 0x73, 0x45, 0x47, 0x37, 0x61, 0x61, 0x41, 0x48, 0x30, 0x67, 0x78, 0x75, 0x70, 0x50, 0x71, 0x4a, 0x62, 0x49, 0x39, 0x64, 0x6b, 0x78, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x33, 0x59, 0x53, 0x37, 0x71, 0x43, 0x30, 0x6c, 0x48, 0x34, 0x5a, 0x72, 0x38, 0x47, 0x52, 0x75, 0x52, 0x35, 0x4b, 0x69, 0x59, 0x32, 0x65, 0x59, 0x38, 0x66, 0x0a, 0x54, 0x70, 0x6b, 0x64, 0x73, 0x6f, 0x38, 0x4d, 0x44, 0x68, 0x7a, 0x2f, 0x79, 0x56, 0x33, 0x41, 0x2f, 0x5a, 0x41, 0x51, 0x70, 0x72, 0x45, 0x33, 0x38, 0x38, 0x30, 0x36, 0x4a, 0x47, 0x36, 0x30, 0x68, 0x5a, 0x43, 0x2f, 0x67, 0x4c, 0x6b, 0x4d, 0x6a, 0x4e, 0x57, 0x62, 0x31, 0x73, 0x6a, 0x78, 0x56, 0x6a, 0x38, 0x61, 0x67, 0x49, 0x6c, 0x36, 0x71, 0x65, 0x49, 0x62, 0x4d, 0x6c, 0x45, 0x73, 0x50, 0x76, 0x4c, 0x66, 0x65, 0x2f, 0x5a, 0x64, 0x65, 0x69, 0x6b, 0x5a, 0x0a, 0x6a, 0x75, 0x58, 0x49, 0x76, 0x54, 0x5a, 0x78, 0x69, 0x31, 0x31, 0x4d, 0x77, 0x68, 0x30, 0x2f, 0x72, 0x56, 0x69, 0x69, 0x7a, 0x7a, 0x31, 0x77, 0x54, 0x61, 0x5a, 0x51, 0x6d, 0x43, 0x58, 0x63, 0x49, 0x2f, 0x6d, 0x34, 0x57, 0x45, 0x45, 0x49, 0x63, 0x62, 0x39, 0x50, 0x75, 0x49, 0x53, 0x67, 0x6a, 0x77, 0x42, 0x55, 0x46, 0x66, 0x79, 0x52, 0x62, 0x56, 0x69, 0x6e, 0x6c, 0x6a, 0x76, 0x72, 0x53, 0x35, 0x59, 0x6e, 0x7a, 0x57, 0x75, 0x69, 0x6f, 0x59, 0x61, 0x73, 0x0a, 0x44, 0x58, 0x78, 0x55, 0x35, 0x6d, 0x5a, 0x4d, 0x5a, 0x6c, 0x2b, 0x51, 0x76, 0x69, 0x47, 0x61, 0x41, 0x6b, 0x59, 0x74, 0x35, 0x49, 0x50, 0x43, 0x67, 0x4c, 0x6e, 0x50, 0x53, 0x7a, 0x37, 0x6f, 0x66, 0x7a, 0x77, 0x42, 0x37, 0x49, 0x39, 0x65, 0x7a, 0x58, 0x2f, 0x53, 0x4b, 0x45, 0x49, 0x42, 0x6c, 0x59, 0x72, 0x69, 0x6c, 0x7a, 0x30, 0x51, 0x49, 0x58, 0x33, 0x32, 0x6e, 0x52, 0x7a, 0x46, 0x4e, 0x4b, 0x48, 0x73, 0x4c, 0x41, 0x34, 0x4b, 0x55, 0x69, 0x77, 0x53, 0x0a, 0x56, 0x58, 0x41, 0x6b, 0x50, 0x63, 0x76, 0x43, 0x46, 0x44, 0x56, 0x44, 0x58, 0x53, 0x64, 0x4f, 0x76, 0x73, 0x43, 0x39, 0x71, 0x6e, 0x79, 0x57, 0x35, 0x2f, 0x79, 0x65, 0x59, 0x61, 0x31, 0x45, 0x30, 0x77, 0x43, 0x58, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x59, 0x7a, 0x42, 0x68, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x51, 0x47, 0x6d, 0x70, 0x73, 0x66, 0x55, 0x33, 0x33, 0x78, 0x39, 0x61, 0x54, 0x49, 0x0a, 0x30, 0x34, 0x59, 0x2b, 0x6f, 0x58, 0x4e, 0x5a, 0x74, 0x50, 0x64, 0x45, 0x49, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x77, 0x51, 0x59, 0x4d, 0x42, 0x61, 0x41, 0x46, 0x41, 0x61, 0x61, 0x6d, 0x78, 0x39, 0x54, 0x66, 0x66, 0x48, 0x31, 0x70, 0x4d, 0x6a, 0x54, 0x68, 0x6a, 0x36, 0x68, 0x63, 0x31, 0x6d, 0x30, 0x0a, 0x39, 0x30, 0x51, 0x68, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x71, 0x67, 0x56, 0x75, 0x74, 0x74, 0x30, 0x56, 0x79, 0x62, 0x2b, 0x7a, 0x78, 0x69, 0x44, 0x32, 0x42, 0x6b, 0x65, 0x77, 0x68, 0x70, 0x4d, 0x6c, 0x0a, 0x30, 0x34, 0x32, 0x35, 0x79, 0x41, 0x41, 0x2f, 0x6c, 0x2f, 0x56, 0x53, 0x4a, 0x34, 0x68, 0x78, 0x79, 0x58, 0x54, 0x39, 0x36, 0x38, 0x70, 0x6b, 0x32, 0x31, 0x76, 0x76, 0x48, 0x6c, 0x32, 0x36, 0x76, 0x39, 0x48, 0x72, 0x37, 0x6c, 0x78, 0x70, 0x75, 0x68, 0x62, 0x49, 0x38, 0x37, 0x6d, 0x50, 0x30, 0x7a, 0x59, 0x75, 0x51, 0x45, 0x6b, 0x48, 0x44, 0x56, 0x6e, 0x65, 0x69, 0x78, 0x43, 0x77, 0x53, 0x51, 0x58, 0x69, 0x2f, 0x35, 0x45, 0x2f, 0x53, 0x37, 0x66, 0x64, 0x0a, 0x41, 0x6f, 0x37, 0x34, 0x67, 0x53, 0x68, 0x63, 0x7a, 0x4e, 0x78, 0x74, 0x72, 0x31, 0x38, 0x55, 0x6e, 0x48, 0x31, 0x59, 0x65, 0x41, 0x33, 0x32, 0x67, 0x41, 0x6d, 0x35, 0x36, 0x51, 0x36, 0x58, 0x4b, 0x52, 0x6d, 0x34, 0x74, 0x2b, 0x76, 0x34, 0x46, 0x73, 0x74, 0x56, 0x45, 0x75, 0x54, 0x47, 0x66, 0x62, 0x76, 0x45, 0x37, 0x50, 0x69, 0x31, 0x48, 0x45, 0x34, 0x2b, 0x5a, 0x37, 0x2f, 0x46, 0x58, 0x78, 0x74, 0x74, 0x62, 0x55, 0x63, 0x6f, 0x71, 0x67, 0x52, 0x59, 0x0a, 0x59, 0x64, 0x5a, 0x32, 0x76, 0x79, 0x4a, 0x2f, 0x30, 0x41, 0x64, 0x71, 0x70, 0x32, 0x52, 0x54, 0x38, 0x4a, 0x65, 0x4e, 0x6e, 0x59, 0x41, 0x2f, 0x75, 0x38, 0x45, 0x48, 0x32, 0x32, 0x57, 0x76, 0x35, 0x70, 0x73, 0x79, 0x6d, 0x73, 0x4e, 0x55, 0x6b, 0x38, 0x51, 0x63, 0x43, 0x4d, 0x4e, 0x45, 0x2b, 0x33, 0x74, 0x6a, 0x45, 0x55, 0x50, 0x52, 0x61, 0x68, 0x70, 0x68, 0x61, 0x6e, 0x6c, 0x74, 0x6b, 0x45, 0x38, 0x70, 0x6a, 0x6b, 0x63, 0x46, 0x77, 0x52, 0x4a, 0x70, 0x0a, 0x61, 0x64, 0x62, 0x47, 0x4e, 0x6a, 0x48, 0x68, 0x2f, 0x50, 0x71, 0x41, 0x75, 0x6c, 0x78, 0x50, 0x78, 0x4f, 0x75, 0x33, 0x4d, 0x71, 0x7a, 0x34, 0x64, 0x57, 0x45, 0x58, 0x31, 0x78, 0x41, 0x5a, 0x75, 0x66, 0x48, 0x53, 0x43, 0x65, 0x39, 0x36, 0x51, 0x70, 0x31, 0x62, 0x57, 0x67, 0x76, 0x55, 0x78, 0x70, 0x56, 0x4f, 0x4b, 0x73, 0x37, 0x2f, 0x42, 0x39, 0x64, 0x50, 0x66, 0x68, 0x67, 0x47, 0x69, 0x50, 0x45, 0x5a, 0x74, 0x64, 0x6d, 0x59, 0x75, 0x36, 0x35, 0x78, 0x0a, 0x78, 0x42, 0x7a, 0x6e, 0x64, 0x46, 0x6c, 0x59, 0x37, 0x77, 0x79, 0x4a, 0x7a, 0x34, 0x73, 0x66, 0x64, 0x5a, 0x4d, 0x61, 0x42, 0x42, 0x53, 0x53, 0x53, 0x46, 0x43, 0x70, 0x36, 0x31, 0x63, 0x70, 0x41, 0x42, 0x62, 0x6a, 0x4e, 0x68, 0x7a, 0x49, 0x2b, 0x4c, 0x2f, 0x77, 0x4d, 0x39, 0x56, 0x42, 0x44, 0x38, 0x54, 0x4d, 0x50, 0x4e, 0x33, 0x70, 0x4d, 0x30, 0x4d, 0x42, 0x6b, 0x52, 0x41, 0x72, 0x48, 0x74, 0x47, 0x35, 0x58, 0x63, 0x30, 0x79, 0x47, 0x59, 0x75, 0x50, 0x0a, 0x6a, 0x43, 0x42, 0x33, 0x31, 0x79, 0x4c, 0x45, 0x51, 0x74, 0x79, 0x45, 0x46, 0x70, 0x73, 0x6c, 0x62, 0x65, 0x69, 0x30, 0x56, 0x58, 0x46, 0x2f, 0x73, 0x48, 0x79, 0x7a, 0x30, 0x33, 0x46, 0x4a, 0x75, 0x63, 0x39, 0x53, 0x70, 0x41, 0x51, 0x2f, 0x33, 0x44, 0x32, 0x67, 0x75, 0x36, 0x38, 0x7a, 0x6e, 0x67, 0x6f, 0x77, 0x59, 0x49, 0x37, 0x62, 0x6e, 0x56, 0x32, 0x55, 0x71, 0x4c, 0x31, 0x67, 0x35, 0x32, 0x4b, 0x41, 0x64, 0x6f, 0x47, 0x44, 0x44, 0x49, 0x7a, 0x4d, 0x0a, 0x4d, 0x45, 0x5a, 0x4a, 0x34, 0x67, 0x7a, 0x53, 0x71, 0x4b, 0x2f, 0x72, 0x59, 0x58, 0x48, 0x76, 0x35, 0x79, 0x4a, 0x69, 0x71, 0x66, 0x64, 0x63, 0x5a, 0x47, 0x79, 0x66, 0x46, 0x6f, 0x78, 0x6e, 0x4e, 0x69, 0x64, 0x46, 0x39, 0x51, 0x6c, 0x37, 0x76, 0x2f, 0x59, 0x51, 0x43, 0x76, 0x47, 0x77, 0x6a, 0x56, 0x52, 0x44, 0x6a, 0x41, 0x53, 0x36, 0x6f, 0x7a, 0x2f, 0x76, 0x34, 0x6a, 0x58, 0x48, 0x2b, 0x58, 0x54, 0x67, 0x62, 0x7a, 0x52, 0x42, 0x30, 0x4c, 0x39, 0x7a, 0x0a, 0x5a, 0x56, 0x63, 0x67, 0x2b, 0x5a, 0x74, 0x6e, 0x65, 0x6d, 0x5a, 0x6f, 0x4a, 0x45, 0x36, 0x41, 0x5a, 0x62, 0x30, 0x51, 0x6d, 0x51, 0x5a, 0x5a, 0x38, 0x6d, 0x57, 0x76, 0x75, 0x4d, 0x5a, 0x48, 0x75, 0x2f, 0x32, 0x51, 0x65, 0x49, 0x74, 0x42, 0x63, 0x79, 0x36, 0x76, 0x56, 0x52, 0x2f, 0x63, 0x4f, 0x35, 0x4a, 0x79, 0x62, 0x6f, 0x54, 0x54, 0x30, 0x47, 0x46, 0x4d, 0x44, 0x63, 0x78, 0x32, 0x56, 0x2b, 0x49, 0x74, 0x68, 0x53, 0x49, 0x56, 0x4e, 0x67, 0x33, 0x72, 0x0a, 0x41, 0x5a, 0x33, 0x72, 0x32, 0x4f, 0x76, 0x45, 0x68, 0x4a, 0x6e, 0x37, 0x77, 0x41, 0x7a, 0x4d, 0x4d, 0x75, 0x6a, 0x6a, 0x64, 0x39, 0x71, 0x44, 0x52, 0x49, 0x75, 0x65, 0x56, 0x53, 0x6a, 0x41, 0x69, 0x31, 0x6a, 0x54, 0x6b, 0x44, 0x35, 0x4f, 0x47, 0x77, 0x44, 0x78, 0x46, 0x61, 0x32, 0x44, 0x4b, 0x35, 0x6f, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x48, 0x41, 0x52, 0x49, 0x43, 0x41, 0x20, 0x54, 0x4c, 0x53, 0x20, 0x52, 0x53, 0x41, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x32, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x70, 0x44, 0x43, 0x43, 0x41, 0x34, 0x79, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x4f, 0x63, 0x71, 0x54, 0x48, 0x4f, 0x39, 0x44, 0x38, 0x38, 0x61, 0x4f, 0x6b, 0x38, 0x66, 0x30, 0x5a, 0x49, 0x6b, 0x34, 0x66, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x73, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x48, 0x55, 0x6a, 0x45, 0x33, 0x4d, 0x44, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x75, 0x53, 0x47, 0x56, 0x73, 0x62, 0x47, 0x56, 0x75, 0x61, 0x57, 0x4d, 0x67, 0x51, 0x57, 0x4e, 0x68, 0x5a, 0x47, 0x56, 0x74, 0x61, 0x57, 0x4d, 0x67, 0x59, 0x57, 0x35, 0x6b, 0x49, 0x46, 0x4a, 0x6c, 0x63, 0x32, 0x56, 0x68, 0x63, 0x6d, 0x4e, 0x6f, 0x49, 0x45, 0x6c, 0x75, 0x63, 0x33, 0x52, 0x70, 0x64, 0x48, 0x56, 0x30, 0x61, 0x57, 0x39, 0x75, 0x0a, 0x63, 0x79, 0x42, 0x44, 0x51, 0x54, 0x45, 0x6b, 0x4d, 0x43, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x62, 0x53, 0x45, 0x46, 0x53, 0x53, 0x55, 0x4e, 0x42, 0x49, 0x46, 0x52, 0x4d, 0x55, 0x79, 0x42, 0x53, 0x55, 0x30, 0x45, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x79, 0x4d, 0x44, 0x49, 0x78, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x49, 0x78, 0x4d, 0x44, 0x49, 0x78, 0x4f, 0x54, 0x45, 0x77, 0x4e, 0x54, 0x55, 0x7a, 0x0a, 0x4f, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x31, 0x4d, 0x44, 0x49, 0x78, 0x4d, 0x7a, 0x45, 0x77, 0x4e, 0x54, 0x55, 0x7a, 0x4e, 0x31, 0x6f, 0x77, 0x62, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x31, 0x49, 0x78, 0x4e, 0x7a, 0x41, 0x31, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x4c, 0x6b, 0x68, 0x6c, 0x62, 0x47, 0x78, 0x6c, 0x62, 0x6d, 0x6c, 0x6a, 0x49, 0x45, 0x46, 0x6a, 0x59, 0x57, 0x52, 0x6c, 0x0a, 0x62, 0x57, 0x6c, 0x6a, 0x49, 0x47, 0x46, 0x75, 0x5a, 0x43, 0x42, 0x53, 0x5a, 0x58, 0x4e, 0x6c, 0x59, 0x58, 0x4a, 0x6a, 0x61, 0x43, 0x42, 0x4a, 0x62, 0x6e, 0x4e, 0x30, 0x61, 0x58, 0x52, 0x31, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6e, 0x4d, 0x67, 0x51, 0x30, 0x45, 0x78, 0x4a, 0x44, 0x41, 0x69, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x47, 0x30, 0x68, 0x42, 0x55, 0x6b, 0x6c, 0x44, 0x51, 0x53, 0x42, 0x55, 0x54, 0x46, 0x4d, 0x67, 0x55, 0x6c, 0x4e, 0x42, 0x0a, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x6a, 0x41, 0x79, 0x4d, 0x54, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x49, 0x76, 0x43, 0x35, 0x36, 0x39, 0x6c, 0x6d, 0x77, 0x56, 0x6e, 0x6c, 0x73, 0x6b, 0x4e, 0x0a, 0x4a, 0x4c, 0x6e, 0x51, 0x44, 0x6d, 0x54, 0x38, 0x7a, 0x75, 0x49, 0x6b, 0x47, 0x43, 0x79, 0x45, 0x66, 0x33, 0x64, 0x52, 0x79, 0x77, 0x51, 0x52, 0x4e, 0x72, 0x68, 0x65, 0x37, 0x57, 0x6c, 0x78, 0x70, 0x35, 0x37, 0x6b, 0x4a, 0x51, 0x6d, 0x58, 0x5a, 0x38, 0x46, 0x48, 0x77, 0x73, 0x2b, 0x52, 0x46, 0x6a, 0x5a, 0x69, 0x50, 0x54, 0x67, 0x45, 0x34, 0x56, 0x47, 0x43, 0x2f, 0x36, 0x7a, 0x53, 0x74, 0x47, 0x6e, 0x64, 0x4c, 0x75, 0x77, 0x52, 0x6f, 0x30, 0x58, 0x75, 0x0a, 0x61, 0x32, 0x73, 0x37, 0x54, 0x4c, 0x2b, 0x4d, 0x6a, 0x61, 0x51, 0x65, 0x6e, 0x52, 0x47, 0x35, 0x36, 0x54, 0x6a, 0x35, 0x65, 0x67, 0x34, 0x4d, 0x6d, 0x4f, 0x49, 0x6a, 0x48, 0x64, 0x46, 0x4f, 0x59, 0x39, 0x54, 0x6e, 0x75, 0x45, 0x46, 0x45, 0x2b, 0x32, 0x75, 0x76, 0x61, 0x39, 0x6f, 0x66, 0x30, 0x38, 0x57, 0x52, 0x69, 0x46, 0x75, 0x6b, 0x69, 0x5a, 0x4c, 0x52, 0x67, 0x65, 0x61, 0x4d, 0x4f, 0x56, 0x69, 0x67, 0x31, 0x6d, 0x6c, 0x44, 0x71, 0x61, 0x32, 0x59, 0x0a, 0x55, 0x6c, 0x68, 0x75, 0x32, 0x77, 0x72, 0x37, 0x61, 0x38, 0x39, 0x6f, 0x2b, 0x75, 0x4f, 0x6b, 0x58, 0x6a, 0x70, 0x46, 0x63, 0x35, 0x67, 0x48, 0x36, 0x6c, 0x38, 0x43, 0x63, 0x74, 0x34, 0x4d, 0x70, 0x62, 0x4f, 0x66, 0x72, 0x71, 0x6b, 0x64, 0x74, 0x78, 0x32, 0x7a, 0x2f, 0x49, 0x70, 0x5a, 0x35, 0x32, 0x35, 0x79, 0x5a, 0x61, 0x33, 0x31, 0x4d, 0x4a, 0x51, 0x6a, 0x42, 0x2f, 0x4f, 0x43, 0x46, 0x6b, 0x73, 0x31, 0x6d, 0x4a, 0x78, 0x54, 0x75, 0x79, 0x2f, 0x4b, 0x0a, 0x35, 0x46, 0x72, 0x5a, 0x78, 0x34, 0x30, 0x64, 0x2f, 0x4a, 0x69, 0x5a, 0x2b, 0x79, 0x79, 0x6b, 0x67, 0x6d, 0x76, 0x77, 0x4b, 0x68, 0x2b, 0x4f, 0x43, 0x31, 0x39, 0x78, 0x58, 0x46, 0x79, 0x75, 0x51, 0x6e, 0x73, 0x70, 0x69, 0x59, 0x48, 0x4c, 0x41, 0x36, 0x4f, 0x5a, 0x79, 0x6f, 0x69, 0x65, 0x43, 0x30, 0x41, 0x4a, 0x51, 0x54, 0x50, 0x62, 0x35, 0x6c, 0x68, 0x36, 0x2f, 0x61, 0x36, 0x5a, 0x63, 0x4d, 0x42, 0x61, 0x44, 0x39, 0x59, 0x54, 0x68, 0x6e, 0x45, 0x76, 0x0a, 0x64, 0x6d, 0x6e, 0x38, 0x6b, 0x4e, 0x33, 0x62, 0x4c, 0x57, 0x37, 0x52, 0x38, 0x70, 0x76, 0x31, 0x47, 0x6d, 0x75, 0x65, 0x62, 0x78, 0x57, 0x4d, 0x65, 0x76, 0x42, 0x4c, 0x4b, 0x4b, 0x41, 0x69, 0x4f, 0x49, 0x41, 0x6b, 0x62, 0x44, 0x61, 0x6b, 0x4f, 0x2f, 0x49, 0x77, 0x6b, 0x66, 0x4e, 0x34, 0x45, 0x38, 0x2f, 0x42, 0x50, 0x7a, 0x57, 0x72, 0x38, 0x52, 0x30, 0x52, 0x49, 0x37, 0x56, 0x44, 0x49, 0x70, 0x34, 0x42, 0x6b, 0x72, 0x63, 0x59, 0x41, 0x75, 0x55, 0x52, 0x0a, 0x30, 0x59, 0x4c, 0x62, 0x46, 0x51, 0x44, 0x4d, 0x59, 0x54, 0x66, 0x42, 0x4b, 0x6e, 0x79, 0x61, 0x34, 0x64, 0x43, 0x36, 0x73, 0x31, 0x42, 0x47, 0x37, 0x6f, 0x4b, 0x73, 0x6e, 0x54, 0x48, 0x34, 0x2b, 0x79, 0x50, 0x69, 0x41, 0x77, 0x42, 0x49, 0x63, 0x4b, 0x4d, 0x4a, 0x4a, 0x6e, 0x6b, 0x56, 0x55, 0x32, 0x44, 0x7a, 0x4f, 0x46, 0x79, 0x74, 0x4f, 0x4f, 0x71, 0x42, 0x41, 0x47, 0x4d, 0x55, 0x75, 0x54, 0x4e, 0x65, 0x33, 0x51, 0x76, 0x62, 0x6f, 0x45, 0x55, 0x48, 0x0a, 0x47, 0x6a, 0x4d, 0x4a, 0x2b, 0x45, 0x32, 0x30, 0x70, 0x77, 0x4b, 0x6d, 0x61, 0x66, 0x54, 0x43, 0x57, 0x51, 0x57, 0x49, 0x5a, 0x59, 0x56, 0x57, 0x72, 0x6b, 0x76, 0x4c, 0x34, 0x4e, 0x34, 0x38, 0x66, 0x53, 0x30, 0x61, 0x79, 0x4f, 0x6e, 0x37, 0x48, 0x36, 0x4e, 0x68, 0x53, 0x74, 0x59, 0x71, 0x45, 0x36, 0x31, 0x33, 0x54, 0x42, 0x6f, 0x59, 0x6d, 0x35, 0x45, 0x50, 0x57, 0x4e, 0x67, 0x47, 0x56, 0x4d, 0x57, 0x58, 0x2b, 0x4b, 0x6f, 0x2f, 0x49, 0x49, 0x71, 0x6d, 0x0a, 0x68, 0x61, 0x5a, 0x33, 0x39, 0x71, 0x62, 0x38, 0x48, 0x4f, 0x4c, 0x75, 0x62, 0x70, 0x51, 0x7a, 0x4b, 0x6f, 0x4e, 0x51, 0x68, 0x41, 0x72, 0x6c, 0x54, 0x34, 0x62, 0x34, 0x55, 0x45, 0x56, 0x34, 0x41, 0x49, 0x48, 0x72, 0x57, 0x32, 0x6a, 0x6a, 0x4a, 0x6f, 0x33, 0x4d, 0x65, 0x31, 0x78, 0x52, 0x39, 0x42, 0x51, 0x73, 0x51, 0x4c, 0x34, 0x61, 0x59, 0x42, 0x31, 0x36, 0x63, 0x6d, 0x45, 0x64, 0x48, 0x32, 0x4d, 0x74, 0x69, 0x4b, 0x72, 0x4f, 0x6f, 0x6b, 0x57, 0x51, 0x0a, 0x43, 0x50, 0x78, 0x72, 0x76, 0x72, 0x4e, 0x51, 0x4b, 0x6c, 0x72, 0x39, 0x71, 0x45, 0x67, 0x59, 0x52, 0x74, 0x61, 0x51, 0x51, 0x4a, 0x4b, 0x51, 0x43, 0x6f, 0x52, 0x65, 0x61, 0x44, 0x48, 0x34, 0x36, 0x2b, 0x30, 0x4e, 0x30, 0x78, 0x33, 0x47, 0x66, 0x5a, 0x6b, 0x59, 0x56, 0x56, 0x59, 0x6e, 0x5a, 0x53, 0x36, 0x4e, 0x52, 0x63, 0x55, 0x6b, 0x37, 0x4d, 0x37, 0x6a, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x41, 0x70, 0x49, 0x49, 0x36, 0x5a, 0x67, 0x70, 0x4a, 0x49, 0x4b, 0x4d, 0x2b, 0x71, 0x54, 0x57, 0x38, 0x56, 0x58, 0x36, 0x69, 0x56, 0x4e, 0x76, 0x52, 0x4c, 0x75, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x0a, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x50, 0x70, 0x42, 0x49, 0x71, 0x6d, 0x35, 0x69, 0x46, 0x53, 0x56, 0x6d, 0x65, 0x77, 0x7a, 0x56, 0x6a, 0x49, 0x75, 0x4a, 0x6e, 0x64, 0x66, 0x74, 0x54, 0x67, 0x66, 0x76, 0x6e, 0x4e, 0x41, 0x55, 0x58, 0x31, 0x35, 0x51, 0x76, 0x57, 0x69, 0x57, 0x6b, 0x4b, 0x51, 0x55, 0x0a, 0x45, 0x61, 0x70, 0x6f, 0x62, 0x51, 0x6b, 0x31, 0x4f, 0x55, 0x41, 0x4a, 0x32, 0x76, 0x51, 0x4a, 0x4c, 0x44, 0x53, 0x6c, 0x65, 0x31, 0x6d, 0x45, 0x53, 0x53, 0x6d, 0x58, 0x64, 0x4d, 0x67, 0x48, 0x48, 0x6b, 0x64, 0x74, 0x38, 0x73, 0x34, 0x63, 0x55, 0x43, 0x62, 0x6a, 0x6e, 0x6a, 0x31, 0x41, 0x55, 0x7a, 0x2f, 0x33, 0x66, 0x35, 0x5a, 0x32, 0x45, 0x4d, 0x56, 0x47, 0x70, 0x64, 0x41, 0x67, 0x53, 0x31, 0x44, 0x30, 0x4e, 0x54, 0x73, 0x59, 0x39, 0x46, 0x56, 0x71, 0x0a, 0x51, 0x52, 0x74, 0x48, 0x42, 0x6d, 0x67, 0x38, 0x75, 0x77, 0x6b, 0x49, 0x59, 0x74, 0x6c, 0x66, 0x56, 0x55, 0x4b, 0x71, 0x72, 0x46, 0x4f, 0x46, 0x72, 0x4a, 0x56, 0x57, 0x4e, 0x6c, 0x61, 0x72, 0x35, 0x41, 0x57, 0x4d, 0x78, 0x61, 0x6a, 0x61, 0x48, 0x36, 0x4e, 0x70, 0x76, 0x56, 0x4d, 0x50, 0x78, 0x50, 0x2f, 0x63, 0x79, 0x75, 0x4e, 0x2b, 0x38, 0x6b, 0x79, 0x49, 0x68, 0x6b, 0x64, 0x47, 0x47, 0x76, 0x4d, 0x41, 0x39, 0x59, 0x43, 0x52, 0x6f, 0x74, 0x78, 0x44, 0x0a, 0x51, 0x70, 0x53, 0x62, 0x49, 0x50, 0x44, 0x52, 0x7a, 0x62, 0x4c, 0x72, 0x4c, 0x46, 0x50, 0x43, 0x55, 0x33, 0x68, 0x4b, 0x54, 0x77, 0x53, 0x55, 0x51, 0x5a, 0x71, 0x50, 0x4a, 0x7a, 0x4c, 0x42, 0x35, 0x55, 0x6b, 0x5a, 0x76, 0x2f, 0x48, 0x79, 0x77, 0x6f, 0x75, 0x6f, 0x43, 0x6a, 0x6b, 0x78, 0x4b, 0x4c, 0x52, 0x39, 0x59, 0x6a, 0x59, 0x73, 0x54, 0x65, 0x77, 0x66, 0x4d, 0x37, 0x5a, 0x2b, 0x64, 0x32, 0x31, 0x2b, 0x55, 0x50, 0x43, 0x66, 0x44, 0x74, 0x63, 0x52, 0x0a, 0x6a, 0x38, 0x38, 0x59, 0x78, 0x65, 0x4d, 0x6e, 0x2f, 0x69, 0x62, 0x76, 0x42, 0x5a, 0x33, 0x50, 0x7a, 0x7a, 0x66, 0x46, 0x30, 0x48, 0x76, 0x61, 0x4f, 0x37, 0x41, 0x57, 0x68, 0x41, 0x77, 0x36, 0x6b, 0x39, 0x61, 0x2b, 0x46, 0x39, 0x73, 0x50, 0x50, 0x67, 0x34, 0x5a, 0x65, 0x41, 0x6e, 0x48, 0x71, 0x51, 0x4a, 0x79, 0x49, 0x6b, 0x76, 0x33, 0x4e, 0x33, 0x61, 0x36, 0x64, 0x63, 0x53, 0x46, 0x41, 0x31, 0x70, 0x6a, 0x31, 0x62, 0x46, 0x31, 0x42, 0x63, 0x4b, 0x35, 0x0a, 0x76, 0x5a, 0x53, 0x74, 0x6a, 0x42, 0x57, 0x5a, 0x70, 0x35, 0x4e, 0x39, 0x39, 0x73, 0x58, 0x7a, 0x71, 0x6e, 0x54, 0x50, 0x42, 0x49, 0x57, 0x55, 0x6d, 0x41, 0x44, 0x30, 0x34, 0x76, 0x6e, 0x4b, 0x4a, 0x47, 0x57, 0x2f, 0x34, 0x47, 0x4b, 0x76, 0x79, 0x4d, 0x58, 0x36, 0x73, 0x73, 0x6d, 0x65, 0x56, 0x6b, 0x6a, 0x61, 0x65, 0x66, 0x32, 0x57, 0x64, 0x68, 0x57, 0x2b, 0x6f, 0x34, 0x35, 0x57, 0x78, 0x4c, 0x4d, 0x30, 0x2f, 0x4c, 0x35, 0x48, 0x39, 0x4d, 0x47, 0x30, 0x0a, 0x71, 0x50, 0x7a, 0x56, 0x4d, 0x49, 0x68, 0x6f, 0x37, 0x73, 0x75, 0x75, 0x79, 0x57, 0x50, 0x45, 0x64, 0x72, 0x36, 0x73, 0x4f, 0x42, 0x6a, 0x68, 0x58, 0x6c, 0x7a, 0x50, 0x72, 0x6a, 0x6f, 0x69, 0x55, 0x65, 0x76, 0x52, 0x69, 0x37, 0x50, 0x7a, 0x4b, 0x7a, 0x4d, 0x48, 0x56, 0x49, 0x66, 0x36, 0x74, 0x4c, 0x49, 0x54, 0x65, 0x37, 0x70, 0x54, 0x42, 0x47, 0x49, 0x42, 0x6e, 0x66, 0x48, 0x41, 0x54, 0x2b, 0x37, 0x68, 0x4f, 0x74, 0x53, 0x4c, 0x49, 0x42, 0x44, 0x36, 0x0a, 0x41, 0x6c, 0x66, 0x6d, 0x37, 0x38, 0x45, 0x4c, 0x74, 0x35, 0x42, 0x47, 0x6e, 0x42, 0x6b, 0x70, 0x6a, 0x4e, 0x78, 0x76, 0x6f, 0x45, 0x70, 0x70, 0x61, 0x5a, 0x53, 0x33, 0x4a, 0x47, 0x57, 0x67, 0x2f, 0x36, 0x77, 0x2f, 0x7a, 0x67, 0x48, 0x37, 0x49, 0x53, 0x37, 0x39, 0x61, 0x50, 0x69, 0x62, 0x38, 0x71, 0x58, 0x50, 0x4d, 0x54, 0x68, 0x63, 0x46, 0x61, 0x72, 0x6d, 0x6c, 0x77, 0x44, 0x42, 0x33, 0x31, 0x71, 0x6c, 0x70, 0x7a, 0x6d, 0x71, 0x36, 0x59, 0x52, 0x2f, 0x0a, 0x50, 0x46, 0x47, 0x6f, 0x4f, 0x74, 0x6d, 0x55, 0x57, 0x34, 0x79, 0x2f, 0x54, 0x77, 0x68, 0x78, 0x35, 0x64, 0x75, 0x6f, 0x58, 0x4e, 0x54, 0x53, 0x70, 0x76, 0x34, 0x41, 0x6f, 0x38, 0x59, 0x57, 0x78, 0x77, 0x2f, 0x6f, 0x67, 0x4d, 0x34, 0x63, 0x4b, 0x47, 0x52, 0x30, 0x47, 0x51, 0x6a, 0x54, 0x51, 0x75, 0x50, 0x4f, 0x41, 0x46, 0x31, 0x2f, 0x73, 0x64, 0x77, 0x54, 0x73, 0x4f, 0x45, 0x46, 0x79, 0x39, 0x45, 0x67, 0x71, 0x6f, 0x5a, 0x30, 0x6e, 0x6a, 0x6e, 0x6e, 0x0a, 0x6b, 0x66, 0x33, 0x2f, 0x57, 0x39, 0x62, 0x33, 0x72, 0x61, 0x59, 0x76, 0x41, 0x77, 0x74, 0x74, 0x34, 0x31, 0x64, 0x55, 0x36, 0x33, 0x5a, 0x54, 0x47, 0x49, 0x30, 0x52, 0x6d, 0x4c, 0x6f, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x48, 0x41, 0x52, 0x49, 0x43, 0x41, 0x20, 0x54, 0x4c, 0x53, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x32, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x56, 0x44, 0x43, 0x43, 0x41, 0x64, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x5a, 0x33, 0x53, 0x64, 0x6a, 0x58, 0x66, 0x59, 0x4f, 0x32, 0x72, 0x62, 0x49, 0x76, 0x54, 0x2f, 0x57, 0x65, 0x4b, 0x2f, 0x7a, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x73, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x48, 0x0a, 0x55, 0x6a, 0x45, 0x33, 0x4d, 0x44, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x75, 0x53, 0x47, 0x56, 0x73, 0x62, 0x47, 0x56, 0x75, 0x61, 0x57, 0x4d, 0x67, 0x51, 0x57, 0x4e, 0x68, 0x5a, 0x47, 0x56, 0x74, 0x61, 0x57, 0x4d, 0x67, 0x59, 0x57, 0x35, 0x6b, 0x49, 0x46, 0x4a, 0x6c, 0x63, 0x32, 0x56, 0x68, 0x63, 0x6d, 0x4e, 0x6f, 0x49, 0x45, 0x6c, 0x75, 0x63, 0x33, 0x52, 0x70, 0x64, 0x48, 0x56, 0x30, 0x61, 0x57, 0x39, 0x75, 0x63, 0x79, 0x42, 0x44, 0x0a, 0x51, 0x54, 0x45, 0x6b, 0x4d, 0x43, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x62, 0x53, 0x45, 0x46, 0x53, 0x53, 0x55, 0x4e, 0x42, 0x49, 0x46, 0x52, 0x4d, 0x55, 0x79, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x79, 0x4d, 0x44, 0x49, 0x78, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x49, 0x78, 0x4d, 0x44, 0x49, 0x78, 0x4f, 0x54, 0x45, 0x78, 0x4d, 0x44, 0x45, 0x78, 0x4d, 0x46, 0x6f, 0x58, 0x0a, 0x44, 0x54, 0x51, 0x31, 0x4d, 0x44, 0x49, 0x78, 0x4d, 0x7a, 0x45, 0x78, 0x4d, 0x44, 0x45, 0x77, 0x4f, 0x56, 0x6f, 0x77, 0x62, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x31, 0x49, 0x78, 0x4e, 0x7a, 0x41, 0x31, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x4c, 0x6b, 0x68, 0x6c, 0x62, 0x47, 0x78, 0x6c, 0x62, 0x6d, 0x6c, 0x6a, 0x49, 0x45, 0x46, 0x6a, 0x59, 0x57, 0x52, 0x6c, 0x62, 0x57, 0x6c, 0x6a, 0x0a, 0x49, 0x47, 0x46, 0x75, 0x5a, 0x43, 0x42, 0x53, 0x5a, 0x58, 0x4e, 0x6c, 0x59, 0x58, 0x4a, 0x6a, 0x61, 0x43, 0x42, 0x4a, 0x62, 0x6e, 0x4e, 0x30, 0x61, 0x58, 0x52, 0x31, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6e, 0x4d, 0x67, 0x51, 0x30, 0x45, 0x78, 0x4a, 0x44, 0x41, 0x69, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x47, 0x30, 0x68, 0x42, 0x55, 0x6b, 0x6c, 0x44, 0x51, 0x53, 0x42, 0x55, 0x54, 0x46, 0x4d, 0x67, 0x52, 0x55, 0x4e, 0x44, 0x49, 0x46, 0x4a, 0x76, 0x0a, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x6a, 0x41, 0x79, 0x4d, 0x54, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x44, 0x67, 0x49, 0x2f, 0x72, 0x47, 0x67, 0x6c, 0x74, 0x4a, 0x36, 0x72, 0x4b, 0x39, 0x4a, 0x4f, 0x74, 0x44, 0x41, 0x34, 0x4d, 0x4d, 0x37, 0x4b, 0x4b, 0x72, 0x78, 0x63, 0x6d, 0x31, 0x6c, 0x0a, 0x41, 0x45, 0x65, 0x49, 0x68, 0x50, 0x79, 0x61, 0x4a, 0x6d, 0x75, 0x71, 0x53, 0x37, 0x70, 0x73, 0x42, 0x41, 0x71, 0x49, 0x58, 0x68, 0x66, 0x79, 0x56, 0x59, 0x66, 0x38, 0x4d, 0x4c, 0x41, 0x30, 0x34, 0x6a, 0x52, 0x59, 0x56, 0x78, 0x71, 0x45, 0x55, 0x2b, 0x6b, 0x77, 0x32, 0x61, 0x6e, 0x79, 0x6c, 0x6e, 0x54, 0x44, 0x55, 0x52, 0x39, 0x59, 0x53, 0x54, 0x48, 0x4d, 0x6d, 0x45, 0x35, 0x67, 0x45, 0x59, 0x64, 0x31, 0x30, 0x33, 0x4b, 0x55, 0x6b, 0x45, 0x2b, 0x62, 0x0a, 0x45, 0x43, 0x55, 0x71, 0x71, 0x48, 0x67, 0x74, 0x76, 0x70, 0x42, 0x42, 0x57, 0x4a, 0x41, 0x56, 0x63, 0x71, 0x65, 0x68, 0x74, 0x36, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x79, 0x52, 0x74, 0x54, 0x67, 0x52, 0x4c, 0x2b, 0x42, 0x4e, 0x55, 0x57, 0x0a, 0x30, 0x61, 0x71, 0x38, 0x6d, 0x6d, 0x2b, 0x33, 0x6f, 0x4a, 0x55, 0x5a, 0x62, 0x73, 0x6f, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x44, 0x41, 0x32, 0x63, 0x41, 0x4d, 0x47, 0x51, 0x43, 0x4d, 0x42, 0x48, 0x65, 0x72, 0x76, 0x6a, 0x63, 0x54, 0x6f, 0x69, 0x77, 0x71, 0x66, 0x41, 0x69, 0x0a, 0x72, 0x63, 0x4a, 0x52, 0x51, 0x4f, 0x39, 0x67, 0x63, 0x53, 0x33, 0x75, 0x6a, 0x77, 0x4c, 0x45, 0x58, 0x51, 0x4e, 0x77, 0x53, 0x61, 0x53, 0x53, 0x36, 0x73, 0x55, 0x55, 0x69, 0x48, 0x43, 0x6d, 0x30, 0x77, 0x32, 0x77, 0x71, 0x73, 0x6f, 0x73, 0x51, 0x4a, 0x7a, 0x37, 0x36, 0x59, 0x4a, 0x75, 0x6d, 0x67, 0x49, 0x77, 0x4b, 0x30, 0x65, 0x61, 0x42, 0x38, 0x62, 0x52, 0x77, 0x6f, 0x46, 0x38, 0x79, 0x67, 0x75, 0x57, 0x47, 0x45, 0x45, 0x62, 0x6f, 0x2f, 0x51, 0x77, 0x0a, 0x43, 0x5a, 0x36, 0x31, 0x49, 0x79, 0x67, 0x4e, 0x6e, 0x78, 0x53, 0x32, 0x50, 0x46, 0x4f, 0x69, 0x54, 0x41, 0x5a, 0x70, 0x66, 0x66, 0x70, 0x73, 0x6b, 0x63, 0x59, 0x71, 0x53, 0x55, 0x58, 0x6d, 0x37, 0x4c, 0x63, 0x54, 0x34, 0x54, 0x70, 0x73, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x64, 0x61, 0x64, 0x20, 0x64, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x63, 0x69, 0x6f, 0x6e, 0x20, 0x46, 0x69, 0x72, 0x6d, 0x61, 0x70, 0x72, 0x6f, 0x66, 0x65, 0x73, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x43, 0x49, 0x46, 0x20, 0x41, 0x36, 0x32, 0x36, 0x33, 0x34, 0x30, 0x36, 0x38, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x47, 0x46, 0x44, 0x43, 0x43, 0x41, 0x2f, 0x79, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x49, 0x47, 0x33, 0x44, 0x70, 0x30, 0x76, 0x2b, 0x75, 0x62, 0x48, 0x45, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x55, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x56, 0x4d, 0x78, 0x51, 0x6a, 0x42, 0x41, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x4f, 0x55, 0x46, 0x31, 0x64, 0x47, 0x39, 0x79, 0x61, 0x57, 0x52, 0x68, 0x5a, 0x43, 0x42, 0x6b, 0x5a, 0x53, 0x42, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x61, 0x57, 0x5a, 0x70, 0x59, 0x32, 0x46, 0x6a, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x5a, 0x70, 0x63, 0x6d, 0x31, 0x68, 0x63, 0x48, 0x4a, 0x76, 0x5a, 0x6d, 0x56, 0x7a, 0x61, 0x57, 0x39, 0x75, 0x59, 0x57, 0x77, 0x67, 0x51, 0x30, 0x6c, 0x47, 0x49, 0x45, 0x45, 0x32, 0x0a, 0x4d, 0x6a, 0x59, 0x7a, 0x4e, 0x44, 0x41, 0x32, 0x4f, 0x44, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4e, 0x44, 0x41, 0x35, 0x4d, 0x6a, 0x4d, 0x78, 0x4e, 0x54, 0x49, 0x79, 0x4d, 0x44, 0x64, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4e, 0x6a, 0x41, 0x31, 0x4d, 0x44, 0x55, 0x78, 0x4e, 0x54, 0x49, 0x79, 0x4d, 0x44, 0x64, 0x61, 0x4d, 0x46, 0x45, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x56, 0x54, 0x4d, 0x55, 0x49, 0x77, 0x0a, 0x51, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x44, 0x6c, 0x42, 0x64, 0x58, 0x52, 0x76, 0x63, 0x6d, 0x6c, 0x6b, 0x59, 0x57, 0x51, 0x67, 0x5a, 0x47, 0x55, 0x67, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x59, 0x32, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x47, 0x61, 0x58, 0x4a, 0x74, 0x59, 0x58, 0x42, 0x79, 0x62, 0x32, 0x5a, 0x6c, 0x63, 0x32, 0x6c, 0x76, 0x62, 0x6d, 0x46, 0x73, 0x49, 0x45, 0x4e, 0x4a, 0x52, 0x69, 0x42, 0x42, 0x0a, 0x4e, 0x6a, 0x49, 0x32, 0x4d, 0x7a, 0x51, 0x77, 0x4e, 0x6a, 0x67, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x44, 0x4b, 0x6c, 0x6d, 0x75, 0x4f, 0x36, 0x76, 0x6a, 0x37, 0x38, 0x61, 0x49, 0x31, 0x34, 0x48, 0x39, 0x4d, 0x32, 0x75, 0x44, 0x44, 0x0a, 0x55, 0x74, 0x64, 0x39, 0x74, 0x68, 0x44, 0x49, 0x41, 0x6c, 0x36, 0x7a, 0x51, 0x79, 0x72, 0x45, 0x54, 0x32, 0x71, 0x79, 0x79, 0x68, 0x78, 0x64, 0x4b, 0x4a, 0x70, 0x34, 0x45, 0x52, 0x70, 0x70, 0x57, 0x56, 0x65, 0x76, 0x74, 0x53, 0x42, 0x43, 0x35, 0x49, 0x73, 0x50, 0x35, 0x74, 0x39, 0x62, 0x70, 0x67, 0x4f, 0x53, 0x4c, 0x2f, 0x55, 0x52, 0x35, 0x47, 0x4c, 0x58, 0x4d, 0x6e, 0x45, 0x34, 0x32, 0x51, 0x51, 0x4d, 0x63, 0x61, 0x73, 0x39, 0x55, 0x58, 0x34, 0x50, 0x0a, 0x42, 0x39, 0x39, 0x6a, 0x42, 0x56, 0x7a, 0x70, 0x76, 0x35, 0x52, 0x76, 0x77, 0x53, 0x6d, 0x43, 0x77, 0x4c, 0x54, 0x61, 0x55, 0x62, 0x44, 0x42, 0x50, 0x4c, 0x75, 0x74, 0x4e, 0x30, 0x70, 0x63, 0x79, 0x76, 0x46, 0x4c, 0x4e, 0x67, 0x34, 0x6b, 0x71, 0x37, 0x2f, 0x44, 0x68, 0x48, 0x66, 0x39, 0x71, 0x46, 0x44, 0x30, 0x73, 0x65, 0x66, 0x47, 0x4c, 0x39, 0x49, 0x74, 0x57, 0x59, 0x31, 0x36, 0x43, 0x6b, 0x36, 0x57, 0x61, 0x56, 0x49, 0x43, 0x71, 0x6a, 0x61, 0x59, 0x0a, 0x37, 0x50, 0x7a, 0x36, 0x46, 0x49, 0x4d, 0x4d, 0x4e, 0x78, 0x2f, 0x4a, 0x6b, 0x6a, 0x64, 0x2f, 0x31, 0x34, 0x45, 0x74, 0x35, 0x63, 0x53, 0x35, 0x34, 0x44, 0x34, 0x30, 0x2f, 0x6d, 0x66, 0x30, 0x50, 0x6d, 0x62, 0x52, 0x30, 0x2f, 0x52, 0x41, 0x7a, 0x31, 0x35, 0x69, 0x4e, 0x41, 0x39, 0x77, 0x42, 0x6a, 0x34, 0x67, 0x47, 0x46, 0x72, 0x4f, 0x39, 0x33, 0x49, 0x62, 0x4a, 0x57, 0x79, 0x54, 0x64, 0x42, 0x53, 0x54, 0x6f, 0x33, 0x4f, 0x78, 0x44, 0x71, 0x71, 0x48, 0x0a, 0x45, 0x43, 0x4e, 0x5a, 0x58, 0x79, 0x41, 0x46, 0x47, 0x55, 0x66, 0x74, 0x61, 0x49, 0x36, 0x53, 0x45, 0x73, 0x70, 0x64, 0x2f, 0x4e, 0x59, 0x72, 0x73, 0x70, 0x49, 0x38, 0x49, 0x4d, 0x2f, 0x68, 0x58, 0x36, 0x38, 0x67, 0x76, 0x71, 0x42, 0x32, 0x66, 0x33, 0x62, 0x6c, 0x37, 0x42, 0x71, 0x47, 0x59, 0x54, 0x4d, 0x2b, 0x35, 0x33, 0x75, 0x30, 0x50, 0x36, 0x41, 0x50, 0x6a, 0x71, 0x4b, 0x35, 0x61, 0x6d, 0x2b, 0x35, 0x68, 0x79, 0x5a, 0x76, 0x51, 0x57, 0x79, 0x49, 0x0a, 0x70, 0x6c, 0x44, 0x39, 0x61, 0x6d, 0x4d, 0x4c, 0x39, 0x5a, 0x4d, 0x57, 0x47, 0x78, 0x6d, 0x50, 0x73, 0x75, 0x32, 0x62, 0x6d, 0x38, 0x6d, 0x51, 0x39, 0x51, 0x45, 0x4d, 0x33, 0x78, 0x6b, 0x39, 0x44, 0x7a, 0x34, 0x34, 0x49, 0x38, 0x6b, 0x76, 0x6a, 0x77, 0x7a, 0x52, 0x41, 0x76, 0x34, 0x62, 0x56, 0x64, 0x5a, 0x4f, 0x30, 0x49, 0x30, 0x38, 0x72, 0x30, 0x2b, 0x6b, 0x38, 0x2f, 0x36, 0x76, 0x4b, 0x74, 0x4d, 0x46, 0x6e, 0x58, 0x6b, 0x49, 0x6f, 0x63, 0x74, 0x58, 0x0a, 0x4d, 0x62, 0x53, 0x63, 0x79, 0x4a, 0x43, 0x79, 0x5a, 0x2f, 0x51, 0x59, 0x46, 0x70, 0x4d, 0x36, 0x2f, 0x45, 0x66, 0x59, 0x30, 0x58, 0x69, 0x57, 0x4d, 0x52, 0x2b, 0x36, 0x4b, 0x77, 0x78, 0x66, 0x58, 0x5a, 0x6d, 0x74, 0x59, 0x34, 0x6c, 0x61, 0x4a, 0x43, 0x42, 0x32, 0x32, 0x4e, 0x2f, 0x39, 0x71, 0x30, 0x36, 0x6d, 0x49, 0x71, 0x71, 0x64, 0x58, 0x75, 0x59, 0x6e, 0x69, 0x6e, 0x31, 0x6f, 0x4b, 0x61, 0x50, 0x6e, 0x69, 0x72, 0x6a, 0x61, 0x45, 0x62, 0x73, 0x58, 0x0a, 0x4c, 0x5a, 0x6d, 0x64, 0x45, 0x79, 0x52, 0x47, 0x39, 0x38, 0x58, 0x69, 0x32, 0x4a, 0x2b, 0x4f, 0x66, 0x38, 0x65, 0x50, 0x64, 0x47, 0x31, 0x61, 0x73, 0x75, 0x68, 0x79, 0x39, 0x61, 0x7a, 0x75, 0x4a, 0x42, 0x43, 0x74, 0x4c, 0x78, 0x54, 0x61, 0x2f, 0x79, 0x32, 0x61, 0x52, 0x6e, 0x46, 0x48, 0x76, 0x6b, 0x4c, 0x66, 0x75, 0x77, 0x48, 0x62, 0x39, 0x48, 0x2f, 0x54, 0x4b, 0x49, 0x38, 0x78, 0x57, 0x56, 0x76, 0x54, 0x79, 0x51, 0x4b, 0x6d, 0x74, 0x46, 0x4c, 0x4b, 0x0a, 0x62, 0x70, 0x66, 0x37, 0x51, 0x38, 0x55, 0x49, 0x4a, 0x6d, 0x2b, 0x4b, 0x39, 0x4c, 0x76, 0x39, 0x6e, 0x79, 0x69, 0x71, 0x44, 0x64, 0x56, 0x46, 0x38, 0x78, 0x4d, 0x36, 0x48, 0x64, 0x6a, 0x41, 0x65, 0x49, 0x39, 0x42, 0x5a, 0x7a, 0x77, 0x65, 0x6c, 0x47, 0x53, 0x75, 0x65, 0x77, 0x76, 0x46, 0x36, 0x4e, 0x6b, 0x42, 0x69, 0x44, 0x6b, 0x61, 0x6c, 0x34, 0x5a, 0x6b, 0x51, 0x64, 0x55, 0x37, 0x68, 0x77, 0x78, 0x75, 0x2b, 0x67, 0x2f, 0x47, 0x76, 0x55, 0x67, 0x55, 0x0a, 0x76, 0x7a, 0x6c, 0x4e, 0x31, 0x4a, 0x35, 0x42, 0x74, 0x6f, 0x2b, 0x57, 0x48, 0x57, 0x4f, 0x57, 0x6b, 0x39, 0x6d, 0x56, 0x42, 0x6e, 0x67, 0x78, 0x61, 0x4a, 0x34, 0x33, 0x42, 0x6a, 0x75, 0x41, 0x69, 0x55, 0x56, 0x68, 0x4f, 0x53, 0x50, 0x48, 0x47, 0x30, 0x53, 0x6a, 0x46, 0x65, 0x55, 0x63, 0x2b, 0x4a, 0x49, 0x77, 0x75, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x34, 0x48, 0x76, 0x4d, 0x49, 0x48, 0x73, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x0a, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x6c, 0x7a, 0x65, 0x75, 0x72, 0x4e, 0x52, 0x34, 0x41, 0x50, 0x6e, 0x37, 0x56, 0x64, 0x4d, 0x41, 0x63, 0x74, 0x48, 0x4e, 0x48, 0x44, 0x68, 0x70, 0x6b, 0x4c, 0x7a, 0x41, 0x53, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x43, 0x44, 0x41, 0x47, 0x41, 0x51, 0x48, 0x2f, 0x41, 0x67, 0x45, 0x42, 0x4d, 0x49, 0x47, 0x6d, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x41, 0x45, 0x67, 0x5a, 0x34, 0x77, 0x0a, 0x67, 0x5a, 0x73, 0x77, 0x67, 0x5a, 0x67, 0x47, 0x42, 0x46, 0x55, 0x64, 0x49, 0x41, 0x41, 0x77, 0x67, 0x59, 0x38, 0x77, 0x4c, 0x77, 0x59, 0x49, 0x4b, 0x77, 0x59, 0x42, 0x42, 0x51, 0x55, 0x48, 0x41, 0x67, 0x45, 0x57, 0x49, 0x32, 0x68, 0x30, 0x64, 0x48, 0x41, 0x36, 0x4c, 0x79, 0x39, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5a, 0x6d, 0x6c, 0x79, 0x62, 0x57, 0x46, 0x77, 0x63, 0x6d, 0x39, 0x6d, 0x5a, 0x58, 0x4e, 0x70, 0x62, 0x32, 0x35, 0x68, 0x62, 0x43, 0x35, 0x6a, 0x0a, 0x62, 0x32, 0x30, 0x76, 0x59, 0x33, 0x42, 0x7a, 0x4d, 0x46, 0x77, 0x47, 0x43, 0x43, 0x73, 0x47, 0x41, 0x51, 0x55, 0x46, 0x42, 0x77, 0x49, 0x43, 0x4d, 0x46, 0x41, 0x65, 0x54, 0x67, 0x42, 0x51, 0x41, 0x47, 0x45, 0x41, 0x63, 0x77, 0x42, 0x6c, 0x41, 0x47, 0x38, 0x41, 0x49, 0x41, 0x42, 0x6b, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x73, 0x41, 0x47, 0x45, 0x41, 0x49, 0x41, 0x42, 0x43, 0x41, 0x47, 0x38, 0x41, 0x62, 0x67, 0x42, 0x68, 0x41, 0x47, 0x34, 0x41, 0x0a, 0x62, 0x77, 0x42, 0x32, 0x41, 0x47, 0x45, 0x41, 0x49, 0x41, 0x41, 0x30, 0x41, 0x44, 0x63, 0x41, 0x49, 0x41, 0x42, 0x43, 0x41, 0x47, 0x45, 0x41, 0x63, 0x67, 0x42, 0x6a, 0x41, 0x47, 0x55, 0x41, 0x62, 0x41, 0x42, 0x76, 0x41, 0x47, 0x34, 0x41, 0x59, 0x51, 0x41, 0x67, 0x41, 0x44, 0x41, 0x41, 0x4f, 0x41, 0x41, 0x77, 0x41, 0x44, 0x45, 0x41, 0x4e, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x0a, 0x41, 0x51, 0x59, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x48, 0x53, 0x48, 0x4b, 0x41, 0x49, 0x72, 0x64, 0x78, 0x39, 0x6d, 0x69, 0x57, 0x54, 0x74, 0x6a, 0x33, 0x51, 0x75, 0x52, 0x68, 0x79, 0x37, 0x71, 0x50, 0x6a, 0x34, 0x43, 0x78, 0x32, 0x44, 0x74, 0x6a, 0x71, 0x6e, 0x36, 0x45, 0x57, 0x4b, 0x42, 0x37, 0x66, 0x67, 0x50, 0x69, 0x44, 0x4c, 0x0a, 0x34, 0x51, 0x6a, 0x62, 0x45, 0x77, 0x6a, 0x34, 0x4b, 0x4b, 0x45, 0x31, 0x73, 0x6f, 0x43, 0x7a, 0x43, 0x31, 0x48, 0x41, 0x30, 0x31, 0x61, 0x61, 0x6a, 0x54, 0x4e, 0x46, 0x53, 0x61, 0x39, 0x4a, 0x38, 0x4f, 0x41, 0x39, 0x42, 0x33, 0x70, 0x46, 0x45, 0x31, 0x72, 0x2f, 0x79, 0x4a, 0x66, 0x59, 0x30, 0x78, 0x67, 0x73, 0x66, 0x5a, 0x62, 0x34, 0x33, 0x61, 0x4a, 0x6c, 0x51, 0x33, 0x43, 0x54, 0x6b, 0x42, 0x57, 0x36, 0x6b, 0x4e, 0x2f, 0x6f, 0x47, 0x62, 0x44, 0x62, 0x0a, 0x4c, 0x49, 0x70, 0x67, 0x44, 0x37, 0x64, 0x76, 0x6c, 0x41, 0x63, 0x65, 0x48, 0x61, 0x62, 0x4a, 0x68, 0x66, 0x61, 0x39, 0x4e, 0x50, 0x68, 0x41, 0x65, 0x47, 0x49, 0x51, 0x63, 0x44, 0x71, 0x2b, 0x66, 0x55, 0x73, 0x35, 0x67, 0x61, 0x6b, 0x51, 0x31, 0x4a, 0x5a, 0x42, 0x75, 0x2f, 0x68, 0x66, 0x48, 0x41, 0x73, 0x64, 0x43, 0x50, 0x4b, 0x78, 0x73, 0x49, 0x6c, 0x36, 0x38, 0x76, 0x65, 0x67, 0x34, 0x4d, 0x53, 0x50, 0x69, 0x33, 0x69, 0x31, 0x4f, 0x31, 0x69, 0x6c, 0x0a, 0x49, 0x34, 0x35, 0x50, 0x56, 0x66, 0x34, 0x32, 0x4f, 0x2b, 0x41, 0x4d, 0x74, 0x38, 0x6f, 0x71, 0x4d, 0x45, 0x45, 0x67, 0x74, 0x49, 0x44, 0x4e, 0x72, 0x76, 0x78, 0x32, 0x5a, 0x6e, 0x4f, 0x6f, 0x72, 0x6d, 0x37, 0x68, 0x66, 0x4e, 0x6f, 0x44, 0x36, 0x4a, 0x51, 0x67, 0x35, 0x69, 0x4b, 0x6a, 0x30, 0x42, 0x2b, 0x51, 0x58, 0x53, 0x42, 0x54, 0x46, 0x43, 0x5a, 0x58, 0x32, 0x6c, 0x53, 0x58, 0x33, 0x78, 0x5a, 0x45, 0x45, 0x41, 0x45, 0x65, 0x69, 0x47, 0x61, 0x50, 0x0a, 0x63, 0x6a, 0x69, 0x54, 0x33, 0x53, 0x43, 0x33, 0x4e, 0x4c, 0x37, 0x58, 0x38, 0x65, 0x35, 0x6a, 0x6a, 0x6b, 0x64, 0x35, 0x4b, 0x41, 0x62, 0x38, 0x38, 0x31, 0x6c, 0x46, 0x4a, 0x57, 0x41, 0x69, 0x4d, 0x78, 0x75, 0x6a, 0x58, 0x36, 0x69, 0x36, 0x4b, 0x74, 0x6f, 0x61, 0x50, 0x63, 0x31, 0x41, 0x36, 0x6f, 0x7a, 0x75, 0x42, 0x52, 0x57, 0x56, 0x31, 0x61, 0x55, 0x73, 0x49, 0x43, 0x2b, 0x6e, 0x6d, 0x43, 0x6a, 0x75, 0x52, 0x66, 0x7a, 0x78, 0x75, 0x49, 0x67, 0x41, 0x0a, 0x4c, 0x49, 0x39, 0x43, 0x32, 0x6c, 0x48, 0x56, 0x6e, 0x4f, 0x55, 0x54, 0x61, 0x48, 0x46, 0x46, 0x51, 0x34, 0x75, 0x65, 0x43, 0x79, 0x45, 0x38, 0x53, 0x31, 0x77, 0x46, 0x33, 0x42, 0x71, 0x66, 0x6d, 0x49, 0x37, 0x61, 0x76, 0x53, 0x4b, 0x65, 0x63, 0x73, 0x32, 0x74, 0x43, 0x73, 0x76, 0x4d, 0x6f, 0x32, 0x65, 0x62, 0x4b, 0x48, 0x54, 0x45, 0x6d, 0x39, 0x63, 0x61, 0x50, 0x41, 0x52, 0x59, 0x70, 0x6f, 0x4b, 0x64, 0x72, 0x63, 0x64, 0x37, 0x62, 0x2f, 0x2b, 0x41, 0x0a, 0x6c, 0x75, 0x6e, 0x34, 0x6a, 0x57, 0x71, 0x39, 0x47, 0x4a, 0x41, 0x64, 0x2f, 0x30, 0x6b, 0x61, 0x6b, 0x46, 0x49, 0x33, 0x6b, 0x79, 0x38, 0x38, 0x41, 0x6c, 0x32, 0x43, 0x64, 0x67, 0x74, 0x52, 0x35, 0x78, 0x62, 0x48, 0x56, 0x2f, 0x67, 0x34, 0x2b, 0x61, 0x66, 0x4e, 0x6d, 0x79, 0x4a, 0x55, 0x37, 0x32, 0x4f, 0x77, 0x46, 0x57, 0x31, 0x54, 0x5a, 0x51, 0x4e, 0x4b, 0x58, 0x6b, 0x71, 0x67, 0x73, 0x71, 0x65, 0x4f, 0x53, 0x51, 0x42, 0x5a, 0x4f, 0x4e, 0x58, 0x48, 0x0a, 0x39, 0x49, 0x42, 0x6b, 0x39, 0x57, 0x36, 0x56, 0x55, 0x4c, 0x67, 0x52, 0x66, 0x68, 0x56, 0x77, 0x4f, 0x45, 0x71, 0x77, 0x66, 0x39, 0x44, 0x45, 0x4d, 0x6e, 0x44, 0x41, 0x47, 0x66, 0x2f, 0x4a, 0x4f, 0x43, 0x30, 0x55, 0x4c, 0x47, 0x62, 0x30, 0x51, 0x6b, 0x54, 0x6d, 0x56, 0x58, 0x59, 0x62, 0x67, 0x42, 0x56, 0x58, 0x2f, 0x38, 0x43, 0x6e, 0x70, 0x36, 0x6f, 0x35, 0x71, 0x74, 0x6a, 0x54, 0x63, 0x4e, 0x41, 0x75, 0x75, 0x75, 0x75, 0x55, 0x61, 0x76, 0x70, 0x66, 0x0a, 0x4e, 0x49, 0x62, 0x6e, 0x59, 0x72, 0x58, 0x39, 0x69, 0x76, 0x41, 0x77, 0x68, 0x5a, 0x54, 0x4a, 0x72, 0x79, 0x51, 0x43, 0x4c, 0x32, 0x2f, 0x57, 0x33, 0x57, 0x66, 0x2b, 0x34, 0x37, 0x42, 0x56, 0x54, 0x77, 0x53, 0x59, 0x54, 0x36, 0x52, 0x42, 0x56, 0x75, 0x4b, 0x54, 0x30, 0x47, 0x72, 0x6f, 0x31, 0x76, 0x50, 0x37, 0x5a, 0x65, 0x44, 0x4f, 0x64, 0x63, 0x51, 0x78, 0x57, 0x51, 0x7a, 0x75, 0x67, 0x73, 0x67, 0x4d, 0x59, 0x44, 0x4e, 0x4b, 0x47, 0x62, 0x71, 0x45, 0x0a, 0x5a, 0x79, 0x63, 0x50, 0x76, 0x45, 0x4a, 0x64, 0x76, 0x53, 0x52, 0x55, 0x44, 0x65, 0x77, 0x64, 0x63, 0x41, 0x5a, 0x66, 0x70, 0x4c, 0x7a, 0x36, 0x49, 0x48, 0x78, 0x56, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x76, 0x54, 0x72, 0x75, 0x73, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x44, 0x7a, 0x43, 0x43, 0x41, 0x5a, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x62, 0x6d, 0x71, 0x38, 0x57, 0x61, 0x70, 0x54, 0x76, 0x70, 0x67, 0x35, 0x5a, 0x36, 0x4c, 0x53, 0x61, 0x36, 0x51, 0x37, 0x35, 0x6d, 0x30, 0x63, 0x31, 0x74, 0x6f, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x4d, 0x77, 0x52, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x34, 0x78, 0x48, 0x44, 0x41, 0x61, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x45, 0x32, 0x6c, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x51, 0x32, 0x68, 0x70, 0x62, 0x6d, 0x45, 0x67, 0x51, 0x32, 0x38, 0x75, 0x4c, 0x45, 0x78, 0x30, 0x5a, 0x43, 0x34, 0x78, 0x47, 0x6a, 0x41, 0x59, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x58, 0x5a, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x49, 0x45, 0x56, 0x44, 0x51, 0x79, 0x42, 0x53, 0x0a, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x34, 0x4d, 0x44, 0x63, 0x7a, 0x4d, 0x54, 0x41, 0x33, 0x4d, 0x6a, 0x59, 0x30, 0x4e, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x7a, 0x4d, 0x44, 0x63, 0x7a, 0x4d, 0x54, 0x41, 0x33, 0x4d, 0x6a, 0x59, 0x30, 0x4e, 0x46, 0x6f, 0x77, 0x52, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x34, 0x78, 0x48, 0x44, 0x41, 0x61, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x45, 0x32, 0x6c, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x51, 0x32, 0x68, 0x70, 0x62, 0x6d, 0x45, 0x67, 0x51, 0x32, 0x38, 0x75, 0x4c, 0x45, 0x78, 0x30, 0x5a, 0x43, 0x34, 0x78, 0x47, 0x6a, 0x41, 0x59, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x58, 0x5a, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x49, 0x45, 0x56, 0x44, 0x51, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x48, 0x59, 0x77, 0x0a, 0x45, 0x41, 0x59, 0x48, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x43, 0x41, 0x51, 0x59, 0x46, 0x4b, 0x34, 0x45, 0x45, 0x41, 0x43, 0x49, 0x44, 0x59, 0x67, 0x41, 0x45, 0x5a, 0x56, 0x42, 0x4b, 0x72, 0x6f, 0x78, 0x35, 0x6c, 0x6b, 0x71, 0x71, 0x48, 0x41, 0x6a, 0x44, 0x6f, 0x36, 0x4c, 0x4e, 0x2f, 0x6c, 0x6c, 0x57, 0x51, 0x58, 0x66, 0x39, 0x4a, 0x70, 0x52, 0x43, 0x75, 0x78, 0x33, 0x4e, 0x43, 0x4e, 0x74, 0x7a, 0x73, 0x6c, 0x74, 0x31, 0x38, 0x38, 0x2b, 0x63, 0x0a, 0x54, 0x6f, 0x4c, 0x30, 0x76, 0x2f, 0x68, 0x68, 0x4a, 0x6f, 0x56, 0x73, 0x31, 0x6f, 0x56, 0x62, 0x63, 0x6e, 0x44, 0x53, 0x2f, 0x64, 0x74, 0x69, 0x74, 0x4e, 0x39, 0x54, 0x69, 0x37, 0x32, 0x78, 0x52, 0x46, 0x68, 0x69, 0x51, 0x67, 0x6e, 0x48, 0x2b, 0x6e, 0x39, 0x62, 0x45, 0x4f, 0x66, 0x2b, 0x51, 0x50, 0x33, 0x41, 0x32, 0x4d, 0x4d, 0x72, 0x4d, 0x75, 0x64, 0x77, 0x70, 0x72, 0x65, 0x6d, 0x49, 0x46, 0x55, 0x64, 0x65, 0x34, 0x42, 0x64, 0x53, 0x34, 0x39, 0x6e, 0x0a, 0x54, 0x50, 0x45, 0x51, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x6d, 0x44, 0x6e, 0x4e, 0x76, 0x74, 0x69, 0x79, 0x6a, 0x50, 0x65, 0x79, 0x71, 0x2b, 0x47, 0x74, 0x4a, 0x4b, 0x39, 0x37, 0x66, 0x4b, 0x48, 0x62, 0x48, 0x38, 0x38, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4f, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x4d, 0x44, 0x61, 0x41, 0x41, 0x77, 0x5a, 0x51, 0x49, 0x77, 0x56, 0x35, 0x33, 0x64, 0x56, 0x76, 0x48, 0x48, 0x34, 0x2b, 0x6d, 0x34, 0x53, 0x56, 0x42, 0x72, 0x6d, 0x32, 0x6e, 0x44, 0x62, 0x2b, 0x7a, 0x44, 0x66, 0x53, 0x58, 0x6b, 0x56, 0x35, 0x55, 0x54, 0x0a, 0x51, 0x4a, 0x74, 0x53, 0x30, 0x7a, 0x76, 0x7a, 0x51, 0x42, 0x6d, 0x38, 0x4a, 0x73, 0x63, 0x74, 0x42, 0x70, 0x36, 0x31, 0x65, 0x7a, 0x61, 0x66, 0x39, 0x53, 0x58, 0x55, 0x59, 0x32, 0x73, 0x41, 0x41, 0x6a, 0x45, 0x41, 0x36, 0x64, 0x50, 0x47, 0x6e, 0x6c, 0x61, 0x61, 0x4b, 0x73, 0x79, 0x68, 0x32, 0x6a, 0x2f, 0x49, 0x5a, 0x69, 0x76, 0x54, 0x57, 0x4a, 0x77, 0x67, 0x68, 0x66, 0x71, 0x72, 0x6b, 0x59, 0x70, 0x77, 0x63, 0x42, 0x45, 0x34, 0x59, 0x47, 0x51, 0x4c, 0x0a, 0x59, 0x67, 0x6d, 0x52, 0x57, 0x41, 0x44, 0x35, 0x54, 0x66, 0x73, 0x30, 0x61, 0x4e, 0x6f, 0x4a, 0x72, 0x53, 0x45, 0x47, 0x47, 0x4a, 0x54, 0x4f, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x76, 0x54, 0x72, 0x75, 0x73, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x56, 0x6a, 0x43, 0x43, 0x41, 0x7a, 0x36, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x51, 0x2b, 0x4e, 0x78, 0x45, 0x39, 0x69, 0x7a, 0x57, 0x52, 0x52, 0x64, 0x74, 0x38, 0x36, 0x4d, 0x2f, 0x54, 0x58, 0x39, 0x62, 0x37, 0x77, 0x46, 0x6a, 0x55, 0x55, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x51, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x34, 0x78, 0x48, 0x44, 0x41, 0x61, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x45, 0x32, 0x6c, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x51, 0x32, 0x68, 0x70, 0x62, 0x6d, 0x45, 0x67, 0x51, 0x32, 0x38, 0x75, 0x4c, 0x45, 0x78, 0x30, 0x5a, 0x43, 0x34, 0x78, 0x46, 0x6a, 0x41, 0x55, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x44, 0x58, 0x5a, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x49, 0x46, 0x4a, 0x76, 0x0a, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x67, 0x77, 0x4e, 0x7a, 0x4d, 0x78, 0x4d, 0x44, 0x63, 0x79, 0x4e, 0x44, 0x41, 0x31, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x4d, 0x77, 0x4e, 0x7a, 0x4d, 0x78, 0x4d, 0x44, 0x63, 0x79, 0x4e, 0x44, 0x41, 0x31, 0x57, 0x6a, 0x42, 0x44, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x44, 0x54, 0x6a, 0x45, 0x63, 0x4d, 0x42, 0x6f, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x54, 0x61, 0x56, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x44, 0x61, 0x47, 0x6c, 0x75, 0x59, 0x53, 0x42, 0x44, 0x62, 0x79, 0x34, 0x73, 0x54, 0x48, 0x52, 0x6b, 0x4c, 0x6a, 0x45, 0x57, 0x4d, 0x42, 0x51, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x4e, 0x64, 0x6c, 0x52, 0x79, 0x64, 0x58, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x54, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x0a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4c, 0x31, 0x56, 0x66, 0x47, 0x48, 0x54, 0x75, 0x42, 0x30, 0x45, 0x59, 0x67, 0x57, 0x67, 0x72, 0x6d, 0x79, 0x33, 0x63, 0x4c, 0x52, 0x42, 0x36, 0x6b, 0x73, 0x44, 0x58, 0x68, 0x41, 0x2f, 0x6b, 0x46, 0x6f, 0x63, 0x69, 0x7a, 0x75, 0x77, 0x5a, 0x6f, 0x74, 0x73, 0x0a, 0x53, 0x4b, 0x59, 0x63, 0x49, 0x72, 0x72, 0x56, 0x51, 0x4a, 0x4c, 0x75, 0x4d, 0x37, 0x49, 0x6a, 0x57, 0x63, 0x6d, 0x4f, 0x76, 0x46, 0x6a, 0x61, 0x69, 0x35, 0x37, 0x51, 0x47, 0x66, 0x49, 0x76, 0x57, 0x63, 0x61, 0x4d, 0x59, 0x31, 0x71, 0x36, 0x6e, 0x36, 0x4d, 0x4c, 0x73, 0x4c, 0x4f, 0x61, 0x58, 0x4c, 0x6f, 0x52, 0x75, 0x42, 0x4c, 0x70, 0x44, 0x4c, 0x76, 0x50, 0x62, 0x6d, 0x79, 0x41, 0x68, 0x79, 0x6b, 0x55, 0x41, 0x79, 0x79, 0x4e, 0x4a, 0x4a, 0x72, 0x49, 0x0a, 0x5a, 0x49, 0x4f, 0x31, 0x61, 0x71, 0x77, 0x54, 0x4c, 0x44, 0x50, 0x78, 0x6e, 0x39, 0x77, 0x73, 0x59, 0x54, 0x77, 0x61, 0x50, 0x33, 0x42, 0x56, 0x6d, 0x36, 0x30, 0x41, 0x55, 0x6e, 0x2f, 0x50, 0x42, 0x4c, 0x6e, 0x2b, 0x4e, 0x76, 0x71, 0x63, 0x77, 0x42, 0x61, 0x75, 0x59, 0x76, 0x36, 0x57, 0x54, 0x45, 0x4e, 0x2b, 0x56, 0x52, 0x53, 0x2b, 0x47, 0x72, 0x50, 0x53, 0x62, 0x63, 0x4b, 0x76, 0x64, 0x6d, 0x61, 0x56, 0x61, 0x79, 0x71, 0x77, 0x6c, 0x48, 0x65, 0x46, 0x0a, 0x58, 0x67, 0x51, 0x50, 0x59, 0x68, 0x31, 0x6a, 0x64, 0x66, 0x64, 0x72, 0x35, 0x38, 0x74, 0x62, 0x6d, 0x6e, 0x44, 0x73, 0x50, 0x6d, 0x63, 0x46, 0x38, 0x50, 0x34, 0x48, 0x43, 0x49, 0x44, 0x50, 0x4b, 0x4e, 0x73, 0x46, 0x78, 0x68, 0x51, 0x6e, 0x4c, 0x34, 0x5a, 0x39, 0x38, 0x43, 0x66, 0x65, 0x2f, 0x2b, 0x5a, 0x2b, 0x4d, 0x30, 0x6a, 0x6e, 0x43, 0x78, 0x35, 0x59, 0x30, 0x53, 0x63, 0x72, 0x55, 0x77, 0x35, 0x58, 0x53, 0x6d, 0x58, 0x58, 0x2b, 0x36, 0x4b, 0x41, 0x0a, 0x59, 0x50, 0x78, 0x4d, 0x76, 0x44, 0x56, 0x54, 0x41, 0x57, 0x71, 0x58, 0x63, 0x6f, 0x4b, 0x76, 0x38, 0x52, 0x31, 0x77, 0x36, 0x4a, 0x7a, 0x31, 0x37, 0x31, 0x37, 0x43, 0x62, 0x4d, 0x64, 0x48, 0x66, 0x6c, 0x71, 0x55, 0x68, 0x53, 0x5a, 0x4e, 0x4f, 0x37, 0x72, 0x72, 0x54, 0x4f, 0x69, 0x77, 0x43, 0x63, 0x4a, 0x6c, 0x77, 0x70, 0x32, 0x64, 0x43, 0x5a, 0x74, 0x4f, 0x74, 0x5a, 0x63, 0x46, 0x72, 0x50, 0x55, 0x47, 0x6f, 0x50, 0x63, 0x32, 0x42, 0x58, 0x37, 0x30, 0x0a, 0x6b, 0x4c, 0x4a, 0x72, 0x78, 0x4c, 0x54, 0x35, 0x5a, 0x4f, 0x72, 0x70, 0x47, 0x67, 0x72, 0x49, 0x44, 0x61, 0x6a, 0x74, 0x4a, 0x38, 0x6e, 0x55, 0x35, 0x37, 0x4f, 0x35, 0x71, 0x34, 0x49, 0x69, 0x6b, 0x43, 0x63, 0x39, 0x4b, 0x75, 0x68, 0x38, 0x6b, 0x4f, 0x2b, 0x38, 0x54, 0x2f, 0x33, 0x69, 0x43, 0x69, 0x53, 0x6e, 0x33, 0x6d, 0x55, 0x6b, 0x70, 0x46, 0x33, 0x71, 0x77, 0x48, 0x59, 0x77, 0x30, 0x33, 0x64, 0x51, 0x2b, 0x41, 0x30, 0x45, 0x6d, 0x35, 0x51, 0x32, 0x0a, 0x41, 0x58, 0x50, 0x4b, 0x42, 0x6c, 0x69, 0x6d, 0x30, 0x7a, 0x76, 0x63, 0x2b, 0x67, 0x52, 0x47, 0x45, 0x31, 0x57, 0x4b, 0x79, 0x55, 0x52, 0x48, 0x75, 0x46, 0x45, 0x35, 0x47, 0x69, 0x37, 0x6f, 0x4e, 0x4f, 0x4a, 0x35, 0x79, 0x31, 0x6c, 0x4b, 0x43, 0x6e, 0x2b, 0x38, 0x70, 0x75, 0x38, 0x66, 0x41, 0x32, 0x64, 0x71, 0x57, 0x53, 0x73, 0x6c, 0x59, 0x70, 0x50, 0x5a, 0x55, 0x78, 0x6c, 0x6d, 0x50, 0x43, 0x64, 0x69, 0x4b, 0x59, 0x5a, 0x4e, 0x70, 0x47, 0x76, 0x75, 0x0a, 0x2f, 0x39, 0x52, 0x4f, 0x75, 0x74, 0x57, 0x30, 0x34, 0x6f, 0x35, 0x49, 0x57, 0x67, 0x41, 0x5a, 0x43, 0x66, 0x45, 0x46, 0x32, 0x63, 0x36, 0x52, 0x73, 0x66, 0x66, 0x72, 0x36, 0x54, 0x6c, 0x50, 0x39, 0x6d, 0x38, 0x45, 0x51, 0x35, 0x70, 0x56, 0x39, 0x54, 0x34, 0x46, 0x46, 0x4c, 0x32, 0x2f, 0x73, 0x31, 0x6d, 0x30, 0x32, 0x49, 0x34, 0x7a, 0x68, 0x4b, 0x4f, 0x51, 0x55, 0x71, 0x71, 0x7a, 0x41, 0x70, 0x56, 0x67, 0x2b, 0x51, 0x78, 0x4d, 0x61, 0x50, 0x6e, 0x75, 0x0a, 0x31, 0x52, 0x63, 0x4e, 0x2b, 0x48, 0x46, 0x58, 0x74, 0x53, 0x58, 0x6b, 0x4b, 0x65, 0x35, 0x6c, 0x58, 0x61, 0x2f, 0x52, 0x37, 0x6a, 0x77, 0x58, 0x43, 0x31, 0x70, 0x44, 0x78, 0x61, 0x57, 0x47, 0x36, 0x69, 0x53, 0x65, 0x34, 0x67, 0x55, 0x48, 0x33, 0x44, 0x52, 0x43, 0x45, 0x70, 0x48, 0x57, 0x4f, 0x58, 0x53, 0x75, 0x54, 0x45, 0x47, 0x43, 0x32, 0x2f, 0x4b, 0x6d, 0x53, 0x4e, 0x47, 0x7a, 0x6d, 0x2f, 0x4d, 0x7a, 0x71, 0x76, 0x4f, 0x6d, 0x77, 0x4d, 0x56, 0x4f, 0x0a, 0x39, 0x66, 0x53, 0x64, 0x64, 0x6d, 0x50, 0x6d, 0x41, 0x73, 0x59, 0x69, 0x53, 0x38, 0x47, 0x56, 0x50, 0x31, 0x42, 0x6b, 0x4c, 0x46, 0x54, 0x6c, 0x74, 0x76, 0x41, 0x38, 0x4b, 0x63, 0x39, 0x58, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x55, 0x59, 0x6e, 0x42, 0x6a, 0x38, 0x58, 0x57, 0x45, 0x51, 0x31, 0x69, 0x4f, 0x30, 0x52, 0x59, 0x67, 0x0a, 0x73, 0x63, 0x61, 0x73, 0x47, 0x72, 0x7a, 0x32, 0x69, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x0a, 0x41, 0x67, 0x45, 0x41, 0x4b, 0x62, 0x71, 0x53, 0x53, 0x61, 0x65, 0x74, 0x38, 0x50, 0x46, 0x77, 0x77, 0x2b, 0x53, 0x58, 0x38, 0x4a, 0x2b, 0x70, 0x4a, 0x64, 0x56, 0x72, 0x6e, 0x6a, 0x54, 0x2b, 0x35, 0x68, 0x70, 0x6b, 0x39, 0x6a, 0x70, 0x72, 0x55, 0x72, 0x49, 0x51, 0x65, 0x42, 0x71, 0x66, 0x54, 0x4e, 0x71, 0x4b, 0x32, 0x75, 0x77, 0x63, 0x4e, 0x31, 0x4c, 0x67, 0x51, 0x6b, 0x76, 0x37, 0x62, 0x48, 0x62, 0x4b, 0x4a, 0x41, 0x73, 0x35, 0x45, 0x68, 0x57, 0x64, 0x0a, 0x6e, 0x78, 0x45, 0x74, 0x2f, 0x48, 0x6c, 0x6b, 0x33, 0x4f, 0x44, 0x67, 0x39, 0x64, 0x33, 0x67, 0x56, 0x38, 0x6d, 0x6c, 0x73, 0x6e, 0x5a, 0x77, 0x55, 0x4b, 0x54, 0x2b, 0x74, 0x77, 0x70, 0x77, 0x31, 0x61, 0x41, 0x30, 0x38, 0x58, 0x58, 0x58, 0x54, 0x55, 0x6d, 0x36, 0x45, 0x64, 0x47, 0x7a, 0x32, 0x4f, 0x79, 0x43, 0x2f, 0x2b, 0x73, 0x4f, 0x78, 0x4c, 0x39, 0x6b, 0x4c, 0x58, 0x31, 0x6a, 0x62, 0x68, 0x64, 0x34, 0x37, 0x46, 0x31, 0x38, 0x69, 0x4d, 0x6a, 0x72, 0x0a, 0x6a, 0x6c, 0x64, 0x32, 0x32, 0x56, 0x6b, 0x45, 0x2b, 0x72, 0x78, 0x53, 0x48, 0x30, 0x57, 0x73, 0x38, 0x48, 0x71, 0x41, 0x37, 0x4f, 0x78, 0x76, 0x64, 0x71, 0x36, 0x52, 0x32, 0x78, 0x43, 0x4f, 0x42, 0x4e, 0x79, 0x53, 0x33, 0x36, 0x44, 0x32, 0x35, 0x71, 0x35, 0x4a, 0x30, 0x38, 0x46, 0x73, 0x45, 0x68, 0x76, 0x4d, 0x4b, 0x61, 0x72, 0x35, 0x43, 0x4b, 0x58, 0x69, 0x4e, 0x78, 0x54, 0x4b, 0x73, 0x62, 0x68, 0x6d, 0x37, 0x78, 0x71, 0x43, 0x35, 0x50, 0x44, 0x34, 0x0a, 0x38, 0x61, 0x63, 0x57, 0x61, 0x62, 0x66, 0x62, 0x71, 0x57, 0x45, 0x38, 0x6e, 0x2f, 0x55, 0x78, 0x79, 0x2b, 0x51, 0x41, 0x52, 0x73, 0x49, 0x76, 0x64, 0x4c, 0x47, 0x78, 0x31, 0x34, 0x48, 0x75, 0x71, 0x43, 0x61, 0x56, 0x76, 0x49, 0x69, 0x76, 0x54, 0x44, 0x55, 0x48, 0x4b, 0x67, 0x4c, 0x4b, 0x65, 0x42, 0x52, 0x74, 0x52, 0x79, 0x74, 0x41, 0x56, 0x75, 0x6e, 0x4c, 0x4b, 0x6d, 0x43, 0x68, 0x5a, 0x77, 0x4f, 0x67, 0x7a, 0x6f, 0x79, 0x38, 0x73, 0x48, 0x4a, 0x6e, 0x0a, 0x78, 0x44, 0x48, 0x4f, 0x32, 0x7a, 0x54, 0x6c, 0x4a, 0x51, 0x4e, 0x67, 0x4a, 0x58, 0x74, 0x78, 0x6d, 0x4f, 0x54, 0x41, 0x47, 0x79, 0x74, 0x66, 0x64, 0x45, 0x4c, 0x53, 0x53, 0x38, 0x56, 0x5a, 0x43, 0x41, 0x65, 0x48, 0x76, 0x73, 0x58, 0x44, 0x66, 0x2b, 0x65, 0x57, 0x32, 0x65, 0x48, 0x63, 0x4b, 0x4a, 0x66, 0x57, 0x6a, 0x77, 0x58, 0x6a, 0x39, 0x5a, 0x74, 0x4f, 0x79, 0x68, 0x31, 0x51, 0x52, 0x77, 0x56, 0x54, 0x73, 0x4d, 0x6f, 0x35, 0x35, 0x34, 0x57, 0x67, 0x0a, 0x69, 0x63, 0x45, 0x46, 0x4f, 0x77, 0x45, 0x33, 0x30, 0x7a, 0x39, 0x4a, 0x34, 0x6e, 0x66, 0x72, 0x49, 0x38, 0x69, 0x49, 0x5a, 0x6a, 0x73, 0x39, 0x4f, 0x58, 0x59, 0x68, 0x52, 0x76, 0x48, 0x73, 0x58, 0x79, 0x4f, 0x34, 0x36, 0x36, 0x4a, 0x6d, 0x64, 0x58, 0x54, 0x42, 0x51, 0x50, 0x66, 0x59, 0x61, 0x4a, 0x71, 0x54, 0x34, 0x69, 0x32, 0x70, 0x4c, 0x72, 0x30, 0x63, 0x6f, 0x78, 0x37, 0x49, 0x64, 0x4d, 0x61, 0x6b, 0x4c, 0x58, 0x6f, 0x67, 0x71, 0x7a, 0x75, 0x34, 0x0a, 0x73, 0x45, 0x62, 0x39, 0x62, 0x39, 0x31, 0x66, 0x55, 0x6c, 0x56, 0x31, 0x59, 0x76, 0x43, 0x58, 0x6f, 0x48, 0x7a, 0x58, 0x4f, 0x50, 0x30, 0x6c, 0x33, 0x38, 0x32, 0x67, 0x6d, 0x78, 0x44, 0x50, 0x69, 0x37, 0x67, 0x34, 0x58, 0x6c, 0x37, 0x46, 0x74, 0x4b, 0x59, 0x43, 0x4e, 0x71, 0x45, 0x65, 0x58, 0x78, 0x7a, 0x50, 0x34, 0x70, 0x61, 0x64, 0x4b, 0x61, 0x72, 0x39, 0x6d, 0x4b, 0x35, 0x53, 0x34, 0x66, 0x4e, 0x42, 0x55, 0x76, 0x75, 0x70, 0x4c, 0x6e, 0x4b, 0x57, 0x0a, 0x6e, 0x79, 0x66, 0x6a, 0x71, 0x6e, 0x4e, 0x39, 0x2b, 0x42, 0x6f, 0x6a, 0x5a, 0x6e, 0x73, 0x37, 0x71, 0x32, 0x57, 0x77, 0x4d, 0x67, 0x46, 0x4c, 0x46, 0x54, 0x34, 0x39, 0x6f, 0x6b, 0x38, 0x4d, 0x4b, 0x7a, 0x57, 0x69, 0x78, 0x74, 0x6c, 0x6e, 0x45, 0x6a, 0x55, 0x77, 0x7a, 0x58, 0x59, 0x75, 0x46, 0x72, 0x4f, 0x5a, 0x6e, 0x6b, 0x31, 0x50, 0x54, 0x69, 0x30, 0x37, 0x4e, 0x45, 0x50, 0x68, 0x6d, 0x67, 0x34, 0x4e, 0x70, 0x47, 0x61, 0x58, 0x75, 0x74, 0x49, 0x63, 0x0a, 0x53, 0x6b, 0x77, 0x73, 0x4b, 0x6f, 0x75, 0x4c, 0x67, 0x55, 0x39, 0x78, 0x47, 0x71, 0x6e, 0x64, 0x58, 0x48, 0x74, 0x37, 0x43, 0x4d, 0x55, 0x41, 0x44, 0x54, 0x64, 0x41, 0x34, 0x33, 0x78, 0x37, 0x56, 0x46, 0x38, 0x76, 0x68, 0x56, 0x39, 0x32, 0x39, 0x76, 0x65, 0x6e, 0x73, 0x42, 0x78, 0x58, 0x56, 0x73, 0x46, 0x79, 0x36, 0x4b, 0x32, 0x69, 0x72, 0x34, 0x30, 0x7a, 0x53, 0x62, 0x6f, 0x66, 0x69, 0x74, 0x7a, 0x6d, 0x64, 0x48, 0x78, 0x67, 0x68, 0x6d, 0x2b, 0x48, 0x0a, 0x6c, 0x33, 0x73, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x49, 0x53, 0x52, 0x47, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x58, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x47, 0x7a, 0x43, 0x43, 0x41, 0x61, 0x47, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x51, 0x64, 0x4b, 0x64, 0x30, 0x58, 0x4c, 0x71, 0x37, 0x71, 0x65, 0x41, 0x77, 0x53, 0x78, 0x73, 0x36, 0x53, 0x2b, 0x48, 0x55, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x50, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x70, 0x4d, 0x43, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x67, 0x53, 0x57, 0x35, 0x30, 0x5a, 0x58, 0x4a, 0x75, 0x5a, 0x58, 0x51, 0x67, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x58, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x55, 0x6d, 0x56, 0x7a, 0x5a, 0x57, 0x46, 0x79, 0x59, 0x32, 0x67, 0x67, 0x52, 0x33, 0x4a, 0x76, 0x64, 0x58, 0x41, 0x78, 0x46, 0x54, 0x41, 0x54, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x44, 0x45, 0x6c, 0x54, 0x0a, 0x55, 0x6b, 0x63, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x59, 0x4d, 0x6a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x79, 0x4d, 0x44, 0x41, 0x35, 0x4d, 0x44, 0x51, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x44, 0x41, 0x35, 0x4d, 0x54, 0x63, 0x78, 0x4e, 0x6a, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x4d, 0x45, 0x38, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x0a, 0x4d, 0x53, 0x6b, 0x77, 0x4a, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x79, 0x42, 0x4a, 0x62, 0x6e, 0x52, 0x6c, 0x63, 0x6d, 0x35, 0x6c, 0x64, 0x43, 0x42, 0x54, 0x5a, 0x57, 0x4e, 0x31, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x42, 0x53, 0x5a, 0x58, 0x4e, 0x6c, 0x59, 0x58, 0x4a, 0x6a, 0x61, 0x43, 0x42, 0x48, 0x63, 0x6d, 0x39, 0x31, 0x63, 0x44, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x4d, 0x53, 0x56, 0x4e, 0x53, 0x0a, 0x52, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x46, 0x67, 0x79, 0x4d, 0x48, 0x59, 0x77, 0x45, 0x41, 0x59, 0x48, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x43, 0x41, 0x51, 0x59, 0x46, 0x4b, 0x34, 0x45, 0x45, 0x41, 0x43, 0x49, 0x44, 0x59, 0x67, 0x41, 0x45, 0x7a, 0x5a, 0x76, 0x56, 0x6e, 0x34, 0x43, 0x44, 0x43, 0x75, 0x77, 0x4a, 0x53, 0x76, 0x4d, 0x57, 0x53, 0x6a, 0x35, 0x63, 0x7a, 0x33, 0x65, 0x73, 0x33, 0x6d, 0x63, 0x46, 0x44, 0x52, 0x30, 0x48, 0x0a, 0x74, 0x74, 0x77, 0x57, 0x2b, 0x31, 0x71, 0x4c, 0x46, 0x4e, 0x76, 0x69, 0x63, 0x57, 0x44, 0x45, 0x75, 0x6b, 0x57, 0x56, 0x45, 0x59, 0x6d, 0x4f, 0x36, 0x67, 0x62, 0x66, 0x39, 0x79, 0x6f, 0x57, 0x48, 0x4b, 0x53, 0x35, 0x78, 0x63, 0x55, 0x79, 0x34, 0x41, 0x50, 0x67, 0x48, 0x6f, 0x49, 0x59, 0x4f, 0x49, 0x76, 0x58, 0x52, 0x64, 0x67, 0x4b, 0x61, 0x6d, 0x37, 0x6d, 0x41, 0x48, 0x66, 0x37, 0x41, 0x6c, 0x46, 0x39, 0x49, 0x74, 0x67, 0x4b, 0x62, 0x70, 0x70, 0x62, 0x0a, 0x64, 0x39, 0x2f, 0x77, 0x2b, 0x6b, 0x48, 0x73, 0x4f, 0x64, 0x78, 0x31, 0x79, 0x6d, 0x67, 0x48, 0x44, 0x42, 0x2f, 0x71, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x66, 0x45, 0x4b, 0x57, 0x72, 0x74, 0x35, 0x4c, 0x53, 0x44, 0x76, 0x36, 0x6b, 0x76, 0x69, 0x65, 0x6a, 0x4d, 0x39, 0x74, 0x69, 0x36, 0x6c, 0x79, 0x4e, 0x35, 0x55, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x4d, 0x44, 0x61, 0x41, 0x41, 0x77, 0x5a, 0x51, 0x49, 0x77, 0x65, 0x33, 0x6c, 0x4f, 0x52, 0x6c, 0x43, 0x45, 0x77, 0x6b, 0x53, 0x48, 0x52, 0x68, 0x74, 0x46, 0x0a, 0x63, 0x50, 0x39, 0x59, 0x6d, 0x64, 0x37, 0x30, 0x2f, 0x61, 0x54, 0x53, 0x56, 0x61, 0x59, 0x67, 0x4c, 0x58, 0x54, 0x57, 0x4e, 0x4c, 0x78, 0x42, 0x6f, 0x31, 0x42, 0x66, 0x41, 0x53, 0x64, 0x57, 0x74, 0x4c, 0x34, 0x6e, 0x64, 0x51, 0x61, 0x76, 0x45, 0x69, 0x35, 0x31, 0x6d, 0x49, 0x33, 0x38, 0x41, 0x6a, 0x45, 0x41, 0x69, 0x2f, 0x56, 0x33, 0x62, 0x4e, 0x54, 0x49, 0x5a, 0x61, 0x72, 0x67, 0x43, 0x79, 0x7a, 0x75, 0x46, 0x4a, 0x30, 0x6e, 0x4e, 0x36, 0x54, 0x35, 0x0a, 0x55, 0x36, 0x56, 0x52, 0x35, 0x43, 0x6d, 0x44, 0x31, 0x2f, 0x69, 0x51, 0x4d, 0x56, 0x74, 0x43, 0x6e, 0x77, 0x72, 0x31, 0x2f, 0x71, 0x34, 0x41, 0x61, 0x4f, 0x65, 0x4d, 0x53, 0x51, 0x2b, 0x32, 0x62, 0x31, 0x74, 0x62, 0x46, 0x66, 0x4c, 0x6e, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x48, 0x69, 0x50, 0x4b, 0x49, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x61, 0x6a, 0x43, 0x43, 0x41, 0x31, 0x4b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x4c, 0x64, 0x32, 0x73, 0x7a, 0x6d, 0x4b, 0x58, 0x6c, 0x4b, 0x46, 0x44, 0x36, 0x4c, 0x44, 0x4e, 0x64, 0x6d, 0x70, 0x65, 0x59, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x50, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x55, 0x56, 0x7a, 0x45, 0x6a, 0x4d, 0x43, 0x45, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x61, 0x51, 0x32, 0x68, 0x31, 0x62, 0x6d, 0x64, 0x6f, 0x64, 0x32, 0x45, 0x67, 0x56, 0x47, 0x56, 0x73, 0x5a, 0x57, 0x4e, 0x76, 0x62, 0x53, 0x42, 0x44, 0x62, 0x79, 0x34, 0x73, 0x49, 0x45, 0x78, 0x30, 0x5a, 0x43, 0x34, 0x78, 0x47, 0x7a, 0x41, 0x5a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x45, 0x6b, 0x68, 0x70, 0x55, 0x45, 0x74, 0x4a, 0x0a, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4c, 0x53, 0x42, 0x48, 0x4d, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4f, 0x54, 0x41, 0x79, 0x4d, 0x6a, 0x49, 0x77, 0x4f, 0x54, 0x51, 0x32, 0x4d, 0x44, 0x52, 0x61, 0x46, 0x77, 0x30, 0x7a, 0x4e, 0x7a, 0x45, 0x79, 0x4d, 0x7a, 0x45, 0x78, 0x4e, 0x54, 0x55, 0x35, 0x4e, 0x54, 0x6c, 0x61, 0x4d, 0x45, 0x38, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x0a, 0x41, 0x6c, 0x52, 0x58, 0x4d, 0x53, 0x4d, 0x77, 0x49, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x42, 0x70, 0x44, 0x61, 0x48, 0x56, 0x75, 0x5a, 0x32, 0x68, 0x33, 0x59, 0x53, 0x42, 0x55, 0x5a, 0x57, 0x78, 0x6c, 0x59, 0x32, 0x39, 0x74, 0x49, 0x45, 0x4e, 0x76, 0x4c, 0x69, 0x77, 0x67, 0x54, 0x48, 0x52, 0x6b, 0x4c, 0x6a, 0x45, 0x62, 0x4d, 0x42, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x53, 0x53, 0x47, 0x6c, 0x51, 0x53, 0x30, 0x6b, 0x67, 0x0a, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x74, 0x49, 0x45, 0x63, 0x78, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x45, 0x41, 0x39, 0x42, 0x35, 0x2f, 0x55, 0x6e, 0x4d, 0x79, 0x44, 0x48, 0x50, 0x6b, 0x76, 0x52, 0x4e, 0x30, 0x0a, 0x6f, 0x39, 0x51, 0x77, 0x71, 0x4e, 0x43, 0x75, 0x53, 0x39, 0x69, 0x32, 0x33, 0x33, 0x56, 0x48, 0x5a, 0x76, 0x52, 0x38, 0x35, 0x7a, 0x6b, 0x45, 0x48, 0x6d, 0x70, 0x77, 0x49, 0x4e, 0x4a, 0x61, 0x52, 0x33, 0x4a, 0x6e, 0x56, 0x66, 0x53, 0x6c, 0x36, 0x4a, 0x33, 0x56, 0x48, 0x69, 0x47, 0x68, 0x38, 0x47, 0x65, 0x36, 0x7a, 0x43, 0x46, 0x6f, 0x76, 0x6b, 0x52, 0x54, 0x76, 0x34, 0x33, 0x35, 0x34, 0x74, 0x77, 0x76, 0x56, 0x63, 0x67, 0x33, 0x50, 0x78, 0x2b, 0x6b, 0x0a, 0x77, 0x4a, 0x79, 0x7a, 0x35, 0x48, 0x64, 0x63, 0x6f, 0x45, 0x62, 0x2b, 0x64, 0x2f, 0x6f, 0x61, 0x6f, 0x44, 0x6a, 0x71, 0x37, 0x5a, 0x70, 0x79, 0x33, 0x69, 0x75, 0x39, 0x6c, 0x46, 0x63, 0x36, 0x75, 0x75, 0x78, 0x35, 0x35, 0x31, 0x39, 0x39, 0x51, 0x6d, 0x51, 0x35, 0x65, 0x69, 0x59, 0x32, 0x39, 0x79, 0x54, 0x77, 0x31, 0x53, 0x2b, 0x36, 0x6c, 0x5a, 0x67, 0x52, 0x5a, 0x71, 0x32, 0x58, 0x4e, 0x64, 0x5a, 0x31, 0x41, 0x59, 0x44, 0x67, 0x72, 0x2f, 0x53, 0x45, 0x0a, 0x59, 0x59, 0x77, 0x4e, 0x48, 0x6c, 0x39, 0x38, 0x68, 0x35, 0x5a, 0x65, 0x51, 0x61, 0x2f, 0x72, 0x68, 0x2b, 0x72, 0x34, 0x58, 0x66, 0x45, 0x75, 0x69, 0x41, 0x55, 0x2b, 0x54, 0x43, 0x4b, 0x37, 0x32, 0x68, 0x38, 0x71, 0x33, 0x56, 0x4a, 0x47, 0x5a, 0x44, 0x6e, 0x7a, 0x51, 0x73, 0x37, 0x5a, 0x6e, 0x67, 0x79, 0x7a, 0x73, 0x48, 0x65, 0x58, 0x5a, 0x4a, 0x7a, 0x41, 0x39, 0x4b, 0x4d, 0x75, 0x48, 0x35, 0x55, 0x48, 0x73, 0x42, 0x66, 0x66, 0x4d, 0x4e, 0x73, 0x41, 0x0a, 0x47, 0x4a, 0x5a, 0x4d, 0x6f, 0x59, 0x46, 0x4c, 0x33, 0x51, 0x52, 0x74, 0x55, 0x36, 0x4d, 0x39, 0x2f, 0x41, 0x65, 0x73, 0x31, 0x4d, 0x55, 0x33, 0x67, 0x75, 0x76, 0x6b, 0x6c, 0x51, 0x67, 0x5a, 0x4b, 0x49, 0x4c, 0x53, 0x51, 0x6a, 0x71, 0x6a, 0x32, 0x46, 0x50, 0x73, 0x65, 0x59, 0x6c, 0x67, 0x53, 0x47, 0x44, 0x49, 0x63, 0x70, 0x4a, 0x51, 0x33, 0x41, 0x4f, 0x50, 0x67, 0x7a, 0x2b, 0x79, 0x51, 0x6c, 0x64, 0x61, 0x32, 0x32, 0x72, 0x70, 0x45, 0x5a, 0x66, 0x64, 0x0a, 0x68, 0x53, 0x69, 0x38, 0x4d, 0x45, 0x79, 0x72, 0x34, 0x38, 0x4b, 0x78, 0x52, 0x55, 0x52, 0x48, 0x48, 0x2b, 0x43, 0x4b, 0x46, 0x67, 0x65, 0x57, 0x30, 0x69, 0x45, 0x50, 0x55, 0x38, 0x44, 0x74, 0x71, 0x58, 0x37, 0x55, 0x54, 0x75, 0x79, 0x62, 0x43, 0x65, 0x79, 0x76, 0x51, 0x71, 0x77, 0x77, 0x31, 0x72, 0x2f, 0x52, 0x45, 0x45, 0x58, 0x67, 0x70, 0x68, 0x61, 0x79, 0x70, 0x63, 0x58, 0x54, 0x54, 0x33, 0x4f, 0x55, 0x4d, 0x33, 0x45, 0x43, 0x6f, 0x57, 0x71, 0x6a, 0x0a, 0x31, 0x6a, 0x4f, 0x58, 0x54, 0x79, 0x46, 0x6a, 0x48, 0x6c, 0x75, 0x50, 0x32, 0x63, 0x46, 0x65, 0x52, 0x58, 0x46, 0x33, 0x44, 0x34, 0x46, 0x64, 0x58, 0x79, 0x47, 0x61, 0x72, 0x59, 0x50, 0x4d, 0x2b, 0x6c, 0x37, 0x57, 0x6a, 0x53, 0x4e, 0x66, 0x47, 0x7a, 0x31, 0x42, 0x72, 0x79, 0x42, 0x31, 0x5a, 0x6c, 0x70, 0x4b, 0x39, 0x70, 0x2f, 0x37, 0x71, 0x78, 0x6a, 0x33, 0x63, 0x63, 0x43, 0x32, 0x48, 0x54, 0x48, 0x73, 0x4f, 0x79, 0x44, 0x72, 0x79, 0x2b, 0x4b, 0x34, 0x0a, 0x39, 0x61, 0x36, 0x53, 0x73, 0x76, 0x66, 0x68, 0x68, 0x45, 0x76, 0x79, 0x6f, 0x76, 0x4b, 0x54, 0x6d, 0x69, 0x4b, 0x65, 0x30, 0x78, 0x52, 0x76, 0x4e, 0x6c, 0x53, 0x39, 0x48, 0x31, 0x35, 0x5a, 0x46, 0x62, 0x6c, 0x7a, 0x71, 0x4d, 0x46, 0x38, 0x62, 0x33, 0x74, 0x69, 0x36, 0x52, 0x5a, 0x73, 0x52, 0x31, 0x70, 0x6c, 0x38, 0x77, 0x34, 0x52, 0x6d, 0x30, 0x62, 0x5a, 0x2f, 0x57, 0x33, 0x63, 0x31, 0x70, 0x7a, 0x41, 0x74, 0x48, 0x32, 0x6c, 0x73, 0x4e, 0x30, 0x2f, 0x0a, 0x56, 0x6d, 0x2b, 0x68, 0x2b, 0x66, 0x62, 0x6b, 0x45, 0x6b, 0x6a, 0x39, 0x42, 0x6e, 0x38, 0x53, 0x56, 0x37, 0x61, 0x70, 0x49, 0x30, 0x39, 0x62, 0x41, 0x38, 0x50, 0x67, 0x63, 0x53, 0x6f, 0x6a, 0x74, 0x2f, 0x65, 0x77, 0x73, 0x54, 0x75, 0x38, 0x6d, 0x4c, 0x33, 0x57, 0x6d, 0x4b, 0x67, 0x4d, 0x61, 0x2f, 0x61, 0x4f, 0x45, 0x6d, 0x65, 0x6d, 0x38, 0x72, 0x4a, 0x59, 0x35, 0x41, 0x49, 0x4a, 0x45, 0x7a, 0x79, 0x70, 0x75, 0x78, 0x43, 0x30, 0x30, 0x6a, 0x42, 0x46, 0x0a, 0x38, 0x65, 0x7a, 0x33, 0x41, 0x42, 0x48, 0x66, 0x5a, 0x66, 0x6a, 0x63, 0x4b, 0x30, 0x4e, 0x56, 0x76, 0x78, 0x61, 0x58, 0x78, 0x41, 0x2f, 0x56, 0x4c, 0x47, 0x47, 0x45, 0x71, 0x6e, 0x4b, 0x47, 0x2f, 0x75, 0x59, 0x36, 0x66, 0x73, 0x49, 0x2f, 0x66, 0x65, 0x37, 0x38, 0x4c, 0x78, 0x51, 0x2b, 0x35, 0x6f, 0x58, 0x64, 0x55, 0x47, 0x2b, 0x33, 0x53, 0x65, 0x30, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x0a, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x38, 0x6e, 0x63, 0x58, 0x2b, 0x6c, 0x36, 0x6f, 0x2f, 0x76, 0x59, 0x39, 0x63, 0x64, 0x56, 0x6f, 0x75, 0x73, 0x6c, 0x47, 0x44, 0x44, 0x6a, 0x59, 0x72, 0x37, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x0a, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x41, 0x51, 0x42, 0x51, 0x55, 0x66, 0x42, 0x31, 0x33, 0x48, 0x41, 0x45, 0x34, 0x2f, 0x2b, 0x71, 0x64, 0x64, 0x52, 0x78, 0x6f, 0x73, 0x75, 0x65, 0x6a, 0x36, 0x69, 0x70, 0x30, 0x36, 0x39, 0x31, 0x78, 0x31, 0x54, 0x50, 0x4f, 0x68, 0x77, 0x45, 0x6d, 0x53, 0x4b, 0x73, 0x78, 0x42, 0x48, 0x69, 0x0a, 0x37, 0x7a, 0x4e, 0x4b, 0x70, 0x69, 0x4d, 0x64, 0x44, 0x67, 0x31, 0x48, 0x32, 0x44, 0x66, 0x48, 0x62, 0x36, 0x38, 0x30, 0x66, 0x30, 0x2b, 0x42, 0x61, 0x7a, 0x56, 0x50, 0x36, 0x58, 0x4b, 0x6c, 0x4d, 0x65, 0x4a, 0x34, 0x35, 0x2f, 0x64, 0x4f, 0x6c, 0x42, 0x68, 0x62, 0x51, 0x48, 0x33, 0x50, 0x61, 0x79, 0x46, 0x55, 0x68, 0x75, 0x61, 0x56, 0x65, 0x76, 0x76, 0x47, 0x79, 0x75, 0x71, 0x63, 0x53, 0x45, 0x35, 0x58, 0x43, 0x56, 0x30, 0x76, 0x72, 0x50, 0x53, 0x6c, 0x0a, 0x74, 0x4a, 0x63, 0x7a, 0x57, 0x4e, 0x57, 0x73, 0x65, 0x61, 0x6e, 0x4d, 0x58, 0x2f, 0x6d, 0x46, 0x2b, 0x6c, 0x4c, 0x46, 0x6a, 0x66, 0x69, 0x52, 0x46, 0x4f, 0x73, 0x36, 0x44, 0x52, 0x66, 0x51, 0x55, 0x73, 0x4a, 0x37, 0x34, 0x38, 0x4a, 0x7a, 0x6a, 0x6b, 0x5a, 0x34, 0x42, 0x6a, 0x67, 0x73, 0x36, 0x46, 0x7a, 0x61, 0x5a, 0x73, 0x54, 0x30, 0x70, 0x50, 0x42, 0x57, 0x47, 0x54, 0x4d, 0x70, 0x57, 0x6d, 0x57, 0x53, 0x42, 0x55, 0x64, 0x47, 0x53, 0x71, 0x75, 0x45, 0x0a, 0x77, 0x78, 0x34, 0x6e, 0x6f, 0x52, 0x38, 0x52, 0x6b, 0x70, 0x6b, 0x6e, 0x64, 0x5a, 0x4d, 0x50, 0x76, 0x44, 0x59, 0x37, 0x6c, 0x31, 0x65, 0x50, 0x4a, 0x6c, 0x73, 0x4d, 0x75, 0x35, 0x77, 0x50, 0x31, 0x47, 0x34, 0x77, 0x42, 0x39, 0x54, 0x63, 0x58, 0x7a, 0x5a, 0x6f, 0x5a, 0x6a, 0x6d, 0x44, 0x6c, 0x69, 0x63, 0x6d, 0x69, 0x73, 0x6a, 0x45, 0x4f, 0x66, 0x36, 0x61, 0x49, 0x57, 0x2f, 0x56, 0x63, 0x6f, 0x62, 0x70, 0x66, 0x32, 0x4c, 0x6c, 0x6c, 0x30, 0x37, 0x51, 0x0a, 0x4a, 0x4e, 0x42, 0x41, 0x73, 0x4e, 0x42, 0x31, 0x43, 0x49, 0x36, 0x39, 0x61, 0x4f, 0x34, 0x49, 0x31, 0x32, 0x35, 0x38, 0x45, 0x48, 0x42, 0x47, 0x47, 0x33, 0x7a, 0x67, 0x69, 0x4c, 0x4b, 0x65, 0x63, 0x6f, 0x61, 0x5a, 0x41, 0x65, 0x4f, 0x2f, 0x6e, 0x30, 0x6b, 0x5a, 0x74, 0x43, 0x57, 0x2b, 0x56, 0x6d, 0x57, 0x75, 0x46, 0x32, 0x50, 0x6c, 0x48, 0x74, 0x2f, 0x6f, 0x2f, 0x30, 0x65, 0x6c, 0x76, 0x2b, 0x45, 0x6d, 0x42, 0x59, 0x54, 0x6b, 0x73, 0x4d, 0x43, 0x76, 0x0a, 0x35, 0x77, 0x69, 0x5a, 0x71, 0x41, 0x78, 0x65, 0x4a, 0x6f, 0x42, 0x46, 0x31, 0x50, 0x68, 0x6f, 0x4c, 0x35, 0x61, 0x50, 0x72, 0x75, 0x4a, 0x4b, 0x48, 0x4a, 0x77, 0x57, 0x44, 0x42, 0x4e, 0x76, 0x4f, 0x49, 0x66, 0x32, 0x75, 0x38, 0x67, 0x30, 0x58, 0x35, 0x49, 0x44, 0x55, 0x58, 0x6c, 0x77, 0x70, 0x74, 0x2f, 0x4c, 0x39, 0x5a, 0x6c, 0x4e, 0x65, 0x63, 0x31, 0x4f, 0x76, 0x46, 0x65, 0x66, 0x51, 0x30, 0x35, 0x72, 0x4c, 0x69, 0x73, 0x59, 0x2b, 0x47, 0x70, 0x7a, 0x0a, 0x6a, 0x4c, 0x72, 0x46, 0x4e, 0x65, 0x38, 0x35, 0x61, 0x6b, 0x45, 0x65, 0x7a, 0x33, 0x47, 0x6f, 0x6f, 0x72, 0x4b, 0x47, 0x42, 0x31, 0x73, 0x36, 0x79, 0x65, 0x48, 0x76, 0x50, 0x32, 0x55, 0x45, 0x67, 0x45, 0x63, 0x79, 0x52, 0x48, 0x43, 0x56, 0x54, 0x6a, 0x46, 0x6e, 0x61, 0x6e, 0x52, 0x62, 0x45, 0x45, 0x56, 0x31, 0x36, 0x72, 0x43, 0x66, 0x30, 0x4f, 0x59, 0x31, 0x2f, 0x6b, 0x36, 0x66, 0x69, 0x38, 0x77, 0x72, 0x6b, 0x6b, 0x56, 0x62, 0x62, 0x69, 0x56, 0x67, 0x0a, 0x68, 0x55, 0x62, 0x4e, 0x30, 0x61, 0x71, 0x77, 0x64, 0x6d, 0x61, 0x54, 0x64, 0x35, 0x61, 0x2b, 0x67, 0x37, 0x34, 0x34, 0x74, 0x69, 0x52, 0x4f, 0x4a, 0x67, 0x76, 0x4d, 0x37, 0x58, 0x70, 0x57, 0x47, 0x75, 0x44, 0x70, 0x57, 0x73, 0x5a, 0x6b, 0x72, 0x55, 0x78, 0x36, 0x41, 0x45, 0x68, 0x45, 0x4c, 0x37, 0x6c, 0x41, 0x75, 0x78, 0x4d, 0x2b, 0x76, 0x68, 0x56, 0x34, 0x6e, 0x59, 0x57, 0x42, 0x53, 0x69, 0x70, 0x58, 0x33, 0x74, 0x55, 0x5a, 0x51, 0x39, 0x72, 0x62, 0x0a, 0x79, 0x6c, 0x74, 0x48, 0x68, 0x6f, 0x4d, 0x4c, 0x50, 0x37, 0x59, 0x4e, 0x64, 0x6e, 0x68, 0x7a, 0x65, 0x53, 0x4a, 0x65, 0x73, 0x59, 0x41, 0x66, 0x7a, 0x37, 0x37, 0x52, 0x50, 0x31, 0x59, 0x51, 0x6d, 0x43, 0x75, 0x56, 0x68, 0x36, 0x45, 0x66, 0x6e, 0x57, 0x51, 0x55, 0x59, 0x44, 0x6b, 0x73, 0x73, 0x77, 0x42, 0x56, 0x4c, 0x75, 0x54, 0x31, 0x73, 0x77, 0x35, 0x58, 0x78, 0x4a, 0x46, 0x42, 0x41, 0x4a, 0x77, 0x2f, 0x36, 0x4b, 0x58, 0x66, 0x36, 0x76, 0x62, 0x2f, 0x0a, 0x79, 0x50, 0x43, 0x74, 0x62, 0x56, 0x4b, 0x6f, 0x46, 0x36, 0x75, 0x62, 0x59, 0x66, 0x77, 0x53, 0x55, 0x54, 0x58, 0x6b, 0x4a, 0x66, 0x32, 0x76, 0x71, 0x6d, 0x71, 0x47, 0x4f, 0x51, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x52, 0x34, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x42, 0x33, 0x44, 0x43, 0x43, 0x41, 0x59, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4e, 0x41, 0x67, 0x50, 0x6c, 0x66, 0x76, 0x55, 0x2f, 0x6b, 0x2f, 0x32, 0x6c, 0x43, 0x53, 0x47, 0x79, 0x70, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x6a, 0x42, 0x51, 0x4d, 0x53, 0x51, 0x77, 0x49, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x74, 0x48, 0x62, 0x47, 0x39, 0x69, 0x0a, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x45, 0x56, 0x44, 0x51, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x43, 0x30, 0x67, 0x55, 0x6a, 0x51, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x43, 0x6b, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x43, 0x6b, 0x64, 0x73, 0x0a, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x49, 0x78, 0x4d, 0x54, 0x45, 0x7a, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x67, 0x77, 0x4d, 0x54, 0x45, 0x35, 0x4d, 0x44, 0x4d, 0x78, 0x4e, 0x44, 0x41, 0x33, 0x57, 0x6a, 0x42, 0x51, 0x4d, 0x53, 0x51, 0x77, 0x49, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4c, 0x45, 0x78, 0x74, 0x48, 0x62, 0x47, 0x39, 0x69, 0x0a, 0x59, 0x57, 0x78, 0x54, 0x61, 0x57, 0x64, 0x75, 0x49, 0x45, 0x56, 0x44, 0x51, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x43, 0x30, 0x67, 0x55, 0x6a, 0x51, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x43, 0x6b, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x78, 0x45, 0x7a, 0x41, 0x52, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x43, 0x6b, 0x64, 0x73, 0x0a, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x46, 0x4e, 0x70, 0x5a, 0x32, 0x34, 0x77, 0x57, 0x54, 0x41, 0x54, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x4d, 0x42, 0x42, 0x77, 0x4e, 0x43, 0x41, 0x41, 0x53, 0x34, 0x78, 0x6e, 0x6e, 0x54, 0x6a, 0x32, 0x77, 0x6c, 0x44, 0x70, 0x38, 0x75, 0x4f, 0x52, 0x6b, 0x63, 0x41, 0x36, 0x53, 0x75, 0x6d, 0x75, 0x55, 0x35, 0x42, 0x77, 0x6b, 0x57, 0x0a, 0x79, 0x6d, 0x4f, 0x78, 0x75, 0x59, 0x62, 0x34, 0x69, 0x6c, 0x66, 0x42, 0x56, 0x38, 0x35, 0x43, 0x2b, 0x6e, 0x4f, 0x68, 0x39, 0x32, 0x56, 0x43, 0x2f, 0x78, 0x37, 0x42, 0x41, 0x4c, 0x4a, 0x75, 0x63, 0x77, 0x37, 0x2f, 0x78, 0x79, 0x48, 0x6c, 0x47, 0x4b, 0x53, 0x71, 0x32, 0x58, 0x45, 0x2f, 0x71, 0x4e, 0x53, 0x35, 0x7a, 0x6f, 0x77, 0x64, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x0a, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x56, 0x4c, 0x42, 0x37, 0x72, 0x55, 0x57, 0x34, 0x34, 0x6b, 0x42, 0x2f, 0x2b, 0x77, 0x70, 0x75, 0x2b, 0x37, 0x34, 0x7a, 0x79, 0x54, 0x79, 0x6a, 0x68, 0x4e, 0x55, 0x77, 0x43, 0x67, 0x59, 0x49, 0x0a, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x49, 0x44, 0x52, 0x77, 0x41, 0x77, 0x52, 0x41, 0x49, 0x67, 0x49, 0x6b, 0x39, 0x30, 0x63, 0x72, 0x6c, 0x67, 0x72, 0x2f, 0x48, 0x6d, 0x6e, 0x4b, 0x41, 0x57, 0x42, 0x56, 0x42, 0x66, 0x77, 0x31, 0x34, 0x37, 0x62, 0x6d, 0x46, 0x30, 0x37, 0x37, 0x34, 0x42, 0x78, 0x4c, 0x34, 0x59, 0x53, 0x46, 0x6c, 0x68, 0x67, 0x6a, 0x49, 0x43, 0x49, 0x43, 0x61, 0x64, 0x56, 0x47, 0x4e, 0x41, 0x33, 0x6a, 0x64, 0x67, 0x0a, 0x55, 0x4d, 0x2f, 0x49, 0x32, 0x4f, 0x32, 0x64, 0x67, 0x71, 0x34, 0x33, 0x6d, 0x4c, 0x79, 0x6a, 0x6a, 0x30, 0x78, 0x4d, 0x71, 0x54, 0x51, 0x72, 0x62, 0x4f, 0x2f, 0x37, 0x6c, 0x5a, 0x73, 0x6d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x47, 0x54, 0x53, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x56, 0x7a, 0x43, 0x43, 0x41, 0x7a, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4e, 0x41, 0x67, 0x50, 0x6c, 0x6b, 0x32, 0x38, 0x78, 0x73, 0x42, 0x4e, 0x4a, 0x69, 0x47, 0x75, 0x69, 0x46, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x44, 0x42, 0x48, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x5a, 0x52, 0x32, 0x39, 0x76, 0x5a, 0x32, 0x78, 0x6c, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x49, 0x45, 0x78, 0x4d, 0x51, 0x7a, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x4c, 0x52, 0x31, 0x52, 0x54, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x0a, 0x55, 0x6a, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x59, 0x77, 0x4e, 0x6a, 0x49, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x59, 0x77, 0x4e, 0x6a, 0x49, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x42, 0x48, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x43, 0x68, 0x4d, 0x5a, 0x52, 0x32, 0x39, 0x76, 0x5a, 0x32, 0x78, 0x6c, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x49, 0x45, 0x78, 0x4d, 0x51, 0x7a, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x4c, 0x52, 0x31, 0x52, 0x54, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x55, 0x6a, 0x45, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x0a, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x32, 0x45, 0x51, 0x4b, 0x4c, 0x48, 0x75, 0x4f, 0x68, 0x64, 0x35, 0x73, 0x37, 0x33, 0x4c, 0x2b, 0x55, 0x50, 0x72, 0x65, 0x56, 0x70, 0x30, 0x41, 0x38, 0x6f, 0x66, 0x32, 0x43, 0x2b, 0x58, 0x30, 0x79, 0x42, 0x6f, 0x4a, 0x78, 0x39, 0x76, 0x61, 0x4d, 0x0a, 0x66, 0x2f, 0x76, 0x6f, 0x32, 0x37, 0x78, 0x71, 0x4c, 0x70, 0x65, 0x58, 0x6f, 0x34, 0x78, 0x4c, 0x2b, 0x53, 0x76, 0x32, 0x73, 0x66, 0x6e, 0x4f, 0x68, 0x42, 0x32, 0x78, 0x2b, 0x63, 0x57, 0x58, 0x33, 0x75, 0x2b, 0x35, 0x38, 0x71, 0x50, 0x70, 0x76, 0x42, 0x4b, 0x4a, 0x58, 0x71, 0x65, 0x71, 0x55, 0x71, 0x76, 0x34, 0x49, 0x79, 0x66, 0x4c, 0x70, 0x4c, 0x47, 0x63, 0x59, 0x39, 0x76, 0x58, 0x6d, 0x58, 0x37, 0x77, 0x43, 0x6c, 0x37, 0x72, 0x61, 0x4b, 0x62, 0x30, 0x0a, 0x78, 0x6c, 0x70, 0x48, 0x44, 0x55, 0x30, 0x51, 0x4d, 0x2b, 0x4e, 0x4f, 0x73, 0x52, 0x4f, 0x6a, 0x79, 0x42, 0x68, 0x73, 0x53, 0x2b, 0x7a, 0x38, 0x43, 0x5a, 0x44, 0x66, 0x6e, 0x57, 0x51, 0x70, 0x4a, 0x53, 0x4d, 0x48, 0x6f, 0x62, 0x54, 0x53, 0x50, 0x53, 0x35, 0x67, 0x34, 0x4d, 0x2f, 0x53, 0x43, 0x59, 0x65, 0x37, 0x7a, 0x55, 0x6a, 0x77, 0x54, 0x63, 0x4c, 0x43, 0x65, 0x6f, 0x69, 0x4b, 0x75, 0x37, 0x72, 0x50, 0x57, 0x52, 0x6e, 0x57, 0x72, 0x34, 0x2b, 0x77, 0x0a, 0x42, 0x37, 0x43, 0x65, 0x4d, 0x66, 0x47, 0x43, 0x77, 0x63, 0x44, 0x66, 0x4c, 0x71, 0x5a, 0x74, 0x62, 0x42, 0x6b, 0x4f, 0x74, 0x64, 0x68, 0x2b, 0x4a, 0x68, 0x70, 0x46, 0x41, 0x7a, 0x32, 0x77, 0x65, 0x61, 0x53, 0x55, 0x4b, 0x4b, 0x30, 0x50, 0x66, 0x79, 0x62, 0x6c, 0x71, 0x41, 0x6a, 0x2b, 0x6c, 0x75, 0x67, 0x38, 0x61, 0x4a, 0x52, 0x54, 0x37, 0x6f, 0x4d, 0x36, 0x69, 0x43, 0x73, 0x56, 0x6c, 0x67, 0x6d, 0x79, 0x34, 0x48, 0x71, 0x4d, 0x4c, 0x6e, 0x58, 0x57, 0x0a, 0x6e, 0x4f, 0x75, 0x6e, 0x56, 0x6d, 0x53, 0x50, 0x6c, 0x6b, 0x39, 0x6f, 0x72, 0x6a, 0x32, 0x58, 0x77, 0x6f, 0x53, 0x50, 0x77, 0x4c, 0x78, 0x41, 0x77, 0x41, 0x74, 0x63, 0x76, 0x66, 0x61, 0x48, 0x73, 0x7a, 0x56, 0x73, 0x72, 0x42, 0x68, 0x51, 0x66, 0x34, 0x54, 0x67, 0x54, 0x4d, 0x32, 0x53, 0x30, 0x79, 0x44, 0x70, 0x4d, 0x37, 0x78, 0x53, 0x6d, 0x61, 0x38, 0x79, 0x74, 0x53, 0x6d, 0x7a, 0x4a, 0x53, 0x71, 0x30, 0x53, 0x50, 0x6c, 0x79, 0x34, 0x63, 0x70, 0x6b, 0x0a, 0x39, 0x2b, 0x61, 0x43, 0x45, 0x49, 0x33, 0x6f, 0x6e, 0x63, 0x4b, 0x4b, 0x69, 0x50, 0x6f, 0x34, 0x5a, 0x6f, 0x72, 0x38, 0x59, 0x2f, 0x6b, 0x42, 0x2b, 0x58, 0x6a, 0x39, 0x65, 0x31, 0x78, 0x33, 0x2b, 0x6e, 0x61, 0x48, 0x2b, 0x75, 0x7a, 0x66, 0x73, 0x51, 0x35, 0x35, 0x6c, 0x56, 0x65, 0x30, 0x76, 0x53, 0x62, 0x76, 0x31, 0x67, 0x48, 0x52, 0x36, 0x78, 0x59, 0x4b, 0x75, 0x34, 0x34, 0x4c, 0x74, 0x63, 0x58, 0x46, 0x69, 0x6c, 0x57, 0x72, 0x30, 0x36, 0x7a, 0x71, 0x0a, 0x6b, 0x55, 0x73, 0x70, 0x7a, 0x42, 0x6d, 0x6b, 0x4d, 0x69, 0x56, 0x4f, 0x4b, 0x76, 0x46, 0x6c, 0x52, 0x4e, 0x41, 0x43, 0x7a, 0x71, 0x72, 0x4f, 0x53, 0x62, 0x54, 0x71, 0x6e, 0x33, 0x79, 0x44, 0x73, 0x45, 0x42, 0x37, 0x35, 0x30, 0x4f, 0x72, 0x70, 0x32, 0x79, 0x6a, 0x6a, 0x33, 0x32, 0x4a, 0x67, 0x66, 0x70, 0x4d, 0x70, 0x66, 0x2f, 0x56, 0x6a, 0x73, 0x50, 0x4f, 0x53, 0x2b, 0x43, 0x31, 0x32, 0x4c, 0x4f, 0x4f, 0x52, 0x63, 0x39, 0x32, 0x77, 0x4f, 0x31, 0x41, 0x0a, 0x4b, 0x2f, 0x31, 0x54, 0x44, 0x37, 0x43, 0x6e, 0x31, 0x54, 0x73, 0x4e, 0x73, 0x59, 0x71, 0x69, 0x41, 0x39, 0x34, 0x78, 0x72, 0x63, 0x78, 0x33, 0x36, 0x6d, 0x39, 0x37, 0x50, 0x74, 0x62, 0x66, 0x6b, 0x53, 0x49, 0x53, 0x35, 0x72, 0x37, 0x36, 0x32, 0x44, 0x4c, 0x38, 0x45, 0x47, 0x4d, 0x55, 0x55, 0x58, 0x4c, 0x65, 0x58, 0x64, 0x59, 0x57, 0x6b, 0x37, 0x30, 0x70, 0x61, 0x44, 0x50, 0x76, 0x4f, 0x6d, 0x62, 0x73, 0x42, 0x34, 0x6f, 0x6d, 0x33, 0x78, 0x50, 0x58, 0x0a, 0x56, 0x32, 0x56, 0x34, 0x4a, 0x39, 0x35, 0x65, 0x53, 0x52, 0x51, 0x41, 0x6f, 0x67, 0x42, 0x2f, 0x6d, 0x71, 0x67, 0x68, 0x74, 0x71, 0x6d, 0x78, 0x6c, 0x62, 0x43, 0x6c, 0x75, 0x51, 0x30, 0x57, 0x45, 0x64, 0x72, 0x48, 0x62, 0x45, 0x67, 0x38, 0x51, 0x4f, 0x42, 0x2b, 0x44, 0x56, 0x72, 0x4e, 0x56, 0x6a, 0x7a, 0x52, 0x6c, 0x77, 0x57, 0x35, 0x79, 0x30, 0x76, 0x74, 0x4f, 0x55, 0x75, 0x63, 0x78, 0x44, 0x2f, 0x53, 0x56, 0x52, 0x4e, 0x75, 0x4a, 0x4c, 0x44, 0x57, 0x0a, 0x63, 0x66, 0x72, 0x30, 0x77, 0x62, 0x72, 0x4d, 0x37, 0x52, 0x76, 0x31, 0x2f, 0x6f, 0x46, 0x42, 0x32, 0x41, 0x43, 0x59, 0x50, 0x54, 0x72, 0x49, 0x72, 0x6e, 0x71, 0x59, 0x4e, 0x78, 0x67, 0x46, 0x6c, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x0a, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x35, 0x4b, 0x38, 0x72, 0x4a, 0x6e, 0x45, 0x61, 0x4b, 0x30, 0x67, 0x6e, 0x68, 0x53, 0x39, 0x53, 0x5a, 0x69, 0x7a, 0x76, 0x38, 0x49, 0x6b, 0x54, 0x63, 0x54, 0x34, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x44, 0x0a, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4a, 0x2b, 0x71, 0x51, 0x69, 0x62, 0x62, 0x43, 0x35, 0x75, 0x2b, 0x2f, 0x78, 0x36, 0x57, 0x6b, 0x69, 0x34, 0x2b, 0x6f, 0x6d, 0x56, 0x4b, 0x61, 0x70, 0x69, 0x36, 0x49, 0x73, 0x74, 0x39, 0x77, 0x54, 0x72, 0x59, 0x67, 0x67, 0x6f, 0x47, 0x78, 0x76, 0x61, 0x6c, 0x33, 0x73, 0x42, 0x4f, 0x68, 0x32, 0x5a, 0x35, 0x6f, 0x66, 0x6d, 0x6d, 0x57, 0x4a, 0x79, 0x71, 0x2b, 0x62, 0x58, 0x6d, 0x59, 0x4f, 0x66, 0x67, 0x36, 0x4c, 0x45, 0x65, 0x0a, 0x51, 0x6b, 0x45, 0x7a, 0x43, 0x7a, 0x63, 0x39, 0x7a, 0x6f, 0x6c, 0x77, 0x46, 0x63, 0x71, 0x31, 0x4a, 0x4b, 0x6a, 0x50, 0x61, 0x37, 0x58, 0x53, 0x51, 0x43, 0x47, 0x59, 0x7a, 0x79, 0x49, 0x30, 0x7a, 0x7a, 0x76, 0x46, 0x49, 0x6f, 0x54, 0x67, 0x78, 0x51, 0x36, 0x4b, 0x66, 0x46, 0x32, 0x49, 0x35, 0x44, 0x55, 0x6b, 0x7a, 0x70, 0x73, 0x2b, 0x47, 0x6c, 0x51, 0x65, 0x62, 0x74, 0x75, 0x79, 0x68, 0x36, 0x66, 0x38, 0x38, 0x2f, 0x71, 0x42, 0x56, 0x52, 0x52, 0x69, 0x0a, 0x43, 0x6c, 0x6d, 0x70, 0x49, 0x67, 0x55, 0x78, 0x50, 0x6f, 0x4c, 0x57, 0x37, 0x74, 0x74, 0x58, 0x4e, 0x4c, 0x77, 0x7a, 0x6c, 0x64, 0x4d, 0x58, 0x47, 0x2b, 0x67, 0x6e, 0x6f, 0x6f, 0x74, 0x37, 0x54, 0x69, 0x59, 0x61, 0x65, 0x6c, 0x70, 0x6b, 0x74, 0x74, 0x47, 0x73, 0x4e, 0x2f, 0x48, 0x39, 0x6f, 0x50, 0x4d, 0x34, 0x37, 0x48, 0x4c, 0x77, 0x45, 0x58, 0x57, 0x64, 0x79, 0x7a, 0x52, 0x53, 0x6a, 0x65, 0x5a, 0x32, 0x61, 0x78, 0x66, 0x47, 0x33, 0x34, 0x61, 0x72, 0x0a, 0x4a, 0x34, 0x35, 0x4a, 0x4b, 0x33, 0x56, 0x6d, 0x67, 0x52, 0x41, 0x68, 0x70, 0x75, 0x6f, 0x2b, 0x39, 0x4b, 0x34, 0x6c, 0x2f, 0x33, 0x77, 0x56, 0x33, 0x73, 0x36, 0x4d, 0x4a, 0x54, 0x2f, 0x4b, 0x59, 0x6e, 0x41, 0x4b, 0x39, 0x79, 0x38, 0x4a, 0x5a, 0x67, 0x66, 0x49, 0x50, 0x78, 0x7a, 0x38, 0x38, 0x4e, 0x74, 0x46, 0x4d, 0x4e, 0x39, 0x69, 0x69, 0x4d, 0x47, 0x31, 0x44, 0x35, 0x33, 0x44, 0x6e, 0x30, 0x72, 0x65, 0x57, 0x56, 0x6c, 0x48, 0x78, 0x59, 0x63, 0x69, 0x0a, 0x4e, 0x75, 0x61, 0x43, 0x70, 0x2b, 0x30, 0x4b, 0x75, 0x65, 0x49, 0x48, 0x6f, 0x49, 0x31, 0x37, 0x65, 0x6b, 0x6f, 0x38, 0x63, 0x64, 0x4c, 0x69, 0x41, 0x36, 0x45, 0x66, 0x4d, 0x67, 0x66, 0x64, 0x47, 0x2b, 0x52, 0x43, 0x7a, 0x67, 0x77, 0x41, 0x52, 0x57, 0x47, 0x41, 0x74, 0x51, 0x73, 0x67, 0x57, 0x53, 0x6c, 0x34, 0x76, 0x66, 0x6c, 0x56, 0x79, 0x32, 0x50, 0x46, 0x50, 0x45, 0x7a, 0x30, 0x74, 0x76, 0x2f, 0x62, 0x61, 0x6c, 0x38, 0x78, 0x61, 0x35, 0x6d, 0x65, 0x0a, 0x4c, 0x4d, 0x46, 0x72, 0x55, 0x4b, 0x54, 0x58, 0x35, 0x68, 0x67, 0x55, 0x76, 0x59, 0x55, 0x2f, 0x5a, 0x36, 0x74, 0x47, 0x6e, 0x36, 0x44, 0x2f, 0x51, 0x71, 0x63, 0x36, 0x66, 0x31, 0x7a, 0x4c, 0x58, 0x62, 0x42, 0x77, 0x48, 0x53, 0x73, 0x30, 0x39, 0x64, 0x52, 0x32, 0x43, 0x51, 0x7a, 0x72, 0x65, 0x45, 0x78, 0x5a, 0x42, 0x66, 0x4d, 0x7a, 0x51, 0x73, 0x4e, 0x68, 0x46, 0x52, 0x41, 0x62, 0x64, 0x30, 0x33, 0x4f, 0x49, 0x6f, 0x7a, 0x55, 0x68, 0x66, 0x4a, 0x46, 0x0a, 0x66, 0x62, 0x64, 0x54, 0x36, 0x75, 0x39, 0x41, 0x57, 0x70, 0x51, 0x4b, 0x58, 0x43, 0x42, 0x66, 0x54, 0x6b, 0x42, 0x64, 0x59, 0x69, 0x4a, 0x32, 0x33, 0x2f, 0x2f, 0x4f, 0x59, 0x62, 0x32, 0x4d, 0x49, 0x33, 0x6a, 0x53, 0x4e, 0x77, 0x4c, 0x67, 0x6a, 0x74, 0x37, 0x52, 0x45, 0x54, 0x65, 0x4a, 0x39, 0x72, 0x2f, 0x74, 0x53, 0x51, 0x64, 0x69, 0x72, 0x70, 0x4c, 0x73, 0x51, 0x42, 0x71, 0x76, 0x46, 0x41, 0x6e, 0x5a, 0x30, 0x45, 0x36, 0x79, 0x6f, 0x76, 0x65, 0x2b, 0x0a, 0x37, 0x75, 0x37, 0x59, 0x2f, 0x39, 0x77, 0x61, 0x4c, 0x64, 0x36, 0x34, 0x4e, 0x6e, 0x48, 0x69, 0x2f, 0x48, 0x6d, 0x33, 0x6c, 0x43, 0x58, 0x52, 0x53, 0x48, 0x4e, 0x62, 0x6f, 0x54, 0x58, 0x6e, 0x73, 0x35, 0x6c, 0x6e, 0x64, 0x63, 0x45, 0x5a, 0x4f, 0x69, 0x74, 0x48, 0x54, 0x74, 0x4e, 0x43, 0x6a, 0x76, 0x30, 0x78, 0x79, 0x42, 0x5a, 0x6d, 0x32, 0x74, 0x49, 0x4d, 0x50, 0x4e, 0x75, 0x7a, 0x6a, 0x73, 0x6d, 0x68, 0x44, 0x59, 0x41, 0x50, 0x65, 0x78, 0x5a, 0x33, 0x0a, 0x46, 0x4c, 0x2f, 0x2f, 0x32, 0x77, 0x6d, 0x55, 0x73, 0x70, 0x4f, 0x38, 0x49, 0x46, 0x67, 0x56, 0x36, 0x64, 0x74, 0x78, 0x51, 0x2f, 0x50, 0x65, 0x45, 0x4d, 0x4d, 0x41, 0x33, 0x4b, 0x67, 0x71, 0x6c, 0x62, 0x62, 0x43, 0x31, 0x6a, 0x2b, 0x51, 0x61, 0x33, 0x62, 0x62, 0x62, 0x50, 0x36, 0x4d, 0x76, 0x50, 0x4a, 0x77, 0x4e, 0x51, 0x7a, 0x63, 0x6d, 0x52, 0x6b, 0x31, 0x33, 0x4e, 0x66, 0x49, 0x52, 0x6d, 0x50, 0x56, 0x4e, 0x6e, 0x47, 0x75, 0x56, 0x2f, 0x75, 0x33, 0x0a, 0x67, 0x6d, 0x33, 0x63, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x47, 0x54, 0x53, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x56, 0x7a, 0x43, 0x43, 0x41, 0x7a, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4e, 0x41, 0x67, 0x50, 0x6c, 0x72, 0x73, 0x57, 0x4e, 0x42, 0x43, 0x55, 0x61, 0x71, 0x78, 0x45, 0x6c, 0x71, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x44, 0x42, 0x48, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x5a, 0x52, 0x32, 0x39, 0x76, 0x5a, 0x32, 0x78, 0x6c, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x49, 0x45, 0x78, 0x4d, 0x51, 0x7a, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x4c, 0x52, 0x31, 0x52, 0x54, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x0a, 0x55, 0x6a, 0x49, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x59, 0x77, 0x4e, 0x6a, 0x49, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x59, 0x77, 0x4e, 0x6a, 0x49, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x42, 0x48, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x43, 0x68, 0x4d, 0x5a, 0x52, 0x32, 0x39, 0x76, 0x5a, 0x32, 0x78, 0x6c, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x49, 0x45, 0x78, 0x4d, 0x51, 0x7a, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x4c, 0x52, 0x31, 0x52, 0x54, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x55, 0x6a, 0x49, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x0a, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x44, 0x4f, 0x33, 0x76, 0x32, 0x6d, 0x2b, 0x2b, 0x7a, 0x73, 0x46, 0x44, 0x51, 0x38, 0x42, 0x77, 0x5a, 0x61, 0x62, 0x46, 0x6e, 0x33, 0x47, 0x54, 0x58, 0x64, 0x39, 0x38, 0x47, 0x64, 0x56, 0x61, 0x72, 0x54, 0x7a, 0x54, 0x75, 0x6b, 0x6b, 0x33, 0x4c, 0x76, 0x0a, 0x43, 0x76, 0x70, 0x74, 0x6e, 0x66, 0x62, 0x77, 0x68, 0x59, 0x42, 0x62, 0x6f, 0x55, 0x68, 0x53, 0x6e, 0x7a, 0x6e, 0x46, 0x74, 0x2b, 0x34, 0x6f, 0x72, 0x4f, 0x2f, 0x4c, 0x64, 0x6d, 0x67, 0x55, 0x75, 0x64, 0x2b, 0x74, 0x41, 0x57, 0x79, 0x5a, 0x48, 0x38, 0x51, 0x69, 0x48, 0x5a, 0x2f, 0x2b, 0x63, 0x6e, 0x66, 0x67, 0x4c, 0x46, 0x75, 0x76, 0x35, 0x41, 0x53, 0x2f, 0x54, 0x33, 0x4b, 0x67, 0x47, 0x6a, 0x53, 0x59, 0x36, 0x44, 0x6c, 0x6f, 0x37, 0x4a, 0x55, 0x6c, 0x0a, 0x65, 0x33, 0x61, 0x68, 0x35, 0x6d, 0x6d, 0x35, 0x68, 0x52, 0x6d, 0x39, 0x69, 0x59, 0x7a, 0x2b, 0x72, 0x65, 0x30, 0x32, 0x36, 0x6e, 0x4f, 0x38, 0x2f, 0x34, 0x50, 0x69, 0x79, 0x33, 0x33, 0x42, 0x30, 0x73, 0x35, 0x4b, 0x73, 0x34, 0x30, 0x46, 0x6e, 0x6f, 0x74, 0x4a, 0x6b, 0x39, 0x2f, 0x42, 0x57, 0x39, 0x42, 0x75, 0x58, 0x76, 0x41, 0x75, 0x4d, 0x43, 0x36, 0x43, 0x2f, 0x50, 0x71, 0x38, 0x74, 0x42, 0x63, 0x4b, 0x53, 0x4f, 0x57, 0x49, 0x6d, 0x38, 0x57, 0x62, 0x0a, 0x61, 0x39, 0x36, 0x77, 0x79, 0x72, 0x51, 0x44, 0x38, 0x4e, 0x72, 0x30, 0x6b, 0x4c, 0x68, 0x6c, 0x5a, 0x50, 0x64, 0x63, 0x54, 0x4b, 0x33, 0x6f, 0x66, 0x6d, 0x5a, 0x65, 0x6d, 0x64, 0x65, 0x34, 0x77, 0x6a, 0x37, 0x49, 0x30, 0x42, 0x4f, 0x64, 0x72, 0x65, 0x37, 0x6b, 0x52, 0x58, 0x75, 0x4a, 0x56, 0x66, 0x65, 0x4b, 0x48, 0x32, 0x4a, 0x53, 0x68, 0x42, 0x4b, 0x7a, 0x77, 0x6b, 0x43, 0x58, 0x34, 0x34, 0x6f, 0x66, 0x52, 0x35, 0x47, 0x6d, 0x64, 0x46, 0x72, 0x53, 0x0a, 0x2b, 0x4c, 0x46, 0x6a, 0x4b, 0x42, 0x43, 0x34, 0x73, 0x77, 0x6d, 0x34, 0x56, 0x6e, 0x64, 0x41, 0x6f, 0x69, 0x61, 0x59, 0x65, 0x63, 0x62, 0x2b, 0x33, 0x79, 0x58, 0x75, 0x50, 0x75, 0x57, 0x67, 0x66, 0x39, 0x52, 0x68, 0x44, 0x31, 0x46, 0x4c, 0x50, 0x44, 0x2b, 0x4d, 0x32, 0x75, 0x46, 0x77, 0x64, 0x4e, 0x6a, 0x43, 0x61, 0x4b, 0x48, 0x35, 0x77, 0x51, 0x7a, 0x70, 0x6f, 0x65, 0x4a, 0x2f, 0x75, 0x31, 0x55, 0x38, 0x64, 0x67, 0x62, 0x75, 0x61, 0x6b, 0x37, 0x4d, 0x0a, 0x6b, 0x6f, 0x67, 0x77, 0x54, 0x5a, 0x71, 0x39, 0x54, 0x77, 0x74, 0x49, 0x6d, 0x6f, 0x53, 0x31, 0x6d, 0x4b, 0x50, 0x56, 0x2b, 0x33, 0x50, 0x42, 0x56, 0x32, 0x48, 0x64, 0x4b, 0x46, 0x5a, 0x31, 0x45, 0x36, 0x36, 0x48, 0x6a, 0x75, 0x63, 0x4d, 0x55, 0x51, 0x6b, 0x51, 0x64, 0x59, 0x68, 0x4d, 0x76, 0x49, 0x33, 0x35, 0x65, 0x7a, 0x7a, 0x55, 0x49, 0x6b, 0x67, 0x66, 0x4b, 0x74, 0x7a, 0x72, 0x61, 0x37, 0x74, 0x45, 0x73, 0x63, 0x73, 0x7a, 0x63, 0x54, 0x4a, 0x47, 0x0a, 0x72, 0x36, 0x31, 0x4b, 0x38, 0x59, 0x7a, 0x6f, 0x64, 0x44, 0x71, 0x73, 0x35, 0x78, 0x6f, 0x69, 0x63, 0x34, 0x44, 0x53, 0x4d, 0x50, 0x63, 0x6c, 0x51, 0x73, 0x63, 0x69, 0x4f, 0x7a, 0x73, 0x53, 0x72, 0x5a, 0x59, 0x75, 0x78, 0x73, 0x4e, 0x32, 0x42, 0x36, 0x6f, 0x67, 0x74, 0x7a, 0x56, 0x4a, 0x56, 0x2b, 0x6d, 0x53, 0x53, 0x65, 0x68, 0x32, 0x46, 0x6e, 0x49, 0x78, 0x5a, 0x79, 0x75, 0x57, 0x66, 0x6f, 0x71, 0x6a, 0x78, 0x35, 0x52, 0x57, 0x49, 0x72, 0x39, 0x71, 0x0a, 0x53, 0x33, 0x34, 0x42, 0x49, 0x62, 0x49, 0x6a, 0x4d, 0x74, 0x2f, 0x6b, 0x6d, 0x6b, 0x52, 0x74, 0x57, 0x56, 0x74, 0x64, 0x39, 0x51, 0x43, 0x67, 0x48, 0x4a, 0x76, 0x47, 0x65, 0x4a, 0x65, 0x4e, 0x6b, 0x50, 0x2b, 0x62, 0x79, 0x4b, 0x71, 0x30, 0x72, 0x78, 0x46, 0x52, 0x4f, 0x56, 0x37, 0x5a, 0x2b, 0x32, 0x65, 0x74, 0x31, 0x56, 0x73, 0x52, 0x6e, 0x54, 0x4b, 0x61, 0x47, 0x37, 0x33, 0x56, 0x75, 0x6c, 0x75, 0x6c, 0x79, 0x63, 0x73, 0x6c, 0x61, 0x56, 0x4e, 0x56, 0x0a, 0x4a, 0x31, 0x7a, 0x67, 0x79, 0x6a, 0x62, 0x4c, 0x69, 0x47, 0x48, 0x37, 0x48, 0x72, 0x66, 0x51, 0x79, 0x2b, 0x34, 0x57, 0x2b, 0x39, 0x4f, 0x6d, 0x54, 0x4e, 0x36, 0x53, 0x70, 0x64, 0x54, 0x69, 0x33, 0x2f, 0x55, 0x47, 0x56, 0x4e, 0x34, 0x75, 0x6e, 0x55, 0x75, 0x30, 0x6b, 0x7a, 0x43, 0x71, 0x67, 0x63, 0x37, 0x64, 0x47, 0x74, 0x78, 0x52, 0x63, 0x77, 0x31, 0x50, 0x63, 0x4f, 0x6e, 0x6c, 0x74, 0x68, 0x59, 0x68, 0x47, 0x58, 0x6d, 0x79, 0x35, 0x6f, 0x6b, 0x4c, 0x0a, 0x64, 0x57, 0x54, 0x4b, 0x31, 0x61, 0x75, 0x38, 0x43, 0x63, 0x45, 0x59, 0x6f, 0x66, 0x2f, 0x55, 0x56, 0x4b, 0x47, 0x46, 0x50, 0x50, 0x30, 0x55, 0x4a, 0x41, 0x4f, 0x79, 0x68, 0x39, 0x4f, 0x6b, 0x74, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x0a, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x75, 0x2f, 0x2f, 0x4b, 0x6a, 0x69, 0x4f, 0x66, 0x54, 0x35, 0x6e, 0x4b, 0x32, 0x2b, 0x4a, 0x6f, 0x70, 0x71, 0x55, 0x56, 0x4a, 0x78, 0x63, 0x65, 0x32, 0x51, 0x34, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x44, 0x0a, 0x67, 0x67, 0x49, 0x42, 0x41, 0x42, 0x2f, 0x4b, 0x7a, 0x74, 0x33, 0x48, 0x76, 0x71, 0x47, 0x66, 0x32, 0x53, 0x64, 0x4d, 0x43, 0x39, 0x77, 0x58, 0x6d, 0x42, 0x46, 0x71, 0x69, 0x4e, 0x34, 0x39, 0x35, 0x6e, 0x46, 0x57, 0x63, 0x72, 0x4b, 0x65, 0x47, 0x6b, 0x36, 0x63, 0x31, 0x53, 0x75, 0x59, 0x4a, 0x46, 0x32, 0x62, 0x61, 0x33, 0x75, 0x77, 0x4d, 0x34, 0x49, 0x4a, 0x76, 0x64, 0x38, 0x6c, 0x52, 0x75, 0x71, 0x59, 0x6e, 0x72, 0x59, 0x62, 0x2f, 0x6f, 0x4d, 0x38, 0x0a, 0x30, 0x6d, 0x4a, 0x68, 0x77, 0x51, 0x54, 0x74, 0x7a, 0x75, 0x44, 0x46, 0x79, 0x63, 0x67, 0x54, 0x45, 0x31, 0x58, 0x6e, 0x71, 0x47, 0x4f, 0x74, 0x6a, 0x48, 0x73, 0x42, 0x2f, 0x6e, 0x63, 0x77, 0x34, 0x63, 0x35, 0x6f, 0x6d, 0x77, 0x58, 0x34, 0x45, 0x75, 0x35, 0x35, 0x4d, 0x61, 0x42, 0x42, 0x52, 0x54, 0x55, 0x6f, 0x43, 0x6e, 0x47, 0x6b, 0x4a, 0x45, 0x2b, 0x4d, 0x33, 0x44, 0x79, 0x43, 0x42, 0x31, 0x39, 0x6d, 0x33, 0x48, 0x30, 0x51, 0x2f, 0x67, 0x78, 0x68, 0x0a, 0x73, 0x77, 0x57, 0x56, 0x37, 0x75, 0x47, 0x75, 0x67, 0x51, 0x2b, 0x6f, 0x2b, 0x4d, 0x65, 0x50, 0x54, 0x61, 0x67, 0x6a, 0x41, 0x69, 0x5a, 0x72, 0x48, 0x59, 0x4e, 0x53, 0x56, 0x63, 0x36, 0x31, 0x4c, 0x77, 0x44, 0x4b, 0x67, 0x45, 0x44, 0x67, 0x34, 0x58, 0x53, 0x73, 0x59, 0x50, 0x57, 0x48, 0x67, 0x4a, 0x32, 0x75, 0x4e, 0x6d, 0x53, 0x52, 0x58, 0x62, 0x42, 0x6f, 0x47, 0x4f, 0x71, 0x4b, 0x59, 0x63, 0x6c, 0x33, 0x71, 0x4a, 0x66, 0x45, 0x79, 0x63, 0x65, 0x6c, 0x0a, 0x2f, 0x46, 0x56, 0x4c, 0x38, 0x2f, 0x42, 0x2f, 0x75, 0x57, 0x55, 0x39, 0x4a, 0x32, 0x6a, 0x51, 0x7a, 0x47, 0x76, 0x36, 0x55, 0x35, 0x33, 0x68, 0x6b, 0x52, 0x72, 0x4a, 0x58, 0x52, 0x71, 0x57, 0x62, 0x54, 0x4b, 0x48, 0x37, 0x51, 0x4d, 0x67, 0x79, 0x41, 0x4c, 0x4f, 0x57, 0x72, 0x37, 0x5a, 0x36, 0x76, 0x32, 0x79, 0x54, 0x63, 0x51, 0x76, 0x47, 0x39, 0x39, 0x66, 0x65, 0x76, 0x58, 0x34, 0x69, 0x38, 0x62, 0x75, 0x4d, 0x54, 0x6f, 0x6c, 0x55, 0x56, 0x56, 0x6e, 0x0a, 0x6a, 0x57, 0x51, 0x79, 0x65, 0x2b, 0x6d, 0x65, 0x77, 0x34, 0x4b, 0x36, 0x4b, 0x69, 0x33, 0x70, 0x48, 0x72, 0x54, 0x67, 0x53, 0x41, 0x61, 0x69, 0x2f, 0x47, 0x65, 0x76, 0x48, 0x79, 0x49, 0x43, 0x63, 0x2f, 0x73, 0x67, 0x43, 0x71, 0x2b, 0x64, 0x56, 0x45, 0x75, 0x68, 0x7a, 0x66, 0x39, 0x67, 0x52, 0x37, 0x41, 0x2f, 0x58, 0x65, 0x38, 0x62, 0x56, 0x72, 0x32, 0x58, 0x49, 0x5a, 0x59, 0x74, 0x43, 0x74, 0x46, 0x65, 0x6e, 0x54, 0x67, 0x43, 0x52, 0x32, 0x79, 0x35, 0x0a, 0x39, 0x50, 0x59, 0x6a, 0x4a, 0x62, 0x69, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x64, 0x77, 0x6a, 0x36, 0x78, 0x4c, 0x45, 0x6f, 0x6b, 0x43, 0x5a, 0x59, 0x43, 0x44, 0x7a, 0x69, 0x66, 0x71, 0x72, 0x58, 0x50, 0x57, 0x2b, 0x36, 0x4d, 0x59, 0x67, 0x4b, 0x42, 0x65, 0x73, 0x6e, 0x74, 0x61, 0x46, 0x4a, 0x37, 0x71, 0x42, 0x46, 0x56, 0x48, 0x76, 0x6d, 0x4a, 0x32, 0x57, 0x5a, 0x49, 0x43, 0x47, 0x6f, 0x6f, 0x37, 0x7a, 0x37, 0x47, 0x4a, 0x61, 0x37, 0x55, 0x6d, 0x38, 0x4d, 0x0a, 0x37, 0x59, 0x4e, 0x52, 0x54, 0x4f, 0x6c, 0x5a, 0x34, 0x69, 0x42, 0x67, 0x78, 0x63, 0x4a, 0x6c, 0x6b, 0x6f, 0x4b, 0x4d, 0x38, 0x78, 0x41, 0x66, 0x44, 0x6f, 0x71, 0x58, 0x76, 0x6e, 0x65, 0x43, 0x62, 0x54, 0x2b, 0x50, 0x48, 0x56, 0x32, 0x38, 0x53, 0x53, 0x65, 0x39, 0x7a, 0x45, 0x38, 0x50, 0x34, 0x63, 0x35, 0x32, 0x68, 0x67, 0x51, 0x6a, 0x78, 0x63, 0x43, 0x4d, 0x45, 0x6c, 0x76, 0x39, 0x32, 0x34, 0x53, 0x67, 0x4a, 0x50, 0x46, 0x49, 0x2f, 0x32, 0x52, 0x38, 0x0a, 0x30, 0x4c, 0x35, 0x63, 0x46, 0x74, 0x48, 0x76, 0x6d, 0x61, 0x33, 0x41, 0x48, 0x2f, 0x76, 0x4c, 0x72, 0x72, 0x77, 0x34, 0x49, 0x67, 0x59, 0x6d, 0x5a, 0x4e, 0x72, 0x61, 0x6c, 0x77, 0x34, 0x2f, 0x4b, 0x42, 0x56, 0x45, 0x71, 0x45, 0x38, 0x41, 0x79, 0x76, 0x43, 0x61, 0x7a, 0x4d, 0x39, 0x30, 0x61, 0x72, 0x51, 0x2b, 0x50, 0x4f, 0x75, 0x56, 0x37, 0x4c, 0x58, 0x54, 0x57, 0x74, 0x69, 0x42, 0x6d, 0x65, 0x6c, 0x44, 0x47, 0x44, 0x66, 0x72, 0x73, 0x37, 0x76, 0x52, 0x0a, 0x57, 0x47, 0x4a, 0x42, 0x38, 0x32, 0x62, 0x53, 0x6a, 0x36, 0x70, 0x34, 0x6c, 0x56, 0x51, 0x67, 0x77, 0x31, 0x6f, 0x75, 0x64, 0x43, 0x76, 0x56, 0x30, 0x62, 0x34, 0x59, 0x61, 0x63, 0x43, 0x73, 0x31, 0x61, 0x54, 0x50, 0x4f, 0x62, 0x70, 0x52, 0x68, 0x41, 0x4e, 0x6c, 0x36, 0x57, 0x4c, 0x41, 0x59, 0x76, 0x37, 0x59, 0x54, 0x56, 0x57, 0x57, 0x34, 0x74, 0x41, 0x52, 0x2b, 0x6b, 0x67, 0x30, 0x45, 0x65, 0x79, 0x65, 0x37, 0x51, 0x55, 0x64, 0x35, 0x4d, 0x6a, 0x57, 0x0a, 0x48, 0x59, 0x62, 0x4c, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x47, 0x54, 0x53, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x54, 0x43, 0x43, 0x41, 0x59, 0x36, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4e, 0x41, 0x67, 0x50, 0x6c, 0x75, 0x49, 0x4c, 0x72, 0x49, 0x50, 0x67, 0x6c, 0x4a, 0x32, 0x30, 0x39, 0x5a, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x48, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x69, 0x0a, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x5a, 0x52, 0x32, 0x39, 0x76, 0x5a, 0x32, 0x78, 0x6c, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x49, 0x45, 0x78, 0x4d, 0x51, 0x7a, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x4c, 0x52, 0x31, 0x52, 0x54, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x55, 0x6a, 0x4d, 0x77, 0x0a, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x59, 0x77, 0x4e, 0x6a, 0x49, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x59, 0x77, 0x4e, 0x6a, 0x49, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x42, 0x48, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x5a, 0x0a, 0x52, 0x32, 0x39, 0x76, 0x5a, 0x32, 0x78, 0x6c, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x49, 0x45, 0x78, 0x4d, 0x51, 0x7a, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x4c, 0x52, 0x31, 0x52, 0x54, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x55, 0x6a, 0x4d, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x0a, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x51, 0x66, 0x54, 0x7a, 0x4f, 0x48, 0x4d, 0x79, 0x6d, 0x4b, 0x6f, 0x59, 0x54, 0x65, 0x79, 0x38, 0x63, 0x68, 0x57, 0x45, 0x47, 0x4a, 0x36, 0x6c, 0x61, 0x64, 0x4b, 0x30, 0x75, 0x46, 0x78, 0x68, 0x31, 0x4d, 0x4a, 0x37, 0x78, 0x2f, 0x4a, 0x6c, 0x46, 0x79, 0x62, 0x2b, 0x4b, 0x66, 0x31, 0x71, 0x50, 0x4b, 0x7a, 0x45, 0x55, 0x55, 0x52, 0x6f, 0x75, 0x74, 0x0a, 0x37, 0x33, 0x36, 0x47, 0x6a, 0x4f, 0x79, 0x78, 0x66, 0x69, 0x2f, 0x2f, 0x71, 0x58, 0x47, 0x64, 0x47, 0x49, 0x52, 0x46, 0x42, 0x45, 0x46, 0x56, 0x62, 0x69, 0x76, 0x71, 0x4a, 0x6e, 0x2b, 0x37, 0x6b, 0x41, 0x48, 0x6a, 0x53, 0x78, 0x6d, 0x36, 0x35, 0x46, 0x53, 0x57, 0x52, 0x51, 0x6d, 0x78, 0x31, 0x57, 0x79, 0x52, 0x52, 0x4b, 0x32, 0x45, 0x45, 0x34, 0x36, 0x61, 0x6a, 0x41, 0x32, 0x41, 0x44, 0x44, 0x4c, 0x32, 0x34, 0x43, 0x65, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x0a, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54, 0x42, 0x38, 0x53, 0x61, 0x36, 0x6f, 0x43, 0x32, 0x75, 0x68, 0x59, 0x48, 0x50, 0x30, 0x2f, 0x45, 0x71, 0x0a, 0x45, 0x72, 0x32, 0x34, 0x43, 0x6d, 0x66, 0x39, 0x76, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x70, 0x41, 0x44, 0x42, 0x6d, 0x41, 0x6a, 0x45, 0x41, 0x39, 0x75, 0x45, 0x67, 0x6c, 0x52, 0x52, 0x37, 0x56, 0x4b, 0x4f, 0x51, 0x46, 0x68, 0x47, 0x2f, 0x68, 0x4d, 0x6a, 0x71, 0x62, 0x32, 0x73, 0x58, 0x6e, 0x68, 0x35, 0x47, 0x6d, 0x43, 0x43, 0x62, 0x6e, 0x39, 0x4d, 0x4e, 0x32, 0x61, 0x7a, 0x54, 0x0a, 0x4c, 0x38, 0x31, 0x38, 0x2b, 0x46, 0x73, 0x75, 0x56, 0x62, 0x75, 0x2f, 0x33, 0x5a, 0x4c, 0x33, 0x70, 0x41, 0x7a, 0x63, 0x4d, 0x65, 0x47, 0x69, 0x41, 0x6a, 0x45, 0x41, 0x2f, 0x4a, 0x64, 0x6d, 0x5a, 0x75, 0x56, 0x44, 0x46, 0x68, 0x4f, 0x44, 0x33, 0x63, 0x66, 0x66, 0x4c, 0x37, 0x34, 0x55, 0x4f, 0x4f, 0x30, 0x42, 0x7a, 0x72, 0x45, 0x58, 0x47, 0x68, 0x46, 0x31, 0x36, 0x62, 0x30, 0x44, 0x6a, 0x79, 0x5a, 0x2b, 0x68, 0x4f, 0x58, 0x4a, 0x59, 0x4b, 0x61, 0x56, 0x0a, 0x31, 0x31, 0x52, 0x5a, 0x74, 0x2b, 0x63, 0x52, 0x4c, 0x49, 0x6e, 0x55, 0x75, 0x65, 0x34, 0x58, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x47, 0x54, 0x53, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x34, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x54, 0x43, 0x43, 0x41, 0x59, 0x36, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4e, 0x41, 0x67, 0x50, 0x6c, 0x77, 0x47, 0x6a, 0x76, 0x59, 0x78, 0x71, 0x63, 0x63, 0x70, 0x42, 0x51, 0x55, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x48, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x69, 0x0a, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x5a, 0x52, 0x32, 0x39, 0x76, 0x5a, 0x32, 0x78, 0x6c, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x49, 0x45, 0x78, 0x4d, 0x51, 0x7a, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x4c, 0x52, 0x31, 0x52, 0x54, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x55, 0x6a, 0x51, 0x77, 0x0a, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x59, 0x77, 0x4e, 0x6a, 0x49, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x59, 0x77, 0x4e, 0x6a, 0x49, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x42, 0x48, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x5a, 0x0a, 0x52, 0x32, 0x39, 0x76, 0x5a, 0x32, 0x78, 0x6c, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x46, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x70, 0x59, 0x32, 0x56, 0x7a, 0x49, 0x45, 0x78, 0x4d, 0x51, 0x7a, 0x45, 0x55, 0x4d, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x4c, 0x52, 0x31, 0x52, 0x54, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x55, 0x6a, 0x51, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x0a, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x54, 0x7a, 0x64, 0x48, 0x4f, 0x6e, 0x61, 0x49, 0x74, 0x67, 0x72, 0x6b, 0x4f, 0x34, 0x4e, 0x63, 0x57, 0x42, 0x4d, 0x48, 0x74, 0x4c, 0x53, 0x5a, 0x33, 0x37, 0x77, 0x57, 0x48, 0x4f, 0x35, 0x74, 0x35, 0x47, 0x76, 0x57, 0x76, 0x56, 0x59, 0x52, 0x67, 0x31, 0x72, 0x6b, 0x44, 0x64, 0x63, 0x2f, 0x65, 0x4a, 0x6b, 0x54, 0x42, 0x61, 0x36, 0x7a, 0x7a, 0x75, 0x0a, 0x68, 0x58, 0x79, 0x69, 0x51, 0x48, 0x59, 0x37, 0x71, 0x63, 0x61, 0x34, 0x52, 0x39, 0x67, 0x71, 0x35, 0x35, 0x4b, 0x52, 0x61, 0x6e, 0x50, 0x70, 0x73, 0x58, 0x49, 0x35, 0x6e, 0x79, 0x6d, 0x66, 0x6f, 0x70, 0x6a, 0x54, 0x58, 0x31, 0x35, 0x59, 0x68, 0x6d, 0x55, 0x50, 0x6f, 0x59, 0x52, 0x6c, 0x42, 0x74, 0x48, 0x63, 0x69, 0x38, 0x6e, 0x48, 0x63, 0x38, 0x69, 0x4d, 0x61, 0x69, 0x2f, 0x6c, 0x78, 0x4b, 0x76, 0x52, 0x48, 0x59, 0x71, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x0a, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x41, 0x54, 0x4e, 0x62, 0x72, 0x64, 0x50, 0x39, 0x4a, 0x4e, 0x71, 0x50, 0x56, 0x32, 0x50, 0x79, 0x31, 0x0a, 0x50, 0x73, 0x56, 0x71, 0x38, 0x4a, 0x51, 0x64, 0x6a, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x70, 0x41, 0x44, 0x42, 0x6d, 0x41, 0x6a, 0x45, 0x41, 0x36, 0x45, 0x44, 0x2f, 0x67, 0x39, 0x34, 0x44, 0x39, 0x4a, 0x2b, 0x75, 0x48, 0x58, 0x71, 0x6e, 0x4c, 0x72, 0x6d, 0x76, 0x54, 0x2f, 0x61, 0x44, 0x48, 0x51, 0x34, 0x74, 0x68, 0x51, 0x45, 0x64, 0x30, 0x64, 0x6c, 0x71, 0x37, 0x41, 0x2f, 0x43, 0x0a, 0x72, 0x38, 0x64, 0x65, 0x56, 0x6c, 0x35, 0x63, 0x31, 0x52, 0x78, 0x59, 0x49, 0x69, 0x67, 0x4c, 0x39, 0x7a, 0x43, 0x32, 0x4c, 0x37, 0x46, 0x38, 0x41, 0x6a, 0x45, 0x41, 0x38, 0x47, 0x45, 0x38, 0x70, 0x2f, 0x53, 0x67, 0x67, 0x75, 0x4d, 0x68, 0x31, 0x59, 0x51, 0x64, 0x63, 0x34, 0x61, 0x63, 0x4c, 0x61, 0x2f, 0x4b, 0x4e, 0x4a, 0x76, 0x78, 0x6e, 0x37, 0x6b, 0x6a, 0x4e, 0x75, 0x4b, 0x38, 0x59, 0x41, 0x4f, 0x64, 0x67, 0x4c, 0x4f, 0x61, 0x56, 0x73, 0x6a, 0x68, 0x0a, 0x34, 0x72, 0x73, 0x55, 0x65, 0x63, 0x72, 0x4e, 0x49, 0x64, 0x53, 0x55, 0x74, 0x55, 0x6c, 0x44, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x65, 0x6c, 0x69, 0x61, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x76, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x64, 0x44, 0x43, 0x43, 0x41, 0x31, 0x79, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x50, 0x41, 0x57, 0x64, 0x66, 0x4a, 0x39, 0x62, 0x2b, 0x65, 0x75, 0x50, 0x6b, 0x72, 0x4c, 0x34, 0x4a, 0x57, 0x77, 0x57, 0x65, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x4d, 0x45, 0x51, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x0a, 0x41, 0x6b, 0x5a, 0x4a, 0x4d, 0x52, 0x6f, 0x77, 0x47, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x42, 0x46, 0x55, 0x5a, 0x57, 0x78, 0x70, 0x59, 0x53, 0x42, 0x47, 0x61, 0x57, 0x35, 0x73, 0x59, 0x57, 0x35, 0x6b, 0x49, 0x45, 0x39, 0x35, 0x61, 0x6a, 0x45, 0x5a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x51, 0x56, 0x47, 0x56, 0x73, 0x61, 0x57, 0x45, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x42, 0x32, 0x0a, 0x4d, 0x6a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x78, 0x4f, 0x44, 0x45, 0x78, 0x4d, 0x6a, 0x6b, 0x78, 0x4d, 0x54, 0x55, 0x31, 0x4e, 0x54, 0x52, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x7a, 0x45, 0x78, 0x4d, 0x6a, 0x6b, 0x78, 0x4d, 0x54, 0x55, 0x31, 0x4e, 0x54, 0x52, 0x61, 0x4d, 0x45, 0x51, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x5a, 0x4a, 0x4d, 0x52, 0x6f, 0x77, 0x47, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x0a, 0x44, 0x42, 0x46, 0x55, 0x5a, 0x57, 0x78, 0x70, 0x59, 0x53, 0x42, 0x47, 0x61, 0x57, 0x35, 0x73, 0x59, 0x57, 0x35, 0x6b, 0x49, 0x45, 0x39, 0x35, 0x61, 0x6a, 0x45, 0x5a, 0x4d, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x51, 0x56, 0x47, 0x56, 0x73, 0x61, 0x57, 0x45, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x42, 0x32, 0x4d, 0x6a, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x0a, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4c, 0x4c, 0x51, 0x50, 0x77, 0x65, 0x38, 0x34, 0x6e, 0x76, 0x51, 0x61, 0x35, 0x6e, 0x34, 0x34, 0x6e, 0x64, 0x70, 0x35, 0x38, 0x36, 0x64, 0x70, 0x41, 0x4f, 0x38, 0x67, 0x6d, 0x32, 0x68, 0x2f, 0x6f, 0x46, 0x6c, 0x48, 0x30, 0x77, 0x6e, 0x72, 0x49, 0x34, 0x41, 0x75, 0x68, 0x5a, 0x37, 0x0a, 0x36, 0x7a, 0x42, 0x71, 0x41, 0x4d, 0x43, 0x7a, 0x64, 0x47, 0x68, 0x2b, 0x73, 0x71, 0x2f, 0x48, 0x31, 0x57, 0x4b, 0x7a, 0x65, 0x6a, 0x39, 0x51, 0x79, 0x6f, 0x77, 0x32, 0x52, 0x43, 0x52, 0x6a, 0x30, 0x6a, 0x62, 0x70, 0x44, 0x49, 0x58, 0x32, 0x51, 0x33, 0x62, 0x56, 0x54, 0x4b, 0x46, 0x67, 0x63, 0x6d, 0x66, 0x69, 0x4b, 0x44, 0x4f, 0x6c, 0x79, 0x7a, 0x47, 0x34, 0x4f, 0x69, 0x49, 0x6a, 0x4e, 0x4c, 0x68, 0x39, 0x76, 0x56, 0x59, 0x69, 0x51, 0x4a, 0x33, 0x71, 0x0a, 0x39, 0x48, 0x73, 0x44, 0x72, 0x57, 0x6a, 0x38, 0x73, 0x6f, 0x46, 0x50, 0x6d, 0x4e, 0x42, 0x30, 0x36, 0x6f, 0x33, 0x6c, 0x66, 0x63, 0x31, 0x6a, 0x77, 0x36, 0x50, 0x32, 0x33, 0x70, 0x4c, 0x43, 0x57, 0x42, 0x6e, 0x67, 0x6c, 0x72, 0x76, 0x46, 0x78, 0x4b, 0x6b, 0x39, 0x70, 0x58, 0x53, 0x57, 0x2f, 0x71, 0x2f, 0x35, 0x69, 0x61, 0x71, 0x39, 0x6c, 0x52, 0x64, 0x55, 0x32, 0x48, 0x68, 0x45, 0x38, 0x51, 0x78, 0x33, 0x46, 0x5a, 0x4c, 0x67, 0x6d, 0x45, 0x4b, 0x6e, 0x0a, 0x70, 0x4e, 0x61, 0x71, 0x49, 0x4a, 0x4c, 0x4e, 0x77, 0x61, 0x43, 0x7a, 0x6c, 0x72, 0x49, 0x36, 0x68, 0x45, 0x4b, 0x4e, 0x66, 0x64, 0x57, 0x56, 0x35, 0x4e, 0x62, 0x62, 0x36, 0x57, 0x4c, 0x45, 0x57, 0x4c, 0x4e, 0x35, 0x78, 0x59, 0x7a, 0x54, 0x4e, 0x54, 0x4f, 0x44, 0x6e, 0x33, 0x57, 0x68, 0x55, 0x69, 0x64, 0x68, 0x4f, 0x50, 0x46, 0x5a, 0x50, 0x59, 0x35, 0x51, 0x34, 0x4c, 0x31, 0x35, 0x50, 0x4f, 0x64, 0x73, 0x6c, 0x76, 0x35, 0x65, 0x32, 0x51, 0x4a, 0x6c, 0x0a, 0x74, 0x49, 0x35, 0x63, 0x30, 0x42, 0x45, 0x30, 0x33, 0x31, 0x32, 0x2f, 0x55, 0x71, 0x65, 0x42, 0x41, 0x4d, 0x4e, 0x2f, 0x6d, 0x55, 0x57, 0x5a, 0x46, 0x64, 0x55, 0x58, 0x79, 0x41, 0x70, 0x54, 0x37, 0x47, 0x50, 0x7a, 0x6d, 0x58, 0x33, 0x4d, 0x61, 0x52, 0x4b, 0x47, 0x77, 0x68, 0x66, 0x77, 0x41, 0x5a, 0x36, 0x2f, 0x68, 0x4c, 0x7a, 0x52, 0x55, 0x73, 0x73, 0x62, 0x6b, 0x6d, 0x62, 0x4f, 0x70, 0x46, 0x50, 0x6c, 0x6f, 0x62, 0x2f, 0x45, 0x32, 0x77, 0x6e, 0x57, 0x0a, 0x35, 0x6f, 0x6c, 0x57, 0x4b, 0x38, 0x6a, 0x6a, 0x66, 0x4e, 0x37, 0x6a, 0x2f, 0x34, 0x6e, 0x6c, 0x4e, 0x57, 0x34, 0x6f, 0x36, 0x47, 0x77, 0x4c, 0x49, 0x31, 0x47, 0x70, 0x4a, 0x51, 0x58, 0x72, 0x53, 0x50, 0x6a, 0x64, 0x73, 0x63, 0x72, 0x36, 0x62, 0x41, 0x68, 0x52, 0x37, 0x37, 0x63, 0x59, 0x62, 0x45, 0x54, 0x4b, 0x4a, 0x75, 0x46, 0x7a, 0x78, 0x6f, 0x6b, 0x47, 0x67, 0x65, 0x57, 0x4b, 0x72, 0x4c, 0x44, 0x69, 0x4b, 0x63, 0x61, 0x35, 0x4a, 0x4c, 0x4e, 0x72, 0x0a, 0x52, 0x42, 0x48, 0x30, 0x70, 0x55, 0x50, 0x43, 0x54, 0x45, 0x50, 0x6c, 0x63, 0x44, 0x61, 0x4d, 0x74, 0x6a, 0x4e, 0x58, 0x65, 0x70, 0x55, 0x75, 0x67, 0x71, 0x44, 0x30, 0x58, 0x42, 0x43, 0x7a, 0x59, 0x59, 0x50, 0x32, 0x41, 0x67, 0x57, 0x47, 0x4c, 0x6e, 0x77, 0x74, 0x62, 0x4e, 0x77, 0x44, 0x52, 0x6d, 0x34, 0x31, 0x6b, 0x39, 0x56, 0x36, 0x6c, 0x53, 0x2f, 0x65, 0x49, 0x4e, 0x68, 0x62, 0x66, 0x70, 0x53, 0x51, 0x42, 0x47, 0x71, 0x36, 0x57, 0x54, 0x30, 0x45, 0x0a, 0x42, 0x58, 0x57, 0x64, 0x4e, 0x36, 0x49, 0x4f, 0x4c, 0x6a, 0x33, 0x72, 0x77, 0x61, 0x52, 0x53, 0x67, 0x2f, 0x37, 0x51, 0x61, 0x39, 0x52, 0x6d, 0x6a, 0x74, 0x7a, 0x47, 0x36, 0x52, 0x4a, 0x4f, 0x48, 0x53, 0x70, 0x58, 0x71, 0x68, 0x43, 0x38, 0x66, 0x46, 0x36, 0x43, 0x66, 0x61, 0x61, 0x6d, 0x79, 0x66, 0x49, 0x74, 0x75, 0x66, 0x55, 0x58, 0x4a, 0x36, 0x33, 0x52, 0x44, 0x6f, 0x6c, 0x55, 0x4b, 0x35, 0x58, 0x36, 0x77, 0x4b, 0x30, 0x64, 0x6d, 0x42, 0x52, 0x34, 0x0a, 0x4d, 0x30, 0x4b, 0x47, 0x43, 0x71, 0x6c, 0x7a, 0x74, 0x66, 0x74, 0x30, 0x44, 0x62, 0x63, 0x62, 0x4d, 0x42, 0x6e, 0x45, 0x57, 0x67, 0x34, 0x63, 0x4a, 0x37, 0x66, 0x61, 0x47, 0x4e, 0x44, 0x2f, 0x69, 0x73, 0x67, 0x46, 0x75, 0x76, 0x47, 0x71, 0x48, 0x4b, 0x49, 0x33, 0x74, 0x2b, 0x5a, 0x49, 0x70, 0x45, 0x59, 0x73, 0x6c, 0x4f, 0x71, 0x6f, 0x64, 0x6d, 0x4a, 0x48, 0x69, 0x78, 0x42, 0x54, 0x42, 0x30, 0x68, 0x58, 0x62, 0x4f, 0x4b, 0x53, 0x54, 0x62, 0x61, 0x75, 0x0a, 0x42, 0x63, 0x76, 0x63, 0x77, 0x55, 0x70, 0x65, 0x6a, 0x36, 0x77, 0x39, 0x47, 0x55, 0x37, 0x43, 0x37, 0x57, 0x42, 0x31, 0x4b, 0x39, 0x76, 0x42, 0x79, 0x6b, 0x4c, 0x56, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x59, 0x7a, 0x42, 0x68, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x77, 0x51, 0x59, 0x4d, 0x42, 0x61, 0x41, 0x46, 0x48, 0x4b, 0x73, 0x35, 0x44, 0x4e, 0x35, 0x71, 0x6b, 0x57, 0x48, 0x39, 0x76, 0x32, 0x73, 0x48, 0x5a, 0x37, 0x57, 0x0a, 0x78, 0x79, 0x2b, 0x47, 0x32, 0x43, 0x51, 0x35, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x79, 0x72, 0x4f, 0x51, 0x7a, 0x65, 0x61, 0x70, 0x46, 0x68, 0x2f, 0x62, 0x39, 0x72, 0x42, 0x32, 0x65, 0x31, 0x73, 0x63, 0x76, 0x68, 0x74, 0x67, 0x6b, 0x4f, 0x54, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x0a, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x6f, 0x44, 0x74, 0x5a, 0x70, 0x77, 0x6d, 0x55, 0x50, 0x6a, 0x61, 0x45, 0x30, 0x6e, 0x34, 0x76, 0x4f, 0x61, 0x57, 0x57, 0x6c, 0x2f, 0x6f, 0x52, 0x72, 0x66, 0x78, 0x6e, 0x38, 0x33, 0x45, 0x4a, 0x0a, 0x38, 0x72, 0x4b, 0x4a, 0x68, 0x47, 0x64, 0x45, 0x72, 0x37, 0x6e, 0x76, 0x37, 0x5a, 0x62, 0x73, 0x6e, 0x47, 0x54, 0x62, 0x4d, 0x6a, 0x42, 0x76, 0x5a, 0x35, 0x71, 0x73, 0x66, 0x6c, 0x2b, 0x79, 0x71, 0x77, 0x45, 0x32, 0x66, 0x6f, 0x48, 0x36, 0x35, 0x49, 0x52, 0x65, 0x30, 0x71, 0x77, 0x32, 0x34, 0x47, 0x74, 0x69, 0x78, 0x58, 0x31, 0x4c, 0x44, 0x6f, 0x4a, 0x74, 0x30, 0x6e, 0x5a, 0x69, 0x30, 0x66, 0x36, 0x58, 0x2b, 0x4a, 0x38, 0x77, 0x66, 0x42, 0x6a, 0x35, 0x0a, 0x74, 0x46, 0x4a, 0x33, 0x67, 0x68, 0x31, 0x32, 0x32, 0x39, 0x4d, 0x64, 0x71, 0x66, 0x44, 0x42, 0x6d, 0x67, 0x43, 0x39, 0x62, 0x58, 0x58, 0x59, 0x66, 0x65, 0x66, 0x36, 0x78, 0x7a, 0x69, 0x6a, 0x6e, 0x48, 0x44, 0x6f, 0x52, 0x6e, 0x6b, 0x44, 0x72, 0x79, 0x35, 0x30, 0x32, 0x33, 0x58, 0x34, 0x62, 0x6c, 0x4d, 0x4d, 0x41, 0x38, 0x69, 0x5a, 0x47, 0x6f, 0x6b, 0x31, 0x47, 0x54, 0x7a, 0x54, 0x79, 0x56, 0x52, 0x38, 0x71, 0x50, 0x41, 0x73, 0x35, 0x6d, 0x34, 0x48, 0x0a, 0x65, 0x57, 0x39, 0x71, 0x34, 0x65, 0x62, 0x71, 0x6b, 0x59, 0x4a, 0x70, 0x43, 0x68, 0x33, 0x44, 0x66, 0x6c, 0x6d, 0x69, 0x6e, 0x6d, 0x74, 0x47, 0x46, 0x5a, 0x68, 0x62, 0x30, 0x36, 0x39, 0x47, 0x48, 0x57, 0x4c, 0x49, 0x7a, 0x6f, 0x42, 0x53, 0x53, 0x52, 0x45, 0x2f, 0x79, 0x51, 0x51, 0x53, 0x77, 0x78, 0x4e, 0x38, 0x50, 0x7a, 0x75, 0x4b, 0x6c, 0x74, 0x73, 0x38, 0x6f, 0x42, 0x34, 0x4b, 0x74, 0x49, 0x74, 0x55, 0x73, 0x69, 0x52, 0x6e, 0x44, 0x65, 0x2b, 0x43, 0x0a, 0x79, 0x37, 0x34, 0x38, 0x66, 0x64, 0x48, 0x69, 0x66, 0x36, 0x34, 0x57, 0x31, 0x6c, 0x5a, 0x59, 0x75, 0x64, 0x6f, 0x67, 0x73, 0x59, 0x4d, 0x56, 0x6f, 0x65, 0x2b, 0x4b, 0x54, 0x54, 0x4a, 0x76, 0x51, 0x53, 0x38, 0x54, 0x55, 0x6f, 0x4b, 0x55, 0x31, 0x78, 0x72, 0x42, 0x65, 0x4b, 0x4a, 0x52, 0x33, 0x53, 0x74, 0x77, 0x62, 0x62, 0x63, 0x61, 0x2b, 0x66, 0x65, 0x77, 0x34, 0x47, 0x65, 0x58, 0x56, 0x74, 0x74, 0x38, 0x59, 0x56, 0x4d, 0x4a, 0x41, 0x79, 0x67, 0x43, 0x0a, 0x51, 0x4d, 0x65, 0x7a, 0x32, 0x50, 0x32, 0x63, 0x63, 0x47, 0x72, 0x47, 0x4b, 0x4d, 0x4f, 0x46, 0x36, 0x65, 0x4c, 0x74, 0x47, 0x70, 0x4f, 0x67, 0x33, 0x6b, 0x75, 0x59, 0x6f, 0x6f, 0x51, 0x2b, 0x42, 0x58, 0x63, 0x42, 0x6c, 0x6a, 0x33, 0x37, 0x74, 0x43, 0x41, 0x50, 0x6e, 0x48, 0x49, 0x43, 0x65, 0x68, 0x49, 0x76, 0x31, 0x61, 0x4f, 0x36, 0x55, 0x58, 0x69, 0x76, 0x4b, 0x69, 0x74, 0x45, 0x5a, 0x55, 0x36, 0x31, 0x2f, 0x51, 0x72, 0x6f, 0x77, 0x63, 0x31, 0x35, 0x0a, 0x68, 0x32, 0x45, 0x72, 0x33, 0x6f, 0x42, 0x58, 0x52, 0x62, 0x39, 0x6e, 0x38, 0x5a, 0x75, 0x52, 0x58, 0x71, 0x57, 0x6b, 0x37, 0x46, 0x6c, 0x49, 0x45, 0x41, 0x30, 0x34, 0x78, 0x37, 0x44, 0x36, 0x77, 0x30, 0x52, 0x74, 0x42, 0x50, 0x56, 0x34, 0x55, 0x42, 0x79, 0x53, 0x6c, 0x6c, 0x76, 0x61, 0x39, 0x62, 0x67, 0x75, 0x75, 0x6c, 0x76, 0x50, 0x35, 0x66, 0x42, 0x71, 0x6e, 0x55, 0x73, 0x76, 0x57, 0x48, 0x4d, 0x74, 0x54, 0x79, 0x33, 0x45, 0x48, 0x44, 0x37, 0x30, 0x0a, 0x73, 0x7a, 0x2b, 0x72, 0x46, 0x51, 0x34, 0x37, 0x47, 0x55, 0x47, 0x4b, 0x70, 0x4d, 0x46, 0x58, 0x45, 0x6d, 0x5a, 0x78, 0x54, 0x50, 0x70, 0x54, 0x34, 0x31, 0x66, 0x72, 0x59, 0x70, 0x55, 0x4a, 0x6e, 0x6c, 0x54, 0x64, 0x30, 0x63, 0x49, 0x38, 0x56, 0x7a, 0x79, 0x39, 0x4f, 0x4b, 0x32, 0x59, 0x5a, 0x4c, 0x65, 0x34, 0x41, 0x35, 0x70, 0x54, 0x56, 0x6d, 0x42, 0x64, 0x73, 0x39, 0x68, 0x43, 0x47, 0x31, 0x78, 0x4c, 0x45, 0x6f, 0x6f, 0x63, 0x36, 0x2b, 0x74, 0x39, 0x0a, 0x78, 0x6e, 0x70, 0x70, 0x78, 0x79, 0x64, 0x2f, 0x70, 0x50, 0x69, 0x4c, 0x38, 0x75, 0x53, 0x55, 0x5a, 0x6f, 0x64, 0x4c, 0x36, 0x5a, 0x51, 0x48, 0x43, 0x52, 0x4a, 0x35, 0x69, 0x72, 0x4c, 0x72, 0x64, 0x41, 0x54, 0x63, 0x7a, 0x76, 0x52, 0x45, 0x57, 0x65, 0x41, 0x57, 0x79, 0x73, 0x55, 0x73, 0x57, 0x4e, 0x63, 0x38, 0x65, 0x38, 0x39, 0x69, 0x68, 0x6d, 0x70, 0x51, 0x66, 0x54, 0x55, 0x32, 0x5a, 0x71, 0x66, 0x37, 0x4e, 0x2b, 0x63, 0x6f, 0x78, 0x39, 0x6a, 0x51, 0x0a, 0x72, 0x61, 0x56, 0x70, 0x6c, 0x49, 0x2f, 0x6f, 0x77, 0x64, 0x38, 0x6b, 0x2b, 0x42, 0x73, 0x48, 0x4d, 0x59, 0x65, 0x42, 0x32, 0x46, 0x33, 0x32, 0x36, 0x43, 0x6a, 0x59, 0x53, 0x6c, 0x4b, 0x41, 0x72, 0x42, 0x50, 0x75, 0x55, 0x42, 0x51, 0x65, 0x6d, 0x4d, 0x63, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x2d, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x42, 0x52, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, 0x20, 0x32, 0x30, 0x32, 0x30, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x32, 0x7a, 0x43, 0x43, 0x41, 0x6d, 0x43, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x66, 0x4d, 0x6d, 0x50, 0x4b, 0x34, 0x54, 0x58, 0x33, 0x2b, 0x6f, 0x50, 0x79, 0x57, 0x57, 0x61, 0x30, 0x30, 0x74, 0x4e, 0x6c, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x49, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x45, 0x0a, 0x52, 0x54, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x43, 0x31, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x48, 0x62, 0x57, 0x4a, 0x49, 0x4d, 0x53, 0x49, 0x77, 0x49, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x6c, 0x45, 0x4c, 0x56, 0x52, 0x53, 0x56, 0x56, 0x4e, 0x55, 0x49, 0x45, 0x4a, 0x53, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x53, 0x41, 0x79, 0x0a, 0x4d, 0x44, 0x49, 0x77, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x49, 0x77, 0x4d, 0x44, 0x49, 0x78, 0x4d, 0x54, 0x41, 0x35, 0x4e, 0x44, 0x55, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x31, 0x4d, 0x44, 0x49, 0x78, 0x4d, 0x54, 0x41, 0x35, 0x4e, 0x44, 0x51, 0x31, 0x4f, 0x56, 0x6f, 0x77, 0x53, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x45, 0x55, 0x78, 0x46, 0x54, 0x41, 0x54, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x6f, 0x54, 0x44, 0x45, 0x51, 0x74, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x52, 0x32, 0x31, 0x69, 0x53, 0x44, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x5a, 0x52, 0x43, 0x31, 0x55, 0x55, 0x6c, 0x56, 0x54, 0x56, 0x43, 0x42, 0x43, 0x55, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x45, 0x67, 0x4d, 0x6a, 0x41, 0x79, 0x4d, 0x44, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x0a, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x4d, 0x62, 0x4c, 0x78, 0x79, 0x6a, 0x52, 0x2b, 0x34, 0x54, 0x31, 0x6d, 0x75, 0x39, 0x43, 0x46, 0x43, 0x44, 0x68, 0x51, 0x32, 0x74, 0x75, 0x64, 0x61, 0x33, 0x38, 0x4b, 0x77, 0x4f, 0x45, 0x31, 0x48, 0x61, 0x54, 0x4a, 0x64, 0x64, 0x5a, 0x4f, 0x30, 0x46, 0x6c, 0x61, 0x78, 0x37, 0x6d, 0x4e, 0x43, 0x71, 0x37, 0x0a, 0x64, 0x50, 0x59, 0x53, 0x7a, 0x75, 0x68, 0x74, 0x35, 0x36, 0x76, 0x6b, 0x50, 0x45, 0x34, 0x2f, 0x52, 0x41, 0x69, 0x4c, 0x7a, 0x52, 0x5a, 0x78, 0x79, 0x37, 0x2b, 0x53, 0x6d, 0x66, 0x53, 0x6b, 0x31, 0x7a, 0x78, 0x51, 0x56, 0x46, 0x4b, 0x51, 0x68, 0x59, 0x4e, 0x34, 0x6c, 0x47, 0x64, 0x6e, 0x6f, 0x78, 0x77, 0x4a, 0x47, 0x54, 0x31, 0x31, 0x4e, 0x49, 0x58, 0x65, 0x37, 0x57, 0x42, 0x39, 0x78, 0x77, 0x79, 0x30, 0x51, 0x56, 0x4b, 0x35, 0x62, 0x75, 0x58, 0x75, 0x0a, 0x51, 0x71, 0x4f, 0x43, 0x41, 0x51, 0x30, 0x77, 0x67, 0x67, 0x45, 0x4a, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x48, 0x4f, 0x52, 0x45, 0x4b, 0x76, 0x2f, 0x56, 0x62, 0x4e, 0x61, 0x66, 0x41, 0x6b, 0x6c, 0x31, 0x62, 0x4b, 0x36, 0x43, 0x4b, 0x42, 0x72, 0x71, 0x78, 0x39, 0x74, 0x0a, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x43, 0x42, 0x78, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x66, 0x42, 0x49, 0x47, 0x2b, 0x4d, 0x49, 0x47, 0x37, 0x4d, 0x44, 0x36, 0x67, 0x50, 0x4b, 0x41, 0x36, 0x68, 0x6a, 0x68, 0x6f, 0x64, 0x48, 0x52, 0x77, 0x4f, 0x69, 0x38, 0x76, 0x59, 0x33, 0x4a, 0x73, 0x4c, 0x6d, 0x51, 0x74, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x75, 0x0a, 0x62, 0x6d, 0x56, 0x30, 0x4c, 0x32, 0x4e, 0x79, 0x62, 0x43, 0x39, 0x6b, 0x4c, 0x58, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x58, 0x32, 0x4a, 0x79, 0x58, 0x33, 0x4a, 0x76, 0x62, 0x33, 0x52, 0x66, 0x59, 0x32, 0x46, 0x66, 0x4d, 0x56, 0x38, 0x79, 0x4d, 0x44, 0x49, 0x77, 0x4c, 0x6d, 0x4e, 0x79, 0x62, 0x44, 0x42, 0x35, 0x6f, 0x48, 0x65, 0x67, 0x64, 0x59, 0x5a, 0x7a, 0x62, 0x47, 0x52, 0x68, 0x63, 0x44, 0x6f, 0x76, 0x4c, 0x32, 0x52, 0x70, 0x63, 0x6d, 0x56, 0x6a, 0x0a, 0x64, 0x47, 0x39, 0x79, 0x65, 0x53, 0x35, 0x6b, 0x4c, 0x58, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x6d, 0x35, 0x6c, 0x64, 0x43, 0x39, 0x44, 0x54, 0x6a, 0x31, 0x45, 0x4c, 0x56, 0x52, 0x53, 0x56, 0x56, 0x4e, 0x55, 0x4a, 0x54, 0x49, 0x77, 0x51, 0x6c, 0x49, 0x6c, 0x4d, 0x6a, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x4a, 0x54, 0x49, 0x77, 0x51, 0x30, 0x45, 0x6c, 0x4d, 0x6a, 0x41, 0x78, 0x4a, 0x54, 0x49, 0x77, 0x4d, 0x6a, 0x41, 0x79, 0x4d, 0x43, 0x78, 0x50, 0x0a, 0x50, 0x55, 0x51, 0x74, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x6c, 0x4d, 0x6a, 0x42, 0x48, 0x62, 0x57, 0x4a, 0x49, 0x4c, 0x45, 0x4d, 0x39, 0x52, 0x45, 0x55, 0x2f, 0x59, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x56, 0x79, 0x5a, 0x58, 0x5a, 0x76, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x62, 0x47, 0x6c, 0x7a, 0x64, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x0a, 0x41, 0x77, 0x4e, 0x70, 0x41, 0x44, 0x42, 0x6d, 0x41, 0x6a, 0x45, 0x41, 0x6c, 0x4a, 0x41, 0x74, 0x45, 0x2f, 0x72, 0x68, 0x59, 0x2f, 0x68, 0x68, 0x59, 0x2b, 0x69, 0x74, 0x68, 0x58, 0x68, 0x55, 0x6b, 0x5a, 0x79, 0x34, 0x6b, 0x7a, 0x67, 0x2b, 0x47, 0x6b, 0x48, 0x61, 0x51, 0x42, 0x5a, 0x54, 0x51, 0x67, 0x6a, 0x4b, 0x4c, 0x34, 0x37, 0x78, 0x50, 0x6f, 0x46, 0x57, 0x77, 0x4b, 0x72, 0x59, 0x37, 0x52, 0x6a, 0x45, 0x73, 0x4b, 0x37, 0x30, 0x50, 0x76, 0x6f, 0x6d, 0x0a, 0x41, 0x6a, 0x45, 0x41, 0x38, 0x79, 0x6a, 0x69, 0x78, 0x74, 0x73, 0x72, 0x6d, 0x66, 0x75, 0x33, 0x55, 0x62, 0x67, 0x6b, 0x6f, 0x36, 0x53, 0x55, 0x65, 0x68, 0x6f, 0x2f, 0x35, 0x6a, 0x62, 0x69, 0x41, 0x31, 0x63, 0x7a, 0x69, 0x6a, 0x44, 0x4c, 0x67, 0x73, 0x66, 0x57, 0x46, 0x42, 0x48, 0x56, 0x64, 0x57, 0x4e, 0x62, 0x46, 0x4a, 0x57, 0x63, 0x48, 0x77, 0x48, 0x50, 0x32, 0x4e, 0x56, 0x79, 0x70, 0x77, 0x38, 0x37, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x2d, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, 0x20, 0x32, 0x30, 0x32, 0x30, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x32, 0x7a, 0x43, 0x43, 0x41, 0x6d, 0x43, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x58, 0x77, 0x4a, 0x42, 0x31, 0x33, 0x71, 0x48, 0x66, 0x45, 0x77, 0x44, 0x6f, 0x36, 0x79, 0x57, 0x6a, 0x66, 0x76, 0x2f, 0x30, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x49, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x45, 0x0a, 0x52, 0x54, 0x45, 0x56, 0x4d, 0x42, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4d, 0x52, 0x43, 0x31, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x48, 0x62, 0x57, 0x4a, 0x49, 0x4d, 0x53, 0x49, 0x77, 0x49, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x6c, 0x45, 0x4c, 0x56, 0x52, 0x53, 0x56, 0x56, 0x4e, 0x55, 0x49, 0x45, 0x56, 0x57, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x53, 0x41, 0x79, 0x0a, 0x4d, 0x44, 0x49, 0x77, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x49, 0x77, 0x4d, 0x44, 0x49, 0x78, 0x4d, 0x54, 0x45, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x31, 0x4d, 0x44, 0x49, 0x78, 0x4d, 0x54, 0x41, 0x35, 0x4e, 0x54, 0x6b, 0x31, 0x4f, 0x56, 0x6f, 0x77, 0x53, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x45, 0x55, 0x78, 0x46, 0x54, 0x41, 0x54, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x6f, 0x54, 0x44, 0x45, 0x51, 0x74, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x52, 0x32, 0x31, 0x69, 0x53, 0x44, 0x45, 0x69, 0x4d, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x5a, 0x52, 0x43, 0x31, 0x55, 0x55, 0x6c, 0x56, 0x54, 0x56, 0x43, 0x42, 0x46, 0x56, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x44, 0x45, 0x67, 0x4d, 0x6a, 0x41, 0x79, 0x4d, 0x44, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x0a, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x50, 0x45, 0x4c, 0x33, 0x59, 0x5a, 0x44, 0x49, 0x42, 0x6e, 0x66, 0x6c, 0x34, 0x58, 0x6f, 0x49, 0x6b, 0x71, 0x62, 0x7a, 0x35, 0x32, 0x59, 0x76, 0x37, 0x51, 0x46, 0x4a, 0x73, 0x6e, 0x4c, 0x34, 0x36, 0x62, 0x53, 0x6a, 0x38, 0x57, 0x65, 0x65, 0x48, 0x73, 0x78, 0x69, 0x61, 0x6d, 0x4a, 0x72, 0x53, 0x63, 0x38, 0x0a, 0x5a, 0x52, 0x43, 0x43, 0x2f, 0x4e, 0x2f, 0x44, 0x6e, 0x55, 0x37, 0x77, 0x4d, 0x79, 0x50, 0x45, 0x30, 0x6a, 0x4c, 0x31, 0x48, 0x4c, 0x44, 0x66, 0x4d, 0x78, 0x64, 0x64, 0x78, 0x66, 0x43, 0x78, 0x69, 0x76, 0x6e, 0x76, 0x75, 0x62, 0x63, 0x55, 0x79, 0x69, 0x6c, 0x4b, 0x77, 0x67, 0x2b, 0x70, 0x66, 0x33, 0x56, 0x6c, 0x53, 0x53, 0x6f, 0x77, 0x5a, 0x2f, 0x52, 0x6b, 0x39, 0x39, 0x59, 0x61, 0x64, 0x39, 0x72, 0x44, 0x77, 0x70, 0x64, 0x68, 0x51, 0x6e, 0x74, 0x4a, 0x0a, 0x72, 0x61, 0x4f, 0x43, 0x41, 0x51, 0x30, 0x77, 0x67, 0x67, 0x45, 0x4a, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x48, 0x38, 0x51, 0x41, 0x52, 0x59, 0x33, 0x4f, 0x71, 0x51, 0x6f, 0x35, 0x46, 0x44, 0x34, 0x70, 0x50, 0x66, 0x73, 0x61, 0x7a, 0x4b, 0x32, 0x2f, 0x75, 0x6d, 0x4c, 0x0a, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x43, 0x42, 0x78, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x66, 0x42, 0x49, 0x47, 0x2b, 0x4d, 0x49, 0x47, 0x37, 0x4d, 0x44, 0x36, 0x67, 0x50, 0x4b, 0x41, 0x36, 0x68, 0x6a, 0x68, 0x6f, 0x64, 0x48, 0x52, 0x77, 0x4f, 0x69, 0x38, 0x76, 0x59, 0x33, 0x4a, 0x73, 0x4c, 0x6d, 0x51, 0x74, 0x64, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x75, 0x0a, 0x62, 0x6d, 0x56, 0x30, 0x4c, 0x32, 0x4e, 0x79, 0x62, 0x43, 0x39, 0x6b, 0x4c, 0x58, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x58, 0x32, 0x56, 0x32, 0x58, 0x33, 0x4a, 0x76, 0x62, 0x33, 0x52, 0x66, 0x59, 0x32, 0x46, 0x66, 0x4d, 0x56, 0x38, 0x79, 0x4d, 0x44, 0x49, 0x77, 0x4c, 0x6d, 0x4e, 0x79, 0x62, 0x44, 0x42, 0x35, 0x6f, 0x48, 0x65, 0x67, 0x64, 0x59, 0x5a, 0x7a, 0x62, 0x47, 0x52, 0x68, 0x63, 0x44, 0x6f, 0x76, 0x4c, 0x32, 0x52, 0x70, 0x63, 0x6d, 0x56, 0x6a, 0x0a, 0x64, 0x47, 0x39, 0x79, 0x65, 0x53, 0x35, 0x6b, 0x4c, 0x58, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x4c, 0x6d, 0x35, 0x6c, 0x64, 0x43, 0x39, 0x44, 0x54, 0x6a, 0x31, 0x45, 0x4c, 0x56, 0x52, 0x53, 0x56, 0x56, 0x4e, 0x55, 0x4a, 0x54, 0x49, 0x77, 0x52, 0x56, 0x59, 0x6c, 0x4d, 0x6a, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x4a, 0x54, 0x49, 0x77, 0x51, 0x30, 0x45, 0x6c, 0x4d, 0x6a, 0x41, 0x78, 0x4a, 0x54, 0x49, 0x77, 0x4d, 0x6a, 0x41, 0x79, 0x4d, 0x43, 0x78, 0x50, 0x0a, 0x50, 0x55, 0x51, 0x74, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x6c, 0x4d, 0x6a, 0x42, 0x48, 0x62, 0x57, 0x4a, 0x49, 0x4c, 0x45, 0x4d, 0x39, 0x52, 0x45, 0x55, 0x2f, 0x59, 0x32, 0x56, 0x79, 0x64, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x56, 0x79, 0x5a, 0x58, 0x5a, 0x76, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x62, 0x47, 0x6c, 0x7a, 0x64, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x0a, 0x41, 0x77, 0x4e, 0x70, 0x41, 0x44, 0x42, 0x6d, 0x41, 0x6a, 0x45, 0x41, 0x79, 0x6a, 0x7a, 0x47, 0x4b, 0x6e, 0x58, 0x43, 0x58, 0x6e, 0x56, 0x69, 0x4f, 0x54, 0x59, 0x41, 0x59, 0x46, 0x71, 0x4c, 0x77, 0x5a, 0x4f, 0x5a, 0x7a, 0x4e, 0x6e, 0x62, 0x51, 0x54, 0x73, 0x37, 0x68, 0x35, 0x6b, 0x58, 0x4f, 0x39, 0x58, 0x4d, 0x54, 0x38, 0x6f, 0x69, 0x39, 0x36, 0x43, 0x41, 0x79, 0x2f, 0x6d, 0x30, 0x73, 0x52, 0x74, 0x57, 0x39, 0x58, 0x4c, 0x53, 0x2f, 0x42, 0x6e, 0x52, 0x0a, 0x41, 0x6a, 0x45, 0x41, 0x6b, 0x66, 0x63, 0x77, 0x6b, 0x7a, 0x38, 0x51, 0x52, 0x69, 0x74, 0x78, 0x70, 0x4e, 0x41, 0x37, 0x52, 0x4a, 0x76, 0x41, 0x4b, 0x51, 0x49, 0x46, 0x73, 0x6b, 0x46, 0x33, 0x55, 0x66, 0x4e, 0x35, 0x57, 0x70, 0x36, 0x4f, 0x46, 0x4b, 0x42, 0x4f, 0x51, 0x74, 0x4a, 0x62, 0x67, 0x66, 0x4d, 0x30, 0x61, 0x67, 0x50, 0x6e, 0x49, 0x6a, 0x68, 0x51, 0x57, 0x2b, 0x30, 0x5a, 0x54, 0x30, 0x4d, 0x57, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x54, 0x4c, 0x53, 0x20, 0x45, 0x43, 0x43, 0x20, 0x50, 0x33, 0x38, 0x34, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x47, 0x35, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x47, 0x54, 0x43, 0x43, 0x41, 0x5a, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x43, 0x65, 0x43, 0x54, 0x5a, 0x61, 0x7a, 0x33, 0x32, 0x63, 0x69, 0x35, 0x50, 0x68, 0x77, 0x4c, 0x42, 0x43, 0x6f, 0x75, 0x38, 0x7a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x4f, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x58, 0x4d, 0x42, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4f, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4a, 0x6a, 0x41, 0x6b, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x48, 0x55, 0x52, 0x70, 0x5a, 0x32, 0x6c, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x49, 0x46, 0x52, 0x4d, 0x55, 0x79, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x44, 0x4d, 0x34, 0x0a, 0x4e, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x63, 0x31, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x49, 0x78, 0x4d, 0x44, 0x45, 0x78, 0x4e, 0x54, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x32, 0x4d, 0x44, 0x45, 0x78, 0x4e, 0x44, 0x49, 0x7a, 0x4e, 0x54, 0x6b, 0x31, 0x4f, 0x56, 0x6f, 0x77, 0x54, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x0a, 0x46, 0x7a, 0x41, 0x56, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x44, 0x6b, 0x52, 0x70, 0x5a, 0x32, 0x6c, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x4d, 0x53, 0x59, 0x77, 0x4a, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x31, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42, 0x55, 0x54, 0x46, 0x4d, 0x67, 0x52, 0x55, 0x4e, 0x44, 0x49, 0x46, 0x41, 0x7a, 0x4f, 0x44, 0x51, 0x67, 0x0a, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x48, 0x4e, 0x54, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x4d, 0x46, 0x45, 0x6f, 0x63, 0x38, 0x52, 0x6c, 0x31, 0x43, 0x61, 0x33, 0x69, 0x4f, 0x43, 0x4e, 0x51, 0x66, 0x4e, 0x30, 0x4d, 0x73, 0x59, 0x6e, 0x64, 0x4c, 0x78, 0x66, 0x33, 0x63, 0x31, 0x54, 0x7a, 0x76, 0x64, 0x0a, 0x6c, 0x48, 0x4a, 0x53, 0x37, 0x63, 0x49, 0x37, 0x2b, 0x4f, 0x7a, 0x36, 0x65, 0x32, 0x74, 0x59, 0x49, 0x4f, 0x79, 0x5a, 0x72, 0x73, 0x6e, 0x38, 0x61, 0x4c, 0x4e, 0x31, 0x75, 0x64, 0x73, 0x4a, 0x37, 0x4d, 0x67, 0x54, 0x39, 0x55, 0x37, 0x47, 0x43, 0x68, 0x31, 0x6d, 0x4d, 0x45, 0x79, 0x37, 0x48, 0x30, 0x63, 0x4b, 0x50, 0x47, 0x45, 0x51, 0x51, 0x69, 0x6c, 0x38, 0x70, 0x51, 0x67, 0x4f, 0x34, 0x43, 0x4c, 0x70, 0x30, 0x7a, 0x56, 0x6f, 0x7a, 0x70, 0x74, 0x6a, 0x0a, 0x6e, 0x34, 0x53, 0x31, 0x6d, 0x55, 0x31, 0x59, 0x6f, 0x49, 0x37, 0x31, 0x56, 0x4f, 0x65, 0x56, 0x79, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4d, 0x46, 0x52, 0x52, 0x56, 0x42, 0x5a, 0x71, 0x7a, 0x37, 0x6e, 0x4c, 0x46, 0x72, 0x36, 0x49, 0x43, 0x49, 0x53, 0x42, 0x34, 0x43, 0x49, 0x66, 0x42, 0x46, 0x71, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x0a, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x44, 0x41, 0x32, 0x67, 0x41, 0x4d, 0x47, 0x55, 0x43, 0x4d, 0x51, 0x43, 0x4a, 0x61, 0x6f, 0x31, 0x48, 0x35, 0x2b, 0x7a, 0x38, 0x62, 0x6c, 0x55, 0x44, 0x32, 0x57, 0x64, 0x73, 0x0a, 0x4a, 0x6b, 0x36, 0x44, 0x78, 0x76, 0x33, 0x4a, 0x2b, 0x79, 0x73, 0x54, 0x76, 0x4c, 0x64, 0x36, 0x6a, 0x4c, 0x52, 0x6c, 0x30, 0x6d, 0x6c, 0x70, 0x59, 0x78, 0x4e, 0x6a, 0x4f, 0x79, 0x5a, 0x51, 0x4c, 0x67, 0x47, 0x68, 0x65, 0x51, 0x61, 0x52, 0x6e, 0x55, 0x69, 0x2f, 0x77, 0x72, 0x34, 0x43, 0x4d, 0x45, 0x66, 0x44, 0x46, 0x58, 0x75, 0x78, 0x6f, 0x4a, 0x47, 0x5a, 0x53, 0x5a, 0x4f, 0x6f, 0x50, 0x48, 0x7a, 0x6f, 0x52, 0x67, 0x61, 0x4c, 0x4c, 0x50, 0x49, 0x78, 0x0a, 0x41, 0x4a, 0x53, 0x64, 0x59, 0x73, 0x69, 0x4a, 0x76, 0x52, 0x6d, 0x45, 0x46, 0x4f, 0x6d, 0x6c, 0x2b, 0x77, 0x47, 0x34, 0x44, 0x58, 0x5a, 0x44, 0x6a, 0x43, 0x35, 0x54, 0x79, 0x33, 0x7a, 0x66, 0x44, 0x42, 0x65, 0x57, 0x55, 0x41, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x54, 0x4c, 0x53, 0x20, 0x52, 0x53, 0x41, 0x34, 0x30, 0x39, 0x36, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x47, 0x35, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x5a, 0x6a, 0x43, 0x43, 0x41, 0x30, 0x36, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x43, 0x50, 0x6d, 0x30, 0x65, 0x4b, 0x6a, 0x36, 0x66, 0x74, 0x70, 0x71, 0x4d, 0x7a, 0x65, 0x4a, 0x33, 0x6e, 0x7a, 0x50, 0x69, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x44, 0x42, 0x4e, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x58, 0x4d, 0x42, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4f, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x48, 0x45, 0x52, 0x70, 0x5a, 0x32, 0x6c, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x49, 0x46, 0x52, 0x4d, 0x55, 0x79, 0x42, 0x53, 0x55, 0x30, 0x45, 0x30, 0x0a, 0x4d, 0x44, 0x6b, 0x32, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x52, 0x7a, 0x55, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x6a, 0x45, 0x77, 0x4d, 0x54, 0x45, 0x31, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x59, 0x77, 0x4d, 0x54, 0x45, 0x30, 0x4d, 0x6a, 0x4d, 0x31, 0x4f, 0x54, 0x55, 0x35, 0x57, 0x6a, 0x42, 0x4e, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x58, 0x4d, 0x42, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4f, 0x52, 0x47, 0x6c, 0x6e, 0x61, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x51, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x48, 0x45, 0x52, 0x70, 0x5a, 0x32, 0x6c, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x49, 0x46, 0x52, 0x4d, 0x55, 0x79, 0x42, 0x53, 0x55, 0x30, 0x45, 0x30, 0x4d, 0x44, 0x6b, 0x32, 0x0a, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x52, 0x7a, 0x55, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x7a, 0x30, 0x50, 0x54, 0x4a, 0x65, 0x52, 0x47, 0x64, 0x2f, 0x66, 0x78, 0x6d, 0x67, 0x65, 0x66, 0x4d, 0x31, 0x65, 0x53, 0x38, 0x0a, 0x37, 0x49, 0x45, 0x2b, 0x61, 0x6a, 0x57, 0x4f, 0x4c, 0x72, 0x66, 0x6e, 0x33, 0x71, 0x2f, 0x35, 0x42, 0x30, 0x33, 0x50, 0x4d, 0x4a, 0x33, 0x71, 0x43, 0x51, 0x75, 0x5a, 0x76, 0x57, 0x78, 0x58, 0x32, 0x68, 0x68, 0x4b, 0x75, 0x48, 0x69, 0x73, 0x4f, 0x6a, 0x6d, 0x6f, 0x70, 0x6b, 0x69, 0x73, 0x4c, 0x6e, 0x4c, 0x6c, 0x76, 0x65, 0x76, 0x78, 0x47, 0x73, 0x33, 0x6e, 0x70, 0x41, 0x4f, 0x70, 0x50, 0x78, 0x47, 0x30, 0x32, 0x43, 0x2b, 0x4a, 0x46, 0x76, 0x75, 0x55, 0x0a, 0x41, 0x54, 0x32, 0x37, 0x4c, 0x2f, 0x67, 0x54, 0x42, 0x61, 0x46, 0x34, 0x48, 0x49, 0x34, 0x6f, 0x34, 0x45, 0x58, 0x67, 0x67, 0x2f, 0x52, 0x5a, 0x47, 0x35, 0x57, 0x7a, 0x72, 0x6e, 0x34, 0x44, 0x52, 0x65, 0x57, 0x2b, 0x77, 0x6b, 0x4c, 0x2b, 0x37, 0x76, 0x49, 0x38, 0x74, 0x6f, 0x55, 0x54, 0x6d, 0x44, 0x4b, 0x64, 0x46, 0x71, 0x67, 0x70, 0x77, 0x67, 0x73, 0x63, 0x4f, 0x4e, 0x79, 0x66, 0x4d, 0x58, 0x64, 0x63, 0x76, 0x79, 0x65, 0x6a, 0x2f, 0x43, 0x65, 0x73, 0x0a, 0x74, 0x79, 0x75, 0x39, 0x64, 0x4a, 0x73, 0x58, 0x4c, 0x66, 0x4b, 0x42, 0x32, 0x6c, 0x32, 0x77, 0x34, 0x53, 0x4d, 0x58, 0x50, 0x6f, 0x68, 0x4b, 0x45, 0x69, 0x50, 0x51, 0x36, 0x73, 0x2b, 0x64, 0x33, 0x67, 0x4d, 0x58, 0x73, 0x55, 0x4a, 0x4b, 0x6f, 0x42, 0x5a, 0x4d, 0x70, 0x47, 0x32, 0x54, 0x36, 0x54, 0x38, 0x36, 0x37, 0x6a, 0x70, 0x38, 0x6e, 0x56, 0x69, 0x64, 0x39, 0x45, 0x36, 0x50, 0x2f, 0x44, 0x73, 0x6a, 0x79, 0x47, 0x32, 0x34, 0x34, 0x67, 0x58, 0x61, 0x0a, 0x7a, 0x4f, 0x76, 0x73, 0x77, 0x7a, 0x48, 0x30, 0x31, 0x36, 0x63, 0x70, 0x56, 0x49, 0x44, 0x50, 0x52, 0x46, 0x74, 0x4d, 0x62, 0x7a, 0x43, 0x65, 0x38, 0x38, 0x7a, 0x64, 0x48, 0x35, 0x52, 0x44, 0x6e, 0x55, 0x31, 0x2f, 0x63, 0x48, 0x41, 0x4e, 0x31, 0x44, 0x72, 0x52, 0x4e, 0x2f, 0x42, 0x73, 0x6e, 0x5a, 0x76, 0x41, 0x46, 0x4a, 0x4e, 0x59, 0x37, 0x38, 0x31, 0x42, 0x4f, 0x48, 0x57, 0x38, 0x45, 0x77, 0x4f, 0x56, 0x66, 0x48, 0x2f, 0x6a, 0x58, 0x4f, 0x6e, 0x56, 0x0a, 0x44, 0x64, 0x58, 0x69, 0x66, 0x42, 0x42, 0x69, 0x71, 0x6d, 0x76, 0x77, 0x50, 0x58, 0x62, 0x7a, 0x50, 0x36, 0x50, 0x6f, 0x73, 0x4d, 0x48, 0x39, 0x37, 0x36, 0x70, 0x58, 0x54, 0x61, 0x79, 0x47, 0x70, 0x78, 0x69, 0x30, 0x4b, 0x63, 0x45, 0x73, 0x44, 0x72, 0x39, 0x6b, 0x76, 0x69, 0x6d, 0x4d, 0x32, 0x41, 0x49, 0x74, 0x7a, 0x56, 0x77, 0x76, 0x38, 0x6e, 0x2f, 0x76, 0x46, 0x66, 0x51, 0x4d, 0x46, 0x61, 0x77, 0x4b, 0x73, 0x50, 0x48, 0x54, 0x44, 0x55, 0x39, 0x71, 0x0a, 0x54, 0x58, 0x65, 0x58, 0x41, 0x61, 0x44, 0x78, 0x5a, 0x72, 0x65, 0x33, 0x7a, 0x75, 0x2f, 0x4f, 0x37, 0x4f, 0x79, 0x6c, 0x64, 0x63, 0x71, 0x73, 0x34, 0x2b, 0x46, 0x6a, 0x39, 0x37, 0x69, 0x68, 0x42, 0x4d, 0x69, 0x38, 0x65, 0x7a, 0x39, 0x64, 0x4c, 0x52, 0x59, 0x69, 0x56, 0x75, 0x31, 0x49, 0x53, 0x66, 0x36, 0x6e, 0x4c, 0x33, 0x6b, 0x77, 0x4a, 0x5a, 0x75, 0x36, 0x61, 0x79, 0x30, 0x2f, 0x6e, 0x54, 0x76, 0x45, 0x46, 0x2b, 0x63, 0x64, 0x4c, 0x76, 0x76, 0x79, 0x0a, 0x7a, 0x36, 0x62, 0x38, 0x34, 0x78, 0x51, 0x73, 0x6c, 0x70, 0x67, 0x68, 0x6a, 0x4c, 0x53, 0x52, 0x36, 0x52, 0x6c, 0x67, 0x67, 0x2f, 0x49, 0x77, 0x4b, 0x77, 0x5a, 0x7a, 0x55, 0x4e, 0x57, 0x59, 0x4f, 0x77, 0x62, 0x70, 0x78, 0x34, 0x6f, 0x4d, 0x59, 0x49, 0x77, 0x6f, 0x2b, 0x46, 0x4b, 0x62, 0x62, 0x75, 0x48, 0x32, 0x54, 0x62, 0x73, 0x47, 0x4a, 0x4a, 0x76, 0x58, 0x4b, 0x79, 0x59, 0x2f, 0x2f, 0x53, 0x6f, 0x76, 0x63, 0x66, 0x58, 0x57, 0x4a, 0x4c, 0x35, 0x2f, 0x0a, 0x4d, 0x5a, 0x34, 0x50, 0x62, 0x65, 0x69, 0x50, 0x54, 0x30, 0x32, 0x6a, 0x50, 0x2f, 0x38, 0x31, 0x36, 0x74, 0x39, 0x4a, 0x58, 0x6b, 0x47, 0x50, 0x68, 0x76, 0x6e, 0x78, 0x64, 0x33, 0x6c, 0x4c, 0x47, 0x37, 0x53, 0x6a, 0x58, 0x69, 0x2f, 0x37, 0x52, 0x67, 0x4c, 0x51, 0x5a, 0x68, 0x4e, 0x65, 0x58, 0x6f, 0x56, 0x50, 0x7a, 0x74, 0x68, 0x77, 0x69, 0x48, 0x76, 0x4f, 0x41, 0x62, 0x57, 0x57, 0x6c, 0x39, 0x66, 0x4e, 0x66, 0x66, 0x32, 0x43, 0x2b, 0x4d, 0x49, 0x6b, 0x0a, 0x77, 0x63, 0x6f, 0x42, 0x4f, 0x55, 0x2b, 0x4e, 0x6f, 0x73, 0x45, 0x55, 0x51, 0x42, 0x2b, 0x63, 0x5a, 0x74, 0x55, 0x4d, 0x43, 0x55, 0x62, 0x57, 0x38, 0x74, 0x44, 0x52, 0x53, 0x48, 0x5a, 0x57, 0x4f, 0x6b, 0x50, 0x4c, 0x74, 0x67, 0x6f, 0x52, 0x4f, 0x62, 0x71, 0x4d, 0x45, 0x32, 0x77, 0x47, 0x74, 0x5a, 0x37, 0x50, 0x36, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x0a, 0x46, 0x67, 0x51, 0x55, 0x55, 0x54, 0x4d, 0x63, 0x37, 0x54, 0x5a, 0x41, 0x72, 0x78, 0x66, 0x54, 0x4a, 0x63, 0x31, 0x70, 0x61, 0x50, 0x4b, 0x76, 0x54, 0x69, 0x4d, 0x2b, 0x73, 0x30, 0x45, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x0a, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x47, 0x43, 0x6d, 0x72, 0x31, 0x74, 0x66, 0x56, 0x39, 0x71, 0x4a, 0x32, 0x30, 0x74, 0x51, 0x71, 0x63, 0x51, 0x6a, 0x4e, 0x53, 0x48, 0x2f, 0x30, 0x47, 0x45, 0x77, 0x68, 0x4a, 0x47, 0x33, 0x50, 0x78, 0x44, 0x50, 0x4a, 0x59, 0x37, 0x4a, 0x76, 0x30, 0x59, 0x30, 0x32, 0x63, 0x45, 0x68, 0x4a, 0x68, 0x78, 0x77, 0x0a, 0x47, 0x58, 0x49, 0x65, 0x6f, 0x38, 0x6d, 0x48, 0x2f, 0x71, 0x6c, 0x44, 0x5a, 0x4a, 0x59, 0x36, 0x79, 0x46, 0x4d, 0x45, 0x43, 0x72, 0x5a, 0x42, 0x75, 0x38, 0x52, 0x48, 0x41, 0x4e, 0x6d, 0x66, 0x47, 0x42, 0x67, 0x37, 0x73, 0x67, 0x37, 0x7a, 0x4e, 0x4f, 0x6f, 0x6b, 0x39, 0x39, 0x32, 0x76, 0x49, 0x47, 0x43, 0x75, 0x6b, 0x69, 0x68, 0x66, 0x4e, 0x75, 0x64, 0x64, 0x35, 0x4e, 0x37, 0x48, 0x50, 0x4e, 0x74, 0x51, 0x4f, 0x61, 0x32, 0x37, 0x50, 0x53, 0x68, 0x4e, 0x0a, 0x6c, 0x6e, 0x78, 0x32, 0x78, 0x6c, 0x76, 0x30, 0x77, 0x64, 0x73, 0x55, 0x70, 0x61, 0x73, 0x5a, 0x59, 0x67, 0x63, 0x59, 0x51, 0x46, 0x2b, 0x58, 0x6b, 0x64, 0x79, 0x63, 0x78, 0x36, 0x75, 0x31, 0x55, 0x51, 0x33, 0x6d, 0x61, 0x56, 0x4e, 0x56, 0x7a, 0x44, 0x6c, 0x39, 0x32, 0x73, 0x55, 0x52, 0x56, 0x58, 0x4c, 0x46, 0x4f, 0x34, 0x75, 0x4a, 0x2b, 0x44, 0x51, 0x74, 0x70, 0x42, 0x66, 0x6c, 0x46, 0x2b, 0x61, 0x5a, 0x66, 0x54, 0x43, 0x49, 0x49, 0x54, 0x66, 0x4e, 0x0a, 0x4d, 0x42, 0x63, 0x39, 0x75, 0x50, 0x4b, 0x38, 0x71, 0x48, 0x57, 0x67, 0x51, 0x39, 0x77, 0x2b, 0x69, 0x55, 0x75, 0x51, 0x72, 0x6d, 0x30, 0x44, 0x34, 0x42, 0x79, 0x6a, 0x6f, 0x4a, 0x59, 0x4a, 0x75, 0x33, 0x32, 0x6a, 0x74, 0x79, 0x6f, 0x51, 0x52, 0x45, 0x74, 0x47, 0x42, 0x7a, 0x52, 0x6a, 0x37, 0x54, 0x47, 0x35, 0x42, 0x4f, 0x36, 0x6a, 0x6d, 0x35, 0x71, 0x75, 0x35, 0x6a, 0x46, 0x34, 0x39, 0x4f, 0x6f, 0x6b, 0x59, 0x54, 0x75, 0x72, 0x57, 0x47, 0x54, 0x2f, 0x0a, 0x75, 0x34, 0x63, 0x6e, 0x59, 0x69, 0x57, 0x42, 0x33, 0x39, 0x79, 0x68, 0x4c, 0x2f, 0x62, 0x74, 0x70, 0x2f, 0x39, 0x36, 0x6a, 0x31, 0x45, 0x75, 0x4d, 0x50, 0x69, 0x6b, 0x41, 0x64, 0x4b, 0x46, 0x4f, 0x56, 0x38, 0x42, 0x6d, 0x5a, 0x5a, 0x76, 0x57, 0x6c, 0x74, 0x77, 0x47, 0x55, 0x62, 0x2b, 0x68, 0x6d, 0x41, 0x2b, 0x72, 0x59, 0x41, 0x51, 0x43, 0x64, 0x30, 0x35, 0x4a, 0x53, 0x39, 0x59, 0x66, 0x37, 0x76, 0x53, 0x64, 0x50, 0x44, 0x33, 0x52, 0x68, 0x39, 0x47, 0x0a, 0x4f, 0x55, 0x72, 0x59, 0x55, 0x39, 0x44, 0x7a, 0x4c, 0x6a, 0x74, 0x78, 0x70, 0x64, 0x52, 0x76, 0x2f, 0x50, 0x4e, 0x6e, 0x35, 0x41, 0x65, 0x50, 0x33, 0x53, 0x59, 0x5a, 0x34, 0x59, 0x31, 0x62, 0x2b, 0x71, 0x4f, 0x54, 0x45, 0x5a, 0x76, 0x70, 0x79, 0x44, 0x72, 0x44, 0x56, 0x57, 0x69, 0x61, 0x6b, 0x75, 0x46, 0x53, 0x64, 0x6a, 0x6a, 0x6f, 0x34, 0x62, 0x71, 0x39, 0x2b, 0x30, 0x2f, 0x56, 0x37, 0x37, 0x50, 0x6e, 0x53, 0x49, 0x4d, 0x78, 0x38, 0x49, 0x49, 0x68, 0x0a, 0x34, 0x37, 0x61, 0x2b, 0x70, 0x36, 0x74, 0x76, 0x37, 0x35, 0x2f, 0x66, 0x54, 0x4d, 0x38, 0x42, 0x75, 0x47, 0x4a, 0x71, 0x49, 0x7a, 0x33, 0x6e, 0x43, 0x55, 0x32, 0x41, 0x47, 0x33, 0x73, 0x77, 0x70, 0x4d, 0x50, 0x64, 0x42, 0x33, 0x38, 0x30, 0x76, 0x71, 0x51, 0x6d, 0x73, 0x76, 0x5a, 0x42, 0x36, 0x41, 0x6b, 0x64, 0x34, 0x79, 0x43, 0x59, 0x71, 0x6a, 0x64, 0x50, 0x2f, 0x2f, 0x66, 0x78, 0x34, 0x69, 0x6c, 0x77, 0x4d, 0x55, 0x63, 0x2f, 0x64, 0x4e, 0x41, 0x55, 0x0a, 0x46, 0x76, 0x6f, 0x68, 0x69, 0x67, 0x4c, 0x56, 0x69, 0x67, 0x6d, 0x55, 0x64, 0x79, 0x37, 0x79, 0x57, 0x53, 0x69, 0x4c, 0x66, 0x46, 0x43, 0x53, 0x43, 0x6d, 0x5a, 0x34, 0x4f, 0x49, 0x4e, 0x31, 0x78, 0x4c, 0x56, 0x61, 0x71, 0x42, 0x48, 0x47, 0x35, 0x63, 0x47, 0x64, 0x5a, 0x6c, 0x58, 0x50, 0x55, 0x38, 0x53, 0x76, 0x31, 0x33, 0x57, 0x46, 0x71, 0x55, 0x49, 0x54, 0x56, 0x75, 0x77, 0x68, 0x64, 0x34, 0x47, 0x54, 0x57, 0x67, 0x7a, 0x71, 0x6c, 0x74, 0x6c, 0x4a, 0x0a, 0x79, 0x71, 0x45, 0x49, 0x38, 0x70, 0x63, 0x37, 0x62, 0x5a, 0x73, 0x45, 0x47, 0x43, 0x52, 0x45, 0x6a, 0x6e, 0x77, 0x42, 0x38, 0x74, 0x77, 0x6c, 0x32, 0x46, 0x36, 0x47, 0x6d, 0x72, 0x45, 0x35, 0x32, 0x2f, 0x57, 0x52, 0x4d, 0x6d, 0x72, 0x52, 0x70, 0x6e, 0x43, 0x4b, 0x6f, 0x76, 0x66, 0x65, 0x70, 0x45, 0x57, 0x46, 0x4a, 0x71, 0x67, 0x65, 0x6a, 0x46, 0x30, 0x70, 0x57, 0x38, 0x68, 0x4c, 0x32, 0x4a, 0x70, 0x71, 0x41, 0x31, 0x35, 0x77, 0x38, 0x6f, 0x56, 0x50, 0x0a, 0x62, 0x45, 0x74, 0x6f, 0x4c, 0x38, 0x70, 0x55, 0x39, 0x6f, 0x7a, 0x61, 0x4d, 0x76, 0x37, 0x44, 0x61, 0x34, 0x4d, 0x2f, 0x4f, 0x4d, 0x5a, 0x2b, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x6c, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x52, 0x7a, 0x43, 0x43, 0x41, 0x79, 0x2b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x52, 0x41, 0x49, 0x34, 0x50, 0x2b, 0x55, 0x75, 0x51, 0x63, 0x57, 0x68, 0x6c, 0x4d, 0x31, 0x54, 0x30, 0x31, 0x45, 0x51, 0x35, 0x74, 0x2b, 0x41, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x50, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x43, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x68, 0x61, 0x57, 0x35, 0x73, 0x65, 0x54, 0x45, 0x61, 0x4d, 0x42, 0x67, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4d, 0x52, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x46, 0x70, 0x62, 0x6d, 0x78, 0x35, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x55, 0x6a, 0x45, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x0a, 0x4d, 0x6a, 0x45, 0x77, 0x4e, 0x44, 0x41, 0x78, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x59, 0x77, 0x4e, 0x44, 0x41, 0x78, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x6a, 0x41, 0x39, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4a, 0x51, 0x32, 0x56, 0x79, 0x0a, 0x64, 0x47, 0x46, 0x70, 0x62, 0x6d, 0x78, 0x35, 0x4d, 0x52, 0x6f, 0x77, 0x47, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x46, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x59, 0x57, 0x6c, 0x75, 0x62, 0x48, 0x6b, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x53, 0x4d, 0x54, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x0a, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4e, 0x41, 0x32, 0x31, 0x42, 0x2f, 0x71, 0x33, 0x61, 0x76, 0x6b, 0x30, 0x62, 0x62, 0x6d, 0x2b, 0x79, 0x4c, 0x41, 0x33, 0x52, 0x4d, 0x4e, 0x61, 0x6e, 0x73, 0x69, 0x45, 0x78, 0x79, 0x58, 0x50, 0x47, 0x68, 0x6a, 0x5a, 0x6a, 0x4b, 0x63, 0x41, 0x37, 0x57, 0x4e, 0x70, 0x49, 0x47, 0x44, 0x32, 0x6e, 0x67, 0x77, 0x45, 0x63, 0x2f, 0x63, 0x73, 0x69, 0x75, 0x2b, 0x6b, 0x72, 0x2b, 0x4f, 0x0a, 0x35, 0x4d, 0x51, 0x54, 0x76, 0x71, 0x52, 0x6f, 0x54, 0x4e, 0x6f, 0x43, 0x61, 0x42, 0x5a, 0x30, 0x76, 0x72, 0x4c, 0x64, 0x42, 0x4f, 0x52, 0x72, 0x4b, 0x74, 0x30, 0x33, 0x48, 0x32, 0x41, 0x73, 0x32, 0x2f, 0x58, 0x33, 0x6f, 0x58, 0x79, 0x56, 0x74, 0x77, 0x78, 0x77, 0x68, 0x69, 0x37, 0x78, 0x4f, 0x75, 0x39, 0x53, 0x39, 0x38, 0x7a, 0x54, 0x6d, 0x2f, 0x6d, 0x4c, 0x76, 0x67, 0x37, 0x66, 0x4d, 0x62, 0x65, 0x64, 0x61, 0x46, 0x79, 0x53, 0x70, 0x76, 0x58, 0x6c, 0x0a, 0x38, 0x77, 0x6f, 0x30, 0x74, 0x66, 0x39, 0x37, 0x6f, 0x75, 0x53, 0x48, 0x6f, 0x63, 0x61, 0x76, 0x46, 0x77, 0x44, 0x76, 0x41, 0x35, 0x48, 0x74, 0x71, 0x52, 0x78, 0x4f, 0x63, 0x54, 0x33, 0x53, 0x69, 0x32, 0x79, 0x4a, 0x39, 0x48, 0x69, 0x47, 0x35, 0x6d, 0x70, 0x4a, 0x6f, 0x4d, 0x36, 0x31, 0x30, 0x72, 0x43, 0x72, 0x6d, 0x2f, 0x62, 0x30, 0x31, 0x43, 0x37, 0x6a, 0x63, 0x76, 0x6b, 0x32, 0x78, 0x75, 0x73, 0x56, 0x74, 0x79, 0x57, 0x4d, 0x4f, 0x76, 0x77, 0x6c, 0x0a, 0x44, 0x62, 0x4d, 0x69, 0x63, 0x79, 0x46, 0x30, 0x79, 0x45, 0x71, 0x57, 0x59, 0x5a, 0x4c, 0x31, 0x4c, 0x77, 0x73, 0x59, 0x70, 0x66, 0x53, 0x74, 0x34, 0x75, 0x35, 0x42, 0x76, 0x51, 0x46, 0x35, 0x2b, 0x70, 0x61, 0x4d, 0x6a, 0x52, 0x63, 0x43, 0x4d, 0x4c, 0x54, 0x35, 0x72, 0x33, 0x67, 0x61, 0x6a, 0x4c, 0x51, 0x32, 0x45, 0x42, 0x41, 0x48, 0x42, 0x58, 0x44, 0x51, 0x39, 0x44, 0x47, 0x51, 0x69, 0x6c, 0x48, 0x46, 0x68, 0x69, 0x5a, 0x35, 0x73, 0x68, 0x47, 0x49, 0x0a, 0x58, 0x73, 0x58, 0x77, 0x43, 0x6c, 0x54, 0x4e, 0x53, 0x61, 0x61, 0x2f, 0x41, 0x70, 0x7a, 0x53, 0x52, 0x4b, 0x66, 0x74, 0x34, 0x33, 0x6a, 0x76, 0x52, 0x6c, 0x35, 0x74, 0x63, 0x64, 0x46, 0x35, 0x63, 0x42, 0x78, 0x47, 0x58, 0x31, 0x48, 0x70, 0x79, 0x54, 0x66, 0x63, 0x58, 0x33, 0x35, 0x70, 0x65, 0x30, 0x48, 0x66, 0x4e, 0x45, 0x58, 0x67, 0x4f, 0x34, 0x54, 0x30, 0x6f, 0x59, 0x6f, 0x4b, 0x4e, 0x70, 0x34, 0x33, 0x7a, 0x47, 0x4a, 0x53, 0x34, 0x59, 0x6b, 0x4e, 0x0a, 0x4b, 0x50, 0x6c, 0x36, 0x49, 0x37, 0x45, 0x4e, 0x50, 0x54, 0x32, 0x61, 0x2f, 0x5a, 0x32, 0x42, 0x37, 0x79, 0x79, 0x51, 0x77, 0x48, 0x74, 0x45, 0x54, 0x72, 0x74, 0x4a, 0x34, 0x41, 0x35, 0x4b, 0x56, 0x70, 0x4b, 0x38, 0x79, 0x37, 0x58, 0x64, 0x65, 0x52, 0x65, 0x4a, 0x6b, 0x64, 0x35, 0x68, 0x69, 0x58, 0x53, 0x53, 0x71, 0x4f, 0x4d, 0x79, 0x68, 0x62, 0x35, 0x4f, 0x68, 0x61, 0x52, 0x4c, 0x57, 0x63, 0x73, 0x72, 0x78, 0x58, 0x69, 0x4f, 0x63, 0x56, 0x54, 0x51, 0x0a, 0x41, 0x6a, 0x65, 0x5a, 0x6a, 0x4f, 0x56, 0x4a, 0x36, 0x75, 0x42, 0x55, 0x63, 0x71, 0x51, 0x52, 0x42, 0x69, 0x38, 0x4c, 0x6a, 0x4d, 0x46, 0x62, 0x76, 0x72, 0x57, 0x68, 0x73, 0x46, 0x4e, 0x75, 0x6e, 0x4c, 0x68, 0x67, 0x6b, 0x52, 0x39, 0x5a, 0x61, 0x2f, 0x6b, 0x74, 0x39, 0x4a, 0x51, 0x4b, 0x6c, 0x37, 0x58, 0x73, 0x78, 0x58, 0x59, 0x44, 0x56, 0x42, 0x74, 0x6c, 0x55, 0x72, 0x70, 0x4d, 0x6b, 0x6c, 0x5a, 0x52, 0x4e, 0x61, 0x42, 0x41, 0x32, 0x43, 0x6e, 0x62, 0x0a, 0x72, 0x6c, 0x4a, 0x32, 0x4f, 0x79, 0x30, 0x77, 0x51, 0x4a, 0x75, 0x4b, 0x30, 0x45, 0x4a, 0x57, 0x74, 0x4c, 0x65, 0x49, 0x41, 0x61, 0x53, 0x48, 0x4f, 0x31, 0x4f, 0x57, 0x7a, 0x61, 0x4d, 0x57, 0x6a, 0x2f, 0x4e, 0x6d, 0x71, 0x68, 0x65, 0x78, 0x78, 0x32, 0x44, 0x67, 0x77, 0x55, 0x4d, 0x46, 0x44, 0x4f, 0x36, 0x62, 0x57, 0x32, 0x42, 0x76, 0x42, 0x6c, 0x79, 0x48, 0x57, 0x79, 0x66, 0x35, 0x51, 0x42, 0x47, 0x65, 0x6e, 0x44, 0x50, 0x42, 0x74, 0x2b, 0x55, 0x31, 0x0a, 0x56, 0x77, 0x56, 0x2f, 0x4a, 0x38, 0x34, 0x58, 0x49, 0x49, 0x77, 0x63, 0x2f, 0x50, 0x48, 0x37, 0x32, 0x6a, 0x45, 0x70, 0x53, 0x65, 0x33, 0x31, 0x43, 0x34, 0x53, 0x6e, 0x54, 0x38, 0x48, 0x32, 0x54, 0x73, 0x49, 0x6f, 0x6e, 0x50, 0x72, 0x75, 0x34, 0x4b, 0x38, 0x48, 0x2b, 0x7a, 0x4d, 0x52, 0x65, 0x69, 0x46, 0x50, 0x43, 0x79, 0x45, 0x51, 0x74, 0x6b, 0x41, 0x36, 0x71, 0x79, 0x49, 0x36, 0x42, 0x4a, 0x79, 0x4c, 0x6d, 0x34, 0x53, 0x47, 0x63, 0x70, 0x72, 0x53, 0x0a, 0x70, 0x36, 0x58, 0x45, 0x74, 0x48, 0x57, 0x52, 0x71, 0x53, 0x73, 0x6a, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x0a, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54, 0x67, 0x71, 0x6a, 0x38, 0x6c, 0x6a, 0x5a, 0x39, 0x45, 0x58, 0x4d, 0x45, 0x36, 0x36, 0x43, 0x36, 0x75, 0x64, 0x30, 0x79, 0x45, 0x50, 0x6d, 0x63, 0x4d, 0x39, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x75, 0x56, 0x65, 0x76, 0x75, 0x42, 0x4c, 0x61, 0x56, 0x34, 0x4f, 0x50, 0x61, 0x41, 0x73, 0x7a, 0x0a, 0x48, 0x51, 0x4e, 0x54, 0x56, 0x66, 0x53, 0x56, 0x63, 0x4f, 0x51, 0x72, 0x50, 0x62, 0x41, 0x35, 0x36, 0x2f, 0x71, 0x4a, 0x59, 0x76, 0x33, 0x33, 0x31, 0x68, 0x67, 0x45, 0x4c, 0x79, 0x45, 0x30, 0x33, 0x66, 0x46, 0x6f, 0x38, 0x4e, 0x57, 0x57, 0x57, 0x74, 0x37, 0x43, 0x67, 0x4b, 0x50, 0x42, 0x6a, 0x63, 0x5a, 0x71, 0x39, 0x31, 0x6c, 0x33, 0x72, 0x68, 0x56, 0x6b, 0x7a, 0x31, 0x74, 0x35, 0x42, 0x58, 0x64, 0x6d, 0x36, 0x6f, 0x7a, 0x54, 0x61, 0x77, 0x33, 0x64, 0x0a, 0x38, 0x56, 0x6b, 0x73, 0x77, 0x54, 0x4f, 0x6c, 0x4d, 0x49, 0x41, 0x56, 0x52, 0x51, 0x64, 0x46, 0x47, 0x6a, 0x45, 0x69, 0x74, 0x70, 0x49, 0x41, 0x71, 0x35, 0x6c, 0x4e, 0x4f, 0x6f, 0x39, 0x33, 0x72, 0x36, 0x6b, 0x69, 0x79, 0x69, 0x39, 0x6a, 0x79, 0x68, 0x58, 0x57, 0x78, 0x38, 0x62, 0x77, 0x50, 0x57, 0x7a, 0x38, 0x48, 0x41, 0x32, 0x59, 0x45, 0x47, 0x47, 0x65, 0x45, 0x61, 0x49, 0x69, 0x31, 0x77, 0x72, 0x79, 0x6b, 0x58, 0x70, 0x72, 0x4f, 0x51, 0x34, 0x76, 0x0a, 0x4d, 0x4d, 0x4d, 0x32, 0x53, 0x5a, 0x2f, 0x67, 0x36, 0x51, 0x38, 0x43, 0x52, 0x46, 0x41, 0x33, 0x6c, 0x46, 0x56, 0x39, 0x36, 0x70, 0x2f, 0x32, 0x4f, 0x37, 0x71, 0x55, 0x70, 0x55, 0x7a, 0x70, 0x76, 0x44, 0x35, 0x52, 0x74, 0x4f, 0x6a, 0x4b, 0x6b, 0x6a, 0x5a, 0x55, 0x62, 0x56, 0x77, 0x6c, 0x4b, 0x4e, 0x72, 0x64, 0x72, 0x52, 0x54, 0x39, 0x30, 0x2b, 0x37, 0x69, 0x49, 0x67, 0x58, 0x72, 0x30, 0x50, 0x4b, 0x33, 0x61, 0x42, 0x4c, 0x58, 0x57, 0x6f, 0x70, 0x42, 0x0a, 0x47, 0x73, 0x61, 0x53, 0x70, 0x56, 0x6f, 0x37, 0x59, 0x30, 0x56, 0x50, 0x76, 0x2b, 0x45, 0x36, 0x64, 0x79, 0x49, 0x76, 0x58, 0x4c, 0x39, 0x47, 0x2b, 0x56, 0x6f, 0x44, 0x68, 0x52, 0x4e, 0x43, 0x58, 0x38, 0x72, 0x65, 0x55, 0x39, 0x64, 0x69, 0x74, 0x61, 0x59, 0x31, 0x42, 0x4d, 0x4a, 0x48, 0x2f, 0x35, 0x6e, 0x39, 0x68, 0x4e, 0x39, 0x63, 0x7a, 0x75, 0x6c, 0x65, 0x67, 0x43, 0x68, 0x42, 0x38, 0x6e, 0x33, 0x6e, 0x48, 0x70, 0x44, 0x59, 0x54, 0x33, 0x59, 0x2b, 0x0a, 0x67, 0x6a, 0x77, 0x4e, 0x2f, 0x4b, 0x55, 0x44, 0x2b, 0x6e, 0x73, 0x61, 0x32, 0x55, 0x55, 0x65, 0x59, 0x4e, 0x72, 0x45, 0x6a, 0x76, 0x6e, 0x38, 0x4b, 0x38, 0x6c, 0x37, 0x6c, 0x63, 0x55, 0x71, 0x2f, 0x36, 0x71, 0x4a, 0x33, 0x34, 0x49, 0x78, 0x44, 0x33, 0x4c, 0x2f, 0x44, 0x43, 0x66, 0x58, 0x43, 0x68, 0x35, 0x57, 0x41, 0x46, 0x41, 0x65, 0x44, 0x4a, 0x44, 0x42, 0x6c, 0x72, 0x58, 0x59, 0x46, 0x49, 0x57, 0x37, 0x70, 0x77, 0x30, 0x57, 0x77, 0x66, 0x67, 0x48, 0x0a, 0x4a, 0x42, 0x75, 0x36, 0x68, 0x61, 0x45, 0x61, 0x42, 0x51, 0x6d, 0x41, 0x75, 0x70, 0x56, 0x6a, 0x79, 0x54, 0x72, 0x73, 0x4a, 0x5a, 0x39, 0x2f, 0x6e, 0x62, 0x71, 0x6b, 0x52, 0x78, 0x57, 0x62, 0x52, 0x48, 0x44, 0x78, 0x61, 0x6b, 0x76, 0x57, 0x4f, 0x46, 0x35, 0x44, 0x38, 0x78, 0x68, 0x2b, 0x55, 0x47, 0x37, 0x70, 0x57, 0x69, 0x6a, 0x6d, 0x5a, 0x65, 0x5a, 0x33, 0x47, 0x7a, 0x72, 0x39, 0x48, 0x62, 0x34, 0x44, 0x4a, 0x71, 0x50, 0x62, 0x31, 0x4f, 0x47, 0x37, 0x0a, 0x66, 0x70, 0x59, 0x6e, 0x4b, 0x78, 0x33, 0x75, 0x70, 0x50, 0x76, 0x61, 0x4a, 0x56, 0x51, 0x54, 0x41, 0x39, 0x34, 0x35, 0x78, 0x73, 0x4d, 0x66, 0x54, 0x5a, 0x44, 0x73, 0x6a, 0x78, 0x74, 0x4b, 0x30, 0x68, 0x7a, 0x74, 0x68, 0x5a, 0x55, 0x34, 0x55, 0x48, 0x6c, 0x47, 0x31, 0x73, 0x47, 0x51, 0x55, 0x44, 0x47, 0x70, 0x58, 0x4a, 0x70, 0x75, 0x48, 0x66, 0x55, 0x7a, 0x56, 0x6f, 0x75, 0x6e, 0x6d, 0x64, 0x4c, 0x79, 0x79, 0x43, 0x77, 0x7a, 0x6b, 0x35, 0x49, 0x77, 0x0a, 0x78, 0x30, 0x36, 0x4d, 0x5a, 0x54, 0x4d, 0x51, 0x5a, 0x42, 0x66, 0x39, 0x4a, 0x42, 0x65, 0x57, 0x30, 0x59, 0x33, 0x43, 0x4f, 0x6d, 0x6f, 0x72, 0x36, 0x78, 0x4f, 0x4c, 0x52, 0x50, 0x49, 0x68, 0x38, 0x30, 0x6f, 0x61, 0x74, 0x33, 0x64, 0x66, 0x31, 0x2b, 0x32, 0x49, 0x70, 0x48, 0x4c, 0x6c, 0x4f, 0x52, 0x2b, 0x56, 0x6e, 0x62, 0x35, 0x6e, 0x77, 0x58, 0x41, 0x52, 0x50, 0x62, 0x76, 0x30, 0x2b, 0x45, 0x6d, 0x33, 0x34, 0x79, 0x61, 0x58, 0x4f, 0x70, 0x2f, 0x53, 0x0a, 0x58, 0x33, 0x7a, 0x37, 0x77, 0x4a, 0x6c, 0x38, 0x4f, 0x53, 0x6e, 0x67, 0x65, 0x78, 0x32, 0x2f, 0x44, 0x61, 0x65, 0x50, 0x30, 0x69, 0x6b, 0x30, 0x62, 0x69, 0x51, 0x56, 0x79, 0x39, 0x36, 0x51, 0x58, 0x72, 0x38, 0x61, 0x78, 0x47, 0x62, 0x71, 0x77, 0x75, 0x61, 0x36, 0x4f, 0x56, 0x2b, 0x4b, 0x6d, 0x61, 0x6c, 0x42, 0x57, 0x51, 0x65, 0x77, 0x4c, 0x4b, 0x38, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x6c, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x45, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x42, 0x39, 0x7a, 0x43, 0x43, 0x41, 0x58, 0x32, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x42, 0x69, 0x55, 0x7a, 0x73, 0x55, 0x63, 0x44, 0x4d, 0x79, 0x64, 0x63, 0x2b, 0x59, 0x32, 0x61, 0x75, 0x62, 0x2f, 0x4d, 0x2b, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x41, 0x39, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x53, 0x4d, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x4a, 0x51, 0x32, 0x56, 0x79, 0x64, 0x47, 0x46, 0x70, 0x62, 0x6d, 0x78, 0x35, 0x4d, 0x52, 0x6f, 0x77, 0x47, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x46, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x59, 0x57, 0x6c, 0x75, 0x62, 0x48, 0x6b, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x46, 0x4d, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x79, 0x4d, 0x54, 0x41, 0x30, 0x0a, 0x4d, 0x44, 0x45, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4e, 0x6a, 0x41, 0x30, 0x4d, 0x44, 0x45, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x61, 0x4d, 0x44, 0x30, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x49, 0x77, 0x45, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x77, 0x6c, 0x44, 0x5a, 0x58, 0x4a, 0x30, 0x59, 0x57, 0x6c, 0x75, 0x0a, 0x62, 0x48, 0x6b, 0x78, 0x47, 0x6a, 0x41, 0x59, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x54, 0x45, 0x55, 0x4e, 0x6c, 0x63, 0x6e, 0x52, 0x68, 0x61, 0x57, 0x35, 0x73, 0x65, 0x53, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x55, 0x78, 0x4d, 0x48, 0x59, 0x77, 0x45, 0x41, 0x59, 0x48, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x43, 0x41, 0x51, 0x59, 0x46, 0x4b, 0x34, 0x45, 0x45, 0x41, 0x43, 0x49, 0x44, 0x59, 0x67, 0x41, 0x45, 0x33, 0x6d, 0x2f, 0x34, 0x0a, 0x66, 0x78, 0x7a, 0x66, 0x37, 0x66, 0x6c, 0x48, 0x68, 0x34, 0x61, 0x78, 0x70, 0x4d, 0x43, 0x4b, 0x2b, 0x49, 0x4b, 0x58, 0x67, 0x4f, 0x71, 0x50, 0x79, 0x45, 0x70, 0x65, 0x4b, 0x6e, 0x32, 0x49, 0x61, 0x4b, 0x63, 0x42, 0x59, 0x68, 0x53, 0x52, 0x4a, 0x48, 0x70, 0x63, 0x6e, 0x71, 0x4d, 0x58, 0x66, 0x59, 0x71, 0x47, 0x49, 0x54, 0x51, 0x59, 0x55, 0x42, 0x73, 0x51, 0x33, 0x74, 0x41, 0x33, 0x53, 0x79, 0x62, 0x48, 0x47, 0x57, 0x43, 0x41, 0x36, 0x54, 0x53, 0x39, 0x0a, 0x59, 0x42, 0x6b, 0x32, 0x51, 0x4e, 0x59, 0x70, 0x68, 0x77, 0x6b, 0x38, 0x6b, 0x58, 0x72, 0x32, 0x76, 0x42, 0x4d, 0x6a, 0x33, 0x56, 0x6c, 0x4f, 0x42, 0x46, 0x37, 0x50, 0x79, 0x41, 0x49, 0x63, 0x47, 0x46, 0x50, 0x42, 0x4d, 0x64, 0x6a, 0x61, 0x49, 0x4f, 0x6c, 0x45, 0x6a, 0x65, 0x52, 0x32, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x0a, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x38, 0x79, 0x67, 0x59, 0x79, 0x32, 0x52, 0x31, 0x37, 0x69, 0x6b, 0x71, 0x36, 0x2b, 0x32, 0x75, 0x49, 0x31, 0x67, 0x34, 0x68, 0x65, 0x76, 0x49, 0x49, 0x67, 0x63, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x0a, 0x41, 0x77, 0x4d, 0x44, 0x61, 0x41, 0x41, 0x77, 0x5a, 0x51, 0x49, 0x78, 0x41, 0x4c, 0x47, 0x4f, 0x57, 0x69, 0x44, 0x44, 0x73, 0x68, 0x6c, 0x69, 0x54, 0x64, 0x36, 0x77, 0x54, 0x39, 0x39, 0x75, 0x30, 0x6e, 0x43, 0x4b, 0x38, 0x5a, 0x39, 0x2b, 0x61, 0x6f, 0x7a, 0x6d, 0x75, 0x74, 0x36, 0x44, 0x61, 0x63, 0x70, 0x70, 0x73, 0x36, 0x6b, 0x46, 0x74, 0x5a, 0x61, 0x53, 0x46, 0x34, 0x66, 0x43, 0x30, 0x75, 0x72, 0x51, 0x65, 0x38, 0x37, 0x59, 0x51, 0x56, 0x74, 0x38, 0x0a, 0x72, 0x67, 0x49, 0x77, 0x52, 0x74, 0x37, 0x71, 0x79, 0x31, 0x32, 0x61, 0x37, 0x44, 0x4c, 0x43, 0x5a, 0x52, 0x61, 0x77, 0x54, 0x44, 0x42, 0x63, 0x4d, 0x50, 0x50, 0x61, 0x54, 0x6e, 0x4f, 0x47, 0x42, 0x74, 0x6a, 0x4f, 0x69, 0x51, 0x52, 0x49, 0x4e, 0x7a, 0x66, 0x34, 0x33, 0x54, 0x4e, 0x52, 0x6e, 0x58, 0x43, 0x76, 0x65, 0x31, 0x58, 0x59, 0x41, 0x53, 0x35, 0x39, 0x42, 0x57, 0x51, 0x4f, 0x68, 0x72, 0x69, 0x52, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x66, 0x7a, 0x43, 0x43, 0x41, 0x32, 0x65, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4a, 0x41, 0x4f, 0x46, 0x38, 0x4e, 0x30, 0x44, 0x39, 0x47, 0x2f, 0x35, 0x6e, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x44, 0x41, 0x55, 0x41, 0x4d, 0x46, 0x30, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x70, 0x51, 0x4d, 0x53, 0x55, 0x77, 0x0a, 0x49, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x78, 0x54, 0x52, 0x55, 0x4e, 0x50, 0x54, 0x53, 0x42, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x54, 0x65, 0x58, 0x4e, 0x30, 0x5a, 0x57, 0x31, 0x7a, 0x49, 0x45, 0x4e, 0x50, 0x4c, 0x69, 0x78, 0x4d, 0x56, 0x45, 0x51, 0x75, 0x4d, 0x53, 0x63, 0x77, 0x4a, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x35, 0x54, 0x5a, 0x57, 0x4e, 0x31, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x42, 0x44, 0x0a, 0x62, 0x32, 0x31, 0x74, 0x64, 0x57, 0x35, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x52, 0x44, 0x51, 0x54, 0x4d, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x54, 0x59, 0x77, 0x4e, 0x6a, 0x45, 0x32, 0x4d, 0x44, 0x59, 0x78, 0x4e, 0x7a, 0x45, 0x32, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x7a, 0x67, 0x77, 0x4d, 0x54, 0x45, 0x34, 0x4d, 0x44, 0x59, 0x78, 0x4e, 0x7a, 0x45, 0x32, 0x57, 0x6a, 0x42, 0x64, 0x4d, 0x51, 0x73, 0x77, 0x0a, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x4b, 0x55, 0x44, 0x45, 0x6c, 0x4d, 0x43, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x63, 0x55, 0x30, 0x56, 0x44, 0x54, 0x30, 0x30, 0x67, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x55, 0x33, 0x6c, 0x7a, 0x64, 0x47, 0x56, 0x74, 0x63, 0x79, 0x42, 0x44, 0x54, 0x79, 0x34, 0x73, 0x54, 0x46, 0x52, 0x45, 0x4c, 0x6a, 0x45, 0x6e, 0x4d, 0x43, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x41, 0x78, 0x4d, 0x65, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x58, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x51, 0x32, 0x39, 0x74, 0x62, 0x58, 0x56, 0x75, 0x61, 0x57, 0x4e, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x51, 0x30, 0x45, 0x7a, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x38, 0x41, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x45, 0x41, 0x34, 0x38, 0x6c, 0x79, 0x53, 0x66, 0x63, 0x77, 0x33, 0x67, 0x6c, 0x38, 0x71, 0x55, 0x43, 0x42, 0x57, 0x4e, 0x4f, 0x30, 0x4f, 0x74, 0x32, 0x36, 0x59, 0x51, 0x2b, 0x54, 0x55, 0x47, 0x35, 0x70, 0x50, 0x44, 0x58, 0x43, 0x37, 0x6c, 0x74, 0x7a, 0x6b, 0x42, 0x74, 0x6e, 0x54, 0x43, 0x48, 0x73, 0x58, 0x7a, 0x57, 0x37, 0x4f, 0x54, 0x34, 0x72, 0x43, 0x6d, 0x44, 0x76, 0x75, 0x32, 0x30, 0x72, 0x0a, 0x68, 0x76, 0x74, 0x78, 0x6f, 0x73, 0x69, 0x73, 0x35, 0x46, 0x61, 0x55, 0x2b, 0x63, 0x6d, 0x76, 0x73, 0x58, 0x4c, 0x55, 0x49, 0x4b, 0x78, 0x30, 0x30, 0x72, 0x67, 0x56, 0x72, 0x56, 0x48, 0x2b, 0x68, 0x58, 0x53, 0x68, 0x75, 0x52, 0x44, 0x2b, 0x42, 0x59, 0x44, 0x35, 0x55, 0x70, 0x4f, 0x7a, 0x51, 0x44, 0x31, 0x31, 0x45, 0x4b, 0x7a, 0x41, 0x6c, 0x72, 0x65, 0x6e, 0x66, 0x6e, 0x61, 0x38, 0x34, 0x78, 0x74, 0x53, 0x47, 0x63, 0x34, 0x52, 0x48, 0x77, 0x73, 0x45, 0x0a, 0x4e, 0x50, 0x58, 0x59, 0x39, 0x57, 0x6b, 0x38, 0x64, 0x2f, 0x4e, 0x6b, 0x39, 0x41, 0x32, 0x71, 0x68, 0x64, 0x37, 0x67, 0x43, 0x56, 0x41, 0x45, 0x46, 0x35, 0x61, 0x45, 0x74, 0x38, 0x69, 0x4b, 0x76, 0x45, 0x31, 0x79, 0x2f, 0x42, 0x79, 0x37, 0x7a, 0x2f, 0x4d, 0x47, 0x54, 0x66, 0x6d, 0x66, 0x5a, 0x50, 0x64, 0x2b, 0x70, 0x6d, 0x61, 0x47, 0x4e, 0x58, 0x48, 0x49, 0x45, 0x59, 0x42, 0x4d, 0x77, 0x58, 0x46, 0x41, 0x57, 0x42, 0x36, 0x2b, 0x6f, 0x48, 0x50, 0x32, 0x0a, 0x2f, 0x44, 0x35, 0x51, 0x34, 0x65, 0x41, 0x76, 0x4a, 0x6a, 0x31, 0x2b, 0x58, 0x43, 0x4f, 0x31, 0x65, 0x58, 0x44, 0x65, 0x2b, 0x75, 0x44, 0x52, 0x70, 0x64, 0x59, 0x4d, 0x51, 0x58, 0x46, 0x37, 0x39, 0x2b, 0x71, 0x4d, 0x48, 0x49, 0x6a, 0x48, 0x37, 0x49, 0x76, 0x31, 0x30, 0x53, 0x39, 0x56, 0x6c, 0x6b, 0x5a, 0x38, 0x57, 0x6a, 0x74, 0x59, 0x4f, 0x2f, 0x75, 0x36, 0x32, 0x43, 0x32, 0x31, 0x4a, 0x64, 0x70, 0x36, 0x54, 0x73, 0x39, 0x45, 0x72, 0x69, 0x47, 0x6d, 0x0a, 0x6e, 0x70, 0x6a, 0x4b, 0x49, 0x47, 0x35, 0x38, 0x75, 0x34, 0x69, 0x46, 0x57, 0x2f, 0x76, 0x41, 0x45, 0x47, 0x4b, 0x37, 0x38, 0x76, 0x6b, 0x6e, 0x52, 0x2b, 0x2f, 0x52, 0x69, 0x54, 0x6c, 0x44, 0x78, 0x4e, 0x2f, 0x65, 0x34, 0x55, 0x47, 0x2f, 0x56, 0x48, 0x4d, 0x67, 0x6c, 0x79, 0x31, 0x73, 0x32, 0x76, 0x50, 0x55, 0x42, 0x36, 0x50, 0x6d, 0x75, 0x64, 0x68, 0x76, 0x72, 0x76, 0x79, 0x4d, 0x47, 0x53, 0x37, 0x54, 0x5a, 0x32, 0x63, 0x72, 0x6c, 0x64, 0x74, 0x59, 0x0a, 0x58, 0x4c, 0x56, 0x71, 0x41, 0x76, 0x4f, 0x34, 0x67, 0x31, 0x36, 0x30, 0x61, 0x37, 0x35, 0x42, 0x66, 0x6c, 0x63, 0x4a, 0x64, 0x55, 0x52, 0x51, 0x56, 0x63, 0x31, 0x61, 0x45, 0x57, 0x45, 0x68, 0x43, 0x6d, 0x48, 0x43, 0x71, 0x59, 0x6a, 0x39, 0x45, 0x37, 0x77, 0x74, 0x69, 0x53, 0x2f, 0x4e, 0x59, 0x65, 0x43, 0x56, 0x76, 0x73, 0x71, 0x31, 0x65, 0x2b, 0x46, 0x37, 0x4e, 0x47, 0x63, 0x4c, 0x48, 0x37, 0x59, 0x4d, 0x78, 0x33, 0x77, 0x65, 0x47, 0x56, 0x50, 0x4b, 0x0a, 0x70, 0x37, 0x46, 0x4b, 0x46, 0x53, 0x42, 0x57, 0x46, 0x48, 0x41, 0x39, 0x4b, 0x34, 0x49, 0x73, 0x44, 0x35, 0x30, 0x56, 0x48, 0x55, 0x65, 0x41, 0x52, 0x2f, 0x39, 0x34, 0x6d, 0x51, 0x34, 0x78, 0x72, 0x32, 0x38, 0x2b, 0x6a, 0x2b, 0x32, 0x47, 0x61, 0x52, 0x35, 0x37, 0x47, 0x49, 0x67, 0x55, 0x73, 0x73, 0x4c, 0x38, 0x67, 0x6a, 0x4d, 0x75, 0x6e, 0x45, 0x73, 0x74, 0x2b, 0x33, 0x41, 0x37, 0x63, 0x61, 0x6f, 0x72, 0x65, 0x79, 0x59, 0x6e, 0x38, 0x78, 0x72, 0x43, 0x0a, 0x33, 0x50, 0x73, 0x58, 0x75, 0x4b, 0x48, 0x71, 0x79, 0x36, 0x43, 0x30, 0x72, 0x74, 0x4f, 0x55, 0x66, 0x6e, 0x72, 0x51, 0x71, 0x38, 0x50, 0x73, 0x4f, 0x43, 0x30, 0x52, 0x4c, 0x6f, 0x69, 0x2f, 0x31, 0x44, 0x2b, 0x74, 0x45, 0x6a, 0x74, 0x43, 0x72, 0x49, 0x38, 0x43, 0x62, 0x6e, 0x33, 0x4d, 0x30, 0x56, 0x39, 0x68, 0x76, 0x71, 0x47, 0x38, 0x4f, 0x6d, 0x70, 0x49, 0x36, 0x69, 0x5a, 0x56, 0x49, 0x68, 0x5a, 0x64, 0x58, 0x77, 0x33, 0x2f, 0x4a, 0x7a, 0x4f, 0x66, 0x0a, 0x47, 0x41, 0x4e, 0x30, 0x69, 0x6c, 0x74, 0x53, 0x49, 0x45, 0x64, 0x72, 0x52, 0x55, 0x30, 0x69, 0x64, 0x34, 0x78, 0x56, 0x4a, 0x2f, 0x43, 0x76, 0x48, 0x6f, 0x7a, 0x4a, 0x67, 0x79, 0x4a, 0x55, 0x74, 0x35, 0x72, 0x51, 0x54, 0x39, 0x6e, 0x4f, 0x2f, 0x4e, 0x6b, 0x75, 0x48, 0x4a, 0x59, 0x6f, 0x73, 0x51, 0x4c, 0x54, 0x41, 0x37, 0x30, 0x6c, 0x55, 0x68, 0x77, 0x30, 0x5a, 0x6b, 0x38, 0x6a, 0x71, 0x2f, 0x52, 0x33, 0x67, 0x70, 0x59, 0x64, 0x30, 0x56, 0x63, 0x77, 0x0a, 0x43, 0x42, 0x45, 0x46, 0x2f, 0x56, 0x66, 0x52, 0x32, 0x63, 0x63, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x47, 0x51, 0x55, 0x66, 0x50, 0x78, 0x59, 0x63, 0x68, 0x61, 0x6d, 0x43, 0x69, 0x6b, 0x30, 0x46, 0x57, 0x38, 0x71, 0x79, 0x37, 0x7a, 0x38, 0x72, 0x36, 0x69, 0x72, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x0a, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x44, 0x41, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x41, 0x51, 0x44, 0x63, 0x41, 0x69, 0x4d, 0x49, 0x34, 0x75, 0x38, 0x68, 0x4f, 0x73, 0x63, 0x4e, 0x74, 0x79, 0x62, 0x53, 0x0a, 0x59, 0x70, 0x4f, 0x6e, 0x70, 0x53, 0x4e, 0x79, 0x42, 0x79, 0x43, 0x43, 0x59, 0x4e, 0x38, 0x59, 0x31, 0x31, 0x53, 0x74, 0x61, 0x53, 0x57, 0x53, 0x6e, 0x74, 0x6b, 0x55, 0x7a, 0x35, 0x6d, 0x35, 0x55, 0x6f, 0x48, 0x50, 0x72, 0x6d, 0x79, 0x4b, 0x4f, 0x31, 0x6f, 0x35, 0x79, 0x47, 0x77, 0x42, 0x51, 0x38, 0x49, 0x69, 0x62, 0x51, 0x4c, 0x77, 0x59, 0x73, 0x31, 0x4f, 0x59, 0x30, 0x50, 0x41, 0x46, 0x4e, 0x72, 0x30, 0x59, 0x2f, 0x44, 0x71, 0x39, 0x48, 0x48, 0x75, 0x0a, 0x54, 0x6f, 0x66, 0x6a, 0x63, 0x61, 0x6e, 0x30, 0x79, 0x56, 0x66, 0x6c, 0x4c, 0x6c, 0x38, 0x63, 0x65, 0x62, 0x73, 0x6a, 0x71, 0x6f, 0x64, 0x45, 0x56, 0x2b, 0x6d, 0x39, 0x4e, 0x55, 0x31, 0x42, 0x75, 0x30, 0x73, 0x6f, 0x6f, 0x35, 0x69, 0x79, 0x47, 0x39, 0x6b, 0x4c, 0x46, 0x77, 0x66, 0x6c, 0x39, 0x2b, 0x71, 0x64, 0x39, 0x58, 0x62, 0x58, 0x76, 0x38, 0x53, 0x32, 0x67, 0x56, 0x6a, 0x2f, 0x79, 0x50, 0x39, 0x6b, 0x61, 0x57, 0x4a, 0x35, 0x72, 0x57, 0x34, 0x4f, 0x0a, 0x48, 0x33, 0x2f, 0x75, 0x48, 0x57, 0x6e, 0x6c, 0x74, 0x33, 0x4a, 0x78, 0x73, 0x2f, 0x36, 0x6c, 0x41, 0x54, 0x57, 0x55, 0x56, 0x43, 0x76, 0x41, 0x55, 0x6d, 0x32, 0x50, 0x56, 0x63, 0x54, 0x4a, 0x30, 0x72, 0x6a, 0x4c, 0x79, 0x6a, 0x51, 0x49, 0x55, 0x59, 0x57, 0x67, 0x39, 0x62, 0x79, 0x30, 0x46, 0x31, 0x6a, 0x71, 0x43, 0x6c, 0x78, 0x36, 0x76, 0x57, 0x50, 0x47, 0x4f, 0x69, 0x2f, 0x2f, 0x6c, 0x6b, 0x6b, 0x5a, 0x68, 0x4f, 0x70, 0x6e, 0x32, 0x41, 0x53, 0x78, 0x0a, 0x59, 0x66, 0x51, 0x41, 0x57, 0x30, 0x71, 0x33, 0x6e, 0x48, 0x45, 0x33, 0x47, 0x59, 0x56, 0x35, 0x76, 0x34, 0x47, 0x77, 0x78, 0x78, 0x4d, 0x4f, 0x64, 0x6e, 0x45, 0x2b, 0x4f, 0x6f, 0x41, 0x47, 0x72, 0x67, 0x59, 0x57, 0x70, 0x34, 0x32, 0x31, 0x77, 0x73, 0x54, 0x4c, 0x2f, 0x30, 0x43, 0x6c, 0x58, 0x49, 0x32, 0x6c, 0x79, 0x54, 0x72, 0x74, 0x63, 0x6f, 0x48, 0x4b, 0x58, 0x4a, 0x67, 0x38, 0x30, 0x6a, 0x51, 0x44, 0x64, 0x77, 0x6a, 0x39, 0x38, 0x43, 0x6c, 0x5a, 0x0a, 0x58, 0x53, 0x45, 0x49, 0x78, 0x32, 0x43, 0x2f, 0x70, 0x48, 0x46, 0x37, 0x75, 0x4e, 0x6b, 0x65, 0x67, 0x72, 0x34, 0x4a, 0x72, 0x32, 0x56, 0x76, 0x4b, 0x4b, 0x75, 0x2f, 0x53, 0x37, 0x58, 0x75, 0x50, 0x67, 0x68, 0x48, 0x4a, 0x36, 0x41, 0x50, 0x62, 0x77, 0x2b, 0x4c, 0x50, 0x36, 0x79, 0x56, 0x47, 0x50, 0x4f, 0x35, 0x44, 0x74, 0x78, 0x6e, 0x56, 0x57, 0x35, 0x69, 0x6e, 0x6b, 0x59, 0x4f, 0x30, 0x51, 0x52, 0x34, 0x79, 0x6e, 0x4b, 0x75, 0x64, 0x74, 0x6d, 0x6c, 0x0a, 0x2b, 0x4c, 0x4c, 0x66, 0x69, 0x41, 0x6c, 0x68, 0x69, 0x2b, 0x38, 0x6b, 0x54, 0x74, 0x46, 0x5a, 0x50, 0x31, 0x72, 0x55, 0x50, 0x63, 0x6d, 0x54, 0x50, 0x43, 0x74, 0x6b, 0x39, 0x59, 0x45, 0x4e, 0x46, 0x70, 0x62, 0x33, 0x6b, 0x73, 0x50, 0x2b, 0x4d, 0x57, 0x2f, 0x6f, 0x4b, 0x6a, 0x4a, 0x30, 0x44, 0x76, 0x52, 0x4d, 0x6d, 0x45, 0x6f, 0x59, 0x44, 0x6a, 0x42, 0x55, 0x31, 0x63, 0x58, 0x72, 0x76, 0x4d, 0x55, 0x56, 0x6e, 0x75, 0x69, 0x5a, 0x49, 0x65, 0x73, 0x6e, 0x0a, 0x4b, 0x77, 0x6b, 0x4b, 0x32, 0x2f, 0x48, 0x6d, 0x63, 0x42, 0x68, 0x57, 0x75, 0x77, 0x7a, 0x6b, 0x76, 0x76, 0x6e, 0x6f, 0x45, 0x4b, 0x51, 0x54, 0x6b, 0x72, 0x67, 0x63, 0x34, 0x4e, 0x74, 0x6e, 0x48, 0x56, 0x4d, 0x44, 0x70, 0x43, 0x4b, 0x6e, 0x33, 0x46, 0x32, 0x53, 0x45, 0x44, 0x7a, 0x71, 0x2f, 0x2f, 0x77, 0x62, 0x45, 0x42, 0x72, 0x44, 0x32, 0x4e, 0x43, 0x63, 0x6e, 0x57, 0x58, 0x4c, 0x30, 0x43, 0x73, 0x6e, 0x4d, 0x51, 0x4d, 0x65, 0x4e, 0x75, 0x45, 0x39, 0x0a, 0x64, 0x6e, 0x55, 0x4d, 0x2f, 0x30, 0x55, 0x6d, 0x75, 0x64, 0x31, 0x52, 0x76, 0x43, 0x50, 0x48, 0x58, 0x39, 0x6a, 0x59, 0x68, 0x78, 0x42, 0x41, 0x45, 0x67, 0x30, 0x39, 0x4f, 0x44, 0x66, 0x6e, 0x52, 0x44, 0x77, 0x59, 0x77, 0x46, 0x4d, 0x4a, 0x5a, 0x49, 0x2f, 0x2f, 0x31, 0x5a, 0x71, 0x6d, 0x66, 0x48, 0x41, 0x75, 0x63, 0x31, 0x55, 0x68, 0x36, 0x4e, 0x2f, 0x2f, 0x67, 0x37, 0x6b, 0x64, 0x50, 0x6a, 0x49, 0x65, 0x31, 0x71, 0x5a, 0x39, 0x4c, 0x50, 0x46, 0x6d, 0x0a, 0x36, 0x56, 0x77, 0x64, 0x70, 0x36, 0x50, 0x4f, 0x58, 0x69, 0x55, 0x79, 0x4b, 0x2b, 0x4f, 0x56, 0x72, 0x43, 0x6f, 0x48, 0x7a, 0x72, 0x51, 0x6f, 0x65, 0x49, 0x59, 0x38, 0x4c, 0x61, 0x61, 0x64, 0x54, 0x64, 0x4a, 0x30, 0x4d, 0x4e, 0x31, 0x6b, 0x55, 0x52, 0x58, 0x62, 0x67, 0x34, 0x4e, 0x52, 0x31, 0x36, 0x2f, 0x39, 0x4d, 0x35, 0x31, 0x4e, 0x5a, 0x67, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x4f, 0x44, 0x43, 0x43, 0x41, 0x62, 0x36, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4a, 0x41, 0x4e, 0x5a, 0x64, 0x6d, 0x37, 0x4e, 0x34, 0x67, 0x53, 0x37, 0x72, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x44, 0x4d, 0x47, 0x45, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x70, 0x51, 0x4d, 0x53, 0x55, 0x77, 0x49, 0x77, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x4b, 0x45, 0x78, 0x78, 0x54, 0x52, 0x55, 0x4e, 0x50, 0x54, 0x53, 0x42, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x54, 0x65, 0x58, 0x4e, 0x30, 0x5a, 0x57, 0x31, 0x7a, 0x49, 0x45, 0x4e, 0x50, 0x4c, 0x69, 0x78, 0x4d, 0x56, 0x45, 0x51, 0x75, 0x4d, 0x53, 0x73, 0x77, 0x4b, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x4a, 0x54, 0x5a, 0x57, 0x4e, 0x31, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x42, 0x44, 0x62, 0x32, 0x31, 0x74, 0x0a, 0x64, 0x57, 0x35, 0x70, 0x59, 0x32, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x45, 0x56, 0x44, 0x51, 0x79, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x51, 0x30, 0x45, 0x78, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x32, 0x4d, 0x44, 0x59, 0x78, 0x4e, 0x6a, 0x41, 0x31, 0x4d, 0x54, 0x55, 0x79, 0x4f, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x4d, 0x34, 0x4d, 0x44, 0x45, 0x78, 0x4f, 0x44, 0x41, 0x31, 0x4d, 0x54, 0x55, 0x79, 0x4f, 0x46, 0x6f, 0x77, 0x59, 0x54, 0x45, 0x4c, 0x0a, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x53, 0x6c, 0x41, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x54, 0x48, 0x46, 0x4e, 0x46, 0x51, 0x30, 0x39, 0x4e, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x49, 0x46, 0x4e, 0x35, 0x63, 0x33, 0x52, 0x6c, 0x62, 0x58, 0x4d, 0x67, 0x51, 0x30, 0x38, 0x75, 0x4c, 0x45, 0x78, 0x55, 0x52, 0x43, 0x34, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x4d, 0x54, 0x49, 0x6c, 0x4e, 0x6c, 0x59, 0x33, 0x56, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x45, 0x4e, 0x76, 0x62, 0x57, 0x31, 0x31, 0x62, 0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x52, 0x55, 0x4e, 0x44, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x52, 0x44, 0x51, 0x54, 0x45, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x0a, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x53, 0x6b, 0x70, 0x57, 0x39, 0x67, 0x41, 0x77, 0x50, 0x44, 0x76, 0x54, 0x48, 0x30, 0x30, 0x78, 0x65, 0x63, 0x4b, 0x34, 0x52, 0x31, 0x72, 0x4f, 0x58, 0x39, 0x50, 0x56, 0x64, 0x75, 0x31, 0x32, 0x4f, 0x2f, 0x35, 0x67, 0x53, 0x4a, 0x6b, 0x6f, 0x36, 0x42, 0x6e, 0x4f, 0x50, 0x70, 0x52, 0x32, 0x37, 0x4b, 0x6b, 0x42, 0x4c, 0x49, 0x45, 0x2b, 0x43, 0x6e, 0x6e, 0x66, 0x64, 0x6c, 0x64, 0x42, 0x39, 0x73, 0x45, 0x4c, 0x4c, 0x6f, 0x0a, 0x35, 0x4f, 0x6e, 0x76, 0x62, 0x59, 0x55, 0x79, 0x6d, 0x55, 0x53, 0x78, 0x58, 0x76, 0x33, 0x4d, 0x64, 0x68, 0x44, 0x59, 0x57, 0x37, 0x32, 0x69, 0x78, 0x76, 0x6e, 0x57, 0x51, 0x75, 0x52, 0x58, 0x64, 0x74, 0x79, 0x51, 0x77, 0x6a, 0x57, 0x70, 0x53, 0x34, 0x67, 0x38, 0x45, 0x6b, 0x64, 0x74, 0x58, 0x50, 0x39, 0x4a, 0x54, 0x78, 0x70, 0x4b, 0x55, 0x4c, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x0a, 0x42, 0x42, 0x53, 0x47, 0x48, 0x4f, 0x66, 0x2b, 0x4c, 0x61, 0x56, 0x4b, 0x69, 0x77, 0x6a, 0x2b, 0x4b, 0x42, 0x48, 0x36, 0x76, 0x71, 0x4e, 0x6d, 0x2b, 0x47, 0x42, 0x5a, 0x4c, 0x7a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x4b, 0x0a, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6f, 0x41, 0x44, 0x42, 0x6c, 0x41, 0x6a, 0x41, 0x56, 0x58, 0x55, 0x49, 0x39, 0x2f, 0x4c, 0x62, 0x75, 0x39, 0x7a, 0x75, 0x78, 0x4e, 0x75, 0x69, 0x65, 0x39, 0x73, 0x52, 0x47, 0x4b, 0x45, 0x6b, 0x7a, 0x30, 0x46, 0x68, 0x44, 0x4b, 0x6d, 0x4d, 0x70, 0x7a, 0x45, 0x32, 0x78, 0x74, 0x48, 0x71, 0x69, 0x75, 0x51, 0x30, 0x34, 0x70, 0x56, 0x31, 0x49, 0x4b, 0x76, 0x33, 0x4c, 0x0a, 0x73, 0x6e, 0x4e, 0x64, 0x6f, 0x34, 0x67, 0x49, 0x78, 0x77, 0x77, 0x43, 0x4d, 0x51, 0x44, 0x41, 0x71, 0x79, 0x30, 0x4f, 0x62, 0x65, 0x30, 0x59, 0x6f, 0x74, 0x74, 0x54, 0x36, 0x53, 0x58, 0x62, 0x56, 0x51, 0x6a, 0x67, 0x55, 0x4d, 0x7a, 0x66, 0x52, 0x47, 0x45, 0x57, 0x67, 0x71, 0x74, 0x4a, 0x73, 0x4c, 0x4b, 0x42, 0x37, 0x48, 0x4f, 0x48, 0x65, 0x4c, 0x52, 0x4d, 0x73, 0x6d, 0x49, 0x62, 0x45, 0x76, 0x6f, 0x57, 0x54, 0x53, 0x56, 0x4c, 0x59, 0x37, 0x30, 0x65, 0x0a, 0x4e, 0x39, 0x6b, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x42, 0x4a, 0x43, 0x41, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x64, 0x44, 0x43, 0x43, 0x41, 0x31, 0x79, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x56, 0x57, 0x39, 0x6c, 0x34, 0x37, 0x54, 0x5a, 0x6b, 0x47, 0x6f, 0x62, 0x43, 0x64, 0x46, 0x73, 0x50, 0x73, 0x42, 0x73, 0x49, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x55, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x44, 0x54, 0x6a, 0x45, 0x6d, 0x4d, 0x43, 0x51, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x64, 0x51, 0x6b, 0x56, 0x4a, 0x53, 0x6b, 0x6c, 0x4f, 0x52, 0x79, 0x42, 0x44, 0x52, 0x56, 0x4a, 0x55, 0x53, 0x55, 0x5a, 0x4a, 0x51, 0x30, 0x46, 0x55, 0x52, 0x53, 0x42, 0x42, 0x56, 0x56, 0x52, 0x49, 0x54, 0x31, 0x4a, 0x4a, 0x56, 0x46, 0x6b, 0x78, 0x48, 0x54, 0x41, 0x62, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x46, 0x45, 0x4a, 0x4b, 0x0a, 0x51, 0x30, 0x45, 0x67, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x78, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x35, 0x4d, 0x54, 0x49, 0x78, 0x4f, 0x54, 0x41, 0x7a, 0x4d, 0x54, 0x59, 0x78, 0x4e, 0x31, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x30, 0x4d, 0x54, 0x49, 0x78, 0x4d, 0x6a, 0x41, 0x7a, 0x4d, 0x54, 0x59, 0x78, 0x4e, 0x31, 0x6f, 0x77, 0x56, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x34, 0x78, 0x4a, 0x6a, 0x41, 0x6b, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x48, 0x55, 0x4a, 0x46, 0x53, 0x55, 0x70, 0x4a, 0x54, 0x6b, 0x63, 0x67, 0x51, 0x30, 0x56, 0x53, 0x56, 0x45, 0x6c, 0x47, 0x53, 0x55, 0x4e, 0x42, 0x56, 0x45, 0x55, 0x67, 0x51, 0x56, 0x56, 0x55, 0x53, 0x45, 0x39, 0x53, 0x53, 0x56, 0x52, 0x5a, 0x4d, 0x52, 0x30, 0x77, 0x47, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x0a, 0x44, 0x42, 0x52, 0x43, 0x53, 0x6b, 0x4e, 0x42, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x54, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x50, 0x46, 0x6d, 0x0a, 0x43, 0x4c, 0x33, 0x5a, 0x78, 0x52, 0x56, 0x68, 0x79, 0x34, 0x51, 0x45, 0x51, 0x61, 0x56, 0x70, 0x4e, 0x33, 0x63, 0x64, 0x77, 0x62, 0x42, 0x37, 0x2b, 0x73, 0x4e, 0x33, 0x53, 0x4a, 0x41, 0x54, 0x63, 0x6d, 0x54, 0x52, 0x75, 0x48, 0x79, 0x51, 0x4e, 0x5a, 0x30, 0x59, 0x65, 0x59, 0x6a, 0x6a, 0x6c, 0x77, 0x45, 0x38, 0x52, 0x34, 0x48, 0x79, 0x44, 0x71, 0x4b, 0x59, 0x44, 0x5a, 0x34, 0x2f, 0x4e, 0x2b, 0x41, 0x5a, 0x73, 0x70, 0x44, 0x79, 0x52, 0x68, 0x79, 0x53, 0x0a, 0x73, 0x54, 0x70, 0x68, 0x7a, 0x76, 0x71, 0x33, 0x52, 0x70, 0x34, 0x44, 0x68, 0x74, 0x63, 0x7a, 0x62, 0x75, 0x33, 0x33, 0x52, 0x59, 0x78, 0x32, 0x4e, 0x39, 0x35, 0x75, 0x6c, 0x70, 0x48, 0x33, 0x31, 0x33, 0x34, 0x72, 0x68, 0x78, 0x66, 0x56, 0x69, 0x7a, 0x58, 0x75, 0x68, 0x4a, 0x46, 0x79, 0x56, 0x39, 0x78, 0x67, 0x77, 0x38, 0x4f, 0x35, 0x35, 0x38, 0x64, 0x6e, 0x4a, 0x43, 0x4e, 0x50, 0x59, 0x77, 0x70, 0x6a, 0x39, 0x6d, 0x5a, 0x39, 0x53, 0x31, 0x57, 0x6e, 0x0a, 0x50, 0x33, 0x68, 0x6b, 0x53, 0x57, 0x6b, 0x53, 0x6c, 0x2b, 0x42, 0x4d, 0x44, 0x64, 0x4d, 0x4a, 0x6f, 0x44, 0x49, 0x77, 0x4f, 0x76, 0x71, 0x66, 0x77, 0x50, 0x4b, 0x63, 0x78, 0x52, 0x49, 0x71, 0x4c, 0x68, 0x79, 0x31, 0x42, 0x44, 0x50, 0x61, 0x70, 0x44, 0x67, 0x52, 0x61, 0x74, 0x37, 0x47, 0x47, 0x50, 0x5a, 0x48, 0x4f, 0x69, 0x4a, 0x42, 0x68, 0x79, 0x4c, 0x38, 0x78, 0x49, 0x6b, 0x6f, 0x56, 0x4e, 0x69, 0x4d, 0x70, 0x54, 0x41, 0x4b, 0x2b, 0x42, 0x63, 0x57, 0x0a, 0x79, 0x71, 0x77, 0x33, 0x2f, 0x58, 0x6d, 0x6e, 0x6b, 0x52, 0x64, 0x34, 0x4f, 0x4a, 0x6d, 0x74, 0x57, 0x4f, 0x32, 0x79, 0x33, 0x73, 0x79, 0x4a, 0x66, 0x51, 0x4f, 0x63, 0x73, 0x34, 0x6c, 0x6c, 0x35, 0x2b, 0x4d, 0x37, 0x73, 0x53, 0x4b, 0x47, 0x6a, 0x77, 0x5a, 0x74, 0x65, 0x41, 0x66, 0x39, 0x6b, 0x52, 0x4a, 0x2f, 0x73, 0x47, 0x73, 0x63, 0x69, 0x51, 0x33, 0x35, 0x75, 0x4d, 0x74, 0x30, 0x57, 0x77, 0x66, 0x43, 0x79, 0x50, 0x51, 0x31, 0x30, 0x57, 0x52, 0x6a, 0x0a, 0x65, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x6a, 0x57, 0x4d, 0x4c, 0x33, 0x6d, 0x47, 0x39, 0x30, 0x56, 0x72, 0x34, 0x54, 0x71, 0x6e, 0x4d, 0x66, 0x4b, 0x39, 0x51, 0x37, 0x71, 0x38, 0x6c, 0x30, 0x70, 0x68, 0x34, 0x39, 0x70, 0x63, 0x7a, 0x6d, 0x2b, 0x4c, 0x69, 0x52, 0x76, 0x52, 0x53, 0x47, 0x73, 0x78, 0x64, 0x52, 0x70, 0x4a, 0x51, 0x61, 0x44, 0x72, 0x58, 0x70, 0x49, 0x68, 0x52, 0x4d, 0x73, 0x44, 0x51, 0x61, 0x34, 0x62, 0x48, 0x6c, 0x57, 0x2f, 0x4b, 0x4e, 0x6e, 0x0a, 0x4d, 0x6f, 0x48, 0x31, 0x56, 0x36, 0x58, 0x4b, 0x56, 0x30, 0x4a, 0x70, 0x36, 0x56, 0x77, 0x6b, 0x59, 0x65, 0x2f, 0x69, 0x4d, 0x42, 0x68, 0x4f, 0x52, 0x4a, 0x68, 0x56, 0x62, 0x33, 0x72, 0x43, 0x6b, 0x39, 0x67, 0x5a, 0x74, 0x74, 0x35, 0x38, 0x52, 0x34, 0x6f, 0x52, 0x54, 0x6b, 0x6c, 0x48, 0x32, 0x79, 0x69, 0x55, 0x41, 0x67, 0x75, 0x55, 0x53, 0x69, 0x7a, 0x35, 0x45, 0x74, 0x42, 0x50, 0x36, 0x44, 0x46, 0x2b, 0x62, 0x48, 0x71, 0x2f, 0x70, 0x6a, 0x2b, 0x62, 0x0a, 0x4f, 0x54, 0x30, 0x43, 0x46, 0x71, 0x4d, 0x59, 0x73, 0x32, 0x65, 0x73, 0x57, 0x7a, 0x38, 0x73, 0x67, 0x79, 0x74, 0x6e, 0x4f, 0x59, 0x46, 0x63, 0x75, 0x58, 0x36, 0x55, 0x31, 0x57, 0x54, 0x64, 0x6e, 0x6f, 0x39, 0x75, 0x72, 0x75, 0x68, 0x38, 0x57, 0x37, 0x54, 0x58, 0x61, 0x6b, 0x64, 0x49, 0x31, 0x33, 0x36, 0x7a, 0x31, 0x43, 0x32, 0x4f, 0x56, 0x6e, 0x5a, 0x4f, 0x7a, 0x32, 0x6e, 0x78, 0x62, 0x6b, 0x52, 0x73, 0x31, 0x43, 0x54, 0x71, 0x6a, 0x53, 0x53, 0x68, 0x0a, 0x47, 0x4c, 0x2b, 0x39, 0x56, 0x2f, 0x36, 0x70, 0x6d, 0x54, 0x57, 0x31, 0x32, 0x78, 0x42, 0x33, 0x75, 0x44, 0x31, 0x49, 0x75, 0x74, 0x62, 0x42, 0x35, 0x2f, 0x45, 0x6a, 0x50, 0x74, 0x66, 0x66, 0x68, 0x5a, 0x30, 0x6e, 0x50, 0x4e, 0x52, 0x41, 0x76, 0x51, 0x6f, 0x4d, 0x76, 0x66, 0x58, 0x6e, 0x6a, 0x53, 0x58, 0x57, 0x67, 0x58, 0x53, 0x48, 0x52, 0x74, 0x51, 0x70, 0x64, 0x61, 0x4a, 0x43, 0x62, 0x50, 0x64, 0x7a, 0x69, 0x65, 0x64, 0x39, 0x76, 0x33, 0x70, 0x4b, 0x0a, 0x48, 0x39, 0x4d, 0x69, 0x79, 0x52, 0x56, 0x56, 0x7a, 0x39, 0x39, 0x76, 0x66, 0x46, 0x58, 0x51, 0x70, 0x49, 0x73, 0x48, 0x45, 0x54, 0x64, 0x66, 0x67, 0x36, 0x59, 0x6d, 0x56, 0x36, 0x59, 0x42, 0x57, 0x33, 0x37, 0x2b, 0x57, 0x47, 0x67, 0x48, 0x71, 0x65, 0x6c, 0x36, 0x32, 0x62, 0x6e, 0x6f, 0x2f, 0x31, 0x41, 0x66, 0x71, 0x38, 0x4b, 0x30, 0x77, 0x4d, 0x37, 0x6f, 0x36, 0x76, 0x30, 0x50, 0x76, 0x59, 0x31, 0x4e, 0x75, 0x4c, 0x78, 0x78, 0x41, 0x67, 0x4d, 0x42, 0x0a, 0x41, 0x41, 0x47, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54, 0x46, 0x37, 0x2b, 0x33, 0x4d, 0x32, 0x49, 0x30, 0x68, 0x78, 0x6b, 0x6a, 0x6b, 0x34, 0x39, 0x63, 0x55, 0x4c, 0x71, 0x63, 0x57, 0x6b, 0x2b, 0x57, 0x59, 0x41, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x55, 0x6f, 0x4b, 0x73, 0x49, 0x54, 0x51, 0x66, 0x49, 0x2f, 0x4b, 0x69, 0x32, 0x50, 0x6d, 0x34, 0x72, 0x7a, 0x63, 0x32, 0x49, 0x49, 0x6e, 0x52, 0x4e, 0x77, 0x50, 0x57, 0x61, 0x5a, 0x2b, 0x34, 0x0a, 0x59, 0x52, 0x43, 0x36, 0x6f, 0x6a, 0x47, 0x59, 0x57, 0x55, 0x66, 0x6f, 0x30, 0x51, 0x30, 0x6c, 0x48, 0x68, 0x56, 0x42, 0x44, 0x4f, 0x41, 0x71, 0x56, 0x64, 0x56, 0x58, 0x55, 0x73, 0x76, 0x34, 0x35, 0x4d, 0x64, 0x70, 0x6f, 0x78, 0x31, 0x4e, 0x63, 0x51, 0x4a, 0x65, 0x58, 0x79, 0x46, 0x46, 0x59, 0x45, 0x68, 0x63, 0x43, 0x59, 0x35, 0x4a, 0x45, 0x4d, 0x45, 0x45, 0x33, 0x4b, 0x6c, 0x69, 0x61, 0x77, 0x4c, 0x77, 0x51, 0x38, 0x68, 0x4f, 0x6e, 0x54, 0x68, 0x4a, 0x0a, 0x64, 0x4d, 0x6b, 0x79, 0x63, 0x46, 0x52, 0x74, 0x77, 0x55, 0x66, 0x38, 0x6a, 0x72, 0x51, 0x32, 0x6e, 0x74, 0x53, 0x63, 0x76, 0x64, 0x30, 0x67, 0x31, 0x6c, 0x50, 0x4a, 0x47, 0x4b, 0x6d, 0x31, 0x56, 0x72, 0x6c, 0x32, 0x69, 0x35, 0x56, 0x6e, 0x5a, 0x75, 0x36, 0x39, 0x6d, 0x50, 0x36, 0x75, 0x37, 0x37, 0x35, 0x75, 0x2b, 0x32, 0x44, 0x32, 0x2f, 0x56, 0x6e, 0x47, 0x4b, 0x68, 0x73, 0x2f, 0x49, 0x30, 0x71, 0x55, 0x4a, 0x44, 0x41, 0x6e, 0x79, 0x49, 0x6d, 0x38, 0x0a, 0x36, 0x30, 0x51, 0x6b, 0x6d, 0x73, 0x73, 0x39, 0x76, 0x6b, 0x2f, 0x56, 0x65, 0x73, 0x36, 0x4f, 0x46, 0x38, 0x74, 0x69, 0x77, 0x64, 0x6e, 0x65, 0x48, 0x67, 0x35, 0x36, 0x2f, 0x30, 0x4f, 0x47, 0x4e, 0x46, 0x4b, 0x38, 0x59, 0x54, 0x38, 0x38, 0x58, 0x37, 0x76, 0x5a, 0x64, 0x72, 0x52, 0x54, 0x76, 0x4a, 0x65, 0x7a, 0x2f, 0x6f, 0x70, 0x4d, 0x45, 0x69, 0x34, 0x72, 0x38, 0x39, 0x66, 0x4f, 0x34, 0x61, 0x4c, 0x2f, 0x33, 0x58, 0x74, 0x77, 0x2b, 0x7a, 0x75, 0x68, 0x0a, 0x54, 0x61, 0x52, 0x6a, 0x41, 0x76, 0x30, 0x34, 0x6c, 0x35, 0x55, 0x2f, 0x42, 0x58, 0x43, 0x67, 0x61, 0x39, 0x39, 0x69, 0x67, 0x55, 0x4f, 0x4c, 0x74, 0x46, 0x6b, 0x4e, 0x53, 0x6f, 0x78, 0x55, 0x6e, 0x4d, 0x57, 0x37, 0x67, 0x5a, 0x2f, 0x4e, 0x66, 0x61, 0x58, 0x76, 0x43, 0x79, 0x55, 0x65, 0x4f, 0x69, 0x44, 0x62, 0x48, 0x50, 0x77, 0x66, 0x6d, 0x47, 0x63, 0x43, 0x43, 0x74, 0x52, 0x7a, 0x52, 0x42, 0x50, 0x62, 0x55, 0x59, 0x51, 0x61, 0x56, 0x51, 0x4e, 0x57, 0x0a, 0x34, 0x41, 0x42, 0x2b, 0x64, 0x41, 0x62, 0x2f, 0x4f, 0x4d, 0x52, 0x79, 0x48, 0x64, 0x4f, 0x6f, 0x50, 0x32, 0x67, 0x78, 0x58, 0x64, 0x4d, 0x4a, 0x78, 0x79, 0x36, 0x4d, 0x57, 0x32, 0x50, 0x67, 0x36, 0x4e, 0x77, 0x65, 0x30, 0x75, 0x78, 0x68, 0x48, 0x76, 0x4c, 0x65, 0x35, 0x65, 0x2f, 0x32, 0x6d, 0x58, 0x5a, 0x67, 0x4c, 0x52, 0x36, 0x55, 0x63, 0x6e, 0x48, 0x47, 0x43, 0x79, 0x6f, 0x79, 0x78, 0x35, 0x4a, 0x4f, 0x31, 0x55, 0x62, 0x58, 0x48, 0x66, 0x6d, 0x70, 0x0a, 0x47, 0x51, 0x72, 0x49, 0x2b, 0x70, 0x58, 0x4f, 0x62, 0x53, 0x4f, 0x59, 0x71, 0x67, 0x73, 0x34, 0x72, 0x5a, 0x70, 0x57, 0x44, 0x57, 0x2b, 0x4e, 0x38, 0x54, 0x45, 0x41, 0x69, 0x4d, 0x45, 0x58, 0x6e, 0x4d, 0x30, 0x5a, 0x4e, 0x6a, 0x58, 0x2b, 0x56, 0x56, 0x4f, 0x67, 0x34, 0x44, 0x77, 0x7a, 0x58, 0x35, 0x5a, 0x65, 0x34, 0x6a, 0x4c, 0x70, 0x33, 0x7a, 0x4f, 0x37, 0x42, 0x6b, 0x71, 0x70, 0x32, 0x49, 0x52, 0x7a, 0x7a, 0x6e, 0x66, 0x53, 0x78, 0x71, 0x78, 0x78, 0x0a, 0x34, 0x56, 0x79, 0x6a, 0x48, 0x51, 0x79, 0x37, 0x43, 0x74, 0x39, 0x66, 0x34, 0x71, 0x4e, 0x78, 0x32, 0x4e, 0x6f, 0x33, 0x57, 0x71, 0x42, 0x34, 0x4b, 0x2f, 0x54, 0x55, 0x66, 0x65, 0x74, 0x32, 0x37, 0x66, 0x4a, 0x68, 0x63, 0x4b, 0x56, 0x6c, 0x6d, 0x74, 0x4f, 0x4a, 0x4e, 0x42, 0x69, 0x72, 0x2b, 0x33, 0x49, 0x2b, 0x31, 0x37, 0x51, 0x39, 0x65, 0x56, 0x7a, 0x59, 0x48, 0x36, 0x45, 0x7a, 0x65, 0x39, 0x6d, 0x43, 0x55, 0x41, 0x79, 0x54, 0x46, 0x36, 0x70, 0x73, 0x0a, 0x33, 0x4d, 0x4b, 0x43, 0x75, 0x77, 0x4a, 0x58, 0x4e, 0x71, 0x2b, 0x59, 0x4a, 0x79, 0x6f, 0x35, 0x55, 0x4f, 0x47, 0x77, 0x69, 0x66, 0x55, 0x6c, 0x6c, 0x33, 0x35, 0x48, 0x61, 0x42, 0x43, 0x30, 0x37, 0x48, 0x50, 0x4b, 0x73, 0x35, 0x66, 0x52, 0x4a, 0x4e, 0x7a, 0x32, 0x59, 0x71, 0x41, 0x6f, 0x30, 0x37, 0x57, 0x6a, 0x75, 0x47, 0x53, 0x33, 0x69, 0x47, 0x4a, 0x43, 0x7a, 0x35, 0x31, 0x54, 0x7a, 0x5a, 0x6d, 0x2b, 0x5a, 0x47, 0x69, 0x50, 0x54, 0x78, 0x34, 0x53, 0x0a, 0x53, 0x50, 0x66, 0x53, 0x4b, 0x63, 0x4f, 0x59, 0x4b, 0x4d, 0x72, 0x79, 0x4d, 0x67, 0x75, 0x54, 0x6a, 0x43, 0x6c, 0x50, 0x50, 0x47, 0x41, 0x79, 0x7a, 0x51, 0x57, 0x57, 0x59, 0x65, 0x7a, 0x79, 0x72, 0x2f, 0x36, 0x7a, 0x63, 0x43, 0x77, 0x75, 0x70, 0x76, 0x49, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x42, 0x4a, 0x43, 0x41, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x4a, 0x54, 0x43, 0x43, 0x41, 0x61, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x4c, 0x42, 0x63, 0x49, 0x66, 0x57, 0x51, 0x71, 0x77, 0x50, 0x36, 0x46, 0x47, 0x46, 0x6b, 0x47, 0x7a, 0x37, 0x52, 0x4b, 0x36, 0x7a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x55, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x44, 0x0a, 0x54, 0x6a, 0x45, 0x6d, 0x4d, 0x43, 0x51, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x64, 0x51, 0x6b, 0x56, 0x4a, 0x53, 0x6b, 0x6c, 0x4f, 0x52, 0x79, 0x42, 0x44, 0x52, 0x56, 0x4a, 0x55, 0x53, 0x55, 0x5a, 0x4a, 0x51, 0x30, 0x46, 0x55, 0x52, 0x53, 0x42, 0x42, 0x56, 0x56, 0x52, 0x49, 0x54, 0x31, 0x4a, 0x4a, 0x56, 0x46, 0x6b, 0x78, 0x48, 0x54, 0x41, 0x62, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x46, 0x45, 0x4a, 0x4b, 0x51, 0x30, 0x45, 0x67, 0x0a, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x79, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x35, 0x4d, 0x54, 0x49, 0x78, 0x4f, 0x54, 0x41, 0x7a, 0x4d, 0x54, 0x67, 0x79, 0x4d, 0x56, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x30, 0x4d, 0x54, 0x49, 0x78, 0x4d, 0x6a, 0x41, 0x7a, 0x4d, 0x54, 0x67, 0x79, 0x4d, 0x56, 0x6f, 0x77, 0x56, 0x44, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x34, 0x78, 0x4a, 0x6a, 0x41, 0x6b, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x48, 0x55, 0x4a, 0x46, 0x53, 0x55, 0x70, 0x4a, 0x54, 0x6b, 0x63, 0x67, 0x51, 0x30, 0x56, 0x53, 0x56, 0x45, 0x6c, 0x47, 0x53, 0x55, 0x4e, 0x42, 0x56, 0x45, 0x55, 0x67, 0x51, 0x56, 0x56, 0x55, 0x53, 0x45, 0x39, 0x53, 0x53, 0x56, 0x52, 0x5a, 0x4d, 0x52, 0x30, 0x77, 0x47, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x52, 0x43, 0x0a, 0x53, 0x6b, 0x4e, 0x42, 0x49, 0x45, 0x64, 0x73, 0x62, 0x32, 0x4a, 0x68, 0x62, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x45, 0x4e, 0x42, 0x4d, 0x6a, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x4a, 0x33, 0x4c, 0x67, 0x4a, 0x47, 0x4e, 0x55, 0x32, 0x65, 0x31, 0x75, 0x56, 0x43, 0x78, 0x41, 0x2f, 0x6a, 0x6c, 0x0a, 0x53, 0x52, 0x39, 0x42, 0x49, 0x67, 0x6d, 0x77, 0x55, 0x56, 0x4a, 0x59, 0x31, 0x69, 0x73, 0x30, 0x6a, 0x38, 0x55, 0x53, 0x52, 0x68, 0x54, 0x46, 0x69, 0x79, 0x38, 0x73, 0x68, 0x50, 0x38, 0x73, 0x62, 0x71, 0x6a, 0x56, 0x38, 0x51, 0x6e, 0x6a, 0x41, 0x79, 0x45, 0x55, 0x78, 0x45, 0x4d, 0x39, 0x66, 0x4d, 0x45, 0x73, 0x78, 0x45, 0x74, 0x71, 0x53, 0x73, 0x33, 0x70, 0x68, 0x2b, 0x42, 0x39, 0x39, 0x69, 0x4b, 0x2b, 0x2b, 0x6b, 0x70, 0x52, 0x75, 0x44, 0x43, 0x4b, 0x0a, 0x2f, 0x65, 0x48, 0x65, 0x47, 0x42, 0x49, 0x4b, 0x39, 0x6b, 0x65, 0x33, 0x35, 0x78, 0x65, 0x2f, 0x4a, 0x34, 0x72, 0x55, 0x51, 0x55, 0x79, 0x57, 0x50, 0x47, 0x43, 0x57, 0x77, 0x66, 0x30, 0x56, 0x48, 0x4b, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4e, 0x4a, 0x4b, 0x73, 0x56, 0x46, 0x2f, 0x42, 0x76, 0x44, 0x52, 0x67, 0x68, 0x39, 0x4f, 0x62, 0x6c, 0x2b, 0x72, 0x67, 0x2f, 0x78, 0x49, 0x0a, 0x31, 0x4c, 0x43, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x44, 0x41, 0x32, 0x67, 0x41, 0x4d, 0x47, 0x55, 0x43, 0x4d, 0x42, 0x71, 0x38, 0x0a, 0x57, 0x39, 0x66, 0x2b, 0x71, 0x64, 0x4a, 0x55, 0x44, 0x6b, 0x70, 0x64, 0x30, 0x6d, 0x32, 0x78, 0x51, 0x4e, 0x7a, 0x30, 0x51, 0x39, 0x58, 0x53, 0x53, 0x70, 0x6b, 0x5a, 0x45, 0x6c, 0x61, 0x41, 0x39, 0x34, 0x4d, 0x30, 0x34, 0x54, 0x56, 0x4f, 0x53, 0x47, 0x30, 0x45, 0x44, 0x31, 0x63, 0x78, 0x4d, 0x44, 0x41, 0x74, 0x73, 0x61, 0x71, 0x64, 0x41, 0x7a, 0x6a, 0x62, 0x42, 0x67, 0x49, 0x78, 0x41, 0x4d, 0x76, 0x4d, 0x68, 0x31, 0x50, 0x4c, 0x65, 0x74, 0x38, 0x67, 0x0a, 0x55, 0x58, 0x4f, 0x51, 0x77, 0x4b, 0x68, 0x62, 0x59, 0x64, 0x44, 0x46, 0x55, 0x44, 0x6e, 0x39, 0x68, 0x66, 0x37, 0x42, 0x34, 0x33, 0x6a, 0x34, 0x70, 0x74, 0x5a, 0x4c, 0x76, 0x5a, 0x75, 0x48, 0x6a, 0x77, 0x2f, 0x6c, 0x31, 0x6c, 0x4f, 0x57, 0x71, 0x7a, 0x7a, 0x49, 0x51, 0x4e, 0x70, 0x68, 0x39, 0x31, 0x4f, 0x6a, 0x39, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x74, 0x69, 0x67, 0x6f, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x45, 0x34, 0x36, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x4f, 0x6a, 0x43, 0x43, 0x41, 0x63, 0x47, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x51, 0x76, 0x4c, 0x4d, 0x32, 0x68, 0x74, 0x70, 0x4e, 0x30, 0x52, 0x66, 0x46, 0x66, 0x35, 0x31, 0x4b, 0x42, 0x43, 0x34, 0x39, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x66, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x48, 0x0a, 0x51, 0x6a, 0x45, 0x59, 0x4d, 0x42, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x50, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x47, 0x6c, 0x6e, 0x62, 0x79, 0x42, 0x4d, 0x61, 0x57, 0x31, 0x70, 0x64, 0x47, 0x56, 0x6b, 0x4d, 0x54, 0x59, 0x77, 0x4e, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x31, 0x54, 0x5a, 0x57, 0x4e, 0x30, 0x61, 0x57, 0x64, 0x76, 0x49, 0x46, 0x42, 0x31, 0x59, 0x6d, 0x78, 0x70, 0x59, 0x79, 0x42, 0x54, 0x5a, 0x58, 0x4a, 0x32, 0x0a, 0x5a, 0x58, 0x49, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x56, 0x75, 0x64, 0x47, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x46, 0x4e, 0x44, 0x59, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x6a, 0x45, 0x77, 0x4d, 0x7a, 0x49, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x59, 0x77, 0x4d, 0x7a, 0x49, 0x78, 0x4d, 0x6a, 0x4d, 0x31, 0x4f, 0x54, 0x55, 0x35, 0x0a, 0x57, 0x6a, 0x42, 0x66, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x48, 0x51, 0x6a, 0x45, 0x59, 0x4d, 0x42, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x50, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x47, 0x6c, 0x6e, 0x62, 0x79, 0x42, 0x4d, 0x61, 0x57, 0x31, 0x70, 0x64, 0x47, 0x56, 0x6b, 0x4d, 0x54, 0x59, 0x77, 0x4e, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x31, 0x54, 0x5a, 0x57, 0x4e, 0x30, 0x0a, 0x61, 0x57, 0x64, 0x76, 0x49, 0x46, 0x42, 0x31, 0x59, 0x6d, 0x78, 0x70, 0x59, 0x79, 0x42, 0x54, 0x5a, 0x58, 0x4a, 0x32, 0x5a, 0x58, 0x49, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x56, 0x75, 0x64, 0x47, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x46, 0x4e, 0x44, 0x59, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x0a, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x52, 0x32, 0x2b, 0x70, 0x6d, 0x70, 0x62, 0x69, 0x44, 0x74, 0x2b, 0x64, 0x64, 0x33, 0x34, 0x77, 0x63, 0x37, 0x71, 0x4e, 0x73, 0x39, 0x58, 0x7a, 0x6a, 0x6f, 0x71, 0x31, 0x57, 0x6d, 0x56, 0x6b, 0x2f, 0x57, 0x53, 0x4f, 0x72, 0x73, 0x66, 0x79, 0x32, 0x71, 0x77, 0x37, 0x4c, 0x46, 0x65, 0x65, 0x79, 0x5a, 0x59, 0x58, 0x38, 0x51, 0x65, 0x63, 0x63, 0x43, 0x57, 0x76, 0x6b, 0x45, 0x4e, 0x2f, 0x55, 0x30, 0x0a, 0x4e, 0x53, 0x74, 0x33, 0x7a, 0x6e, 0x38, 0x67, 0x6a, 0x31, 0x4b, 0x6a, 0x41, 0x49, 0x6e, 0x73, 0x31, 0x61, 0x65, 0x69, 0x62, 0x56, 0x76, 0x6a, 0x53, 0x35, 0x4b, 0x54, 0x6f, 0x49, 0x44, 0x31, 0x41, 0x5a, 0x54, 0x63, 0x38, 0x47, 0x67, 0x48, 0x48, 0x73, 0x33, 0x75, 0x2f, 0x69, 0x56, 0x53, 0x74, 0x53, 0x42, 0x44, 0x48, 0x42, 0x76, 0x2b, 0x36, 0x78, 0x6e, 0x4f, 0x51, 0x36, 0x4f, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x0a, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54, 0x52, 0x49, 0x74, 0x70, 0x4d, 0x57, 0x66, 0x46, 0x4c, 0x58, 0x79, 0x59, 0x34, 0x71, 0x70, 0x33, 0x57, 0x37, 0x75, 0x73, 0x4e, 0x77, 0x2f, 0x75, 0x70, 0x59, 0x54, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x0a, 0x2f, 0x7a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6e, 0x41, 0x44, 0x42, 0x6b, 0x41, 0x6a, 0x41, 0x6e, 0x37, 0x71, 0x52, 0x61, 0x71, 0x43, 0x47, 0x37, 0x36, 0x55, 0x65, 0x58, 0x6c, 0x49, 0x6d, 0x6c, 0x64, 0x43, 0x42, 0x74, 0x65, 0x55, 0x2f, 0x49, 0x76, 0x5a, 0x4e, 0x65, 0x57, 0x42, 0x6a, 0x37, 0x4c, 0x52, 0x6f, 0x41, 0x61, 0x73, 0x6d, 0x34, 0x50, 0x64, 0x43, 0x6b, 0x54, 0x30, 0x52, 0x48, 0x0a, 0x6c, 0x41, 0x46, 0x57, 0x6f, 0x76, 0x67, 0x7a, 0x4a, 0x51, 0x78, 0x43, 0x33, 0x36, 0x6f, 0x43, 0x4d, 0x42, 0x33, 0x71, 0x34, 0x53, 0x36, 0x49, 0x4c, 0x75, 0x48, 0x35, 0x70, 0x78, 0x30, 0x43, 0x4d, 0x6b, 0x37, 0x79, 0x6e, 0x32, 0x78, 0x56, 0x64, 0x4f, 0x4f, 0x75, 0x72, 0x76, 0x75, 0x6c, 0x47, 0x75, 0x37, 0x74, 0x30, 0x76, 0x7a, 0x43, 0x41, 0x78, 0x48, 0x72, 0x52, 0x56, 0x78, 0x67, 0x45, 0x44, 0x31, 0x63, 0x66, 0x35, 0x6b, 0x44, 0x57, 0x32, 0x31, 0x55, 0x0a, 0x53, 0x41, 0x47, 0x4b, 0x63, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x74, 0x69, 0x67, 0x6f, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x34, 0x36, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x69, 0x6a, 0x43, 0x43, 0x41, 0x33, 0x4b, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x64, 0x59, 0x33, 0x39, 0x69, 0x36, 0x35, 0x38, 0x42, 0x77, 0x44, 0x36, 0x71, 0x53, 0x57, 0x6e, 0x34, 0x63, 0x65, 0x74, 0x46, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x44, 0x42, 0x66, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x48, 0x51, 0x6a, 0x45, 0x59, 0x4d, 0x42, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x50, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x47, 0x6c, 0x6e, 0x62, 0x79, 0x42, 0x4d, 0x61, 0x57, 0x31, 0x70, 0x64, 0x47, 0x56, 0x6b, 0x4d, 0x54, 0x59, 0x77, 0x4e, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x31, 0x54, 0x5a, 0x57, 0x4e, 0x30, 0x61, 0x57, 0x64, 0x76, 0x49, 0x46, 0x42, 0x31, 0x59, 0x6d, 0x78, 0x70, 0x59, 0x79, 0x42, 0x54, 0x0a, 0x5a, 0x58, 0x4a, 0x32, 0x5a, 0x58, 0x49, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x56, 0x75, 0x64, 0x47, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x53, 0x4e, 0x44, 0x59, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x6a, 0x45, 0x77, 0x4d, 0x7a, 0x49, 0x79, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x59, 0x77, 0x4d, 0x7a, 0x49, 0x78, 0x4d, 0x6a, 0x4d, 0x31, 0x0a, 0x4f, 0x54, 0x55, 0x35, 0x57, 0x6a, 0x42, 0x66, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x48, 0x51, 0x6a, 0x45, 0x59, 0x4d, 0x42, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4d, 0x50, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x47, 0x6c, 0x6e, 0x62, 0x79, 0x42, 0x4d, 0x61, 0x57, 0x31, 0x70, 0x64, 0x47, 0x56, 0x6b, 0x4d, 0x54, 0x59, 0x77, 0x4e, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x79, 0x31, 0x54, 0x0a, 0x5a, 0x57, 0x4e, 0x30, 0x61, 0x57, 0x64, 0x76, 0x49, 0x46, 0x42, 0x31, 0x59, 0x6d, 0x78, 0x70, 0x59, 0x79, 0x42, 0x54, 0x5a, 0x58, 0x4a, 0x32, 0x5a, 0x58, 0x49, 0x67, 0x51, 0x58, 0x56, 0x30, 0x61, 0x47, 0x56, 0x75, 0x64, 0x47, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x70, 0x62, 0x32, 0x34, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x53, 0x4e, 0x44, 0x59, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x0a, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x54, 0x76, 0x74, 0x55, 0x32, 0x55, 0x6e, 0x58, 0x59, 0x41, 0x53, 0x4f, 0x67, 0x48, 0x45, 0x64, 0x43, 0x53, 0x65, 0x35, 0x6a, 0x74, 0x72, 0x63, 0x68, 0x2f, 0x63, 0x53, 0x56, 0x31, 0x55, 0x67, 0x72, 0x4a, 0x6e, 0x77, 0x55, 0x55, 0x78, 0x44, 0x61, 0x65, 0x66, 0x30, 0x72, 0x74, 0x79, 0x32, 0x6b, 0x0a, 0x31, 0x43, 0x7a, 0x36, 0x36, 0x6a, 0x4c, 0x64, 0x53, 0x63, 0x4b, 0x35, 0x76, 0x51, 0x39, 0x49, 0x50, 0x58, 0x74, 0x61, 0x6d, 0x46, 0x53, 0x76, 0x6e, 0x6c, 0x30, 0x78, 0x64, 0x45, 0x38, 0x48, 0x2f, 0x46, 0x41, 0x68, 0x33, 0x61, 0x54, 0x50, 0x61, 0x45, 0x38, 0x62, 0x45, 0x6d, 0x4e, 0x74, 0x4a, 0x5a, 0x6c, 0x4d, 0x4b, 0x70, 0x6e, 0x7a, 0x53, 0x44, 0x42, 0x68, 0x2b, 0x6f, 0x46, 0x38, 0x48, 0x71, 0x63, 0x49, 0x53, 0x74, 0x77, 0x2b, 0x4b, 0x78, 0x77, 0x66, 0x0a, 0x47, 0x45, 0x78, 0x78, 0x71, 0x6a, 0x57, 0x4d, 0x72, 0x66, 0x68, 0x75, 0x36, 0x44, 0x74, 0x4b, 0x32, 0x65, 0x57, 0x55, 0x41, 0x74, 0x61, 0x4a, 0x68, 0x42, 0x4f, 0x71, 0x62, 0x63, 0x68, 0x50, 0x4d, 0x38, 0x78, 0x51, 0x6c, 0x6a, 0x65, 0x53, 0x4d, 0x39, 0x78, 0x66, 0x69, 0x4f, 0x65, 0x66, 0x56, 0x4e, 0x6c, 0x49, 0x38, 0x4a, 0x68, 0x44, 0x31, 0x6d, 0x62, 0x39, 0x6e, 0x78, 0x63, 0x34, 0x51, 0x38, 0x55, 0x42, 0x55, 0x51, 0x76, 0x58, 0x34, 0x79, 0x4d, 0x50, 0x0a, 0x46, 0x46, 0x31, 0x62, 0x46, 0x4f, 0x64, 0x4c, 0x76, 0x74, 0x33, 0x30, 0x79, 0x4e, 0x6f, 0x44, 0x4e, 0x39, 0x48, 0x57, 0x4f, 0x61, 0x45, 0x68, 0x55, 0x54, 0x43, 0x44, 0x73, 0x47, 0x33, 0x58, 0x4d, 0x45, 0x36, 0x57, 0x57, 0x35, 0x48, 0x77, 0x63, 0x43, 0x53, 0x72, 0x76, 0x30, 0x57, 0x42, 0x5a, 0x45, 0x4d, 0x4e, 0x76, 0x53, 0x45, 0x36, 0x4c, 0x7a, 0x7a, 0x70, 0x6e, 0x67, 0x33, 0x4c, 0x49, 0x4c, 0x56, 0x43, 0x4a, 0x38, 0x7a, 0x61, 0x62, 0x35, 0x76, 0x75, 0x0a, 0x5a, 0x44, 0x43, 0x51, 0x4f, 0x63, 0x32, 0x54, 0x5a, 0x59, 0x45, 0x68, 0x4d, 0x62, 0x55, 0x6a, 0x55, 0x44, 0x4d, 0x33, 0x49, 0x75, 0x4d, 0x34, 0x37, 0x66, 0x67, 0x78, 0x4d, 0x4d, 0x78, 0x46, 0x2f, 0x6d, 0x4c, 0x35, 0x30, 0x56, 0x30, 0x79, 0x65, 0x55, 0x4b, 0x48, 0x33, 0x32, 0x72, 0x4d, 0x56, 0x68, 0x6c, 0x41, 0x54, 0x63, 0x36, 0x71, 0x75, 0x2f, 0x6d, 0x31, 0x64, 0x6b, 0x6d, 0x55, 0x38, 0x53, 0x66, 0x34, 0x6b, 0x61, 0x57, 0x44, 0x35, 0x51, 0x61, 0x7a, 0x0a, 0x59, 0x77, 0x36, 0x41, 0x33, 0x4f, 0x41, 0x53, 0x56, 0x59, 0x43, 0x6d, 0x4f, 0x32, 0x61, 0x30, 0x4f, 0x59, 0x63, 0x74, 0x79, 0x50, 0x44, 0x51, 0x30, 0x52, 0x54, 0x70, 0x35, 0x41, 0x31, 0x4e, 0x44, 0x76, 0x5a, 0x64, 0x56, 0x33, 0x4c, 0x46, 0x4f, 0x78, 0x78, 0x48, 0x56, 0x70, 0x33, 0x69, 0x31, 0x66, 0x75, 0x42, 0x59, 0x59, 0x7a, 0x4d, 0x54, 0x59, 0x43, 0x51, 0x4e, 0x46, 0x75, 0x33, 0x31, 0x78, 0x52, 0x31, 0x33, 0x4e, 0x67, 0x45, 0x53, 0x4a, 0x2f, 0x41, 0x0a, 0x77, 0x53, 0x69, 0x49, 0x74, 0x4f, 0x6b, 0x63, 0x79, 0x71, 0x65, 0x78, 0x38, 0x56, 0x61, 0x33, 0x65, 0x30, 0x6c, 0x4d, 0x57, 0x65, 0x55, 0x67, 0x46, 0x61, 0x69, 0x45, 0x41, 0x69, 0x6e, 0x36, 0x4f, 0x4a, 0x52, 0x70, 0x6d, 0x6b, 0x6b, 0x47, 0x6a, 0x38, 0x30, 0x66, 0x65, 0x52, 0x51, 0x58, 0x45, 0x67, 0x79, 0x44, 0x65, 0x74, 0x34, 0x66, 0x73, 0x5a, 0x66, 0x75, 0x2b, 0x5a, 0x64, 0x34, 0x4b, 0x4b, 0x54, 0x49, 0x52, 0x4a, 0x4c, 0x70, 0x66, 0x53, 0x59, 0x46, 0x0a, 0x70, 0x6c, 0x68, 0x79, 0x6d, 0x33, 0x6b, 0x54, 0x32, 0x42, 0x46, 0x66, 0x72, 0x73, 0x55, 0x34, 0x59, 0x6a, 0x52, 0x6f, 0x73, 0x6f, 0x59, 0x77, 0x6a, 0x76, 0x69, 0x51, 0x59, 0x5a, 0x34, 0x79, 0x62, 0x50, 0x55, 0x48, 0x4e, 0x73, 0x32, 0x69, 0x54, 0x47, 0x37, 0x73, 0x69, 0x6a, 0x62, 0x74, 0x38, 0x75, 0x61, 0x5a, 0x46, 0x55, 0x52, 0x77, 0x77, 0x33, 0x79, 0x38, 0x6e, 0x44, 0x6e, 0x41, 0x74, 0x4f, 0x46, 0x72, 0x39, 0x34, 0x4d, 0x6c, 0x49, 0x31, 0x66, 0x5a, 0x0a, 0x45, 0x6f, 0x44, 0x6c, 0x53, 0x66, 0x42, 0x31, 0x44, 0x2b, 0x2b, 0x4e, 0x36, 0x78, 0x79, 0x62, 0x56, 0x43, 0x69, 0x30, 0x49, 0x54, 0x7a, 0x38, 0x66, 0x41, 0x72, 0x2f, 0x37, 0x33, 0x74, 0x72, 0x64, 0x66, 0x2b, 0x4c, 0x48, 0x61, 0x41, 0x5a, 0x42, 0x61, 0x76, 0x36, 0x2b, 0x43, 0x75, 0x42, 0x51, 0x75, 0x67, 0x34, 0x75, 0x72, 0x76, 0x37, 0x71, 0x76, 0x30, 0x39, 0x34, 0x50, 0x50, 0x4b, 0x33, 0x30, 0x36, 0x58, 0x6c, 0x79, 0x6e, 0x74, 0x38, 0x78, 0x68, 0x57, 0x0a, 0x36, 0x61, 0x57, 0x57, 0x72, 0x4c, 0x33, 0x44, 0x6b, 0x4a, 0x69, 0x79, 0x34, 0x50, 0x6d, 0x69, 0x31, 0x4b, 0x5a, 0x48, 0x51, 0x33, 0x78, 0x74, 0x7a, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x56, 0x6e, 0x4e, 0x59, 0x5a, 0x4a, 0x58, 0x35, 0x6b, 0x68, 0x71, 0x77, 0x45, 0x69, 0x6f, 0x45, 0x59, 0x6e, 0x6d, 0x68, 0x51, 0x42, 0x57, 0x49, 0x0a, 0x49, 0x55, 0x6b, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x43, 0x39, 0x63, 0x0a, 0x6d, 0x54, 0x7a, 0x38, 0x42, 0x6c, 0x36, 0x4d, 0x6c, 0x43, 0x35, 0x77, 0x36, 0x74, 0x49, 0x79, 0x4d, 0x59, 0x32, 0x30, 0x38, 0x46, 0x48, 0x56, 0x76, 0x41, 0x72, 0x7a, 0x5a, 0x4a, 0x38, 0x48, 0x58, 0x74, 0x58, 0x42, 0x63, 0x32, 0x68, 0x6b, 0x65, 0x71, 0x4b, 0x35, 0x44, 0x75, 0x6a, 0x35, 0x58, 0x59, 0x55, 0x74, 0x71, 0x44, 0x64, 0x46, 0x71, 0x69, 0x6a, 0x30, 0x6c, 0x67, 0x56, 0x51, 0x59, 0x4b, 0x6c, 0x4a, 0x66, 0x70, 0x2f, 0x69, 0x6d, 0x54, 0x59, 0x70, 0x0a, 0x45, 0x30, 0x52, 0x48, 0x61, 0x70, 0x31, 0x56, 0x49, 0x44, 0x7a, 0x59, 0x6d, 0x2f, 0x45, 0x44, 0x4d, 0x72, 0x72, 0x61, 0x51, 0x4b, 0x46, 0x7a, 0x36, 0x6f, 0x4f, 0x68, 0x74, 0x30, 0x53, 0x6d, 0x44, 0x70, 0x6b, 0x42, 0x6d, 0x2b, 0x53, 0x38, 0x66, 0x37, 0x34, 0x54, 0x6c, 0x48, 0x37, 0x4b, 0x70, 0x68, 0x35, 0x32, 0x67, 0x44, 0x59, 0x39, 0x68, 0x41, 0x61, 0x4c, 0x4d, 0x79, 0x5a, 0x6c, 0x62, 0x63, 0x70, 0x2b, 0x6e, 0x76, 0x34, 0x66, 0x6a, 0x46, 0x67, 0x34, 0x0a, 0x65, 0x78, 0x71, 0x44, 0x73, 0x51, 0x2b, 0x38, 0x46, 0x78, 0x47, 0x37, 0x35, 0x67, 0x62, 0x4d, 0x59, 0x2f, 0x71, 0x42, 0x38, 0x6f, 0x46, 0x4d, 0x32, 0x67, 0x73, 0x51, 0x61, 0x36, 0x48, 0x36, 0x31, 0x53, 0x69, 0x6c, 0x7a, 0x77, 0x5a, 0x41, 0x46, 0x76, 0x39, 0x37, 0x66, 0x52, 0x68, 0x65, 0x4f, 0x52, 0x4b, 0x6b, 0x55, 0x35, 0x35, 0x2b, 0x4d, 0x6b, 0x49, 0x51, 0x70, 0x69, 0x47, 0x52, 0x71, 0x52, 0x78, 0x4f, 0x46, 0x33, 0x79, 0x45, 0x76, 0x4a, 0x2b, 0x4d, 0x0a, 0x30, 0x65, 0x6a, 0x66, 0x35, 0x6c, 0x47, 0x35, 0x4e, 0x6b, 0x63, 0x2f, 0x6b, 0x4c, 0x6e, 0x48, 0x76, 0x41, 0x4c, 0x63, 0x57, 0x78, 0x78, 0x50, 0x44, 0x6b, 0x6a, 0x42, 0x4a, 0x59, 0x4f, 0x63, 0x43, 0x6a, 0x2b, 0x65, 0x73, 0x51, 0x4d, 0x7a, 0x45, 0x68, 0x6f, 0x6e, 0x72, 0x50, 0x63, 0x69, 0x62, 0x43, 0x54, 0x52, 0x41, 0x55, 0x48, 0x34, 0x57, 0x41, 0x50, 0x2b, 0x4a, 0x57, 0x67, 0x69, 0x48, 0x35, 0x70, 0x61, 0x50, 0x48, 0x78, 0x73, 0x6e, 0x6e, 0x56, 0x49, 0x0a, 0x38, 0x34, 0x48, 0x78, 0x5a, 0x6d, 0x64, 0x75, 0x54, 0x49, 0x4c, 0x41, 0x37, 0x72, 0x70, 0x58, 0x44, 0x68, 0x6a, 0x76, 0x4c, 0x70, 0x72, 0x33, 0x45, 0x74, 0x69, 0x67, 0x61, 0x2b, 0x6b, 0x46, 0x70, 0x61, 0x48, 0x70, 0x61, 0x50, 0x69, 0x38, 0x54, 0x44, 0x38, 0x53, 0x48, 0x6b, 0x58, 0x6f, 0x55, 0x73, 0x43, 0x6a, 0x76, 0x78, 0x49, 0x6e, 0x65, 0x62, 0x6e, 0x4d, 0x4d, 0x54, 0x7a, 0x44, 0x39, 0x6a, 0x6f, 0x69, 0x46, 0x67, 0x4f, 0x67, 0x79, 0x59, 0x39, 0x6d, 0x0a, 0x70, 0x46, 0x75, 0x69, 0x54, 0x64, 0x61, 0x42, 0x4a, 0x51, 0x62, 0x70, 0x64, 0x71, 0x51, 0x41, 0x43, 0x6a, 0x37, 0x4c, 0x7a, 0x54, 0x57, 0x62, 0x34, 0x4f, 0x45, 0x34, 0x79, 0x32, 0x42, 0x54, 0x68, 0x69, 0x68, 0x43, 0x51, 0x52, 0x78, 0x45, 0x56, 0x2b, 0x69, 0x6f, 0x72, 0x61, 0x74, 0x46, 0x34, 0x79, 0x55, 0x51, 0x76, 0x4e, 0x73, 0x2b, 0x5a, 0x55, 0x48, 0x37, 0x47, 0x36, 0x61, 0x58, 0x44, 0x2b, 0x75, 0x35, 0x64, 0x48, 0x6e, 0x35, 0x48, 0x72, 0x77, 0x64, 0x0a, 0x56, 0x77, 0x31, 0x48, 0x72, 0x38, 0x4d, 0x76, 0x6e, 0x34, 0x64, 0x47, 0x70, 0x2b, 0x73, 0x6d, 0x57, 0x67, 0x39, 0x57, 0x59, 0x37, 0x56, 0x69, 0x59, 0x47, 0x34, 0x41, 0x2b, 0x2b, 0x4d, 0x6e, 0x45, 0x53, 0x4c, 0x6e, 0x2f, 0x70, 0x6d, 0x50, 0x4e, 0x50, 0x57, 0x35, 0x36, 0x4d, 0x4f, 0x52, 0x63, 0x72, 0x33, 0x59, 0x77, 0x78, 0x36, 0x35, 0x4c, 0x76, 0x4b, 0x52, 0x52, 0x46, 0x48, 0x51, 0x56, 0x38, 0x30, 0x4d, 0x4e, 0x4e, 0x56, 0x49, 0x49, 0x62, 0x2f, 0x62, 0x0a, 0x45, 0x2f, 0x46, 0x6d, 0x4a, 0x55, 0x4e, 0x53, 0x30, 0x6e, 0x41, 0x69, 0x4e, 0x73, 0x32, 0x66, 0x78, 0x42, 0x78, 0x31, 0x49, 0x4b, 0x31, 0x6a, 0x63, 0x6d, 0x4d, 0x47, 0x44, 0x77, 0x34, 0x6e, 0x7a, 0x74, 0x4a, 0x71, 0x44, 0x62, 0x79, 0x31, 0x4f, 0x52, 0x72, 0x70, 0x30, 0x58, 0x5a, 0x36, 0x30, 0x56, 0x7a, 0x6b, 0x35, 0x30, 0x6c, 0x4a, 0x4c, 0x56, 0x55, 0x33, 0x61, 0x50, 0x41, 0x61, 0x4f, 0x70, 0x67, 0x2b, 0x56, 0x42, 0x65, 0x48, 0x56, 0x4f, 0x6d, 0x6d, 0x0a, 0x4a, 0x31, 0x43, 0x4a, 0x65, 0x79, 0x41, 0x76, 0x50, 0x2f, 0x2b, 0x2f, 0x6f, 0x59, 0x74, 0x4b, 0x52, 0x35, 0x6a, 0x2f, 0x4b, 0x33, 0x74, 0x4a, 0x50, 0x73, 0x4d, 0x70, 0x52, 0x6d, 0x41, 0x59, 0x51, 0x71, 0x73, 0x7a, 0x4b, 0x62, 0x72, 0x41, 0x4b, 0x62, 0x6b, 0x54, 0x69, 0x64, 0x4f, 0x49, 0x69, 0x6a, 0x6c, 0x42, 0x4f, 0x38, 0x6e, 0x39, 0x70, 0x75, 0x30, 0x66, 0x39, 0x47, 0x42, 0x6a, 0x33, 0x39, 0x49, 0x74, 0x56, 0x51, 0x47, 0x4c, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x53, 0x4c, 0x2e, 0x63, 0x6f, 0x6d, 0x20, 0x54, 0x4c, 0x53, 0x20, 0x52, 0x53, 0x41, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x32, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x69, 0x54, 0x43, 0x43, 0x41, 0x33, 0x47, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x62, 0x37, 0x37, 0x61, 0x72, 0x58, 0x4f, 0x39, 0x43, 0x45, 0x44, 0x69, 0x69, 0x30, 0x32, 0x2b, 0x31, 0x50, 0x64, 0x62, 0x6b, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x4f, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x56, 0x55, 0x7a, 0x45, 0x59, 0x4d, 0x42, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x50, 0x55, 0x31, 0x4e, 0x4d, 0x49, 0x45, 0x4e, 0x76, 0x63, 0x6e, 0x42, 0x76, 0x63, 0x6d, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x4d, 0x53, 0x55, 0x77, 0x49, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x78, 0x54, 0x55, 0x30, 0x77, 0x75, 0x59, 0x32, 0x39, 0x74, 0x49, 0x46, 0x52, 0x4d, 0x55, 0x79, 0x42, 0x53, 0x55, 0x30, 0x45, 0x67, 0x0a, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x79, 0x4d, 0x44, 0x49, 0x79, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x49, 0x79, 0x4d, 0x44, 0x67, 0x79, 0x4e, 0x54, 0x45, 0x32, 0x4d, 0x7a, 0x51, 0x79, 0x4d, 0x6c, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x32, 0x4d, 0x44, 0x67, 0x78, 0x4f, 0x54, 0x45, 0x32, 0x4d, 0x7a, 0x51, 0x79, 0x4d, 0x56, 0x6f, 0x77, 0x54, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x0a, 0x56, 0x56, 0x4d, 0x78, 0x47, 0x44, 0x41, 0x57, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x44, 0x31, 0x4e, 0x54, 0x54, 0x43, 0x42, 0x44, 0x62, 0x33, 0x4a, 0x77, 0x62, 0x33, 0x4a, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6a, 0x45, 0x6c, 0x4d, 0x43, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x63, 0x55, 0x31, 0x4e, 0x4d, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x53, 0x42, 0x55, 0x54, 0x46, 0x4d, 0x67, 0x55, 0x6c, 0x4e, 0x42, 0x49, 0x46, 0x4a, 0x76, 0x0a, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x6a, 0x41, 0x79, 0x4d, 0x6a, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4e, 0x43, 0x6b, 0x43, 0x58, 0x4a, 0x50, 0x51, 0x49, 0x67, 0x53, 0x59, 0x54, 0x34, 0x31, 0x49, 0x35, 0x37, 0x75, 0x0a, 0x39, 0x6e, 0x54, 0x50, 0x4c, 0x33, 0x74, 0x59, 0x50, 0x63, 0x34, 0x38, 0x44, 0x52, 0x41, 0x6f, 0x6b, 0x43, 0x2b, 0x58, 0x39, 0x34, 0x78, 0x49, 0x32, 0x4b, 0x44, 0x59, 0x4a, 0x62, 0x46, 0x4d, 0x73, 0x42, 0x46, 0x4d, 0x46, 0x33, 0x4e, 0x51, 0x30, 0x43, 0x4a, 0x4b, 0x59, 0x37, 0x75, 0x42, 0x30, 0x79, 0x6c, 0x75, 0x31, 0x62, 0x55, 0x4a, 0x50, 0x69, 0x59, 0x59, 0x66, 0x37, 0x49, 0x53, 0x66, 0x35, 0x4f, 0x59, 0x74, 0x36, 0x2f, 0x77, 0x4e, 0x72, 0x2f, 0x79, 0x0a, 0x37, 0x68, 0x69, 0x65, 0x6e, 0x44, 0x74, 0x53, 0x78, 0x55, 0x63, 0x5a, 0x58, 0x58, 0x54, 0x7a, 0x5a, 0x47, 0x62, 0x56, 0x58, 0x63, 0x64, 0x6f, 0x74, 0x4c, 0x38, 0x62, 0x48, 0x41, 0x61, 0x6a, 0x76, 0x49, 0x39, 0x41, 0x49, 0x37, 0x59, 0x65, 0x78, 0x6f, 0x53, 0x39, 0x55, 0x63, 0x51, 0x62, 0x4f, 0x63, 0x47, 0x56, 0x30, 0x69, 0x6e, 0x73, 0x53, 0x36, 0x35, 0x37, 0x4c, 0x62, 0x38, 0x35, 0x2f, 0x62, 0x52, 0x69, 0x33, 0x70, 0x5a, 0x37, 0x51, 0x63, 0x61, 0x63, 0x0a, 0x6f, 0x4f, 0x41, 0x47, 0x63, 0x76, 0x76, 0x77, 0x42, 0x35, 0x63, 0x4a, 0x4f, 0x59, 0x46, 0x30, 0x72, 0x2f, 0x63, 0x30, 0x57, 0x52, 0x46, 0x58, 0x43, 0x73, 0x4a, 0x62, 0x77, 0x53, 0x54, 0x30, 0x4d, 0x58, 0x4d, 0x77, 0x67, 0x73, 0x61, 0x64, 0x75, 0x67, 0x4c, 0x33, 0x50, 0x6e, 0x78, 0x45, 0x58, 0x34, 0x4d, 0x4e, 0x38, 0x2f, 0x48, 0x64, 0x49, 0x47, 0x6b, 0x57, 0x43, 0x56, 0x44, 0x69, 0x31, 0x46, 0x57, 0x32, 0x34, 0x49, 0x42, 0x79, 0x64, 0x6d, 0x35, 0x4d, 0x0a, 0x52, 0x37, 0x64, 0x31, 0x56, 0x56, 0x6d, 0x30, 0x55, 0x33, 0x54, 0x5a, 0x6c, 0x4d, 0x5a, 0x42, 0x72, 0x56, 0x69, 0x4b, 0x4d, 0x57, 0x59, 0x50, 0x48, 0x71, 0x49, 0x62, 0x4b, 0x55, 0x42, 0x4f, 0x4c, 0x39, 0x39, 0x37, 0x35, 0x68, 0x59, 0x73, 0x4c, 0x66, 0x79, 0x2f, 0x37, 0x50, 0x4f, 0x30, 0x2b, 0x72, 0x34, 0x59, 0x39, 0x70, 0x74, 0x4a, 0x31, 0x4f, 0x34, 0x46, 0x62, 0x74, 0x6b, 0x30, 0x38, 0x35, 0x7a, 0x78, 0x37, 0x41, 0x47, 0x4c, 0x30, 0x53, 0x44, 0x47, 0x0a, 0x44, 0x36, 0x43, 0x31, 0x76, 0x42, 0x64, 0x4f, 0x53, 0x48, 0x74, 0x52, 0x77, 0x76, 0x7a, 0x70, 0x58, 0x47, 0x6b, 0x33, 0x52, 0x32, 0x61, 0x7a, 0x61, 0x50, 0x67, 0x56, 0x4b, 0x50, 0x43, 0x35, 0x30, 0x36, 0x51, 0x56, 0x7a, 0x46, 0x70, 0x50, 0x75, 0x6c, 0x4a, 0x77, 0x6f, 0x78, 0x4a, 0x46, 0x33, 0x63, 0x61, 0x36, 0x54, 0x76, 0x76, 0x43, 0x30, 0x50, 0x65, 0x6f, 0x55, 0x69, 0x64, 0x74, 0x62, 0x6e, 0x6d, 0x31, 0x6a, 0x50, 0x78, 0x37, 0x6a, 0x4d, 0x45, 0x57, 0x0a, 0x54, 0x4f, 0x36, 0x41, 0x66, 0x37, 0x37, 0x77, 0x64, 0x72, 0x35, 0x42, 0x55, 0x78, 0x49, 0x7a, 0x72, 0x6c, 0x6f, 0x34, 0x51, 0x71, 0x76, 0x58, 0x44, 0x7a, 0x35, 0x42, 0x6a, 0x58, 0x59, 0x48, 0x4d, 0x74, 0x57, 0x72, 0x69, 0x66, 0x5a, 0x4f, 0x5a, 0x39, 0x6d, 0x78, 0x51, 0x6e, 0x55, 0x6a, 0x62, 0x76, 0x50, 0x4e, 0x51, 0x72, 0x4c, 0x38, 0x56, 0x66, 0x56, 0x54, 0x68, 0x78, 0x63, 0x37, 0x77, 0x44, 0x4e, 0x59, 0x38, 0x56, 0x4c, 0x53, 0x2b, 0x59, 0x43, 0x6b, 0x0a, 0x38, 0x4f, 0x6a, 0x77, 0x4f, 0x34, 0x73, 0x34, 0x7a, 0x4b, 0x54, 0x47, 0x6b, 0x48, 0x38, 0x50, 0x6e, 0x50, 0x32, 0x4c, 0x30, 0x61, 0x50, 0x50, 0x32, 0x6f, 0x4f, 0x6e, 0x61, 0x63, 0x6c, 0x51, 0x4e, 0x74, 0x56, 0x63, 0x42, 0x64, 0x49, 0x4b, 0x51, 0x58, 0x54, 0x62, 0x59, 0x78, 0x45, 0x33, 0x77, 0x61, 0x57, 0x67, 0x6c, 0x6b, 0x73, 0x65, 0x6a, 0x42, 0x59, 0x53, 0x64, 0x36, 0x36, 0x55, 0x4e, 0x48, 0x73, 0x65, 0x66, 0x38, 0x4a, 0x6d, 0x41, 0x4f, 0x53, 0x71, 0x0a, 0x67, 0x2b, 0x71, 0x4b, 0x6b, 0x4b, 0x33, 0x4f, 0x4e, 0x6b, 0x52, 0x4e, 0x30, 0x56, 0x48, 0x70, 0x76, 0x42, 0x2f, 0x7a, 0x61, 0x67, 0x58, 0x39, 0x77, 0x48, 0x51, 0x66, 0x4a, 0x52, 0x6c, 0x41, 0x55, 0x57, 0x37, 0x71, 0x67, 0x6c, 0x46, 0x41, 0x33, 0x35, 0x75, 0x35, 0x43, 0x43, 0x6f, 0x47, 0x41, 0x74, 0x55, 0x6a, 0x48, 0x42, 0x50, 0x57, 0x36, 0x64, 0x76, 0x62, 0x78, 0x72, 0x42, 0x36, 0x79, 0x33, 0x73, 0x6e, 0x6d, 0x2f, 0x76, 0x67, 0x31, 0x55, 0x59, 0x6b, 0x0a, 0x37, 0x52, 0x42, 0x4c, 0x59, 0x30, 0x75, 0x6c, 0x42, 0x59, 0x2b, 0x36, 0x75, 0x42, 0x30, 0x72, 0x70, 0x76, 0x71, 0x52, 0x34, 0x70, 0x4a, 0x53, 0x76, 0x65, 0x7a, 0x72, 0x5a, 0x35, 0x64, 0x74, 0x6d, 0x69, 0x32, 0x66, 0x67, 0x54, 0x49, 0x46, 0x5a, 0x7a, 0x4c, 0x37, 0x53, 0x41, 0x67, 0x2f, 0x32, 0x53, 0x57, 0x34, 0x42, 0x43, 0x55, 0x76, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x59, 0x7a, 0x42, 0x68, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x0a, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6a, 0x42, 0x42, 0x67, 0x77, 0x46, 0x6f, 0x41, 0x55, 0x2b, 0x79, 0x34, 0x33, 0x37, 0x75, 0x4f, 0x45, 0x65, 0x69, 0x63, 0x75, 0x7a, 0x52, 0x6b, 0x31, 0x73, 0x54, 0x4e, 0x38, 0x2f, 0x39, 0x52, 0x45, 0x51, 0x72, 0x6b, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x50, 0x73, 0x75, 0x0a, 0x4e, 0x2b, 0x37, 0x6a, 0x68, 0x48, 0x6f, 0x6e, 0x4c, 0x73, 0x30, 0x5a, 0x4e, 0x62, 0x45, 0x7a, 0x66, 0x50, 0x2f, 0x55, 0x52, 0x45, 0x4b, 0x35, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x6a, 0x59, 0x6c, 0x74, 0x0a, 0x68, 0x45, 0x55, 0x59, 0x38, 0x55, 0x2b, 0x7a, 0x6f, 0x4f, 0x39, 0x6f, 0x70, 0x4d, 0x41, 0x64, 0x72, 0x44, 0x43, 0x38, 0x5a, 0x32, 0x61, 0x77, 0x6d, 0x73, 0x32, 0x32, 0x71, 0x79, 0x49, 0x5a, 0x5a, 0x74, 0x4d, 0x37, 0x51, 0x62, 0x55, 0x51, 0x6e, 0x52, 0x43, 0x36, 0x63, 0x6d, 0x34, 0x70, 0x4a, 0x43, 0x41, 0x63, 0x41, 0x5a, 0x6c, 0x69, 0x30, 0x35, 0x62, 0x67, 0x34, 0x76, 0x73, 0x4d, 0x51, 0x74, 0x66, 0x68, 0x57, 0x73, 0x53, 0x57, 0x54, 0x56, 0x54, 0x4e, 0x0a, 0x6a, 0x38, 0x70, 0x44, 0x55, 0x2f, 0x30, 0x71, 0x75, 0x4f, 0x72, 0x34, 0x5a, 0x63, 0x6f, 0x42, 0x77, 0x71, 0x31, 0x67, 0x61, 0x41, 0x61, 0x66, 0x4f, 0x52, 0x70, 0x52, 0x32, 0x65, 0x43, 0x4e, 0x4a, 0x76, 0x6b, 0x4c, 0x54, 0x71, 0x56, 0x54, 0x4a, 0x58, 0x6f, 0x6a, 0x70, 0x42, 0x7a, 0x4f, 0x43, 0x42, 0x76, 0x66, 0x52, 0x34, 0x69, 0x79, 0x72, 0x54, 0x37, 0x67, 0x4a, 0x34, 0x65, 0x4c, 0x53, 0x59, 0x77, 0x66, 0x71, 0x55, 0x64, 0x59, 0x65, 0x35, 0x62, 0x79, 0x0a, 0x69, 0x42, 0x30, 0x59, 0x72, 0x72, 0x50, 0x52, 0x70, 0x67, 0x71, 0x55, 0x2b, 0x74, 0x76, 0x54, 0x35, 0x54, 0x67, 0x4b, 0x61, 0x33, 0x6b, 0x53, 0x4d, 0x2f, 0x74, 0x4b, 0x57, 0x54, 0x63, 0x57, 0x51, 0x41, 0x36, 0x37, 0x33, 0x76, 0x57, 0x4a, 0x44, 0x50, 0x46, 0x73, 0x30, 0x2f, 0x64, 0x52, 0x61, 0x31, 0x34, 0x31, 0x39, 0x64, 0x76, 0x41, 0x4a, 0x75, 0x6f, 0x53, 0x63, 0x30, 0x36, 0x70, 0x6b, 0x5a, 0x43, 0x6d, 0x46, 0x38, 0x4e, 0x73, 0x4c, 0x7a, 0x6a, 0x55, 0x0a, 0x6f, 0x33, 0x4b, 0x55, 0x51, 0x79, 0x78, 0x69, 0x34, 0x55, 0x35, 0x63, 0x4d, 0x6a, 0x32, 0x39, 0x54, 0x48, 0x30, 0x5a, 0x52, 0x36, 0x4c, 0x44, 0x53, 0x65, 0x65, 0x57, 0x50, 0x34, 0x2b, 0x61, 0x30, 0x7a, 0x76, 0x6b, 0x45, 0x64, 0x69, 0x4c, 0x41, 0x39, 0x7a, 0x32, 0x74, 0x6d, 0x42, 0x56, 0x47, 0x4b, 0x61, 0x42, 0x55, 0x66, 0x50, 0x68, 0x71, 0x42, 0x56, 0x71, 0x36, 0x2b, 0x41, 0x4c, 0x38, 0x42, 0x51, 0x78, 0x31, 0x72, 0x6d, 0x4d, 0x52, 0x54, 0x71, 0x6f, 0x0a, 0x45, 0x4e, 0x6a, 0x77, 0x75, 0x53, 0x66, 0x72, 0x39, 0x38, 0x74, 0x36, 0x37, 0x77, 0x56, 0x79, 0x6c, 0x72, 0x58, 0x45, 0x6a, 0x35, 0x5a, 0x7a, 0x78, 0x4f, 0x68, 0x57, 0x63, 0x35, 0x79, 0x38, 0x61, 0x56, 0x46, 0x6a, 0x76, 0x4f, 0x39, 0x6e, 0x48, 0x45, 0x4d, 0x61, 0x58, 0x33, 0x63, 0x5a, 0x48, 0x78, 0x6a, 0x34, 0x48, 0x43, 0x55, 0x70, 0x2b, 0x55, 0x6d, 0x5a, 0x4b, 0x62, 0x61, 0x53, 0x50, 0x61, 0x4b, 0x44, 0x4e, 0x37, 0x45, 0x67, 0x6b, 0x61, 0x69, 0x62, 0x0a, 0x4d, 0x4f, 0x6c, 0x71, 0x62, 0x4c, 0x51, 0x6a, 0x6b, 0x32, 0x55, 0x45, 0x71, 0x78, 0x48, 0x7a, 0x44, 0x68, 0x31, 0x54, 0x4a, 0x45, 0x6c, 0x54, 0x48, 0x61, 0x45, 0x2f, 0x6e, 0x55, 0x69, 0x53, 0x45, 0x65, 0x4a, 0x39, 0x44, 0x55, 0x2f, 0x31, 0x31, 0x37, 0x32, 0x69, 0x57, 0x44, 0x35, 0x34, 0x6e, 0x52, 0x34, 0x66, 0x4b, 0x2f, 0x34, 0x68, 0x75, 0x78, 0x6f, 0x54, 0x74, 0x72, 0x45, 0x6f, 0x5a, 0x50, 0x32, 0x77, 0x41, 0x67, 0x44, 0x48, 0x62, 0x49, 0x43, 0x69, 0x0a, 0x76, 0x52, 0x5a, 0x51, 0x49, 0x41, 0x39, 0x79, 0x67, 0x56, 0x2f, 0x4d, 0x6c, 0x50, 0x2b, 0x37, 0x6d, 0x65, 0x61, 0x36, 0x6b, 0x4d, 0x76, 0x71, 0x2b, 0x63, 0x59, 0x4d, 0x77, 0x71, 0x37, 0x46, 0x47, 0x63, 0x34, 0x7a, 0x6f, 0x57, 0x74, 0x63, 0x75, 0x33, 0x35, 0x38, 0x4e, 0x46, 0x63, 0x58, 0x72, 0x66, 0x41, 0x2f, 0x72, 0x73, 0x33, 0x71, 0x72, 0x35, 0x6e, 0x73, 0x4c, 0x46, 0x52, 0x2b, 0x6a, 0x4d, 0x34, 0x75, 0x45, 0x6c, 0x5a, 0x49, 0x37, 0x78, 0x63, 0x37, 0x0a, 0x50, 0x30, 0x70, 0x65, 0x59, 0x4e, 0x4c, 0x63, 0x64, 0x44, 0x61, 0x38, 0x70, 0x55, 0x4e, 0x6a, 0x79, 0x77, 0x39, 0x62, 0x6f, 0x77, 0x4a, 0x57, 0x43, 0x5a, 0x34, 0x6b, 0x4c, 0x4f, 0x47, 0x47, 0x67, 0x59, 0x7a, 0x2b, 0x71, 0x78, 0x63, 0x73, 0x2b, 0x73, 0x6a, 0x69, 0x4d, 0x68, 0x6f, 0x36, 0x2f, 0x34, 0x55, 0x49, 0x79, 0x59, 0x4f, 0x66, 0x38, 0x6b, 0x70, 0x49, 0x45, 0x46, 0x52, 0x33, 0x4e, 0x2b, 0x32, 0x69, 0x76, 0x45, 0x43, 0x2b, 0x35, 0x42, 0x42, 0x30, 0x0a, 0x39, 0x2b, 0x52, 0x62, 0x75, 0x37, 0x6e, 0x7a, 0x69, 0x66, 0x6d, 0x50, 0x51, 0x64, 0x6a, 0x48, 0x35, 0x46, 0x43, 0x51, 0x4e, 0x59, 0x41, 0x2b, 0x48, 0x4c, 0x68, 0x4e, 0x6b, 0x4e, 0x50, 0x55, 0x39, 0x38, 0x4f, 0x77, 0x6f, 0x58, 0x36, 0x45, 0x79, 0x6e, 0x65, 0x53, 0x4d, 0x53, 0x79, 0x34, 0x6b, 0x4c, 0x47, 0x43, 0x65, 0x6e, 0x52, 0x4f, 0x6d, 0x78, 0x4d, 0x6d, 0x74, 0x4e, 0x56, 0x51, 0x5a, 0x6c, 0x52, 0x34, 0x72, 0x6d, 0x41, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x53, 0x53, 0x4c, 0x2e, 0x63, 0x6f, 0x6d, 0x20, 0x54, 0x4c, 0x53, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x32, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x4f, 0x6a, 0x43, 0x43, 0x41, 0x63, 0x43, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x46, 0x41, 0x50, 0x31, 0x71, 0x2f, 0x73, 0x33, 0x69, 0x78, 0x64, 0x41, 0x57, 0x2b, 0x4a, 0x44, 0x73, 0x71, 0x58, 0x52, 0x78, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x4f, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x56, 0x0a, 0x55, 0x7a, 0x45, 0x59, 0x4d, 0x42, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x50, 0x55, 0x31, 0x4e, 0x4d, 0x49, 0x45, 0x4e, 0x76, 0x63, 0x6e, 0x42, 0x76, 0x63, 0x6d, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x4d, 0x53, 0x55, 0x77, 0x49, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x78, 0x54, 0x55, 0x30, 0x77, 0x75, 0x59, 0x32, 0x39, 0x74, 0x49, 0x46, 0x52, 0x4d, 0x55, 0x79, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x0a, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x41, 0x79, 0x4d, 0x44, 0x49, 0x79, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x49, 0x79, 0x4d, 0x44, 0x67, 0x79, 0x4e, 0x54, 0x45, 0x32, 0x4d, 0x7a, 0x4d, 0x30, 0x4f, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x32, 0x4d, 0x44, 0x67, 0x78, 0x4f, 0x54, 0x45, 0x32, 0x4d, 0x7a, 0x4d, 0x30, 0x4e, 0x31, 0x6f, 0x77, 0x54, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x0a, 0x47, 0x44, 0x41, 0x57, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x44, 0x31, 0x4e, 0x54, 0x54, 0x43, 0x42, 0x44, 0x62, 0x33, 0x4a, 0x77, 0x62, 0x33, 0x4a, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x6a, 0x45, 0x6c, 0x4d, 0x43, 0x4d, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x63, 0x55, 0x31, 0x4e, 0x4d, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x53, 0x42, 0x55, 0x54, 0x46, 0x4d, 0x67, 0x52, 0x55, 0x4e, 0x44, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x0a, 0x51, 0x30, 0x45, 0x67, 0x4d, 0x6a, 0x41, 0x79, 0x4d, 0x6a, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x45, 0x55, 0x70, 0x4e, 0x58, 0x50, 0x36, 0x77, 0x72, 0x67, 0x6a, 0x7a, 0x68, 0x52, 0x39, 0x71, 0x4c, 0x46, 0x4e, 0x6f, 0x46, 0x73, 0x32, 0x37, 0x69, 0x6f, 0x73, 0x55, 0x38, 0x4e, 0x67, 0x43, 0x54, 0x57, 0x79, 0x0a, 0x4a, 0x47, 0x59, 0x6d, 0x61, 0x63, 0x43, 0x7a, 0x6c, 0x64, 0x5a, 0x64, 0x6b, 0x6b, 0x41, 0x5a, 0x44, 0x73, 0x61, 0x6c, 0x45, 0x33, 0x44, 0x30, 0x37, 0x78, 0x4a, 0x52, 0x4b, 0x46, 0x33, 0x6e, 0x7a, 0x4c, 0x33, 0x35, 0x50, 0x49, 0x58, 0x42, 0x7a, 0x35, 0x53, 0x51, 0x79, 0x53, 0x76, 0x4f, 0x6b, 0x6b, 0x4a, 0x59, 0x57, 0x57, 0x66, 0x39, 0x6c, 0x43, 0x63, 0x51, 0x5a, 0x49, 0x78, 0x50, 0x42, 0x4c, 0x46, 0x4e, 0x53, 0x65, 0x52, 0x37, 0x54, 0x35, 0x76, 0x31, 0x0a, 0x35, 0x77, 0x6a, 0x34, 0x41, 0x34, 0x6a, 0x33, 0x70, 0x38, 0x4f, 0x53, 0x53, 0x78, 0x6c, 0x55, 0x67, 0x61, 0x4e, 0x6a, 0x4d, 0x47, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x4d, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x53, 0x4a, 0x6a, 0x79, 0x2b, 0x6a, 0x36, 0x43, 0x75, 0x67, 0x46, 0x46, 0x52, 0x37, 0x0a, 0x38, 0x31, 0x61, 0x34, 0x4a, 0x6c, 0x39, 0x6e, 0x4f, 0x41, 0x75, 0x63, 0x30, 0x44, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x69, 0x59, 0x38, 0x76, 0x6f, 0x2b, 0x67, 0x72, 0x6f, 0x42, 0x52, 0x55, 0x65, 0x2f, 0x4e, 0x57, 0x75, 0x43, 0x5a, 0x66, 0x5a, 0x7a, 0x67, 0x4c, 0x6e, 0x4e, 0x41, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x0a, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x44, 0x41, 0x32, 0x67, 0x41, 0x4d, 0x47, 0x55, 0x43, 0x4d, 0x46, 0x58, 0x6a, 0x49, 0x6c, 0x62, 0x70, 0x31, 0x35, 0x49, 0x6b, 0x57, 0x45, 0x38, 0x65, 0x6c, 0x44, 0x49, 0x50, 0x44, 0x41, 0x49, 0x32, 0x77, 0x76, 0x32, 0x73, 0x64, 0x44, 0x4a, 0x4f, 0x34, 0x66, 0x73, 0x63, 0x67, 0x49, 0x69, 0x6a, 0x7a, 0x50, 0x76, 0x58, 0x36, 0x79, 0x76, 0x2f, 0x4e, 0x33, 0x33, 0x77, 0x0a, 0x37, 0x64, 0x65, 0x65, 0x64, 0x57, 0x6f, 0x31, 0x64, 0x6c, 0x4a, 0x46, 0x34, 0x41, 0x49, 0x78, 0x41, 0x4d, 0x65, 0x4e, 0x62, 0x30, 0x49, 0x67, 0x6a, 0x37, 0x36, 0x32, 0x54, 0x56, 0x6e, 0x74, 0x64, 0x30, 0x30, 0x70, 0x78, 0x43, 0x41, 0x67, 0x52, 0x57, 0x53, 0x47, 0x4f, 0x6c, 0x44, 0x47, 0x78, 0x4b, 0x30, 0x74, 0x6b, 0x2f, 0x55, 0x59, 0x66, 0x58, 0x4c, 0x74, 0x71, 0x63, 0x2f, 0x45, 0x72, 0x46, 0x63, 0x32, 0x4b, 0x41, 0x68, 0x6c, 0x33, 0x7a, 0x78, 0x35, 0x0a, 0x5a, 0x6e, 0x36, 0x67, 0x36, 0x67, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x74, 0x6f, 0x73, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x45, 0x43, 0x43, 0x20, 0x54, 0x4c, 0x53, 0x20, 0x32, 0x30, 0x32, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x46, 0x54, 0x43, 0x43, 0x41, 0x5a, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x50, 0x5a, 0x67, 0x37, 0x70, 0x6d, 0x59, 0x39, 0x6b, 0x47, 0x50, 0x33, 0x66, 0x69, 0x5a, 0x58, 0x4f, 0x41, 0x54, 0x76, 0x41, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x4d, 0x4d, 0x53, 0x34, 0x77, 0x4c, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x43, 0x56, 0x42, 0x0a, 0x64, 0x47, 0x39, 0x7a, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x5a, 0x57, 0x52, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x52, 0x55, 0x4e, 0x44, 0x49, 0x46, 0x52, 0x4d, 0x55, 0x79, 0x41, 0x79, 0x4d, 0x44, 0x49, 0x78, 0x4d, 0x51, 0x30, 0x77, 0x43, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x52, 0x42, 0x64, 0x47, 0x39, 0x7a, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x0a, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x45, 0x52, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x79, 0x4d, 0x54, 0x41, 0x30, 0x4d, 0x6a, 0x49, 0x77, 0x4f, 0x54, 0x49, 0x32, 0x4d, 0x6a, 0x4e, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x54, 0x41, 0x30, 0x4d, 0x54, 0x63, 0x77, 0x4f, 0x54, 0x49, 0x32, 0x4d, 0x6a, 0x4a, 0x61, 0x4d, 0x45, 0x77, 0x78, 0x4c, 0x6a, 0x41, 0x73, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x4a, 0x55, 0x46, 0x30, 0x62, 0x33, 0x4d, 0x67, 0x0a, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x52, 0x6c, 0x5a, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x56, 0x45, 0x78, 0x54, 0x49, 0x44, 0x49, 0x77, 0x4d, 0x6a, 0x45, 0x78, 0x44, 0x54, 0x41, 0x4c, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x42, 0x45, 0x46, 0x30, 0x62, 0x33, 0x4d, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x0a, 0x41, 0x6b, 0x52, 0x46, 0x4d, 0x48, 0x59, 0x77, 0x45, 0x41, 0x59, 0x48, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x43, 0x41, 0x51, 0x59, 0x46, 0x4b, 0x34, 0x45, 0x45, 0x41, 0x43, 0x49, 0x44, 0x59, 0x67, 0x41, 0x45, 0x6c, 0x6f, 0x5a, 0x59, 0x4b, 0x44, 0x63, 0x4b, 0x5a, 0x39, 0x43, 0x67, 0x33, 0x69, 0x51, 0x5a, 0x47, 0x65, 0x48, 0x6b, 0x42, 0x51, 0x63, 0x66, 0x6c, 0x2b, 0x33, 0x6f, 0x5a, 0x49, 0x4b, 0x35, 0x39, 0x73, 0x52, 0x78, 0x55, 0x4d, 0x36, 0x4b, 0x0a, 0x44, 0x50, 0x2f, 0x58, 0x74, 0x58, 0x61, 0x37, 0x6f, 0x57, 0x79, 0x54, 0x62, 0x49, 0x4f, 0x69, 0x61, 0x47, 0x36, 0x6c, 0x32, 0x62, 0x34, 0x73, 0x69, 0x4a, 0x56, 0x42, 0x7a, 0x56, 0x33, 0x64, 0x73, 0x63, 0x71, 0x44, 0x59, 0x34, 0x50, 0x4d, 0x77, 0x4c, 0x35, 0x30, 0x32, 0x65, 0x43, 0x64, 0x70, 0x4f, 0x35, 0x4b, 0x54, 0x6c, 0x62, 0x67, 0x6d, 0x43, 0x6c, 0x42, 0x6b, 0x31, 0x49, 0x51, 0x31, 0x53, 0x51, 0x34, 0x41, 0x6a, 0x4a, 0x6e, 0x38, 0x5a, 0x51, 0x53, 0x0a, 0x62, 0x2b, 0x2f, 0x58, 0x78, 0x64, 0x34, 0x75, 0x2f, 0x52, 0x6d, 0x41, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x32, 0x4b, 0x43, 0x58, 0x57, 0x66, 0x65, 0x42, 0x6d, 0x6d, 0x6e, 0x6f, 0x4a, 0x73, 0x6d, 0x6f, 0x37, 0x6a, 0x6a, 0x50, 0x58, 0x0a, 0x4e, 0x74, 0x4e, 0x50, 0x6f, 0x6a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x59, 0x59, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x4d, 0x44, 0x61, 0x41, 0x41, 0x77, 0x5a, 0x51, 0x49, 0x77, 0x57, 0x35, 0x6b, 0x70, 0x38, 0x35, 0x77, 0x78, 0x74, 0x6f, 0x6c, 0x72, 0x62, 0x4e, 0x61, 0x39, 0x64, 0x2b, 0x46, 0x38, 0x35, 0x31, 0x46, 0x2b, 0x0a, 0x75, 0x44, 0x72, 0x4e, 0x6f, 0x7a, 0x5a, 0x66, 0x66, 0x50, 0x63, 0x38, 0x64, 0x7a, 0x37, 0x6b, 0x55, 0x4b, 0x32, 0x6f, 0x35, 0x39, 0x4a, 0x5a, 0x44, 0x43, 0x61, 0x4f, 0x4d, 0x44, 0x74, 0x75, 0x43, 0x43, 0x72, 0x43, 0x70, 0x31, 0x72, 0x49, 0x41, 0x6a, 0x45, 0x41, 0x6d, 0x65, 0x4d, 0x4d, 0x35, 0x36, 0x50, 0x44, 0x72, 0x39, 0x4e, 0x4a, 0x4c, 0x6b, 0x61, 0x43, 0x49, 0x32, 0x5a, 0x64, 0x79, 0x51, 0x41, 0x55, 0x45, 0x76, 0x30, 0x34, 0x39, 0x4f, 0x47, 0x59, 0x0a, 0x61, 0x33, 0x63, 0x70, 0x65, 0x74, 0x73, 0x6b, 0x7a, 0x32, 0x56, 0x41, 0x76, 0x39, 0x4c, 0x63, 0x6a, 0x42, 0x48, 0x6f, 0x39, 0x48, 0x31, 0x2f, 0x49, 0x49, 0x53, 0x70, 0x51, 0x75, 0x51, 0x6f, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x41, 0x74, 0x6f, 0x73, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x52, 0x53, 0x41, 0x20, 0x54, 0x4c, 0x53, 0x20, 0x32, 0x30, 0x32, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x5a, 0x44, 0x43, 0x43, 0x41, 0x30, 0x79, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x55, 0x39, 0x58, 0x50, 0x35, 0x68, 0x6d, 0x54, 0x43, 0x2f, 0x73, 0x72, 0x42, 0x52, 0x4c, 0x59, 0x77, 0x69, 0x71, 0x69, 0x70, 0x44, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x44, 0x42, 0x4d, 0x4d, 0x53, 0x34, 0x77, 0x4c, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x0a, 0x44, 0x43, 0x56, 0x42, 0x64, 0x47, 0x39, 0x7a, 0x49, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x5a, 0x57, 0x52, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x55, 0x6c, 0x4e, 0x42, 0x49, 0x46, 0x52, 0x4d, 0x55, 0x79, 0x41, 0x79, 0x4d, 0x44, 0x49, 0x78, 0x4d, 0x51, 0x30, 0x77, 0x43, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x52, 0x42, 0x64, 0x47, 0x39, 0x7a, 0x4d, 0x51, 0x73, 0x77, 0x0a, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x45, 0x52, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x79, 0x4d, 0x54, 0x41, 0x30, 0x4d, 0x6a, 0x49, 0x77, 0x4f, 0x54, 0x49, 0x78, 0x4d, 0x54, 0x42, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4d, 0x54, 0x41, 0x30, 0x4d, 0x54, 0x63, 0x77, 0x4f, 0x54, 0x49, 0x78, 0x4d, 0x44, 0x6c, 0x61, 0x4d, 0x45, 0x77, 0x78, 0x4c, 0x6a, 0x41, 0x73, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x4a, 0x55, 0x46, 0x30, 0x0a, 0x62, 0x33, 0x4d, 0x67, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x52, 0x6c, 0x5a, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x42, 0x53, 0x55, 0x30, 0x45, 0x67, 0x56, 0x45, 0x78, 0x54, 0x49, 0x44, 0x49, 0x77, 0x4d, 0x6a, 0x45, 0x78, 0x44, 0x54, 0x41, 0x4c, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x42, 0x45, 0x46, 0x30, 0x62, 0x33, 0x4d, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x52, 0x46, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x45, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x38, 0x41, 0x4d, 0x49, 0x49, 0x43, 0x43, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x45, 0x41, 0x74, 0x6f, 0x41, 0x4f, 0x78, 0x48, 0x6d, 0x39, 0x42, 0x59, 0x78, 0x39, 0x73, 0x4b, 0x4f, 0x64, 0x54, 0x53, 0x4a, 0x4e, 0x79, 0x2f, 0x42, 0x42, 0x0a, 0x6c, 0x30, 0x31, 0x5a, 0x34, 0x4e, 0x48, 0x2b, 0x56, 0x6f, 0x79, 0x58, 0x38, 0x74, 0x65, 0x39, 0x6a, 0x32, 0x79, 0x33, 0x49, 0x34, 0x39, 0x66, 0x31, 0x63, 0x54, 0x59, 0x51, 0x63, 0x76, 0x79, 0x41, 0x68, 0x35, 0x78, 0x35, 0x65, 0x6e, 0x32, 0x58, 0x73, 0x73, 0x49, 0x4b, 0x6c, 0x34, 0x77, 0x38, 0x69, 0x31, 0x6d, 0x78, 0x34, 0x51, 0x62, 0x5a, 0x46, 0x63, 0x34, 0x6e, 0x58, 0x55, 0x74, 0x56, 0x73, 0x59, 0x76, 0x59, 0x65, 0x2b, 0x57, 0x2f, 0x43, 0x42, 0x47, 0x0a, 0x76, 0x65, 0x76, 0x55, 0x65, 0x7a, 0x38, 0x2f, 0x66, 0x45, 0x63, 0x34, 0x42, 0x4b, 0x6b, 0x62, 0x71, 0x6c, 0x4c, 0x66, 0x45, 0x7a, 0x66, 0x54, 0x46, 0x52, 0x56, 0x4f, 0x76, 0x56, 0x39, 0x38, 0x72, 0x36, 0x31, 0x6a, 0x78, 0x33, 0x6e, 0x63, 0x43, 0x48, 0x76, 0x56, 0x6f, 0x4f, 0x58, 0x33, 0x57, 0x33, 0x57, 0x73, 0x67, 0x46, 0x57, 0x5a, 0x6b, 0x6d, 0x47, 0x62, 0x7a, 0x53, 0x6f, 0x58, 0x66, 0x64, 0x75, 0x50, 0x39, 0x4c, 0x56, 0x71, 0x36, 0x68, 0x64, 0x4b, 0x0a, 0x5a, 0x43, 0x68, 0x6d, 0x46, 0x53, 0x6c, 0x73, 0x41, 0x76, 0x46, 0x72, 0x31, 0x62, 0x71, 0x6a, 0x4d, 0x39, 0x78, 0x61, 0x5a, 0x36, 0x63, 0x46, 0x34, 0x72, 0x39, 0x6c, 0x74, 0x68, 0x61, 0x77, 0x45, 0x4f, 0x33, 0x4e, 0x55, 0x44, 0x50, 0x4a, 0x63, 0x46, 0x44, 0x73, 0x47, 0x59, 0x36, 0x77, 0x78, 0x2f, 0x4a, 0x30, 0x57, 0x32, 0x74, 0x45, 0x78, 0x6e, 0x32, 0x57, 0x75, 0x5a, 0x67, 0x49, 0x57, 0x57, 0x62, 0x65, 0x4b, 0x51, 0x47, 0x62, 0x39, 0x43, 0x70, 0x74, 0x0a, 0x30, 0x78, 0x55, 0x36, 0x6b, 0x47, 0x70, 0x6e, 0x38, 0x62, 0x52, 0x72, 0x5a, 0x74, 0x6b, 0x68, 0x36, 0x38, 0x72, 0x5a, 0x59, 0x6e, 0x78, 0x47, 0x45, 0x46, 0x7a, 0x65, 0x64, 0x55, 0x6c, 0x6e, 0x6e, 0x6b, 0x4c, 0x35, 0x2f, 0x6e, 0x57, 0x70, 0x6f, 0x36, 0x33, 0x2f, 0x64, 0x67, 0x70, 0x6e, 0x51, 0x4f, 0x50, 0x46, 0x39, 0x34, 0x33, 0x48, 0x68, 0x5a, 0x70, 0x5a, 0x6e, 0x6d, 0x4b, 0x61, 0x61, 0x75, 0x31, 0x46, 0x68, 0x35, 0x68, 0x6e, 0x73, 0x74, 0x56, 0x4b, 0x0a, 0x50, 0x4e, 0x65, 0x30, 0x4f, 0x77, 0x41, 0x4e, 0x77, 0x49, 0x38, 0x66, 0x34, 0x55, 0x44, 0x45, 0x72, 0x6d, 0x77, 0x68, 0x33, 0x45, 0x6c, 0x2b, 0x66, 0x73, 0x71, 0x79, 0x6a, 0x57, 0x32, 0x32, 0x76, 0x35, 0x4d, 0x76, 0x6f, 0x56, 0x77, 0x2b, 0x6a, 0x38, 0x72, 0x74, 0x67, 0x49, 0x35, 0x59, 0x34, 0x64, 0x74, 0x58, 0x7a, 0x34, 0x55, 0x32, 0x4f, 0x4c, 0x4a, 0x78, 0x70, 0x41, 0x6d, 0x4d, 0x6b, 0x6f, 0x6b, 0x49, 0x69, 0x45, 0x6a, 0x78, 0x51, 0x47, 0x4d, 0x59, 0x0a, 0x73, 0x6c, 0x75, 0x4d, 0x57, 0x75, 0x50, 0x44, 0x30, 0x78, 0x65, 0x71, 0x71, 0x78, 0x6d, 0x6a, 0x4c, 0x42, 0x76, 0x6b, 0x31, 0x63, 0x62, 0x69, 0x5a, 0x6e, 0x72, 0x58, 0x67, 0x68, 0x6d, 0x6d, 0x4f, 0x78, 0x59, 0x73, 0x4c, 0x33, 0x47, 0x48, 0x58, 0x30, 0x57, 0x65, 0x6c, 0x58, 0x4f, 0x54, 0x77, 0x6b, 0x4b, 0x42, 0x49, 0x52, 0x4f, 0x57, 0x31, 0x35, 0x32, 0x37, 0x6b, 0x32, 0x67, 0x56, 0x2b, 0x70, 0x32, 0x6b, 0x48, 0x59, 0x7a, 0x79, 0x67, 0x65, 0x42, 0x59, 0x0a, 0x42, 0x72, 0x33, 0x4a, 0x74, 0x75, 0x50, 0x32, 0x69, 0x56, 0x32, 0x4a, 0x2b, 0x61, 0x78, 0x45, 0x6f, 0x63, 0x74, 0x72, 0x2b, 0x68, 0x62, 0x78, 0x78, 0x31, 0x41, 0x39, 0x4a, 0x4e, 0x72, 0x33, 0x77, 0x2b, 0x53, 0x48, 0x31, 0x56, 0x62, 0x78, 0x54, 0x35, 0x41, 0x77, 0x2b, 0x6b, 0x55, 0x4a, 0x57, 0x64, 0x6f, 0x30, 0x7a, 0x75, 0x41, 0x54, 0x48, 0x41, 0x52, 0x38, 0x41, 0x4e, 0x53, 0x62, 0x68, 0x71, 0x52, 0x41, 0x76, 0x4e, 0x6e, 0x63, 0x54, 0x46, 0x64, 0x2b, 0x0a, 0x72, 0x72, 0x63, 0x7a, 0x74, 0x6c, 0x35, 0x32, 0x34, 0x57, 0x57, 0x4c, 0x5a, 0x74, 0x2b, 0x4e, 0x79, 0x74, 0x65, 0x59, 0x72, 0x38, 0x34, 0x32, 0x6d, 0x49, 0x79, 0x63, 0x67, 0x35, 0x6b, 0x44, 0x63, 0x50, 0x4f, 0x76, 0x64, 0x4f, 0x33, 0x47, 0x44, 0x6a, 0x62, 0x6e, 0x76, 0x65, 0x7a, 0x42, 0x63, 0x36, 0x65, 0x55, 0x57, 0x73, 0x75, 0x53, 0x5a, 0x49, 0x4b, 0x6d, 0x41, 0x4d, 0x46, 0x77, 0x6f, 0x57, 0x34, 0x73, 0x4b, 0x65, 0x46, 0x59, 0x56, 0x2b, 0x78, 0x61, 0x0a, 0x66, 0x4a, 0x6c, 0x72, 0x4a, 0x61, 0x53, 0x51, 0x4f, 0x6f, 0x44, 0x30, 0x49, 0x4a, 0x32, 0x61, 0x7a, 0x73, 0x63, 0x74, 0x2b, 0x62, 0x4a, 0x4c, 0x4b, 0x5a, 0x57, 0x44, 0x36, 0x54, 0x57, 0x4e, 0x70, 0x30, 0x6c, 0x49, 0x70, 0x77, 0x39, 0x4d, 0x47, 0x5a, 0x48, 0x51, 0x39, 0x62, 0x38, 0x51, 0x34, 0x48, 0x45, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4e, 0x43, 0x4d, 0x45, 0x41, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x0a, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x64, 0x45, 0x6d, 0x5a, 0x30, 0x66, 0x2b, 0x30, 0x65, 0x6d, 0x68, 0x46, 0x64, 0x63, 0x4e, 0x2b, 0x74, 0x4e, 0x7a, 0x4d, 0x7a, 0x6a, 0x6b, 0x7a, 0x32, 0x67, 0x67, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x47, 0x47, 0x4d, 0x41, 0x30, 0x47, 0x0a, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x44, 0x41, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x41, 0x51, 0x41, 0x6a, 0x51, 0x31, 0x4d, 0x6b, 0x59, 0x6c, 0x78, 0x74, 0x2f, 0x54, 0x37, 0x43, 0x7a, 0x31, 0x55, 0x41, 0x62, 0x4d, 0x56, 0x57, 0x69, 0x4c, 0x6b, 0x4f, 0x33, 0x54, 0x72, 0x69, 0x4a, 0x51, 0x32, 0x56, 0x53, 0x70, 0x66, 0x4b, 0x67, 0x49, 0x6e, 0x75, 0x4b, 0x73, 0x31, 0x6c, 0x2b, 0x4e, 0x73, 0x57, 0x34, 0x41, 0x6d, 0x53, 0x0a, 0x34, 0x42, 0x6a, 0x48, 0x65, 0x4a, 0x69, 0x37, 0x38, 0x2b, 0x78, 0x43, 0x55, 0x76, 0x75, 0x70, 0x70, 0x49, 0x4c, 0x58, 0x54, 0x64, 0x69, 0x4b, 0x2f, 0x4f, 0x52, 0x4f, 0x2f, 0x61, 0x75, 0x51, 0x78, 0x44, 0x68, 0x31, 0x4d, 0x6f, 0x53, 0x66, 0x2f, 0x37, 0x4f, 0x77, 0x4b, 0x77, 0x49, 0x7a, 0x4e, 0x73, 0x41, 0x51, 0x6b, 0x47, 0x38, 0x64, 0x6e, 0x4b, 0x2f, 0x68, 0x61, 0x5a, 0x50, 0x73, 0x6f, 0x30, 0x55, 0x76, 0x46, 0x4a, 0x2f, 0x31, 0x54, 0x43, 0x70, 0x6c, 0x0a, 0x51, 0x33, 0x49, 0x4d, 0x39, 0x38, 0x50, 0x34, 0x6c, 0x59, 0x73, 0x55, 0x38, 0x34, 0x55, 0x67, 0x59, 0x74, 0x31, 0x55, 0x55, 0x39, 0x30, 0x73, 0x33, 0x42, 0x69, 0x56, 0x61, 0x55, 0x2b, 0x44, 0x52, 0x33, 0x42, 0x41, 0x4d, 0x31, 0x68, 0x33, 0x45, 0x67, 0x79, 0x69, 0x36, 0x31, 0x49, 0x78, 0x48, 0x6b, 0x7a, 0x4a, 0x71, 0x4d, 0x37, 0x46, 0x37, 0x38, 0x50, 0x52, 0x72, 0x65, 0x42, 0x72, 0x41, 0x77, 0x41, 0x30, 0x4a, 0x72, 0x52, 0x55, 0x49, 0x54, 0x57, 0x58, 0x0a, 0x41, 0x64, 0x78, 0x66, 0x47, 0x2f, 0x46, 0x38, 0x35, 0x31, 0x58, 0x36, 0x4c, 0x57, 0x68, 0x33, 0x65, 0x39, 0x4e, 0x70, 0x7a, 0x4e, 0x4d, 0x4f, 0x61, 0x37, 0x70, 0x4e, 0x64, 0x6b, 0x54, 0x57, 0x77, 0x68, 0x57, 0x61, 0x4a, 0x75, 0x79, 0x77, 0x78, 0x66, 0x57, 0x37, 0x30, 0x58, 0x70, 0x30, 0x77, 0x6d, 0x7a, 0x4e, 0x78, 0x62, 0x56, 0x65, 0x39, 0x6b, 0x7a, 0x6d, 0x57, 0x79, 0x32, 0x42, 0x32, 0x37, 0x4f, 0x33, 0x4f, 0x70, 0x65, 0x65, 0x37, 0x63, 0x39, 0x47, 0x0a, 0x73, 0x6c, 0x41, 0x39, 0x68, 0x47, 0x43, 0x5a, 0x63, 0x62, 0x55, 0x7a, 0x74, 0x56, 0x64, 0x46, 0x35, 0x6b, 0x4a, 0x48, 0x64, 0x57, 0x6f, 0x4f, 0x73, 0x41, 0x67, 0x4d, 0x72, 0x72, 0x33, 0x65, 0x39, 0x37, 0x73, 0x50, 0x57, 0x44, 0x32, 0x50, 0x41, 0x7a, 0x48, 0x6f, 0x50, 0x59, 0x4a, 0x51, 0x79, 0x69, 0x39, 0x65, 0x44, 0x46, 0x32, 0x30, 0x6c, 0x37, 0x34, 0x67, 0x4e, 0x41, 0x66, 0x30, 0x78, 0x42, 0x4c, 0x68, 0x37, 0x74, 0x65, 0x77, 0x32, 0x56, 0x6b, 0x74, 0x0a, 0x61, 0x66, 0x63, 0x78, 0x42, 0x50, 0x54, 0x79, 0x2b, 0x61, 0x76, 0x35, 0x45, 0x7a, 0x48, 0x34, 0x41, 0x58, 0x63, 0x4f, 0x50, 0x55, 0x49, 0x6a, 0x4a, 0x73, 0x79, 0x61, 0x63, 0x6d, 0x64, 0x52, 0x49, 0x58, 0x72, 0x4d, 0x50, 0x49, 0x57, 0x6f, 0x36, 0x69, 0x46, 0x71, 0x4f, 0x39, 0x74, 0x61, 0x50, 0x4b, 0x55, 0x30, 0x6e, 0x70, 0x72, 0x41, 0x4c, 0x4e, 0x2b, 0x41, 0x6e, 0x43, 0x6e, 0x67, 0x33, 0x33, 0x65, 0x55, 0x30, 0x61, 0x4b, 0x41, 0x51, 0x76, 0x39, 0x71, 0x0a, 0x54, 0x46, 0x73, 0x52, 0x30, 0x50, 0x58, 0x4e, 0x6f, 0x72, 0x36, 0x75, 0x7a, 0x46, 0x46, 0x63, 0x77, 0x39, 0x56, 0x55, 0x65, 0x77, 0x79, 0x75, 0x31, 0x72, 0x6b, 0x47, 0x64, 0x34, 0x44, 0x69, 0x37, 0x77, 0x63, 0x61, 0x61, 0x4d, 0x78, 0x5a, 0x55, 0x61, 0x31, 0x2b, 0x58, 0x47, 0x64, 0x72, 0x75, 0x64, 0x76, 0x69, 0x42, 0x30, 0x4a, 0x62, 0x75, 0x41, 0x45, 0x46, 0x57, 0x44, 0x6c, 0x4e, 0x35, 0x4c, 0x75, 0x59, 0x6f, 0x37, 0x45, 0x79, 0x37, 0x4e, 0x6d, 0x6a, 0x0a, 0x31, 0x6d, 0x2b, 0x55, 0x49, 0x2f, 0x38, 0x37, 0x74, 0x79, 0x6c, 0x6c, 0x35, 0x67, 0x66, 0x70, 0x37, 0x37, 0x59, 0x5a, 0x36, 0x75, 0x66, 0x43, 0x4f, 0x42, 0x30, 0x79, 0x69, 0x4a, 0x41, 0x38, 0x45, 0x79, 0x74, 0x75, 0x7a, 0x4f, 0x2b, 0x72, 0x64, 0x77, 0x59, 0x30, 0x64, 0x34, 0x52, 0x50, 0x63, 0x75, 0x53, 0x42, 0x68, 0x50, 0x6d, 0x35, 0x64, 0x44, 0x54, 0x65, 0x64, 0x6b, 0x2b, 0x53, 0x4b, 0x6c, 0x4f, 0x78, 0x4a, 0x54, 0x6e, 0x62, 0x50, 0x50, 0x2f, 0x6c, 0x0a, 0x50, 0x71, 0x59, 0x4f, 0x35, 0x57, 0x75, 0x65, 0x2f, 0x39, 0x76, 0x73, 0x4c, 0x33, 0x53, 0x44, 0x33, 0x34, 0x36, 0x30, 0x73, 0x36, 0x6e, 0x65, 0x46, 0x45, 0x33, 0x2f, 0x4d, 0x61, 0x4e, 0x46, 0x63, 0x79, 0x54, 0x36, 0x6c, 0x53, 0x6e, 0x4d, 0x45, 0x70, 0x63, 0x45, 0x6f, 0x6a, 0x69, 0x32, 0x6a, 0x62, 0x44, 0x77, 0x4e, 0x2f, 0x7a, 0x49, 0x49, 0x58, 0x38, 0x2f, 0x73, 0x79, 0x51, 0x62, 0x50, 0x59, 0x74, 0x75, 0x7a, 0x45, 0x32, 0x77, 0x46, 0x67, 0x32, 0x57, 0x0a, 0x48, 0x59, 0x4d, 0x66, 0x52, 0x73, 0x43, 0x62, 0x76, 0x55, 0x4f, 0x5a, 0x35, 0x38, 0x53, 0x57, 0x4c, 0x73, 0x35, 0x66, 0x79, 0x51, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x72, 0x75, 0x73, 0x74, 0x41, 0x73, 0x69, 0x61, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x47, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x70, 0x54, 0x43, 0x43, 0x41, 0x34, 0x32, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x5a, 0x50, 0x59, 0x4f, 0x5a, 0x58, 0x64, 0x68, 0x61, 0x71, 0x73, 0x37, 0x74, 0x4f, 0x71, 0x46, 0x68, 0x4c, 0x75, 0x78, 0x69, 0x62, 0x68, 0x78, 0x6b, 0x77, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x77, 0x57, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x34, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x48, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x51, 0x58, 0x4e, 0x70, 0x59, 0x53, 0x42, 0x55, 0x5a, 0x57, 0x4e, 0x6f, 0x62, 0x6d, 0x39, 0x73, 0x62, 0x32, 0x64, 0x70, 0x5a, 0x58, 0x4d, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4a, 0x44, 0x41, 0x69, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x0a, 0x47, 0x31, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x51, 0x58, 0x4e, 0x70, 0x59, 0x53, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x42, 0x48, 0x4d, 0x7a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x79, 0x4d, 0x54, 0x41, 0x31, 0x4d, 0x6a, 0x41, 0x77, 0x4d, 0x6a, 0x45, 0x77, 0x4d, 0x54, 0x6c, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4e, 0x6a, 0x41, 0x31, 0x4d, 0x54, 0x6b, 0x77, 0x4d, 0x6a, 0x45, 0x77, 0x0a, 0x4d, 0x54, 0x6c, 0x61, 0x4d, 0x46, 0x6f, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4e, 0x4f, 0x4d, 0x53, 0x55, 0x77, 0x49, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x42, 0x78, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x45, 0x46, 0x7a, 0x61, 0x57, 0x45, 0x67, 0x56, 0x47, 0x56, 0x6a, 0x61, 0x47, 0x35, 0x76, 0x62, 0x47, 0x39, 0x6e, 0x61, 0x57, 0x56, 0x7a, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x0a, 0x4d, 0x53, 0x51, 0x77, 0x49, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x74, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x45, 0x46, 0x7a, 0x61, 0x57, 0x45, 0x67, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x52, 0x7a, 0x4d, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x0a, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x44, 0x41, 0x4d, 0x59, 0x4a, 0x68, 0x6b, 0x75, 0x53, 0x55, 0x47, 0x77, 0x6f, 0x71, 0x5a, 0x64, 0x43, 0x2b, 0x42, 0x71, 0x6d, 0x48, 0x4f, 0x31, 0x45, 0x53, 0x36, 0x6e, 0x42, 0x42, 0x72, 0x75, 0x4c, 0x37, 0x64, 0x4f, 0x6f, 0x4b, 0x6a, 0x62, 0x6d, 0x7a, 0x54, 0x4e, 0x79, 0x50, 0x74, 0x78, 0x4e, 0x53, 0x54, 0x31, 0x51, 0x59, 0x34, 0x53, 0x78, 0x7a, 0x0a, 0x6c, 0x5a, 0x48, 0x46, 0x5a, 0x6a, 0x74, 0x71, 0x7a, 0x36, 0x78, 0x6a, 0x62, 0x59, 0x64, 0x54, 0x38, 0x50, 0x66, 0x78, 0x4f, 0x62, 0x65, 0x67, 0x51, 0x32, 0x4f, 0x77, 0x78, 0x41, 0x4e, 0x64, 0x56, 0x36, 0x6e, 0x6e, 0x52, 0x4d, 0x37, 0x45, 0x6f, 0x59, 0x4e, 0x6c, 0x39, 0x6c, 0x41, 0x2b, 0x73, 0x58, 0x34, 0x57, 0x75, 0x44, 0x71, 0x4b, 0x41, 0x74, 0x43, 0x57, 0x48, 0x77, 0x44, 0x4e, 0x42, 0x53, 0x48, 0x76, 0x42, 0x6d, 0x33, 0x64, 0x49, 0x5a, 0x77, 0x5a, 0x0a, 0x51, 0x30, 0x57, 0x68, 0x78, 0x65, 0x69, 0x41, 0x79, 0x73, 0x4b, 0x74, 0x51, 0x47, 0x49, 0x58, 0x42, 0x73, 0x61, 0x71, 0x76, 0x50, 0x50, 0x57, 0x35, 0x76, 0x78, 0x51, 0x66, 0x6d, 0x5a, 0x43, 0x48, 0x7a, 0x79, 0x4c, 0x70, 0x6e, 0x6c, 0x35, 0x68, 0x6b, 0x41, 0x31, 0x6e, 0x79, 0x44, 0x76, 0x50, 0x2b, 0x75, 0x4c, 0x52, 0x78, 0x2b, 0x50, 0x6a, 0x73, 0x58, 0x55, 0x6a, 0x72, 0x59, 0x73, 0x79, 0x55, 0x51, 0x45, 0x34, 0x39, 0x52, 0x44, 0x64, 0x54, 0x2f, 0x56, 0x0a, 0x50, 0x36, 0x38, 0x63, 0x7a, 0x48, 0x35, 0x47, 0x58, 0x36, 0x7a, 0x66, 0x5a, 0x42, 0x43, 0x4b, 0x37, 0x30, 0x62, 0x77, 0x6b, 0x50, 0x41, 0x50, 0x4c, 0x66, 0x53, 0x49, 0x43, 0x37, 0x45, 0x70, 0x71, 0x71, 0x2b, 0x46, 0x71, 0x6b, 0x6c, 0x59, 0x71, 0x4c, 0x39, 0x6a, 0x6f, 0x44, 0x69, 0x52, 0x35, 0x72, 0x50, 0x6d, 0x64, 0x32, 0x6a, 0x45, 0x2b, 0x53, 0x6f, 0x5a, 0x68, 0x4c, 0x73, 0x4f, 0x34, 0x66, 0x57, 0x76, 0x69, 0x65, 0x79, 0x6c, 0x4c, 0x31, 0x41, 0x67, 0x0a, 0x64, 0x42, 0x34, 0x53, 0x51, 0x58, 0x4d, 0x65, 0x4a, 0x4e, 0x6e, 0x4b, 0x7a, 0x69, 0x79, 0x68, 0x57, 0x54, 0x58, 0x41, 0x79, 0x42, 0x31, 0x47, 0x4a, 0x32, 0x46, 0x61, 0x6a, 0x2f, 0x6c, 0x4e, 0x30, 0x33, 0x4a, 0x35, 0x5a, 0x68, 0x36, 0x66, 0x46, 0x5a, 0x41, 0x68, 0x4c, 0x66, 0x33, 0x74, 0x69, 0x31, 0x5a, 0x77, 0x41, 0x30, 0x70, 0x4a, 0x50, 0x6e, 0x39, 0x70, 0x4d, 0x52, 0x4a, 0x70, 0x78, 0x78, 0x35, 0x63, 0x79, 0x6e, 0x6f, 0x54, 0x69, 0x2b, 0x6a, 0x6d, 0x0a, 0x39, 0x57, 0x41, 0x50, 0x7a, 0x4a, 0x4d, 0x73, 0x68, 0x48, 0x2f, 0x78, 0x2f, 0x47, 0x72, 0x38, 0x6d, 0x30, 0x65, 0x64, 0x32, 0x36, 0x32, 0x49, 0x50, 0x66, 0x4e, 0x32, 0x64, 0x54, 0x50, 0x58, 0x53, 0x36, 0x54, 0x49, 0x69, 0x2f, 0x6e, 0x31, 0x51, 0x31, 0x68, 0x50, 0x79, 0x38, 0x67, 0x44, 0x56, 0x49, 0x2b, 0x6c, 0x68, 0x58, 0x67, 0x45, 0x47, 0x76, 0x4e, 0x7a, 0x38, 0x74, 0x65, 0x48, 0x48, 0x55, 0x47, 0x66, 0x35, 0x39, 0x67, 0x58, 0x7a, 0x68, 0x71, 0x63, 0x0a, 0x44, 0x30, 0x72, 0x38, 0x33, 0x45, 0x52, 0x6f, 0x56, 0x47, 0x6a, 0x69, 0x51, 0x54, 0x7a, 0x2b, 0x4c, 0x49, 0x53, 0x47, 0x4e, 0x7a, 0x7a, 0x4e, 0x50, 0x79, 0x2b, 0x69, 0x32, 0x2b, 0x66, 0x33, 0x56, 0x41, 0x4e, 0x66, 0x57, 0x64, 0x50, 0x33, 0x6b, 0x58, 0x6a, 0x48, 0x69, 0x33, 0x64, 0x71, 0x46, 0x75, 0x56, 0x4a, 0x68, 0x5a, 0x42, 0x46, 0x63, 0x6e, 0x41, 0x76, 0x6b, 0x56, 0x33, 0x34, 0x50, 0x6d, 0x56, 0x41, 0x43, 0x78, 0x6d, 0x5a, 0x79, 0x53, 0x59, 0x67, 0x0a, 0x57, 0x6d, 0x6a, 0x42, 0x4e, 0x62, 0x39, 0x50, 0x70, 0x31, 0x48, 0x78, 0x32, 0x42, 0x45, 0x72, 0x57, 0x2b, 0x43, 0x61, 0x6e, 0x69, 0x67, 0x37, 0x43, 0x6a, 0x6f, 0x4b, 0x48, 0x38, 0x47, 0x42, 0x35, 0x53, 0x37, 0x77, 0x70, 0x72, 0x6c, 0x70, 0x70, 0x59, 0x69, 0x55, 0x35, 0x6d, 0x73, 0x54, 0x66, 0x39, 0x46, 0x6b, 0x50, 0x7a, 0x32, 0x63, 0x63, 0x45, 0x62, 0x6c, 0x6f, 0x6f, 0x56, 0x37, 0x57, 0x49, 0x51, 0x6e, 0x33, 0x4d, 0x53, 0x41, 0x50, 0x6d, 0x65, 0x61, 0x0a, 0x6d, 0x73, 0x65, 0x61, 0x4d, 0x51, 0x34, 0x77, 0x37, 0x4f, 0x59, 0x58, 0x51, 0x4a, 0x58, 0x5a, 0x52, 0x65, 0x30, 0x42, 0x6c, 0x71, 0x71, 0x2f, 0x44, 0x50, 0x4e, 0x4c, 0x30, 0x57, 0x50, 0x33, 0x45, 0x31, 0x6a, 0x41, 0x75, 0x50, 0x50, 0x36, 0x5a, 0x39, 0x32, 0x62, 0x66, 0x57, 0x31, 0x4b, 0x2f, 0x7a, 0x4a, 0x4d, 0x74, 0x53, 0x55, 0x37, 0x2f, 0x78, 0x78, 0x6e, 0x44, 0x34, 0x55, 0x69, 0x57, 0x51, 0x57, 0x52, 0x6b, 0x55, 0x46, 0x33, 0x67, 0x64, 0x43, 0x46, 0x0a, 0x54, 0x49, 0x63, 0x51, 0x63, 0x66, 0x2b, 0x65, 0x51, 0x78, 0x75, 0x75, 0x6c, 0x58, 0x55, 0x74, 0x67, 0x51, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x32, 0x4d, 0x77, 0x59, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49, 0x77, 0x51, 0x59, 0x4d, 0x42, 0x61, 0x41, 0x46, 0x45, 0x44, 0x6b, 0x35, 0x50, 0x49, 0x6a, 0x0a, 0x37, 0x7a, 0x6a, 0x4b, 0x73, 0x4b, 0x35, 0x58, 0x66, 0x2f, 0x49, 0x68, 0x4d, 0x42, 0x59, 0x30, 0x32, 0x37, 0x79, 0x53, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x52, 0x41, 0x35, 0x4f, 0x54, 0x79, 0x49, 0x2b, 0x38, 0x34, 0x79, 0x72, 0x43, 0x75, 0x56, 0x33, 0x2f, 0x79, 0x49, 0x54, 0x41, 0x57, 0x4e, 0x4e, 0x75, 0x38, 0x6b, 0x6a, 0x41, 0x4f, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x0a, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x59, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4d, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x43, 0x59, 0x37, 0x55, 0x65, 0x46, 0x4e, 0x4f, 0x50, 0x4d, 0x79, 0x47, 0x4c, 0x53, 0x30, 0x58, 0x75, 0x46, 0x6c, 0x58, 0x73, 0x53, 0x55, 0x54, 0x39, 0x53, 0x6e, 0x59, 0x61, 0x50, 0x34, 0x77, 0x4d, 0x38, 0x7a, 0x41, 0x51, 0x4c, 0x70, 0x77, 0x36, 0x6f, 0x31, 0x0a, 0x44, 0x2f, 0x47, 0x55, 0x45, 0x33, 0x64, 0x33, 0x4e, 0x5a, 0x34, 0x74, 0x56, 0x6c, 0x46, 0x45, 0x62, 0x75, 0x48, 0x47, 0x4c, 0x69, 0x67, 0x65, 0x2f, 0x39, 0x72, 0x73, 0x52, 0x38, 0x32, 0x58, 0x52, 0x42, 0x66, 0x33, 0x34, 0x45, 0x7a, 0x43, 0x34, 0x58, 0x78, 0x38, 0x4d, 0x6e, 0x70, 0x6d, 0x79, 0x46, 0x71, 0x32, 0x58, 0x46, 0x4e, 0x46, 0x56, 0x31, 0x70, 0x46, 0x31, 0x41, 0x57, 0x5a, 0x4c, 0x79, 0x34, 0x6a, 0x56, 0x65, 0x35, 0x6a, 0x61, 0x4e, 0x2f, 0x54, 0x0a, 0x47, 0x33, 0x69, 0x6e, 0x45, 0x70, 0x51, 0x47, 0x41, 0x48, 0x55, 0x4e, 0x63, 0x6f, 0x54, 0x70, 0x4c, 0x72, 0x78, 0x61, 0x61, 0x74, 0x58, 0x65, 0x4c, 0x31, 0x6e, 0x48, 0x6f, 0x2b, 0x7a, 0x53, 0x68, 0x32, 0x62, 0x62, 0x74, 0x31, 0x53, 0x31, 0x4a, 0x4b, 0x76, 0x30, 0x51, 0x33, 0x6a, 0x62, 0x53, 0x77, 0x54, 0x45, 0x62, 0x39, 0x33, 0x6d, 0x50, 0x6d, 0x59, 0x2b, 0x4b, 0x66, 0x4a, 0x4c, 0x61, 0x48, 0x45, 0x69, 0x68, 0x36, 0x44, 0x34, 0x73, 0x54, 0x4e, 0x6a, 0x0a, 0x64, 0x75, 0x4d, 0x4e, 0x68, 0x58, 0x4a, 0x45, 0x49, 0x6c, 0x55, 0x2f, 0x48, 0x48, 0x7a, 0x70, 0x2f, 0x4c, 0x67, 0x56, 0x36, 0x46, 0x4c, 0x36, 0x71, 0x6a, 0x36, 0x6a, 0x49, 0x54, 0x6b, 0x31, 0x64, 0x49, 0x6d, 0x6d, 0x61, 0x73, 0x49, 0x35, 0x2b, 0x6e, 0x6a, 0x50, 0x74, 0x71, 0x7a, 0x6e, 0x35, 0x39, 0x5a, 0x57, 0x2f, 0x79, 0x4f, 0x53, 0x4c, 0x6c, 0x41, 0x4c, 0x71, 0x62, 0x55, 0x48, 0x4d, 0x2f, 0x51, 0x34, 0x58, 0x36, 0x52, 0x4a, 0x70, 0x73, 0x74, 0x6c, 0x0a, 0x63, 0x48, 0x62, 0x6f, 0x43, 0x6f, 0x57, 0x41, 0x53, 0x7a, 0x59, 0x39, 0x4d, 0x2f, 0x65, 0x56, 0x56, 0x48, 0x55, 0x6c, 0x32, 0x71, 0x7a, 0x45, 0x63, 0x34, 0x4a, 0x6c, 0x36, 0x56, 0x4c, 0x31, 0x58, 0x50, 0x30, 0x34, 0x6c, 0x51, 0x4a, 0x71, 0x61, 0x54, 0x44, 0x46, 0x48, 0x41, 0x70, 0x58, 0x42, 0x36, 0x34, 0x69, 0x70, 0x43, 0x7a, 0x35, 0x78, 0x55, 0x47, 0x33, 0x75, 0x4f, 0x79, 0x66, 0x54, 0x30, 0x67, 0x41, 0x2b, 0x51, 0x45, 0x45, 0x56, 0x63, 0x79, 0x73, 0x0a, 0x2b, 0x54, 0x49, 0x78, 0x78, 0x48, 0x57, 0x56, 0x42, 0x71, 0x42, 0x2f, 0x30, 0x59, 0x30, 0x6e, 0x33, 0x62, 0x4f, 0x70, 0x70, 0x48, 0x4b, 0x48, 0x2f, 0x6c, 0x6d, 0x4c, 0x6d, 0x6e, 0x70, 0x30, 0x46, 0x74, 0x30, 0x57, 0x70, 0x57, 0x49, 0x70, 0x36, 0x7a, 0x71, 0x57, 0x33, 0x49, 0x75, 0x6e, 0x61, 0x46, 0x6e, 0x54, 0x36, 0x33, 0x65, 0x52, 0x4f, 0x66, 0x6a, 0x58, 0x79, 0x39, 0x6d, 0x50, 0x58, 0x31, 0x6f, 0x6e, 0x41, 0x58, 0x31, 0x64, 0x61, 0x42, 0x6c, 0x69, 0x0a, 0x32, 0x4d, 0x6a, 0x4e, 0x39, 0x4c, 0x64, 0x79, 0x52, 0x37, 0x35, 0x62, 0x6c, 0x38, 0x37, 0x79, 0x72, 0x61, 0x4b, 0x5a, 0x6b, 0x36, 0x32, 0x55, 0x79, 0x35, 0x50, 0x32, 0x45, 0x67, 0x6d, 0x56, 0x74, 0x71, 0x76, 0x58, 0x4f, 0x39, 0x41, 0x2f, 0x45, 0x63, 0x73, 0x77, 0x46, 0x69, 0x35, 0x35, 0x67, 0x4f, 0x52, 0x6e, 0x67, 0x53, 0x31, 0x64, 0x37, 0x58, 0x42, 0x34, 0x74, 0x6d, 0x42, 0x5a, 0x72, 0x4f, 0x46, 0x64, 0x52, 0x57, 0x4f, 0x50, 0x79, 0x4e, 0x39, 0x79, 0x0a, 0x61, 0x46, 0x76, 0x71, 0x48, 0x62, 0x67, 0x42, 0x38, 0x58, 0x37, 0x37, 0x35, 0x34, 0x71, 0x7a, 0x34, 0x31, 0x53, 0x67, 0x4f, 0x41, 0x6e, 0x67, 0x50, 0x4e, 0x35, 0x43, 0x38, 0x73, 0x4c, 0x74, 0x4c, 0x70, 0x76, 0x7a, 0x48, 0x7a, 0x57, 0x32, 0x4e, 0x74, 0x6a, 0x6a, 0x67, 0x4b, 0x47, 0x4c, 0x7a, 0x5a, 0x6c, 0x6b, 0x44, 0x38, 0x4b, 0x71, 0x71, 0x37, 0x48, 0x4b, 0x39, 0x57, 0x2b, 0x65, 0x51, 0x34, 0x32, 0x45, 0x56, 0x4a, 0x6d, 0x7a, 0x62, 0x73, 0x41, 0x53, 0x0a, 0x5a, 0x74, 0x68, 0x77, 0x45, 0x50, 0x45, 0x47, 0x4e, 0x54, 0x4e, 0x44, 0x71, 0x4a, 0x77, 0x75, 0x75, 0x68, 0x51, 0x78, 0x7a, 0x68, 0x42, 0x2f, 0x48, 0x49, 0x62, 0x6a, 0x6a, 0x39, 0x4c, 0x56, 0x2b, 0x48, 0x66, 0x73, 0x6d, 0x36, 0x76, 0x78, 0x4c, 0x32, 0x50, 0x5a, 0x51, 0x6c, 0x2f, 0x67, 0x5a, 0x34, 0x46, 0x6b, 0x6b, 0x66, 0x47, 0x58, 0x4c, 0x2f, 0x78, 0x75, 0x4a, 0x76, 0x59, 0x7a, 0x2b, 0x4e, 0x4f, 0x31, 0x2b, 0x4d, 0x52, 0x69, 0x71, 0x7a, 0x46, 0x52, 0x0a, 0x4a, 0x51, 0x4a, 0x36, 0x2b, 0x4e, 0x31, 0x72, 0x5a, 0x64, 0x56, 0x74, 0x54, 0x54, 0x44, 0x49, 0x5a, 0x62, 0x70, 0x6f, 0x46, 0x47, 0x57, 0x73, 0x4a, 0x77, 0x74, 0x30, 0x69, 0x76, 0x4b, 0x48, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x72, 0x75, 0x73, 0x74, 0x41, 0x73, 0x69, 0x61, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x47, 0x34, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x56, 0x54, 0x43, 0x43, 0x41, 0x64, 0x79, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x54, 0x79, 0x4e, 0x6b, 0x75, 0x49, 0x36, 0x58, 0x59, 0x35, 0x37, 0x47, 0x55, 0x34, 0x48, 0x42, 0x64, 0x6b, 0x37, 0x4c, 0x4b, 0x6e, 0x51, 0x56, 0x31, 0x74, 0x63, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x4d, 0x77, 0x57, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x34, 0x78, 0x4a, 0x54, 0x41, 0x6a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x48, 0x46, 0x52, 0x79, 0x64, 0x58, 0x4e, 0x30, 0x51, 0x58, 0x4e, 0x70, 0x59, 0x53, 0x42, 0x55, 0x5a, 0x57, 0x4e, 0x6f, 0x62, 0x6d, 0x39, 0x73, 0x62, 0x32, 0x64, 0x70, 0x5a, 0x58, 0x4d, 0x73, 0x49, 0x45, 0x6c, 0x75, 0x59, 0x79, 0x34, 0x78, 0x4a, 0x44, 0x41, 0x69, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x47, 0x31, 0x52, 0x79, 0x0a, 0x64, 0x58, 0x4e, 0x30, 0x51, 0x58, 0x4e, 0x70, 0x59, 0x53, 0x42, 0x48, 0x62, 0x47, 0x39, 0x69, 0x59, 0x57, 0x77, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x53, 0x42, 0x48, 0x4e, 0x44, 0x41, 0x65, 0x46, 0x77, 0x30, 0x79, 0x4d, 0x54, 0x41, 0x31, 0x4d, 0x6a, 0x41, 0x77, 0x4d, 0x6a, 0x45, 0x77, 0x4d, 0x6a, 0x4a, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4e, 0x6a, 0x41, 0x31, 0x4d, 0x54, 0x6b, 0x77, 0x4d, 0x6a, 0x45, 0x77, 0x4d, 0x6a, 0x4a, 0x61, 0x0a, 0x4d, 0x46, 0x6f, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4e, 0x4f, 0x4d, 0x53, 0x55, 0x77, 0x49, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x42, 0x78, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x45, 0x46, 0x7a, 0x61, 0x57, 0x45, 0x67, 0x56, 0x47, 0x56, 0x6a, 0x61, 0x47, 0x35, 0x76, 0x62, 0x47, 0x39, 0x6e, 0x61, 0x57, 0x56, 0x7a, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x4d, 0x53, 0x51, 0x77, 0x0a, 0x49, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x74, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x45, 0x46, 0x7a, 0x61, 0x57, 0x45, 0x67, 0x52, 0x32, 0x78, 0x76, 0x59, 0x6d, 0x46, 0x73, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x51, 0x30, 0x45, 0x67, 0x52, 0x7a, 0x51, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x0a, 0x41, 0x41, 0x54, 0x78, 0x73, 0x38, 0x30, 0x34, 0x35, 0x43, 0x56, 0x44, 0x35, 0x64, 0x34, 0x5a, 0x43, 0x62, 0x75, 0x42, 0x65, 0x61, 0x49, 0x56, 0x58, 0x78, 0x56, 0x6a, 0x41, 0x64, 0x37, 0x43, 0x71, 0x39, 0x32, 0x7a, 0x70, 0x68, 0x74, 0x6e, 0x53, 0x34, 0x43, 0x44, 0x72, 0x35, 0x6e, 0x4c, 0x72, 0x42, 0x66, 0x62, 0x4b, 0x35, 0x62, 0x4b, 0x66, 0x46, 0x4a, 0x56, 0x34, 0x68, 0x72, 0x68, 0x50, 0x56, 0x62, 0x77, 0x4c, 0x78, 0x59, 0x49, 0x2b, 0x68, 0x57, 0x38, 0x0a, 0x6d, 0x37, 0x74, 0x48, 0x35, 0x6a, 0x2f, 0x75, 0x71, 0x4f, 0x46, 0x4d, 0x6a, 0x50, 0x58, 0x54, 0x4e, 0x76, 0x6b, 0x34, 0x58, 0x61, 0x74, 0x77, 0x6d, 0x6b, 0x63, 0x4e, 0x34, 0x6f, 0x46, 0x42, 0x42, 0x75, 0x74, 0x4a, 0x2b, 0x62, 0x41, 0x70, 0x33, 0x54, 0x50, 0x73, 0x55, 0x4b, 0x56, 0x2f, 0x65, 0x53, 0x6d, 0x34, 0x49, 0x4a, 0x69, 0x6a, 0x59, 0x7a, 0x42, 0x68, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x0a, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6a, 0x42, 0x42, 0x67, 0x77, 0x46, 0x6f, 0x41, 0x55, 0x70, 0x62, 0x74, 0x4b, 0x6c, 0x38, 0x36, 0x7a, 0x4b, 0x33, 0x2b, 0x6b, 0x4d, 0x64, 0x36, 0x58, 0x67, 0x31, 0x6d, 0x44, 0x70, 0x6d, 0x39, 0x78, 0x79, 0x39, 0x34, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4b, 0x57, 0x37, 0x53, 0x70, 0x66, 0x4f, 0x73, 0x79, 0x74, 0x2f, 0x0a, 0x70, 0x44, 0x48, 0x65, 0x6c, 0x34, 0x4e, 0x5a, 0x67, 0x36, 0x5a, 0x76, 0x63, 0x63, 0x76, 0x65, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6e, 0x41, 0x44, 0x42, 0x6b, 0x41, 0x6a, 0x42, 0x65, 0x38, 0x75, 0x73, 0x47, 0x7a, 0x45, 0x6b, 0x78, 0x6e, 0x30, 0x41, 0x41, 0x0a, 0x62, 0x62, 0x64, 0x2b, 0x4e, 0x76, 0x42, 0x4e, 0x45, 0x55, 0x2f, 0x7a, 0x79, 0x34, 0x6b, 0x36, 0x4c, 0x48, 0x69, 0x52, 0x55, 0x4b, 0x4e, 0x62, 0x77, 0x4d, 0x70, 0x31, 0x4a, 0x76, 0x4b, 0x2f, 0x6b, 0x46, 0x30, 0x4c, 0x67, 0x6f, 0x78, 0x67, 0x4b, 0x4a, 0x2f, 0x47, 0x63, 0x4a, 0x70, 0x6f, 0x35, 0x50, 0x45, 0x43, 0x4d, 0x46, 0x78, 0x59, 0x44, 0x6c, 0x5a, 0x32, 0x7a, 0x31, 0x6a, 0x44, 0x31, 0x78, 0x43, 0x4d, 0x75, 0x6f, 0x36, 0x75, 0x34, 0x37, 0x78, 0x6b, 0x0a, 0x64, 0x55, 0x66, 0x46, 0x56, 0x5a, 0x44, 0x6a, 0x2f, 0x62, 0x70, 0x56, 0x36, 0x77, 0x66, 0x45, 0x55, 0x36, 0x73, 0x33, 0x71, 0x65, 0x34, 0x68, 0x73, 0x69, 0x46, 0x62, 0x59, 0x49, 0x38, 0x39, 0x4d, 0x76, 0x48, 0x56, 0x49, 0x35, 0x54, 0x57, 0x57, 0x41, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x2d, 0x30, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x48, 0x54, 0x43, 0x43, 0x41, 0x61, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x51, 0x33, 0x43, 0x43, 0x64, 0x38, 0x39, 0x4e, 0x58, 0x54, 0x54, 0x78, 0x79, 0x71, 0x34, 0x79, 0x4c, 0x7a, 0x66, 0x33, 0x39, 0x48, 0x39, 0x31, 0x6f, 0x4a, 0x34, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x4d, 0x77, 0x54, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x55, 0x4e, 0x76, 0x62, 0x57, 0x31, 0x54, 0x59, 0x32, 0x39, 0x77, 0x5a, 0x54, 0x45, 0x72, 0x4d, 0x43, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x69, 0x51, 0x32, 0x39, 0x74, 0x62, 0x56, 0x4e, 0x6a, 0x62, 0x33, 0x42, 0x6c, 0x49, 0x46, 0x42, 0x31, 0x59, 0x6d, 0x78, 0x70, 0x59, 0x79, 0x42, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x0a, 0x64, 0x43, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x30, 0x77, 0x4d, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x79, 0x4d, 0x54, 0x41, 0x30, 0x4d, 0x6a, 0x67, 0x78, 0x4e, 0x7a, 0x4d, 0x31, 0x4e, 0x44, 0x4e, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4e, 0x6a, 0x41, 0x30, 0x4d, 0x6a, 0x67, 0x78, 0x4e, 0x7a, 0x4d, 0x31, 0x4e, 0x44, 0x4a, 0x61, 0x4d, 0x45, 0x34, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x0a, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x49, 0x77, 0x45, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x6c, 0x44, 0x62, 0x32, 0x31, 0x74, 0x55, 0x32, 0x4e, 0x76, 0x63, 0x47, 0x55, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x49, 0x6b, 0x4e, 0x76, 0x62, 0x57, 0x31, 0x54, 0x59, 0x32, 0x39, 0x77, 0x5a, 0x53, 0x42, 0x51, 0x64, 0x57, 0x4a, 0x73, 0x61, 0x57, 0x4d, 0x67, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x0a, 0x52, 0x55, 0x4e, 0x44, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x74, 0x4d, 0x44, 0x45, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x52, 0x4c, 0x4e, 0x75, 0x6d, 0x75, 0x56, 0x31, 0x36, 0x6f, 0x63, 0x4e, 0x66, 0x51, 0x6a, 0x33, 0x52, 0x69, 0x64, 0x38, 0x4e, 0x65, 0x65, 0x71, 0x72, 0x6c, 0x74, 0x71, 0x4c, 0x78, 0x0a, 0x65, 0x50, 0x30, 0x43, 0x66, 0x6c, 0x66, 0x64, 0x6b, 0x58, 0x6d, 0x63, 0x62, 0x4c, 0x6c, 0x53, 0x69, 0x46, 0x53, 0x38, 0x4c, 0x77, 0x53, 0x2b, 0x75, 0x4d, 0x33, 0x32, 0x45, 0x4e, 0x45, 0x70, 0x37, 0x4c, 0x58, 0x51, 0x6f, 0x4d, 0x50, 0x77, 0x69, 0x58, 0x41, 0x5a, 0x75, 0x31, 0x46, 0x6c, 0x78, 0x55, 0x4f, 0x63, 0x77, 0x35, 0x74, 0x6a, 0x6e, 0x53, 0x43, 0x44, 0x50, 0x67, 0x59, 0x4c, 0x70, 0x6b, 0x4a, 0x45, 0x68, 0x52, 0x47, 0x6e, 0x53, 0x6a, 0x6f, 0x74, 0x0a, 0x36, 0x64, 0x5a, 0x6f, 0x4c, 0x30, 0x68, 0x4f, 0x55, 0x79, 0x73, 0x48, 0x50, 0x30, 0x32, 0x39, 0x75, 0x61, 0x78, 0x33, 0x4f, 0x56, 0x65, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x4f, 0x42, 0x32, 0x4c, 0x41, 0x55, 0x4e, 0x33, 0x47, 0x47, 0x51, 0x59, 0x41, 0x52, 0x6e, 0x51, 0x45, 0x39, 0x2f, 0x4f, 0x75, 0x66, 0x58, 0x56, 0x4e, 0x4d, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6f, 0x41, 0x44, 0x42, 0x6c, 0x41, 0x6a, 0x45, 0x41, 0x6e, 0x44, 0x50, 0x66, 0x51, 0x65, 0x4d, 0x6a, 0x71, 0x45, 0x49, 0x32, 0x0a, 0x4a, 0x70, 0x63, 0x31, 0x58, 0x48, 0x76, 0x72, 0x32, 0x30, 0x76, 0x34, 0x71, 0x6f, 0x74, 0x7a, 0x56, 0x52, 0x56, 0x63, 0x72, 0x48, 0x67, 0x70, 0x44, 0x37, 0x6f, 0x68, 0x32, 0x4d, 0x53, 0x67, 0x32, 0x4e, 0x45, 0x44, 0x33, 0x57, 0x33, 0x52, 0x4f, 0x54, 0x33, 0x45, 0x6b, 0x32, 0x44, 0x53, 0x34, 0x33, 0x4b, 0x79, 0x41, 0x6a, 0x42, 0x38, 0x78, 0x58, 0x36, 0x49, 0x30, 0x31, 0x44, 0x31, 0x48, 0x69, 0x58, 0x6f, 0x2b, 0x6b, 0x35, 0x31, 0x35, 0x6c, 0x69, 0x57, 0x0a, 0x70, 0x44, 0x56, 0x66, 0x47, 0x32, 0x58, 0x71, 0x59, 0x5a, 0x70, 0x77, 0x49, 0x37, 0x55, 0x4e, 0x6f, 0x35, 0x75, 0x53, 0x55, 0x6d, 0x39, 0x70, 0x6f, 0x49, 0x79, 0x4e, 0x53, 0x74, 0x44, 0x75, 0x69, 0x77, 0x37, 0x4c, 0x52, 0x34, 0x37, 0x51, 0x6a, 0x52, 0x45, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x2d, 0x30, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x48, 0x44, 0x43, 0x43, 0x41, 0x61, 0x4f, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x4b, 0x50, 0x32, 0x5a, 0x59, 0x45, 0x46, 0x48, 0x70, 0x67, 0x45, 0x36, 0x79, 0x68, 0x52, 0x37, 0x48, 0x2b, 0x2f, 0x35, 0x61, 0x41, 0x69, 0x44, 0x58, 0x58, 0x30, 0x77, 0x43, 0x67, 0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x45, 0x41, 0x77, 0x4d, 0x77, 0x54, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x0a, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x55, 0x4e, 0x76, 0x62, 0x57, 0x31, 0x54, 0x59, 0x32, 0x39, 0x77, 0x5a, 0x54, 0x45, 0x72, 0x4d, 0x43, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x69, 0x51, 0x32, 0x39, 0x74, 0x62, 0x56, 0x4e, 0x6a, 0x62, 0x33, 0x42, 0x6c, 0x49, 0x46, 0x42, 0x31, 0x59, 0x6d, 0x78, 0x70, 0x59, 0x79, 0x42, 0x55, 0x63, 0x6e, 0x56, 0x7a, 0x0a, 0x64, 0x43, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x30, 0x77, 0x4d, 0x6a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x79, 0x4d, 0x54, 0x41, 0x30, 0x4d, 0x6a, 0x67, 0x78, 0x4e, 0x7a, 0x51, 0x30, 0x4e, 0x54, 0x52, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4e, 0x6a, 0x41, 0x30, 0x4d, 0x6a, 0x67, 0x78, 0x4e, 0x7a, 0x51, 0x30, 0x4e, 0x54, 0x4e, 0x61, 0x4d, 0x45, 0x34, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x0a, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x49, 0x77, 0x45, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x6c, 0x44, 0x62, 0x32, 0x31, 0x74, 0x55, 0x32, 0x4e, 0x76, 0x63, 0x47, 0x55, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x49, 0x6b, 0x4e, 0x76, 0x62, 0x57, 0x31, 0x54, 0x59, 0x32, 0x39, 0x77, 0x5a, 0x53, 0x42, 0x51, 0x64, 0x57, 0x4a, 0x73, 0x61, 0x57, 0x4d, 0x67, 0x56, 0x48, 0x4a, 0x31, 0x63, 0x33, 0x51, 0x67, 0x0a, 0x52, 0x55, 0x4e, 0x44, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x74, 0x4d, 0x44, 0x49, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x52, 0x34, 0x4d, 0x49, 0x48, 0x6f, 0x59, 0x78, 0x37, 0x6c, 0x36, 0x33, 0x46, 0x52, 0x44, 0x2f, 0x63, 0x48, 0x42, 0x38, 0x6f, 0x35, 0x6d, 0x58, 0x78, 0x4f, 0x31, 0x51, 0x2f, 0x4d, 0x0a, 0x4d, 0x44, 0x41, 0x4c, 0x6a, 0x32, 0x61, 0x54, 0x50, 0x73, 0x2b, 0x39, 0x78, 0x59, 0x61, 0x39, 0x2b, 0x62, 0x47, 0x33, 0x74, 0x44, 0x36, 0x30, 0x42, 0x38, 0x6a, 0x7a, 0x6c, 0x6a, 0x48, 0x7a, 0x37, 0x61, 0x52, 0x50, 0x2b, 0x4b, 0x4e, 0x4f, 0x6a, 0x53, 0x6b, 0x56, 0x57, 0x4c, 0x6a, 0x56, 0x62, 0x33, 0x2f, 0x75, 0x62, 0x43, 0x4b, 0x31, 0x73, 0x4b, 0x39, 0x49, 0x52, 0x51, 0x71, 0x39, 0x71, 0x45, 0x6d, 0x55, 0x76, 0x34, 0x52, 0x44, 0x73, 0x4e, 0x75, 0x45, 0x0a, 0x53, 0x67, 0x4d, 0x6a, 0x47, 0x57, 0x64, 0x71, 0x62, 0x38, 0x46, 0x75, 0x76, 0x41, 0x59, 0x35, 0x4e, 0x39, 0x47, 0x49, 0x49, 0x76, 0x65, 0x6a, 0x51, 0x6a, 0x42, 0x41, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x42, 0x30, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54, 0x6d, 0x47, 0x48, 0x58, 0x2f, 0x37, 0x32, 0x44, 0x65, 0x68, 0x4b, 0x54, 0x31, 0x52, 0x73, 0x66, 0x65, 0x53, 0x6c, 0x58, 0x6a, 0x4d, 0x6a, 0x5a, 0x35, 0x39, 0x54, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6e, 0x41, 0x44, 0x42, 0x6b, 0x41, 0x6a, 0x41, 0x6d, 0x63, 0x30, 0x6c, 0x36, 0x74, 0x71, 0x76, 0x6d, 0x53, 0x66, 0x52, 0x39, 0x0a, 0x55, 0x6a, 0x2f, 0x55, 0x51, 0x51, 0x53, 0x75, 0x67, 0x45, 0x4f, 0x44, 0x5a, 0x58, 0x57, 0x35, 0x68, 0x59, 0x41, 0x34, 0x4f, 0x39, 0x5a, 0x76, 0x35, 0x4a, 0x4f, 0x47, 0x71, 0x34, 0x2f, 0x6e, 0x69, 0x63, 0x68, 0x2f, 0x6d, 0x33, 0x35, 0x72, 0x43, 0x68, 0x4a, 0x56, 0x59, 0x61, 0x6f, 0x52, 0x34, 0x48, 0x6b, 0x43, 0x4d, 0x48, 0x66, 0x6f, 0x4d, 0x58, 0x47, 0x73, 0x50, 0x48, 0x45, 0x44, 0x31, 0x6f, 0x51, 0x6d, 0x48, 0x68, 0x53, 0x34, 0x38, 0x7a, 0x73, 0x37, 0x0a, 0x33, 0x75, 0x31, 0x5a, 0x2f, 0x47, 0x74, 0x4d, 0x4d, 0x48, 0x39, 0x5a, 0x7a, 0x6b, 0x58, 0x70, 0x63, 0x32, 0x41, 0x56, 0x6d, 0x6b, 0x7a, 0x77, 0x35, 0x6c, 0x34, 0x6c, 0x49, 0x68, 0x56, 0x74, 0x77, 0x6f, 0x64, 0x5a, 0x30, 0x4c, 0x4b, 0x4f, 0x61, 0x67, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x53, 0x41, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x2d, 0x30, 0x31, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x62, 0x44, 0x43, 0x43, 0x41, 0x31, 0x53, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x50, 0x67, 0x4e, 0x4a, 0x67, 0x58, 0x55, 0x57, 0x64, 0x44, 0x47, 0x4f, 0x54, 0x4b, 0x76, 0x56, 0x78, 0x5a, 0x41, 0x70, 0x6c, 0x73, 0x55, 0x35, 0x45, 0x4e, 0x30, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x54, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x55, 0x4e, 0x76, 0x62, 0x57, 0x31, 0x54, 0x59, 0x32, 0x39, 0x77, 0x5a, 0x54, 0x45, 0x72, 0x4d, 0x43, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x69, 0x51, 0x32, 0x39, 0x74, 0x62, 0x56, 0x4e, 0x6a, 0x62, 0x33, 0x42, 0x6c, 0x49, 0x46, 0x42, 0x31, 0x59, 0x6d, 0x78, 0x70, 0x59, 0x79, 0x42, 0x55, 0x0a, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x53, 0x55, 0x30, 0x45, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x30, 0x77, 0x4d, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x79, 0x4d, 0x54, 0x41, 0x30, 0x4d, 0x6a, 0x67, 0x78, 0x4e, 0x6a, 0x51, 0x31, 0x4e, 0x54, 0x52, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4e, 0x6a, 0x41, 0x30, 0x4d, 0x6a, 0x67, 0x78, 0x4e, 0x6a, 0x51, 0x31, 0x4e, 0x54, 0x4e, 0x61, 0x4d, 0x45, 0x34, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x49, 0x77, 0x45, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x6c, 0x44, 0x62, 0x32, 0x31, 0x74, 0x55, 0x32, 0x4e, 0x76, 0x63, 0x47, 0x55, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x49, 0x6b, 0x4e, 0x76, 0x62, 0x57, 0x31, 0x54, 0x59, 0x32, 0x39, 0x77, 0x5a, 0x53, 0x42, 0x51, 0x64, 0x57, 0x4a, 0x73, 0x61, 0x57, 0x4d, 0x67, 0x56, 0x48, 0x4a, 0x31, 0x0a, 0x63, 0x33, 0x51, 0x67, 0x55, 0x6c, 0x4e, 0x42, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x74, 0x4d, 0x44, 0x45, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x43, 0x77, 0x53, 0x47, 0x57, 0x6a, 0x44, 0x52, 0x31, 0x43, 0x34, 0x35, 0x46, 0x74, 0x0a, 0x6e, 0x59, 0x53, 0x6b, 0x59, 0x5a, 0x59, 0x53, 0x77, 0x75, 0x33, 0x44, 0x32, 0x69, 0x4d, 0x30, 0x47, 0x58, 0x62, 0x32, 0x36, 0x76, 0x31, 0x56, 0x57, 0x76, 0x5a, 0x56, 0x41, 0x56, 0x4d, 0x50, 0x38, 0x73, 0x79, 0x4d, 0x6c, 0x30, 0x2b, 0x35, 0x55, 0x4d, 0x75, 0x7a, 0x41, 0x55, 0x52, 0x57, 0x6c, 0x76, 0x32, 0x62, 0x4b, 0x4f, 0x78, 0x37, 0x64, 0x41, 0x76, 0x6e, 0x51, 0x6d, 0x74, 0x56, 0x7a, 0x73, 0x6c, 0x68, 0x73, 0x75, 0x69, 0x74, 0x51, 0x44, 0x79, 0x36, 0x0a, 0x75, 0x55, 0x45, 0x4b, 0x42, 0x55, 0x38, 0x62, 0x4a, 0x6f, 0x57, 0x50, 0x51, 0x37, 0x56, 0x41, 0x74, 0x59, 0x58, 0x52, 0x31, 0x48, 0x48, 0x63, 0x67, 0x30, 0x48, 0x7a, 0x39, 0x6b, 0x58, 0x48, 0x67, 0x4b, 0x4b, 0x45, 0x55, 0x4a, 0x64, 0x47, 0x7a, 0x71, 0x41, 0x4d, 0x78, 0x47, 0x42, 0x57, 0x42, 0x42, 0x30, 0x48, 0x57, 0x30, 0x61, 0x6c, 0x44, 0x72, 0x4a, 0x4c, 0x70, 0x41, 0x36, 0x6c, 0x66, 0x4f, 0x37, 0x34, 0x31, 0x47, 0x49, 0x44, 0x75, 0x5a, 0x4e, 0x71, 0x0a, 0x69, 0x68, 0x53, 0x34, 0x63, 0x50, 0x67, 0x75, 0x67, 0x6b, 0x59, 0x34, 0x49, 0x77, 0x35, 0x30, 0x78, 0x32, 0x74, 0x42, 0x74, 0x39, 0x41, 0x70, 0x6f, 0x35, 0x32, 0x41, 0x73, 0x48, 0x35, 0x33, 0x6b, 0x32, 0x4e, 0x43, 0x2b, 0x7a, 0x53, 0x44, 0x4f, 0x33, 0x4f, 0x6a, 0x57, 0x69, 0x45, 0x32, 0x36, 0x30, 0x66, 0x36, 0x47, 0x42, 0x66, 0x5a, 0x75, 0x6d, 0x62, 0x43, 0x6b, 0x36, 0x53, 0x50, 0x2f, 0x46, 0x32, 0x6b, 0x72, 0x66, 0x78, 0x51, 0x61, 0x70, 0x57, 0x73, 0x0a, 0x76, 0x43, 0x51, 0x7a, 0x30, 0x62, 0x32, 0x49, 0x66, 0x34, 0x62, 0x31, 0x39, 0x62, 0x4a, 0x7a, 0x4b, 0x6f, 0x39, 0x38, 0x72, 0x77, 0x6a, 0x79, 0x47, 0x70, 0x67, 0x2f, 0x71, 0x59, 0x46, 0x6c, 0x50, 0x38, 0x47, 0x4d, 0x69, 0x63, 0x57, 0x57, 0x4d, 0x4a, 0x6f, 0x4b, 0x7a, 0x2f, 0x54, 0x55, 0x79, 0x44, 0x54, 0x74, 0x6e, 0x53, 0x2b, 0x38, 0x6a, 0x54, 0x69, 0x47, 0x55, 0x2b, 0x36, 0x58, 0x6e, 0x36, 0x6d, 0x79, 0x59, 0x35, 0x51, 0x58, 0x6a, 0x51, 0x2f, 0x63, 0x0a, 0x5a, 0x69, 0x70, 0x38, 0x55, 0x6c, 0x46, 0x31, 0x79, 0x35, 0x6d, 0x4f, 0x36, 0x44, 0x31, 0x63, 0x76, 0x35, 0x34, 0x37, 0x4b, 0x49, 0x32, 0x44, 0x41, 0x67, 0x2b, 0x70, 0x6e, 0x33, 0x4c, 0x69, 0x4c, 0x43, 0x75, 0x7a, 0x33, 0x47, 0x61, 0x58, 0x41, 0x45, 0x44, 0x51, 0x70, 0x46, 0x53, 0x4f, 0x6d, 0x31, 0x31, 0x37, 0x52, 0x54, 0x59, 0x6d, 0x31, 0x6e, 0x4a, 0x44, 0x36, 0x38, 0x2f, 0x41, 0x36, 0x67, 0x33, 0x63, 0x7a, 0x68, 0x4c, 0x6d, 0x66, 0x54, 0x69, 0x66, 0x0a, 0x42, 0x53, 0x65, 0x6f, 0x6c, 0x7a, 0x37, 0x70, 0x55, 0x63, 0x5a, 0x73, 0x42, 0x53, 0x6a, 0x42, 0x41, 0x67, 0x2f, 0x70, 0x47, 0x47, 0x33, 0x73, 0x76, 0x5a, 0x77, 0x47, 0x31, 0x4b, 0x64, 0x4a, 0x39, 0x46, 0x51, 0x46, 0x61, 0x32, 0x77, 0x77, 0x38, 0x65, 0x73, 0x44, 0x31, 0x65, 0x6f, 0x39, 0x61, 0x6e, 0x62, 0x43, 0x79, 0x78, 0x6f, 0x6f, 0x53, 0x55, 0x31, 0x2f, 0x5a, 0x4f, 0x44, 0x36, 0x4b, 0x39, 0x70, 0x7a, 0x67, 0x34, 0x48, 0x2f, 0x6b, 0x51, 0x4f, 0x39, 0x0a, 0x6c, 0x4c, 0x76, 0x6b, 0x75, 0x49, 0x36, 0x63, 0x4d, 0x6d, 0x50, 0x4e, 0x6e, 0x37, 0x74, 0x6f, 0x67, 0x62, 0x47, 0x45, 0x57, 0x36, 0x38, 0x32, 0x76, 0x33, 0x66, 0x75, 0x48, 0x58, 0x2f, 0x33, 0x53, 0x5a, 0x74, 0x53, 0x37, 0x4e, 0x4a, 0x33, 0x57, 0x6e, 0x32, 0x52, 0x6e, 0x55, 0x33, 0x43, 0x4f, 0x53, 0x33, 0x6b, 0x75, 0x6f, 0x4c, 0x34, 0x62, 0x2f, 0x4a, 0x4f, 0x48, 0x67, 0x39, 0x4f, 0x35, 0x6a, 0x39, 0x5a, 0x70, 0x53, 0x50, 0x63, 0x50, 0x59, 0x65, 0x6f, 0x0a, 0x4b, 0x46, 0x67, 0x6f, 0x30, 0x66, 0x45, 0x62, 0x4e, 0x74, 0x74, 0x50, 0x78, 0x50, 0x2f, 0x68, 0x6a, 0x46, 0x74, 0x79, 0x6a, 0x4d, 0x63, 0x6d, 0x41, 0x79, 0x65, 0x6a, 0x4f, 0x51, 0x6f, 0x42, 0x71, 0x73, 0x43, 0x79, 0x4d, 0x57, 0x43, 0x44, 0x49, 0x71, 0x46, 0x50, 0x45, 0x67, 0x6b, 0x42, 0x45, 0x61, 0x38, 0x30, 0x31, 0x4d, 0x2f, 0x58, 0x72, 0x6d, 0x4c, 0x54, 0x42, 0x51, 0x65, 0x30, 0x4d, 0x58, 0x58, 0x67, 0x44, 0x57, 0x31, 0x58, 0x54, 0x32, 0x6d, 0x48, 0x0a, 0x2b, 0x56, 0x65, 0x70, 0x75, 0x68, 0x58, 0x32, 0x79, 0x46, 0x4a, 0x74, 0x6f, 0x63, 0x75, 0x63, 0x48, 0x2b, 0x58, 0x38, 0x65, 0x4b, 0x67, 0x31, 0x6d, 0x70, 0x39, 0x42, 0x46, 0x4d, 0x36, 0x6c, 0x74, 0x4d, 0x36, 0x55, 0x43, 0x42, 0x77, 0x4a, 0x72, 0x56, 0x62, 0x6c, 0x32, 0x72, 0x5a, 0x4a, 0x6d, 0x6b, 0x72, 0x71, 0x59, 0x78, 0x68, 0x54, 0x6e, 0x43, 0x77, 0x75, 0x77, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x4e, 0x31, 0x32, 0x6d, 0x6d, 0x6e, 0x51, 0x79, 0x77, 0x73, 0x4c, 0x35, 0x78, 0x36, 0x59, 0x56, 0x45, 0x46, 0x6d, 0x34, 0x0a, 0x35, 0x50, 0x33, 0x6c, 0x75, 0x47, 0x30, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4b, 0x2b, 0x6e, 0x7a, 0x39, 0x37, 0x2f, 0x34, 0x4c, 0x31, 0x43, 0x6a, 0x55, 0x33, 0x6c, 0x49, 0x70, 0x62, 0x66, 0x61, 0x4f, 0x70, 0x39, 0x54, 0x53, 0x70, 0x39, 0x30, 0x4b, 0x30, 0x39, 0x46, 0x6c, 0x78, 0x44, 0x35, 0x33, 0x33, 0x41, 0x68, 0x75, 0x68, 0x36, 0x0a, 0x4e, 0x57, 0x50, 0x78, 0x7a, 0x49, 0x48, 0x49, 0x78, 0x67, 0x76, 0x6f, 0x4c, 0x6c, 0x49, 0x31, 0x70, 0x4b, 0x5a, 0x4a, 0x6b, 0x47, 0x4e, 0x52, 0x72, 0x44, 0x53, 0x73, 0x42, 0x54, 0x74, 0x58, 0x41, 0x4f, 0x6e, 0x54, 0x59, 0x74, 0x50, 0x5a, 0x4b, 0x64, 0x56, 0x55, 0x76, 0x68, 0x77, 0x51, 0x6b, 0x5a, 0x79, 0x79, 0x62, 0x66, 0x35, 0x5a, 0x2f, 0x58, 0x6e, 0x33, 0x36, 0x6c, 0x62, 0x51, 0x6e, 0x6d, 0x68, 0x55, 0x51, 0x6f, 0x38, 0x6d, 0x55, 0x75, 0x4a, 0x4d, 0x0a, 0x33, 0x79, 0x2b, 0x58, 0x70, 0x69, 0x2f, 0x53, 0x42, 0x35, 0x69, 0x6f, 0x38, 0x32, 0x42, 0x64, 0x53, 0x35, 0x70, 0x59, 0x56, 0x34, 0x6a, 0x76, 0x67, 0x75, 0x58, 0x36, 0x72, 0x32, 0x79, 0x42, 0x53, 0x35, 0x4b, 0x50, 0x51, 0x4a, 0x71, 0x54, 0x52, 0x6c, 0x6e, 0x4c, 0x58, 0x33, 0x67, 0x57, 0x73, 0x57, 0x63, 0x2b, 0x51, 0x67, 0x76, 0x66, 0x4b, 0x4e, 0x6d, 0x77, 0x72, 0x5a, 0x67, 0x67, 0x76, 0x6b, 0x4e, 0x38, 0x30, 0x56, 0x34, 0x61, 0x43, 0x52, 0x63, 0x6b, 0x0a, 0x6a, 0x58, 0x74, 0x64, 0x6c, 0x65, 0x6d, 0x72, 0x77, 0x57, 0x43, 0x72, 0x57, 0x78, 0x68, 0x6b, 0x67, 0x50, 0x75, 0x74, 0x34, 0x41, 0x5a, 0x39, 0x48, 0x63, 0x70, 0x5a, 0x75, 0x50, 0x4e, 0x34, 0x4b, 0x57, 0x66, 0x47, 0x56, 0x68, 0x32, 0x76, 0x74, 0x72, 0x56, 0x30, 0x4b, 0x6e, 0x61, 0x68, 0x50, 0x2f, 0x74, 0x31, 0x4d, 0x4a, 0x2b, 0x55, 0x58, 0x6a, 0x75, 0x6c, 0x59, 0x50, 0x50, 0x4c, 0x58, 0x41, 0x7a, 0x69, 0x44, 0x73, 0x6c, 0x67, 0x2b, 0x4d, 0x6b, 0x66, 0x0a, 0x46, 0x6f, 0x6f, 0x6d, 0x33, 0x65, 0x63, 0x6e, 0x66, 0x2b, 0x73, 0x6c, 0x70, 0x6f, 0x71, 0x39, 0x75, 0x43, 0x30, 0x32, 0x45, 0x4a, 0x71, 0x78, 0x57, 0x45, 0x32, 0x61, 0x61, 0x45, 0x39, 0x67, 0x56, 0x4f, 0x58, 0x32, 0x52, 0x68, 0x4f, 0x4f, 0x69, 0x4b, 0x79, 0x38, 0x49, 0x55, 0x49, 0x53, 0x72, 0x63, 0x5a, 0x4b, 0x69, 0x58, 0x32, 0x62, 0x77, 0x64, 0x67, 0x74, 0x36, 0x5a, 0x59, 0x44, 0x39, 0x4b, 0x4a, 0x30, 0x44, 0x4c, 0x77, 0x41, 0x48, 0x62, 0x2f, 0x57, 0x0a, 0x4e, 0x79, 0x56, 0x6e, 0x74, 0x48, 0x4b, 0x4c, 0x72, 0x34, 0x57, 0x39, 0x36, 0x69, 0x6f, 0x44, 0x6a, 0x38, 0x7a, 0x37, 0x50, 0x45, 0x51, 0x6b, 0x67, 0x75, 0x49, 0x42, 0x70, 0x51, 0x74, 0x5a, 0x74, 0x6a, 0x53, 0x4e, 0x4d, 0x67, 0x73, 0x53, 0x44, 0x65, 0x73, 0x6e, 0x77, 0x76, 0x31, 0x42, 0x31, 0x30, 0x41, 0x38, 0x63, 0x6b, 0x59, 0x70, 0x77, 0x49, 0x7a, 0x71, 0x75, 0x67, 0x2f, 0x78, 0x42, 0x70, 0x4d, 0x75, 0x39, 0x35, 0x79, 0x6f, 0x39, 0x47, 0x41, 0x2b, 0x0a, 0x6f, 0x2f, 0x45, 0x34, 0x58, 0x6f, 0x34, 0x54, 0x77, 0x62, 0x4d, 0x36, 0x6c, 0x34, 0x63, 0x2f, 0x6b, 0x73, 0x70, 0x34, 0x71, 0x52, 0x79, 0x76, 0x30, 0x4c, 0x41, 0x62, 0x4a, 0x68, 0x36, 0x2b, 0x63, 0x4f, 0x78, 0x36, 0x39, 0x54, 0x4f, 0x59, 0x36, 0x6c, 0x7a, 0x2f, 0x4b, 0x77, 0x73, 0x45, 0x54, 0x6b, 0x50, 0x64, 0x59, 0x33, 0x34, 0x4f, 0x70, 0x30, 0x35, 0x34, 0x41, 0x35, 0x55, 0x2b, 0x31, 0x43, 0x30, 0x77, 0x6c, 0x52, 0x45, 0x51, 0x4b, 0x43, 0x36, 0x2f, 0x0a, 0x6f, 0x41, 0x49, 0x2b, 0x2f, 0x31, 0x35, 0x5a, 0x30, 0x77, 0x55, 0x4f, 0x6c, 0x56, 0x39, 0x54, 0x52, 0x65, 0x39, 0x72, 0x68, 0x39, 0x56, 0x49, 0x7a, 0x52, 0x61, 0x6d, 0x6c, 0x6f, 0x50, 0x68, 0x33, 0x37, 0x4d, 0x47, 0x38, 0x38, 0x45, 0x55, 0x32, 0x36, 0x66, 0x73, 0x48, 0x49, 0x74, 0x64, 0x6b, 0x4a, 0x41, 0x4e, 0x63, 0x6c, 0x48, 0x6e, 0x59, 0x66, 0x6b, 0x55, 0x79, 0x71, 0x2b, 0x44, 0x6a, 0x37, 0x2b, 0x76, 0x73, 0x51, 0x70, 0x5a, 0x58, 0x64, 0x78, 0x63, 0x0a, 0x31, 0x2b, 0x53, 0x57, 0x72, 0x56, 0x74, 0x67, 0x48, 0x64, 0x71, 0x75, 0x6c, 0x37, 0x49, 0x35, 0x32, 0x51, 0x62, 0x31, 0x64, 0x67, 0x41, 0x54, 0x2b, 0x47, 0x68, 0x4d, 0x49, 0x62, 0x41, 0x31, 0x78, 0x4e, 0x78, 0x56, 0x73, 0x73, 0x6e, 0x42, 0x51, 0x56, 0x6f, 0x63, 0x69, 0x63, 0x43, 0x4d, 0x62, 0x33, 0x53, 0x67, 0x61, 0x7a, 0x4e, 0x4e, 0x74, 0x51, 0x45, 0x6f, 0x2f, 0x61, 0x32, 0x74, 0x69, 0x52, 0x63, 0x37, 0x70, 0x70, 0x71, 0x45, 0x76, 0x4f, 0x75, 0x4d, 0x0a, 0x36, 0x73, 0x52, 0x78, 0x4a, 0x4b, 0x69, 0x36, 0x4b, 0x66, 0x6b, 0x49, 0x73, 0x69, 0x64, 0x57, 0x4e, 0x54, 0x4a, 0x66, 0x36, 0x6a, 0x6e, 0x37, 0x4d, 0x5a, 0x72, 0x56, 0x47, 0x63, 0x7a, 0x77, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x53, 0x41, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x2d, 0x30, 0x32, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x62, 0x44, 0x43, 0x43, 0x41, 0x31, 0x53, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x56, 0x42, 0x61, 0x2f, 0x4f, 0x33, 0x34, 0x35, 0x6c, 0x58, 0x47, 0x4e, 0x30, 0x61, 0x6f, 0x41, 0x70, 0x59, 0x59, 0x4e, 0x4b, 0x34, 0x39, 0x36, 0x42, 0x55, 0x34, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x77, 0x54, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x56, 0x56, 0x4d, 0x78, 0x45, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x43, 0x55, 0x4e, 0x76, 0x62, 0x57, 0x31, 0x54, 0x59, 0x32, 0x39, 0x77, 0x5a, 0x54, 0x45, 0x72, 0x4d, 0x43, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x69, 0x51, 0x32, 0x39, 0x74, 0x62, 0x56, 0x4e, 0x6a, 0x62, 0x33, 0x42, 0x6c, 0x49, 0x46, 0x42, 0x31, 0x59, 0x6d, 0x78, 0x70, 0x59, 0x79, 0x42, 0x55, 0x0a, 0x63, 0x6e, 0x56, 0x7a, 0x64, 0x43, 0x42, 0x53, 0x55, 0x30, 0x45, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x30, 0x77, 0x4d, 0x6a, 0x41, 0x65, 0x46, 0x77, 0x30, 0x79, 0x4d, 0x54, 0x41, 0x30, 0x4d, 0x6a, 0x67, 0x78, 0x4e, 0x7a, 0x45, 0x32, 0x4e, 0x44, 0x4e, 0x61, 0x46, 0x77, 0x30, 0x30, 0x4e, 0x6a, 0x41, 0x30, 0x4d, 0x6a, 0x67, 0x78, 0x4e, 0x7a, 0x45, 0x32, 0x4e, 0x44, 0x4a, 0x61, 0x4d, 0x45, 0x34, 0x78, 0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6c, 0x56, 0x54, 0x4d, 0x52, 0x49, 0x77, 0x45, 0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x6c, 0x44, 0x62, 0x32, 0x31, 0x74, 0x55, 0x32, 0x4e, 0x76, 0x63, 0x47, 0x55, 0x78, 0x4b, 0x7a, 0x41, 0x70, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x49, 0x6b, 0x4e, 0x76, 0x62, 0x57, 0x31, 0x54, 0x59, 0x32, 0x39, 0x77, 0x5a, 0x53, 0x42, 0x51, 0x64, 0x57, 0x4a, 0x73, 0x61, 0x57, 0x4d, 0x67, 0x56, 0x48, 0x4a, 0x31, 0x0a, 0x63, 0x33, 0x51, 0x67, 0x55, 0x6c, 0x4e, 0x42, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x74, 0x4d, 0x44, 0x49, 0x77, 0x67, 0x67, 0x49, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x43, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x49, 0x4b, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x51, 0x44, 0x68, 0x2b, 0x67, 0x37, 0x37, 0x61, 0x41, 0x41, 0x53, 0x79, 0x45, 0x33, 0x56, 0x0a, 0x72, 0x43, 0x4c, 0x45, 0x4e, 0x51, 0x45, 0x37, 0x78, 0x56, 0x54, 0x6c, 0x57, 0x58, 0x5a, 0x6a, 0x70, 0x58, 0x2f, 0x72, 0x77, 0x63, 0x52, 0x71, 0x6d, 0x4c, 0x30, 0x79, 0x6a, 0x52, 0x65, 0x41, 0x36, 0x31, 0x32, 0x36, 0x30, 0x57, 0x49, 0x39, 0x4a, 0x53, 0x4d, 0x5a, 0x4e, 0x52, 0x54, 0x70, 0x66, 0x34, 0x6d, 0x6e, 0x47, 0x32, 0x49, 0x38, 0x31, 0x6c, 0x44, 0x6e, 0x4e, 0x4a, 0x55, 0x44, 0x4d, 0x72, 0x47, 0x30, 0x6b, 0x79, 0x49, 0x39, 0x70, 0x2b, 0x4b, 0x78, 0x0a, 0x37, 0x65, 0x5a, 0x37, 0x54, 0x69, 0x36, 0x48, 0x6d, 0x77, 0x30, 0x7a, 0x64, 0x51, 0x72, 0x65, 0x71, 0x6a, 0x58, 0x6e, 0x66, 0x75, 0x55, 0x32, 0x6d, 0x4b, 0x4b, 0x75, 0x4a, 0x5a, 0x36, 0x56, 0x73, 0x7a, 0x4b, 0x57, 0x70, 0x43, 0x74, 0x59, 0x48, 0x75, 0x38, 0x2f, 0x2f, 0x6d, 0x49, 0x30, 0x53, 0x46, 0x48, 0x52, 0x74, 0x49, 0x31, 0x43, 0x72, 0x57, 0x44, 0x61, 0x53, 0x57, 0x71, 0x56, 0x63, 0x4e, 0x33, 0x53, 0x41, 0x4f, 0x4c, 0x4d, 0x56, 0x32, 0x4d, 0x43, 0x0a, 0x65, 0x35, 0x62, 0x64, 0x53, 0x5a, 0x64, 0x62, 0x6b, 0x6b, 0x36, 0x56, 0x30, 0x2f, 0x6e, 0x4c, 0x4b, 0x52, 0x38, 0x59, 0x53, 0x76, 0x67, 0x42, 0x4b, 0x74, 0x4a, 0x6a, 0x43, 0x57, 0x34, 0x6b, 0x36, 0x59, 0x6e, 0x53, 0x35, 0x63, 0x63, 0x69, 0x54, 0x4e, 0x78, 0x7a, 0x68, 0x6b, 0x63, 0x41, 0x71, 0x67, 0x32, 0x49, 0x6a, 0x71, 0x36, 0x46, 0x66, 0x55, 0x72, 0x70, 0x75, 0x7a, 0x4e, 0x50, 0x44, 0x6c, 0x4a, 0x77, 0x6e, 0x5a, 0x58, 0x6a, 0x66, 0x47, 0x32, 0x57, 0x0a, 0x57, 0x79, 0x30, 0x39, 0x58, 0x36, 0x47, 0x44, 0x52, 0x6c, 0x32, 0x32, 0x34, 0x79, 0x57, 0x34, 0x66, 0x4b, 0x63, 0x5a, 0x67, 0x42, 0x7a, 0x71, 0x5a, 0x55, 0x50, 0x63, 0x6b, 0x58, 0x6b, 0x32, 0x4c, 0x48, 0x52, 0x38, 0x38, 0x6d, 0x63, 0x47, 0x79, 0x59, 0x6e, 0x4a, 0x32, 0x37, 0x2f, 0x61, 0x61, 0x4c, 0x38, 0x6a, 0x37, 0x64, 0x78, 0x72, 0x72, 0x53, 0x69, 0x44, 0x65, 0x53, 0x2f, 0x73, 0x4f, 0x4b, 0x55, 0x4e, 0x4e, 0x77, 0x46, 0x6e, 0x4a, 0x35, 0x72, 0x70, 0x0a, 0x4d, 0x39, 0x6b, 0x7a, 0x58, 0x7a, 0x65, 0x68, 0x78, 0x66, 0x43, 0x72, 0x50, 0x66, 0x70, 0x34, 0x73, 0x4f, 0x63, 0x73, 0x6e, 0x2f, 0x59, 0x2b, 0x6e, 0x32, 0x44, 0x67, 0x37, 0x30, 0x6a, 0x70, 0x6b, 0x45, 0x55, 0x65, 0x42, 0x56, 0x46, 0x34, 0x47, 0x69, 0x77, 0x53, 0x4c, 0x46, 0x77, 0x6f, 0x72, 0x41, 0x32, 0x69, 0x49, 0x35, 0x34, 0x30, 0x6a, 0x77, 0x58, 0x6d, 0x6f, 0x6a, 0x50, 0x4f, 0x45, 0x58, 0x63, 0x54, 0x31, 0x41, 0x36, 0x6b, 0x48, 0x6b, 0x49, 0x66, 0x0a, 0x68, 0x73, 0x31, 0x77, 0x2f, 0x74, 0x6b, 0x75, 0x46, 0x54, 0x30, 0x64, 0x75, 0x37, 0x6a, 0x79, 0x55, 0x31, 0x66, 0x62, 0x7a, 0x4d, 0x5a, 0x30, 0x4b, 0x5a, 0x77, 0x59, 0x73, 0x7a, 0x5a, 0x31, 0x4f, 0x43, 0x34, 0x50, 0x56, 0x4b, 0x48, 0x34, 0x6b, 0x68, 0x2b, 0x4a, 0x6c, 0x6b, 0x2b, 0x37, 0x31, 0x4f, 0x36, 0x64, 0x36, 0x54, 0x73, 0x32, 0x51, 0x72, 0x55, 0x4b, 0x4f, 0x79, 0x72, 0x55, 0x5a, 0x48, 0x6b, 0x32, 0x45, 0x4f, 0x48, 0x35, 0x6b, 0x51, 0x4d, 0x72, 0x0a, 0x65, 0x79, 0x42, 0x55, 0x7a, 0x51, 0x30, 0x5a, 0x47, 0x73, 0x68, 0x42, 0x4d, 0x6a, 0x54, 0x52, 0x73, 0x4a, 0x6e, 0x68, 0x6b, 0x42, 0x34, 0x42, 0x51, 0x44, 0x61, 0x31, 0x74, 0x2f, 0x71, 0x70, 0x35, 0x58, 0x64, 0x31, 0x70, 0x43, 0x4b, 0x42, 0x58, 0x62, 0x43, 0x4c, 0x35, 0x43, 0x63, 0x53, 0x44, 0x31, 0x53, 0x49, 0x78, 0x74, 0x75, 0x46, 0x64, 0x4f, 0x61, 0x33, 0x77, 0x4e, 0x65, 0x6d, 0x4b, 0x66, 0x72, 0x62, 0x33, 0x76, 0x4f, 0x54, 0x6c, 0x79, 0x63, 0x45, 0x0a, 0x56, 0x53, 0x38, 0x4b, 0x62, 0x7a, 0x66, 0x46, 0x50, 0x52, 0x4f, 0x76, 0x43, 0x67, 0x43, 0x70, 0x4c, 0x49, 0x73, 0x63, 0x67, 0x53, 0x6a, 0x58, 0x37, 0x34, 0x59, 0x78, 0x71, 0x61, 0x37, 0x79, 0x62, 0x72, 0x6a, 0x4b, 0x61, 0x69, 0x78, 0x55, 0x52, 0x39, 0x67, 0x71, 0x69, 0x43, 0x36, 0x76, 0x77, 0x51, 0x63, 0x51, 0x65, 0x4b, 0x77, 0x52, 0x6f, 0x69, 0x39, 0x43, 0x38, 0x44, 0x66, 0x46, 0x38, 0x72, 0x68, 0x57, 0x33, 0x51, 0x35, 0x69, 0x4c, 0x63, 0x34, 0x74, 0x0a, 0x56, 0x6e, 0x35, 0x56, 0x38, 0x71, 0x64, 0x45, 0x39, 0x69, 0x73, 0x79, 0x39, 0x43, 0x4f, 0x6f, 0x52, 0x2b, 0x6a, 0x55, 0x4b, 0x67, 0x46, 0x34, 0x7a, 0x32, 0x72, 0x44, 0x4e, 0x36, 0x69, 0x65, 0x5a, 0x64, 0x49, 0x73, 0x35, 0x66, 0x71, 0x36, 0x4d, 0x38, 0x45, 0x47, 0x52, 0x50, 0x62, 0x6d, 0x7a, 0x36, 0x55, 0x4e, 0x70, 0x32, 0x59, 0x49, 0x4e, 0x49, 0x6f, 0x73, 0x38, 0x77, 0x49, 0x44, 0x41, 0x51, 0x41, 0x42, 0x6f, 0x30, 0x49, 0x77, 0x51, 0x44, 0x41, 0x50, 0x0a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x54, 0x41, 0x44, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x52, 0x39, 0x44, 0x6e, 0x73, 0x53, 0x4c, 0x2f, 0x6e, 0x53, 0x7a, 0x31, 0x32, 0x56, 0x64, 0x67, 0x73, 0x37, 0x47, 0x78, 0x0a, 0x63, 0x4a, 0x58, 0x76, 0x59, 0x58, 0x6f, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x42, 0x41, 0x49, 0x5a, 0x70, 0x73, 0x55, 0x30, 0x76, 0x36, 0x5a, 0x39, 0x50, 0x49, 0x70, 0x4e, 0x6f, 0x6a, 0x75, 0x51, 0x68, 0x6d, 0x61, 0x50, 0x4f, 0x52, 0x56, 0x4d, 0x62, 0x63, 0x30, 0x52, 0x54, 0x41, 0x49, 0x46, 0x68, 0x7a, 0x54, 0x48, 0x6a, 0x43, 0x4c, 0x71, 0x42, 0x0a, 0x4b, 0x43, 0x68, 0x36, 0x6b, 0x72, 0x6d, 0x32, 0x71, 0x4d, 0x68, 0x44, 0x6e, 0x73, 0x63, 0x54, 0x4a, 0x6b, 0x33, 0x43, 0x32, 0x4f, 0x56, 0x56, 0x6e, 0x4a, 0x4a, 0x64, 0x55, 0x4e, 0x6a, 0x43, 0x4b, 0x39, 0x76, 0x2b, 0x35, 0x71, 0x69, 0x58, 0x7a, 0x31, 0x49, 0x36, 0x4a, 0x4d, 0x4e, 0x6c, 0x5a, 0x46, 0x78, 0x48, 0x4d, 0x61, 0x4e, 0x6c, 0x4e, 0x52, 0x50, 0x44, 0x6b, 0x37, 0x6e, 0x33, 0x2b, 0x56, 0x47, 0x58, 0x75, 0x36, 0x54, 0x77, 0x59, 0x6f, 0x66, 0x46, 0x0a, 0x31, 0x67, 0x62, 0x54, 0x6c, 0x34, 0x4d, 0x67, 0x71, 0x58, 0x36, 0x37, 0x74, 0x69, 0x48, 0x43, 0x70, 0x51, 0x32, 0x45, 0x41, 0x4f, 0x48, 0x79, 0x4a, 0x78, 0x43, 0x44, 0x75, 0x74, 0x30, 0x44, 0x67, 0x64, 0x58, 0x64, 0x61, 0x4d, 0x4e, 0x6d, 0x45, 0x4d, 0x6a, 0x52, 0x64, 0x72, 0x53, 0x7a, 0x62, 0x79, 0x6d, 0x65, 0x41, 0x50, 0x6e, 0x43, 0x4b, 0x66, 0x57, 0x78, 0x6b, 0x78, 0x6c, 0x53, 0x61, 0x52, 0x6f, 0x73, 0x54, 0x4b, 0x43, 0x4c, 0x34, 0x42, 0x57, 0x61, 0x0a, 0x4d, 0x53, 0x2f, 0x54, 0x69, 0x4a, 0x56, 0x5a, 0x62, 0x75, 0x58, 0x45, 0x73, 0x31, 0x44, 0x49, 0x46, 0x41, 0x68, 0x4b, 0x6d, 0x34, 0x73, 0x54, 0x67, 0x37, 0x47, 0x6b, 0x63, 0x72, 0x49, 0x37, 0x64, 0x6a, 0x4e, 0x42, 0x33, 0x4e, 0x79, 0x71, 0x70, 0x67, 0x64, 0x76, 0x48, 0x53, 0x51, 0x53, 0x6e, 0x38, 0x68, 0x32, 0x76, 0x53, 0x2f, 0x5a, 0x6a, 0x76, 0x51, 0x73, 0x37, 0x72, 0x66, 0x53, 0x4f, 0x42, 0x41, 0x6b, 0x4e, 0x6c, 0x45, 0x76, 0x34, 0x31, 0x78, 0x64, 0x0a, 0x67, 0x53, 0x47, 0x6e, 0x32, 0x72, 0x74, 0x4f, 0x2f, 0x2b, 0x59, 0x48, 0x71, 0x50, 0x36, 0x35, 0x44, 0x53, 0x64, 0x73, 0x75, 0x33, 0x42, 0x61, 0x56, 0x58, 0x6f, 0x54, 0x36, 0x66, 0x45, 0x71, 0x53, 0x57, 0x6e, 0x48, 0x58, 0x34, 0x64, 0x58, 0x54, 0x45, 0x4e, 0x35, 0x62, 0x54, 0x70, 0x6c, 0x36, 0x54, 0x42, 0x63, 0x51, 0x65, 0x37, 0x72, 0x64, 0x36, 0x56, 0x7a, 0x45, 0x6f, 0x6a, 0x6f, 0x76, 0x33, 0x32, 0x75, 0x35, 0x63, 0x53, 0x6f, 0x48, 0x77, 0x32, 0x4f, 0x0a, 0x48, 0x47, 0x31, 0x51, 0x41, 0x6b, 0x38, 0x6d, 0x47, 0x45, 0x50, 0x65, 0x6a, 0x31, 0x57, 0x46, 0x73, 0x51, 0x73, 0x33, 0x42, 0x57, 0x44, 0x4a, 0x56, 0x54, 0x6b, 0x53, 0x42, 0x4b, 0x45, 0x71, 0x7a, 0x33, 0x45, 0x57, 0x6e, 0x7a, 0x5a, 0x52, 0x53, 0x62, 0x39, 0x77, 0x4f, 0x35, 0x35, 0x6e, 0x6e, 0x50, 0x74, 0x37, 0x65, 0x63, 0x6b, 0x35, 0x48, 0x48, 0x69, 0x73, 0x64, 0x35, 0x46, 0x55, 0x6d, 0x72, 0x68, 0x31, 0x43, 0x6f, 0x46, 0x53, 0x6c, 0x2b, 0x4e, 0x6d, 0x0a, 0x59, 0x57, 0x76, 0x74, 0x50, 0x6a, 0x67, 0x65, 0x6c, 0x6d, 0x46, 0x56, 0x34, 0x5a, 0x46, 0x55, 0x6a, 0x4f, 0x32, 0x4d, 0x4a, 0x42, 0x2b, 0x42, 0x79, 0x52, 0x43, 0x61, 0x63, 0x35, 0x6b, 0x72, 0x46, 0x6b, 0x35, 0x79, 0x41, 0x44, 0x39, 0x55, 0x47, 0x2f, 0x69, 0x4e, 0x75, 0x6f, 0x76, 0x6e, 0x46, 0x4e, 0x61, 0x32, 0x52, 0x55, 0x39, 0x67, 0x37, 0x4a, 0x61, 0x75, 0x77, 0x79, 0x38, 0x43, 0x54, 0x6c, 0x32, 0x64, 0x6c, 0x6b, 0x6c, 0x79, 0x41, 0x4c, 0x4b, 0x72, 0x0a, 0x64, 0x56, 0x77, 0x50, 0x61, 0x46, 0x73, 0x64, 0x5a, 0x63, 0x4a, 0x66, 0x4d, 0x77, 0x38, 0x65, 0x44, 0x2f, 0x41, 0x37, 0x68, 0x76, 0x57, 0x77, 0x54, 0x72, 0x75, 0x63, 0x39, 0x2b, 0x6f, 0x6c, 0x42, 0x64, 0x79, 0x74, 0x6f, 0x70, 0x74, 0x4c, 0x46, 0x77, 0x47, 0x2b, 0x51, 0x74, 0x38, 0x31, 0x49, 0x52, 0x32, 0x74, 0x71, 0x36, 0x37, 0x30, 0x76, 0x36, 0x34, 0x66, 0x47, 0x39, 0x50, 0x69, 0x4f, 0x2f, 0x79, 0x7a, 0x63, 0x6e, 0x4d, 0x63, 0x6d, 0x79, 0x69, 0x51, 0x0a, 0x69, 0x52, 0x4d, 0x39, 0x48, 0x63, 0x45, 0x41, 0x52, 0x77, 0x6d, 0x57, 0x6d, 0x6a, 0x67, 0x62, 0x33, 0x62, 0x48, 0x50, 0x44, 0x63, 0x4b, 0x30, 0x52, 0x50, 0x4f, 0x57, 0x6c, 0x63, 0x34, 0x79, 0x4f, 0x6f, 0x38, 0x30, 0x6e, 0x4f, 0x41, 0x58, 0x78, 0x31, 0x37, 0x4f, 0x72, 0x67, 0x33, 0x62, 0x68, 0x7a, 0x6a, 0x6c, 0x50, 0x31, 0x76, 0x39, 0x6d, 0x78, 0x6e, 0x68, 0x4d, 0x55, 0x46, 0x36, 0x63, 0x4b, 0x6f, 0x6a, 0x61, 0x77, 0x48, 0x68, 0x52, 0x55, 0x7a, 0x4e, 0x0a, 0x6c, 0x4d, 0x34, 0x37, 0x6e, 0x69, 0x33, 0x6e, 0x69, 0x41, 0x49, 0x69, 0x39, 0x47, 0x37, 0x6f, 0x79, 0x4f, 0x7a, 0x57, 0x50, 0x50, 0x4f, 0x35, 0x73, 0x74, 0x64, 0x33, 0x65, 0x71, 0x78, 0x37, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x65, 0x6c, 0x65, 0x6b, 0x6f, 0x6d, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x54, 0x4c, 0x53, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x32, 0x30, 0x32, 0x30, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x51, 0x6a, 0x43, 0x43, 0x41, 0x63, 0x6d, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x4e, 0x6a, 0x71, 0x57, 0x6a, 0x4d, 0x6c, 0x63, 0x73, 0x6c, 0x6a, 0x4e, 0x30, 0x41, 0x46, 0x64, 0x78, 0x65, 0x56, 0x58, 0x41, 0x44, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x6a, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x45, 0x0a, 0x52, 0x54, 0x45, 0x6e, 0x4d, 0x43, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x65, 0x52, 0x47, 0x56, 0x31, 0x64, 0x48, 0x4e, 0x6a, 0x61, 0x47, 0x55, 0x67, 0x56, 0x47, 0x56, 0x73, 0x5a, 0x57, 0x74, 0x76, 0x62, 0x53, 0x42, 0x54, 0x5a, 0x57, 0x4e, 0x31, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x42, 0x48, 0x62, 0x57, 0x4a, 0x49, 0x4d, 0x53, 0x73, 0x77, 0x4b, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x43, 0x4a, 0x55, 0x5a, 0x57, 0x78, 0x6c, 0x0a, 0x61, 0x32, 0x39, 0x74, 0x49, 0x46, 0x4e, 0x6c, 0x59, 0x33, 0x56, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x46, 0x52, 0x4d, 0x55, 0x79, 0x42, 0x46, 0x51, 0x30, 0x4d, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x41, 0x79, 0x4d, 0x44, 0x49, 0x77, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x49, 0x77, 0x4d, 0x44, 0x67, 0x79, 0x4e, 0x54, 0x41, 0x33, 0x4e, 0x44, 0x67, 0x79, 0x4d, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x31, 0x4d, 0x44, 0x67, 0x79, 0x4e, 0x54, 0x49, 0x7a, 0x0a, 0x4e, 0x54, 0x6b, 0x31, 0x4f, 0x56, 0x6f, 0x77, 0x59, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x45, 0x55, 0x78, 0x4a, 0x7a, 0x41, 0x6c, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x48, 0x6b, 0x52, 0x6c, 0x64, 0x58, 0x52, 0x7a, 0x59, 0x32, 0x68, 0x6c, 0x49, 0x46, 0x52, 0x6c, 0x62, 0x47, 0x56, 0x72, 0x62, 0x32, 0x30, 0x67, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x58, 0x4a, 0x70, 0x64, 0x48, 0x6b, 0x67, 0x0a, 0x52, 0x32, 0x31, 0x69, 0x53, 0x44, 0x45, 0x72, 0x4d, 0x43, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x69, 0x56, 0x47, 0x56, 0x73, 0x5a, 0x57, 0x74, 0x76, 0x62, 0x53, 0x42, 0x54, 0x5a, 0x57, 0x4e, 0x31, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x42, 0x55, 0x54, 0x46, 0x4d, 0x67, 0x52, 0x55, 0x4e, 0x44, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x4d, 0x6a, 0x41, 0x79, 0x4d, 0x44, 0x42, 0x32, 0x4d, 0x42, 0x41, 0x47, 0x42, 0x79, 0x71, 0x47, 0x0a, 0x53, 0x4d, 0x34, 0x39, 0x41, 0x67, 0x45, 0x47, 0x42, 0x53, 0x75, 0x42, 0x42, 0x41, 0x41, 0x69, 0x41, 0x32, 0x49, 0x41, 0x42, 0x4d, 0x36, 0x2f, 0x2f, 0x6c, 0x65, 0x6f, 0x76, 0x39, 0x57, 0x71, 0x39, 0x78, 0x43, 0x61, 0x7a, 0x62, 0x7a, 0x52, 0x45, 0x61, 0x4b, 0x39, 0x5a, 0x30, 0x4c, 0x4d, 0x6b, 0x4f, 0x73, 0x56, 0x47, 0x4a, 0x44, 0x5a, 0x6f, 0x73, 0x30, 0x4d, 0x4b, 0x69, 0x58, 0x72, 0x50, 0x6b, 0x2f, 0x4f, 0x74, 0x64, 0x4b, 0x50, 0x44, 0x2f, 0x4d, 0x31, 0x0a, 0x32, 0x6b, 0x4f, 0x4c, 0x41, 0x6f, 0x43, 0x2b, 0x62, 0x31, 0x45, 0x6b, 0x48, 0x51, 0x39, 0x72, 0x4b, 0x38, 0x71, 0x66, 0x77, 0x6d, 0x39, 0x51, 0x4d, 0x75, 0x55, 0x33, 0x49, 0x4c, 0x59, 0x67, 0x2f, 0x34, 0x67, 0x4e, 0x44, 0x32, 0x31, 0x4a, 0x75, 0x39, 0x73, 0x47, 0x70, 0x49, 0x65, 0x51, 0x6b, 0x70, 0x54, 0x30, 0x43, 0x64, 0x44, 0x50, 0x66, 0x38, 0x69, 0x41, 0x43, 0x38, 0x47, 0x58, 0x73, 0x37, 0x73, 0x31, 0x4a, 0x38, 0x6e, 0x43, 0x47, 0x36, 0x4e, 0x43, 0x0a, 0x4d, 0x45, 0x41, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4f, 0x4e, 0x79, 0x7a, 0x47, 0x36, 0x56, 0x6d, 0x55, 0x65, 0x78, 0x35, 0x72, 0x4e, 0x68, 0x54, 0x4e, 0x48, 0x4c, 0x71, 0x2b, 0x4f, 0x36, 0x7a, 0x64, 0x36, 0x66, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x0a, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d, 0x44, 0x41, 0x32, 0x63, 0x41, 0x4d, 0x47, 0x51, 0x43, 0x4d, 0x48, 0x56, 0x53, 0x69, 0x37, 0x65, 0x6b, 0x45, 0x45, 0x2b, 0x75, 0x53, 0x68, 0x43, 0x4c, 0x73, 0x6f, 0x52, 0x62, 0x51, 0x75, 0x48, 0x6d, 0x4b, 0x6a, 0x59, 0x43, 0x32, 0x71, 0x42, 0x75, 0x47, 0x54, 0x38, 0x6c, 0x76, 0x39, 0x70, 0x5a, 0x0a, 0x4d, 0x6f, 0x37, 0x6b, 0x2b, 0x35, 0x44, 0x63, 0x6b, 0x32, 0x54, 0x4f, 0x72, 0x62, 0x52, 0x42, 0x52, 0x32, 0x44, 0x69, 0x7a, 0x36, 0x66, 0x4c, 0x48, 0x67, 0x49, 0x77, 0x4e, 0x30, 0x47, 0x4d, 0x5a, 0x74, 0x39, 0x42, 0x61, 0x39, 0x61, 0x44, 0x41, 0x45, 0x48, 0x39, 0x4c, 0x31, 0x72, 0x33, 0x55, 0x4c, 0x52, 0x6e, 0x30, 0x53, 0x79, 0x6f, 0x63, 0x64, 0x64, 0x44, 0x79, 0x70, 0x77, 0x6e, 0x4a, 0x4a, 0x47, 0x44, 0x53, 0x41, 0x33, 0x50, 0x7a, 0x66, 0x64, 0x55, 0x0a, 0x67, 0x61, 0x2f, 0x73, 0x66, 0x2b, 0x52, 0x6e, 0x32, 0x37, 0x69, 0x51, 0x37, 0x74, 0x30, 0x6c, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x54, 0x65, 0x6c, 0x65, 0x6b, 0x6f, 0x6d, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x54, 0x4c, 0x53, 0x20, 0x52, 0x53, 0x41, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x32, 0x30, 0x32, 0x33, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x46, 0x73, 0x7a, 0x43, 0x43, 0x41, 0x35, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x49, 0x5a, 0x78, 0x55, 0x4c, 0x65, 0x6a, 0x32, 0x37, 0x48, 0x46, 0x33, 0x2b, 0x6b, 0x37, 0x6f, 0x77, 0x33, 0x42, 0x58, 0x6c, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x44, 0x42, 0x6a, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x0a, 0x45, 0x77, 0x4a, 0x45, 0x52, 0x54, 0x45, 0x6e, 0x4d, 0x43, 0x55, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x65, 0x52, 0x47, 0x56, 0x31, 0x64, 0x48, 0x4e, 0x6a, 0x61, 0x47, 0x55, 0x67, 0x56, 0x47, 0x56, 0x73, 0x5a, 0x57, 0x74, 0x76, 0x62, 0x53, 0x42, 0x54, 0x5a, 0x57, 0x4e, 0x31, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x42, 0x48, 0x62, 0x57, 0x4a, 0x49, 0x4d, 0x53, 0x73, 0x77, 0x4b, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x43, 0x4a, 0x55, 0x0a, 0x5a, 0x57, 0x78, 0x6c, 0x61, 0x32, 0x39, 0x74, 0x49, 0x46, 0x4e, 0x6c, 0x59, 0x33, 0x56, 0x79, 0x61, 0x58, 0x52, 0x35, 0x49, 0x46, 0x52, 0x4d, 0x55, 0x79, 0x42, 0x53, 0x55, 0x30, 0x45, 0x67, 0x55, 0x6d, 0x39, 0x76, 0x64, 0x43, 0x41, 0x79, 0x4d, 0x44, 0x49, 0x7a, 0x4d, 0x42, 0x34, 0x58, 0x44, 0x54, 0x49, 0x7a, 0x4d, 0x44, 0x4d, 0x79, 0x4f, 0x44, 0x45, 0x79, 0x4d, 0x54, 0x59, 0x30, 0x4e, 0x56, 0x6f, 0x58, 0x44, 0x54, 0x51, 0x34, 0x4d, 0x44, 0x4d, 0x79, 0x0a, 0x4e, 0x7a, 0x49, 0x7a, 0x4e, 0x54, 0x6b, 0x31, 0x4f, 0x56, 0x6f, 0x77, 0x59, 0x7a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x52, 0x45, 0x55, 0x78, 0x4a, 0x7a, 0x41, 0x6c, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x48, 0x6b, 0x52, 0x6c, 0x64, 0x58, 0x52, 0x7a, 0x59, 0x32, 0x68, 0x6c, 0x49, 0x46, 0x52, 0x6c, 0x62, 0x47, 0x56, 0x72, 0x62, 0x32, 0x30, 0x67, 0x55, 0x32, 0x56, 0x6a, 0x64, 0x58, 0x4a, 0x70, 0x0a, 0x64, 0x48, 0x6b, 0x67, 0x52, 0x32, 0x31, 0x69, 0x53, 0x44, 0x45, 0x72, 0x4d, 0x43, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x77, 0x77, 0x69, 0x56, 0x47, 0x56, 0x73, 0x5a, 0x57, 0x74, 0x76, 0x62, 0x53, 0x42, 0x54, 0x5a, 0x57, 0x4e, 0x31, 0x63, 0x6d, 0x6c, 0x30, 0x65, 0x53, 0x42, 0x55, 0x54, 0x46, 0x4d, 0x67, 0x55, 0x6c, 0x4e, 0x42, 0x49, 0x46, 0x4a, 0x76, 0x62, 0x33, 0x51, 0x67, 0x4d, 0x6a, 0x41, 0x79, 0x4d, 0x7a, 0x43, 0x43, 0x41, 0x69, 0x49, 0x77, 0x0a, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68, 0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x49, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x67, 0x6f, 0x43, 0x67, 0x67, 0x49, 0x42, 0x41, 0x4f, 0x30, 0x31, 0x6f, 0x59, 0x47, 0x41, 0x38, 0x38, 0x74, 0x4b, 0x61, 0x56, 0x76, 0x43, 0x2b, 0x31, 0x47, 0x44, 0x72, 0x69, 0x62, 0x39, 0x34, 0x57, 0x37, 0x7a, 0x67, 0x52, 0x4a, 0x39, 0x63, 0x55, 0x44, 0x2f, 0x68, 0x33, 0x56, 0x43, 0x0a, 0x4b, 0x53, 0x48, 0x74, 0x67, 0x56, 0x49, 0x73, 0x33, 0x78, 0x4c, 0x42, 0x47, 0x59, 0x53, 0x4a, 0x77, 0x62, 0x33, 0x46, 0x4b, 0x4e, 0x58, 0x56, 0x53, 0x32, 0x78, 0x45, 0x31, 0x6b, 0x7a, 0x62, 0x42, 0x35, 0x5a, 0x4b, 0x56, 0x58, 0x72, 0x4b, 0x4e, 0x6f, 0x49, 0x45, 0x4e, 0x71, 0x69, 0x6c, 0x2f, 0x43, 0x66, 0x32, 0x53, 0x66, 0x48, 0x56, 0x63, 0x70, 0x36, 0x52, 0x2b, 0x53, 0x50, 0x57, 0x63, 0x48, 0x75, 0x37, 0x39, 0x5a, 0x76, 0x42, 0x37, 0x4a, 0x50, 0x50, 0x0a, 0x47, 0x65, 0x70, 0x6c, 0x66, 0x6f, 0x68, 0x77, 0x6f, 0x48, 0x50, 0x38, 0x39, 0x76, 0x2b, 0x31, 0x56, 0x6d, 0x4c, 0x68, 0x63, 0x32, 0x6f, 0x30, 0x6d, 0x44, 0x36, 0x43, 0x75, 0x4b, 0x79, 0x56, 0x55, 0x2f, 0x51, 0x42, 0x6f, 0x43, 0x63, 0x48, 0x63, 0x71, 0x4d, 0x41, 0x55, 0x36, 0x44, 0x6b, 0x73, 0x71, 0x75, 0x44, 0x4f, 0x46, 0x63, 0x7a, 0x4a, 0x5a, 0x53, 0x66, 0x76, 0x6b, 0x67, 0x64, 0x6d, 0x4f, 0x47, 0x6a, 0x75, 0x70, 0x35, 0x63, 0x7a, 0x51, 0x52, 0x78, 0x0a, 0x55, 0x58, 0x31, 0x31, 0x65, 0x4b, 0x76, 0x7a, 0x57, 0x61, 0x72, 0x45, 0x34, 0x47, 0x43, 0x2b, 0x6a, 0x34, 0x4e, 0x53, 0x75, 0x48, 0x55, 0x61, 0x51, 0x54, 0x58, 0x74, 0x76, 0x50, 0x4d, 0x36, 0x59, 0x2b, 0x6d, 0x70, 0x46, 0x45, 0x58, 0x58, 0x35, 0x6c, 0x4c, 0x52, 0x62, 0x74, 0x4c, 0x65, 0x76, 0x4f, 0x50, 0x31, 0x43, 0x7a, 0x76, 0x6d, 0x34, 0x4d, 0x53, 0x39, 0x51, 0x32, 0x51, 0x54, 0x70, 0x73, 0x37, 0x30, 0x6d, 0x44, 0x64, 0x73, 0x69, 0x70, 0x57, 0x6f, 0x0a, 0x6c, 0x38, 0x68, 0x48, 0x44, 0x2f, 0x42, 0x65, 0x45, 0x49, 0x76, 0x6e, 0x48, 0x52, 0x7a, 0x2b, 0x73, 0x54, 0x75, 0x67, 0x42, 0x54, 0x4e, 0x6f, 0x42, 0x55, 0x47, 0x43, 0x77, 0x51, 0x4d, 0x72, 0x41, 0x63, 0x6a, 0x6e, 0x6a, 0x30, 0x32, 0x72, 0x36, 0x4c, 0x58, 0x32, 0x7a, 0x57, 0x74, 0x45, 0x74, 0x65, 0x66, 0x64, 0x69, 0x2b, 0x7a, 0x71, 0x4a, 0x62, 0x51, 0x41, 0x49, 0x6c, 0x64, 0x4e, 0x73, 0x4c, 0x47, 0x79, 0x4d, 0x63, 0x45, 0x57, 0x7a, 0x76, 0x2f, 0x39, 0x0a, 0x46, 0x49, 0x53, 0x33, 0x52, 0x2f, 0x71, 0x79, 0x38, 0x58, 0x44, 0x65, 0x32, 0x34, 0x74, 0x73, 0x4e, 0x6c, 0x69, 0x6b, 0x66, 0x4c, 0x4d, 0x52, 0x30, 0x63, 0x4e, 0x33, 0x66, 0x31, 0x2b, 0x32, 0x4a, 0x65, 0x41, 0x4e, 0x78, 0x64, 0x4b, 0x7a, 0x2b, 0x62, 0x69, 0x34, 0x64, 0x39, 0x73, 0x33, 0x63, 0x58, 0x46, 0x48, 0x34, 0x32, 0x41, 0x59, 0x54, 0x79, 0x53, 0x32, 0x64, 0x54, 0x64, 0x34, 0x75, 0x61, 0x4e, 0x69, 0x72, 0x37, 0x33, 0x4a, 0x63, 0x6f, 0x34, 0x76, 0x0a, 0x7a, 0x4c, 0x75, 0x75, 0x32, 0x2b, 0x51, 0x56, 0x55, 0x68, 0x6b, 0x48, 0x4d, 0x2f, 0x74, 0x71, 0x74, 0x79, 0x31, 0x4c, 0x6b, 0x43, 0x69, 0x43, 0x63, 0x2f, 0x34, 0x59, 0x69, 0x7a, 0x57, 0x4e, 0x32, 0x36, 0x63, 0x45, 0x61, 0x72, 0x37, 0x71, 0x77, 0x55, 0x30, 0x32, 0x4f, 0x78, 0x59, 0x32, 0x6b, 0x54, 0x4c, 0x76, 0x74, 0x6b, 0x43, 0x4a, 0x6b, 0x55, 0x50, 0x67, 0x38, 0x71, 0x4b, 0x72, 0x42, 0x43, 0x37, 0x6d, 0x38, 0x6b, 0x77, 0x4f, 0x46, 0x6a, 0x51, 0x67, 0x0a, 0x72, 0x49, 0x66, 0x42, 0x4c, 0x58, 0x37, 0x4a, 0x5a, 0x6b, 0x63, 0x58, 0x46, 0x42, 0x47, 0x6b, 0x38, 0x2f, 0x65, 0x68, 0x4a, 0x49, 0x6d, 0x72, 0x32, 0x42, 0x72, 0x49, 0x6f, 0x56, 0x79, 0x78, 0x6f, 0x2f, 0x65, 0x4d, 0x62, 0x63, 0x67, 0x42, 0x79, 0x55, 0x2f, 0x4a, 0x37, 0x4d, 0x54, 0x38, 0x72, 0x46, 0x45, 0x7a, 0x30, 0x63, 0x69, 0x44, 0x30, 0x63, 0x6d, 0x66, 0x48, 0x64, 0x52, 0x48, 0x4e, 0x43, 0x6b, 0x2b, 0x79, 0x37, 0x41, 0x4f, 0x2b, 0x6f, 0x4d, 0x4c, 0x0a, 0x4b, 0x46, 0x6a, 0x6c, 0x4b, 0x64, 0x77, 0x2f, 0x66, 0x4b, 0x69, 0x66, 0x79, 0x62, 0x59, 0x4b, 0x75, 0x36, 0x62, 0x6f, 0x52, 0x68, 0x59, 0x50, 0x6c, 0x75, 0x56, 0x37, 0x35, 0x47, 0x70, 0x36, 0x53, 0x47, 0x31, 0x32, 0x6d, 0x41, 0x57, 0x6c, 0x33, 0x47, 0x30, 0x65, 0x51, 0x68, 0x35, 0x43, 0x32, 0x68, 0x72, 0x67, 0x55, 0x76, 0x65, 0x31, 0x67, 0x38, 0x41, 0x61, 0x65, 0x33, 0x67, 0x31, 0x4c, 0x44, 0x6a, 0x31, 0x48, 0x2f, 0x31, 0x4a, 0x6f, 0x79, 0x37, 0x53, 0x0a, 0x57, 0x57, 0x4f, 0x2f, 0x67, 0x4c, 0x43, 0x4d, 0x6b, 0x33, 0x50, 0x4c, 0x4e, 0x61, 0x61, 0x5a, 0x6c, 0x53, 0x4a, 0x68, 0x5a, 0x51, 0x4e, 0x67, 0x2b, 0x79, 0x2b, 0x54, 0x53, 0x2f, 0x71, 0x61, 0x6e, 0x49, 0x41, 0x37, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x59, 0x7a, 0x42, 0x68, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x64, 0x42, 0x67, 0x4e, 0x56, 0x0a, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x74, 0x71, 0x65, 0x58, 0x67, 0x6a, 0x31, 0x30, 0x68, 0x5a, 0x76, 0x33, 0x50, 0x4a, 0x2b, 0x54, 0x6d, 0x70, 0x56, 0x35, 0x64, 0x56, 0x4b, 0x4d, 0x62, 0x55, 0x63, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54, 0x41, 0x51, 0x48, 0x2f, 0x42, 0x41, 0x55, 0x77, 0x41, 0x77, 0x45, 0x42, 0x2f, 0x7a, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x4d, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x53, 0x32, 0x0a, 0x70, 0x35, 0x65, 0x43, 0x50, 0x58, 0x53, 0x46, 0x6d, 0x2f, 0x63, 0x38, 0x6e, 0x35, 0x4f, 0x61, 0x6c, 0x58, 0x6c, 0x31, 0x55, 0x6f, 0x78, 0x74, 0x52, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x77, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x67, 0x45, 0x41, 0x71, 0x4d, 0x78, 0x68, 0x70, 0x72, 0x35, 0x31, 0x6e, 0x68, 0x56, 0x51, 0x70, 0x47, 0x76, 0x37, 0x71, 0x48, 0x42, 0x46, 0x66, 0x4c, 0x70, 0x2b, 0x0a, 0x73, 0x56, 0x72, 0x38, 0x57, 0x79, 0x50, 0x36, 0x43, 0x6e, 0x66, 0x34, 0x6d, 0x48, 0x47, 0x43, 0x44, 0x47, 0x33, 0x67, 0x58, 0x6b, 0x61, 0x71, 0x6b, 0x2f, 0x51, 0x65, 0x6f, 0x4d, 0x50, 0x68, 0x6b, 0x39, 0x74, 0x4c, 0x72, 0x62, 0x4b, 0x6d, 0x58, 0x61, 0x75, 0x77, 0x31, 0x47, 0x4c, 0x4c, 0x58, 0x72, 0x74, 0x6d, 0x39, 0x53, 0x33, 0x75, 0x6c, 0x30, 0x41, 0x38, 0x59, 0x75, 0x74, 0x65, 0x31, 0x68, 0x54, 0x57, 0x6a, 0x4f, 0x4b, 0x57, 0x69, 0x30, 0x46, 0x70, 0x0a, 0x6b, 0x7a, 0x58, 0x6d, 0x75, 0x5a, 0x6c, 0x72, 0x59, 0x72, 0x53, 0x68, 0x46, 0x32, 0x59, 0x30, 0x70, 0x6d, 0x74, 0x6a, 0x78, 0x72, 0x6c, 0x4f, 0x38, 0x69, 0x4c, 0x70, 0x57, 0x41, 0x31, 0x57, 0x51, 0x64, 0x48, 0x36, 0x44, 0x45, 0x72, 0x77, 0x4d, 0x38, 0x30, 0x37, 0x75, 0x32, 0x30, 0x68, 0x4f, 0x71, 0x36, 0x4f, 0x63, 0x72, 0x58, 0x44, 0x53, 0x76, 0x76, 0x70, 0x66, 0x65, 0x57, 0x78, 0x6d, 0x34, 0x62, 0x75, 0x34, 0x75, 0x42, 0x39, 0x74, 0x50, 0x63, 0x79, 0x0a, 0x2f, 0x53, 0x4b, 0x45, 0x38, 0x59, 0x58, 0x4a, 0x4e, 0x33, 0x6e, 0x70, 0x74, 0x54, 0x2b, 0x2f, 0x58, 0x4f, 0x52, 0x30, 0x73, 0x6f, 0x38, 0x52, 0x59, 0x67, 0x44, 0x64, 0x47, 0x47, 0x61, 0x68, 0x32, 0x58, 0x73, 0x6a, 0x58, 0x2f, 0x47, 0x4f, 0x31, 0x57, 0x66, 0x6f, 0x56, 0x4e, 0x70, 0x62, 0x4f, 0x6d, 0x73, 0x32, 0x62, 0x2f, 0x6d, 0x42, 0x73, 0x54, 0x4e, 0x48, 0x4d, 0x33, 0x64, 0x41, 0x2b, 0x56, 0x4b, 0x71, 0x33, 0x64, 0x53, 0x44, 0x7a, 0x34, 0x56, 0x34, 0x0a, 0x6d, 0x5a, 0x71, 0x54, 0x75, 0x58, 0x4e, 0x6e, 0x51, 0x6b, 0x59, 0x52, 0x49, 0x65, 0x72, 0x2b, 0x43, 0x71, 0x6b, 0x62, 0x47, 0x6d, 0x56, 0x70, 0x73, 0x34, 0x2b, 0x75, 0x46, 0x72, 0x62, 0x32, 0x53, 0x31, 0x61, 0x79, 0x4c, 0x66, 0x6d, 0x6c, 0x79, 0x4f, 0x77, 0x37, 0x59, 0x71, 0x50, 0x74, 0x61, 0x39, 0x42, 0x4f, 0x31, 0x55, 0x41, 0x4a, 0x70, 0x42, 0x2b, 0x59, 0x31, 0x7a, 0x71, 0x6c, 0x6b, 0x6c, 0x6b, 0x67, 0x35, 0x4c, 0x42, 0x39, 0x7a, 0x56, 0x74, 0x7a, 0x0a, 0x61, 0x4c, 0x31, 0x74, 0x78, 0x4b, 0x49, 0x54, 0x44, 0x6d, 0x63, 0x5a, 0x75, 0x49, 0x31, 0x43, 0x66, 0x6d, 0x77, 0x4d, 0x6d, 0x6d, 0x36, 0x67, 0x4a, 0x43, 0x33, 0x56, 0x52, 0x52, 0x76, 0x63, 0x78, 0x41, 0x49, 0x55, 0x2f, 0x6f, 0x56, 0x62, 0x5a, 0x5a, 0x66, 0x4b, 0x54, 0x70, 0x42, 0x51, 0x43, 0x48, 0x70, 0x43, 0x4e, 0x66, 0x6e, 0x71, 0x77, 0x6d, 0x62, 0x55, 0x2b, 0x41, 0x47, 0x75, 0x48, 0x72, 0x53, 0x2b, 0x77, 0x36, 0x6a, 0x76, 0x2f, 0x6e, 0x61, 0x61, 0x0a, 0x6f, 0x71, 0x59, 0x66, 0x52, 0x76, 0x61, 0x45, 0x37, 0x66, 0x7a, 0x62, 0x7a, 0x73, 0x51, 0x43, 0x7a, 0x6e, 0x64, 0x49, 0x4c, 0x49, 0x79, 0x79, 0x37, 0x4d, 0x4d, 0x41, 0x6f, 0x2b, 0x77, 0x73, 0x56, 0x52, 0x6a, 0x42, 0x66, 0x68, 0x6e, 0x75, 0x34, 0x53, 0x2f, 0x79, 0x72, 0x59, 0x4f, 0x62, 0x6e, 0x71, 0x73, 0x5a, 0x33, 0x38, 0x61, 0x4b, 0x4c, 0x34, 0x78, 0x33, 0x35, 0x62, 0x63, 0x46, 0x37, 0x44, 0x76, 0x42, 0x37, 0x4c, 0x36, 0x47, 0x73, 0x34, 0x61, 0x38, 0x0a, 0x77, 0x50, 0x66, 0x63, 0x35, 0x2b, 0x70, 0x62, 0x72, 0x72, 0x4c, 0x4d, 0x74, 0x54, 0x57, 0x47, 0x53, 0x39, 0x44, 0x69, 0x50, 0x37, 0x62, 0x59, 0x2b, 0x41, 0x34, 0x41, 0x37, 0x6c, 0x33, 0x6a, 0x39, 0x34, 0x31, 0x59, 0x2f, 0x38, 0x2b, 0x4c, 0x4e, 0x2b, 0x6c, 0x6a, 0x58, 0x32, 0x37, 0x33, 0x43, 0x58, 0x45, 0x32, 0x77, 0x68, 0x4a, 0x64, 0x56, 0x2f, 0x4c, 0x49, 0x74, 0x4d, 0x33, 0x7a, 0x37, 0x67, 0x4c, 0x66, 0x45, 0x64, 0x78, 0x71, 0x75, 0x56, 0x65, 0x45, 0x0a, 0x48, 0x56, 0x6c, 0x4e, 0x6a, 0x4d, 0x37, 0x49, 0x44, 0x69, 0x50, 0x43, 0x74, 0x79, 0x61, 0x61, 0x45, 0x42, 0x52, 0x78, 0x2f, 0x70, 0x4f, 0x79, 0x69, 0x72, 0x69, 0x41, 0x38, 0x41, 0x34, 0x51, 0x6e, 0x74, 0x4f, 0x6f, 0x55, 0x41, 0x77, 0x33, 0x67, 0x69, 0x2f, 0x71, 0x34, 0x49, 0x71, 0x64, 0x34, 0x53, 0x77, 0x35, 0x2f, 0x37, 0x57, 0x30, 0x63, 0x77, 0x44, 0x6b, 0x39, 0x30, 0x69, 0x6d, 0x63, 0x36, 0x79, 0x2f, 0x73, 0x74, 0x35, 0x33, 0x42, 0x49, 0x65, 0x30, 0x0a, 0x6f, 0x38, 0x32, 0x62, 0x4e, 0x53, 0x51, 0x33, 0x2b, 0x70, 0x43, 0x54, 0x45, 0x34, 0x46, 0x43, 0x78, 0x70, 0x67, 0x6d, 0x64, 0x54, 0x64, 0x6d, 0x51, 0x52, 0x43, 0x73, 0x75, 0x2f, 0x57, 0x55, 0x34, 0x38, 0x49, 0x78, 0x4b, 0x36, 0x33, 0x6e, 0x49, 0x31, 0x62, 0x4d, 0x4e, 0x53, 0x57, 0x53, 0x73, 0x31, 0x41, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x46, 0x49, 0x52, 0x4d, 0x41, 0x50, 0x52, 0x4f, 0x46, 0x45, 0x53, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x52, 0x4f, 0x4f, 0x54, 0x2d, 0x41, 0x20, 0x57, 0x45, 0x42, 0x0a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x65, 0x6a, 0x43, 0x43, 0x41, 0x67, 0x43, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x51, 0x4d, 0x5a, 0x63, 0x68, 0x37, 0x61, 0x2b, 0x4a, 0x51, 0x6e, 0x38, 0x31, 0x51, 0x59, 0x65, 0x68, 0x5a, 0x31, 0x5a, 0x4d, 0x62, 0x54, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x7a, 0x42, 0x75, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x46, 0x0a, 0x55, 0x7a, 0x45, 0x63, 0x4d, 0x42, 0x6f, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x54, 0x52, 0x6d, 0x6c, 0x79, 0x62, 0x57, 0x46, 0x77, 0x63, 0x6d, 0x39, 0x6d, 0x5a, 0x58, 0x4e, 0x70, 0x62, 0x32, 0x35, 0x68, 0x62, 0x43, 0x42, 0x54, 0x51, 0x54, 0x45, 0x59, 0x4d, 0x42, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x59, 0x51, 0x77, 0x50, 0x56, 0x6b, 0x46, 0x55, 0x52, 0x56, 0x4d, 0x74, 0x51, 0x54, 0x59, 0x79, 0x4e, 0x6a, 0x4d, 0x30, 0x4d, 0x44, 0x59, 0x34, 0x0a, 0x4d, 0x53, 0x63, 0x77, 0x4a, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x35, 0x47, 0x53, 0x56, 0x4a, 0x4e, 0x51, 0x56, 0x42, 0x53, 0x54, 0x30, 0x5a, 0x46, 0x55, 0x30, 0x6c, 0x50, 0x54, 0x6b, 0x46, 0x4d, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x46, 0x4a, 0x50, 0x54, 0x31, 0x51, 0x74, 0x51, 0x53, 0x42, 0x58, 0x52, 0x55, 0x49, 0x77, 0x48, 0x68, 0x63, 0x4e, 0x4d, 0x6a, 0x49, 0x77, 0x4e, 0x44, 0x41, 0x32, 0x4d, 0x44, 0x6b, 0x77, 0x4d, 0x54, 0x4d, 0x32, 0x0a, 0x57, 0x68, 0x63, 0x4e, 0x4e, 0x44, 0x63, 0x77, 0x4d, 0x7a, 0x4d, 0x78, 0x4d, 0x44, 0x6b, 0x77, 0x4d, 0x54, 0x4d, 0x32, 0x57, 0x6a, 0x42, 0x75, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4a, 0x46, 0x55, 0x7a, 0x45, 0x63, 0x4d, 0x42, 0x6f, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x54, 0x52, 0x6d, 0x6c, 0x79, 0x62, 0x57, 0x46, 0x77, 0x63, 0x6d, 0x39, 0x6d, 0x5a, 0x58, 0x4e, 0x70, 0x62, 0x32, 0x35, 0x68, 0x0a, 0x62, 0x43, 0x42, 0x54, 0x51, 0x54, 0x45, 0x59, 0x4d, 0x42, 0x59, 0x47, 0x41, 0x31, 0x55, 0x45, 0x59, 0x51, 0x77, 0x50, 0x56, 0x6b, 0x46, 0x55, 0x52, 0x56, 0x4d, 0x74, 0x51, 0x54, 0x59, 0x79, 0x4e, 0x6a, 0x4d, 0x30, 0x4d, 0x44, 0x59, 0x34, 0x4d, 0x53, 0x63, 0x77, 0x4a, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x42, 0x35, 0x47, 0x53, 0x56, 0x4a, 0x4e, 0x51, 0x56, 0x42, 0x53, 0x54, 0x30, 0x5a, 0x46, 0x55, 0x30, 0x6c, 0x50, 0x54, 0x6b, 0x46, 0x4d, 0x0a, 0x49, 0x45, 0x4e, 0x42, 0x49, 0x46, 0x4a, 0x50, 0x54, 0x31, 0x51, 0x74, 0x51, 0x53, 0x42, 0x58, 0x52, 0x55, 0x49, 0x77, 0x64, 0x6a, 0x41, 0x51, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x49, 0x42, 0x42, 0x67, 0x55, 0x72, 0x67, 0x51, 0x51, 0x41, 0x49, 0x67, 0x4e, 0x69, 0x41, 0x41, 0x52, 0x48, 0x55, 0x2b, 0x6f, 0x73, 0x45, 0x61, 0x52, 0x33, 0x78, 0x79, 0x72, 0x71, 0x38, 0x39, 0x5a, 0x66, 0x65, 0x39, 0x4d, 0x45, 0x6b, 0x56, 0x7a, 0x36, 0x0a, 0x69, 0x4d, 0x59, 0x69, 0x75, 0x59, 0x4d, 0x51, 0x59, 0x6e, 0x65, 0x45, 0x4d, 0x79, 0x33, 0x70, 0x41, 0x34, 0x6a, 0x55, 0x34, 0x44, 0x50, 0x33, 0x37, 0x58, 0x63, 0x73, 0x53, 0x6d, 0x44, 0x71, 0x35, 0x47, 0x2b, 0x74, 0x62, 0x62, 0x54, 0x34, 0x54, 0x49, 0x71, 0x6b, 0x35, 0x42, 0x2f, 0x4b, 0x36, 0x6b, 0x38, 0x34, 0x53, 0x69, 0x36, 0x43, 0x63, 0x79, 0x76, 0x48, 0x5a, 0x70, 0x73, 0x4b, 0x6a, 0x45, 0x43, 0x63, 0x66, 0x49, 0x72, 0x32, 0x38, 0x6a, 0x6c, 0x67, 0x0a, 0x73, 0x74, 0x37, 0x4c, 0x37, 0x4c, 0x6a, 0x6b, 0x62, 0x2b, 0x71, 0x62, 0x58, 0x62, 0x64, 0x54, 0x6b, 0x42, 0x67, 0x79, 0x56, 0x63, 0x55, 0x67, 0x74, 0x35, 0x53, 0x6a, 0x59, 0x7a, 0x42, 0x68, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2f, 0x77, 0x51, 0x46, 0x4d, 0x41, 0x4d, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6a, 0x42, 0x42, 0x67, 0x77, 0x46, 0x6f, 0x41, 0x55, 0x6b, 0x2b, 0x46, 0x44, 0x0a, 0x59, 0x31, 0x77, 0x38, 0x6e, 0x64, 0x59, 0x6e, 0x38, 0x31, 0x4c, 0x73, 0x46, 0x37, 0x4b, 0x70, 0x72, 0x79, 0x7a, 0x33, 0x64, 0x76, 0x67, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4f, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4a, 0x50, 0x68, 0x51, 0x32, 0x4e, 0x63, 0x50, 0x4a, 0x33, 0x57, 0x4a, 0x2f, 0x4e, 0x53, 0x37, 0x42, 0x65, 0x79, 0x71, 0x61, 0x38, 0x73, 0x39, 0x33, 0x62, 0x34, 0x4d, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x0a, 0x2f, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x42, 0x6a, 0x41, 0x4b, 0x42, 0x67, 0x67, 0x71, 0x68, 0x6b, 0x6a, 0x4f, 0x50, 0x51, 0x51, 0x44, 0x41, 0x77, 0x4e, 0x6f, 0x41, 0x44, 0x42, 0x6c, 0x41, 0x6a, 0x41, 0x64, 0x66, 0x4b, 0x52, 0x37, 0x77, 0x34, 0x6c, 0x31, 0x4d, 0x2b, 0x45, 0x37, 0x71, 0x55, 0x57, 0x2f, 0x52, 0x75, 0x6e, 0x70, 0x6f, 0x64, 0x33, 0x4a, 0x49, 0x68, 0x61, 0x33, 0x52, 0x78, 0x45, 0x4c, 0x32, 0x4a, 0x71, 0x36, 0x38, 0x63, 0x67, 0x4c, 0x0a, 0x63, 0x46, 0x42, 0x54, 0x41, 0x70, 0x46, 0x77, 0x68, 0x56, 0x6d, 0x70, 0x48, 0x71, 0x54, 0x6d, 0x36, 0x69, 0x4d, 0x78, 0x6f, 0x41, 0x41, 0x43, 0x4d, 0x51, 0x44, 0x39, 0x34, 0x76, 0x69, 0x7a, 0x72, 0x78, 0x61, 0x35, 0x48, 0x6e, 0x50, 0x45, 0x6c, 0x75, 0x50, 0x42, 0x4d, 0x42, 0x6e, 0x59, 0x66, 0x75, 0x62, 0x44, 0x6c, 0x39, 0x34, 0x63, 0x54, 0x37, 0x69, 0x4a, 0x4c, 0x7a, 0x50, 0x72, 0x53, 0x41, 0x38, 0x5a, 0x39, 0x34, 0x64, 0x47, 0x58, 0x53, 0x61, 0x51, 0x0a, 0x70, 0x59, 0x58, 0x46, 0x75, 0x58, 0x71, 0x55, 0x50, 0x6f, 0x65, 0x6f, 0x76, 0x51, 0x41, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a,}; +unsigned int include_ca_bundle_crt_len = 228633; diff --git a/vere/pkg/vere/ca_bundle/ca_bundle.h b/vere/pkg/vere/ca_bundle/ca_bundle.h new file mode 100644 index 0000000..614d4e8 --- /dev/null +++ b/vere/pkg/vere/ca_bundle/ca_bundle.h @@ -0,0 +1,5 @@ +#ifndef include_ca_bundle_crt_H +#define include_ca_bundle_crt_H +extern unsigned char include_ca_bundle_crt[]; +extern unsigned int include_ca_bundle_crt_len; +#endif diff --git a/vere/pkg/vere/ca_bundle/ca_bundle.sh b/vere/pkg/vere/ca_bundle/ca_bundle.sh new file mode 100755 index 0000000..c28c9be --- /dev/null +++ b/vere/pkg/vere/ca_bundle/ca_bundle.sh @@ -0,0 +1,47 @@ +#!/bin/bash +function xxd_i() { + var=$1 + src_file=$2 + dst_h_file=$3 + dst_c_file=$4 + + # Generate `.h` file. + echo "Generating ${dst_h_file}..." + echo "#ifndef ${var}_H" > $dst_h_file + echo "#define ${var}_H" >> $dst_h_file + echo "extern unsigned char $var[];" >> $dst_h_file + echo "extern unsigned int ${var}_len;" >> $dst_h_file + echo '#endif' >> $dst_h_file + + # Generate `.c` file. + echo "Generating ${dst_c_file}..." + printf '#include "%s"\n' $dst_h_file > $dst_c_file + echo "unsigned char $var[] = {" >> $dst_c_file + cnt=0 + while IFS='' read line + do + for byte in $line + do + echo -n " 0x$byte," >> $dst_c_file + cnt=$((cnt+1)) + done + # <() is syntax for Bash process substitution. + done < <(od -An -v -tx1 $src_file) + echo "};" >> $dst_c_file + echo "unsigned int ${var}_len = $cnt;" >> $dst_c_file +} + +version=2024-07-02 +src_remote=https://curl.se/ca/cacert-${version}.pem +src_file=ca_bundle.pem +dst_h_file=ca_bundle.h +dst_c_file=ca_bundle.c + +rm $dst_h_file $dst_c_file + +echo "Downloading ca bundle from ${src_remote}" +curl -o $src_file $src_remote + +xxd_i include_ca_bundle_crt $src_file $dst_h_file $dst_c_file + +rm $src_file diff --git a/vere/pkg/vere/dawn.c b/vere/pkg/vere/dawn.c new file mode 100644 index 0000000..1ae0289 --- /dev/null +++ b/vere/pkg/vere/dawn.c @@ -0,0 +1,487 @@ +/// @file +/// +/// Ethereum-integrated pre-boot validation. + +#include "vere.h" + +#include "curl/curl.h" +#include "noun.h" +#include "uv.h" + +/* _dawn_oct_to_buf(): +octs to uv_buf_t +*/ +static uv_buf_t +_dawn_oct_to_buf(u3_noun oct) +{ + if ( c3n == u3a_is_cat(u3h(oct)) ) { + exit(1); + } + + c3_w len_w = u3h(oct); + c3_y* buf_y = c3_malloc(1 + len_w); + buf_y[len_w] = 0; + + u3r_bytes(0, len_w, buf_y, u3t(oct)); + + u3z(oct); + return uv_buf_init((void*)buf_y, len_w); +} + +/* _dawn_buf_to_oct(): uv_buf_t to +octs +*/ +static u3_noun +_dawn_buf_to_oct(uv_buf_t buf_u) +{ + u3_noun len = u3i_words(1, (c3_w*)&buf_u.len); + + if ( c3n == u3a_is_cat(len) ) { + exit(1); + } + + return u3nc(len, u3i_bytes(buf_u.len, (const c3_y*)buf_u.base)); +} + +/* _dawn_post_json(): POST JSON to url_c +*/ +static uv_buf_t +_dawn_post_json(c3_c* url_c, uv_buf_t lod_u) +{ + CURL *curl; + CURLcode result; + long cod_l; + struct curl_slist* hed_u = 0; + + uv_buf_t buf_u = uv_buf_init(c3_malloc(1), 0); + + if ( !(curl = curl_easy_init()) ) { + u3l_log("failed to initialize libcurl"); + exit(1); + } + + hed_u = curl_slist_append(hed_u, "Accept: application/json"); + hed_u = curl_slist_append(hed_u, "Content-Type: application/json"); + hed_u = curl_slist_append(hed_u, "charsets: utf-8"); + + // XX require TLS, pin default cert? + // + u3K.ssl_curl_f(curl); + curl_easy_setopt(curl, CURLOPT_URL, url_c); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, king_curl_alloc); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&buf_u); + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, hed_u); + + // note: must be terminated! + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, lod_u.base); + + result = curl_easy_perform(curl); + curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &cod_l); + + // XX retry? + if ( CURLE_OK != result ) { + u3l_log("failed to fetch %s: %s", + url_c, curl_easy_strerror(result)); + exit(1); + } + if ( 300 <= cod_l ) { + u3l_log("error fetching %s: HTTP %ld", url_c, cod_l); + exit(1); + } + + curl_easy_cleanup(curl); + curl_slist_free_all(hed_u); + + return buf_u; +} + +/* _dawn_get_jam(): GET a jammed noun from url_c +*/ +static u3_noun +_dawn_get_jam(c3_c* url_c) +{ + CURL *curl; + CURLcode result; + long cod_l; + + uv_buf_t buf_u = uv_buf_init(c3_malloc(1), 0); + + if ( !(curl = curl_easy_init()) ) { + u3l_log("failed to initialize libcurl"); + exit(1); + } + + // XX require TLS, pin default cert? + // + u3K.ssl_curl_f(curl); + curl_easy_setopt(curl, CURLOPT_URL, url_c); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, king_curl_alloc); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&buf_u); + + result = curl_easy_perform(curl); + curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &cod_l); + + // XX retry? + if ( CURLE_OK != result ) { + u3l_log("failed to fetch %s: %s", + url_c, curl_easy_strerror(result)); + exit(1); + } + if ( 300 <= cod_l ) { + u3l_log("error fetching %s: HTTP %ld", url_c, cod_l); + exit(1); + } + + curl_easy_cleanup(curl); + + // throw away the length from the octs + // + u3_noun octs = _dawn_buf_to_oct(buf_u); + u3_noun jammed = u3k(u3t(octs)); + u3z(octs); + + c3_free(buf_u.base); + + return u3ke_cue(jammed); +} + +/* _dawn_eth_rpc(): ethereum JSON RPC with request/response as +octs +*/ +static u3_noun +_dawn_eth_rpc(c3_c* url_c, u3_noun oct) +{ + uv_buf_t buf_u = _dawn_post_json(url_c, _dawn_oct_to_buf(oct)); + u3_noun pro = _dawn_buf_to_oct(buf_u); + + c3_free(buf_u.base); + + return pro; +} + +/* _dawn_fail(): pre-boot validation failed +*/ +static void +_dawn_fail(u3_noun who, u3_noun rac, u3_noun sas) +{ + u3_noun how = u3dc("scot", 'p', u3k(who)); + c3_c* how_c = u3r_string(u3k(how)); + + c3_c* rac_c; + + switch (rac) { + default: u3_assert(0); + case c3__czar: { + rac_c = "galaxy"; + break; + } + case c3__king: { + rac_c = "star"; + break; + } + case c3__duke: { + rac_c = "planet"; + break; + } + case c3__earl: { + rac_c = "moon"; + break; + } + case c3__pawn: { + rac_c = "comet"; + break; + } + } + + u3l_log("boot: invalid keys for %s '%s'", rac_c, how_c); + + // XX deconstruct sas, print helpful error messages + while ( u3_nul != sas ) { + u3m_p("pre-boot error", u3h(sas)); + sas = u3t(sas); + } + + u3z(how); + c3_free(how_c); + exit(1); +} + +/* _dawn_need_unit(): produce a value or print error and exit +*/ +static u3_noun +_dawn_need_unit(u3_noun nit, c3_c* msg_c) +{ + if ( u3_nul == nit ) { + u3l_log("%s", msg_c); + exit(1); + } + else { + u3_noun pro = u3k(u3t(nit)); + u3z(nit); + return pro; + } +} + +/* _dawn_turf(): override contract domains with -H +*/ +static u3_noun +_dawn_turf(c3_c* dns_c) +{ + u3_noun tuf; + + u3_noun par = u3v_wish("thos:de-purl:html"); + u3_noun dns = u3i_string(dns_c); + u3_noun rul = u3dc("rush", u3k(dns), u3k(par)); + + if ( (u3_nul == rul) || (c3n == u3h(u3t(rul))) ) { + u3l_log("boot: invalid domain specified with -H %s", dns_c); + exit(1); + } + else { + u3l_log("boot: overriding network domains with %s", dns_c); + u3_noun dom = u3t(u3t(rul)); + tuf = u3nc(u3k(dom), u3_nul); + } + + u3z(par); u3z(dns); u3z(rul); + + return tuf; +} + +/* _dawn_sponsor(): retrieve sponsor from point +*/ +static u3_noun +_dawn_sponsor(u3_noun who, u3_noun rac, u3_noun pot) +{ + u3_noun uni = u3dc("sponsor:dawn", u3k(who), u3k(pot)); + + if ( c3n == u3h(uni) ) { + _dawn_fail(who, rac, u3nc(u3t(uni), u3_nul)); + return u3_none; + } + + u3_noun pos = u3k(u3t(uni)); + + u3z(who); u3z(rac); u3z(pot); u3z(uni); + + return pos; +} + +/* u3_dawn_vent(): validated boot event +*/ +u3_noun +u3_dawn_vent(u3_noun ship, u3_noun feed, u3_noun* rift) +{ + u3_noun fed, pos, pon, zar, tuf; + + u3_noun rank = u3do("clan:title", u3k(ship)); + + c3_c* url_c = ( 0 != u3_Host.ops_u.eth_c ) ? + u3_Host.ops_u.eth_c : + "https://roller.urbit.org/v1/azimuth"; + + { + // +point:azimuth: on-chain state + // + u3_noun pot; + + if ( c3__pawn == rank ) { + // irrelevant, just bunt +point + // + pot = u3v_wish("*point:azimuth"); + } + else if ( c3__earl == rank ) { + pot = u3v_wish("*point:azimuth"); + } + else { + u3l_log("boot: retrieving %s's public keys", + u3_Host.ops_u.who_c); + + { + u3_noun oct = u3do("point:give:dawn", u3k(ship)); + u3_noun luh = _dawn_eth_rpc(url_c, u3k(oct)); + + pot = _dawn_need_unit(u3dc("point:take:dawn", u3k(ship), u3k(luh)), + "boot: failed to retrieve public keys"); + u3z(oct); u3z(luh); + } + } + + // +live:dawn: network state + // XX actually make request + // + u3_noun liv = u3_nul; + // u3_noun liv = _dawn_get_json(parent, /some/url) + + u3l_log("boot: verifying keys"); + + if ( c3y == u3a_is_cell(feed) && + c3n == u3a_is_cell(u3h(feed)) && + c3__earl == rank ) { + // bails, won't return + u3l_log("boot: incorrect keyfile please use updated format"); + _dawn_fail(ship, rank, u3_nul); + return u3_none; + } + + // (each feed:jael (lest error=term)) + // + fed = u3dq("veri:dawn", u3k(ship), u3k(feed), u3k(pot), u3k(liv)); + + if ( c3n == u3h(fed) ) { + // bails, won't return + _dawn_fail(ship, rank, u3t(fed)); + return u3_none; + } + + u3_assert(c3y == u3du(u3h(u3t(fed))) && u3h(u3h(u3t(fed))) == 2); + *rift = u3k(u3h(u3t(u3t(u3t(fed))))); + + u3l_log("boot: getting sponsor"); + pos = _dawn_sponsor(u3k(ship), u3k(rank), u3k(pot)); + u3z(pot); u3z(liv); + } + + + // (map ship [=rift =life =pass]): galaxy table + // + { + u3l_log("boot: retrieving galaxy table"); + + u3_noun oct = u3v_wish("czar:give:dawn"); + u3_noun raz = _dawn_eth_rpc(url_c, u3k(oct)); + + zar = _dawn_need_unit(u3do("czar:take:dawn", u3k(raz)), + "boot: failed to retrieve galaxy table"); + u3z(oct); u3z(raz); + } + + // (list turf): ames domains + // + if ( 0 != u3_Host.ops_u.dns_c ) { + tuf = _dawn_turf(u3_Host.ops_u.dns_c); + } + else { + u3l_log("boot: retrieving network domains"); + + u3_noun oct = u3v_wish("turf:give:dawn"); + u3_noun fut = _dawn_eth_rpc(url_c, u3k(oct)); + + tuf = _dawn_need_unit(u3do("turf:take:dawn", u3k(fut)), + "boot: failed to retrieve network domains"); + u3z(oct); u3z(fut); + } + + pon = u3_nul; + while (c3__czar != rank) { + u3_noun son; + // print message + // + { + u3_noun who = u3dc("scot", 'p', u3k(pos)); + c3_c* who_c = u3r_string(who); + u3l_log("boot: retrieving keys for sponsor %s", who_c); + u3z(who); + c3_free(who_c); + } + + // retrieve +point:azimuth of pos (sponsor of ship) + // + { + u3_noun oct = u3do("point:give:dawn", u3k(pos)); + u3_noun luh = _dawn_eth_rpc(url_c, u3k(oct)); + + son = _dawn_need_unit(u3dc("point:take:dawn", u3k(pos), u3k(luh)), + "boot: failed to retrieve sponsor keys"); + // append to sponsor chain list + // + pon = u3nc(u3nc(u3k(pos), u3k(son)), pon); + u3z(oct); u3z(luh); + } + + // find next sponsor + // + u3z(ship); u3z(rank); + ship = pos; + rank = u3do("clan:title", u3k(ship)); + pos = _dawn_sponsor(u3k(ship), u3k(rank), u3k(son)); + + u3z(son); + } + + // [%dawn seed sponsors galaxies domains block eth-url snap] + // + //NOTE blocknum of 0 is fine because jael ignores it. + // should probably be removed from dawn event. + u3_noun ven = u3nc(c3__dawn, + u3nq(u3k(u3t(fed)), pon, zar, u3nt(tuf, 0, u3_nul))); + + u3z(fed); u3z(rank); u3z(pos); u3z(ship); u3z(feed); + + return ven; +} + +/* _dawn_come(): mine a comet under a list of stars +*/ +static u3_noun +_dawn_come(u3_noun stars) +{ + u3_noun seed; + { + c3_w eny_w[16]; + u3_noun eny; + + c3_rand(eny_w); + eny = u3i_words(16, eny_w); + + u3l_log("boot: mining a comet. May take up to an hour."); + u3l_log("If you want to boot faster, get an Urbit identity."); + + seed = u3dc("come:dawn", u3k(stars), u3k(eny)); + u3z(eny); + } + + { + /* [[%2 ~] who=ship ryf=rift kyz=(list [lyf=life key=ring])] */ + u3_noun who = u3dc("scot", 'p', u3k(u3h(u3t(seed)))); + c3_c* who_c = u3r_string(who); + + u3l_log("boot: found comet %s", who_c); + + // enable to print and save comet private key for future reuse + // +#if 0 + { + u3_noun key = u3dc("scot", c3__uw, u3qe_jam(seed)); + c3_c* key_c = u3r_string(key); + + u3l_log("boot: comet private key\n %s", key_c); + + { + c3_c pat_c[64]; + snprintf(pat_c, 64, "%s.key", who_c + 1); + + FILE* fil_u = c3_fopen(pat_c, "w"); + fprintf(fil_u, "%s\n", key_c); + fclose(fil_u); + } + + c3_free(key_c); + u3z(key); + } +#endif + + c3_free(who_c); + u3z(who); + } + + u3z(stars); + + return seed; +} + +/* u3_dawn_come(): mine a comet under a list of stars we download +*/ +u3_noun +u3_dawn_come() +{ + return _dawn_come( + _dawn_get_jam("https://bootstrap.urbit.org/comet-stars.jam")); +} diff --git a/vere/pkg/vere/db/lmdb.c b/vere/pkg/vere/db/lmdb.c new file mode 100644 index 0000000..0a754e2 --- /dev/null +++ b/vere/pkg/vere/db/lmdb.c @@ -0,0 +1,639 @@ +/// @file + +#include "db/lmdb.h" + +#include + +#include "c3/c3.h" +#include "noun.h" + +/* mdb_logerror(): writes an error message and lmdb error code to f. +*/ +void mdb_logerror(FILE* f, int err, const char* fmt, ...); + +/* mdb_get_filesize(): gets the size of a lmdb database file on disk. +*/ +intmax_t mdb_get_filesize(mdb_filehandle_t han_u); + +// lmdb api wrapper +// +// this module implements a simple persistence api on top of lmdb. +// outside of its use of c3 type definitions, this module has no +// dependence on anything u3, or on any library besides lmdb itself. +// +// urbit requires very little from a persist store -- it merely +// needs to store variable-length buffers in: +// +// - a metadata store with c3_c (unsigned char) keys +// - an event store with contiguous c3_d (uint64_t) keys +// +// supported operations are as follows +// +// - open/close an environment +// - read/save metadata +// - read the first and last event numbers +// - read/save ranges of events +// + +/* u3_lmdb_init(): open lmdb at [pax_c], mmap up to [siz_i]. +*/ +MDB_env* +u3_lmdb_init(const c3_c* pax_c, size_t siz_i) +{ + MDB_env* env_u; + c3_w ret_w; + + if ( (ret_w = mdb_env_create(&env_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: init fail"); + return 0; + } + + // Our databases have two tables: META and EVENTS + // + if ( (ret_w = mdb_env_set_maxdbs(env_u, 2)) ) { + mdb_logerror(stderr, ret_w, "lmdb: failed to set number of databases"); + // XX dispose env_u + // + return 0; + } + + if ( (ret_w = mdb_env_set_mapsize(env_u, siz_i)) ) { + mdb_logerror(stderr, ret_w, "lmdb: failed to set database size"); + // XX dispose env_u + // + return 0; + } + + { +# if defined(U3_OS_no_ubc) + c3_w ops_w = MDB_WRITEMAP; +# else + c3_w ops_w = 0; +# endif + + if ( (ret_w = mdb_env_open(env_u, pax_c, ops_w, 0664)) ) { + mdb_logerror(stderr, ret_w, "lmdb: failed to open event log"); + // XX dispose env_u + // + return 0; + } + } + + return env_u; +} + +/* u3_lmdb_exit(): close lmdb. +*/ +void +u3_lmdb_exit(MDB_env* env_u) +{ + mdb_env_close(env_u); +} + +/* u3_lmdb_stat(): print env stats. +*/ +void +u3_lmdb_stat(MDB_env* env_u, FILE* fil_u) +{ + size_t siz_i; + + fprintf(fil_u, "lmdb info:\n"); + + { + MDB_stat mst_u; + MDB_envinfo mei_u; + + (void)mdb_env_stat(env_u, &mst_u); + (void)mdb_env_info(env_u, &mei_u); + + fprintf(fil_u, " map size: %zu\n", mei_u.me_mapsize); + fprintf(fil_u, " page size: %u\n", mst_u.ms_psize); + fprintf(fil_u, " max pages: %zu\n", mei_u.me_mapsize / mst_u.ms_psize); + fprintf(fil_u, " number of pages used: %zu\n", mei_u.me_last_pgno+1); + fprintf(fil_u, " last transaction ID: %zu\n", mei_u.me_last_txnid); + fprintf(fil_u, " max readers: %u\n", mei_u.me_maxreaders); + fprintf(fil_u, " number of readers used: %u\n", mei_u.me_numreaders); + + siz_i = mst_u.ms_psize * (mei_u.me_last_pgno+1); + } + + { + mdb_filehandle_t han_u; + mdb_env_get_fd(env_u, &han_u); + + intmax_t dis_i = mdb_get_filesize(han_u); + + if ( siz_i != dis_i ) { + fprintf(fil_u, "MISMATCH:\n"); + } + + fprintf(fil_u, " file size (page): %zu\n", siz_i); + fprintf(fil_u, " file size (stat): %jd\n", dis_i); + } +} + +/* u3_lmdb_gulf(): read first and last event numbers. +*/ +c3_o +u3_lmdb_gulf(MDB_env* env_u, c3_d* low_d, c3_d* hig_d) +{ + MDB_txn* txn_u; + MDB_dbi mdb_u; + c3_w ret_w; + + // create a read-only transaction. + // + // XX why no MDB_RDONLY? + // + if ( (ret_w = mdb_txn_begin(env_u, 0, 0, &txn_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: gulf: txn_begin fail"); + return c3n; + } + + // open the database in the transaction + // + { + c3_w ops_w = MDB_CREATE | MDB_INTEGERKEY; + + if ( (ret_w = mdb_dbi_open(txn_u, "EVENTS", ops_w, &mdb_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: gulf: dbi_open fail"); + // XX confirm + // + mdb_txn_abort(txn_u); + return c3n; + } + } + + { + MDB_cursor* cur_u; + MDB_val key_u; + MDB_val val_u; + c3_d fir_d, las_d; + + // creates a cursor to point to the last event + // + if ( (ret_w = mdb_cursor_open(txn_u, mdb_u, &cur_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: gulf: cursor_open fail"); + // XX confirm + // + mdb_txn_abort(txn_u); + return c3n; + } + + // read with the cursor from the start of the database + // + ret_w = mdb_cursor_get(cur_u, &key_u, &val_u, MDB_FIRST); + + if ( MDB_NOTFOUND == ret_w ) { + *low_d = 0; + *hig_d = 0; + mdb_cursor_close(cur_u); + mdb_txn_abort(txn_u); + return c3y; + } + else if ( ret_w ) { + mdb_logerror(stderr, ret_w, "lmdb: gulf: head fail"); + mdb_cursor_close(cur_u); + mdb_txn_abort(txn_u); + return c3n; + } + else { + fir_d = c3_sift_chub(key_u.mv_data); + } + + // read with the cursor from the end of the database + // + ret_w = mdb_cursor_get(cur_u, &key_u, &val_u, MDB_LAST); + + if ( !ret_w ) { + las_d = c3_sift_chub(key_u.mv_data); + } + + // clean up unconditionally, we're done + // + mdb_cursor_close(cur_u); + mdb_txn_abort(txn_u); + + if ( ret_w ) { + mdb_logerror(stderr, ret_w, "lmdb: gulf: last fail"); + return c3n; + } + else { + *low_d = fir_d; + *hig_d = las_d; + return c3y; + } + } +} + +/* u3_lmdb_read(): read [len_d] events starting at [eve_d]. +*/ +c3_o +u3_lmdb_read(MDB_env* env_u, + void* ptr_v, + c3_d eve_d, + c3_d len_d, + c3_o (*read_f)(void*, c3_d, size_t, void*)) +{ + MDB_txn* txn_u; + MDB_dbi mdb_u; + c3_w ret_w; + + // create a read-only transaction. + // + if ( (ret_w = mdb_txn_begin(env_u, 0, MDB_RDONLY, &txn_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: read txn_begin fail"); + return c3n; + } + + // open the database in the transaction + // + { + c3_w ops_w = MDB_CREATE | MDB_INTEGERKEY; + + if ( (ret_w = mdb_dbi_open(txn_u, "EVENTS", ops_w, &mdb_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: read: dbi_open fail"); + // XX confirm + // + mdb_txn_abort(txn_u); + return c3n; + } + } + + + { + MDB_cursor* cur_u; + MDB_val val_u; + // set the initial key to [eve_d] + // + MDB_val key_u = { .mv_size = sizeof(c3_d), .mv_data = &eve_d }; + + // creates a cursor to iterate over keys starting at [eve_d] + // + if ( (ret_w = mdb_cursor_open(txn_u, mdb_u, &cur_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: read: cursor_open fail"); + // XX confirm + // + mdb_txn_abort(txn_u); + return c3n; + } + + // set the cursor to the position of [eve_d] + // + if ( (ret_w = mdb_cursor_get(cur_u, &key_u, &val_u, MDB_SET_KEY)) ) { + mdb_logerror(stderr, ret_w, "lmdb: read: initial cursor_get failed at %" PRIu64, eve_d); + mdb_cursor_close(cur_u); + // XX confirm + // + mdb_txn_abort(txn_u); + return c3n; + } + + // load up to [len_d] events, iterating forward across the cursor. + // + { + c3_o ret_o = c3y; + c3_d i_d; + + for ( i_d = 0; (ret_w != MDB_NOTFOUND) && (i_d < len_d); ++i_d) { + c3_d cur_d = (eve_d + i_d); + if ( sizeof(c3_d) != key_u.mv_size ) { + fprintf(stderr, "lmdb: read: invalid key size\r\n"); + ret_o = c3n; + break; + } + + // sanity check: ensure contiguous event numbers + // + if ( c3_sift_chub(key_u.mv_data) != cur_d ) { + fprintf(stderr, "lmdb: read gap: expected %" PRIu64 + ", received %" PRIu64 "\r\n", + cur_d, + *(c3_d*)key_u.mv_data); + ret_o = c3n; + break; + } + + // invoke read callback with [val_u] + // + if ( c3n == read_f(ptr_v, cur_d, val_u.mv_size, val_u.mv_data) ) { + ret_o = c3n; + break; + } + + // read the next event from the cursor + // + if ( (ret_w = mdb_cursor_get(cur_u, &key_u, &val_u, MDB_NEXT)) + && (MDB_NOTFOUND != ret_w) ) + { + mdb_logerror(stderr, ret_w, "lmdb: read: error"); + ret_o = c3n; + break; + } + } + + mdb_cursor_close(cur_u); + + // read-only transactions are aborted when complete + // + mdb_txn_abort(txn_u); + + return ret_o; + } + } +} + +/* u3_lmdb_save(): save [len_d] events starting at [eve_d]. +*/ +c3_o +u3_lmdb_save(MDB_env* env_u, + c3_d eve_d, // first event + c3_d len_d, // number of events + void** byt_p, // array of bytes + size_t* siz_i) // array of lengths +{ + MDB_txn* txn_u; + MDB_dbi mdb_u; + c3_w ret_w; + + // create a write transaction + // + if ( (ret_w = mdb_txn_begin(env_u, 0, 0, &txn_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: write: txn_begin fail"); + return c3n; + } + + // opens the database in the transaction + // + { + c3_w ops_w = MDB_CREATE | MDB_INTEGERKEY; + + if ( (ret_w = mdb_dbi_open(txn_u, "EVENTS", ops_w, &mdb_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: write: dbi_open fail"); + mdb_txn_abort(txn_u); + return c3n; + } + } + + // write every event in the batch + // + { + c3_w ops_w = MDB_NOOVERWRITE; + c3_d las_d = (eve_d + len_d); + c3_d key_d, i_d; + + for ( i_d = 0; i_d < len_d; ++i_d) { + key_d = eve_d + i_d; + + { + MDB_val key_u = { .mv_size = sizeof(c3_d), .mv_data = &key_d }; + MDB_val val_u = { .mv_size = siz_i[i_d], .mv_data = byt_p[i_d] }; + + if ( (ret_w = mdb_put(txn_u, mdb_u, &key_u, &val_u, ops_w)) ) { + fprintf(stderr, "lmdb: write failed on event %" PRIu64 "\r\n", key_d); + mdb_txn_abort(txn_u); + return c3n; + } + } + } + } + + // commit transaction + // + if ( (ret_w = mdb_txn_commit(txn_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: write failed"); + return c3n; + } + + return c3y; +} + +/* u3_lmdb_read_meta(): read by string from the META db. +*/ +void +u3_lmdb_read_meta(MDB_env* env_u, + void* ptr_v, + const c3_c* key_c, + void (*read_f)(void*, ssize_t, void*)) +{ + MDB_txn* txn_u; + MDB_dbi mdb_u; + c3_w ret_w; + + // create a read transaction + // + if ( (ret_w = mdb_txn_begin(env_u, 0, MDB_RDONLY, &txn_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: meta read: txn_begin fail"); + read_f(ptr_v, -1, 0); + return; + } + + // open the database in the transaction + // + if ( (ret_w = mdb_dbi_open(txn_u, "META", 0, &mdb_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: meta read: dbi_open fail"); + mdb_txn_abort(txn_u); + read_f(ptr_v, -1, 0); + return; + } + + // read by string key, invoking callback with result + { + MDB_val key_u = { .mv_size = strlen(key_c), .mv_data = (void*)key_c }; + MDB_val val_u; + + if ( (ret_w = mdb_get(txn_u, mdb_u, &key_u, &val_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: read failed"); + mdb_txn_abort(txn_u); + read_f(ptr_v, -1, 0); + return; + } + else { + read_f(ptr_v, val_u.mv_size, val_u.mv_data); + + // read-only transactions are aborted when complete + // + mdb_txn_abort(txn_u); + } + } +} + +/* u3_lmdb_save_meta(): save by string into the META db. +*/ +c3_o +u3_lmdb_save_meta(MDB_env* env_u, + const c3_c* key_c, + size_t val_i, + void* val_p) +{ + MDB_txn* txn_u; + MDB_dbi mdb_u; + c3_w ret_w; + + // create a write transaction + // + if ( (ret_w = mdb_txn_begin(env_u, 0, 0, &txn_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: meta write: txn_begin fail"); + return c3n; + } + + // opens the database in the transaction + // + if ( (ret_w = mdb_dbi_open(txn_u, "META", MDB_CREATE, &mdb_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: meta write: dbi_open fail"); + mdb_txn_abort(txn_u); + return c3n; + } + + // put value by string key + // + { + MDB_val key_u = { .mv_size = strlen(key_c), .mv_data = (void*)key_c }; + MDB_val val_u = { .mv_size = val_i, .mv_data = val_p }; + + if ( (ret_w = mdb_put(txn_u, mdb_u, &key_u, &val_u, 0)) ) { + mdb_logerror(stderr, ret_w, "lmdb: write failed"); + mdb_txn_abort(txn_u); + return c3n; + } + } + + // commit txn + // + if ( (ret_w = mdb_txn_commit(txn_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: meta write: commit failed"); + return c3n; + } + + return c3y; +} + +/* u3_lmdb_walk_init(): initialize db iterator. +*/ +c3_o +u3_lmdb_walk_init(MDB_env* env_u, + u3_lmdb_walk* itr_u, + c3_d nex_d, + c3_d las_d) +{ + // XX assumes little-endian + // + MDB_val key_u = { .mv_size = sizeof(c3_d), .mv_data = &nex_d }; + MDB_val val_u; + c3_w ops_w, ret_w; + + itr_u->red_o = c3n; + itr_u->nex_d = nex_d; + itr_u->las_d = las_d; + + // create a read-only transaction. + // + ops_w = MDB_RDONLY; + if ( (ret_w = mdb_txn_begin(env_u, 0, ops_w, &itr_u->txn_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: read txn_begin fail"); + return c3n; + } + // open the database in the transaction + // + ops_w = MDB_CREATE | MDB_INTEGERKEY; + if ( (ret_w = mdb_dbi_open(itr_u->txn_u, "EVENTS", ops_w, &itr_u->mdb_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: read: dbi_open fail"); + // XX confirm + // + mdb_txn_abort(itr_u->txn_u); + return c3n; + } + + // creates a cursor to iterate over keys starting at [eve_d] + // + if ( (ret_w = mdb_cursor_open(itr_u->txn_u, itr_u->mdb_u, &itr_u->cur_u)) ) { + mdb_logerror(stderr, ret_w, "lmdb: read: cursor_open fail"); + // XX confirm + // + mdb_txn_abort(itr_u->txn_u); + return c3n; + } + + // set the cursor to the position of [eve_d] + // + ops_w = MDB_SET_KEY; + if ( (ret_w = mdb_cursor_get(itr_u->cur_u, &key_u, &val_u, ops_w)) ) { + mdb_logerror(stderr, ret_w, "lmdb: read: initial cursor_get failed"); + fprintf(stderr, " at %" PRIu64 "\r\n", nex_d); + mdb_cursor_close(itr_u->cur_u); + // XX confirm + // + mdb_txn_abort(itr_u->txn_u); + return c3n; + } + + return c3y; +} + +/* u3_lmdb_walk_next(): synchronously read next event from iterator. +*/ +c3_o +u3_lmdb_walk_next(u3_lmdb_walk* itr_u, size_t* len_i, void** buf_v) +{ + MDB_val key_u, val_u; + c3_w ret_w, ops_w; + + u3_assert( itr_u->nex_d <= itr_u->las_d ); + + ops_w = ( c3y == itr_u->red_o ) ? MDB_NEXT : MDB_GET_CURRENT; + if ( (ret_w = mdb_cursor_get(itr_u->cur_u, &key_u, &val_u, ops_w)) ) { + mdb_logerror(stderr, ret_w, "lmdb: walk error"); + return c3n; + } + + // sanity check: ensure contiguous event numbers + // + if ( c3_sift_chub(key_u.mv_data) != itr_u->nex_d ) { + fprintf(stderr, "lmdb: read gap: expected %" PRIu64 + ", received %" PRIu64 "\r\n", + itr_u->nex_d, + c3_sift_chub(key_u.mv_data)); + return c3n; + } + + *len_i = val_u.mv_size; + *buf_v = val_u.mv_data; + + itr_u->nex_d++; + itr_u->red_o = c3y; + + return c3y; +} + +/* u3_lmdb_walk_done(): close iterator. +*/ +void +u3_lmdb_walk_done(u3_lmdb_walk* itr_u) +{ + mdb_cursor_close(itr_u->cur_u); + mdb_txn_abort(itr_u->txn_u); +} + +/* mdb_logerror(): writes an error message and lmdb error code to f. +*/ +void mdb_logerror(FILE* f, int err, const char* fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vfprintf(f, fmt, ap); + va_end(ap); + fprintf(f, ": %s\r\n", mdb_strerror(err)); +} + +#ifndef U3_OS_windows + +/* mdb_get_filesize(): gets the size of a lmdb database file on disk. + */ +intmax_t mdb_get_filesize(mdb_filehandle_t han_u) +{ + struct stat sat_u; + fstat(han_u, &sat_u); + return (intmax_t)sat_u.st_size; +} + +#endif diff --git a/vere/pkg/vere/db/lmdb.h b/vere/pkg/vere/db/lmdb.h new file mode 100644 index 0000000..e630cf4 --- /dev/null +++ b/vere/pkg/vere/db/lmdb.h @@ -0,0 +1,94 @@ +/// @file + +#ifndef U3_VERE_DB_LMDB_H +#define U3_VERE_DB_LMDB_H + +#include "c3/c3.h" +#include "lmdb/lmdb.h" + + /* lmdb api wrapper + */ + /* u3_lmdb_walk: event iterator + */ + typedef struct _u3_lmdb_walk { + MDB_txn* txn_u; // transaction handle + MDB_dbi mdb_u; // db handle + MDB_cursor* cur_u; // db cursor + c3_o red_o; // have we read from this yet? + c3_d nex_d; // next event number + c3_d las_d; // final event number, inclusive + } u3_lmdb_walk; + + /* u3_lmdb_init(): open lmdb at [pax_c], mmap up to [siz_i]. + */ + MDB_env* + u3_lmdb_init(const c3_c* pax_c, size_t siz_i); + + /* u3_lmdb_exit(): close lmdb. + */ + void + u3_lmdb_exit(MDB_env* env_u); + + /* u3_lmdb_stat(): print env stats. + */ + void + u3_lmdb_stat(MDB_env* env_u, FILE* fil_u); + + /* u3_lmdb_gulf(): read first and last event numbers. + */ + c3_o + u3_lmdb_gulf(MDB_env* env_u, c3_d* low_d, c3_d* hig_d); + + /* u3_lmdb_read(): read [len_d] events starting at [eve_d]. + */ + c3_o + u3_lmdb_read(MDB_env* env_u, + void* ptr_v, + c3_d eve_d, + c3_d len_d, + c3_o (*read_f)(void*, c3_d, size_t , void*)); + + /* u3_lmdb_save(): save [len_d] events starting at [eve_d]. + */ + c3_o + u3_lmdb_save(MDB_env* env_u, + c3_d eve_d, + c3_d len_d, + void** byt_p, + size_t* siz_i); + + /* u3_lmdb_read_meta(): read by string from the META db. + */ + void + u3_lmdb_read_meta(MDB_env* env_u, + void* ptr_v, + const c3_c* key_c, + void (*read_f)(void*, ssize_t, void*)); + + /* u3_lmdb_save_meta(): save by string into the META db. + */ + c3_o + u3_lmdb_save_meta(MDB_env* env_u, + const c3_c* key_c, + size_t val_i, + void* val_p); + + /* u3_lmdb_walk_init(): initialize db iterator. + */ + c3_o + u3_lmdb_walk_init(MDB_env* env_u, + u3_lmdb_walk* itr_u, + c3_d nex_d, + c3_d las_d); + + /* u3_lmdb_walk_next(): synchronously read next event from iterator. + */ + c3_o + u3_lmdb_walk_next(u3_lmdb_walk* itr_u, size_t* len_i, void** buf_v); + + /* u3_lmdb_walk_done(): close iterator. + */ + void + u3_lmdb_walk_done(u3_lmdb_walk* itr_u); + +#endif /* ifndef U3_VERE_DB_LMDB_H */ diff --git a/vere/pkg/vere/disk.c b/vere/pkg/vere/disk.c new file mode 100644 index 0000000..19a03b5 --- /dev/null +++ b/vere/pkg/vere/disk.c @@ -0,0 +1,2147 @@ +/// @file + +#include "noun.h" +#include "events.h" +#include "vere.h" +#include "version.h" +#include "db/lmdb.h" +#include + +#include "migrate.h" +#include "v4.h" + +struct _u3_disk_walk { + u3_lmdb_walk itr_u; + u3_disk* log_u; + c3_o liv_o; +}; + +#undef VERBOSE_DISK +#undef DISK_TRACE_JAM +#undef DISK_TRACE_CUE + +/* _disk_commit_done(): commit complete. + */ +static void +_disk_commit_done(u3_disk* log_u) +{ + c3_d eve_d = log_u->sav_u.eve_d; + c3_w len_w = log_u->sav_u.len_w; + c3_o ret_o = log_u->sav_u.ret_o; + +#ifdef VERBOSE_DISK + c3_c* msg_c = ( c3y == ret_o ) ? "complete" : "failed"; + + if ( 1 == len_w ) { + fprintf(stderr, "disk: (%" PRIu64 "): commit: %s\r\n", eve_d, msg_c); + } + else { + fprintf(stderr, "disk: (%" PRIu64 "-%" PRIu64 "): commit: %s\r\n", + eve_d, + eve_d + (len_w - 1), + msg_c); + } +#endif + + if ( c3y == ret_o ) { + log_u->dun_d += len_w; + } + + if ( log_u->sav_u.don_f ) { + log_u->sav_u.don_f(log_u->sav_u.ptr_v, eve_d + (len_w - 1), ret_o); + } + + { + u3_feat* fet_u = log_u->put_u.ext_u; + + while ( fet_u && (fet_u->eve_d <= log_u->dun_d) ) { + log_u->put_u.ext_u = fet_u->nex_u; + c3_free(fet_u->hun_y); + c3_free(fet_u); + fet_u = log_u->put_u.ext_u; + } + } + + if ( !log_u->put_u.ext_u ) { + log_u->put_u.ent_u = 0; + } +} + +static void +_disk_commit(u3_disk* log_u); + +/* _disk_commit_after_cb(): on the main thread, finish write +*/ +static void +_disk_commit_after_cb(uv_work_t* ted_u, c3_i sas_i) +{ + u3_disk* log_u = ted_u->data; + + log_u->sav_u.ted_o = c3n; + + if ( UV_ECANCELED != sas_i ) { + _disk_commit_done(log_u); + _disk_commit(log_u); + } +} + +/* _disk_commit_cb(): off the main thread, write event-batch. +*/ +static void +_disk_commit_cb(uv_work_t* ted_u) +{ + u3_disk* log_u = ted_u->data; + + log_u->sav_u.ret_o = u3_lmdb_save(log_u->mdb_u, + log_u->sav_u.eve_d, + log_u->sav_u.len_w, + (void**)log_u->sav_u.byt_y, + log_u->sav_u.siz_i); +} + +/* _disk_commit_start(): queue async event-batch write. +*/ +static void +_disk_commit_start(u3_disk* log_u) +{ + u3_assert( c3n == log_u->sav_u.ted_o ); + log_u->sav_u.ted_o = c3y; + + // queue asynchronous work to happen on another thread + // + uv_queue_work(u3L, &log_u->sav_u.ted_u, _disk_commit_cb, + _disk_commit_after_cb); +} + +/* u3_disk_etch(): serialize an event for persistence. RETAIN [eve] +*/ +size_t +u3_disk_etch(u3_disk* log_u, + u3_noun eve, + c3_l mug_l, + c3_y** out_y) +{ + size_t len_i; + c3_y* dat_y; +#ifdef DISK_TRACE_JAM + u3t_event_trace("disk etch", 'B'); +#endif + + // XX check version number in log_u + // XX needs api redesign to limit allocations + // + { + u3_atom mat = u3qe_jam(eve); + c3_w len_w = u3r_met(3, mat); + + len_i = 4 + len_w; + dat_y = c3_malloc(len_i); + + dat_y[0] = mug_l & 0xff; + dat_y[1] = (mug_l >> 8) & 0xff; + dat_y[2] = (mug_l >> 16) & 0xff; + dat_y[3] = (mug_l >> 24) & 0xff; + u3r_bytes(0, len_w, dat_y + 4, mat); + + u3z(mat); + } + +#ifdef DISK_TRACE_JAM + u3t_event_trace("disk etch", 'E'); +#endif + + *out_y = dat_y; + return len_i; +} + +/* _disk_batch(): create a write batch +*/ +static c3_o +_disk_batch(u3_disk* log_u) +{ + u3_feat* fet_u = log_u->put_u.ext_u; + c3_w len_w = log_u->sen_d - log_u->dun_d; + + if ( !len_w || (c3y == log_u->sav_u.ted_o) ) { + return c3n; + } + + len_w = c3_min(len_w, 100); + + u3_assert( fet_u ); + u3_assert( (1ULL + log_u->dun_d ) == fet_u->eve_d ); + + log_u->sav_u.ret_o = c3n; + log_u->sav_u.eve_d = fet_u->eve_d; + log_u->sav_u.len_w = len_w; + + for ( c3_w i_w = 0ULL; i_w < len_w; ++i_w) { + u3_assert( fet_u ); + u3_assert( (log_u->sav_u.eve_d + i_w) == fet_u->eve_d ); + + log_u->sav_u.byt_y[i_w] = fet_u->hun_y; + log_u->sav_u.siz_i[i_w] = fet_u->len_i; + + fet_u = fet_u->nex_u; + } + + log_u->hit_w[len_w]++; + + return c3y; +} + +/* _disk_commit(): commit all available events, if idle. +*/ +static void +_disk_commit(u3_disk* log_u) +{ + if ( c3y == _disk_batch(log_u) ) { + #ifdef VERBOSE_DISK + if ( 1 == len_w ) { + fprintf(stderr, "disk: (%" PRIu64 "): commit: request\r\n", + log_u->sav_u.eve_d); + } + else { + fprintf(stderr, "disk: (%" PRIu64 "-%" PRIu64 "): commit: request\r\n", + log_u->sav_u.eve_d, + (log_u->sav_u.eve_d + log_u->sav_u.len_w - 1)); + } + #endif + + _disk_commit_start(log_u); + } +} + +/* _disk_plan(): enqueue serialized fact (feat) for persistence. +*/ +static void +_disk_plan(u3_disk* log_u, + c3_l mug_l, + u3_noun job) +{ + u3_feat* fet_u = c3_malloc(sizeof(*fet_u)); + fet_u->eve_d = ++log_u->sen_d; + fet_u->len_i = u3_disk_etch(log_u, job, mug_l, &fet_u->hun_y); + fet_u->nex_u = 0; + + if ( !log_u->put_u.ent_u ) { + u3_assert( !log_u->put_u.ext_u ); + log_u->put_u.ent_u = log_u->put_u.ext_u = fet_u; + } + else { + log_u->put_u.ent_u->nex_u = fet_u; + log_u->put_u.ent_u = fet_u; + } +} + +/* u3_disk_plan(): enqueue completed event for persistence. +*/ +void +u3_disk_plan(u3_disk* log_u, u3_fact* tac_u) +{ + u3_assert( (1ULL + log_u->sen_d) == tac_u->eve_d ); + + _disk_plan(log_u, tac_u->mug_l, tac_u->job); + + _disk_commit(log_u); +} + +/* u3_disk_plan_list(): enqueue completed event list, without autocommit. +*/ +void +u3_disk_plan_list(u3_disk* log_u, u3_noun lit) +{ + u3_noun i, t = lit; + + while ( u3_nul != t ) { + u3x_cell(t, &i, &t); + // NB, boot mugs are 0 + // + _disk_plan(log_u, 0, i); + } + + u3z(lit); +} + +/* u3_disk_sync(): commit planned events. +*/ +c3_o +u3_disk_sync(u3_disk* log_u) +{ + c3_o ret_o = c3n; + + // XX max 100 + // + if ( c3y == _disk_batch(log_u) ) { + ret_o = u3_lmdb_save(log_u->mdb_u, + log_u->sav_u.eve_d, + log_u->sav_u.len_w, + (void**)log_u->sav_u.byt_y, + log_u->sav_u.siz_i); + + log_u->sav_u.ret_o = ret_o; + + // XX don't want callbacks + // + _disk_commit_done(log_u); + } + + return ret_o; +} + +/* u3_disk_async(): active autosync with callbacks. +*/ +void +u3_disk_async(u3_disk* log_u, + void* ptr_v, + u3_disk_news don_f) +{ + // XX add flag to control autosync + // + log_u->sav_u.ptr_v = ptr_v; + log_u->sav_u.don_f = don_f; +} + +/* u3_disk_sift(): parse a persisted event buffer. +*/ +c3_o +u3_disk_sift(u3_disk* log_u, + size_t len_i, + c3_y* dat_y, + c3_l* mug_l, + u3_noun* job) +{ + if ( 4 >= len_i ) { + return c3n; + } + +#ifdef DISK_TRACE_CUE + u3t_event_trace("disk sift", 'B'); +#endif + + // XX check version in log_u + // + *mug_l = dat_y[0] + ^ (dat_y[1] << 8) + ^ (dat_y[2] << 16) + ^ (dat_y[3] << 24); + + // XX u3m_soft? + // + *job = u3ke_cue(u3i_bytes(len_i - 4, dat_y + 4)); + +#ifdef DISK_TRACE_CUE + u3t_event_trace("disk sift", 'E'); +#endif + + return c3y; +} + +struct _cd_list { + u3_disk* log_u; + u3_noun eve; + c3_l mug_l; +}; + +/* _disk_read_list_cb(): lmdb read callback, invoked for each event in order +*/ +static c3_o +_disk_read_list_cb(void* ptr_v, c3_d eve_d, size_t val_i, void* val_p) +{ + struct _cd_list* ven_u = ptr_v; + u3_disk* log_u = ven_u->log_u; + + { + u3_noun job; + c3_l mug_l; + + if ( c3n == u3_disk_sift(log_u, val_i, (c3_y*)val_p, &mug_l, &job) ) { + return c3n; + } + + ven_u->mug_l = mug_l; + ven_u->eve = u3nc(job, ven_u->eve); + } + + return c3y; +} + +/* u3_disk_read_list(): synchronously read a cons list of events. +*/ +u3_weak +u3_disk_read_list(u3_disk* log_u, c3_d eve_d, c3_d len_d, c3_l* mug_l) +{ + struct _cd_list ven_u = { log_u, u3_nul, 0 }; + + if ( c3n == u3_lmdb_read(log_u->mdb_u, &ven_u, + eve_d, len_d, _disk_read_list_cb) ) + { + // XX test normal (not subcommand) replay with and without, + // then run |mass each time + u3z(ven_u.eve); + return u3_none; + } + + *mug_l = ven_u.mug_l; + return u3kb_flop(ven_u.eve); +} + +/* u3_disk_walk_init(): init iterator. +*/ +u3_disk_walk* +u3_disk_walk_init(u3_disk* log_u, + c3_d eve_d, + c3_d len_d) +{ + u3_disk_walk* wok_u = c3_malloc(sizeof(*wok_u)); + c3_d max_d = eve_d + len_d - 1; + + wok_u->log_u = log_u; + wok_u->liv_o = u3_lmdb_walk_init(log_u->mdb_u, + &wok_u->itr_u, + eve_d, + c3_min(max_d, log_u->dun_d)); + + if ( c3n == wok_u->liv_o ) { + c3_free(wok_u); + return 0; + } + + return wok_u; +} + +/* u3_disk_walk_live(): check if live. +*/ +c3_o +u3_disk_walk_live(u3_disk_walk* wok_u) +{ + if ( wok_u->itr_u.nex_d > wok_u->itr_u.las_d ) { + wok_u->liv_o = c3n; + } + + return wok_u->liv_o; +} + +/* u3_disk_walk_step(): get next fact. +*/ +c3_o +u3_disk_walk_step(u3_disk_walk* wok_u, u3_fact* tac_u) +{ + u3_disk* log_u = wok_u->log_u; + size_t len_i; + void* buf_v; + + tac_u->eve_d = wok_u->itr_u.nex_d; + + if ( c3n == u3_lmdb_walk_next(&wok_u->itr_u, &len_i, &buf_v) ) { + fprintf(stderr, "disk: (%" PRIu64 "): read fail\r\n", tac_u->eve_d); + return wok_u->liv_o = c3n; + } + + if ( c3n == u3_disk_sift(log_u, len_i, + (c3_y*)buf_v, + &tac_u->mug_l, + &tac_u->job) ) + { + fprintf(stderr, "disk: (%" PRIu64 "): sift fail\r\n", tac_u->eve_d); + return wok_u->liv_o = c3n; + } + + return c3y; +} + +/* u3_disk_walk_done(): close iterator. +*/ +void +u3_disk_walk_done(u3_disk_walk* wok_u) +{ + u3_lmdb_walk_done(&wok_u->itr_u); + c3_free(wok_u); +} + +/* _disk_save_meta(): serialize atom, save as metadata at [key_c]. +*/ +static c3_o +_disk_save_meta(MDB_env* mdb_u, const c3_c* key_c, c3_w len_w, c3_y* byt_y) +{ + // strip trailing zeroes. + // + while ( len_w && !byt_y[len_w - 1] ) { + len_w--; + } + + return u3_lmdb_save_meta(mdb_u, key_c, len_w, byt_y); +} + +/* u3_disk_save_meta(): save metadata. +*/ +c3_o +u3_disk_save_meta(MDB_env* mdb_u, const u3_meta* met_u) +{ + u3_assert( c3y == u3a_is_cat(met_u->lif_w) ); + + u3_noun who = u3i_chubs(2, met_u->who_d); + + if ( (c3n == _disk_save_meta(mdb_u, "version", sizeof(c3_w), (c3_y*)&met_u->ver_w)) + || (c3n == _disk_save_meta(mdb_u, "who", 2 * sizeof(c3_d), (c3_y*)met_u->who_d)) + || (c3n == _disk_save_meta(mdb_u, "fake", sizeof(c3_o), (c3_y*)&met_u->fak_o)) + || (c3n == _disk_save_meta(mdb_u, "life", sizeof(c3_w), (c3_y*)&met_u->lif_w)) ) + { + u3z(who); + return c3n; + } + + u3z(who); + return c3y; +} + + +/* u3_disk_save_meta_meta(): save meta metadata. +*/ +c3_o +u3_disk_save_meta_meta(c3_c* log_c, const u3_meta* met_u) +{ + MDB_env* dbm_u; + + if ( 0 == (dbm_u = u3_lmdb_init(log_c, u3_Host.ops_u.siz_i)) ) { + fprintf(stderr, "disk: failed to initialize meta-lmdb\r\n"); + return c3n; + } + + if ( c3n == u3_disk_save_meta(dbm_u, met_u) ) { + fprintf(stderr, "disk: failed to save metadata\r\n"); + return c3n; + } + + u3_lmdb_exit(dbm_u); + + return c3y; +} + + +typedef struct { + ssize_t hav_i; + c3_y buf_y[16]; +} _mdb_val; + + +/* _disk_meta_read_cb(): copy [val_p] to atom [ptr_v] if present. +*/ +static void +_disk_meta_read_cb(void* ptr_v, ssize_t val_i, void* val_v) +{ + _mdb_val* val_u = ptr_v; + c3_y* dat_y = (c3_y*)val_v; + + memset(val_u->buf_y, 0, sizeof(val_u->buf_y)); + val_u->hav_i = val_i; + + if ( 0 < val_i ) { + memcpy(val_u->buf_y, dat_y, c3_min(val_i, sizeof(val_u->buf_y))); + } +} + +/* u3_disk_read_meta(): read metadata. +*/ +c3_o +u3_disk_read_meta(MDB_env* mdb_u, u3_meta* met_u) +{ + c3_w ver_w, lif_w; + c3_d who_d[2]; + c3_o fak_o; + + _mdb_val val_u; + + // version + // + u3_lmdb_read_meta(mdb_u, &val_u, "version", _disk_meta_read_cb); + + ver_w = val_u.buf_y[0]; + + // identity + // + u3_lmdb_read_meta(mdb_u, &val_u, "who", _disk_meta_read_cb); + + if ( 0 > val_u.hav_i ) { + fprintf(stderr, "disk: read meta: no identity\r\n"); + return c3n; + } + else if ( 16 < val_u.hav_i ) { + // NB: non-fatal + // + fprintf(stderr, "disk: read meta: strange identity\r\n"); + } + + c3_y* byt_y = val_u.buf_y; + + who_d[0] = (c3_d)byt_y[0] + | (c3_d)byt_y[1] << 8 + | (c3_d)byt_y[2] << 16 + | (c3_d)byt_y[3] << 24 + | (c3_d)byt_y[4] << 32 + | (c3_d)byt_y[5] << 40 + | (c3_d)byt_y[6] << 48 + | (c3_d)byt_y[7] << 56; + + byt_y += 8; + who_d[1] = (c3_d)byt_y[0] + | (c3_d)byt_y[1] << 8 + | (c3_d)byt_y[2] << 16 + | (c3_d)byt_y[3] << 24 + | (c3_d)byt_y[4] << 32 + | (c3_d)byt_y[5] << 40 + | (c3_d)byt_y[6] << 48 + | (c3_d)byt_y[7] << 56; + + // fake bit + // + u3_lmdb_read_meta(mdb_u, &val_u, "fake", _disk_meta_read_cb); + + if ( 0 > val_u.hav_i ) { + fprintf(stderr, "disk: read meta: no fake bit\r\n"); + return c3n; + } + else if ( 0 == val_u.hav_i ) { + fak_o = 0; + } + else if ( (1 == val_u.hav_i) || !((*val_u.buf_y) >> 1) ) { + fak_o = (*val_u.buf_y) & 1; + } + else { + fprintf(stderr, "disk: read meta: invalid fake bit %u %zd\r\n", + *val_u.buf_y, val_u.hav_i); + return c3n; + } + + // life + // + u3_lmdb_read_meta(mdb_u, &val_u, "life", _disk_meta_read_cb); + + if ( 0 > val_u.hav_i ) { + fprintf(stderr, "disk: read meta: no lifecycle length\r\n"); + return c3n; + } + else if ( 4 < val_u.hav_i ) { + // NB: non-fatal + // + fprintf(stderr, "disk: read meta: strange life\r\n"); + } + + byt_y = val_u.buf_y; + lif_w = (c3_w)byt_y[0] + | (c3_w)byt_y[1] << 8 + | (c3_w)byt_y[2] << 16 + | (c3_w)byt_y[3] << 24; + + { + c3_o val_o = c3y; + + if ( U3D_VERLAT < ver_w ) { + fprintf(stderr, "disk: read meta: unknown version %u\r\n", ver_w); + val_o = c3n; + } + else if ( !((c3y == fak_o ) || (c3n == fak_o )) ) { + fprintf(stderr, "disk: read meta: invalid fake bit\r\n"); + val_o = c3n; + } + else if ( c3n == u3a_is_cat(lif_w) ) { + fprintf(stderr, "disk: read meta: invalid lifecycle length\r\n"); + val_o = c3n; + } + + if ( c3n == val_o ) { + return c3n; + } + } + + // NB: we read metadata from LMDB even when met_u is null because sometimes + // because sometimes we call this just to ensure metadata exists + if ( met_u ) { + met_u->ver_w = ver_w; + memcpy(met_u->who_d, who_d, 2 * sizeof(c3_d)); + met_u->fak_o = fak_o; + met_u->lif_w = lif_w; + } + + return c3y; +} + +/* _disk_lock(): lockfile path. +*/ +static c3_c* +_disk_lock(c3_c* pax_c) +{ + c3_w len_w = strlen(pax_c) + sizeof("/.vere.lock"); + c3_c* paf_c = c3_malloc(len_w); + c3_i wit_i; + + wit_i = snprintf(paf_c, len_w, "%s/.vere.lock", pax_c); + u3_assert(wit_i + 1 == len_w); + return paf_c; +} + +/* _disk_acquire(): acquire a lockfile, killing anything that holds it. +*/ +static c3_i +_disk_acquire(c3_c* pax_c) +{ + c3_c* paf_c = _disk_lock(pax_c); + c3_y dat_y[13] = {0}; + c3_w pid_w = 0; + c3_i fid_i, ret_i; + + if ( -1 == (fid_i = c3_open(paf_c, O_RDWR|O_CREAT, 0666)) ) { + fprintf(stderr, "disk: failed to open/create lock file\r\n"); + goto fail; + } + + { + c3_y len_y = 0; + c3_y* buf_y = dat_y; + + do { + c3_zs ret_zs; + + if ( -1 == (ret_zs = read(fid_i, buf_y, 1)) ) { + if ( EINTR == errno ) continue; + + fprintf(stderr, "disk: failed to read lockfile: %s\r\n", + strerror(errno)); + goto fail; + } + + if ( !ret_zs ) break; + else if ( 1 != ret_zs ) { + fprintf(stderr, "disk: strange lockfile read %zd\r\n", ret_zs); + goto fail; + } + + len_y++; + buf_y++; + } + while ( len_y < (sizeof(dat_y) - 1) ); // null terminate + + + if ( len_y ) { + if ( (1 != sscanf((c3_c*)dat_y, "%" SCNu32 "%n", &pid_w, &ret_i)) + || (0 >= ret_i) + || ('\n' != *(dat_y + ret_i)) ) + { + fprintf(stderr, "disk: lockfile is corrupt\r\n"); + } + } + } + +#ifndef U3_OS_windows + { + struct flock lok_u; + memset((void *)&lok_u, 0, sizeof(lok_u)); + lok_u.l_type = F_WRLCK; + lok_u.l_whence = SEEK_SET; + lok_u.l_start = 0; + lok_u.l_len = 1; + + while ( (ret_i = fcntl(fid_i, F_SETLK, &lok_u)) + && (EINTR == (ret_i = errno)) ); + + if ( ret_i ) { + if ( pid_w ) { + fprintf(stderr, "pier: locked by PID %u\r\n", pid_w); + } + else { + fprintf(stderr, "pier: strange: locked by empty lockfile\r\n"); + } + + goto fail; + } + } +#endif + + ret_i = snprintf((c3_c*)dat_y, sizeof(dat_y), "%u\n", getpid()); + + if ( 0 >= ret_i ) { + fprintf(stderr, "disk: failed to write lockfile\r\n"); + goto fail; + } + + { + c3_y len_y = (c3_y)ret_i; + c3_y* buf_y = dat_y; + + do { + c3_zs ret_zs; + + if ( (-1 == (ret_zs = write(fid_i, buf_y, len_y))) + && (EINTR != errno) ) + { + fprintf(stderr, "disk: lockfile write failed %s\r\n", + strerror(errno)); + goto fail; + } + + if ( 0 < ret_zs ) { + len_y -= ret_zs; + buf_y += ret_zs; + } + } + while ( len_y ); + } + + if ( -1 == c3_sync(fid_i) ) { + fprintf(stderr, "disk: failed to sync lockfile: %s\r\n", + strerror(errno)); + goto fail; + } + + c3_free(paf_c); + return fid_i; + +fail: + kill(getpid(), SIGTERM); + sleep(1); u3_assert(0); +} + +/* _disk_release(): release a lockfile. +*/ +static void +_disk_release(c3_c* pax_c, c3_i fid_i) +{ + c3_c* paf_c = _disk_lock(pax_c); + c3_unlink(paf_c); + c3_free(paf_c); + close(fid_i); +} + +/* u3_disk_exit(): close the log. +*/ +void +u3_disk_exit(u3_disk* log_u) +{ + // try to cancel write thread + // shortcircuit cleanup if we cannot + // + if ( (c3y == log_u->sav_u.ted_o) + && (0 > uv_cancel(&log_u->sav_u.req_u)) ) + { + // u3l_log("disk: unable to cleanup\r\n"); + return; + } + + // close database + // + u3_lmdb_exit(log_u->mdb_u); + + // dispose planned writes + // + { + u3_feat* fet_u = log_u->put_u.ext_u; + + while ( fet_u && (fet_u->eve_d <= log_u->dun_d) ) { + log_u->put_u.ext_u = fet_u->nex_u; + c3_free(fet_u->hun_y); + c3_free(fet_u); + fet_u = log_u->put_u.ext_u; + } + } + + _disk_release(log_u->dir_u->pax_c, log_u->lok_i); + + u3_dire_free(log_u->dir_u); + u3_dire_free(log_u->urb_u); + u3_dire_free(log_u->com_u); + + c3_free(log_u); + +#if defined(DISK_TRACE_JAM) || defined(DISK_TRACE_CUE) + u3t_trace_close(); +#endif +} + +/* u3_disk_info(): status info as a (list mass). +*/ +u3_noun +u3_disk_info(u3_disk* log_u) +{ + u3_noun lit = u3i_list( + u3_pier_mase("live", log_u->liv_o), + u3_pier_mase("event", u3i_chub(log_u->dun_d)), + u3_none); + + // XX revise, include batches + // + if ( log_u->put_u.ext_u ) { + lit = u3nc( + u3_pier_mass( + c3__save, + u3i_list( + u3_pier_mase("save-start", u3i_chub(log_u->put_u.ext_u->eve_d)), + u3_pier_mase("save-final", u3i_chub(log_u->put_u.ent_u->eve_d)), + u3_none)), + lit); + } + + return u3_pier_mass(c3__disk, lit); +} + +/* u3_disk_slog(): print status info. +*/ +void +u3_disk_slog(u3_disk* log_u) +{ + u3l_log(" disk: live=%s, event=%" PRIu64, + ( c3y == log_u->liv_o ) ? "&" : "|", + log_u->dun_d); + + { + c3_w len_w, i_w; + + u3l_log(" batch:"); + + for ( i_w = 0; i_w < 100; i_w++ ) { + len_w = log_u->hit_w[i_w]; + if ( len_w ) { + u3l_log(" %u: %u", i_w, len_w); + } + } + } + + if ( log_u->put_u.ext_u ) { + if ( log_u->put_u.ext_u != log_u->put_u.ent_u ) { + u3l_log(" save: %" PRIu64 "-%" PRIu64, + log_u->put_u.ext_u->eve_d, + log_u->put_u.ent_u->eve_d); + } + else { + u3l_log(" save: %" PRIu64, log_u->put_u.ext_u->eve_d); + } + } +} + +/* _disk_epoc_meta: read metadata from epoch. +*/ +static c3_o +_disk_epoc_meta(u3_disk* log_u, + c3_d epo_d, + const c3_c* met_c, + c3_w max_w, + c3_c* buf_c) +{ + struct stat buf_u; + c3_w red_w, len_w; + c3_i ret_i, fid_i; + c3_c* pat_c; + + ret_i = asprintf(&pat_c, "%s/0i%" PRIc3_d "/%s.txt", + log_u->com_u->pax_c, epo_d, met_c); + u3_assert( ret_i > 0 ); + + fid_i = c3_open(pat_c, O_RDONLY, 0644); + c3_free(pat_c); + + if ( (fid_i < 0) || (fstat(fid_i, &buf_u) < 0) ) { + fprintf(stderr, "disk: failed to open %s.txt in epoch 0i%" PRIc3_d "\r\n", + met_c, epo_d); + return c3n; + } + else if ( buf_u.st_size >= max_w ) { + fprintf(stderr, "disk: %s.txt in epoch 0i%" PRIc3_d " too large " + "(%" PRIc3_z ")\r\n", + met_c, epo_d, (c3_z)buf_u.st_size); + return c3n; + } + + len_w = buf_u.st_size; + red_w = read(fid_i, buf_c, len_w); + close(fid_i); + + if ( len_w != red_w ) { + fprintf(stderr, "disk: failed to read %s.txt in epoch 0i%" PRIc3_d "\r\n", + met_c, epo_d); + return c3n; + } + + // trim trailing whitespace + // + do { + buf_c[len_w] = 0; + } + while ( len_w-- && isspace(buf_c[len_w]) ); + + return c3y; +} + +/* _disk_epoc_zero: make epoch zero. +*/ +static c3_o +_disk_epoc_zero(c3_c* pax_c) +{ + // create new epoch directory if it doesn't exist + c3_c epo_c[8193]; + c3_i epo_i; + snprintf(epo_c, sizeof(epo_c), "%s/0i0", pax_c); + c3_d ret_d = c3_mkdir(epo_c, 0700); + if ( ( ret_d < 0 ) && ( errno != EEXIST ) ) { + fprintf(stderr, "disk: epoch 0i0 mkdir failed: %s\r\n", strerror(errno)); + return c3n; + } + + // open epoch directory +#ifndef U3_OS_windows + if ( -1 == (epo_i = c3_open(epo_c, O_RDONLY)) ) { + fprintf(stderr, "disk: open epoch dir 0i0 failed: %s\r\n", strerror(errno)); + goto fail1; + } + + // sync epoch directory + if ( -1 == c3_sync(epo_i) ) { // XX fdatasync on linux? + fprintf(stderr, "disk: sync epoch dir 0i0 failed: %s\r\n", strerror(errno)); + goto fail2; + } +#endif + + // create epoch version file, overwriting any existing file + c3_c epi_c[8193]; + c3_c epv_c[8193]; + snprintf(epi_c, sizeof(epv_c), "%s/epoc.tmp", epo_c); + snprintf(epv_c, sizeof(epv_c), "%s/epoc.txt", epo_c); + FILE* epv_f = fopen(epi_c, "w"); // XX errors + + if ( !epv_f + || (0 > fprintf(epv_f, "%d", U3E_VERLAT)) + || fflush(epv_f) + || (-1 == c3_sync(fileno(epv_f))) + || fclose(epv_f) + || (-1 == rename(epi_c, epv_c)) ) + { + fprintf(stderr, "disk: write epoc.txt failed %s\r\n", strerror(errno)); + goto fail3; + } + + // create binary version file, overwriting any existing file + c3_c bii_c[8193]; + c3_c biv_c[8193]; + snprintf(bii_c, sizeof(biv_c), "%s/vere.tmp", epo_c); + snprintf(biv_c, sizeof(epv_c), "%s/vere.txt", epo_c); + FILE* biv_f = fopen(bii_c, "w"); + if ( !biv_f + || (0 > fprintf(biv_f, URBIT_VERSION)) + || fflush(biv_f) + || (-1 == c3_sync(fileno(biv_f))) + || fclose(biv_f) + || (-1 == rename(bii_c, biv_c)) ) + { + fprintf(stderr, "disk: write vere.txt failed %s\r\n", strerror(errno)); + goto fail3; + } + +#ifndef U3_OS_windows + if ( -1 == c3_sync(epo_i) ) { // XX fdatasync on linux? + fprintf(stderr, "disk: sync epoch dir 0i0 failed: %s\r\n", strerror(errno)); + goto fail3; + } + close(epo_i); +#endif + + // success + return c3y; + + fail3: + c3_unlink(epv_c); + c3_unlink(biv_c); +#ifndef U3_OS_windows + fail2: + close(epo_i); + fail1: +#endif + c3_rmdir(epo_c); + return c3n; +} + +/* _disk_epoc_roll: epoch rollover. +*/ +static c3_o +_disk_epoc_roll(u3_disk* log_u, c3_d epo_d) +{ + u3_assert(epo_d); + + fprintf(stderr, "disk: rolling to epoch %" PRIc3_d "\r\n", epo_d); + // check if any epoch directories exist + c3_d lat_d; + if ( c3n == u3_disk_epoc_last(log_u, &lat_d) ) { + fprintf(stderr, "disk: failed to get last epoch\r\n"); + return c3n; + } + + // create new epoch directory if it doesn't exist + c3_c epo_c[8193]; + c3_i epo_i; + snprintf(epo_c, sizeof(epo_c), "%s/0i%" PRIc3_d, log_u->com_u->pax_c, epo_d); + c3_d ret_d = c3_mkdir(epo_c, 0700); + if ( ( ret_d < 0 ) && ( errno != EEXIST ) ) { + fprintf(stderr, "disk: create epoch dir %" PRIc3_d " failed: %s\r\n", + epo_d, strerror(errno)); + return c3n; + } + + // copy snapshot files (skip if first epoch) + c3_c chk_c[8193]; + snprintf(chk_c, 8192, "%s/.urb/chk", log_u->dir_u->pax_c); + if ( c3n == u3e_backup(chk_c, epo_c, c3y) ) { + fprintf(stderr, "disk: copy epoch snapshot failed\r\n"); + goto fail1; + } + +#ifndef U3_OS_windows + if ( -1 == (epo_i = c3_open(epo_c, O_RDONLY)) ) { + fprintf(stderr, "disk: open epoch dir %" PRIc3_d " failed: %s\r\n", + epo_d, strerror(errno)); + goto fail1; + } + + if ( -1 == c3_sync(epo_i) ) { // XX fdatasync on linux? + fprintf(stderr, "disk: sync epoch dir %" PRIc3_d " failed: %s\r\n", + epo_d, strerror(errno)); + goto fail2; + } +#endif + + // create epoch version file, overwriting any existing file + c3_c epi_c[8193]; + c3_c epv_c[8193]; + snprintf(epi_c, sizeof(epv_c), "%s/epoc.tmp", epo_c); + snprintf(epv_c, sizeof(epv_c), "%s/epoc.txt", epo_c); + FILE* epv_f = fopen(epi_c, "w"); + + if ( !epv_f + || (0 > fprintf(epv_f, "%d", U3E_VERLAT)) + || fflush(epv_f) + || (-1 == c3_sync(fileno(epv_f))) + || fclose(epv_f) + || (-1 == rename(epi_c, epv_c)) ) + { + fprintf(stderr, "disk: write epoc.txt failed %s\r\n", strerror(errno)); + goto fail3; + } + + // create binary version file, overwriting any existing file + c3_c bii_c[8193]; + c3_c biv_c[8193]; + snprintf(bii_c, sizeof(biv_c), "%s/vere.tmp", epo_c); + snprintf(biv_c, sizeof(epv_c), "%s/vere.txt", epo_c); + FILE* biv_f = fopen(bii_c, "w"); + if ( !biv_f + || (0 > fprintf(biv_f, URBIT_VERSION)) + || fflush(biv_f) + || (-1 == c3_sync(fileno(biv_f))) + || fclose(biv_f) + || (-1 == rename(bii_c, biv_c)) ) + { + fprintf(stderr, "disk: write vere.txt failed %s\r\n", strerror(errno)); + goto fail3; + } + +#ifndef U3_OS_windows + if ( -1 == c3_sync(epo_i) ) { // XX fdatasync on linux? + fprintf(stderr, "disk: sync epoch dir 0i0 failed: %s\r\n", strerror(errno)); + goto fail3; + } +#endif + + // get metadata from old log, update version + u3_meta old_u; + if ( c3y != u3_disk_read_meta(log_u->mdb_u, &old_u) ) { + fprintf(stderr, "disk: failed to read metadata\r\n"); + goto fail3; + } + u3_lmdb_exit(log_u->mdb_u); + log_u->mdb_u = 0; + + // initialize db of new epoch + if ( 0 == (log_u->mdb_u = u3_lmdb_init(epo_c, u3_Host.ops_u.siz_i)) ) { + fprintf(stderr, "disk: failed to initialize database\r\n"); + c3_free(log_u); + goto fail3; + } + + // write the metadata to the database + old_u.ver_w = U3D_VERLAT; + if ( c3n == u3_disk_save_meta(log_u->mdb_u, &old_u) ) { + fprintf(stderr, "disk: failed to save metadata\r\n"); + goto fail3; + } + +#ifndef U3_OS_windows + if ( -1 == c3_sync(epo_i) ) { // XX fdatasync on linux? + fprintf(stderr, "disk: sync epoch dir %" PRIc3_d " failed: %s\r\n", + epo_d, strerror(errno)); + goto fail3; + } + + close(epo_i); +#endif + + fprintf(stderr, "disk: created epoch %" PRIc3_d "\r\n", epo_d); + + // load new epoch directory and set it in log_u + log_u->epo_d = epo_d; + log_u->ver_w = U3D_VERLAT; + + // success + return c3y; + +fail3: + c3_unlink(epv_c); + c3_unlink(biv_c); +#ifndef U3_OS_windows +fail2: + close(epo_i); +#endif +fail1: + c3_rmdir(epo_c); + return c3n; +} + +/* _disk_epoc_kill: delete an epoch. +*/ +static c3_o +_disk_epoc_kill(u3_disk* log_u, c3_d epo_d) +{ + // get epoch directory + c3_c epo_c[8193]; + snprintf(epo_c, sizeof(epo_c), "%s/0i%" PRIc3_d, log_u->com_u->pax_c, epo_d); + + // delete files in epoch directory + u3_dire* dir_u = u3_foil_folder(epo_c); + u3_dent* den_u = dir_u->all_u; + while ( den_u ) { + c3_c fil_c[8193]; + snprintf(fil_c, sizeof(fil_c), "%s/%s", epo_c, den_u->nam_c); + if ( 0 != c3_unlink(fil_c) ) { + fprintf(stderr, "disk: failed to delete file in epoch directory\r\n"); + return c3n; + } + den_u = den_u->nex_u; + } + + // delete epoch directory + if ( 0 != c3_rmdir(epo_c) ) { + fprintf(stderr, "disk: failed to delete epoch directory\r\n"); + return c3n; + } + + // cleanup + u3_dire_free(dir_u); + + // success + return c3y; +} + +/* u3_disk_epoc_last: get latest epoch number. +*/ +c3_o +u3_disk_epoc_last(u3_disk* log_u, c3_d* lat_d) +{ + u3_dire* die_u = u3_foil_folder(log_u->com_u->pax_c); + u3_dent* den_u = die_u->dil_u; + c3_o ret_o = c3n; + c3_d epo_d = 0; + c3_d val_d; + c3_i car_i; + + while ( den_u ) { + if ( (1 == sscanf(den_u->nam_c, "0i%" SCNu64 "%n", &val_d, &car_i)) + && (0 < car_i) + && ('\0' == *(den_u->nam_c + car_i)) ) + { + ret_o = c3y; // NB: returns yes if the directory merely exists + epo_d = c3_max(epo_d, val_d); + } + + den_u = den_u->nex_u; + } + + u3_dire_free(die_u); + + *lat_d = epo_d; + + return ret_o; +} + +/* u3_disk_epoc_list: get descending epoch numbers, "mcut" pattern. +*/ +c3_z +u3_disk_epoc_list(u3_disk* log_u, c3_d* sot_d) +{ + u3_dire* ned_u = u3_foil_folder(log_u->com_u->pax_c); + u3_dent* den_u = ned_u->dil_u; + c3_z len_z = 0; + c3_i car_i; + c3_d val_d; + + while ( den_u ) { // count epochs + if ( (1 == sscanf(den_u->nam_c, "0i%" SCNu64 "%n", &val_d, &car_i)) + && (0 < car_i) + && ('\0' == *(den_u->nam_c + car_i)) ) + { + len_z++; + } + + den_u = den_u->nex_u; + } + + if ( !sot_d ) { + u3_dire_free(ned_u); + return len_z; + } + + len_z = 0; + den_u = ned_u->dil_u; + + while ( den_u ) { + if ( (1 == sscanf(den_u->nam_c, "0i%" SCNu64 "%n", &val_d, &car_i)) + && (0 < car_i) + && ('\0' == *(den_u->nam_c + car_i)) ) + { + sot_d[len_z++] = val_d; + } + + den_u = den_u->nex_u; + } + + // sort sot_d naively in descending order + // + c3_d tmp_d; + for ( c3_z i_z = 0; i_z < len_z; i_z++ ) { + for ( c3_z j_z = i_z + 1; j_z < len_z; j_z++ ) { + if ( sot_d[i_z] < sot_d[j_z] ) { + tmp_d = sot_d[i_z]; + sot_d[i_z] = sot_d[j_z]; + sot_d[j_z] = tmp_d; + } + } + } + + u3_dire_free(ned_u); + return len_z; +} + +/* _disk_migrate_epoc: migrates disk format. + */ +static c3_o +_disk_migrate_epoc(u3_disk* log_u, c3_d eve_d) +{ + /* migration steps: + * 1. initialize epoch 0i0 (see _disk_epoc_zero) + * 2. create hard links to data.mdb and lock.mdb in 0i0/ + * 3. use scratch space to initialize new log/data.db in log/tmp + * 4. save old metadata to new db in scratch space + * 5. clobber old log/data.mdb with new log/tmp/data.mdb + * 6. open epoch lmdb and set it in log_u + */ + + // NB: requires that log_u->mdb_u is initialized to log/data.mdb + // XX: put old log in separate pointer (old_u?)? + + // get metadata from old log, update version + u3_meta olm_u; + if ( c3y != u3_disk_read_meta(log_u->mdb_u, &olm_u) ) { + fprintf(stderr, "disk: failed to read metadata\r\n"); + return c3n; + } + + // finish with old log + u3_lmdb_exit(log_u->mdb_u); + log_u->mdb_u = 0; + + // check if lock.mdb is readable in log directory + c3_o luk_o = c3n; + c3_c luk_c[8193]; + snprintf(luk_c, sizeof(luk_c), "%s/lock.mdb", log_u->com_u->pax_c); + if ( 0 == access(luk_c, R_OK) ) { + luk_o = c3y; + } + + fprintf(stderr, "disk: migrating disk to v%d format\r\n", U3D_VERLAT); + + // initialize first epoch "0i0" + if ( c3n == _disk_epoc_zero(log_u->com_u->pax_c) ) { + fprintf(stderr, "disk: failed to initialize first epoch\r\n"); + return c3n; + } + + // create hard links to data.mdb and lock.mdb in 0i0/ + c3_c epo_c[8193], dut_c[8193], dat_c[8193], lok_c[8193]; + snprintf(epo_c, sizeof(epo_c), "%s/0i0", log_u->com_u->pax_c); + snprintf(dut_c, sizeof(dut_c), "%s/data.mdb", log_u->com_u->pax_c); + snprintf(dat_c, sizeof(dat_c), "%s/data.mdb", epo_c); + snprintf(lok_c, sizeof(lok_c), "%s/lock.mdb", epo_c); + + if ( c3_link(dut_c, dat_c) && (EEXIST != errno) ) { + fprintf(stderr, "disk: failed to create data.mdb hard link\r\n"); + return c3n; + } + if ( c3y == luk_o ) { // only link lock.mdb if it exists + if ( c3_link(luk_c, lok_c) && (EEXIST != errno) ) { + fprintf(stderr, "disk: failed to create lock.mdb hard link\r\n"); + return c3n; + } + } + + // delete backup snapshot + c3_c bhk_c[8193], nop_c[8193], sop_c[8193]; + snprintf(bhk_c, sizeof(bhk_c), "%s/.urb/bhk", log_u->dir_u->pax_c); + snprintf(nop_c, sizeof(nop_c), "%s/north.bin", bhk_c); + snprintf(sop_c, sizeof(sop_c), "%s/south.bin", bhk_c); + if ( c3_unlink(nop_c) ) { + fprintf(stderr, "disk: failed to delete bhk/north.bin: %s\r\n", + strerror(errno)); + } + else if ( c3_unlink(sop_c) ) { + fprintf(stderr, "disk: failed to delete bhk/south.bin: %s\r\n", + strerror(errno)); + } + else { + if ( c3_rmdir(bhk_c) ) { + fprintf(stderr, "disk: failed to delete bhk/: %s\r\n", + strerror(errno)); + } + } + + // use scratch space to initialize new log/data.db + // and clobber old log/data.db + // + c3_c tmp_c[8193]; + snprintf(tmp_c, sizeof(tmp_c), "%s/tmp", log_u->com_u->pax_c); + if ( c3_mkdir(tmp_c, 0700) && (errno != EEXIST) ) { + fprintf(stderr, "disk: failed to create log/tmp: %s\r\n", + strerror(errno)); + return c3n; + } + + if ( 0 == (log_u->mdb_u = u3_lmdb_init(tmp_c, u3_Host.ops_u.siz_i)) ) { + fprintf(stderr, "disk: failed to initialize database at %s\r\n", + tmp_c); + return c3n; + } + + olm_u.ver_w = U3D_VERLAT; + if ( c3n == u3_disk_save_meta(log_u->mdb_u, &olm_u) ) { + fprintf(stderr, "disk: failed to save metadata\r\n"); + return c3n; + } + + // atomic truncation of old log + // + u3_lmdb_exit(log_u->mdb_u); + log_u->mdb_u = 0; + + c3_c trd_c[8193]; + snprintf(trd_c, sizeof(trd_c), "%s/data.mdb", tmp_c); + if ( c3_rename(trd_c, dut_c) ) { + fprintf(stderr, "disk: failed mv %s to %s: %s\r\n", trd_c, dut_c, + strerror(errno)); + return c3n; + } + + snprintf(trd_c, sizeof(trd_c), "%s/lock.mdb", tmp_c); + if ( c3_unlink(trd_c) && (errno != ENOENT) ) { + fprintf(stderr, "disk: failed to delete log/tmp: %s\r\n", + strerror(errno)); + } + if ( c3_rmdir(tmp_c) ) { + fprintf(stderr, "disk: failed to delete log/tmp: %s\r\n", + strerror(errno)); + } + + if ( 0 == (log_u->mdb_u = u3_lmdb_init(epo_c, u3_Host.ops_u.siz_i)) ) { + fprintf(stderr, "disk: failed to initialize database at %s\r\n", + epo_c); + return c3n; + } + + // success + fprintf(stderr, "disk: migrated disk to v%d format\r\n", U3D_VERLAT); + + return c3y; +} + +/* _disk_vere_diff(): checks if vere version mismatches latest epoch's. +*/ +static c3_o +_disk_vere_diff(u3_disk* log_u) +{ + c3_c ver_c[128]; + + if ( c3n == _disk_epoc_meta(log_u, log_u->epo_d, "vere", + sizeof(ver_c) - 1, ver_c) ) + { + return c3y; // assume mismatch if we can't read version + } + + if ( 0 != strcmp(ver_c, URBIT_VERSION) ) { + return c3y; + } + + return c3n; +} + +/* u3_disk_chop(): delete all but the latest 2 epocs. +*/ +void +u3_disk_chop(u3_disk* log_u, c3_d eve_d) +{ + c3_z len_z = u3_disk_epoc_list(log_u, 0); + c3_d* sot_d = c3_malloc(len_z * sizeof(c3_d)); + u3_disk_epoc_list(log_u, sot_d); + + if ( len_z <= 2 ) { + fprintf(stderr, "chop: nothing to do, try running roll first\r\n" + "chop: for more info see " + "https://docs.urbit.org/user-manual/running/vere#chop\r\n"); + exit(0); // enjoy + } + + // delete all but the last two epochs + // + // XX parameterize the number of epochs to chop + // + for ( c3_z i_z = 2; i_z < len_z; i_z++ ) { + fprintf(stderr, "chop: deleting epoch 0i%" PRIu64 "\r\n", + sot_d[i_z]); + if ( c3y != _disk_epoc_kill(log_u, sot_d[i_z]) ) { + fprintf(stderr, "chop: failed to delete epoch 0i%" PRIu64 "\r\n", sot_d[i_z]); + exit(1); + } + } + + // cleanup + c3_free(sot_d); + + // success + fprintf(stderr, "chop: event log truncation complete\r\n"); +} + +/* u3_disk_roll(): rollover to a new epoc. +*/ +void +u3_disk_roll(u3_disk* log_u, c3_d eve_d) +{ + // XX get fir_d from log_u + c3_d fir_d, las_d; + + if ( c3n == u3_lmdb_gulf(log_u->mdb_u, &fir_d, &las_d) ) { + fprintf(stderr, "roll: failed to read first/last event numbers\r\n"); + exit(1); + } + + if ( fir_d == las_d ) { + fprintf(stderr, "roll: latest epoch is empty\r\n"); + exit(0); + } + + if ( (eve_d != las_d) || (eve_d != log_u->dun_d) ) { + fprintf(stderr, "roll: shenanigans!\r\n"); + exit(1); + } + + else if ( c3n == _disk_epoc_roll(log_u, eve_d) ) { + fprintf(stderr, "roll: failed to create new epoch\r\n"); + exit(1); + } +} + +static void +_disk_unlink_stale_loom(c3_c* dir_c) +{ + c3_c bin_c[8193]; + snprintf(bin_c, 8193, "%s/.urb/chk/north.bin", dir_c); + + if ( c3_unlink(bin_c) && (ENOENT != errno) ) { + fprintf(stderr, "mars: failed to unlink %s: %s\r\n", + bin_c, strerror(errno)); + exit(1); + } + + snprintf(bin_c, 8193, "%s/.urb/chk/south.bin", dir_c); + + if ( c3_unlink(bin_c) && (ENOENT != errno) ) { + fprintf(stderr, "mars: failed to unlink %s: %s\r\n", + bin_c, strerror(errno)); + exit(1); + } +} + +static c3_i +_disk_load_stale_loom(c3_c* dir_c, c3_z len_z) +{ + // map at fixed address. + // + { + void* map_v = mmap((void *)u3_Loom_v4, + len_z, + (PROT_READ | PROT_WRITE), + (MAP_ANON | MAP_FIXED | MAP_PRIVATE), + -1, 0); + + if ( -1 == (c3_ps)map_v ) { + map_v = mmap((void *)0, + len_z, + (PROT_READ | PROT_WRITE), + (MAP_ANON | MAP_PRIVATE), + -1, 0); + + u3l_log("boot: mapping %zuMB failed", len_z >> 20); + u3l_log("see https://docs.urbit.org/manual/getting-started/self-hosted/cloud-hosting" + " for adding swap space"); + if ( -1 != (c3_ps)map_v ) { + u3l_log("if porting to a new platform, try U3_OS_LoomBase %p", + map_v); + } + exit(1); + } + + u3C.wor_i = len_z >> 2; + u3l_log("loom: mapped %zuMB", len_z >> 20); + } + + { + c3_z lom_z; + c3_i nod_i = u3e_image_open_any("/.urb/chk/north", dir_c, &lom_z); + + u3_assert( -1 != nod_i ); + + fprintf(stderr, "loom: %p fid_i %d len %zu\r\n", u3_Loom_v4, nod_i, lom_z); + + // XX respect --no-demand flag + // + if ( MAP_FAILED == mmap(u3_Loom_v4, + lom_z, + (PROT_READ | PROT_WRITE), + (MAP_FIXED | MAP_PRIVATE), + nod_i, 0) ) + { + fprintf(stderr, "loom: file-backed mmap failed: %s\r\n", + strerror(errno)); + u3_assert(0); + } + + const c3_z pag_z = 1U << (u3a_page + 2); + void* ptr_v = (c3_y*)u3_Loom_v4 + (len_z - pag_z); + c3_zs ret_zs; + c3_i sod_i = u3e_image_open_any("/.urb/chk/south", dir_c, &lom_z); + + u3_assert( -1 != nod_i ); + u3_assert( pag_z == lom_z ); + + if ( pag_z != (ret_zs = pread(sod_i, ptr_v, pag_z, 0)) ) { + if ( 0 < ret_zs ) { + fprintf(stderr, "loom: blit south partial read: %"PRIc3_zs"\r\n", + ret_zs); + } + else { + fprintf(stderr, "loom: blit south read: %s\r\n", strerror(errno)); + } + u3_assert(0); + } + + close(sod_i); + + return nod_i; + } +} + +static void +_disk_migrate_loom(c3_c* dir_c, c3_d eve_d) +{ + c3_i fid_i = _disk_load_stale_loom(dir_c, (size_t)1 << u3_Host.ops_u.lom_y); // XX confirm + c3_w lom_w = *(u3_Loom_v4 + u3C.wor_i - 1); + + // NB: all fallthru, all the time + // + switch ( lom_w ) { + case U3V_VER1: u3_migrate_v2(eve_d); + case U3V_VER2: u3_migrate_v3(eve_d); + case U3V_VER3: u3_migrate_v4(eve_d); + case U3V_VER4: { + u3m_init((size_t)1 << u3_Host.ops_u.lom_y); + u3e_live(c3n, strdup(dir_c)); + u3m_pave(c3y); + u3_migrate_v5(eve_d); + u3m_save(); + } + } + + munmap(u3_Loom_v4, (size_t)1 << u3_Host.ops_u.lom_y); + close(fid_i); +} + +static void +_disk_migrate_old(u3_disk* log_u) +{ + c3_d fir_d, las_d; + if ( c3n == u3_lmdb_gulf(log_u->mdb_u, &fir_d, &las_d) ) { + fprintf(stderr, "disk: failed to get first/last event numbers\r\n"); + exit(1); + } + + log_u->sen_d = log_u->dun_d = las_d; + + switch ( log_u->ver_w ) { + case U3D_VER1: { + _disk_migrate_loom(log_u->dir_u->pax_c, las_d); + + // set version to 2 (migration in progress) + log_u->ver_w = U3D_VER2; + if ( c3n == _disk_save_meta(log_u->mdb_u, "version", 4, (c3_y*)&log_u->ver_w) ) { + fprintf(stderr, "disk: failed to set version to 2\r\n"); + exit(1); + } + } // fallthru + + case U3D_VER2: { + _disk_unlink_stale_loom(log_u->dir_u->pax_c); + u3m_boot(log_u->dir_u->pax_c, (size_t)1 << u3_Host.ops_u.lom_y); // XX confirm + + if ( c3n == _disk_migrate_epoc(log_u, las_d) ) { + fprintf(stderr, "disk: failed to migrate event log\r\n"); + exit(1); + } + + if ( c3n == _disk_epoc_roll(log_u, las_d) ) { + fprintf(stderr, "disk: failed to initialize epoch\r\n"); + exit(1); + } + } break; + + default: { + fprintf(stderr, "disk: unknown old log version: %d\r\n", log_u->ver_w); + u3_assert(0); + } + } +} + +typedef enum { + _epoc_good = 0, // load successfully + _epoc_gone = 1, // version missing, total failure + _epoc_fail = 2, // transient failure (?) + _epoc_void = 3, // empty event log (cheaper to recover?) + _epoc_late = 4 // format from the future +} _epoc_kind; + +/* _disk_epoc_load(): load existing epoch, enumerating failures +*/ +static _epoc_kind +_disk_epoc_load(u3_disk* log_u, c3_d lat_d, u3_disk_load_e lod_e) +{ + // check latest epoc version + // + c3_w ver_w; + { + c3_c ver_c[8]; + c3_i car_i; + + if ( c3n == _disk_epoc_meta(log_u, lat_d, "epoc", + sizeof(ver_c) - 1, ver_c) ) + { + fprintf(stderr, "disk: failed to load epoch 0i%" PRIc3_d " version\r\n", + lat_d); + + return _epoc_gone; + } + + if ( !( (1 == sscanf(ver_c, "%" SCNu32 "%n", &ver_w, &car_i)) + && (0 < car_i) + && ('\0' == *(ver_c + car_i)) ) ) + { + fprintf(stderr, "disk: failed to parse epoch version: '%s'\r\n", ver_c); + return _epoc_fail; + } + + if ( (U3E_VER1 > ver_w) || (U3E_VERLAT < ver_w) ) { + fprintf(stderr, "disk: unknown epoch version: '%s', expected '%d' - '%d'\r\n", + ver_c, U3E_VER1, U3E_VERLAT); + return _epoc_late; + } + } + + // set path to latest epoch + c3_c epo_c[8193]; + snprintf(epo_c, 8192, "%s/0i%" PRIc3_d, log_u->com_u->pax_c, lat_d); + + // initialize latest epoch's db + if ( 0 == (log_u->mdb_u = u3_lmdb_init(epo_c, u3_Host.ops_u.siz_i)) ) { + fprintf(stderr, "disk: failed to initialize database at %s\r\n", + epo_c); + return _epoc_fail; + } + + fprintf(stderr, "disk: loaded epoch 0i%" PRIc3_d "\r\n", lat_d); + + // get first/last event numbers from lmdb + c3_d fir_d, las_d; + if ( c3n == u3_lmdb_gulf(log_u->mdb_u, &fir_d, &las_d) ) { + fprintf(stderr, "disk: failed to get first/last event numbers\r\n"); + u3_lmdb_exit(log_u->mdb_u); + log_u->mdb_u = 0; + return _epoc_fail; + } + + if ( (u3_dlod_boot != lod_e) + && !fir_d + && !las_d + && (c3n == u3_disk_read_meta(log_u->mdb_u, 0)) ) + { + u3_lmdb_exit(log_u->mdb_u); + log_u->mdb_u = 0; + return _epoc_void; + } + + // initialize dun_d/sen_d values + // + // XX save [fir_d] in struct, check on play + // + log_u->dun_d = ( 0 != las_d ) ? las_d : lat_d; + log_u->sen_d = log_u->dun_d; + log_u->epo_d = lat_d; + + // NB: by virtue of getting here, we know the *pier* version number is at least 3 + // (ie, this is the epoch system) + // + switch ( ver_w ) { + case U3E_VER1: { + if ( u3_dlod_epoc == lod_e ) { + fprintf(stderr, "migration required, replay disallowed\r\n"); + exit(1); + } + + _disk_migrate_loom(log_u->dir_u->pax_c, log_u->dun_d); + u3m_stop(); + u3m_boot(log_u->dir_u->pax_c, (size_t)1 << u3_Host.ops_u.lom_y); // XX confirm + + if ( c3n == _disk_epoc_roll(log_u, log_u->dun_d) ) { + fprintf(stderr, "disk: failed to initialize epoch during loom migration\r\n"); + exit(1); + } + + _disk_unlink_stale_loom(log_u->dir_u->pax_c); + return _epoc_good; + } break; + + case U3E_VER2: { + if ( u3_dlod_epoc == lod_e ) { + c3_c chk_c[8193]; + snprintf(chk_c, 8193, "%s/.urb/chk", log_u->dir_u->pax_c); + + if ( 0 == log_u->epo_d ) { + // if epoch 0 is the latest, delete the snapshot files in chk/ + c3_c bin_c[8193]; + snprintf(bin_c, 8193, "%s/image.bin", chk_c); + if ( c3_unlink(bin_c) && (ENOENT != errno) ) { + fprintf(stderr, "mars: failed to unlink %s: %s\r\n", + bin_c, strerror(errno)); + exit(1); + } + } + else if ( 0 != u3e_backup(epo_c, chk_c, c3y) ) { + // copy the latest epoch's snapshot files into chk/ + fprintf(stderr, "mars: failed to copy snapshot\r\n"); + exit(1); + } + } + + u3m_boot(log_u->dir_u->pax_c, (size_t)1 << u3_Host.ops_u.lom_y); // XX confirm + + if ( log_u->dun_d < u3A->eve_d ) { + // XX bad, add to enum + fprintf(stderr, "mars: corrupt pier, snapshot (%" PRIu64 + ") from future (log=%" PRIu64 ")\r\n", + u3A->eve_d, log_u->dun_d); + exit(1); + } + else if ( u3A->eve_d < log_u->epo_d ) { + // XX goto full replay + fprintf(stderr, "mars: corrupt pier, snapshot (%" PRIu64 + ") out of epoch (%" PRIu64 ")\r\n", + u3A->eve_d, log_u->epo_d); + exit(1); + } + + if ( (u3C.wag_w & u3o_yolo) // XX better argument to disable autoroll + || (!log_u->epo_d && log_u->dun_d && !u3A->eve_d) + || (c3n == _disk_vere_diff(log_u)) ) + { + return _epoc_good; + } + else if ( log_u->dun_d != u3A->eve_d ) { + // XX stale snapshot, new binary, error out + // XX bad, add to enum + fprintf(stderr, "stale snapshot, downgrade runtime to replay\r\n"); + exit(1); + } + else if ( c3n == _disk_epoc_roll(log_u, log_u->dun_d) ) { + fprintf(stderr, "disk: failed to initialize epoch\r\n"); + exit(1); + } + + return _epoc_good; + } break; + + default: u3_assert(0); + } + + u3_assert(!"unreachable"); +} + +/* u3_disk_make(): make pier directories. +*/ +c3_o +u3_disk_make(c3_c* pax_c) +{ + // make pier directory + // + if ( -1 == c3_mkdir(pax_c, 0700) ) { + fprintf(stderr, "disk: failed to make pier at %s: %s\r\n", + pax_c, strerror(errno)); + return c3n; + } + + // make $pier/.urb + { + c3_c* urb_c = c3_malloc(6 + strlen(pax_c)); + + strcpy(urb_c, pax_c); + strcat(urb_c, "/.urb"); + + if ( -1 == c3_mkdir(urb_c, 0700) ) { + fprintf(stderr, "disk: failed to make /.urb in %s: %s\r\n", + pax_c, strerror(errno)); + c3_free(urb_c); + return c3n; + } + + c3_free(urb_c); + } + + // make $pier/.urb/put and $pier/.urb/get + // + { + c3_c* dir_c = c3_malloc(10 + strlen(pax_c)); + + strcpy(dir_c, pax_c); + strcat(dir_c, "/.urb/put"); + c3_mkdir(dir_c, 0700); + + strcpy(dir_c, pax_c); + strcat(dir_c, "/.urb/get"); + c3_mkdir(dir_c, 0700); + + c3_free(dir_c); + } + + // make $pier/.urb/log + // + { + c3_c log_c[8193]; + snprintf(log_c, sizeof(log_c), "%s/.urb/log", pax_c); + + if ( -1 == c3_mkdir(log_c, 0700) ) { + fprintf(stderr, "disk: failed to make /.urb/log in %s: %s\r\n", + pax_c, strerror(errno)); + return c3n; + } + + // make epoch zero + // + if ( c3n == _disk_epoc_zero(log_c) ) { + fprintf(stderr, "disk: failed to make epoch zero\r\n"); + return c3n; + } + } + + return c3y; +} + +static u3_dire* +_disk_require_dir(const c3_c* dir_c) +{ + struct stat dir_u; + + if ( stat(dir_c, &dir_u) || !S_ISDIR(dir_u.st_mode) ) { + return 0; + } + + return u3_dire_init(dir_c); +} + +/* u3_disk_load(): load pier directories, log, and snapshot. +*/ +u3_disk* +u3_disk_load(c3_c* pax_c, u3_disk_load_e lod_e) +{ + u3_disk* log_u = c3_calloc(sizeof(*log_u)); + log_u->lok_i = -1; + log_u->liv_o = c3n; + log_u->sav_u.ted_o = c3n; + log_u->sav_u.ted_u.data = log_u; + log_u->put_u.ent_u = log_u->put_u.ext_u = 0; + + // load pier directory + // + if ( 0 == (log_u->dir_u = _disk_require_dir(pax_c)) ) { + fprintf(stderr, "disk: failed to load pier at %s\r\n", pax_c); + c3_free(log_u); + return 0; + } + + // acquire lockfile. + // + log_u->lok_i = _disk_acquire(pax_c); + + // load $pier/.urb + // + { + c3_c* urb_c = c3_malloc(6 + strlen(pax_c)); + + strcpy(urb_c, pax_c); + strcat(urb_c, "/.urb"); + + if ( 0 == (log_u->urb_u = _disk_require_dir(urb_c)) ) { + fprintf(stderr, "disk: failed to load /.urb in %s\r\n", pax_c); + c3_free(urb_c); + c3_free(log_u); // XX leaks dire(s) + return 0; + } + c3_free(urb_c); + } + + // load $pier/.urb/log + // + { + c3_c log_c[8193]; + snprintf(log_c, sizeof(log_c), "%s/.urb/log", pax_c); + + if ( 0 == (log_u->com_u = _disk_require_dir(log_c)) ) { + fprintf(stderr, "disk: failed to load /.urb/log in %s\r\n", pax_c); + c3_free(log_u); // XX leaks dire(s) + return 0; + } + + // XX move this into u3_disk_make + // + if ( u3_dlod_boot == lod_e ) { + if ( _epoc_good != _disk_epoc_load(log_u, 0, lod_e) ) { + fprintf(stderr, "disk: failed to initialize lmdb\r\n"); + c3_free(log_u); // XX leaks dire(s) + return 0; + } + + log_u->liv_o = c3y; + return log_u; + } + + // read metadata (version) from old log / top-level + // + { + u3_meta met_u; + if ( (0 == (log_u->mdb_u = u3_lmdb_init(log_c, u3_Host.ops_u.siz_i))) + || (c3n == u3_disk_read_meta(log_u->mdb_u, &met_u)) ) + { + fprintf(stderr, "disk: failed to read metadata\r\n"); + c3_free(log_u); // XX leaks dire(s) + return 0; + } + log_u->ver_w = met_u.ver_w; + } + + if ( U3D_VERLAT < log_u->ver_w ) { + fprintf(stderr, "disk: unknown log version: %d\r\n", log_u->ver_w); + c3_free(log_u); // XX leaks dire(s) + return 0; + } + else if ( U3D_VERLAT > log_u->ver_w ) { + if ( u3_dlod_epoc == lod_e ) { + fprintf(stderr, "migration required, replay disallowed\r\n"); + exit(1); + } + _disk_migrate_old(log_u); + log_u->liv_o = c3y; + return log_u; + } + + // close top-level lmdb + u3_lmdb_exit(log_u->mdb_u); + log_u->mdb_u = 0; + + // get latest epoch number + c3_d lat_d; + if ( c3n == u3_disk_epoc_last(log_u, &lat_d) ) { + fprintf(stderr, "disk: failed to load epoch number\r\n"); + c3_free(log_u); // XX leaks dire(s) + return 0; + } + + c3_o try_o = c3n; + +try_init: + { + _epoc_kind kin_e = _disk_epoc_load(log_u, lat_d, lod_e); + + switch ( kin_e ) { + case _epoc_good: { +#if defined(DISK_TRACE_JAM) || defined(DISK_TRACE_CUE) + u3t_trace_open(pax_c); +#endif + + log_u->liv_o = c3y; + return log_u; + } break; + + case _epoc_void: // XX could handle more efficiently + + case _epoc_gone: { + // XX if there is no version number, the epoc is invalid + // backup and try previous + + if ( c3y == try_o ) { + fprintf(stderr, "multiple bad epochs, bailing out\r\n"); + c3_free(log_u); // XX leaks dire(s) + return 0; + } + + c3_z dir_z = u3_disk_epoc_list(log_u, 0); + c3_d* sot_d = c3_malloc(dir_z * sizeof(*sot_d)); + c3_z len_z = u3_disk_epoc_list(log_u, sot_d); + + if ( len_z <= 1 ) { + fprintf(stderr, "only epoch is bad, bailing out\r\n"); + c3_free(log_u); // XX leaks dire(s) + return 0; + } + + fprintf(stderr, "disk: latest epoch is 0i%" PRIc3_d " is bogus; " + "falling back to previous at 0i%" PRIc3_d "\r\n", + lat_d, sot_d[1]); + + _disk_epoc_kill(log_u, lat_d); + + lat_d = sot_d[1]; + try_o = c3y; + c3_free(sot_d); + goto try_init; + } break; + + case _epoc_fail: { + fprintf(stderr, "failed to load epoch\r\n"); + c3_free(log_u); // XX leaks dire(s) + return 0; + } break; + + case _epoc_late: { + fprintf(stderr, "upgrade runtime version\r\n"); + c3_free(log_u); // XX leaks dire(s) + return 0; + } + } + } + } +} diff --git a/vere/pkg/vere/dns_sd.h b/vere/pkg/vere/dns_sd.h new file mode 100644 index 0000000..66e494e --- /dev/null +++ b/vere/pkg/vere/dns_sd.h @@ -0,0 +1,1722 @@ +/* -*- Mode: C; tab-width: 4 -*- + * + * Copyright (c) 2003-2004, Apple Computer, Inc. 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 Apple Computer, Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _DNS_SD_H +#define _DNS_SD_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* standard calling convention under Win32 is __stdcall */ +/* Note: When compiling Intel EFI (Extensible Firmware Interface) under MS Visual Studio, the */ +/* _WIN32 symbol is defined by the compiler even though it's NOT compiling code for Windows32 */ +#if defined(_WIN32) && !defined(EFI32) && !defined(EFI64) +#define DNSSD_API __stdcall +#else +#define DNSSD_API +#endif + +/* stdint.h does not exist on FreeBSD 4.x; its types are defined in sys/types.h instead */ +#if defined(__FreeBSD__) && (__FreeBSD__ < 5) +#include + +/* Likewise, on Sun, standard integer types are in sys/types.h */ +#elif defined(__sun__) +#include + +/* EFI does not have stdint.h, or anything else equivalent */ +#elif defined(EFI32) || defined(EFI64) +typedef UINT8 uint8_t; +typedef INT8 int8_t; +typedef UINT16 uint16_t; +typedef INT16 int16_t; +typedef UINT32 uint32_t; +typedef INT32 int32_t; + +/* Windows has its own differences */ +#elif defined(_WIN32) +#include +#define _UNUSED +#define bzero(a, b) memset(a, 0, b) +#ifndef _MSL_STDINT_H +typedef UINT8 uint8_t; +typedef INT8 int8_t; +typedef UINT16 uint16_t; +typedef INT16 int16_t; +typedef UINT32 uint32_t; +typedef INT32 int32_t; +#endif + +/* All other Posix platforms use stdint.h */ +#else +#include +#endif + +/* DNSServiceRef, DNSRecordRef + * + * Opaque internal data types. + * Note: client is responsible for serializing access to these structures if + * they are shared between concurrent threads. + */ + +typedef struct _DNSServiceRef_t *DNSServiceRef; +typedef struct _DNSRecordRef_t *DNSRecordRef; + +/* General flags used in functions defined below */ +enum + { + kDNSServiceFlagsMoreComing = 0x1, + /* MoreComing indicates to a callback that at least one more result is + * queued and will be delivered following immediately after this one. + * Applications should not update their UI to display browse + * results when the MoreComing flag is set, because this would + * result in a great deal of ugly flickering on the screen. + * Applications should instead wait until until MoreComing is not set, + * and then update their UI. + * When MoreComing is not set, that doesn't mean there will be no more + * answers EVER, just that there are no more answers immediately + * available right now at this instant. If more answers become available + * in the future they will be delivered as usual. + */ + + kDNSServiceFlagsAdd = 0x2, + kDNSServiceFlagsDefault = 0x4, + /* Flags for domain enumeration and browse/query reply callbacks. + * "Default" applies only to enumeration and is only valid in + * conjuction with "Add". An enumeration callback with the "Add" + * flag NOT set indicates a "Remove", i.e. the domain is no longer + * valid. + */ + + kDNSServiceFlagsNoAutoRename = 0x8, + /* Flag for specifying renaming behavior on name conflict when registering + * non-shared records. By default, name conflicts are automatically handled + * by renaming the service. NoAutoRename overrides this behavior - with this + * flag set, name conflicts will result in a callback. The NoAutorename flag + * is only valid if a name is explicitly specified when registering a service + * (i.e. the default name is not used.) + */ + + kDNSServiceFlagsShared = 0x10, + kDNSServiceFlagsUnique = 0x20, + /* Flag for registering individual records on a connected + * DNSServiceRef. Shared indicates that there may be multiple records + * with this name on the network (e.g. PTR records). Unique indicates that the + * record's name is to be unique on the network (e.g. SRV records). + */ + + kDNSServiceFlagsBrowseDomains = 0x40, + kDNSServiceFlagsRegistrationDomains = 0x80, + /* Flags for specifying domain enumeration type in DNSServiceEnumerateDomains. + * BrowseDomains enumerates domains recommended for browsing, RegistrationDomains + * enumerates domains recommended for registration. + */ + + kDNSServiceFlagsLongLivedQuery = 0x100, + /* Flag for creating a long-lived unicast query for the DNSServiceQueryRecord call. */ + + kDNSServiceFlagsAllowRemoteQuery = 0x200, + /* Flag for creating a record for which we will answer remote queries + * (queries from hosts more than one hop away; hosts not directly connected to the local link). + */ + + kDNSServiceFlagsForceMulticast = 0x400, + /* Flag for signifying that a query or registration should be performed exclusively via multicast DNS, + * even for a name in a domain (e.g. foo.apple.com.) that would normally imply unicast DNS. + */ + + kDNSServiceFlagsReturnCNAME = 0x800 + /* Flag for returning CNAME records in the DNSServiceQueryRecord call. CNAME records are + * normally followed without indicating to the client that there was a CNAME record. + */ + }; + +/* + * The values for DNS Classes and Types are listed in RFC 1035, and are available + * on every OS in its DNS header file. Unfortunately every OS does not have the + * same header file containing DNS Class and Type constants, and the names of + * the constants are not consistent. For example, BIND 8 uses "T_A", + * BIND 9 uses "ns_t_a", Windows uses "DNS_TYPE_A", etc. + * For this reason, these constants are also listed here, so that code using + * the DNS-SD programming APIs can use these constants, so that the same code + * can compile on all our supported platforms. + */ + +enum + { + kDNSServiceClass_IN = 1 /* Internet */ + }; + +enum + { + kDNSServiceType_A = 1, /* Host address. */ + kDNSServiceType_NS = 2, /* Authoritative server. */ + kDNSServiceType_MD = 3, /* Mail destination. */ + kDNSServiceType_MF = 4, /* Mail forwarder. */ + kDNSServiceType_CNAME = 5, /* Canonical name. */ + kDNSServiceType_SOA = 6, /* Start of authority zone. */ + kDNSServiceType_MB = 7, /* Mailbox domain name. */ + kDNSServiceType_MG = 8, /* Mail group member. */ + kDNSServiceType_MR = 9, /* Mail rename name. */ + kDNSServiceType_NULL = 10, /* Null resource record. */ + kDNSServiceType_WKS = 11, /* Well known service. */ + kDNSServiceType_PTR = 12, /* Domain name pointer. */ + kDNSServiceType_HINFO = 13, /* Host information. */ + kDNSServiceType_MINFO = 14, /* Mailbox information. */ + kDNSServiceType_MX = 15, /* Mail routing information. */ + kDNSServiceType_TXT = 16, /* One or more text strings. */ + kDNSServiceType_RP = 17, /* Responsible person. */ + kDNSServiceType_AFSDB = 18, /* AFS cell database. */ + kDNSServiceType_X25 = 19, /* X_25 calling address. */ + kDNSServiceType_ISDN = 20, /* ISDN calling address. */ + kDNSServiceType_RT = 21, /* Router. */ + kDNSServiceType_NSAP = 22, /* NSAP address. */ + kDNSServiceType_NSAP_PTR = 23, /* Reverse NSAP lookup (deprecated). */ + kDNSServiceType_SIG = 24, /* Security signature. */ + kDNSServiceType_KEY = 25, /* Security key. */ + kDNSServiceType_PX = 26, /* X.400 mail mapping. */ + kDNSServiceType_GPOS = 27, /* Geographical position (withdrawn). */ + kDNSServiceType_AAAA = 28, /* IPv6 Address. */ + kDNSServiceType_LOC = 29, /* Location Information. */ + kDNSServiceType_NXT = 30, /* Next domain (security). */ + kDNSServiceType_EID = 31, /* Endpoint identifier. */ + kDNSServiceType_NIMLOC = 32, /* Nimrod Locator. */ + kDNSServiceType_SRV = 33, /* Server Selection. */ + kDNSServiceType_ATMA = 34, /* ATM Address */ + kDNSServiceType_NAPTR = 35, /* Naming Authority PoinTeR */ + kDNSServiceType_KX = 36, /* Key Exchange */ + kDNSServiceType_CERT = 37, /* Certification record */ + kDNSServiceType_A6 = 38, /* IPv6 Address (deprecated) */ + kDNSServiceType_DNAME = 39, /* Non-terminal DNAME (for IPv6) */ + kDNSServiceType_SINK = 40, /* Kitchen sink (experimentatl) */ + kDNSServiceType_OPT = 41, /* EDNS0 option (meta-RR) */ + kDNSServiceType_TKEY = 249, /* Transaction key */ + kDNSServiceType_TSIG = 250, /* Transaction signature. */ + kDNSServiceType_IXFR = 251, /* Incremental zone transfer. */ + kDNSServiceType_AXFR = 252, /* Transfer zone of authority. */ + kDNSServiceType_MAILB = 253, /* Transfer mailbox records. */ + kDNSServiceType_MAILA = 254, /* Transfer mail agent records. */ + kDNSServiceType_ANY = 255 /* Wildcard match. */ + }; + + +/* possible error code values */ +enum + { + kDNSServiceErr_NoError = 0, + kDNSServiceErr_Unknown = -65537, /* 0xFFFE FFFF */ + kDNSServiceErr_NoSuchName = -65538, + kDNSServiceErr_NoMemory = -65539, + kDNSServiceErr_BadParam = -65540, + kDNSServiceErr_BadReference = -65541, + kDNSServiceErr_BadState = -65542, + kDNSServiceErr_BadFlags = -65543, + kDNSServiceErr_Unsupported = -65544, + kDNSServiceErr_NotInitialized = -65545, + kDNSServiceErr_AlreadyRegistered = -65547, + kDNSServiceErr_NameConflict = -65548, + kDNSServiceErr_Invalid = -65549, + kDNSServiceErr_Firewall = -65550, + kDNSServiceErr_Incompatible = -65551, /* client library incompatible with daemon */ + kDNSServiceErr_BadInterfaceIndex = -65552, + kDNSServiceErr_Refused = -65553, + kDNSServiceErr_NoSuchRecord = -65554, + kDNSServiceErr_NoAuth = -65555, + kDNSServiceErr_NoSuchKey = -65556, + kDNSServiceErr_NATTraversal = -65557, + kDNSServiceErr_DoubleNAT = -65558, + kDNSServiceErr_BadTime = -65559 + /* mDNS Error codes are in the range + * FFFE FF00 (-65792) to FFFE FFFF (-65537) */ + }; + + +/* Maximum length, in bytes, of a service name represented as a */ +/* literal C-String, including the terminating NULL at the end. */ + +#define kDNSServiceMaxServiceName 64 + +/* Maximum length, in bytes, of a domain name represented as an *escaped* C-String */ +/* including the final trailing dot, and the C-String terminating NULL at the end. */ + +#define kDNSServiceMaxDomainName 1005 + +/* + * Notes on DNS Name Escaping + * -- or -- + * "Why is kDNSServiceMaxDomainName 1005, when the maximum legal domain name is 255 bytes?" + * + * All strings used in DNS-SD are UTF-8 strings. + * With few exceptions, most are also escaped using standard DNS escaping rules: + * + * '\\' represents a single literal '\' in the name + * '\.' represents a single literal '.' in the name + * '\ddd', where ddd is a three-digit decimal value from 000 to 255, + * represents a single literal byte with that value. + * A bare unescaped '.' is a label separator, marking a boundary between domain and subdomain. + * + * The exceptions, that do not use escaping, are the routines where the full + * DNS name of a resource is broken, for convenience, into servicename/regtype/domain. + * In these routines, the "servicename" is NOT escaped. It does not need to be, since + * it is, by definition, just a single literal string. Any characters in that string + * represent exactly what they are. The "regtype" portion is, technically speaking, + * escaped, but since legal regtypes are only allowed to contain letters, digits, + * and hyphens, there is nothing to escape, so the issue is moot. The "domain" + * portion is also escaped, though most domains in use on the public Internet + * today, like regtypes, don't contain any characters that need to be escaped. + * As DNS-SD becomes more popular, rich-text domains for service discovery will + * become common, so software should be written to cope with domains with escaping. + * + * The servicename may be up to 63 bytes of UTF-8 text (not counting the C-String + * terminating NULL at the end). The regtype is of the form _service._tcp or + * _service._udp, where the "service" part is 1-14 characters, which may be + * letters, digits, or hyphens. The domain part of the three-part name may be + * any legal domain, providing that the resulting servicename+regtype+domain + * name does not exceed 255 bytes. + * + * For most software, these issues are transparent. When browsing, the discovered + * servicenames should simply be displayed as-is. When resolving, the discovered + * servicename/regtype/domain are simply passed unchanged to DNSServiceResolve(). + * When a DNSServiceResolve() succeeds, the returned fullname is already in + * the correct format to pass to standard system DNS APIs such as res_query(). + * For converting from servicename/regtype/domain to a single properly-escaped + * full DNS name, the helper function DNSServiceConstructFullName() is provided. + * + * The following (highly contrived) example illustrates the escaping process. + * Suppose you have an service called "Dr. Smith\Dr. Johnson", of type "_ftp._tcp" + * in subdomain "4th. Floor" of subdomain "Building 2" of domain "apple.com." + * The full (escaped) DNS name of this service's SRV record would be: + * Dr\.\032Smith\\Dr\.\032Johnson._ftp._tcp.4th\.\032Floor.Building\0322.apple.com. + */ + + +/* + * Constants for specifying an interface index + * + * Specific interface indexes are identified via a 32-bit unsigned integer returned + * by the if_nametoindex() family of calls. + * + * If the client passes 0 for interface index, that means "do the right thing", + * which (at present) means, "if the name is in an mDNS local multicast domain + * (e.g. 'local.', '254.169.in-addr.arpa.', '{8,9,A,B}.E.F.ip6.arpa.') then multicast + * on all applicable interfaces, otherwise send via unicast to the appropriate + * DNS server." Normally, most clients will use 0 for interface index to + * automatically get the default sensible behaviour. + * + * If the client passes a positive interface index, then for multicast names that + * indicates to do the operation only on that one interface. For unicast names the + * interface index is ignored unless kDNSServiceFlagsForceMulticast is also set. + * + * If the client passes kDNSServiceInterfaceIndexLocalOnly when registering + * a service, then that service will be found *only* by other local clients + * on the same machine that are browsing using kDNSServiceInterfaceIndexLocalOnly + * or kDNSServiceInterfaceIndexAny. + * If a client has a 'private' service, accessible only to other processes + * running on the same machine, this allows the client to advertise that service + * in a way such that it does not inadvertently appear in service lists on + * all the other machines on the network. + * + * If the client passes kDNSServiceInterfaceIndexLocalOnly when browsing + * then it will find *all* records registered on that same local machine. + * Clients explicitly wishing to discover *only* LocalOnly services can + * accomplish this by inspecting the interfaceIndex of each service reported + * to their DNSServiceBrowseReply() callback function, and discarding those + * where the interface index is not kDNSServiceInterfaceIndexLocalOnly. + */ + +#define kDNSServiceInterfaceIndexAny 0 +#define kDNSServiceInterfaceIndexLocalOnly ( (uint32_t) -1 ) + + +typedef uint32_t DNSServiceFlags; +typedef int32_t DNSServiceErrorType; + + +/********************************************************************************************* + * + * Unix Domain Socket access, DNSServiceRef deallocation, and data processing functions + * + *********************************************************************************************/ + + +/* DNSServiceRefSockFD() + * + * Access underlying Unix domain socket for an initialized DNSServiceRef. + * The DNS Service Discovery implmementation uses this socket to communicate between + * the client and the mDNSResponder daemon. The application MUST NOT directly read from + * or write to this socket. Access to the socket is provided so that it can be used as a + * run loop source, or in a select() loop: when data is available for reading on the socket, + * DNSServiceProcessResult() should be called, which will extract the daemon's reply from + * the socket, and pass it to the appropriate application callback. By using a run loop or + * select(), results from the daemon can be processed asynchronously. Without using these + * constructs, DNSServiceProcessResult() will block until the response from the daemon arrives. + * The client is responsible for ensuring that the data on the socket is processed in a timely + * fashion - the daemon may terminate its connection with a client that does not clear its + * socket buffer. + * + * sdRef: A DNSServiceRef initialized by any of the DNSService calls. + * + * return value: The DNSServiceRef's underlying socket descriptor, or -1 on + * error. + */ + +int DNSSD_API DNSServiceRefSockFD(DNSServiceRef sdRef); + + +/* DNSServiceProcessResult() + * + * Read a reply from the daemon, calling the appropriate application callback. This call will + * block until the daemon's response is received. Use DNSServiceRefSockFD() in + * conjunction with a run loop or select() to determine the presence of a response from the + * server before calling this function to process the reply without blocking. Call this function + * at any point if it is acceptable to block until the daemon's response arrives. Note that the + * client is responsible for ensuring that DNSServiceProcessResult() is called whenever there is + * a reply from the daemon - the daemon may terminate its connection with a client that does not + * process the daemon's responses. + * + * sdRef: A DNSServiceRef initialized by any of the DNSService calls + * that take a callback parameter. + * + * return value: Returns kDNSServiceErr_NoError on success, otherwise returns + * an error code indicating the specific failure that occurred. + */ + +DNSServiceErrorType DNSSD_API DNSServiceProcessResult(DNSServiceRef sdRef); + + +/* DNSServiceRefDeallocate() + * + * Terminate a connection with the daemon and free memory associated with the DNSServiceRef. + * Any services or records registered with this DNSServiceRef will be deregistered. Any + * Browse, Resolve, or Query operations called with this reference will be terminated. + * + * Note: If the reference's underlying socket is used in a run loop or select() call, it should + * be removed BEFORE DNSServiceRefDeallocate() is called, as this function closes the reference's + * socket. + * + * Note: If the reference was initialized with DNSServiceCreateConnection(), any DNSRecordRefs + * created via this reference will be invalidated by this call - the resource records are + * deregistered, and their DNSRecordRefs may not be used in subsequent functions. Similarly, + * if the reference was initialized with DNSServiceRegister, and an extra resource record was + * added to the service via DNSServiceAddRecord(), the DNSRecordRef created by the Add() call + * is invalidated when this function is called - the DNSRecordRef may not be used in subsequent + * functions. + * + * Note: This call is to be used only with the DNSServiceRef defined by this API. It is + * not compatible with dns_service_discovery_ref objects defined in the legacy Mach-based + * DNSServiceDiscovery.h API. + * + * sdRef: A DNSServiceRef initialized by any of the DNSService calls. + * + */ + +void DNSSD_API DNSServiceRefDeallocate(DNSServiceRef sdRef); + + +/********************************************************************************************* + * + * Domain Enumeration + * + *********************************************************************************************/ + +/* DNSServiceEnumerateDomains() + * + * Asynchronously enumerate domains available for browsing and registration. + * + * The enumeration MUST be cancelled via DNSServiceRefDeallocate() when no more domains + * are to be found. + * + * Note that the names returned are (like all of DNS-SD) UTF-8 strings, + * and are escaped using standard DNS escaping rules. + * (See "Notes on DNS Name Escaping" earlier in this file for more details.) + * A graphical browser displaying a hierarchical tree-structured view should cut + * the names at the bare dots to yield individual labels, then de-escape each + * label according to the escaping rules, and then display the resulting UTF-8 text. + * + * DNSServiceDomainEnumReply Callback Parameters: + * + * sdRef: The DNSServiceRef initialized by DNSServiceEnumerateDomains(). + * + * flags: Possible values are: + * kDNSServiceFlagsMoreComing + * kDNSServiceFlagsAdd + * kDNSServiceFlagsDefault + * + * interfaceIndex: Specifies the interface on which the domain exists. (The index for a given + * interface is determined via the if_nametoindex() family of calls.) + * + * errorCode: Will be kDNSServiceErr_NoError (0) on success, otherwise indicates + * the failure that occurred (other parameters are undefined if errorCode is nonzero). + * + * replyDomain: The name of the domain. + * + * context: The context pointer passed to DNSServiceEnumerateDomains. + * + */ + +typedef void (DNSSD_API *DNSServiceDomainEnumReply) + ( + DNSServiceRef sdRef, + DNSServiceFlags flags, + uint32_t interfaceIndex, + DNSServiceErrorType errorCode, + const char *replyDomain, + void *context + ); + + +/* DNSServiceEnumerateDomains() Parameters: + * + * + * sdRef: A pointer to an uninitialized DNSServiceRef. If the call succeeds + * then it initializes the DNSServiceRef, returns kDNSServiceErr_NoError, + * and the enumeration operation will run indefinitely until the client + * terminates it by passing this DNSServiceRef to DNSServiceRefDeallocate(). + * + * flags: Possible values are: + * kDNSServiceFlagsBrowseDomains to enumerate domains recommended for browsing. + * kDNSServiceFlagsRegistrationDomains to enumerate domains recommended + * for registration. + * + * interfaceIndex: If non-zero, specifies the interface on which to look for domains. + * (the index for a given interface is determined via the if_nametoindex() + * family of calls.) Most applications will pass 0 to enumerate domains on + * all interfaces. See "Constants for specifying an interface index" for more details. + * + * callBack: The function to be called when a domain is found or the call asynchronously + * fails. + * + * context: An application context pointer which is passed to the callback function + * (may be NULL). + * + * return value: Returns kDNSServiceErr_NoError on succeses (any subsequent, asynchronous + * errors are delivered to the callback), otherwise returns an error code indicating + * the error that occurred (the callback is not invoked and the DNSServiceRef + * is not initialized.) + */ + +DNSServiceErrorType DNSSD_API DNSServiceEnumerateDomains + ( + DNSServiceRef *sdRef, + DNSServiceFlags flags, + uint32_t interfaceIndex, + DNSServiceDomainEnumReply callBack, + void *context /* may be NULL */ + ); + + +/********************************************************************************************* + * + * Service Registration + * + *********************************************************************************************/ + +/* Register a service that is discovered via Browse() and Resolve() calls. + * + * + * DNSServiceRegisterReply() Callback Parameters: + * + * sdRef: The DNSServiceRef initialized by DNSServiceRegister(). + * + * flags: Currently unused, reserved for future use. + * + * errorCode: Will be kDNSServiceErr_NoError on success, otherwise will + * indicate the failure that occurred (including name conflicts, + * if the kDNSServiceFlagsNoAutoRename flag was used when registering.) + * Other parameters are undefined if errorCode is nonzero. + * + * name: The service name registered (if the application did not specify a name in + * DNSServiceRegister(), this indicates what name was automatically chosen). + * + * regtype: The type of service registered, as it was passed to the callout. + * + * domain: The domain on which the service was registered (if the application did not + * specify a domain in DNSServiceRegister(), this indicates the default domain + * on which the service was registered). + * + * context: The context pointer that was passed to the callout. + * + */ + +typedef void (DNSSD_API *DNSServiceRegisterReply) + ( + DNSServiceRef sdRef, + DNSServiceFlags flags, + DNSServiceErrorType errorCode, + const char *name, + const char *regtype, + const char *domain, + void *context + ); + + +/* DNSServiceRegister() Parameters: + * + * sdRef: A pointer to an uninitialized DNSServiceRef. If the call succeeds + * then it initializes the DNSServiceRef, returns kDNSServiceErr_NoError, + * and the registration will remain active indefinitely until the client + * terminates it by passing this DNSServiceRef to DNSServiceRefDeallocate(). + * + * interfaceIndex: If non-zero, specifies the interface on which to register the service + * (the index for a given interface is determined via the if_nametoindex() + * family of calls.) Most applications will pass 0 to register on all + * available interfaces. See "Constants for specifying an interface index" for more details. + * + * flags: Indicates the renaming behavior on name conflict (most applications + * will pass 0). See flag definitions above for details. + * + * name: If non-NULL, specifies the service name to be registered. + * Most applications will not specify a name, in which case the computer + * name is used (this name is communicated to the client via the callback). + * If a name is specified, it must be 1-63 bytes of UTF-8 text. + * If the name is longer than 63 bytes it will be automatically truncated + * to a legal length, unless the NoAutoRename flag is set, + * in which case kDNSServiceErr_BadParam will be returned. + * + * regtype: The service type followed by the protocol, separated by a dot + * (e.g. "_ftp._tcp"). The service type must be an underscore, followed + * by 1-14 characters, which may be letters, digits, or hyphens. + * The transport protocol must be "_tcp" or "_udp". New service types + * should be registered at . + * + * domain: If non-NULL, specifies the domain on which to advertise the service. + * Most applications will not specify a domain, instead automatically + * registering in the default domain(s). + * + * host: If non-NULL, specifies the SRV target host name. Most applications + * will not specify a host, instead automatically using the machine's + * default host name(s). Note that specifying a non-NULL host does NOT + * create an address record for that host - the application is responsible + * for ensuring that the appropriate address record exists, or creating it + * via DNSServiceRegisterRecord(). + * + * port: The port, in network byte order, on which the service accepts connections. + * Pass 0 for a "placeholder" service (i.e. a service that will not be discovered + * by browsing, but will cause a name conflict if another client tries to + * register that same name). Most clients will not use placeholder services. + * + * txtLen: The length of the txtRecord, in bytes. Must be zero if the txtRecord is NULL. + * + * txtRecord: The TXT record rdata. A non-NULL txtRecord MUST be a properly formatted DNS + * TXT record, i.e. ... + * Passing NULL for the txtRecord is allowed as a synonym for txtLen=1, txtRecord="", + * i.e. it creates a TXT record of length one containing a single empty string. + * RFC 1035 doesn't allow a TXT record to contain *zero* strings, so a single empty + * string is the smallest legal DNS TXT record. + * As with the other parameters, the DNSServiceRegister call copies the txtRecord + * data; e.g. if you allocated the storage for the txtRecord parameter with malloc() + * then you can safely free that memory right after the DNSServiceRegister call returns. + * + * callBack: The function to be called when the registration completes or asynchronously + * fails. The client MAY pass NULL for the callback - The client will NOT be notified + * of the default values picked on its behalf, and the client will NOT be notified of any + * asynchronous errors (e.g. out of memory errors, etc.) that may prevent the registration + * of the service. The client may NOT pass the NoAutoRename flag if the callback is NULL. + * The client may still deregister the service at any time via DNSServiceRefDeallocate(). + * + * context: An application context pointer which is passed to the callback function + * (may be NULL). + * + * return value: Returns kDNSServiceErr_NoError on succeses (any subsequent, asynchronous + * errors are delivered to the callback), otherwise returns an error code indicating + * the error that occurred (the callback is never invoked and the DNSServiceRef + * is not initialized.) + */ + +DNSServiceErrorType DNSSD_API DNSServiceRegister + ( + DNSServiceRef *sdRef, + DNSServiceFlags flags, + uint32_t interfaceIndex, + const char *name, /* may be NULL */ + const char *regtype, + const char *domain, /* may be NULL */ + const char *host, /* may be NULL */ + uint16_t port, + uint16_t txtLen, + const void *txtRecord, /* may be NULL */ + DNSServiceRegisterReply callBack, /* may be NULL */ + void *context /* may be NULL */ + ); + + +/* DNSServiceAddRecord() + * + * Add a record to a registered service. The name of the record will be the same as the + * registered service's name. + * The record can later be updated or deregistered by passing the RecordRef initialized + * by this function to DNSServiceUpdateRecord() or DNSServiceRemoveRecord(). + * + * Note that the DNSServiceAddRecord/UpdateRecord/RemoveRecord are *NOT* thread-safe + * with respect to a single DNSServiceRef. If you plan to have multiple threads + * in your program simultaneously add, update, or remove records from the same + * DNSServiceRef, then it's the caller's responsibility to use a mutext lock + * or take similar appropriate precautions to serialize those calls. + * + * + * Parameters; + * + * sdRef: A DNSServiceRef initialized by DNSServiceRegister(). + * + * RecordRef: A pointer to an uninitialized DNSRecordRef. Upon succesfull completion of this + * call, this ref may be passed to DNSServiceUpdateRecord() or DNSServiceRemoveRecord(). + * If the above DNSServiceRef is passed to DNSServiceRefDeallocate(), RecordRef is also + * invalidated and may not be used further. + * + * flags: Currently ignored, reserved for future use. + * + * rrtype: The type of the record (e.g. kDNSServiceType_TXT, kDNSServiceType_SRV, etc) + * + * rdlen: The length, in bytes, of the rdata. + * + * rdata: The raw rdata to be contained in the added resource record. + * + * ttl: The time to live of the resource record, in seconds. Pass 0 to use a default value. + * + * return value: Returns kDNSServiceErr_NoError on success, otherwise returns an + * error code indicating the error that occurred (the RecordRef is not initialized). + */ + +DNSServiceErrorType DNSSD_API DNSServiceAddRecord + ( + DNSServiceRef sdRef, + DNSRecordRef *RecordRef, + DNSServiceFlags flags, + uint16_t rrtype, + uint16_t rdlen, + const void *rdata, + uint32_t ttl + ); + + +/* DNSServiceUpdateRecord + * + * Update a registered resource record. The record must either be: + * - The primary txt record of a service registered via DNSServiceRegister() + * - A record added to a registered service via DNSServiceAddRecord() + * - An individual record registered by DNSServiceRegisterRecord() + * + * + * Parameters: + * + * sdRef: A DNSServiceRef that was initialized by DNSServiceRegister() + * or DNSServiceCreateConnection(). + * + * RecordRef: A DNSRecordRef initialized by DNSServiceAddRecord, or NULL to update the + * service's primary txt record. + * + * flags: Currently ignored, reserved for future use. + * + * rdlen: The length, in bytes, of the new rdata. + * + * rdata: The new rdata to be contained in the updated resource record. + * + * ttl: The time to live of the updated resource record, in seconds. + * + * return value: Returns kDNSServiceErr_NoError on success, otherwise returns an + * error code indicating the error that occurred. + */ + +DNSServiceErrorType DNSSD_API DNSServiceUpdateRecord + ( + DNSServiceRef sdRef, + DNSRecordRef RecordRef, /* may be NULL */ + DNSServiceFlags flags, + uint16_t rdlen, + const void *rdata, + uint32_t ttl + ); + + +/* DNSServiceRemoveRecord + * + * Remove a record previously added to a service record set via DNSServiceAddRecord(), or deregister + * an record registered individually via DNSServiceRegisterRecord(). + * + * Parameters: + * + * sdRef: A DNSServiceRef initialized by DNSServiceRegister() (if the + * record being removed was registered via DNSServiceAddRecord()) or by + * DNSServiceCreateConnection() (if the record being removed was registered via + * DNSServiceRegisterRecord()). + * + * recordRef: A DNSRecordRef initialized by a successful call to DNSServiceAddRecord() + * or DNSServiceRegisterRecord(). + * + * flags: Currently ignored, reserved for future use. + * + * return value: Returns kDNSServiceErr_NoError on success, otherwise returns an + * error code indicating the error that occurred. + */ + +DNSServiceErrorType DNSSD_API DNSServiceRemoveRecord + ( + DNSServiceRef sdRef, + DNSRecordRef RecordRef, + DNSServiceFlags flags + ); + + +/********************************************************************************************* + * + * Service Discovery + * + *********************************************************************************************/ + +/* Browse for instances of a service. + * + * + * DNSServiceBrowseReply() Parameters: + * + * sdRef: The DNSServiceRef initialized by DNSServiceBrowse(). + * + * flags: Possible values are kDNSServiceFlagsMoreComing and kDNSServiceFlagsAdd. + * See flag definitions for details. + * + * interfaceIndex: The interface on which the service is advertised. This index should + * be passed to DNSServiceResolve() when resolving the service. + * + * errorCode: Will be kDNSServiceErr_NoError (0) on success, otherwise will + * indicate the failure that occurred. Other parameters are undefined if + * the errorCode is nonzero. + * + * serviceName: The discovered service name. This name should be displayed to the user, + * and stored for subsequent use in the DNSServiceResolve() call. + * + * regtype: The service type, which is usually (but not always) the same as was passed + * to DNSServiceBrowse(). One case where the discovered service type may + * not be the same as the requested service type is when using subtypes: + * The client may want to browse for only those ftp servers that allow + * anonymous connections. The client will pass the string "_ftp._tcp,_anon" + * to DNSServiceBrowse(), but the type of the service that's discovered + * is simply "_ftp._tcp". The regtype for each discovered service instance + * should be stored along with the name, so that it can be passed to + * DNSServiceResolve() when the service is later resolved. + * + * domain: The domain of the discovered service instance. This may or may not be the + * same as the domain that was passed to DNSServiceBrowse(). The domain for each + * discovered service instance should be stored along with the name, so that + * it can be passed to DNSServiceResolve() when the service is later resolved. + * + * context: The context pointer that was passed to the callout. + * + */ + +typedef void (DNSSD_API *DNSServiceBrowseReply) + ( + DNSServiceRef sdRef, + DNSServiceFlags flags, + uint32_t interfaceIndex, + DNSServiceErrorType errorCode, + const char *serviceName, + const char *regtype, + const char *replyDomain, + void *context + ); + + +/* DNSServiceBrowse() Parameters: + * + * sdRef: A pointer to an uninitialized DNSServiceRef. If the call succeeds + * then it initializes the DNSServiceRef, returns kDNSServiceErr_NoError, + * and the browse operation will run indefinitely until the client + * terminates it by passing this DNSServiceRef to DNSServiceRefDeallocate(). + * + * flags: Currently ignored, reserved for future use. + * + * interfaceIndex: If non-zero, specifies the interface on which to browse for services + * (the index for a given interface is determined via the if_nametoindex() + * family of calls.) Most applications will pass 0 to browse on all available + * interfaces. See "Constants for specifying an interface index" for more details. + * + * regtype: The service type being browsed for followed by the protocol, separated by a + * dot (e.g. "_ftp._tcp"). The transport protocol must be "_tcp" or "_udp". + * + * domain: If non-NULL, specifies the domain on which to browse for services. + * Most applications will not specify a domain, instead browsing on the + * default domain(s). + * + * callBack: The function to be called when an instance of the service being browsed for + * is found, or if the call asynchronously fails. + * + * context: An application context pointer which is passed to the callback function + * (may be NULL). + * + * return value: Returns kDNSServiceErr_NoError on succeses (any subsequent, asynchronous + * errors are delivered to the callback), otherwise returns an error code indicating + * the error that occurred (the callback is not invoked and the DNSServiceRef + * is not initialized.) + */ + +DNSServiceErrorType DNSSD_API DNSServiceBrowse + ( + DNSServiceRef *sdRef, + DNSServiceFlags flags, + uint32_t interfaceIndex, + const char *regtype, + const char *domain, /* may be NULL */ + DNSServiceBrowseReply callBack, + void *context /* may be NULL */ + ); + + +/* DNSServiceResolve() + * + * Resolve a service name discovered via DNSServiceBrowse() to a target host name, port number, and + * txt record. + * + * Note: Applications should NOT use DNSServiceResolve() solely for txt record monitoring - use + * DNSServiceQueryRecord() instead, as it is more efficient for this task. + * + * Note: When the desired results have been returned, the client MUST terminate the resolve by calling + * DNSServiceRefDeallocate(). + * + * Note: DNSServiceResolve() behaves correctly for typical services that have a single SRV record + * and a single TXT record. To resolve non-standard services with multiple SRV or TXT records, + * DNSServiceQueryRecord() should be used. + * + * DNSServiceResolveReply Callback Parameters: + * + * sdRef: The DNSServiceRef initialized by DNSServiceResolve(). + * + * flags: Currently unused, reserved for future use. + * + * interfaceIndex: The interface on which the service was resolved. + * + * errorCode: Will be kDNSServiceErr_NoError (0) on success, otherwise will + * indicate the failure that occurred. Other parameters are undefined if + * the errorCode is nonzero. + * + * fullname: The full service domain name, in the form ... + * (This name is escaped following standard DNS rules, making it suitable for + * passing to standard system DNS APIs such as res_query(), or to the + * special-purpose functions included in this API that take fullname parameters. + * See "Notes on DNS Name Escaping" earlier in this file for more details.) + * + * hosttarget: The target hostname of the machine providing the service. This name can + * be passed to functions like gethostbyname() to identify the host's IP address. + * + * port: The port, in network byte order, on which connections are accepted for this service. + * + * txtLen: The length of the txt record, in bytes. + * + * txtRecord: The service's primary txt record, in standard txt record format. + * + * context: The context pointer that was passed to the callout. + * + * NOTE: In earlier versions of this header file, the txtRecord parameter was declared "const char *" + * This is incorrect, since it contains length bytes which are values in the range 0 to 255, not -128 to +127. + * Depending on your compiler settings, this change may cause signed/unsigned mismatch warnings. + * These should be fixed by updating your own callback function definition to match the corrected + * function signature using "const unsigned char *txtRecord". Making this change may also fix inadvertent + * bugs in your callback function, where it could have incorrectly interpreted a length byte with value 250 + * as being -6 instead, with various bad consequences ranging from incorrect operation to software crashes. + * If you need to maintain portable code that will compile cleanly with both the old and new versions of + * this header file, you should update your callback function definition to use the correct unsigned value, + * and then in the place where you pass your callback function to DNSServiceResolve(), use a cast to eliminate + * the compiler warning, e.g.: + * DNSServiceResolve(sd, flags, index, name, regtype, domain, (DNSServiceResolveReply)MyCallback, context); + * This will ensure that your code compiles cleanly without warnings (and more importantly, works correctly) + * with both the old header and with the new corrected version. + * + */ + +typedef void (DNSSD_API *DNSServiceResolveReply) + ( + DNSServiceRef sdRef, + DNSServiceFlags flags, + uint32_t interfaceIndex, + DNSServiceErrorType errorCode, + const char *fullname, + const char *hosttarget, + uint16_t port, + uint16_t txtLen, + const unsigned char *txtRecord, + void *context + ); + + +/* DNSServiceResolve() Parameters + * + * sdRef: A pointer to an uninitialized DNSServiceRef. If the call succeeds + * then it initializes the DNSServiceRef, returns kDNSServiceErr_NoError, + * and the resolve operation will run indefinitely until the client + * terminates it by passing this DNSServiceRef to DNSServiceRefDeallocate(). + * + * flags: Currently ignored, reserved for future use. + * + * interfaceIndex: The interface on which to resolve the service. If this resolve call is + * as a result of a currently active DNSServiceBrowse() operation, then the + * interfaceIndex should be the index reported in the DNSServiceBrowseReply + * callback. If this resolve call is using information previously saved + * (e.g. in a preference file) for later use, then use interfaceIndex 0, because + * the desired service may now be reachable via a different physical interface. + * See "Constants for specifying an interface index" for more details. + * + * name: The name of the service instance to be resolved, as reported to the + * DNSServiceBrowseReply() callback. + * + * regtype: The type of the service instance to be resolved, as reported to the + * DNSServiceBrowseReply() callback. + * + * domain: The domain of the service instance to be resolved, as reported to the + * DNSServiceBrowseReply() callback. + * + * callBack: The function to be called when a result is found, or if the call + * asynchronously fails. + * + * context: An application context pointer which is passed to the callback function + * (may be NULL). + * + * return value: Returns kDNSServiceErr_NoError on succeses (any subsequent, asynchronous + * errors are delivered to the callback), otherwise returns an error code indicating + * the error that occurred (the callback is never invoked and the DNSServiceRef + * is not initialized.) + */ + +DNSServiceErrorType DNSSD_API DNSServiceResolve + ( + DNSServiceRef *sdRef, + DNSServiceFlags flags, + uint32_t interfaceIndex, + const char *name, + const char *regtype, + const char *domain, + DNSServiceResolveReply callBack, + void *context /* may be NULL */ + ); + + +/********************************************************************************************* + * + * Special Purpose Calls (most applications will not use these) + * + *********************************************************************************************/ + +/* DNSServiceCreateConnection() + * + * Create a connection to the daemon allowing efficient registration of + * multiple individual records. + * + * + * Parameters: + * + * sdRef: A pointer to an uninitialized DNSServiceRef. Deallocating + * the reference (via DNSServiceRefDeallocate()) severs the + * connection and deregisters all records registered on this connection. + * + * return value: Returns kDNSServiceErr_NoError on success, otherwise returns + * an error code indicating the specific failure that occurred (in which + * case the DNSServiceRef is not initialized). + */ + +DNSServiceErrorType DNSSD_API DNSServiceCreateConnection(DNSServiceRef *sdRef); + + +/* DNSServiceRegisterRecord + * + * Register an individual resource record on a connected DNSServiceRef. + * + * Note that name conflicts occurring for records registered via this call must be handled + * by the client in the callback. + * + * + * DNSServiceRegisterRecordReply() parameters: + * + * sdRef: The connected DNSServiceRef initialized by + * DNSServiceCreateConnection(). + * + * RecordRef: The DNSRecordRef initialized by DNSServiceRegisterRecord(). If the above + * DNSServiceRef is passed to DNSServiceRefDeallocate(), this DNSRecordRef is + * invalidated, and may not be used further. + * + * flags: Currently unused, reserved for future use. + * + * errorCode: Will be kDNSServiceErr_NoError on success, otherwise will + * indicate the failure that occurred (including name conflicts.) + * Other parameters are undefined if errorCode is nonzero. + * + * context: The context pointer that was passed to the callout. + * + */ + + typedef void (DNSSD_API *DNSServiceRegisterRecordReply) + ( + DNSServiceRef sdRef, + DNSRecordRef RecordRef, + DNSServiceFlags flags, + DNSServiceErrorType errorCode, + void *context + ); + + +/* DNSServiceRegisterRecord() Parameters: + * + * sdRef: A DNSServiceRef initialized by DNSServiceCreateConnection(). + * + * RecordRef: A pointer to an uninitialized DNSRecordRef. Upon succesfull completion of this + * call, this ref may be passed to DNSServiceUpdateRecord() or DNSServiceRemoveRecord(). + * (To deregister ALL records registered on a single connected DNSServiceRef + * and deallocate each of their corresponding DNSServiceRecordRefs, call + * DNSServiceRefDealloocate()). + * + * flags: Possible values are kDNSServiceFlagsShared or kDNSServiceFlagsUnique + * (see flag type definitions for details). + * + * interfaceIndex: If non-zero, specifies the interface on which to register the record + * (the index for a given interface is determined via the if_nametoindex() + * family of calls.) Passing 0 causes the record to be registered on all interfaces. + * See "Constants for specifying an interface index" for more details. + * + * fullname: The full domain name of the resource record. + * + * rrtype: The numerical type of the resource record (e.g. kDNSServiceType_PTR, kDNSServiceType_SRV, etc) + * + * rrclass: The class of the resource record (usually kDNSServiceClass_IN) + * + * rdlen: Length, in bytes, of the rdata. + * + * rdata: A pointer to the raw rdata, as it is to appear in the DNS record. + * + * ttl: The time to live of the resource record, in seconds. Pass 0 to use a default value. + * + * callBack: The function to be called when a result is found, or if the call + * asynchronously fails (e.g. because of a name conflict.) + * + * context: An application context pointer which is passed to the callback function + * (may be NULL). + * + * return value: Returns kDNSServiceErr_NoError on succeses (any subsequent, asynchronous + * errors are delivered to the callback), otherwise returns an error code indicating + * the error that occurred (the callback is never invoked and the DNSRecordRef is + * not initialized.) + */ + +DNSServiceErrorType DNSSD_API DNSServiceRegisterRecord + ( + DNSServiceRef sdRef, + DNSRecordRef *RecordRef, + DNSServiceFlags flags, + uint32_t interfaceIndex, + const char *fullname, + uint16_t rrtype, + uint16_t rrclass, + uint16_t rdlen, + const void *rdata, + uint32_t ttl, + DNSServiceRegisterRecordReply callBack, + void *context /* may be NULL */ + ); + + +/* DNSServiceQueryRecord + * + * Query for an arbitrary DNS record. + * + * + * DNSServiceQueryRecordReply() Callback Parameters: + * + * sdRef: The DNSServiceRef initialized by DNSServiceQueryRecord(). + * + * flags: Possible values are kDNSServiceFlagsMoreComing and + * kDNSServiceFlagsAdd. The Add flag is NOT set for PTR records + * with a ttl of 0, i.e. "Remove" events. + * + * interfaceIndex: The interface on which the query was resolved (the index for a given + * interface is determined via the if_nametoindex() family of calls). + * See "Constants for specifying an interface index" for more details. + * + * errorCode: Will be kDNSServiceErr_NoError on success, otherwise will + * indicate the failure that occurred. Other parameters are undefined if + * errorCode is nonzero. + * + * fullname: The resource record's full domain name. + * + * rrtype: The resource record's type (e.g. kDNSServiceType_PTR, kDNSServiceType_SRV, etc) + * + * rrclass: The class of the resource record (usually kDNSServiceClass_IN). + * + * rdlen: The length, in bytes, of the resource record rdata. + * + * rdata: The raw rdata of the resource record. + * + * ttl: The resource record's time to live, in seconds. + * + * context: The context pointer that was passed to the callout. + * + */ + +typedef void (DNSSD_API *DNSServiceQueryRecordReply) + ( + DNSServiceRef DNSServiceRef, + DNSServiceFlags flags, + uint32_t interfaceIndex, + DNSServiceErrorType errorCode, + const char *fullname, + uint16_t rrtype, + uint16_t rrclass, + uint16_t rdlen, + const void *rdata, + uint32_t ttl, + void *context + ); + + +/* DNSServiceQueryRecord() Parameters: + * + * sdRef: A pointer to an uninitialized DNSServiceRef. If the call succeeds + * then it initializes the DNSServiceRef, returns kDNSServiceErr_NoError, + * and the query operation will run indefinitely until the client + * terminates it by passing this DNSServiceRef to DNSServiceRefDeallocate(). + * + * flags: Pass kDNSServiceFlagsLongLivedQuery to create a "long-lived" unicast + * query in a non-local domain. Without setting this flag, unicast queries + * will be one-shot - that is, only answers available at the time of the call + * will be returned. By setting this flag, answers (including Add and Remove + * events) that become available after the initial call is made will generate + * callbacks. This flag has no effect on link-local multicast queries. + * + * interfaceIndex: If non-zero, specifies the interface on which to issue the query + * (the index for a given interface is determined via the if_nametoindex() + * family of calls.) Passing 0 causes the name to be queried for on all + * interfaces. See "Constants for specifying an interface index" for more details. + * + * fullname: The full domain name of the resource record to be queried for. + * + * rrtype: The numerical type of the resource record to be queried for + * (e.g. kDNSServiceType_PTR, kDNSServiceType_SRV, etc) + * + * rrclass: The class of the resource record (usually kDNSServiceClass_IN). + * + * callBack: The function to be called when a result is found, or if the call + * asynchronously fails. + * + * context: An application context pointer which is passed to the callback function + * (may be NULL). + * + * return value: Returns kDNSServiceErr_NoError on succeses (any subsequent, asynchronous + * errors are delivered to the callback), otherwise returns an error code indicating + * the error that occurred (the callback is never invoked and the DNSServiceRef + * is not initialized.) + */ + +DNSServiceErrorType DNSSD_API DNSServiceQueryRecord + ( + DNSServiceRef *sdRef, + DNSServiceFlags flags, + uint32_t interfaceIndex, + const char *fullname, + uint16_t rrtype, + uint16_t rrclass, + DNSServiceQueryRecordReply callBack, + void *context /* may be NULL */ + ); + + +/* DNSServiceReconfirmRecord + * + * Instruct the daemon to verify the validity of a resource record that appears to + * be out of date (e.g. because tcp connection to a service's target failed.) + * Causes the record to be flushed from the daemon's cache (as well as all other + * daemons' caches on the network) if the record is determined to be invalid. + * + * Parameters: + * + * flags: Currently unused, reserved for future use. + * + * interfaceIndex: If non-zero, specifies the interface of the record in question. + * Passing 0 causes all instances of this record to be reconfirmed. + * + * fullname: The resource record's full domain name. + * + * rrtype: The resource record's type (e.g. kDNSServiceType_PTR, kDNSServiceType_SRV, etc) + * + * rrclass: The class of the resource record (usually kDNSServiceClass_IN). + * + * rdlen: The length, in bytes, of the resource record rdata. + * + * rdata: The raw rdata of the resource record. + * + */ + +DNSServiceErrorType DNSSD_API DNSServiceReconfirmRecord + ( + DNSServiceFlags flags, + uint32_t interfaceIndex, + const char *fullname, + uint16_t rrtype, + uint16_t rrclass, + uint16_t rdlen, + const void *rdata + ); + + +/********************************************************************************************* + * + * General Utility Functions + * + *********************************************************************************************/ + +/* DNSServiceConstructFullName() + * + * Concatenate a three-part domain name (as returned by the above callbacks) into a + * properly-escaped full domain name. Note that callbacks in the above functions ALREADY ESCAPE + * strings where necessary. + * + * Parameters: + * + * fullName: A pointer to a buffer that where the resulting full domain name is to be written. + * The buffer must be kDNSServiceMaxDomainName (1005) bytes in length to + * accommodate the longest legal domain name without buffer overrun. + * + * service: The service name - any dots or backslashes must NOT be escaped. + * May be NULL (to construct a PTR record name, e.g. + * "_ftp._tcp.apple.com."). + * + * regtype: The service type followed by the protocol, separated by a dot + * (e.g. "_ftp._tcp"). + * + * domain: The domain name, e.g. "apple.com.". Literal dots or backslashes, + * if any, must be escaped, e.g. "1st\. Floor.apple.com." + * + * return value: Returns 0 on success, -1 on error. + * + */ + +int DNSSD_API DNSServiceConstructFullName + ( + char *fullName, + const char *service, /* may be NULL */ + const char *regtype, + const char *domain + ); + + +/********************************************************************************************* + * + * TXT Record Construction Functions + * + *********************************************************************************************/ + +/* + * A typical calling sequence for TXT record construction is something like: + * + * Client allocates storage for TXTRecord data (e.g. declare buffer on the stack) + * TXTRecordCreate(); + * TXTRecordSetValue(); + * TXTRecordSetValue(); + * TXTRecordSetValue(); + * ... + * DNSServiceRegister( ... TXTRecordGetLength(), TXTRecordGetBytesPtr() ... ); + * TXTRecordDeallocate(); + * Explicitly deallocate storage for TXTRecord data (if not allocated on the stack) + */ + + +/* TXTRecordRef + * + * Opaque internal data type. + * Note: Represents a DNS-SD TXT record. + */ + +typedef union _TXTRecordRef_t { char PrivateData[16]; char *ForceNaturalAlignment; } TXTRecordRef; + + +/* TXTRecordCreate() + * + * Creates a new empty TXTRecordRef referencing the specified storage. + * + * If the buffer parameter is NULL, or the specified storage size is not + * large enough to hold a key subsequently added using TXTRecordSetValue(), + * then additional memory will be added as needed using malloc(). + * + * On some platforms, when memory is low, malloc() may fail. In this + * case, TXTRecordSetValue() will return kDNSServiceErr_NoMemory, and this + * error condition will need to be handled as appropriate by the caller. + * + * You can avoid the need to handle this error condition if you ensure + * that the storage you initially provide is large enough to hold all + * the key/value pairs that are to be added to the record. + * The caller can precompute the exact length required for all of the + * key/value pairs to be added, or simply provide a fixed-sized buffer + * known in advance to be large enough. + * A no-value (key-only) key requires (1 + key length) bytes. + * A key with empty value requires (1 + key length + 1) bytes. + * A key with non-empty value requires (1 + key length + 1 + value length). + * For most applications, DNS-SD TXT records are generally + * less than 100 bytes, so in most cases a simple fixed-sized + * 256-byte buffer will be more than sufficient. + * Recommended size limits for DNS-SD TXT Records are discussed in + * + * + * Note: When passing parameters to and from these TXT record APIs, + * the key name does not include the '=' character. The '=' character + * is the separator between the key and value in the on-the-wire + * packet format; it is not part of either the key or the value. + * + * txtRecord: A pointer to an uninitialized TXTRecordRef. + * + * bufferLen: The size of the storage provided in the "buffer" parameter. + * + * buffer: Optional caller-supplied storage used to hold the TXTRecord data. + * This storage must remain valid for as long as + * the TXTRecordRef. + */ + +void DNSSD_API TXTRecordCreate + ( + TXTRecordRef *txtRecord, + uint16_t bufferLen, + void *buffer + ); + + +/* TXTRecordDeallocate() + * + * Releases any resources allocated in the course of preparing a TXT Record + * using TXTRecordCreate()/TXTRecordSetValue()/TXTRecordRemoveValue(). + * Ownership of the buffer provided in TXTRecordCreate() returns to the client. + * + * txtRecord: A TXTRecordRef initialized by calling TXTRecordCreate(). + * + */ + +void DNSSD_API TXTRecordDeallocate + ( + TXTRecordRef *txtRecord + ); + + +/* TXTRecordSetValue() + * + * Adds a key (optionally with value) to a TXTRecordRef. If the "key" already + * exists in the TXTRecordRef, then the current value will be replaced with + * the new value. + * Keys may exist in four states with respect to a given TXT record: + * - Absent (key does not appear at all) + * - Present with no value ("key" appears alone) + * - Present with empty value ("key=" appears in TXT record) + * - Present with non-empty value ("key=value" appears in TXT record) + * For more details refer to "Data Syntax for DNS-SD TXT Records" in + * + * + * txtRecord: A TXTRecordRef initialized by calling TXTRecordCreate(). + * + * key: A null-terminated string which only contains printable ASCII + * values (0x20-0x7E), excluding '=' (0x3D). Keys should be + * 8 characters or less (not counting the terminating null). + * + * valueSize: The size of the value. + * + * value: Any binary value. For values that represent + * textual data, UTF-8 is STRONGLY recommended. + * For values that represent textual data, valueSize + * should NOT include the terminating null (if any) + * at the end of the string. + * If NULL, then "key" will be added with no value. + * If non-NULL but valueSize is zero, then "key=" will be + * added with empty value. + * + * return value: Returns kDNSServiceErr_NoError on success. + * Returns kDNSServiceErr_Invalid if the "key" string contains + * illegal characters. + * Returns kDNSServiceErr_NoMemory if adding this key would + * exceed the available storage. + */ + +DNSServiceErrorType DNSSD_API TXTRecordSetValue + ( + TXTRecordRef *txtRecord, + const char *key, + uint8_t valueSize, /* may be zero */ + const void *value /* may be NULL */ + ); + + +/* TXTRecordRemoveValue() + * + * Removes a key from a TXTRecordRef. The "key" must be an + * ASCII string which exists in the TXTRecordRef. + * + * txtRecord: A TXTRecordRef initialized by calling TXTRecordCreate(). + * + * key: A key name which exists in the TXTRecordRef. + * + * return value: Returns kDNSServiceErr_NoError on success. + * Returns kDNSServiceErr_NoSuchKey if the "key" does not + * exist in the TXTRecordRef. + */ + +DNSServiceErrorType DNSSD_API TXTRecordRemoveValue + ( + TXTRecordRef *txtRecord, + const char *key + ); + + +/* TXTRecordGetLength() + * + * Allows you to determine the length of the raw bytes within a TXTRecordRef. + * + * txtRecord: A TXTRecordRef initialized by calling TXTRecordCreate(). + * + * return value: Returns the size of the raw bytes inside a TXTRecordRef + * which you can pass directly to DNSServiceRegister() or + * to DNSServiceUpdateRecord(). + * Returns 0 if the TXTRecordRef is empty. + */ + +uint16_t DNSSD_API TXTRecordGetLength + ( + const TXTRecordRef *txtRecord + ); + + +/* TXTRecordGetBytesPtr() + * + * Allows you to retrieve a pointer to the raw bytes within a TXTRecordRef. + * + * txtRecord: A TXTRecordRef initialized by calling TXTRecordCreate(). + * + * return value: Returns a pointer to the raw bytes inside the TXTRecordRef + * which you can pass directly to DNSServiceRegister() or + * to DNSServiceUpdateRecord(). + */ + +const void * DNSSD_API TXTRecordGetBytesPtr + ( + const TXTRecordRef *txtRecord + ); + + +/********************************************************************************************* + * + * TXT Record Parsing Functions + * + *********************************************************************************************/ + +/* + * A typical calling sequence for TXT record parsing is something like: + * + * Receive TXT record data in DNSServiceResolve() callback + * if (TXTRecordContainsKey(txtLen, txtRecord, "key")) then do something + * val1ptr = TXTRecordGetValuePtr(txtLen, txtRecord, "key1", &len1); + * val2ptr = TXTRecordGetValuePtr(txtLen, txtRecord, "key2", &len2); + * ... + * bcopy(val1ptr, myval1, len1); + * bcopy(val2ptr, myval2, len2); + * ... + * return; + * + * If you wish to retain the values after return from the DNSServiceResolve() + * callback, then you need to copy the data to your own storage using bcopy() + * or similar, as shown in the example above. + * + * If for some reason you need to parse a TXT record you built yourself + * using the TXT record construction functions above, then you can do + * that using TXTRecordGetLength and TXTRecordGetBytesPtr calls: + * TXTRecordGetValue(TXTRecordGetLength(x), TXTRecordGetBytesPtr(x), key, &len); + * + * Most applications only fetch keys they know about from a TXT record and + * ignore the rest. + * However, some debugging tools wish to fetch and display all keys. + * To do that, use the TXTRecordGetCount() and TXTRecordGetItemAtIndex() calls. + */ + +/* TXTRecordContainsKey() + * + * Allows you to determine if a given TXT Record contains a specified key. + * + * txtLen: The size of the received TXT Record. + * + * txtRecord: Pointer to the received TXT Record bytes. + * + * key: A null-terminated ASCII string containing the key name. + * + * return value: Returns 1 if the TXT Record contains the specified key. + * Otherwise, it returns 0. + */ + +int DNSSD_API TXTRecordContainsKey + ( + uint16_t txtLen, + const void *txtRecord, + const char *key + ); + + +/* TXTRecordGetValuePtr() + * + * Allows you to retrieve the value for a given key from a TXT Record. + * + * txtLen: The size of the received TXT Record + * + * txtRecord: Pointer to the received TXT Record bytes. + * + * key: A null-terminated ASCII string containing the key name. + * + * valueLen: On output, will be set to the size of the "value" data. + * + * return value: Returns NULL if the key does not exist in this TXT record, + * or exists with no value (to differentiate between + * these two cases use TXTRecordContainsKey()). + * Returns pointer to location within TXT Record bytes + * if the key exists with empty or non-empty value. + * For empty value, valueLen will be zero. + * For non-empty value, valueLen will be length of value data. + */ + +const void * DNSSD_API TXTRecordGetValuePtr + ( + uint16_t txtLen, + const void *txtRecord, + const char *key, + uint8_t *valueLen + ); + + +/* TXTRecordGetCount() + * + * Returns the number of keys stored in the TXT Record. The count + * can be used with TXTRecordGetItemAtIndex() to iterate through the keys. + * + * txtLen: The size of the received TXT Record. + * + * txtRecord: Pointer to the received TXT Record bytes. + * + * return value: Returns the total number of keys in the TXT Record. + * + */ + +uint16_t DNSSD_API TXTRecordGetCount + ( + uint16_t txtLen, + const void *txtRecord + ); + + +/* TXTRecordGetItemAtIndex() + * + * Allows you to retrieve a key name and value pointer, given an index into + * a TXT Record. Legal index values range from zero to TXTRecordGetCount()-1. + * It's also possible to iterate through keys in a TXT record by simply + * calling TXTRecordGetItemAtIndex() repeatedly, beginning with index zero + * and increasing until TXTRecordGetItemAtIndex() returns kDNSServiceErr_Invalid. + * + * On return: + * For keys with no value, *value is set to NULL and *valueLen is zero. + * For keys with empty value, *value is non-NULL and *valueLen is zero. + * For keys with non-empty value, *value is non-NULL and *valueLen is non-zero. + * + * txtLen: The size of the received TXT Record. + * + * txtRecord: Pointer to the received TXT Record bytes. + * + * index: An index into the TXT Record. + * + * keyBufLen: The size of the string buffer being supplied. + * + * key: A string buffer used to store the key name. + * On return, the buffer contains a null-terminated C string + * giving the key name. DNS-SD TXT keys are usually + * 8 characters or less. To hold the maximum possible + * key name, the buffer should be 256 bytes long. + * + * valueLen: On output, will be set to the size of the "value" data. + * + * value: On output, *value is set to point to location within TXT + * Record bytes that holds the value data. + * + * return value: Returns kDNSServiceErr_NoError on success. + * Returns kDNSServiceErr_NoMemory if keyBufLen is too short. + * Returns kDNSServiceErr_Invalid if index is greater than + * TXTRecordGetCount()-1. + */ + +DNSServiceErrorType DNSSD_API TXTRecordGetItemAtIndex + ( + uint16_t txtLen, + const void *txtRecord, + uint16_t index, + uint16_t keyBufLen, + char *key, + uint8_t *valueLen, + const void **value + ); + +#ifdef __APPLE_API_PRIVATE + +/* + * Mac OS X specific functionality + * 3rd party clients of this API should not depend on future support or availability of this routine + */ + +/* DNSServiceSetDefaultDomainForUser() + * + * Set the default domain for the caller's UID. Future browse and registration + * calls by this user that do not specify an explicit domain will browse and + * register in this wide-area domain in addition to .local. In addition, this + * domain will be returned as a Browse domain via domain enumeration calls. + * + * + * Parameters: + * + * flags: Pass kDNSServiceFlagsAdd to add a domain for a user. Call without + * this flag set to clear a previously added domain. + * + * domain: The domain to be used for the caller's UID. + * + * return value: Returns kDNSServiceErr_NoError on succeses, otherwise returns + * an error code indicating the error that occurred + */ + +DNSServiceErrorType DNSSD_API DNSServiceSetDefaultDomainForUser + ( + DNSServiceFlags flags, + const char *domain + ); + +#endif //__APPLE_API_PRIVATE + +// Some C compiler cleverness. We can make the compiler check certain things for us, +// and report errors at compile-time if anything is wrong. The usual way to do this would +// be to use a run-time "if" statement or the conventional run-time "assert" mechanism, but +// then you don't find out what's wrong until you run the software. This way, if the assertion +// condition is false, the array size is negative, and the complier complains immediately. + +struct DNS_SD_CompileTimeAssertionChecks + { + char assert0[(sizeof(union _TXTRecordRef_t) == 16) ? 1 : -1]; + }; + +#ifdef __cplusplus + } +#endif + +#endif /* _DNS_SD_H */ diff --git a/vere/pkg/vere/foil.c b/vere/pkg/vere/foil.c new file mode 100644 index 0000000..ce4d734 --- /dev/null +++ b/vere/pkg/vere/foil.c @@ -0,0 +1,148 @@ +/// @file + +#include "noun.h" +#include "vere.h" + + /* assumptions: + ** all measurements are in chubs (double-words, c3_d, uint64_t). + ** little-endian addressing is ASSUMED. + ** + ** framing: + ** the last two chubs of a frame: + ** + ** { + ** 64-bit frame length + ** { + ** (high 32 bits) mug of frame + ** (low 32 bits) mug of current address + ** } + ** } + ** + ** we can scan for one of these frames with very low probability + ** of a false positive. we always write to and read from the end + ** of a file. a frame position points to its end. + ** + ** protocol: + ** once the callback is called, all results are fully fsynced. + ** all callbacks are optional and can be passed 0. + */ + +/* _foil_fail(): fail with error. +*/ +static void +_foil_fail(const c3_c* why_c, c3_i err_i) +{ + if ( err_i ) { + u3l_log("%s: error: %s", why_c, uv_strerror(err_i)); + u3_assert(0); + } else { + u3l_log("%s: file error", why_c); + } + exit(1); +} + +/* _foil_close(): close file, blockingly. +*/ +static void +_foil_close(uv_file fil_f) +{ + c3_i err_i; + uv_fs_t ruq_u; + + if ( 0 != (err_i = uv_fs_close(u3L, &ruq_u, fil_f, 0)) ) { + _foil_fail("uv_fs_close", err_i); + } +} + +/* _foil_path(): allocate path. +*/ +static c3_c* +_foil_path(u3_dire* dir_u, + const c3_c* nam_c) +{ + c3_w len_w = strlen(dir_u->pax_c); + c3_c* pax_c; + + pax_c = c3_malloc(1 + len_w + 1 + strlen(nam_c)); + strcpy(pax_c, dir_u->pax_c); + pax_c[len_w] = '/'; + strcpy(pax_c + len_w + 1, nam_c); + + return pax_c; +} + +/* u3_foil_folder(): load directory, blockingly. null if nonexistent. +*/ +u3_dire* +u3_foil_folder(const c3_c* pax_c) +{ + u3_dire* dir_u; + uv_fs_t ruq_u; + uv_dirent_t den_u; + c3_i err_i; + + /* open directory, synchronously + */ + { + err_i = uv_fs_scandir(u3L, &ruq_u, pax_c, 0, 0); + + if ( err_i < 0 ) { + if ( UV_ENOENT != err_i ) { + _foil_fail(pax_c, err_i); + return 0; + } + else { + // XX remove mkdir and retry + if ( 0 != (err_i = uv_fs_mkdir(u3L, &ruq_u, pax_c, 0700, 0)) ) { + _foil_fail(pax_c, err_i); + return 0; + } + else { + uv_fs_req_cleanup(&ruq_u); + return u3_foil_folder(pax_c); + } + } + } + + dir_u = u3_dire_init(pax_c); + } + + /* create entries for all files and directories + */ + while ( UV_EOF != uv_fs_scandir_next(&ruq_u, &den_u) ) { + if ( UV_DIRENT_FILE == den_u.type ) { + u3_dent* det_u = u3_dent_init(den_u.name); + det_u->nex_u = dir_u->all_u; + dir_u->all_u = det_u; + } else if ( UV_DIRENT_DIR == den_u.type ) { + u3_dent* det_u = u3_dent_init(den_u.name); + det_u->nex_u = dir_u->dil_u; + dir_u->dil_u = det_u; + } + } + + /* clean up request + */ + { + uv_fs_req_cleanup(&ruq_u); + } + + /* open directory file for reading, to fsync + */ + { + if ( 0 > (err_i = uv_fs_open(u3L, + &ruq_u, + pax_c, + O_RDONLY, + 0600, + 0)) ) + { + _foil_fail("open directory", err_i); + return 0; + } + dir_u->fil_u = ruq_u.result; + + uv_fs_req_cleanup(&ruq_u); + } + return dir_u; +} diff --git a/vere/pkg/vere/hamt_test.c b/vere/pkg/vere/hamt_test.c new file mode 100644 index 0000000..915bf24 --- /dev/null +++ b/vere/pkg/vere/hamt_test.c @@ -0,0 +1,136 @@ +/// @file + +#include "noun.h" +#include "vere.h" +#include "ivory.h" +#include "ur/ur.h" +// #include "pact.h" + + +// defined in noun/hashtable.c +c3_w _ch_skip_slot(c3_w mug_w, c3_w lef_w); + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + c3_d len_d = u3_Ivory_pill_len; + c3_y* byt_y = u3_Ivory_pill; + u3_cue_xeno* sil_u; + u3_weak pil; + + u3C.wag_w |= u3o_hashless; + u3m_boot_lite(1 << 26); + sil_u = u3s_cue_xeno_init_with(ur_fib27, ur_fib28); + if ( u3_none == (pil = u3s_cue_xeno_with(sil_u, len_d, byt_y)) ) { + printf("*** fail _setup 1\n"); + exit(1); + } + u3s_cue_xeno_done(sil_u); + if ( c3n == u3v_boot_lite(pil) ) { + printf("*** fail _setup 2\n"); + exit(1); + } +} + + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + // if ( !_test_safe() ) { + // fprintf(stderr, "test unix: failed\r\n"); + // exit(1); + // } + + u3p(u3h_root) pit_p = u3h_new_cache(1000000); + + u3_noun init = u3nc(u3i_string("mess"), + u3nc(48, + u3nc(c3__pact, + u3nc(13105, + u3nc(c3__etch, + u3nc(c3__init, + u3nc(u3i_string("chum"), + u3nc(49, + u3nc(u3i_string("~nec"), + u3nc(49, + u3nc(u3i_string("0voctt.mbs2p.q9qaf.b17em.tbsit.49vat.7ggc2.8avm6.oe870.fqhkt.dltit.u54hf.lse3l.au3pt"), 0) + ) + ) + )))))))); + u3h_put(pit_p, init, u3nc(c3y, u3_nul)); + u3z(init); + + for ( c3_w fra_w = 0; fra_w < 100000; fra_w++ ) { + u3_noun data = u3nc(u3i_string("mess"), + u3nc(48, + u3nc(c3__pact, + u3nc(13105, + u3nc(c3__etch, + u3nc(c3__data, + u3nc(u3dc("scot", c3__ud, fra_w), + u3nc(u3i_string("chum"), + u3nc(49, + u3nc(u3i_string("~nec"), + u3nc(49, + u3nc(u3i_string("0voctt.mbs2p.q9qaf.b17em.tbsit.49vat.7ggc2.8avm6.oe870.fqhkt.dltit.u54hf.lse3l.au3pt"), 0) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ); + + u3h_put(pit_p, data, u3nc(c3y, u3_nul)); + u3z(data); + } + + for ( c3_w fra_w = 0; fra_w < 100000; fra_w++ ) { + u3_noun data = u3nc(u3i_string("mess"), + u3nc(48, + u3nc(c3__pact, + u3nc(13105, + u3nc(c3__etch, + u3nc(c3__data, + u3nc(u3dc("scot", c3__ud, fra_w), + u3nc(u3i_string("chum"), + u3nc(49, + u3nc(u3i_string("~nec"), + u3nc(49, + u3nc(u3i_string("0voctt.mbs2p.q9qaf.b17em.tbsit.49vat.7ggc2.8avm6.oe870.fqhkt.dltit.u54hf.lse3l.au3pt"), 0) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ); + u3_weak res = u3h_git(pit_p, data); + if (res == u3_none) { + fprintf(stderr, "key gone from hamt %u: not ok\r\n", fra_w); + exit(1); + } + u3z(data); + } + + u3h_free(pit_p); + + u3m_grab(u3_none); + + fprintf(stderr, "test unix: ok\r\n"); + return 0; +} diff --git a/vere/pkg/vere/io/ames.c b/vere/pkg/vere/io/ames.c new file mode 100644 index 0000000..82e1d93 --- /dev/null +++ b/vere/pkg/vere/io/ames.c @@ -0,0 +1,2960 @@ +/// @file + +#include "vere.h" +#include "mdns.h" +#include "io/ames/stun.h" + +#include "noun.h" +#include "ur/ur.h" + +#include "zlib.h" +#include "natpmp.h" + +#include "ent/ent.h" + +#ifndef U3_OS_windows +#include +#endif + +#define FINE_PAGE 4096 // packets per page +#define FINE_FRAG 1024 // bytes per fragment packet +#define FINE_PATH_MAX 384 // longest allowed scry path +#define HEAD_SIZE 4 // header size in bytes + +// a hack to work around the inability to delete from a hashtable +// +#define FINE_PEND 1 // scry cache sentinel value: "pending" +#define FINE_DEAD 2 // scry cache sentinel value: "dead" + +#define QUEUE_MAX 30 // max number of packets in queue + +#define _CZAR_GONE UINT32_MAX + +typedef enum u3_stun_state { + STUN_OFF = 0, + STUN_TRYING = 1, + STUN_KEEPALIVE = 2, +} u3_stun_state; + +/* u3_fine: fine networking +*/ + typedef struct _u3_fine { + c3_y ver_y; // fine protocol + u3p(u3h_root) sac_p; // scry cache hashtable + struct _u3_ames* sam_u; // ames backpointer + } u3_fine; + +/* u3_ames: ames networking. +*/ + typedef struct _u3_ames { // packet network state + u3_auto car_u; // ames driver + u3_fine fin_s; // fine networking + u3_pier* pir_u; // pier + union { // uv udp handle + uv_udp_t wax_u; // + uv_handle_t had_u; // + }; // + c3_l sev_l; // instance number + ur_cue_test_t* tes_u; // cue-test handle + u3_cue_xeno* sil_u; // cue handle + c3_y ver_y; // protocol version + u3p(u3h_root) lax_p; // lane scry cache + struct _u3_panc* pan_u; // outbound packet queue, backward + struct { // + c3_c dom_c[251]; // domain + c3_o dom_o; // have domain + uv_timer_t tim_u; // resolve timer + c3_s pen_s; // pending + c3_w pip_w[256]; // ipv4 + c3_w log_w[256 >> 5]; // log error + } zar_u; // + struct { // stun client state: + u3_stun_state sat_y; // formal state + c3_y tid_y[12]; // last transaction id + c3_y dad_y; // sponsoring galaxy + u3_lane lan_u; // sponsoring galaxy IP and port + uv_timer_t tim_u; // keepalive timer handle + struct timeval sar_u; // date we started trying to send + u3_lane sef_u; // our lane, if we know it + c3_o wok_o; // STUN worked, set on first success + } sun_u; // + struct { + natpmp_t req_u; // libnatpmp struct for mapping request + uv_poll_t pol_u; // handle waits on libnatpmp socket + uv_timer_t tim_u; // every two hours if mapping succeeds + } nat_u; // libnatpmp stuff for port forwarding + c3_o nal_o; // lane cache backcompat flag + struct { // config: + c3_o see_o; // can scry + c3_o fit_o; // filtering active + } fig_u; // + struct { // stats: + c3_d dop_d; // drop count + c3_d fod_d; // forwards dropped count + c3_d foq_d; // forward queue size + c3_d fow_d; // forwarded count + c3_o for_o; // forwarding enabled + c3_d hed_d; // failed to read header + c3_d vet_d; // version mismatches filtered + c3_d mut_d; // invalid mugs filtered + c3_d pre_d; // failed to read prelude + c3_d wal_d; // failed to read wail + c3_d wap_d; // failed to read wail path + c3_d fal_d; // crash count + c3_d vil_d; // encryption failures + c3_d saw_d; // successive scry failures + } sat_u; // + } u3_ames; + +/* u3_head: ames or fine packet header +*/ + typedef struct _u3_head { + c3_o req_o; // is request (fine only) + c3_o sim_o; // is ames protocol? + c3_y ver_y; // protocol version + c3_y sac_y; // sender class + c3_y rac_y; // receiver class + c3_l mug_l; // truncated mug hash of u3_body + c3_o rel_o; // relayed? + } u3_head; + +/* u3_prel: ames/fine packet prelude +*/ + typedef struct _u3_prel { + c3_y sic_y; // sender life tick + c3_y ric_y; // receiver life tick + c3_d sen_d[2]; // sender/requester + c3_d rec_d[2]; // receiver/responder + c3_d rog_d; // origin lane (optional) + } u3_prel; + +/* u3_peep: unsigned fine request body +*/ + typedef struct _u3_peep { + c3_w fra_w; // fragment number + c3_s len_s; // path length + c3_c* pat_c; // path as ascii + } u3_peep; + +/* u3_wail: fine request body +*/ + typedef struct _u3_wail { + c3_y tag_y; // tag (always 0, unsigned) + u3_peep pep_u; // request payload + } u3_wail; + +/* u3_meow: response portion of purr packet + * + * siz_s: number of bytes in the packet +*/ + typedef struct _u3_meow { + c3_y sig_y[64]; // host signature + c3_w num_w; // number of fragments + c3_s siz_s; // datum size (actual) + c3_y* dat_y; // datum (0 if null response) + } u3_meow; + +/* u3_purr: fine packet response +*/ + typedef struct _u3_purr { + u3_peep pep_u; // fragment number + path + u3_meow mew_u; // fragment + } u3_purr; + +/* u3_body: ames packet body +*/ + typedef struct _u3_body { + c3_s con_s; // content size + c3_y* con_y; // content + c3_l mug_l; // checksum + } u3_body; + +/* u3_ptag: packet-type tag +*/ + typedef enum _u3_ptag { + PACT_AMES = 1, // ames packet + PACT_WAIL = 2, // fine request packet + PACT_PURR = 3 // fine response packet + } u3_ptag; + +/* u3_pact: ames packet + * + * Filled in piece by piece as we parse or construct it. +*/ + typedef struct _u3_pact { + uv_udp_send_t snd_u; // udp send request + struct _u3_ames* sam_u; // ames backpointer + c3_w len_w; // length in bytes + c3_y* hun_y; // packet buffer + u3_lane lan_u; // destination/origin lane + u3_head hed_u; // head of packet + u3_prel pre_u; // packet prelude + u3_ptag typ_y; // packet type tag + union { + u3_body bod_u; // tagged by PACT_AMES + u3_wail wal_u; // tagged by PACT_WAIL + u3_purr pur_u; // tagged by PACT_PURR + }; + } u3_pact; + +/* u3_panc: packet queue +*/ + typedef struct _u3_panc { + struct _u3_panc* pre_u; // previous packet + struct _u3_panc* nex_u; // next packet + u3_pact* pac_u; // this packet + c3_o for_o; // are we forwarding this? + } u3_panc; + +#define _str_typ(typ_y) ( \ + ( PACT_AMES == typ_y ) ? "ames" \ + : ( PACT_WAIL == typ_y ) ? "wail" \ + : ( PACT_PURR == typ_y ) ? "purr" : "????") + +const c3_c* PATH_PARSER = + ";~(pfix fas (most fas (cook crip (star ;~(less fas prn)))))"; + +static c3_o net_o = c3y; // online heuristic to limit verbosity + +/* _ames_alloc(): libuv buffer allocator. +*/ +static void +_ames_alloc(uv_handle_t* had_u, + size_t len_i, + uv_buf_t* buf + ) +{ + // we allocate 2K, which gives us plenty of space + // for a single ames packet (max size 1060 bytes) + // + void* ptr_v = c3_malloc(2048); + *buf = uv_buf_init(ptr_v, 2048); +} + +static void +_ames_pact_free(u3_pact* pac_u) +{ + switch ( pac_u->typ_y ) { + case PACT_AMES: + c3_free(pac_u->bod_u.con_y); + break; + + case PACT_WAIL: + c3_free(pac_u->wal_u.pep_u.pat_c); + break; + + case PACT_PURR: + c3_free(pac_u->pur_u.pep_u.pat_c); + c3_free(pac_u->pur_u.mew_u.dat_y); + break; + + default: + u3l_log("ames_pact_free: bad packet type %s", + _str_typ(pac_u->typ_y)); + u3_pier_bail(u3_king_stub()); + } + + c3_free(pac_u->hun_y); + c3_free(pac_u); +} + +/* _ames_panc_free(): remove references, lose refcounts and free struct +*/ +static void +_ames_panc_free(u3_panc* pan_u) +{ + if ( c3y == pan_u->for_o ) { + if ( 0 != pan_u->nex_u ) { + pan_u->nex_u->pre_u = pan_u->pre_u; + } + + if ( 0 != pan_u->pre_u ) { + pan_u->pre_u->nex_u = pan_u->nex_u; + } + else { + u3_assert(pan_u == pan_u->pac_u->sam_u->pan_u); + pan_u->pac_u->sam_u->pan_u = pan_u->nex_u; + } + } + _ames_pact_free(pan_u->pac_u); + c3_free(pan_u); +} + +static inline u3_ptag +_ames_pact_typ(u3_head* hed_u) +{ + return (( c3y == hed_u->sim_o ) ? PACT_AMES : + ( c3y == hed_u->req_o ) ? PACT_WAIL : PACT_PURR); +} + +static inline c3_y +_ames_origin_size(u3_head* hed_u) +{ + return ( c3y == hed_u->rel_o ) ? 6 : 0; // origin is 6 bytes +} + +static c3_y +_ames_prel_size(u3_head* hed_u) +{ + c3_y lif_y = 1; + c3_y sen_y = 2 << hed_u->sac_y; + c3_y rec_y = 2 << hed_u->rac_y; + c3_y rog_y = _ames_origin_size(hed_u); + return lif_y + sen_y + rec_y + rog_y; +} + +static inline c3_s +_ames_body_size(u3_body* bod_u) +{ + return bod_u->con_s; +} + +static inline c3_s +_fine_peep_size(u3_peep* pep_u) +{ + return ( + sizeof(pep_u->fra_w) + + sizeof(pep_u->len_s) + + pep_u->len_s); +} + +static inline c3_y +_fine_bytes_word(c3_w num_w) +{ + return (c3_bits_word(num_w) + 7) >> 3; +} + +static inline c3_s +_fine_meow_size(u3_meow* mew_u) +{ + c3_y cur_y = 0; + if (mew_u->siz_s != 0) { + cur_y = sizeof(mew_u->num_w); + } + else { + cur_y = _fine_bytes_word(mew_u->num_w); + } + return ( + sizeof(mew_u->sig_y) + + cur_y + + mew_u->siz_s); +} + +static c3_s +_fine_purr_size(u3_purr* pur_u) +{ + c3_s pur_s = _fine_peep_size(&pur_u->pep_u); + c3_s mew_s = _fine_meow_size(&pur_u->mew_u); + return pur_s + mew_s; +} + +static c3_o +_ames_check_mug(u3_pact* pac_u) +{ + c3_w rog_w = HEAD_SIZE + _ames_origin_size(&pac_u->hed_u); + c3_l mug_l = u3r_mug_bytes(pac_u->hun_y + rog_w, + pac_u->len_w - rog_w); + // u3l_log("len_w: %u, rog_w: %u, bod_l 0x%05x, hed_l 0x%05x", + // pac_u->len_w, rog_w, + // (mug_l & 0xfffff), + // (pac_u->hed_u.mug_l & 0xfffff)); + return ( + ((mug_l & 0xfffff) == (pac_u->hed_u.mug_l & 0xfffff)) + ? c3y : c3n); +} + +/* _ames_ship_to_chubs(): pack [len_y] bytes into c3_d[2] +*/ +static inline void +_ames_ship_to_chubs(c3_d sip_d[2], c3_y len_y, c3_y* buf_y) +{ + c3_y sip_y[16] = {0}; + memcpy(sip_y, buf_y, c3_min(16, len_y)); + + sip_d[0] = c3_sift_chub(sip_y); + sip_d[1] = c3_sift_chub(sip_y + 8); +} + +/* _ames_ship_of_chubs(): unpack c3_d[2] into [len_y] bytes. +*/ +static inline void +_ames_ship_of_chubs(c3_d sip_d[2], c3_y len_y, c3_y* buf_y) +{ + c3_y sip_y[16] = {0}; + + c3_etch_chub(sip_y, sip_d[0]); + c3_etch_chub(sip_y + 8, sip_d[1]); + + memcpy(buf_y, sip_y, c3_min(16, len_y)); +} + +/* _ames_sift_head(): parse packet header. +*/ +static void +_ames_sift_head(u3_head* hed_u, c3_y buf_y[4]) +{ + c3_w hed_w = c3_sift_word(buf_y); + + // first two bits are reserved + // + hed_u->req_o = (hed_w >> 2) & 0x1; + hed_u->sim_o = (hed_w >> 3) & 0x1; + hed_u->ver_y = (hed_w >> 4) & 0x7; + hed_u->sac_y = (hed_w >> 7) & 0x3; + hed_u->rac_y = (hed_w >> 9) & 0x3; + hed_u->mug_l = (hed_w >> 11) & 0xfffff; // 20 bits + hed_u->rel_o = (hed_w >> 31) & 0x1; +} + +/* _ames_sift_prel(): parse prelude, +*/ +static void +_ames_sift_prel(u3_head* hed_u, + u3_prel* pre_u, + c3_y* buf_y) +{ + c3_y sen_y, rec_y; + c3_w cur_w = 0; + + // if packet is relayed, parse 6-byte origin field + // + if ( c3y == hed_u->rel_o ) { + c3_y rag_y[8] = {0}; + memcpy(rag_y, buf_y + cur_w, 6); + pre_u->rog_d = c3_sift_chub(rag_y); + cur_w += 6; + } + else { + pre_u->rog_d = 0; + } + + // parse life ticks + // + pre_u->sic_y = buf_y[cur_w] & 0xf; + pre_u->ric_y = (buf_y[cur_w] >> 4) & 0xf; + cur_w++; + + // parse sender ship + // + sen_y = 2 << hed_u->sac_y; + _ames_ship_to_chubs(pre_u->sen_d, sen_y, buf_y + cur_w); + cur_w += sen_y; + + // parse receiver ship + // + rec_y = 2 << hed_u->rac_y; + _ames_ship_to_chubs(pre_u->rec_d, rec_y, buf_y + cur_w); + cur_w += rec_y; +} + +/* _fine_sift_wail(): parse request body, returning success +*/ +static c3_o +_fine_sift_wail(u3_pact* pac_u, c3_w cur_w) +{ + c3_w fra_w = sizeof(pac_u->wal_u.pep_u.fra_w); + c3_w len_w = sizeof(pac_u->wal_u.pep_u.len_s); + c3_w exp_w = fra_w + len_w; + c3_s len_s; + + if ( cur_w + exp_w > pac_u->len_w ) { + u3l_log("fine: wail not big enough"); + return c3n; + } + + // parse tag + // + pac_u->wal_u.tag_y = *(pac_u->hun_y + cur_w); + cur_w++; + + if ( 0 != pac_u->wal_u.tag_y ) { + u3l_log("fine: wail tag unknown %u", pac_u->wal_u.tag_y); + return c3n; + } + + // parse fragment number + // + pac_u->wal_u.pep_u.fra_w = c3_sift_word(pac_u->hun_y + cur_w); + cur_w += fra_w; + + // parse path length field + // + len_s = c3_sift_short(pac_u->hun_y + cur_w); + pac_u->wal_u.pep_u.len_s = len_s; + cur_w += len_w; + + if ( len_s > FINE_PATH_MAX ) { + u3l_log("ames wail len: %u, max %u", len_s, FINE_PATH_MAX); + return c3n; + } + + { + c3_w tot_w = cur_w + len_s; + if ( tot_w != pac_u->len_w ) { + u3l_log("fine: wail expected total len: %u, actual %u", + tot_w, pac_u->len_w); + return c3n; + } + } + + // parse request path + // + pac_u->wal_u.pep_u.pat_c = c3_calloc(len_s + 1); + memcpy(pac_u->wal_u.pep_u.pat_c, pac_u->hun_y + cur_w, len_s); + pac_u->wal_u.pep_u.pat_c[len_s] = '\0'; + return c3y; +} + +/* _fine_sift_meow(): parse signed scry response fragment +*/ +static c3_o +_fine_sift_meow(u3_meow* mew_u, u3_noun mew) +{ + c3_o ret_o; + c3_w len_w = u3r_met(3, mew); + c3_w sig_w = sizeof(mew_u->sig_y); + c3_w num_w = sizeof(mew_u->num_w); + c3_w min_w = sig_w + 1; + c3_w max_w = sig_w + num_w + FINE_FRAG; + + if ( (len_w < min_w) || (len_w > max_w) ) { + u3l_log("sift_meow len_w %u (min_w %u, max_w %u)", len_w, min_w, max_w); + ret_o = c3n; + } + else { + c3_w cur_w = 0; + + // parse signature + // + u3r_bytes(cur_w, sig_w, mew_u->sig_y, mew); + cur_w += sig_w; + + // parse number of fragments + // + u3r_bytes(cur_w, num_w, (c3_y*)&mew_u->num_w, mew); + num_w = c3_min(num_w, (len_w - cur_w)); + cur_w += num_w; + u3_assert(len_w >= cur_w); + + // parse data payload + // + mew_u->siz_s = len_w - cur_w; + + if ( !mew_u->siz_s ) { + mew_u->dat_y = 0; + } + else { + mew_u->dat_y = c3_calloc(mew_u->siz_s); + u3r_bytes(cur_w, mew_u->siz_s, mew_u->dat_y, mew); + } + + ret_o = c3y; + } + + u3z(mew); + return ret_o; +} + +/* _ames_etch_head(): serialize packet header. +*/ +static void +_ames_etch_head(u3_head* hed_u, c3_y buf_y[4]) +{ + // only version 0 currently recognized + // + u3_assert( 0 == hed_u->ver_y ); // XX remove after testing + + c3_w hed_w = ((hed_u->req_o & 0x1) << 2) + ^ ((hed_u->sim_o & 0x1) << 3) + ^ ((hed_u->ver_y & 0x7) << 4) + ^ ((hed_u->sac_y & 0x3) << 7) + ^ ((hed_u->rac_y & 0x3) << 9) + ^ ((hed_u->mug_l & 0xfffff) << 11) + ^ ((hed_u->rel_o & 0x1) << 31); + + c3_etch_word(buf_y, hed_w); +} + +static void +_ames_etch_origin(c3_d rog_d, c3_y* buf_y) +{ + c3_y rag_y[8] = {0}; + c3_etch_chub(rag_y, rog_d); + memcpy(buf_y, rag_y, 6); +} + +/* _ames_etch_prel(): serialize packet prelude +*/ +static void +_ames_etch_prel(u3_head* hed_u, u3_prel* pre_u, c3_y* buf_y) +{ + c3_w cur_w = 0; + + // if packet is relayed, write the 6-byte origin field + // + if ( c3y == hed_u->rel_o ) { + _ames_etch_origin(pre_u->rog_d, buf_y + cur_w); + cur_w += 6; + } + + // write life ticks + // + buf_y[cur_w] = (pre_u->sic_y & 0xf) ^ ((pre_u->ric_y & 0xf) << 4); + cur_w++; + + // write sender ship + // + c3_y sen_y = 2 << hed_u->sac_y; + _ames_ship_of_chubs(pre_u->sen_d, sen_y, buf_y + cur_w); + cur_w += sen_y; + + // write receiver ship + // + c3_y rec_y = 2 << hed_u->rac_y; + _ames_ship_of_chubs(pre_u->rec_d, rec_y, buf_y + cur_w); + cur_w += rec_y; +} + +/* _fine_etch_peep(): serialize unsigned scry request +*/ +static void +_fine_etch_peep(u3_peep* pep_u, c3_y* buf_y) +{ + c3_w cur_w = 0; + + // write fragment number + // + c3_etch_word(buf_y + cur_w, pep_u->fra_w); + cur_w += sizeof(pep_u->fra_w); + + // write path length + // + c3_etch_short(buf_y + cur_w, pep_u->len_s); + cur_w += sizeof(pep_u->len_s); + + // write request path + // + memcpy(buf_y + cur_w, pep_u->pat_c, pep_u->len_s); +} + +/* fine_etch_meow(): serialize signed scry response fragment +*/ +static void +_fine_etch_meow(u3_meow* mew_u, c3_y* buf_y) +{ + c3_w cur_w = 0; + + // write signature + // + c3_w sig_w = sizeof(mew_u->sig_y); + memcpy(buf_y + cur_w, mew_u->sig_y, sig_w); + cur_w += sig_w; + + { + c3_y num_y[4]; + c3_y len_y = _fine_bytes_word(mew_u->num_w); + + // write number of fragments + // + c3_etch_word(num_y, mew_u->num_w); + memcpy(buf_y + cur_w, num_y, len_y); + + if (mew_u->siz_s != 0) { + cur_w += sizeof(mew_u->num_w); + } + else { + cur_w += len_y; + } + } + + // write response fragment data + // + memcpy(buf_y + cur_w, mew_u->dat_y, mew_u->siz_s); +} + +/* _fine_etch_purr(): serialise response packet + */ +static void +_fine_etch_purr(u3_purr* pur_u, c3_y* buf_y) +{ + c3_w cur_w = 0; + + // write unsigned scry request + // + _fine_etch_peep(&pur_u->pep_u, buf_y + cur_w); + cur_w += _fine_peep_size(&pur_u->pep_u); + + // write signed response fragment + _fine_etch_meow(&pur_u->mew_u, buf_y + cur_w); +} + +/* _fine_etch_response(): serialize scry response packet +*/ +static void +_fine_etch_response(u3_pact* pac_u) +{ + c3_w pre_w, pur_w, cur_w, rog_w; + + pre_w = _ames_prel_size(&pac_u->hed_u); + pur_w = _fine_purr_size(&pac_u->pur_u); + pac_u->len_w = HEAD_SIZE + pre_w + pur_w; + pac_u->hun_y = c3_calloc(pac_u->len_w); + + // skip the header until we know what the mug should be + // + cur_w = HEAD_SIZE; + + // write prelude + // + _ames_etch_prel(&pac_u->hed_u, &pac_u->pre_u, pac_u->hun_y + cur_w); + cur_w += pre_w; + + // write body + // + _fine_etch_purr(&pac_u->pur_u, pac_u->hun_y + cur_w); + + // calculate mug and write header + // + rog_w = HEAD_SIZE + _ames_origin_size(&pac_u->hed_u); + pac_u->hed_u.mug_l = u3r_mug_bytes(pac_u->hun_y + rog_w, + pac_u->len_w - rog_w); + _ames_etch_head(&pac_u->hed_u, pac_u->hun_y); + + u3_assert( c3y == _ames_check_mug(pac_u) ); +} + +/* _lane_scry_path(): format scry path for retrieving a lane +*/ +static inline u3_noun +_lane_scry_path(u3_noun who) +{ + return u3nq(u3i_string("peers"), + u3dc("scot", 'p', who), + u3i_string("forward-lane"), + u3_nul); +} + +/* _ames_send_cb(): send callback. +*/ +static void +_ames_send_cb(uv_udp_send_t* req_u, c3_i sas_i) +{ + u3_pact* pac_u = (u3_pact*)req_u; + u3_ames* sam_u = pac_u->sam_u; + + if ( !sas_i ) { + net_o = c3y; + } + else if ( c3y == net_o ) { + u3l_log("ames: send fail: %s", uv_strerror(sas_i)); + net_o = c3n; + } + + _ames_pact_free(pac_u); +} + +/* _ames_send(): send buffer to address on port. +*/ +static void +_ames_send(u3_pact* pac_u) +{ + u3_ames* sam_u = pac_u->sam_u; + + if ( !pac_u->hun_y + || !sam_u + || !pac_u->len_w + || !pac_u->lan_u.por_s ) + { + u3l_log("ames: _ames_send null"); + _ames_pact_free(pac_u); + } + else { + struct sockaddr_in add_u; + + memset(&add_u, 0, sizeof(add_u)); + add_u.sin_family = AF_INET; + add_u.sin_addr.s_addr = htonl(pac_u->lan_u.pip_w); + add_u.sin_port = htons(pac_u->lan_u.por_s); + + { + uv_buf_t buf_u = uv_buf_init((c3_c*)pac_u->hun_y, pac_u->len_w); + c3_i sas_i = uv_udp_send(&pac_u->snd_u, + &u3_Host.wax_u, + &buf_u, 1, + (const struct sockaddr*)&add_u, + _ames_send_cb); + + if ( sas_i ) { + _ames_send_cb(&pac_u->snd_u, sas_i); + } + } + } +} + +/* u3_ames_decode_lane(): deserialize noun to lane; 0.0.0.0:0 if invalid +*/ +u3_lane +u3_ames_decode_lane(u3_atom lan) { + u3_lane lan_u; + c3_d lan_d; + + if ( c3n == u3r_safe_chub(lan, &lan_d) || (lan_d >> 48) != 0 ) { + return (u3_lane){0, 0}; + } + + u3z(lan); + + lan_u.pip_w = (c3_w)lan_d; + lan_u.por_s = (c3_s)(lan_d >> 32); + return lan_u; +} + +/* u3_ames_lane_to_chub(): serialize lane to double-word +*/ +c3_d +u3_ames_lane_to_chub(u3_lane lan) { + return ((c3_d)lan.por_s << 32) ^ (c3_d)lan.pip_w; +} + +/* u3_ames_encode_lane(): serialize lane to noun +*/ +u3_atom +u3_ames_encode_lane(u3_lane lan) { + // [%| p=@] + // [%& p=@pC] + return u3i_chub(u3_ames_lane_to_chub(lan)); +} + +/* _ames_lane_into_cache(): put las for who into cache, including timestamp +*/ +static void +_ames_lane_into_cache(u3p(u3h_root) lax_p, u3_noun who, u3_noun las) { + struct timeval tim_tv; + gettimeofday(&tim_tv, 0); + u3_noun now = u3_time_in_tv(&tim_tv); + u3_noun val = u3nc(las, now); + u3h_put(lax_p, who, val); + u3z(who); +} + +/* _ames_lane_from_cache(): retrieve lane for who from cache, if any +*/ +static u3_weak +_ames_lane_from_cache(u3p(u3h_root) lax_p, u3_noun who, c3_o nal_o) { + u3_weak lac = u3h_git(lax_p, who); + + if ( u3_none == lac ) { + u3z(who); + return lac; + } + + if ( nal_o == c3y ) { + lac = u3k(u3h(lac)); + } + + else { + struct timeval tim_tv; + gettimeofday(&tim_tv, 0); + u3_noun now = u3_time_in_tv(&tim_tv); + u3_noun den = u3t(lac); + + // consider entries older than 2 minutes stale, ignore them + // + if ( 120000 > u3_time_gap_ms(u3k(den), now) ) { + lac = u3k(u3h(lac)); + } else { + lac = u3_none; + } + } + + u3z(who); + return lac; +} + +static u3_noun +_ames_pact_to_noun(u3_pact* pac_u) +{ + u3_noun pac = u3i_bytes(pac_u->len_w, pac_u->hun_y); + return pac; +} + +/* _ames_czar_port(): udp port for galaxy. +*/ +static c3_s +_ames_czar_port(c3_y imp_y) +{ + if ( c3n == u3_Host.ops_u.net ) { + return 31337 + imp_y; + } + else { + return 13337 + imp_y; + } +} + +/* _ames_czar_str: galaxy name as c3_c[3] +*/ +static void +_ames_czar_str(c3_c zar_c[3], c3_y imp_y) +{ + u3_po_to_suffix(imp_y, (c3_y*)zar_c, (c3_y*)zar_c + 1, (c3_y*)zar_c + 2); +} + +/* _ames_etch_czar: galaxy fqdn +*/ +static c3_i +_ames_etch_czar(c3_c dns_c[256], const c3_c* dom_c, c3_y imp_y) +{ + c3_c* bas_c = dns_c; + c3_w len_w = strlen(dom_c); + + // name 3, '.' 2, trailing null + // + if ( 250 <= len_w ) { + return -1; + } + + _ames_czar_str(dns_c, imp_y); + dns_c += 3; + *dns_c++ = '.'; + + memcpy(dns_c, dom_c, len_w); + dns_c += len_w; + *dns_c++ = '.'; + + memset(dns_c, 0, 256 - (dns_c - bas_c)); + + return 0; +} + +/* _ames_czar_lane: retrieve lane for galaxy if stored. +*/ +static c3_o +_ames_czar_lane(u3_ames* sam_u, c3_y imp_y, u3_lane* lan_u) +{ + c3_s por_s = _ames_czar_port(imp_y); + c3_w pip_w; + + if ( c3n == u3_Host.ops_u.net ) { + pip_w = 0x7f000001; + } + else { + pip_w = sam_u->zar_u.pip_w[imp_y]; + + if ( !pip_w ) { + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("ames: czar not resolved"); + } + return c3n; + } + else if ( _CZAR_GONE == pip_w ) { + // print only on first send failure + // + c3_w blk_w = imp_y >> 5; + c3_w bit_w = 1 << (imp_y & 31); + + if ( !(sam_u->zar_u.log_w[blk_w] & bit_w) ) { + c3_c dns_c[256]; + u3_assert ( !_ames_etch_czar(dns_c, sam_u->zar_u.dom_c, imp_y) ); + u3l_log("ames: czar at %s: not found (b)", dns_c); + sam_u->zar_u.log_w[blk_w] |= bit_w; + } + + return c3n; + } + } + + lan_u->por_s = por_s; + lan_u->pip_w = pip_w; + return c3y; +} + +/* _fine_get_cache(): get packet list or status from cache. RETAIN + */ +static u3_weak +_fine_get_cache(u3_ames* sam_u, u3_noun pax, c3_w fra_w) +{ + u3_noun key = u3nc(u3k(pax), u3i_word(fra_w)); + u3_weak pro = u3h_git(sam_u->fin_s.sac_p, key); + u3z(key); + return pro; +} + +/* _fine_put_cache(): put packet list or status into cache. RETAIN. + */ +static void +_fine_put_cache(u3_ames* sam_u, u3_noun pax, c3_w lop_w, u3_noun lis) +{ + if ( (FINE_PEND == lis) || (FINE_DEAD == lis) ) { + u3_noun key = u3nc(u3k(pax), u3i_word(lop_w)); + u3h_put(sam_u->fin_s.sac_p, key, lis); + u3z(key); + } + else { + while ( u3_nul != lis ) { + u3_noun key = u3nc(u3k(pax), u3i_word(lop_w)); + u3h_put(sam_u->fin_s.sac_p, key, u3k(u3h(lis))); + u3z(key); + + lis = u3t(lis); + lop_w++; + } + } +} + +typedef struct _stun_send { + uv_udp_send_t req_u; // uv udp request handle + c3_y hun_y[0]; // buffer +} _stun_send; + +/* _stun_send_cb(): stun udp send callback. + */ +static void +_stun_send_cb(uv_udp_send_t *rep_u, c3_i sas_i) +{ + _stun_send* snd_u = (_stun_send*)rep_u; + + if ( !sas_i ) { + net_o = c3y; + } + else if ( c3y == net_o ) { + u3l_log("stun: send response fail: %s", uv_strerror(sas_i)); + net_o = c3n; + } + + c3_free(snd_u); +} + +/* _stun_on_request(): hear stun request, send response. + */ +static void +_stun_on_request(u3_ames* sam_u, + const c3_y* req_y, + const struct sockaddr* adr_u) +{ + _stun_send* snd_u = c3_malloc(sizeof(*snd_u) + 40); + + struct sockaddr_in* add_u = (struct sockaddr_in*)adr_u; + u3_lane lan_u = { + .por_s = ntohs(add_u->sin_port), + .pip_w = ntohl(add_u->sin_addr.s_addr) + }; + u3_stun_make_response(req_y, &lan_u, snd_u->hun_y); + + uv_buf_t buf_u = uv_buf_init((c3_c*)snd_u->hun_y, 40); + c3_i sas_i = uv_udp_send(&snd_u->req_u, &u3_Host.wax_u, + &buf_u, 1, adr_u, _stun_send_cb); + + if ( sas_i ) { + _stun_send_cb(&snd_u->req_u, sas_i); + } +} + +static void +_stun_start(u3_ames* sam_u, c3_w tim_w); + +/* _stun_on_response(): hear stun response from galaxy. + */ +static void +_stun_on_response(u3_ames* sam_u, c3_y* buf_y, c3_w buf_len) +{ + u3_lane lan_u; + + // Ignore STUN responses that dont' have the XOR-MAPPED-ADDRESS attribute + if ( c3n == u3_stun_find_xor_mapped_address(buf_y, buf_len, &lan_u) ) { + return; + } + + if ( (sam_u->sun_u.sef_u.por_s != lan_u.por_s) || + (sam_u->sun_u.sef_u.pip_w != lan_u.pip_w) ) + { + // lane changed + u3_noun wir = u3nc(c3__ames, u3_nul); + u3_noun cad = u3nq(c3__stun, c3__once, sam_u->sun_u.dad_y, + u3nc(c3n, u3_ames_encode_lane(lan_u))); + u3_auto_plan(&sam_u->car_u, + u3_ovum_init(0, c3__ames, wir, cad)); + } + else if ( c3n == sam_u->sun_u.wok_o ) { + // stop %ping app + u3_noun wir = u3nc(c3__ames, u3_nul); + u3_noun cad = u3nq(c3__stun, c3__stop, sam_u->sun_u.dad_y, + u3nc(c3n, u3_ames_encode_lane(lan_u))); + u3_auto_plan(&sam_u->car_u, + u3_ovum_init(0, c3__ames, wir, cad)); + sam_u->sun_u.wok_o = c3y; + } + + sam_u->sun_u.sef_u = lan_u; + + // XX should no-op early + // + switch ( sam_u->sun_u.sat_y ) { + case STUN_OFF: break; // ignore; stray response + case STUN_KEEPALIVE: break; // ignore; duplicate response + + case STUN_TRYING: { + _stun_start(sam_u, 25000); + } break; + + default: u3_assert(!"programmer error"); + } +} + +/* _stun_send_request(): send stun request to galaxy lane. + */ +static void +_stun_send_request(u3_ames* sam_u) +{ + u3_assert( STUN_OFF != sam_u->sun_u.sat_y ); + + _stun_send* snd_u = c3_malloc(sizeof(*snd_u) + 28); + + u3_stun_make_request(snd_u->hun_y, sam_u->sun_u.tid_y); + + struct sockaddr_in add_u; + memset(&add_u, 0, sizeof(add_u)); + add_u.sin_family = AF_INET; + add_u.sin_addr.s_addr = htonl(sam_u->sun_u.lan_u.pip_w); + add_u.sin_port = htons(sam_u->sun_u.lan_u.por_s); + + uv_buf_t buf_u = uv_buf_init((c3_c*)snd_u->hun_y, 28); + c3_i sas_i = uv_udp_send(&snd_u->req_u, &u3_Host.wax_u, &buf_u, 1, + (const struct sockaddr*)&add_u, _stun_send_cb); + + if ( sas_i ) { + _stun_send_cb(&snd_u->req_u, sas_i); + } +} + +/* _stun_reset(): stun failed. start again using max backoff + */ +static void +_stun_reset(uv_timer_t* tim_u) +{ + u3_ames* sam_u = (u3_ames*)(tim_u->data); + + _stun_start(sam_u, 39000); +} + +/* _stun_on_lost(): stun failed (timeout); capture and reset. + */ +static void +_stun_on_lost(u3_ames* sam_u) +{ + sam_u->sun_u.sat_y = STUN_OFF; + + // only inject event into arvo to %kick ping app on first failure + // + if ( c3y == sam_u->sun_u.wok_o ) { + u3_noun wir = u3nc(c3__ames, u3_nul); + u3_noun cad = u3nq(c3__stun, c3__fail, sam_u->sun_u.dad_y, + u3nc(c3n, u3_ames_encode_lane(sam_u->sun_u.sef_u))); + u3_auto_plan(&sam_u->car_u, + u3_ovum_init(0, c3__ames, wir, cad)); + sam_u->sun_u.wok_o = c3n; + } + + uv_timer_start(&sam_u->sun_u.tim_u, _stun_reset, 5*1000, 0); +} + +/* _stun_time_gap(): elapsed milliseconds. + */ +static c3_d +_stun_time_gap(struct timeval sar_tv) +{ + struct timeval tim_tv; + gettimeofday(&tim_tv, 0); + u3_noun now = u3_time_in_tv(&tim_tv); + u3_noun den = u3_time_in_tv(&sar_tv); + return u3_time_gap_ms(den, now); +} + +/* _stun_timer_cb(): advance stun state machine. + */ +static void +_stun_timer_cb(uv_timer_t* tim_u) +{ + u3_ames* sam_u = (u3_ames*)(tim_u->data); + c3_w rto_w = 500; + + switch ( sam_u->sun_u.sat_y ) { + case STUN_OFF: { + // ignore; stray timer (although this shouldn't happen) + u3l_log("stun: stray timer STUN_OFF"); + } break; + + case STUN_KEEPALIVE: { + u3_lane* lan_u = &(sam_u->sun_u.lan_u); + c3_y imp_y = sam_u->sun_u.dad_y; + + if ( c3n == _ames_czar_lane(sam_u, imp_y, lan_u) ) { + uv_timer_start(&sam_u->sun_u.tim_u, _stun_timer_cb, 25*1000, 0); + } + else { + sam_u->sun_u.sat_y = STUN_TRYING; + gettimeofday(&sam_u->sun_u.sar_u, 0); // set start time to now + uv_timer_start(&sam_u->sun_u.tim_u, _stun_timer_cb, rto_w, 0); + _stun_send_request(sam_u); + } + } break; + + case STUN_TRYING: { + c3_d gap_d = _stun_time_gap(sam_u->sun_u.sar_u); + c3_d nex_d = (gap_d * 2) + rto_w - gap_d; + + if ( gap_d >= 39500 ) { + _stun_on_lost(sam_u); + } + else { + // wait ~s8 for the last STUN request + // + // https://datatracker.ietf.org/doc/html/rfc5389#section-7.2.1 + // + c3_w tim_w = (gap_d >= 31500) ? 8000 : c3_max(nex_d, 31500); + + uv_timer_start(&sam_u->sun_u.tim_u, _stun_timer_cb, tim_w, 0); + _stun_send_request(sam_u); + } + } break; + + default: u3_assert(!"programmer error"); + } +} + +/* _stun_start(): begin/restart STUN state machine. +*/ +static void +_stun_start(u3_ames* sam_u, c3_w tim_w) +{ + if ( ent_getentropy(sam_u->sun_u.tid_y, 12) ) { + u3l_log("stun: getentropy fail: %s", strerror(errno)); + u3_king_bail(); + } + + sam_u->sun_u.sat_y = STUN_KEEPALIVE; + uv_timer_start(&sam_u->sun_u.tim_u, _stun_timer_cb, tim_w, 0); +} + +/* _ames_is_czar(): [who] is galaxy. +*/ +static c3_o +_ames_is_czar(u3_noun who) +{ + u3_noun rac = u3do("clan:title", u3k(who)); + c3_o zar = ( c3y == (c3__czar == rac) ); + u3z(rac); + return zar; +} + +/* _ames_ef_saxo(): handle sponsorship chain notification +*/ +static void +_ames_ef_saxo(u3_ames* sam_u, u3_noun zad) +{ + u3_noun daz, dad; + + daz = u3qb_flop(zad); + if ( u3_nul == daz ) { + u3l_log("ames: empty sponsorship chain"); + u3z(zad); u3z(daz); + return; + } + + dad = u3h(daz); + u3_noun our = u3i_chubs(2, sam_u->pir_u->who_d); + + // if we are a galaxy, don't STUN + // + if ( c3y == _ames_is_czar(dad) && c3n == _ames_is_czar(our)) { + sam_u->sun_u.dad_y = (c3_y)dad; + _stun_start(sam_u, 0); + } + + u3z(zad); u3z(daz); u3z(our); +} + +/* _ames_send_lane(): resolve/decode lane. RETAIN +*/ +static c3_o +_ames_send_lane(u3_ames* sam_u, u3_noun lan, u3_lane* lan_u) +{ + u3_noun tag, val; + + if ( c3n == u3r_cell(lan, &tag, &val) ) { + u3l_log("ames: bad lane; not a cell"); + return c3n; + } + + switch ( tag ) { + case c3y: { // galaxy + if ( val >= 256 ) { + u3l_log("ames: bad galaxy lane: 0x%x", val); + return c3n; + } + return _ames_czar_lane(sam_u, (c3_y)val, lan_u); + } + + case c3n: { // ip:port + u3_lane nal_u = u3_ames_decode_lane(u3k(val)); + + // convert incoming localhost to outgoing localhost + // + // XX this looks like en/de-coding problems ... + // + nal_u.pip_w = ( nal_u.pip_w ) ? nal_u.pip_w : 0x7f000001; + + // if in local-only mode, don't send remote packets + // + if ( (c3n == u3_Host.ops_u.net) && (0x7f000001 != nal_u.pip_w) ) { + return c3n; + } + // if the lane is uninterpretable, silently drop the packet + // + else if ( !nal_u.por_s ) { + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("ames: inscrutable lane"); + } + return c3n; + } + + *lan_u = nal_u; + return c3y; + } + + default: { + u3l_log("ames: bad lane tag"); + return c3n; + } + } +} + +/* _ames_ef_send(): send packet to network (v4). +*/ +static void +_ames_ef_send(u3_ames* sam_u, u3_noun lan, u3_noun pac) +{ + if ( c3n == sam_u->car_u.liv_o ) { + u3l_log("ames: not yet live, dropping outbound\r"); + u3z(lan); u3z(pac); + return; + } + + u3_lane lan_u; + + if ( c3y == _ames_send_lane(sam_u, lan, &lan_u) ) { + u3_pact* pac_u = c3_calloc(sizeof(*pac_u)); + pac_u->sam_u = sam_u; + pac_u->lan_u = lan_u; + pac_u->len_w = u3r_met(3, pac); + pac_u->hun_y = c3_malloc(pac_u->len_w); + + u3r_bytes(0, pac_u->len_w, pac_u->hun_y, pac); + + _ames_sift_head(&pac_u->hed_u, pac_u->hun_y); + pac_u->typ_y = _ames_pact_typ(&pac_u->hed_u); + + _ames_send(pac_u); + } + + u3z(lan); u3z(pac); +} + +/* _ames_cap_queue(): cap ovum queue at QUEUE_MAX, dropping oldest packets. +*/ +static void +_ames_cap_queue(u3_ames* sam_u) +{ + u3_ovum* egg_u = sam_u->car_u.ext_u; + c3_d old_d = sam_u->sat_u.dop_d; + + while ( egg_u && (QUEUE_MAX < sam_u->car_u.dep_w) ) { + u3_ovum* nex_u = egg_u->nex_u; + + if ( c3__hear == u3h(egg_u->cad) ) { + u3_auto_drop(&sam_u->car_u, egg_u); + sam_u->sat_u.dop_d++; + + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("ames: packet dropped (%" PRIu64 " total)", sam_u->sat_u.dop_d); + } + } + + egg_u = nex_u; + } + + if ( !(u3C.wag_w & u3o_verbose) + && (old_d != sam_u->sat_u.dop_d) + && !(sam_u->sat_u.dop_d % 1000) ) + { + u3l_log("ames: packet dropped (%" PRIu64 " total)", sam_u->sat_u.dop_d); + } +} + +/* _ames_hear_bail(): handle packet failure. +*/ +static void +_ames_hear_bail(u3_ovum* egg_u, u3_noun lud) +{ + u3_ames* sam_u = (u3_ames*)egg_u->car_u; + c3_w len_w = u3qb_lent(lud); + + if ( (1 == len_w) && c3__evil == u3h(u3h(lud)) ) { + sam_u->sat_u.vil_d++; + + if ( (u3C.wag_w & u3o_verbose) + || (0 == (sam_u->sat_u.vil_d % 100)) ) + { + u3l_log("ames: heard bad crypto (%" PRIu64 " total), " + "check azimuth state\r\n", + sam_u->sat_u.vil_d); + } + } + else { + sam_u->sat_u.fal_d++; + + if ( (u3C.wag_w & u3o_verbose) + || (0 == (sam_u->sat_u.fal_d % 100)) ) + { + if ( 2 == len_w ) { + u3_pier_punt_goof("hear", u3k(u3h(lud))); + u3_pier_punt_goof("crud", u3k(u3h(u3t(lud)))); + } + // !2 traces is unusual, just print the first if present + // + else if ( len_w ) { + u3_pier_punt_goof("hear", u3k(u3h(lud))); + } + + u3l_log("ames: packet failed (%" PRIu64 " total)\r\n", + sam_u->sat_u.fal_d); + } + } + + u3z(lud); + u3_ovum_free(egg_u); +} + +/* _ames_put_packet(): add packet to queue, drop old packets on pressure +*/ +static void +_ames_put_packet(u3_ames* sam_u, + u3_noun msg, + u3_lane lan_u) +{ + u3_noun wir = u3nc(c3__ames, u3_nul); + u3_noun cad = u3nt(c3__hear, u3nc(c3n, u3_ames_encode_lane(lan_u)), msg); + + u3_auto_peer( + u3_auto_plan(&sam_u->car_u, + u3_ovum_init(0, c3__a, wir, cad)), + 0, 0, _ames_hear_bail); + + _ames_cap_queue(sam_u); +} + +/* _ames_send_many(): send pac_u on the (list lane) las; retains pac_u +*/ +static void +_ames_send_many(u3_pact* pac_u, u3_noun las, c3_o for_o) +{ + u3_ames* sam_u = pac_u->sam_u; + u3_noun tag, dat, lan, t = las; + u3_noun pac = _ames_pact_to_noun(pac_u); + + // if forwarding, track metrics + // + if ( c3y == for_o ) { + u3_ames* sam_u = pac_u->sam_u; + + sam_u->sat_u.fow_d++; + if ( 0 == (sam_u->sat_u.fow_d % 1000000) ) { + u3l_log("ames: forwarded %" PRIu64 " total", sam_u->sat_u.fow_d); + } + + if ( u3C.wag_w & u3o_verbose ) { + u3_noun sen = u3dc("scot", 'p', u3i_chubs(2, pac_u->pre_u.sen_d)); + u3_noun rec = u3dc("scot", 'p', u3i_chubs(2, pac_u->pre_u.rec_d)); + c3_c* sen_c = u3r_string(sen); + c3_c* rec_c = u3r_string(rec); + c3_y* pip_y = (c3_y*)&pac_u->lan_u.pip_w; + + //NOTE ip byte order assumes little-endian + u3l_log("ames: forwarding for %s to %s from %d.%d.%d.%d:%d", + sen_c, rec_c, + pip_y[3], pip_y[2], pip_y[1], pip_y[0], + pac_u->lan_u.por_s); + + c3_free(sen_c); c3_free(rec_c); + u3z(sen); u3z(rec); + } + } + + while ( u3_nul != t ) { + u3x_cell(t, &lan, &t); + + // validate lane and skip self if galaxy + // + if ( c3n == u3r_cell(lan, &tag, &dat) ) { + u3l_log("ames: bogus lane"); + } + else { + c3_o sen_o = c3y; + c3_d who_d[2]; + + if ( c3y == tag ) { + u3r_chubs(0, 2, who_d, dat); + + if ( (who_d[0] == sam_u->pir_u->who_d[0]) + && (who_d[1] == sam_u->pir_u->who_d[1]) ) + { + sen_o = c3n; + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("ames: forward skipping self"); + } + } + } + + if ( c3y == sen_o ) { + _ames_ef_send(sam_u, u3k(lan), u3k(pac)); + } + } + } + u3z(pac); + u3z(las); +} + +/* _ames_lane_scry_cb(): learn lanes to send packet on +*/ +static void +_ames_lane_scry_cb(void* vod_p, u3_noun nun) +{ + u3_panc* pan_u = vod_p; + u3_pact* pac_u = pan_u->pac_u; + u3_ames* sam_u = pac_u->sam_u; + u3_weak las = u3r_at(7, nun); + + // if scry fails, remember we can't scry, and just inject the packet + // + if ( u3_none == las ) { + if ( 5 < ++sam_u->sat_u.saw_d ) { + u3l_log("ames: giving up scry"); + sam_u->fig_u.see_o = c3n; + } + _ames_put_packet(sam_u, + _ames_pact_to_noun(pac_u), + pac_u->lan_u); + } + else { + sam_u->sat_u.saw_d = 0; + + // cache the scry result for later use + // + _ames_lane_into_cache(sam_u->lax_p, + u3i_chubs(2, pac_u->pre_u.rec_d), + u3k(las)); + + // if there are lanes, send the packet on them; otherwise drop it + // + if ( u3_nul != las ) { + _ames_send_many(pac_u, u3k(las), pan_u->for_o); + } + } + _ames_panc_free(pan_u); + u3z(nun); +} + +/* _ames_lane_scry_forward_cb(): learn lanes to forward packet on + */ +static void +_ames_lane_scry_forward_cb(void *vod_p, u3_noun nun) +{ + u3_panc *pan_u = vod_p; + u3_ames *sam_u = pan_u->pac_u->sam_u; + + sam_u->sat_u.foq_d--; + + _ames_lane_scry_cb(vod_p, nun); +} + +/* _ames_try_send(): try to send a packet to a ship and its sponsors +*/ +static void +_ames_try_send(u3_pact* pac_u, c3_o for_o) +{ + u3_weak lac; + u3_ames* sam_u = pac_u->sam_u; + + // if the recipient is a galaxy, their lane is always &+~gax + // + if ( (256 > pac_u->pre_u.rec_d[0]) + && (0 == pac_u->pre_u.rec_d[1]) ) + { + lac = u3nc(u3nc(c3y, (c3_y)pac_u->pre_u.rec_d[0]), u3_nul); + } + // otherwise, try to get the lane from cache + // + else { + u3_noun key = u3i_chubs(2, pac_u->pre_u.rec_d); + lac = _ames_lane_from_cache(sam_u->lax_p, key, sam_u->nal_o); + } + + // if we know there's no lane, drop the packet + // + if ( u3_nul == lac ) { + _ames_pact_free(pac_u); + return; + } + // if we don't know the lane, and the lane scry queue is full, + // just drop the packet + //TODO cap queue for lane lookups for scry responses, not just forwards + // + //TODO drop oldest item in forward queue in favor of this one. + // ames.c doesn't/shouldn't know about the shape of scry events, + // so can't pluck these out of the event queue like it does in + // _ames_cap_queue. as such, blocked on u3_lord_peek_cancel or w/e. + // + if ( (c3y == for_o) + && (u3_none == lac) + && (1000 < sam_u->sat_u.foq_d) ) + { + sam_u->sat_u.fod_d++; + if ( 0 == (sam_u->sat_u.fod_d % 10000) ) { + u3l_log("ames: dropped %" PRIu64 " forwards total", + sam_u->sat_u.fod_d); + } + + _ames_pact_free(pac_u); + return; + } + + // if we already know the lane, just send + // + if ( u3_none != lac ) { + _ames_send_many(pac_u, lac, for_o); + _ames_pact_free(pac_u); + } + // store the packet to be sent later when the lane scry completes + // + else { + u3_panc* pan_u = c3_calloc(sizeof(*pan_u)); + pan_u->pac_u = pac_u; + pan_u->for_o = for_o; + + u3_noun pax = _lane_scry_path(u3i_chubs(2, pac_u->pre_u.rec_d)); + + // if forwarding, enqueue the packet and scry for the lane + // + u3_noun gang = u3nc(u3_nul, u3_nul); + if ( c3y == for_o ) { + if ( 0 != sam_u->pan_u ) { + pan_u->nex_u = sam_u->pan_u; + sam_u->pan_u->pre_u = pan_u; + } + sam_u->pan_u = pan_u; + sam_u->sat_u.foq_d++; + + u3_pier_peek_last(sam_u->pir_u, gang, c3__ax, + u3_nul, pax, pan_u, _ames_lane_scry_forward_cb); + } + // otherwise, just scry for the lane + // + else { + u3_pier_peek_last(sam_u->pir_u, gang, c3__ax, + u3_nul, pax, pan_u, _ames_lane_scry_cb); + } + } +} + +#undef AMES_SKIP +#ifdef AMES_SKIP +/* _ames_skip(): decide whether to skip this packet, for rescue +*/ +static c3_o +_ames_skip(u3_prel* pre_u) +{ + if ( pre_u->sen_d[1] == 0 && + ( pre_u->sen_d[0] == 0x743a17a6 + || pre_u->sen_d[0] == 0xea99acb6 + || pre_u->sen_d[0] == 0x10100 + ) ) { + return c3n; + } + else { + return c3y; + } +} +#endif + +/* _fine_lop(): find beginning of page containing fra_w +*/ +static inline c3_w +_fine_lop(c3_w fra_w) +{ + return 1 + (((fra_w - 1) / FINE_PAGE) * FINE_PAGE); +} + +/* _fine_scry_path(): parse path from wail or purr. +*/ +static u3_weak +_fine_scry_path(u3_pact* pac_u) +{ + u3_peep* pep_u = ( PACT_WAIL == pac_u->typ_y ) + ? &pac_u->wal_u.pep_u + : &pac_u->pur_u.pep_u; + u3_noun ful = u3dc("rush", u3i_string(pep_u->pat_c), u3v_wish(PATH_PARSER)); + + if ( u3_nul == ful ) { + return u3_none; + } + else { + u3_noun pro = u3k(u3t(ful)); + u3z(ful); + return pro; + } +} + +/* _fine_hunk_scry_cb(): receive packets for datum out of fine + */ +static void +_fine_hunk_scry_cb(void* vod_p, u3_noun nun) +{ + u3_pact* pac_u = vod_p; + u3_ames* sam_u = pac_u->sam_u; + u3_peep* pep_u = &pac_u->pur_u.pep_u; + u3_weak fra = u3_none; + + u3_assert( PACT_PURR == pac_u->typ_y ); + + { + // XX virtualize + u3_noun pax = u3dc("rash", u3i_string(pep_u->pat_c), u3v_wish(PATH_PARSER)); + c3_w lop_w = _fine_lop(pep_u->fra_w); + u3_weak pas = u3r_at(7, nun); + + // if not [~ ~ fragments], mark as dead + // + if( u3_none == pas ) { + _fine_put_cache(sam_u, pax, lop_w, FINE_DEAD); + _ames_pact_free(pac_u); + + u3z(nun); + return; + } + + _fine_put_cache(sam_u, pax, lop_w, pas); + + // find requested fragment + // + while ( u3_nul != pas ) { + if ( pep_u->fra_w == lop_w ) { + fra = u3k(u3h(pas)); + break; + } + lop_w++; + pas = u3t(pas); + } + + u3z(pax); + } + + if ( fra == u3_none ) { + u3l_log("fine: fragment number out of range"); + _ames_pact_free(pac_u); + } + else if ( c3y == _fine_sift_meow(&pac_u->pur_u.mew_u, fra) ) { + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("fine: send %u %s", pac_u->pur_u.pep_u.fra_w, + pac_u->pur_u.pep_u.pat_c); + } + + _fine_etch_response(pac_u); + _ames_try_send(pac_u, c3n); + } + else { + u3l_log("fine: bad meow"); + _ames_pact_free(pac_u); + } + + u3z(nun); +} + +/* _fine_hear_request(): hear wail (fine request packet packet). +*/ +static void +_fine_hear_request(u3_pact* req_u, c3_w cur_w) +{ + u3_ames* sam_u = req_u->sam_u; + u3_pact* res_u; + u3_noun key; + + if ( c3n == _fine_sift_wail(req_u, cur_w) ) { + sam_u->sat_u.wal_d++; + if ( 0 == (sam_u->sat_u.wal_d % 100) ) { + u3l_log("fine: %" PRIu64 " dropped wails", + sam_u->sat_u.wal_d); + } + _ames_pact_free(req_u); + return; + } + // make scry cache key + // + else { + u3_weak yek = _fine_scry_path(req_u); + + if ( u3_none == yek ) { + sam_u->sat_u.wap_d++; + if ( 0 == (sam_u->sat_u.wap_d % 100) ) { + u3l_log("fine: %" PRIu64 " dropped wails (path)", + sam_u->sat_u.wap_d); + } + _ames_pact_free(req_u); + return; + } + + key = yek; + } + + // fill in the parts of res_u that we know from req_u + { + res_u = c3_calloc(sizeof(*res_u)); + res_u->sam_u = req_u->sam_u; + res_u->typ_y = PACT_PURR; + res_u->lan_u = req_u->lan_u; + + // copy header, swapping sender and receiver + // + res_u->hed_u = (u3_head) { + .req_o = c3n, + .sim_o = c3n, + .ver_y = req_u->hed_u.ver_y, + .sac_y = req_u->hed_u.rac_y, + .rac_y = req_u->hed_u.sac_y, + .mug_l = 0, // filled in later + .rel_o = c3n + }; + + // copy prelude, swapping sender and receiver + // + res_u->pre_u = (u3_prel) { + .sic_y = req_u->pre_u.ric_y, + .ric_y = req_u->pre_u.sic_y, + .sen_d = { req_u->pre_u.rec_d[0], req_u->pre_u.rec_d[1] }, + .rec_d = { req_u->pre_u.sen_d[0], req_u->pre_u.sen_d[1] }, + .rog_d = 0 + }; + + // copy unsigned request payload into response body + // + res_u->pur_u = (u3_purr) { + .pep_u = req_u->wal_u.pep_u, + .mew_u = {0} // filled in later + }; + + // copy path string from request into response body + { + c3_s len_s = req_u->wal_u.pep_u.len_s; + res_u->pur_u.pep_u.pat_c = c3_calloc(len_s + 1); + memcpy(res_u->pur_u.pep_u.pat_c, req_u->wal_u.pep_u.pat_c, len_s); + } + + // free incoming request + // + _ames_pact_free(req_u); + } + + // look up request in scry cache + // + c3_w fra_w = res_u->pur_u.pep_u.fra_w; + c3_w lop_w = _fine_lop(fra_w); + u3_weak pec = _fine_get_cache(sam_u, key, lop_w); + + // already pending; drop + // + if ( FINE_PEND == pec ) { + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("fine: pend %u %s", res_u->pur_u.pep_u.fra_w, + res_u->pur_u.pep_u.pat_c); + } + _ames_pact_free(res_u); + } + // cache miss or a previous scry blocked; try again + // + else { + u3_weak cac = _fine_get_cache(sam_u, key, fra_w); + + if ( (u3_none == cac) || (FINE_DEAD == cac) ) { + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("fine: miss %u %s", res_u->pur_u.pep_u.fra_w, + res_u->pur_u.pep_u.pat_c); + } + + u3_noun pax = + u3nc(c3__fine, + u3nq(c3__hunk, + u3dc("scot", c3__ud, u3i_word(lop_w)), + u3dc("scot", c3__ud, FINE_PAGE), + u3k(key))); + + // mark as pending in the scry cache + // + _fine_put_cache(res_u->sam_u, key, lop_w, FINE_PEND); + + // scry into arvo for a page of packets + // + u3_pier_peek_last(res_u->sam_u->car_u.pir_u, u3_nul, c3__ax, u3_nul, + pax, res_u, _fine_hunk_scry_cb); + } + // cache hit, fill in response meow and send + // + else if ( c3y == _fine_sift_meow(&res_u->pur_u.mew_u, u3k(cac)) ) { + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("fine: hit %u %s", res_u->pur_u.pep_u.fra_w, + res_u->pur_u.pep_u.pat_c); + } + _fine_etch_response(res_u); + _ames_try_send(res_u, c3n); + } + else { + u3l_log("fine: _fine_hear_request meow bad"); + _ames_pact_free(res_u); + } + } + + u3z(key); +} + +/* _fine_hear_response(): hear purr (fine response packet). +*/ +static void +_fine_hear_response(u3_pact* pac_u, c3_w cur_w) +{ + u3_noun wir = u3nc(c3__fine, u3_nul); + u3_noun cad = u3nt(c3__hear, + u3nc(c3n, u3_ames_encode_lane(pac_u->lan_u)), + u3i_bytes(pac_u->len_w, pac_u->hun_y)); + + u3_ovum* ovo_u = u3_ovum_init(0, c3__ames, wir, cad); + u3_auto_plan(&pac_u->sam_u->car_u, ovo_u); + + _ames_cap_queue(pac_u->sam_u); + _ames_pact_free(pac_u); +} + +/* _ames_hear_ames(): hear ames packet. +*/ +static void +_ames_hear_ames(u3_pact* pac_u, c3_w cur_w) +{ +#ifdef AMES_SKIP + if ( c3_y == _ames_skip(&pac_u->pre_u) ) { + _ames_pact_free(pac_u); + return; + } +#endif + + { + u3_noun msg = u3i_bytes(pac_u->len_w, pac_u->hun_y); + _ames_put_packet(pac_u->sam_u, msg, pac_u->lan_u); + _ames_pact_free(pac_u); + } +} + +/* _ames_try_forward(): forward packet, updating lane if needed. +*/ +static void +_ames_try_forward(u3_pact* pac_u) +{ + // insert origin lane if needed + // + if ( c3n == pac_u->hed_u.rel_o + && !( ( 256 > pac_u->pre_u.sen_d[0] ) + && ( 0 == pac_u->pre_u.sen_d[1] ) ) ) + { + c3_y* old_y; + c3_w old_w, cur_w; + + pac_u->hed_u.rel_o = c3y; + pac_u->pre_u.rog_d = u3_ames_lane_to_chub(pac_u->lan_u); + + old_w = pac_u->len_w; + old_y = pac_u->hun_y; + + pac_u->len_w += 6; + pac_u->hun_y = c3_calloc(pac_u->len_w); + + cur_w = 0; + + _ames_etch_head(&pac_u->hed_u, pac_u->hun_y); + cur_w += HEAD_SIZE; + + _ames_etch_origin(pac_u->pre_u.rog_d, pac_u->hun_y + cur_w); + cur_w += 6; + + memcpy(pac_u->hun_y + cur_w, + old_y + HEAD_SIZE, + old_w - HEAD_SIZE); + + c3_free(old_y); + } + + _ames_try_send(pac_u, c3y); +} + +/* _ames_hear(): parse a (potential) packet, dispatch appropriately. +** +** packet filtering needs to revised for two protocol-change scenarios +** +** - packets using old protocol versions from our sponsees +** these must be let through, and this is a transitive condition; +** they must also be forwarded where appropriate +** they can be validated, as we know their semantics +** +** - packets using newer protocol versions +** these should probably be let through, or at least +** trigger printfs suggesting upgrade. +** they cannot be filtered, as we do not know their semantics +*/ +void +_ames_hear(u3_ames* sam_u, + const struct sockaddr* adr_u, + c3_w len_w, + c3_y* hun_y) +{ + u3_pact* pac_u; + c3_w pre_w; + c3_w cur_w = 0; // cursor: how many bytes we've read from hun_y + + + // XX reorg, check if a STUN req/resp can look like an ames packet + // check the mug hash of the body of the packet, if not check if STUN + // otherwise , invalid packet, log failure + // check ames first, assume that STUN could maybe (not likely) overlap with ames + // for next protocol version, have an urbit cookie + // + if ( c3y == u3_stun_is_request(hun_y, len_w) ) { + _stun_on_request(sam_u, hun_y, adr_u); + c3_free(hun_y); + } + else if ( c3y == u3_stun_is_our_response(hun_y, + sam_u->sun_u.tid_y, len_w) ) + { + _stun_on_response(sam_u, hun_y, len_w); + c3_free(hun_y); + } + else { + struct sockaddr_in* add_u = (struct sockaddr_in*)adr_u; + u3_lane lan_u = { + .por_s = ntohs(add_u->sin_port), + .pip_w = ntohl(add_u->sin_addr.s_addr) + }; + + // make sure packet is big enough to have a header + // + if ( HEAD_SIZE > len_w ) { + sam_u->sat_u.hed_d++; + if ( 0 == (sam_u->sat_u.hed_d % 100000) ) { + u3l_log("ames: %" PRIu64 " dropped, failed to read header", + sam_u->sat_u.hed_d); + } + + c3_free(hun_y); + return; + } + + pac_u = c3_calloc(sizeof(*pac_u)); + pac_u->sam_u = sam_u; + pac_u->len_w = len_w; + pac_u->hun_y = hun_y; + pac_u->lan_u = lan_u; + cur_w = 0; + + // parse the header + // + _ames_sift_head(&pac_u->hed_u, pac_u->hun_y); + cur_w += HEAD_SIZE; + + pac_u->typ_y = _ames_pact_typ(&pac_u->hed_u); + + // ensure the protocol version matches ours + // + // XX rethink use of [fit_o] here and elsewhere + // + if ( (c3y == sam_u->fig_u.fit_o) + && (sam_u->ver_y != pac_u->hed_u.ver_y) ) + { + sam_u->sat_u.vet_d++; + if ( 0 == (sam_u->sat_u.vet_d % 100000) ) { + u3l_log("ames: %" PRIu64 " dropped for version mismatch", + sam_u->sat_u.vet_d); + } + _ames_pact_free(pac_u); + return; + } + + // check contents match mug in header + // + if ( c3n == _ames_check_mug(pac_u) ) { + // _log_head(&pac_u->hed_u); + sam_u->sat_u.mut_d++; + if ( 0 == (sam_u->sat_u.mut_d % 100000) ) { + u3l_log("ames: %" PRIu64 " dropped for invalid mug", + sam_u->sat_u.mut_d); + } + _ames_pact_free(pac_u); + return; + } + + // check that packet is big enough for prelude + // + pre_w = _ames_prel_size(&pac_u->hed_u); + if ( len_w < cur_w + pre_w ) { + sam_u->sat_u.pre_d++; + if ( 0 == (sam_u->sat_u.pre_d % 100000) ) { + u3l_log("ames: %" PRIu64 " dropped, failed to read prelude", + sam_u->sat_u.pre_d); + } + _ames_pact_free(pac_u); + return; + } + + // parse prelude + // + _ames_sift_prel(&pac_u->hed_u, &pac_u->pre_u, pac_u->hun_y + cur_w); + cur_w += pre_w; + + // if we can scry for lanes, + // and we are not the recipient, + // we might want to forward statelessly + // + if ( (c3y == sam_u->fig_u.see_o) + && ( (pac_u->pre_u.rec_d[0] != sam_u->pir_u->who_d[0]) + || (pac_u->pre_u.rec_d[1] != sam_u->pir_u->who_d[1]) ) ) + { + if ( c3y == sam_u->sat_u.for_o ) { + _ames_try_forward(pac_u); + } + } + else { + // enter protocol-specific packet handling + // + switch ( pac_u->typ_y ) { + case PACT_WAIL: { + _fine_hear_request(pac_u, cur_w); + } break; + + case PACT_PURR: { + _fine_hear_response(pac_u, cur_w); + } break; + + case PACT_AMES: { + _ames_hear_ames(pac_u, cur_w); + } break; + + default: { + u3l_log("ames_hear: bad packet type %d", pac_u->typ_y); + u3_king_bail(); + exit(1); + } + } + } + } +} + +/* _ames_recv_cb(): udp message receive callback. +*/ +static void +_ames_recv_cb(uv_udp_t* wax_u, + ssize_t nrd_i, + const uv_buf_t * buf_u, + const struct sockaddr* adr_u, + unsigned flg_i) +{ + u3_ames* sam_u = u3_Host.sam_u; // wax_u->data; + + if ( 0 > nrd_i ) { + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("ames: recv: fail: %s", uv_strerror(nrd_i)); + } + c3_free(buf_u->base); + } + else if ( 0 == nrd_i ) { + c3_free(buf_u->base); + } + else if ( flg_i & UV_UDP_PARTIAL ) { + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("ames: recv: fail: message truncated"); + } + c3_free(buf_u->base); + } + else { + // NB: [nrd_i] will never exceed max length from _ames_alloc() + // + _ames_hear(sam_u, adr_u, (c3_w)nrd_i, (c3_y*)buf_u->base); + } +} + +static void natpmp_init(uv_timer_t* handle); + +static void +natpmp_cb(uv_poll_t* handle, + c3_i status, + c3_i events) +{ + + if (status != 0) { + return; + } + + u3_ames* sam_u = handle->data; + + natpmpresp_t response; + c3_i err_i = readnatpmpresponseorretry(&sam_u->nat_u.req_u, &response); + if ( NATPMP_TRYAGAIN == err_i ) { + return; + } + + uv_poll_stop(handle); + + if ( 0 != err_i ) { + u3l_log("ames: natpmp error %i", err_i); + uv_poll_stop(&sam_u->nat_u.pol_u); + closenatpmp(&sam_u->nat_u.req_u); + return; + } + + u3l_log("ames: mapped public port %hu to localport %hu lifetime %u", + response.pnu.newportmapping.mappedpublicport, + response.pnu.newportmapping.privateport, + response.pnu.newportmapping.lifetime); + + closenatpmp(&sam_u->nat_u.req_u); + sam_u->nat_u.tim_u.data = sam_u; + uv_timer_start(&sam_u->nat_u.tim_u, natpmp_init, 7200000, 0); +} + +static void +natpmp_init(uv_timer_t *handle) +{ + u3_ames* sam_u = handle->data; + c3_s por_s = sam_u->pir_u->por_s; + + c3_i err_i = initnatpmp(&sam_u->nat_u.req_u, 0, 0); + + if (err_i != 0) { + return; + } + + err_i = uv_poll_init(u3L, &sam_u->nat_u.pol_u, sam_u->nat_u.req_u.s); + + if (err_i != 0) { + return; + } + + sendnewportmappingrequest(&sam_u->nat_u.req_u, NATPMP_PROTOCOL_UDP, por_s, por_s, 7200); + + sam_u->nat_u.pol_u.data = sam_u; + uv_poll_start(&sam_u->nat_u.pol_u, UV_READABLE, natpmp_cb); +} + +static void +_mdns_dear_bail(u3_ovum* egg_u, u3_noun lud) +{ + u3z(lud); + u3_ovum_free(egg_u); +} + +/* _ames_put_dear(): send lane to arvo after hearing mdns response +*/ +static void +_ames_put_dear(c3_c* ship, bool fake, c3_w saddr, c3_s port, void* context) +{ + u3_ames* sam_u = (u3_ames*)context; + + // one is loobean one is boolean + if (fake == sam_u->pir_u->fak_o) { + return; + } + + u3_lane lan; + lan.pip_w = ntohl(saddr); + lan.por_s = ntohs(port); + + u3_noun whu = u3dc("slaw", c3__p, u3i_string(ship)); + + if (u3_nul == whu) { + u3l_log("ames: strange ship from mdns: %s", ship); + return; + } + + u3_noun our = u3i_chubs(2, sam_u->pir_u->who_d); + if (our == u3t(whu)) { + u3z(whu); + u3z(our); + return; + } + + u3z(our); + + u3_noun wir = u3nc(c3__ames, u3_nul); + u3_noun cad = u3nt(c3__dear, u3k(u3t(whu)), u3nc(c3n, u3_ames_encode_lane(lan))); + + u3_auto_peer( + u3_auto_plan(&sam_u->car_u, + u3_ovum_init(0, c3__a, wir, cad)), + 0, 0, _mdns_dear_bail); + u3z(whu); +} + +/* _ames_io_start(): initialize ames I/O. +*/ +static void +_ames_io_start(u3_ames* sam_u) +{ + c3_s por_s = sam_u->pir_u->por_s; + u3_noun who = u3i_chubs(2, sam_u->pir_u->who_d); + c3_o zar_o = _ames_is_czar(who); + c3_i ret_i; + + + if ( c3y == zar_o ) { + c3_y num_y = (c3_y)sam_u->pir_u->who_d[0]; + c3_s zar_s = _ames_czar_port(num_y); + + if ( 0 == por_s ) { + por_s = zar_s; + } + else if ( por_s != zar_s ) { + u3l_log("ames: czar: overriding port %d with -p %d", zar_s, por_s); + u3l_log("ames: czar: WARNING: %d required for discoverability", zar_s); + } + } + + // Bind and stuff. + { + struct sockaddr_in add_u; + c3_i add_i = sizeof(add_u); + + memset(&add_u, 0, sizeof(add_u)); + add_u.sin_family = AF_INET; + add_u.sin_addr.s_addr = _(u3_Host.ops_u.net) ? + htonl(INADDR_ANY) : + htonl(INADDR_LOOPBACK); + add_u.sin_port = htons(por_s); + u3l_log("ames: skipping port: %u", por_s); + + /*if ( (ret_i = uv_udp_bind(&sam_u->wax_u, + (const struct sockaddr*)&add_u, 0)) != 0 ) + { + u3l_log("ames: port: %u", por_s); + u3l_log("ames: bind: %s", uv_strerror(ret_i)); + + if ( (c3y == zar_o) && + (UV_EADDRINUSE == ret_i) ) + { + u3l_log(" ...perhaps you've got two copies of vere running?"); + } + + // XX revise + // + u3_pier_bail(u3_king_stub()); + }*/ + + /* + uv_udp_getsockname(&sam_u->wax_u, (struct sockaddr *)&add_u, &add_i); + u3_assert(add_u.sin_port); + + sam_u->pir_u->por_s = ntohs(add_u.sin_port); + */ + } + + if ( c3y == u3_Host.ops_u.net ) { + u3l_log("ames: live on %d", sam_u->pir_u->por_s); + } + else { + u3l_log("ames: live on %d (localhost only)", sam_u->pir_u->por_s); + } + + { + u3_noun our = u3dc("scot", 'p', u3k(who)); + char* our_s = u3r_string(our); + u3z(our); + +#ifndef U3_OS_windows + mdns_init(por_s, !sam_u->pir_u->fak_o, our_s, _ames_put_dear, (void *)sam_u); + + if ( c3n == sam_u->pir_u->fak_o ) { + uv_timer_start(&sam_u->nat_u.tim_u, natpmp_init, 0, 0); + } +#endif + c3_free(our_s); + } + + /* + uv_udp_recv_start(&sam_u->wax_u, _ames_alloc, _ames_recv_cb); + */ + + sam_u->car_u.liv_o = c3y; + u3z(who); +} + +typedef struct _czar_resv { + uv_getaddrinfo_t adr_u; + u3_ames* sam_u; + c3_y imp_y; +} _czar_resv; + +/* _ames_czar_gone(): galaxy address resolution failed. +*/ +static void +_ames_czar_gone(u3_ames* sam_u, c3_y imp_y) +{ + c3_w old_w = sam_u->zar_u.pip_w[imp_y]; + + if ( !old_w ) { + sam_u->zar_u.pip_w[imp_y] = _CZAR_GONE; + } +} + +/* _ames_czar_here(): galaxy address resolution succeeded. +*/ +static void +_ames_czar_here(u3_ames* sam_u, c3_y imp_y, c3_w pip_w) +{ + c3_w old_w = sam_u->zar_u.pip_w[imp_y]; + + if ( pip_w != old_w ) { + c3_c dns_c[256]; + u3_assert ( !_ames_etch_czar(dns_c, sam_u->zar_u.dom_c, imp_y) ); + u3l_log("ames: czar %s ip .%d.%d.%d.%d", dns_c, + (pip_w >> 24) & 0xff, + (pip_w >> 16) & 0xff, + (pip_w >> 8) & 0xff, + (pip_w >> 0) & 0xff); + } + + sam_u->zar_u.pip_w[imp_y] = pip_w; + + { + c3_w blk_w = imp_y >> 5; + c3_w bit_w = 1 << (imp_y & 31); + + sam_u->zar_u.log_w[blk_w] &= ~bit_w; + } +} + +/* _ames_czar_cb(): galaxy address resolution callback. +*/ +static void +_ames_czar_cb(uv_getaddrinfo_t* adr_u, + c3_i sas_i, + struct addrinfo* aif_u) +{ + struct addrinfo* rai_u = aif_u; + _czar_resv* res_u = (_czar_resv*)adr_u; + u3_ames* sam_u = res_u->sam_u; + c3_y imp_y = res_u->imp_y; + + while ( rai_u && (AF_INET != rai_u->ai_family) ) { + rai_u = rai_u->ai_next; + } + + if ( rai_u && rai_u->ai_addr ) { + struct sockaddr_in* add_u = (void*)rai_u->ai_addr; + c3_w pip_w = ntohl(add_u->sin_addr.s_addr); + _ames_czar_here(sam_u, imp_y, pip_w); + } + else { + if ( !sas_i ) { + // XX unpossible + u3l_log("ames: czar: strange failure, no error"); + } + else if ( u3C.wag_w & u3o_verbose ) { + u3l_log("ames: czar fail: %s", uv_strerror(sas_i)); + } + + _ames_czar_gone(sam_u, imp_y); + } + + sam_u->zar_u.pen_s--; + + uv_freeaddrinfo(aif_u); + c3_free(res_u); +} + +/* _ames_czar(): single galaxy address resolution. +*/ +static void +_ames_czar(u3_ames* sam_u, const c3_c* dom_c, c3_y imp_y) +{ + struct addrinfo hin_u = { .ai_family = AF_INET }; + uv_getaddrinfo_t* adr_u; + _czar_resv* res_u; + c3_c dns_c[256]; + c3_i sas_i; + + u3_assert ( !_ames_etch_czar(dns_c, dom_c, imp_y) ); + + res_u = c3_malloc(sizeof(*res_u)); + res_u->sam_u = sam_u; + res_u->imp_y = imp_y; + + adr_u = &(res_u->adr_u); + sas_i = uv_getaddrinfo(u3L, adr_u, _ames_czar_cb, dns_c, 0, &hin_u); + + if ( sas_i ) { + _ames_czar_cb(adr_u, sas_i, NULL); + } +} + +/* _ames_czar_all(): galaxy address resolution. +*/ +static void +_ames_czar_all(uv_timer_t* tim_u) +{ + u3_ames* sam_u = tim_u->data; + + // requests still pending + if ( sam_u->zar_u.pen_s ) { + uv_timer_start(&sam_u->zar_u.tim_u, _ames_czar_all, 30*1000, 0); + return; + } + + sam_u->zar_u.pen_s = 256; + + for ( c3_w i_w = 0; i_w < 256; i_w++ ) { + _ames_czar(sam_u, sam_u->zar_u.dom_c, (c3_y)i_w); + } + + uv_timer_start(&sam_u->zar_u.tim_u, _ames_czar_all, 300*1000, 0); +} + +/* _ames_ef_turf(): initialize ames I/O on domain(s). +*/ +static void +_ames_ef_turf(u3_ames* sam_u, u3_noun tuf) +{ + if ( u3_nul != tuf ) { + c3_c dom_c[sizeof(sam_u->zar_u.dom_c)]; + u3_noun hot = u3h(tuf); + c3_w len_w = u3_mcut_host(0, 0, u3k(hot)); + + if ( len_w >= sizeof(dom_c) ) { // >250 + // 3 char for the galaxy (e.g. zod) and two dots + u3l_log("ames: galaxy domain too big (len=%u)", len_w); + u3m_p("hot", hot); + u3_pier_bail(u3_king_stub()); + } + + u3_mcut_host(dom_c, 0, u3k(hot)); + memset(dom_c + len_w, 0, sizeof(dom_c) - len_w); + + if ( 0 != memcmp(sam_u->zar_u.dom_c, dom_c, sizeof(dom_c)) ) { + memcpy(sam_u->zar_u.dom_c, dom_c, sizeof(dom_c)); + memset(sam_u->zar_u.pip_w, 0, sizeof(sam_u->zar_u.pip_w)); + sam_u->zar_u.dom_o = c3y; + _ames_czar_all(&(sam_u->zar_u.tim_u)); + } + + // XX save all for fallback, not just first + // + if ( u3_nul != u3t(tuf) ) { + u3l_log("ames: turf: ignoring additional domains"); + u3m_p("second", u3h(u3t(tuf))); + + if ( u3_nul != u3t(u3t(tuf)) ) { + u3m_p("third", u3h(u3t(u3t(tuf)))); + } + } + + u3z(tuf); + } + else if ( (c3n == sam_u->pir_u->fak_o) && (c3n == sam_u->zar_u.dom_o) ) { + u3l_log("ames: turf: no domains"); + } + + // XX is this ever necessary? + // + if ( c3n == sam_u->car_u.liv_o ) { + _ames_io_start(sam_u); + } +} + + +/* _ames_prot_scry_cb(): receive ames protocol version +*/ +static void +_ames_prot_scry_cb(void* vod_p, u3_noun nun) +{ + u3_ames* sam_u = vod_p; + u3_weak ver = u3r_at(7, nun); + + if ( u3_none == ver ) { + // assume protocol version 0 + // + sam_u->ver_y = 0; + sam_u->fin_s.ver_y = 0; + } + else if ( (c3n == u3a_is_cat(ver)) + || (7 < ver) ) { + u3m_p("ames: strange protocol", nun); + sam_u->ver_y = 0; + sam_u->fin_s.ver_y = 0; + } + else { + sam_u->ver_y = ver; + sam_u->fin_s.ver_y = ver; + } + + // XX revise: filtering should probably be disabled if + // we get a protocol version above the latest one we know + // + sam_u->fig_u.fit_o = c3y; + u3z(nun); +} + +/* _ames_io_talk(): start receiving ames traffic. +*/ +static void +_ames_io_talk(u3_auto* car_u) +{ + u3_ames* sam_u = (u3_ames*)car_u; + _ames_io_start(sam_u); + + // send born event + // + // { + // // XX remove [sev_l] + // // + // u3_noun wir = u3nt(c3__newt, + // u3dc("scot", c3__uv, sam_u->sev_l), + // u3_nul); + // u3_noun cad = u3nc(c3__born, u3_nul); + + // u3_auto_plan(car_u, u3_ovum_init(0, c3__a, wir, cad)); + // } + + // scry the protocol version out of arvo + // + // XX this should be re-triggered periodically, + // or, better yet, %ames should emit a %turf + // (or some other reconfig) effect when it is reset. + // + u3_noun gang = u3nc(u3_nul, u3_nul); + // XX drop this; done at another level + // + u3_pier_peek_last(car_u->pir_u, gang, c3__ax, u3_nul, + u3nt(u3i_string("protocol"), u3i_string("version"), u3_nul), + sam_u, _ames_prot_scry_cb); +} + +/* _ames_kick_newt(): apply packet network outputs. +*/ +c3_o +_ames_kick_newt(u3_ames* sam_u, u3_noun tag, u3_noun dat) +{ + c3_o ret_o; + + switch ( tag ) { + default: { + ret_o = c3n; + } break; + + case c3__send: { + u3_noun lan = u3k(u3h(dat)); + u3_noun pac = u3k(u3t(dat)); + _ames_ef_send(sam_u, lan, pac); + ret_o = c3y; + } break; + + case c3__turf: { + _ames_ef_turf(sam_u, u3k(dat)); + ret_o = c3y; + } break; + + case c3__saxo: { + _ames_ef_saxo(sam_u, u3k(dat)); + ret_o = c3y; + } + + case c3__nail: { + u3_noun who = u3k(u3h(dat)); + u3_noun las = u3k(u3t(dat)); + _ames_lane_into_cache(sam_u->lax_p, who, las); + sam_u->nal_o = c3y; + ret_o = c3y; + } break; + + } + + u3z(tag); u3z(dat); + return ret_o; +} + +/* _ames_io_kick(): apply effects +*/ +static c3_o +_ames_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad) +{ + u3_ames* sam_u = (u3_ames*)car_u; + + u3_noun tag, dat, i_wir; + c3_o ret_o; + + if ( (c3n == u3r_cell(wir, &i_wir, 0)) + || (c3n == u3r_cell(cad, &tag, &dat)) ) + { + ret_o = c3n; + } + else { + switch ( i_wir ) { + default: { + ret_o = c3n; + } break; + + // XX should also be c3__ames + // + case c3__newt: { + ret_o = _ames_kick_newt(sam_u, u3k(tag), u3k(dat)); + } break; + + // XX obsolete + // + // used to also handle %west and %woot for tcp proxy setup + // + case c3__ames: { + ret_o = _( c3__init == tag); + } break; + + // this can return through dill due to our fscked up boot sequence + // + // XX s/b obsolete, verify + // + case c3__term: { + if ( c3__send != tag ) { + ret_o = c3n; + } + else { + u3l_log("kick: strange send\r"); + ret_o = _ames_kick_newt(sam_u, u3k(tag), u3k(dat)); + } + } break; + } + } + + u3z(wir); u3z(cad); + return ret_o; +} + +/* _ames_exit_cb(): dispose resources aftr close. +*/ +static void +_ames_exit_cb(uv_handle_t* had_u) +{ + u3_ames* sam_u = had_u->data; + + u3_panc* pan_u = sam_u->pan_u; + while (0 != pan_u) { + u3_panc* nex_u = pan_u->nex_u; + _ames_panc_free(pan_u); + pan_u = nex_u; + } + + u3h_free(sam_u->lax_p); + + u3s_cue_xeno_done(sam_u->sil_u); + ur_cue_test_done(sam_u->tes_u); + + c3_free(sam_u); +} + +/* _ames_io_exit(): terminate ames I/O. +*/ +static void +_ames_io_exit(u3_auto* car_u) +{ + u3_ames* sam_u = (u3_ames*)car_u; + uv_close(&sam_u->had_u, _ames_exit_cb); + uv_close((uv_handle_t*)&sam_u->sun_u.tim_u, 0); + uv_close((uv_handle_t*)&sam_u->nat_u.tim_u, 0); + + uv_handle_type handle = uv_handle_get_type((uv_handle_t *)&sam_u->nat_u.pol_u); + if ( UV_UNKNOWN_HANDLE != handle) { + uv_close((uv_handle_t*)&sam_u->nat_u.pol_u, 0); + } +} + +/* _ames_io_info(): produce status info. +*/ +static u3_noun +_ames_io_info(u3_auto* car_u) +{ + u3_ames* sam_u = (u3_ames*)car_u; + c3_w sac_w, lax_w; + + sac_w = u3h_count(sam_u->fin_s.sac_p) * 4; + u3h_discount(sam_u->fin_s.sac_p); + + lax_w = u3h_count(sam_u->lax_p) * 4; + u3h_discount(sam_u->lax_p); + + return u3i_list( + u3_pier_mase("filtering", sam_u->fig_u.fit_o), + u3_pier_mase("can-send", net_o), + u3_pier_mase("can-scry", sam_u->fig_u.see_o), + u3_pier_mase("stun-working", sam_u->sun_u.wok_o), + u3_pier_mase("scry-cache", u3i_word(u3h_wyt(sam_u->fin_s.sac_p))), + u3_pier_mase("scry-cache-size", u3i_word(sac_w)), + u3_pier_mase("lane-cache", u3i_word(u3h_wyt(sam_u->lax_p))), + u3_pier_mase("lane-cache-size", u3i_word(lax_w)), + u3_pier_mase("dropped", u3i_chub(sam_u->sat_u.dop_d)), + u3_pier_mase("forwards-dropped", u3i_chub(sam_u->sat_u.fod_d)), + u3_pier_mase("forwards-pending", u3i_chub(sam_u->sat_u.foq_d)), + u3_pier_mase("forwarded", u3i_chub(sam_u->sat_u.fow_d)), + u3_pier_mase("filtered-hed", u3i_chub(sam_u->sat_u.hed_d)), + u3_pier_mase("filtered-ver", u3i_chub(sam_u->sat_u.vet_d)), + u3_pier_mase("filtered-mug", u3i_chub(sam_u->sat_u.mut_d)), + u3_pier_mase("filtered-pre", u3i_chub(sam_u->sat_u.pre_d)), + u3_pier_mase("filtered-wal", u3i_chub(sam_u->sat_u.wal_d)), + u3_pier_mase("filtered-wap", u3i_chub(sam_u->sat_u.wap_d)), + u3_pier_mase("crashed", u3i_chub(sam_u->sat_u.fal_d)), + u3_pier_mase("evil", u3i_chub(sam_u->sat_u.vil_d)), + u3_pier_mase("lane-scry-fails", u3i_chub(sam_u->sat_u.saw_d)), + u3_pier_mase("cached-lanes", u3i_word(u3h_wyt(sam_u->lax_p))), + u3_none); +} + +/* _ames_io_slog(): print status info. +*/ +static void +_ames_io_slog(u3_auto* car_u) +{ + u3_ames* sam_u = (u3_ames*)car_u; + c3_w sac_w, lax_w; + + sac_w = u3h_count(sam_u->fin_s.sac_p) * 4; + u3h_discount(sam_u->fin_s.sac_p); + + lax_w = u3h_count(sam_u->lax_p) * 4; + u3h_discount(sam_u->lax_p); + + +# define FLAG(a) ( (c3y == a) ? "&" : "|" ) + + // TODO rewrite in terms of info_f + // + u3l_log(" config:"); + u3l_log(" filtering: %s", FLAG(sam_u->fig_u.fit_o)); + u3l_log(" can send: %s", FLAG(net_o)); + u3l_log(" can scry: %s", FLAG(sam_u->fig_u.see_o)); + u3l_log(" stun:"); + u3l_log(" working: %s", FLAG(sam_u->sun_u.wok_o)); + u3l_log(" caches:"); + u3l_log(" cached lanes: %u, %u B", u3h_wyt(sam_u->lax_p), lax_w); + u3l_log(" cached meows: %u, %u B", u3h_wyt(sam_u->fin_s.sac_p), sac_w); + u3l_log(" counters:"); + u3l_log(" dropped: %" PRIu64, sam_u->sat_u.dop_d); + u3l_log(" forwards dropped: %" PRIu64, sam_u->sat_u.fod_d); + u3l_log(" forwards pending: %" PRIu64, sam_u->sat_u.foq_d); + u3l_log(" forwarded: %" PRIu64, sam_u->sat_u.fow_d); + u3l_log(" filtered (hed): %" PRIu64, sam_u->sat_u.hed_d); + u3l_log(" filtered (ver): %" PRIu64, sam_u->sat_u.vet_d); + u3l_log(" filtered (mug): %" PRIu64, sam_u->sat_u.mut_d); + u3l_log(" filtered (pre): %" PRIu64, sam_u->sat_u.pre_d); + u3l_log(" filtered (wal): %" PRIu64, sam_u->sat_u.wal_d); + u3l_log(" filtered (wap): %" PRIu64, sam_u->sat_u.wap_d); + u3l_log(" crashed: %" PRIu64, sam_u->sat_u.fal_d); + u3l_log(" evil: %" PRIu64, sam_u->sat_u.vil_d); + u3l_log(" lane scry fails: %" PRIu64, sam_u->sat_u.saw_d); + u3l_log(" cached lanes: %u", u3h_wyt(sam_u->lax_p)); +} + +/* u3_ames_io_init(): initialize ames I/O. +*/ +u3_auto* +u3_ames_io_init(u3_pier* pir_u) +{ + u3_ames* sam_u = c3_calloc(sizeof(*sam_u)); + sam_u->pir_u = pir_u; + sam_u->nal_o = c3n; + sam_u->fig_u.see_o = c3y; + sam_u->fig_u.fit_o = c3n; + sam_u->sun_u.wok_o = c3n; + sam_u->zar_u.dom_o = c3n; + + uv_timer_init(u3L, &sam_u->zar_u.tim_u); + sam_u->zar_u.tim_u.data = sam_u; + + uv_timer_init(u3L, &sam_u->sun_u.tim_u); + sam_u->sun_u.tim_u.data = sam_u; + + // initialize libnatpmp + sam_u->nat_u.tim_u.data = sam_u; + uv_timer_init(u3L, &sam_u->nat_u.tim_u); + + // enable forwarding on galaxies only + u3_noun who = u3i_chubs(2, sam_u->pir_u->who_d); + u3_noun rac = u3do("clan:title", who); + sam_u->sat_u.for_o = ( c3__czar == rac ) ? c3y : c3n; + + // hashtable for scry cache + // + // 1500 bytes per packet * 100_000 = 150MB + // 50 bytes (average) per path * 100_000 = 5MB + sam_u->fin_s.sac_p = u3h_new_cache(100000); + + //NOTE some numbers on memory usage for the lane cache + // + // assuming we store: + // a (list lane) with 1 item, 1+8 + 1 + (6*2) = 22 words + // and a @da as timestamp, 8 words + // consed together, 6 words + // with worst-case (128-bit) @p keys, 8 words + // and an additional cell for the k-v pair, 6 words + // that makes for a per-entry memory use of 50 words => 200 bytes + // + // the 500k entries below would take about 100mb (in the worst case, but + // not accounting for hashtable overhead). + // we could afford more, but 500k entries is more than we'll likely use + // in the near future. + // + sam_u->lax_p = u3h_new_cache(500000); + + u3_assert( !uv_udp_init(u3L, &sam_u->wax_u) ); + u3_assert( !uv_udp_init_ex(u3L, &u3_Host.wax_u, UV_UDP_RECVMMSG) ); + sam_u->wax_u.data = sam_u; + + sam_u->sil_u = u3s_cue_xeno_init(); + sam_u->tes_u = ur_cue_test_init(); + + // Disable networking for fake ships + // + if ( c3y == sam_u->pir_u->fak_o ) { + u3_Host.ops_u.net = c3n; + } + + u3_auto* car_u = &sam_u->car_u; + car_u->nam_m = c3__ames; + car_u->liv_o = c3n; + car_u->io.talk_f = _ames_io_talk; + car_u->io.info_f = _ames_io_info; + car_u->io.slog_f = _ames_io_slog; + car_u->io.kick_f = _ames_io_kick; + car_u->io.exit_f = _ames_io_exit; + + sam_u->fin_s.sam_u = sam_u; + + { + u3_noun now; + struct timeval tim_u; + gettimeofday(&tim_u, 0); + + now = u3_time_in_tv(&tim_u); + sam_u->sev_l = u3r_mug(now); + u3z(now); + } + + // XX declare void pointer to u3_host and add sam_u in it + u3_Host.sam_u = sam_u; + u3_Host.imp_u = sam_u->zar_u.pip_w; + return car_u; +} diff --git a/vere/pkg/vere/io/ames/stun.c b/vere/pkg/vere/io/ames/stun.c new file mode 100644 index 0000000..0f830c1 --- /dev/null +++ b/vere/pkg/vere/io/ames/stun.c @@ -0,0 +1,192 @@ +#include "vere.h" +#include "zlib.h" + +static c3_y* +_stun_add_fingerprint(c3_y *message, c3_w index) +{ + // Compute FINGERPRINT value as CRC-32 of the STUN message + // up to (but excluding) the FINGERPRINT attribute itself, + // XOR'ed with the 32-bit value 0x5354554e + c3_w init = crc32(0L, Z_NULL, 0); + c3_w crc = htonl(crc32(init, message, index) ^ 0x5354554e); + + // STUN attribute type: "FINGERPRINT" + message[index] = 0x80; message[index + 1] = 0x28; + // STUN attribute length: 4 bytes + message[index + 2] = 0x00; message[index + 3] = 0x04; + + memcpy(message + index + 4, &crc, 4); + + return message; +} + +static c3_o +_stun_has_fingerprint(c3_y* buf_y, c3_w buf_len_w) +{ + c3_y ned_y[4] = {0x80, 0x28, 0x00, 0x04}; + if ( buf_len_w < 28 ) { // At least STUN header and FINGERPRINT + return c3n; + } + + { + c3_y* fin_y = 0; + c3_w i = 20; // start after the header + + fin_y = memmem(buf_y + i, buf_len_w - i, ned_y, sizeof(ned_y)); + if ( fin_y != 0 ) { + c3_w lin_w = fin_y - buf_y; + // Skip attribute type and length + c3_w fingerprint = c3_sift_word(fin_y + sizeof(ned_y)); + c3_w init = crc32(0L, Z_NULL, 0); + c3_w crc = htonl(crc32(init, buf_y, lin_w) ^ 0x5354554e); + if ((fingerprint == crc) && (fin_y - buf_y + 8) == buf_len_w) { + return c3y; + } + } + + return c3n; + } +} + +/* u3_stun_is_request(): buffer is a stun request. +*/ +c3_o +u3_stun_is_request(c3_y* buf_y, c3_w len_w) +{ + c3_w cookie = htonl(0x2112A442); + + // Expects at least: + // STUN header and 8 byte FINGERPRINT + if ( (len_w >= 28) && + (buf_y[0] == 0x0 && buf_y[1] == 0x01) && + (memcmp(&cookie, buf_y + 4, 4) == 0) && + (c3y == _stun_has_fingerprint(buf_y, len_w)) ) + { + return c3y; + } + return c3n; +} + +/* u3_stun_is_our_response(): buffer is a response to our request. +*/ +c3_o +u3_stun_is_our_response(c3_y* buf_y, c3_y tid_y[12], c3_w len_w) +{ + c3_w cookie = htonl(0x2112A442); + + // Expects at least: + // STUN header, 12 byte XOR-MAPPED-ADDRESS and 8 byte FINGERPRINT + if ( (len_w == 40) && + (buf_y[0] == 0x01 && buf_y[1] == 0x01) && + (memcmp(&cookie, buf_y + 4, 4) == 0) && + (memcmp(tid_y, buf_y + 8, 12) == 0) && + (c3y == _stun_has_fingerprint(buf_y, len_w)) ) + { + return c3y; + } + return c3n; +} + +/* u3_stun_make_request(): serialize stun request. +*/ +void +u3_stun_make_request(c3_y buf_y[28], c3_y tid_y[12]) +{ + // see STUN RFC 8489 + // https://datatracker.ietf.org/doc/html/rfc8489#section-5 + memset(buf_y, 0, 28); + + // STUN message type: "binding request" + buf_y[1] = 0x01; + + // STUN message length: 8 (header and 32-bit FINGERPRINT) + buf_y[2] = 0x00; buf_y[3] = 0x08; + + // STUN "magic cookie" 0x2112A442 in network byte order + buf_y[4] = 0x21; buf_y[5] = 0x12; buf_y[6] = 0xa4; buf_y[7] = 0x42; + + // STUN "transaction id" + memcpy(buf_y + 8, tid_y, 12); + + // FINGERPRINT + _stun_add_fingerprint(buf_y, 20); +} + +/* u3_stun_make_response(): serialize stun response from request. +*/ +void +u3_stun_make_response(const c3_y req_y[20], + u3_lane* lan_u, + c3_y buf_y[40]) +{ + c3_w cok_w = 0x2112A442; + c3_w cur_w = 20; + + // XX hardcoded to match the requests we produce + // + memcpy(buf_y, req_y, cur_w); + buf_y[0] = 0x01; buf_y[1] = 0x01; // 0x0101 SUCCESS RESPONSE + buf_y[2] = 0x00; buf_y[3] = 0x14; // Length: 20 bytes + + buf_y[0] = 0x01; buf_y[1] = 0x01; // 0x0101 SUCCESS RESPONSE + buf_y[2] = 0x00; buf_y[3] = 0x14; // Length: 20 bytes + + memset(buf_y + cur_w, 0, cur_w); + + // XOR-MAPPED-ADDRESS + buf_y[cur_w + 0] = 0x00; // + buf_y[cur_w + 1] = 0x20; // attribute type 0x00020 + buf_y[cur_w + 2] = 0x00; // + buf_y[cur_w + 3] = 0x08; // STUN attribute length + buf_y[cur_w + 4] = 0x00; // extra reserved 0x0 byte + buf_y[cur_w + 5] = 0x01; // family 0x01:IPv4 + + c3_s por_s = htons(lan_u->por_s ^ (cok_w >> 16)); + c3_w pip_w = htonl(lan_u->pip_w ^ cok_w); + + memcpy(buf_y + cur_w + 6, &por_s, 2); // X-Port + memcpy(buf_y + cur_w + 8, &pip_w, 4); // X-IP Addres + + // FINGERPRINT + _stun_add_fingerprint(buf_y, cur_w + 12); +} + +/* u3_stun_find_xor_mapped_address(): extract lane from response. +*/ +c3_o +u3_stun_find_xor_mapped_address(c3_y* buf_y, + c3_w len_w, + u3_lane* lan_u) +{ + c3_y xor_y[4] = {0x00, 0x20, 0x00, 0x08}; + c3_w cookie = 0x2112A442; + + if ( len_w < 40 ) { // At least STUN header, XOR-MAPPED-ADDRESS & FINGERPRINT + return c3n; + } + + c3_w i = 20; // start after header + + c3_y* fin_y = memmem(buf_y + i, len_w - i, xor_y, sizeof(xor_y)); + if ( fin_y != 0 ) { + c3_w cur = (c3_w)(fin_y - buf_y) + sizeof(xor_y); + + if ( (buf_y[cur] != 0x0) && (buf_y[cur+1] != 0x1) ) { + return c3n; + } + + cur += 2; + + lan_u->por_s = ntohs(c3_sift_short(buf_y + cur)) ^ (cookie >> 16); + lan_u->pip_w = ntohl(c3_sift_word(buf_y + cur + 2)) ^ cookie; + + if ( u3C.wag_w & u3o_verbose ) { + c3_w nip_w = htonl(lan_u->pip_w); + c3_c nip_c[INET_ADDRSTRLEN]; + inet_ntop(AF_INET, &nip_w, nip_c, INET_ADDRSTRLEN); + u3l_log("stun: hear ip:port %s:%u", nip_c, lan_u->por_s); + } + return c3y; + } + return c3n; +} diff --git a/vere/pkg/vere/io/ames/stun.h b/vere/pkg/vere/io/ames/stun.h new file mode 100644 index 0000000..0fcaff6 --- /dev/null +++ b/vere/pkg/vere/io/ames/stun.h @@ -0,0 +1,35 @@ +#include "vere.h" + +#ifndef U3_STUN_H +#define U3_STUN_H + + /* u3_stun_is_request(): buffer is a stun request. + */ + c3_o + u3_stun_is_request(c3_y* buf_y, c3_w len_w); + + /* u3_stun_is_our_response(): buffer is a response to our request. + */ + c3_o + u3_stun_is_our_response(c3_y* buf_y, c3_y tid_y[12], c3_w len_w); + + /* u3_stun_make_request(): serialize stun request. + */ + void + u3_stun_make_request(c3_y buf_y[28], c3_y tid_y[12]); + + /* u3_stun_make_response(): serialize stun response from request. + */ + void + u3_stun_make_response(const c3_y req_y[20], + u3_lane* lan_u, + c3_y buf_y[40]); + + /* u3_stun_find_xor_mapped_address(): extract lane from response. + */ + c3_o + u3_stun_find_xor_mapped_address(c3_y* buf_y, + c3_w len_w, + u3_lane* lan_u); + +#endif /* ifndef U3_STUN_H */ diff --git a/vere/pkg/vere/io/behn.c b/vere/pkg/vere/io/behn.c new file mode 100644 index 0000000..d2db3ce --- /dev/null +++ b/vere/pkg/vere/io/behn.c @@ -0,0 +1,257 @@ +/// @file + +#include "vere.h" + +#include "noun.h" + +/* u3_behn: just a timer for ever +*/ + typedef struct _u3_behn { + u3_auto car_u; // driver + uv_timer_t tim_u; // behn timer + c3_o alm_o; // alarm + c3_l sev_l; // instance numbers + } u3_behn; + +// XX review, move +// +/* _behn_bail_dire(): c3y if fatal error. RETAIN +*/ +static c3_o +_behn_bail_dire(u3_noun lud) +{ + u3_noun mot = u3r_at(4, lud); + + if ( (c3__meme == mot) + || (c3__intr == mot) ) + { + return c3n; + } + + return c3y; +} + +/* _behn_wake_bail(): %wake is essential, retry failures. +*/ +static void +_behn_wake_bail(u3_ovum* egg_u, u3_noun lud) +{ + u3_auto* car_u = egg_u->car_u; + + if ( (2 > egg_u->try_w) + && (c3n == _behn_bail_dire(lud)) ) + { + u3z(lud); + u3_auto_redo(car_u, egg_u); + } + else { + u3_auto_bail_slog(egg_u, lud); + u3_ovum_free(egg_u); + + u3l_log("behn: timer failed; queue blocked"); + + if ( c3n == u3_Host.ops_u.beb ) { + u3_pier_bail(car_u->pir_u); + } + else { + u3l_log("vere: warning: continuing without timers"); + } + } +} + +/* _behn_time_cb(): timer callback. +*/ +static void +_behn_time_cb(uv_timer_t* tim_u) +{ + u3_behn* teh_u = tim_u->data; + teh_u->alm_o = c3n; + + // start another timer for 10 minutes + // + // This is a backstop to deal with the case where a %doze is not + // properly sent, for example after a crash. If the timer continues + // to fail, we can't proceed with the timers, but if it was a + // transient error, this will get us past it. + // + { + c3_d gap_d = 10 * 60 * 1000; + teh_u->alm_o = c3y; + uv_timer_start(&teh_u->tim_u, _behn_time_cb, gap_d, 0); + } + + // send timer event + // + { + u3_noun wir = u3nc(c3__behn, u3_nul); + u3_noun cad = u3nc(c3__wake, u3_nul); + + u3_auto_peer( + u3_auto_plan(&teh_u->car_u, u3_ovum_init(0, c3__b, wir, cad)), + 0, 0, _behn_wake_bail); + } +} + +/* u3_behn_ef_doze(): set or cancel timer +*/ +static void +_behn_ef_doze(u3_behn* teh_u, u3_noun wen) +{ + if ( c3n == teh_u->car_u.liv_o ) { + teh_u->car_u.liv_o = c3y; + } + + if ( c3y == teh_u->alm_o ) { + uv_timer_stop(&teh_u->tim_u); + teh_u->alm_o = c3n; + } + + if ( (u3_nul != wen) && + (c3y == u3du(wen)) && + (c3y == u3ud(u3t(wen))) ) + { + struct timeval tim_tv; + gettimeofday(&tim_tv, 0); + + u3_noun now = u3_time_in_tv(&tim_tv); + c3_d gap_d = u3_time_gap_ms(now, u3k(u3t(wen))); + + teh_u->alm_o = c3y; + uv_timer_start(&teh_u->tim_u, _behn_time_cb, gap_d, 0); + } + + u3z(wen); +} + +/* _behn_born_news(): initialization complete on %born. +*/ +static void +_behn_born_news(u3_ovum* egg_u, u3_ovum_news new_e) +{ + u3_auto* car_u = egg_u->car_u; + + if ( u3_ovum_done == new_e ) { + car_u->liv_o = c3y; + } +} + +/* _behn_born_bail(): %born is essential, retry failures. +*/ +static void +_behn_born_bail(u3_ovum* egg_u, u3_noun lud) +{ + u3_auto* car_u = egg_u->car_u; + + if ( (2 > egg_u->try_w) + && (c3n == _behn_bail_dire(lud)) ) + { + u3z(lud); + u3_auto_redo(car_u, egg_u); + } + else { + u3_auto_bail_slog(egg_u, lud); + u3_ovum_free(egg_u); + + u3l_log("behn: initialization failed"); + + // XX review, add flag to continue? + // + u3_pier_bail(car_u->pir_u); + } +} +/* _behn_io_talk(): notify %behn that we're live +*/ +static void +_behn_io_talk(u3_auto* car_u) +{ + u3_behn* teh_u = (u3_behn*)car_u; + + // XX remove [sev_l] + // + u3_noun wir = u3nt(c3__behn, + u3dc("scot", c3__uv, teh_u->sev_l), + u3_nul); + u3_noun cad = u3nc(c3__born, u3_nul); + + u3_auto_peer( + u3_auto_plan(car_u, u3_ovum_init(0, c3__b, wir, cad)), + 0, + _behn_born_news, + _behn_born_bail); +} + +/* _behn_io_kick(): apply effects. +*/ +static c3_o +_behn_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad) +{ + u3_behn* teh_u = (u3_behn*)car_u; + + u3_noun tag, dat, i_wir; + c3_o ret_o; + + if ( (c3n == u3r_cell(wir, &i_wir, 0)) + || (c3n == u3r_cell(cad, &tag, &dat)) + || (c3__behn != i_wir) + || (c3__doze != tag) ) + { + ret_o = c3n; + } + else { + ret_o = c3y; + _behn_ef_doze(teh_u, u3k(dat)); + } + + u3z(wir); u3z(cad); + return ret_o; +} + +/* _behn_exit_cb(); +*/ +static void +_behn_exit_cb(uv_timer_t* tim_u) +{ + u3_behn* teh_u = tim_u->data; + c3_free(teh_u); +} + +/* _behn_io_exit(): terminate timer. +*/ +static void +_behn_io_exit(u3_auto* car_u) +{ + u3_behn* teh_u = (u3_behn*)car_u; + uv_close((uv_handle_t*)&teh_u->tim_u, (uv_close_cb)_behn_exit_cb); +} + +/* u3_behn(): initialize time timer. +*/ +u3_auto* +u3_behn_io_init(u3_pier* pir_u) +{ + u3_behn* teh_u = c3_calloc(sizeof(*teh_u)); + teh_u->alm_o = c3n; + + uv_timer_init(u3L, &teh_u->tim_u); + teh_u->tim_u.data = teh_u; + + u3_auto* car_u = &teh_u->car_u; + car_u->nam_m = c3__behn; + + car_u->liv_o = c3n; + car_u->io.talk_f = _behn_io_talk; + car_u->io.kick_f = _behn_io_kick; + car_u->io.exit_f = _behn_io_exit; + + { + u3_noun now; + struct timeval tim_u; + gettimeofday(&tim_u, 0); + + now = u3_time_in_tv(&tim_u); + teh_u->sev_l = u3r_mug(now); + u3z(now); + } + + return car_u; +} diff --git a/vere/pkg/vere/io/conn.c b/vere/pkg/vere/io/conn.c new file mode 100644 index 0000000..cd0cfc3 --- /dev/null +++ b/vere/pkg/vere/io/conn.c @@ -0,0 +1,968 @@ +/// @file + +/* +** implements the control plane: a socket that can be used to +** query and interact with an urbit ship from earth. +** +** the control plane nominally consumes input described by: +** +** $: request-id=@ :: id for response +** $% [%fyrd fyrd-args=*] :: run a thread +** [%peek peek-args=*] :: scry +** [%peel peel-args=*] :: runtime peek +** [%ovum ovum-args=*] :: inject raw ovum +** [%urth urth-args=*] :: runtime command +** == == :: +** +** request-id is a client-supplied atomic identifier that will +** be returned along with the response, to allow correlating +** responses with requests. +** +** responses are [request-id=@ data=*]. if the driver encounters +** an error, then it will try to send a %bail response with +** request-id set to 0, i.e.: +** +** [0 %bail error-code=@ error-string=@t] +** +** and subsequently close the connection. +** +** %fyrd is a request to run a thread. its arguments are +** described in the ++khan section of sys/lull.hoon. to +** summarize: +** +** +$ task $%(... [%fyrd p=(fyrd cast)]) :: +** +$ bear $@(desk beak) :: partial $beak +** +$ cast (pair mark page) :: output mark +input +** ++ fyrd |$ [a] [=bear name=term args=a] :: thread run request +** +** the cast's mark is applied to the output. the page (untyped +** cage, or pair of mark and noun) in args contains the input +** mark. e.g. to run -hi with the ship ~zod as input, receiving +** output as a tape, with request-id set to 32, send the +jam of +** this noun over the socket with newt framing: +** +** [32 %fyrd [%base %hi %tape [%ship ~zod]]] +** +** responses to %fyrd are: +** +** +$ gift $%(... [%avow p=(avow page)]) :: +** ++ avow |$ [a] (each a goof) :: +** +** %peek is a namespace read request (aka scry), and will be +** forwarded directly to arvo. its arguments are the nom of the +** external peek interface in arvo, at arm 22. (lyc is always +** `~, i.e. request from self.) that is: +** +** $+ each path +** $% [%once vis=view syd=desk tyl=spur] +** [%beam vis=view bem=beam] +** == +** +** %peel is a runtime "peek". it exposes an unprincipled +** scry-like namespace allowing querying of various metrics +** about the state of vere. it accepts $path-like arguments, +** i.e. nul-terminated lists of $knot. it responds with a +** (unit). +** +** the %peel path /help produces a list of available commands. +** /info produces runtime metrics at the moment in time that the +** request was received. the type produced by /info is $mass: +** +** +$ mass (pair cord (each * (list mass))) +** +** where the leaves are conventionally @ud, but the +** precise interpretation depends on the metric (e.g. +** loobean settings or integer counters.) it is acceptable +** to flatten the list by prepending the parent cord +** to each child element with a separator, e.g.: +** [%pier %| [%ames %| [%packets-sent %& 37] ~] ~] could be +** rendered as 'pier-ames-packets-sent'. this transformation is +** guaranteed to result in unique names. +** +** %ovum is a raw kernel move, to be injected directly into +** arvo. needless to say this will void your warranty. usually +** you want to use %fyrd instead. an update will be sent: %done +** on successful completion, %bail with a stack trace on error, +** or %drop if the ovum is dropped. +** +** %urth is a command for the runtime. these are acked with %.y +** on receipt. no further updates are provided. +** +** messages use newt framing. because the framing begins with +** a tag byte, any messages that do not contain that byte are +** reserved for future use. +** +*/ +#include "vere.h" + +#include +#include +#include +#include +#include + +#include "noun.h" +#include "uv.h" +#include "version.h" + +/* u3_cran: control plane request. +*/ + typedef struct _u3_cran { + u3_atom rid; // client-supplied request id + struct _u3_chan* can_u; // connection backpointer + struct _u3_cran* nex_u; // next pointer + } u3_cran; + +/* u3_chan: incoming control plane connection. +*/ + typedef struct _u3_chan { + struct _u3_moor mor_u; // message handler + c3_l coq_l; // connection number + c3_o liv_o; // connection live + struct _u3_shan* san_u; // server backpointer + struct _u3_cran* ran_u; // request list + } u3_chan; + +/* u3_shan: control plane server. +*/ + typedef struct _u3_shan { + uv_pipe_t pyp_u; // server stream handler + c3_l nex_l; // next connection number + struct _u3_conn* con_u; // device backpointer + struct _u3_chan* can_u; // connection list + } u3_shan; + +/* u3_conn: control plane device. +*/ + typedef struct _u3_conn { + u3_auto car_u; // driver + c3_l sev_l; // instance number + struct _u3_shan* san_u; // server reference + u3_cue_xeno* sil_u; // cue handle + c3_o kan_o; // %khan present? + } u3_conn; + +static const c3_c URB_SOCK_PATH[] = ".urb/conn.sock"; + +/* _conn_close_cb(): socket close callback. +*/ +static void +_conn_close_cb(uv_handle_t* had_u) +{ + c3_free(had_u); +} + +/* _conn_mote_free(): u3_moat-shaped close callback. +*/ +static void +_conn_moat_free(void* ptr_v, ssize_t err_i, const c3_c* err_c) +{ + c3_free(ptr_v); +} + +/* _conn_send_noun(): jam and send noun over chan. +*/ +static void +_conn_send_noun(u3_chan* can_u, u3_noun nun) +{ + c3_y* byt_y; + c3_d len_d; + + u3s_jam_xeno(nun, &len_d, &byt_y); + u3z(nun); + u3_newt_send((u3_mojo*)&can_u->mor_u, len_d, byt_y); +} + +/* _conn_find_chan(): lookup channel by connection number. +*/ +static u3_chan* +_conn_find_chan(u3_conn* con_u, c3_l sev_l, c3_l coq_l) +{ + u3_chan* ret_u; + + for ( ret_u = con_u->san_u->can_u; + ret_u; + ret_u = (u3_chan*)ret_u->mor_u.nex_u ) { + if ( coq_l == ret_u->coq_l ) { + return ret_u; + } + } + return 0; +} + +/* _conn_read_wire(): check tag, decompose wire into /sev/coq/rid +*/ +static c3_o +_conn_read_wire(u3_noun wir, + c3_l tag_l, + c3_l* sev_l, + c3_l* coq_l, + u3_atom* rid) +{ + u3_noun i_wir, t_wir; + + if ( (c3n == u3r_cell(wir, &i_wir, &t_wir)) || + (tag_l != i_wir) ) + { + u3z(wir); return c3n; + } + else { + u3_noun pud = t_wir; + u3_noun p_pud, t_pud, tt_pud, q_pud, r_pud, s_pud, + uco, p_uco, q_uco; + + if ( (c3n == u3r_cell(pud, &p_pud, &t_pud)) || + (c3n == u3v_lily(c3__uv, u3k(p_pud), sev_l)) ) + { + u3z(wir); return c3n; + } + if ( u3_nul == t_pud ) { + *coq_l = 0; *rid = 0; + } + else { + if ( (c3n == u3r_cell(t_pud, &q_pud, &tt_pud)) || + (c3n == u3v_lily(c3__ud, u3k(q_pud), coq_l)) ) + { + u3z(wir); return c3n; + } + if ( u3_nul == tt_pud ) { + *rid = 0; + } + else { + if ( (c3n == u3r_cell(tt_pud, &r_pud, &s_pud)) || + (u3_nul != s_pud) || + (c3n == u3ud(r_pud)) ) + { + u3z(wir); return c3n; + } + uco = u3dc("slaw", c3__uv, u3k(r_pud)); + if ( (c3n == u3r_cell(uco, &p_uco, &q_uco)) || + (u3_nul != p_uco) ) + { + u3z(uco); u3z(wir); return c3n; + } + *rid = u3k(q_uco); + u3z(uco); + } + } + u3z(wir); return c3y; + } +} + +/* _conn_poke_bail(): error function on failed %fyrd. +*/ +static void +_conn_poke_bail(u3_ovum* egg_u, u3_noun lud) +{ + u3_conn* con_u = (u3_conn*)egg_u->car_u; + u3_chan* can_u; + u3_noun wir = egg_u->wir; + c3_l sev_l, coq_l; + u3_atom rid; + + u3_auto_bail_slog(egg_u, u3k(lud)); + if ( (c3n == _conn_read_wire(u3k(wir), c3__khan, &sev_l, &coq_l, &rid)) || + (con_u->sev_l != sev_l) ) + { + // wtf? + // + u3_assert(!"not reached"); + u3z(lud); return; + } + can_u = _conn_find_chan(con_u, sev_l, coq_l); + if ( can_u ) { + _conn_send_noun(can_u, u3nt(rid, c3__bail, lud)); + } + else { + u3z(rid); u3z(lud); + } + u3_ovum_free(egg_u); +} + +/* _conn_close_chan(): close given channel, freeing. +*/ +static void +_conn_close_chan(u3_shan* san_u, u3_chan* can_u) +{ + u3_conn* con_u = san_u->con_u; + u3_chan* inn_u; + u3_cran* ran_u; + + // unset chan on all pending requests. + // + for ( ran_u = can_u->ran_u; ran_u; ran_u = ran_u->nex_u ) { + ran_u->can_u = 0; + } + + // remove chan from server's connection list. + // + if ( san_u->can_u == can_u ) { + san_u->can_u = (u3_chan*)can_u->mor_u.nex_u; + } + else { + for ( inn_u = san_u->can_u; inn_u; inn_u = (u3_chan*)inn_u->mor_u.nex_u ) { + if ( (u3_chan*)inn_u->mor_u.nex_u == can_u ) { + inn_u->mor_u.nex_u = can_u->mor_u.nex_u; + break; + } + } + } + can_u->mor_u.nex_u = NULL; + + // send a close event to arvo and stop reading. + // + if ( _(con_u->kan_o) ) { + u3_noun wir, cad; + + wir = u3nq(c3__khan, + u3dc("scot", c3__uv, con_u->sev_l), + u3dc("scot", c3__ud, can_u->coq_l), + u3_nul); + cad = u3nc(c3__done, u3_nul); + u3_auto_peer( + u3_auto_plan(&con_u->car_u, + u3_ovum_init(0, c3__k, wir, cad)), + 0, 0, _conn_poke_bail); + } + u3_newt_moat_stop((u3_moat*)&can_u->mor_u, _conn_moat_free); +} + +/* _conn_moor_bail(): error callback for u3_moor. +*/ +static void +_conn_moor_bail(void* ptr_v, ssize_t err_i, const c3_c* err_c) +{ + u3_chan* can_u = (u3_chan*)ptr_v; + u3_shan* san_u = can_u->san_u; + + if ( err_i != UV_EOF ) { + u3l_log("conn: moor bail %zd %s", err_i, err_c); + if ( _(can_u->liv_o) ) { + _conn_send_noun(can_u, u3nq(0, c3__bail, u3i_word(err_i), + u3i_string(err_c))); + can_u->liv_o = c3n; + } + } + + _conn_close_chan(san_u, can_u); +} + +/* _conn_drop_cran(): finalize/remove request from chan (does not u3z rid.) +*/ +static void +_conn_drop_cran(u3_chan* can_u, u3_cran* ran_u) +{ + u3_cran* inn_u; + + // remove from pending list, special-case for head. + // + if ( ran_u == can_u->ran_u ) { + can_u->ran_u = ran_u->nex_u; + } + else { + for ( inn_u = can_u->ran_u; inn_u; inn_u = inn_u->nex_u ) { + if ( ran_u == inn_u->nex_u ) { + inn_u->nex_u = ran_u->nex_u; + break; + } + } + } + c3_free(ran_u); +} + +/* _conn_peek_cb(): scry result handler. +*/ +static void +_conn_peek_cb(void* ptr_v, u3_noun res) +{ + u3_cran* ran_u = (u3_cran*)ptr_v; + u3_chan* can_u = ran_u->can_u; + + if ( !can_u ) { + // chan was closed; noop. + // + u3z(ran_u->rid); c3_free(ran_u); + u3z(res); return; + } + _conn_send_noun(can_u, u3nt(ran_u->rid, c3__peek, res)); + _conn_drop_cran(can_u, ran_u); +} + +/* _conn_ovum_bail(): bail callback on injected event. +*/ +static void +_conn_ovum_bail(u3_ovum* egg_u, u3_noun lud) +{ + u3_cran* ran_u = egg_u->ptr_v; + u3_chan* can_u = ran_u->can_u; + + u3_auto_bail_slog(egg_u, u3k(lud)); + if ( !can_u ) { + // chan was closed; noop. + // + u3z(ran_u->rid); c3_free(ran_u); + u3z(lud); return; + } + _conn_send_noun(can_u, u3nt(ran_u->rid, c3__bail, lud)); + _conn_drop_cran(can_u, ran_u); + u3_ovum_free(egg_u); +} + +/* _conn_ovum_news(): lifecycle callback for injected events. +*/ +static void +_conn_ovum_news(u3_ovum* egg_u, u3_ovum_news new_e) +{ + u3_cran* ran_u = egg_u->ptr_v; + u3_chan* can_u = ran_u->can_u; + + if ( u3_ovum_done == new_e || + u3_ovum_drop == new_e ) + { + if ( can_u ) { + _conn_send_noun(can_u, + u3nt(ran_u->rid, c3__news, + ( u3_ovum_done == new_e + ? c3__done + : c3__drop ))); + _conn_drop_cran(can_u, ran_u); + } + else { + u3z(ran_u->rid); c3_free(ran_u); + } + } +} + +/* _conn_make_cran(): alloc/init new request. +*/ +static u3_cran* +_conn_make_cran(u3_chan* can_u, u3_atom rid) +{ + u3_cran* ran_u = c3_calloc(sizeof(*ran_u)); + + ran_u->rid = rid; + ran_u->can_u = can_u; + ran_u->nex_u = can_u->ran_u; + can_u->ran_u = ran_u; + return ran_u; +} + +static void +_conn_peel_quiz_cb(c3_m mot_m, void* ptr_v, u3_noun res) +{ + u3_cran* ran_u = ptr_v; + u3_chan* can_u = ran_u->can_u; + + if ( !can_u ) { + // chan was closed; noop. + // + u3z(ran_u->rid); c3_free(ran_u); + u3z(res); return; + } + + _conn_send_noun(can_u, u3nt(ran_u->rid, c3__peel, res)); + _conn_drop_cran(can_u, ran_u); +} + +static void +_conn_async_peel(u3_conn* con_u, + u3_chan* can_u, + u3_atom rid, + u3_noun dat) +{ + u3_pier* pir_u = con_u->car_u.pir_u; + c3_m mot_m = u3h(dat); + + switch ( mot_m ) { + case c3__quic: + case c3__mass: { + u3_lord_quiz(pir_u->god_u, + (c3__quic == mot_m) ? c3__quic : c3__quac, + _conn_make_cran(can_u, rid), _conn_peel_quiz_cb); + } break; + + default: u3_assert(0); + } + + u3z(dat); +} + +/* _conn_read_peel(): response to a %peel request, sans rid. +*/ +static u3_weak +_conn_read_peel(u3_conn* con_u, u3_noun dat) +{ + u3_pier* pir_u = con_u->car_u.pir_u; + u3_noun i_dat, t_dat, it_dat, tt_dat; + u3_weak res; + + if ( c3n == u3r_cell(dat, &i_dat, &t_dat) ) { + res = u3_nul; + } + else if ( u3_nul == t_dat ) { + // zero-argument requests. + // + switch (i_dat) { + default: { + res = u3_nul; + } break; + // command list. + // + case c3__help: { + res = u3nc( + u3_nul, + u3i_list(u3nc(c3__help, u3_nul), u3nc(c3__info, u3_nul), + u3nc(c3__khan, u3_nul), u3nc(c3__live, u3_nul), + u3nc(c3__mass, u3_nul), + u3nc(c3__quic, u3_nul), + u3nc(c3__port, + u3i_list(c3__ames, c3__htls, c3__http, u3_none)), + u3nc(c3__v, u3_nul), u3nc(c3__who, u3_nul), + u3_none)); + } break; + // simple health check. + // + case c3__live: { + res = u3nc(u3_nul, pir_u->liv_o); + } break; + // true iff the %khan vane is live (meaning %fyrd is supported.) + // + case c3__khan: { + res = u3nc(u3_nul, con_u->kan_o); + } break; + // |mass output + // + case c3__quic: + case c3__mass: { + res = u3_none; + } break; + // runtime metrics. + // + case c3__info: { + res = u3nc(u3_nul, u3_pier_info(pir_u)); + } break; + // vere version. + // + case c3__v: { + res = u3nc(u3_nul, u3i_string(URBIT_VERSION)); + } break; + // current ship. + // + case c3__who: { + res = u3nc(u3_nul, u3i_chubs(2, pir_u->who_d)); + } + } + } + else if ( c3n == u3r_cell(t_dat, &it_dat, &tt_dat) ) { + res = u3_nul; + } + else if ( u3_nul == tt_dat ) { + // one-argument requests. + // + switch (i_dat) { + default: { + res = u3_nul; + } break; + case c3__port: { + switch (it_dat) { + default: { + res = u3_nul; + } break; + case c3__ames: { + res = u3nc(u3_nul, pir_u->por_s); + } break; + case c3__htls: { + res = u3nc(u3_nul, pir_u->pes_s); + } break; + case c3__http: { + res = u3nc(u3_nul, pir_u->per_s); + } break; + } + } break; + } + } + else { + res = u3_nul; + } + u3z(dat); return res; +} + +/* _conn_moor_poke(): called on message read from u3_moor. +*/ +static c3_o +_conn_moor_poke(void* ptr_v, c3_d len_d, c3_y* byt_y) +{ + u3_weak jar; + u3_noun can, rid, tag, dat, rud = u3_nul, tar, wir, cad; + u3_chan* can_u = (u3_chan*)ptr_v; + u3_conn* con_u = can_u->san_u->con_u; + c3_i err_i = 0; + c3_c* err_c; + + jar = u3s_cue_xeno_with(con_u->sil_u, len_d, byt_y); + if ( u3_none == jar ) { + err_i = -1; err_c = "cue-none"; + goto _moor_poke_out; + } + if ( (c3n == u3r_cell(jar, &rid, &can)) || + (c3n == u3r_cell(can, &tag, &dat)) || + (c3n == u3ud(rid)) ) + { + err_i = -2; err_c = "jar-bad"; + goto _moor_poke_out; + } + + rud = u3dc("scot", c3__uv, u3k(rid)); + + switch (tag) { + default: { + err_i = -3; err_c = "tag-unknown"; + goto _moor_poke_out; + } break; + + case c3__fyrd: { + if ( c3n == con_u->kan_o ) { + err_i = -8; err_c = "khan-miss"; + goto _moor_poke_out; + } + wir = u3nc(c3__khan, + u3nq(u3dc("scot", c3__uv, con_u->sev_l), + u3dc("scot", c3__ud, can_u->coq_l), u3k(rud), u3_nul)); + u3_auto_peer( + u3_auto_plan(&con_u->car_u, + u3_ovum_init(0, c3__k, wir, u3k(can))), + 0, 0, _conn_poke_bail); + } break; + + case c3__peek: { + u3_pier_peek(con_u->car_u.pir_u, u3nc(u3_nul, u3_nul), u3k(dat), + _conn_make_cran(can_u, u3k(rid)), _conn_peek_cb); + } break; + + case c3__peel: { + u3_weak out; + + if ( u3_none != (out = _conn_read_peel(con_u, u3k(dat))) ) { + _conn_send_noun(can_u, u3nc(u3k(rid), out)); + } + else { + _conn_async_peel(con_u, can_u, u3k(rid), u3k(dat)); + } + } break; + + case c3__ovum: { + if ( (c3n == u3r_trel(dat, &tar, &wir, &cad)) ) { + err_i = -6; err_c = "ovum-bad"; + goto _moor_poke_out; + } + u3_auto_peer( + u3_auto_plan(&con_u->car_u, + u3_ovum_init(0, u3k(tar), u3k(wir), u3k(cad))), + _conn_make_cran(can_u, u3k(rid)), _conn_ovum_news, _conn_ovum_bail); + } break; + + case c3__urth: { + switch (dat) { + default: { + err_i = -7; err_c = "urth-bad"; + goto _moor_poke_out; + } break; + case c3__meld: { + _conn_send_noun(can_u, u3nc(u3k(rid), c3y)); + u3_pier_meld(con_u->car_u.pir_u); + } break; + case c3__pack: { + _conn_send_noun(can_u, u3nc(u3k(rid), c3y)); + u3_pier_pack(con_u->car_u.pir_u); + } break; + } + } break; + } +_moor_poke_out: + u3z(rud); u3z(jar); + if ( 0 != err_i ) { + can_u->mor_u.bal_f(can_u, err_i, err_c); + } + + // regardless of failure, we never block newt + // + return c3y; +} + +/* _conn_sock_cb(): socket connection callback. +*/ +static void +_conn_sock_cb(uv_stream_t* sem_u, c3_i tas_i) +{ + u3_shan* san_u = (u3_shan*)sem_u; + u3_conn* con_u = san_u->con_u; + u3_chan* can_u; + c3_i err_i; + + can_u = c3_calloc(sizeof(u3_chan)); + can_u->mor_u.ptr_v = can_u; + can_u->mor_u.pok_f = _conn_moor_poke; + can_u->mor_u.bal_f = _conn_moor_bail; + can_u->coq_l = san_u->nex_l++; + can_u->san_u = san_u; + err_i = uv_timer_init(u3L, &can_u->mor_u.tim_u); + u3_assert(!err_i); + err_i = uv_pipe_init(u3L, &can_u->mor_u.pyp_u, 0); + u3_assert(!err_i); + err_i = uv_accept(sem_u, (uv_stream_t*)&can_u->mor_u.pyp_u); + u3_assert(!err_i); + u3_newt_read((u3_moat*)&can_u->mor_u); + can_u->mor_u.nex_u = (u3_moor*)san_u->can_u; + san_u->can_u = can_u; +} + +/* _conn_init_sock(): initialize socket device. +*/ +static void +_conn_init_sock(u3_shan* san_u) +{ +#ifdef _WIN32 + u3_pier* pir_u = san_u->con_u->car_u.pir_u; + u3_atom who = u3dc("scot", c3__p, u3i_chubs(2, pir_u->who_d)); + c3_c* who_c = u3r_string(who); + c3_c pip_c[256]; + c3_i ret_i; + + u3z(who); + ret_i = snprintf(pip_c, sizeof(pip_c), "\\\\.\\pipe\\urbit-conn-%s", who_c + 1); + u3_assert(19 + strlen(who_c) == ret_i); + c3_free(who_c); + ret_i = uv_pipe_init(u3L, &san_u->pyp_u, 0); + u3_assert(!ret_i); + ret_i = uv_pipe_bind(&san_u->pyp_u, pip_c); + u3_assert(!ret_i); + ret_i = uv_listen((uv_stream_t*)&san_u->pyp_u, 0, _conn_sock_cb); + u3_assert(!ret_i); + u3l_log("conn: listening on %s", pip_c); + +#else // _WIN32 + // the full socket path is limited to about 108 characters, + // and we want it to be relative to the pier. save our current + // path, chdir to the pier, open the socket at the desired + // path, then chdir back. hopefully there aren't any threads. + // + c3_c pax_c[2048]; + c3_i err_i; + + if ( NULL == getcwd(pax_c, sizeof(pax_c)) ) { + u3l_log("conn: getcwd: %s", uv_strerror(errno)); + u3_king_bail(); + } + if ( 0 != chdir(u3_Host.dir_c) ) { + u3l_log("conn: chdir: %s", uv_strerror(errno)); + u3_king_bail(); + } + if ( 0 != unlink(URB_SOCK_PATH) && errno != ENOENT ) { + u3l_log("conn: unlink: %s", uv_strerror(errno)); + goto _conn_sock_err_chdir; + } + if ( 0 != (err_i = uv_pipe_init(u3L, &san_u->pyp_u, 0)) ) { + u3l_log("conn: uv_pipe_init: %s", uv_strerror(err_i)); + goto _conn_sock_err_chdir; + } + if ( 0 != (err_i = uv_pipe_bind(&san_u->pyp_u, URB_SOCK_PATH)) ) { + u3l_log("conn: uv_pipe_bind: %s", uv_strerror(err_i)); + goto _conn_sock_err_chdir; + } + if ( 0 != (err_i = uv_listen((uv_stream_t*)&san_u->pyp_u, 0, + _conn_sock_cb)) ) { + u3l_log("conn: uv_listen: %s", uv_strerror(err_i)); + goto _conn_sock_err_unlink; + } + if ( 0 != chdir(pax_c) ) { + u3l_log("conn: chdir: %s", uv_strerror(errno)); + goto _conn_sock_err_close; + } + u3l_log("conn: listening on %s/%s", u3_Host.dir_c, URB_SOCK_PATH); + return; + +_conn_sock_err_close: + uv_close((uv_handle_t*)&san_u->pyp_u, _conn_close_cb); +_conn_sock_err_unlink: + if ( 0 != unlink(URB_SOCK_PATH) ) { + u3l_log("conn: unlink: %s", uv_strerror(errno)); + } +_conn_sock_err_chdir: + if ( 0 != chdir(pax_c) ) { + u3l_log("conn: chdir: %s", uv_strerror(errno)); + } + u3_king_bail(); +#endif // _WIN32 +} + +/* _conn_born_news(): initialization complete; %khan available. +*/ +static void +_conn_born_news(u3_ovum* egg_u, u3_ovum_news new_e) +{ + u3_conn* con_u = (u3_conn*)egg_u->car_u; + + if ( u3_ovum_done == new_e ) { + con_u->kan_o = c3y; + } +} + +/* _conn_born_bail(): nonessential failure; log it and keep going. +*/ +static void +_conn_born_bail(u3_ovum* egg_u, u3_noun lud) +{ + u3l_log("conn: %%born failure; %%fyrd not supported"); + u3z(lud); + u3_ovum_free(egg_u); +} + +/* _conn_io_talk(): open socket and notify %khan that we're live. +*/ +static void +_conn_io_talk(u3_auto* car_u) +{ + u3_conn* con_u = (u3_conn*)car_u; + u3_shan* san_u; + u3_noun wir = u3nt(c3__khan, + u3dc("scot", c3__uv, con_u->sev_l), + u3_nul); + u3_noun cad = u3nc(c3__born, u3_nul); + + u3_auto_peer( + u3_auto_plan(car_u, u3_ovum_init(0, c3__k, wir, cad)), + 0, + _conn_born_news, + _conn_born_bail); + + // initialize server, opening socket. + // + u3_assert(!con_u->san_u); + san_u = c3_calloc(sizeof(*san_u)); + san_u->nex_l = 1; + san_u->con_u = con_u; + con_u->san_u = san_u; + _conn_init_sock(san_u); + car_u->liv_o = c3y; +} + +/* _conn_ef_handle(): handle result. +*/ +static void +_conn_ef_handle(u3_conn* con_u, + c3_l sev_l, + c3_l coq_l, + u3_atom rid, + u3_noun tag, + u3_noun dat) +{ + u3_chan* can_u; + + if ( 0 != (can_u = _conn_find_chan(con_u, sev_l, coq_l)) ) { + if ( c3__avow == tag ) { + _conn_send_noun(can_u, u3nt(u3k(rid), c3__avow, u3k(dat))); + } + else { + can_u->mor_u.bal_f(can_u, -4, "handle-unknown"); + u3_king_bail(); + } + } + else { + u3l_log("conn: handle-no-coq %" PRIx32 " %" PRIu32, + sev_l, coq_l); + } + u3z(rid); u3z(tag); u3z(dat); +} + +/* _conn_io_kick(): apply effects. +*/ +static c3_o +_conn_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad) +{ + u3_conn* con_u = (u3_conn*)car_u; + u3_noun tag, dat; + c3_l sev_l, coq_l; + u3_atom rid; + + if ( c3n == _conn_read_wire(wir, c3__khan, &sev_l, &coq_l, &rid) ) { + u3z(cad); return c3n; + } + if ( (con_u->sev_l != sev_l) || + (c3n == u3r_cell(cad, &tag, &dat)) ) + { + u3z(rid); u3z(cad); return c3n; + } + + _conn_ef_handle(con_u, sev_l, coq_l, rid, u3k(tag), u3k(dat)); + u3z(cad); return c3y; +} + +/* _conn_io_exit(): unlink socket, shut down connections. +*/ +static void +_conn_io_exit(u3_auto* car_u) +{ + u3_conn* con_u = (u3_conn*)car_u; + c3_c* pax_c = u3_Host.dir_c; + c3_w len_w = strlen(pax_c) + 1 + sizeof(URB_SOCK_PATH); + c3_c* paf_c = c3_malloc(len_w); + c3_i wit_i; + + wit_i = snprintf(paf_c, len_w, "%s/%s", pax_c, URB_SOCK_PATH); + u3_assert(wit_i > 0); + u3_assert(len_w == (c3_w)wit_i + 1); + + if ( 0 != unlink(paf_c) ) { + if ( ENOENT != errno ) { + u3l_log("conn: failed to unlink socket: %s", uv_strerror(errno)); + } + } + else { + // u3l_log("conn: unlinked %s", paf_c); + } + c3_free(paf_c); + + { + u3_shan* san_u = con_u->san_u; + + if ( san_u ) { + while ( san_u->can_u ) { + _conn_close_chan(san_u, san_u->can_u); + } + uv_close((uv_handle_t*)&san_u->pyp_u, _conn_close_cb); + } + } + + u3s_cue_xeno_done(con_u->sil_u); + c3_free(con_u); +} + +/* u3_conn(): initialize control plane socket. +*/ +u3_auto* +u3_conn_io_init(u3_pier* pir_u) +{ + u3_conn* con_u; + u3_auto* car_u; + u3_noun now; + struct timeval tim_u; + + if ( c3n == u3_Host.ops_u.con ) { + return NULL; + } + con_u = c3_calloc(sizeof(*con_u)); + con_u->sil_u = u3s_cue_xeno_init(); + con_u->kan_o = c3n; + car_u = &con_u->car_u; + car_u->nam_m = c3__conn; + car_u->liv_o = c3n; + car_u->io.talk_f = _conn_io_talk; + car_u->io.kick_f = _conn_io_kick; + car_u->io.exit_f = _conn_io_exit; + + gettimeofday(&tim_u, 0); + now = u3_time_in_tv(&tim_u); + con_u->sev_l = u3r_mug(now); + u3z(now); + return car_u; +} diff --git a/vere/pkg/vere/io/cttp.c b/vere/pkg/vere/io/cttp.c new file mode 100644 index 0000000..fa6bb5b --- /dev/null +++ b/vere/pkg/vere/io/cttp.c @@ -0,0 +1,1170 @@ +/// @file + +#include "vere.h" + +#include "h2o.h" +#include "noun.h" +#include "openssl/ssl.h" + +/* u3_csat: client connection state. +*/ + typedef enum { + u3_csat_init = 0, // initialized + u3_csat_addr = 1, // address resolution begun + u3_csat_quit = 2, // cancellation requested + u3_csat_conn = 3, // sync connect phase + u3_csat_ripe = 4 // passed to libh2o + } u3_csat; + +/* u3_cres: response to http client. +*/ + typedef struct _u3_cres { + c3_w sas_w; // status code + u3_noun hed; // headers + u3_hbod* bod_u; // exit of body queue + u3_hbod* dob_u; // entry of body queue + } u3_cres; + +/* u3_creq: outgoing http request. +*/ + typedef struct _u3_creq { // client request + c3_l num_l; // request number + h2o_http1client_t* cli_u; // h2o client + u3_csat sat_e; // connection state + c3_o sec; // yes == https + c3_w ipf_w; // IP + c3_c* ipf_c; // IP (string) + c3_c* hot_c; // host + c3_s por_s; // port + c3_c* por_c; // port (string) + c3_c* met_c; // method + c3_c* url_c; // url + u3_hhed* hed_u; // headers + u3_hbod* bod_u; // body + u3_hbod* rub_u; // exit of send queue + u3_hbod* bur_u; // entry of send queue + h2o_iovec_t* vec_u; // send-buffer array + u3_cres* res_u; // nascent response + struct _u3_creq* nex_u; // next in list + struct _u3_creq* pre_u; // previous in list + struct _u3_cttp* ctp_u; // cttp backpointer + } u3_creq; + +/* u3_cttp: http client. +*/ + typedef struct _u3_cttp { + u3_auto car_u; // driver + c3_l sev_l; // instance number + u3_creq* ceq_u; // request list + uv_async_t nop_u; // unused handle (async close) + h2o_timeout_t tim_u; // request timeout + h2o_http1client_ctx_t // + ctx_u; // h2o client ctx + void* tls_u; // client SSL_CTX* + } u3_cttp; + +// XX deduplicate with _http_vec_to_atom +/* _cttp_vec_to_atom(): convert h2o_iovec_t to atom (cord) +*/ +static u3_noun +_cttp_vec_to_atom(h2o_iovec_t vec_u) +{ + return u3i_bytes(vec_u.len, (const c3_y*)vec_u.base); +} + +/* _cttp_bods_free(): free body structure. +*/ +static void +_cttp_bods_free(u3_hbod* bod_u) +{ + while ( bod_u ) { + u3_hbod* nex_u = bod_u->nex_u; + + c3_free(bod_u); + bod_u = nex_u; + } +} + +/* _cttp_bod_new(): create a data buffer +*/ +static u3_hbod* +_cttp_bod_new(c3_w len_w, c3_c* hun_c) +{ + u3_hbod* bod_u = c3_malloc(1 + len_w + sizeof(*bod_u)); + bod_u->hun_y[len_w] = 0; + bod_u->len_w = len_w; + memcpy(bod_u->hun_y, (const c3_y*)hun_c, len_w); + + bod_u->nex_u = 0; + return bod_u; +} + +/* _cttp_bod_from_hed(): create a data buffer from a header +*/ +static u3_hbod* +_cttp_bod_from_hed(u3_hhed* hed_u) +{ + c3_w len_w = hed_u->nam_w + 2 + hed_u->val_w + 2; + u3_hbod* bod_u = c3_malloc(1 + len_w + sizeof(*bod_u)); + bod_u->hun_y[len_w] = 0; + + memcpy(bod_u->hun_y, hed_u->nam_c, hed_u->nam_w); + memcpy(bod_u->hun_y + hed_u->nam_w, ": ", 2); + memcpy(bod_u->hun_y + hed_u->nam_w + 2, hed_u->val_c, hed_u->val_w); + memcpy(bod_u->hun_y + hed_u->nam_w + 2 + hed_u->val_w, "\r\n", 2); + + bod_u->len_w = len_w; + bod_u->nex_u = 0; + + return bod_u; +} + +/* _cttp_bods_to_octs: translate body buffer into octet-stream noun. +*/ +static u3_noun +_cttp_bods_to_octs(u3_hbod* bod_u) +{ + c3_w len_w; + c3_y* buf_y; + u3_noun cos; + + { + u3_hbod* bid_u = bod_u; + + len_w = 0; + while ( bid_u ) { + len_w += bid_u->len_w; + bid_u = bid_u->nex_u; + } + } + buf_y = c3_malloc(1 + len_w); + buf_y[len_w] = 0; + + { + c3_y* ptr_y = buf_y; + + while ( bod_u ) { + memcpy(ptr_y, bod_u->hun_y, bod_u->len_w); + ptr_y += bod_u->len_w; + bod_u = bod_u->nex_u; + } + } + cos = u3i_bytes(len_w, buf_y); + c3_free(buf_y); + return u3nc(len_w, cos); +} + +/* _cttp_bod_from_octs(): translate octet-stream noun into body. +*/ +static u3_hbod* +_cttp_bod_from_octs(u3_noun oct) +{ + c3_w len_w; + + if ( !_(u3a_is_cat(u3h(oct))) ) { // 2GB max + u3m_bail(c3__fail); return 0; + } + len_w = u3h(oct); + + { + u3_hbod* bod_u = c3_malloc(1 + len_w + sizeof(*bod_u)); + bod_u->hun_y[len_w] = 0; + bod_u->len_w = len_w; + u3r_bytes(0, len_w, bod_u->hun_y, u3t(oct)); + + bod_u->nex_u = 0; + + u3z(oct); + return bod_u; + } +} + +/* _cttp_bods_to_vec(): translate body buffers to array of h2o_iovec_t +*/ +static h2o_iovec_t* +_cttp_bods_to_vec(u3_hbod* bod_u, c3_w* tot_w) +{ + h2o_iovec_t* vec_u; + c3_w len_w; + + { + u3_hbod* bid_u = bod_u; + len_w = 0; + + while( bid_u ) { + len_w++; + bid_u = bid_u->nex_u; + } + } + + if ( 0 == len_w ) { + *tot_w = len_w; + return 0; + } + + vec_u = c3_malloc(sizeof(h2o_iovec_t) * len_w); + len_w = 0; + + while( bod_u ) { + vec_u[len_w] = h2o_iovec_init(bod_u->hun_y, bod_u->len_w); + len_w++; + bod_u = bod_u->nex_u; + } + + *tot_w = len_w; + + return vec_u; +} + +// XX deduplicate with _http_heds_free +/* _cttp_heds_free(): free header linked list +*/ +static void +_cttp_heds_free(u3_hhed* hed_u) +{ + while ( hed_u ) { + u3_hhed* nex_u = hed_u->nex_u; + + c3_free(hed_u->nam_c); + c3_free(hed_u->val_c); + c3_free(hed_u); + hed_u = nex_u; + } +} + +// XX deduplicate with _http_hed_new +/* _cttp_hed_new(): create u3_hhed from nam/val cords +*/ +static u3_hhed* +_cttp_hed_new(u3_atom nam, u3_atom val) +{ + c3_w nam_w = u3r_met(3, nam); + c3_w val_w = u3r_met(3, val); + u3_hhed* hed_u = c3_malloc(sizeof(*hed_u)); + + hed_u->nam_c = c3_malloc(1 + nam_w); + hed_u->val_c = c3_malloc(1 + val_w); + hed_u->nam_c[nam_w] = 0; + hed_u->val_c[val_w] = 0; + hed_u->nex_u = 0; + hed_u->nam_w = nam_w; + hed_u->val_w = val_w; + + u3r_bytes(0, nam_w, (c3_y*)hed_u->nam_c, nam); + u3r_bytes(0, val_w, (c3_y*)hed_u->val_c, val); + + return hed_u; +} + +// XX deduplicate with _http_heds_from_noun +/* _cttp_heds_from_noun(): convert (list (pair @t @t)) to u3_hhed +*/ +static u3_hhed* +_cttp_heds_from_noun(u3_noun hed) +{ + u3_noun deh = hed; + u3_noun i_hed; + + u3_hhed* hed_u = 0; + + while ( u3_nul != hed ) { + i_hed = u3h(hed); + u3_hhed* nex_u = _cttp_hed_new(u3h(i_hed), u3t(i_hed)); + nex_u->nex_u = hed_u; + + hed_u = nex_u; + hed = u3t(hed); + } + + u3z(deh); + return hed_u; +} + +// XX deduplicate with _http_heds_to_noun +/* _cttp_heds_to_noun(): convert h2o_header_t to (list (pair @t @t)) +*/ +static u3_noun +_cttp_heds_to_noun(h2o_header_t* hed_u, c3_d hed_d) +{ + u3_noun hed = u3_nul; + c3_d dex_d = hed_d; + + h2o_header_t deh_u; + + while ( 0 < dex_d ) { + deh_u = hed_u[--dex_d]; + hed = u3nc(u3nc(_cttp_vec_to_atom(*deh_u.name), + _cttp_vec_to_atom(deh_u.value)), hed); + } + + return hed; +} + +/* _cttp_cres_free(): free a u3_cres. +*/ +static void +_cttp_cres_free(u3_cres* res_u) +{ + _cttp_bods_free(res_u->bod_u); + c3_free(res_u); +} + +/* _cttp_cres_new(): create a response +*/ +static void +_cttp_cres_new(u3_creq* ceq_u, c3_w sas_w) +{ + ceq_u->res_u = c3_calloc(sizeof(*ceq_u->res_u)); + ceq_u->res_u->sas_w = sas_w; +} + +/* _cttp_cres_fire_body(): attach response body buffer +*/ +static void +_cttp_cres_fire_body(u3_cres* res_u, u3_hbod* bod_u) +{ + u3_assert(!bod_u->nex_u); + + if ( !(res_u->bod_u) ) { + res_u->bod_u = res_u->dob_u = bod_u; + } + else { + res_u->dob_u->nex_u = bod_u; + res_u->dob_u = bod_u; + } +} + +/* _cttp_mcut_pork(): measure/cut path/extension. +*/ +static c3_w +_cttp_mcut_pork(c3_c* buf_c, c3_w len_w, u3_noun pok) +{ + u3_noun h_pok = u3h(pok); + u3_noun t_pok = u3t(pok); + + len_w = u3_mcut_path(buf_c, len_w, '/', u3k(t_pok)); + if ( u3_nul != h_pok ) { + len_w = u3_mcut_char(buf_c, len_w, '.'); + len_w = u3_mcut_cord(buf_c, len_w, u3k(u3t(h_pok))); + } + u3z(pok); + return len_w; +} + +/* _cttp_mcut_quay(): measure/cut query. +*/ +static c3_w +_cttp_mcut_quay(c3_c* buf_c, c3_w len_w, u3_noun quy) +{ + u3_noun yuq = quy; + c3_o fir_o = c3y; + + while ( u3_nul != quy ) { + if ( c3y == fir_o ) { + len_w = u3_mcut_char(buf_c, len_w, '?'); + fir_o = c3n; + } + else { + len_w = u3_mcut_char(buf_c, len_w, '&'); + } + + { + u3_noun i_quy, t_quy; + u3_noun pi_quy, qi_quy; + u3x_cell(quy, &i_quy, &t_quy); + u3x_cell(i_quy, &pi_quy, &qi_quy); + + len_w = u3_mcut_cord(buf_c, len_w, u3k(pi_quy)); + len_w = u3_mcut_char(buf_c, len_w, '='); + len_w = u3_mcut_cord(buf_c, len_w, u3k(qi_quy)); + + quy = t_quy; + } + } + + u3z(yuq); + return len_w; +} + +/* _cttp_mcut_url(): measure/cut purl, producing relative URL. +*/ +static c3_w +_cttp_mcut_url(c3_c* buf_c, c3_w len_w, u3_noun pul) +{ + u3_noun q_pul = u3h(u3t(pul)); + u3_noun r_pul = u3t(u3t(pul)); + + len_w = u3_mcut_char(buf_c, len_w, '/'); + len_w = _cttp_mcut_pork(buf_c, len_w, u3k(q_pul)); + + if ( u3_nul != r_pul ) { + len_w = _cttp_mcut_quay(buf_c, len_w, u3k(r_pul)); + } + u3z(pul); + return len_w; +} + +/* _cttp_creq_port(): stringify port +*/ +static c3_c* +_cttp_creq_port(c3_s por_s) +{ + c3_c* por_c = c3_malloc(8); + snprintf(por_c, 7, "%d", 0xffff & por_s); + return por_c; +} + +/* _cttp_creq_url(): construct url from noun. +*/ +static c3_c* +_cttp_creq_url(u3_noun pul) +{ + c3_w len_w = _cttp_mcut_url(0, 0, u3k(pul)); + c3_c* url_c = c3_malloc(1 + len_w); + + _cttp_mcut_url(url_c, 0, pul); + url_c[len_w] = 0; + + return url_c; +} + +/* _cttp_creq_host(): construct host from noun. +*/ +static c3_c* +_cttp_creq_host(u3_noun hot) +{ + c3_w len_w = u3_mcut_host(0, 0, u3k(hot)); + c3_c* hot_c = c3_malloc(1 + len_w); + + u3_mcut_host(hot_c, 0, hot); + hot_c[len_w] = 0; + + return hot_c; +} + +/* _cttp_creq_ip(): stringify ip +*/ +static c3_c* +_cttp_creq_ip(c3_w ipf_w) +{ + c3_c* ipf_c = c3_malloc(17); + snprintf(ipf_c, 16, "%d.%d.%d.%d", (ipf_w >> 24), + ((ipf_w >> 16) & 255), + ((ipf_w >> 8) & 255), + (ipf_w & 255)); + return ipf_c; +} + +/* _cttp_creq_find(): find a request by number in the client +*/ +static u3_creq* +_cttp_creq_find(u3_cttp* ctp_u, c3_l num_l) +{ + u3_creq* ceq_u = ctp_u->ceq_u; + + // XX glories of linear search + // + while ( ceq_u ) { + if ( num_l == ceq_u->num_l ) { + return ceq_u; + } + ceq_u = ceq_u->nex_u; + } + return 0; +} + +/* _cttp_creq_link(): link request to client +*/ +static void +_cttp_creq_link(u3_cttp* ctp_u, u3_creq* ceq_u) +{ + ceq_u->nex_u = ctp_u->ceq_u; + + if ( 0 != ceq_u->nex_u ) { + ceq_u->nex_u->pre_u = ceq_u; + } + + ceq_u->ctp_u = ctp_u; + ctp_u->ceq_u = ceq_u; +} + +/* _cttp_creq_unlink(): unlink request from client +*/ +static void +_cttp_creq_unlink(u3_creq* ceq_u) +{ + u3_cttp* ctp_u = ceq_u->ctp_u; + + if ( ceq_u->pre_u ) { + ceq_u->pre_u->nex_u = ceq_u->nex_u; + + if ( 0 != ceq_u->nex_u ) { + ceq_u->nex_u->pre_u = ceq_u->pre_u; + } + } + else { + ctp_u->ceq_u = ceq_u->nex_u; + + if ( 0 != ceq_u->nex_u ) { + ceq_u->nex_u->pre_u = 0; + } + } +} + +/* _cttp_creq_free(): free a u3_creq. +*/ +static void +_cttp_creq_free(u3_creq* ceq_u) +{ + _cttp_creq_unlink(ceq_u); + + _cttp_heds_free(ceq_u->hed_u); + // Note: ceq_u->bod_u is covered here + _cttp_bods_free(ceq_u->rub_u); + + if ( ceq_u->res_u ) { + _cttp_cres_free(ceq_u->res_u); + } + + c3_free(ceq_u->hot_c); + c3_free(ceq_u->ipf_c); + c3_free(ceq_u->por_c); + c3_free(ceq_u->met_c); + c3_free(ceq_u->url_c); + c3_free(ceq_u->vec_u); + c3_free(ceq_u); +} + +/* _cttp_creq_new(): create a u3_creq from an +http-request + * + * If we were rewriting all of this from scratch, this isn't how we'd do it. + * + * We start with the (?? - JB) + */ +static u3_creq* +_cttp_creq_new(u3_cttp* ctp_u, c3_l num_l, u3_noun hes) +{ + u3_creq* ceq_u = c3_calloc(sizeof(*ceq_u)); + + u3_noun method, url, headers, body; + if (c3n == u3r_qual(hes, &method, &url, &headers, &body)) { + u3z(hes); + return 0; + } + + // parse the url out of the new style url passed to us. + // + u3_noun unit_pul = u3do("de-purl:html", u3k(url)); + + if ( c3n == u3du(unit_pul) ) { + c3_c* url_c = u3r_string(url); + u3l_log("cttp: unable to parse url:\n %s", url_c); + c3_free(url_c); + u3z(hes); + return 0; + } + + u3_noun pul = u3t(unit_pul); + + u3_noun hat = u3h(pul); // +hart + u3_noun sec = u3h(hat); + u3_noun por = u3h(u3t(hat)); + u3_noun hot = u3t(u3t(hat)); // +host + + ceq_u->sat_e = u3_csat_init; + ceq_u->num_l = num_l; + ceq_u->sec = sec; + + if ( c3y == u3h(hot) ) { + ceq_u->hot_c = _cttp_creq_host(u3k(u3t(hot))); + } else { + ceq_u->ipf_w = u3r_word(0, u3t(hot)); + ceq_u->ipf_c = _cttp_creq_ip(ceq_u->ipf_w); + } + + if ( u3_nul != por ) { + ceq_u->por_s = u3t(por); + ceq_u->por_c = _cttp_creq_port(ceq_u->por_s); + } + + // XX this should be checked against a whitelist + // + u3_assert( c3y == u3ud(method) ); + ceq_u->met_c = u3r_string(method); + ceq_u->url_c = _cttp_creq_url(u3k(pul)); + + ceq_u->hed_u = _cttp_heds_from_noun(u3k(headers)); + + if ( u3_nul != body ) { + ceq_u->bod_u = _cttp_bod_from_octs(u3k(u3t(body))); + } + + _cttp_creq_link(ctp_u, ceq_u); + + u3z(unit_pul); + u3z(hes); + + return ceq_u; +} + +/* _cttp_creq_fire_body(): attach body to request buffers. +*/ +static void +_cttp_creq_fire_body(u3_creq* ceq_u, u3_hbod *rub_u) +{ + u3_assert(!rub_u->nex_u); + + if ( !(ceq_u->rub_u) ) { + ceq_u->rub_u = ceq_u->bur_u = rub_u; + } + else { + ceq_u->bur_u->nex_u = rub_u; + ceq_u->bur_u = rub_u; + } +} + +/* _cttp_creq_fire_str(): attach string to request buffers. +*/ +static void +_cttp_creq_fire_str(u3_creq* ceq_u, c3_c* str_c) +{ + _cttp_creq_fire_body(ceq_u, _cttp_bod_new(strlen(str_c), str_c)); + c3_free(str_c); +} + +/* _cttp_creq_fire_heds(): attach output headers. +*/ +static void +_cttp_creq_fire_heds(u3_creq* ceq_u, u3_hhed* hed_u) +{ + while ( hed_u ) { + _cttp_creq_fire_body(ceq_u, _cttp_bod_from_hed(hed_u)); + hed_u = hed_u->nex_u; + } +} + +/* _cttp_creq_fire(): load request data for into buffers. +*/ +static void +_cttp_creq_fire(u3_creq* ceq_u) +{ + { + c3_w len_w = strlen(ceq_u->met_c) + 1 + strlen(ceq_u->url_c) + 12; + c3_c* lin_c = c3_malloc(len_w); + + len_w = snprintf(lin_c, len_w, "%s %s HTTP/1.1\r\n", + ceq_u->met_c, + ceq_u->url_c); + _cttp_creq_fire_str(ceq_u, lin_c); + } + + { + c3_c* hot_c = ceq_u->hot_c ? ceq_u->hot_c : ceq_u->ipf_c; + c3_c* hos_c; + c3_w len_w; + + if ( ceq_u->por_c ) { + len_w = 6 + strlen(hot_c) + 1 + strlen(ceq_u->por_c) + 3; + hos_c = c3_malloc(len_w); + len_w = snprintf(hos_c, len_w, "Host: %s:%s\r\n", hot_c, ceq_u->por_c); + } + else { + len_w = 6 + strlen(hot_c) + 3; + hos_c = c3_malloc(len_w); + len_w = snprintf(hos_c, len_w, "Host: %s\r\n", hot_c); + } + + _cttp_creq_fire_body(ceq_u, _cttp_bod_new(len_w, hos_c)); + c3_free(hos_c); + } + + _cttp_creq_fire_heds(ceq_u, ceq_u->hed_u); + + if ( !ceq_u->bod_u ) { + _cttp_creq_fire_body(ceq_u, _cttp_bod_new(2, "\r\n")); + } + else { + c3_c len_c[41]; + c3_w len_w = snprintf(len_c, 40, "Content-Length: %u\r\n\r\n", + ceq_u->bod_u->len_w); + + _cttp_creq_fire_body(ceq_u, _cttp_bod_new(len_w, len_c)); + _cttp_creq_fire_body(ceq_u, ceq_u->bod_u); + } +} + +/* _cttp_creq_quit(): cancel a u3_creq +*/ +static void +_cttp_creq_quit(u3_creq* ceq_u) +{ + if ( u3_csat_addr == ceq_u->sat_e ) { + ceq_u->sat_e = u3_csat_quit; + return; // wait to be called again on address resolution + } + + if ( ceq_u->cli_u ) { + h2o_http1client_cancel(ceq_u->cli_u); + } + + _cttp_creq_free(ceq_u); +} + +static void +_cttp_http_client_receive(u3_creq* ceq_u, c3_w sas_w, u3_noun mes, u3_noun uct) +{ + u3_cttp* ctp_u = ceq_u->ctp_u; + + // XX inject partial responses as separate events + // + u3_noun wir = u3nt(u3i_string("http-client"), + u3dc("scot", c3__uv, ctp_u->sev_l), + u3_nul); + u3_noun cad = u3nt(u3i_string("receive"), + ceq_u->num_l, + u3nq(u3i_string("start"), u3nc(sas_w, mes), uct, c3y)); + + u3_auto_plan(&ctp_u->car_u, u3_ovum_init(0, c3__i, wir, cad)); +} + +/* _cttp_creq_fail(): dispatch error response +*/ +static void +_cttp_creq_fail(u3_creq* ceq_u, const c3_c* err_c) +{ + // XX anything other than a 504? + c3_w cod_w = 504; + + u3l_log("http: fail (%d, %d): %s", ceq_u->num_l, cod_w, err_c); + + // XX include err_c as response body? + _cttp_http_client_receive(ceq_u, cod_w, u3_nul, u3_nul); + _cttp_creq_free(ceq_u); +} + +/* _cttp_creq_respond(): dispatch response +*/ +static void +_cttp_creq_respond(u3_creq* ceq_u) +{ + u3_cres* res_u = ceq_u->res_u; + + _cttp_http_client_receive(ceq_u, res_u->sas_w, res_u->hed, + ( !res_u->bod_u ) ? u3_nul : + u3nc(u3_nul, _cttp_bods_to_octs(res_u->bod_u))); + + _cttp_creq_free(ceq_u); +} + +// XX research: may be called with closed client? +/* _cttp_creq_on_body(): cb invoked by h2o upon receiving a response body +*/ +static c3_i +_cttp_creq_on_body(h2o_http1client_t* cli_u, const c3_c* err_c) +{ + u3_creq* ceq_u = (u3_creq *)cli_u->data; + + if ( 0 != err_c && h2o_http1client_error_is_eos != err_c ) { + _cttp_creq_fail(ceq_u, err_c); + return -1; + } + + h2o_buffer_t* buf_u = cli_u->sock->input; + + if ( buf_u->size ) { + _cttp_cres_fire_body(ceq_u->res_u, + _cttp_bod_new(buf_u->size, buf_u->bytes)); + h2o_buffer_consume(&cli_u->sock->input, buf_u->size); + } + + // We're using the end of stream thing here to queue event to urbit. we'll + // need to separate this into our own timer for partial progress sends. + if ( h2o_http1client_error_is_eos == err_c ) { + _cttp_creq_respond(ceq_u); + } + + return 0; +} + +/* _cttp_creq_on_head(): cb invoked by h2o upon receiving response headers +*/ +static h2o_http1client_body_cb +_cttp_creq_on_head(h2o_http1client_t* cli_u, const c3_c* err_c, c3_i ver_i, + c3_i sas_i, h2o_iovec_t sas_u, h2o_header_t* hed_u, + size_t hed_t, c3_i len_i) +{ + u3_creq* ceq_u = (u3_creq *)cli_u->data; + + if ( 0 != err_c && h2o_http1client_error_is_eos != err_c ) { + _cttp_creq_fail(ceq_u, err_c); + return 0; + } + + _cttp_cres_new(ceq_u, (c3_w)sas_i); + ceq_u->res_u->hed = _cttp_heds_to_noun(hed_u, hed_t); + + if ( h2o_http1client_error_is_eos == err_c ) { + _cttp_creq_respond(ceq_u); + return 0; + } + + return _cttp_creq_on_body; +} + +/* _cttp_creq_on_connect(): cb invoked by h2o upon successful connection +*/ +static h2o_http1client_head_cb +_cttp_creq_on_connect(h2o_http1client_t* cli_u, const c3_c* err_c, + h2o_iovec_t** vec_u, size_t* vec_i, c3_i* hed_i) +{ + u3_creq* ceq_u = (u3_creq *)cli_u->data; + + if ( 0 != err_c ) { + // if synchronously connecting, caller will cleanup + // + if ( u3_csat_conn == ceq_u->sat_e ) { + ceq_u->sat_e = u3_csat_quit; + } + else { + u3_assert( u3_csat_ripe == ceq_u->sat_e ); + _cttp_creq_fail(ceq_u, err_c); + } + return 0; + } + + // serialize request (populate rub_u) + // + _cttp_creq_fire(ceq_u); + + { + c3_w len_w; + ceq_u->vec_u = _cttp_bods_to_vec(ceq_u->rub_u, &len_w); + + *vec_i = len_w; + *vec_u = ceq_u->vec_u; + *hed_i = (0 == strcmp(ceq_u->met_c, "HEAD")); + } + + return _cttp_creq_on_head; +} + +/* _cttp_creq_connect(): establish connection +*/ +static void +_cttp_creq_connect(u3_creq* ceq_u) +{ + u3_assert( u3_csat_conn == ceq_u->sat_e ); + u3_assert( ceq_u->ipf_c ); + + // connect by ip/port, avoiding synchronous getaddrinfo() + // + { + h2o_iovec_t ipf_u = h2o_iovec_init(ceq_u->ipf_c, strlen(ceq_u->ipf_c)); + c3_t tls_t = ( c3y == ceq_u->sec ); + c3_s por_s = ( ceq_u->por_s ) + ? ceq_u->por_s + : ( tls_t ) ? 443 : 80; + + h2o_http1client_connect(&ceq_u->cli_u, ceq_u, &ceq_u->ctp_u->ctx_u, + ipf_u, por_s, tls_t, _cttp_creq_on_connect); + } + + // connect() failed, cb invoked synchronously + // + if ( u3_csat_conn != ceq_u->sat_e ) { + u3_assert( u3_csat_quit == ceq_u->sat_e ); + // only one such failure case + // + _cttp_creq_fail(ceq_u, "socket create error"); + } + else { + ceq_u->sat_e = u3_csat_ripe; + + // fixup hostname for TLS handshake + // + // must be synchronous, after successfull connect() call + // + if ( ceq_u->hot_c && (c3y == ceq_u->sec) ) { + u3_assert( ceq_u->cli_u ); + c3_free(ceq_u->cli_u->ssl.server_name); + ceq_u->cli_u->ssl.server_name = strdup(ceq_u->hot_c); + } + } +} + +/* _cttp_creq_resolve_cb(): cb upon IP address resolution +*/ +static void +_cttp_creq_resolve_cb(uv_getaddrinfo_t* adr_u, + c3_i sas_i, + struct addrinfo* aif_u) +{ + u3_creq* ceq_u = adr_u->data; + + if ( u3_csat_quit == ceq_u->sat_e ) { + _cttp_creq_quit(ceq_u);; + } + else if ( 0 != sas_i ) { + _cttp_creq_fail(ceq_u, uv_strerror(sas_i)); + } + else { + // XX traverse struct a la _ames_czar_cb + ceq_u->ipf_w = ntohl(((struct sockaddr_in *)aif_u->ai_addr)->sin_addr.s_addr); + ceq_u->ipf_c = _cttp_creq_ip(ceq_u->ipf_w); + + ceq_u->sat_e = u3_csat_conn; + _cttp_creq_connect(ceq_u); + } + + c3_free(adr_u); + uv_freeaddrinfo(aif_u); +} + +/* _cttp_creq_resolve(): resolve hostname to IP address +*/ +static void +_cttp_creq_resolve(u3_creq* ceq_u) +{ + u3_assert(u3_csat_addr == ceq_u->sat_e); + u3_assert(ceq_u->hot_c); + + uv_getaddrinfo_t* adr_u = c3_malloc(sizeof(*adr_u)); + adr_u->data = ceq_u; + + struct addrinfo hin_u; + memset(&hin_u, 0, sizeof(struct addrinfo)); + + hin_u.ai_family = PF_INET; + hin_u.ai_socktype = SOCK_STREAM; + hin_u.ai_protocol = IPPROTO_TCP; + + // XX is this necessary? + c3_c* por_c = ceq_u->por_c ? ceq_u->por_c : + ( c3y == ceq_u->sec ) ? "443" : "80"; + + c3_i sas_i; + + if ( 0 != (sas_i = uv_getaddrinfo(u3L, adr_u, _cttp_creq_resolve_cb, + ceq_u->hot_c, por_c, &hin_u)) ) { + _cttp_creq_fail(ceq_u, uv_strerror(sas_i)); + } +} + +/* _cttp_creq_start(): start a request +*/ +static void +_cttp_creq_start(u3_creq* ceq_u) +{ + if ( ceq_u->ipf_c ) { + ceq_u->sat_e = u3_csat_conn; + _cttp_creq_connect(ceq_u); + } else { + ceq_u->sat_e = u3_csat_addr; + _cttp_creq_resolve(ceq_u); + } +} + +/* _cttp_init_tls: initialize OpenSSL context +*/ +static SSL_CTX* +_cttp_init_tls(void) +{ + // XX require 1.1.0 and use TLS_client_method() + SSL_CTX* tls_u = SSL_CTX_new(SSLv23_client_method()); + // XX use SSL_CTX_set_max_proto_version() and SSL_CTX_set_min_proto_version() + SSL_CTX_set_options(tls_u, SSL_OP_NO_SSLv2 | + SSL_OP_NO_SSLv3 | + // SSL_OP_NO_TLSv1 | // XX test + SSL_OP_NO_COMPRESSION); + + u3K.ssl_x509_f(SSL_CTX_get_cert_store(tls_u)); + SSL_CTX_set_verify(tls_u, SSL_VERIFY_PEER, 0); + SSL_CTX_set_session_cache_mode(tls_u, SSL_SESS_CACHE_OFF); + SSL_CTX_set_cipher_list(tls_u, + "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:" + "ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:" + "RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS"); + + return tls_u; +} + +/* _cttp_ef_http_client(): send an %http-client (outgoing request) to cttp. +*/ +static c3_o +_cttp_ef_http_client(u3_cttp* ctp_u, u3_noun tag, u3_noun dat) +{ + u3_creq* ceq_u; + c3_o ret_o; + + if ( c3y == u3r_sing_c("request", tag) ) { + u3_noun num, req; + c3_l num_l; + + if ( (c3n == u3r_cell(dat, &num, &req)) + || (c3n == u3r_safe_word(num, &num_l)) ) + { + u3l_log("cttp: strange request"); + ret_o = c3n; + } + else if ( (ceq_u = _cttp_creq_new(ctp_u, num_l, u3k(req))) ) { + _cttp_creq_start(ceq_u); + ret_o = c3y; + } + else { + ret_o = c3n; + } + } + else if ( c3y == u3r_sing_c("cancel-request", tag) ) { + c3_l num_l; + + if ( c3n == u3r_safe_word(dat, &num_l) ) { + u3l_log("cttp: strange cancel-request"); + ret_o = c3n; + } + else if ( (ceq_u =_cttp_creq_find(ctp_u, num_l)) ) { + _cttp_creq_quit(ceq_u); + ret_o = c3y; + } + else { + // accepted whether or not request exists + // + ret_o = c3y; + } + } + else { + u3l_log("cttp: strange effect (unknown type)"); + ret_o = c3n; + } + + u3z(tag); u3z(dat); + return ret_o; +} + +/* _cttp_io_talk(): notify that we're live. +*/ +static void +_cttp_io_talk(u3_auto* car_u) +{ + u3_cttp* ctp_u = (u3_cttp*)car_u; + + // XX remove u3A->sen + // + u3_noun wir = u3nt(u3i_string("http-client"), + u3dc("scot", c3__uv, ctp_u->sev_l), + u3_nul); + u3_noun cad = u3nc(c3__born, u3_nul); + + u3_auto_plan(car_u, u3_ovum_init(0, c3__i, wir, cad)); +} + +/* _cttp_io_kick(): apply effects +*/ +static c3_o +_cttp_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad) +{ + u3_cttp* ctp_u = (u3_cttp*)car_u; + + u3_noun tag, dat, i_wir; + c3_o ret_o; + + if ( (c3n == u3r_cell(wir, &i_wir, 0)) + || (c3n == u3r_cell(cad, &tag, &dat)) + || (c3n == u3r_sing_c("http-client", i_wir)) ) + { + ret_o = c3n; + } + else { + ret_o = _cttp_ef_http_client(ctp_u, u3k(tag), u3k(dat)); + } + + u3z(wir); u3z(cad); + return ret_o; +} + +/* _cttp_io_exit_cb(): free cttp. +*/ +static void +_cttp_io_exit_cb(uv_handle_t* han_u) +{ + u3_cttp* ctp_u = han_u->data; + + SSL_CTX_free(ctp_u->tls_u); + c3_free(ctp_u); +} + +/* _cttp_io_exit(): shut down cttp. +*/ +static void +_cttp_io_exit(u3_auto* car_u) +{ + u3_cttp* ctp_u = (u3_cttp*)car_u; + + // close unused handle to free [ctp_u] after h2o is done + // + uv_close((uv_handle_t*)&ctp_u->nop_u, _cttp_io_exit_cb); + + // cancel requests + // + { + u3_creq* ceq_u = ctp_u->ceq_u; + + while ( ceq_u ) { + _cttp_creq_quit(ceq_u); + ceq_u = ceq_u->nex_u; + } + } + + h2o_timeout_dispose(u3L, &ctp_u->tim_u); +} + +/* u3_cttp_io_init(): initialize http client I/O. +*/ +u3_auto* +u3_cttp_io_init(u3_pier* pir_u) +{ + u3_cttp* ctp_u = c3_calloc(sizeof(*ctp_u)); + + // link to event loop + // + ctp_u->ctx_u.loop = u3L; + + // unused handle for async close + // + uv_async_init(u3L, &ctp_u->nop_u, 0); + ctp_u->nop_u.data = ctp_u; + + // link to initialized request timeout + // + h2o_timeout_init(u3L, &ctp_u->tim_u, 300 * 1000); + ctp_u->ctx_u.io_timeout = &ctp_u->tim_u; + + // link to initialized tls ctx + // + ctp_u->tls_u = _cttp_init_tls(); + ctp_u->ctx_u.ssl_ctx = ctp_u->tls_u; + + u3_auto* car_u = &ctp_u->car_u; + car_u->nam_m = c3__cttp; + + // XX set in done_cb for %born + // + car_u->liv_o = c3y; + car_u->io.talk_f = _cttp_io_talk; + car_u->io.kick_f = _cttp_io_kick; + car_u->io.exit_f = _cttp_io_exit; + // XX retry up to N? + // + // car_u->ev.bail_f = ...; + + { + u3_noun now; + struct timeval tim_u; + gettimeofday(&tim_u, 0); + + now = u3_time_in_tv(&tim_u); + ctp_u->sev_l = u3r_mug(now); + u3z(now); + } + + return car_u; +} diff --git a/vere/pkg/vere/io/fore.c b/vere/pkg/vere/io/fore.c new file mode 100644 index 0000000..951fee1 --- /dev/null +++ b/vere/pkg/vere/io/fore.c @@ -0,0 +1,168 @@ +/// @file + +#include "vere.h" + +#include "noun.h" + +/* _fore_inject_bail(): handle failure on arbitrary injection. +*/ +static void +_fore_inject_bail(u3_ovum* egg_u, u3_noun lud) +{ + u3_auto_bail_slog(egg_u, lud); + u3l_log("pier: injected event failed"); + + u3_ovum_free(egg_u); +} + +/* _fore_import_bail(): handle failure on arbitrary injection. +*/ +static void +_fore_import_bail(u3_ovum* egg_u, u3_noun lud) +{ + u3_auto_bail_slog(egg_u, lud); + u3l_log("pier: import failed"); + + u3_ovum_free(egg_u); +} + +/* _fore_inject(): inject an arbitrary ovum from a jammed file at [pax_c]. +*/ +static void +_fore_inject(u3_auto* car_u, c3_c* pax_c) +{ + // XX soft + // + u3_noun ovo = u3ke_cue(u3m_file(pax_c)); + u3_noun riw, cad, tar, wir; + + if ( c3n == u3r_cell(ovo, &riw, &cad) ) { + u3l_log("pier: invalid ovum in -I"); + } + else if ( (c3n == u3a_is_cell(cad)) + || (c3n == u3a_is_atom(u3h(cad))) ) + { + u3l_log("pier: invalid card in -I ovum"); + } + else if ( c3n == u3r_cell(riw, &tar, &wir) ) { + u3l_log("pier: invalid wire in -I ovum"); + } + else if ( (c3n == u3a_is_atom(tar)) + || (4 < u3r_met(3, tar)) ) + { + u3l_log("pier: invalid target in -I wire"); + } + else { + { + c3_c* tag_c = u3r_string(u3h(cad)); + u3_noun ser = u3do("spat", u3k(riw)); + c3_c* wir_c = u3r_string(ser); + + u3l_log("pier: injecting %%%s event on %s", tag_c, wir_c); + + c3_free(tag_c); + c3_free(wir_c); + u3z(ser); + } + + u3_auto_peer( + u3_auto_plan(car_u, u3_ovum_init(0, u3k(tar), u3k(wir), u3k(cad))), + 0, 0, _fore_inject_bail); + } + + u3z(ovo); +} + +/* _fore_import(): form an ovum from jammed archive at [pax_c] and inject it. +*/ +static void +_fore_import(u3_auto* car_u, c3_c* pax_c) +{ + u3_noun arc = u3ke_cue(u3m_file(pax_c)); + u3_noun imp = u3dt("cat", 3, u3i_string("#import_"), arc); + u3_noun siz = u3r_met(3, imp); + u3_noun dat = u3nt(u3_nul, siz, imp); + + u3_noun req = u3nt(c3n, + u3nc(u3i_string("ipv4"), u3i_word(0x7f000001)), + u3nq(u3i_string("POST"), u3i_string("/"), u3_nul, dat)); + u3_noun wir = u3nc(u3i_string("http-server"), u3_nul); + u3_noun cad = u3nc(u3i_string("request-local"), req); + u3_auto_peer( + u3_auto_plan(car_u, u3_ovum_init(0, c3__e, wir, cad)), + 0, 0, _fore_import_bail); +} + +/* _fore_io_talk(): +*/ +static void +_fore_io_talk(u3_auto* car_u) +{ + u3_noun wir, cad; + + // inject fresh entropy + // + { + c3_w eny_w[16]; + c3_rand(eny_w); + + wir = u3nc(c3__arvo, u3_nul); + cad = u3nc(c3__wack, u3i_words(16, eny_w)); + + u3_auto_plan(car_u, u3_ovum_init(0, u3_blip, wir, cad)); + } + + // set verbose as per -v + // + { + c3_o lac_o = ( c3y == u3_Host.ops_u.veb ) ? c3n : c3y; + wir = u3nc(c3__arvo, u3_nul); + cad = u3nt(c3__verb, u3_nul, lac_o); + u3_auto_plan(car_u, u3_ovum_init(0, u3_blip, wir, cad)); + } + + // inject arbitrary + // + if ( u3_Host.ops_u.jin_c ) { + _fore_inject(car_u, u3_Host.ops_u.jin_c); + } + + if ( u3_Host.ops_u.imp_c ) { + _fore_import(car_u, u3_Host.ops_u.imp_c); + } +} + +/* _fore_io_kick(): handle no effects. +*/ +static c3_o +_fore_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad) +{ + u3z(wir); u3z(cad); + return c3n; +} + +/* _fore_io_exit(): +*/ +static void +_fore_io_exit(u3_auto* car_u) +{ + c3_free(car_u); +} + +/* u3_fore_io_init(): initialize fore +*/ +u3_auto* +u3_fore_io_init(u3_pier* pir_u) +{ + u3_auto* car_u = c3_calloc(sizeof(*car_u)); + car_u->nam_m = c3__fore; + // XX set in done_cb for %wack + // + car_u->liv_o = c3y; + car_u->io.talk_f = _fore_io_talk; + car_u->io.kick_f = _fore_io_kick; + car_u->io.exit_f = _fore_io_exit; + // car_u->ev.bail_f = ...; + + return car_u; +} diff --git a/vere/pkg/vere/io/hind.c b/vere/pkg/vere/io/hind.c new file mode 100644 index 0000000..97cfba4 --- /dev/null +++ b/vere/pkg/vere/io/hind.c @@ -0,0 +1,86 @@ +/// @file + +#include "vere.h" + +#include "noun.h" + +/* _hind_io_talk(): +*/ +static void +_hind_io_talk(u3_auto* car_u) +{ +} + +/* _hind_io_kick(): handle generic effects, by tag +*/ +static c3_o +_hind_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad) +{ + u3_noun tag, dat; + c3_o ret_o; + + if ( c3n == u3r_cell(cad, &tag, &dat) ) { + ret_o = c3n; + } + else { + switch ( tag ) { + default: { + ret_o = c3n; + } break; + + case c3__exit: { + ret_o = c3y; + u3l_log("<<>>"); + u3_pier_exit(car_u->pir_u); + } break; + + // XX fake effect, check //arvo wire? + // + case c3__trim: { + ret_o = c3y; + u3_auto_plan(car_u, u3_ovum_init(0, u3_blip, + u3nc(c3__arvo, u3_nul), u3k(cad))); + } break; + + case c3__vega: { + ret_o = c3y; + u3l_log("<<>>"); + } break; + + // NB: startup explicitly handled in pier.c + // + // XX review arvo upgrade scenaria + // + case c3__wend: { + ret_o = c3y; + } break; + } + } + + u3z(wir); u3z(cad); + return ret_o; +} + +/* _hind_io_exit(): +*/ +static void +_hind_io_exit(u3_auto* car_u) +{ + c3_free(car_u); +} + +/* u3_hind_io_init(): +*/ +u3_auto* +u3_hind_io_init(u3_pier* pir_u) +{ + u3_auto* car_u = c3_calloc(sizeof(*car_u)); + car_u->nam_m = c3__hind; + car_u->liv_o = c3y; + car_u->io.talk_f = _hind_io_talk; + car_u->io.kick_f = _hind_io_kick; + car_u->io.exit_f = _hind_io_exit; + // car_u->ev.bail_f = ...; + + return car_u; +} diff --git a/vere/pkg/vere/io/http.c b/vere/pkg/vere/io/http.c new file mode 100644 index 0000000..6f40119 --- /dev/null +++ b/vere/pkg/vere/io/http.c @@ -0,0 +1,3149 @@ +/// @file + +#include "vere.h" + +#include "h2o.h" +#include "noun.h" +#include "openssl/err.h" +#include "openssl/ssl.h" +#include "version.h" + +/** Global variables. +**/ +typedef struct _u3_h2o_serv { + h2o_globalconf_t fig_u; // h2o global config + h2o_context_t ctx_u; // h2o ctx + h2o_accept_ctx_t cep_u; // h2o accept ctx + h2o_hostconf_t* hos_u; // h2o host config + h2o_handler_t* han_u; // h2o request handler +} u3_h2o_serv; + +/* u3_rsat: http request state. +*/ + typedef enum { + u3_rsat_init = 0, // initialized + u3_rsat_plan = 1, // planned + u3_rsat_peek = 2, // peek planned + u3_rsat_ripe = 3 // responded + } u3_rsat; + +/* u3_hreq: incoming http request. +*/ + typedef struct _u3_hreq { + h2o_req_t* rec_u; // h2o request + c3_w seq_l; // sequence within connection + u3_rsat sat_e; // request state + uv_timer_t* tim_u; // timeout + void* gen_u; // response generator + struct _u3_preq* peq_u; // scry-backed (rsat_peek only) + struct _u3_hcon* hon_u; // connection backlink + struct _u3_hreq* nex_u; // next in connection's list + struct _u3_hreq* pre_u; // prev in connection's list + } u3_hreq; + + /* u3_preq: scry-backed http request. + */ + typedef struct _u3_preq { + struct _u3_hreq* req_u; // originating request (nullable) + struct _u3_httd* htd_u; // device backpointer + u3_noun pax; // partial scry path + c3_o las_o; // was scry at now + } u3_preq; + +/* u3_hcon: incoming http connection. +*/ + typedef struct _u3_hcon { + uv_tcp_t wax_u; // client stream handler + h2o_conn_t* con_u; // h2o connection + h2o_socket_t* sok_u; // h2o connection socket + c3_w ipf_w; // client ipv4 + c3_w coq_l; // connection number + c3_w seq_l; // next request number + struct _u3_http* htp_u; // server backlink + struct _u3_hreq* req_u; // request list + struct _u3_hcon* nex_u; // next in server's list + struct _u3_hcon* pre_u; // prev in server's list + } u3_hcon; + +/* u3_http: http server. +*/ + typedef struct _u3_http { + uv_tcp_t wax_u; // server stream handler + void* h2o_u; // libh2o configuration + c3_w sev_l; // server number + c3_w coq_l; // next connection number + c3_s por_s; // running port + c3_o dis; // manually-configured port + c3_o sec; // logically secure + c3_o lop; // loopback-only + c3_o liv; // c3n == shutdown + struct _u3_hcon* hon_u; // connection list + struct _u3_http* nex_u; // next in list + struct _u3_httd* htd_u; // device backpointer + } u3_http; + +/* u3_form: http config from %eyre +*/ + typedef struct _u3_form { + c3_o pro; // proxy + c3_o log; // keep access log + c3_o red; // redirect to HTTPS + uv_buf_t key_u; // PEM RSA private key + uv_buf_t cer_u; // PEM certificate chain + } u3_form; + +/* u3_hfig: general http configuration +*/ + typedef struct _u3_hfig { + u3_form* for_u; // config from %eyre + c3_c* key_c; // auth token key + u3_noun ses; // valid session tokens + struct _u3_hreq* seq_u; // open slog requests + struct _u3_hreq* siq_u; // open spin requests + uv_timer_t* sit_u; // stream heartbeat + uv_timer_t* sin_u; // spinner stream timer + } u3_hfig; + +/* u3_httd: general http device +*/ +typedef struct _u3_httd { + u3_auto car_u; // driver + c3_l sev_l; // instance number + u3_hfig fig_u; // http configuration + u3_http* htp_u; // http servers + SSL_CTX* tls_u; // server SSL_CTX* + u3p(u3h_root) sax_p; // url->scry cache + u3p(u3h_root) nax_p; // scry->noun cache + u3t_spin* stk_u; // spin stack +} u3_httd; + +static u3_weak _http_rec_to_httq(h2o_req_t* rec_u); +static u3_hreq* _http_req_prepare(h2o_req_t* rec_u, u3_hreq* (*new_f)(u3_hcon*, h2o_req_t*)); +static void _http_serv_free(u3_http* htp_u); +static void _http_serv_start_all(u3_httd* htd_u); +static void _http_form_free(u3_httd* htd_u); +static void _http_start_respond(u3_hreq* req_u, + u3_noun status, + u3_noun headers, + u3_noun data, + u3_noun complete); +static void _http_spin_timer_cb(uv_timer_t* tim_u); + +static const c3_i TCP_BACKLOG = 16; +static const c3_w HEARTBEAT_TIMEOUT = 20 * 1000; +static const c3_w SPIN_TIMER = 100; // XX make this a command line arguement + +/* _http_close_cb(): uv_close_cb that just free's handle +*/ +static void +_http_close_cb(uv_handle_t* han_u) +{ + c3_free(han_u); +} + +/* _http_vec_to_meth(): convert h2o_iovec_t to meth +*/ +static u3_weak +_http_vec_to_meth(h2o_iovec_t vec_u) +{ + return ( 0 == strncmp(vec_u.base, "GET", vec_u.len) ) ? u3i_string("GET") : + ( 0 == strncmp(vec_u.base, "PUT", vec_u.len) ) ? u3i_string("PUT") : + ( 0 == strncmp(vec_u.base, "POST", vec_u.len) ) ? u3i_string("POST") : + ( 0 == strncmp(vec_u.base, "HEAD", vec_u.len) ) ? u3i_string("HEAD") : + ( 0 == strncmp(vec_u.base, "CONNECT", vec_u.len) ) ? u3i_string("CONNECT") : + ( 0 == strncmp(vec_u.base, "DELETE", vec_u.len) ) ? u3i_string("DELETE") : + ( 0 == strncmp(vec_u.base, "OPTIONS", vec_u.len) ) ? u3i_string("OPTIONS") : + ( 0 == strncmp(vec_u.base, "TRACE", vec_u.len) ) ? u3i_string("TRACE") : + // TODO ?? + // ( 0 == strncmp(vec_u.base, "PATCH", vec_u.len) ) ? c3__patc : + u3_none; +} + +/* _http_vec_to_atom(): convert h2o_iovec_t to atom (cord) +*/ +static u3_noun +_http_vec_to_atom(h2o_iovec_t vec_u) +{ + return u3i_bytes(vec_u.len, (const c3_y*)vec_u.base); +} + +/* _http_vec_to_octs(): convert h2o_iovec_t to (unit octs) +*/ +static u3_noun +_http_vec_to_octs(h2o_iovec_t vec_u) +{ + if ( 0 == vec_u.len ) { + return u3_nul; + } + + // XX correct size_t -> atom? + return u3nt(u3_nul, u3i_chubs(1, (const c3_d*)&vec_u.len), + _http_vec_to_atom(vec_u)); +} + +/* _cttp_bods_free(): free body structure. +*/ +static void +_cttp_bods_free(u3_hbod* bod_u) +{ + while ( bod_u ) { + u3_hbod* nex_u = bod_u->nex_u; + + c3_free(bod_u); + bod_u = nex_u; + } +} + +/* _cttp_bod_from_octs(): translate octet-stream noun into body. +*/ +static u3_hbod* +_cttp_bod_from_octs(u3_noun oct) +{ + c3_w len_w; + + if ( !_(u3a_is_cat(u3h(oct))) ) { // 2GB max + u3m_bail(c3__fail); return 0; + } + len_w = u3h(oct); + + { + u3_hbod* bod_u = c3_malloc(1 + len_w + sizeof(*bod_u)); + bod_u->hun_y[len_w] = 0; + bod_u->len_w = len_w; + u3r_bytes(0, len_w, bod_u->hun_y, u3t(oct)); + + bod_u->nex_u = 0; + + u3z(oct); + return bod_u; + } +} + +/* _cttp_bods_to_vec(): translate body buffers to array of h2o_iovec_t +*/ +static h2o_iovec_t* +_cttp_bods_to_vec(u3_hbod* bod_u, c3_w* tot_w) +{ + h2o_iovec_t* vec_u; + c3_w len_w; + + { + u3_hbod* bid_u = bod_u; + len_w = 0; + + while( bid_u ) { + len_w++; + bid_u = bid_u->nex_u; + } + } + + vec_u = c3_malloc(sizeof(h2o_iovec_t) * len_w); + len_w = 0; + + while( bod_u ) { + vec_u[len_w] = h2o_iovec_init(bod_u->hun_y, bod_u->len_w); + len_w++; + bod_u = bod_u->nex_u; + } + + *tot_w = len_w; + + return vec_u; +} + +/* _http_heds_to_noun(): convert h2o_header_t to (list (pair @t @t)) +*/ +static u3_noun +_http_heds_to_noun(h2o_header_t* hed_u, c3_d hed_d) +{ + u3_noun hed = u3_nul; + c3_d dex_d = hed_d; + + h2o_header_t deh_u; + + while ( 0 < dex_d ) { + deh_u = hed_u[--dex_d]; + hed = u3nc(u3nc(_http_vec_to_atom(*deh_u.name), + _http_vec_to_atom(deh_u.value)), hed); + } + + return hed; +} + +/* _http_heds_free(): free header linked list +*/ +static void +_http_heds_free(u3_hhed* hed_u) +{ + while ( hed_u ) { + u3_hhed* nex_u = hed_u->nex_u; + + c3_free(hed_u->nam_c); + c3_free(hed_u->val_c); + c3_free(hed_u); + hed_u = nex_u; + } +} + +/* _http_hed_new(): create u3_hhed from nam/val cords +*/ +static u3_hhed* +_http_hed_new(u3_atom nam, u3_atom val) +{ + c3_w nam_w = u3r_met(3, nam); + c3_w val_w = u3r_met(3, val); + u3_hhed* hed_u = c3_malloc(sizeof(*hed_u)); + + hed_u->nam_c = c3_malloc(1 + nam_w); + hed_u->val_c = c3_malloc(1 + val_w); + hed_u->nam_c[nam_w] = 0; + hed_u->val_c[val_w] = 0; + hed_u->nex_u = 0; + hed_u->nam_w = nam_w; + hed_u->val_w = val_w; + + u3r_bytes(0, nam_w, (c3_y*)hed_u->nam_c, nam); + u3r_bytes(0, val_w, (c3_y*)hed_u->val_c, val); + + return hed_u; +} + +/* _http_heds_from_noun(): convert (list (pair @t @t)) to u3_hhed +*/ +static u3_hhed* +_http_heds_from_noun(u3_noun hed) +{ + u3_noun deh = hed; + u3_noun i_hed; + + u3_hhed* hed_u = 0; + + while ( u3_nul != hed ) { + i_hed = u3h(hed); + u3_hhed* nex_u = _http_hed_new(u3h(i_hed), u3t(i_hed)); + nex_u->nex_u = hed_u; + + hed_u = nex_u; + hed = u3t(hed); + } + + u3z(deh); + return hed_u; +} + +/* _http_req_is_auth(): returns c3y if rec_u contains a valid auth cookie +*/ +static c3_o +_http_req_is_auth(u3_hfig* fig_u, h2o_req_t* rec_u) +{ + // try to find a cookie header + // + h2o_iovec_t coo_u = {0, 0}; + { + //TODO http2 allows the client to put multiple 'cookie' headers, + // runtime should support that once eyre does too. + ssize_t hin_i = h2o_find_header_by_str(&rec_u->headers, "cookie", 6, -1); + if ( hin_i != -1 ) { + coo_u = rec_u->headers.entries[hin_i].value; + } + } + + // if there is no cookie header, it can't possibly be authenticated + // + if ( NULL == coo_u.base ) { + return c3n; + } + // if there is a cookie, see if it contains a valid auth token + // + else { + c3_c* key_c = fig_u->key_c; + c3_c val_c[128]; + c3_y val_y = 0; + size_t i_i = 0; + size_t j_i = 0; + + // step through the cookie string + // + while (i_i < coo_u.len) { + // if we found our key, read the value + // + if (key_c[j_i] == '\0' && coo_u.base[i_i] == '=') { + i_i++; + while ( i_i < coo_u.len + && coo_u.base[i_i] != ';' + && val_y < sizeof(val_c) ) { + val_c[val_y] = coo_u.base[i_i]; + val_y++; + i_i++; + } + break; + } + // keep reading the key as long as it matches + // + else if (coo_u.base[i_i] == key_c[j_i]) { + j_i++; + } + else { + j_i = 0; + } + i_i++; + } + + u3_noun aut = u3kdi_has(u3k(fig_u->ses), u3i_bytes(val_y, (c3_y*)val_c)); + u3_assert(c3y == aut || c3n == aut); + + return aut; + } +} + +/* _http_req_find(): find http request in connection by sequence. +*/ +static u3_hreq* +_http_req_find(u3_hcon* hon_u, c3_w seq_l) +{ + u3_hreq* req_u = hon_u->req_u; + + // XX glories of linear search + // + while ( req_u ) { + if ( seq_l == req_u->seq_l ) { + return req_u; + } + req_u = req_u->nex_u; + } + return 0; +} + +/* _http_req_link(): link http request to connection +*/ +static void +_http_req_link(u3_hcon* hon_u, u3_hreq* req_u) +{ + req_u->hon_u = hon_u; + req_u->seq_l = hon_u->seq_l++; + req_u->nex_u = hon_u->req_u; + + if ( 0 != req_u->nex_u ) { + req_u->nex_u->pre_u = req_u; + } + hon_u->req_u = req_u; +} + +/* _http_req_unlink(): remove http request from connection +*/ +static void +_http_req_unlink(u3_hreq* req_u) +{ + if ( 0 != req_u->pre_u ) { + req_u->pre_u->nex_u = req_u->nex_u; + + if ( 0 != req_u->nex_u ) { + req_u->nex_u->pre_u = req_u->pre_u; + } + } + else { + req_u->hon_u->req_u = req_u->nex_u; + + if ( 0 != req_u->nex_u ) { + req_u->nex_u->pre_u = 0; + } + } +} + +/* _http_spin_link(): store spin stack request in state +*/ +static void +_http_spin_link(u3_hcon* hon_u, u3_hreq* req_u) +{ + u3_hfig* fig_u = &hon_u->htp_u->htd_u->fig_u; + req_u->hon_u = hon_u; + req_u->seq_l = hon_u->seq_l++; + req_u->nex_u = fig_u->siq_u; + + if ( 0 != req_u->nex_u ) { + req_u->nex_u->pre_u = req_u; + } else { + uv_timer_start(fig_u->sin_u, _http_spin_timer_cb, SPIN_TIMER, 0); + } + fig_u->siq_u = req_u; +} + +/* _http_seq_link(): store slog stream request in state +*/ +static void +_http_seq_link(u3_hcon* hon_u, u3_hreq* req_u) +{ + u3_hfig* fig_u = &hon_u->htp_u->htd_u->fig_u; + req_u->hon_u = hon_u; + req_u->seq_l = hon_u->seq_l++; + req_u->nex_u = fig_u->seq_u; + + if ( 0 != req_u->nex_u ) { + req_u->nex_u->pre_u = req_u; + } + fig_u->seq_u = req_u; +} + +/* _http_spin_unlink(): remove spin stack request from state +*/ +static void +_http_spin_unlink(u3_hreq* req_u) +{ + u3_hfig* fig_u = &req_u->hon_u->htp_u->htd_u->fig_u; + if ( 0 != req_u->pre_u ) { + req_u->pre_u->nex_u = req_u->nex_u; + + if ( 0 != req_u->nex_u ) { + req_u->nex_u->pre_u = req_u->pre_u; + } + } + else { + fig_u->siq_u = req_u->nex_u; + + if ( 0 != req_u->nex_u ) { + req_u->nex_u->pre_u = 0; + } + else if (req_u->tim_u != NULL) { + uv_timer_stop(req_u->tim_u); + } + } +} + +/* _http_seq_unlink(): remove slog stream request from state +*/ +static void +_http_seq_unlink(u3_hreq* req_u) +{ + u3_hfig* fig_u = &req_u->hon_u->htp_u->htd_u->fig_u; + if ( 0 != req_u->pre_u ) { + req_u->pre_u->nex_u = req_u->nex_u; + + if ( 0 != req_u->nex_u ) { + req_u->nex_u->pre_u = req_u->pre_u; + } + } + else { + fig_u->seq_u = req_u->nex_u; + + if ( 0 != req_u->nex_u ) { + req_u->nex_u->pre_u = 0; + } + } +} + +/* _http_req_to_duct(): translate srv/con/req to duct +*/ +static u3_noun +_http_req_to_duct(u3_hreq* req_u) +{ + return u3nc(u3i_string("http-server"), + u3nq(u3dc("scot", c3__uv, req_u->hon_u->htp_u->sev_l), + u3dc("scot", c3__ud, req_u->hon_u->coq_l), + u3dc("scot", c3__ud, req_u->seq_l), + u3_nul)); +} + +/* _http_req_kill(): kill http request in %eyre. +*/ +static void +_http_req_kill(u3_hreq* req_u) +{ + u3_httd* htd_u = req_u->hon_u->htp_u->htd_u; + u3_noun wir = _http_req_to_duct(req_u); + u3_noun cad = u3nc(u3i_string("cancel-request"), u3_nul); + + u3_auto_plan(&htd_u->car_u, u3_ovum_init(0, c3__e, wir, cad)); +} + +typedef struct _u3_hgen { + h2o_generator_t neg_u; // response callbacks + c3_o red; // ready to send + enum { // + u3_hgen_wait = 0, // more expected + u3_hgen_done = 1, // complete + u3_hgen_fail = 2 // failed + } sat_e; + u3_hbod* bod_u; // pending body + u3_hbod* nud_u; // pending free + u3_hhed* hed_u; // pending free + u3_hreq* req_u; // originating request +} u3_hgen; + +/* _http_req_close(): clean up & deallocate request +*/ +static void +_http_req_close(u3_hreq* req_u) +{ + // client canceled request before response + // + if ( u3_rsat_plan == req_u->sat_e ) { + _http_req_kill(req_u); + } + + if ( 0 != req_u->tim_u ) { + uv_close((uv_handle_t*)req_u->tim_u, _http_close_cb); + req_u->tim_u = 0; + } +} + +/* _http_req_done(): request finished, deallocation callback +*/ +static void +_http_req_done(void* ptr_v) +{ + u3_hreq* req_u = (u3_hreq*)ptr_v; + _http_req_close(req_u); + _http_req_unlink(req_u); +} + +/* _http_spin_done(): spin stackrequest finished, deallocation callback +*/ +static void +_http_spin_done(void* ptr_v) +{ + u3_hreq* siq_u = (u3_hreq*)ptr_v; + _http_req_close(siq_u); + _http_spin_unlink(siq_u); +} + +/* _http_seq_done(): slog stream request finished, deallocation callback +*/ +static void +_http_seq_done(void* ptr_v) +{ + u3_hreq* seq_u = (u3_hreq*)ptr_v; + _http_req_close(seq_u); + _http_seq_unlink(seq_u); +} + +static void +_http_hgen_send(u3_hgen* gen_u); + +/* _http_req_timer_cb(): request timeout callback +*/ +static void +_http_req_timer_cb(uv_timer_t* tim_u) +{ + u3_hreq* req_u = tim_u->data; + + switch ( req_u->sat_e ) { + case u3_rsat_init: u3_assert(0); + + case u3_rsat_plan: { + _http_req_kill(req_u); + req_u->sat_e = u3_rsat_ripe; + + c3_c* msg_c = "gateway timeout"; + h2o_send_error_generic(req_u->rec_u, 504, msg_c, msg_c, 0); + } break; + + case u3_rsat_peek: { + req_u->peq_u->req_u = 0; + c3_c* msg_c = "gateway timeout"; + h2o_send_error_generic(req_u->rec_u, 504, msg_c, msg_c, 0); + } break; + + case u3_rsat_ripe: { + u3_hgen* gen_u = req_u->gen_u; + + // inform %eyre if response was incomplete + // + if ( u3_hgen_wait == gen_u->sat_e ) { + _http_req_kill(req_u); + } + + gen_u->sat_e = u3_hgen_fail; + + if ( c3y == gen_u->red ) { + _http_hgen_send(gen_u); + } + } break; + } +} + +/* _http_req_new(): receive standard http request. +*/ +static u3_hreq* +_http_req_new(u3_hcon* hon_u, h2o_req_t* rec_u) +{ + u3_hreq* req_u = h2o_mem_alloc_shared(&rec_u->pool, sizeof(*req_u), + _http_req_done); + memset(req_u, 0, sizeof(*req_u)); + req_u->rec_u = rec_u; + req_u->sat_e = u3_rsat_init; + + _http_req_link(hon_u, req_u); + + return req_u; +} + +/* _http_spin_new(): receive spin stack http request. +*/ +static u3_hreq* +_http_spin_new(u3_hcon* hon_u, h2o_req_t* rec_u) +{ + // XX change to be for spin + u3_hreq* req_u = h2o_mem_alloc_shared(&rec_u->pool, sizeof(*req_u), + _http_spin_done); + memset(req_u, 0, sizeof(*req_u)); + req_u->rec_u = rec_u; + req_u->sat_e = u3_rsat_plan; + + _http_spin_link(hon_u, req_u); + + return req_u; +} + +/* _http_seq_new(): receive slog stream http request. +*/ +static u3_hreq* +_http_seq_new(u3_hcon* hon_u, h2o_req_t* rec_u) +{ + u3_hreq* req_u = h2o_mem_alloc_shared(&rec_u->pool, sizeof(*req_u), + _http_seq_done); + memset(req_u, 0, sizeof(*req_u)); + req_u->rec_u = rec_u; + req_u->sat_e = u3_rsat_plan; + + _http_seq_link(hon_u, req_u); + + return req_u; +} + +static void +_http_cache_respond(u3_hreq* req_u, u3_noun nun); + +static void +_http_scry_respond(u3_hreq* req_u, u3_noun nun); + +typedef struct _byte_range { + c3_z beg_z; + c3_z end_z; +} byte_range; + +/* _chunk_align(): align range to a nearby chunk +*/ +static void +_chunk_align(byte_range* rng_u) +{ + c3_z siz_z = 4194304; // 4MiB + + if ( SIZE_MAX != rng_u->beg_z ) { + if ( rng_u->beg_z > rng_u->end_z ) { + rng_u->beg_z = SIZE_MAX; + rng_u->end_z = SIZE_MAX; + } + else { + // XX an out-of-bounds request could be aligned to in-bounds + // resulting in a 200 or 206 response instead of 416. + // browsers should have the total length from content-range, + // and send reasonable range requests. + // + rng_u->beg_z = (rng_u->beg_z / siz_z) * siz_z; + rng_u->end_z = (rng_u->beg_z + siz_z) - 1; + } + } + else if ( SIZE_MAX != rng_u->end_z ) { + // round up to multiple of siz_z + rng_u->end_z = siz_z * ((rng_u->end_z / siz_z) + 1); + } +} + +/* _parse_range(): get a range from '-' delimited text +*/ +static byte_range +_parse_range(c3_c* txt_c, c3_w len_w) +{ + c3_c* hep_c = memchr(txt_c, '-', len_w); + byte_range rng_u; + rng_u.beg_z = SIZE_MAX; + rng_u.end_z = SIZE_MAX; + + if ( hep_c ) { + rng_u.beg_z = h2o_strtosize(txt_c, hep_c - txt_c); + rng_u.end_z = h2o_strtosize(hep_c + 1, len_w - ((hep_c + 1) - txt_c)); + // strange -> [SIZE_MAX SIZE_MAX] + if ( ((SIZE_MAX == rng_u.beg_z) && (hep_c != txt_c)) + || ((SIZE_MAX == rng_u.end_z) && (len_w - ((hep_c + 1) - txt_c) > 0)) + || ((SIZE_MAX != rng_u.beg_z) && (rng_u.beg_z > rng_u.end_z)) ) + { + rng_u.beg_z = SIZE_MAX; + rng_u.end_z = SIZE_MAX; + } + } + return rng_u; +} + +/* _get_range(): get a _byte_range from headers +*/ +static c3_o +_get_range(h2o_headers_t req_headers, byte_range* rng_u) +{ + rng_u->beg_z = SIZE_MAX; + rng_u->end_z = SIZE_MAX; + + c3_w inx_w = h2o_find_header(&req_headers, H2O_TOKEN_RANGE, -1); + if ( UINT32_MAX == inx_w) { + return c3n; + } + + if ( (req_headers.entries[inx_w].value.len >= 6) + && (0 == memcmp("bytes=", req_headers.entries[inx_w].value.base, 6)) ) + { + byte_range tmp_u = _parse_range(req_headers.entries[inx_w].value.base + 6, + req_headers.entries[inx_w].value.len - 6); + rng_u->beg_z = tmp_u.beg_z; + rng_u->end_z = tmp_u.end_z; + } + + return c3y; +} + +/* _http_scry_cb(): respond and maybe cache scry result +*/ +static void +_http_scry_cb(void* vod_p, u3_noun nun) +{ + u3_preq* peq_u = vod_p; + u3_httd* htd_u = peq_u->htd_u; + u3_hreq* req_u = peq_u->req_u; + u3_hfig* fig_u = &req_u->hon_u->htp_u->htd_u->fig_u; + c3_o auth = _http_req_is_auth(fig_u, req_u->rec_u); + + if ( req_u ) { + u3_assert(u3_rsat_peek == req_u->sat_e); + req_u->peq_u = 0; + _http_scry_respond(req_u, u3k(nun)); + } + + // cache only if peek was not at now, and nun isn't u3_nul + if ( (c3n == peq_u->las_o) + && (u3_nul != nun) ) + { + u3_noun key = u3nc(auth, u3k(peq_u->pax)); + u3h_put(htd_u->nax_p, key, nun); + u3z(key); + } + else { + u3z(nun); + } + + u3z(peq_u->pax); + c3_free(peq_u); +} + +/* _beam: ship desk case spur +*/ +typedef struct _beam { + u3_weak who; + u3_weak des; + u3_weak cas; + u3_weak pur; +} beam; + +/* _free_beam(): free a beam +*/ +static void +_free_beam(beam* bem) +{ + u3z(bem->who); + u3z(bem->des); + u3z(bem->cas); + u3z(bem->pur); +} + +/* _get_beam(): get a _beam from url +*/ +static beam +_get_beam(u3_hreq* req_u, c3_c* txt_c, c3_w len_w) +{ + beam bem; + + // get beak + // + for ( c3_w i_w = 0; i_w < 3; ++i_w ) { + u3_noun* wer; + if ( 0 == i_w ) { + wer = &bem.who; + } + else if ( 1 == i_w ) { + wer = &bem.des; + } + else { + wer = &bem.cas; + } + + // find '//' + if ( (len_w >= 2) + && ('/' == txt_c[0]) + && ('/' == txt_c[1]) ) + { + *wer = u3_nul; + txt_c++; + len_w--; + } + // skip '/' + else if ( (len_w > 0) && ('/' == txt_c[0]) ) { + txt_c++; + len_w--; + } + + // '=' + if ( (len_w > 0) && ('=' == txt_c[0]) ) { + if ( 0 == i_w ) { + u3_http* htp_u = req_u->hon_u->htp_u; + u3_httd* htd_u = htp_u->htd_u; + *wer = u3dc("scot", 'p', u3i_chubs(2, htd_u->car_u.pir_u->who_d)); + } + else if ( 1 == i_w ) { + *wer = c3__base; + } + else { + req_u->peq_u->las_o = c3y; + } + txt_c++; + len_w--; + } + // slice cord + else { + c3_c* nex_c; + c3_c* tis_c = memchr(txt_c, '=', len_w); + c3_c* fas_c = memchr(txt_c, '/', len_w); + + if ( tis_c && fas_c ) { + nex_c = c3_min(tis_c, fas_c); + } + else { + nex_c = ( tis_c ) ? tis_c : fas_c; + } + + if ( !nex_c ) { + *wer = u3_none; + return bem; + } + else { + c3_w dif_w = (c3_p)(nex_c - txt_c); + *wer = u3i_bytes(dif_w, (const c3_y*)txt_c); + txt_c = nex_c; + len_w = len_w - dif_w; + } + } + } + + // get spur + u3_noun tmp = u3dc("rush", u3i_bytes(len_w, (const c3_y*)txt_c), u3v_wish("stap")); + bem.pur = ( u3_nul == tmp ) ? u3_none : u3k(u3t(tmp)); + u3z(tmp); + + return bem; +} + +/* _http_req_dispatch(): dispatch http request +*/ +static void +_http_req_dispatch(u3_hreq* req_u, u3_noun req) +{ + u3_assert(u3_rsat_init == req_u->sat_e); + req_u->sat_e = u3_rsat_plan; + + { + u3_http* htp_u = req_u->hon_u->htp_u; + u3_httd* htd_u = htp_u->htd_u; + + c3_c* bas_c = req_u->rec_u->input.path.base; + c3_w len_w = req_u->rec_u->input.path.len; + + // check if base url starts with '/_~_/' + if ( (len_w < 6) + || (0 != memcmp("/_~_/", bas_c, 5)) ) + { + // no: inject to arvo + u3_noun wir = _http_req_to_duct(req_u); + u3_noun cad; + u3_noun adr = u3nc(c3__ipv4, u3i_words(1, &req_u->hon_u->ipf_w)); + // XX loopback automatically secure too? + // + u3_noun dat = u3nt(htp_u->sec, adr, req); + + cad = ( c3y == req_u->hon_u->htp_u->lop ) + ? u3nc(u3i_string("request-local"), dat) + : u3nc(u3i_string("request"), dat); + u3_auto_plan(&htd_u->car_u, u3_ovum_init(0, c3__e, wir, cad)); + } + else { + // '/_~_/' found + bas_c = bas_c + 4; // retain '/' after /_~_ + len_w = len_w - 4; + + req_u->peq_u = c3_malloc(sizeof(*req_u->peq_u)); + req_u->peq_u->req_u = req_u; + req_u->peq_u->htd_u = htd_u; + req_u->peq_u->las_o = c3n; + req_u->sat_e = u3_rsat_peek; + req_u->peq_u->pax = u3_nul; + + u3_hfig* fig_u = &req_u->hon_u->htp_u->htd_u->fig_u; + h2o_req_t* rec_u = req_u->rec_u; + + // set gang to [~ ~] or ~ + u3_noun gang; + c3_o auth = _http_req_is_auth(fig_u, rec_u); + if ( auth == c3y ) { + gang = u3nc(u3_nul, u3_nul); + } + else { + gang = u3_nul; + } + + beam bem = _get_beam(req_u, bas_c, len_w); + if ( (u3_none == bem.who) + || (u3_none == bem.des) + || (u3_none == bem.cas) + || (u3_none == bem.pur) ) + { + c3_c* msg_c = "bad request"; + h2o_send_error_generic(req_u->rec_u, 400, msg_c, msg_c, 0); + u3z(gang); + u3z(req_u->peq_u->pax); + _free_beam(&bem); + return; + } + + h2o_headers_t req_headers = req_u->rec_u->headers; + byte_range rng_u; + c3_o rng_o = _get_range(req_headers, &rng_u); + + // prepare spur for eyre range scry + // + u3_noun spur; + if ( c3n == rng_o ) { + // full range: '/range/0//foo' + spur = u3nq(u3i_string("range"), c3_s1('0'), u3_blip, u3k(bem.pur)); + } + else { + _chunk_align(&rng_u); + + u3_atom beg = ( SIZE_MAX == rng_u.beg_z) ? + u3_blip : u3dc("scot", c3__ud, u3i_chub(rng_u.beg_z)); + u3_atom end = ( SIZE_MAX == rng_u.end_z) ? + u3_blip : u3dc("scot", c3__ud, u3i_chub(rng_u.end_z)); + + spur = u3nq(u3i_string("range"), beg, end, u3k(bem.pur)); + } + + // peek or respond from cache + // + if ( c3y == req_u->peq_u->las_o ) { + u3_noun our = u3dc("scot", 'p', u3i_chubs(2, htd_u->car_u.pir_u->who_d)); + if ( c3y == u3r_sing(our, bem.who) ) { + u3_pier_peek_last(htd_u->car_u.pir_u, gang, c3__ex, + u3k(bem.des), spur, req_u->peq_u, _http_scry_cb); + } + else { + c3_c* msg_c = "bad request"; + h2o_send_error_generic(req_u->rec_u, 400, msg_c, msg_c, 0); + u3z(gang); + u3z(spur); + u3z(req_u->peq_u->pax); + } + u3z(our); + } + else { + u3_noun bam = u3nq(u3k(bem.who), u3k(bem.des), u3k(bem.cas), spur); + u3_noun key = u3nc(auth, u3k(bam)); + u3_weak nac = u3h_get(htd_u->nax_p, key); + u3z(key); + + if ( (u3_none == nac) + || ((u3_nul == gang) && (c3y == u3r_at(14, nac))) ) + { + // maybe cache, then serve subsequent range requests from cache + u3z(req_u->peq_u->pax); + req_u->peq_u->pax = u3k(bam); + u3_pier_peek(htd_u->car_u.pir_u, gang, u3nt(0, c3__ex, bam), + req_u->peq_u, _http_scry_cb); + u3z(nac); + } + else { + _http_scry_respond(req_u, nac); + u3z(bam); + u3z(gang); + } + } + _free_beam(&bem); + } + } +} + +/* _http_cache_respond(): respond with a simple-payload:http +*/ +static void +_http_cache_respond(u3_hreq* req_u, u3_noun nun) +{ + h2o_req_t* rec_u = req_u->rec_u; + u3_httd* htd_u = req_u->hon_u->htp_u->htd_u; + + if ( u3_nul == nun ) { + u3_weak req = _http_rec_to_httq(rec_u); + if ( u3_none == req ) { + if ( (u3C.wag_w & u3o_verbose) ) { + u3l_log("strange %.*s request", (c3_i)rec_u->method.len, + rec_u->method.base); + } + c3_c* msg_c = "bad request"; + h2o_send_error_generic(rec_u, 400, msg_c, msg_c, 0); + } + else { + u3_hreq* req_u = _http_req_prepare(rec_u, _http_req_new); + _http_req_dispatch(req_u, req); + } + } + else if ( u3_none == u3r_at(7, nun) ) { + h2o_send_error_500(rec_u, "Internal Server Error", "scry failed", 0); + } + else { + u3_noun auth, response_header, data; + u3x_qual(u3t(u3t(nun)), &auth, 0, &response_header, &data); + u3_noun status, headers; + u3x_cell(response_header, &status, &headers); + + // check auth + if ( (c3y == auth) + && (c3n == _http_req_is_auth(&htd_u->fig_u, rec_u)) ) + { + h2o_send_error_403(rec_u, "Unauthorized", "unauthorized", 0); + } + else { + req_u->sat_e = u3_rsat_plan; + _http_start_respond(req_u, u3k(status), u3k(headers), u3k(data), c3y); + } + } + u3z(nun); +} + +/* _http_scry_respond(): respond with a simple-payload:http +*/ +static void +_http_scry_respond(u3_hreq* req_u, u3_noun nun) +{ + h2o_req_t* rec_u = req_u->rec_u; + u3_httd* htd_u = req_u->hon_u->htp_u->htd_u; + + if ( u3_nul == nun ) { + u3_weak req = _http_rec_to_httq(rec_u); + if ( u3_none == req ) { + if ( (u3C.wag_w & u3o_verbose) ) { + u3l_log("strange %.*s request", (c3_i)rec_u->method.len, + rec_u->method.base); + } + c3_c* msg_c = "bad request"; + h2o_send_error_generic(rec_u, 400, msg_c, msg_c, 0); + } + else { + h2o_send_error_500(rec_u, "Internal Server Error", "scry failed", 0); + } + } + else if ( u3_none == u3r_at(7, nun) ) { + h2o_send_error_500(rec_u, "Internal Server Error", "scry failed", 0); + } + else { + u3_noun auth, response_header, data; + u3x_qual(u3t(u3t(nun)), &auth, 0, &response_header, &data); + u3_noun status, headers; + u3x_cell(response_header, &status, &headers); + + // check auth + if ( (c3y == auth) + && (c3n == _http_req_is_auth(&htd_u->fig_u, rec_u)) ) + { + h2o_send_error_403(rec_u, "Unauthorized", "unauthorized", 0); + } + else { + req_u->sat_e = u3_rsat_plan; + _http_start_respond(req_u, u3k(status), u3k(headers), u3k(data), c3y); + } + } + u3z(nun); +} + +/* _http_cache_scry_cb(): insert scry result into noun cache +*/ +static void +_http_cache_scry_cb(void* vod_p, u3_noun nun) +{ + u3_preq* peq_u = vod_p; + u3_httd* htd_u = peq_u->htd_u; + u3_hreq* req_u = peq_u->req_u; + + if ( req_u ) { + u3_assert(u3_rsat_peek == req_u->sat_e); + req_u->peq_u = 0; + _http_cache_respond(req_u, u3k(nun)); + } + + u3h_put(htd_u->nax_p, peq_u->pax, nun); + u3z(peq_u->pax); + c3_free(peq_u); +} + +/* _http_req_cache(): attempt to serve http request from cache +*/ +static c3_o +_http_req_cache(u3_hreq* req_u) +{ + u3_assert(u3_rsat_init == req_u->sat_e); + + h2o_iovec_t method = req_u->rec_u->method; + if (0 != strncmp("GET", method.base, method.len)) { + return c3n; + } + + u3_httd* htd_u = req_u->hon_u->htp_u->htd_u; + + u3_noun url = u3dc("scot", 't', _http_vec_to_atom(req_u->rec_u->path)); + u3_weak sac = u3h_get(htd_u->sax_p, url); + u3z(url); + + if ( u3_none == sac ) { + return c3n; + } + + u3_weak nac = u3h_get(htd_u->nax_p, sac); + if ( u3_none == nac ) { + // noun not in cache; scry it + req_u->peq_u = c3_malloc(sizeof(*req_u->peq_u)); + req_u->peq_u->req_u = req_u; + req_u->peq_u->htd_u = htd_u; + req_u->peq_u->pax = u3k(sac); + + req_u->sat_e = u3_rsat_peek; + + u3_noun gang = u3nc(u3_nul, u3_nul); + u3_pier_peek_last(htd_u->car_u.pir_u, gang, c3__ex, + u3_nul, sac, req_u->peq_u, _http_cache_scry_cb); + return c3y; + } + u3z(sac); + _http_cache_respond(req_u, nac); + return c3y; +} + +/* _http_hgen_dispose(): dispose response generator and buffers +*/ +static void +_http_hgen_dispose(void* ptr_v) +{ + u3_hgen* gen_u = (u3_hgen*)ptr_v; + _http_heds_free(gen_u->hed_u); + gen_u->hed_u = 0; + _cttp_bods_free(gen_u->nud_u); + gen_u->nud_u = 0; + _cttp_bods_free(gen_u->bod_u); + gen_u->bod_u = 0; +} + +/* _http_hgen_send(): send (some/more of a) response. +*/ +static void +_http_hgen_send(u3_hgen* gen_u) +{ + u3_hreq* req_u = gen_u->req_u; + h2o_req_t* rec_u = req_u->rec_u; + c3_w len_w; + h2o_iovec_t* vec_u = _cttp_bods_to_vec(gen_u->bod_u, &len_w); + + // not ready again until _proceed + // + u3_assert( c3y == gen_u->red ); + gen_u->red = c3n; + + // stash [bod_u] to free later + // + _cttp_bods_free(gen_u->nud_u); + gen_u->nud_u = gen_u->bod_u; + gen_u->bod_u = 0; + + switch ( gen_u->sat_e ) { + case u3_hgen_wait: { + h2o_send(rec_u, vec_u, len_w, H2O_SEND_STATE_IN_PROGRESS); + uv_timer_start(req_u->tim_u, _http_req_timer_cb, 45 * 1000, 0); + } break; + + case u3_hgen_done: { + // close connection if shutdown pending + // + u3_h2o_serv* h2o_u = req_u->hon_u->htp_u->h2o_u; + + if ( 0 != h2o_u->ctx_u.shutdown_requested ) { + rec_u->http1_is_persistent = 0; + } + + h2o_send(rec_u, vec_u, len_w, H2O_SEND_STATE_FINAL); + } break; + + case u3_hgen_fail: { + h2o_send(rec_u, vec_u, len_w, H2O_SEND_STATE_ERROR); + } break; + } + + c3_free(vec_u); +} + +/* _http_hgen_stop(): h2o is closing an in-progress response. +*/ +static void +_http_hgen_stop(h2o_generator_t* neg_u, h2o_req_t* rec_u) +{ + u3_hgen* gen_u = (u3_hgen*)neg_u; + + // response not complete, enqueue cancel + // + if ( u3_hgen_wait == gen_u->sat_e ) { + _http_req_kill(gen_u->req_u); + } +} + +/* _http_hgen_proceed(): h2o is ready for more response data. +*/ +static void +_http_hgen_proceed(h2o_generator_t* neg_u, h2o_req_t* rec_u) +{ + u3_hgen* gen_u = (u3_hgen*)neg_u; + u3_hreq* req_u = gen_u->req_u; + + // sanity check + u3_assert( rec_u == req_u->rec_u ); + + gen_u->red = c3y; + + if ( gen_u->bod_u || (u3_hgen_wait != gen_u->sat_e) ) { + _http_hgen_send(gen_u); + } +} + +/* _http_start_respond(): write a [%http-response %start ...] to h2o_req_t->res +*/ +static void +_http_start_respond(u3_hreq* req_u, + u3_noun status, + u3_noun headers, + u3_noun data, + u3_noun complete) +{ + if ( u3_rsat_plan != req_u->sat_e ) { + u3l_log("http: %%start not sane"); + u3z(status); u3z(headers); u3z(data); u3z(complete); + return; + } + + req_u->sat_e = u3_rsat_ripe; + + uv_timer_stop(req_u->tim_u); + + h2o_req_t* rec_u = req_u->rec_u; + + rec_u->res.status = status; + rec_u->res.reason = (status < 200) ? "weird" : + (status < 300) ? "ok" : + (status < 400) ? "moved" : + (status < 500) ? "missing" : + "hosed"; + + u3_hhed* hed_u = _http_heds_from_noun(u3k(headers)); + u3_hhed* deh_u = hed_u; + + c3_i has_len_i = 0; + + while ( 0 != hed_u ) { + if ( 0x200 <= rec_u->version ) { + h2o_strtolower(hed_u->nam_c, hed_u->nam_w); + + if ( 0 == strncmp(hed_u->nam_c, "connection", 10) ) { + hed_u = hed_u->nex_u; + continue; + } + } + if ( 0 == strncmp(hed_u->nam_c, "content-length", 14) ) { + has_len_i = 1; + } + else { + h2o_add_header_by_str(&rec_u->pool, &rec_u->res.headers, + hed_u->nam_c, hed_u->nam_w, 0, 0, + hed_u->val_c, hed_u->val_w); + } + + hed_u = hed_u->nex_u; + } + + u3_hgen* gen_u = h2o_mem_alloc_shared(&rec_u->pool, sizeof(*gen_u), + _http_hgen_dispose); + gen_u->neg_u = (h2o_generator_t){ _http_hgen_proceed, _http_hgen_stop }; + gen_u->red = c3y; + gen_u->sat_e = ( c3y == complete ) ? u3_hgen_done : u3_hgen_wait; + gen_u->bod_u = ( u3_nul == data ) ? + 0 : _cttp_bod_from_octs(u3k(u3t(data))); + gen_u->nud_u = 0; + gen_u->hed_u = deh_u; + gen_u->req_u = req_u; + + // if we don't explicitly set this field, h2o will send with + // transfer-encoding: chunked + // + if ( 1 == has_len_i ) { + rec_u->res.content_length = ( 0 == gen_u->bod_u ) ? + 0 : gen_u->bod_u->len_w; + } + + req_u->gen_u = gen_u; + + h2o_start_response(rec_u, &gen_u->neg_u); + + _http_hgen_send(gen_u); + + u3z(status); u3z(headers); u3z(data); u3z(complete); +} + +/* _http_continue_respond(): apply [%http-response %continue ...]. +*/ +static void +_http_continue_respond(u3_hreq* req_u, + u3_noun data, + u3_noun complete) +{ + if ( u3_rsat_ripe != req_u->sat_e ) { + u3l_log("http: %%continue before %%start"); + u3z(data); u3z(complete); + return; + } + + u3_hgen* gen_u = req_u->gen_u; + + uv_timer_stop(req_u->tim_u); + + gen_u->sat_e = ( c3y == complete ) ? u3_hgen_done : u3_hgen_wait; + + if ( u3_nul != data ) { + u3_hbod* bod_u = _cttp_bod_from_octs(u3k(u3t(data))); + + if ( 0 == gen_u->bod_u ) { + gen_u->bod_u = bod_u; + } + else { + u3_hbod* pre_u = gen_u->bod_u; + + while ( 0 != pre_u->nex_u ) { + pre_u = pre_u->nex_u; + } + + pre_u->nex_u = bod_u; + } + } + + if ( c3y == gen_u->red ) { + _http_hgen_send(gen_u); + } + + u3z(data); u3z(complete); +} + +/* _http_cancel_respond(): apply [%http-response %cancel ~]. +*/ +static void +_http_cancel_respond(u3_hreq* req_u) +{ + switch ( req_u->sat_e ) { + case u3_rsat_init: u3_assert(0); + case u3_rsat_peek: u3_assert(0); + + case u3_rsat_plan: { + req_u->sat_e = u3_rsat_ripe; // XX confirm + + c3_c* msg_c = "hosed"; + h2o_send_error_generic(req_u->rec_u, 500, msg_c, msg_c, 0); + } break; + + case u3_rsat_ripe: { + u3_hgen* gen_u = req_u->gen_u; + + uv_timer_stop(req_u->tim_u); + gen_u->sat_e = u3_hgen_fail; + + if ( c3y == gen_u->red ) { + _http_hgen_send(gen_u); + } + } + } +} + +/* _http_rec_to_httq(): convert h2o_req_t to httq +*/ +static u3_weak +_http_rec_to_httq(h2o_req_t* rec_u) +{ + u3_noun med = _http_vec_to_meth(rec_u->method); + + if ( u3_none == med ) { + return u3_none; + } + + u3_noun url = _http_vec_to_atom(rec_u->path); + u3_noun hed = _http_heds_to_noun(rec_u->headers.entries, + rec_u->headers.size); + + // restore host header + hed = u3nc(u3nc(u3i_string("host"), + _http_vec_to_atom(rec_u->authority)), + hed); + + u3_noun bod = _http_vec_to_octs(rec_u->entity); + + return u3nq(med, url, hed, bod); +} + +typedef struct _h2o_uv_sock { // see private st_h2o_uv_socket_t + h2o_socket_t sok_u; // socket + uv_stream_t* han_u; // client stream handler (u3_hcon) +} h2o_uv_sock; + +/* _http_rec_sock(): u3 http connection from h2o request; hacky. +*/ +static u3_hcon* +_http_rec_sock(h2o_req_t* rec_u) +{ + h2o_uv_sock* suv_u = (h2o_uv_sock*)rec_u->conn-> + callbacks->get_socket(rec_u->conn); + u3_hcon* hon_u = (u3_hcon*)suv_u->han_u; + + // sanity check + // + u3_assert( hon_u->sok_u == &suv_u->sok_u ); + + return hon_u; +} + +/* _http_req_prepare(): creates u3 req from h2o req and initializes its timer +*/ +static u3_hreq* +_http_req_prepare(h2o_req_t* rec_u, + u3_hreq* (*new_f)(u3_hcon*, h2o_req_t*)) +{ + u3_hcon* hon_u = _http_rec_sock(rec_u); + u3_hreq* seq_u = new_f(hon_u, rec_u); + + seq_u->tim_u = c3_malloc(sizeof(*seq_u->tim_u)); + seq_u->tim_u->data = seq_u; + uv_timer_init(u3L, seq_u->tim_u); + uv_timer_start(seq_u->tim_u, _http_req_timer_cb, 600 * 1000, 0); + + return seq_u; +} + +/* _http_spin_accept(): handle incoming http request on spin stack endpoint +*/ +static c3_i +_http_spin_accept(h2o_handler_t* han_u, h2o_req_t* rec_u) +{ + u3_hcon* hon_u = _http_rec_sock(rec_u); + + if ( NULL == hon_u->htp_u->htd_u->stk_u ) { + u3_hreq* req_u = _http_req_prepare(rec_u, _http_req_new); + req_u->sat_e = u3_rsat_plan; + _http_start_respond(req_u, 404, u3_nul, u3_nul, c3y); + return 0; + } + + c3_o aut_o = _http_req_is_auth(&hon_u->htp_u->htd_u->fig_u, rec_u); + + // if the request is not authenticated, reject it + // + if ( c3n == aut_o ) { + u3_hreq* req_u = _http_req_prepare(rec_u, _http_req_new); + req_u->sat_e = u3_rsat_plan; + _http_start_respond(req_u, 403, u3_nul, u3_nul, c3y); + } + // if it is authenticated, send slogstream/sse headers + // + else { + u3_hreq* req_u = _http_req_prepare(rec_u, _http_spin_new); + u3_noun hed = u3nl(u3nc(u3i_string("Content-Type"), + u3i_string("text/event-stream")), + u3nc(u3i_string("Cache-Control"), + u3i_string("no-cache")), + u3nc(u3i_string("Connection"), + u3i_string("keep-alive")), + u3_none); + + _http_start_respond(req_u, 200, hed, u3_nul, c3n); + + //TODO auth token may expire at some point. if we want to close the + // slogstream when that happens, we need to store the token that + // was used alongside it... + } + return 0; +} + +/* _http_seq_accept(): handle incoming http request on slogstream endpoint +*/ +static c3_i +_http_seq_accept(h2o_handler_t* han_u, h2o_req_t* rec_u) +{ + u3_hcon* hon_u = _http_rec_sock(rec_u); + c3_o aut_o = _http_req_is_auth(&hon_u->htp_u->htd_u->fig_u, rec_u); + + // if the request is not authenticated, reject it + // + if ( c3n == aut_o ) { + u3_hreq* req_u = _http_req_prepare(rec_u, _http_req_new); + req_u->sat_e = u3_rsat_plan; + _http_start_respond(req_u, 403, u3_nul, u3_nul, c3y); + } + // if it is authenticated, send slogstream/sse headers + // + else { + u3_hreq* req_u = _http_req_prepare(rec_u, _http_seq_new); + u3_noun hed = u3nl(u3nc(u3i_string("Content-Type"), + u3i_string("text/event-stream")), + u3nc(u3i_string("Cache-Control"), + u3i_string("no-cache")), + u3nc(u3i_string("Connection"), + u3i_string("keep-alive")), + u3_none); + + _http_start_respond(req_u, 200, hed, u3_nul, c3n); + + //TODO auth token may expire at some point. if we want to close the + // slogstream when that happens, we need to store the token that + // was used alongside it... + } + + return 0; +} + +/* _http_sat_accept(): handle incoming http request on status endpoint +*/ +static c3_i +_http_sat_accept(h2o_handler_t* han_u, h2o_req_t* rec_u) +{ + c3_o bus_o; + { + u3_hcon* hon_u = _http_rec_sock(rec_u); + u3_httd* htd_u = hon_u->htp_u->htd_u; + u3_pier* pir_u = htd_u->car_u.pir_u; + bus_o = pir_u->god_u->pin_o; + } + + if ( c3y == bus_o ) { + rec_u->res.status = 429; + rec_u->res.reason = "busy"; + } + else { + rec_u->res.status = 204; + rec_u->res.reason = "no content"; + } + + rec_u->res.content_length = 0; + h2o_send_inline(rec_u, NULL, 0); + + return 0; +} + +/* _http_rec_accept(); handle incoming http request from h2o. +*/ +static c3_i +_http_rec_accept(h2o_handler_t* han_u, h2o_req_t* rec_u) +{ + u3_weak req = _http_rec_to_httq(rec_u); + + if ( u3_none == req ) { + if ( (u3C.wag_w & u3o_verbose) ) { + u3l_log("strange %.*s request", (c3_i)rec_u->method.len, + rec_u->method.base); + } + c3_c* msg_c = "bad request"; + h2o_send_error_generic(rec_u, 400, msg_c, msg_c, 0); + } + else { + u3_hreq* req_u = _http_req_prepare(rec_u, _http_req_new); + if ( c3n == _http_req_cache(req_u) ) { + _http_req_dispatch(req_u, req); + } + } + + return 0; +} + +/* _http_conn_find(): find http connection in server by sequence. +*/ +static u3_hcon* +_http_conn_find(u3_http *htp_u, c3_w coq_l) +{ + u3_hcon* hon_u = htp_u->hon_u; + + // XX glories of linear search + // + while ( hon_u ) { + if ( coq_l == hon_u->coq_l ) { + return hon_u; + } + hon_u = hon_u->nex_u; + } + return 0; +} + +/* _http_conn_link(): link http request to connection +*/ +static void +_http_conn_link(u3_http* htp_u, u3_hcon* hon_u) +{ + hon_u->htp_u = htp_u; + hon_u->coq_l = htp_u->coq_l++; + hon_u->nex_u = htp_u->hon_u; + + if ( 0 != hon_u->nex_u ) { + hon_u->nex_u->pre_u = hon_u; + } + htp_u->hon_u = hon_u; +} + +/* _http_conn_unlink(): remove http request from connection +*/ +static void +_http_conn_unlink(u3_hcon* hon_u) +{ + if ( 0 != hon_u->pre_u ) { + hon_u->pre_u->nex_u = hon_u->nex_u; + + if ( 0 != hon_u->nex_u ) { + hon_u->nex_u->pre_u = hon_u->pre_u; + } + } + else { + hon_u->htp_u->hon_u = hon_u->nex_u; + + if ( 0 != hon_u->nex_u ) { + hon_u->nex_u->pre_u = 0; + } + } +} + +/* _http_conn_free(): free http connection on close. +*/ +static void +_http_conn_free(uv_handle_t* han_t) +{ + u3_hcon* hon_u = (u3_hcon*)han_t; + u3_http* htp_u = hon_u->htp_u; + u3_h2o_serv* h2o_u = htp_u->h2o_u; + + u3_assert( 0 == hon_u->req_u ); + +#if 0 + { + c3_w len_w = 0; + + u3_hcon* noh_u = htp_u->hon_u; + + while ( 0 != noh_u ) { + len_w++; + noh_u = noh_u->nex_u; + } + + u3l_log("http conn free %d of %u server %d", hon_u->coq_l, len_w, htp_u->sev_l); + } +#endif + + _http_conn_unlink(hon_u); + +#if 0 + { + c3_w len_w = 0; + + u3_hcon* noh_u = htp_u->hon_u; + + while ( 0 != noh_u ) { + len_w++; + noh_u = noh_u->nex_u; + } + + u3l_log("http conn free %u remaining", len_w); + } +#endif + + if ( (0 == htp_u->hon_u) && (0 != h2o_u->ctx_u.shutdown_requested) ) { +#if 0 + u3l_log("http conn free %d free server %d", hon_u->coq_l, htp_u->sev_l); +#endif + _http_serv_free(htp_u); + } + + c3_free(hon_u); +} + +/* _http_conn_new(): create and accept http connection. +*/ +static u3_hcon* +_http_conn_new(u3_http* htp_u) +{ + u3_hcon* hon_u = c3_malloc(sizeof(*hon_u)); + hon_u->seq_l = 1; + hon_u->ipf_w = 0; + hon_u->req_u = 0; + hon_u->sok_u = 0; + hon_u->con_u = 0; + hon_u->pre_u = 0; + + _http_conn_link(htp_u, hon_u); + +#if 0 + u3l_log("http conn neww %d server %d", hon_u->coq_l, htp_u->sev_l); +#endif + + return hon_u; +} + +/* _http_serv_find(): find http server by sequence. +*/ +static u3_http* +_http_serv_find(u3_httd* htd_u, c3_l sev_l) +{ + u3_http* htp_u = htd_u->htp_u; + + // XX glories of linear search + // + while ( htp_u ) { + if ( sev_l == htp_u->sev_l ) { + return htp_u; + } + htp_u = htp_u->nex_u; + } + return 0; +} + +/* _http_serv_link(): link http server to global state. +*/ +static void +_http_serv_link(u3_httd* htd_u, u3_http* htp_u) +{ + // XX link elsewhere initially, relink on start? + + if ( 0 != htd_u->htp_u ) { + htp_u->sev_l = 1 + htd_u->htp_u->sev_l; + } + else { + htp_u->sev_l = htd_u->sev_l; + } + + htp_u->nex_u = htd_u->htp_u; + htp_u->htd_u = htd_u; + htd_u->htp_u = htp_u; +} + +/* _http_serv_unlink(): remove http server from global state. +*/ +static void +_http_serv_unlink(u3_http* htp_u) +{ + // XX link elsewhere initially, relink on start? +#if 0 + u3l_log("http serv unlink %d", htp_u->sev_l); +#endif + u3_http* pre_u = htp_u->htd_u->htp_u; + + if ( pre_u == htp_u ) { + pre_u = htp_u->nex_u; + } + else { + // XX glories of linear search + // + while ( pre_u ) { + if ( pre_u->nex_u == htp_u ) { + pre_u->nex_u = htp_u->nex_u; + } + else pre_u = pre_u->nex_u; + } + } +} + +/* _http_h2o_context_dispose(): h2o_context_dispose, inlined and cleaned up. +*/ +static void +_http_h2o_context_dispose(h2o_context_t* ctx) +{ + h2o_globalconf_t *config = ctx->globalconf; + size_t i, j; + + for (i = 0; config->hosts[i] != NULL; ++i) { + h2o_hostconf_t *hostconf = config->hosts[i]; + for (j = 0; j != hostconf->paths.size; ++j) { + h2o_pathconf_t *pathconf = hostconf->paths.entries + j; + h2o_context_dispose_pathconf_context(ctx, pathconf); + } + h2o_context_dispose_pathconf_context(ctx, &hostconf->fallback_path); + } + + c3_free(ctx->_pathconfs_inited.entries); + c3_free(ctx->_module_configs); + + h2o_timeout_dispose(ctx->loop, &ctx->zero_timeout); + h2o_timeout_dispose(ctx->loop, &ctx->hundred_ms_timeout); + h2o_timeout_dispose(ctx->loop, &ctx->handshake_timeout); + h2o_timeout_dispose(ctx->loop, &ctx->http1.req_timeout); + h2o_timeout_dispose(ctx->loop, &ctx->http2.idle_timeout); + + // NOTE: linked in http2/connection, never unlinked + h2o_timeout_unlink(&ctx->http2._graceful_shutdown_timeout); + + h2o_timeout_dispose(ctx->loop, &ctx->http2.graceful_shutdown_timeout); + h2o_timeout_dispose(ctx->loop, &ctx->proxy.io_timeout); + h2o_timeout_dispose(ctx->loop, &ctx->one_sec_timeout); + + h2o_filecache_destroy(ctx->filecache); + ctx->filecache = NULL; + + /* clear storage */ + for (i = 0; i != ctx->storage.size; ++i) { + h2o_context_storage_item_t *item = ctx->storage.entries + i; + if (item->dispose != NULL) { + item->dispose(item->data); + } + } + + c3_free(ctx->storage.entries); + + h2o_multithread_unregister_receiver(ctx->queue, &ctx->receivers.hostinfo_getaddr); + h2o_multithread_destroy_queue(ctx->queue); + + if (ctx->_timestamp_cache.value != NULL) { + h2o_mem_release_shared(ctx->_timestamp_cache.value); + } + + // NOTE: explicit uv_run removed +} + +/* _http_serv_really_free(): free http server. +*/ +static void +_http_serv_really_free(u3_http* htp_u) +{ + u3_assert( 0 == htp_u->hon_u ); + + if ( 0 != htp_u->h2o_u ) { + u3_h2o_serv* h2o_u = htp_u->h2o_u; + + if ( 0 != h2o_u->cep_u.ssl_ctx ) { + SSL_CTX_free(h2o_u->cep_u.ssl_ctx); + } + + h2o_config_dispose(&h2o_u->fig_u); + + // XX h2o_cleanup_thread if not restarting? + + c3_free(htp_u->h2o_u); + htp_u->h2o_u = 0; + } + + _http_serv_unlink(htp_u); + c3_free(htp_u); +} + +/* http_serv_free_cb(): timer callback for freeing http server. +*/ +static void +http_serv_free_cb(uv_timer_t* tim_u) +{ + u3_http* htp_u = tim_u->data; + +#if 0 + u3l_log("http serv free cb %d", htp_u->sev_l); +#endif + + _http_serv_really_free(htp_u); + + uv_close((uv_handle_t*)tim_u, _http_close_cb); +} + +/* _http_serv_free(): begin to free http server. +*/ +static void +_http_serv_free(u3_http* htp_u) +{ +#if 0 + u3l_log("http serv free %d", htp_u->sev_l); +#endif + + u3_assert( 0 == htp_u->hon_u ); + + if ( 0 == htp_u->h2o_u ) { + _http_serv_really_free(htp_u); + } + else { + u3_h2o_serv* h2o_u = htp_u->h2o_u; + + _http_h2o_context_dispose(&h2o_u->ctx_u); + + // NOTE: free deferred to allow timers to be closed + // this is a heavy-handed workaround for the lack of + // close callbacks in h2o_timer_t + // it's unpredictable how many event-loop turns will + // be required to finish closing the underlying uv_timer_t + // and we can't free until that's done (or we have UB) + // testing reveals 5s to be a long enough deferral + uv_timer_t* tim_u = c3_malloc(sizeof(*tim_u)); + + tim_u->data = htp_u; + + uv_timer_init(u3L, tim_u); + uv_timer_start(tim_u, http_serv_free_cb, 5000, 0); + } +} + +/* _http_serv_close_cb(): http server uv_close callback. +*/ +static void +_http_serv_close_cb(uv_handle_t* han_u) +{ + u3_http* htp_u = (u3_http*)han_u; + u3_httd* htd_u = htp_u->htd_u; + htp_u->liv = c3n; + + // otherwise freed by the last linked connection + if ( 0 == htp_u->hon_u ) { + _http_serv_free(htp_u); + } + + // restart if all linked servers have been shutdown + { + htp_u = htd_u->htp_u; + c3_o res = c3y; + + while ( 0 != htp_u ) { + if ( c3y == htp_u->liv ) { + res = c3n; + } + htp_u = htp_u->nex_u; + } + + if ( (c3y == res) && (0 != htd_u->fig_u.for_u) ) { + _http_serv_start_all(htd_u); + } + } +} + +/* _http_serv_close(): close http server gracefully. +*/ +static void +_http_serv_close(u3_http* htp_u) +{ + u3_h2o_serv* h2o_u = htp_u->h2o_u; + h2o_context_request_shutdown(&h2o_u->ctx_u); + +#if 0 + u3l_log("http serv close %d %p", htp_u->sev_l, &htp_u->wax_u); +#endif + + uv_close((uv_handle_t*)&htp_u->wax_u, _http_serv_close_cb); +} + +/* _http_serv_new(): create new http server. +*/ +static u3_http* +_http_serv_new(u3_httd* htd_u, c3_s por_s, c3_o dis, c3_o sec, c3_o lop) +{ + u3_http* htp_u = c3_malloc(sizeof(*htp_u)); + + htp_u->coq_l = 1; + htp_u->por_s = por_s; + htp_u->dis = dis; + htp_u->sec = sec; + htp_u->lop = lop; + htp_u->liv = c3y; + htp_u->h2o_u = 0; + htp_u->hon_u = 0; + htp_u->nex_u = 0; + + _http_serv_link(htd_u, htp_u); + + return htp_u; +} + +/* _http_serv_accept(): accept new http connection. +*/ +static void +_http_serv_accept(u3_http* htp_u) +{ + u3_hcon* hon_u = _http_conn_new(htp_u); + + uv_tcp_init(u3L, &hon_u->wax_u); + + c3_i sas_i; + + if ( 0 != (sas_i = uv_accept((uv_stream_t*)&htp_u->wax_u, + (uv_stream_t*)&hon_u->wax_u)) ) { + if ( (u3C.wag_w & u3o_verbose) ) { + u3l_log("http: accept: %s", uv_strerror(sas_i)); + } + + uv_close((uv_handle_t*)&hon_u->wax_u, _http_conn_free); + return; + } + + hon_u->sok_u = h2o_uv_socket_create((uv_stream_t*)&hon_u->wax_u, + _http_conn_free); + + h2o_accept(&((u3_h2o_serv*)htp_u->h2o_u)->cep_u, hon_u->sok_u); + + // capture h2o connection (XX fragile) + hon_u->con_u = (h2o_conn_t*)hon_u->sok_u->data; + + struct sockaddr_in adr_u; + h2o_socket_getpeername(hon_u->sok_u, (struct sockaddr*)&adr_u); + hon_u->ipf_w = ( adr_u.sin_family != AF_INET ) ? + 0 : ntohl(adr_u.sin_addr.s_addr); +} + +/* _http_serv_listen_cb(): uv_connection_cb for uv_listen +*/ +static void +_http_serv_listen_cb(uv_stream_t* str_u, c3_i sas_i) +{ + u3_http* htp_u = (u3_http*)str_u; + + if ( 0 != sas_i ) { + u3l_log("http: listen_cb: %s", uv_strerror(sas_i)); + } + else { + _http_serv_accept(htp_u); + } +} + +/* _http_serv_init_h2o(): initialize h2o ctx and handlers for server. +*/ +static u3_h2o_serv* +_http_serv_init_h2o(SSL_CTX* tls_u, c3_o log, c3_o red) +{ + u3_h2o_serv* h2o_u = c3_calloc(sizeof(*h2o_u)); + + h2o_config_init(&h2o_u->fig_u); + h2o_u->fig_u.server_name = h2o_iovec_init( + H2O_STRLIT("urbit/vere-" URBIT_VERSION)); + + // set maximum request size to 512 MiB + // + h2o_u->fig_u.max_request_entity_size = 512 * 1024 * 1024; + + // XX default pending vhost/custom-domain design + // XX revisit the effect of specifying the port + h2o_u->hos_u = h2o_config_register_host(&h2o_u->fig_u, + h2o_iovec_init(H2O_STRLIT("default")), + 65535); + + h2o_u->cep_u.ctx = (h2o_context_t*)&h2o_u->ctx_u; + h2o_u->cep_u.hosts = h2o_u->fig_u.hosts; + h2o_u->cep_u.ssl_ctx = tls_u; + + h2o_u->han_u = h2o_create_handler(&h2o_u->hos_u->fallback_path, + sizeof(*h2o_u->han_u)); + if ( c3y == red ) { + // XX h2o_redirect_register + h2o_u->han_u->on_req = _http_rec_accept; + } + else { + h2o_u->han_u->on_req = _http_rec_accept; + } + + // register runtime endpoints + // + { + h2o_pathconf_t* pac_u; + h2o_handler_t* han_u; + + // spin stream + // + pac_u = h2o_config_register_path(h2o_u->hos_u, "/~_~/spin", 0); + han_u = h2o_create_handler(pac_u, sizeof(*han_u)); + han_u->on_req = _http_spin_accept; + // slog stream + // + pac_u = h2o_config_register_path(h2o_u->hos_u, "/~_~/slog", 0); + han_u = h2o_create_handler(pac_u, sizeof(*han_u)); + han_u->on_req = _http_seq_accept; + + // status (per spinner) + // + pac_u = h2o_config_register_path(h2o_u->hos_u, "/~_~/healthz", 0); + han_u = h2o_create_handler(pac_u, sizeof(*han_u)); + han_u->on_req = _http_sat_accept; + } + + if ( c3y == log ) { + // XX move this to post serv_start and put the port in the name +#if 0 + u3_noun now; + + { + struct timeval tim_u; + gettimeofday(&tim_u, 0); + now = u3_time_in_tv(&tim_u); + } + c3_c* pax_c = u3_Host.dir_c; + u3_noun now = u3dc("scot", c3__da, now); + c3_c* now_c = u3r_string(now); + c3_c* nam_c = ".access.log"; + c3_w len_w = 1 + strlen(pax_c) + 1 + strlen(now_c) + strlen(nam_c); + + c3_c* paf_c = c3_malloc(len_w); + snprintf(paf_c, len_w, "%s/%s%s", pax_c, now_c, nam_c); + + h2o_access_log_filehandle_t* fil_u = + h2o_access_log_open_handle(paf_c, 0, H2O_LOGCONF_ESCAPE_APACHE); + + h2o_access_log_register(&h2o_u->hos_u->fallback_path, fil_u); + + c3_free(paf_c); + c3_free(now_c); + u3z(now); +#endif + } + + // XX h2o_compress_register + + h2o_context_init(&h2o_u->ctx_u, u3L, &h2o_u->fig_u); + + return h2o_u; +} + +/* _http_serv_start(): start http server. +*/ +static void +_http_serv_start(u3_http* htp_u) +{ + u3_pier* pir_u = htp_u->htd_u->car_u.pir_u; + struct sockaddr_in adr_u; + + memset(&adr_u, 0, sizeof(adr_u)); + adr_u.sin_family = AF_INET; + adr_u.sin_addr.s_addr = ( c3y == htp_u->lop ) ? + htonl(INADDR_LOOPBACK) : + INADDR_ANY; + + if ( 0 != u3_Host.ops_u.bin_c && c3n == htp_u->lop ) { + inet_pton(AF_INET, u3_Host.ops_u.bin_c, &adr_u.sin_addr); + } + + uv_tcp_init(u3L, &htp_u->wax_u); + + /* Try ascending ports. + */ + while ( 1 ) { + c3_i sas_i; + + adr_u.sin_port = htons(htp_u->por_s); + + if ( 0 != (sas_i = uv_tcp_bind(&htp_u->wax_u, + (const struct sockaddr*)&adr_u, 0)) || + 0 != (sas_i = uv_listen((uv_stream_t*)&htp_u->wax_u, + TCP_BACKLOG, _http_serv_listen_cb)) ) { + if ( UV_EADDRNOTAVAIL == sas_i ) { + u3l_log("http: ip address not available"); + u3_king_bail(); + } + if ( c3y == htp_u->dis ) { + u3l_log("http: listen (%" PRIu16 "): %s", htp_u->por_s, + uv_strerror(sas_i)); + u3_king_bail(); + } + if ( (UV_EADDRINUSE == sas_i) || (UV_EACCES == sas_i) ) { + if ( (c3y == htp_u->sec) && (443 == htp_u->por_s) ) { + htp_u->por_s = 8443; + } + else if ( (c3n == htp_u->sec) && (80 == htp_u->por_s) ) { + htp_u->por_s = 8080; + } + else { + htp_u->por_s++; + // XX + // + if ( c3n == htp_u->lop ) { + if ( c3y == htp_u->sec ) { + pir_u->pes_s = htp_u->por_s; + } + else { + pir_u->per_s = htp_u->por_s; + } + } + } + + continue; + } + + u3l_log("http: listen: %s", uv_strerror(sas_i)); + + _http_serv_free(htp_u); + return; + } + + u3l_log("http: %s live on %s://localhost:%d", + (c3y == htp_u->lop) ? "loopback" : "web interface", + (c3y == htp_u->sec) ? "https" : "http", + htp_u->por_s); + + break; + } +} + +static uv_buf_t +_http_wain_to_buf(u3_noun wan) +{ + c3_w len_w = u3_mcut_path(0, 0, (c3_c)10, u3k(wan)); + c3_c* buf_c = c3_malloc(1 + len_w); + + u3_mcut_path(buf_c, 0, (c3_c)10, wan); + buf_c[len_w] = 0; + + return uv_buf_init(buf_c, len_w); +} + +/* _http_init_tls: initialize OpenSSL context +*/ +static SSL_CTX* +_http_init_tls(uv_buf_t key_u, uv_buf_t cer_u) +{ + // XX require 1.1.0 and use TLS_server_method() + SSL_CTX* tls_u = SSL_CTX_new(SSLv23_server_method()); + // XX use SSL_CTX_set_max_proto_version() and SSL_CTX_set_min_proto_version() + SSL_CTX_set_options(tls_u, SSL_OP_NO_SSLv2 | + SSL_OP_NO_SSLv3 | + // SSL_OP_NO_TLSv1 | // XX test + SSL_OP_NO_COMPRESSION); + + SSL_CTX_set_default_verify_paths(tls_u); + SSL_CTX_set_session_cache_mode(tls_u, SSL_SESS_CACHE_OFF); + SSL_CTX_set_cipher_list(tls_u, + "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:" + "ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:" + "RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS"); + + // enable ALPN for HTTP 2 support +#if H2O_USE_ALPN + { + SSL_CTX_set_ecdh_auto(tls_u, 1); + h2o_ssl_register_alpn_protocols(tls_u, h2o_http2_alpn_protocols); + } +#endif + + { + BIO* bio_u = BIO_new_mem_buf(key_u.base, key_u.len); + EVP_PKEY* pky_u = PEM_read_bio_PrivateKey(bio_u, 0, 0, 0); + c3_i sas_i = SSL_CTX_use_PrivateKey(tls_u, pky_u); + + EVP_PKEY_free(pky_u); + BIO_free(bio_u); + + if( 0 == sas_i ) { + u3l_log("http: load private key failed:"); + FILE* fil_u = u3_term_io_hija(); + ERR_print_errors_fp(fil_u); + u3_term_io_loja(1, fil_u); + + SSL_CTX_free(tls_u); + + return 0; + } + } + + { + BIO* bio_u = BIO_new_mem_buf(cer_u.base, cer_u.len); + X509* xer_u = PEM_read_bio_X509_AUX(bio_u, 0, 0, 0); + c3_i sas_i = SSL_CTX_use_certificate(tls_u, xer_u); + + X509_free(xer_u); + + if( 0 == sas_i ) { + u3l_log("http: load certificate failed:"); + FILE* fil_u = u3_term_io_hija(); + ERR_print_errors_fp(fil_u); + u3_term_io_loja(1,fil_u); + + BIO_free(bio_u); + SSL_CTX_free(tls_u); + + return 0; + } + + // get any additional CA certs, ignoring errors + while ( 0 != (xer_u = PEM_read_bio_X509(bio_u, 0, 0, 0)) ) { + // XX require 1.0.2 or newer and use SSL_CTX_add0_chain_cert + SSL_CTX_add_extra_chain_cert(tls_u, xer_u); + } + + BIO_free(bio_u); + } + + return tls_u; +} + +/* _http_write_ports_file(): update .http.ports +*/ +static void +_http_write_ports_file(u3_httd* htd_u, c3_c *pax_c) +{ + c3_c* nam_c = ".http.ports"; + c3_w len_w = 1 + strlen(pax_c) + 1 + strlen(nam_c); + + c3_c* paf_c = c3_malloc(len_w); + snprintf(paf_c, len_w, "%s/%s", pax_c, nam_c); + + c3_i por_i = c3_open(paf_c, O_WRONLY | O_CREAT | O_TRUNC, 0666); + c3_free(paf_c); + + u3_http* htp_u = htd_u->htp_u; + u3_pier* pir_u = htd_u->car_u.pir_u; + + c3_c temp[32]; + while ( 0 != htp_u ) { + if ( 0 < htp_u->por_s ) { + u3_write_fd(por_i, temp, snprintf(temp, 32, "%u %s %s\n", htp_u->por_s, + (c3y == htp_u->sec) ? "secure" : "insecure", + (c3y == htp_u->lop) ? "loopback" : "public")); + } + + htp_u = htp_u->nex_u; + } + + c3_sync(por_i); + close(por_i); +} + +/* _http_release_ports_file(): remove .http.ports +*/ +static void +_http_release_ports_file(c3_c *pax_c) +{ + c3_c* nam_c = ".http.ports"; + c3_w len_w = 1 + strlen(pax_c) + 1 + strlen(nam_c); + c3_c* paf_c = c3_malloc(len_w); + c3_i wit_i; + + wit_i = snprintf(paf_c, len_w, "%s/%s", pax_c, nam_c); + u3_assert(wit_i > 0); + u3_assert(len_w == (c3_w)wit_i + 1); + + c3_unlink(paf_c); + c3_free(paf_c); +} + +static u3_hreq* +_http_search_req(u3_httd* htd_u, + c3_l sev_l, + c3_l coq_l, + c3_l seq_l) +{ + u3_http* htp_u; + u3_hcon* hon_u; + u3_hreq* req_u; + c3_w bug_w = u3C.wag_w & u3o_verbose; + + if ( !(htp_u = _http_serv_find(htd_u, sev_l)) ) { + if ( bug_w ) { + u3l_log("http: server not found: %x", sev_l); + } + return 0; + } + else if ( !(hon_u = _http_conn_find(htp_u, coq_l)) ) { + if ( bug_w ) { + u3l_log("http: connection not found: %x/%d", sev_l, coq_l); + } + return 0; + } + else if ( !(req_u = _http_req_find(hon_u, seq_l)) ) { + if ( bug_w ) { + u3l_log("http: request not found: %x/%d/%d", + sev_l, coq_l, seq_l); + } + return 0; + } + + return req_u; +} + +/* _http_serv_start_all(): initialize and start servers based on saved config. +*/ +static void +_http_serv_start_all(u3_httd* htd_u) +{ + u3_http* htp_u; + u3_pier* pir_u = htd_u->car_u.pir_u; + c3_s por_s; + u3_noun sec = u3_nul; + u3_noun non = u3_none; + u3_noun dis; + u3_form* for_u = htd_u->fig_u.for_u; + + u3_assert( 0 != for_u ); + + // if the SSL_CTX existed, it'll be freed with the servers + htd_u->tls_u = 0; + + // HTTPS server. + if ( (0 != for_u->key_u.base) && (0 != for_u->cer_u.base) ) { + htd_u->tls_u = _http_init_tls(for_u->key_u, for_u->cer_u); + + // Note: if tls_u is used for additional servers, + // its reference count must be incremented with SSL_CTX_up_ref + + if ( 0 != htd_u->tls_u ) { + if ( 0 == pir_u->pes_s ) { + por_s = ( c3y == for_u->pro ) ? 8443 : 443; + dis = c3n; + } + else { + por_s = pir_u->pes_s; + dis = c3y; + } + htp_u = _http_serv_new(htd_u, por_s, dis, c3y, c3n); + htp_u->h2o_u = _http_serv_init_h2o(htd_u->tls_u, for_u->log, for_u->red); + + _http_serv_start(htp_u); + sec = u3nc(u3_nul, htp_u->por_s); + } + } + + // HTTP server. + { + if ( 0 == pir_u->per_s ) { + por_s = ( c3y == for_u->pro ) ? 8080 : 80; + dis = c3n; + } + else { + por_s = pir_u->per_s; + dis = c3y; + } + htp_u = _http_serv_new(htd_u, por_s, dis, c3n, c3n); + htp_u->h2o_u = _http_serv_init_h2o(0, for_u->log, for_u->red); + + _http_serv_start(htp_u); + non = htp_u->por_s; + } + + // Loopback server. + { + por_s = 12321; + htp_u = _http_serv_new(htd_u, por_s, c3n, c3n, c3y); + htp_u->h2o_u = _http_serv_init_h2o(0, for_u->log, for_u->red); + + _http_serv_start(htp_u); + } + + // send listening ports to %eyre + { + u3_assert( u3_none != non ); + + // XX remove [sen] + // + u3_noun wir = u3nt(u3i_string("http-server"), + u3dc("scot", c3__uv, htd_u->sev_l), + u3_nul); + u3_noun cad = u3nt(c3__live, non, sec); + + u3_auto_plan(&htd_u->car_u, u3_ovum_init(0, c3__e, wir, cad)); + } + + _http_write_ports_file(htd_u, u3_Host.dir_c); + _http_form_free(htd_u); +} + +/* _http_serv_restart(): gracefully shutdown, then start servers. +*/ +static void +_http_serv_restart(u3_httd* htd_u) +{ + u3_http* htp_u = htd_u->htp_u; + + if ( 0 == htp_u ) { + _http_serv_start_all(htd_u); + } + else { + u3l_log("http: restarting servers to apply configuration"); + + while ( 0 != htp_u ) { + if ( c3y == htp_u->liv ) { + _http_serv_close(htp_u); + } + htp_u = htp_u->nex_u; + } + + _http_release_ports_file(u3_Host.dir_c); + } +} + +/* _http_form_free(): free and unlink saved config. +*/ +static void +_http_form_free(u3_httd* htd_u) +{ + u3_form* for_u = htd_u->fig_u.for_u; + + if ( 0 == for_u ) { + return; + } + + if ( 0 != for_u->key_u.base ) { + c3_free(for_u->key_u.base); + } + + if ( 0 != for_u->cer_u.base ) { + c3_free(for_u->cer_u.base); + } + + c3_free(for_u); + htd_u->fig_u.for_u = 0; +} + +/* _http_auth_free(): free stored auth token state +*/ +static void +_http_auth_free(u3_httd* htd_u) +{ + u3z(htd_u->fig_u.ses); + htd_u->fig_u.ses = u3_nul; + c3_free(htd_u->fig_u.key_c); +} + +/* u3_http_ef_form(): apply configuration, restart servers. +*/ +void +u3_http_ef_form(u3_httd* htd_u, u3_noun fig) +{ + u3_noun sec, pro, log, red; + + if ( (c3n == u3r_qual(fig, &sec, &pro, &log, &red) ) || + // confirm sec is a valid (unit ^) + !( u3_nul == sec || ( c3y == u3du(sec) && + c3y == u3du(u3t(sec)) && + u3_nul == u3h(sec) ) ) || + // confirm valid flags ("loobeans") + !( c3y == pro || c3n == pro ) || + !( c3y == log || c3n == log ) || + !( c3y == red || c3n == red ) ) { + u3l_log("http: form: invalid card"); + u3z(fig); + return; + } + + u3_form* for_u = c3_malloc(sizeof(*for_u)); + for_u->pro = (c3_o)pro; + for_u->log = (c3_o)log; + for_u->red = (c3_o)red; + + if ( u3_nul != sec ) { + u3_noun key = u3h(u3t(sec)); + u3_noun cer = u3t(u3t(sec)); + + for_u->key_u = _http_wain_to_buf(u3k(key)); + for_u->cer_u = _http_wain_to_buf(u3k(cer)); + } + else { + for_u->key_u = uv_buf_init(0, 0); + for_u->cer_u = uv_buf_init(0, 0); + } + + u3z(fig); + _http_form_free(htd_u); + + htd_u->fig_u.for_u = for_u; + + _http_serv_restart(htd_u); + + htd_u->car_u.liv_o = c3y; +} + +/* u3_http_ef_form(): store set of auth tokens +*/ +void +u3_http_ef_auth(u3_httd* htd_u, u3_noun fig) +{ + u3z(htd_u->fig_u.ses); + htd_u->fig_u.ses = fig; +} + +/* _http_io_talk(): start http I/O. +*/ +static void +_http_io_talk(u3_auto* car_u) +{ + u3_httd* htd_u = (u3_httd*)car_u; + + // XX remove [sen] + // + u3_noun wir = u3nt(u3i_string("http-server"), + u3dc("scot", c3__uv, htd_u->sev_l), + u3_nul); + u3_noun cad = u3nc(c3__born, u3_nul); + + u3_auto_plan(car_u, u3_ovum_init(0, c3__e, wir, cad)); + + //Setup spin stack +#ifndef U3_OS_windows + htd_u->stk_u = u3t_sstack_open(); + + if ( NULL == htd_u->stk_u ) { + u3l_log("http.c: failed to open spin stack"); + } +#endif + + // XX set liv_o on done/swap? + // +} + +/* _http_ef_http_server(): dispatch an %http-server effect from %light. +*/ +void +_http_ef_http_server(u3_httd* htd_u, + c3_l sev_l, + c3_l coq_l, + c3_l seq_l, + u3_noun tag, + u3_noun dat) +{ + u3_hreq* req_u; + + // sets server configuration + // + if ( c3y == u3r_sing_c("set-config", tag) ) { + u3_http_ef_form(htd_u, u3k(dat)); + } + else if ( c3y == u3r_sing_c("sessions", tag) ) { + u3_http_ef_auth(htd_u, u3k(dat)); + } + // handles a cache notification + // + else if ( c3y == u3r_sing_c("grow", tag) ) { + // cache paths are /cache/(scot %ud aeon)/(scot %t url) + u3_noun pax = u3k(dat); + u3_noun url = u3h(u3t(u3t(pax))); + u3h_put(htd_u->sax_p, url, pax); + } + // responds to an open request + // + else if ( 0 != (req_u = _http_search_req(htd_u, sev_l, coq_l, seq_l)) ) { + if ( c3y == u3r_sing_c("response", tag) ) { + u3_noun response = dat; + + if ( c3y == u3r_sing_c("start", u3h(response)) ) { + // Separate the %start message into its components. + // + u3_noun response_header, data, complete; + u3_noun status, headers; + u3x_trel(u3t(response), &response_header, &data, &complete); + u3x_cell(response_header, &status, &headers); + + _http_start_respond(req_u, u3k(status), u3k(headers), u3k(data), + u3k(complete)); + } + else if ( c3y == u3r_sing_c("continue", u3h(response)) ) { + // Separate the %continue message into its components. + // + u3_noun data, complete; + u3x_cell(u3t(response), &data, &complete); + + _http_continue_respond(req_u, u3k(data), u3k(complete)); + } + else if (c3y == u3r_sing_c("cancel", u3h(response))) { + _http_cancel_respond(req_u); + } + else { + u3l_log("http: strange response"); + } + } + else { + u3l_log("http: strange response"); + } + } + + u3z(tag); + u3z(dat); +} + +/* _http_stream_slog(): emit slog to open connections +*/ +static void +_http_stream_slog(void* vop_p, c3_w pri_w, u3_noun tan) +{ + u3_httd* htd_u = (u3_httd*)vop_p; + u3_hreq* seq_u = htd_u->fig_u.seq_u; + + // only do the work if there are open slog streams + // + if ( 0 != seq_u ) { + u3_weak data = u3_none; + + if ( c3y == u3a_is_atom(tan) ) { + u3_noun lin = u3i_list(u3i_string("data:"), + u3k(tan), + c3_s2('\n', '\n'), + u3_none); + u3_atom txt = u3qc_rap(3, lin); + data = u3nt(u3_nul, u3r_met(3, txt), txt); + u3z(lin); + } + else { + u3_weak wol = u3_none; + + // if we have no arvo kernel and can't evaluate nock, + // only send %leaf tanks + // + if ( 0 == u3A->roc ) { + if ( c3__leaf == u3h(tan) ) { + wol = u3nc(u3k(u3t(tan)), u3_nul); + } + } + else { + u3_noun blu = u3_term_get_blew(0); + c3_l col_l = u3h(blu); + wol = u3dc("wash", u3nc(0, col_l), u3k(tan)); + u3z(blu); + } + + if ( u3_none != wol ) { + u3_noun low = wol; + u3_noun paz = u3_nul; + while ( u3_nul != low ) { + u3_noun lin = u3i_list(u3i_string("data:"), + u3qc_rap(3, u3h(low)), + c3_s2('\n', '\n'), + u3_none); + paz = u3kb_weld(paz, lin); + low = u3t(low); + } + u3_atom txt = u3qc_rap(3, paz); + data = u3nt(u3_nul, u3r_met(3, txt), txt); + u3z(paz); + } + + u3z(wol); + } + + if ( u3_none != data ) { + while ( 0 != seq_u ) { + _http_continue_respond(seq_u, u3k(data), c3n); + seq_u = seq_u->nex_u; + } + } + + u3z(data); + } + + u3z(tan); +} + +/* _http_spin_timer_cb(): send heartbeat to slog streams and restart timer +*/ +static void +_http_spin_timer_cb(uv_timer_t* tim_u) +{ + u3_httd* htd_u = tim_u->data; + u3_hreq* siq_u = htd_u->fig_u.siq_u; + + if ( 0 != siq_u ) { + c3_w siz_w = 1024; + c3_c* buf_c = c3_malloc(siz_w); + u3t_spin* stk_u = htd_u->stk_u; + if ( NULL == stk_u ) return; + c3_w pos_w = stk_u->off_w; + c3_w out_w = 0; + + while (pos_w > 4) { + c3_w len_w; + pos_w -=4; + + if ( siz_w < out_w + 4 ) { + buf_c = c3_realloc(buf_c, siz_w*2); + siz_w *= 2; + } + + memcpy(&len_w, &stk_u->dat_y[pos_w], 4); + pos_w -= len_w; + + if ( siz_w < out_w + 4 ) { + buf_c = c3_realloc(buf_c, siz_w*2); + } + buf_c[out_w++] = '/'; + + if ( siz_w < out_w + len_w ) { + buf_c = c3_realloc(buf_c, siz_w*2); + } + + memcpy(buf_c + out_w, &stk_u->dat_y[pos_w], len_w); + out_w += len_w; + } + buf_c[out_w] = '\0'; + + if ( 0 != stk_u->off_w ) { + u3_noun tan = u3i_string(buf_c); + u3_noun lin = u3i_list(u3i_string("data:"), + tan, + c3_s2('\n', '\n'), + u3_none); + u3_atom txt = u3qc_rap(3, lin); + u3_noun dat = u3nt(u3_nul, u3r_met(3, txt), txt); + + while ( 0 != siq_u ) { + _http_continue_respond(siq_u, u3k(dat), c3n); + siq_u = siq_u->nex_u; + } + u3z(dat); u3z(lin); + } + uv_timer_start(htd_u->fig_u.sin_u, _http_spin_timer_cb, + SPIN_TIMER, 0); + } +} + + +/* _http_seq_heartbeat_cb(): send heartbeat to slog streams and restart timer +*/ +static void +_http_seq_heartbeat_cb(uv_timer_t* tim_u) +{ + u3_httd* htd_u = tim_u->data; + u3_hreq* seq_u = htd_u->fig_u.seq_u; + u3_hreq* siq_u = htd_u->fig_u.siq_u; + + // slog endpoints + if ( 0 != seq_u ) { + u3_noun dat = u3nt(u3_nul, 1, c3_s1('\n')); + while ( 0 != seq_u ) { + _http_continue_respond(seq_u, u3k(dat), c3n); + seq_u = seq_u->nex_u; + } + u3z(dat); + } + + // spin endpoints + if ( 0 != siq_u ) { + u3_noun dat = u3nt(u3_nul, 1, c3_s1('\n')); + while ( 0 != siq_u ) { + _http_continue_respond(siq_u, u3k(dat), c3n); + siq_u = siq_u->nex_u; + } + u3z(dat); + } + + uv_timer_start(htd_u->fig_u.sit_u, _http_seq_heartbeat_cb, + HEARTBEAT_TIMEOUT, 0); +} + +/* _http_io_kick(): apply effects. +*/ +static c3_o +_http_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad) +{ + u3_httd* htd_u = (u3_httd*)car_u; + + u3_noun tag, dat, i_wir, t_wir; + + if ( (c3n == u3r_cell(wir, &i_wir, &t_wir)) + || (c3n == u3r_cell(cad, &tag, &dat)) + || (c3n == u3r_sing_c("http-server", i_wir)) ) + { + u3z(wir); u3z(cad); + return c3n; + } + + // XX this needs to be rewritten, it defers (c3n) in cases it should not + // + { + u3_noun pud = t_wir; + u3_noun p_pud, t_pud, tt_pud, q_pud, r_pud, s_pud; + c3_l sev_l, coq_l, seq_l; + + + if ( (c3n == u3r_cell(pud, &p_pud, &t_pud)) || + (c3n == u3v_lily(c3__uv, u3k(p_pud), &sev_l)) ) + { + u3z(wir); u3z(cad); + return c3n; + } + + if ( u3_nul == t_pud ) { + coq_l = seq_l = 0; + } + else { + if ( (c3n == u3r_cell(t_pud, &q_pud, &tt_pud)) || + (c3n == u3v_lily(c3__ud, u3k(q_pud), &coq_l)) ) + { + u3z(wir); u3z(cad); + return c3n; + } + + if ( u3_nul == tt_pud ) { + seq_l = 0; + } else { + if ( (c3n == u3r_cell(tt_pud, &r_pud, &s_pud)) || + (u3_nul != s_pud) || + (c3n == u3v_lily(c3__ud, u3k(r_pud), &seq_l)) ) + { + u3z(wir); u3z(cad); + return c3n; + } + } + } + + _http_ef_http_server(htd_u, sev_l, coq_l, seq_l, u3k(tag), u3k(dat)); + u3z(wir); u3z(cad); + return c3y; + } +} + +/* _http_io_exit(): shut down http. +*/ +static void +_http_io_exit(u3_auto* car_u) +{ + u3_httd* htd_u = (u3_httd*)car_u; + + u3h_free(htd_u->sax_p); + u3h_free(htd_u->nax_p); + + if ( NULL != htd_u->stk_u ) { + munmap(htd_u->stk_u, u3a_page); + } + + // dispose of configuration to avoid restarts + // + _http_form_free(htd_u); + _http_auth_free(htd_u); + + // close all servers + // + // XX broken + // + // for ( u3_http* htp_u = htd_u->htp_u; htp_u; htp_u = htp_u->nex_u ) { + // _http_serv_close(htp_u); + // } + + { + u3_atom lin = u3i_string("data:urbit shutting down\n\n"); + u3_noun dat = u3nt(u3_nul, u3r_met(3, lin), lin); + u3_hreq* seq_u = htd_u->fig_u.seq_u; + while ( 0 != seq_u ) { + _http_continue_respond(seq_u, u3k(dat), c3y); + seq_u = seq_u->nex_u; + } + u3z(dat); + } + + + _http_release_ports_file(u3_Host.dir_c); +} + +/* _http_io_info(): produce status info. +*/ +static u3_noun +_http_io_info(u3_auto* car_u) +{ + u3_httd* htd_u = (u3_httd*)car_u; + u3_http* htp_u = htd_u->htp_u; + c3_w sec_w = 0; + u3_hreq* seq_u = htd_u->fig_u.seq_u; + u3_noun res; + + // XX review: metrics + // + while ( 0 != seq_u ) { + sec_w++; + seq_u = seq_u->nex_u; + } + res = u3i_list( + u3_pier_mase("instance", htd_u->sev_l), + u3_pier_mase("open-slogstreams", u3i_word(sec_w)), + u3_none); + + while ( 0 != htp_u ) { + res = u3nc( + u3_pier_mass( + u3dc("scot", c3__uv, htp_u->sev_l), + u3i_list( + u3_pier_mase("secure", htp_u->sec), + u3_pier_mase("loopback", htp_u->lop), + u3_pier_mase("live", htp_u->liv), + u3_pier_mase("port", htp_u->por_s), + u3_pier_mase("connections", htp_u->coq_l), + u3_none)), + res); + htp_u = htp_u->nex_u; + } + return u3kb_flop(res); +} + +/* _http_io_slog(): print status info. +*/ +static void +_http_io_slog(u3_auto* car_u) +{ + u3_httd* htd_u = (u3_httd*)car_u; + c3_y sec_y = 0; + u3_hreq* seq_u = htd_u->fig_u.seq_u; + while ( 0 != seq_u ) { + sec_y++; + seq_u = seq_u->nex_u; + } + u3l_log(" open slogstreams: %d", sec_y); +} + +/* u3_http_io_init(): initialize http I/O. +*/ +u3_auto* +u3_http_io_init(u3_pier* pir_u) +{ + u3_httd* htd_u = c3_calloc(sizeof(*htd_u)); + htd_u->sax_p = u3h_new(); + htd_u->nax_p = u3h_new_cache(512); + + { + u3_noun key = u3dt("cat", 3, + u3i_string("urbauth-"), + u3dc("scot", 'p', u3i_chubs(2, pir_u->who_d))); + htd_u->fig_u.ses = u3_nul; + htd_u->fig_u.key_c = u3r_string(key); + u3z(key); + } + + u3_auto* car_u = &htd_u->car_u; + car_u->nam_m = c3__http; + car_u->liv_o = c3n; + car_u->io.talk_f = _http_io_talk; + car_u->io.info_f = _http_io_info; + car_u->io.slog_f = _http_io_slog; + car_u->io.kick_f = _http_io_kick; + car_u->io.exit_f = _http_io_exit; + + pir_u->sop_p = htd_u; + pir_u->sog_f = _http_stream_slog; + + uv_timer_t* sit_u = c3_malloc(sizeof(*sit_u)); + sit_u->data = htd_u; + uv_timer_init(u3L, sit_u); + uv_timer_start(sit_u, _http_seq_heartbeat_cb, HEARTBEAT_TIMEOUT, 0); + htd_u->fig_u.sit_u = sit_u; + + uv_timer_t* sin_u = c3_malloc(sizeof(*sin_u)); + sin_u->data = htd_u; + uv_timer_init(u3L, sin_u); + htd_u->fig_u.sin_u = sin_u; + + { + u3_noun now; + struct timeval tim_u; + gettimeofday(&tim_u, 0); + + now = u3_time_in_tv(&tim_u); + htd_u->sev_l = u3r_mug(now); + u3z(now); + } + + // XX retry up to N? + // + // car_u->ev.bail_f = ...; + + return car_u; +} diff --git a/vere/pkg/vere/io/lick.c b/vere/pkg/vere/io/lick.c new file mode 100644 index 0000000..9e722cb --- /dev/null +++ b/vere/pkg/vere/io/lick.c @@ -0,0 +1,654 @@ +/// @file + +#include "vere.h" +#include +#include +#include "noun.h" + +/* u3_chan: incoming ipc port connection. +*/ +typedef struct _u3_chan { + struct _u3_moor mor_u; // message handler + c3_l coq_l; // connection number + c3_o liv_o; // connection live + struct _u3_shan* san_u; // server backpointer +} u3_chan; + +/* u3_shan: ipc port server. +*/ +typedef struct _u3_shan { + uv_pipe_t pyp_u; // server stream handler + c3_l nex_l; // next connection number + struct _u3_port* gen_u; // port backpointer + struct _u3_chan* can_u; // connection list +} u3_shan; + + +/* u3_port: description of an IPC port +*/ +typedef struct _u3_port { + c3_c* nam_c; // name of port + c3_o con_o; + c3_o liv_o; + struct _u3_shan* san_u; // server reference + struct _u3_lick* lic_u; // device backpointer + struct _u3_port* nex_u; // next pointer +} u3_port; + +/* u3_lick: a list of devices +*/ +typedef struct _u3_lick { + u3_auto car_u; // driver + c3_c* fod_c; // IPC folder location + u3_cue_xeno* sil_u; // cue handle + struct _u3_port* gen_u; // port list +} u3_lick; + +static const c3_c URB_DEV_PATH[] = "/.urb/dev"; + +/* _lick_string_to_knot(): convert c unix path component to $knot +*/ +static u3_atom +_lick_string_to_knot(c3_c* pax_c) +{ + u3_assert(pax_c); + u3_assert(!strchr(pax_c, '/')); + if ( '!' == *pax_c ) { + pax_c++; + } + return u3i_string(pax_c); +} + +/* _lick_string_to_path(): convert c string to u3_noun $path +** +** c string must begin with the pier path plus mountpoint +*/ +static u3_noun +_lick_string_to_path(c3_c* pax_c) +{ + u3_noun not; + + //u3_assert(pax_c[-1] == '/'); + c3_c* end_c = strchr(pax_c, '/'); + if ( !end_c ) { + return u3nc(_lick_string_to_knot(pax_c), u3_nul); + } + else { + *end_c = 0; + not = _lick_string_to_knot(pax_c); + *end_c = '/'; + return u3nc(not, _lick_string_to_path(end_c + 1)); + } +} + +/* _lick_it_path(): path for ipc files +*/ +static c3_c* +_lick_it_path(u3_noun pax) +{ + c3_w len_w = 0; + c3_c *pas_c; + + // measure + // + { + u3_noun wiz = pax; + + while ( u3_nul != wiz ) { + len_w += (1 + u3r_met(3, u3h(wiz))); + wiz = u3t(wiz); + } + } + + // cut + // + pas_c = c3_malloc(len_w + 1); + pas_c[len_w] = '\0'; + { + u3_noun wiz = pax; + c3_c* waq_c = pas_c; + + while ( u3_nul != wiz ) { + c3_w tis_w = u3r_met(3, u3h(wiz)); + + if ( (u3_nul == u3t(wiz)) ) { + *waq_c++ = '/'; + } else *waq_c++ = '/'; + + u3r_bytes(0, tis_w, (c3_y*)waq_c, u3h(wiz)); + waq_c += tis_w; + + wiz = u3t(wiz); + } + *waq_c = 0; + } + u3z(pax); + return pas_c; +} + +/* _lick_send_noun(): jam and send noun over chan. +*/ +static void +_lick_send_noun(u3_chan* can_u, u3_noun nun) +{ + c3_y* byt_y; + c3_d len_d; + + u3s_jam_xeno(nun, &len_d, &byt_y); + u3z(nun); + u3_newt_send((u3_mojo*)&can_u->mor_u, len_d, byt_y); +} + +/* _lick_mote_free(): u3_moat-shaped close callback. +*/ +static void +_lick_moat_free(void* ptr_v, ssize_t err_i, const c3_c* err_c) +{ + c3_free((u3_chan*)ptr_v); +} + +/* _lick_close_cb(): socket close callback. +*/ +static void +_lick_close_cb(uv_handle_t* had_u) +{ + c3_free((u3_shan*)had_u); +} + +/* _lick_moor_poke(): called on message read from u3_moor. +*/ +static c3_o +_lick_moor_poke(void* ptr_v, c3_d len_d, c3_y* byt_y) +{ + u3_weak put; + u3_noun dev, nam, dat, wir, cad; + + u3_chan* can_u = (u3_chan*)ptr_v; + u3_port* gen_u = can_u->san_u->gen_u; + u3_lick* lic_u = gen_u->lic_u; + c3_i err_i = 0; + c3_c* err_c; + c3_c* tag_c; + c3_c* rid_c; + + put = u3s_cue_xeno_with(lic_u->sil_u, len_d, byt_y); + if ( u3_none == put ) { + can_u->mor_u.bal_f(can_u, -1, "cue-none"); + return c3y; + } + if ( c3n == u3r_cell(put, &nam, &dat) ) { + can_u->mor_u.bal_f(can_u, -2, "put-bad"); + u3z(put); + return c3y; + } + + wir = u3nc(c3__lick, u3_nul); + dev = _lick_string_to_path(gen_u->nam_c+1); + cad = u3nt(c3__soak, dev, put); + u3_auto_peer( + u3_auto_plan(&lic_u->car_u, u3_ovum_init(0, c3__l, wir, cad)), + 0, 0, 0); + + return c3y; +} + +/* _lick_close_chan(): close given channel, freeing. +*/ +static void +_lick_close_chan(u3_chan* can_u) +{ + u3_shan* san_u = can_u->san_u; + u3_lick* lic_u = san_u->gen_u->lic_u; + u3_port* gen_u = san_u->gen_u; + gen_u->con_o = c3n; + u3_chan* inn_u; + // remove chan from server's connection list. + // + if ( san_u->can_u == can_u ) { + san_u->can_u = (u3_chan*)can_u->mor_u.nex_u; + } + else { + for ( inn_u = san_u->can_u; inn_u; inn_u = (u3_chan*)inn_u->mor_u.nex_u ) { + if ( (u3_chan*)inn_u->mor_u.nex_u == can_u ) { + inn_u->mor_u.nex_u = can_u->mor_u.nex_u; + break; + } + } + } + can_u->mor_u.nex_u = NULL; + + if ( NULL == san_u->can_u && c3y == gen_u->liv_o ) { + // send a close event to arvo and stop reading. + // + u3_noun wir, cad, dev, dat, mar; + + wir = u3nc(c3__lick, u3_nul); + dev = _lick_string_to_path(gen_u->nam_c+1); + mar = u3i_string("disconnect"); + dat = u3_nul; + + cad = u3nq(c3__soak, dev, mar, dat); + + u3_auto_peer( + u3_auto_plan(&lic_u->car_u, + u3_ovum_init(0, c3__l, wir, cad)), + 0, 0, 0); + } + + u3_newt_moat_stop((u3_moat*)&can_u->mor_u, _lick_moat_free); +} + +/* _lick_moor_bail(): error callback for u3_moor. +*/ +static void +_lick_moor_bail(void* ptr_v, ssize_t err_i, const c3_c* err_c) +{ + u3_chan* can_u = (u3_chan*)ptr_v; + + if ( err_i != UV_EOF ) { + u3l_log("lick: moor bail %zd %s", err_i, err_c); + if ( _(can_u->liv_o) ) { + _lick_send_noun(can_u, u3nq(0, c3__bail, u3i_word(err_i), + u3i_string(err_c))); + can_u->liv_o = c3n; + } + } + _lick_close_chan(can_u); +} + +/* _lick_sock_cb(): socket connection callback. +*/ +static void +_lick_sock_cb(uv_stream_t* sem_u, c3_i tas_i) +{ + u3_shan* san_u = (u3_shan*)sem_u; + u3_port* gen_u = san_u->gen_u; + u3_chan* can_u; + c3_i err_i; + + can_u = c3_calloc(sizeof(u3_chan)); + can_u->mor_u.ptr_v = can_u; + can_u->mor_u.pok_f = _lick_moor_poke; + can_u->mor_u.bal_f = _lick_moor_bail; + can_u->coq_l = san_u->nex_l++; + can_u->san_u = san_u; + err_i = uv_timer_init(u3L, &can_u->mor_u.tim_u); + u3_assert(!err_i); + err_i = uv_pipe_init(u3L, &can_u->mor_u.pyp_u, 0); + u3_assert(!err_i); + err_i = uv_accept(sem_u, (uv_stream_t*)&can_u->mor_u.pyp_u); + u3_assert(!err_i); + u3_newt_read((u3_moat*)&can_u->mor_u); + can_u->mor_u.nex_u = (u3_moor*)san_u->can_u; + san_u->can_u = can_u; + gen_u->con_o = c3y; + + // only send on first connection + if ( NULL == can_u->mor_u.nex_u ) { + u3_noun dev, dat, wir, cad, mar; + wir = u3nc(c3__lick, u3_nul); + dev = _lick_string_to_path(gen_u->nam_c+1); + mar = u3i_string("connect"); + dat = u3_nul; + + cad = u3nq(c3__soak, dev, mar, dat); + u3_auto_peer( + u3_auto_plan(&gen_u->lic_u->car_u, u3_ovum_init(0, c3__l, wir, cad)), + 0, 0, 0); + } +} + +/* _lick_close_sock(): close an port's socket +*/ +static void +_lick_close_sock(u3_shan* san_u) +{ + u3_lick* lic_u = san_u->gen_u->lic_u; + + if ( NULL != san_u->can_u ) { + _lick_close_chan(san_u->can_u); + } + + c3_w len_w = strlen(lic_u->fod_c) + strlen(san_u->gen_u->nam_c) + 2; + c3_c* paf_c = c3_malloc(len_w); + c3_i wit_i; + wit_i = snprintf(paf_c, len_w, "%s/%s", lic_u->fod_c, san_u->gen_u->nam_c); + + u3_assert(wit_i > 0); + u3_assert(len_w == (c3_w)wit_i + 1); + + if ( 0 != unlink(paf_c) ) { + if ( ENOENT != errno ) { + u3l_log("lick: failed to unlink socket: %s", uv_strerror(errno)); + } + } + + uv_close((uv_handle_t*)&san_u->pyp_u, _lick_close_cb); + c3_free(paf_c); +} + +/* _lick_mkdirp(): recursive mkdir of dirname of pax_c. +*/ +static c3_o +_lick_mkdirp(c3_c* por_c) +{ + c3_c pax_c[2048]; + + strncpy(pax_c, por_c, sizeof(pax_c)); + + c3_c* fas_c = strchr(pax_c + 1, '/'); + + while ( fas_c ) { + *fas_c = 0; + if ( 0 != mkdir(pax_c, 0777) && EEXIST != errno ) { + return c3n; + } + *fas_c++ = '/'; + fas_c = strchr(fas_c, '/'); + } + return c3y; +} + +/* _lick_init_sock(): initialize socket device. +*/ +static void +_lick_init_sock(u3_shan* san_u) +{ + // the full socket path is limited to about 108 characters, + // and we want it to be relative to the pier. save our current + // path, chdir to the pier, open the socket at the desired + // path, then chdir back. hopefully there aren't any threads. + // + c3_c pax_c[2048]; + c3_i err_i; + c3_c por_c[2048] = "."; + u3_port* gen_u = san_u->gen_u; + + if ( NULL == getcwd(pax_c, sizeof(pax_c)) ) { + u3l_log("lick: getcwd: %s", uv_strerror(errno)); + u3_king_bail(); + } + if ( 0 != chdir(u3_Host.dir_c) ) { + u3l_log("lick: chdir: %s", uv_strerror(errno)); + u3_king_bail(); + } + + strcat(por_c, URB_DEV_PATH); + strcat(por_c, gen_u->nam_c); + + if ( c3y != _lick_mkdirp(por_c) ) { + u3l_log("lick: mkdir %s: %s", por_c, strerror(errno)); + goto _lick_sock_err_chdir; + } + + if ( 0 != unlink(por_c) && errno != ENOENT ) { + u3l_log("lick: unlink: %s", uv_strerror(errno)); + goto _lick_sock_err_chdir; + } + if ( 0 != (err_i = uv_pipe_init(u3L, &san_u->pyp_u, 0)) ) { + u3l_log("lick: uv_pipe_init: %s", uv_strerror(err_i)); + goto _lick_sock_err_chdir; + } + + if ( 0 != (err_i = uv_pipe_bind(&san_u->pyp_u, por_c)) ) { + u3l_log("lick: uv_pipe_bind: %s", uv_strerror(err_i)); + u3l_log("lick: uv_pipe_bind: %s", por_c); + goto _lick_sock_err_chdir; + } + if ( 0 != (err_i = uv_listen((uv_stream_t*)&san_u->pyp_u, 0, + _lick_sock_cb)) ) { + u3l_log("lick: uv_listen: %s", uv_strerror(err_i)); + goto _lick_sock_err_unlink; + } + if ( 0 != chdir(pax_c) ) { + u3l_log("lick: chdir: %s", uv_strerror(errno)); + goto _lick_sock_err_close; + } + return; + +_lick_sock_err_close: + uv_close((uv_handle_t*)&san_u->pyp_u, _lick_close_cb); +_lick_sock_err_unlink: + if ( 0 != unlink(gen_u->nam_c) ) { + u3l_log("lick: unlink: %s", uv_strerror(errno)); + } +_lick_sock_err_chdir: + if ( 0 != chdir(pax_c) ) { + u3l_log("lick: chdir: %s", uv_strerror(errno)); + } + u3_king_bail(); +} + +/* u3_lick_ef_shut(): Close an IPC port +*/ +static void +_lick_ef_shut(u3_lick* lic_u, u3_noun nam) +{ + c3_c* nam_c = _lick_it_path(nam); + + u3_port* cur_u = lic_u->gen_u; + u3_port* las_u = NULL; + + while ( NULL != cur_u ) { + if ( 0 == strcmp(cur_u->nam_c, nam_c) ) { + cur_u->liv_o = c3n; + _lick_close_sock(cur_u->san_u); + if( las_u == NULL ) { + lic_u->gen_u = cur_u->nex_u; + } + else { + las_u->nex_u = cur_u->nex_u; + } + c3_free(cur_u); + return; + } + las_u = cur_u; + cur_u = cur_u->nex_u; + } + // XX We should delete empty folders in the pier/.urb/dev path +} + + +/* u3_lick_ef_spin(): Open an IPC port +*/ +static void +_lick_ef_spin(u3_lick* lic_u, u3_noun nam) +{ + c3_c* nam_c = _lick_it_path(nam); + u3_port* las_u = lic_u->gen_u; + + while ( NULL != las_u ) { + if( 0 == strcmp(las_u->nam_c, nam_c) ) { + c3_free(nam_c); + return; + } + las_u = las_u->nex_u; + } + u3_port* gen_u = c3_calloc(sizeof(*gen_u)); + gen_u->san_u = c3_calloc(sizeof(*gen_u->san_u)); + + gen_u->lic_u = lic_u; + gen_u->san_u->gen_u = gen_u; + gen_u->nam_c = nam_c; + gen_u->con_o = c3n; + gen_u->liv_o = c3y; + + _lick_init_sock(gen_u->san_u); + gen_u ->nex_u = lic_u->gen_u; + lic_u->gen_u = gen_u; +} + +/* _lick_ef_spit(): spit effects to port +*/ +static void +_lick_ef_spit(u3_lick* lic_u, u3_noun nam, u3_noun dat) +{ + c3_c* nam_c = _lick_it_path(nam); + u3_port* gen_u = NULL; + u3_port* cur_u = lic_u->gen_u; + while (cur_u != NULL){ + if( 0 == strcmp(cur_u->nam_c, nam_c) ) { + gen_u = cur_u; + break; + } + cur_u = cur_u->nex_u; + } + if ( NULL == gen_u ) { + u3l_log("lick: spit: gen %s not found", nam_c); + u3z(dat); + return; + } + + if( c3y == gen_u->con_o ) { + _lick_send_noun(gen_u->san_u->can_u, dat); + } + else { + u3_noun dev, wir, cad, mar; + u3z(dat); + wir = u3nc(c3__lick, u3_nul); + dev = _lick_string_to_path(gen_u->nam_c+1); + mar = u3i_string("error"); + dat = u3i_string("not connected"); + cad = u3nq(c3__soak, dev, mar, dat); + u3_auto_peer( + u3_auto_plan(&gen_u->lic_u->car_u, u3_ovum_init(0, c3__l, wir, cad)), + 0, 0, 0); + } +} + + +/* _lick_io_kick(): apply effects. +*/ +static c3_o +_lick_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad) +{ + u3_lick* lic_u = (u3_lick*)car_u; + + u3_noun tag, i_wir, par; + u3_noun nam, dat, tmp; + c3_o ret_o, dev_o; + + if ( (c3n == u3r_cell(wir, &i_wir, 0)) + || (c3n == u3r_cell(cad, &tag, &tmp)) + || (c3__lick != i_wir) ) + { + ret_o = c3n; + } + else { + if ( (c3__spin == tag) ) { + _lick_ef_spin(lic_u, u3k(tmp)); // execute spin command + ret_o = c3y; + } + else if ( (c3__shut == tag) ) { + _lick_ef_shut(lic_u, u3k(tmp)); // execute shut command + ret_o = c3y; + } + else if ( c3__spit == tag ) { + if ( c3y == u3r_cell(tmp, &nam, &dat) ) { + _lick_ef_spit(lic_u, u3k(nam), u3k(dat)); + } + ret_o = c3y; + } + else { + ret_o = c3n; + } + } + + u3z(wir); + u3z(cad); + return ret_o; +} + +/* _lick_born_news(): initialization complete on %born. +*/ +static void +_lick_born_news(u3_ovum* egg_u, u3_ovum_news new_e) +{ + u3_auto* car_u = egg_u->car_u; + + if ( u3_ovum_done == new_e ) { + car_u->liv_o = c3y; + } +} + +/* _lick_born_bail(): %born is essential, retry failures. +*/ +static void +_lick_born_bail(u3_ovum* egg_u, u3_noun lud) +{ + u3l_log("lick: %%born failure;"); + u3z(lud); + u3_ovum_free(egg_u); +} + +/* _lick_io_talk(): notify %lick that we're live + * pass it a list of device names +*/ +static void +_lick_io_talk(u3_auto* car_u) +{ + u3_lick* lic_u = (u3_lick*)car_u; + u3_noun wir = u3nc(c3__lick, u3_nul); + u3_noun cad = u3nc(c3__born, u3_nul); + + u3_auto_peer( + u3_auto_plan(car_u, u3_ovum_init(0, c3__l, wir, cad)), + 0, + _lick_born_news, + _lick_born_bail); + + car_u->liv_o = c3y; +} + +/* _lick_io_exit(): close all open device files and exit +*/ +static void +_lick_io_exit(u3_auto* car_u) +{ + u3_lick* lic_u = (u3_lick*)car_u; + u3_port* cur_u = lic_u->gen_u; + u3_port* nex_u; + while ( NULL != cur_u ) { + _lick_close_sock(cur_u->san_u); + nex_u = cur_u->nex_u; + c3_free(cur_u); + cur_u = nex_u; + } + + u3s_cue_xeno_done(lic_u->sil_u); + c3_free(lic_u); +} + + +/* u3_lick(): initialize hardware control vane. +*/ +u3_auto* +u3_lick_io_init(u3_pier* pir_u) +{ + u3_lick* lic_u = c3_calloc(sizeof(*lic_u)); + + c3_c pax_c[2048] = ""; + struct stat st = {0}; + strcat(pax_c, u3_Host.dir_c); + strcat(pax_c, URB_DEV_PATH); + + if ( -1 == stat(pax_c, &st) ) { + u3l_log("lick: init mkdir %s",pax_c ); + if ( mkdir(pax_c, 0700) && (errno != EEXIST) ) { + u3l_log("lick: cannot make directory"); + u3_king_bail(); + } + } + + lic_u->sil_u = u3s_cue_xeno_init(); + lic_u->fod_c = strdup(pax_c); + + u3_auto* car_u = &lic_u->car_u; + car_u->nam_m = c3__lick; + car_u->liv_o = c3n; + car_u->io.talk_f = _lick_io_talk; + car_u->io.kick_f = _lick_io_kick; + car_u->io.exit_f = _lick_io_exit; + + return car_u; +} diff --git a/vere/pkg/vere/io/lss.c b/vere/pkg/vere/io/lss.c new file mode 100644 index 0000000..7097526 --- /dev/null +++ b/vere/pkg/vere/io/lss.c @@ -0,0 +1,391 @@ +/// @file + +#include "vere.h" +#include +#include +#include "urcrypt.h" +#include "lss.h" + +static c3_y IV[32] = {103, 230, 9, 106, 133, 174, 103, 187, 114, 243, 110, 60, 58, 245, 79, 165, 127, 82, 14, 81, 140, 104, 5, 155, 171, 217, 131, 31, 25, 205, 224, 91}; + +static void _leaf_hash(lss_hash out, c3_y* leaf_y, c3_w leaf_w, c3_d counter_d) +{ + c3_y cv[32]; + memcpy(cv, IV, 32); + c3_y block[64] = {0}; + c3_y block_len = 0; + c3_y flags = 0; + urcrypt_blake3_chunk_output(leaf_w, leaf_y, cv, block, &block_len, &counter_d, &flags); + urcrypt_blake3_compress(cv, block, block_len, counter_d, flags, block); + memcpy(out, block, 32); +} + +static void _parent_hash(lss_hash out, lss_hash left, lss_hash right) +{ + c3_y cv[32]; + memcpy(cv, IV, 32); + c3_y block[64]; + memcpy(block, left, 32); + memcpy(block + 32, right, 32); + c3_y block_len = 64; + c3_y flags = 1 << 2; // PARENT + urcrypt_blake3_compress(cv, block, block_len, 0, flags, block); + memcpy(out, block, 32); +} + +static void _subtree_root(lss_hash out, c3_y* leaf_y, c3_w leaf_w, c3_d counter_d) +{ + if ( leaf_w <= 1024 ) { + _leaf_hash(out, leaf_y, leaf_w, counter_d); + return; + } + c3_w leaves_w = (leaf_w + 1023) / 1024; + c3_w mid_w = 1 << (c3_bits_word(leaves_w-1) - 1); + lss_hash l, r; + _subtree_root(l, leaf_y, (mid_w * 1024), counter_d); + _subtree_root(r, leaf_y + (mid_w * 1024), leaf_w - (mid_w * 1024), counter_d + mid_w); + _parent_hash(out, l, r); +} + +c3_w lss_proof_size(c3_w leaves) { + return 1 + c3_bits_word(leaves-1); +} + +c3_o _lss_expect_pair(c3_w leaves, c3_w i) { + return __((i != 0) && ((i + (1 << (1+c3_tz_w(i)))) < leaves)); +} + +static void _lss_builder_merge(lss_builder* bil_u, c3_w height, lss_hash l, lss_hash r) { + // whenever two subtrees are merged, insert them into the pairs array; + // if the merged tree is part of the left-side "spine" of the tree, + // instead add the right subtree to the initial proof + if ( bil_u->counter >> (height+1) ) { + c3_w i = (bil_u->counter&~((1<<(height+1))-1)) - (1<pairs[i][0], l, sizeof(lss_hash)); + memcpy(bil_u->pairs[i][1], r, sizeof(lss_hash)); + } else { + if (height == 0) { + memcpy(bil_u->proof[0], l, sizeof(lss_hash)); // proof always begins with [0, 1) + } + memcpy(bil_u->proof[height+1], r, sizeof(lss_hash)); + } +} + +void lss_builder_ingest(lss_builder* bil_u, c3_y* leaf_y, c3_w leaf_w) { + lss_hash h; + _leaf_hash(h, leaf_y, leaf_w, bil_u->counter); + c3_w height = 0; + while ( bil_u->counter&(1<trees[height], h); + _parent_hash(h, bil_u->trees[height], h); + height++; + } + memcpy(bil_u->trees[height], h, sizeof(lss_hash)); + bil_u->counter++; +} + +c3_w lss_builder_transceive(lss_builder* bil_u, c3_w steps, c3_y* jumbo_y, c3_w jumbo_w, lss_pair* pair) { + if ( pair != NULL ) { + c3_w i = bil_u->counter; + memcpy(bil_u->pairs[i][0], (*pair)[0], sizeof(lss_hash)); + memcpy(bil_u->pairs[i][1], (*pair)[1], sizeof(lss_hash)); + } + for (c3_w i = 0; (i < (1< 0); i++) { + c3_w leaf_w = c3_min(jumbo_w, 1024); + lss_builder_ingest(bil_u, jumbo_y, leaf_w); + jumbo_y += leaf_w; + jumbo_w -= leaf_w; + } + return c3_min(bil_u->counter - (1<leaves); +} + +lss_hash* lss_builder_finalize(lss_builder* bil_u) { + if ( bil_u->counter != 0 ) { + c3_w height = c3_tz_w(bil_u->counter); + lss_hash h; + memcpy(h, bil_u->trees[height], sizeof(lss_hash)); + for (height++; height < sizeof(bil_u->trees)/sizeof(lss_hash); height++) { + if ( bil_u->counter&(1<trees[height], h); + _parent_hash(h, bil_u->trees[height], h); + } + } + } + return bil_u->proof; +} + +lss_pair* lss_builder_pair(lss_builder* bil_u, c3_w i) { + if ( c3y == _lss_expect_pair(bil_u->leaves, i) ) { + return &bil_u->pairs[i]; + } + return NULL; +} + +void lss_builder_init(lss_builder* bil_u, c3_w leaves) { + bil_u->leaves = leaves; + bil_u->counter = 0; + bil_u->proof = c3_calloc(lss_proof_size(leaves) * sizeof(lss_hash)); + bil_u->pairs = c3_calloc(leaves * sizeof(lss_pair)); +} + +void lss_builder_free(lss_builder* bil_u) { + c3_free(bil_u->proof); + c3_free(bil_u->pairs); + c3_free(bil_u); +} + +lss_hash* lss_transceive_proof(lss_hash* proof, c3_w steps) { + for (c3_w i = 0; i < steps; i++) { + _parent_hash(proof[i+1], proof[i], proof[i+1]); + } + return proof + steps; +} + +static c3_o _lss_verifier_check_hash(lss_verifier* los_u, c3_w i, c3_w height, lss_hash h) +{ + // Binary numeral trees are composed of a set of perfect binary trees of + // unique heights. Unless the set consists of a single tree, there will be + // pairs that span two trees. We call these pairs "odd" because the heights of + // their children are uneven. Specifically, the left child of an odd pair has + // a greater height than the right child. + // + // When such a pair is inserted by lss_verifier_ingest, both children are + // inserted at the same height, causing right child to be in the "wrong" + // place. The abstruse bithacking below corrects for this. First, it + // calculates the positions of the odd pairs within a tree of this size. Then + // it determines how many odd pairs are directly above us, and increments the + // height accordingly. A mask is used to ensure that we only perform this + // adjustment when necessary. + c3_w odd = (1<leaves-1)) - los_u->leaves; + c3_w mask = (1<leaves-1))) - 1; + height += c3_tz_w(~((odd&~mask) >> height)); + c3_b parity = (i >> height) & 1; + return __(memcmp(los_u->pairs[height][parity], h, sizeof(lss_hash)) == 0); +} + +c3_o lss_verifier_ingest(lss_verifier* los_u, c3_y* leaf_y, c3_w leaf_w, lss_pair* pair) { + // verify leaf + /* los_u->counter++; */ + /* return c3y; */ + + lss_hash h; + _subtree_root(h, leaf_y, leaf_w, los_u->counter << los_u->steps); + if ( c3n == _lss_verifier_check_hash(los_u, los_u->counter, 0, h) ) { + return c3n; + } + // check whether pair is expected + if ( (pair != NULL) != (c3y == _lss_expect_pair(los_u->leaves, los_u->counter)) ) { + return c3n; + } else if (pair == NULL) { + los_u->counter++; + return c3y; + } + // verify and insert pair + c3_w height = c3_tz_w(los_u->counter); + c3_w start = los_u->counter + (1 << height); // first leaf "covered" by this pair + lss_hash parent_hash; + _parent_hash(parent_hash, (*pair)[0], (*pair)[1]); + if ( c3n == _lss_verifier_check_hash(los_u, start, height+1, parent_hash) ) { + return c3n; + } + memcpy(los_u->pairs[height][0], (*pair)[0], sizeof(lss_hash)); + memcpy(los_u->pairs[height][1], (*pair)[1], sizeof(lss_hash)); + los_u->counter++; + return c3y; +} + +void lss_verifier_init(lss_verifier* los_u, c3_w steps, c3_w leaves, lss_hash* proof, arena* are_u) { + c3_w proof_w = lss_proof_size(leaves); + c3_w pairs_w = c3_bits_word(leaves); + los_u->steps = steps; + los_u->leaves = leaves; + los_u->counter = 0; + los_u->pairs = new(are_u, lss_pair, pairs_w); + memcpy(los_u->pairs[0][0], proof[0], sizeof(lss_hash)); + for (c3_w i = 1; i < proof_w; i++) { + memcpy(los_u->pairs[i-1][1], proof[i], sizeof(lss_hash)); + } +} + +void lss_complete_inline_proof(lss_hash* proof, c3_y* leaf_y, c3_w leaf_w) { + _subtree_root(proof[0], leaf_y, leaf_w, 0); +} + +void lss_root(lss_hash root, lss_hash* proof, c3_w proof_w) { + memcpy(root, proof[0], sizeof(lss_hash)); + for (c3_w i = 1; i < proof_w; i++) { + _parent_hash(root, root, proof[i]); + } +} + +#ifdef LSS_TEST + +static lss_pair* _make_pair(lss_hash left, lss_hash right) +{ + lss_pair* pair = c3_malloc(sizeof(lss_pair)); + memcpy((*pair)[0], left, 32); + memcpy((*pair)[1], right, 32); + return pair; +} + +static void _test_lss_manual_verify_8() +{ + #define asrt_ok(y) if ( c3y != y ) { fprintf(stderr, "failed at %s:%u\n", __FILE__, __LINE__); exit(1); } + + c3_w dat_w = 1024 * 7 + 1; + c3_y* dat_y = c3_calloc(dat_w); + + c3_y* leaves_y[8]; + c3_w leaves_w[8]; + lss_hash leaves_h[8]; + lss_pair *pairs[8]; + + // construct leaves + for ( c3_w i = 0; i < 8; i++ ) { + leaves_y[i] = dat_y + 1024 * i; + leaves_w[i] = i < 7 ? 1024 : 1; + _leaf_hash(leaves_h[i], leaves_y[i], leaves_w[i], i); + pairs[i] = NULL; + } + // construct pairs + pairs[1] = _make_pair(leaves_h[2], leaves_h[3]); + pairs[3] = _make_pair(leaves_h[4], leaves_h[5]); + pairs[5] = _make_pair(leaves_h[6], leaves_h[7]); + lss_hash pair3_hash; + _parent_hash(pair3_hash, (*pairs[3])[0], (*pairs[3])[1]); + lss_hash pair5_hash; + _parent_hash(pair5_hash, (*pairs[5])[0], (*pairs[5])[1]); + pairs[2] = _make_pair(pair3_hash, pair5_hash); + + // construct proof + lss_hash *proof = c3_calloc(4 * sizeof(lss_hash)); + memcpy(proof[0], leaves_h[0], 32); + memcpy(proof[1], leaves_h[1], 32); + _parent_hash(proof[2], leaves_h[2], leaves_h[3]); + _parent_hash(proof[3], (*pairs[2])[0], (*pairs[2])[1]); + + // verify + lss_verifier lss_u; + memset(&lss_u, 0, sizeof(lss_verifier)); + lss_verifier_init(&lss_u, 0, 8, proof); + for ( c3_w i = 0; i < 8; i++ ) { + asrt_ok(lss_verifier_ingest(&lss_u, leaves_y[i], leaves_w[i], pairs[i])) + } + + #undef asrt_ok +} + +static void _test_lss_build_verify(c3_w dat_w) +{ + #define asrt_ok(y) if ( c3y != y ) { fprintf(stderr, "failed at %s:%u\n", __FILE__, __LINE__); exit(1); } + + c3_y* dat_y = c3_calloc(dat_w); + for ( c3_w i = 0; i < dat_w; i++ ) { + dat_y[i] = i; + } + c3_w leaves_w = (dat_w + 1023) / 1024; + + // build + lss_builder bil_u; + lss_builder_init(&bil_u, leaves_w); + for ( c3_w i = 0; i < leaves_w; i++ ) { + c3_y* leaf_y = dat_y + (i*1024); + c3_w leaf_w = (i < leaves_w - 1) ? 1024 : dat_w % 1024; + lss_builder_ingest(&bil_u, leaf_y, leaf_w); + } + lss_hash* proof = lss_builder_finalize(&bil_u); + + // verify + lss_verifier lss_u; + lss_verifier_init(&lss_u, 0, leaves_w, proof); + for ( c3_w i = 0; i < leaves_w; i++ ) { + c3_y* leaf_y = dat_y + (i*1024); + c3_w leaf_w = (i < leaves_w - 1) ? 1024 : dat_w % 1024; + lss_pair* pair = lss_builder_pair(&bil_u, i); + asrt_ok(lss_verifier_ingest(&lss_u, leaf_y, leaf_w, pair)); + } + + #undef asrt_ok +} + +static void _test_lss_build_verify_jumbo(c3_w steps, c3_w dat_w) +{ + #define asrt_ok(y) if ( c3y != y ) { fprintf(stderr, "failed at %s:%u\n", __FILE__, __LINE__); exit(1); } + + c3_y* dat_y = c3_calloc(dat_w); + for ( c3_w i = 0; i < dat_w; i++ ) { + dat_y[i] = i; + } + c3_w leaves_w = (dat_w + 1023) / 1024; + + // build + lss_builder bil_u; + lss_builder_init(&bil_u, leaves_w); + for ( c3_w i = 0; i < leaves_w; i++ ) { + c3_y* leaf_y = dat_y + (i*1024); + c3_w leaf_w = c3_min(dat_w - (i*1024), 1024); + lss_builder_ingest(&bil_u, leaf_y, leaf_w); + } + lss_hash* proof = lss_builder_finalize(&bil_u); + + // transceive up + c3_w jumbo_leaf_w = 1024 << steps; + c3_w jumbo_leaves_w = (dat_w + jumbo_leaf_w - 1) / jumbo_leaf_w; + + // verify (if possible) + if ( jumbo_leaves_w > 1 ) { + lss_verifier lss_u; + lss_verifier_init(&lss_u, steps, jumbo_leaves_w, lss_transceive_proof(proof, steps)); + for ( c3_w i = 0; i < jumbo_leaves_w; i++ ) { + c3_y* leaf_y = dat_y + (i*(1024< +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "lss.h" +#include "arena.h" + +static c3_o dop_o = c3n; + +static c3_y are_y[524288]; + +/* FILE* packs; */ +/* static c3_d tim_y[200000] = {0}; */ +/* static c3_o done = c3y; */ + +/* #define PACKET_TEST c3y */ + +// #define MESA_DEBUG c3y +//#define MESA_TEST +#define RED_TEXT "\033[0;31m" +#define DEF_TEXT "\033[0m" +#define REORDER_THRESH 5 + +#define DIRECT_ROUTE_TIMEOUT_MICROS 5000000 +#define DIRECT_ROUTE_RETRY_MICROS 1000000 +#define PIT_EXPIRE_MICROS 20000000 + +#define JUMBO_CACHE_MAX_SIZE 200000000 // 200 mb + +// logging and debug symbols +#define MESA_SYM_DESC(SYM) MESA_DESC_ ## SYM +#define MESA_SYM_FIELD(SYM) MESA_FIELD_ ## SYM +#ifdef MESA_DEBUG + #define MESA_LOG(SAM_U, SYM, ...) { SAM_U->sat_u.MESA_SYM_FIELD(SYM)++; u3l_log("mesa: (%u) %s", __LINE__, MESA_SYM_DESC(SYM)); } +#else + #define MESA_LOG(SAM_U, SYM, ...) { SAM_U->sat_u.MESA_SYM_FIELD(SYM)++; } +#endif + +typedef struct _u3_mesa_stat { + c3_w dop_w; // dropped for other reasons + c3_w ser_w; // dropped for serialisation + c3_w aut_w; // droppped for auth + c3_w apa_w; // dropped bc no interest + c3_w inv_w; // non-fatal invariant violation + c3_w dup_w; // duplicates +} u3_mesa_stat; + +#define MESA_DESC_STRANGE "dropped strange packet" +#define MESA_FIELD_STRANGE dop_w + +#define MESA_DESC_SERIAL "dropped packet (serialisation)" +#define MESA_FIELD_SERIAL ser_w + +#define MESA_DESC_AUTH "dropped packet (authentication)" +#define MESA_FIELD_AUTH aut_w + +#define MESA_DESC_INVARIANT "invariant violation" +#define MESA_FIELD_INVARIANT inv_w + +#define MESA_DESC_APATHY "dropped packet (no interest)" +#define MESA_FIELD_APATHY apa_w + +#define MESA_DESC_DUPE "dropped packet (duplicate)" +#define MESA_FIELD_DUPE dup_w + +// routing table sentinels +#define MESA_CZAR 1 // pending dns lookup +#define MESA_ROUT 2 // have route +// +// hop enum + +#define _mesa_met3_w(a_w) ((c3_bits_word(a_w) + 0x7) >> 3) + +struct _u3_mesa_pact; + +typedef struct _u3_pact_stat { + c3_y tie_y; // tries + c3_d sen_d; // last sent + c3_y sip_y; // skips +} u3_pact_stat; + +struct _u3_mesa; + +typedef struct _u3_gage { + c3_w rtt_w; // rtt + c3_w rto_w; // rto + c3_w rtv_w; // rttvar + c3_w wnd_w; // cwnd + c3_w wnf_w; // cwnd fraction + c3_w sst_w; // ssthresh + c3_w con_w; // counter + // +} u3_gage; + +struct _u3_mesa; + +typedef struct _u3_mesa_pict { + uv_udp_send_t snd_u; + struct _u3_mesa* sam_u; + u3_mesa_pact pac_u; +} u3_mesa_pict; + +typedef struct _u3_lane_state { + c3_d sen_d; // last sent date + c3_d her_d; // last heard date + c3_w rtt_w; // round-trip time + c3_w rtv_w; // round-trip time variance +} u3_lane_state; + +/* _u3_mesa: next generation networking + */ + +typedef struct _u3_pit_addr u3_pit_addr; + +typedef struct sockaddr_in sockaddr_in; + +typedef struct _u3_pit_addr { + sockaddr_in sdr_u; + u3_pit_addr* nex_p; +} u3_pit_addr; + +typedef struct _u3_pit_entry { + u3_pit_addr* adr_u; + c3_d tim_d; + arena are_u; +} u3_pit_entry; + +typedef struct _u3_shap { + c3_d hed_d; + c3_d tel_d; +} u3_shap; + + +static u3_shap u3_ship_to_shap( u3_ship ship ) +{ + return (u3_shap){ship[0], ship[1]}; +} + +static void u3_shap_to_ship( u3_ship ship, u3_shap shap ) +{ + ship[0] = shap.hed_d; + ship[1] = shap.tel_d; +} + +static void u3_free_pit( u3_pit_entry* pit_u ) +{ + arena_free(&pit_u->are_u); +} + +static void u3_free_str( u3_str key ) +{ + c3_free(key.str_c); +} + +static uint64_t u3_hash_str( u3_str key ) +{ + c3_d hash = 0xcbf29ce484222325ull; + for (c3_w i = 0; i < key.len_w; i++) { + hash = ( (unsigned char)*(key.str_c)++ ^ hash ) * 0x100000001b3ull; + } + return hash; +} + +static uint64_t u3_cmpr_str( u3_str key1, u3_str key2 ) +{ + return key1.len_w == key2.len_w && memcmp( key1.str_c, key2.str_c, key1.len_w ) == 0; +} + +static uint64_t u3_cmpr_shap( u3_shap ship1, u3_shap ship2 ) +{ + return ship1.hed_d == ship2.hed_d && ship1.tel_d == ship2.tel_d; +} + +static uint64_t u3_hash_shap(u3_shap ship) +{ + uint64_t combined = ship.hed_d ^ (ship.tel_d * 0x9e3779b97f4a7c15ull); + combined ^= combined >> 23; + combined *= 0x2127599bf4325c37ull; + combined ^= combined >> 47; + return combined; +} + +typedef struct _u3_pend_req u3_pend_req; + +#define NAME req_map +#define KEY_TY u3_str +#define HASH_FN u3_hash_str +#define CMPR_FN u3_cmpr_str +#define VAL_TY u3_pend_req* +#include "verstable.h" + +#define NAME pit_map +#define KEY_TY u3_str +#define HASH_FN u3_hash_str +#define CMPR_FN u3_cmpr_str +#define VAL_TY u3_pit_entry* +#define VAL_DTOR_FN u3_free_pit +#include "verstable.h" + +#define NAME gag_map +#define KEY_TY u3_shap +#define HASH_FN u3_hash_shap +#define CMPR_FN u3_cmpr_shap +#define VAL_TY u3_gage* +#include "verstable.h" + +typedef enum _u3_mesa_ctag { + CTAG_WAIT = 1, + CTAG_BLOCK = 2, +} u3_mesa_ctag; + + +typedef struct _u3_scry_handle { + void* vod_p; + arena are_u; +} u3_scry_handle; + +// jumbo frame cache value +// +typedef struct _u3_mesa_line { + u3_mesa_name nam_u; // full name for data, ready to serialize + u3_auth_data aut_u; // message authenticator + c3_w tob_d; // number of bytes in whole message + c3_w dat_w; // size in bytes of dat_y + c3_w len_w; // total allocated size, in bytes + c3_y* tip_y; // initial Merkle spine, nullable + c3_y* dat_y; // fragment data (1024 bytes per fragment) + c3_y* haz_y; // hash pairs (64 bytes per fragment) + arena are_u; +} u3_mesa_line; + + +static void u3_free_line( u3_mesa_line* lin_u ) +{ + // CTAG_WAIT, CTAG_BLOCK + if ( lin_u > (u3_mesa_line*)2 ) { + arena_free(&lin_u->are_u); + } +} + +#define NAME jum_map +#define KEY_TY u3_str +#define KEY_DTOR_FN u3_free_str +#define VAL_DTOR_FN u3_free_line +#define HASH_FN u3_hash_str +#define CMPR_FN u3_cmpr_str +#define VAL_TY u3_mesa_line* +#include "verstable.h" + +typedef struct _u3_peer u3_peer; + +#define NAME per_map +#define KEY_TY u3_shap +#define HASH_FN u3_hash_shap +#define CMPR_FN u3_cmpr_shap +#define VAL_TY u3_peer* +#include "verstable.h" + +typedef struct _u3_mesa { + u3_auto car_u; + u3_pier* pir_u; + union { + uv_udp_t wax_u; + uv_handle_t had_u; + }; + u3_mesa_stat sat_u; // statistics + c3_l sev_l; // XX: ?? + c3_o for_o; // is forwarding + per_map per_u; // (map ship u3_peer) + c3_d jum_d; // bytes in jumbo cache + jum_map jum_u; // jumbo cache + gag_map gag_u; // lane cache + pit_map pit_u; // (map path [our=? las=(set lane)]) + req_map req_u; // (map [rift path] u3_pend_req) + c3_c* dns_c; // turf (urb.otrg) + c3_d tim_d; // XX: remove + arena are_u; // per packet arena + arena par_u; // permanent arena + uv_timer_t tim_u; // pit clear timer +} u3_mesa; + +typedef struct _u3_peer { + u3_mesa* sam_u; // backpointer + u3_ship her_u; // who is this peer + c3_o ful_o; // has this been initialized? + sockaddr_in dan_u; // direct lane (nullable) + u3_lane_state dir_u; // direct lane state + c3_y imp_y; // galaxy @p + u3_lane_state ind_u; // indirect lane state +} u3_peer; + +typedef struct _u3_pend_req { + u3_peer* per_u; // backpointer + c3_d nex_d; // number of the next fragment to be sent + c3_d tof_d; // total number of expected fragments + c3_d tob_d; // total number of expected bytes + u3_auth_data aut_u; // message authenticator + uv_timer_t tim_u; // timehandler + c3_y* dat_y; // ((mop @ud *) lte) + c3_d hav_d; // how many fragments we've received + c3_d lef_d; // lowest fragment number currently in flight/pending + c3_d out_d; // outstanding fragments in flight + c3_d old_d; // frag num of oldest packet sent + c3_d ack_d; // highest acked fragment number + u3_gage* gag_u; // congestion control + lss_pair* mis_u; // misordered packets + lss_verifier* los_u; // Lockstep verifier + u3_mesa_pict* pic_u; // preallocated request packet + u3_pact_stat* wat_u; // ((mop @ud packet-state) lte) + u3_bitset was_u; // ((mop @ud ?) lte) + c3_c* pek_c; + c3_w pek_w; + c3_d pek_d; + // stats TODO: use + c3_d beg_d; // date when request began + arena are_u; +} u3_pend_req; + +/* + * typedef u3_mesa_req u3_noun + * [tot=@ waiting=(set @ud) missing=(set @ud) nex=@ud dat=(map @ud @)] + */ + +typedef struct _u3_cace_enty { + u3_mesa_ctag typ_y; + union { + // u03_mesa_cace_wait wat_u; + // u3_mesa_cace_item res_u; + }; +} u3_cace_enty; + +// Sent request +// because of lifecycles a u3_mesa_pact may have several libuv +// callbacks associated with it, so we can't those as callback +// instead just alloc new buffer and stick here +typedef struct _u3_seal { + uv_udp_send_t snd_u; // udp send request + u3_mesa* sam_u; + c3_w len_w; + c3_y* buf_y; + arena are_u; +} u3_seal; + +typedef struct _u3_mesa_cb_data { + u3_mesa* sam_u; + u3_mesa_name nam_u; + sockaddr_in lan_u; +} u3_mesa_cb_data; + +static c3_d +get_millis() { + struct timeval tp; + + gettimeofday(&tp, NULL); + return ((c3_d)tp.tv_sec * 1000ull) + ((c3_d)tp.tv_usec / 1000ull); + // Convert the seconds to milliseconds by multiplying by 1000 + // Convert the microseconds to milliseconds by dividing by 1000 +} + +static void +_log_buf(c3_y* buf_y, c3_w len_w) +{ + for( c3_w i_w = 0; i_w < len_w; i_w++ ) { + fprintf(stderr, "%02x", buf_y[i_w]); + } + fprintf(stderr, "\r\n"); +} + +static void +_log_gage(u3_gage* gag_u) +{ + u3l_log("gauge at %p", gag_u); + u3l_log("rtt: %f", ((double)gag_u->rtt_w / 1000)); + u3l_log("rto: %f", ((double)gag_u->rto_w / 1000)); + u3l_log("rttvar: %f", ((double)gag_u->rtv_w / 1000)); + u3l_log("cwnd: %u", gag_u->wnd_w); + u3l_log("cwnd fraction: %f", gag_u->wnf_w / (float)gag_u->wnd_w ); + u3l_log("ssthresh: %u", gag_u->sst_w); + u3l_log("counter: %u", gag_u->con_w); + //u3l_log("algorithm: %s", gag_u->alg_c); +} + +static void +_log_lane(u3_lane* lan_u) +{ + u3l_log("mesa: lane (%s,%u)", u3r_string(u3dc("scot", c3__if, u3i_word(lan_u->pip_w))), lan_u->por_s); +} + +static void _log_peer(u3_peer* per_u) +{ + if ( per_u == NULL ) { + u3l_log("NULL peer"); + return; + } + u3l_log("dir"); + u3l_log("galaxy: %s", u3r_string(u3dc("scot", 'p', per_u->imp_y))); +} + +static void +_log_pend_req(u3_pend_req* req_u) +{ + if( req_u == NULL ) { + u3l_log("pending request was NULL"); + return; + } + u3l_log("have: %"PRIu64, req_u->hav_d); + u3l_log("next: %"PRIu64, req_u->nex_d); + u3l_log("total: %" PRIu64, req_u->tof_d); + u3l_log("gage: %c", req_u->gag_u == NULL ? 'n' : 'y'); + //u3l_log("timer in: %" PRIu64 " ms", uv_timer_get_due_in(&req_u->tim_u)); +} + +static void +_log_mesa_data(u3_mesa_data dat_u) +{ + u3l_log("total bytes: %" PRIu64, dat_u.tob_d); + u3l_log("frag len: %u", dat_u.len_w); + // u3l_log("frag: %xxx", dat_u.fra_y); +} + +/* _mesa_lop(): find beginning of page containing fra_d +*/ +static inline c3_d +_mesa_lop(c3_d fra_d) +{ + return fra_d & ~((1 << u3_Host.ops_u.jum_y) - 1); +} + +static c3_d +_get_now_micros() +{ + struct timeval tim_u; + gettimeofday(&tim_u, NULL); + return ((c3_d)tim_u.tv_sec * 1000ull) + ((c3_d)tim_u.tv_usec / 1000ull); +} + +static c3_d +_abs_dif(c3_d ayy_d, c3_d bee_d) +{ + return ayy_d > bee_d ? ayy_d - bee_d : bee_d - ayy_d; +} + +static c3_d +_clamp_rto(c3_d rto_d) { + return c3_min(c3_max(rto_d, 200 * 1000), 25000 * 1000); // ~s25 max backoff +} + +static inline c3_o +_mesa_is_lane_zero(sockaddr_in lan_u) +{ + return __((lan_u.sin_addr.s_addr == 0) && (lan_u.sin_port == 0)); +} + +static c3_o +_mesa_is_direct_mode(u3_peer* per_u) +{ + c3_d now_d = _get_now_micros(); + return __(per_u->dir_u.her_d + DIRECT_ROUTE_TIMEOUT_MICROS > now_d); +} + +/* _mesa_encode_path(): produce buf_y as a parsed path +*/ +static u3_noun +_mesa_encode_path(c3_w len_w, c3_y* buf_y) +{ + u3_noun pro; + u3_noun* lit = &pro; + + { + u3_noun* hed; + u3_noun* tel; + c3_y* fub_y = buf_y; + c3_y car_y; + c3_w tem_w; + u3i_slab sab_u; + + while ( len_w-- ) { + car_y = *buf_y++; + if ( len_w == 0 ) { + buf_y++; + car_y = 47; + } + + if ( 47 == car_y ) { + tem_w = buf_y - fub_y - 1; + u3i_slab_bare(&sab_u, 3, tem_w); + sab_u.buf_w[sab_u.len_w - 1] = 0; + memcpy(sab_u.buf_y, fub_y, tem_w); + + *lit = u3i_defcons(&hed, &tel); + *hed = u3i_slab_moot(&sab_u); + lit = tel; + fub_y = buf_y; + } + } + } + + *lit = u3_nul; + + return pro; +} + +static void +_mesa_copy_auth_data(u3_auth_data* des_u, u3_auth_data* src_u) +{ + des_u->typ_e = src_u->typ_e; + switch ( des_u->typ_e ) { + case AUTH_HMAC: { + memcpy(des_u->mac_y, src_u->mac_y, 16); + } break; + case AUTH_SIGN: { + memcpy(des_u->sig_y, src_u->sig_y, 64); + } break; + case AUTH_PAIR: { + memcpy(des_u->has_y, src_u->has_y, 64); + } break; + case AUTH_NONE: { + } break; + default: u3_assert(!"unreachable"); + } +} + +static void +_mesa_copy_name(u3_mesa_name* des_u, u3_mesa_name* src_u, arena* are_u) +{ + memcpy(des_u, src_u, sizeof(u3_mesa_name)); + u3_ship_copy(des_u->her_u, src_u->her_u); + des_u->str_u.str_c = new(are_u, c3_c, src_u->str_u.len_w); + memcpy(des_u->str_u.str_c, src_u->str_u.str_c, src_u->str_u.len_w); + des_u->pat_c = des_u->str_u.str_c + (src_u->pat_c - src_u->str_u.str_c); +} + +static u3_mesa_name* +_mesa_copy_name_alloc(u3_mesa_name* src_u, arena* are_u) +{ + u3_mesa_name* des_u = new(are_u, u3_mesa_name, 1); + _mesa_copy_name(des_u, src_u, are_u); + return des_u; +} + +static u3_atom +_dire_etch_ud(c3_d num_d) +{ + c3_y hun_y[26]; + c3_y* buf_y = u3s_etch_ud_smol(num_d, hun_y); + c3_w dif_w = (c3_p)buf_y - (c3_p)hun_y; + return u3i_bytes(26 - dif_w, buf_y); // XX known-non-null +} + +/* _mesa_request_key(): produce key for request hashtable sam_u->req_p from nam_u +*/ +u3_noun +_mesa_request_key(u3_mesa_name* nam_u) +{ + u3_noun pax = _mesa_encode_path(nam_u->pat_s, (c3_y*)nam_u->pat_c); + u3_noun res = u3nc(u3i_word(nam_u->rif_w), pax); + return res; +} + +static void +_init_gage(u3_gage* gag_u) // microseconds +{ + gag_u->rto_w = 200 * 1000; // ~s1 + gag_u->rtt_w = 1000 * 1000; // ~s1 + gag_u->rtv_w = 1000 * 1000; // ~s1 + /* gag_u->rto_w = 200 * 1000; // ~s1 */ + /* gag_u->rtt_w = 82 * 1000; // ~s1 */ + /* gag_u->rtv_w = 100 * 1000; // ~s1 */ + gag_u->con_w = 0; + gag_u->wnd_w = 1; + gag_u->sst_w = 10000; +} + +/* u3_mesa_encode_lane(): serialize lane to noun +*/ +static u3_noun +u3_mesa_encode_lane(sockaddr_in lan_u) { + // [%if ip=@ port=@] + c3_w pip_w = ntohl(lan_u.sin_addr.s_addr); + c3_s por_s = ntohs(lan_u.sin_port); + return u3nt(c3__if, u3i_word(pip_w), por_s); +} + +static u3_peer* +_mesa_get_peer(u3_mesa* sam_u, u3_ship her) +{ + per_map_itr itr_u = vt_get(&sam_u->per_u, u3_ship_to_shap(her)); + if ( vt_is_end(itr_u) ) { + return NULL; + } + return itr_u.data->val; +} + +static void +_mesa_put_peer(u3_mesa* sam_u, u3_ship her_u, u3_peer* per_u) +{ + u3_shap him_u = u3_ship_to_shap(her_u); + per_map_itr itr_u = vt_get(&sam_u->per_u, him_u); + + if ( vt_is_end(itr_u) ) { + itr_u = vt_insert(&sam_u->per_u, him_u, per_u); + + if ( vt_is_end(itr_u) ) { + fprintf(stderr, "mesa: cannot allocate memory for peer, dying"); + u3_king_bail(); + } + } else { + memcpy(itr_u.data->val, per_u, sizeof(u3_peer)); + } +} + +/* _mesa_get_request(): produce pending request state for nam_u + * + * produces a NULL pointer if no pending request exists +*/ +static u3_pend_req* +_mesa_get_request(u3_mesa* sam_u, u3_mesa_name* nam_u) { + u3_str key_u = {nam_u->pat_c, nam_u->pat_s}; + req_map_itr itr_u = vt_get(&sam_u->req_u, key_u); + if ( vt_is_end(itr_u) ) { + return NULL; + } + return itr_u.data->val; +} + +static void +_mesa_del_request_cb(uv_handle_t* han_u) { + u3_pend_req* req_u = han_u->data; + arena_free(&req_u->are_u); +} + +static void +_mesa_del_request(u3_mesa* sam_u, u3_mesa_name* nam_u) { + u3_str key_u = {nam_u->pat_c, nam_u->pat_s}; + req_map_itr itr_u = vt_get(&sam_u->req_u, key_u); + + if ( vt_is_end(itr_u) ) { + return; + } + + u3_pend_req* req_u = itr_u.data->val; + vt_erase(&sam_u->req_u, key_u); + if ( (u3_pend_req*)CTAG_WAIT != req_u ) { + uv_timer_stop(&req_u->tim_u); + req_u->tim_u.data = req_u; + uv_close((uv_handle_t*)&req_u->tim_u, _mesa_del_request_cb); + } +} + +/* _mesa_put_request(): save new pending request state for nam_u +*/ +static void +_mesa_put_request(u3_mesa* sam_u, u3_mesa_name* nam_u, u3_pend_req* req_u) { + u3_str key_u = {nam_u->pat_c, nam_u->pat_s}; + req_map_itr itr_u = vt_insert(&sam_u->req_u, key_u, req_u); + + if ( vt_is_end(itr_u) ) { + fprintf(stderr, "mesa: cannot allocate memory for request, dying"); + u3_king_bail(); + } +} + +/* _ames_czar_port(): udp port for galaxy. + XX copied from io/ames.c +*/ +static c3_s +_ames_czar_port(c3_y imp_y) +{ + if ( c3n == u3_Host.ops_u.net ) { + return 31337 + imp_y; + } + else { + return 13337 + imp_y; + } +} + +static sockaddr_in +_mesa_get_direct_lane(u3_mesa* sam_u, u3_ship her_u) +{ + sockaddr_in adr_u = {0}; + adr_u.sin_family = AF_INET; + + if ( c3__czar == u3_ship_rank(her_u) ) { + c3_s por_s = _ames_czar_port(her_u[0]); + adr_u.sin_addr.s_addr = htonl(u3_Host.imp_u[her_u[0]]); + adr_u.sin_port = htons(por_s); + return adr_u; + } + + per_map_itr itr_u = vt_get(&sam_u->per_u, u3_ship_to_shap(her_u)); + if ( vt_is_end(itr_u) ) { + return adr_u; + } + + adr_u = itr_u.data->val->dan_u; + + + return adr_u; +} + +static c3_o +_mesa_lanes_equal(sockaddr_in lan_u, sockaddr_in lon_u) +{ + return __((lan_u.sin_addr.s_addr == lon_u.sin_addr.s_addr) && (lan_u.sin_port == lon_u.sin_port)); +} + +static sockaddr_in +_mesa_get_czar_lane(u3_mesa* sam_u, c3_y imp_y) +{ + c3_s por_s = _ames_czar_port(imp_y); + sockaddr_in adr_u = {0}; + adr_u.sin_family = AF_INET; + adr_u.sin_addr.s_addr = htonl(u3_Host.imp_u[imp_y]); + adr_u.sin_port = htons(por_s); + return adr_u; +} + +/* _mesa_get_lane(): get lane +*/ +static u3_gage* +_mesa_get_gage(u3_mesa* sam_u, u3_ship her_u) { + gag_map_itr itr_u = vt_get(&sam_u->gag_u, u3_ship_to_shap(her_u)); + if ( vt_is_end(itr_u) ) { + return NULL; + } + return itr_u.data->val; +} + +/* _mesa_put_gage(): put gage state in state + * +*/ +static void +_mesa_put_gage(u3_mesa* sam_u, u3_ship her_u, u3_gage* gag_u) +{ + gag_map_itr itr_u = vt_insert(&sam_u->gag_u, u3_ship_to_shap(her_u), gag_u); + if ( vt_is_end(itr_u) ) { + fprintf(stderr, "mesa: cannot allocate memory for gage, dying"); + u3_king_bail(); + } +} +// congestion control update +static void _mesa_handle_ack(u3_gage* gag_u, u3_pact_stat* pat_u) +{ + /* _log_gage(gag_u); */ + gag_u->con_w++; + + c3_d now_d = _get_now_micros(); + c3_d rtt_d = now_d < pat_u->sen_d ? 0 : now_d - pat_u->sen_d; + + c3_d err_d = _abs_dif(rtt_d, gag_u->rtt_w); + + gag_u->rtt_w = (rtt_d + (gag_u->rtt_w * 7)) >> 3; + gag_u->rtv_w = (err_d + (gag_u->rtv_w * 7)) >> 3; + gag_u->rto_w = _clamp_rto(gag_u->rtt_w + (4*gag_u->rtv_w)); + + if ( gag_u->wnd_w < gag_u->sst_w ) { + gag_u->wnd_w++; + } else if ( gag_u->wnd_w <= ++gag_u->wnf_w ) { + gag_u->wnd_w++; + gag_u->wnf_w = 0; + } +} + +static inline c3_d +_mesa_req_get_remaining(u3_pend_req* req_u) +{ + return req_u->tof_d - req_u->hav_d; +} + +static c3_d +_safe_sub(c3_d a, c3_d b) { + return a < b ? 0 : a - b; +} + +/* + * _mesa_req_get_cwnd(): produce packets to send + * + * saves next fragment number and preallocated pact into the passed pointers. + * Will not do so if returning 0 +*/ +static c3_w +_mesa_req_get_cwnd(u3_pend_req* req_u) +{ + /* c3_w liv_w = bitset_wyt(&req_u->was_u); */ + c3_w rem_w = _mesa_req_get_remaining(req_u); + /* u3l_log("rem_w %u wnd_w %u", rem_w, req_u->gag_u->wnd_w); */ + + /* u3l_log("rem_w %u", rem_w); */ + /* u3l_log("wnd_w %u", req_u->gag_u->wnd_w); */ + /* u3l_log("out_d %"PRIu64, req_u->out_d); */ + /* return c3_min(rem_w, _safe_sub(3500, req_u->out_d)); */ + c3_d ava_d = _safe_sub((c3_d)req_u->gag_u->wnd_w, req_u->out_d); + return c3_min(rem_w, ava_d); + /* return c3_min(rem_w, 5000 - req_u->out_d); */ +} + +/* _mesa_req_pact_resent(): mark packet as resent +** +*/ +static void +_mesa_req_pact_resent(u3_pend_req* req_u, u3_mesa_name* nam_u, c3_d now_d) +{ + req_u->wat_u[nam_u->fra_d].sen_d = now_d; + req_u->wat_u[nam_u->fra_d].tie_y++; +} + +/* _mesa_req_pact_sent(): mark packet as sent +** after 1-RT first packet is handled in _mesa_req_pact_init() +*/ +static void +_mesa_req_pact_sent(u3_pend_req* req_u, c3_d fra_d, c3_d now_d) +{ + if( req_u->nex_d == fra_d ) { + req_u->nex_d++; + req_u->out_d++; + } + // TODO: optional assertions? + req_u->wat_u[fra_d].sen_d = now_d; + req_u->wat_u[fra_d].sip_y = 0; + req_u->wat_u[fra_d].tie_y++; +} + +/* _ames_alloc(): libuv buffer allocator. +*/ +static void +_mesa_alloc(uv_handle_t* had_u, size_t len_i, uv_buf_t* buf) +{ + u3_mesa* sam_u = (u3_mesa*)had_u->data; + sam_u->are_u.beg = (char*)are_y; + c3_c* ptr_v = new(&sam_u->are_u, c3_c, 400000); + buf->base = ptr_v; + buf->len = 400000; +} + +/* u3_mesa_decode_lane(): deserialize noun to lane; 0.0.0.0:0 if invalid +*/ +static sockaddr_in +u3_mesa_decode_lane(u3_atom lan) { + sockaddr_in adr_u = {0}; + c3_d lan_d; + + if ( c3n == u3r_safe_chub(lan, &lan_d) || (lan_d >> 48) != 0 ) { + return adr_u; + } + + u3z(lan); + // convert incoming localhost to outgoing localhost + // + + adr_u.sin_addr.s_addr = ( u3_Host.ops_u.net == c3y ) ? + htonl((c3_w)lan_d) : htonl(0x7f000001); + adr_u.sin_port = htons((c3_s)(lan_d >> 32)); + + return adr_u; +} + +// END plagariasm zone +// +// +// +// +// +// +static void _mesa_free_seal(u3_seal* sel_u) +{ + c3_free(sel_u->buf_y); + c3_free(sel_u); +} + +static void +_mesa_send_cb(uv_udp_send_t* req_u, c3_i sas_i) +{ + u3_seal* sel_u = (u3_seal*)req_u; + u3_mesa* sam_u = sel_u->sam_u; + + if ( sas_i ) { + u3l_log("mesa: send fail_async: %s", uv_strerror(sas_i)); + //sam_u->fig_u.net_o = c3n; + } + else { + //sam_u->fig_u.net_o = c3y; + } + + _mesa_free_seal(sel_u); +} + +static void +_mesa_send_cb2(uv_udp_send_t* req_u, c3_i sas_i) +{ + if ( sas_i ) { + u3l_log("mesa: send fail_async: %s", uv_strerror(sas_i)); + //sam_u->fig_u.net_o = c3n; + } + c3_free(req_u); +} + +typedef struct _send_helper { + uv_udp_send_t snd_u; + u3_pend_req* req_u; + c3_d fra_d; +} send_helper; + +static void +_mesa_send_cb3(uv_udp_send_t* snt_u, c3_i sas_i) +{ + send_helper* snd_u = (send_helper*)snt_u; + if ( sas_i ) { + u3l_log("mesa: send fail_async: %s", uv_strerror(sas_i)); + //sam_u->fig_u.net_o = c3n; + } else { + /* _mesa_req_pact_sent(snd_u->req_u, snd_u->fra_d); */ + } + c3_free(snd_u); +} + +static c3_i _mesa_send_buf2(struct sockaddr** ads_u, uv_buf_t** bfs_u, c3_w* int_u, c3_w num_w) +{ + + /* add_u.sin_family = AF_INET; */ + + /* if ( u3_Host.ops_u.net && (add_u.sin_addr.s_addr == 0 || add_u.sin_addr.s_addr == 0xffffffff) ) { */ + /* return; */ + /* } */ + +#ifdef MESA_DEBUG + /* c3_c* sip_c = inet_ntoa(add_u.sin_addr); */ + // u3l_log("mesa: sending packet to %s:%u", sip_c, por_s); +#endif + c3_i sas_i = uv_udp_try_send2(&u3_Host.wax_u, num_w, bfs_u, int_u, ads_u, 0); + if ( sas_i < 0 ) { + u3l_log("ames: send fail_sync: %s", uv_strerror(sas_i)); + return 0; + } + return sas_i; +// else if ( sas_i < (c3_i)num_w) { +// for ( c3_i i = sas_i; i < (c3_i)num_w; i++) { +// uv_udp_send_t* req_u = c3_malloc(sizeof(*req_u)); +// uv_udp_send(req_u, &u3_Host.wax_u, bfs_u[i], 1, ads_u[0], _mesa_send_cb2); +// } +// } +} +static void _mesa_send_buf3(sockaddr_in add_u, uv_buf_t buf_u) +{ + + add_u.sin_addr.s_addr = ( u3_Host.ops_u.net == c3y ) ? add_u.sin_addr.s_addr : htonl(0x7f000001); + /* add_u.sin_family = AF_INET; */ + + if ( u3_Host.ops_u.net && (add_u.sin_addr.s_addr == 0 || add_u.sin_addr.s_addr == 0xffffffff) ) { + return; + } + +#ifdef MESA_DEBUG + // c3_c* sip_c = inet_ntoa(add_u.sin_addr); + // u3l_log("mesa: sending packet to %s:%u", sip_c, por_s); +#endif + + + uv_udp_send_t* snd_u = c3_malloc(sizeof(*snd_u)); + + c3_i sas_i = uv_udp_send((uv_udp_send_t*)snd_u, + &u3_Host.wax_u, + &buf_u, 1, + (const struct sockaddr*)&add_u, + _mesa_send_cb3); + + if ( sas_i ) { + u3l_log("ames: send fail_sync: %s", uv_strerror(sas_i)); + /*if ( c3y == sam_u->fig_u.net_o ) { + //sam_u->fig_u.net_o = c3n; + }*/ + } +} + +static void _mesa_send_buf(u3_mesa* sam_u, sockaddr_in add_u, c3_y* buf_y, c3_w len_w) +{ + + add_u.sin_addr.s_addr = ( u3_Host.ops_u.net == c3y ) ? add_u.sin_addr.s_addr : htonl(0x7f000001); + add_u.sin_family = AF_INET; + + if ( u3_Host.ops_u.net && (add_u.sin_addr.s_addr == 0 || add_u.sin_addr.s_addr == 0xffffffff) ) { + c3_free(buf_y); + return; + } + + u3_seal* sel_u = c3_calloc(sizeof(*sel_u)); + sel_u->buf_y = buf_y; + sel_u->len_w = len_w; + sel_u->sam_u = sam_u; + + + +#ifdef MESA_DEBUG + c3_c* sip_c = inet_ntoa(add_u.sin_addr); + u3l_log("mesa: sending packet to %s:%u", sip_c, ntohs(add_u.sin_port)); +#endif + + uv_buf_t buf_u = uv_buf_init((c3_c*)buf_y, len_w); + + c3_i sas_i = uv_udp_send(&sel_u->snd_u, + &u3_Host.wax_u, + &buf_u, 1, + (const struct sockaddr*)&add_u, + _mesa_send_cb); + + if ( sas_i ) { + u3l_log("ames: send fail_sync: %s", uv_strerror(sas_i)); + /*if ( c3y == sam_u->fig_u.net_o ) { + //sam_u->fig_u.net_o = c3n; + }*/ + _mesa_free_seal(sel_u); + } +} + +static void _mesa_send(u3_mesa_pict* pic_u, sockaddr_in lan_u) +{ + u3_mesa* sam_u = pic_u->sam_u; + c3_y *buf_y = c3_calloc(PACT_SIZE); + c3_w len_w = mesa_etch_pact_to_buf(buf_y, PACT_SIZE, &pic_u->pac_u); + _mesa_send_buf(sam_u, lan_u, buf_y, len_w); +} + +typedef struct _u3_mesa_request_data { + u3_mesa* sam_u; + u3_ship her_u; + u3_mesa_name* nam_u; + c3_y* buf_y; + c3_w len_w; + u3_pit_addr* las_u; + arena are_u; +} u3_mesa_request_data; + +typedef struct _u3_mesa_resend_data { + arena are_u; + uv_timer_t tim_u; + u3_mesa_request_data dat_u; + c3_y ret_y; // number of remaining retries +} u3_mesa_resend_data; + + +static void +_mesa_free_cb(uv_handle_t *han_u) +{ + u3_mesa_resend_data* res_u = han_u->data; + arena_free(&res_u->are_u); +} + +static void +_mesa_free_resend_data(u3_mesa_resend_data* res_u) +{ + uv_timer_stop(&res_u->tim_u); + res_u->tim_u.data = res_u; + uv_close((uv_handle_t*)&res_u->tim_u, _mesa_free_cb); +} + +static void +_mesa_send_bufs(u3_mesa* sam_u, + u3_peer* per_u, + c3_y* buf_y, + c3_w len_w, + u3_pit_addr* las_u); + +static void +_mesa_send_modal(u3_peer* per_u, uv_buf_t buf_u, u3_pit_addr* las_u) +{ + u3_mesa* sam_u = per_u->sam_u; + c3_d now_d = _get_now_micros(); + + c3_w len_w = buf_u.len; + c3_y* sen_y = c3_calloc(len_w); + memcpy(sen_y, buf_u.base, len_w); + + u3_ship gal_u = {0}; + gal_u[0] = per_u->imp_y; + c3_o our_o = u3_ships_equal(gal_u, sam_u->pir_u->who_d); + + if ( ( c3y == _mesa_is_direct_mode(per_u) ) || + // if we are the sponsor of the ship, don't send to ourselves + (our_o == c3y) ) { + // u3l_log("mesa: direct"); + _mesa_send_buf(sam_u, per_u->dan_u, sen_y, len_w); + per_u->dir_u.sen_d = now_d; + } + else if ( las_u != NULL ) { + _mesa_send_bufs(sam_u, per_u, sen_y, len_w, las_u); + } else { + #ifdef MESA_DEBUG + /* c3_c* gal_c = u3_ship_to_string(gal_u); */ + // u3l_log("mesa: sending to %s", gal_c); + /* c3_free(gal_c); */ + #endif + // + sockaddr_in imp_u = _mesa_get_czar_lane(sam_u, per_u->imp_y); + _mesa_send_buf(sam_u, imp_u, sen_y, len_w); + per_u->ind_u.sen_d = now_d; + + if ( c3n == _mesa_is_lane_zero(per_u->dan_u) ) { + c3_y* san_y = c3_calloc(len_w); + memcpy(san_y, buf_u.base, len_w); + _mesa_send_buf(sam_u, per_u->dan_u, san_y, len_w); + per_u->dir_u.sen_d = now_d; + } + } +} + + +static uv_buf_t +_mesa_peek_buf(c3_c* pek_c, c3_d fra_d, c3_w pek_w) +// 43 +{ + if (fra_d <= 0xff) { + return uv_buf_init(pek_c+(fra_d*pek_w), pek_w); + } + if (fra_d <= 0xffff) { + return uv_buf_init( + pek_c + (0x100 * pek_w) + ((fra_d - 0x100) * (pek_w + 1)), + pek_w + 1 + ); + } + if (fra_d <= 0xffffff) { + return uv_buf_init( + pek_c + (0x100 * pek_w) + + ((fra_d - 0x100) * (pek_w + 1)) + + ((fra_d - 0x10000) * (pek_w + 3)), + pek_w + 3 + ); + } + return uv_buf_init( + pek_c + (0xff * pek_w) + + ((fra_d - 0x100) * (pek_w + 1)) + + ((fra_d - 0x10000) * (pek_w + 3)) + + ((fra_d - 0x1000000ULL) * (pek_w + 7)), + pek_w + 7 + ); +} + +static void +_try_resend(u3_pend_req* req_u, c3_d nex_d) +{ + c3_o los_o = c3n; + c3_d now_d = _get_now_micros(); + u3_mesa_pact *pac_u = &req_u->pic_u->pac_u; + + /* c3_y buf_y[PACT_SIZE]; */ + /* arena scr_u = req_u->are_u; */ + /* uv_buf_t* bfs_u = new(&scr_u, uv_buf_t, 1); */ + // c3_w i_w = 0; + for ( c3_d i_d = req_u->lef_d; i_d < nex_d; i_d++ ) { + // TODO: make fast recovery different from slow + // TODO: track skip count but not dupes, since dupes are meaningless + if ( (c3n == bitset_has(&req_u->was_u, i_d)) && + (now_d - req_u->wat_u[i_d].sen_d > req_u->gag_u->rto_w) ) { + // u3l_log("now_d %"PRIu64, now_d); + // u3l_log("sen_d %"PRIu64, req_u->wat_u[i_d].sen_d); + // u3l_log("rto_w %u", req_u->gag_u->rto_w); + los_o = c3y; + /* u3l_log("resend fra_w: %llu", i_d); */ + + uv_buf_t buf_u = _mesa_peek_buf(req_u->pek_c, i_d, req_u->pek_w); + /* if (buf_u.base < req_u->pek_c) { */ + /* u3l_log("peek overflow, dying, fragment %"PRIu64, i_d); */ + /* abort(); */ + /* } */ + /* new(&scr_u, uv_buf_t, 1); */ + /* bfs_u[i_w] = buf_u; */ + /* c3_w len_w = mesa_etch_pact_to_buf(buf_y, PACT_SIZE, pac_u); */ + /* _mesa_send_buf3(req_u->per_u->dan_u, buf_u, req_u, i_d); */ + _mesa_send_modal(req_u->per_u, buf_u, NULL); + _mesa_req_pact_resent(req_u, &pac_u->pek_u.nam_u, now_d); + // i_w++; + } + } + /* c3_w* int_u = new(&scr_u, c3_w, i_w); */ + /* struct sockaddr** ads_u = new(&scr_u, struct sockaddr*, i_w); */ + /* uv_buf_t** bus_u = new(&scr_u, uv_buf_t*, i_w); */ + /* for (c3_w j_w = 0; j_w < i_w; j_w++) { */ + /* ads_u[j_w] = (struct sockaddr*)&req_u->per_u->dan_u; */ + /* bus_u[j_w] = &bfs_u[j_w]; */ + /* int_u[j_w] = 1; */ + /* } */ + + if ( c3y == los_o ) { + /* _mesa_send_buf2(req_u->per_u->sam_u, ads_u, bus_u, int_u, i_w); */ + /* _mesa_send_buf2(req_u->per_u->sam_u, req_u->per_u->dan_u, bfs_u, i_w); */ + req_u->gag_u->sst_w = c3_max(1, req_u->gag_u->wnd_w / 2); + req_u->gag_u->wnd_w = req_u->gag_u->sst_w; + req_u->gag_u->rto_w = _clamp_rto(req_u->gag_u->rto_w * 2); + // u3l_log("loss"); + // u3l_log("resent %u", i_w); + // u3l_log("counter %u hav_d %"PRIu64 " nex_d %"PRIu64 " ack_d %"PRIu64 " lef_d %"PRIu64 " old_d %"PRIu64, req_u->los_u->counter, req_u->hav_d, req_u->nex_d, req_u->ack_d, req_u->lef_d, req_u->old_d); + // _log_gage(req_u->gag_u); + } +} + +static void +_mesa_packet_timeout(uv_timer_t* tim_u); + +// TODO rename to indicate it sets a timer +static void +_update_resend_timer(u3_pend_req *req_u) +{ + // scan in flight packets, find oldest + c3_w idx_d = req_u->lef_d; + /* c3_d now_d = _get_now_micros(); */ + /* c3_d wen_d = now_d; */ + /* for ( c3_d i = req_u->lef_d; i < req_u->nex_d; i++ ) { */ + /* // u3l_log("fra %u (%u)", i, __LINE__); */ + /* if ( c3n == bitset_has(&req_u->was_u, i) && */ + /* wen_d > req_u->wat_u[i].sen_d */ + /* ) { */ + /* wen_d = req_u->wat_u[i].sen_d; */ + /* idx_d = i; */ + /* } */ + /* } */ +/* if ( now_d == wen_d ) { */ +/* #ifdef MESA_DEBUG */ +/* /\* u3l_log("failed to find new oldest"); *\/ */ +/* #endif */ +/* } */ + /* req_u->old_d = idx_d; */ + req_u->tim_u.data = req_u; + // c3_d gap_d = req_u->wat_u[idx_d].sen_d == 0 ? + // 0 : + // now_d - req_u->wat_u[idx_d].sen_d; + c3_d next_expiry = req_u->gag_u->rto_w; + // u3l_log("next_expiry %llu", next_expiry / 1000); + // u3l_log("DUE %llu", uv_timer_get_due_in(&req_u->tim_u)); + uv_timer_start(&req_u->tim_u, _mesa_packet_timeout, next_expiry / 1000, 0); +} + +/* _mesa_packet_timeout(): callback for packet timeout +*/ +static void +_mesa_packet_timeout(uv_timer_t* tim_u) { + u3_pend_req* req_u = (u3_pend_req*)tim_u->data; + // u3l_log("old %llu nex %llu packet timed out", req_u->old_d, req_u->nex_d); + _try_resend(req_u, req_u->nex_d); + _update_resend_timer(req_u); +} + +static c3_o +_mesa_burn_misorder_queue(u3_pend_req* req_u, c3_y boq_y, c3_w ack_w) +{ + c3_d num_d; + c3_d max_d = req_u->tof_d; + c3_o res_o = c3y; + for ( num_d = 0; (num_d + ack_w) < max_d; num_d++ ) { + c3_w siz_w = (1 << (boq_y - 3)); // XX + c3_y* fra_y = req_u->dat_y + (siz_w * (ack_w + num_d)); + c3_w len_w = (num_d + ack_w) == (max_d - 1) ? req_u->tob_d % 1024 : 1024; + lss_pair* pur_u = &req_u->mis_u[ack_w + num_d]; + lss_pair* par_u = (0 == memcmp(pur_u, &(lss_pair){0}, sizeof(lss_pair))) ? NULL : &req_u->mis_u[ack_w + num_d]; + if ( c3n == bitset_has(&req_u->was_u, (num_d + ack_w)) ) { + break; + } + if ( c3y != lss_verifier_ingest(req_u->los_u, fra_y, len_w, par_u) ) { + res_o = c3n; + u3l_log("fail to burn %" PRIu64 " %" PRIu64, num_d + ack_w, req_u->tof_d); + break; + } + // u3l_log("size %u counter %u num %u fra %u inx %u lef_d %u", siz_w, req_u->los_u->counter , num_w, fra_d, (req_u->los_u->counter + num_w + 1), lef_d); + } + + // ratchet forward + /* u3l_log("burned %llu", num_d); */ + num_d++; // account for the in-ordered packet processed in _mesa_req_pact_done + req_u->lef_d += num_d; + req_u->hav_d += num_d; + + return res_o; +} + +static void +_init_lane_state(u3_lane_state* sat_u); + +/* _mesa_req_pact_done(): mark packet as done +*/ +static void +_mesa_req_pact_done(u3_pend_req* req_u, + u3_mesa_name* nam_u, + u3_mesa_data* dat_u, + c3_y hop_y, + sockaddr_in lan_u) +{ + u3_mesa* sam_u = req_u->per_u->sam_u; // needed for the MESA_LOG macro + + // received past the end of the message + if ( mesa_num_leaves(dat_u->tob_d) <= nam_u->fra_d ) { + u3l_log("strange tob_d %"PRIu64" fra_d %"PRIu64" req_u %"PRIu64, + dat_u->tob_d, nam_u->fra_d, req_u->hav_d); + MESA_LOG(sam_u, STRANGE); + // XX: is this sufficient to drop whole request + return; + } + + // received duplicate + if ( c3y == bitset_has(&req_u->was_u, nam_u->fra_d) ) { + // MESA_LOG(sam_u, DUPE); + /* _update_resend_timer(req_u); */ + return; + } + + lss_pair* par_u = NULL; + + c3_w siz_w = (1 << (nam_u->boq_y - 3)); + memcpy(req_u->dat_y + (siz_w * nam_u->fra_d), dat_u->fra_y, dat_u->len_w); + + if ( dat_u->aut_u.typ_e == AUTH_PAIR ) { + par_u = &req_u->mis_u[nam_u->fra_d]; + memcpy((*par_u)[0], dat_u->aut_u.has_y[0], sizeof(lss_hash)); + memcpy((*par_u)[1], dat_u->aut_u.has_y[1], sizeof(lss_hash)); + } + + if ( req_u->los_u->counter != nam_u->fra_d ) { + // insert into misordered queue + /* u3l_log("insert into misordered queue fra: %llu [counter %u]", */ + /* nam_u->fra_d, */ + /* req_u->los_u->counter); */ + req_u->out_d--; + bitset_put(&req_u->was_u, nam_u->fra_d); + + _mesa_handle_ack(req_u->gag_u, &req_u->wat_u[nam_u->fra_d]); + /* _try_resend(req_u, nam_u->fra_d); */ + /* _update_resend_timer(req_u); */ + return; + } + else if ( c3y != lss_verifier_ingest(req_u->los_u, dat_u->fra_y, dat_u->len_w, par_u) ) { + u3l_log("auth fail frag %"PRIu64, nam_u->fra_d); + u3l_log("nit_o %u", nam_u->nit_o); + _mesa_del_request(sam_u, nam_u); + MESA_LOG(sam_u, AUTH); + return; + } + else if ( c3y != _mesa_burn_misorder_queue(req_u, nam_u->boq_y, req_u->los_u->counter) ) { + MESA_LOG(sam_u, AUTH) + _mesa_del_request(sam_u, nam_u); + return; + } + else { + // u3l_log("about to other free"); + } + + if ( nam_u->fra_d > req_u->ack_d ) { + req_u->ack_d = nam_u->fra_d; + } + + req_u->out_d--; + bitset_put(&req_u->was_u, nam_u->fra_d); + + #ifdef MESA_DEBUG + // u3l_log("fragment %llu counter %u hav_d %llu nex_d %llu ack_d %llu lef_d %llu old_d %llu", nam_u->fra_d, req_u->los_u->counter, req_u->hav_d, req_u->nex_d, req_u->ack_d, req_u->lef_d, req_u->old_d); + #endif + + u3_lane_state* sat_u; + if ( 0 == hop_y && (c3n == _mesa_lanes_equal(lan_u, req_u->per_u->dan_u)) ) { + req_u->per_u->dan_u = lan_u; + sat_u = &req_u->per_u->dir_u; + _init_lane_state(sat_u); + } + else { + sat_u = &req_u->per_u->ind_u; + } + sat_u->her_d = _get_now_micros(); + + // handle gauge update + _mesa_handle_ack(req_u->gag_u, &req_u->wat_u[nam_u->fra_d]); + + // XX FIXME? + /* _try_resend(req_u, nam_u->fra_d); */ + _update_resend_timer(req_u); +} + +static sockaddr_in +_realise_lane(u3_noun lan) { + sockaddr_in lan_u = {0}; + lan_u.sin_family = AF_INET; + + if ( c3y == u3a_is_cat(lan) ) { + // u3_assert( lan < 256 ); + if ( (c3n == u3_Host.ops_u.net) ) { + lan_u.sin_addr.s_addr = htonl(0x7f000001); + lan_u.sin_port = htons(_ames_czar_port(lan)); + } else { + lan_u.sin_addr.s_addr = htonl(u3_Host.imp_u[lan]); + lan_u.sin_port = htons(_ames_czar_port(lan)); + } + } else { + u3_noun tag, pip, por; + u3x_trel(lan, &tag, &pip, &por); + if ( tag == c3__if ) { + lan_u.sin_addr.s_addr = htonl(u3r_word(0, pip)); + u3_assert( c3y == u3a_is_cat(por) && por <= 0xFFFF); + lan_u.sin_port = htons(por); + } else { + u3l_log("mesa: inscrutable lane"); + } + + } + u3z(lan); + return lan_u; +} + +static void +_mesa_send_bufs(u3_mesa* sam_u, + u3_peer* per_u, // null for response packets + c3_y* buf_y, + c3_w len_w, + u3_pit_addr* las_u) +{ + + u3_pit_addr* t = las_u; + while ( NULL != t ) { + sockaddr_in lan_u = t->sdr_u; + + if ( !lan_u.sin_port ) { + u3l_log("mesa: failed to realise lane"); + } else { + c3_y* sen_y = c3_calloc(len_w); + memcpy(sen_y, buf_y, len_w); + _mesa_send_buf(sam_u, lan_u, sen_y, len_w); + if ( per_u && (c3y == _mesa_lanes_equal(lan_u, per_u->dan_u)) ) { + per_u->dir_u.sen_d = _get_now_micros(); + } + } + t = t->nex_p; + } +} + +static u3_pit_entry* +_mesa_get_pit(u3_mesa* sam_u, u3_mesa_name* nam_u) +{ + pit_map_itr itr_u = vt_get(&sam_u->pit_u, nam_u->str_u); + if ( vt_is_end(itr_u) ) { + return NULL; + } + return itr_u.data->val; +} + +static void +_mesa_del_pit(u3_mesa* sam_u, u3_mesa_name* nam_u) +{ + /* u3l_log("deleting %llu", nam_u->fra_d); */ + vt_erase(&sam_u->pit_u, nam_u->str_u); +} + +static void +_mesa_add_lane_to_pit(u3_mesa* sam_u, u3_mesa_name* nam_u, sockaddr_in lan_u) +{ + pit_map_itr itr_u = vt_get(&sam_u->pit_u, nam_u->str_u); + + c3_d now_d = _get_now_micros(); + + if ( vt_is_end(itr_u) ) { + arena are_u = arena_create(16384); + u3_pit_entry* ent_u = new(&are_u, u3_pit_entry, 1); + ent_u->are_u = are_u; + ent_u->tim_d = now_d; + u3_pit_addr* adr_u = new(&ent_u->are_u, u3_pit_addr, 1); + adr_u->nex_p = 0; + adr_u->sdr_u = lan_u; + ent_u->adr_u = adr_u; + + c3_c* str_c = new(&ent_u->are_u, c3_c, nam_u->str_u.len_w); + memcpy(str_c, nam_u->str_u.str_c, nam_u->str_u.len_w); + u3_str str_u = {str_c, nam_u->str_u.len_w}; + + itr_u = vt_insert(&sam_u->pit_u, str_u, ent_u); + + if ( vt_is_end(itr_u) ) { + fprintf(stderr, "mesa: cannot allocate memory for pit, dying"); + u3_king_bail(); + } + + } + else { + u3_pit_entry* ent_u = itr_u.data->val; + ent_u->tim_d = now_d; + u3_pit_addr* old_u = ent_u->adr_u; + while (old_u) { + if ( c3y == _mesa_lanes_equal(lan_u, old_u->sdr_u) ) { + return; + } + old_u = old_u->nex_p; + } + + u3_pit_addr* adr_u = new(&ent_u->are_u, u3_pit_addr, 1); + adr_u->sdr_u = lan_u; + u3_pit_addr* tmp_u = ent_u->adr_u; + adr_u->nex_p = tmp_u; + ent_u->adr_u = adr_u; + } + return; +} + +static void +_mesa_resend_timer_cb(uv_timer_t* tim_u) +{ + u3_mesa_resend_data* res_u = tim_u->data; + u3_mesa_request_data* dat_u = &res_u->dat_u; + res_u->ret_y--; + + u3_pend_req* pit_u = _mesa_get_request(dat_u->sam_u, dat_u->nam_u); + if ( (u3_pend_req*)CTAG_WAIT != pit_u ) { + #ifdef MESA_DEBUG + // u3l_log("mesa: resend PIT entry gone %u", res_u->ret_y); + #endif + _mesa_free_resend_data(res_u); + return; + } + else { + #ifdef MESA_DEBUG + u3l_log("mesa: resend %u", res_u->ret_y); + #endif + } + + _mesa_send_bufs(dat_u->sam_u, + NULL, + dat_u->buf_y, + dat_u->len_w, + dat_u->las_u); + + if ( res_u->ret_y ) { + uv_timer_start(&res_u->tim_u, _mesa_resend_timer_cb, 1000, 0); + } + else { + _mesa_del_request(res_u->dat_u.sam_u, res_u->dat_u.nam_u); + _mesa_free_resend_data(res_u); + } +} + +static u3_pit_addr* +_mesa_lanes_to_addrs(u3_noun las, arena* are_u) { + u3_pit_addr* adr_u = NULL; + u3_noun lan, t = las; + while ( t != u3_nul ) { + u3x_cell(t, &lan, &t); + u3_pit_addr* new_u = new(are_u, u3_pit_addr, 1); + new_u->sdr_u = _realise_lane(u3k(lan)); + new_u->nex_p = adr_u; + adr_u = new_u; + } + return adr_u; +} + +static void +_mesa_hear(u3_mesa* sam_u, + const struct sockaddr* adr_u, + c3_w len_w, + c3_y* hun_y); + +static void time_elapsed(c3_d fra_d, c3_d total, c3_d begin, c3_d end) +{ + c3_d elapsed = end - begin; + double percent = 100.0 * ((double)elapsed / (double)total); + u3l_log(" %"PRIu64": %"PRIu64"(%.2f%%)", fra_d, elapsed, percent); +} + +static void +packet_test(u3_mesa* sam_u, c3_c* fil_c) { + FILE* fd = fopen(fil_c, "rb"); + fseek(fd, 0L, SEEK_END); + c3_d sz = ftell(fd); + c3_y* packets = c3_malloc(sz); + fseek(fd, 0L, SEEK_SET); + + const struct sockaddr adr_u = { + .sa_family = AF_INET, + .sa_data = { + 0x00, 0x50, // Port 80 in network byte order + 0xa7, 0xac, 0xa8, 0x17, // IP 167.172.168.23 + 0x00, 0x00, 0x00, 0x00, // Padding + 0x00, 0x00, 0x00, 0x00 // Padding + } + }; + + fread(packets, 1, sz, fd); + fclose(fd); + + c3_d now_d = _get_now_micros(); + c3_d tidx = 0; + + for (c3_d i = 0; i < sz;) { + c3_w len_w = *(c3_w*)(packets+i); + /* u3l_log("len_w %u i %"PRIu64, len_w, i); */ + i += 4; + _mesa_hear(sam_u, &adr_u, len_w, packets + i); + /* tim_y[tidx] = _get_now_micros(); */ + sam_u->are_u.beg = (char*)are_y; + i += len_w; + /* tidx++; */ + } + c3_d end_d = _get_now_micros(); + c3_d total_d = end_d - now_d; + /* for (c3_d i = 1; i < tidx; i++) { */ + /* time_elapsed(i, total_d, tim_y[i-1], tim_y[i]); */ + /* } */ + u3l_log("packet_test took %"PRIu64, total_d); + c3_free(packets); +} + +static void +_mesa_ef_send(u3_mesa* sam_u, u3_noun las, u3_noun pac) +{ + c3_w len_w = u3r_met(3, pac); + arena are_u = arena_create(len_w + 16384); + c3_y* buf_y = new(&are_u, c3_y, len_w); + u3r_bytes(0, len_w, buf_y, pac); + + u3_mesa_pact pac_u; + memset(&pac_u, 0x11, sizeof(pac_u)); + c3_c* err_c = mesa_sift_pact_from_buf(&pac_u, buf_y, len_w); + if ( err_c ) { + u3l_log("mesa: ef_send: sift failed: %u %s", len_w, err_c); + u3z(pac); + u3z(las); + arena_free(&are_u); + return; + } + + u3_pend_req* old_u = _mesa_get_request(sam_u, &pac_u.pek_u.nam_u); + + if (old_u) { + u3z(pac); + u3z(las); + arena_free(&are_u); + return; + } + + if ( PACT_PAGE == pac_u.hed_u.typ_y ) { + u3_pit_entry* pin_u = _mesa_get_pit(sam_u, &pac_u.pek_u.nam_u); + + if ( NULL == pin_u ) { + arena_free(&are_u); + u3z(pac); + u3z(las); + return; + } + + _mesa_send_bufs(sam_u, NULL, buf_y, len_w, pin_u->adr_u); + _mesa_del_pit(sam_u, &pac_u.pek_u.nam_u); + arena_free(&are_u); + } + else { + u3_mesa_resend_data* res_u = new(&are_u, u3_mesa_resend_data, 1); + res_u->are_u = are_u; + u3_mesa_name* nam_u = _mesa_copy_name_alloc(&pac_u.pek_u.nam_u, &res_u->are_u); + u3_mesa_request_data* dat_u = &res_u->dat_u; + { + dat_u->sam_u = sam_u; + u3_ship_copy(dat_u->her_u, nam_u->her_u); + dat_u->nam_u = nam_u; + dat_u->las_u = _mesa_lanes_to_addrs(las, &res_u->are_u); + dat_u->buf_y = buf_y; + dat_u->len_w = len_w; + } + { + res_u->ret_y = 9; + uv_timer_init(u3L, &res_u->tim_u); + } + _mesa_put_request(sam_u, nam_u, (u3_pend_req*)CTAG_WAIT); + res_u->tim_u.data = res_u; + #ifdef PACKET_TEST + packet_test(sam_u, "pages.packs"); + #else + + _mesa_send_bufs(sam_u, NULL, buf_y, len_w, dat_u->las_u); + uv_timer_start(&res_u->tim_u, _mesa_resend_timer_cb, 1000, 0); + #endif + } + + u3z(pac); + u3z(las); +} + +c3_o +_ames_kick_newt(void* sam_u, u3_noun tag, u3_noun dat); + +u3_atom +u3_ames_encode_lane(u3_lane lan); + +static void _meet_peer(u3_mesa* sam_u, u3_peer* per_u, u3_ship her_u); +static void _init_peer(u3_mesa* sam_u, u3_peer* per_u); + +static c3_o _mesa_kick(u3_mesa* sam_u, u3_noun tag, u3_noun dat) +{ + c3_o ret_o; + switch ( tag ) { + default: { + ret_o = c3n; + } break; + case c3__push: { + u3_noun las, pac; + if ( c3n == u3r_cell(dat, &las, &pac) ) { + // u3l_log(" mesa: send old"); + ret_o = c3n; + } else { + // u3l_log(" mesa: send new"); + _mesa_ef_send(sam_u, u3k(las), u3k(pac)); + ret_o = c3y; + } + } break; + case c3__send: + case c3__turf: + case c3__saxo: { + #ifdef MESA_DEBUG + c3_c* tag_c = u3r_string(tag); + /* u3l_log("mesa: send old %s", tag_c); */ + c3_free(tag_c); + #endif + ret_o = _ames_kick_newt(u3_Host.sam_u, u3k(tag), u3k(dat)); + } break; + case c3__nail: { + u3_ship who_u; + u3_ship_of_noun(who_u, u3h(dat)); + u3_peer* per_u = _mesa_get_peer(sam_u, who_u); + + if ( NULL == per_u ) { + per_u = new(&sam_u->par_u, u3_peer, 1); + _init_peer(sam_u, per_u); + } + + // XX the format of the lane %nail gives is (list (each @p address)) + // + u3_noun las = u3do("tail", u3k(dat)); + + if ( las == u3_nul ) { + per_u->dan_u = (sockaddr_in){0}; + } + else { + u3_noun lan = u3h(las); + // we either have a direct route, and a galaxy, or just one lane + if ( c3n == u3h(lan) ) { + sockaddr_in lan_u = u3_mesa_decode_lane(u3k(u3t(lan))); + per_u->dan_u = lan_u; + } else { + // delete direct lane if galaxy + per_u->dan_u = (sockaddr_in){0}; + } + } + + _meet_peer(sam_u, per_u, who_u); + + ret_o = _ames_kick_newt(u3_Host.sam_u, u3k(tag), u3k(dat)); + } break; + } + + // technically losing tag is unnecessary as it always should + // be a direct atom, but better to be strict + u3z(dat); u3z(tag); + return ret_o; +} + +static c3_o _mesa_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad) +{ + u3_mesa* sam_u = (u3_mesa*)car_u; + + u3_noun tag, dat, i_wir; + c3_o ret_o; + if ( (c3n == u3r_cell(wir, &i_wir, 0)) + || (c3__ames != i_wir) + || (c3n == u3r_cell(cad, &tag, &dat)) ) + { + ret_o = c3n; + } + else { + ret_o = _mesa_kick(sam_u, u3k(tag), u3k(dat)); + } + + u3z(wir); u3z(cad); + return ret_o; +} + +static u3_noun +_mesa_io_info(u3_auto* car_u) +{ + + return u3_nul; +} + +static void +_mesa_io_slog(u3_auto* car_u) { + u3l_log("mesa is online"); +} + +static void +_mesa_exit_cb(uv_handle_t* han_u) { + u3_mesa* sam_u = (u3_mesa*)han_u->data; + arena_free(&sam_u->par_u); +} + +static void +_mesa_io_exit(u3_auto* car_u) +{ + u3_mesa* sam_u = (u3_mesa*)car_u; + uv_timer_stop(&sam_u->tim_u); + sam_u->tim_u.data = sam_u; + uv_udp_recv_stop(&u3_Host.wax_u); + uv_close((uv_handle_t*)&sam_u->tim_u, _mesa_exit_cb); + uv_close((uv_handle_t*)&u3_Host.wax_u, 0); +} + +static void +_init_lane_state(u3_lane_state* sat_u) +{ + sat_u->sen_d = 0; + sat_u->her_d = 0; + sat_u->rtt_w = 1000000; + sat_u->rtv_w = 1000000; +} + +static void +_init_peer(u3_mesa* sam_u, u3_peer* per_u) +{ + per_u->sam_u = sam_u; + per_u->ful_o = c3n; + per_u->dan_u = (sockaddr_in){0}; + _init_lane_state(&per_u->dir_u); + per_u->imp_y = 0; + _init_lane_state(&per_u->ind_u); +} + +static u3_noun +_name_to_jumbo_scry(u3_mesa_name* nam_u) +{ + u3_noun rif = _dire_etch_ud(nam_u->rif_w); + u3_noun boq = _dire_etch_ud(31); // XX make configurable + u3_noun fag = _dire_etch_ud(0); // XX 1 + u3_noun pax = _mesa_encode_path(nam_u->pat_s, (c3_y*)nam_u->pat_c); + // u3_noun wer = nam_u->nit_o == c3y + // ? u3nc(c3__init, pax) + // : u3nt(nam_u->aut_o == c3y ? c3__auth : c3__data, fag, pax); + + // XX only boq_y of MAX JUMBO allowed + u3_noun wer = u3nt(c3__data, fag, pax); + u3_noun res = u3nc(c3__mess, u3nq(rif, c3__pact, boq, u3nc(c3__etch, wer))); + + return res; +} + + +static c3_w +_name_to_jumbo_str(u3_mesa_name* nam_u, c3_y* buf_y) +{ + u3_mesa_name tmp_u = *nam_u; + tmp_u.boq_y = 31; + tmp_u.fra_d = 0; + tmp_u.nit_o = c3n; + + u3_etcher ech_u; + etcher_init(&ech_u, buf_y, PACT_SIZE); + _mesa_etch_name(&ech_u, &tmp_u); + return ech_u.len_w; +} + +static u3_mesa_line* +_mesa_get_jumbo_cache(u3_mesa* sam_u, u3_mesa_name* nam_u) +{ + c3_y buf_y[PACT_SIZE]; + c3_w len_w = _name_to_jumbo_str(nam_u, buf_y); + u3_str str_u = {(c3_c*)buf_y, len_w}; + + jum_map_itr itr_u = vt_get(&sam_u->jum_u, str_u); + if ( vt_is_end(itr_u) ) { + return NULL; + } + return itr_u.data->val; +} + +static void +_mesa_put_jumbo_cache(u3_mesa* sam_u, u3_mesa_name* nam_u, u3_mesa_line* lin_u) +{ + c3_y* buf_y = c3_malloc(PACT_SIZE); + + c3_w len_w = _name_to_jumbo_str(nam_u, buf_y); + u3_str str_u = {(c3_c*)buf_y, len_w}; + + // CTAG_BLOCK, CTAG_WAIT + if ( lin_u > (u3_mesa_line*)2 ) { + if (sam_u->jum_d > JUMBO_CACHE_MAX_SIZE) { + vt_cleanup(&sam_u->jum_u); + sam_u->jum_d = 0; + } + + sam_u->jum_d += lin_u->tob_d; + } + + jum_map_itr itr_u = vt_insert(&sam_u->jum_u, str_u, lin_u); + + if ( vt_is_end(itr_u) ) { + fprintf(stderr, "mesa: cannot allocate memory for jumbo cache, dying"); + u3_king_bail(); + } +} + +static void +_mesa_send_pact_single(u3_mesa* sam_u, + sockaddr_in adr_u, + u3_mesa_pact* pac_u) +{ + c3_y* buf_y = c3_calloc(PACT_SIZE); + c3_w len_w = mesa_etch_pact_to_buf(buf_y, PACT_SIZE, pac_u); + _mesa_send_buf(sam_u, adr_u, buf_y, len_w); +} + +static void +_mesa_send_pact(u3_mesa* sam_u, + u3_pit_addr* las_u, + u3_peer* per_u, // null for response packets + u3_mesa_pact* pac_u) +{ + c3_y* buf_y = c3_calloc(PACT_SIZE); + c3_w len_w = mesa_etch_pact_to_buf(buf_y, PACT_SIZE, pac_u); + _mesa_send_bufs(sam_u, per_u, buf_y, len_w, las_u); +} + +static void +_mesa_send_leaf(u3_mesa* sam_u, + u3_mesa_line* lin_u, + u3_mesa_pact* pac_u, // scratchpad + c3_d fra_d, + sockaddr_in adr_u + ) +{ + u3_mesa_name* nam_u = &pac_u->pag_u.nam_u; + u3_mesa_data* dat_u = &pac_u->pag_u.dat_u; + + nam_u->fra_d = fra_d; + c3_d i_d = fra_d - (lin_u->nam_u.fra_d * (1 << u3_Host.ops_u.jum_y)); + c3_w cur_w = i_d * 1024; + dat_u->fra_y = lin_u->dat_y + cur_w; + dat_u->len_w = c3_min(lin_u->dat_w - cur_w, 1024); + + lss_pair* pair = ((lss_pair*)lin_u->haz_y) + i_d; + + if ( 0 == nam_u->fra_d ) { // XX + _mesa_copy_auth_data(&dat_u->aut_u, &lin_u->aut_u); + } else if ( 0 == memcmp(pair, &(lss_pair){0}, sizeof(lss_pair)) ) { + dat_u->aut_u.typ_e = AUTH_NONE; + } else { + dat_u->aut_u.typ_e = AUTH_PAIR; + memcpy(dat_u->aut_u.has_y, pair, sizeof(lss_pair)); + } +#ifdef MESA_DEBUG + // u3l_log(" sending leaf packet, fra_d: %"PRIu64, nam_u->fra_d); +#endif + // log_pact(pac_u); + _mesa_send_pact_single(sam_u, adr_u, pac_u); +} + +static void +_mesa_send_piece(u3_mesa* sam_u, u3_mesa_line* lin_u, u3_mesa_name* nam_u, c3_d fra_d, sockaddr_in adr_u) { + u3_mesa_pact pac_u = {0}; + u3_mesa_head* hed_u = &pac_u.hed_u; + { + hed_u->nex_y = HOP_NONE; + hed_u->pro_y = 1; + hed_u->typ_y = PACT_PAGE; + hed_u->hop_y = 0; + // mug_w varies by fragment + } + pac_u.pag_u.nam_u = *nam_u; + + u3_mesa_data* dat_u = &pac_u.pag_u.dat_u; + { + dat_u->tob_d = lin_u->tob_d; + dat_u->aut_u = lin_u->aut_u; + // aut_u, len_w, and fra_y vary by fragment + } + + c3_d mev_d = mesa_num_leaves(dat_u->tob_d); + c3_w pro_w = lss_proof_size(mev_d); + if ( 0 == nam_u->fra_d && c3y == nam_u->nit_o ) { + if ( pro_w > 1 ) { + dat_u->len_w = pro_w * sizeof(lss_hash); + c3_y* pro_y = c3_malloc(dat_u->len_w); + memcpy(pro_y, lin_u->tip_y, dat_u->len_w); + dat_u->fra_y = pro_y; + _mesa_send_pact_single(sam_u, adr_u, &pac_u); + c3_free(pro_y); + } + + // single-fragment message; just send the one data fragment + else if ( 0 == fra_d ) { + _mesa_send_leaf(sam_u, lin_u, &pac_u, 0, adr_u); + } + else { + u3l_log("mesa: weird fragment number %"PRIu64, fra_d); + } + + } else { + _mesa_send_leaf(sam_u, lin_u, &pac_u, fra_d, adr_u); + } +} + +static void +_mesa_page_scry_jumbo_cb(void* vod_p, u3_noun res) +{ + u3_scry_handle* han_u = (u3_scry_handle*)vod_p; + u3_mesa_cb_data* dat_u = (u3_mesa_cb_data*)han_u->vod_p; + u3_mesa* sam_u = dat_u->sam_u; + u3_mesa_name* nam_u = &dat_u->nam_u; + + u3_weak pag = u3r_at(7, res); + + if ( u3_none == pag ) { + // TODO: mark as dead + u3_mesa_line* lin_u = _mesa_get_jumbo_cache(sam_u, nam_u); + u3z(res); + if ( NULL == lin_u ) { + arena_free(&han_u->are_u); + return; + } + lin_u = (u3_mesa_line*)CTAG_BLOCK; + _mesa_put_jumbo_cache(sam_u, nam_u, lin_u); + arena_free(&han_u->are_u); + return; + } + u3_noun pac, pas, pof; + if ( c3n == u3r_trel(pag, &pac, &pas, &pof) || + c3n == u3a_is_pug(pac) ) { + u3l_log("mesa: jumbo frame misshapen"); + u3z(res); + arena_free(&han_u->are_u); + return; + } + + u3_mesa_line* lin_u; + { + c3_w jumbo_w = u3r_met(3, pac); + c3_y* jumbo_y = c3_calloc(jumbo_w); + u3r_bytes(0, jumbo_w, jumbo_y, pac); + + u3_mesa_pact jum_u; + c3_c* err_c = mesa_sift_pact_from_buf(&jum_u, jumbo_y, jumbo_w); + if ( err_c ) { + u3l_log("mesa: jumbo frame parse failure: %s", err_c); + arena_free(&han_u->are_u); + u3z(res); + return; + } + u3_mesa_data* dat_u = &jum_u.pag_u.dat_u; + + c3_d mev_d = mesa_num_leaves(dat_u->tob_d); // leaves in message + c3_w tip_w = // bytes in Merkle spine + (mev_d > 1 && jum_u.pag_u.nam_u.fra_d == 0)? + lss_proof_size(mev_d) * sizeof(lss_hash): + 0; + c3_w dat_w = dat_u->len_w; // bytes in fragment data in this jumbo frame + c3_w lev_w = mesa_num_leaves(dat_w); // number of leaves in this frame + c3_w haz_w = lev_w * sizeof(lss_pair); // bytes in hash pairs + c3_w len_w = tip_w + dat_w + haz_w; + + arena are_u = arena_create(sizeof(u3_mesa_line) + len_w + 2048); + + lin_u = new(&are_u, u3_mesa_line, 1); + lin_u->are_u = are_u; + _mesa_copy_name(&lin_u->nam_u, &jum_u.pek_u.nam_u, &lin_u->are_u); + lin_u->aut_u = dat_u->aut_u; + lin_u->tob_d = dat_u->tob_d; + lin_u->dat_w = dat_w; + lin_u->len_w = len_w; + lin_u->tip_y = new(&lin_u->are_u, c3_y, len_w); + lin_u->dat_y = lin_u->tip_y + tip_w; + lin_u->haz_y = lin_u->dat_y + dat_w; + memcpy(lin_u->dat_y, dat_u->fra_y, dat_u->len_w); + + c3_y* haz_y = lin_u->haz_y; + while ( pas != u3_nul ) { + u3r_bytes(0, 64, haz_y, u3h(pas)); + haz_y += 64; + pas = u3t(pas); + } + + u3r_bytes(0, tip_w, lin_u->tip_y, pof); + c3_free(jumbo_y); + + } + + _mesa_put_jumbo_cache(sam_u, nam_u, lin_u); + + u3_pit_entry* ent_u = _mesa_get_pit(sam_u, nam_u); + if ( NULL != ent_u ) { + u3_pit_addr* adr_u = ent_u->adr_u; + while (adr_u) { + _mesa_send_piece(sam_u, lin_u, nam_u, 0, adr_u->sdr_u); + adr_u = adr_u->nex_p; + } + _mesa_del_pit(sam_u, nam_u); + } + + + /* _mesa_send_jumbo_pieces(sam_u, lin_u, NULL); */ + + u3z(res); + arena_free(&han_u->are_u); + return; +} + +static void +_mesa_hear_bail(u3_ovum* egg_u, u3_noun lud) +{ + u3l_log("mesa: hear bail"); + c3_w len_w = u3qb_lent(lud); + u3l_log("len_w: %i", len_w); + if( len_w == 2 ) { + u3_pier_punt_goof("hear", u3k(u3h(lud))); + u3_pier_punt_goof("crud", u3k(u3h(u3t(lud)))); + } + u3_ovum_free(egg_u); +} + +static void +_saxo_cb(void* vod_p, u3_noun nun) +{ + u3_peer* per_u = vod_p; + u3_weak sax = u3r_at(7, nun); + + if ( sax != u3_none ) { + u3_noun her = u3h(sax); + u3_ship her_u; + u3_ship_of_noun(her_u, her); + u3_peer* new_u = _mesa_get_peer(per_u->sam_u, her_u); + if ( new_u != NULL ) { + per_u = new_u; + } else { + _mesa_put_peer(per_u->sam_u, her_u, per_u); + } + u3_mesa* sam_u = per_u->sam_u; + u3_noun gal = u3do("rear", u3k(sax)); + u3_assert( c3y == u3a_is_cat(gal) && gal < 256 ); + // both atoms guaranteed to be cats, bc we don't call unless forwarding + per_u->ful_o = c3y; + per_u->imp_y = gal; + } + + u3z(nun); +} + +static void +_forward_lanes_cb(void* vod_p, u3_noun nun) +{ + u3_peer* per_u = vod_p; + u3_mesa* sam_u = per_u->sam_u; + + u3_weak las = u3r_at(7, nun); + // u3m_p("_forward_lanes_cb", las); + + if ( las != u3_none ) { + u3_peer* new_u = _mesa_get_peer(per_u->sam_u, per_u->her_u); + if ( new_u != NULL ) { + per_u = new_u; + } + u3_noun gal = u3h(las); + u3_assert( c3y == u3a_is_cat(gal) && gal < 256 ); + // both atoms guaranteed to be cats, bc we don't call unless forwarding + per_u->ful_o = c3y; + per_u->imp_y = gal; + u3_noun sal = u3k(u3t(las)); + u3_noun lan; + while ( sal != u3_nul ) { + u3x_cell(sal, &lan, &sal); + + if ( c3n == u3a_is_cat(lan) ) { + // there should be only one lane that is not a direct atom + // + sockaddr_in lan_u = _realise_lane(u3k(lan)); + per_u->dan_u = lan_u; + } + } + u3z(sal); + _mesa_put_peer(per_u->sam_u, per_u->her_u, per_u); + } + + u3z(nun); + +} + +static void +_meet_peer(u3_mesa* sam_u, u3_peer* per_u, u3_ship her_u) +{ + u3_noun her = u3_ship_to_noun(her_u); + u3_noun gan = u3nc(u3_nul, u3_nul); + + per_u->her_u[0] = her_u[0]; + per_u->her_u[1] = her_u[1]; + + u3_noun pax = u3nc(u3dc("scot", c3__p, her), u3_nul); + u3_pier_peek_last(sam_u->pir_u, gan, c3__j, c3__saxo, pax, per_u, _saxo_cb); + +} + +static void +_get_peer_lanes(u3_mesa* sam_u, u3_peer* per_u) +{ + u3_noun her = u3_ship_to_noun(per_u->her_u); + u3_noun gan = u3nc(u3_nul, u3_nul); + u3_noun pax = u3nq(u3i_string("chums"), + u3dc("scot", 'p', her), + u3i_string("lanes"), + u3_nul); + u3m_p("pax", pax); + u3_pier_peek_last(sam_u->pir_u, gan, c3__ax, u3_nul, pax, per_u, _forward_lanes_cb); +} + +static void +_hear_peer(u3_mesa* sam_u, u3_peer* per_u, sockaddr_in lan_u, c3_o dir_o) +{ + if ( c3y == dir_o ) { + per_u->dan_u = lan_u; + per_u->dir_u.her_d = _get_now_micros(); + } else { + per_u->ind_u.her_d = _get_now_micros(); + } +} + +static void +_mesa_request_next_fragments(u3_mesa* sam_u, + u3_pend_req* req_u, + sockaddr_in lan_u) +{ + + lan_u.sin_addr.s_addr = ( u3_Host.ops_u.net == c3y ) ? lan_u.sin_addr.s_addr : htonl(0x7f000001); + + c3_w win_w = _mesa_req_get_cwnd(req_u); + u3_mesa_pict* nex_u = req_u->pic_u; + c3_w nex_d = req_u->nex_d; + /* arena scr_u = req_u->are_u; */ + /* uv_buf_t* bfs_u = new(&scr_u, uv_buf_t, win_w); */ + /* uv_buf_t** bus_u = new(&scr_u, uv_buf_t*, win_w); */ + /* struct sockaddr** ads_u = new(&scr_u, struct sockaddr*, win_w); */ + /* c3_w* int_u = new(&scr_u, c3_w, win_w); */ + c3_d now_d = _get_now_micros(); + for ( c3_w i = 0; i < win_w; i++ ) { + c3_w fra_w = nex_d + i; + if ( fra_w >= req_u->tof_d ) { + break; + } + // u3l_log("next fra_w: %u", fra_w); + nex_u->pac_u.pek_u.nam_u.fra_d = fra_w; + uv_buf_t buf_u = _mesa_peek_buf(req_u->pek_c, nex_d+i, req_u->pek_w); + if (buf_u.base < req_u->pek_c) { + u3l_log("peek overflow, dying, fragment %u", nex_d+i); + abort(); + } + mesa_etch_pact_to_buf((c3_y*)buf_u.base, buf_u.len, &nex_u->pac_u); + /* bfs_u[i] = buf_u; */ + /* bus_u[i] = &bfs_u[i]; */ + /* ads_u[i] = (struct sockaddr*)&lan_u; */ + /* int_u[i] = 1; */ + _mesa_req_pact_sent(req_u, fra_w, now_d); + + /* _mesa_send_buf3(req_u->per_u->dan_u, buf_u, req_u, fra_w); */ + _mesa_send_modal(req_u->per_u, buf_u, NULL); + /* _mesa_send(nex_u, lan_u); */ + } + /* if ( i > 0 ) { */ + /* c3_i sen_i = _mesa_send_buf2(ads_u, bus_u, int_u, i); */ + /* for (c3_w i = 0; i < sen_i; i++) { */ + /* c3_w fra_w = nex_d + i; */ + /* _mesa_req_pact_sent(req_u, fra_w, now_d); */ + /* } */ + /* } */ +} + +static void +_mesa_veri_scry_cb(void* vod_p, u3_noun nun) +{ + u3_mesa_cb_data* ver_u = vod_p; + #ifndef PACKET_TEST + u3_pend_req* req_u = _mesa_get_request(ver_u->sam_u, &ver_u->nam_u); + if ( !req_u ) { + return; + } + else if ( c3y == nun ) { // XX + _mesa_request_next_fragments(ver_u->sam_u, req_u, ver_u->lan_u); + } + else if ( c3n == nun ) { + u3l_log("mesa: packet auth failed verification"); + // TODO: wipe request state? (If this was an imposter, + // we don't want to punish the real peer.) + } + else { + u3l_log("mesa: %%veri returned strange value"); + } + #endif + c3_free(ver_u); +} + +static void +_mesa_req_pact_init(u3_mesa* sam_u, u3_mesa_pict* pic_u, sockaddr_in lan_u, u3_peer* per_u) +{ + sam_u->tim_d = _get_now_micros(); + u3_mesa_pact* pac_u = &pic_u->pac_u; + u3_mesa_name* nam_u = &pac_u->pag_u.nam_u; + u3_mesa_data* dat_u = &pac_u->pag_u.dat_u; + + u3_gage* gag_u = _mesa_get_gage(sam_u, nam_u->her_u); + if ( gag_u == NULL ) { + gag_u = new(&sam_u->par_u, u3_gage, 1); + _init_gage(gag_u); + _mesa_put_gage(sam_u, nam_u->her_u, gag_u); + u3_assert( gag_u != NULL ); + } + + // _log_gage(gag_u); + u3_mesa_pact exa_u; + exa_u.hed_u.typ_y = PACT_PEEK; + exa_u.pek_u.nam_u = *nam_u; + exa_u.pek_u.nam_u.fra_d = 0; + exa_u.pek_u.nam_u.nit_o = c3n; + exa_u.pek_u.nam_u.aut_o = c3n; + c3_w pek_w = mesa_size_pact(&exa_u); + c3_d tof_d = mesa_num_leaves(dat_u->tob_d); + c3_w pof_w = lss_proof_size(tof_d); + c3_w pairs_w = c3_bits_word(pof_w); + c3_d pek_d = dat_u->tob_d; + arena are_u = arena_create(5*dat_u->tob_d); + u3_pend_req* req_u = new(&are_u, u3_pend_req, 1); + req_u->are_u = are_u; + req_u->pic_u = new(&req_u->are_u, u3_mesa_pict, 1); + req_u->pic_u->sam_u = sam_u; + req_u->pic_u->pac_u.hed_u.typ_y = PACT_PEEK; + req_u->pic_u->pac_u.hed_u.pro_y = MESA_VER; + req_u->pic_u->pac_u.pek_u.nam_u = *(_mesa_copy_name_alloc(nam_u, &req_u->are_u)); + req_u->pic_u->pac_u.pek_u.nam_u.aut_o = c3n; + req_u->pic_u->pac_u.pek_u.nam_u.nit_o = c3n; + req_u->aut_u = dat_u->aut_u; + + uv_timer_init(u3L, &req_u->tim_u); + + u3_assert( pac_u->pag_u.nam_u.boq_y == 13 ); + req_u->gag_u = gag_u; + req_u->tob_d = dat_u->tob_d; + /* req_u->out_d = 4000; */ + req_u->out_d = 0; + req_u->tof_d = mesa_num_leaves(dat_u->tob_d); // NOTE: only correct for bloq 13! + assert( req_u->tof_d != 1 ); // these should be injected directly by _mesa_hear_page + req_u->dat_y = new(&req_u->are_u, c3_y, dat_u->tob_d); + req_u->mis_u = new(&req_u->are_u, lss_pair, tof_d); + memset(req_u->mis_u, 0, sizeof(lss_pair)*tof_d); + req_u->wat_u = new(&req_u->are_u, u3_pact_stat, req_u->tof_d + 2); + bitset_init(&req_u->was_u, req_u->tof_d, &req_u->are_u); + + // TODO: handle restart + // u3_assert( nam_u->fra_w == 0 ); + + req_u->nex_d = 0; + req_u->hav_d = 0; + req_u->lef_d = 0; + req_u->old_d = 0; + req_u->ack_d = 0; + + lss_hash* pof_u = new(&req_u->are_u, lss_hash, pof_w); + if ( dat_u->len_w != pof_w*sizeof(lss_hash) ) { + return; // TODO: handle like other auth failures + } + for ( int i = 0; i < pof_w; i++ ) { + memcpy(pof_u[i], dat_u->fra_y + (i * sizeof(lss_hash)), sizeof(lss_hash)); + } + lss_hash root; + lss_root(root, pof_u, pof_w); + req_u->los_u = new(&req_u->are_u, lss_verifier, 1); + lss_verifier_init(req_u->los_u, 0, req_u->tof_d, pof_u, &req_u->are_u); + + req_u->pek_w = pek_w; + req_u->pek_d = pek_d; + req_u->pek_c = new(&req_u->are_u, c3_c, pek_d); + + req_u->per_u = per_u; + + _mesa_put_request(sam_u, &req_u->pic_u->pac_u.pek_u.nam_u, req_u); + _update_resend_timer(req_u); + + // scry to verify auth + u3_noun typ, aut; + switch ( dat_u->aut_u.typ_e ) { + case AUTH_SIGN: + typ = c3__sign; + aut = u3dc("scot", c3__uv, u3i_bytes(64, dat_u->aut_u.sig_y)); + break; + case AUTH_HMAC: + typ = c3__hmac; + aut = u3dc("scot", c3__uv, u3i_bytes(16, dat_u->aut_u.mac_y)); + break; + default: + return; // TODO: handle like other auth failures + } + u3_noun her = u3dc("scot", c3__p, u3_ship_to_noun(nam_u->her_u)); + u3_noun rut = u3dc("scot", c3__uv, u3i_bytes(32, root)); + u3_noun pax = _mesa_encode_path(nam_u->pat_s, (c3_y*)nam_u->pat_c); + u3_noun sky = u3i_list(typ, her, aut, rut, pax, u3_none); + u3_mesa_cb_data* ver_u = c3_malloc(sizeof(u3_mesa_cb_data)); + ver_u->sam_u = sam_u; + ver_u->nam_u = req_u->pic_u->pac_u.pek_u.nam_u; + ver_u->lan_u = lan_u; + u3_pier_peek_last(sam_u->pir_u, u3_nul, c3__a, c3__veri, sky, ver_u, _mesa_veri_scry_cb); +} + +typedef struct _u3_mesa_lane_cb_data { + u3_lane lan_u; + u3_peer* per_u; +} u3_mesa_lane_cb_data; + +static void +_mesa_page_bail_cb(u3_ovum* egg_u, u3_ovum_news new_e) +{ + u3l_log("mesa: arvo page event failed"); +} + +static void +_mesa_add_hop(c3_y hop_y, u3_mesa_head* hed_u, u3_mesa_page_pact* pag_u, sockaddr_in lan_u) +{ + c3_w pip_w = ntohl(lan_u.sin_addr.s_addr); + c3_s por_s = ntohs(lan_u.sin_port); + c3_etch_word(pag_u->sot_u, pip_w); + c3_etch_short(pag_u->sot_u + 4, por_s); + hed_u->nex_y = HOP_SHORT; +} + +/* static c3_d avg_time() { */ +/* c3_d sum = 0; */ +/* c3_w i; */ +/* for (i = 0; tim_y[i] != 0; i++) { */ +/* if (tim_y[i] > 1000) { */ +/* u3l_log("dingding fra %u time %"PRIu64, i, tim_y[i]); */ +/* } */ +/* sum += tim_y[i]; */ +/* } */ +/* return sum / i; */ +/* } */ + +static void +_mesa_forward_request(u3_mesa* sam_u, u3_mesa_pict* pic_u, sockaddr_in lan_u) +{ + u3_mesa_pact* pac_u = &pic_u->pac_u; + u3_peer* per_u = _mesa_get_peer(sam_u, pac_u->pek_u.nam_u.her_u); + if ( !per_u ) { + #ifdef MESA_DEBUG + c3_c* mes = u3_ship_to_string(pac_u->pek_u.nam_u.her_u); + u3l_log("mesa: alien forward for %s; meeting ship", mes); + c3_free(mes); + #endif + per_u = new(&sam_u->par_u, u3_peer, 1); + _init_peer(sam_u, per_u); + per_u->her_u[0] = pac_u->pek_u.nam_u.her_u[0]; + per_u->her_u[1] = pac_u->pek_u.nam_u.her_u[1]; + + _get_peer_lanes(sam_u, per_u); // forward-lanes + return; + } + if ( c3y == sam_u->for_o && sam_u->pir_u->who_d[0] == per_u->imp_y ) { + // if ( c3y == sam_u->for_o ) { + sockaddr_in lin_u = _mesa_get_direct_lane(sam_u, pac_u->pek_u.nam_u.her_u); + if ( _mesa_is_lane_zero(lin_u) == c3y) { + c3_c* shp_c = u3_ship_to_string(pac_u->pek_u.nam_u.her_u); + u3l_log("zero lane for %s", shp_c); + c3_free(shp_c); + return; + } + inc_hopcount(&pac_u->hed_u); + #ifdef MESA_DEBUG + u3l_log("mesa: forward_request()"); + // _log_lane(&lan_u); + #endif + + #ifdef MESA_DEBUG + c3_c* sip_c = inet_ntoa(lin_u.sin_addr); + u3l_log("mesa: sending packet to %s:%u", sip_c, ntohs(lin_u.sin_port)); + #endif + + _mesa_add_lane_to_pit(sam_u, &pac_u->pek_u.nam_u, lan_u); + _mesa_send(pic_u, lin_u); + } +} + +static void +_mesa_hear_page(u3_mesa_pict* pic_u, sockaddr_in lan_u) +{ + #ifdef MESA_DEBUG + u3l_log("mesa: hear_page()"); + // log_pact(&pic_u->pac_u); + u3_assert( PACT_PAGE == pic_u->pac_u.hed_u.typ_y ); + #endif + + u3_mesa* sam_u = pic_u->sam_u; + u3_mesa_pact* pac_u = &pic_u->pac_u; + u3_mesa_name* nam_u = &pac_u->pag_u.nam_u; + + c3_o our_o = u3_ships_equal(nam_u->her_u, sam_u->pir_u->who_d); + + u3_peer* per_u = _mesa_get_peer(sam_u, nam_u->her_u); + c3_o new_o = c3n; + if ( NULL == per_u ) { + new_o = c3y; + per_u = new(&sam_u->par_u, u3_peer, 1); + _init_peer(sam_u, per_u); + _meet_peer(sam_u, per_u, nam_u->her_u); + } + + c3_o dir_o = __(pac_u->hed_u.hop_y == 0); + // if ( pac_u->hed_u.hop_y == 0 ) { + // u3l_log(" received direct page"); + // } else { + // u3l_log(" received forwarded page"); + // } + _hear_peer(sam_u, per_u, lan_u, dir_o); + + if ( new_o == c3y ) { + //u3l_log("new lane is direct %c", c3y == dir_o ? 'y' : 'n'); + //_log_lane(&lan_u); + } + + _mesa_put_peer(sam_u, nam_u->her_u, per_u); + + u3_pit_entry* pin_u = _mesa_get_pit(sam_u, nam_u); + + if ( NULL != pin_u ) { + #ifdef MESA_DEBUG + u3l_log(" forwarding page"); + #endif + + inc_hopcount(&pac_u->hed_u); + c3_etch_word(pac_u->pag_u.sot_u, ntohl(lan_u.sin_addr.s_addr)); + c3_etch_short(pac_u->pag_u.sot_u + 4, ntohs(lan_u.sin_port)); + + // stick next hop in packet + + _mesa_add_hop(pac_u->hed_u.hop_y, &pac_u->hed_u, &pac_u->pag_u, lan_u); + + _mesa_send_pact(sam_u, pin_u->adr_u, NULL, pac_u); + _mesa_del_pit(sam_u, nam_u); + } + + c3_d lev_d = mesa_num_leaves(pac_u->pag_u.dat_u.tob_d); + u3_pend_req* req_u = _mesa_get_request(sam_u, nam_u); + if ( !req_u ) { + return; + } + if ( (u3_pend_req*)CTAG_WAIT == req_u ) { + if (0 != nam_u->fra_d) { + return; + } + // process incoming response to ourselves + // if single-leaf message, inject directly into Arvo + c3_d lev_d = mesa_num_leaves(pac_u->pag_u.dat_u.tob_d); + if ( 1 == lev_d ) { + u3_noun cad; + { + u3_noun lan = u3_mesa_encode_lane(lan_u); + + // XX should just preserve input buffer + u3i_slab sab_u; + u3i_slab_init(&sab_u, 3, PACT_SIZE); + mesa_etch_pact_to_buf(sab_u.buf_y, PACT_SIZE, pac_u); + cad = u3nt(c3__heer, lan, u3i_slab_mint(&sab_u)); + } + + u3_noun wir = u3nc(c3__ames, u3_nul); + + u3_ovum* ovo = u3_ovum_init(0, c3__ames, wir, cad); + ovo = u3_auto_plan(&sam_u->car_u, ovo); + + // early deletion, to avoid injecting retries, + // (in case of failure, the retry timer will add it again to the PIT) + // + _mesa_del_request(sam_u, nam_u); + u3_auto_peer(ovo, 0, 0, _mesa_page_bail_cb); + return; + } + + + c3_d now_d = _get_now_micros(); + _mesa_req_pact_init(sam_u, pic_u, lan_u, per_u); + return; + } + + if ( c3y == nam_u->nit_o ) { + /* u3l_log("dupe init"); */ + return; + } + + sockaddr_in lon_u = {0}; + if ( HOP_SHORT == pac_u->hed_u.nex_y ) { + lon_u.sin_family = AF_INET; + lon_u.sin_addr.s_addr = htonl(c3_sift_word(pac_u->pag_u.sot_u)); + lon_u.sin_port = htons(c3_sift_short(pac_u->pag_u.sot_u + 4)); + } + else { + lon_u = lan_u; + } + _mesa_req_pact_done(req_u, + nam_u, + &pac_u->pag_u.dat_u, + pac_u->hed_u.hop_y, + lon_u); + // TODO: check return value before continuing? + + c3_y boq_y = 31; + // c3_o done_with_jumbo_frame = __(0 == req_u->hav_d % boq_y); + c3_o done_with_jumbo_frame = __(req_u->hav_d == req_u->tof_d); // TODO: fix for non-message-sized jumbo frames + if ( c3y == done_with_jumbo_frame ) { + u3_noun cad; + + // u3l_log(" received last packet, tof_d: %" PRIu64 " tob_d: %" PRIu64, + // req_u->tof_d, + // req_u->tob_d); + + /* c3_d now_d = _get_now_micros(); */ + /* u3l_log("%" PRIu64 " kilobytes took %f ms", */ + /* req_u->tof_d, */ + /* (now_d - sam_u->tim_d)/1000.0); */ + // u3l_log("page handling took %"PRIu64, avg_time()); + //done = c3y; + + #ifndef PACKET_TEST + { + // construct jumbo frame + u3_noun lan = u3_mesa_encode_lane(lan_u); + u3_noun pac; + { + pac_u->pag_u.nam_u.boq_y = boq_y; + pac_u->pag_u.dat_u.tob_d = req_u->tob_d; + pac_u->pag_u.nam_u.fra_d = (req_u->hav_d >> boq_y); + pac_u->pag_u.dat_u.len_w = req_u->tob_d; + pac_u->pag_u.dat_u.fra_y = req_u->dat_y; + pac_u->pag_u.dat_u.aut_u = req_u->aut_u; + + c3_y* buf_y = c3_calloc(mesa_size_pact(pac_u)); + c3_w res_w = mesa_etch_pact_to_buf(buf_y, mesa_size_pact(pac_u), pac_u); + pac = u3i_bytes(res_w, buf_y); + c3_free(buf_y); + } + cad = u3nt(c3__heer, lan, pac); + } + + + _mesa_del_request(sam_u, &pac_u->pag_u.nam_u); + + u3_auto_plan(&sam_u->car_u, + u3_ovum_init(0, c3__ames, u3nc(c3__ames, u3_nul), cad)); + #else + _mesa_del_request(sam_u, &pac_u->pag_u.nam_u); + #endif + } else if ( req_u->hav_d < lev_d ) { + _mesa_request_next_fragments(sam_u, req_u, lan_u); + } +} + +static void +_mesa_hear_peek(u3_mesa_pict* pic_u, sockaddr_in lan_u) +{ + #ifdef MESA_DEBUG + u3l_log("mesa: hear_peek()"); + u3_assert( PACT_PEEK == pic_u->pac_u.hed_u.typ_y ); + #endif + + u3_mesa_pact* pac_u = &pic_u->pac_u; + u3_mesa* sam_u = pic_u->sam_u; + c3_o our_o = u3_ships_equal(pac_u->pek_u.nam_u.her_u, sam_u->pir_u->who_d); + + if ( c3n == our_o ) { + _mesa_forward_request(sam_u, pic_u, lan_u); + return; + } + + c3_d fra_d = pac_u->pek_u.nam_u.fra_d; + c3_d bat_d = _mesa_lop(fra_d); + + pac_u->pek_u.nam_u.fra_d = bat_d; + + /* u3l_log("hear peek fra %llu", fra_d); */ + + // if we have the page, send it + u3_mesa_line* lin_u = _mesa_get_jumbo_cache(sam_u, &pac_u->pek_u.nam_u); + + if ( ( (u3_mesa_line*)CTAG_WAIT == lin_u )) { + return; + } + + if ( ( NULL != lin_u && (u3_mesa_line*)CTAG_BLOCK != lin_u)) { + _mesa_send_piece(sam_u, lin_u, &pac_u->pek_u.nam_u, fra_d, lan_u); + return; + } + + + // record interest + _mesa_add_lane_to_pit(sam_u, &pac_u->pek_u.nam_u, lan_u); + + // otherwise, if blocked or NULL scry + lin_u = (u3_mesa_line*)CTAG_WAIT; + /* _mesa_copy_name(&lin_u->nam_u, &pac_u->pek_u.nam_u); // XX */ + + _mesa_put_jumbo_cache(sam_u, &pac_u->pek_u.nam_u, lin_u); + u3_noun sky = _name_to_jumbo_scry(&pac_u->pek_u.nam_u); + u3_noun our = u3i_chubs(2, sam_u->car_u.pir_u->who_d); + u3_noun bem = u3nc(u3nt(our, u3_nul, u3nc(c3__ud, 1)), sky); + + arena are_u = arena_create(sizeof(u3_mesa_cb_data) + 1024); + u3_scry_handle* han_u = new(&are_u, u3_scry_handle, 1); + han_u->are_u = are_u; + u3_mesa_cb_data* dat_u = new(&han_u->are_u, u3_mesa_cb_data, 1); + han_u->vod_p = dat_u; + dat_u->sam_u = sam_u; + _mesa_copy_name(&dat_u->nam_u, &pac_u->pek_u.nam_u, &han_u->are_u); + + u3_pier_peek(sam_u->car_u.pir_u, u3_nul, u3k(u3nq(1, c3__beam, c3__ax, bem)), han_u, _mesa_page_scry_jumbo_cb); +} + +static void +_mesa_poke_bail_cb(u3_ovum* egg_u, u3_noun lud) +{ + // XX failure stuff here + u3l_log("mesa: poke failure"); +} + +static void +_mesa_hear_poke(u3_mesa_pict* pic_u, sockaddr_in lan_u) +{ + u3_mesa_pact* pac_u = &pic_u->pac_u; + u3_mesa* sam_u = pic_u->sam_u; + + #ifdef MESA_DEBUG + u3l_log("mesa: hear_poke()"); + u3_assert( PACT_POKE == pac_u->hed_u.typ_y ); + #endif + + c3_o our_o = u3_ships_equal(pac_u->pek_u.nam_u.her_u, sam_u->pir_u->who_d); + + if ( c3n == our_o ) { + _mesa_forward_request(sam_u, pic_u, lan_u); + return; + } + // TODO check if lane already in pit, drop dupes + _mesa_add_lane_to_pit(sam_u, &pac_u->pek_u.nam_u, lan_u); + + // XX if this lane management stuff is necessary + // it should be deferred to after successful event processing + u3_peer* per_u = _mesa_get_peer(sam_u, pac_u->pok_u.pay_u.her_u); + c3_o new_o = c3n; + if ( NULL == per_u ) { + new_o = c3y; + per_u = new(&sam_u->par_u, u3_peer, 1); + _init_peer(sam_u, per_u); + _meet_peer(sam_u, per_u, pac_u->pok_u.pay_u.her_u); + } + + c3_o dir_o = __(pac_u->hed_u.hop_y == 0); + if ( pac_u->hed_u.hop_y == 0 ) { + new_o = c3y; + _hear_peer(sam_u, per_u, lan_u, dir_o); + // u3l_log("learnt lane"); + } else { + // u3l_log("received forwarded poke"); + } + if ( new_o == c3y ) { + // u3l_log("new lane is direct %c", c3y == dir_o ? 'y' : 'n'); + // _log_lane(lan_u); + } + // XX _meet_peer, in the _saxo_cb, is already putting the peer in her_p + // + _mesa_put_peer(sam_u, pac_u->pok_u.pay_u.her_u, per_u); + + u3_pend_req* req_u = _mesa_get_request(sam_u, &pac_u->pok_u.pay_u); + if ( req_u != NULL) { + // u3l_log("req pending"); + return; + } + + u3_ovum_peer nes_f; + u3_ovum_bail bal_f; + void* ptr_v; + + u3_noun wir = u3nc(c3__ames, u3_nul); + u3_noun cad; + { + u3_noun lan = u3_mesa_encode_lane(lan_u); + u3i_slab sab_u; + u3i_slab_init(&sab_u, 3, PACT_SIZE); + + // XX should just preserve input buffer + mesa_etch_pact_to_buf(sab_u.buf_y, PACT_SIZE, pac_u); + cad = u3nt(c3__heer, lan, u3i_slab_mint(&sab_u)); + } + + u3_ovum* ovo = u3_ovum_init(0, c3__ames, wir, cad); + ovo = u3_auto_plan(&sam_u->car_u, ovo); + + // XX check request state for *payload* (in-progress duplicate) + assert(pac_u->pok_u.dat_u.tob_d); + + u3_auto_peer(ovo, 0, 0, _mesa_poke_bail_cb); +} + +void +_ames_hear(void* sam_u, + const struct sockaddr* adr_u, + c3_w len_w, + c3_y* hun_y); + +static void +_mesa_hear(u3_mesa* sam_u, + const struct sockaddr* adr_u, + c3_w len_w, + c3_y* hun_y) +{ + /* fwrite(&len_w, 4, 1, packs); */ + /* fwrite(hun_y, 1, len_w, packs); */ + // c3_d now_d = _get_now_micros(); + if ( c3n == mesa_is_new_pact(hun_y, len_w) ) { + c3_y* han_y = c3_malloc(len_w); + memcpy(han_y, hun_y, len_w); + _ames_hear(u3_Host.sam_u, adr_u, len_w, han_y); + return; + } + + u3_mesa_pict* pic_u = new(&sam_u->are_u, u3_mesa_pict, 1); + pic_u->sam_u = sam_u; + c3_c* err_c = mesa_sift_pact_from_buf(&pic_u->pac_u, hun_y, len_w); + if ( err_c ) { + u3l_log("mesa: hear: sift failed: %s", err_c); + return; + } + + sockaddr_in sdr_u = *((sockaddr_in*)adr_u); + + switch ( pic_u->pac_u.hed_u.typ_y ) { + case PACT_PEEK: { + _mesa_hear_peek(pic_u, sdr_u); + } break; + case PACT_PAGE: { + _mesa_hear_page(pic_u, sdr_u); + } break; + default: { + _mesa_hear_poke(pic_u, sdr_u); + } break; + } + // if (done == c3n) { + // if (tidx < 200000) { + // tim_y[tidx] = _get_now_micros() - now_d; + // tidx++; + // } else { + // u3l_log("peek handling took %"PRIu64, avg_time()); + // tidx = 0; + // } + // } else { + // tidx = 0; + // done = c3n; + // } +} + +static void _mesa_recv_cb(uv_udp_t* wax_u, + ssize_t nrd_i, + const uv_buf_t * buf_u, + const struct sockaddr* adr_u, + unsigned flg_i) +{ + u3_mesa* sam_u = (u3_mesa*)wax_u->data; + if ( 0 > nrd_i ) { + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("mesa: recv: fail: %s", uv_strerror(nrd_i)); + } + } + else if ( 0 == nrd_i ) { + } + else if ( flg_i & UV_UDP_PARTIAL ) { + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("mesa: recv: fail: message truncated"); + } + } + else { + _mesa_hear(wax_u->data, adr_u, (c3_w)nrd_i, (c3_y*)buf_u->base); + } +} + +static void +_mesa_io_talk(u3_auto* car_u) +{ + u3_mesa* sam_u = (u3_mesa*)car_u; + sam_u->dns_c = "urbit.org"; // TODO: receive turf + { + // XX remove [sev_l] + // + u3_noun wir = u3nc(c3__ames, u3_nul); + u3_noun cad = u3nc(c3__born, u3_nul); + + u3_auto_plan(car_u, u3_ovum_init(0, c3__a, wir, cad)); + } + u3_noun who = u3i_chubs(2, sam_u->pir_u->who_d); + u3_noun rac = u3do("clan:title", u3k(who)); + c3_s por_s = sam_u->pir_u->por_s; + c3_i ret_i; + if ( c3__czar == rac ) { + c3_y num_y = (c3_y)sam_u->pir_u->who_d[0]; + c3_s zar_s = _ames_czar_port(num_y); + + if ( 0 == por_s ) { + por_s = zar_s; + } + else if ( por_s != zar_s ) { + u3l_log("ames: czar: overriding port %d with -p %d", zar_s, por_s); + u3l_log("ames: czar: WARNING: %d required for discoverability", zar_s); + } + } + + + // Bind and stuff. + { + struct sockaddr_in add_u; + c3_i add_i = sizeof(add_u); + + memset(&add_u, 0, sizeof(add_u)); + add_u.sin_family = AF_INET; + add_u.sin_addr.s_addr = _(u3_Host.ops_u.net) ? + htonl(INADDR_ANY) : + htonl(INADDR_LOOPBACK); + add_u.sin_port = htons(por_s); + + if ( (ret_i = uv_udp_bind(&u3_Host.wax_u, + (const struct sockaddr*)&add_u, 0)) != 0 ) + { + u3l_log("mesa: bind: %s", uv_strerror(ret_i)); + + /*if ( (c3__czar == rac) && + (UV_EADDRINUSE == ret_i) ) + { + u3l_log(" ...perhaps you've got two copies of vere running?"); + }*/ + + // XX revise + // + u3_pier_bail(u3_king_stub()); + } + + uv_udp_getsockname(&u3_Host.wax_u, (struct sockaddr *)&add_u, &add_i); + u3_assert(add_u.sin_port); + + sam_u->pir_u->por_s = ntohs(add_u.sin_port); + } + if ( c3y == u3_Host.ops_u.net ) { + u3l_log("mesa: live on %d", sam_u->pir_u->por_s); + } + else { + u3l_log("mesa: live on %d (localhost only)", sam_u->pir_u->por_s); + } + + u3_Host.wax_u.data = sam_u; + uv_udp_recv_start(&u3_Host.wax_u, _mesa_alloc, _mesa_recv_cb); + + c3_i rec_i = 2 * 1024 * 1024; + uv_recv_buffer_size((uv_handle_t*)&u3_Host.wax_u, &rec_i); + + uv_send_buffer_size((uv_handle_t*)&u3_Host.wax_u, &rec_i); + + sam_u->car_u.liv_o = c3y; + //u3z(rac); u3z(who); +} + +static void _mesa_clear_pit(uv_timer_t *tim_u) +{ + u3_mesa* sam_u = (u3_mesa*)tim_u->data; + pit_map_itr itr_u = vt_first( &sam_u->pit_u ); + + c3_d now_d = _get_now_micros(); + + while (!vt_is_end(itr_u)) { + u3_pit_entry* pit_u = itr_u.data->val; + if ( (now_d - pit_u->tim_d) > PIT_EXPIRE_MICROS) { + itr_u = vt_erase_itr(&sam_u->pit_u, itr_u); + } else { + itr_u = vt_next(itr_u); + } + } +} + +/* _mesa_io_init(): initialize ames I/O. +*/ +u3_auto* +u3_mesa_io_init(u3_pier* pir_u) +{ + u3l_log("mesa: INIT"); + /* packs = fopen("/home/ec2-user/pages.packs", "rb"); */ + arena par_u = arena_create(67108864); + u3_mesa* sam_u = new(&par_u, u3_mesa, 1); + sam_u->par_u = par_u; + sam_u->pir_u = pir_u; + + arena are_u; + are_u.dat = (char*)are_y; + are_u.beg = (char*)are_y; + are_u.end = (char*)(are_y + 524288); + sam_u->are_u = are_u; + + sam_u->jum_d = 0; + + uv_timer_init(u3L, &sam_u->tim_u); + + // clear pit every 30 seconds + sam_u->tim_u.data = sam_u; + uv_timer_start(&sam_u->tim_u, _mesa_clear_pit, 30000, 30000); + + vt_init(&sam_u->pit_u); + vt_init(&sam_u->per_u); + vt_init(&sam_u->gag_u); + vt_init(&sam_u->jum_u); + vt_init(&sam_u->req_u); + + // Disable networking for fake ships + // + if ( c3y == sam_u->pir_u->fak_o ) { + u3_Host.ops_u.net = c3n; + } + + sam_u->for_o = c3n; + { + u3_noun her = u3i_chubs(2, pir_u->who_d); + if ( c3y == u3a_is_cat(her) && her < 256 ) { + u3l_log("mesa: forwarding enabled"); + sam_u->for_o = c3y; + } + u3z(her); + } + + + u3_auto* car_u = &sam_u->car_u; + memset(car_u, 0, sizeof(*car_u)); + car_u->nam_m = c3__ames; + car_u->liv_o = c3y; + car_u->io.talk_f = _mesa_io_talk; + car_u->io.info_f = _mesa_io_info; + car_u->io.slog_f = _mesa_io_slog; + car_u->io.kick_f = _mesa_io_kick; + car_u->io.exit_f = _mesa_io_exit; + + + + /*{ + u3_noun now; + struct timeval tim_u; + gettimeofday(&tim_u, 0); + + now = u3_time_in_tv(&tim_u); + //sam_u->sev_l = u3r_mug(now); + u3z(now); + }*/ + + return car_u; +} diff --git a/vere/pkg/vere/io/mesa/bitset.c b/vere/pkg/vere/io/mesa/bitset.c new file mode 100644 index 0000000..9e78689 --- /dev/null +++ b/vere/pkg/vere/io/mesa/bitset.c @@ -0,0 +1,124 @@ +#include "bitset.h" +#include + +#include "vere.h" + +void bitset_init(u3_bitset* bit_u, c3_w len_w, arena* are_u) +{ + bit_u->len_w = len_w; + bit_u->buf_y = new(are_u, c3_y, (len_w >> 3) + 1); + memset(bit_u->buf_y, 0, (len_w >> 3) + 1); +} + +static c3_y +_popcnt(c3_y num_y) +{ + return __builtin_popcount(num_y); +} + +static void +_log_bitset(u3_bitset* bit_u) +{ + c3_w cur_w = 0; + while( cur_w < bit_u->len_w ) { + if ( c3y == bitset_has(bit_u, cur_w) ) { + u3l_log("%u", cur_w); + } + cur_w++; + } +} + +c3_w +bitset_wyt(u3_bitset* bit_u) +{ + c3_w ret_w = 0; + c3_w len_w = (bit_u->len_w >> 3); + for(int i = 0; i < len_w; i++ ) { + ret_w += _popcnt(bit_u->buf_y[i]); + } + return ret_w; +} + +void bitset_put(u3_bitset* bit_u, c3_w mem_w) +{ + if (( mem_w > bit_u->len_w )) { + u3l_log("overrun %u, %u", mem_w, bit_u->len_w); + return; + } + c3_w idx_w = mem_w >> 3; + c3_w byt_y = bit_u->buf_y[idx_w]; + c3_y rem_y = mem_w & 0x7; + c3_y mas_y = (1 << rem_y); + bit_u->buf_y[idx_w] = byt_y | mas_y; +} + +c3_o +bitset_has(u3_bitset* bit_u, c3_w mem_w) { + if (( mem_w > bit_u->len_w )) { + u3l_log("overrun %u, %u", mem_w, bit_u->len_w); + return c3n; + } + + u3_assert( mem_w < bit_u->len_w ); + c3_w idx_w = mem_w >> 3; + c3_y rem_y = mem_w & 0x7; + return __( (bit_u->buf_y[idx_w] >> rem_y) & 0x1); +} + +void +bitset_del(u3_bitset* bit_u, c3_w mem_w) +{ + u3_assert( mem_w < bit_u->len_w ); + c3_w idx_w = mem_w >> 3; + c3_w byt_y = bit_u->buf_y[idx_w]; + c3_y rem_y = mem_w & 0x7; + c3_y mas_y = ~(1 << rem_y); + bit_u->buf_y[idx_w] &= mas_y; +} + + + + +#ifdef BITSET_TEST +c3_w main() +{ + u3_bitset bit_u; + bitset_init(&bit_u, 500); + + bitset_put(&bit_u, 5); + bitset_put(&bit_u, 50); + bitset_put(&bit_u, 100); + + c3_w wyt_w = bitset_wyt(&bit_u); + if ( 3 != wyt_w ) { + u3l_log("wyt failed have %u expect %u", wyt_w, 3); + exit(1); + } + + if ( c3y == bitset_has(&bit_u, 3) ) { + u3l_log("false positive for has_bitset"); + exit(1); + } + + if ( c3n == bitset_has(&bit_u, 50) ) { + u3l_log("false negative for has_bitset"); + exit(1); + } + + bitset_del(&bit_u, 50); + + if ( c3y == bitset_has(&bit_u, 50) ) { + u3l_log("false positive for has_bitset"); + exit(1); + } + + wyt_w = bitset_wyt(&bit_u); + + if ( 2 != wyt_w ) { + u3l_log("wyt failed have %u expect %u", wyt_w, 2); + exit(1); + } + return 0; +} + +#endif diff --git a/vere/pkg/vere/io/mesa/bitset.h b/vere/pkg/vere/io/mesa/bitset.h new file mode 100644 index 0000000..ed523b8 --- /dev/null +++ b/vere/pkg/vere/io/mesa/bitset.h @@ -0,0 +1,24 @@ +#ifndef VERE_BITSET_H +#define VERE_BITSET_H + +#include "c3/c3.h" +#include "arena.h" + +typedef struct _u3_bitset { + c3_w len_w; + c3_y* buf_y; +} u3_bitset; + +void bitset_init(u3_bitset* bit_u, c3_w len_w, arena* are_u); + +void bitset_free(u3_bitset* bit_u); + +c3_w bitset_wyt(u3_bitset* bit_u); + +void bitset_put(u3_bitset* bit_u, c3_w mem_w); + +c3_o bitset_has(u3_bitset* bit_u, c3_w mem_w); + +void bitset_del(u3_bitset* bit_u, c3_w mem_w); + +#endif diff --git a/vere/pkg/vere/io/mesa/mesa.h b/vere/pkg/vere/io/mesa/mesa.h new file mode 100644 index 0000000..c7c3d07 --- /dev/null +++ b/vere/pkg/vere/io/mesa/mesa.h @@ -0,0 +1,175 @@ +#ifndef VERE_MESA_H +#define VERE_MESA_H + +#include "c3/c3.h" +#include "ship.h" + +#define MESA_VER 1 +#define FINE_PAGE 4096 // packets per page +#define FINE_FRAG 1024 // bytes per fragment packet +#define FINE_PATH_MAX 384 // longest allowed scry path +#define HEAD_SIZE 4 // header size in bytes +#define PACT_SIZE 1472 + +static c3_w MESA_COOKIE = 0x67e00200; + +typedef enum _u3_mesa_ptag { + PACT_RESV = 0, + PACT_PAGE = 1, + PACT_PEEK = 2, + PACT_POKE = 3, +} u3_mesa_ptag; + +typedef enum _u3_mesa_rout_tag { + ROUT_GALAXY = 0, + ROUT_OTHER = 1 +} u3_mesa_rout_tag; + +typedef enum _u3_mesa_hop_type { + HOP_NONE = 0, + HOP_SHORT = 1, + HOP_LONG = 2, + HOP_MANY = 3 +} u3_mesa_hop_type; + +typedef struct _u3_str { + c3_c* str_c; + c3_w len_w; +} u3_str; + +typedef struct _u3_mesa_name_meta { + c3_y ran_y; // rank (2 bits) + c3_y rif_y; // rift-len (2 bits) + c3_y nit_y; // initial overlay (1 bit) + c3_y tau_y; // %data (0) or %auth (1), 0 if !nit_o (1 bit) + c3_y gaf_y; // fragment number length (2bit) +} u3_mesa_name_meta; + +typedef struct _u3_mesa_name { + // u3_mesa_name_meta met_u; + u3_ship her_u; + c3_w rif_w; + c3_y boq_y; + c3_o nit_o; + c3_o aut_o; + c3_d fra_d; + c3_s pat_s; + c3_c* pat_c; + u3_str str_u; +} u3_mesa_name; + +typedef struct _u3_mesa_data_meta { + c3_y bot_y; // total-fragments len (2 bits) + c3_o aut_o; // auth tag (c3y for message, c3n for pair) + c3_o auv_o; // auth value (c3y for sig/no-pair, c3n for hmac/pair) + c3_y men_y; // fragment length/type (2 bits) +} u3_mesa_data_meta; + +typedef enum { + AUTH_SIGN = 0, + AUTH_NONE = 1, + AUTH_HMAC = 2, + AUTH_PAIR = 3, +} u3_mesa_auth_type; + +typedef struct _u3_auth_data { + u3_mesa_auth_type typ_e; // none, traversal (none), sig, or hmac + union { // + c3_y sig_y[64]; // signature + c3_y mac_y[16]; // hmac + c3_y has_y[2][32]; // hashes + }; +} u3_auth_data; + +typedef struct _u3_mesa_data { + c3_d tob_d; // total bytes in message + u3_auth_data aut_u; // authentication + c3_w len_w; // fragment length + c3_y* fra_y; // fragment +} u3_mesa_data; + + +typedef struct _u3_mesa_head { + u3_mesa_hop_type nex_y; // next-hop + c3_y pro_y; // protocol version + u3_mesa_ptag typ_y; // packet type + c3_y hop_y; // hopcount + c3_w mug_w; // truncated mug checksum +} u3_mesa_head; + +// +// +$ cache +// [%rout lanes=(list lanes)] +// [%pending pacs=(list pact)] + + +typedef struct _u3_mesa_peek_pact { + u3_mesa_name nam_u; +} u3_mesa_peek_pact; + +typedef struct _u3_mesa_hop_once { + c3_w len_w; + c3_y* dat_y; +} u3_mesa_hop_once; + +typedef struct _u3_mesa_hop_more { + c3_w len_w; + u3_mesa_hop_once* dat_y; +} u3_mesa_hop_more; + +typedef union { + c3_y sot_u[6]; + u3_mesa_hop_once one_u; + u3_mesa_hop_more man_u; +} u3_mesa_hop; + +typedef struct _u3_mesa_page_pact { + u3_mesa_name nam_u; + u3_mesa_data dat_u; + union { + c3_y sot_u[6]; + u3_mesa_hop_once one_u; + u3_mesa_hop_more man_u; + }; +} u3_mesa_page_pact; + +typedef struct _u3_mesa_poke_pact { + u3_mesa_name nam_u; + u3_mesa_name pay_u; + u3_mesa_data dat_u; +} u3_mesa_poke_pact; + +typedef struct _u3_mesa_pact { + u3_mesa_head hed_u; + union { + u3_mesa_poke_pact pok_u; + u3_mesa_page_pact pag_u; + u3_mesa_peek_pact pek_u; + }; +} u3_mesa_pact; + +typedef struct _u3_etcher { + c3_y* buf_y; + c3_w len_w; + c3_w cap_w; + c3_d bit_d; // for _etch_bits + c3_y off_y; // for _etch_bits +} u3_etcher; + +c3_d mesa_num_leaves(c3_d tot_d); +c3_w mesa_size_pact(u3_mesa_pact* pac_u); +c3_o mesa_is_new_pact(c3_y* buf_y, c3_w len_w); + +void mesa_free_pact(u3_mesa_pact* pac_u); + +c3_w mesa_etch_pact_to_buf(c3_y* buf_y, c3_w cap_w, u3_mesa_pact *pac_u); +void etcher_init(u3_etcher* ech_u, c3_y* buf_y, c3_w cap_w); +void _mesa_etch_name(u3_etcher *ech_u, u3_mesa_name* nam_u); +c3_c* mesa_sift_pact_from_buf(u3_mesa_pact *pac_u, c3_y* buf_y, c3_w len_w); + +void inc_hopcount(u3_mesa_head*); + +void log_pact(u3_mesa_pact* pac_u); +void log_name(u3_mesa_name* nam_u); + +#endif diff --git a/vere/pkg/vere/io/mesa/pact.c b/vere/pkg/vere/io/mesa/pact.c new file mode 100644 index 0000000..1b2940c --- /dev/null +++ b/vere/pkg/vere/io/mesa/pact.c @@ -0,0 +1,1605 @@ +#include "mesa.h" +#include +#include +#include +// only need for tests, can remove +#include "vere.h" +#include "ivory.h" +#include "ur/ur.h" +#include "ship.h" +#define RED_TEXT "\033[0;31m" +#define DEF_TEXT "\033[0m" +// endif tests + +#define safe_dec(num) (num == 0 ? num : num - 1) +#define _mesa_met3_w(a_w) ((c3_bits_word(a_w) + 0x7) >> 3) + +// assertions for roundtrip tests +/* #define MESA_ROUNDTRIP c3y */ + +#define _assert_eq_f(a, b) \ + if ( a != b ) { \ + u3l_log("mesa.c:%u %s != %s", __LINE__, \ + __(a)? "&" : "|", \ + __(b)? "&" : "|"); \ + u3m_bail(c3__oops); \ + } +#define _assert_eq_udF(a, b) \ + if ( a != b ) { \ + u3l_log("mesa.c:%u %u != %u", __LINE__, a, b); \ + u3m_bail(c3__oops); \ + } + +#define _assert_eq_udG(a, b) \ + if ( a != b ) { \ + u3l_log("mesa.c:%u %"PRIu64" != %"PRIu64, __LINE__, a, b); \ + u3m_bail(c3__oops); \ + } + +#define _assert_eq_uxF(a, b) \ + if ( a != b ) { \ + u3l_log("mesa.c: %u 0x%08x != 0x%08x", __LINE__, a, b); \ + u3m_bail(c3__oops); \ + } + +#define _assert_eq_uxG(a, b) \ + if ( a != b ) { \ + u3l_log("mesa.c: %u 0x%016llx != 0x%016llx", __LINE__, a, b); \ + u3m_bail(c3__oops); \ + } + +static void +_mesa_check_heads_equal(u3_mesa_head* hed_u, u3_mesa_head* hod_u) +{ + _assert_eq_udF(hed_u->hop_y, hed_u->hop_y); + _assert_eq_uxF(hed_u->mug_w, hed_u->mug_w); + _assert_eq_udF(hed_u->nex_y, hed_u->nex_y); + _assert_eq_udF(hed_u->pro_y, hed_u->pro_y); + _assert_eq_udF(hed_u->typ_y, hed_u->typ_y); +} + +static void +_mesa_check_names_equal(u3_mesa_name* nam_u, u3_mesa_name* nom_u) +{ + u3_assert( __(u3_ships_equal(nam_u->her_u, nom_u->her_u)) ); + _assert_eq_udF(nam_u->rif_w, nom_u->rif_w); + _assert_eq_udF(nam_u->boq_y, nom_u->boq_y); + _assert_eq_f(nam_u->nit_o, nom_u->nit_o); + _assert_eq_f(nam_u->aut_o, nom_u->aut_o); + _assert_eq_udG(nam_u->fra_d, nom_u->fra_d); + _assert_eq_udF(nam_u->pat_s, nom_u->pat_s); + u3_assert( 0 == memcmp(nam_u->pat_c, nom_u->pat_c, nam_u->pat_s + 1) ); +} + +static void +_mesa_check_auth_datas_equal(u3_auth_data* aut_u, u3_auth_data* aot_u) +{ + _assert_eq_udF(aut_u->typ_e, aot_u->typ_e); + switch ( aut_u->typ_e ) { + case AUTH_SIGN: { + u3_assert( 0 == memcmp(aut_u->sig_y, aot_u->sig_y, 64) ); + } break; + case AUTH_HMAC: { + u3_assert( 0 == memcmp(aut_u->mac_y, aot_u->mac_y, 16) ); + } break; + case AUTH_NONE: {} break; + case AUTH_PAIR: { + u3_assert( 0 == memcmp(aut_u->has_y, aot_u->has_y, 64) ); + } break; + default: u3_assert(!"unreachable"); + } +} + +static void +_mesa_check_datas_equal(u3_mesa_data* dat_u, u3_mesa_data* dot_u) +{ + _assert_eq_udG(dat_u->tob_d, dot_u->tob_d); + _mesa_check_auth_datas_equal(&dat_u->aut_u, &dot_u->aut_u); + _assert_eq_udF(dat_u->len_w, dot_u->len_w); + u3_assert( 0 == memcmp(dat_u->fra_y, dot_u->fra_y, dat_u->len_w) ); +} + +static void +_mesa_check_pacts_equal(u3_mesa_pact* pac_u, u3_mesa_pact* poc_u) +{ + _mesa_check_heads_equal(&poc_u->hed_u, &pac_u->hed_u); + + switch ( poc_u->hed_u.typ_y ) { + case PACT_PEEK: { + _mesa_check_names_equal(&poc_u->pek_u.nam_u, &pac_u->pek_u.nam_u); + } break; + case PACT_POKE: { + _mesa_check_names_equal(&poc_u->pok_u.nam_u, &pac_u->pok_u.nam_u); + _mesa_check_names_equal(&poc_u->pok_u.pay_u, &pac_u->pok_u.pay_u); + _mesa_check_datas_equal(&poc_u->pok_u.dat_u, &pac_u->pok_u.dat_u); + } break; + case PACT_PAGE: { + _mesa_check_names_equal(&poc_u->pag_u.nam_u, &pac_u->pag_u.nam_u); + _mesa_check_datas_equal(&poc_u->pag_u.dat_u, &pac_u->pag_u.dat_u); + } break; + default: u3_assert(!"unreachable"); + } +} + +/* Logging functions +*/ + +static void +_log_head(u3_mesa_head* hed_u) +{ + u3l_log("-- HEADER --"); + u3l_log("next hop: %u", hed_u->nex_y); + u3l_log("protocol: %u", hed_u->pro_y); + u3l_log("packet type: %u", hed_u->typ_y); + u3l_log("mug: 0x%05x", (hed_u->mug_w & 0xFFFFF)); + u3l_log("hopcount: %u", hed_u->hop_y); + u3l_log(""); +} + +static void +_log_buf(c3_y* buf_y, c3_w len_w) +{ + c3_c *buf_c = c3_malloc(2 * len_w + 1); + for ( c3_w i_w = 0; i_w < len_w; i_w++ ) { + sprintf(buf_c + (i_w*2), "%02x", buf_y[i_w]); + } + u3l_log("%s", buf_c); +} + +static void +_log_name_meta(u3_mesa_name_meta* met_u) +{ + u3l_log("meta"); + u3l_log("rank: %u", met_u->ran_y); + u3l_log("rift length: %u", met_u->rif_y); + u3l_log("nit: %u", met_u->nit_y); + u3l_log("tau: %u", met_u->tau_y); + u3l_log("frag num length: %u", met_u->gaf_y); +} + +void +log_name(u3_mesa_name* nam_u) +{ + c3_c* her_c; + { + u3_noun her = u3dc("scot", c3__p, u3_ship_to_noun(nam_u->her_u)); + her_c = u3r_string(her); + u3z(her); + } + + u3l_log("%s: /%.*s", her_c, nam_u->pat_s, nam_u->pat_c); + u3l_log(" rift: %u bloq: %u auth/data: %s init: %s frag: %"PRIu64, + nam_u->rif_w, + nam_u->boq_y, + (c3y == nam_u->aut_o) ? "auth" : "data", + (c3y == nam_u->nit_o) ? "init" : "nope", + nam_u->fra_d + ); + c3_free(her_c); + fflush(stderr); +} + +static void +_log_data(u3_mesa_data* dat_u) +{ + u3l_log("tob_d: %" PRIu64 " len_w: %u ", + dat_u->tob_d, dat_u->len_w); + + switch ( dat_u->aut_u.typ_e ) { + case AUTH_SIGN: { + u3l_log("signature: "); + _log_buf(dat_u->aut_u.sig_y, 64); + } break; + + case AUTH_HMAC: { + u3l_log("hmac: "); + _log_buf(dat_u->aut_u.mac_y, 16); + } break; + + case AUTH_NONE: { + u3l_log("merkle traversal: "); + } break; + + case AUTH_PAIR: { + u3l_log("merkle traversal:"); + _log_buf(dat_u->aut_u.has_y[0], 32); + _log_buf(dat_u->aut_u.has_y[1], 32); + } break; + } +} + + +static void +_log_peek_pact(u3_mesa_peek_pact* pac_u) +{ + log_name(&pac_u->nam_u); +} + +static void +_log_page_pact(u3_mesa_page_pact *pac_u) +{ + log_name(&pac_u->nam_u); + _log_data(&pac_u->dat_u); +} + +static void +_log_poke_pact(u3_mesa_poke_pact *pac_u) +{ + log_name(&pac_u->nam_u); + log_name(&pac_u->pay_u); + _log_data(&pac_u->dat_u); +} + +void +log_pact(u3_mesa_pact* pac_u) +{ + switch ( pac_u->hed_u.typ_y ) { + case PACT_PEEK: { + fprintf(stderr, "PEEK "); + _log_peek_pact(&pac_u->pek_u); + } break; + + case PACT_PAGE: { + fprintf(stderr, "PAGE "); + _log_page_pact(&pac_u->pag_u); + } break; + + case PACT_POKE: { + fprintf(stderr, "POKE "); + _log_poke_pact(&pac_u->pok_u); + } break; + + default: { + _log_poke_pact(&pac_u->pok_u); + break; + } + } +} + +/* Helper utilities +*/ + +/* mesa_num_leaves(): calculate how many leaves, given total bytes +*/ +c3_d +mesa_num_leaves(c3_d tob_d) +{ + return (tob_d + 1023) / 1024; +} + +void +inc_hopcount(u3_mesa_head* hed_u) +{ + hed_u->hop_y = c3_min(hed_u->hop_y+1, 7); +} + +static c3_y +_mesa_rank(u3_ship who_u) +{ + switch ( u3_ship_rank(who_u) ) { + case c3__pawn: return 3; + case c3__earl: return 2; + case c3__duke: return 1; + case c3__king: return 0; + case c3__czar: return 0; + default: u3_assert(!"unreachable"); + }; +} + +/* +** _mesa_make_chub_tag(): make a 2-bit tag for a chub length +*/ +static c3_y +_mesa_make_chub_tag(c3_d tot_d) +{ + return (tot_d <= 0xff)? 0b00 : + (tot_d <= 0xffff)? 0b01 : + (tot_d <= 0xffffffff)? 0b10 : + 0b11; +} + +/* +** _mesa_bytes_of_chub_tag(): how many bytes does a chub tag mean +*/ +static c3_y +_mesa_bytes_of_chub_tag(c3_y tot_y) +{ + return 1 << tot_y; +} + +/* serialisation +*/ + +typedef struct _u3_sifter { + c3_y* buf_y; + c3_w rem_w; + c3_d bit_d; // for _etch_bits + c3_y off_y; // for _etch_bits + c3_c* err_c; +} u3_sifter; + +void +etcher_init(u3_etcher* ech_u, c3_y* buf_y, c3_w cap_w) +{ + ech_u->buf_y = buf_y; + ech_u->len_w = 0; + ech_u->cap_w = cap_w; + ech_u->bit_d = 0; + ech_u->off_y = 0; +} + +static void +sifter_init(u3_sifter* sif_u, c3_y* buf_y, c3_w len_w) +{ + sif_u->buf_y = buf_y; + sif_u->rem_w = len_w; + sif_u->bit_d = 0; + sif_u->off_y = 0; + sif_u->err_c = NULL; +} + +static void +_sift_fail(u3_sifter* sif_u, c3_c* msg_c) +{ + if ( sif_u->err_c ) { + return; + } + sif_u->err_c = msg_c; + #ifdef MESA_ROUNDTRIP + u3l_log(RED_TEXT "sift fail: %s" DEF_TEXT, msg_c); + assert(!"sift fail"); + #endif +} + +static c3_y* +_etch_next(u3_etcher* ech_u, c3_w len_w) +{ + assert ( ech_u->off_y == 0 ); // ensure all bits were etched + assert ( ech_u->len_w + len_w <= ech_u->cap_w ); // ensure buffer is big enough + c3_y *res_y = ech_u->buf_y + ech_u->len_w; + ech_u->len_w += len_w; + return res_y; +} + +static c3_y* +_sift_next(u3_sifter* sif_u, c3_w len_w) +{ + assert ( sif_u->off_y == 0 ); // ensure all bits were sifted + if ( sif_u->err_c ) { + return NULL; + } + else if ( len_w > sif_u->rem_w ) { + _sift_fail(sif_u, "unexpected eof"); + } + c3_y *res_y = sif_u->buf_y; + sif_u->buf_y += len_w; + sif_u->rem_w -= len_w; + return res_y; +} + +static void +_etch_bytes(u3_etcher* ech_u, c3_y *buf_y, c3_w len_w) +{ + c3_y *res_y = _etch_next(ech_u, len_w); + memcpy(res_y, buf_y, len_w); +} + +static void +_sift_bytes(u3_sifter* sif_u, c3_y *buf_y, c3_w len_w) +{ + c3_y *res_y = _sift_next(sif_u, len_w); + if ( NULL == res_y ) { + memset(buf_y, 0, len_w); + return; + } + memcpy(buf_y, res_y, len_w); +} + +static void +_etch_byte(u3_etcher* ech_u, c3_y val_y) +{ + _etch_next(ech_u, 1)[0] = val_y; +} + +static c3_y +_sift_byte(u3_sifter* sif_u) +{ + c3_y *res_y = _sift_next(sif_u, 1); + return ( NULL == res_y ) ? 0 : res_y[0]; +} + +static void +_etch_short(u3_etcher* ech_u, c3_s val_s) +{ + c3_etch_short(_etch_next(ech_u, 2), val_s); +} + +static c3_s +_sift_short(u3_sifter* sif_u) +{ + c3_y *res_y = _sift_next(sif_u, 2); + return ( NULL == res_y ) ? 0 : c3_sift_short(res_y); +} + +static void +_etch_word(u3_etcher* ech_u, c3_w val_w) +{ + c3_etch_word(_etch_next(ech_u, 4), val_w); +} + +static c3_w +_sift_word(u3_sifter* sif_u) +{ + c3_y *res_y = _sift_next(sif_u, 4); + return ( NULL == res_y ) ? 0 : c3_sift_word(res_y); +} + +static void +_etch_chub(u3_etcher* ech_u, c3_d val_d) +{ + c3_etch_chub(_etch_next(ech_u, 8), val_d); +} + +static c3_d +_sift_chub(u3_sifter* sif_u) +{ + c3_y *res_y = _sift_next(sif_u, 8); + return ( NULL == res_y ) ? 0 : c3_sift_chub(res_y); +} + +static void +_etch_var_word(u3_etcher* ech_u, c3_w val_w, c3_w len_w) +{ + assert ( len_w <= 4 ); + c3_y *buf_y = _etch_next(ech_u, len_w); + for ( c3_w i = 0; i < len_w; i++ ) { + buf_y[i] = (val_w >> (8*i)) & 0xFF; + } +} + +static c3_w +_sift_var_word(u3_sifter* sif_u, c3_w len_w) +{ + assert ( len_w <= 4 ); + c3_y *res_y = _sift_next(sif_u, len_w); + if ( NULL == res_y ) { + return 0; + } + c3_w val_w = 0; + for ( c3_w i = 0; i < len_w; i++ ) { + val_w |= (res_y[i] << (8*i)); + } + return val_w; +} + +static void +_etch_var_chub(u3_etcher* ech_u, c3_d val_d, c3_w len_w) +{ + assert ( len_w <= 8 ); + c3_y *buf_y = _etch_next(ech_u, len_w); + for ( int i = 0; i < len_w; i++ ) { + buf_y[i] = (val_d >> (8*i)) & 0xFF; + } +} + +static c3_d +_sift_var_chub(u3_sifter* sif_u, c3_w len_w) +{ + assert ( len_w <= 8 ); + c3_y *res_y = _sift_next(sif_u, len_w); + if ( NULL == res_y ) { + return 0; + } + c3_d val_d = 0; + for ( c3_d i = 0; i < len_w; i++ ) { + val_d |= ((c3_d)res_y[i] << (8*i)); + } + return val_d; +} + +static void +_etch_bits(u3_etcher* ech_u, c3_w wid_w, c3_d val_d) +{ + assert ( ech_u->off_y + wid_w <= 64 ); + ech_u->bit_d |= ((val_d&((1 << wid_w) - 1)) << ech_u->off_y); + ech_u->off_y += wid_w; + while ( ech_u->off_y >= 8 ) { + ech_u->buf_y[ech_u->len_w] = ech_u->bit_d & 0xFF; + ech_u->bit_d >>= 8; + ech_u->len_w += 1; + ech_u->off_y -= 8; + } +} + +static c3_d +_sift_bits(u3_sifter* sif_u, c3_w wid_w) +{ + assert ( wid_w <= 64 ); + while ( sif_u->off_y < wid_w ) { + c3_d byt_d = (sif_u->rem_w > 0) ? sif_u->buf_y[0] : 0; + sif_u->buf_y += 1; + sif_u->rem_w -= 1; + sif_u->bit_d |= (byt_d << sif_u->off_y); + sif_u->off_y += 8; + } + c3_d res_d = sif_u->bit_d & ((1 << wid_w) - 1); + sif_u->bit_d >>= wid_w; + sif_u->off_y -= wid_w; + return res_d; +} + +static void +_etch_ship(u3_etcher* ech_u, u3_ship who_u, c3_y len_y) +{ + assert ( len_y <= 16 ); + u3_ship_to_bytes(who_u, len_y, _etch_next(ech_u, len_y)); +} + +static void +_sift_ship(u3_sifter* sif_u, u3_ship who_u, c3_y len_y) +{ + assert ( len_y <= 16 ); + c3_y *res_y = _sift_next(sif_u, len_y); + if ( NULL == res_y ) { + who_u[0] = who_u[1] = 0; + return; + } + u3_ship_of_bytes(who_u, len_y, res_y); +} + +static void +_mesa_etch_head(u3_etcher* ech_u, u3_mesa_head* hed_u) +{ + if ( 1 != hed_u->pro_y ) { + u3l_log("etching bad head"); + } + _etch_bits(ech_u, 2, 0); // unused + _etch_bits(ech_u, 2, hed_u->nex_y); + _etch_bits(ech_u, 3, hed_u->pro_y); + _etch_bits(ech_u, 2, hed_u->typ_y); + _etch_bits(ech_u, 3, hed_u->hop_y); + _etch_bits(ech_u, 20, hed_u->mug_w); + _etch_word(ech_u, MESA_COOKIE); +} + +c3_o +mesa_is_new_pact(c3_y* buf_y, c3_w len_w) +{ + return __((len_w >= 8) && c3_sift_word(buf_y + 4) == MESA_COOKIE); +} + +void +mesa_sift_head(u3_sifter* sif_u, u3_mesa_head* hed_u) +{ + _sift_bits(sif_u, 2); // unused + hed_u->nex_y = _sift_bits(sif_u, 2); + hed_u->pro_y = _sift_bits(sif_u, 3); + hed_u->typ_y = _sift_bits(sif_u, 2); + hed_u->hop_y = _sift_bits(sif_u, 3); + hed_u->mug_w = _sift_bits(sif_u, 20); + if ( 1 != hed_u->pro_y ) { + _sift_fail(sif_u, "bad protocol"); + } + if ( _sift_word(sif_u) != MESA_COOKIE ) { + _sift_fail(sif_u, "bad cookie"); + } +} + +void +_mesa_etch_name(u3_etcher *ech_u, u3_mesa_name* nam_u) +{ + u3_mesa_name_meta met_u = {0}; + met_u.ran_y = _mesa_rank(nam_u->her_u); + met_u.rif_y = safe_dec(_mesa_met3_w(nam_u->rif_w)); + + if ( c3y == nam_u->nit_o ) { + met_u.nit_y = 1; + met_u.tau_y = 0; + met_u.gaf_y = 0; + } + else { + met_u.nit_y = 0; + met_u.tau_y = (c3y == nam_u->aut_o) ? 1 : 0; + met_u.gaf_y = _mesa_make_chub_tag(nam_u->fra_d); + } + + _etch_bits(ech_u, 2, met_u.ran_y); + _etch_bits(ech_u, 2, met_u.rif_y); + _etch_bits(ech_u, 1, met_u.nit_y); + _etch_bits(ech_u, 1, met_u.tau_y); + _etch_bits(ech_u, 2, met_u.gaf_y); + c3_y her_y = 2 << met_u.ran_y; // XX confirm + _etch_ship(ech_u, nam_u->her_u, her_y); + // log_name(nam_u); + _etch_var_word(ech_u, nam_u->rif_w, met_u.rif_y + 1); + _etch_byte(ech_u, nam_u->boq_y); + + if ( met_u.nit_y ) { + // init packet + } + else { + // log_name(nam_u); + _etch_var_chub(ech_u, nam_u->fra_d, 1 << met_u.gaf_y); + } + + _etch_short(ech_u, nam_u->pat_s); + _etch_bytes(ech_u, (c3_y*)nam_u->pat_c, nam_u->pat_s); +} + +static void +_mesa_sift_name(u3_sifter* sif_u, u3_mesa_name* nam_u) +{ + nam_u->str_u.str_c = (c3_c*)sif_u->buf_y; + c3_w rem_w = sif_u->rem_w; + + u3_mesa_name_meta met_u = {0}; + met_u.ran_y = _sift_bits(sif_u, 2); + met_u.rif_y = _sift_bits(sif_u, 2); + met_u.nit_y = _sift_bits(sif_u, 1); + met_u.tau_y = _sift_bits(sif_u, 1); + met_u.gaf_y = _sift_bits(sif_u, 2); + + nam_u->nit_o = __( met_u.nit_y == 1 ); + nam_u->aut_o = __( met_u.tau_y == 1 ); + + _sift_ship(sif_u, nam_u->her_u, 2 << met_u.ran_y); + nam_u->rif_w = _sift_var_word(sif_u, met_u.rif_y + 1); + nam_u->boq_y = _sift_byte(sif_u); + + if ( met_u.nit_y ) { + assert( !met_u.tau_y ); + assert( !met_u.gaf_y ); + // XX init packet + nam_u->fra_d = 0; + } + else { + nam_u->fra_d = _sift_var_chub(sif_u, 1 << met_u.gaf_y); + } + + nam_u->pat_s = _sift_short(sif_u); + + nam_u->pat_c = (c3_c*)sif_u->buf_y; + /* nam_u->pat_c = c3_calloc(nam_u->pat_s + 1); */ + /* _sift_bytes(sif_u, (c3_y*)nam_u->pat_c, nam_u->pat_s); */ + + sif_u->buf_y += nam_u->pat_s; + sif_u->rem_w -= nam_u->pat_s; + + nam_u->str_u.len_w = rem_w - sif_u->rem_w; + + /* nam_u->pat_c[nam_u->pat_s] = 0; */ +} + +static void +_mesa_etch_data(u3_etcher* ech_u, u3_mesa_data* dat_u) +{ + u3_mesa_data_meta met_u = {0}; + met_u.bot_y = _mesa_make_chub_tag(dat_u->tob_d); + met_u.aut_o = __(dat_u->aut_u.typ_e == AUTH_SIGN || dat_u->aut_u.typ_e == AUTH_HMAC); + met_u.auv_o = __(dat_u->aut_u.typ_e == AUTH_SIGN || dat_u->aut_u.typ_e == AUTH_NONE); + c3_y nel_y = _mesa_met3_w(dat_u->len_w); + met_u.men_y = c3_min(nel_y, 3); + _etch_bits(ech_u, 2, met_u.bot_y); + _etch_bits(ech_u, 1, met_u.aut_o); + _etch_bits(ech_u, 1, met_u.auv_o); + _etch_bits(ech_u, 2, 0); // unused + _etch_bits(ech_u, 2, met_u.men_y); + _etch_var_chub(ech_u, dat_u->tob_d, 1 << met_u.bot_y); + switch ( dat_u->aut_u.typ_e ) { + case AUTH_SIGN: { + _etch_bytes(ech_u, dat_u->aut_u.sig_y, 64); + } break; + case AUTH_HMAC: { + _etch_bytes(ech_u, dat_u->aut_u.mac_y, 16); + } break; + case AUTH_NONE: { + } break; + case AUTH_PAIR: { + _etch_bytes(ech_u, dat_u->aut_u.has_y[0], 32); + _etch_bytes(ech_u, dat_u->aut_u.has_y[1], 32); + } break; + } + + if ( 3 == met_u.men_y ) { + _etch_byte(ech_u, nel_y); + } + _etch_var_word(ech_u, dat_u->len_w, nel_y); + _etch_bytes(ech_u, dat_u->fra_y, dat_u->len_w); +} + +static void +_mesa_sift_data(u3_sifter* sif_u, u3_mesa_data* dat_u) +{ + u3_mesa_data_meta met_u = {0}; + met_u.bot_y = _sift_bits(sif_u, 2); + met_u.aut_o = _sift_bits(sif_u, 1); + met_u.auv_o = _sift_bits(sif_u, 1); + _sift_bits(sif_u, 2); // unused + met_u.men_y = _sift_bits(sif_u, 2); + + dat_u->tob_d = _sift_var_chub(sif_u, 1<aut_u.sig_y, 64); + dat_u->aut_u.typ_e = AUTH_SIGN; + } + else { + _sift_bytes(sif_u, dat_u->aut_u.mac_y, 16); + dat_u->aut_u.typ_e = AUTH_HMAC; + } + } + else { + if ( c3y == met_u.auv_o ) { + dat_u->aut_u.typ_e = AUTH_NONE; + } else { + _sift_bytes(sif_u, dat_u->aut_u.has_y[0], 32); + _sift_bytes(sif_u, dat_u->aut_u.has_y[1], 32); + dat_u->aut_u.typ_e = AUTH_PAIR; + } + } + + c3_y nel_y = met_u.men_y; + if ( 3 == met_u.men_y ) { + nel_y = _sift_byte(sif_u); + } + dat_u->len_w = _sift_var_word(sif_u, nel_y); + dat_u->fra_y = _sift_next(sif_u, dat_u->len_w); +} + +static void +_mesa_etch_hop_long(u3_etcher* ech_u, u3_mesa_hop_once* hop_u) +{ + _etch_byte(ech_u, hop_u->len_w); + _etch_bytes(ech_u, hop_u->dat_y, hop_u->len_w); +} + +static void +_mesa_etch_page_pact(u3_etcher* ech_u, u3_mesa_page_pact* pag_u, u3_mesa_head* hed_u) +{ + _mesa_etch_name(ech_u, &pag_u->nam_u); + _mesa_etch_data(ech_u, &pag_u->dat_u); + + switch ( hed_u->nex_y ) { + case HOP_NONE: { + } break; + case HOP_SHORT: { + _etch_bytes(ech_u, pag_u->sot_u, 6); + } break; + case HOP_LONG: { + _mesa_etch_hop_long(ech_u, &pag_u->one_u); + } break; + case HOP_MANY: { + _etch_byte(ech_u, pag_u->man_u.len_w); + for ( c3_w i = 0; i < pag_u->man_u.len_w; i++ ) { + _mesa_etch_hop_long(ech_u, &pag_u->man_u.dat_y[i]); + } + } break; + default: { + return; + } break; + } +} + +static void +_mesa_sift_page_pact(u3_sifter* sif_u, u3_mesa_page_pact* pag_u, c3_y nex_y) +{ + _mesa_sift_name(sif_u, &pag_u->nam_u); + _mesa_sift_data(sif_u, &pag_u->dat_u); + + switch ( nex_y ) { + default: { + u3_assert(!"mesa: sift invalid hop type"); + } + case HOP_NONE: return; + case HOP_SHORT: { + _sift_bytes(sif_u, pag_u->sot_u, 6); + return; + } + case HOP_LONG: { + _sift_fail(sif_u, "mesa: sift invalid hop long"); + return; + } + case HOP_MANY: { + _sift_fail(sif_u, "mesa: sift invalid hop many"); + return; + } + } +} + +static void +_mesa_etch_peek_pact(u3_etcher* ech_u, u3_mesa_peek_pact* pac_u) +{ + _mesa_etch_name(ech_u, &pac_u->nam_u); +} + +static void +_mesa_sift_peek_pact(u3_sifter* sif_u, u3_mesa_peek_pact* pac_u) +{ + _mesa_sift_name(sif_u, &pac_u->nam_u); +} + +static void +_mesa_etch_poke_pact(u3_etcher* ech_u, u3_mesa_poke_pact* pac_u) +{ + _mesa_etch_name(ech_u, &pac_u->nam_u); + _mesa_etch_name(ech_u, &pac_u->pay_u); + _mesa_etch_data(ech_u, &pac_u->dat_u); +} + +static void +_mesa_sift_poke_pact(u3_sifter* sif_u, u3_mesa_poke_pact* pac_u) +{ + _mesa_sift_name(sif_u, &pac_u->nam_u); + _mesa_sift_name(sif_u, &pac_u->pay_u); + _mesa_sift_data(sif_u, &pac_u->dat_u); +} + +static void +_mesa_etch_pact(u3_etcher* ech_u, u3_mesa_pact* pac_u) +{ + // use a separate etcher to make computing the mug easier + u3_etcher pec_u; + etcher_init(&pec_u, ech_u->buf_y + ech_u->len_w + 8, ech_u->cap_w - ech_u->len_w - 8); + + switch ( pac_u->hed_u.typ_y ) { + case PACT_POKE: { + _mesa_etch_poke_pact(&pec_u, &pac_u->pok_u); + } break; + case PACT_PAGE: { + _mesa_etch_page_pact(&pec_u, &pac_u->pag_u, &pac_u->hed_u); + } break; + case PACT_PEEK: { + _mesa_etch_peek_pact(&pec_u, &pac_u->pek_u); + } break; + default: { + u3l_log("bad pact type %u", pac_u->hed_u.typ_y); + } + } + // now we can compute the mug and write the header + pac_u->hed_u.mug_w = u3r_mug_bytes(pec_u.buf_y, pec_u.len_w) + & 0xFFFFF; + _mesa_etch_head(ech_u, &pac_u->hed_u); + + // the payload is already written into the correct spot, so we just need to + // adjust the length + ech_u->len_w += pec_u.len_w; +} + +static void +_mesa_sift_pact(u3_sifter* sif_u, u3_mesa_pact* pac_u) +{ + mesa_sift_head(sif_u, &pac_u->hed_u); + + // for mug, later + c3_y *mug_y = sif_u->buf_y; + c3_w pre_w = sif_u->rem_w; + + switch ( pac_u->hed_u.typ_y ) { + case PACT_PEEK: { + _mesa_sift_peek_pact(sif_u, &pac_u->pek_u); + } break; + case PACT_PAGE: { + _mesa_sift_page_pact(sif_u, &pac_u->pag_u, pac_u->hed_u.nex_y); + } break; + case PACT_POKE: { + _mesa_sift_poke_pact(sif_u, &pac_u->pok_u); + } break; + default: { + /* u3l_log("mesa: received unknown packet type"); */ + break; + } + } + + { + c3_w mug_w = u3r_mug_bytes(mug_y, pre_w - sif_u->rem_w) + & 0xFFFFF; + if ( mug_w != pac_u->hed_u.mug_w ) { + _sift_fail(sif_u, "bad mug"); + return; + } + } +} + +/* packet etch/sift, with roundtrip tests */ + +c3_w +mesa_etch_pact_to_buf(c3_y* buf_y, c3_w cap_w, u3_mesa_pact *pac_u) { + u3_etcher ech_u; + etcher_init(&ech_u, buf_y, cap_w); + _mesa_etch_pact(&ech_u, pac_u); + + #ifdef MESA_ROUNDTRIP + u3_mesa_pact poc_u; + u3_sifter sif_u; + sifter_init(&sif_u, ech_u.buf_y, ech_u.len_w); + _mesa_sift_pact(&sif_u, &poc_u); + if ( sif_u.rem_w && !sif_u.err_c ) { + u3l_log("mesa: etch roundtrip failed: %u trailing bytes", sif_u.rem_w); + _sift_fail(&sif_u, "trailing bytes"); + } + if ( sif_u.err_c ) { + u3l_log("mesa: roundtrip failed: %s", sif_u.err_c); + assert(!"roundtrip failed"); + } + _mesa_check_pacts_equal(&poc_u, pac_u); + mesa_free_pact(&poc_u); + #endif + + return ech_u.len_w; +} + +c3_c* +mesa_sift_pact_from_buf(u3_mesa_pact *pac_u, c3_y* buf_y, c3_w len_w) { + u3_sifter sif_u; + sifter_init(&sif_u, buf_y, len_w); + _mesa_sift_pact(&sif_u, pac_u); + if ( sif_u.rem_w && !sif_u.err_c ) { + _sift_fail(&sif_u, "trailing bytes"); + } + + #ifdef MESA_ROUNDTRIP + c3_y* bof_y = c3_calloc(len_w); + u3_etcher ech_u; + etcher_init(&ech_u, bof_y, len_w); + _mesa_etch_pact(&ech_u, pac_u); + u3_assert( 0 == memcmp(bof_y, buf_y, len_w) ); + c3_free(bof_y); + #endif + + return sif_u.err_c; +} + +/* sizing +*/ +static c3_w +_mesa_size_name(u3_mesa_name* nam_u) +{ + c3_w siz_w = 1; + u3_mesa_name_meta met_u; + + met_u.ran_y = _mesa_rank(nam_u->her_u); + met_u.rif_y = safe_dec(_mesa_met3_w(nam_u->rif_w)); + + siz_w += 2 << met_u.ran_y; + siz_w += met_u.rif_y + 1; + siz_w++; // bloq + + if ( nam_u->nit_o == c3n ) { + met_u.gaf_y = _mesa_make_chub_tag(nam_u->fra_d); + siz_w += _mesa_bytes_of_chub_tag(met_u.gaf_y); + } + + siz_w += 2; // path-length + siz_w += nam_u->pat_s; + + return siz_w; +} + +static c3_w +_mesa_size_data(u3_mesa_data* dat_u) +{ + c3_w siz_w = 1; + u3_mesa_data_meta met_u; + + met_u.bot_y = _mesa_make_chub_tag(dat_u->tob_d); + siz_w += _mesa_bytes_of_chub_tag(met_u.bot_y); + + switch ( dat_u->aut_u.typ_e ) { + case AUTH_SIGN: { + siz_w += 64; + } break; + + case AUTH_HMAC: { + siz_w += 16; + } break; + + case AUTH_NONE: { + } break; + + case AUTH_PAIR: { + siz_w += 64; + } break; + } + + c3_y nel_y = _mesa_met3_w(dat_u->len_w); + met_u.men_y = (3 >= nel_y) ? nel_y : 3; + + if ( 3 == met_u.men_y ) { + siz_w++; + } + + siz_w += nel_y; + siz_w += dat_u->len_w; + + return siz_w; +} + +static c3_w +_mesa_size_hops(u3_mesa_pact* pac_u) +{ + if ( PACT_PAGE != pac_u->hed_u.typ_y ) { + return 0; + } + + switch ( pac_u->hed_u.nex_y ) { + case HOP_NONE: return 0; + case HOP_SHORT: return 6; + case HOP_LONG: return 1 + pac_u->pag_u.one_u.len_w; + case HOP_MANY: { + c3_w siz_w = 0; + for ( c3_w i = 0; i < pac_u->pag_u.man_u.len_w; i++ ) { + siz_w += 1 + pac_u->pag_u.man_u.dat_y[i].len_w; + } + return siz_w; + } + default: u3_assert(!"mesa: invalid hop type"); + } +} + +c3_w +mesa_size_pact(u3_mesa_pact* pac_u) +{ + c3_w siz_w = 8; // header + cookie; + + switch ( pac_u->hed_u.typ_y ) { + case PACT_PEEK: { + siz_w += _mesa_size_name(&pac_u->pek_u.nam_u); + } break; + + case PACT_PAGE: { + siz_w += _mesa_size_name(&pac_u->pag_u.nam_u); + siz_w += _mesa_size_data(&pac_u->pag_u.dat_u); + siz_w += _mesa_size_hops(pac_u); + } break; + + case PACT_POKE: { + siz_w += _mesa_size_name(&pac_u->pok_u.nam_u); + siz_w += _mesa_size_name(&pac_u->pok_u.pay_u); + siz_w += _mesa_size_data(&pac_u->pok_u.dat_u); + } break; + + default: { + u3l_log("bad pact type %u", pac_u->hed_u.typ_y);//u3m_bail(c3__bail); + return 0; + } + } + + return siz_w; +} + +#ifdef PACT_TEST + +/* _mesa_encode_path(): produce buf_y as a parsed path +*/ +static u3_noun +_mesa_encode_path(c3_w len_w, c3_y* buf_y) +{ + u3_noun pro; + u3_noun* lit = &pro; + + { + u3_noun* hed; + u3_noun* tel; + c3_y* fub_y = buf_y; + c3_y car_y; + c3_w tem_w; + u3i_slab sab_u; + + while ( len_w-- ) { + car_y = *buf_y++; + if ( len_w == 0 ) { + buf_y++; + car_y = 47; + } + + if ( 47 == car_y ) { + tem_w = buf_y - fub_y - 1; + u3i_slab_bare(&sab_u, 3, tem_w); + sab_u.buf_w[sab_u.len_w - 1] = 0; + memcpy(sab_u.buf_y, fub_y, tem_w); + + *lit = u3i_defcons(&hed, &tel); + *hed = u3i_slab_moot(&sab_u); + lit = tel; + fub_y = buf_y; + } + } + } + + *lit = u3_nul; + + return pro; +} + +#define cmp_scalar(nam, str, fmt) \ + if ( hav_u->nam != ned_u->nam ) { \ + fprintf(stderr, "mesa test cmp " str " differ:\r\n" \ + " have: " fmt "\r\n" \ + " need: " fmt "\r\n", \ + hav_u->nam, ned_u->nam); \ + ret_i = 1; \ + } + +#define cmp_string(nam, siz, str) \ + if ( memcmp(hav_u->nam, ned_u->nam, siz) ) { \ + fprintf(stderr, "mesa test cmp " str " differ:\r\n" \ + " have: %*.s\r\n" \ + " need: %*.s\r\n", \ + siz, hav_u->nam, siz, ned_u->nam); \ + ret_i = 1; \ + } + +#define cmp_buffer(nam, siz, str) \ + if ( memcmp(hav_u->nam, ned_u->nam, siz) ) { \ + fprintf(stderr, "mesa test cmp " str "\r\n"); \ + ret_i = 1; \ + } + +static c3_i +_test_cmp_head(u3_mesa_head* hav_u, u3_mesa_head* ned_u) +{ + c3_i ret_i = 0; + + cmp_scalar(nex_y, "head: next", "%u"); + cmp_scalar(pro_y, "head: protocol", "%u"); + cmp_scalar(typ_y, "head: type", "%u"); + cmp_scalar(hop_y, "head: hop", "%u"); + cmp_scalar(mug_w, "head: mug", "%u"); + + return ret_i; +} + +static c3_i +_test_cmp_name(u3_mesa_name* hav_u, u3_mesa_name* ned_u) +{ + c3_i ret_i = 0; + + cmp_buffer(her_u, sizeof(ned_u->her_u), "name: ships differ"); + + cmp_scalar(rif_w, "name: rifts", "%u"); + cmp_scalar(boq_y, "name: bloqs", "%u"); + cmp_scalar(nit_o, "name: inits", "%u"); + cmp_scalar(aut_o, "name: auths", "%u"); + cmp_scalar(fra_d, "name: fragments", "%" PRIu64); + cmp_scalar(pat_s, "name: path-lengths", "%u"); + + cmp_string(pat_c, ned_u->pat_s, "name: paths"); + + return ret_i; +} + +static c3_i +_test_cmp_data(u3_mesa_data* hav_u, u3_mesa_data* ned_u) +{ + c3_i ret_i = 0; + + cmp_scalar(tob_d, "data: total packets", "%" PRIu64); + + cmp_scalar(aut_u.typ_e, "data: auth-types", "%u"); + cmp_buffer(aut_u.sig_y, 64, "data: sig|hmac|null"); + + // cmp_scalar(aut_u.len_y, "data: hash-lengths", "%u"); + + if ( AUTH_PAIR == ned_u->aut_u.typ_e ) { + cmp_buffer(aut_u.has_y, 2, "data: hashes"); + } + + cmp_scalar(len_w, "data: fragments-lengths", "%u"); + cmp_buffer(fra_y, ned_u->len_w, "data: fragments"); + + return ret_i; +} + +static c3_i +_test_pact(u3_mesa_pact* pac_u) +{ + c3_y* buf_y = c3_calloc(PACT_SIZE); + c3_w len_w = mesa_etch_pact_to_buf(buf_y, PACT_SIZE, pac_u); + c3_i ret_i = 0; + c3_i bot_i = 0; + c3_w sif_w; + + u3_mesa_pact nex_u; + memset(&nex_u, 0, sizeof(u3_mesa_pact)); + + if ( !len_w ) { + fprintf(stderr, "pact: etch failed\r\n"); + ret_i = 1; goto done; + } + else if ( len_w > PACT_SIZE ) { + fprintf(stderr, "pact: etch overflowed: %u\r\n", len_w); + ret_i = 1; goto done; + } + + u3_sifter sif_u; + sifter_init(&sif_u, buf_y, len_w); + _mesa_sift_pact(&sif_u, &nex_u); + + if ( sif_u.rem_w && !sif_u.err_c ) { + fprintf(stderr, "pact: sift failed len=%u sif=%u\r\n", len_w, sif_u.rem_w); + _log_buf(buf_y, len_w); + ret_i = 1; goto done; + } + + bot_i = 1; + + if ( _test_cmp_head(&nex_u.hed_u, &pac_u->hed_u) ) { + fprintf(stderr, "pact: head cmp fail\r\n"); + ret_i = 1; + } + + switch ( pac_u->hed_u.typ_y ) { + case PACT_PEEK: { + if ( _test_cmp_name(&nex_u.pek_u.nam_u, &pac_u->pek_u.nam_u) ) { + fprintf(stderr, "%%peek name cmp fail\r\n"); + ret_i = 1; + } + } break; + + case PACT_PAGE: { + if ( _test_cmp_name(&nex_u.pag_u.nam_u, &pac_u->pag_u.nam_u) ) { + fprintf(stderr, "%%page name cmp fail\r\n"); + ret_i = 1; + } + else if ( _test_cmp_data(&nex_u.pag_u.dat_u, &pac_u->pag_u.dat_u) ) { + fprintf(stderr, "%%page data cmp fail\r\n"); + ret_i = 1; + } + } break; + + case PACT_POKE: { + if ( _test_cmp_name(&nex_u.pok_u.nam_u, &pac_u->pok_u.nam_u) ) { + fprintf(stderr, "%%poke name cmp fail\r\n"); + ret_i = 1; + } + else if ( _test_cmp_name(&nex_u.pok_u.pay_u, &pac_u->pok_u.pay_u) ) { + fprintf(stderr, "%%poke pay-name cmp fail\r\n"); + ret_i = 1; + } + else if ( _test_cmp_data(&nex_u.pok_u.dat_u, &pac_u->pok_u.dat_u) ) { + fprintf(stderr, "%%poke data cmp fail\r\n"); + ret_i = 1; + } + } break; + + default: { + fprintf(stderr, "test: strange packet\r\n"); + ret_i = 1; + } + } + +done: + if ( ret_i ) { + _log_head(&pac_u->hed_u); + log_pact(pac_u); + _log_buf(buf_y, len_w); + + if ( bot_i ) { + u3l_log(RED_TEXT); + _log_head(&nex_u.hed_u); + log_pact(&nex_u); + u3l_log(DEF_TEXT); + } + } + + c3_free(buf_y); + + return ret_i; +} + +static c3_y +_test_rand_bit(void* ptr_v) +{ + return rand() & 1; +} + +static c3_y +_test_rand_bits(void* ptr_v, c3_y len_y) +{ + assert( 8 >= len_y ); + return rand() & ((1 << len_y) - 1); +} + +static c3_w +_test_rand_word(void* ptr_v) +{ + c3_w low_w = rand(); + c3_w hig_w = rand(); + return (hig_w << 16) ^ (low_w & ((1 << 16) - 1)); +} + +static c3_d +_test_rand_chub(void* ptr_v) +{ + c3_w low_w = _test_rand_word(ptr_v); + c3_w hig_w = _test_rand_word(ptr_v); + return ((c3_d)hig_w << 32) ^ low_w; +} + +static c3_y +_test_rand_gulf_y(void* ptr_v, c3_y top_y) +{ + c3_y bit_y = c3_bits_word(top_y); + c3_y res_y = 0; + + if ( !bit_y ) return res_y; + + while ( 1 ) { + res_y = _test_rand_bits(ptr_v, bit_y); + + if ( res_y < top_y ) { + return res_y; + } + } +} + +static c3_w +_test_rand_gulf_w(void* ptr_v, c3_w top_w) +{ + c3_w bit_w = c3_bits_word(top_w); + c3_w res_w = 0; + + if ( !bit_w ) return res_w; + + while ( 1 ) { + res_w = _test_rand_word(ptr_v); + res_w &= (1 << bit_w) - 1; + + if ( res_w < top_w ) { + return res_w; + } + } +} + +static void +_test_rand_bytes(void* ptr_v, c3_w len_w, c3_y* buf_y) +{ + c3_w max_w = len_w / 2; + + while ( max_w-- ) { + c3_w wor_w = rand(); + *buf_y++ = (wor_w >> 0) & 0xff; + *buf_y++ = (wor_w >> 8) & 0xff; + } + + if ( len_w & 1 ) { + *buf_y = rand() & 0xff; + } +} + +const char* ta_c = "-~_.0123456789abcdefghijklmnopqrstuvwxyz"; + +static void +_test_rand_knot(void* ptr_v, c3_w len_w, c3_c* not_c) +{ + for ( c3_w i_w = 0; i_w < len_w; i_w++ ) { + *not_c++ = ta_c[_test_rand_gulf_y(ptr_v, 40)]; + } +} + +static void +_test_rand_path(void* ptr_v, c3_s len_s, c3_c* pat_c) +{ + c3_s not_s = 0; + + while ( len_s ) { + not_s = _test_rand_gulf_w(ptr_v, len_s); + _test_rand_knot(ptr_v, not_s, pat_c); + pat_c[not_s] = '/'; + pat_c += not_s + 1; + len_s -= not_s + 1; + } +} + +static void +_test_make_head(void* ptr_v, u3_mesa_head* hed_u) +{ + hed_u->nex_y = HOP_NONE; // XX + hed_u->pro_y = 1; + hed_u->typ_y = _test_rand_gulf_y(ptr_v, 3) + 1; + hed_u->hop_y = _test_rand_gulf_y(ptr_v, 8); + hed_u->mug_w = 0; + // XX set mug_w in etch? +} + +static void +_test_make_name(void* ptr_v, c3_s pat_s, u3_mesa_name* nam_u) +{ + _test_rand_bytes(ptr_v, 16, (c3_y*)nam_u->her_u); + nam_u->rif_w = _test_rand_word(ptr_v); + + nam_u->pat_s = _test_rand_gulf_w(ptr_v, pat_s); + nam_u->pat_c = c3_malloc(nam_u->pat_s + 1); + _test_rand_path(ptr_v, nam_u->pat_s, nam_u->pat_c); + nam_u->pat_c[nam_u->pat_s] = 0; + + nam_u->boq_y = _test_rand_bits(ptr_v, 8); + nam_u->nit_o = _test_rand_bits(ptr_v, 1); + + if ( c3y == nam_u->nit_o ) { + nam_u->aut_o = c3n; + nam_u->fra_d = 0; + } + else { + nam_u->aut_o = _test_rand_bits(ptr_v, 1); + nam_u->fra_d = _test_rand_chub(ptr_v); + } +} + +static void +_test_make_data(void* ptr_v, u3_mesa_data* dat_u) +{ + dat_u->tob_d = _test_rand_chub(ptr_v); + + memset(dat_u->aut_u.sig_y, 0, 64); + // dat_u->aut_u.len_y = 0; + memset(dat_u->aut_u.has_y, 0, sizeof(dat_u->aut_u.has_y)); + + switch ( dat_u->aut_u.typ_e = _test_rand_bits(ptr_v, 2) ) { + + case AUTH_SIGN: { + _test_rand_bytes(ptr_v, 64, dat_u->aut_u.sig_y); + } break; + + case AUTH_HMAC: { + _test_rand_bytes(ptr_v, 16, dat_u->aut_u.mac_y); + } break; + + case AUTH_NONE: { + + } break; + + case AUTH_PAIR: { + _test_rand_bytes(ptr_v, 32, dat_u->aut_u.has_y[0]); + _test_rand_bytes(ptr_v, 32, dat_u->aut_u.has_y[1]); + } break; + + default: break; + } + + dat_u->len_w = _test_rand_gulf_w(ptr_v, 1024); + dat_u->fra_y = c3_calloc(dat_u->len_w); + _test_rand_bytes(ptr_v, dat_u->len_w, dat_u->fra_y); +} + +static void +_test_make_pact(void* ptr_v, u3_mesa_pact* pac_u) +{ + _test_make_head(ptr_v, &pac_u->hed_u); + + switch ( pac_u->hed_u.typ_y ) { + case PACT_PEEK: { + _test_make_name(ptr_v, 277, &pac_u->pek_u.nam_u); + } break; + + case PACT_PAGE: { + _test_make_name(ptr_v, 277, &pac_u->pag_u.nam_u); + _test_make_data(ptr_v, &pac_u->pag_u.dat_u); + } break; + + case PACT_POKE: { + _test_make_name(ptr_v, 124, &pac_u->pok_u.nam_u); + _test_make_name(ptr_v, 124, &pac_u->pok_u.pay_u); + _test_make_data(ptr_v, &pac_u->pok_u.dat_u); + } break; + + default: break; // XX + } +} + +static c3_i +_test_rand_pact(c3_w bat_w) +{ + u3_mesa_pact pac_u; + void* ptr_v = 0; + + fprintf(stderr, "pact: test roundtrip %u random packets\r\n", bat_w); + + for ( c3_w i_w = 0; i_w < bat_w; i_w++ ) { + _test_make_pact(ptr_v, &pac_u); + + if ( _test_pact(&pac_u) ) { + fprintf(stderr, RED_TEXT "pact: roundtrip attempt %u failed\r\n", i_w); + exit(1); + } + + // XX free pat_s / buf_y + } + + return 0; +} + +static void +_test_sift_page() +{ + u3_mesa_pact pac_u; + memset(&pac_u,0, sizeof(u3_mesa_pact)); + pac_u.hed_u.typ_y = PACT_PAGE; + pac_u.hed_u.pro_y = 1; + u3l_log("%%page checking sift/etch idempotent"); + u3_mesa_name* nam_u = &pac_u.pag_u.nam_u; + + { + u3_noun her = u3v_wish("~hastuc-dibtux"); + u3r_chubs(0, 2, nam_u->her_u, her); + u3z(her); + } + nam_u->rif_w = 15; + nam_u->pat_c = "foo/bar"; + nam_u->pat_s = strlen(nam_u->pat_c); + nam_u->boq_y = 13; + nam_u->fra_d = 54; + nam_u->nit_o = c3n; + + u3_mesa_data* dat_u = &pac_u.pag_u.dat_u; + dat_u->aut_u.typ_e = AUTH_NONE; + dat_u->tob_d = 1000; + dat_u->len_w = 1024; + dat_u->fra_y = c3_calloc(1024); + // dat_u->fra_y[1023] = 1; + + if ( _test_pact(&pac_u) ) { + fprintf(stderr, RED_TEXT "%%page failed\r\n"); + exit(1); + } +} + + +static void +_test_encode_path(c3_c* pat_c) +{ + u3_noun wan = u3do("stab", u3dt("cat", 3, '/', u3i_string(pat_c))); + u3_noun hav = _mesa_encode_path(strlen(pat_c), (c3_y*)pat_c); + // u3m_p("hav", hav); + if ( c3n == u3r_sing(wan, hav) ) { + u3l_log(RED_TEXT); + u3l_log("path encoding mismatch"); + u3m_p("want", wan); + u3m_p("have", hav); + exit(1); + } +} + + +static void +_setup() +{ + c3_d len_d = u3_Ivory_pill_len; + c3_y* byt_y = u3_Ivory_pill; + u3_cue_xeno* sil_u; + u3_weak pil; + + u3C.wag_w |= u3o_hashless; + u3m_boot_lite(1 << 26); + sil_u = u3s_cue_xeno_init_with(ur_fib27, ur_fib28); + if ( u3_none == (pil = u3s_cue_xeno_with(sil_u, len_d, byt_y)) ) { + printf("*** fail _setup 1\n"); + exit(1); + } + u3s_cue_xeno_done(sil_u); + if ( c3n == u3v_boot_lite(pil) ) { + printf("*** fail _setup 2\n"); + exit(1); + } + + { + c3_w pid_w = getpid(); + srand(pid_w); + fprintf(stderr, "test: seeding rand() with pid %u\r\n", pid_w); + } +} + +int main() +{ + _setup(); + + _test_rand_pact(100000); + + _test_encode_path("foo/bar/baz"); + _test_encode_path("publ/0/xx//1/foo/g"); + return 0; +} + + +#endif diff --git a/vere/pkg/vere/io/mesa/pact_test.c b/vere/pkg/vere/io/mesa/pact_test.c new file mode 100644 index 0000000..62fd4fe --- /dev/null +++ b/vere/pkg/vere/io/mesa/pact_test.c @@ -0,0 +1,3 @@ +#define PACT_TEST + +#include "pact.c" diff --git a/vere/pkg/vere/io/serial.h b/vere/pkg/vere/io/serial.h new file mode 100644 index 0000000..e69de29 diff --git a/vere/pkg/vere/io/term.c b/vere/pkg/vere/io/term.c new file mode 100644 index 0000000..3a5afd6 --- /dev/null +++ b/vere/pkg/vere/io/term.c @@ -0,0 +1,1816 @@ +/// @file + +#include "vere.h" + +#include "noun.h" + +// macros for string literal args/buffers +// +// since (sizeof(s) - 1) is used for vector length, parameters +// must be appropriately typed. use with care! +// +#define TERM_LIT(s) sizeof(s) - 1, (const c3_y*)(s) +#define TERM_LIT_BUF(s) uv_buf_init(s, sizeof(s) - 1) + +static u3_utty* _term_main(); +static void _term_read_cb(uv_stream_t* tcp_u, + ssize_t siz_i, + const uv_buf_t* buf_u); +static void _term_it_send_stub(u3_utty* uty_u, u3_noun tub); + +/* u3_write_fd(): retry interrupts, continue partial writes, assert errors. +*/ +void +u3_write_fd(c3_i fid_i, const void* buf_v, size_t len_i) +{ + ssize_t ret_i; + + while ( len_i > 0 ) { + c3_w lop_w = 0; + // retry interrupt/async errors + // + do { + // abort pathological retry loop + // + if ( 100 == ++lop_w ) { + fprintf(stderr, "term: write loop: %s\r\n", strerror(errno)); + return; + } + ret_i = write(fid_i, buf_v, len_i); + } + while ( (ret_i < 0) + && ( (errno == EINTR) + || (errno == EAGAIN) + || (errno == EWOULDBLOCK) )); + + // assert on true errors + // + // NB: can't call u3l_log here or we would re-enter u3_write_fd() + // + if ( ret_i < 0 ) { + fprintf(stderr, "term: write failed %s\r\n", strerror(errno)); + u3_assert(0); + } + // continue partial writes + // + else { + len_i -= ret_i; + buf_v += ret_i; + } + } +} + +/* _term_msc_out_host(): unix microseconds from current host time. +*/ +static c3_d +_term_msc_out_host() +{ + struct timeval tim_tv; + gettimeofday(&tim_tv, 0); + return 1000000ULL * tim_tv.tv_sec + tim_tv.tv_usec; +} + +/* _term_alloc(): libuv buffer allocator. +*/ +static void +_term_alloc(uv_handle_t* had_u, + size_t len_i, + uv_buf_t* buf + ) +{ + // this read can range from a single byte to a paste buffer + // 123 bytes has been chosen because its not a power of 2 + // this is probably still broken + // + void* ptr_v = c3_malloc(123); + *buf = uv_buf_init(ptr_v, 123); +} + +/* u3_term_log_init(): initialize terminal for logging +*/ +void +u3_term_log_init(void) +{ + u3_utty* uty_u; + + if ( c3y == u3_Host.ops_u.tem ) { + uty_u = c3_calloc(sizeof(u3_utty)); + uty_u->fid_i = 1; + + uv_pipe_init(u3L, &(uty_u->pin_u.pip_u), 0); + uv_pipe_init(u3L, &(uty_u->pop_u.pip_u), 0); + uv_pipe_open(&(uty_u->pop_u.pip_u), uty_u->fid_i); + } + else { + // Initialize event processing. Rawdog it. + // + const c3_c* err_c; + if ( NULL == (uty_u = u3_ptty_init(u3L, &err_c)) ) { + fprintf(stderr, "vere: unable to initialize terminal (%s)\r\n" + " use -t to disable interactivity\r\n", err_c); + u3_king_bail(); + } + + // configure output escape sequences + // + // our requirements are minimal here, so we bypass terminfo + // and simply use constant sequences. + // + { + uty_u->ufo_u.reg_u = TERM_LIT_BUF("\033[r"); + + uty_u->ufo_u.suc_u = TERM_LIT_BUF("\033[s"); + uty_u->ufo_u.ruc_u = TERM_LIT_BUF("\033[u"); + uty_u->ufo_u.cub_u = TERM_LIT_BUF("\x8"); + + uty_u->ufo_u.clr_u = TERM_LIT_BUF("\033[H\033[2J"); + uty_u->ufo_u.cel_u = TERM_LIT_BUF("\033[K"); + + uty_u->ufo_u.bel_u = TERM_LIT_BUF("\x7"); + } + + // Initialize mirror and accumulator state. + // + { + uty_u->tat_u.mir.lin = u3_nul; + uty_u->tat_u.mir.rus_w = 0; + uty_u->tat_u.mir.cus_w = 0; + + uty_u->tat_u.esc.ape = c3n; + uty_u->tat_u.esc.bra = c3n; + uty_u->tat_u.esc.mou = c3n; + uty_u->tat_u.esc.ton_y = 0; + uty_u->tat_u.esc.col_y = 0; + + uty_u->tat_u.fut.len_w = 0; + uty_u->tat_u.fut.wid_w = 0; + uty_u->tat_u.fut.imp = u3_nul; + } + + // default size + // + { + uty_u->tat_u.siz.col_l = 80; + uty_u->tat_u.siz.row_l = 0; + } + + // initialize spinner state + // + { + uty_u->tat_u.sun_u.diz_o = c3n; + uty_u->tat_u.sun_u.eve_d = 0; + uty_u->tat_u.sun_u.end_d = 0; + } + } + + // This is terminal 1, linked in host. + // + { + uty_u->tid_l = 1; + uty_u->nex_u = 0; + u3_Host.uty_u = uty_u; + } + + // Disable I/O buffering on terminal streams. + // This is not necessary if output is a tty, + // but helps when output is redirected. + // + { + fflush(stdout); + fflush(stderr); + setvbuf(stdout, NULL, _IONBF, 0); + setvbuf(stderr, NULL, _IONBF, 0); + } + + // if terminal/tty is enabled + // + if ( c3n == u3_Host.ops_u.tem ) { + // Start raw input. + // + if ( c3n == uty_u->sta_f(uty_u) ) { + u3_assert(!"init-tcsetattr"); + } + + // initialize spinner timeout + // + { + uv_timer_init(u3L, &uty_u->tat_u.sun_u.tim_u); + uty_u->tat_u.sun_u.tim_u.data = uty_u; + } + } +} + +/* u3_term_log_exit(): clean up terminal. +*/ +void +u3_term_log_exit(void) +{ + if ( c3n == u3_Host.ops_u.tem ) { + u3_utty* uty_u; + + for ( uty_u = u3_Host.uty_u; uty_u; uty_u = uty_u->nex_u ) { + if ( uty_u->fid_i == -1 ) { continue; } + if ( c3n == uty_u->sto_f(uty_u) ) { + u3_assert(!"exit-tcsetattr"); + } + u3_write_fd(uty_u->fid_i, "\r\n", 2); + } + } + + if ( u3_Host.uty_u ) { + uv_close((uv_handle_t*)&u3_Host.uty_u->pin_u, 0); + uv_close((uv_handle_t*)&u3_Host.uty_u->pop_u, 0); + } +} + +/* _term_it_write_cb(): general write callback. +*/ +static void +_term_it_write_cb(uv_write_t* wri_u, c3_i sas_i) +{ + // write failure is logged, but otherwise ignored. + // + if ( 0 != sas_i ) { + u3l_log("term: write: %s", uv_strerror(sas_i)); + } + + c3_free(wri_u->data); + c3_free(wri_u); +} + +/* _term_it_write(): write libuv buffer, freeing pointer. +*/ +static void +_term_it_write(u3_utty* uty_u, + uv_buf_t* buf_u, + void* ptr_v) +{ + // work off a local copy of the buffer, in case we need + // to manipulate the length/pointer + // + uv_buf_t fub_u = { .base = buf_u->base, .len = buf_u->len }; + uv_stream_t* han_u = (uv_stream_t*)&(uty_u->pop_u); + c3_i ret_i; + + // try to write synchronously + // + while ( 1 ) { + ret_i = uv_try_write(han_u, &fub_u, 1); + + if ( (ret_i > 0) && (ret_i < fub_u.len) ) { + fub_u.len -= ret_i; + fub_u.base += ret_i; + continue; + } + else { + break; + } + } + + // cue an async write if necessary + // + if ( UV_EAGAIN == ret_i ) { + uv_write_t* wri_u = c3_malloc(sizeof(*wri_u)); + wri_u->data = ptr_v; + + // invoke callback manually on error + // + if ( (ret_i = uv_write(wri_u, han_u, &fub_u, 1, _term_it_write_cb)) ) { + _term_it_write_cb(wri_u, ret_i); + } + } + else { + // synchronous write failure is logged, but otherwise ignored + // + if ( ret_i < 0 ) { + u3l_log("term: write: %s", uv_strerror(ret_i)); + } + + c3_free(ptr_v); + } +} + +/* _term_it_dump_buf(): write static buffer. +*/ +static void +_term_it_dump_buf(u3_utty* uty_u, + uv_buf_t* buf_u) +{ + if ( buf_u->len ) { + _term_it_write(uty_u, buf_u, 0); + } +} + +/* _term_it_dump(): write static vector. +*/ +static void +_term_it_dump(u3_utty* uty_u, + c3_w len_w, + const c3_y* hun_y) +{ + uv_buf_t buf_u = uv_buf_init((c3_c*)hun_y, len_w); + _term_it_dump_buf(uty_u, &buf_u); +} + +/* _term_it_send(): write dynamic vector, freeing pointer. +*/ +static void +_term_it_send(u3_utty* uty_u, + c3_w len_w, + c3_y* hun_y) +{ + if ( len_w ) { + uv_buf_t buf_u = uv_buf_init((c3_c*)hun_y, len_w); + _term_it_write(uty_u, &buf_u, (void*)hun_y); + } + else { + c3_free(hun_y); + } +} + +/* _term_it_send_csi(): send csi escape sequence +*/ +static void +_term_it_send_csi(u3_utty *uty_u, c3_c cmd_c, c3_w num_w, ...) +{ + va_list ap; + va_start(ap, num_w); + + // allocate for escape sequence (2), command char (1), + // argument digits (5 per arg) and separators (1 per arg, minus 1). + // freed via _term_it_write. + // + c3_c* pas_c = c3_malloc( 2 + num_w * 6 ); + c3_y len_y = 0; + + pas_c[len_y++] = '\033'; + pas_c[len_y++] = '['; + + while ( num_w-- ) { + c3_w par_w = va_arg(ap, c3_w); + len_y += sprintf(pas_c+len_y, "%d", par_w); + + if ( num_w ) { + pas_c[len_y++] = ';'; + } + } + + pas_c[len_y++] = cmd_c; + + _term_it_send(uty_u, len_y, (c3_y*)pas_c); + + va_end(ap); +} + +/* _term_it_free_line(): wipe line stored by _term_it_save_stub +*/ +static void +_term_it_free_line(u3_utty* uty_u) +{ + u3z(uty_u->tat_u.mir.lin); + uty_u->tat_u.mir.lin = u3_nul; +} + +/* _term_it_clear_line(): clear line of cursor +*/ +static void +_term_it_clear_line(u3_utty* uty_u) +{ + _term_it_dump(uty_u, TERM_LIT("\r")); + _term_it_dump_buf(uty_u, &uty_u->ufo_u.cel_u); + _term_it_dump_buf(uty_u, &uty_u->ufo_u.ruc_u); + + // if we're clearing the bottom line, clear our mirror of it too + // + if ( uty_u->tat_u.siz.row_l - 1 == uty_u->tat_u.mir.rus_w ) { + _term_it_free_line(uty_u); + } +} + +/* _term_it_show_blank(): blank the screen. +*/ +static void +_term_it_show_blank(u3_utty* uty_u) +{ + _term_it_dump_buf(uty_u, &uty_u->ufo_u.clr_u); + _term_it_dump_buf(uty_u, &uty_u->ufo_u.ruc_u); +} + +/* _term_it_move_cursor(): move cursor to row & column + * + * row 0 is at the top, col 0 is to the left. + * if the given position exceeds the known window size, + * it is clipped to stay within the window. + */ +static void +_term_it_move_cursor(u3_utty* uty_u, c3_w col_w, c3_w row_w) +{ + c3_l row_l = uty_u->tat_u.siz.row_l; + c3_l col_l = uty_u->tat_u.siz.col_l; + if ( row_w >= row_l ) { row_w = row_l - 1; } + if ( col_w >= col_l ) { col_w = col_l - 1; } + + _term_it_send_csi(uty_u, 'H', 2, row_w + 1, col_w + 1); + _term_it_dump_buf(uty_u, &uty_u->ufo_u.suc_u); + + uty_u->tat_u.mir.rus_w = row_w; + uty_u->tat_u.mir.cus_w = col_w; +} + +/* _term_it_show_line(): print at cursor +*/ +static void +_term_it_show_line(u3_utty* uty_u, c3_w* lin_w, c3_w wor_w) +{ + u3_utat* tat_u = &uty_u->tat_u; + c3_y* hun_y = (c3_y*)lin_w; + c3_w byt_w = 0; + + // convert lin_w in-place from utf-32 to utf-8 + // + // (this is just a hand-translation of +tuft) + // XX refactor for use here and in a jet + // + { + c3_w car_w, i_w; + + for ( i_w = 0; i_w < wor_w; i_w++ ) { + car_w = lin_w[i_w]; + + if ( 0x7f >= car_w ) { + hun_y[byt_w++] = car_w; + } + else if ( 0x7ff >= car_w ) { + hun_y[byt_w++] = 0xc0 ^ ((car_w >> 6) & 0x1f); + hun_y[byt_w++] = 0x80 ^ (car_w & 0x3f); + } + else if ( 0xffff >= car_w ) { + hun_y[byt_w++] = 0xe0 ^ ((car_w >> 12) & 0xf); + hun_y[byt_w++] = 0x80 ^ ((car_w >> 6) & 0x3f); + hun_y[byt_w++] = 0x80 ^ (car_w & 0x3f); + } + else { + hun_y[byt_w++] = 0xf0 ^ ((car_w >> 18) & 0x7); + hun_y[byt_w++] = 0x80 ^ ((car_w >> 12) & 0x3f); + hun_y[byt_w++] = 0x80 ^ ((car_w >> 6) & 0x3f); + hun_y[byt_w++] = 0x80 ^ (car_w & 0x3f); + } + } + } + + //NOTE lin_w freed through hun_y by _send + _term_it_send(uty_u, byt_w, hun_y); + _term_it_dump_buf(uty_u, &uty_u->ufo_u.ruc_u); +} + +/* _term_it_restore_line(): re-render original line at bottom of screen +*/ +static void +_term_it_restore_line(u3_utty* uty_u) +{ + u3_utat* tat_u = &uty_u->tat_u; + + _term_it_send_csi(uty_u, 'H', 2, tat_u->siz.row_l, 1); + _term_it_dump_buf(uty_u, &uty_u->ufo_u.cel_u); + _term_it_send_stub(uty_u, u3k(tat_u->mir.lin)); + //NOTE send_stub restores cursor position +} + +/* _term_it_save_stub(): store line if relevant to internal logic + */ +static void +_term_it_save_stub(u3_utty* uty_u, u3_noun tub) +{ + u3_utat* tat_u = &uty_u->tat_u; + u3_noun lin = tat_u->mir.lin; + + // keep track of changes to bottom-most line, to aid screen in restoration + // after printfs or spinners. + // -t mode doesn't need this logic, because it doesn't render the spinner. + // + if ( ( tat_u->siz.row_l - 1 == tat_u->mir.rus_w ) && + ( c3n == u3_Host.ops_u.tem ) ) { + lin = u3dq("wail:klr:format", lin, tat_u->mir.cus_w, u3k(tub), ' '); + lin = u3do("pact:klr:format", lin); + } + + tat_u->mir.lin = lin; + u3z(tub); +} + +/* _term_it_show_nel(): render newline, moving cursor down +*/ +static void +_term_it_show_nel(u3_utty* uty_u) +{ + if ( c3y == u3_Host.ops_u.tem ) { + _term_it_dump(uty_u, TERM_LIT("\n")); + } + else { + _term_it_dump(uty_u, TERM_LIT("\r\n")); + _term_it_dump_buf(uty_u, &uty_u->ufo_u.suc_u); + } + + uty_u->tat_u.mir.cus_w = 0; + if ( uty_u->tat_u.mir.rus_w < uty_u->tat_u.siz.row_l - 1 ) { + uty_u->tat_u.mir.rus_w++; + } + else { + // newline at bottom of screen, so bottom line is now empty + // + _term_it_free_line(uty_u); + } +} + +/* _term_it_path(): path for console file. +*/ +static c3_c* +_term_it_path(u3_noun pax) +{ + c3_w len_w = 0; + c3_c *pas_c; + + // measure + // + { + u3_noun wiz = pax; + + while ( u3_nul != wiz ) { + len_w += (1 + u3r_met(3, u3h(wiz))); + wiz = u3t(wiz); + } + } + + // cut + // + pas_c = c3_malloc(len_w + 1); + pas_c[len_w] = '\0'; + { + u3_noun wiz = pax; + c3_c* waq_c = pas_c; + + while ( u3_nul != wiz ) { + c3_w tis_w = u3r_met(3, u3h(wiz)); + + if ( (u3_nul == u3t(wiz)) ) { + *waq_c++ = '.'; + } else *waq_c++ = '/'; + + u3r_bytes(0, tis_w, (c3_y*)waq_c, u3h(wiz)); + waq_c += tis_w; + + wiz = u3t(wiz); + } + *waq_c = 0; + } + u3z(pax); + return pas_c; +} + +/* _term_it_save(): save file by path. +*/ +static void +_term_it_save(u3_noun pax, u3_noun pad) +{ + c3_c* pax_c = _term_it_path(pax); + + u3_unix_save(pax_c, pad); + c3_free(pax_c); +} + +/* _term_ovum_plan(): plan term ovums, configuring spinner. +*/ +static u3_ovum* +_term_ovum_plan(u3_auto* car_u, u3_noun wir, u3_noun cad) +{ + u3_ovum* egg_u = u3_auto_plan(car_u, u3_ovum_init(0, c3__d, wir, cad)); + + // term events have no spinner label + // + u3z(egg_u->pin_u.lab); + egg_u->pin_u.lab = u3_blip; + + return egg_u; +} + +/* _term_io_belt(): send belt. +*/ +static void +_term_io_belt(u3_utty* uty_u, u3_noun blb) +{ + // XX s/b u3dc("scot", c3__ud, uty_u->tid_l) + // + u3_noun wir = u3nt(c3__term, '1', u3_nul); + u3_noun cad = u3nc(c3__belt, blb); + + u3_assert( 1 == uty_u->tid_l ); + u3_assert( uty_u->car_u ); + + { + u3_ovum* egg_u = _term_ovum_plan(uty_u->car_u, wir, cad); + + // no spinner delay on %ret + // + if ( c3__ret == u3h(blb) ) { + egg_u->pin_u.del_o = c3n; + } + } +} + +/* _term_io_spit(): input the buffer (if any), then input the belt (if any) +*/ +static void +_term_io_spit(u3_utty* uty_u, u3_noun bet) { + u3_utat* tat_u = &uty_u->tat_u; + if (u3_nul != tat_u->fut.imp) { + _term_io_belt(uty_u, u3nc(c3__txt, u3kb_flop(tat_u->fut.imp))); + tat_u->fut.imp = u3_nul; + } + if (u3_none != bet) { + _term_io_belt(uty_u, bet); + } +} + +/* _term_io_suck_char(): process a single character. + * + * Note that this accumulates simple inputs in a buffer, and is not + * guaranteed to flush it fully. After a call (or sequence of calls) + * to this function, please call _term_io_spit(uty_u, u3_none) to + * flush any remainder. + */ +static void +_term_io_suck_char(u3_utty* uty_u, c3_y cay_y) +{ + u3_utat* tat_u = &uty_u->tat_u; + + // escape sequences + // + if ( c3y == tat_u->esc.ape ) { + if ( c3y == tat_u->esc.bra ) { + // vt sequence + // + if ( cay_y == '~' ) { + switch ( tat_u->esc.seq_y ) { + default: { + _term_it_dump_buf(uty_u, &uty_u->ufo_u.bel_u); + break; + } + case '3': _term_io_spit(uty_u, u3nc(c3__del, u3_nul)); break; + } + tat_u->esc.ape = tat_u->esc.bra = c3n; + tat_u->esc.seq_y = 0; + } + else if ( cay_y <= '9' ) { + tat_u->esc.seq_y = cay_y; + } + // xterm sequence + // + else { + switch ( cay_y ) { + default: { + _term_it_dump_buf(uty_u, &uty_u->ufo_u.bel_u); + break; + } + case 'A': _term_io_spit(uty_u, u3nc(c3__aro, 'u')); break; + case 'B': _term_io_spit(uty_u, u3nc(c3__aro, 'd')); break; + case 'C': _term_io_spit(uty_u, u3nc(c3__aro, 'r')); break; + case 'D': _term_io_spit(uty_u, u3nc(c3__aro, 'l')); break; + // + //NOTE mouse reporting not presently enabled, see #109 + case 'M': tat_u->esc.mou = c3y; break; + } + tat_u->esc.ape = tat_u->esc.bra = c3n; + } + } + else { + if ( (cay_y >= 'a') && (cay_y <= 'z') ) { + tat_u->esc.ape = c3n; + // XX for backwards compatibility, check kelvin version + // and fallback to [%met @c] + // + _term_io_spit(uty_u, u3nt(c3__mod, c3__met, cay_y)); + } + else if ( 8 == cay_y || 127 == cay_y ) { + tat_u->esc.ape = c3n; + // XX backwards compatibility [%met @c] + // + _term_io_spit(uty_u, u3nq(c3__mod, c3__met, c3__bac, u3_nul)); + } + else if ( ('[' == cay_y) || ('O' == cay_y) ) { + tat_u->esc.bra = c3y; + } + else { + tat_u->esc.ape = c3n; + + _term_it_dump_buf(uty_u, &uty_u->ufo_u.bel_u); + } + } + } + // mouse input + // + else if ( c3y == tat_u->esc.mou ) { + if ( 0 == tat_u->esc.ton_y ) { + tat_u->esc.ton_y = cay_y - 31; + } + else if ( 0 == tat_u->esc.col_y ) { + tat_u->esc.col_y = cay_y - 32; + } + else { + c3_y row_y = cay_y - 32; + // only acknowledge button 1 presses within our known window + if ( 1 != tat_u->esc.ton_y && row_y <= tat_u->siz.row_l ) { + _term_io_spit(uty_u, u3nt(c3__hit, tat_u->esc.col_y - 1, row_y - 1)); + } + tat_u->esc.mou = c3n; + tat_u->esc.ton_y = tat_u->esc.col_y = 0; + } + } + // unicode inputs + // + else if ( 0 != tat_u->fut.wid_w ) { + tat_u->fut.syb_y[tat_u->fut.len_w++] = cay_y; + + if ( tat_u->fut.len_w == tat_u->fut.wid_w ) { + u3_noun huv = u3i_bytes(tat_u->fut.wid_w, tat_u->fut.syb_y); + u3_noun wug; + + // XX implement directly here and jet + // + wug = u3do("taft", huv); + + tat_u->fut.len_w = tat_u->fut.wid_w = 0; + tat_u->fut.imp = u3nc(wug, tat_u->fut.imp); + } + } + // individual characters + // + else { + if ( (cay_y >= 32) && (cay_y < 127) ) { // visual ascii + tat_u->fut.imp = u3nc(cay_y, tat_u->fut.imp); + } + else if ( 0 == cay_y ) { // null + _term_it_dump_buf(uty_u, &uty_u->ufo_u.bel_u); + } + else if ( 8 == cay_y || 127 == cay_y ) { // backspace & delete + _term_io_spit(uty_u, u3nc(c3__bac, u3_nul)); + } + else if ( 10 == cay_y || 13 == cay_y ) { // newline & carriage return + _term_io_spit(uty_u, u3nc(c3__ret, u3_nul)); + } + else if ( cay_y <= 26 ) { + // XX backwards compatibility [%ctl @c] + // + _term_io_spit(uty_u, u3nt(c3__mod, c3__ctl, ('a' + (cay_y - 1)))); + } + else if ( 27 == cay_y ) { + tat_u->esc.ape = c3y; + } + else if ( cay_y >= 128 ) { + tat_u->fut.len_w = 1; + tat_u->fut.syb_y[0] = cay_y; + + if ( cay_y < 224 ) { + tat_u->fut.wid_w = 2; + } else if ( cay_y < 240 ) { + tat_u->fut.wid_w = 3; + } else tat_u->fut.wid_w = 4; + } + } +} + +/* _term_suck(): process a chunk of input +*/ + +/* + * `nread` (siz_w) is > 0 if there is data available, 0 if libuv is done reading for + * now, or < 0 on error. + * + * The callee is responsible for closing the stream when an error happens + * by calling uv_close(). Trying to read from the stream again is undefined. + * + * The callee is responsible for freeing the buffer, libuv does not reuse it. + * The buffer may be a null buffer (where buf->base=NULL and buf->len=0) on + * error. + */ + +static inline void +_term_suck(u3_utty* uty_u, const c3_y* buf, ssize_t siz_i) +{ + { + if ( siz_i == UV_EOF ) { + // We hear EOF (on the third read callback) if + // 2x the _term_alloc() buffer size is pasted. + // The process hangs if we do nothing (and ctrl-z + // then corrupts the event log), so we force shutdown. + // + u3l_log("term: hangup (EOF)"); + + // XX revise + // + u3_pier_bail(u3_king_stub()); + } + else if ( siz_i < 0 ) { + u3l_log("term %d: read: %s", uty_u->tid_l, uv_strerror(siz_i)); + } + else { + c3_i i; + + for ( i=0; i < siz_i; i++ ) { + _term_io_suck_char(uty_u, buf[i]); + } + _term_io_spit(uty_u, u3_none); + } + } +} + +/* _term_read_cb(): server read callback. +*/ +static void +_term_read_cb(uv_stream_t* tcp_u, + ssize_t siz_i, + const uv_buf_t * buf_u) +{ + u3_utty* uty_u = (u3_utty*)(void*)tcp_u; + _term_suck(uty_u, (const c3_y*)buf_u->base, siz_i); + c3_free(buf_u->base); +} + +/* _term_spin_step(): advance spinner state and (re-)render. +*/ +static void +_term_spin_step(u3_utty* uty_u) +{ + u3_utat* tat_u = &uty_u->tat_u; + c3_w bac_w; + + // calculate backoff from end of line, or bail out + // + { + c3_w cus_w = tat_u->mir.cus_w; + c3_l col_l = tat_u->siz.col_l; + + if ( cus_w >= col_l ) { // shenanigans! + return; + } + + bac_w = col_l - 1 - cus_w; + } + + c3_d lag_d = tat_u->sun_u.eve_d++; + const c3_c daz_c[] = "|/-\\"; + // | + « + why + » + \0 + c3_c buf_c[1 + 2 + 4 + 2 + 1]; + c3_c* cur_c = buf_c; + c3_w sol_w = 1; // spinner length (utf-32) + + // set spinner char + // + *cur_c++ = daz_c[lag_d % (sizeof(daz_c) - 1)]; + + // if we have a spinner, add it between brackets + // + if ( tat_u->sun_u.why_c[0] ) { + *cur_c++ = '\xc2'; + *cur_c++ = '\xab'; + sol_w++; + + { + c3_c* why_c = tat_u->sun_u.why_c; + *cur_c++ = *why_c++; + *cur_c++ = *why_c++; + *cur_c++ = *why_c++; + *cur_c++ = *why_c; + // XX assumes one glyph per char + // + sol_w += 4; + } + + *cur_c++ = '\xc2'; + *cur_c++ = '\xbb'; + sol_w++; + } + + *cur_c = '\0'; + + // write spinner, adjusting cursor as needed + // + // NB: we simply bail out if anything goes wrong + // + { + uv_buf_t lef_u = uty_u->ufo_u.cub_u; + c3_i fid_i = uty_u->fid_i; + + // One-time cursor backoff. + // + if ( c3n == tat_u->sun_u.diz_o ) { + // if we know where the bottom line is, and the cursor is not on it, + // move it to the bottom left + // + if ( tat_u->siz.row_l && tat_u->mir.rus_w < tat_u->siz.row_l - 1 ) { + _term_it_send_csi(uty_u, 'H', 2, tat_u->siz.row_l, 1); + } + + c3_w i_w; + for ( i_w = bac_w; i_w < sol_w; i_w++ ) { + if ( lef_u.len != write(fid_i, lef_u.base, lef_u.len) ) { + return; + } + } + + tat_u->sun_u.diz_o = c3y; + } + + { + c3_w len_w = cur_c - buf_c; + if ( len_w != write(fid_i, buf_c, len_w) ) { + return; + } + } + + // Cursor stays on spinner. + // + while ( sol_w-- ) { + if ( lef_u.len != write(fid_i, lef_u.base, lef_u.len) ) { + return; + } + } + } +} + +/* _term_spin_timer_cb(): render spinner +*/ +static void +_term_spin_timer_cb(uv_timer_t* tim_u) +{ + u3_utty* uty_u = tim_u->data; + _term_spin_step(uty_u); +} + +#define _SPIN_FAST_US 100UL // spinner activation delay when expected +#define _SPIN_COOL_US 500UL // spinner activation delay when cool +#define _SPIN_WARM_US 50UL // spinner activation delay when warm +#define _SPIN_RATE_US 250UL // spinner rate (ms/frame) +#define _SPIN_IDLE_US 500UL // spinner cools down if stopped this long + +/* u3_term_start_spinner(): prepare spinner state. RETAIN. +*/ +void +u3_term_start_spinner(u3_atom say, c3_o del_o) +{ + if ( c3n == u3_Host.ops_u.tem ) { + u3_utty* uty_u = _term_main(); + u3_utat* tat_u = &uty_u->tat_u; + + tat_u->sun_u.why_c[4] = 0; + u3r_bytes(0, 4, (c3_y*)tat_u->sun_u.why_c, say); + + tat_u->sun_u.eve_d = 0; + // XX must be c3n for cursor backoff from EOL? + tat_u->sun_u.diz_o = c3n; + + { + c3_d now_d = _term_msc_out_host(); + c3_d end_d = tat_u->sun_u.end_d; + c3_d wen_d = (c3n == del_o) ? _SPIN_FAST_US : + (now_d - end_d < _SPIN_IDLE_US) ? + _SPIN_WARM_US : _SPIN_COOL_US; + + uv_timer_start(&tat_u->sun_u.tim_u, + _term_spin_timer_cb, + wen_d, _SPIN_RATE_US); + } + } +} + +/* u3_term_stop_spinner(): reset spinner state and restore input line. +*/ +void +u3_term_stop_spinner(void) +{ + if ( c3n == u3_Host.ops_u.tem ) { + u3_utty* uty_u = _term_main(); + u3_utat* tat_u = &uty_u->tat_u; + + memset(tat_u->sun_u.why_c, 0, 5); + + uv_timer_stop(&tat_u->sun_u.tim_u); + + if ( c3y == tat_u->sun_u.diz_o ) { + _term_it_restore_line(uty_u); + tat_u->sun_u.end_d = _term_msc_out_host(); + tat_u->sun_u.diz_o = c3n; + } + else { + tat_u->sun_u.end_d = 0; + } + } +} + +/* _term_main(): return main or console terminal. +*/ +static u3_utty* +_term_main() +{ + u3_utty* uty_u; + + for ( uty_u = u3_Host.uty_u; uty_u; uty_u = uty_u->nex_u ) { + if ( (uty_u->fid_i != -1) && (uty_u->fid_i <= 2) ) { + return uty_u; + } + } + return u3_Host.uty_u; +} + +/* _term_ef_get(): terminal by id. +*/ +static u3_utty* +_term_ef_get(c3_l tid_l) +{ + if ( 0 != tid_l ) { + u3_utty* uty_u; + + for ( uty_u = u3_Host.uty_u; uty_u; uty_u = uty_u->nex_u ) { + if ( tid_l == uty_u->tid_l ) { + return uty_u; + } + } + } + return _term_main(); +} + +/* u3_term_get_blew(): return window size [columns rows]. +*/ +u3_noun +u3_term_get_blew(c3_l tid_l) +{ + u3_utty* uty_u = _term_ef_get(tid_l); + c3_l col_l = 80, row_l = 24; + + if ( (c3n == u3_Host.ops_u.tem) && uty_u && + (c3y == uty_u->wsz_f(uty_u, &col_l, &row_l)) ) + { + uty_u->tat_u.siz.col_l = col_l; + uty_u->tat_u.siz.row_l = row_l; + } + + return u3nc(col_l, row_l); +} + +/* u3_term_ef_winc(): window change. Just console right now. +*/ +void +u3_term_ef_winc(void) +{ + // XX groace, this should be a global handler sent to each pier + // + if ( u3_Host.uty_u->car_u ) { + u3_noun wir = u3nt(c3__term, '1', u3_nul); + u3_noun cad = u3nc(c3__blew, u3_term_get_blew(1)); + + u3_assert( 1 == u3_Host.uty_u->tid_l ); + + _term_ovum_plan(u3_Host.uty_u->car_u, wir, cad); + } +} + +/* u3_term_ef_ctlc(): send ^C on console. +*/ +void +u3_term_ef_ctlc(void) +{ + u3_utty* uty_u = _term_main(); + + if ( uty_u->car_u ) { + u3_noun wir = u3nt(c3__term, '1', u3_nul); + u3_noun cad = u3nq(c3__belt, c3__mod, c3__ctl, 'c'); + + u3_assert( 1 == uty_u->tid_l ); + _term_ovum_plan(uty_u->car_u, wir, cad); + } +} + +/* _term_it_put_value(): put numeric color value on lin_w. +*/ +static c3_w +_term_it_put_value(c3_w* lin_w, + u3_atom val) +{ + c3_c str_c[4]; + c3_w len = snprintf(str_c, 4, "%d", val % 256); + for ( c3_w i_w = 0; i_w < len; i_w++ ) { + lin_w[i_w] = str_c[i_w]; + } + u3z(val); + return len; +} + +/* _term_it_put_tint(): put ansi color id on lin_w. RETAINS col. +*/ +static c3_w +_term_it_put_tint(c3_w* lin_w, + u3_noun col) +{ + u3_noun red, gre, blu; + c3_o tru = u3r_trel(col, &red, &gre, &blu); + + // 24-bit color + // + if ( c3y == tru ) { + c3_w n = 0; + + *lin_w++ = '8'; + *lin_w++ = ';'; + *lin_w++ = '2'; + *lin_w++ = ';'; + + c3_w m = _term_it_put_value(lin_w, red); + n += m; + lin_w += m; + + *lin_w++ = ';'; + + m = _term_it_put_value(lin_w, gre); + n += m; + lin_w += m; + + *lin_w++ = ';'; + + n += _term_it_put_value(lin_w, blu); + + return n + 6; + } + // standard color + // + else { + switch ( col ) { + default: + case u3_nul: *lin_w = '9'; break; + case 'k': *lin_w = '0'; break; + case 'r': *lin_w = '1'; break; + case 'g': *lin_w = '2'; break; + case 'y': *lin_w = '3'; break; + case 'b': *lin_w = '4'; break; + case 'm': *lin_w = '5'; break; + case 'c': *lin_w = '6'; break; + case 'w': *lin_w = '7'; break; + } + return 1; + } +} + +/* _term_it_put_deco(): put ansi sgr code on lin_w. RETAINS dec. +*/ +static void +_term_it_put_deco(c3_w* lin_w, + u3_noun dec) +{ + switch ( dec ) { + default: + case u3_nul: *lin_w = '0'; break; + case c3__br: *lin_w = '1'; break; + case c3__un: *lin_w = '4'; break; + case c3__bl: *lin_w = '5'; break; + } +} + +/* _term_it_send_stub(): send styled text, without saving +*/ +static void +_term_it_send_stub(u3_utty* uty_u, + u3_noun tub) +{ + c3_w tuc_w = u3qb_lent(tub); + + // count the amount of characters across all stubs + // + c3_w lec_w = 0; + { + u3_noun nub = tub; + while ( u3_nul != nub ) { + u3_noun nib = u3t(u3h(nub)); + lec_w = lec_w + u3qb_lent(nib); + nub = u3t(nub); + } + } + + // allocate enough memory for every display character, plus styles + // + //NOTE we use max 48 characters per styl for escape codes: + // 2 for opening, 7 for decorations, 2x16 for colors, 4 for closing, + // and 3 as separators between decorations and colors. + // + c3_w* lin_w = c3_malloc( sizeof(c3_w) * (lec_w + (48 * tuc_w)) ); + + // write the contents to the buffer, + // tracking total and escape characters written + // + c3_w i_w = 0; + { + u3_noun nub = tub; + while ( u3_nul != nub ) { + u3_noun tyl, nib, dec, bag, fog; + u3x_cell(u3h(nub), &tyl, &nib); + u3x_trel(tyl, &dec, &bag, &fog); + + c3_o tyl_o = c3n; + if ( ( c3n == u3_Host.ops_u.tem ) && + ( (u3_nul != dec) || (u3_nul != bag) || (u3_nul != fog) ) ) { + tyl_o = c3y; + } + + // write style escape sequences + // + if ( c3y == tyl_o ) { + c3_o mor_o = c3n; + lin_w[i_w++] = 27; + lin_w[i_w++] = '['; + + // text decorations + // + { + u3_noun dos = u3qdi_tap(dec); + u3_noun des = dos; + while ( u3_nul != des ) { + if ( c3y == mor_o ) { + lin_w[i_w++] = ';'; + } + _term_it_put_deco(&lin_w[i_w++], u3h(des)); + mor_o = c3y; + des = u3t(des); + } + u3z(dos); + } + + // background color + // + if ( u3_nul != bag ) { + if ( c3y == mor_o ) { + lin_w[i_w++] = ';'; + } + lin_w[i_w++] = '4'; + c3_w put_w = _term_it_put_tint(&lin_w[i_w], bag); + i_w += put_w; + mor_o = c3y; + } + + // foreground color + // + if ( u3_nul != fog ) { + if ( c3y == mor_o ) { + lin_w[i_w++] = ';'; + } + lin_w[i_w++] = '3'; + c3_w put_w = _term_it_put_tint(&lin_w[i_w], fog); + i_w += put_w; + mor_o = c3y; + } + + lin_w[i_w++] = 'm'; + } + + // write the text itself + // + for ( ; u3_nul != nib; i_w++, nib = u3t(nib) ) { + lin_w[i_w] = u3r_word(0, u3h(nib)); + } + + // if we applied any styles, toggle them off + // + if ( c3y == tyl_o ) { + lin_w[i_w++] = 27; + lin_w[i_w++] = '['; + lin_w[i_w++] = '0'; + lin_w[i_w++] = 'm'; + } + + nub = u3t(nub); + } + } + + _term_it_show_line(uty_u, lin_w, i_w); + + u3z(tub); +} + +/* _term_it_send_stub(): send styled text to terminal as ansi escape sequences +*/ +static void +_term_it_show_stub(u3_utty* uty_u, + u3_noun tub) +{ + _term_it_send_stub(uty_u, u3k(tub)); + _term_it_save_stub(uty_u, tub); +} + +/* _term_it_show_tour(): send utf32 to terminal. +*/ +static void +_term_it_show_tour(u3_utty* uty_u, + u3_noun lin) +{ + c3_w len_w = u3qb_lent(lin); + c3_w* lin_w = c3_malloc( sizeof(c3_w) * len_w ); + + { + c3_w i_w; + + for ( i_w = 0; u3_nul != lin; i_w++, lin = u3t(lin) ) { + lin_w[i_w] = u3r_word(0, u3h(lin)); + } + } + + _term_it_show_line(uty_u, lin_w, len_w); + + { + u3_noun tub = u3i_list(u3nc(u3nt(u3_nul, u3_nul, u3_nul), lin), u3_none); + _term_it_save_stub(uty_u, tub); + } + + //NOTE lin transferred to tub above +} + +/* _term_ef_blit(): send blit to terminal. +*/ +static void +_term_ef_blit(u3_utty* uty_u, + u3_noun blt) +{ + switch ( u3h(blt) ) { + default: break; + + case c3__bel: { + _term_it_dump_buf(uty_u, &uty_u->ufo_u.bel_u); + } break; + + case c3__clr: { + _term_it_show_blank(uty_u); + } break; + + case c3__hop: { + u3_noun pos = u3t(blt); + if ( c3y == u3ud(pos) ) { + _term_it_move_cursor(uty_u, pos, uty_u->tat_u.siz.row_l - 1); + } + else { + _term_it_move_cursor(uty_u, u3h(pos), u3t(pos)); + } + } break; + + case c3__klr: { + _term_it_show_stub(uty_u, u3k(u3t(blt))); + } break; + + case c3__lin: { //TMP backwards compatibility + _term_it_move_cursor(uty_u, 0, uty_u->tat_u.siz.row_l - 1); + _term_it_clear_line(uty_u); + } // + case c3__put: { + _term_it_show_tour(uty_u, u3k(u3t(blt))); + } break; + + case c3__mor: { + if (u3_nul != u3t(blt)) { + u3_noun bis = u3t(blt); + while (u3_nul != bis) { + _term_ef_blit(uty_u, u3k(u3h(bis))); + bis = u3t(bis); + } + break; + } + //TMP fall through to nel for backwards compatibility + } + case c3__nel: { + _term_it_show_nel(uty_u); + } break; + + case c3__sav: { + u3_noun pax, dat; + u3x_cell(u3t(blt), &pax, &dat); + + _term_it_save(u3k(pax), u3k(dat)); + } break; + + case c3__sag: { + u3_noun pax, dat; + u3x_cell(u3t(blt), &pax, &dat); + + _term_it_save(u3k(pax), u3qe_jam(dat)); + } break; + + case c3__url: { + // platform-agnostically opening the default web browser from within a + // c program is an unsolved problem. + } break; + + case c3__wyp: { + _term_it_clear_line(uty_u); + } break; + } + + u3z(blt); +} + +/* _term_ef_blit_lame(): simplified output handling for -t +*/ +static void +_term_ef_blit_lame(u3_utty* uty_u, + u3_noun blt) +{ + switch ( u3h(blt) ) { + default: break; + + case c3__klr: { + _term_it_show_stub(uty_u, u3k(u3t(blt))); + _term_it_show_nel(uty_u); + } break; + + case c3__lin: //TMP backwards compatibility + case c3__put: { + _term_it_show_tour(uty_u, u3k(u3t(blt))); + _term_it_show_nel(uty_u); + } break; + + case c3__sav: { + u3_noun pax, dat; + u3x_cell(u3t(blt), &pax, &dat); + + _term_it_save(u3k(pax), u3k(dat)); + } break; + + case c3__sag: { + u3_noun pax, dat; + u3x_cell(u3t(blt), &pax, &dat); + + _term_it_save(u3k(pax), u3qe_jam(dat)); + } break; + } + + u3z(blt); +} + +/* u3_term_io_hija(): hijack console for fprintf, returning FILE*. +*/ +FILE* +u3_term_io_hija(void) +{ + u3_utty* uty_u = _term_main(); + + if ( uty_u && uty_u->tat_u.siz.row_l ) { + if ( uty_u->fid_i > 2 ) { + // We *should* in fact, produce some kind of fake FILE* for + // non-console terminals. If we use this interface enough... + // + u3_assert(0); + } + else { + if ( c3n == u3_Host.ops_u.tem ) { + if ( c3y != uty_u->hij_f(uty_u) ) { + u3_assert(!"hija-tcsetattr"); + } + + // move the cursor to the bottom left corner, + // and wipe that bottom line. + // + _term_it_send_csi(uty_u, 'H', 2, uty_u->tat_u.siz.row_l, 1); + _term_it_dump_buf(uty_u, &uty_u->ufo_u.cel_u); + } + } + } + return stdout; +} + +/* u3_term_io_loja(): release console from fprintf. +*/ +void +u3_term_io_loja(int x, FILE* f) +{ + u3_utty* uty_u = _term_main(); + + if ( uty_u && uty_u->tat_u.siz.row_l ) { + if ( uty_u->fid_i > 2 ) { + // We *should* in fact, produce some kind of fake FILE* for + // non-console terminals. If we use this interface enough... + // + u3_assert(0); + } + else { + if ( c3y == u3_Host.ops_u.tem ) { + fprintf(f, "\n"); + fflush(f); + } + else { + if ( c3y != uty_u->loj_f(uty_u) ) { + u3_assert(!"loja-tcsetattr"); + } + + // push the printfs up one more line, + // and re-render the bottom-most line, which we clobbered. + // + _term_it_dump(uty_u, TERM_LIT("\n")); + _term_it_restore_line(uty_u); + } + } + } + else { + fprintf(f, "\r\n"); + } +} + +/* u3_term_it_log(): writes a log message +*/ +void +u3_term_io_log(c3_c* line) +{ + FILE* stream = u3_term_io_hija(); + int x = fprintf(stream, "%s", line); + fflush(stream); + u3_term_io_loja(x, stream); //TODO remove arg? unused... +} + +/* u3_term_tape_to(): dump a tape to a file. +*/ +void +u3_term_tape_to(FILE *fil_f, u3_noun tep) +{ + u3_noun tap = tep; + + while ( u3_nul != tap ) { + c3_c car_c; + + if ( u3h(tap) >= 127 ) { + car_c = '?'; + } else car_c = u3h(tap); + + putc(car_c, fil_f); + tap = u3t(tap); + } + u3z(tep); +} + +/* u3_term_tape(): dump a tape to stdout. +*/ +void +u3_term_tape(u3_noun tep) +{ + FILE* fil_f = u3_term_io_hija(); + + u3_term_tape_to(fil_f, tep); + + u3_term_io_loja(0, fil_f); +} + +/* u3_term_wall(): dump a wall to stdout. +*/ +void +u3_term_wall(u3_noun wol) +{ + FILE* fil_f = u3_term_io_hija(); + u3_noun wal = wol; + + while ( u3_nul != wal ) { + u3_term_tape_to(fil_f, u3k(u3h(wal))); + + putc(13, fil_f); + putc(10, fil_f); + + wal = u3t(wal); + } + u3_term_io_loja(0, fil_f); + + u3z(wol); +} + +static void +_born_bail_cb(u3_ovum *egg_u, u3_noun stacktraces) { + u3z(stacktraces); + u3_ovum_free(egg_u); +} + +/* _term_io_talk(): +*/ +static void +_term_io_talk(u3_auto* car_u) +{ + if ( c3n == u3_Host.ops_u.tem ) { + u3_utty* uty_u = _term_main(); + + uv_read_start((uv_stream_t*)&(uty_u->pin_u), + _term_alloc, + _term_read_cb); + } + + //TODO reevaluate wrt dill sessions + // + u3_noun wir = u3nt(c3__term, '1', u3_nul); + u3_noun cad; + + // send born event + // + { + cad = u3nc(c3__born, u3_nul); + u3_ovum* egg_u = u3_auto_plan(car_u, u3_ovum_init(0, c3__d, u3k(wir), cad)); + u3z(egg_u->pin_u.lab); + egg_u->pin_u.lab = u3_blip; + + u3_auto_peer(egg_u, 0, 0, _born_bail_cb); + } + + // send terminal dimensions + // + { + cad = u3nc(c3__blew, u3_term_get_blew(1)); + _term_ovum_plan(car_u, u3k(wir), cad); + } + + // refresh terminal state + // + { + cad = u3nc(c3__hail, u3_nul); + _term_ovum_plan(car_u, wir, cad); + } +} + +/* _reck_orchid(): parses only a number as text + * + * Parses a text string which contains a decimal number. In practice, this + * number is always '1'. + */ +static u3_noun +_reck_orchid(u3_noun fot, u3_noun txt, c3_l* tid_l) +{ + c3_c* str = u3r_string(txt); + c3_d ato_d = strtol(str, NULL, 10); + c3_free(str); + + if ( ato_d >= 0x80000000ULL ) { + return c3n; + } else { + *tid_l = (c3_l) ato_d; + + return c3y; + } +} + +/* _term_io_quiz(): handle quiz (query to serf). +*/ +static void +_term_io_quiz(c3_m mot_m, void* vod_p, u3_noun res) +{ + u3_auto* car_u = (u3_auto*)vod_p; + u3_noun wir = u3nt(c3__term, '1', u3_nul); + u3_noun cad = u3k(res); + u3_auto_plan(car_u, u3_ovum_init(0, c3__d, wir, cad)); +} + +/* _term_io_kick(): apply effects. +*/ +static c3_o +_term_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad) +{ + u3_noun tag, dat, i_wir, t_wir; + c3_o ret_o; + + if ( (c3n == u3r_cell(wir, &i_wir, &t_wir)) + || (c3n == u3r_cell(cad, &tag, &dat)) + || (c3__term != i_wir) ) + { + ret_o = c3n; + } + else { + u3_noun pud = t_wir; + u3_noun p_pud, q_pud; + c3_l tid_l; + + if ( (c3n == u3r_cell(pud, &p_pud, &q_pud)) + || (u3_nul != q_pud) + || (c3n == _reck_orchid(c3__ud, u3k(p_pud), &tid_l)) ) + { + u3l_log("term: bad tire"); + ret_o = c3n; + } + else { + switch ( tag ) { + default: { + ret_o = c3n; + } break; + + case c3__blit: { + ret_o = c3y; + + { + u3_utty* uty_u = _term_ef_get(tid_l); + if ( 0 == uty_u ) { + // u3l_log("no terminal %d", tid_l); + // u3l_log("uty_u %p", u3_Host.uty_u); + } + else { + u3_noun bis = dat; + + while ( c3y == u3du(bis) ) { + if (c3n == u3_Host.ops_u.tem) { + _term_ef_blit(uty_u, u3k(u3h(bis))); + } + else { + _term_ef_blit_lame(uty_u, u3k(u3h(bis))); + } + bis = u3t(bis); + } + } + } + } break; + + // XX obsolete %ames + // + // case c3__send: + + case c3__logo: { + ret_o = c3y; + u3_pier_exit(car_u->pir_u); + // XX validate? ignore? + // + u3_Host.xit_i = dat; + } break; + + case c3__mass: { + ret_o = c3y; + + // gc the daemon area + // + // XX disabled due to known leaks; uncomment for dev + // + // uv_timer_start(&u3K.tim_u, (uv_timer_cb)u3_king_grab, 0, 0); + } break; + + case c3__meld: { + ret_o = c3y; + u3_pier_meld(car_u->pir_u); + } break; + + case c3__pack: { + ret_o = c3y; + u3_pier_pack(car_u->pir_u); + } break; + + case c3__quac: { + ret_o = c3y; + u3_lord_quiz(u3K.pir_u->god_u, c3__quac, car_u, _term_io_quiz); + } break; + } + } + } + + u3z(wir); u3z(cad); + return ret_o; +} + +static void +_term_io_exit_cb(uv_handle_t* han_u) +{ + u3_auto* car_u = han_u->data; + c3_free(car_u); +} + +/* _term_io_exit(): clean up terminal. +*/ +static void +_term_io_exit(u3_auto* car_u) +{ + u3_utty* uty_u = _term_main(); + + if ( c3n == u3_Host.ops_u.tem ) { + // move cursor to the end + // + _term_it_move_cursor(uty_u, 0, uty_u->tat_u.siz.row_l - 1); + + // NB, closed in u3_term_log_exit() + // + uv_read_stop((uv_stream_t*)&(uty_u->pin_u)); + + uv_timer_t* han_u = &(uty_u->tat_u.sun_u.tim_u); + han_u->data = car_u; + + uv_close((uv_handle_t*)han_u, _term_io_exit_cb); + } + else { + c3_free(car_u); + } +} + +/* u3_term_io_init(): initialize terminal +*/ +u3_auto* +u3_term_io_init(u3_pier* pir_u) +{ + u3_auto* car_u = c3_calloc(sizeof(*car_u)); + + u3_assert( u3_Host.uty_u ); + u3_Host.uty_u->car_u = car_u; + + car_u->nam_m = c3__term; + car_u->liv_o = c3y; + car_u->io.talk_f = _term_io_talk; + car_u->io.kick_f = _term_io_kick; + car_u->io.exit_f = _term_io_exit; + + return car_u; +} diff --git a/vere/pkg/vere/io/unix.c b/vere/pkg/vere/io/unix.c new file mode 100644 index 0000000..9d92e81 --- /dev/null +++ b/vere/pkg/vere/io/unix.c @@ -0,0 +1,1604 @@ +/// @file + +/* +** this file is responsible for maintaining a bidirectional +** mapping between the contents of a clay desk and a directory +** in a unix filesystem. +** +** TODO this driver is crufty and overdue for a rewrite. +** aspirationally, the rewrite should do sanity checking and +** transformations at the noun level to convert messages from +** arvo into sets of fs operations on trusted inputs, and +** inverse transformations and checks for fs contents to arvo +** messages. +** +** the two relevant transformations to apply are: +** +** 1. bidirectionally map file contents to atoms +** 2. bidirectionally map arvo $path <-> unix relative paths +** +** the first transform is trivial. the second poses some +** challenges: an arvo $path is a list of $knot, and the $knot +** space intersects with invalid unix paths in the three cases +** of: %$ (the empty knot), '.', and '..'. we escape these by +** prepending a '!' to the filename corresponding to the $knot, +** yielding unix files named '!', '!.', and '!..'. +** +** there is also the case of the empty path. we elide empty +** paths from this wrapper, which always uses the last path +** component as the file extension/mime-type. +** +** these transforms are implemented, but they ought to be +** implemented in one place, prior to any fs calls; as-is, they +** are sprinkled throughout the file updating code. +** +*/ + +#include "vere.h" + +#include + +#include "noun.h" + +struct _u3_umon; +struct _u3_udir; +struct _u3_ufil; + +/* u3_unod: file or directory. +*/ + typedef struct _u3_unod { + c3_o dir; // c3y if dir, c3n if file + c3_o dry; // ie, unmodified + c3_c* pax_c; // absolute path + struct _u3_udir* par_u; // parent + struct _u3_unod* nex_u; // internal list + } u3_unod; + +/* u3_ufil: synchronized file. +*/ + typedef struct _u3_ufil { + c3_o dir; // c3y if dir, c3n if file + c3_o dry; // ie, unmodified + c3_c* pax_c; // absolute path + struct _u3_udir* par_u; // parent + struct _u3_unod* nex_u; // internal list + c3_w gum_w; // mug of last %ergo + } u3_ufil; + +/* u3_ufil: synchronized directory. +*/ + typedef struct _u3_udir { + c3_o dir; // c3y if dir, c3n if file + c3_o dry; // ie, unmodified + c3_c* pax_c; // absolute path + struct _u3_udir* par_u; // parent + struct _u3_unod* nex_u; // internal list + u3_unod* kid_u; // subnodes + } u3_udir; + +/* u3_ufil: synchronized mount point. +*/ + typedef struct _u3_umon { + u3_udir dir_u; // root directory, must be first + c3_c* nam_c; // mount point name + struct _u3_umon* nex_u; // internal list + } u3_umon; + +/* u3_unix: clay support system, also +*/ + typedef struct _u3_unix { + u3_auto car_u; + c3_l sev_l; // instance number + u3_umon* mon_u; // mount points + c3_c* pax_c; // pier directory + c3_o alm; // timer set + c3_o dyr; // ready to update + u3_noun sat; // (sane %ta) handle +#ifdef SYNCLOG + c3_w lot_w; // sync-slot + struct _u3_sylo { + c3_o unx; // from unix + c3_m wer_m; // mote saying where + c3_m wot_m; // mote saying what + c3_c* pax_c; // path + } sylo[1024]; +#endif + } u3_unix; + +void +u3_unix_ef_look(u3_unix* unx_u, u3_noun mon, u3_noun all); + +/* u3_unix_cane(): true iff (unix) path is canonical. +*/ +c3_t +u3_unix_cane(const c3_c* pax_c) +{ + if ( 0 == pax_c ) { + return 0; + } + // allow absolute paths. + // + if ( '/' == *pax_c ) { + pax_c++; + // allow root. + // + if ( 0 == *pax_c ) { + return 1; + } + } + do { + if ( 0 == *pax_c + || 0 == strcmp(".", pax_c) + || 0 == strcmp("..", pax_c) + || 0 == strncmp("/", pax_c, 1) + || 0 == strncmp("./", pax_c, 2) + || 0 == strncmp("../", pax_c, 3) ) + { + return 0; + } + pax_c = strchr(pax_c, '/'); + } while ( 0 != pax_c++ ); + return 1; +} + +/* _unix_sane_ta(): true iff pat is a valid @ta +** +** %ta is parsed by: +** (star ;~(pose nud low hep dot sig cab)) +*/ +static c3_t +_unix_sane_ta(u3_unix* unx_u, u3_atom pat) +{ + return _(u3n_slam_on(u3k(unx_u->sat), pat)); +} + +/* u3_readdir_r(): +*/ +c3_w +u3_readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result) +{ + errno = 0; + struct dirent * tmp_u = readdir(dirp); + + if (NULL == tmp_u){ + *result = NULL; + return (errno); // either success or error code + } else { + memcpy(entry, tmp_u, sizeof(struct dirent)); + *result = entry; + } + + return(0); +} + +/* _unix_string_to_knot(): convert c unix path component to $knot +*/ +static u3_atom +_unix_string_to_knot(c3_c* pax_c) +{ + u3_assert(pax_c); + // XX this can happen if we encounter a file without an extension. + // + // u3_assert(*pax_c); + u3_assert(!strchr(pax_c, '/')); + // XX horrible + // +# ifdef _WIN32 + u3_assert(!strchr(pax_c, '\\')); +# endif + if ( '!' == *pax_c ) { + pax_c++; + } + return u3i_string(pax_c); +} + +/* _unix_knot_to_string(): convert $knot to c unix path component. RETAIN. +*/ +static c3_c* +_unix_knot_to_string(u3_atom pon) +{ + c3_c* ret_c; + + if ( u3_nul != pon + && c3_s1('.') != pon + && c3_s2('.','.') != pon + && '!' != u3r_byte(0, pon) ) + { + ret_c = u3r_string(pon); + } + else { + c3_w met_w = u3r_met(3, pon); + + ret_c = c3_malloc(met_w + 2); + *ret_c = '!'; + u3r_bytes(0, met_w, (c3_y*)ret_c + 1, pon); + ret_c[met_w + 1] = 0; + } + u3_assert(!strchr(ret_c, '/')); +# ifdef _WIN32 + u3_assert(!strchr(ret_c, '\\')); +# endif + return ret_c; +} + +/* _unix_down(): descend path. +*/ +static c3_c* +_unix_down(c3_c* pax_c, c3_c* sub_c) +{ + c3_w pax_w = strlen(pax_c); + c3_w sub_w = strlen(sub_c); + c3_c* don_c = c3_malloc(pax_w + sub_w + 2); + + strcpy(don_c, pax_c); + don_c[pax_w] = '/'; + strcpy(don_c + pax_w + 1, sub_c); + don_c[pax_w + 1 + sub_w] = '\0'; + + return don_c; +} + +/* _unix_string_to_path(): convert c string to u3_noun $path +** +** c string must begin with the pier path plus mountpoint +*/ +static u3_noun +_unix_string_to_path_helper(c3_c* pax_c) +{ + u3_noun not; + + u3_assert(pax_c[-1] == '/'); + c3_c* end_c = strchr(pax_c, '/'); + if ( !end_c ) { + end_c = strrchr(pax_c, '.'); + if ( !end_c ) { + return u3nc(_unix_string_to_knot(pax_c), u3_nul); + } + else { + *end_c = 0; + not = _unix_string_to_knot(pax_c); + *end_c = '.'; + return u3nt(not, _unix_string_to_knot(end_c + 1), u3_nul); + } + } + else { + *end_c = 0; + not = _unix_string_to_knot(pax_c); + *end_c = '/'; + return u3nc(not, _unix_string_to_path_helper(end_c + 1)); + } +} +static u3_noun +_unix_string_to_path(u3_unix* unx_u, c3_c* pax_c) +{ + pax_c += strlen(unx_u->pax_c) + 1; + c3_c* pox_c = strchr(pax_c, '/'); + if ( !pox_c ) { + pox_c = strchr(pax_c, '.'); + if ( !pox_c ) { + return u3_nul; + } + else { + return u3nc(_unix_string_to_knot(pox_c + 1), u3_nul); + } + } + else { + return _unix_string_to_path_helper(pox_c + 1); + } +} + +/* _unix_mkdirp(): recursive mkdir of dirname of pax_c. +*/ +static void +_unix_mkdirp(c3_c* pax_c) +{ + c3_c* fas_c = strchr(pax_c + 1, '/'); + + while ( fas_c ) { + *fas_c = 0; + if ( 0 != mkdir(pax_c, 0777) && EEXIST != errno ) { + u3l_log("unix: mkdir %s: %s", pax_c, strerror(errno)); + u3m_bail(c3__fail); + } + *fas_c++ = '/'; + fas_c = strchr(fas_c, '/'); + } +} + +/* u3_unix_save(): save file under .../.urb/put or bail. +** +** XX this is quite bad, and doesn't share much in common with +** the rest of unix.c. a refactor would probably share common +** logic with _unix_sync_change, perhaps using openat, making +** unx_u optional, and/or having a flag to not track the file +** for future changes. +*/ +void +u3_unix_save(c3_c* pax_c, u3_atom pad) +{ + c3_i fid_i; + c3_w lod_w, len_w, fln_w, rit_w; + c3_y* pad_y; + c3_c* ful_c; + + if ( !u3_unix_cane(pax_c) ) { + u3l_log("%s: non-canonical path", pax_c); + u3z(pad); u3m_bail(c3__fail); + } + if ( '/' == *pax_c) { + pax_c++; + } + lod_w = strlen(u3_Host.dir_c); + len_w = lod_w + sizeof("/.urb/put/") + strlen(pax_c); + ful_c = c3_malloc(len_w); + rit_w = snprintf(ful_c, len_w, "%s/.urb/put/%s", u3_Host.dir_c, pax_c); + u3_assert(len_w == rit_w + 1); + + _unix_mkdirp(ful_c); + fid_i = c3_open(ful_c, O_WRONLY | O_CREAT | O_TRUNC, 0666); + if ( fid_i < 0 ) { + u3l_log("%s: %s", ful_c, strerror(errno)); + c3_free(ful_c); + u3z(pad); u3m_bail(c3__fail); + } + + fln_w = u3r_met(3, pad); + pad_y = c3_malloc(fln_w); + u3r_bytes(0, fln_w, pad_y, pad); + u3z(pad); + rit_w = write(fid_i, pad_y, fln_w); + close(fid_i); + c3_free(pad_y); + + if ( rit_w != fln_w ) { + u3l_log("%s: %s", ful_c, strerror(errno)); + c3_free(ful_c); + u3m_bail(c3__fail); + } + c3_free(ful_c); +} + +/* _unix_rm_r_cb(): callback to delete individual files/directories +*/ +static c3_i +_unix_rm_r_cb(const c3_c* pax_c, + const struct stat* buf_u, + c3_i typeflag, + struct FTW* ftw_u) +{ + switch ( typeflag ) { + default: + u3l_log("bad file type in rm_r: %s", pax_c); + break; + case FTW_F: + if ( 0 != c3_unlink(pax_c) && ENOENT != errno ) { + u3l_log("error unlinking (in rm_r) %s: %s", + pax_c, strerror(errno)); + u3_assert(0); + } + break; + case FTW_D: + u3l_log("shouldn't have gotten pure directory: %s", pax_c); + break; + case FTW_DNR: + u3l_log("couldn't read directory: %s", pax_c); + break; + case FTW_NS: + u3l_log("couldn't stat path: %s", pax_c); + break; + case FTW_DP: + if ( 0 != c3_rmdir(pax_c) && ENOENT != errno ) { + u3l_log("error rmdiring %s: %s", pax_c, strerror(errno)); + u3_assert(0); + } + break; + case FTW_SL: + u3l_log("got symbolic link: %s", pax_c); + break; + case FTW_SLN: + u3l_log("got nonexistent symbolic link: %s", pax_c); + break; + } + + return 0; +} + +/* _unix_rm_r(): rm -r directory +*/ +static void +_unix_rm_r(c3_c* pax_c) +{ + if ( 0 > nftw(pax_c, _unix_rm_r_cb, 100, FTW_DEPTH | FTW_PHYS ) + && ENOENT != errno) { + u3l_log("rm_r error on %s: %s", pax_c, strerror(errno)); + } +} + +/* _unix_mkdir(): mkdir, asserting. +*/ +static void +_unix_mkdir(c3_c* pax_c) +{ + if ( 0 != c3_mkdir(pax_c, 0755) && EEXIST != errno) { + u3l_log("error mkdiring %s: %s", pax_c, strerror(errno)); + u3_assert(0); + } +} + +/* _unix_write_file_hard(): write to a file, overwriting what's there +*/ +static c3_w +_unix_write_file_hard(c3_c* pax_c, u3_noun mim) +{ + c3_i fid_i = c3_open(pax_c, O_WRONLY | O_CREAT | O_TRUNC, 0666); + c3_w len_w, rit_w, siz_w, mug_w = 0; + c3_y* dat_y; + + u3_noun dat = u3t(u3t(mim)); + + if ( fid_i < 0 ) { + u3l_log("error opening %s for writing: %s", + pax_c, strerror(errno)); + u3z(mim); + return 0; + } + + siz_w = u3h(u3t(mim)); + len_w = u3r_met(3, dat); + dat_y = c3_calloc(siz_w); + + u3r_bytes(0, len_w, dat_y, dat); + u3z(mim); + + rit_w = write(fid_i, dat_y, siz_w); + + if ( rit_w != siz_w ) { + u3l_log("error writing %s: %s", + pax_c, strerror(errno)); + mug_w = 0; + } + else { + mug_w = u3r_mug_bytes(dat_y, len_w); + } + + close(fid_i); + c3_free(dat_y); + + return mug_w; +} + +/* _unix_write_file_soft(): write to a file, not overwriting if it's changed +*/ +static void +_unix_write_file_soft(u3_ufil* fil_u, u3_noun mim) +{ + struct stat buf_u; + c3_i fid_i = c3_open(fil_u->pax_c, O_RDONLY, 0644); + c3_ws len_ws, red_ws; + c3_w old_w; + c3_y* old_y; + + if ( fid_i < 0 || fstat(fid_i, &buf_u) < 0 ) { + if ( ENOENT == errno ) { + goto _unix_write_file_soft_go; + } + else { + u3l_log("error opening file (soft) %s: %s", + fil_u->pax_c, strerror(errno)); + u3z(mim); + return; + } + } + + len_ws = buf_u.st_size; + old_y = c3_malloc(len_ws); + + red_ws = read(fid_i, old_y, len_ws); + + if ( close(fid_i) < 0 ) { + u3l_log("error closing file (soft) %s: %s", + fil_u->pax_c, strerror(errno)); + } + + if ( len_ws != red_ws ) { + if ( red_ws < 0 ) { + u3l_log("error reading file (soft) %s: %s", + fil_u->pax_c, strerror(errno)); + } + else { + u3l_log("wrong # of bytes read in file %s: %d %d", + fil_u->pax_c, len_ws, red_ws); + } + c3_free(old_y); + u3z(mim); + return; + } + + old_w = u3r_mug_bytes(old_y, len_ws); + + if ( old_w != fil_u->gum_w ) { + fil_u->gum_w = u3r_mug(u3t(u3t(mim))); // XXX this might fail with + c3_free(old_y); // trailing zeros + u3z(mim); + return; + } + + c3_free(old_y); + +_unix_write_file_soft_go: + fil_u->gum_w = _unix_write_file_hard(fil_u->pax_c, mim); +} + +static void +_unix_watch_dir(u3_udir* dir_u, u3_udir* par_u, c3_c* pax_c); +static void +_unix_watch_file(u3_unix* unx_u, u3_ufil* fil_u, u3_udir* par_u, c3_c* pax_c); + +/* _unix_get_mount_point(): retrieve or create mount point +*/ +static u3_umon* +_unix_get_mount_point(u3_unix* unx_u, u3_noun mon) +{ + if ( c3n == u3ud(mon) ) { + u3_assert(!"mount point must be an atom"); + u3z(mon); + return NULL; + } + + c3_c* nam_c = _unix_knot_to_string(mon); + u3_umon* mon_u; + + for ( mon_u = unx_u->mon_u; + mon_u && 0 != strcmp(nam_c, mon_u->nam_c); + mon_u = mon_u->nex_u ) + { + } + + if ( !mon_u ) { + mon_u = c3_malloc(sizeof(u3_umon)); + mon_u->nam_c = nam_c; + mon_u->dir_u.dir = c3y; + mon_u->dir_u.dry = c3n; + mon_u->dir_u.pax_c = strdup(unx_u->pax_c); + mon_u->dir_u.par_u = NULL; + mon_u->dir_u.nex_u = NULL; + mon_u->dir_u.kid_u = NULL; + mon_u->nex_u = unx_u->mon_u; + unx_u->mon_u = mon_u; + } + else { + c3_free(nam_c); + } + + u3z(mon); + + return mon_u; +} + +/* _unix_scan_mount_point(): scan unix for already-existing mount point +*/ +static void +_unix_scan_mount_point(u3_unix* unx_u, u3_umon* mon_u) +{ + DIR* rid_u = c3_opendir(mon_u->dir_u.pax_c); + if ( !rid_u ) { + u3l_log("error opening pier directory: %s: %s", + mon_u->dir_u.pax_c, strerror(errno)); + return; + } + + c3_w len_w = strlen(mon_u->nam_c); + + while ( 1 ) { + struct dirent ent_u; + struct dirent* out_u; + c3_w err_w; + + if ( 0 != (err_w = u3_readdir_r(rid_u, &ent_u, &out_u)) ) { + u3l_log("erroring loading pier directory %s: %s", + mon_u->dir_u.pax_c, strerror(errno)); + + u3_assert(0); + } + else if ( !out_u ) { + break; + } + else if ( '.' == out_u->d_name[0] ) { // unnecessary, but consistency + continue; + } + else if ( 0 != strncmp(mon_u->nam_c, out_u->d_name, len_w) ) { + continue; + } + else { + c3_c* pax_c = _unix_down(mon_u->dir_u.pax_c, out_u->d_name); + + struct stat buf_u; + + if ( 0 != stat(pax_c, &buf_u) ) { + u3l_log("can't stat pier directory %s: %s", + mon_u->dir_u.pax_c, strerror(errno)); + c3_free(pax_c); + continue; + } + if ( S_ISDIR(buf_u.st_mode) ) { + if ( out_u->d_name[len_w] != '\0' ) { + c3_free(pax_c); + continue; + } + else { + u3_udir* dir_u = c3_malloc(sizeof(u3_udir)); + _unix_watch_dir(dir_u, &mon_u->dir_u, pax_c); + } + } + else { + if ( '.' != out_u->d_name[len_w] + || '\0' == out_u->d_name[len_w + 1] + || '~' == out_u->d_name[strlen(out_u->d_name) - 1] + || !_unix_sane_ta(unx_u, _unix_string_to_knot(out_u->d_name)) ) + { + c3_free(pax_c); + continue; + } + else { + u3_ufil* fil_u = c3_malloc(sizeof(u3_ufil)); + _unix_watch_file(unx_u, fil_u, &mon_u->dir_u, pax_c); + } + } + + c3_free(pax_c); + } + } +} + +static u3_noun _unix_free_node(u3_unix* unx_u, u3_unod* nod_u); + +/* _unix_free_file(): free file, unlinking it +*/ +static void +_unix_free_file(u3_ufil *fil_u) +{ + if ( 0 != c3_unlink(fil_u->pax_c) && ENOENT != errno ) { + u3l_log("error unlinking %s: %s", fil_u->pax_c, strerror(errno)); + u3_assert(0); + } + + c3_free(fil_u->pax_c); + c3_free(fil_u); +} + +/* _unix_free_dir(): free directory, deleting everything within +*/ +static void +_unix_free_dir(u3_udir *dir_u) +{ + _unix_rm_r(dir_u->pax_c); + + if ( dir_u->kid_u ) { + fprintf(stderr, "don't kill me, i've got a family %s\r\n", dir_u->pax_c); + } + else { + // fprintf(stderr, "i'm a lone, lonely loner %s\r\n", dir_u->pax_c); + } + c3_free(dir_u->pax_c); + c3_free(dir_u); // XXX this might be too early, how do we + // know we've freed all the children? + // i suspect we should do this only if + // our kid list is empty +} + +/* _unix_free_node(): free node, deleting everything within +** +** also deletes from parent list if in it +*/ +static u3_noun +_unix_free_node(u3_unix* unx_u, u3_unod* nod_u) +{ + u3_noun can; + if ( nod_u->par_u ) { + u3_unod* don_u = nod_u->par_u->kid_u; + + if ( !don_u ) { + } + else if ( nod_u == don_u ) { + nod_u->par_u->kid_u = nod_u->par_u->kid_u->nex_u; + } + else { + for ( ; don_u->nex_u && nod_u != don_u->nex_u; don_u = don_u->nex_u ) { + } + if ( don_u->nex_u ) { + don_u->nex_u = don_u->nex_u->nex_u; + } + } + } + + if ( c3y == nod_u->dir ) { + can = u3_nul; + u3_unod* nud_u = ((u3_udir*) nod_u)->kid_u; + while ( nud_u ) { + u3_unod* nex_u = nud_u->nex_u; + can = u3kb_weld(_unix_free_node(unx_u, nud_u), can); + nud_u = nex_u; + } + _unix_free_dir((u3_udir *)nod_u); + } + else { + can = u3nc(u3nc(_unix_string_to_path(unx_u, nod_u->pax_c), u3_nul), + u3_nul); + _unix_free_file((u3_ufil *)nod_u); + } + + return can; +} + +/* _unix_free_mount_point(): free mount point +** +** this process needs to happen in a very careful order. in +** particular, we must recurse before we get to the callback, so +** that libuv does all the child directories before it does us. +** +** tread carefully +*/ +static void +_unix_free_mount_point(u3_unix* unx_u, u3_umon* mon_u) +{ + u3_unod* nod_u; + for ( nod_u = mon_u->dir_u.kid_u; nod_u; ) { + u3_unod* nex_u = nod_u->nex_u; + u3z(_unix_free_node(unx_u, nod_u)); + nod_u = nex_u; + } + + c3_free(mon_u->dir_u.pax_c); + c3_free(mon_u->nam_c); + c3_free(mon_u); +} + +/* _unix_delete_mount_point(): remove mount point from list and free +*/ +static void +_unix_delete_mount_point(u3_unix* unx_u, u3_noun mon) +{ + if ( c3n == u3ud(mon) ) { + u3_assert(!"mount point must be an atom"); + u3z(mon); + return; + } + + c3_c* nam_c = _unix_knot_to_string(mon); + u3_umon* mon_u; + u3_umon* tem_u; + + mon_u = unx_u->mon_u; + if ( !mon_u ) { + u3l_log("mount point already gone: %s", nam_c); + goto _delete_mount_point_out; + } + if ( 0 == strcmp(nam_c, mon_u->nam_c) ) { + unx_u->mon_u = mon_u->nex_u; + _unix_free_mount_point(unx_u, mon_u); + goto _delete_mount_point_out; + } + + for ( ; + mon_u->nex_u && 0 != strcmp(nam_c, mon_u->nex_u->nam_c); + mon_u = mon_u->nex_u ) + { + } + + if ( !mon_u->nex_u ) { + u3l_log("mount point already gone: %s", nam_c); + goto _delete_mount_point_out; + } + + tem_u = mon_u->nex_u; + mon_u->nex_u = mon_u->nex_u->nex_u; + _unix_free_mount_point(unx_u, tem_u); + +_delete_mount_point_out: + c3_free(nam_c); + u3z(mon); +} + +/* _unix_commit_mount_point: commit from mount point +*/ +static void +_unix_commit_mount_point(u3_unix* unx_u, u3_noun mon) +{ + unx_u->dyr = c3y; + u3_unix_ef_look(unx_u, mon, c3n); + return; +} + +/* _unix_watch_file(): initialize file +*/ +static void +_unix_watch_file(u3_unix* unx_u, u3_ufil* fil_u, u3_udir* par_u, c3_c* pax_c) +{ + // initialize fil_u + + fil_u->dir = c3n; + fil_u->dry = c3n; + fil_u->pax_c = c3_malloc(1 + strlen(pax_c)); + strcpy(fil_u->pax_c, pax_c); + fil_u->par_u = par_u; + fil_u->nex_u = NULL; + fil_u->gum_w = 0; + + if ( par_u ) { + fil_u->nex_u = par_u->kid_u; + par_u->kid_u = (u3_unod*) fil_u; + } +} + +/* _unix_watch_dir(): initialize directory +*/ +static void +_unix_watch_dir(u3_udir* dir_u, u3_udir* par_u, c3_c* pax_c) +{ + // initialize dir_u + + dir_u->dir = c3y; + dir_u->dry = c3n; + dir_u->pax_c = c3_malloc(1 + strlen(pax_c)); + strcpy(dir_u->pax_c, pax_c); + dir_u->par_u = par_u; + dir_u->nex_u = NULL; + dir_u->kid_u = NULL; + + if ( par_u ) { + dir_u->nex_u = par_u->kid_u; + par_u->kid_u = (u3_unod*) dir_u; + } +} + +/* _unix_create_dir(): create unix directory and watch it +*/ +static void +_unix_create_dir(u3_udir* dir_u, u3_udir* par_u, u3_noun nam) +{ + c3_c* nam_c = _unix_knot_to_string(nam); + c3_w nam_w = strlen(nam_c); + c3_w pax_w = strlen(par_u->pax_c); + c3_c* pax_c = c3_malloc(pax_w + 1 + nam_w + 1); + + strcpy(pax_c, par_u->pax_c); + pax_c[pax_w] = '/'; + strcpy(pax_c + pax_w + 1, nam_c); + pax_c[pax_w + 1 + nam_w] = '\0'; + + c3_free(nam_c); + u3z(nam); + + _unix_mkdir(pax_c); + _unix_watch_dir(dir_u, par_u, pax_c); +} + +static u3_noun _unix_update_node(u3_unix* unx_u, u3_unod* nod_u); + +/* _unix_update_file(): update file, producing list of changes +** +** when scanning through files, if dry, do nothing. otherwise, +** mark as dry, then check if file exists. if not, remove +** self from node list and add path plus sig to %into event. +** otherwise, read the file and get a mug checksum. if same as +** gum_w, move on. otherwise, overwrite add path plus data to +** %into event. +*/ +static u3_noun +_unix_update_file(u3_unix* unx_u, u3_ufil* fil_u) +{ + u3_assert( c3n == fil_u->dir ); + + if ( c3y == fil_u->dry ) { + return u3_nul; + } + + fil_u->dry = c3n; + + struct stat buf_u; + c3_i fid_i = c3_open(fil_u->pax_c, O_RDONLY, 0644); + c3_ws len_ws, red_ws; + c3_y* dat_y; + + if ( fid_i < 0 || fstat(fid_i, &buf_u) < 0 ) { + if ( ENOENT == errno ) { + return u3nc(u3nc(_unix_string_to_path(unx_u, fil_u->pax_c), u3_nul), u3_nul); + } + else { + u3l_log("error opening file %s: %s", + fil_u->pax_c, strerror(errno)); + return u3_nul; + } + } + + len_ws = buf_u.st_size; + dat_y = c3_malloc(len_ws); + + red_ws = read(fid_i, dat_y, len_ws); + + if ( close(fid_i) < 0 ) { + u3l_log("error closing file %s: %s", + fil_u->pax_c, strerror(errno)); + } + + if ( len_ws != red_ws ) { + if ( red_ws < 0 ) { + u3l_log("error reading file %s: %s", + fil_u->pax_c, strerror(errno)); + } + else { + u3l_log("wrong # of bytes read in file %s: %d %d", + fil_u->pax_c, len_ws, red_ws); + } + c3_free(dat_y); + return u3_nul; + } + else { + c3_w mug_w = u3r_mug_bytes(dat_y, len_ws); + if ( mug_w == fil_u->gum_w ) { + c3_free(dat_y); + return u3_nul; + } + else { + u3_noun pax = _unix_string_to_path(unx_u, fil_u->pax_c); + u3_noun mim = u3nt(c3__text, u3i_string("plain"), u3_nul); + u3_noun dat = u3nt(mim, len_ws, u3i_bytes(len_ws, dat_y)); + + c3_free(dat_y); + return u3nc(u3nt(pax, u3_nul, dat), u3_nul); + } + } +} + +/* _unix_update_dir(): update directory, producing list of changes +** +** when changing this, consider whether to also change +** _unix_initial_update_dir() +*/ +static u3_noun +_unix_update_dir(u3_unix* unx_u, u3_udir* dir_u) +{ + u3_noun can = u3_nul; + + u3_assert( c3y == dir_u->dir ); + + if ( c3y == dir_u->dry ) { + return u3_nul; + } + + dir_u->dry = c3n; + + // Check that old nodes are still there + + u3_unod* nod_u = dir_u->kid_u; + + if ( nod_u ) { + while ( nod_u ) { + if ( c3y == nod_u->dry ) { + nod_u = nod_u->nex_u; + } + else { + if ( c3y == nod_u->dir ) { + DIR* red_u = c3_opendir(nod_u->pax_c); + if ( 0 == red_u ) { + u3_unod* nex_u = nod_u->nex_u; + can = u3kb_weld(_unix_free_node(unx_u, nod_u), can); + nod_u = nex_u; + } + else { + closedir(red_u); + nod_u = nod_u->nex_u; + } + } + else { + struct stat buf_u; + c3_i fid_i = c3_open(nod_u->pax_c, O_RDONLY, 0644); + + if ( (fid_i < 0) || (fstat(fid_i, &buf_u) < 0) ) { + if ( ENOENT != errno ) { + u3l_log("_unix_update_dir: error opening file %s: %s", + nod_u->pax_c, strerror(errno)); + } + + u3_unod* nex_u = nod_u->nex_u; + can = u3kb_weld(_unix_free_node(unx_u, nod_u), can); + nod_u = nex_u; + } + else { + if ( close(fid_i) < 0 ) { + u3l_log("_unix_update_dir: error closing file %s: %s", + nod_u->pax_c, strerror(errno)); + } + + nod_u = nod_u->nex_u; + } + } + } + } + } + + // Check for new nodes + + DIR* rid_u = c3_opendir(dir_u->pax_c); + if ( !rid_u ) { + u3l_log("error opening directory %s: %s", + dir_u->pax_c, strerror(errno)); + u3_assert(0); + } + + while ( 1 ) { + struct dirent ent_u; + struct dirent* out_u; + c3_w err_w; + + + if ( (err_w = u3_readdir_r(rid_u, &ent_u, &out_u)) != 0 ) { + u3l_log("error loading directory %s: %s", + dir_u->pax_c, strerror(err_w)); + u3_assert(0); + } + else if ( !out_u ) { + break; + } + else if ( '.' == out_u->d_name[0] ) { + continue; + } + else { + c3_c* pax_c = _unix_down(dir_u->pax_c, out_u->d_name); + + struct stat buf_u; + + if ( 0 != stat(pax_c, &buf_u) ) { + u3l_log("can't stat %s: %s", pax_c, strerror(errno)); + c3_free(pax_c); + continue; + } + else { + u3_unod* nod_u; + for ( nod_u = dir_u->kid_u; nod_u; nod_u = nod_u->nex_u ) { + if ( 0 == strcmp(pax_c, nod_u->pax_c) ) { + if ( S_ISDIR(buf_u.st_mode) ) { + if ( c3n == nod_u->dir ) { + u3l_log("not a directory: %s", nod_u->pax_c); + u3_assert(0); + } + } + else { + if ( c3y == nod_u->dir ) { + u3l_log("not a file: %s", nod_u->pax_c); + u3_assert(0); + } + } + break; + } + } + + if ( !nod_u ) { + if ( !S_ISDIR(buf_u.st_mode) ) { + if ( !strchr(out_u->d_name,'.') + || '~' == out_u->d_name[strlen(out_u->d_name) - 1] + || !_unix_sane_ta(unx_u, _unix_string_to_knot(out_u->d_name)) ) + { + c3_free(pax_c); + continue; + } + + u3_ufil* fil_u = c3_malloc(sizeof(u3_ufil)); + _unix_watch_file(unx_u, fil_u, dir_u, pax_c); + } + else { + u3_udir* dis_u = c3_malloc(sizeof(u3_udir)); + _unix_watch_dir(dis_u, dir_u, pax_c); + can = u3kb_weld(_unix_update_dir(unx_u, dis_u), can); // XXX unnecessary? + } + } + } + + c3_free(pax_c); + } + } + + if ( closedir(rid_u) < 0 ) { + u3l_log("error closing directory %s: %s", + dir_u->pax_c, strerror(errno)); + } + + if ( !dir_u->kid_u ) { + return u3kb_weld(_unix_free_node(unx_u, (u3_unod*) dir_u), can); + } + + // get change list + + for ( nod_u = dir_u->kid_u; nod_u; nod_u = nod_u->nex_u ) { + can = u3kb_weld(_unix_update_node(unx_u, nod_u), can); + } + + return can; +} + +/* _unix_update_node(): update node, producing list of changes +*/ +static u3_noun +_unix_update_node(u3_unix* unx_u, u3_unod* nod_u) +{ + if ( c3y == nod_u->dir ) { + return _unix_update_dir(unx_u, (void*)nod_u); + } + else { + return _unix_update_file(unx_u, (void*)nod_u); + } +} + +/* _unix_update_mount(): update mount point +*/ +static void +_unix_update_mount(u3_unix* unx_u, u3_umon* mon_u, u3_noun all) +{ + if ( c3n == mon_u->dir_u.dry ) { + u3_noun can = u3_nul; + u3_unod* nod_u; + for ( nod_u = mon_u->dir_u.kid_u; nod_u; nod_u = nod_u->nex_u ) { + can = u3kb_weld(_unix_update_node(unx_u, nod_u), can); + } + + { + // XX remove u3A->sen + // + u3_noun wir = u3nt(c3__sync, + u3dc("scot", c3__uv, unx_u->sev_l), + u3_nul); + u3_noun cad = u3nq(c3__into, _unix_string_to_knot(mon_u->nam_c), all, + can); + + u3_auto_plan(&unx_u->car_u, u3_ovum_init(0, c3__c, wir, cad)); + } + } +} + +/* _unix_initial_update_file(): read file, but don't watch +** XX deduplicate with _unix_update_file() +*/ +static u3_noun +_unix_initial_update_file(c3_c* pax_c, c3_c* bas_c) +{ + struct stat buf_u; + c3_i fid_i = c3_open(pax_c, O_RDONLY, 0644); + c3_ws len_ws, red_ws; + c3_y* dat_y; + + if ( fid_i < 0 || fstat(fid_i, &buf_u) < 0 ) { + if ( ENOENT == errno ) { + return u3_nul; + } + else { + u3l_log("error opening initial file %s: %s", + pax_c, strerror(errno)); + return u3_nul; + } + } + + len_ws = buf_u.st_size; + dat_y = c3_malloc(len_ws); + + red_ws = read(fid_i, dat_y, len_ws); + + if ( close(fid_i) < 0 ) { + u3l_log("error closing initial file %s: %s", + pax_c, strerror(errno)); + } + + if ( len_ws != red_ws ) { + if ( red_ws < 0 ) { + u3l_log("error reading initial file %s: %s", + pax_c, strerror(errno)); + } + else { + u3l_log("wrong # of bytes read in initial file %s: %d %d", + pax_c, len_ws, red_ws); + } + c3_free(dat_y); + return u3_nul; + } + else { + u3_noun pax = _unix_string_to_path_helper(pax_c + + strlen(bas_c) + + 1); /* XX slightly less VERY BAD than before*/ + u3_noun mim = u3nt(c3__text, u3i_string("plain"), u3_nul); + u3_noun dat = u3nt(mim, len_ws, u3i_bytes(len_ws, dat_y)); + + c3_free(dat_y); + return u3nc(u3nt(pax, u3_nul, dat), u3_nul); + } +} + +/* _unix_initial_update_dir(): read directory, but don't watch +** XX deduplicate with _unix_update_dir() +*/ +static u3_noun +_unix_initial_update_dir(c3_c* pax_c, c3_c* bas_c) +{ + u3_noun can = u3_nul; + + DIR* rid_u = c3_opendir(pax_c); + if ( !rid_u ) { + u3l_log("error opening initial directory: %s: %s", + pax_c, strerror(errno)); + return u3_nul; + } + + while ( 1 ) { + struct dirent ent_u; + struct dirent* out_u; + c3_w err_w; + + if ( 0 != (err_w = u3_readdir_r(rid_u, &ent_u, &out_u)) ) { + u3l_log("error loading initial directory %s: %s", + pax_c, strerror(errno)); + + u3_assert(0); + } + else if ( !out_u ) { + break; + } + else if ( '.' == out_u->d_name[0] ) { + continue; + } + else { + c3_c* pox_c = _unix_down(pax_c, out_u->d_name); + + struct stat buf_u; + + if ( 0 != stat(pox_c, &buf_u) ) { + u3l_log("initial can't stat %s: %s", + pox_c, strerror(errno)); + c3_free(pox_c); + continue; + } + else { + if ( S_ISDIR(buf_u.st_mode) ) { + can = u3kb_weld(_unix_initial_update_dir(pox_c, bas_c), can); + } + else { + can = u3kb_weld(_unix_initial_update_file(pox_c, bas_c), can); + } + c3_free(pox_c); + } + } + } + + if ( closedir(rid_u) < 0 ) { + u3l_log("error closing initial directory %s: %s", + pax_c, strerror(errno)); + } + + return can; +} + +/* u3_unix_initial_into_card(): create initial filesystem sync card. +*/ +u3_noun +u3_unix_initial_into_card(c3_c* arv_c) +{ + u3_noun can = _unix_initial_update_dir(arv_c, arv_c); + + return u3nc(u3nt(c3__c, c3__sync, u3_nul), + u3nq(c3__into, u3_nul, c3y, can)); +} + +/* _unix_sync_file(): sync file to unix +*/ +static void +_unix_sync_file(u3_unix* unx_u, u3_udir* par_u, u3_noun nam, u3_noun ext, u3_noun mim) +{ + u3_assert( par_u ); + u3_assert( c3y == par_u->dir ); + + // form file path + + c3_c* nam_c = _unix_knot_to_string(nam); + c3_c* ext_c = _unix_knot_to_string(ext); + c3_w par_w = strlen(par_u->pax_c); + c3_w nam_w = strlen(nam_c); + c3_w ext_w = strlen(ext_c); + c3_c* pax_c = c3_malloc(par_w + 1 + nam_w + 1 + ext_w + 1); + + strcpy(pax_c, par_u->pax_c); + pax_c[par_w] = '/'; + strcpy(pax_c + par_w + 1, nam_c); + pax_c[par_w + 1 + nam_w] = '.'; + strcpy(pax_c + par_w + 1 + nam_w + 1, ext_c); + pax_c[par_w + 1 + nam_w + 1 + ext_w] = '\0'; + + c3_free(nam_c); c3_free(ext_c); + u3z(nam); u3z(ext); + + // check whether we already know about this file + + u3_unod* nod_u; + for ( nod_u = par_u->kid_u; + ( nod_u && + ( c3y == nod_u->dir || + 0 != strcmp(nod_u->pax_c, pax_c) ) ); + nod_u = nod_u->nex_u ) + { } + + // apply change + + if ( u3_nul == mim ) { + if ( nod_u ) { + u3z(_unix_free_node(unx_u, nod_u)); + } + } + else { + + if ( !nod_u ) { + c3_w gum_w = _unix_write_file_hard(pax_c, u3k(u3t(mim))); + u3_ufil* fil_u = c3_malloc(sizeof(u3_ufil)); + _unix_watch_file(unx_u, fil_u, par_u, pax_c); + fil_u->gum_w = gum_w; + goto _unix_sync_file_out; + } + else { + _unix_write_file_soft((u3_ufil*) nod_u, u3k(u3t(mim))); + } + } + + c3_free(pax_c); + +_unix_sync_file_out: + u3z(mim); +} + +/* _unix_sync_change(): sync single change to unix +*/ +static void +_unix_sync_change(u3_unix* unx_u, u3_udir* dir_u, u3_noun pax, u3_noun mim) +{ + u3_assert( c3y == dir_u->dir ); + + if ( c3n == u3du(pax) ) { + if ( u3_nul == pax ) { + u3l_log("can't sync out file as top-level, strange"); + } + else { + u3l_log("sync out: bad path"); + } + u3z(pax); u3z(mim); + return; + } + else if ( c3n == u3du(u3t(pax)) ) { + u3l_log("can't sync out file as top-level, strangely"); + u3z(pax); u3z(mim); + } + else { + u3_noun i_pax = u3h(pax); + u3_noun t_pax = u3t(pax); + u3_noun it_pax = u3h(t_pax); + u3_noun tt_pax = u3t(t_pax); + + if ( u3_nul == tt_pax ) { + _unix_sync_file(unx_u, dir_u, u3k(i_pax), u3k(it_pax), mim); + } + else { + c3_c* nam_c = _unix_knot_to_string(i_pax); + c3_w pax_w = strlen(dir_u->pax_c); + u3_unod* nod_u; + + for ( nod_u = dir_u->kid_u; + ( nod_u && + ( c3n == nod_u->dir || + 0 != strcmp(nod_u->pax_c + pax_w + 1, nam_c) ) ); + nod_u = nod_u->nex_u ) + { } + + if ( !nod_u ) { + nod_u = c3_malloc(sizeof(u3_udir)); + _unix_create_dir((u3_udir*) nod_u, dir_u, u3k(i_pax)); + } + + if ( c3n == nod_u->dir ) { + u3l_log("weird, we got a file when we weren't expecting to"); + u3_assert(0); + } + + _unix_sync_change(unx_u, (u3_udir*) nod_u, u3k(t_pax), mim); + } + } + u3z(pax); +} + +/* _unix_sync_ergo(): sync list of changes to unix +*/ +static void +_unix_sync_ergo(u3_unix* unx_u, u3_umon* mon_u, u3_noun can) +{ + u3_noun nac = can; + u3_noun nam = _unix_string_to_knot(mon_u->nam_c); + + while ( u3_nul != nac) { + _unix_sync_change(unx_u, &mon_u->dir_u, + u3nc(u3k(nam), u3k(u3h(u3h(nac)))), + u3k(u3t(u3h(nac)))); + nac = u3t(nac); + } + + u3z(nam); + u3z(can); +} + +/* u3_unix_ef_dirk(): commit mount point +*/ +void +u3_unix_ef_dirk(u3_unix* unx_u, u3_noun mon) +{ + _unix_commit_mount_point(unx_u, mon); +} + +/* u3_unix_ef_ergo(): update filesystem from urbit +*/ +void +u3_unix_ef_ergo(u3_unix* unx_u, u3_noun mon, u3_noun can) +{ + u3_umon* mon_u = _unix_get_mount_point(unx_u, mon); + + _unix_sync_ergo(unx_u, mon_u, can); +} + +/* u3_unix_ef_ogre(): delete mount point +*/ +void +u3_unix_ef_ogre(u3_unix* unx_u, u3_noun mon) +{ + _unix_delete_mount_point(unx_u, mon); +} + +/* u3_unix_ef_hill(): enumerate mount points +*/ +void +u3_unix_ef_hill(u3_unix* unx_u, u3_noun hil) +{ + u3_noun mon; + + for ( mon = hil; c3y == u3du(mon); mon = u3t(mon) ) { + u3_umon* mon_u = _unix_get_mount_point(unx_u, u3k(u3h(mon))); + _unix_scan_mount_point(unx_u, mon_u); + } + + unx_u->car_u.liv_o = c3y; + + u3z(hil); +} + +/* u3_unix_ef_look(): update the root of a specific mount point. +*/ +void +u3_unix_ef_look(u3_unix* unx_u, u3_noun mon, u3_noun all) +{ + if ( c3y == unx_u->dyr ) { + c3_c* nam_c = _unix_knot_to_string(mon); + + unx_u->dyr = c3n; + u3_umon* mon_u = unx_u->mon_u; + while ( mon_u && 0 != strcmp(nam_c, mon_u->nam_c) ) { + mon_u = mon_u->nex_u; + } + c3_free(nam_c); + if ( mon_u ) { + _unix_update_mount(unx_u, mon_u, all); + } + } + u3z(mon); +} + +/* _unix_io_talk(): start listening for fs events. +*/ +static void +_unix_io_talk(u3_auto* car_u) +{ + // XX review wire + // + u3_noun wir = u3nc(c3__boat, u3_nul); + u3_noun cad = u3nc(c3__boat, u3_nul); + + u3_auto_plan(car_u, u3_ovum_init(0, c3__c, wir, cad)); +} + +/* _unix_io_kick(): apply effects. +*/ +static c3_o +_unix_io_kick(u3_auto* car_u, u3_noun wir, u3_noun cad) +{ + u3_unix* unx_u = (u3_unix*)car_u; + + u3_noun tag, dat, i_wir; + c3_o ret_o; + + if ( (c3n == u3r_cell(wir, &i_wir, 0)) + || (c3n == u3r_cell(cad, &tag, &dat)) + || ( (c3__clay != i_wir) + && (c3__boat != i_wir) + && (c3__sync != i_wir) ) ) + { + ret_o = c3n; + } + else { + switch ( tag ) { + default: { + ret_o = c3n; + } break; + + case c3__dirk: { + u3_unix_ef_dirk(unx_u, u3k(dat)); + ret_o = c3y; + } break; + + case c3__ergo: { + u3_noun mon = u3k(u3h(dat)); + u3_noun can = u3k(u3t(dat)); + u3_unix_ef_ergo(unx_u, mon, can); + + ret_o = c3y; + } break; + + case c3__ogre: { + u3_unix_ef_ogre(unx_u, u3k(dat)); + ret_o = c3y; + } break; + + case c3__hill: { + u3_unix_ef_hill(unx_u, u3k(dat)); + ret_o = c3y; + } break; + } + } + + u3z(wir); u3z(cad); + return ret_o; +} + +/* _unix_io_exit(): terminate unix I/O. +*/ +static void +_unix_io_exit(u3_auto* car_u) +{ + u3_unix* unx_u = (u3_unix*)car_u; + + u3z(unx_u->sat); + c3_free(unx_u->pax_c); + c3_free(unx_u); +} + +/* u3_unix_io_init(): initialize unix sync. +*/ +u3_auto* +u3_unix_io_init(u3_pier* pir_u) +{ + u3_unix* unx_u = c3_calloc(sizeof(*unx_u)); + unx_u->mon_u = 0; + unx_u->pax_c = strdup(pir_u->pax_c); + unx_u->alm = c3n; + unx_u->dyr = c3n; + unx_u->sat = u3do("sane", c3__ta); + + u3_auto* car_u = &unx_u->car_u; + car_u->nam_m = c3__unix; + car_u->liv_o = c3n; + car_u->io.talk_f = _unix_io_talk; + car_u->io.kick_f = _unix_io_kick; + car_u->io.exit_f = _unix_io_exit; + // XX wat do + // + // car_u->ev.bail_f = ...l; + + { + u3_noun now; + struct timeval tim_u; + gettimeofday(&tim_u, 0); + + now = u3_time_in_tv(&tim_u); + unx_u->sev_l = u3r_mug(now); + u3z(now); + } + + return car_u; +} diff --git a/vere/pkg/vere/ivory/ivory.c b/vere/pkg/vere/ivory/ivory.c new file mode 100644 index 0000000..d18e57c --- /dev/null +++ b/vere/pkg/vere/ivory/ivory.c @@ -0,0 +1,4 @@ +#include "ivory.h" +unsigned char u3_Ivory_pill[] = { + 0x01, 0x9e, 0x34, 0xbb, 0x37, 0xb9, 0x7c, 0xe1, 0x17, 0x7e, 0x89, 0x0c, 0x92, 0x21, 0x93, 0x13, 0x5d, 0x41, 0xb6, 0x80, 0xdf, 0x56, 0xd6, 0xf6, 0x8e, 0x2d, 0x21, 0x1c, 0xb2, 0xf0, 0x0b, 0xbf, 0x84, 0xf2, 0xe3, 0xdb, 0xf1, 0x7c, 0x42, 0xba, 0x02, 0xfe, 0xd8, 0x9b, 0x5c, 0xb9, 0x80, 0x3f, 0x56, 0xc6, 0xc6, 0x0e, 0xf8, 0x6e, 0x6f, 0x75, 0xee, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x2d, 0xe0, 0x9b, 0x85, 0x8d, 0x95, 0x03, 0x1e, 0x5c, 0x1a, 0x3d, 0xe0, 0xa3, 0xbd, 0xb1, 0x91, 0x6b, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0xc0, 0xb3, 0x4b, 0xc3, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x05, 0x7c, 0xb4, 0x34, 0x37, 0x7a, 0x35, 0x14, 0xd3, 0xd5, 0x50, 0x4c, 0x57, 0xc3, 0x0c, 0x2d, 0xe0, 0x87, 0xd1, 0xbd, 0xb5, 0x03, 0x5f, 0x47, 0x4e, 0x10, 0x89, 0x65, 0xc0, 0x23, 0x93, 0xcb, 0x03, 0xff, 0xec, 0x8d, 0x8d, 0xdc, 0x50, 0xc5, 0x57, 0xc0, 0x37, 0xab, 0x63, 0x63, 0x3b, 0x9e, 0x2f, 0xb3, 0x00, 0x7e, 0x68, 0x6f, 0x6f, 0x6e, 0x2d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0xee, 0x80, 0x3f, 0xe6, 0x46, 0x37, 0xaf, 0xf1, 0xbc, 0xa6, 0xc3, 0x29, 0x36, 0xe0, 0xa3, 0x95, 0xb1, 0xc1, 0x33, 0x40, 0xcb, 0x16, 0x96, 0x57, 0x26, 0xd7, 0x12, 0x57, 0x02, 0x78, 0x16, 0x0b, 0x9b, 0x4b, 0x1b, 0x03, 0x69, 0x0b, 0xa3, 0x43, 0x2b, 0x6b, 0x0b, 0xa3, 0x4b, 0x1b, 0x0b, 0x63, 0x03, 0x79, 0x83, 0x2b, 0x93, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0x9b, 0x6b, 0xc3, 0x0c, 0x6d, 0x28, 0xd7, 0x1b, 0x4e, 0x84, 0x0d, 0xe5, 0x7a, 0x0d, 0xe7, 0xc8, 0x0a, 0xbf, 0x20, 0x58, 0x1c, 0x73, 0x71, 0x10, 0x6c, 0x88, 0xe1, 0x20, 0x58, 0x1c, 0x76, 0xe1, 0x36, 0xc4, 0xf0, 0x10, 0xff, 0x25, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xca, 0x07, 0xc1, 0x82, 0x64, 0x20, 0xbd, 0x32, 0x61, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0x70, 0xfe, 0x38, 0x34, 0x88, 0x16, 0x76, 0x10, 0x2c, 0x48, 0x06, 0x25, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x09, 0xef, 0x27, 0xc4, 0xc7, 0xa1, 0xe3, 0xf1, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0x16, 0xf0, 0xcd, 0xc2, 0xe6, 0xe8, 0x71, 0xc0, 0x6b, 0xab, 0x63, 0x97, 0xf8, 0x8e, 0xc7, 0x2b, 0xfc, 0x82, 0x60, 0xf1, 0x70, 0x8a, 0x2d, 0x0e, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0x88, 0xe6, 0x86, 0x71, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0x08, 0x16, 0x24, 0x03, 0xe9, 0x95, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0x61, 0x7c, 0x1c, 0x1a, 0xe6, 0x30, 0x2e, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xc2, 0xc8, 0xc8, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0xc2, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x8c, 0xcb, 0x86, 0x18, 0x0e, 0xbb, 0x20, 0x58, 0x90, 0x0c, 0xe4, 0x57, 0x0e, 0xc9, 0xa5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xac, 0xdd, 0x84, 0xf5, 0x71, 0x68, 0x43, 0x0c, 0x0f, 0x47, 0xfb, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x78, 0x6c, 0x74, 0xe5, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x86, 0x73, 0x7d, 0x71, 0x90, 0x2d, 0xe0, 0xb7, 0x95, 0x85, 0xb9, 0x8b, 0x8b, 0x81, 0xcf, 0x56, 0x16, 0x66, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x83, 0x93, 0x83, 0xa7, 0x83, 0xdb, 0x83, 0xa7, 0x83, 0x93, 0x83, 0x97, 0x83, 0xb6, 0xc1, 0xc5, 0xc1, 0xf3, 0x41, 0xdb, 0xe0, 0xfa, 0xe0, 0xe5, 0xe0, 0xf2, 0xe0, 0x6f, 0xc7, 0xb7, 0xe3, 0xf1, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x87, 0x71, 0xd9, 0x70, 0x8a, 0x0d, 0x82, 0x0d, 0x31, 0x1c, 0x04, 0x8b, 0xc3, 0x2e, 0x08, 0x16, 0x24, 0x03, 0xf9, 0x95, 0x43, 0xb6, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0xd9, 0x71, 0x48, 0xcc, 0x1c, 0x87, 0xd6, 0x90, 0x3a, 0x38, 0xc4, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xca, 0x07, 0xc1, 0x82, 0x64, 0xf0, 0xe7, 0x90, 0xad, 0x38, 0xac, 0x4f, 0x0c, 0xa2, 0x85, 0x1d, 0xe6, 0x90, 0x3a, 0x38, 0x1e, 0x1f, 0xdf, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x23, 0xb3, 0x93, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x87, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0x5f, 0x0e, 0xc9, 0xa5, 0x43, 0xa2, 0xf5, 0x90, 0xd8, 0x3c, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xaf, 0x2d, 0x0c, 0x3f, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0xbf, 0x20, 0xd8, 0x70, 0xae, 0x2f, 0x0e, 0xbf, 0x20, 0x58, 0x90, 0x0c, 0x8c, 0xca, 0x21, 0xb9, 0x74, 0x48, 0xb4, 0x1e, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x23, 0x4b, 0xb3, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0xb8, 0x21, 0xf7, 0x3d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x0e, 0x4e, 0x0e, 0x5e, 0x0e, 0x3e, 0x0e, 0x2e, 0x0f, 0x5e, 0x0e, 0xde, 0x0e, 0x5e, 0x0e, 0xee, 0x0e, 0x4e, 0x0f, 0xda, 0x06, 0xaf, 0x07, 0x77, 0x07, 0x27, 0x07, 0x2f, 0x07, 0x97, 0x07, 0x37, 0x07, 0x67, 0x07, 0x7f, 0x07, 0xbf, 0x3b, 0xbe, 0x1d, 0x8f, 0x87, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0xa4, 0x0e, 0x36, 0x9c, 0x62, 0x83, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0xe2, 0xb0, 0x0b, 0xb7, 0x84, 0xf9, 0x61, 0xf9, 0x64, 0x43, 0xea, 0x60, 0x90, 0x0c, 0x39, 0xec, 0x98, 0x1c, 0xdf, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x23, 0x2b, 0x1b, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x61, 0x17, 0x76, 0x43, 0x3a, 0x73, 0xc3, 0xd1, 0x7e, 0x88, 0xe1, 0xc2, 0x2e, 0x08, 0x16, 0x87, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0x64, 0xed, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0x5d, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x43, 0xbe, 0xf6, 0xb0, 0xbe, 0xb9, 0xb0, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x41, 0xbc, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x57, 0x26, 0xe4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x43, 0xfc, 0x8f, 0x43, 0x83, 0x60, 0xc3, 0x7a, 0xec, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x42, 0xfb, 0x71, 0xe8, 0x78, 0x7c, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0x43, 0x3a, 0xf7, 0xf8, 0x76, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xd8, 0xe8, 0xd0, 0x43, 0x6a, 0xe9, 0x78, 0x3c, 0xfc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x28, 0x87, 0xe4, 0xd2, 0x21, 0xd1, 0x7a, 0x58, 0xdf, 0x3c, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xef, 0x8c, 0x0e, 0x3d, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x76, 0x43, 0x7e, 0xf4, 0xb0, 0xbe, 0x79, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xde, 0x19, 0x5d, 0x79, 0x48, 0x2d, 0x1d, 0x8f, 0x57, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xb0, 0x1b, 0xf2, 0xa3, 0x87, 0xc4, 0xe6, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x78, 0x6d, 0x69, 0xee, 0x21, 0xb5, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0xe1, 0x5c, 0x5f, 0x1c, 0x7e, 0xc3, 0xfe, 0xd2, 0xf1, 0xfc, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xbc, 0xb6, 0x37, 0xf2, 0x90, 0x5a, 0x3a, 0x1e, 0x0f, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x6e, 0xc8, 0x7d, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x83, 0xcf, 0x83, 0xd7, 0x83, 0x8b, 0x83, 0xd3, 0x83, 0xcb, 0x83, 0x87, 0x83, 0x8f, 0x87, 0x1d, 0xb7, 0xe3, 0xdb, 0xf1, 0x78, 0xd8, 0x0d, 0xbb, 0x06, 0x1b, 0xa2, 0x39, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3d, 0x1b, 0x04, 0x1b, 0x92, 0x69, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x43, 0xbe, 0xf6, 0x38, 0x74, 0x3c, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x6f, 0xae, 0x4e, 0x3c, 0xa4, 0x96, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xec, 0x42, 0x0f, 0xa9, 0x83, 0x15, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0xb7, 0x8e, 0xc7, 0x87, 0x34, 0xdc, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0x50, 0xbb, 0x8e, 0xc7, 0x87, 0x0e, 0x1a, 0x83, 0x60, 0x43, 0x8f, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x21, 0x55, 0x73, 0x1c, 0x1a, 0x04, 0x0b, 0xb7, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0xa4, 0x0e, 0x8e, 0xc7, 0x2b, 0x08, 0x56, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x90, 0x3a, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x6f, 0x68, 0x3b, 0xb3, 0xa1, 0xed, 0xcc, 0xa1, 0xed, 0xcc, 0xe2, 0x20, 0x58, 0x09, 0x95, 0x4b, 0xb8, 0xba, 0x04, 0xa1, 0x9d, 0x20, 0xbc, 0x8b, 0x83, 0x60, 0x05, 0xc1, 0x86, 0xf8, 0x1f, 0xd2, 0x70, 0x0b, 0x82, 0x25, 0x5c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x4e, 0xa8, 0x3e, 0x0e, 0x2d, 0x08, 0x96, 0x20, 0xec, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x09, 0xb7, 0x8f, 0x43, 0x83, 0x60, 0x09, 0xe2, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0xf0, 0xfb, 0x38, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x1e, 0xaf, 0x20, 0xd8, 0xd0, 0x76, 0x66, 0x71, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0xd8, 0x0d, 0x1d, 0x47, 0x56, 0xd8, 0x0d, 0x79, 0xac, 0x0d, 0x31, 0x3c, 0x9c, 0x62, 0x83, 0x60, 0xc3, 0x5e, 0xe1, 0xa1, 0x83, 0xc6, 0xb0, 0x1b, 0xd6, 0xf7, 0x0e, 0x8d, 0xa3, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x5e, 0x37, 0x8b, 0x83, 0x60, 0x0d, 0x0d, 0x75, 0x36, 0xf4, 0xd8, 0x99, 0x70, 0x77, 0x71, 0x10, 0xac, 0xa1, 0x75, 0xcf, 0x86, 0x9e, 0x3f, 0x83, 0x60, 0x09, 0xdf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x13, 0xba, 0x8f, 0x43, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x17, 0x9c, 0xc5, 0x41, 0xb0, 0xc2, 0x2f, 0x08, 0x16, 0x24, 0x03, 0xf7, 0xd7, 0x21, 0xb9, 0x74, 0x48, 0xc3, 0x1d, 0x52, 0x07, 0x13, 0x6a, 0x17, 0x07, 0xc1, 0x0a, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x74, 0x35, 0x3b, 0xa4, 0xe1, 0x06, 0xc1, 0x86, 0xb5, 0xdf, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf1, 0x78, 0x10, 0x6c, 0x68, 0x3b, 0xb3, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xec, 0x86, 0x8e, 0x23, 0x2b, 0x08, 0x36, 0xec, 0x15, 0x1e, 0xd2, 0x70, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x64, 0xe0, 0xae, 0x3a, 0x24, 0x97, 0x0e, 0x8d, 0x5a, 0x0e, 0x1d, 0x34, 0x0e, 0xfd, 0xa9, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0xb6, 0x33, 0x8b, 0x83, 0x60, 0x09, 0xd3, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0xb0, 0x57, 0x78, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x1e, 0x0f, 0x82, 0x0d, 0x5d, 0x70, 0x16, 0x07, 0xc1, 0x1a, 0x62, 0x78, 0x68, 0xa8, 0xb3, 0x38, 0x08, 0x16, 0x76, 0xe1, 0x36, 0x1c, 0xed, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x87, 0xa3, 0x7d, 0xc3, 0xd1, 0x7e, 0x38, 0xc5, 0x0e, 0x2d, 0xdd, 0x16, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x10, 0xc3, 0x43, 0xe3, 0xa8, 0x41, 0xb0, 0x21, 0xfe, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0xc2, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x87, 0xf5, 0xcd, 0x0d, 0xa9, 0x83, 0xc3, 0x29, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0xa1, 0x0b, 0xce, 0xe2, 0x20, 0x58, 0x43, 0x43, 0x9d, 0x43, 0x27, 0xb5, 0xc5, 0x41, 0xb0, 0x86, 0xd6, 0x3d, 0x87, 0x96, 0x6e, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x4c, 0x0d, 0x82, 0x8d, 0x43, 0x8b, 0x87, 0x15, 0xda, 0xe3, 0xf1, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0xc3, 0xd1, 0x7e, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x68, 0x3b, 0xb3, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xe2, 0xf0, 0x1b, 0x52, 0x35, 0xc7, 0xb7, 0xe3, 0xf1, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x78, 0xbc, 0x82, 0x60, 0x43, 0xdb, 0x99, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x61, 0x37, 0x74, 0x1c, 0x59, 0x43, 0x57, 0xbb, 0x05, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xc9, 0xc0, 0xf1, 0x75, 0x48, 0x2e, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0x02, 0x0d, 0x82, 0x0d, 0x1d, 0x7e, 0x0f, 0x2d, 0xc0, 0x0e, 0xfd, 0xa9, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb0, 0xa1, 0xed, 0xcc, 0xe2, 0x20, 0xd8, 0xd0, 0x76, 0xe6, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0xd0, 0x76, 0x66, 0x71, 0x10, 0xac, 0xa1, 0x91, 0xe0, 0xf0, 0x0b, 0x82, 0x0d, 0x4d, 0xce, 0x0e, 0x8d, 0x5a, 0x0e, 0xa9, 0x83, 0xc5, 0x41, 0xb0, 0x86, 0xae, 0x76, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0xbd, 0x9e, 0x0f, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb0, 0xa1, 0xed, 0xcc, 0xe2, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xe8, 0x2b, 0x7d, 0xe8, 0x4f, 0x75, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0x5d, 0xb8, 0xc5, 0xc8, 0x21, 0x75, 0xb0, 0xa1, 0x95, 0xf8, 0xb0, 0x0b, 0xb7, 0x18, 0x3d, 0xa4, 0x0e, 0x36, 0xf4, 0x27, 0x1f, 0x76, 0x61, 0x17, 0x6e, 0xc3, 0xd1, 0x7e, 0x48, 0x1d, 0x6c, 0x88, 0xe1, 0x61, 0x7d, 0x6f, 0xc3, 0x29, 0x36, 0xc8, 0x16, 0xf0, 0xe9, 0xde, 0xe6, 0xe6, 0x43, 0x0c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x83, 0x60, 0x41, 0x32, 0x70, 0xae, 0x1c, 0x92, 0x4b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0xe1, 0x37, 0x9e, 0x1f, 0x5a, 0x89, 0x1f, 0x87, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0x8d, 0x85, 0xc1, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0xc3, 0x6e, 0xc8, 0x63, 0x6d, 0x38, 0xc5, 0x86, 0xdd, 0xb0, 0x6b, 0xb0, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x36, 0x1c, 0xed, 0x87, 0x71, 0xd9, 0x10, 0xcd, 0x61, 0x17, 0x6e, 0x43, 0x2b, 0xf1, 0xc3, 0xb8, 0x2c, 0x08, 0x16, 0x24, 0x83, 0xe0, 0x90, 0x5c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xc8, 0xda, 0x1d, 0x1a, 0xcf, 0x1f, 0x87, 0x86, 0x5d, 0xb8, 0x0d, 0xfd, 0xc9, 0x0f, 0xe3, 0xb2, 0x30, 0x87, 0xaf, 0x04, 0x06, 0xd9, 0x86, 0xe6, 0xeb, 0x83, 0x60, 0x41, 0x32, 0x28, 0x39, 0x24, 0x97, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xa2, 0x73, 0x48, 0x2e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xe4, 0x6b, 0x0f, 0x8d, 0xe7, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9e, 0x14, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x48, 0x07, 0xc1, 0x86, 0xc6, 0xef, 0x87, 0x1f, 0x15, 0x8e, 0xc7, 0x87, 0xc6, 0xf3, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x78, 0x70, 0x65, 0xe7, 0x21, 0xb5, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x2e, 0xec, 0x86, 0x9e, 0xe4, 0x1b, 0x62, 0x78, 0x68, 0x1f, 0xbe, 0xe1, 0x68, 0x1f, 0x76, 0x43, 0xa3, 0xf3, 0x0d, 0xa7, 0xd8, 0x20, 0xdb, 0xd0, 0x7c, 0x7d, 0x10, 0x6c, 0x78, 0xf0, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x6f, 0x13, 0x0e, 0x1d, 0xe3, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x3c, 0x29, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x87, 0xd6, 0xed, 0x87, 0xc6, 0xf3, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x78, 0x6d, 0x61, 0xf3, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0xc0, 0x6f, 0x0b, 0xa3, 0x43, 0x97, 0x01, 0x78, 0xa9, 0x73, 0x9b, 0x4b, 0x3b, 0x73, 0x2b, 0x23, 0x03, 0x09, 0x93, 0x4b, 0xa3, 0x43, 0x6b, 0x2b, 0xa3, 0x4b, 0x1b, 0x5b, 0x43, 0xe2, 0x68, 0xc0, 0x9f, 0x3b, 0x33, 0x9b, 0x37, 0x24, 0x8e, 0x06, 0x7c, 0xb7, 0x37, 0xba, 0x72, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x5b, 0x9d, 0xdb, 0x5c, 0xda, 0x99, 0x5b, 0x19, 0x19, 0x48, 0x5b, 0x1d, 0x1b, 0x5d, 0x1a, 0x1c, 0x5b, 0xda, 0x58, 0x18, 0x5d, 0xda, 0x9b, 0xbb, 0x12, 0xe0, 0x1d, 0xa6, 0x03, 0xd2, 0x56, 0xc7, 0x46, 0x97, 0x06, 0xc7, 0x96, 0x36, 0x16, 0xe6, 0x46, 0x2e, 0x01, 0x9e, 0x62, 0x3a, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x0d, 0xf8, 0x62, 0x72, 0x63, 0xec, 0x02, 0xfe, 0x18, 0x1b, 0x9d, 0xbc, 0x80, 0xbf, 0x46, 0x47, 0x37, 0x0f, 0x1e, 0x0e, 0xf8, 0x6b, 0x74, 0x6c, 0xf3, 0x02, 0xfe, 0x5c, 0x98, 0x1b, 0x79, 0x38, 0xc5, 0x36, 0x7c, 0xfd, 0xb2, 0xe1, 0x43, 0x98, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0xb9, 0x86, 0xcf, 0x5d, 0x06, 0x17, 0x0f, 0x3f, 0xbf, 0x34, 0xe0, 0xaf, 0xd1, 0xa1, 0xc1, 0x0b, 0xf8, 0x62, 0x61, 0x73, 0xe5, 0x86, 0x3a, 0xde, 0x80, 0x4f, 0x37, 0xc7, 0x36, 0xaf, 0xe1, 0x73, 0x97, 0xc1, 0xc7, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0x0d, 0xf8, 0x62, 0x72, 0x68, 0xf0, 0x80, 0x7f, 0x47, 0x37, 0xc6, 0x2e, 0xe0, 0x93, 0xd1, 0xd1, 0xcd, 0x1b, 0x1e, 0xbc, 0x19, 0xf0, 0xef, 0xd2, 0xdc, 0xce, 0xc1, 0xc3, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0x63, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1e, 0xdc, 0x19, 0xf0, 0xc7, 0xdc, 0xc6, 0xd8, 0x35, 0xbc, 0xad, 0xb3, 0x61, 0x21, 0xb2, 0x0d, 0x4f, 0xeb, 0xb4, 0x86, 0x7f, 0x78, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0xa4, 0x0f, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0x8b, 0x6d, 0x78, 0x7a, 0xa7, 0x56, 0x43, 0xfa, 0x70, 0xc3, 0xe3, 0x23, 0x1b, 0xd2, 0x87, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x50, 0xe7, 0x36, 0x97, 0x76, 0xe6, 0x56, 0x46, 0x06, 0x12, 0x46, 0x46, 0x96, 0x46, 0x97, 0xf6, 0xe6, 0xae, 0x04, 0x78, 0x84, 0xe9, 0x80, 0x84, 0xd5, 0x9d, 0x95, 0xb9, 0x91, 0x4b, 0x80, 0x87, 0x98, 0x0e, 0x48, 0x18, 0x19, 0x59, 0x99, 0x1b, 0x59, 0x03, 0xbe, 0x98, 0x1c, 0xdd, 0xbc, 0x80, 0x2f, 0x36, 0x36, 0xc6, 0x2e, 0xe0, 0x8b, 0x8d, 0xd1, 0xcd, 0x83, 0x87, 0x87, 0x1f, 0x6a, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0xe1, 0x87, 0x9a, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x87, 0x9a, 0x0d, 0x1f, 0xe4, 0x6c, 0xf8, 0x36, 0x67, 0xc3, 0x7b, 0x41, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x86, 0x8f, 0x7a, 0xd6, 0xf0, 0x79, 0xd0, 0x80, 0x4f, 0x46, 0xc7, 0x36, 0x1f, 0xde, 0x0b, 0x6a, 0x35, 0x64, 0x8d, 0x37, 0x3c, 0x3e, 0xb2, 0x21, 0x6b, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0xbf, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0xf3, 0x4a, 0x00, 0x8d, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x7b, 0x61, 0x20, 0x3e, 0x3d, 0x20, 0x62, 0x7d, 0xae, 0x95, 0x00, 0x34, 0x08, 0xd3, 0x01, 0x61, 0x2b, 0x33, 0xa3, 0x03, 0x41, 0x0b, 0x73, 0x23, 0x03, 0x79, 0x83, 0x2b, 0x93, 0x0b, 0x73, 0x23, 0x03, 0x41, 0xa1, 0x7b, 0x23, 0x7b, 0xd3, 0x01, 0x71, 0x0b, 0x6b, 0x2b, 0x4b, 0x4b, 0x00, 0x4f, 0x62, 0x3a, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x6d, 0xf8, 0x45, 0x69, 0xc3, 0xdf, 0x4a, 0x03, 0xfe, 0x1d, 0x9d, 0x98, 0xbc, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0xad, 0x73, 0x78, 0x2f, 0x68, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xeb, 0xcd, 0x6d, 0x78, 0x5a, 0x67, 0xc3, 0x7b, 0x41, 0x35, 0x6b, 0x58, 0x7c, 0xd9, 0xf0, 0xf8, 0xc8, 0x86, 0xc5, 0x97, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0xae, 0x73, 0x9b, 0x4b, 0x3b, 0x73, 0x2b, 0x23, 0x03, 0x21, 0x4b, 0xb3, 0x4b, 0x23, 0x2b, 0x03, 0xb9, 0x4b, 0xa3, 0x43, 0x03, 0x91, 0x2b, 0x6b, 0x0b, 0x4b, 0x73, 0x23, 0x2b, 0x93, 0x57, 0x02, 0xbc, 0xc2, 0x74, 0x40, 0xc8, 0xd2, 0xec, 0xd2, 0xc8, 0xca, 0xdc, 0xc8, 0x25, 0xc0, 0x47, 0x4c, 0x07, 0x84, 0x2c, 0xcd, 0x2e, 0x6d, 0xee, 0x4d, 0xae, 0x0d, 0xdf, 0xb5, 0x6c, 0xf8, 0xc4, 0x65, 0xc3, 0x5f, 0x34, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x1f, 0x7e, 0xa8, 0x59, 0xc3, 0x9f, 0x4b, 0x83, 0xc7, 0x87, 0x1f, 0x6a, 0x1a, 0xf0, 0xe7, 0xce, 0xc6, 0xc4, 0x15, 0xf0, 0xe5, 0xde, 0xc6, 0xd6, 0x01, 0x8f, 0x2e, 0x6c, 0x3e, 0x64, 0xc0, 0x07, 0xfc, 0x35, 0xb7, 0x34, 0xfa, 0x90, 0x61, 0x1f, 0xf0, 0xef, 0xe8, 0xce, 0xd8, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0xc1, 0x9b, 0xc3, 0x7b, 0x41, 0x1b, 0x3e, 0xb1, 0xd9, 0xf0, 0xb5, 0xcd, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0x90, 0xb3, 0xe1, 0x51, 0xb3, 0x35, 0xfc, 0xe2, 0xb2, 0xe1, 0xe9, 0x9d, 0xc3, 0x43, 0x3f, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1e, 0xdc, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xd0, 0xe2, 0xa3, 0xc3, 0xef, 0x67, 0x6b, 0xf8, 0x87, 0x67, 0xc3, 0xc7, 0x51, 0x87, 0xa7, 0x77, 0x5a, 0x0d, 0x2b, 0x43, 0x1b, 0x1e, 0x1f, 0xd9, 0xb0, 0x32, 0xb4, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x7f, 0x9d, 0xdb, 0x5c, 0xda, 0x99, 0x5b, 0x19, 0x19, 0x48, 0x5b, 0x18, 0x5e, 0x5a, 0x5b, 0x5d, 0xdb, 0x86, 0x5f, 0x94, 0x36, 0xfc, 0xad, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xab, 0xe1, 0x1d, 0x7e, 0x3f, 0x3b, 0xbc, 0x5c, 0x76, 0x38, 0xc5, 0xd6, 0xb0, 0x68, 0xb5, 0xe1, 0xf1, 0x91, 0x0d, 0x8b, 0x56, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xd7, 0xb9, 0xcd, 0xa5, 0x9d, 0xb9, 0x95, 0x91, 0x81, 0x90, 0xa5, 0xd9, 0xa5, 0x91, 0x95, 0x87, 0x17, 0xde, 0x36, 0x7c, 0xd7, 0xb2, 0xe1, 0x13, 0x97, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0xa1, 0x66, 0xc0, 0xa7, 0x9b, 0x3b, 0x63, 0xd7, 0x70, 0x49, 0xad, 0x71, 0xa8, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x2c, 0xbe, 0x74, 0xf8, 0xfd, 0x6c, 0x35, 0x2c, 0x44, 0x6e, 0x78, 0x7c, 0x64, 0xc3, 0x42, 0xe4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x74, 0xd6, 0xb9, 0xcd, 0xa5, 0x9d, 0xb9, 0x95, 0x91, 0x81, 0x90, 0x95, 0x8d, 0xc9, 0x95, 0xb5, 0x95, 0xb9, 0xd1, 0x81, 0x88, 0xe5, 0x81, 0xbc, 0xb9, 0x95, 0xb9, 0x36, 0xfc, 0xa2, 0xb4, 0xe1, 0xcb, 0xa5, 0x0d, 0x6f, 0xd9, 0xad, 0xe1, 0x89, 0xbb, 0x0d, 0xcf, 0xe2, 0x1d, 0x76, 0xcc, 0x36, 0xbc, 0x9b, 0xb7, 0xe1, 0xdb, 0x9c, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc5, 0xc3, 0x83, 0x37, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x86, 0x1f, 0x6a, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0xad, 0x73, 0xf8, 0x37, 0x6a, 0xc3, 0x7b, 0x41, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0xe1, 0xa5, 0xa8, 0x59, 0xc3, 0x7a, 0xf3, 0x86, 0xc7, 0x47, 0x36, 0xac, 0x37, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x47, 0x9d, 0xdb, 0x5c, 0xda, 0x99, 0x5b, 0x19, 0x19, 0x08, 0x5b, 0xd9, 0xdc, 0x1c, 0x08, 0x1d, 0x5a, 0x98, 0x7b, 0x78, 0x88, 0x6b, 0xc3, 0x2f, 0x4a, 0x1b, 0xfe, 0x56, 0xda, 0xf0, 0x17, 0xcd, 0x1a, 0xbe, 0xa8, 0x09, 0x7c, 0x33, 0xb6, 0xb0, 0x73, 0xc0, 0xbf, 0xa3, 0x83, 0x6b, 0x17, 0xf0, 0xef, 0xe8, 0xf4, 0xe0, 0xc3, 0x5f, 0x65, 0x6b, 0xf8, 0x0a, 0x67, 0xc3, 0xaf, 0x64, 0x1b, 0xbe, 0xcd, 0x59, 0xc3, 0x23, 0xac, 0x6b, 0x78, 0x9b, 0xf5, 0xf0, 0x9a, 0xde, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x86, 0x8f, 0x7a, 0xd6, 0xf0, 0x79, 0xd0, 0x86, 0x77, 0x7b, 0x36, 0xbc, 0xe6, 0x73, 0x78, 0x0b, 0xad, 0xea, 0x70, 0x8a, 0xb5, 0x86, 0xd5, 0xf0, 0x0d, 0x8f, 0x8f, 0x6c, 0x58, 0x0d, 0xdf, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0xa7, 0x3a, 0xb7, 0xb9, 0xb4, 0x33, 0xb7, 0x32, 0x32, 0x90, 0x33, 0xb9, 0xb2, 0x30, 0xba, 0x32, 0x39, 0x10, 0x3a, 0xb4, 0x30, 0x77, 0x25, 0x80, 0x37, 0xb9, 0x32, 0xba, 0x3a, 0x39, 0xb7, 0x39, 0x90, 0x3b, 0xb4, 0x32, 0x3a, 0xb4, 0x32, 0x39, 0x90, 0xbd, 0x30, 0x10, 0x1f, 0x10, 0xb1, 0xbe, 0xc3, 0x43, 0x5c, 0x1b, 0x7e, 0x51, 0xda, 0xf0, 0xb7, 0xd2, 0x86, 0xbf, 0x68, 0x36, 0x7c, 0xb0, 0xba, 0xe1, 0x6d, 0xd6, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x59, 0xe3, 0x0e, 0xbf, 0x9f, 0x1d, 0x4e, 0xb1, 0x35, 0xec, 0xc4, 0x6f, 0x78, 0x7c, 0x64, 0xc3, 0x4e, 0xfc, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xbc, 0xd7, 0xb9, 0xcd, 0xa5, 0x9d, 0xb9, 0x95, 0x91, 0x81, 0x9c, 0xc9, 0x95, 0x85, 0xd1, 0x95, 0xc9, 0x81, 0xd0, 0xa1, 0x85, 0xb9, 0x81, 0xbc, 0xc9, 0x81, 0x94, 0xc5, 0xd5, 0x85, 0xb1, 0xcd, 0x87, 0x7f, 0xb1, 0x36, 0xfc, 0xa2, 0xb4, 0xe1, 0x6f, 0xa5, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0x60, 0x75, 0xc3, 0xdb, 0xac, 0x87, 0x47, 0xcd, 0x56, 0x43, 0x37, 0x80, 0x0d, 0x8f, 0x8f, 0x6c, 0xe8, 0x06, 0xb0, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x7f, 0x9d, 0xdb, 0x5c, 0xda, 0x99, 0x5b, 0x19, 0x19, 0x48, 0x5b, 0x9a, 0x5b, 0x5a, 0x5b, 0x5d, 0xdb, 0x86, 0x5f, 0x94, 0x36, 0xfc, 0xad, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0xf8, 0x20, 0x67, 0xc3, 0xa3, 0x66, 0x87, 0x97, 0xcb, 0x66, 0x0d, 0xcd, 0x0f, 0x36, 0x3c, 0x3e, 0xb2, 0xa1, 0xf9, 0xc1, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xfe, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x75, 0xf3, 0xe1, 0x85, 0xb7, 0x0d, 0xdf, 0xb5, 0x6c, 0xf8, 0xc4, 0x65, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0xa0, 0xe4, 0x86, 0x3b, 0xea, 0xf0, 0xfa, 0xe4, 0xe1, 0x14, 0x5b, 0x43, 0x8b, 0x8f, 0x0d, 0x8f, 0x8f, 0x6c, 0x68, 0xf1, 0xb1, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x3f, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x73, 0x75, 0x62, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0xee, 0x4a, 0x80, 0x4f, 0x98, 0x0e, 0x48, 0x5b, 0x9a, 0x5b, 0x5d, 0x99, 0x1b, 0xb9, 0x04, 0x78, 0x8a, 0xe9, 0x80, 0xcc, 0xd5, 0x89, 0xd1, 0xc9, 0x85, 0xa1, 0x95, 0xb9, 0x91, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0x7f, 0x2b, 0x6d, 0x78, 0xcb, 0x6e, 0x0d, 0x4f, 0xdc, 0x6d, 0x78, 0x16, 0xef, 0xd0, 0xf9, 0x61, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x41, 0xce, 0x86, 0xd7, 0xf4, 0x36, 0x3c, 0xad, 0x73, 0xf8, 0x10, 0xf6, 0x70, 0x8a, 0xad, 0x00, 0x3e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0xf3, 0x32, 0x00, 0xbf, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x62, 0x61, 0x73, 0x69, 0x63, 0x20, 0x6f, 0x66, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x0b, 0xf8, 0x62, 0x69, 0x74, 0xe5, 0x80, 0xbf, 0x46, 0x37, 0xc6, 0x0e, 0xf8, 0x6e, 0x61, 0x6d, 0xe5, 0x86, 0x2f, 0xd9, 0x07, 0xfc, 0xb3, 0xb4, 0x39, 0x7a, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x4f, 0x18, 0xdd, 0x5b, 0x1b, 0xc8, 0x1c, 0x5b, 0xda, 0x58, 0x19, 0xc8, 0x1c, 0x5c, 0xd9, 0x58, 0x9a, 0x59, 0x5a, 0x99, 0xdc, 0x80, 0x2f, 0x36, 0x06, 0x47, 0x2f, 0xe0, 0xb3, 0xa5, 0xad, 0x95, 0x0b, 0xf8, 0x62, 0x6c, 0x6f, 0x71, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xf8, 0x8e, 0xfe, 0xf0, 0xed, 0xfc, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xe7, 0xe8, 0xca, 0xe0, 0x0d, 0xff, 0xce, 0xaf, 0xe1, 0xad, 0xfb, 0x6a, 0x05, 0xfc, 0xb8, 0xba, 0x30, 0x76, 0xc0, 0x17, 0x93, 0x13, 0x1b, 0x17, 0xe0, 0x31, 0x4b, 0x93, 0x9b, 0xa3, 0x07, 0xf8, 0xe6, 0xca, 0xc6, 0xde, 0xdc, 0xc8, 0x01, 0x1e, 0x3a, 0xb4, 0x34, 0x39, 0x72, 0x80, 0xcf, 0xec, 0xad, 0x4e, 0x8e, 0x0e, 0x6d, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xef, 0xb8, 0xba, 0x30, 0x32, 0xb9, 0x3a, 0x38, 0xb6, 0x32, 0x10, 0xba, 0x3a, 0x38, 0xb6, 0x72, 0x25, 0x00, 0xcd, 0xdb, 0xde, 0xd8, 0xc8, 0x40, 0xce, 0xca, 0xdc, 0xca, 0xe4, 0xc2, 0xe8, 0xde, 0xe4, 0x74, 0x40, 0xe0, 0xe4, 0xde, 0xc8, 0xea, 0xc6, 0xca, 0xe6, 0x40, 0xc2, 0x40, 0xe8, 0xea, 0xe0, 0xd8, 0xca, 0x40, 0xde, 0xcc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xcc, 0xde, 0xea, 0xe4, 0x40, 0xe8, 0xf2, 0xe0, 0xca, 0xe6, 0x40, 0xe0, 0xc2, 0xe6, 0xe6, 0xca, 0xc8, 0x40, 0xd2, 0xdc, 0x5c, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xf8, 0x77, 0x7e, 0x0d, 0xef, 0xe9, 0xd7, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xde, 0xf0, 0xef, 0xfc, 0x1a, 0x9e, 0xda, 0xaf, 0x35, 0xfc, 0xb9, 0x34, 0xb8, 0xbc, 0xe1, 0xdf, 0xf9, 0x35, 0xbc, 0xc4, 0x5f, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x79, 0xc3, 0xbf, 0xf3, 0x1b, 0xde, 0xe8, 0xaf, 0x15, 0xf0, 0xeb, 0xdc, 0xd2, 0xe8, 0x0d, 0x0f, 0xe7, 0x2f, 0xe0, 0xa7, 0xd1, 0x95, 0xb5, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0xb4, 0x85, 0xe5, 0x89, 0x95, 0x2b, 0x01, 0xf8, 0xdb, 0xf6, 0xc6, 0x46, 0x06, 0x72, 0x56, 0xe6, 0x56, 0x26, 0x17, 0x46, 0xf7, 0x26, 0xa7, 0x03, 0x52, 0x96, 0x46, 0x87, 0x56, 0x26, 0x07, 0x02, 0xe6, 0x07, 0x06, 0xf2, 0x26, 0x07, 0x02, 0xb6, 0xe5, 0x07, 0x52, 0xd7, 0x13, 0xd6, 0x05, 0x06, 0x72, 0x87, 0x56, 0x26, 0x57, 0x06, 0x02, 0x16, 0x06, 0x06, 0x92, 0x36, 0x07, 0x42, 0x87, 0x56, 0x2e, 0x01, 0xf4, 0xd1, 0xe5, 0xc1, 0x95, 0x81, 0xd0, 0xa1, 0x85, 0xd1, 0x81, 0xdc, 0x85, 0xcd, 0x81, 0xc0, 0x85, 0xcd, 0xcd, 0x95, 0x91, 0x81, 0xa4, 0xb9, 0xb9, 0xda, 0xf0, 0xc1, 0xfc, 0x1a, 0xbe, 0xa8, 0x09, 0x7c, 0xb7, 0x3a, 0x36, 0x76, 0xc3, 0xe7, 0x4a, 0x1b, 0x84, 0xe0, 0xc3, 0x1a, 0xfe, 0x5c, 0x1a, 0xbc, 0xde, 0xf0, 0xef, 0xfc, 0x06, 0xa1, 0x8a, 0x50, 0x2b, 0xe0, 0xd3, 0xc9, 0x95, 0xb1, 0x1b, 0x1e, 0xce, 0x5f, 0xc3, 0x7b, 0xfa, 0x1b, 0x9e, 0xda, 0x3f, 0x08, 0x82, 0x83, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xe8, 0xe4, 0xd2, 0xe0, 0xd8, 0xca, 0x40, 0xe8, 0xea, 0xe0, 0xd8, 0xca, 0x95, 0x00, 0x74, 0x6f, 0x7b, 0x63, 0x23, 0x03, 0x39, 0x2b, 0x73, 0x2b, 0x93, 0x0b, 0xa3, 0x7b, 0x93, 0xd3, 0x01, 0x81, 0x93, 0x7b, 0x23, 0xab, 0x1b, 0x2b, 0x9b, 0x03, 0x09, 0x03, 0xa1, 0xab, 0x83, 0x63, 0x2b, 0x03, 0x79, 0x33, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0xa1, 0x43, 0x93, 0x2b, 0x2b, 0x03, 0xa1, 0xcb, 0x83, 0x2b, 0x9b, 0x03, 0x81, 0x0b, 0x9b, 0x9b, 0x2b, 0x23, 0x03, 0x49, 0x73, 0x73, 0xb5, 0xe1, 0x73, 0xa5, 0x0d, 0x02, 0x9a, 0x60, 0x83, 0x10, 0x2d, 0xd8, 0x20, 0xe8, 0x0c, 0x9a, 0x05, 0xfc, 0xb8, 0xba, 0x34, 0x78, 0xc3, 0xc3, 0xf9, 0x6b, 0x10, 0xae, 0x08, 0x03, 0x3c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x0f, 0x17, 0x96, 0x26, 0x07, 0xf2, 0x66, 0x06, 0xc2, 0x96, 0x36, 0x47, 0x07, 0xf2, 0x66, 0x06, 0x62, 0x96, 0x26, 0x37, 0x47, 0x07, 0x12, 0xe6, 0x46, 0x06, 0x32, 0x57, 0x36, 0xf6, 0xe6, 0x46, 0xae, 0x04, 0xc0, 0x27, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x68, 0x6f, 0x6f, 0x6e, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x2b, 0x2b, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2c, 0x20, 0x61, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0xe8, 0x12, 0xa0, 0x17, 0x06, 0xe2, 0x56, 0x76, 0x07, 0x32, 0x47, 0x17, 0x46, 0x57, 0xe6, 0x5a, 0x09, 0xe0, 0x27, 0x4c, 0x07, 0x84, 0x2e, 0x0f, 0xae, 0x0c, 0xe4, 0xcd, 0x0c, 0x84, 0x2d, 0x6d, 0x8e, 0x0e, 0x24, 0x8d, 0xae, 0xac, 0x5d, 0x02, 0x78, 0x14, 0xd3, 0x01, 0xa1, 0xcb, 0x83, 0x2b, 0x03, 0x79, 0x33, 0x03, 0x91, 0x2b, 0xa3, 0xab, 0x93, 0x73, 0x2b, 0x23, 0x03, 0x99, 0xa3, 0x0b, 0xa3, 0x2b, 0x6b, 0xc3, 0xe7, 0x4a, 0x0b, 0xf8, 0x6d, 0x61, 0x6b, 0xe5, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xd9, 0xd2, 0xe6, 0xe8, 0x36, 0x08, 0x6c, 0x88, 0xd6, 0xf0, 0xef, 0xfc, 0x06, 0x21, 0x9c, 0x51, 0xb3, 0x80, 0x0f, 0xf7, 0xc6, 0x56, 0x6e, 0x78, 0x38, 0x7f, 0x83, 0x50, 0x45, 0xd8, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xd3, 0x2c, 0x6c, 0xac, 0x8c, 0xad, 0x6c, 0x6e, 0x0e, 0x84, 0x2d, 0x6d, 0x8e, 0x5e, 0x09, 0x40, 0x3b, 0xb6, 0xb4, 0xb5, 0x32, 0x90, 0x95, 0x15, 0xb6, 0xb4, 0x39, 0x3a, 0x16, 0x10, 0xb1, 0x3a, 0x3a, 0x90, 0xbb, 0x34, 0x3a, 0xb4, 0xb7, 0x3a, 0x3a, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb3, 0xb0, 0xb1, 0xb2, 0x39, 0x90, 0xbd, 0xb4, 0x3e, 0x90, 0x30, 0x37, 0x32, 0x90, 0x3d, 0xba, 0x3e, 0x57, 0x1b, 0x3e, 0x98, 0xdf, 0x20, 0x04, 0x1f, 0x36, 0x7c, 0xae, 0xb4, 0x41, 0x60, 0x43, 0xac, 0x41, 0xe8, 0x97, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x42, 0xf6, 0xa4, 0x83, 0x20, 0x37, 0xe9, 0x70, 0x8a, 0xb5, 0x80, 0xcf, 0xf6, 0xe6, 0x56, 0x6e, 0x78, 0x38, 0x7f, 0x83, 0x50, 0x45, 0xd8, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x87, 0xb9, 0x34, 0xb7, 0x33, 0xb6, 0x32, 0x90, 0x34, 0xba, 0xb2, 0x36, 0x10, 0xba, 0x3a, 0x38, 0xb6, 0x72, 0x25, 0x00, 0xad, 0xdb, 0xde, 0xd8, 0xc8, 0x40, 0xce, 0xca, 0xdc, 0xca, 0xe4, 0xc2, 0xe8, 0xde, 0xe4, 0x74, 0x40, 0xe0, 0xea, 0xe8, 0xe6, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xcc, 0xc2, 0xc6, 0xca, 0x40, 0xde, 0xcc, 0x40, 0xc0, 0xe0, 0xc0, 0x40, 0xde, 0xdc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xe0, 0xc2, 0xe6, 0xe6, 0xca, 0xc8, 0x40, 0xd2, 0xdc, 0x40, 0xda, 0xde, 0xd8, 0xc8, 0x5c, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0xf8, 0x20, 0xb0, 0x21, 0x66, 0x01, 0xbf, 0x2c, 0x6c, 0x0c, 0xdd, 0xf0, 0x70, 0xfe, 0x02, 0x3e, 0x1d, 0x5a, 0xda, 0x3c, 0xe0, 0xd3, 0xa1, 0x85, 0xd1, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0x80, 0x26, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x7b, 0x61, 0x7d, 0x20, 0x6f, 0x72, 0x20, 0x7b, 0x62, 0x7d, 0x2c, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x7b, 0x61, 0x7d, 0x6e, 0x25, 0x00, 0xfd, 0xdb, 0xde, 0xd8, 0xc8, 0x40, 0xce, 0xca, 0xdc, 0xca, 0xe4, 0xc2, 0xe8, 0xde, 0xe4, 0x74, 0x40, 0xe0, 0xe4, 0xde, 0xc8, 0xea, 0xc6, 0xca, 0xe6, 0x40, 0xc2, 0x40, 0xc8, 0xd2, 0xe6, 0xc6, 0xe4, 0xd2, 0xda, 0xd2, 0xdc, 0xc2, 0xe8, 0xca, 0xc8, 0x40, 0xcc, 0xde, 0xe4, 0xd6, 0x40, 0xc4, 0xca, 0xe8, 0xee, 0xca, 0xca, 0xdc, 0x40, 0xe8, 0xee, 0xde, 0x40, 0xe8, 0xf2, 0xe0, 0xca, 0xe6, 0xd8, 0x12, 0x40, 0x07, 0x59, 0x99, 0x59, 0x58, 0x1d, 0x1b, 0x5d, 0x9a, 0xdb, 0x19, 0x08, 0xdd, 0x1b, 0xc8, 0x5e, 0x58, 0x9f, 0xab, 0x01, 0x5f, 0x6c, 0x6c, 0xcc, 0x5d, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x0f, 0x6e, 0xe6, 0x1a, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0xf0, 0xef, 0xfc, 0x06, 0xa1, 0x6e, 0x53, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0xc1, 0xcd, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x86, 0x7f, 0xe7, 0xd7, 0x20, 0x2c, 0x6d, 0xaa, 0x0e, 0xa7, 0xd8, 0x1a, 0xbe, 0xa3, 0xdf, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x7c, 0x47, 0xbf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x87, 0x18, 0xdb, 0xdb, 0xd8, 0xda, 0x5c, 0x9a, 0x5e, 0xb9, 0x12, 0x00, 0x7f, 0x84, 0x81, 0x88, 0xb1, 0xbd, 0x8d, 0xad, 0xcd, 0xa5, 0xe9, 0x95, 0x81, 0xa4, 0xcd, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0xc0, 0xbd, 0xdd, 0x95, 0xc9, 0x81, 0xbc, 0x99, 0x81, 0xc8, 0x80, 0xcc, 0xa5, 0xe9, 0x95, 0x81, 0xbc, 0x99, 0x81, 0x84, 0xb9, 0x81, 0x84, 0xd1, 0xbd, 0xb5, 0xb9, 0x80, 0xa4, 0x95, 0xb1, 0x80, 0xcc, 0x80, 0xa4, 0xcd, 0x81, 0x84, 0x81, 0x88, 0xe5, 0xd1, 0x95, 0x81, 0x84, 0xcd, 0x81, 0xc8, 0x78, 0xcd, 0x80, 0xa4, 0xcd, 0x4b, 0x40, 0x8b, 0x03, 0x22, 0x96, 0x46, 0x37, 0xe7, 0xea, 0xf0, 0x43, 0xcd, 0x0a, 0xf8, 0x70, 0x61, 0x69, 0xf2, 0x86, 0x87, 0xf3, 0x17, 0xf0, 0xd1, 0xca, 0xc2, 0xc8, 0x01, 0x9f, 0x2e, 0x2c, 0x8d, 0x6d, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1f, 0xb2, 0xba, 0x30, 0x36, 0x10, 0xba, 0x3a, 0x38, 0xb6, 0x72, 0x25, 0x00, 0xbd, 0xdb, 0xde, 0xd8, 0xc8, 0x40, 0xce, 0xca, 0xdc, 0xca, 0xe4, 0xc2, 0xe8, 0xde, 0xe4, 0x74, 0x40, 0xe0, 0xe4, 0xde, 0xc8, 0xea, 0xc6, 0xca, 0xe6, 0x40, 0xc2, 0x40, 0xe8, 0xea, 0xe0, 0xd8, 0xca, 0x40, 0xde, 0xcc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xe8, 0xee, 0xde, 0x40, 0xe8, 0xf2, 0xe0, 0xca, 0xe6, 0x40, 0xe0, 0xc2, 0xe6, 0xe6, 0xca, 0xc8, 0x40, 0xd2, 0xdc, 0x5c, 0x2b, 0x01, 0x7c, 0x86, 0xe9, 0x80, 0x98, 0xa5, 0xc9, 0xcd, 0xd1, 0x81, 0xd0, 0xe5, 0xc1, 0x95, 0xb1, 0x80, 0xb0, 0x85, 0x89, 0x95, 0xb1, 0x95, 0x91, 0x81, 0xec, 0xc1, 0xf5, 0x4b, 0x00, 0xaf, 0x62, 0x3a, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x64, 0x20, 0x7b, 0x71, 0x7d, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xf8, 0x77, 0x7e, 0x0d, 0x82, 0x65, 0xa9, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xf1, 0x86, 0x7f, 0xe7, 0x37, 0x08, 0xc0, 0xa5, 0x5a, 0x01, 0xff, 0x2c, 0x8c, 0xae, 0xdc, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x08, 0x52, 0xab, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7e, 0xb3, 0x3a, 0xb7, 0x31, 0xba, 0xb4, 0x37, 0x77, 0x25, 0x00, 0xfe, 0x08, 0x03, 0x19, 0x7b, 0x93, 0x2b, 0x03, 0xb9, 0x4b, 0xa3, 0x43, 0x03, 0x79, 0x73, 0x2b, 0x03, 0x09, 0x93, 0x6b, 0x63, 0x01, 0x01, 0x23, 0x01, 0x6b, 0x69, 0xa1, 0x43, 0x2b, 0x03, 0x29, 0x6b, 0x83, 0xa3, 0xcb, 0x03, 0x71, 0x0b, 0x6b, 0x2b, 0x6b, 0x69, 0xb9, 0x43, 0x4b, 0x1b, 0x43, 0x03, 0xa1, 0x93, 0x0b, 0x73, 0x9b, 0x33, 0x7b, 0x93, 0x6b, 0x9b, 0x03, 0x09, 0x03, 0x99, 0x0b, 0x6b, 0x83, 0x63, 0x2b, 0x03, 0x71, 0x7b, 0xab, 0x73, 0x97, 0x00, 0x78, 0x22, 0xcd, 0x8d, 0xee, 0x0d, 0x24, 0x0c, 0x04, 0x4e, 0xee, 0x8d, 0xac, 0x6e, 0x8c, 0x0e, 0xc4, 0xed, 0xad, 0xce, 0xcd, 0x05, 0x24, 0xc9, 0x0c, 0xa4, 0x6e, 0xae, 0x8c, 0x0c, 0x84, 0x4c, 0x2e, 0x8f, 0x2d, 0x0f, 0x24, 0x6c, 0x0e, 0x24, 0x0c, 0x84, 0x2e, 0x0f, 0xae, 0x8c, 0x05, 0x84, 0x0e, 0xad, 0x0c, 0x64, 0xae, 0x4e, 0x4c, 0xad, 0x6c, 0x8c, 0x0e, 0xa4, 0xad, 0x6e, 0x8e, 0x0e, 0x04, 0x2d, 0xcc, 0xae, 0x0c, 0x24, 0x5c, 0x02, 0x68, 0x99, 0x0b, 0x6b, 0x83, 0x63, 0x2b, 0x03, 0xa1, 0xcb, 0x83, 0x2b, 0x03, 0x79, 0x33, 0x03, 0x01, 0x53, 0x01, 0x73, 0x35, 0xe0, 0x8b, 0x8d, 0xa1, 0xc1, 0x6b, 0xf8, 0xa2, 0xe6, 0x30, 0x9d, 0x07, 0x61, 0x3a, 0x76, 0x38, 0xc5, 0xd6, 0xf0, 0xd6, 0xfd, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x3c, 0x87, 0xd1, 0xbd, 0xb5, 0x81, 0xcc, 0xa5, 0xe9, 0x95, 0x81, 0xbc, 0xc9, 0x81, 0xbc, 0x99, 0x99, 0xcd, 0x95, 0xd1, 0xb1, 0x80, 0xa4, 0xb9, 0x81, 0x88, 0xb1, 0xbd, 0xc5, 0xcd, 0x6d, 0xf8, 0xa8, 0x7d, 0xc0, 0x17, 0x1b, 0x1b, 0x13, 0x37, 0x7c, 0xfd, 0xb2, 0x86, 0x1f, 0x61, 0x06, 0xaf, 0x3b, 0xbc, 0x18, 0x73, 0x38, 0xc5, 0x16, 0xf0, 0xe9, 0xe4, 0xc2, 0xe0, 0x0d, 0x0f, 0xe7, 0x2f, 0xc0, 0x0b, 0x27, 0xf7, 0x46, 0x56, 0x37, 0x46, 0xb7, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x6f, 0x61, 0x20, 0x63, 0x6f, 0x72, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x61, 0x72, 0x6d, 0x20, 0x60, 0x24, 0x60, 0x1b, 0x04, 0xd0, 0xd9, 0x80, 0x2f, 0x26, 0x77, 0x47, 0x6f, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x1c, 0x4e, 0xb1, 0x0d, 0x6f, 0xeb, 0x1c, 0x84, 0x46, 0xda, 0x0a, 0xf8, 0x74, 0x72, 0x65, 0xe5, 0x86, 0x87, 0xf3, 0x17, 0xf0, 0xdd, 0xde, 0xc8, 0xca, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x85, 0x4e, 0xae, 0xac, 0x0c, 0xa4, 0xed, 0x8d, 0x8d, 0x0c, 0xe4, 0xac, 0xcc, 0xad, 0x4c, 0x2e, 0x8c, 0xee, 0x4d, 0x5e, 0x09, 0xc0, 0xdf, 0x30, 0x10, 0xb0, 0x95, 0x15, 0x3a, 0xb9, 0xb2, 0x32, 0x30, 0x90, 0xb1, 0x30, 0x37, 0x10, 0xb1, 0x32, 0x90, 0xb2, 0x36, 0x38, 0xba, 0x3c, 0x16, 0x90, 0x37, 0x39, 0x90, 0xb1, 0x37, 0x37, 0xba, 0xb0, 0x34, 0x37, 0x90, 0x30, 0x10, 0xb7, 0x37, 0xb2, 0x32, 0x90, 0x37, 0x33, 0x90, 0x30, 0x10, 0xba, 0x3c, 0xb8, 0x32, 0x90, 0x30, 0x37, 0x72, 0x09, 0x80, 0x16, 0xd8, 0xca, 0xcc, 0xe8, 0x5e, 0xe4, 0xd2, 0xce, 0xd0, 0xe8, 0x40, 0xe6, 0xea, 0xc4, 0x40, 0xc0, 0x56, 0x56, 0xe8, 0xe4, 0xca, 0xca, 0xc0, 0x40, 0xde, 0xcc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xe6, 0xc2, 0xda, 0xca, 0x40, 0xe8, 0xf2, 0xe0, 0xca, 0x5c, 0x40, 0xe0, 0xe4, 0xca, 0xe8, 0xe8, 0xf2, 0x5a, 0xe0, 0xe4, 0xd2, 0xdc, 0xe8, 0xca, 0xc8, 0x40, 0xee, 0xd2, 0xe8, 0xd0, 0x40, 0xc0, 0xf6, 0xfa, 0xc0, 0x5c, 0x6d, 0xf8, 0x60, 0x7e, 0x83, 0x10, 0x7c, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xdc, 0xdd, 0xf0, 0xef, 0xfc, 0x06, 0x81, 0xde, 0xd6, 0x1a, 0xfe, 0x5c, 0x1a, 0x9c, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xa1, 0xd5, 0xd6, 0x06, 0x81, 0x92, 0xd7, 0x1a, 0xfe, 0x5c, 0x1a, 0x5c, 0x3e, 0x08, 0xfc, 0xbc, 0x66, 0x01, 0xbf, 0xed, 0x8d, 0x8d, 0xdc, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x08, 0xca, 0xbd, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xdd, 0xde, 0xe4, 0xda, 0xc2, 0xd8, 0xd2, 0xf4, 0xd2, 0xdc, 0xce, 0x40, 0xce, 0xc2, 0xe8, 0xca, 0x95, 0x00, 0xf8, 0x21, 0x0c, 0xe4, 0x2c, 0x8c, 0xae, 0x0c, 0x84, 0x0e, 0x2d, 0x8c, 0x0e, 0x24, 0x6c, 0x6c, 0xac, 0x0c, 0x8e, 0x6e, 0x0e, 0x24, 0xcc, 0x2d, 0x0f, 0xc4, 0xed, 0xad, 0xce, 0x8d, 0x05, 0x24, 0xcc, 0x8d, 0x0c, 0xc4, 0x2e, 0x8c, 0x2d, 0x8d, 0x2c, 0x8c, 0xae, 0x6c, 0x0e, 0x24, 0x8d, 0x6e, 0x0e, 0x64, 0x0e, 0x2d, 0x0c, 0xae, 0x8c, 0x05, 0x04, 0x4e, 0xee, 0x8d, 0xac, 0x6e, 0x2c, 0xcd, 0xed, 0x0c, 0x84, 0x0e, 0xad, 0x5c, 0x02, 0xd0, 0x31, 0xcd, 0x0d, 0xae, 0x8e, 0x0e, 0x24, 0xcd, 0x0c, 0x24, 0x8d, 0x0e, 0xc4, 0x2c, 0x8d, 0x6e, 0x0e, 0xe4, 0x4d, 0x0e, 0x24, 0x0c, 0x84, 0xac, 0xcc, 0x2c, 0xac, 0x8e, 0x8d, 0x0e, 0xc4, 0x2e, 0x8c, 0xad, 0xae, 0x0c, 0x24, 0xcd, 0x0c, 0x24, 0x8d, 0x0e, 0x84, 0xec, 0xad, 0x6c, 0xce, 0xed, 0x84, 0xce, 0xb5, 0x12, 0x80, 0x1f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x3a, 0x20, 0x2a, 0x20, 0x40, 0x75, 0x64, 0x20, 0x2c, 0x5b, 0x70, 0x3d, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x71, 0x3d, 0x3f, 0x28, 0x25, 0x61, 0x20, 0x25, 0x62, 0x29, 0x5d, 0x0d, 0xf8, 0x62, 0x63, 0x73, 0xe7, 0x06, 0x61, 0x3a, 0x76, 0x10, 0x4a, 0x63, 0x87, 0x53, 0x6c, 0x01, 0x9f, 0xad, 0x6c, 0x8e, 0xde, 0xf0, 0x70, 0xfe, 0x06, 0xa1, 0x8a, 0xb0, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0xdf, 0x6e, 0x75, 0x6c, 0x6c, 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x6c, 0x69, 0x73, 0xf4, 0x4a, 0x00, 0xfe, 0xb7, 0xbd, 0xb1, 0x91, 0x81, 0x9c, 0x95, 0xb9, 0x95, 0xc9, 0x85, 0xd1, 0xbd, 0xc9, 0xe9, 0x80, 0xc0, 0xc9, 0xbd, 0x91, 0xd5, 0x8d, 0x95, 0xcd, 0x81, 0x84, 0x81, 0xb4, 0xbd, 0xb1, 0x91, 0x81, 0xbc, 0x99, 0x81, 0x84, 0x81, 0xb8, 0xd5, 0xb1, 0xb1, 0xb5, 0xd0, 0x95, 0xc9, 0xb5, 0xa5, 0xb9, 0x85, 0xd1, 0x95, 0x91, 0x81, 0xb0, 0xa5, 0xcd, 0xd1, 0x81, 0xbc, 0x99, 0x81, 0xd0, 0xa1, 0x95, 0x4b, 0x00, 0xda, 0xa1, 0xbd, 0xb5, 0xbd, 0x9d, 0x95, 0xb9, 0x95, 0xbd, 0xd5, 0xcd, 0x81, 0xd0, 0xe5, 0xc1, 0x95, 0x81, 0xec, 0x85, 0xf5, 0x81, 0xdc, 0xa5, 0xd1, 0xa1, 0x81, 0x84, 0xd1, 0x81, 0xb0, 0x95, 0x85, 0xcd, 0xd1, 0x81, 0xbc, 0xb9, 0x95, 0x81, 0x94, 0xb1, 0x95, 0xb5, 0x95, 0xb9, 0xd1, 0xb9, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3d, 0x08, 0x6c, 0x88, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0x7d, 0x10, 0xf6, 0x25, 0xcd, 0x1a, 0x04, 0xa3, 0xc9, 0x86, 0x87, 0xf3, 0x37, 0x08, 0x55, 0x84, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x71, 0xab, 0x63, 0x63, 0x6b, 0xa1, 0x2b, 0x93, 0x6b, 0x4b, 0x73, 0x0b, 0xa3, 0x2b, 0x23, 0x03, 0x61, 0x4b, 0x9b, 0xa3, 0xd7, 0x20, 0x4c, 0x19, 0x97, 0x00, 0x9a, 0xd0, 0xde, 0xda, 0xde, 0xce, 0xca, 0xdc, 0xca, 0xde, 0xea, 0xe6, 0x40, 0xe8, 0xf2, 0xe0, 0xca, 0x40, 0xf6, 0xc2, 0xfa, 0x5c, 0x6d, 0xf8, 0x60, 0x7e, 0x83, 0x10, 0x7c, 0x38, 0x08, 0xfc, 0xc9, 0xc3, 0x29, 0x36, 0x6b, 0x10, 0x5a, 0x6d, 0xcb, 0x00, 0xde, 0x74, 0x72, 0x65, 0x65, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x6b, 0xe8, 0x83, 0xbf, 0xe1, 0xf1, 0x91, 0x0d, 0x7d, 0xf0, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xa0, 0x93, 0x2b, 0x2b, 0x03, 0x41, 0x2b, 0x0b, 0x23, 0x57, 0x02, 0xe0, 0x0f, 0xba, 0xb2, 0x39, 0xba, 0x39, 0x90, 0x3b, 0xb4, 0x32, 0x3a, 0xb4, 0x32, 0x39, 0x90, 0x30, 0x37, 0x10, 0xb0, 0x30, 0x30, 0x90, 0xb4, 0x39, 0x90, 0x34, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb4, 0xb2, 0x30, 0x32, 0x90, 0x37, 0x39, 0x10, 0xba, 0xb0, 0x34, 0x36, 0x90, 0x37, 0x33, 0x90, 0x30, 0x10, 0xb7, 0xb7, 0x3a, 0x37, 0x17, 0x10, 0x38, 0xb9, 0x37, 0xb2, 0xba, 0xb1, 0xb2, 0x39, 0x90, 0x12, 0x19, 0x90, 0x34, 0x33, 0x90, 0x34, 0x7a, 0x09, 0x40, 0xcb, 0xb4, 0x39, 0x90, 0xbb, 0x34, 0x3a, 0xb4, 0x34, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb4, 0xb2, 0x30, 0x32, 0x16, 0x90, 0x37, 0x39, 0x90, 0x92, 0x19, 0x90, 0x34, 0x33, 0x90, 0x34, 0x3a, 0x90, 0xb4, 0x39, 0x90, 0xbb, 0x34, 0x3a, 0xb4, 0x34, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xba, 0xb0, 0x34, 0x36, 0x57, 0x1b, 0x7e, 0x51, 0xda, 0xf0, 0xe5, 0xd2, 0x86, 0xbf, 0x68, 0x16, 0xf0, 0xc5, 0xc6, 0xee, 0xe8, 0x35, 0x64, 0xc0, 0x37, 0xd4, 0xfc, 0xc8, 0x1a, 0x32, 0xe0, 0x1b, 0x6a, 0x7e, 0xb4, 0x01, 0xff, 0x8e, 0x0e, 0x0d, 0xde, 0xf0, 0xe0, 0xce, 0x1a, 0x04, 0xb1, 0xe9, 0x86, 0x37, 0xee, 0x0e, 0x82, 0xde, 0x74, 0x0d, 0x42, 0xe6, 0x74, 0xc3, 0x1b, 0x77, 0x07, 0x21, 0x76, 0xba, 0x1a, 0x04, 0x9b, 0xe9, 0x1a, 0x32, 0xe0, 0x87, 0xdf, 0x6f, 0xd6, 0x90, 0x01, 0x3f, 0xfc, 0x2c, 0xd3, 0x80, 0xaf, 0x07, 0xa7, 0x07, 0xb7, 0x06, 0x61, 0x3a, 0xb6, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xe1, 0xc1, 0x9d, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x8b, 0x56, 0x6d, 0x78, 0x5a, 0x67, 0x0d, 0x3f, 0xc2, 0x1c, 0x04, 0xbd, 0x69, 0xb5, 0x1a, 0xbe, 0x92, 0xd8, 0xf0, 0xf8, 0xc8, 0x86, 0xaf, 0x24, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x0f, 0xc3, 0x4b, 0x9b, 0x03, 0xb9, 0x4b, 0xa3, 0x43, 0x4b, 0x73, 0x03, 0x09, 0xc3, 0x4b, 0x9b, 0x57, 0x02, 0xd0, 0x68, 0xec, 0xad, 0x0d, 0xae, 0x8e, 0xae, 0x6c, 0x0e, 0x84, 0x0e, 0xad, 0x0c, 0x24, 0x0c, 0x2f, 0x6d, 0x0e, 0xe4, 0xcd, 0x0c, 0x64, 0x4f, 0xac, 0x0f, 0xe4, 0x2e, 0x8d, 0x0e, 0x2d, 0xcd, 0x0d, 0x24, 0x0c, 0x2f, 0x6d, 0x0e, 0x64, 0x2f, 0xac, 0xcf, 0xd5, 0x86, 0x5f, 0x94, 0x36, 0xfc, 0xad, 0xb4, 0xe1, 0xdd, 0xbc, 0x0d, 0xdf, 0xe6, 0x6c, 0x78, 0x37, 0x6f, 0xc3, 0x6b, 0x7a, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0x43, 0xcd, 0x06, 0x41, 0x7a, 0xba, 0xe1, 0xf3, 0xa0, 0x35, 0x08, 0x1c, 0xd5, 0xc3, 0xd3, 0x3a, 0x6b, 0x10, 0xc4, 0xa6, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x12, 0x47, 0x1d, 0x84, 0x1d, 0xeb, 0x1a, 0x84, 0xcc, 0xe9, 0x86, 0x8f, 0xa3, 0x0e, 0x42, 0xa0, 0x76, 0x0d, 0xc2, 0x74, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x43, 0xf3, 0x83, 0x36, 0xbc, 0x17, 0x74, 0x10, 0xac, 0xac, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe0, 0xa9, 0x5d, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0xe7, 0x41, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x14, 0x58, 0x0f, 0x82, 0xfc, 0xb6, 0x83, 0x60, 0x65, 0xad, 0xc3, 0x29, 0xb6, 0x86, 0xaf, 0x3d, 0x36, 0x3c, 0x3e, 0xb2, 0xe1, 0x6b, 0x8f, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x0a, 0xc3, 0x4b, 0x9b, 0x03, 0xb9, 0x4b, 0xa3, 0x43, 0x4b, 0x73, 0x03, 0x41, 0x2b, 0x0b, 0x23, 0x7b, 0xa1, 0x0b, 0x4b, 0x63, 0x57, 0x02, 0xe0, 0x81, 0xb1, 0xb7, 0x36, 0xb8, 0x3a, 0xba, 0xb2, 0x39, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0x30, 0xbc, 0xb4, 0x39, 0x90, 0x37, 0x33, 0x10, 0xb0, 0x30, 0x30, 0x90, 0xbb, 0x34, 0x3a, 0xb4, 0x34, 0x37, 0x90, 0xb2, 0x34, 0x3a, 0xb4, 0x32, 0x39, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb4, 0xb2, 0x30, 0x32, 0x90, 0x37, 0x39, 0x10, 0xba, 0xb0, 0x34, 0x36, 0x90, 0x37, 0x33, 0x90, 0x30, 0x10, 0xb7, 0xb7, 0x3a, 0x77, 0x09, 0x40, 0x5b, 0x14, 0xb2, 0x32, 0xb8, 0x32, 0x37, 0xb2, 0x39, 0x90, 0x3b, 0xb4, 0x32, 0x3a, 0xb4, 0x32, 0x39, 0x10, 0xb0, 0x30, 0x30, 0x10, 0xb6, 0xb4, 0xb2, 0x39, 0x90, 0xbb, 0x34, 0x3a, 0xb4, 0x34, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb4, 0xb2, 0x30, 0x32, 0x90, 0x37, 0x39, 0x10, 0xba, 0xb0, 0x34, 0xb6, 0x14, 0x57, 0x1b, 0x7e, 0x51, 0xda, 0xf0, 0xe5, 0xd2, 0x86, 0xbf, 0x68, 0x36, 0xfc, 0x50, 0xb3, 0x41, 0x90, 0x9e, 0x6e, 0x78, 0x70, 0x67, 0x0d, 0x02, 0xcd, 0xf4, 0xf0, 0x98, 0xcc, 0x06, 0xe1, 0x98, 0xba, 0x06, 0x61, 0x3a, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xc2, 0xee, 0xf6, 0x20, 0xec, 0x58, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0x41, 0xe8, 0xac, 0x1e, 0x04, 0x2b, 0x6b, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xd6, 0x86, 0x3b, 0x6d, 0x06, 0x68, 0xd9, 0xc2, 0xf2, 0xca, 0xe4, 0x5a, 0x64, 0x1b, 0x66, 0x68, 0x43, 0x51, 0xde, 0x70, 0x22, 0x6c, 0x28, 0xca, 0x6b, 0x38, 0x47, 0x16, 0x04, 0x0b, 0xbf, 0xf0, 0x0b, 0x92, 0x81, 0xe3, 0xeb, 0x78, 0x7e, 0x7c, 0x3b, 0xbe, 0x2d, 0x2e, 0x08, 0x16, 0x87, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0xa4, 0x6a, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x43, 0xc7, 0xb0, 0x0d, 0x0b, 0xa2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x10, 0x1f, 0x3a, 0x86, 0x1d, 0x8f, 0x8f, 0x6f, 0x2b, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xf8, 0x98, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0xf4, 0x10, 0xda, 0x10, 0xc3, 0x61, 0x17, 0x04, 0x0b, 0x92, 0xc1, 0xb5, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xfc, 0x27, 0x08, 0xfa, 0x71, 0xe8, 0x90, 0xce, 0x5d, 0xd8, 0x85, 0xdd, 0x20, 0x48, 0x9a, 0x37, 0xc4, 0x70, 0xd8, 0x05, 0xc1, 0x06, 0x61, 0x03, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0x43, 0xd3, 0xa1, 0xe3, 0xd0, 0x21, 0x9d, 0xbb, 0x21, 0x55, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf1, 0x20, 0x5a, 0xd8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x88, 0x07, 0xd1, 0xc2, 0x4f, 0x10, 0xee, 0x43, 0xaa, 0xe6, 0x78, 0x7c, 0xe8, 0x18, 0x76, 0x3c, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x78, 0x10, 0x2d, 0xfc, 0x20, 0x19, 0x32, 0x88, 0x16, 0xc4, 0x83, 0x68, 0x61, 0x27, 0x88, 0xf5, 0x21, 0x55, 0x73, 0x3c, 0x3e, 0xf4, 0x10, 0x3a, 0x1e, 0x1f, 0xdf, 0x16, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x87, 0x5d, 0xb8, 0x0d, 0x31, 0x9c, 0x50, 0xbf, 0x86, 0x54, 0xcd, 0x21, 0x31, 0x35, 0x48, 0x06, 0xa3, 0x41, 0xb4, 0x60, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf5, 0x13, 0x84, 0xfe, 0x78, 0x7c, 0x58, 0xa1, 0x3d, 0xbe, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x07, 0xc1, 0x86, 0x18, 0x0e, 0xbb, 0x41, 0x70, 0x61, 0x6f, 0x48, 0xd5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0xc1, 0x7c, 0x82, 0xd8, 0x0f, 0xa2, 0x85, 0xdd, 0x90, 0xec, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf9, 0x41, 0xc8, 0x67, 0x1f, 0xcf, 0x8f, 0xe7, 0xc7, 0xb7, 0x61, 0x37, 0x74, 0x1c, 0x59, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x43, 0x23, 0xc1, 0x25, 0x6c, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x7c, 0x83, 0x68, 0x61, 0x0f, 0x8d, 0x04, 0x8f, 0xc7, 0x83, 0x64, 0x30, 0x1a, 0x44, 0x0b, 0xa6, 0x13, 0x37, 0x88, 0x16, 0x84, 0x13, 0x73, 0x3c, 0x3f, 0x9c, 0x62, 0x0b, 0x82, 0xc5, 0x61, 0x37, 0x08, 0x3e, 0xe6, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0x60, 0x7b, 0xde, 0xd0, 0x31, 0x6c, 0xd8, 0x0d, 0x82, 0xa4, 0x79, 0x43, 0x0f, 0xa1, 0x61, 0x17, 0x04, 0x1b, 0x84, 0x0d, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x20, 0x89, 0x3e, 0x34, 0x1d, 0x3a, 0x0e, 0x2d, 0x88, 0x16, 0x7e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xaa, 0x0f, 0x82, 0xdc, 0xfa, 0x78, 0x7c, 0xe8, 0x21, 0x34, 0x88, 0x16, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xba, 0x0f, 0xc2, 0x9e, 0xfa, 0x78, 0x7c, 0xe8, 0x18, 0x76, 0x7c, 0x5b, 0x10, 0x2c, 0x0e, 0xbb, 0x41, 0xf0, 0x31, 0x6f, 0x88, 0xe1, 0x30, 0x83, 0x60, 0x41, 0x32, 0x50, 0x56, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf8, 0xd0, 0x43, 0xe8, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x83, 0x10, 0x6e, 0x3e, 0x0e, 0x1d, 0xdf, 0x16, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xf8, 0x98, 0x37, 0x08, 0x4c, 0xec, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xa8, 0x1f, 0x04, 0x0b, 0x92, 0x41, 0xd5, 0x61, 0x85, 0xf6, 0xb0, 0x51, 0x3b, 0x88, 0x16, 0xc4, 0x87, 0x7c, 0xed, 0xf1, 0xf8, 0xf8, 0x76, 0x3c, 0x5e, 0x10, 0x2c, 0x0e, 0xbb, 0x41, 0xf0, 0x31, 0x6f, 0x38, 0xc5, 0x86, 0xdd, 0x20, 0x48, 0x9a, 0xd7, 0x90, 0xb5, 0x3b, 0xf4, 0x10, 0x1a, 0x04, 0x1b, 0x84, 0x70, 0xf3, 0x06, 0x21, 0x05, 0x3e, 0xec, 0xc2, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x84, 0x00, 0xf8, 0x86, 0x18, 0x0e, 0xbb, 0x20, 0x58, 0x90, 0x0c, 0xae, 0x1d, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc9, 0x8e, 0x43, 0x23, 0xc1, 0xe3, 0xd0, 0x21, 0x9d, 0xbb, 0x20, 0x5a, 0xf8, 0x83, 0x10, 0x00, 0x3f, 0xec, 0x15, 0x0e, 0xa2, 0xc5, 0x25, 0x44, 0x0b, 0xa2, 0x85, 0x9f, 0x30, 0x3b, 0xec, 0x15, 0x4e, 0xd8, 0x1d, 0xf6, 0x0a, 0x8f, 0x6f, 0x0b, 0x82, 0xc5, 0x61, 0x37, 0x08, 0x3e, 0xe6, 0x0d, 0x31, 0x1c, 0x76, 0x61, 0x37, 0x08, 0xb6, 0xe7, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0xc0, 0x80, 0x5e, 0xd8, 0x0d, 0x02, 0xff, 0xfc, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x0b, 0xbb, 0xb0, 0x1b, 0x04, 0x49, 0xf3, 0x86, 0x18, 0x0e, 0xbb, 0x41, 0x10, 0x49, 0x2f, 0xec, 0x06, 0x21, 0xdc, 0x7c, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0xdf, 0x06, 0xc1, 0xe2, 0x86, 0x15, 0xda, 0x39, 0x9c, 0x62, 0x8b, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x82, 0x0b, 0x7b, 0x83, 0xc0, 0xc4, 0x5e, 0x10, 0x6c, 0x48, 0xd5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x27, 0x08, 0xfe, 0x71, 0x68, 0x83, 0x50, 0xcc, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xfa, 0x83, 0xe0, 0xe1, 0x3e, 0x1e, 0x1f, 0xdf, 0x8e, 0xc7, 0xc7, 0xe3, 0x55, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0xd8, 0x85, 0x5d, 0xe8, 0x21, 0x9a, 0x87, 0xf5, 0xcd, 0x0d, 0x2d, 0x24, 0x0f, 0xd1, 0x1c, 0x7e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0xe8, 0x9a, 0xb9, 0x82, 0x60, 0x41, 0x32, 0x50, 0x9c, 0x26, 0xf4, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xc4, 0x7f, 0xe1, 0x37, 0x9e, 0x6f, 0xc8, 0xd7, 0x1e, 0x52, 0x07, 0x13, 0x44, 0xff, 0x38, 0xb4, 0x21, 0x6b, 0x37, 0x08, 0x16, 0x24, 0x83, 0x92, 0x09, 0xff, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xd6, 0x7e, 0x0f, 0xa9, 0x9a, 0xe3, 0xd0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0xa2, 0x79, 0x3c, 0x1e, 0x7e, 0x41, 0xb4, 0x60, 0x7e, 0x10, 0x02, 0xe0, 0xc7, 0xe3, 0xe1, 0xd7, 0x20, 0xa4, 0xc0, 0x8f, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0xda, 0x6c, 0x1c, 0xcf, 0x87, 0x5f, 0x10, 0x2d, 0xa8, 0x3f, 0x08, 0x01, 0xf0, 0xe3, 0xf1, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x35, 0xa4, 0x0e, 0x8e, 0x43, 0x07, 0x81, 0x89, 0x7d, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x9e, 0x59, 0x9d, 0xbb, 0x61, 0x85, 0xb6, 0xe3, 0xf1, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x78, 0x68, 0x65, 0xf7, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0xc3, 0x6e, 0xd8, 0x35, 0xd8, 0x10, 0xc3, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xd3, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0xdb, 0xd0, 0x43, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x90, 0x1e, 0x04, 0xa5, 0xf7, 0xf1, 0xf8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x9e, 0x5c, 0x18, 0x7c, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xec, 0x86, 0x5d, 0x83, 0x0d, 0x31, 0x5c, 0x10, 0x2c, 0x48, 0x06, 0xfa, 0x3a, 0x1d, 0x92, 0x4b, 0x87, 0x44, 0xeb, 0x20, 0x19, 0x32, 0x88, 0x16, 0xa4, 0x83, 0x60, 0x41, 0x32, 0xf0, 0xbe, 0xd3, 0x21, 0xb9, 0x74, 0x48, 0xb4, 0x1e, 0x8f, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x93, 0x4b, 0x83, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x16, 0xe7, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0xc3, 0x2f, 0x88, 0x16, 0x74, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x5f, 0xa7, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xfc, 0x0f, 0x0d, 0xbf, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0xa1, 0x63, 0xd8, 0x20, 0x58, 0x1c, 0x76, 0xe1, 0x36, 0xa4, 0x6a, 0x0e, 0x42, 0x3e, 0x7b, 0x41, 0xb0, 0x20, 0x19, 0x78, 0xdf, 0xe9, 0x20, 0xc8, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x04, 0x29, 0xfe, 0x21, 0x55, 0x73, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x78, 0x98, 0x43, 0xaa, 0x66, 0x10, 0x2d, 0xec, 0x20, 0xd8, 0x20, 0x70, 0xfd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x4b, 0x30, 0xfb, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xba, 0x74, 0x10, 0xe4, 0xfc, 0x07, 0x43, 0x39, 0xe1, 0x38, 0x74, 0x3c, 0x3e, 0xbe, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x67, 0x96, 0xc6, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x61, 0x37, 0x08, 0x7a, 0xfd, 0x0d, 0xdd, 0x1b, 0x0f, 0xd1, 0x1c, 0x04, 0x0b, 0x92, 0x41, 0x70, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xac, 0xfd, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x92, 0x4e, 0x87, 0x15, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x63, 0x9f, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa3, 0xb3, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x8c, 0x30, 0x80, 0xe3, 0xd0, 0x61, 0x5c, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x78, 0x6c, 0x73, 0xe8, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0xe2, 0x41, 0x00, 0xdc, 0x2f, 0x0e, 0x82, 0x05, 0xc9, 0xa0, 0xe4, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x50, 0x97, 0x0e, 0xc9, 0xa5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0x10, 0xcd, 0x41, 0xb0, 0x20, 0x19, 0x68, 0xeb, 0x74, 0x48, 0x2e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x02, 0xa7, 0xfd, 0x38, 0x74, 0xe8, 0x18, 0x76, 0x1c, 0x3a, 0xf4, 0x10, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x37, 0x16, 0x46, 0x1f, 0x52, 0x4b, 0xc7, 0xe3, 0x15, 0x7e, 0x41, 0xb0, 0x38, 0x1b, 0x8e, 0xf6, 0x16, 0x07, 0xc1, 0x06, 0xa3, 0xc4, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x37, 0x44, 0x73, 0x42, 0xeb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x03, 0xd7, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x37, 0x44, 0x73, 0x42, 0xe9, 0xa1, 0x63, 0xd8, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xde, 0x58, 0x1d, 0x7d, 0x48, 0x2d, 0x1d, 0x8f, 0x57, 0xf8, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0xc3, 0xd1, 0x3e, 0x08, 0x16, 0x24, 0x83, 0xe0, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x78, 0x7e, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0x61, 0x3d, 0xf6, 0xd0, 0xa8, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x4f, 0xac, 0x0c, 0x3f, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0xbf, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0xbf, 0x20, 0x5a, 0xb0, 0x1d, 0x04, 0x1b, 0x8c, 0x12, 0x83, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0x10, 0xcd, 0x43, 0x23, 0xc1, 0x43, 0xc7, 0xb0, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x30, 0x80, 0x21, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x43, 0x34, 0x07, 0xc1, 0x82, 0x64, 0xf0, 0xe7, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x43, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x71, 0x16, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x3b, 0x74, 0x0c, 0x3b, 0x0e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x69, 0xa7, 0x43, 0x72, 0xe9, 0x60, 0xd4, 0x67, 0x1c, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x93, 0x2b, 0xb3, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0xc5, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0x6b, 0xbf, 0x1b, 0x52, 0x07, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd0, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xef, 0x3b, 0x1d, 0xb2, 0x15, 0x87, 0xf5, 0x89, 0xc3, 0x8e, 0xc9, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xbc, 0xb6, 0x32, 0xfa, 0x90, 0x5a, 0x3a, 0x1e, 0x0f, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x1b, 0x0c, 0x4c, 0x86, 0x41, 0xb0, 0x20, 0x19, 0x88, 0xce, 0x21, 0x5b, 0x71, 0x30, 0x56, 0x1a, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x2b, 0x73, 0x23, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0x7e, 0x3a, 0x24, 0x97, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb2, 0x76, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x01, 0xed, 0xaf, 0xf7, 0x1d, 0x92, 0x4b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0x28, 0x1d, 0x92, 0x4b, 0x87, 0x44, 0xeb, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xde, 0xdc, 0x1d, 0x7c, 0x48, 0x2d, 0x1d, 0x8f, 0x57, 0xf8, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0xc6, 0x59, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x62, 0x78, 0x48, 0xd5, 0x1c, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0xc3, 0x2b, 0x13, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x61, 0x37, 0x08, 0x7a, 0xfd, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0xa2, 0x39, 0xec, 0xc2, 0x6d, 0x10, 0x52, 0xe0, 0x87, 0x7c, 0xed, 0x06, 0x21, 0x00, 0x3e, 0xec, 0x82, 0x60, 0x41, 0x32, 0xf8, 0x72, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x44, 0xf3, 0xb0, 0xf6, 0x7b, 0x1c, 0x5a, 0x10, 0x2c, 0x48, 0x06, 0xea, 0xd2, 0x61, 0x85, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x37, 0xc4, 0x70, 0x10, 0x6c, 0xd8, 0x0c, 0x39, 0x18, 0x1b, 0x24, 0x87, 0x71, 0x39, 0x0e, 0x0d, 0x82, 0x35, 0xc4, 0x70, 0x10, 0x6c, 0xd8, 0x0c, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x58, 0xfb, 0x3d, 0x44, 0xf3, 0x38, 0x34, 0x08, 0x16, 0x04, 0x1b, 0x0c, 0x4a, 0x8e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0x21, 0x5f, 0x7b, 0x1c, 0x1a, 0x76, 0xe1, 0x36, 0xc4, 0x70, 0x10, 0x2c, 0x48, 0x06, 0xfa, 0x3a, 0x1d, 0x04, 0x39, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0xe6, 0xb0, 0xf6, 0x7b, 0x1c, 0xda, 0x38, 0x34, 0xcc, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x3c, 0xb9, 0xb4, 0xf3, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x71, 0x16, 0x0f, 0x31, 0x6c, 0x71, 0x10, 0x6c, 0x30, 0x64, 0x20, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x84, 0xbf, 0xd3, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x5b, 0xf8, 0x8d, 0xe7, 0x1b, 0x0c, 0x2f, 0x8a, 0x83, 0xa0, 0xf4, 0x5e, 0xf8, 0x8d, 0xe7, 0x1b, 0x7a, 0xec, 0x4c, 0xf8, 0x7a, 0x30, 0xf0, 0x43, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x6b, 0x88, 0xe6, 0x20, 0xd8, 0x60, 0xc8, 0x40, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x97, 0x70, 0x7a, 0x82, 0x50, 0x1f, 0x87, 0x06, 0xc1, 0x06, 0xa3, 0x92, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x78, 0xdf, 0xe9, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x38, 0x34, 0xfc, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xcd, 0x95, 0xdd, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x83, 0x81, 0xc9, 0x30, 0x08, 0x16, 0x24, 0x03, 0xe7, 0xca, 0x21, 0x5b, 0x71, 0x30, 0x56, 0x1a, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x93, 0x9b, 0x43, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x16, 0x67, 0x0e, 0xc2, 0xd9, 0x7e, 0x71, 0x10, 0x2c, 0x48, 0x06, 0x24, 0xbf, 0xf7, 0x1d, 0x92, 0x4b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x72, 0x20, 0x07, 0x63, 0x34, 0xe2, 0xd0, 0x31, 0xec, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x9e, 0x5c, 0x1d, 0x7d, 0x48, 0x2d, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbb, 0x61, 0xd7, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0x43, 0x06, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa3, 0xc4, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x78, 0xa1, 0x98, 0xf0, 0xfa, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x00, 0x86, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x5e, 0x28, 0x0e, 0x86, 0x25, 0xc1, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xde, 0x58, 0x98, 0x7b, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0x92, 0x41, 0xd9, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x4a, 0x0e, 0x82, 0x9c, 0xff, 0x90, 0x68, 0x3d, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xa4, 0xd3, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x8c, 0xd3, 0x1c, 0x1a, 0xb5, 0x1c, 0x87, 0x56, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0xf4, 0x75, 0x3a, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x04, 0x26, 0xf6, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x92, 0xc1, 0x9f, 0x83, 0x20, 0xe7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x48, 0xaf, 0x1c, 0x04, 0x39, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x10, 0x1d, 0x92, 0x4b, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xc6, 0xf6, 0xcc, 0xa1, 0x51, 0xcb, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x63, 0x7b, 0xe6, 0xd0, 0x02, 0x6c, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x49, 0xa7, 0x83, 0x20, 0xe7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x7f, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x84, 0xfb, 0x87, 0xf8, 0x1f, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x88, 0xce, 0x04, 0xf1, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xf2, 0xd9, 0x87, 0xd4, 0xc1, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x06, 0x65, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x14, 0xbd, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xf0, 0xbe, 0xd3, 0xc1, 0x78, 0xd7, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0xc9, 0x8e, 0xe3, 0xd0, 0x61, 0xaf, 0xf0, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0xa8, 0x4b, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x37, 0x24, 0x3b, 0x06, 0xc1, 0x82, 0x64, 0xf0, 0x67, 0x82, 0xf9, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x1c, 0x52, 0x07, 0xc7, 0xa1, 0xc3, 0x5e, 0xe1, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0xaf, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0x82, 0x0d, 0x86, 0x42, 0xce, 0x20, 0xd8, 0x60, 0x74, 0xe5, 0x0c, 0x82, 0x0d, 0x06, 0xb0, 0xce, 0x20, 0xd8, 0x60, 0x14, 0xee, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x16, 0x3c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xb7, 0x3d, 0x07, 0x83, 0x9e, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x01, 0xcb, 0x73, 0x30, 0xec, 0x7b, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x1b, 0x8c, 0xed, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x63, 0xdd, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xc3, 0x8c, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x70, 0xbf, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x6c, 0xcf, 0x1c, 0xd2, 0x70, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xc6, 0xf6, 0xcc, 0xa1, 0x83, 0xc6, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xfc, 0x82, 0x68, 0x61, 0x0f, 0xc6, 0x18, 0xce, 0xf1, 0x78, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x28, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x30, 0xb1, 0x87, 0xdf, 0x78, 0x7e, 0xe8, 0x4f, 0x7e, 0x1c, 0xda, 0x90, 0x3a, 0x18, 0x04, 0x0b, 0x82, 0x0d, 0xc6, 0xdf, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0x30, 0xb1, 0x8f, 0x43, 0x83, 0x60, 0x41, 0x32, 0x50, 0xf4, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x63, 0x68, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x98, 0x1f, 0x87, 0x06, 0xd1, 0xc2, 0x0e, 0x82, 0x0d, 0x02, 0x94, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0xb0, 0xf0, 0x1b, 0xcf, 0xc7, 0xe3, 0xf1, 0x61, 0xaf, 0xf0, 0x38, 0x74, 0x3c, 0x3f, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x8c, 0xe2, 0xa3, 0x41, 0xb4, 0xb0, 0x83, 0x60, 0x83, 0x00, 0xe5, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x2c, 0xfc, 0xc6, 0xf3, 0xc3, 0xb9, 0x7e, 0xd8, 0x2b, 0x3c, 0x0e, 0x1d, 0xcf, 0x8f, 0x43, 0xc7, 0xe3, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x18, 0xd4, 0x2e, 0x8b, 0x83, 0x60, 0x83, 0x91, 0xf2, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x1b, 0x7e, 0xe3, 0xf9, 0xc1, 0x30, 0x78, 0x39, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x27, 0x57, 0xe7, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x83, 0x81, 0xc9, 0x30, 0x08, 0x36, 0xc4, 0x70, 0x10, 0x2c, 0x0e, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0x48, 0xcc, 0x6c, 0x88, 0xe1, 0x20, 0xd8, 0x20, 0x70, 0xfd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xde, 0x1f, 0x04, 0x0f, 0xf7, 0x61, 0xc7, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x31, 0xb4, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0xb2, 0x76, 0x83, 0x60, 0x41, 0x32, 0x08, 0x0e, 0x02, 0xde, 0xff, 0x20, 0x28, 0xfe, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x25, 0x27, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xc8, 0xcb, 0x4e, 0x30, 0xfa, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0xf8, 0x76, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x9e, 0x5c, 0x19, 0x7c, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x7e, 0x41, 0x32, 0x10, 0xaf, 0xe3, 0xf1, 0x20, 0x19, 0x44, 0xc7, 0xe3, 0x85, 0xdf, 0x60, 0x20, 0x41, 0x0d, 0x92, 0x41, 0xdf, 0xf1, 0x78, 0xe1, 0x37, 0x18, 0x48, 0x50, 0x83, 0x64, 0x50, 0x77, 0x3c, 0x5e, 0x5c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbb, 0x61, 0xd7, 0x60, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x86, 0xdc, 0xf7, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x38, 0xf8, 0x3c, 0xb8, 0x3b, 0x78, 0x38, 0xf8, 0x39, 0x68, 0x1b, 0xdc, 0x1c, 0x3c, 0x1c, 0x3c, 0x1d, 0x9c, 0xed, 0xf8, 0x76, 0x3c, 0x3e, 0x9c, 0x62, 0xc3, 0x6e, 0xc8, 0x63, 0x6d, 0x68, 0x24, 0x38, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0x10, 0x6c, 0xc8, 0x44, 0x1c, 0xd2, 0x70, 0x07, 0x41, 0xe9, 0x7d, 0x3c, 0x3e, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xf8, 0x05, 0xd1, 0xc2, 0x1e, 0x52, 0x07, 0xc7, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xac, 0xf5, 0x1d, 0x56, 0x68, 0x07, 0xc9, 0x40, 0xec, 0x06, 0xd1, 0xc2, 0x1e, 0x0c, 0xfc, 0x90, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xfc, 0x82, 0x68, 0x61, 0x0f, 0x89, 0xcd, 0xe3, 0xf1, 0x20, 0x58, 0x0c, 0x55, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x89, 0x80, 0x0d, 0x6b, 0xbf, 0x4b, 0x38, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe5, 0x13, 0x9e, 0x1f, 0x8f, 0x8f, 0x6f, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x1e, 0x52, 0x07, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6f, 0x30, 0x04, 0xa8, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0xb0, 0xd7, 0x77, 0x58, 0xa1, 0x1d, 0x24, 0x03, 0xa3, 0x77, 0x30, 0x74, 0xa9, 0x0e, 0x8d, 0x5a, 0x8e, 0xc7, 0xc7, 0xe3, 0x15, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xec, 0x86, 0x74, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x41, 0xd0, 0xeb, 0x2f, 0xec, 0xc2, 0x2e, 0xf4, 0x30, 0x2e, 0x87, 0xf5, 0xcd, 0x05, 0xc1, 0xe2, 0x20, 0x58, 0x41, 0xb0, 0xc1, 0xd0, 0x41, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x0e, 0xf1, 0x3f, 0x0e, 0x0d, 0x82, 0x0d, 0x86, 0x0e, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x74, 0x58, 0xfb, 0x3d, 0x0e, 0x0d, 0xbb, 0x70, 0x1b, 0x84, 0x14, 0xf8, 0x41, 0x08, 0x80, 0x2f, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf1, 0x82, 0x60, 0x83, 0x41, 0xc9, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x1d, 0x92, 0x1d, 0xc7, 0xa1, 0x41, 0xb0, 0xc1, 0xa0, 0xe4, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x0e, 0x89, 0x99, 0xe3, 0xd0, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xf2, 0x2b, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0x06, 0x5c, 0xd5, 0x71, 0xe8, 0xf8, 0x76, 0x88, 0xe1, 0xb0, 0x1b, 0x8c, 0x58, 0xac, 0x0d, 0x47, 0xfb, 0xb0, 0x0b, 0xb7, 0x84, 0xe1, 0xa1, 0x91, 0xe0, 0x82, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x25, 0x2c, 0x0f, 0x82, 0xd2, 0xfb, 0x78, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x18, 0x3d, 0x5d, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xc2, 0xde, 0xe4, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x82, 0x60, 0x41, 0x32, 0xd0, 0xb9, 0xef, 0x90, 0x5c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x30, 0x20, 0xbe, 0x0e, 0x69, 0xb8, 0xe3, 0xd0, 0x20, 0xd8, 0x60, 0x40, 0x7c, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x10, 0x5f, 0x87, 0x0e, 0x1a, 0xc7, 0xa1, 0x61, 0x37, 0x18, 0x5f, 0x5a, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0xdc, 0x0e, 0x2b, 0xb4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xf1, 0x3f, 0xac, 0xfd, 0x1e, 0x87, 0x06, 0xc1, 0x86, 0x25, 0x88, 0x83, 0x51, 0xc7, 0x75, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x5e, 0xdb, 0x9b, 0x7c, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0xd6, 0x60, 0x58, 0x7e, 0x1d, 0x8c, 0x2e, 0xb0, 0x83, 0x01, 0x0b, 0x76, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xde, 0xd9, 0x9b, 0x7c, 0x48, 0x2d, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbb, 0x21, 0x9d, 0xb9, 0x21, 0x86, 0xc3, 0x6e, 0x10, 0xf4, 0xfa, 0x0b, 0xbb, 0xc1, 0x88, 0xc5, 0x5a, 0x10, 0x2c, 0x48, 0x06, 0xf2, 0x2b, 0x87, 0x15, 0xda, 0x43, 0xa2, 0xf5, 0x10, 0xc3, 0x83, 0x71, 0xce, 0x75, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x1e, 0xd9, 0x9b, 0x7c, 0x48, 0x2d, 0x1d, 0x8f, 0x57, 0x10, 0x2c, 0x1e, 0x0c, 0x6f, 0x97, 0xc5, 0x61, 0x37, 0xe4, 0xb1, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0x18, 0x97, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x84, 0xe6, 0xe3, 0xd0, 0xf1, 0x78, 0x05, 0xc1, 0xe2, 0x86, 0xfe, 0x34, 0xb3, 0xa1, 0x6f, 0xf2, 0x1a, 0xfa, 0xd3, 0xcc, 0x86, 0x7b, 0x7c, 0xe3, 0x79, 0x10, 0x89, 0x83, 0x71, 0x6b, 0xb6, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x48, 0x06, 0xf6, 0xeb, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0x41, 0x60, 0x62, 0x1f, 0x87, 0x8e, 0xc7, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x6b, 0x58, 0xa1, 0xdd, 0x70, 0x8a, 0x6d, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0x8b, 0xc3, 0x6e, 0x10, 0x24, 0xde, 0x1b, 0x04, 0xa5, 0xf7, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x07, 0x41, 0xe9, 0xbd, 0xa1, 0x91, 0xe0, 0xb0, 0x0b, 0x82, 0x0d, 0xd1, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf8, 0x63, 0x0e, 0xcd, 0x92, 0x8e, 0x43, 0x1b, 0x1a, 0x09, 0x1e, 0x04, 0xa5, 0xf7, 0xf1, 0x78, 0x41, 0xb0, 0x41, 0x08, 0xdb, 0x2f, 0x0e, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x43, 0xbf, 0xc1, 0x0d, 0x8b, 0x7c, 0x87, 0x18, 0x1e, 0x8f, 0x8f, 0xc7, 0x83, 0x60, 0x71, 0x66, 0x43, 0x46, 0xeb, 0x60, 0x8c, 0xa1, 0x2d, 0x0e, 0xbb, 0x21, 0x8f, 0xb5, 0x21, 0x86, 0xc3, 0x6e, 0x10, 0x24, 0xde, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x08, 0x4a, 0xef, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xe3, 0xc2, 0xec, 0x60, 0xf0, 0xc7, 0x1c, 0x87, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x61, 0x37, 0xe4, 0xb1, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0xbb, 0x06, 0x1b, 0x62, 0xb8, 0x21, 0x86, 0x07, 0x03, 0xb3, 0xeb, 0x78, 0xbc, 0x20, 0x58, 0x9c, 0xd9, 0x10, 0xcd, 0x83, 0x31, 0x86, 0xb6, 0x38, 0xec, 0x86, 0x3c, 0xd6, 0x86, 0x46, 0x82, 0xc3, 0x6e, 0x10, 0x24, 0xde, 0x1b, 0xa2, 0x79, 0x30, 0x52, 0xd7, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x3c, 0x2c, 0xf2, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0xa3, 0xac, 0x6c, 0x71, 0xd8, 0x0d, 0x79, 0xac, 0x0d, 0x31, 0x3c, 0x18, 0xb2, 0x65, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x86, 0x7e, 0xb5, 0x1b, 0xba, 0xc9, 0x1e, 0x8c, 0x4b, 0xb3, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0x5b, 0xf8, 0x0d, 0x7b, 0x85, 0xc7, 0xb7, 0xc3, 0xb8, 0x1c, 0x8f, 0x8f, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0xc3, 0xfa, 0xde, 0x86, 0x18, 0x6e, 0x18, 0x97, 0x43, 0x0c, 0x8f, 0xc7, 0x0b, 0xbf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x37, 0xac, 0xef, 0x2d, 0xc8, 0xd6, 0x90, 0xc7, 0x1e, 0x03, 0xdf, 0xad, 0xac, 0x8c, 0x3c, 0x9c, 0x62, 0x87, 0x71, 0x39, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x0d, 0x86, 0x5c, 0xdc, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbb, 0x61, 0xd7, 0x60, 0x43, 0x34, 0x87, 0xdd, 0x90, 0xc7, 0xda, 0x30, 0x2e, 0xc3, 0x2e, 0xdc, 0xc1, 0xc0, 0xec, 0xda, 0x10, 0xcd, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0x18, 0xf8, 0x6d, 0x61, 0x74, 0xe5, 0xe1, 0x14, 0x3b, 0x1e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x61, 0x37, 0xe4, 0xb1, 0x36, 0x8c, 0xcb, 0xc1, 0xd0, 0xec, 0x3a, 0x1e, 0xaf, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x21, 0x31, 0x35, 0x08, 0x16, 0x87, 0x5d, 0xd8, 0x0d, 0x89, 0x80, 0x85, 0xdd, 0x60, 0x10, 0x70, 0x1c, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0xc3, 0xb8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0xc1, 0x7c, 0x41, 0xb0, 0xc1, 0xa0, 0xe4, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0xc9, 0x8e, 0xe3, 0xd0, 0x20, 0xd8, 0x60, 0x50, 0x72, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x87, 0xc4, 0xcc, 0x71, 0x68, 0x10, 0x2d, 0xec, 0xc2, 0x1c, 0xa2, 0x39, 0x08, 0x36, 0x18, 0x66, 0x34, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xf9, 0xda, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x5d, 0x3a, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x90, 0xd1, 0x1a, 0x7e, 0xe3, 0xf9, 0x70, 0x0b, 0x82, 0x0d, 0x86, 0x7d, 0xcd, 0xc1, 0x20, 0xad, 0x1b, 0x04, 0x1b, 0x0c, 0xfb, 0x9a, 0x83, 0x31, 0x64, 0x77, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x8f, 0x6f, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xb5, 0xa5, 0xe1, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x85, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0x89, 0xa9, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xc3, 0x96, 0x6e, 0xc3, 0xb8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x83, 0x81, 0x56, 0x37, 0x88, 0x16, 0x76, 0x83, 0x11, 0x6d, 0x37, 0x08, 0x36, 0x18, 0x66, 0x34, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xf9, 0xda, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x86, 0xe2, 0xdd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x31, 0x7f, 0x37, 0xfc, 0xc6, 0xf3, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0xc6, 0x12, 0xde, 0xc2, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x0c, 0x4a, 0xbc, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xdb, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x78, 0x63, 0x6f, 0xee, 0x21, 0xb5, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xde, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x31, 0x6c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xc3, 0x7a, 0xec, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x31, 0x4e, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xb0, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xf4, 0x10, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x8c, 0xd3, 0x1c, 0xd2, 0x70, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xd8, 0x60, 0x60, 0x32, 0x0c, 0x82, 0x0d, 0x9b, 0x21, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x81, 0xc3, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xa0, 0xad, 0xd3, 0x61, 0x85, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xe8, 0x20, 0x1c, 0x8c, 0x90, 0xb0, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xbc, 0x31, 0x36, 0xfd, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x6c, 0x48, 0x4c, 0x0d, 0x82, 0xc5, 0x61, 0x17, 0x76, 0x43, 0x22, 0x60, 0x43, 0x0c, 0x0f, 0x86, 0x36, 0xdd, 0x86, 0x71, 0x19, 0x24, 0x43, 0x06, 0xd1, 0x06, 0x03, 0xad, 0x6e, 0x10, 0x2d, 0xec, 0x06, 0x23, 0xda, 0x6e, 0x10, 0x6c, 0x30, 0xcc, 0x68, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf2, 0xb5, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x0c, 0xc5, 0xbb, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xfe, 0x6e, 0xf8, 0x8d, 0xe7, 0xc3, 0x6e, 0x30, 0xf8, 0xf7, 0x36, 0xc4, 0xf0, 0x60, 0xe4, 0xf0, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xdb, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x78, 0x64, 0x69, 0xf3, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0x43, 0x0c, 0x07, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0x05, 0xc1, 0x86, 0x4c, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x11, 0x15, 0x38, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x1c, 0xf6, 0x0a, 0x8f, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0x38, 0xfc, 0x82, 0x68, 0x41, 0x3c, 0xec, 0xc2, 0x6d, 0x38, 0xda, 0x07, 0xc1, 0x06, 0x01, 0xca, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x2c, 0xfc, 0xc6, 0xf3, 0x0d, 0xa9, 0x83, 0xc3, 0xd1, 0x7e, 0x30, 0xde, 0x74, 0x8e, 0x43, 0x1b, 0x0c, 0x37, 0x85, 0x43, 0xaa, 0xe6, 0x78, 0x3c, 0xec, 0x86, 0xf5, 0xbd, 0x0d, 0xa9, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x57, 0x0e, 0x02, 0xde, 0xff, 0xd0, 0xa8, 0xe5, 0x78, 0x7c, 0x7c, 0x3b, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x0f, 0x2d, 0xac, 0x3d, 0xa4, 0x96, 0x8e, 0xc7, 0xc3, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x62, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x10, 0x2c, 0x0e, 0xbb, 0x70, 0x1b, 0x8e, 0xf6, 0x41, 0xb0, 0x20, 0x19, 0x28, 0x4e, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0xc1, 0x28, 0x49, 0x3c, 0x08, 0x4c, 0xec, 0xe3, 0xd0, 0x61, 0xfd, 0xf0, 0xf8, 0x76, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xde, 0x18, 0x9d, 0x7e, 0x48, 0x2d, 0x1d, 0x8f, 0x57, 0x41, 0xb0, 0xf0, 0x0b, 0x82, 0x0d, 0xc2, 0x70, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x18, 0xae, 0xe3, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0xda, 0xce, 0x0c, 0xbf, 0xf1, 0xfc, 0x20, 0xdc, 0x96, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xdb, 0xe2, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x83, 0xba, 0x43, 0x72, 0xe9, 0x90, 0x86, 0x1b, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0x5e, 0xdf, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x81, 0xa1, 0x1a, 0x44, 0x0b, 0x7b, 0x30, 0xde, 0x74, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xf1, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xd6, 0xfa, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0x4e, 0x0d, 0xa2, 0x0d, 0x46, 0x04, 0xd5, 0x71, 0xe8, 0xb0, 0xc7, 0x7b, 0x1c, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x06, 0xa3, 0xf1, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0x8c, 0x92, 0xc8, 0x41, 0x32, 0xb8, 0x77, 0x30, 0x06, 0x23, 0x0f, 0x7b, 0xbc, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x87, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0x5e, 0xdf, 0x41, 0xc0, 0xfb, 0x0f, 0x92, 0x81, 0xf0, 0x0d, 0xa2, 0x85, 0x9d, 0x20, 0xfc, 0xc7, 0xa1, 0x43, 0xf6, 0x62, 0x10, 0x2c, 0x08, 0x36, 0x18, 0x42, 0x93, 0x83, 0x64, 0x60, 0xa8, 0x0e, 0xc6, 0xe8, 0xe4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xb2, 0xe3, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xfc, 0x06, 0x43, 0x80, 0x6a, 0x10, 0x2c, 0x0e, 0xbb, 0x41, 0xf0, 0x31, 0x6f, 0x10, 0x98, 0xd8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x50, 0x3f, 0x08, 0x16, 0x24, 0xc3, 0x1c, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x8c, 0x09, 0xab, 0x83, 0x91, 0x65, 0x75, 0x1c, 0x3a, 0x08, 0xbd, 0xf5, 0xe3, 0xdb, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xec, 0xf5, 0x1d, 0xb2, 0x15, 0x83, 0x64, 0xa0, 0xf8, 0x1d, 0x8c, 0x1a, 0xa3, 0x43, 0xa3, 0x96, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x07, 0xe1, 0xe6, 0x7e, 0x3c, 0x1e, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x58, 0xeb, 0x3b, 0x64, 0x2b, 0x06, 0xc9, 0xc0, 0xf4, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xc1, 0x68, 0x7c, 0x3c, 0x0e, 0x1d, 0x3a, 0x68, 0x1c, 0x8f, 0x8f, 0xc7, 0x83, 0x60, 0xe1, 0x17, 0x04, 0x1b, 0x84, 0xe1, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xf1, 0xe4, 0x38, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xc0, 0x3a, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x05, 0xc9, 0xc0, 0xfd, 0x75, 0x3c, 0x3f, 0xbe, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xb7, 0xc5, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0x30, 0x12, 0x70, 0x0e, 0x69, 0xb8, 0x41, 0xb0, 0xc1, 0x98, 0x7f, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x88, 0xff, 0xf0, 0x1b, 0xcf, 0x37, 0xe4, 0x6b, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x06, 0x03, 0xd8, 0x72, 0xf8, 0x85, 0x5f, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x87, 0xbd, 0xc2, 0x0d, 0xa9, 0x83, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x98, 0x1f, 0x1a, 0x7e, 0x0d, 0xa2, 0x85, 0x1d, 0x04, 0x8b, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x4e, 0x10, 0xf9, 0x0d, 0x02, 0x99, 0x7b, 0xe1, 0x37, 0x24, 0x3b, 0x36, 0x0e, 0x1d, 0x52, 0x07, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x20, 0xf2, 0x13, 0xcc, 0xfc, 0xf1, 0xf8, 0xf8, 0x76, 0x3c, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x4f, 0x2f, 0x0d, 0x3e, 0xa4, 0x96, 0x8e, 0xc7, 0xc7, 0xb7, 0xe3, 0xf1, 0x2a, 0x08, 0x36, 0x74, 0xc1, 0x59, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0x36, 0x7d, 0x87, 0xe4, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xd6, 0x6e, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x70, 0x7f, 0x1d, 0x56, 0x68, 0x0f, 0x1d, 0x34, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0xb6, 0x33, 0x8b, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0x32, 0x70, 0x7c, 0x1d, 0x56, 0x68, 0x0f, 0x8d, 0x5a, 0x0e, 0x8d, 0x5a, 0x86, 0x5d, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x10, 0xc3, 0x41, 0xb0, 0x20, 0x19, 0x58, 0xeb, 0x3b, 0x08, 0x78, 0xff, 0x41, 0x32, 0x30, 0x7c, 0x87, 0xf6, 0x2d, 0xc7, 0xe3, 0x41, 0x32, 0xe4, 0x60, 0x0c, 0x46, 0x6e, 0x1c, 0x3a, 0x9c, 0x62, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x17, 0x9c, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0xc1, 0x00, 0x0a, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x86, 0xeb, 0xb0, 0x42, 0x7b, 0x48, 0xb4, 0x1e, 0x87, 0x0e, 0x8d, 0x5a, 0x86, 0x5d, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x10, 0xc3, 0x41, 0xb0, 0xc1, 0x10, 0x9a, 0x1c, 0x24, 0x03, 0x49, 0xbf, 0x43, 0xfb, 0x96, 0xe3, 0xf1, 0xc1, 0xc0, 0x16, 0x3d, 0x18, 0x0b, 0xa3, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0xdb, 0x99, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x00, 0x08, 0x1d, 0x76, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x64, 0x98, 0x83, 0x80, 0xf7, 0x1f, 0x24, 0x03, 0xe3, 0x77, 0x68, 0xdf, 0x72, 0x3c, 0x3e, 0x18, 0xd8, 0xa2, 0x07, 0x63, 0x61, 0xf4, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x3c, 0x1e, 0x04, 0x1b, 0xba, 0xe0, 0x2c, 0x0e, 0x82, 0x0d, 0xc6, 0xda, 0xe7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xd6, 0x6e, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xb0, 0xd2, 0x77, 0x48, 0x2e, 0x1d, 0x3a, 0x68, 0x1c, 0x87, 0x8e, 0xc7, 0x2b, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x31, 0x1c, 0x7e, 0x41, 0xb0, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x86, 0x00, 0xe4, 0x20, 0x19, 0x28, 0x7e, 0x87, 0xf6, 0x2d, 0x83, 0x64, 0xc8, 0xc1, 0x20, 0x83, 0x1c, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0xf0, 0x0b, 0xa2, 0x05, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0x30, 0x84, 0x26, 0x07, 0xc9, 0xc0, 0x50, 0x0d, 0xa2, 0x85, 0x3d, 0xec, 0x15, 0x1e, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xde, 0xc9, 0x83, 0xc0, 0xc4, 0x3e, 0x0e, 0x1d, 0x8f, 0x87, 0x5d, 0xd8, 0x85, 0x1e, 0x8c, 0x37, 0x9d, 0xc3, 0xfa, 0xe6, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x10, 0x54, 0x7d, 0x07, 0x01, 0xef, 0x3f, 0x48, 0x86, 0x1c, 0x8c, 0xd1, 0xc9, 0x05, 0xc1, 0x82, 0x64, 0x50, 0x72, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x70, 0xb4, 0x1f, 0xa2, 0x79, 0x1c, 0x5a, 0x10, 0x6c, 0x30, 0x6e, 0x7b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0xc3, 0xb8, 0x1c, 0x87, 0x0e, 0x7b, 0x85, 0xc3, 0x2f, 0x88, 0x16, 0xcc, 0x07, 0xc1, 0x82, 0x64, 0x50, 0x72, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1a, 0xcf, 0x1f, 0x04, 0x26, 0xf6, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xfa, 0x83, 0x20, 0xc5, 0x3f, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0x7e, 0x82, 0xe9, 0x1f, 0x44, 0x0b, 0xe2, 0x41, 0xb0, 0xc1, 0x88, 0x6d, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xde, 0x74, 0x0e, 0xd1, 0x3c, 0x0e, 0x0d, 0xa2, 0x85, 0x9d, 0x90, 0x1d, 0x92, 0x4b, 0x0b, 0x82, 0x05, 0xc9, 0xa0, 0x64, 0x82, 0xfa, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x78, 0x7e, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x21, 0x1e, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x3b, 0x44, 0xf3, 0x38, 0x74, 0x1c, 0x5a, 0x10, 0x2c, 0x48, 0x06, 0x82, 0x77, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x8c, 0x0d, 0xd7, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x5d, 0x3a, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x1e, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x61, 0x3a, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0x86, 0x1e, 0x42, 0x87, 0x46, 0x82, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x60, 0xb0, 0xc6, 0x0e, 0xbb, 0xb0, 0x1b, 0x0c, 0x5f, 0xd6, 0x85, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0x82, 0x72, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xda, 0x3a, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x72, 0x30, 0x78, 0x27, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x8c, 0x4e, 0xdb, 0x83, 0xa1, 0xe9, 0x7a, 0x1c, 0x3a, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0x06, 0x23, 0xa1, 0x75, 0x10, 0x2c, 0x08, 0x36, 0x18, 0x27, 0xad, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xc3, 0xb8, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0x8c, 0xd8, 0xd6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xc6, 0xf3, 0x87, 0x68, 0x1e, 0x87, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xe0, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x71, 0xdb, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x48, 0xd1, 0x1e, 0xc6, 0xe5, 0x38, 0x74, 0x1c, 0x3a, 0xec, 0x15, 0x1e, 0xdf, 0x0e, 0xa9, 0x83, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xd4, 0xc2, 0xda, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0x82, 0x60, 0x71, 0x70, 0xb7, 0xc5, 0x41, 0xb0, 0xb0, 0x0b, 0xb7, 0x18, 0x6e, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x8c, 0xdb, 0xdd, 0x0d, 0xc6, 0xed, 0xee, 0xe1, 0x14, 0x5b, 0xd8, 0x0d, 0x82, 0xc4, 0x7b, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x47, 0xfb, 0xa1, 0x91, 0xe0, 0xa1, 0xcd, 0xe3, 0xc2, 0x2e, 0xec, 0x42, 0x0f, 0x9d, 0xd4, 0x0e, 0xeb, 0x9b, 0x1b, 0x3a, 0xa9, 0x1d, 0x4e, 0xb1, 0x61, 0x17, 0x76, 0xa1, 0x13, 0x7a, 0x0f, 0xeb, 0x9b, 0x1b, 0x8c, 0xcc, 0xde, 0xc3, 0x29, 0x36, 0xec, 0xc2, 0x2d, 0x86, 0xa7, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xa3, 0xc1, 0x77, 0x83, 0xd1, 0xe0, 0x7b, 0x38, 0xc5, 0x86, 0xdd, 0xb0, 0x6b, 0xb0, 0x21, 0x86, 0xc3, 0x6e, 0x78, 0x04, 0xe0, 0xd0, 0xe6, 0x71, 0x61, 0x17, 0x6e, 0x43, 0x34, 0xc7, 0x70, 0x77, 0x83, 0x21, 0xf5, 0x7b, 0x38, 0xc5, 0x86, 0xdd, 0xb0, 0x6b, 0x70, 0x68, 0x1c, 0x75, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0xc3, 0xb9, 0x3e, 0x08, 0x36, 0x18, 0x9b, 0x21, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x88, 0x0a, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0x61, 0x46, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x61, 0x46, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x38, 0xa4, 0x0e, 0x8e, 0x43, 0x87, 0x54, 0xcd, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x06, 0xc2, 0x74, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x92, 0x4e, 0x87, 0x6c, 0xc5, 0xc1, 0xc0, 0x16, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x04, 0xef, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xb0, 0xaf, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x8c, 0xbf, 0x9b, 0x83, 0x81, 0x2d, 0x7a, 0x48, 0xd5, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x8a, 0x77, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x46, 0x27, 0xf1, 0x41, 0x60, 0x62, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xda, 0xc2, 0xe8, 0x43, 0x6a, 0xe9, 0x78, 0x3c, 0x08, 0x36, 0x18, 0x70, 0xbb, 0x8b, 0x83, 0x60, 0x61, 0x17, 0x6e, 0x31, 0x9c, 0x3c, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x18, 0xf8, 0xc6, 0x1b, 0x0c, 0x7c, 0xe3, 0xc3, 0x29, 0x76, 0x30, 0xb8, 0x78, 0x0f, 0x46, 0x7d, 0xef, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0x80, 0xdb, 0x5d, 0x1c, 0x04, 0x0b, 0xbb, 0xc1, 0x60, 0x37, 0x5e, 0x83, 0x21, 0x72, 0xbc, 0xc1, 0xf0, 0xe2, 0xdd, 0x60, 0xe4, 0xf3, 0xae, 0xb0, 0x0b, 0xbb, 0xd0, 0x09, 0x82, 0x7b, 0x58, 0xdf, 0xdc, 0x60, 0xc0, 0x23, 0x1f, 0x4e, 0xb1, 0x61, 0x17, 0x76, 0xa1, 0x13, 0x44, 0xf7, 0xb0, 0xbe, 0xb9, 0xc1, 0x88, 0x4b, 0x3e, 0x9c, 0x62, 0x0b, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0x68, 0xc6, 0xb3, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x86, 0xa3, 0xfd, 0xd0, 0x8c, 0xe7, 0xd0, 0xe6, 0x71, 0xd8, 0x85, 0x5d, 0xe8, 0x04, 0xf1, 0x3d, 0xac, 0x6f, 0x6e, 0x30, 0x4e, 0x95, 0x0f, 0xa7, 0xd8, 0xc1, 0xa8, 0xef, 0x3d, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x31, 0x1c, 0x7e, 0x41, 0xb0, 0x38, 0xec, 0xc2, 0x6d, 0x88, 0xe1, 0x20, 0xd8, 0x20, 0x40, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x85, 0xdf, 0x78, 0xbe, 0x21, 0x55, 0x73, 0x38, 0xda, 0x0f, 0xc6, 0x9b, 0xce, 0x71, 0x68, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xaf, 0xbe, 0x83, 0x20, 0xe7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0xe1, 0xa6, 0x70, 0x30, 0xde, 0x74, 0x8e, 0x43, 0x0b, 0x73, 0x10, 0x52, 0xe0, 0x1b, 0x84, 0x00, 0xf8, 0x20, 0xd8, 0x60, 0x78, 0xae, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x4c, 0xec, 0xc3, 0xb8, 0x1c, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0xc0, 0xf5, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x3c, 0x7f, 0xd8, 0x2b, 0x3c, 0x0e, 0x0d, 0xbb, 0x70, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x24, 0x03, 0xc5, 0xe9, 0x20, 0xe0, 0xfd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x85, 0xdf, 0x78, 0xbe, 0x30, 0x87, 0xbd, 0xc2, 0xc3, 0xd1, 0x7e, 0x30, 0x78, 0x27, 0x8f, 0x43, 0x0b, 0x82, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x20, 0x3e, 0x0e, 0x1d, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xc8, 0x20, 0x5a, 0x10, 0x0f, 0x82, 0x0d, 0x46, 0x6c, 0xeb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x34, 0x0f, 0xa9, 0x9a, 0xe3, 0xd0, 0xc1, 0x98, 0x8c, 0x1d, 0x04, 0x6b, 0x68, 0x24, 0x78, 0x10, 0x64, 0xf1, 0x0b, 0x82, 0x05, 0xc9, 0xa0, 0x64, 0x82, 0xfb, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0xf1, 0xfc, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x43, 0x4e, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0xfe, 0x87, 0xac, 0xdd, 0x71, 0xe8, 0x38, 0xb4, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x7b, 0x7d, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x0c, 0xd5, 0xa1, 0x31, 0xd8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x09, 0xc6, 0xff, 0x90, 0x3a, 0x38, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x40, 0x78, 0xf5, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0xe0, 0x60, 0xf0, 0x4e, 0x1e, 0x87, 0x36, 0x18, 0xa4, 0xb8, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0x79, 0x77, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0x5e, 0xdf, 0xc1, 0x78, 0xd7, 0x39, 0x18, 0x51, 0x97, 0x07, 0x23, 0x0a, 0xf7, 0x38, 0x74, 0xd8, 0x2b, 0x3c, 0xbe, 0x1d, 0x52, 0x07, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0x8d, 0xd5, 0x95, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x10, 0xac, 0x21, 0x86, 0x83, 0x60, 0x83, 0x71, 0x16, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x1c, 0xf2, 0xb5, 0xc7, 0xa1, 0x41, 0xb0, 0x38, 0xec, 0x82, 0x60, 0x41, 0x32, 0xf8, 0x72, 0x10, 0xe4, 0xfc, 0x87, 0x44, 0xeb, 0x86, 0x53, 0x6c, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x41, 0xb0, 0xc1, 0x78, 0x61, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x16, 0x7e, 0xe3, 0xf9, 0x82, 0x60, 0x83, 0x61, 0x46, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xec, 0x38, 0x64, 0xed, 0x8e, 0x43, 0x87, 0xa3, 0xfd, 0x90, 0x98, 0x39, 0x0e, 0x2d, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe1, 0xc1, 0x88, 0xb6, 0x3b, 0x1e, 0x1f, 0xa2, 0x79, 0x7c, 0x1b, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0xc1, 0x60, 0x45, 0x19, 0x04, 0x0b, 0x82, 0x0d, 0x59, 0x93, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xf8, 0x0f, 0xbf, 0xf1, 0xfc, 0x60, 0x94, 0x9f, 0x1c, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x61, 0x46, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd1, 0x33, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xfc, 0xdd, 0x1c, 0x1a, 0xb5, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x2f, 0x8c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xc2, 0x6f, 0x3c, 0xdf, 0x38, 0x74, 0x30, 0xee, 0xba, 0x0f, 0x89, 0x99, 0xe3, 0xd0, 0x71, 0x68, 0x41, 0xb0, 0x41, 0xe0, 0xfa, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x70, 0xfd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf6, 0x0a, 0x0f, 0x7b, 0x85, 0xc7, 0xa1, 0x43, 0xea, 0xe0, 0x38, 0x34, 0x08, 0x36, 0x08, 0x50, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xe1, 0x37, 0x9e, 0x2f, 0x08, 0x36, 0x08, 0x5c, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xc3, 0x4a, 0x71, 0x90, 0x0c, 0x39, 0x18, 0xeb, 0xab, 0xc7, 0xa1, 0xe3, 0xd0, 0x41, 0x88, 0xf8, 0x1f, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x93, 0xab, 0x13, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x08, 0xab, 0xe5, 0xc5, 0x85, 0x5f, 0x10, 0x6c, 0x10, 0xc2, 0xf6, 0x8b, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x82, 0x0b, 0x7b, 0xc3, 0xd1, 0x3e, 0xec, 0x06, 0xc1, 0x7f, 0xbf, 0x21, 0x86, 0xc3, 0x6e, 0x10, 0x8a, 0xd9, 0x1b, 0x62, 0x38, 0xec, 0x06, 0x81, 0x92, 0x7f, 0x48, 0xe7, 0x1e, 0xdf, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x0b, 0x73, 0xcb, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x8e, 0xf6, 0x41, 0xb0, 0x38, 0xec, 0xc2, 0x6d, 0x88, 0xe1, 0xc1, 0x78, 0xd3, 0xd9, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0xc3, 0x5e, 0xe1, 0x41, 0x90, 0xe2, 0xaf, 0x21, 0x86, 0x83, 0x60, 0x41, 0x32, 0xa8, 0x3b, 0x18, 0xef, 0x3a, 0x87, 0x8e, 0xf1, 0xc3, 0x2e, 0x08, 0x16, 0x24, 0x03, 0x61, 0x3b, 0x08, 0x78, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x81, 0x89, 0x3d, 0xc1, 0xf0, 0x1f, 0x87, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xfb, 0x07, 0x63, 0xec, 0x69, 0x10, 0x2d, 0xec, 0x20, 0xd8, 0x60, 0xe0, 0x96, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x86, 0xdf, 0x78, 0x3e, 0xc6, 0x1e, 0x87, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x70, 0xff, 0x60, 0x0c, 0x2c, 0x0c, 0xa2, 0x85, 0x1d, 0x04, 0x1b, 0x0c, 0xdc, 0xf2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0xc7, 0xf8, 0xe3, 0xd0, 0xf1, 0xf8, 0xf8, 0x76, 0x3c, 0x5e, 0xe1, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xb8, 0xb0, 0x37, 0x08, 0x5f, 0xec, 0x61, 0x17, 0x6e, 0x43, 0xaa, 0xe6, 0x90, 0xec, 0xd8, 0x20, 0x30, 0xb1, 0x87, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0xc2, 0x76, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0xe1, 0x55, 0x7e, 0x1c, 0x5a, 0x10, 0x6c, 0x10, 0x8a, 0xd9, 0xc3, 0x2e, 0xf4, 0x38, 0xb4, 0xb0, 0x0b, 0x82, 0x05, 0xc9, 0xe0, 0xda, 0x41, 0xc0, 0xfb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xad, 0xe6, 0x87, 0x68, 0x1e, 0x87, 0x16, 0x44, 0x0b, 0x7b, 0x1c, 0x3a, 0x18, 0x6f, 0x3a, 0x83, 0x68, 0xe1, 0x07, 0xd1, 0x06, 0x43, 0x34, 0xf6, 0x60, 0xbc, 0xe9, 0x1c, 0x87, 0x0e, 0xa7, 0xd8, 0x20, 0xd8, 0x20, 0x50, 0xf2, 0x87, 0xdd, 0x60, 0x74, 0xac, 0x2f, 0xec, 0x06, 0x63, 0x68, 0x7d, 0x41, 0xb4, 0xf0, 0xc7, 0xa1, 0x83, 0xf1, 0xa6, 0x33, 0x88, 0x16, 0x76, 0x10, 0x2d, 0xfc, 0x41, 0x90, 0xc5, 0x1f, 0x8c, 0x37, 0x9d, 0xe3, 0xd0, 0xe1, 0x14, 0x3b, 0xbe, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x07, 0x57, 0x47, 0x1f, 0x52, 0x4b, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x52, 0x07, 0x8b, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x82, 0x8f, 0x79, 0x43, 0x0c, 0x87, 0xdd, 0x20, 0xb8, 0xb0, 0x37, 0xc4, 0x70, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0x70, 0xed, 0x20, 0xc8, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x04, 0x29, 0xfe, 0x21, 0xfe, 0xc7, 0xa1, 0x85, 0x5d, 0xb8, 0x0d, 0x59, 0xbb, 0x43, 0xb2, 0x63, 0x41, 0xb4, 0xd0, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x41, 0x50, 0x67, 0x1f, 0x04, 0x09, 0xfa, 0x20, 0x19, 0x32, 0x88, 0x36, 0x08, 0xb9, 0xfc, 0x83, 0x70, 0x6f, 0x3e, 0x08, 0x4c, 0xec, 0x61, 0x17, 0x04, 0x1b, 0x8c, 0x26, 0xf5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xf8, 0x1f, 0x04, 0x29, 0xfe, 0x71, 0x68, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xd7, 0x20, 0x5a, 0xd8, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x10, 0xd4, 0xd9, 0x83, 0x68, 0x41, 0xf7, 0x21, 0x86, 0xc7, 0xe3, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0x54, 0xd1, 0x8f, 0x43, 0x83, 0x60, 0x41, 0x32, 0x10, 0xae, 0x41, 0xb4, 0xb0, 0x83, 0x64, 0xc8, 0x20, 0xda, 0x20, 0xe4, 0xf2, 0x07, 0xd1, 0x82, 0xea, 0x43, 0x0c, 0x8f, 0xc7, 0x87, 0x15, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x41, 0x08, 0x9f, 0x1f, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0xfe, 0x90, 0xaa, 0x19, 0x44, 0x0b, 0xe2, 0x83, 0xc0, 0xc4, 0x3e, 0x1e, 0x1f, 0xdf, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x4b, 0x73, 0xa3, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xf8, 0x05, 0xc1, 0xe2, 0xb0, 0x1b, 0x04, 0x17, 0xf6, 0x06, 0xe1, 0x8b, 0x3d, 0xec, 0x06, 0x83, 0x3b, 0x7d, 0x83, 0xc0, 0xc4, 0x1e, 0x76, 0x83, 0xe1, 0xa3, 0xbe, 0x20, 0xd8, 0x20, 0x14, 0xb3, 0x87, 0xdd, 0x60, 0x74, 0xac, 0x6f, 0x30, 0x82, 0xd8, 0x0f, 0xa7, 0xd8, 0x20, 0xd8, 0x20, 0x50, 0xf2, 0x87, 0xdd, 0x60, 0x74, 0xac, 0x6f, 0x30, 0x1a, 0xdb, 0x0f, 0xa7, 0xd8, 0xf1, 0xed, 0x78, 0x7e, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x9e, 0x58, 0x9a, 0x79, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x75, 0xb0, 0x38, 0xec, 0xc2, 0x6d, 0xd8, 0x2b, 0x3c, 0xa4, 0x0e, 0x36, 0xec, 0x15, 0x0e, 0x82, 0xc5, 0x61, 0x37, 0x08, 0x3e, 0xe6, 0x0d, 0x02, 0x13, 0x7b, 0xd8, 0x0d, 0x82, 0x0b, 0x7b, 0x43, 0xaa, 0x66, 0xd8, 0x0d, 0x86, 0x11, 0xfc, 0x82, 0x68, 0x83, 0xf1, 0x08, 0x7f, 0x48, 0xd5, 0x0c, 0xbb, 0xc1, 0x10, 0x7c, 0x5f, 0xd8, 0x0d, 0x06, 0x5f, 0xfc, 0x82, 0x64, 0xc8, 0x20, 0x5a, 0x20, 0xf4, 0x07, 0x03, 0x4c, 0xfe, 0x20, 0xdc, 0x9b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x40, 0xec, 0x0f, 0x46, 0xe6, 0xfc, 0x41, 0x90, 0xa0, 0x0f, 0xbb, 0x20, 0xd8, 0x60, 0x34, 0xa9, 0x1f, 0x0c, 0xe5, 0xf7, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x41, 0xc8, 0xe5, 0x0f, 0xa2, 0x05, 0xd5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x20, 0xf6, 0x87, 0x18, 0x1e, 0x04, 0x09, 0xfa, 0xf1, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x04, 0x75, 0xf6, 0x20, 0x5a, 0xd0, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0x42, 0x7f, 0x88, 0xe1, 0x41, 0xb8, 0x37, 0x1f, 0x8f, 0x8f, 0x6f, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xd5, 0xb9, 0xa5, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0xf8, 0x05, 0xc1, 0x86, 0xd4, 0xc1, 0xe2, 0x20, 0x58, 0x1c, 0x76, 0x83, 0xe0, 0x63, 0xde, 0x20, 0x30, 0xb1, 0x07, 0xc1, 0x82, 0x60, 0x41, 0x32, 0xb8, 0x75, 0x58, 0xa1, 0x3d, 0x6c, 0xd4, 0x0e, 0xb2, 0x35, 0xb4, 0x5f, 0x3f, 0x18, 0x1d, 0xeb, 0x83, 0x60, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xa8, 0x3f, 0x08, 0x29, 0xf0, 0x41, 0xb4, 0x20, 0x3e, 0xb4, 0x00, 0x3a, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0xfe, 0x30, 0x2e, 0x83, 0x68, 0x41, 0x7c, 0x10, 0x3c, 0xdc, 0x87, 0xe4, 0xd2, 0x20, 0x58, 0x1c, 0x76, 0x83, 0xe0, 0x63, 0xde, 0x90, 0x3a, 0x18, 0x76, 0xc3, 0xfa, 0xde, 0x86, 0x54, 0xcd, 0xb0, 0x0b, 0x82, 0x05, 0xc9, 0xe0, 0xda, 0xc1, 0xf0, 0x8f, 0x3d, 0x18, 0x36, 0xd3, 0x0b, 0xa2, 0x85, 0x3f, 0x08, 0xe1, 0xe6, 0x43, 0xaa, 0x66, 0x10, 0x2d, 0xec, 0x20, 0x19, 0x72, 0x10, 0x12, 0xdf, 0x87, 0xd4, 0xc1, 0xf1, 0xed, 0xf8, 0x76, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x1e, 0x59, 0x9a, 0x79, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x7e, 0x41, 0xb0, 0x41, 0x08, 0xdb, 0x2f, 0x0e, 0x82, 0xc5, 0x61, 0x37, 0x08, 0x2e, 0xec, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0xe0, 0xbf, 0x5f, 0xd8, 0x0d, 0x42, 0x31, 0x7b, 0x83, 0x51, 0x3b, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xbc, 0x30, 0x36, 0xf6, 0x90, 0x5a, 0x3a, 0x1e, 0xaf, 0xf0, 0x0b, 0x82, 0xc5, 0x61, 0x37, 0x08, 0x3e, 0xe6, 0x0d, 0x31, 0x1c, 0x66, 0x10, 0x6c, 0xc8, 0x9a, 0x1c, 0x04, 0xd8, 0xf9, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xee, 0xf2, 0xe8, 0xc3, 0xd5, 0x75, 0x3c, 0x3e, 0xbe, 0x2d, 0xfc, 0xc2, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xc6, 0x26, 0xe7, 0x86, 0xd4, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x36, 0x18, 0x0d, 0x9d, 0x83, 0x68, 0x61, 0x37, 0xc4, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe6, 0x87, 0x16, 0x40, 0xc7, 0xe3, 0xe3, 0xf1, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x78, 0x74, 0x61, 0xf0, 0x21, 0xb5, 0x74, 0x3c, 0x3e, 0xbe, 0x0d, 0xbf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xc1, 0xc7, 0xbc, 0x41, 0x60, 0x62, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x41, 0xfd, 0x20, 0x58, 0x90, 0x0c, 0x4e, 0x1d, 0x56, 0x68, 0x0f, 0x1b, 0xb5, 0x07, 0xa1, 0xb7, 0x7e, 0x7c, 0x3b, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xef, 0x2c, 0x6c, 0x3e, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0xbf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xc1, 0x85, 0xbd, 0x21, 0x86, 0xc3, 0x6e, 0x30, 0xb8, 0xd3, 0x17, 0x04, 0x8b, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x8c, 0xb1, 0xa7, 0x0d, 0xc6, 0xc0, 0xc2, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x07, 0x63, 0x60, 0x61, 0x83, 0x31, 0xf6, 0x34, 0xec, 0x82, 0x60, 0x83, 0x21, 0xb5, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0x82, 0xa3, 0x7f, 0x82, 0xb3, 0xff, 0x38, 0xb4, 0x20, 0x5a, 0xf8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x30, 0xfa, 0x13, 0xdc, 0xfa, 0xc7, 0xe3, 0x83, 0x31, 0xf6, 0x34, 0x88, 0x16, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xcc, 0xfe, 0x04, 0xe7, 0xfe, 0xf1, 0xf8, 0x60, 0x0c, 0x2c, 0x1c, 0xdf, 0x86, 0xdd, 0x60, 0xf8, 0xa8, 0x2f, 0x88, 0x16, 0xf6, 0x20, 0x14, 0xb3, 0x0f, 0x02, 0x13, 0x7b, 0x10, 0x2d, 0xfc, 0x41, 0xa0, 0xe4, 0x1f, 0x04, 0x26, 0xf6, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x3c, 0xb2, 0x32, 0xf6, 0x90, 0x5a, 0x3a, 0x1e, 0xaf, 0xf0, 0x0b, 0xbf, 0x20, 0x58, 0xe1, 0x17, 0x7e, 0x41, 0x32, 0x30, 0x54, 0x87, 0x15, 0xda, 0xe3, 0xdb, 0xf1, 0xed, 0xa0, 0xc0, 0x39, 0x58, 0x1c, 0x76, 0x83, 0xb1, 0xc9, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xec, 0x86, 0x3c, 0xd6, 0x86, 0x18, 0x0e, 0xbb, 0x20, 0x58, 0x90, 0x0c, 0x84, 0xed, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x76, 0x1c, 0x8c, 0x0b, 0xb3, 0xe3, 0xd0, 0xc2, 0x2e, 0xec, 0xc2, 0x6d, 0x88, 0xff, 0xc1, 0xd0, 0xec, 0x3a, 0xac, 0x6f, 0x1e, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x61, 0x17, 0x76, 0xc3, 0xae, 0xc1, 0x86, 0x18, 0x0e, 0xbb, 0x20, 0xd8, 0xa0, 0x78, 0x3e, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xe8, 0x18, 0x76, 0x48, 0x76, 0x1c, 0x87, 0x16, 0x76, 0x61, 0x17, 0x6e, 0x83, 0xa0, 0xf4, 0x3e, 0xc4, 0xff, 0xb0, 0xbe, 0x79, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0x85, 0x5d, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x43, 0x0b, 0xa0, 0x0d, 0x31, 0x1c, 0x76, 0x41, 0xb0, 0x41, 0xb0, 0xbc, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x24, 0x3b, 0x26, 0x18, 0xfa, 0xe3, 0xd0, 0xc2, 0x2e, 0xec, 0xc2, 0x1d, 0x04, 0x3f, 0xf4, 0x61, 0x7d, 0x73, 0x61, 0x17, 0x24, 0x43, 0x06, 0xd1, 0x06, 0x65, 0xd8, 0xc0, 0x20, 0x5a, 0x10, 0x1e, 0x52, 0x02, 0xc7, 0xe3, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x85, 0x5d, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x43, 0xc3, 0xaf, 0x0d, 0x31, 0x1c, 0x76, 0x41, 0xb0, 0x41, 0xb0, 0xbc, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x24, 0x3b, 0x26, 0x18, 0xfb, 0xe3, 0xd0, 0xc2, 0x2e, 0xec, 0xc2, 0x1d, 0x04, 0xbe, 0xf4, 0x61, 0x7d, 0x73, 0x61, 0x17, 0x24, 0x43, 0x06, 0xd1, 0x06, 0xa3, 0xa1, 0x73, 0x10, 0x2d, 0x48, 0x0f, 0x29, 0x81, 0xe3, 0xf1, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x2f, 0x0c, 0x8e, 0x3e, 0xa4, 0x96, 0x8e, 0xc7, 0xc7, 0xb7, 0xe1, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xfc, 0x82, 0x68, 0x61, 0x87, 0xdd, 0xd0, 0x71, 0x64, 0xc3, 0xb8, 0x1c, 0x4e, 0xb1, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x76, 0xe1, 0x36, 0xc4, 0xf0, 0x60, 0xf0, 0x4e, 0x6e, 0x38, 0xda, 0x87, 0x5d, 0xb8, 0x0d, 0xa9, 0x9a, 0x83, 0xd1, 0x6a, 0xbe, 0x21, 0x86, 0xc3, 0x2e, 0x08, 0x16, 0x24, 0x03, 0x61, 0x3b, 0x18, 0xef, 0x3a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x7b, 0x85, 0x13, 0x14, 0xff, 0xe3, 0xd0, 0x82, 0x64, 0xc8, 0x20, 0x5a, 0x20, 0xfc, 0x13, 0x94, 0xfe, 0xe3, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x08, 0xff, 0x04, 0xb5, 0xff, 0x78, 0x7c, 0x7c, 0x3b, 0x1e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x58, 0xe4, 0x3b, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x87, 0x16, 0x36, 0x1f, 0x52, 0x4b, 0xc7, 0xe3, 0x85, 0x5f, 0x10, 0x6c, 0x10, 0xc2, 0xf6, 0x8b, 0x83, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0xe2, 0xb0, 0x1b, 0x8c, 0x7c, 0xf2, 0x0d, 0xa9, 0x83, 0xe1, 0x17, 0x44, 0x0b, 0x3b, 0x08, 0x16, 0x04, 0x1b, 0x8c, 0x27, 0xd1, 0x41, 0x32, 0x38, 0x75, 0x68, 0xdf, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xb0, 0x57, 0x38, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x18, 0xad, 0xe6, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0xc2, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x83, 0x91, 0x6f, 0x7e, 0x30, 0x04, 0xa8, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0xda, 0x60, 0x78, 0xa0, 0x1f, 0x0c, 0x01, 0xaa, 0xe3, 0xdb, 0xf1, 0xf8, 0x60, 0xa8, 0x2d, 0x0d, 0xbf, 0x20, 0x58, 0xdc, 0x30, 0x2e, 0x07, 0x63, 0x0c, 0x6d, 0x71, 0x10, 0x2c, 0x0e, 0xbb, 0x41, 0x70, 0x61, 0x6f, 0x30, 0xf8, 0x63, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xf5, 0x20, 0x19, 0x32, 0x88, 0x16, 0xbc, 0x1e, 0x04, 0x1b, 0x52, 0x35, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x82, 0x14, 0x7f, 0x82, 0xa8, 0x1f, 0x87, 0x0e, 0xc2, 0x36, 0xfb, 0x20, 0xa8, 0xf2, 0x8f, 0x6f, 0xc7, 0xe3, 0x83, 0x41, 0xfc, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x9f, 0xe6, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x0b, 0xbf, 0x20, 0xd8, 0x20, 0x0c, 0x97, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x83, 0xf1, 0xe4, 0x78, 0x7c, 0x3b, 0x0e, 0x1d, 0xdf, 0x16, 0x17, 0x04, 0x1b, 0x52, 0x07, 0x8b, 0x83, 0x60, 0x71, 0xc3, 0x0a, 0xed, 0x06, 0x01, 0x70, 0xbf, 0x41, 0x00, 0xdc, 0xb7, 0x38, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xb8, 0xb0, 0x37, 0x18, 0xbc, 0x93, 0xc3, 0x6e, 0x50, 0x70, 0x31, 0x6c, 0x10, 0x98, 0xd8, 0xc3, 0x2e, 0xdc, 0x12, 0x04, 0x7e, 0x82, 0xc2, 0xbf, 0x1a, 0x14, 0x3b, 0x12, 0x83, 0x60, 0x43, 0xaa, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x04, 0x87, 0xff, 0x12, 0x5c, 0xfe, 0x13, 0x4c, 0xfe, 0x71, 0x68, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x50, 0xac, 0x34, 0x1c, 0x84, 0x6d, 0xf6, 0x20, 0x19, 0x32, 0x88, 0x36, 0x28, 0xb4, 0x1a, 0x0e, 0x82, 0x2a, 0x7f, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0x70, 0xed, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0x07, 0x25, 0x26, 0x18, 0xfc, 0xe3, 0xd0, 0xc2, 0x2e, 0x08, 0x36, 0x28, 0x84, 0x19, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x14, 0x61, 0x13, 0x07, 0xe5, 0xa0, 0xc4, 0x71, 0x68, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x50, 0xfa, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x41, 0xb1, 0xd2, 0x30, 0x88, 0x36, 0x18, 0x26, 0xfc, 0xc7, 0xe3, 0x83, 0xa0, 0xca, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0x02, 0xb5, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x14, 0x5a, 0x0d, 0x83, 0x68, 0x83, 0xa1, 0xcf, 0x7f, 0x3c, 0x3e, 0x08, 0xdb, 0xec, 0x61, 0x17, 0x04, 0x1b, 0x14, 0xc2, 0x0c, 0x07, 0x65, 0xce, 0xc4, 0x82, 0x64, 0xc8, 0x20, 0xda, 0xa0, 0xd0, 0x6a, 0x18, 0x44, 0x0b, 0x84, 0x7e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xd4, 0xfe, 0x43, 0x0c, 0x0f, 0xc2, 0x36, 0xfb, 0x78, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0x8a, 0x95, 0x86, 0x41, 0xb4, 0x40, 0xec, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x40, 0xe9, 0x3f, 0xc4, 0xf0, 0x20, 0xa8, 0xf2, 0x8f, 0xc7, 0xc7, 0xb7, 0xe3, 0xf1, 0xf1, 0x78, 0x85, 0x5f, 0x10, 0x6c, 0x10, 0xc2, 0xf6, 0x8b, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x82, 0x0b, 0x7b, 0xc3, 0xd1, 0x3e, 0xec, 0x82, 0x60, 0x43, 0xaa, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x50, 0x72, 0x4a, 0x1c, 0x87, 0x0e, 0x46, 0xd9, 0xf8, 0xf1, 0xed, 0x78, 0x7c, 0x30, 0x22, 0xc8, 0x57, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x70, 0xb4, 0x0f, 0x82, 0xc5, 0x61, 0x37, 0x18, 0xf9, 0xe4, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0xd8, 0x2b, 0x3c, 0x28, 0xc2, 0x26, 0x36, 0x18, 0x95, 0xe5, 0xc3, 0x2e, 0x08, 0x36, 0x18, 0x24, 0xe6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x02, 0x13, 0xfb, 0xa0, 0xd8, 0x91, 0x38, 0x0e, 0x1d, 0x0c, 0x69, 0xf3, 0xe3, 0xdb, 0xf1, 0x78, 0x85, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0xc5, 0x61, 0x37, 0x08, 0x2e, 0xec, 0x35, 0xe4, 0x65, 0x0f, 0x89, 0xa9, 0x61, 0x17, 0x6e, 0x43, 0xd6, 0xee, 0xa0, 0x84, 0x91, 0x58, 0xd8, 0x85, 0xdb, 0x90, 0xaf, 0x3d, 0x18, 0x8b, 0x9d, 0x1b, 0x04, 0x26, 0xf6, 0x20, 0x5a, 0xc8, 0x21, 0x2f, 0x7b, 0x10, 0x98, 0xd8, 0xc3, 0x2e, 0x08, 0x36, 0x18, 0x4d, 0xea, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xf1, 0x3f, 0x28, 0xc2, 0x26, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0x42, 0x31, 0x7b, 0xd8, 0x0d, 0x46, 0xc7, 0xfa, 0xc2, 0x2e, 0x08, 0x36, 0x18, 0x52, 0xeb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8a, 0x1d, 0x89, 0x83, 0xf1, 0xd3, 0x75, 0x1c, 0x3a, 0x18, 0xfa, 0xeb, 0x87, 0x53, 0x6c, 0x10, 0x6c, 0x10, 0x28, 0xf9, 0xc3, 0x6e, 0x30, 0x3a, 0xd6, 0x17, 0x76, 0x83, 0x52, 0x1b, 0xe3, 0x60, 0x18, 0xb5, 0x1f, 0x4e, 0xb1, 0xe3, 0xdb, 0xf1, 0xf8, 0x60, 0xe8, 0xb8, 0x0f, 0xbf, 0x20, 0xd8, 0x90, 0x3a, 0x58, 0x1c, 0x04, 0x8b, 0xc3, 0x6e, 0x10, 0x7c, 0xcc, 0x1b, 0x62, 0x38, 0xec, 0x06, 0xc1, 0x85, 0xbd, 0x21, 0x86, 0xc3, 0x2e, 0x08, 0x36, 0x18, 0x91, 0xef, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8a, 0xb0, 0x89, 0x83, 0x31, 0x61, 0x75, 0x1c, 0x5a, 0xd8, 0x85, 0x5b, 0x42, 0xf1, 0x41, 0x09, 0x23, 0xb1, 0xc1, 0x88, 0xce, 0x1f, 0x76, 0x41, 0xb0, 0xc1, 0x68, 0x52, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x26, 0xac, 0x0e, 0x8a, 0xb0, 0x89, 0xe3, 0xd0, 0x82, 0x60, 0x41, 0x32, 0x50, 0xae, 0x0e, 0xc6, 0x91, 0xfc, 0xc1, 0xb8, 0x97, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0x72, 0x75, 0x30, 0x00, 0xe7, 0x0f, 0x06, 0x0c, 0xfd, 0xb0, 0x0b, 0xb7, 0x41, 0x09, 0x23, 0x71, 0x50, 0x1c, 0x6a, 0x6c, 0x30, 0xa2, 0xf3, 0x87, 0x5d, 0x10, 0x6c, 0x30, 0x9a, 0xd4, 0x0f, 0x4a, 0x1e, 0x8d, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0x5c, 0x0d, 0xa2, 0x85, 0x3d, 0x18, 0x01, 0xfc, 0x87, 0x15, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0x02, 0x25, 0xff, 0x38, 0x34, 0x08, 0x16, 0x24, 0x03, 0xe5, 0x6a, 0x10, 0x2d, 0xec, 0xc1, 0xa8, 0xe6, 0x3f, 0xac, 0xd0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x10, 0x8a, 0xd9, 0xc7, 0xa1, 0xe3, 0xdb, 0xf1, 0xf8, 0x60, 0xe4, 0xd4, 0x2f, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0xe2, 0xb0, 0x1b, 0x04, 0x17, 0xf6, 0x86, 0xc4, 0xd4, 0xb0, 0x0b, 0xb7, 0x21, 0x55, 0x73, 0x50, 0xc2, 0x48, 0x6c, 0x48, 0xcc, 0x0c, 0xbb, 0x20, 0xd8, 0x60, 0x34, 0xa9, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xca, 0x6e, 0x8b, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0x50, 0xcc, 0x1e, 0x64, 0x1b, 0x0c, 0x75, 0xff, 0x0d, 0x42, 0x0a, 0x7c, 0x10, 0x2d, 0xec, 0x41, 0x08, 0x80, 0x1f, 0x8c, 0x37, 0x9d, 0x41, 0xb0, 0x41, 0xa0, 0xe4, 0x0f, 0xb2, 0x0d, 0x86, 0xba, 0xff, 0x82, 0x68, 0xe1, 0x0f, 0x42, 0x0a, 0xfc, 0x60, 0xbc, 0xe9, 0x1c, 0x84, 0x00, 0xf8, 0xf1, 0xed, 0x78, 0x7c, 0x30, 0xf8, 0xef, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x75, 0xb0, 0x38, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xf8, 0x98, 0x37, 0x08, 0x4c, 0xec, 0x61, 0x37, 0x08, 0x2e, 0xec, 0x0d, 0xa9, 0x9a, 0x61, 0x37, 0x28, 0x02, 0x35, 0x36, 0x18, 0xd1, 0xf9, 0xc3, 0x6e, 0x50, 0x9a, 0x68, 0x2c, 0xec, 0x06, 0x05, 0xad, 0xc6, 0xc1, 0x38, 0xd3, 0x1f, 0x76, 0x83, 0x62, 0x76, 0xe3, 0x60, 0x80, 0xee, 0x1f, 0xdf, 0x8e, 0xc7, 0x07, 0x03, 0xad, 0x7f, 0xf8, 0x05, 0xc1, 0x86, 0xd4, 0xc1, 0xe2, 0x20, 0x58, 0x1c, 0x76, 0x83, 0xe0, 0x63, 0xde, 0x20, 0x30, 0xb1, 0x07, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x30, 0x56, 0x87, 0x15, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc1, 0x98, 0xb0, 0x3a, 0x0e, 0x0d, 0xb2, 0x0d, 0x86, 0xba, 0xff, 0x20, 0xd8, 0x60, 0xc0, 0xfc, 0x0f, 0x82, 0x0d, 0x86, 0xf4, 0xff, 0x20, 0x58, 0x1c, 0x76, 0x83, 0xe0, 0x63, 0xde, 0x90, 0x3a, 0x18, 0x76, 0xc3, 0xfa, 0xde, 0x86, 0x54, 0xcd, 0xb0, 0x0b, 0x82, 0x0d, 0x8a, 0x44, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xc2, 0xea, 0xa0, 0x38, 0xd4, 0x38, 0x0e, 0x1d, 0x94, 0xb4, 0x00, 0xc7, 0xb7, 0xe3, 0xdb, 0xf1, 0xf8, 0xa0, 0x10, 0x09, 0xd8, 0xa0, 0xfc, 0x11, 0xd8, 0xa0, 0xb4, 0x16, 0x58, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xec, 0x86, 0x5d, 0x83, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x7c, 0x87, 0xe4, 0xd2, 0x21, 0x0d, 0x37, 0x08, 0x16, 0x24, 0x03, 0x43, 0x75, 0x48, 0x2e, 0x1d, 0x8c, 0xfa, 0x8c, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xef, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xa0, 0xf8, 0x1d, 0x92, 0x4b, 0x87, 0x46, 0x2d, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0xe2, 0xb0, 0x1b, 0x8c, 0x4d, 0xce, 0x0d, 0xa9, 0x83, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x30, 0x1a, 0x3a, 0x07, 0xd1, 0xc2, 0x6e, 0x30, 0xb2, 0xac, 0x0e, 0x8a, 0xa7, 0x81, 0xe3, 0xf1, 0xf1, 0x6d, 0x10, 0x6c, 0x30, 0xca, 0xca, 0x16, 0x07, 0xc1, 0xe2, 0xb0, 0x1b, 0x04, 0x17, 0xf6, 0x1a, 0xb2, 0x76, 0x87, 0x18, 0x0e, 0x82, 0x05, 0xc1, 0x86, 0x7c, 0xed, 0xc1, 0x50, 0x7e, 0x1f, 0x7e, 0x41, 0xb4, 0x40, 0xf0, 0x0f, 0x42, 0x00, 0xfc, 0x78, 0x3c, 0x08, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xfa, 0x83, 0x31, 0xf6, 0x34, 0x88, 0x16, 0x8c, 0x0f, 0x42, 0x0a, 0xfc, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xfa, 0x83, 0x72, 0xac, 0x61, 0x10, 0x6d, 0x50, 0x58, 0x90, 0x1c, 0x92, 0x4b, 0x1b, 0x84, 0x14, 0xf8, 0x20, 0x5a, 0xe8, 0x86, 0x71, 0x39, 0x08, 0x01, 0xf0, 0x83, 0x81, 0x48, 0x7d, 0x7c, 0x3b, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0xf1, 0x60, 0xcc, 0xa0, 0x2d, 0x0e, 0x82, 0xc5, 0x61, 0x37, 0x08, 0x2e, 0xec, 0x0d, 0x31, 0x1c, 0x44, 0x8b, 0x0b, 0xa2, 0x85, 0x0e, 0x82, 0x0d, 0xa9, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x45, 0xd8, 0xc4, 0x41, 0xc9, 0x29, 0x71, 0x1c, 0x3a, 0x24, 0x3b, 0x0e, 0x82, 0x1d, 0xff, 0x20, 0x30, 0xb1, 0x8f, 0x6f, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xd5, 0xc9, 0xb9, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x1b, 0x84, 0xb0, 0xfd, 0xe2, 0x20, 0x58, 0x1c, 0x76, 0x83, 0xe0, 0xc2, 0xde, 0x10, 0xc3, 0x61, 0x37, 0x28, 0x29, 0x2c, 0x0e, 0x0a, 0xdd, 0x80, 0xe3, 0xdb, 0xf1, 0xf8, 0xa0, 0x14, 0x10, 0x58, 0xe1, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x30, 0x36, 0x39, 0x37, 0xa4, 0x0e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xc1, 0x68, 0xe8, 0x1c, 0x44, 0x0b, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0xca, 0xb0, 0x81, 0x41, 0xb4, 0xb0, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x38, 0xc2, 0x3c, 0x28, 0x18, 0x1d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0x25, 0x8c, 0xc4, 0x71, 0xe8, 0x78, 0x7c, 0x3c, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x6f, 0xad, 0x2c, 0x3f, 0xa4, 0x96, 0x8e, 0xc7, 0xc7, 0xb7, 0x85, 0x5f, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xf0, 0x1b, 0x0c, 0x01, 0xaa, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xc1, 0xc7, 0xbc, 0x41, 0x60, 0x62, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x41, 0xfd, 0x20, 0xd8, 0xa0, 0x20, 0x3a, 0x38, 0x18, 0x0a, 0x96, 0x07, 0xa1, 0xb7, 0x7e, 0x7c, 0x3b, 0x1e, 0x1f, 0x94, 0x79, 0x04, 0xc3, 0x2f, 0x08, 0x56, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x18, 0x3f, 0x5d, 0x87, 0x53, 0x6c, 0xf8, 0x15, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0x86, 0x66, 0xd7, 0xe1, 0x14, 0x3b, 0x28, 0xc4, 0x51, 0x0e, 0x3d, 0x51, 0x17, 0x87, 0xdd, 0x60, 0x6c, 0x72, 0x6e, 0x38, 0xc5, 0x86, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x18, 0x13, 0x56, 0x0b, 0xa2, 0x85, 0x1b, 0x04, 0x1b, 0xc6, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x30, 0x16, 0x3b, 0x8f, 0x43, 0x87, 0xbd, 0xc2, 0x61, 0x17, 0x04, 0x1b, 0x14, 0xcf, 0x07, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0xe2, 0xfb, 0xe2, 0x38, 0xb4, 0x20, 0x5a, 0xd8, 0x83, 0xe2, 0x69, 0xe0, 0xb0, 0x57, 0x38, 0x88, 0x16, 0x7e, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x8c, 0x86, 0xce, 0xe3, 0xf1, 0x61, 0xaf, 0xf0, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x3c, 0xb5, 0x30, 0xf1, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0xe2, 0xb0, 0x1b, 0x04, 0x17, 0xf6, 0x86, 0x18, 0x0e, 0xbb, 0x41, 0x59, 0xd3, 0xb1, 0x20, 0x58, 0x1c, 0x76, 0x83, 0xd2, 0xa3, 0x60, 0x83, 0x31, 0xb0, 0x30, 0xec, 0x06, 0x65, 0x54, 0xc1, 0x06, 0x63, 0xec, 0x69, 0xd8, 0x05, 0xc1, 0x06, 0x43, 0x6a, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x04, 0x89, 0xfe, 0x09, 0x92, 0xfd, 0xc7, 0xa1, 0x83, 0x52, 0xba, 0xe0, 0xf8, 0x36, 0xec, 0x06, 0xe5, 0x59, 0xc7, 0x41, 0x59, 0x68, 0x70, 0x7c, 0x3b, 0x1e, 0x1f, 0x94, 0xe6, 0x06, 0x2b, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdf, 0x60, 0x08, 0x50, 0x0d, 0x82, 0xc5, 0x61, 0x37, 0x08, 0x2e, 0xec, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0xb2, 0xa6, 0x63, 0x41, 0xb0, 0x20, 0x19, 0x58, 0xaf, 0x3b, 0x08, 0x72, 0xfe, 0x83, 0xe2, 0xc4, 0x62, 0xd8, 0x0d, 0xca, 0xb3, 0x8e, 0x83, 0x60, 0xc7, 0x3f, 0xbe, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x77, 0x56, 0x46, 0x1f, 0x52, 0x4b, 0xc7, 0xe3, 0x15, 0x7e, 0xe1, 0x17, 0x04, 0x1b, 0x14, 0x37, 0x07, 0x8b, 0xc3, 0x6e, 0x30, 0x36, 0x39, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0xdd, 0x90, 0xc7, 0xda, 0x10, 0xc3, 0x61, 0x17, 0x04, 0x1b, 0x14, 0xcf, 0x07, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x4a, 0x18, 0x89, 0x83, 0x71, 0x61, 0x76, 0x1c, 0x5a, 0xd8, 0x85, 0x5d, 0xb8, 0x0d, 0xc6, 0x84, 0xd5, 0xc1, 0xd0, 0xec, 0x3a, 0xac, 0x6f, 0x1e, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x61, 0x17, 0x76, 0xc3, 0xae, 0xc1, 0x86, 0x18, 0x0e, 0xbb, 0x20, 0xd8, 0xa0, 0x78, 0x3e, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xe8, 0x18, 0x76, 0x50, 0xc2, 0x48, 0x1c, 0x87, 0x16, 0x76, 0x61, 0x17, 0x6e, 0x83, 0xa0, 0xf4, 0x3e, 0x18, 0x13, 0x56, 0x87, 0xf5, 0xcd, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x2f, 0xec, 0xc2, 0x6e, 0x50, 0xf4, 0x24, 0x6c, 0x88, 0xe1, 0xb0, 0x0b, 0x82, 0x0d, 0x82, 0xe5, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x09, 0x23, 0x31, 0x41, 0xa1, 0x3f, 0x0e, 0x2d, 0xec, 0xc2, 0x2e, 0xdc, 0x06, 0x63, 0xc2, 0x6a, 0x82, 0x41, 0x3f, 0xac, 0x6f, 0x2e, 0xec, 0x82, 0x64, 0xc8, 0x20, 0xda, 0xa0, 0x0c, 0x1b, 0x18, 0x44, 0x0b, 0xc2, 0x0d, 0x31, 0x3c, 0x18, 0x13, 0x56, 0xc7, 0xe3, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x85, 0x5d, 0xd8, 0x0d, 0x8a, 0x2a, 0x85, 0x0d, 0x31, 0x1c, 0x76, 0x41, 0xb0, 0x41, 0xb0, 0xbc, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0x61, 0x24, 0x26, 0x28, 0xf6, 0xc7, 0xa1, 0x85, 0x5d, 0xd8, 0x85, 0xdb, 0x60, 0x4c, 0x58, 0x4d, 0x30, 0xec, 0x87, 0xf5, 0xcd, 0x85, 0x5d, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x8c, 0x86, 0xce, 0x41, 0xb4, 0x20, 0x3d, 0x28, 0xe8, 0x5f, 0x8e, 0xc7, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x78, 0x7c, 0x50, 0x46, 0x2e, 0x1c, 0xdf, 0x86, 0x5f, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x07, 0x45, 0x99, 0xc8, 0x61, 0x7d, 0xf3, 0x78, 0x7c, 0x50, 0x14, 0x37, 0x0c, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0xc8, 0xdf, 0x1d, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x28, 0xd9, 0x44, 0x0e, 0x69, 0xb8, 0x43, 0xbe, 0xf6, 0x38, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x06, 0x21, 0x6c, 0xbf, 0x38, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xb8, 0xb0, 0x37, 0x08, 0x4c, 0xec, 0x35, 0x28, 0x61, 0x24, 0x0e, 0x4a, 0x0a, 0x8b, 0x83, 0x60, 0xc7, 0x3f, 0xbe, 0x1d, 0x8f, 0x0f, 0x86, 0xda, 0xd2, 0x41, 0x19, 0xfb, 0x70, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x2f, 0x96, 0x1f, 0x52, 0x4b, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x84, 0xb0, 0xfd, 0xe2, 0x20, 0xd8, 0x20, 0x84, 0xed, 0x17, 0x07, 0xc1, 0x82, 0x64, 0x60, 0xb8, 0x0e, 0x82, 0x9c, 0xff, 0x60, 0xc8, 0xd8, 0x1c, 0x8f, 0x8f, 0xc7, 0x2b, 0x08, 0x16, 0x37, 0x08, 0x67, 0xfb, 0x83, 0x70, 0xb6, 0x5f, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0xb6, 0x7d, 0x87, 0xe4, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xbe, 0xf6, 0x90, 0xb5, 0x3b, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x87, 0x74, 0xe6, 0xf1, 0x78, 0x41, 0xb0, 0xb8, 0xc1, 0x98, 0x41, 0x6b, 0x71, 0x10, 0x2c, 0xe1, 0xe5, 0xe2, 0x20, 0xd8, 0x10, 0xff, 0x43, 0x9e, 0xe5, 0x78, 0x7c, 0x3c, 0xde, 0x60, 0x68, 0x5a, 0x2d, 0x08, 0x36, 0x08, 0x61, 0xfb, 0xc5, 0x41, 0xb0, 0x41, 0x08, 0xdb, 0x2f, 0x0e, 0x82, 0x0d, 0x4a, 0xde, 0x99, 0x83, 0x81, 0x78, 0x76, 0x3c, 0x3e, 0x1e, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x0f, 0xe3, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x83, 0x31, 0x8c, 0x7f, 0x3c, 0x3e, 0x1e, 0x0f, 0x82, 0x0d, 0xca, 0x5d, 0x9a, 0xc5, 0x41, 0xb0, 0x84, 0x93, 0x8b, 0x83, 0x60, 0x43, 0xfc, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0x87, 0xc4, 0xcc, 0x71, 0xe8, 0x78, 0x7c, 0x3c, 0x5e, 0x10, 0x6c, 0x50, 0x08, 0xd0, 0x2c, 0x0e, 0xbf, 0x20, 0xd8, 0xd0, 0x49, 0x6d, 0x71, 0x10, 0x6c, 0x88, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xc3, 0xda, 0xef, 0xa1, 0x51, 0xcb, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x16, 0x07, 0xc1, 0x86, 0x64, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x48, 0xcc, 0x1c, 0xdf, 0x8e, 0x43, 0xc7, 0xf3, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0x21, 0x75, 0x70, 0xd8, 0x2b, 0x3c, 0x1e, 0x1f, 0x8f, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x21, 0x9a, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x87, 0xe5, 0x93, 0xe3, 0xf1, 0x2a, 0xfc, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x28, 0x4f, 0xc7, 0xe3, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0xe3, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0xfc, 0x82, 0x68, 0x41, 0x38, 0x08, 0x16, 0x24, 0x03, 0x7d, 0x9d, 0x0e, 0x1d, 0xc3, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x94, 0x68, 0x38, 0x87, 0xac, 0xdd, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x92, 0xc1, 0x9f, 0x43, 0xb3, 0xa4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x1e, 0x42, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xb6, 0x4e, 0x87, 0x8e, 0x61, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xa1, 0x63, 0xd8, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x01, 0x91, 0xfe, 0xde, 0x77, 0x68, 0xf8, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x30, 0x4a, 0x87, 0x86, 0x5f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xa1, 0xe1, 0xd7, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x20, 0xda, 0xdf, 0xfb, 0x0e, 0x0d, 0xbf, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0x07, 0x03, 0x3f, 0xe4, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0xb9, 0x32, 0xc1, 0xdc, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0xf9, 0xec, 0xe1, 0x37, 0x9e, 0x8f, 0x31, 0xc7, 0xa1, 0x41, 0xb0, 0x21, 0xd9, 0x31, 0x08, 0x16, 0x07, 0x08, 0xa2, 0x5a, 0x3c, 0x99, 0x81, 0x3d, 0x59, 0x73, 0xb8, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x18, 0xa5, 0x09, 0x6e, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x25, 0x1a, 0xce, 0x41, 0x81, 0xbe, 0x73, 0x1c, 0x1a, 0x04, 0x1b, 0xf6, 0x0a, 0x87, 0x5f, 0x10, 0x2d, 0x98, 0x0f, 0x82, 0x0d, 0x7b, 0x85, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x82, 0x8f, 0x79, 0x43, 0xea, 0x60, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x02, 0xbd, 0x6f, 0x82, 0xdf, 0xff, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x7f, 0x26, 0x10, 0xee, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x22, 0xf5, 0x61, 0xaf, 0xf0, 0x38, 0x74, 0x10, 0x98, 0xd8, 0xc7, 0xa1, 0xe1, 0x17, 0x44, 0x0b, 0x19, 0x04, 0x0b, 0x92, 0x41, 0xd9, 0x04, 0xed, 0xff, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x41, 0x30, 0x81, 0x71, 0xff, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x38, 0x18, 0xad, 0xe6, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x42, 0x06, 0xc1, 0x82, 0x64, 0x20, 0x78, 0x07, 0xe5, 0x62, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0xf0, 0x1b, 0xcf, 0xc7, 0x90, 0x1f, 0x52, 0x07, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x85, 0x0c, 0x82, 0x0d, 0xca, 0xbe, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x65, 0x71, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0xe0, 0x60, 0x18, 0xc3, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0xe2, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xde, 0x04, 0xc2, 0xfe, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x30, 0x86, 0xf1, 0x8f, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0xe2, 0x41, 0xb0, 0x41, 0x49, 0xe4, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x2c, 0xfc, 0xc6, 0xf3, 0x31, 0xa4, 0x87, 0xbd, 0xc2, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x82, 0x78, 0x10, 0x2c, 0x48, 0x86, 0x39, 0x28, 0x17, 0x7b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x50, 0xf6, 0xf5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x28, 0x8b, 0x7b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf6, 0x0a, 0x0f, 0x4a, 0x34, 0x9c, 0xe3, 0xd0, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x63, 0x40, 0x40, 0xb6, 0x46, 0x65, 0x3e, 0x0e, 0x1d, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x20, 0x1e, 0x04, 0x0b, 0x92, 0x81, 0xf4, 0xca, 0x41, 0x29, 0xdd, 0x73, 0x30, 0x3e, 0x8c, 0x8e, 0xe7, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x24, 0xaf, 0xf7, 0x4d, 0xb0, 0xfb, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x08, 0x26, 0xe8, 0xfb, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x20, 0xdb, 0x39, 0x18, 0x6f, 0x3a, 0xc7, 0xa1, 0x83, 0xc1, 0x3b, 0x79, 0x1c, 0x1a, 0x04, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0x73, 0xef, 0xa0, 0xd8, 0xe5, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xc1, 0xeb, 0xff, 0x07, 0x43, 0xb1, 0xe8, 0x38, 0x34, 0xfc, 0x82, 0x68, 0x81, 0xf0, 0x0f, 0xbb, 0x70, 0x1b, 0xfa, 0x93, 0x1f, 0x87, 0x16, 0x7e, 0x41, 0xb4, 0xb0, 0x83, 0x60, 0x83, 0x72, 0xf0, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0xa8, 0x4b, 0x07, 0xe5, 0xe4, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x13, 0x06, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x01, 0x81, 0xde, 0x77, 0x50, 0x4e, 0xfe, 0x1c, 0x0c, 0x8a, 0xe7, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0x82, 0x68, 0x61, 0x07, 0xc1, 0x06, 0xe5, 0xe0, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x72, 0x79, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x09, 0xc1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x65, 0x0c, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb1, 0xe1, 0x7a, 0xd8, 0x2b, 0x3c, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0x3b, 0x08, 0x36, 0x28, 0x07, 0x7f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x94, 0x31, 0x44, 0x07, 0xa3, 0xf7, 0xf0, 0x38, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb4, 0xb0, 0x83, 0x60, 0x83, 0xb2, 0xaf, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x59, 0xdc, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x28, 0x20, 0x19, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x85, 0x1d, 0x04, 0x1b, 0x94, 0x44, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0x06, 0xe5, 0xa2, 0xcf, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0x41, 0xd9, 0xd7, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x2c, 0xee, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x1c, 0x0c, 0x63, 0xd8, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x36, 0x28, 0x07, 0x7f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0x44, 0xea, 0x43, 0xaa, 0xe6, 0x38, 0x34, 0xec, 0xc2, 0x6d, 0x68, 0x25, 0x7e, 0x1c, 0xda, 0xa0, 0xd4, 0x23, 0x1a, 0x76, 0xe1, 0x36, 0x1c, 0xed, 0xc7, 0xa1, 0x0d, 0x0a, 0xc8, 0xa2, 0x41, 0xb6, 0xa1, 0xf9, 0xfa, 0xc1, 0xe0, 0x9d, 0x3c, 0x1e, 0x0f, 0xbf, 0x20, 0x5a, 0x20, 0xfc, 0x83, 0x60, 0x83, 0x72, 0xf0, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x40, 0xa4, 0x9e, 0x40, 0xd0, 0xff, 0x1f, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x71, 0x41, 0xb0, 0x20, 0x19, 0xee, 0x78, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0xa0, 0xfc, 0x1f, 0x87, 0x06, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbf, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xde, 0x04, 0xce, 0xfe, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0xfb, 0x4e, 0x07, 0xe5, 0x6f, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x82, 0x80, 0xe8, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0x76, 0x10, 0x2c, 0x48, 0x06, 0x65, 0x13, 0x18, 0xfe, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x20, 0x98, 0x40, 0xba, 0xff, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x63, 0x40, 0xb0, 0xa6, 0xbc, 0x5e, 0x38, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0x76, 0x10, 0x6c, 0x50, 0xbe, 0x26, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x28, 0x12, 0x94, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xa0, 0xf0, 0xac, 0x39, 0xa4, 0x6a, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x85, 0x1d, 0x04, 0x1b, 0x94, 0x8e, 0x4a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x8a, 0x6c, 0xa5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0xc7, 0x80, 0xa0, 0xc6, 0x55, 0x56, 0x78, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0xdf, 0xa0, 0xdc, 0x4c, 0x3a, 0xa4, 0x0e, 0x8e, 0xc7, 0x83, 0x64, 0x98, 0xe3, 0xf1, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x78, 0x6d, 0x75, 0xeb, 0x86, 0x8e, 0x61, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x5c, 0xd8, 0x85, 0x5d, 0xe8, 0x21, 0x55, 0x73, 0x58, 0xdf, 0x5c, 0x10, 0x6c, 0x50, 0x0e, 0x25, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x18, 0x10, 0xf8, 0xea, 0xfa, 0x2b, 0x17, 0x7e, 0xe3, 0xf9, 0x18, 0xfc, 0xff, 0x7f, 0xd8, 0x2b, 0x3c, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x4c, 0x87, 0x15, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x25, 0x1a, 0xce, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0xc3, 0x0c, 0xa2, 0x05, 0xf1, 0x21, 0x6b, 0x77, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xe6, 0x20, 0xf4, 0xd6, 0x8f, 0x43, 0x83, 0x60, 0x41, 0x32, 0xdc, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x80, 0xe0, 0xdd, 0xb7, 0xd5, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x40, 0xf0, 0xff, 0x1f, 0x52, 0x07, 0xc7, 0xa1, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0x5b, 0xa7, 0x83, 0x20, 0xe7, 0x3f, 0x28, 0x39, 0x73, 0x06, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0xc5, 0x61, 0x17, 0x6e, 0x31, 0x04, 0x87, 0xd4, 0xc1, 0x06, 0x21, 0x9f, 0x3d, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xc6, 0x7d, 0x07, 0xc3, 0xd0, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x90, 0xe2, 0x6f, 0xd8, 0x2b, 0x3c, 0x18, 0x03, 0x0b, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x04, 0xef, 0x60, 0xf8, 0xc7, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xbc, 0xef, 0x74, 0x30, 0xfc, 0x63, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x3c, 0x64, 0x2b, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xa0, 0xaf, 0xd3, 0xc1, 0xf0, 0x8f, 0x3d, 0x28, 0x32, 0xa2, 0x8e, 0x43, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x17, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf3, 0xc3, 0x1c, 0x8c, 0x56, 0xf3, 0x41, 0xb4, 0xb0, 0x07, 0xe3, 0x0c, 0xfa, 0x90, 0x5c, 0x3a, 0x0e, 0x1d, 0xdf, 0x8e, 0xc7, 0x07, 0x25, 0x43, 0xd3, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x78, 0x6d, 0x75, 0xe7, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xb0, 0x0b, 0x77, 0x30, 0x66, 0xe1, 0x36, 0x1c, 0xed, 0x83, 0x60, 0x71, 0xd8, 0x85, 0xdb, 0x90, 0xaf, 0x3d, 0x1c, 0xed, 0x1b, 0xb2, 0x76, 0x83, 0x60, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x58, 0x0f, 0x82, 0x0d, 0x06, 0x77, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xc3, 0xda, 0xef, 0xa1, 0xf1, 0xfc, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x41, 0x70, 0x10, 0xe4, 0xfc, 0x07, 0xa3, 0x3d, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xe7, 0xde, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x11, 0xff, 0x83, 0xb1, 0xe1, 0x7a, 0x1c, 0x1a, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x40, 0x73, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x1c, 0x04, 0x29, 0xfe, 0x71, 0xe8, 0xf8, 0x76, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x1e, 0xdc, 0xdb, 0x7d, 0x48, 0x2d, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xd6, 0xf7, 0x36, 0x24, 0xa6, 0x06, 0xc1, 0x0a, 0x82, 0x05, 0xc9, 0xc0, 0xb9, 0x72, 0x58, 0xa1, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x61, 0x3d, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x68, 0xee, 0x74, 0x48, 0x2e, 0x1d, 0x1a, 0xb5, 0x1c, 0x87, 0x0e, 0x8d, 0xe7, 0x8f, 0x43, 0x87, 0x18, 0x0e, 0x82, 0x05, 0xc1, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0x30, 0xcc, 0x68, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf2, 0xb5, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x8c, 0x9e, 0xe1, 0x43, 0x1a, 0xee, 0x38, 0x34, 0x08, 0x16, 0x04, 0x1b, 0x0c, 0x34, 0xa7, 0x83, 0xd1, 0x1e, 0x3c, 0xec, 0xc2, 0x6d, 0x88, 0xff, 0x21, 0x86, 0x0b, 0xbb, 0x20, 0xd8, 0x60, 0x14, 0xd8, 0x1e, 0x8c, 0x93, 0xea, 0x0d, 0x86, 0x8a, 0xc0, 0x86, 0xb5, 0xdf, 0x41, 0xb0, 0x20, 0x19, 0x04, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x31, 0x73, 0x48, 0xcc, 0x1c, 0x87, 0x86, 0xdd, 0xa0, 0x5c, 0xb6, 0x5a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x57, 0x0e, 0xc6, 0xbb, 0xce, 0x21, 0x7b, 0x71, 0x48, 0x1d, 0x1c, 0x92, 0x4b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x10, 0x1e, 0x94, 0x93, 0x57, 0x87, 0xe4, 0xd2, 0xf1, 0x6d, 0x83, 0x90, 0x02, 0x1f, 0x04, 0x1b, 0x8c, 0x75, 0x9b, 0x83, 0xb1, 0xe6, 0x7c, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xde, 0x5c, 0x1c, 0x7d, 0x48, 0x2d, 0x1d, 0x8f, 0x57, 0xf8, 0x05, 0xc1, 0x06, 0xa3, 0xac, 0x6c, 0x71, 0x10, 0x2c, 0x0e, 0xbb, 0x61, 0x2d, 0x74, 0x43, 0x0c, 0x87, 0x5d, 0x10, 0x6c, 0xc8, 0xd7, 0x1e, 0x14, 0x10, 0x20, 0x0b, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf8, 0x60, 0x5c, 0x98, 0x1d, 0x8f, 0x0f, 0x47, 0xfb, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x7c, 0xb6, 0x32, 0xbb, 0xfc, 0x90, 0x5a, 0x3a, 0x1e, 0xaf, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x38, 0xec, 0x86, 0x15, 0xd4, 0x0d, 0x06, 0x6a, 0xd4, 0xb0, 0x1b, 0xd6, 0x42, 0x37, 0xf4, 0x10, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x78, 0x41, 0xb0, 0x21, 0x13, 0x71, 0xd8, 0xa8, 0x3d, 0x74, 0x0c, 0x3b, 0x1e, 0x1f, 0xdf, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x9f, 0x73, 0x0b, 0x3b, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x0a, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x76, 0x43, 0x1e, 0x6b, 0x41, 0xb4, 0x41, 0xe1, 0x59, 0x73, 0x88, 0xe6, 0x20, 0x5a, 0xe8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x84, 0x07, 0x43, 0xb3, 0xeb, 0x78, 0x7c, 0x88, 0xe6, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x77, 0x65, 0x6c, 0xf0, 0x21, 0xb5, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0xe2, 0xb0, 0x1b, 0x8c, 0x4d, 0xce, 0x0d, 0xa9, 0x83, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x98, 0x1f, 0xd6, 0x7e, 0x0f, 0x3b, 0x26, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xd9, 0xca, 0xdc, 0xe8, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x15, 0x7e, 0x83, 0xe1, 0xa5, 0x79, 0x7c, 0x1b, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x87, 0xad, 0x83, 0xe3, 0xf1, 0xe2, 0xf0, 0x0b, 0x82, 0x05, 0xc9, 0x80, 0xbb, 0xff, 0x7b, 0xdf, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x5b, 0x82, 0x68, 0x1f, 0xf2, 0xb5, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x73, 0x70, 0x75, 0xee, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x10, 0x2c, 0x48, 0x36, 0x28, 0xea, 0x73, 0x0e, 0xc9, 0xa5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x01, 0xd5, 0xfa, 0x7b, 0xdf, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x43, 0xe8, 0x90, 0xb5, 0x3b, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x83, 0xa0, 0xf4, 0x1e, 0x04, 0x0b, 0x92, 0x0d, 0x0a, 0xff, 0xa0, 0x43, 0x72, 0xe9, 0xa0, 0x74, 0xef, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x9f, 0xe6, 0x46, 0xf7, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0x85, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0xc5, 0x61, 0x37, 0xac, 0x85, 0x6e, 0xc8, 0xd7, 0x0e, 0xbb, 0x61, 0x05, 0x75, 0x43, 0x0c, 0x0f, 0x0a, 0xf7, 0xac, 0xe3, 0xdb, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x73, 0x6c, 0x61, 0xe7, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0x4a, 0xbd, 0xae, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xac, 0xdd, 0xf0, 0x1b, 0xcf, 0x0f, 0xc6, 0x2c, 0xdc, 0x71, 0xe8, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x83, 0x60, 0x71, 0x10, 0x6c, 0x30, 0xa0, 0xc2, 0x06, 0xc1, 0xe2, 0xb0, 0x0b, 0xbb, 0x21, 0x8f, 0xb5, 0x21, 0x86, 0xc3, 0x6e, 0xd8, 0x35, 0x38, 0xa4, 0x73, 0x37, 0xc4, 0x70, 0xd8, 0x0d, 0xc6, 0x4c, 0xd7, 0xc2, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x0c, 0xcd, 0xae, 0x0d, 0x46, 0x29, 0xe7, 0xc1, 0x48, 0xeb, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf6, 0x83, 0x31, 0xb0, 0x70, 0x50, 0xc0, 0x47, 0x1d, 0xdf, 0x8e, 0x6f, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0x9b, 0xa5, 0xb9, 0x91, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0xf8, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbf, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0x20, 0x19, 0xb0, 0xf6, 0xbd, 0xef, 0x90, 0x5c, 0x3a, 0x34, 0x6a, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x1c, 0x04, 0x8b, 0xc3, 0x6e, 0x30, 0x36, 0x39, 0x37, 0xa4, 0x0e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x41, 0xa9, 0xbc, 0x35, 0x88, 0x16, 0x76, 0x43, 0xfc, 0x0f, 0xa9, 0x83, 0xe3, 0xf1, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x7c, 0x33, 0xb6, 0x37, 0xf8, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0xf1, 0x60, 0x8c, 0xa1, 0x2d, 0x0e, 0x82, 0x0d, 0x4a, 0xbd, 0xae, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x94, 0xc9, 0x5d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8a, 0x43, 0x8d, 0x43, 0xbe, 0xf6, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x99, 0xe4, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x21, 0x03, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x38, 0xd4, 0x38, 0x18, 0x17, 0x66, 0xc7, 0xa1, 0x43, 0xbe, 0xf6, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xff, 0xad, 0x6e, 0x8e, 0x3e, 0xa4, 0x96, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x43, 0xea, 0xe0, 0x10, 0xc3, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x82, 0x5a, 0x6c, 0x71, 0x10, 0x6c, 0x50, 0x26, 0x77, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x17, 0x66, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x94, 0x49, 0x5e, 0x07, 0x25, 0xcf, 0xd8, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0x82, 0x60, 0x83, 0x51, 0x56, 0xb6, 0x38, 0x08, 0x16, 0x87, 0xdd, 0xb0, 0x16, 0xba, 0x21, 0x86, 0xc3, 0x6e, 0x50, 0x6c, 0x63, 0xad, 0x41, 0x71, 0xa8, 0x71, 0x50, 0xf6, 0x63, 0x1d, 0x94, 0xfd, 0x58, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xe7, 0xd6, 0xd2, 0xda, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x46, 0x59, 0xd9, 0xe2, 0x20, 0x58, 0x1c, 0x76, 0xc3, 0x5a, 0xe8, 0x86, 0xa3, 0x7d, 0xd8, 0x0d, 0x8a, 0x6d, 0xac, 0x0d, 0x31, 0x3c, 0x28, 0xfb, 0xb1, 0x8e, 0x6f, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xb3, 0xa5, 0x95, 0xb9, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x85, 0x5f, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0x3a, 0x8e, 0x2c, 0xec, 0x86, 0x5d, 0x83, 0x0d, 0xd1, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0x06, 0xc3, 0x0e, 0xf7, 0x78, 0x7c, 0x38, 0xc5, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x97, 0x2b, 0x0b, 0x93, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x52, 0x07, 0x83, 0x60, 0x41, 0x32, 0xa0, 0x50, 0xef, 0x3b, 0x24, 0x97, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb2, 0x76, 0xc3, 0x6f, 0x3c, 0x3f, 0x28, 0x54, 0xce, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xeb, 0xa5, 0xb9, 0x9d, 0x87, 0xd4, 0xd2, 0xf1, 0xf8, 0x60, 0x68, 0x5a, 0x2d, 0xfc, 0x82, 0x60, 0x83, 0x51, 0x56, 0xb6, 0x38, 0xfc, 0x82, 0x68, 0x41, 0x38, 0x08, 0x36, 0x28, 0x77, 0xc3, 0x0e, 0x69, 0xb8, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x76, 0xc3, 0x5a, 0xe8, 0x86, 0x18, 0x6e, 0x50, 0x6c, 0x63, 0x1d, 0x94, 0xfd, 0x58, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xe9, 0xea, 0xe4, 0xdc, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0xc2, 0x2f, 0x08, 0x16, 0xe7, 0xa0, 0x10, 0x7e, 0x58, 0x1c, 0x04, 0x8b, 0xc3, 0x6e, 0x58, 0x0b, 0xdd, 0xa0, 0x38, 0xe7, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x78, 0x83, 0x71, 0x61, 0x36, 0x88, 0x16, 0xa4, 0x83, 0x60, 0x43, 0xbe, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x98, 0xb0, 0x9a, 0x60, 0xda, 0x8f, 0x43, 0x87, 0x7c, 0xed, 0xf1, 0xf8, 0xf8, 0x76, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xbe, 0xdc, 0x1b, 0x1b, 0x7b, 0x48, 0x2d, 0x1d, 0x8f, 0x57, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xf0, 0x1b, 0x8c, 0xb0, 0xaa, 0x41, 0xb0, 0x38, 0xec, 0x86, 0xb5, 0xd0, 0x0d, 0xf9, 0xda, 0x83, 0xd2, 0xb3, 0xec, 0xf8, 0x76, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xfe, 0x5d, 0x19, 0x1b, 0x79, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x7e, 0x41, 0xb0, 0xc1, 0x28, 0x2b, 0x5b, 0x1c, 0x7e, 0x83, 0x12, 0x19, 0x6d, 0x10, 0x2c, 0x0e, 0xbb, 0x61, 0x2d, 0x74, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0xc5, 0x36, 0xd6, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x7c, 0x30, 0xb2, 0xac, 0x8e, 0xe7, 0x1b, 0x84, 0x00, 0xf8, 0x41, 0x91, 0xc0, 0x76, 0x7c, 0x3b, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xbf, 0xad, 0x4e, 0xce, 0x3d, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x8b, 0xc3, 0x2e, 0xec, 0x86, 0x15, 0xd4, 0x0d, 0x31, 0x1c, 0x76, 0xc3, 0x5a, 0xe8, 0x21, 0x9d, 0xbb, 0x21, 0x86, 0x07, 0x45, 0x78, 0xd6, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xfc, 0xb9, 0xb1, 0xb0, 0xf3, 0x90, 0x5a, 0x3a, 0x1e, 0xaf, 0xf0, 0x0b, 0x82, 0x0d, 0x0a, 0xd1, 0xb4, 0xc5, 0x41, 0xb0, 0x38, 0xec, 0x86, 0xb5, 0xd0, 0x0d, 0x8a, 0x73, 0xae, 0x41, 0xb0, 0x21, 0x5f, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x4c, 0x58, 0x0d, 0xbf, 0xf1, 0xfc, 0xa0, 0xec, 0xc7, 0x3a, 0x0e, 0x1d, 0xdf, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x97, 0x2b, 0x2b, 0x63, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x76, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xca, 0x61, 0x85, 0xf6, 0x90, 0x68, 0x5d, 0x10, 0x2c, 0x0e, 0xbb, 0x70, 0x1b, 0xb2, 0x76, 0xc3, 0x1c, 0xf2, 0xb5, 0x1b, 0x62, 0xb8, 0x21, 0x6b, 0x37, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe3, 0x61, 0x0e, 0x59, 0xbb, 0xe3, 0xf1, 0xf1, 0xed, 0x70, 0x8a, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0xc3, 0x2f, 0x88, 0x16, 0x84, 0x87, 0x68, 0x1e, 0x8f, 0x87, 0xdd, 0xb0, 0x6b, 0xb0, 0x21, 0x86, 0x83, 0x60, 0xe1, 0x17, 0x04, 0x1b, 0x0c, 0x0c, 0xd0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x68, 0xbf, 0x7e, 0x30, 0x7a, 0xb1, 0x0e, 0x8d, 0x04, 0x0f, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xdb, 0x20, 0x58, 0x1c, 0x76, 0x83, 0xa2, 0x4a, 0x61, 0x41, 0xb0, 0x20, 0xd9, 0x60, 0x88, 0x7f, 0x1c, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x6f, 0x68, 0x01, 0x74, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0xfd, 0xd0, 0xf0, 0x6b, 0x10, 0x2d, 0xec, 0x86, 0xf8, 0x1f, 0x94, 0xd5, 0x70, 0xc7, 0xe3, 0xe3, 0xdb, 0xf1, 0x78, 0xf8, 0x05, 0xc1, 0x06, 0xa3, 0xac, 0x6c, 0x71, 0x10, 0x2c, 0x0e, 0xbb, 0x61, 0x2d, 0x74, 0x43, 0x0c, 0x87, 0xdd, 0xa0, 0xd8, 0xc6, 0xda, 0xa0, 0xec, 0xc7, 0x3a, 0x28, 0x3d, 0xcb, 0x8e, 0x6f, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xcf, 0xad, 0xa5, 0xc1, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x6b, 0xa1, 0x1b, 0x62, 0xb8, 0x21, 0x5f, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe3, 0x83, 0x02, 0x41, 0xeb, 0x78, 0x7c, 0x7c, 0x3b, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x5f, 0xae, 0x2c, 0x0c, 0x3e, 0xa4, 0x96, 0x8e, 0xc7, 0x83, 0x60, 0x71, 0x83, 0x70, 0xb6, 0x3f, 0x18, 0x5f, 0x66, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x8c, 0xcb, 0xf1, 0x6d, 0x71, 0x10, 0x6c, 0x88, 0xff, 0xa1, 0x51, 0xcb, 0xf1, 0xf8, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x83, 0x60, 0xe1, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xfb, 0xeb, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0xd0, 0xf1, 0xf2, 0x38, 0x74, 0x7c, 0x1b, 0x04, 0x8b, 0x83, 0x60, 0xc3, 0xb6, 0xc5, 0x20, 0x58, 0x1c, 0x76, 0x83, 0x32, 0x0c, 0x6c, 0x41, 0xb0, 0x20, 0xd9, 0x60, 0x88, 0x7f, 0x1c, 0x8c, 0x77, 0x9d, 0x83, 0xf1, 0x61, 0x34, 0xec, 0x06, 0x63, 0xa6, 0x6b, 0x61, 0x37, 0x28, 0x7d, 0xc1, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf7, 0x07, 0xe5, 0x58, 0xc3, 0x20, 0x5a, 0x10, 0x0f, 0x73, 0x10, 0x98, 0xd8, 0x83, 0x68, 0x61, 0x37, 0x08, 0x4c, 0xec, 0xc3, 0x5e, 0xe1, 0x21, 0xb9, 0x74, 0x30, 0xd2, 0xba, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x41, 0xc9, 0x4b, 0x37, 0x88, 0x36, 0x28, 0xb6, 0xe9, 0x0e, 0xc9, 0xa5, 0xe3, 0xdb, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x7c, 0xb3, 0x30, 0x37, 0xf2, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x71, 0x0e, 0xc6, 0x0c, 0xda, 0xe2, 0xf0, 0x1b, 0x94, 0x66, 0x6f, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x6b, 0xa1, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x01, 0xd1, 0xff, 0xde, 0x77, 0x58, 0xa1, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xb2, 0xac, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x28, 0x0e, 0x35, 0x16, 0x07, 0xc1, 0x86, 0xc4, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0xe6, 0xa0, 0x08, 0x9b, 0x38, 0x0e, 0x1d, 0x8f, 0x8f, 0x43, 0x83, 0x60, 0x41, 0xb2, 0x41, 0x51, 0x9f, 0x73, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x72, 0x50, 0x3a, 0x90, 0x0c, 0xbf, 0xf1, 0x7c, 0x83, 0x31, 0x61, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe3, 0x83, 0x10, 0x00, 0x3f, 0x9e, 0x1f, 0x87, 0x8e, 0x6f, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xcf, 0xbd, 0xc9, 0xd1, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x1b, 0x8c, 0xb2, 0xb2, 0xc5, 0x41, 0xb0, 0x38, 0xec, 0x86, 0xb5, 0xd0, 0x0d, 0x89, 0xa9, 0x41, 0xb0, 0x41, 0xd9, 0x8f, 0x35, 0xec, 0x82, 0x60, 0xc3, 0xda, 0xef, 0x41, 0x11, 0x75, 0xb2, 0x1a, 0x8c, 0x09, 0xab, 0x83, 0x90, 0x02, 0x3f, 0x08, 0x01, 0xf0, 0x0d, 0x42, 0x0a, 0x7c, 0x83, 0x31, 0x61, 0x75, 0x10, 0x02, 0xe0, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xe7, 0xd6, 0xd2, 0xc8, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0xc2, 0x2f, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0x83, 0x52, 0xaf, 0x6b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x49, 0xdb, 0x35, 0xfc, 0xc6, 0xf3, 0x0d, 0x82, 0xd2, 0x7b, 0x10, 0x6c, 0x50, 0x26, 0x79, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x30, 0x87, 0x46, 0x82, 0x87, 0xac, 0xdd, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xfe, 0x9c, 0x5b, 0x18, 0x7c, 0x48, 0x2d, 0x1d, 0x8f, 0x37, 0x18, 0x9a, 0x56, 0xc3, 0x2f, 0x08, 0xd6, 0xa0, 0x30, 0xe2, 0xda, 0x10, 0xc3, 0x83, 0x42, 0x8c, 0x6b, 0x71, 0xf8, 0x05, 0xd1, 0x82, 0xed, 0x41, 0x50, 0x7a, 0x1f, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0xc5, 0x61, 0x37, 0x24, 0x02, 0x56, 0x10, 0x6c, 0x50, 0x3e, 0xc2, 0x1d, 0x1a, 0xb5, 0x1c, 0x5a, 0x00, 0x0d, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xa1, 0xe1, 0xd7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x12, 0x46, 0xe2, 0x20, 0xe4, 0xb3, 0x8f, 0x43, 0xc3, 0x2f, 0x88, 0x16, 0x08, 0xfd, 0x41, 0x08, 0x80, 0x1f, 0x8f, 0x87, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x41, 0xf9, 0xc1, 0x58, 0xec, 0x1c, 0x44, 0x0b, 0xbb, 0x71, 0xe8, 0x90, 0xaa, 0x39, 0x9e, 0x1f, 0xdf, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x9f, 0x83, 0x4b, 0x73, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xf0, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0xc3, 0xfa, 0xde, 0x86, 0x18, 0x0e, 0xbb, 0x61, 0xd7, 0x60, 0x43, 0x0c, 0x0f, 0x0a, 0x90, 0xb3, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xe7, 0xdc, 0xd2, 0xe0, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0xc1, 0x50, 0xd3, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x08, 0xfd, 0xbe, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x06, 0x43, 0x4d, 0xf3, 0xa0, 0x30, 0x9e, 0x3b, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x3a, 0x5e, 0x2e, 0x08, 0x16, 0x37, 0x64, 0xc0, 0x5b, 0x1c, 0x04, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x2e, 0xdc, 0x86, 0xdc, 0xf7, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x21, 0xf7, 0xbd, 0x21, 0xf7, 0x7d, 0x38, 0xc5, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x01, 0x81, 0xdf, 0x77, 0x3c, 0x3e, 0x74, 0xd0, 0x18, 0x76, 0xe1, 0x16, 0x03, 0x1f, 0x2e, 0x8c, 0xad, 0x3d, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x28, 0xa4, 0xfe, 0x36, 0x28, 0xa4, 0xfe, 0x0e, 0xa7, 0xd8, 0x82, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x64, 0x70, 0xea, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x65, 0xc7, 0xdf, 0x06, 0xc5, 0x00, 0xe0, 0x06, 0xc5, 0x00, 0xe0, 0x41, 0x31, 0x00, 0x78, 0x1c, 0x3a, 0x34, 0x05, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x18, 0x6a, 0x9a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0xc1, 0xdf, 0x77, 0x3c, 0x3e, 0x0e, 0x1d, 0x5a, 0x80, 0x2d, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x18, 0xf8, 0x72, 0x6f, 0x73, 0xe5, 0x06, 0xe5, 0x3e, 0xe0, 0xe1, 0x14, 0x5b, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0x0c, 0x94, 0xaa, 0xe3, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xa0, 0xfc, 0x00, 0x3c, 0x0e, 0x1d, 0x9a, 0x02, 0x1d, 0x14, 0x62, 0x80, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x80, 0xc2, 0xbf, 0xef, 0x78, 0x7c, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x43, 0xc7, 0xcb, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x83, 0xa1, 0xa6, 0x39, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x41, 0x91, 0x1c, 0x78, 0x1c, 0x3a, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x6f, 0xe8, 0x78, 0xb9, 0x82, 0x60, 0x71, 0xe6, 0x20, 0x00, 0xee, 0x17, 0x07, 0xc1, 0x0a, 0xbb, 0x41, 0xd0, 0xeb, 0x6f, 0x88, 0xe6, 0xe1, 0x14, 0x5b, 0xd8, 0x85, 0x5d, 0xe8, 0xa1, 0x91, 0xe0, 0x61, 0x7d, 0x73, 0x43, 0x23, 0xc1, 0xc3, 0x29, 0xb6, 0xc1, 0xc8, 0xe7, 0x5d, 0xd8, 0x85, 0x5d, 0xe8, 0xa1, 0x09, 0xd7, 0x61, 0x7d, 0x73, 0x43, 0x13, 0xae, 0xc3, 0x29, 0x36, 0x08, 0x36, 0x28, 0x28, 0xfc, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x13, 0xc4, 0xfb, 0x38, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x62, 0x38, 0xec, 0x86, 0xa6, 0xe7, 0x87, 0x36, 0x8f, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x0d, 0x6d, 0x67, 0x16, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x0d, 0xca, 0x78, 0xc1, 0x61, 0x37, 0x18, 0xb1, 0x58, 0x07, 0xc5, 0x0b, 0xc3, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0xa0, 0xf8, 0x1f, 0x5c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0xd8, 0x60, 0xa8, 0x69, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xd4, 0xef, 0xff, 0x7d, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x0d, 0xca, 0x78, 0xc1, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0xa0, 0x7d, 0xdf, 0xf1, 0xf8, 0xd0, 0x41, 0xe3, 0xd0, 0x29, 0xf3, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x06, 0x43, 0x4d, 0x73, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x50, 0x0c, 0x00, 0x1e, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x71, 0xc3, 0x29, 0x36, 0x07, 0xc5, 0xb4, 0xe0, 0xe2, 0x20, 0x58, 0x85, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0x18, 0x3f, 0x5d, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0x38, 0xda, 0x0f, 0xc6, 0x4f, 0xd7, 0xa1, 0xcd, 0xe3, 0xb0, 0x0b, 0xbb, 0xd0, 0x83, 0xa1, 0xd9, 0x75, 0x58, 0xdf, 0x3c, 0x28, 0xe8, 0x51, 0x36, 0x28, 0x36, 0x06, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x01, 0x89, 0xff, 0x7d, 0xc7, 0xe3, 0x43, 0x0b, 0xb0, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x86, 0x8e, 0x97, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0xca, 0x34, 0xc0, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x86, 0x8e, 0x97, 0x83, 0x60, 0x83, 0x01, 0xb7, 0xbb, 0x38, 0x08, 0x16, 0x76, 0x43, 0xc7, 0x91, 0x85, 0x5d, 0xb8, 0xc5, 0xe0, 0xeb, 0xc4, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xa2, 0x17, 0x71, 0x83, 0xa2, 0x17, 0xf1, 0x70, 0x8a, 0x1d, 0x14, 0xa4, 0x84, 0xc3, 0x2e, 0xdc, 0x62, 0xf0, 0x75, 0xe3, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0x09, 0x93, 0xb8, 0x41, 0x09, 0x93, 0x78, 0x38, 0xc5, 0x0e, 0x0a, 0x52, 0xc2, 0x61, 0x17, 0x6e, 0xf1, 0x50, 0xf3, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x0a, 0xd2, 0xc4, 0x0d, 0x0a, 0xd2, 0xc4, 0xc3, 0x29, 0x76, 0x50, 0x90, 0x12, 0x0e, 0xbb, 0x70, 0x8b, 0xc1, 0xd7, 0xa5, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x65, 0x85, 0xe2, 0x06, 0x65, 0x85, 0xe2, 0xe1, 0x14, 0x3b, 0x28, 0x48, 0x09, 0x87, 0x5d, 0xb8, 0xc5, 0xe0, 0xeb, 0xf0, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x22, 0x51, 0x71, 0x83, 0x22, 0x51, 0xf1, 0x70, 0x8a, 0x1d, 0x14, 0xa4, 0x84, 0xc3, 0x2e, 0xdc, 0x62, 0xf0, 0x75, 0xf6, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0xc9, 0xaf, 0xb8, 0x41, 0xc9, 0xaf, 0x78, 0x38, 0xc5, 0x0e, 0x0a, 0x52, 0xc2, 0x61, 0x17, 0x6e, 0x31, 0xf8, 0xba, 0xfb, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xa0, 0x80, 0x5b, 0xdc, 0xa0, 0x80, 0x5b, 0x3c, 0x9c, 0x62, 0x07, 0x05, 0x29, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xfc, 0x9c, 0x78, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0x50, 0x8e, 0x2f, 0x6e, 0x50, 0x8e, 0x2f, 0x1e, 0x4e, 0xb1, 0x83, 0x82, 0x94, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0x7e, 0x6e, 0x3c, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x28, 0xae, 0x18, 0x37, 0x28, 0xae, 0x18, 0x0f, 0xa7, 0xd8, 0x41, 0x41, 0x4a, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0x3f, 0x47, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x94, 0xca, 0x8c, 0x1b, 0x94, 0xca, 0x8c, 0x87, 0x53, 0xec, 0xa0, 0x20, 0x25, 0x1c, 0x76, 0xe1, 0x16, 0x83, 0x9f, 0x4b, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x0a, 0x9f, 0xc6, 0x0d, 0x0a, 0x9f, 0xc6, 0xc3, 0x29, 0x76, 0x50, 0x90, 0x12, 0x0e, 0xbb, 0x70, 0x8b, 0xc1, 0xcf, 0xe1, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x65, 0x6c, 0xe3, 0x06, 0x65, 0x6c, 0xe3, 0xe1, 0x14, 0x3b, 0x28, 0x48, 0x09, 0x87, 0x5d, 0xb8, 0xc5, 0xe0, 0xe7, 0xec, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xa2, 0xc4, 0x71, 0x83, 0xa2, 0xc4, 0xf1, 0x70, 0x8a, 0x1d, 0x14, 0xa4, 0x84, 0xc3, 0x2e, 0xdc, 0x62, 0xf0, 0x73, 0xf7, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0x89, 0xe9, 0xb8, 0x41, 0x89, 0xe9, 0x78, 0x38, 0xc5, 0x0e, 0x0a, 0x52, 0xc2, 0x61, 0x17, 0x6e, 0x31, 0x78, 0xb2, 0xf0, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xa0, 0x60, 0x78, 0xdc, 0xa0, 0x60, 0x78, 0x3c, 0x9c, 0x62, 0x07, 0x05, 0x29, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0x3c, 0x99, 0x7c, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0x50, 0xfe, 0x3d, 0x6e, 0x50, 0xfe, 0x3d, 0x1e, 0x4e, 0xb1, 0x83, 0x82, 0x94, 0x70, 0xd8, 0x0d, 0xc6, 0xea, 0xee, 0x1a, 0x8c, 0xf0, 0xdd, 0x83, 0x21, 0xeb, 0x3b, 0xec, 0xc2, 0x6d, 0x30, 0xa4, 0x7e, 0x0f, 0xd1, 0xdc, 0x60, 0x98, 0xfc, 0x0e, 0xbb, 0x70, 0x8b, 0xc1, 0xa7, 0x99, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x65, 0x16, 0xe4, 0x06, 0x65, 0x16, 0xe4, 0xe1, 0x14, 0x3b, 0x28, 0x48, 0x09, 0x87, 0x5d, 0xb8, 0xc5, 0xe0, 0xd3, 0xe6, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xa2, 0x19, 0x72, 0x83, 0xa2, 0x19, 0xf2, 0x70, 0x8a, 0x1d, 0x14, 0xa4, 0x84, 0xc3, 0x2e, 0xdc, 0x62, 0x38, 0x7d, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0x50, 0x02, 0x45, 0x6e, 0x50, 0x02, 0x45, 0x1e, 0x4e, 0xb1, 0x83, 0x82, 0x94, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0x9e, 0x2e, 0x3c, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x28, 0x5e, 0x23, 0x37, 0x28, 0x5e, 0x23, 0x0f, 0xa7, 0xd8, 0x41, 0x41, 0x4a, 0x38, 0xec, 0xc2, 0x2d, 0x86, 0xc3, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xa5, 0x88, 0xe4, 0x06, 0xa5, 0x88, 0xe4, 0xe1, 0x14, 0x3b, 0x28, 0x48, 0x09, 0x87, 0x5d, 0xb8, 0xc5, 0xf0, 0xf8, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xa0, 0x88, 0x94, 0xdc, 0xa0, 0x88, 0x94, 0x3c, 0x9c, 0x62, 0x07, 0x05, 0x29, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xbc, 0xdc, 0x7c, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0x50, 0xfe, 0x4b, 0x6e, 0x50, 0xfe, 0x4b, 0x1e, 0x4e, 0xb1, 0x83, 0x82, 0x94, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0x5e, 0x8e, 0x3c, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x28, 0xe6, 0x26, 0x37, 0x28, 0xe6, 0x26, 0x0f, 0xa7, 0xd8, 0x41, 0x41, 0x4a, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0x2f, 0x87, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x94, 0xe6, 0x93, 0x1b, 0x94, 0xe6, 0x93, 0x87, 0x53, 0xec, 0xa0, 0x20, 0x25, 0x5c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x31, 0x78, 0xb9, 0x78, 0x83, 0x82, 0x8c, 0xf2, 0x70, 0x8a, 0x1d, 0x14, 0xa4, 0x84, 0x87, 0x4e, 0x99, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x83, 0x12, 0xbe, 0x6f, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x50, 0xfe, 0x0e, 0xc9, 0xa5, 0x43, 0xa3, 0x96, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x41, 0x32, 0xb0, 0xd7, 0x77, 0x48, 0x2e, 0x1d, 0x0c, 0xca, 0xab, 0x43, 0xa3, 0x96, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0xf0, 0xa2, 0x1a, 0x24, 0x03, 0xb1, 0x3b, 0x18, 0x83, 0x91, 0x07, 0xc3, 0x2c, 0xfc, 0x78, 0xbc, 0x00, 0x5e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2d, 0x6c, 0x6f, 0x67, 0x69, 0xe3, 0x32, 0x80, 0xb7, 0xcc, 0x9a, 0x0e, 0x48, 0x5c, 0x5d, 0x59, 0x5d, 0x19, 0x08, 0xdb, 0xdb, 0x59, 0xda, 0xd8, 0x02, 0x4f, 0xf7, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0a, 0xf8, 0x66, 0x75, 0x6e, 0x6b, 0xf0, 0x74, 0x6f, 0x03, 0xf8, 0xc5, 0xd5, 0x95, 0xd5, 0x95, 0x81, 0x94, 0xb9, 0x9d, 0xa5, 0xb9, 0x95, 0x0d, 0xf8, 0x74, 0x73, 0x62, 0xf2, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x34, 0x28, 0x71, 0x65, 0x75, 0xa9, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x04, 0x8e, 0x5e, 0x03, 0xbe, 0x98, 0x1c, 0x1c, 0x3d, 0xcb, 0x2c, 0xe0, 0xd1, 0xbd, 0xc1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xe5, 0xe5, 0x65, 0x03, 0x78, 0xc2, 0xc9, 0xbd, 0x91, 0xd5, 0x8d, 0x95, 0xcd, 0x81, 0xa0, 0x95, 0x85, 0x91, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe0, 0x40, 0x68, 0x0d, 0x02, 0xe8, 0x6c, 0xc0, 0xbf, 0xa3, 0x3b, 0x93, 0x17, 0xf0, 0xef, 0xe8, 0xe8, 0xe6, 0x35, 0x7c, 0x51, 0x73, 0x98, 0xb8, 0xc3, 0x83, 0x3b, 0x1b, 0xde, 0xd6, 0x19, 0xdc, 0x3d, 0x3c, 0xb8, 0xd3, 0x80, 0x7f, 0x47, 0x37, 0x77, 0x6e, 0x78, 0x70, 0x67, 0x01, 0x5f, 0xac, 0x6e, 0x8e, 0x3e, 0x08, 0xdc, 0x87, 0x0d, 0x4a, 0x78, 0xcc, 0x05, 0x97, 0x0f, 0x0f, 0xee, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x4a, 0x66, 0xcc, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x3c, 0xb8, 0xb3, 0xe1, 0x6d, 0x9d, 0x83, 0x22, 0x29, 0xb3, 0x15, 0xf0, 0xc4, 0xc2, 0xd8, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0xfa, 0x65, 0xc3, 0xd3, 0x3a, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xa0, 0xa0, 0xc8, 0x1c, 0xf0, 0xef, 0xe8, 0xc8, 0xe8, 0x35, 0xfc, 0x4a, 0xb6, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x21, 0xf8, 0x30, 0x38, 0x7b, 0x78, 0x70, 0x67, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xc6, 0x82, 0x58, 0x1b, 0x94, 0xcc, 0x98, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf7, 0xa0, 0xf4, 0xd3, 0xac, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x3c, 0xb8, 0xb3, 0xe1, 0x92, 0xda, 0xa0, 0xf4, 0xd3, 0x5c, 0xc1, 0xe5, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x3c, 0xb8, 0xb3, 0xe1, 0x92, 0xda, 0xf0, 0xe0, 0xce, 0x1a, 0x0c, 0x52, 0xa9, 0x0d, 0x6f, 0xeb, 0x0c, 0x2e, 0x1f, 0x94, 0x7e, 0x9a, 0x55, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xf8, 0x95, 0x6c, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x42, 0xf0, 0xe1, 0xa0, 0x48, 0xca, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xa2, 0x9a, 0x1b, 0x94, 0xcc, 0x98, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf7, 0xa0, 0x48, 0xca, 0xac, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x3c, 0xb8, 0xb3, 0xe1, 0x92, 0xda, 0xa0, 0x48, 0xca, 0x5c, 0x83, 0x41, 0x2a, 0xb5, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xe1, 0xc1, 0x9d, 0x0d, 0x97, 0xd4, 0x86, 0x07, 0x77, 0xd6, 0xa0, 0xe0, 0xd9, 0xdc, 0xf0, 0xb6, 0xce, 0xe0, 0xec, 0x41, 0x91, 0x94, 0x59, 0x75, 0x78, 0x5a, 0x67, 0x35, 0x18, 0x69, 0xee, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x23, 0xcd, 0xbd, 0x01, 0xbc, 0xd3, 0xdc, 0xe6, 0xca, 0xe4, 0xe8, 0x40, 0xdc, 0xca, 0xee, 0x40, 0xe8, 0xc2, 0xd2, 0xd8, 0x06, 0x7c, 0x31, 0x39, 0x3a, 0x79, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x1e, 0x84, 0xe9, 0xd8, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0xfd, 0xb2, 0xe1, 0x69, 0x9d, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0xef, 0x05, 0x6d, 0x50, 0x50, 0x64, 0x6e, 0x50, 0x50, 0x64, 0xb6, 0xe1, 0x92, 0x5a, 0x83, 0x62, 0x3a, 0xb3, 0x35, 0x28, 0xfd, 0x34, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x3c, 0xb8, 0xb3, 0xe1, 0x6d, 0x9d, 0x83, 0xd2, 0x4f, 0xb3, 0x0e, 0xa7, 0xd8, 0x1a, 0x94, 0xa2, 0x03, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xa5, 0xe8, 0x40, 0x03, 0xf8, 0x87, 0x91, 0x91, 0xcd, 0x81, 0xb0, 0xa5, 0xcd, 0xd1, 0x81, 0xd0, 0xbd, 0x81, 0x94, 0xb9, 0x91, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x2e, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0x39, 0x28, 0xd6, 0x30, 0x0f, 0x0a, 0x8a, 0xcc, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0xfa, 0x65, 0xc3, 0x7b, 0x41, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3e, 0xd0, 0xc2, 0xc6, 0xd6, 0x40, 0xcc, 0xde, 0xe4, 0x40, 0xd4, 0xca, 0xe8, 0x40, 0xda, 0xc2, 0xe8, 0xc6, 0xd0, 0x0e, 0x0f, 0xde, 0x6c, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0xc3, 0x7b, 0x41, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0x45, 0x69, 0xe6, 0x1a, 0x3e, 0x0f, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0x25, 0x33, 0xe6, 0x06, 0x45, 0xad, 0x67, 0xad, 0x80, 0xe7, 0x16, 0x06, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x94, 0x4c, 0xa1, 0x0d, 0xe0, 0x27, 0x57, 0xd6, 0xf6, 0x66, 0x57, 0x36, 0x07, 0x22, 0xf7, 0xf6, 0x46, 0xb7, 0x41, 0xc1, 0x87, 0xb9, 0x41, 0x21, 0x89, 0xb9, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x41, 0x91, 0x79, 0x50, 0x6a, 0x7b, 0x6e, 0x50, 0xca, 0x66, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x2e, 0x6e, 0xb8, 0xa4, 0xd6, 0xa0, 0x44, 0x68, 0xe9, 0xa0, 0x60, 0xf6, 0xdc, 0x70, 0x49, 0x6d, 0x50, 0x4c, 0x7a, 0xae, 0x41, 0xa1, 0x8d, 0xb9, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0xc3, 0xe7, 0x41, 0x6b, 0x50, 0xfa, 0x69, 0x6e, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xf0, 0x79, 0x50, 0x87, 0x53, 0xac, 0x05, 0x3c, 0xb7, 0x34, 0x78, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0xf0, 0x18, 0xed, 0xa0, 0xcc, 0x0c, 0xdd, 0xf0, 0x15, 0xce, 0x86, 0xaf, 0x5f, 0x36, 0x3c, 0xad, 0xb3, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x4a, 0x3f, 0xcd, 0x0d, 0x4a, 0xd9, 0xcc, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x8a, 0xa4, 0xcc, 0x0d, 0x4a, 0x6d, 0xcf, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x51, 0xcd, 0x0d, 0xca, 0x68, 0xcd, 0x83, 0x12, 0x87, 0x73, 0x0d, 0x97, 0xd4, 0x06, 0xa5, 0x9f, 0xe6, 0x1a, 0x14, 0x3c, 0x9b, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x94, 0x7e, 0x9a, 0x07, 0x05, 0xe5, 0x66, 0x6d, 0xb8, 0xa4, 0x36, 0x28, 0x92, 0x32, 0xd7, 0x60, 0x90, 0x4a, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x50, 0x24, 0x65, 0x1e, 0x14, 0x02, 0x9d, 0x35, 0x0b, 0x78, 0x64, 0x65, 0xf0, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xa9, 0x54, 0xda, 0x00, 0x7c, 0xb4, 0x85, 0xe1, 0x81, 0x90, 0x95, 0xc1, 0xd1, 0xa1, 0x81, 0xbc, 0x99, 0x81, 0xc4, 0xd5, 0x95, 0xd5, 0x95, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x86, 0x07, 0x6f, 0x36, 0x7c, 0x1c, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x61, 0x65, 0xa8, 0x0d, 0x8a, 0x5a, 0xcf, 0x0d, 0x8a, 0xc6, 0xcc, 0x56, 0x83, 0x22, 0x92, 0x60, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0x88, 0x24, 0x68, 0x00, 0x3e, 0xd2, 0xdc, 0xe6, 0xca, 0xe4, 0xe8, 0x40, 0xd8, 0xd2, 0xe6, 0xe8, 0x40, 0xe8, 0xde, 0x40, 0xe2, 0xea, 0xca, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x0f, 0x0a, 0xe6, 0xcf, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0xfa, 0x65, 0xc3, 0xd3, 0x3a, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x3e, 0x0f, 0xda, 0xf0, 0xb4, 0xce, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0xcf, 0x83, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0xf8, 0x3c, 0x68, 0x0d, 0x0f, 0xee, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x30, 0xd2, 0xdc, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xa7, 0x87, 0xcf, 0x83, 0xea, 0x70, 0x8a, 0xad, 0x41, 0x89, 0xd0, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x50, 0x22, 0xb4, 0x34, 0x80, 0x2f, 0x5a, 0x59, 0x18, 0x59, 0x8b, 0x5c, 0xd9, 0x1c, 0x1d, 0x08, 0x5c, 0x58, 0x9a, 0xdc, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0xfd, 0xb2, 0x06, 0x05, 0x1f, 0xe6, 0x06, 0x85, 0x24, 0xe6, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x41, 0xc9, 0x8c, 0xb9, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x07, 0xfc, 0x35, 0x3a, 0x3a, 0x79, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0x70, 0xf4, 0xd6, 0x20, 0x80, 0xce, 0x0e, 0x4a, 0x66, 0xcc, 0xda, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x06, 0xe1, 0xa9, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x91, 0x94, 0xb9, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x99, 0x31, 0x37, 0x28, 0xb5, 0x3d, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x5c, 0x3c, 0x28, 0x1a, 0x33, 0x07, 0xfc, 0x31, 0x36, 0x34, 0x78, 0x83, 0x52, 0x57, 0x74, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x95, 0x6c, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x42, 0xf0, 0xe1, 0xa0, 0xd8, 0x17, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xa2, 0x9a, 0x1b, 0x94, 0xcc, 0x98, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf7, 0xa0, 0xd8, 0x17, 0xad, 0x35, 0x5c, 0x52, 0x1b, 0x1e, 0xdc, 0x59, 0x83, 0x82, 0x67, 0xf3, 0xa0, 0x6c, 0x17, 0x6d, 0xc3, 0x25, 0xb5, 0xe1, 0xc1, 0x9d, 0x35, 0x18, 0x76, 0xbb, 0x07, 0x65, 0xc9, 0xea, 0x1a, 0x0c, 0x52, 0xa9, 0x0d, 0x97, 0xd4, 0x86, 0x07, 0x77, 0xd6, 0xa0, 0xe0, 0xd9, 0xdc, 0xf0, 0xb6, 0xce, 0xe0, 0xec, 0x41, 0xb1, 0x2f, 0xda, 0x1a, 0x14, 0x3c, 0x9b, 0x1b, 0xde, 0xd6, 0x19, 0x5c, 0x3e, 0x28, 0xf6, 0x45, 0x5b, 0x0d, 0x8a, 0xd4, 0x85, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x22, 0x75, 0xa1, 0x01, 0x78, 0x18, 0x43, 0x2b, 0x1b, 0x5b, 0x03, 0x19, 0x7b, 0x93, 0x93, 0x2b, 0x1b, 0xa3, 0x73, 0x2b, 0x9b, 0x9b, 0xdb, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x7c, 0xb0, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x35, 0xfc, 0x08, 0x73, 0x10, 0xe0, 0x41, 0x1b, 0x1e, 0x61, 0x5d, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xd2, 0x4f, 0x73, 0x83, 0x22, 0xa7, 0x75, 0xc3, 0x23, 0xac, 0x1b, 0x14, 0x94, 0x9a, 0x07, 0xe5, 0x4d, 0xe8, 0x1a, 0x94, 0xf0, 0x98, 0x1b, 0x14, 0x49, 0x99, 0x1b, 0x14, 0x39, 0xad, 0x1b, 0x1e, 0x61, 0xdd, 0xa0, 0x58, 0xe0, 0x3c, 0x28, 0x08, 0x4d, 0x3b, 0x9c, 0x62, 0x6b, 0x30, 0x32, 0x97, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x46, 0xe6, 0x52, 0x03, 0xf0, 0x13, 0x06, 0x07, 0xc7, 0x96, 0x07, 0x72, 0x16, 0x46, 0x57, 0x06, 0x42, 0xf7, 0x06, 0x62, 0x17, 0xc6, 0x56, 0x57, 0x36, 0xb7, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0x41, 0x6a, 0x55, 0x1b, 0xbe, 0xc2, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x86, 0xa7, 0x75, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0x77, 0x37, 0xbc, 0xdb, 0xb3, 0xe1, 0xbd, 0xa0, 0x83, 0x82, 0x2f, 0x73, 0x0d, 0x9f, 0xbb, 0x0c, 0xce, 0x1e, 0x14, 0xb5, 0x9e, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0xf9, 0xa0, 0x68, 0xcc, 0xec, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x02, 0xf8, 0x8a, 0xa5, 0xd1, 0xb5, 0x84, 0xc9, 0xa5, 0xd1, 0xa1, 0xb5, 0x95, 0xd1, 0xa5, 0x8d, 0xcb, 0x00, 0x7c, 0xc8, 0x8c, 0xe9, 0x80, 0x88, 0xa5, 0xd1, 0x81, 0x84, 0xc9, 0xa5, 0xd1, 0xa1, 0xb5, 0x95, 0xd1, 0xa5, 0x8d, 0xad, 0xc1, 0xa8, 0x19, 0xd8, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x18, 0x35, 0x03, 0x0d, 0xf0, 0x8f, 0xd5, 0xd1, 0x81, 0xb4, 0x85, 0xb9, 0xe5, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0x51, 0x33, 0xb0, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0xfc, 0x3b, 0xbf, 0x86, 0x2f, 0xd9, 0x6b, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x1e, 0x7e, 0xa8, 0x69, 0xc0, 0xa7, 0x9b, 0x33, 0x9b, 0xd7, 0xf0, 0x7d, 0xfb, 0xe0, 0xe4, 0x80, 0x3f, 0x07, 0x57, 0x36, 0x6e, 0xf8, 0xa5, 0xfe, 0x20, 0x4c, 0xc7, 0x16, 0xf0, 0xef, 0xe8, 0xd6, 0xe8, 0x0d, 0x0f, 0xee, 0x6c, 0x78, 0x5a, 0x67, 0xc3, 0x2f, 0x2e, 0x1b, 0x9e, 0xd6, 0xd9, 0xf0, 0xe0, 0x4d, 0x03, 0xfe, 0xdc, 0xd9, 0x98, 0xbb, 0xc1, 0x58, 0x15, 0x58, 0xc3, 0x25, 0xb5, 0xc1, 0x68, 0x16, 0x68, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x28, 0xc0, 0x3b, 0x37, 0x7c, 0xfd, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0xbc, 0x17, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0x27, 0x6b, 0xc0, 0xbf, 0xa3, 0x83, 0xa3, 0x37, 0x7c, 0x1e, 0xb4, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x8c, 0x53, 0xb4, 0x86, 0xb7, 0x75, 0x36, 0x7c, 0x47, 0x7f, 0x50, 0xe4, 0xcb, 0xae, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0xb3, 0xe1, 0xad, 0xfb, 0x83, 0x22, 0x5f, 0xf6, 0xf0, 0x16, 0xda, 0xe1, 0x17, 0xa1, 0x0d, 0xca, 0xb1, 0xd9, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x83, 0x82, 0x73, 0xb6, 0x01, 0x9f, 0x6e, 0x6e, 0x8d, 0x1e, 0xdc, 0xdc, 0xa0, 0xc8, 0x97, 0x5d, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0xe7, 0x41, 0x1b, 0x2e, 0xa9, 0x35, 0x0e, 0x1d, 0x3e, 0x0f, 0xaa, 0x0d, 0x8a, 0x0e, 0xda, 0xc1, 0xcf, 0x0d, 0x8a, 0x7c, 0xd9, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x7c, 0x1e, 0xb4, 0xe1, 0x92, 0x5a, 0xe3, 0xf9, 0xe1, 0xf3, 0xa0, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x07, 0x01, 0x1e, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0x3f, 0xeb, 0xa0, 0x54, 0x97, 0x5d, 0x0d, 0xc6, 0x56, 0xc1, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xd8, 0x2a, 0x68, 0x00, 0x1e, 0xc2, 0xe6, 0xe6, 0xca, 0xda, 0xc4, 0xd8, 0xca, 0x40, 0xec, 0xc2, 0xe4, 0xd2, 0xc2, 0xc4, 0xd8, 0xca, 0x36, 0x3c, 0x3e, 0xb2, 0xc1, 0xd8, 0x2a, 0xd8, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x87, 0x6f, 0xe7, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0x6c, 0xf8, 0xa1, 0xa6, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x87, 0x9a, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x9f, 0x07, 0x6d, 0x78, 0xf0, 0x66, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x91, 0x28, 0xd1, 0x86, 0xa7, 0x75, 0x36, 0x28, 0x7e, 0x50, 0xd7, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x28, 0xa7, 0x4f, 0x6b, 0xd6, 0x60, 0x60, 0x1d, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x0c, 0xac, 0x83, 0x06, 0xf0, 0x22, 0x4b, 0x9b, 0x0b, 0x9b, 0x9b, 0x2b, 0x6b, 0x13, 0x63, 0x2b, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0x03, 0xeb, 0x60, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x72, 0x29, 0xf6, 0xf0, 0x3a, 0xd3, 0x86, 0xbf, 0x68, 0x36, 0x28, 0xe7, 0x6c, 0x37, 0x7c, 0x90, 0xb3, 0xe1, 0x35, 0xbd, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xc0, 0xf4, 0xe8, 0xf0, 0xfb, 0xd9, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x3e, 0x0f, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0xc0, 0xb9, 0x74, 0xf8, 0xfd, 0xac, 0x66, 0x0d, 0x46, 0x02, 0xc3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x48, 0x60, 0x68, 0x00, 0x6f, 0xb3, 0x34, 0x36, 0x36, 0x10, 0x31, 0xb6, 0xb7, 0xb8, 0x39, 0x3a, 0xb9, 0xb2, 0xb0, 0xb6, 0x0d, 0x8f, 0x8f, 0x6c, 0x30, 0x12, 0x18, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x28, 0x76, 0x6c, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0xe1, 0x01, 0xfc, 0x83, 0xe2, 0x2f, 0x76, 0x83, 0xd2, 0xde, 0x72, 0x0d, 0x7f, 0x2e, 0x0d, 0xee, 0x6e, 0xf8, 0xa2, 0x66, 0x43, 0x1d, 0x3f, 0xd4, 0xfc, 0x01, 0x9f, 0x6e, 0x8e, 0x8c, 0xde, 0xf0, 0x0f, 0xcf, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0xc4, 0xdd, 0xf0, 0xb4, 0xce, 0xe1, 0x17, 0xa1, 0x0d, 0x0a, 0xd2, 0xd8, 0xc1, 0xc9, 0x0d, 0x4f, 0xef, 0x6c, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0x59, 0xc3, 0xdb, 0x3a, 0x07, 0xc3, 0x6e, 0xf7, 0xf0, 0x5e, 0xd0, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc4, 0xc7, 0xdd, 0xf0, 0xb4, 0xce, 0x41, 0xa9, 0x2e, 0xbb, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x91, 0x2f, 0xbb, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x78, 0x7a, 0x67, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x46, 0xe5, 0x43, 0x07, 0x85, 0xe2, 0x6e, 0x6b, 0x30, 0xec, 0x76, 0x37, 0x7c, 0x1c, 0x75, 0x50, 0x0c, 0xed, 0xb6, 0x1a, 0x8c, 0xca, 0x87, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x51, 0xf9, 0xd0, 0x00, 0x3e, 0x6c, 0x65, 0x66, 0x74, 0x2d, 0x73, 0x68, 0x69, 0x66, 0x74, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0x54, 0x3e, 0x6c, 0xf8, 0x45, 0x69, 0x83, 0x32, 0x01, 0x77, 0x83, 0x82, 0x34, 0x76, 0x83, 0xf2, 0x39, 0x76, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0x0f, 0xee, 0x6c, 0x78, 0x5a, 0x67, 0xc3, 0x2f, 0x2e, 0x1b, 0x9e, 0xd6, 0x59, 0x83, 0x42, 0x30, 0xf5, 0xf0, 0x00, 0x7e, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0x37, 0xbc, 0x17, 0xb4, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x43, 0xe1, 0xa2, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xed, 0xde, 0x35, 0xbc, 0xad, 0x73, 0xf8, 0x8d, 0xbe, 0x35, 0xbc, 0xad, 0x73, 0xf8, 0x0e, 0xbf, 0x3a, 0x9c, 0x62, 0xad, 0xc1, 0x48, 0x94, 0xd8, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x18, 0x89, 0x12, 0x0d, 0xe0, 0x35, 0xf6, 0xe6, 0x36, 0x16, 0x46, 0x57, 0xe6, 0x16, 0x46, 0x57, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0x46, 0xa2, 0xc4, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0xc5, 0x8e, 0xed, 0x86, 0xe7, 0x99, 0x0e, 0x8a, 0xbf, 0xd8, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x1a, 0xf0, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x4f, 0xeb, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x60, 0xea, 0xe8, 0xf0, 0xfb, 0x59, 0x87, 0x5f, 0x84, 0x0e, 0x6f, 0xa1, 0xad, 0x06, 0x63, 0x9c, 0x62, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0x8c, 0x53, 0x34, 0xc0, 0x33, 0xc7, 0x96, 0x36, 0x56, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0xc6, 0x38, 0xc5, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0xc5, 0x8e, 0xed, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x10, 0xd0, 0x5d, 0xc3, 0x9f, 0x4b, 0x83, 0x8f, 0x87, 0x07, 0xf0, 0x5b, 0xc3, 0x9f, 0x4b, 0x83, 0x93, 0x87, 0x1f, 0x6a, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0x1a, 0x7e, 0x71, 0x39, 0x28, 0x7c, 0x75, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x3e, 0xee, 0x1a, 0x7e, 0x71, 0x39, 0xfc, 0x7e, 0x76, 0x50, 0xaa, 0xcb, 0xb6, 0x1a, 0x0c, 0x85, 0x8b, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa1, 0x70, 0xd1, 0x00, 0xde, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x20, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0x28, 0x5c, 0x6c, 0xf8, 0x45, 0x69, 0x83, 0x62, 0xc7, 0x76, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x41, 0xce, 0x86, 0x6f, 0x73, 0x36, 0x3c, 0x26, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x83, 0x80, 0x65, 0x5d, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xf0, 0x51, 0x4f, 0xad, 0x06, 0x03, 0x68, 0x63, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xbc, 0x94, 0x2b, 0xb3, 0x2b, 0x93, 0x9b, 0x2b, 0x9b, 0x03, 0x11, 0x63, 0x7b, 0x1b, 0x5b, 0x03, 0x79, 0x93, 0x23, 0x2b, 0x93, 0x63, 0x01, 0x09, 0x1b, 0x1b, 0x7b, 0xab, 0x73, 0xa3, 0x4b, 0x73, 0x3b, 0x03, 0x31, 0x7b, 0x93, 0x03, 0x61, 0x2b, 0x0b, 0x23, 0x4b, 0x73, 0x3b, 0x03, 0xd1, 0x2b, 0x93, 0x7b, 0x2b, 0x9b, 0x57, 0x02, 0xbc, 0xc5, 0xde, 0xf4, 0x74, 0x40, 0xc4, 0xd8, 0xde, 0xc6, 0xd6, 0x40, 0xe6, 0xd2, 0xf4, 0xca, 0x25, 0x80, 0x3f, 0xb6, 0x32, 0x37, 0x1d, 0x90, 0xb9, 0x34, 0xbd, 0x32, 0x90, 0x37, 0x33, 0x10, 0xb2, 0x30, 0x3a, 0x16, 0x90, 0x34, 0x37, 0x10, 0xb1, 0x37, 0x7d, 0x09, 0xe0, 0x81, 0x2c, 0x8c, 0x4e, 0x07, 0x84, 0x2c, 0x8c, 0x2e, 0x0c, 0x84, 0xee, 0x0d, 0xc4, 0x8c, 0x2d, 0x0d, 0xae, 0x0d, 0x8f, 0x8f, 0x6c, 0x30, 0x80, 0x36, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x27, 0xf6, 0xa6, 0x1f, 0xbe, 0x9d, 0x5f, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0x5b, 0x99, 0x7b, 0x50, 0x66, 0xe9, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0x2c, 0x8c, 0x3e, 0xfc, 0x50, 0xd3, 0x86, 0xbf, 0x68, 0x36, 0xfc, 0x50, 0xb3, 0x41, 0xd1, 0xa7, 0xbb, 0x06, 0x45, 0x6d, 0x71, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x22, 0x13, 0x77, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x4a, 0xac, 0xe2, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x65, 0x61, 0x71, 0xad, 0xe1, 0x6d, 0x9d, 0x83, 0xf2, 0xbf, 0xb8, 0x01, 0x7f, 0xcc, 0x8d, 0x6d, 0xde, 0xa0, 0x34, 0xe0, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x94, 0x3e, 0xc6, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x1b, 0x14, 0x5e, 0xc6, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0xf8, 0x77, 0x83, 0xd2, 0xc7, 0xf8, 0xa0, 0xec, 0x33, 0xae, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xc6, 0x46, 0x48, 0x07, 0xc5, 0xca, 0xf1, 0x6a, 0x30, 0x98, 0x3a, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x06, 0x53, 0x47, 0x03, 0xbc, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0x30, 0x75, 0x6c, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x50, 0xec, 0xd8, 0x1e, 0x5e, 0x67, 0xda, 0xf0, 0x17, 0xcd, 0x86, 0x1f, 0x6a, 0x36, 0x7c, 0x62, 0xb3, 0xe1, 0x6b, 0x9b, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x20, 0x67, 0xc3, 0x6b, 0x7a, 0x1b, 0x9e, 0xde, 0xd9, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x28, 0xb9, 0x71, 0x0f, 0x9f, 0x07, 0xae, 0x06, 0x03, 0xd3, 0x63, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0x60, 0x7a, 0x74, 0x10, 0x80, 0x4b, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0x60, 0x7a, 0x6c, 0xf8, 0x45, 0x69, 0x83, 0x32, 0x01, 0x77, 0x83, 0x82, 0x34, 0x76, 0x83, 0xf2, 0x39, 0x76, 0x83, 0x82, 0xa7, 0x77, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x41, 0xd1, 0xdb, 0x7b, 0x38, 0xc5, 0xaa, 0x35, 0x18, 0x1b, 0x21, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x63, 0x23, 0xa4, 0x01, 0xf8, 0x71, 0x0b, 0x4b, 0xb3, 0x2b, 0x03, 0x91, 0x2b, 0xb3, 0x03, 0x11, 0x63, 0x7b, 0x8b, 0x03, 0x79, 0x93, 0x23, 0x2b, 0x93, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0x63, 0x23, 0x64, 0xc3, 0x2f, 0x4a, 0x1b, 0x14, 0x24, 0xc8, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x8c, 0xf9, 0xa7, 0x36, 0x3c, 0xad, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x85, 0xa7, 0x58, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x30, 0xb0, 0x0e, 0x3a, 0xfc, 0x7e, 0x56, 0xab, 0xc1, 0x40, 0x14, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x18, 0x88, 0x22, 0x0d, 0xe0, 0x2f, 0x96, 0xe6, 0x16, 0x26, 0x97, 0x07, 0xc2, 0xf6, 0x76, 0x16, 0x26, 0x97, 0x46, 0x87, 0xd6, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0x06, 0xa2, 0xc8, 0x86, 0x5f, 0x94, 0x36, 0x7c, 0xb9, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0xf8, 0x77, 0xc3, 0x83, 0x37, 0x87, 0x87, 0x7e, 0x56, 0x83, 0xc1, 0x83, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x30, 0x78, 0x50, 0x1a, 0xc0, 0x73, 0xec, 0xcd, 0xcd, 0xae, 0x4c, 0x8e, 0x0e, 0x44, 0x8c, 0xed, 0x2d, 0x6e, 0x6e, 0xc3, 0xe3, 0x23, 0x1b, 0x0c, 0x1e, 0x94, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xe1, 0x4b, 0xf6, 0x83, 0x22, 0x2c, 0x76, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x1e, 0xbe, 0x9d, 0x6f, 0xc3, 0x5f, 0x34, 0x1b, 0x1e, 0xc0, 0xdf, 0xa0, 0x20, 0x98, 0xdd, 0xa0, 0x7c, 0x8b, 0xdd, 0xf0, 0xe0, 0xcd, 0x06, 0x05, 0x69, 0xec, 0x1a, 0x94, 0xd0, 0xb1, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x62, 0xc7, 0xf6, 0xa0, 0xd0, 0x06, 0x3e, 0x08, 0xd3, 0xb1, 0x35, 0xbc, 0xad, 0x73, 0x50, 0xbe, 0xc5, 0x6e, 0xf8, 0x20, 0x67, 0xc3, 0x5f, 0x65, 0x1b, 0x9e, 0xde, 0xd9, 0xf0, 0x41, 0xce, 0x86, 0x87, 0x13, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x01, 0xef, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0xe0, 0xcd, 0x86, 0x67, 0x00, 0x3b, 0xfc, 0x22, 0xb4, 0x41, 0x41, 0x1a, 0x3b, 0x38, 0xb9, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x78, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0xe1, 0xbd, 0xa0, 0xc3, 0x43, 0x3f, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x5e, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7c, 0xdc, 0x0d, 0xca, 0x75, 0xd9, 0xc3, 0x2f, 0x42, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0x41, 0x01, 0xfa, 0xbc, 0x86, 0xb7, 0x75, 0x06, 0x2f, 0xdb, 0xf0, 0x71, 0xd4, 0x41, 0x39, 0x01, 0x7d, 0x38, 0xc5, 0x5a, 0x83, 0xf1, 0xd1, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x30, 0x3e, 0x5a, 0x1a, 0xc0, 0x6b, 0x8e, 0x2e, 0x8d, 0x6e, 0x0c, 0x0d, 0x24, 0xcd, 0x8d, 0xee, 0x6d, 0xc3, 0xe3, 0x23, 0x1b, 0x8c, 0x8f, 0x96, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x8a, 0x1d, 0xdb, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x21, 0xa0, 0xbb, 0x41, 0xb1, 0x0d, 0x7c, 0x50, 0xf8, 0x03, 0xaf, 0xe1, 0xcf, 0xa5, 0xc1, 0xcb, 0xc3, 0x0f, 0x35, 0x6d, 0xf8, 0x8b, 0x66, 0xc3, 0x0f, 0x35, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0xfe, 0x04, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xb1, 0x32, 0xd3, 0x86, 0xa7, 0x75, 0xd6, 0xf0, 0x5e, 0xd0, 0x41, 0x39, 0x01, 0xbd, 0x86, 0xa7, 0x77, 0x0e, 0xca, 0x75, 0xd9, 0x83, 0xb2, 0xce, 0x73, 0x83, 0x82, 0x34, 0x76, 0x70, 0x73, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0x5a, 0x67, 0xc3, 0x2b, 0x40, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x80, 0x77, 0x83, 0x62, 0xa4, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xe2, 0xe3, 0x6e, 0x50, 0x8c, 0xd4, 0x6e, 0x50, 0x4e, 0x40, 0xd7, 0x6a, 0x30, 0xe0, 0x5c, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x06, 0x9c, 0x4b, 0x03, 0x78, 0xc9, 0xa5, 0x9d, 0xa1, 0xd1, 0xb5, 0xcc, 0xa1, 0xa5, 0x99, 0xd1, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0x01, 0xe7, 0xb2, 0xe1, 0x17, 0xa5, 0x0d, 0xca, 0x04, 0xdc, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xca, 0xe7, 0xd8, 0x0d, 0x0a, 0x9e, 0xde, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x0a, 0xac, 0x07, 0x45, 0x6f, 0xef, 0xe1, 0x14, 0x5b, 0x83, 0x31, 0x05, 0xb3, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x30, 0xa6, 0x60, 0x1a, 0xc0, 0x7b, 0x85, 0xae, 0x4e, 0xce, 0x0d, 0x24, 0xcd, 0x8d, 0xee, 0x0d, 0x84, 0x2d, 0x6d, 0x8e, 0x6e, 0xc3, 0xe3, 0x23, 0x1b, 0x8c, 0x29, 0x98, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0xb9, 0x14, 0xbb, 0xe1, 0x79, 0xa6, 0x35, 0xfc, 0xb9, 0x34, 0xf8, 0xb8, 0x41, 0x38, 0x8d, 0x6d, 0xf8, 0xa1, 0xe6, 0x20, 0x4c, 0xc7, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x58, 0x4b, 0x6b, 0x83, 0xb2, 0x66, 0xf9, 0xf0, 0x8b, 0xd0, 0xac, 0xc1, 0x58, 0x99, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x18, 0x2b, 0x33, 0x0d, 0xf0, 0x87, 0xcd, 0xcd, 0x95, 0xb5, 0x89, 0xb1, 0x95, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0xb1, 0x32, 0xb3, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0xb1, 0x63, 0xbb, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0xc3, 0x03, 0xf8, 0x87, 0x67, 0xea, 0x6a, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0x79, 0xd0, 0x86, 0x07, 0x6f, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x91, 0x89, 0xbb, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0xad, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0x4a, 0x26, 0xd4, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0xc9, 0x84, 0xda, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x34, 0xe0, 0xdd, 0xa0, 0xbc, 0xb9, 0x3e, 0x28, 0x62, 0x6e, 0x3b, 0x9c, 0x62, 0x0b, 0xbc, 0x59, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x19, 0xbc, 0x59, 0xd9, 0x00, 0x5e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x6f, 0x20, 0x62, 0x6c, 0x6f, 0x71, 0x03, 0xbe, 0x98, 0xdc, 0x98, 0xb8, 0x41, 0xb1, 0x63, 0x3b, 0xcb, 0x2c, 0xe0, 0xcd, 0xd5, 0xb5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xdd, 0xc9, 0x85, 0xc1, 0xc1, 0xa5, 0xb9, 0x9d, 0x81, 0x84, 0x91, 0x91, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x1d, 0x94, 0x43, 0xbf, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xde, 0x5c, 0x1a, 0xdd, 0x41, 0xf1, 0x26, 0x3d, 0x0b, 0x78, 0x6f, 0x75, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x1e, 0x6d, 0x6f, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xd0, 0xee, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xda, 0xbd, 0x87, 0x87, 0x7e, 0x5a, 0x0d, 0xca, 0xa0, 0xec, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xcb, 0xdc, 0xcc, 0xde, 0xe4, 0xc6, 0xca, 0x40, 0xda, 0xde, 0xc8, 0xea, 0xd8, 0xde, 0x36, 0xfc, 0xa2, 0xb4, 0xe1, 0x79, 0xa6, 0x83, 0x52, 0x11, 0x77, 0x16, 0xf0, 0xd2, 0xdc, 0xec, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xde, 0x34, 0x37, 0xbb, 0x32, 0xb9, 0xb9, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0x78, 0x9e, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x94, 0x66, 0xd9, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x66, 0xb2, 0x0f, 0x6f, 0xa1, 0x75, 0x38, 0xc5, 0x16, 0xf0, 0xe4, 0xde, 0xe4, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x0a, 0xc0, 0xe6, 0x0d, 0x0a, 0xc0, 0xd8, 0x83, 0xc2, 0x1f, 0x78, 0xc3, 0x5f, 0x34, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x23, 0xf7, 0xc6, 0xc6, 0x06, 0x22, 0x97, 0x76, 0x86, 0x46, 0x77, 0xf8, 0xa1, 0x66, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x72, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x33, 0xd9, 0x07, 0xa5, 0xba, 0xec, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe6, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xb4, 0x7b, 0x0f, 0xca, 0x71, 0xe7, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xcf, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x76, 0xb7, 0x1b, 0x9e, 0xde, 0xd9, 0xa0, 0x18, 0xa9, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x33, 0xd9, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x30, 0x4a, 0xfa, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf8, 0xb8, 0x6b, 0xf8, 0xc5, 0x65, 0xc3, 0x7b, 0x41, 0x07, 0xa5, 0x4f, 0xed, 0x41, 0x99, 0x2d, 0xbd, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0xd7, 0xf0, 0x8b, 0xcb, 0x86, 0xf7, 0x82, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x0f, 0x0a, 0x91, 0xda, 0x0e, 0xca, 0x6c, 0xe9, 0x5a, 0x01, 0x4f, 0xee, 0x8d, 0xdd, 0xf0, 0x8b, 0xd2, 0x06, 0xa5, 0xf0, 0xf6, 0x86, 0xbf, 0x68, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x43, 0xee, 0x8d, 0x8d, 0x0d, 0x84, 0xad, 0xcc, 0x8c, 0xee, 0xf0, 0x43, 0xcd, 0x86, 0x4f, 0x6c, 0x36, 0x28, 0xeb, 0xb8, 0x37, 0x7c, 0x62, 0xb3, 0x41, 0x61, 0xcc, 0xbd, 0xe1, 0x13, 0x9b, 0x0d, 0x4a, 0x8b, 0xee, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xcc, 0x64, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xca, 0xee, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x69, 0xc0, 0x7b, 0x50, 0x42, 0x77, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7c, 0xdc, 0x83, 0x22, 0xc5, 0xbb, 0x56, 0x83, 0x32, 0x27, 0x60, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0xcc, 0x09, 0x68, 0x00, 0x1f, 0xb2, 0x34, 0x33, 0xb3, 0x32, 0xb9, 0x32, 0xb7, 0xb1, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0x50, 0x20, 0x64, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x62, 0x26, 0x7b, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x83, 0x62, 0x69, 0xfb, 0xa0, 0x54, 0xdb, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x33, 0xd9, 0x87, 0x5f, 0x84, 0xea, 0x70, 0x8a, 0xb5, 0x80, 0xe7, 0x56, 0x46, 0x6f, 0xf8, 0x45, 0x69, 0xc3, 0xf3, 0x4c, 0x1b, 0xfe, 0xa2, 0x59, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x7e, 0xcc, 0xd8, 0xd2, 0xe0, 0x40, 0xc4, 0xf2, 0xe8, 0xca, 0x40, 0xca, 0xdc, 0xc8, 0xd2, 0xc2, 0xdc, 0xdc, 0xca, 0xe6, 0xe6, 0x0e, 0x3f, 0xd4, 0x0c, 0xf8, 0x74, 0x73, 0x67, 0xf2, 0x1a, 0x2e, 0xa9, 0x35, 0x1e, 0xb7, 0x86, 0xcf, 0x83, 0x0e, 0xca, 0xb5, 0xed, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xf1, 0xbb, 0xe1, 0x69, 0x9d, 0x35, 0xfc, 0x08, 0x73, 0x10, 0x62, 0xa7, 0x6d, 0x78, 0x2f, 0x68, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0xf1, 0xf0, 0x6c, 0xcf, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x05, 0x65, 0xf7, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x34, 0xe0, 0xdd, 0xf0, 0xf4, 0xce, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1e, 0xdc, 0x39, 0x3c, 0xbd, 0xb3, 0x86, 0xcf, 0x83, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x49, 0x34, 0xbb, 0xe1, 0xe9, 0x9d, 0x35, 0xfc, 0xe2, 0xb2, 0xe1, 0xc1, 0x9b, 0x0d, 0x8f, 0xc9, 0x74, 0x78, 0x0b, 0xad, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0x4a, 0xaa, 0xf1, 0x35, 0x7c, 0x1e, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa2, 0xd9, 0x0d, 0x4f, 0xef, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x8f, 0xc9, 0x1c, 0x14, 0xc4, 0xe3, 0x87, 0xb7, 0xd0, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0xd6, 0x60, 0x64, 0x2e, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0x05, 0x95, 0xeb, 0x00, 0xde, 0x2b, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0x64, 0x2e, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x50, 0x2e, 0xc5, 0x6e, 0x78, 0x9e, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x6e, 0x10, 0x4e, 0x63, 0x1b, 0x7e, 0xa8, 0x39, 0xfc, 0x50, 0xd3, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xb6, 0x95, 0x37, 0x3c, 0xad, 0xb3, 0x41, 0xa1, 0x53, 0xdd, 0xac, 0xc1, 0x98, 0x7f, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x18, 0xf3, 0x4f, 0x0d, 0xe0, 0x1b, 0x36, 0x37, 0x57, 0xd6, 0x26, 0xc6, 0x56, 0x06, 0x62, 0x96, 0x86, 0x57, 0x46, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0xc6, 0xfc, 0xd3, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0xe5, 0x52, 0xec, 0x41, 0xd1, 0x65, 0xbb, 0x41, 0x41, 0x1a, 0xbb, 0x41, 0xf9, 0x1c, 0xbb, 0x41, 0xc1, 0xd3, 0xbb, 0x41, 0x69, 0x6f, 0xb9, 0x86, 0x3f, 0x97, 0x06, 0x4f, 0x0f, 0xca, 0x2c, 0xdd, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0xc3, 0x0f, 0x35, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x3e, 0x0f, 0xda, 0xf0, 0xe0, 0xcd, 0x06, 0x45, 0xa7, 0xf1, 0x86, 0x3f, 0x81, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x56, 0xf0, 0xb4, 0x0d, 0x1f, 0x47, 0x6d, 0x78, 0x5b, 0xe7, 0xa0, 0xd8, 0x3d, 0x3f, 0x28, 0x92, 0x6e, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x69, 0xc0, 0xbb, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x6a, 0x7c, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0x41, 0x11, 0xe5, 0xbb, 0x41, 0x19, 0x7d, 0x5e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x22, 0x13, 0x77, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0xd4, 0xf8, 0x1e, 0x14, 0x50, 0xbe, 0x07, 0x85, 0x0f, 0x6a, 0x87, 0x53, 0x6c, 0x05, 0xe0, 0x65, 0xec, 0xcd, 0x8d, 0x2e, 0x2c, 0xcd, 0xad, 0x4c, 0xae, 0xc5, 0x4c, 0xee, 0xad, 0xad, 0xc5, 0xed, 0xad, 0xce, 0x5d, 0x06, 0xe0, 0x4d, 0xa6, 0x4d, 0x07, 0x64, 0xec, 0xcd, 0x8d, 0x2e, 0x2c, 0xcd, 0xad, 0x4c, 0x0e, 0xc4, 0x4c, 0xee, 0xad, 0x0d, 0xc4, 0xed, 0xad, 0xce, 0x6d, 0x81, 0x9f, 0xcb, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x9f, 0xcb, 0x1b, 0x80, 0x87, 0xb9, 0x32, 0x3a, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x10, 0xb9, 0xb0, 0x3b, 0x10, 0xb7, 0xb7, 0x3a, 0xb7, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x81, 0x9f, 0x4b, 0xdb, 0xf0, 0xb6, 0xce, 0xc0, 0xbb, 0xb1, 0xcd, 0x02, 0xdf, 0x96, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0xdf, 0x96, 0x37, 0x00, 0x0f, 0x6d, 0x61, 0x70, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x72, 0x61, 0x77, 0x20, 0x6e, 0x6f, 0x75, 0x6e, 0x1b, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0xdf, 0x96, 0x77, 0x50, 0x78, 0xa9, 0xaf, 0xc0, 0xb3, 0xe5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xc1, 0xb3, 0xe5, 0x0d, 0xc0, 0x07, 0x5b, 0xda, 0x1c, 0x1d, 0x88, 0x99, 0xdc, 0x5b, 0x1b, 0x88, 0x5c, 0xd8, 0x1d, 0x88, 0xdb, 0x5b, 0x9d, 0xdb, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0xc0, 0xb3, 0x95, 0x1d, 0x14, 0x5e, 0xea, 0x2b, 0xf0, 0x6e, 0xec, 0x80, 0x2f, 0x26, 0x37, 0xe6, 0xce, 0x32, 0x6b, 0x50, 0x80, 0x69, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x14, 0x60, 0x5a, 0x0d, 0xf0, 0xa4, 0xb9, 0x91, 0x95, 0xe1, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x5f, 0x2e, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0xa9, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x9f, 0x07, 0xad, 0xe1, 0x2d, 0xbb, 0x35, 0x3c, 0x71, 0xb7, 0xe1, 0x59, 0xbc, 0x83, 0x51, 0x22, 0x75, 0x10, 0x9e, 0xaa, 0x1b, 0x3e, 0xc8, 0xd9, 0xf0, 0x6d, 0xce, 0x06, 0xc5, 0x0f, 0xea, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0x39, 0x7d, 0x7a, 0x50, 0xe8, 0x0b, 0xcf, 0x02, 0x3f, 0x97, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0x3f, 0x97, 0x36, 0x80, 0xe7, 0xd8, 0x9b, 0xdb, 0x1c, 0x9d, 0x5c, 0xdd, 0x18, 0x1d, 0xc8, 0x5c, 0x19, 0xdd, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3c, 0x28, 0xe8, 0xd9, 0x37, 0x28, 0x25, 0xc4, 0xd7, 0x70, 0x49, 0x6d, 0x50, 0xd4, 0x88, 0xaf, 0xe1, 0xc1, 0x9d, 0x0d, 0x5f, 0xbf, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xf9, 0xf5, 0xc3, 0x43, 0x3f, 0x87, 0xa7, 0x75, 0xda, 0xf0, 0x6e, 0xcf, 0x02, 0xfe, 0x98, 0xdb, 0xdc, 0xb9, 0x06, 0x45, 0x24, 0x41, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xd3, 0xdc, 0xd6, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xe6, 0xca, 0xe8, 0xd6, 0x20, 0x80, 0xce, 0x36, 0xbc, 0xad, 0x33, 0x78, 0xba, 0x71, 0xe8, 0xf0, 0xe0, 0x4e, 0x07, 0x05, 0x45, 0x66, 0x87, 0x87, 0x7e, 0x66, 0x0d, 0xca, 0xac, 0xb5, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x32, 0x6b, 0xad, 0x83, 0xb2, 0xd8, 0x77, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x9f, 0x2b, 0x6d, 0x50, 0xc2, 0xb9, 0x1f, 0x94, 0xdd, 0xec, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0xb8, 0xa4, 0x36, 0x28, 0x6a, 0xc4, 0x37, 0x28, 0x85, 0xdd, 0xd7, 0xf0, 0x79, 0xd0, 0x86, 0xaf, 0x5f, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x85, 0xfc, 0xfa, 0xe1, 0x2d, 0xb4, 0xc3, 0x7b, 0x41, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0xa1, 0x6a, 0xc3, 0x57, 0x38, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xf0, 0x5e, 0xd0, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe9, 0x86, 0xb7, 0x75, 0x06, 0x4f, 0x0f, 0x0f, 0xee, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe9, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x0f, 0xee, 0x6c, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xf0, 0xe0, 0x4e, 0xad, 0xc0, 0xb3, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xc1, 0xb3, 0x95, 0x0d, 0xe0, 0x3b, 0xf6, 0xe6, 0x36, 0x47, 0x27, 0x57, 0x37, 0x46, 0x07, 0xc2, 0x96, 0x36, 0x47, 0xb7, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0x09, 0xe7, 0xbe, 0xe1, 0xeb, 0x97, 0x35, 0x3c, 0x28, 0xb9, 0x41, 0x00, 0xb2, 0x6d, 0x50, 0xe6, 0x5d, 0xce, 0x32, 0xcb, 0x86, 0x0f, 0x72, 0xd6, 0xa0, 0x10, 0x4c, 0x3d, 0x7c, 0xb0, 0xba, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xba, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x01, 0xa6, 0xd5, 0x41, 0x71, 0xc7, 0xbc, 0x86, 0xcf, 0x5d, 0x06, 0xa7, 0x0f, 0x02, 0x90, 0xad, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0x4f, 0xeb, 0x1c, 0x4e, 0xb1, 0x05, 0xbe, 0x2d, 0xdf, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0x4a, 0x52, 0xf5, 0x01, 0x3c, 0xc7, 0xde, 0xdc, 0xe6, 0xe8, 0xe4, 0xea, 0xc6, 0xe8, 0x40, 0xda, 0xc2, 0xe0, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0x41, 0xe8, 0x97, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x42, 0x53, 0xa9, 0xda, 0xa0, 0x94, 0x10, 0xdf, 0xa0, 0x30, 0x75, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x3b, 0xef, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xc5, 0xf2, 0xd6, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xda, 0xc2, 0xe0, 0xd6, 0x20, 0x80, 0xce, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0x50, 0x1a, 0xbf, 0xaf, 0x41, 0x00, 0x9d, 0x6d, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xa0, 0x34, 0x7e, 0xef, 0xa0, 0xa0, 0xc8, 0xec, 0xf0, 0xd0, 0xcf, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x87, 0x53, 0xac, 0x0e, 0xa7, 0x58, 0x0b, 0xe0, 0xe9, 0xf6, 0x56, 0xe7, 0xd6, 0xf2, 0x26, 0x47, 0x56, 0x26, 0x97, 0xe6, 0x76, 0x2e, 0x03, 0xf0, 0x20, 0x63, 0xa6, 0x03, 0xe2, 0xf6, 0x56, 0xe7, 0x06, 0xf2, 0x26, 0x47, 0x56, 0x26, 0x97, 0xe6, 0x76, 0xb6, 0x06, 0xc3, 0xcd, 0x6b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0xb8, 0x79, 0x35, 0x00, 0x1f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x72, 0x64, 0x65, 0xf2, 0x4a, 0x00, 0x7a, 0x3f, 0xc9, 0x91, 0x95, 0xc9, 0xcd, 0x81, 0x84, 0xd1, 0xbd, 0xb5, 0xcd, 0x81, 0x88, 0x95, 0x99, 0xbd, 0xc9, 0x95, 0x81, 0x8c, 0x95, 0xb1, 0xb1, 0xcd, 0xb1, 0x80, 0x84, 0xb9, 0x91, 0x81, 0x84, 0xd1, 0xbd, 0xb5, 0xcd, 0x81, 0xa4, 0xb9, 0x81, 0x84, 0xcd, 0x8d, 0x95, 0xb9, 0x91, 0xa5, 0xb9, 0x9d, 0x81, 0x30, 0x4d, 0x09, 0x81, 0xbc, 0xc9, 0x91, 0x95, 0xc9, 0xb9, 0xda, 0xf0, 0xf8, 0xc8, 0x06, 0xc3, 0xcd, 0x6b, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1e, 0x84, 0xe9, 0xd8, 0x06, 0x05, 0x78, 0x67, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0xc1, 0xea, 0x86, 0x0f, 0x72, 0x36, 0xfc, 0x55, 0xb6, 0x41, 0x91, 0xd3, 0xba, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xc5, 0x24, 0xe6, 0x86, 0x1f, 0x6a, 0x0e, 0x0f, 0xee, 0xac, 0xe1, 0x83, 0x9c, 0x35, 0x28, 0x26, 0x31, 0x37, 0xfc, 0x50, 0x73, 0xf8, 0x3c, 0x68, 0x0d, 0x3f, 0xc2, 0x1c, 0x84, 0x1d, 0xd0, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x1a, 0x2e, 0xa9, 0x0d, 0x4a, 0xe7, 0xf7, 0x0e, 0x4a, 0x38, 0xda, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x3c, 0xb8, 0xb3, 0xe1, 0x92, 0x5a, 0xe3, 0xf9, 0xe1, 0xc1, 0x9d, 0x0e, 0x0a, 0x6a, 0xda, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x0f, 0xee, 0x1c, 0x94, 0xe8, 0xf9, 0x07, 0x85, 0x18, 0xed, 0x06, 0xc5, 0x8e, 0xe6, 0x06, 0x45, 0x61, 0xfe, 0x06, 0x45, 0x4e, 0xeb, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe3, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x32, 0x71, 0x37, 0x28, 0x2a, 0xc5, 0x0f, 0x0f, 0xfd, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc9, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x64, 0xe2, 0x6e, 0x50, 0x54, 0x8a, 0x1f, 0xde, 0x42, 0x6b, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0xe7, 0xa0, 0x7c, 0x90, 0x5e, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0x83, 0x3b, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc4, 0xc7, 0x3d, 0x28, 0x7a, 0xf6, 0xd7, 0xf0, 0x79, 0xd0, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xf1, 0x71, 0x0f, 0xca, 0xc6, 0xfd, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xb3, 0x0d, 0x4f, 0xef, 0x1c, 0x94, 0xea, 0xb2, 0xb3, 0x06, 0x63, 0x41, 0x6c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0x2c, 0x88, 0x35, 0x80, 0x3f, 0x4a, 0xdb, 0x9b, 0x5c, 0x59, 0x0a, 0x48, 0x5b, 0xdd, 0x19, 0xc8, 0x9b, 0x1c, 0x59, 0x99, 0xbc, 0x12, 0x00, 0x8d, 0x3c, 0xc9, 0x91, 0x95, 0xc9, 0xcd, 0x81, 0xa4, 0xb9, 0x81, 0x84, 0xcd, 0x8d, 0x95, 0xb9, 0x91, 0xa5, 0xb9, 0x9d, 0x81, 0x90, 0xbd, 0xd5, 0x89, 0xb1, 0x95, 0x81, 0xac, 0xb4, 0xd5, 0x9d, 0x81, 0xa0, 0x85, 0xcd, 0xa1, 0x81, 0xbc, 0xc9, 0x91, 0x95, 0xc9, 0xb1, 0x80, 0x8c, 0xbd, 0xb1, 0xb1, 0xa5, 0xcd, 0xa5, 0xbd, 0xb9, 0xcd, 0x81, 0x98, 0x85, 0xb1, 0xb1, 0x81, 0x88, 0x85, 0x8d, 0xad, 0x81, 0xd0, 0xbd, 0x81, 0xac, 0x90, 0xbd, 0xc9, 0xb9, 0xda, 0xf0, 0xf8, 0xc8, 0x06, 0x63, 0x41, 0x6c, 0xc3, 0x2f, 0x4a, 0x1b, 0x94, 0xb1, 0xf8, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0xc1, 0xea, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x7c, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xd4, 0x92, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xf2, 0xfb, 0x1f, 0x1e, 0xfa, 0x69, 0x0d, 0x9f, 0xbb, 0x0c, 0x4e, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x92, 0xdf, 0x7f, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xf2, 0xfb, 0x1f, 0xde, 0x42, 0xab, 0x0d, 0x1f, 0xe4, 0x6c, 0x50, 0xe6, 0xee, 0xaf, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x58, 0x28, 0xeb, 0xf0, 0xfb, 0xd9, 0x41, 0x51, 0xc6, 0xbf, 0x1a, 0x8c, 0x99, 0xb1, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x31, 0x33, 0xd6, 0x00, 0x1e, 0x6d, 0x75, 0x67, 0x20, 0x6f, 0x72, 0x64, 0x65, 0xf2, 0x4a, 0x00, 0x74, 0xf0, 0x24, 0x47, 0x56, 0x26, 0x37, 0x07, 0x92, 0xe6, 0x06, 0x12, 0x36, 0x37, 0x56, 0xe6, 0x46, 0x96, 0xe6, 0x76, 0x06, 0xb2, 0xd2, 0x56, 0x77, 0x06, 0x82, 0x16, 0x36, 0x87, 0x06, 0xf2, 0x26, 0x47, 0x56, 0x26, 0xc7, 0x02, 0x32, 0xf6, 0xc6, 0xc6, 0x96, 0x36, 0x97, 0xf6, 0xe6, 0x36, 0x07, 0x62, 0x16, 0xc6, 0xc6, 0x06, 0x22, 0x16, 0x36, 0xb6, 0x06, 0x42, 0xf7, 0x06, 0xb2, 0x42, 0xf6, 0x26, 0xe7, 0x6a, 0xc3, 0xe3, 0x23, 0x1b, 0x8c, 0x99, 0xb1, 0x0d, 0xbf, 0x28, 0x6d, 0x50, 0xc6, 0xe2, 0x6f, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0xf1, 0xa0, 0xe0, 0xf8, 0x5f, 0xc3, 0xe7, 0x2e, 0x83, 0x93, 0x07, 0x05, 0xdf, 0x7f, 0x07, 0x05, 0xea, 0xff, 0x6a, 0x30, 0x16, 0xca, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xc6, 0x42, 0x59, 0x03, 0x78, 0x91, 0x95, 0xc1, 0xd1, 0xa1, 0x81, 0xbc, 0xc9, 0x91, 0x95, 0xc9, 0x2b, 0x01, 0xb4, 0x3f, 0xc9, 0x91, 0x95, 0xc9, 0xcd, 0x81, 0xa4, 0xb9, 0x81, 0x84, 0xcd, 0x8d, 0x95, 0xb9, 0x91, 0xa5, 0xb9, 0x9d, 0x81, 0xd0, 0xc9, 0x95, 0x95, 0x81, 0x90, 0x95, 0xc1, 0xd1, 0xa1, 0xb9, 0xda, 0xf0, 0xf8, 0xc8, 0x06, 0x63, 0xa1, 0x6c, 0xc3, 0x2f, 0x4a, 0x1b, 0x94, 0xb1, 0xf8, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0xc1, 0xea, 0x86, 0x0f, 0x72, 0x36, 0xfc, 0x55, 0xb6, 0x41, 0x91, 0xd3, 0xba, 0x41, 0xb1, 0xa3, 0xb9, 0x41, 0xb9, 0x94, 0xbf, 0x41, 0x69, 0x97, 0xbf, 0x41, 0xb1, 0xa3, 0xb9, 0x41, 0x51, 0x98, 0xbf, 0x41, 0x91, 0xd3, 0x7a, 0x78, 0xd4, 0xec, 0x70, 0x8a, 0xd5, 0x0a, 0xe0, 0x51, 0xe7, 0x96, 0x46, 0xd7, 0xc2, 0xf6, 0x76, 0x36, 0x2e, 0x03, 0xf8, 0xca, 0x84, 0xe9, 0x80, 0xd4, 0xb9, 0xa5, 0xd1, 0x81, 0xb0, 0xbd, 0x9d, 0xa5, 0x8d, 0x2d, 0xe0, 0x8b, 0xa5, 0x99, 0x99, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xe7, 0x38, 0x81, 0x06, 0x78, 0xc2, 0xe0, 0xe0, 0xd8, 0xf2, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0x5b, 0xc3, 0x9f, 0x4b, 0x83, 0x8b, 0x1b, 0x84, 0xd3, 0xd8, 0x06, 0x61, 0x3a, 0x76, 0x70, 0x18, 0x16, 0x68, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x5e, 0xd0, 0x1a, 0xde, 0xd6, 0x19, 0xbc, 0x3e, 0x3c, 0xb8, 0xd3, 0x0a, 0xf8, 0x6c, 0x69, 0x66, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xa9, 0x65, 0xa0, 0x01, 0xf4, 0xd9, 0xd2, 0xcc, 0xe8, 0x40, 0xda, 0xde, 0xd8, 0xc8, 0x40, 0x50, 0xcc, 0xda, 0xc2, 0xe0, 0x52, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x9a, 0xb1, 0xa5, 0xc1, 0xc1, 0x95, 0x91, 0x6d, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0xc3, 0xbf, 0xf3, 0x6b, 0x10, 0x94, 0x7b, 0xb5, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xef, 0x58, 0x9d, 0x9c, 0x5c, 0x5a, 0x19, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x0f, 0x0e, 0xc3, 0x02, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xbe, 0x58, 0x9a, 0x1b, 0xd9, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0xc9, 0x80, 0xe0, 0xa0, 0x74, 0x7a, 0x5e, 0x01, 0x1f, 0xad, 0xce, 0x8d, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x38, 0xc2, 0x10, 0x34, 0x80, 0xaf, 0x59, 0x9a, 0xdc, 0x1c, 0x1d, 0xc8, 0x9b, 0x19, 0x48, 0x9d, 0x5b, 0x1a, 0xdd, 0xdc, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x9b, 0x1c, 0xb9, 0x41, 0x38, 0x8d, 0x6d, 0x50, 0xa4, 0x62, 0x1e, 0x3e, 0x58, 0xdd, 0xe0, 0x84, 0x2b, 0xb0, 0xc1, 0xb9, 0x7c, 0xa0, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0xae, 0x41, 0xb0, 0x99, 0xae, 0x41, 0x00, 0x9d, 0x6d, 0x50, 0xf0, 0x61, 0x6e, 0x50, 0x48, 0x62, 0x1e, 0x9c, 0x34, 0x06, 0xd6, 0x20, 0x80, 0xce, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0xa0, 0x48, 0xc5, 0x3c, 0x7c, 0x1e, 0xb4, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0xc3, 0xe7, 0x41, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x0d, 0xef, 0x05, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0xf8, 0x3c, 0x68, 0xc3, 0xd3, 0x3a, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x33, 0x24, 0x41, 0x1b, 0x9c, 0x34, 0x06, 0x36, 0x38, 0x95, 0x14, 0x74, 0x78, 0xb9, 0x6c, 0x16, 0xf0, 0xcd, 0xd8, 0xd2, 0xe8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x63, 0x66, 0x41, 0x03, 0x78, 0xb5, 0x85, 0xad, 0x95, 0x81, 0x98, 0xa5, 0xb1, 0xd1, 0x95, 0xc9, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0xc2, 0x69, 0x6c, 0x83, 0x30, 0x1d, 0x3b, 0x7c, 0xb0, 0xba, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0x01, 0xde, 0xb9, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x77, 0x7b, 0x0e, 0xbf, 0x9f, 0x6d, 0x50, 0x50, 0x64, 0x6e, 0xf8, 0xc5, 0x65, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x9f, 0xbb, 0x0c, 0x5e, 0x1f, 0xde, 0x0b, 0x6a, 0x05, 0xfc, 0x31, 0xb6, 0x32, 0x73, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0x50, 0x65, 0xd0, 0x00, 0xef, 0xd8, 0x5b, 0x1b, 0xdc, 0xdb, 0x5c, 0xd9, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0x84, 0x2b, 0xb0, 0xc1, 0xb9, 0x7c, 0x60, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x6e, 0x10, 0x40, 0x67, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0x48, 0xc5, 0x5c, 0xc3, 0x1b, 0x77, 0x07, 0xc3, 0x6e, 0x77, 0xc3, 0x25, 0xb5, 0x86, 0x68, 0x56, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xa0, 0xa0, 0xc8, 0xdc, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0x79, 0xd0, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x77, 0x7b, 0x36, 0x3c, 0xbd, 0x73, 0x70, 0x02, 0x2c, 0x38, 0x9c, 0x62, 0x2d, 0xe0, 0x8b, 0xbd, 0xd1, 0xa1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xe7, 0xa2, 0x83, 0x06, 0xf0, 0x0c, 0x63, 0x63, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x09, 0x13, 0x7b, 0xb3, 0x2b, 0xdb, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0xe7, 0x4a, 0x07, 0x87, 0x57, 0x82, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0x6c, 0x50, 0x50, 0x64, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0xf8, 0x3c, 0x68, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x14, 0x99, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x7a, 0xc3, 0x2f, 0x2e, 0x07, 0x27, 0xc0, 0x82, 0x56, 0xc0, 0x1f, 0x63, 0x0b, 0x83, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x0e, 0xfc, 0x07, 0x0d, 0xf0, 0x8e, 0xbd, 0xb5, 0x89, 0xa5, 0xb9, 0x95, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x4e, 0xb8, 0x02, 0x1b, 0x9c, 0xcb, 0x07, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe3, 0x06, 0x01, 0x74, 0xb6, 0x41, 0x29, 0x21, 0xbe, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x17, 0xa5, 0x0d, 0x8a, 0x54, 0xcc, 0x83, 0xe3, 0xbb, 0x41, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xf0, 0x5e, 0xd0, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0xcf, 0x83, 0x36, 0x3c, 0xad, 0xb3, 0xe1, 0x17, 0x97, 0x0d, 0x0a, 0x8a, 0xcc, 0x35, 0x7c, 0xee, 0x32, 0x78, 0x7d, 0x70, 0x4e, 0x39, 0xe8, 0x70, 0x8a, 0x2d, 0xe0, 0xcf, 0xbd, 0xb5, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xe7, 0x71, 0x84, 0x06, 0xd0, 0x62, 0x4b, 0x33, 0xa3, 0x03, 0x41, 0x81, 0xab, 0x93, 0x2b, 0x4b, 0x6d, 0x50, 0x28, 0x77, 0x6e, 0x50, 0x00, 0xe3, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x9f, 0xbb, 0x0c, 0x5e, 0x1f, 0x9e, 0xd6, 0x69, 0x35, 0x38, 0x1b, 0x10, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x9c, 0x0d, 0x08, 0x1a, 0xe0, 0x09, 0x93, 0x3b, 0xab, 0x2b, 0xdb, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0xe7, 0x4a, 0x1b, 0x9c, 0x70, 0x05, 0x36, 0x28, 0xbf, 0x5d, 0xdb, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x28, 0x32, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf5, 0xc1, 0x89, 0x61, 0xa0, 0xc3, 0x29, 0xd6, 0x02, 0xbe, 0xd8, 0x9b, 0x1b, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x70, 0x66, 0x4f, 0x68, 0x80, 0x57, 0xae, 0x0c, 0x8e, 0x2d, 0x6c, 0xac, 0x6c, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x60, 0x44, 0xab, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0xce, 0xe5, 0x03, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x3e, 0x0f, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x04, 0x20, 0xdb, 0xe1, 0x69, 0x9d, 0x83, 0x53, 0x49, 0xc1, 0x0a, 0xf8, 0x64, 0x72, 0x6f, 0xf0, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xe9, 0x51, 0xa1, 0x01, 0xbe, 0x32, 0x37, 0xb6, 0xb4, 0x39, 0xba, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x4e, 0xb8, 0x02, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0x3d, 0x38, 0x69, 0x0c, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe9, 0x83, 0x82, 0x22, 0xb3, 0xc3, 0x29, 0xb6, 0x06, 0x43, 0x2e, 0x6e, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0xc8, 0xc5, 0x35, 0xc0, 0x47, 0x56, 0xd6, 0x16, 0xe6, 0x46, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0x86, 0x5c, 0xdc, 0x06, 0x85, 0x72, 0xe7, 0x06, 0x27, 0x5c, 0x81, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0x2c, 0xe0, 0xcf, 0x9d, 0x9d, 0xc9, 0x6b, 0xc8, 0x63, 0x6f, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0x60, 0xc8, 0xc5, 0x1d, 0x84, 0xa7, 0xea, 0xc1, 0x49, 0x63, 0x60, 0x35, 0x18, 0x55, 0x73, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xa3, 0x6a, 0xae, 0x01, 0xbe, 0x31, 0xb4, 0xb7, 0xb7, 0xb9, 0xb2, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x8e, 0x95, 0x07, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x3e, 0x0f, 0xda, 0xf0, 0xb4, 0xce, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0x36, 0xbc, 0x17, 0xb4, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x38, 0x69, 0x0c, 0x1c, 0x9c, 0x4a, 0x0a, 0xd6, 0xe0, 0x5c, 0xb8, 0xb0, 0x86, 0x3c, 0xf6, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0x46, 0xd5, 0xdc, 0x41, 0x78, 0xaa, 0x1e, 0x9e, 0xd6, 0x39, 0x9c, 0x62, 0x0b, 0xf8, 0x66, 0x61, 0x6c, 0xec, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xa9, 0x8f, 0xa1, 0x01, 0x5e, 0xb2, 0x32, 0xb3, 0xb0, 0x3a, 0x36, 0xba, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x09, 0x57, 0xe0, 0xa0, 0x1c, 0xc7, 0xdf, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x86, 0xf7, 0x82, 0x0e, 0x4e, 0x1a, 0x03, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x2d, 0x80, 0x87, 0x58, 0x1a, 0x5d, 0x0b, 0xdb, 0xdb, 0x59, 0xda, 0xb8, 0x0c, 0xe0, 0x29, 0x43, 0xa6, 0x03, 0x22, 0x96, 0x46, 0x07, 0xc2, 0xf6, 0x76, 0x96, 0x36, 0xb6, 0x06, 0xe3, 0x2a, 0x6f, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0x5c, 0xe5, 0x35, 0x80, 0x8f, 0x58, 0x9a, 0x5b, 0x98, 0x5c, 0x1e, 0x08, 0xde, 0x9b, 0xdc, 0x86, 0xc7, 0x47, 0x36, 0x18, 0x57, 0x79, 0x1b, 0x7e, 0x51, 0xda, 0xf0, 0xb7, 0xd2, 0x86, 0xbf, 0x68, 0x36, 0xfc, 0x50, 0xb3, 0xe1, 0x13, 0x9b, 0x35, 0xfc, 0xe2, 0xb2, 0xe1, 0x6b, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x38, 0x79, 0x78, 0xf0, 0xa6, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x8f, 0xb0, 0x6e, 0xf8, 0x36, 0x67, 0xc3, 0x6b, 0x7a, 0x6d, 0x50, 0xae, 0xcb, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x78, 0x70, 0x67, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf8, 0xb8, 0x07, 0xc5, 0x1d, 0xf3, 0x1a, 0x3e, 0x0f, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x3e, 0xee, 0x86, 0x07, 0x6f, 0x0e, 0x6f, 0xa1, 0x6d, 0xf8, 0x3d, 0x70, 0x0d, 0x8a, 0x7c, 0xd9, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x83, 0x72, 0x5d, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x1a, 0xf0, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x0f, 0xde, 0x1c, 0x7e, 0x11, 0x5a, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x22, 0x13, 0xf7, 0xa0, 0xb8, 0x63, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0xc1, 0xb9, 0xc5, 0xa1, 0x5a, 0x0d, 0x46, 0x49, 0xdf, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x28, 0xe9, 0x6b, 0x00, 0x0f, 0xb1, 0x34, 0xb7, 0x30, 0xb9, 0x3c, 0x90, 0x37, 0xb9, 0x0d, 0x8f, 0x8f, 0x6c, 0x30, 0x4a, 0xfa, 0x36, 0xfc, 0xa2, 0xb4, 0xe1, 0x6f, 0xa5, 0x0d, 0x9f, 0xd8, 0x6c, 0x70, 0x24, 0x6d, 0xd8, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0xfc, 0x50, 0xb3, 0xe1, 0x83, 0x9c, 0x0d, 0x0e, 0xd2, 0x0d, 0x1b, 0x94, 0xeb, 0xb2, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0x67, 0xfd, 0x86, 0x0d, 0x4e, 0x18, 0x0e, 0x1b, 0x7e, 0x0f, 0x5c, 0x83, 0x22, 0x5f, 0x76, 0x83, 0xa2, 0xd3, 0x78, 0xc3, 0x9f, 0x40, 0x1b, 0x94, 0xeb, 0xb2, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x94, 0x06, 0xbc, 0x1b, 0x9c, 0xde, 0x1c, 0x36, 0x3c, 0xc2, 0xba, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x78, 0x73, 0x70, 0x56, 0x74, 0x58, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0x39, 0x38, 0x84, 0x3a, 0xd4, 0x2c, 0xe0, 0xb9, 0xbd, 0xd1, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3a, 0xc4, 0xd2, 0xdc, 0xc2, 0xe4, 0xf2, 0x40, 0xdc, 0xde, 0xe8, 0x40, 0x50, 0xe6, 0xd2, 0xf4, 0xca, 0xc8, 0x52, 0x07, 0x85, 0xc9, 0xef, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xe3, 0x2a, 0xaf, 0x0d, 0x4f, 0xef, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xaf, 0xf9, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xed, 0xde, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x6e, 0x78, 0x2f, 0xe8, 0xa0, 0xf0, 0xce, 0xae, 0x0e, 0xa7, 0xd8, 0x1a, 0x0c, 0x4e, 0xc1, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xc1, 0x29, 0xd8, 0x00, 0x9e, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x73, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0x70, 0x0a, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0x32, 0x01, 0x77, 0x83, 0x82, 0x34, 0x76, 0x0d, 0xdf, 0xb7, 0x0f, 0x3e, 0x1e, 0x94, 0xcf, 0xb1, 0x6b, 0x50, 0x0c, 0xc8, 0x6e, 0x78, 0x70, 0x67, 0xc3, 0xd3, 0x3a, 0x1b, 0x7e, 0x71, 0xd9, 0xf0, 0xb4, 0xce, 0x41, 0x41, 0x3c, 0xbe, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x68, 0xf7, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0xdf, 0xd1, 0x1f, 0xfe, 0xe1, 0x69, 0x0d, 0x6f, 0xeb, 0x6c, 0x78, 0xeb, 0xfe, 0xf0, 0x0f, 0x4f, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0xf8, 0x77, 0xc3, 0x83, 0x37, 0x1b, 0x94, 0x8a, 0xb8, 0xb5, 0x1a, 0x8c, 0x1e, 0xc3, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xd1, 0x63, 0xd8, 0x00, 0x3e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0xf4, 0x18, 0x6e, 0xf8, 0x45, 0x69, 0xc3, 0xdf, 0x4a, 0x1b, 0x94, 0xf6, 0x96, 0x6b, 0xf8, 0x5c, 0xe9, 0xa0, 0x00, 0xdf, 0xde, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0xfc, 0x50, 0xb3, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x4a, 0x76, 0x70, 0xc6, 0x6e, 0xd8, 0xa0, 0x5c, 0x97, 0xdd, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x38, 0xeb, 0x37, 0x6c, 0x70, 0xc2, 0x70, 0xd8, 0xf0, 0x7b, 0xe0, 0x1a, 0x14, 0xf9, 0xb2, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0xfe, 0x04, 0xda, 0xa0, 0x5c, 0x97, 0xdd, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x34, 0xe0, 0xdd, 0xe0, 0xf4, 0xe6, 0xb0, 0xe1, 0x57, 0xb2, 0x83, 0x53, 0xeb, 0x43, 0xab, 0xc1, 0x50, 0x58, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x18, 0x0a, 0x8b, 0x0d, 0xf0, 0xc3, 0xbd, 0xc1, 0x8d, 0xbd, 0xd5, 0xb9, 0xd1, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0xa1, 0xb0, 0xb8, 0xe1, 0x17, 0xa5, 0x0d, 0x5f, 0x2e, 0x6d, 0xf8, 0x20, 0x67, 0xc3, 0xb7, 0x39, 0x1b, 0x1e, 0xbc, 0xd9, 0xa0, 0xb4, 0xb7, 0xdc, 0xa0, 0x20, 0xd2, 0xdd, 0xa0, 0x20, 0x8d, 0x1d, 0xbc, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0xd9, 0xa0, 0xcc, 0x62, 0x6e, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0xcc, 0xd2, 0x1d, 0xf0, 0xe9, 0xe6, 0xee, 0xe8, 0x0d, 0x86, 0xdd, 0xee, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0x98, 0xcc, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x3c, 0x78, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0x6d, 0x07, 0x05, 0xf1, 0xf8, 0xe1, 0xa1, 0x9f, 0x0d, 0x8a, 0x22, 0xde, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0f, 0xde, 0x1c, 0x1c, 0x42, 0x27, 0x36, 0x28, 0x86, 0x76, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x38, 0x9f, 0x4e, 0x6c, 0x78, 0xb7, 0x67, 0xc3, 0x6b, 0x3e, 0x1b, 0x1c, 0x42, 0x27, 0xea, 0x70, 0x8a, 0xad, 0xc1, 0x18, 0x6b, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x18, 0x63, 0x8d, 0x0d, 0xe0, 0x4b, 0x27, 0x17, 0x96, 0xc6, 0x96, 0xe6, 0x76, 0x06, 0xa2, 0x57, 0x26, 0xf7, 0x36, 0xb7, 0xe1, 0xf1, 0x91, 0x0d, 0xc6, 0x58, 0xe3, 0x86, 0x5f, 0x94, 0x36, 0x7c, 0xb9, 0xb4, 0xe1, 0x83, 0x9c, 0x0d, 0xdf, 0xe6, 0x6c, 0x78, 0xf0, 0x66, 0x83, 0xd2, 0xde, 0x72, 0x83, 0x72, 0xe1, 0x7c, 0xc3, 0x57, 0x38, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0x93, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x65, 0xf4, 0xf9, 0x41, 0x41, 0x3c, 0x7e, 0x78, 0xe8, 0x67, 0x83, 0x32, 0xfa, 0x7c, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0xd0, 0x3d, 0xef, 0x70, 0x8a, 0xb5, 0x02, 0xf0, 0xa0, 0x16, 0x26, 0xd7, 0x12, 0xe6, 0x46, 0xd6, 0xa2, 0x56, 0x77, 0xd6, 0xc2, 0xf6, 0x76, 0x96, 0x36, 0x2e, 0x03, 0xf0, 0x24, 0xa3, 0xa6, 0x03, 0xa2, 0x16, 0x26, 0x07, 0x12, 0xe6, 0x46, 0x06, 0xa2, 0x56, 0x77, 0x06, 0xc2, 0xf6, 0x76, 0x96, 0x36, 0xb6, 0xc0, 0xab, 0xd5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xc1, 0xab, 0xd5, 0x0d, 0xe0, 0xa3, 0x56, 0x77, 0x06, 0x52, 0xe6, 0x76, 0x96, 0xe6, 0x56, 0xb6, 0x41, 0x69, 0x6f, 0xb9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x0d, 0x8a, 0x5a, 0xdd, 0x59, 0x6a, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x81, 0xa3, 0xb7, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xe9, 0x4d, 0xbf, 0x41, 0x98, 0x8e, 0x6d, 0x50, 0x66, 0x5d, 0xd6, 0x06, 0x65, 0xde, 0xe5, 0x2c, 0xb3, 0x06, 0x23, 0xcd, 0x7d, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x28, 0xc7, 0x3a, 0x07, 0xf0, 0x0f, 0x23, 0x23, 0x03, 0x59, 0x2b, 0xcb, 0x6b, 0x99, 0x2b, 0xa3, 0x03, 0x81, 0x0b, 0x4b, 0x93, 0xdb, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0xe7, 0x4a, 0x1b, 0x14, 0xe0, 0x9d, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf1, 0x20, 0x4c, 0xc7, 0xda, 0xf0, 0xf5, 0xcb, 0x86, 0xa7, 0x75, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x27, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x0e, 0x0a, 0x37, 0xd1, 0xc3, 0x5b, 0x68, 0x1b, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xb2, 0x05, 0x75, 0x83, 0xb2, 0xa9, 0xfe, 0xf0, 0xd0, 0xcf, 0x86, 0xf7, 0x82, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x2d, 0xa8, 0x1b, 0x94, 0x4d, 0xef, 0x07, 0xa5, 0xba, 0xec, 0xe1, 0x17, 0xa1, 0x66, 0x0d, 0x0a, 0x7f, 0x83, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xc2, 0xdf, 0xa0, 0x01, 0xfc, 0xc9, 0xca, 0xd8, 0x40, 0xd6, 0xca, 0xf2, 0x5a, 0xe6, 0xca, 0xe8, 0x40, 0xe0, 0xc2, 0xd2, 0xe4, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x38, 0x56, 0x59, 0x6c, 0xf8, 0xfa, 0x65, 0xc3, 0xd3, 0x3a, 0x1b, 0x3e, 0xb1, 0xd9, 0xe0, 0xbc, 0x68, 0xb1, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0xd7, 0xa0, 0xf0, 0x37, 0xe8, 0xe0, 0x64, 0x6f, 0x71, 0xf8, 0x45, 0x68, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x22, 0x04, 0x7a, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0xc1, 0xe1, 0xf4, 0xe2, 0xe0, 0x98, 0x6c, 0x71, 0x78, 0x0b, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x73, 0x2d, 0x36, 0xbc, 0x17, 0x74, 0x50, 0x66, 0x4b, 0xaf, 0x06, 0x45, 0x24, 0xc1, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0x50, 0x08, 0x9b, 0x1e, 0x94, 0xc5, 0xbe, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0x71, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x1c, 0x3e, 0x08, 0xd3, 0xb1, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x7c, 0x10, 0xa6, 0x63, 0xb5, 0x41, 0x29, 0x21, 0xbe, 0x86, 0x4b, 0x6a, 0x83, 0xa2, 0x46, 0x7c, 0x0d, 0x9f, 0x07, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0x59, 0x83, 0x00, 0x3a, 0xdb, 0xa0, 0xe0, 0xc3, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0xc2, 0x74, 0x6c, 0x83, 0x22, 0x15, 0xb3, 0x83, 0xe3, 0x39, 0xc6, 0xe1, 0xc1, 0x9d, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0xb7, 0x75, 0x06, 0x77, 0x07, 0x8f, 0xeb, 0xa0, 0x64, 0xc6, 0xec, 0xf0, 0x5e, 0x50, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0xf5, 0xcb, 0x86, 0xa7, 0x75, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x1e, 0xb4, 0xe1, 0x69, 0x9d, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0x72, 0xfa, 0x74, 0x0d, 0x0f, 0xee, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x02, 0x04, 0x75, 0x83, 0x72, 0xea, 0xfa, 0xa0, 0xc8, 0xbb, 0x6e, 0xd6, 0xa0, 0x44, 0x68, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0xca, 0x4c, 0xd4, 0x01, 0xbc, 0xcf, 0xca, 0xe8, 0xe6, 0x40, 0xe6, 0xca, 0xe8, 0x40, 0xc4, 0xf2, 0x40, 0xd6, 0xca, 0xf2, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x28, 0xc0, 0x3b, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x1f, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x85, 0x9b, 0xe8, 0xc1, 0x31, 0xd9, 0xe2, 0xf0, 0x16, 0xda, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x7f, 0x78, 0x36, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7d, 0xf8, 0x87, 0x67, 0x35, 0x28, 0xb9, 0x1b, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x4a, 0xee, 0x86, 0x06, 0xf0, 0x2e, 0xc3, 0x4b, 0x9b, 0xa3, 0x2b, 0x73, 0x1b, 0x2b, 0x03, 0x19, 0x43, 0x2b, 0x1b, 0x5b, 0xdb, 0xa0, 0x50, 0xee, 0xdc, 0xe0, 0x58, 0x65, 0xb1, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x35, 0x28, 0xb9, 0x1b, 0xda, 0xa0, 0x6c, 0x7a, 0xdf, 0xe0, 0x68, 0x69, 0xd1, 0xe1, 0x17, 0xa1, 0xc3, 0x29, 0x56, 0x87, 0x53, 0x6c, 0x16, 0x78, 0xb5, 0x70, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0x78, 0xb5, 0xb0, 0x01, 0x7c, 0xd4, 0xc2, 0xe4, 0x40, 0xca, 0xdc, 0xce, 0xd2, 0xdc, 0xca, 0x36, 0x28, 0xed, 0x2d, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xa0, 0x41, 0x51, 0x0b, 0x93, 0x4b, 0x6d, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0x70, 0xf4, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0x37, 0x08, 0xd3, 0xb1, 0x0d, 0x0a, 0x7a, 0xf6, 0xda, 0xa0, 0xcc, 0xbb, 0x9c, 0x65, 0xd6, 0x90, 0x3e, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0xa4, 0x0f, 0x1b, 0x80, 0x8f, 0x30, 0x32, 0xb2, 0x39, 0x90, 0xb5, 0xb2, 0xbc, 0x16, 0xb6, 0xb4, 0x39, 0x3a, 0x10, 0xb8, 0xb0, 0x34, 0xb9, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x8e, 0x55, 0x16, 0x1b, 0x3e, 0xb1, 0xd9, 0xe0, 0xbc, 0x68, 0xb1, 0xe1, 0xdd, 0x9e, 0x0d, 0x8e, 0xb9, 0x16, 0x1b, 0xde, 0x0b, 0x5a, 0xc3, 0x2f, 0x2e, 0x07, 0x05, 0x20, 0x7f, 0xb3, 0x06, 0x25, 0x42, 0xcb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0x50, 0x66, 0xa2, 0x0e, 0xe0, 0x7f, 0x56, 0x46, 0x37, 0x07, 0xc2, 0x96, 0x36, 0x47, 0x07, 0x22, 0x96, 0x07, 0xb2, 0x56, 0x96, 0x77, 0x70, 0x84, 0xcf, 0x58, 0x0d, 0x86, 0xb0, 0xe7, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x10, 0xf6, 0x6c, 0x00, 0x2f, 0xb6, 0xb4, 0x39, 0xba, 0x34, 0xb3, 0x3c, 0x10, 0xb5, 0x30, 0xb9, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0x80, 0x6c, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0x08, 0x7b, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x2e, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0x59, 0x83, 0x00, 0x3a, 0xdb, 0xa0, 0xe0, 0xc3, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x0d, 0x9f, 0x2b, 0x6d, 0x70, 0xca, 0xc6, 0xd8, 0x20, 0x4c, 0xc7, 0x3a, 0x3c, 0xb8, 0xb3, 0xe1, 0x41, 0xc9, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x91, 0x21, 0x63, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0xe0, 0x88, 0x93, 0xd1, 0x41, 0xc9, 0x8c, 0xd9, 0x41, 0x41, 0x91, 0x39, 0xe0, 0x8b, 0xc9, 0x91, 0xd1, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x5e, 0xd0, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0x36, 0xbc, 0x17, 0xb4, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0x50, 0x94, 0x66, 0xae, 0xe1, 0xf3, 0xa0, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0xfa, 0x65, 0xc3, 0x7b, 0x41, 0x1b, 0x94, 0xf0, 0x98, 0x0b, 0x1e, 0x1f, 0x14, 0xda, 0x98, 0x6b, 0xb8, 0xa4, 0x56, 0x3c, 0x24, 0xa6, 0x3a, 0x28, 0x98, 0x3d, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xa7, 0x8b, 0x8c, 0x0d, 0xce, 0x60, 0x1d, 0x1d, 0x94, 0xcc, 0x98, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x70, 0x46, 0xef, 0xd8, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0xc1, 0x19, 0xbd, 0xa3, 0x3a, 0x9c, 0x62, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x1a, 0x3e, 0x39, 0x5f, 0x06, 0xf0, 0x95, 0x79, 0xd3, 0x01, 0x19, 0x7b, 0x73, 0xa3, 0x0b, 0x4b, 0x73, 0x2b, 0x93, 0x9b, 0x5b, 0xc0, 0x53, 0x0b, 0x93, 0x37, 0x3c, 0x9c, 0xbf, 0x06, 0x45, 0xeb, 0xc9, 0x00, 0x8f, 0x5d, 0x18, 0x5b, 0x5d, 0xd9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7e, 0x6d, 0x61, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x25, 0x62, 0xfd, 0x1a, 0xfe, 0x9d, 0x5f, 0x83, 0xa2, 0xf5, 0xa4, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x35, 0xfc, 0x3b, 0xbf, 0xc1, 0x79, 0xd6, 0xa3, 0x5a, 0x0d, 0x8a, 0xcb, 0xf7, 0x0d, 0x0f, 0xe7, 0x6f, 0x10, 0xaa, 0x08, 0x03, 0xbe, 0xd8, 0x98, 0x98, 0xbc, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xe0, 0xe8, 0x1d, 0x04, 0xb9, 0xc9, 0x86, 0x5f, 0x94, 0x36, 0x28, 0x88, 0x2e, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x28, 0x28, 0x32, 0x0f, 0x4f, 0xeb, 0x6c, 0x50, 0xe4, 0xb4, 0x6e, 0x50, 0x96, 0xbc, 0xaf, 0x41, 0x91, 0xba, 0xd0, 0x06, 0x65, 0xd3, 0xfb, 0xe1, 0xa1, 0x9f, 0xd5, 0xa0, 0xb8, 0xac, 0xdf, 0xf0, 0x70, 0xfe, 0x06, 0xe7, 0x55, 0x8f, 0x0d, 0xce, 0x44, 0x1f, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x04, 0x8e, 0xde, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0xa5, 0x37, 0xfd, 0x06, 0x27, 0x7e, 0x8f, 0x83, 0x03, 0xc7, 0x47, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x81, 0xa3, 0x77, 0x50, 0x36, 0xd3, 0x6f, 0xf8, 0x20, 0x67, 0x83, 0xf3, 0xde, 0xc7, 0x06, 0x45, 0x4e, 0xeb, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xa7, 0xd0, 0x8f, 0x83, 0x63, 0xb2, 0xc5, 0xe1, 0x14, 0x5b, 0xc0, 0x8b, 0x2b, 0xab, 0x37, 0x3c, 0x9c, 0xbf, 0x41, 0xa8, 0x22, 0x6c, 0x70, 0x26, 0xfa, 0xd8, 0xe0, 0xfc, 0xf4, 0xb1, 0xe1, 0x17, 0xa5, 0x0d, 0x0a, 0xa2, 0xcb, 0x0d, 0x1f, 0xe4, 0x6c, 0x70, 0xde, 0xfb, 0xd8, 0xa0, 0xc8, 0x69, 0xdd, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0x14, 0xfa, 0xb1, 0x86, 0xb7, 0x75, 0x06, 0x9e, 0xee, 0xed, 0xf0, 0xd0, 0xcf, 0x0a, 0x78, 0x6a, 0x75, 0xe7, 0x86, 0x87, 0xf3, 0x37, 0x38, 0xaf, 0x7a, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xd5, 0x16, 0x06, 0x07, 0xf2, 0x66, 0x06, 0x32, 0x57, 0x46, 0x37, 0xb7, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x22, 0xd6, 0x6f, 0x70, 0xe2, 0xf7, 0x58, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0x7c, 0x3f, 0x38, 0x70, 0x7c, 0x74, 0x38, 0xc5, 0x6a, 0x05, 0xf0, 0x9c, 0x2b, 0x93, 0x4b, 0x0b, 0x63, 0x4b, 0xd3, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0x97, 0x01, 0x78, 0x90, 0x81, 0xd3, 0x01, 0x99, 0x2b, 0x93, 0x4b, 0x0b, 0x63, 0x4b, 0xd3, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0x5b, 0x83, 0x61, 0xb1, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x30, 0x2c, 0x76, 0x1b, 0xf0, 0xe1, 0xc2, 0xc6, 0xd6, 0x36, 0x3c, 0x3e, 0xb2, 0xc1, 0xb0, 0xd8, 0xdd, 0xf0, 0x8b, 0xd2, 0x06, 0x05, 0x30, 0xfe, 0x86, 0xbf, 0x68, 0x36, 0xfc, 0x50, 0xb3, 0xe1, 0x13, 0x9b, 0x0d, 0x5f, 0x7c, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0xde, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x12, 0xb1, 0x7e, 0x83, 0x30, 0x1d, 0x3b, 0x28, 0x23, 0x6d, 0x0f, 0x0a, 0x8a, 0xcc, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0x23, 0x4e, 0xc6, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0x86, 0xcf, 0x95, 0x36, 0x3c, 0x42, 0xb7, 0xe1, 0x9d, 0xba, 0x35, 0xfc, 0xb9, 0x34, 0xb8, 0x7c, 0x70, 0xd0, 0x10, 0x69, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x71, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xb8, 0x89, 0x6e, 0x50, 0x36, 0xd5, 0x1f, 0x9c, 0x10, 0x28, 0x0e, 0x0f, 0xfd, 0x6c, 0x50, 0xc2, 0x63, 0x6e, 0xf8, 0x87, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x5c, 0x52, 0x1b, 0x14, 0x35, 0xe2, 0x6b, 0x70, 0x3e, 0x9d, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x2d, 0xa8, 0x07, 0x67, 0x5a, 0x91, 0xc3, 0xef, 0x67, 0x6d, 0xf8, 0x20, 0x67, 0x83, 0x72, 0x29, 0x7f, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc9, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x86, 0x95, 0x71, 0x87, 0x87, 0x7e, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0xe1, 0x31, 0x99, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0x50, 0xe4, 0xcb, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0x37, 0x3c, 0x78, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x8a, 0x7c, 0xd9, 0x0e, 0x4e, 0x08, 0x14, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0xb8, 0xa4, 0x36, 0x28, 0x6a, 0xc4, 0xd7, 0xf0, 0x79, 0xd0, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x41, 0xc0, 0xb2, 0x1e, 0xde, 0x42, 0x6b, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x72, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x20, 0xd4, 0x6f, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x72, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x68, 0xd1, 0x5f, 0xc3, 0xe7, 0x41, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x86, 0xf7, 0x82, 0x0e, 0x0e, 0x78, 0x23, 0x6b, 0x70, 0x3e, 0x9d, 0xd8, 0xf0, 0xb6, 0xce, 0xe0, 0xf2, 0x41, 0x91, 0x2f, 0xdb, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0x36, 0x08, 0x58, 0xd6, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x8e, 0x78, 0x23, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0xa0, 0x08, 0x81, 0xae, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x06, 0x62, 0xc3, 0x63, 0x32, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x80, 0x77, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xf0, 0xe6, 0x20, 0x58, 0x59, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x65, 0xbd, 0xed, 0x86, 0x07, 0x6f, 0x36, 0x38, 0x87, 0x8e, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x22, 0x04, 0xba, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xcb, 0x07, 0x45, 0x08, 0x74, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0x23, 0xac, 0x1b, 0x94, 0x4b, 0xf9, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x1b, 0x94, 0x59, 0xcc, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0xf8, 0x77, 0xc3, 0x83, 0x37, 0x1b, 0x1c, 0x9d, 0x34, 0xaa, 0x0d, 0x0e, 0x2e, 0x23, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x93, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x74, 0x34, 0x72, 0x70, 0x42, 0x2c, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x06, 0x01, 0xcb, 0x7a, 0x70, 0xc0, 0x1b, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x62, 0x20, 0x36, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x01, 0xef, 0x06, 0x07, 0x76, 0x92, 0x83, 0x53, 0xe8, 0x48, 0x07, 0x27, 0x04, 0x8a, 0x15, 0x78, 0x33, 0x77, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xde, 0xcc, 0xd8, 0xde, 0xc2, 0xe8, 0x58, 0x40, 0xd2, 0xdc, 0xcc, 0xd2, 0xdc, 0xd2, 0xe8, 0xf2, 0x58, 0x40, 0xde, 0xe4, 0x40, 0x9c, 0xc2, 0x9c, 0x95, 0x00, 0x3c, 0x99, 0xeb, 0x99, 0x4b, 0x3b, 0x73, 0x63, 0x01, 0x29, 0xeb, 0x29, 0xc3, 0x83, 0x7b, 0x73, 0x2b, 0x73, 0xa3, 0x63, 0x01, 0x09, 0xeb, 0x09, 0x93, 0x4b, 0xa3, 0x43, 0x6b, 0x2b, 0xa3, 0x4b, 0x1b, 0x03, 0x31, 0x7b, 0x93, 0x6b, 0x97, 0x00, 0x7f, 0x94, 0x96, 0x98, 0x14, 0xaf, 0x39, 0x10, 0x15, 0x90, 0x30, 0x10, 0x15, 0x10, 0x19, 0xaf, 0xb2, 0x36, 0x7c, 0xd4, 0xbe, 0x41, 0xd0, 0xfe, 0xac, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0x6e, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xe7, 0xc3, 0x07, 0xab, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x72, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0x78, 0xf8, 0xbc, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x87, 0xd7, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0x9e, 0x6e, 0x70, 0x5a, 0x38, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x70, 0x77, 0x83, 0x10, 0x7c, 0xa8, 0xd5, 0x60, 0x58, 0x19, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x0c, 0x2b, 0xe3, 0x06, 0xf0, 0x64, 0x2b, 0x73, 0x3b, 0xa3, 0x43, 0x6b, 0x29, 0x73, 0x1b, 0x7b, 0x23, 0x2b, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0xc3, 0xca, 0x78, 0xc3, 0x2f, 0x4a, 0x1b, 0xbe, 0x5c, 0xda, 0xf0, 0x17, 0xcd, 0x86, 0x5f, 0xe7, 0x36, 0x7c, 0x90, 0xb3, 0xe1, 0xdb, 0x9c, 0x0d, 0x4a, 0x21, 0xf2, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc5, 0x83, 0x32, 0x8b, 0x79, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x71, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xc5, 0xbf, 0x07, 0xe7, 0x16, 0x87, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x4f, 0xef, 0x1c, 0x7e, 0x11, 0x3a, 0xbc, 0x85, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0xca, 0x7a, 0xdb, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xed, 0xde, 0xc3, 0x2f, 0x42, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0c, 0xc4, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0xc4, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0x39, 0xfc, 0x22, 0xd4, 0xe1, 0x2d, 0xb4, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x69, 0xc0, 0xbb, 0xc1, 0x71, 0x1b, 0xe5, 0xf0, 0xd0, 0x4f, 0xad, 0xc0, 0x93, 0xb9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x4e, 0x56, 0x36, 0x96, 0xd6, 0x16, 0xc6, 0x06, 0x62, 0xc6, 0xf6, 0x16, 0x46, 0xc7, 0x02, 0x92, 0xe6, 0x66, 0x96, 0xe6, 0x96, 0x46, 0x97, 0xc7, 0x02, 0xf2, 0x26, 0x07, 0xe2, 0x14, 0xe6, 0xac, 0x04, 0xf0, 0x80, 0xd2, 0x12, 0x93, 0xe2, 0x35, 0x07, 0xa2, 0x02, 0x12, 0x06, 0xa2, 0x02, 0x12, 0x03, 0xe3, 0x55, 0xd6, 0x86, 0x8f, 0xda, 0x37, 0x08, 0xda, 0x9f, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0xc2, 0xc9, 0x83, 0xb3, 0xc2, 0xc9, 0xc1, 0x59, 0xea, 0xe4, 0x70, 0x8a, 0xd5, 0x02, 0x2f, 0xe7, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x0f, 0x5c, 0x98, 0xdc, 0x5c, 0x19, 0x19, 0x08, 0x59, 0xd9, 0x58, 0x5a, 0x5b, 0x18, 0x1b, 0x88, 0x19, 0xdb, 0x5b, 0x18, 0xdd, 0x86, 0x8f, 0xda, 0x37, 0x08, 0xda, 0x9f, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x39, 0x37, 0x65, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1e, 0x3e, 0x58, 0x5d, 0xc3, 0x9f, 0x4b, 0x83, 0x8b, 0x1b, 0x3e, 0x57, 0xda, 0xa0, 0x00, 0x8c, 0x5d, 0xc3, 0xe7, 0x4a, 0x1b, 0x14, 0xff, 0xc0, 0x07, 0x65, 0x56, 0xf4, 0x1a, 0xfe, 0x5c, 0x1a, 0xdc, 0x3c, 0x7c, 0xb0, 0xba, 0x86, 0x3f, 0x97, 0x06, 0x4f, 0x0f, 0x3f, 0xd4, 0xd4, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0xa8, 0x75, 0xb2, 0xc1, 0x01, 0x48, 0xa5, 0x83, 0xe3, 0xdc, 0xc9, 0xac, 0xc1, 0xb8, 0xbb, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x18, 0x77, 0xd7, 0x0d, 0xf0, 0xd5, 0xb9, 0xc1, 0x85, 0x8d, 0xad, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0x71, 0x77, 0xbd, 0xe1, 0x17, 0xa5, 0x0d, 0x5f, 0x2e, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x30, 0x1d, 0xdb, 0xf0, 0x89, 0xcd, 0x86, 0x2f, 0x3e, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x6f, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x89, 0x58, 0xbf, 0xe1, 0x87, 0x9a, 0x83, 0x43, 0x4c, 0xc7, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x41, 0xc9, 0x0d, 0x4e, 0x47, 0x22, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x1a, 0x3e, 0x57, 0xda, 0xf0, 0x08, 0xdd, 0x06, 0x47, 0x39, 0x8c, 0x35, 0xfc, 0xb9, 0x34, 0xb8, 0x7c, 0x70, 0x6e, 0x5a, 0x69, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0xc3, 0x83, 0x37, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x24, 0x9a, 0xdd, 0xf0, 0xe0, 0xcd, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0x5e, 0xd0, 0x41, 0x41, 0x3c, 0x7e, 0x78, 0xe8, 0x67, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc7, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x06, 0x88, 0x78, 0x1b, 0xfe, 0x8d, 0x3a, 0x3c, 0xf4, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0x1c, 0xb5, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0xc3, 0x3f, 0x3c, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xf0, 0x0f, 0xcf, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x04, 0x30, 0xb2, 0xe1, 0xbd, 0xa0, 0x0d, 0xce, 0x54, 0x2c, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf8, 0x78, 0x70, 0xce, 0x1e, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x3c, 0x78, 0xb3, 0x86, 0x5f, 0x5c, 0x36, 0xfc, 0x1b, 0x75, 0x50, 0x10, 0x8f, 0x1f, 0x1e, 0xfa, 0x59, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x7a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0xe7, 0x41, 0x87, 0xa7, 0x77, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xdc, 0xde, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xf0, 0x79, 0xd0, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0x82, 0x00, 0xed, 0xf0, 0x8b, 0xd0, 0x1a, 0x9c, 0x4f, 0x27, 0x36, 0xbc, 0xad, 0x33, 0xb8, 0x7c, 0x10, 0x04, 0x68, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x7e, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x04, 0x01, 0xda, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x1e, 0xdc, 0xae, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x10, 0xb0, 0xac, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0x9c, 0x87, 0x5a, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xc1, 0xa1, 0xb5, 0xa5, 0xd6, 0xf0, 0xb6, 0xce, 0x61, 0x05, 0x6f, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x41, 0xd9, 0x54, 0xbf, 0x86, 0xb7, 0x75, 0x06, 0x97, 0x0f, 0x0e, 0xad, 0x2d, 0x6d, 0x78, 0x2f, 0x68, 0x83, 0x43, 0x7e, 0x4b, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x4e, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x53, 0x06, 0xcb, 0xe1, 0x1b, 0xbf, 0x0d, 0xbf, 0xb8, 0x6c, 0x70, 0x52, 0x2e, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x21, 0x17, 0xd7, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x4c, 0x2a, 0x72, 0x70, 0x0a, 0x1d, 0xe9, 0xe0, 0x84, 0x40, 0xb1, 0x1a, 0x0c, 0x10, 0xf1, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x01, 0x22, 0xde, 0x00, 0x9e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2d, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0x80, 0x88, 0x6f, 0xf8, 0x45, 0x69, 0xc3, 0xdf, 0x4a, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0xeb, 0xdc, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe3, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x8b, 0xcb, 0x86, 0xaf, 0x6d, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xed, 0xc1, 0x71, 0x08, 0xa5, 0x0d, 0x5f, 0xe1, 0x6c, 0x78, 0x37, 0x6f, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x46, 0x71, 0xc3, 0xd3, 0x3b, 0x07, 0x27, 0x04, 0x8a, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0xc1, 0x9b, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x12, 0xcd, 0x6e, 0x78, 0xf0, 0x66, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x1d, 0x14, 0xbe, 0xba, 0x07, 0x05, 0xf1, 0xf8, 0xe1, 0x2d, 0xb4, 0x0d, 0x4f, 0xef, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x87, 0xcf, 0x03, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x78, 0x73, 0x78, 0x7a, 0x67, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0x4c, 0xe6, 0xa0, 0x70, 0x92, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x9c, 0xdc, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0x36, 0x3c, 0xad, 0xb3, 0xe1, 0x2d, 0xc1, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x2f, 0x37, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xa1, 0xdd, 0x7b, 0x70, 0x48, 0x47, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x44, 0xb3, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x94, 0xeb, 0xb2, 0x07, 0x87, 0x74, 0x94, 0xc3, 0x5b, 0x68, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x83, 0x23, 0x1c, 0xca, 0x41, 0x99, 0x2d, 0xbd, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x3c, 0x78, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0x0e, 0x4e, 0xa8, 0x30, 0x07, 0x65, 0xb6, 0xf4, 0xe1, 0x2d, 0xb4, 0x0e, 0xa7, 0x58, 0x2b, 0x80, 0xc7, 0x5c, 0x19, 0x5d, 0x0b, 0xdb, 0xdb, 0x59, 0xda, 0xb8, 0x0c, 0xe0, 0x29, 0x83, 0xa6, 0x03, 0x32, 0x57, 0x46, 0x07, 0xc2, 0xf6, 0x76, 0x96, 0x36, 0xb6, 0xc0, 0xa7, 0xb9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xc1, 0xa7, 0xb9, 0x0d, 0xe0, 0x33, 0x57, 0x46, 0x07, 0x52, 0xe6, 0x76, 0x96, 0xe6, 0x56, 0xb6, 0xe1, 0xf1, 0x91, 0x81, 0x4f, 0x73, 0x37, 0x28, 0xed, 0x2d, 0x37, 0x28, 0x88, 0x2e, 0x37, 0x28, 0xf3, 0x2e, 0x67, 0x99, 0x35, 0x18, 0x40, 0xe4, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x03, 0x88, 0xbc, 0x01, 0x7c, 0xd8, 0xde, 0xce, 0xd2, 0xc6, 0xc2, 0xd8, 0x40, 0x9e, 0xa4, 0x36, 0x3c, 0x3e, 0xb2, 0xc1, 0x00, 0x22, 0xdf, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0x9f, 0x4b, 0x83, 0x8b, 0x07, 0x07, 0xf8, 0x82, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xa0, 0x80, 0xcd, 0xdf, 0xf0, 0x2b, 0xd9, 0x06, 0x45, 0xdc, 0xeb, 0x41, 0x41, 0x67, 0xba, 0x02, 0x1e, 0x59, 0xda, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x70, 0x86, 0x93, 0x69, 0x00, 0xdf, 0x30, 0xbc, 0xb4, 0x39, 0x90, 0x37, 0x33, 0x90, 0x30, 0x90, 0x34, 0x37, 0x10, 0xb1, 0x0d, 0xbf, 0x28, 0x6d, 0x50, 0x80, 0x77, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x3e, 0x1e, 0x1e, 0x93, 0xd9, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0x0f, 0xca, 0x48, 0xdb, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0x6c, 0x50, 0x50, 0x64, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0x2f, 0xe8, 0xa0, 0x64, 0xc6, 0x5c, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x14, 0x99, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x7a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc3, 0x57, 0x12, 0x6d, 0x78, 0x7a, 0xe7, 0x20, 0x58, 0x59, 0xdb, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x8c, 0x99, 0xb1, 0x0e, 0x4a, 0xbf, 0xd7, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0x8a, 0x66, 0xcf, 0x35, 0xfc, 0xc3, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0xce, 0x58, 0x33, 0x1b, 0x9e, 0xde, 0x59, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x6c, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x14, 0xa5, 0x99, 0x6b, 0xf8, 0x87, 0x67, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xb1, 0x66, 0x36, 0x3c, 0xbd, 0xb3, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0xf8, 0x5a, 0x0d, 0x46, 0x9a, 0xfb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0x50, 0x8e, 0x75, 0x0e, 0xc0, 0x0b, 0x5c, 0x1d, 0xdd, 0x1c, 0x88, 0x18, 0x48, 0x9a, 0x1b, 0x48, 0x18, 0x0b, 0xc8, 0xdc, 0x9b, 0x1c, 0x5d, 0x19, 0xd9, 0x86, 0xc7, 0x47, 0x36, 0x18, 0x69, 0xee, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x14, 0xe0, 0x9d, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0xf5, 0xcb, 0x86, 0xa7, 0x75, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x3c, 0xb8, 0xb3, 0x41, 0xa9, 0xe4, 0xb9, 0xe1, 0x83, 0x9c, 0x0d, 0x0e, 0x22, 0x33, 0x1b, 0x9e, 0xd6, 0xd9, 0xf0, 0x41, 0xce, 0x06, 0x27, 0xbe, 0x99, 0x35, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x1f, 0x0f, 0x8a, 0x5a, 0xcf, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0x28, 0x26, 0x31, 0x37, 0x28, 0x52, 0x31, 0x0f, 0xff, 0xf0, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x8a, 0x6a, 0x6e, 0x50, 0x32, 0x63, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xdd, 0xc3, 0x3f, 0x3c, 0xad, 0xe1, 0x92, 0xda, 0xf0, 0xe0, 0xce, 0x1a, 0x0c, 0x52, 0xa9, 0xc3, 0xd3, 0x3b, 0x6d, 0xb8, 0xa4, 0x36, 0xfc, 0xc3, 0xb3, 0x06, 0x05, 0xcf, 0xe6, 0x86, 0x4b, 0x6a, 0xc3, 0x83, 0x3b, 0x6b, 0x30, 0x48, 0xa5, 0x36, 0xbc, 0xad, 0x33, 0xb8, 0x7c, 0xf8, 0x87, 0xa7, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x1f, 0x0f, 0x8a, 0xc6, 0xcc, 0x0d, 0x0a, 0x3e, 0xcc, 0x0d, 0x8e, 0xf4, 0x34, 0x1b, 0x3e, 0xc8, 0xd9, 0xe0, 0x20, 0x51, 0xb3, 0x86, 0x4b, 0x6a, 0xc3, 0x83, 0x3b, 0x6b, 0x50, 0xf0, 0x6c, 0x1e, 0x9e, 0xde, 0x69, 0xc3, 0x25, 0xb5, 0xe1, 0x1f, 0x9e, 0x35, 0x18, 0xa4, 0x52, 0x1b, 0x2e, 0xa9, 0x0d, 0x0f, 0xee, 0xac, 0x41, 0xc1, 0xb3, 0xb9, 0xe1, 0x6d, 0x9d, 0xc1, 0xd9, 0xc3, 0x3f, 0x3c, 0x35, 0x6b, 0x30, 0xd0, 0xea, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x06, 0x5a, 0x7d, 0x03, 0xf8, 0xa5, 0xb9, 0xd1, 0x95, 0xc9, 0xcd, 0x95, 0x8d, 0xd1, 0xa5, 0xbd, 0xb9, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0x81, 0x56, 0xbf, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x08, 0xa0, 0xb3, 0xc3, 0xd3, 0x3a, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0xf5, 0xcb, 0x86, 0xa7, 0x75, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x1e, 0xb4, 0x41, 0x41, 0x91, 0xb9, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x29, 0xaa, 0xb9, 0x41, 0xc9, 0x8c, 0xb9, 0x86, 0xb7, 0x75, 0x06, 0x77, 0x0f, 0x9f, 0x07, 0xb5, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0x07, 0x77, 0x0e, 0xef, 0x05, 0xad, 0xe1, 0xf3, 0xa0, 0xc3, 0xd3, 0x3a, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x70, 0xbe, 0xb7, 0x39, 0x28, 0x99, 0x31, 0xd7, 0x70, 0x49, 0x6d, 0x78, 0x70, 0x67, 0x0d, 0x06, 0xa9, 0xd4, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0xd1, 0xec, 0xb9, 0x86, 0xcf, 0x83, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7b, 0xf8, 0x3c, 0xa8, 0x35, 0x28, 0x78, 0x36, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0x8a, 0xd2, 0xcc, 0x35, 0x7c, 0x1e, 0xb4, 0xe1, 0x6d, 0x9d, 0xc1, 0xe5, 0xc3, 0xe7, 0x41, 0xb5, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x71, 0x70, 0x66, 0x83, 0xf3, 0xbd, 0xcd, 0x41, 0xc1, 0x97, 0xb9, 0x80, 0x3f, 0xe6, 0x86, 0x06, 0xaf, 0xe1, 0x92, 0x5a, 0x83, 0x71, 0xd9, 0xdf, 0x1a, 0x1e, 0xdc, 0xd9, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x28, 0x9a, 0x3d, 0xd7, 0xe0, 0xa0, 0x7b, 0x73, 0x50, 0x50, 0x64, 0xd6, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0x76, 0x70, 0x60, 0xbd, 0xd9, 0xe0, 0xc4, 0x7e, 0xb3, 0x86, 0x4b, 0x6a, 0x83, 0x63, 0xff, 0xcd, 0x1a, 0x1e, 0xdc, 0xd9, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x28, 0x4a, 0x33, 0xd7, 0xe0, 0x54, 0x78, 0x73, 0x50, 0x50, 0x64, 0xd6, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0x76, 0x70, 0xba, 0xbb, 0x39, 0x9c, 0x62, 0x6b, 0x30, 0x56, 0xf0, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xc6, 0x0a, 0x7e, 0x03, 0x78, 0xce, 0xc1, 0xb1, 0xa5, 0xd1, 0xcd, 0x81, 0x84, 0x81, 0x88, 0xe5, 0x81, 0x88, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0xb1, 0x82, 0xbf, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0x01, 0xde, 0xb9, 0xe1, 0xeb, 0x97, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0x67, 0x0f, 0x4f, 0xeb, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe5, 0xc3, 0xd3, 0x3a, 0x6d, 0x78, 0x50, 0x72, 0xc3, 0x1d, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x5f, 0xbf, 0x6c, 0x78, 0x5a, 0x67, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x1b, 0x94, 0x4a, 0x9e, 0x1b, 0x3e, 0xc8, 0xd9, 0xe0, 0x20, 0x32, 0xb3, 0xe1, 0x69, 0x9d, 0x0d, 0x1f, 0xe4, 0x6c, 0x70, 0xe2, 0x9b, 0x59, 0xc3, 0x27, 0x36, 0x1b, 0x9c, 0xb3, 0x69, 0x36, 0x28, 0xf8, 0x30, 0x37, 0x38, 0xd2, 0xd3, 0x1c, 0x9c, 0xad, 0x6a, 0x36, 0x7c, 0x62, 0xb3, 0xc1, 0x39, 0xb3, 0x66, 0x83, 0x82, 0x0f, 0x73, 0x83, 0x23, 0x3d, 0xcd, 0xc1, 0xf1, 0xbc, 0x66, 0x35, 0x18, 0x97, 0xfd, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xe3, 0xb2, 0xbf, 0x01, 0x9e, 0x3a, 0xb7, 0xb4, 0x37, 0xb7, 0x0d, 0x8f, 0x8f, 0x6c, 0x30, 0x2e, 0xfb, 0x37, 0x28, 0x94, 0x3b, 0x37, 0x38, 0xf7, 0xd9, 0x6c, 0xf8, 0x20, 0x67, 0xc3, 0x5f, 0x65, 0x1b, 0x9e, 0xd6, 0xd9, 0xf0, 0x15, 0xce, 0x86, 0xaf, 0x5f, 0x36, 0x3c, 0xad, 0xb3, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xf3, 0xa0, 0x0d, 0x4f, 0xeb, 0x6c, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0xc3, 0x7b, 0x41, 0x1b, 0x3e, 0xc8, 0xd9, 0xe0, 0x80, 0x73, 0xb3, 0x86, 0x4b, 0x6a, 0xc3, 0xe7, 0x41, 0x07, 0xc7, 0xad, 0x9b, 0x0d, 0x1f, 0xe4, 0x6c, 0x70, 0x04, 0xb7, 0x59, 0xc3, 0x07, 0x39, 0x1b, 0x1c, 0x99, 0x6f, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xf4, 0xd3, 0x3c, 0x38, 0x34, 0xe0, 0x1c, 0x1c, 0x58, 0x6f, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x28, 0x92, 0x32, 0x0f, 0x0e, 0x63, 0x38, 0x07, 0xa7, 0xbb, 0x9b, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x8e, 0x83, 0x33, 0x07, 0xa7, 0x77, 0x9b, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x38, 0x15, 0xde, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x9c, 0xef, 0x6e, 0xd6, 0xa0, 0x48, 0xca, 0x3c, 0x28, 0x28, 0x32, 0x3b, 0x28, 0x48, 0x33, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x38, 0xe8, 0xde, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x1c, 0x59, 0x6f, 0xd6, 0xa0, 0xf4, 0xd3, 0x3c, 0x28, 0x28, 0x32, 0x3b, 0x28, 0x98, 0x3d, 0x0f, 0xa7, 0xd8, 0x1a, 0x94, 0x39, 0x01, 0x1b, 0x9e, 0x27, 0xd9, 0xa0, 0x4c, 0x01, 0xdf, 0xf0, 0xf8, 0xc8, 0x06, 0x65, 0x4e, 0xc0, 0x06, 0x85, 0x72, 0xe7, 0x06, 0xe7, 0x3e, 0x9b, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0xfa, 0x65, 0xc3, 0xd3, 0x3a, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x3e, 0x0f, 0xda, 0xf0, 0xb4, 0xce, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe3, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x63, 0x05, 0xbf, 0x83, 0xd3, 0xbd, 0xcd, 0x06, 0x05, 0x1f, 0xe6, 0x06, 0x47, 0x7a, 0x9a, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc9, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x0f, 0xee, 0x1c, 0x9c, 0x22, 0x6c, 0x0e, 0x4e, 0x77, 0x37, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x97, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1e, 0xdc, 0x39, 0x38, 0x02, 0xd6, 0x1c, 0x1c, 0x58, 0x6f, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x35, 0x7c, 0xae, 0xb4, 0x06, 0xc1, 0x66, 0xba, 0x41, 0x08, 0x3e, 0x6c, 0x70, 0x44, 0xb4, 0xa9, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x8a, 0x7c, 0xd9, 0x0d, 0xca, 0x09, 0xe8, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x8a, 0x10, 0xe8, 0x0d, 0xca, 0x75, 0xd9, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x51, 0xcd, 0x35, 0xbc, 0xad, 0x33, 0xb8, 0x7b, 0x50, 0xe4, 0xcb, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xdd, 0x83, 0x22, 0x04, 0xba, 0x35, 0x5c, 0x52, 0x1b, 0x14, 0xf9, 0xb2, 0x6b, 0x50, 0xf0, 0x6c, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x50, 0xe4, 0xcb, 0x1e, 0x1c, 0xda, 0x48, 0x6a, 0xc3, 0x25, 0xb5, 0x41, 0x11, 0x02, 0xbd, 0x06, 0x83, 0x54, 0x6a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x22, 0x04, 0x7a, 0xc3, 0xdb, 0x3a, 0x83, 0xb3, 0x07, 0x45, 0x08, 0x74, 0x1d, 0x4e, 0xb1, 0x35, 0x28, 0x34, 0x04, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x0a, 0x0d, 0x81, 0x06, 0xf0, 0x62, 0x7b, 0x3b, 0x4b, 0x1b, 0x0b, 0x63, 0x03, 0x09, 0x72, 0x22, 0xda, 0xf0, 0xf8, 0xc8, 0x06, 0x85, 0x86, 0xc0, 0x06, 0x85, 0x72, 0xe7, 0x06, 0xc7, 0x0d, 0x99, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xa0, 0xc8, 0x69, 0xdd, 0xf0, 0x08, 0xeb, 0xc1, 0xf9, 0x4b, 0x66, 0x35, 0x28, 0x56, 0x05, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x8a, 0x55, 0x81, 0x06, 0xf0, 0x9a, 0x4b, 0xd3, 0x2b, 0x03, 0x79, 0x33, 0x03, 0x99, 0x2b, 0xa3, 0xdb, 0xf0, 0xa0, 0xe4, 0x06, 0x01, 0xc8, 0xb6, 0x41, 0xd9, 0x25, 0xbb, 0x41, 0xb1, 0x2a, 0xb0, 0xe1, 0x8e, 0x9a, 0x0d, 0xce, 0x83, 0x1d, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0x43, 0xcd, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0x36, 0x3c, 0x78, 0xb3, 0xe1, 0xe3, 0xa8, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0xe8, 0xa0, 0xa0, 0x33, 0x5d, 0x0d, 0x4a, 0xd1, 0x81, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xa0, 0x7c, 0xf9, 0x1c, 0xc0, 0x7b, 0xec, 0xcd, 0xcd, 0xae, 0x4c, 0x8e, 0x0e, 0x84, 0xee, 0x0d, 0x84, 0x2d, 0x6d, 0x8e, 0x6e, 0xc3, 0x83, 0x92, 0x1b, 0x04, 0x20, 0xdb, 0x86, 0xc7, 0x47, 0x36, 0x28, 0x45, 0x07, 0x36, 0x7c, 0x62, 0xb3, 0x41, 0x81, 0xfa, 0xb9, 0xc1, 0x79, 0xb0, 0x63, 0xc3, 0xd7, 0x2f, 0x1b, 0xde, 0x0b, 0x3a, 0x28, 0x73, 0x41, 0x0f, 0xa7, 0xd8, 0x1a, 0x14, 0x91, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0xe0, 0x10, 0x82, 0xb1, 0xe1, 0xf1, 0x91, 0x0d, 0x8a, 0x48, 0x82, 0x83, 0xa2, 0xe6, 0xf4, 0x70, 0x8a, 0xad, 0x41, 0xe1, 0x6f, 0xb0, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x1b, 0x1c, 0x47, 0x2e, 0x06, 0xf0, 0x16, 0x03, 0xb9, 0x4b, 0xa3, 0x43, 0x7b, 0xab, 0xa3, 0x03, 0x09, 0x73, 0xcb, 0x03, 0x09, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0x85, 0xbf, 0xc1, 0x06, 0x85, 0x72, 0xe7, 0x06, 0x05, 0x78, 0xe7, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0xfd, 0xb2, 0xe1, 0x69, 0x9d, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0x6c, 0x50, 0x50, 0x64, 0x6e, 0x50, 0xec, 0x68, 0x6e, 0x70, 0x10, 0x99, 0x59, 0xc3, 0x07, 0x39, 0x1b, 0x9c, 0xf8, 0x66, 0xd6, 0x70, 0x49, 0x6d, 0x78, 0x70, 0x67, 0x0d, 0x06, 0xa9, 0xd4, 0x41, 0x51, 0xeb, 0xd9, 0x86, 0x4b, 0x6a, 0xc3, 0x83, 0x3b, 0x6b, 0x50, 0xf0, 0x6c, 0x1e, 0x14, 0x8d, 0x99, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x1c, 0x95, 0x79, 0x0e, 0x0a, 0xe8, 0xd1, 0xd5, 0xa0, 0x48, 0x5d, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xa5, 0x1d, 0xeb, 0x86, 0x07, 0x25, 0x37, 0x08, 0x40, 0xb6, 0x0d, 0x8f, 0x8f, 0x6c, 0x50, 0xa4, 0x2e, 0x6c, 0x50, 0xda, 0x5b, 0xae, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0x7b, 0x70, 0x18, 0x16, 0x58, 0xc3, 0x9f, 0x4b, 0x83, 0xcb, 0x07, 0x87, 0x61, 0x81, 0x36, 0x38, 0x0f, 0x76, 0x6c, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xa0, 0xc8, 0x69, 0xdd, 0xf0, 0x08, 0xeb, 0x1a, 0x94, 0xf0, 0x98, 0x1b, 0x0c, 0x52, 0xa9, 0x0d, 0x8a, 0x9c, 0xd6, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x8e, 0x83, 0x33, 0x1b, 0x94, 0xcc, 0x98, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xfa, 0x60, 0x90, 0x4a, 0xb5, 0x86, 0xb7, 0x59, 0x37, 0xfc, 0x9b, 0xb3, 0x41, 0xc9, 0x8c, 0x79, 0x70, 0x56, 0x0d, 0x6a, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0a, 0x9e, 0xcd, 0x0d, 0x8a, 0x9c, 0xd6, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x8e, 0x83, 0x33, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xfa, 0xa0, 0xe0, 0xd9, 0x3c, 0x28, 0xf8, 0x32, 0xd7, 0xf0, 0x36, 0xeb, 0x86, 0x7f, 0x73, 0x36, 0x38, 0x2b, 0x08, 0x1d, 0x94, 0xcc, 0x98, 0xad, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xe9, 0xa7, 0xb9, 0x41, 0x91, 0xd3, 0xba, 0xe1, 0x11, 0xd6, 0x0d, 0x0a, 0x4a, 0xcd, 0x35, 0xbc, 0xcd, 0xba, 0xe1, 0xdf, 0x9c, 0x0d, 0x4a, 0x66, 0xcc, 0x83, 0x32, 0x5a, 0x73, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0xa2, 0xd9, 0x73, 0x0d, 0x06, 0xa9, 0xd4, 0x06, 0xc7, 0x70, 0x83, 0x83, 0x92, 0x19, 0xb3, 0xd6, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0x48, 0xca, 0xdc, 0xa0, 0xc8, 0x69, 0xdd, 0xf0, 0x08, 0xeb, 0x06, 0xc5, 0x02, 0xe7, 0x1a, 0xde, 0x66, 0xdd, 0xf0, 0x6f, 0xce, 0x06, 0x25, 0x33, 0xe6, 0x41, 0x99, 0xc3, 0xb9, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0x51, 0x9a, 0xb9, 0x06, 0x05, 0xcf, 0xe6, 0xc1, 0x79, 0x54, 0xa8, 0x5a, 0x0d, 0x4a, 0xee, 0x86, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xe0, 0x60, 0xa7, 0x31, 0x00, 0x3d, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x3a, 0x62, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x3a, 0x61, 0xbf, 0x0d, 0x8f, 0x8f, 0x6c, 0x50, 0x72, 0x37, 0x6c, 0x50, 0x28, 0x77, 0x6e, 0x50, 0x80, 0x77, 0x6e, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xe0, 0xef, 0x9d, 0x5c, 0x18, 0x1c, 0x48, 0x19, 0x1e, 0x9d, 0x5c, 0xd8, 0x18, 0x5d, 0x19, 0x19, 0x48, 0x1a, 0x5d, 0x59, 0x1b, 0x08, 0x5d, 0x1e, 0x5c, 0x19, 0x48, 0x9a, 0x1b, 0x48, 0x18, 0x48, 0x9d, 0x5b, 0x1a, 0x1d, 0x88, 0x58, 0xd9, 0x58, 0x58, 0xdd, 0x5c, 0x19, 0x88, 0x58, 0x9d, 0x1b, 0x5d, 0x9a, 0xdb, 0x19, 0x88, 0x59, 0x58, 0x1a, 0xdb, 0xbc, 0x12, 0x00, 0x1d, 0x24, 0x99, 0x81, 0xdc, 0x95, 0x81, 0xd4, 0xcd, 0x95, 0x91, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0xc8, 0x95, 0x85, 0xb1, 0x81, 0xa4, 0xd1, 0x95, 0xb5, 0x81, 0xd0, 0xe5, 0xc1, 0x95, 0x81, 0xbc, 0x99, 0x81, 0x7c, 0xfd, 0x78, 0xa1, 0x84, 0x81, 0xb8, 0xb9, 0x84, 0x81, 0x84, 0x84, 0xa4, 0x80, 0x84, 0xcd, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0xcc, 0x85, 0xb5, 0xc1, 0xb1, 0x95, 0x81, 0xd0, 0xe5, 0xc1, 0x95, 0xb1, 0x25, 0x00, 0x3a, 0xa0, 0x43, 0x2b, 0x73, 0x03, 0x41, 0x7b, 0x7b, 0x73, 0x03, 0xb9, 0x7b, 0xab, 0x63, 0x23, 0x03, 0x11, 0xab, 0x73, 0xa3, 0x03, 0x49, 0xa3, 0x03, 0xa1, 0x7b, 0x03, 0x19, 0x93, 0x2b, 0x0b, 0xa3, 0x2b, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x21, 0x2b, 0x33, 0x0b, 0xab, 0x63, 0xa3, 0x03, 0x99, 0x0b, 0x6b, 0x83, 0x63, 0x2b, 0x03, 0x31, 0x7b, 0x93, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x39, 0x0b, 0xa3, 0x2b, 0x73, 0xad, 0x04, 0xe0, 0x3f, 0xd2, 0xdb, 0x5d, 0x99, 0x5d, 0x99, 0x1c, 0x0b, 0x88, 0x58, 0x9d, 0x1b, 0x5d, 0x9a, 0xdb, 0x19, 0x08, 0x1d, 0x5a, 0x18, 0x1d, 0x48, 0x19, 0x1e, 0x9c, 0x5c, 0xd9, 0xdc, 0x5c, 0xda, 0x9b, 0x1b, 0x88, 0x59, 0x58, 0x1a, 0xdb, 0x1c, 0x48, 0x9a, 0x19, 0x88, 0x4e, 0x18, 0x48, 0xda, 0x1c, 0x88, 0x9f, 0x0b, 0x48, 0x92, 0x19, 0xc8, 0x5d, 0x19, 0xc8, 0x9d, 0x5c, 0x18, 0x1c, 0x48, 0x1a, 0xbd, 0x04, 0xa0, 0x7f, 0x9a, 0x1b, 0x48, 0x18, 0x48, 0x9d, 0x5b, 0x1a, 0x1d, 0x0b, 0x08, 0x1d, 0x5a, 0x19, 0x88, 0x58, 0x9d, 0x1b, 0x5d, 0x19, 0x19, 0x48, 0x9d, 0x5b, 0x1a, 0x1d, 0x08, 0xd9, 0x5b, 0xd9, 0x9c, 0xdb, 0x09, 0x1d, 0x48, 0x9a, 0xdb, 0x18, 0x5b, 0x1d, 0x59, 0x19, 0x08, 0x1d, 0x5a, 0x19, 0x88, 0x58, 0x9d, 0x1b, 0x5d, 0x19, 0x19, 0x48, 0x1a, 0x5d, 0x59, 0x1b, 0x08, 0x5d, 0x1e, 0x5c, 0x99, 0x6b, 0x25, 0x00, 0x5e, 0xa0, 0x42, 0x4b, 0x9b, 0x03, 0xb9, 0x0b, 0xcb, 0x03, 0xb9, 0x2b, 0x03, 0x19, 0x0b, 0x73, 0x03, 0x29, 0x73, 0x9b, 0xab, 0x93, 0x2b, 0x03, 0xa1, 0xcb, 0x83, 0x2b, 0x03, 0x99, 0x0b, 0x33, 0x2b, 0xa3, 0xcb, 0x03, 0x79, 0x33, 0x03, 0xd1, 0x11, 0x03, 0xb9, 0x4b, 0xa3, 0x43, 0x7b, 0xab, 0xa3, 0x03, 0x71, 0x2b, 0x2b, 0x23, 0x4b, 0x73, 0x3b, 0x03, 0xa1, 0x7b, 0x03, 0x81, 0x2b, 0x93, 0x33, 0x7b, 0x93, 0x6b, 0x97, 0x00, 0xda, 0xe9, 0xd0, 0xd2, 0xe6, 0x40, 0xcc, 0xc2, 0xd2, 0xd8, 0xd2, 0xdc, 0xce, 0x40, 0xc4, 0xea, 0xdc, 0xe8, 0x5c, 0x40, 0x92, 0xe8, 0x4e, 0xe6, 0x40, 0xc2, 0x40, 0xd0, 0xc2, 0xc6, 0xd6, 0x5c, 0x0d, 0xf8, 0x63, 0x6e, 0x64, 0xf4, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xa0, 0xc8, 0x3c, 0xbc, 0x85, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xb8, 0x78, 0x50, 0xf6, 0x60, 0x6e, 0x50, 0x4a, 0x88, 0xaf, 0xe1, 0x92, 0xda, 0xa0, 0xa8, 0x11, 0x5f, 0xc3, 0xe7, 0x41, 0x07, 0x47, 0x83, 0x82, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0x83, 0x02, 0x36, 0x7f, 0xc3, 0x07, 0x39, 0x1b, 0x1c, 0x44, 0x66, 0x36, 0x28, 0x72, 0x5a, 0x37, 0x7c, 0x90, 0xb3, 0xc1, 0x89, 0x6f, 0x66, 0x83, 0xa2, 0xd6, 0xf3, 0xa0, 0x68, 0xcc, 0x3c, 0x9c, 0x62, 0xad, 0xc1, 0xc8, 0x5c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xe5, 0x91, 0xeb, 0x86, 0xc7, 0x47, 0x36, 0x18, 0x99, 0x4b, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x94, 0xdf, 0xae, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x8f, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0x7c, 0x5f, 0x83, 0x00, 0x3a, 0xdb, 0xa0, 0xe0, 0xc3, 0xdc, 0xa0, 0x90, 0xc4, 0x3c, 0x28, 0xe2, 0x5e, 0x3b, 0x28, 0x28, 0x32, 0x37, 0x7c, 0x85, 0xb3, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x0d, 0x4f, 0xef, 0x6c, 0x50, 0xf4, 0xe9, 0x6e, 0xf8, 0x87, 0x67, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x41, 0xd9, 0xf4, 0x7e, 0xf8, 0x45, 0x68, 0x83, 0x22, 0xee, 0xb5, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0xff, 0xf0, 0xac, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0x50, 0x34, 0x7b, 0xae, 0xe1, 0x1f, 0x9e, 0xc3, 0xd3, 0x3b, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x14, 0xa5, 0x99, 0x07, 0x67, 0x6a, 0xa4, 0x59, 0x83, 0x31, 0xff, 0xb4, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x1b, 0x14, 0x11, 0xe6, 0x03, 0xf0, 0x20, 0x57, 0x46, 0x56, 0x37, 0x56, 0x06, 0x42, 0xf7, 0x06, 0x02, 0x27, 0xf7, 0x46, 0x56, 0x37, 0x46, 0xb7, 0xe1, 0xf1, 0x91, 0x0d, 0xc6, 0xfc, 0xd3, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0xfe, 0x5c, 0x1a, 0x5c, 0xdc, 0x20, 0x80, 0xce, 0x36, 0x28, 0x25, 0xc4, 0x37, 0x28, 0x28, 0x32, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x08, 0xd3, 0xb1, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x4b, 0x6a, 0x0d, 0xe3, 0x52, 0x1b, 0xbe, 0xc2, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x1a, 0x2e, 0xa9, 0x35, 0x8c, 0xcb, 0xe1, 0xf3, 0xa0, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0x8a, 0xd2, 0xcc, 0x35, 0x38, 0x0a, 0x27, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x14, 0xcd, 0x9e, 0x6b, 0x70, 0x14, 0x4e, 0xda, 0xf0, 0x6e, 0xcf, 0x86, 0xf7, 0x82, 0x36, 0x28, 0x99, 0x31, 0x37, 0x38, 0xf1, 0x26, 0x55, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x00, 0x1e, 0x6d, 0x61, 0x70, 0x2d, 0x6c, 0x6f, 0x67, 0x69, 0xe3, 0x32, 0x80, 0xa7, 0x4c, 0x9a, 0x0e, 0x48, 0x5b, 0x18, 0x1c, 0x08, 0xdb, 0xdb, 0x59, 0xda, 0xd8, 0x02, 0x2f, 0x96, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0x2f, 0x96, 0x37, 0x80, 0x4f, 0x5b, 0x18, 0x1c, 0x48, 0x99, 0xdb, 0x59, 0x9a, 0x5b, 0xd9, 0x86, 0xc7, 0x47, 0x06, 0x5e, 0x2c, 0xdf, 0xa0, 0xb4, 0xb7, 0x5c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x06, 0xa5, 0x2d, 0x0c, 0x2e, 0x75, 0x70, 0x7c, 0x00, 0xd9, 0xa0, 0xcc, 0xbb, 0x9c, 0x65, 0x16, 0xf0, 0xea, 0xdc, 0xde, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe3, 0xbc, 0x52, 0x03, 0x78, 0x9e, 0x95, 0xb9, 0x95, 0xc9, 0x85, 0xb1, 0x81, 0xd4, 0xb9, 0xa5, 0xbd, 0xb9, 0x6d, 0x50, 0x28, 0x77, 0x6e, 0x70, 0xee, 0xb3, 0xd9, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0x9f, 0x4b, 0x03, 0x5e, 0x5b, 0xd9, 0xb9, 0x41, 0x38, 0x8d, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0xc2, 0x74, 0xec, 0xe0, 0xa8, 0x98, 0x74, 0x10, 0xa6, 0x63, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0xf5, 0xcb, 0x86, 0xa7, 0x75, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x1e, 0xb4, 0xe1, 0x69, 0x9d, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0x6c, 0x78, 0x2f, 0x68, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x1c, 0xfd, 0x6d, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0x50, 0x68, 0x63, 0x2e, 0xe0, 0x8f, 0xb1, 0xb1, 0xcd, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa3, 0xf9, 0xd2, 0x1a, 0xfe, 0xa2, 0x59, 0x83, 0x00, 0x3a, 0xdb, 0xa0, 0xe0, 0xc3, 0xdc, 0xa0, 0x90, 0xc4, 0xdc, 0xf0, 0xb6, 0xce, 0xc1, 0x19, 0xbd, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x33, 0xd6, 0x52, 0x1b, 0x1c, 0xcd, 0x97, 0x36, 0x38, 0xcc, 0x30, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0xa3, 0xbf, 0x4d, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0x70, 0xbe, 0xbb, 0x39, 0x28, 0x98, 0x3d, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0x8e, 0xac, 0x37, 0x07, 0x05, 0x69, 0xe6, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0xa8, 0xe6, 0x06, 0x47, 0xf3, 0xa5, 0x0d, 0x0e, 0xd4, 0x4b, 0xad, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x71, 0x70, 0x66, 0x83, 0x03, 0xf5, 0xd2, 0x06, 0x47, 0xf3, 0xa5, 0x0e, 0x8e, 0xc8, 0x3a, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x07, 0x67, 0x0e, 0xce, 0xc9, 0x4c, 0x07, 0x07, 0x97, 0x9d, 0xd5, 0x60, 0x00, 0x91, 0x6f, 0x78, 0x9e, 0x64, 0x83, 0x63, 0x75, 0xcc, 0x86, 0xc7, 0x47, 0x36, 0x18, 0x40, 0xe4, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x1c, 0x37, 0x64, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0x83, 0x02, 0x36, 0x7f, 0xc3, 0xaf, 0x64, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x7b, 0x41, 0x1b, 0x1c, 0x66, 0x98, 0x3a, 0x28, 0xe8, 0x4c, 0x57, 0x83, 0x33, 0x9c, 0xcc, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0x70, 0x36, 0x94, 0x19, 0xc0, 0x33, 0x0c, 0x2f, 0x6d, 0x0e, 0xe4, 0xcd, 0x0c, 0x44, 0x0c, 0x64, 0xad, 0x2c, 0x6f, 0xc3, 0x2f, 0x4a, 0x1b, 0x14, 0xe0, 0x9d, 0x1b, 0x3e, 0xb1, 0xd9, 0xe0, 0xe0, 0x2c, 0xb3, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x68, 0x97, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x86, 0xf7, 0x82, 0x0e, 0x8e, 0xe6, 0x4b, 0x1b, 0x1c, 0x6f, 0x66, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x0e, 0xce, 0x6c, 0x78, 0x2f, 0xe8, 0xe0, 0x9c, 0xcf, 0x74, 0x70, 0xd0, 0x9c, 0x59, 0x0d, 0x46, 0x9a, 0xfb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0x50, 0x8e, 0x75, 0x0e, 0xc0, 0x4b, 0x18, 0x19, 0xd9, 0x1c, 0xc8, 0x5a, 0x59, 0x5e, 0x8b, 0x5d, 0x18, 0x5b, 0x5d, 0x19, 0x08, 0x5c, 0x58, 0x9a, 0xdc, 0x86, 0xc7, 0x47, 0x36, 0x18, 0x69, 0xee, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x1c, 0xab, 0x2c, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0xeb, 0x97, 0x0d, 0x4f, 0xeb, 0x6c, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0xc3, 0x73, 0x41, 0x07, 0x65, 0x99, 0xe7, 0x86, 0x0f, 0x72, 0x36, 0x38, 0x14, 0x39, 0xad, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0xe9, 0x9d, 0x83, 0xc3, 0x0c, 0xd3, 0x86, 0xa7, 0x75, 0x36, 0x5c, 0x52, 0x1b, 0x1e, 0xdc, 0x59, 0x83, 0x61, 0xb7, 0x7b, 0x70, 0x0a, 0x79, 0x6a, 0xc3, 0x07, 0x39, 0x1b, 0x9c, 0xd3, 0x9c, 0xd6, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x9c, 0x3c, 0x28, 0x6a, 0x3d, 0x37, 0x28, 0xf8, 0x30, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0xa0, 0x48, 0xc5, 0x3c, 0x28, 0xf2, 0x65, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x45, 0x35, 0x37, 0x38, 0x9a, 0x2f, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0xd3, 0x4d, 0x4f, 0x6b, 0xb8, 0xa4, 0x36, 0x3c, 0xb8, 0xb3, 0x06, 0x83, 0x54, 0xea, 0xa0, 0x5c, 0x97, 0x6d, 0xc3, 0x25, 0xb5, 0x41, 0x91, 0x2f, 0xbb, 0x06, 0x05, 0xcf, 0xe6, 0x86, 0x4b, 0x6a, 0xc3, 0x83, 0x3b, 0x6b, 0x30, 0x48, 0xa5, 0x0e, 0x0e, 0x6d, 0x24, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x38, 0x79, 0x50, 0x34, 0x66, 0x6e, 0x50, 0xf0, 0x61, 0x6e, 0x70, 0xb8, 0x7d, 0xda, 0xf0, 0x41, 0xce, 0x06, 0xe7, 0xea, 0xa7, 0x35, 0x5c, 0x52, 0x1b, 0x1e, 0xdc, 0x59, 0x83, 0x82, 0x67, 0xf3, 0xa0, 0x5c, 0x97, 0x6d, 0xc3, 0x25, 0xb5, 0x41, 0x91, 0x2f, 0xbb, 0x06, 0x83, 0x54, 0x6a, 0xc3, 0x25, 0xb5, 0xe1, 0xc1, 0x9d, 0x35, 0x28, 0x78, 0x36, 0x37, 0xbc, 0xad, 0x33, 0x38, 0x7b, 0x50, 0xe4, 0xcb, 0xd6, 0xac, 0xc1, 0x40, 0xab, 0xdf, 0xf0, 0x3c, 0xc9, 0x06, 0xe7, 0x19, 0x9b, 0x0d, 0x8f, 0x8f, 0x6c, 0x30, 0xd0, 0xea, 0x37, 0x28, 0x94, 0x3b, 0x37, 0x38, 0xf7, 0xd9, 0x6c, 0xf8, 0x0a, 0x67, 0xc3, 0xd7, 0x2f, 0x1b, 0x9e, 0xd6, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0x79, 0xd0, 0x06, 0x05, 0x45, 0xe6, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0x36, 0x28, 0x28, 0x32, 0x37, 0x7c, 0x90, 0xb3, 0xc1, 0x61, 0x97, 0x69, 0x0d, 0x1f, 0xe4, 0x6c, 0x70, 0x66, 0x5e, 0xda, 0xe0, 0x5c, 0xa9, 0xb3, 0xe1, 0x83, 0x9c, 0x0d, 0x8e, 0xe2, 0x4c, 0x07, 0xa7, 0xf5, 0x9b, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x8e, 0xe6, 0x4b, 0x07, 0x07, 0xea, 0xa5, 0x35, 0x5c, 0x52, 0x1b, 0x3e, 0x0f, 0x5a, 0x83, 0x41, 0x2a, 0x75, 0x70, 0xea, 0x63, 0x5a, 0x83, 0x82, 0x67, 0xf3, 0xe0, 0x88, 0xc9, 0xd4, 0x86, 0x0f, 0x72, 0x36, 0x38, 0x46, 0x34, 0xad, 0xc1, 0x89, 0xfd, 0x66, 0x0d, 0x97, 0xd4, 0x06, 0xc7, 0xfe, 0x9b, 0x35, 0x3c, 0xb8, 0x73, 0x70, 0x16, 0xda, 0xe9, 0xa0, 0x68, 0xcc, 0xdc, 0xe0, 0xc4, 0x7e, 0xb3, 0x86, 0x4b, 0x6a, 0x83, 0x63, 0xff, 0xcd, 0x1a, 0x1e, 0xdc, 0x39, 0x38, 0x0b, 0xee, 0x74, 0x50, 0xd4, 0x7a, 0x1e, 0x4e, 0xb1, 0x35, 0x18, 0x2b, 0xf8, 0x1b, 0x9e, 0x27, 0xd9, 0xe0, 0xfc, 0x8a, 0xb3, 0xe1, 0xf1, 0x91, 0x0d, 0xc6, 0x0a, 0xfe, 0x06, 0x85, 0x72, 0xe7, 0x06, 0x05, 0x78, 0xe7, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0xfd, 0xb2, 0xc1, 0x51, 0x21, 0x67, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x6b, 0xf8, 0xc5, 0xe5, 0xa0, 0x2c, 0xf3, 0xdc, 0xf0, 0x41, 0xce, 0x06, 0x87, 0x22, 0xa7, 0x0d, 0x4a, 0x1d, 0xfd, 0x0d, 0x1f, 0xe4, 0x6c, 0x70, 0x4e, 0x73, 0x5a, 0xc3, 0x27, 0x36, 0x1b, 0x9c, 0x38, 0x9f, 0x36, 0x28, 0xf8, 0x30, 0x37, 0x38, 0xdc, 0x3e, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0xa3, 0x34, 0xd4, 0x06, 0xe7, 0x19, 0xa8, 0x36, 0x7c, 0x62, 0xb3, 0xc1, 0x11, 0x0b, 0x6a, 0x83, 0x82, 0x0f, 0x73, 0x83, 0xc3, 0xed, 0xd3, 0x86, 0x5f, 0x5c, 0x36, 0x38, 0xf6, 0x42, 0x6d, 0x70, 0x68, 0x23, 0x69, 0x35, 0x18, 0x97, 0xfd, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0xc1, 0xb9, 0x3e, 0x67, 0x00, 0xbf, 0x3a, 0xb7, 0xb4, 0x37, 0x37, 0x16, 0x90, 0xb6, 0x32, 0xb9, 0xb3, 0xb2, 0x0d, 0x8f, 0x8f, 0x6c, 0x30, 0x2e, 0xfb, 0x37, 0x28, 0x94, 0x3b, 0x37, 0x38, 0xf7, 0xd9, 0x6c, 0xf8, 0x0a, 0x67, 0xc3, 0xd7, 0x2f, 0x1b, 0x9e, 0xd6, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0x79, 0xd0, 0x86, 0xa7, 0x75, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x3c, 0xb8, 0xb3, 0xe1, 0xbd, 0xa0, 0x0d, 0x1f, 0xe4, 0x6c, 0x70, 0x66, 0x5e, 0xda, 0xe0, 0x5c, 0xa9, 0x73, 0x70, 0x9e, 0x65, 0x3a, 0x9c, 0x62, 0x6b, 0x50, 0xe6, 0x04, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x32, 0x05, 0x7c, 0xc3, 0xe3, 0x23, 0x1b, 0x94, 0x39, 0x01, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x9c, 0xfb, 0x6c, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0xeb, 0x97, 0x0d, 0x4f, 0xeb, 0x6c, 0x50, 0xc2, 0x63, 0x6e, 0xf8, 0x3c, 0x68, 0xc3, 0xd3, 0x3a, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x8f, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xd0, 0xc2, 0x73, 0x70, 0x90, 0x66, 0xda, 0xa0, 0xe0, 0xc3, 0xdc, 0xe0, 0x48, 0x4f, 0xb3, 0xe1, 0x13, 0x9b, 0x0d, 0x4e, 0x5b, 0x3c, 0x1b, 0x3e, 0xb1, 0xd9, 0xe0, 0xf8, 0xc8, 0xb3, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x54, 0xe6, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0xc8, 0x97, 0xdd, 0xa0, 0x9c, 0x80, 0xde, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0x08, 0x81, 0xde, 0xa0, 0x5c, 0x97, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x14, 0xd5, 0xdc, 0xe0, 0xd4, 0xfe, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0x0e, 0x4a, 0x3d, 0x1d, 0x1c, 0xac, 0x7a, 0x0e, 0xa7, 0xd8, 0x1a, 0x14, 0xab, 0x02, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0xc1, 0x81, 0xcf, 0x67, 0x00, 0x3f, 0xb2, 0x32, 0x38, 0x3a, 0x34, 0x90, 0x37, 0x33, 0x90, 0xb6, 0x30, 0xb8, 0x83, 0xc3, 0xa9, 0xcf, 0x6a, 0x50, 0x8a, 0x0e, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0xe5, 0xcb, 0xe7, 0x00, 0x9e, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x66, 0x79, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x07, 0xc7, 0xa9, 0x9f, 0x15, 0xf0, 0xda, 0xc2, 0xe4, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x63, 0x75, 0x55, 0x03, 0xf0, 0x12, 0x46, 0x46, 0x06, 0x72, 0x97, 0x46, 0x87, 0x06, 0x62, 0x17, 0xc6, 0x96, 0x46, 0x16, 0x46, 0x97, 0xf6, 0xe6, 0xb6, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x28, 0xc0, 0x3b, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xd9, 0x84, 0x79, 0x70, 0x88, 0xe9, 0x68, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x3f, 0x3c, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x1c, 0x1c, 0x4e, 0x2f, 0x0e, 0x6f, 0xa1, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x02, 0x04, 0x75, 0xc3, 0x7b, 0x41, 0x07, 0x27, 0xc4, 0x92, 0x15, 0xf0, 0xce, 0xde, 0xe8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe3, 0xaa, 0x55, 0x03, 0xf0, 0xe0, 0x56, 0x56, 0x46, 0x06, 0x62, 0x17, 0xc6, 0x56, 0x57, 0x06, 0x22, 0x96, 0x07, 0xb2, 0x56, 0x96, 0xb7, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0x01, 0xde, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0xce, 0x86, 0x2e, 0x07, 0x87, 0x73, 0x8d, 0xc3, 0x29, 0xd6, 0x02, 0x9e, 0x5d, 0x18, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x70, 0x36, 0xb9, 0x6a, 0x00, 0x3f, 0xb6, 0xb4, 0x39, 0x3a, 0x90, 0x37, 0x33, 0x10, 0xbb, 0x30, 0xb6, 0xb9, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc5, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x1b, 0x1c, 0x37, 0x98, 0x3a, 0x28, 0x28, 0x32, 0x37, 0x7c, 0x85, 0xb3, 0xe1, 0xeb, 0x97, 0x0d, 0xef, 0x05, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0xc3, 0x7b, 0x41, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0x45, 0x69, 0xe6, 0x1a, 0x3e, 0x0f, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0x87, 0x19, 0xa6, 0x83, 0xf2, 0x26, 0xb4, 0x59, 0xc0, 0x93, 0x4b, 0x13, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x0e, 0x00, 0x58, 0x0d, 0xc0, 0x0b, 0x9d, 0x5c, 0x98, 0xdb, 0x9c, 0xd9, 0x9b, 0x5c, 0x1b, 0xc8, 0x0a, 0x08, 0x9c, 0xdc, 0x1b, 0x59, 0xdd, 0x18, 0xdd, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x00, 0xef, 0x5c, 0xc3, 0x9f, 0x4b, 0x83, 0x8f, 0x07, 0x45, 0xbd, 0x6b, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0xf5, 0xcb, 0x1a, 0x7e, 0x71, 0x39, 0x28, 0x9d, 0x9e, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x3c, 0xb8, 0xb3, 0x86, 0x5f, 0x5c, 0x36, 0xbc, 0x17, 0x74, 0x50, 0xd6, 0x79, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x4e, 0x6e, 0x78, 0xb7, 0x67, 0xc3, 0xd3, 0x3b, 0x1b, 0x94, 0xcc, 0x98, 0x87, 0xb7, 0xd0, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x28, 0xb4, 0x31, 0xd7, 0x70, 0x49, 0xad, 0xf1, 0xfc, 0xa0, 0xc8, 0x97, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x72, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x68, 0xf6, 0x5c, 0xc3, 0xe7, 0x41, 0x1b, 0x2e, 0xa9, 0x35, 0x0e, 0x1d, 0x14, 0xf9, 0xb2, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xb8, 0xb9, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0x50, 0x94, 0x66, 0xae, 0xe1, 0xf3, 0xa0, 0x0d, 0x97, 0xd4, 0x1a, 0x87, 0x0e, 0x8a, 0x10, 0xe8, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0x2e, 0xa9, 0x35, 0x0e, 0x1d, 0x04, 0x78, 0x50, 0x6b, 0xb8, 0xa4, 0x36, 0x3c, 0xb8, 0xb3, 0x06, 0x83, 0x54, 0x6a, 0xc3, 0x25, 0xb5, 0xc6, 0xf3, 0x83, 0x22, 0x04, 0xba, 0x35, 0x28, 0x78, 0x36, 0x37, 0x5c, 0x52, 0x6b, 0x3c, 0x3f, 0x08, 0xf0, 0xa0, 0xea, 0x70, 0x8a, 0xb5, 0x06, 0xe5, 0x75, 0xc9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x79, 0x5d, 0xd2, 0x00, 0xbc, 0x84, 0xc1, 0xc1, 0xb1, 0xe5, 0x81, 0x9c, 0x85, 0xd1, 0x95, 0x81, 0xd0, 0xbd, 0x81, 0xb8, 0xbd, 0x91, 0x95, 0xcd, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0xf2, 0xba, 0x64, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x6e, 0x10, 0x4e, 0x63, 0x1b, 0x9c, 0x07, 0x93, 0x0e, 0xc2, 0x74, 0x6c, 0xc3, 0x57, 0x38, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xa0, 0xa0, 0xc8, 0xdc, 0x70, 0x49, 0x6d, 0x78, 0x70, 0x67, 0x0d, 0x86, 0xdd, 0xee, 0x86, 0x4b, 0x6a, 0x83, 0x42, 0x1b, 0x73, 0x0d, 0x8e, 0x38, 0x19, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x5e, 0xd0, 0x06, 0x47, 0xf3, 0xa5, 0x83, 0x93, 0x69, 0x53, 0x1b, 0x1c, 0x18, 0x81, 0x0e, 0x4e, 0xa8, 0x40, 0xb3, 0x06, 0x85, 0x86, 0xc0, 0x86, 0xe7, 0x49, 0x36, 0x38, 0x6f, 0xf7, 0x6c, 0x78, 0x7c, 0x64, 0x83, 0x42, 0x43, 0x60, 0x83, 0x42, 0xb9, 0x73, 0x83, 0xe3, 0x86, 0xcc, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x83, 0xd5, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0x6c, 0x50, 0xe4, 0xb4, 0x6e, 0x78, 0x84, 0xf5, 0xe0, 0x84, 0xd9, 0xb4, 0x1a, 0x14, 0xad, 0x27, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x45, 0xeb, 0x49, 0x03, 0x78, 0xcd, 0x95, 0xd1, 0x81, 0xbc, 0x99, 0x81, 0xac, 0x95, 0xe5, 0xcd, 0x6d, 0x78, 0x50, 0x72, 0x83, 0x00, 0x64, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0x45, 0xeb, 0xc9, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe2, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x11, 0xdf, 0xd7, 0x20, 0x80, 0xce, 0x36, 0x28, 0xf8, 0x30, 0x37, 0x28, 0x24, 0x31, 0x0f, 0x8e, 0xe6, 0x4b, 0x1d, 0x14, 0x14, 0x99, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x7c, 0xfd, 0xb2, 0xe1, 0xbd, 0xa0, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0x6c, 0x78, 0x2f, 0x68, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x28, 0xcd, 0x5c, 0xc3, 0xe7, 0x41, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0x45, 0xb3, 0xe7, 0x1a, 0x3e, 0x0f, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x2d, 0xa8, 0x1b, 0x94, 0x4d, 0xef, 0x87, 0xb7, 0xd0, 0x0e, 0xce, 0xf9, 0x4c, 0xb5, 0x1a, 0x14, 0x91, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0xe0, 0x10, 0x82, 0xb1, 0xe1, 0xf1, 0x91, 0x0d, 0x8a, 0x48, 0x82, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0xce, 0x3e, 0x18, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0xb8, 0xa4, 0x36, 0x28, 0x6a, 0xc4, 0xd7, 0xf0, 0x79, 0xd0, 0x86, 0xbf, 0x68, 0x36, 0x28, 0x98, 0x3f, 0x0f, 0xef, 0x05, 0x75, 0x70, 0x62, 0xca, 0x38, 0x9c, 0x62, 0x6b, 0x50, 0x68, 0xaa, 0x6c, 0x78, 0x7c, 0x64, 0x83, 0x42, 0x53, 0x65, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x8a, 0xd6, 0x93, 0x83, 0x43, 0xfa, 0xd6, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0xac, 0x0a, 0x6c, 0x10, 0x4e, 0x63, 0x1b, 0x1c, 0x37, 0x98, 0x0e, 0x8e, 0x1b, 0x4c, 0x6d, 0xf8, 0xfa, 0x65, 0xc3, 0xd3, 0x3a, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0x20, 0x3c, 0x55, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0x71, 0xe0, 0xe3, 0xe0, 0x68, 0xbe, 0xb4, 0x86, 0x4b, 0x6a, 0xc3, 0x83, 0x3b, 0x2b, 0x78, 0x7c, 0x30, 0xec, 0x76, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x18, 0xab, 0x02, 0x1d, 0x9c, 0x4c, 0x9b, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x38, 0x38, 0xb3, 0xc1, 0xa1, 0xb5, 0xeb, 0xe0, 0x9c, 0xcf, 0x74, 0x70, 0xf4, 0x03, 0x3a, 0x9c, 0x62, 0x6b, 0x50, 0xf8, 0x1b, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0xc7, 0x91, 0x8b, 0x01, 0xbc, 0xc9, 0xca, 0xd8, 0xca, 0xe8, 0xca, 0x40, 0xc2, 0xe8, 0x40, 0xd6, 0xca, 0xf2, 0x40, 0xc4, 0x36, 0x3c, 0x3e, 0xb2, 0x41, 0xe1, 0x6f, 0xb0, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0x01, 0xde, 0xb9, 0xe1, 0x2b, 0x9c, 0x0d, 0x5f, 0xbf, 0x6c, 0x78, 0x5a, 0x67, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x14, 0x3b, 0x9a, 0x1b, 0x1c, 0x8a, 0x9c, 0xd6, 0xf0, 0x41, 0xce, 0x06, 0xe7, 0x34, 0xa7, 0x83, 0xa3, 0x1f, 0xd0, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x51, 0x99, 0x67, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xd2, 0x4f, 0x73, 0x83, 0x52, 0x36, 0x73, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x22, 0x29, 0x73, 0x83, 0x52, 0xdb, 0x73, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x52, 0x54, 0x73, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x14, 0xdf, 0x9a, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0xa0, 0x38, 0xe2, 0xec, 0xa0, 0xd8, 0x23, 0x5d, 0x0d, 0x4a, 0x84, 0x96, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xa0, 0xcc, 0x44, 0x1d, 0x80, 0x87, 0x33, 0xb9, 0x30, 0x31, 0x10, 0xbb, 0x30, 0xb6, 0xba, 0x32, 0x10, 0xb1, 0x3c, 0x90, 0xb5, 0xb2, 0xbc, 0x0d, 0x8f, 0x8f, 0x6c, 0x50, 0x22, 0xb4, 0x6c, 0x50, 0x28, 0x77, 0x6e, 0x50, 0x80, 0x77, 0x6e, 0x50, 0x4a, 0x88, 0xaf, 0xe1, 0x92, 0xda, 0xa0, 0xa8, 0x11, 0x5f, 0xc3, 0xe7, 0x41, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x90, 0xbe, 0x75, 0x78, 0x2f, 0xa8, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xb2, 0x09, 0xf3, 0xe0, 0x24, 0x79, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x1f, 0xe4, 0x6c, 0x70, 0x28, 0x72, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xf3, 0x38, 0x42, 0x07, 0x27, 0xd3, 0xa6, 0x0d, 0x1f, 0xe4, 0x6c, 0x70, 0x4e, 0x73, 0x3a, 0x38, 0xf6, 0x1e, 0xad, 0x06, 0x45, 0xea, 0xc2, 0x86, 0xe7, 0x49, 0x36, 0x28, 0xed, 0x58, 0x37, 0x3c, 0x28, 0xb9, 0x41, 0x00, 0xb2, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0x22, 0x75, 0x61, 0x83, 0xd2, 0xde, 0x72, 0x83, 0xd3, 0x44, 0xd0, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0x60, 0x75, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x1b, 0x14, 0x39, 0xad, 0x1b, 0x1e, 0x61, 0x5d, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x41, 0x2a, 0xb5, 0x41, 0x91, 0xd3, 0xba, 0xe1, 0x11, 0xd6, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x71, 0x70, 0x66, 0x83, 0xa3, 0xf9, 0xd2, 0xc1, 0x49, 0x35, 0x68, 0x0d, 0x6f, 0xb3, 0x6e, 0xf8, 0x37, 0x67, 0x83, 0xa3, 0xf9, 0xd2, 0xc1, 0x59, 0x35, 0xa8, 0x35, 0x28, 0xe1, 0x31, 0x37, 0x28, 0x78, 0x36, 0x37, 0x28, 0x72, 0x5a, 0x37, 0x3c, 0xc2, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x0e, 0xce, 0x6c, 0x70, 0x56, 0x10, 0x3a, 0x38, 0xe7, 0x33, 0xad, 0xe1, 0x6d, 0xd6, 0x0d, 0xff, 0xe6, 0x6c, 0x70, 0x56, 0x10, 0x3a, 0x38, 0x9a, 0x2f, 0xb5, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xa5, 0x9f, 0xe6, 0x06, 0x45, 0x4e, 0xeb, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0xa8, 0xe6, 0x06, 0x47, 0xf3, 0xa5, 0x0d, 0x0e, 0x3c, 0x5f, 0xad, 0xe1, 0x6d, 0xd6, 0x0d, 0xff, 0xe6, 0x6c, 0x70, 0x34, 0x5f, 0x3a, 0x38, 0xf0, 0x7c, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0x50, 0x34, 0x7b, 0xae, 0xc1, 0x20, 0x95, 0xda, 0xe0, 0x18, 0x6e, 0x70, 0x70, 0x34, 0x5f, 0xaa, 0x35, 0x28, 0xe1, 0x31, 0x37, 0x28, 0x92, 0x32, 0x37, 0x28, 0x72, 0x5a, 0x37, 0x3c, 0xc2, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x45, 0x35, 0x37, 0x38, 0x9a, 0x2f, 0x1d, 0x9c, 0x9c, 0xbe, 0xd6, 0xf0, 0x36, 0xeb, 0x86, 0x7f, 0x73, 0x36, 0x38, 0x9a, 0x2f, 0x1d, 0x9c, 0x9d, 0xbe, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x28, 0x4a, 0x33, 0xd7, 0xa0, 0xe0, 0xd9, 0x3c, 0x38, 0xb4, 0x88, 0x55, 0xab, 0x41, 0xc9, 0xdd, 0xb0, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x1b, 0x1c, 0xec, 0x34, 0x06, 0xe0, 0x65, 0xad, 0x2c, 0x0f, 0xa4, 0x0c, 0x2f, 0x6d, 0x8e, 0xae, 0xcc, 0x6d, 0xac, 0x0c, 0x64, 0x0c, 0xad, 0x6c, 0x6c, 0x6d, 0xc3, 0xe3, 0x23, 0x1b, 0x94, 0xdc, 0x0d, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x14, 0xe0, 0x9d, 0x1b, 0xde, 0x66, 0xdd, 0xf0, 0x6f, 0xce, 0x06, 0x05, 0x45, 0xe6, 0xc1, 0xd1, 0xd2, 0xe2, 0x70, 0x8a, 0xb5, 0x80, 0x77, 0x56, 0x47, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x9c, 0x98, 0xc6, 0x1a, 0x80, 0x07, 0xb3, 0x30, 0x36, 0x36, 0x10, 0xbb, 0x30, 0xb6, 0xba, 0x32, 0x10, 0xb1, 0x3c, 0x90, 0xb5, 0xb2, 0xbc, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x8e, 0x55, 0x16, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0xfa, 0x18, 0xda, 0xe0, 0x68, 0x69, 0x71, 0xf8, 0x45, 0xe8, 0x70, 0x8a, 0xad, 0xc1, 0xc8, 0x5c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xe5, 0x91, 0xeb, 0x86, 0xc7, 0x47, 0x36, 0x18, 0x99, 0x4b, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x94, 0xdf, 0xae, 0x1b, 0xbe, 0xc2, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x86, 0xa7, 0x75, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0x77, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x0f, 0x8e, 0xe6, 0x4b, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0xf8, 0xe0, 0x8c, 0xd9, 0xd4, 0x41, 0xb1, 0xf9, 0x7a, 0x70, 0xf0, 0x47, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0xec, 0x70, 0x8a, 0xb5, 0x00, 0xfe, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2d, 0x68, 0x61, 0x63, 0x6b, 0xf3, 0x32, 0x00, 0x3f, 0x32, 0x6e, 0x3a, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x68, 0x61, 0x63, 0x6b, 0x73, 0x0b, 0xf8, 0x66, 0x6f, 0x72, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x5e, 0x70, 0x61, 0x69, 0x72, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf0, 0x20, 0x94, 0xc6, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0x41, 0x28, 0x8d, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x9b, 0xfe, 0xf0, 0xfb, 0xd9, 0x0a, 0xf8, 0x63, 0x6f, 0x72, 0xeb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xde, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x33, 0x45, 0xd9, 0x06, 0x87, 0x97, 0xb2, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0xb1, 0x37, 0x39, 0xb6, 0x83, 0xd2, 0xe9, 0x79, 0x05, 0x7c, 0xba, 0xb2, 0x39, 0x7a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0xbf, 0x2c, 0xae, 0x2e, 0x8c, 0x2d, 0x8d, 0x2e, 0x6f, 0xc3, 0x2f, 0x4a, 0x1b, 0x14, 0xa9, 0x98, 0x1b, 0xfe, 0xcd, 0xd9, 0xe0, 0xf8, 0x6e, 0x70, 0x70, 0xce, 0x4c, 0x3a, 0x9c, 0x62, 0x0b, 0xf8, 0x63, 0x75, 0x72, 0xf9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xa9, 0xc5, 0xac, 0x01, 0x7c, 0xc6, 0xea, 0xe4, 0xe4, 0xf2, 0x40, 0xd8, 0xca, 0xcc, 0xe8, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x20, 0x9c, 0xc6, 0x36, 0x28, 0x52, 0x31, 0x0f, 0xc2, 0x74, 0xec, 0xa0, 0x1c, 0xc7, 0xdf, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0x9f, 0x4b, 0x83, 0x8f, 0x1b, 0x04, 0xd0, 0xd9, 0x86, 0xb7, 0x75, 0x36, 0x24, 0xa6, 0x36, 0x8c, 0xcb, 0xe1, 0xc1, 0x9d, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0x5a, 0xe7, 0xf0, 0x5c, 0xd0, 0x0a, 0xf8, 0x73, 0x61, 0x6d, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x7f, 0x1a, 0x59, 0x99, 0x1b, 0x5d, 0x1a, 0x5d, 0xde, 0x06, 0x85, 0x72, 0xe7, 0x06, 0x61, 0x3a, 0xb6, 0xe1, 0x92, 0x5a, 0x43, 0xea, 0xa0, 0x56, 0xc0, 0x0f, 0x33, 0xa3, 0x93, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x81, 0x0b, 0x4b, 0x93, 0x03, 0x09, 0x33, 0xa3, 0x2b, 0x93, 0xdb, 0xa0, 0x50, 0xee, 0xdc, 0xe0, 0x4c, 0x51, 0xb6, 0x41, 0xa1, 0xdc, 0xb9, 0xc1, 0xe1, 0xa5, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xde, 0xf4, 0x07, 0xa5, 0xd3, 0xf3, 0xac, 0x41, 0x10, 0x2e, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x9f, 0x95, 0xd1, 0x81, 0xd0, 0x85, 0xa5, 0xb1, 0x6d, 0x50, 0x28, 0x77, 0x6e, 0x50, 0xa4, 0x62, 0x6e, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x6c, 0x48, 0x4c, 0x75, 0x70, 0xce, 0x4c, 0x9a, 0x05, 0x7c, 0xb6, 0xb2, 0x30, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x1f, 0xae, 0x8e, 0x0e, 0x04, 0xad, 0x2c, 0x8c, 0x6c, 0x83, 0x42, 0xb9, 0x73, 0x83, 0x30, 0x1d, 0xdb, 0xa0, 0x50, 0xee, 0xdc, 0x20, 0x4c, 0xc7, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x4b, 0x6a, 0x0d, 0x7b, 0x85, 0xb5, 0xc1, 0x69, 0xe5, 0xac, 0x15, 0xf0, 0xc7, 0xea, 0xe4, 0xe4, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x63, 0x19, 0x5a, 0x03, 0x78, 0x8d, 0xd5, 0xc9, 0xc9, 0xe5, 0x81, 0xc8, 0xa5, 0x9d, 0xa1, 0xd1, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x4e, 0x7e, 0x66, 0x07, 0x27, 0x32, 0x8b, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0xfc, 0xb9, 0x34, 0xb8, 0xb8, 0x41, 0x00, 0x9d, 0x6d, 0x78, 0x5b, 0x67, 0x43, 0x62, 0x6a, 0x43, 0x34, 0x0f, 0x0f, 0xee, 0x1c, 0x1c, 0xb4, 0xcd, 0x0e, 0xa7, 0x58, 0xb5, 0x06, 0x87, 0xe0, 0xb2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x43, 0x70, 0x59, 0x03, 0xf0, 0x30, 0xf6, 0xd6, 0x06, 0xf7, 0x36, 0x57, 0x06, 0x22, 0x16, 0x36, 0xb6, 0x76, 0x17, 0x26, 0x47, 0x36, 0xb7, 0x41, 0xa1, 0xdc, 0xb9, 0xc1, 0x59, 0xb3, 0x6c, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x43, 0x97, 0x07, 0x57, 0x06, 0x32, 0x86, 0x56, 0x36, 0xb6, 0xb6, 0xe1, 0x41, 0xc9, 0x0d, 0x77, 0xd4, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0x5a, 0x67, 0x0d, 0xef, 0xf6, 0x1c, 0xde, 0x42, 0x6b, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x6e, 0x10, 0x40, 0x67, 0x1b, 0xde, 0xd6, 0xd9, 0x90, 0x98, 0xda, 0x90, 0x3a, 0x38, 0x7c, 0x1e, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x4f, 0xeb, 0xac, 0xe1, 0xdd, 0x9e, 0xc3, 0x73, 0x41, 0xad, 0x80, 0xcf, 0x16, 0x46, 0x57, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0xc3, 0xd5, 0xd1, 0x81, 0xd0, 0x85, 0xa5, 0xb1, 0x6d, 0x50, 0x28, 0x77, 0x6e, 0x10, 0xa6, 0x63, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x84, 0xe9, 0xd8, 0x86, 0x5f, 0x5c, 0x36, 0x38, 0xad, 0x9c, 0x6d, 0x70, 0x6e, 0x42, 0x6b, 0xd6, 0x20, 0x58, 0x96, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf8, 0xcf, 0xca, 0xe8, 0x40, 0xd0, 0xca, 0xc2, 0xc8, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x28, 0x52, 0x31, 0x37, 0x3c, 0x28, 0xb9, 0xc1, 0x81, 0xfc, 0xec, 0xe0, 0xf8, 0x6e, 0x70, 0x38, 0xc5, 0x16, 0xf0, 0xe7, 0xea, 0xc6, 0xc6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xe6, 0xea, 0xc6, 0xc6, 0xca, 0xe6, 0xe6, 0xde, 0xe4, 0x36, 0xfc, 0xa2, 0xb4, 0xe1, 0x87, 0x9a, 0x0d, 0x1f, 0x47, 0x1d, 0x9c, 0x56, 0xce, 0x0e, 0xa7, 0xd8, 0x0a, 0xe0, 0x9f, 0xe6, 0x36, 0x57, 0x36, 0x56, 0x27, 0x57, 0xd6, 0x82, 0x16, 0x36, 0x87, 0x96, 0xe6, 0x76, 0x2e, 0x03, 0xf0, 0x23, 0x53, 0xa6, 0x03, 0x92, 0xe6, 0x36, 0x57, 0x36, 0x56, 0x27, 0x57, 0x06, 0x82, 0x16, 0x36, 0x87, 0x96, 0xe6, 0x76, 0xb6, 0x06, 0xa5, 0x4f, 0xd3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xe9, 0xd3, 0xd4, 0x00, 0xfa, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6d, 0x75, 0x72, 0x6d, 0x75, 0x72, 0xb3, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0x4a, 0x9f, 0xa6, 0x35, 0x5c, 0x52, 0x6b, 0x3c, 0xde, 0xa0, 0xf4, 0x69, 0xaa, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x14, 0x35, 0xe2, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xcd, 0xca, 0xd6, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0xd7, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xe6, 0xf2, 0xc8, 0xc3, 0x0f, 0x35, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xb2, 0xb0, 0xf8, 0xf0, 0x43, 0xcd, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0x68, 0x3d, 0x39, 0xfc, 0x50, 0xd3, 0x06, 0x45, 0x9f, 0xee, 0x1a, 0x1c, 0x5f, 0xd8, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x99, 0xb8, 0x1b, 0x1c, 0x16, 0xd8, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0x49, 0x8e, 0xad, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0x0f, 0x2e, 0x8c, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0xdc, 0xa0, 0xf0, 0x32, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xc5, 0xbf, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x1c, 0x5a, 0xbb, 0x6a, 0x83, 0x82, 0x34, 0x76, 0xc0, 0x27, 0x0b, 0xa3, 0x0b, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xcc, 0x5a, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x10, 0x2d, 0x1f, 0x9c, 0xb0, 0xd9, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x28, 0x96, 0x6b, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x54, 0x65, 0xeb, 0xa0, 0x70, 0x92, 0x6d, 0x83, 0x82, 0x34, 0x76, 0x80, 0xd7, 0x4d, 0x8c, 0xed, 0x6d, 0x6c, 0x6d, 0x5e, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xfe, 0xd2, 0xdc, 0xe8, 0xca, 0xdc, 0xe8, 0xd2, 0xde, 0xdc, 0xc2, 0xd8, 0xd8, 0xf2, 0x40, 0xde, 0xcc, 0xcc, 0x5a, 0xc4, 0xf2, 0x5a, 0xde, 0xdc, 0xca, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x28, 0xb0, 0x6e, 0x50, 0x78, 0x19, 0xaf, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0xa6, 0x0d, 0x0a, 0xd2, 0xd8, 0x81, 0x46, 0x8b, 0x1b, 0x1c, 0x26, 0xd9, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0x40, 0x8f, 0xc5, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0x50, 0x78, 0xee, 0xac, 0xe1, 0x73, 0x97, 0x81, 0x1e, 0x93, 0x1b, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0xfc, 0xa0, 0xa4, 0xdd, 0x69, 0x83, 0x82, 0x34, 0x76, 0x80, 0x4f, 0x8c, 0xed, 0x6d, 0x6c, 0x6d, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x44, 0xcb, 0x1b, 0x1c, 0x16, 0xd8, 0x0e, 0x4e, 0xe0, 0x6c, 0x1b, 0x14, 0xa4, 0xb1, 0x83, 0xa7, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x83, 0x58, 0x5b, 0x1b, 0x14, 0x7d, 0xba, 0x0b, 0x34, 0x5a, 0x6c, 0x0d, 0x0a, 0xd2, 0xd8, 0x81, 0x47, 0x4b, 0xd7, 0xf0, 0xb6, 0xce, 0xc1, 0x19, 0xd4, 0x6d, 0xc3, 0x57, 0x38, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0x39, 0x28, 0xa3, 0xcf, 0xd7, 0xf0, 0xb6, 0xce, 0xc0, 0xa3, 0xa5, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0xf4, 0x5a, 0x5c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x7e, 0xdc, 0xca, 0xce, 0xc2, 0xe8, 0xd2, 0xec, 0xca, 0x40, 0xc2, 0xe4, 0xe4, 0xc2, 0xf2, 0x40, 0xd2, 0xdc, 0xc8, 0xca, 0xf0, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x51, 0x39, 0xbf, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0xc1, 0x19, 0xd1, 0xed, 0xa0, 0x34, 0x43, 0x5f, 0xc3, 0xdb, 0x3a, 0x1b, 0x1c, 0x9c, 0xdc, 0x6a, 0x83, 0xa2, 0x4f, 0x77, 0x81, 0x5e, 0x8b, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x99, 0xec, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0x83, 0xe1, 0xdb, 0x1a, 0xde, 0xd6, 0x19, 0xe8, 0xb1, 0x58, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x70, 0x30, 0x7c, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xa2, 0xd0, 0xbb, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0xe4, 0x1b, 0x9c, 0x56, 0xdf, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0xe0, 0x60, 0xf8, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x66, 0xb2, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0xc1, 0x69, 0xf5, 0x6d, 0x0d, 0x6f, 0xeb, 0x0c, 0xf4, 0x98, 0xac, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x38, 0xbf, 0xbb, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x31, 0x10, 0x1b, 0x1c, 0xd2, 0xdd, 0x0e, 0x4e, 0x06, 0x70, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x9c, 0xdf, 0xdd, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x67, 0xf0, 0xb7, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0xa4, 0x1b, 0x1c, 0xd2, 0xdd, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0xe0, 0xfc, 0xee, 0xb6, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xe5, 0x24, 0x76, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x62, 0x26, 0x7b, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3c, 0xb5, 0x1b, 0x1c, 0xd2, 0xdd, 0x0e, 0x8e, 0x0a, 0x6c, 0xad, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x0f, 0xca, 0xad, 0xa0, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x28, 0x76, 0xcf, 0x37, 0xbc, 0xdb, 0xb3, 0xe1, 0x35, 0x9f, 0x83, 0xd2, 0x0c, 0xbd, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x82, 0x70, 0x69, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x4a, 0xaf, 0xaf, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0xc1, 0xa9, 0xb9, 0x6d, 0x83, 0x33, 0xa2, 0x5b, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x83, 0x3c, 0x5b, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0xf4, 0x5a, 0xdc, 0xf0, 0xe0, 0xcd, 0x06, 0x05, 0x69, 0xec, 0x80, 0x4f, 0xc7, 0x56, 0xe6, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xe8, 0x31, 0x6c, 0x83, 0xc2, 0xcb, 0xf8, 0xa0, 0xa0, 0x14, 0xdf, 0xa0, 0xe8, 0xd3, 0xdd, 0xe0, 0x0c, 0xea, 0xb6, 0x80, 0x7f, 0x47, 0xc7, 0x36, 0xaf, 0xc1, 0x89, 0x39, 0xae, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xc3, 0x2c, 0x8c, 0x8d, 0x8d, 0x0e, 0x4d, 0xee, 0xad, 0xee, 0x0c, 0x0d, 0x64, 0xee, 0x2e, 0x8d, 0x6e, 0x0c, 0xed, 0xe0, 0x70, 0xeb, 0xb6, 0x06, 0x21, 0x73, 0xba, 0x41, 0xd1, 0xa7, 0xbb, 0xc1, 0xc1, 0xf0, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x88, 0x81, 0xd8, 0xe0, 0xb4, 0xfa, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0xd7, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x06, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xca, 0xf9, 0x0d, 0x02, 0x96, 0x75, 0x0d, 0x6f, 0xeb, 0x1c, 0x04, 0xe0, 0x52, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0xc1, 0xc1, 0xf0, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x88, 0x81, 0xd8, 0xe0, 0xb4, 0xfa, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0xd7, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x82, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0xe5, 0xfc, 0x86, 0xc7, 0x64, 0x0e, 0x8e, 0xd5, 0x72, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0xc1, 0xc1, 0xf0, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x88, 0x81, 0xd8, 0xe0, 0xb4, 0xfa, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x2a, 0xe7, 0x37, 0x3c, 0x78, 0x73, 0x70, 0xac, 0x96, 0x6b, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x83, 0xe1, 0xdb, 0x06, 0xa7, 0xc6, 0xb7, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x0e, 0x86, 0x6f, 0x1b, 0x1c, 0xb3, 0xdf, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x38, 0x18, 0xbe, 0x6d, 0x70, 0xfe, 0x80, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x87, 0x18, 0x88, 0x0d, 0x0e, 0xb7, 0x6e, 0x07, 0x27, 0x03, 0xb8, 0x35, 0x08, 0x62, 0xd3, 0x83, 0x53, 0xb9, 0xdc, 0x1a, 0x04, 0x8e, 0xea, 0xc1, 0x29, 0x6b, 0xae, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0xce, 0xa0, 0x6e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0c, 0xc4, 0x06, 0x87, 0x5b, 0xb7, 0x83, 0xa2, 0xcb, 0x78, 0xc0, 0x17, 0x93, 0x5b, 0xa3, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xa0, 0x33, 0x6b, 0x4b, 0xc3, 0x9b, 0x91, 0x6d, 0x70, 0xb8, 0x75, 0x6b, 0x99, 0x35, 0x38, 0xc6, 0xd1, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x8e, 0x1e, 0x7e, 0xa8, 0xd9, 0xa0, 0xe8, 0xd3, 0x5d, 0x70, 0xb4, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x06, 0x62, 0x0d, 0x6f, 0xeb, 0x1c, 0x1c, 0x6b, 0xe9, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x3e, 0xee, 0x06, 0x87, 0x50, 0xb9, 0x0d, 0x0e, 0xca, 0x74, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0xc1, 0xb1, 0x96, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xcc, 0x64, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x83, 0x83, 0x32, 0xdd, 0x1a, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0xfc, 0xa0, 0x5c, 0x59, 0xaa, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x8e, 0xb5, 0x74, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0c, 0xc4, 0x06, 0x07, 0x65, 0xba, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x89, 0x8f, 0xbb, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x78, 0xb3, 0xc1, 0x69, 0x15, 0xae, 0x83, 0x03, 0x3c, 0x5d, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x1c, 0x6b, 0xe9, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc5, 0x4c, 0xf6, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0x37, 0x38, 0x28, 0xd3, 0xad, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x0f, 0x0a, 0x5c, 0xa6, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0xe0, 0x58, 0x4b, 0xb7, 0xc1, 0x51, 0x97, 0xee, 0xe0, 0xa0, 0x4c, 0x77, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x6a, 0x50, 0x6a, 0x49, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x94, 0x5a, 0x52, 0x0d, 0xa0, 0xdf, 0x56, 0x77, 0x06, 0x72, 0x97, 0x46, 0x87, 0x06, 0xd2, 0x56, 0x27, 0xd7, 0x56, 0x27, 0x37, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0xa5, 0x96, 0xd4, 0x86, 0x5f, 0x94, 0x36, 0x28, 0x80, 0xf1, 0x37, 0x38, 0x60, 0xd1, 0xad, 0x41, 0x41, 0x30, 0xbb, 0xe1, 0xc1, 0x9d, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0xb6, 0xba, 0xb6, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0xf8, 0x41, 0x29, 0xdf, 0xb4, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x0f, 0xfe, 0xff, 0x3f, 0x3c, 0xf4, 0xb3, 0x41, 0x41, 0x1a, 0x3b, 0xb8, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xeb, 0x6d, 0x37, 0x38, 0x2c, 0xb0, 0x6d, 0x70, 0x3c, 0x20, 0x59, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x68, 0xd1, 0xaf, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xde, 0xb4, 0x5b, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0x14, 0x38, 0x4f, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x40, 0xf0, 0xff, 0x1f, 0xde, 0x42, 0x5b, 0x66, 0x0d, 0x0e, 0xa3, 0x76, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xe3, 0x0b, 0xdb, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0xc0, 0xab, 0xc3, 0x33, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x67, 0x16, 0xc6, 0x6e, 0xf8, 0xa2, 0x66, 0x43, 0x1d, 0x0f, 0x37, 0x0e, 0xce, 0x53, 0x6c, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0xde, 0x5d, 0x1e, 0xb9, 0xc1, 0x31, 0x99, 0x6d, 0x83, 0xd2, 0xde, 0x72, 0x83, 0x72, 0xe1, 0x7c, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x8c, 0x7a, 0xb7, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0xc1, 0x61, 0x65, 0xee, 0xa0, 0x8c, 0x3e, 0x5f, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0x40, 0xef, 0xda, 0xa0, 0x20, 0x8d, 0x5d, 0xc3, 0xf7, 0xed, 0x03, 0x1e, 0x5a, 0x98, 0xbe, 0x41, 0x09, 0x1d, 0xbb, 0xc1, 0x19, 0xf5, 0xee, 0x20, 0x4c, 0xc7, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x39, 0x38, 0x6c, 0xaf, 0x6d, 0x70, 0x98, 0x64, 0x5b, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0x91, 0xef, 0x3a, 0x38, 0x81, 0xb3, 0x6d, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0x86, 0xc2, 0xe2, 0xc1, 0xa9, 0x08, 0x6f, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x88, 0x81, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf8, 0xb8, 0x6b, 0xf8, 0xc5, 0x65, 0xc3, 0x83, 0x37, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0xfb, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x67, 0x1e, 0xbc, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x99, 0xb8, 0x07, 0x27, 0x68, 0xbc, 0x36, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x07, 0x6f, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0x50, 0x58, 0x6c, 0x83, 0x23, 0x4b, 0xde, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0xa1, 0x7b, 0xbe, 0x06, 0x27, 0x39, 0xb6, 0x0d, 0x1f, 0x47, 0x1d, 0x1c, 0x26, 0xd9, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x35, 0x0b, 0xe0, 0x5d, 0xe7, 0x36, 0x97, 0x76, 0xe6, 0x56, 0x46, 0xd6, 0x02, 0xf7, 0x76, 0x57, 0x26, 0x37, 0x2f, 0x03, 0xf0, 0x22, 0x73, 0xa6, 0x03, 0x52, 0xe7, 0x36, 0x97, 0x76, 0xe6, 0x56, 0x46, 0x06, 0x02, 0xf7, 0x76, 0x57, 0x26, 0x37, 0xb7, 0x06, 0x65, 0x2d, 0xd5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x59, 0x4b, 0xd5, 0x00, 0x3c, 0xd4, 0xb9, 0xcd, 0xa5, 0x9d, 0xb9, 0x95, 0x91, 0x81, 0x94, 0xe1, 0xc1, 0xbd, 0xb9, 0x95, 0xb9, 0xd1, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0xb2, 0x96, 0x6a, 0xc3, 0x2f, 0x4a, 0x1b, 0xfe, 0x56, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0x5e, 0xd0, 0xe1, 0xc1, 0x9b, 0x0d, 0x8f, 0xc9, 0x6c, 0xf8, 0x0a, 0x67, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0xc3, 0x7b, 0x41, 0x87, 0xc7, 0x64, 0x36, 0x3c, 0xad, 0xb3, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf8, 0x78, 0x10, 0xcc, 0xb8, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x93, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0x0f, 0x0e, 0x7e, 0x28, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0xbd, 0xe3, 0x0e, 0x0e, 0xeb, 0x2b, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xbe, 0x9c, 0x5c, 0x83, 0x52, 0x42, 0x7c, 0xe3, 0xf9, 0x41, 0xb9, 0x2e, 0xbb, 0x41, 0x29, 0x21, 0xbe, 0xf1, 0x7c, 0xc3, 0xbb, 0x3d, 0x1b, 0x04, 0x4f, 0xed, 0x06, 0xe5, 0xba, 0xec, 0xe1, 0xa1, 0x9f, 0xd5, 0xa0, 0x4c, 0xc3, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x28, 0xd3, 0xb0, 0x1a, 0x80, 0x87, 0x3a, 0xb7, 0xb9, 0xb4, 0x33, 0xb7, 0x32, 0x32, 0x90, 0xb9, 0x38, 0x39, 0xba, 0x17, 0xb9, 0xb2, 0xb6, 0x0d, 0x8f, 0x8f, 0x6c, 0x50, 0xa6, 0x61, 0x6d, 0xf8, 0x45, 0x69, 0xc3, 0x97, 0x4b, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0xeb, 0xdc, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0xd6, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0x0e, 0x0a, 0x27, 0xd9, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x42, 0x81, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0xcd, 0x67, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x06, 0xa2, 0x48, 0x87, 0x87, 0x7e, 0x3a, 0x08, 0x56, 0xd6, 0x35, 0x7c, 0xee, 0x32, 0xb8, 0x7c, 0x78, 0xf0, 0xa6, 0x01, 0x9f, 0x6e, 0x0e, 0x0d, 0x5e, 0xc3, 0x2f, 0x2e, 0x1b, 0x94, 0x70, 0xb4, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x1b, 0x9e, 0xd6, 0xd9, 0xa0, 0x14, 0xa7, 0xad, 0x0d, 0x9f, 0xbb, 0x0c, 0x2e, 0x6e, 0xf8, 0x0a, 0x67, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x79, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0x5a, 0xc3, 0xdb, 0x3a, 0x07, 0x05, 0xcf, 0xe6, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xd0, 0xee, 0xdd, 0xe0, 0x74, 0x24, 0x52, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xd3, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0x73, 0x1b, 0x1c, 0xce, 0xf9, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xe0, 0x74, 0x24, 0x72, 0x78, 0xf0, 0x66, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x5f, 0xfc, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x0e, 0x0f, 0xfd, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x0e, 0xe7, 0x7c, 0x1b, 0x9c, 0x5a, 0xfa, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xc7, 0x4f, 0xbe, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x6e, 0x70, 0xfc, 0xe4, 0xdb, 0xe0, 0xf8, 0xc9, 0x57, 0x1b, 0x3e, 0xc8, 0xd9, 0xe0, 0xf4, 0xd1, 0xb7, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x05, 0xcf, 0xe6, 0xc1, 0xe1, 0x9c, 0x6f, 0x0d, 0x8e, 0x38, 0x19, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x9a, 0xcf, 0xc1, 0xa1, 0x97, 0xaf, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0xec, 0xe0, 0x18, 0xdb, 0x77, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0x0b, 0xe0, 0xc3, 0x96, 0x36, 0x47, 0xd7, 0xc2, 0xf6, 0x76, 0x96, 0x36, 0x2e, 0x03, 0xf8, 0xca, 0x88, 0xe9, 0x80, 0xb0, 0xa5, 0xcd, 0xd1, 0x81, 0xb0, 0xbd, 0x9d, 0xa5, 0x8d, 0xad, 0x41, 0xe1, 0x95, 0xb5, 0xe1, 0xf1, 0x91, 0x0d, 0x0a, 0xaf, 0xac, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x09, 0xe7, 0xbe, 0xc1, 0x71, 0x43, 0xa6, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xa0, 0xc8, 0x69, 0xdd, 0xa0, 0xd8, 0xd1, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xde, 0x0b, 0xda, 0xa0, 0xbc, 0x8d, 0x6f, 0x83, 0x02, 0x36, 0xff, 0xa0, 0x80, 0x8f, 0x5f, 0x0d, 0x0a, 0x30, 0xad, 0x0d, 0xcf, 0x93, 0x6c, 0x50, 0xa0, 0xb1, 0x6f, 0x78, 0x7c, 0x64, 0x83, 0x02, 0x4c, 0x6b, 0x83, 0x42, 0xb9, 0x73, 0x83, 0x52, 0x98, 0x7d, 0xc3, 0x57, 0x38, 0x1b, 0xbe, 0x7e, 0x59, 0x83, 0x82, 0x0f, 0x73, 0x83, 0xc3, 0x43, 0xc1, 0x41, 0xf1, 0x83, 0x7a, 0x50, 0x50, 0xb4, 0xaf, 0x06, 0xa5, 0xce, 0xd6, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xa9, 0xb3, 0xd5, 0x00, 0x9e, 0x66, 0x61, 0x63, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x77, 0x65, 0x6c, 0x64, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0xd4, 0xd9, 0xda, 0xa0, 0x50, 0xee, 0xdc, 0xe0, 0x3c, 0x98, 0xb4, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0x97, 0xd4, 0x06, 0xe7, 0x7a, 0x83, 0x35, 0x28, 0x6a, 0xc4, 0x0f, 0xce, 0x99, 0x49, 0x6d, 0xb8, 0xa4, 0x36, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0xea, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xe0, 0x5c, 0x6f, 0xb0, 0xe1, 0x92, 0x5a, 0x83, 0xa1, 0xd9, 0x55, 0x35, 0x6b, 0x50, 0x3c, 0x70, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x14, 0x0f, 0x5c, 0x0d, 0xf0, 0xb1, 0x95, 0xb9, 0x9d, 0xd1, 0xa1, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0xe2, 0x81, 0x6b, 0xc3, 0x2f, 0x4a, 0x1b, 0x94, 0x70, 0xee, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0x43, 0xcd, 0x86, 0x4f, 0x6c, 0x36, 0x7c, 0xf1, 0xb9, 0xe1, 0x2b, 0x9c, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0x6c, 0x78, 0x2f, 0x68, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x40, 0x90, 0x3f, 0xbc, 0x14, 0x75, 0x38, 0xc5, 0xd6, 0xa0, 0x54, 0xe9, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x28, 0x55, 0xba, 0x1a, 0xc0, 0x33, 0xcd, 0x8d, 0xae, 0x4c, 0xce, 0x2d, 0x8c, 0x0d, 0x64, 0x0e, 0x2e, 0xcd, 0x6d, 0xc3, 0xe3, 0x23, 0x1b, 0x94, 0x2a, 0x5d, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x12, 0xce, 0x7d, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x6e, 0x10, 0x40, 0x67, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0x48, 0xc5, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0x14, 0x82, 0xa9, 0x07, 0x61, 0x3a, 0xb6, 0xc1, 0x39, 0x33, 0xa9, 0x36, 0x3c, 0x28, 0xb9, 0xc1, 0xe9, 0x22, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x82, 0x8d, 0xaf, 0x0d, 0x4f, 0xeb, 0x6c, 0x70, 0xe2, 0x4d, 0x3a, 0xbc, 0x85, 0x36, 0x6b, 0x50, 0x82, 0x7a, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x94, 0xa0, 0x5e, 0x0d, 0xe0, 0x95, 0xe6, 0x36, 0x57, 0x26, 0x47, 0x07, 0x92, 0x46, 0x57, 0xd6, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0x4a, 0x50, 0xaf, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x09, 0xe7, 0xbe, 0xe1, 0x79, 0xa6, 0x83, 0x13, 0x99, 0xc5, 0x86, 0xaf, 0x5f, 0x36, 0x3c, 0xad, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x50, 0x28, 0xb5, 0x75, 0x50, 0x3a, 0x3d, 0xaf, 0xe1, 0x17, 0x97, 0x0d, 0x4f, 0xef, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x6f, 0x71, 0x07, 0xa5, 0xd3, 0x73, 0xad, 0x06, 0xa5, 0xd7, 0xd7, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xe9, 0xf5, 0xd5, 0x00, 0xdf, 0x5c, 0x9d, 0x99, 0x59, 0x1a, 0xde, 0x86, 0xc7, 0x47, 0x36, 0x28, 0xbd, 0xbe, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x28, 0x85, 0xd9, 0x37, 0x7c, 0x85, 0xb3, 0xe1, 0xeb, 0x97, 0x0d, 0xef, 0x05, 0x6d, 0xf8, 0x20, 0x67, 0xc3, 0xb7, 0x39, 0x1b, 0xde, 0x0b, 0xda, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0x79, 0xd0, 0x06, 0x05, 0x45, 0xe6, 0x41, 0x39, 0xda, 0x3e, 0x0b, 0xf8, 0x73, 0x6e, 0x6f, 0xe3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x29, 0x5e, 0xb0, 0x01, 0xf0, 0x25, 0x0c, 0x0e, 0xae, 0xcc, 0x8d, 0x0c, 0x24, 0xcc, 0x0d, 0xa4, 0x8c, 0xad, 0xac, 0xad, 0xcc, 0x8d, 0x0e, 0x84, 0xee, 0x0d, 0x84, 0x0e, 0xad, 0x0c, 0xa4, 0xcc, 0x8d, 0x0c, 0xe4, 0xcd, 0x0c, 0x24, 0x0c, 0x84, 0x2d, 0x6d, 0x8e, 0x6e, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x9f, 0x2b, 0x6d, 0x50, 0xc2, 0xb9, 0x1f, 0x94, 0xe3, 0xf8, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x44, 0xd0, 0xb6, 0xe1, 0x69, 0x9d, 0x35, 0x7c, 0xfd, 0xb2, 0xe1, 0x69, 0x9d, 0x01, 0x7f, 0x8c, 0x6d, 0xee, 0x5c, 0xc3, 0x2f, 0x2e, 0x87, 0xb7, 0xd0, 0x6a, 0x35, 0x28, 0xbf, 0xc2, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xca, 0xaf, 0xb0, 0x06, 0xf0, 0x32, 0x4b, 0x93, 0x9b, 0xa3, 0x03, 0x49, 0x73, 0x23, 0x2b, 0xc3, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0xe5, 0x57, 0xd8, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xdd, 0xca, 0xc8, 0xd8, 0x83, 0x82, 0x9e, 0x7d, 0x0d, 0x7f, 0x2e, 0x0d, 0xf8, 0x68, 0x73, 0x74, 0xeb, 0x41, 0x41, 0xcf, 0xde, 0x06, 0xa5, 0xbd, 0xe5, 0x06, 0xe5, 0xc2, 0xf9, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xd9, 0x84, 0xb9, 0x41, 0x99, 0xa5, 0xdb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0xdc, 0xdd, 0xf0, 0xb6, 0xce, 0x06, 0xc7, 0x16, 0xc2, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe8, 0x86, 0xb7, 0x75, 0x36, 0x38, 0x1d, 0x11, 0xd6, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x5f, 0xc9, 0xd6, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0x04, 0x1f, 0x0e, 0x86, 0xdd, 0xee, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x84, 0xe0, 0xc3, 0xc1, 0xb1, 0x96, 0xae, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0x30, 0xec, 0x76, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0x70, 0xac, 0xa5, 0x5b, 0x83, 0x12, 0x1e, 0x73, 0xc1, 0xe9, 0x83, 0x61, 0xb7, 0xbb, 0x06, 0xc7, 0x70, 0x83, 0x83, 0x32, 0xfa, 0x7c, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x61, 0xb7, 0xbb, 0xe1, 0x6d, 0x9d, 0x83, 0x03, 0x57, 0xe1, 0x1a, 0x1c, 0x6b, 0xe9, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0x70, 0xac, 0xa5, 0x6b, 0xc3, 0x25, 0xb5, 0xc1, 0x61, 0xbf, 0x63, 0x83, 0x42, 0xf7, 0x7c, 0x0d, 0x8e, 0xca, 0x84, 0x1b, 0x2e, 0xa9, 0x35, 0x9e, 0x1f, 0x1c, 0x95, 0x09, 0x6b, 0xd6, 0xa0, 0xf0, 0x14, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x28, 0x3c, 0xc5, 0x1a, 0xe0, 0x95, 0x2b, 0xb3, 0x2b, 0x93, 0x9b, 0x2b, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0x85, 0xa7, 0xd8, 0x06, 0x85, 0x72, 0xe7, 0x06, 0x25, 0x9c, 0xfb, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x2e, 0xa9, 0x0d, 0x8a, 0x1a, 0xf1, 0x35, 0x3c, 0xb8, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xa3, 0xbd, 0xb5, 0xbd, 0x1d, 0x1e, 0xfa, 0x69, 0xc3, 0xd7, 0x2f, 0x1b, 0x9e, 0xd6, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x5c, 0xdc, 0xf0, 0x17, 0xcd, 0x06, 0x47, 0x44, 0x9b, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x57, 0x38, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xf0, 0x5e, 0xd0, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0x81, 0x20, 0xbf, 0x86, 0xcf, 0x83, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x79, 0x1b, 0x7f, 0x78, 0x0b, 0xad, 0xc3, 0x29, 0x56, 0x6b, 0x50, 0x34, 0x91, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x14, 0x4d, 0x64, 0x0d, 0xf0, 0xc9, 0x95, 0xb5, 0xbd, 0xd9, 0x95, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0xa2, 0x89, 0x6c, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x9f, 0x2b, 0x6d, 0xf8, 0x5b, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x1e, 0x14, 0xf4, 0xec, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x13, 0x41, 0xdb, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x60, 0x21, 0xb8, 0x86, 0x4b, 0x6a, 0x0d, 0xc6, 0x4f, 0x57, 0x1d, 0x7e, 0x11, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xde, 0xe2, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0x36, 0x38, 0x4f, 0x1e, 0x6e, 0x70, 0xca, 0xfe, 0xeb, 0xf0, 0x8b, 0x50, 0x2b, 0xe0, 0xb3, 0xd5, 0xc9, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xe7, 0xef, 0xc3, 0x06, 0xf0, 0x60, 0x4a, 0x9b, 0xa3, 0x03, 0x81, 0xab, 0x92, 0x2a, 0xda, 0xa0, 0x50, 0xee, 0xdc, 0xa0, 0x00, 0xc6, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0x3d, 0x3c, 0xad, 0x73, 0x70, 0x46, 0x58, 0x58, 0x01, 0x7f, 0xee, 0x2e, 0xec, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x38, 0x42, 0x21, 0x76, 0x50, 0x5a, 0x01, 0x6f, 0x50, 0x28, 0x77, 0x6e, 0x70, 0xa0, 0x3a, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x07, 0x0b, 0xc1, 0x0d, 0x4e, 0xd9, 0x7f, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd3, 0x5b, 0xdc, 0xc1, 0x69, 0xf2, 0xb0, 0xd5, 0xa0, 0x98, 0x2f, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x28, 0xe6, 0xcb, 0x1a, 0xf0, 0xdf, 0xdc, 0xd8, 0xf2, 0x36, 0x3c, 0x3e, 0xb2, 0x41, 0x31, 0x5f, 0xb6, 0x41, 0xa1, 0xdc, 0xb9, 0xc1, 0x11, 0xc9, 0x6f, 0xc3, 0x57, 0x38, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0xb4, 0xce, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0x36, 0x28, 0x28, 0x32, 0x37, 0x7c, 0x90, 0xb3, 0xc1, 0x71, 0xd2, 0x6f, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0xde, 0xc6, 0x6f, 0x50, 0xc0, 0xc7, 0x77, 0x50, 0xc0, 0xc7, 0x1f, 0x4e, 0xb1, 0x5a, 0x83, 0xf2, 0xd6, 0x6c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0xbc, 0x35, 0x6b, 0x80, 0x77, 0xee, 0xad, 0xad, 0x0c, 0xe4, 0xcd, 0x6c, 0xc3, 0xe3, 0x23, 0x1b, 0x94, 0xb7, 0x66, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x1c, 0x91, 0xfc, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0x83, 0x02, 0x36, 0x7f, 0xc3, 0x07, 0x39, 0x1b, 0x1c, 0x27, 0xfd, 0x36, 0x28, 0x72, 0x5a, 0x0f, 0x0a, 0xf8, 0xf8, 0xd5, 0xa0, 0xe0, 0x3b, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x28, 0xf8, 0xce, 0x1a, 0x80, 0x07, 0xb6, 0xb0, 0x39, 0x3a, 0x90, 0x34, 0xba, 0xb2, 0x36, 0x90, 0x37, 0x33, 0x10, 0xb6, 0xb4, 0x39, 0xba, 0x0d, 0x8f, 0x8f, 0x6c, 0x50, 0xf0, 0x9d, 0x6d, 0x50, 0x28, 0x77, 0x6e, 0x50, 0xc2, 0xb9, 0x6f, 0xf8, 0x8b, 0x66, 0x0d, 0x02, 0xe8, 0x6c, 0x83, 0x82, 0x0f, 0x73, 0x83, 0x42, 0x12, 0xf3, 0xa0, 0xbc, 0x8d, 0xdf, 0xa0, 0xe0, 0xc3, 0xdc, 0xa0, 0x90, 0xc4, 0xdc, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0xa0, 0xc8, 0x3c, 0x28, 0x2b, 0xe4, 0x37, 0x28, 0x6f, 0xe3, 0x0f, 0x0a, 0xf8, 0xf8, 0xd5, 0xa0, 0x5c, 0x43, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x28, 0xd7, 0xd0, 0x1a, 0xe0, 0x85, 0x93, 0x7b, 0x6b, 0x7b, 0xa3, 0x2b, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0xe5, 0x1a, 0xda, 0x06, 0x85, 0x72, 0xe7, 0x06, 0x61, 0x3a, 0xb6, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x31, 0xe6, 0x6c, 0x83, 0xd3, 0xca, 0xd9, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xa5, 0xce, 0x56, 0x1b, 0x1c, 0xdf, 0x0d, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xe0, 0x18, 0x73, 0x76, 0x70, 0xce, 0x4c, 0xaa, 0xd5, 0xe0, 0xbc, 0x66, 0xb8, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x70, 0x5e, 0x33, 0x6c, 0x00, 0x1f, 0xb4, 0xb7, 0xb6, 0xb7, 0xb3, 0x32, 0xb7, 0x34, 0xbd, 0xb2, 0x83, 0x52, 0x58, 0xfe, 0x70, 0x8a, 0xd5, 0x1a, 0x14, 0x6b, 0x69, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xc5, 0x5a, 0x5a, 0x03, 0xe0, 0x29, 0x9d, 0x5c, 0x98, 0xdb, 0x9c, 0xd9, 0x9b, 0x5c, 0x1b, 0x48, 0x59, 0xd8, 0x18, 0x1a, 0x88, 0x5d, 0x18, 0x5b, 0x5d, 0x19, 0xc8, 0x9b, 0x19, 0x08, 0x5b, 0xda, 0x1c, 0x1d, 0x88, 0x4e, 0x18, 0x48, 0xdd, 0x5c, 0x9a, 0xdb, 0x19, 0x08, 0x1d, 0x5a, 0x19, 0x88, 0x59, 0x9d, 0xdb, 0x18, 0x5d, 0xda, 0x9b, 0x1b, 0x88, 0x8e, 0xd8, 0x86, 0xc7, 0x47, 0x36, 0x28, 0xd6, 0xd2, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0x25, 0x9c, 0xfb, 0xc1, 0x91, 0x34, 0x61, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x13, 0x92, 0xe1, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x35, 0x08, 0xa0, 0xb3, 0x0d, 0x0a, 0x3e, 0xcc, 0x0d, 0x0a, 0x49, 0xcc, 0x83, 0xe3, 0xa4, 0x5f, 0x1b, 0xbe, 0xc2, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe9, 0xc1, 0x71, 0xd2, 0xef, 0xa0, 0xcc, 0x8e, 0x5f, 0x0d, 0xca, 0x50, 0xb5, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x32, 0x54, 0xad, 0x01, 0x3c, 0xd8, 0xca, 0xcc, 0xe8, 0x40, 0xcc, 0xde, 0xd8, 0xc8, 0x36, 0x3c, 0x3e, 0xb2, 0x41, 0x19, 0xaa, 0xb6, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x28, 0xe1, 0xdc, 0x37, 0x38, 0x69, 0x25, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x5f, 0xbf, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x89, 0xa9, 0x83, 0xa3, 0x70, 0xd2, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0x36, 0x38, 0xf1, 0x26, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x14, 0x08, 0xf2, 0x6b, 0xf8, 0x3c, 0x68, 0xc3, 0x25, 0xb5, 0xe1, 0xf3, 0xa0, 0x35, 0x38, 0x80, 0x26, 0x6d, 0x78, 0xb7, 0x67, 0xc3, 0x7b, 0x41, 0x1b, 0x94, 0xb7, 0xf1, 0x07, 0x47, 0x0e, 0xa5, 0x5a, 0x0d, 0xca, 0xac, 0xb5, 0x0d, 0xcf, 0x93, 0x6c, 0x50, 0x8a, 0xc0, 0x6f, 0x78, 0x7c, 0x64, 0x83, 0x32, 0x6b, 0x6d, 0x83, 0x42, 0xb9, 0x73, 0x83, 0x02, 0x0e, 0x7e, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0x1e, 0xdc, 0x19, 0xf0, 0xd7, 0xe8, 0xc8, 0xe8, 0x0d, 0x8e, 0x64, 0x86, 0x87, 0xa7, 0x75, 0xd6, 0xf0, 0x79, 0xd0, 0x06, 0xc7, 0x36, 0xc7, 0x0d, 0x8e, 0x64, 0x86, 0x87, 0xf7, 0x82, 0xda, 0xf0, 0x15, 0xce, 0x86, 0xaf, 0x5f, 0x36, 0xbc, 0x17, 0xb4, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x0d, 0xef, 0x05, 0x1d, 0x1c, 0x98, 0x12, 0x57, 0x83, 0xa2, 0x8f, 0x6d, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0xe8, 0x63, 0x6b, 0x00, 0xef, 0xb6, 0xb0, 0x3c, 0xb1, 0x32, 0x10, 0x3a, 0xb9, 0x30, 0xb7, 0x39, 0xb3, 0x37, 0xb9, 0xb6, 0x0d, 0x8f, 0x8f, 0x6c, 0x50, 0xf4, 0xb1, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x4a, 0x38, 0xf7, 0x83, 0xc3, 0xb4, 0xc0, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x27, 0x24, 0xc3, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0x59, 0x83, 0x00, 0x3a, 0xdb, 0xa0, 0xe0, 0xc3, 0xdc, 0xa0, 0x90, 0xc4, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x67, 0x43, 0x97, 0x0d, 0x8e, 0x93, 0x7e, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x0a, 0xd2, 0xd8, 0xc1, 0xc7, 0x0d, 0x8e, 0x93, 0x7e, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xfe, 0xe1, 0xd9, 0xa0, 0x80, 0x8f, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0x2e, 0xa9, 0x35, 0x9e, 0x1f, 0xfe, 0xe1, 0xe9, 0xe0, 0xac, 0x95, 0x78, 0x38, 0xc5, 0xd6, 0xa0, 0x50, 0x6a, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x28, 0x94, 0xda, 0x1a, 0xe0, 0x83, 0x93, 0x2b, 0x33, 0x4b, 0xc3, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0x85, 0x52, 0xdb, 0x06, 0x85, 0x72, 0xe7, 0x06, 0xa5, 0x30, 0xfb, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0xfd, 0xb2, 0xe1, 0xbd, 0xa0, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x57, 0xb2, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0xc1, 0x87, 0xc3, 0xe7, 0x41, 0x1b, 0xbe, 0xcd, 0x69, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x3f, 0xa8, 0x1b, 0x94, 0xa3, 0xed, 0xad, 0x06, 0x05, 0x91, 0xdb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x41, 0xe4, 0xd6, 0x00, 0x3e, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x66, 0x6f, 0x6c, 0x64, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0x20, 0x72, 0xdb, 0xa0, 0x50, 0xee, 0xdc, 0xe0, 0x9c, 0xd7, 0xb8, 0xe1, 0x2b, 0x9c, 0x0d, 0x5f, 0xbf, 0x6c, 0x70, 0xfa, 0x6c, 0xdc, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x06, 0x27, 0xde, 0xa4, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0x2f, 0xe8, 0xe0, 0x2c, 0x95, 0x38, 0x0b, 0xf8, 0x67, 0x75, 0x6c, 0xe6, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x29, 0x2d, 0xb2, 0x01, 0xbc, 0xe5, 0xc2, 0xdc, 0xce, 0xca, 0x40, 0xd2, 0xdc, 0xc6, 0xd8, 0xea, 0xe6, 0xd2, 0xec, 0xca, 0x36, 0xfc, 0xa2, 0xb4, 0xe1, 0x6f, 0xa5, 0x0d, 0x0a, 0x3e, 0xcc, 0x0d, 0x8f, 0xfa, 0x6e, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x94, 0x73, 0xb6, 0x1b, 0x3e, 0xc8, 0xd9, 0xf0, 0x77, 0xe8, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0xad, 0xb3, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0x07, 0x77, 0x36, 0x7c, 0x1c, 0x75, 0x78, 0x5a, 0xa7, 0x0e, 0xa7, 0xd8, 0x02, 0xbe, 0xda, 0x5b, 0x9a, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x70, 0x86, 0x91, 0x6c, 0x00, 0x3c, 0x1f, 0x7b, 0x73, 0x9b, 0xa3, 0x93, 0xab, 0x1b, 0xa3, 0x03, 0x09, 0x03, 0x71, 0x2b, 0xbb, 0x03, 0x61, 0x4b, 0x9b, 0xa3, 0x63, 0x01, 0x81, 0x63, 0x0b, 0x1b, 0x4b, 0x73, 0x3b, 0x03, 0x71, 0x99, 0x2b, 0x83, 0x03, 0x11, 0x2b, 0xa3, 0xbb, 0x2b, 0x2b, 0x73, 0x03, 0x29, 0xb3, 0x2b, 0x93, 0xcb, 0x03, 0x81, 0x0b, 0x4b, 0x93, 0x03, 0x49, 0x73, 0x03, 0x71, 0x61, 0x4b, 0xa3, 0xdb, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x9b, 0x2b, 0x83, 0x0f, 0xc2, 0x74, 0x6c, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6c, 0x69, 0xf4, 0x41, 0x41, 0xcf, 0xde, 0x06, 0x45, 0x9f, 0xee, 0x1a, 0x1c, 0xe0, 0x25, 0x5b, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0x40, 0x67, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0x50, 0xa4, 0x62, 0x6e, 0x70, 0x3a, 0x98, 0x6c, 0xc3, 0xdb, 0x3a, 0x83, 0xa7, 0x07, 0x67, 0xa8, 0xc9, 0x0d, 0x6f, 0xeb, 0x1c, 0x9c, 0x40, 0x26, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x38, 0x43, 0x4d, 0x6e, 0x50, 0x50, 0x64, 0x6e, 0x50, 0xda, 0x5b, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0x4a, 0xb3, 0xec, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0xd9, 0xe0, 0x0c, 0x33, 0xd9, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0xfd, 0xb2, 0x41, 0xb1, 0xb4, 0xbd, 0x41, 0x09, 0x8f, 0xb9, 0xe0, 0xf4, 0xc1, 0x19, 0x6a, 0x72, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x58, 0x2c, 0xaf, 0xe1, 0x17, 0x97, 0x0d, 0x8e, 0x59, 0x93, 0x07, 0x85, 0xd2, 0x76, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x94, 0x58, 0xdb, 0x1b, 0x7e, 0x71, 0xd9, 0xe0, 0xc0, 0x36, 0x79, 0x70, 0x10, 0xa0, 0x5c, 0x83, 0x33, 0xd4, 0xe4, 0x86, 0xb7, 0x75, 0x0e, 0xce, 0xdf, 0x93, 0xad, 0x06, 0xe5, 0x7d, 0xdc, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x79, 0x1f, 0xd7, 0x00, 0x5f, 0x19, 0xde, 0x58, 0x19, 0x1c, 0xdd, 0x86, 0xc7, 0x47, 0x36, 0x28, 0xef, 0xe3, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x38, 0x22, 0xf9, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0xd7, 0x2f, 0x1b, 0x9e, 0xd6, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x0f, 0x72, 0x36, 0x38, 0x4e, 0xfa, 0x6d, 0x50, 0xc0, 0xc7, 0x1f, 0x1c, 0x98, 0x12, 0x0f, 0xa7, 0x58, 0x6b, 0x50, 0x14, 0xcb, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x14, 0xc5, 0x72, 0x0d, 0xe0, 0x21, 0x57, 0x06, 0xc7, 0x96, 0x36, 0x16, 0x46, 0x57, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0x8a, 0x62, 0xb9, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x7c, 0xae, 0xb4, 0xe1, 0xcb, 0xa5, 0x83, 0x72, 0x1c, 0x7f, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0x20, 0x80, 0xce, 0x0e, 0xef, 0x05, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0x2f, 0xe8, 0xa0, 0x10, 0x17, 0x9e, 0x05, 0x7c, 0xb1, 0xb0, 0xb5, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0xd0, 0x5b, 0xd9, 0x00, 0xf8, 0x3b, 0xf6, 0xe6, 0x66, 0x57, 0x26, 0x47, 0x07, 0x72, 0x57, 0x46, 0x07, 0x72, 0x16, 0x46, 0x57, 0x06, 0x42, 0xf7, 0x06, 0x42, 0x26, 0x97, 0x07, 0x72, 0x16, 0x46, 0x57, 0x06, 0x22, 0x96, 0x07, 0x32, 0x07, 0x57, 0x36, 0x96, 0x66, 0x96, 0x97, 0xe6, 0x76, 0x06, 0x12, 0x26, 0x77, 0x56, 0xd7, 0x56, 0xe6, 0x46, 0x07, 0xd2, 0xf6, 0xc6, 0x46, 0xb6, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe6, 0x41, 0x51, 0xef, 0xba, 0xc1, 0x59, 0x74, 0xa0, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x2f, 0x4c, 0xee, 0xdc, 0xf0, 0xef, 0xfc, 0x86, 0x07, 0x77, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xc5, 0x48, 0xed, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0x48, 0x69, 0x59, 0x87, 0x53, 0x6c, 0x0d, 0x0a, 0xd3, 0xba, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xc2, 0xb4, 0xae, 0x01, 0xbc, 0xc2, 0xd8, 0xd8, 0x40, 0xd2, 0xdc, 0xc8, 0xd2, 0xc6, 0xca, 0xe6, 0x36, 0x3c, 0x3e, 0xb2, 0x41, 0x61, 0x5a, 0xb7, 0xe1, 0x17, 0xa5, 0x0d, 0x0e, 0x1f, 0x84, 0x1b, 0x94, 0xf6, 0x96, 0x1b, 0x94, 0x0b, 0xe7, 0x1b, 0x94, 0xf6, 0x96, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x33, 0x73, 0x23, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0xe4, 0xe0, 0x74, 0x48, 0xb8, 0xe1, 0x2b, 0x9c, 0x0d, 0x5f, 0xbf, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x0e, 0x4e, 0x97, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0xc3, 0x25, 0xe1, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0x90, 0xb3, 0xc1, 0x39, 0x9c, 0x70, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x58, 0x2c, 0x6f, 0x70, 0xda, 0xbb, 0x6c, 0xc3, 0x07, 0x39, 0x1b, 0x9c, 0x4e, 0x0a, 0xd7, 0xa0, 0x84, 0xc7, 0xdc, 0xe0, 0xc0, 0x55, 0xb8, 0x86, 0x4b, 0x6a, 0x83, 0xc3, 0x7e, 0xc7, 0x06, 0x85, 0xee, 0xf9, 0x06, 0x07, 0xe6, 0xc2, 0x35, 0x38, 0x08, 0x5e, 0x6e, 0xf8, 0xc5, 0x65, 0x83, 0x32, 0xfa, 0xfc, 0xe0, 0xec, 0x7b, 0xd9, 0xc1, 0xf1, 0xae, 0xf0, 0xe0, 0x58, 0x5b, 0xb8, 0x1a, 0x94, 0xef, 0x77, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0x7c, 0xbf, 0xdb, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0xe7, 0x4a, 0x1b, 0x94, 0x70, 0xee, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0x71, 0x83, 0x70, 0x1a, 0xdb, 0xe0, 0x3c, 0x98, 0x74, 0xf8, 0x60, 0xb5, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x5c, 0x52, 0x1b, 0x14, 0x35, 0xe2, 0x1b, 0x9c, 0xcc, 0x1c, 0xdb, 0xf0, 0x15, 0xce, 0x86, 0xaf, 0x5f, 0x36, 0x3c, 0xad, 0xb3, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe7, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x8a, 0x8f, 0xbc, 0x36, 0x28, 0x2b, 0xe4, 0xd7, 0xf0, 0x5d, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x7c, 0x3c, 0x28, 0x6f, 0xe3, 0x37, 0xbc, 0xdb, 0xb3, 0xe1, 0xbd, 0xa0, 0x0d, 0x4f, 0xef, 0x1c, 0x1c, 0x42, 0xfd, 0xda, 0xa0, 0xe8, 0x34, 0xde, 0xe0, 0x44, 0xd0, 0xb6, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0x07, 0x77, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0x70, 0x6e, 0xe7, 0x6b, 0xc3, 0xd7, 0x2f, 0x1b, 0x94, 0x15, 0xf2, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0xbc, 0x8d, 0x5f, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0x83, 0x3b, 0x1b, 0xde, 0xd6, 0x19, 0x3c, 0x3e, 0x38, 0xb7, 0xf3, 0xd5, 0xe1, 0x14, 0x5b, 0x83, 0xe2, 0x23, 0x6f, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0xf8, 0xc8, 0x6b, 0x80, 0x7f, 0xae, 0x0c, 0x2e, 0x4c, 0x2e, 0x8c, 0xae, 0x6c, 0xc3, 0xe3, 0x23, 0x1b, 0x14, 0x1f, 0x79, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x1c, 0x91, 0xfc, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0xeb, 0x97, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x0f, 0x4f, 0xeb, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe3, 0xc3, 0xd3, 0x3a, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0x83, 0xb3, 0xac, 0xd4, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe3, 0x41, 0x01, 0x1f, 0xbf, 0xe1, 0x83, 0x9c, 0x0d, 0x8e, 0x93, 0x7e, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0xde, 0xc6, 0x6f, 0x70, 0x1a, 0x62, 0xe9, 0xe0, 0xc0, 0xc7, 0xb2, 0xe1, 0x17, 0x97, 0x0d, 0x4e, 0x43, 0x2c, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xf2, 0x36, 0xfe, 0xe0, 0xc0, 0xc7, 0xd2, 0x6a, 0x50, 0x26, 0xe9, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x94, 0x49, 0x7a, 0x0d, 0xe0, 0x27, 0x57, 0x06, 0xc7, 0x16, 0x36, 0x56, 0x06, 0x92, 0x46, 0x57, 0xd6, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0xca, 0x24, 0xbd, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x8e, 0xd4, 0x81, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0xb4, 0xce, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x11, 0xb4, 0x6d, 0x70, 0x76, 0x10, 0x5c, 0xc3, 0x2f, 0x2e, 0x1b, 0x9e, 0xde, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xde, 0xe2, 0x0e, 0x4e, 0x28, 0x2c, 0xb5, 0x02, 0x3e, 0x5b, 0x5a, 0xdb, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x70, 0x26, 0xdc, 0x6c, 0x80, 0x97, 0x2d, 0x6d, 0x8e, 0x2e, 0xcd, 0x2c, 0x6f, 0x83, 0x42, 0xb9, 0x73, 0x83, 0x02, 0x18, 0x7f, 0xc3, 0xd7, 0x2f, 0x6b, 0x78, 0x50, 0x72, 0x83, 0x00, 0x64, 0xdb, 0xa0, 0xcc, 0xbb, 0x9c, 0x65, 0x96, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0x6c, 0x50, 0x50, 0x64, 0x6e, 0xf8, 0x20, 0x67, 0x83, 0xc2, 0x66, 0x7e, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xd3, 0x83, 0x12, 0x3d, 0xff, 0xa0, 0x14, 0x9e, 0x3f, 0x38, 0x1e, 0xdc, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x78, 0x5a, 0xe7, 0x70, 0x8a, 0xad, 0x41, 0xc1, 0xc6, 0xb7, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x50, 0xb0, 0xf1, 0x35, 0x80, 0xe7, 0x1c, 0x5d, 0x18, 0x5d, 0x99, 0x59, 0x1d, 0x1b, 0x08, 0x5d, 0x9d, 0x9c, 0xdb, 0x86, 0xc7, 0x47, 0x36, 0x28, 0xd8, 0xf8, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0x25, 0x9c, 0xfb, 0x06, 0x05, 0x78, 0xe7, 0x1a, 0xfe, 0x5c, 0x1a, 0x7c, 0x3c, 0x38, 0x2b, 0x04, 0xb6, 0x41, 0x29, 0x21, 0xbe, 0x86, 0x4b, 0x6a, 0x83, 0xa2, 0x46, 0x7c, 0x0d, 0xff, 0xf0, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0xc2, 0x69, 0x6c, 0x0d, 0x9f, 0x2b, 0x6d, 0x70, 0x30, 0x54, 0x3c, 0x38, 0x02, 0x56, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0x02, 0xe8, 0x6c, 0xc3, 0x83, 0x92, 0x1b, 0x9e, 0x99, 0xdc, 0xf0, 0x6e, 0xcf, 0xe1, 0x17, 0xa1, 0x83, 0x23, 0x60, 0xe5, 0xe1, 0xe9, 0x9d, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x80, 0x17, 0x36, 0x36, 0x6e, 0x50, 0x42, 0xc7, 0xae, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x1b, 0x1c, 0x50, 0x3a, 0x3b, 0x08, 0xd3, 0xb1, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xd2, 0x9b, 0x7e, 0x0d, 0x02, 0xe8, 0x6c, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0xd0, 0x3a, 0x3b, 0x38, 0x02, 0x56, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0x8b, 0xe5, 0x0d, 0x8e, 0xc5, 0x9d, 0x1d, 0xde, 0x42, 0xdb, 0xa0, 0xe8, 0xa0, 0x1d, 0xf0, 0xe4, 0xca, 0xe6, 0x0d, 0x9f, 0x07, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x4f, 0xef, 0x1c, 0x9c, 0xe2, 0x0d, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x38, 0x31, 0x77, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0xcc, 0xf0, 0xec, 0xe0, 0x20, 0xe0, 0x79, 0x50, 0x1c, 0xc8, 0x1f, 0x4e, 0xb1, 0x35, 0x28, 0x26, 0xfa, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x8a, 0x89, 0xbe, 0x06, 0xe0, 0x83, 0x4c, 0xee, 0x0d, 0x0e, 0x84, 0x2e, 0x2c, 0x8d, 0x0d, 0xe4, 0xcd, 0xcc, 0x0c, 0x84, 0x2d, 0x6d, 0x8e, 0x6e, 0xc3, 0xe3, 0x23, 0x1b, 0x14, 0x13, 0x7d, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x94, 0x70, 0xee, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0xb4, 0xce, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0x36, 0x28, 0x28, 0x32, 0x37, 0x7c, 0x90, 0xb3, 0xc1, 0x89, 0x57, 0x71, 0x83, 0x82, 0x22, 0xf3, 0xe0, 0xc0, 0x94, 0x78, 0x38, 0xc5, 0x66, 0x01, 0x78, 0x6b, 0x7b, 0x63, 0x23, 0x9b, 0x6b, 0x09, 0x73, 0x23, 0x6b, 0x69, 0x7b, 0x63, 0x23, 0x6b, 0x11, 0xab, 0x4b, 0x63, 0x23, 0x2b, 0x93, 0x9b, 0x97, 0x01, 0x78, 0x95, 0x89, 0xd3, 0x01, 0x69, 0x7b, 0x63, 0x23, 0x9b, 0x03, 0x09, 0x73, 0x23, 0x03, 0x69, 0x7b, 0x63, 0x23, 0x03, 0x11, 0xab, 0x4b, 0x63, 0x23, 0x2b, 0x93, 0x9b, 0x5b, 0xc0, 0x87, 0x0b, 0xa3, 0x43, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x0e, 0xa6, 0x9f, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xb2, 0xa5, 0xad, 0x95, 0x81, 0xd4, 0xb9, 0xa5, 0xe1, 0x81, 0xc0, 0x85, 0xd1, 0xa1, 0x6d, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0xfe, 0x9d, 0x5f, 0xc0, 0x5f, 0x73, 0x7b, 0xa3, 0xab, 0x15, 0xf0, 0xe9, 0xc2, 0xe0, 0xca, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x63, 0x06, 0xe8, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbc, 0xd4, 0xd1, 0x99, 0xe1, 0x80, 0xcc, 0xd1, 0xc9, 0xa5, 0xb9, 0x9d, 0x81, 0x84, 0xcd, 0x81, 0xb0, 0xa5, 0xcd, 0xd1, 0x6d, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0xbe, 0xa8, 0xd9, 0x50, 0xc7, 0x83, 0xa7, 0x23, 0x5a, 0x0d, 0x0e, 0x0c, 0xa0, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x07, 0x06, 0xd0, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0x82, 0xa6, 0x86, 0x92, 0x92, 0x40, 0xe8, 0xca, 0xf0, 0xe8, 0x36, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x07, 0x4f, 0x17, 0x1e, 0x4e, 0xb1, 0x16, 0xf0, 0xe9, 0xc2, 0xdc, 0xd6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x01, 0x1f, 0x8e, 0x2d, 0xcc, 0x3d, 0x38, 0xce, 0x83, 0x36, 0x00, 0x3f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x72, 0x65, 0xe5, 0x4a, 0x80, 0xb7, 0x5a, 0xdd, 0x1c, 0x1d, 0x48, 0x18, 0xc8, 0xd8, 0x9b, 0x1c, 0x19, 0x0b, 0xc8, 0x9b, 0xbc, 0x04, 0xf0, 0x51, 0xc2, 0x56, 0x16, 0x66, 0xa6, 0x03, 0xa2, 0x56, 0x37, 0x47, 0x07, 0x12, 0x06, 0x42, 0x17, 0x06, 0x57, 0x2e, 0x01, 0xfc, 0x94, 0xc0, 0x85, 0xb1, 0xb5, 0xe9, 0x80, 0x88, 0x85, 0x8d, 0xad, 0xcd, 0xd1, 0x95, 0xc1, 0x81, 0xb0, 0xa5, 0xcd, 0xd1, 0xb5, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x7f, 0x89, 0xdc, 0xdb, 0x5c, 0x99, 0x0e, 0x88, 0x19, 0x5b, 0x18, 0x1d, 0x08, 0x5b, 0xda, 0x1c, 0xdd, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x71, 0x1e, 0x74, 0xc0, 0x17, 0x1b, 0x63, 0x9b, 0x37, 0x38, 0xce, 0x83, 0x6e, 0x10, 0x6a, 0x88, 0x6b, 0x78, 0xe2, 0xee, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0xc1, 0xfc, 0x1a, 0xfe, 0x9d, 0x5f, 0xc0, 0x1f, 0x7b, 0x93, 0x23, 0x6b, 0x83, 0xa0, 0xfd, 0x59, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x1f, 0x1e, 0xbe, 0x5b, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x63, 0x06, 0x68, 0xb5, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x51, 0xf5, 0xb7, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x08, 0xfd, 0x92, 0x35, 0xbc, 0xad, 0xb3, 0xe1, 0x89, 0xfc, 0x36, 0x38, 0xe9, 0x89, 0x6e, 0x70, 0xd2, 0x13, 0xdd, 0xe0, 0xa4, 0x27, 0xba, 0xc1, 0x49, 0x4f, 0xb4, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0xbc, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x6b, 0xf8, 0x77, 0x7e, 0x0d, 0x8e, 0xf3, 0xa0, 0x55, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x94, 0xfe, 0x80, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0xd0, 0x2f, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x84, 0x57, 0x44, 0x07, 0x67, 0x68, 0xd1, 0x83, 0x83, 0xba, 0x68, 0xab, 0xc1, 0x01, 0x49, 0x74, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x80, 0x24, 0xba, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x77, 0x15, 0x95, 0x11, 0x0e, 0x0b, 0x08, 0xd3, 0x94, 0x10, 0x88, 0x59, 0x9a, 0xdc, 0x1c, 0xdd, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0x70, 0x7a, 0x05, 0xfc, 0xbb, 0xb0, 0x34, 0x77, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x50, 0x3c, 0xba, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x0f, 0x5d, 0x19, 0x1e, 0x1d, 0x08, 0x5b, 0x9a, 0x5b, 0xd9, 0xdc, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0x6c, 0x70, 0x02, 0x12, 0xed, 0x70, 0x8a, 0xb5, 0x80, 0x3f, 0x86, 0x16, 0x26, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x9c, 0x54, 0x48, 0x37, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xa8, 0xa2, 0x32, 0xc2, 0x01, 0x11, 0xcb, 0xa3, 0x2b, 0x3b, 0x38, 0xcf, 0x8e, 0xae, 0x80, 0x4f, 0x17, 0x26, 0x07, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x9c, 0xf0, 0x48, 0x37, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x82, 0x0b, 0x93, 0x9b, 0x2b, 0x23, 0x03, 0xa1, 0x4b, 0x6b, 0x2b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x9c, 0x3c, 0x28, 0xb3, 0x74, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe8, 0x41, 0x99, 0xa5, 0xbb, 0x86, 0x3f, 0x97, 0x06, 0x6f, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0xfc, 0xb9, 0x34, 0xf8, 0x7c, 0x50, 0x66, 0xe9, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xcd, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0x59, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0x78, 0xf0, 0x75, 0x78, 0xad, 0x80, 0x2f, 0x56, 0x16, 0xe6, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x9c, 0x84, 0x4a, 0x37, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x86, 0xe9, 0x31, 0xe9, 0xc9, 0x2b, 0x9b, 0x63, 0x01, 0x89, 0xe9, 0xe1, 0xeb, 0x71, 0x7b, 0x3b, 0x7c, 0xb0, 0x7a, 0x38, 0xc5, 0xd6, 0x30, 0x9d, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x86, 0xe9, 0xdc, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x0f, 0x73, 0xcb, 0x03, 0x71, 0x7b, 0xab, 0x73, 0x3b, 0x08, 0xd3, 0xb1, 0x15, 0xf0, 0xc5, 0xf2, 0xe8, 0xe6, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x63, 0x78, 0xe9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xfe, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2c, 0x20, 0x4d, 0x53, 0x42, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x1b, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x5d, 0x1a, 0x79, 0x50, 0x66, 0xe9, 0x1e, 0x94, 0xa5, 0xc5, 0x87, 0x53, 0x6c, 0x0d, 0xcf, 0xad, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x9e, 0x5b, 0x3d, 0x7c, 0xb0, 0x7a, 0x38, 0xc5, 0x16, 0xf0, 0xe1, 0xd2, 0xe8, 0xd0, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xe3, 0xa1, 0xe9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xfe, 0x74, 0x79, 0x70, 0x65, 0x64, 0x20, 0x75, 0x72, 0x62, 0x69, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x21, 0x65, 0xb2, 0x86, 0x7f, 0xe7, 0x17, 0xf0, 0xd3, 0xde, 0xe8, 0xc2, 0x6a, 0x05, 0xfc, 0x39, 0xba, 0x3a, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0xe1, 0xdf, 0xb4, 0x01, 0x3c, 0xe7, 0xe8, 0xc2, 0xdc, 0xc8, 0xc2, 0xe4, 0xc8, 0x40, 0xdc, 0xc2, 0xda, 0xca, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x0e, 0xff, 0xa6, 0x1b, 0x3e, 0x98, 0x5f, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x9f, 0xb0, 0x3a, 0x3a, 0xb4, 0x9e, 0x3a, 0x39, 0xb1, 0x34, 0xba, 0x0d, 0x7f, 0x2e, 0x0d, 0xf8, 0x6d, 0x61, 0x72, 0xeb, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0xc3, 0xcb, 0x77, 0x1b, 0x3e, 0x57, 0x5a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5e, 0xe6, 0xe8, 0xc2, 0xdc, 0xc8, 0xc2, 0xe4, 0xc8, 0xe6, 0x40, 0xc2, 0xea, 0xe8, 0xd0, 0xde, 0xe4, 0xd2, 0xe8, 0xf2, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0x87, 0xd5, 0xd1, 0xa1, 0x07, 0xe7, 0xcd, 0xd3, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x9d, 0xa3, 0x0b, 0x73, 0x23, 0x0b, 0x93, 0x23, 0x03, 0x61, 0x0b, 0x13, 0x2b, 0x63, 0xdb, 0xf0, 0xe7, 0xd2, 0x80, 0x4f, 0x97, 0x07, 0x57, 0x6e, 0xf8, 0x77, 0x7e, 0x0d, 0x0e, 0xa6, 0x9f, 0xd5, 0x0a, 0xf8, 0x77, 0x61, 0x6c, 0xec, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x69, 0x0b, 0x75, 0xc3, 0x13, 0xef, 0x1b, 0x1c, 0xd9, 0x47, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0xe4, 0xe0, 0x14, 0x2e, 0xba, 0x02, 0x3e, 0x59, 0x18, 0x5d, 0xb9, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0x70, 0x16, 0x45, 0xdd, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x0b, 0x2e, 0x4c, 0x6e, 0xae, 0x8c, 0x0c, 0x84, 0x2c, 0x8c, 0xae, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x03, 0x90, 0xca, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3f, 0x28, 0xb3, 0x74, 0xdb, 0xe0, 0xdc, 0x4e, 0xba, 0x86, 0x3f, 0x97, 0x06, 0xa7, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0x27, 0x3c, 0xd2, 0xea, 0x70, 0x8a, 0xb5, 0x80, 0x4f, 0x57, 0x26, 0xd7, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x9c, 0x80, 0x52, 0x37, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x0b, 0x9b, 0x1b, 0x4b, 0x4b, 0x03, 0x99, 0xcb, 0x6b, 0x13, 0x7b, 0x63, 0x3b, 0x38, 0x6f, 0x9e, 0xae, 0x80, 0x4f, 0x17, 0xe6, 0x76, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x9c, 0x28, 0x53, 0x37, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x43, 0xec, 0x8d, 0x8e, 0xee, 0xad, 0xad, 0xc5, 0x2c, 0x4d, 0x6e, 0x8e, 0x0e, 0xa4, 0x4c, 0x4e, 0xee, 0x4d, 0xee, 0xe0, 0x54, 0x2f, 0xba, 0x02, 0x7e, 0x18, 0x5e, 0xda, 0xbc, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0x70, 0xa6, 0x4f, 0xdd, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x8f, 0x4e, 0xae, 0xac, 0x0c, 0x24, 0x8c, 0x8c, 0x4c, 0xae, 0x6c, 0x6e, 0xee, 0xf0, 0x43, 0xcd, 0xac, 0xc1, 0x31, 0xde, 0x74, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0x31, 0xde, 0xb4, 0x01, 0xf8, 0xa0, 0xcb, 0x83, 0x2b, 0x23, 0x03, 0x81, 0x0b, 0xa3, 0x43, 0x03, 0x99, 0x2b, 0x3b, 0x6b, 0x2b, 0x73, 0xa3, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x38, 0xc6, 0x9b, 0x6e, 0x70, 0x80, 0x10, 0xdd, 0xe0, 0x18, 0x6f, 0xba, 0x41, 0xa8, 0x21, 0xae, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0x71, 0x77, 0x70, 0x0a, 0x3c, 0x39, 0x28, 0xeb, 0x3c, 0x37, 0x7c, 0x30, 0xbf, 0xc1, 0x79, 0xf3, 0x74, 0x83, 0xa0, 0xfd, 0x59, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xf8, 0x3a, 0x71, 0x0d, 0x5f, 0xd4, 0x6c, 0xa8, 0xe3, 0xc1, 0xd7, 0x89, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0x7c, 0xdd, 0xb8, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0xe0, 0xeb, 0xc6, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0xd4, 0xfc, 0x83, 0xd3, 0x21, 0xe1, 0x1a, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0xc1, 0xd7, 0xa5, 0x6b, 0xf8, 0xa2, 0x66, 0x43, 0x1d, 0x0f, 0xbe, 0x2e, 0x6d, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xe0, 0xeb, 0xf0, 0x83, 0x43, 0x4b, 0xe9, 0x1a, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0xc1, 0xd7, 0xd9, 0x6b, 0xf8, 0xa2, 0x66, 0x43, 0x1d, 0x0f, 0xbe, 0xce, 0x6e, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xe0, 0xeb, 0xee, 0x35, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x07, 0x5f, 0x77, 0xb7, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xf0, 0x73, 0xe2, 0x1a, 0xbe, 0xa8, 0xd9, 0x50, 0xc7, 0x83, 0x9f, 0x13, 0x5b, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xf8, 0xb9, 0x71, 0x0d, 0x5f, 0xd4, 0x6c, 0xa8, 0xe3, 0xc1, 0xcf, 0x8d, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0xfc, 0x1c, 0xb9, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0xe0, 0xe7, 0xc8, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0x7e, 0x2e, 0x5d, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0x78, 0xf0, 0x73, 0x69, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x05, 0x3f, 0x87, 0xaf, 0xe1, 0x8b, 0x9a, 0x0d, 0x75, 0x3c, 0xf8, 0x39, 0xbc, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x82, 0x9f, 0xb3, 0xd7, 0xf0, 0x45, 0xcd, 0x86, 0x3a, 0x1e, 0xfc, 0x9c, 0xdd, 0x1a, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0xc1, 0xcf, 0xdd, 0x6b, 0xf8, 0xa2, 0x66, 0x43, 0x1d, 0x0f, 0x7e, 0xee, 0x6e, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xe0, 0xc9, 0xc2, 0x35, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x07, 0x4f, 0x16, 0xb6, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xf0, 0x64, 0xf2, 0x1a, 0xbe, 0xa8, 0xd9, 0x50, 0xc7, 0x83, 0x27, 0x93, 0x5b, 0xc3, 0xe7, 0x4a, 0x1b, 0x1c, 0xf5, 0x4d, 0x36, 0x7c, 0xb0, 0xda, 0x06, 0x07, 0xba, 0x93, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x82, 0x4f, 0x33, 0xd7, 0xf0, 0x45, 0xcd, 0x86, 0x3a, 0x1e, 0x7c, 0x9a, 0xd9, 0x1a, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0xc1, 0xa7, 0xcd, 0x6b, 0xf8, 0xa2, 0x66, 0x43, 0x1d, 0x0f, 0x3e, 0x6d, 0x6e, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x70, 0x7a, 0x83, 0xf3, 0xec, 0x68, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf8, 0x40, 0x74, 0x61, 0x73, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0xc1, 0xd3, 0x85, 0x1b, 0x1c, 0xb5, 0x41, 0x5b, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0x1c, 0x5e, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0x78, 0x38, 0xdc, 0x1a, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0xe1, 0xf1, 0x1a, 0xbe, 0xa8, 0xd9, 0x50, 0xc7, 0xc3, 0xe3, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0x5e, 0x6e, 0x5e, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0x78, 0xf0, 0x72, 0x73, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x05, 0x2f, 0x47, 0xae, 0xe1, 0x8b, 0x9a, 0x0d, 0x75, 0x3c, 0x78, 0x39, 0xb2, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x82, 0x97, 0x43, 0xd7, 0xf0, 0x45, 0xcd, 0x86, 0x3a, 0x1e, 0xbc, 0x1c, 0xda, 0x1a, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0xc1, 0xcb, 0xc5, 0x6b, 0xf8, 0xa2, 0x66, 0x43, 0x1d, 0x0f, 0x5e, 0x2e, 0xae, 0xc3, 0x29, 0x56, 0x0b, 0xf8, 0x74, 0x6f, 0x75, 0xf2, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xa9, 0xf4, 0x75, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xdf, 0x3a, 0x3a, 0xb3, 0x19, 0x19, 0x90, 0x31, 0xb6, 0xba, 0x39, 0xba, 0x32, 0xb9, 0xb9, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0x59, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0x78, 0xf8, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x0b, 0xc0, 0xdf, 0xd8, 0x9b, 0x1b, 0x5d, 0x58, 0x9a, 0x5b, 0x99, 0x5c, 0x8b, 0x99, 0xdc, 0x5b, 0x5b, 0xcb, 0xd8, 0x9b, 0x1b, 0x5d, 0x58, 0x9a, 0x5b, 0x99, 0xbc, 0x0c, 0xc0, 0xaf, 0x0c, 0x9b, 0x0e, 0xc8, 0xd8, 0x9b, 0x1b, 0x5d, 0x58, 0x9a, 0x5b, 0x99, 0x1c, 0x88, 0x99, 0xdc, 0x5b, 0x1b, 0xc8, 0xd8, 0x9b, 0x1b, 0x5d, 0x58, 0x9a, 0x5b, 0x99, 0xdc, 0x02, 0x7e, 0x5b, 0x18, 0x1b, 0xbd, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x70, 0x96, 0x84, 0x6d, 0x00, 0xcf, 0xb6, 0x30, 0x38, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x10, 0xb6, 0xb4, 0x39, 0xba, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x4a, 0x38, 0xf7, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0xbf, 0xed, 0x8d, 0x8d, 0x6e, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0x10, 0x40, 0x67, 0x1b, 0x2e, 0xa9, 0x35, 0x08, 0x29, 0xf0, 0xc3, 0x83, 0x3b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xe3, 0x0d, 0x02, 0xe8, 0x6c, 0xc3, 0x25, 0xb5, 0x06, 0x21, 0x00, 0x7e, 0x78, 0x70, 0xa7, 0x3a, 0x3c, 0xad, 0xd3, 0x6a, 0x70, 0xc4, 0x87, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x38, 0xe2, 0xc3, 0x36, 0x00, 0x1f, 0x6d, 0x61, 0x70, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x70, 0x61, 0x69, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0x40, 0xa3, 0x57, 0x0b, 0x08, 0x48, 0x0f, 0x0b, 0x4a, 0x9a, 0x4b, 0x8b, 0x4b, 0x18, 0x08, 0x4a, 0x5b, 0x18, 0x1c, 0xc8, 0x17, 0x1c, 0xc8, 0x57, 0x5c, 0x4a, 0xea, 0xa0, 0xd0, 0xa4, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x3b, 0xef, 0x1b, 0x94, 0x4d, 0xf5, 0x6b, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xc0, 0xd1, 0x5b, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xf8, 0xa0, 0x50, 0xad, 0x5f, 0xc3, 0x9f, 0x4b, 0x83, 0xc7, 0x07, 0xa5, 0x77, 0x7d, 0x1d, 0x14, 0x14, 0x99, 0x1d, 0x1e, 0xfa, 0x39, 0x9c, 0x62, 0x0b, 0xf8, 0x73, 0x69, 0x6c, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xa9, 0x52, 0xb6, 0x01, 0x3c, 0xe7, 0xca, 0xe8, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x40, 0xd8, 0xd2, 0xe6, 0xe8, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x40, 0xdf, 0xab, 0x05, 0x04, 0x04, 0x65, 0xae, 0x8c, 0x0e, 0xe4, 0x2b, 0xcd, 0xa5, 0xc5, 0x25, 0x2c, 0x75, 0x50, 0xc2, 0xb9, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x2e, 0x6e, 0x50, 0x08, 0xa6, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x04, 0x8e, 0xde, 0x06, 0x07, 0x43, 0xc5, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xe5, 0xce, 0xfb, 0xc1, 0x09, 0x91, 0xeb, 0xf0, 0xd0, 0xcf, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x1b, 0xee, 0xb4, 0x19, 0xa0, 0x65, 0x0b, 0xcb, 0x2b, 0x93, 0x6b, 0x99, 0x6d, 0x98, 0xa1, 0x0d, 0xa5, 0x77, 0xc3, 0x89, 0xb0, 0xa1, 0xf4, 0xae, 0xe1, 0x1c, 0x59, 0xe1, 0x17, 0x04, 0x8b, 0xe1, 0xfa, 0xe2, 0xc2, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x1b, 0x72, 0xdf, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xe0, 0xf2, 0xe0, 0xf1, 0xc1, 0x28, 0x93, 0x3a, 0xbe, 0x1d, 0x8f, 0x07, 0xc1, 0xc2, 0x2f, 0x48, 0x06, 0xa6, 0xeb, 0x90, 0x5c, 0x3a, 0x28, 0x19, 0x9a, 0x0e, 0x89, 0xd6, 0xe3, 0xf1, 0x21, 0xeb, 0xb3, 0x82, 0x60, 0x83, 0x01, 0xb7, 0xbb, 0x38, 0x08, 0x16, 0x7e, 0x83, 0xd3, 0x03, 0xed, 0x20, 0x19, 0x8c, 0x8e, 0xc7, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x7e, 0x83, 0xd3, 0x03, 0xed, 0x20, 0x19, 0x9c, 0x3a, 0x1e, 0x1f, 0x1a, 0xb5, 0x1c, 0x8f, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0x36, 0x38, 0x59, 0xcf, 0x0e, 0x82, 0x85, 0xdf, 0xe0, 0xf4, 0x40, 0x3b, 0x48, 0x06, 0x42, 0x75, 0x3c, 0x3e, 0x24, 0x5a, 0x8f, 0xc7, 0x87, 0x34, 0xf0, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0x70, 0x7a, 0xa0, 0x1d, 0x24, 0x03, 0x63, 0x75, 0x3c, 0x3e, 0x34, 0x6a, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xfc, 0x06, 0xa7, 0x07, 0xda, 0x41, 0x32, 0x50, 0xae, 0x8e, 0xc7, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0x85, 0x5f, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xd9, 0x06, 0x27, 0xeb, 0xd9, 0x41, 0xb0, 0xf0, 0x1b, 0x9c, 0x1e, 0x68, 0x07, 0xc9, 0xc0, 0x79, 0x75, 0x3c, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xc8, 0xda, 0x6d, 0xe8, 0x21, 0x74, 0xe8, 0x18, 0x76, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xcf, 0xac, 0x2d, 0x3c, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x64, 0x1b, 0x9c, 0xac, 0x67, 0x07, 0xc1, 0xc2, 0x6f, 0x70, 0x7a, 0xa0, 0x1d, 0x24, 0x03, 0xe9, 0xab, 0xe3, 0xf1, 0x21, 0xd1, 0x7a, 0x3c, 0x3e, 0x6c, 0x4e, 0x2d, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xfc, 0x06, 0xa7, 0x07, 0xda, 0x41, 0x32, 0xd0, 0xfc, 0xea, 0x78, 0x7c, 0x68, 0xd4, 0x72, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0x36, 0x38, 0x59, 0xcf, 0x0e, 0x82, 0x85, 0xdf, 0xe0, 0xf4, 0x40, 0x3b, 0x48, 0x06, 0x5e, 0xbf, 0x3a, 0x1e, 0x1f, 0x12, 0xad, 0xc7, 0xe3, 0xc3, 0xbe, 0xf2, 0xc2, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xd9, 0x06, 0x27, 0xeb, 0xd9, 0x41, 0xb0, 0xf0, 0x1b, 0x9c, 0x1e, 0x68, 0x0f, 0x5d, 0x4c, 0x0e, 0x89, 0xd6, 0xe3, 0xf1, 0x21, 0x1f, 0xb8, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0x70, 0x7a, 0xa0, 0x1d, 0x24, 0x03, 0xe1, 0x3a, 0x1e, 0x1f, 0x1a, 0xb5, 0x1c, 0x8f, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x2e, 0x87, 0xe4, 0xd2, 0x20, 0x5a, 0xd8, 0x35, 0x28, 0x17, 0x7d, 0x16, 0x7e, 0xe3, 0xf9, 0x41, 0x29, 0x22, 0x39, 0xfc, 0xc6, 0xf3, 0x31, 0x78, 0xff, 0xff, 0x90, 0xaa, 0x39, 0x0e, 0x2d, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xfc, 0x06, 0xa7, 0x07, 0xda, 0x41, 0x32, 0x30, 0x5e, 0xc7, 0xe3, 0x43, 0xa3, 0x96, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0x70, 0x7a, 0xa0, 0x1d, 0x24, 0x03, 0xc7, 0xd7, 0xf1, 0xf8, 0xd0, 0xa8, 0xe5, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x1b, 0x9c, 0xac, 0x67, 0x07, 0xc1, 0xc2, 0x6f, 0x70, 0x7a, 0xa0, 0x1d, 0x24, 0x03, 0xe7, 0xd7, 0xf1, 0xf8, 0xd0, 0xa8, 0xe5, 0x78, 0x7c, 0x50, 0x48, 0x61, 0x0d, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x64, 0x1b, 0x9c, 0xac, 0x67, 0x07, 0xc1, 0xc2, 0x6f, 0x70, 0x7a, 0xa0, 0x1d, 0x24, 0x03, 0xf7, 0xd7, 0xf1, 0xf8, 0x90, 0x68, 0x3d, 0x1e, 0x1f, 0x76, 0xbd, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0x36, 0x38, 0x59, 0xcf, 0x0e, 0x82, 0x85, 0xdf, 0xe0, 0xf4, 0x40, 0x3b, 0x48, 0x06, 0xb3, 0xe3, 0xf1, 0x21, 0xd1, 0x7a, 0x3c, 0x3e, 0x2c, 0xb9, 0xaf, 0x20, 0xd8, 0x60, 0xc0, 0xed, 0x2e, 0x0e, 0x82, 0x85, 0xdf, 0xe0, 0xf4, 0x40, 0x3b, 0x48, 0x06, 0xe7, 0x8e, 0xc7, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x6c, 0x83, 0x93, 0xf5, 0xec, 0x20, 0x58, 0xf8, 0x0d, 0x4e, 0x0f, 0xb4, 0x83, 0x64, 0x20, 0x76, 0xc7, 0xe3, 0x43, 0xa2, 0xf5, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xbc, 0xb2, 0xb8, 0xfa, 0x90, 0x5a, 0x3a, 0x1e, 0x0f, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x64, 0x1b, 0x9c, 0xac, 0x67, 0x07, 0xc1, 0xc2, 0x6f, 0x70, 0x7a, 0xa0, 0x3d, 0x18, 0xcb, 0x50, 0x87, 0x44, 0xeb, 0xf1, 0xf8, 0xd0, 0xb3, 0xe3, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x5e, 0x2e, 0x3e, 0xa4, 0x96, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xfc, 0x82, 0x64, 0xe0, 0x5e, 0x39, 0x24, 0x97, 0x06, 0xc9, 0x40, 0xfb, 0xab, 0xe3, 0xf1, 0xa1, 0x51, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0xe2, 0x82, 0xc7, 0x03, 0xc2, 0x36, 0x20, 0xf8, 0xfe, 0x7f, 0x70, 0x37, 0x9c, 0x1c, 0x7e, 0x41, 0xb0, 0xb8, 0xb0, 0x0b, 0x82, 0x0d, 0x06, 0xfa, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xe2, 0x50, 0xe3, 0x60, 0x6c, 0xb8, 0x1e, 0x87, 0x0e, 0x8a, 0x60, 0x94, 0x15, 0x04, 0x1b, 0x0c, 0xb8, 0xdd, 0xc5, 0x61, 0x37, 0x18, 0xab, 0xbb, 0x0b, 0xa2, 0x85, 0x1d, 0x76, 0x43, 0x23, 0xc1, 0xc3, 0xfa, 0xe6, 0x21, 0x75, 0x30, 0xec, 0x06, 0x23, 0xc0, 0x77, 0x41, 0xb4, 0xd0, 0x61, 0x37, 0x8c, 0xcb, 0x61, 0x7d, 0xf3, 0x90, 0x3a, 0x18, 0x64, 0x6b, 0x68, 0xbf, 0x7e, 0x50, 0x82, 0x40, 0x1e, 0x52, 0x07, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0xc3, 0x2e, 0xdc, 0x82, 0x60, 0xe1, 0x17, 0x24, 0x03, 0xe1, 0x3b, 0x64, 0x2b, 0x06, 0xc9, 0x40, 0xfc, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x59, 0xbb, 0x83, 0x81, 0x1f, 0x72, 0x1c, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x70, 0x68, 0xd2, 0x1d, 0x24, 0x03, 0xb7, 0xde, 0xf1, 0xf8, 0x90, 0x86, 0x1b, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0xfb, 0x4e, 0x07, 0x01, 0xef, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xe3, 0x5f, 0xf2, 0xb0, 0xf6, 0x7b, 0x1c, 0x1a, 0x76, 0x61, 0x17, 0x6e, 0x83, 0x31, 0xf6, 0x74, 0x30, 0xf0, 0x8d, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0x60, 0x8c, 0x3d, 0x1d, 0x9c, 0x79, 0x67, 0x0f, 0xe9, 0xdc, 0x35, 0x18, 0xb7, 0xbb, 0x1b, 0x62, 0x78, 0x30, 0xfe, 0x25, 0x07, 0xc1, 0x82, 0x60, 0x41, 0x32, 0xd0, 0xd7, 0xe9, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0x3a, 0x1b, 0x0e, 0x89, 0x99, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0x94, 0x34, 0x0d, 0x63, 0x78, 0xbd, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x06, 0x25, 0x4d, 0xc3, 0x18, 0x1e, 0x1e, 0xd2, 0xb9, 0x6b, 0x30, 0x6e, 0x77, 0x37, 0xc4, 0x70, 0x43, 0x0c, 0x87, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x48, 0x1d, 0x1c, 0x96, 0x4f, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x90, 0x74, 0x3a, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x7a, 0xe5, 0x60, 0xf8, 0xc7, 0x1e, 0x0c, 0xb3, 0xf0, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0x70, 0x07, 0x43, 0x45, 0x60, 0x61, 0x17, 0x6e, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xf7, 0x0e, 0x86, 0x7f, 0xec, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xc3, 0x5e, 0xe1, 0xc1, 0xd8, 0x70, 0x3d, 0x0e, 0x1d, 0x62, 0x78, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0x35, 0x18, 0xb7, 0xbb, 0x1b, 0x62, 0x78, 0x10, 0x90, 0xcc, 0xc3, 0x2e, 0x08, 0x16, 0x24, 0x03, 0xf9, 0x95, 0x83, 0xe1, 0x28, 0x7d, 0x30, 0x38, 0x7d, 0x36, 0x38, 0x92, 0xf1, 0x6e, 0x30, 0x6e, 0x77, 0x37, 0xc4, 0x70, 0x43, 0x0c, 0x0f, 0x86, 0x9b, 0xc2, 0x06, 0xe3, 0x76, 0xf7, 0xb0, 0xc8, 0x77, 0x3c, 0x5e, 0x10, 0x2c, 0xfc, 0x06, 0x25, 0x6a, 0xc8, 0x41, 0xc9, 0xd0, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xe0, 0xac, 0x3b, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0x25, 0x6a, 0xc8, 0xc1, 0xb8, 0x83, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0xa0, 0x64, 0x68, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0x64, 0xbb, 0x0e, 0xc9, 0xa5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x1d, 0x8f, 0x57, 0x90, 0x0c, 0x94, 0xbb, 0xe3, 0xf1, 0xe1, 0x68, 0x5f, 0x41, 0xb0, 0xb8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x8b, 0x83, 0x60, 0x05, 0xc1, 0x06, 0x45, 0xea, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x72, 0x30, 0x2e, 0xcc, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x22, 0xf5, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x39, 0x74, 0x0c, 0x3b, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0xc2, 0x2f, 0x48, 0x06, 0xc2, 0x77, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xa0, 0xee, 0x1d, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0xa7, 0x00, 0xdf, 0x83, 0x71, 0x07, 0x75, 0x30, 0x8c, 0x1d, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0xcd, 0xf8, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xcc, 0x20, 0xd8, 0x60, 0x64, 0xbd, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x8c, 0xcb, 0xf0, 0x1b, 0xcf, 0x0f, 0x06, 0x77, 0xe5, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x7e, 0x41, 0xb4, 0xa0, 0x7c, 0xd8, 0x05, 0xc1, 0xc2, 0x2f, 0x48, 0x06, 0xc2, 0x77, 0x10, 0xf0, 0xfe, 0x83, 0x64, 0x20, 0x78, 0xc7, 0xe3, 0x83, 0x81, 0x2d, 0xba, 0x21, 0xfe, 0x83, 0x68, 0x71, 0x41, 0xb0, 0xf0, 0x1b, 0x9c, 0x7a, 0x7d, 0x0f, 0x4a, 0x86, 0xa6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0x41, 0x09, 0x23, 0x71, 0x1c, 0x1a, 0x04, 0x1b, 0x8c, 0xdb, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0x10, 0xc3, 0x41, 0xb0, 0xf0, 0x1b, 0x9c, 0x7a, 0x7d, 0x0f, 0x0e, 0x9b, 0xba, 0x07, 0x03, 0x5b, 0xf4, 0x60, 0x2c, 0x76, 0x1e, 0x87, 0x0e, 0xf1, 0x3f, 0x1e, 0x0f, 0x82, 0x15, 0x04, 0x0b, 0xbf, 0xc1, 0xa9, 0xd7, 0xf7, 0xe0, 0x04, 0xe1, 0x7b, 0x50, 0xde, 0xed, 0x0d, 0x82, 0x05, 0xc9, 0xc0, 0xa8, 0x1c, 0x0c, 0x43, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xb1, 0xf3, 0x20, 0x78, 0xb8, 0x8f, 0x43, 0x83, 0x60, 0x41, 0x32, 0x90, 0xed, 0x3a, 0x08, 0x72, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0x20, 0xa4, 0xc0, 0x0f, 0x82, 0x2c, 0x7e, 0xf8, 0x8d, 0xe7, 0xc3, 0x6d, 0x30, 0x58, 0x63, 0x0f, 0x31, 0x3c, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x71, 0xd8, 0x85, 0x5b, 0x10, 0x2c, 0x48, 0x06, 0xfa, 0x3a, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x72, 0x58, 0xfb, 0x3d, 0x0e, 0x1d, 0x8e, 0xf6, 0x0d, 0xa9, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x88, 0x17, 0x04, 0x0b, 0xbf, 0xc1, 0x29, 0xc0, 0xf7, 0xa0, 0x64, 0x68, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x88, 0xff, 0xa1, 0xf1, 0xfc, 0x71, 0x68, 0x10, 0x6c, 0x70, 0xa4, 0xd5, 0x3d, 0x38, 0x07, 0x01, 0x1f, 0x8f, 0x8f, 0x6f, 0xc7, 0xe3, 0xd5, 0xe0, 0xb8, 0xd7, 0x3b, 0x08, 0x36, 0x18, 0x9d, 0x0d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x99, 0x88, 0x83, 0xc3, 0x46, 0xef, 0x71, 0x68, 0x10, 0x6c, 0x50, 0x50, 0x8b, 0x2d, 0x0e, 0xbb, 0x70, 0x1b, 0x9c, 0x79, 0x67, 0x0f, 0x2d, 0x80, 0x16, 0x04, 0x0b, 0x92, 0x81, 0x52, 0x77, 0x48, 0x2e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x18, 0xbc, 0x19, 0x7b, 0xc8, 0xcb, 0x1e, 0x87, 0x86, 0x5d, 0xb8, 0x0d, 0x06, 0xbe, 0xf1, 0xa1, 0x05, 0xd0, 0x06, 0x87, 0x91, 0xe0, 0x61, 0x17, 0x6e, 0x83, 0x73, 0xe4, 0xee, 0xa1, 0x05, 0xd0, 0x82, 0x60, 0x83, 0xb3, 0x49, 0xf0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0xc1, 0x8f, 0x95, 0x87, 0xbc, 0xec, 0x71, 0x68, 0xd8, 0x85, 0xdb, 0xe0, 0xa4, 0xb7, 0x7b, 0x68, 0x01, 0xb4, 0xc1, 0x09, 0x31, 0x78, 0x90, 0xad, 0xa1, 0xfd, 0xfa, 0x70, 0x1b, 0x0c, 0xa9, 0xdf, 0x43, 0x0b, 0xa0, 0x41, 0xb0, 0xc1, 0xd9, 0x24, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0xe0, 0xdd, 0xca, 0x43, 0x5e, 0xf6, 0x38, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xb0, 0x1b, 0x94, 0xa1, 0x52, 0x1b, 0x4e, 0xb1, 0xe1, 0x17, 0x44, 0x0b, 0x3b, 0x08, 0x16, 0x24, 0x03, 0x63, 0x77, 0x48, 0x2e, 0x1d, 0x1a, 0xb5, 0x1c, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x31, 0xb4, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0x62, 0x38, 0xec, 0x82, 0x60, 0xe1, 0x37, 0x38, 0x34, 0xe9, 0x1e, 0x9c, 0x98, 0x7d, 0x0f, 0x69, 0xb8, 0x0d, 0x8e, 0x8c, 0xba, 0x87, 0x18, 0x1e, 0xf2, 0xb5, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xd4, 0xa5, 0x83, 0x80, 0xf7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x31, 0x1c, 0x76, 0x41, 0xb0, 0xf0, 0x1b, 0x9c, 0x02, 0x7c, 0x0f, 0x4e, 0xcc, 0xbe, 0x87, 0x8d, 0xda, 0x0d, 0x31, 0x1c, 0x04, 0x0b, 0xbf, 0xc1, 0x29, 0xc0, 0xf7, 0xe0, 0xb0, 0xa9, 0x7b, 0xd8, 0xa8, 0x3d, 0x18, 0x1b, 0xae, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0xdc, 0xf6, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x86, 0x18, 0x0e, 0xbb, 0x20, 0xd8, 0xe0, 0xa4, 0xeb, 0x7b, 0xc8, 0x5e, 0x2c, 0x08, 0x36, 0x38, 0x0f, 0xfd, 0x1e, 0xb2, 0x17, 0x87, 0x18, 0x1e, 0x8c, 0x0d, 0xd7, 0xe3, 0xd0, 0x20, 0xd8, 0x38, 0x34, 0xfc, 0xc2, 0x2e, 0xec, 0xc2, 0x6d, 0x10, 0x22, 0xfe, 0x83, 0x60, 0x41, 0x32, 0x90, 0x74, 0x3a, 0x18, 0xfe, 0xb1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x7a, 0xe5, 0x60, 0x38, 0x4a, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x30, 0x82, 0x4f, 0x8f, 0x43, 0xc7, 0xa1, 0x85, 0x5d, 0xd8, 0x85, 0x5d, 0xb8, 0x0d, 0x82, 0x14, 0x7f, 0x90, 0x0c, 0x94, 0xbb, 0x83, 0x80, 0xf7, 0x3f, 0xac, 0x6f, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x20, 0x19, 0xb8, 0xeb, 0x0e, 0x02, 0xde, 0xff, 0x60, 0x34, 0xf8, 0x1e, 0xd2, 0xb9, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x5f, 0x10, 0x2d, 0x98, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x5d, 0x3a, 0x18, 0xfe, 0xb1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0x41, 0x60, 0x62, 0x1f, 0x87, 0x06, 0xd1, 0x82, 0x78, 0x10, 0x6c, 0x70, 0x94, 0x23, 0x3e, 0x18, 0xbd, 0x87, 0x83, 0x68, 0x21, 0x83, 0x60, 0x83, 0xa3, 0x1c, 0xf1, 0xc1, 0xa0, 0x06, 0x3e, 0x1e, 0x1f, 0x8f, 0x07, 0xc1, 0x1a, 0x62, 0x38, 0x08, 0x16, 0x24, 0x03, 0xe7, 0xca, 0xc1, 0x70, 0x94, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x90, 0x93, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd8, 0x2b, 0x1c, 0x7e, 0xe3, 0xf9, 0x18, 0x92, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0xc7, 0x10, 0x1d, 0x87, 0x06, 0xc1, 0xe2, 0xb0, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0x7e, 0x65, 0x82, 0xfd, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x83, 0x77, 0xf2, 0x90, 0xaf, 0x3d, 0x0e, 0x2d, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf7, 0x07, 0xc1, 0x82, 0x64, 0x10, 0x1c, 0x1c, 0xb3, 0x8a, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xde, 0xc9, 0x83, 0x73, 0x4d, 0xf1, 0x71, 0x68, 0x10, 0x2d, 0x98, 0x0f, 0x82, 0x0d, 0x4e, 0x8e, 0xc5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x02, 0x13, 0xfb, 0xe0, 0x5c, 0x53, 0x7c, 0x1c, 0x1a, 0x44, 0x0b, 0xe2, 0x41, 0xb0, 0xc1, 0xc9, 0xb1, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0xaf, 0xf0, 0xe0, 0x5c, 0x53, 0x7c, 0x1c, 0x1a, 0x44, 0x0b, 0xc2, 0x41, 0xb0, 0xf0, 0x0b, 0x92, 0x81, 0xf0, 0x1d, 0x0c, 0x47, 0xe9, 0x83, 0x13, 0x84, 0xef, 0xe1, 0xa9, 0x81, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x76, 0x41, 0xb0, 0x20, 0x19, 0xd4, 0x4c, 0xd0, 0xff, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x50, 0x72, 0x70, 0xf6, 0x32, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x04, 0x07, 0x67, 0x2f, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x91, 0xfa, 0xd0, 0x78, 0xfe, 0x38, 0x74, 0x10, 0x98, 0xd8, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xce, 0xa1, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0xef, 0xe4, 0xa1, 0xf1, 0xfc, 0x71, 0xe8, 0x38, 0xb4, 0x20, 0x19, 0x32, 0x88, 0x16, 0xdc, 0x1f, 0x04, 0x1b, 0x9c, 0x43, 0x8d, 0x0f, 0x8e, 0x9c, 0xc5, 0x83, 0x68, 0xc1, 0x78, 0x10, 0x2c, 0xfc, 0x82, 0x64, 0x20, 0x7c, 0x13, 0xe4, 0xff, 0x0f, 0x4a, 0x86, 0xa6, 0x83, 0x43, 0x23, 0xf0, 0xf1, 0x78, 0x10, 0x6c, 0x48, 0x4c, 0x0d, 0x82, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x8c, 0xca, 0x04, 0xc2, 0xff, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x10, 0x1c, 0x9c, 0xf3, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x4b, 0x70, 0xfe, 0x1f, 0x9c, 0x6b, 0x8a, 0x8f, 0x43, 0x07, 0x85, 0x5b, 0xd2, 0x71, 0x68, 0xf8, 0x05, 0xd1, 0x02, 0xe7, 0xff, 0x41, 0x08, 0x80, 0x0f, 0xa2, 0x05, 0xc6, 0x7f, 0x10, 0x2c, 0x48, 0x06, 0xc1, 0x04, 0xc6, 0xff, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc2, 0x2d, 0xe9, 0xe0, 0x5c, 0x53, 0x7c, 0x1c, 0x1a, 0x44, 0x0b, 0x84, 0x7f, 0x10, 0x6c, 0x70, 0x7a, 0x3f, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x10, 0xa9, 0x0f, 0xce, 0x35, 0xc5, 0xc7, 0xa1, 0x41, 0xb4, 0x40, 0xf0, 0x07, 0xc1, 0xc2, 0x2f, 0x48, 0x06, 0xc2, 0x37, 0xc1, 0xff, 0xff, 0x07, 0x27, 0x08, 0xdf, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa3, 0xd5, 0xfc, 0xd0, 0x78, 0xfe, 0x38, 0x34, 0x88, 0x36, 0x28, 0x2c, 0x48, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0xc8, 0xaf, 0x1c, 0x9c, 0xeb, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0x7a, 0x3f, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0x41, 0xfa, 0xff, 0xd0, 0x78, 0xfe, 0x38, 0x74, 0x50, 0xb8, 0x25, 0x1d, 0x87, 0x06, 0xc1, 0xc2, 0x2e, 0x08, 0x16, 0x24, 0x03, 0xf9, 0x95, 0x09, 0x94, 0xff, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x83, 0xe0, 0xe0, 0x40, 0x91, 0x7c, 0x70, 0xc8, 0x46, 0x3e, 0x28, 0xdc, 0x92, 0x8e, 0x43, 0x1b, 0x62, 0x38, 0xec, 0x82, 0x60, 0x41, 0x32, 0xf8, 0x72, 0x70, 0xa0, 0x48, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x61, 0x26, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x04, 0xeb, 0xff, 0x87, 0xc6, 0xf3, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xe0, 0xcf, 0xc1, 0x81, 0x22, 0xf9, 0xe0, 0xc4, 0x91, 0x7c, 0x1c, 0x3a, 0xa4, 0x73, 0x87, 0x5d, 0xd8, 0x85, 0xdd, 0x90, 0x3a, 0x38, 0xac, 0x6f, 0x2e, 0xec, 0xc2, 0x6e, 0x1c, 0x3a, 0xac, 0x6f, 0x1e, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x48, 0x07, 0xc1, 0x82, 0x64, 0x50, 0x32, 0x81, 0xf3, 0xff, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x20, 0x38, 0x38, 0x6d, 0x28, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x11, 0xff, 0x83, 0x73, 0x4d, 0xf1, 0x71, 0xe8, 0x20, 0x48, 0xf1, 0x8f, 0x43, 0x87, 0x15, 0xda, 0x41, 0xb0, 0xb0, 0x1b, 0x87, 0x16, 0x76, 0x61, 0x37, 0x38, 0x6a, 0x27, 0x6f, 0x88, 0xe1, 0xb0, 0x0b, 0x82, 0x05, 0xc9, 0xe0, 0xcb, 0xc1, 0x69, 0x43, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x47, 0x1d, 0xe5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xe5, 0x62, 0xcf, 0xa1, 0xf1, 0xfc, 0x71, 0xe8, 0xe0, 0x9c, 0x99, 0x7c, 0x1c, 0x3a, 0xa4, 0x73, 0x0f, 0xe9, 0xdc, 0xc3, 0xd1, 0x3e, 0xfc, 0x82, 0x68, 0x81, 0xe8, 0x0f, 0x82, 0x05, 0xc9, 0xa0, 0x64, 0x02, 0xe9, 0xff, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x83, 0xe0, 0xe0, 0x98, 0xb1, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x18, 0xc3, 0x1e, 0x9c, 0x6b, 0x8a, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x76, 0xe3, 0xd0, 0xc2, 0x1c, 0x04, 0x29, 0xfe, 0x41, 0x90, 0xe2, 0x1f, 0x87, 0x8e, 0xc7, 0x4b, 0x70, 0xfc, 0x1f, 0x84, 0x88, 0xff, 0xf1, 0xed, 0xf8, 0x76, 0x7c, 0x3b, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x8f, 0x4c, 0xee, 0x3c, 0xa4, 0x96, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x73, 0x64, 0xef, 0xe2, 0xb0, 0x1b, 0x8c, 0x99, 0xae, 0x05, 0xc1, 0x82, 0x64, 0x20, 0xbf, 0x72, 0x10, 0xf0, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x85, 0xd9, 0xa1, 0x63, 0xd8, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x38, 0x28, 0xe9, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xd4, 0xbe, 0x43, 0x72, 0xe9, 0x90, 0x86, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x58, 0xc3, 0x7c, 0xe8, 0xa0, 0x71, 0x1c, 0x1a, 0x76, 0xe1, 0x36, 0x0e, 0x1d, 0x8e, 0xf6, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x0e, 0x1d, 0x5a, 0x89, 0x6f, 0x38, 0xda, 0x87, 0x5d, 0xb8, 0x05, 0xc1, 0xc2, 0x6f, 0x70, 0x0a, 0xf0, 0x3d, 0x38, 0x6a, 0xe9, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x13, 0x56, 0x87, 0x16, 0x40, 0xc7, 0xa1, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x90, 0x0c, 0xe4, 0x57, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x8e, 0xb4, 0xba, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x21, 0x86, 0x83, 0x60, 0x83, 0xb3, 0xc5, 0xf0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x93, 0x7f, 0xef, 0xc1, 0x59, 0x95, 0xf9, 0x38, 0x74, 0x30, 0xb2, 0xac, 0x8e, 0x43, 0x87, 0x86, 0x5f, 0xc7, 0xa1, 0x41, 0xb0, 0xc1, 0x31, 0x9a, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xc7, 0x63, 0xe1, 0x83, 0x13, 0x40, 0xf3, 0xa1, 0xe1, 0xd7, 0x71, 0xe8, 0x78, 0xbc, 0xc1, 0x49, 0x9e, 0x77, 0x10, 0x2c, 0x48, 0x06, 0xca, 0xd2, 0x61, 0x85, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0xd9, 0xe0, 0x6c, 0xd2, 0x7b, 0x30, 0x36, 0x5c, 0x8f, 0x43, 0x0b, 0x82, 0x0d, 0xce, 0x91, 0xbd, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x10, 0xab, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0x70, 0x68, 0xd2, 0x3d, 0x28, 0x19, 0x9a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x14, 0x87, 0x1a, 0x87, 0x1e, 0x42, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x06, 0x9a, 0xd3, 0xc1, 0x49, 0x7e, 0xf9, 0x38, 0x74, 0x3c, 0x5e, 0x41, 0xb0, 0x78, 0x30, 0x98, 0xd0, 0x16, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x38, 0x34, 0xe9, 0x1e, 0x9c, 0x20, 0x7c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x14, 0x87, 0x1a, 0x07, 0x83, 0x68, 0xe5, 0x38, 0x34, 0x08, 0x16, 0x87, 0x5d, 0x10, 0x6c, 0x70, 0xd2, 0xf5, 0x3d, 0x34, 0x6a, 0x59, 0xd8, 0x0d, 0x0d, 0xbf, 0xd6, 0x60, 0xdc, 0xee, 0x6e, 0x88, 0xe1, 0x06, 0x41, 0x12, 0x3d, 0x08, 0x36, 0x18, 0xb1, 0xad, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xb7, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x21, 0x86, 0x83, 0x60, 0x83, 0xf3, 0xd0, 0xef, 0xa1, 0x51, 0xcb, 0xc1, 0x58, 0xec, 0x3c, 0x0e, 0x4d, 0x30, 0xf5, 0xc7, 0xa1, 0x41, 0xb0, 0x82, 0x60, 0x41, 0x32, 0xd0, 0xd6, 0xe9, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x07, 0x63, 0xb1, 0xf3, 0x38, 0x34, 0x08, 0x36, 0x38, 0x60, 0x3d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x07, 0x67, 0xa3, 0xe7, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x82, 0x64, 0x20, 0x7c, 0x07, 0xe3, 0x5d, 0xe7, 0xe0, 0x04, 0xe1, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x08, 0x9b, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0x4e, 0xbc, 0xcf, 0x07, 0xe3, 0x0e, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x61, 0x17, 0x04, 0x0b, 0x92, 0xc1, 0x97, 0x83, 0xe1, 0x1f, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x98, 0x83, 0x20, 0xe7, 0x3f, 0x44, 0xf3, 0x38, 0xb4, 0x20, 0x58, 0x90, 0x0c, 0xfe, 0x1c, 0x0c, 0xff, 0xd8, 0x83, 0xd3, 0x0a, 0xf4, 0x21, 0x86, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x82, 0x64, 0x20, 0x7c, 0x07, 0xc3, 0xd0, 0xe7, 0xa0, 0x64, 0x68, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xcc, 0x16, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0x27, 0x42, 0xe8, 0x83, 0x71, 0x07, 0x75, 0xe8, 0xa0, 0x71, 0x1c, 0x1a, 0x76, 0xe1, 0x16, 0x04, 0x0b, 0xbf, 0x20, 0x19, 0x08, 0xdf, 0xc1, 0xf0, 0x8f, 0x3d, 0x38, 0x6a, 0xe9, 0x1e, 0x0c, 0x4e, 0x9f, 0x43, 0x2b, 0xf1, 0x85, 0x5d, 0xb8, 0x0d, 0xce, 0xbc, 0xb3, 0x13, 0xa4, 0xfe, 0x17, 0x04, 0x0b, 0x92, 0x81, 0x52, 0x77, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1c, 0x82, 0x82, 0x37, 0x28, 0x09, 0x1a, 0x0e, 0x06, 0x7e, 0xc8, 0x71, 0x68, 0xd8, 0x85, 0xdb, 0x60, 0xe0, 0x1b, 0x1f, 0x9c, 0x28, 0xa2, 0x37, 0x38, 0x6c, 0x44, 0x0f, 0xbb, 0x70, 0x1b, 0x9c, 0x23, 0x77, 0x0f, 0x4e, 0x14, 0xd1, 0x0b, 0x82, 0x0d, 0xce, 0x1e, 0xd1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x06, 0xcf, 0x76, 0x1e, 0x1c, 0x85, 0xa2, 0x8f, 0x43, 0xc3, 0x2e, 0xdc, 0x06, 0x27, 0xbd, 0xdd, 0x83, 0x13, 0x45, 0xf4, 0x06, 0x67, 0xc4, 0xe8, 0x41, 0xb6, 0x86, 0xf6, 0xeb, 0xc3, 0x6d, 0x30, 0xa4, 0x7e, 0x0f, 0x4e, 0x14, 0xd1, 0x83, 0x60, 0x83, 0xb3, 0x47, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0xc1, 0xbb, 0x85, 0x07, 0x47, 0xa1, 0xe8, 0xe3, 0xd0, 0x20, 0x58, 0x90, 0x0c, 0xc4, 0xea, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x41, 0x31, 0x5b, 0x30, 0x08, 0x16, 0x24, 0x83, 0x92, 0x83, 0x93, 0xd0, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x5d, 0x3a, 0x18, 0x8e, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x21, 0x86, 0x83, 0x60, 0xe1, 0x37, 0x38, 0x87, 0x43, 0x1f, 0x1c, 0x36, 0x75, 0x0f, 0x46, 0xc2, 0xea, 0x41, 0x09, 0x29, 0x71, 0x1c, 0x9a, 0x20, 0xeb, 0x7f, 0x1c, 0x3a, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf5, 0x43, 0xfc, 0x07, 0xd1, 0x82, 0xf2, 0x43, 0x0b, 0xa0, 0xc3, 0x8e, 0xc9, 0xf1, 0xed, 0x78, 0xbc, 0x82, 0x60, 0x71, 0x83, 0x61, 0xb7, 0xdb, 0xe2, 0xb0, 0x0b, 0xbb, 0xb0, 0x1b, 0x04, 0xc3, 0xfe, 0xc2, 0x6d, 0x30, 0xa4, 0x7e, 0x0f, 0xc6, 0x4f, 0xd7, 0xe1, 0x68, 0xdf, 0x10, 0xc3, 0x61, 0x17, 0x76, 0x83, 0x60, 0xd8, 0x5f, 0xb8, 0x0d, 0x46, 0x83, 0xef, 0xc1, 0xf8, 0xe9, 0x3a, 0x1c, 0xed, 0x87, 0x74, 0xee, 0x86, 0x68, 0x0e, 0xa2, 0x05, 0xf1, 0x20, 0xd8, 0xe0, 0x84, 0xe1, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0x82, 0x30, 0x1f, 0xf2, 0xb5, 0xc7, 0xa1, 0x43, 0x34, 0x8f, 0xc7, 0x0b, 0xbf, 0x20, 0x58, 0x1c, 0x78, 0x37, 0xfa, 0x60, 0x8c, 0xa1, 0x2d, 0x0e, 0xbb, 0x70, 0x1b, 0x0c, 0xd3, 0x89, 0x43, 0x0c, 0x37, 0x9c, 0x62, 0x83, 0x60, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x48, 0x7d, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0x06, 0x7f, 0xcc, 0x71, 0x68, 0xd8, 0x85, 0xdd, 0xd0, 0x31, 0x6c, 0x43, 0x0c, 0x87, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0x5f, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0xe0, 0xe0, 0xfc, 0xe8, 0x7b, 0x1c, 0x3a, 0xa4, 0x73, 0x17, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0x59, 0x39, 0x18, 0xef, 0x3a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xec, 0x06, 0xc7, 0x0e, 0xea, 0x05, 0xc1, 0x82, 0x64, 0xf0, 0xe7, 0x60, 0xbc, 0xeb, 0x1c, 0x9c, 0x5f, 0xa8, 0x0f, 0x31, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x6c, 0x31, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xb0, 0x0b, 0xb7, 0x20, 0x19, 0xb8, 0xeb, 0x0e, 0x2b, 0xb4, 0x07, 0xa3, 0xc1, 0x77, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x05, 0xc1, 0x06, 0x27, 0x4c, 0xe6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x41, 0x12, 0x3d, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x50, 0xee, 0x0e, 0x2b, 0xb4, 0xc7, 0xa1, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0xe0, 0xe4, 0xdf, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x14, 0x51, 0x7d, 0x10, 0x24, 0xd1, 0xc7, 0xa1, 0x43, 0x0c, 0x8f, 0x43, 0xc7, 0xa1, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0xbc, 0x20, 0xd8, 0xe0, 0xc0, 0xb3, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x18, 0xad, 0x7b, 0x70, 0x36, 0x7a, 0x3e, 0x0e, 0x0d, 0xa2, 0xc5, 0x05, 0xc1, 0x06, 0xe7, 0x76, 0xdf, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x45, 0x68, 0xc2, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0x70, 0xea, 0xf5, 0x3d, 0x18, 0x77, 0x50, 0x07, 0x03, 0x5b, 0xf4, 0x38, 0x34, 0x08, 0x36, 0x18, 0xb0, 0x3c, 0x07, 0xa7, 0xc1, 0xea, 0x43, 0x0b, 0xa0, 0xe1, 0x37, 0x28, 0x75, 0xf7, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0x70, 0x36, 0x7a, 0x5e, 0xd8, 0x85, 0x5b, 0x90, 0x0c, 0xdc, 0x75, 0x07, 0x41, 0xce, 0x7f, 0x30, 0x1a, 0x7c, 0x37, 0x9c, 0x62, 0xc3, 0x2e, 0xdc, 0x06, 0xe7, 0xa3, 0xe0, 0x43, 0xb2, 0x63, 0x0d, 0xc6, 0xed, 0xee, 0x86, 0x18, 0x0e, 0x92, 0x81, 0xe1, 0x3b, 0x08, 0x72, 0xfe, 0x61, 0x17, 0x6e, 0x31, 0xf8, 0xb9, 0xf6, 0x90, 0xec, 0xd8, 0xe0, 0x60, 0x66, 0x3d, 0xec, 0xc2, 0x6d, 0x70, 0x36, 0x0d, 0x3e, 0x24, 0x3b, 0xd6, 0x60, 0xdc, 0xee, 0x6e, 0x88, 0xe1, 0x20, 0x19, 0xdc, 0x3a, 0x08, 0x72, 0xfe, 0x61, 0x17, 0x6e, 0x83, 0xd3, 0x69, 0xf4, 0x21, 0xd9, 0xb1, 0xc1, 0x21, 0xd6, 0x7a, 0xd8, 0x85, 0xdb, 0xe0, 0xc8, 0x20, 0x7c, 0x48, 0x76, 0x2c, 0xec, 0x06, 0xc1, 0xc3, 0xbd, 0x06, 0xe3, 0x76, 0x77, 0x43, 0x0c, 0x87, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0x82, 0x72, 0x30, 0xfc, 0x63, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x1c, 0x98, 0x77, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x1c, 0xe5, 0x77, 0x0f, 0x8d, 0x5a, 0x8e, 0x43, 0xc7, 0xa1, 0x0d, 0xce, 0x72, 0xd6, 0x07, 0xe7, 0x5e, 0xeb, 0x0d, 0xc6, 0xed, 0xee, 0x86, 0x18, 0x0e, 0xbb, 0x20, 0x58, 0x90, 0x0c, 0xe4, 0x57, 0x0e, 0x86, 0x7f, 0xec, 0xc1, 0x11, 0xe5, 0xfa, 0xe0, 0x80, 0x77, 0x3d, 0xec, 0xc2, 0x2d, 0x06, 0xef, 0x46, 0x1f, 0x92, 0x1d, 0x1b, 0x9c, 0xf6, 0xad, 0x07, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0xb7, 0xc1, 0x59, 0x42, 0xfa, 0x90, 0xec, 0x38, 0x38, 0x20, 0x5e, 0x0f, 0xbf, 0x20, 0x5a, 0x20, 0xf4, 0x83, 0x60, 0x41, 0x32, 0x30, 0x76, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x18, 0x63, 0x4f, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0x42, 0x3f, 0xec, 0x06, 0xa7, 0x2a, 0xeb, 0x0d, 0x42, 0x3e, 0x7b, 0xd8, 0x0d, 0x0e, 0xcf, 0xd6, 0x0b, 0xa2, 0x85, 0x0e, 0x73, 0x70, 0x36, 0x7a, 0x3e, 0x08, 0xf9, 0xec, 0x61, 0x37, 0x38, 0x14, 0x5a, 0x2f, 0xec, 0xc2, 0x2e, 0xdc, 0xc6, 0xa1, 0x43, 0x0c, 0x17, 0x76, 0x83, 0xe0, 0xe1, 0x3e, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0xc2, 0x2e, 0xec, 0xc2, 0x6d, 0x50, 0x84, 0x26, 0x0c, 0x92, 0x81, 0x72, 0x77, 0x10, 0xe4, 0xfc, 0x0b, 0xbb, 0xb0, 0x1b, 0x1c, 0x65, 0xac, 0x0f, 0xeb, 0x9b, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x5f, 0x10, 0x2d, 0x74, 0x10, 0x6c, 0x70, 0x94, 0xdf, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x4e, 0x50, 0xf5, 0x8f, 0x43, 0x07, 0x21, 0x9f, 0x3d, 0x08, 0x16, 0x04, 0x1b, 0x1c, 0xe5, 0x77, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x41, 0x70, 0x30, 0xfc, 0x63, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9c, 0x01, 0xb2, 0x0f, 0x8d, 0xe7, 0x8f, 0x43, 0xc7, 0xa1, 0x61, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xa0, 0x1c, 0x0c, 0x47, 0xe9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xb6, 0x4e, 0x07, 0xc3, 0x3f, 0xf6, 0x60, 0x50, 0x03, 0x1f, 0x1c, 0xed, 0x87, 0x8f, 0x43, 0x2b, 0x08, 0x16, 0x7e, 0x83, 0x13, 0x21, 0xf4, 0xc1, 0x09, 0xc2, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x31, 0x5b, 0x70, 0x68, 0x3c, 0x7f, 0x1c, 0x3a, 0x0e, 0x0d, 0xa2, 0x85, 0x0e, 0x82, 0x0d, 0x8e, 0xda, 0xc3, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x09, 0xae, 0xfe, 0xe3, 0xd0, 0xc1, 0x18, 0x7b, 0x3a, 0x08, 0xf9, 0xec, 0x61, 0x37, 0x38, 0x81, 0x5a, 0x2f, 0xec, 0x06, 0x27, 0x40, 0xec, 0x0d, 0x42, 0x3e, 0xfb, 0xe0, 0xac, 0x85, 0x3d, 0xec, 0x06, 0x47, 0x75, 0xeb, 0x85, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x10, 0xf2, 0xd9, 0x83, 0x60, 0x83, 0x43, 0xd0, 0xf5, 0xb0, 0x0b, 0xbb, 0xc1, 0x79, 0x82, 0x77, 0x61, 0x37, 0x18, 0x03, 0x0b, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0x08, 0x36, 0x38, 0x9f, 0xf0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0x30, 0x68, 0x1f, 0x8c, 0x0d, 0xd7, 0xe3, 0xd0, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0x4a, 0x9a, 0x86, 0xe1, 0x37, 0x9e, 0x0f, 0xa2, 0x85, 0x0e, 0x73, 0x70, 0x06, 0xc8, 0x3e, 0x18, 0x63, 0x4f, 0xc3, 0x6e, 0x70, 0xda, 0xe3, 0xdd, 0x60, 0x8c, 0x3d, 0x1d, 0x9c, 0xb9, 0xb5, 0x87, 0xdd, 0xe0, 0x0c, 0x7e, 0xbd, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0x42, 0x3e, 0x7b, 0x10, 0x6c, 0x70, 0x08, 0xba, 0x3e, 0x38, 0xd1, 0x6b, 0x0f, 0xb2, 0x35, 0xb4, 0x5f, 0x3f, 0x38, 0xf9, 0x5e, 0x0f, 0xbb, 0xc1, 0xa8, 0x97, 0xdc, 0x20, 0xe4, 0xb3, 0x07, 0xc1, 0x06, 0x87, 0xa0, 0xeb, 0x61, 0x37, 0x38, 0x4f, 0xf0, 0x2e, 0xec, 0x06, 0x63, 0x60, 0xe1, 0xe0, 0xf0, 0xaf, 0x7d, 0x70, 0xa2, 0xd7, 0x3e, 0x1e, 0x0f, 0xbf, 0x20, 0x5a, 0x20, 0xf4, 0xc3, 0x2e, 0xdc, 0x82, 0x60, 0x41, 0x32, 0xd0, 0xd6, 0xe9, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x07, 0x67, 0x80, 0xec, 0xe3, 0xd0, 0x30, 0x07, 0x27, 0x1f, 0xe8, 0x05, 0xd1, 0xe2, 0x82, 0x60, 0xe1, 0x37, 0x38, 0xf1, 0x3e, 0x1f, 0x94, 0x0c, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x25, 0x28, 0xfa, 0x87, 0xc6, 0xf3, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x19, 0x78, 0xdf, 0xe9, 0x60, 0x18, 0xfa, 0x1c, 0x9c, 0x79, 0xb7, 0x0f, 0x42, 0x3e, 0xfb, 0x20, 0xe4, 0xb3, 0x8f, 0xc7, 0xc3, 0x6e, 0x70, 0xfe, 0xb0, 0xde, 0xe0, 0x60, 0x66, 0x3d, 0xec, 0x06, 0x47, 0x19, 0xeb, 0x35, 0x18, 0xb7, 0xbb, 0x1b, 0x62, 0x78, 0x10, 0xf2, 0xd9, 0xc3, 0x2e, 0xdc, 0x82, 0x60, 0xe1, 0x37, 0x38, 0xf1, 0x3e, 0x1f, 0x1c, 0xb5, 0x74, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x9c, 0x75, 0x07, 0x41, 0xce, 0x7f, 0x70, 0x74, 0xe0, 0x3e, 0x0e, 0x1d, 0x8e, 0xf6, 0xc5, 0x83, 0x62, 0xf7, 0xfc, 0xe0, 0xa8, 0xc6, 0x7d, 0x38, 0xc5, 0x86, 0x5d, 0xb8, 0x0d, 0xce, 0xd1, 0xd4, 0x07, 0xe3, 0x76, 0x77, 0x61, 0x17, 0x76, 0x83, 0xd1, 0xb1, 0xbe, 0x70, 0x1b, 0x8c, 0xdb, 0xdd, 0x83, 0x90, 0x02, 0x3f, 0x1c, 0xed, 0x0b, 0xbb, 0x70, 0x0b, 0x82, 0x0d, 0x46, 0xa7, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x72, 0x30, 0x32, 0x7b, 0x8f, 0x43, 0x07, 0x83, 0xbb, 0x72, 0xe3, 0xd0, 0x06, 0xe3, 0x76, 0x77, 0x43, 0x0c, 0x07, 0xc9, 0xc0, 0xf0, 0x1d, 0x56, 0x68, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xd8, 0xea, 0xce, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0x20, 0xd8, 0xe0, 0xd4, 0xcc, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xc7, 0xbd, 0xde, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x4e, 0x09, 0xbd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x09, 0x9f, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0xa0, 0xf4, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x45, 0xea, 0xd3, 0xc1, 0xa8, 0xc2, 0x1e, 0x76, 0x41, 0xb0, 0x20, 0x19, 0xd4, 0x1c, 0x8c, 0x77, 0x9d, 0x83, 0xf3, 0x0b, 0xf5, 0x86, 0x54, 0xcd, 0x20, 0x58, 0xd8, 0x0d, 0xce, 0xce, 0xd4, 0x0b, 0x82, 0x0d, 0x4e, 0x8c, 0xd4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xce, 0x8f, 0xbe, 0x87, 0xd4, 0xc1, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0x9c, 0xfc, 0x7b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xe2, 0x7f, 0x70, 0x8a, 0xa8, 0x3e, 0x0e, 0x0d, 0xbb, 0xc1, 0xd1, 0xd6, 0x77, 0x83, 0x03, 0xd0, 0xef, 0x21, 0x86, 0x83, 0x60, 0x41, 0x32, 0x10, 0x9c, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xa4, 0xf9, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xe6, 0x90, 0xad, 0x38, 0xa4, 0x6a, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb4, 0xb8, 0x20, 0xd8, 0xe0, 0x8c, 0xf7, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xec, 0x38, 0x38, 0x1f, 0x57, 0x1f, 0x87, 0x06, 0xc1, 0x06, 0xe3, 0xb6, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x31, 0x5a, 0xf7, 0x90, 0x98, 0x39, 0x0e, 0x1d, 0xf6, 0x0a, 0x8f, 0xc7, 0x1b, 0x1a, 0xea, 0x0c, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0xe1, 0x17, 0x44, 0x0b, 0x3b, 0x08, 0xd6, 0xe0, 0x48, 0xe0, 0x3d, 0x08, 0x36, 0x18, 0x68, 0x4e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xcc, 0x20, 0x19, 0xe6, 0x90, 0x5c, 0x3a, 0x34, 0x9e, 0x3f, 0x0e, 0x0d, 0x82, 0x85, 0x5d, 0x10, 0x6c, 0x70, 0x8c, 0x66, 0x3e, 0x18, 0x75, 0x5c, 0x0b, 0x82, 0x0d, 0x4e, 0x8c, 0xd4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xe3, 0x72, 0x88, 0xe6, 0x71, 0xe8, 0x10, 0xc3, 0x41, 0xb0, 0xb0, 0x0b, 0xb7, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x7b, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x70, 0x30, 0x36, 0x5c, 0x8f, 0x43, 0x83, 0x60, 0x83, 0xe3, 0x09, 0xf8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x9c, 0xea, 0x86, 0x0f, 0xc6, 0x86, 0xeb, 0x71, 0x68, 0xe3, 0xd0, 0x20, 0xd8, 0x60, 0xc4, 0xb6, 0x1e, 0x1c, 0x6f, 0xc0, 0x07, 0xd1, 0xe2, 0x82, 0x60, 0x83, 0x53, 0xee, 0xf3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x20, 0xc5, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x18, 0xff, 0x7c, 0x30, 0xb0, 0x45, 0x8f, 0x43, 0x83, 0x60, 0x83, 0x21, 0x3e, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x18, 0xad, 0x7b, 0x10, 0x22, 0xfe, 0xc7, 0xa1, 0x83, 0xc0, 0xc4, 0x3e, 0x1e, 0x0f, 0x82, 0x15, 0x04, 0x0b, 0x92, 0x81, 0xde, 0x7d, 0x07, 0x41, 0xce, 0x7f, 0xe8, 0xa0, 0x31, 0x08, 0x16, 0x7e, 0x83, 0x43, 0x93, 0xee, 0x20, 0x19, 0x08, 0xdf, 0xf1, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x6b, 0x77, 0x50, 0x90, 0xed, 0x1c, 0x87, 0x06, 0xc1, 0x82, 0x64, 0x20, 0xdb, 0x75, 0x58, 0xa1, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x42, 0x00, 0xfc, 0xa0, 0xa0, 0x28, 0x1a, 0x7e, 0xe3, 0xf9, 0x70, 0x4b, 0x48, 0x0e, 0x31, 0x3c, 0x0e, 0x1d, 0x8f, 0x17, 0x76, 0xe1, 0x36, 0x18, 0xf8, 0xc6, 0x87, 0x46, 0x82, 0x1b, 0x9c, 0xf4, 0x76, 0x87, 0x5d, 0xb8, 0x0d, 0x4e, 0x7a, 0xbb, 0x87, 0x46, 0x82, 0x1b, 0x0c, 0x7c, 0xe3, 0x41, 0xb6, 0xa1, 0xf9, 0xfa, 0xa1, 0x91, 0xe0, 0x1a, 0x12, 0x53, 0x0b, 0x82, 0x0d, 0x06, 0xdc, 0xee, 0xe2, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x63, 0x75, 0xf7, 0x70, 0xb4, 0x6f, 0x48, 0x1d, 0x0c, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x37, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0xc1, 0xdd, 0xc1, 0xcb, 0xc1, 0xcb, 0xc1, 0xc9, 0x41, 0xdb, 0xe0, 0xe6, 0xe0, 0xec, 0xe0, 0xef, 0xe0, 0xe1, 0xc1, 0x81, 0xa6, 0xef, 0xf8, 0x76, 0x3c, 0x3e, 0x9c, 0x62, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x36, 0x38, 0x61, 0x38, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0x0e, 0x4d, 0xba, 0x07, 0xe3, 0x0e, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xb0, 0x52, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0xe0, 0x48, 0xe0, 0x7d, 0x1c, 0x3a, 0x0e, 0x1d, 0xb2, 0x76, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x73, 0x64, 0xef, 0xe2, 0xb0, 0x0b, 0xb7, 0xc1, 0x39, 0x86, 0xf9, 0xe0, 0xfc, 0xc4, 0xbc, 0xb0, 0x0b, 0xb7, 0x20, 0xd8, 0xe0, 0xa0, 0xa4, 0x7b, 0x70, 0x54, 0x71, 0x3e, 0x1c, 0xed, 0x0b, 0xb7, 0x20, 0xd8, 0x60, 0x0c, 0x2d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x4e, 0x90, 0xba, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x0e, 0x80, 0xce, 0x07, 0x47, 0x15, 0xe7, 0xe3, 0xd0, 0xa1, 0x63, 0xd8, 0x71, 0xe8, 0x60, 0x68, 0x76, 0x0d, 0xb7, 0x20, 0xd8, 0x60, 0x0c, 0x2d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0xd4, 0x8d, 0x1f, 0x8c, 0x0b, 0xb3, 0xe3, 0xd0, 0x41, 0x50, 0x7a, 0x1f, 0x8e, 0xf6, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0xdc, 0xe6, 0xbc, 0x38, 0x08, 0x36, 0x38, 0xf1, 0x39, 0x0f, 0x82, 0xc5, 0x61, 0x37, 0x38, 0xe6, 0x3a, 0x2f, 0x08, 0x36, 0x38, 0x4f, 0x3d, 0x0f, 0x82, 0x0d, 0x8e, 0xb5, 0xcf, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x29, 0x10, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x31, 0x5b, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x29, 0x17, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x43, 0x52, 0xef, 0x38, 0x74, 0x1c, 0x1a, 0x76, 0x61, 0x17, 0x76, 0x83, 0x72, 0xac, 0xe1, 0xb0, 0xbe, 0xb9, 0xb0, 0x1b, 0x1c, 0xb0, 0xa1, 0x0f, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0xb0, 0x1b, 0x1c, 0x13, 0xa2, 0x17, 0x04, 0x1b, 0x9c, 0x3d, 0xa2, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xe0, 0x80, 0x68, 0x7d, 0x70, 0x14, 0x8a, 0x3e, 0x0e, 0x0d, 0xbb, 0xc1, 0x11, 0x2b, 0x7a, 0x83, 0x43, 0x34, 0xf9, 0xb0, 0x1b, 0x9c, 0xeb, 0xa2, 0x17, 0x04, 0x1b, 0x9c, 0x3d, 0xa2, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1c, 0x40, 0x83, 0x0f, 0x8e, 0x42, 0xd1, 0xc7, 0xa1, 0x61, 0x37, 0x38, 0xf5, 0x46, 0x6f, 0x70, 0x08, 0x29, 0x1f, 0x64, 0x1b, 0x9c, 0xb7, 0xa3, 0x07, 0xc1, 0x06, 0x67, 0x8f, 0xe8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x38, 0x05, 0x5f, 0x1f, 0x1c, 0x85, 0xa2, 0x8f, 0x43, 0x83, 0x60, 0x83, 0x33, 0x9e, 0xf4, 0x20, 0x58, 0x1c, 0x76, 0x41, 0xb0, 0xc1, 0xf9, 0xca, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0x41, 0xd7, 0xff, 0xe3, 0xd0, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x19, 0xfc, 0x39, 0x38, 0x7b, 0x19, 0x1f, 0x1c, 0x77, 0xcb, 0x87, 0xdd, 0x60, 0xd4, 0x4b, 0xae, 0xc1, 0xb8, 0xdd, 0xdd, 0x10, 0xc3, 0x41, 0x32, 0x30, 0x7c, 0x07, 0xc3, 0x51, 0x7a, 0xd8, 0x0d, 0xca, 0x06, 0xa1, 0x35, 0x18, 0xb7, 0xbb, 0x1b, 0x62, 0xb8, 0x04, 0x4d, 0xff, 0x8f, 0x43, 0x83, 0x60, 0x41, 0x32, 0x10, 0xab, 0x83, 0xe1, 0x28, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xc1, 0xa9, 0xc6, 0xfc, 0x38, 0x34, 0x08, 0x16, 0x24, 0x83, 0xd1, 0xc1, 0xf0, 0x8f, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xb4, 0xfe, 0x1f, 0x24, 0x83, 0x7b, 0x07, 0xc3, 0x3f, 0x76, 0x10, 0x2d, 0xb0, 0xf5, 0x7f, 0x48, 0x1d, 0x0c, 0xa2, 0x85, 0x9d, 0x60, 0xeb, 0xff, 0x78, 0x7c, 0x1c, 0x3a, 0xbe, 0x0d, 0x82, 0x05, 0xc9, 0x60, 0x74, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0x46, 0x7f, 0x90, 0x0c, 0xee, 0x1d, 0xb2, 0x15, 0x07, 0x27, 0x70, 0xe9, 0xe3, 0xd0, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xfc, 0xb1, 0x37, 0x33, 0xf6, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0x2e, 0x08, 0x16, 0x37, 0x18, 0x76, 0xbb, 0x07, 0xc3, 0x6e, 0x77, 0x71, 0xd8, 0x85, 0xdd, 0xe0, 0xdc, 0x31, 0xbd, 0x21, 0x86, 0xc3, 0x2e, 0xec, 0x06, 0xa3, 0x17, 0x6b, 0xe1, 0x36, 0x18, 0x52, 0xbf, 0x87, 0x46, 0x82, 0x87, 0xa3, 0xfd, 0x90, 0xce, 0xdd, 0x60, 0xc0, 0xed, 0x0e, 0xbb, 0xc1, 0xe1, 0x68, 0x7a, 0x61, 0x17, 0x76, 0x83, 0xd1, 0x8b, 0xb5, 0x70, 0x1b, 0x8c, 0x06, 0xdf, 0x43, 0x23, 0xc1, 0xc3, 0xd1, 0xbe, 0x06, 0xa3, 0xc1, 0xf7, 0x60, 0xb4, 0xcb, 0x0d, 0xbb, 0x70, 0x4b, 0xf8, 0x7b, 0x88, 0xe1, 0x06, 0x03, 0x6e, 0x77, 0x83, 0xd1, 0xe0, 0x3b, 0xdc, 0x06, 0x43, 0xb3, 0xeb, 0xd0, 0x49, 0x6d, 0xd8, 0x0d, 0x0e, 0xb5, 0xe7, 0x0b, 0xbb, 0x70, 0x4b, 0xf8, 0x79, 0x88, 0xe1, 0x06, 0x03, 0x6e, 0x77, 0x83, 0xd1, 0xe0, 0x3b, 0xdc, 0x86, 0x86, 0x3a, 0x07, 0x41, 0xe9, 0x3d, 0xec, 0xc2, 0x6e, 0x70, 0x0e, 0x41, 0xdf, 0x10, 0xc3, 0x61, 0x37, 0x38, 0x9f, 0x9f, 0x1f, 0xd2, 0xb9, 0x6b, 0x30, 0x6e, 0x77, 0x17, 0xee, 0xd0, 0x06, 0xf4, 0xe0, 0x68, 0xd6, 0x3d, 0xec, 0x06, 0x87, 0x3c, 0xf4, 0x05, 0xc1, 0x82, 0x64, 0x30, 0x3b, 0xac, 0xd0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0x88, 0x77, 0x1f, 0x9a, 0x25, 0x1d, 0x87, 0x86, 0x5f, 0x10, 0x2d, 0x10, 0xfa, 0x41, 0x32, 0xb8, 0x77, 0x58, 0xa1, 0x3d, 0x1e, 0x0f, 0x82, 0x05, 0xc9, 0x60, 0x74, 0x58, 0xa1, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0xe0, 0x48, 0x89, 0x7e, 0x1c, 0x3a, 0x1e, 0xaf, 0x20, 0xd8, 0x60, 0xc0, 0xed, 0x2e, 0x0e, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0x50, 0x82, 0x40, 0x1e, 0x8e, 0xf6, 0x0d, 0x06, 0xdc, 0xee, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x23, 0xc0, 0xf7, 0x70, 0xb4, 0xaf, 0xc1, 0x68, 0xf0, 0x3d, 0x8c, 0xcb, 0xf0, 0x0b, 0xa2, 0x05, 0x42, 0x7f, 0x30, 0xa4, 0x7e, 0x8f, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0xd9, 0x62, 0xf8, 0xd0, 0x89, 0x68, 0xd8, 0x05, 0xc1, 0x06, 0x27, 0x5d, 0xdf, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xa1, 0xe9, 0xd0, 0x71, 0x68, 0x41, 0xb0, 0xc1, 0xe0, 0xae, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0xc6, 0xed, 0xee, 0x86, 0x1e, 0x42, 0x1b, 0x62, 0x78, 0x68, 0x96, 0x34, 0xfc, 0xc6, 0xf3, 0x0d, 0xc6, 0xed, 0xee, 0x86, 0x18, 0x6e, 0x68, 0x5c, 0x34, 0x08, 0x16, 0x24, 0x03, 0xad, 0xfb, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x12, 0x0d, 0xe7, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x64, 0xa0, 0x5c, 0x1d, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9c, 0x9a, 0xd3, 0x87, 0xdf, 0x78, 0xbe, 0xc1, 0xb8, 0xdd, 0xdd, 0x10, 0xc3, 0x0d, 0x8e, 0xce, 0xd5, 0x07, 0xa7, 0x03, 0xf5, 0xe3, 0xd0, 0xf1, 0x78, 0x05, 0xc1, 0xe2, 0x06, 0xc3, 0x6e, 0xf7, 0xe0, 0x28, 0x75, 0xbe, 0x38, 0x08, 0x16, 0x24, 0x83, 0x5b, 0x87, 0xe4, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xf9, 0x3a, 0x24, 0x97, 0x0e, 0xc6, 0x68, 0xc4, 0xa1, 0x63, 0xd8, 0x71, 0xe8, 0x78, 0xbc, 0x82, 0x60, 0x83, 0x43, 0xd4, 0xf9, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0xec, 0xd7, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xf6, 0xea, 0x90, 0x5c, 0x3a, 0x28, 0x97, 0x68, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0xf1, 0xe0, 0xa8, 0x9d, 0x7c, 0x3c, 0x3e, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x24, 0x03, 0x67, 0xd5, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x06, 0xe3, 0x76, 0x77, 0x43, 0x0c, 0x0f, 0x8b, 0x7c, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x01, 0xb7, 0xbb, 0x38, 0xec, 0x06, 0x67, 0x0a, 0xf1, 0x85, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0x18, 0x99, 0xbd, 0x6b, 0x30, 0x6e, 0x77, 0x37, 0x34, 0x12, 0x3c, 0x38, 0x9a, 0x75, 0x0f, 0xbb, 0xa1, 0x91, 0xe0, 0x82, 0x60, 0x41, 0x32, 0x10, 0xab, 0xc3, 0x0a, 0xed, 0xa1, 0x05, 0xd8, 0xf0, 0x1b, 0x1c, 0x8b, 0xd1, 0x07, 0xc1, 0x06, 0x47, 0x71, 0xf4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0x4e, 0xf6, 0xeb, 0xc7, 0xa1, 0x43, 0xea, 0xe0, 0x78, 0x3c, 0x08, 0x36, 0x18, 0x70, 0xbb, 0x8b, 0xc3, 0x6e, 0x70, 0xa6, 0x10, 0x5f, 0xd8, 0x0d, 0x8e, 0xc7, 0xeb, 0x1b, 0x9c, 0xad, 0xd7, 0x87, 0xdd, 0xd0, 0x48, 0x70, 0x41, 0xb0, 0x41, 0x71, 0x43, 0x70, 0x68, 0x01, 0x36, 0xfc, 0x06, 0xc7, 0x62, 0xf4, 0x41, 0xb0, 0xc1, 0x51, 0x1c, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0x03, 0x20, 0xfb, 0x71, 0xe8, 0x90, 0x3a, 0x38, 0x1e, 0x2f, 0x08, 0x36, 0x18, 0x70, 0xbb, 0x8b, 0xc3, 0x6e, 0x30, 0x56, 0x77, 0x37, 0x34, 0x12, 0x1c, 0x76, 0x83, 0x11, 0xe0, 0xbb, 0x61, 0x5c, 0x06, 0xd9, 0x06, 0x67, 0x0e, 0xdd, 0x43, 0x0c, 0x8f, 0xc7, 0x0b, 0x82, 0x0d, 0x0e, 0x51, 0xe7, 0x8b, 0xc3, 0x6e, 0x70, 0x34, 0x3b, 0xdf, 0x60, 0xc0, 0xed, 0x0e, 0xbb, 0xc1, 0xe1, 0x68, 0x7a, 0x61, 0x37, 0x38, 0xd4, 0x9e, 0x1f, 0x9c, 0xe7, 0xcf, 0x87, 0xdd, 0xe0, 0x50, 0x7b, 0xbe, 0x06, 0xe3, 0x76, 0x77, 0x83, 0x53, 0x0f, 0xfa, 0xc1, 0xd1, 0xac, 0x7b, 0xd8, 0x0d, 0xce, 0x21, 0xe8, 0x0b, 0xbb, 0xc1, 0xf9, 0xfc, 0x7c, 0x83, 0x01, 0xb7, 0x7b, 0x70, 0x86, 0x43, 0x1f, 0x76, 0x83, 0xf3, 0xf9, 0xf9, 0x1a, 0x8c, 0x06, 0xdf, 0x83, 0x43, 0x1e, 0xfa, 0xb0, 0x1b, 0x1c, 0xf2, 0xd0, 0x17, 0x04, 0x1b, 0x8c, 0x4a, 0xd2, 0x83, 0x33, 0x29, 0xfa, 0xf0, 0x1b, 0x1c, 0x8b, 0xd1, 0x07, 0xc1, 0x06, 0x47, 0x71, 0xf4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0x0e, 0xbd, 0xed, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x06, 0xdc, 0xee, 0xe2, 0xb0, 0x1b, 0x9c, 0x43, 0xd2, 0x37, 0x18, 0x70, 0xbb, 0xc3, 0x6e, 0x70, 0x16, 0x4a, 0xdf, 0xe0, 0x94, 0x95, 0x3e, 0xec, 0x06, 0xc7, 0xe3, 0xf5, 0x35, 0x18, 0xf8, 0xc6, 0x1b, 0x1a, 0x09, 0x1e, 0x12, 0x53, 0x1b, 0x0c, 0x7c, 0xe3, 0x0d, 0x8d, 0x04, 0x07, 0xc1, 0x82, 0x64, 0x20, 0xdd, 0x75, 0x58, 0xa1, 0x3d, 0xb4, 0x00, 0x3b, 0x1e, 0x0f, 0x82, 0x0d, 0x0e, 0x51, 0xe7, 0x8b, 0xc3, 0x6e, 0x70, 0x34, 0x3b, 0xdf, 0x10, 0xc3, 0x0d, 0x31, 0x1c, 0x76, 0x43, 0x3a, 0x73, 0xc3, 0xd1, 0x3e, 0xec, 0x06, 0x87, 0xa3, 0xe9, 0x85, 0xdd, 0x60, 0x68, 0x76, 0x1d, 0xd6, 0x37, 0x87, 0xdd, 0xe0, 0x50, 0x7b, 0xbe, 0x41, 0x50, 0x7a, 0x0f, 0xbb, 0xc1, 0x09, 0x0a, 0x7d, 0x61, 0x17, 0x76, 0x83, 0x73, 0x08, 0xfa, 0x06, 0x07, 0x30, 0xf4, 0xc3, 0xd1, 0xbe, 0xe1, 0x68, 0x1f, 0x76, 0x83, 0x73, 0x08, 0xfa, 0x86, 0x4e, 0x6a, 0xc3, 0x6e, 0x68, 0xa8, 0x73, 0x58, 0xdf, 0x1c, 0x76, 0x61, 0x37, 0x38, 0xe4, 0xa1, 0x1f, 0xd6, 0x37, 0x37, 0x74, 0x52, 0x1b, 0x76, 0x43, 0x43, 0x9d, 0x05, 0xc1, 0x82, 0x64, 0x20, 0xdf, 0x75, 0x58, 0xa1, 0x3d, 0x38, 0x93, 0xa2, 0x0f, 0x82, 0x0d, 0x4e, 0x56, 0xef, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xcd, 0x92, 0x0e, 0x0e, 0xe2, 0xdd, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x01, 0xb7, 0xbb, 0x38, 0x08, 0x16, 0x24, 0x03, 0xe5, 0xea, 0x90, 0x5c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x71, 0x70, 0x73, 0x8e, 0xc7, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x60, 0xc0, 0xed, 0x2e, 0x0e, 0xbb, 0xc1, 0x99, 0x42, 0x7c, 0x0d, 0xc6, 0xed, 0xee, 0x86, 0x18, 0x6e, 0xe8, 0xa4, 0x76, 0x30, 0x32, 0x7b, 0x87, 0xdd, 0xe0, 0x2c, 0x94, 0xbe, 0xc1, 0xd1, 0x99, 0xfb, 0x60, 0xc0, 0xed, 0x1e, 0x8f, 0x07, 0xc1, 0x06, 0x87, 0xa8, 0xf3, 0xc5, 0x61, 0x37, 0x38, 0x9a, 0x9d, 0x6f, 0x30, 0xe0, 0x76, 0x87, 0x5d, 0xd8, 0x0d, 0x0e, 0x47, 0xd3, 0x1b, 0x62, 0x38, 0xec, 0x06, 0x87, 0xda, 0xf3, 0x43, 0x3a, 0x77, 0x61, 0x17, 0x76, 0x83, 0xc3, 0xd1, 0xf4, 0x06, 0xa7, 0x33, 0xf8, 0xc3, 0xd1, 0xbe, 0xb0, 0x1b, 0xd2, 0x99, 0x1b, 0xa2, 0x79, 0x30, 0xe0, 0x76, 0x87, 0xdd, 0xe0, 0x70, 0x34, 0x7d, 0x48, 0x6c, 0x0e, 0xbb, 0xc1, 0x09, 0x0a, 0x7d, 0x61, 0x37, 0x38, 0xc4, 0xbb, 0xaf, 0xc1, 0xb8, 0xdd, 0x5d, 0xd8, 0x85, 0xdb, 0x20, 0xe4, 0xb3, 0x0f, 0x06, 0xbe, 0xf1, 0xc2, 0x6e, 0x68, 0xa8, 0xb3, 0xb0, 0x1b, 0x3a, 0xa9, 0x1d, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0xd8, 0x0d, 0x0d, 0x75, 0x36, 0xc4, 0xf0, 0xe0, 0x5c, 0x0f, 0x7f, 0x70, 0x34, 0xeb, 0x1e, 0x76, 0xe1, 0x36, 0xc4, 0xf0, 0xe0, 0x4c, 0x82, 0x7e, 0x70, 0x40, 0x00, 0x1f, 0x04, 0x0b, 0x82, 0x0d, 0x06, 0xdc, 0xee, 0xe2, 0xb0, 0x1b, 0x9c, 0x29, 0xc4, 0x17, 0x76, 0xe1, 0x36, 0x18, 0x99, 0xbd, 0x87, 0x18, 0xae, 0xc1, 0xb8, 0xdd, 0x5d, 0xd8, 0x85, 0xdb, 0xa0, 0xa4, 0x69, 0x38, 0x18, 0xf8, 0xc6, 0x87, 0xf5, 0xcd, 0x83, 0xb3, 0x9c, 0xf5, 0x21, 0x75, 0x70, 0x48, 0x1d, 0x1c, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x76, 0x83, 0x43, 0x1e, 0xfa, 0xc2, 0x6e, 0x68, 0xa8, 0xb3, 0x20, 0x58, 0x90, 0x0c, 0xce, 0x1d, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1c, 0xc4, 0xbb, 0x37, 0x34, 0x4b, 0x3a, 0x18, 0xf8, 0x21, 0xc7, 0xa1, 0x41, 0xb0, 0xc1, 0x51, 0x1c, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0xf3, 0x73, 0xfc, 0x71, 0x68, 0xd8, 0x0d, 0x0d, 0x75, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xf9, 0x3b, 0xac, 0xd0, 0x1e, 0x1c, 0xc1, 0xe3, 0x07, 0xc1, 0x06, 0x67, 0x1e, 0xf9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x66, 0x49, 0x1b, 0x1c, 0xc4, 0xbb, 0x0f, 0x06, 0x7e, 0xc8, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x70, 0x88, 0x3a, 0x5f, 0x1c, 0x76, 0x83, 0xa3, 0xd9, 0xf9, 0x06, 0x03, 0x6e, 0x77, 0xd8, 0x0d, 0x8e, 0x57, 0xf0, 0x1b, 0x1c, 0xf0, 0xe0, 0x87, 0xdd, 0xe0, 0x04, 0x85, 0xbe, 0xb0, 0x1b, 0x1c, 0xe2, 0xdd, 0x37, 0x38, 0x3d, 0xc3, 0x0f, 0x82, 0x0d, 0x0e, 0x71, 0xeb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0x1c, 0x4e, 0xe2, 0x8f, 0x43, 0x83, 0x60, 0x83, 0x33, 0x51, 0xfc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6e, 0x70, 0xc8, 0x43, 0x5f, 0xd8, 0x0d, 0x0d, 0x75, 0x16, 0x04, 0x1b, 0x1c, 0xa7, 0xe3, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1c, 0xc4, 0xbb, 0x37, 0x34, 0x4b, 0x3a, 0x18, 0x1b, 0xae, 0xc7, 0xa1, 0xe1, 0x37, 0x38, 0x16, 0xa3, 0x0f, 0x82, 0x0d, 0x8e, 0xe2, 0xe8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0x1c, 0x72, 0xe6, 0x8f, 0x43, 0xc3, 0x6e, 0x68, 0xa8, 0xb3, 0x20, 0xd8, 0xe0, 0xcc, 0x23, 0x7f, 0x70, 0x24, 0x9a, 0x1f, 0x04, 0x1b, 0x9c, 0x79, 0xe4, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9a, 0x25, 0x6d, 0x70, 0x10, 0xef, 0x3e, 0x18, 0x1b, 0xae, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x9c, 0x02, 0x7c, 0x07, 0xc9, 0x40, 0xd1, 0x3b, 0x1e, 0x1f, 0x1a, 0xb5, 0x0c, 0x82, 0x05, 0xc9, 0xc0, 0x59, 0x75, 0x58, 0xa1, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x83, 0x71, 0xbb, 0xbb, 0x41, 0x48, 0x81, 0x1f, 0x84, 0x9b, 0xfb, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x60, 0xc0, 0xed, 0x2e, 0x0e, 0x82, 0x0d, 0x2d, 0xf4, 0x86, 0xdd, 0xe0, 0xd0, 0xcf, 0xbd, 0x86, 0x18, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x10, 0x1c, 0x0c, 0x43, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xa4, 0xd3, 0xc1, 0x78, 0xd7, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0x1e, 0xfa, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x3a, 0xa9, 0x1d, 0x87, 0x8e, 0x43, 0x07, 0x23, 0xb3, 0xf7, 0x38, 0x34, 0x08, 0x16, 0x7e, 0x83, 0x13, 0xef, 0xf3, 0x20, 0x19, 0x28, 0x7b, 0xc7, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x1e, 0x42, 0x87, 0xd4, 0xc1, 0x71, 0xe8, 0x10, 0xc3, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x43, 0xd4, 0xf9, 0xe2, 0xb0, 0x1b, 0x1c, 0xcd, 0xce, 0x37, 0x18, 0x70, 0xbb, 0xc3, 0x6e, 0x70, 0x38, 0x9a, 0xde, 0xe0, 0x20, 0x7b, 0x3e, 0xec, 0x06, 0x87, 0xda, 0xf3, 0x0d, 0xce, 0x1e, 0xe8, 0xc3, 0x6e, 0x70, 0x82, 0x42, 0xdf, 0xe0, 0x0c, 0x87, 0xbe, 0xc1, 0xb8, 0xdd, 0xdd, 0xe0, 0x90, 0x87, 0xbe, 0x20, 0xd8, 0xe0, 0xac, 0x07, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x18, 0x39, 0x7d, 0x10, 0xf6, 0xd4, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0x39, 0x71, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0x82, 0x38, 0x1f, 0x94, 0xd8, 0x83, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x01, 0xb7, 0xbb, 0x38, 0xec, 0x06, 0xe7, 0x90, 0xf4, 0x0d, 0x06, 0xdc, 0xee, 0xb0, 0x1b, 0x9c, 0x85, 0xd2, 0x17, 0x76, 0xc3, 0xb8, 0x6c, 0x48, 0x1d, 0x1c, 0x0c, 0xb8, 0xdd, 0x61, 0x37, 0x38, 0x1e, 0xaf, 0x6f, 0x70, 0xb6, 0x5e, 0x1f, 0x76, 0x43, 0x23, 0xc1, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0xde, 0x1d, 0x56, 0x68, 0x0f, 0x2d, 0xc0, 0x0e, 0x06, 0xdc, 0xee, 0xf1, 0x78, 0x10, 0x6c, 0x70, 0x88, 0x3a, 0x5f, 0x3c, 0x38, 0x93, 0xac, 0x1f, 0x8f, 0x17, 0x04, 0x1b, 0x1c, 0xa2, 0xce, 0x17, 0x07, 0xc1, 0x06, 0x85, 0x75, 0xc8, 0x41, 0xb9, 0x44, 0x73, 0x3c, 0x5e, 0x10, 0x6c, 0x70, 0x88, 0x3a, 0x5f, 0x1c, 0x76, 0x83, 0xa3, 0xd9, 0xf9, 0x86, 0x18, 0x6e, 0x88, 0xe1, 0xb0, 0x1b, 0xd2, 0x99, 0x1b, 0x62, 0x38, 0xec, 0x06, 0xc7, 0x2b, 0xf8, 0x0d, 0x47, 0xfb, 0xb0, 0x1b, 0x9c, 0xa0, 0xd0, 0x17, 0x76, 0x83, 0x43, 0xbc, 0xfb, 0x21, 0x9d, 0x3b, 0xec, 0xc2, 0x2e, 0xdc, 0x12, 0x6e, 0x1e, 0x9a, 0x70, 0x6d, 0x88, 0xe1, 0xb0, 0x1b, 0x1c, 0x64, 0xde, 0x0f, 0xe9, 0xdc, 0x0d, 0x47, 0xfb, 0x20, 0x58, 0x90, 0x0c, 0x8c, 0xdf, 0x61, 0x85, 0xf6, 0xe0, 0x4c, 0x8a, 0x7e, 0x3c, 0x1e, 0x04, 0x1b, 0x1c, 0xa2, 0xce, 0x17, 0x07, 0xc1, 0x06, 0x87, 0x54, 0xf5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xac, 0xdd, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x47, 0x71, 0xf4, 0x43, 0x07, 0x8d, 0xe3, 0xd0, 0xf1, 0xf8, 0x78, 0xbc, 0x82, 0x60, 0x83, 0x01, 0xb7, 0xbb, 0x38, 0x08, 0x16, 0x7e, 0x41, 0x32, 0x90, 0x56, 0x39, 0x24, 0x97, 0x0e, 0xce, 0x4f, 0xb4, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0x85, 0x5f, 0x10, 0x6c, 0x70, 0xe6, 0x9d, 0x5d, 0x5c, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x43, 0xee, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x1c, 0x5c, 0x1e, 0x9c, 0x3c, 0x18, 0x65, 0x52, 0xc7, 0xb7, 0xe3, 0xf1, 0xc1, 0x11, 0x81, 0xf6, 0x78, 0x7c, 0xc8, 0xfa, 0xac, 0xc1, 0x89, 0x86, 0x76, 0x0d, 0x0e, 0x65, 0xb4, 0x0b, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x64, 0x1b, 0x1c, 0x2b, 0xf0, 0x0f, 0xce, 0xac, 0xb4, 0xc7, 0xe3, 0x43, 0x1a, 0x78, 0x83, 0x93, 0x35, 0xed, 0x06, 0xa7, 0x82, 0xda, 0x85, 0x5f, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xd9, 0x06, 0xc7, 0x0a, 0xfc, 0x83, 0x03, 0x54, 0xed, 0xf1, 0xf8, 0xe0, 0x0c, 0x59, 0xbb, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb6, 0xc1, 0xb1, 0x02, 0xff, 0xe0, 0x88, 0x5c, 0x7b, 0x3c, 0x3e, 0x6c, 0x4e, 0x6d, 0x70, 0x9a, 0xaf, 0x1d, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0x36, 0x38, 0x56, 0xe0, 0x1f, 0x9c, 0x79, 0x6c, 0x8f, 0xc7, 0x87, 0x7d, 0xe5, 0x85, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x0d, 0x8e, 0x15, 0xf8, 0x07, 0x07, 0x41, 0xdb, 0xe3, 0xf1, 0x21, 0x1f, 0xb8, 0x06, 0x27, 0x53, 0xdb, 0x41, 0xb0, 0xc1, 0x09, 0xdb, 0x76, 0x10, 0x2d, 0xec, 0x0a, 0xbf, 0xf1, 0x7c, 0x0c, 0xd9, 0xc2, 0x6f, 0x3c, 0x1f, 0x43, 0xe9, 0xf0, 0x1b, 0xcf, 0xc7, 0xe0, 0xfc, 0x3f, 0xa4, 0x6a, 0x8e, 0x43, 0x1b, 0x9c, 0x36, 0x6e, 0x37, 0x38, 0x29, 0xdd, 0x2e, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x06, 0xc7, 0x0a, 0xfc, 0x83, 0xa3, 0xe4, 0xed, 0xf1, 0xf8, 0xa0, 0x90, 0xc2, 0x1a, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0x36, 0x38, 0x56, 0xe0, 0x1f, 0x1c, 0xb1, 0x6f, 0x8f, 0xc7, 0x87, 0x5d, 0xef, 0x85, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x0d, 0x8e, 0x15, 0xf8, 0x07, 0x67, 0x0e, 0xdc, 0xe3, 0xf1, 0x61, 0xc9, 0x7d, 0x0d, 0xce, 0x45, 0xb8, 0xc3, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xd9, 0x06, 0xc7, 0x0a, 0xfc, 0x83, 0xf3, 0x23, 0xee, 0xf1, 0xf8, 0xe0, 0x34, 0x8b, 0x3b, 0xfc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x90, 0x6d, 0x70, 0xac, 0xc0, 0x3f, 0x38, 0xaa, 0xe3, 0x1e, 0x8f, 0x0f, 0x3d, 0x3b, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xe0, 0xe5, 0xc8, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0xce, 0xbc, 0xb3, 0x8b, 0x0b, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x6e, 0xc8, 0x7d, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x83, 0xcb, 0x83, 0xcf, 0x07, 0xa3, 0x4c, 0xea, 0xf8, 0x76, 0x3c, 0x3e, 0x38, 0x22, 0xd0, 0x1e, 0x8f, 0x0f, 0x59, 0x9f, 0x35, 0x38, 0xd1, 0xd0, 0xae, 0xc1, 0xa1, 0x8c, 0x76, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x6c, 0x83, 0xb3, 0xb7, 0xfe, 0xc1, 0x99, 0x95, 0xf6, 0x78, 0x7c, 0x48, 0x03, 0x6f, 0x70, 0xb2, 0xa6, 0xdd, 0xe0, 0x54, 0x50, 0xbb, 0xf0, 0x0b, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0xdb, 0xe0, 0xec, 0xad, 0x7f, 0x70, 0x80, 0xaa, 0x3d, 0x1e, 0x1f, 0x9c, 0x21, 0x6b, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0x36, 0x38, 0x7b, 0xeb, 0x1f, 0x1c, 0x91, 0x6b, 0x8f, 0xc7, 0x87, 0xcd, 0xa9, 0x0d, 0x4e, 0xf3, 0xb5, 0xc3, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xd9, 0x06, 0x67, 0x6f, 0xfd, 0x83, 0x33, 0x8f, 0xed, 0xf1, 0xf8, 0xb0, 0xaf, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb6, 0xc1, 0xd9, 0x5b, 0xff, 0xe0, 0x20, 0x68, 0x7b, 0x3c, 0x3e, 0xe4, 0x03, 0xd7, 0xe0, 0x64, 0x6a, 0x3b, 0x08, 0x36, 0x38, 0x61, 0xdb, 0x0e, 0xa2, 0x85, 0x5d, 0xe1, 0x37, 0x9e, 0x1f, 0x14, 0x00, 0x50, 0x0b, 0xbf, 0xf1, 0x7c, 0x0c, 0xbb, 0xe1, 0x37, 0x9e, 0x8f, 0x41, 0xf8, 0x0f, 0xa9, 0x9a, 0xe3, 0xd0, 0x06, 0xa7, 0x8d, 0xdb, 0x0d, 0x4e, 0x4a, 0xb7, 0x0b, 0xbf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0xc1, 0xd9, 0x5b, 0xff, 0xe0, 0x28, 0x79, 0x7b, 0x3c, 0x3e, 0x28, 0xa4, 0xb0, 0x86, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x0d, 0xce, 0xde, 0xfa, 0x07, 0x47, 0xec, 0xdb, 0xe3, 0xf1, 0x61, 0xd7, 0x7b, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x6c, 0x83, 0xb3, 0xb7, 0xfe, 0xc1, 0x99, 0x03, 0xf7, 0x78, 0x7c, 0x58, 0x72, 0x5f, 0x83, 0x73, 0x11, 0xee, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb6, 0xc1, 0xd9, 0x5b, 0xff, 0xe0, 0xfc, 0x88, 0x7b, 0x3c, 0x3e, 0x38, 0xcd, 0xe2, 0x0e, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x64, 0x1b, 0x9c, 0xbd, 0xf5, 0x0f, 0x8e, 0xea, 0xb8, 0xc7, 0xe3, 0x43, 0xcf, 0x8e, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0x78, 0xb9, 0xf9, 0x90, 0x5a, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xbf, 0xe1, 0x49, 0x81, 0x41, 0x32, 0xb0, 0x7e, 0x75, 0x3c, 0x3e, 0x34, 0x6a, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xfc, 0x82, 0x64, 0xe0, 0x54, 0x39, 0x24, 0x97, 0x0e, 0x0e, 0x9e, 0xfd, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x0c, 0xb8, 0xdd, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0x9c, 0x80, 0x72, 0x0f, 0xce, 0x4f, 0xb4, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x38, 0x48, 0xdf, 0x1f, 0x1c, 0x3c, 0xfb, 0x0f, 0x8d, 0x5a, 0x8e, 0xc7, 0xc3, 0x2f, 0x08, 0x36, 0x38, 0xf3, 0xce, 0x2e, 0x2e, 0xfc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0xb8, 0x21, 0xf7, 0x3d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x0e, 0x2e, 0x0f, 0x8e, 0x1e, 0x8c, 0x32, 0xa9, 0xe3, 0xdb, 0xf1, 0xf8, 0xe0, 0x88, 0x40, 0x7b, 0x3c, 0x3e, 0x64, 0x7d, 0xd6, 0xe0, 0x44, 0x43, 0xbb, 0x06, 0x87, 0x32, 0xda, 0x85, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x0d, 0x4e, 0x61, 0xfe, 0x07, 0x67, 0x56, 0xda, 0xe3, 0xf1, 0x21, 0x0d, 0xbc, 0xc1, 0xc9, 0x9a, 0x76, 0x83, 0x53, 0x41, 0xed, 0xc2, 0x2f, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x6c, 0x83, 0x53, 0x98, 0xff, 0xc1, 0x01, 0xaa, 0xf6, 0x78, 0x7c, 0x70, 0x86, 0xac, 0x5d, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xdb, 0xe0, 0x14, 0xe6, 0x7f, 0x70, 0x44, 0xae, 0x3d, 0x1e, 0x1f, 0x36, 0xa7, 0x16, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x7e, 0x41, 0x32, 0x90, 0x56, 0x39, 0x64, 0x2b, 0x0e, 0x4e, 0x61, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xe0, 0xd4, 0x21, 0xb9, 0x74, 0x68, 0xd4, 0x72, 0x1c, 0x3a, 0x1e, 0x6f, 0x70, 0x9a, 0xaf, 0x1d, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0x36, 0x38, 0x85, 0xf9, 0x1f, 0x9c, 0x79, 0x6c, 0x8f, 0xc7, 0x87, 0x7d, 0xe5, 0x85, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x0d, 0x4e, 0x61, 0xfe, 0x07, 0x07, 0x41, 0xdb, 0xe3, 0xf1, 0x21, 0x1f, 0xb8, 0x06, 0x27, 0x53, 0xdb, 0x41, 0xb0, 0xc1, 0x09, 0xdb, 0x76, 0x10, 0x2d, 0xec, 0x1a, 0x94, 0x68, 0x38, 0x1b, 0x9c, 0x6b, 0x8a, 0x87, 0xdf, 0x78, 0x3e, 0x86, 0xf9, 0x21, 0x55, 0x73, 0x1c, 0xda, 0xe0, 0xb4, 0x71, 0xbb, 0xc1, 0x49, 0xe9, 0x76, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x38, 0x77, 0x48, 0x2e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0x83, 0x83, 0xd7, 0xff, 0xc1, 0xb9, 0x8f, 0xf6, 0xd0, 0xa8, 0xe5, 0x38, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x0d, 0x4e, 0x61, 0xfe, 0x07, 0x47, 0xc9, 0xdb, 0xe3, 0xf1, 0x41, 0x21, 0x85, 0x35, 0xfc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x90, 0x6d, 0x70, 0x0a, 0xf3, 0x3f, 0x38, 0x62, 0xdf, 0x1e, 0x8f, 0x0f, 0xbb, 0xde, 0x0b, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x64, 0x1b, 0x9c, 0xc2, 0xfc, 0x0f, 0xce, 0x1c, 0xb8, 0xc7, 0xe3, 0xc3, 0x92, 0xfb, 0x1a, 0x9c, 0x8b, 0x70, 0x87, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x0d, 0x4e, 0x61, 0xfe, 0x07, 0xe7, 0x47, 0xdc, 0xe3, 0xf1, 0xc1, 0x69, 0x16, 0x77, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xdb, 0xe0, 0x14, 0xe6, 0x7f, 0x70, 0x54, 0xc7, 0x3d, 0x1e, 0x1f, 0x7a, 0x76, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0xc0, 0xcb, 0xa1, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0x80, 0xdb, 0x5d, 0x1c, 0x04, 0x0b, 0xbf, 0xc1, 0xc9, 0xb8, 0xff, 0xe0, 0xfc, 0x44, 0x7b, 0x68, 0xd4, 0x72, 0x3c, 0x1e, 0x04, 0x8b, 0x1b, 0x04, 0xc0, 0x7d, 0x78, 0xb8, 0xb8, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0xfd, 0xab, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x0b, 0x92, 0x81, 0xeb, 0xeb, 0x90, 0x5c, 0x3a, 0x28, 0x19, 0x9a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0x54, 0xfc, 0x3f, 0xa4, 0xe1, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0x2a, 0xfe, 0x1f, 0x3a, 0x68, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x0c, 0xb8, 0xdd, 0xc5, 0x41, 0xb0, 0x41, 0xda, 0x3e, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x48, 0x7b, 0x08, 0x38, 0x38, 0x3f, 0xd1, 0x1e, 0x1a, 0xb5, 0x1c, 0x87, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0xac, 0x20, 0xd8, 0x20, 0x40, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x85, 0xdf, 0x78, 0xbe, 0x21, 0x86, 0x13, 0x84, 0xfc, 0x90, 0xaa, 0x39, 0x0e, 0x0d, 0x82, 0x0d, 0x02, 0x94, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x59, 0xf8, 0x8d, 0xe7, 0x1b, 0xa4, 0x0c, 0x06, 0x1c, 0x8c, 0x09, 0xab, 0x43, 0xaa, 0xe6, 0x38, 0x34, 0x08, 0x16, 0x04, 0x1b, 0x14, 0xf4, 0x1f, 0x07, 0xc3, 0x2c, 0x7c, 0xd8, 0x0d, 0xca, 0x50, 0xa9, 0x85, 0xdd, 0xd0, 0x38, 0x72, 0x0d, 0xc6, 0xed, 0xee, 0xc6, 0xa1, 0x43, 0x62, 0x6a, 0x83, 0x71, 0xbb, 0xbb, 0x71, 0x68, 0x41, 0x32, 0xf0, 0xfb, 0xd5, 0x21, 0x5b, 0x71, 0x88, 0xe6, 0xb0, 0x0b, 0xb7, 0x61, 0x5c, 0x06, 0xc1, 0x82, 0x64, 0xa0, 0x2c, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0x83, 0x62, 0x47, 0xe2, 0x60, 0x6c, 0xb8, 0x1e, 0x87, 0x16, 0x76, 0x43, 0xe3, 0xc8, 0x35, 0x18, 0x0d, 0xbe, 0xc7, 0xa1, 0x83, 0x01, 0xb7, 0x3b, 0x08, 0x16, 0x04, 0x1b, 0x9c, 0xdb, 0x7d, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x24, 0x5d, 0x7d, 0xe8, 0xa0, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x7e, 0x90, 0xe0, 0x1c, 0x30, 0xfc, 0xc6, 0xf3, 0x83, 0xb1, 0xe1, 0x7a, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0x43, 0x3c, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0xfe, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x1c, 0x98, 0x77, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x13, 0xa4, 0xfc, 0x8f, 0x43, 0xc7, 0xa1, 0x0d, 0xc6, 0xed, 0xee, 0x86, 0x54, 0xcd, 0xc1, 0x50, 0x11, 0x38, 0x1e, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x7f, 0x77, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0x83, 0xb4, 0x87, 0x80, 0x41, 0x32, 0x30, 0x54, 0xc7, 0xe3, 0x83, 0x24, 0x8d, 0x80, 0x83, 0xb1, 0xe1, 0x7a, 0x1c, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xb8, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x04, 0x28, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0xf0, 0x1b, 0xcf, 0x17, 0x04, 0x1b, 0x04, 0xae, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x09, 0x46, 0xfe, 0xa0, 0x84, 0x91, 0x38, 0x0e, 0x1d, 0x8e, 0xf6, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x20, 0x21, 0x06, 0xe0, 0xe0, 0xf4, 0xb7, 0x7e, 0x3c, 0x5e, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xc1, 0x06, 0x69, 0xfb, 0x00, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0xed, 0x21, 0xe0, 0xe0, 0xdc, 0x47, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x0d, 0x24, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x8e, 0x8a, 0xff, 0x87, 0xa6, 0x40, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x1c, 0x15, 0xff, 0x0f, 0x2d, 0xc0, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x6c, 0x90, 0xb6, 0x0f, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0xd2, 0x1e, 0x02, 0x0e, 0x0e, 0x1e, 0xb5, 0x07, 0x49, 0x1a, 0x01, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xbf, 0x41, 0xda, 0x43, 0xc0, 0x20, 0x19, 0x48, 0x5e, 0x1d, 0x8f, 0x0f, 0x4e, 0x74, 0xff, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xd8, 0x20, 0xc5, 0x50, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0x90, 0xf6, 0x10, 0x30, 0x48, 0x06, 0xb2, 0x57, 0xc7, 0xe3, 0x83, 0x24, 0x8d, 0x80, 0x83, 0xb1, 0xe1, 0x7a, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0xa0, 0x44, 0x0d, 0x39, 0x38, 0x41, 0xf8, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xa9, 0x76, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0xf1, 0xfc, 0xc1, 0x41, 0xbc, 0xfb, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x29, 0xa1, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xe1, 0xf2, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x36, 0x18, 0x70, 0xbb, 0x8b, 0xc3, 0x6e, 0x70, 0x16, 0x4a, 0x5f, 0x10, 0x2c, 0x08, 0x36, 0x18, 0x43, 0x0b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x92, 0xfa, 0x02, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x65, 0xe9, 0x20, 0xc8, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x0d, 0x4a, 0x18, 0x89, 0x83, 0xb1, 0xe1, 0x7a, 0x1c, 0x3a, 0x0e, 0x0d, 0xbb, 0x21, 0x5f, 0xbb, 0x71, 0x68, 0x10, 0x6c, 0x30, 0xb2, 0x5e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xa1, 0x3b, 0xac, 0xd0, 0x1e, 0x87, 0x86, 0xdd, 0xe0, 0x1c, 0x92, 0xbe, 0x20, 0xd8, 0x60, 0x0c, 0x2d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x86, 0x95, 0xe2, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0x01, 0x5b, 0xe0, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x22, 0x05, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0xf0, 0x1b, 0xcf, 0x87, 0x39, 0x18, 0x13, 0x56, 0x07, 0x63, 0xc3, 0xf5, 0x38, 0x74, 0x1c, 0x1a, 0x76, 0x83, 0xe3, 0xf1, 0xfa, 0xc2, 0x6e, 0x68, 0x24, 0xb8, 0x21, 0x86, 0x83, 0x64, 0x20, 0x74, 0x87, 0xe4, 0xd2, 0x20, 0x58, 0x10, 0x6c, 0x50, 0xa4, 0x3e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x87, 0x66, 0x49, 0xc7, 0xa1, 0x61, 0x17, 0x6e, 0xe3, 0xd0, 0x30, 0x07, 0x09, 0xd8, 0x02, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x67, 0x3d, 0xe0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0xfc, 0x7b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0xfc, 0x7e, 0x75, 0x58, 0xa1, 0x3d, 0x0e, 0x1d, 0x1a, 0xcf, 0x1f, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x11, 0xdb, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x71, 0xdb, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0x62, 0x38, 0x41, 0xc9, 0x1f, 0x7e, 0xe3, 0xf9, 0xc1, 0x01, 0xe8, 0xf7, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x81, 0x67, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xf2, 0x47, 0xc1, 0x41, 0x29, 0xb3, 0x73, 0x1c, 0x3a, 0x0e, 0x0d, 0xbb, 0x41, 0xc8, 0x67, 0x6f, 0x1c, 0x1a, 0x04, 0x1b, 0x0c, 0xf1, 0xd8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x40, 0xe8, 0x0e, 0x82, 0x9c, 0xff, 0x38, 0x34, 0xec, 0xc2, 0x6d, 0x68, 0x5c, 0x74, 0x90, 0x4c, 0x4f, 0xb0, 0xb0, 0x0b, 0x82, 0x0d, 0x8e, 0xd1, 0xcc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x83, 0xe1, 0x37, 0x9e, 0x1f, 0xa4, 0x2f, 0x13, 0x1c, 0x87, 0x16, 0x76, 0x43, 0x0f, 0xa1, 0x0d, 0xcd, 0x92, 0x06, 0xc1, 0x06, 0x23, 0xeb, 0x75, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0xd1, 0xd1, 0x41, 0x8a, 0x11, 0xc1, 0x71, 0xe8, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x6c, 0x90, 0xb6, 0x0f, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0xd2, 0x1e, 0x02, 0x0e, 0x5d, 0x4c, 0x0e, 0x92, 0x34, 0x02, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x0e, 0x80, 0xce, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0xe6, 0x8a, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x90, 0xa6, 0x18, 0x70, 0x1c, 0x3a, 0x18, 0x41, 0x9e, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0x09, 0x31, 0x00, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x6f, 0x30, 0x6e, 0x77, 0x17, 0x04, 0x1b, 0x1c, 0x24, 0x85, 0x0f, 0x8d, 0x5a, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0x70, 0x82, 0xd4, 0x3d, 0x34, 0x6a, 0x39, 0x0e, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xd2, 0x1e, 0x02, 0x0e, 0x0e, 0x34, 0xb7, 0x07, 0x27, 0xba, 0xff, 0xe3, 0xf1, 0x20, 0xd8, 0xb0, 0x79, 0x3d, 0x88, 0x16, 0xc4, 0x2b, 0xfc, 0xc6, 0xf3, 0x61, 0x0e, 0x0d, 0x75, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xf8, 0xfd, 0xea, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x61, 0x33, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa3, 0xb3, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x50, 0x1c, 0x6a, 0x1c, 0x87, 0x0e, 0x86, 0x62, 0xd1, 0x71, 0x68, 0x43, 0xbe, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0x03, 0xdf, 0xf8, 0x38, 0xb4, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0xda, 0x3e, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x48, 0x7b, 0x08, 0x38, 0x38, 0x84, 0xde, 0x1e, 0x9c, 0xe8, 0xfe, 0x8f, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x36, 0x48, 0x31, 0x14, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x1b, 0xa4, 0x3d, 0x04, 0x1c, 0x1c, 0xce, 0x6f, 0x0f, 0x92, 0x34, 0x02, 0x0e, 0xc6, 0x86, 0xeb, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x1b, 0xa4, 0x18, 0x0a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0xd2, 0x1e, 0x02, 0x0e, 0x4e, 0x2b, 0xb8, 0x07, 0x49, 0x1a, 0x01, 0x07, 0x63, 0xc3, 0xf5, 0x38, 0x74, 0x3c, 0x5e, 0x41, 0xb0, 0xc1, 0x80, 0xdb, 0x5d, 0x1c, 0x04, 0x1b, 0xa4, 0xed, 0x03, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0x83, 0xb4, 0x87, 0x80, 0x41, 0x32, 0x70, 0x56, 0x1d, 0x8f, 0x0f, 0x8d, 0x5a, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0xa3, 0xb3, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x6b, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x38, 0xd4, 0x38, 0x48, 0x5d, 0x1f, 0x38, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xd8, 0x20, 0xc5, 0x50, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0x90, 0xf6, 0x10, 0x70, 0x30, 0x42, 0xa2, 0x0e, 0x92, 0x34, 0x02, 0x0e, 0xc6, 0x86, 0xeb, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x06, 0x69, 0xfb, 0x00, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0xed, 0x21, 0xe0, 0x60, 0x2c, 0x43, 0x1d, 0x24, 0x69, 0x04, 0x1c, 0x87, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0x80, 0xdb, 0x5d, 0x1c, 0x04, 0x0b, 0xbf, 0xe1, 0x49, 0x81, 0x83, 0xf3, 0x13, 0xed, 0xa1, 0x51, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0xe2, 0x82, 0x60, 0x71, 0x66, 0xe6, 0xa0, 0xf4, 0xa5, 0x59, 0x1c, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xe0, 0xdf, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0xdb, 0xd0, 0x43, 0x68, 0x43, 0xe3, 0xa2, 0x25, 0x18, 0xef, 0x09, 0xe6, 0xfb, 0x38, 0x34, 0xec, 0x82, 0x60, 0x83, 0x93, 0xf8, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0x60, 0x82, 0x71, 0x3f, 0x0e, 0x6d, 0x1c, 0x1a, 0x04, 0x0b, 0x92, 0xc1, 0xbf, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xfc, 0x37, 0xb4, 0x00, 0xda, 0xd0, 0x74, 0x68, 0x09, 0xca, 0xfb, 0x21, 0x75, 0x70, 0x1c, 0x3a, 0x1e, 0xaf, 0xf0, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x61, 0x17, 0x04, 0x0b, 0x92, 0x41, 0xcd, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x86, 0xdf, 0x78, 0x3e, 0x06, 0x06, 0x00, 0xc0, 0x71, 0x68, 0x61, 0x17, 0x04, 0x1b, 0x8c, 0x80, 0xa2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0xc7, 0x80, 0xe0, 0xff, 0xff, 0xff, 0x7f, 0x1c, 0x3a, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0x82, 0x60, 0x83, 0x61, 0x46, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xc9, 0x0b, 0x61, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xf8, 0x75, 0x48, 0x2e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xeb, 0x36, 0x07, 0x69, 0x55, 0x08, 0xc7, 0xa1, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0x20, 0xd8, 0x20, 0xcd, 0x09, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0x31, 0x60, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x2d, 0xec, 0x82, 0x60, 0x83, 0x11, 0x50, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x19, 0x7e, 0xe3, 0xf9, 0x18, 0x20, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x0e, 0x1d, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x7b, 0x87, 0x6c, 0xc5, 0x41, 0xc2, 0x1b, 0xc2, 0x20, 0x58, 0x10, 0x6c, 0x50, 0xd8, 0x4e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x0e, 0xbf, 0xf1, 0x7c, 0x0c, 0x10, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x87, 0x06, 0xc1, 0x82, 0x64, 0xa0, 0xe8, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0x60, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xc8, 0x20, 0xda, 0x60, 0x44, 0x50, 0x1d, 0x92, 0x4b, 0xc7, 0xa1, 0x43, 0xea, 0xe0, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x7c, 0xb3, 0x3c, 0x37, 0xf2, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdd, 0x20, 0x61, 0x09, 0x61, 0x41, 0xb0, 0xc1, 0x30, 0xa3, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0xe4, 0x85, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x88, 0xde, 0x21, 0xb9, 0x74, 0x90, 0x46, 0x8a, 0x70, 0x1c, 0x3a, 0x48, 0xd7, 0x45, 0x38, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xdf, 0xac, 0x2c, 0xcd, 0x3d, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x12, 0xc4, 0x0f, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0xf1, 0xda, 0x77, 0x90, 0x3a, 0x7f, 0x30, 0xec, 0x06, 0x29, 0x0c, 0x08, 0x1b, 0x87, 0x06, 0xc1, 0x82, 0x64, 0x20, 0x78, 0x87, 0x15, 0xda, 0x83, 0xf4, 0x14, 0x84, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xc1, 0x21, 0x55, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x41, 0xb6, 0xb3, 0xf0, 0x1b, 0xcf, 0xc7, 0x40, 0xf8, 0xff, 0x6f, 0x90, 0xe4, 0x85, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x65, 0xdf, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf4, 0xf2, 0x84, 0x83, 0x24, 0x2f, 0x84, 0xe3, 0xd0, 0xc2, 0x6f, 0x3c, 0x3f, 0x18, 0x9c, 0x8f, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x78, 0xbc, 0x38, 0x40, 0xd0, 0xee, 0xd5, 0x76, 0x1b, 0x20, 0x00, 0x98, 0x40, 0x71, 0x0f, 0x10, 0x04, 0xb8, 0xf2, 0x16, 0x06, 0xfc, 0x7b, 0x3d, 0x9c, 0xa5, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0x34, 0xee, 0x3b, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x04, 0x7a, 0xdf, 0x21, 0x5b, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xcc, 0x0e, 0xc9, 0xa5, 0xe3, 0xd0, 0x86, 0xc6, 0xf3, 0x87, 0x7c, 0xed, 0x71, 0xe8, 0x78, 0xbc, 0x82, 0x60, 0xf1, 0x20, 0x69, 0xfc, 0x60, 0x71, 0x10, 0x6c, 0x88, 0xe6, 0x20, 0x58, 0xd8, 0x85, 0x5b, 0x10, 0x2c, 0x48, 0x06, 0xa2, 0x73, 0x10, 0xf0, 0xfe, 0x07, 0x87, 0x46, 0xe0, 0x43, 0x0c, 0x17, 0x04, 0x1b, 0xa4, 0x12, 0x2a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x97, 0x60, 0xde, 0x0f, 0x2d, 0x80, 0x8e, 0x43, 0x83, 0x60, 0x41, 0x32, 0x70, 0xae, 0x1c, 0x04, 0xbc, 0xff, 0x41, 0x1a, 0xa6, 0xc2, 0x20, 0x58, 0xd8, 0x85, 0x5b, 0x10, 0x6c, 0x30, 0x9e, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x92, 0x1d, 0x87, 0xc6, 0xf3, 0xc7, 0xa1, 0x43, 0x0c, 0x17, 0x04, 0x0b, 0x92, 0x81, 0x73, 0xe5, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x97, 0xa0, 0xde, 0x1f, 0x84, 0x7c, 0xf6, 0x71, 0x68, 0x10, 0x6c, 0x30, 0x9e, 0x75, 0x0e, 0xd2, 0xb0, 0x15, 0x06, 0xc1, 0xc2, 0x2e, 0xdc, 0xc6, 0xa1, 0x83, 0x90, 0xcf, 0x3e, 0x18, 0x2a, 0x02, 0x83, 0x60, 0x61, 0x17, 0x6e, 0x43, 0xea, 0xe0, 0x60, 0x8c, 0x3d, 0x6d, 0x48, 0x1d, 0x1c, 0x52, 0x35, 0x83, 0x60, 0x71, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0x20, 0xbf, 0x72, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x78, 0x27, 0x0f, 0xc6, 0x86, 0xeb, 0x71, 0x68, 0x41, 0xb0, 0xc1, 0xe1, 0x4a, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x10, 0x1c, 0x9c, 0x84, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0x07, 0x27, 0x8a, 0xe8, 0xe3, 0xd0, 0x61, 0xaf, 0xf0, 0x38, 0x34, 0x08, 0x16, 0x04, 0x4b, 0xb0, 0xee, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xf8, 0x73, 0x70, 0x12, 0x3a, 0x3e, 0x48, 0xec, 0x58, 0x38, 0xec, 0x15, 0x1e, 0x87, 0x06, 0xc1, 0xc2, 0x2e, 0xdc, 0x82, 0x60, 0x41, 0x32, 0x10, 0x9d, 0x83, 0x63, 0x56, 0xf1, 0xc1, 0x01, 0xd6, 0xf8, 0x10, 0xc3, 0x05, 0xc1, 0x06, 0x09, 0x82, 0x0b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x83, 0x3f, 0x07, 0xc7, 0xac, 0xe2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x41, 0xc9, 0xc1, 0x31, 0xab, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0xaf, 0x70, 0x82, 0xb6, 0xff, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x12, 0x04, 0x17, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0x07, 0xc9, 0xc4, 0x0b, 0xc7, 0xa1, 0xe3, 0xd0, 0x41, 0x32, 0xf1, 0xc2, 0x71, 0x68, 0x10, 0x6c, 0x90, 0x20, 0xb8, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xc4, 0xd0, 0x85, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0xd1, 0x2e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x4e, 0xb0, 0xfa, 0x7f, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x41, 0x70, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x70, 0x90, 0x76, 0xc1, 0x70, 0x1c, 0x3a, 0x0e, 0x1d, 0xa4, 0x5d, 0x30, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfe, 0x20, 0xd8, 0xe0, 0xfc, 0x5d, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x70, 0x4b, 0x3a, 0x18, 0x1b, 0xae, 0xc7, 0xa1, 0x41, 0xb4, 0xc1, 0xf8, 0x87, 0x1e, 0x44, 0x1b, 0x0c, 0x22, 0xa3, 0x43, 0x72, 0xe9, 0xf8, 0x76, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x38, 0x07, 0x7f, 0x1f, 0x24, 0x6f, 0x27, 0x1c, 0x8f, 0x07, 0xc1, 0x06, 0x09, 0x74, 0x0a, 0x8b, 0x83, 0x60, 0xc3, 0xd1, 0x3e, 0x08, 0x36, 0x48, 0x94, 0x54, 0x18, 0x04, 0x1b, 0x24, 0x3a, 0x2b, 0x0c, 0x82, 0xc5, 0x61, 0x17, 0x04, 0x1b, 0x9c, 0x39, 0xa0, 0x0f, 0x06, 0x98, 0xf9, 0xc2, 0x2e, 0xdc, 0x82, 0x60, 0x41, 0x32, 0x10, 0x9d, 0x83, 0xe1, 0x1f, 0x7b, 0x70, 0xb0, 0x43, 0x3e, 0xc4, 0x70, 0x61, 0x37, 0x48, 0x0c, 0x58, 0x58, 0x10, 0x6c, 0x30, 0xc4, 0x63, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0xb6, 0xc9, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x1c, 0x94, 0x34, 0x0d, 0xc7, 0xa1, 0xc3, 0x5e, 0xe1, 0x71, 0x68, 0x10, 0x6c, 0x30, 0xc4, 0x63, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0xb6, 0xc9, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd8, 0x2b, 0x3c, 0x28, 0x69, 0x1a, 0x8e, 0x43, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x20, 0xf9, 0x96, 0x61, 0x10, 0x2c, 0x08, 0x36, 0x28, 0x8f, 0x0c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0xbc, 0x82, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x98, 0xd8, 0x07, 0x63, 0xc3, 0xf5, 0x38, 0x74, 0x48, 0xd5, 0x1c, 0x87, 0x06, 0xc1, 0xc2, 0x2e, 0xdc, 0x82, 0x60, 0x41, 0x32, 0x10, 0x9d, 0x83, 0xe1, 0x28, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xbc, 0xe9, 0x1c, 0x1a, 0xcf, 0x1f, 0x87, 0x0e, 0x31, 0x5c, 0x10, 0x6c, 0x90, 0xd0, 0xd3, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x21, 0x27, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x38, 0x08, 0x4c, 0xec, 0xe3, 0xd0, 0x04, 0x69, 0xff, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0xa1, 0xa7, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x72, 0x58, 0xc3, 0x04, 0xa7, 0xff, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe6, 0xc3, 0x1c, 0x8c, 0x37, 0x9d, 0x41, 0xb4, 0x20, 0x3e, 0xec, 0x15, 0x0e, 0xa2, 0x0d, 0xc6, 0x02, 0xfb, 0x21, 0xb9, 0x74, 0x7c, 0x3b, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x81, 0x7f, 0x13, 0x37, 0x9e, 0xaf, 0x41, 0x92, 0x67, 0xc2, 0x20, 0x19, 0x54, 0x1d, 0x8f, 0xd7, 0x20, 0x51, 0x2b, 0xe1, 0xe0, 0xfc, 0x44, 0xdb, 0xf1, 0x78, 0x71, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xcc, 0x20, 0x58, 0x90, 0x0c, 0x44, 0xe7, 0x20, 0xc8, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x30, 0xcc, 0x68, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x30, 0xfe, 0x6e, 0x0e, 0x1d, 0x34, 0x0e, 0x59, 0xbb, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0xc7, 0x20, 0xfe, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x98, 0x41, 0xb0, 0x41, 0x72, 0x76, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x86, 0x19, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x34, 0xfb, 0x86, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xc6, 0xba, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x74, 0x03, 0x87, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x92, 0xb3, 0x1b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb2, 0x76, 0x07, 0xe9, 0x06, 0x0e, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x20, 0xdd, 0xc0, 0xe1, 0x38, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xda, 0x3a, 0x1d, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x21, 0x55, 0x73, 0x1c, 0x1a, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x21, 0x86, 0xc3, 0x2f, 0x88, 0x16, 0x32, 0x08, 0x36, 0x18, 0x56, 0x8a, 0x07, 0x03, 0x5b, 0xf4, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x1b, 0x04, 0x28, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0xf0, 0x1b, 0xcf, 0x0f, 0x8e, 0x6a, 0xcc, 0x87, 0xbd, 0xc2, 0xe3, 0xd0, 0x20, 0x58, 0x90, 0x0c, 0x08, 0x7f, 0xa7, 0x83, 0x80, 0xf7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x1b, 0x0c, 0xf1, 0x8f, 0x83, 0x80, 0xf7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0d, 0x47, 0xfb, 0x20, 0x58, 0x90, 0x0c, 0xa2, 0x43, 0xb6, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xf0, 0x1d, 0x3e, 0x18, 0xd8, 0xa2, 0xc7, 0xa1, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xc1, 0xc7, 0xbc, 0x21, 0x86, 0xc3, 0x2f, 0x88, 0x16, 0xc4, 0x83, 0x60, 0x41, 0x32, 0x90, 0x5e, 0x39, 0x18, 0x86, 0x3e, 0x07, 0xc3, 0x2c, 0xfc, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xe2, 0x74, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x83, 0x81, 0xc8, 0x7c, 0x1c, 0x5a, 0xc3, 0xd1, 0x3e, 0x08, 0x36, 0x18, 0x2d, 0xb3, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc0, 0xc4, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xbe, 0x4e, 0x07, 0xc3, 0xd0, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x3a, 0x08, 0x4c, 0xec, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x83, 0x7f, 0x07, 0x01, 0xef, 0x7f, 0x30, 0xb0, 0x45, 0x8f, 0x43, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x30, 0x16, 0xd8, 0x8f, 0xe7, 0xc7, 0xb7, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0x32, 0x9d, 0xc3, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0x31, 0x1c, 0x7e, 0x83, 0xd4, 0x4a, 0x87, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xcc, 0xde, 0x61, 0x85, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xe0, 0xae, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x0c, 0xbf, 0xf1, 0xfc, 0x20, 0xb1, 0xd4, 0xe1, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0x24, 0x0b, 0x3b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x24, 0x6a, 0x3b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x41, 0x11, 0x87, 0x34, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xf8, 0x98, 0x37, 0xc4, 0x70, 0xf8, 0x0d, 0x52, 0x35, 0x1e, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x30, 0x7a, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x2c, 0xe5, 0x0e, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x7b, 0x85, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x03, 0xcf, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x74, 0xd8, 0x2b, 0x3c, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x07, 0x89, 0x2f, 0x0f, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x83, 0x22, 0x0e, 0xe9, 0x20, 0x61, 0xf4, 0xe1, 0xf8, 0x76, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x0c, 0x00, 0xef, 0xd7, 0x73, 0x84, 0x4b, 0x1c, 0x67, 0xf4, 0x9e, 0xf9, 0xe9, 0xc0, 0xac, 0xf8, 0xdc, 0x4b, 0x20, 0x97, 0x03, 0x67, 0xcd, 0x3e, 0x1a, 0x3e, 0xcb, 0xbd, 0x59, 0x50, 0x60, 0xc3, 0x75, 0x87, 0x4e, 0x82, 0x7f, 0x09, 0xbd, 0xcc, 0x19, 0x20, 0x60, 0x69, 0x94, 0x40, 0xa0, 0x09, 0x2f, 0xd6, 0x6f, 0xab, 0x5d, 0x6b, 0x2d, 0xe5, 0xf4, 0x45, 0x89, 0x1e, 0x1a, 0xc5, 0x98, 0xea, 0x54, 0x41, 0x5a, 0x69, 0xbf, 0xb7, 0x24, 0x31, 0xfc, 0x76, 0x61, 0x20, 0x7d, 0xbe, 0x8a, 0x59, 0xed, 0xed, 0x39, 0x31, 0x87, 0x8c, 0x33, 0x0d, 0xf3, 0x11, 0x10, 0xa4, 0x26, 0xde, 0x82, 0x60, 0x1a, 0x14, 0x4a, 0x3d, 0xde, 0xa4, 0xdd, 0x06, 0x51, 0x56, 0x7c, 0xbd, 0x76, 0x15, 0xbb, 0x18, 0x33, 0x61, 0xde, 0xed, 0x7a, 0xd3, 0x6d, 0xf2, 0xff, 0xf8, 0x43, 0xa4, 0x6f, 0xb1, 0xe0, 0xce, 0x43, 0x77, 0x93, 0xce, 0x6c, 0x48, 0x2b, 0x3a, 0xe7, 0xb7, 0x7b, 0x10, 0xe1, 0xa2, 0xf2, 0xc2, 0x96, 0xf1, 0xc4, 0x2b, 0x90, 0x07, 0xb5, 0x71, 0xa2, 0x33, 0xc2, 0x21, 0xc2, 0x87, 0x09, 0xc2, 0xd2, 0xf8, 0x9d, 0x37, 0x6e, 0x06, 0xde, 0x99, 0x94, 0x54, 0x85, 0xd2, 0xae, 0x91, 0x55, 0xb3, 0x2d, 0x0f, 0x0c, 0xce, 0x5f, 0xac, 0x7f, 0xac, 0xd2, 0xf2, 0xd3, 0xe9, 0x0b, 0xd0, 0xec, 0xa7, 0xa0, 0x54, 0x4a, 0x77, 0x98, 0xbe, 0xe3, 0x03, 0x34, 0x13, 0xdf, 0x3f, 0x8c, 0xe7, 0xfd, 0x67, 0xff, 0xaa, 0xf4, 0x98, 0xcd, 0x20, 0x8b, 0x35, 0x48, 0x21, 0xe4, 0xb1, 0xde, 0x80, 0x75, 0x1e, 0x89, 0x58, 0x5e, 0xba, 0x05, 0x13, 0x2d, 0x5b, 0x07, 0x92, 0xea, 0x9e, 0xb0, 0x8a, 0x2c, 0x44, 0x3d, 0x0d, 0xb1, 0x2f, 0x89, 0xca, 0xaa, 0x46, 0x7e, 0x17, 0xae, 0x4b, 0x9e, 0xe3, 0x50, 0x3f, 0x78, 0x42, 0x07, 0xc1, 0x06, 0x01, 0xca, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x2d, 0xfc, 0xc6, 0xf3, 0x0d, 0x86, 0x4e, 0xf8, 0xe1, 0x68, 0x3f, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0xc5, 0x00, 0x20, 0x00, 0xc2, 0x3d, 0xf5, 0x2f, 0x4f, 0xa8, 0x65, 0x6c, 0x67, 0x1e, 0xbf, 0x3d, 0xd0, 0x20, 0x7f, 0xb2, 0xb9, 0x39, 0x73, 0x0a, 0x6c, 0xa0, 0x16, 0x9f, 0x7b, 0xdf, 0x08, 0x8d, 0x46, 0x72, 0x83, 0xe1, 0xe8, 0x4d, 0x16, 0x6e, 0xce, 0x1a, 0x3b, 0xfa, 0x43, 0xda, 0x0a, 0xeb, 0x5b, 0x13, 0x3a, 0xab, 0xda, 0x63, 0x76, 0x1e, 0x50, 0xed, 0xbd, 0xa0, 0x55, 0x6b, 0xac, 0x63, 0x55, 0x4c, 0xa5, 0x58, 0xc6, 0x21, 0x78, 0xa3, 0x8b, 0x75, 0xdc, 0xd2, 0xd5, 0x57, 0x44, 0x0e, 0x65, 0x19, 0xac, 0x2a, 0x01, 0xa7, 0x46, 0xf9, 0x53, 0xe6, 0x11, 0x80, 0x36, 0x66, 0xb1, 0x7f, 0xaf, 0x9d, 0x14, 0x24, 0xb6, 0x2a, 0x96, 0xcf, 0x85, 0xc7, 0xe6, 0x68, 0x44, 0x2d, 0x49, 0x7d, 0x05, 0x29, 0xf6, 0xa9, 0x34, 0xcc, 0x43, 0x5f, 0x91, 0x84, 0x30, 0xa4, 0x8b, 0x92, 0x29, 0xeb, 0xe2, 0xc5, 0xb1, 0x0e, 0xca, 0x99, 0x00, 0xc4, 0x56, 0xff, 0x22, 0x27, 0x33, 0xc3, 0x10, 0xef, 0x35, 0x4f, 0x87, 0xf3, 0x27, 0x1c, 0xb5, 0xb2, 0x5c, 0x08, 0xa2, 0x12, 0xe5, 0xcd, 0xfa, 0xd6, 0x9f, 0xf6, 0x9a, 0xff, 0x3f, 0x49, 0xee, 0x06, 0x94, 0xbd, 0x51, 0x90, 0xd9, 0xdc, 0xe1, 0x95, 0x40, 0x7a, 0x86, 0x82, 0xd8, 0x89, 0xf2, 0xc8, 0xb8, 0xfc, 0x58, 0xb5, 0x8d, 0x15, 0xe9, 0xf4, 0x1c, 0x9c, 0xe5, 0x70, 0xa6, 0xcb, 0x7c, 0x4a, 0x80, 0x03, 0x5c, 0x79, 0xfc, 0xdf, 0x39, 0x5e, 0x8e, 0x89, 0xd1, 0xf1, 0x19, 0xed, 0xd4, 0x30, 0x5b, 0x9a, 0x0c, 0xae, 0x74, 0xf1, 0x98, 0x41, 0x61, 0xc0, 0x37, 0x1b, 0xba, 0xc0, 0x24, 0x61, 0x53, 0x33, 0xaa, 0x97, 0xe2, 0x06, 0x4b, 0xf9, 0xb6, 0xbb, 0xbf, 0x22, 0x8e, 0x2c, 0x6a, 0xd3, 0x0c, 0xd7, 0xc8, 0x2f, 0x04, 0x68, 0x03, 0x71, 0x3f, 0x6e, 0x93, 0x76, 0x83, 0x60, 0x83, 0x00, 0xe5, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x36, 0x18, 0x8a, 0xcc, 0x87, 0xd4, 0xc1, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x06, 0x80, 0xf8, 0xeb, 0x5e, 0x99, 0x9c, 0x44, 0x56, 0xf7, 0xaf, 0x3c, 0x6c, 0x68, 0x20, 0x09, 0x06, 0x23, 0x72, 0x79, 0xab, 0xa4, 0xf7, 0x32, 0xec, 0xb1, 0xed, 0x48, 0x7b, 0x6a, 0xef, 0x2b, 0x40, 0xdb, 0x95, 0xbd, 0x27, 0x76, 0x13, 0xc5, 0xbb, 0x41, 0xdd, 0x58, 0xfb, 0x00, 0xa1, 0xe8, 0x1d, 0x89, 0x6c, 0x32, 0x39, 0x22, 0xb0, 0xa8, 0x52, 0x66, 0x60, 0x96, 0xe0, 0x92, 0x62, 0x3f, 0x59, 0x25, 0x98, 0x73, 0x7e, 0xe5, 0x64, 0x12, 0x5e, 0x56, 0xfc, 0x80, 0xfc, 0x82, 0x77, 0xd1, 0x55, 0xfa, 0xa3, 0xca, 0x9f, 0xf3, 0x2c, 0xd6, 0xaa, 0x2f, 0x75, 0xce, 0xdb, 0x6e, 0x29, 0xc6, 0x31, 0x3a, 0x8b, 0x57, 0xad, 0xb5, 0x4d, 0x93, 0x1b, 0x5f, 0xfc, 0x0f, 0xb2, 0xca, 0x70, 0xc0, 0xfc, 0xc9, 0x0d, 0x4c, 0x45, 0xe8, 0x5b, 0xe2, 0x1f, 0x0e, 0x43, 0xf6, 0x05, 0x38, 0x10, 0xe7, 0xde, 0xde, 0x15, 0xbf, 0x62, 0x79, 0x5d, 0xb3, 0x17, 0x25, 0xe3, 0x11, 0x9c, 0xc9, 0x1a, 0xa4, 0x08, 0xd0, 0x4a, 0xad, 0x9b, 0x96, 0xfa, 0x3e, 0x0f, 0x91, 0x2c, 0x04, 0xee, 0x8a, 0xd5, 0xf4, 0x3c, 0x36, 0x4c, 0x8e, 0x8c, 0xeb, 0x24, 0xd1, 0x50, 0xb9, 0xb7, 0x83, 0x9d, 0x36, 0x4d, 0xcc, 0xa8, 0xa1, 0x6d, 0x53, 0xaf, 0x46, 0x8f, 0xc5, 0xb4, 0x86, 0x77, 0x60, 0xcc, 0xc1, 0x2d, 0x3b, 0xd9, 0x7c, 0x8e, 0xc2, 0xde, 0x5b, 0x68, 0xb9, 0x84, 0x86, 0xd5, 0xe7, 0x9b, 0x7d, 0xbf, 0x89, 0x72, 0x2b, 0x7d, 0xe0, 0x00, 0x0a, 0x67, 0xd1, 0x67, 0xa7, 0x35, 0x52, 0xa4, 0x92, 0xf1, 0xa1, 0x1f, 0x18, 0x49, 0xb4, 0x1c, 0x17, 0x40, 0xb8, 0x46, 0x15, 0xfa, 0x01, 0xf3, 0x97, 0x37, 0x07, 0x79, 0xd8, 0x87, 0x28, 0x4b, 0x82, 0xe6, 0xcd, 0xc2, 0x0b, 0x69, 0xc6, 0xbe, 0x20, 0x1b, 0xf2, 0xd6, 0x31, 0x0f, 0x92, 0x52, 0x23, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x62, 0x00, 0x10, 0x00, 0x82, 0xc5, 0xf8, 0xa3, 0x95, 0x13, 0xd6, 0x7f, 0x56, 0x2d, 0x5e, 0x22, 0x4d, 0xdf, 0xbc, 0x33, 0x41, 0xef, 0x5f, 0x90, 0x6d, 0x61, 0xf1, 0xf7, 0x76, 0xe5, 0x70, 0x58, 0xca, 0x26, 0x0b, 0xfc, 0xac, 0x28, 0x4a, 0x1c, 0xa1, 0xc3, 0x21, 0x04, 0xa6, 0x54, 0x3c, 0x49, 0x3f, 0xd4, 0x94, 0xcb, 0xdc, 0x31, 0x06, 0x08, 0x67, 0x39, 0x14, 0x23, 0xbf, 0x12, 0x45, 0x32, 0xc7, 0xad, 0xc2, 0x0e, 0x57, 0xaf, 0x75, 0xae, 0xb1, 0x78, 0x1b, 0xf0, 0x74, 0xfe, 0xab, 0xe7, 0x81, 0xd5, 0x5d, 0x9c, 0x15, 0x96, 0x3e, 0x51, 0x6f, 0x2f, 0x4e, 0xd7, 0x7e, 0x93, 0x92, 0x60, 0xb4, 0xe0, 0x36, 0xee, 0xe1, 0x89, 0x83, 0x65, 0xb3, 0xc1, 0x99, 0x24, 0x0c, 0xf3, 0xd2, 0xf5, 0xa8, 0x29, 0x46, 0x19, 0x1f, 0xe8, 0xbe, 0x66, 0xba, 0x7b, 0xd1, 0xa2, 0xd9, 0xb2, 0xbb, 0x9d, 0xeb, 0x9a, 0xb5, 0x85, 0x50, 0xfa, 0x6c, 0xe9, 0x1a, 0x2a, 0xf4, 0x4b, 0x8a, 0x97, 0xb9, 0x16, 0xd0, 0x25, 0x91, 0x09, 0x0d, 0x86, 0xe2, 0x87, 0x7a, 0x4f, 0x69, 0x03, 0xd3, 0x88, 0x8c, 0xde, 0x11, 0x2e, 0x01, 0xa0, 0xdb, 0x72, 0x68, 0x52, 0x6a, 0xea, 0x3d, 0x8d, 0x34, 0xe4, 0x38, 0x84, 0xb6, 0x2c, 0xc6, 0x73, 0xe3, 0x3b, 0x4c, 0x59, 0xf9, 0xf2, 0x07, 0xfd, 0xfb, 0x1d, 0xd8, 0xff, 0x42, 0x18, 0x6b, 0x5b, 0xc4, 0x1e, 0x64, 0x8e, 0xcd, 0x44, 0xb8, 0xcc, 0xa7, 0x79, 0xa4, 0x62, 0xda, 0x9e, 0xbd, 0x17, 0x37, 0x43, 0x77, 0xc0, 0x05, 0xe6, 0x3a, 0x5c, 0x5a, 0x0f, 0xb7, 0xec, 0x10, 0xed, 0xa5, 0x0a, 0xdd, 0x00, 0x7d, 0x40, 0xf6, 0x80, 0x71, 0x63, 0xce, 0x47, 0x48, 0x9b, 0xb0, 0x30, 0xa9, 0xc9, 0xaa, 0x7c, 0x98, 0x55, 0x20, 0x2b, 0x35, 0x8b, 0xcf, 0x8f, 0x02, 0x6e, 0x53, 0x27, 0xc8, 0x9f, 0x83, 0x14, 0x6a, 0x89, 0xe3, 0xf1, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xe3, 0x82, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x90, 0x3d, 0x3f, 0xa4, 0x6a, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x06, 0x65, 0xdc, 0xce, 0x20, 0xd8, 0x60, 0xd8, 0xd7, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xb2, 0xe7, 0x87, 0xbd, 0xc2, 0xe3, 0xd0, 0x20, 0x58, 0x1c, 0x76, 0x61, 0x37, 0xec, 0x1a, 0x6c, 0x88, 0xe1, 0xb0, 0x1b, 0xf2, 0x58, 0x87, 0x74, 0xee, 0x86, 0x18, 0x0e, 0xbf, 0x20, 0x5a, 0x10, 0x0e, 0x82, 0x0d, 0x8a, 0xcd, 0xab, 0x43, 0x1a, 0xee, 0x78, 0xbc, 0x20, 0xd8, 0x60, 0xf0, 0x3e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0xc8, 0x76, 0x16, 0x7e, 0xe3, 0xf9, 0xa1, 0x7b, 0xe3, 0x21, 0x5f, 0x7b, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x74, 0x10, 0x6c, 0x70, 0x8a, 0x01, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0xca, 0xb8, 0x9d, 0x43, 0x34, 0x0f, 0xf9, 0xda, 0xe3, 0xd0, 0xf1, 0xf8, 0xf8, 0x36, 0x08, 0x16, 0x04, 0x1b, 0x24, 0xa0, 0x2a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0x82, 0x64, 0x20, 0x68, 0x87, 0x6c, 0xc5, 0xc1, 0xf9, 0x89, 0xf6, 0x38, 0x34, 0xfc, 0x82, 0x68, 0x41, 0x3c, 0x08, 0x36, 0x18, 0xcf, 0x3a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x7b, 0x85, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x41, 0x32, 0x10, 0xb4, 0x83, 0x20, 0xe7, 0x3f, 0x38, 0x3f, 0xd1, 0x1e, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x1a, 0xb4, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xc3, 0x5e, 0xe1, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x20, 0x81, 0xbc, 0x62, 0x90, 0x0c, 0x84, 0xee, 0x78, 0x7c, 0x1c, 0x1a, 0x7e, 0x41, 0xb4, 0x60, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xd1, 0x39, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x02, 0x13, 0x7b, 0xf8, 0x8d, 0xe7, 0xc3, 0x2f, 0x48, 0x06, 0x82, 0x76, 0x10, 0xf0, 0xfe, 0x07, 0xc9, 0x0c, 0x16, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xce, 0x95, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x30, 0xb1, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0x06, 0xa9, 0x31, 0x16, 0x07, 0xe9, 0xbf, 0x0d, 0xc7, 0xa1, 0xe1, 0x17, 0x44, 0x0b, 0xea, 0x07, 0xc1, 0x06, 0x09, 0xa4, 0x0c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x9b, 0xce, 0xf0, 0x1b, 0xcf, 0x87, 0x5f, 0x90, 0x0c, 0x04, 0xed, 0x60, 0xbc, 0xeb, 0x1c, 0xa4, 0xff, 0x36, 0x1c, 0x87, 0x8e, 0xc7, 0x1b, 0x52, 0x35, 0x1b, 0x52, 0x07, 0x1b, 0x87, 0x0e, 0x8a, 0x80, 0xba, 0xe3, 0xf1, 0x2a, 0x2e, 0x06, 0x26, 0xe0, 0x4c, 0xf8, 0x8a, 0x81, 0x01, 0x18, 0xb5, 0x18, 0xca, 0xc7, 0xc0, 0x0d, 0x70, 0x26, 0x7c, 0x31, 0x50, 0x62, 0x75, 0xac, 0x38, 0xd8, 0x0f, 0xc6, 0x83, 0xfd, 0x60, 0x3e, 0xd8, 0x0f, 0xe6, 0x83, 0xfd, 0x60, 0x3f, 0x98, 0x0f, 0xf6, 0x83, 0xf9, 0x60, 0xdf, 0x62, 0x90, 0x10, 0x5e, 0x1c, 0xec, 0x07, 0xeb, 0x83, 0x94, 0x5c, 0x8b, 0x31, 0xe0, 0x0b, 0xac, 0x0f, 0x14, 0xb9, 0x08, 0xc7, 0x40, 0x60, 0x75, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0xe1, 0x17, 0x44, 0x0b, 0xd2, 0x05, 0xc1, 0x86, 0x4c, 0xc4, 0xa1, 0x29, 0xd0, 0x20, 0xd8, 0x90, 0x89, 0x38, 0xb4, 0x00, 0x3b, 0x1e, 0x0f, 0xbf, 0x20, 0x5a, 0xb0, 0x1d, 0x04, 0x0b, 0xbb, 0x20, 0x58, 0x90, 0x0c, 0xdc, 0x6b, 0x87, 0xe4, 0xd2, 0x21, 0x0d, 0xb7, 0xf0, 0x0b, 0x92, 0x81, 0xa0, 0x1d, 0x92, 0x4b, 0x83, 0x64, 0x60, 0xec, 0x8e, 0xc7, 0xc3, 0x6f, 0x90, 0x86, 0x71, 0x71, 0x70, 0x0a, 0xc3, 0x1d, 0x04, 0x8b, 0xc3, 0x6e, 0x50, 0xf4, 0x24, 0x6c, 0x68, 0xf8, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xed, 0x0b, 0x82, 0x0d, 0x86, 0x95, 0xe2, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0xe4, 0xb3, 0x8f, 0x43, 0x83, 0x60, 0x83, 0xc0, 0xf5, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x3c, 0xdc, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x01, 0x81, 0xde, 0x77, 0x10, 0xe4, 0xfc, 0x07, 0xe3, 0x38, 0xe4, 0x38, 0x34, 0x88, 0x16, 0x76, 0x10, 0x2c, 0x48, 0x36, 0x28, 0xfc, 0x83, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xd8, 0x70, 0x3d, 0xa4, 0x6a, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xdb, 0xf1, 0x78, 0x10, 0x2c, 0x0e, 0xbb, 0x70, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x48, 0xce, 0x6e, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x88, 0xff, 0x41, 0x41, 0xb6, 0x73, 0x1c, 0x5a, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0x72, 0x76, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xfc, 0x0f, 0x92, 0x35, 0x0d, 0x8e, 0x43, 0x0b, 0xbb, 0x70, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x48, 0xce, 0x6e, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x88, 0xff, 0xf0, 0x1b, 0xcf, 0xc7, 0x60, 0x20, 0x8f, 0x43, 0x0b, 0x82, 0x0d, 0x86, 0x19, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xc3, 0xaf, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xca, 0xbe, 0xa9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0x73, 0xe5, 0x20, 0xc8, 0xf9, 0x0f, 0x12, 0xad, 0x2f, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x66, 0x34, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x86, 0xeb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x65, 0xdf, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x82, 0x6c, 0x67, 0xf8, 0x8d, 0xe7, 0x07, 0x49, 0xdf, 0x16, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x04, 0x1b, 0x8c, 0x75, 0x9b, 0x83, 0x74, 0xde, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xe8, 0x1e, 0x04, 0x1b, 0x04, 0xae, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xe0, 0xe1, 0x1e, 0x7e, 0xe3, 0xf9, 0xb0, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0xbd, 0x76, 0xc8, 0x56, 0x1c, 0x0c, 0x6c, 0xd1, 0xc5, 0x40, 0x68, 0x75, 0x1c, 0x24, 0x7d, 0x5b, 0x1c, 0x87, 0x06, 0xd1, 0x82, 0xf1, 0x71, 0xe8, 0x78, 0x3e, 0x08, 0x16, 0x04, 0x1b, 0x8c, 0x75, 0x9b, 0x83, 0xc4, 0xd1, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xe8, 0x1e, 0x04, 0x1b, 0x04, 0xae, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xe0, 0xe1, 0x1e, 0x7e, 0xe3, 0xf9, 0xb0, 0x1b, 0xa4, 0xc1, 0x61, 0x2c, 0x06, 0x57, 0xdb, 0x18, 0x1c, 0x6d, 0xc7, 0xa1, 0x83, 0xa4, 0x43, 0x8c, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0xfc, 0xdd, 0x1c, 0x36, 0x6a, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0x7b, 0x10, 0x6c, 0x10, 0xb8, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x82, 0x87, 0x7b, 0xf8, 0x8d, 0xe7, 0xc3, 0x6e, 0x90, 0x06, 0x87, 0xb1, 0x18, 0x8c, 0xdb, 0x18, 0x4c, 0xdb, 0x71, 0xe8, 0x20, 0xe9, 0x10, 0xe3, 0xf8, 0x76, 0x3c, 0x5e, 0x10, 0x2c, 0x06, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x70, 0xd0, 0x00, 0x00, 0x00, 0x58, 0x1c, 0x04, 0x1b, 0x8c, 0x31, 0x9c, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x84, 0xed, 0xb0, 0x42, 0x7b, 0x30, 0x8c, 0x1d, 0x16, 0x76, 0x41, 0xb0, 0x20, 0x19, 0x7c, 0x39, 0x08, 0x78, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x68, 0x0e, 0xbf, 0xf1, 0x7c, 0x0c, 0x78, 0x20, 0xed, 0x22, 0x1a, 0x88, 0xe3, 0xd0, 0x1a, 0x62, 0x38, 0x08, 0x36, 0x18, 0x05, 0x3a, 0x07, 0x09, 0x32, 0x19, 0x1b, 0x8e, 0xf6, 0x61, 0x06, 0xc1, 0x06, 0xa3, 0x40, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x9a, 0x4e, 0xc6, 0x21, 0x9a, 0xc7, 0xa1, 0x0d, 0x82, 0x2c, 0x7e, 0x83, 0xc1, 0x1a, 0xbb, 0xa1, 0x91, 0xe0, 0x86, 0x4e, 0x6a, 0x1b, 0x9a, 0x70, 0x1d, 0x9c, 0xd5, 0xcf, 0x8f, 0xc7, 0x0b, 0x82, 0x0d, 0x0a, 0x72, 0xc3, 0xc5, 0x41, 0xb0, 0xb0, 0x1b, 0x8c, 0x9f, 0xae, 0x05, 0xc1, 0x86, 0xac, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x34, 0x9d, 0x8c, 0x83, 0x71, 0x61, 0x76, 0x1c, 0x1a, 0x04, 0x1b, 0x36, 0x43, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0xe9, 0x64, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xc8, 0x44, 0x1c, 0x0c, 0xf4, 0xb2, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x46, 0xed, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0xd8, 0xd0, 0x02, 0xe8, 0xd0, 0x74, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x24, 0x03, 0x71, 0x3b, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0x4b, 0x50, 0xee, 0x97, 0xe0, 0xbc, 0x5f, 0x82, 0xf4, 0xfd, 0x04, 0xf9, 0xfb, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x83, 0x60, 0x83, 0x71, 0xe0, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x39, 0x28, 0xc8, 0x76, 0x8e, 0x43, 0x0b, 0xbb, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x18, 0x07, 0x1e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0x83, 0x64, 0x4d, 0x83, 0xe3, 0xd0, 0x61, 0x7d, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x8c, 0x03, 0x8f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0x41, 0xba, 0xf7, 0xc5, 0x71, 0xe8, 0x90, 0xce, 0x3d, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0x91, 0xff, 0x30, 0xfc, 0x82, 0x68, 0x41, 0x3c, 0x08, 0x36, 0x48, 0xce, 0x6e, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd8, 0x2b, 0x1c, 0x7e, 0xe3, 0xf9, 0xf0, 0x0b, 0x92, 0x81, 0xa0, 0x1d, 0x56, 0x68, 0x0f, 0x4e, 0x2b, 0xb8, 0xc7, 0xa1, 0x41, 0xb4, 0x30, 0x83, 0x60, 0x83, 0x34, 0x05, 0x8c, 0x83, 0x44, 0x3c, 0x8d, 0xe3, 0xf1, 0xf0, 0x0b, 0xbb, 0x20, 0xd8, 0x60, 0xd4, 0x70, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x0e, 0xbf, 0xf1, 0x7c, 0x98, 0xe1, 0x37, 0x48, 0x33, 0xd4, 0x38, 0x18, 0xcb, 0x50, 0xc7, 0xa1, 0x05, 0xd1, 0xc2, 0x1d, 0x12, 0x53, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0xe2, 0x41, 0xb0, 0xc1, 0x58, 0xb7, 0x39, 0x48, 0x53, 0xd5, 0x18, 0x44, 0x0b, 0x77, 0x38, 0xd7, 0x8f, 0xc7, 0x83, 0x68, 0x41, 0x3c, 0x08, 0x36, 0x48, 0xce, 0x6e, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd8, 0x2b, 0x1c, 0x7e, 0xe3, 0xf9, 0x41, 0x02, 0xae, 0xc6, 0x71, 0x68, 0x10, 0x2d, 0x88, 0x06, 0xc1, 0x06, 0xc3, 0x8c, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0x91, 0xe0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x69, 0x0a, 0x18, 0x07, 0x89, 0xea, 0x1a, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0x30, 0xcc, 0x68, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x50, 0xf6, 0x4d, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0xf7, 0xbe, 0x38, 0x44, 0xf3, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xd9, 0x37, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x59, 0xd3, 0xe0, 0xd0, 0x48, 0xf0, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x8b, 0x83, 0x60, 0x61, 0x37, 0x74, 0x0c, 0x3b, 0x48, 0x6d, 0xc7, 0x18, 0x76, 0x41, 0xb0, 0x20, 0x19, 0xc8, 0xaf, 0x1c, 0x0c, 0x43, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x83, 0x77, 0xf2, 0x90, 0x3a, 0x38, 0x0e, 0x2d, 0x08, 0x16, 0x07, 0xc1, 0x1a, 0x62, 0x38, 0xec, 0x06, 0xc1, 0xc3, 0xbd, 0xf0, 0x1b, 0x24, 0xfb, 0x59, 0x1c, 0xa4, 0x7c, 0x5c, 0x0c, 0xbf, 0x41, 0xb2, 0x9f, 0xc5, 0xc1, 0x29, 0x0c, 0x77, 0x10, 0x2c, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x40, 0xa0, 0xf7, 0x1d, 0x0c, 0x47, 0xe9, 0x43, 0xa2, 0x75, 0xd8, 0x05, 0xc1, 0x06, 0x47, 0xa8, 0xe2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa7, 0x72, 0xe4, 0x43, 0xea, 0xe0, 0x38, 0xb4, 0x06, 0x83, 0x77, 0x72, 0x83, 0x02, 0xe3, 0x6d, 0x98, 0x83, 0xb3, 0xec, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x28, 0xff, 0x83, 0x60, 0x83, 0xc4, 0xd0, 0x85, 0x83, 0x04, 0xdf, 0x8d, 0x41, 0xb4, 0x20, 0x3c, 0x28, 0x30, 0xde, 0x8e, 0xe7, 0xc7, 0xb7, 0xe3, 0xdb, 0x20, 0xd8, 0x60, 0xb8, 0x29, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x41, 0xfd, 0x20, 0xd8, 0xe0, 0x78, 0x05, 0x7d, 0x50, 0xf4, 0x1f, 0x0d, 0xa2, 0x05, 0xdd, 0xc3, 0x6d, 0x88, 0xe1, 0x20, 0xd8, 0x20, 0x8d, 0xee, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x90, 0xa2, 0x3d, 0xa4, 0x0e, 0x8e, 0x43, 0x07, 0x69, 0xa4, 0x0d, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0x80, 0x16, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0x59, 0x93, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xfb, 0x0c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x59, 0xbb, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x41, 0x1a, 0xc6, 0xc5, 0xc1, 0xf9, 0x89, 0xf6, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xfb, 0x0c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x3d, 0x84, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0x06, 0x69, 0x18, 0x17, 0x07, 0xc9, 0x0c, 0x16, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xd8, 0x67, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x5c, 0x34, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x48, 0xc3, 0xb8, 0x38, 0x48, 0xff, 0x6d, 0x38, 0x0e, 0x1d, 0x24, 0x6b, 0x20, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x8c, 0xdb, 0x19, 0x04, 0x8b, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x24, 0x7a, 0x2b, 0x6c, 0x88, 0xe1, 0xf0, 0x0b, 0xa2, 0x85, 0x1d, 0x04, 0x1b, 0x14, 0x9b, 0x57, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0xc8, 0x7a, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xf1, 0x58, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x37, 0x28, 0xe3, 0x76, 0x0e, 0xa9, 0x83, 0x09, 0xd2, 0xfb, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x81, 0x7a, 0x3f, 0xc1, 0x7d, 0x7f, 0x3c, 0x3e, 0x0e, 0x1d, 0xdf, 0x06, 0xc1, 0x06, 0x03, 0xd1, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x63, 0x68, 0xe1, 0x20, 0x99, 0xa3, 0xe2, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0xe1, 0x17, 0x24, 0x03, 0xe5, 0xe9, 0xb0, 0x42, 0x3b, 0x88, 0x16, 0xf6, 0xa0, 0xb0, 0xc3, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x41, 0x80, 0xf2, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0xd1, 0x70, 0x0e, 0x92, 0xf4, 0x2a, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x82, 0xe4, 0x60, 0xec, 0x37, 0x2f, 0x48, 0x06, 0x75, 0x07, 0x21, 0x05, 0xbe, 0x20, 0x19, 0x08, 0xde, 0x41, 0x48, 0x81, 0x2f, 0x48, 0x06, 0xff, 0x0e, 0x42, 0x0a, 0x7c, 0x90, 0x0c, 0xda, 0x0e, 0x42, 0x0a, 0x7c, 0x10, 0x2c, 0x08, 0x36, 0x18, 0x43, 0x0b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x1e, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x28, 0x52, 0x9f, 0x0e, 0x92, 0xf9, 0x1e, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xb2, 0xb0, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0x35, 0x0e, 0x1d, 0x04, 0x26, 0xf6, 0xe2, 0x20, 0x08, 0x02, 0xb0, 0x82, 0x60, 0x83, 0xf1, 0xac, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x13, 0x23, 0xf5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x41, 0x01, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x3c, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x64, 0xbd, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0x10, 0xf1, 0x1f, 0x52, 0x07, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x8f, 0x41, 0x01, 0x38, 0x0e, 0x1d, 0x87, 0x0e, 0x12, 0x7c, 0x3c, 0x8e, 0x43, 0x87, 0x18, 0xae, 0x18, 0x0e, 0x0c, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0x3c, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0xfc, 0x1b, 0x44, 0x0b, 0x7b, 0x30, 0x64, 0xcf, 0x8f, 0x43, 0x07, 0x03, 0x5b, 0xf4, 0x10, 0xc3, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x6c, 0x70, 0xc0, 0x7a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x70, 0x38, 0x29, 0x3e, 0xa4, 0x0e, 0x8e, 0x43, 0x83, 0x60, 0x31, 0x80, 0x80, 0xcc, 0x3c, 0x41, 0xad, 0xd0, 0xf5, 0x6c, 0x37, 0x6e, 0xde, 0x8d, 0x47, 0xeb, 0x60, 0x31, 0xe5, 0x20, 0x58, 0x0c, 0x20, 0x28, 0x60, 0xa4, 0xe8, 0x2c, 0x71, 0xb5, 0xf9, 0xdd, 0x9f, 0x5b, 0x17, 0xd3, 0x8e, 0x4a, 0x06, 0x02, 0x3e, 0x5c, 0x7a, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x10, 0x2c, 0x0e, 0xbb, 0x70, 0x07, 0x89, 0x70, 0x0d, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0xfd, 0x74, 0x70, 0xcc, 0x2a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xa2, 0xe1, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x36, 0x18, 0xe2, 0x1f, 0x07, 0xc7, 0xac, 0xe2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x60, 0x94, 0x0e, 0x8e, 0x59, 0xc5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x4a, 0x34, 0x9c, 0xc3, 0x5e, 0xe1, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0x38, 0x1d, 0x1c, 0xb3, 0x8a, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1c, 0x4e, 0x8a, 0x37, 0x18, 0x25, 0x89, 0x07, 0x83, 0x77, 0xf2, 0x38, 0x34, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xfb, 0xe9, 0xe0, 0xec, 0x65, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x44, 0xc3, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x6c, 0x30, 0x48, 0x5e, 0x0e, 0xce, 0x5e, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xa3, 0x74, 0x70, 0xf6, 0x32, 0x3e, 0x38, 0x6f, 0xa8, 0x4f, 0xf0, 0xee, 0xff, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0xc3, 0x60, 0x10, 0x2c, 0x0e, 0xbb, 0x70, 0x8b, 0xe1, 0xd0, 0x21, 0x75, 0xb0, 0x21, 0x55, 0x33, 0x08, 0x56, 0x10, 0x2c, 0xc1, 0xf7, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0xd2, 0x26, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x0e, 0x86, 0x62, 0xd1, 0x71, 0xe8, 0xb0, 0x57, 0x78, 0x1c, 0x5a, 0x10, 0x6c, 0x90, 0x6a, 0xf8, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x23, 0x6d, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0xe6, 0xe0, 0x40, 0xc4, 0x7f, 0x1c, 0x3a, 0xec, 0x15, 0x1e, 0x87, 0x16, 0x04, 0x1b, 0xa4, 0x1a, 0x7e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x48, 0x9b, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x19, 0x7e, 0xe3, 0xf9, 0x18, 0xe2, 0xe3, 0xd0, 0x61, 0xaf, 0xf0, 0x38, 0x34, 0x08, 0x36, 0x48, 0x35, 0xfc, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x91, 0x36, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0x83, 0x44, 0xb9, 0x8f, 0xe3, 0xd0, 0x61, 0xaf, 0xf0, 0x38, 0x34, 0x08, 0x16, 0x04, 0x4b, 0x60, 0xd8, 0xff, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x1b, 0x8c, 0x0d, 0xd7, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xf0, 0x0e, 0x0e, 0x14, 0xc9, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xd6, 0x6e, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x0f, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8d, 0x8b, 0x0e, 0xcd, 0x92, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe2, 0x41, 0xb0, 0x20, 0x19, 0x28, 0x7a, 0x07, 0xa7, 0x0d, 0xe5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xba, 0x74, 0x70, 0xda, 0x50, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x0a, 0x3b, 0x9c, 0xc3, 0x5e, 0xe1, 0x21, 0x75, 0x70, 0x1c, 0x3a, 0x18, 0x6f, 0x3a, 0xc7, 0xa1, 0x83, 0x02, 0x3e, 0xea, 0xf8, 0x36, 0x08, 0x36, 0xc4, 0x70, 0x10, 0xac, 0x20, 0x58, 0x82, 0xed, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0xe4, 0x60, 0xbc, 0xe9, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0x24, 0x47, 0x83, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x1b, 0xae, 0x07, 0xe3, 0x4d, 0xe7, 0x38, 0xb4, 0x20, 0xd8, 0x20, 0x39, 0x1a, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0xf1, 0xfc, 0xc1, 0x78, 0xd3, 0x39, 0x0e, 0x2d, 0x08, 0x36, 0x48, 0x8e, 0x06, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x0e, 0xc6, 0x9b, 0xce, 0x71, 0x68, 0x10, 0x6c, 0x90, 0x1c, 0x0d, 0x72, 0x50, 0x8a, 0x09, 0x0d, 0x82, 0xc5, 0x61, 0x17, 0x6e, 0x83, 0x34, 0xbd, 0x8f, 0x43, 0xaa, 0x66, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x88, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0x7e, 0x3a, 0x38, 0xd7, 0x1f, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0xd1, 0x70, 0x86, 0xdf, 0x78, 0xbe, 0x20, 0x58, 0x82, 0xe6, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x59, 0xbb, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x52, 0x0d, 0x3f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x83, 0x81, 0x48, 0x7d, 0x1c, 0x3a, 0x0e, 0x2d, 0x08, 0x36, 0x48, 0xce, 0x0a, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xe8, 0x21, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xaa, 0xe1, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb1, 0xe1, 0x7a, 0x30, 0x10, 0xa9, 0x8f, 0x43, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xc9, 0x59, 0x21, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8d, 0x8b, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x35, 0xfc, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x3c, 0x7f, 0x30, 0x10, 0xa9, 0x8f, 0x43, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xc9, 0x59, 0x21, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc2, 0x9e, 0x7a, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x54, 0xc3, 0x8f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0xe8, 0x60, 0x20, 0x52, 0x1f, 0x87, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0x92, 0xb3, 0x42, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x94, 0xd8, 0x83, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0x1a, 0x7e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0xc8, 0x76, 0x0e, 0x06, 0x22, 0xf5, 0x71, 0xe8, 0x38, 0x74, 0x88, 0xe1, 0x71, 0x68, 0x10, 0x2d, 0xec, 0x41, 0x4a, 0x66, 0xc3, 0x21, 0x5b, 0x31, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xa2, 0x77, 0x70, 0xae, 0x3f, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xf7, 0x0e, 0xce, 0xf5, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x3d, 0x84, 0x0e, 0x8d, 0x8b, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0x33, 0x89, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x54, 0xbd, 0x83, 0x73, 0xfd, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x12, 0x0d, 0x67, 0x83, 0xb1, 0xe1, 0x7a, 0xe8, 0x21, 0x74, 0x1c, 0x3a, 0x08, 0x7b, 0xea, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x48, 0x32, 0x02, 0x19, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x84, 0x7c, 0xf6, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x45, 0xae, 0xc2, 0x41, 0x9a, 0x7b, 0xc6, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x04, 0x1b, 0xa4, 0x37, 0x82, 0x0c, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xf7, 0x0e, 0x4e, 0x1b, 0xca, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x42, 0x3e, 0xfb, 0xa0, 0xc8, 0x55, 0x38, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd2, 0xc3, 0x45, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x84, 0x7c, 0xf6, 0x41, 0x9a, 0x7b, 0xc6, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0x87, 0x8b, 0x1c, 0x24, 0xd8, 0x8a, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x61, 0x17, 0x76, 0x41, 0xb0, 0x20, 0x19, 0xd4, 0x4c, 0x60, 0xfd, 0xff, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc1, 0x3b, 0x79, 0x30, 0xf0, 0x43, 0x8e, 0x43, 0x0b, 0xbb, 0x20, 0x58, 0x90, 0x0c, 0x04, 0xe5, 0x20, 0x2d, 0x68, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xe0, 0x9d, 0x1c, 0x7e, 0xe3, 0xf9, 0x18, 0x36, 0xc7, 0xa1, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x2f, 0x08, 0x96, 0xc0, 0xe0, 0xff, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x09, 0x1c, 0xfb, 0xff, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x0d, 0x4a, 0x34, 0x9c, 0x83, 0x20, 0xc5, 0x3f, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x98, 0xd8, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x4b, 0x90, 0xef, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x4b, 0xa0, 0xf4, 0xff, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0xce, 0x99, 0xc9, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0xe6, 0x3d, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xf0, 0x4e, 0x1e, 0x0c, 0x44, 0xea, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0xbb, 0xb0, 0x0b, 0x82, 0x0d, 0xd2, 0x7b, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xde, 0xc9, 0xe1, 0x37, 0x9e, 0x8f, 0x61, 0x74, 0x1c, 0x5a, 0xd8, 0x05, 0xc1, 0x06, 0xc9, 0x58, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0xef, 0xe4, 0xf0, 0x1b, 0xcf, 0xc7, 0xd0, 0x73, 0x1c, 0x3a, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0x82, 0x60, 0x83, 0xc4, 0xbc, 0x91, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xda, 0xe1, 0xc8, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xbd, 0xc2, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xd2, 0x8a, 0x47, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x69, 0xde, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x86, 0xeb, 0xc1, 0x39, 0x33, 0xf9, 0x38, 0x74, 0x90, 0x20, 0x3f, 0x72, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc3, 0x2e, 0xec, 0x82, 0x60, 0x83, 0xf4, 0x9e, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x83, 0x77, 0x72, 0xf8, 0x8d, 0xe7, 0x63, 0x28, 0x3a, 0x0e, 0x2d, 0xec, 0x82, 0x60, 0x83, 0x64, 0xac, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x83, 0x77, 0x72, 0xf8, 0x8d, 0xe7, 0x63, 0xe8, 0x3e, 0x0e, 0x1d, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x41, 0x62, 0xde, 0xc8, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xed, 0x70, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb4, 0xe2, 0x91, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x9a, 0xf7, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xe3, 0xf9, 0x83, 0x73, 0x66, 0xf2, 0x71, 0xe8, 0x20, 0x41, 0x7e, 0xe4, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0x89, 0x79, 0x23, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb4, 0xc3, 0x91, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x7b, 0x85, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0x15, 0x8f, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd2, 0xbc, 0x47, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x83, 0x73, 0x66, 0xf2, 0x71, 0xe8, 0x20, 0x41, 0x7e, 0xe4, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x20, 0x1e, 0xe6, 0x60, 0xf0, 0x4e, 0x0e, 0xa2, 0x85, 0xdd, 0x38, 0xb4, 0x41, 0x90, 0xe2, 0x2f, 0x08, 0x96, 0x40, 0xb2, 0xff, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0x41, 0xd2, 0x05, 0xc0, 0x41, 0x49, 0xd3, 0x70, 0x1c, 0x5a, 0x82, 0xb2, 0x7f, 0x50, 0x1e, 0x19, 0x1c, 0xb2, 0x15, 0xc7, 0xb7, 0xe3, 0xdb, 0xf1, 0x78, 0x05, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xfd, 0xef, 0x0e, 0xc9, 0xa5, 0x41, 0x32, 0xd8, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xfc, 0x7e, 0x77, 0x48, 0x2e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x64, 0xed, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x21, 0x4e, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x9c, 0xf9, 0x6a, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xa1, 0x29, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xc9, 0x1f, 0x26, 0x87, 0x44, 0xeb, 0x20, 0xd8, 0x60, 0xf8, 0x0e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xd8, 0xd7, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xd7, 0xe8, 0x87, 0xd4, 0xc1, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x41, 0xc9, 0x71, 0x90, 0x26, 0x67, 0x72, 0x1c, 0x3a, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x71, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0xb8, 0x21, 0x9a, 0x83, 0x60, 0x41, 0x32, 0xb0, 0xea, 0x74, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x87, 0xbc, 0xec, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x0d, 0x92, 0xe9, 0x1c, 0x0e, 0xa9, 0x83, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x64, 0x20, 0xed, 0x74, 0xc8, 0x56, 0x1c, 0xa4, 0xf8, 0x39, 0x1c, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc9, 0x80, 0x60, 0xed, 0x3b, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x14, 0x6e, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x09, 0xa0, 0x26, 0x07, 0x43, 0xb1, 0xe8, 0x38, 0x74, 0x48, 0xd5, 0x1c, 0x87, 0x8e, 0xc7, 0x8b, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0xd3, 0xbe, 0xc3, 0x0a, 0xed, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0xc3, 0x1c, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0xc0, 0xeb, 0x77, 0x87, 0xe4, 0xd2, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x83, 0xdd, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x31, 0x14, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x15, 0x04, 0x1b, 0x24, 0x55, 0x9c, 0x0c, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x98, 0x1d, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x40, 0xfa, 0xee, 0x90, 0x5c, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x89, 0x56, 0x27, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0xa4, 0x43, 0x79, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x15, 0x04, 0x1b, 0x24, 0x55, 0x9c, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x44, 0xc7, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0xc1, 0xab, 0xe3, 0xf1, 0x71, 0x68, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0xe1, 0x17, 0x24, 0x03, 0xe5, 0xe9, 0x20, 0xc8, 0xf9, 0x0f, 0x52, 0xd3, 0x3a, 0x06, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xd8, 0x20, 0x2d, 0xe6, 0xe1, 0x20, 0xad, 0xaf, 0xe3, 0x78, 0x3c, 0x08, 0x36, 0x48, 0x87, 0xec, 0x18, 0x04, 0x0b, 0x82, 0x0d, 0xc6, 0x6d, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa4, 0xe0, 0x8e, 0x43, 0xb2, 0xe3, 0x38, 0x34, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x01, 0xe1, 0xef, 0x74, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0xe1, 0x37, 0x9e, 0xaf, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x06, 0x56, 0x9d, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0x41, 0x90, 0xe2, 0x1f, 0x84, 0x88, 0xff, 0x71, 0x68, 0x83, 0x94, 0xf8, 0x8e, 0x15, 0x04, 0x1b, 0x24, 0x90, 0x32, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x78, 0x05, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x21, 0xc2, 0x63, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x04, 0x52, 0x86, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x0c, 0xf1, 0xd8, 0x83, 0xb4, 0x17, 0x8f, 0x83, 0x04, 0x1f, 0x8f, 0xe3, 0xd0, 0x71, 0xe8, 0x20, 0xc1, 0xc7, 0xe3, 0x38, 0x74, 0x88, 0xe1, 0x1a, 0xa4, 0x43, 0x79, 0x0c, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0x3c, 0x1d, 0x0c, 0x43, 0x9f, 0x83, 0x74, 0x2f, 0x8f, 0x83, 0x81, 0x2d, 0x7a, 0x88, 0xe1, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x38, 0x4b, 0x66, 0x1f, 0x24, 0xea, 0x79, 0x0c, 0x82, 0x0d, 0x12, 0x16, 0x3d, 0x06, 0xc1, 0x06, 0xc9, 0x9f, 0x1e, 0x83, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0xe2, 0xb0, 0x1b, 0xa4, 0xfb, 0x7a, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xf7, 0xd3, 0xc1, 0xe9, 0x0c, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x89, 0x86, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd9, 0x60, 0x88, 0x7f, 0x1c, 0x9c, 0xce, 0x90, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0x51, 0x3a, 0x38, 0x9d, 0x21, 0x1f, 0xa4, 0xe8, 0x7b, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x14, 0xa7, 0x83, 0xd3, 0x19, 0xf2, 0x41, 0x92, 0xc6, 0xc7, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xee, 0xa7, 0x83, 0x73, 0xde, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x12, 0x0d, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0xb2, 0xc1, 0x20, 0x79, 0x39, 0x38, 0xe7, 0x1d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x8c, 0xd2, 0xc1, 0x39, 0xef, 0xf8, 0xe0, 0xbc, 0xa1, 0x7e, 0x90, 0x96, 0xf6, 0x71, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x0d, 0x12, 0xe5, 0x3e, 0x06, 0xc1, 0xe2, 0xb0, 0x1b, 0xa4, 0xe3, 0x7d, 0x6c, 0x48, 0xd5, 0x0c, 0x82, 0x15, 0x04, 0x1b, 0xa4, 0x1a, 0x7e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xfe, 0x1c, 0x1c, 0x33, 0x96, 0x0f, 0xd2, 0x32, 0x3f, 0x0e, 0x7b, 0x85, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xa9, 0x86, 0x1f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x3e, 0x4d, 0x39, 0x48, 0x0f, 0xfe, 0x38, 0xec, 0x15, 0x1e, 0x87, 0x16, 0x04, 0x1b, 0xa4, 0x1a, 0x7e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xf9, 0x34, 0xe5, 0x20, 0x55, 0xfd, 0xe3, 0xb0, 0x57, 0x78, 0x1c, 0x1a, 0x04, 0x1b, 0xa4, 0x1a, 0x7e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xf9, 0x34, 0xe5, 0x20, 0x99, 0x02, 0xe4, 0xb0, 0x57, 0x78, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0xd2, 0x5e, 0x40, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x0d, 0xc6, 0x86, 0xeb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x78, 0x07, 0xc7, 0x8c, 0xe5, 0x83, 0x14, 0x27, 0x90, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xc4, 0x83, 0x60, 0x41, 0x32, 0x50, 0xf4, 0x0e, 0xd2, 0x82, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xea, 0xd2, 0x41, 0x5a, 0xd0, 0xc8, 0x41, 0x62, 0x2a, 0xc8, 0xc1, 0x78, 0xd3, 0x39, 0x0e, 0x1d, 0x14, 0xf0, 0x51, 0xc7, 0xb7, 0x41, 0xb0, 0x21, 0x86, 0x83, 0x60, 0x83, 0xd4, 0x67, 0x90, 0x41, 0xb0, 0x38, 0xec, 0x06, 0x89, 0x31, 0x21, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x41, 0x3c, 0x08, 0x16, 0x24, 0x03, 0xf7, 0xd3, 0xc1, 0x69, 0x43, 0xf9, 0x20, 0x4d, 0x29, 0xe4, 0x20, 0x79, 0x45, 0x64, 0x10, 0x2c, 0x08, 0x36, 0x48, 0x6f, 0x04, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x7a, 0xb8, 0xc8, 0x41, 0x4a, 0x95, 0xc8, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe9, 0xe1, 0x22, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x55, 0xef, 0xe0, 0xb4, 0xa1, 0x7c, 0x90, 0xfe, 0x27, 0x72, 0x10, 0xf6, 0xd4, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x6c, 0x90, 0xd2, 0xa2, 0x72, 0x90, 0x18, 0x2a, 0x32, 0x08, 0x16, 0x04, 0x1b, 0x24, 0x0c, 0xa9, 0x0c, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xf7, 0x0e, 0xd2, 0x82, 0x46, 0x0e, 0x52, 0xd4, 0x45, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe9, 0x01, 0x2b, 0x07, 0x49, 0x13, 0x23, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x3d, 0x60, 0xe5, 0x20, 0xc1, 0x56, 0xe4, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0xbb, 0xb0, 0x0b, 0x82, 0x05, 0xc9, 0xa0, 0x66, 0x02, 0xef, 0xff, 0xff, 0x3f, 0x48, 0x2f, 0x1a, 0x59, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x28, 0x07, 0xc9, 0x4a, 0x2b, 0x07, 0xc9, 0x60, 0x23, 0x87, 0x74, 0xee, 0xe1, 0x68, 0xdf, 0x20, 0xf5, 0x6e, 0x64, 0xd8, 0x85, 0x5d, 0x10, 0x6c, 0x90, 0x74, 0xb4, 0x72, 0x90, 0xe4, 0x41, 0xb2, 0xb0, 0x0b, 0x82, 0x0d, 0x52, 0xae, 0x56, 0x0e, 0x52, 0x6e, 0x48, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x41, 0x8a, 0x13, 0xc9, 0xb0, 0x0b, 0xbb, 0x20, 0xd8, 0x20, 0xe9, 0x68, 0xe5, 0x20, 0x21, 0x98, 0x64, 0x61, 0x17, 0x04, 0x1b, 0xa4, 0x5c, 0xad, 0x1c, 0x24, 0x68, 0x93, 0x1c, 0xd2, 0xb9, 0x87, 0xa3, 0xfd, 0x20, 0x19, 0x9e, 0xe4, 0x20, 0x89, 0xb8, 0xe4, 0xf8, 0x76, 0x7c, 0x3b, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x7d, 0x0e, 0x2d, 0x2c, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0x41, 0xb0, 0x41, 0x52, 0xc5, 0xc9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xd9, 0xe4, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x9c, 0x77, 0x87, 0xe4, 0xd2, 0x41, 0x22, 0xe9, 0xc9, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x36, 0x48, 0xaa, 0x38, 0x19, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0xf5, 0x9d, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xf6, 0x77, 0x87, 0xe4, 0xd2, 0x41, 0x7a, 0xd3, 0xc9, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xde, 0x1c, 0x5a, 0x78, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x86, 0xae, 0x99, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0xd4, 0x1d, 0x92, 0x4b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x06, 0x7e, 0x5b, 0xd8, 0x1c, 0x7a, 0x48, 0xd5, 0x1c, 0x87, 0x06, 0xc1, 0x06, 0x49, 0x54, 0x2c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x06, 0xfe, 0x1c, 0x5a, 0x58, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x58, 0xea, 0x3b, 0xac, 0xd0, 0x1e, 0x1a, 0xb5, 0x1c, 0x87, 0x8e, 0xc7, 0x0b, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x7e, 0x41, 0xb4, 0x20, 0x1d, 0x04, 0x0b, 0x92, 0x81, 0xe2, 0x74, 0x58, 0xa1, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x36, 0x18, 0xf3, 0x77, 0x87, 0x7c, 0xed, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x56, 0xf8, 0x0d, 0x12, 0xc5, 0x3a, 0x06, 0xd1, 0xc2, 0x1e, 0x8c, 0xe6, 0xf3, 0xe3, 0xf1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x1b, 0x04, 0x28, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x21, 0x7b, 0x7e, 0x90, 0xa4, 0x57, 0x71, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x35, 0x48, 0x89, 0xec, 0xd8, 0x20, 0xd5, 0xb2, 0xe3, 0x20, 0xad, 0xb4, 0x63, 0x10, 0x2c, 0x08, 0x36, 0x18, 0x43, 0x0b, 0x07, 0xe9, 0x18, 0x28, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xb2, 0xb0, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0x35, 0x0e, 0x1d, 0x12, 0x33, 0x1b, 0xa4, 0xc4, 0x77, 0xac, 0x20, 0xd8, 0x60, 0x3c, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xc4, 0x48, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x63, 0x70, 0x80, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x30, 0x9e, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0x9a, 0x78, 0x0c, 0xbf, 0xf1, 0x7c, 0x0c, 0x0e, 0x80, 0xe3, 0xd0, 0x71, 0xe8, 0x20, 0x6d, 0xab, 0xe5, 0x38, 0x74, 0x88, 0xe1, 0x8a, 0x41, 0x00, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x94, 0x2b, 0x8f, 0x41, 0x32, 0xf8, 0x37, 0x88, 0x16, 0xf6, 0x60, 0x5c, 0xa3, 0x1f, 0x87, 0x0e, 0x06, 0xb6, 0xe8, 0x21, 0x86, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0x80, 0xf5, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x5c, 0x53, 0x7c, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xc1, 0x62, 0x00, 0xe0, 0xff, 0x88, 0xb8, 0xa2, 0x5c, 0x63, 0xbe, 0x28, 0x0a, 0x35, 0x97, 0xbd, 0x8f, 0x44, 0x12, 0xdd, 0xc4, 0xbd, 0xec, 0x34, 0xb1, 0x3f, 0xef, 0x03, 0xd7, 0xf2, 0x6e, 0x27, 0x06, 0x96, 0x6e, 0xd7, 0xa6, 0xe3, 0xd4, 0x22, 0xcd, 0x6f, 0x09, 0x5b, 0xe5, 0x64, 0x40, 0x17, 0xd8, 0xc6, 0x47, 0xc4, 0x67, 0x6d, 0x3e, 0x65, 0xbc, 0x92, 0x0a, 0xfe, 0x48, 0x62, 0x04, 0xb6, 0x69, 0x57, 0x7b, 0x71, 0xac, 0x0a, 0x09, 0x0c, 0x8c, 0x62, 0xaa, 0x1e, 0x60, 0xfb, 0xbe, 0xc1, 0x15, 0x05, 0x6c, 0x0d, 0x4a, 0x30, 0xca, 0x92, 0x3b, 0xf9, 0x16, 0xc6, 0x90, 0x88, 0xd3, 0xfe, 0x57, 0x0f, 0xf7, 0x31, 0x54, 0xbd, 0x25, 0xee, 0xc9, 0xd3, 0x75, 0xf9, 0xca, 0xc5, 0x5a, 0x5a, 0xec, 0xf8, 0xc7, 0x7a, 0x03, 0xd6, 0x48, 0x1c, 0x97, 0x9c, 0x1a, 0x70, 0x6f, 0x52, 0x9a, 0xa4, 0x3d, 0xd3, 0xc5, 0x6f, 0x06, 0x4b, 0x2b, 0xc5, 0x7b, 0x06, 0xa7, 0x6d, 0x92, 0x8f, 0x97, 0x3c, 0xe1, 0x18, 0x1e, 0xf9, 0xbe, 0xd7, 0x56, 0x33, 0x2e, 0x1a, 0x77, 0x06, 0x3f, 0x94, 0x71, 0xb2, 0xde, 0x31, 0x87, 0x32, 0x90, 0xd4, 0x09, 0xac, 0x64, 0xbd, 0xb1, 0xa4, 0xb7, 0x0c, 0x92, 0x9b, 0xba, 0xa9, 0x12, 0xd2, 0x29, 0x51, 0xef, 0x07, 0xf5, 0x72, 0xa7, 0xc2, 0x72, 0xd5, 0x4e, 0x45, 0x0c, 0x6a, 0x23, 0xe6, 0xdb, 0xad, 0x7e, 0x9b, 0xb9, 0x4b, 0x45, 0xf9, 0x60, 0x42, 0xc8, 0xd0, 0xb6, 0xb4, 0x19, 0xc7, 0xa0, 0xfe, 0x84, 0xec, 0x63, 0x22, 0x9f, 0x0c, 0xc0, 0x92, 0x3b, 0xbc, 0xfb, 0x1e, 0xff, 0x65, 0xfd, 0x0a, 0x3f, 0xa2, 0xf6, 0xcc, 0x2f, 0x80, 0x1b, 0x97, 0x9c, 0x2a, 0x4c, 0x1e, 0x45, 0x9e, 0x56, 0xbf, 0x09, 0x0e, 0x80, 0x47, 0x8d, 0x29, 0x1b, 0xc0, 0xb9, 0x39, 0x28, 0x9c, 0xa5, 0xa4, 0x50, 0xf0, 0xbf, 0x48, 0x1b, 0x15, 0x2a, 0xdc, 0x9e, 0x98, 0x24, 0x9b, 0x70, 0xe1, 0x84, 0x6c, 0xb8, 0xb4, 0xab, 0x10, 0x6b, 0xf1, 0xb7, 0xb1, 0x34, 0x7d, 0xcf, 0x56, 0x76, 0x4e, 0x34, 0xe0, 0x4c, 0x79, 0x8f, 0xbd, 0x2e, 0x52, 0xcd, 0x29, 0x94, 0xa1, 0xca, 0xde, 0xf1, 0xec, 0x2a, 0xa8, 0xd9, 0x99, 0xbb, 0xb6, 0x1f, 0xb9, 0x24, 0x0b, 0x07, 0xee, 0xd4, 0x08, 0x52, 0x14, 0xb2, 0xc8, 0x49, 0x92, 0x0d, 0xc4, 0x33, 0x85, 0xa2, 0xff, 0x8a, 0x06, 0xc0, 0x08, 0xf1, 0x2e, 0x99, 0x69, 0xa0, 0x46, 0x5e, 0xe2, 0x43, 0xc3, 0x2d, 0x2e, 0x09, 0xc3, 0xf8, 0x52, 0x19, 0x8c, 0x46, 0xb1, 0x1d, 0x63, 0x48, 0xbd, 0x5b, 0x67, 0xa0, 0x4b, 0x46, 0x43, 0xa4, 0x96, 0x55, 0x91, 0x18, 0x64, 0x5a, 0xab, 0x80, 0xc4, 0x5d, 0x15, 0xd6, 0x38, 0xd0, 0xe3, 0x46, 0xef, 0xca, 0xc0, 0x81, 0xaa, 0x41, 0x20, 0x43, 0x4b, 0xe3, 0x5a, 0x04, 0x93, 0x66, 0x4c, 0xad, 0x06, 0x45, 0x21, 0xb0, 0xdd, 0x78, 0x64, 0xae, 0x3b, 0x7e, 0x33, 0xdd, 0x21, 0x9d, 0xa0, 0x22, 0x6d, 0x86, 0xd7, 0xf2, 0xc2, 0xd2, 0x8c, 0x69, 0x25, 0x17, 0xcf, 0x32, 0x70, 0xe4, 0x2c, 0x2b, 0x06, 0x8d, 0x2b, 0xa9, 0x62, 0x3b, 0xcd, 0x8d, 0x8f, 0xdd, 0x3d, 0x29, 0x73, 0x6e, 0x8d, 0xe2, 0xca, 0x5a, 0xcf, 0xbf, 0xb9, 0xa0, 0xf1, 0xcb, 0xbe, 0x77, 0xb9, 0x0b, 0x3e, 0xd2, 0x81, 0xbd, 0x5c, 0x0c, 0xbd, 0x8d, 0x95, 0xe2, 0xc9, 0xad, 0xc2, 0x87, 0x52, 0xe0, 0x21, 0x13, 0xb2, 0xe7, 0x90, 0x69, 0x20, 0x08, 0x1c, 0x33, 0xa2, 0x78, 0x8c, 0x8d, 0xe8, 0xff, 0xfb, 0x42, 0xa6, 0xf7, 0x0a, 0x7a, 0xaf, 0xb3, 0x41, 0x91, 0x56, 0xe4, 0x19, 0xcb, 0xde, 0x8f, 0xe6, 0xfb, 0xae, 0x4c, 0xc9, 0x8d, 0xcb, 0xe3, 0xc5, 0x19, 0x73, 0x86, 0x99, 0xa8, 0x3b, 0xfb, 0x9c, 0x28, 0x1f, 0x08, 0x03, 0x87, 0x1c, 0xe3, 0x1a, 0x46, 0x7b, 0xac, 0x83, 0x37, 0x5b, 0xf7, 0x69, 0xab, 0xe3, 0x45, 0xbb, 0xb9, 0xff, 0x3d, 0xf5, 0xd5, 0xeb, 0xbe, 0x5d, 0xc8, 0xa9, 0x9e, 0xc1, 0x1b, 0x98, 0x62, 0x22, 0x8b, 0x16, 0xf7, 0x8d, 0x29, 0xb8, 0x36, 0xe4, 0xfb, 0x12, 0x60, 0xfe, 0x44, 0x6c, 0x1c, 0x71, 0x4c, 0xd4, 0x2c, 0xc4, 0x6d, 0x10, 0xf6, 0x11, 0x8c, 0xd4, 0xdf, 0x6d, 0xa3, 0x4c, 0x92, 0x1c, 0x03, 0xed, 0xad, 0x2a, 0xcb, 0xf0, 0xfa, 0x26, 0x57, 0x28, 0xf8, 0x7a, 0xf2, 0x30, 0x35, 0x40, 0x70, 0x12, 0x9f, 0x75, 0x0c, 0xd9, 0x0a, 0xf9, 0x2c, 0xfb, 0x52, 0x17, 0x33, 0xa9, 0xf8, 0x95, 0xf1, 0x73, 0xa6, 0xfc, 0x65, 0xb1, 0xeb, 0x5b, 0xeb, 0xac, 0xbe, 0x2d, 0x7f, 0x5d, 0x60, 0x1d, 0x29, 0x31, 0x66, 0x10, 0xb1, 0x83, 0x60, 0x31, 0x00, 0xff, 0x11, 0x92, 0x79, 0xe7, 0xcf, 0xcc, 0x13, 0xd4, 0x76, 0x4e, 0x95, 0x09, 0x0b, 0x5d, 0xcf, 0x76, 0x57, 0xf0, 0x29, 0xfd, 0xe5, 0xe6, 0xdd, 0x78, 0xe2, 0x6d, 0x3a, 0xbe, 0x74, 0xea, 0x9f, 0x4a, 0xa3, 0x05, 0xcd, 0x5b, 0xff, 0xa4, 0x1c, 0xa2, 0x3e, 0xd8, 0x7c, 0x56, 0x18, 0xd1, 0x0a, 0x36, 0xd7, 0x7a, 0x83, 0xf6, 0x57, 0xb3, 0x07, 0x3f, 0xf2, 0x42, 0xfc, 0x26, 0x32, 0x9a, 0xc1, 0xb7, 0x41, 0xb0, 0x21, 0x86, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0xd2, 0x7d, 0x3d, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xf3, 0xe9, 0xe0, 0x98, 0x55, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xc8, 0x9e, 0x6f, 0xd8, 0x2b, 0x9c, 0x60, 0xed, 0xff, 0x38, 0x34, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x52, 0x24, 0x3e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9c, 0x6b, 0x8a, 0x0f, 0x92, 0x48, 0x3e, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x38, 0x9f, 0x0e, 0xce, 0x5e, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0xec, 0xf9, 0x41, 0x4a, 0xf6, 0xc2, 0x71, 0x68, 0x10, 0x6c, 0x90, 0x28, 0xf7, 0x31, 0x08, 0x16, 0x87, 0xdd, 0x20, 0x1d, 0xef, 0x63, 0x43, 0xaa, 0x66, 0x10, 0xac, 0x20, 0xd8, 0x20, 0xd5, 0xf0, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x47, 0xda, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0x41, 0xb9, 0xe8, 0x73, 0x1c, 0x3a, 0xec, 0x15, 0x1e, 0x87, 0x16, 0x04, 0x1b, 0xa4, 0x1a, 0x7e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x48, 0x9b, 0x7c, 0xe8, 0x18, 0x7f, 0xd8, 0x2b, 0x3c, 0x0e, 0x6d, 0x90, 0xfa, 0xff, 0x31, 0x08, 0x36, 0x48, 0x35, 0xfc, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x91, 0x36, 0xf9, 0x60, 0x40, 0xa2, 0x1f, 0xf6, 0x0a, 0x8f, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x92, 0x11, 0xc8, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x14, 0x12, 0x49, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xc1, 0xc8, 0x70, 0x3d, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x0a, 0x89, 0xa4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0x83, 0x03, 0x11, 0xff, 0x21, 0x9a, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xde, 0x77, 0x3a, 0x38, 0x50, 0x24, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x78, 0x48, 0x2e, 0x1d, 0xa2, 0x79, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x10, 0xbc, 0x83, 0xd3, 0x86, 0xf2, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x4b, 0x60, 0xe8, 0xff, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x1b, 0x24, 0xaa, 0x8d, 0x1c, 0x7a, 0x08, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x69, 0xe3, 0x31, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xc2, 0x6f, 0x3c, 0x1f, 0x43, 0xfb, 0xa1, 0x87, 0xd0, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xf7, 0x9d, 0x0e, 0x4e, 0x1b, 0xca, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0x30, 0x7a, 0xad, 0x0e, 0x3d, 0x84, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x6c, 0x90, 0x98, 0x37, 0x32, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0x72, 0x15, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xca, 0xec, 0x1c, 0x52, 0x35, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe2, 0x41, 0xb0, 0x41, 0xc2, 0x90, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x52, 0xad, 0x54, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x83, 0xd1, 0x7c, 0x7e, 0x30, 0xde, 0x74, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0xc1, 0x40, 0xa4, 0x3e, 0x0e, 0x1d, 0x24, 0xaf, 0x88, 0x1c, 0xdf, 0x06, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0x35, 0x48, 0x7f, 0x06, 0xd9, 0x20, 0x91, 0x1c, 0x64, 0x83, 0xf4, 0x7c, 0x90, 0x0d, 0x52, 0x1d, 0x42, 0x36, 0x48, 0x1e, 0x09, 0x59, 0x10, 0x6c, 0x90, 0x1c, 0x0d, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x44, 0xc3, 0x39, 0x18, 0x6f, 0x3a, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xc9, 0xd1, 0x20, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0xec, 0xf9, 0xc1, 0x78, 0xd3, 0x39, 0x0e, 0x0d, 0x82, 0x0d, 0x92, 0xa3, 0x41, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x8c, 0x6b, 0xf4, 0x83, 0xf1, 0xa6, 0x73, 0x1c, 0x1a, 0x04, 0x8b, 0xc3, 0x6e, 0x90, 0x18, 0x13, 0xb2, 0x20, 0x19, 0x32, 0x88, 0x16, 0xc4, 0x83, 0x60, 0x83, 0x14, 0xa1, 0x90, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xf6, 0x7c, 0xf8, 0x8d, 0xe7, 0x1b, 0xa4, 0x5f, 0x85, 0x6c, 0x90, 0x0a, 0x18, 0xb2, 0x41, 0x92, 0x6a, 0xc8, 0x06, 0x49, 0xd3, 0x21, 0x0b, 0x82, 0x0d, 0x92, 0xb3, 0x42, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0x0d, 0x20, 0x1c, 0xa4, 0x34, 0x88, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0x24, 0x67, 0x85, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x97, 0xa0, 0x7c, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x6a, 0xf8, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x44, 0xc3, 0x39, 0x18, 0x88, 0xd4, 0xc7, 0xa1, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0xe4, 0xac, 0x90, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x12, 0x9c, 0xdf, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0x1a, 0x7e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xb2, 0xe7, 0x07, 0x03, 0x91, 0xfa, 0x38, 0x74, 0x1c, 0x5a, 0x10, 0x6c, 0x90, 0x9c, 0x15, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0x82, 0xfb, 0x7b, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x54, 0xc3, 0x8f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xe3, 0x1a, 0xfd, 0x60, 0x20, 0x52, 0x1f, 0x87, 0x8e, 0x43, 0x87, 0x18, 0x1e, 0x87, 0x0e, 0x92, 0x57, 0x44, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x10, 0xbc, 0x83, 0x73, 0xfd, 0xf1, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x94, 0x0e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xc2, 0x6f, 0x3c, 0x1f, 0xc3, 0xf8, 0x90, 0xb5, 0x3b, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x4a, 0x87, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xe1, 0x37, 0x9e, 0x8f, 0xa1, 0xe2, 0x90, 0xb5, 0x3b, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd2, 0x61, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0xd9, 0x20, 0x1d, 0x88, 0xe4, 0x90, 0xb5, 0x3b, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x92, 0x11, 0xc8, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0x73, 0xef, 0xe0, 0x40, 0x91, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0x43, 0x0b, 0xa0, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xad, 0x92, 0xe6, 0x20, 0x34, 0xa5, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x5a, 0x25, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0x91, 0x3a, 0xe3, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x12, 0x08, 0xfc, 0xff, 0x83, 0xc1, 0xe9, 0x33, 0x08, 0x16, 0x04, 0x1b, 0xa4, 0xb4, 0xa8, 0x0c, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x04, 0x8a, 0xfe, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0x83, 0xc4, 0xf9, 0x8f, 0x83, 0x04, 0x91, 0x8e, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x3d, 0xa1, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x59, 0xf8, 0x8d, 0xe7, 0x63, 0x98, 0x1c, 0x24, 0x88, 0x74, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x7a, 0x42, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0xf0, 0x1b, 0xcf, 0xc7, 0xd0, 0x74, 0x90, 0x20, 0xd2, 0x71, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x10, 0xbc, 0x83, 0xb4, 0xa0, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0x07, 0xac, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x97, 0x60, 0xbd, 0x7f, 0x82, 0xf6, 0xfd, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd2, 0x03, 0x56, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x50, 0x98, 0x2b, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x12, 0x31, 0x6b, 0x8e, 0x43, 0x13, 0xbc, 0xdf, 0x7f, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x12, 0x38, 0xfc, 0xff, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x25, 0x30, 0xfe, 0xfe, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x25, 0x90, 0xfa, 0xff, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x70, 0x4b, 0x9a, 0xe0, 0xfd, 0xff, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0xc2, 0xb0, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xb8, 0x25, 0x1d, 0x9c, 0x65, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf1, 0x30, 0x07, 0x85, 0x5b, 0xd2, 0x20, 0x5a, 0xd8, 0x05, 0xc1, 0x12, 0x48, 0xfc, 0xff, 0x3f, 0x48, 0x55, 0x6b, 0xd8, 0xa0, 0x24, 0x68, 0xd8, 0x20, 0xbd, 0xb1, 0x61, 0x83, 0x74, 0xbc, 0x86, 0x05, 0xc1, 0x06, 0x29, 0x60, 0x36, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x25, 0x68, 0xf7, 0x7f, 0x48, 0x1d, 0x1c, 0x87, 0x96, 0xa0, 0xbd, 0xff, 0x12, 0xbc, 0xef, 0x3f, 0x81, 0xe0, 0xf7, 0x3f, 0x08, 0x78, 0xff, 0xe3, 0xdb, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xfc, 0x39, 0xb4, 0x30, 0xf6, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x90, 0x1c, 0xbf, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x82, 0x60, 0x83, 0x11, 0x15, 0x78, 0x90, 0xe2, 0xe7, 0x70, 0x48, 0x1d, 0x1c, 0x87, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x90, 0x86, 0xc2, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x0d, 0x85, 0xe5, 0xd0, 0xa8, 0xe5, 0x38, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xf0, 0x1b, 0x24, 0x84, 0xb2, 0x0c, 0x82, 0x0d, 0x92, 0xc1, 0x3a, 0x06, 0xc1, 0x06, 0x49, 0xf0, 0x2c, 0x83, 0x60, 0x83, 0x54, 0x7f, 0x96, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x59, 0xd8, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0x06, 0x49, 0x1d, 0x2d, 0x07, 0xe9, 0xf0, 0x1d, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0x32, 0x9d, 0xc7, 0x20, 0x58, 0x0c, 0x00, 0x02, 0x00, 0xf3, 0x45, 0x51, 0x28, 0x92, 0xe8, 0x26, 0xee, 0x79, 0x1f, 0xb8, 0xb6, 0x74, 0xbb, 0x36, 0x7d, 0x4b, 0xd8, 0x2a, 0x27, 0x3e, 0x22, 0x3e, 0x8b, 0x54, 0xf0, 0x47, 0xb2, 0xda, 0x8b, 0x63, 0x15, 0x53, 0xf5, 0x00, 0x3b, 0x60, 0x6b, 0x50, 0xc2, 0xb7, 0x30, 0x86, 0x64, 0xb8, 0x8f, 0xa1, 0x8a, 0xae, 0xcb, 0x57, 0xce, 0x3f, 0xd6, 0x1b, 0xf0, 0xd4, 0x80, 0x7b, 0x93, 0x2e, 0x7e, 0x33, 0x38, 0x38, 0x6d, 0x93, 0xdc, 0xf0, 0xc8, 0xf7, 0xdd, 0xb8, 0x33, 0xf8, 0x81, 0x39, 0x94, 0x81, 0xe4, 0x8d, 0x25, 0xbd, 0x45, 0x95, 0x90, 0x4e, 0x89, 0x3b, 0x15, 0x96, 0x4b, 0x1b, 0x31, 0xdf, 0x4e, 0x2a, 0xca, 0x07, 0xb3, 0xcd, 0x38, 0x06, 0x15, 0xf9, 0x64, 0x00, 0xf6, 0xf8, 0x2f, 0xeb, 0x77, 0x7e, 0x01, 0xdc, 0xf8, 0x28, 0xf2, 0xb4, 0x3a, 0x6a, 0x4c, 0xd9, 0xe0, 0x2c, 0x25, 0x85, 0xa2, 0x50, 0xe1, 0xf6, 0x04, 0x27, 0x64, 0xc3, 0x85, 0xbf, 0x8d, 0xa5, 0x69, 0xa2, 0x01, 0x67, 0x8a, 0x6a, 0x4e, 0xa1, 0x6c, 0x57, 0x41, 0xcd, 0xce, 0x25, 0x59, 0x38, 0xb0, 0x90, 0x45, 0x4e, 0x32, 0x14, 0xfd, 0x57, 0x74, 0xc9, 0x4c, 0x03, 0x15, 0x6e, 0x71, 0x49, 0x78, 0x34, 0x8a, 0xed, 0x38, 0x03, 0x5d, 0x32, 0x9a, 0xc4, 0x20, 0xd3, 0xba, 0xb0, 0xc6, 0x81, 0x1e, 0x0e, 0x54, 0x0d, 0xc2, 0x22, 0x98, 0x34, 0x03, 0x81, 0xed, 0xc6, 0x83, 0xe9, 0x0e, 0xe9, 0xa4, 0x96, 0x17, 0x96, 0x66, 0x96, 0x81, 0x23, 0x47, 0x49, 0x15, 0xdb, 0xe9, 0x49, 0x99, 0x73, 0x6b, 0xfe, 0xcd, 0x05, 0xcd, 0x5d, 0xf0, 0x91, 0xee, 0x6d, 0xac, 0x14, 0x8f, 0x02, 0x0f, 0x99, 0x10, 0x41, 0xe0, 0x98, 0x51, 0xff, 0xdf, 0x17, 0x72, 0x9d, 0x0d, 0x8a, 0xf4, 0x7e, 0x34, 0xdf, 0x57, 0x1e, 0x2f, 0xce, 0x38, 0x08, 0x16, 0x03, 0xf8, 0x3f, 0x33, 0x4f, 0x50, 0x2b, 0x74, 0x3d, 0xdb, 0x95, 0x9b, 0x77, 0xe3, 0xd1, 0xa9, 0x7f, 0x2a, 0xfd, 0x93, 0x72, 0x88, 0x62, 0x44, 0x2b, 0xd8, 0x5c, 0xcd, 0x1e, 0xfc, 0xc8, 0x68, 0x06, 0xdf, 0x06, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0xc5, 0x61, 0x37, 0x48, 0xf7, 0xf5, 0x58, 0x10, 0x6c, 0x90, 0xc6, 0x07, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x44, 0xc3, 0x39, 0x48, 0x73, 0x84, 0x39, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0x49, 0x10, 0x1f, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xfa, 0x2c, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x12, 0x0d, 0xe7, 0x20, 0x25, 0x7b, 0xe1, 0x38, 0x34, 0x08, 0x36, 0x48, 0x94, 0xfb, 0x18, 0x04, 0x8b, 0xc3, 0x2e, 0xdc, 0x06, 0xe9, 0x50, 0x1e, 0x87, 0xd4, 0xc1, 0x86, 0x54, 0xcd, 0x20, 0xd8, 0x20, 0xd5, 0x1b, 0x66, 0x10, 0x2c, 0x08, 0x36, 0x48, 0x32, 0x02, 0x19, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x42, 0x22, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0xd9, 0x60, 0x5c, 0xa3, 0x1f, 0xa2, 0x79, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x14, 0x12, 0x49, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0x06, 0xc9, 0x45, 0x35, 0x87, 0x68, 0x1e, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xea, 0x69, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa4, 0xe0, 0x8e, 0x43, 0x34, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x6c, 0x90, 0x90, 0x1c, 0x33, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x69, 0xe3, 0x31, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xc2, 0x6f, 0x3c, 0x1f, 0xc3, 0xe2, 0xd0, 0x43, 0xe8, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xb2, 0x76, 0xcc, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x8b, 0x91, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xf1, 0x20, 0xc8, 0xe2, 0x0f, 0x3d, 0x84, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0x39, 0x4a, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe2, 0x41, 0xb0, 0x41, 0xc2, 0x90, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x52, 0xad, 0x54, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x83, 0xc2, 0x0e, 0xe7, 0x60, 0xbc, 0xe9, 0x1c, 0x52, 0x07, 0xc7, 0xa1, 0x83, 0x81, 0x48, 0x7d, 0x1c, 0x3a, 0x48, 0x5e, 0x11, 0x39, 0xbe, 0x0d, 0x82, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x24, 0x45, 0xcb, 0x0c, 0x82, 0xc5, 0x61, 0x17, 0x6e, 0x83, 0x74, 0x28, 0x8f, 0x43, 0xaa, 0x66, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x88, 0x07, 0xc1, 0x06, 0x29, 0x42, 0x21, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x4a, 0x34, 0x9c, 0x83, 0x64, 0xa2, 0x99, 0xe3, 0xd0, 0x41, 0xf2, 0x8a, 0xc8, 0x20, 0x58, 0x10, 0x6c, 0x90, 0x80, 0x3f, 0x33, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa5, 0xc3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0xa1, 0xf1, 0xfc, 0x21, 0x6b, 0x77, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x94, 0x0e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0x06, 0xa5, 0x0a, 0xd0, 0x21, 0x6b, 0x77, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa5, 0xc3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0xf0, 0x1b, 0xcf, 0xc7, 0x30, 0x3b, 0x64, 0xed, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0xa1, 0x8f, 0x66, 0x10, 0x6c, 0x90, 0x64, 0x4e, 0x33, 0x08, 0x16, 0x04, 0x1b, 0xa4, 0xb4, 0xa8, 0x0c, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x7a, 0x42, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0xc1, 0x90, 0x3d, 0x3f, 0x48, 0x10, 0xe9, 0x38, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd2, 0x13, 0x6a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x0d, 0xce, 0x7a, 0xf9, 0x07, 0x09, 0x22, 0x1d, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x9e, 0x50, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x2c, 0xfc, 0xc6, 0xf3, 0x31, 0x2c, 0x0f, 0x12, 0x44, 0x3a, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x41, 0xd2, 0x5d, 0xcd, 0xf1, 0xed, 0xf8, 0x76, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xfe, 0x1c, 0x5a, 0x58, 0x7e, 0x48, 0x2d, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x01, 0x6f, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x35, 0xec, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x11, 0x15, 0x38, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x1d, 0xb2, 0x76, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0x90, 0x0c, 0xbc, 0x7e, 0x77, 0x58, 0xa1, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x30, 0x7c, 0x87, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xe2, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x68, 0x7f, 0x77, 0x58, 0xa1, 0x3d, 0xec, 0xf1, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xcf, 0xa1, 0x85, 0xcd, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x48, 0x32, 0x3a, 0x39, 0x48, 0xc5, 0xb5, 0x39, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x7f, 0x0e, 0x2d, 0x0c, 0x3f, 0xa4, 0x96, 0x8e, 0xc7, 0xc3, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0xec, 0x0e, 0xc9, 0xa5, 0x43, 0xa3, 0x96, 0x8d, 0x43, 0x83, 0x68, 0x61, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0xf7, 0xbb, 0x83, 0x20, 0xe7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x31, 0xf0, 0xdf, 0xce, 0x5a, 0xe6, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xf0, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x78, 0xd3, 0x39, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xa1, 0xc3, 0x0a, 0xed, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x0d, 0xb9, 0xef, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0x71, 0x70, 0x79, 0xf0, 0x70, 0x70, 0xf2, 0x90, 0xf0, 0x3f, 0xbe, 0x1d, 0x8f, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0xe1, 0x14, 0x1b, 0x04, 0x0b, 0x82, 0x0d, 0xd2, 0xdd, 0x77, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x14, 0xa9, 0x4f, 0x07, 0xe3, 0x38, 0xe4, 0x38, 0x34, 0xec, 0x82, 0x60, 0x83, 0x63, 0x34, 0xf3, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xa0, 0xb4, 0xbd, 0x39, 0x0e, 0x6d, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf9, 0x41, 0x19, 0x4e, 0x77, 0x3c, 0x3f, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x08, 0x36, 0x18, 0x09, 0x38, 0x87, 0x46, 0x2d, 0x07, 0x09, 0xf8, 0x3b, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x24, 0x03, 0xc2, 0xdf, 0xe9, 0x20, 0xc8, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xe0, 0xf7, 0xbb, 0x43, 0xb6, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0xc0, 0x7f, 0x3b, 0x6b, 0x09, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xc1, 0x3b, 0x08, 0x72, 0xfe, 0x83, 0x81, 0x78, 0x76, 0x1c, 0x1a, 0x04, 0x8b, 0xc3, 0x6e, 0x30, 0x36, 0x39, 0x37, 0xc4, 0x70, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xbf, 0xdf, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x81, 0xff, 0x76, 0xd6, 0x22, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x30, 0x96, 0x72, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x04, 0x26, 0xf6, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x63, 0x29, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xe0, 0x9d, 0x3c, 0xa4, 0x6a, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xb0, 0x0b, 0x82, 0x0d, 0x8e, 0x9b, 0xd7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x9b, 0xce, 0xf0, 0x1b, 0xcf, 0xc7, 0x60, 0x00, 0x8e, 0x43, 0xab, 0x41, 0x60, 0x62, 0x0f, 0x82, 0x0d, 0xd2, 0xe8, 0x1e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x20, 0xe0, 0xb0, 0x0f, 0xa9, 0x83, 0xe3, 0xd0, 0x21, 0x86, 0x6b, 0x90, 0x94, 0xd6, 0x73, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf9, 0x20, 0xd8, 0xe0, 0x78, 0x05, 0x7d, 0x90, 0xc2, 0xd5, 0x73, 0x90, 0x5c, 0xfa, 0x70, 0x7c, 0x3b, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x27, 0x17, 0x76, 0x1f, 0x52, 0x4b, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf8, 0xb7, 0xf3, 0x90, 0x5a, 0x3a, 0x1e, 0xaf, 0x41, 0x61, 0x47, 0xb8, 0x82, 0x60, 0x83, 0x82, 0x5a, 0x6c, 0x71, 0x10, 0xac, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0x13, 0xb3, 0xef, 0x21, 0x0d, 0x37, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0x50, 0x58, 0x87, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0xe7, 0x60, 0x8c, 0xa1, 0x2d, 0x0e, 0x82, 0x35, 0x44, 0x73, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0x39, 0xa3, 0xfe, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0xaf, 0x20, 0x58, 0x9c, 0x83, 0xd3, 0x64, 0xef, 0xe2, 0x20, 0x58, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0xa0, 0x7d, 0xdf, 0xf1, 0xfc, 0x90, 0x86, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0xf6, 0xf5, 0x8e, 0xc7, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb0, 0x38, 0x87, 0xdf, 0x6f, 0x16, 0x07, 0xc1, 0xc2, 0x6e, 0xc8, 0x63, 0xad, 0xa1, 0x59, 0xe4, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0x90, 0xde, 0x3b, 0x1e, 0x1f, 0x3a, 0x68, 0x0c, 0xbb, 0x70, 0x8b, 0x81, 0x2f, 0xc6, 0xf6, 0x26, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xa4, 0xcd, 0xf9, 0x6c, 0x90, 0x36, 0xe7, 0x73, 0x38, 0xc5, 0x0e, 0xe3, 0xb2, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x63, 0xe0, 0xb7, 0x85, 0xb9, 0xe5, 0x1b, 0xa4, 0x50, 0xfa, 0x1c, 0x4e, 0xb1, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x43, 0x93, 0xb3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x40, 0x56, 0xef, 0x78, 0x7c, 0x1c, 0x3a, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x16, 0x87, 0xb4, 0x38, 0x08, 0x16, 0x76, 0x43, 0x1e, 0x6b, 0x0d, 0xcd, 0x22, 0x0f, 0xe3, 0x32, 0xec, 0x86, 0x86, 0x8b, 0x6b, 0xe8, 0xd3, 0x78, 0x18, 0x97, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0xb4, 0x12, 0xdf, 0xd0, 0x4a, 0xfc, 0x70, 0x8a, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x1b, 0x9a, 0x9c, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x04, 0x7f, 0xdf, 0xf1, 0xfc, 0x38, 0x74, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0xf0, 0x1b, 0x9c, 0x33, 0xea, 0x8f, 0x6f, 0x8b, 0xc3, 0x2f, 0x48, 0x06, 0x8a, 0xde, 0x21, 0xb9, 0x74, 0x7c, 0x3b, 0x1e, 0x1f, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0x06, 0xe7, 0xc8, 0xde, 0xc5, 0x41, 0xb0, 0x0a, 0xbb, 0xb0, 0x0b, 0x3d, 0x18, 0x3f, 0x5d, 0x87, 0xf5, 0xcd, 0x83, 0x22, 0x18, 0xe5, 0xa0, 0x7c, 0x3b, 0xdc, 0xa0, 0xd8, 0x18, 0x1c, 0x76, 0x61, 0x17, 0x7a, 0x10, 0x94, 0xde, 0x87, 0xf5, 0xcd, 0x0d, 0x82, 0xd2, 0xfb, 0x70, 0x8a, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x14, 0xd4, 0x62, 0x8b, 0x83, 0x60, 0x0d, 0xd2, 0xaf, 0x7b, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x01, 0x81, 0xdf, 0x77, 0x3c, 0x3f, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0xaf, 0x20, 0xd8, 0x20, 0x84, 0xed, 0x17, 0x07, 0xc1, 0x0a, 0xbf, 0xc1, 0x78, 0xed, 0x3b, 0xbe, 0x1d, 0x62, 0xb8, 0xb8, 0x20, 0xd8, 0x60, 0xf8, 0x0e, 0x1f, 0xd2, 0x70, 0xc3, 0x6e, 0x30, 0x62, 0xb1, 0x36, 0xc4, 0x70, 0x43, 0x0c, 0x17, 0x04, 0x1b, 0xf6, 0x0a, 0x0f, 0x9d, 0x88, 0x36, 0x48, 0x2f, 0xfd, 0x19, 0x04, 0x0b, 0x92, 0x01, 0x81, 0xdf, 0x77, 0x10, 0xe4, 0xfc, 0x87, 0x0e, 0x1a, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0x1c, 0x76, 0xc3, 0xae, 0xc1, 0x86, 0x53, 0xec, 0xd0, 0x49, 0xed, 0x78, 0xbc, 0x41, 0x61, 0x47, 0x38, 0x08, 0x36, 0x48, 0x3c, 0xf6, 0x59, 0x1c, 0x04, 0x0b, 0xbb, 0x21, 0x8f, 0xb5, 0x41, 0x42, 0xb4, 0xcf, 0xb0, 0x1b, 0x1a, 0x2e, 0x6e, 0x90, 0xb6, 0xed, 0xb3, 0x41, 0x52, 0xb8, 0xcf, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0xa1, 0xc9, 0xd9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0xac, 0x41, 0x19, 0x2f, 0x78, 0x18, 0x97, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0xe2, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0xac, 0x20, 0xd8, 0x20, 0x75, 0xe5, 0xe7, 0x90, 0x86, 0x1b, 0x04, 0x1b, 0xa4, 0xae, 0xfc, 0x1c, 0x3a, 0x68, 0x0c, 0xbb, 0x41, 0x41, 0x51, 0xb4, 0xb0, 0x1b, 0x04, 0x59, 0xfc, 0x82, 0x60, 0x41, 0x32, 0x50, 0xf6, 0x0e, 0x2b, 0xb4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x81, 0xeb, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0x86, 0x63, 0xd7, 0x71, 0xe8, 0x38, 0x34, 0xec, 0x82, 0x60, 0x41, 0x32, 0xa8, 0x39, 0x08, 0x78, 0xff, 0x83, 0x54, 0x3e, 0xa0, 0x05, 0xc1, 0x06, 0x09, 0x63, 0x40, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa3, 0x40, 0xe7, 0x20, 0x95, 0x0f, 0xe8, 0x38, 0x34, 0x08, 0x36, 0x48, 0x18, 0x03, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x36, 0x5c, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x05, 0x3a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x82, 0xd2, 0xfb, 0x60, 0x68, 0x76, 0x1d, 0x87, 0x8e, 0x43, 0xc3, 0x6e, 0x10, 0x64, 0xf1, 0x0b, 0xbb, 0x41, 0x8a, 0x22, 0xd0, 0x82, 0x60, 0x83, 0x84, 0x31, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xc3, 0xf5, 0x20, 0xdd, 0x14, 0xe8, 0x38, 0x34, 0x08, 0x36, 0x48, 0x18, 0x03, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0x92, 0x8a, 0x81, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x84, 0x31, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xc3, 0xf5, 0x20, 0x7d, 0x0e, 0xe8, 0x38, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0xa0, 0xec, 0x9b, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x3c, 0x7f, 0x48, 0xd5, 0x1c, 0x87, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x41, 0x3a, 0x11, 0xd0, 0xb0, 0x1b, 0x84, 0x14, 0xf8, 0x82, 0x60, 0x83, 0x54, 0x42, 0x85, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x71, 0x39, 0xac, 0xfd, 0x1e, 0x87, 0x06, 0xc1, 0x06, 0xa3, 0x40, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0xed, 0xf7, 0x30, 0x2e, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0x48, 0x06, 0xca, 0xde, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6d, 0x88, 0xe1, 0x20, 0xd8, 0x60, 0xf8, 0x0e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xbc, 0xf6, 0x1d, 0xd2, 0x70, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x8c, 0xd7, 0xbe, 0x43, 0x07, 0x8d, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x65, 0xdf, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0xad, 0x77, 0x48, 0x2e, 0x1d, 0xd2, 0x70, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x24, 0x55, 0x07, 0x1d, 0x3a, 0x68, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xdc, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x86, 0x7d, 0xcd, 0xc1, 0x38, 0x0e, 0x39, 0x1e, 0xaf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x05, 0xc1, 0x06, 0xe3, 0xb5, 0xef, 0xd0, 0xa8, 0x65, 0x10, 0x6c, 0x90, 0x54, 0x1d, 0x74, 0x68, 0xd4, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xc9, 0x40, 0xdd, 0x3b, 0x24, 0x97, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb2, 0x76, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x0c, 0xce, 0xc7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x7c, 0xed, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x25, 0x6a, 0xc8, 0x21, 0xd1, 0x7a, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x86, 0x19, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0xa4, 0xe9, 0x07, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x30, 0x28, 0x39, 0x0e, 0xc6, 0x71, 0xc8, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x76, 0x43, 0x34, 0x17, 0x04, 0x1b, 0x94, 0x7d, 0x53, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0xf4, 0x33, 0x85, 0xe3, 0xd0, 0xb0, 0x1b, 0x76, 0x0d, 0x36, 0xc4, 0x70, 0x98, 0x41, 0xb0, 0x41, 0xd9, 0x37, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x78, 0xfe, 0x20, 0xcd, 0xbe, 0xe1, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x83, 0x73, 0xf0, 0xf7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xd6, 0x6e, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd4, 0xc3, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x76, 0x83, 0x44, 0xdb, 0xa0, 0xc3, 0xfa, 0xe6, 0x41, 0xca, 0x77, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0x52, 0x0f, 0x83, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0x53, 0x06, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0xa6, 0x80, 0x71, 0x90, 0x9e, 0x1c, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x61, 0x37, 0xa4, 0x33, 0x37, 0xc4, 0x70, 0xd8, 0x0d, 0xd2, 0x55, 0x83, 0x16, 0x76, 0x83, 0x44, 0xdb, 0xa0, 0x85, 0xdd, 0x60, 0xa4, 0x63, 0x6f, 0x68, 0x25, 0x7e, 0x38, 0xda, 0x0f, 0xad, 0xc4, 0x87, 0xdd, 0x20, 0xd1, 0x36, 0x68, 0xc3, 0xd1, 0x3e, 0xec, 0x06, 0x23, 0x1d, 0x7b, 0xc3, 0xd1, 0x7e, 0x68, 0x25, 0x7e, 0x3c, 0x3e, 0x1e, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x06, 0x25, 0x6a, 0xc8, 0x20, 0x58, 0x41, 0xb0, 0x20, 0x19, 0x44, 0xc7, 0xa1, 0xc3, 0x46, 0xed, 0x20, 0xd8, 0x20, 0xfd, 0x6c, 0xe8, 0xb0, 0xc7, 0x3b, 0x08, 0x56, 0x41, 0xb0, 0x20, 0x19, 0x44, 0x87, 0xd4, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x60, 0x6c, 0xb8, 0x1e, 0x87, 0x0e, 0x31, 0xdc, 0x10, 0xc3, 0x83, 0x84, 0xbd, 0xa1, 0x41, 0xb0, 0x38, 0xec, 0x86, 0xb5, 0xd0, 0x15, 0x04, 0x0b, 0x92, 0x81, 0x5b, 0xef, 0xb0, 0x57, 0x78, 0xd8, 0xe3, 0x3d, 0x18, 0x98, 0x5d, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xdf, 0x61, 0xaf, 0x70, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0xed, 0xf7, 0x10, 0xff, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xc4, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0xdd, 0x3b, 0x08, 0x4c, 0xec, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xc4, 0xcc, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x50, 0x77, 0x10, 0x98, 0xd8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x83, 0x43, 0xb2, 0xe3, 0x38, 0x74, 0x1c, 0x3a, 0xc4, 0x7f, 0x10, 0x2d, 0xec, 0x0a, 0x82, 0x0d, 0x92, 0x9c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x8c, 0x2c, 0xab, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x52, 0xc8, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0x07, 0x63, 0xc2, 0xea, 0x38, 0x74, 0x1c, 0x3a, 0x28, 0x0e, 0x35, 0x16, 0x04, 0x1b, 0x24, 0x39, 0x0f, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x34, 0xfc, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x85, 0x7c, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x70, 0x68, 0x01, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x7a, 0x08, 0x1d, 0xcf, 0x8f, 0x6f, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0xc1, 0xd8, 0x9e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xb8, 0xfe, 0x87, 0x44, 0xeb, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x1b, 0x8c, 0xed, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x03, 0xcd, 0xe9, 0x90, 0x68, 0x3d, 0x0e, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x20, 0x95, 0x50, 0xe1, 0x60, 0x20, 0x9e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0xc3, 0x6e, 0xc8, 0x63, 0x6d, 0x38, 0xda, 0x07, 0xc1, 0x82, 0x64, 0xc8, 0x20, 0x5a, 0x10, 0x0e, 0x82, 0x0d, 0xc6, 0x61, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x72, 0xc8, 0xda, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x44, 0x87, 0x15, 0xda, 0x83, 0xd1, 0x1e, 0x3c, 0xec, 0xc2, 0x6d, 0x88, 0xe1, 0x20, 0xd8, 0xe0, 0xc0, 0xb3, 0x7b, 0x30, 0x48, 0xeb, 0x36, 0x0e, 0x0d, 0x82, 0x0d, 0x92, 0xe3, 0x1d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x12, 0x33, 0x87, 0xd4, 0xc1, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0x0e, 0x4d, 0xba, 0x07, 0xa7, 0x15, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0x41, 0xb0, 0x20, 0x19, 0x18, 0xbf, 0x43, 0xb6, 0xe2, 0x60, 0x20, 0x9e, 0x1d, 0x52, 0x07, 0x07, 0x81, 0x89, 0x7d, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xd8, 0x60, 0x6c, 0xcf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x05, 0x3a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x08, 0x5c, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x81, 0x89, 0x7d, 0xc8, 0xda, 0x1d, 0x87, 0x0e, 0x06, 0xf8, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x83, 0x91, 0x80, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x84, 0xed, 0x90, 0x5c, 0x3a, 0x74, 0xd0, 0x38, 0x0e, 0x1d, 0x8f, 0x8f, 0xc7, 0x0b, 0xe0, 0x6b, 0xc6, 0xf6, 0x16, 0x46, 0x97, 0xe6, 0x76, 0xd6, 0x02, 0xf7, 0x96, 0xe6, 0x46, 0x2f, 0x03, 0xf0, 0x31, 0x23, 0xa6, 0x03, 0x62, 0xc6, 0xf6, 0x16, 0x46, 0x97, 0xe6, 0x76, 0x06, 0x02, 0xf7, 0x96, 0xe6, 0x46, 0xb7, 0xc0, 0xcb, 0xc5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xc1, 0xcb, 0xc5, 0x0d, 0xc0, 0x43, 0x5c, 0x5d, 0x18, 0x19, 0x08, 0x9c, 0x5c, 0xd9, 0x58, 0xda, 0x5c, 0xda, 0x9b, 0x1b, 0x88, 0x19, 0xdc, 0x06, 0x65, 0x97, 0xec, 0xc0, 0xcb, 0xc5, 0x6b, 0xb8, 0xa4, 0x36, 0xa4, 0x96, 0x9a, 0x01, 0x7f, 0x8d, 0x4e, 0x4c, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x00, 0x4f, 0xe5, 0xde, 0xea, 0xdc, 0xc8, 0x40, 0xe8, 0xde, 0x40, 0xdc, 0xca, 0xc2, 0xe4, 0xca, 0xe6, 0xe8, 0x58, 0x40, 0xe4, 0xde, 0xea, 0xdc, 0xc8, 0x40, 0xea, 0xe0, 0x58, 0x40, 0xe4, 0xde, 0xea, 0xdc, 0xc8, 0x40, 0xc8, 0xde, 0xee, 0xdc, 0x58, 0x40, 0xe4, 0xde, 0xea, 0xdc, 0xc8, 0x40, 0xe8, 0xde, 0x40, 0xf4, 0xca, 0xe4, 0xde, 0x36, 0x28, 0xcb, 0xb0, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xf2, 0x06, 0xc1, 0x66, 0xba, 0xc1, 0x69, 0xef, 0x64, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x85, 0xd7, 0x1b, 0x9c, 0x73, 0x53, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xb8, 0xde, 0x2c, 0xb3, 0x86, 0xc4, 0xd1, 0x86, 0xc7, 0x47, 0x36, 0x24, 0x8e, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0xc1, 0x59, 0xf1, 0x75, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x1e, 0x9c, 0x15, 0x5f, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x67, 0xc5, 0xd7, 0x0d, 0x6f, 0xd9, 0xad, 0xe1, 0x89, 0xbb, 0x0d, 0xcf, 0xe2, 0x1d, 0x9c, 0xe3, 0x67, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0x37, 0x08, 0x9e, 0xda, 0x0d, 0x6f, 0xeb, 0x0c, 0x7c, 0x5b, 0xd8, 0xe1, 0xf7, 0xb3, 0x15, 0xf0, 0xce, 0xe4, 0xc8, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xe1, 0xdf, 0xf9, 0x05, 0x9e, 0xcc, 0xad, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x59, 0xf1, 0x75, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x7e, 0xc8, 0xca, 0xc6, 0xd2, 0xda, 0xc2, 0xd8, 0x40, 0xcc, 0xd8, 0xde, 0xc2, 0xe8, 0x40, 0xe8, 0xde, 0x40, 0x80, 0xe4, 0xe2, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xc9, 0xc6, 0x46, 0x1d, 0x24, 0xf0, 0x1a, 0x1d, 0x1e, 0xfa, 0x59, 0x01, 0x6f, 0xae, 0x2c, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x48, 0xda, 0x38, 0x6a, 0x00, 0x0f, 0x20, 0xb9, 0x38, 0x10, 0xba, 0x37, 0x10, 0x33, 0xb7, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x12, 0x11, 0x8d, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0x24, 0x6d, 0x1c, 0x75, 0x90, 0xc0, 0x6b, 0x74, 0x78, 0xe8, 0x67, 0x35, 0x64, 0x8d, 0x37, 0x3c, 0x3e, 0xb2, 0x21, 0x6b, 0xbc, 0xe1, 0x17, 0xa5, 0x0d, 0xd2, 0x09, 0x8d, 0x36, 0xbc, 0x65, 0xb7, 0x41, 0xaa, 0xa9, 0xd1, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x86, 0x2f, 0x7e, 0x0f, 0x12, 0x78, 0x8d, 0x0e, 0xbf, 0x9f, 0x1d, 0x4e, 0xb1, 0x05, 0xbc, 0xb9, 0xb4, 0x73, 0xc3, 0x2f, 0x4a, 0x1b, 0xa4, 0xf6, 0x1c, 0x6d, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xfc, 0x67, 0x65, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xc4, 0xc4, 0xa3, 0x0e, 0x12, 0x78, 0x8d, 0x0e, 0x0f, 0xfd, 0xac, 0x80, 0x37, 0x57, 0xe7, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x1d, 0x9c, 0x6e, 0x4e, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x59, 0xf1, 0x75, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3e, 0xea, 0xdc, 0xe6, 0x40, 0xd2, 0xdc, 0xe8, 0xca, 0xce, 0xca, 0xe4, 0x40, 0xe8, 0xde, 0x40, 0x80, 0xe4, 0xe2, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x29, 0xc4, 0x47, 0x1d, 0x24, 0xf0, 0x1a, 0x1d, 0x1e, 0xfa, 0x39, 0x9c, 0x62, 0x6b, 0x70, 0xe4, 0xac, 0xdd, 0xf0, 0xf8, 0xc8, 0x06, 0x47, 0xce, 0xda, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x12, 0x11, 0x8d, 0x36, 0x48, 0x90, 0x34, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x8f, 0x07, 0x67, 0xc5, 0xd7, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x59, 0xf1, 0x75, 0xc3, 0x5b, 0x76, 0x1b, 0xa4, 0x9a, 0x1a, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x8e, 0x9c, 0xb5, 0x1d, 0x24, 0xf0, 0x1a, 0x1d, 0x9c, 0xc1, 0xcd, 0x66, 0x0d, 0x8b, 0x56, 0x1b, 0x1e, 0x1f, 0xd9, 0xb0, 0x68, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0xd2, 0x09, 0x8d, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x59, 0xf1, 0x75, 0xc3, 0x5b, 0x76, 0x1b, 0xa4, 0x9a, 0x1a, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0x0a, 0xac, 0x07, 0x09, 0xbc, 0x46, 0x87, 0xdf, 0xcf, 0x56, 0x83, 0x23, 0xed, 0xf2, 0x86, 0x5f, 0x94, 0x36, 0x48, 0xed, 0x39, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xa9, 0xd7, 0x46, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x03, 0x24, 0x17, 0x07, 0x42, 0xf7, 0x06, 0x42, 0x56, 0x36, 0x96, 0xd6, 0x16, 0xc6, 0x06, 0x62, 0xc6, 0xf6, 0x16, 0x46, 0xb7, 0xe1, 0xdd, 0x9e, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x38, 0xd2, 0x2e, 0x77, 0x90, 0xc0, 0x6b, 0x74, 0x78, 0xe8, 0x67, 0x35, 0xac, 0x37, 0x6f, 0x78, 0x7c, 0x64, 0xc3, 0x7a, 0xf3, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x27, 0x34, 0xda, 0xf0, 0x96, 0xdd, 0x06, 0xa9, 0xa6, 0x46, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x1b, 0xbe, 0x38, 0x3b, 0x48, 0xe0, 0x35, 0x3a, 0xfc, 0x7e, 0x76, 0x38, 0xc5, 0x6a, 0x0d, 0xe9, 0xc3, 0x0d, 0x8f, 0x8f, 0x6c, 0x48, 0x1f, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0x74, 0x42, 0xa3, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x56, 0x7c, 0xdd, 0xf0, 0x96, 0xdd, 0x06, 0xa9, 0xa6, 0x46, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x1b, 0xfe, 0x04, 0x3a, 0x48, 0xe0, 0x35, 0x3a, 0xfc, 0x7e, 0xb6, 0x02, 0x5e, 0x19, 0x1e, 0xbc, 0xe1, 0x17, 0xa5, 0x0d, 0x52, 0x7b, 0x8e, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xf1, 0xe4, 0x64, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xbf, 0xb3, 0x32, 0x3a, 0x90, 0x32, 0x3c, 0xb8, 0x37, 0xb7, 0x32, 0x37, 0xba, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x5a, 0x4d, 0x52, 0x07, 0x09, 0xbc, 0x46, 0x87, 0x87, 0x7e, 0x56, 0xe0, 0xdb, 0xc2, 0x01, 0x7f, 0xcc, 0x8d, 0x4e, 0xde, 0xa0, 0xa8, 0x11, 0x5f, 0xc3, 0xdb, 0x3a, 0x03, 0x6f, 0x66, 0xb6, 0x86, 0x15, 0xbc, 0x83, 0xd3, 0xfd, 0xdb, 0x1a, 0x1c, 0x3c, 0x32, 0x36, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x87, 0xc3, 0x6b, 0xf8, 0x3c, 0x68, 0xc3, 0x8f, 0x30, 0x03, 0x3f, 0x47, 0x06, 0xef, 0xff, 0xaf, 0x41, 0xc1, 0xb3, 0x79, 0x70, 0xfc, 0xe4, 0xeb, 0x70, 0x8a, 0xb5, 0x80, 0x37, 0x17, 0xe6, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x83, 0xe3, 0xc9, 0x49, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xac, 0xf8, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1f, 0x73, 0x67, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x40, 0x72, 0x71, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x94, 0xda, 0xa4, 0x0e, 0x12, 0x78, 0x8d, 0x0e, 0x0f, 0xfd, 0xac, 0x80, 0x47, 0xf7, 0x96, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0xd4, 0x9e, 0xa3, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0x6e, 0x70, 0x3c, 0x39, 0x69, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x7f, 0xb9, 0xb7, 0x3a, 0x37, 0x32, 0x10, 0xba, 0x37, 0x90, 0x34, 0x37, 0xba, 0xb2, 0xb3, 0x32, 0xb9, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x0a, 0x81, 0x52, 0x07, 0x09, 0xbc, 0x46, 0x87, 0x87, 0x7e, 0x0e, 0xa7, 0xd8, 0x1a, 0x94, 0x69, 0x58, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0x4c, 0xc3, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0xa9, 0x3d, 0x47, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xac, 0xf8, 0xba, 0xe1, 0x2d, 0xbb, 0x0d, 0x52, 0x4d, 0x8d, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x65, 0x1a, 0x56, 0x07, 0x09, 0xbc, 0x46, 0x87, 0x87, 0x7e, 0x66, 0x0d, 0xab, 0xe1, 0x1b, 0x1e, 0x1f, 0xd9, 0xb0, 0x1a, 0xbe, 0xe1, 0x17, 0xa5, 0x0d, 0xd2, 0x09, 0x8d, 0x36, 0xbc, 0x65, 0xb7, 0x41, 0xaa, 0xa9, 0xd1, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x86, 0x6f, 0x14, 0x0f, 0x12, 0x78, 0x8d, 0x0e, 0xbf, 0x9f, 0x1d, 0x4e, 0xb1, 0x35, 0xec, 0xc4, 0x6f, 0x78, 0x7c, 0x64, 0xc3, 0x4e, 0xfc, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x27, 0x34, 0xda, 0xf0, 0x96, 0xdd, 0x06, 0xa9, 0xa6, 0x46, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0xc3, 0x4e, 0x7c, 0x07, 0x09, 0xbc, 0x46, 0x87, 0xdf, 0xcf, 0x56, 0xc0, 0x13, 0x4b, 0xa3, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x12, 0xce, 0x95, 0x1a, 0xc0, 0xc3, 0xcc, 0x0d, 0x84, 0xee, 0x0d, 0x04, 0x48, 0x2e, 0x6e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xf8, 0x77, 0x7e, 0x81, 0x37, 0x73, 0xab, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x56, 0x7c, 0xdd, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0x24, 0x9c, 0x2b, 0x75, 0x90, 0xc0, 0x6b, 0x74, 0x78, 0xe8, 0x67, 0xd6, 0xe0, 0xf0, 0x8b, 0xbb, 0xe1, 0xf1, 0x91, 0x0d, 0x0e, 0xbf, 0xb8, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x9d, 0xd0, 0x68, 0xc3, 0x5b, 0x76, 0x1b, 0xa4, 0x9a, 0x1a, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x0e, 0xbf, 0xb8, 0x1d, 0x24, 0xf0, 0x1a, 0x1d, 0x7e, 0x3f, 0x3b, 0x9c, 0x62, 0x6b, 0x68, 0xf1, 0xb1, 0xe1, 0xf1, 0x91, 0x0d, 0x2d, 0x3e, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x3a, 0xa1, 0xd1, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x2b, 0xbe, 0x6e, 0x78, 0xcb, 0x6e, 0x83, 0x54, 0x53, 0xa3, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x41, 0xc9, 0x0d, 0x9f, 0x02, 0x1e, 0x24, 0xf0, 0x1a, 0x1d, 0x7e, 0x3f, 0x3b, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x05, 0x7c, 0x39, 0xb6, 0x3c, 0x74, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf0, 0xe0, 0xd0, 0xf5, 0xba, 0xe1, 0x2f, 0x9a, 0x0d, 0x52, 0xaf, 0x8d, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x03, 0x4e, 0xae, 0x0c, 0x0e, 0x04, 0x48, 0x0e, 0x0d, 0xc4, 0xec, 0x4d, 0x0e, 0x04, 0x4e, 0x2e, 0xcd, 0x8d, 0x6e, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0x83, 0xf4, 0x62, 0xa4, 0x0d, 0x6f, 0xeb, 0x0c, 0xbc, 0x1c, 0xda, 0xe1, 0xa1, 0x9f, 0x15, 0x78, 0x33, 0x76, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0x78, 0x33, 0xb6, 0x01, 0x78, 0x08, 0x93, 0x13, 0x73, 0x01, 0x81, 0x93, 0x2b, 0x1b, 0x4b, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x31, 0x83, 0xdb, 0xa0, 0x20, 0x8d, 0x5d, 0x83, 0x12, 0x3a, 0x76, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0x7c, 0x70, 0x14, 0x3a, 0x59, 0xc3, 0x9f, 0x4b, 0x83, 0xdb, 0x07, 0xc7, 0x93, 0x93, 0x35, 0xfc, 0xb9, 0x34, 0xf8, 0x7d, 0x70, 0x14, 0x3a, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x6f, 0x10, 0x6c, 0xa6, 0x1b, 0x9c, 0xf6, 0x4e, 0x36, 0x48, 0x08, 0x33, 0xda, 0xe0, 0x9c, 0x9b, 0xb2, 0x41, 0x62, 0x9b, 0xd1, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0x0f, 0x5b, 0xc3, 0x9f, 0x4b, 0x83, 0x93, 0x1b, 0x04, 0x9b, 0xe9, 0x06, 0xe7, 0xdc, 0x94, 0x0d, 0x8e, 0xfa, 0x26, 0x1b, 0x1c, 0xb5, 0x4e, 0xea, 0x20, 0x4c, 0xc7, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x78, 0xbc, 0x86, 0x1f, 0x61, 0x06, 0x7e, 0x8e, 0x0c, 0x84, 0x6d, 0xc0, 0x1a, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x83, 0xef, 0xff, 0xdb, 0xe0, 0xc8, 0xac, 0xba, 0x86, 0x37, 0xee, 0x0e, 0xce, 0xbf, 0x29, 0x6d, 0x50, 0x4a, 0x88, 0xaf, 0x41, 0xd9, 0x25, 0xbb, 0xc1, 0xe1, 0xe6, 0x7c, 0x83, 0x34, 0x02, 0xa3, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd9, 0xe0, 0x70, 0x73, 0xbe, 0x12, 0x00, 0x2f, 0xa4, 0xb9, 0xd1, 0x95, 0xc9, 0xb9, 0x85, 0xb1, 0x81, 0x98, 0xd5, 0xb9, 0x8d, 0xd1, 0xa5, 0xbd, 0xb9, 0xcd, 0xed, 0x80, 0xb4, 0xbd, 0xcd, 0xd1, 0xb1, 0xe5, 0x81, 0xbc, 0xc1, 0x95, 0xc9, 0x85, 0xd1, 0xa5, 0xb9, 0x9d, 0x81, 0xbc, 0xb9, 0x81, 0x6c, 0x95, 0xf5, 0x00, 0xcd, 0x81, 0x84, 0xf5, 0x00, 0xd5, 0x75, 0xb1, 0x80, 0xa4, 0xb9, 0x81, 0xbc, 0xd1, 0xa1, 0x95, 0xc9, 0x81, 0xdc, 0xbd, 0xc9, 0x91, 0xcd, 0x4b, 0x00, 0x1a, 0xc2, 0xbd, 0xcd, 0xa5, 0xd1, 0xa5, 0xd9, 0x95, 0x81, 0xb8, 0xd5, 0xb5, 0x89, 0x95, 0xc9, 0xcd, 0xb9, 0x80, 0xb4, 0x85, 0xb9, 0xe5, 0x81, 0xbc, 0x99, 0x81, 0xd0, 0xa1, 0x95, 0xcd, 0x95, 0x81, 0x94, 0xc9, 0xc9, 0xbd, 0xc9, 0x81, 0xbc, 0xd5, 0xd1, 0x81, 0xa4, 0x99, 0x81, 0x84, 0xf5, 0xc0, 0xb8, 0xda, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0x16, 0xf0, 0xe0, 0xe4, 0xc6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x31, 0x7b, 0x93, 0x1b, 0x2b, 0x03, 0xf1, 0xe9, 0x01, 0x91, 0x01, 0x81, 0x93, 0x2b, 0x1b, 0x4b, 0x9b, 0x4b, 0x7b, 0x73, 0xdb, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0x51, 0xdc, 0xe0, 0x74, 0x91, 0x71, 0x50, 0x10, 0x8f, 0x1f, 0x9c, 0x2e, 0x32, 0x56, 0xc0, 0x33, 0x63, 0x4b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x12, 0x06, 0x9b, 0x1a, 0xc0, 0xc3, 0x8c, 0x2d, 0x0d, 0x0e, 0x64, 0x2e, 0xed, 0xcc, 0x6d, 0xc3, 0x2f, 0x4a, 0x1b, 0xa4, 0x25, 0x2c, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x34, 0x89, 0xa5, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0xd2, 0xf9, 0x7d, 0x0d, 0x8e, 0xfa, 0x26, 0x1b, 0x2e, 0xa9, 0x0d, 0x0f, 0xee, 0xac, 0xc1, 0xb9, 0x9d, 0x6f, 0xc3, 0xdb, 0xac, 0x1b, 0xde, 0xd6, 0x19, 0x7c, 0x3e, 0x3c, 0xb8, 0xd3, 0x1a, 0x1c, 0xb5, 0x4e, 0x0e, 0x52, 0x7a, 0x9b, 0xd6, 0xe0, 0xb4, 0x77, 0x72, 0x78, 0x5a, 0xa7, 0x15, 0xf0, 0xe8, 0xde, 0xd4, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x64, 0xf2, 0xa6, 0x0e, 0x92, 0x4d, 0x94, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x86, 0xcf, 0x95, 0x0e, 0x4e, 0x1c, 0x27, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x34, 0x89, 0xa5, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xfc, 0x9b, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xc6, 0xda, 0xe0, 0x0e, 0x4a, 0x21, 0xf5, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x79, 0x78, 0x70, 0x67, 0x0d, 0x3f, 0xc2, 0x0c, 0xfc, 0x1c, 0x59, 0x1b, 0x7e, 0x84, 0x19, 0xf8, 0x39, 0x32, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xb8, 0x3b, 0x38, 0x02, 0x9c, 0x6c, 0x50, 0xe4, 0xb4, 0x1e, 0x1e, 0xfa, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0x5e, 0x98, 0xd8, 0xdc, 0x41, 0x29, 0xa4, 0xbe, 0x41, 0xd2, 0x8c, 0x53, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xe7, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc4, 0xc7, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xe3, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x0f, 0x0f, 0x0f, 0xee, 0xb4, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x4a, 0xb6, 0x86, 0x7f, 0x73, 0x36, 0x38, 0x7e, 0xf2, 0x1d, 0xa4, 0x93, 0x32, 0xad, 0xe1, 0xdf, 0x9c, 0x0d, 0x8e, 0x9f, 0x7c, 0x1b, 0xde, 0xb8, 0x3b, 0x48, 0x84, 0x33, 0x6a, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0xe2, 0xe4, 0xb4, 0x41, 0x91, 0xd3, 0xba, 0x41, 0x02, 0x8f, 0xd3, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0xaf, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xf5, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x64, 0xe2, 0x1e, 0x24, 0x36, 0x3a, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xbf, 0x92, 0xad, 0xe1, 0xdf, 0x9c, 0x0d, 0x8e, 0x9f, 0x7c, 0x1b, 0xde, 0xb8, 0x3b, 0x48, 0x20, 0x33, 0x5a, 0xc3, 0xbf, 0x39, 0x1b, 0x1c, 0x3f, 0xf9, 0x36, 0xbc, 0x71, 0x77, 0x90, 0xe2, 0xc5, 0xd4, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0xc5, 0xc9, 0x69, 0x83, 0x22, 0xa7, 0x75, 0x83, 0x04, 0x1e, 0xa7, 0x35, 0x28, 0xe1, 0x31, 0x17, 0x5c, 0x6f, 0x83, 0x14, 0x6b, 0xa7, 0x0d, 0x1f, 0x47, 0x1d, 0xa4, 0x58, 0x3b, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xed, 0xde, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x35, 0x9f, 0x83, 0x44, 0x4a, 0xa7, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6f, 0xce, 0x1a, 0xde, 0xd6, 0x39, 0x48, 0x54, 0x79, 0x3a, 0x28, 0xa3, 0xcf, 0xd7, 0xf0, 0x6f, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0xe8, 0x1d, 0xb7, 0x41, 0x8a, 0xb5, 0xd3, 0x41, 0x41, 0x3c, 0x7e, 0x78, 0xf0, 0xa6, 0x0d, 0x12, 0x8c, 0x9d, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0xe2, 0x38, 0x87, 0xf5, 0xe6, 0x36, 0x48, 0xf9, 0x7a, 0x3a, 0x28, 0xcd, 0xd0, 0x37, 0x48, 0x30, 0x76, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0x29, 0x4e, 0x4e, 0x1b, 0x14, 0x39, 0xad, 0x1b, 0x24, 0xf0, 0x38, 0x6d, 0x90, 0x10, 0xf3, 0xd4, 0x0a, 0x78, 0x6c, 0x66, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xbc, 0xc8, 0x78, 0xb1, 0x99, 0x95, 0x81, 0xa4, 0xcd, 0x81, 0xf8, 0x80, 0xd0, 0xa1, 0x85, 0xb9, 0x81, 0x84, 0xb1, 0xb1, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0x0f, 0x4a, 0x6e, 0x70, 0xd8, 0x86, 0x3b, 0x28, 0x85, 0xd4, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x57, 0xd6, 0x86, 0xb7, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0x89, 0xfd, 0x47, 0x07, 0xa5, 0x90, 0xfa, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x39, 0xa9, 0xa9, 0x5a, 0x01, 0x4f, 0xee, 0xad, 0xde, 0xf0, 0x8b, 0xd2, 0x06, 0xe9, 0xff, 0x4d, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0x4d, 0x62, 0x69, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x93, 0x0b, 0xab, 0xdb, 0xf0, 0xb4, 0xce, 0x06, 0x45, 0x4e, 0x6b, 0x87, 0x53, 0xac, 0x16, 0xf0, 0xe6, 0xe0, 0xc8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x98, 0x6b, 0x0b, 0x63, 0x63, 0x2b, 0x9b, 0xa3, 0x03, 0x21, 0x2b, 0x73, 0x7b, 0x93, 0x6b, 0x0b, 0x63, 0xdb, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0xbc, 0xdc, 0xf0, 0xb6, 0xce, 0x80, 0x57, 0xd6, 0xe6, 0xb6, 0x86, 0xcf, 0x5d, 0x06, 0x0f, 0x0f, 0x8f, 0xc9, 0xb4, 0x1a, 0x16, 0xad, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x8b, 0x56, 0x0d, 0xf0, 0x91, 0xa5, 0xd9, 0xa5, 0x91, 0x95, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x90, 0x38, 0xe0, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x0f, 0xd2, 0x11, 0x9c, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x69, 0x12, 0x4b, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0xe0, 0xdb, 0xc2, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x14, 0xff, 0x6e, 0x78, 0xf0, 0xe6, 0x20, 0x55, 0xd3, 0x69, 0x0d, 0x9f, 0xbb, 0x0c, 0x7c, 0x9b, 0xb8, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xe2, 0xdf, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xc3, 0xc3, 0xe7, 0x41, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xb8, 0xbd, 0xe1, 0xdd, 0x9e, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x28, 0x73, 0x02, 0x3a, 0x28, 0x85, 0xd4, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x89, 0xf2, 0x4f, 0x1b, 0x24, 0xf0, 0x1a, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x94, 0x7f, 0x5a, 0xc3, 0xc7, 0x51, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x8b, 0xe3, 0x1c, 0xd2, 0x87, 0xad, 0xe1, 0x6d, 0x9d, 0x81, 0x6f, 0x13, 0x3b, 0x48, 0xef, 0x7f, 0xaa, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x0f, 0xee, 0xac, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x37, 0x97, 0xe7, 0x76, 0x50, 0x0a, 0xa9, 0xaf, 0xe1, 0x6d, 0x9d, 0x83, 0x43, 0x6b, 0x4b, 0x1b, 0x9e, 0xd6, 0xd9, 0x70, 0x49, 0x6d, 0x78, 0x70, 0x67, 0x0d, 0x8a, 0x10, 0xe8, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0xb0, 0xfd, 0xb4, 0x41, 0xaa, 0x50, 0xd4, 0x41, 0x2a, 0x9e, 0xd3, 0x1a, 0x1e, 0xdc, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x01, 0xef, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0xe0, 0xcd, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x25, 0xcd, 0xe9, 0x20, 0x4d, 0x28, 0xaa, 0x83, 0x54, 0x4d, 0xa7, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xea, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x2a, 0x87, 0xda, 0x20, 0x69, 0xc6, 0x69, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1e, 0x3e, 0x0f, 0x6a, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0x78, 0xb7, 0x67, 0xc3, 0x5f, 0x94, 0x1b, 0xa4, 0x6b, 0x3a, 0x1d, 0xa4, 0x3d, 0x43, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0x3c, 0xa0, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xd6, 0x19, 0x5c, 0x6d, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x1c, 0x71, 0x32, 0x5a, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xe0, 0x88, 0x93, 0x71, 0x78, 0xf0, 0xa6, 0xd5, 0x60, 0x5c, 0xf6, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0xe7, 0xfa, 0x9c, 0x59, 0x09, 0xc0, 0xab, 0x31, 0xb4, 0x30, 0xb7, 0xb3, 0x32, 0x10, 0xba, 0x37, 0x90, 0x30, 0x10, 0xb9, 0x32, 0x38, 0xb9, 0xb2, 0xb9, 0x32, 0x37, 0xba, 0x30, 0xba, 0xb4, 0x37, 0x37, 0x90, 0x3b, 0xb4, 0x32, 0xb9, 0x32, 0x90, 0x30, 0x97, 0x30, 0x90, 0xb4, 0x39, 0x90, 0x37, 0x32, 0x72, 0x09, 0xc0, 0xc3, 0x32, 0xbb, 0x32, 0xb9, 0x3c, 0x10, 0x33, 0x37, 0x10, 0xb4, 0xb0, 0x39, 0x90, 0x30, 0x90, 0x3a, 0xb7, 0xb4, 0xb8, 0xba, 0x32, 0x10, 0xb9, 0x32, 0x38, 0xb9, 0xb2, 0xb9, 0x32, 0x37, 0xba, 0x30, 0xba, 0xb4, 0x37, 0x37, 0x90, 0x37, 0x33, 0x10, 0x3a, 0xb4, 0xb4, 0x39, 0x90, 0xb5, 0x34, 0x37, 0xb2, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xfa, 0x7f, 0xd3, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0x41, 0x9a, 0x2d, 0xd4, 0xe1, 0x31, 0x99, 0x0d, 0x4f, 0xeb, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x90, 0xe4, 0xe9, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7c, 0xdc, 0x83, 0x34, 0x5b, 0xa8, 0x35, 0x48, 0xb5, 0x71, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x09, 0xdb, 0x4f, 0x1b, 0x24, 0xcd, 0x38, 0xad, 0xe1, 0x47, 0x98, 0x81, 0x9f, 0x23, 0x23, 0xb5, 0x02, 0xde, 0x1c, 0x9c, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xf7, 0x5c, 0x5b, 0x18, 0x1b, 0x5b, 0xd9, 0x1c, 0x1d, 0x88, 0xdb, 0x9b, 0x5c, 0x5b, 0x18, 0xdb, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0xa1, 0x82, 0x5a, 0xc3, 0xe7, 0x2e, 0x83, 0x87, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xd0, 0xee, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0x39, 0x48, 0xef, 0x7f, 0xaa, 0x59, 0x83, 0x04, 0x11, 0xa8, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x12, 0x07, 0x9c, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xf4, 0xe1, 0x83, 0xd5, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x9a, 0xc4, 0xd2, 0x06, 0x41, 0x7a, 0xba, 0x41, 0xc1, 0xb3, 0xb9, 0x06, 0x89, 0x6d, 0x46, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x1c, 0x17, 0xbb, 0x5b, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x0b, 0xde, 0x8c, 0xdd, 0xf0, 0xb4, 0xce, 0xc1, 0xc9, 0xa9, 0x6f, 0x0d, 0xce, 0xb9, 0x29, 0x07, 0x29, 0x1b, 0x53, 0x6b, 0x90, 0xb2, 0xc5, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x92, 0x3d, 0xa6, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x82, 0x1f, 0x2b, 0x0f, 0x12, 0x61, 0xa6, 0xd6, 0x20, 0x21, 0xcc, 0xe8, 0x20, 0x95, 0x68, 0x6a, 0x0d, 0x4e, 0x7b, 0x27, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xd9, 0x63, 0x6a, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0x2e, 0x78, 0xb7, 0xf2, 0x20, 0x11, 0x66, 0xaa, 0xc3, 0x29, 0xb6, 0x06, 0x47, 0xda, 0xe5, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x23, 0xed, 0x72, 0x03, 0xf8, 0x91, 0xc9, 0x85, 0x9d, 0xbd, 0xb9, 0xd1, 0xec, 0x80, 0x9c, 0x95, 0xd1, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0x23, 0xed, 0xf2, 0x86, 0x5f, 0x94, 0x36, 0x48, 0xff, 0x6f, 0xda, 0xf0, 0x17, 0xcd, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x72, 0x56, 0x17, 0x26, 0x17, 0xe6, 0x46, 0x57, 0x56, 0x46, 0x06, 0x12, 0x36, 0x36, 0x56, 0x27, 0x17, 0x46, 0x57, 0xb6, 0xe1, 0x73, 0xa5, 0x0d, 0x8e, 0x27, 0x27, 0x1b, 0x1c, 0x85, 0x4e, 0xda, 0xf0, 0x6e, 0xde, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x61, 0xf6, 0x26, 0x07, 0x22, 0xf7, 0x56, 0xe7, 0x46, 0x56, 0x46, 0x06, 0x62, 0xc6, 0xf6, 0x16, 0x46, 0x37, 0xb7, 0xe1, 0xdf, 0x9c, 0x0d, 0xd2, 0x35, 0x9d, 0x0e, 0x0f, 0xde, 0x6c, 0x50, 0xf4, 0xe9, 0x6e, 0x78, 0x70, 0x67, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x0f, 0x0f, 0x8e, 0xec, 0xf0, 0xd0, 0xcf, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf2, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0xd7, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x5d, 0x26, 0xea, 0x20, 0x15, 0xcf, 0x69, 0x83, 0xc4, 0x32, 0xa7, 0xc3, 0x83, 0x37, 0x1d, 0xa4, 0x6a, 0x3a, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x3e, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x80, 0x77, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xf0, 0x66, 0x0d, 0x8a, 0x1d, 0xcd, 0x83, 0xf4, 0x1b, 0xaa, 0x0e, 0x0a, 0xe2, 0xf1, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x81, 0x6f, 0x73, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x69, 0xc0, 0xbb, 0x41, 0x62, 0x0b, 0xd5, 0x41, 0x41, 0x3c, 0xbe, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf0, 0x6d, 0xf0, 0x86, 0xb7, 0x75, 0x06, 0xbe, 0xcd, 0x6d, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x85, 0x2e, 0xed, 0x0c, 0x8d, 0xae, 0xcc, 0x0d, 0x84, 0xed, 0xed, 0xae, 0x4c, 0x0e, 0x44, 0xec, 0xad, 0xce, 0x8d, 0x6c, 0xc3, 0x23, 0xac, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x9f, 0x66, 0x06, 0xe2, 0x56, 0x86, 0x47, 0x07, 0x32, 0xd7, 0x16, 0xc6, 0xc6, 0x56, 0x36, 0x47, 0xb7, 0xe1, 0xdf, 0x9c, 0x0d, 0xd2, 0x35, 0x9d, 0x0e, 0x52, 0xb6, 0xa5, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x0e, 0x33, 0xb6, 0xb7, 0x30, 0x3a, 0x90, 0xb4, 0x39, 0x10, 0xb4, 0x30, 0x36, 0x33, 0x90, 0x2a, 0x26, 0x28, 0xd6, 0x86, 0x5f, 0xc9, 0xd6, 0xf0, 0x36, 0xeb, 0x86, 0x7f, 0x73, 0x36, 0x48, 0x9a, 0x71, 0x3a, 0x48, 0xcc, 0x82, 0x5a, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x23, 0x2b, 0x73, 0xdb, 0xf0, 0xc6, 0xdd, 0xc1, 0x11, 0xec, 0xa4, 0xd6, 0x70, 0x49, 0x6d, 0x50, 0xd4, 0x88, 0xb7, 0xe1, 0x92, 0xda, 0xa0, 0xa8, 0x11, 0x5f, 0x81, 0x6f, 0x83, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x01, 0xef, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0x02, 0x4f, 0x55, 0x6b, 0x50, 0xf0, 0x6c, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x80, 0x77, 0xc3, 0x83, 0x37, 0x07, 0x87, 0xbe, 0xbe, 0x35, 0x38, 0xb7, 0xf3, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x80, 0x77, 0xc3, 0x83, 0x37, 0x07, 0x27, 0x79, 0xbe, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xeb, 0x41, 0x02, 0x8f, 0xd3, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x59, 0x1c, 0xe7, 0xb0, 0x68, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xf9, 0x21, 0x6a, 0x83, 0xc3, 0x39, 0xdf, 0x1a, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x43, 0xd2, 0x1a, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x43, 0x54, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x91, 0xf1, 0x69, 0x83, 0xe3, 0x27, 0xdf, 0xc1, 0xa1, 0x97, 0x6f, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x05, 0x5f, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x49, 0xe5, 0x50, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x89, 0xba, 0xea, 0x20, 0x0d, 0x55, 0x6a, 0x0d, 0x0a, 0x9e, 0xcd, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0xc5, 0x71, 0x0e, 0x89, 0xa3, 0x36, 0x38, 0x7e, 0xf2, 0x1d, 0xa4, 0xbb, 0x56, 0xad, 0x41, 0x92, 0x26, 0xd5, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x8d, 0xaf, 0xda, 0x20, 0xdd, 0x92, 0xea, 0x20, 0xdd, 0xb5, 0x6a, 0x0d, 0x12, 0x78, 0xaa, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x6a, 0x7c, 0xd5, 0x06, 0x89, 0x4a, 0x55, 0x07, 0xe9, 0xae, 0x55, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x34, 0x6c, 0xa5, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf2, 0x43, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x35, 0xbe, 0x6a, 0x83, 0xe3, 0x27, 0xdf, 0x41, 0xb0, 0xb2, 0x1e, 0x24, 0x29, 0x55, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x52, 0xe3, 0xab, 0x36, 0x38, 0x9c, 0xf3, 0x1d, 0x04, 0x2b, 0x6b, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x70, 0x6e, 0xe7, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xa9, 0xf1, 0x55, 0x1b, 0x1c, 0xce, 0xf9, 0x0e, 0xd2, 0x5d, 0xab, 0xd6, 0x20, 0x89, 0xba, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x6c, 0x3f, 0x1d, 0xa4, 0x78, 0x57, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0xaf, 0x0f, 0x0f, 0xde, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xdf, 0xc3, 0x83, 0x37, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x7b, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0xa2, 0xdc, 0x20, 0xc1, 0xbd, 0xea, 0xe0, 0x24, 0xcf, 0xb7, 0x41, 0x29, 0x21, 0xbe, 0x86, 0x4b, 0x6a, 0x83, 0xa2, 0x46, 0x7c, 0x83, 0x04, 0xea, 0xaa, 0x35, 0x08, 0x02, 0xb4, 0x83, 0x43, 0x79, 0xcb, 0x1a, 0x14, 0x3c, 0x9b, 0x07, 0x27, 0xd1, 0x96, 0x83, 0x34, 0x01, 0xab, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x6f, 0x9a, 0x1b, 0x08, 0xdb, 0xdb, 0x5d, 0x99, 0x1c, 0x88, 0xd8, 0x5b, 0x9d, 0x1b, 0xd9, 0x86, 0xcf, 0x5d, 0x06, 0x67, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x22, 0xe3, 0xd3, 0x06, 0x29, 0x42, 0x56, 0x1b, 0xa4, 0x5b, 0x52, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x86, 0x3b, 0x6d, 0x19, 0xc0, 0x37, 0xcd, 0x0d, 0xa4, 0x0e, 0x0e, 0xae, 0x4c, 0x0e, 0x44, 0xec, 0xad, 0xce, 0x8d, 0x2c, 0x1c, 0xdd, 0xf0, 0x2b, 0xd9, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x91, 0xf1, 0x69, 0x83, 0xd4, 0x2a, 0xab, 0x83, 0x24, 0xa5, 0xaa, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x1b, 0xc5, 0x0d, 0x52, 0x84, 0xac, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x59, 0x1c, 0xe7, 0xd0, 0xe2, 0xa3, 0x83, 0xe4, 0x9f, 0xab, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0x1e, 0x61, 0x5d, 0xc3, 0xdb, 0xac, 0x1b, 0xde, 0xd6, 0x39, 0x18, 0xa4, 0x52, 0x6b, 0x78, 0x9b, 0xf5, 0xe0, 0xa0, 0x4c, 0xd7, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xf6, 0x05, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xf2, 0x43, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x35, 0xbe, 0x6a, 0x0d, 0x6f, 0xeb, 0x1c, 0xf6, 0x05, 0x0e, 0xd2, 0x5d, 0xab, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0x10, 0xa0, 0xd5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x47, 0x58, 0x37, 0x38, 0x28, 0xd3, 0xad, 0xe1, 0x57, 0xb2, 0x0d, 0x92, 0xd7, 0xae, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x6f, 0x14, 0x37, 0x48, 0x11, 0xb2, 0x3a, 0x38, 0xc9, 0xf3, 0xd5, 0x06, 0x45, 0x9f, 0xee, 0x86, 0x7d, 0x81, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf2, 0x43, 0xd4, 0x06, 0x29, 0x8f, 0x57, 0x6b, 0xf8, 0x20, 0x67, 0x83, 0xd3, 0x91, 0xc8, 0x1a, 0x3e, 0x8e, 0x3a, 0x48, 0x0c, 0xbd, 0x3a, 0x48, 0x0c, 0xbd, 0x6a, 0xc3, 0x2f, 0x2e, 0x1b, 0xa4, 0x79, 0x57, 0x6d, 0x90, 0x70, 0x79, 0xd5, 0x6a, 0x58, 0x6f, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0xac, 0x37, 0x37, 0x80, 0x07, 0x5b, 0xd9, 0xdc, 0x5c, 0x0b, 0x1d, 0x5a, 0x98, 0xdb, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x40, 0x84, 0xda, 0xf0, 0x17, 0xcd, 0x86, 0x0f, 0x56, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x48, 0x9a, 0x71, 0x3a, 0x48, 0x18, 0x8d, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x32, 0x3e, 0x1d, 0xa4, 0xe0, 0x46, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x3e, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xc4, 0x11, 0xa7, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0x34, 0x31, 0xb6, 0xc3, 0x43, 0x3f, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x74, 0x2f, 0xac, 0xc3, 0x5b, 0x68, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0x7a, 0xe7, 0x20, 0x65, 0xc8, 0x69, 0x83, 0x22, 0xa7, 0x75, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0xc3, 0xd3, 0x3b, 0x07, 0xa9, 0xa8, 0x52, 0x1b, 0x14, 0xb0, 0xf9, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc4, 0x11, 0xa7, 0x83, 0x44, 0xcf, 0xa8, 0x83, 0x94, 0x21, 0xa7, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x22, 0xe3, 0xd3, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc4, 0xc7, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0xa4, 0x39, 0x6d, 0x90, 0x6e, 0x19, 0x55, 0x07, 0xa9, 0x9a, 0x4e, 0x07, 0x69, 0xcf, 0x50, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x91, 0xf1, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x1a, 0xf0, 0x1e, 0x24, 0x02, 0x63, 0x1d, 0xa4, 0x3d, 0x43, 0x1d, 0x4e, 0xb1, 0x5a, 0xc0, 0x63, 0x33, 0x73, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0x78, 0xd9, 0xc2, 0xe4, 0xce, 0xca, 0xe6, 0xe8, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0x2f, 0x0f, 0x12, 0xcd, 0x9f, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe1, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x23, 0x81, 0xa1, 0x0d, 0x0f, 0xde, 0x6c, 0x90, 0xe2, 0xff, 0x74, 0x50, 0x10, 0x8f, 0x77, 0x38, 0xc5, 0xd6, 0x90, 0x38, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x24, 0x8e, 0x1a, 0xe0, 0x6f, 0xab, 0x63, 0xa3, 0x4b, 0x83, 0x63, 0xcb, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x09, 0x88, 0x50, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0x4d, 0x62, 0x69, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xa4, 0x03, 0xa8, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x09, 0xdb, 0x4f, 0x07, 0x89, 0x9e, 0x51, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd4, 0xf8, 0xaa, 0x83, 0x14, 0xdc, 0xa8, 0x56, 0x43, 0xfa, 0x70, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x38, 0xf2, 0x6e, 0x0c, 0xe0, 0x1d, 0x46, 0x46, 0xb6, 0x03, 0x52, 0x86, 0x17, 0x36, 0x46, 0x07, 0x92, 0x66, 0x06, 0x52, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0xe2, 0x80, 0xd3, 0x06, 0xe9, 0x8f, 0x50, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf2, 0xf0, 0xc1, 0x6a, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0x4d, 0x62, 0x69, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0xf8, 0x20, 0xdd, 0x32, 0x6a, 0xc3, 0x57, 0x38, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x74, 0x99, 0xa8, 0x83, 0x43, 0x2f, 0xdf, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0x87, 0x81, 0xa0, 0x85, 0xcd, 0x81, 0xb0, 0x85, 0xc9, 0x9d, 0x95, 0xc9, 0x81, 0x94, 0xe1, 0xc1, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x9c, 0x46, 0x6e, 0x36, 0x38, 0x57, 0xdc, 0xac, 0xc1, 0x11, 0x27, 0x63, 0xc3, 0xc7, 0x51, 0x07, 0xa7, 0x23, 0x91, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0x39, 0x01, 0xbd, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0x71, 0x72, 0xda, 0xa0, 0xc8, 0x69, 0xdd, 0x20, 0x61, 0x34, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0xfc, 0x10, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0xd7, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x29, 0x69, 0x4e, 0x07, 0x87, 0x5e, 0xbe, 0x0e, 0x52, 0x35, 0x9d, 0x0e, 0xd2, 0x9e, 0xa1, 0xda, 0xf0, 0x89, 0xcd, 0x06, 0xc9, 0xa4, 0x50, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xdf, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x24, 0x95, 0x43, 0x6d, 0x90, 0x34, 0xe3, 0xb4, 0xc1, 0x89, 0xfd, 0x66, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x28, 0xc3, 0x83, 0x0b, 0x73, 0x23, 0x2b, 0x23, 0x03, 0x29, 0xc3, 0x83, 0x03, 0x79, 0x33, 0x03, 0x09, 0x3b, 0x48, 0x94, 0x7f, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x8d, 0xe2, 0x06, 0x29, 0xfe, 0x4f, 0x07, 0x29, 0xfc, 0x50, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x94, 0xab, 0xab, 0x83, 0x74, 0x52, 0xad, 0xc3, 0x83, 0x37, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xe3, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x24, 0x6c, 0x3f, 0x6d, 0x90, 0x30, 0x1a, 0xb5, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x0f, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x20, 0x65, 0x78, 0x70, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x51, 0xfe, 0x69, 0x83, 0x54, 0x8c, 0xa8, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x3c, 0x90, 0xbd, 0xb9, 0x9d, 0xd0, 0x81, 0xb8, 0x95, 0x95, 0x91, 0x81, 0xd0, 0xbd, 0x81, 0x84, 0x91, 0x91, 0x6d, 0xf8, 0x37, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x38, 0xe2, 0xb4, 0xc1, 0x21, 0xbf, 0xe5, 0x20, 0x91, 0xd2, 0xe9, 0x20, 0x15, 0x55, 0x6a, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0x82, 0x67, 0x73, 0x0d, 0x12, 0xdb, 0x8c, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xb2, 0xc7, 0xd4, 0x06, 0xc9, 0x26, 0x53, 0x07, 0x89, 0x26, 0x50, 0x6b, 0x70, 0xce, 0x4d, 0x39, 0x48, 0xd2, 0xd9, 0x5a, 0x83, 0x94, 0x2d, 0xa6, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0xec, 0x31, 0xb5, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0x3c, 0xdb, 0x79, 0x90, 0x68, 0x02, 0xb5, 0x06, 0x09, 0x61, 0x46, 0x07, 0x09, 0x57, 0x5b, 0x6b, 0x70, 0xda, 0x3b, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0xc9, 0x1e, 0x53, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0xc1, 0xbb, 0x85, 0x07, 0x89, 0x26, 0x50, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xb4, 0xb2, 0xac, 0x35, 0xfc, 0xe2, 0x72, 0x90, 0xb8, 0xa2, 0xd5, 0x0a, 0x78, 0x73, 0x68, 0xe6, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xea, 0xe7, 0x56, 0x03, 0xf0, 0x13, 0x06, 0xa2, 0x02, 0x22, 0xe3, 0x25, 0xb6, 0x03, 0xe2, 0xf6, 0x06, 0x22, 0xf7, 0x56, 0xe7, 0x46, 0x96, 0xe6, 0x76, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x42, 0xc3, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x5c, 0x3c, 0x38, 0x9e, 0x9c, 0xb4, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x4a, 0xb6, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0xb4, 0x77, 0x72, 0x70, 0x88, 0xe9, 0x38, 0x3c, 0xb8, 0xb3, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0xa8, 0x75, 0x72, 0x70, 0x88, 0xe9, 0x38, 0x3c, 0xb8, 0xd3, 0x86, 0xa7, 0x75, 0x36, 0x5c, 0x52, 0x1b, 0x1e, 0xdc, 0x59, 0x83, 0x22, 0x04, 0x7a, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x6c, 0x3f, 0x6d, 0x90, 0x34, 0xe3, 0x74, 0x78, 0x0b, 0xad, 0xd5, 0xe0, 0xb8, 0xd8, 0xbd, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x70, 0x5c, 0xec, 0x6e, 0x00, 0x3e, 0xc7, 0xca, 0xdc, 0xe8, 0xe4, 0xc2, 0xd8, 0x40, 0xe4, 0xde, 0xea, 0xdc, 0xc8, 0xd2, 0xdc, 0xce, 0x40, 0xda, 0xca, 0xc6, 0xd0, 0xc2, 0xdc, 0xd2, 0xe6, 0xda, 0x95, 0x00, 0x34, 0x1b, 0x0b, 0x73, 0x03, 0x81, 0x2b, 0x93, 0x33, 0x7b, 0x93, 0x6b, 0xd3, 0x01, 0x31, 0x63, 0x7b, 0x7b, 0x93, 0x63, 0x01, 0x19, 0x2b, 0x4b, 0x63, 0x4b, 0x73, 0x3b, 0x63, 0x01, 0x99, 0x6b, 0x0b, 0x63, 0x63, 0x2b, 0x93, 0x63, 0x01, 0x61, 0x0b, 0x93, 0x3b, 0x2b, 0x93, 0x63, 0xb5, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0xba, 0xcf, 0x81, 0xa4, 0xcd, 0x81, 0xcc, 0xd1, 0xa5, 0x8d, 0xad, 0xe5, 0x81, 0x88, 0xa5, 0xd1, 0xe9, 0x80, 0xc8, 0x95, 0xc1, 0xc9, 0x95, 0xcd, 0x95, 0xb9, 0xd1, 0xcd, 0x81, 0x84, 0x81, 0xd8, 0x85, 0xb1, 0xd5, 0x95, 0x81, 0xb0, 0x95, 0xcd, 0xcd, 0x81, 0xd0, 0xa1, 0x85, 0xb9, 0x81, 0xd4, 0xb1, 0xc1, 0xa1, 0x84, 0xa5, 0x80, 0xf4, 0x80, 0xc8, 0x78, 0xa1, 0x94, 0xb9, 0x84, 0xa5, 0x36, 0x3c, 0x3e, 0xb2, 0xc1, 0x71, 0xb1, 0x7b, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x4e, 0x6f, 0x10, 0x6c, 0xa6, 0x6b, 0xc8, 0x80, 0x1f, 0xa4, 0xa8, 0x4c, 0xad, 0x21, 0x03, 0x7e, 0x90, 0xfe, 0x34, 0xb5, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x82, 0x9f, 0x6b, 0xd7, 0x90, 0x01, 0x3f, 0x48, 0x12, 0xdb, 0x5a, 0x43, 0x06, 0xfc, 0x20, 0x4d, 0x6e, 0x6a, 0x0d, 0x19, 0xf0, 0x83, 0x64, 0xc2, 0xad, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0xbc, 0x1b, 0xdd, 0x06, 0x89, 0x03, 0x4e, 0x07, 0x67, 0xb5, 0x93, 0x0d, 0x7f, 0xd1, 0x6c, 0x90, 0x26, 0xb1, 0xb4, 0xe1, 0xdd, 0xbc, 0x0d, 0x52, 0xf7, 0xa7, 0x36, 0x38, 0xda, 0xf0, 0xad, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x48, 0xeb, 0xa8, 0x3a, 0x48, 0x71, 0x72, 0x5a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x6f, 0x33, 0xb6, 0xba, 0x39, 0x34, 0x10, 0xb2, 0x32, 0xb7, 0x37, 0xb9, 0xb6, 0x30, 0xb6, 0xb9, 0xc3, 0x33, 0x93, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x50, 0x4c, 0x62, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x8e, 0xfa, 0x26, 0x07, 0x87, 0x98, 0x8e, 0xc3, 0x97, 0x93, 0x1b, 0x9e, 0x99, 0xdc, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xc5, 0xbf, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0x25, 0xb5, 0x06, 0x61, 0x20, 0x5f, 0x1d, 0xa4, 0xf8, 0x3f, 0x6d, 0x78, 0x66, 0x72, 0xc3, 0x2f, 0x2e, 0x1b, 0xa4, 0x38, 0x39, 0x6d, 0x50, 0xe4, 0xb4, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x4f, 0xaf, 0x4c, 0xae, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xdb, 0x83, 0x84, 0x57, 0xa8, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x41, 0xae, 0x2c, 0xae, 0x2e, 0x4d, 0xae, 0x0c, 0x04, 0x4e, 0xae, 0x6c, 0x2c, 0x6d, 0x2e, 0xed, 0xcd, 0x6d, 0xc3, 0xaf, 0x64, 0x1b, 0x1c, 0xce, 0xf9, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x6f, 0x14, 0x37, 0x38, 0x84, 0x4e, 0x1c, 0xa4, 0xf7, 0x3f, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x91, 0x65, 0xba, 0x86, 0x0f, 0x72, 0x36, 0x48, 0x5c, 0xef, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x5c, 0x5d, 0x1d, 0x24, 0xc9, 0x77, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x2f, 0x57, 0x46, 0x56, 0x37, 0x56, 0x06, 0x02, 0x27, 0x57, 0x36, 0x96, 0x36, 0x97, 0xf6, 0xe6, 0x76, 0x78, 0xf0, 0x66, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x29, 0x69, 0x4e, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0x39, 0xa3, 0x6a, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xcb, 0xdc, 0xcc, 0xde, 0xe4, 0xc6, 0xca, 0x40, 0xda, 0xd2, 0xdc, 0x5c, 0x40, 0xca, 0xf0, 0xe0, 0x0e, 0x12, 0x78, 0x9c, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x89, 0x23, 0x4e, 0x1b, 0x24, 0xcd, 0x38, 0x6d, 0x90, 0x98, 0x05, 0xd5, 0x41, 0xca, 0x90, 0xd3, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xa9, 0x1c, 0x6a, 0x83, 0xc4, 0x2c, 0xa8, 0x83, 0x54, 0x3c, 0xa7, 0x83, 0x04, 0x1e, 0xa7, 0x0d, 0x8a, 0x0e, 0xda, 0xc1, 0xc5, 0x0d, 0x0f, 0xee, 0xac, 0x41, 0x61, 0xa8, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x32, 0x71, 0xd7, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0x0e, 0x0e, 0xbd, 0x7c, 0x07, 0xa9, 0x9a, 0x4e, 0x1b, 0x2e, 0xa9, 0x0d, 0x0f, 0xee, 0xac, 0x41, 0x11, 0x02, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x12, 0xb6, 0x9f, 0x36, 0x48, 0x9a, 0x71, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0xca, 0x3f, 0x1d, 0x1c, 0x7a, 0xf9, 0x5a, 0xc3, 0x83, 0x3b, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc4, 0xc7, 0x3d, 0x48, 0x72, 0xf5, 0x6a, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x24, 0x4f, 0xa7, 0x35, 0xbc, 0x9b, 0xb7, 0x41, 0x72, 0x46, 0xd5, 0x06, 0x41, 0x7a, 0xba, 0xc1, 0x81, 0xa6, 0x6f, 0x0d, 0xd2, 0xd2, 0xb9, 0x0e, 0x92, 0x47, 0xbb, 0xd6, 0x20, 0xfd, 0x9e, 0xeb, 0x20, 0x79, 0xb4, 0x6b, 0x0d, 0x52, 0xe1, 0xb9, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x8a, 0x93, 0xd3, 0x06, 0x45, 0x4e, 0xeb, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x39, 0x06, 0xaa, 0xd6, 0x20, 0x31, 0xa0, 0xeb, 0x20, 0x89, 0xe3, 0x6b, 0x0d, 0x92, 0x11, 0xba, 0x36, 0x7c, 0x90, 0xb3, 0xc1, 0xe1, 0x9c, 0x6f, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0xe2, 0xe4, 0xb4, 0x41, 0x91, 0xd3, 0xba, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0xbc, 0x17, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xb4, 0x7b, 0x37, 0x38, 0xe9, 0xf6, 0xd5, 0x06, 0xa9, 0xaf, 0x5d, 0x07, 0x29, 0x28, 0x5f, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x14, 0x27, 0xa7, 0x0d, 0x8a, 0x9c, 0xd6, 0x35, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x64, 0x7c, 0x3a, 0x48, 0xda, 0xfa, 0x3a, 0x48, 0x57, 0xfb, 0x6a, 0x0d, 0x92, 0x2e, 0xba, 0x0e, 0x92, 0x7a, 0xbe, 0xd6, 0x20, 0x01, 0xa2, 0xeb, 0x20, 0x6d, 0xee, 0xab, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x0f, 0xee, 0x6c, 0x90, 0xe0, 0x40, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0xe1, 0xc1, 0x9d, 0x35, 0x08, 0xd2, 0xd3, 0x0d, 0x0e, 0x34, 0x7d, 0x6b, 0x90, 0x96, 0xce, 0x75, 0x78, 0x5a, 0x67, 0x0d, 0x12, 0x03, 0xba, 0x36, 0x5c, 0x52, 0x1b, 0x1e, 0xdc, 0x59, 0xc3, 0x83, 0x3b, 0x1b, 0x3e, 0x8e, 0x3a, 0x48, 0xd7, 0x74, 0x6a, 0x0d, 0xd2, 0xef, 0xb9, 0x36, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0x08, 0xeb, 0x06, 0x27, 0x20, 0xbd, 0x83, 0x93, 0x3c, 0xdf, 0x86, 0xa7, 0x75, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x47, 0x58, 0x37, 0x48, 0x6f, 0xa8, 0x5a, 0xc3, 0xdb, 0xac, 0x07, 0xc9, 0x19, 0x55, 0xad, 0xe1, 0x92, 0xda, 0xf0, 0xe0, 0xce, 0x1a, 0x1e, 0xdc, 0xd9, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0x0e, 0x52, 0x35, 0x9d, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0xdf, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa9, 0xf1, 0x55, 0x1b, 0xa4, 0x6b, 0x3a, 0x1d, 0x04, 0x2b, 0x6b, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0xf8, 0x77, 0xc3, 0x83, 0x37, 0x07, 0xe9, 0xd5, 0x4e, 0x07, 0xe9, 0xfd, 0x4f, 0x1b, 0xa4, 0x1e, 0x80, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x54, 0x0e, 0x75, 0x90, 0x42, 0x2a, 0x75, 0x90, 0x5e, 0xed, 0xb4, 0x06, 0xa9, 0xf0, 0x5c, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0xb1, 0xfc, 0x6b, 0xc3, 0xd3, 0x3a, 0x07, 0x49, 0xcb, 0x5f, 0x6b, 0x90, 0x8c, 0xd0, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xf3, 0xa0, 0x0d, 0x4f, 0xeb, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x9e, 0x1f, 0xa4, 0x7b, 0x7d, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x91, 0x7b, 0xab, 0x73, 0x23, 0x03, 0x41, 0x0b, 0x63, 0x33, 0x9b, 0x03, 0xa1, 0x7b, 0x03, 0x29, 0xb3, 0x2b, 0x73, 0xdb, 0xf0, 0x08, 0xeb, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0x5e, 0xd0, 0x41, 0x8a, 0xb5, 0xd3, 0xc1, 0x49, 0x9e, 0x6f, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x8e, 0xde, 0x71, 0x1b, 0xa4, 0x6b, 0x3a, 0x1d, 0x14, 0xc4, 0xe3, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xbe, 0x9c, 0x5c, 0x83, 0x52, 0x42, 0x7c, 0xe3, 0xf9, 0xe1, 0x69, 0x9d, 0x0d, 0x4a, 0x09, 0xf1, 0x8d, 0xe7, 0x07, 0x49, 0xcb, 0x5f, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x32, 0x3e, 0x6d, 0x78, 0x2f, 0xe8, 0x20, 0xbd, 0xda, 0xe9, 0x20, 0xb9, 0x0f, 0x6c, 0x0d, 0x12, 0x20, 0xba, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x1e, 0xb4, 0xe1, 0x69, 0x9d, 0x0d, 0x9f, 0xd8, 0x6c, 0x90, 0x80, 0x09, 0x76, 0x90, 0x22, 0x10, 0xb6, 0x06, 0x49, 0x17, 0x5d, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x3e, 0x0f, 0xda, 0xf0, 0xb4, 0xce, 0x86, 0x4f, 0x6c, 0x36, 0x48, 0xc0, 0x04, 0xdb, 0xf0, 0x41, 0xce, 0x06, 0x29, 0xc5, 0x60, 0x6b, 0xf8, 0x20, 0x67, 0x83, 0xc3, 0x39, 0xdf, 0x41, 0x72, 0x1f, 0xd8, 0x41, 0x8a, 0x40, 0x58, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x1e, 0xdc, 0x59, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x90, 0xf0, 0x0a, 0xb5, 0xe1, 0xe3, 0xa8, 0x83, 0x14, 0xff, 0xa7, 0x0d, 0x4f, 0xeb, 0x6c, 0xb8, 0xa4, 0x36, 0x3c, 0xb8, 0xb3, 0x86, 0x07, 0x77, 0x0e, 0x52, 0x19, 0xa5, 0xd6, 0xa0, 0x08, 0x81, 0x3e, 0x48, 0xe4, 0x94, 0x6a, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x24, 0x4f, 0xa7, 0x0d, 0x92, 0x47, 0xbb, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0x72, 0x46, 0xd5, 0x06, 0x89, 0x4a, 0x4e, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc4, 0x11, 0xa7, 0x0d, 0x12, 0xcd, 0x9f, 0x0e, 0x52, 0xf1, 0x9c, 0x0e, 0x52, 0x86, 0x9c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x89, 0x25, 0x55, 0x07, 0xe9, 0x29, 0x50, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0x97, 0xb9, 0x99, 0xbd, 0xc9, 0x8d, 0x95, 0x81, 0xb4, 0x85, 0xe1, 0xb9, 0x80, 0x94, 0xe1, 0xc1, 0x1d, 0x24, 0x2a, 0x39, 0x1d, 0x4e, 0xb1, 0x35, 0x48, 0x51, 0x7f, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xbf, 0x2d, 0x0c, 0x2f, 0xad, 0xad, 0xae, 0x0d, 0xa4, 0x0c, 0x0f, 0xee, 0xcd, 0xad, 0xcc, 0x8d, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x6c, 0x3f, 0x6d, 0x90, 0x98, 0x05, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x94, 0x7f, 0x3a, 0x38, 0xfe, 0xb8, 0x34, 0x6b, 0x90, 0x10, 0x52, 0xb5, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x3f, 0x64, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x2b, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x2b, 0x69, 0x6e, 0x66, 0x20, 0x65, 0x78, 0x70, 0x07, 0xe5, 0xba, 0xec, 0xe1, 0x14, 0x5b, 0x83, 0xa4, 0x0a, 0xaa, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa4, 0x0a, 0xaa, 0x06, 0xc0, 0xcb, 0x32, 0x3c, 0xb8, 0x30, 0x37, 0xb2, 0x39, 0x10, 0xba, 0x37, 0x90, 0xb2, 0x34, 0x3a, 0xb4, 0x32, 0x39, 0x10, 0xb3, 0x3a, 0x36, 0x36, 0x10, 0x38, 0xb9, 0xb2, 0xb1, 0xb4, 0xb9, 0xb4, 0x37, 0x37, 0x90, 0x37, 0x39, 0x10, 0xba, 0x37, 0x10, 0xb2, 0x32, 0xb7, 0x37, 0xb9, 0xb6, 0x30, 0xb6, 0x34, 0xbd, 0x32, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0xfe, 0xdf, 0xb4, 0xe1, 0x13, 0x9b, 0x0d, 0xd2, 0x50, 0xa1, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc3, 0x56, 0xda, 0x20, 0x81, 0xd7, 0xe8, 0x20, 0xbd, 0xff, 0x69, 0xc3, 0xd3, 0x3a, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x07, 0x39, 0x1b, 0x24, 0x67, 0x54, 0x6d, 0x90, 0xd6, 0xaa, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf8, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x92, 0xca, 0xa1, 0x0e, 0x52, 0xf0, 0xbc, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x97, 0x89, 0x3a, 0x38, 0xfe, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x52, 0xd2, 0x9c, 0x0e, 0x8e, 0x3f, 0x2e, 0x87, 0x07, 0x6f, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x74, 0x03, 0x68, 0x83, 0xd3, 0x91, 0xc8, 0x06, 0x69, 0xad, 0x5a, 0x6d, 0xb8, 0xa4, 0x36, 0x3c, 0xb8, 0xb3, 0x06, 0x45, 0x08, 0xf4, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x2a, 0x87, 0xda, 0x20, 0x69, 0xc6, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x28, 0xff, 0xb4, 0xe1, 0x99, 0xc9, 0x5a, 0xc3, 0x83, 0x3b, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x34, 0xe0, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0xbc, 0x39, 0x48, 0x05, 0x1a, 0x3b, 0x48, 0xd5, 0x74, 0x6a, 0x35, 0x48, 0xe9, 0x82, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xbf, 0x2d, 0xcd, 0x2d, 0xad, 0xad, 0xae, 0x0d, 0xa4, 0x0c, 0x0f, 0xee, 0xcd, 0xad, 0xcc, 0x8d, 0xee, 0x20, 0x55, 0x28, 0x6a, 0xd6, 0xa0, 0x4c, 0xc3, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0x8e, 0x44, 0x7b, 0x03, 0x78, 0xcd, 0xc5, 0xd5, 0x85, 0xc9, 0x95, 0x81, 0xc8, 0xbd, 0xbd, 0xd1, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xf4, 0xff, 0xa6, 0x0d, 0x7f, 0xd1, 0x6c, 0x90, 0x26, 0xb1, 0xb4, 0x41, 0xd1, 0xa7, 0xbb, 0xe1, 0xc1, 0x9d, 0x35, 0x7c, 0x62, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf7, 0x41, 0xc2, 0x2b, 0xd4, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0xa9, 0xf1, 0x55, 0x1b, 0xa4, 0xd6, 0x85, 0x1d, 0x04, 0x2b, 0x6b, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x44, 0xc6, 0xa7, 0x83, 0xd4, 0x90, 0xad, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xca, 0xd5, 0xd5, 0x06, 0xc9, 0x94, 0x4e, 0x07, 0xc7, 0x1f, 0x97, 0xc3, 0x83, 0x37, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xf4, 0x8e, 0xdb, 0xf0, 0xcc, 0xe4, 0x41, 0x41, 0x3c, 0xbe, 0xe1, 0xdd, 0x9e, 0x0d, 0x8e, 0xde, 0x71, 0x1b, 0x24, 0x96, 0x39, 0x1d, 0x14, 0xc4, 0xe3, 0x1b, 0x9e, 0x99, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0xc9, 0x0f, 0x51, 0x07, 0x89, 0x12, 0x64, 0x07, 0x69, 0x22, 0x63, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x7c, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x71, 0x9c, 0x83, 0x32, 0x0d, 0xab, 0x83, 0x54, 0x4d, 0xa7, 0x35, 0x7c, 0xee, 0x32, 0xb8, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0x33, 0xb9, 0xb0, 0x83, 0x52, 0x48, 0x7d, 0x83, 0xa4, 0x19, 0xa7, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x73, 0x64, 0x4c, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x34, 0x0f, 0xa8, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xca, 0xd7, 0xd3, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x48, 0xcc, 0x76, 0x6a, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0xc4, 0x6c, 0xa7, 0xc3, 0x83, 0x37, 0x1d, 0x4e, 0xb1, 0x16, 0xf0, 0xe6, 0xee, 0xe4, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xcd, 0xd8, 0xd2, 0xe0, 0xe0, 0xca, 0xc8, 0x40, 0xe4, 0xde, 0xea, 0xdc, 0xc8, 0xd2, 0xdc, 0xce, 0x36, 0x38, 0x39, 0xc8, 0x6d, 0x50, 0xf0, 0x6c, 0x6e, 0x70, 0xfc, 0xe4, 0x5b, 0x83, 0x73, 0x6e, 0xca, 0x41, 0xca, 0xbf, 0xd3, 0x1a, 0x24, 0x84, 0x19, 0x1d, 0xa4, 0x93, 0x32, 0xb5, 0x1a, 0x24, 0xcd, 0x76, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x9f, 0xbb, 0x0c, 0x5e, 0x1e, 0x24, 0xf0, 0x38, 0xad, 0xe1, 0x73, 0x97, 0xc1, 0xc3, 0xc3, 0x83, 0x37, 0xcd, 0x02, 0x9e, 0x5b, 0x19, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x90, 0x36, 0x50, 0xd6, 0x00, 0xf4, 0xc8, 0x95, 0xc5, 0xd5, 0xa5, 0xc9, 0x95, 0x81, 0xfc, 0xf4, 0xa0, 0x6c, 0x95, 0x98, 0x81, 0xa8, 0x74, 0x81, 0x84, 0xa5, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x5a, 0xc2, 0xd2, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xcd, 0x9b, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x52, 0xe1, 0xba, 0x0e, 0x0f, 0xee, 0x6c, 0x78, 0x5a, 0x67, 0xc3, 0x5b, 0x76, 0x6b, 0x78, 0xe2, 0x6e, 0xc3, 0xb3, 0x78, 0x07, 0x07, 0x28, 0xf1, 0x83, 0xf0, 0x54, 0x5d, 0x0d, 0x12, 0xc5, 0xb0, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0x40, 0xdf, 0x34, 0x37, 0xba, 0xb2, 0xb3, 0x32, 0x39, 0x10, 0xb1, 0x34, 0xb7, 0x30, 0xb9, 0x3c, 0x10, 0xb6, 0xb7, 0xb3, 0x30, 0xb9, 0x34, 0x3a, 0xb4, 0x36, 0x1d, 0x10, 0x19, 0xaf, 0x34, 0x31, 0x36, 0x94, 0xb0, 0x14, 0x10, 0x9e, 0x1e, 0x10, 0xbe, 0x30, 0x3e, 0x10, 0x1e, 0x10, 0x19, 0x2f, 0x94, 0x34, 0x31, 0x36, 0x94, 0xb0, 0x94, 0x95, 0x98, 0xd4, 0x86, 0x5f, 0x94, 0x36, 0x48, 0xff, 0x6f, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xc7, 0x93, 0x93, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0xb0, 0xfd, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x94, 0x7f, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0xd9, 0x20, 0xe1, 0x15, 0xaa, 0x0e, 0x52, 0xf1, 0x9c, 0x0e, 0xa7, 0x58, 0x6b, 0x70, 0xf8, 0xc5, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x38, 0xfc, 0xe2, 0x36, 0xc0, 0x57, 0x16, 0x57, 0x17, 0xc6, 0x36, 0xb7, 0xe1, 0x17, 0xa5, 0x0d, 0x12, 0x10, 0xa1, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x83, 0xd5, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0xd2, 0x16, 0xd6, 0x41, 0x9a, 0x1a, 0xd6, 0x06, 0x05, 0x6c, 0xfe, 0x86, 0x0f, 0x72, 0x36, 0x48, 0xee, 0xc4, 0x5a, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x80, 0x77, 0x83, 0x64, 0x60, 0xac, 0x83, 0xb4, 0x67, 0xa8, 0x83, 0x74, 0x4d, 0xa7, 0x0d, 0xff, 0xe6, 0x6c, 0x90, 0x40, 0x8e, 0x75, 0x90, 0xfa, 0x0c, 0x35, 0x6b, 0x68, 0xf1, 0xb1, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x68, 0xf1, 0xd1, 0x00, 0xfc, 0xcc, 0xd5, 0x89, 0xd1, 0xc9, 0x85, 0x8d, 0xd1, 0xed, 0x80, 0x94, 0xe1, 0x85, 0x8d, 0xd1, 0x81, 0xa4, 0x99, 0x81, 0x94, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x24, 0xd4, 0xac, 0x0d, 0x7f, 0xd1, 0x6c, 0x90, 0x26, 0xb1, 0xb4, 0xe1, 0x13, 0x9b, 0x0d, 0xd2, 0x90, 0xb3, 0x36, 0x7c, 0x85, 0xb3, 0x41, 0xb1, 0xa3, 0xb9, 0x41, 0x5a, 0x76, 0xd6, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x24, 0x0c, 0x36, 0xb5, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0xc1, 0x69, 0xe4, 0x66, 0x83, 0x73, 0xc5, 0xcd, 0x06, 0xa9, 0x0c, 0x5a, 0x6b, 0x50, 0xf0, 0x6c, 0x6e, 0x78, 0x5b, 0x67, 0x83, 0x64, 0x56, 0xb2, 0x6a, 0xc3, 0x27, 0x36, 0x1b, 0x24, 0x93, 0x42, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x7e, 0x6f, 0x50, 0x74, 0x1a, 0x6f, 0x90, 0x54, 0x0e, 0xb5, 0x41, 0xd2, 0x8c, 0xd3, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x12, 0xe5, 0x9f, 0x0e, 0x12, 0x35, 0xb5, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0xc7, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x48, 0xd8, 0x7e, 0xda, 0x20, 0x61, 0x34, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0xca, 0x3f, 0xad, 0xe1, 0xe3, 0xa8, 0x83, 0x54, 0x8c, 0xa8, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x36, 0xeb, 0x41, 0x39, 0x01, 0xbd, 0x41, 0x9a, 0xc5, 0x56, 0x6b, 0x10, 0xa4, 0xa7, 0x1b, 0x14, 0x3c, 0x9b, 0x6b, 0x90, 0xd8, 0x66, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x92, 0x3d, 0xa6, 0xd6, 0xf0, 0xc6, 0xdd, 0x41, 0xba, 0x3e, 0xd7, 0x41, 0xa2, 0x09, 0xd4, 0x1a, 0x9c, 0x73, 0x53, 0x0e, 0x52, 0x49, 0xce, 0xd6, 0x20, 0x65, 0x8b, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x7b, 0x4c, 0x6d, 0x90, 0xc8, 0x34, 0x75, 0x90, 0x68, 0x02, 0xb5, 0x06, 0x09, 0x61, 0x46, 0x07, 0xc9, 0x44, 0x67, 0x6b, 0x70, 0xda, 0x3b, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0xc9, 0x1e, 0x53, 0x6b, 0x78, 0xe3, 0xee, 0x20, 0x49, 0xa3, 0xeb, 0x20, 0xd1, 0x04, 0xaa, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xd5, 0x83, 0xf4, 0x1b, 0xad, 0x0d, 0x5f, 0xe1, 0x6c, 0x50, 0xec, 0x68, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0xb0, 0x95, 0x36, 0x48, 0x61, 0x8e, 0x3a, 0x48, 0x7b, 0x86, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x3f, 0x9a, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0xc2, 0x34, 0xd4, 0x41, 0x0a, 0x73, 0xd4, 0x1a, 0x24, 0x3e, 0x47, 0x1d, 0xa4, 0x3e, 0x43, 0x1d, 0xa4, 0xa8, 0x9a, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x52, 0xae, 0xae, 0x0e, 0x92, 0x22, 0xcf, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x28, 0x76, 0xcf, 0x37, 0x48, 0x1e, 0xed, 0xda, 0xf0, 0x41, 0xce, 0x06, 0xe5, 0x04, 0xf4, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0xc5, 0xc9, 0x69, 0x83, 0x22, 0xa7, 0x75, 0x83, 0x84, 0xd1, 0xa8, 0x83, 0xd2, 0x0c, 0x7d, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x95, 0x65, 0xad, 0xe1, 0x17, 0x97, 0x83, 0x64, 0xf8, 0xb3, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0xd6, 0x90, 0x38, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x29, 0x3e, 0x59, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x24, 0x34, 0x2c, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x83, 0x34, 0x89, 0xa5, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x9a, 0xc4, 0xd2, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x2b, 0xd9, 0x06, 0xe9, 0xe5, 0x5b, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0x90, 0xa2, 0xbe, 0x75, 0xf8, 0x3c, 0xa8, 0x0d, 0x4e, 0xc5, 0xaa, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0x1d, 0x7f, 0x6b, 0x0d, 0x1f, 0xe4, 0xac, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x4a, 0xff, 0xd6, 0xe1, 0xf3, 0xa0, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x62, 0x49, 0xd5, 0x1a, 0xfe, 0xcd, 0xd9, 0x20, 0x65, 0xb9, 0x69, 0xc3, 0xdb, 0x3a, 0x83, 0xcf, 0x87, 0xcf, 0x83, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0x20, 0xf5, 0x19, 0xea, 0xf0, 0xe0, 0xcd, 0x06, 0xa7, 0x62, 0xd5, 0x83, 0xa4, 0x36, 0xb4, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0x1a, 0x86, 0xb6, 0x86, 0x0f, 0x72, 0x36, 0x48, 0xdd, 0x9f, 0x3a, 0x48, 0x9f, 0x44, 0xdb, 0xf0, 0x41, 0xce, 0x1a, 0x7e, 0x25, 0xdb, 0x20, 0x75, 0x7f, 0x6a, 0x83, 0x94, 0x44, 0xb4, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x29, 0x4e, 0x4e, 0x1b, 0xa4, 0xd4, 0xa1, 0x1d, 0xa4, 0xbd, 0x76, 0x6d, 0xf8, 0x20, 0x67, 0x83, 0x94, 0x3a, 0xb4, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x6a, 0x7c, 0xd5, 0x1a, 0x2e, 0xa9, 0x35, 0x24, 0x97, 0x0e, 0x0f, 0xee, 0xb4, 0x86, 0x4b, 0x6a, 0x0d, 0xc9, 0xa5, 0xc3, 0xe7, 0x41, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0xc1, 0xb3, 0xb9, 0x41, 0x9a, 0xab, 0xd9, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x7e, 0x34, 0xdb, 0x20, 0xe9, 0x1a, 0xad, 0xd5, 0x20, 0xd9, 0xd8, 0x68, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xd9, 0xd8, 0xa8, 0x01, 0xfc, 0xc9, 0xca, 0xc6, 0xd2, 0xda, 0xc2, 0xd8, 0x40, 0xe8, 0xde, 0x40, 0xcc, 0xd8, 0xde, 0xc2, 0xe8, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xaa, 0xb3, 0xd1, 0x86, 0xbf, 0x68, 0x36, 0x48, 0x93, 0x58, 0xda, 0xf0, 0x41, 0xce, 0x06, 0xe9, 0xe5, 0x5b, 0x1b, 0x9c, 0x8a, 0x55, 0x37, 0x7c, 0x90, 0xb3, 0x41, 0x3a, 0xfe, 0xd6, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0xb1, 0xa4, 0x6a, 0x83, 0x94, 0xe5, 0xa6, 0x36, 0x28, 0x25, 0xc4, 0xd7, 0x70, 0x49, 0x6d, 0x50, 0xd4, 0x88, 0xaf, 0x41, 0xc1, 0xb3, 0x79, 0x70, 0x64, 0x56, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0xf8, 0x20, 0xb1, 0xcc, 0x69, 0xc3, 0x07, 0x39, 0x1b, 0xa4, 0xe0, 0x50, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0xe2, 0xe4, 0xb4, 0x41, 0xca, 0x72, 0xd3, 0x06, 0x09, 0x3c, 0x4e, 0x07, 0xa9, 0x9a, 0x4e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x14, 0x27, 0xa7, 0x0d, 0x8a, 0x9c, 0xd6, 0x0d, 0x92, 0x66, 0x9c, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xac, 0xa5, 0x6a, 0x83, 0xc3, 0x02, 0xdb, 0xc1, 0xa1, 0x97, 0xaf, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x28, 0xb0, 0x6e, 0x90, 0x00, 0x99, 0xb6, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0x71, 0x72, 0xda, 0xa0, 0xc8, 0x69, 0xdd, 0x20, 0x79, 0xda, 0xeb, 0x20, 0x89, 0x36, 0xad, 0xd5, 0xe0, 0xc8, 0x59, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x70, 0xe4, 0xac, 0x6d, 0x00, 0x3e, 0xcc, 0xea, 0xe6, 0xca, 0xc8, 0x40, 0xda, 0xea, 0xd8, 0xe8, 0xd2, 0xe0, 0xd8, 0xf2, 0x5a, 0xc2, 0xc8, 0xc8, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x48, 0x68, 0x58, 0xda, 0x20, 0x35, 0x05, 0x6d, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x1e, 0xa4, 0x49, 0x2c, 0xb5, 0xe1, 0x2f, 0x9a, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x42, 0x09, 0x03, 0x51, 0x01, 0x11, 0x4b, 0x01, 0x59, 0x01, 0x19, 0x3b, 0x48, 0x93, 0x58, 0xda, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xca, 0xda, 0xea, 0x0e, 0xbf, 0x9f, 0x1d, 0x7e, 0x11, 0x5a, 0x0d, 0x59, 0xe3, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x43, 0xd6, 0xb8, 0x01, 0x7c, 0xd8, 0xca, 0xe6, 0xe6, 0x5a, 0xca, 0xe2, 0xea, 0xc2, 0xd8, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x72, 0x08, 0xda, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0x0f, 0x8e, 0xcc, 0xad, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x1c, 0x32, 0x08, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0xce, 0x0e, 0x4a, 0xa7, 0xe7, 0x0d, 0xbf, 0x28, 0x6d, 0x70, 0x00, 0x52, 0xd9, 0xf0, 0x36, 0xeb, 0xe1, 0x69, 0x9d, 0x59, 0x83, 0x14, 0xe2, 0xa3, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x14, 0xe2, 0xa3, 0x06, 0xe0, 0xa7, 0xce, 0x6d, 0x0e, 0x24, 0xcd, 0x8d, 0xae, 0xec, 0xac, 0x4c, 0x0e, 0x84, 0xee, 0x0d, 0xc4, 0x8c, 0xed, 0x2d, 0x8c, 0x6e, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0x30, 0x1f, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x34, 0x89, 0xa5, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x56, 0x96, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0x71, 0x72, 0xda, 0xa0, 0xc8, 0x69, 0xdd, 0x20, 0x81, 0xc7, 0xe9, 0xf0, 0xd0, 0x4f, 0xab, 0x41, 0xd2, 0x01, 0xd4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xd2, 0x01, 0x54, 0x03, 0x3c, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x2d, 0x61, 0x69, 0xc3, 0x5f, 0x34, 0x1b, 0xa4, 0x49, 0x2c, 0x6d, 0x50, 0xec, 0x68, 0x6e, 0x90, 0x00, 0x54, 0xb6, 0xe1, 0x69, 0x9d, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x92, 0x3c, 0x9d, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x29, 0x4e, 0x4e, 0x1b, 0xa4, 0x2c, 0x37, 0x1d, 0xa4, 0xbd, 0x76, 0x6d, 0xf8, 0x20, 0x67, 0x83, 0x94, 0xe5, 0xa6, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x16, 0xc7, 0x39, 0x48, 0x3a, 0x80, 0x6a, 0x83, 0x94, 0x6f, 0xb4, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x28, 0x78, 0x36, 0x37, 0x48, 0x73, 0x35, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xc9, 0x8f, 0x66, 0x1b, 0x24, 0x7d, 0xad, 0x75, 0x38, 0xc5, 0xd6, 0x20, 0x99, 0xbc, 0x69, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x48, 0x7e, 0x6f, 0x1a, 0x80, 0x17, 0xb9, 0xb7, 0x3a, 0x37, 0x32, 0x10, 0xba, 0x37, 0x90, 0x34, 0x37, 0xba, 0xb2, 0xb3, 0x32, 0x39, 0x10, 0x33, 0xb7, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0x96, 0xb0, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0xd2, 0x24, 0x96, 0x36, 0x28, 0x76, 0x34, 0x37, 0x48, 0x00, 0x2a, 0xdb, 0xf0, 0xb4, 0xce, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x49, 0x9e, 0x4e, 0x1b, 0x24, 0x1e, 0xad, 0x6d, 0xf8, 0x20, 0x67, 0x83, 0x94, 0xe5, 0xa6, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x16, 0xc7, 0x39, 0x48, 0x26, 0x6f, 0xea, 0x20, 0x99, 0x6d, 0x6d, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x82, 0x67, 0x73, 0x83, 0x34, 0x57, 0xb3, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0xfc, 0x68, 0xb6, 0x41, 0x12, 0xf8, 0x5a, 0x87, 0x53, 0x6c, 0x0d, 0x52, 0x74, 0xa2, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x52, 0x74, 0xa2, 0x3a, 0x48, 0x19, 0x3d, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0x69, 0x09, 0x4b, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0xc1, 0xea, 0x06, 0x41, 0x7a, 0xba, 0x41, 0xe9, 0xfc, 0xbe, 0x06, 0x47, 0x7d, 0x93, 0x83, 0x94, 0xe5, 0xa6, 0x35, 0x38, 0x6a, 0x9d, 0x1c, 0xa4, 0x2c, 0x37, 0xad, 0xc1, 0x69, 0xef, 0xe4, 0xa0, 0xc8, 0x69, 0x6d, 0x35, 0x2c, 0x5a, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0xf4, 0x38, 0xa8, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0x1c, 0x82, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0xd2, 0x24, 0x96, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0xa2, 0x0f, 0xda, 0x06, 0xa7, 0x62, 0xd5, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0x8e, 0xbf, 0xb5, 0x86, 0x0f, 0x72, 0x36, 0x48, 0x0d, 0x43, 0x3b, 0x48, 0x9f, 0x44, 0xdb, 0xf0, 0x41, 0xce, 0x06, 0xa9, 0x61, 0x68, 0x1b, 0x24, 0xfe, 0xa2, 0x6d, 0xf8, 0x20, 0x67, 0x83, 0xd4, 0xfd, 0xa9, 0x35, 0x7c, 0x90, 0xb3, 0x41, 0x4a, 0x22, 0xda, 0x06, 0xa7, 0x62, 0xd5, 0x83, 0xc4, 0x5f, 0xb4, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0x92, 0x88, 0xb6, 0x41, 0x52, 0x1b, 0xda, 0x86, 0x0f, 0x72, 0x36, 0x48, 0xa9, 0x43, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x48, 0x56, 0x1d, 0xa4, 0x7b, 0xa3, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x50, 0xf0, 0x6c, 0x6e, 0x90, 0xe6, 0x6a, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x92, 0x1f, 0xcd, 0x36, 0x48, 0x26, 0x66, 0x6b, 0x35, 0x38, 0xd2, 0x2e, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0xc9, 0x8a, 0x53, 0x03, 0xf8, 0x9b, 0xb1, 0xbd, 0x85, 0xd1, 0x81, 0xd0, 0xbd, 0x81, 0x90, 0x95, 0x8d, 0xa5, 0xb5, 0x85, 0xb1, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xb4, 0x84, 0xa5, 0x0d, 0x7f, 0xd1, 0x6c, 0x90, 0x7a, 0x6d, 0xb4, 0xe1, 0x83, 0x9c, 0x0d, 0xd2, 0xcb, 0xb7, 0x36, 0x38, 0x15, 0xab, 0x6e, 0xf8, 0x20, 0x67, 0x83, 0x74, 0xfc, 0xad, 0x0d, 0x52, 0xa8, 0xd2, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x48, 0xf2, 0x74, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0xa4, 0x93, 0x32, 0x6d, 0x90, 0xb2, 0xdc, 0xb4, 0x41, 0x02, 0x8f, 0xd3, 0x41, 0xe1, 0x24, 0xbb, 0xe1, 0x17, 0x97, 0x0d, 0xd2, 0x49, 0x99, 0x36, 0x48, 0x59, 0x6e, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x71, 0x9c, 0x83, 0x23, 0xed, 0x72, 0x07, 0xc9, 0x6c, 0x6b, 0xad, 0x86, 0xf5, 0xe6, 0x0d, 0xcf, 0x93, 0x6c, 0x90, 0xb2, 0x80, 0xb5, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x3e, 0x8d, 0xbd, 0xb5, 0xc1, 0x85, 0xc9, 0xa5, 0xcd, 0xbd, 0xb9, 0xcd, 0x81, 0xc8, 0x95, 0xd1, 0xd5, 0xc9, 0xb9, 0x81, 0xf8, 0x81, 0xa4, 0xb9, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0x94, 0xd9, 0x95, 0xb9, 0xd1, 0x81, 0xbc, 0x99, 0x81, 0x84, 0x81, 0x38, 0x85, 0x39, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xe4, 0x10, 0xb4, 0x0d, 0x7f, 0xd1, 0x6c, 0x90, 0x78, 0xa8, 0xb6, 0xe1, 0x83, 0x9c, 0x0d, 0x12, 0x7d, 0xd0, 0x36, 0x28, 0x28, 0x32, 0x37, 0x28, 0x0c, 0x55, 0x37, 0x28, 0x28, 0x32, 0x37, 0x7c, 0x90, 0xb3, 0xe1, 0xaf, 0xb2, 0x0d, 0x0a, 0xd8, 0xfc, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0x8e, 0xbf, 0xb5, 0x41, 0xf2, 0x71, 0xd3, 0x86, 0x0f, 0x72, 0x36, 0x48, 0x0d, 0x43, 0xdb, 0x20, 0x99, 0x0f, 0x6d, 0xc3, 0x07, 0x39, 0x1b, 0xa4, 0xcc, 0xa2, 0xad, 0xe1, 0x83, 0x9c, 0x35, 0x3c, 0xc2, 0x7a, 0x90, 0x68, 0x8b, 0xb6, 0x41, 0x01, 0x9b, 0xbf, 0xe1, 0x83, 0x9c, 0x0d, 0x52, 0xf7, 0xa7, 0x36, 0x48, 0xe6, 0x43, 0x3b, 0x48, 0x3e, 0x6e, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0x66, 0x3d, 0x48, 0xa9, 0x43, 0xdb, 0x20, 0x99, 0x0f, 0x6d, 0xc3, 0x07, 0x39, 0x1b, 0xa4, 0x2c, 0x37, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x12, 0x19, 0x9f, 0x0e, 0xd2, 0xbd, 0xd1, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x22, 0xe3, 0xd3, 0x06, 0xe9, 0xe8, 0x68, 0x07, 0xc9, 0x6c, 0x6b, 0x87, 0x53, 0xac, 0x35, 0x28, 0x4e, 0xb5, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x8a, 0x53, 0xed, 0x0e, 0x0a, 0x6a, 0xed, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0x96, 0xb0, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0xd2, 0x24, 0x96, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x28, 0xb0, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x52, 0x9c, 0x9c, 0x36, 0x28, 0x72, 0x5a, 0x37, 0x48, 0xe0, 0x71, 0x3a, 0x28, 0x88, 0xc7, 0x0f, 0x0f, 0xfd, 0xac, 0x06, 0x69, 0x70, 0x4e, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x69, 0x70, 0x4e, 0x0d, 0xe0, 0x1b, 0x26, 0x36, 0xf7, 0xc6, 0x56, 0x47, 0x57, 0x06, 0x62, 0x17, 0xc6, 0x56, 0x57, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0xd2, 0x12, 0x96, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x9a, 0xc4, 0xd2, 0x86, 0x0f, 0x72, 0x36, 0x48, 0x00, 0x2a, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0xa4, 0x38, 0x39, 0x6d, 0x50, 0xe4, 0xb4, 0x6e, 0x90, 0x34, 0xe3, 0x74, 0x90, 0xaa, 0xe9, 0xb4, 0xe1, 0x83, 0x9c, 0x0d, 0xd2, 0xf1, 0xb7, 0x36, 0x48, 0x54, 0x0e, 0x3b, 0x38, 0x15, 0xab, 0xce, 0x02, 0x5e, 0x59, 0x18, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x90, 0x06, 0xef, 0xd6, 0x00, 0x1e, 0x65, 0x78, 0x61, 0x63, 0x74, 0x20, 0x61, 0x64, 0x64, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x39, 0x04, 0x6d, 0xc3, 0x5f, 0x34, 0x1b, 0xa4, 0x49, 0x2c, 0x6d, 0xf8, 0x20, 0x67, 0x83, 0x44, 0x1f, 0xb4, 0x0d, 0x4e, 0xc5, 0xaa, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xaf, 0x64, 0x1b, 0xa4, 0xe3, 0x6f, 0x6d, 0x90, 0x1a, 0x86, 0xd6, 0x1a, 0x3e, 0xc8, 0x59, 0xc3, 0x23, 0xac, 0x07, 0x29, 0x31, 0x6f, 0x6b, 0xf8, 0x20, 0x67, 0xc3, 0x5f, 0x65, 0x1b, 0x9e, 0xd6, 0x39, 0x38, 0x15, 0xab, 0x6e, 0xf8, 0x20, 0x67, 0x83, 0x74, 0xfc, 0xad, 0xc3, 0xcb, 0x65, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0x65, 0x16, 0x6d, 0x0d, 0x8a, 0x1d, 0xcd, 0x0d, 0x92, 0xf6, 0xdb, 0xd6, 0xa0, 0x84, 0xc7, 0xdc, 0x20, 0xc9, 0xd3, 0x69, 0xc3, 0x7b, 0x41, 0x87, 0xa7, 0x75, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x8a, 0x93, 0xd3, 0x1a, 0x3e, 0xc8, 0xd9, 0x20, 0x5d, 0xd5, 0x69, 0x0d, 0x8f, 0xb0, 0x6e, 0x90, 0xb2, 0xdc, 0xb4, 0x41, 0x32, 0x1f, 0x5a, 0x1b, 0x7e, 0x25, 0x3b, 0x48, 0x83, 0x7c, 0x3b, 0x48, 0x7b, 0xed, 0xda, 0xe0, 0xc4, 0x7e, 0xb3, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x4b, 0x58, 0xda, 0xa0, 0xd8, 0xd1, 0xdc, 0x20, 0x01, 0xa8, 0x6c, 0xc3, 0xd3, 0x3a, 0x1b, 0x14, 0x3b, 0x9a, 0x1b, 0xa4, 0xee, 0x4f, 0x6d, 0x78, 0x5a, 0x67, 0xc3, 0x2f, 0x2e, 0x1b, 0xa4, 0x38, 0x39, 0xad, 0xe1, 0x6d, 0xd6, 0x83, 0x74, 0x55, 0xa7, 0x83, 0xb4, 0xd7, 0xae, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0x52, 0x87, 0xb6, 0x86, 0x0f, 0x72, 0x36, 0x48, 0x59, 0x6e, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x3f, 0x44, 0x6d, 0x90, 0xf2, 0x8d, 0xb6, 0x41, 0x3a, 0x3a, 0xda, 0x41, 0x7a, 0x0a, 0xd4, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x7e, 0x34, 0xdb, 0x20, 0x59, 0xfd, 0xad, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0xb2, 0xdc, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xb9, 0xba, 0x3a, 0x48, 0x93, 0x7f, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x29, 0x57, 0x57, 0x1b, 0xa4, 0xa3, 0xa3, 0x6d, 0x90, 0xf2, 0x8d, 0x76, 0x90, 0x9e, 0x02, 0x75, 0x38, 0xc5, 0x6a, 0x0d, 0xe9, 0xc3, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xe0, 0xc8, 0xbb, 0x71, 0x78, 0x21, 0x68, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0x87, 0xa0, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x34, 0x89, 0xa5, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0xe8, 0x83, 0xb6, 0xc1, 0xa9, 0x58, 0x75, 0xc3, 0x07, 0x39, 0x1b, 0x24, 0xb7, 0xbc, 0x6d, 0x90, 0xa2, 0xf3, 0xb6, 0xe1, 0x83, 0x9c, 0x0d, 0x52, 0x66, 0xd1, 0xd6, 0xa0, 0xd8, 0xd1, 0xdc, 0x20, 0x69, 0xbf, 0x6d, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0xa4, 0x95, 0x65, 0x1d, 0x24, 0xba, 0xbd, 0x1d, 0x24, 0xf5, 0xbd, 0x6d, 0x70, 0x62, 0xbf, 0xd9, 0x20, 0x1d, 0xf5, 0x6d, 0xc3, 0x07, 0x39, 0x1b, 0xa4, 0xd4, 0xa1, 0xad, 0xe1, 0x83, 0x9c, 0x0d, 0x52, 0x96, 0x9b, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc9, 0x0f, 0x51, 0x1b, 0xa4, 0x7c, 0xa3, 0x6d, 0x90, 0x8e, 0x8e, 0xb6, 0x41, 0x01, 0x9b, 0xdf, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x05, 0xcf, 0xe6, 0x06, 0x69, 0xae, 0x66, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xf9, 0xd1, 0x6c, 0x83, 0x44, 0x53, 0xb8, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0xca, 0x72, 0xd3, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xe5, 0xea, 0xea, 0x20, 0xc5, 0x15, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x5c, 0x5d, 0x6d, 0x90, 0x8e, 0x8e, 0xb6, 0x41, 0xca, 0x37, 0xda, 0x41, 0xaa, 0x2d, 0xdc, 0xac, 0x41, 0x4a, 0x6d, 0xd2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x4a, 0x6d, 0x52, 0x03, 0xf0, 0x33, 0x77, 0xe6, 0x06, 0x92, 0xe6, 0x46, 0x57, 0x76, 0x56, 0x26, 0x07, 0x42, 0xf7, 0x06, 0x62, 0xc6, 0xf6, 0x16, 0x46, 0xb7, 0xe1, 0x17, 0xa5, 0x0d, 0x12, 0x7a, 0x93, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x9a, 0xc4, 0xd2, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe2, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xde, 0xd8, 0xc8, 0x0e, 0x4a, 0x21, 0xf5, 0xc3, 0x43, 0x3f, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xad, 0x2c, 0x6b, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0xe2, 0xe4, 0xb4, 0x41, 0x09, 0x47, 0xbb, 0x41, 0x02, 0x8f, 0xd3, 0xc1, 0xa1, 0x8c, 0xaf, 0xd5, 0x20, 0x85, 0x40, 0x69, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x85, 0x40, 0xa9, 0x01, 0x78, 0x91, 0x7b, 0xab, 0x73, 0x23, 0x03, 0xa1, 0x7b, 0x03, 0x49, 0x73, 0xa3, 0x2b, 0x3b, 0x2b, 0x93, 0x03, 0x01, 0x9a, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x69, 0x09, 0x4b, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0x75, 0x42, 0x69, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x71, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x64, 0xf2, 0xa6, 0x0e, 0x0f, 0xfd, 0x6c, 0x50, 0xec, 0x68, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x2a, 0x5c, 0xd7, 0xe1, 0xf3, 0xa0, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc7, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0xc5, 0x21, 0x07, 0xc9, 0xf6, 0x55, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xed, 0xde, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x4a, 0x9a, 0xd3, 0x41, 0xb2, 0x68, 0x54, 0x07, 0x69, 0xcf, 0x50, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x73, 0x2b, 0xbb, 0x3b, 0x28, 0x85, 0xd4, 0x37, 0x48, 0xe6, 0x43, 0x3b, 0xfc, 0x22, 0x74, 0x38, 0xc5, 0xd6, 0x20, 0x79, 0x4a, 0x6d, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x79, 0x4a, 0xad, 0x01, 0x7c, 0xcb, 0xf0, 0xc2, 0xc6, 0xe8, 0x40, 0xda, 0xea, 0xd8, 0xe8, 0xd2, 0xe0, 0xd8, 0xf2, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x72, 0x08, 0xda, 0x86, 0xbf, 0x68, 0x36, 0x48, 0x93, 0x58, 0xda, 0xf0, 0x41, 0xce, 0x06, 0x89, 0x3e, 0x68, 0x1b, 0x9c, 0x8a, 0x55, 0x37, 0x7c, 0x90, 0xb3, 0x41, 0x3a, 0xfe, 0xd6, 0x06, 0x09, 0x5e, 0x68, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0x35, 0x0c, 0x6d, 0x83, 0xf4, 0x51, 0xb4, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0x32, 0x8b, 0xb6, 0x41, 0xe2, 0x2f, 0xda, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0x71, 0x72, 0xda, 0x20, 0xa5, 0x0e, 0x6d, 0x83, 0xc4, 0xb6, 0xac, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x2a, 0x7a, 0xdc, 0x41, 0x0a, 0x6e, 0x54, 0xab, 0x41, 0x99, 0x86, 0xb5, 0xe1, 0x79, 0x92, 0x0d, 0x52, 0x12, 0xc7, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x5a, 0xc2, 0xd2, 0x86, 0xbf, 0x68, 0x36, 0x48, 0x93, 0x58, 0xda, 0xf0, 0x41, 0xce, 0x06, 0xe9, 0xe5, 0x5b, 0x1b, 0x9c, 0x8a, 0x55, 0x37, 0x7c, 0x90, 0xb3, 0x41, 0x3a, 0xfe, 0xd6, 0x1a, 0x3e, 0xc8, 0xd9, 0x20, 0x65, 0xb9, 0xe9, 0x20, 0x85, 0xe9, 0x6d, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x24, 0x4f, 0xa7, 0x0d, 0x12, 0x8f, 0xd6, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0xca, 0x72, 0xd3, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x8d, 0x89, 0xec, 0x20, 0x99, 0x6d, 0xed, 0xe0, 0x54, 0xac, 0x3a, 0x6b, 0x58, 0x0d, 0xdf, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0xac, 0x86, 0x37, 0x80, 0xdf, 0x99, 0x5c, 0x59, 0x18, 0x5d, 0x99, 0x5c, 0x0b, 0x1d, 0x5a, 0x98, 0xdb, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x0e, 0x41, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x89, 0x87, 0x6a, 0x07, 0x89, 0x9b, 0x6a, 0x87, 0x53, 0xac, 0x35, 0xec, 0xc4, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x76, 0xe2, 0x1b, 0xc0, 0xf3, 0x4c, 0xae, 0x2c, 0x8c, 0xae, 0x4c, 0xae, 0xa5, 0x2c, 0xae, 0x2e, 0x8c, 0x6d, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0x87, 0xa0, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xc4, 0x43, 0xb5, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0xf7, 0xa0, 0x74, 0x7a, 0x5e, 0x0d, 0x0e, 0xbf, 0xb8, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0xd2, 0x78, 0xd9, 0x00, 0x4f, 0x59, 0x5c, 0x5d, 0x18, 0xdb, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x0e, 0x41, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x89, 0x87, 0x6a, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0xd1, 0x07, 0x6d, 0x83, 0x82, 0x22, 0x73, 0x83, 0xc2, 0x50, 0x75, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x07, 0x39, 0x1b, 0xfe, 0x2a, 0xdb, 0xa0, 0xc8, 0x69, 0xdd, 0xf0, 0x41, 0xce, 0x06, 0xc9, 0x2d, 0x6f, 0x1b, 0x14, 0xb0, 0xf9, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0x65, 0x16, 0x6d, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0xb4, 0xdf, 0xb6, 0x41, 0x91, 0xd3, 0x7a, 0x50, 0xc0, 0xe6, 0x6f, 0xf8, 0x20, 0x67, 0x0d, 0xbf, 0x92, 0x6d, 0x90, 0x2e, 0x83, 0xb5, 0x41, 0x8a, 0x86, 0x5b, 0x1b, 0x14, 0xb0, 0xf9, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x8b, 0xe3, 0x1c, 0x1c, 0x7e, 0x71, 0x3b, 0x48, 0xf7, 0x46, 0x3b, 0x9c, 0x62, 0x6b, 0x68, 0xf1, 0xb1, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x1b, 0xa4, 0x2d, 0x99, 0x0d, 0xf0, 0xcf, 0xd5, 0x89, 0xd1, 0xc9, 0x85, 0x8d, 0xd1, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xe4, 0x10, 0xb4, 0x0d, 0x7f, 0xd1, 0x6c, 0x90, 0x26, 0xb1, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x78, 0x5a, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0xfc, 0x68, 0x76, 0x78, 0x0b, 0xad, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0xc0, 0x97, 0xcb, 0x63, 0x9b, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0x92, 0xb4, 0xd1, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x06, 0xbc, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x87, 0x59, 0x9a, 0x5b, 0xda, 0x1c, 0x1a, 0x08, 0x5c, 0x98, 0xdc, 0x5c, 0x9a, 0xdb, 0x19, 0x08, 0x90, 0xdc, 0xdc, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0x89, 0x0b, 0x47, 0x1b, 0xde, 0xd6, 0x19, 0x78, 0xb9, 0xb9, 0xc3, 0x43, 0x3f, 0xb3, 0xc0, 0xcb, 0x91, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xc1, 0xcb, 0x91, 0x0d, 0xc0, 0x0b, 0xd9, 0x5b, 0x9d, 0x18, 0x5b, 0x19, 0x08, 0x9c, 0x5c, 0xd9, 0x58, 0xda, 0x5c, 0xda, 0x9b, 0x1b, 0x88, 0x19, 0xdc, 0x06, 0x49, 0x0b, 0x46, 0x1b, 0x94, 0x5d, 0xb2, 0x03, 0x2f, 0x47, 0x6e, 0x90, 0x46, 0x60, 0x34, 0x1b, 0x94, 0x65, 0xd8, 0x1b, 0x24, 0x4e, 0x19, 0xcd, 0x32, 0x6b, 0x48, 0x1c, 0x6d, 0x78, 0x7c, 0x64, 0x43, 0xe2, 0x68, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1e, 0x9c, 0x5e, 0x5e, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0xc1, 0xe9, 0xe5, 0xb5, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x7a, 0x79, 0xdd, 0xf0, 0x96, 0xdd, 0x1a, 0x9e, 0xb8, 0xdb, 0xf0, 0x2c, 0xde, 0xc1, 0x21, 0x06, 0xff, 0x20, 0x29, 0xd6, 0x68, 0x35, 0x48, 0x36, 0x36, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0xa9, 0xce, 0x46, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xf4, 0xf2, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x3f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x40, 0x72, 0x64, 0x07, 0x49, 0x04, 0x47, 0xab, 0x41, 0xd2, 0xc6, 0xd1, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0x90, 0x64, 0x72, 0x34, 0x80, 0x07, 0x90, 0x1c, 0x19, 0x08, 0xdd, 0x1b, 0x88, 0x99, 0xdb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x09, 0xdf, 0x74, 0x1d, 0x24, 0x16, 0x1d, 0xad, 0x86, 0xac, 0xf1, 0x86, 0xc7, 0x47, 0x36, 0x64, 0x8d, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0xda, 0x36, 0xdd, 0x86, 0xb7, 0xec, 0x36, 0x48, 0xe9, 0xa7, 0x3b, 0x48, 0xa7, 0x3b, 0x3a, 0x9c, 0x62, 0x6b, 0x90, 0x98, 0x78, 0xb4, 0xe1, 0x17, 0xa5, 0x0d, 0x12, 0xbf, 0xea, 0x0e, 0xd2, 0x2a, 0x8f, 0x56, 0x83, 0x14, 0xe2, 0xa3, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0xc0, 0x7c, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0x4e, 0x2f, 0xaf, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x51, 0xe7, 0x36, 0x07, 0x92, 0xe6, 0x46, 0x57, 0x76, 0x56, 0x26, 0x07, 0x42, 0xf7, 0x06, 0x02, 0x24, 0x47, 0x76, 0x90, 0x64, 0x7f, 0x74, 0x38, 0xc5, 0xd6, 0xe0, 0xc8, 0x59, 0xbb, 0xe1, 0xf1, 0x91, 0x0d, 0x8e, 0x9c, 0xb5, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x24, 0x7c, 0xd3, 0x6d, 0x90, 0x88, 0x4e, 0xb7, 0x86, 0x3f, 0x97, 0x06, 0x1f, 0x0f, 0x4e, 0x2f, 0xaf, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xd3, 0xcb, 0xeb, 0x86, 0xb7, 0xec, 0x36, 0x48, 0xe9, 0xa7, 0x3b, 0x48, 0x1b, 0x42, 0x9a, 0x35, 0x2c, 0x5a, 0x6d, 0x78, 0x7c, 0x64, 0xc3, 0xa2, 0xd5, 0x86, 0x5f, 0x94, 0x36, 0x48, 0xdb, 0xa6, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0xa7, 0x97, 0xd7, 0x0d, 0x6f, 0xd9, 0x6d, 0x90, 0xd2, 0x4f, 0x77, 0x90, 0xb6, 0x87, 0xb4, 0x1a, 0x1c, 0x69, 0x97, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0xe2, 0x57, 0xdd, 0x86, 0xbf, 0x68, 0x36, 0x48, 0xbd, 0x36, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x1f, 0x20, 0x39, 0x32, 0x10, 0xba, 0x37, 0x10, 0xb2, 0xb2, 0xb1, 0xb4, 0xb6, 0x30, 0x36, 0x10, 0x33, 0xb6, 0xb7, 0x30, 0xba, 0x83, 0x54, 0x5f, 0xa4, 0xd5, 0xb0, 0xde, 0xbc, 0xe1, 0xf1, 0x91, 0x0d, 0xeb, 0xcd, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x6d, 0x9b, 0x6e, 0xc3, 0x5b, 0x76, 0x1b, 0xa4, 0xf4, 0xd3, 0x1d, 0xa4, 0xb8, 0x23, 0x1d, 0x4e, 0xb1, 0x5a, 0x43, 0xfa, 0x70, 0xc3, 0xe3, 0x23, 0x1b, 0xd2, 0x87, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x6d, 0x9b, 0x6e, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0x5e, 0x5e, 0x37, 0xbc, 0x65, 0xb7, 0x41, 0x4a, 0x3f, 0xdd, 0x41, 0xca, 0x48, 0xd2, 0x6a, 0x90, 0x56, 0x93, 0xb4, 0xe1, 0x17, 0xa5, 0x0d, 0x12, 0xbf, 0xea, 0x0e, 0x92, 0x82, 0x92, 0x56, 0xe0, 0xdb, 0xc2, 0x0d, 0x92, 0xf0, 0x92, 0x36, 0x28, 0x6a, 0xc4, 0x37, 0x48, 0x0e, 0x4c, 0x5a, 0xc3, 0x0a, 0xde, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0x90, 0xad, 0xc1, 0xc1, 0x23, 0x63, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x28, 0x5d, 0xc3, 0xe7, 0x41, 0x1b, 0x7e, 0x84, 0x19, 0xf8, 0x39, 0x32, 0x38, 0xff, 0x0f, 0xd2, 0x52, 0x93, 0x0e, 0xa7, 0x58, 0x6b, 0x90, 0x52, 0x9b, 0xb4, 0xe1, 0x17, 0xa5, 0x0d, 0x12, 0x7a, 0x93, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xe9, 0xe5, 0x75, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3e, 0xe6, 0xce, 0xdc, 0x40, 0xd2, 0xdc, 0xe8, 0xca, 0xce, 0xca, 0xe4, 0x40, 0xe8, 0xde, 0x40, 0x80, 0xe4, 0xc8, 0x0e, 0x52, 0xda, 0x93, 0x56, 0x83, 0x14, 0x02, 0xa5, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0xf8, 0x55, 0x77, 0x90, 0x00, 0xa1, 0x74, 0x38, 0xc5, 0xd6, 0xa0, 0x4c, 0xc3, 0xda, 0xf0, 0xf8, 0xc8, 0x06, 0x65, 0x1a, 0xd6, 0x86, 0x5f, 0x94, 0x36, 0x48, 0xfc, 0xaa, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0xa7, 0x97, 0xd7, 0x0d, 0x6f, 0xd9, 0x6d, 0x90, 0xd2, 0x4f, 0x77, 0x90, 0x44, 0xa7, 0x34, 0x6b, 0x58, 0x0d, 0xdf, 0xf0, 0xf8, 0xc8, 0x86, 0xd5, 0xf0, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0xb6, 0x4d, 0xb7, 0xe1, 0x2d, 0xbb, 0x0d, 0x52, 0xfa, 0xe9, 0x0e, 0xd2, 0x47, 0x95, 0x0e, 0xa7, 0xd8, 0x1a, 0x76, 0xe2, 0x37, 0x3c, 0x3e, 0xb2, 0x61, 0x27, 0x7e, 0xc3, 0x2f, 0x4a, 0x1b, 0xa4, 0x6d, 0xd3, 0x6d, 0x78, 0xcb, 0x6e, 0x83, 0x94, 0x7e, 0xba, 0x83, 0x94, 0x68, 0xa5, 0xd5, 0x20, 0xe1, 0x5c, 0x69, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x48, 0x90, 0x57, 0x1a, 0xc0, 0xc3, 0xcc, 0x0d, 0x84, 0xee, 0x0d, 0x04, 0x48, 0x8e, 0x6c, 0xc3, 0x2f, 0x4a, 0x1b, 0xa4, 0x25, 0x2c, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xd3, 0xcb, 0xeb, 0x41, 0x62, 0xc8, 0xd2, 0xac, 0xc1, 0xe1, 0x17, 0x77, 0xc3, 0xe3, 0x23, 0x1b, 0x1c, 0x7e, 0x71, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0xda, 0x36, 0xdd, 0x86, 0xb7, 0xec, 0x36, 0x48, 0xe9, 0xa7, 0x3b, 0x48, 0x9b, 0x5a, 0x3a, 0x9c, 0x62, 0x6b, 0x68, 0xf1, 0xb1, 0xe1, 0xf1, 0x91, 0x0d, 0x2d, 0x3e, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xda, 0x36, 0xdd, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xbd, 0xbc, 0x6e, 0x78, 0xcb, 0x6e, 0x83, 0x94, 0x7e, 0xba, 0x83, 0x84, 0xc6, 0xa5, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0xe0, 0xe5, 0xe6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xe0, 0xe5, 0xe6, 0x06, 0xe0, 0x65, 0x2e, 0xcd, 0xed, 0x8c, 0xad, 0x0c, 0x04, 0x4e, 0xae, 0x6c, 0x2c, 0x6d, 0x2e, 0xed, 0xcd, 0x0d, 0xc4, 0x0c, 0x6e, 0x83, 0xb2, 0x4b, 0x76, 0xe0, 0xe5, 0xe6, 0x0d, 0xd2, 0x08, 0x8c, 0x66, 0x83, 0xa4, 0x05, 0xa3, 0x0d, 0xcf, 0x93, 0x6c, 0x90, 0x42, 0x61, 0xb4, 0x41, 0x59, 0x86, 0xbd, 0x41, 0xe2, 0x94, 0xd1, 0x2c, 0xb3, 0x86, 0xc4, 0xd1, 0x86, 0xc7, 0x47, 0x36, 0x24, 0x8e, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0xc1, 0x31, 0xe0, 0x75, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x1e, 0x1c, 0x03, 0x5e, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0xc7, 0x80, 0xd7, 0x0d, 0x6f, 0xd9, 0xad, 0xe1, 0x89, 0xbb, 0x0d, 0xcf, 0xe2, 0x1d, 0x9c, 0xf4, 0xf5, 0x0f, 0x92, 0x62, 0x8d, 0x56, 0x83, 0x64, 0x63, 0xa3, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0xea, 0x6c, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0x8e, 0x01, 0xaf, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x43, 0x56, 0x36, 0x96, 0xd6, 0x16, 0xc6, 0x06, 0x62, 0xc6, 0xf6, 0x16, 0x46, 0x07, 0x42, 0xf7, 0x06, 0x02, 0x24, 0x37, 0x77, 0x90, 0x44, 0x70, 0xb4, 0x1a, 0x24, 0x6d, 0x1c, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0x49, 0x26, 0x47, 0x03, 0x78, 0x00, 0xc9, 0xcd, 0x81, 0xd0, 0xbd, 0x81, 0x98, 0xb9, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x90, 0x28, 0x87, 0xd7, 0x41, 0x62, 0xd1, 0xd1, 0x6a, 0xc8, 0x1a, 0x6f, 0x78, 0x7c, 0x64, 0x43, 0xd6, 0x78, 0xc3, 0x2f, 0x4a, 0x1b, 0xa4, 0xbb, 0xe1, 0x6d, 0x78, 0xcb, 0x6e, 0x83, 0x54, 0x48, 0xbc, 0x83, 0x74, 0xba, 0xa3, 0xc3, 0x29, 0xb6, 0x06, 0x89, 0x89, 0x47, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x61, 0x1e, 0xef, 0x20, 0xad, 0xf2, 0x68, 0x35, 0x48, 0x21, 0x3e, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0x09, 0xcc, 0x47, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x18, 0xf0, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1f, 0x75, 0x6e, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x40, 0x72, 0x73, 0x07, 0x49, 0xf6, 0x47, 0x87, 0x53, 0x6c, 0x0d, 0x8e, 0x9c, 0xb5, 0x1b, 0x1e, 0x1f, 0xd9, 0xe0, 0xc8, 0x59, 0xbb, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0xa2, 0x1c, 0xde, 0x06, 0x09, 0x7c, 0x78, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf1, 0xe0, 0x18, 0xf0, 0xda, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x06, 0xbc, 0x6e, 0x78, 0xcb, 0x6e, 0x83, 0x54, 0x48, 0xbc, 0x83, 0xb4, 0x21, 0xa4, 0x59, 0xc3, 0xa2, 0xd5, 0x86, 0xc7, 0x47, 0x36, 0x2c, 0x5a, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x74, 0x37, 0xbc, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x0c, 0x78, 0xdd, 0xf0, 0x96, 0xdd, 0x06, 0xa9, 0x90, 0x78, 0x07, 0x69, 0x7b, 0x48, 0xab, 0xc1, 0x91, 0x76, 0x79, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0xcc, 0xe3, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xd4, 0x6b, 0xa3, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x01, 0x92, 0x9b, 0x03, 0xa1, 0x7b, 0x03, 0x21, 0x2b, 0x1b, 0x4b, 0x6b, 0x0b, 0x63, 0x03, 0x31, 0x63, 0x7b, 0x0b, 0xa3, 0x3b, 0x48, 0xf5, 0x45, 0x5a, 0x0d, 0xeb, 0xcd, 0x1b, 0x1e, 0x1f, 0xd9, 0xb0, 0xde, 0xbc, 0xe1, 0x17, 0xa5, 0x0d, 0xd2, 0xdd, 0xf0, 0x36, 0xbc, 0x65, 0xb7, 0x41, 0x2a, 0x24, 0xde, 0x41, 0x8a, 0x3b, 0xd2, 0xe1, 0x14, 0xab, 0x35, 0xa4, 0x0f, 0x37, 0x3c, 0x3e, 0xb2, 0x21, 0x7d, 0xb8, 0xe1, 0x17, 0xa5, 0x0d, 0xd2, 0xdd, 0xf0, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x31, 0xe0, 0x75, 0xc3, 0x5b, 0x76, 0x1b, 0xa4, 0x42, 0xe2, 0x1d, 0xa4, 0x8c, 0x24, 0xad, 0x06, 0x69, 0x35, 0x49, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x61, 0x1e, 0xef, 0x20, 0x29, 0x28, 0x69, 0x05, 0xbe, 0x2d, 0xdc, 0x20, 0x09, 0x2f, 0x69, 0x83, 0xa2, 0x46, 0x7c, 0x83, 0xe4, 0xc0, 0xa4, 0x35, 0xac, 0xe0, 0x1d, 0x1c, 0x56, 0xe6, 0xd6, 0xe0, 0xe0, 0x91, 0xb1, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0xec, 0xd6, 0xf0, 0x79, 0xd0, 0x86, 0x1f, 0x61, 0x06, 0x7e, 0x8e, 0x0c, 0xc2, 0x7f, 0x90, 0x96, 0x9a, 0x74, 0x38, 0xc5, 0x5a, 0x83, 0x94, 0xda, 0xa4, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0xd0, 0x9b, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0x8e, 0x01, 0xaf, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x31, 0x77, 0xe6, 0x06, 0x92, 0xe6, 0x46, 0x57, 0x76, 0x56, 0x26, 0x07, 0x42, 0xf7, 0x06, 0x02, 0x24, 0x37, 0x77, 0x90, 0xd2, 0x9e, 0xb4, 0x1a, 0xa4, 0x10, 0x28, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x84, 0x79, 0xbc, 0x83, 0x04, 0x08, 0xa5, 0xc3, 0x29, 0xb6, 0x06, 0x65, 0x1a, 0xd6, 0x86, 0xc7, 0x47, 0x36, 0x28, 0xd3, 0xb0, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xc2, 0x3c, 0xde, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x06, 0xbc, 0x6e, 0x78, 0xcb, 0x6e, 0x83, 0x54, 0x48, 0xbc, 0x83, 0x24, 0x3a, 0xa5, 0x59, 0xc3, 0x6a, 0xf8, 0x86, 0xc7, 0x47, 0x36, 0xac, 0x86, 0x6f, 0xf8, 0x45, 0x69, 0x83, 0x74, 0x37, 0xbc, 0x0d, 0x6f, 0xd9, 0x6d, 0x90, 0x0a, 0x89, 0x77, 0x90, 0x3e, 0xaa, 0x74, 0x38, 0xc5, 0xd6, 0xb0, 0x13, 0xbf, 0xe1, 0xf1, 0x91, 0x0d, 0x3b, 0xf1, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0xdd, 0x0d, 0x6f, 0xc3, 0x5b, 0x76, 0x1b, 0xa4, 0x42, 0xe2, 0x1d, 0xa4, 0x44, 0x2b, 0xad, 0x06, 0x09, 0xe7, 0x4a, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0x82, 0xbc, 0xd2, 0x00, 0x1e, 0x66, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x40, 0x72, 0x73, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x2d, 0x61, 0x69, 0xc3, 0x5f, 0x34, 0x1b, 0x1c, 0x03, 0x5e, 0x0f, 0x12, 0x43, 0x96, 0x66, 0x0d, 0x0e, 0xbf, 0xb8, 0x1b, 0x1e, 0x1f, 0xd9, 0xe0, 0xf0, 0x8b, 0xbb, 0xe1, 0x17, 0xa5, 0x0d, 0xd2, 0xdd, 0xf0, 0x36, 0xbc, 0x65, 0xb7, 0x41, 0x2a, 0x24, 0xde, 0x41, 0xda, 0xd4, 0xd2, 0xe1, 0x14, 0x5b, 0x43, 0x8b, 0x8f, 0x0d, 0x8f, 0x8f, 0x6c, 0x68, 0xf1, 0xb1, 0xe1, 0x17, 0xa5, 0x0d, 0xd2, 0xdd, 0xf0, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x31, 0xe0, 0x75, 0xc3, 0x5b, 0x76, 0x1b, 0xa4, 0x42, 0xe2, 0x1d, 0x24, 0x34, 0x2e, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x36, 0x0b, 0xf8, 0x72, 0x6c, 0x79, 0xf1, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x44, 0x34, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xa9, 0xd7, 0x46, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x01, 0x27, 0x57, 0x06, 0x07, 0x02, 0x24, 0x17, 0x07, 0x62, 0xf6, 0x26, 0x07, 0x02, 0x27, 0x97, 0xe6, 0x46, 0xb7, 0xe1, 0xdd, 0x9e, 0x35, 0x3c, 0x28, 0xb9, 0x41, 0x7a, 0x31, 0xd2, 0x86, 0xb7, 0x75, 0x06, 0x5e, 0x2e, 0xee, 0xf0, 0xd0, 0xcf, 0xe1, 0x14, 0x6b, 0x01, 0x5f, 0x8e, 0x2d, 0x8f, 0xdc, 0xf0, 0x8b, 0xd2, 0x06, 0x09, 0xdf, 0x74, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0xf5, 0xda, 0x68, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3e, 0xe0, 0xe4, 0xca, 0xe0, 0x40, 0x80, 0xe4, 0xc8, 0x40, 0xcc, 0xde, 0xe4, 0x40, 0xe0, 0xe4, 0xd2, 0xdc, 0xe8, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0x37, 0x48, 0x2f, 0x46, 0xda, 0xf0, 0xb6, 0xce, 0xc0, 0xcb, 0x91, 0x1d, 0x1e, 0xfa, 0x59, 0x01, 0x5f, 0x2e, 0x8f, 0x0d, 0xdd, 0xf0, 0x8b, 0xd2, 0x06, 0x49, 0xd2, 0x46, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xd0, 0xf5, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x40, 0x72, 0x68, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x1b, 0x24, 0x2e, 0x1c, 0x1d, 0x24, 0x94, 0x2f, 0x1d, 0x1e, 0xfa, 0x99, 0x05, 0x7c, 0x39, 0xb6, 0xbc, 0x79, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0xca, 0xe1, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xd4, 0x6b, 0xa3, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x80, 0x93, 0x2b, 0x83, 0x03, 0x01, 0x92, 0x9b, 0x03, 0x31, 0x7b, 0x93, 0x03, 0x81, 0x93, 0x4b, 0x73, 0xa3, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0xdc, 0x20, 0xbd, 0x18, 0xe9, 0x20, 0x45, 0x90, 0xee, 0xf0, 0xd0, 0xcf, 0xe1, 0x14, 0x5b, 0xe0, 0xe5, 0xd0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xe0, 0xe5, 0xd0, 0x06, 0xe0, 0x01, 0x2d, 0x8c, 0xcd, 0x0c, 0x04, 0x4e, 0xae, 0x6c, 0x2c, 0x6d, 0x2e, 0xed, 0xcd, 0x0d, 0xc4, 0x0c, 0x6e, 0x83, 0xb2, 0x4b, 0x76, 0xe0, 0xe5, 0xd0, 0x0d, 0xd2, 0x08, 0x8c, 0x66, 0x83, 0xa4, 0x05, 0xa3, 0x0d, 0xcf, 0x93, 0x6c, 0x90, 0x42, 0x61, 0xb4, 0x41, 0x59, 0x86, 0xbd, 0x41, 0xe2, 0x94, 0xd1, 0x2c, 0xb3, 0x86, 0xc4, 0xd1, 0x86, 0xc7, 0x47, 0x36, 0x24, 0x8e, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x48, 0x6b, 0x5d, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x8b, 0x07, 0x87, 0xae, 0xd7, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xa1, 0xeb, 0x75, 0xc3, 0x5b, 0x76, 0x6b, 0x78, 0xe2, 0x6e, 0xc3, 0xb3, 0x78, 0x07, 0x67, 0x3e, 0xff, 0x83, 0xa4, 0x58, 0xa3, 0xd5, 0x20, 0xd9, 0xd8, 0x68, 0xc3, 0x2f, 0x4a, 0x1b, 0xa4, 0x3a, 0x1b, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x43, 0xd7, 0xeb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xfc, 0x90, 0x95, 0x8d, 0xa5, 0xb5, 0x85, 0xb1, 0x81, 0x98, 0xb1, 0xbd, 0x85, 0xd1, 0x81, 0xd0, 0xbd, 0x81, 0x00, 0xc9, 0xa1, 0x1d, 0x24, 0x11, 0x1c, 0xad, 0x06, 0x49, 0x1b, 0x47, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0x92, 0xc9, 0xd1, 0x00, 0x1e, 0x40, 0x72, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x66, 0x6e, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xa4, 0xb5, 0x2e, 0x75, 0x90, 0x58, 0x74, 0xb4, 0x1a, 0xb2, 0xc6, 0x1b, 0x1e, 0x1f, 0xd9, 0x90, 0x35, 0xde, 0xf0, 0x8b, 0xd2, 0x06, 0xe9, 0x13, 0x7d, 0x1b, 0xde, 0xb2, 0xdb, 0x20, 0x0d, 0xa6, 0xef, 0x20, 0x9d, 0xee, 0xe8, 0x70, 0x8a, 0xad, 0x41, 0x62, 0xe2, 0xd1, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x96, 0xec, 0x3b, 0x48, 0xab, 0x3c, 0x5a, 0x0d, 0x52, 0x88, 0x8f, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x02, 0xf3, 0xd1, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x74, 0xbd, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x47, 0x9d, 0xdb, 0x1c, 0x48, 0x9a, 0x1b, 0x5d, 0xd9, 0x59, 0x99, 0x1c, 0x08, 0xdd, 0x1b, 0x08, 0x90, 0x1c, 0xda, 0x41, 0x92, 0xfd, 0xd1, 0xe1, 0x14, 0x5b, 0x83, 0x23, 0x67, 0xed, 0x86, 0xc7, 0x47, 0x36, 0x38, 0x72, 0xd6, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x90, 0xd6, 0xba, 0xb4, 0x41, 0xf2, 0x46, 0xdf, 0x1a, 0xfe, 0x5c, 0x1a, 0x7c, 0x3c, 0x38, 0x74, 0xbd, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x0e, 0x5d, 0xaf, 0x1b, 0xde, 0xb2, 0xdb, 0x20, 0x0d, 0xa6, 0xef, 0x20, 0x6d, 0x08, 0x69, 0xd6, 0xb0, 0x68, 0xb5, 0xe1, 0xf1, 0x91, 0x0d, 0x8b, 0x56, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x7d, 0xa2, 0x6f, 0xc3, 0x5f, 0x34, 0x1b, 0x1c, 0xba, 0x5e, 0x37, 0xbc, 0x65, 0xb7, 0x41, 0x1a, 0x4c, 0xdf, 0x41, 0xda, 0x1e, 0xd2, 0x0a, 0x78, 0x74, 0x6f, 0xf3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xaa, 0x98, 0x5f, 0x03, 0xf8, 0x00, 0xc9, 0xa1, 0x81, 0xd0, 0xbd, 0x81, 0x00, 0xc9, 0xcd, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x64, 0xc9, 0xbe, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x41, 0xc9, 0x0d, 0x92, 0x51, 0x96, 0x0e, 0x52, 0x04, 0xe9, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc9, 0x4c, 0x47, 0x87, 0x87, 0x7e, 0x9a, 0x35, 0x38, 0xd2, 0x2e, 0x6f, 0xf8, 0x45, 0x69, 0x83, 0x64, 0xc9, 0xbe, 0x0d, 0x7f, 0xd1, 0x6c, 0x90, 0x7a, 0x6d, 0xb4, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x3f, 0x40, 0x72, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x07, 0xa9, 0xbe, 0x48, 0xab, 0x61, 0xbd, 0x79, 0xc3, 0xe3, 0x23, 0x1b, 0xd6, 0x9b, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0xfa, 0x44, 0xdf, 0x86, 0xb7, 0xec, 0x36, 0x48, 0x83, 0xe9, 0x3b, 0x48, 0x71, 0x47, 0x3a, 0x9c, 0x62, 0xb5, 0x86, 0xf4, 0xe1, 0x86, 0xc7, 0x47, 0x36, 0xa4, 0x0f, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0xfa, 0x44, 0xdf, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x74, 0xbd, 0x6e, 0x78, 0xcb, 0x6e, 0x83, 0x34, 0x98, 0xbe, 0x83, 0x94, 0x91, 0xa4, 0xd5, 0x20, 0xad, 0x26, 0x69, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0x4b, 0xf6, 0x1d, 0x24, 0x05, 0x25, 0xad, 0xc0, 0xb7, 0x85, 0x1b, 0x24, 0xe1, 0x25, 0x6d, 0x50, 0xd4, 0x88, 0x6f, 0x90, 0x1c, 0x98, 0xb4, 0x86, 0x15, 0xbc, 0x83, 0xc3, 0x02, 0xdb, 0x1a, 0x1c, 0x3c, 0x32, 0x0e, 0x52, 0x5e, 0xab, 0xd6, 0xf0, 0x79, 0xd0, 0x86, 0x1f, 0x61, 0x06, 0x7e, 0x8e, 0x0c, 0xf3, 0x83, 0xb4, 0xd4, 0xa4, 0xc3, 0x29, 0xd6, 0x1a, 0xa4, 0xd4, 0x26, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x84, 0xde, 0xa4, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xe8, 0x7a, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x8f, 0xb9, 0x33, 0x37, 0x90, 0x34, 0x37, 0xba, 0xb2, 0xb3, 0x32, 0x39, 0x10, 0xba, 0x37, 0x10, 0x20, 0x39, 0xb4, 0x83, 0x94, 0xf6, 0xa4, 0xd5, 0x20, 0x85, 0x40, 0x69, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0x4b, 0xf6, 0x1d, 0x24, 0x40, 0x28, 0x1d, 0x4e, 0xb1, 0x05, 0x3c, 0xb3, 0xb7, 0x79, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x11, 0xf5, 0xaf, 0x01, 0x7c, 0x80, 0xe4, 0xe6, 0x40, 0xe8, 0xde, 0x40, 0x80, 0xe4, 0xd0, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xc2, 0x3c, 0xde, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x46, 0x59, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0x83, 0x64, 0xa6, 0xa3, 0x83, 0x14, 0x41, 0xba, 0xc3, 0x43, 0x3f, 0xcd, 0x1a, 0x94, 0x69, 0x58, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0x4c, 0xc3, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0xc9, 0x92, 0x7d, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xd0, 0xf5, 0xba, 0xe1, 0x2d, 0xbb, 0x0d, 0xd2, 0x60, 0xfa, 0x0e, 0x92, 0xe8, 0x94, 0x66, 0x0d, 0xab, 0xe1, 0x1b, 0x1e, 0x1f, 0xd9, 0xb0, 0x1a, 0xbe, 0xe1, 0x17, 0xa5, 0x0d, 0xd2, 0x27, 0xfa, 0x36, 0xbc, 0x65, 0xb7, 0x41, 0x1a, 0x4c, 0xdf, 0x41, 0xfa, 0xa8, 0xd2, 0xe1, 0x14, 0x5b, 0xc3, 0x4e, 0xfc, 0x86, 0xc7, 0x47, 0x36, 0xec, 0xc4, 0x6f, 0xf8, 0x45, 0x69, 0x83, 0xf4, 0x89, 0xbe, 0x0d, 0x6f, 0xd9, 0x6d, 0x90, 0x06, 0xd3, 0x77, 0x90, 0x12, 0xad, 0xb4, 0x1a, 0x24, 0x9c, 0x2b, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0x09, 0xf2, 0x4a, 0x03, 0x78, 0x98, 0xb9, 0x81, 0xd0, 0xbd, 0x81, 0x00, 0xc9, 0xa1, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xb4, 0x84, 0xa5, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xe8, 0x7a, 0x3d, 0x48, 0x0c, 0x59, 0x9a, 0x35, 0x38, 0xfc, 0xe2, 0x6e, 0x78, 0x7c, 0x64, 0x83, 0xc3, 0x2f, 0xee, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x9f, 0xe8, 0xdb, 0xf0, 0x96, 0xdd, 0x06, 0x69, 0x30, 0x7d, 0x07, 0x69, 0x53, 0x4b, 0x87, 0x53, 0x6c, 0x0d, 0x2d, 0x3e, 0x36, 0x3c, 0x3e, 0xb2, 0xa1, 0xc5, 0xc7, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x9f, 0xe8, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x87, 0xae, 0xd7, 0x0d, 0x6f, 0xd9, 0x6d, 0x90, 0x06, 0xd3, 0x77, 0x90, 0xd0, 0xb8, 0x74, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0xc0, 0x97, 0xcb, 0x63, 0x23, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0x92, 0xb4, 0xd1, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xbd, 0xbc, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x87, 0x59, 0x9a, 0x5b, 0xda, 0x1c, 0x1a, 0x08, 0x5c, 0x98, 0xdc, 0x5c, 0x9a, 0xdb, 0x19, 0x08, 0x90, 0x1c, 0xd9, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0x89, 0x0b, 0x47, 0x07, 0x89, 0x2c, 0x7c, 0x87, 0x87, 0x7e, 0x66, 0x81, 0x37, 0x33, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x37, 0x33, 0x1b, 0x80, 0x8f, 0xb4, 0xb2, 0xb2, 0x32, 0x90, 0x9b, 0x1a, 0x1a, 0x10, 0xb3, 0x37, 0xb9, 0xb6, 0x30, 0x3a, 0x10, 0x33, 0xb8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x6f, 0xc5, 0xcc, 0x5c, 0x09, 0xc0, 0x43, 0x3a, 0xb4, 0xb4, 0x39, 0x90, 0xb1, 0x37, 0xb9, 0x32, 0x10, 0xb4, 0xb0, 0x39, 0x10, 0xb7, 0x37, 0x90, 0xba, 0xb9, 0x32, 0x90, 0xb7, 0x3a, 0xba, 0xb9, 0x34, 0xb2, 0x32, 0x90, 0x37, 0x33, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb3, 0x3a, 0xb7, 0x31, 0xba, 0xb4, 0x37, 0xb7, 0x30, 0xb6, 0x34, 0xba, 0x7c, 0x09, 0xc0, 0x17, 0x38, 0xb9, 0x37, 0xbb, 0x34, 0xb2, 0x32, 0x32, 0x10, 0xba, 0x37, 0x90, 0x95, 0x15, 0x39, 0x32, 0x16, 0x90, 0x95, 0x15, 0xb9, 0x39, 0x16, 0x90, 0x95, 0x15, 0xb9, 0x38, 0x16, 0x90, 0x30, 0x37, 0x32, 0x90, 0x95, 0x15, 0x39, 0xb4, 0x95, 0x00, 0xbc, 0xb9, 0xeb, 0xb9, 0x4b, 0x23, 0xa3, 0x43, 0xd3, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x4b, 0xa3, 0x9b, 0x03, 0x49, 0x73, 0x03, 0x29, 0xc3, 0x83, 0x7b, 0x73, 0x2b, 0x73, 0xa3, 0x03, 0x31, 0x4b, 0x2b, 0x63, 0x23, 0x97, 0x00, 0xbc, 0x81, 0xeb, 0x81, 0x93, 0x2b, 0x1b, 0x4b, 0x9b, 0x4b, 0x7b, 0x73, 0xd3, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x4b, 0xa3, 0x9b, 0x03, 0x49, 0x73, 0x03, 0x31, 0x93, 0x0b, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0x03, 0x31, 0x4b, 0x2b, 0x63, 0x23, 0x97, 0x00, 0xbc, 0x13, 0xeb, 0x11, 0x4b, 0x0b, 0x9b, 0xd3, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, 0x23, 0x23, 0x2b, 0x23, 0x03, 0xa1, 0x7b, 0x03, 0x29, 0xc3, 0x83, 0x7b, 0x73, 0x2b, 0x73, 0xa3, 0x03, 0xb9, 0x43, 0x2b, 0x73, 0x03, 0x99, 0xa3, 0x7b, 0x93, 0x4b, 0x73, 0x3b, 0x97, 0x00, 0xfe, 0xe5, 0x7a, 0xe4, 0xde, 0xea, 0xdc, 0xc8, 0xd2, 0xdc, 0xce, 0x40, 0xda, 0xde, 0xc8, 0xca, 0x74, 0x40, 0xe6, 0xc2, 0xda, 0xca, 0x40, 0xc2, 0xe6, 0x40, 0xd2, 0xdc, 0x40, 0x56, 0x56, 0xcc, 0xd8, 0xda, 0xa0, 0x2c, 0xc3, 0x5e, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0xa4, 0x1b, 0xa6, 0x0d, 0x92, 0x48, 0x98, 0x0e, 0xd2, 0xa9, 0xb7, 0x36, 0x48, 0x08, 0x62, 0x6a, 0x96, 0x59, 0x43, 0xe2, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xa4, 0xf8, 0x64, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0x5f, 0xd4, 0x6c, 0xa8, 0xe3, 0xe1, 0xf2, 0x1a, 0xfe, 0x5c, 0x1a, 0x5c, 0x3c, 0x48, 0xe8, 0x13, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x5a, 0x78, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0xdc, 0x20, 0x78, 0x6a, 0x37, 0xbc, 0xad, 0x33, 0xf0, 0x70, 0x61, 0x1b, 0x24, 0x66, 0xfa, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x92, 0x99, 0x8e, 0x0e, 0x6f, 0xa1, 0xd5, 0x6a, 0x90, 0x6c, 0x6c, 0xb4, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x1b, 0x24, 0x5a, 0xa4, 0x0d, 0xc0, 0x0b, 0x59, 0xd9, 0x58, 0x5a, 0x5b, 0x18, 0x1b, 0x88, 0x19, 0xdb, 0x5b, 0x18, 0x1d, 0x08, 0xdd, 0x1b, 0x08, 0x90, 0xdc, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x75, 0x36, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x87, 0x16, 0x9e, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0x37, 0x48, 0x5c, 0x38, 0x3a, 0x48, 0x0a, 0x15, 0x3c, 0x3c, 0xf4, 0xd3, 0x6a, 0x90, 0xb4, 0x71, 0xb4, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x1b, 0x24, 0x99, 0x1c, 0x0d, 0xf0, 0x03, 0xc9, 0x81, 0xd0, 0xbd, 0x81, 0x98, 0xb9, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x90, 0x7a, 0x27, 0xd8, 0x86, 0xbf, 0x68, 0x36, 0x48, 0x93, 0x58, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x9b, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x24, 0x9a, 0xdd, 0xf0, 0xe0, 0xcd, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0xe0, 0xcd, 0x06, 0xa7, 0x8b, 0x8c, 0x0e, 0x0f, 0xfd, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xcb, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x12, 0xcd, 0x6e, 0x78, 0xf0, 0x66, 0x0d, 0xbf, 0xb8, 0x6c, 0x70, 0xba, 0xc8, 0x38, 0x38, 0xfe, 0xb8, 0x1c, 0x1e, 0xfa, 0x69, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x79, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0xd1, 0x1e, 0x1d, 0x1e, 0xfa, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0x9c, 0x80, 0x3e, 0x3c, 0x78, 0xb3, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0xc5, 0x48, 0xed, 0xe1, 0xc1, 0x9b, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x8a, 0x93, 0xd3, 0x06, 0x87, 0x73, 0xbe, 0x83, 0xd4, 0xa2, 0xb6, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0xe2, 0xe4, 0xb4, 0xc1, 0xe1, 0x9c, 0x6f, 0x0d, 0x6f, 0xeb, 0x0c, 0x7c, 0x5b, 0xd9, 0x41, 0x61, 0xd5, 0xbd, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x39, 0x01, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x12, 0x43, 0xb2, 0x36, 0x3c, 0x78, 0xb3, 0xc1, 0x21, 0xbf, 0xe5, 0xa0, 0x20, 0x1e, 0x5f, 0xc3, 0x07, 0x39, 0x1b, 0x24, 0x5a, 0x0e, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x12, 0x4b, 0xaa, 0x0e, 0x4e, 0xf2, 0x7c, 0x07, 0xa7, 0x62, 0xd5, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe3, 0x01, 0xbf, 0x6d, 0x6c, 0x8c, 0xdd, 0x20, 0x61, 0xfb, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x28, 0xff, 0x74, 0x50, 0x66, 0x4b, 0x6f, 0x90, 0xd0, 0x3b, 0xb8, 0x41, 0xca, 0x90, 0x53, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xcb, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xf9, 0x21, 0x6a, 0x83, 0x62, 0xa4, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x68, 0xf7, 0x1e, 0xa4, 0x27, 0x0d, 0xb6, 0xe1, 0x17, 0x97, 0x0d, 0x52, 0x9c, 0x9c, 0x36, 0x38, 0x9c, 0xf3, 0x6d, 0x70, 0x3a, 0x12, 0x39, 0x38, 0xf4, 0xf5, 0xad, 0x86, 0xac, 0xf1, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0x90, 0x8c, 0xa6, 0x36, 0x80, 0x17, 0x5b, 0xd9, 0xdc, 0x5c, 0x4b, 0x59, 0x5c, 0x5d, 0x18, 0xdb, 0xdc, 0x86, 0x5f, 0x94, 0x36, 0x48, 0xa0, 0x13, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0xc7, 0xd8, 0xb1, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0x37, 0x7c, 0xf1, 0x7b, 0x90, 0x14, 0x2a, 0x78, 0x90, 0x82, 0x2a, 0x78, 0x90, 0x6a, 0x0b, 0x77, 0x38, 0xc5, 0xd6, 0x20, 0x31, 0xf1, 0x68, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x31, 0xf1, 0xa8, 0x83, 0x94, 0xd1, 0xa3, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0xc0, 0x31, 0xb8, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0xf8, 0x37, 0x67, 0xc3, 0x83, 0x37, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x24, 0x9a, 0xdd, 0xf0, 0xe0, 0xcd, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x3f, 0x44, 0x1d, 0xa4, 0x95, 0x0d, 0x1e, 0x14, 0xc4, 0xe3, 0x87, 0x87, 0x7e, 0x56, 0x83, 0x14, 0xe2, 0xa3, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0x20, 0xf9, 0x57, 0x6d, 0x00, 0x1e, 0xea, 0xdc, 0xe6, 0x40, 0xd2, 0xdc, 0xe8, 0xca, 0xce, 0xca, 0xe4, 0x40, 0xe8, 0xde, 0x40, 0x80, 0xe4, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x02, 0xf3, 0xd1, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x46, 0x59, 0x3a, 0x48, 0xad, 0x57, 0x3b, 0x9c, 0x62, 0x6b, 0x70, 0xe4, 0xac, 0xdd, 0xf0, 0x3c, 0xc9, 0x06, 0x49, 0xf0, 0x69, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xa4, 0xde, 0x09, 0x6e, 0x90, 0x52, 0x28, 0xb8, 0x86, 0x3f, 0x97, 0x06, 0x1f, 0x0f, 0x12, 0xfa, 0x04, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x87, 0x16, 0x9e, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0x37, 0x48, 0x55, 0x42, 0x3a, 0x48, 0x0a, 0x15, 0xdc, 0x20, 0x31, 0xd3, 0x6f, 0x83, 0x54, 0x56, 0xc1, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x32, 0xd3, 0xd1, 0xe1, 0x17, 0xa1, 0x9a, 0x35, 0x2c, 0x5a, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0xf4, 0x38, 0xa8, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0x40, 0x27, 0xb8, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x2d, 0x3c, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0x0a, 0xac, 0x07, 0x49, 0xa1, 0x82, 0x07, 0x29, 0xa8, 0x82, 0xad, 0x06, 0x47, 0xda, 0xe5, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0x20, 0x59, 0x71, 0x6a, 0x00, 0x5e, 0x80, 0xe4, 0x40, 0xe8, 0xde, 0x40, 0xc8, 0xca, 0xc6, 0xd2, 0xda, 0xc2, 0xd8, 0x40, 0xcc, 0xd8, 0xde, 0xc2, 0xe8, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x02, 0xc7, 0xe0, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0xe9, 0xc5, 0x48, 0x07, 0x49, 0xa1, 0x82, 0x07, 0x49, 0x99, 0x7e, 0xab, 0x61, 0xbd, 0x79, 0xc3, 0xf3, 0x24, 0x1b, 0xa4, 0x2c, 0x60, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x04, 0x3a, 0xc1, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x8c, 0x1d, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0xc3, 0x17, 0x67, 0x07, 0x49, 0xa1, 0x82, 0x07, 0x29, 0xa8, 0x82, 0x07, 0xa9, 0xb6, 0x70, 0x2b, 0xf0, 0x6d, 0xe5, 0x86, 0xe7, 0x49, 0x36, 0x48, 0x39, 0x1b, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x49, 0xe5, 0x50, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa4, 0x72, 0xa8, 0x0d, 0x52, 0x51, 0xa5, 0x0e, 0x6f, 0xa1, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x12, 0xe5, 0x9f, 0x0e, 0xd2, 0x93, 0x06, 0x3b, 0x9c, 0x62, 0xb5, 0x06, 0x63, 0x05, 0x7f, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x38, 0xd8, 0xe2, 0x0c, 0xc0, 0x8f, 0x99, 0x1b, 0x08, 0xdd, 0x1b, 0x08, 0x90, 0x1c, 0x88, 0xdb, 0x1b, 0x88, 0xdc, 0x5b, 0x9d, 0x1b, 0x59, 0x9a, 0xdb, 0xd9, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x4b, 0x58, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x09, 0x7d, 0x82, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0x1d, 0x7f, 0x6b, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe3, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x1a, 0xf0, 0x6e, 0x90, 0x32, 0x34, 0xb8, 0x41, 0xaa, 0xf4, 0x60, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0x65, 0xb9, 0x69, 0x83, 0xd3, 0x91, 0xc8, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x7e, 0x88, 0xda, 0xe0, 0x74, 0x24, 0xb2, 0x86, 0xb7, 0x75, 0x06, 0x7e, 0x4e, 0xac, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0x5e, 0xbe, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0xd7, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0x0e, 0xd2, 0x93, 0x06, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x86, 0x64, 0x6d, 0x78, 0xf0, 0x66, 0x0d, 0x1f, 0x47, 0x1d, 0x1c, 0xf2, 0x5b, 0x0e, 0x0a, 0xe2, 0xf1, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x48, 0xf2, 0x74, 0x5a, 0xc3, 0x07, 0x39, 0x1b, 0xa4, 0x2c, 0x37, 0xad, 0xe1, 0xeb, 0x97, 0x35, 0xfc, 0x08, 0x73, 0x50, 0xf0, 0x6c, 0x6e, 0xf8, 0xfa, 0x65, 0xc3, 0x87, 0x30, 0x87, 0x07, 0x6f, 0x0e, 0xd2, 0x61, 0x0d, 0x37, 0x7c, 0x62, 0xb3, 0x41, 0x1a, 0x2a, 0xd4, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x20, 0x81, 0xd7, 0x68, 0xc3, 0xc7, 0x51, 0x07, 0xa7, 0x8b, 0x8c, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x06, 0x49, 0x33, 0x4e, 0x07, 0x09, 0xbd, 0x83, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x44, 0xc6, 0xa7, 0x0d, 0x12, 0x78, 0x8d, 0x36, 0x48, 0x66, 0x39, 0x6c, 0xc3, 0x07, 0x39, 0x1b, 0xa4, 0x2c, 0x37, 0xad, 0xe1, 0xeb, 0x97, 0x0d, 0x92, 0x08, 0x0e, 0x37, 0x7c, 0xfd, 0xb2, 0xe1, 0x43, 0x98, 0x83, 0x74, 0x4d, 0xa7, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0xfc, 0x10, 0xb5, 0x41, 0xba, 0xa6, 0xd3, 0x41, 0x2a, 0xac, 0xe1, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xd8, 0x7e, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x95, 0x43, 0x6d, 0x90, 0x34, 0xe3, 0xb4, 0x41, 0x42, 0xef, 0x60, 0x07, 0x69, 0xa8, 0x52, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xcb, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xf9, 0x21, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x1a, 0xf0, 0x6e, 0x90, 0x32, 0x34, 0x78, 0x90, 0x64, 0xa4, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x32, 0x71, 0x37, 0x48, 0x19, 0x1a, 0x3c, 0x48, 0xd5, 0x74, 0x6a, 0xc3, 0x07, 0x39, 0x1b, 0xa4, 0x2c, 0x37, 0x6d, 0x70, 0xfc, 0xe4, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xc9, 0x0f, 0x51, 0x1b, 0x1c, 0x3f, 0xf9, 0x0e, 0x52, 0x61, 0x0d, 0x0f, 0xa7, 0xd8, 0x1a, 0xd2, 0x87, 0x1b, 0x9e, 0x27, 0xd9, 0x20, 0x95, 0x07, 0x6e, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0xd0, 0x09, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0b, 0xcf, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x1b, 0xfe, 0x04, 0x3a, 0x48, 0x0a, 0x15, 0x3c, 0x48, 0x41, 0x15, 0x6c, 0x35, 0x48, 0xab, 0x49, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x48, 0xab, 0x49, 0xea, 0x20, 0xf9, 0x29, 0x69, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0x70, 0x0c, 0x6e, 0xf8, 0x8b, 0x66, 0x83, 0xe3, 0xc9, 0xc9, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x2a, 0x87, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0xca, 0x3f, 0x6d, 0x90, 0x70, 0x35, 0xd8, 0xe1, 0x2d, 0xb4, 0xc3, 0x29, 0xb6, 0x06, 0x29, 0xb5, 0x49, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0xaa, 0x41, 0xdc, 0x00, 0xfc, 0xcc, 0xa5, 0x9d, 0xb9, 0x95, 0x91, 0x81, 0xa4, 0xb9, 0xd1, 0x95, 0x9d, 0x95, 0xc9, 0x81, 0xd0, 0xbd, 0x81, 0x00, 0xc9, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x84, 0xde, 0xa4, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x8c, 0xb2, 0xb4, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0x71, 0x72, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0xcb, 0x44, 0x1d, 0x1e, 0xfa, 0xd9, 0x20, 0x81, 0xc7, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x92, 0xe6, 0x74, 0x78, 0xe8, 0xa7, 0x56, 0x83, 0x14, 0x02, 0xa5, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0x20, 0x71, 0x2f, 0xee, 0x20, 0xd9, 0x44, 0x69, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0x70, 0x0c, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0x0f, 0x4a, 0x6e, 0x90, 0x04, 0xa4, 0x74, 0x90, 0x14, 0x2a, 0x78, 0x90, 0x94, 0xe9, 0x37, 0x0b, 0x3c, 0x5c, 0xb8, 0x41, 0x12, 0x5e, 0xd2, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0xde, 0xd6, 0x19, 0x78, 0x33, 0xb6, 0x35, 0x38, 0x78, 0x64, 0x1c, 0x24, 0xb3, 0x1c, 0xae, 0xc1, 0xa1, 0xb5, 0xe5, 0x20, 0xa1, 0x77, 0x70, 0x0d, 0x2b, 0x78, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xe5, 0xea, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x68, 0xf7, 0x1e, 0x1c, 0x7f, 0x5c, 0x0e, 0x0a, 0x4a, 0xf1, 0x35, 0x28, 0xf2, 0x65, 0x0f, 0xd2, 0x49, 0x99, 0x0e, 0xd2, 0x52, 0x93, 0x0e, 0xa7, 0xd8, 0x1a, 0x94, 0x69, 0x58, 0x1b, 0x9e, 0x27, 0xd9, 0x20, 0x25, 0x71, 0x6c, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0x70, 0x0c, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0b, 0xcf, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x1b, 0x24, 0xee, 0x29, 0x1d, 0x24, 0x85, 0x0a, 0x1e, 0x24, 0x65, 0xfa, 0x35, 0x6b, 0x58, 0x0d, 0xdf, 0xf0, 0x3c, 0xc9, 0x06, 0x29, 0x0c, 0x73, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x81, 0x4e, 0x70, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x63, 0xc7, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0xdc, 0xf0, 0x8d, 0xe2, 0x41, 0x52, 0xa8, 0xe0, 0x41, 0x0a, 0xaa, 0xe0, 0x41, 0xaa, 0x2d, 0xdc, 0xe1, 0x14, 0x5b, 0xc3, 0x4e, 0xfc, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0x90, 0x52, 0x34, 0x37, 0x80, 0xef, 0x99, 0x5c, 0x59, 0x18, 0x5d, 0x99, 0x5c, 0x4b, 0x59, 0x5c, 0x5d, 0x18, 0xdb, 0xdc, 0x86, 0x5f, 0x94, 0x36, 0x48, 0xa0, 0x13, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0xc7, 0xd8, 0xb1, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0x37, 0x48, 0xc3, 0x56, 0x3a, 0x48, 0x0a, 0x15, 0x3c, 0x48, 0x41, 0x15, 0x3c, 0x48, 0xb5, 0x85, 0x5b, 0x0d, 0x12, 0xce, 0x95, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x5a, 0xc2, 0xd2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xfc, 0x98, 0xb9, 0x81, 0xd0, 0xbd, 0x81, 0x00, 0xc9, 0x81, 0xdc, 0xad, 0x80, 0xc8, 0xbd, 0xd5, 0xb9, 0x91, 0xa5, 0xb9, 0x9d, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0b, 0xcf, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x1b, 0xa4, 0x95, 0x65, 0x1d, 0x24, 0x85, 0x0a, 0x1e, 0x1e, 0xfa, 0x69, 0x05, 0x7e, 0x4e, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x9f, 0x4b, 0x3b, 0x73, 0x03, 0x11, 0x4b, 0xa3, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x85, 0x76, 0xef, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xf9, 0x21, 0x6a, 0x83, 0x43, 0x7e, 0xcb, 0x41, 0x7a, 0xd2, 0x60, 0x87, 0x53, 0x6c, 0x0d, 0x0e, 0xbf, 0xb8, 0x1b, 0x9e, 0x27, 0xd9, 0x20, 0x05, 0xbc, 0x6c, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0xd0, 0x09, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x63, 0xec, 0xd8, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x1b, 0xa4, 0x6a, 0x2d, 0x1d, 0x24, 0x85, 0x0a, 0x1e, 0xa4, 0xa0, 0x0a, 0x1e, 0xa4, 0xda, 0xc2, 0x1d, 0x4e, 0xb1, 0x35, 0xb4, 0xf8, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x49, 0x0b, 0x74, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x81, 0x4e, 0x70, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x5a, 0x78, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0xdc, 0xf0, 0x29, 0xe0, 0x41, 0x52, 0xa8, 0xe0, 0x41, 0x0a, 0xaa, 0x60, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x05, 0x7c, 0xb9, 0x3c, 0xb6, 0x78, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0x49, 0x1b, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xb3, 0xe2, 0xeb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x7c, 0x98, 0xa5, 0xb9, 0xa5, 0xcd, 0xa1, 0x81, 0xc0, 0x85, 0xc9, 0xcd, 0xa5, 0xb9, 0x9d, 0x81, 0x00, 0xc9, 0xc5, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0x0f, 0x4a, 0x6e, 0x90, 0xb8, 0x70, 0x74, 0x90, 0x3e, 0xbe, 0x77, 0x78, 0xe8, 0xe7, 0x70, 0x8a, 0xad, 0x00, 0x3e, 0x73, 0x63, 0x72, 0x61, 0x6d, 0x62, 0x6c, 0x69, 0x6e, 0xe7, 0x32, 0x80, 0xef, 0x8c, 0x99, 0x0e, 0xc8, 0xdc, 0x98, 0x5c, 0x58, 0x9b, 0x18, 0x5b, 0x9a, 0xdb, 0xd9, 0x02, 0xff, 0x26, 0x6e, 0x50, 0x76, 0xc9, 0x0e, 0xfc, 0x9b, 0xb8, 0x86, 0x4b, 0x6a, 0x8d, 0xc7, 0x03, 0xff, 0x26, 0xd6, 0x6a, 0x90, 0xe4, 0x99, 0xb0, 0xe1, 0x6d, 0x9d, 0x0d, 0x92, 0x3c, 0x13, 0x5a, 0x83, 0x44, 0xad, 0x84, 0x0d, 0x6f, 0xeb, 0x6c, 0x90, 0xa8, 0x95, 0x50, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0x9e, 0x59, 0x59, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x90, 0x36, 0xb5, 0xd8, 0x00, 0xb4, 0x88, 0x18, 0x95, 0x89, 0x80, 0xa4, 0xb9, 0x81, 0x08, 0x99, 0x48, 0x81, 0xa0, 0xc8, 0xc0, 0xc0, 0xc8, 0xa4, 0xb8, 0x95, 0x00, 0xf4, 0x0b, 0x02, 0x31, 0x2a, 0x4b, 0x9b, 0xa3, 0x2b, 0x63, 0x03, 0x19, 0x4b, 0x83, 0x43, 0x2b, 0x93, 0x03, 0x39, 0x4b, 0xb3, 0x2b, 0x73, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x31, 0x7b, 0x63, 0x63, 0x7b, 0xbb, 0x4b, 0x73, 0x3b, 0x03, 0x81, 0x0b, 0x93, 0x0b, 0x6b, 0x2b, 0xa3, 0x2b, 0x93, 0x9b, 0xd3, 0xad, 0x04, 0xf0, 0x2d, 0xa7, 0x03, 0x02, 0x02, 0x02, 0xe2, 0x56, 0xd7, 0x26, 0x56, 0x26, 0x07, 0xf2, 0x66, 0x06, 0x62, 0x54, 0x96, 0x36, 0x47, 0x57, 0xc6, 0x06, 0x22, 0xf7, 0x56, 0xe7, 0x46, 0x36, 0x2f, 0x01, 0xf8, 0x10, 0xc6, 0x02, 0x22, 0xa6, 0x03, 0x02, 0x17, 0x26, 0x17, 0xd6, 0x56, 0x46, 0x57, 0x26, 0x37, 0x07, 0x32, 0x57, 0x37, 0x86, 0x06, 0x42, 0x87, 0x16, 0x46, 0x07, 0x12, 0x26, 0x06, 0xe2, 0xd3, 0x03, 0xb2, 0x2e, 0x01, 0xf8, 0xbd, 0xa6, 0x03, 0x02, 0x02, 0x02, 0x62, 0x17, 0xc6, 0x56, 0x57, 0x06, 0x32, 0x57, 0x37, 0x86, 0x06, 0x42, 0x87, 0x16, 0x46, 0x07, 0x42, 0x87, 0x56, 0x06, 0x42, 0xf6, 0xd6, 0x16, 0x96, 0xe6, 0x06, 0xf2, 0x66, 0x06, 0x42, 0x87, 0x56, 0x06, 0x32, 0x96, 0x06, 0x87, 0x56, 0x26, 0x07, 0x92, 0x36, 0x07, 0xb2, 0x05, 0xc3, 0x02, 0xb2, 0x06, 0xd2, 0x02, 0x12, 0xd3, 0x2d, 0x01, 0xf0, 0x02, 0x9c, 0x9c, 0x99, 0x0e, 0x08, 0x48, 0x18, 0xc8, 0x59, 0x18, 0x5d, 0x19, 0x08, 0x59, 0x99, 0xdb, 0x1b, 0x5d, 0x9a, 0xdb, 0x19, 0x48, 0x18, 0x88, 0x59, 0x58, 0x5b, 0x1a, 0x5b, 0x1e, 0xc8, 0x9b, 0x19, 0x08, 0xdc, 0x5c, 0x59, 0x1d, 0xd9, 0x9b, 0x5c, 0x98, 0x1b, 0xd9, 0x5b, 0x1b, 0x88, 0x59, 0x9d, 0xdb, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x1c, 0x48, 0x9a, 0x1b, 0x59, 0x19, 0x5e, 0x19, 0x19, 0x88, 0x58, 0x5e, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xe0, 0x59, 0x9b, 0x0e, 0x08, 0x08, 0x08, 0x48, 0x98, 0x1b, 0x48, 0x9a, 0x1b, 0x5c, 0x1d, 0x1d, 0x88, 0x5d, 0x18, 0x5b, 0x5d, 0x19, 0x48, 0x9a, 0x1b, 0x08, 0x1d, 0x5a, 0x19, 0x08, 0xd9, 0x5b, 0x5b, 0x58, 0x9a, 0x1b, 0xc8, 0x16, 0x0c, 0x0b, 0xc8, 0x1a, 0x48, 0x0b, 0x48, 0x4c, 0xd7, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x5c, 0x3e, 0xfc, 0x50, 0xb3, 0xe1, 0xcb, 0xa5, 0x0d, 0xcf, 0x33, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xd7, 0xc3, 0x0f, 0x35, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x83, 0x93, 0x33, 0x37, 0x08, 0xa7, 0xb1, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x57, 0x0f, 0x3f, 0xd4, 0x6c, 0x90, 0x92, 0xcb, 0xd8, 0xe1, 0x87, 0x9a, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x7b, 0xf8, 0xa1, 0xa6, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0xa1, 0x66, 0x83, 0x82, 0x34, 0x76, 0xf0, 0x71, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xe6, 0x5f, 0xdb, 0xe0, 0xf8, 0xc9, 0xb7, 0xe1, 0x69, 0x9d, 0x0d, 0xef, 0x05, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x12, 0xaa, 0x19, 0x3b, 0x38, 0x21, 0x50, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0x6c, 0xc3, 0xd3, 0x3b, 0x1b, 0xa4, 0x79, 0x57, 0xb5, 0xe1, 0xe9, 0x9d, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xe6, 0x5f, 0xdb, 0xe0, 0xf8, 0xc9, 0xb7, 0xe1, 0x69, 0x9d, 0x0d, 0xef, 0x05, 0x6d, 0x90, 0x9a, 0xd1, 0x78, 0xf8, 0x45, 0x68, 0x35, 0x48, 0xd4, 0x4a, 0xd8, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x48, 0xd4, 0x4a, 0x68, 0x00, 0xba, 0xe4, 0xca, 0xe6, 0xe8, 0xde, 0xe4, 0xca, 0x40, 0xe6, 0xe8, 0xe4, 0xea, 0xc6, 0xe8, 0xea, 0xe4, 0xca, 0x58, 0x40, 0xec, 0x66, 0xdc, 0x4a, 0x00, 0xfa, 0x4b, 0x95, 0xcd, 0xd1, 0xbd, 0xc9, 0x95, 0xcd, 0x81, 0xbc, 0x89, 0x99, 0xd5, 0xcd, 0x8d, 0x85, 0xd1, 0x95, 0x91, 0x81, 0xd8, 0x85, 0xb1, 0xd5, 0x95, 0xcd, 0x81, 0xd0, 0xa1, 0x85, 0xd1, 0x81, 0xa0, 0x85, 0xd9, 0x95, 0x81, 0x88, 0x95, 0x95, 0xb9, 0x81, 0x94, 0xb9, 0x8d, 0xa5, 0xc1, 0xa1, 0x95, 0xc9, 0x95, 0x91, 0x81, 0xdc, 0xa5, 0xd1, 0xa1, 0x81, 0xac, 0x98, 0x95, 0xa5, 0xb9, 0xb9, 0xda, 0xf0, 0xf8, 0xc8, 0x06, 0x89, 0x5a, 0x09, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x98, 0x5c, 0x7e, 0xf8, 0xa1, 0x66, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0x1e, 0x61, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0xd2, 0xa6, 0x1b, 0x5b, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x07, 0x06, 0x00, 0x40, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x1b, 0xa4, 0xc2, 0x37, 0xae, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x0f, 0x12, 0xf8, 0x10, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x83, 0x64, 0xfc, 0xc6, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xc1, 0x5a, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0xf0, 0x20, 0x0d, 0xbe, 0xb1, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x69, 0xd8, 0x4a, 0x1b, 0xa4, 0xc2, 0x37, 0xae, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x0f, 0x92, 0xa1, 0x11, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0xf8, 0xdd, 0x20, 0x15, 0xbe, 0x71, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0x90, 0xca, 0x8e, 0x50, 0x6b, 0x50, 0x90, 0xc6, 0x0e, 0x3c, 0xdb, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x7a, 0xc7, 0x1d, 0xa4, 0x28, 0x38, 0x6e, 0x50, 0x90, 0xc6, 0x0e, 0x3c, 0x5a, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x7a, 0xc7, 0x6d, 0x90, 0x0a, 0xdf, 0xb8, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x48, 0x0c, 0x49, 0x68, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x82, 0xb2, 0x7b, 0x83, 0x43, 0xba, 0xdb, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x09, 0xf4, 0x8d, 0x1b, 0xde, 0xd6, 0x19, 0x78, 0xb6, 0xb7, 0x0e, 0x52, 0xe1, 0x1b, 0x57, 0x83, 0x24, 0xcf, 0x84, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x24, 0xcf, 0x84, 0x06, 0xa0, 0x6b, 0xec, 0xcd, 0x6d, 0xac, 0x2c, 0x8c, 0x0d, 0x64, 0x8e, 0x4e, 0xae, 0x6e, 0x8c, 0xae, 0x4e, 0xae, 0x8c, 0x05, 0xc4, 0x6e, 0xc6, 0xad, 0x04, 0xc0, 0x13, 0x2b, 0x66, 0x65, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x61, 0x6c, 0x73, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x73, 0x2e, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x69, 0x64, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0xe5, 0x12, 0x80, 0xae, 0x74, 0x72, 0x69, 0x76, 0x69, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x65, 0x6c, 0x6c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x65, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0xae, 0x36, 0x3c, 0x3e, 0xb2, 0x41, 0x92, 0x67, 0xc2, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x07, 0x97, 0xe7, 0x1e, 0x7e, 0xa8, 0xd9, 0xf0, 0x17, 0xcd, 0x86, 0x1f, 0x6a, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x69, 0xd8, 0x4a, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x94, 0xbe, 0xc7, 0x0e, 0x12, 0xf1, 0x1b, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0x48, 0xd3, 0x7c, 0x3c, 0x48, 0x73, 0x70, 0x6c, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x83, 0x64, 0xfc, 0xc6, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x7c, 0xb3, 0xb2, 0xb4, 0xb9, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x83, 0x14, 0xcd, 0xc7, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0x1e, 0x61, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0x6d, 0x90, 0xa6, 0xf9, 0x78, 0x90, 0xb6, 0xe4, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xf1, 0xbb, 0x41, 0x9a, 0xe6, 0xe3, 0x41, 0x72, 0x98, 0x63, 0x6b, 0x50, 0x90, 0xc6, 0x0e, 0x3c, 0xdb, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x7a, 0xc7, 0x1d, 0x24, 0xb5, 0x3e, 0x6e, 0x50, 0x90, 0xc6, 0x0e, 0x3c, 0x5a, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x7a, 0xc7, 0x6d, 0x90, 0xa6, 0xf9, 0x78, 0x90, 0x3a, 0xe9, 0xb8, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x41, 0xd9, 0xbd, 0xc1, 0x21, 0xdd, 0x6d, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xe4, 0xce, 0xc7, 0x83, 0x94, 0x5a, 0xc7, 0x0e, 0xd2, 0x34, 0x1f, 0x67, 0x01, 0xdf, 0xac, 0xac, 0xcc, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x48, 0x52, 0x82, 0x6c, 0x00, 0xba, 0x44, 0x8c, 0xca, 0xbc, 0x5a, 0x62, 0x44, 0x40, 0xd2, 0xdc, 0x40, 0x84, 0x4c, 0xa4, 0x40, 0x50, 0x64, 0x60, 0x60, 0x64, 0x52, 0xdc, 0x4a, 0x00, 0x3c, 0x21, 0x55, 0x66, 0x57, 0x26, 0x37, 0x57, 0x36, 0x07, 0x12, 0x06, 0x62, 0x54, 0x96, 0x36, 0x47, 0x57, 0xc6, 0x06, 0x32, 0x96, 0x06, 0x87, 0x56, 0x26, 0x07, 0x32, 0xf6, 0xe6, 0x36, 0x47, 0x27, 0x57, 0x37, 0x46, 0x57, 0x46, 0x06, 0x72, 0x97, 0x46, 0x87, 0x06, 0x02, 0x17, 0x26, 0x17, 0xd6, 0x56, 0x46, 0x57, 0x26, 0x37, 0x07, 0x12, 0x36, 0x07, 0x42, 0x56, 0x36, 0x37, 0x26, 0x97, 0x26, 0x56, 0x46, 0x06, 0x92, 0xe6, 0x2e, 0x01, 0xcd, 0x8a, 0x59, 0x59, 0x99, 0xab, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0x58, 0xcb, 0xb8, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0x50, 0x90, 0xc6, 0x0e, 0x3e, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0x99, 0x95, 0xb9, 0x1d, 0x24, 0x3a, 0x34, 0x6e, 0xf8, 0x20, 0x67, 0x83, 0x84, 0x94, 0xc6, 0x0d, 0x4f, 0xef, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xa4, 0x6f, 0xc8, 0x83, 0x44, 0xa1, 0xc6, 0xd5, 0x20, 0x08, 0x97, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x82, 0x70, 0xa9, 0x01, 0x74, 0xe5, 0xca, 0xec, 0xca, 0xe4, 0xe6, 0xca, 0x40, 0x56, 0xcc, 0xca, 0xd2, 0xe6, 0x5c, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x29, 0x9e, 0x71, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x49, 0x09, 0xb2, 0x0d, 0x4e, 0xcd, 0x6d, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x40, 0xf8, 0xff, 0x6f, 0x90, 0x8c, 0xdf, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0xd2, 0x86, 0x22, 0x0f, 0x12, 0xf1, 0x1b, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x57, 0x66, 0x66, 0x76, 0x70, 0x42, 0xa0, 0x38, 0x9c, 0x62, 0xb5, 0x80, 0x2f, 0x17, 0xb6, 0x56, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xa4, 0xc4, 0x45, 0x36, 0x80, 0xee, 0x5c, 0x59, 0x19, 0xd9, 0x1c, 0x88, 0xd9, 0x9b, 0x1c, 0x48, 0x99, 0x99, 0x99, 0x6b, 0xc3, 0x5f, 0x34, 0x1b, 0x1c, 0x3c, 0x4a, 0x37, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x0f, 0xd2, 0x33, 0x14, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x07, 0xc9, 0x1f, 0x0a, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x83, 0xd4, 0x12, 0x85, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0xf8, 0x41, 0xe2, 0x8a, 0x42, 0xab, 0x41, 0x4a, 0x59, 0xe4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x4a, 0x59, 0x64, 0x03, 0xa0, 0x73, 0x18, 0x48, 0x5b, 0x9d, 0x5c, 0x5b, 0x9d, 0xdc, 0x4c, 0x8b, 0x58, 0xd8, 0x5c, 0x19, 0x19, 0x08, 0xdc, 0x5c, 0x59, 0x1d, 0xd9, 0x9b, 0x5c, 0x98, 0x1b, 0xd9, 0x5b, 0x1b, 0x88, 0x59, 0x9d, 0xdb, 0x18, 0x5d, 0xda, 0x9b, 0x9b, 0x0b, 0x08, 0xc8, 0x89, 0xd1, 0x09, 0x48, 0x9a, 0x1b, 0x88, 0x90, 0x89, 0x14, 0x08, 0x8a, 0x0c, 0x0c, 0x8c, 0x4c, 0x8a, 0x6b, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0x75, 0x33, 0x6e, 0xf8, 0x8b, 0x66, 0xc3, 0x0f, 0x35, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x44, 0x86, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x2a, 0xe7, 0x37, 0x48, 0x61, 0x8e, 0x5a, 0xc3, 0xdb, 0x3a, 0x1b, 0xa4, 0xc4, 0x45, 0xd6, 0x06, 0x01, 0xcb, 0x7a, 0x70, 0xe8, 0xeb, 0x5b, 0x0d, 0xd2, 0xc5, 0x21, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xd2, 0xc5, 0x21, 0x1b, 0x80, 0x36, 0x10, 0x11, 0xb3, 0x32, 0xaf, 0x96, 0x18, 0x11, 0x90, 0x34, 0x37, 0x10, 0x21, 0x13, 0x29, 0x10, 0x14, 0x19, 0x18, 0x18, 0x99, 0x14, 0xb7, 0x12, 0x00, 0x6f, 0x38, 0xbd, 0xd1, 0x95, 0x81, 0xd0, 0xa1, 0x85, 0xd1, 0x81, 0xd0, 0xa1, 0xa5, 0xcd, 0x81, 0xa4, 0xb5, 0xc1, 0xb1, 0x95, 0xb5, 0x95, 0xb9, 0xd1, 0x85, 0xd1, 0xa5, 0xbd, 0xb9, 0x81, 0x90, 0xa5, 0x99, 0x99, 0x95, 0xc9, 0xcd, 0x81, 0xcc, 0xb1, 0xa5, 0x9d, 0xa1, 0xd1, 0xb1, 0xe5, 0x81, 0x98, 0xc9, 0xbd, 0xb5, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0xc8, 0x95, 0x99, 0x95, 0xc9, 0x95, 0xb9, 0x8d, 0x95, 0x81, 0xc0, 0x85, 0xc1, 0x95, 0xc9, 0x4b, 0x00, 0xda, 0xd2, 0xbd, 0x81, 0xcc, 0xd5, 0xc1, 0xc1, 0xbd, 0xc9, 0xd1, 0x81, 0xcc, 0xbd, 0xb5, 0x95, 0x81, 0xb0, 0x95, 0x9d, 0x85, 0x8d, 0xe5, 0x81, 0x88, 0x95, 0xa1, 0x85, 0xd9, 0xa5, 0xbd, 0xd5, 0xc9, 0xb9, 0x80, 0x80, 0x4c, 0x95, 0x95, 0x81, 0xd4, 0xc9, 0x89, 0xa5, 0xd1, 0xbd, 0x84, 0xc9, 0xd9, 0xbd, 0x8d, 0xc4, 0xc4, 0xc0, 0xd4, 0xb8, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x25, 0x97, 0x71, 0xc3, 0x97, 0x4b, 0x1b, 0x9e, 0x67, 0x3a, 0x48, 0x89, 0x66, 0xdc, 0xa0, 0x20, 0x8d, 0x1d, 0x5c, 0xdd, 0xe0, 0xf8, 0xc9, 0xb7, 0x41, 0x41, 0x1a, 0x3b, 0xe0, 0x85, 0xa1, 0xa1, 0x6b, 0x50, 0xec, 0x68, 0xae, 0xe1, 0xdf, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xd8, 0xdd, 0x1e, 0x24, 0x27, 0x59, 0x1d, 0x1e, 0xbc, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x02, 0xeb, 0x06, 0x87, 0xd0, 0x89, 0xc3, 0x43, 0x3f, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xec, 0x6e, 0x0f, 0xd2, 0x8f, 0x26, 0x37, 0x28, 0x48, 0x63, 0x07, 0xbc, 0x30, 0xb6, 0x72, 0x0d, 0x8a, 0x1d, 0xcd, 0x0d, 0x52, 0x5d, 0x26, 0x37, 0x48, 0x79, 0x9a, 0x3c, 0x48, 0x06, 0x9a, 0xdc, 0xa0, 0x20, 0x8d, 0x1d, 0xf0, 0xca, 0xd8, 0xd8, 0x35, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x89, 0x5e, 0x93, 0x1d, 0x9e, 0xd6, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xa4, 0x97, 0x4c, 0x76, 0x90, 0x38, 0x38, 0xb9, 0x41, 0x41, 0x1a, 0x3b, 0xe0, 0x85, 0xc9, 0xc9, 0x6b, 0xf8, 0x20, 0x67, 0x83, 0xf4, 0xbf, 0xc9, 0x0d, 0x12, 0x07, 0x27, 0x0f, 0x92, 0x1d, 0x27, 0x37, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0x6c, 0x83, 0x14, 0xe6, 0xa8, 0x83, 0x82, 0x78, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3c, 0xb5, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x74, 0xcf, 0xc9, 0x0e, 0x0f, 0xfd, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x92, 0xef, 0x26, 0x6b, 0x83, 0x82, 0x34, 0x76, 0x70, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x9a, 0xd1, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0x78, 0x90, 0x7c, 0x3c, 0x79, 0x90, 0x96, 0x3e, 0xb9, 0x41, 0x41, 0x1a, 0x3b, 0xe0, 0xd1, 0xb5, 0xc1, 0x6b, 0x50, 0xec, 0x68, 0xae, 0xe1, 0xdf, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xd8, 0xdd, 0x6e, 0x90, 0xc2, 0x1c, 0x75, 0x10, 0xac, 0xac, 0x87, 0x07, 0x6f, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x61, 0x77, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0x74, 0x90, 0xe2, 0x3d, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x0d, 0x8a, 0x91, 0xda, 0xc3, 0x43, 0x3f, 0x1d, 0x1e, 0xfa, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x61, 0x77, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x41, 0x9a, 0xf7, 0xe4, 0xe1, 0x2d, 0xb4, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xd8, 0xdd, 0x6e, 0x50, 0x8c, 0xd4, 0x1e, 0xde, 0x42, 0xeb, 0xf0, 0x16, 0xda, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x89, 0xcf, 0x51, 0x07, 0xe9, 0xff, 0x93, 0x6b, 0x90, 0xd0, 0x3e, 0xb9, 0xe1, 0x6d, 0x9d, 0x0d, 0xd2, 0x25, 0x28, 0x5b, 0x83, 0xe4, 0xf0, 0xc9, 0x83, 0xd4, 0xf4, 0xc9, 0x56, 0x83, 0x44, 0xe4, 0xc7, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x44, 0xe4, 0xc7, 0x06, 0xc0, 0xdb, 0x30, 0x10, 0xb3, 0xb7, 0x3a, 0xb9, 0x16, 0xb9, 0xb7, 0x3a, 0x37, 0x32, 0x90, 0xb3, 0x32, 0xb7, 0x32, 0xb9, 0x30, 0xb6, 0xb4, 0xb9, 0x32, 0x32, 0x10, 0xa3, 0xb2, 0xb4, 0x39, 0xba, 0x32, 0x36, 0x90, 0xb1, 0x34, 0x38, 0xb4, 0x32, 0x39, 0x90, 0x37, 0xbb, 0x32, 0x39, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb2, 0xb7, 0xb6, 0xb0, 0x34, 0xb7, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xa0, 0x83, 0xa9, 0xb2, 0x32, 0x1d, 0x10, 0x21, 0xb6, 0xb0, 0xb1, 0x35, 0x10, 0x13, 0x10, 0xa9, 0xb7, 0xb3, 0xb0, 0xbb, 0xb0, 0x3c, 0x10, 0x14, 0x19, 0x18, 0x18, 0x99, 0x14, 0x16, 0x90, 0xa1, 0x34, 0x38, 0xb4, 0x32, 0xb9, 0x39, 0x10, 0xb3, 0x37, 0x39, 0x90, 0x30, 0x39, 0xb1, 0x34, 0x3a, 0xb9, 0x30, 0xb9, 0x3c, 0x10, 0xb3, 0x34, 0xb7, 0x34, 0xba, 0x32, 0x10, 0xb2, 0xb7, 0xb6, 0xb0, 0x34, 0xb7, 0x39, 0xd7, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x8a, 0x67, 0xdc, 0xf0, 0x17, 0xcd, 0x86, 0x1f, 0x6a, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x48, 0x9b, 0x5a, 0xec, 0x20, 0xe1, 0x27, 0xf2, 0x70, 0x8a, 0xb5, 0xc0, 0x9b, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0x19, 0x81, 0x3d, 0x00, 0x3d, 0x20, 0x22, 0x66, 0x65, 0x22, 0x20, 0x69, 0x6e, 0x20, 0x42, 0x26, 0x52, 0x20, 0x28, 0x32, 0x30, 0x30, 0x32, 0x29, 0x6e, 0x25, 0x80, 0xe6, 0x20, 0x37, 0x90, 0x34, 0x37, 0xba, 0x32, 0x39, 0xb7, 0x30, 0x36, 0x10, 0xb3, 0x3a, 0xb7, 0x31, 0xba, 0xb4, 0x37, 0x37, 0x10, 0xba, 0x37, 0x90, 0x15, 0xb3, 0xb2, 0x32, 0xd7, 0x41, 0x2a, 0x9f, 0xe4, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x29, 0x98, 0xdc, 0xa0, 0x20, 0x8d, 0x1d, 0x5c, 0xdd, 0xf0, 0x98, 0xcc, 0x06, 0x05, 0x69, 0xec, 0x06, 0xc9, 0x77, 0x93, 0x1b, 0xa4, 0x3c, 0x4d, 0x6e, 0x50, 0x90, 0xc6, 0x6e, 0x90, 0xee, 0x39, 0xb9, 0x41, 0x32, 0xd0, 0xe4, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x87, 0x9a, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xdf, 0x28, 0x6e, 0x90, 0xc2, 0x1c, 0x75, 0x70, 0xe8, 0xeb, 0x5b, 0x83, 0x62, 0x47, 0x73, 0x83, 0x54, 0x97, 0xc9, 0x0d, 0x12, 0xa0, 0x27, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x48, 0xf3, 0x9e, 0x3c, 0x3c, 0xad, 0xb3, 0x41, 0x02, 0xf4, 0xe4, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0x52, 0xd3, 0x27, 0x0f, 0x0f, 0xfd, 0x6c, 0x90, 0xe6, 0x3d, 0xd9, 0x06, 0x05, 0x69, 0xec, 0xe0, 0xe6, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x35, 0xa3, 0x71, 0x83, 0xf4, 0xff, 0xc9, 0x83, 0x34, 0x16, 0xcb, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xd2, 0x25, 0x28, 0xd7, 0xa0, 0xd8, 0xd1, 0xdc, 0x20, 0x75, 0x83, 0x72, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x76, 0xb7, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0x14, 0x23, 0xb5, 0x07, 0x69, 0xe9, 0x93, 0x87, 0x87, 0x7e, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xd8, 0xdd, 0x6e, 0x90, 0xf6, 0x65, 0x79, 0x78, 0x0b, 0x6d, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xc4, 0xe7, 0xa8, 0x0d, 0x1f, 0x47, 0x1d, 0xa4, 0x30, 0x47, 0xad, 0x41, 0x42, 0xfb, 0xe4, 0x41, 0x9a, 0xf7, 0xe4, 0x1a, 0x24, 0x87, 0x4f, 0x1e, 0xa4, 0x76, 0x52, 0x76, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0xb3, 0xc0, 0xd7, 0xb9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xc1, 0xd7, 0xb9, 0x0d, 0x40, 0x4f, 0x0f, 0x0a, 0x1e, 0x08, 0xca, 0x9d, 0x5c, 0x19, 0x19, 0x08, 0xca, 0x9d, 0x5c, 0x99, 0x1b, 0x08, 0x5e, 0x4a, 0x4a, 0x6a, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0xc0, 0xc7, 0x0b, 0x33, 0x7b, 0x37, 0xfc, 0xa2, 0xb4, 0xe1, 0x6f, 0xa5, 0x0d, 0x1f, 0x47, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xb0, 0xbb, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0xf0, 0x87, 0xec, 0xe1, 0xa1, 0x9f, 0x35, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0xf1, 0x6f, 0x05, 0x7c, 0xbc, 0x30, 0xb9, 0x77, 0xc3, 0x2f, 0x4a, 0x1b, 0xfe, 0x56, 0xda, 0xf0, 0x71, 0xd4, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x7f, 0xc8, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x6e, 0x90, 0xb4, 0x6f, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x0d, 0x4f, 0xeb, 0x1c, 0x24, 0xec, 0x5b, 0xd6, 0x41, 0xc2, 0xbe, 0xe5, 0xe1, 0x14, 0x5b, 0xc0, 0xbf, 0x93, 0x2b, 0x23, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x12, 0x8e, 0x2e, 0x1b, 0x80, 0x07, 0xb9, 0xb2, 0x39, 0xba, 0x37, 0xb9, 0x32, 0x90, 0x39, 0x3a, 0xb9, 0xba, 0x31, 0xba, 0x3a, 0xb9, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0xfc, 0xdc, 0xb8, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0x50, 0x16, 0x16, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0xf8, 0x77, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x54, 0xf8, 0xc6, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x78, 0x73, 0x50, 0x78, 0x19, 0x6f, 0x78, 0xf0, 0x66, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0x94, 0x6b, 0xc6, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x9a, 0xcf, 0x41, 0xd1, 0x65, 0xdc, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0xd7, 0x96, 0x76, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0x78, 0x19, 0x1f, 0x14, 0xc4, 0xe3, 0x07, 0xc9, 0x93, 0x97, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x94, 0xc5, 0xd1, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x9c, 0xd8, 0x6f, 0x36, 0x28, 0x2c, 0x96, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0xe1, 0x73, 0xa5, 0x0d, 0x3f, 0xd4, 0x1c, 0x94, 0x91, 0xb6, 0x6d, 0x50, 0x18, 0xaa, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x8f, 0xc9, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x22, 0xc1, 0x65, 0x1b, 0x14, 0x5e, 0xc6, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x7a, 0x61, 0x72, 0x74, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x94, 0xe5, 0xcb, 0xaa, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0xf4, 0x00, 0xcc, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0xbe, 0x79, 0xb9, 0x41, 0x41, 0x91, 0xb9, 0x41, 0x29, 0x21, 0xbe, 0x41, 0x82, 0xeb, 0xe5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0xd7, 0xf6, 0x76, 0x1e, 0xa4, 0x3d, 0x5f, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0x4c, 0x66, 0x0d, 0x92, 0x0c, 0x08, 0x37, 0x38, 0xc4, 0x40, 0x6c, 0x90, 0xc6, 0x83, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x32, 0x71, 0x37, 0x28, 0x2a, 0xc5, 0x0f, 0x8a, 0x2e, 0xe3, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x7c, 0xbd, 0x3c, 0x39, 0xba, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xca, 0x1a, 0x66, 0xd5, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x24, 0xff, 0x60, 0x1e, 0x24, 0x9d, 0x62, 0xd6, 0x0a, 0xf8, 0x77, 0x72, 0x65, 0xee, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xea, 0x2f, 0x66, 0x03, 0xf0, 0x30, 0xf6, 0xe6, 0x36, 0x56, 0x16, 0xc6, 0x06, 0x32, 0x47, 0x27, 0x57, 0x37, 0x46, 0x57, 0x27, 0x57, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0x12, 0xf3, 0x1e, 0x37, 0xfc, 0x45, 0xb3, 0xe1, 0x87, 0x9a, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0xca, 0xc2, 0xe2, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x14, 0xff, 0x6e, 0x50, 0x54, 0x8a, 0x6f, 0x90, 0xa6, 0xf9, 0xd8, 0x86, 0x0f, 0x72, 0x36, 0x48, 0xdf, 0xbc, 0xdc, 0xf0, 0xe0, 0xcd, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x09, 0xae, 0x97, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0xa4, 0x2c, 0x5f, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x7a, 0x61, 0x66, 0x74, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x90, 0x70, 0x6d, 0xd9, 0x06, 0x85, 0x97, 0xf1, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x24, 0x9a, 0xdd, 0xa0, 0xa8, 0x14, 0xdf, 0x20, 0x61, 0xfb, 0xf2, 0x20, 0x8d, 0x21, 0xb3, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0x8b, 0xa3, 0x37, 0x28, 0x2a, 0xc5, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0x50, 0x58, 0x2c, 0x6f, 0xf8, 0x8b, 0x66, 0x83, 0xf4, 0x00, 0xcc, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0xfc, 0xe2, 0xb2, 0xe1, 0x31, 0x99, 0x83, 0x14, 0x1e, 0xcc, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0xf4, 0x00, 0xcc, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0xbe, 0x79, 0xb9, 0x41, 0x41, 0x91, 0xb9, 0x41, 0x29, 0x21, 0xbe, 0x41, 0x82, 0xeb, 0xe5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x29, 0x6b, 0x98, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xbe, 0x5e, 0x9e, 0x19, 0xdd, 0x1a, 0x24, 0x19, 0x10, 0x6e, 0x70, 0x88, 0x81, 0xd8, 0x20, 0x8d, 0x07, 0x73, 0x83, 0x74, 0x45, 0xcc, 0x83, 0xf4, 0xa5, 0xcc, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x26, 0x73, 0x90, 0x70, 0x8a, 0x79, 0x90, 0xfe, 0x8a, 0xb9, 0x1a, 0xa4, 0xda, 0x60, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xa4, 0xda, 0x60, 0x36, 0x80, 0xbf, 0x5c, 0x99, 0x5d, 0x99, 0xdc, 0x5c, 0x19, 0x88, 0x4c, 0x4d, 0x4d, 0xcb, 0x9c, 0xd8, 0x1b, 0xde, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0x70, 0x62, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x71, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0x24, 0x9e, 0x42, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xb6, 0xe7, 0xa0, 0x20, 0x1e, 0x3f, 0xbc, 0x85, 0xb6, 0x1a, 0xa4, 0xf1, 0x66, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xa4, 0xf1, 0x66, 0x36, 0x80, 0xbf, 0xd9, 0x9b, 0xdc, 0x5d, 0x98, 0x1c, 0x19, 0x88, 0x4c, 0x8d, 0x4d, 0xcb, 0x9c, 0xd8, 0x1b, 0xde, 0x86, 0x5f, 0x94, 0x36, 0x48, 0x9c, 0xd0, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x5c, 0xdc, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x07, 0x09, 0xd1, 0x11, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x24, 0x9a, 0xdd, 0xa0, 0xa8, 0x14, 0xdf, 0xe0, 0xa4, 0x11, 0x71, 0x78, 0x0b, 0xed, 0x70, 0x8a, 0xad, 0x41, 0xaa, 0x4d, 0xe6, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xaa, 0x4d, 0x66, 0x03, 0xf8, 0x9b, 0xbd, 0xc9, 0xdd, 0x85, 0xc9, 0x91, 0x81, 0xc8, 0xd4, 0xd4, 0xb4, 0xcc, 0x89, 0xbd, 0xe1, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xc4, 0x09, 0xcd, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc5, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0x90, 0x56, 0x2f, 0x71, 0x90, 0x46, 0xa3, 0x79, 0x38, 0xc5, 0xd6, 0x20, 0x31, 0x14, 0x73, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x31, 0x14, 0xb3, 0x01, 0xfc, 0xe5, 0xca, 0xec, 0xca, 0xe4, 0xe6, 0xca, 0x40, 0x64, 0x6a, 0x6c, 0x5a, 0xe6, 0xc4, 0xde, 0xf0, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xe2, 0x84, 0xe6, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe2, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x48, 0x27, 0xa0, 0x38, 0x48, 0x79, 0xd4, 0x3c, 0x9c, 0x62, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x16, 0xc0, 0xa7, 0x4e, 0x4e, 0x2c, 0x8d, 0xae, 0x85, 0x2e, 0xad, 0xad, 0x5c, 0x06, 0xf0, 0x9d, 0x19, 0xd3, 0x01, 0xa9, 0x93, 0x13, 0x4b, 0xa3, 0x03, 0xa1, 0x4b, 0x6b, 0x2b, 0x5b, 0xc0, 0xcf, 0x2b, 0x63, 0x63, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x12, 0xb4, 0x36, 0x1b, 0xc0, 0x8f, 0x2e, 0x4c, 0x0e, 0x0e, 0xc4, 0x4c, 0xee, 0xad, 0x0d, 0x04, 0x88, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x73, 0x7b, 0xbb, 0x37, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x87, 0x93, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x88, 0x92, 0xba, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xcd, 0x95, 0x8d, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc4, 0xc7, 0xdd, 0xe0, 0xb8, 0x3c, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x48, 0x20, 0xdc, 0xac, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0xcf, 0x2c, 0xcc, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x5e, 0x5b, 0xdd, 0x78, 0x70, 0x6a, 0x6e, 0x5b, 0xc3, 0xe7, 0x2e, 0x1b, 0xa4, 0xc8, 0xf6, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x22, 0x13, 0xf7, 0x20, 0x51, 0x75, 0xb3, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x83, 0x47, 0xe9, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x2b, 0xd9, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x86, 0xb7, 0x75, 0x36, 0x48, 0x91, 0xed, 0x69, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0xf0, 0x66, 0xc3, 0xdb, 0x3a, 0x1b, 0xa4, 0x35, 0x6f, 0xd6, 0x06, 0x05, 0x45, 0xe6, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x2e, 0xa9, 0x0d, 0x8a, 0x1a, 0xf1, 0x35, 0x48, 0xa1, 0xe0, 0xdc, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0x36, 0x48, 0x86, 0xe0, 0xac, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa2, 0xd9, 0x0d, 0x4e, 0xcd, 0x6d, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x64, 0x08, 0xce, 0x83, 0x82, 0x78, 0x7c, 0x83, 0xf4, 0x00, 0xce, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x20, 0xa9, 0x80, 0x73, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x99, 0xb8, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x53, 0x73, 0xdb, 0x41, 0xd2, 0x0c, 0xe7, 0x41, 0xb2, 0x14, 0x67, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x64, 0x61, 0xf9, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x05, 0xd6, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xba, 0xe7, 0x66, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x6c, 0x90, 0x0a, 0xc8, 0xd9, 0x86, 0xb7, 0x75, 0x06, 0x3e, 0xef, 0xad, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x5c, 0x52, 0x1b, 0x14, 0x35, 0xe2, 0x6b, 0x90, 0xfa, 0xc8, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0xc2, 0xee, 0xf6, 0x20, 0x81, 0x91, 0xb3, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x0f, 0xed, 0x4d, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0xa1, 0xc0, 0xba, 0x41, 0x12, 0x23, 0xe7, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0x24, 0x25, 0x73, 0x76, 0x90, 0xfe, 0xc9, 0xd9, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x2e, 0xa9, 0x0d, 0x8a, 0x1a, 0xf1, 0x35, 0x48, 0x7d, 0xe4, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x61, 0x77, 0x7b, 0x90, 0x4a, 0xcd, 0xd9, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0xd7, 0x96, 0x46, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x50, 0x60, 0xdd, 0x20, 0x89, 0x91, 0x73, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x52, 0x16, 0x3a, 0x3b, 0x48, 0xff, 0xe4, 0x6c, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0xa4, 0x3e, 0x72, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xb0, 0xbb, 0x3d, 0x48, 0xb4, 0xe8, 0x6c, 0xc3, 0x2f, 0x2e, 0x1b, 0x24, 0x60, 0x72, 0x6e, 0x90, 0xcc, 0xcd, 0xb9, 0x41, 0xaa, 0x47, 0xe7, 0x06, 0x49, 0x8c, 0x9c, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x24, 0xdf, 0xcd, 0x5a, 0x81, 0xcf, 0x7b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0xcf, 0x7b, 0x1b, 0xc0, 0x97, 0x2e, 0xad, 0xad, 0x0c, 0x64, 0xec, 0xcd, 0x6d, 0x8e, 0x2e, 0xcc, 0x8d, 0x6e, 0x6e, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0xc0, 0xcb, 0x2b, 0x93, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xd0, 0x44, 0x69, 0xab, 0x63, 0x03, 0x99, 0xb1, 0xa9, 0x01, 0x21, 0x0b, 0xcb, 0x4b, 0x6d, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x3f, 0x48, 0xf3, 0xb4, 0x58, 0x0d, 0x52, 0x01, 0x39, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xd0, 0x43, 0x69, 0xab, 0x63, 0x03, 0x91, 0xa1, 0x01, 0x41, 0x7b, 0x93, 0x4b, 0x6d, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0x0c, 0xc0, 0xa8, 0xd5, 0x20, 0x65, 0xa1, 0x73, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x28, 0x3f, 0x9c, 0x62, 0x0b, 0x78, 0x71, 0x61, 0xe4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xb4, 0xa0, 0x84, 0x91, 0x91, 0x81, 0xc4, 0x80, 0xa0, 0xb4, 0xd5, 0xb1, 0x81, 0xd0, 0x80, 0xe4, 0x95, 0xc9, 0xa5, 0xa4, 0x36, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x1f, 0x24, 0xac, 0x5a, 0x1c, 0x4e, 0xb1, 0x05, 0xbc, 0x32, 0xb9, 0x70, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5a, 0x50, 0xc2, 0xc8, 0xc8, 0x40, 0x62, 0x40, 0x50, 0xda, 0xea, 0xd8, 0x40, 0x68, 0x40, 0xc6, 0xca, 0xe8, 0x52, 0x52, 0x1b, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x03, 0x25, 0x56, 0xc7, 0x0a, 0x78, 0x6d, 0x6f, 0xe8, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x5a, 0x5d, 0x6e, 0xf8, 0xc5, 0x65, 0x83, 0xb3, 0x37, 0xde, 0x1a, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0xc3, 0x78, 0x83, 0xb3, 0x37, 0xde, 0x1a, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0xc3, 0x7c, 0x83, 0xb3, 0x37, 0xde, 0x06, 0x29, 0x5b, 0x9e, 0x1b, 0x9c, 0xbd, 0xf1, 0x36, 0x38, 0x7b, 0xe3, 0x6d, 0x90, 0xb2, 0xe5, 0xb9, 0xc1, 0xd9, 0x1b, 0x6f, 0x83, 0x94, 0x2d, 0xcf, 0x0d, 0xce, 0xde, 0x78, 0x07, 0x65, 0x9d, 0xe7, 0x6a, 0x90, 0x94, 0xcc, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x1e, 0x4a, 0x5b, 0x1d, 0x1b, 0x88, 0x0d, 0x0c, 0x48, 0x5b, 0x1a, 0x5d, 0x6a, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x90, 0x10, 0x5e, 0x01, 0xaf, 0xed, 0x2d, 0xdf, 0xf0, 0x17, 0xcd, 0x06, 0x47, 0xab, 0xcb, 0x0d, 0xbf, 0xb8, 0x6c, 0x70, 0xf6, 0xc6, 0x5b, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x58, 0x1f, 0x24, 0x5b, 0x79, 0x1e, 0x4e, 0xb1, 0x05, 0x3c, 0xb5, 0xb2, 0x79, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x9a, 0x50, 0xda, 0xea, 0xd8, 0x40, 0x6e, 0x66, 0x60, 0x5c, 0x6c, 0x72, 0x64, 0x5c, 0x6a, 0x6c, 0x62, 0x40, 0xca, 0xe4, 0xc2, 0x52, 0x1b, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x0f, 0x92, 0xaf, 0x2d, 0x0e, 0xa7, 0x58, 0x0b, 0x78, 0x63, 0x65, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x74, 0xa1, 0x84, 0x91, 0x91, 0x81, 0xc8, 0xd0, 0x80, 0xa0, 0xb4, 0xd5, 0xb1, 0x81, 0xc4, 0xc0, 0xc0, 0x80, 0xcc, 0xd8, 0xd4, 0xa4, 0xa4, 0x36, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0x02, 0xab, 0xe3, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x15, 0xf0, 0xf3, 0xc2, 0xee, 0xdc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x64, 0x98, 0xcf, 0x06, 0xf0, 0x27, 0x0b, 0xcb, 0x9b, 0x03, 0x99, 0x4b, 0x73, 0x1b, 0x2b, 0x03, 0x51, 0x2a, 0x9b, 0xab, 0x9b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x24, 0x2c, 0x76, 0x1e, 0x94, 0x59, 0xba, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x6b, 0x7b, 0xa3, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x2a, 0x20, 0xe7, 0x41, 0x99, 0xa5, 0xdb, 0x86, 0xbf, 0x68, 0x36, 0x28, 0xb3, 0x74, 0x37, 0x28, 0x25, 0xc4, 0xd7, 0x70, 0x49, 0x6d, 0x50, 0xd4, 0x88, 0xaf, 0x06, 0x09, 0x6e, 0x9f, 0x6d, 0x78, 0xb7, 0x67, 0xc3, 0x6b, 0x3e, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x9d, 0xf2, 0xb3, 0x35, 0x48, 0xdb, 0xe4, 0xdc, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0x36, 0x48, 0xc0, 0xe4, 0xac, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x7c, 0xfd, 0xb2, 0x41, 0x62, 0x4b, 0xd5, 0x86, 0x4b, 0x6a, 0x83, 0xa2, 0x46, 0x7c, 0x0d, 0xd2, 0x36, 0x39, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0xbc, 0xb1, 0x30, 0x74, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x79, 0x65, 0x6c, 0x70, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x84, 0xc5, 0xce, 0x5a, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xa4, 0x55, 0xcf, 0x0e, 0xd2, 0x3f, 0x39, 0x37, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x48, 0xdd, 0xf1, 0xec, 0x20, 0xfd, 0x93, 0x73, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0xcc, 0xd2, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x41, 0x1a, 0xe8, 0xe7, 0x06, 0x09, 0x98, 0x9c, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0xa9, 0x94, 0x9f, 0xab, 0x41, 0xa2, 0xf5, 0x67, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xf4, 0x16, 0xb7, 0xe1, 0x31, 0x99, 0x35, 0xbc, 0xad, 0x73, 0x90, 0xaa, 0x03, 0xda, 0x1a, 0xa4, 0x6d, 0x72, 0x6e, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0x24, 0x60, 0x72, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xca, 0xf9, 0x0d, 0x0f, 0xde, 0x1c, 0x24, 0x28, 0x81, 0x56, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0x65, 0x96, 0xee, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x0d, 0xd2, 0xd6, 0x3f, 0x0f, 0xce, 0xcc, 0x6d, 0x6b, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x6e, 0x65, 0xf9, 0x86, 0x77, 0x7b, 0x36, 0xbc, 0xe6, 0x73, 0x90, 0xb2, 0xfe, 0xb9, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0xb2, 0xfb, 0xe7, 0x86, 0xb7, 0x75, 0x36, 0x48, 0xed, 0x04, 0x6d, 0x0d, 0xd2, 0x36, 0x39, 0x37, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x12, 0x30, 0x39, 0xd7, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x41, 0xfc, 0x73, 0x83, 0x74, 0x5b, 0xd0, 0xd6, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x8c, 0xdb, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0x60, 0xda, 0x6a, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0xf0, 0x66, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x06, 0x69, 0xeb, 0x9f, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0x27, 0x5b, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x73, 0x2b, 0x33, 0x37, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x83, 0x04, 0x47, 0xd0, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x92, 0xdd, 0x3f, 0x37, 0xbc, 0xad, 0xb3, 0x41, 0x82, 0x45, 0x68, 0x6b, 0x90, 0xb6, 0xc9, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x90, 0x80, 0xc9, 0xb9, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x09, 0xe2, 0x9f, 0x1b, 0x24, 0xbd, 0x84, 0xb6, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0xe0, 0x6a, 0xdb, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x1c, 0x6d, 0xb5, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x78, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0xc2, 0xee, 0x76, 0x83, 0xb4, 0xf5, 0xcf, 0x35, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0x03, 0xd9, 0x1a, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x9e, 0x5b, 0xd9, 0xb8, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x1e, 0xa4, 0x07, 0x84, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x90, 0xec, 0xfe, 0xb9, 0xe1, 0x6d, 0x9d, 0x0d, 0xd2, 0x1e, 0x43, 0x5b, 0x83, 0xb4, 0x4d, 0xce, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x83, 0x04, 0x4c, 0xce, 0x35, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x10, 0xff, 0xdc, 0x20, 0x15, 0x35, 0xb4, 0x35, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0x42, 0xab, 0xe3, 0x20, 0x29, 0xe4, 0xb3, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x12, 0x30, 0x39, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x05, 0xd6, 0x83, 0x64, 0xbd, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x8f, 0xc9, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x83, 0x53, 0x73, 0xdb, 0x06, 0x49, 0x21, 0x9f, 0x55, 0x2b, 0xe0, 0xe7, 0xbd, 0xc9, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xe9, 0x17, 0xa2, 0x0d, 0xe0, 0x03, 0x44, 0x06, 0x42, 0xf7, 0x06, 0x42, 0x16, 0x46, 0x57, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x02, 0xe1, 0xe6, 0xc1, 0x91, 0xaf, 0x75, 0xc3, 0x5f, 0x34, 0x6b, 0xf8, 0x77, 0x7e, 0x0d, 0xce, 0xa2, 0xa8, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0xc0, 0x3a, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x41, 0x6b, 0xb3, 0x83, 0x54, 0xd7, 0xcd, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0xef, 0xac, 0x4c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xf3, 0xc2, 0xd8, 0xd8, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xe4, 0x41, 0x19, 0xb5, 0xdc, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0x51, 0x5c, 0xc3, 0xdb, 0x3a, 0x83, 0xe7, 0x1b, 0x24, 0xd5, 0x89, 0xb6, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0x83, 0x44, 0x9f, 0x8c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0x3c, 0x28, 0x72, 0x5a, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf9, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0x78, 0x90, 0xe8, 0x29, 0xda, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe1, 0x41, 0x01, 0x9b, 0xbf, 0x86, 0xcf, 0x5d, 0x06, 0xcf, 0x37, 0x7c, 0x1c, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x6e, 0x90, 0x8e, 0x2a, 0xba, 0x41, 0xb2, 0xa7, 0x68, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x0c, 0xde, 0x1e, 0xa4, 0x90, 0x8a, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xc9, 0x83, 0x14, 0x52, 0xd1, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7a, 0x50, 0x46, 0x2d, 0xaf, 0xe1, 0x6d, 0x9d, 0xc1, 0xdb, 0x83, 0x32, 0x6a, 0x79, 0x0d, 0x6f, 0xeb, 0x0c, 0x3e, 0x1f, 0x94, 0x51, 0xcb, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf3, 0xa0, 0x8c, 0x5a, 0xee, 0x70, 0x8a, 0x2d, 0xe0, 0xe7, 0x95, 0x85, 0xc9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xe9, 0x35, 0xa3, 0x0d, 0xe0, 0x43, 0x16, 0x46, 0x57, 0x06, 0x42, 0xf7, 0x06, 0x02, 0x44, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0x91, 0x95, 0xd1, 0x07, 0x69, 0x4b, 0xa2, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xc8, 0xd7, 0xba, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0xc2, 0x62, 0xe7, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xe1, 0x06, 0xe9, 0x5d, 0xa3, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x90, 0x8e, 0x2a, 0xba, 0x86, 0xb7, 0x75, 0x06, 0xcf, 0x0f, 0xd2, 0x03, 0x47, 0xdb, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x48, 0x47, 0x15, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0x39, 0x48, 0x8d, 0x1c, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x54, 0x40, 0xce, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x92, 0x61, 0x3e, 0xdb, 0x20, 0x6d, 0xfd, 0x73, 0x0d, 0x6f, 0xeb, 0x0c, 0xde, 0x1e, 0xa4, 0x07, 0x8e, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xc9, 0xc1, 0xe9, 0x83, 0xf4, 0xc0, 0xd1, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0xbc, 0x3a, 0xb6, 0xb2, 0x0d, 0x12, 0x30, 0x39, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xe8, 0x41, 0x02, 0xf7, 0xe8, 0x1a, 0xde, 0xd6, 0x19, 0xbc, 0x3d, 0x48, 0xe0, 0x1e, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0xcf, 0x07, 0x09, 0xdc, 0xa3, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf3, 0x20, 0x81, 0x7b, 0xb4, 0xd5, 0x20, 0xb5, 0xfc, 0x73, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xb5, 0xfc, 0xb3, 0x01, 0x3c, 0xd8, 0xca, 0xc2, 0xe0, 0x40, 0xf2, 0xca, 0xc2, 0xe4, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xb2, 0xd7, 0xe7, 0x86, 0xbf, 0x68, 0x36, 0x7c, 0xb0, 0xba, 0xe1, 0x11, 0xd6, 0x0d, 0x52, 0x00, 0x41, 0xd7, 0xf0, 0x2b, 0xd9, 0x1a, 0xde, 0x66, 0x3d, 0x48, 0xa0, 0x07, 0xdd, 0x20, 0x9d, 0x2d, 0xb4, 0x0e, 0xa7, 0x58, 0xad, 0x41, 0x32, 0xa0, 0xe8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x32, 0xa0, 0x68, 0x03, 0xf0, 0x43, 0x16, 0x96, 0x07, 0xf2, 0x02, 0x42, 0xf7, 0x06, 0x42, 0x16, 0x96, 0x07, 0xf2, 0x66, 0x06, 0x92, 0x57, 0x16, 0x26, 0xb7, 0xe1, 0x17, 0xa5, 0x0d, 0x92, 0xec, 0x3e, 0x37, 0xfc, 0x45, 0xb3, 0x86, 0xcf, 0x95, 0x36, 0x38, 0x09, 0xa4, 0x6e, 0x70, 0x6e, 0x27, 0xdd, 0xe0, 0x84, 0x4c, 0xda, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0xd9, 0x20, 0x11, 0xc2, 0xf3, 0xf0, 0xe0, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x20, 0xb5, 0xdf, 0xf3, 0xf0, 0xe0, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xd8, 0xca, 0xe0, 0x83, 0xc2, 0x66, 0xbe, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x5c, 0x52, 0x1b, 0x14, 0x35, 0xe2, 0xab, 0x41, 0x22, 0x84, 0x67, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x14, 0x58, 0x37, 0x48, 0xc0, 0xe4, 0x5c, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x95, 0x9b, 0xf4, 0x20, 0xfd, 0x93, 0xb3, 0x35, 0x48, 0xdb, 0xe4, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x61, 0x77, 0x7b, 0x90, 0x84, 0x4e, 0xda, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0xbe, 0x7e, 0xd9, 0x20, 0xb1, 0xa5, 0x6a, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0x67, 0x1b, 0x24, 0x60, 0x72, 0xae, 0xe1, 0xe3, 0xa8, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x52, 0xfb, 0x3d, 0x3b, 0x48, 0xff, 0xe4, 0x6c, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x6a, 0x90, 0x8c, 0x4c, 0xda, 0x41, 0x91, 0xd3, 0xba, 0x06, 0x09, 0x31, 0xa5, 0x87, 0x07, 0x6f, 0xda, 0xa0, 0x94, 0x10, 0x5f, 0xc3, 0x25, 0xb5, 0x41, 0x51, 0x23, 0xbe, 0x06, 0x69, 0x41, 0xa5, 0x07, 0x05, 0x6c, 0xfe, 0x1a, 0x24, 0xc4, 0x94, 0x1e, 0x1e, 0x93, 0x59, 0x83, 0xb4, 0x4d, 0xce, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0xf0, 0x20, 0x45, 0xa4, 0xb4, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0x24, 0xc4, 0x94, 0x6e, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0xa4, 0xb6, 0x94, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x42, 0x81, 0x75, 0x83, 0x04, 0x4c, 0xce, 0x0d, 0x12, 0x54, 0x4a, 0x6b, 0x0d, 0xd2, 0x36, 0x39, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xd8, 0xdd, 0x1e, 0x24, 0x67, 0x96, 0xb6, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0xc2, 0x62, 0xe7, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0x92, 0xfe, 0x42, 0x37, 0x48, 0x83, 0x27, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3c, 0xb5, 0x1b, 0xa4, 0x19, 0x84, 0x6e, 0x90, 0xda, 0x52, 0x5a, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0xe9, 0x97, 0xa4, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x8c, 0x1e, 0xc3, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0xb4, 0xa0, 0xd2, 0x83, 0x24, 0x6f, 0xd0, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xb3, 0x0d, 0x12, 0x30, 0x39, 0x37, 0x38, 0x7a, 0xc7, 0xb5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0xe7, 0x56, 0x26, 0x6f, 0xf8, 0x38, 0xea, 0x20, 0x6d, 0xfd, 0x73, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x64, 0xf7, 0xcf, 0x0d, 0x6f, 0xeb, 0x6c, 0x90, 0x52, 0x62, 0xda, 0x1a, 0xa4, 0x6d, 0x72, 0x6e, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x07, 0x09, 0x15, 0xa6, 0x6b, 0x90, 0x16, 0x54, 0xba, 0xe1, 0xdf, 0x9c, 0x0d, 0x0f, 0xde, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x22, 0x13, 0x77, 0x83, 0x03, 0x3b, 0xc9, 0x06, 0x09, 0x3b, 0xa6, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x90, 0x7e, 0x49, 0xba, 0xe1, 0x13, 0x9b, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x36, 0x48, 0x70, 0xfb, 0x3c, 0x3c, 0x78, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x48, 0xb4, 0xfe, 0xdc, 0xf0, 0x41, 0xce, 0x06, 0xa9, 0xfe, 0xa5, 0x07, 0x89, 0xf3, 0x9f, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0xa4, 0x5f, 0x92, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x7a, 0x69, 0xf3, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x2a, 0xe7, 0x37, 0x48, 0x03, 0xfd, 0x3c, 0x48, 0x50, 0x02, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xd9, 0x06, 0x09, 0x98, 0x9c, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x54, 0x58, 0xd3, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0xa4, 0xad, 0x7f, 0xae, 0xe1, 0xe3, 0xa8, 0x83, 0x34, 0xd0, 0xcf, 0x35, 0x7c, 0x1c, 0x75, 0x90, 0x80, 0xc9, 0xd9, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xe9, 0x94, 0x9f, 0x07, 0xa9, 0xe3, 0xa6, 0x6b, 0x90, 0xb6, 0xc9, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x1e, 0xa4, 0x3b, 0x9b, 0xb6, 0x1a, 0x24, 0xa6, 0x8f, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x24, 0xa6, 0x8f, 0x36, 0x80, 0x07, 0x5d, 0x5a, 0x5b, 0x19, 0x48, 0x18, 0xdd, 0x5b, 0xdb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x03, 0xeb, 0xe0, 0xe0, 0x88, 0x92, 0xba, 0xe1, 0x2f, 0x9a, 0x0d, 0x92, 0x10, 0x37, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x48, 0xf7, 0xdc, 0xdc, 0x20, 0xc9, 0x80, 0x70, 0xc3, 0x9f, 0x40, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe0, 0xa9, 0xdd, 0x20, 0xd1, 0x50, 0xf4, 0x20, 0x85, 0x92, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3c, 0xb5, 0x1b, 0x24, 0x35, 0x8c, 0x1e, 0xa4, 0x63, 0x73, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x83, 0x54, 0x8b, 0xd1, 0x83, 0x64, 0x8d, 0xce, 0x0d, 0x12, 0x40, 0x46, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xcc, 0xc2, 0xc6, 0x0d, 0x9f, 0xd8, 0x6c, 0x90, 0x9c, 0xbc, 0xb9, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0xa1, 0x66, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x64, 0x96, 0xd1, 0x0d, 0x0f, 0xde, 0x6c, 0x50, 0x4a, 0x88, 0x6f, 0x90, 0x12, 0xc2, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x03, 0xde, 0x0d, 0xd2, 0xd2, 0x38, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0x41, 0x32, 0xcb, 0x68, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x90, 0xcc, 0x32, 0xba, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x83, 0x64, 0x96, 0xd1, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x05, 0x65, 0xf7, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x34, 0xe0, 0xdd, 0xe0, 0xb8, 0x3c, 0xb3, 0x41, 0x12, 0x23, 0x67, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe4, 0xc9, 0xd3, 0x3a, 0x9c, 0x62, 0xad, 0x00, 0xde, 0x73, 0x68, 0x61, 0x2d, 0x68, 0x61, 0x73, 0x68, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0xf9, 0x32, 0x00, 0x2f, 0x33, 0x64, 0x3a, 0x20, 0x53, 0x48, 0x41, 0x20, 0x68, 0x61, 0x73, 0x68, 0x20, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x0b, 0xf8, 0x73, 0x68, 0x61, 0xee, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x6a, 0x0e, 0x6a, 0x03, 0xd0, 0x31, 0x87, 0x16, 0xd6, 0x12, 0x03, 0x82, 0x42, 0x56, 0x06, 0x27, 0x57, 0x36, 0x16, 0x46, 0x57, 0x46, 0x96, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xe4, 0xea, 0xf4, 0xc3, 0x0f, 0x35, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x33, 0x2b, 0xbb, 0x37, 0x28, 0x25, 0xc4, 0x37, 0x38, 0xf3, 0xaf, 0x6d, 0xb8, 0xa4, 0x36, 0x28, 0x6a, 0xc4, 0xd7, 0xf0, 0xe0, 0xce, 0xc1, 0x61, 0x81, 0xad, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xdd, 0x85, 0x8d, 0x1b, 0x7e, 0x51, 0xda, 0xf0, 0xb7, 0xd2, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x38, 0x2c, 0xb0, 0x1d, 0x24, 0x6a, 0x6a, 0xb6, 0xe1, 0x13, 0x9b, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x36, 0x28, 0x27, 0xb1, 0x37, 0xbc, 0xad, 0xb3, 0x41, 0x39, 0x89, 0xbd, 0x41, 0x02, 0x1f, 0x6a, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x62, 0x74, 0x7b, 0xc3, 0xdb, 0x3a, 0x1b, 0x14, 0xa3, 0xdb, 0x07, 0xa9, 0xcb, 0xa8, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xa2, 0xd0, 0x7b, 0xc3, 0xdb, 0x3a, 0x1b, 0x14, 0x85, 0xde, 0x07, 0xa9, 0xcb, 0xa8, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x92, 0x2a, 0x7c, 0xc3, 0xdb, 0x3a, 0x1b, 0x94, 0x54, 0xe1, 0x07, 0xa9, 0xcb, 0xa8, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xe2, 0x54, 0x7b, 0xc3, 0xdb, 0x3a, 0x1b, 0x14, 0xa7, 0xda, 0x07, 0xa9, 0xcb, 0xa8, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x72, 0x61, 0xec, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0xd7, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0x0e, 0x0a, 0x4a, 0xf1, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x51, 0xfc, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0x86, 0xb7, 0x75, 0x36, 0x48, 0x4e, 0x43, 0xad, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb3, 0x3a, 0x76, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xb2, 0x38, 0x7a, 0xc3, 0x83, 0x37, 0x1b, 0x1c, 0x5d, 0x07, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x75, 0x24, 0xb5, 0x83, 0xd4, 0xa2, 0xd4, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x61, 0x65, 0x6e, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0x41, 0x00, 0x5a, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb0, 0xbb, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0x5c, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x50, 0xc0, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x61, 0x77, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0xc1, 0x61, 0x65, 0x6e, 0x83, 0x94, 0xb6, 0xd4, 0xd6, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x14, 0x80, 0x3a, 0x48, 0xda, 0x4d, 0x3d, 0x28, 0x9c, 0x64, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0xc3, 0x81, 0x35, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x1a, 0x94, 0x54, 0xe1, 0x6d, 0x70, 0xe6, 0x5f, 0x3b, 0x38, 0x2c, 0xcf, 0x1c, 0x24, 0xdb, 0xa6, 0xd6, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0xc7, 0x56, 0x86, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0xf8, 0x77, 0x83, 0x94, 0xd3, 0xaa, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x62, 0x55, 0x6a, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x6b, 0x62, 0xf8, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x48, 0x5e, 0xf4, 0xd8, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xd0, 0xc2, 0xf0, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0x90, 0x08, 0xea, 0xb1, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x78, 0x7a, 0x78, 0xf0, 0x66, 0xc3, 0x57, 0x38, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x94, 0xd1, 0xe7, 0x1b, 0xde, 0xd6, 0xd9, 0x20, 0x05, 0x3f, 0xb5, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xb1, 0xad, 0xbc, 0xc1, 0x61, 0x81, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x58, 0x2c, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xa2, 0xe5, 0x0d, 0x0e, 0x0b, 0x6c, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe4, 0x16, 0xd5, 0xaa, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0xef, 0xee, 0x0d, 0xdf, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xc8, 0xea, 0xf0, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x12, 0xcd, 0x6e, 0x90, 0x72, 0x5a, 0xb5, 0xc1, 0xe1, 0x99, 0xe2, 0x20, 0x01, 0x41, 0x75, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x24, 0x47, 0xd5, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x6c, 0x2b, 0x6f, 0x70, 0x58, 0x60, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x48, 0xd5, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x82, 0x68, 0x79, 0x83, 0xc3, 0x02, 0xdb, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x39, 0x53, 0xb5, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0x0a, 0x78, 0x6a, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0xae, 0x1e, 0x1c, 0x5e, 0xe5, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0x1c, 0x3a, 0x48, 0x61, 0x8e, 0x5a, 0xc3, 0xdb, 0x3a, 0x1b, 0x24, 0x39, 0xaa, 0xb6, 0xe1, 0x13, 0x9b, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0x67, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x48, 0xd7, 0x44, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0x14, 0xe6, 0xa8, 0x83, 0x82, 0x52, 0x7c, 0x83, 0x64, 0x8b, 0xd5, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xed, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x77, 0x59, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0xdc, 0x20, 0x85, 0x39, 0xea, 0xe0, 0xa8, 0x32, 0x77, 0x90, 0x5c, 0xb4, 0xba, 0x86, 0xcf, 0x5d, 0x06, 0x77, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xba, 0xcb, 0xea, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x06, 0x29, 0xcc, 0x51, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0x71, 0x07, 0xc9, 0x45, 0xab, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x77, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0xbb, 0xac, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x6e, 0x90, 0xc2, 0x1c, 0x75, 0x70, 0x74, 0x95, 0x3b, 0x48, 0x2e, 0x5a, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x7d, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xc1, 0xdf, 0x36, 0x3c, 0x78, 0xb3, 0xe1, 0x31, 0x99, 0x35, 0x48, 0x32, 0x20, 0xdc, 0xe0, 0x10, 0x03, 0xb1, 0x41, 0xca, 0xdb, 0xd5, 0x06, 0x87, 0xd0, 0x89, 0x0d, 0x8a, 0xa1, 0xdd, 0x83, 0xb4, 0xff, 0xab, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x48, 0xd1, 0x58, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x05, 0x65, 0xf7, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x34, 0xe0, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x1c, 0x16, 0xd8, 0x36, 0x48, 0x61, 0x8e, 0x6a, 0x83, 0x94, 0xaf, 0xa7, 0x0e, 0x92, 0x8b, 0x56, 0x37, 0x48, 0x2e, 0xb4, 0x6c, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0xf5, 0xf0, 0xe0, 0xcd, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0xe9, 0x2e, 0xab, 0x1b, 0x1e, 0xbc, 0x39, 0x48, 0xf1, 0x53, 0x5d, 0xc3, 0xe7, 0x2e, 0x83, 0x8b, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xdd, 0x65, 0x75, 0xc3, 0x63, 0x32, 0x07, 0x29, 0x7e, 0xaa, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x71, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0xbb, 0xac, 0x6e, 0x10, 0xb0, 0xac, 0x07, 0x29, 0x7e, 0xaa, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x72, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0xbb, 0xac, 0x6e, 0x50, 0x54, 0x8a, 0x1f, 0xa4, 0xf8, 0xa9, 0xae, 0xe1, 0x73, 0x97, 0xc1, 0xcb, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0xee, 0xb2, 0xba, 0xc1, 0xa9, 0xb9, 0xed, 0x20, 0xc5, 0x4f, 0xb5, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0xc3, 0x0f, 0x35, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0xe1, 0x60, 0x75, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x0d, 0x0a, 0xdd, 0xf3, 0x35, 0x48, 0x0e, 0x54, 0xdd, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0xd8, 0x56, 0xde, 0xe0, 0xb0, 0xc0, 0xb6, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xd8, 0x86, 0xdb, 0xf0, 0xb4, 0xce, 0x06, 0x89, 0x2b, 0xac, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0xdb, 0x70, 0x1b, 0xde, 0x0b, 0xda, 0x20, 0x05, 0x88, 0xb5, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x61, 0x1b, 0x6e, 0xc3, 0xd3, 0x3b, 0x1b, 0x24, 0x53, 0xb1, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x6c, 0xc3, 0x6d, 0x50, 0xae, 0xcb, 0x6e, 0x90, 0x9c, 0xc6, 0xda, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0xb0, 0x0d, 0xb7, 0x41, 0x39, 0x01, 0xbd, 0x41, 0xc2, 0x1f, 0x6b, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf0, 0x66, 0xf8, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x28, 0xbb, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x47, 0xef, 0xb8, 0xc3, 0x73, 0x41, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa3, 0x77, 0xdc, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0xb7, 0x1f, 0xda, 0xe0, 0xb0, 0xc0, 0xb6, 0xe1, 0x31, 0x99, 0xc3, 0x5b, 0x68, 0x07, 0xa5, 0xba, 0x6c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x6f, 0x96, 0x6f, 0x90, 0x64, 0x40, 0xb8, 0xc1, 0x21, 0x06, 0x62, 0xc3, 0x7b, 0x41, 0x07, 0x05, 0x20, 0xff, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xc0, 0x9b, 0xe9, 0x1b, 0x24, 0x19, 0x10, 0x6e, 0x50, 0x50, 0x76, 0x6f, 0x90, 0x28, 0xd2, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x7a, 0xc7, 0x1d, 0x14, 0xdd, 0xb2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa3, 0x77, 0xdc, 0x41, 0x01, 0xc8, 0xdf, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x47, 0x57, 0xd6, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0xb0, 0x95, 0x36, 0x48, 0x61, 0x8e, 0x3a, 0x28, 0x9c, 0x64, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0x48, 0x61, 0x8e, 0x5a, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0xd8, 0xd4, 0x1a, 0x24, 0x19, 0x10, 0x6e, 0x70, 0xd8, 0x86, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xc1, 0xdf, 0x36, 0x3c, 0x78, 0xb3, 0xc1, 0x61, 0x81, 0xed, 0xf0, 0xd0, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0x78, 0x33, 0xbc, 0x0d, 0xca, 0x09, 0xe8, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xba, 0xcb, 0xea, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xa9, 0x17, 0xaa, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x77, 0x59, 0xdd, 0x20, 0x85, 0x39, 0xea, 0x20, 0xb9, 0x68, 0xb5, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x11, 0xd6, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x1a, 0xb6, 0xd2, 0x06, 0x29, 0xcc, 0x51, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0xa3, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0x48, 0x61, 0x8e, 0x5a, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0xe8, 0xa9, 0x35, 0x48, 0x32, 0x20, 0xdc, 0xe0, 0xb0, 0x0d, 0xb7, 0x41, 0x72, 0x75, 0xeb, 0x1a, 0xde, 0xd6, 0x19, 0x78, 0xb3, 0xbc, 0x0d, 0xca, 0x09, 0xe8, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xba, 0xcb, 0xea, 0x86, 0xc7, 0x64, 0x0e, 0x92, 0xfc, 0x5b, 0x0f, 0x52, 0x0d, 0x5c, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x69, 0xd8, 0x4a, 0x1b, 0xa4, 0x30, 0x47, 0xad, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0x14, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xf1, 0xbb, 0x41, 0x0a, 0x73, 0xd4, 0x1a, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x43, 0x77, 0xad, 0x41, 0x92, 0x01, 0xe1, 0x06, 0x87, 0x6d, 0xb8, 0x0d, 0x92, 0xab, 0x5b, 0xd7, 0xf0, 0xb6, 0xce, 0xc0, 0x9b, 0xe9, 0x6d, 0x50, 0x4e, 0x40, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0x5d, 0x56, 0x37, 0x08, 0x58, 0xd6, 0x83, 0x24, 0xff, 0xd6, 0x83, 0x54, 0x03, 0xd7, 0x0d, 0x92, 0x0c, 0x08, 0x37, 0x38, 0x6c, 0xc3, 0x6d, 0x90, 0x5c, 0xdd, 0xba, 0x41, 0xca, 0x94, 0xeb, 0x06, 0xe5, 0x04, 0xf4, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xdd, 0x65, 0x75, 0x83, 0xa2, 0x52, 0xfc, 0x20, 0xc9, 0xbf, 0xf5, 0x20, 0xd5, 0xc0, 0x75, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0x20, 0xb9, 0xd0, 0x72, 0x0d, 0x0f, 0xee, 0x6c, 0x78, 0x5b, 0x67, 0x83, 0x14, 0xcf, 0xd6, 0x36, 0x38, 0x8d, 0xdc, 0xac, 0xe1, 0x1f, 0x9e, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x06, 0x7f, 0xdb, 0xf0, 0xe0, 0xcd, 0x06, 0x29, 0x5b, 0x9e, 0x87, 0xb7, 0xd0, 0xd6, 0xa0, 0xc8, 0x97, 0x3d, 0x3c, 0xbd, 0xb3, 0x06, 0x45, 0x08, 0xf4, 0x41, 0xb9, 0x2e, 0xdb, 0x0a, 0xf8, 0x73, 0x68, 0x61, 0xf7, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x2a, 0xcd, 0x6b, 0x03, 0x78, 0xa2, 0x85, 0xcd, 0xa1, 0x81, 0xd0, 0xbd, 0x81, 0xb8, 0x89, 0xa5, 0xd1, 0xcd, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0x2e, 0x8c, 0x3d, 0xfc, 0x50, 0xb3, 0xc1, 0xd9, 0x87, 0x6d, 0x83, 0x14, 0x33, 0xd4, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x49, 0x05, 0x9c, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xdf, 0xce, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x5d, 0x76, 0xa7, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xd2, 0xd8, 0x6b, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0c, 0xc4, 0x06, 0x85, 0x97, 0xf1, 0x41, 0x6a, 0x51, 0x6a, 0x1d, 0x14, 0x5d, 0xc6, 0x2b, 0xe0, 0xcf, 0xa1, 0x85, 0x99, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xe9, 0xae, 0xaf, 0x0d, 0xa0, 0x87, 0x16, 0xc6, 0x66, 0x06, 0x32, 0x87, 0x16, 0xd6, 0x22, 0x53, 0x63, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0xf5, 0xeb, 0xf5, 0x20, 0xd9, 0xed, 0x75, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x33, 0x0f, 0xde, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x51, 0x7c, 0xdd, 0x20, 0x49, 0xf2, 0xf5, 0x20, 0xb5, 0x28, 0x75, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x62, 0x20, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0x06, 0xe7, 0x05, 0x9a, 0x83, 0xa3, 0x3b, 0xde, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc4, 0xc7, 0x3d, 0x48, 0x57, 0x80, 0xed, 0x70, 0x8a, 0xb5, 0x06, 0x69, 0x3f, 0x2c, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x69, 0x3f, 0x2c, 0x0d, 0xc0, 0xc7, 0xd8, 0x9b, 0x9c, 0x5c, 0xd9, 0x18, 0x1d, 0x88, 0x58, 0x1e, 0x5d, 0x59, 0xcb, 0x9b, 0x1c, 0x59, 0x99, 0xdc, 0x06, 0x65, 0x97, 0xec, 0x06, 0x69, 0x3f, 0x2c, 0x6b, 0xb8, 0xa4, 0xd6, 0x78, 0xbc, 0x41, 0xda, 0x0f, 0x4b, 0xcd, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0xbe, 0x19, 0x5b, 0x5a, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x3f, 0x66, 0x6c, 0x69, 0x70, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x77, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xbf, 0xf3, 0x6b, 0x70, 0x0c, 0x2f, 0xad, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xce, 0x42, 0xa6, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x00, 0xda, 0x68, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0xd4, 0x4c, 0xd8, 0x83, 0xb2, 0xcf, 0xb8, 0x15, 0xf0, 0xdb, 0xca, 0xca, 0xe8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x68, 0x2b, 0x0b, 0x9b, 0xab, 0x93, 0x2b, 0x03, 0x49, 0x73, 0x83, 0xab, 0xa3, 0x03, 0x99, 0x4b, 0xd3, 0x2b, 0xdb, 0xf0, 0x8b, 0xd2, 0x86, 0x2f, 0x97, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x8a, 0x7f, 0x0f, 0x8a, 0x9e, 0xfd, 0xc3, 0x43, 0x3f, 0x2b, 0xe0, 0x9b, 0xb1, 0xa5, 0xb9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0x98, 0xb1, 0xa5, 0xc1, 0x81, 0xa4, 0xb9, 0xc1, 0xd5, 0xd1, 0x6d, 0xf8, 0x45, 0x69, 0xc3, 0x97, 0x4b, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xd4, 0x3a, 0x3e, 0x28, 0x7a, 0xf6, 0x0f, 0xa7, 0xd8, 0x02, 0xbe, 0x19, 0x5b, 0x1a, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x2f, 0x66, 0x6c, 0x69, 0x70, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0xe9, 0x86, 0x69, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x53, 0x8b, 0x59, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x34, 0xa7, 0xd8, 0x0d, 0x92, 0x4a, 0x61, 0x0f, 0x0a, 0x4a, 0xf1, 0x83, 0xe3, 0x8f, 0xcb, 0xe1, 0x14, 0xeb, 0x70, 0x8a, 0x6d, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0xf0, 0xcf, 0xa1, 0x85, 0xb5, 0xc8, 0xd4, 0xd8, 0xb0, 0x1b, 0x24, 0x19, 0x10, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x4e, 0x57, 0x65, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0xd2, 0xce, 0x60, 0x5b, 0xc3, 0xdb, 0x3a, 0x1b, 0xa4, 0xe1, 0xec, 0xb4, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x69, 0x21, 0xb1, 0xad, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0x14, 0xd4, 0x0a, 0xd0, 0xce, 0xa1, 0x85, 0xb5, 0xd4, 0xc4, 0xc8, 0x0d, 0x92, 0x0c, 0x08, 0x37, 0x48, 0x1d, 0x8c, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0xa4, 0xcf, 0xc3, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0x39, 0xb4, 0x30, 0xbd, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xe2, 0x67, 0xec, 0x06, 0x29, 0xd0, 0xa9, 0xb5, 0x02, 0x34, 0x73, 0x68, 0x61, 0x2d, 0x71, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x0e, 0xc6, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x92, 0x73, 0x61, 0x5b, 0xc3, 0xdb, 0x3a, 0x03, 0x7c, 0x73, 0x68, 0x61, 0x2d, 0x31, 0x6c, 0xad, 0x06, 0x69, 0xfa, 0xb1, 0x1b, 0x1e, 0x1f, 0xd9, 0x20, 0x09, 0x78, 0x65, 0xc3, 0x2f, 0x4a, 0x1b, 0x24, 0x37, 0xc2, 0x6e, 0xf8, 0x8b, 0x66, 0xc3, 0x0f, 0x35, 0x1b, 0x3e, 0xb1, 0xd9, 0x20, 0x99, 0x0e, 0x75, 0xc3, 0x27, 0x36, 0x1b, 0x24, 0xe5, 0xa2, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0x90, 0x3a, 0x92, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x03, 0xde, 0x0d, 0x12, 0x5f, 0x52, 0x37, 0x48, 0xcd, 0x84, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xc4, 0xaa, 0xd4, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0xca, 0xe2, 0xe8, 0x0d, 0x0f, 0xde, 0x6c, 0x70, 0x74, 0x1d, 0x5c, 0xc3, 0x2f, 0x2e, 0x1b, 0xa4, 0xb4, 0xa5, 0x1e, 0xa4, 0x85, 0xc2, 0x1e, 0x24, 0xe4, 0xa5, 0x1e, 0xa4, 0xc3, 0xa7, 0x1e, 0x4e, 0xb1, 0x16, 0xe0, 0x9f, 0x43, 0x0b, 0x6b, 0xa9, 0x89, 0x91, 0x61, 0x37, 0x48, 0x32, 0x20, 0xdc, 0x20, 0x75, 0x30, 0x76, 0x83, 0xd4, 0xc5, 0xd8, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xe2, 0xa8, 0x4d, 0x07, 0x09, 0xd3, 0xb1, 0x87, 0x53, 0x6c, 0x01, 0xda, 0x39, 0xb4, 0xb0, 0x16, 0x99, 0x1a, 0xbb, 0x41, 0x92, 0x01, 0xe1, 0x06, 0xa9, 0x83, 0xb1, 0x1b, 0x24, 0x07, 0xc7, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x92, 0xaa, 0x77, 0x3a, 0x48, 0xdd, 0x8c, 0x3d, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0xd6, 0x20, 0xed, 0x8f, 0x65, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xed, 0x8f, 0xa5, 0x01, 0xfc, 0x63, 0x64, 0x70, 0xc4, 0xd2, 0xe8, 0x40, 0xdc, 0xde, 0xea, 0xdc, 0x40, 0xd0, 0xc2, 0xe6, 0xd0, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xbc, 0x3a, 0xfc, 0x20, 0x4c, 0xc7, 0x36, 0xfc, 0x45, 0xb3, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0xc0, 0xab, 0xb3, 0x43, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x87, 0x9a, 0x0d, 0x0a, 0x82, 0xd9, 0x35, 0x48, 0x9c, 0x97, 0x6d, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xd2, 0x5d, 0x5f, 0x5b, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x48, 0x2b, 0x63, 0x59, 0xc3, 0xdb, 0x3a, 0x07, 0x49, 0x14, 0xb3, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x54, 0x8e, 0xd9, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0xb4, 0x3f, 0x96, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x18, 0x16, 0xbb, 0x1d, 0x24, 0xbe, 0xcc, 0x36, 0x6b, 0x90, 0x38, 0x6a, 0xb3, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x90, 0x38, 0x6a, 0xd3, 0x00, 0xbc, 0xcc, 0xa1, 0x85, 0xb5, 0xd4, 0xc4, 0xc8, 0x80, 0xdc, 0xa5, 0xd1, 0xa1, 0x81, 0xb0, 0x95, 0xb9, 0x9d, 0xd1, 0xa1, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0xc4, 0x51, 0x9b, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x83, 0x54, 0xb5, 0xd7, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0xa1, 0x66, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0x24, 0x25, 0xa5, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xf0, 0xe6, 0xa0, 0xe8, 0x32, 0x3e, 0x48, 0x2d, 0x4a, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x9f, 0xbb, 0x6c, 0x90, 0xc0, 0x87, 0xba, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x99, 0x7f, 0x6d, 0xc3, 0x25, 0xb5, 0x41, 0x51, 0x23, 0xbe, 0x86, 0x07, 0x77, 0x0e, 0x8e, 0xcb, 0x33, 0xad, 0xe1, 0x73, 0x97, 0x0d, 0xd2, 0x35, 0x51, 0x37, 0xfc, 0xa2, 0xb4, 0xe1, 0x6f, 0xa5, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x12, 0xcd, 0x6e, 0x70, 0x5c, 0x9e, 0x39, 0x48, 0xd4, 0xd4, 0x6c, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x74, 0x5e, 0xd4, 0x0d, 0xd2, 0xa0, 0x51, 0x0f, 0x52, 0xec, 0x51, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x48, 0x1d, 0x49, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x01, 0xef, 0x06, 0x89, 0x2f, 0xa9, 0x07, 0x45, 0x97, 0xf1, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x89, 0x55, 0xa9, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x94, 0xc5, 0xd1, 0x1b, 0x1e, 0xbc, 0xd9, 0xe0, 0xe8, 0x3a, 0xb8, 0x41, 0x62, 0x5a, 0xea, 0x06, 0x49, 0x79, 0xa9, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x76, 0xb7, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0x0e, 0xf0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xd8, 0xdd, 0x6e, 0x90, 0xbe, 0x9a, 0xba, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0xe0, 0x00, 0xa8, 0x83, 0x54, 0x41, 0xda, 0x83, 0xc2, 0x49, 0x76, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0x10, 0x98, 0xba, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0x20, 0x05, 0x3c, 0x75, 0x83, 0x33, 0xff, 0xda, 0xc1, 0x69, 0x81, 0xe6, 0x20, 0xd9, 0x36, 0xb5, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x48, 0xc1, 0x4f, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0xf1, 0xef, 0x06, 0x29, 0xaf, 0x55, 0x07, 0x09, 0x08, 0xaa, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0xa4, 0x5e, 0xa8, 0x6e, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x83, 0xf4, 0xd2, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x92, 0x5b, 0x54, 0x37, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0xf8, 0x41, 0xf2, 0x0a, 0xcc, 0x86, 0x4f, 0x6c, 0x36, 0x48, 0x02, 0x52, 0xdd, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0xfc, 0x50, 0xb3, 0xe1, 0x83, 0x9c, 0x0d, 0x92, 0x9f, 0x54, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x64, 0x2e, 0xb5, 0xc1, 0x71, 0x79, 0x66, 0x83, 0x34, 0x3f, 0xd5, 0x83, 0x24, 0x72, 0xd5, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x92, 0x1c, 0x55, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x48, 0xce, 0x54, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x06, 0x29, 0xaf, 0x55, 0x07, 0xa9, 0xa9, 0xaa, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x24, 0x39, 0xaa, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x14, 0x8c, 0xda, 0x0d, 0x8e, 0xcb, 0x33, 0x1b, 0xa4, 0x70, 0xab, 0x1e, 0x24, 0x91, 0xab, 0x6e, 0xf8, 0xc4, 0x66, 0x83, 0x04, 0x78, 0xd5, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0xc3, 0x0f, 0x35, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0xe1, 0x60, 0x75, 0x83, 0x64, 0x8b, 0xd5, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xbb, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0x5d, 0x56, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x48, 0x61, 0x8e, 0xda, 0xe0, 0x74, 0xff, 0xd6, 0x41, 0x72, 0xd1, 0xea, 0x1a, 0x3e, 0x77, 0x19, 0xbc, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0xe9, 0x2e, 0xab, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x07, 0x69, 0x26, 0x94, 0x07, 0xc9, 0x45, 0xab, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0xf7, 0x20, 0x99, 0x72, 0x75, 0x0d, 0x9f, 0xbb, 0x0c, 0xfe, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x74, 0x97, 0xd5, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x0d, 0x52, 0x98, 0xa3, 0x0e, 0x4e, 0x0b, 0x34, 0x07, 0xc9, 0x45, 0xab, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x8e, 0x6f, 0x90, 0x64, 0x40, 0xb8, 0xc1, 0x21, 0x06, 0x62, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x8a, 0xd1, 0xed, 0x36, 0x3c, 0x78, 0xb3, 0xe1, 0x31, 0x99, 0x0d, 0x52, 0xde, 0xae, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x4a, 0xd8, 0x6e, 0x78, 0xf0, 0x66, 0x83, 0xc3, 0xca, 0xdc, 0x41, 0x42, 0x88, 0xed, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc4, 0xc7, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0xbc, 0x39, 0x38, 0x2d, 0xd0, 0x1c, 0x24, 0x84, 0xd8, 0xb6, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbe, 0x41, 0x92, 0x01, 0xe1, 0x06, 0x87, 0x18, 0x88, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xaa, 0x84, 0xed, 0x86, 0x07, 0x6f, 0x36, 0x48, 0x26, 0x6e, 0x3d, 0x38, 0x21, 0x50, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x52, 0x25, 0x6c, 0x37, 0x3c, 0x78, 0xb3, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0xd0, 0x7e, 0x70, 0x42, 0xa0, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf8, 0xb8, 0x6b, 0xf8, 0xc5, 0x65, 0xc3, 0x83, 0x37, 0x07, 0x87, 0xe5, 0x99, 0x83, 0x13, 0x02, 0x45, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xeb, 0x1b, 0x24, 0x19, 0x10, 0x6e, 0x70, 0xd8, 0x86, 0xdb, 0xa0, 0x18, 0xda, 0xdd, 0x20, 0x99, 0xd2, 0x69, 0x83, 0x84, 0xcb, 0xab, 0x83, 0xf4, 0x6a, 0xa7, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x52, 0x34, 0x56, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x41, 0xd9, 0xbd, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xc7, 0xe5, 0x99, 0x83, 0xa4, 0x00, 0xd6, 0x83, 0xe4, 0x02, 0xd6, 0x83, 0xe4, 0xa2, 0xd5, 0x83, 0x24, 0x07, 0xd6, 0x0d, 0x9f, 0xd8, 0x6c, 0x90, 0x66, 0xc1, 0xba, 0xe1, 0x13, 0x9b, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x8a, 0x09, 0xeb, 0x06, 0xc9, 0x3a, 0xac, 0x1b, 0xa4, 0x3d, 0xb1, 0x6e, 0x90, 0x46, 0xc6, 0xba, 0x41, 0x6a, 0x1e, 0xeb, 0x1a, 0x3e, 0x77, 0x19, 0xdc, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0xe9, 0x2e, 0xab, 0x07, 0x09, 0x7a, 0xaa, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x73, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0xbb, 0xac, 0x6e, 0x70, 0x5c, 0x9e, 0x39, 0x48, 0xf1, 0x53, 0x5d, 0xc3, 0xe7, 0x2e, 0x83, 0xa3, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xdd, 0x65, 0x75, 0x83, 0xf3, 0x02, 0xcd, 0x41, 0x8a, 0x9f, 0x6a, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x86, 0x1f, 0x6a, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0xc2, 0xc1, 0xea, 0x1a, 0x2e, 0xa9, 0x0d, 0x0e, 0xfb, 0x1d, 0x1b, 0x14, 0xba, 0xe7, 0x6b, 0x90, 0x1c, 0xa8, 0xba, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0xb1, 0xad, 0xbc, 0xc1, 0x71, 0x79, 0x66, 0x83, 0xa3, 0xeb, 0xe0, 0x06, 0x09, 0xc1, 0xac, 0x1b, 0xa4, 0x42, 0xb3, 0x6e, 0x90, 0x04, 0xce, 0xba, 0x41, 0xfa, 0x3b, 0xeb, 0x06, 0x29, 0x00, 0xad, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc3, 0x36, 0xdc, 0x06, 0xc5, 0x48, 0xed, 0x06, 0x89, 0x1e, 0xb7, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0xdb, 0x70, 0x1b, 0x94, 0x3f, 0xb5, 0x1b, 0x24, 0xbf, 0xdc, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x6c, 0xc3, 0x6d, 0x70, 0x50, 0xa6, 0xdb, 0x20, 0xa5, 0xe8, 0xb6, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x3d, 0x05, 0xdb, 0xf0, 0xb9, 0xcb, 0xe0, 0xec, 0x06, 0x49, 0x06, 0x84, 0x1b, 0x1c, 0x62, 0x20, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa9, 0x12, 0xb6, 0x1b, 0x1e, 0xbc, 0xd9, 0x20, 0xe5, 0xc9, 0xf3, 0xf0, 0xd0, 0xcf, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x55, 0xc2, 0x76, 0xc3, 0x83, 0x37, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0x15, 0x87, 0x87, 0x7e, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa9, 0x12, 0xb6, 0x1b, 0x1e, 0xbc, 0xd9, 0x20, 0xb9, 0xc7, 0xf5, 0xf0, 0xd0, 0x4f, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0xc0, 0x6b, 0x0b, 0x53, 0xdb, 0xf0, 0xb9, 0xcb, 0xe0, 0xed, 0x06, 0x49, 0x06, 0x84, 0x1b, 0x1c, 0x62, 0x20, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x47, 0xef, 0xb8, 0xc3, 0xef, 0x67, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa3, 0x77, 0xdc, 0x41, 0xe1, 0xab, 0xbb, 0x41, 0xa2, 0x48, 0x6b, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0xa0, 0xe9, 0x64, 0x1b, 0x3e, 0x77, 0x19, 0xdc, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x87, 0x6d, 0xb8, 0x0d, 0x52, 0xde, 0xae, 0x0e, 0x4e, 0x08, 0x14, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0xa0, 0xa7, 0x62, 0x1b, 0x3e, 0x77, 0x19, 0xfc, 0xdd, 0x20, 0xc9, 0x80, 0x70, 0x83, 0x43, 0x0c, 0xc4, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x55, 0xc2, 0x76, 0xc3, 0x83, 0x37, 0x1b, 0xa4, 0x0d, 0xae, 0x1e, 0x94, 0xd9, 0xd2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x54, 0x09, 0xdb, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0x4c, 0x0e, 0xca, 0x6c, 0xe9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xaa, 0x84, 0xed, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x9a, 0x0e, 0xca, 0x6c, 0xe9, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0xc0, 0x8f, 0xa1, 0x6d, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x62, 0x20, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x47, 0xef, 0xb8, 0x0d, 0xca, 0x09, 0xe8, 0x83, 0xc2, 0xaa, 0x7b, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xf4, 0x8e, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe2, 0x54, 0xbb, 0x83, 0x32, 0x5b, 0xfa, 0xa0, 0xf4, 0xa9, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x34, 0x5d, 0x6c, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x1b, 0x24, 0x19, 0x10, 0x6e, 0x70, 0xd8, 0x86, 0xdb, 0xe0, 0xa0, 0x4c, 0xb7, 0x41, 0xc2, 0xe5, 0xd5, 0x06, 0xa7, 0x8b, 0x8c, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xba, 0xcb, 0xea, 0x06, 0x29, 0xcc, 0x51, 0x07, 0x49, 0xfe, 0xad, 0x07, 0xa9, 0x06, 0xae, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0xc9, 0x85, 0x96, 0x6b, 0x78, 0x70, 0x67, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0xb6, 0xe1, 0x36, 0x38, 0x1d, 0x89, 0x6c, 0x50, 0x0c, 0xed, 0xb6, 0xc1, 0x69, 0xe4, 0x66, 0x0d, 0xff, 0xf0, 0x1c, 0xde, 0x0b, 0xda, 0x20, 0x91, 0xe4, 0x75, 0x0d, 0x8a, 0x10, 0xe8, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xd8, 0x86, 0xdb, 0xa0, 0x5c, 0x97, 0x3d, 0x38, 0xf4, 0xf2, 0xad, 0x41, 0x80, 0x07, 0x1d, 0x94, 0x13, 0xd0, 0x6b, 0x50, 0x34, 0xd5, 0x1e, 0x14, 0x23, 0xb5, 0x6b, 0x70, 0xac, 0xa5, 0x3b, 0x28, 0x7f, 0x6a, 0x5b, 0x0d, 0x12, 0x9b, 0x63, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x12, 0x9b, 0x63, 0xdb, 0x20, 0x15, 0x36, 0xb6, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0x62, 0x86, 0xba, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x24, 0x48, 0xd9, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x92, 0x4e, 0xea, 0x41, 0x6a, 0x51, 0x6a, 0x2b, 0xe0, 0xcf, 0xa1, 0x85, 0x91, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xe8, 0x92, 0xbd, 0xd5, 0x89, 0xb1, 0x95, 0x81, 0xcc, 0xa1, 0x85, 0xb5, 0xc8, 0xd4, 0xd8, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x8a, 0x19, 0xea, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xa5, 0x95, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0xd2, 0xca, 0x1e, 0xa4, 0x16, 0xa5, 0x36, 0x6b, 0x90, 0x86, 0xb3, 0xb3, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x90, 0x86, 0xb3, 0xd3, 0x00, 0xbc, 0xcc, 0xa1, 0x85, 0xb5, 0xc8, 0xd4, 0xd8, 0x80, 0xdc, 0xa5, 0xd1, 0xa1, 0x81, 0xb0, 0x95, 0xb9, 0x9d, 0xd1, 0xa1, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0x34, 0x9c, 0x9d, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x59, 0x58, 0x7c, 0x70, 0x14, 0x3a, 0x39, 0x48, 0x76, 0x7b, 0xdd, 0xf0, 0x17, 0xcd, 0x86, 0x1f, 0x6a, 0x36, 0x28, 0x25, 0xc4, 0x37, 0x48, 0x08, 0x9d, 0xdd, 0xf0, 0x89, 0xcd, 0x06, 0xc9, 0x74, 0xa8, 0x1b, 0x3e, 0xb1, 0xd9, 0x20, 0xcd, 0x81, 0x76, 0xc3, 0x27, 0x36, 0x1b, 0xa4, 0x87, 0xd0, 0x6e, 0xf8, 0xc4, 0x66, 0x83, 0xf4, 0xa8, 0xd4, 0x0d, 0x9f, 0xd8, 0x6c, 0x90, 0x48, 0x9f, 0xba, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0xea, 0x85, 0xea, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x48, 0xcc, 0xb9, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x20, 0xb9, 0x45, 0x75, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0x24, 0xfd, 0xe0, 0x6c, 0xf8, 0xc4, 0x66, 0x83, 0x24, 0x20, 0xd5, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0xc3, 0x0f, 0x35, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0xf9, 0x49, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x82, 0x51, 0xbb, 0xc1, 0x61, 0x81, 0xed, 0x20, 0x79, 0xa4, 0x76, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x24, 0x47, 0xd5, 0x0d, 0x9f, 0xd8, 0x6c, 0x90, 0x62, 0xa9, 0xba, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x92, 0xa3, 0xea, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc1, 0xa8, 0xdd, 0xe0, 0xb0, 0xc0, 0x76, 0x90, 0x92, 0x56, 0xbb, 0xe1, 0x13, 0x9b, 0x0d, 0x12, 0xe0, 0x55, 0x37, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x90, 0x02, 0x9d, 0x7a, 0x90, 0xc2, 0x1c, 0xb5, 0x41, 0xb2, 0xc5, 0xea, 0x86, 0x4f, 0x6c, 0x36, 0x48, 0x95, 0xac, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xdf, 0x20, 0xc9, 0x80, 0x70, 0x83, 0x43, 0x0c, 0xc4, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x55, 0xc2, 0x76, 0xc3, 0x83, 0x37, 0x1b, 0x9c, 0x17, 0x68, 0x0e, 0x12, 0x42, 0x6c, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xa9, 0x12, 0xb6, 0x1b, 0x1e, 0xbc, 0xd9, 0x20, 0x55, 0x17, 0xf7, 0x20, 0x21, 0xc4, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xe2, 0xe3, 0x6e, 0x90, 0xf8, 0x92, 0x7a, 0x90, 0x10, 0x62, 0xdb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf9, 0x06, 0x49, 0x06, 0x84, 0x1b, 0x1c, 0x62, 0x20, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa9, 0x12, 0xb6, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x58, 0x1c, 0x9c, 0x10, 0x28, 0x36, 0x48, 0x0a, 0xb3, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf8, 0xb8, 0x6b, 0xf8, 0xc5, 0x65, 0xc3, 0x83, 0x37, 0x07, 0xe9, 0xae, 0x55, 0x07, 0x27, 0x04, 0x8a, 0x36, 0x7c, 0x62, 0xb3, 0x41, 0x72, 0xa9, 0xed, 0x41, 0x12, 0xf8, 0xea, 0x86, 0x4f, 0x6c, 0x36, 0x48, 0xb3, 0x60, 0xdd, 0xf0, 0x89, 0xcd, 0x06, 0x49, 0x00, 0xb7, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x86, 0x1f, 0x6a, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0x02, 0xd0, 0xee, 0x1a, 0x2e, 0xa9, 0x0d, 0x0e, 0xfb, 0x1d, 0x1b, 0x14, 0xba, 0xe7, 0x6b, 0x90, 0x1c, 0xa8, 0xba, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0xb1, 0xad, 0xbc, 0xc1, 0x61, 0x81, 0xed, 0x20, 0x59, 0xf0, 0xb6, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0xd0, 0x73, 0xb0, 0x0d, 0x9f, 0xbb, 0x0c, 0xce, 0x6e, 0x90, 0x64, 0x40, 0xb8, 0xc1, 0x21, 0x06, 0x62, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x2a, 0x61, 0xbb, 0xe1, 0xc1, 0x9b, 0x0d, 0x02, 0x96, 0xf5, 0xf0, 0xd0, 0xcf, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x55, 0xc2, 0x76, 0xc3, 0x83, 0x37, 0x1b, 0x9c, 0x56, 0xe1, 0x0e, 0x0f, 0xfd, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x52, 0x25, 0x6c, 0x37, 0x3c, 0x78, 0xb3, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0x30, 0x3b, 0x3c, 0xf4, 0xd3, 0x86, 0x4f, 0x6c, 0x36, 0x48, 0x46, 0xc1, 0xdd, 0xf0, 0x89, 0xcd, 0x06, 0xc9, 0x60, 0xb8, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0xa0, 0xe7, 0x62, 0x1b, 0x3e, 0x77, 0x19, 0xfc, 0xdd, 0x20, 0xc9, 0x80, 0x70, 0x83, 0x43, 0x0c, 0xc4, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x55, 0xc2, 0x76, 0xc3, 0x83, 0x37, 0x1b, 0x1c, 0x97, 0x67, 0x0e, 0xca, 0x6c, 0xe9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xaa, 0x84, 0xed, 0x86, 0x07, 0x6f, 0x36, 0x48, 0x67, 0xb6, 0x3b, 0x28, 0xb3, 0xa5, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xa9, 0x12, 0xb6, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x58, 0x1e, 0x94, 0xd9, 0xd2, 0x1d, 0x24, 0x75, 0xe3, 0xae, 0x06, 0xe9, 0xb2, 0x3b, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xe9, 0xb2, 0x3b, 0x0d, 0xe0, 0x35, 0x17, 0xc6, 0x46, 0x57, 0x46, 0x06, 0x82, 0x16, 0x36, 0x87, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0xd2, 0x65, 0x77, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x4a, 0xf5, 0xeb, 0x06, 0x05, 0x69, 0xec, 0x06, 0x65, 0x61, 0xf1, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0x32, 0xdd, 0x20, 0xf5, 0x34, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x14, 0xff, 0x6e, 0x50, 0x54, 0x8a, 0x6f, 0x90, 0x24, 0xf9, 0x5a, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x79, 0x32, 0x76, 0x83, 0xc2, 0xcb, 0x78, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x88, 0x81, 0xd8, 0x20, 0x49, 0xf2, 0xf5, 0x20, 0xd1, 0x43, 0xb7, 0xc3, 0x29, 0xd6, 0x1a, 0x24, 0x55, 0xef, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x24, 0x55, 0xef, 0xb4, 0x41, 0xd2, 0xa7, 0x6c, 0x1b, 0x1e, 0x1f, 0xd9, 0x20, 0xa9, 0x7a, 0x67, 0xc3, 0x2f, 0x4a, 0x1b, 0xa4, 0x98, 0xa1, 0x6e, 0xf8, 0x8b, 0x66, 0xc3, 0x0f, 0x35, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x79, 0x32, 0xf6, 0x20, 0xc1, 0x3c, 0x77, 0x16, 0xf8, 0xb7, 0x73, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf8, 0xb7, 0xb3, 0x01, 0xfc, 0xe7, 0xd0, 0xc2, 0xf0, 0x5a, 0xe0, 0xde, 0xee, 0xca, 0xe4, 0xca, 0xc8, 0x40, 0xe4, 0xdc, 0xce, 0x36, 0x3c, 0x3e, 0x32, 0xf0, 0x6f, 0xe7, 0x06, 0x65, 0x19, 0xf6, 0x86, 0x2f, 0x97, 0x66, 0x99, 0x05, 0x7c, 0xb9, 0xb0, 0xbb, 0x79, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xb1, 0xba, 0xb7, 0x01, 0xbc, 0xe4, 0xc2, 0xdc, 0xc8, 0xde, 0xda, 0x40, 0xc4, 0xd2, 0xe8, 0xe6, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7e, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x87, 0xe7, 0x99, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x97, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x7a, 0x00, 0xe7, 0xe1, 0x2d, 0xb4, 0x0d, 0xbf, 0xb8, 0x6c, 0x70, 0xfc, 0xe4, 0x5b, 0xc3, 0x25, 0xb5, 0x86, 0xe4, 0xd2, 0xe1, 0x14, 0x5b, 0xc3, 0x83, 0x3b, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x45, 0xf1, 0x75, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0x39, 0x82, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x88, 0x81, 0xd8, 0xf0, 0xb4, 0xce, 0xc1, 0xa1, 0xaf, 0xaf, 0x5a, 0x01, 0x4f, 0x2e, 0x8c, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x48, 0xf2, 0xf2, 0x6d, 0x00, 0x6f, 0xb9, 0x30, 0x37, 0xb2, 0xb7, 0x36, 0x90, 0x34, 0x37, 0x10, 0xb9, 0x30, 0xb7, 0xb3, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0x78, 0x9e, 0x69, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x96, 0xdd, 0x1a, 0x9e, 0xb8, 0xdb, 0xf0, 0x2c, 0xde, 0x41, 0x72, 0x13, 0xcf, 0x86, 0x77, 0xf3, 0x36, 0xbc, 0xa6, 0xb7, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf8, 0xb8, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0x03, 0x38, 0x37, 0x38, 0x0e, 0xa1, 0xb4, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xb3, 0x0d, 0x4f, 0xef, 0x1c, 0xde, 0x42, 0xdb, 0xf0, 0xf4, 0xce, 0xc1, 0x39, 0x41, 0xf2, 0x70, 0x8a, 0x2d, 0xe0, 0xcb, 0x85, 0x91, 0xcd, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xe9, 0xd5, 0xbe, 0x0d, 0xc0, 0x8b, 0x5c, 0x98, 0x1b, 0xd9, 0x5b, 0x1b, 0xc8, 0xd8, 0x9b, 0x1b, 0x5d, 0x9a, 0x5b, 0x5d, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x86, 0x5f, 0x94, 0x36, 0x3c, 0xcf, 0xb4, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xb8, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x92, 0x97, 0x6f, 0x87, 0xb7, 0xd0, 0x0e, 0x12, 0x4e, 0x7c, 0x57, 0x83, 0x14, 0xd9, 0x9e, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x14, 0xd9, 0x9e, 0x0e, 0x12, 0xd4, 0x7b, 0x37, 0x3c, 0x3e, 0xb2, 0x41, 0x8a, 0x6c, 0xcf, 0x86, 0x5f, 0x94, 0x36, 0x3c, 0xcf, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x16, 0x47, 0x6f, 0x78, 0xf0, 0x66, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x71, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x28, 0xbe, 0xae, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0x24, 0xa8, 0xf3, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x31, 0x10, 0x07, 0xa5, 0xd3, 0x73, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0xe9, 0x01, 0x98, 0x1b, 0x3e, 0xc8, 0xd9, 0xf0, 0x9a, 0xde, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe4, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x51, 0x7c, 0x5d, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x48, 0x11, 0xe9, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x62, 0x20, 0x36, 0xbc, 0x17, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc4, 0x40, 0x1c, 0x14, 0xbe, 0xba, 0xb5, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xb3, 0x0d, 0xef, 0x05, 0xad, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0x18, 0x80, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0x5e, 0xd0, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0xc4, 0x5d, 0xc3, 0x2f, 0x2e, 0x07, 0xe7, 0x16, 0x87, 0x83, 0x52, 0x5d, 0xb6, 0x83, 0xb2, 0xce, 0x73, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x54, 0xec, 0xdf, 0x83, 0x52, 0x5d, 0x76, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xff, 0xf0, 0x1c, 0x94, 0xeb, 0xb2, 0x6b, 0xf8, 0x3c, 0x68, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0x3c, 0x48, 0xa8, 0xfe, 0xad, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x1d, 0x4e, 0xb1, 0x35, 0x38, 0xda, 0x7c, 0x2e, 0x03, 0xf0, 0x3a, 0x73, 0xa6, 0x03, 0xd2, 0xf6, 0xc6, 0x46, 0x36, 0x07, 0x12, 0xe6, 0x46, 0x06, 0xd2, 0xf6, 0xc6, 0x46, 0x06, 0x22, 0x56, 0x97, 0xc6, 0x46, 0x56, 0x26, 0x37, 0xb7, 0x80, 0x8f, 0x16, 0x96, 0x26, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xa4, 0x70, 0x01, 0x6f, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x09, 0x17, 0x26, 0x37, 0x97, 0xe6, 0x76, 0x06, 0x42, 0x27, 0x17, 0x36, 0x56, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0x7c, 0x50, 0x66, 0xe9, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xe3, 0x83, 0x32, 0x4b, 0xb7, 0x15, 0xf0, 0xcb, 0xc8, 0xce, 0xca, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xe4, 0x4c, 0xe0, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xe1, 0xc2, 0xe4, 0xe6, 0xd2, 0xdc, 0xce, 0x40, 0xde, 0xea, 0xe8, 0xe0, 0xea, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0x29, 0x5c, 0xc0, 0xb5, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x09, 0x0c, 0x63, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6f, 0xf8, 0x77, 0x7e, 0x01, 0xdf, 0x2d, 0x2c, 0x8d, 0xad, 0x6a, 0x05, 0xfc, 0x39, 0xb8, 0x37, 0x7a, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x20, 0x11, 0x1f, 0x78, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x4f, 0xb9, 0x30, 0xb7, 0xb3, 0x32, 0x90, 0x34, 0x37, 0x10, 0xb3, 0x34, 0xb6, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x83, 0x33, 0x12, 0xea, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xde, 0xf0, 0xef, 0xfc, 0x02, 0x3e, 0x5c, 0x9a, 0x1b, 0x5d, 0xad, 0x80, 0x3f, 0xf6, 0x96, 0xe6, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xa4, 0xf0, 0x04, 0x6f, 0x10, 0x6a, 0x88, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x07, 0x27, 0x97, 0xe6, 0x46, 0x07, 0x62, 0xf6, 0x26, 0xd7, 0x16, 0x46, 0xb7, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0xd6, 0xf0, 0xc6, 0xdd, 0xc1, 0x49, 0x6c, 0xf5, 0xa0, 0x70, 0x92, 0xdd, 0x20, 0x68, 0x7f, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x07, 0xa9, 0x6c, 0xc1, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0x78, 0xc3, 0xbf, 0xf3, 0x0b, 0xf8, 0x64, 0x69, 0x6d, 0x65, 0xb5, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x0a, 0x9d, 0xcf, 0x06, 0x27, 0x30, 0x8c, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x48, 0xa7, 0xf4, 0x59, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x21, 0x65, 0xb2, 0x86, 0x7f, 0xe7, 0xd7, 0x20, 0x85, 0x27, 0xb8, 0xaa, 0xc3, 0x29, 0xd6, 0x02, 0x3e, 0xdd, 0xdb, 0x9b, 0xbb, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0x90, 0x46, 0x1d, 0xbc, 0x41, 0xd0, 0xfe, 0xac, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xc0, 0x3b, 0x57, 0x37, 0x36, 0x56, 0x36, 0x37, 0xb7, 0xe1, 0x73, 0xa5, 0x0d, 0x42, 0x3a, 0xf5, 0x20, 0xfd, 0x34, 0x78, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x1e, 0x31, 0xb6, 0xb7, 0xb1, 0xb5, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0x38, 0xaa, 0x07, 0xe9, 0xa7, 0xc1, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x35, 0x47, 0x17, 0x36, 0xb6, 0x06, 0x42, 0x27, 0x17, 0x36, 0x56, 0xb6, 0xe1, 0x73, 0xa5, 0x0d, 0x82, 0xd8, 0x74, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x1f, 0x9c, 0xea, 0x45, 0x6b, 0x16, 0xf0, 0xe5, 0xea, 0xd8, 0xca, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xe4, 0x21, 0xe1, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xe0, 0xc2, 0xe4, 0xe6, 0xd2, 0xdc, 0xce, 0x40, 0xe4, 0xea, 0xd8, 0xca, 0x36, 0x08, 0xa0, 0xb3, 0x0d, 0xdf, 0xb5, 0xac, 0xe1, 0x41, 0xc9, 0x0d, 0x02, 0x90, 0x6d, 0xc3, 0xdb, 0x3a, 0x07, 0x09, 0xf1, 0xc0, 0x1b, 0x1e, 0x94, 0xdc, 0x20, 0x00, 0xd9, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0x72, 0x26, 0x70, 0xab, 0x41, 0x5a, 0x4d, 0xf0, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0x41, 0x5a, 0x4d, 0xf0, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3c, 0xb0, 0xa5, 0xb9, 0x95, 0xad, 0x8c, 0xbd, 0xb1, 0xd5, 0xb5, 0xb9, 0x81, 0xc8, 0x85, 0xb9, 0x9d, 0x95, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x1f, 0x7e, 0x9d, 0x5b, 0xc3, 0x9f, 0x4b, 0x83, 0xc7, 0x87, 0x5f, 0xe7, 0x3a, 0x9c, 0x62, 0xad, 0x41, 0x52, 0x3c, 0xf0, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0x41, 0x52, 0x3c, 0xf0, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x9e, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x1b, 0x3e, 0x57, 0xda, 0x20, 0x9d, 0x18, 0x78, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1f, 0x9c, 0xf4, 0x44, 0x5b, 0x0d, 0xff, 0xce, 0x6f, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xdf, 0x59, 0x99, 0x5b, 0x99, 0x5c, 0xda, 0x18, 0x48, 0x19, 0xd9, 0x59, 0xd9, 0xc1, 0x99, 0xa2, 0x6c, 0xc3, 0x77, 0x2d, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x71, 0xc3, 0x5f, 0x34, 0x1b, 0x84, 0xe9, 0xd8, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x39, 0x48, 0x6f, 0x06, 0xee, 0xa0, 0xac, 0xf3, 0xdc, 0xa0, 0x30, 0x54, 0x5d, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x05, 0x68, 0x78, 0x83, 0x12, 0x8e, 0xb6, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0x50, 0x10, 0xcc, 0x6e, 0x50, 0xbc, 0xd3, 0x6e, 0x50, 0x50, 0x64, 0x6e, 0x50, 0x18, 0xaa, 0x6e, 0x50, 0x50, 0x64, 0x6e, 0xf8, 0xdc, 0x65, 0xf0, 0x7a, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0x9e, 0xd6, 0x59, 0xc3, 0x25, 0xb5, 0x86, 0x54, 0xcd, 0xe1, 0xf3, 0xa0, 0x5a, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x1b, 0x7e, 0x71, 0xd9, 0x20, 0xf9, 0x69, 0x78, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x1c, 0x1c, 0x03, 0x45, 0x0f, 0x0e, 0x65, 0x7c, 0x35, 0x0b, 0xf8, 0x77, 0x6f, 0x6e, 0xeb, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x00, 0x27, 0xf7, 0x46, 0x56, 0x37, 0x46, 0x07, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0x52, 0x46, 0x76, 0x56, 0xb6, 0xe1, 0xcf, 0xa5, 0x01, 0xcf, 0xae, 0x2c, 0xde, 0x20, 0x80, 0xce, 0x0e, 0x52, 0xfe, 0x84, 0x37, 0x28, 0xe1, 0x31, 0x17, 0x3c, 0xde, 0x20, 0x89, 0x7c, 0xb8, 0x0d, 0xc2, 0x53, 0x75, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x83, 0xd7, 0x07, 0x89, 0xf4, 0xc3, 0x87, 0x53, 0x6c, 0x0d, 0x52, 0x27, 0x83, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x52, 0x27, 0x83, 0x37, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x0f, 0x8e, 0xda, 0xa0, 0x87, 0x67, 0xea, 0x56, 0xc0, 0xa7, 0x7b, 0x73, 0x2b, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x12, 0x5a, 0x88, 0x37, 0x08, 0xda, 0x9f, 0x35, 0x3c, 0xf1, 0xbe, 0x41, 0x12, 0x7b, 0xf0, 0x86, 0xcf, 0x95, 0x36, 0x08, 0xe9, 0xd4, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x78, 0xa4, 0x1d, 0x84, 0xe9, 0x58, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x37, 0x97, 0xe6, 0x76, 0xc6, 0x56, 0x06, 0x22, 0xc6, 0xf6, 0x36, 0xb6, 0xb6, 0xe1, 0x73, 0xa5, 0x0d, 0x02, 0x47, 0x75, 0x0d, 0x7f, 0x2e, 0x6d, 0x90, 0xb4, 0x20, 0x7c, 0x10, 0xa6, 0x63, 0xad, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x5f, 0x99, 0x9c, 0xdc, 0x9b, 0x1c, 0x88, 0x5c, 0x19, 0xdc, 0x9b, 0x1c, 0xdd, 0x86, 0xcf, 0x95, 0x36, 0x08, 0x62, 0xd3, 0x35, 0xfc, 0xb9, 0x34, 0xc0, 0x43, 0x27, 0x17, 0x36, 0x56, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0xa8, 0x0d, 0x7a, 0x70, 0x88, 0xe9, 0xa8, 0x0e, 0xa7, 0x58, 0x2b, 0x00, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x2d, 0x61, 0x6e, 0x64, 0x2d, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x72, 0x2d, 0x69, 0x6e, 0x74, 0xf3, 0x32, 0x00, 0xaf, 0x33, 0x61, 0x3a, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x73, 0x0b, 0xfc, 0x5c, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x1b, 0x94, 0x04, 0xee, 0x03, 0xf8, 0xce, 0xa5, 0x9d, 0xb9, 0x95, 0x91, 0x81, 0xa4, 0xb9, 0xd1, 0x95, 0x9d, 0x95, 0xc9, 0x0d, 0xf8, 0x6b, 0x74, 0x77, 0xf4, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x06, 0xe5, 0x24, 0xf6, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x0f, 0x23, 0x23, 0x4b, 0xa3, 0x4b, 0x7b, 0x73, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0xa9, 0xc0, 0x49, 0x07, 0xe9, 0xd4, 0x5b, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x71, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x14, 0xc5, 0x1d, 0x1e, 0xfa, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x93, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xa5, 0x28, 0xee, 0xf0, 0x16, 0x5a, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0x25, 0xb5, 0xc6, 0xa1, 0xc3, 0x3f, 0x3c, 0xad, 0xe1, 0x83, 0x9c, 0x0d, 0x4e, 0x3a, 0x59, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb4, 0x08, 0xb9, 0x0d, 0x8a, 0x9c, 0xd6, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x4e, 0xf4, 0x8f, 0x1b, 0x1c, 0xf6, 0xb1, 0x6a, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x34, 0x6c, 0xa5, 0x83, 0x04, 0xcb, 0xe2, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x5a, 0x84, 0xdc, 0x06, 0x45, 0x4e, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x41, 0x82, 0x65, 0x71, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x2d, 0x42, 0x6e, 0x83, 0x02, 0x36, 0x7f, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0xc3, 0x3e, 0xd6, 0x06, 0x27, 0xfa, 0xc7, 0xda, 0xf0, 0x41, 0xce, 0x06, 0x27, 0x9d, 0xac, 0x35, 0x7c, 0x90, 0xb3, 0x41, 0x9a, 0x68, 0xf1, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x2d, 0x42, 0x6e, 0x83, 0x02, 0x36, 0xff, 0x20, 0x3d, 0xb7, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x45, 0xc8, 0x6d, 0x50, 0xe4, 0xb4, 0x1e, 0x24, 0x43, 0x17, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xb4, 0x08, 0xb9, 0x0d, 0x0a, 0xd8, 0xfc, 0x83, 0x84, 0xc7, 0xe2, 0xd5, 0x20, 0x85, 0xf8, 0x68, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x1f, 0xa8, 0x0e, 0x84, 0xee, 0x0d, 0x04, 0x68, 0x6e, 0xc3, 0x2f, 0x4a, 0x1b, 0x9c, 0x6f, 0x4e, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x1e, 0x24, 0x5c, 0xf1, 0x1e, 0x4e, 0xb1, 0x05, 0x3c, 0xb2, 0x3a, 0x76, 0xc3, 0x2f, 0x4a, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0xb6, 0xbd, 0x91, 0xd5, 0xb1, 0xd5, 0xcd, 0x6d, 0xf8, 0x5c, 0x69, 0x83, 0x54, 0xe0, 0xa4, 0xc3, 0xeb, 0x4c, 0x1b, 0x3e, 0xb1, 0xd9, 0x20, 0xcd, 0xa9, 0x78, 0xc3, 0x07, 0x39, 0x1b, 0x24, 0xcb, 0x15, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0xc2, 0xee, 0x76, 0x83, 0x13, 0xfd, 0xe3, 0xe1, 0x2d, 0xb4, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0xc3, 0x7b, 0x41, 0x07, 0xe9, 0xdb, 0xc5, 0xb3, 0x80, 0x07, 0x27, 0xf7, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xdb, 0xea, 0xd8, 0xe8, 0xd2, 0xe0, 0xd8, 0xd2, 0xc6, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x0e, 0x12, 0x77, 0x8a, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x5a, 0x84, 0xdc, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc4, 0x40, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x12, 0x6d, 0xa2, 0x0e, 0x0f, 0xfd, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x12, 0x6d, 0xa2, 0x0e, 0x6f, 0xa1, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x32, 0x9b, 0xd3, 0xe1, 0xa1, 0x9f, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x32, 0x9b, 0xd3, 0xe1, 0x2d, 0xb4, 0x5a, 0x0d, 0x52, 0x74, 0xa2, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x98, 0x4b, 0x3b, 0x73, 0x03, 0xa1, 0x2b, 0x9b, 0xa3, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0xa9, 0xc0, 0x49, 0x07, 0xe7, 0xd6, 0x87, 0xd5, 0x20, 0x19, 0x29, 0x6e, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xbf, 0xad, 0xb9, 0xb4, 0x33, 0x37, 0x10, 0xbb, 0x30, 0xb6, 0xba, 0xb2, 0xae, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0x0a, 0x9c, 0xb4, 0xe1, 0x17, 0x97, 0x0d, 0x52, 0xa7, 0x8d, 0x37, 0x48, 0x8a, 0x37, 0x6e, 0x05, 0x3c, 0xb9, 0xb2, 0x76, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x0f, 0xb9, 0xb2, 0xb6, 0xb0, 0x34, 0x37, 0xb2, 0x32, 0xb9, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0xb8, 0x53, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0xd1, 0xa1, 0x36, 0x3c, 0xad, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x29, 0x9a, 0xc6, 0x6d, 0x78, 0x2f, 0x68, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x6e, 0x46, 0x76, 0xf8, 0xfd, 0xac, 0x0e, 0xa7, 0xd8, 0x1a, 0xa4, 0xc1, 0x39, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x1c, 0xa4, 0x91, 0xba, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x54, 0xe0, 0xa4, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x83, 0xb3, 0xa2, 0xc3, 0x06, 0xc7, 0x00, 0x87, 0x0e, 0xa7, 0xd8, 0x1a, 0x24, 0x54, 0xc8, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0xd8, 0x9a, 0x4b, 0x3b, 0x73, 0x03, 0xb1, 0x0b, 0x63, 0xab, 0x2b, 0xeb, 0x02, 0xa1, 0x7b, 0x03, 0x01, 0x9a, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0x07, 0x20, 0x95, 0xc3, 0xeb, 0x4c, 0x1b, 0xbe, 0x7e, 0x59, 0xc3, 0x8f, 0x30, 0x07, 0xe7, 0x76, 0xbe, 0x0d, 0x5f, 0xbf, 0x6c, 0xf8, 0x10, 0x66, 0xc3, 0x07, 0x39, 0x1b, 0x9e, 0xd6, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x04, 0x4f, 0xed, 0xc1, 0xe9, 0x7c, 0x64, 0xc3, 0x07, 0x39, 0x1b, 0x5e, 0xd3, 0xdb, 0xf0, 0xe0, 0xcd, 0x86, 0x8f, 0xa3, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x6e, 0x10, 0xb0, 0xac, 0x1b, 0xfe, 0x90, 0x6d, 0x35, 0x28, 0x73, 0x02, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x5e, 0x73, 0x75, 0x62, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x07, 0x89, 0x3b, 0xc5, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xb0, 0x0d, 0xb7, 0xe1, 0x69, 0x9d, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x5a, 0x84, 0xdc, 0x1a, 0xde, 0x66, 0x3d, 0x48, 0xf5, 0x36, 0x3e, 0x48, 0xe0, 0x37, 0xee, 0x70, 0x8a, 0xb5, 0x06, 0x89, 0x6a, 0x64, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0xe6, 0x20, 0x8d, 0x0f, 0xea, 0x20, 0x71, 0xa7, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x45, 0xc8, 0x6d, 0x90, 0x52, 0x6c, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x05, 0xd6, 0x83, 0x84, 0x78, 0xe3, 0x66, 0x0d, 0x92, 0x55, 0x9c, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xef, 0xd8, 0x5b, 0x1b, 0x5c, 0x98, 0x5c, 0xd9, 0x41, 0xe2, 0x4e, 0xf1, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x9e, 0x9c, 0x6c, 0xf8, 0x20, 0x67, 0xc3, 0x5f, 0x65, 0x1b, 0x24, 0xf0, 0x38, 0x6d, 0xf8, 0x20, 0x67, 0x83, 0xd4, 0x69, 0xe3, 0x35, 0x7c, 0x90, 0xb3, 0x41, 0xaa, 0xb7, 0xf1, 0x1a, 0x3e, 0xc8, 0xd9, 0xf0, 0x70, 0xe2, 0x06, 0xa9, 0xa8, 0x52, 0x07, 0x29, 0x43, 0x4e, 0x07, 0xa9, 0xa8, 0x52, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0xd5, 0xdb, 0x78, 0x83, 0x94, 0x21, 0xa7, 0x0d, 0x1f, 0xe4, 0x6c, 0x78, 0x38, 0x71, 0x83, 0x94, 0x21, 0xa7, 0x83, 0x54, 0x54, 0xa9, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0xc0, 0x2f, 0x3b, 0x1b, 0x23, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x12, 0x32, 0x92, 0x1b, 0xc0, 0x7b, 0x6e, 0x0c, 0xcd, 0xad, 0x2c, 0xad, 0x4c, 0xee, 0x64, 0x0e, 0xa4, 0xec, 0x6c, 0x8c, 0x6c, 0xc3, 0x2f, 0x4a, 0x1b, 0xfe, 0x56, 0xda, 0xf0, 0x89, 0xcd, 0x06, 0xa5, 0x90, 0xfa, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x7c, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x89, 0xfd, 0x47, 0x87, 0x87, 0x7e, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe4, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xec, 0x3f, 0x3a, 0xbc, 0x85, 0xd6, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0xbc, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x7c, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x89, 0xfd, 0x47, 0x07, 0x05, 0xf1, 0xf8, 0x1a, 0x3e, 0x77, 0x19, 0x9c, 0x3c, 0x48, 0xe0, 0x71, 0x6a, 0x0d, 0x9f, 0xbb, 0x0c, 0x6e, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0x9f, 0xbb, 0x0c, 0x3e, 0x1e, 0x24, 0xf0, 0x38, 0xad, 0xe1, 0x73, 0x97, 0xc1, 0xc9, 0x83, 0x44, 0xc5, 0xe4, 0xda, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0xc5, 0x3f, 0xf0, 0x1a, 0xfe, 0x5c, 0x1a, 0xbc, 0x3e, 0x38, 0x9e, 0x9c, 0x6c, 0x90, 0xdc, 0xc2, 0xd4, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x09, 0x3c, 0x4e, 0x87, 0xa7, 0x77, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x99, 0xcd, 0xe9, 0xa0, 0x54, 0x97, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0x93, 0x07, 0x41, 0x80, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0x27, 0x0f, 0x0e, 0xad, 0x2d, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x74, 0x33, 0xb2, 0x83, 0x02, 0xf4, 0x79, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0x3f, 0x3c, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x1d, 0x1d, 0x6a, 0x83, 0x72, 0x5d, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x58, 0x78, 0xbc, 0xc1, 0xe9, 0x48, 0xe4, 0xf0, 0x8b, 0x50, 0x1b, 0x24, 0x92, 0xbc, 0xae, 0x41, 0x10, 0xa0, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x8e, 0x0e, 0xb5, 0x41, 0xb2, 0x7d, 0xf2, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xb1, 0xf0, 0x78, 0x83, 0xd3, 0x91, 0xc8, 0x1a, 0xde, 0xd6, 0x19, 0x7c, 0x3c, 0x08, 0x02, 0xb4, 0x3a, 0x48, 0x2f, 0x53, 0x5e, 0x83, 0x43, 0x6b, 0xcb, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xe9, 0xe8, 0x50, 0x1b, 0xa4, 0xff, 0x27, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x12, 0x0b, 0x8f, 0x37, 0x38, 0x1d, 0x89, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xc7, 0x83, 0x43, 0x6b, 0x4b, 0x1d, 0xa4, 0x4d, 0x2a, 0xb7, 0x02, 0x6f, 0xf6, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0x6f, 0xf6, 0x36, 0x80, 0x5f, 0xdb, 0x1b, 0x59, 0x1d, 0xdb, 0x1b, 0x08, 0x9c, 0x5c, 0x5a, 0x5b, 0xd9, 0x06, 0x49, 0x0b, 0x46, 0x1b, 0x94, 0x65, 0xd8, 0x1b, 0xbe, 0x5c, 0x9a, 0x65, 0xd6, 0xa0, 0x9c, 0xc4, 0x3e, 0x28, 0xf3, 0xb1, 0x67, 0x0d, 0x52, 0x34, 0x8d, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0x81, 0x90, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x99, 0xec, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x1e, 0x9e, 0x0b, 0x6a, 0x35, 0x28, 0x83, 0xb2, 0x37, 0xfc, 0xa2, 0xb4, 0xe1, 0x79, 0xa6, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x76, 0xb7, 0x07, 0xa5, 0xd3, 0xf3, 0xac, 0x41, 0x5a, 0x4d, 0xd2, 0x86, 0x5f, 0x94, 0x36, 0x28, 0x10, 0xb2, 0x37, 0x7c, 0x90, 0xb3, 0xe1, 0x35, 0xbd, 0x0d, 0x8f, 0xc9, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x4e, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x9c, 0x30, 0x1c, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xbc, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x89, 0x85, 0xc7, 0x1b, 0x94, 0xeb, 0xb2, 0x07, 0xa5, 0xba, 0xec, 0x86, 0x0f, 0x72, 0x36, 0x38, 0x0e, 0x3f, 0x6c, 0x50, 0x4e, 0x40, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xc4, 0xc2, 0xe3, 0x0d, 0x4f, 0xef, 0x1c, 0x94, 0xd9, 0xd2, 0xab, 0x41, 0x71, 0xaa, 0xbd, 0xe1, 0x17, 0xa5, 0x0d, 0xcf, 0x33, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x3e, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x12, 0x95, 0x8c, 0x3b, 0x28, 0x85, 0xd4, 0xd7, 0xf0, 0xa0, 0xe4, 0x06, 0x89, 0xa1, 0x57, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x24, 0x64, 0x24, 0x77, 0x50, 0x3a, 0x3d, 0x1f, 0x1e, 0xfa, 0x39, 0x3c, 0xbd, 0x33, 0x6b, 0x50, 0xe6, 0x04, 0x6c, 0xf8, 0x45, 0x69, 0x83, 0x02, 0x21, 0x7b, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x33, 0xd9, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x87, 0xdf, 0xcf, 0x0e, 0x0a, 0x8d, 0xf0, 0x0e, 0xa7, 0x58, 0x6b, 0x90, 0xa8, 0x46, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0x0a, 0x84, 0xec, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x58, 0x78, 0xbc, 0xe1, 0xbd, 0xa0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xda, 0x44, 0xee, 0xe1, 0x17, 0xa1, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x75, 0x38, 0xc5, 0xda, 0x70, 0x22, 0x6c, 0x28, 0xa5, 0x6b, 0x38, 0x47, 0x56, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xd6, 0xf7, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0xe7, 0x0e, 0xd1, 0x5c, 0x83, 0xe4, 0x0e, 0xe6, 0x0d, 0x92, 0x3b, 0x98, 0x0f, 0x0a, 0x95, 0xb3, 0x61, 0x17, 0x76, 0x41, 0xb0, 0xc1, 0xc0, 0xc7, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xc8, 0xda, 0x0d, 0xbf, 0xf1, 0x7c, 0x0c, 0xf7, 0x8f, 0x43, 0x1b, 0x62, 0x38, 0xec, 0x82, 0x60, 0x83, 0x51, 0xc3, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x3b, 0x48, 0x0d, 0x3b, 0x39, 0x0e, 0x6d, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x41, 0x12, 0x11, 0xc9, 0x21, 0x9a, 0x87, 0x74, 0xee, 0x1a, 0x24, 0x77, 0x30, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0x42, 0xbd, 0xef, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xce, 0x21, 0xb9, 0x34, 0x48, 0x06, 0x86, 0xea, 0x90, 0x9c, 0x5b, 0xf8, 0x8d, 0xe7, 0x63, 0xe8, 0x3b, 0x28, 0x51, 0xd0, 0x8e, 0x43, 0x07, 0x05, 0xc8, 0xd9, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc9, 0x40, 0x90, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x82, 0x8f, 0x79, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x51, 0x72, 0x72, 0x90, 0xa2, 0xef, 0x31, 0x08, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x78, 0x10, 0x6c, 0x70, 0xa4, 0xd5, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xa2, 0xe1, 0x1c, 0x04, 0x26, 0xf6, 0x71, 0xe8, 0x78, 0x3e, 0xec, 0x82, 0x60, 0x41, 0x32, 0x10, 0x94, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x19, 0x7e, 0xe3, 0xf9, 0x18, 0xfe, 0x1f, 0x87, 0x36, 0x18, 0x2a, 0x02, 0xc3, 0x2e, 0x08, 0x36, 0x48, 0xd8, 0x67, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x0c, 0xee, 0xff, 0xe3, 0xd0, 0x0a, 0x82, 0x0d, 0xc6, 0x52, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x41, 0x00, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x8b, 0x79, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x16, 0x7e, 0xe3, 0xf9, 0x38, 0x6c, 0xdc, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x0e, 0x2d, 0x08, 0x36, 0x18, 0x4b, 0xb9, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0x90, 0xe6, 0xd6, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x81, 0x67, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x12, 0x90, 0xcc, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x86, 0x5d, 0x10, 0x6c, 0x90, 0xb0, 0xcf, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x39, 0x48, 0x2f, 0x4f, 0x38, 0x0e, 0xad, 0x20, 0xd8, 0x60, 0x2c, 0xe5, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x18, 0x04, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xb4, 0x98, 0x87, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xe1, 0x37, 0x9e, 0x8f, 0x83, 0x30, 0xe6, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x87, 0x16, 0x04, 0x1b, 0x8c, 0xa5, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x49, 0x6e, 0xcd, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0xc5, 0x3c, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x0b, 0xbf, 0xf1, 0x7c, 0x1c, 0x36, 0xf6, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x87, 0x0e, 0xd2, 0xc4, 0x9a, 0x17, 0x04, 0x1b, 0x8c, 0xa5, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x83, 0x80, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x16, 0xf3, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x2c, 0xfc, 0xc6, 0xf3, 0x71, 0x30, 0x89, 0x1e, 0x52, 0x35, 0xc7, 0xa1, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0xb1, 0x94, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xc9, 0xad, 0x79, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xb4, 0x98, 0x87, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xe1, 0x37, 0x9e, 0x8f, 0x83, 0x30, 0xf6, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x87, 0x0e, 0x92, 0xb4, 0x9b, 0x8f, 0x6f, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0x1c, 0x76, 0x83, 0xe2, 0xe2, 0x70, 0xc3, 0xb8, 0x6c, 0x30, 0x34, 0xbb, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x38, 0x08, 0x36, 0x18, 0x7f, 0x37, 0x07, 0xc9, 0x86, 0x06, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x64, 0x83, 0x41, 0xf2, 0x72, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x85, 0x5d, 0x10, 0x6c, 0x70, 0xee, 0xf0, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x0c, 0x0f, 0x8e, 0x43, 0x0b, 0xbb, 0x20, 0xd8, 0x60, 0x14, 0xd8, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x86, 0xdf, 0x78, 0x3e, 0x86, 0x6b, 0xc7, 0xa1, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x18, 0x59, 0xaf, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x52, 0xc3, 0x4e, 0x0e, 0xa9, 0x9a, 0xe3, 0xd0, 0x21, 0x75, 0x70, 0x3c, 0x3e, 0x0e, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x8a, 0xa1, 0x70, 0x31, 0xdc, 0x1e, 0x04, 0x1b, 0x9c, 0x9f, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0xdc, 0x9e, 0x6c, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x85, 0x5b, 0x0c, 0xfd, 0x87, 0xd4, 0xc1, 0x62, 0xe8, 0x1a, 0x76, 0xe1, 0x16, 0x43, 0xfd, 0x21, 0x75, 0xb0, 0x18, 0xda, 0x86, 0x5d, 0x10, 0x6c, 0x70, 0x8c, 0x66, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x0c, 0xd3, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0x91, 0xf5, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x6d, 0xda, 0xf9, 0x90, 0xaa, 0x39, 0x0e, 0x0d, 0xbb, 0x20, 0xd8, 0xe0, 0x18, 0xcd, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x39, 0x38, 0x19, 0xe6, 0x1f, 0x87, 0x16, 0x04, 0x1b, 0x8c, 0xac, 0xd7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0xc3, 0x8f, 0x43, 0xaa, 0xe6, 0x38, 0x34, 0x08, 0x36, 0x38, 0x31, 0x52, 0x1f, 0xa4, 0x3a, 0x68, 0x1c, 0x8f, 0x8f, 0x43, 0x2b, 0x08, 0x36, 0x18, 0xd4, 0x2e, 0x8b, 0xc3, 0x6e, 0x30, 0x36, 0x39, 0x57, 0x10, 0x6c, 0x10, 0x94, 0xde, 0x83, 0x64, 0xc8, 0xc1, 0xd0, 0xa5, 0x3a, 0x34, 0x12, 0x1c, 0x04, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x87, 0xdd, 0x60, 0xe4, 0x93, 0x6f, 0x68, 0x01, 0x34, 0x08, 0x16, 0x76, 0x61, 0x37, 0xac, 0xef, 0x1d, 0xd6, 0x37, 0x17, 0x76, 0xe1, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0x90, 0x40, 0xca, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x19, 0x7e, 0xe3, 0xf9, 0xb0, 0x0b, 0xb7, 0xc1, 0x91, 0xa7, 0xf8, 0x10, 0xff, 0x0d, 0xfd, 0xc9, 0x0f, 0xca, 0xb8, 0x9d, 0xe3, 0xd0, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfe, 0x20, 0xd8, 0xe0, 0x70, 0x4e, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x20, 0x52, 0x1f, 0x04, 0x29, 0xfe, 0x71, 0x68, 0x10, 0x2d, 0xb8, 0xbe, 0x20, 0xd8, 0x20, 0x78, 0xb8, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x24, 0xf4, 0x34, 0x1c, 0xa4, 0xa2, 0x40, 0x1f, 0x87, 0x86, 0xdd, 0x38, 0xb4, 0xc2, 0x2e, 0xdc, 0x06, 0x47, 0x9e, 0xe2, 0x43, 0xb2, 0x63, 0x31, 0x94, 0x1d, 0xa4, 0x3f, 0x3d, 0x1f, 0x84, 0x7c, 0xf6, 0x41, 0xc8, 0x67, 0x0f, 0xa2, 0x85, 0x3d, 0x18, 0x6e, 0x0a, 0xc7, 0xf3, 0xe3, 0xdb, 0xf1, 0x78, 0x15, 0x43, 0xcb, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x77, 0x0e, 0xc9, 0xa5, 0x43, 0xa3, 0x96, 0xd5, 0x20, 0x6d, 0xe3, 0x79, 0x31, 0x1c, 0x1f, 0x04, 0x1b, 0x9c, 0x9f, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0x76, 0x80, 0x6c, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x30, 0xb2, 0x5e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0xc3, 0x6f, 0x3c, 0x1f, 0x76, 0x41, 0xb0, 0xc1, 0x31, 0x9a, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x73, 0x70, 0xae, 0x29, 0x3e, 0x0e, 0x6d, 0x90, 0xb6, 0xf1, 0x3c, 0x86, 0x5f, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0x68, 0x0d, 0x92, 0x88, 0x48, 0x06, 0xc1, 0x06, 0x05, 0xc5, 0xdd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x4f, 0x0a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x90, 0x0e, 0x08, 0x7d, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x38, 0xe8, 0xe9, 0x38, 0x34, 0xec, 0xc2, 0x2e, 0x08, 0x36, 0x48, 0x73, 0x42, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0x64, 0x3a, 0x87, 0x43, 0xe3, 0xf9, 0xe3, 0xd0, 0xc2, 0x2e, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xf8, 0x98, 0x37, 0xc4, 0x70, 0x10, 0x2c, 0x08, 0x36, 0x18, 0x25, 0x27, 0x07, 0xe9, 0x70, 0x10, 0xc3, 0x2e, 0xec, 0xc2, 0x6d, 0x90, 0xfe, 0xf4, 0x7c, 0x1c, 0xda, 0x10, 0xc3, 0x61, 0x17, 0x76, 0x41, 0xb0, 0xc1, 0xb9, 0xc3, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x83, 0x73, 0xe4, 0xee, 0x71, 0x68, 0x61, 0x17, 0x04, 0x1b, 0x8c, 0x02, 0xdb, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0xf0, 0x1b, 0xcf, 0x0f, 0xce, 0xbc, 0xb3, 0xc7, 0xa1, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0xd2, 0xb9, 0x0b, 0xbb, 0x20, 0x19, 0x32, 0x88, 0x16, 0xc4, 0x83, 0x60, 0x83, 0x23, 0xad, 0xee, 0x41, 0x32, 0xdf, 0xc3, 0xf1, 0xfc, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0xc7, 0xb7, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x6f, 0x70, 0xee, 0xa3, 0x1d, 0x76, 0x41, 0xb0, 0xc1, 0x08, 0x28, 0x3a, 0x48, 0xec, 0x88, 0x5e, 0x90, 0x0c, 0xba, 0x8e, 0xc7, 0x07, 0x09, 0x9f, 0x02, 0x2b, 0xec, 0x86, 0xf5, 0xbd, 0xc5, 0x50, 0x33, 0xec, 0x86, 0xa6, 0xe7, 0x8b, 0xe1, 0xfc, 0x20, 0xdb, 0xd0, 0x7c, 0xfd, 0x70, 0x8a, 0x1d, 0x62, 0x38, 0x08, 0x36, 0x48, 0xa6, 0x73, 0xd8, 0x20, 0xfd, 0xe9, 0x79, 0x10, 0x2c, 0x0e, 0xbb, 0x20, 0xd8, 0xe0, 0x14, 0x42, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd1, 0x69, 0x7b, 0x90, 0x68, 0xce, 0x7c, 0x30, 0x36, 0x5c, 0x8f, 0x43, 0x0b, 0x82, 0x05, 0xc9, 0x06, 0x45, 0x7d, 0xce, 0x41, 0xc0, 0xfb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x16, 0xcc, 0x0f, 0x92, 0xc1, 0x99, 0x07, 0xd1, 0xc2, 0x1e, 0xa4, 0xaa, 0x3e, 0x1f, 0x8f, 0x87, 0xdf, 0x78, 0xbe, 0x41, 0xfa, 0xd3, 0xf3, 0x06, 0xe9, 0x4f, 0xcf, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x30, 0x1f, 0x04, 0x1b, 0x9c, 0x62, 0x80, 0x0f, 0x12, 0xcd, 0x99, 0x07, 0xd1, 0xc2, 0x1e, 0x94, 0x71, 0x3b, 0xc7, 0xe3, 0xe3, 0xd0, 0xb0, 0x1b, 0xd6, 0xf7, 0x16, 0x07, 0xf7, 0x1b, 0x76, 0x41, 0xb0, 0xc1, 0x28, 0xb0, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x1c, 0x8c, 0x0d, 0xd7, 0xe3, 0xd0, 0x82, 0x60, 0x41, 0x32, 0x90, 0xde, 0x39, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x20, 0x19, 0xa8, 0x55, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0xec, 0x8e, 0xc7, 0x07, 0xe3, 0xc3, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x87, 0x5d, 0xb8, 0x0d, 0xad, 0xc4, 0x0f, 0xa9, 0x9a, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x01, 0xcb, 0x73, 0x90, 0x48, 0x11, 0x32, 0x08, 0x16, 0x04, 0x1b, 0xa4, 0xd1, 0x3d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x07, 0x83, 0x77, 0xf2, 0x38, 0x34, 0x08, 0x16, 0x24, 0x1b, 0x14, 0xf5, 0x39, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x20, 0xbd, 0x73, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x20, 0x19, 0xa8, 0x55, 0x07, 0xe3, 0x5d, 0xe7, 0x60, 0xdc, 0x41, 0x1d, 0x1a, 0xb5, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x31, 0x97, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0xe9, 0xfa, 0xd2, 0x07, 0xe9, 0x96, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x8a, 0x55, 0xa8, 0x83, 0xc1, 0xe9, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x01, 0xcb, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xe3, 0xd0, 0xc8, 0xc1, 0x78, 0xd3, 0x39, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0x69, 0x74, 0x0f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x92, 0x9d, 0xa6, 0x0f, 0x06, 0xef, 0xe4, 0x71, 0x68, 0x10, 0x6c, 0x90, 0x18, 0x2d, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x30, 0x3f, 0xa4, 0x0e, 0x06, 0xd1, 0xc2, 0x0e, 0x82, 0x0d, 0xce, 0x92, 0xd9, 0x07, 0x29, 0x7e, 0x0e, 0x87, 0x15, 0xda, 0xe1, 0x37, 0x9e, 0x6f, 0x90, 0xfe, 0xf4, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf5, 0x07, 0x69, 0x32, 0xd3, 0x83, 0x68, 0x41, 0x7c, 0x68, 0x25, 0x7e, 0x48, 0x2e, 0x1d, 0x87, 0x8e, 0x6f, 0xc7, 0xb7, 0x41, 0xb0, 0xc1, 0xf9, 0x89, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xb9, 0xa6, 0x78, 0x83, 0x81, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0x91, 0xf5, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x69, 0x1b, 0xcf, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x78, 0x7c, 0x1c, 0x5a, 0x90, 0x0c, 0x94, 0xaa, 0xe3, 0xf1, 0x0a, 0xbb, 0x61, 0x7d, 0x6f, 0x83, 0xe4, 0x21, 0xe6, 0xc3, 0x29, 0x76, 0x88, 0xe1, 0x06, 0x69, 0x1b, 0xcf, 0x8b, 0xe1, 0xe2, 0x20, 0xd8, 0xe0, 0xfc, 0x44, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x78, 0xfe, 0x20, 0x59, 0x79, 0xfa, 0x38, 0x74, 0x3c, 0x5e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0xa4, 0x57, 0xe6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x82, 0x8f, 0x79, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x60, 0x41, 0x32, 0xf0, 0xee, 0xce, 0x61, 0x85, 0xf6, 0x60, 0x98, 0x85, 0x0f, 0x82, 0x05, 0xc1, 0x86, 0xcd, 0x90, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa7, 0x18, 0xe0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x28, 0xa9, 0x86, 0x0e, 0x02, 0x13, 0xfb, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x41, 0x3c, 0x08, 0x36, 0x18, 0xb0, 0x3c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xe8, 0x4e, 0x7e, 0x30, 0xde, 0x74, 0x8e, 0x43, 0x87, 0xe4, 0xd2, 0xb0, 0x0b, 0xbb, 0xb0, 0x0b, 0x82, 0x05, 0xc9, 0xa0, 0xe6, 0x60, 0xf8, 0xc7, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x0e, 0x52, 0xcb, 0xa2, 0x8f, 0x43, 0x0b, 0xbb, 0x20, 0xd8, 0xe0, 0x94, 0x71, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x39, 0x48, 0xf7, 0x8b, 0x3e, 0x0e, 0x1d, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x43, 0x0c, 0x87, 0x5d, 0xd8, 0x05, 0xc1, 0x06, 0x49, 0xa9, 0xd4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0x83, 0x64, 0xf1, 0xe9, 0xe3, 0xd0, 0xc2, 0x2e, 0x08, 0x36, 0x38, 0x65, 0x5c, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x86, 0xdf, 0x78, 0x3e, 0x86, 0xe6, 0xe3, 0xd0, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0x20, 0xfd, 0xe9, 0xf9, 0x90, 0x3a, 0x38, 0xa4, 0x73, 0x37, 0x18, 0x2a, 0x02, 0xc3, 0x2e, 0xdc, 0x06, 0x09, 0x65, 0x27, 0x87, 0xd4, 0xc1, 0x8a, 0xa1, 0xee, 0x38, 0x34, 0xec, 0xc2, 0x6d, 0x90, 0xf6, 0x52, 0x7d, 0x48, 0x1d, 0xac, 0x41, 0xf2, 0x10, 0xf3, 0x41, 0xca, 0x4b, 0xf5, 0xb0, 0x0b, 0xb7, 0x41, 0xf2, 0x10, 0xf3, 0x21, 0x75, 0xb0, 0x06, 0xc9, 0x43, 0xcc, 0x1b, 0x24, 0x0f, 0x31, 0x1f, 0x87, 0x06, 0xd9, 0x86, 0xe6, 0xeb, 0x1b, 0x24, 0x0f, 0x31, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x07, 0xd6, 0xed, 0x83, 0xc4, 0x9b, 0xa0, 0x41, 0xb0, 0x38, 0xec, 0x86, 0xf5, 0xbd, 0x35, 0x48, 0x7b, 0xa9, 0x3e, 0xa4, 0x6a, 0x86, 0x5f, 0x10, 0x2d, 0xec, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x57, 0x0e, 0x4e, 0x42, 0xc7, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xbc, 0xef, 0x74, 0x30, 0x1c, 0xa5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xd0, 0x48, 0xfc, 0x20, 0x30, 0xb1, 0x8f, 0x43, 0x0b, 0x82, 0x0d, 0xd2, 0x68, 0x17, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x28, 0x07, 0xc7, 0xac, 0xe2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0xc1, 0xe1, 0xa4, 0xf8, 0x38, 0x74, 0x90, 0x86, 0x0d, 0x7d, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x7d, 0x9d, 0x0e, 0x4e, 0x42, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0x90, 0x70, 0x2a, 0x7d, 0x30, 0xde, 0x74, 0x8e, 0x43, 0xc7, 0xf3, 0xe3, 0xdb, 0xf1, 0xed, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0x51, 0x3a, 0x64, 0x2b, 0x0e, 0x52, 0xfc, 0x1c, 0x06, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x48, 0x33, 0xfe, 0x39, 0xbe, 0x0d, 0x82, 0xc5, 0x61, 0x37, 0x08, 0x3e, 0xe6, 0x0d, 0x8b, 0x7c, 0xc3, 0x2e, 0xdc, 0x06, 0xc9, 0x43, 0xcc, 0x87, 0xac, 0xdd, 0xc2, 0x6e, 0x58, 0x41, 0x5d, 0x43, 0xaa, 0xe6, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x83, 0xe4, 0x21, 0xe6, 0x43, 0x0f, 0xa1, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x41, 0x30, 0x38, 0x0f, 0xa2, 0x85, 0x3d, 0x48, 0x45, 0xaa, 0x3e, 0x1e, 0x0f, 0xbb, 0x70, 0x1b, 0xa4, 0x3f, 0x3d, 0x1f, 0x7a, 0x08, 0x2d, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0x82, 0xc1, 0x79, 0x10, 0x2d, 0xec, 0x62, 0xf8, 0x77, 0x48, 0x1d, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0xbb, 0xd0, 0x43, 0x0f, 0xa1, 0xc3, 0xfa, 0xe6, 0x41, 0xb2, 0x91, 0xf5, 0x20, 0x19, 0x32, 0x88, 0x36, 0x08, 0xcc, 0xf5, 0x41, 0xb4, 0xb0, 0x1b, 0xb2, 0x76, 0x87, 0xd4, 0xc1, 0xf1, 0xf8, 0xf8, 0x36, 0xec, 0xc2, 0x2e, 0xf4, 0x20, 0xa4, 0xc0, 0x0f, 0xeb, 0x9b, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0x7a, 0xdd, 0x41, 0xc0, 0xfb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x41, 0x3a, 0x08, 0x78, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x44, 0x6d, 0x87, 0x83, 0x11, 0x85, 0x7b, 0x1c, 0x3a, 0x0e, 0x1d, 0x62, 0x78, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0xea, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xa0, 0xfd, 0xce, 0x21, 0xb9, 0x74, 0x68, 0xd4, 0x72, 0x1c, 0x3a, 0x1e, 0xaf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0x0a, 0xaa, 0xf3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x87, 0x5d, 0xd8, 0x05, 0xc1, 0x06, 0xe7, 0x0e, 0xef, 0x83, 0x34, 0x58, 0xea, 0x85, 0x5d, 0x10, 0x6c, 0x30, 0x0a, 0x6c, 0x0f, 0x52, 0x8d, 0xa9, 0x0f, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0xe0, 0xc4, 0x48, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x39, 0x48, 0x0d, 0x3b, 0x39, 0x0e, 0x1d, 0x52, 0x07, 0xc7, 0xe3, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0xc4, 0x0a, 0xeb, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xd2, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x83, 0xe4, 0x21, 0xe6, 0x43, 0x34, 0xd7, 0x20, 0x79, 0x88, 0x79, 0x83, 0xe4, 0x21, 0xe6, 0x83, 0x42, 0xe5, 0x6c, 0xd8, 0x85, 0xdb, 0x20, 0xa5, 0xcf, 0xfa, 0x10, 0xcd, 0x35, 0x48, 0x1e, 0x62, 0xde, 0x20, 0xfd, 0xe9, 0xf9, 0xa0, 0x50, 0x39, 0x3b, 0x28, 0x40, 0xce, 0x8e, 0x6f, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0xc3, 0xfa, 0xde, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x0c, 0x56, 0x94, 0xe3, 0xdb, 0x20, 0xd8, 0xa0, 0xa0, 0xb8, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xda, 0x85, 0xf5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xe1, 0xc1, 0x83, 0x43, 0x1a, 0xee, 0x38, 0x74, 0x50, 0xa2, 0xa0, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0xd8, 0x0d, 0xbb, 0x06, 0x1b, 0x12, 0x53, 0xc3, 0x6e, 0xc8, 0x63, 0x6d, 0xd8, 0x3a, 0x18, 0x04, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x04, 0x1b, 0x8c, 0xbf, 0x9b, 0x43, 0x1a, 0xee, 0x20, 0x28, 0xbd, 0x8f, 0xc7, 0x6b, 0xe8, 0x21, 0x74, 0x10, 0x52, 0xe0, 0x07, 0x21, 0x00, 0x7e, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0x30, 0xec, 0x6b, 0x0e, 0x52, 0xfc, 0x1c, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x2e, 0xec, 0x06, 0xc1, 0xc7, 0x7c, 0x68, 0x1c, 0x35, 0xec, 0xc2, 0x2e, 0x08, 0x36, 0x48, 0x60, 0x04, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x1c, 0xa4, 0x86, 0x9d, 0x1c, 0x87, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0xe0, 0xc8, 0x53, 0x7c, 0x1c, 0x3a, 0xa4, 0x73, 0x17, 0x76, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xca, 0x41, 0xc0, 0xfb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x0e, 0x12, 0x17, 0x9a, 0x8f, 0x43, 0x1b, 0x8e, 0xf6, 0x61, 0x17, 0x04, 0x1b, 0xa4, 0x57, 0x62, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x86, 0xdf, 0x78, 0x3e, 0x06, 0xf1, 0x3d, 0x0e, 0x6d, 0x68, 0x25, 0x3e, 0xec, 0x82, 0x60, 0x83, 0xf4, 0x4a, 0xec, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0xf0, 0x1b, 0xcf, 0xc7, 0x20, 0xde, 0xc7, 0xa1, 0x83, 0x04, 0x07, 0xe8, 0xc3, 0x29, 0x76, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x20, 0xe9, 0x95, 0xf9, 0x20, 0xc5, 0xcf, 0xe1, 0x78, 0x3c, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x0f, 0x0a, 0x52, 0xc2, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x83, 0x64, 0x3a, 0x87, 0x0d, 0x31, 0xdc, 0x20, 0xb9, 0x0a, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0x08, 0x36, 0x18, 0x94, 0x1c, 0x07, 0x29, 0x7e, 0x0e, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xe9, 0xe4, 0xd2, 0xe0, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0xda, 0x85, 0xf5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x12, 0x0d, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xf8, 0x73, 0x48, 0x2e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x90, 0x0e, 0x8f, 0x7d, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x85, 0xdb, 0xa0, 0x04, 0x8a, 0x1c, 0x04, 0x1b, 0x9c, 0x62, 0x80, 0x0f, 0x92, 0xf9, 0x1e, 0x16, 0x04, 0x6b, 0x88, 0xe1, 0x20, 0xd8, 0x60, 0x74, 0xda, 0x1e, 0xa4, 0xf8, 0x39, 0x0c, 0xbb, 0x70, 0x8b, 0x87, 0x97, 0xef, 0x0e, 0x02, 0x13, 0x7b, 0x41, 0xb0, 0x38, 0xec, 0x86, 0x74, 0xe6, 0x86, 0x18, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0x38, 0x1d, 0x0c, 0x43, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0x83, 0x44, 0xbd, 0x8a, 0x83, 0xc0, 0xc4, 0x3e, 0x0e, 0x0d, 0xbb, 0xb0, 0x0b, 0xbb, 0x20, 0x58, 0x90, 0x0c, 0x6a, 0x0e, 0x86, 0xa3, 0xf4, 0x41, 0x32, 0x57, 0xf4, 0xc2, 0x2e, 0x08, 0x36, 0x38, 0xb3, 0x65, 0x1f, 0x24, 0xd8, 0x45, 0x1f, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x43, 0x0c, 0x87, 0x5d, 0xd8, 0x0d, 0x52, 0x94, 0xa2, 0x17, 0x76, 0x61, 0x37, 0xac, 0x85, 0x1e, 0xd6, 0x37, 0x17, 0x76, 0x61, 0x17, 0xee, 0xa0, 0x18, 0xa3, 0x39, 0xac, 0x6f, 0x1e, 0xd2, 0xb9, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x6f, 0x88, 0xe1, 0xb0, 0x0b, 0xbb, 0xb0, 0x0b, 0x82, 0x0d, 0x92, 0xaf, 0xb3, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0x07, 0xc9, 0xe2, 0xd3, 0xc7, 0xa1, 0x85, 0x5d, 0x10, 0x6c, 0x70, 0x66, 0xcb, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x1c, 0x24, 0x15, 0x54, 0x1f, 0x87, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0xb0, 0x1b, 0x24, 0xfc, 0x67, 0x1f, 0xd2, 0xb9, 0x87, 0xa3, 0xfd, 0x90, 0xce, 0x5d, 0xd8, 0x05, 0xc9, 0x90, 0x83, 0x84, 0xf5, 0x8d, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0xdf, 0x86, 0x5d, 0xb8, 0x0d, 0x8a, 0xd7, 0xc8, 0x83, 0xc0, 0xc4, 0x5e, 0x10, 0x2c, 0x0e, 0xbb, 0x21, 0x9d, 0xb9, 0x21, 0x86, 0x83, 0x60, 0x83, 0x24, 0xda, 0xec, 0x61, 0x17, 0x76, 0x83, 0x34, 0xea, 0xec, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0x74, 0x0f, 0xed, 0x0d, 0x31, 0x1c, 0x76, 0x61, 0x37, 0x48, 0x51, 0x8a, 0xde, 0x10, 0xc3, 0x61, 0x17, 0xee, 0x20, 0x85, 0xaa, 0x7a, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x52, 0xfa, 0xac, 0x8f, 0x43, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x1d, 0xa4, 0xbc, 0x54, 0x1f, 0xd2, 0xb9, 0x87, 0x74, 0xee, 0x41, 0xa2, 0x97, 0xf6, 0xf1, 0x6d, 0x10, 0x2c, 0x0e, 0xbb, 0x21, 0x9d, 0xb9, 0x21, 0x86, 0x83, 0x60, 0x83, 0x24, 0xda, 0xec, 0x61, 0x17, 0x76, 0x41, 0xb0, 0xc1, 0xe1, 0x8f, 0xf7, 0x20, 0xb1, 0x0e, 0x7b, 0x61, 0x17, 0x76, 0x83, 0x24, 0x44, 0xec, 0xc3, 0xfa, 0xe6, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x37, 0x1c, 0xed, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x78, 0x77, 0xe7, 0x60, 0xbc, 0xeb, 0x1c, 0x0c, 0x6c, 0xd1, 0x61, 0x17, 0x76, 0x83, 0x82, 0x0d, 0x69, 0x43, 0x0c, 0x87, 0x5d, 0x10, 0x6c, 0x38, 0xda, 0x07, 0xc1, 0xe2, 0xb0, 0x0b, 0x77, 0x90, 0x96, 0xb0, 0xb0, 0x21, 0x86, 0xc3, 0x2e, 0xec, 0x82, 0x60, 0x83, 0xf3, 0x95, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x52, 0x24, 0x3e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x85, 0xdf, 0x78, 0xbe, 0x20, 0xd8, 0xe0, 0xc4, 0x67, 0x7c, 0x50, 0x0a, 0x1a, 0x1d, 0x8e, 0xf6, 0x83, 0xc2, 0x2d, 0xe9, 0x38, 0x74, 0x90, 0xe4, 0xd6, 0x7c, 0x1c, 0x5a, 0xd8, 0x0d, 0x6b, 0x89, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x3f, 0xa4, 0x73, 0x8f, 0x6f, 0x87, 0x74, 0xee, 0xc2, 0x2e, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe1, 0x20, 0xd8, 0xe0, 0x70, 0x25, 0x7d, 0x30, 0xde, 0x28, 0x0f, 0xc9, 0xa5, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0xdf, 0x0e, 0x31, 0x3c, 0x1e, 0x1f, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x92, 0x5e, 0x99, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0xc5, 0x61, 0x37, 0x08, 0x3e, 0xe6, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0xa4, 0xf6, 0x44, 0x0f, 0x82, 0x0d, 0x52, 0x30, 0xa3, 0x87, 0xdd, 0x20, 0xa5, 0xa6, 0x7a, 0x0d, 0x12, 0xca, 0x4e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xc1, 0xf8, 0x87, 0x3e, 0x24, 0x97, 0x86, 0xdd, 0x20, 0xed, 0xa8, 0x7a, 0xe1, 0x17, 0x44, 0x0b, 0x3b, 0x08, 0x36, 0x38, 0xf0, 0xec, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x87, 0xd4, 0xc1, 0x71, 0x68, 0x10, 0x2d, 0x64, 0x10, 0x6c, 0x30, 0x60, 0x79, 0x0e, 0xd2, 0xcc, 0xb7, 0x8f, 0xc7, 0xc3, 0x6e, 0x90, 0x52, 0x53, 0xbd, 0x06, 0x69, 0x2f, 0xd5, 0x07, 0x49, 0xcb, 0xdb, 0xc3, 0x6e, 0x90, 0x76, 0x54, 0xbd, 0x06, 0xc9, 0x43, 0xcc, 0x07, 0x49, 0xcb, 0xdb, 0x83, 0x6c, 0x43, 0xf3, 0xf5, 0x41, 0xb0, 0x20, 0xd8, 0x10, 0xc3, 0x41, 0xb0, 0x38, 0xec, 0xc2, 0x6d, 0x90, 0xf6, 0x52, 0x7d, 0xd8, 0x2b, 0xdc, 0x20, 0x2d, 0x61, 0x61, 0xd8, 0x0d, 0x82, 0x8f, 0x79, 0xc3, 0x29, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf3, 0x41, 0xb0, 0x41, 0x49, 0x17, 0x75, 0x90, 0x0e, 0x07, 0x31, 0x88, 0x16, 0xc4, 0x83, 0x60, 0x83, 0xe2, 0x1e, 0xea, 0x20, 0x1d, 0x0e, 0x62, 0x10, 0x2d, 0xec, 0x20, 0xd8, 0x60, 0xc8, 0x49, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x82, 0x83, 0xe1, 0x28, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xb5, 0x03, 0xe4, 0x90, 0xaa, 0x39, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x7f, 0x0e, 0x86, 0xa3, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc0, 0xc4, 0x1e, 0x7e, 0xe3, 0xf9, 0xb0, 0x0b, 0xbb, 0x20, 0xd8, 0x20, 0xf9, 0x3a, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x60, 0x62, 0x1f, 0x24, 0x8b, 0x4f, 0x1f, 0x87, 0x16, 0x76, 0x41, 0xb0, 0xc1, 0x99, 0x2d, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x60, 0x62, 0x1f, 0x24, 0x15, 0x54, 0x1f, 0x87, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x41, 0xda, 0xc6, 0xf3, 0xb0, 0x0b, 0xbb, 0x20, 0xd8, 0x20, 0xf9, 0x3a, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x60, 0x62, 0x1f, 0xa4, 0x96, 0x45, 0x1f, 0x87, 0x16, 0x76, 0x41, 0xb0, 0xc1, 0x99, 0x2d, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x60, 0x62, 0x1f, 0xa4, 0xfb, 0x45, 0x1f, 0x87, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x41, 0x2a, 0x37, 0xf4, 0xe1, 0x14, 0x3b, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xb7, 0x41, 0xb0, 0x20, 0xd9, 0xa0, 0xa8, 0xcf, 0x39, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xa3, 0x74, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x02, 0xd7, 0xff, 0x60, 0x18, 0x3b, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf1, 0x41, 0x08, 0x80, 0x1f, 0x56, 0x68, 0x8f, 0x43, 0x1b, 0x52, 0x07, 0x07, 0x49, 0xcb, 0xdb, 0xc7, 0xb7, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x20, 0xe9, 0x95, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x89, 0x86, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x38, 0x08, 0x36, 0x48, 0x49, 0xa2, 0x1e, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x21, 0x86, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xb2, 0xb0, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd9, 0x60, 0x90, 0xbc, 0x1c, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbb, 0x41, 0xc1, 0x86, 0xb4, 0x78, 0x48, 0x2d, 0x0d, 0xbb, 0x41, 0xc9, 0x83, 0xb4, 0xb8, 0x20, 0x88, 0xdd, 0x20, 0x04, 0xc0, 0x1b, 0x76, 0x83, 0xf2, 0x69, 0x68, 0x71, 0xc1, 0x20, 0x76, 0x83, 0x74, 0xea, 0xee, 0x0d, 0x42, 0x0a, 0xbc, 0x61, 0x17, 0x6e, 0x83, 0x32, 0x6e, 0xe7, 0x38, 0xb4, 0xb8, 0x60, 0x18, 0xbb, 0x41, 0x82, 0x78, 0xf7, 0x06, 0xe9, 0xd4, 0xdd, 0x87, 0xab, 0xeb, 0x20, 0xfd, 0x3a, 0x7a, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0xc3, 0xb8, 0x0c, 0x82, 0x0d, 0x52, 0x6c, 0xb3, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x85, 0xdf, 0x78, 0x7e, 0x48, 0x6c, 0x1e, 0x0c, 0xde, 0xc9, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0x74, 0x1c, 0x1a, 0x76, 0xe1, 0x16, 0x04, 0x1b, 0x0c, 0x33, 0x9a, 0x83, 0x81, 0x2d, 0x3a, 0x08, 0x36, 0x38, 0xf0, 0xec, 0x1e, 0xa4, 0x38, 0x52, 0xaf, 0x71, 0xe8, 0x20, 0x4d, 0x90, 0xfa, 0x70, 0x8a, 0x1d, 0xdf, 0x8e, 0x43, 0xc7, 0xe3, 0x15, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x2e, 0xe0, 0xcd, 0xe5, 0xcd, 0x03, 0x3e, 0xda, 0xdb, 0x9b, 0xbb, 0x41, 0x9a, 0x99, 0x77, 0x0b, 0xac, 0x54, 0x45, 0x07, 0x36, 0xca, 0xe2, 0x86, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x55, 0xd1, 0x83, 0x24, 0x3a, 0xef, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x4a, 0x57, 0xf4, 0x20, 0x89, 0xce, 0x7b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x95, 0xae, 0xf8, 0x81, 0x95, 0xae, 0x90, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xa5, 0x2b, 0x64, 0x07, 0x09, 0xb3, 0xde, 0xc3, 0x2f, 0x48, 0x06, 0x04, 0x7e, 0xdf, 0x21, 0xb9, 0x74, 0x7c, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x4e, 0x57, 0xf4, 0x20, 0x89, 0xce, 0x7b, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x00, 0x16, 0x3d, 0x48, 0xa2, 0xf3, 0x5e, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xeb, 0x60, 0x71, 0x03, 0x8b, 0x61, 0xf1, 0x83, 0x60, 0x71, 0xc3, 0x29, 0x76, 0x50, 0x8c, 0x46, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x1f, 0x2c, 0xee, 0x20, 0xe5, 0xe1, 0x7b, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xc2, 0xe2, 0x0e, 0x52, 0x1e, 0xbe, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x11, 0x16, 0x77, 0x90, 0xf2, 0xf0, 0x3d, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0x08, 0x0b, 0xc9, 0xc0, 0x46, 0x58, 0x58, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xc2, 0x42, 0x36, 0xb0, 0x11, 0x16, 0x36, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8d, 0xb0, 0x90, 0x0e, 0x6c, 0x84, 0x85, 0xf8, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x84, 0x85, 0x7c, 0x60, 0x23, 0x2c, 0x4c, 0x0e, 0xa9, 0x83, 0x85, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1b, 0x61, 0x61, 0x34, 0xb0, 0x11, 0x16, 0xc6, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8d, 0xb0, 0x30, 0x1b, 0xd8, 0x08, 0x0b, 0xbb, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x11, 0x16, 0x86, 0x03, 0x1b, 0x61, 0x61, 0x7b, 0x30, 0xb2, 0xac, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xc2, 0xe2, 0x07, 0x56, 0xc2, 0x42, 0x74, 0x30, 0xde, 0x74, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x13, 0x16, 0x77, 0x90, 0xf2, 0xf0, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x4e, 0x58, 0x18, 0x0e, 0xec, 0x84, 0x85, 0x96, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x76, 0xc2, 0xc2, 0x72, 0x60, 0x27, 0x2c, 0x8c, 0x07, 0xc9, 0xc0, 0xa8, 0x1c, 0x0c, 0xff, 0xd8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x4e, 0x58, 0x58, 0x0f, 0xec, 0x84, 0x85, 0x82, 0x43, 0xea, 0x60, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0x09, 0x0b, 0x0d, 0x03, 0x3b, 0x61, 0xa1, 0xe4, 0x60, 0x4c, 0x58, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x14, 0x16, 0x77, 0x90, 0xf2, 0xf0, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf7, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x17, 0x16, 0xc2, 0x81, 0xbd, 0xb0, 0x50, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x5e, 0x58, 0x48, 0x07, 0xf6, 0xc2, 0xc2, 0xe0, 0x90, 0x98, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x85, 0x85, 0xc5, 0xc0, 0x5e, 0x58, 0x58, 0x0e, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xc2, 0xc2, 0x66, 0x60, 0x2f, 0x2c, 0x8c, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x5e, 0x58, 0x58, 0x0d, 0xec, 0x85, 0x85, 0xe1, 0x41, 0x48, 0x81, 0x2f, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x85, 0x85, 0xe9, 0xc0, 0x5e, 0x58, 0x58, 0x1f, 0x84, 0x00, 0xf8, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x17, 0x16, 0xe6, 0x03, 0x7b, 0x61, 0xa1, 0xe1, 0x60, 0xf0, 0x4e, 0x1e, 0x87, 0x06, 0xd1, 0x82, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0x0a, 0x0b, 0xe1, 0xc0, 0x56, 0x58, 0x28, 0x19, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x85, 0x85, 0x7c, 0x60, 0x2b, 0x2c, 0xec, 0x86, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5b, 0x61, 0x61, 0x31, 0xb0, 0x15, 0x16, 0x26, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x2b, 0x2c, 0x6c, 0x06, 0xb6, 0xc2, 0xc2, 0xec, 0x60, 0x2c, 0x76, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xad, 0xb0, 0x30, 0x1c, 0xd8, 0x0a, 0x0b, 0xcb, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x15, 0x16, 0xa6, 0x03, 0x5b, 0x61, 0xa1, 0x63, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xad, 0xb0, 0xb0, 0x1d, 0xd8, 0x0a, 0x0b, 0xf3, 0x83, 0xa3, 0xf6, 0xf0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0x0a, 0x0b, 0xfb, 0x81, 0xad, 0xb0, 0x50, 0x71, 0x30, 0x16, 0x3b, 0x8f, 0x43, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x16, 0x16, 0xc2, 0x81, 0xb5, 0xb0, 0x90, 0x1f, 0x84, 0x14, 0xf8, 0xf1, 0xfc, 0x78, 0x7c, 0x3c, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x63, 0x71, 0x03, 0xcb, 0x63, 0xa1, 0x63, 0x10, 0x2c, 0x6e, 0x38, 0xc5, 0x0e, 0xc2, 0xd9, 0x7e, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4b, 0x63, 0x71, 0x07, 0x29, 0x65, 0xe2, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x8d, 0x85, 0x64, 0x60, 0x69, 0x2c, 0xc4, 0x07, 0xe7, 0xe0, 0xef, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xd6, 0x58, 0xfc, 0xc0, 0xd6, 0x58, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xad, 0xb1, 0x10, 0x0c, 0x6c, 0x8d, 0x85, 0xd5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5b, 0x63, 0x21, 0x19, 0xd8, 0x1a, 0x0b, 0xe1, 0x20, 0x19, 0x68, 0xdd, 0x77, 0x10, 0xf0, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xad, 0xb1, 0x90, 0x0e, 0x6c, 0x8d, 0x85, 0xc1, 0xc1, 0xf8, 0xe9, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xc6, 0xc2, 0x62, 0x60, 0x6b, 0x2c, 0x8c, 0x0e, 0x86, 0x66, 0xd7, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5b, 0x63, 0x61, 0x36, 0xb0, 0x35, 0x16, 0x76, 0x87, 0x18, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6b, 0x63, 0x71, 0x07, 0x29, 0x65, 0xe2, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbd, 0xb1, 0xb8, 0x83, 0x94, 0x32, 0xf1, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xc6, 0x42, 0x32, 0xb0, 0x37, 0x16, 0xd2, 0x83, 0x74, 0x90, 0xee, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xe2, 0x58, 0xfc, 0xc0, 0xe2, 0x58, 0x98, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xc7, 0x42, 0x34, 0xb0, 0x38, 0x16, 0xd2, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xe2, 0x58, 0x88, 0x07, 0x16, 0xc7, 0x42, 0x7e, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xc7, 0xc2, 0x60, 0x60, 0x71, 0x2c, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x38, 0x16, 0x66, 0x07, 0xc9, 0xec, 0xe3, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x71, 0x2c, 0xec, 0x06, 0x16, 0xc7, 0xc2, 0xf4, 0x20, 0xed, 0xa5, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8b, 0x63, 0x61, 0x3b, 0xb0, 0x38, 0x16, 0xc6, 0x87, 0x18, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9b, 0x63, 0x71, 0x07, 0x29, 0x65, 0xe2, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x8e, 0xc5, 0x1d, 0xa4, 0x94, 0x89, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x3a, 0x16, 0x92, 0x81, 0xd5, 0xb1, 0xb0, 0x1b, 0x24, 0xc3, 0x0c, 0xa2, 0x85, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xea, 0x58, 0xd8, 0x0c, 0xac, 0x8e, 0x85, 0xd9, 0x41, 0x50, 0x7a, 0x1f, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xdd, 0xb1, 0xf8, 0x81, 0xdd, 0xb1, 0x30, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbb, 0x63, 0x21, 0x18, 0xd8, 0x1d, 0x0b, 0xd9, 0xc1, 0x98, 0xb0, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xee, 0x58, 0x08, 0x07, 0x76, 0xc7, 0xc2, 0x72, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x3b, 0x16, 0xf2, 0x81, 0xdd, 0xb1, 0x30, 0x39, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x8e, 0x85, 0xcd, 0xc0, 0xee, 0x58, 0x18, 0x1d, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xdd, 0xb1, 0xb0, 0x1a, 0xd8, 0x1d, 0x0b, 0xc3, 0x83, 0x91, 0x65, 0x35, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x8f, 0xc5, 0x1d, 0xa4, 0x94, 0x89, 0x0f, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xc7, 0xc2, 0x6e, 0x60, 0x79, 0x2c, 0x54, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe5, 0xb1, 0x30, 0x1c, 0x58, 0x1e, 0x0b, 0xfb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xc7, 0xc2, 0x72, 0x60, 0x79, 0x2c, 0x8c, 0x0f, 0x42, 0xc4, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x8f, 0x85, 0xf5, 0xc0, 0xf2, 0x58, 0x98, 0x1f, 0x1a, 0x09, 0x1e, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x3c, 0x16, 0x0a, 0x06, 0x96, 0xc7, 0x42, 0xc3, 0x41, 0x50, 0x7a, 0x1f, 0x8f, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x73, 0x2c, 0x24, 0x03, 0x9b, 0x63, 0x21, 0x3c, 0x34, 0x12, 0x3c, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x23, 0x8b, 0x1b, 0x58, 0x28, 0x0b, 0x1d, 0x83, 0x60, 0x71, 0x83, 0x00, 0xb8, 0x3f, 0x08, 0x67, 0xfb, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x91, 0xc5, 0x1d, 0x24, 0xfe, 0x97, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x22, 0x59, 0xdc, 0x41, 0xe2, 0x7f, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xc9, 0xe2, 0x0e, 0x12, 0xff, 0xcb, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9b, 0x64, 0x21, 0x19, 0xd8, 0x24, 0x0b, 0x8b, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x26, 0x59, 0xc8, 0x06, 0x36, 0xc9, 0x42, 0x78, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xc9, 0x42, 0x3a, 0xb0, 0x49, 0x16, 0x06, 0x13, 0xc4, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x92, 0xc5, 0x0f, 0xac, 0x92, 0x85, 0xe8, 0x60, 0xbc, 0xe9, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x97, 0x2c, 0xee, 0x20, 0xf1, 0xbf, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x92, 0x85, 0x64, 0x60, 0x97, 0x2c, 0x84, 0x07, 0x69, 0x2f, 0xd5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x26, 0x8b, 0x3b, 0x48, 0xfc, 0x2f, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x99, 0x2c, 0xc4, 0x03, 0xcb, 0x64, 0x61, 0x37, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x32, 0x59, 0xc8, 0x07, 0x96, 0xc9, 0xc2, 0xe4, 0xe0, 0x28, 0xbf, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xc9, 0xc2, 0x66, 0x60, 0x99, 0x2c, 0xcc, 0x0e, 0x52, 0x20, 0xcd, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0x26, 0x8b, 0x3b, 0x48, 0xfc, 0x2f, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x9d, 0x2c, 0xee, 0x20, 0xf1, 0xbf, 0x7c, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x75, 0xb2, 0x90, 0x0c, 0xac, 0x93, 0x85, 0xf9, 0x20, 0x19, 0x66, 0x10, 0x2d, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xc9, 0xc2, 0x66, 0x60, 0x9d, 0x2c, 0xac, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x40, 0xcc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x4e, 0x16, 0x96, 0x03, 0xeb, 0x64, 0x61, 0x7c, 0x1c, 0x3a, 0x9e, 0x1f, 0x04, 0x39, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x9f, 0x2c, 0x7e, 0x60, 0x9f, 0x2c, 0xc4, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x9f, 0x2c, 0x04, 0x03, 0xfb, 0x64, 0x21, 0x3b, 0x48, 0xc0, 0x16, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x3e, 0x59, 0x08, 0x07, 0xf6, 0xc9, 0x42, 0x7a, 0x38, 0xda, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x85, 0xb2, 0xb8, 0x83, 0xc4, 0xff, 0xf2, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x42, 0x59, 0xd8, 0x0d, 0x2c, 0x94, 0x85, 0x8a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x50, 0x16, 0x86, 0x03, 0x0b, 0x65, 0x61, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x42, 0x59, 0x58, 0x0e, 0x2c, 0x94, 0x85, 0xf1, 0xc1, 0x30, 0x86, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0b, 0x65, 0x61, 0x3d, 0xb0, 0x50, 0x16, 0xe6, 0x87, 0x46, 0x82, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x94, 0x85, 0x82, 0x81, 0x85, 0xb2, 0xd0, 0x70, 0x10, 0x94, 0xde, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0x26, 0x0b, 0xc9, 0xc0, 0x36, 0x59, 0x98, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x4d, 0x16, 0xa2, 0x81, 0x6d, 0xb2, 0x90, 0x0e, 0x92, 0x81, 0xe2, 0x74, 0x30, 0xfc, 0x63, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdb, 0x64, 0x21, 0x1e, 0xd8, 0x26, 0x0b, 0x8b, 0x83, 0x12, 0x46, 0x62, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x9b, 0x2c, 0x4c, 0x06, 0xb6, 0xc9, 0xc2, 0x72, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x93, 0x85, 0xcd, 0xc0, 0x36, 0x59, 0x98, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x4d, 0x16, 0x76, 0x03, 0xdb, 0x64, 0x61, 0x78, 0x38, 0xda, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6d, 0xb2, 0x30, 0x1d, 0xd8, 0x26, 0x0b, 0xeb, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x1f, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x21, 0x16, 0x37, 0xb0, 0x27, 0x16, 0x8a, 0x06, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xc4, 0xc2, 0xf8, 0x20, 0xf5, 0x2e, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x62, 0x71, 0x07, 0xa9, 0x77, 0xe9, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x88, 0x85, 0xe5, 0xc0, 0x8a, 0x58, 0xe8, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x62, 0x61, 0x3a, 0xb0, 0x22, 0x16, 0x1a, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x62, 0x61, 0x3c, 0xb0, 0x22, 0x16, 0xf6, 0x87, 0x56, 0xe2, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x11, 0x0b, 0x05, 0x03, 0x2b, 0x62, 0xa1, 0x70, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x15, 0xb1, 0xd0, 0x30, 0xb0, 0x22, 0x16, 0x7a, 0x86, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x62, 0xa1, 0xe5, 0x20, 0x75, 0x42, 0xfd, 0xe0, 0x14, 0xe0, 0x7b, 0x70, 0xd4, 0xd2, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x88, 0x85, 0xa2, 0x81, 0x15, 0xb1, 0xd0, 0x75, 0x88, 0xe6, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x22, 0x16, 0xca, 0x06, 0x56, 0xc4, 0x42, 0xdf, 0x21, 0x86, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x88, 0x85, 0xca, 0x81, 0x15, 0xb1, 0x50, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x8a, 0x58, 0xe8, 0x1c, 0x58, 0x11, 0x0b, 0xcd, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x15, 0xb1, 0xd0, 0x7b, 0x90, 0x88, 0xa9, 0x7e, 0x70, 0x0a, 0xf0, 0x3d, 0x38, 0x6c, 0xea, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x15, 0xb1, 0x50, 0x3d, 0xb0, 0x22, 0x16, 0xda, 0x0f, 0xd1, 0x3c, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x47, 0x2c, 0xee, 0x20, 0xf5, 0x2e, 0x7d, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x23, 0x16, 0x92, 0x81, 0x1d, 0xb1, 0x10, 0x1e, 0x84, 0x14, 0xf8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0x12, 0x8b, 0x3b, 0x48, 0xbd, 0x4b, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x4b, 0x2c, 0xc4, 0x03, 0x5b, 0x62, 0x61, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x96, 0x58, 0xc8, 0x07, 0xb6, 0xc4, 0xc2, 0x66, 0x90, 0x0c, 0x28, 0xd5, 0xfb, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0x12, 0x0b, 0xa3, 0x81, 0x2d, 0xb1, 0xb0, 0x3b, 0xe4, 0x6b, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x13, 0x8b, 0x3b, 0x48, 0xbd, 0x4b, 0x1f, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x89, 0x85, 0x64, 0x60, 0x4d, 0x2c, 0xcc, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x13, 0x0b, 0xd1, 0xc0, 0x9a, 0x58, 0x48, 0x0f, 0x8e, 0x9b, 0xd7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x35, 0xb1, 0x10, 0x0f, 0xac, 0x89, 0x85, 0xc5, 0x61, 0x5c, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x35, 0xb1, 0x30, 0x19, 0x58, 0x13, 0x0b, 0xab, 0xe3, 0xd0, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x89, 0x85, 0xe1, 0xc0, 0x9a, 0x58, 0xa8, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x4d, 0x2c, 0x2c, 0x07, 0xd6, 0xc4, 0xc2, 0x7a, 0x90, 0x0c, 0x38, 0xae, 0xf7, 0x1d, 0x0c, 0x43, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x9a, 0x58, 0x98, 0x0f, 0xac, 0x89, 0x85, 0x86, 0xc3, 0xda, 0xef, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x9a, 0x58, 0xa8, 0x18, 0x58, 0x13, 0x0b, 0x2d, 0x87, 0x71, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xc4, 0x42, 0xcd, 0xc0, 0x9a, 0x58, 0x68, 0x3a, 0x48, 0x7b, 0xa9, 0x3e, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x4f, 0x2c, 0xee, 0x20, 0xf5, 0x2e, 0x7d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3d, 0xb1, 0xd8, 0x81, 0x3d, 0xb1, 0x10, 0x1d, 0xa4, 0x83, 0x74, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xc4, 0x42, 0x36, 0xb0, 0x27, 0x16, 0xe2, 0xc3, 0xda, 0xef, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x27, 0x16, 0xf2, 0x81, 0x3d, 0xb1, 0xd0, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x9e, 0x58, 0x18, 0x0c, 0xec, 0x89, 0x85, 0xd1, 0x20, 0xd9, 0xa0, 0x9c, 0xd5, 0x39, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3d, 0xb1, 0xb0, 0x1a, 0xd8, 0x13, 0x0b, 0x15, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x89, 0x85, 0xd9, 0xc0, 0x9e, 0x58, 0x58, 0x1e, 0x1c, 0xaf, 0xa0, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7b, 0x62, 0x61, 0x3a, 0xb0, 0x27, 0x16, 0xd6, 0x87, 0x71, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xc4, 0xc2, 0x7c, 0x60, 0x4f, 0x2c, 0x34, 0x1c, 0x87, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x9e, 0x58, 0xe8, 0x18, 0xd8, 0x13, 0x0b, 0x35, 0x07, 0x69, 0x1b, 0xcf, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xc4, 0xe2, 0x07, 0x96, 0xc4, 0x42, 0xe1, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4b, 0x62, 0x21, 0x18, 0x58, 0x12, 0x0b, 0xe1, 0x20, 0x19, 0x70, 0x5c, 0xef, 0x3b, 0x18, 0xef, 0x3a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x25, 0xb1, 0x90, 0x0e, 0x2c, 0x89, 0x85, 0xa6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xc4, 0x42, 0x3c, 0xb0, 0x24, 0x16, 0x26, 0x83, 0x64, 0x83, 0xa2, 0x3e, 0xe7, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xc4, 0xc2, 0x66, 0x60, 0x49, 0x2c, 0x94, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x24, 0x16, 0x46, 0x03, 0x4b, 0x62, 0x61, 0x38, 0x48, 0x36, 0x28, 0x67, 0x75, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x49, 0x2c, 0x2c, 0x07, 0x96, 0xc4, 0xc2, 0x7e, 0x98, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x89, 0x85, 0xed, 0xc0, 0x92, 0x58, 0x98, 0x1f, 0x84, 0x00, 0xf8, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x24, 0x16, 0x0a, 0x06, 0x96, 0xc4, 0x42, 0xc7, 0x41, 0xda, 0xc6, 0xf3, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x12, 0x0b, 0x2d, 0x03, 0x4b, 0x62, 0xa1, 0xe8, 0x90, 0xaf, 0x3d, 0x0e, 0x2d, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x89, 0x85, 0xaa, 0x81, 0x25, 0xb1, 0xd0, 0x75, 0x38, 0xda, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x25, 0xb1, 0x50, 0x36, 0xb0, 0x24, 0x16, 0xfa, 0x0e, 0xd2, 0x5e, 0xaa, 0x8f, 0x43, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x76, 0xba, 0xe2, 0x07, 0xf6, 0xbf, 0x42, 0xb2, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xbe, 0x42, 0x32, 0xb0, 0xf8, 0x15, 0x7a, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xed, 0x2b, 0x6c, 0x0f, 0x52, 0x33, 0xde, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xf7, 0x15, 0x92, 0x83, 0xd4, 0x8c, 0xf7, 0x61, 0x37, 0xac, 0xef, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbd, 0xaf, 0x30, 0x19, 0xd8, 0xfb, 0x0a, 0xab, 0x83, 0xc0, 0xc4, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xe2, 0x57, 0x48, 0x0e, 0x52, 0x33, 0xde, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xe2, 0x57, 0x88, 0x06, 0x16, 0xbf, 0x42, 0x7a, 0x90, 0xf6, 0x52, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc5, 0xaf, 0x10, 0x0f, 0x2c, 0x7e, 0x85, 0xda, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xe2, 0x57, 0x58, 0x0c, 0x2c, 0x7e, 0x85, 0x92, 0x41, 0xb4, 0xa0, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8b, 0x5f, 0x61, 0x37, 0xb0, 0xf8, 0x15, 0x3a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xfc, 0x0a, 0xeb, 0x81, 0xc5, 0xaf, 0x50, 0x71, 0x18, 0x97, 0xe3, 0xf1, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8b, 0x5f, 0xa1, 0x65, 0x60, 0xf1, 0x2b, 0xb4, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xf8, 0x15, 0x6a, 0x06, 0x16, 0xbf, 0x42, 0xdd, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8b, 0x5f, 0xa1, 0x67, 0x60, 0xf1, 0x2b, 0x74, 0x0d, 0x92, 0x81, 0xe1, 0x3b, 0x24, 0x97, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xe2, 0x57, 0x28, 0x1b, 0x58, 0xfc, 0x0a, 0x6d, 0x07, 0x65, 0xdc, 0xce, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x7e, 0x85, 0xbe, 0x81, 0xc5, 0xaf, 0x50, 0x7a, 0x88, 0xe6, 0x71, 0xe8, 0x78, 0xbc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xfd, 0x0a, 0x8b, 0x81, 0xd5, 0xaf, 0x70, 0x66, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xbf, 0xc2, 0x74, 0x60, 0xf5, 0x2b, 0x7c, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xf5, 0x2b, 0x6c, 0x07, 0x56, 0xbf, 0x42, 0xc1, 0xc1, 0xe0, 0xae, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x7e, 0x85, 0x86, 0x81, 0xd5, 0xaf, 0xd0, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xbf, 0x42, 0xc5, 0xc0, 0xea, 0x57, 0x28, 0x39, 0x48, 0x28, 0x3b, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xea, 0x57, 0x68, 0x19, 0x58, 0xfd, 0x0a, 0x45, 0x87, 0xd4, 0xc1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xfa, 0x15, 0xaa, 0x06, 0x56, 0xbf, 0xc2, 0x95, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xea, 0x57, 0x28, 0x1f, 0x58, 0xfd, 0x0a, 0x4f, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xea, 0x57, 0x68, 0x1f, 0x58, 0xfd, 0x0a, 0x37, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xfd, 0x0a, 0x0f, 0x06, 0x56, 0xbf, 0xc2, 0x87, 0x41, 0x32, 0x30, 0x7e, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0xda, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xab, 0x5f, 0xe1, 0xc4, 0xc0, 0xea, 0x57, 0x78, 0x71, 0x68, 0x24, 0x78, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xea, 0x57, 0xf8, 0x31, 0xb0, 0xfa, 0x15, 0x8e, 0x1c, 0x04, 0xa5, 0xf7, 0xf1, 0xf8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x8e, 0x57, 0x58, 0x0c, 0xec, 0x78, 0x85, 0x33, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe3, 0x15, 0xa6, 0x03, 0x3b, 0x5e, 0xe1, 0xcb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x5e, 0x61, 0x3b, 0xb0, 0xe3, 0x15, 0x0a, 0x0e, 0x06, 0x77, 0xe5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xc7, 0x2b, 0x34, 0x0c, 0xec, 0x78, 0x85, 0xa6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe3, 0x15, 0x2a, 0x06, 0x76, 0xbc, 0x42, 0xc9, 0xc1, 0x91, 0xa7, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x5e, 0xa1, 0x65, 0x60, 0xc7, 0x2b, 0x14, 0x1d, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x8e, 0x57, 0xa8, 0x1a, 0xd8, 0xf1, 0x0a, 0x57, 0x06, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x5e, 0xa1, 0x7c, 0x60, 0xc7, 0x2b, 0x3c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x5e, 0xa1, 0x7d, 0x60, 0xc7, 0x2b, 0xdc, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xc7, 0x2b, 0x3c, 0x18, 0xd8, 0xf1, 0x0a, 0x1f, 0x0e, 0x12, 0xfa, 0xe2, 0x07, 0xc9, 0xa0, 0x6c, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe3, 0x15, 0x4e, 0x0c, 0xec, 0x78, 0x85, 0x17, 0x87, 0x46, 0x82, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x78, 0x85, 0x1f, 0x03, 0x3b, 0x5e, 0xe1, 0xc8, 0x41, 0x50, 0x7a, 0x1f, 0x8f, 0x8f, 0x43, 0xc7, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xfb, 0x15, 0x16, 0x03, 0xbb, 0x5f, 0xe1, 0xcc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x7e, 0x85, 0xe9, 0xc0, 0xee, 0x57, 0xf8, 0x32, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xee, 0x57, 0xd8, 0x0e, 0xec, 0x7e, 0x85, 0x82, 0x83, 0xc1, 0x5d, 0x39, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xfd, 0x0a, 0x0d, 0x03, 0xbb, 0x5f, 0xa1, 0x69, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x7e, 0x85, 0x8a, 0x81, 0xdd, 0xaf, 0x50, 0x72, 0x90, 0x0e, 0xe5, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xdd, 0xaf, 0xd0, 0x32, 0xb0, 0xfb, 0x15, 0x8a, 0x0e, 0xa9, 0x83, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xf7, 0x2b, 0x54, 0x0d, 0xec, 0x7e, 0x85, 0x2b, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xdd, 0xaf, 0x50, 0x3e, 0xb0, 0xfb, 0x15, 0x9e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xdd, 0xaf, 0xd0, 0x3e, 0xb0, 0xfb, 0x15, 0x6e, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xfb, 0x15, 0x1e, 0x0c, 0xec, 0x7e, 0x85, 0x0f, 0x07, 0x09, 0x7d, 0xf1, 0x83, 0x64, 0x10, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x76, 0xbf, 0xc2, 0x89, 0x81, 0xdd, 0xaf, 0xf0, 0xe2, 0xd0, 0x48, 0xf0, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xdd, 0xaf, 0xf0, 0x63, 0x60, 0xf7, 0x2b, 0x1c, 0x39, 0x08, 0x4a, 0xef, 0xe3, 0xf1, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xbf, 0xc2, 0x62, 0x60, 0xfb, 0x2b, 0x34, 0x0d, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xf6, 0x57, 0x98, 0x0e, 0x6c, 0x7f, 0x85, 0xa2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xbf, 0xc2, 0x76, 0x60, 0xfb, 0x2b, 0x74, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xfd, 0x15, 0xc6, 0x03, 0xdb, 0x5f, 0xa1, 0x60, 0x90, 0x0c, 0x56, 0x87, 0xe4, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xfe, 0x0a, 0x0d, 0x03, 0xdb, 0x5f, 0xa1, 0xe2, 0xd0, 0x4a, 0xfc, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xbf, 0x42, 0xc9, 0xc0, 0xf6, 0x57, 0xe8, 0x39, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe1, 0x15, 0x16, 0x03, 0x1b, 0x5e, 0xa1, 0x69, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xbc, 0xc2, 0x74, 0x60, 0xc3, 0x2b, 0x14, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe1, 0x15, 0xb6, 0x03, 0x1b, 0x5e, 0xa1, 0x63, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x0d, 0xaf, 0x30, 0x1e, 0xd8, 0xf0, 0x0a, 0x05, 0x07, 0xc9, 0x98, 0xf4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xc3, 0x2b, 0x34, 0x0c, 0x6c, 0x78, 0x85, 0x8a, 0xc3, 0xd1, 0x7e, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1b, 0x5e, 0xa1, 0x64, 0x60, 0xc3, 0x2b, 0xf4, 0x1c, 0x52, 0x07, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xf9, 0x2b, 0x2c, 0x06, 0x96, 0xbf, 0xc2, 0x99, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xfe, 0x0a, 0xd3, 0x81, 0xe5, 0xaf, 0xf0, 0x65, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe5, 0xaf, 0xb0, 0x1d, 0x58, 0xfe, 0x0a, 0x05, 0x07, 0x83, 0xbb, 0x72, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xfc, 0x15, 0x1a, 0x06, 0x96, 0xbf, 0x42, 0xd3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xfe, 0x0a, 0x15, 0x03, 0xcb, 0x5f, 0xa1, 0xe4, 0x20, 0x51, 0xee, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x5f, 0xa1, 0x65, 0x60, 0xf9, 0x2b, 0x14, 0x1d, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xf2, 0x57, 0xa8, 0x1a, 0x58, 0xfe, 0x0a, 0x57, 0x06, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x5f, 0xa1, 0x7c, 0x60, 0xf9, 0x2b, 0x3c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x5f, 0xa1, 0x7d, 0x60, 0xf9, 0x2b, 0xdc, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xf9, 0x2b, 0x3c, 0x18, 0x58, 0xfe, 0x0a, 0x1f, 0x0e, 0x12, 0xfa, 0xe2, 0x07, 0xc9, 0x30, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe5, 0xaf, 0x70, 0x62, 0x60, 0xf9, 0x2b, 0xbc, 0x38, 0x34, 0x12, 0x3c, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xf9, 0x2b, 0xfc, 0x18, 0x58, 0xfe, 0x0a, 0x47, 0x0e, 0x82, 0xd2, 0xfb, 0x78, 0x7c, 0x1c, 0x3a, 0x1e, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x15, 0xaf, 0xb0, 0x18, 0x58, 0xf1, 0x0a, 0x07, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xf1, 0x0a, 0x93, 0x81, 0x15, 0xaf, 0xb0, 0x3b, 0x48, 0x6c, 0x39, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x78, 0x85, 0xe1, 0xc0, 0x8a, 0x57, 0x98, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x15, 0xaf, 0xb0, 0x1c, 0x58, 0xf1, 0x0a, 0xdb, 0x31, 0x54, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xc5, 0x2b, 0x8c, 0x07, 0x56, 0xbc, 0xc2, 0xfa, 0x70, 0xb4, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x5e, 0x61, 0x3f, 0xb0, 0xe2, 0x15, 0xfa, 0x07, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x5e, 0xa1, 0x71, 0x60, 0xc5, 0x2b, 0xd4, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x15, 0xaf, 0x50, 0x39, 0xb0, 0xe2, 0x15, 0xba, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xf1, 0x0a, 0xb5, 0x03, 0x2b, 0x5e, 0xa1, 0x78, 0x90, 0x0c, 0x8c, 0xdf, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0xc1, 0x6e, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe2, 0x15, 0x9a, 0x07, 0x56, 0xbc, 0x42, 0xf5, 0xa1, 0x91, 0xe0, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x5e, 0xa1, 0x7c, 0x60, 0xc5, 0x2b, 0xb4, 0x1f, 0x04, 0xa5, 0xf7, 0xf1, 0xf8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x35, 0xaf, 0x90, 0x0c, 0xec, 0x7c, 0x85, 0xfd, 0x20, 0xd8, 0x60, 0xc0, 0xed, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xcf, 0x2b, 0x24, 0x07, 0x69, 0xf7, 0xf7, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3d, 0xaf, 0x90, 0x0e, 0xec, 0x79, 0x85, 0xe5, 0xc1, 0x59, 0x28, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x79, 0x85, 0xed, 0xc0, 0x9e, 0x57, 0xa8, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xcf, 0x2b, 0x8c, 0x07, 0xf6, 0xbc, 0x42, 0xc1, 0x41, 0x0a, 0x80, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xcf, 0x2b, 0x34, 0x0c, 0xec, 0x79, 0x85, 0xd6, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x9e, 0x57, 0x28, 0x19, 0xd8, 0xf3, 0x0a, 0x3d, 0x87, 0x71, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7b, 0x5e, 0xa1, 0x68, 0x60, 0xcf, 0x2b, 0xb4, 0x0d, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x83, 0xa7, 0x83, 0xbb, 0x07, 0x01, 0x1e, 0x74, 0x7c, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x9e, 0x57, 0xa8, 0x1b, 0xd8, 0xf3, 0x0a, 0xa5, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xa0, 0xed, 0x20, 0x25, 0x16, 0xff, 0xf8, 0x36, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x79, 0x85, 0xda, 0x81, 0x3d, 0xaf, 0xd0, 0x7c, 0x10, 0x98, 0xd8, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x7a, 0x85, 0xe4, 0x20, 0xed, 0xfe, 0x7e, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe8, 0x15, 0xd2, 0x81, 0x45, 0xaf, 0xb0, 0x3c, 0x38, 0x87, 0xa4, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x45, 0xaf, 0xb0, 0x1d, 0x58, 0xf4, 0x0a, 0x5d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x7a, 0x85, 0xf1, 0xc0, 0xa2, 0x57, 0x28, 0x38, 0x48, 0x01, 0x70, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x7a, 0x85, 0x86, 0x81, 0x45, 0xaf, 0x50, 0x33, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x0e, 0xee, 0x0e, 0x1e, 0x1e, 0x0c, 0xbb, 0xdd, 0xe3, 0xdb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe8, 0x15, 0x7a, 0x06, 0x16, 0xbd, 0x42, 0xd5, 0x41, 0x60, 0x62, 0x1f, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe9, 0x15, 0x92, 0x83, 0xb4, 0xfb, 0xfb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xbd, 0x42, 0x72, 0x90, 0x76, 0x7f, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xaa, 0x57, 0x18, 0x0c, 0xac, 0x7a, 0x85, 0xf9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xab, 0x5e, 0x61, 0x31, 0xb0, 0xea, 0x15, 0x96, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x7a, 0x85, 0xc9, 0xc0, 0xaa, 0x57, 0x98, 0x1d, 0x24, 0x63, 0xd2, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x55, 0xaf, 0xb0, 0x1b, 0x58, 0xf5, 0x0a, 0xc3, 0xc3, 0xd1, 0x7e, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xab, 0x5e, 0x61, 0x3a, 0xb0, 0xea, 0x15, 0xd6, 0x07, 0x23, 0xb3, 0xf7, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x5d, 0xaf, 0x90, 0x1c, 0xa4, 0xdd, 0xdf, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x7b, 0x85, 0x6c, 0x60, 0xe1, 0x2b, 0x34, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xec, 0x15, 0x56, 0x03, 0xcb, 0x5e, 0xa1, 0x66, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x65, 0xaf, 0x30, 0x1b, 0x58, 0xf6, 0x0a, 0xe3, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xb2, 0x57, 0x98, 0x1e, 0x24, 0xc6, 0xea, 0x1f, 0x9c, 0x78, 0x9f, 0x0f, 0xc6, 0x1d, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xf6, 0x0a, 0xeb, 0x81, 0x65, 0xaf, 0xd0, 0x32, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xb2, 0x57, 0x98, 0x0f, 0x2c, 0x7b, 0x85, 0x8a, 0x41, 0x32, 0xa0, 0x54, 0xef, 0x3b, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xd9, 0x2b, 0x74, 0x0c, 0x2c, 0x7b, 0x85, 0x92, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6d, 0xaf, 0x90, 0x1d, 0x24, 0x13, 0xea, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xed, 0x15, 0x46, 0x03, 0xdb, 0x5e, 0xa1, 0x66, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6d, 0xaf, 0x30, 0x1b, 0xd8, 0xf6, 0x0a, 0xe3, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xb6, 0x57, 0x98, 0x1e, 0x24, 0xbe, 0xed, 0x1f, 0x9c, 0x08, 0xa1, 0x0f, 0x4a, 0x86, 0xa6, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6d, 0xaf, 0xb0, 0x1e, 0xd8, 0xf6, 0x0a, 0x05, 0x87, 0xa6, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xf6, 0x0a, 0x0d, 0x03, 0xdb, 0x5e, 0xa1, 0xe2, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xdb, 0x2b, 0x74, 0x0c, 0x6c, 0x7b, 0x85, 0x96, 0xc3, 0xd1, 0x7e, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xdd, 0x2b, 0x64, 0x07, 0xc9, 0x84, 0xfa, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x75, 0xaf, 0x90, 0x0f, 0xac, 0x7b, 0x85, 0xa2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xbd, 0xc2, 0x60, 0x60, 0xdd, 0x2b, 0xcc, 0x86, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xeb, 0x5e, 0x61, 0x74, 0x90, 0x0c, 0xc4, 0x7f, 0x70, 0x0e, 0x87, 0x3e, 0x38, 0x31, 0xfb, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x75, 0xaf, 0xb0, 0x1b, 0x58, 0xf7, 0x0a, 0x3d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x7b, 0x85, 0xe1, 0xc0, 0xba, 0x57, 0x98, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xbd, 0xc2, 0xf8, 0x20, 0x3d, 0x92, 0xff, 0xe0, 0x1c, 0x0e, 0x7d, 0x70, 0x82, 0xf0, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x7b, 0x85, 0xfd, 0xc0, 0xba, 0x57, 0xa8, 0x38, 0x28, 0x72, 0x15, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x75, 0xaf, 0xd0, 0x31, 0xb0, 0xee, 0x15, 0x6a, 0x0e, 0x46, 0xf3, 0xf9, 0x71, 0xe8, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xbd, 0x42, 0xd5, 0xc0, 0xba, 0x57, 0xe8, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xeb, 0x5e, 0xa1, 0x6b, 0x60, 0xdd, 0x2b, 0xd4, 0x1d, 0x5a, 0x89, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xdd, 0x2b, 0xf4, 0x0d, 0xac, 0x7b, 0x85, 0xca, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xbd, 0x42, 0x76, 0x90, 0x4c, 0xa8, 0x3f, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xf7, 0x0a, 0xf9, 0xc0, 0xbe, 0x57, 0x28, 0x1a, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x7b, 0x85, 0xc1, 0x41, 0x3a, 0x57, 0xff, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfb, 0x5e, 0x61, 0x31, 0xb0, 0xef, 0x15, 0x76, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7d, 0xaf, 0xb0, 0x3a, 0x48, 0x45, 0xec, 0x3f, 0x38, 0x87, 0x43, 0x1f, 0x9c, 0x98, 0x7d, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xbe, 0x57, 0x18, 0x0e, 0xec, 0x7b, 0x85, 0x9e, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xbd, 0xc2, 0x72, 0x60, 0xdf, 0x2b, 0xec, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfb, 0x5e, 0x61, 0x7d, 0x90, 0x9c, 0xdd, 0x7f, 0x70, 0x0e, 0x87, 0x3e, 0x38, 0x41, 0xf8, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xbd, 0x42, 0xc1, 0xc0, 0xbe, 0x57, 0xe8, 0x38, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfb, 0x5e, 0xa1, 0x64, 0x60, 0xdf, 0x2b, 0xd4, 0x1c, 0xfa, 0x93, 0x1f, 0x87, 0x8e, 0x43, 0x87, 0xf5, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xef, 0x15, 0xaa, 0x06, 0xf6, 0xbd, 0x42, 0xe7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xf7, 0x0a, 0x5d, 0x03, 0xfb, 0x5e, 0xa1, 0xee, 0xd0, 0x4a, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfb, 0x5e, 0xa1, 0x6f, 0x60, 0xdf, 0x2b, 0x54, 0x1e, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xf0, 0x15, 0xb2, 0x83, 0x64, 0x42, 0xfd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xf0, 0x15, 0xc2, 0x81, 0x85, 0xaf, 0x30, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xe1, 0x2b, 0xa4, 0x03, 0x0b, 0x5f, 0x61, 0x33, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xf8, 0x0a, 0x8b, 0x83, 0x14, 0x5d, 0xff, 0x83, 0x73, 0x38, 0xf4, 0x41, 0xc9, 0xd0, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xf8, 0x0a, 0xa3, 0x81, 0x85, 0xaf, 0xb0, 0x3b, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0b, 0x5f, 0x61, 0x38, 0xb0, 0xf0, 0x15, 0xb6, 0x87, 0x56, 0xe2, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x7c, 0x85, 0xf5, 0xc0, 0xc2, 0x57, 0x28, 0x38, 0xc4, 0x70, 0xf8, 0x05, 0xd1, 0x02, 0x61, 0x3f, 0x08, 0x01, 0xf0, 0xe3, 0xf1, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x7c, 0x85, 0xe4, 0x20, 0xed, 0xfe, 0x7e, 0xf8, 0x05, 0xd1, 0x02, 0xe1, 0x1f, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x7c, 0x85, 0xc9, 0xc0, 0xc6, 0x57, 0x58, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xbe, 0xc2, 0xe6, 0x20, 0x3d, 0xed, 0x7f, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xf1, 0x15, 0x56, 0x03, 0x1b, 0x5f, 0x61, 0x78, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xbe, 0xc2, 0x72, 0x60, 0xe3, 0x2b, 0x8c, 0x0f, 0x4d, 0x87, 0x0e, 0xeb, 0x9b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xe5, 0x2b, 0x64, 0x03, 0x2b, 0x5f, 0xe1, 0xc4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x5f, 0x21, 0x1d, 0x58, 0xf9, 0x0a, 0x8b, 0x83, 0xc4, 0x68, 0xe9, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x95, 0xaf, 0x30, 0x19, 0x58, 0xf9, 0x0a, 0x5d, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x95, 0xaf, 0xb0, 0x1a, 0x58, 0xf9, 0x0a, 0x0d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x7c, 0x85, 0xd9, 0xc0, 0xca, 0x57, 0x18, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xbe, 0xc2, 0xf4, 0x60, 0x3d, 0x06, 0xc0, 0xc1, 0x89, 0x10, 0xfa, 0xe0, 0xc4, 0xec, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xbe, 0xc2, 0x7a, 0x60, 0xe5, 0x2b, 0x14, 0x1c, 0x9a, 0x0e, 0x1d, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xca, 0x57, 0xa8, 0x18, 0x58, 0xf9, 0x0a, 0x2d, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0x41, 0x11, 0x02, 0x7d, 0x7c, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xca, 0x57, 0xa8, 0x19, 0x58, 0xf9, 0x0a, 0x55, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xe0, 0xe5, 0xa0, 0xad, 0xe3, 0xdb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x95, 0xaf, 0x50, 0x36, 0xb0, 0xf2, 0x15, 0x3e, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xf2, 0x15, 0xda, 0x06, 0x56, 0xbe, 0x42, 0xeb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x5f, 0xa1, 0x6e, 0x60, 0xe5, 0x2b, 0x54, 0x0e, 0x92, 0xc1, 0xea, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x5f, 0xa1, 0x73, 0x60, 0xe5, 0x2b, 0x94, 0x1e, 0x8e, 0xf6, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xf9, 0x0a, 0xb5, 0x03, 0x2b, 0x5f, 0xe1, 0xc2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x5f, 0xa1, 0x77, 0x60, 0xe5, 0x2b, 0xb4, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xbe, 0x42, 0xf7, 0xc1, 0x72, 0x56, 0x80, 0x83, 0x13, 0x21, 0xf4, 0xc1, 0x61, 0x53, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x7c, 0x85, 0xfa, 0x81, 0x95, 0xaf, 0xf0, 0xe0, 0xd0, 0x74, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x0c, 0xde, 0xc9, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x76, 0xbe, 0x42, 0x72, 0x90, 0x76, 0x7f, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xce, 0x57, 0x88, 0x06, 0x76, 0xbe, 0x42, 0x7c, 0x90, 0x18, 0x2d, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xf9, 0x0a, 0xf9, 0xc0, 0xce, 0x57, 0x98, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xf3, 0x15, 0x06, 0x03, 0x3b, 0x5f, 0x61, 0x35, 0x48, 0x06, 0xbb, 0x83, 0x20, 0xe7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x7c, 0x85, 0xd9, 0xc0, 0xce, 0x57, 0xd8, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9d, 0xaf, 0x30, 0x1c, 0xd8, 0xf9, 0x0a, 0xcb, 0x43, 0xea, 0xe0, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x7c, 0x85, 0xed, 0xc0, 0xce, 0x57, 0x98, 0x1f, 0x0c, 0xde, 0xc9, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xbd, 0xc2, 0x64, 0x60, 0xd3, 0x2b, 0xf4, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xbd, 0xc2, 0x6a, 0x60, 0xd3, 0x2b, 0x0c, 0x0f, 0x3d, 0x84, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xa6, 0x57, 0x58, 0x0e, 0x6c, 0x7a, 0x85, 0xf1, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9b, 0x5e, 0x61, 0x3d, 0xb0, 0xe9, 0x15, 0x6a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xa6, 0x57, 0x98, 0x0f, 0x6c, 0x7a, 0x85, 0x86, 0x83, 0xf4, 0xa7, 0xe7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x7a, 0x85, 0x8a, 0x81, 0x4d, 0xaf, 0xd0, 0x72, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xfd, 0x2b, 0x2c, 0x06, 0xd6, 0xbf, 0x42, 0xf3, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x7f, 0x85, 0xe9, 0xc0, 0xfa, 0x57, 0x28, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xfa, 0x57, 0x28, 0x38, 0x58, 0xe7, 0x18, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xbf, 0x42, 0xc3, 0xc0, 0xfa, 0x57, 0x28, 0x39, 0x48, 0xdb, 0x78, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xeb, 0x5f, 0xa1, 0x65, 0x60, 0xfd, 0x2b, 0x14, 0x1d, 0x24, 0x48, 0x42, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xfd, 0x2b, 0x34, 0x0d, 0xac, 0x7f, 0x85, 0xde, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xbf, 0x42, 0xd5, 0xc0, 0xfa, 0x57, 0xa8, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xfd, 0x2b, 0x74, 0x0d, 0xac, 0x7f, 0x85, 0xbe, 0x83, 0x34, 0x1c, 0xf8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xfe, 0x15, 0x0a, 0x07, 0xd6, 0xbf, 0x42, 0xe3, 0xe1, 0x68, 0x3f, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xf5, 0xaf, 0xd0, 0x39, 0xb0, 0xfe, 0x15, 0x6a, 0x0f, 0xa9, 0x83, 0xe3, 0xd0, 0xf1, 0xf8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9d, 0xaa, 0xf8, 0x81, 0x8d, 0xae, 0x90, 0x0c, 0x82, 0x0d, 0xd2, 0xa3, 0x7c, 0x16, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x52, 0x55, 0x58, 0x0c, 0x2c, 0x55, 0x85, 0xae, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xaa, 0x0a, 0xeb, 0x81, 0xa5, 0xaa, 0x50, 0x35, 0x48, 0x06, 0xd9, 0x20, 0x5a, 0x50, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xa5, 0xaa, 0x50, 0x33, 0xb0, 0x54, 0x15, 0x9a, 0x0e, 0xa9, 0x83, 0x43, 0x72, 0xe9, 0x78, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xaa, 0xc2, 0x62, 0x60, 0xab, 0x2a, 0xd4, 0x0c, 0xb2, 0x0d, 0x71, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x56, 0x55, 0x58, 0x1d, 0x2c, 0xc7, 0x11, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x56, 0x55, 0x98, 0x1e, 0x2c, 0xc7, 0x11, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xab, 0x2a, 0x6c, 0x07, 0xb6, 0xaa, 0xc2, 0x7c, 0x90, 0x0c, 0x04, 0xe9, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xaa, 0xc2, 0x7e, 0x60, 0xab, 0x2a, 0x14, 0x1c, 0xfa, 0x93, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5b, 0x55, 0xa1, 0x61, 0x60, 0xab, 0x2a, 0xb4, 0x0c, 0x92, 0x41, 0x76, 0x3c, 0x3e, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xaf, 0x2a, 0x24, 0x03, 0x0b, 0x5d, 0x21, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x62, 0x55, 0x48, 0x0e, 0x56, 0x20, 0x0a, 0x0c, 0xb2, 0x0d, 0x71, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x66, 0x55, 0x48, 0x0e, 0x56, 0x20, 0x0a, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xab, 0x42, 0x3a, 0xb0, 0x59, 0x15, 0xc6, 0x07, 0xe9, 0x71, 0x3e, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xb5, 0x2a, 0x64, 0x03, 0xab, 0x55, 0xa1, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x56, 0x85, 0x70, 0x60, 0xb5, 0x2a, 0xe4, 0x07, 0xc9, 0x43, 0xcc, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xb5, 0x2a, 0x0c, 0x06, 0x56, 0xab, 0xc2, 0xe6, 0x20, 0x6d, 0xe3, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xab, 0x55, 0x61, 0x34, 0xb0, 0x5a, 0x15, 0xaa, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xad, 0x0a, 0xab, 0x81, 0xd5, 0xaa, 0xb0, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xb5, 0x2a, 0xcc, 0x06, 0x56, 0xab, 0xc2, 0x74, 0x90, 0x0c, 0x46, 0x87, 0xe4, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xad, 0x0a, 0xdb, 0x81, 0xd5, 0xaa, 0x30, 0x3e, 0x1c, 0xed, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x5a, 0x15, 0xe6, 0x03, 0xab, 0x55, 0xa1, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd5, 0xaa, 0xb0, 0x1f, 0x58, 0xad, 0x0a, 0x15, 0x83, 0x64, 0x60, 0xa9, 0xef, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd5, 0xaa, 0xd0, 0x31, 0xb0, 0x5a, 0x15, 0x8a, 0x0e, 0xe3, 0x72, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xb7, 0x2a, 0x24, 0x07, 0x2b, 0x10, 0x05, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbb, 0x55, 0x21, 0x1d, 0xd8, 0xad, 0x0a, 0xe3, 0xe1, 0x36, 0x48, 0xa1, 0xf4, 0x39, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x57, 0x85, 0x6c, 0x60, 0xc1, 0x2a, 0x1c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x55, 0x21, 0x1f, 0x58, 0xae, 0x0a, 0x93, 0x83, 0xb4, 0x97, 0xea, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x57, 0x85, 0xec, 0x60, 0x59, 0xd5, 0xc0, 0x20, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x76, 0x55, 0xc8, 0x0f, 0x96, 0x55, 0x0d, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xbd, 0x2a, 0x64, 0x07, 0xcb, 0xaa, 0x06, 0x86, 0xdd, 0xb0, 0x82, 0xba, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xab, 0x42, 0x3a, 0xb0, 0x5f, 0x15, 0xa6, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xbf, 0x2a, 0xc4, 0x03, 0xfb, 0x55, 0x61, 0x71, 0x90, 0xd2, 0x67, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xab, 0xc2, 0x64, 0x60, 0xbf, 0x2a, 0xac, 0x0e, 0x52, 0xfa, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x5f, 0x15, 0x66, 0x03, 0xfb, 0x55, 0x61, 0x79, 0x30, 0xde, 0x74, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x60, 0x15, 0xb2, 0x83, 0x65, 0x55, 0x03, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xc1, 0x2a, 0x84, 0x03, 0x0b, 0x56, 0x21, 0x3f, 0x48, 0xe9, 0xb3, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x82, 0x55, 0x18, 0x0c, 0x2c, 0x58, 0x85, 0x1f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x58, 0x85, 0xc5, 0xc0, 0x82, 0x55, 0x58, 0x1d, 0xa4, 0x83, 0x74, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xac, 0xc2, 0x6c, 0x60, 0xc1, 0x2a, 0xb4, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x60, 0x15, 0x76, 0x03, 0x0b, 0x56, 0x61, 0x3b, 0x48, 0x06, 0xd2, 0x3b, 0x07, 0x01, 0xef, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xac, 0xc2, 0x78, 0x60, 0xc1, 0x2a, 0x94, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x60, 0x15, 0xd6, 0x03, 0x0b, 0x56, 0xa1, 0x61, 0x90, 0x0c, 0xac, 0xee, 0x1c, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb0, 0x0a, 0x15, 0x03, 0x0b, 0x56, 0xa1, 0x73, 0x90, 0x0c, 0xa2, 0x41, 0xb4, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb0, 0x0a, 0x5d, 0x03, 0x0b, 0x56, 0xa1, 0xf2, 0xd0, 0x43, 0xe8, 0x78, 0x7e, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0b, 0x56, 0xa1, 0x76, 0x60, 0xc1, 0x2a, 0xdc, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xac, 0x42, 0xfd, 0xc0, 0x82, 0x55, 0x78, 0x71, 0xe8, 0x18, 0x76, 0x3c, 0x3e, 0x0e, 0x1d, 0xdf, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x61, 0x15, 0x92, 0x83, 0x15, 0x88, 0x02, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x58, 0x85, 0x74, 0x60, 0xc3, 0x2a, 0x94, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x0d, 0xab, 0x10, 0x0f, 0x6c, 0x58, 0x85, 0x86, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x58, 0x85, 0xc9, 0xc1, 0xda, 0x3c, 0x82, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xac, 0xc2, 0x66, 0x60, 0xc3, 0x2a, 0xcc, 0x0e, 0x0e, 0x3c, 0xbb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x0d, 0xab, 0xb0, 0x1b, 0xd8, 0xb0, 0x0a, 0xc3, 0x43, 0x7f, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xc3, 0x2a, 0x2c, 0x07, 0x36, 0xac, 0x42, 0xc1, 0xa1, 0x91, 0xe0, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1b, 0x56, 0xa1, 0x62, 0x60, 0xc3, 0x2a, 0x74, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xc3, 0x2a, 0xd4, 0x1c, 0x2c, 0xcf, 0x25, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xc3, 0x2a, 0xf4, 0x0c, 0x6c, 0x58, 0x85, 0xaa, 0x83, 0xb4, 0x98, 0x87, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x86, 0x55, 0xe8, 0x1a, 0xd8, 0xb0, 0x0a, 0x65, 0x87, 0xfe, 0xe4, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1b, 0x56, 0xa1, 0x6d, 0x60, 0xc3, 0x2a, 0x54, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x0d, 0xab, 0x50, 0x37, 0xb0, 0x61, 0x15, 0xfa, 0x0e, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xac, 0x42, 0xe1, 0xc0, 0x86, 0x55, 0x68, 0x3c, 0x1c, 0xed, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x86, 0x55, 0xe8, 0x1c, 0xd8, 0xb0, 0x0a, 0xd5, 0x87, 0x46, 0x82, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x58, 0x85, 0xe4, 0x60, 0x05, 0xa2, 0xc0, 0x20, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x8a, 0x55, 0x48, 0x0f, 0x56, 0x20, 0x0a, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xc7, 0x2a, 0x24, 0x07, 0x2b, 0x10, 0x05, 0x86, 0x5d, 0xb8, 0xc5, 0xf0, 0xf1, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x64, 0x15, 0x26, 0x03, 0x4b, 0x56, 0xe1, 0xc4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb2, 0x0a, 0x9b, 0x81, 0x25, 0xab, 0x30, 0x3b, 0x48, 0x1e, 0x62, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4b, 0x56, 0x61, 0x37, 0xb0, 0x64, 0x15, 0xa6, 0x07, 0xe9, 0x4f, 0xcf, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb2, 0x0a, 0xdb, 0x81, 0x25, 0xab, 0xf0, 0x61, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x25, 0xab, 0x30, 0x1e, 0x58, 0xb2, 0x0a, 0x05, 0x07, 0x89, 0xd1, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x25, 0xab, 0xd0, 0x30, 0xb0, 0x64, 0x15, 0xea, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb2, 0x0a, 0x15, 0x03, 0x4b, 0x56, 0xa1, 0x65, 0x90, 0x0c, 0x8c, 0xd2, 0xc1, 0xf0, 0x8f, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x59, 0x85, 0x9a, 0x81, 0x25, 0xab, 0xd0, 0x73, 0xe8, 0x4f, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x59, 0x85, 0xa2, 0x81, 0x25, 0xab, 0xd0, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x92, 0x55, 0x68, 0x1a, 0x58, 0xb2, 0x0a, 0x6d, 0x83, 0x64, 0xa0, 0xe8, 0x1c, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x64, 0x15, 0xea, 0x06, 0x96, 0xac, 0x42, 0xf9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4b, 0x56, 0xa1, 0x6f, 0x60, 0xc9, 0x2a, 0x74, 0x1e, 0x8c, 0xac, 0xd7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x64, 0x15, 0x4a, 0x07, 0x96, 0xac, 0x42, 0xf7, 0xa1, 0xe1, 0xd7, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xac, 0x42, 0xff, 0xc0, 0x92, 0x55, 0xb8, 0x70, 0x30, 0x78, 0x27, 0x8f, 0x43, 0xc3, 0x6e, 0x30, 0xd8, 0x8d, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x9a, 0x55, 0xc8, 0x06, 0xd6, 0xaf, 0x42, 0x3a, 0xec, 0xc2, 0x6d, 0x70, 0x8e, 0xdc, 0x3d, 0x8c, 0xcb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb4, 0x0a, 0xe9, 0xc0, 0xc6, 0x55, 0xd8, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x68, 0x15, 0x16, 0x03, 0x8b, 0x56, 0xa1, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8b, 0x56, 0x61, 0x75, 0xb0, 0x02, 0xc4, 0x60, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x45, 0xab, 0x30, 0x1b, 0x58, 0xb4, 0x0a, 0xd3, 0x41, 0x32, 0x50, 0xd6, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb4, 0x0a, 0xdb, 0x81, 0x45, 0xab, 0x50, 0x71, 0x68, 0xf8, 0x75, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xa6, 0x55, 0x48, 0x0f, 0xd6, 0x53, 0x18, 0x0c, 0xbf, 0x20, 0x5a, 0x60, 0xfc, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9b, 0x56, 0x61, 0x36, 0xb0, 0x69, 0x15, 0x3a, 0x86, 0x4e, 0x10, 0xbf, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x69, 0x15, 0x5a, 0x06, 0x36, 0xad, 0x42, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xb4, 0x0a, 0x35, 0x03, 0x9b, 0x56, 0xa1, 0xe9, 0x20, 0xed, 0xa5, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9b, 0x56, 0xa1, 0x6a, 0x60, 0xd3, 0x2a, 0x14, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x69, 0x15, 0xba, 0x06, 0x36, 0xad, 0x42, 0xdf, 0xc1, 0xc9, 0x07, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x5a, 0x85, 0xc2, 0x81, 0x4d, 0xab, 0xd0, 0x7b, 0xb0, 0xa6, 0xcc, 0xe0, 0x38, 0x74, 0x30, 0x10, 0xa9, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb5, 0x0a, 0xe9, 0xc1, 0x7a, 0x0a, 0x83, 0xe1, 0x17, 0x44, 0x0b, 0x8c, 0xff, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xd5, 0x2a, 0xcc, 0x06, 0x56, 0xad, 0x42, 0xf9, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xd5, 0x2a, 0xec, 0x0e, 0x96, 0xfc, 0x1a, 0x0c, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xad, 0x42, 0xef, 0xc1, 0x92, 0x5f, 0x83, 0x83, 0xc1, 0x1a, 0x3b, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb5, 0x0a, 0xcb, 0x81, 0x55, 0xab, 0x50, 0x30, 0xdc, 0x86, 0x18, 0x1e, 0xb2, 0x15, 0x0b, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xad, 0x42, 0xc3, 0xc0, 0xaa, 0x55, 0xe8, 0x19, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x5a, 0x85, 0x8e, 0x81, 0x55, 0xab, 0x50, 0x72, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xad, 0x42, 0xcb, 0xc0, 0xaa, 0x55, 0xa8, 0x39, 0xa4, 0x0e, 0x16, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x5a, 0x85, 0xa2, 0x81, 0x55, 0xab, 0x50, 0x37, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb5, 0x0a, 0x55, 0x03, 0xab, 0x56, 0xa1, 0xeb, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x5a, 0x85, 0xb2, 0x81, 0x55, 0xab, 0xd0, 0x76, 0x48, 0xd5, 0x2c, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb5, 0x0a, 0x7d, 0x03, 0xab, 0x56, 0xa1, 0x75, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x6a, 0x15, 0x1a, 0x07, 0x56, 0xad, 0x42, 0xe5, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb5, 0x0a, 0x9d, 0x03, 0xab, 0x56, 0xa1, 0xf4, 0xb0, 0x57, 0x78, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0xeb, 0x9b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xd7, 0x2a, 0xe4, 0x03, 0xdb, 0x56, 0xa1, 0x67, 0xf8, 0x05, 0xd1, 0x02, 0xe3, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x5d, 0xab, 0x30, 0x1c, 0xd8, 0xb5, 0x0a, 0x65, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xd7, 0x2a, 0x2c, 0x07, 0x76, 0xad, 0xc2, 0xf8, 0x20, 0xed, 0xa5, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbb, 0x56, 0x61, 0x3d, 0xb0, 0x6b, 0x15, 0xba, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xb5, 0x0a, 0xf3, 0x81, 0x5d, 0xab, 0x50, 0x31, 0x48, 0x06, 0x75, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x76, 0xad, 0x42, 0xc7, 0xc0, 0xae, 0x55, 0xa8, 0x9a, 0x20, 0x7c, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xad, 0x42, 0x7e, 0xb0, 0xe2, 0xeb, 0x60, 0xf8, 0x05, 0xd1, 0x02, 0xe3, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x65, 0xab, 0x30, 0x1c, 0x58, 0xb6, 0x0a, 0x65, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xd9, 0x2a, 0x2c, 0x07, 0x96, 0xad, 0xc2, 0xf8, 0x20, 0xed, 0xa5, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x56, 0x61, 0x3d, 0xb0, 0x6c, 0x15, 0xba, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb6, 0x0a, 0xf3, 0x81, 0x65, 0xab, 0x50, 0x71, 0xb0, 0x0a, 0xf2, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x5b, 0x85, 0x8e, 0x81, 0x65, 0xab, 0x50, 0x35, 0xe1, 0xde, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6d, 0xab, 0x90, 0x1f, 0xac, 0xf8, 0x3a, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdb, 0x56, 0x61, 0x30, 0xb0, 0x6d, 0x15, 0x36, 0x07, 0x69, 0x2f, 0xd5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xdb, 0x2a, 0x8c, 0x06, 0xb6, 0xad, 0xc2, 0xee, 0x20, 0xed, 0xa5, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdb, 0x56, 0x61, 0x38, 0xb0, 0x6d, 0x15, 0x6a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xb6, 0x0a, 0xcb, 0x81, 0x6d, 0xab, 0xb0, 0x3e, 0x58, 0x05, 0x79, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xad, 0xc2, 0x7c, 0x60, 0xdb, 0x2a, 0xb4, 0x4c, 0xa8, 0x3b, 0x0e, 0x1d, 0x0c, 0x44, 0xea, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xad, 0x42, 0x7a, 0xb0, 0x9e, 0xc2, 0x60, 0xf8, 0x05, 0xd1, 0x02, 0xe3, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x75, 0xab, 0x30, 0x1b, 0x58, 0xb7, 0x0a, 0x55, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xdd, 0x2a, 0xec, 0x06, 0xd6, 0xad, 0xc2, 0xf4, 0x20, 0xed, 0xa5, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xeb, 0x56, 0x61, 0x3b, 0xb0, 0x6e, 0x15, 0x9a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb7, 0x0a, 0xe3, 0x81, 0x75, 0xab, 0x50, 0x30, 0x48, 0x06, 0xf7, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x5b, 0x85, 0x86, 0x81, 0x75, 0xab, 0x50, 0x74, 0x10, 0xb8, 0xf1, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xad, 0x42, 0x7a, 0xb0, 0x9e, 0xc2, 0x60, 0xf8, 0x05, 0xd1, 0x02, 0xe3, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7d, 0xab, 0x30, 0x1b, 0xd8, 0xb7, 0x0a, 0x45, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xdf, 0x2a, 0xec, 0x06, 0xf6, 0xad, 0xc2, 0xf4, 0x20, 0xed, 0xa5, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfb, 0x56, 0x61, 0x3b, 0xb0, 0x6f, 0x15, 0x7a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xb7, 0x0a, 0xe3, 0x81, 0x7d, 0xab, 0x50, 0x70, 0xb0, 0x2a, 0x0f, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x5b, 0x85, 0x86, 0x81, 0x7d, 0xab, 0x50, 0x73, 0x10, 0x64, 0xf1, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xae, 0x42, 0x7a, 0xb0, 0x9e, 0xc2, 0x60, 0xf8, 0x05, 0xd1, 0x02, 0xe3, 0x3f, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb8, 0x0a, 0xb3, 0x81, 0x85, 0xab, 0x30, 0x1e, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x5c, 0x85, 0xdd, 0xc1, 0x42, 0x79, 0x84, 0x83, 0x82, 0xa2, 0xe8, 0xb0, 0xbe, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xae, 0xc2, 0x7c, 0x60, 0xe1, 0x2a, 0xf4, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x85, 0xab, 0xb0, 0x1f, 0x58, 0xb8, 0x0a, 0x15, 0x07, 0xe9, 0x4f, 0xcf, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xb8, 0x0a, 0x1d, 0x03, 0x0b, 0x57, 0xa1, 0xe6, 0x60, 0x20, 0x52, 0x1f, 0x0c, 0x44, 0xea, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xae, 0x42, 0x7a, 0xb0, 0x9e, 0xc2, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x5c, 0x85, 0x78, 0x60, 0xe3, 0x2a, 0x2c, 0x0e, 0x92, 0x87, 0x98, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x71, 0x15, 0x26, 0x03, 0x1b, 0x57, 0x61, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xc6, 0x55, 0xd8, 0x0c, 0x6c, 0x5c, 0x85, 0xdd, 0xc1, 0xaa, 0x3c, 0x84, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x71, 0x15, 0x86, 0x03, 0x1b, 0x57, 0x61, 0x7d, 0x70, 0x36, 0x0d, 0x3f, 0x0e, 0x0d, 0xbb, 0x70, 0x8b, 0xe1, 0xf2, 0x61, 0x5c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xd2, 0x55, 0x48, 0x07, 0xb6, 0xaf, 0xc2, 0x64, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xa5, 0xab, 0xb0, 0x18, 0x58, 0xba, 0x0a, 0x1d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xba, 0x0a, 0xab, 0x83, 0xc5, 0x7e, 0x09, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x5d, 0x85, 0xd9, 0xc0, 0xd2, 0x55, 0x98, 0x0e, 0x92, 0x41, 0xd9, 0xc1, 0x30, 0xf4, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4b, 0x57, 0x61, 0x3b, 0xb0, 0x74, 0x15, 0x2a, 0x0e, 0x0d, 0xbf, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xba, 0x0a, 0xe9, 0xc1, 0xd2, 0xb9, 0x84, 0xe1, 0x17, 0x44, 0x0b, 0x8c, 0xff, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xeb, 0x2a, 0xcc, 0x06, 0xb6, 0xae, 0x42, 0xc3, 0xd0, 0x09, 0x7d, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xeb, 0x2a, 0x74, 0x0c, 0x6c, 0x5d, 0x85, 0xd6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x75, 0x15, 0x4a, 0x06, 0xb6, 0xae, 0x42, 0xcf, 0x41, 0xda, 0x4b, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xae, 0x42, 0xd1, 0xc0, 0xd6, 0x55, 0x28, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xeb, 0x2a, 0x34, 0x0d, 0x6c, 0x5d, 0x85, 0xb6, 0x83, 0x93, 0x0f, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xba, 0x0a, 0x75, 0x03, 0x5b, 0x57, 0xa1, 0xf3, 0x60, 0xe1, 0x70, 0xc2, 0x71, 0xe8, 0x60, 0x20, 0x52, 0x1f, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x76, 0x15, 0xd2, 0x83, 0xa5, 0x73, 0x09, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xed, 0x2a, 0x2c, 0x06, 0xd6, 0xae, 0xc2, 0xe8, 0x20, 0x79, 0x88, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7b, 0x57, 0x21, 0x3d, 0x58, 0x3a, 0x97, 0x30, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xbb, 0x0a, 0x8b, 0x81, 0xbd, 0xab, 0xd0, 0x3f, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xbb, 0x0a, 0x9b, 0x81, 0xbd, 0xab, 0xb0, 0x1e, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x5d, 0x85, 0xd5, 0xc0, 0xde, 0x55, 0x98, 0x1d, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbd, 0xab, 0xb0, 0x1b, 0xd8, 0xbb, 0x0a, 0xe3, 0x83, 0x90, 0x02, 0x5f, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x77, 0x15, 0xe6, 0x03, 0x7b, 0x57, 0xa1, 0x68, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x77, 0x15, 0x0a, 0x06, 0xf6, 0xae, 0x42, 0xc3, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xbb, 0x0a, 0x15, 0x03, 0x7b, 0x57, 0xa1, 0xe7, 0x20, 0x70, 0xe3, 0x17, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x5d, 0x85, 0xa6, 0x81, 0xbd, 0xab, 0xd0, 0x39, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xbb, 0x0a, 0x5d, 0x03, 0x7b, 0x57, 0xa1, 0xec, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x5d, 0x85, 0xb6, 0x81, 0xbd, 0xab, 0x50, 0x79, 0x10, 0x64, 0xf1, 0x0b, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xae, 0x42, 0xe9, 0xc0, 0xde, 0x55, 0xa8, 0x1f, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x5d, 0x85, 0xda, 0x81, 0xbd, 0xab, 0xd0, 0x7b, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xae, 0x42, 0xf1, 0xc0, 0xde, 0x55, 0x68, 0x3f, 0x58, 0xbb, 0x83, 0x70, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xe2, 0x55, 0xc8, 0x07, 0x16, 0xaf, 0xc2, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x5e, 0x85, 0xc1, 0xc0, 0xe2, 0x55, 0xd8, 0x8c, 0xe1, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xbc, 0x0a, 0xa3, 0x81, 0xc5, 0xab, 0xb0, 0x3b, 0x48, 0xdb, 0x78, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xe2, 0x55, 0x18, 0x0e, 0x2c, 0x5e, 0x85, 0xed, 0xc1, 0x40, 0xa4, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xe6, 0x55, 0x48, 0x0f, 0x96, 0xce, 0x25, 0x0c, 0xbf, 0x20, 0x5a, 0x60, 0xfc, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9b, 0x57, 0x61, 0x36, 0xb0, 0x79, 0x15, 0x1a, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9b, 0x57, 0x61, 0x77, 0xb0, 0x2a, 0x61, 0x61, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x79, 0x15, 0x96, 0x03, 0x9b, 0x57, 0x61, 0x7a, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xaf, 0xc2, 0x76, 0x60, 0xf3, 0x2a, 0x14, 0x1c, 0xac, 0xdd, 0x41, 0x38, 0xac, 0x6f, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xcd, 0xab, 0xd0, 0x31, 0xb0, 0x79, 0x15, 0x9a, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xe6, 0x55, 0x28, 0x19, 0xd8, 0xbc, 0x0a, 0x3d, 0x07, 0x69, 0x2f, 0xd5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xf3, 0x2a, 0x14, 0x0d, 0x6c, 0x5e, 0x85, 0xae, 0x83, 0x35, 0xda, 0x0a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xbc, 0x0a, 0x65, 0x03, 0x9b, 0x57, 0xa1, 0x78, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xcd, 0xab, 0xd0, 0x36, 0xb0, 0x79, 0x15, 0x1a, 0x0f, 0x56, 0xe5, 0x21, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xcd, 0xab, 0x50, 0x39, 0xb0, 0x79, 0x15, 0x7a, 0x0f, 0xd6, 0xee, 0x20, 0x1c, 0x87, 0x0e, 0x06, 0x22, 0xf5, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xab, 0x57, 0x21, 0x3d, 0x58, 0x3a, 0x97, 0x30, 0xfc, 0x82, 0x68, 0x81, 0xf1, 0x1f, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x5e, 0x85, 0xd9, 0xc0, 0xea, 0x55, 0x68, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x5e, 0x85, 0xdd, 0xc1, 0xba, 0xca, 0x85, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xea, 0x55, 0x58, 0x0e, 0xac, 0x5e, 0x85, 0xe9, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xbd, 0x0a, 0xdb, 0x81, 0xd5, 0xab, 0x50, 0x70, 0x10, 0xb8, 0xf1, 0x87, 0xf5, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x7a, 0x15, 0x3a, 0x06, 0x56, 0xaf, 0x42, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xbd, 0x0a, 0x25, 0x03, 0xab, 0x57, 0xa1, 0xe7, 0x20, 0xed, 0xa5, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x5e, 0x85, 0xa2, 0x81, 0xd5, 0xab, 0xd0, 0x35, 0x86, 0xb7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xbd, 0x0a, 0x65, 0x03, 0xab, 0x57, 0xa1, 0x78, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd5, 0xab, 0xd0, 0x36, 0xb0, 0x7a, 0x15, 0x1a, 0x0f, 0x56, 0xe5, 0x21, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd5, 0xab, 0x50, 0x39, 0xb0, 0x7a, 0x15, 0x7a, 0x0f, 0x02, 0x37, 0xfe, 0x38, 0x74, 0x30, 0x10, 0xa9, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xbd, 0x0a, 0xe9, 0xc1, 0xd2, 0xb9, 0x84, 0xe1, 0x17, 0x44, 0x0b, 0x8c, 0xff, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xf7, 0x2a, 0xcc, 0x06, 0x76, 0xaf, 0x42, 0xc3, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xf7, 0x2a, 0xec, 0x0e, 0x96, 0x80, 0x30, 0x0c, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x76, 0xaf, 0xc2, 0x72, 0x60, 0xf7, 0x2a, 0x4c, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xee, 0x55, 0xd8, 0x0e, 0xec, 0x5e, 0x85, 0x82, 0x83, 0x20, 0x8b, 0x3f, 0xac, 0x6f, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xdd, 0xab, 0xd0, 0x31, 0xb0, 0x7b, 0x15, 0x9a, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xee, 0x55, 0x28, 0x19, 0xd8, 0xbd, 0x0a, 0x3d, 0x07, 0x69, 0x2f, 0xd5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xf7, 0x2a, 0x14, 0x0d, 0xec, 0x5e, 0x85, 0xae, 0x31, 0x1c, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xee, 0x55, 0x28, 0x1b, 0xd8, 0xbd, 0x0a, 0xc5, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x5e, 0x85, 0xb6, 0x81, 0xdd, 0xab, 0xd0, 0x78, 0xb0, 0x2a, 0x0f, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x5e, 0x85, 0xca, 0x81, 0xdd, 0xab, 0xd0, 0x7b, 0x10, 0x64, 0xf1, 0xc7, 0xa1, 0x83, 0x81, 0x48, 0x7d, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xf2, 0x55, 0x48, 0x0f, 0x96, 0xce, 0x25, 0x0c, 0xbf, 0x20, 0x5a, 0x60, 0xfc, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x57, 0x61, 0x36, 0xb0, 0x7c, 0x15, 0x1a, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x57, 0x61, 0x77, 0xb0, 0x5a, 0x95, 0x61, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x7c, 0x15, 0x96, 0x03, 0xcb, 0x57, 0x61, 0x7a, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xaf, 0xc2, 0x76, 0x60, 0xf9, 0x2a, 0x14, 0x1c, 0x84, 0x14, 0xf8, 0x61, 0x7d, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x5f, 0x85, 0x8e, 0x81, 0xe5, 0xab, 0xd0, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xaf, 0x42, 0xc9, 0xc0, 0xf2, 0x55, 0xe8, 0x39, 0x48, 0x7b, 0xa9, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x57, 0xa1, 0x68, 0x60, 0xf9, 0x2a, 0x74, 0x1d, 0x0c, 0x7c, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x5f, 0x85, 0xb2, 0x81, 0xe5, 0xab, 0x50, 0x3c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xf2, 0x55, 0x68, 0x1b, 0x58, 0xbe, 0x0a, 0x8d, 0x07, 0xab, 0xf2, 0x10, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xf2, 0x55, 0xa8, 0x1c, 0x58, 0xbe, 0x0a, 0xbd, 0x07, 0x21, 0x05, 0x7e, 0x1c, 0x3a, 0x18, 0x88, 0xd4, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x5f, 0x85, 0xf4, 0x60, 0xe9, 0x5c, 0xc2, 0x04, 0xd5, 0x7f, 0x90, 0x6d, 0x68, 0xbe, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x35, 0xab, 0x30, 0x1b, 0x58, 0xb3, 0x0a, 0x25, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x59, 0x85, 0xdd, 0xc0, 0x9a, 0x55, 0xd8, 0x0e, 0x92, 0x81, 0xf8, 0x1d, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xcd, 0x2a, 0x8c, 0x07, 0xd6, 0xac, 0x42, 0xc7, 0xa1, 0xe1, 0xd7, 0x71, 0x68, 0xd8, 0x0d, 0xc6, 0xea, 0xee, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xc0, 0x0a, 0xd9, 0xc0, 0x0e, 0x56, 0x28, 0x1e, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x60, 0x85, 0x7c, 0x60, 0x03, 0x2b, 0x6c, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1b, 0x58, 0x61, 0x31, 0xb0, 0x81, 0x15, 0x26, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x03, 0x2b, 0x6c, 0x06, 0x36, 0xb0, 0xc2, 0xf4, 0xd0, 0xf0, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x60, 0x85, 0x74, 0x60, 0x05, 0x2b, 0x4c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x0a, 0x56, 0x88, 0x07, 0x56, 0xb0, 0xc2, 0xe2, 0x20, 0xed, 0xa5, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x60, 0x85, 0xc9, 0xc0, 0x0a, 0x56, 0x58, 0x8d, 0xe1, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xb0, 0xc2, 0x6c, 0x60, 0x05, 0x2b, 0x2c, 0x0f, 0x06, 0xef, 0xe4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x76, 0xb0, 0x42, 0x76, 0xb0, 0x5e, 0xac, 0x61, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x83, 0x15, 0xe2, 0x81, 0x1d, 0xac, 0x30, 0x1d, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x60, 0x85, 0xc1, 0xc0, 0x0e, 0x56, 0x58, 0x1c, 0x8e, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x60, 0x85, 0xc9, 0xc0, 0x0e, 0x56, 0x58, 0x1e, 0x1a, 0x7e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1d, 0xac, 0xb0, 0x1d, 0xd8, 0xc1, 0x0a, 0x45, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x07, 0x2b, 0x8c, 0x07, 0x76, 0xb0, 0xc2, 0xfe, 0x20, 0xed, 0xa5, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x60, 0x85, 0x82, 0x81, 0x1d, 0xac, 0xd0, 0x71, 0x30, 0xa4, 0x7e, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x83, 0x15, 0x4a, 0x06, 0x76, 0xb0, 0x42, 0xcf, 0xc1, 0xe0, 0x9d, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x0e, 0x56, 0x68, 0x1a, 0xd8, 0xc1, 0x0a, 0xbd, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x60, 0x85, 0xaa, 0x81, 0x1d, 0xac, 0x50, 0x77, 0xb0, 0x76, 0xa8, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x60, 0x85, 0xbe, 0x81, 0x1d, 0xac, 0x50, 0x7b, 0x68, 0xf8, 0x75, 0x1c, 0x1a, 0x76, 0x83, 0x12, 0x04, 0x72, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x61, 0x85, 0xc9, 0xc0, 0x16, 0x56, 0xd8, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x2d, 0xac, 0xb0, 0x19, 0xd8, 0xc2, 0x0a, 0xb3, 0x83, 0xe4, 0x21, 0xe6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x61, 0x85, 0xdd, 0xc0, 0x16, 0x56, 0x98, 0x1e, 0x0c, 0xde, 0xc9, 0x61, 0x37, 0x18, 0x01, 0xbe, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x0f, 0x2b, 0x64, 0x03, 0xab, 0x58, 0x21, 0x1d, 0x76, 0xe1, 0x36, 0x18, 0xb7, 0xbb, 0x87, 0x71, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8b, 0x58, 0x61, 0x31, 0xb0, 0x88, 0x15, 0xda, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xc4, 0x0a, 0x93, 0x81, 0x45, 0xac, 0x50, 0x3a, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x22, 0x56, 0xd8, 0x0c, 0x2c, 0x62, 0x85, 0xe1, 0x20, 0x19, 0xcc, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x88, 0x15, 0x96, 0x03, 0x8b, 0x58, 0xa1, 0x61, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x62, 0x85, 0xe9, 0xc0, 0x22, 0x56, 0xd8, 0x1e, 0xfa, 0x93, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x45, 0xac, 0x30, 0x1e, 0x58, 0xc4, 0x0a, 0xf3, 0x83, 0x23, 0x4f, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xb1, 0xc2, 0x7e, 0x60, 0x11, 0x2b, 0x14, 0x1c, 0x94, 0x71, 0x3b, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x22, 0x56, 0xa8, 0x18, 0x58, 0xc4, 0x0a, 0x9d, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x88, 0x15, 0x9a, 0x06, 0x16, 0xb1, 0x42, 0xe5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8b, 0x58, 0xa1, 0x6d, 0x60, 0x11, 0x2b, 0xf4, 0x0d, 0x92, 0x81, 0xf1, 0x3b, 0x18, 0xfe, 0xb1, 0x83, 0x64, 0x50, 0x36, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xc4, 0x0a, 0x85, 0x03, 0x8b, 0x58, 0xa1, 0xf1, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x8f, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x11, 0x2b, 0xb4, 0x0e, 0x2c, 0x62, 0x85, 0xf2, 0x43, 0xc3, 0xaf, 0xe3, 0xd0, 0xb0, 0x0b, 0xb7, 0xc1, 0x1a, 0x6d, 0x85, 0xc3, 0xb8, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x4d, 0xac, 0xb0, 0x18, 0xd8, 0xc4, 0x0a, 0xed, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x62, 0x85, 0xc9, 0xc0, 0x26, 0x56, 0x28, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x13, 0x2b, 0x6c, 0x06, 0x36, 0xb1, 0xc2, 0xf0, 0x60, 0x7d, 0xa4, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x13, 0x2b, 0x2c, 0x07, 0x36, 0xb1, 0x42, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xc4, 0x0a, 0xd3, 0x81, 0x4d, 0xac, 0xb0, 0x3d, 0x28, 0xe3, 0x76, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x26, 0x56, 0x18, 0x0f, 0x6c, 0x62, 0x85, 0xf9, 0x41, 0xa2, 0xdc, 0xc7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xb1, 0xc2, 0x7e, 0x60, 0x13, 0x2b, 0x14, 0x1c, 0x14, 0x00, 0x50, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x26, 0x56, 0xa8, 0x18, 0xd8, 0xc4, 0x0a, 0x9d, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x89, 0x15, 0x9a, 0x06, 0x36, 0xb1, 0x42, 0xe5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9b, 0x58, 0xa1, 0x6d, 0x60, 0x13, 0x2b, 0xf4, 0x1d, 0xac, 0x65, 0x77, 0x18, 0x24, 0xc3, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xb1, 0x42, 0xe1, 0xc0, 0x26, 0x56, 0x68, 0x3c, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xc4, 0x0a, 0xad, 0x03, 0x9b, 0x58, 0xa1, 0xfc, 0xd0, 0xf0, 0xeb, 0x38, 0x34, 0xc8, 0x36, 0x34, 0x5f, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x1e, 0x56, 0x18, 0x0d, 0xec, 0x61, 0x85, 0x8a, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xb0, 0xc2, 0x6a, 0x60, 0x0f, 0x2b, 0x2c, 0x0f, 0xd6, 0x0e, 0x35, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3d, 0xac, 0x30, 0x1d, 0xd8, 0xc3, 0x0a, 0x0d, 0x87, 0x86, 0x5f, 0xc7, 0xa1, 0x61, 0x37, 0x28, 0x39, 0x24, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x36, 0x56, 0xc8, 0x06, 0xf6, 0xb3, 0xc2, 0x68, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6d, 0xac, 0x90, 0x0f, 0x6c, 0x63, 0x85, 0x92, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x63, 0x85, 0xcd, 0xc1, 0x1a, 0xfe, 0x87, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xb1, 0xc2, 0x68, 0x60, 0x1b, 0x2b, 0x6c, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdb, 0x58, 0x61, 0x79, 0xb0, 0x2c, 0x02, 0x62, 0x90, 0x0c, 0x46, 0x07, 0xc3, 0xd0, 0xe7, 0x20, 0xfd, 0xb7, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x63, 0x85, 0xf1, 0xc0, 0x36, 0x56, 0xe8, 0x38, 0x34, 0xfc, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x1d, 0x2b, 0x64, 0x07, 0x4b, 0xe2, 0x1f, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xc7, 0x0a, 0xf9, 0xc0, 0x3a, 0x56, 0x98, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x1d, 0x2b, 0x6c, 0x0e, 0xd6, 0x1f, 0x41, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x8e, 0x15, 0x46, 0x03, 0xeb, 0x58, 0x61, 0x37, 0x48, 0x06, 0xda, 0x3a, 0x1d, 0x0c, 0x47, 0xe9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x3a, 0x56, 0x18, 0x0e, 0xac, 0x63, 0x85, 0xe5, 0xa1, 0x3f, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x8e, 0x15, 0xa6, 0x03, 0xeb, 0x58, 0x61, 0x7d, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x1f, 0x2b, 0x64, 0x07, 0x4b, 0xe2, 0x1f, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x3e, 0x56, 0xc8, 0x07, 0xf6, 0xb1, 0xc2, 0xe4, 0x20, 0x79, 0x88, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0b, 0x59, 0x21, 0x3b, 0x58, 0x12, 0xff, 0x30, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xc8, 0x0a, 0xf9, 0xc0, 0x42, 0x56, 0x98, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x90, 0x15, 0x06, 0x03, 0x0b, 0x59, 0x61, 0x73, 0x90, 0x22, 0x5c, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xc8, 0x0a, 0xa3, 0x81, 0x85, 0xac, 0xb0, 0x3b, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0b, 0x59, 0x61, 0x38, 0xb0, 0x90, 0x15, 0x96, 0x87, 0xa3, 0xfd, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xb2, 0x42, 0x3a, 0xb0, 0x91, 0x15, 0xba, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xc8, 0x0a, 0xf1, 0xc0, 0x46, 0x56, 0x98, 0x0c, 0x92, 0x0d, 0x8a, 0xfa, 0x9c, 0x83, 0x93, 0xd0, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x23, 0x2b, 0x6c, 0x06, 0x36, 0xb2, 0x42, 0xcd, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1b, 0x59, 0x61, 0x34, 0xb0, 0x91, 0x15, 0x86, 0x83, 0x64, 0x20, 0xbd, 0x73, 0x30, 0xfc, 0x63, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x46, 0x56, 0x58, 0x0e, 0x6c, 0x64, 0x85, 0x96, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xb2, 0xc2, 0x74, 0x60, 0x23, 0x2b, 0x14, 0x0c, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xb2, 0xc2, 0xfc, 0x60, 0xf9, 0x49, 0xc4, 0x20, 0x19, 0xa8, 0x55, 0x07, 0xc3, 0x3f, 0xf6, 0x60, 0xdc, 0x41, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8d, 0xac, 0xd0, 0x30, 0xb0, 0x91, 0x15, 0x4a, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xc8, 0x0a, 0x3d, 0x03, 0x1b, 0x59, 0xa1, 0xea, 0xa0, 0x70, 0x4b, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x25, 0x2b, 0x64, 0x07, 0x4b, 0xe2, 0x1f, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xc9, 0x0a, 0xf9, 0xc0, 0x4a, 0x56, 0x98, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x25, 0x2b, 0x6c, 0x0e, 0xd6, 0xb9, 0x45, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x92, 0x15, 0x46, 0x03, 0x2b, 0x59, 0x61, 0x37, 0x48, 0x06, 0xda, 0x3a, 0x1d, 0x9c, 0x84, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x59, 0x61, 0x38, 0xb0, 0x92, 0x15, 0x96, 0x07, 0x65, 0xdc, 0xce, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x92, 0x15, 0xa6, 0x03, 0x2b, 0x59, 0x61, 0x7d, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x93, 0x15, 0xb2, 0x83, 0x25, 0xf1, 0x0f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x64, 0x85, 0x7c, 0x60, 0x27, 0x2b, 0xcc, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x93, 0x15, 0x36, 0x07, 0xcb, 0x77, 0x23, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x52, 0x56, 0xc8, 0x0e, 0x96, 0xc4, 0x3f, 0x0c, 0x82, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x65, 0x85, 0xfc, 0x60, 0x49, 0xfc, 0xc3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xb2, 0x42, 0x76, 0xb0, 0x24, 0xfe, 0x61, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x95, 0x15, 0xf2, 0x81, 0xad, 0xac, 0xb0, 0x1c, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x65, 0x85, 0xc5, 0xc0, 0x56, 0x56, 0x18, 0x1d, 0x52, 0x07, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xca, 0x0a, 0xab, 0x81, 0xad, 0xac, 0x30, 0x3c, 0xa4, 0x6a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x5a, 0x56, 0x48, 0x07, 0xd6, 0xb2, 0xc2, 0xe0, 0xe0, 0x9c, 0x99, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbd, 0xac, 0x90, 0x1d, 0x2c, 0x89, 0x7f, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x02, 0xeb, 0xff, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xcc, 0x0a, 0x93, 0x81, 0xfd, 0xac, 0x90, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x99, 0x15, 0xb6, 0x03, 0x9b, 0x59, 0xa1, 0x6e, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xcd, 0xac, 0x30, 0x1e, 0xd8, 0xcc, 0x0a, 0xfb, 0x83, 0xe4, 0x99, 0x94, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x66, 0x56, 0x28, 0x18, 0xd8, 0xcc, 0x0a, 0x0d, 0x07, 0x65, 0xdc, 0xce, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x66, 0x56, 0xa8, 0x18, 0xd8, 0xcc, 0x0a, 0x4d, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x33, 0x2b, 0x74, 0x0c, 0x6c, 0x66, 0x85, 0x9a, 0x43, 0xea, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9b, 0x59, 0xa1, 0x67, 0x60, 0x33, 0x2b, 0x14, 0x1d, 0x8e, 0xf6, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x33, 0x2b, 0x54, 0x0d, 0x6c, 0x66, 0x85, 0xb6, 0x83, 0xc0, 0xc4, 0x3e, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x35, 0x2b, 0x4c, 0x0e, 0x16, 0xb4, 0x48, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x9a, 0x15, 0x66, 0x03, 0xab, 0x59, 0x61, 0x3a, 0x48, 0x36, 0x28, 0xea, 0x73, 0x0e, 0xce, 0x79, 0xc7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbb, 0x59, 0x61, 0x34, 0xb0, 0x9b, 0x15, 0xfa, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xcd, 0x0a, 0xab, 0x81, 0xdd, 0xac, 0xb0, 0x1c, 0x24, 0x03, 0xe9, 0x9d, 0x83, 0xb3, 0x97, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xcd, 0x0a, 0xd3, 0x81, 0xdd, 0xac, 0x50, 0x37, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x6e, 0x56, 0xd8, 0x0e, 0xec, 0x66, 0x85, 0x86, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x6e, 0x56, 0xd8, 0x1f, 0xac, 0xf1, 0x96, 0x18, 0x24, 0x03, 0xb5, 0xea, 0xe0, 0xec, 0x65, 0x7c, 0x90, 0x6e, 0x29, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x76, 0xb3, 0x42, 0xc5, 0xc0, 0x6e, 0x56, 0x68, 0x1b, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x37, 0x2b, 0x74, 0x0c, 0xec, 0x66, 0x85, 0x9a, 0x41, 0x32, 0xf0, 0xbe, 0xd3, 0xc1, 0x39, 0xef, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x9b, 0x15, 0x7a, 0x06, 0x76, 0xb3, 0x42, 0xd1, 0xa1, 0x3f, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x9b, 0x15, 0x9a, 0x06, 0x76, 0xb3, 0x42, 0xd9, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x39, 0x2b, 0x8c, 0x06, 0x96, 0xb3, 0x42, 0xdf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x59, 0x61, 0x35, 0xb0, 0x9c, 0x15, 0x96, 0x07, 0x8b, 0x84, 0x25, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x72, 0x56, 0x98, 0x0e, 0x2c, 0x67, 0x85, 0xba, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xb3, 0xc2, 0x76, 0x60, 0x39, 0x2b, 0x34, 0x0c, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xb3, 0xc2, 0xfe, 0x60, 0x59, 0xda, 0xc4, 0xc1, 0xa2, 0x75, 0x89, 0x83, 0x71, 0x07, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xb3, 0x42, 0xc5, 0xc0, 0x72, 0x56, 0x68, 0x1b, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x39, 0x2b, 0x74, 0x0c, 0x2c, 0x67, 0x85, 0x9a, 0x41, 0x32, 0xd0, 0xd7, 0xe9, 0xe0, 0x9c, 0x77, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xce, 0x0a, 0x3d, 0x03, 0xcb, 0x59, 0xa1, 0xe8, 0xd0, 0x9f, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xce, 0x0a, 0x4d, 0x03, 0xcb, 0x59, 0xa1, 0xec, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x9d, 0x15, 0x46, 0x03, 0xdb, 0x59, 0xe1, 0xc1, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x3b, 0x2b, 0xec, 0x06, 0xb6, 0xb3, 0x42, 0xcf, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x3b, 0x2b, 0x2c, 0x07, 0xb6, 0xb3, 0x42, 0xc9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdb, 0x59, 0x61, 0x3a, 0xb0, 0x9d, 0x15, 0xd6, 0x83, 0x64, 0x20, 0x3a, 0x07, 0xe7, 0xfa, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x76, 0x56, 0x98, 0x0f, 0x6c, 0x67, 0x85, 0x86, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xce, 0x0a, 0x15, 0x03, 0xdb, 0x59, 0xa1, 0xe3, 0xa0, 0x8c, 0xdb, 0x39, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x3b, 0x2b, 0xb4, 0x0c, 0x6c, 0x67, 0x85, 0x9a, 0x43, 0x0c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x76, 0x56, 0x28, 0x1a, 0xd8, 0xce, 0x0a, 0xe5, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xed, 0xac, 0xd0, 0x35, 0xb0, 0x9d, 0x15, 0x3a, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdb, 0x59, 0xa1, 0x6d, 0x60, 0x3b, 0x2b, 0x14, 0x1e, 0x52, 0x35, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xce, 0x0a, 0x8d, 0x03, 0xdb, 0x59, 0xa1, 0xf2, 0x10, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x9d, 0x15, 0x4a, 0x07, 0xb6, 0xb3, 0x42, 0xed, 0x41, 0x8a, 0xf6, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xb3, 0x42, 0xef, 0xc0, 0x76, 0x56, 0xe8, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x07, 0x6d, 0x07, 0xeb, 0xb4, 0x00, 0x8e, 0x6f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xce, 0x0a, 0xed, 0x03, 0xdb, 0x59, 0xe1, 0xc0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x78, 0xb0, 0x4e, 0x0b, 0xe0, 0xf8, 0x36, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x3d, 0x2b, 0x8c, 0x06, 0xd6, 0xb3, 0xc2, 0xee, 0xa0, 0x5c, 0xec, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x98, 0x15, 0x26, 0x03, 0x8b, 0x59, 0x61, 0x38, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xb3, 0xc2, 0x68, 0x60, 0x31, 0x2b, 0xec, 0x0e, 0xa9, 0x83, 0xe3, 0xf1, 0xf1, 0x6d, 0xd8, 0x0d, 0x8a, 0x45, 0xc9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xa2, 0x15, 0xb2, 0x81, 0x65, 0xad, 0x50, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xb4, 0x42, 0x3e, 0xb0, 0xa2, 0x15, 0x26, 0x07, 0x69, 0x2f, 0xd5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x45, 0x2b, 0x8c, 0x06, 0x56, 0xb4, 0xc2, 0xee, 0x20, 0x79, 0x88, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x5a, 0x21, 0x3b, 0x58, 0x00, 0x4b, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x96, 0x56, 0xc8, 0x0e, 0x16, 0xc0, 0x52, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xa5, 0x15, 0xf2, 0x81, 0x2d, 0xad, 0xb0, 0x19, 0x24, 0x03, 0x1a, 0x7f, 0xef, 0x3b, 0x18, 0xfe, 0xb1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x35, 0xad, 0x90, 0x0e, 0xec, 0x69, 0x85, 0xaa, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x4f, 0x2b, 0xa4, 0x07, 0x6b, 0xf8, 0x29, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7b, 0x5a, 0x61, 0x30, 0xb0, 0xa7, 0x15, 0x86, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3d, 0xad, 0x30, 0x19, 0xd8, 0xd3, 0x0a, 0x9b, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xa7, 0x15, 0x46, 0x03, 0x7b, 0x5a, 0x61, 0x77, 0x68, 0xf8, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xb4, 0xc2, 0x72, 0x60, 0x4f, 0x2b, 0xac, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x9e, 0x56, 0xd8, 0x0e, 0xec, 0x69, 0x85, 0xf1, 0x21, 0x86, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x4f, 0x2b, 0xcc, 0x07, 0xf6, 0xb4, 0x42, 0xd3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7b, 0x5a, 0x61, 0x3f, 0xb0, 0xa7, 0x15, 0x2a, 0x0e, 0x96, 0x37, 0x16, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xb4, 0x42, 0xc7, 0xc0, 0x9e, 0x56, 0x28, 0x39, 0xf4, 0x27, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xb4, 0x42, 0xcb, 0xc0, 0x9e, 0x56, 0x28, 0x3a, 0x34, 0xfc, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8b, 0x5a, 0x21, 0x3b, 0x58, 0x00, 0x4b, 0x31, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xd4, 0x0a, 0xd9, 0xc1, 0x02, 0x58, 0x8a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xa9, 0x15, 0xf2, 0x81, 0x4d, 0xad, 0xb0, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x6a, 0x85, 0xc1, 0xc1, 0x82, 0xcd, 0x8a, 0x43, 0x23, 0xc1, 0xc3, 0xfa, 0xe6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xb5, 0x42, 0x76, 0xb0, 0x00, 0x96, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x55, 0xad, 0x90, 0x0f, 0xac, 0x6a, 0x85, 0xcd, 0xc1, 0x9a, 0x76, 0x88, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xae, 0x56, 0x08, 0x07, 0x76, 0xb5, 0x42, 0xd5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbb, 0x5a, 0x21, 0x1d, 0xd8, 0xd5, 0x0a, 0x8b, 0x83, 0x15, 0x0c, 0x11, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x57, 0x2b, 0x4c, 0x06, 0x76, 0xb5, 0x42, 0xd3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbb, 0x5a, 0x61, 0x33, 0xb0, 0xab, 0x15, 0x6a, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbb, 0x5a, 0x61, 0x36, 0xb0, 0xab, 0x15, 0x76, 0x87, 0x46, 0x82, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x57, 0x2b, 0x0c, 0x07, 0x76, 0xb5, 0xc2, 0x7c, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xab, 0x15, 0xc6, 0x07, 0x4b, 0x19, 0x2c, 0x0e, 0xd6, 0xd3, 0x44, 0x1c, 0x8c, 0x3b, 0xa8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x6a, 0x85, 0xfd, 0xc0, 0xae, 0x56, 0x68, 0x19, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x6a, 0x85, 0x8e, 0x83, 0x75, 0x25, 0x16, 0x07, 0xeb, 0x69, 0x22, 0x0e, 0xd2, 0x2d, 0xa5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xae, 0x56, 0xe8, 0x19, 0xd8, 0xd5, 0x0a, 0x45, 0x87, 0x68, 0x1e, 0x87, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xb2, 0x56, 0xc8, 0x0e, 0x16, 0xc0, 0x52, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xb5, 0x42, 0x3c, 0xb0, 0xac, 0x15, 0xb6, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x65, 0xad, 0x30, 0x18, 0x58, 0xd6, 0x0a, 0x8b, 0x43, 0x23, 0xc1, 0x85, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x5a, 0x61, 0x32, 0xb0, 0xac, 0x15, 0xa6, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x65, 0xad, 0xb0, 0x39, 0x58, 0x45, 0x67, 0x31, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xd6, 0x0a, 0xab, 0x81, 0x65, 0xad, 0x30, 0x3b, 0x08, 0x4a, 0xef, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x6b, 0x85, 0xdd, 0xc0, 0xb2, 0x56, 0x58, 0x1e, 0xa4, 0x68, 0x5f, 0x1f, 0xd6, 0x37, 0x0f, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xb5, 0xc2, 0x7c, 0x60, 0x59, 0x2b, 0xb4, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x65, 0xad, 0xb0, 0x1f, 0x58, 0xd6, 0x0a, 0x15, 0x07, 0xe9, 0x4f, 0xcf, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xd6, 0x0a, 0x1d, 0x03, 0xcb, 0x5a, 0xa1, 0xe4, 0x20, 0x28, 0xbd, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xac, 0x15, 0xc6, 0x03, 0xcb, 0x5a, 0x61, 0x7d, 0x10, 0x94, 0xde, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4b, 0x5a, 0x21, 0x1d, 0x58, 0xd2, 0x0a, 0xeb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xb4, 0x42, 0x3c, 0xb0, 0xa4, 0x15, 0x26, 0x83, 0x64, 0x83, 0xa2, 0x3e, 0xe7, 0x60, 0x38, 0x4a, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x96, 0xb4, 0xc2, 0x66, 0x60, 0x49, 0x2b, 0x0c, 0x0f, 0x42, 0x00, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xd2, 0x0a, 0xcb, 0x81, 0x25, 0xad, 0x30, 0x3e, 0x18, 0x88, 0xd4, 0xc7, 0xa1, 0x61, 0x17, 0x6e, 0x83, 0x35, 0x69, 0x09, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7d, 0xad, 0x90, 0x0d, 0x2c, 0x6d, 0x85, 0x74, 0xd8, 0x85, 0xdb, 0x60, 0xe0, 0x1b, 0x1f, 0xc6, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x6c, 0x85, 0xc5, 0xc0, 0xc2, 0x56, 0x28, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0b, 0x5b, 0x61, 0x32, 0xb0, 0xb0, 0x15, 0x56, 0x07, 0x69, 0x2f, 0xd5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x61, 0x2b, 0xcc, 0x06, 0x16, 0xb6, 0xc2, 0xf2, 0x20, 0x79, 0x88, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0b, 0x5b, 0x61, 0x3a, 0xb0, 0xb0, 0x15, 0xfa, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xd8, 0x0a, 0xdb, 0x81, 0x85, 0xad, 0xb0, 0x1f, 0x24, 0x03, 0xb5, 0xef, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0b, 0x5b, 0xa1, 0x60, 0x60, 0x61, 0x2b, 0xd4, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xb0, 0x15, 0x1a, 0x06, 0x16, 0xb6, 0x42, 0xcb, 0x20, 0x19, 0x28, 0x2b, 0x07, 0xc3, 0xd0, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x6c, 0x85, 0x9a, 0x81, 0x85, 0xad, 0xd0, 0x76, 0x68, 0xf8, 0x75, 0x1c, 0x3a, 0x0e, 0x0d, 0xbb, 0x70, 0x1b, 0x2c, 0x40, 0x63, 0x38, 0x8c, 0xcb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xd8, 0x0a, 0x8b, 0x81, 0x8d, 0xad, 0x50, 0xba, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xb6, 0xc2, 0x64, 0x60, 0x63, 0x2b, 0xac, 0x0e, 0xd2, 0x5e, 0xaa, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xc6, 0x56, 0x98, 0x0d, 0x6c, 0x6c, 0x85, 0xe5, 0x41, 0xf2, 0x10, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xd8, 0x0a, 0xd3, 0x81, 0x8d, 0xad, 0xb0, 0x3e, 0x48, 0x1e, 0x62, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xc6, 0x56, 0x98, 0x0f, 0x6c, 0x6c, 0x85, 0xce, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xb6, 0xc2, 0x7e, 0x60, 0x63, 0x2b, 0x74, 0x1c, 0x2c, 0xa6, 0xba, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1b, 0x5b, 0xa1, 0x64, 0x60, 0x63, 0x2b, 0x54, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xb1, 0x15, 0x5a, 0x06, 0x36, 0xb6, 0x42, 0xd3, 0xc1, 0x88, 0x6d, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1b, 0x5b, 0xa1, 0x6a, 0x60, 0x63, 0x2b, 0x34, 0x1e, 0x1a, 0x7e, 0x1d, 0x87, 0x8e, 0x43, 0xc3, 0x2e, 0xdc, 0x06, 0x45, 0xa4, 0xe4, 0x61, 0x5c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xca, 0x56, 0x58, 0x0c, 0xac, 0x6c, 0x85, 0xe2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xb2, 0x15, 0x26, 0x03, 0x2b, 0x5b, 0x61, 0x75, 0x90, 0xf6, 0x52, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xb6, 0xc2, 0x6c, 0x60, 0x65, 0x2b, 0x2c, 0x0f, 0x92, 0x87, 0x98, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xca, 0x56, 0x98, 0x0e, 0xac, 0x6c, 0x85, 0xf5, 0x41, 0xf2, 0x10, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xd9, 0x0a, 0xf3, 0x81, 0x95, 0xad, 0xd0, 0x70, 0x90, 0x3c, 0xc4, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x95, 0xad, 0x50, 0x31, 0xb0, 0xb2, 0x15, 0x7a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xd9, 0x0a, 0x1d, 0x03, 0x2b, 0x5b, 0xa1, 0xe7, 0x60, 0x31, 0xd5, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xd9, 0x0a, 0x45, 0x03, 0x2b, 0x5b, 0xa1, 0x76, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x95, 0xad, 0xd0, 0x34, 0xb0, 0xb2, 0x15, 0xda, 0x06, 0xc9, 0x40, 0x5e, 0xe5, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x95, 0xad, 0x50, 0x37, 0xb0, 0xb2, 0x15, 0x5a, 0x0f, 0x0d, 0xbf, 0x8e, 0x43, 0xc7, 0xa1, 0x61, 0x37, 0x58, 0x63, 0xf1, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x76, 0xb6, 0xc2, 0x62, 0x60, 0x67, 0x2b, 0x94, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9d, 0xad, 0x30, 0x19, 0xd8, 0xd9, 0x0a, 0xab, 0x83, 0xb4, 0x97, 0xea, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x6c, 0x85, 0xd9, 0xc0, 0xce, 0x56, 0xe8, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x67, 0x2b, 0xec, 0x06, 0x76, 0xb6, 0xc2, 0xf6, 0x60, 0x31, 0xd5, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xd9, 0x0a, 0xe3, 0x81, 0x9d, 0xad, 0x50, 0x35, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xce, 0x56, 0x58, 0x0f, 0xec, 0x6c, 0x85, 0x86, 0x41, 0x32, 0x90, 0x5d, 0x39, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x67, 0x2b, 0x54, 0x0c, 0xec, 0x6c, 0x85, 0xa6, 0x43, 0xc3, 0xaf, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0x6d, 0x68, 0xbe, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7d, 0xad, 0x30, 0x1a, 0xd8, 0xd7, 0x0a, 0x15, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x6b, 0x85, 0xd5, 0xc0, 0xbe, 0x56, 0x58, 0x1e, 0xac, 0x1d, 0x6a, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfb, 0x5a, 0x61, 0x3a, 0xb0, 0xaf, 0x15, 0x1a, 0x0e, 0x0d, 0xbf, 0x8e, 0x43, 0xc3, 0x2e, 0xdc, 0x06, 0x27, 0xbd, 0xdd, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xde, 0x56, 0xc8, 0x06, 0x76, 0xb8, 0x42, 0x3a, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xdb, 0x0a, 0xf9, 0xc0, 0xde, 0x56, 0x58, 0x0e, 0xb7, 0xc1, 0x52, 0x9b, 0x82, 0xc3, 0xb8, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc5, 0xad, 0x90, 0x0e, 0x6c, 0x6e, 0x85, 0x92, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xb7, 0xc2, 0x62, 0x60, 0x71, 0x2b, 0xac, 0x06, 0xc9, 0x80, 0x42, 0xbd, 0xef, 0x60, 0xf8, 0xc7, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xb7, 0xc2, 0x6e, 0x60, 0x71, 0x2b, 0x94, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc5, 0xad, 0x30, 0x1c, 0x58, 0xdc, 0x0a, 0xdb, 0x83, 0xb4, 0x8d, 0xe7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xb8, 0x15, 0xc6, 0x03, 0x8b, 0x5b, 0x61, 0x7f, 0xb0, 0xd4, 0xa6, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8b, 0x5b, 0xa1, 0x60, 0x60, 0x71, 0x2b, 0x74, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xb8, 0x15, 0x1a, 0x06, 0x16, 0xb7, 0x42, 0xcb, 0x20, 0xd9, 0xa0, 0x9c, 0xd5, 0x39, 0x18, 0xfe, 0xb1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc5, 0xad, 0x50, 0x33, 0xb0, 0xb8, 0x15, 0x6a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xdc, 0x0a, 0x3d, 0x03, 0x8b, 0x5b, 0xa1, 0x6d, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xb8, 0x15, 0xba, 0x0e, 0x56, 0xa4, 0x66, 0x0c, 0x92, 0x81, 0x52, 0x75, 0x30, 0xde, 0x75, 0x0e, 0x46, 0x48, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xdc, 0x0a, 0x75, 0x03, 0x8b, 0x5b, 0xa1, 0xf5, 0xd0, 0xf0, 0xeb, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x6e, 0x85, 0xde, 0x81, 0xc5, 0xad, 0x50, 0x3d, 0x86, 0xc6, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xb9, 0x15, 0xd2, 0x83, 0x35, 0x3d, 0x19, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x6e, 0x85, 0x78, 0x60, 0x73, 0x2b, 0x4c, 0x06, 0xc9, 0x40, 0xe9, 0x3b, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xe6, 0x56, 0xd8, 0x0c, 0x6c, 0x6e, 0x85, 0x8e, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xb7, 0xc2, 0x68, 0x60, 0x73, 0x2b, 0x4c, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9b, 0x5b, 0x61, 0x78, 0xb0, 0xac, 0x41, 0xe3, 0x60, 0x8d, 0x6d, 0xc6, 0x41, 0xc9, 0xd0, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x36, 0xb7, 0xc2, 0x76, 0x60, 0x73, 0x2b, 0x54, 0x1c, 0x1a, 0x7e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x6e, 0x85, 0xec, 0x60, 0x09, 0x49, 0xc6, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdb, 0x5b, 0x21, 0x3b, 0x58, 0x42, 0x92, 0x31, 0xec, 0xc2, 0x6d, 0x90, 0xb6, 0x40, 0x7d, 0x18, 0x97, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xbe, 0x15, 0x16, 0x03, 0xeb, 0x5b, 0xe1, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xdf, 0x0a, 0x93, 0x81, 0xf5, 0xad, 0xb0, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xeb, 0x5b, 0x61, 0x33, 0xb0, 0xbe, 0x15, 0x66, 0x07, 0x69, 0x1b, 0xcf, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x7d, 0x2b, 0xec, 0x06, 0xd6, 0xb7, 0xc2, 0xf4, 0x20, 0x6d, 0x81, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xeb, 0x5b, 0x61, 0x3b, 0xb0, 0xbe, 0x15, 0xc6, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x7d, 0x2b, 0xcc, 0x07, 0xd6, 0xb7, 0xc2, 0x8f, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xb7, 0xc2, 0x7e, 0x60, 0x7d, 0x2b, 0xd4, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xbe, 0x15, 0x0a, 0x06, 0xd6, 0xb7, 0x42, 0xcb, 0x20, 0x19, 0x44, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xdf, 0x0a, 0x35, 0x03, 0xeb, 0x5b, 0xa1, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x6f, 0x85, 0x9e, 0x81, 0xf5, 0xad, 0x50, 0x74, 0x68, 0x25, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xf5, 0xad, 0xd0, 0x34, 0xb0, 0xbe, 0x15, 0xaa, 0x0e, 0xca, 0xb8, 0x9d, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x7d, 0x2b, 0x94, 0x0d, 0xac, 0x6f, 0x85, 0xf6, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xdf, 0x0a, 0x9d, 0x03, 0xeb, 0x5b, 0xa1, 0x7c, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xf5, 0xad, 0xd0, 0x3b, 0xb0, 0xbe, 0x15, 0x9a, 0x0f, 0xd6, 0xb2, 0x3b, 0x0c, 0x92, 0x41, 0xd9, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x7d, 0x2b, 0x54, 0x0f, 0xac, 0x6f, 0x85, 0xee, 0x43, 0xea, 0xe0, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xf5, 0xad, 0xd0, 0x3f, 0xb0, 0xbe, 0x15, 0x6e, 0x1c, 0x1a, 0x7e, 0x1d, 0x87, 0x86, 0x5d, 0xb8, 0x83, 0x53, 0x56, 0xfa, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xdf, 0x0a, 0x8b, 0x81, 0xfd, 0xad, 0xd0, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xb7, 0xc2, 0x64, 0x60, 0x7f, 0x2b, 0xac, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xfe, 0x56, 0xd8, 0x0c, 0xec, 0x6f, 0x85, 0xd9, 0x41, 0xda, 0xc6, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xdf, 0x0a, 0xbb, 0x81, 0xfd, 0xad, 0x30, 0x3d, 0x18, 0x0d, 0xbe, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xdf, 0x0a, 0xdb, 0x81, 0xfd, 0xad, 0x30, 0x3e, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfb, 0x5b, 0x61, 0x3e, 0xb0, 0xbf, 0x15, 0x0a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xdf, 0x0a, 0xfb, 0x81, 0xfd, 0xad, 0xd0, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xfe, 0x56, 0x28, 0x18, 0xd8, 0xdf, 0x0a, 0x25, 0x07, 0x6b, 0x01, 0x01, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xfe, 0x56, 0x68, 0x19, 0xd8, 0xdf, 0x0a, 0x35, 0x87, 0xa3, 0xfd, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xb7, 0x42, 0xd1, 0xc0, 0xfe, 0x56, 0xe8, 0x3b, 0x34, 0xfc, 0x3a, 0x0e, 0x0d, 0xbb, 0x70, 0x1b, 0x24, 0x48, 0x42, 0x1f, 0xc6, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x70, 0x85, 0xc5, 0xc0, 0x02, 0x57, 0x78, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xb8, 0xc2, 0x64, 0x60, 0x81, 0x2b, 0xac, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x02, 0x57, 0xd8, 0x0c, 0x2c, 0x70, 0x85, 0xd9, 0x41, 0xda, 0xc6, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe0, 0x0a, 0xbb, 0x81, 0x05, 0xae, 0x30, 0x3d, 0x48, 0x90, 0x84, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x02, 0x57, 0xd8, 0x0e, 0x2c, 0x70, 0x85, 0xf1, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe0, 0x0a, 0xf3, 0x81, 0x05, 0xae, 0x70, 0x64, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x05, 0xae, 0xb0, 0x1f, 0x58, 0xe0, 0x0a, 0xfd, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x70, 0x85, 0x82, 0x81, 0x05, 0xae, 0xd0, 0x72, 0xb0, 0x8e, 0x54, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xc0, 0x15, 0x6a, 0x06, 0x16, 0xb8, 0x42, 0xd9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe0, 0x0a, 0x3d, 0x03, 0x0b, 0x5c, 0xa1, 0xe9, 0x20, 0x51, 0xee, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0b, 0x5c, 0xa1, 0x6a, 0x60, 0x81, 0x2b, 0x74, 0x1d, 0x94, 0x71, 0x3b, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x02, 0x57, 0x68, 0x1b, 0x58, 0xe0, 0x0a, 0xf5, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xc0, 0x15, 0x4a, 0x07, 0x16, 0xb8, 0x42, 0xfb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0b, 0x5c, 0xa1, 0x78, 0x60, 0x81, 0x2b, 0x54, 0x1f, 0xac, 0x65, 0x77, 0x18, 0x24, 0xc3, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xb8, 0x42, 0xf7, 0xc0, 0x02, 0x57, 0x28, 0x3f, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe0, 0x0a, 0x07, 0x06, 0x16, 0xb8, 0xc2, 0x8f, 0x43, 0xc3, 0xaf, 0xe3, 0xd0, 0xb0, 0x0b, 0xb7, 0x41, 0x82, 0xc7, 0xf3, 0x61, 0x5c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x06, 0x57, 0x58, 0x0c, 0x6c, 0x70, 0x85, 0x27, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x83, 0x2b, 0x4c, 0x06, 0x36, 0xb8, 0xc2, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x70, 0x85, 0xcd, 0xc0, 0x06, 0x57, 0x98, 0x1d, 0xa4, 0x6d, 0x3c, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x0d, 0xae, 0xb0, 0x1b, 0xd8, 0xe0, 0x0a, 0xd3, 0x83, 0x04, 0x8f, 0xe7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x70, 0x85, 0xed, 0xc0, 0x06, 0x57, 0x18, 0x1f, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x0d, 0xae, 0x30, 0x1f, 0xd8, 0xe0, 0x0a, 0x47, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xe0, 0x0a, 0xfb, 0x81, 0x0d, 0xae, 0xd0, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x06, 0x57, 0x28, 0x18, 0xd8, 0xe0, 0x0a, 0x2d, 0x07, 0xeb, 0x48, 0x35, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1b, 0x5c, 0xa1, 0x66, 0x60, 0x83, 0x2b, 0x94, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x0d, 0xae, 0xd0, 0x33, 0xb0, 0xc1, 0x15, 0x9a, 0x0e, 0x12, 0xca, 0x4e, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xc1, 0x15, 0xaa, 0x06, 0x36, 0xb8, 0x42, 0xd7, 0x41, 0x61, 0x87, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x70, 0x85, 0xb6, 0x81, 0x0d, 0xae, 0x50, 0x3f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1b, 0x5c, 0xa1, 0x74, 0x60, 0x83, 0x2b, 0xb4, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xc1, 0x15, 0x8a, 0x07, 0x36, 0xb8, 0x42, 0xf5, 0xc1, 0x5a, 0x76, 0x87, 0x41, 0x32, 0xcc, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x83, 0x2b, 0x74, 0x0f, 0x6c, 0x70, 0x85, 0xf2, 0x43, 0xea, 0xe0, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x0d, 0xae, 0x70, 0x60, 0x60, 0x83, 0x2b, 0xfc, 0x38, 0x34, 0xfc, 0x3a, 0x0e, 0x0d, 0xbb, 0x70, 0x8b, 0xe1, 0xf7, 0x61, 0x5c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x0a, 0x57, 0x58, 0x0c, 0xac, 0x70, 0x85, 0x27, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x85, 0x2b, 0x4c, 0x06, 0x56, 0xb8, 0xc2, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x70, 0x85, 0xcd, 0xc0, 0x0a, 0x57, 0x98, 0x1d, 0xa4, 0x6d, 0x3c, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x15, 0xae, 0xb0, 0x1b, 0x58, 0xe1, 0x0a, 0xd3, 0x83, 0x35, 0x42, 0x1d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe1, 0x0a, 0xdb, 0x81, 0x15, 0xae, 0x30, 0x3e, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x5c, 0x61, 0x3e, 0xb0, 0xc2, 0x15, 0x8e, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xc2, 0x15, 0xf6, 0x03, 0x2b, 0x5c, 0xa1, 0x7f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x15, 0xae, 0x50, 0x30, 0xb0, 0xc2, 0x15, 0x5a, 0x0e, 0xd6, 0x91, 0x6a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xb8, 0x42, 0xcd, 0xc0, 0x0a, 0x57, 0x28, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x5c, 0xa1, 0x67, 0x60, 0x85, 0x2b, 0x34, 0x1d, 0xa4, 0x43, 0x79, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x85, 0x2b, 0x54, 0x0d, 0xac, 0x70, 0x85, 0xae, 0x83, 0xc2, 0x0e, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe1, 0x0a, 0x6d, 0x03, 0x2b, 0x5c, 0xa1, 0x7e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xb8, 0x42, 0xe9, 0xc0, 0x0a, 0x57, 0x68, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x85, 0x2b, 0x14, 0x0f, 0xac, 0x70, 0x85, 0xea, 0x83, 0xb5, 0xec, 0x0e, 0x83, 0x64, 0x10, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xb8, 0x42, 0xf7, 0xc0, 0x0a, 0x57, 0x28, 0x3f, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe1, 0x0a, 0x07, 0x06, 0x56, 0xb8, 0xc2, 0x8f, 0x43, 0xc3, 0xaf, 0xe3, 0xd0, 0x20, 0xdb, 0xd0, 0x7c, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdb, 0x5b, 0x61, 0x34, 0xb0, 0xbd, 0x15, 0x2e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xed, 0xad, 0xb0, 0x1a, 0xd8, 0xde, 0x0a, 0xb3, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xbd, 0x15, 0x76, 0x03, 0xdb, 0x5b, 0xe1, 0xc1, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdb, 0x5b, 0x61, 0x38, 0xb0, 0xbd, 0x15, 0x8a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xde, 0x0a, 0xcb, 0x81, 0xed, 0xad, 0x30, 0x3f, 0x58, 0x47, 0xaa, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xde, 0x0a, 0xfb, 0x81, 0xed, 0xad, 0xd0, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xb7, 0x42, 0xc1, 0xc0, 0xf6, 0x56, 0xa8, 0x38, 0x38, 0xf2, 0x14, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x7b, 0x2b, 0x74, 0x0c, 0x6c, 0x6f, 0x85, 0x92, 0x43, 0x7f, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x7b, 0x2b, 0xd4, 0x0c, 0x6c, 0x6f, 0x85, 0xde, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xde, 0x0a, 0x6d, 0x03, 0xdb, 0x5b, 0xa1, 0x76, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xed, 0xad, 0xd0, 0x38, 0xb0, 0xbd, 0x15, 0x3a, 0x0f, 0xd6, 0xb2, 0x3b, 0x0c, 0x92, 0x41, 0xd9, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x7b, 0x2b, 0x94, 0x0e, 0x6c, 0x6f, 0x85, 0xd6, 0x43, 0xea, 0xe0, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xed, 0xad, 0xd0, 0x3c, 0xb0, 0xbd, 0x15, 0x0e, 0x1c, 0x1a, 0x7e, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xbc, 0x15, 0xd2, 0x81, 0xe5, 0xad, 0x50, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xf2, 0x56, 0x88, 0x07, 0x96, 0xb7, 0xc2, 0xe4, 0x60, 0x45, 0xb9, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x79, 0x2b, 0x6c, 0x06, 0x96, 0xb7, 0xc2, 0xf0, 0x20, 0xa4, 0xc0, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe5, 0xad, 0xb0, 0x1c, 0x58, 0xde, 0x0a, 0xed, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe5, 0xad, 0x30, 0x1e, 0x58, 0xde, 0x0a, 0x45, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe5, 0xad, 0x30, 0x1f, 0x58, 0xde, 0x0a, 0xfb, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xbc, 0x15, 0x0a, 0x06, 0x96, 0xb7, 0x42, 0xcf, 0x41, 0xf0, 0x70, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe5, 0xad, 0xd0, 0x34, 0xb0, 0xbc, 0x15, 0x6a, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xbc, 0x15, 0xfa, 0x0e, 0x56, 0x7d, 0x7c, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe5, 0xad, 0x50, 0x38, 0xb0, 0xbc, 0x15, 0x3a, 0x0f, 0xd2, 0x36, 0x9e, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xbc, 0x15, 0x4a, 0x07, 0x96, 0xb7, 0x42, 0xeb, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xde, 0x0a, 0xbd, 0x03, 0xcb, 0x5b, 0xa1, 0xfc, 0x20, 0x04, 0xc0, 0x8f, 0x43, 0xc3, 0x2e, 0xdc, 0x06, 0x6b, 0xb4, 0x15, 0x0e, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6b, 0x5c, 0x21, 0x1b, 0x58, 0xe4, 0x0a, 0x7d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x71, 0x85, 0x7c, 0x60, 0x8d, 0x2b, 0x6c, 0x0e, 0x12, 0xa3, 0xa5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7b, 0x5c, 0x21, 0x1d, 0xd8, 0xe3, 0x0a, 0x55, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3d, 0xae, 0x30, 0x18, 0xd8, 0xe3, 0x0a, 0x05, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x71, 0x85, 0xc5, 0xc0, 0x1e, 0x57, 0xd8, 0x0d, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xb8, 0xc2, 0xea, 0x60, 0xdd, 0xe3, 0xc7, 0xc1, 0x89, 0x10, 0xfa, 0xe0, 0xc4, 0xec, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xb8, 0xc2, 0x70, 0x60, 0x8f, 0x2b, 0xec, 0x0f, 0x0d, 0xbf, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x8f, 0x2b, 0x34, 0x0c, 0xec, 0x71, 0x85, 0x96, 0x83, 0x45, 0x61, 0x14, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xe3, 0x0a, 0x35, 0x03, 0x7b, 0x5c, 0xa1, 0xe9, 0x60, 0xbd, 0x1c, 0xc5, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xc8, 0x15, 0xb2, 0x83, 0x45, 0x5d, 0x1f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xf0, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8b, 0x5c, 0x61, 0x3e, 0xb0, 0xc8, 0x15, 0xea, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe4, 0x0a, 0xfb, 0x81, 0x45, 0xae, 0xd0, 0x32, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe4, 0x0a, 0x1d, 0x07, 0x0b, 0xd9, 0x3f, 0x0e, 0x4e, 0x84, 0xd0, 0x07, 0x87, 0x4d, 0xdd, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xc8, 0x15, 0x6a, 0x06, 0x16, 0xb9, 0x42, 0xdb, 0xa1, 0xe1, 0xd7, 0x71, 0x68, 0x10, 0x2d, 0x08, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xc8, 0x15, 0x16, 0x03, 0x8b, 0x5c, 0x61, 0x74, 0x70, 0xd2, 0xdb, 0x3d, 0x1e, 0x1f, 0x87, 0x86, 0xdd, 0xa0, 0xd4, 0x89, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbb, 0x5c, 0x21, 0x1b, 0xd8, 0xe7, 0x0a, 0xb5, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x5d, 0xae, 0x90, 0x0f, 0xec, 0x72, 0x85, 0xe5, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x97, 0x2b, 0x2c, 0x06, 0x76, 0xb9, 0xc2, 0xe8, 0xe0, 0x1c, 0xb9, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x5d, 0xae, 0xb0, 0x1a, 0xd8, 0xe5, 0x0a, 0xc3, 0xc3, 0xb8, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x65, 0xae, 0x90, 0x0e, 0xac, 0x73, 0x85, 0xc6, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x32, 0x57, 0x58, 0x0c, 0x2c, 0x73, 0x85, 0xb6, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x32, 0x57, 0xd8, 0x0c, 0x2c, 0x73, 0x85, 0xd9, 0xc1, 0x1a, 0x6d, 0x85, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x73, 0x85, 0xdd, 0xc0, 0x32, 0x57, 0x28, 0x1b, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x99, 0x2b, 0x0c, 0x07, 0x96, 0xb9, 0xc2, 0xf6, 0x20, 0xed, 0x1a, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xcc, 0x15, 0xc6, 0x03, 0xcb, 0x5c, 0x61, 0x7d, 0xe8, 0x4f, 0xbe, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xcc, 0x15, 0xe6, 0x03, 0xcb, 0x5c, 0xa1, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x73, 0x85, 0xfd, 0xc0, 0x32, 0x57, 0x28, 0x38, 0xb4, 0x12, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x32, 0x57, 0x68, 0x18, 0x58, 0xe6, 0x0a, 0x15, 0x87, 0xa3, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe6, 0x0a, 0x25, 0x03, 0xcb, 0x5c, 0xa1, 0xeb, 0xd0, 0x02, 0xe8, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xb9, 0x42, 0x3e, 0xb0, 0xcd, 0x15, 0x9a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xe6, 0x0a, 0x83, 0x81, 0x6d, 0xae, 0x30, 0x3a, 0x48, 0x8c, 0x96, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x73, 0x85, 0xd5, 0xc0, 0x36, 0x57, 0x28, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x9b, 0x2b, 0xcc, 0x06, 0xb6, 0xb9, 0xc2, 0xf2, 0x60, 0x79, 0x63, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x9b, 0x2b, 0x4c, 0x07, 0xb6, 0xb9, 0xc2, 0xf6, 0xd0, 0x9f, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xe6, 0x0a, 0xe3, 0x81, 0x6d, 0xae, 0xd0, 0x71, 0x68, 0xf8, 0x75, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xb9, 0x42, 0xcb, 0xc0, 0x36, 0x57, 0x28, 0x3a, 0x18, 0xbc, 0x93, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x73, 0x85, 0xf4, 0x60, 0xad, 0x15, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe7, 0x0a, 0xf1, 0xc0, 0x3a, 0x57, 0x58, 0x1c, 0x24, 0x0f, 0x31, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x75, 0xae, 0x30, 0x19, 0x58, 0xe7, 0x0a, 0xab, 0x83, 0xb4, 0x97, 0xea, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x73, 0x85, 0xd9, 0xc0, 0x3a, 0x57, 0x28, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x9d, 0x2b, 0xec, 0x06, 0xd6, 0xb9, 0xc2, 0xf6, 0x20, 0x31, 0x5a, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xce, 0x15, 0xc6, 0x03, 0xeb, 0x5c, 0xa1, 0x6b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x75, 0xae, 0xb0, 0x1e, 0x58, 0xe7, 0x0a, 0x05, 0x07, 0xcb, 0x1b, 0x0b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xeb, 0x5c, 0xa1, 0x61, 0x60, 0x9d, 0x2b, 0x54, 0x1c, 0xfa, 0x93, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xeb, 0x5c, 0xa1, 0x63, 0x60, 0x9d, 0x2b, 0x54, 0x1d, 0x1a, 0x7e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x75, 0xae, 0x50, 0x36, 0xb0, 0xce, 0x15, 0xfa, 0x0e, 0x06, 0xef, 0xe4, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfb, 0x5c, 0x21, 0x3b, 0x58, 0x94, 0x02, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xb9, 0x42, 0x38, 0xb0, 0xcf, 0x15, 0xf2, 0x83, 0xe4, 0x21, 0xe6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xcf, 0x15, 0x06, 0x03, 0xfb, 0x5c, 0x61, 0x73, 0x90, 0x3c, 0xc4, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7d, 0xae, 0x30, 0x1a, 0xd8, 0xe7, 0x0a, 0xad, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x73, 0x85, 0xd5, 0xc0, 0x3e, 0x57, 0x58, 0x1e, 0x24, 0x46, 0x4b, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xb9, 0xc2, 0x74, 0x60, 0x9f, 0x2b, 0x14, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xcf, 0x15, 0xb6, 0x03, 0xfb, 0x5c, 0x61, 0x7e, 0xb0, 0xbc, 0xb1, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xcf, 0x15, 0xf6, 0x03, 0xfb, 0x5c, 0xa1, 0xe0, 0xd0, 0x9f, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xe7, 0x0a, 0x0d, 0x03, 0xfb, 0x5c, 0xa1, 0x6f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7d, 0xae, 0x50, 0x31, 0xb0, 0xcf, 0x15, 0x6a, 0x0e, 0x56, 0xe6, 0x16, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7d, 0xae, 0xd0, 0x33, 0xb0, 0xcf, 0x15, 0xea, 0x0e, 0x0d, 0xbf, 0x8e, 0x43, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x9f, 0x2b, 0x34, 0x0e, 0xec, 0x73, 0x85, 0xd2, 0x83, 0xc1, 0x3b, 0x79, 0x1c, 0x1a, 0x64, 0x1b, 0x9a, 0xaf, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xc7, 0x2a, 0x8c, 0x06, 0x76, 0xac, 0x42, 0xc5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x56, 0x61, 0x35, 0xb0, 0x63, 0x15, 0x96, 0x07, 0x6b, 0x87, 0x1a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x8e, 0x55, 0x98, 0x0e, 0xec, 0x58, 0x85, 0x86, 0x43, 0xc3, 0xaf, 0xe3, 0xd0, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x7e, 0xec, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x55, 0x21, 0x1c, 0x58, 0xa9, 0x0a, 0x83, 0x83, 0x20, 0xe7, 0xef, 0x78, 0xbc, 0x0a, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0xb0, 0x0b, 0xb7, 0xc1, 0x91, 0xa7, 0xf8, 0x10, 0xcd, 0x35, 0x28, 0xff, 0xf3, 0x0e, 0x47, 0xfb, 0x86, 0x46, 0x82, 0xc3, 0x1c, 0x04, 0xa5, 0xf7, 0xf1, 0x78, 0x10, 0x6c, 0x70, 0x8e, 0xec, 0x5d, 0x1c, 0x76, 0x83, 0x31, 0xd3, 0xb5, 0xb0, 0x0b, 0x82, 0x0d, 0x06, 0x3e, 0xf6, 0xc1, 0x49, 0x7e, 0xf9, 0x90, 0xd8, 0x1c, 0x76, 0x41, 0xb0, 0xc1, 0xc0, 0xc7, 0x3e, 0x38, 0xaa, 0x38, 0x1f, 0x12, 0x9b, 0xc7, 0xe3, 0x55, 0x10, 0x2c, 0x48, 0x06, 0x3c, 0xf7, 0xbf, 0xeb, 0x78, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0x63, 0xdd, 0xe6, 0x20, 0xc5, 0x9c, 0xfa, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xfc, 0x5d, 0xc7, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xc9, 0xe2, 0xd3, 0xc3, 0x6f, 0x3c, 0x1f, 0x43, 0xef, 0x71, 0xe8, 0x38, 0xb4, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x19, 0x30, 0xbb, 0xf6, 0xa9, 0x8e, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0xc3, 0x95, 0xeb, 0x78, 0x3c, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x64, 0x60, 0xd6, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xa4, 0x6a, 0x0e, 0x8d, 0x5a, 0x86, 0xdf, 0x78, 0x3e, 0x88, 0x36, 0x18, 0x11, 0x54, 0x87, 0xbd, 0xc2, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x20, 0x78, 0xb9, 0x8e, 0xc7, 0x07, 0xab, 0xde, 0x45, 0x06, 0xc1, 0x06, 0xab, 0x13, 0x46, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0x62, 0x90, 0x0c, 0x04, 0xed, 0x78, 0x7c, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x92, 0x01, 0xc7, 0x75, 0xaa, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x81, 0xba, 0xc8, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0x92, 0x81, 0xa2, 0x76, 0x3c, 0x3e, 0x58, 0x89, 0x2f, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0xac, 0x4e, 0x18, 0x39, 0x58, 0xef, 0x32, 0x72, 0xb0, 0xea, 0x5d, 0x64, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x01, 0xe7, 0xff, 0xae, 0xe3, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xe0, 0x5c, 0x53, 0x7c, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x92, 0x01, 0xd3, 0x6b, 0x9f, 0xea, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0xa2, 0xa5, 0x91, 0x41, 0xb0, 0x41, 0x90, 0xc5, 0x2f, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0xad, 0x18, 0x24, 0x03, 0xd5, 0xed, 0x78, 0x7c, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0x7c, 0xb0, 0xde, 0x65, 0x64, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x35, 0x28, 0x23, 0x07, 0xab, 0xde, 0x45, 0x06, 0xc1, 0x82, 0x64, 0xa0, 0x69, 0xd7, 0xf1, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0xa2, 0x7d, 0x97, 0xeb, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0xe2, 0xc4, 0x91, 0x83, 0x85, 0x65, 0x23, 0xc7, 0xa1, 0x41, 0xb0, 0xc1, 0xba, 0x64, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xc9, 0xe2, 0xd3, 0x07, 0x49, 0x05, 0xd5, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xab, 0x6b, 0x45, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x20, 0x79, 0x1d, 0x7b, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x48, 0x06, 0x04, 0x7a, 0xd7, 0xf1, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x2b, 0x10, 0x47, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x26, 0xd7, 0x3e, 0xd5, 0xf1, 0xf8, 0x60, 0xd5, 0xbb, 0xc8, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x60, 0x97, 0xea, 0x78, 0x7c, 0xb0, 0xea, 0x5d, 0xe4, 0x38, 0x34, 0x08, 0x36, 0x58, 0x01, 0x3c, 0x72, 0xb0, 0xb0, 0x6c, 0xe4, 0x38, 0xb4, 0x82, 0x60, 0x41, 0x32, 0x20, 0xf0, 0xbb, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x52, 0x3b, 0x40, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x82, 0xbd, 0xeb, 0x78, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x40, 0xd3, 0xfb, 0x54, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0xc1, 0x4f, 0x75, 0x3c, 0x3e, 0x0e, 0x1d, 0x87, 0x56, 0x10, 0x2c, 0x48, 0x06, 0x92, 0x5d, 0xc7, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0x41, 0x34, 0x28, 0xe8, 0x38, 0xb4, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0x9a, 0xda, 0xa7, 0x3a, 0x1e, 0x1f, 0x2c, 0xf9, 0x1d, 0x59, 0x10, 0x2c, 0x48, 0x06, 0x9a, 0x77, 0x1d, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0x97, 0xf5, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x2a, 0x76, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x48, 0x06, 0x34, 0xbe, 0xcb, 0x75, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x78, 0xf6, 0x3e, 0xd5, 0xf1, 0xf8, 0x60, 0xd5, 0xbb, 0xc8, 0x71, 0xe8, 0x38, 0xb4, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xac, 0x4b, 0x16, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x1a, 0x76, 0x72, 0x90, 0x5e, 0xd6, 0x73, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x86, 0x69, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x90, 0xb8, 0xd0, 0x7c, 0x1c, 0x3a, 0x58, 0xef, 0x32, 0xb2, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xac, 0xdc, 0x1b, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xb4, 0xbf, 0xcb, 0x75, 0x3c, 0x3e, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0xb9, 0x37, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x78, 0x7e, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xe0, 0x77, 0xae, 0xe3, 0xf1, 0x71, 0xe8, 0x60, 0xd5, 0xbb, 0xc8, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0x9e, 0xb5, 0x4f, 0x75, 0x3c, 0x1e, 0x04, 0x1b, 0x2c, 0x1e, 0x1c, 0x39, 0x58, 0x58, 0x36, 0xb2, 0x20, 0xd8, 0x60, 0xe5, 0xde, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xaa, 0xd8, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x19, 0x10, 0xe8, 0x54, 0xc7, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xc3, 0x3e, 0xd5, 0xf1, 0xf8, 0x60, 0xd5, 0xbb, 0xc8, 0x71, 0xe8, 0x38, 0xb4, 0x20, 0x58, 0xdc, 0x20, 0x45, 0xe5, 0x67, 0x83, 0x31, 0x86, 0xb6, 0xc1, 0xa1, 0x76, 0x76, 0x83, 0xa0, 0x59, 0x3e, 0x18, 0xb7, 0x66, 0x8b, 0x83, 0x60, 0x83, 0x82, 0x5a, 0x6c, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0x43, 0xea, 0x60, 0xe3, 0xd0, 0xf1, 0xfc, 0x60, 0xa4, 0x69, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0x29, 0xdf, 0x01, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x24, 0x80, 0x3c, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x86, 0x66, 0xd7, 0x71, 0xe8, 0x20, 0x35, 0xec, 0xe4, 0x38, 0x34, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x01, 0xe7, 0xff, 0xae, 0x83, 0x80, 0xf7, 0x3f, 0x58, 0xff, 0x34, 0x32, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0xd8, 0x90, 0x3a, 0x18, 0x04, 0x1b, 0x04, 0x59, 0xfc, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xd9, 0x8a, 0x41, 0x32, 0x50, 0xdd, 0x0e, 0xc6, 0xbb, 0xce, 0xc1, 0x4a, 0x7c, 0x91, 0xe3, 0xf1, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0x92, 0x81, 0xaa, 0x76, 0x30, 0xde, 0x75, 0x0e, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x20, 0xd0, 0xbb, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x8d, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xfe, 0x76, 0x1d, 0x0c, 0x43, 0x9f, 0x83, 0x61, 0x16, 0x3e, 0x08, 0x36, 0xa4, 0x6a, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0x62, 0x90, 0x0c, 0x84, 0xed, 0x60, 0x18, 0xfa, 0x1c, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x19, 0x98, 0xb5, 0x83, 0x61, 0xe8, 0x73, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x70, 0x5c, 0xa7, 0x3a, 0x18, 0x86, 0x3e, 0x07, 0x6b, 0x61, 0x4a, 0x8e, 0x43, 0x87, 0xf5, 0x89, 0x61, 0x37, 0x08, 0x2d, 0xf7, 0x8d, 0x43, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x40, 0xa4, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb4, 0xd0, 0xc3, 0xd1, 0x7e, 0x88, 0xff, 0xa1, 0x93, 0xda, 0x71, 0x68, 0x10, 0x2c, 0x88, 0x16, 0x3a, 0x08, 0x36, 0x48, 0xa3, 0x5d, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x48, 0xaf, 0x1c, 0x1c, 0xb3, 0x8a, 0x0f, 0x8a, 0x13, 0x8b, 0x83, 0xa1, 0xd9, 0x75, 0x1c, 0x3a, 0x08, 0x29, 0xf0, 0x61, 0x37, 0xec, 0x1a, 0x2c, 0x88, 0x16, 0x72, 0x1c, 0x3a, 0xa4, 0x0e, 0x06, 0xc1, 0x1a, 0x3a, 0xa9, 0x2d, 0x88, 0x16, 0x3a, 0x08, 0x36, 0x38, 0xf1, 0x19, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x57, 0x0e, 0xce, 0x5e, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x09, 0x2a, 0xff, 0x71, 0x68, 0x82, 0xe9, 0x3e, 0x0e, 0x1d, 0x9a, 0x70, 0x0d, 0x82, 0x0d, 0xce, 0xea, 0xe7, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x24, 0x7a, 0x2b, 0x0c, 0xbb, 0xc1, 0xda, 0x49, 0x91, 0x05, 0xc1, 0x82, 0x64, 0x40, 0xa1, 0xde, 0x77, 0x70, 0x3a, 0x43, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x8e, 0x3c, 0xc5, 0x83, 0x60, 0x41, 0x32, 0x90, 0xde, 0x39, 0x38, 0x66, 0x15, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x06, 0x22, 0xf5, 0x71, 0xe8, 0xa0, 0x44, 0x41, 0x3b, 0x0e, 0x1d, 0x14, 0x20, 0x67, 0xc7, 0xb7, 0x41, 0xb4, 0xc1, 0xb8, 0x6a, 0x1f, 0x44, 0x0b, 0x39, 0xa4, 0x0e, 0x0e, 0xa9, 0x9a, 0xe3, 0xf1, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0x72, 0x6f, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0x02, 0x9d, 0xeb, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0x62, 0xe8, 0x92, 0x83, 0x85, 0x65, 0x23, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xab, 0x6b, 0x45, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0xe7, 0x15, 0x19, 0x7e, 0xe3, 0xf9, 0xc1, 0xc2, 0xca, 0x91, 0xe3, 0xd0, 0x0a, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0xf2, 0x8e, 0x64, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xd0, 0x94, 0xeb, 0x78, 0x7c, 0xb0, 0xb0, 0x6c, 0x64, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x3e, 0x58, 0xe2, 0x49, 0x32, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x65, 0x7e, 0xc9, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0xeb, 0x2f, 0x49, 0x0e, 0x56, 0xbd, 0x8b, 0x0c, 0x82, 0x0d, 0x96, 0x27, 0x98, 0x1c, 0x2c, 0x2c, 0x1b, 0x39, 0x58, 0xf5, 0x2e, 0x32, 0x08, 0x36, 0x58, 0x1c, 0x36, 0x72, 0xb0, 0xea, 0x5d, 0x64, 0x05, 0xc1, 0x06, 0x2b, 0xf7, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0xac, 0x4c, 0x1a, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x2a, 0x76, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0xb0, 0x9a, 0x6e, 0xe4, 0x38, 0x74, 0xb0, 0xb0, 0x6c, 0x64, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x60, 0xed, 0x2e, 0xd7, 0xf1, 0xf8, 0x60, 0x61, 0xd9, 0xc8, 0xc1, 0xf2, 0x1c, 0x93, 0xe3, 0xd0, 0x0a, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x65, 0xd2, 0xc8, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xac, 0xcc, 0x2f, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x24, 0xfe, 0x77, 0x1d, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xef, 0x73, 0x1d, 0x8f, 0x8f, 0x43, 0x07, 0x0b, 0xcb, 0x46, 0x0e, 0x56, 0xbd, 0x8b, 0x0c, 0x82, 0x05, 0xc9, 0x80, 0xe1, 0x4e, 0x75, 0x3c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xbc, 0xf7, 0xbf, 0xeb, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x6c, 0xb0, 0xb4, 0x6b, 0xe4, 0x78, 0x3e, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x64, 0xa0, 0xba, 0x1d, 0xcf, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xc1, 0x72, 0x44, 0x93, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xc0, 0xf9, 0xbf, 0xeb, 0x78, 0x7e, 0xb0, 0xfe, 0x69, 0xe4, 0x60, 0x35, 0xa3, 0xc9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xa0, 0x79, 0xd7, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x7a, 0x59, 0xcf, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xa0, 0x77, 0x1d, 0xcf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x4d, 0xa9, 0x8e, 0xe7, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x0d, 0x16, 0xeb, 0x99, 0x1c, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x83, 0xb5, 0xeb, 0x22, 0x07, 0x6b, 0xd7, 0x45, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0xe5, 0x40, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xbd, 0xac, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xa0, 0x5c, 0xef, 0x3a, 0x1e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x9e, 0x3e, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x90, 0xa4, 0x3a, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x0f, 0xd6, 0x72, 0x8d, 0x1c, 0xac, 0x77, 0x19, 0x39, 0x58, 0xf5, 0x2e, 0x32, 0x08, 0x36, 0x58, 0xa0, 0x2e, 0x32, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x64, 0xa0, 0xaa, 0x1d, 0x8f, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0xac, 0x4b, 0x16, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x36, 0xed, 0x7c, 0x90, 0xb4, 0xee, 0x7c, 0x1c, 0x5a, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0xd0, 0xef, 0x3a, 0x1e, 0x1f, 0xa4, 0x28, 0x3f, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x94, 0xff, 0x54, 0xc7, 0xe3, 0x83, 0x55, 0xef, 0x22, 0x2b, 0x08, 0x36, 0x58, 0x97, 0x2c, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xb5, 0x2c, 0xfa, 0x20, 0xdd, 0x2f, 0xfa, 0x38, 0x34, 0x08, 0x36, 0x58, 0x5d, 0x2b, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x6c, 0x30, 0xcc, 0x68, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x50, 0xf6, 0x4d, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0xed, 0x00, 0x39, 0x64, 0xed, 0x8e, 0x43, 0x87, 0x7c, 0xed, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0xb0, 0x26, 0x7e, 0x64, 0x10, 0x6c, 0xb0, 0xf0, 0x7d, 0xe4, 0x60, 0x61, 0xd9, 0xc8, 0x71, 0x68, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x3e, 0x58, 0xbb, 0x2e, 0x32, 0x08, 0x36, 0x58, 0xa0, 0x2e, 0x72, 0xb0, 0xb0, 0x6c, 0xe4, 0x60, 0x15, 0xdc, 0xc9, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x56, 0xee, 0x8d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0xf2, 0xcf, 0xf3, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6b, 0x98, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x48, 0x29, 0x7a, 0x3e, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0xdc, 0x1b, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0x44, 0xa5, 0xe7, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x30, 0x8d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x90, 0xfe, 0xf4, 0x7c, 0x1c, 0x3a, 0x0e, 0x1d, 0xac, 0x7a, 0x17, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xba, 0x56, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x86, 0x19, 0xcd, 0x41, 0xaa, 0x83, 0xc6, 0xf1, 0xf8, 0x60, 0x11, 0x79, 0xc9, 0x71, 0xe8, 0x60, 0xd5, 0xbb, 0xc8, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd5, 0xb5, 0x22, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x30, 0xd6, 0x6d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0x07, 0x29, 0xa0, 0xcf, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x0f, 0x56, 0xc1, 0x9c, 0x1c, 0x87, 0x0e, 0x56, 0xbd, 0x8b, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x5d, 0x2b, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0x63, 0xdd, 0xe6, 0x20, 0x51, 0xd9, 0xf9, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x83, 0xc5, 0x11, 0x27, 0xc7, 0xa1, 0x83, 0x55, 0xef, 0x22, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0x72, 0x6f, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x10, 0xaa, 0x5c, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x95, 0x7b, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8d, 0xe7, 0x0f, 0x16, 0x3b, 0x8e, 0x1c, 0x87, 0x0e, 0x56, 0xbd, 0x8b, 0x0c, 0x82, 0x0d, 0x16, 0x60, 0x8f, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x34, 0x9e, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xd1, 0xf8, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xe5, 0xe9, 0x23, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x8a, 0x7f, 0xaa, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0xb4, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xc1, 0x0a, 0xc4, 0x91, 0x83, 0xf5, 0xc7, 0x23, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x1f, 0x2c, 0x3a, 0x20, 0x39, 0x58, 0xf5, 0x2e, 0x72, 0xb0, 0xe4, 0x77, 0x64, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x79, 0x47, 0x72, 0xb0, 0xba, 0x71, 0x64, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x16, 0x7e, 0x9c, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x64, 0x40, 0xe0, 0x72, 0x1d, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0x94, 0x47, 0x72, 0xb0, 0xb0, 0x6c, 0x64, 0x10, 0x6c, 0xb0, 0x3a, 0x61, 0xe4, 0x60, 0x61, 0xd9, 0xc8, 0xc1, 0xaa, 0x77, 0x91, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0xf8, 0x60, 0xa5, 0xf2, 0xc8, 0xc1, 0x0a, 0x22, 0x94, 0x83, 0x25, 0xbf, 0x23, 0x83, 0x60, 0x83, 0x05, 0xd8, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xce, 0x35, 0xc5, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0x1a, 0x1f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x3c, 0x7d, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xa0, 0x3d, 0xd5, 0xf1, 0xf8, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0xac, 0xae, 0x15, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xd6, 0x74, 0x64, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0x2a, 0x76, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xe0, 0xb8, 0x4f, 0x75, 0x3c, 0x3e, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x0c, 0x75, 0xaa, 0xe3, 0xf1, 0xc1, 0xc2, 0xb2, 0x91, 0xe3, 0xd0, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x5d, 0x2b, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0x63, 0xdd, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x73, 0xb0, 0x42, 0x5a, 0xe4, 0x38, 0x74, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x5d, 0xb2, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb4, 0x69, 0xe7, 0xe1, 0x37, 0x9e, 0x8f, 0xe1, 0xc6, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x75, 0xad, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x8c, 0x75, 0x9b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0x0f, 0x52, 0xb9, 0xa1, 0x8f, 0x43, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x25, 0x8b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x2d, 0x8b, 0x1e, 0x7e, 0xe3, 0xf9, 0xc1, 0xb8, 0xdd, 0x3d, 0x0e, 0x1d, 0x87, 0x0e, 0x56, 0xbd, 0x8b, 0x0c, 0x82, 0x0d, 0x96, 0x3d, 0xa2, 0x1c, 0xac, 0x7a, 0x17, 0x59, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x47, 0xfb, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0x1c, 0x04, 0x0b, 0xbb, 0x21, 0x55, 0xb3, 0x20, 0x58, 0x90, 0x0c, 0xa8, 0xbf, 0xf6, 0xa9, 0x0e, 0x2b, 0xb4, 0x87, 0x46, 0x2d, 0x83, 0x60, 0x41, 0x32, 0x20, 0x79, 0x9d, 0xea, 0xb0, 0x42, 0x7b, 0x68, 0xd4, 0x32, 0xec, 0x06, 0xa1, 0xe5, 0xbe, 0x86, 0xac, 0xdd, 0x86, 0x18, 0x6e, 0x38, 0xda, 0x0f, 0xa9, 0x9a, 0x41, 0xb0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xc4, 0xc3, 0x6e, 0xd8, 0x2b, 0x3c, 0xac, 0x6f, 0x0e, 0xa2, 0x85, 0x3d, 0x08, 0x03, 0xf9, 0xe3, 0xf9, 0xb0, 0x0b, 0x3d, 0x08, 0x01, 0xf0, 0x35, 0x08, 0x29, 0xf0, 0x0d, 0x31, 0x5c, 0x10, 0x2c, 0x48, 0x06, 0x75, 0x07, 0xc3, 0xd0, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0x71, 0xd1, 0xa1, 0x93, 0xda, 0x71, 0xe8, 0x20, 0x0c, 0xe4, 0x0f, 0xa7, 0xd8, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb2, 0xc1, 0x2a, 0x91, 0x94, 0xe3, 0xf1, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0x82, 0x05, 0xc9, 0xa0, 0xec, 0x78, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x1b, 0xac, 0x82, 0x3c, 0x38, 0x24, 0x5a, 0x8f, 0xc7, 0xc7, 0xa1, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0xab, 0x6b, 0x45, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0xe7, 0x15, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x5d, 0xb2, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x64, 0xf1, 0xe9, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0xca, 0xce, 0x38, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0x2b, 0xf7, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0x05, 0x8c, 0x24, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0x43, 0x9f, 0xea, 0x78, 0x7c, 0xb0, 0xb0, 0x6c, 0xe4, 0x38, 0xb4, 0x20, 0x58, 0x0c, 0xc0, 0xe7, 0x18, 0x99, 0x19, 0x9a, 0x1a, 0x9b, 0x1b, 0x9c, 0x9c, 0x20, 0xa1, 0x21, 0xa2, 0x22, 0xa3, 0x23, 0x24, 0xa5, 0x25, 0xa6, 0x26, 0x27, 0xa8, 0x28, 0xa9, 0x29, 0xaa, 0x2a, 0xab, 0x2b, 0xac, 0x2c, 0xad, 0x30, 0xb1, 0x31, 0xb2, 0x32, 0xb3, 0x33, 0xb4, 0x34, 0xb5, 0xb5, 0x36, 0xb7, 0x37, 0xb8, 0x38, 0xb9, 0x39, 0xba, 0x3a, 0xbb, 0x3b, 0xbc, 0x3c, 0x7d, 0x10, 0x2c, 0xc8, 0x36, 0xc4, 0x65, 0x10, 0x2c, 0x08, 0xd6, 0x10, 0xc3, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x9c, 0x5a, 0x9b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x0d, 0xd2, 0xcb, 0x7a, 0x0e, 0xd2, 0x0d, 0x1c, 0x8e, 0x43, 0x8b, 0x1b, 0x94, 0xff, 0x79, 0x83, 0x60, 0x83, 0x44, 0x7a, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x8e, 0x61, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x8c, 0xa1, 0x85, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0xd0, 0x9f, 0xfc, 0x10, 0xcd, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x89, 0xee, 0x27, 0x83, 0x64, 0xd0, 0x36, 0x88, 0x16, 0xf6, 0x60, 0x28, 0x16, 0x1d, 0x87, 0x0e, 0x4d, 0x81, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0x82, 0x05, 0xc9, 0x06, 0x6b, 0xd7, 0x29, 0x26, 0xfc, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x18, 0xa5, 0x83, 0xa5, 0x08, 0x2a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xa1, 0x93, 0xda, 0x71, 0xe8, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0xcf, 0x17, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x18, 0x4b, 0xb9, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xb7, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x0e, 0x8d, 0x39, 0xa4, 0x6a, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0x7f, 0x29, 0x1c, 0x1a, 0xb5, 0x1c, 0x87, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0xd2, 0x62, 0x1e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x83, 0x51, 0xcb, 0x78, 0x1c, 0x1a, 0x76, 0xe1, 0x36, 0x0e, 0x1d, 0x24, 0x29, 0x38, 0x1c, 0x9c, 0x50, 0x76, 0x8f, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0x06, 0xe7, 0xe3, 0xa1, 0x51, 0xcb, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x5e, 0xbf, 0x3b, 0x18, 0xef, 0x3a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xe2, 0xb1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x83, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x0e, 0xac, 0xdb, 0x07, 0xe9, 0x70, 0x10, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x86, 0xf8, 0xec, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x14, 0x39, 0xea, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xda, 0xe9, 0x60, 0x18, 0xfa, 0x1c, 0xa4, 0xc3, 0x41, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x28, 0x4f, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0xfe, 0x1d, 0x14, 0x5c, 0x38, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x4a, 0xba, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x4b, 0x5d, 0x54, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xaf, 0xdf, 0x1d, 0x0c, 0x43, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa9, 0x61, 0x27, 0x87, 0xd4, 0xc1, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x08, 0x36, 0x38, 0x60, 0x3d, 0x1f, 0xa4, 0xf8, 0x39, 0x0c, 0xbb, 0x20, 0xd8, 0x20, 0x29, 0x95, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x31, 0xac, 0x8e, 0x43, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x38, 0x5e, 0x41, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0xed, 0xab, 0x72, 0x48, 0x1d, 0x1c, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x01, 0xcb, 0x73, 0xb0, 0x72, 0x45, 0x65, 0xd8, 0x85, 0x5b, 0x10, 0x6c, 0x70, 0xc2, 0x44, 0x3f, 0x18, 0xd8, 0xa2, 0x83, 0x60, 0x83, 0x34, 0xba, 0x87, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x4b, 0x5d, 0x54, 0x0e, 0x7b, 0x85, 0xc7, 0xa1, 0x0d, 0xc6, 0xbf, 0xe4, 0x21, 0x86, 0xc7, 0xe3, 0xe3, 0xf1, 0xf0, 0x0b, 0x82, 0xc5, 0x01, 0x00, 0xff, 0x8f, 0xec, 0x4d, 0xaf, 0x2d, 0x4c, 0x4e, 0x2c, 0xcd, 0xed, 0x2e, 0xcc, 0x6d, 0x2e, 0xac, 0x8d, 0x2d, 0x8d, 0x6e, 0x2e, 0xed, 0x0c, 0x2d, 0x8d, 0xcc, 0x2c, 0x8d, 0x8c, 0x2d, 0x6d, 0x6e, 0xee, 0xed, 0x8c, 0x2c, 0x4d, 0xee, 0x2e, 0x6c, 0x6c, 0x2e, 0x4c, 0xec, 0x2e, 0x6d, 0x6e, 0x2e, 0x4d, 0x4c, 0x2e, 0xed, 0x6c, 0xee, 0x8d, 0x8d, 0xec, 0x0d, 0xae, 0xed, 0x8d, 0xcc, 0xec, 0xed, 0x8c, 0x2d, 0x8d, 0x0c, 0xed, 0x0d, 0x8e, 0x2c, 0x4c, 0x8e, 0xec, 0x4d, 0x8e, 0xed, 0x4d, 0x0e, 0xed, 0x8d, 0xcc, 0xec, 0x8d, 0x4d, 0x2e, 0xcd, 0x8d, 0xee, 0xed, 0x6c, 0x2e, 0x8d, 0xad, 0x2d, 0x4d, 0x0e, 0xed, 0x8d, 0x0d, 0x2e, 0x6c, 0x8e, 0x2d, 0x6c, 0x4c, 0xee, 0xcd, 0x8e, 0x2d, 0xcd, 0x8e, 0x2c, 0x8c, 0x6d, 0x2e, 0x8c, 0x8e, 0x2d, 0x4d, 0x8c, 0x2e, 0x4c, 0x0c, 0x2d, 0xcc, 0x8d, 0x2e, 0x6d, 0x0c, 0x2e, 0x8d, 0x8c, 0xee, 0x4d, 0x4e, 0xec, 0x8d, 0xcd, 0xec, 0x6d, 0x8e, 0xec, 0x8d, 0x8e, 0xed, 0x6d, 0x8e, 0x2c, 0x8d, 0xcd, 0xec, 0x4d, 0x0e, 0x2e, 0x8d, 0x4d, 0x2e, 0xac, 0x8d, 0x2e, 0x4d, 0xee, 0x2e, 0xcd, 0x8d, 0x2e, 0x8c, 0x4c, 0x2c, 0x6d, 0x8c, 0x2c, 0xcd, 0x4c, 0xee, 0x6d, 0xec, 0x2e, 0x8d, 0x4c, 0x2c, 0x6d, 0x8e, 0x2c, 0x6c, 0xae, 0x2d, 0x8d, 0x8c, 0xed, 0x0d, 0x4e, 0x2e, 0x8d, 0xcd, 0x2d, 0x4c, 0x8e, 0x2c, 0x0c, 0xae, 0xed, 0x8d, 0x6d, 0x2e, 0xcc, 0x8d, 0xed, 0x6d, 0xcc, 0xed, 0xcd, 0x6e, 0x2e, 0x8d, 0xce, 0x2d, 0x8d, 0x8c, 0x2e, 0x0d, 0x6e, 0x2e, 0x6d, 0x4c, 0xee, 0x0d, 0xee, 0x2e, 0x8d, 0xce, 0x2d, 0x8c, 0x0e, 0x2e, 0xcc, 0xad, 0x2d, 0xcd, 0x4d, 0x2e, 0x8d, 0x0e, 0xee, 0x8d, 0xac, 0xed, 0x8d, 0x8e, 0x2e, 0xac, 0x8d, 0xee, 0x8d, 0x6d, 0x2e, 0xcc, 0x0e, 0xee, 0x6d, 0xce, 0x2d, 0x0c, 0xce, 0xed, 0x0d, 0x6e, 0xee, 0xad, 0xcd, 0x2c, 0xcd, 0xcd, 0xec, 0xcd, 0x4d, 0x2c, 0xcc, 0xad, 0xed, 0x4d, 0xee, 0xee, 0x4d, 0x6e, 0x2e, 0x0d, 0x4e, 0xee, 0xcd, 0xcd, 0xed, 0x4d, 0x4e, 0xec, 0x8d, 0xee, 0x2e, 0x6d, 0x6c, 0xee, 0x6d, 0xec, 0x2e, 0x8c, 0x8e, 0xec, 0x8d, 0xad, 0x2d, 0xec, 0x0c, 0x2e, 0x6d, 0x8c, 0x2c, 0xcc, 0x4e, 0x2c, 0x8d, 0x4c, 0x2c, 0x8c, 0x8d, 0x2e, 0xad, 0x8d, 0x2e, 0x6c, 0xae, 0x2d, 0x8c, 0x8d, 0x2d, 0xed, 0x6c, 0x2e, 0xcd, 0x8e, 0x2e, 0xec, 0x0c, 0x2e, 0x8c, 0x6c, 0x2e, 0x8c, 0x8d, 0x2c, 0xcd, 0x8e, 0x2c, 0x6c, 0x8c, 0x2e, 0xcc, 0x6d, 0x2e, 0x8d, 0xcc, 0x2c, 0x4c, 0x8c, 0x2e, 0x4c, 0xae, 0xed, 0xcd, 0x4d, 0x2e, 0xcc, 0xcd, 0x2d, 0x6d, 0xee, 0xee, 0x8d, 0xad, 0x2d, 0x6d, 0x0e, 0x2e, 0x8c, 0x8d, 0x2d, 0x6c, 0x8e, 0x2c, 0x6d, 0xae, 0x2d, 0x0c, 0x4e, 0x2e, 0x4c, 0x8c, 0xee, 0x4d, 0x4c, 0xee, 0x8d, 0x8d, 0x2d, 0x8c, 0x8e, 0xed, 0xcd, 0xcd, 0xed, 0x8d, 0xcc, 0x2d, 0xcc, 0xce, 0x2c, 0xed, 0xcc, 0xed, 0xad, 0xcd, 0x2d, 0x4d, 0x0c, 0x2e, 0xec, 0x6c, 0xee, 0x0d, 0x4e, 0x2e, 0x8c, 0x4d, 0x2c, 0x8d, 0x0d, 0x2d, 0x8c, 0x8c, 0xec, 0x6d, 0x4c, 0x2e, 0x8d, 0xac, 0xed, 0x6d, 0x0c, 0x2e, 0x6c, 0x4c, 0x2e, 0xcc, 0x4e, 0x2e, 0x0d, 0xce, 0x2c, 0x8c, 0x8d, 0xee, 0x8d, 0x8c, 0x2e, 0x8d, 0x8d, 0x2e, 0xcd, 0x0d, 0x2d, 0x0c, 0xae, 0x2d, 0x6d, 0xcc, 0x2c, 0xcc, 0x0d, 0x2e, 0x8c, 0x8e, 0x2e, 0x6c, 0x8c, 0x2d, 0x4c, 0xac, 0xed, 0xed, 0x6c, 0x2e, 0xad, 0x6d, 0xee, 0xcd, 0x0d, 0x2e, 0xcd, 0x8d, 0xed, 0xad, 0x4d, 0x2e, 0x6d, 0x8c, 0x2e, 0x0c, 0xce, 0x2c, 0x4d, 0x0e, 0x2d, 0x6c, 0x4e, 0xec, 0x6d, 0x4e, 0x2c, 0x8c, 0x0e, 0xee, 0x6d, 0x0c, 0x2d, 0x6c, 0x8c, 0x2e, 0x8d, 0x0c, 0x2d, 0xcc, 0x6e, 0x2e, 0x0c, 0x8e, 0x2d, 0xcd, 0x8d, 0x2c, 0x4d, 0x0c, 0xed, 0x6d, 0x8e, 0x2c, 0x4c, 0x4c, 0x2c, 0x8d, 0x4e, 0x2c, 0x4c, 0x4e, 0x2e, 0x6c, 0x0c, 0x2e, 0x4c, 0x8e, 0xed, 0x8d, 0x8c, 0xec, 0x6d, 0x4e, 0xec, 0x4d, 0x8e, 0xee, 0x6d, 0x0c, 0x2d, 0x8d, 0xad, 0x2d, 0x6c, 0x8c, 0xee, 0xad, 0x8d, 0x2c, 0xed, 0xcc, 0x2c, 0x8d, 0xcd, 0x2c, 0x6c, 0xae, 0x2d, 0x8d, 0x0e, 0xed, 0x4d, 0x0c, 0x2d, 0x4c, 0xae, 0x2d, 0xed, 0x0c, 0x2d, 0xcd, 0x4d, 0x2e, 0x8c, 0xac, 0x2d, 0x6c, 0x0e, 0x2d, 0x8c, 0x4d, 0x2e, 0xec, 0x8c, 0x2d, 0xec, 0xcc, 0x2c, 0x8c, 0x8c, 0xee, 0x0d, 0xae, 0xed, 0x0d, 0x0e, 0x2d, 0x4c, 0xcc, 0x2d, 0x8d, 0xcd, 0xed, 0x6d, 0xae, 0x2d, 0x8d, 0xcd, 0xec, 0x0d, 0xce, 0x2c, 0xac, 0x8d, 0x2c, 0x8c, 0xce, 0xed, 0x8d, 0x8d, 0x2c, 0xcd, 0x0d, 0x2d, 0x8c, 0xce, 0x2d, 0x6c, 0x4c, 0x2e, 0x6d, 0xce, 0xec, 0x8d, 0x4e, 0x2e, 0x4d, 0x0c, 0xed, 0x6d, 0xcc, 0x2d, 0xad, 0x8d, 0x2d, 0x4c, 0xce, 0x2c, 0x8d, 0xee, 0x2e, 0x8c, 0x4d, 0x2e, 0x0c, 0x6e, 0x2e, 0x4c, 0xce, 0x2d, 0x8c, 0xad, 0xed, 0x6d, 0x8e, 0x2d, 0xcc, 0x8d, 0xec, 0xcd, 0x8d, 0x2c, 0xcc, 0x8d, 0x2d, 0x8c, 0x8c, 0xec, 0xcd, 0x4e, 0x2e, 0xcd, 0x4e, 0x2c, 0x6c, 0x0c, 0xee, 0x8d, 0x8d, 0x2d, 0x0c, 0x8e, 0x2e, 0x8c, 0x0d, 0x2e, 0x8d, 0xce, 0x2d, 0xac, 0x4d, 0xec, 0xcd, 0x4d, 0xee, 0x6d, 0x8e, 0xee, 0xcd, 0xcd, 0xec, 0x8d, 0x0c, 0xee, 0xcd, 0x6d, 0xee, 0xcd, 0xce, 0xed, 0x6d, 0x6c, 0xee, 0x4d, 0x8e, 0x2d, 0xcc, 0xae, 0x2d, 0x8c, 0xae, 0x2d, 0x0d, 0xce, 0x2c, 0x0d, 0x0e, 0x00, 0xfc, 0x3f, 0xbd, 0x37, 0x32, 0xb7, 0xb2, 0x31, 0xb1, 0x3a, 0xb2, 0xbb, 0xb2, 0xb9, 0xb9, 0x32, 0x3b, 0xb8, 0x32, 0xb9, 0xb9, 0x3a, 0x3a, 0xb6, 0x32, 0x3a, 0xb3, 0x3a, 0x36, 0xb8, 0x32, 0xb7, 0xb9, 0x3c, 0x3a, 0xb2, 0x3a, 0xb9, 0xbb, 0x32, 0xb8, 0xb9, 0x32, 0xb9, 0xbb, 0x3c, 0xb6, 0xb9, 0x3a, 0x37, 0xb9, 0x3c, 0xb8, 0xb9, 0x3c, 0x3c, 0xb2, 0x3c, 0x39, 0xb7, 0x3a, 0x38, 0xb4, 0x32, 0x31, 0xb8, 0xb2, 0x33, 0xb6, 0x3a, 0x38, 0xb2, 0x32, 0x38, 0xb2, 0xbc, 0x39, 0xb8, 0x3a, 0x3a, 0xb6, 0xba, 0x33, 0xb4, 0xb2, 0x31, 0xb9, 0x3c, 0x3a, 0xba, 0x3c, 0xbb, 0xb9, 0x3c, 0x32, 0xb7, 0x32, 0x3c, 0xb6, 0x3a, 0xb7, 0xb6, 0x32, 0x38, 0xb6, 0x3a, 0xba, 0xb9, 0x32, 0x38, 0xb8, 0xb2, 0x39, 0xb2, 0x32, 0xb6, 0xb9, 0x3a, 0x36, 0xb8, 0x32, 0x32, 0xba, 0xb2, 0x36, 0xb6, 0x32, 0x32, 0xba, 0x3a, 0xb6, 0xb6, 0x32, 0xba, 0xbb, 0x32, 0x37, 0xb1, 0x3c, 0x37, 0xb4, 0x32, 0x3c, 0xb3, 0x32, 0x31, 0xb8, 0x3c, 0x36, 0xb2, 0x3a, 0x36, 0xb4, 0x32, 0xba, 0xb6, 0x32, 0x3b, 0xb9, 0x3a, 0x3a, 0xba, 0x3c, 0xb6, 0xbb, 0x3c, 0x32, 0xba, 0x32, 0x38, 0xb1, 0xb2, 0x39, 0xb2, 0x32, 0xbc, 0xb9, 0x32, 0xb3, 0xbb, 0xbc, 0x31, 0xb1, 0x3a, 0x39, 0xb2, 0x32, 0x39, 0xb7, 0x32, 0x38, 0xb8, 0x3a, 0x39, 0xb9, 0xbc, 0x39, 0xb9, 0x32, 0x31, 0xb2, 0x32, 0x37, 0xb7, 0x3a, 0xba, 0xb9, 0x3a, 0x31, 0xb8, 0x32, 0x3a, 0xb9, 0x3a, 0xb6, 0xb9, 0x3c, 0x37, 0xb9, 0xb2, 0x33, 0xba, 0x3c, 0xb2, 0xb9, 0x3a, 0xb8, 0xb9, 0xb2, 0xb6, 0xbb, 0x3c, 0x37, 0xb9, 0xb2, 0xb1, 0xb6, 0xb2, 0x33, 0xb7, 0x32, 0xba, 0xb9, 0xb2, 0xb1, 0xb6, 0x3a, 0x36, 0xb7, 0xbc, 0x36, 0xba, 0x32, 0xbb, 0xbb, 0x32, 0xb1, 0xb9, 0xba, 0xb6, 0xb6, 0x3a, 0x3a, 0xb7, 0x3c, 0x3c, 0xb9, 0x32, 0x3c, 0xba, 0x32, 0x31, 0xb3, 0xba, 0x39, 0xb4, 0x32, 0x38, 0xb1, 0x32, 0xb7, 0xb6, 0xba, 0xb9, 0xbb, 0x3c, 0xbc, 0xb9, 0xbc, 0xb6, 0xb9, 0x32, 0x36, 0xb9, 0xba, 0x31, 0xb2, 0xb2, 0xb1, 0xbb, 0x32, 0xbc, 0xb9, 0x3c, 0xb9, 0xbb, 0x32, 0x3a, 0xb2, 0x3c, 0xb6, 0xb6, 0x3c, 0xb7, 0xb6, 0xb2, 0x39, 0xb2, 0x32, 0x3a, 0xb1, 0x32, 0x3a, 0xb1, 0x32, 0x36, 0xba, 0x3a, 0x3c, 0xba, 0xba, 0xb3, 0xb6, 0x3c, 0x39, 0xb8, 0x32, 0xb6, 0xb9, 0x3c, 0x38, 0xba, 0x32, 0xb9, 0xb6, 0x32, 0xb1, 0xb9, 0x32, 0x3a, 0xb2, 0x3a, 0x3a, 0xb2, 0xb2, 0x33, 0xba, 0x32, 0xbc, 0xb9, 0x3a, 0x39, 0xb3, 0x32, 0x36, 0xba, 0x3a, 0x32, 0xb7, 0x3a, 0x3c, 0xb9, 0x3a, 0x3c, 0xb9, 0x32, 0xb7, 0xbb, 0x3c, 0x3a, 0xb7, 0x3a, 0xb1, 0xb6, 0x32, 0x32, 0xb6, 0x3c, 0x3a, 0xb2, 0xba, 0x39, 0xb7, 0x32, 0x31, 0xb9, 0xba, 0x36, 0xba, 0x3c, 0xb7, 0xb9, 0xb2, 0x33, 0xb6, 0x3c, 0x3c, 0xb8, 0x3a, 0x37, 0xb9, 0xb2, 0x39, 0xb9, 0x32, 0x32, 0xb3, 0x3a, 0x37, 0xb9, 0x32, 0x3b, 0xb9, 0x32, 0xb3, 0xb6, 0xb2, 0x31, 0xba, 0x32, 0x32, 0xb9, 0xba, 0x39, 0xb1, 0x32, 0x3c, 0xb6, 0x32, 0x31, 0xb2, 0x3a, 0x3c, 0xb9, 0x3c, 0x37, 0xb7, 0xba, 0x36, 0xb8, 0x3c, 0x3c, 0xb9, 0xbc, 0x33, 0xb9, 0x3c, 0x3c, 0xb3, 0x32, 0x38, 0xba, 0x3c, 0x39, 0xba, 0xba, 0x39, 0xba, 0xbc, 0x31, 0xb6, 0xb2, 0x33, 0xb7, 0xb2, 0x36, 0xb3, 0x32, 0xb9, 0xb6, 0x32, 0x39, 0xba, 0x32, 0x37, 0xb6, 0xba, 0x39, 0xb7, 0xba, 0xb9, 0xb9, 0x3c, 0x36, 0xba, 0xb2, 0xb1, 0xb6, 0x32, 0x3c, 0xb8, 0x3a, 0x31, 0xb9, 0xbc, 0x36, 0xba, 0xba, 0x31, 0xb3, 0x3c, 0x36, 0xb6, 0x32, 0x38, 0xb2, 0x32, 0x31, 0xb1, 0x32, 0xb9, 0xb6, 0xba, 0x33, 0xb4, 0x3a, 0x3a, 0xba, 0x3a, 0x37, 0xb1, 0x3c, 0xb6, 0xb9, 0x3a, 0x32, 0xb8, 0xb2, 0x36, 0xb2, 0x32, 0x3b, 0xb6, 0x3a, 0x39, 0xb2, 0x32, 0x33, 0xb1, 0xba, 0x39, 0xb1, 0x32, 0x38, 0xb9, 0x3a, 0xb7, 0xb6, 0x32, 0x36, 0xb8, 0x32, 0x3c, 0xb2, 0x3c, 0x3a, 0xb1, 0x3c, 0x3a, 0xba, 0x3c, 0x38, 0xb6, 0x32, 0xbb, 0xb6, 0x3c, 0xb6, 0xbb, 0x32, 0x32, 0xb2, 0xba, 0x31, 0xb3, 0x3a, 0x39, 0xb3, 0x32, 0x3c, 0xb7, 0x3a, 0x36, 0xb6, 0xba, 0x31, 0xb6, 0x32, 0x37, 0xb7, 0x32, 0x39, 0xb6, 0x32, 0x3c, 0xb9, 0x3a, 0x38, 0xb7, 0x32, 0x32, 0xb6, 0xb2, 0x31, 0xb9, 0x3c, 0x32, 0xb6, 0x3c, 0x32, 0xb3, 0x32, 0xb7, 0xbb, 0x32, 0x36, 0xb7, 0x3c, 0x32, 0xb4, 0xba, 0x39, 0xb9, 0x32, 0x36, 0xb9, 0x3a, 0x32, 0xb7, 0xb2, 0x39, 0xb4, 0xb2, 0x39, 0xb3, 0x32, 0x3a, 0xb2, 0xb2, 0x39, 0xb9, 0x32, 0x3a, 0xb2, 0x3a, 0x37, 0xb6, 0x32, 0x39, 0xb7, 0x3c, 0xb9, 0xb9, 0x32, 0x31, 0xb4, 0x3a, 0x36, 0xb9, 0x3c, 0x36, 0xb6, 0x3a, 0x32, 0xb9, 0xb2, 0x36, 0xb6, 0xbc, 0x39, 0xb3, 0x3c, 0xb7, 0xbb, 0x32, 0x39, 0xb9, 0xbc, 0xb1, 0xb9, 0xba, 0x33, 0xb7, 0xbc, 0x39, 0xb7, 0x3c, 0x36, 0xb6, 0x3c, 0x37, 0xb2, 0x3c, 0x37, 0xb2, 0xb2, 0x36, 0xb6, 0x3a, 0x3c, 0xb3, 0x32, 0xb2, 0xb9, 0x32, 0x32, 0xb1, 0xb2, 0xb1, 0xb6, 0x3a, 0x37, 0xb6, 0x3c, 0x39, 0xba, 0xb2, 0xb9, 0xb6, 0x3a, 0x32, 0xb7, 0x3c, 0x3a, 0xb1, 0x3c, 0xb9, 0xb9, 0x32, 0xb7, 0xbb, 0xb2, 0x33, 0xb3, 0x3c, 0xb9, 0xb6, 0x3a, 0x39, 0xba, 0x32, 0x36, 0xb9, 0x32, 0x38, 0xba, 0xb2, 0x33, 0xb8, 0xb2, 0x31, 0xb7, 0x32, 0x36, 0xb7, 0x32, 0x3b, 0xb3, 0xb2, 0x79, 0x71, 0xe1, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x10, 0x2c, 0x0e, 0xbb, 0x70, 0x1b, 0x24, 0xa5, 0xf5, 0x1c, 0x52, 0x07, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0xd8, 0x2b, 0x1c, 0x04, 0x1b, 0x24, 0xc7, 0x3b, 0x1c, 0x1a, 0xb5, 0x6c, 0x58, 0xe4, 0x3b, 0xac, 0x25, 0x1e, 0xdf, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x4b, 0x73, 0x23, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x05, 0xc1, 0x06, 0xc7, 0x68, 0xe6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0x41, 0x7a, 0x59, 0xcf, 0x71, 0x68, 0x41, 0xb0, 0xc1, 0xe0, 0x7d, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x16, 0x7e, 0xe3, 0xf9, 0x82, 0x60, 0x83, 0x72, 0xe2, 0xea, 0x20, 0xc5, 0xcf, 0xe1, 0xd0, 0x9f, 0xfc, 0x90, 0x98, 0x39, 0x0e, 0x1d, 0x4e, 0xb1, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xe8, 0xde, 0xc8, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x87, 0xdd, 0x60, 0x9d, 0x7e, 0xcb, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x1b, 0xf6, 0x0a, 0x07, 0xc1, 0x82, 0x64, 0xb0, 0x3b, 0x64, 0x2b, 0x0e, 0x8d, 0x5a, 0x0e, 0xd6, 0x1c, 0xb8, 0x1c, 0xdf, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x4b, 0x73, 0x9b, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xf0, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x83, 0xa5, 0x17, 0x2e, 0x0b, 0x82, 0x0d, 0x06, 0xef, 0xf3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0xc1, 0xe2, 0x14, 0x97, 0x43, 0xb2, 0xe3, 0x38, 0x74, 0x38, 0xc5, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0x83, 0x54, 0x31, 0xbf, 0x43, 0x6a, 0xe9, 0x78, 0x7c, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x0f, 0xf7, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0x41, 0xb0, 0xb8, 0x20, 0x58, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x82, 0x60, 0x41, 0x32, 0xa0, 0x54, 0xef, 0x3b, 0x08, 0x72, 0xfe, 0x43, 0xa3, 0x96, 0x41, 0xb0, 0x20, 0x19, 0x28, 0x5a, 0x87, 0x15, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xe0, 0x77, 0x1d, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9c, 0x6b, 0x8a, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x12, 0xff, 0xbb, 0x0e, 0x2b, 0xb4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x20, 0x19, 0xa8, 0x7f, 0x87, 0x15, 0xda, 0x41, 0x32, 0x60, 0xf8, 0x7f, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x90, 0x0c, 0x34, 0xed, 0x3a, 0x24, 0x97, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0xf2, 0xb7, 0xeb, 0x90, 0x5c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0c, 0x3c, 0xb7, 0x30, 0xf7, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x84, 0x7e, 0xd7, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xc1, 0x90, 0xfa, 0x3d, 0x0e, 0x0d, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x19, 0xa8, 0x6e, 0x87, 0xe4, 0xd2, 0xc1, 0x4a, 0x7c, 0x91, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x96, 0x36, 0xbb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x06, 0x5e, 0x9a, 0x9b, 0x79, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x56, 0x79, 0xbb, 0x1c, 0xa4, 0x28, 0x3f, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x26, 0xec, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x6c, 0xb8, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x6c, 0xb0, 0x56, 0x71, 0xe4, 0x90, 0x5c, 0x3a, 0x0e, 0x0d, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x19, 0x98, 0xb5, 0x43, 0x72, 0xe9, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0x78, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x0e, 0x92, 0x45, 0x8b, 0x0e, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0xf2, 0x76, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0x60, 0x34, 0xf8, 0x1e, 0x87, 0x0e, 0xd6, 0xa6, 0xbb, 0x1c, 0xac, 0x51, 0x79, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x56, 0x79, 0xbb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x48, 0x4c, 0x1d, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x0d, 0x4a, 0xd4, 0x90, 0x83, 0x94, 0x8f, 0x8b, 0x41, 0xb0, 0xc1, 0xda, 0x86, 0x97, 0x83, 0xb5, 0xe9, 0x2e, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0xf3, 0x7f, 0xd7, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x18, 0x5e, 0x1e, 0x87, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0xe2, 0x20, 0x0d, 0xe3, 0xe2, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0xf8, 0x60, 0x8d, 0xca, 0xcb, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x2c, 0x18, 0x7b, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc9, 0x06, 0x8b, 0x6d, 0x45, 0x0e, 0xc9, 0xa5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xe2, 0x7f, 0xd7, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xfe, 0xae, 0x43, 0x72, 0xe9, 0x60, 0x21, 0xe6, 0xc8, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x68, 0xca, 0x75, 0x48, 0x2e, 0x1d, 0x2c, 0x91, 0x7c, 0x39, 0x58, 0xa3, 0xf2, 0x72, 0xb0, 0x36, 0xdd, 0x65, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xe5, 0x79, 0x2f, 0x07, 0x6b, 0xd3, 0x5d, 0x0e, 0x16, 0xfa, 0xbd, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0xe5, 0xed, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x48, 0xd6, 0x34, 0x38, 0x0e, 0x1d, 0xac, 0x4d, 0x77, 0x39, 0x58, 0xa3, 0xf2, 0xb2, 0x20, 0xdb, 0x10, 0x97, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x24, 0x03, 0x82, 0xb7, 0xeb, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x29, 0x94, 0x3e, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0xce, 0x33, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x05, 0xc9, 0x06, 0x8b, 0x4a, 0x48, 0x8e, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0xf8, 0x60, 0x09, 0x03, 0xcc, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0x4b, 0x18, 0x60, 0x0e, 0x56, 0x33, 0x9a, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x94, 0xeb, 0x5d, 0xc7, 0xf3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xcb, 0x2e, 0x60, 0x86, 0xdf, 0x78, 0x7e, 0x70, 0xce, 0xa8, 0x3f, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x16, 0xe1, 0xbf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xf7, 0xde, 0xf1, 0xf8, 0x38, 0x34, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x64, 0x60, 0xd6, 0x8e, 0xe7, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0x0b, 0xb2, 0x0d, 0x71, 0x19, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x01, 0xa1, 0xdf, 0x75, 0x3c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x3c, 0x28, 0xaa, 0x05, 0x8f, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x9a, 0x2c, 0x98, 0x83, 0x14, 0xe5, 0xe7, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xf6, 0xae, 0xe3, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xa6, 0x5c, 0xc7, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x20, 0x19, 0xa8, 0x7f, 0xc7, 0xf3, 0x83, 0xf3, 0x13, 0xed, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0xb0, 0x66, 0x11, 0x66, 0x10, 0x6c, 0xb0, 0x30, 0x11, 0xe6, 0x60, 0x35, 0xa3, 0xc9, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0x92, 0x81, 0xa0, 0x1d, 0xcf, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x0f, 0x56, 0xfd, 0xc0, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0x5f, 0x90, 0x0c, 0x84, 0xef, 0x78, 0x3e, 0x48, 0x06, 0xf7, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x85, 0x89, 0x30, 0x07, 0xeb, 0x49, 0x61, 0x0e, 0x56, 0x33, 0x9a, 0x1c, 0xac, 0x99, 0x85, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x89, 0x2e, 0xcc, 0xc1, 0x6a, 0x46, 0x93, 0x83, 0xe5, 0x96, 0x30, 0x07, 0xab, 0x7e, 0x60, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0xb0, 0x5c, 0x17, 0xe6, 0xe0, 0xb4, 0x82, 0x7b, 0xb0, 0x12, 0x18, 0xe6, 0x60, 0x35, 0xa3, 0xc9, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x0d, 0x96, 0xeb, 0xc2, 0x1c, 0x24, 0x7c, 0x0a, 0x1c, 0xac, 0x04, 0x86, 0x39, 0x58, 0xcd, 0x68, 0x32, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x6c, 0xb0, 0xd8, 0x56, 0xe4, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0xf1, 0xe0, 0x80, 0x00, 0x7e, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x15, 0x1d, 0xcc, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xd0, 0xb4, 0xeb, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x6c, 0xb8, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x6c, 0xb0, 0x56, 0x71, 0xe4, 0x78, 0x7e, 0x1c, 0x3a, 0x58, 0xf5, 0x03, 0x33, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x2c, 0xd7, 0x85, 0x39, 0x48, 0xf9, 0xb8, 0x38, 0x58, 0xcd, 0x68, 0x72, 0x1c, 0x3a, 0x58, 0xcd, 0x68, 0xb2, 0x20, 0xd8, 0x60, 0xf9, 0x3d, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0xc1, 0xe6, 0x90, 0x5c, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x2c, 0xbf, 0x87, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0xf3, 0x4f, 0xf8, 0xc1, 0xd9, 0xa4, 0xf7, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x92, 0x01, 0x81, 0xca, 0x75, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0xcd, 0x55, 0xcc, 0xc1, 0x6a, 0x46, 0x93, 0x83, 0xc5, 0x5a, 0x31, 0x07, 0xeb, 0x49, 0x61, 0x8e, 0x43, 0x2b, 0xc8, 0x36, 0xc4, 0x65, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x16, 0xe1, 0xbf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xdd, 0xf5, 0x8e, 0xc7, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x8b, 0xf0, 0x5f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x20, 0x6d, 0xce, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x90, 0xee, 0x3a, 0x9e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0xc8, 0x7d, 0x1d, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0x1c, 0x04, 0x0b, 0x92, 0x01, 0xc1, 0xd5, 0x77, 0x10, 0xf0, 0xfe, 0x07, 0xc3, 0x2c, 0xfc, 0x78, 0x7c, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xc1, 0x72, 0x5d, 0x98, 0x83, 0x73, 0x1f, 0xed, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x15, 0xa3, 0x26, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x64, 0xf1, 0xe9, 0xe3, 0xd0, 0xc1, 0x7a, 0x52, 0x98, 0xe3, 0xd0, 0x71, 0xe8, 0x60, 0xd5, 0x0f, 0xcc, 0x0a, 0xbf, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0x1c, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0xe9, 0x3a, 0xac, 0xd0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0x7a, 0x94, 0xcf, 0xf0, 0x1b, 0xcf, 0x17, 0x07, 0xd9, 0x86, 0xb8, 0x0c, 0x82, 0x05, 0xc9, 0x80, 0xa1, 0xde, 0x75, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xe2, 0xe0, 0x61, 0xb8, 0x3e, 0x08, 0x16, 0x24, 0x1b, 0x2c, 0xb6, 0x15, 0x39, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x86, 0x18, 0x6e, 0x90, 0x16, 0x9a, 0x7d, 0x48, 0x1d, 0x1c, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xd2, 0x54, 0x87, 0x6c, 0xc5, 0x71, 0x68, 0xc5, 0x41, 0x61, 0x68, 0x1e, 0x04, 0x0b, 0x92, 0x01, 0xc1, 0xdb, 0x75, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xa7, 0xde, 0x61, 0x85, 0xf6, 0x38, 0xb4, 0x06, 0xe9, 0x4f, 0xcf, 0x83, 0x60, 0x83, 0x35, 0x01, 0x32, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0xc0, 0xb9, 0x77, 0x58, 0xa1, 0x3d, 0x0e, 0xad, 0x41, 0xda, 0x4b, 0xf5, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x3e, 0x48, 0x1f, 0x27, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x34, 0xe5, 0x3a, 0x64, 0x2b, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0xe2, 0x20, 0xe5, 0xb7, 0xe2, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0x78, 0x0d, 0x92, 0x87, 0x98, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x01, 0xa1, 0xdf, 0x75, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xce, 0xc1, 0xb0, 0xdb, 0x3d, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x7e, 0x90, 0x42, 0x9c, 0x30, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x64, 0x60, 0xd6, 0x0e, 0xd9, 0x8a, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0x40, 0xe5, 0x3a, 0x64, 0x2b, 0x0e, 0x96, 0xbe, 0xc8, 0x1c, 0x62, 0x78, 0x1c, 0x3a, 0x1e, 0x1f, 0x87, 0x0e, 0x8d, 0x5a, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x77, 0xab, 0x1b, 0x5b, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x82, 0x6c, 0x43, 0x5c, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x11, 0xfe, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x14, 0xa4, 0x89, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x83, 0xe5, 0xba, 0x30, 0x07, 0xc7, 0xbd, 0xde, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x11, 0xfe, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x14, 0x70, 0x8b, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0xb0, 0x5c, 0x17, 0xe6, 0xe0, 0xa8, 0xa5, 0x3b, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xc5, 0xa8, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0x6b, 0x84, 0x3a, 0x8e, 0x43, 0x07, 0xeb, 0x49, 0x61, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x16, 0xe1, 0xbf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0xc9, 0xaf, 0x38, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0x06, 0xcb, 0x75, 0x61, 0x06, 0xc9, 0x40, 0xbd, 0x3b, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x31, 0x6a, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x41, 0x82, 0xc7, 0xf3, 0x71, 0xe8, 0x60, 0x3d, 0x29, 0xcc, 0x71, 0xe8, 0x60, 0xd5, 0x0f, 0xcc, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x45, 0xf8, 0x2f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0x50, 0x24, 0x2a, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xc1, 0x72, 0x5d, 0x98, 0x83, 0xf3, 0x13, 0xed, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x15, 0xa3, 0x26, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0x24, 0x48, 0x42, 0x1f, 0x87, 0x0e, 0xd6, 0x93, 0xc2, 0x1c, 0x87, 0x0e, 0x56, 0xfd, 0xc0, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x84, 0xff, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x65, 0x85, 0xe2, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xc1, 0xfa, 0x93, 0x98, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2b, 0x46, 0x4d, 0x0e, 0x16, 0x1f, 0xbd, 0x1c, 0xac, 0x27, 0x85, 0x39, 0x0e, 0x1d, 0xac, 0xfa, 0x81, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x08, 0xff, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0x4a, 0x98, 0xc4, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x58, 0xae, 0x0b, 0x73, 0x90, 0xfc, 0x1b, 0x3d, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xc5, 0xa8, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0x4b, 0x6d, 0x0a, 0x8e, 0x43, 0x07, 0xeb, 0x49, 0x61, 0x8e, 0x43, 0x07, 0xab, 0x7e, 0x60, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0xc2, 0x7f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0xa2, 0x17, 0x71, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x0d, 0x96, 0xeb, 0xc2, 0x1c, 0x9c, 0x7f, 0xc2, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x18, 0x35, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0x20, 0x6d, 0x81, 0xfa, 0x38, 0x74, 0xb0, 0x9e, 0x14, 0xe6, 0x38, 0x74, 0xb0, 0xea, 0x07, 0xe6, 0x60, 0xbd, 0x6c, 0xcc, 0xc1, 0xaa, 0x1f, 0x98, 0x05, 0xc1, 0x06, 0xcb, 0xef, 0x61, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x24, 0x57, 0x0e, 0xc9, 0xa5, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0x22, 0x28, 0x66, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x1f, 0xac, 0xa4, 0x8a, 0x39, 0x58, 0x4f, 0x0a, 0x73, 0x1c, 0x5a, 0x41, 0xb0, 0xc1, 0xf2, 0x7b, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x61, 0x39, 0x24, 0x97, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x8a, 0xa0, 0x98, 0x41, 0xb0, 0xc1, 0xda, 0xad, 0x98, 0x83, 0xf5, 0xa4, 0x30, 0xc7, 0xa1, 0x41, 0xb6, 0x21, 0x2e, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x11, 0xfe, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x65, 0x5a, 0x33, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0xbf, 0x87, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xf8, 0x73, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xac, 0x87, 0x84, 0x39, 0x38, 0xd0, 0xdc, 0x1e, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x83, 0xb5, 0x1c, 0x31, 0x07, 0xeb, 0x49, 0x61, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x45, 0xf8, 0x2f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0x50, 0x02, 0x45, 0x1e, 0x2c, 0x3a, 0x9f, 0x39, 0x0e, 0x1d, 0x2c, 0xf4, 0x9d, 0x39, 0x58, 0xf5, 0x03, 0x33, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x2c, 0xc2, 0x7f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0xe2, 0x35, 0x72, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0xb0, 0x1e, 0x12, 0x66, 0x90, 0x0c, 0x08, 0xfe, 0xaf, 0xe3, 0xf1, 0x71, 0xe8, 0x60, 0x25, 0x30, 0xcc, 0xc1, 0xaa, 0x1f, 0x98, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x8b, 0xf0, 0x5f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1c, 0xea, 0x6d, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0x06, 0xcb, 0x75, 0x61, 0x06, 0xc9, 0x40, 0xac, 0x8e, 0xc7, 0xc7, 0xa1, 0x83, 0x55, 0x3f, 0x30, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x96, 0xdf, 0xc3, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x6b, 0x88, 0xe1, 0x86, 0x18, 0x6e, 0x88, 0xe1, 0x61, 0xeb, 0x60, 0x10, 0x2c, 0x0e, 0xbb, 0x21, 0x11, 0xb0, 0x06, 0xe5, 0xdf, 0xe3, 0x20, 0x58, 0x90, 0x0c, 0xc4, 0xed, 0x20, 0xe0, 0xfd, 0x0f, 0x8d, 0x5a, 0x86, 0x5d, 0xb8, 0x0d, 0x06, 0xbe, 0xf1, 0x04, 0x01, 0x5f, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x0c, 0x25, 0xab, 0x41, 0xb4, 0x20, 0x1c, 0x04, 0x1b, 0x8c, 0xd8, 0xd6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x12, 0x4c, 0xfc, 0x21, 0x6b, 0x77, 0x1c, 0x3a, 0x1e, 0x0f, 0xbb, 0x70, 0x1b, 0x2c, 0x40, 0x63, 0x38, 0x58, 0x17, 0x46, 0xb3, 0x20, 0x19, 0x32, 0x88, 0x36, 0x18, 0x4a, 0x56, 0x83, 0x68, 0xc1, 0x74, 0x10, 0x6c, 0x30, 0x62, 0x5b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0x74, 0xa3, 0x39, 0xf4, 0x10, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0x5d, 0xb8, 0x0d, 0x56, 0x75, 0x2f, 0x1c, 0xac, 0x0b, 0xa3, 0x59, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x0c, 0x25, 0xab, 0x41, 0xb4, 0xa0, 0x76, 0x10, 0x6c, 0x30, 0x62, 0x5b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0x74, 0xa3, 0x39, 0x34, 0x2e, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0xb7, 0xc1, 0x1a, 0x6d, 0x85, 0x83, 0x75, 0x61, 0x34, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x70, 0x77, 0x10, 0x6c, 0x30, 0x62, 0x5b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0x74, 0xa3, 0x39, 0x08, 0x7b, 0xea, 0xe3, 0xd0, 0xc1, 0xd8, 0xb1, 0x3a, 0xbe, 0x1d, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x02, 0x38, 0x98, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcb, 0x05, 0x61, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x4c, 0x84, 0x19, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x11, 0xfe, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0xd1, 0x56, 0x38, 0x58, 0x64, 0x12, 0x73, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x62, 0xd4, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0xb0, 0xb0, 0x9b, 0xe6, 0x38, 0x74, 0xb0, 0x9e, 0x14, 0x66, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x84, 0xff, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xab, 0xba, 0x17, 0x0e, 0x16, 0x99, 0xc4, 0x1c, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x18, 0x35, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x2c, 0xf7, 0xa7, 0x39, 0x0e, 0x1d, 0xac, 0x27, 0x85, 0x39, 0x58, 0xf5, 0x03, 0x33, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x2c, 0xc2, 0x7f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0x05, 0x68, 0x0c, 0x07, 0x8b, 0x4c, 0x62, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x56, 0x8c, 0x9a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x56, 0x89, 0xd4, 0x1c, 0x87, 0x0e, 0xd6, 0x93, 0xc2, 0x1c, 0xac, 0xfa, 0x81, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x16, 0xe1, 0xbf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0xd6, 0x34, 0x38, 0x58, 0x64, 0x12, 0x73, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x62, 0xd4, 0xe4, 0x60, 0xb5, 0xf9, 0xcb, 0xc1, 0x7a, 0x52, 0x98, 0x83, 0x55, 0x3f, 0x30, 0xc7, 0xa1, 0x83, 0xd5, 0x8c, 0x26, 0xc7, 0xa1, 0x83, 0x55, 0x3f, 0x30, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x96, 0xdf, 0xc3, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x20, 0x37, 0x5c, 0xdc, 0xa0, 0x60, 0x78, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0x73, 0xed, 0x90, 0xad, 0x38, 0x34, 0x6a, 0x39, 0x1e, 0x0f, 0xbf, 0xf1, 0xfc, 0xe0, 0xb4, 0x82, 0x7b, 0x1c, 0x3a, 0x58, 0xf5, 0x03, 0x33, 0xc8, 0x36, 0xc4, 0x65, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x45, 0xf8, 0x2f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0x50, 0xfe, 0x4b, 0x0e, 0xbf, 0xf1, 0xfc, 0xe0, 0xa8, 0xa5, 0x7b, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x08, 0xff, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0x8a, 0xb9, 0xc9, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xe6, 0x7a, 0xc7, 0xe3, 0xe3, 0xd0, 0xc1, 0xaa, 0x1f, 0x98, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x8b, 0xf0, 0x5f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xa0, 0x20, 0xa3, 0x1c, 0x7e, 0xe3, 0xf9, 0xc1, 0x08, 0x89, 0x3a, 0x0e, 0x1d, 0xac, 0xfa, 0x81, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x08, 0xff, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0x4a, 0xf3, 0xc9, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xb4, 0xde, 0xf1, 0xf8, 0x38, 0x74, 0xb0, 0xea, 0x07, 0x66, 0x41, 0xb6, 0x21, 0x2e, 0x83, 0x60, 0x83, 0x05, 0x8a, 0x31, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x5a, 0x87, 0x15, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0x0f, 0x52, 0x57, 0x7e, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x50, 0x75, 0x8e, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xac, 0x87, 0x84, 0x19, 0x24, 0x03, 0xef, 0x7f, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0x05, 0xd9, 0x86, 0xb8, 0x0c, 0x82, 0x05, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0xd8, 0x85, 0xdb, 0xe0, 0xa4, 0xb7, 0x3b, 0x08, 0x36, 0x18, 0x25, 0x27, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xa1, 0x87, 0xd0, 0x71, 0x68, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x4c, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x6d, 0xb0, 0xb0, 0x9b, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x71, 0x98, 0x70, 0xb0, 0xe2, 0xc1, 0xe6, 0x38, 0x34, 0x08, 0x16, 0x7e, 0x83, 0x43, 0x93, 0xee, 0xc1, 0x39, 0xa3, 0xfe, 0x60, 0xd4, 0x67, 0x1c, 0x4e, 0xb1, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0xd4, 0xf5, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xd8, 0x90, 0xaa, 0x39, 0x18, 0xc7, 0x21, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0x53, 0xef, 0x78, 0x7e, 0x1c, 0x1a, 0x04, 0x1b, 0xac, 0x19, 0x79, 0x39, 0x58, 0x22, 0xf9, 0x32, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xa9, 0xeb, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x21, 0x55, 0x73, 0x90, 0x1c, 0x78, 0x71, 0x3c, 0x3e, 0x58, 0x00, 0x65, 0x73, 0x1c, 0x3a, 0x58, 0xa3, 0xf2, 0x72, 0xb0, 0xb8, 0xca, 0x66, 0x90, 0x6d, 0x88, 0xcb, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x45, 0xf8, 0x2f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0x50, 0x44, 0x4a, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xc1, 0x72, 0x5d, 0x98, 0x83, 0x53, 0x18, 0xee, 0xc1, 0x42, 0xdf, 0x99, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x45, 0xf8, 0x2f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x16, 0x1b, 0xa4, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x16, 0x52, 0xc4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x1b, 0xae, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x18, 0x35, 0x39, 0x58, 0x25, 0xee, 0x72, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x90, 0x22, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xc5, 0xa8, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0x6b, 0x51, 0x1b, 0x8e, 0x43, 0xc7, 0xa1, 0x83, 0x55, 0x3f, 0x30, 0xc7, 0xa1, 0x83, 0x55, 0x3f, 0x30, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x1f, 0xa4, 0x06, 0xf9, 0x1c, 0xac, 0xfa, 0x81, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x08, 0xff, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0xca, 0x2c, 0xc8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xc1, 0x72, 0x5d, 0x98, 0x83, 0x64, 0x06, 0x8b, 0xe3, 0xd0, 0xc1, 0xaa, 0x1f, 0x98, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x8b, 0xf0, 0x5f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xa0, 0x68, 0x86, 0x1c, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x2c, 0xd7, 0x85, 0x19, 0x24, 0x03, 0x53, 0x75, 0x3c, 0x3e, 0x0e, 0x1d, 0xac, 0xfa, 0x81, 0x59, 0x10, 0x6c, 0x30, 0xe0, 0x76, 0x17, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x18, 0xec, 0xc6, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0x00, 0xe8, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xc5, 0x2a, 0x36, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x84, 0x01, 0x84, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xc7, 0x5c, 0xf1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x04, 0xc3, 0x7d, 0x1c, 0x3a, 0x0e, 0x6d, 0x30, 0xf0, 0x8d, 0x37, 0xf4, 0x10, 0xda, 0x38, 0x34, 0x08, 0x36, 0x18, 0x59, 0xaf, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x28, 0x27, 0xae, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x8e, 0x2e, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x5c, 0x53, 0x3c, 0x41, 0x71, 0x3f, 0x0e, 0x1d, 0x87, 0x26, 0xa8, 0xee, 0xc7, 0xa1, 0x43, 0xea, 0xe0, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x7e, 0x0f, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xa0, 0xa8, 0x1c, 0x92, 0x4b, 0xc3, 0x6f, 0x3c, 0x3f, 0x58, 0x2c, 0x14, 0x73, 0x1c, 0x1a, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x3f, 0xf7, 0x1e, 0xae, 0xae, 0xe3, 0xf1, 0x0a, 0x82, 0xc5, 0x39, 0x58, 0x74, 0x4a, 0xb2, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0x80, 0xd2, 0xbf, 0xeb, 0x90, 0x5c, 0x3a, 0x74, 0xd0, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xc3, 0xb9, 0x7e, 0x88, 0xe6, 0x71, 0x68, 0xd8, 0x0d, 0x42, 0xcb, 0x7d, 0x43, 0x0c, 0x37, 0xc4, 0xf0, 0x20, 0x70, 0xe3, 0x8f, 0xc7, 0x2b, 0x08, 0x36, 0x58, 0x82, 0x76, 0xb3, 0x38, 0x08, 0x36, 0x58, 0xc4, 0x76, 0x33, 0xec, 0x06, 0xa1, 0xe5, 0xbe, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x6c, 0x30, 0x7c, 0x87, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x1c, 0xbc, 0x0d, 0x78, 0xf7, 0x4a, 0xc8, 0x40, 0x4a, 0xc8, 0xfa, 0x0d, 0x8a, 0x43, 0x8d, 0x0d, 0xc6, 0x85, 0xd9, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x1b, 0x72, 0xdf, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xe0, 0xf3, 0xe0, 0xf9, 0xe0, 0xee, 0xe0, 0xf4, 0xe0, 0xe1, 0xe0, 0xf8, 0xa0, 0x60, 0xf0, 0x72, 0x70, 0x79, 0x70, 0x79, 0xf0, 0xf7, 0xa0, 0xe0, 0xd9, 0x3c, 0xbe, 0x1d, 0x8f, 0x0f, 0xa7, 0xd8, 0x41, 0xe0, 0xc6, 0x1f, 0x8f, 0x17, 0x04, 0x1b, 0x2c, 0x41, 0xbb, 0x59, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0x60, 0x1d, 0x92, 0x4b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x16, 0x84, 0x3e, 0xa4, 0xe1, 0x0e, 0xf9, 0xda, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0x04, 0xed, 0x66, 0x71, 0x10, 0x2c, 0x48, 0x06, 0x8a, 0xd6, 0x21, 0xb9, 0x74, 0xb0, 0xe2, 0xf8, 0xe6, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x82, 0x76, 0xb3, 0x38, 0x08, 0x16, 0x04, 0x1b, 0xc6, 0xe5, 0x60, 0xf1, 0xdc, 0xcd, 0x20, 0x58, 0x10, 0x6c, 0xb0, 0xc0, 0xd0, 0xe5, 0xb0, 0x51, 0x3b, 0xec, 0xc2, 0x6d, 0x30, 0xca, 0x4f, 0x0e, 0x86, 0x66, 0xd7, 0xc2, 0x6e, 0xd8, 0x35, 0xd8, 0x90, 0x98, 0xda, 0x10, 0xc3, 0x0d, 0x31, 0x3c, 0x74, 0x52, 0xdb, 0x70, 0xb4, 0x0f, 0x82, 0x0d, 0x8a, 0xcd, 0xab, 0x83, 0x81, 0x5e, 0x76, 0x3c, 0x5e, 0x05, 0xc1, 0x06, 0x6b, 0x98, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x48, 0xf4, 0x83, 0x3e, 0x0e, 0xad, 0x20, 0xd8, 0x60, 0x0d, 0xd3, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0x49, 0xce, 0xd1, 0xc7, 0xa1, 0x15, 0x04, 0x1b, 0xac, 0x61, 0x1a, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0x20, 0xed, 0xa5, 0xfa, 0x38, 0xb4, 0x82, 0x60, 0x83, 0x35, 0x4c, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x34, 0x20, 0xe6, 0xe3, 0xd0, 0xc1, 0x12, 0xc5, 0x93, 0x05, 0xc1, 0x06, 0x6b, 0x98, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xe9, 0x67, 0x35, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0x6b, 0x98, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xe9, 0x40, 0x24, 0xc7, 0xa1, 0x41, 0xb0, 0xc1, 0x1a, 0xa6, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x41, 0xf2, 0x38, 0xc9, 0x71, 0x68, 0x41, 0xb0, 0xc1, 0x1a, 0xa6, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0xf0, 0xfe, 0x38, 0xb4, 0x82, 0x60, 0x83, 0x35, 0x4c, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x64, 0x4b, 0xe6, 0xe3, 0xd0, 0x0a, 0x82, 0x0d, 0xd6, 0x30, 0x8d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x90, 0x40, 0x06, 0x7d, 0x1c, 0x1a, 0x04, 0x1b, 0xac, 0x61, 0x1a, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x24, 0x38, 0xd1, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0xac, 0x61, 0x1a, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0x20, 0xad, 0x3a, 0xfa, 0x38, 0xb4, 0x82, 0x60, 0x83, 0x35, 0x4c, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x8f, 0xe1, 0xdd, 0x71, 0x68, 0x41, 0xb0, 0xc1, 0x1a, 0xa6, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0x86, 0x6b, 0xd5, 0x71, 0x68, 0x10, 0x6c, 0xb0, 0x86, 0x69, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0x84, 0x94, 0xfb, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0x35, 0x4c, 0x23, 0x07, 0x29, 0xb1, 0x27, 0x2b, 0x08, 0x36, 0x58, 0xc3, 0x34, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x41, 0x4a, 0x9f, 0xf5, 0x71, 0x68, 0x41, 0xb0, 0xc1, 0x1a, 0xa6, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0x70, 0xf0, 0x38, 0xb4, 0xc1, 0xda, 0xd1, 0x93, 0x41, 0xb0, 0xc1, 0x1a, 0xa6, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0xf0, 0xed, 0x38, 0xb4, 0x20, 0xd8, 0x60, 0x0d, 0xd3, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0x59, 0x99, 0xe4, 0x38, 0x34, 0x08, 0x36, 0x58, 0xc3, 0x34, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x58, 0xe5, 0x79, 0x72, 0x1c, 0x5a, 0x10, 0x6c, 0xb0, 0x86, 0x69, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0xe4, 0x0e, 0xe6, 0xe3, 0xd0, 0x20, 0xd8, 0x60, 0x0d, 0xd3, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x63, 0xb8, 0x77, 0x1c, 0x5a, 0x10, 0x6c, 0xb0, 0x86, 0x69, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x31, 0x34, 0x1c, 0x87, 0x56, 0x10, 0x6c, 0xb0, 0x86, 0x69, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x31, 0x74, 0x1c, 0x87, 0x56, 0x10, 0x6c, 0xb0, 0x86, 0x69, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x90, 0xe2, 0x21, 0x73, 0x1c, 0x1a, 0x04, 0x1b, 0xac, 0x61, 0x1a, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x2c, 0x26, 0x3c, 0x39, 0x0e, 0x0d, 0x82, 0x0d, 0xd6, 0x30, 0x8d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x90, 0x7e, 0x6a, 0x71, 0x1c, 0x5a, 0x10, 0x6c, 0xb0, 0x86, 0x69, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x31, 0x94, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0xac, 0x61, 0x1a, 0x39, 0x48, 0xde, 0x3a, 0x19, 0x04, 0x1b, 0xac, 0x61, 0x1a, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0c, 0xdf, 0x8f, 0x43, 0x0b, 0x82, 0x35, 0xc4, 0x70, 0x10, 0x2c, 0x1e, 0x2c, 0x37, 0x25, 0x39, 0x1e, 0x2f, 0x0e, 0x82, 0x0d, 0x0a, 0x6a, 0xb1, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xd6, 0x7e, 0x8f, 0x6f, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0xe3, 0xf1, 0x0a, 0xbf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0xe1, 0x17, 0x04, 0x1b, 0x14, 0xd4, 0x62, 0x8b, 0xc3, 0x6e, 0xd8, 0x35, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xea, 0xdb, 0x21, 0x5b, 0x71, 0x68, 0xd4, 0x32, 0xec, 0x82, 0x60, 0x41, 0x32, 0xa0, 0x78, 0xef, 0x3b, 0x08, 0x78, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x81, 0x89, 0x3d, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x1d, 0x94, 0xd5, 0x70, 0xc7, 0xe3, 0xe3, 0xd0, 0x82, 0x60, 0x41, 0x32, 0x20, 0xdc, 0xbb, 0x0e, 0xd9, 0x8a, 0x43, 0xa3, 0x96, 0x83, 0xe5, 0x48, 0x39, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0xb8, 0xc1, 0x58, 0x15, 0x38, 0xa4, 0x96, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xb7, 0x85, 0xcd, 0xad, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x85, 0x5f, 0x10, 0x6c, 0xb0, 0x04, 0xed, 0x66, 0x71, 0xf8, 0x05, 0xc1, 0x06, 0x05, 0xb5, 0xd8, 0xe2, 0x20, 0xd8, 0xa0, 0x64, 0xb7, 0x19, 0x76, 0x83, 0xd0, 0x72, 0xdf, 0x38, 0xb4, 0x41, 0x48, 0x81, 0x6f, 0x88, 0xe1, 0x86, 0x64, 0xc7, 0x41, 0x18, 0xc8, 0x1f, 0x8f, 0x0f, 0x16, 0xb0, 0xe5, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x3f, 0xf6, 0xc6, 0x46, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0x41, 0xb0, 0xb8, 0x21, 0xb1, 0x79, 0x30, 0xc6, 0xd0, 0x16, 0x07, 0xc1, 0xe2, 0x06, 0x8b, 0x4e, 0x49, 0x0e, 0x16, 0x9d, 0x92, 0x2c, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xac, 0x77, 0x1d, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xce, 0x46, 0xcf, 0x1b, 0x04, 0x26, 0xf6, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x8c, 0xcb, 0x20, 0xd8, 0x90, 0xb5, 0x3b, 0x58, 0xfa, 0x22, 0x73, 0x1c, 0x1a, 0x04, 0x1b, 0xf2, 0xb5, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0x08, 0x16, 0x24, 0x83, 0xb2, 0x43, 0xb6, 0xe2, 0x60, 0x7c, 0x18, 0x1d, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x1f, 0x8f, 0x8f, 0xc7, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x26, 0xec, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x6c, 0xb8, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xb4, 0xd9, 0xe5, 0xd0, 0x41, 0xe3, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x99, 0xb0, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xd2, 0x66, 0x97, 0x43, 0x1a, 0xee, 0x38, 0x74, 0xb0, 0x46, 0xe5, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xc1, 0xc7, 0xbc, 0x21, 0x86, 0x1b, 0x14, 0xee, 0x63, 0x83, 0x64, 0xc8, 0x41, 0xe8, 0xad, 0x1f, 0xdf, 0x8e, 0xc7, 0x0b, 0xbf, 0x20, 0xd8, 0x60, 0x09, 0xda, 0xcd, 0xe2, 0xf0, 0x0b, 0x82, 0x0d, 0x0a, 0x6a, 0xb1, 0xc5, 0x41, 0xb0, 0x41, 0xc9, 0x6e, 0x33, 0xec, 0x06, 0xa1, 0xe5, 0xbe, 0x71, 0x68, 0x83, 0x90, 0x02, 0xdf, 0x10, 0xc3, 0x35, 0x24, 0x3b, 0x0e, 0x02, 0x37, 0xfe, 0x20, 0x0c, 0xe4, 0x8f, 0xc7, 0x07, 0x0b, 0xd8, 0x72, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x9f, 0xa3, 0x0b, 0x3b, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x15, 0xa3, 0x39, 0x8b, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x48, 0x06, 0x04, 0x6f, 0xd7, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x6c, 0xb8, 0x1e, 0xf2, 0xb5, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xab, 0x77, 0x74, 0x0e, 0xd2, 0x9f, 0x89, 0x0e, 0xd6, 0xa8, 0xbc, 0x1c, 0x8f, 0x37, 0x58, 0x5f, 0x4a, 0x32, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x50, 0x50, 0x8b, 0x2d, 0x0e, 0x82, 0x0d, 0x7b, 0x85, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x46, 0x3e, 0xf9, 0x1a, 0xe2, 0xbf, 0x21, 0x86, 0x07, 0xa5, 0xed, 0xcd, 0xb0, 0x0b, 0xbb, 0xc1, 0x20, 0xe0, 0xd8, 0x10, 0xc3, 0x61, 0x17, 0x76, 0xe1, 0x36, 0x48, 0xd4, 0x95, 0x3e, 0xb4, 0x00, 0x3a, 0xac, 0x6f, 0x1e, 0xd2, 0xb9, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0x7d, 0x3b, 0x08, 0x78, 0xff, 0x83, 0xf1, 0x61, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf7, 0x07, 0xc1, 0x06, 0xe7, 0x10, 0xee, 0x83, 0x34, 0x60, 0xe9, 0x41, 0xb4, 0x60, 0xbe, 0x20, 0x58, 0x90, 0x0c, 0x04, 0xea, 0x20, 0xe0, 0xfd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x84, 0x7c, 0xf6, 0x21, 0xd9, 0x71, 0x1c, 0x3a, 0x34, 0xfc, 0x3a, 0x1e, 0x1f, 0xdf, 0x8e, 0xc7, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x06, 0xe1, 0x6c, 0x7f, 0xb0, 0xe8, 0x94, 0x64, 0x71, 0x10, 0x6c, 0x50, 0x50, 0x8b, 0x2d, 0x0e, 0x82, 0x0d, 0x4a, 0x76, 0x9b, 0x61, 0x37, 0x08, 0x2d, 0xf7, 0x8d, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x21, 0xd9, 0x71, 0x70, 0x38, 0xa7, 0x1f, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0xa1, 0x85, 0xe4, 0x86, 0x68, 0x6e, 0x88, 0xe1, 0x06, 0x21, 0x00, 0x7e, 0x30, 0x32, 0x7b, 0x8f, 0xc7, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x2c, 0x41, 0xbb, 0x59, 0x1c, 0x04, 0x1b, 0x2c, 0x75, 0x7d, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x20, 0x73, 0xfd, 0xbd, 0xef, 0x20, 0xe0, 0xfd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x83, 0x21, 0x1e, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x6c, 0x93, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xb4, 0x9a, 0x1f, 0xf2, 0xb5, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0x74, 0x3c, 0x3e, 0xe4, 0x6b, 0x8f, 0x43, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x2c, 0x37, 0x25, 0x59, 0x1c, 0x04, 0x0b, 0x92, 0x01, 0xc5, 0x7a, 0xd7, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x78, 0x48, 0x6c, 0x1e, 0x8f, 0x0f, 0xa9, 0x9a, 0xe3, 0xd0, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x9c, 0x23, 0x7b, 0x17, 0x87, 0xdd, 0x20, 0xe8, 0xf5, 0x17, 0x76, 0x83, 0x11, 0x8b, 0xb5, 0x20, 0xd8, 0xe0, 0x18, 0xcd, 0x7c, 0x48, 0xb4, 0x0e, 0x82, 0x0d, 0x8e, 0xd1, 0xcc, 0x07, 0x63, 0x34, 0x62, 0xd8, 0x0d, 0x46, 0x2c, 0xd6, 0x82, 0x60, 0x83, 0x63, 0x34, 0xf3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x71, 0x61, 0x76, 0xc8, 0xd7, 0x1e, 0x87, 0x06, 0xc1, 0x06, 0xc7, 0x68, 0xe6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xe3, 0xc2, 0xec, 0xd0, 0x43, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x0d, 0x31, 0x1c, 0x04, 0x8b, 0xc3, 0x6e, 0x10, 0x5c, 0xd8, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xfa, 0x43, 0x62, 0xe6, 0x78, 0x3c, 0x08, 0x16, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0x06, 0xa3, 0xd5, 0xfc, 0x90, 0x98, 0x1a, 0x76, 0x41, 0xb0, 0x41, 0x60, 0x62, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0x07, 0x25, 0x0e, 0x8a, 0x43, 0x8d, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0xf2, 0x1c, 0x60, 0xd8, 0x0d, 0x46, 0xc7, 0xfa, 0xc2, 0x2e, 0x08, 0x16, 0x24, 0x83, 0x6b, 0x07, 0xc3, 0x51, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x98, 0xb0, 0x3a, 0x18, 0x3f, 0x5d, 0xc7, 0xa1, 0x35, 0x64, 0xed, 0x36, 0x0e, 0x1d, 0x3a, 0x86, 0x6d, 0x10, 0x52, 0xe0, 0x1b, 0x04, 0x59, 0xfc, 0x86, 0xac, 0xdd, 0x06, 0x83, 0x35, 0xf6, 0xd0, 0x31, 0xec, 0x70, 0x8a, 0x0d, 0x82, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0x41, 0xe9, 0x7d, 0x3c, 0x1e, 0x76, 0x83, 0xd1, 0xb1, 0xbe, 0xb0, 0x1b, 0xac, 0xc2, 0xda, 0x59, 0x43, 0xd6, 0x6e, 0x43, 0x0f, 0xa1, 0xe3, 0xd0, 0x06, 0x21, 0x05, 0xbe, 0x86, 0xac, 0xdd, 0x86, 0x1e, 0x42, 0x07, 0x41, 0x16, 0x7f, 0x30, 0x58, 0x63, 0x0f, 0xa7, 0xd8, 0xf1, 0xed, 0xf8, 0x36, 0xfc, 0x82, 0x60, 0x83, 0x82, 0x5a, 0x6c, 0x71, 0xd8, 0x0d, 0xbb, 0x06, 0x0b, 0x82, 0x0d, 0x96, 0xca, 0xe9, 0x1c, 0x1a, 0xb5, 0x0c, 0x82, 0xc5, 0x61, 0x37, 0x18, 0x9b, 0x9c, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0x7d, 0x3b, 0x18, 0xef, 0x3a, 0x07, 0xc3, 0x2c, 0x7c, 0xd8, 0x85, 0x5d, 0xd8, 0x85, 0x1e, 0x8c, 0x09, 0xab, 0xc3, 0xfa, 0xe6, 0xc2, 0x6d, 0x30, 0x26, 0xac, 0x0e, 0x3d, 0x84, 0x86, 0x5d, 0x10, 0x6c, 0x90, 0x7c, 0x9d, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x02, 0x68, 0x82, 0x81, 0x3f, 0x0e, 0x2d, 0xec, 0x82, 0x60, 0x83, 0x33, 0x5b, 0xf6, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x0b, 0xa0, 0x83, 0x95, 0x6e, 0x34, 0xc7, 0xa1, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x18, 0x59, 0x56, 0x07, 0xc3, 0x2c, 0x7c, 0xd8, 0x05, 0xc1, 0x06, 0x81, 0x89, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x02, 0xe8, 0xa0, 0x84, 0x91, 0x38, 0x0e, 0x6d, 0x50, 0x3c, 0x0d, 0x1c, 0x14, 0x47, 0x2a, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0xdc, 0x60, 0xac, 0x0a, 0x6c, 0xc8, 0x56, 0x74, 0x3c, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x7f, 0x8e, 0xae, 0xec, 0x3e, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0xbf, 0x20, 0x58, 0x9c, 0x0d, 0x56, 0x79, 0xe6, 0x1c, 0x2c, 0x3a, 0x25, 0x59, 0x1c, 0x7e, 0x41, 0xb0, 0x41, 0x41, 0x2d, 0xb6, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x85, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0xee, 0xaf, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x43, 0xc3, 0xaf, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xf8, 0x36, 0x08, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x31, 0xb0, 0x70, 0x30, 0x3e, 0x8c, 0x86, 0xdd, 0x20, 0xb4, 0xdc, 0xd7, 0x90, 0xaa, 0xd9, 0x20, 0xa4, 0xc0, 0x37, 0xc4, 0x70, 0x83, 0xd1, 0x6a, 0x7e, 0x10, 0x98, 0xd8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x30, 0x3f, 0x08, 0x03, 0xf9, 0x83, 0xc2, 0x83, 0xef, 0xf8, 0x76, 0x30, 0xd2, 0xb4, 0x06, 0xc1, 0x82, 0x64, 0x83, 0xb5, 0xeb, 0x14, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x9a, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x2b, 0x08, 0x36, 0x08, 0x1e, 0xee, 0x83, 0x61, 0x16, 0x7e, 0x10, 0x02, 0xe0, 0x8b, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0xa4, 0x0e, 0xc6, 0xbb, 0xce, 0xc1, 0x51, 0xc5, 0x79, 0x43, 0x0c, 0x17, 0x04, 0x1b, 0x94, 0x34, 0x0d, 0x07, 0xa7, 0xdf, 0xfa, 0x83, 0xb3, 0xfa, 0xf9, 0xf1, 0xf8, 0x38, 0x74, 0x3c, 0x3e, 0x58, 0xc0, 0x96, 0x73, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xfe, 0x1c, 0x5d, 0x9a, 0x7c, 0x48, 0x2d, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0x2b, 0x46, 0x73, 0x16, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x20, 0xf1, 0x32, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xf6, 0xae, 0x43, 0x72, 0xe9, 0x90, 0x68, 0x3d, 0x58, 0xa3, 0xf2, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0xb0, 0x62, 0x34, 0x67, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0x40, 0xef, 0x3a, 0x24, 0x97, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x30, 0x2e, 0x83, 0x60, 0x43, 0xd6, 0xee, 0x60, 0x89, 0xe4, 0xcb, 0x71, 0x68, 0x10, 0x6c, 0xc8, 0xd7, 0x1e, 0xac, 0x4d, 0x77, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x0a, 0x6a, 0xb1, 0xc5, 0x61, 0x37, 0xec, 0x1a, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xf5, 0xed, 0x90, 0x5c, 0x3a, 0x34, 0x6a, 0x19, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0xa0, 0x0e, 0xc9, 0xa5, 0x83, 0xd2, 0xbd, 0x6b, 0xe3, 0xd0, 0x86, 0x18, 0x6e, 0xe8, 0x21, 0x74, 0xb0, 0xc4, 0x6c, 0xe7, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x15, 0x04, 0x8b, 0x1b, 0x9c, 0x26, 0x7b, 0x3b, 0x58, 0xd5, 0xaf, 0x33, 0xfc, 0x82, 0x64, 0x60, 0x5d, 0xef, 0x78, 0x7e, 0x7c, 0x5b, 0x1c, 0x7e, 0x41, 0xb0, 0x41, 0x41, 0x2d, 0xb6, 0x38, 0x08, 0x36, 0x28, 0xd9, 0x6d, 0x86, 0xdd, 0x20, 0xb4, 0xdc, 0x37, 0x0e, 0x6d, 0x10, 0x52, 0xe0, 0x1b, 0x62, 0xb8, 0x20, 0xd8, 0x90, 0xec, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x59, 0xbb, 0x83, 0xb5, 0x3b, 0x08, 0x87, 0x4e, 0x6a, 0xc7, 0xa1, 0x83, 0x30, 0x90, 0x3f, 0x1e, 0x1f, 0x2c, 0x60, 0xcb, 0x39, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x1f, 0xad, 0x4c, 0xae, 0x3c, 0xa4, 0x96, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x58, 0x82, 0x76, 0xb3, 0x38, 0x08, 0x36, 0x58, 0xea, 0xfa, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x64, 0x83, 0xb5, 0xeb, 0x14, 0x07, 0x01, 0xef, 0x7f, 0xb0, 0x14, 0x59, 0xe7, 0x78, 0x7c, 0xc8, 0xd7, 0x1e, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xf8, 0x05, 0xc1, 0x06, 0x05, 0xb5, 0xd8, 0xe2, 0x86, 0x68, 0x6e, 0x88, 0xe1, 0xc1, 0x18, 0xc6, 0x3f, 0x1e, 0x1f, 0x2c, 0x60, 0xcb, 0x39, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xbf, 0x2c, 0x6c, 0x2e, 0x3f, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x7e, 0x41, 0xb0, 0x41, 0x41, 0x2d, 0xb6, 0x38, 0xec, 0x86, 0x5d, 0x83, 0x0d, 0x96, 0x23, 0xe5, 0x0c, 0xbb, 0xb0, 0x0b, 0x82, 0x0d, 0xce, 0x1d, 0xde, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x3d, 0x84, 0x0e, 0xc9, 0x8e, 0xe3, 0xd0, 0xc2, 0x2e, 0x08, 0x36, 0x18, 0x05, 0xb6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x3d, 0x84, 0x0e, 0x89, 0x99, 0xe3, 0xd0, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x0f, 0xd6, 0x89, 0xe5, 0x1c, 0x8f, 0x0f, 0x16, 0xb0, 0xe5, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x3f, 0x87, 0x96, 0xd6, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x2c, 0x37, 0x25, 0x59, 0x1c, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x81, 0xc4, 0xcb, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd5, 0x3b, 0x3a, 0x07, 0xe3, 0x38, 0xe4, 0x60, 0x8d, 0xca, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0xdc, 0x94, 0x64, 0x71, 0x10, 0x6c, 0x50, 0x50, 0x8b, 0x2d, 0x0e, 0x82, 0x0d, 0xfd, 0x06, 0x87, 0xdd, 0x20, 0xb4, 0xdc, 0x37, 0x0e, 0x0d, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0xb0, 0x70, 0x38, 0x61, 0xe3, 0xd0, 0x06, 0x21, 0x05, 0x7e, 0x88, 0xe1, 0xf1, 0xf8, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0xc5, 0x0d, 0xa7, 0xd8, 0xc1, 0xa2, 0x53, 0x92, 0xc5, 0x41, 0xb0, 0x41, 0x41, 0x2d, 0xb6, 0x38, 0xec, 0xc2, 0x6d, 0x88, 0xe1, 0xc1, 0xc8, 0xb2, 0x5a, 0x43, 0x34, 0x0f, 0x8e, 0x99, 0xeb, 0x83, 0x60, 0x83, 0x92, 0xdd, 0x66, 0xd8, 0x0d, 0x42, 0xcb, 0x7d, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0x4a, 0x18, 0x89, 0x35, 0x08, 0x29, 0xf0, 0x83, 0x13, 0x1b, 0xef, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe5, 0x0b, 0xbb, 0xc1, 0x62, 0xc3, 0x9e, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x24, 0x80, 0x3c, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x8a, 0xb0, 0x89, 0xe3, 0xd0, 0xb0, 0x1b, 0x8c, 0xb6, 0xce, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x24, 0x80, 0x3c, 0x1c, 0x14, 0x27, 0x16, 0x07, 0x6b, 0x7c, 0x52, 0x86, 0xdd, 0x20, 0xb4, 0xdc, 0x37, 0x0e, 0x6d, 0x10, 0x52, 0xe0, 0x1b, 0x62, 0xb8, 0x86, 0x4e, 0x6a, 0x07, 0x81, 0x1b, 0x7f, 0x10, 0x06, 0xf2, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xe7, 0xe8, 0xea, 0xdc, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0x82, 0x60, 0x83, 0xe5, 0xa6, 0x24, 0x8b, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0x64, 0x8f, 0xe7, 0xd0, 0xa8, 0x65, 0x10, 0x6c, 0x48, 0xd5, 0x1c, 0xac, 0x4d, 0x77, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0x58, 0x82, 0x76, 0xb3, 0x38, 0x08, 0x36, 0x28, 0xa8, 0xc5, 0x16, 0x07, 0xc1, 0x86, 0xb5, 0xdf, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xac, 0xdd, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x49, 0x10, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc9, 0x8e, 0x43, 0xbe, 0xf6, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x1f, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x86, 0xf5, 0xbd, 0x0d, 0x16, 0x63, 0xf2, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0x42, 0xe5, 0x6c, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x32, 0x61, 0x97, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xac, 0xdd, 0xc1, 0xaa, 0xfb, 0x9c, 0xe3, 0xd0, 0xc1, 0x1a, 0x95, 0x97, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x58, 0x49, 0xa9, 0xb3, 0x38, 0xfc, 0x82, 0x60, 0x83, 0x82, 0x5a, 0x6c, 0x71, 0x10, 0x6c, 0x50, 0xb2, 0xdb, 0x0c, 0xbb, 0x41, 0x68, 0xb9, 0x6f, 0x1c, 0xda, 0x20, 0xa4, 0xc0, 0x37, 0xc4, 0x70, 0x83, 0x05, 0xa4, 0x3a, 0x07, 0x61, 0x20, 0x7f, 0x3c, 0x3e, 0x58, 0xc0, 0x96, 0x73, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xfe, 0xd8, 0xdb, 0xdb, 0x7a, 0x48, 0x2d, 0x1d, 0x8f, 0x07, 0xc1, 0xe2, 0x06, 0xeb, 0x46, 0x73, 0x0e, 0x16, 0x9d, 0x92, 0x2c, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x86, 0x66, 0xd7, 0x20, 0xd8, 0x90, 0xaf, 0x3d, 0x58, 0x6e, 0xf3, 0x32, 0x08, 0x36, 0x28, 0x0e, 0x35, 0x0e, 0x96, 0x48, 0xbe, 0x1c, 0x8f, 0x87, 0x5f, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xf0, 0x0b, 0x82, 0x0d, 0x0a, 0x6a, 0xb1, 0xc5, 0x61, 0x37, 0xec, 0x1a, 0x6c, 0xb0, 0x1c, 0x29, 0x67, 0xd8, 0x85, 0xdb, 0xb0, 0x57, 0x78, 0x68, 0x24, 0x78, 0xb0, 0x4e, 0x2c, 0xe7, 0x78, 0x7c, 0xb0, 0x80, 0x2d, 0xe7, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x7c, 0xb5, 0xba, 0x39, 0xfa, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0x08, 0x61, 0xfb, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x90, 0xfb, 0x3a, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0x1c, 0x04, 0x1b, 0x04, 0x26, 0xf6, 0xc1, 0x30, 0x0b, 0x3f, 0x1e, 0x1f, 0x87, 0x8e, 0xc7, 0xc7, 0xe3, 0x15, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x64, 0x43, 0xea, 0x60, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0xcf, 0x8f, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xcf, 0xb1, 0xd5, 0xb5, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x05, 0xc1, 0x06, 0x23, 0xe8, 0x6d, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xed, 0xbf, 0x0e, 0xc9, 0xa5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0x90, 0x3a, 0x18, 0x8f, 0x6f, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x1b, 0x62, 0xb8, 0x21, 0x86, 0x43, 0x36, 0xa4, 0x0e, 0xc6, 0x41, 0x78, 0xb0, 0x1c, 0x97, 0xe4, 0x78, 0x7c, 0x1c, 0x1a, 0x76, 0xe1, 0x36, 0xc4, 0xf0, 0x20, 0xa4, 0xc0, 0x37, 0x08, 0x37, 0xf7, 0x43, 0x0c, 0x8f, 0xc7, 0x83, 0x60, 0x83, 0xc4, 0x63, 0x9f, 0xc5, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x85, 0xdb, 0xd0, 0x4a, 0xfc, 0x10, 0xcd, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x5c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0x8f, 0x56, 0xe7, 0xb6, 0x1e, 0xa2, 0xb9, 0xb0, 0x1b, 0x8c, 0x58, 0xac, 0x35, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0xc1, 0xdb, 0xc1, 0xdf, 0xc1, 0xdf, 0xc1, 0xd7, 0x41, 0xdd, 0xe0, 0xe8, 0xe0, 0xf5, 0xe0, 0xee, 0x41, 0x12, 0x75, 0xd5, 0xf1, 0x6d, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xf1, 0x3a, 0x08, 0x72, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x40, 0xfb, 0xbe, 0x83, 0xf1, 0xae, 0x73, 0x1c, 0x3a, 0xb4, 0x00, 0x1b, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0xc1, 0xd2, 0x67, 0x9f, 0x41, 0xb0, 0x20, 0x19, 0x68, 0x6f, 0x77, 0x10, 0xf0, 0xfe, 0x07, 0x23, 0x0a, 0x77, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0xb6, 0xb7, 0xb9, 0xf2, 0x10, 0xcd, 0x85, 0xdd, 0x60, 0xc4, 0x62, 0xad, 0x21, 0xf7, 0x3d, 0x08, 0x16, 0x24, 0x03, 0xa3, 0x74, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x43, 0xbe, 0xf6, 0x38, 0xb4, 0x21, 0xf7, 0x3d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x0e, 0xde, 0x0e, 0xfe, 0x0e, 0xfe, 0x0e, 0xbe, 0x0e, 0xea, 0x06, 0x67, 0x07, 0x7f, 0x07, 0x9f, 0x0f, 0x8a, 0x10, 0xe8, 0xe3, 0xdb, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x68, 0x61, 0x6e, 0xe4, 0x21, 0x9a, 0x6b, 0xc8, 0x7d, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0x69, 0x77, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x0e, 0xf5, 0xb6, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xce, 0x7d, 0x07, 0xe3, 0x5d, 0xe7, 0xd0, 0x41, 0xe3, 0x38, 0x34, 0xec, 0xc2, 0x2d, 0x1e, 0xf2, 0xd8, 0x87, 0x68, 0x2e, 0xec, 0x06, 0x23, 0x16, 0x6b, 0x83, 0x55, 0x05, 0x3f, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x78, 0xff, 0xeb, 0x20, 0xc8, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf2, 0xb5, 0x87, 0x1e, 0x42, 0xc7, 0xa1, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x6b, 0xc8, 0x7d, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x83, 0x8e, 0x41, 0xc7, 0xa0, 0x63, 0xd0, 0xd1, 0xf1, 0x6d, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xf1, 0x3a, 0x08, 0x78, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xe0, 0xef, 0x3b, 0x18, 0x86, 0x3e, 0xc7, 0xa1, 0x83, 0x11, 0x85, 0x3b, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x0d, 0xb9, 0xef, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0x71, 0xf0, 0x76, 0xf0, 0x77, 0xf0, 0x77, 0xf0, 0x75, 0x50, 0x37, 0x78, 0x3b, 0x78, 0x79, 0x90, 0xe6, 0x97, 0x7f, 0x7c, 0x3b, 0x08, 0x01, 0xf0, 0x61, 0x17, 0x6e, 0xf1, 0x20, 0x11, 0x1f, 0xf8, 0x10, 0xcd, 0x05, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xc1, 0x1a, 0x71, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x40, 0x52, 0xef, 0x20, 0xe0, 0xfd, 0x8f, 0x43, 0x87, 0x0e, 0x1a, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0xd7, 0x90, 0xfb, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x07, 0x6f, 0x07, 0x7f, 0x07, 0x7f, 0x07, 0x5f, 0x07, 0x75, 0x83, 0xcf, 0x83, 0xc3, 0x83, 0xbf, 0x07, 0x07, 0x9a, 0xbe, 0xe3, 0xdb, 0x06, 0xe5, 0x3e, 0xe0, 0x0a, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x83, 0xea, 0x8e, 0x6f, 0x87, 0xc4, 0xd4, 0x82, 0x60, 0x83, 0xf5, 0xf6, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0xda, 0x20, 0x60, 0xbe, 0x8f, 0x43, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x70, 0xda, 0x1d, 0x0c, 0x43, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x0b, 0x0f, 0x65, 0x0e, 0xa9, 0x9a, 0xe3, 0xd0, 0xf1, 0x78, 0x43, 0xee, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x83, 0xf4, 0x53, 0x8b, 0x0d, 0x96, 0xec, 0xe2, 0x0c, 0x82, 0x15, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0x20, 0xd8, 0xc7, 0xa1, 0x0d, 0x12, 0xca, 0x4e, 0x06, 0xc1, 0x0a, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x14, 0xe7, 0x5c, 0xc7, 0xa1, 0x0d, 0xd6, 0x00, 0xe2, 0x6c, 0x90, 0xf6, 0x52, 0xbd, 0xc1, 0x92, 0x5d, 0x9c, 0x41, 0xb0, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0x61, 0x4f, 0x7d, 0x1c, 0xda, 0x20, 0xa1, 0xec, 0x64, 0x10, 0xac, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x83, 0x22, 0x78, 0x70, 0x1c, 0xbc, 0x1b, 0xd4, 0x37, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xe8, 0xf5, 0x37, 0x8c, 0xcb, 0x06, 0xe3, 0xa7, 0xeb, 0xa0, 0x1c, 0xd7, 0x3a, 0xbe, 0x1d, 0xac, 0x66, 0x00, 0x3a, 0x58, 0xcd, 0x00, 0x74, 0xb0, 0x9a, 0x01, 0xe8, 0xf8, 0x76, 0x88, 0xe1, 0x20, 0xdb, 0xd0, 0x7c, 0x7d, 0x43, 0xee, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x83, 0x55, 0xdd, 0x0b, 0x8b, 0xe1, 0xef, 0x06, 0x6b, 0x50, 0x80, 0x16, 0xc3, 0xd7, 0x0d, 0xd2, 0x5e, 0xaa, 0x07, 0xc1, 0x0a, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xf8, 0xe0, 0xe7, 0x20, 0x75, 0x6c, 0xe7, 0x10, 0xc3, 0x83, 0xd5, 0x0c, 0x40, 0xc7, 0xb7, 0xe3, 0xf1, 0x82, 0x60, 0x41, 0xb0, 0xc1, 0x02, 0x43, 0x97, 0xc3, 0x1e, 0xef, 0xb0, 0x0b, 0x82, 0x0d, 0x4e, 0x21, 0xd4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x83, 0x83, 0xb4, 0xad, 0x96, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0x24, 0x08, 0xe9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x0d, 0x8a, 0xe8, 0xae, 0x83, 0x80, 0xf7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0xe0, 0xe3, 0x71, 0x48, 0xcc, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0xbe, 0x06, 0xcb, 0xfc, 0x7d, 0x06, 0xc1, 0x82, 0x64, 0x40, 0xf0, 0xee, 0x1c, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x6e, 0xb0, 0x64, 0x17, 0x67, 0x83, 0x35, 0xda, 0x0a, 0x1b, 0x2c, 0x5e, 0x01, 0xda, 0x60, 0x34, 0xf8, 0x6e, 0x50, 0x8a, 0x48, 0x6e, 0x50, 0x8a, 0x48, 0x6e, 0xb0, 0xfe, 0xf1, 0x65, 0x83, 0x81, 0x6f, 0xbc, 0x41, 0x42, 0xd9, 0xc9, 0x20, 0x58, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0x69, 0x77, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x78, 0x28, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x89, 0x91, 0xfa, 0x60, 0x45, 0x11, 0xd0, 0x71, 0x68, 0x1c, 0x14, 0x0c, 0x6e, 0x0e, 0x2e, 0x0f, 0x1e, 0x0e, 0xde, 0x0e, 0x5e, 0x0e, 0x3e, 0x0f, 0xde, 0x75, 0xb0, 0x9a, 0x01, 0xe8, 0xf8, 0x76, 0x1c, 0x1a, 0x04, 0x0b, 0x92, 0x0d, 0x0a, 0xff, 0xa0, 0x83, 0x80, 0xf7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x89, 0x91, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x70, 0x90, 0xe0, 0xe3, 0x71, 0x1c, 0x3a, 0x24, 0x66, 0x8e, 0x43, 0xc7, 0xa1, 0xc3, 0xda, 0xef, 0x86, 0x56, 0xe2, 0x83, 0x60, 0x41, 0xb2, 0xc1, 0x20, 0x79, 0x39, 0x08, 0x72, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x18, 0x77, 0x50, 0x07, 0x67, 0x93, 0xde, 0xe3, 0xd0, 0xc1, 0x5a, 0x3e, 0x81, 0x43, 0xea, 0xe0, 0x78, 0x3c, 0xfc, 0x82, 0x60, 0x83, 0x11, 0xf4, 0xb6, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xa5, 0xaf, 0x43, 0x72, 0xe9, 0xd0, 0xa8, 0x65, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x86, 0x18, 0x6e, 0x88, 0xe1, 0xa1, 0x5f, 0xed, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x6d, 0x6f, 0x6c, 0xe5, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x10, 0x2c, 0x6e, 0x38, 0xc5, 0x0e, 0xc6, 0x0c, 0xda, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0x6c, 0x7d, 0x1d, 0x92, 0x4b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x16, 0x57, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x06, 0xe3, 0xa7, 0xeb, 0x60, 0x68, 0x76, 0x1d, 0xf2, 0xb5, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x1b, 0x8c, 0xa0, 0xb7, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xfc, 0xff, 0x75, 0x48, 0x2e, 0x1d, 0x1a, 0xb5, 0x0c, 0xbb, 0xc1, 0x02, 0x58, 0x9f, 0x0d, 0xd6, 0x86, 0x03, 0x0d, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x6e, 0xc3, 0xd1, 0x7e, 0x10, 0x52, 0xe0, 0x1b, 0x8e, 0xf6, 0x83, 0x10, 0x00, 0x3f, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xbf, 0xad, 0x8e, 0xad, 0x3c, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x56, 0xb9, 0x03, 0x2d, 0x0e, 0xbb, 0xb0, 0x1b, 0xa4, 0x1d, 0xfd, 0x2c, 0x74, 0x42, 0xe3, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0xce, 0xaf, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x17, 0x44, 0x1b, 0x2c, 0x64, 0x26, 0x39, 0x18, 0x3f, 0x5d, 0x07, 0x8b, 0x3f, 0x7d, 0x0e, 0xf9, 0xda, 0xe3, 0xd0, 0x41, 0xe2, 0xb1, 0xcf, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x1b, 0xac, 0x72, 0x07, 0x5a, 0x1c, 0x04, 0x0b, 0xbf, 0x20, 0x58, 0x90, 0x0c, 0xdc, 0x5f, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x2b, 0x08, 0x16, 0x24, 0x03, 0xc2, 0x77, 0xe7, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x2a, 0x83, 0xe6, 0x90, 0xb5, 0x3b, 0x0e, 0x1d, 0xc6, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0xbe, 0x0d, 0x82, 0xc5, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xb0, 0x1b, 0xf2, 0x58, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x87, 0x5d, 0xb8, 0x0d, 0x47, 0xfb, 0x21, 0x6b, 0xb7, 0x61, 0x19, 0x75, 0xd8, 0x85, 0x5d, 0xe8, 0x21, 0x5f, 0x7b, 0x58, 0xdf, 0xdc, 0x10, 0xc3, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x66, 0x07, 0xc3, 0x51, 0xfa, 0xb0, 0x51, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf1, 0x82, 0x60, 0x41, 0x32, 0xe8, 0x3b, 0x38, 0x09, 0x1d, 0x1f, 0xb2, 0x17, 0xc3, 0x6e, 0x50, 0xf2, 0x20, 0x6d, 0x68, 0x01, 0x34, 0xc8, 0xd6, 0xd0, 0x7e, 0xfd, 0xa0, 0x7c, 0x1a, 0x3a, 0x34, 0xfc, 0x3a, 0x9e, 0x1f, 0xdf, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0xb0, 0x1b, 0x1a, 0x2e, 0x6e, 0x30, 0xea, 0xd1, 0x86, 0xdd, 0xa0, 0x08, 0x19, 0xdc, 0x10, 0xc3, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x66, 0x07, 0xc3, 0x3f, 0xf6, 0x90, 0x86, 0x1b, 0x04, 0x0b, 0x92, 0x21, 0x83, 0x68, 0xc1, 0x74, 0xd8, 0x0d, 0x4a, 0x1e, 0xa4, 0x0d, 0x06, 0xd1, 0xca, 0x20, 0xdb, 0x60, 0x51, 0x67, 0xd0, 0xc1, 0xe0, 0x8f, 0x19, 0x44, 0x0b, 0xc2, 0x41, 0xb0, 0x20, 0x19, 0xf4, 0x1d, 0x0c, 0x47, 0xe9, 0xc3, 0x46, 0xed, 0xf1, 0x7c, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x86, 0x18, 0x0e, 0xbb, 0xa1, 0x7d, 0xf8, 0x1a, 0x62, 0xb8, 0x41, 0x08, 0x80, 0x1f, 0x14, 0x7b, 0x10, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x0f, 0x3d, 0xc9, 0x37, 0xc4, 0x70, 0x83, 0x20, 0x89, 0x3e, 0x08, 0x01, 0xf0, 0xe3, 0xf1, 0xb0, 0x0b, 0xbb, 0xd0, 0x83, 0x91, 0x65, 0xb5, 0xd0, 0x83, 0x94, 0xc1, 0x80, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x90, 0x0c, 0xb2, 0x41, 0xb4, 0xe0, 0xf9, 0x41, 0xca, 0x60, 0xc0, 0xf1, 0x78, 0xd8, 0x0d, 0x16, 0xc0, 0xfa, 0x2c, 0x08, 0x16, 0x24, 0x83, 0x6c, 0x10, 0x2d, 0x78, 0x7e, 0x30, 0x82, 0x3c, 0x8f, 0xe7, 0xc3, 0x6e, 0xb0, 0x00, 0xd6, 0x67, 0x0d, 0x31, 0x3c, 0x28, 0x3f, 0x49, 0x8e, 0x43, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0x83, 0xf5, 0xe3, 0x41, 0x0b, 0xbb, 0x70, 0x07, 0xa9, 0x80, 0x01, 0x0b, 0xbb, 0xd0, 0x83, 0x14, 0x48, 0xf3, 0xc3, 0xfa, 0xe6, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x25, 0x43, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x11, 0xe4, 0x79, 0x50, 0xc2, 0x48, 0x1c, 0x87, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x90, 0x70, 0x2a, 0x7d, 0x10, 0x6e, 0xee, 0xc3, 0x2e, 0xec, 0x06, 0xeb, 0xc7, 0x83, 0x16, 0x6e, 0xc3, 0xd1, 0x7e, 0x90, 0x32, 0x18, 0x70, 0x38, 0xda, 0xd7, 0x10, 0xc3, 0x83, 0x14, 0x48, 0xf3, 0x61, 0x17, 0x76, 0x83, 0xf5, 0xe3, 0x41, 0x0b, 0xbb, 0x70, 0x1b, 0x5a, 0x89, 0x1f, 0xa4, 0x0c, 0x06, 0x6c, 0xb0, 0x7e, 0x41, 0xe8, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x05, 0xc1, 0x82, 0x64, 0x90, 0x0d, 0xa2, 0x05, 0xcf, 0x27, 0x18, 0xf3, 0xe3, 0xf1, 0xb0, 0x1b, 0x2c, 0x80, 0xf5, 0x59, 0x10, 0x2c, 0x48, 0x06, 0xd9, 0x20, 0x5a, 0xf0, 0x7c, 0x82, 0x3a, 0x7f, 0x3c, 0x1f, 0x76, 0x83, 0x05, 0xb0, 0x3e, 0x0b, 0x92, 0x41, 0x36, 0x88, 0x16, 0x94, 0x1f, 0x94, 0x9f, 0x24, 0x87, 0xe4, 0xd2, 0x71, 0xe8, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xb0, 0x7e, 0x3c, 0x68, 0xe1, 0x36, 0xf4, 0x27, 0x3f, 0x48, 0x19, 0x0c, 0x38, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc9, 0x20, 0x1b, 0x44, 0x0b, 0x9e, 0x1f, 0xa4, 0x40, 0x9a, 0x1f, 0x8f, 0x87, 0xdd, 0x60, 0x01, 0xac, 0xcf, 0x1a, 0x62, 0x78, 0xb0, 0x66, 0x28, 0xe5, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xb0, 0x7e, 0x3c, 0x68, 0xe1, 0x36, 0x28, 0xe3, 0x76, 0x0e, 0x52, 0x06, 0x03, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x83, 0x25, 0x65, 0x42, 0xc3, 0x6e, 0xb0, 0x00, 0xd6, 0x67, 0x61, 0x17, 0x76, 0x83, 0x35, 0x43, 0x29, 0x87, 0xf5, 0xcd, 0x35, 0xc4, 0x70, 0x98, 0x83, 0x10, 0x00, 0x3f, 0x48, 0x38, 0x95, 0x3e, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0xac, 0x1f, 0x0f, 0x5a, 0xd8, 0x85, 0xdb, 0xa0, 0xb0, 0xc3, 0x39, 0x48, 0x19, 0x0c, 0x38, 0x58, 0x9b, 0x23, 0x74, 0x38, 0xda, 0x17, 0x04, 0x1b, 0xac, 0xfc, 0x11, 0x1a, 0x76, 0x83, 0x05, 0xb0, 0x3e, 0x0b, 0x82, 0x0d, 0x56, 0x25, 0x09, 0x0d, 0xbb, 0xc1, 0x02, 0x58, 0x9f, 0x35, 0xc4, 0x70, 0xb8, 0x83, 0xf2, 0x93, 0xe4, 0x38, 0x74, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x58, 0x3f, 0x1e, 0xb4, 0xb0, 0x0b, 0xb7, 0xc1, 0x68, 0x3e, 0x3f, 0x48, 0x19, 0x0c, 0x58, 0xd8, 0x0d, 0xd6, 0x2f, 0x08, 0x2d, 0x74, 0x82, 0x39, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x58, 0xf9, 0x23, 0x34, 0xec, 0x06, 0x0b, 0x60, 0x7d, 0x16, 0x76, 0x83, 0xd0, 0x72, 0x5f, 0x90, 0x0c, 0xb2, 0x41, 0xb4, 0xe0, 0xf9, 0x04, 0xe7, 0xfc, 0xf1, 0x7c, 0xd8, 0x85, 0x3b, 0x58, 0x21, 0x12, 0xb4, 0x20, 0x19, 0x64, 0x83, 0x68, 0xc1, 0xf3, 0x09, 0xee, 0xf9, 0xe3, 0xf9, 0x20, 0xdb, 0xd0, 0x7c, 0xfd, 0x20, 0xe1, 0x54, 0xfa, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xb0, 0x7e, 0x3c, 0x68, 0x61, 0x17, 0x6e, 0x83, 0x21, 0x8f, 0x7e, 0x90, 0x32, 0x18, 0x70, 0xb0, 0x36, 0x47, 0xe8, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x58, 0xf9, 0x23, 0x34, 0xec, 0x06, 0x0b, 0x60, 0x7d, 0x16, 0x24, 0x83, 0x6c, 0x10, 0x2d, 0x28, 0xdf, 0x20, 0x04, 0xc0, 0x0f, 0x96, 0x33, 0x09, 0x1d, 0xcf, 0x8f, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0xeb, 0xc7, 0x83, 0x16, 0x76, 0xe1, 0x36, 0x28, 0x00, 0xa0, 0x0e, 0x52, 0x06, 0x03, 0x0e, 0xd6, 0xe6, 0x08, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0x2b, 0x7f, 0x84, 0x86, 0xdd, 0x60, 0x01, 0xac, 0xcf, 0x82, 0x64, 0x90, 0x0d, 0xa2, 0x05, 0xe5, 0x6b, 0x10, 0x02, 0xe0, 0x07, 0x25, 0x8c, 0xc4, 0xc1, 0x72, 0x26, 0xa1, 0xe3, 0xf9, 0x71, 0x68, 0xd8, 0x85, 0xdd, 0x60, 0xfd, 0x78, 0xd0, 0xc2, 0x2e, 0xdc, 0x06, 0xe7, 0x96, 0xe2, 0x83, 0x94, 0xc1, 0x80, 0x85, 0xdd, 0x60, 0xfd, 0x82, 0xd0, 0xc2, 0x2e, 0xf4, 0x60, 0xc9, 0x90, 0xd0, 0x61, 0x7d, 0xf3, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x90, 0x0c, 0xb2, 0x41, 0xb4, 0xe0, 0xf9, 0xc1, 0x72, 0x5c, 0xa1, 0xe3, 0xf1, 0xb0, 0x1b, 0x2c, 0x80, 0xf5, 0x59, 0x10, 0x2c, 0x08, 0x36, 0x48, 0x6c, 0x39, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xc1, 0x99, 0x7f, 0x18, 0x97, 0xe3, 0xd0, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x35, 0xb4, 0x12, 0x3f, 0xec, 0x15, 0x1e, 0xac, 0x91, 0x12, 0x3a, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0xac, 0x1f, 0x0f, 0x5a, 0xd8, 0x85, 0xdb, 0xe0, 0xc8, 0x53, 0x7c, 0x90, 0x32, 0x18, 0xb0, 0xb0, 0x1b, 0xac, 0x5f, 0x10, 0x5a, 0xd8, 0x0d, 0x56, 0x89, 0x0c, 0x2d, 0xec, 0x42, 0x27, 0x28, 0xe6, 0x87, 0xf5, 0xcd, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x5f, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x83, 0xa5, 0x58, 0x43, 0x1b, 0x1a, 0x89, 0x0f, 0x82, 0x0d, 0x96, 0xad, 0x0c, 0x0d, 0xbb, 0xc1, 0x02, 0x58, 0x9f, 0x05, 0xc1, 0x82, 0x64, 0x90, 0x0d, 0xa2, 0x05, 0xcf, 0x27, 0xb8, 0xe6, 0x8f, 0xe7, 0xc3, 0x6e, 0xb0, 0x00, 0xd6, 0x67, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x24, 0xe0, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x97, 0x60, 0x99, 0x7f, 0x43, 0xbe, 0xf6, 0x30, 0x2e, 0xc7, 0xa1, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x6b, 0x68, 0x25, 0x7e, 0x10, 0x98, 0xd8, 0x07, 0xe1, 0xe6, 0x7e, 0x1c, 0x3a, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0xac, 0x1f, 0x0f, 0x5a, 0xd8, 0x85, 0xdb, 0xe0, 0x18, 0x98, 0x7f, 0x90, 0x32, 0x18, 0x70, 0xb0, 0xd0, 0x63, 0xe8, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x58, 0xb6, 0x32, 0x34, 0xec, 0x06, 0x0b, 0x60, 0x7d, 0xd6, 0x10, 0xc3, 0x21, 0x1b, 0x94, 0x30, 0x12, 0x1b, 0x1c, 0x03, 0xf3, 0x97, 0xa0, 0xcc, 0x1f, 0xac, 0x10, 0x09, 0x3a, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0xac, 0x1f, 0x0f, 0x5a, 0xd8, 0x0d, 0x96, 0x44, 0x0e, 0x1d, 0xac, 0x8a, 0x1a, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc9, 0x20, 0x1b, 0x44, 0x0b, 0x9e, 0x4f, 0x50, 0xcd, 0x8f, 0xc7, 0xc3, 0x6e, 0xb0, 0x00, 0xd6, 0x67, 0x41, 0xb0, 0xf0, 0x0b, 0xa2, 0x05, 0xf1, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0xac, 0x45, 0xf6, 0x99, 0xe0, 0x98, 0xdf, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x83, 0xf5, 0x23, 0x3f, 0x07, 0x8b, 0x8a, 0x87, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0x60, 0x95, 0xcf, 0xcf, 0xc1, 0xa2, 0xe2, 0xa1, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x58, 0xe6, 0xef, 0x73, 0xb0, 0xa8, 0x78, 0x68, 0x43, 0x0c, 0x87, 0xdb, 0x60, 0xa1, 0xe1, 0xcf, 0xc1, 0xa2, 0xe2, 0xa1, 0xd5, 0x60, 0x51, 0xf1, 0xd0, 0x41, 0x08, 0x80, 0x1f, 0x52, 0x35, 0x87, 0x54, 0xcd, 0xf1, 0xf8, 0x60, 0x55, 0x92, 0xd0, 0xb0, 0x1b, 0x2c, 0x80, 0xf5, 0x59, 0x43, 0x0c, 0x87, 0x6c, 0x50, 0x84, 0x4d, 0x6c, 0x70, 0x0c, 0xcc, 0x5f, 0x09, 0x92, 0xf9, 0x87, 0x97, 0x00, 0x0e, 0x56, 0x88, 0x04, 0x1d, 0x87, 0x8e, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0xeb, 0xc7, 0x83, 0x16, 0x76, 0xe1, 0x16, 0x43, 0x78, 0x90, 0x32, 0x18, 0x70, 0xb0, 0x36, 0x47, 0xe8, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x58, 0xf9, 0x23, 0x34, 0xec, 0x06, 0x0b, 0x60, 0x7d, 0x16, 0x04, 0x1b, 0xac, 0x4a, 0x12, 0x1a, 0x76, 0x83, 0x05, 0xb0, 0x3e, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x21, 0xe2, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x58, 0xf6, 0x37, 0x74, 0x1c, 0x1a, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0xe1, 0x25, 0x80, 0x61, 0x37, 0x08, 0x2d, 0xf7, 0x35, 0xb4, 0x12, 0x5f, 0x83, 0xb5, 0xc8, 0x3e, 0x07, 0xcb, 0xfe, 0x86, 0x0e, 0x02, 0x13, 0x7b, 0x43, 0x0c, 0x0f, 0x06, 0x6b, 0xec, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0x36, 0x34, 0x5f, 0x3f, 0x34, 0x12, 0x3f, 0x58, 0xcb, 0x27, 0x70, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x7e, 0x5b, 0x9a, 0xdb, 0x7a, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0xe2, 0x4a, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x49, 0x24, 0xde, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x1b, 0x0c, 0x56, 0x94, 0xe3, 0xf1, 0x71, 0xe8, 0x60, 0xd1, 0xab, 0xcf, 0xf1, 0x78, 0x10, 0x6c, 0x30, 0x82, 0xde, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x55, 0x39, 0x41, 0x07, 0x0b, 0x33, 0x7d, 0x86, 0xdd, 0x60, 0x01, 0xac, 0xcf, 0x06, 0xe1, 0xe6, 0x3e, 0xec, 0x06, 0x8b, 0x3c, 0x82, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x60, 0xbc, 0x0e, 0x2b, 0xb4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xf6, 0x7d, 0x07, 0x41, 0xce, 0x7f, 0x1c, 0x3a, 0x18, 0x51, 0xb8, 0x1b, 0x8e, 0xf6, 0x85, 0xdd, 0x60, 0xd4, 0x4b, 0xae, 0x21, 0xf7, 0x3d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x0e, 0xde, 0x0e, 0x5e, 0x0f, 0x4e, 0x0f, 0x5e, 0x1e, 0x2c, 0xc4, 0xf6, 0x39, 0xbe, 0x0d, 0x82, 0x05, 0xc9, 0x40, 0x7b, 0xbb, 0x43, 0xb6, 0xe2, 0x60, 0x44, 0xe1, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0xd0, 0x7e, 0x7d, 0xb8, 0x0d, 0xad, 0xc4, 0x0f, 0x42, 0x0a, 0xfc, 0x60, 0x85, 0x48, 0xd0, 0xf1, 0x78, 0x85, 0x5f, 0x10, 0x6c, 0xb0, 0x60, 0x5f, 0x67, 0x71, 0xf8, 0x05, 0xc1, 0xe2, 0x06, 0x63, 0x0c, 0xed, 0x60, 0xd1, 0x29, 0xc9, 0xe2, 0xb0, 0x1b, 0x94, 0xbe, 0x60, 0x1b, 0xa2, 0x39, 0x08, 0x16, 0x04, 0x1b, 0xc6, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x70, 0xac, 0xaf, 0x3f, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x52, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x4c, 0x58, 0x1d, 0xa2, 0x79, 0x1c, 0x1a, 0x76, 0xc3, 0xae, 0xc1, 0x1a, 0x87, 0x0e, 0xe3, 0xb2, 0x71, 0x68, 0x43, 0x0c, 0x17, 0x04, 0x1b, 0x8c, 0x37, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8b, 0x4a, 0x87, 0x0e, 0x8d, 0x8b, 0x8e, 0x43, 0x07, 0x23, 0xb3, 0xf7, 0x78, 0x7c, 0xb0, 0x80, 0x2d, 0xe7, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xfc, 0xb1, 0xb7, 0x36, 0xf8, 0x90, 0x5a, 0x3a, 0x1e, 0xaf, 0xf0, 0x0b, 0x82, 0x0d, 0x56, 0x80, 0x12, 0x2d, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x63, 0x7b, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0x52, 0xb1, 0xe6, 0x38, 0x74, 0x68, 0xd4, 0x72, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x3e, 0x9c, 0x59, 0x1a, 0x7e, 0x48, 0x2d, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0xb0, 0x02, 0x94, 0x68, 0x71, 0xd8, 0x0d, 0x4a, 0x5f, 0xb0, 0x05, 0xc1, 0x06, 0x05, 0xc8, 0xdc, 0x82, 0x60, 0x41, 0x32, 0x10, 0xa9, 0xc3, 0x0a, 0xed, 0xc1, 0xaa, 0x5b, 0xa2, 0x83, 0x10, 0x00, 0x1f, 0x04, 0x1b, 0x2c, 0xc6, 0xe4, 0x39, 0x74, 0x22, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x56, 0x80, 0x12, 0x2d, 0x0e, 0xbb, 0x41, 0xe9, 0x0b, 0xb6, 0x21, 0x9a, 0x83, 0x60, 0x83, 0x02, 0x64, 0xee, 0x38, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0xc1, 0x0a, 0x50, 0xa2, 0xc5, 0x61, 0x37, 0x28, 0x7d, 0xc1, 0x36, 0x58, 0xda, 0x4f, 0x74, 0x88, 0xe6, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x70, 0x6f, 0x73, 0xe5, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x06, 0x2b, 0x40, 0x89, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0xb1, 0x3d, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x41, 0xd1, 0x7d, 0x73, 0x1c, 0x3a, 0x34, 0x6a, 0x39, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x7f, 0xce, 0x2c, 0x0d, 0x3f, 0xa4, 0x96, 0x8e, 0xc7, 0x2b, 0xfc, 0x82, 0x60, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0xb8, 0x21, 0x86, 0x87, 0xc4, 0xe6, 0xf1, 0x78, 0x71, 0xf8, 0x05, 0xc1, 0x06, 0x2b, 0x40, 0x89, 0x16, 0x87, 0xdd, 0xa0, 0xf4, 0x05, 0xdb, 0x10, 0xcd, 0x41, 0xb0, 0xc1, 0xe2, 0x54, 0xa2, 0x41, 0xb0, 0xc1, 0x52, 0x59, 0xa2, 0x61, 0x37, 0xec, 0x1a, 0xac, 0x71, 0xe8, 0x60, 0x64, 0x59, 0x0d, 0x82, 0x0d, 0x16, 0x15, 0x13, 0x0d, 0xb2, 0x35, 0xb4, 0x5f, 0x3f, 0x18, 0xf5, 0x92, 0x1b, 0x52, 0x07, 0x1b, 0x62, 0xb8, 0x41, 0x08, 0x80, 0x1f, 0x9a, 0x25, 0x1d, 0x8f, 0x0f, 0x16, 0xb0, 0xe5, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x2f, 0x56, 0xe6, 0x46, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0xac, 0x00, 0x25, 0x5a, 0x1c, 0x76, 0x83, 0xd2, 0x17, 0x6c, 0x43, 0x34, 0x07, 0xc1, 0x06, 0x8b, 0x53, 0x89, 0x06, 0xc1, 0x06, 0x2b, 0x01, 0x8a, 0x86, 0xdd, 0xb0, 0x6b, 0xb0, 0xc1, 0x4a, 0x60, 0xa2, 0x8d, 0x43, 0x1b, 0x62, 0xb8, 0x06, 0x4b, 0x86, 0x84, 0x0e, 0x9d, 0xd4, 0x0e, 0x46, 0x66, 0xef, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x70, 0x6c, 0x75, 0xe7, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x06, 0xcb, 0x4d, 0x49, 0x16, 0x87, 0x5f, 0x10, 0x6c, 0xb0, 0x02, 0x94, 0x68, 0x71, 0x10, 0x2c, 0x48, 0x06, 0xaa, 0xdb, 0x21, 0x5b, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x1b, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x86, 0x71, 0x19, 0x04, 0x1b, 0x04, 0x26, 0xf6, 0xc1, 0xd2, 0x17, 0x99, 0xe3, 0xd0, 0xf1, 0xf8, 0x60, 0x01, 0x5b, 0xce, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x67, 0x6c, 0x75, 0xe5, 0x21, 0xb5, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x14, 0xd4, 0x62, 0x8b, 0x87, 0x16, 0x92, 0xc7, 0xe3, 0x55, 0x10, 0x6c, 0x90, 0x78, 0xec, 0xb3, 0x38, 0x08, 0x16, 0x76, 0x43, 0x1e, 0x6b, 0x0d, 0xcd, 0x22, 0x17, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0x14, 0xeb, 0x72, 0xc7, 0xe3, 0x43, 0x53, 0xa0, 0x83, 0xa0, 0xf4, 0x1e, 0x76, 0x43, 0xc3, 0xc5, 0x35, 0xf4, 0x69, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0xfc, 0x06, 0x03, 0x2f, 0xf5, 0xf8, 0x76, 0xe8, 0xa0, 0xb1, 0x41, 0x52, 0xb8, 0xcf, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0xc1, 0xc0, 0x00, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x15, 0x04, 0x0b, 0x92, 0x01, 0xe1, 0xbb, 0x73, 0x48, 0x2e, 0x1d, 0x2c, 0x32, 0x0b, 0x3a, 0x8c, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0x18, 0xf8, 0x76, 0x6f, 0x69, 0xe4, 0xe2, 0x20, 0x58, 0xd8, 0x0d, 0x1d, 0x47, 0x56, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0xf1, 0x50, 0xc7, 0x37, 0x58, 0x78, 0x61, 0x74, 0x38, 0xc5, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x01, 0x89, 0xef, 0x72, 0xc7, 0xe3, 0x43, 0x07, 0x8d, 0x61, 0x17, 0x6e, 0xf1, 0x30, 0x9d, 0x87, 0xd4, 0xc1, 0xc2, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0xc1, 0x42, 0x13, 0xa3, 0x0d, 0x16, 0x9a, 0x18, 0x1d, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0xf1, 0x30, 0x71, 0x87, 0xd4, 0xc1, 0xc2, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0xc1, 0xc2, 0x19, 0xa3, 0x0d, 0x16, 0xce, 0x18, 0x1d, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0xf1, 0xf0, 0xdc, 0xea, 0x21, 0x75, 0xb0, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0xb0, 0x10, 0xc8, 0x68, 0x83, 0x85, 0x40, 0x46, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0x5b, 0x3c, 0x08, 0xdc, 0x87, 0x43, 0xea, 0x60, 0x61, 0x17, 0x6e, 0x43, 0xea, 0xe0, 0x60, 0x79, 0x93, 0xd1, 0x06, 0xcb, 0x9b, 0x8c, 0x0e, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0xb0, 0xbe, 0xc1, 0x68, 0x83, 0xf5, 0x0d, 0x46, 0x87, 0x53, 0xec, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x35, 0xfe, 0x45, 0x07, 0xe3, 0x38, 0xe4, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0x58, 0x9c, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0x30, 0x2a, 0x49, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x28, 0xdc, 0xe5, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x86, 0xfd, 0xdc, 0xf1, 0xf8, 0x38, 0x74, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x38, 0xda, 0x17, 0x07, 0xc1, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0xc1, 0xa8, 0x24, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xd0, 0x56, 0xee, 0x78, 0x7c, 0xb0, 0x7a, 0xd3, 0xe8, 0x38, 0x74, 0x68, 0xd4, 0x32, 0xec, 0x86, 0xf5, 0xbd, 0x85, 0x5d, 0xb8, 0x83, 0x62, 0x91, 0xec, 0xd0, 0x38, 0x6a, 0xd8, 0x85, 0x3b, 0x18, 0x40, 0x89, 0x87, 0x36, 0x8f, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x81, 0xf6, 0x7d, 0x87, 0xe4, 0xd2, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x2c, 0x06, 0xbe, 0x99, 0x5c, 0x59, 0xb9, 0x38, 0x08, 0x16, 0x76, 0xe1, 0x16, 0x03, 0x5f, 0xae, 0x2c, 0x8c, 0x3c, 0xa4, 0x0e, 0x16, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0x16, 0x23, 0x1b, 0x6d, 0xb0, 0x18, 0xd9, 0xe8, 0x70, 0x8a, 0x0d, 0xbb, 0x70, 0x8b, 0x81, 0x2f, 0x97, 0x46, 0x57, 0x1e, 0x52, 0x07, 0x0b, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0x6b, 0xae, 0x8d, 0x36, 0x58, 0x73, 0x6d, 0x74, 0x38, 0xc5, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x73, 0xd1, 0xc1, 0x21, 0x75, 0xb0, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0xb0, 0xb4, 0xdc, 0x68, 0x83, 0xa5, 0xe5, 0x46, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x58, 0x2d, 0x6c, 0xb4, 0xc1, 0x6a, 0x61, 0xa3, 0xc3, 0x29, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0xd8, 0x60, 0x60, 0x80, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x28, 0x88, 0x0e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x02, 0x5d, 0xee, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x57, 0x10, 0x2c, 0x6e, 0x98, 0xce, 0x16, 0x07, 0xc1, 0x0a, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0xce, 0xee, 0x72, 0xc7, 0xe3, 0x43, 0x1a, 0xee, 0x30, 0x2e, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x07, 0xe1, 0xa9, 0xba, 0x38, 0x08, 0x16, 0x76, 0x83, 0x60, 0xd8, 0x5f, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0x8b, 0x24, 0x8e, 0x0e, 0x69, 0xb8, 0x41, 0xb0, 0xc1, 0x3a, 0x9a, 0xa3, 0x43, 0x07, 0x8d, 0x61, 0x37, 0xe4, 0xb1, 0xd6, 0xd0, 0x2c, 0x72, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x50, 0xbd, 0xff, 0xf7, 0x1d, 0x92, 0x4b, 0x87, 0x0e, 0x1a, 0xc3, 0x2e, 0xdc, 0xe2, 0xe1, 0x8b, 0x9a, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x15, 0x4d, 0x47, 0x1b, 0xac, 0x68, 0x3a, 0x3a, 0x9c, 0x62, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x40, 0x91, 0x3b, 0x1e, 0x1f, 0x3a, 0x68, 0x0c, 0xbb, 0x70, 0x8b, 0x07, 0x45, 0x45, 0xe6, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xda, 0xb0, 0xa3, 0x0d, 0xd6, 0x86, 0x1d, 0x1d, 0x4e, 0xb1, 0x83, 0x95, 0x58, 0x47, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0x93, 0x89, 0xd5, 0x9d, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x2b, 0xe2, 0x8e, 0x36, 0x58, 0x11, 0x77, 0x74, 0x38, 0xc5, 0x16, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0x92, 0x7a, 0xc7, 0xf3, 0x43, 0x53, 0xa0, 0x41, 0xb0, 0xc1, 0x3a, 0x9a, 0xa3, 0x43, 0x0b, 0xb0, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xcb, 0xe4, 0xde, 0xe4, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x85, 0x8b, 0x47, 0x1b, 0x2c, 0x5c, 0x3c, 0x3a, 0x9c, 0x62, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0x52, 0x99, 0xbd, 0x0f, 0x1d, 0x34, 0x86, 0xdd, 0x60, 0xcd, 0xc8, 0xcf, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x7e, 0xe4, 0x67, 0x83, 0xf5, 0x23, 0x3f, 0x87, 0x53, 0x6c, 0x41, 0xb0, 0xc1, 0x92, 0x90, 0xa3, 0x43, 0x53, 0xa0, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x40, 0xf0, 0xcb, 0x1d, 0x8f, 0x0f, 0x2d, 0xc0, 0x86, 0x5d, 0xb8, 0xc5, 0xc3, 0xf3, 0x24, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x4b, 0x70, 0x8f, 0x36, 0x58, 0x82, 0x7b, 0x74, 0x38, 0xc5, 0x16, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0x1c, 0xff, 0xe5, 0x8e, 0xc7, 0x87, 0xa6, 0x40, 0x07, 0x0b, 0x0b, 0x8f, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0x37, 0x4b, 0xa3, 0x9b, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0x3e, 0x1f, 0x6d, 0xb0, 0xf4, 0xf9, 0xe8, 0x70, 0x8a, 0x2d, 0x08, 0x36, 0x58, 0x47, 0x73, 0x74, 0x68, 0x0a, 0x34, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x48, 0x74, 0x97, 0x3b, 0x1e, 0x1f, 0x5a, 0x80, 0x0d, 0xbb, 0x70, 0x8b, 0x87, 0x67, 0xf1, 0x0e, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xd6, 0xaa, 0x1f, 0x6d, 0xb0, 0x56, 0xfd, 0xe8, 0x70, 0x8a, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x1b, 0x0c, 0x0c, 0xd0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xd5, 0xff, 0x72, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xb0, 0x1b, 0x94, 0xb2, 0x7e, 0x6b, 0x50, 0x3a, 0xfb, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x1b, 0x8c, 0x4a, 0xd2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xa2, 0xfd, 0xbf, 0xef, 0x90, 0x5c, 0x1a, 0x7e, 0xe3, 0xf9, 0xc1, 0x8a, 0x32, 0xa3, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x6c, 0x69, 0x6d, 0xe2, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x3a, 0x11, 0xa4, 0x0d, 0xd6, 0x89, 0x20, 0x1d, 0x4e, 0xb1, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0x8b, 0x2c, 0x90, 0x0e, 0x1d, 0x34, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0x67, 0x7b, 0x9b, 0xa3, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0xdc, 0x20, 0x6d, 0xb0, 0xe4, 0x06, 0xe9, 0x70, 0x8a, 0x1d, 0x2c, 0xd0, 0x39, 0x1a, 0x76, 0xe1, 0x16, 0x0f, 0x6f, 0xdc, 0x1d, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x2c, 0x3a, 0x42, 0xda, 0x60, 0xd1, 0x11, 0xd2, 0xe1, 0x14, 0x5b, 0x10, 0x6c, 0xb0, 0xfe, 0x05, 0xe9, 0xd0, 0x14, 0xe8, 0x20, 0x28, 0xbd, 0x87, 0x5d, 0xb8, 0xc5, 0xc3, 0x8f, 0x30, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x4b, 0xb5, 0x90, 0x36, 0x58, 0xaa, 0x85, 0x74, 0x38, 0xc5, 0x0e, 0x16, 0x4b, 0x21, 0x0d, 0xbb, 0x70, 0x8b, 0x81, 0x4f, 0x57, 0xc6, 0xc6, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xac, 0x4d, 0x43, 0xda, 0x60, 0x6d, 0x1a, 0xd2, 0xe1, 0x14, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x18, 0x18, 0xa0, 0x07, 0x4b, 0x1b, 0x8e, 0x0e, 0x1d, 0x34, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0xa7, 0xab, 0x73, 0x2b, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0x04, 0x22, 0x6d, 0xb0, 0x24, 0x10, 0xe9, 0x70, 0x8a, 0x0d, 0xbb, 0xc1, 0xe8, 0xc5, 0x5a, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0xb0, 0xf8, 0x5f, 0xee, 0x78, 0x7c, 0xe8, 0xa0, 0x71, 0xb0, 0xe0, 0x05, 0x69, 0xd8, 0x85, 0x5b, 0x3c, 0xbc, 0xad, 0x73, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x8c, 0x13, 0x69, 0x83, 0x65, 0x9c, 0x48, 0x87, 0x53, 0x6c, 0x10, 0x6c, 0xb0, 0x38, 0xfc, 0xe8, 0xd0, 0x41, 0x63, 0xd8, 0x85, 0x5b, 0x3c, 0x48, 0xd0, 0xda, 0x3c, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0xde, 0x8a, 0xb4, 0xc1, 0xf2, 0x56, 0xa4, 0xc3, 0x29, 0x76, 0xb0, 0xc8, 0x0e, 0x69, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0x3c, 0xb9, 0xb0, 0xfc, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x59, 0x2f, 0xd2, 0x06, 0xcb, 0x7a, 0x91, 0x0e, 0xa7, 0xd8, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0xe1, 0x17, 0x24, 0x03, 0x82, 0x5d, 0xee, 0x78, 0x3c, 0x48, 0x06, 0xbf, 0x8e, 0xc7, 0x87, 0x0e, 0x1a, 0xc3, 0x2e, 0xdc, 0xe2, 0xe1, 0xe1, 0xfc, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x15, 0xd7, 0x48, 0x1b, 0xac, 0xb8, 0x46, 0x3a, 0x9c, 0x62, 0x0b, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0x92, 0x81, 0xf3, 0xeb, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x58, 0x49, 0x81, 0x74, 0x1c, 0x3a, 0x34, 0x05, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0xbc, 0xff, 0x5d, 0xee, 0x78, 0x7c, 0x68, 0x01, 0x36, 0xec, 0xc2, 0x2d, 0x1e, 0x94, 0x65, 0xd8, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xab, 0xf7, 0x91, 0x36, 0x58, 0xbd, 0x8f, 0x74, 0x38, 0xc5, 0x16, 0x04, 0x1b, 0xac, 0x95, 0x47, 0x3a, 0x34, 0x05, 0x5a, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x58, 0x9e, 0x3b, 0x1e, 0x1f, 0x3a, 0x11, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x1b, 0x8c, 0xb5, 0xcf, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x2b, 0x29, 0x90, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x2c, 0x7f, 0x97, 0x3b, 0x1e, 0x1f, 0x87, 0x0e, 0xdd, 0x8f, 0x86, 0x5d, 0xb8, 0xc5, 0xc3, 0x77, 0x2d, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x4b, 0x51, 0x92, 0x36, 0x58, 0x8a, 0x92, 0x74, 0x38, 0xc5, 0x36, 0x58, 0xc5, 0x7d, 0x74, 0xb0, 0xb0, 0xf0, 0x68, 0xd8, 0x85, 0x5b, 0x3c, 0x28, 0x59, 0xd8, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0xe7, 0x24, 0x6d, 0xb0, 0x3c, 0x27, 0xe9, 0x70, 0x8a, 0x2d, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0x50, 0x10, 0x1d, 0x1c, 0xac, 0x52, 0x47, 0x3a, 0x34, 0x05, 0x1a, 0x04, 0x1b, 0x2c, 0xa9, 0x48, 0x3a, 0xb4, 0x00, 0x1b, 0x76, 0xe1, 0x16, 0x0f, 0xce, 0x83, 0x1d, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x8b, 0xaa, 0x92, 0x36, 0x58, 0x54, 0x95, 0x74, 0x38, 0xc5, 0x0e, 0x16, 0xe8, 0x1c, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0x07, 0x2c, 0xba, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xb5, 0x64, 0x49, 0x1b, 0xac, 0x25, 0x4b, 0x3a, 0x9c, 0x62, 0x1b, 0xac, 0xe2, 0x3e, 0x3a, 0x58, 0xf4, 0x94, 0x34, 0xec, 0xc2, 0x2d, 0x1e, 0xbe, 0xc2, 0x39, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x65, 0x97, 0xb4, 0xc1, 0x2a, 0xbb, 0xa4, 0xc3, 0x29, 0x76, 0xb0, 0x40, 0xe7, 0x68, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0x31, 0xb9, 0xb9, 0xf3, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x59, 0x61, 0xd2, 0x06, 0xcb, 0x0a, 0x93, 0x0e, 0xa7, 0xd8, 0x06, 0x8b, 0x0f, 0x92, 0x0e, 0x16, 0x16, 0x1e, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0x85, 0x72, 0xe7, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xda, 0xcb, 0xa4, 0x0d, 0xd6, 0x5e, 0x26, 0x1d, 0x4e, 0xb1, 0x83, 0xf5, 0x91, 0x49, 0xc3, 0x2e, 0xdc, 0xe2, 0xe1, 0x17, 0xa5, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x15, 0xa7, 0x49, 0x1b, 0xac, 0x38, 0x4d, 0x3a, 0x9c, 0x62, 0x07, 0xeb, 0x23, 0x93, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x32, 0xef, 0xf2, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x89, 0x6d, 0xd2, 0x06, 0x4b, 0x6c, 0x93, 0x0e, 0xa7, 0xd8, 0xc1, 0xda, 0xa2, 0xa4, 0x61, 0x17, 0x6e, 0xf1, 0x20, 0xe4, 0xd7, 0x0e, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x16, 0x16, 0x27, 0x6d, 0xb0, 0xb0, 0x38, 0xe9, 0x70, 0x8a, 0x1d, 0x2c, 0xd0, 0x39, 0x1a, 0x76, 0xe1, 0x16, 0x03, 0x7f, 0x8c, 0x6d, 0x4c, 0x3c, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x4c, 0x9d, 0xb4, 0xc1, 0x62, 0xea, 0xa4, 0xc3, 0x29, 0x76, 0xb0, 0x84, 0x26, 0x69, 0xd8, 0x85, 0x5b, 0x0c, 0xfc, 0x31, 0xb6, 0x35, 0xfa, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x39, 0x79, 0xd2, 0x06, 0xcb, 0xc9, 0x93, 0x0e, 0xa7, 0xd8, 0x06, 0xab, 0xb8, 0x8f, 0x16, 0x04, 0x1b, 0xac, 0xa3, 0x39, 0x3a, 0x74, 0x22, 0x5a, 0x10, 0x6c, 0xb0, 0x8e, 0xe6, 0xe8, 0x60, 0x09, 0xff, 0xcf, 0x20, 0xd8, 0x60, 0x1d, 0xcd, 0xd1, 0x41, 0x11, 0x3c, 0x38, 0xec, 0xc2, 0x2d, 0x1e, 0x14, 0x86, 0xaa, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xab, 0x07, 0x94, 0x36, 0x58, 0x3d, 0xa0, 0x74, 0x38, 0xc5, 0x0e, 0x96, 0xd0, 0x24, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0xe7, 0xfc, 0xa5, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x35, 0x13, 0x4a, 0x1b, 0xac, 0x99, 0x50, 0x3a, 0x9c, 0x62, 0x1b, 0xac, 0xe2, 0x3e, 0xda, 0x60, 0xf1, 0x7c, 0xd2, 0x20, 0xd8, 0x60, 0x1d, 0xcd, 0xd1, 0xa1, 0xfb, 0xd1, 0xb0, 0x0b, 0xb7, 0x78, 0x70, 0x74, 0x1d, 0x3c, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x97, 0xa2, 0xb4, 0xc1, 0xba, 0x14, 0xa5, 0xc3, 0x29, 0x76, 0xb0, 0xc8, 0x0e, 0x69, 0xd8, 0x85, 0x5b, 0x3c, 0xfc, 0xe2, 0x72, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x1c, 0x47, 0x69, 0x83, 0xe5, 0x38, 0x4a, 0x87, 0x53, 0xec, 0x60, 0x91, 0x1d, 0xd2, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x63, 0x6e, 0x63, 0xe2, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xfa, 0x23, 0xa5, 0x0d, 0xd6, 0x1f, 0x29, 0x1d, 0x4e, 0xb1, 0x05, 0xc1, 0x06, 0x8b, 0xc3, 0x8f, 0x0e, 0x4d, 0x81, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x0d, 0x06, 0x06, 0xe8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x51, 0x49, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xcb, 0xc7, 0x8f, 0x0e, 0x56, 0x42, 0x1c, 0x1d, 0x87, 0x8e, 0x43, 0x87, 0x16, 0x60, 0xc3, 0x2e, 0xdc, 0xe2, 0xc1, 0xa9, 0xe1, 0xe8, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x05, 0x9d, 0xd2, 0x06, 0x2b, 0xe8, 0x94, 0x0e, 0xa7, 0xd8, 0xc1, 0x12, 0x9a, 0xa4, 0x61, 0x17, 0x6e, 0xf1, 0xe0, 0xc4, 0x7e, 0x73, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x70, 0x50, 0x69, 0x83, 0x85, 0x83, 0x4a, 0x87, 0x53, 0xec, 0x60, 0x09, 0x4d, 0xd2, 0xb0, 0x0b, 0xb7, 0x78, 0x78, 0xb7, 0xe7, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0xbd, 0xa4, 0xd2, 0x06, 0xeb, 0x25, 0x95, 0x0e, 0xa7, 0xd8, 0x06, 0xab, 0xb8, 0x8f, 0x06, 0xc1, 0x06, 0x6b, 0xee, 0x90, 0x0e, 0x2d, 0xc0, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x24, 0xbc, 0xa4, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xa5, 0xa6, 0x4a, 0x1b, 0x2c, 0x35, 0x55, 0x3a, 0x9c, 0x62, 0x1b, 0x2c, 0xa5, 0x52, 0xda, 0x60, 0xf1, 0x7c, 0xd2, 0x20, 0xd8, 0x60, 0x85, 0x96, 0xd2, 0xa1, 0xfb, 0xd1, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x63, 0x6e, 0x6b, 0xf4, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x7a, 0x5e, 0xa5, 0x0d, 0xd6, 0xf3, 0x2a, 0x1d, 0x4e, 0xb1, 0x83, 0x75, 0xf1, 0x49, 0xc3, 0x2e, 0xdc, 0xe2, 0x41, 0xd1, 0x69, 0x7c, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0xa2, 0x59, 0x69, 0x83, 0x15, 0xcd, 0x4a, 0x87, 0x53, 0xec, 0x60, 0xc5, 0x87, 0xd2, 0xb0, 0x0b, 0xb7, 0x78, 0x50, 0x96, 0xbc, 0x1f, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xac, 0xe3, 0x56, 0xda, 0x60, 0x1d, 0xb7, 0xd2, 0xe1, 0x14, 0xdb, 0x60, 0x29, 0x95, 0xd2, 0x06, 0x8b, 0xe7, 0x93, 0x06, 0xc1, 0x06, 0x6b, 0xee, 0x90, 0x0e, 0xdd, 0x8f, 0x86, 0x5d, 0xb8, 0xc5, 0xc3, 0x25, 0x75, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x54, 0x5e, 0x69, 0x83, 0xa5, 0xf2, 0x4a, 0x87, 0x53, 0xec, 0x60, 0x21, 0x95, 0xd2, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x64, 0x74, 0x6b, 0xf4, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xba, 0x80, 0xa5, 0x0d, 0xd6, 0x05, 0x2c, 0x1d, 0x4e, 0xb1, 0x83, 0xf5, 0x91, 0x49, 0xc3, 0x2e, 0xdc, 0xe2, 0xe1, 0xe3, 0xa8, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x95, 0x11, 0x4b, 0x1b, 0xac, 0x8c, 0x58, 0x3a, 0x9c, 0x62, 0x07, 0x0b, 0x74, 0x8e, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0x27, 0xa3, 0xa3, 0x93, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0x82, 0x2c, 0x6d, 0xb0, 0x14, 0x64, 0xe9, 0x70, 0x8a, 0x1d, 0x2c, 0xa1, 0x49, 0x1a, 0x76, 0xe1, 0x16, 0x0f, 0xff, 0xe6, 0x1c, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x2c, 0x86, 0x59, 0xda, 0x60, 0x31, 0xcc, 0xd2, 0xe1, 0x14, 0x3b, 0x58, 0x42, 0x93, 0x34, 0xec, 0xc2, 0x2d, 0x06, 0x3e, 0x19, 0xdd, 0x1d, 0x7d, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0xfa, 0x67, 0x69, 0x83, 0xd5, 0x3f, 0x4b, 0x87, 0x53, 0xec, 0x60, 0x81, 0xce, 0xd1, 0xb0, 0x0b, 0xb7, 0x78, 0x90, 0xb4, 0x60, 0x74, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0xfe, 0x69, 0x69, 0x83, 0xf5, 0x4f, 0x4b, 0x87, 0x53, 0xec, 0x60, 0x81, 0xce, 0xd1, 0xb0, 0x0b, 0xb7, 0x78, 0x70, 0x6c, 0x73, 0x3c, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0xf7, 0xb5, 0xb4, 0xc1, 0xba, 0xaf, 0xa5, 0xc3, 0x29, 0x76, 0xb0, 0x84, 0x26, 0x69, 0xd8, 0x85, 0x5b, 0x3c, 0x7c, 0xfd, 0x72, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0xdc, 0x6d, 0x69, 0x83, 0xe5, 0x6e, 0x4b, 0x87, 0x53, 0xec, 0x60, 0x09, 0x4d, 0xd2, 0xb0, 0x0b, 0xb7, 0x78, 0xf8, 0x8b, 0xe6, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x7d, 0xdf, 0xd2, 0x06, 0xeb, 0xfb, 0x96, 0x0e, 0xa7, 0xd8, 0xc1, 0xfa, 0xc8, 0xa4, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xd7, 0xe8, 0xe0, 0xda, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x05, 0x8d, 0x4b, 0x1b, 0x2c, 0x68, 0x5c, 0x3a, 0x9c, 0x62, 0x07, 0x0b, 0x74, 0x8e, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0x5f, 0xa3, 0x9b, 0x3b, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0x74, 0x2e, 0x6d, 0xb0, 0xa4, 0x73, 0xe9, 0x70, 0x8a, 0x1d, 0x2c, 0xd0, 0x39, 0x1a, 0x76, 0xe1, 0x16, 0x0f, 0x9f, 0xbb, 0x1c, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x2c, 0x6a, 0x5d, 0xda, 0x60, 0x51, 0xeb, 0xd2, 0xe1, 0x14, 0x5b, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x78, 0x7f, 0xee, 0x78, 0x7c, 0x68, 0x0a, 0x74, 0xb0, 0xb0, 0xf0, 0x68, 0xd8, 0x85, 0x5b, 0x3c, 0x48, 0xbd, 0x28, 0x3e, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x46, 0xbc, 0xb4, 0xc1, 0x32, 0xe2, 0xa5, 0xc3, 0x29, 0x76, 0xb0, 0x40, 0xe7, 0x68, 0xd8, 0x85, 0x5b, 0x3c, 0x28, 0x04, 0x53, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0x4f, 0x2f, 0x6d, 0xb0, 0x7c, 0x7a, 0xe9, 0x70, 0x8a, 0x0d, 0x82, 0x0d, 0xd6, 0xca, 0x23, 0x1d, 0x3a, 0x68, 0x0c, 0xbb, 0x70, 0x8b, 0x87, 0x8f, 0xda, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xd6, 0x96, 0x2f, 0x6d, 0xb0, 0xb6, 0x7c, 0xe9, 0x70, 0x8a, 0x1d, 0xac, 0xfd, 0x5e, 0x1a, 0x76, 0xe1, 0x16, 0x03, 0x7f, 0xee, 0x4c, 0x4c, 0x3e, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x4c, 0xbf, 0xb4, 0xc1, 0x62, 0xfa, 0xa5, 0xc3, 0x29, 0x76, 0xb0, 0x84, 0x26, 0x69, 0xd8, 0x85, 0x5b, 0x3c, 0xbc, 0x65, 0x77, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x9c, 0x80, 0x69, 0x83, 0xe5, 0x04, 0x4c, 0x87, 0x53, 0xec, 0x60, 0x09, 0x4d, 0xd2, 0xb0, 0x0b, 0xb7, 0x78, 0x50, 0x76, 0xc9, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xac, 0x9f, 0x60, 0xda, 0x60, 0xfd, 0x04, 0xd3, 0xe1, 0x14, 0x5b, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0xb0, 0x5e, 0x5d, 0xee, 0x78, 0x7c, 0x68, 0x0a, 0xb4, 0xc1, 0xe2, 0xf9, 0xa4, 0x05, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x01, 0x63, 0x5f, 0xee, 0x78, 0x7c, 0xb0, 0x84, 0xff, 0xe7, 0x60, 0x5d, 0x7f, 0xd2, 0xb0, 0x0b, 0xb7, 0x78, 0x78, 0x7c, 0xe4, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0xbd, 0x0d, 0xd3, 0x06, 0xeb, 0x6d, 0x98, 0x0e, 0xa7, 0xd8, 0x06, 0xcb, 0x3f, 0x98, 0x0e, 0x16, 0x16, 0x1e, 0x0d, 0xbb, 0x70, 0x8b, 0x81, 0x3f, 0x77, 0x76, 0xc6, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xac, 0x41, 0x62, 0xda, 0x60, 0x0d, 0x12, 0xd3, 0xe1, 0x14, 0x5b, 0xd8, 0x0d, 0x8a, 0x93, 0xc1, 0x15, 0x04, 0x1b, 0xac, 0x7f, 0x41, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x0c, 0xa2, 0x95, 0xe3, 0xd0, 0x20, 0xd8, 0x60, 0x1d, 0xcd, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x60, 0xf0, 0xc7, 0x1c, 0x87, 0x0e, 0x96, 0x4b, 0x21, 0x1d, 0x2c, 0x2c, 0x3c, 0x1a, 0x76, 0xe1, 0x16, 0x0f, 0xce, 0x85, 0x0b, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x8b, 0xdd, 0x98, 0x36, 0x58, 0xec, 0xc6, 0x74, 0x38, 0xc5, 0x0e, 0x16, 0x53, 0x31, 0x0d, 0xbb, 0x70, 0x8b, 0x81, 0x3f, 0x77, 0x26, 0x36, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xac, 0xf1, 0x63, 0xda, 0x60, 0x8d, 0x1f, 0xd3, 0xe1, 0x14, 0xdb, 0x60, 0xb9, 0x14, 0xd2, 0xc1, 0xc2, 0xc2, 0xa3, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xe7, 0xce, 0xd8, 0xe6, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x85, 0x90, 0x4c, 0x1b, 0x2c, 0x84, 0x64, 0x3a, 0x9c, 0x62, 0x0b, 0x82, 0x0d, 0xd6, 0xf8, 0x17, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x87, 0x1e, 0x42, 0xc7, 0xa1, 0x83, 0x85, 0x85, 0x47, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0xcf, 0x9d, 0xc1, 0xb5, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x2b, 0x56, 0x99, 0x36, 0x58, 0xb1, 0xca, 0x74, 0x38, 0xc5, 0x16, 0x04, 0x1b, 0xac, 0xf1, 0x2f, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xf0, 0x50, 0xe6, 0xd0, 0x43, 0xe8, 0x38, 0x74, 0xb0, 0x28, 0x44, 0x69, 0xd8, 0x85, 0x5b, 0x0c, 0xfc, 0xb9, 0x33, 0xba, 0xf9, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x79, 0x31, 0xd3, 0x06, 0xcb, 0x8b, 0x99, 0x0e, 0xa7, 0xd8, 0xc1, 0x12, 0x9a, 0xa4, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xe7, 0xce, 0xee, 0xe8, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x05, 0xd6, 0x4c, 0x1b, 0x2c, 0xb0, 0x66, 0x3a, 0x9c, 0x62, 0x1b, 0x2c, 0xbe, 0x65, 0x3a, 0x58, 0x3a, 0x9f, 0x34, 0xec, 0xc2, 0x2d, 0x06, 0xfe, 0xdc, 0x99, 0x1e, 0x7c, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x0a, 0x9d, 0x69, 0x83, 0x55, 0xe8, 0x4c, 0x87, 0x53, 0xec, 0x60, 0x09, 0x4d, 0xd2, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x6d, 0x63, 0x74, 0xf3, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x3a, 0x7c, 0xa6, 0x0d, 0xd6, 0xe1, 0x33, 0x1d, 0x4e, 0xb1, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0xc3, 0x6f, 0xb0, 0xb8, 0x19, 0xe9, 0xa0, 0x64, 0x68, 0x3a, 0x74, 0xd0, 0x18, 0x76, 0xe1, 0x16, 0x0f, 0x92, 0x0c, 0x08, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x16, 0x3f, 0x34, 0x6d, 0xb0, 0xf8, 0xa1, 0xe9, 0x70, 0x8a, 0x1d, 0xac, 0xf3, 0x54, 0x1a, 0x76, 0xe1, 0x16, 0x03, 0xbf, 0x6d, 0xcc, 0x6c, 0x3e, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0xf4, 0xd1, 0xb4, 0xc1, 0xa2, 0x8f, 0xa6, 0xc3, 0x29, 0x76, 0xb0, 0x40, 0xe7, 0x68, 0xd8, 0x85, 0x5b, 0x0c, 0xfc, 0xb6, 0xb1, 0x33, 0xf6, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0xd9, 0x4b, 0xd3, 0x06, 0xcb, 0x5e, 0x9a, 0x0e, 0xa7, 0xd8, 0x06, 0x8b, 0x0f, 0x92, 0x0e, 0x96, 0xce, 0x27, 0x0d, 0xbb, 0x70, 0x8b, 0x81, 0xdf, 0x36, 0x36, 0x77, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xac, 0x0d, 0x6a, 0xda, 0x60, 0x6d, 0x50, 0xd3, 0xe1, 0x14, 0x3b, 0x58, 0xe7, 0xa9, 0x34, 0xec, 0xc2, 0x2d, 0x06, 0x7e, 0xdb, 0x58, 0xdb, 0x78, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x3a, 0xaa, 0x69, 0x83, 0xd5, 0x51, 0x4d, 0x87, 0x53, 0xec, 0x60, 0x7d, 0x64, 0xd2, 0xb0, 0x0b, 0xb7, 0x78, 0x50, 0xda, 0x5b, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xac, 0x0f, 0x6b, 0xda, 0x60, 0x7d, 0x58, 0xd3, 0xe1, 0x14, 0x3b, 0x58, 0x1f, 0x99, 0x34, 0xec, 0xc2, 0x2d, 0x06, 0x3e, 0xdd, 0xdc, 0x18, 0x7b, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x2a, 0xae, 0x69, 0x83, 0x55, 0x71, 0x4d, 0x87, 0x53, 0x6c, 0x41, 0xb0, 0xc1, 0x0a, 0x2d, 0xa5, 0x43, 0x53, 0xa0, 0x83, 0x85, 0x85, 0x47, 0xc3, 0x2e, 0xdc, 0xe2, 0x41, 0x41, 0x1a, 0x7b, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0xc2, 0xb0, 0x69, 0x83, 0x15, 0x86, 0x4d, 0x87, 0x53, 0x6c, 0x83, 0xe5, 0xb8, 0x4b, 0x07, 0x8b, 0x42, 0x94, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0xa7, 0x9b, 0x6b, 0x1b, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0x5e, 0x36, 0x6d, 0xb0, 0xf4, 0xb2, 0xe9, 0x70, 0x8a, 0x1d, 0x2c, 0x8f, 0x6c, 0x1a, 0x76, 0xe1, 0x16, 0x0f, 0x8a, 0x3e, 0xdd, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xc5, 0xa7, 0x4d, 0x1b, 0x2c, 0x3e, 0x6d, 0x3a, 0x9c, 0x62, 0x1b, 0x2c, 0xa5, 0x52, 0x3a, 0x58, 0x14, 0xa2, 0x34, 0xec, 0xc2, 0x2d, 0x1e, 0x1c, 0xc7, 0x26, 0x0e, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x56, 0xe5, 0x36, 0x6d, 0xb0, 0x2a, 0xb7, 0xe9, 0x70, 0x8a, 0x6d, 0xb0, 0x94, 0x4a, 0xe9, 0x60, 0xe9, 0x7c, 0xd2, 0xb0, 0x0b, 0xb7, 0x78, 0x78, 0x50, 0xf2, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0xbd, 0x72, 0xd3, 0x06, 0xeb, 0x95, 0x9b, 0x0e, 0xa7, 0xd8, 0xc1, 0x12, 0x9a, 0xa4, 0x61, 0x17, 0x6e, 0xf1, 0xe0, 0x68, 0xc3, 0x77, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x40, 0xbb, 0x69, 0x83, 0x05, 0xda, 0x4d, 0x87, 0x53, 0xec, 0x60, 0x09, 0x4d, 0xd2, 0xb0, 0x0b, 0xb7, 0x78, 0x50, 0x4a, 0x88, 0x1f, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xac, 0x4b, 0x6f, 0xda, 0x60, 0x5d, 0x7a, 0xd3, 0xe1, 0x14, 0x3b, 0x58, 0x42, 0x93, 0x34, 0xec, 0xc2, 0x2d, 0x1e, 0x14, 0x1d, 0xb4, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xab, 0xf1, 0x9b, 0x36, 0x58, 0x8d, 0xdf, 0x74, 0x38, 0xc5, 0x36, 0x58, 0x8e, 0xbb, 0xb4, 0x20, 0xd8, 0x60, 0x71, 0xf8, 0xd1, 0xa1, 0x13, 0xd1, 0xc1, 0x22, 0xfc, 0xa4, 0x61, 0x17, 0x6e, 0xf1, 0xf0, 0x89, 0xcd, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x82, 0x07, 0xa7, 0x0d, 0x16, 0x3c, 0x38, 0x1d, 0x4e, 0xb1, 0x83, 0x25, 0x34, 0x49, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0xd3, 0xcd, 0xcd, 0x9d, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x2b, 0x3c, 0x9c, 0x36, 0x58, 0xe1, 0xe1, 0x74, 0x38, 0xc5, 0x0e, 0x16, 0xd9, 0x21, 0x0d, 0xbb, 0x70, 0x8b, 0x81, 0x4f, 0x37, 0x47, 0x27, 0x1f, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xac, 0x71, 0x71, 0xda, 0x60, 0x8d, 0x8b, 0xd3, 0xe1, 0x14, 0x5b, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0xd8, 0x60, 0x54, 0x92, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x49, 0x81, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x41, 0x74, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xc1, 0x6a, 0x7a, 0xa4, 0xe3, 0xd0, 0x71, 0xe8, 0xd0, 0x14, 0xe8, 0x60, 0x51, 0x88, 0xd2, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x74, 0x73, 0x63, 0xed, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xfa, 0x2b, 0xa7, 0x0d, 0xd6, 0x5f, 0x39, 0x1d, 0x4e, 0xb1, 0x83, 0x25, 0x34, 0x49, 0xc3, 0x2e, 0xdc, 0xe2, 0xe1, 0x57, 0xb2, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x15, 0x68, 0x4e, 0x1b, 0xac, 0x40, 0x73, 0x3a, 0x9c, 0x62, 0x07, 0x8b, 0xec, 0x90, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x20, 0x3d, 0x3d, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x72, 0xe7, 0xb4, 0xc1, 0x92, 0x3b, 0xa7, 0xc3, 0x29, 0xb6, 0xc1, 0x52, 0x2a, 0xa5, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x83, 0x81, 0x01, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x54, 0x92, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0xd4, 0xe4, 0x74, 0xb0, 0x12, 0xe2, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0xb4, 0x00, 0x1b, 0x76, 0xe1, 0x16, 0x0f, 0x1f, 0xe4, 0x1c, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x2c, 0xf2, 0x74, 0xda, 0x60, 0x91, 0xa7, 0xd3, 0xe1, 0x14, 0x3b, 0x58, 0xf1, 0xa1, 0x34, 0xec, 0xc2, 0x2d, 0x1e, 0x14, 0x3b, 0x9a, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xab, 0x5a, 0x9d, 0x36, 0x58, 0xd5, 0xea, 0x74, 0x38, 0xc5, 0x0e, 0x56, 0x7c, 0x28, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0xc5, 0x80, 0xec, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x5a, 0x5e, 0xa7, 0x0d, 0xd6, 0xf2, 0x3a, 0x1d, 0x4e, 0xb1, 0x83, 0x95, 0xb3, 0x4d, 0xc3, 0x2e, 0xdc, 0xe2, 0xe1, 0xdd, 0xbc, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x15, 0xcc, 0x4e, 0x1b, 0xac, 0x60, 0x76, 0x3a, 0x9c, 0x62, 0x07, 0x4b, 0x68, 0x92, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x82, 0x0f, 0xf3, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0xc9, 0xb6, 0xd3, 0x06, 0x4b, 0xb6, 0x9d, 0x0e, 0xa7, 0xd8, 0xc1, 0x12, 0x9a, 0xa4, 0x61, 0x17, 0x6e, 0xf1, 0xe0, 0xe4, 0x20, 0x77, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x50, 0xdd, 0x69, 0x83, 0x85, 0xea, 0x4e, 0x87, 0x53, 0x6c, 0x83, 0xa5, 0x54, 0x4a, 0x1b, 0x2c, 0x9e, 0x4f, 0x1a, 0x04, 0x1b, 0xac, 0x2f, 0x74, 0x3a, 0x74, 0x3f, 0x1a, 0x76, 0xe1, 0x16, 0x0f, 0x8f, 0xb0, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x2c, 0x06, 0x78, 0xda, 0x60, 0x31, 0xc0, 0xd3, 0xe1, 0x14, 0x3b, 0x58, 0x64, 0x87, 0x34, 0xec, 0xc2, 0x2d, 0x1e, 0x14, 0x04, 0xb3, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xab, 0x1f, 0x9e, 0x36, 0x58, 0xfd, 0xf0, 0x74, 0x38, 0xc5, 0x0e, 0x56, 0xce, 0x36, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0x25, 0x3c, 0xe6, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x9a, 0x8f, 0xa7, 0x0d, 0xd6, 0x7c, 0x3c, 0x1d, 0x4e, 0xb1, 0x83, 0x95, 0xb3, 0x4d, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0xdf, 0xd1, 0xa1, 0xe1, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x2b, 0x5d, 0x9e, 0x36, 0x58, 0xe9, 0xf2, 0x74, 0x38, 0xc5, 0x36, 0x58, 0x8e, 0xbb, 0x74, 0xb0, 0x1a, 0xfc, 0x68, 0xd8, 0x85, 0x5b, 0x3c, 0x28, 0x26, 0x31, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0x03, 0x3d, 0x6d, 0xb0, 0x1c, 0xe8, 0xe9, 0x70, 0x8a, 0x6d, 0xb0, 0xf8, 0x20, 0xe9, 0x60, 0x35, 0xf8, 0xd1, 0xb0, 0x0b, 0xb7, 0x78, 0x78, 0x9b, 0xf5, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x9d, 0xd4, 0xd3, 0x06, 0xeb, 0xa4, 0x9e, 0x0e, 0xa7, 0xd8, 0xc1, 0x02, 0x9d, 0xa3, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xf5, 0xe0, 0xc6, 0xda, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x85, 0x61, 0x4f, 0x1b, 0x2c, 0x0c, 0x7b, 0x3a, 0x9c, 0x62, 0x07, 0x4b, 0x68, 0x92, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0xd7, 0x83, 0x3b, 0x93, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0xc6, 0x3d, 0x6d, 0xb0, 0x34, 0xee, 0xe9, 0x70, 0x8a, 0x1d, 0x2c, 0xd0, 0x39, 0x1a, 0x76, 0xe1, 0x16, 0x03, 0x5f, 0x0f, 0xee, 0x8c, 0x3d, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x1c, 0xf8, 0xb4, 0xc1, 0xe2, 0xc0, 0xa7, 0xc3, 0x29, 0x76, 0xb0, 0x3e, 0x32, 0x69, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0x3d, 0xb8, 0xb6, 0xf1, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x79, 0xe4, 0xd3, 0x06, 0xcb, 0x23, 0x9f, 0x0e, 0xa7, 0xd8, 0xc1, 0x12, 0x9a, 0xa4, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xf5, 0xe0, 0xe8, 0xe6, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x05, 0xa2, 0x4f, 0x1b, 0x2c, 0x10, 0x7d, 0x3a, 0x9c, 0x62, 0x07, 0x0b, 0x74, 0x8e, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0xd7, 0x83, 0x83, 0xa3, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0xc8, 0x3e, 0x6d, 0xb0, 0x44, 0xf6, 0xe9, 0x70, 0x8a, 0x2d, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0x30, 0x30, 0x40, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xcb, 0xd2, 0x94, 0x8e, 0x43, 0x87, 0xa6, 0x40, 0x07, 0x8b, 0x42, 0x94, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0xd7, 0x83, 0xbb, 0xa3, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0x3e, 0x3f, 0x6d, 0xb0, 0xf4, 0xf9, 0xe9, 0x70, 0x8a, 0x2d, 0xec, 0x06, 0xc5, 0xc9, 0xe0, 0x0a, 0x82, 0x0d, 0xd6, 0xf8, 0x17, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x07, 0x83, 0x68, 0xe5, 0x38, 0x34, 0x08, 0x36, 0x58, 0xe3, 0x5f, 0x74, 0x70, 0x58, 0x9f, 0x3e, 0x58, 0xd3, 0xc9, 0x74, 0xb0, 0xb0, 0xf0, 0x68, 0x61, 0x17, 0x6e, 0x43, 0x34, 0xc7, 0x83, 0x10, 0x55, 0xdd, 0x60, 0x69, 0xfd, 0xd3, 0xe1, 0x14, 0x3b, 0x18, 0x9a, 0xbf, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x18, 0x18, 0xa0, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xde, 0x73, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0xe2, 0x6c, 0x38, 0x14, 0x02, 0x5f, 0x2f, 0xcd, 0x6d, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0x92, 0x81, 0x52, 0x75, 0x58, 0xa1, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0xe5, 0x48, 0x49, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x48, 0x75, 0x97, 0x3b, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0xac, 0xcf, 0x1d, 0x8f, 0x8f, 0x43, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0xe1, 0xd7, 0x10, 0xc3, 0xe1, 0x37, 0x24, 0x97, 0x86, 0x5f, 0x10, 0x6c, 0x50, 0x10, 0x1d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x34, 0xfb, 0xdf, 0x77, 0x48, 0x2e, 0x1d, 0x87, 0x8e, 0x6f, 0x87, 0x9e, 0xa8, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x40, 0xe4, 0xbf, 0xcb, 0x1d, 0x8f, 0x0f, 0x8d, 0x5a, 0x0e, 0xfd, 0xa9, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x16, 0x37, 0x58, 0x77, 0x01, 0xb5, 0x61, 0x3a, 0x57, 0xc3, 0x41, 0x72, 0x10, 0x00, 0xf7, 0xb5, 0x38, 0x08, 0x56, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x90, 0xa8, 0x2e, 0x77, 0x3c, 0x3e, 0xa4, 0xe1, 0x36, 0x58, 0xa0, 0x7a, 0x34, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0x30, 0x2a, 0x49, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x85, 0x17, 0xd4, 0xf0, 0x1b, 0xcf, 0x0f, 0x16, 0x5d, 0x24, 0x1d, 0x87, 0x0e, 0x2d, 0xc0, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x18, 0x95, 0xa4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0xae, 0xe8, 0x68, 0xf8, 0x8d, 0xe7, 0x07, 0x2b, 0x63, 0x8f, 0x8e, 0x43, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0xb2, 0x30, 0x98, 0xc5, 0x41, 0xb0, 0xb0, 0x1b, 0xba, 0x66, 0x2e, 0x08, 0x36, 0x58, 0xff, 0x82, 0x74, 0x68, 0xd4, 0x32, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xb0, 0x1b, 0x04, 0xbd, 0xfe, 0x06, 0x23, 0x16, 0xeb, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x15, 0x04, 0x1b, 0xac, 0x7f, 0x41, 0x3a, 0xa4, 0xe1, 0x06, 0xc1, 0x06, 0x6b, 0xfc, 0x8b, 0x0e, 0x46, 0x15, 0xf6, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x6e, 0x10, 0xf4, 0xfa, 0x0b, 0xbb, 0xc1, 0xe8, 0xc5, 0x5a, 0xd8, 0x0d, 0x8a, 0x90, 0xc1, 0x0d, 0x12, 0xb8, 0x7e, 0x0e, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x0d, 0x16, 0x03, 0x43, 0x6d, 0xb0, 0x5c, 0x0a, 0x69, 0x10, 0x6c, 0xb0, 0xc6, 0xbf, 0xe8, 0xe0, 0x98, 0xdd, 0xbb, 0xc1, 0x62, 0x60, 0xa8, 0x0d, 0x96, 0x4b, 0x21, 0x2d, 0x08, 0x36, 0x58, 0xe3, 0x5f, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x1c, 0x1a, 0x17, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0x6b, 0xfc, 0x8b, 0x0e, 0xd2, 0x70, 0x09, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x6e, 0xc8, 0x63, 0xad, 0xa1, 0x59, 0xe4, 0x06, 0x8b, 0xad, 0x8b, 0x06, 0xc1, 0x06, 0x6b, 0xaf, 0x8b, 0x0e, 0x2d, 0xc0, 0x0e, 0x96, 0x8c, 0x17, 0x1d, 0xfa, 0x53, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x76, 0x43, 0xc7, 0x91, 0x05, 0xc1, 0x06, 0xab, 0x22, 0x91, 0x0e, 0x8d, 0x5a, 0x0e, 0x56, 0xc7, 0x42, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x40, 0xe1, 0xdf, 0x77, 0x48, 0x2e, 0x1d, 0xd2, 0x70, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x06, 0x03, 0x03, 0x74, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x20, 0xf0, 0xe5, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x8a, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x1b, 0x94, 0xa9, 0x73, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x35, 0x73, 0x35, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x1a, 0xda, 0x42, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0x02, 0x5d, 0xee, 0x78, 0x7e, 0xe8, 0xa0, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x28, 0xfe, 0xfb, 0x0e, 0x2b, 0xb4, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x43, 0x53, 0x92, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0x23, 0x24, 0xea, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xb0, 0x1b, 0x3a, 0x8e, 0xac, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xdf, 0x9d, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0xa4, 0x85, 0x66, 0x1f, 0xb2, 0x76, 0xc7, 0xa1, 0x41, 0xb0, 0xc1, 0xb2, 0xc2, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x0b, 0x19, 0xa3, 0x0e, 0xf9, 0xda, 0xe3, 0xd0, 0x20, 0xd8, 0x60, 0x59, 0x61, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x85, 0x8c, 0x51, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x36, 0x28, 0xa8, 0xc5, 0x16, 0x07, 0xc1, 0x0a, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x48, 0xff, 0x6d, 0x38, 0xa4, 0xe1, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x1d, 0x94, 0x0c, 0x4d, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x05, 0xb5, 0xd8, 0xe2, 0x20, 0x58, 0xd8, 0x0d, 0x82, 0x61, 0x7f, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0xab, 0xa2, 0x91, 0x0e, 0x8d, 0x5a, 0x16, 0x76, 0xe1, 0x16, 0x0f, 0x8e, 0x19, 0xa0, 0x87, 0x68, 0x2e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x62, 0xe6, 0xa8, 0x0d, 0x16, 0x33, 0x47, 0x1d, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xdb, 0xc2, 0xdc, 0xf0, 0x43, 0x34, 0x17, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x81, 0x76, 0xd4, 0x06, 0x0b, 0xb4, 0xa3, 0x0e, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x6d, 0x61, 0x72, 0xec, 0x21, 0x9a, 0x0b, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0xfe, 0x3c, 0x6a, 0x83, 0xf5, 0xe7, 0x51, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x31, 0xf0, 0xc7, 0xc2, 0xd8, 0xd8, 0x0d, 0x16, 0xdc, 0x47, 0x1d, 0x4e, 0xb1, 0x83, 0xb5, 0x5c, 0x51, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x0d, 0xca, 0xd4, 0xb9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x43, 0x53, 0x92, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x83, 0x32, 0x75, 0x6e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0xf3, 0x13, 0xed, 0x71, 0xe8, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0x48, 0xdc, 0xef, 0x59, 0x1c, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0x92, 0x81, 0xb9, 0x3a, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0x99, 0xab, 0x39, 0x38, 0x9b, 0xf4, 0x1e, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0xc4, 0xfd, 0x9e, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0xc1, 0x1a, 0x1a, 0xa9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0x15, 0x8d, 0x74, 0x70, 0x36, 0xe9, 0x3d, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0x30, 0x30, 0x40, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x14, 0x44, 0x07, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0xa5, 0x9e, 0x50, 0xc7, 0xa1, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x0d, 0x06, 0x06, 0xe8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x40, 0xf1, 0x2e, 0x77, 0x3c, 0x3e, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0xe2, 0xe1, 0x50, 0x58, 0x1c, 0x04, 0x0b, 0xbb, 0x70, 0x8b, 0x81, 0x77, 0x57, 0x46, 0x1f, 0x52, 0x07, 0x0b, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0x6b, 0x29, 0xa5, 0x36, 0x58, 0x4b, 0x29, 0x75, 0x38, 0xc5, 0x86, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0x15, 0x90, 0x52, 0x1b, 0xac, 0x80, 0x94, 0x3a, 0x9c, 0x62, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0x42, 0x13, 0xa3, 0xc5, 0x41, 0xb0, 0xb0, 0x1b, 0x3a, 0x8e, 0x2c, 0xec, 0xc2, 0x6d, 0xb0, 0xf0, 0xc2, 0xe8, 0x10, 0xcd, 0x35, 0x58, 0x4e, 0x61, 0xb4, 0xc1, 0x72, 0x29, 0xa4, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x83, 0x82, 0xe8, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0xb0, 0x58, 0x03, 0xe9, 0x38, 0x74, 0x68, 0x01, 0x36, 0xec, 0xc2, 0x6d, 0xb0, 0x70, 0xc6, 0xe8, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0xe1, 0x8c, 0xd1, 0xc1, 0xc2, 0x1d, 0xa3, 0x0d, 0x16, 0xa8, 0x1e, 0x0d, 0x82, 0x0d, 0x96, 0x84, 0x1c, 0x1d, 0x5a, 0x80, 0x0d, 0xbb, 0x70, 0x8b, 0x87, 0x19, 0x3a, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0xd3, 0x2d, 0xb5, 0xc1, 0x9a, 0x6e, 0xa9, 0xc3, 0x29, 0xb6, 0xc1, 0x02, 0xd5, 0xa3, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x40, 0xe3, 0xea, 0x72, 0xc7, 0xe3, 0x43, 0x0b, 0xb0, 0x61, 0x17, 0x6e, 0xf1, 0x30, 0xf7, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x0b, 0xe9, 0xa5, 0x36, 0x58, 0x48, 0x2f, 0x75, 0x38, 0xc5, 0x16, 0x76, 0x83, 0xe2, 0x64, 0x70, 0x41, 0xb0, 0xc1, 0xaa, 0x48, 0xa4, 0x43, 0x53, 0xa0, 0x83, 0xe5, 0x52, 0x48, 0x07, 0x6b, 0xae, 0xa5, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0x37, 0x7b, 0x93, 0x5b, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0x32, 0x4c, 0x6d, 0xb0, 0x94, 0x61, 0xea, 0x70, 0x8a, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x1b, 0x0c, 0xbc, 0xd4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0x16, 0x8d, 0x1c, 0x1d, 0x87, 0x0e, 0x1d, 0x34, 0x86, 0x5d, 0xb8, 0xc5, 0x43, 0x31, 0x3d, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x9a, 0x32, 0xb5, 0xc1, 0xd2, 0x94, 0xa9, 0xc3, 0x29, 0xb6, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0xc1, 0xa8, 0x24, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x3e, 0x64, 0x6a, 0xf8, 0x8d, 0xe7, 0x07, 0xab, 0x8d, 0x8f, 0x8e, 0x43, 0x87, 0xa6, 0x40, 0x07, 0x6b, 0xae, 0xa5, 0x16, 0x76, 0xe1, 0x36, 0x44, 0x73, 0x3c, 0xd4, 0x91, 0x0d, 0x96, 0x2b, 0x4d, 0x1d, 0x4e, 0xb1, 0x0d, 0x16, 0xa8, 0x1e, 0x1d, 0x2c, 0x2c, 0x3c, 0x1a, 0x76, 0x83, 0xc5, 0x25, 0x46, 0x1b, 0xac, 0x4c, 0x31, 0x3a, 0x58, 0x9f, 0x65, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0xd8, 0x0d, 0x1d, 0x47, 0x16, 0x76, 0x43, 0x1e, 0x6b, 0x83, 0xc5, 0x40, 0x47, 0x1b, 0xfa, 0x34, 0x6e, 0xb0, 0xf8, 0x96, 0x69, 0x10, 0x6c, 0xb0, 0xd8, 0x28, 0xe9, 0xd0, 0x02, 0xec, 0x60, 0x75, 0x2c, 0xd4, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x6b, 0xfc, 0x8b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0xca, 0xa0, 0x39, 0xa4, 0x6a, 0x8e, 0x43, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb0, 0x38, 0xe0, 0xb3, 0x85, 0xe9, 0xe5, 0x87, 0x53, 0x6c, 0x71, 0x10, 0x2c, 0xec, 0xc2, 0x2d, 0x06, 0x3e, 0x5a, 0x18, 0x9b, 0x79, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0xba, 0x71, 0x6a, 0x83, 0xd5, 0x8d, 0x53, 0x87, 0x53, 0x6c, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x40, 0xea, 0xbb, 0xdc, 0xf1, 0xf8, 0xd0, 0x14, 0x68, 0x10, 0x6c, 0xb0, 0x6e, 0x73, 0xea, 0xd0, 0x02, 0x6c, 0xd8, 0x85, 0x5b, 0x3c, 0x1c, 0x24, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xcb, 0x51, 0xa7, 0x36, 0x58, 0x8e, 0x3a, 0x75, 0x38, 0xc5, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x0d, 0x06, 0x5e, 0xea, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xe0, 0x5d, 0xb9, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0x41, 0x63, 0x61, 0x17, 0x6e, 0x43, 0x34, 0xc7, 0x83, 0xf5, 0x86, 0x53, 0x1b, 0x2c, 0x39, 0x9e, 0x3a, 0x9c, 0x62, 0x0b, 0x82, 0x0d, 0x56, 0x0d, 0x1d, 0x1d, 0x9a, 0x02, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0x52, 0xd5, 0xe5, 0x8e, 0xc7, 0x87, 0x16, 0x60, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x10, 0xac, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0xa0, 0x50, 0x97, 0x3b, 0x1e, 0x1f, 0xd2, 0x70, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x80, 0xf3, 0xba, 0xdc, 0xf1, 0xf8, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x1b, 0x8c, 0x4a, 0xd2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xcf, 0xcf, 0x1d, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x6b, 0x9f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x56, 0x52, 0x20, 0x1d, 0xac, 0x84, 0x38, 0x3a, 0x0e, 0x1d, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0xe5, 0xa0, 0x94, 0x37, 0x3c, 0x9c, 0x62, 0x8b, 0x83, 0x60, 0x05, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x01, 0xc3, 0x7a, 0xee, 0x78, 0x7c, 0x48, 0xc3, 0x2d, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0x30, 0xd6, 0x3e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x8d, 0xae, 0xd1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x6b, 0xfc, 0x8b, 0x0e, 0x16, 0x26, 0xff, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0x87, 0xa6, 0x40, 0x83, 0x60, 0x83, 0xc5, 0x26, 0x54, 0x87, 0x16, 0x60, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x07, 0x8b, 0xd9, 0xa0, 0x16, 0x07, 0xc1, 0x0a, 0x82, 0x0d, 0xd6, 0x6d, 0x4e, 0x1d, 0xd2, 0x70, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0x56, 0x2b, 0x41, 0x1d, 0x3a, 0x68, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0x06, 0x0b, 0x4d, 0x8c, 0x16, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x80, 0xf4, 0x7f, 0xb9, 0xe3, 0xf1, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x2c, 0x1e, 0x84, 0xe0, 0xc3, 0xe2, 0x20, 0x58, 0xd8, 0x0d, 0x56, 0x31, 0x1d, 0x6d, 0xb0, 0x08, 0xea, 0x68, 0xd8, 0x0d, 0x56, 0xc1, 0x1d, 0xad, 0xc1, 0xba, 0xba, 0xa3, 0x0d, 0x16, 0xf7, 0x1d, 0x1d, 0x2c, 0x8e, 0x47, 0x1a, 0x76, 0xe1, 0x16, 0x0f, 0x4f, 0xbc, 0x1f, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x2c, 0xf6, 0xa3, 0xda, 0x60, 0xb1, 0x1f, 0xd5, 0xe1, 0x14, 0x5b, 0x61, 0x17, 0x6e, 0x83, 0xe1, 0x45, 0x31, 0x1e, 0xee, 0xb4, 0x0d, 0x56, 0x37, 0x52, 0x1d, 0x4e, 0xb1, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x40, 0xf2, 0xbb, 0xdc, 0xf1, 0xf8, 0x60, 0xdd, 0x18, 0xd3, 0xc1, 0xe2, 0x78, 0xa4, 0x61, 0x37, 0x28, 0x65, 0xfd, 0xd6, 0xa0, 0x74, 0xf6, 0x3b, 0x58, 0xeb, 0x0d, 0x35, 0xec, 0xc2, 0x2d, 0x1e, 0xfe, 0x9d, 0x3f, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x65, 0x4a, 0xb5, 0xc1, 0x2a, 0x53, 0xaa, 0xc3, 0x29, 0xb6, 0xc1, 0x52, 0x2a, 0xa5, 0x41, 0xb0, 0xc1, 0xe2, 0xdf, 0xa7, 0x43, 0x0b, 0xb0, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xd9, 0xde, 0xde, 0xe0, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x05, 0xba, 0x54, 0x1b, 0x2c, 0xd0, 0xa5, 0x3a, 0x9c, 0x62, 0x07, 0x0b, 0x5e, 0x90, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0x6f, 0x0b, 0x23, 0x2b, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0x28, 0x53, 0x6d, 0xb0, 0x44, 0x99, 0xea, 0x70, 0x8a, 0x2d, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0x30, 0x2a, 0x49, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0xa4, 0x40, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x60, 0x80, 0x1e, 0xac, 0x52, 0x47, 0x3a, 0x0e, 0x1d, 0x9a, 0x02, 0x1d, 0x2c, 0x8e, 0x47, 0x1a, 0x76, 0xe1, 0x16, 0x0f, 0x42, 0xbf, 0xe4, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x91, 0x3b, 0xd5, 0x06, 0x8b, 0xdc, 0xa9, 0x0e, 0xa7, 0xd8, 0x06, 0xab, 0xb8, 0x8f, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x0d, 0x06, 0x06, 0xe8, 0xc1, 0x2a, 0x25, 0xa7, 0x43, 0x0b, 0xb0, 0x61, 0x17, 0x6e, 0xf1, 0xf0, 0x7d, 0xfb, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x82, 0x83, 0xaa, 0x0d, 0x16, 0x1c, 0x54, 0x1d, 0x4e, 0xb1, 0x0d, 0x96, 0x4b, 0x21, 0x1d, 0x2c, 0x8e, 0x47, 0x1a, 0x76, 0xe1, 0x16, 0x03, 0xff, 0xcd, 0xae, 0x4c, 0x3e, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x84, 0x51, 0xb5, 0xc1, 0x22, 0x8c, 0xaa, 0xc3, 0x29, 0xb6, 0xc1, 0x52, 0x2a, 0xa5, 0x83, 0xc5, 0xf1, 0x48, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0x8b, 0x8d, 0x9d, 0xc9, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x2b, 0x55, 0xaa, 0x36, 0x58, 0xa9, 0x52, 0x75, 0x38, 0xc5, 0x36, 0x58, 0x7c, 0x90, 0x74, 0xb0, 0x38, 0x1e, 0x69, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0xb1, 0x31, 0xb1, 0xf1, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x39, 0x4f, 0xd5, 0x06, 0xcb, 0x79, 0xaa, 0x0e, 0xa7, 0xd8, 0x06, 0x8b, 0x0f, 0x92, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x0d, 0xc6, 0xda, 0xe7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x95, 0x14, 0x48, 0x07, 0x8b, 0x9a, 0x9c, 0x8e, 0x43, 0x87, 0x16, 0x60, 0xc3, 0x2e, 0xdc, 0xe2, 0xc1, 0x99, 0xe8, 0xe3, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x25, 0x57, 0xd5, 0x06, 0x2b, 0xb9, 0xaa, 0x0e, 0xa7, 0xd8, 0xc1, 0xfa, 0xc8, 0xa4, 0x61, 0x17, 0x6e, 0xf1, 0x20, 0x80, 0xce, 0x0e, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x16, 0xb0, 0x55, 0x6d, 0xb0, 0x80, 0xad, 0xea, 0x70, 0x8a, 0x1d, 0x2c, 0xd0, 0x39, 0x1a, 0x76, 0xe1, 0x16, 0x0f, 0x9f, 0x2b, 0x1d, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x2c, 0xda, 0xab, 0xda, 0x60, 0xd1, 0x5e, 0xd5, 0xe1, 0x14, 0xdb, 0x60, 0xf1, 0x41, 0xd2, 0xc1, 0x12, 0x7e, 0xaa, 0x61, 0x17, 0x6e, 0xf1, 0x20, 0x68, 0x7f, 0x0e, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x16, 0x32, 0x56, 0x6d, 0xb0, 0x90, 0xb1, 0xea, 0x70, 0x8a, 0x1d, 0x2c, 0x36, 0xac, 0x1a, 0x76, 0xe1, 0x16, 0x03, 0x5f, 0x6c, 0x8c, 0x8c, 0x3e, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0xbc, 0x59, 0xb5, 0xc1, 0xe2, 0xcd, 0xaa, 0xc3, 0x29, 0x76, 0xb0, 0x2e, 0xa9, 0x6a, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0xb1, 0xb1, 0x33, 0xf6, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0xf9, 0x6a, 0xd5, 0x06, 0xcb, 0x57, 0xab, 0x0e, 0xa7, 0xd8, 0xc1, 0x92, 0x9b, 0xaa, 0x61, 0x17, 0x6e, 0xf1, 0x20, 0x9c, 0xc6, 0x0e, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x16, 0xf0, 0x56, 0x6d, 0xb0, 0x80, 0xb7, 0xea, 0x70, 0x8a, 0x1d, 0x2c, 0xb9, 0xa9, 0x1a, 0x76, 0xe1, 0x16, 0x03, 0x5f, 0x6c, 0x6c, 0x8d, 0x3e, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0xb4, 0x5c, 0xb5, 0xc1, 0xa2, 0xe5, 0xaa, 0xc3, 0x29, 0x76, 0xb0, 0xe4, 0xa6, 0x6a, 0xd8, 0x85, 0x5b, 0x3c, 0x38, 0x40, 0x88, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x2c, 0xdb, 0xae, 0xda, 0x60, 0xd9, 0x76, 0xd5, 0xe1, 0x14, 0x5b, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0xd0, 0xf8, 0x7f, 0xdf, 0x21, 0xb9, 0x74, 0x68, 0x0a, 0x74, 0xb0, 0x38, 0x1e, 0x69, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0xb1, 0x31, 0xb3, 0xf9, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0xf9, 0x7c, 0xd5, 0x06, 0xcb, 0xe7, 0xab, 0x0e, 0xa7, 0xd8, 0xc1, 0xba, 0xa4, 0xaa, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xc5, 0xc6, 0xda, 0xc6, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x05, 0x04, 0x56, 0x1b, 0x2c, 0x20, 0xb0, 0x3a, 0x9c, 0x62, 0x07, 0x0b, 0x74, 0x8e, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0x17, 0x1b, 0x83, 0x6b, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0x50, 0x58, 0x6d, 0xb0, 0x84, 0xc2, 0xea, 0x70, 0x8a, 0x1d, 0xac, 0x8f, 0x4c, 0x1a, 0x76, 0xe1, 0x16, 0x0f, 0x42, 0x0d, 0xf1, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x11, 0x89, 0xd5, 0x06, 0x8b, 0x48, 0xac, 0x0e, 0xa7, 0xd8, 0x06, 0xab, 0xb8, 0x8f, 0x0e, 0x16, 0xc7, 0x23, 0x0d, 0xbb, 0x70, 0x8b, 0x81, 0x2f, 0x36, 0x46, 0x37, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xac, 0xad, 0xb1, 0xda, 0x60, 0x6d, 0x8d, 0xd5, 0xe1, 0x14, 0x3b, 0x58, 0x97, 0x54, 0x35, 0xec, 0xc2, 0x2d, 0x1e, 0xfe, 0x5c, 0x3a, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x5d, 0x64, 0xb5, 0xc1, 0xea, 0x22, 0xab, 0xc3, 0x29, 0xb6, 0xc1, 0x72, 0xdc, 0xa5, 0x83, 0xc5, 0xf1, 0x48, 0xc3, 0x2e, 0xdc, 0xe2, 0xe1, 0x83, 0xf9, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x15, 0x57, 0x56, 0x1b, 0xac, 0xb8, 0xb2, 0x3a, 0x9c, 0x62, 0x07, 0x4b, 0x6e, 0xaa, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x60, 0x33, 0x3d, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x62, 0x66, 0xb5, 0xc1, 0x12, 0x33, 0xab, 0xc3, 0x29, 0x76, 0xb0, 0xd8, 0xb0, 0x6a, 0x61, 0x17, 0x6e, 0x43, 0x34, 0xc7, 0xc0, 0x17, 0x1b, 0xd3, 0x83, 0x37, 0x58, 0x6a, 0x67, 0x75, 0x38, 0xc5, 0x0e, 0xd6, 0x25, 0x55, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x28, 0x88, 0x0e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0x03, 0xfe, 0x5d, 0x58, 0x1a, 0xdd, 0xe2, 0x20, 0x58, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0xb2, 0x37, 0xb7, 0xf2, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0xb9, 0xa5, 0xd5, 0x06, 0xcb, 0x2d, 0xad, 0x0e, 0xa7, 0xd8, 0xc1, 0x0a, 0x29, 0xaa, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x1c, 0x0f, 0xd6, 0x44, 0x5a, 0x6d, 0xb0, 0x08, 0xd5, 0xea, 0x70, 0x8a, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x1b, 0x0c, 0x0c, 0xd0, 0x83, 0xf5, 0xb9, 0x53, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x0d, 0x06, 0x06, 0xe8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xe0, 0x9c, 0x3b, 0x1e, 0x1f, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0x71, 0x0e, 0xc2, 0x53, 0x75, 0x71, 0x10, 0x2c, 0xec, 0x86, 0x3c, 0xd6, 0x1a, 0x9a, 0x45, 0x6e, 0xb0, 0xba, 0x28, 0xe9, 0x60, 0x35, 0xf8, 0xd1, 0x86, 0x3e, 0x8d, 0x1b, 0xac, 0x2e, 0x4a, 0x3a, 0x58, 0x58, 0x78, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x18, 0x18, 0xa0, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x16, 0x5a, 0x5b, 0x2d, 0x0e, 0x82, 0x35, 0x58, 0x0c, 0x0c, 0x75, 0xb0, 0x40, 0xe7, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0xc2, 0x6e, 0x10, 0x0c, 0xfb, 0x2b, 0x08, 0x36, 0x58, 0xf7, 0x7a, 0x74, 0x48, 0xc3, 0x0d, 0x82, 0x0d, 0xd6, 0xbd, 0x1e, 0x1d, 0x3a, 0x68, 0x0c, 0xbb, 0xa1, 0xe1, 0xe2, 0x06, 0x69, 0xdb, 0x3e, 0xc3, 0x6e, 0xb0, 0xc4, 0xd7, 0x67, 0x0d, 0x92, 0xc2, 0x7d, 0x16, 0x04, 0x1b, 0xac, 0x7b, 0x3d, 0x3a, 0x34, 0x05, 0x3a, 0x58, 0xe8, 0x7a, 0x34, 0xec, 0xc2, 0x1d, 0x2c, 0x8a, 0x4f, 0x59, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xfd, 0xc9, 0x37, 0xf4, 0x27, 0x3f, 0x9c, 0x62, 0x07, 0x6b, 0x27, 0xae, 0x86, 0x5d, 0xb8, 0x83, 0x84, 0xcd, 0x8a, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xa0, 0x8c, 0xdb, 0xd9, 0xa0, 0x8c, 0xdb, 0x39, 0x9c, 0x62, 0x07, 0x6b, 0x27, 0xae, 0x86, 0x5d, 0xb8, 0x0d, 0x0a, 0x3b, 0x9c, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xc2, 0x0e, 0x67, 0x83, 0xc2, 0x0e, 0xe7, 0x70, 0x8a, 0x1d, 0x2c, 0x0d, 0xb9, 0x1a, 0x76, 0xe1, 0x36, 0x18, 0xcd, 0xe7, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xa3, 0xf9, 0x7c, 0x83, 0xd1, 0x7c, 0x7e, 0x38, 0xc5, 0x36, 0x58, 0x1c, 0x72, 0xb5, 0x20, 0xd8, 0x60, 0xdd, 0xeb, 0xd1, 0xa1, 0x13, 0xd1, 0x20, 0xd8, 0x60, 0xdd, 0xeb, 0xd1, 0xa1, 0xfb, 0xd1, 0xb0, 0x0b, 0xb7, 0xc1, 0x90, 0x47, 0x3f, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x18, 0xf2, 0xe8, 0x1b, 0x0c, 0x79, 0xf4, 0xc3, 0x29, 0x76, 0xb0, 0x34, 0xe4, 0x6a, 0xd8, 0x85, 0xdb, 0xa0, 0x00, 0x80, 0x3a, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x28, 0x00, 0xa0, 0x36, 0x28, 0x00, 0xa0, 0x0e, 0xa7, 0xd8, 0xc1, 0xd2, 0x90, 0xab, 0x61, 0x17, 0x6e, 0x83, 0x73, 0x4b, 0xf1, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xb9, 0xa5, 0x78, 0x83, 0x73, 0x4b, 0xf1, 0xe1, 0x14, 0xdb, 0x60, 0x4d, 0x27, 0xd3, 0xc1, 0x42, 0xd7, 0xa3, 0x61, 0x37, 0x58, 0x3b, 0x29, 0xb2, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x1c, 0x79, 0x8a, 0x37, 0x38, 0xf2, 0x14, 0x1f, 0x4e, 0xb1, 0x35, 0x58, 0xf3, 0xfd, 0x34, 0x08, 0x36, 0x58, 0xf7, 0x7a, 0x74, 0xb0, 0x6e, 0x8c, 0xe9, 0x60, 0xa1, 0xeb, 0xd1, 0xb0, 0x0b, 0xb7, 0xc1, 0x31, 0x30, 0xff, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x18, 0x98, 0xbf, 0xc1, 0x31, 0x30, 0xff, 0x70, 0x8a, 0x2d, 0xec, 0x06, 0xc5, 0xc9, 0xe0, 0x06, 0x4b, 0x44, 0xaf, 0x0e, 0xd6, 0x74, 0x32, 0x1d, 0x2c, 0x74, 0x3d, 0x1a, 0x76, 0xe1, 0x36, 0x58, 0x0c, 0x40, 0x74, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x18, 0x80, 0x68, 0x83, 0xc5, 0x00, 0x44, 0x87, 0x53, 0xec, 0x60, 0x69, 0xc8, 0xd5, 0x86, 0x66, 0x91, 0x07, 0x4b, 0x8a, 0xa1, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x96, 0x60, 0x50, 0x2d, 0x0e, 0x82, 0x35, 0x58, 0xda, 0x41, 0xb5, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0xc1, 0x58, 0xfb, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x92, 0x02, 0xe9, 0x60, 0x9d, 0x0c, 0xd5, 0x71, 0xe8, 0xd0, 0x14, 0x68, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0xd8, 0x60, 0xac, 0x7d, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0xeb, 0x42, 0x35, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xa0, 0xf9, 0x77, 0xb9, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0x02, 0xec, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xa1, 0x3f, 0xd5, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0xb8, 0xc1, 0x42, 0x65, 0xaa, 0xc3, 0x29, 0xb6, 0x38, 0x08, 0x16, 0x76, 0xe1, 0x36, 0x58, 0xdd, 0x48, 0x75, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0xba, 0x91, 0xea, 0x60, 0xe1, 0x23, 0xd5, 0x20, 0xd8, 0x60, 0xfd, 0x24, 0xd5, 0xa1, 0x83, 0xc6, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x6b, 0x6e, 0x6f, 0xf7, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xfa, 0x10, 0xac, 0x0d, 0xd6, 0x87, 0x60, 0x1d, 0x4e, 0xb1, 0x41, 0xb0, 0xc1, 0x2a, 0xf4, 0xaa, 0x43, 0x07, 0x8d, 0x0d, 0x16, 0x3a, 0x53, 0x6d, 0xb0, 0x5c, 0x0a, 0x69, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0xd8, 0xa0, 0x20, 0x3a, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0x60, 0x79, 0xf0, 0xd3, 0x71, 0xe8, 0xd0, 0x02, 0xec, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0xac, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0xc1, 0x58, 0xfb, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x92, 0x02, 0xe9, 0x60, 0x49, 0xc2, 0xd1, 0x71, 0xe8, 0x90, 0x86, 0x3b, 0x58, 0x64, 0x87, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x76, 0x43, 0xc7, 0x91, 0x35, 0xb4, 0x85, 0x3a, 0x58, 0xa0, 0x73, 0x74, 0xb0, 0x12, 0xcd, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x68, 0x62, 0xb4, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x2c, 0x09, 0x39, 0x3a, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x16, 0x37, 0x58, 0x51, 0x29, 0x75, 0x10, 0x9e, 0xaa, 0x8b, 0x83, 0x60, 0x61, 0x17, 0x6e, 0x83, 0x15, 0x90, 0x52, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x2b, 0x20, 0xa5, 0x0e, 0x56, 0x98, 0x4a, 0x1d, 0x2c, 0xd0, 0x39, 0x5a, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xb5, 0x94, 0x52, 0x07, 0x4b, 0x3b, 0xa5, 0x0e, 0x16, 0xe8, 0x1c, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x83, 0x51, 0x49, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xc5, 0xff, 0xe0, 0xf0, 0x1b, 0xcf, 0x0f, 0x56, 0xa2, 0x44, 0x1d, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0x30, 0x30, 0x40, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x8c, 0x4a, 0xd2, 0x83, 0x15, 0x0a, 0x54, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x56, 0x73, 0x1c, 0x2d, 0x0e, 0x82, 0x15, 0x04, 0x1b, 0x2c, 0x04, 0xa3, 0x3a, 0xa4, 0xe1, 0x0e, 0xe3, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0xd8, 0x60, 0x60, 0x80, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x95, 0xa4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xd6, 0x87, 0x4c, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x94, 0xb9, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x74, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x2c, 0x1e, 0x2c, 0xc5, 0xa0, 0x5a, 0x1c, 0x04, 0x2b, 0x08, 0x36, 0x58, 0xe3, 0x5f, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe1, 0xa1, 0xcc, 0x21, 0x6b, 0x77, 0x1c, 0xda, 0x60, 0xf1, 0x2d, 0xd3, 0x82, 0x60, 0x83, 0x35, 0xfe, 0x45, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x16, 0x1e, 0xca, 0x1c, 0x1a, 0x17, 0x1d, 0x87, 0x16, 0x04, 0x1b, 0xac, 0xf1, 0x2f, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xf0, 0x50, 0xe6, 0x20, 0xec, 0xa9, 0x8f, 0x43, 0x0b, 0x82, 0x0d, 0xd6, 0xf8, 0x17, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x78, 0x28, 0x73, 0x90, 0x34, 0x80, 0x70, 0x1c, 0x5a, 0x10, 0x6c, 0xb0, 0xc6, 0xbf, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc2, 0x43, 0x99, 0x83, 0xc4, 0xbd, 0x99, 0xe3, 0xd0, 0x20, 0xd8, 0x60, 0x8d, 0x7f, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x85, 0x87, 0x32, 0x13, 0xd4, 0xef, 0xe3, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0xd8, 0x60, 0xac, 0x7d, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0x02, 0xf2, 0xa9, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x46, 0x25, 0xe9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x75, 0xaa, 0x58, 0xc3, 0x6f, 0x3c, 0x3f, 0x58, 0x12, 0x13, 0x75, 0x1c, 0x3a, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0xe2, 0x06, 0x47, 0x86, 0xd0, 0x16, 0x07, 0xc1, 0xc2, 0x2e, 0xdc, 0x62, 0xe0, 0x8f, 0xa1, 0x85, 0xd1, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x2b, 0xd9, 0xb2, 0x36, 0x58, 0xc9, 0x96, 0x75, 0x38, 0xc5, 0x0e, 0x16, 0xbc, 0x20, 0x0d, 0xbb, 0x70, 0x8b, 0x81, 0x3f, 0xf6, 0xe6, 0x56, 0x1e, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xac, 0xe5, 0xcb, 0xda, 0x60, 0x2d, 0x5f, 0xd6, 0xe1, 0x14, 0x5b, 0x10, 0x6c, 0xb0, 0xb2, 0xc3, 0xe8, 0xd0, 0x14, 0x68, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x48, 0xca, 0x1d, 0x8f, 0x0f, 0x2d, 0xc0, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0x37, 0x93, 0x0b, 0x3b, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x96, 0x5c, 0x66, 0x6d, 0xb0, 0xe4, 0x32, 0xeb, 0x70, 0x8a, 0x1d, 0x2c, 0x78, 0x41, 0x1a, 0x76, 0xe1, 0x16, 0x0f, 0x4a, 0x4d, 0xcb, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x45, 0xa7, 0x59, 0x1b, 0x2c, 0x3a, 0xcd, 0x3a, 0x9c, 0x62, 0x07, 0x0b, 0x5e, 0x90, 0x16, 0x76, 0xe1, 0x36, 0x44, 0x73, 0x3c, 0x38, 0x32, 0x84, 0x6e, 0xb0, 0xfc, 0x36, 0xeb, 0x70, 0x8a, 0x1d, 0x2c, 0x78, 0x41, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x16, 0x0f, 0x96, 0x64, 0x40, 0x2d, 0x0e, 0x82, 0x85, 0x5d, 0xb8, 0xc5, 0xc3, 0x29, 0x71, 0x48, 0x1d, 0x2c, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x2c, 0x45, 0xce, 0xda, 0x60, 0x29, 0x72, 0xd6, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x16, 0x03, 0x3f, 0x4d, 0xee, 0xcd, 0x3d, 0xa4, 0x0e, 0x16, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0x16, 0x57, 0x67, 0x6d, 0xb0, 0xb8, 0x3a, 0xeb, 0x70, 0x8a, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0x87, 0xfd, 0xb3, 0x43, 0xea, 0x60, 0x61, 0x17, 0x6e, 0x43, 0xea, 0xe0, 0x60, 0x0d, 0x79, 0xd6, 0x06, 0x6b, 0xc8, 0xb3, 0x0e, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0xb0, 0x68, 0x38, 0x6b, 0x83, 0x45, 0xc3, 0x59, 0x87, 0x53, 0xec, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x06, 0x05, 0xd1, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x60, 0xc1, 0x54, 0xd6, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0x58, 0x9c, 0x83, 0x45, 0x71, 0x46, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0x32, 0x30, 0x57, 0x87, 0x15, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xab, 0x72, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x46, 0x25, 0xe9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf5, 0x21, 0x53, 0x07, 0xcb, 0x44, 0xa1, 0x8e, 0x43, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0xe3, 0x7e, 0xc7, 0xe2, 0x20, 0x58, 0xd8, 0x0d, 0x79, 0xac, 0x35, 0x34, 0x8b, 0x1c, 0x04, 0x1b, 0x2c, 0x09, 0x39, 0x3a, 0x74, 0xd0, 0xd8, 0xd0, 0xa7, 0x71, 0x83, 0x35, 0xcd, 0x53, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x06, 0x03, 0x2f, 0x75, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xb8, 0x61, 0x3a, 0x0f, 0x96, 0xee, 0x61, 0x2d, 0x0e, 0x82, 0x35, 0x58, 0x03, 0x72, 0x34, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0x60, 0xd9, 0x3b, 0xd6, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x68, 0x01, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x61, 0x37, 0x34, 0x5c, 0x5c, 0x43, 0x9f, 0xc6, 0x0d, 0x96, 0x52, 0x29, 0x2d, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x18, 0xf7, 0x73, 0xc7, 0xe3, 0x43, 0x27, 0xa2, 0x41, 0xb0, 0xc1, 0x8a, 0x7e, 0xaa, 0x43, 0xf7, 0xa3, 0x0d, 0xcd, 0x22, 0x07, 0xc1, 0x06, 0x8b, 0x7f, 0x9f, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x6e, 0xb0, 0x8a, 0xe9, 0x68, 0x83, 0x45, 0x50, 0x47, 0xc3, 0x6e, 0xb0, 0x42, 0x59, 0x6a, 0x0d, 0x16, 0x39, 0x4b, 0x6d, 0xb0, 0x1c, 0x77, 0x69, 0x10, 0x6c, 0xb0, 0x3a, 0x77, 0xe9, 0xd0, 0x02, 0x6c, 0xd8, 0x0d, 0x56, 0xc1, 0x1d, 0xad, 0xc1, 0xba, 0xba, 0xa3, 0x0d, 0x16, 0xf7, 0x1d, 0x1d, 0x2c, 0xbf, 0xd4, 0x1a, 0x76, 0x83, 0x52, 0xd6, 0x6f, 0x0d, 0x4a, 0x67, 0xbf, 0x83, 0x45, 0x89, 0x59, 0xc3, 0x6e, 0xb0, 0x20, 0x02, 0x6b, 0x0d, 0xd6, 0x54, 0x60, 0x2d, 0x08, 0x36, 0x58, 0x3f, 0x49, 0x75, 0x68, 0x0a, 0x74, 0xb0, 0xfc, 0x52, 0x6b, 0xd8, 0x0d, 0x16, 0x19, 0x54, 0xad, 0xc1, 0x2a, 0x85, 0xaa, 0x0d, 0x96, 0x4b, 0x21, 0x1d, 0x2c, 0xbf, 0xd4, 0x1a, 0x76, 0x83, 0x85, 0x17, 0x55, 0x6b, 0xb0, 0x94, 0xa3, 0x6a, 0x83, 0xa5, 0x54, 0x4a, 0x07, 0xcb, 0x2f, 0xb5, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x12, 0x3a, 0xf6, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x29, 0xb3, 0xd6, 0x06, 0x4b, 0x99, 0xb5, 0x0e, 0xa7, 0xd8, 0x06, 0x8b, 0x0f, 0x92, 0x0e, 0x96, 0x5f, 0x6a, 0x2d, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x18, 0xf8, 0x77, 0x61, 0x73, 0xe8, 0x06, 0xeb, 0xbe, 0xb5, 0x0e, 0xa7, 0xd8, 0x20, 0xd8, 0x60, 0x8d, 0x7f, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x85, 0x87, 0x32, 0x87, 0x7c, 0xed, 0x71, 0xe8, 0x60, 0x75, 0x2c, 0xd4, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0xb0, 0xce, 0x24, 0xea, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0xc1, 0x32, 0x78, 0x81, 0x41, 0x32, 0x88, 0x0e, 0x46, 0x77, 0xc8, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x73, 0x63, 0x6f, 0xf4, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x61, 0x17, 0x04, 0x1b, 0x0c, 0x7c, 0xec, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x03, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xa4, 0x6a, 0x8e, 0x43, 0x0b, 0xb2, 0x0d, 0x71, 0x19, 0x04, 0x0b, 0x82, 0x0d, 0x96, 0xb8, 0xdd, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0x06, 0x07, 0xfa, 0xe6, 0x83, 0x23, 0x04, 0xfd, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x0d, 0xe7, 0xfa, 0x41, 0x3a, 0x20, 0xf4, 0x71, 0xe8, 0x60, 0x71, 0xc9, 0xd6, 0xc1, 0xf2, 0xbd, 0x9b, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x06, 0xcb, 0xe0, 0x05, 0x06, 0xc9, 0x20, 0x3b, 0x18, 0xdd, 0x21, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xcf, 0x8d, 0xbd, 0xdd, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x70, 0x6b, 0x1d, 0x92, 0x4b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xdd, 0xbb, 0x43, 0x72, 0xe9, 0x38, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xb0, 0x1b, 0x14, 0x06, 0x8f, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0xa9, 0x75, 0x48, 0x2e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xe4, 0x6b, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x4b, 0x5d, 0x5f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x9c, 0x6b, 0x87, 0x15, 0xda, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xc1, 0x81, 0xbe, 0xf9, 0xe0, 0xb4, 0x82, 0x7b, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x08, 0x54, 0xae, 0x43, 0x72, 0xe9, 0x60, 0x89, 0xe4, 0xcb, 0x71, 0x68, 0xd8, 0x0d, 0x4a, 0x0e, 0xc9, 0x05, 0xc1, 0x06, 0x4b, 0xde, 0xb6, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf2, 0xb5, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x50, 0xa2, 0x86, 0x1c, 0x2c, 0xc9, 0xa1, 0x39, 0x58, 0xfc, 0xb8, 0x75, 0x1c, 0x1a, 0x76, 0x83, 0xc2, 0x33, 0x71, 0x41, 0xb0, 0xc1, 0x92, 0xb7, 0xad, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x7c, 0xed, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0xa0, 0x44, 0x0d, 0x39, 0x38, 0xee, 0xf5, 0x1e, 0x87, 0x86, 0xdd, 0xa0, 0x18, 0x54, 0x5c, 0x10, 0x6c, 0xb0, 0xe4, 0x6d, 0x6b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x5f, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0x06, 0x25, 0x6a, 0xc8, 0xc1, 0xf9, 0x89, 0x76, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xd2, 0x66, 0x97, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0xe0, 0x61, 0xf0, 0xe3, 0xd0, 0xc1, 0x12, 0xc9, 0x97, 0xe3, 0xd0, 0xb0, 0x1b, 0x94, 0xf6, 0x8a, 0x0b, 0x82, 0x0d, 0x96, 0xbc, 0x6d, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xe4, 0x6b, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0xa0, 0x44, 0x0d, 0x39, 0x58, 0xb2, 0x2d, 0x33, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x69, 0xb3, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x63, 0xf0, 0x30, 0xf6, 0x71, 0xe8, 0x60, 0x89, 0xe4, 0xcb, 0x71, 0x68, 0xd8, 0x0d, 0x8a, 0xd4, 0xc8, 0x05, 0xc1, 0x06, 0x4b, 0xde, 0xb6, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf2, 0xb5, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x2f, 0x48, 0x06, 0xea, 0xdf, 0x21, 0xb9, 0x74, 0xb0, 0x2c, 0x84, 0x66, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0xb0, 0xce, 0xf9, 0x65, 0x10, 0x6c, 0xb0, 0x16, 0x72, 0xeb, 0x60, 0x6d, 0xba, 0xcb, 0xc1, 0x12, 0xc9, 0x97, 0xe3, 0xd0, 0xb0, 0x0b, 0xb7, 0x41, 0x5a, 0x68, 0xf6, 0x21, 0x9a, 0x0b, 0x82, 0x0d, 0x96, 0xbc, 0x6d, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xe4, 0x6b, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xd2, 0x54, 0x87, 0xe4, 0xd2, 0x71, 0x68, 0x90, 0x6d, 0x68, 0xbe, 0x3e, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0x62, 0x77, 0x48, 0x2e, 0x1d, 0x3a, 0x68, 0x0c, 0xbb, 0xb0, 0x0b, 0xbb, 0xc1, 0xe8, 0x58, 0x5f, 0xd8, 0x0d, 0x16, 0xc0, 0xfa, 0x2c, 0xec, 0x06, 0x6b, 0x86, 0x52, 0x16, 0x76, 0xe1, 0x36, 0xc4, 0xf0, 0x20, 0xc8, 0xe2, 0x17, 0x76, 0xa1, 0x07, 0x83, 0x35, 0x76, 0x61, 0x17, 0x76, 0xa1, 0x07, 0x81, 0x1b, 0x7f, 0x58, 0xdf, 0x5c, 0xd8, 0x85, 0x1e, 0x84, 0x81, 0xfc, 0x61, 0x7d, 0xf3, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x5f, 0xd8, 0x85, 0xdb, 0x20, 0x70, 0xe3, 0x0f, 0x59, 0xbb, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0xaf, 0x21, 0x86, 0x07, 0x61, 0x20, 0x7f, 0x88, 0xe1, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x73, 0x6c, 0x61, 0xf7, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x06, 0xe5, 0x3e, 0xe0, 0xe2, 0x82, 0xbe, 0x36, 0x58, 0xd1, 0xc8, 0xd5, 0x20, 0xd8, 0x20, 0x05, 0xd5, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x1b, 0x72, 0xdf, 0x83, 0x60, 0x83, 0x04, 0x3e, 0xe9, 0x43, 0xa3, 0x96, 0xe3, 0xf1, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0x0a, 0xaa, 0xf3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x7f, 0x77, 0x10, 0xf0, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xa7, 0xd6, 0x21, 0x5b, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x19, 0x7e, 0xe3, 0xf9, 0xf0, 0x0b, 0x92, 0x81, 0xe4, 0xdd, 0x21, 0x5b, 0x31, 0x48, 0x86, 0x3b, 0x24, 0x97, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0xdf, 0xa0, 0x78, 0x8d, 0x3c, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0x14, 0x54, 0xe7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x03, 0x6e, 0x77, 0x71, 0xd8, 0x0d, 0x5d, 0x33, 0x37, 0xa4, 0x0e, 0x06, 0xc1, 0x82, 0x64, 0x20, 0x74, 0x87, 0x6c, 0xc5, 0xa1, 0x51, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x24, 0x03, 0xb3, 0x77, 0x48, 0x2e, 0x0d, 0x92, 0xe1, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xda, 0xdb, 0x1d, 0x92, 0x4b, 0x87, 0x46, 0x2d, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xf0, 0xee, 0x1c, 0x92, 0x4b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0xf0, 0xb7, 0x3b, 0x24, 0x97, 0x0e, 0x8d, 0x5a, 0x8e, 0x43, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x0b, 0x82, 0x0d, 0x0a, 0x6a, 0xb1, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x01, 0xe5, 0x7a, 0xd7, 0x61, 0x85, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xc0, 0xe5, 0x3a, 0xac, 0xd0, 0x0e, 0xbf, 0xf1, 0xfc, 0x60, 0xf5, 0x32, 0xd7, 0x71, 0x68, 0x10, 0x6c, 0xb0, 0xce, 0xa5, 0x6b, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x0e, 0xd2, 0x0c, 0x35, 0x0e, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x0f, 0x8d, 0x5a, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x05, 0x8a, 0x31, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xe3, 0x75, 0x3c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x6c, 0x50, 0x88, 0x15, 0x1e, 0x56, 0x68, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x01, 0x43, 0xbd, 0xeb, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x1a, 0xac, 0x18, 0x8f, 0x19, 0x04, 0x1b, 0x2c, 0xc2, 0x7f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x90, 0x31, 0x6a, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x20, 0x4d, 0x75, 0x3c, 0x3f, 0x0e, 0xad, 0xc1, 0x02, 0x8e, 0x9c, 0x41, 0xb0, 0xc1, 0x42, 0x8a, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x0f, 0x52, 0xd9, 0x82, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xda, 0x73, 0x1d, 0xcf, 0x8f, 0x43, 0x6b, 0xb0, 0xc4, 0x3f, 0x66, 0xf8, 0x05, 0xc9, 0x40, 0xac, 0x8e, 0xe7, 0x83, 0x64, 0xe0, 0xd4, 0x3b, 0x1e, 0xaf, 0x41, 0xfa, 0xd3, 0xf3, 0xf0, 0x1b, 0x2c, 0x7d, 0xec, 0x1a, 0x24, 0x03, 0xe7, 0xde, 0xf1, 0x78, 0x0d, 0xd2, 0x5e, 0xaa, 0x87, 0xdf, 0x60, 0xe9, 0x63, 0xd7, 0xc1, 0xa2, 0x1d, 0x98, 0x35, 0x48, 0x1e, 0x62, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0x26, 0x0b, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0x01, 0xb7, 0x7b, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0x96, 0x3e, 0x76, 0x1d, 0x2c, 0xb6, 0x8b, 0x39, 0x58, 0xf5, 0x03, 0x73, 0xb0, 0xd0, 0x77, 0x66, 0x0d, 0x92, 0x88, 0x48, 0x06, 0xc1, 0x06, 0x8b, 0xf0, 0x5f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x0d, 0xa0, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xb0, 0x68, 0x9f, 0xea, 0x78, 0x7e, 0x1c, 0x3a, 0xc4, 0xf0, 0x38, 0x74, 0x1c, 0x3a, 0x28, 0x19, 0x9a, 0x16, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x48, 0x06, 0xd6, 0xed, 0x0e, 0xd9, 0x8a, 0x83, 0x21, 0x63, 0x73, 0x3c, 0x3e, 0x1e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xba, 0xeb, 0x78, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x16, 0x76, 0x43, 0x1e, 0x6b, 0xc3, 0xae, 0xc1, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x1b, 0x12, 0x53, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x0e, 0x82, 0x05, 0xc9, 0x80, 0xc4, 0xf7, 0xbe, 0x43, 0xb6, 0xe2, 0xd0, 0xa8, 0xe5, 0xe0, 0x98, 0xb9, 0x7e, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x2c, 0x1a, 0x1f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0x95, 0x60, 0x28, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x41, 0x32, 0x50, 0xff, 0x8e, 0xc7, 0x07, 0xcb, 0x42, 0x68, 0x8e, 0x43, 0x83, 0x60, 0x83, 0xd5, 0x17, 0x5e, 0x07, 0x4b, 0x28, 0x46, 0x8e, 0x43, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x6c, 0x50, 0x8e, 0x88, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xeb, 0x76, 0x87, 0xe4, 0xd2, 0x21, 0xd1, 0x7a, 0x1c, 0x3a, 0x1e, 0xaf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xb8, 0x20, 0xd8, 0x60, 0x94, 0x95, 0x2d, 0x0e, 0xbb, 0x41, 0xd0, 0xeb, 0xaf, 0x21, 0xf7, 0x3d, 0x08, 0x36, 0x8c, 0xcb, 0x21, 0x0d, 0xb7, 0x41, 0xb9, 0x0f, 0xb8, 0xb8, 0xc1, 0x6a, 0x00, 0x92, 0x05, 0xdf, 0x3a, 0x58, 0xfb, 0x09, 0x34, 0xfc, 0x06, 0xa5, 0xd9, 0xdb, 0x20, 0x58, 0x1c, 0x76, 0x61, 0x17, 0x7a, 0xc8, 0xda, 0x1d, 0xd6, 0x37, 0x57, 0x90, 0x0c, 0x39, 0x9e, 0x1f, 0x62, 0xb8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x84, 0x07, 0xc5, 0xa1, 0xc6, 0xf1, 0xfc, 0xa0, 0xec, 0xc7, 0x3a, 0xbe, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x07, 0xac, 0xe7, 0x83, 0xd4, 0xb1, 0x9d, 0x41, 0xb0, 0x21, 0x86, 0x1b, 0x72, 0xdf, 0x83, 0x60, 0x71, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0x50, 0x73, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x1c, 0xf6, 0x0a, 0x8f, 0x43, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xe2, 0x74, 0x30, 0x1c, 0xa5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x0d, 0x46, 0x49, 0xe2, 0x41, 0x90, 0xe2, 0x1f, 0x87, 0x86, 0x5d, 0xb8, 0x0d, 0x12, 0xfd, 0xa0, 0x8f, 0x43, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0x38, 0x1d, 0x9c, 0x84, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x85, 0xdf, 0x78, 0xbe, 0xc1, 0x70, 0x53, 0x38, 0x1c, 0xed, 0x07, 0xa3, 0xd5, 0xfc, 0x38, 0x34, 0xec, 0x42, 0x0f, 0x86, 0x31, 0xec, 0x82, 0x60, 0x41, 0xb2, 0x41, 0x51, 0x9f, 0x73, 0x70, 0xcc, 0x2a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x98, 0xbd, 0x83, 0xe1, 0x28, 0x3d, 0x48, 0x86, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xde, 0xc1, 0x70, 0x94, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x1c, 0xa4, 0x37, 0x36, 0x1c, 0x87, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0x06, 0x25, 0x2f, 0xdd, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0xc1, 0x89, 0xcf, 0xf8, 0x60, 0x48, 0xbe, 0x1e, 0x92, 0x4b, 0xc7, 0xa1, 0x0d, 0x92, 0x3b, 0x98, 0x37, 0x58, 0x58, 0x8f, 0x33, 0x48, 0x86, 0x1c, 0xac, 0xab, 0xf6, 0x1a, 0x04, 0x1b, 0xac, 0x69, 0x87, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xd9, 0x26, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0x73, 0x21, 0xf6, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xc8, 0x41, 0x5a, 0x1c, 0xf4, 0x71, 0xe8, 0xf8, 0x76, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0x41, 0xb9, 0x0f, 0xb8, 0xb8, 0xa0, 0xae, 0xc3, 0x29, 0x36, 0x08, 0x16, 0x87, 0xdd, 0xa0, 0x88, 0x6c, 0xda, 0x10, 0xc3, 0x85, 0xdd, 0xb0, 0x16, 0xba, 0x20, 0xd8, 0x20, 0x89, 0x83, 0xe7, 0x60, 0xd9, 0x45, 0xce, 0xb0, 0x1b, 0x2c, 0xc0, 0xf2, 0x5a, 0x10, 0x6c, 0x90, 0xc4, 0xc1, 0x73, 0xd8, 0xa8, 0x1d, 0x76, 0x61, 0x37, 0x58, 0x8c, 0xe5, 0xb5, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x07, 0xc5, 0xa1, 0xc6, 0xc2, 0x6d, 0x38, 0xda, 0x0f, 0xc6, 0x85, 0xd9, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x0b, 0x82, 0x0d, 0x92, 0x38, 0x78, 0x0e, 0x16, 0x65, 0xe0, 0x0c, 0xbb, 0xb0, 0x1b, 0x2c, 0xc6, 0xf2, 0x5a, 0xd8, 0x0d, 0xd6, 0x7e, 0x7c, 0x2d, 0xec, 0x42, 0x0f, 0xc6, 0x85, 0xd9, 0x61, 0x7d, 0xf3, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x35, 0xe4, 0xbe, 0x37, 0x48, 0x29, 0x7a, 0x1e, 0x04, 0x0b, 0x92, 0x81, 0xe0, 0x1c, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x74, 0x0d, 0xa2, 0x85, 0x3d, 0x18, 0x59, 0x56, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0x83, 0xc5, 0x58, 0x5e, 0x0b, 0xbb, 0x70, 0x1b, 0x8e, 0xf6, 0x83, 0xe2, 0x50, 0x63, 0x61, 0x37, 0x58, 0x69, 0xf3, 0xb5, 0xb0, 0x0b, 0xbb, 0xd0, 0x83, 0xd4, 0xf5, 0x81, 0xc3, 0xfa, 0xe6, 0xc2, 0x6d, 0x88, 0xe1, 0xc1, 0x41, 0xbc, 0xfb, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x17, 0x04, 0x1b, 0x24, 0x71, 0xf0, 0x1c, 0xac, 0xe9, 0xc2, 0x19, 0x76, 0x61, 0x37, 0x58, 0x8c, 0xe5, 0xb5, 0xb0, 0x1b, 0xac, 0x7f, 0xfa, 0x5a, 0xd8, 0x0d, 0x56, 0xda, 0x7c, 0x2d, 0xec, 0x06, 0x6b, 0xaf, 0xbe, 0x16, 0x76, 0xa1, 0x07, 0x07, 0xf1, 0xee, 0x85, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0x38, 0x46, 0x4e, 0x2f, 0xec, 0x42, 0x0f, 0x8e, 0xf5, 0xf5, 0x87, 0xf5, 0xcd, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x0d, 0xb9, 0xef, 0x41, 0xb0, 0x41, 0x3a, 0x48, 0xf7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd2, 0xf7, 0xd9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0x0c, 0x06, 0x1c, 0x2c, 0xff, 0xc6, 0x39, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x83, 0x63, 0x7d, 0xfd, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xa0, 0xa4, 0xe3, 0xdb, 0x20, 0xd8, 0x60, 0xf5, 0xfe, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x60, 0x39, 0xae, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0x36, 0x34, 0x5f, 0x1f, 0x04, 0x1b, 0x24, 0x71, 0xf0, 0x1c, 0x2c, 0x87, 0xc7, 0x39, 0x58, 0xb1, 0xa0, 0x73, 0x7c, 0x3b, 0x1e, 0x0f, 0xbb, 0x41, 0x11, 0xd9, 0xb4, 0x86, 0xdc, 0xf7, 0x20, 0xd8, 0x60, 0xb0, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xe9, 0x9d, 0xc3, 0x0a, 0xed, 0xc1, 0x30, 0x0b, 0x3f, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x14, 0x97, 0x4d, 0x1b, 0xd6, 0x42, 0x0f, 0x47, 0xfb, 0x1a, 0x72, 0xdf, 0x1b, 0x24, 0x11, 0x91, 0x0c, 0x82, 0x05, 0xc9, 0x06, 0x45, 0x7d, 0xce, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xb0, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x33, 0xfe, 0x39, 0xec, 0xf1, 0x1e, 0x87, 0x0e, 0x12, 0x19, 0xa2, 0x8f, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0xc5, 0x65, 0xd3, 0xc2, 0x2e, 0xdc, 0x06, 0xe7, 0xc8, 0xdd, 0x43, 0xd6, 0x6e, 0x83, 0xa5, 0x82, 0x41, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0xaf, 0x21, 0xf7, 0x3d, 0x08, 0x36, 0x18, 0xac, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x16, 0x37, 0x7f, 0x1d, 0xf6, 0x78, 0x8f, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0xc5, 0x65, 0xd3, 0xc2, 0x6d, 0x90, 0xb6, 0x40, 0x7d, 0xc8, 0xda, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0x25, 0x43, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xc3, 0xda, 0xef, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc9, 0x40, 0x70, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0xfa, 0x0e, 0xed, 0x5b, 0x8e, 0xc7, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0x83, 0xe2, 0xb2, 0x69, 0x61, 0x37, 0x58, 0x8c, 0xe5, 0xb5, 0xb0, 0x0b, 0xb7, 0xc1, 0x52, 0x9b, 0x82, 0x83, 0xe2, 0x50, 0xe3, 0x60, 0x6d, 0xcd, 0xd7, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x6b, 0x50, 0x48, 0xfd, 0x2d, 0x6e, 0xb0, 0x9e, 0xe0, 0x6b, 0x83, 0x75, 0x5a, 0x00, 0x87, 0x53, 0x6c, 0x0d, 0xb9, 0xef, 0x41, 0xb0, 0xc1, 0x60, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xb8, 0xf9, 0x6b, 0x90, 0x0c, 0x39, 0x58, 0x73, 0xf4, 0x75, 0x1c, 0x5a, 0x90, 0x0c, 0xb2, 0x83, 0xd0, 0x5b, 0x3f, 0xc4, 0x70, 0xd8, 0x85, 0xdd, 0xa0, 0xb8, 0x6c, 0x5a, 0xb8, 0x0d, 0x06, 0xbe, 0xf1, 0x21, 0x6b, 0x77, 0x38, 0xda, 0x17, 0x04, 0x1b, 0x94, 0x0c, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x6b, 0xbf, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x58, 0x92, 0x02, 0x36, 0x48, 0x06, 0x5d, 0x87, 0xf6, 0x2d, 0xc7, 0xe3, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0x41, 0x71, 0xd9, 0xb4, 0x70, 0x1b, 0x2c, 0x5e, 0x01, 0x3a, 0x64, 0xed, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x41, 0x32, 0x20, 0xf8, 0xfb, 0x0e, 0x82, 0x9c, 0xff, 0xb0, 0xc7, 0x3b, 0xec, 0xc2, 0x6e, 0x50, 0x5c, 0x36, 0x2d, 0xdc, 0x06, 0x0b, 0xd0, 0x18, 0x0e, 0x59, 0xbb, 0xc3, 0xd1, 0xbe, 0x06, 0xe5, 0x3e, 0xe0, 0x06, 0x2b, 0x19, 0xb9, 0x06, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x19, 0xb8, 0xbf, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xbe, 0x3b, 0x07, 0x41, 0xce, 0x7f, 0xb0, 0x74, 0x6f, 0xea, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0xec, 0xf1, 0x0e, 0x82, 0x0d, 0xd2, 0x65, 0xbb, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0x21, 0xf7, 0x3d, 0x08, 0x36, 0x58, 0xbd, 0x3f, 0x70, 0x68, 0xd4, 0x72, 0x3c, 0x3e, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x14, 0x97, 0x4d, 0x0b, 0xb7, 0x18, 0xce, 0x1e, 0xb2, 0x76, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x20, 0x19, 0xac, 0x8e, 0xc7, 0x87, 0x3d, 0xde, 0x61, 0x17, 0x76, 0x83, 0xe2, 0xb2, 0x69, 0xe1, 0x36, 0x58, 0x83, 0x02, 0x74, 0xc8, 0xda, 0x1d, 0x8e, 0xf6, 0x05, 0xc9, 0x20, 0x1b, 0x44, 0x0b, 0xe2, 0xc5, 0xc1, 0xdb, 0x00, 0x7a, 0x4a, 0xd0, 0x74, 0x74, 0xb6, 0x4a, 0xc8, 0x40, 0x4a, 0xc8, 0xba, 0x5c, 0xb6, 0x4a, 0xc8, 0x40, 0x4a, 0xc8, 0xba, 0xfc, 0x86, 0x1e, 0x42, 0x1b, 0x2c, 0x12, 0xff, 0xd9, 0xa0, 0x38, 0xe7, 0xda, 0x20, 0xec, 0xa9, 0x37, 0x28, 0xb1, 0x07, 0x0f, 0x31, 0x3c, 0x1e, 0x0f, 0xbb, 0xb0, 0x1b, 0x14, 0x97, 0x4d, 0x0b, 0xb7, 0x41, 0x29, 0x22, 0x79, 0xc8, 0xda, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0x25, 0x43, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xc3, 0xda, 0xef, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x96, 0xa4, 0x80, 0x0d, 0x92, 0x81, 0xb9, 0x3a, 0xb4, 0x6f, 0x39, 0x1e, 0x1f, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x8a, 0xcb, 0xa6, 0x85, 0xdb, 0xa0, 0x88, 0x94, 0x3c, 0x64, 0xed, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x83, 0x92, 0xa1, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0xed, 0x77, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0x4b, 0x52, 0xc0, 0x06, 0xc9, 0x40, 0xad, 0x3a, 0xb4, 0x6f, 0x39, 0x1e, 0x1f, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x8a, 0xcb, 0xa6, 0x85, 0xdb, 0x60, 0x4d, 0x5a, 0xc2, 0x21, 0x6b, 0x77, 0x38, 0xda, 0x17, 0x24, 0x83, 0x6c, 0x10, 0x2d, 0x88, 0x17, 0x07, 0x97, 0x07, 0x05, 0x83, 0xef, 0xe1, 0xfd, 0x21, 0x5f, 0x7b, 0x3c, 0x1e, 0x76, 0x61, 0x37, 0x28, 0x2e, 0x9b, 0x16, 0x6e, 0x83, 0x12, 0x28, 0xf2, 0x90, 0xb5, 0x3b, 0x1c, 0xed, 0x0b, 0x82, 0x0d, 0x4a, 0x86, 0xa6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xb5, 0xdf, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x2c, 0x49, 0x01, 0x1b, 0x24, 0x03, 0xa5, 0xea, 0xd0, 0xbe, 0xe5, 0x78, 0x7c, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x28, 0x2e, 0x9b, 0x16, 0x6e, 0x83, 0x04, 0x8f, 0xe7, 0x43, 0xd6, 0xee, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x28, 0x19, 0x9a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xd6, 0x7e, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0xb0, 0x24, 0x05, 0x6c, 0x90, 0x0c, 0x73, 0x68, 0xdf, 0x72, 0x3c, 0x3e, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x14, 0x97, 0x4d, 0x0b, 0xb7, 0x41, 0x82, 0x24, 0xf4, 0x21, 0x6b, 0x77, 0x38, 0xda, 0x17, 0x04, 0x1b, 0x94, 0x0c, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x6b, 0xbf, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x58, 0x92, 0x02, 0x36, 0x48, 0x06, 0x86, 0xea, 0xd0, 0xbe, 0xe5, 0x78, 0x7c, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x28, 0x2e, 0x9b, 0x16, 0x76, 0x83, 0xc5, 0x58, 0x5e, 0x0b, 0xbb, 0x70, 0x1b, 0xac, 0xea, 0x5e, 0x38, 0x28, 0x0e, 0x35, 0x0e, 0xd6, 0xd6, 0x7c, 0x1d, 0x8e, 0xf6, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0xe0, 0xfc, 0x44, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x64, 0x59, 0x1d, 0xd6, 0x7e, 0x8f, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0xc5, 0x65, 0xd3, 0xc2, 0x6e, 0xb0, 0x18, 0xcb, 0x6b, 0x61, 0x17, 0x6e, 0x83, 0x35, 0x69, 0x09, 0x07, 0xc5, 0xa1, 0xc6, 0xc1, 0xda, 0x9a, 0xaf, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x17, 0x24, 0x83, 0x6c, 0x10, 0x2d, 0x88, 0xd7, 0x60, 0x4d, 0x5a, 0xc2, 0x06, 0x09, 0x65, 0x27, 0x0b, 0x82, 0x0d, 0x02, 0x94, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0xda, 0x60, 0xbc, 0x21, 0x1d, 0x8c, 0x2c, 0xab, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0x40, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x0d, 0x46, 0x73, 0xd2, 0xc1, 0xc8, 0xb2, 0x3a, 0x0e, 0x1d, 0xf2, 0xb5, 0xc7, 0xe3, 0x61, 0x17, 0x76, 0x83, 0xe2, 0xb2, 0x69, 0x61, 0x37, 0x58, 0x8c, 0xe5, 0xb5, 0xb0, 0x1b, 0x2c, 0xfe, 0x0d, 0x5b, 0xd8, 0x0d, 0x56, 0xda, 0x7c, 0x2d, 0xec, 0x06, 0x6b, 0xaf, 0xbe, 0x16, 0x76, 0x83, 0x05, 0x78, 0x5f, 0x0b, 0xbb, 0xb0, 0x0b, 0x3d, 0x38, 0x46, 0x4e, 0x1f, 0xd6, 0x37, 0x0f, 0xd6, 0xfc, 0x7d, 0x1d, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x6b, 0x50, 0xee, 0x03, 0xae, 0x20, 0xd8, 0x60, 0xb0, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0xdc, 0xfc, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x48, 0x19, 0x0c, 0x38, 0x0e, 0x1d, 0x87, 0x16, 0x04, 0x1b, 0x0c, 0xd6, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x8b, 0x9b, 0xbf, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0x4b, 0x86, 0x84, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0xc1, 0x60, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xb8, 0xf9, 0xeb, 0x60, 0xbd, 0xeb, 0xd7, 0x71, 0x68, 0x10, 0x2c, 0x0e, 0xbb, 0xb0, 0x0b, 0x3d, 0xac, 0xfd, 0x1e, 0xd6, 0x37, 0x37, 0xc4, 0x70, 0x41, 0x32, 0xc8, 0x0e, 0x06, 0xe0, 0xff, 0x20, 0x19, 0x32, 0x88, 0x36, 0x28, 0x0f, 0xe2, 0x8e, 0xc7, 0xc7, 0xb7, 0x61, 0x17, 0x76, 0x83, 0xe2, 0xb2, 0x69, 0xe1, 0x36, 0x38, 0xf3, 0xce, 0x1e, 0xb2, 0x76, 0x87, 0xa3, 0x7d, 0x41, 0x32, 0xc8, 0x06, 0xd1, 0x82, 0x78, 0x71, 0x70, 0xf9, 0x20, 0x00, 0xee, 0x0f, 0xf9, 0xda, 0xe3, 0xf1, 0x41, 0xfa, 0x75, 0xf4, 0xc1, 0x5a, 0x3e, 0x81, 0xe3, 0xf1, 0x82, 0x60, 0x71, 0xc3, 0x29, 0x76, 0x50, 0x04, 0xfa, 0x2d, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x8b, 0xee, 0xb9, 0x06, 0xc9, 0x30, 0x87, 0xbe, 0x1a, 0x07, 0xa5, 0xf5, 0xd8, 0xf1, 0x78, 0x10, 0x6c, 0x50, 0xf8, 0xf9, 0x2d, 0x2e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0xc2, 0x2f, 0x48, 0x06, 0x44, 0xfa, 0x7f, 0xdf, 0x41, 0xc0, 0xfb, 0x1f, 0xdf, 0x06, 0xc1, 0xe2, 0xc2, 0x6e, 0x30, 0x7c, 0x59, 0x17, 0x04, 0x1b, 0xac, 0xe5, 0x13, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x7a, 0x7f, 0xe0, 0x60, 0xb4, 0xb5, 0x1e, 0x87, 0x86, 0x5d, 0xb8, 0x0d, 0xb9, 0xef, 0x83, 0x20, 0xc5, 0x5f, 0x10, 0x6c, 0xb0, 0x96, 0x4f, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x30, 0x8c, 0x61, 0x8f, 0x43, 0xc3, 0x2e, 0xdc, 0x06, 0x85, 0xd4, 0xdf, 0x41, 0x90, 0xe2, 0x2f, 0x08, 0x16, 0x24, 0xc3, 0x1d, 0xb2, 0x15, 0xc3, 0x2e, 0x08, 0x36, 0x38, 0xb3, 0x65, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x28, 0xd5, 0xfb, 0x0e, 0x86, 0x7f, 0xec, 0xc1, 0xc0, 0x16, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xd5, 0x91, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x88, 0xf8, 0x1f, 0x04, 0x29, 0xfe, 0x71, 0xe8, 0x38, 0xb4, 0x20, 0x58, 0x90, 0x0c, 0xb2, 0xe3, 0xf9, 0xc1, 0xc0, 0x16, 0x1d, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x87, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0x28, 0xc7, 0x1a, 0x16, 0x04, 0x1b, 0x2c, 0x53, 0x16, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x4e, 0xb0, 0xea, 0x7f, 0x1c, 0x1a, 0x76, 0xe1, 0x36, 0xc4, 0x70, 0x82, 0xbb, 0x7f, 0xe1, 0x17, 0x44, 0x0b, 0xce, 0x0f, 0x82, 0x0d, 0x86, 0x9c, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xe3, 0xf9, 0x83, 0x20, 0xc5, 0x3f, 0x0e, 0x0d, 0xa2, 0x05, 0xf1, 0x20, 0x19, 0x66, 0x10, 0x2d, 0xb8, 0x7f, 0x50, 0xfc, 0x16, 0x1c, 0xcf, 0x8f, 0xc7, 0x07, 0x8b, 0xad, 0xc5, 0x86, 0x5f, 0x10, 0x2d, 0x50, 0xfb, 0x0f, 0xca, 0xb1, 0x86, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0x90, 0x3c, 0xc7, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x78, 0x7e, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe5, 0xb5, 0x62, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x02, 0x7d, 0xe7, 0x38, 0x74, 0x1c, 0x1a, 0x7e, 0x41, 0xb4, 0x60, 0x3e, 0x08, 0x16, 0x87, 0x5d, 0xb8, 0x0d, 0x31, 0x9c, 0x20, 0xf7, 0xbf, 0x41, 0x60, 0x62, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x89, 0xa1, 0x0b, 0x87, 0x8e, 0xf1, 0x83, 0x64, 0x98, 0x41, 0xb4, 0xe0, 0xfe, 0x41, 0x32, 0xf1, 0xc2, 0x20, 0x5a, 0x50, 0x3e, 0x08, 0x36, 0x38, 0xf1, 0x19, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0x33, 0x2e, 0x1f, 0x52, 0x07, 0xc7, 0xa1, 0x41, 0xb4, 0xb0, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x20, 0xf7, 0x7f, 0x50, 0x54, 0x09, 0x1d, 0x24, 0x97, 0x3e, 0x1c, 0xb2, 0x15, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x24, 0xe0, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x27, 0x68, 0xf5, 0x7f, 0x1c, 0x1a, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xdc, 0x06, 0xe5, 0x3e, 0xe0, 0x41, 0x90, 0xe2, 0x0f, 0x82, 0x0d, 0x16, 0xa7, 0x8a, 0x0d, 0xbb, 0xc1, 0xaa, 0x56, 0xb1, 0x0d, 0xd6, 0x25, 0x8b, 0x0d, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x7e, 0x41, 0xb4, 0x20, 0x1e, 0x04, 0x8b, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x14, 0xe8, 0x3b, 0x0b, 0xbb, 0x70, 0x1b, 0x62, 0x38, 0xc1, 0xae, 0xff, 0x86, 0xbd, 0xc2, 0x41, 0xb0, 0x20, 0x19, 0x64, 0x87, 0xe4, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x82, 0x5e, 0xff, 0xc7, 0xa1, 0x41, 0x32, 0xcc, 0x20, 0x5a, 0x70, 0xff, 0x20, 0x1d, 0xaf, 0x61, 0x10, 0x2d, 0x28, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xe8, 0x1c, 0x9c, 0x84, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0xb8, 0x92, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x3c, 0x7f, 0x30, 0x5a, 0xcd, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0xf8, 0x2c, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x34, 0x9e, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x2b, 0x07, 0x27, 0xa1, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xc3, 0x18, 0xf6, 0x60, 0x28, 0x16, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb4, 0xb0, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xe0, 0xf6, 0x9f, 0x20, 0xef, 0x7f, 0x3c, 0x3e, 0x24, 0x97, 0x8e, 0x6f, 0xc7, 0xe3, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x27, 0x48, 0xf5, 0x6f, 0x48, 0xd5, 0x0c, 0x82, 0x0d, 0xd2, 0xa7, 0x4f, 0x0e, 0x16, 0x67, 0x8b, 0x2d, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xc6, 0x26, 0xe7, 0x82, 0x60, 0x83, 0x75, 0x6d, 0x63, 0x87, 0x46, 0x2d, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0xe1, 0x4a, 0x7a, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x1a, 0x24, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x49, 0xd0, 0x30, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0x52, 0xbd, 0xef, 0x60, 0x38, 0x4a, 0x1f, 0x1a, 0xb5, 0x1c, 0x87, 0x8e, 0x43, 0xc3, 0x2e, 0x08, 0x36, 0x24, 0x3b, 0x06, 0xc1, 0xe2, 0xb0, 0x1b, 0xd6, 0xf7, 0x36, 0x1c, 0xed, 0xc3, 0x6e, 0x10, 0x7c, 0xcc, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2e, 0xdc, 0x06, 0x09, 0x65, 0x27, 0x87, 0x68, 0x2e, 0xec, 0x82, 0x64, 0xc8, 0x20, 0x5a, 0x10, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x7a, 0xe5, 0xe0, 0x74, 0x86, 0x7c, 0x30, 0xcc, 0xc2, 0x0f, 0x8a, 0x9a, 0xb3, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0xd2, 0xb9, 0xc7, 0xb7, 0x15, 0x04, 0x0b, 0x92, 0x41, 0xcb, 0xc1, 0xf0, 0x8f, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x46, 0xab, 0xf9, 0x41, 0x42, 0xd9, 0xc9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6b, 0xda, 0x21, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf6, 0x0a, 0x87, 0xdf, 0x78, 0xbe, 0x41, 0x42, 0xd9, 0xc9, 0x20, 0x58, 0x90, 0x6c, 0x50, 0xf8, 0x07, 0x1d, 0x9c, 0x84, 0x8e, 0x0f, 0x0a, 0x2b, 0xaa, 0xe3, 0xd0, 0x71, 0xe8, 0x90, 0x98, 0x19, 0x04, 0x0b, 0x92, 0x41, 0x76, 0x58, 0xa1, 0x3d, 0x18, 0x66, 0xe1, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x0b, 0x82, 0x05, 0xc9, 0xa0, 0xe5, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x06, 0x41, 0x8a, 0x7f, 0x90, 0x50, 0x76, 0x72, 0x48, 0xd5, 0x1c, 0x87, 0x0e, 0x7b, 0x85, 0xc7, 0xe3, 0x83, 0x92, 0xa1, 0xe9, 0x78, 0x3c, 0xec, 0x86, 0xae, 0x99, 0x1b, 0xa4, 0x03, 0x42, 0x0f, 0xbb, 0x41, 0x29, 0xeb, 0xb7, 0x61, 0x5c, 0x86, 0xdd, 0xa0, 0x60, 0xfa, 0x5b, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x19, 0x6e, 0x10, 0x2d, 0xec, 0x06, 0xe5, 0x3e, 0xe0, 0x1a, 0x0c, 0x2f, 0x8a, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x28, 0x28, 0xee, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xab, 0x95, 0x09, 0xc6, 0xfa, 0x38, 0x34, 0x41, 0x5c, 0x0f, 0x82, 0xd2, 0xfb, 0x78, 0x3c, 0xc8, 0xd6, 0xd0, 0x7e, 0x7d, 0xb8, 0x0d, 0xca, 0x7d, 0xc0, 0x43, 0x34, 0x87, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0x50, 0x50, 0xdc, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x56, 0x2b, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0xc3, 0x6e, 0x10, 0x24, 0xcd, 0x1b, 0x04, 0xb9, 0xf5, 0x20, 0xd8, 0x60, 0xc9, 0xf7, 0xd7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0xe1, 0x06, 0xd1, 0x86, 0x76, 0x45, 0xc7, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0xd8, 0x85, 0x3b, 0x38, 0x89, 0xa7, 0x2f, 0xfc, 0xc6, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xe8, 0x3e, 0x34, 0x4b, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x96, 0x7c, 0x7f, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x92, 0xe8, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0x32, 0x25, 0x3b, 0x0e, 0x1d, 0x87, 0x8e, 0x6f, 0xc7, 0xa1, 0xe3, 0xf1, 0x8a, 0x0b, 0x82, 0x0d, 0x96, 0x9b, 0x92, 0x2c, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0x48, 0x1d, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x4d, 0xbb, 0x0e, 0x2b, 0xb4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xc0, 0xf9, 0xbf, 0xeb, 0xb0, 0x42, 0x7b, 0xb0, 0x12, 0x37, 0xe6, 0x38, 0x34, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x64, 0x60, 0xd6, 0x0e, 0x2b, 0xb4, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x94, 0x0c, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0xc0, 0xef, 0x3a, 0x9e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0xf2, 0x42, 0x18, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xac, 0xc4, 0x35, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x1f, 0xac, 0x81, 0x84, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x08, 0x7c, 0xaa, 0xe3, 0xf9, 0xc1, 0x7a, 0x52, 0x98, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0xb0, 0x1e, 0x12, 0xe6, 0x60, 0xa5, 0x64, 0xd7, 0xc1, 0x6a, 0x46, 0x93, 0xe3, 0xd0, 0x71, 0x68, 0x05, 0xc1, 0x06, 0x4b, 0xe5, 0xc9, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0x86, 0x9d, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x24, 0xfe, 0x77, 0x1d, 0xcf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x83, 0xf5, 0x90, 0x30, 0x83, 0x64, 0xa0, 0xbd, 0xde, 0xf1, 0xf8, 0x38, 0x74, 0x1c, 0x5a, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0x06, 0xeb, 0x21, 0x61, 0x06, 0xc9, 0xc0, 0xfc, 0x1d, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xe5, 0xf7, 0x30, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x10, 0xb8, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xce, 0x35, 0xc5, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x8c, 0x02, 0x9d, 0x83, 0x14, 0x73, 0xea, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x20, 0xf8, 0xbb, 0x8e, 0xe7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x92, 0xc5, 0xa7, 0x87, 0xdf, 0x78, 0x3e, 0x86, 0xca, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x8a, 0x51, 0x93, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc1, 0xc2, 0xc5, 0x94, 0xe3, 0xd0, 0xc1, 0x7a, 0x52, 0x98, 0x83, 0x55, 0x3f, 0x30, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xc9, 0xd0, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x58, 0x96, 0x51, 0x76, 0x1c, 0x1a, 0x04, 0x0b, 0x92, 0x01, 0x81, 0xdf, 0x75, 0x48, 0x2e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0xf2, 0x42, 0x18, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x01, 0xc5, 0x7f, 0xd7, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xe3, 0xf0, 0xf1, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x10, 0xf8, 0x54, 0x87, 0xe4, 0xd2, 0xc1, 0x12, 0xc9, 0x97, 0xe3, 0xd0, 0x20, 0xd8, 0x90, 0x3a, 0x38, 0x58, 0x9b, 0xee, 0x72, 0x1c, 0x1a, 0x04, 0x1b, 0x2c, 0xbf, 0x87, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x58, 0x06, 0x2f, 0x70, 0x70, 0x7e, 0xa2, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x60, 0x3d, 0x24, 0xcc, 0xc1, 0xf9, 0x27, 0x7c, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x58, 0x0f, 0x09, 0x73, 0xe8, 0x62, 0x72, 0xb0, 0xea, 0x07, 0x66, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x58, 0x0f, 0x09, 0x33, 0x48, 0x06, 0x8c, 0xfb, 0xaf, 0xe3, 0xf1, 0xc1, 0xaa, 0x1f, 0x98, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x4b, 0xe5, 0xc9, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xac, 0x76, 0x29, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xc1, 0x7a, 0x48, 0x98, 0x41, 0x32, 0x30, 0x5c, 0xc7, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xf4, 0x75, 0xaa, 0xe3, 0xf9, 0xc1, 0x7a, 0x52, 0x98, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0xb0, 0x1e, 0x12, 0xe6, 0x60, 0x4d, 0x71, 0xcd, 0xc1, 0x6a, 0x46, 0x93, 0xe3, 0xd0, 0xc1, 0xaa, 0x1f, 0x98, 0xe3, 0xd0, 0x20, 0xd8, 0x60, 0x81, 0x62, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x41, 0xf1, 0x14, 0x78, 0x30, 0x96, 0xa1, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x2a, 0x4f, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xb5, 0x24, 0xce, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xab, 0x5d, 0xca, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x83, 0xf5, 0x90, 0x30, 0x07, 0x27, 0x66, 0xdf, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0xb4, 0x20, 0xd8, 0x60, 0xa9, 0x3c, 0xd9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x73, 0x4d, 0xf1, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x25, 0xae, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0xb0, 0x1e, 0x12, 0xe6, 0x60, 0x21, 0xac, 0xcb, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xd5, 0x43, 0x65, 0x07, 0xab, 0x19, 0x4d, 0x8e, 0x43, 0x2b, 0x08, 0x36, 0x58, 0x7e, 0x0f, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0x7e, 0x3a, 0x08, 0x72, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x05, 0xd9, 0xce, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x83, 0x21, 0xfe, 0x71, 0x10, 0xe4, 0xfc, 0x87, 0x46, 0x2d, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x25, 0xae, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x0d, 0xd6, 0x43, 0xc2, 0x1c, 0x9c, 0xfb, 0x68, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x16, 0xef, 0x53, 0x1d, 0xcf, 0x0f, 0xd6, 0x93, 0xc2, 0x1c, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x9d, 0x75, 0xd9, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0xcb, 0x54, 0xcd, 0x0e, 0x56, 0xfd, 0xc0, 0x1c, 0xac, 0x66, 0x34, 0x39, 0x0e, 0x2d, 0x08, 0x16, 0x04, 0x1b, 0x94, 0x0c, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xc1, 0x7a, 0x48, 0x98, 0x41, 0x32, 0xa0, 0xf8, 0xff, 0x3a, 0x1e, 0x1f, 0x87, 0x06, 0xc1, 0x06, 0x6b, 0x2a, 0xcb, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0x97, 0xf5, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xd6, 0x94, 0x96, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x38, 0x34, 0x7a, 0xb0, 0xf2, 0xb5, 0xec, 0x38, 0x74, 0xb0, 0xce, 0xb7, 0xec, 0x38, 0xb4, 0x20, 0xd8, 0xa0, 0x64, 0x68, 0x3a, 0x58, 0xb1, 0x14, 0xb5, 0x20, 0xd8, 0xa0, 0x64, 0x68, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x54, 0x9e, 0x6c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0xa0, 0xd0, 0x0f, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x56, 0xe2, 0x9a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x60, 0x3d, 0x24, 0xcc, 0xc1, 0x21, 0xf4, 0xf6, 0x60, 0xd1, 0x43, 0xd9, 0x71, 0x68, 0x10, 0x6c, 0xb0, 0x10, 0xda, 0xec, 0x60, 0x35, 0xa3, 0xc9, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x36, 0x28, 0x19, 0x9a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0x95, 0x27, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x31, 0x50, 0x01, 0x00, 0x00, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x56, 0xe2, 0x9a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x60, 0x3d, 0x24, 0xcc, 0x20, 0x19, 0x90, 0xfc, 0xff, 0x75, 0x3c, 0x3e, 0x58, 0xf4, 0x50, 0x76, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0xd6, 0x43, 0xc2, 0x0c, 0x92, 0x81, 0xd9, 0x3b, 0x1e, 0x1f, 0xac, 0x66, 0x34, 0x39, 0x0e, 0x1d, 0x87, 0x16, 0x04, 0x1b, 0x2c, 0x95, 0x27, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x70, 0xae, 0x29, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xb5, 0x4b, 0xd9, 0xc1, 0xba, 0x33, 0xb3, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0x92, 0xa1, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x52, 0x79, 0xb2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa9, 0x1d, 0x20, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x95, 0xb8, 0x26, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x58, 0x0f, 0x09, 0x33, 0x48, 0x06, 0x0c, 0xfb, 0xaf, 0xe3, 0xf1, 0xc1, 0xa2, 0x87, 0xb2, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0xb0, 0x1e, 0x12, 0xe6, 0xe0, 0xf0, 0x4e, 0x7b, 0xb0, 0x9a, 0xd1, 0xe4, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0x94, 0x0c, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x96, 0xca, 0x93, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x18, 0xf8, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x25, 0xae, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x0d, 0xd6, 0x43, 0xc2, 0x0c, 0x92, 0x01, 0x41, 0xff, 0x75, 0x3c, 0x3e, 0x58, 0xf4, 0x50, 0x76, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0xd6, 0x43, 0xc2, 0x1c, 0x9c, 0x56, 0x70, 0x0f, 0x56, 0x33, 0x9a, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x2e, 0xec, 0x82, 0x60, 0x83, 0x34, 0x27, 0x84, 0x83, 0xe4, 0x64, 0xe8, 0x05, 0xc1, 0x06, 0xc3, 0x8c, 0xe6, 0x60, 0xc1, 0x3c, 0xca, 0xc1, 0x12, 0xb3, 0x94, 0x85, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0xe4, 0x9f, 0xe7, 0x0d, 0x92, 0x87, 0x98, 0x87, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0x44, 0xa5, 0xe7, 0x0d, 0xd2, 0x9f, 0x9e, 0x87, 0x5d, 0x10, 0x6c, 0x90, 0xe6, 0x84, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x39, 0x58, 0xa5, 0x91, 0x73, 0x1c, 0x5a, 0x10, 0x6c, 0x30, 0xcc, 0x68, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0xc3, 0x6f, 0x3c, 0x1f, 0xc3, 0xfa, 0x38, 0x74, 0x50, 0x32, 0x34, 0xad, 0x20, 0xd8, 0x60, 0x98, 0xd1, 0x1c, 0xa4, 0x98, 0x53, 0x1f, 0xac, 0x4e, 0x3f, 0x1b, 0x04, 0x1b, 0x8c, 0x17, 0xc6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0x83, 0x51, 0x92, 0x38, 0xfc, 0xc6, 0xf3, 0xe1, 0x17, 0x24, 0x03, 0xa5, 0xea, 0x90, 0x5c, 0x3a, 0xa4, 0x6a, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x82, 0x60, 0x83, 0xe1, 0x3b, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xa1, 0x78, 0x37, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x20, 0xdb, 0x39, 0x64, 0xed, 0x8e, 0x43, 0x87, 0x7c, 0xed, 0x71, 0x68, 0x05, 0xc1, 0x06, 0xc3, 0xbe, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x41, 0xb6, 0x73, 0x30, 0x78, 0x68, 0x8e, 0x43, 0x87, 0x71, 0x59, 0x10, 0x6c, 0x30, 0xec, 0x6b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x14, 0x64, 0x3b, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x0c, 0x33, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xac, 0xdd, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x63, 0xdd, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x92, 0x17, 0xc2, 0x21, 0x5f, 0x7b, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x0e, 0xe3, 0x72, 0x3c, 0x5e, 0x5c, 0x10, 0x6c, 0xb0, 0x90, 0x22, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xd8, 0x70, 0x3d, 0x58, 0xbd, 0x57, 0x76, 0x1c, 0x5a, 0x41, 0xb0, 0xc1, 0x52, 0x79, 0xb2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa9, 0x1d, 0x20, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x01, 0xc5, 0x7f, 0xd7, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x61, 0x62, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xc6, 0xef, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0xad, 0x20, 0xd8, 0x60, 0xa9, 0x3c, 0xd9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf4, 0xb2, 0x9e, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x36, 0x58, 0x45, 0x07, 0x33, 0x08, 0x36, 0x58, 0x8d, 0x14, 0x73, 0xb0, 0x9a, 0xd1, 0x64, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x20, 0xfd, 0xff, 0xeb, 0x78, 0x7c, 0xb0, 0x9a, 0xd1, 0xe4, 0x38, 0xb4, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0x8e, 0xff, 0x5f, 0xc7, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x0f, 0x16, 0xc2, 0xba, 0x1c, 0xac, 0xfa, 0x81, 0x59, 0x10, 0x6c, 0xb0, 0x54, 0x9e, 0x6c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0xf1, 0xfc, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x0d, 0x24, 0xda, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa4, 0xe0, 0x8e, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xf5, 0xaf, 0xe3, 0xf1, 0x71, 0x68, 0x10, 0x6c, 0x70, 0x36, 0xe9, 0x3d, 0x58, 0xcd, 0x68, 0x72, 0x1c, 0x5a, 0x10, 0x6c, 0xb0, 0x40, 0x31, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0xc1, 0x32, 0x54, 0xa3, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x94, 0x8f, 0x2c, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0x07, 0x45, 0x3b, 0x0e, 0x0d, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0x32, 0xf0, 0xfc, 0xd7, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xa5, 0x46, 0x65, 0x07, 0xab, 0x7e, 0x60, 0x16, 0x04, 0x1b, 0x2c, 0x95, 0x27, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x5e, 0xd6, 0x33, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x56, 0xb5, 0xa2, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xca, 0xd7, 0xf1, 0xf8, 0x60, 0x35, 0xa3, 0xc9, 0x71, 0x68, 0x05, 0xc1, 0x06, 0x4b, 0xe5, 0xc9, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0x79, 0x21, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xd6, 0x40, 0xa2, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0xdc, 0x6e, 0x36, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0x70, 0xee, 0xa3, 0x3d, 0x58, 0xf9, 0x3e, 0x73, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0xfc, 0xe0, 0xdc, 0x47, 0x7b, 0xb0, 0x9a, 0xd1, 0xe4, 0x38, 0x34, 0x08, 0x36, 0x58, 0x2a, 0x4f, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xb5, 0x03, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x35, 0x90, 0x68, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x0e, 0x89, 0x1c, 0x2c, 0xd1, 0x44, 0x3b, 0x0e, 0x1d, 0x87, 0x16, 0x04, 0x1b, 0x2c, 0xbf, 0x87, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0x74, 0xbe, 0xeb, 0x83, 0x14, 0x3f, 0x87, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2b, 0x71, 0x4d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x2c, 0xe1, 0x84, 0x19, 0x04, 0x1b, 0xac, 0xdd, 0x8a, 0x39, 0x58, 0xf5, 0x03, 0x73, 0xb0, 0xd0, 0x77, 0x66, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xf2, 0x7b, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x83, 0x92, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xab, 0xf3, 0x4c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x83, 0x35, 0x57, 0x31, 0x07, 0x6b, 0x16, 0x61, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x9a, 0x53, 0x1d, 0xcf, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0x55, 0x3f, 0x30, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x16, 0x52, 0xc4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x0d, 0x3b, 0x39, 0x58, 0x98, 0x08, 0x73, 0x1c, 0x3a, 0x58, 0xf5, 0x03, 0x33, 0x08, 0x36, 0x58, 0x76, 0x01, 0x73, 0xb0, 0xea, 0x07, 0x66, 0x10, 0x6c, 0xb0, 0x96, 0x23, 0xe6, 0x60, 0xd5, 0x0f, 0xcc, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x83, 0xb5, 0xc2, 0x23, 0xc7, 0xf3, 0x83, 0x55, 0x3f, 0x30, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0x5d, 0xaa, 0xe3, 0xf9, 0xc1, 0xaa, 0x1f, 0x98, 0xe3, 0xd0, 0x71, 0x68, 0x41, 0xb0, 0xc1, 0x02, 0xc5, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x8c, 0x81, 0x47, 0xf6, 0xa6, 0x6f, 0x88, 0xe1, 0x20, 0x58, 0xf8, 0x05, 0xc9, 0x40, 0xad, 0x3a, 0xac, 0xd0, 0x1e, 0x9c, 0x56, 0x70, 0x0f, 0x8d, 0x5a, 0x8e, 0xc7, 0x07, 0x8b, 0x61, 0x6b, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0x96, 0xca, 0x93, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0xd7, 0x14, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x06, 0x12, 0x6d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xe2, 0x76, 0xb3, 0x83, 0xf5, 0xc7, 0x68, 0xc7, 0xa1, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0xe5, 0xf7, 0x30, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x30, 0x0a, 0x74, 0x0e, 0x16, 0xcc, 0xa3, 0x1c, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0xd8, 0x56, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xb5, 0x2c, 0xfa, 0x60, 0xb1, 0xb9, 0xcc, 0x71, 0xe8, 0x38, 0xb4, 0x20, 0xd8, 0x60, 0xf9, 0x3d, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x3c, 0x58, 0x44, 0x56, 0x76, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x61, 0x5b, 0xd9, 0xc1, 0x3a, 0xc3, 0x94, 0xe3, 0xd0, 0x0a, 0x82, 0x0d, 0x96, 0xdf, 0xc3, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x9a, 0xa2, 0x36, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xc2, 0xb6, 0xb2, 0x83, 0xb5, 0x01, 0x29, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0x4b, 0xe5, 0xc9, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0xdc, 0x9e, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x06, 0x12, 0x6d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0xe1, 0xe2, 0x86, 0xdf, 0x78, 0x7e, 0x70, 0xda, 0xa5, 0x3d, 0x0e, 0x1d, 0x87, 0x16, 0x04, 0x1b, 0x2c, 0x95, 0x27, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x3c, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x1a, 0x48, 0xb4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xeb, 0x2d, 0xd1, 0x0e, 0x16, 0x8e, 0xa3, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x83, 0xa5, 0xf2, 0x64, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x92, 0xbc, 0x10, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x6b, 0x20, 0xd1, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x3c, 0xf4, 0x27, 0x3f, 0x58, 0x3d, 0x94, 0x76, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0xfc, 0xe0, 0xe0, 0x51, 0x7b, 0xb0, 0x9a, 0xd1, 0xe4, 0x38, 0xb4, 0x20, 0xd8, 0x60, 0xf9, 0x3d, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x55, 0x73, 0x69, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0xc4, 0x35, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x6c, 0xb0, 0xb0, 0x2a, 0x66, 0x10, 0x6c, 0xb0, 0x30, 0x11, 0xe6, 0x60, 0xd5, 0x0f, 0xcc, 0xc1, 0x32, 0xec, 0xb4, 0x83, 0x75, 0xdd, 0x69, 0x07, 0x2b, 0xcc, 0xd3, 0x8e, 0x43, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xcb, 0xef, 0x61, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0x9a, 0x4b, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x25, 0xae, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xc1, 0x5a, 0x09, 0x98, 0x83, 0xc5, 0x98, 0x69, 0x07, 0xcb, 0x9f, 0xd5, 0x0e, 0x96, 0x61, 0xa7, 0x1d, 0xac, 0xeb, 0x4e, 0x3b, 0x58, 0x61, 0x9e, 0x76, 0x1c, 0x3a, 0x0e, 0x2d, 0x08, 0x36, 0x58, 0x7e, 0x0f, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe1, 0x91, 0xda, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0b, 0xdb, 0xca, 0x0e, 0x16, 0x62, 0x8e, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0x2c, 0x95, 0x27, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x70, 0xae, 0x29, 0x1e, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xac, 0x81, 0x44, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xa4, 0x68, 0x0f, 0xd6, 0x1f, 0xa3, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0xab, 0x20, 0xd2, 0x0e, 0x56, 0x33, 0x9a, 0x1c, 0x87, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x21, 0x45, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc5, 0x84, 0x27, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x18, 0x35, 0x39, 0x58, 0x41, 0x82, 0x73, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x90, 0x22, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x2a, 0xcf, 0x93, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x56, 0x8c, 0x9a, 0x1c, 0xac, 0x35, 0x3d, 0x39, 0x0e, 0x1d, 0xac, 0xfa, 0x81, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xfc, 0x1e, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x46, 0x81, 0xce, 0xc1, 0x52, 0x09, 0xb4, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0b, 0xdb, 0xca, 0x0e, 0x16, 0x53, 0x9c, 0x1c, 0x87, 0x0e, 0x56, 0xfd, 0xc0, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x7e, 0x0f, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x69, 0x8a, 0xda, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0b, 0xdb, 0xca, 0x0e, 0x56, 0xcd, 0x9c, 0x1c, 0x87, 0x0e, 0x56, 0xfd, 0xc0, 0x2c, 0x08, 0x36, 0x58, 0x2a, 0x4f, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x35, 0xec, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x35, 0x90, 0x68, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xd6, 0xd9, 0xa9, 0x0d, 0xbf, 0xf1, 0xfc, 0x60, 0x85, 0x4e, 0xd9, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x36, 0x58, 0xa0, 0x18, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x0f, 0xd6, 0x03, 0xa8, 0x1d, 0x8f, 0x0f, 0x16, 0xc3, 0xd6, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0x2c, 0x95, 0x27, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x70, 0x7b, 0x32, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x03, 0x89, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xe3, 0x41, 0x48, 0x81, 0x1f, 0x2c, 0xcd, 0x53, 0x3b, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x7e, 0x70, 0x84, 0xa0, 0x3f, 0x58, 0xcd, 0x68, 0x72, 0x1c, 0x5a, 0x10, 0x6c, 0xb0, 0xb2, 0xd5, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x7a, 0x59, 0xcf, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6b, 0x20, 0xd1, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x6e, 0x37, 0x3b, 0x58, 0xe6, 0x9d, 0x76, 0x1c, 0x3a, 0x0e, 0xad, 0x20, 0xd8, 0x60, 0x81, 0x62, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xbf, 0xc1, 0x9a, 0x10, 0xa8, 0x83, 0x71, 0x07, 0x75, 0x68, 0xd4, 0x72, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd9, 0x60, 0xf5, 0x0a, 0xc9, 0xf1, 0xfc, 0x38, 0xb4, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xac, 0x0c, 0x46, 0x3b, 0x58, 0xf6, 0x90, 0xb6, 0x20, 0xd8, 0x60, 0xa9, 0x3c, 0xd9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xd4, 0x0e, 0x90, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x1a, 0x48, 0xb4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x49, 0xc1, 0x1d, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x82, 0x9f, 0xea, 0x78, 0x7e, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0xd4, 0xab, 0xe3, 0xf1, 0xc1, 0x6a, 0x46, 0x93, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0xa5, 0xf2, 0x64, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x92, 0xbc, 0x10, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x6b, 0x20, 0xd1, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0x05, 0x77, 0x1c, 0xac, 0x1e, 0x4a, 0x3b, 0x0e, 0x1d, 0x2c, 0x7a, 0x55, 0x3b, 0x0e, 0x2d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc9, 0x40, 0xfa, 0xeb, 0x78, 0x7c, 0xb0, 0xec, 0x21, 0x6d, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xd6, 0x49, 0xb1, 0x1d, 0x2c, 0x38, 0x46, 0x1b, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x48, 0x06, 0xa6, 0xeb, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x30, 0x5c, 0xb9, 0x8e, 0xe7, 0x07, 0xab, 0x7e, 0x60, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x82, 0x97, 0xeb, 0x78, 0x7e, 0xb0, 0xea, 0x07, 0x66, 0x10, 0x6c, 0xb0, 0xc2, 0x8e, 0xed, 0x60, 0x3d, 0x29, 0xcc, 0x20, 0xd8, 0x60, 0xa9, 0x3c, 0xd9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xd4, 0xb0, 0x93, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x1a, 0x48, 0xb4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xcb, 0x93, 0xd7, 0x0e, 0xd6, 0x7e, 0xae, 0x1d, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xeb, 0x7a, 0xc7, 0xe3, 0x83, 0xd5, 0x8c, 0x26, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0x0b, 0x14, 0x63, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0x96, 0x0a, 0xa8, 0x1d, 0x94, 0x0c, 0x4d, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0x83, 0xc5, 0xb0, 0x35, 0xc7, 0xa1, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0xa5, 0x90, 0x76, 0xb0, 0xe0, 0x18, 0x6d, 0x10, 0x6c, 0xb0, 0xfc, 0x1e, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc2, 0x23, 0xb5, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x16, 0xb6, 0x95, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0xb8, 0x98, 0x72, 0x90, 0x54, 0x50, 0x7d, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0xc0, 0x9b, 0xae, 0x0c, 0x8f, 0xae, 0x05, 0x4e, 0xee, 0x6d, 0xac, 0x6c, 0x6e, 0x2e, 0xcd, 0xed, 0x5c, 0x06, 0xe0, 0x85, 0x46, 0x4c, 0x07, 0x84, 0xae, 0x0c, 0x8f, 0x0e, 0x04, 0x4e, 0xee, 0x6d, 0xac, 0x6c, 0x6e, 0x2e, 0xcd, 0xed, 0x6c, 0x01, 0xbf, 0xad, 0x6c, 0x6e, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0xba, 0xce, 0xd6, 0x00, 0xfe, 0x63, 0x74, 0x72, 0x6c, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x5d, 0x9a, 0x78, 0x70, 0xd2, 0x13, 0xdd, 0xf0, 0x17, 0xcd, 0x06, 0x27, 0x3d, 0xd1, 0x0d, 0x4a, 0x78, 0xcc, 0x35, 0x58, 0x2b, 0xd0, 0xd6, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0xe7, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0xb0, 0x94, 0xa1, 0x6d, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x92, 0xa2, 0x6d, 0x83, 0x95, 0x14, 0x6d, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0x94, 0xa1, 0x6d, 0xc3, 0xdb, 0x3a, 0x83, 0xd3, 0x07, 0x4b, 0x19, 0xda, 0x6a, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x95, 0x6c, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x46, 0x71, 0x83, 0x25, 0x18, 0x6d, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0xf7, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0x38, 0xdb, 0x60, 0x09, 0x46, 0xdb, 0x41, 0xda, 0x69, 0xec, 0x1a, 0xfe, 0xcd, 0x59, 0xc3, 0xd7, 0x2f, 0x1b, 0x3e, 0x84, 0xd9, 0xf0, 0xf5, 0xcb, 0x86, 0x0f, 0x61, 0x0e, 0x92, 0x7b, 0x5c, 0x0f, 0x96, 0x60, 0xb4, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x49, 0xd1, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x64, 0x2d, 0xae, 0x41, 0x59, 0xf2, 0xbe, 0x80, 0x27, 0x57, 0x87, 0xb7, 0x86, 0xb7, 0x75, 0x06, 0x3e, 0x8c, 0x6e, 0x83, 0x25, 0x18, 0x6d, 0xad, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0xd0, 0x77, 0xb0, 0x62, 0xa4, 0xad, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x04, 0xa3, 0xed, 0x60, 0xc5, 0x48, 0xdb, 0x0a, 0xf8, 0x74, 0x75, 0x66, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xea, 0xb6, 0xb6, 0x06, 0xe0, 0xa3, 0x8e, 0xce, 0x6c, 0x46, 0x06, 0x84, 0xee, 0x0d, 0xa4, 0x8e, 0xce, 0x0c, 0x07, 0x84, 0xae, 0x0c, 0x8f, 0x6e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf0, 0xe0, 0x38, 0x00, 0xbb, 0xe1, 0x2f, 0x9a, 0x0d, 0xce, 0xb3, 0xa3, 0x1b, 0x14, 0x9d, 0xc6, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xb1, 0x55, 0xd0, 0x06, 0x45, 0xa5, 0xf8, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x39, 0x67, 0xbb, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0x73, 0x90, 0xb6, 0x70, 0x78, 0x78, 0x5a, 0x67, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x71, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x99, 0xb8, 0x07, 0xa9, 0xe0, 0xad, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x8f, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1e, 0xdc, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x3e, 0xee, 0x41, 0x2a, 0x78, 0x6b, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0xf8, 0xdd, 0xf0, 0x5e, 0xd0, 0x1a, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0x3c, 0xfc, 0x6f, 0x83, 0x53, 0xc8, 0xd3, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0xbc, 0x17, 0xb4, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x0f, 0xee, 0xff, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x10, 0x03, 0xb1, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x4e, 0x0c, 0x02, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x3c, 0x78, 0xb3, 0x86, 0x5f, 0x5c, 0x36, 0x38, 0x2e, 0xcf, 0x1c, 0x1c, 0x15, 0xd8, 0x0e, 0x6f, 0xa1, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc4, 0x40, 0xac, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0x13, 0x83, 0x00, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x4c, 0xdc, 0x0d, 0xd2, 0x26, 0x6d, 0x0f, 0x6f, 0xa1, 0x75, 0xf8, 0x45, 0x68, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x1b, 0xde, 0x0b, 0xda, 0x20, 0x6d, 0x28, 0xb2, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc4, 0x40, 0xac, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0x13, 0x83, 0x00, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa2, 0xd9, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x87, 0xf0, 0xe0, 0xcc, 0xdc, 0x76, 0x78, 0x0b, 0xad, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x06, 0x62, 0x83, 0xd5, 0xf3, 0x6d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0xc3, 0x83, 0x37, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xe3, 0xf2, 0xcc, 0xc1, 0x61, 0x79, 0xe6, 0xf0, 0x16, 0x5a, 0x07, 0xab, 0xdf, 0xdb, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc4, 0x40, 0xac, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0x13, 0x83, 0x80, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa2, 0xd9, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x52, 0x75, 0x71, 0x0f, 0x0a, 0x4a, 0xf1, 0xc3, 0x5b, 0x68, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x31, 0x10, 0x1b, 0xac, 0x9e, 0x6f, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x44, 0xb3, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0xe1, 0x70, 0x3b, 0x38, 0x2c, 0xcf, 0x1c, 0xde, 0x42, 0xeb, 0x60, 0xe1, 0x88, 0xdb, 0x2c, 0xe0, 0xcb, 0xd5, 0xb9, 0xd1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xeb, 0xca, 0xdc, 0x1a, 0x80, 0x0f, 0x38, 0xb9, 0x32, 0xb8, 0x32, 0x37, 0x32, 0x10, 0xb9, 0x32, 0xb8, 0xb2, 0x30, 0xba, 0x32, 0x32, 0xb6, 0xbc, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x7f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc7, 0x83, 0x93, 0x9e, 0x68, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xa4, 0x27, 0xba, 0xe1, 0x83, 0x9c, 0x0d, 0xdf, 0xe6, 0x6c, 0x78, 0x7a, 0xe7, 0xe0, 0x60, 0x5a, 0x79, 0x38, 0xc5, 0x16, 0xf0, 0xc7, 0xc2, 0xe6, 0xe6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x65, 0x90, 0x6e, 0x0d, 0xe0, 0xc1, 0xf6, 0x76, 0x57, 0x26, 0x37, 0x16, 0x36, 0x57, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0x96, 0x03, 0xb4, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x93, 0x9e, 0xe8, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x91, 0xaa, 0xd7, 0xf0, 0xb6, 0xce, 0xc1, 0x52, 0x86, 0xb6, 0x35, 0xfc, 0xa2, 0xb4, 0xe1, 0xcb, 0xa5, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x3c, 0xc2, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc3, 0x56, 0xda, 0xf0, 0xb4, 0xce, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0x0f, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0xf8, 0xdd, 0xf0, 0xb4, 0xce, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0xd7, 0x6a, 0xc3, 0xd3, 0x3a, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x06, 0xa9, 0xa7, 0xb1, 0x87, 0x87, 0x7e, 0x5a, 0x81, 0x0f, 0xa3, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x0f, 0xa3, 0x1b, 0xc0, 0x57, 0x2c, 0x6c, 0x2e, 0x6d, 0x0c, 0x04, 0x4e, 0x2e, 0xcd, 0x8d, 0x2e, 0xcd, 0xed, 0x6c, 0x83, 0xb2, 0x0c, 0x7b, 0xc3, 0x97, 0x4b, 0xb3, 0xcc, 0x02, 0x9e, 0x5c, 0x9d, 0xbd, 0xe1, 0x2f, 0x9a, 0x0d, 0x4e, 0x7a, 0xa2, 0x1b, 0x9c, 0xf3, 0x97, 0xd6, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0x28, 0x5c, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xe1, 0xf6, 0x06, 0xab, 0x7a, 0x95, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x27, 0x57, 0xd7, 0xb6, 0x41, 0x0a, 0x74, 0xea, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x5f, 0x94, 0x36, 0x3c, 0xcf, 0xb4, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0xd0, 0x7f, 0x78, 0x2f, 0x68, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x87, 0xae, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x35, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x87, 0xfa, 0xc3, 0x7b, 0x41, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0xb4, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0x6c, 0xc3, 0x7b, 0x41, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0xd3, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0xd6, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x1e, 0x1c, 0xde, 0x42, 0xdb, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xd9, 0x86, 0xf7, 0x82, 0x36, 0x48, 0xc6, 0xb6, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0xe1, 0xc7, 0xe1, 0x2d, 0xb4, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0xc3, 0x7b, 0x41, 0x07, 0x67, 0xe6, 0xb6, 0xd5, 0x60, 0xe5, 0xbe, 0xdb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x86, 0xe7, 0x99, 0x36, 0x58, 0xf5, 0xe7, 0xb6, 0x86, 0x3f, 0x97, 0x06, 0x27, 0x0f, 0xca, 0xbe, 0xf2, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x49, 0x4f, 0x74, 0xc3, 0x07, 0x39, 0x1b, 0xbe, 0xcd, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x72, 0x5d, 0xf6, 0xa0, 0x70, 0x92, 0x3d, 0xfc, 0x22, 0xb4, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x78, 0x79, 0x78, 0xf0, 0x66, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xa4, 0x27, 0xba, 0xe1, 0x83, 0x9c, 0x0d, 0xdf, 0xe6, 0x6c, 0x78, 0x7a, 0x67, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x73, 0xc3, 0x23, 0xac, 0x6b, 0x78, 0x9b, 0x75, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0x39, 0x28, 0x27, 0xa0, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x07, 0x6f, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xd8, 0xdd, 0x6e, 0x50, 0x4e, 0x40, 0xaf, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0xca, 0x6b, 0xd5, 0xe1, 0xbd, 0xa0, 0x0d, 0x8a, 0x4a, 0xf1, 0x83, 0x53, 0x73, 0x5b, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x78, 0x70, 0x67, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x02, 0xeb, 0xe1, 0xf7, 0xb3, 0x35, 0xfc, 0xc3, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xb9, 0x2e, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0xc3, 0xef, 0x67, 0xad, 0xe1, 0x83, 0x9c, 0x0d, 0x8a, 0x91, 0xda, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x0f, 0x72, 0x36, 0x58, 0x3a, 0xf9, 0xb6, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x43, 0xd9, 0xc1, 0x9a, 0x8d, 0xb7, 0xc3, 0x2f, 0x42, 0x87, 0xa7, 0x77, 0x5a, 0x83, 0x22, 0x04, 0xfa, 0xa0, 0x50, 0x81, 0x6e, 0x05, 0x7c, 0x39, 0xba, 0xb0, 0x76, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0xf4, 0x44, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x43, 0xcb, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x24, 0xdf, 0x64, 0x77, 0x78, 0xe8, 0xa7, 0xd5, 0x60, 0x65, 0x56, 0xdb, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xe9, 0x89, 0x6e, 0xf8, 0xc5, 0x65, 0x83, 0x45, 0xf0, 0x6e, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x1c, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xce, 0x77, 0xdb, 0xe0, 0xf0, 0x2a, 0xb7, 0x41, 0x41, 0x91, 0xb9, 0x86, 0x5f, 0x94, 0x36, 0x3c, 0xcf, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x78, 0x2f, 0x68, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x5f, 0x9c, 0x6d, 0x78, 0x2f, 0xe8, 0x20, 0xdd, 0xb5, 0x6a, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0xa1, 0x70, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0xf8, 0x55, 0xcd, 0x02, 0x2f, 0x47, 0x6f, 0xf8, 0x8b, 0x66, 0x83, 0x93, 0x9e, 0xe8, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0xe8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x08, 0xda, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0xe9, 0x3a, 0x5b, 0x07, 0xeb, 0xac, 0xdf, 0xd6, 0xf0, 0x17, 0xcd, 0x06, 0x27, 0x3d, 0xd1, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xa8, 0x02, 0xee, 0xa0, 0xac, 0xf3, 0xac, 0x15, 0x5c, 0xde, 0xf0, 0x41, 0xce, 0x1a, 0x1e, 0x61, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0x6d, 0x90, 0x4e, 0x0e, 0x7b, 0x10, 0xac, 0xac, 0x6b, 0xf8, 0x0a, 0x67, 0xc3, 0x07, 0x39, 0x1b, 0xbe, 0xcd, 0xd9, 0xa0, 0xc8, 0x69, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xec, 0xd2, 0xe6, 0x83, 0xf2, 0x63, 0x7f, 0xc3, 0x23, 0xac, 0x6b, 0xf8, 0x95, 0x6c, 0x0d, 0xff, 0xe6, 0x6c, 0xb0, 0x66, 0xe3, 0x6d, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0x2f, 0x82, 0x6b, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0xb0, 0x95, 0x36, 0x58, 0x16, 0x05, 0xb7, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0xc3, 0xc3, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0x58, 0x16, 0x05, 0xb7, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0xc3, 0xf5, 0x6a, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0xe2, 0x7d, 0xbf, 0x5a, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0x56, 0x7e, 0x6b, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x07, 0x6b, 0x6e, 0xe0, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x27, 0x57, 0x47, 0xb6, 0xe1, 0x6d, 0x9d, 0x83, 0x75, 0x59, 0x6d, 0x87, 0x53, 0xac, 0x05, 0x5e, 0xce, 0xdc, 0xf0, 0x17, 0xcd, 0x06, 0x27, 0x3d, 0xd1, 0x0d, 0xbf, 0xb8, 0xac, 0x41, 0x90, 0x9e, 0x6e, 0x78, 0x70, 0x67, 0x0d, 0x02, 0x36, 0x68, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xa1, 0x66, 0x0d, 0xc2, 0x08, 0x68, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xe1, 0xfc, 0x1a, 0x84, 0xe9, 0xd8, 0x41, 0x78, 0xaa, 0x76, 0x50, 0xd6, 0x79, 0xce, 0x02, 0x9e, 0x5c, 0x1d, 0xbc, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xb8, 0x78, 0x90, 0x4e, 0x0e, 0xbb, 0xe1, 0x2f, 0x9a, 0x0d, 0x4e, 0x7a, 0xa2, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0xac, 0xd9, 0x78, 0xdb, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xe9, 0x89, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x46, 0x71, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x14, 0xff, 0x1e, 0xa4, 0x82, 0xb7, 0x1e, 0x14, 0xc4, 0xe3, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0x70, 0x22, 0x68, 0x5b, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0x60, 0x05, 0x6e, 0xdb, 0x1a, 0x3e, 0x0f, 0x3a, 0x58, 0x50, 0xf4, 0xd6, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xe9, 0x89, 0x6e, 0xf8, 0xc5, 0x65, 0x83, 0x35, 0x1b, 0x6f, 0x1b, 0xac, 0xd9, 0x78, 0x5b, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0x83, 0x3b, 0x07, 0xcb, 0x55, 0xdb, 0xd6, 0xf0, 0x79, 0xd0, 0xc1, 0xa9, 0xb9, 0xad, 0x36, 0x7c, 0x90, 0xb3, 0xe1, 0x35, 0xbd, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0xc3, 0xfd, 0x83, 0xb2, 0xce, 0x73, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x07, 0x87, 0xf5, 0x95, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x32, 0xec, 0xb7, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xa9, 0x62, 0x7e, 0x6d, 0x78, 0x5b, 0x67, 0xe0, 0xe1, 0xde, 0x0e, 0x0f, 0xfd, 0xb4, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0x20, 0x60, 0x59, 0x0f, 0xef, 0x05, 0xad, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf8, 0x78, 0x50, 0xf2, 0xef, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x4e, 0x1e, 0x94, 0x1f, 0xfb, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x44, 0xd0, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x86, 0xfd, 0xb6, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x59, 0x8e, 0x4b, 0x07, 0x6b, 0x07, 0xe2, 0x0e, 0xbf, 0x08, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x86, 0xfd, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xdf, 0x0f, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc4, 0x40, 0x1c, 0x14, 0x80, 0xfc, 0xd5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe3, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xf1, 0x71, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x45, 0xa5, 0xf8, 0x41, 0xb0, 0xb2, 0x1e, 0x1e, 0xfa, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x9c, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0xc1, 0xd2, 0xa5, 0xb8, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x22, 0x68, 0x5b, 0xc3, 0x25, 0xb5, 0xc1, 0x61, 0xbf, 0x63, 0x83, 0x92, 0x6a, 0x7c, 0x0d, 0x9f, 0x07, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0xf8, 0x77, 0x83, 0xa2, 0x52, 0xfc, 0xf0, 0x8b, 0x50, 0x6b, 0xf8, 0x8b, 0x66, 0x83, 0x93, 0x9e, 0xe8, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xb3, 0xf1, 0xb6, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0x07, 0x77, 0x0e, 0xd6, 0xf5, 0xc4, 0xad, 0xe1, 0xf3, 0xa0, 0x83, 0x80, 0x65, 0xad, 0x0e, 0xa7, 0xd8, 0x1a, 0xac, 0xec, 0x83, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x8b, 0xf3, 0xdd, 0x36, 0x48, 0x79, 0xad, 0xda, 0xa0, 0xa0, 0xc8, 0x5c, 0xc3, 0x2f, 0x4a, 0x1b, 0x9e, 0x67, 0xda, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0x36, 0x58, 0x04, 0xef, 0x76, 0x78, 0x0b, 0xad, 0xc3, 0x29, 0xb6, 0x80, 0x27, 0x47, 0x17, 0x6e, 0x78, 0x5b, 0x67, 0xe0, 0xe5, 0xe8, 0x66, 0x81, 0x97, 0x73, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x49, 0x4f, 0x74, 0xc3, 0x2f, 0x2e, 0x6b, 0x50, 0xf0, 0x61, 0x6e, 0xf8, 0x36, 0xe7, 0x60, 0xdd, 0x3a, 0xdc, 0x41, 0x59, 0xe7, 0x39, 0x6b, 0x30, 0x40, 0xc4, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x49, 0x4f, 0x74, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x82, 0x77, 0x5b, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xe1, 0xe2, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x71, 0xbe, 0xdb, 0x06, 0x01, 0xcb, 0x7a, 0xb0, 0x78, 0x31, 0xae, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0xc0, 0xbf, 0x7b, 0x7b, 0x23, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x16, 0x1e, 0xc7, 0x35, 0x80, 0xd7, 0xd8, 0x9b, 0x1c, 0x19, 0x48, 0xd9, 0xdc, 0x58, 0x18, 0x5c, 0xd9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0xc1, 0x79, 0x76, 0x74, 0xc3, 0x5f, 0x34, 0x1b, 0x1c, 0xb5, 0x41, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0xeb, 0xd8, 0xb6, 0x41, 0x51, 0x29, 0xbe, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x50, 0xce, 0xd9, 0x6e, 0xf8, 0x20, 0x67, 0x83, 0xa5, 0x9b, 0x6d, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x8b, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x3e, 0x5d, 0x99, 0x99, 0xd9, 0xe1, 0xa1, 0x9f, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc7, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x9f, 0x2e, 0xcc, 0x8c, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x64, 0xe2, 0xae, 0xe1, 0x17, 0x97, 0x83, 0xb2, 0x71, 0xff, 0xf0, 0xd0, 0x4f, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x93, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1e, 0xdc, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x3e, 0xee, 0xc1, 0x9a, 0x07, 0xb9, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x5f, 0xc9, 0xd6, 0xf0, 0x08, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x0d, 0x5b, 0x69, 0xc3, 0xd3, 0x3b, 0x07, 0xab, 0xba, 0xe0, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0x3c, 0xbd, 0x73, 0xb0, 0xda, 0x0c, 0xae, 0x35, 0x3c, 0xc2, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc3, 0x56, 0xda, 0xf0, 0xf4, 0xce, 0x06, 0x8b, 0xe0, 0xdd, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0xf8, 0xdd, 0xf0, 0xf4, 0xce, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0xcd, 0xb5, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0xf5, 0xcb, 0x86, 0x0f, 0x61, 0x36, 0x7c, 0xfd, 0xb2, 0xe1, 0x43, 0x98, 0x83, 0x35, 0x1b, 0x6f, 0x87, 0xa7, 0x77, 0xda, 0xe0, 0x98, 0xc2, 0xb1, 0xc1, 0xc9, 0x41, 0x6e, 0xc3, 0x3f, 0x3c, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0x6e, 0x1d, 0x6e, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x72, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xc5, 0xbf, 0x1b, 0x04, 0x2c, 0xeb, 0xe1, 0x17, 0xa1, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x93, 0x9e, 0xe8, 0x86, 0x0f, 0x72, 0x36, 0x58, 0x36, 0xf8, 0xb6, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0xa8, 0x3b, 0x28, 0xd5, 0x65, 0x37, 0x28, 0xfa, 0x74, 0x37, 0x28, 0x42, 0xa0, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0x0e, 0xca, 0x6c, 0xe9, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xcd, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xe2, 0xe3, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x02, 0x96, 0xf5, 0xa0, 0xcc, 0x96, 0x3e, 0xfc, 0x22, 0xb4, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x35, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xf1, 0xbb, 0x41, 0x31, 0x52, 0x7b, 0x90, 0x6e, 0x5a, 0x75, 0xb0, 0xac, 0x00, 0xee, 0xa0, 0xb0, 0xea, 0x5e, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0x3f, 0x3c, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0xc4, 0x3d, 0x58, 0xf3, 0x28, 0x57, 0xab, 0x21, 0x03, 0x3e, 0x38, 0x1d, 0x0a, 0x0e, 0xd6, 0xd9, 0xc9, 0xad, 0x86, 0x0c, 0xf8, 0xc1, 0xfa, 0x3c, 0xb9, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x6e, 0x1d, 0xee, 0x60, 0x09, 0x9e, 0xdc, 0x6a, 0xc8, 0x80, 0x1f, 0x2c, 0x69, 0x87, 0xdb, 0xf0, 0x8b, 0xcb, 0x06, 0xeb, 0xd6, 0xe1, 0x36, 0x58, 0xb7, 0x0e, 0x77, 0x50, 0xaa, 0xcb, 0xb6, 0x02, 0xfe, 0x5d, 0xda, 0xd8, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0xe6, 0x59, 0xae, 0x01, 0x3c, 0xd7, 0xdc, 0xde, 0xe8, 0x40, 0xea, 0xdc, 0xca, 0xe6, 0xc6, 0xc2, 0xe0, 0xca, 0x36, 0xfc, 0xa2, 0xb4, 0xe1, 0xcb, 0xa5, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0x1e, 0x9c, 0x18, 0x5d, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x17, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x41, 0xb4, 0x7c, 0x50, 0xf4, 0xec, 0x6f, 0x70, 0xb4, 0xe1, 0x5b, 0x83, 0x62, 0x40, 0x76, 0xc3, 0xe7, 0x41, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x2c, 0x05, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xeb, 0xd8, 0xb6, 0x41, 0x51, 0x29, 0xbe, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x2c, 0x96, 0x0f, 0xbf, 0x08, 0xd5, 0x06, 0xa5, 0xbd, 0xe5, 0x06, 0xab, 0xfe, 0xdc, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x0f, 0x4e, 0x7a, 0xa2, 0x07, 0x6b, 0xfe, 0xdc, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x1e, 0xb4, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x28, 0x32, 0x0f, 0xbf, 0x08, 0x6d, 0x50, 0xec, 0x68, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd6, 0xad, 0xc3, 0x1d, 0x14, 0x3f, 0xa8, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x94, 0xd3, 0xa7, 0x6b, 0xf8, 0x87, 0x67, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x3f, 0xa8, 0x87, 0x5f, 0x84, 0xda, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0x74, 0x3f, 0xdd, 0xe0, 0x7c, 0x8a, 0xb5, 0x41, 0x90, 0x9e, 0x2e, 0x78, 0x7a, 0x50, 0xba, 0x9f, 0xae, 0xc1, 0x9a, 0x61, 0xb9, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x9f, 0x07, 0x6d, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xa0, 0x74, 0x3f, 0x5d, 0xc3, 0x3f, 0x3c, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0xdd, 0x3a, 0xdc, 0xe1, 0x17, 0xa1, 0x56, 0x43, 0x06, 0xfc, 0x60, 0x39, 0xc7, 0xdb, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0xc1, 0x82, 0xa5, 0xb9, 0x35, 0xfc, 0xc3, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xfe, 0x1d, 0x7e, 0x11, 0x6a, 0x0d, 0x3f, 0xd4, 0x1c, 0x9c, 0x4f, 0xb1, 0x3a, 0x9c, 0x62, 0xad, 0xe1, 0x47, 0x98, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xc3, 0x8f, 0x30, 0x0d, 0xe0, 0x15, 0x46, 0xf7, 0xd6, 0x06, 0x32, 0x17, 0xe6, 0x96, 0x46, 0x97, 0xb7, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x78, 0x70, 0xd4, 0x06, 0xdd, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0x98, 0x59, 0xd0, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xfe, 0x5c, 0x98, 0x5b, 0xd9, 0xe1, 0xa1, 0x9f, 0x56, 0xc0, 0x1f, 0xab, 0x9b, 0x9b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x16, 0x50, 0xce, 0x35, 0x80, 0x47, 0x1d, 0x1c, 0x5c, 0x99, 0xdc, 0x58, 0xd8, 0x5c, 0xd9, 0x86, 0x5f, 0x94, 0x36, 0x58, 0x0e, 0xd0, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x4e, 0x7a, 0xa2, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x44, 0xaa, 0xde, 0x60, 0xf1, 0xaa, 0xdb, 0x1a, 0x7e, 0x51, 0xda, 0xf0, 0xe5, 0xd2, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0x1e, 0x61, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0x6d, 0x78, 0x5a, 0xe7, 0x60, 0x55, 0x17, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xef, 0x86, 0xa7, 0x75, 0x0e, 0x56, 0x9b, 0xc1, 0xb5, 0xe1, 0x69, 0x9d, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0xc3, 0xd3, 0x3a, 0x07, 0x69, 0xa7, 0xb1, 0xcd, 0x02, 0xfe, 0x5d, 0xd8, 0xd8, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0x26, 0x7a, 0xae, 0x01, 0xbc, 0xd6, 0xdc, 0xde, 0xe8, 0x40, 0xca, 0xe6, 0xc6, 0xc2, 0xe0, 0xca, 0x36, 0xfc, 0xa2, 0xb4, 0xc1, 0x92, 0xc0, 0xb9, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd4, 0x06, 0xdd, 0xf0, 0x89, 0xcd, 0x06, 0xeb, 0xdb, 0xe5, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0xeb, 0xd8, 0xb6, 0x41, 0x51, 0x29, 0xbe, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0x79, 0xd0, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x0f, 0x72, 0x36, 0x58, 0x8d, 0x32, 0xb7, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xb7, 0x0e, 0xb7, 0xc1, 0xba, 0x75, 0xb8, 0x83, 0x22, 0xe6, 0x76, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0x25, 0x65, 0x73, 0x07, 0xc5, 0x0f, 0xea, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xdd, 0x3a, 0xdc, 0x06, 0x6b, 0x36, 0xde, 0x0e, 0x8a, 0x98, 0xdb, 0x0d, 0xbf, 0xb8, 0x1c, 0x14, 0x21, 0xb7, 0x2b, 0xe0, 0xd3, 0xd5, 0x99, 0x85, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xeb, 0x3c, 0xe8, 0x1a, 0x80, 0x8f, 0x3a, 0x3a, 0xb3, 0x19, 0x19, 0x10, 0xba, 0x37, 0x90, 0x3a, 0x3a, 0x33, 0x1c, 0x10, 0xba, 0x30, 0xb8, 0xb2, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x83, 0x03, 0xfd, 0xeb, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xe9, 0x89, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0x0d, 0xcf, 0xe2, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x82, 0x68, 0x79, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x56, 0xb7, 0xb5, 0x75, 0x70, 0x08, 0xf5, 0xeb, 0xe0, 0xac, 0x95, 0x38, 0x0b, 0xf8, 0x74, 0x72, 0x69, 0xed, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x6a, 0x2b, 0xba, 0x06, 0xf0, 0x61, 0x4b, 0x9b, 0xa3, 0x03, 0x99, 0x83, 0x63, 0x4b, 0xa3, 0xdb, 0xa0, 0x50, 0xee, 0xdc, 0xa0, 0x14, 0x66, 0xdf, 0xf0, 0xf5, 0xcb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x87, 0xf7, 0x82, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0xe1, 0xbd, 0xa0, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x1e, 0xb4, 0xc1, 0x59, 0x56, 0x6a, 0xc3, 0x07, 0x39, 0x1b, 0xbe, 0xcd, 0xd9, 0xe0, 0x84, 0x71, 0xb4, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf8, 0xb8, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0xf8, 0xa8, 0xe7, 0xa0, 0x48, 0xba, 0xdd, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xf8, 0x41, 0x3d, 0x38, 0x7b, 0x6a, 0x1e, 0x1c, 0xf8, 0x58, 0x0e, 0xa7, 0xd8, 0x1a, 0xac, 0xe1, 0x8f, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0xc3, 0x1f, 0xd7, 0x00, 0x5a, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x75, 0x74, 0x66, 0xb8, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x48, 0x3b, 0x6e, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x5c, 0x3c, 0x28, 0x3f, 0xf6, 0x37, 0x7c, 0x90, 0xb3, 0xe1, 0x35, 0xbd, 0x35, 0x28, 0xf8, 0x30, 0x37, 0x58, 0xba, 0xd9, 0x76, 0x78, 0xf0, 0x66, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xbf, 0x92, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0xb0, 0x95, 0x36, 0xbc, 0x17, 0x74, 0x90, 0x76, 0x1a, 0xbb, 0xc1, 0xd2, 0xc9, 0xb7, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xf1, 0xbb, 0xe1, 0xbd, 0xa0, 0x35, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x87, 0xff, 0x6d, 0x78, 0x4c, 0x66, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x1b, 0xde, 0x0b, 0x5a, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x10, 0xdf, 0x36, 0x08, 0x58, 0xd6, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x5f, 0xfc, 0x6e, 0x78, 0x2f, 0x68, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0x41, 0xbc, 0x3b, 0x58, 0x90, 0xf9, 0xb6, 0x02, 0xfe, 0x98, 0x5c, 0x1a, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x1f, 0x5d, 0x18, 0x5c, 0x19, 0x08, 0xdd, 0x1b, 0xc8, 0xd8, 0x9b, 0x1c, 0xd9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0xc1, 0x49, 0x4f, 0x74, 0xc3, 0xd7, 0x2f, 0x6b, 0xf8, 0x11, 0xe6, 0xe0, 0x40, 0xd3, 0xb7, 0xe1, 0xeb, 0x97, 0x0d, 0x1f, 0xc2, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xb5, 0x8e, 0x6d, 0x07, 0x45, 0xcf, 0xfe, 0xe1, 0x14, 0x5b, 0xc0, 0x97, 0xab, 0xa3, 0x43, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x16, 0x64, 0xd4, 0x35, 0x80, 0xb7, 0x58, 0x9a, 0x18, 0x5b, 0xda, 0x58, 0x18, 0x1b, 0xc8, 0x5c, 0x98, 0x5b, 0x1a, 0x5d, 0xde, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x4b, 0x02, 0xe7, 0x0e, 0xca, 0x71, 0xfc, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0xa1, 0x66, 0x83, 0x62, 0x40, 0x76, 0xc3, 0xe7, 0x41, 0x1b, 0x84, 0xa7, 0xea, 0xe1, 0xbd, 0xa0, 0xc3, 0x29, 0xb6, 0x06, 0xc9, 0x37, 0xd9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xc9, 0x37, 0xd9, 0x0d, 0xe0, 0x37, 0xf6, 0x26, 0x47, 0x06, 0x42, 0xf7, 0x06, 0x42, 0x17, 0x06, 0x57, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0x92, 0x6f, 0xb2, 0x37, 0xfc, 0xa2, 0xb4, 0xe1, 0xcb, 0xa5, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x41, 0x3a, 0x39, 0xec, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x17, 0xcd, 0x06, 0x47, 0x6d, 0xd0, 0x83, 0xf2, 0x63, 0xff, 0x60, 0xb9, 0x1a, 0xdc, 0x2c, 0xe0, 0xd3, 0xd5, 0x89, 0x85, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xeb, 0xdc, 0xea, 0x1a, 0x80, 0x8f, 0x3a, 0x3a, 0x33, 0x1c, 0x10, 0xba, 0x37, 0x90, 0x3a, 0x3a, 0xb3, 0x19, 0x19, 0x10, 0xba, 0x30, 0xb8, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x88, 0xa0, 0x6e, 0xc3, 0x5f, 0x34, 0x1b, 0x1c, 0xe8, 0x5f, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xc2, 0xc2, 0x02, 0x41, 0x7b, 0x93, 0x93, 0x4b, 0x13, 0x63, 0x2b, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x05, 0xd1, 0xf2, 0x06, 0x87, 0x05, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x6a, 0x03, 0xb9, 0x0d, 0xd6, 0x46, 0xd4, 0xd5, 0x6a, 0xb0, 0xe6, 0x71, 0x6e, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0xcd, 0xe3, 0x5c, 0x07, 0x6b, 0xf1, 0xe6, 0x36, 0xfc, 0xa2, 0xb4, 0xc1, 0x92, 0xc0, 0xb9, 0x0d, 0xbf, 0x28, 0x6d, 0x78, 0x9e, 0x69, 0xc3, 0x5f, 0x34, 0x1b, 0x3e, 0x58, 0xdd, 0xa0, 0xd8, 0xd1, 0x5c, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0xe3, 0xee, 0xe0, 0x54, 0xe4, 0x7a, 0x50, 0x7e, 0xec, 0x6f, 0x50, 0xe4, 0xb4, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x2f, 0xcd, 0x0d, 0x3f, 0x3c, 0x78, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x28, 0x0b, 0x8b, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x51, 0xfc, 0x7b, 0x50, 0x36, 0xee, 0xb7, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0x78, 0xf9, 0xee, 0xf0, 0xb4, 0xce, 0x1a, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x86, 0x0f, 0x56, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x4b, 0x91, 0xeb, 0x3a, 0x28, 0xbc, 0x8c, 0x37, 0x28, 0x72, 0x5a, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0xbc, 0xb1, 0x3a, 0x79, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x44, 0xb3, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xc5, 0xe8, 0x75, 0x07, 0x05, 0xf1, 0xf8, 0xe1, 0x2d, 0xb4, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0x57, 0xb2, 0x35, 0x3c, 0xc2, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc3, 0x56, 0x5a, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0xa2, 0xaf, 0xeb, 0x60, 0x55, 0x17, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xef, 0x06, 0xcb, 0x19, 0xec, 0x0e, 0x56, 0x9b, 0xc1, 0xb5, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6f, 0xce, 0x06, 0x6b, 0x36, 0xde, 0x0e, 0x96, 0x33, 0xd8, 0xad, 0xe1, 0x6d, 0xd6, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0xf0, 0xe6, 0x60, 0x31, 0x7a, 0xdd, 0x1a, 0xde, 0x66, 0xdd, 0xf0, 0x6f, 0xce, 0x06, 0x85, 0x97, 0xf1, 0xc1, 0x62, 0xf4, 0xba, 0xd6, 0xf0, 0x08, 0xeb, 0x1a, 0x1e, 0x61, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0x6d, 0xb0, 0x9c, 0xc1, 0xee, 0x60, 0xdd, 0x8f, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xef, 0x06, 0xcb, 0x19, 0xec, 0x0e, 0xd6, 0x1b, 0xc9, 0xb5, 0xc1, 0x6a, 0x11, 0xbb, 0x5a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x75, 0xea, 0x75, 0x1b, 0x3e, 0x8e, 0x3a, 0x58, 0x8c, 0x5e, 0x57, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0xe3, 0xee, 0xe0, 0xf8, 0xe7, 0x7a, 0x78, 0x5a, 0x67, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0x3e, 0xc8, 0xd9, 0x60, 0xbd, 0x79, 0xdd, 0x06, 0x45, 0x4e, 0xeb, 0x86, 0x4f, 0x6c, 0x36, 0x58, 0x27, 0x5f, 0xb7, 0xe1, 0x11, 0xd6, 0x35, 0xfc, 0x4a, 0xb6, 0xc1, 0x92, 0x03, 0xbb, 0x0d, 0x56, 0xce, 0xd8, 0xad, 0xe1, 0x57, 0xb2, 0x0d, 0x16, 0x73, 0xd8, 0xad, 0xe1, 0xdf, 0x9c, 0x0d, 0xd6, 0xad, 0xc3, 0x1d, 0x2c, 0x67, 0xb0, 0x5b, 0xc3, 0xbf, 0x39, 0x1b, 0x2c, 0x29, 0x9b, 0x3b, 0x58, 0xce, 0x60, 0xb7, 0x86, 0x7f, 0x73, 0x36, 0x58, 0x84, 0x27, 0x77, 0xb0, 0x9c, 0xc1, 0xae, 0x0e, 0x16, 0x1f, 0xd9, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x3e, 0x58, 0xdd, 0xf0, 0x41, 0xce, 0x06, 0xeb, 0xcd, 0xeb, 0x36, 0x28, 0x72, 0x5a, 0x37, 0x7c, 0x62, 0xb3, 0xc1, 0x3a, 0xf9, 0xba, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x11, 0xd6, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xb3, 0x0d, 0x96, 0x33, 0xd8, 0x1d, 0xa4, 0x9d, 0xc6, 0xae, 0xe1, 0x6d, 0xd6, 0x0d, 0xff, 0xe6, 0x6c, 0x90, 0xf2, 0x5a, 0x75, 0xb0, 0x9c, 0xc1, 0xae, 0x0d, 0x0a, 0xd8, 0xfc, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x8f, 0xae, 0xcc, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0xf4, 0xe3, 0x36, 0x58, 0xce, 0x60, 0xd7, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x2b, 0xd9, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0x98, 0xcc, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x0a, 0x6b, 0xd7, 0x1a, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xa7, 0x87, 0xc7, 0x64, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0xf8, 0x95, 0x6c, 0x0d, 0xff, 0xe6, 0x6c, 0x50, 0x46, 0x9f, 0x1f, 0xac, 0xff, 0xb5, 0x5b, 0xc3, 0x23, 0xac, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x34, 0x6c, 0xa5, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x49, 0x34, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0x36, 0x28, 0xa3, 0xcf, 0x37, 0x58, 0x8c, 0x5e, 0xd7, 0x41, 0x41, 0x3c, 0x7e, 0x78, 0x0b, 0xed, 0x20, 0x19, 0x30, 0x75, 0x83, 0xe3, 0x3c, 0x45, 0xb5, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xeb, 0xd4, 0xeb, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x16, 0xa3, 0xd7, 0x6d, 0xb0, 0xfe, 0xd7, 0xae, 0x3a, 0x9c, 0x62, 0x0b, 0xf8, 0x77, 0x6f, 0x61, 0xe4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x6a, 0x81, 0xbb, 0x06, 0xf0, 0x1c, 0x7b, 0x93, 0x23, 0x03, 0xa9, 0x73, 0x2b, 0x9b, 0x1b, 0x0b, 0x83, 0x2b, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x4b, 0x02, 0xe7, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x79, 0x76, 0x74, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xb5, 0x8e, 0x6d, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0xe5, 0x9c, 0xed, 0x86, 0x0f, 0x72, 0x36, 0x58, 0xba, 0xd9, 0xb6, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x13, 0x9b, 0x0d, 0x56, 0xc8, 0xd2, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0x25, 0x17, 0x71, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x2c, 0xc2, 0x93, 0x3b, 0xbc, 0x17, 0xb4, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x23, 0xcc, 0xc1, 0xaa, 0x5a, 0xb9, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0x4a, 0xaa, 0xf1, 0xda, 0xa0, 0xd8, 0xd1, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xac, 0x5b, 0x87, 0x3b, 0xbc, 0x17, 0xb4, 0x86, 0x5f, 0x5c, 0x36, 0xbc, 0x17, 0x74, 0xb0, 0x50, 0xe8, 0x6e, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0x3e, 0x0f, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0xc1, 0xf2, 0xb5, 0xb8, 0x35, 0xfc, 0xc3, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7c, 0xdc, 0x83, 0xe5, 0x6b, 0x71, 0x6d, 0x70, 0x72, 0x90, 0xdb, 0xf0, 0x79, 0xd0, 0x1a, 0x1c, 0x6d, 0xf8, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x27, 0x82, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x41, 0xb4, 0xbc, 0x41, 0x51, 0x29, 0xbe, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xe5, 0x44, 0x77, 0x70, 0xc0, 0x1b, 0x69, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x0f, 0xee, 0x1c, 0x9c, 0x43, 0x47, 0x6a, 0xc3, 0xe7, 0x2e, 0x83, 0x93, 0x1b, 0x3e, 0xb1, 0xd9, 0xe0, 0x28, 0xdb, 0xb0, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0x75, 0x6e, 0xc3, 0x07, 0x39, 0x1b, 0x2c, 0xbb, 0xb9, 0x5b, 0xc3, 0x2f, 0x2e, 0x07, 0x05, 0xe8, 0xf3, 0x86, 0x77, 0xf3, 0x36, 0x38, 0xf7, 0xbf, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0xac, 0xd4, 0xba, 0xdb, 0x60, 0x89, 0xd8, 0xdd, 0x1a, 0x14, 0xf9, 0xb2, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0xfe, 0x04, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x04, 0x4f, 0xed, 0x06, 0x87, 0x57, 0xb9, 0x83, 0x52, 0x5d, 0x76, 0x83, 0xa2, 0xd3, 0x78, 0xc3, 0xa7, 0x80, 0x1b, 0xde, 0x0b, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0x1e, 0x61, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0x6d, 0x78, 0x2f, 0xe8, 0x60, 0xdd, 0x8f, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xef, 0x86, 0xf7, 0x82, 0x0e, 0xd6, 0x1b, 0xc9, 0xb5, 0xc1, 0xc2, 0x02, 0xb8, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0x3c, 0xc2, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc3, 0x56, 0xda, 0xf0, 0x5e, 0xd0, 0xc1, 0xaa, 0x2e, 0xb8, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xdf, 0x0d, 0xef, 0x05, 0x1d, 0xac, 0x36, 0x83, 0xeb, 0x60, 0x59, 0x02, 0x5c, 0x6b, 0xb0, 0x2e, 0x57, 0x6e, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0xc2, 0x93, 0x3b, 0x58, 0x28, 0x74, 0xb7, 0x06, 0x6b, 0x86, 0xe5, 0x36, 0xfc, 0xe2, 0xb2, 0xc1, 0xba, 0x75, 0xb8, 0x83, 0x85, 0x42, 0x77, 0x1d, 0x4e, 0xb1, 0x35, 0x58, 0x8a, 0x20, 0xb7, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0x14, 0x41, 0xae, 0x01, 0x34, 0xeb, 0xe8, 0xcc, 0x70, 0x40, 0xe8, 0xde, 0x40, 0xea, 0xe8, 0xcc, 0x66, 0x64, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0x91, 0x76, 0xdc, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x0e, 0xc0, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xd6, 0xb1, 0x6d, 0x83, 0xc3, 0x02, 0xdb, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x81, 0xfe, 0x75, 0xc3, 0x27, 0x36, 0x1b, 0x2c, 0xaf, 0x8f, 0xdb, 0xf0, 0x41, 0xce, 0x86, 0xd7, 0xf4, 0x36, 0x28, 0x28, 0x32, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x1f, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0x8b, 0xa3, 0x37, 0x3c, 0x78, 0xb3, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x89, 0x54, 0xbd, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x0d, 0xbf, 0xce, 0xb5, 0xc1, 0xc9, 0x41, 0x6e, 0xc3, 0xe7, 0x41, 0x1b, 0x84, 0xa7, 0xea, 0x1a, 0x04, 0x8e, 0xea, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0x06, 0xb2, 0x3d, 0x28, 0xeb, 0x3c, 0xd7, 0x20, 0x88, 0x4d, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x38, 0xac, 0xcc, 0x1d, 0x1c, 0x96, 0x67, 0xd6, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0x0e, 0x8e, 0x0a, 0x6c, 0x07, 0x65, 0x9d, 0xe7, 0x1a, 0x84, 0xcc, 0xe9, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x87, 0x57, 0xb9, 0x83, 0xc3, 0xf2, 0xcc, 0x06, 0xeb, 0x8f, 0xf0, 0xd6, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0x0e, 0xce, 0xcc, 0x6d, 0x07, 0x65, 0x9d, 0xe7, 0x6a, 0xc8, 0x80, 0x1f, 0x1c, 0xa8, 0xdb, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x86, 0x07, 0x87, 0xe5, 0x99, 0x0d, 0x16, 0x63, 0xe1, 0x6d, 0xb0, 0xfe, 0x08, 0x6f, 0x83, 0xc4, 0x97, 0xd4, 0x83, 0xb2, 0xce, 0xb3, 0x0d, 0xbf, 0x28, 0x6d, 0xf8, 0x75, 0x6e, 0xc3, 0x2f, 0x2e, 0x1b, 0x9c, 0x8e, 0x44, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xa7, 0x8b, 0x8c, 0x83, 0x43, 0x2f, 0xdf, 0xe1, 0xa1, 0x9f, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x95, 0x13, 0xdd, 0xe1, 0x17, 0xa1, 0x83, 0x85, 0x0b, 0x72, 0x1b, 0x7e, 0x71, 0xd9, 0xf0, 0xf4, 0xce, 0x06, 0x2b, 0x32, 0xe4, 0x3a, 0x9c, 0x62, 0x2b, 0x80, 0x67, 0x18, 0xdd, 0x5b, 0x5b, 0x0b, 0x9c, 0x5c, 0x9a, 0x1b, 0x5d, 0x9a, 0xdb, 0xb9, 0x0c, 0xc0, 0x03, 0xcd, 0x9a, 0x0e, 0x48, 0x18, 0xdd, 0x5b, 0x1b, 0x08, 0x9c, 0x5c, 0x9a, 0x1b, 0x5d, 0x9a, 0xdb, 0xd9, 0x02, 0x3f, 0xf6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb4, 0x30, 0xef, 0x0d, 0xca, 0x2e, 0xd9, 0x81, 0x1f, 0x7b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xab, 0x0b, 0x45, 0x36, 0x5c, 0x52, 0x6b, 0x3c, 0x1e, 0xf8, 0xb1, 0xb7, 0x66, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0x02, 0x7a, 0x6f, 0x78, 0x50, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xc8, 0x3f, 0x60, 0x83, 0xb2, 0x0c, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x55, 0x21, 0x1b, 0xd8, 0xa9, 0x0a, 0x9b, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6c, 0x6f, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9d, 0xaa, 0x90, 0x1f, 0x2c, 0xe2, 0xc6, 0x3b, 0x48, 0x3f, 0x0e, 0x9e, 0x65, 0xd6, 0xa0, 0xe0, 0x3b, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0x17, 0x04, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xa5, 0xaa, 0x30, 0x1a, 0x58, 0xaa, 0x0a, 0xe3, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x72, 0x6f, 0xed, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xa5, 0xaa, 0x30, 0x3c, 0x58, 0xd4, 0x8f, 0x77, 0x70, 0xd2, 0x13, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0b, 0x31, 0x04, 0x36, 0x5c, 0x52, 0x0b, 0xf8, 0x72, 0x65, 0x6e, 0x64, 0x6b, 0x50, 0xa2, 0x2b, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x45, 0x26, 0x02, 0x1b, 0xde, 0xd6, 0xd9, 0x60, 0x55, 0x40, 0x5e, 0xad, 0x80, 0x2f, 0x57, 0xe6, 0x46, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x65, 0x34, 0x02, 0x1b, 0x2c, 0x87, 0x64, 0x9a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x16, 0x48, 0x60, 0xc3, 0xd7, 0x2f, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xe9, 0xc2, 0x36, 0x7c, 0xfd, 0xb2, 0xe1, 0x43, 0x98, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x56, 0x49, 0x60, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa5, 0x55, 0x02, 0x07, 0x6b, 0x1d, 0xdb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0xd0, 0x04, 0x0e, 0x8a, 0x4a, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xea, 0x3a, 0x81, 0x0d, 0x6f, 0xeb, 0x1c, 0xac, 0xa1, 0xc8, 0xeb, 0x70, 0x8a, 0xad, 0xc1, 0x2a, 0x8a, 0xbc, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x74, 0x50, 0x60, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xab, 0x0a, 0xe9, 0xc0, 0x5e, 0x55, 0x58, 0x1c, 0x9c, 0xf4, 0x44, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xda, 0x46, 0x81, 0x0d, 0x96, 0x43, 0x32, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x9b, 0x29, 0xb0, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x32, 0x52, 0x81, 0x0d, 0x8a, 0x49, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x56, 0x85, 0xc1, 0xc0, 0x66, 0x55, 0x58, 0x1d, 0x24, 0x76, 0x06, 0x6f, 0x1c, 0xda, 0x60, 0x15, 0x38, 0x5e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa5, 0xb0, 0x02, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xd7, 0x15, 0x38, 0x58, 0xb7, 0x0e, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x72, 0x2c, 0x70, 0xb0, 0x08, 0xde, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x6a, 0x5a, 0x60, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x85, 0xde, 0x02, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x4d, 0x17, 0xd8, 0xf0, 0xb6, 0xce, 0x80, 0x6f, 0xd7, 0x32, 0xf6, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xb8, 0x2f, 0x70, 0x78, 0x4c, 0xa6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4a, 0x86, 0x81, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x5f, 0x0c, 0x1c, 0xa4, 0x37, 0xcd, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0xab, 0x0c, 0x6c, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0x60, 0x11, 0x62, 0x5e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0xe0, 0x0c, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x5a, 0x68, 0x60, 0x83, 0x62, 0x12, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbb, 0x55, 0x61, 0x30, 0xb0, 0x5b, 0x15, 0x56, 0x07, 0x29, 0xb0, 0xc1, 0x07, 0x6b, 0x0e, 0xf3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0xa1, 0x06, 0x36, 0x28, 0x0c, 0x55, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xab, 0xb6, 0x06, 0x0e, 0x16, 0xe1, 0xc9, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x75, 0x67, 0x03, 0x1b, 0xbe, 0xc2, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0xe5, 0x06, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xed, 0xaa, 0xb0, 0x19, 0xd8, 0xae, 0x0a, 0xbb, 0x83, 0x93, 0x9e, 0xe8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xca, 0x37, 0xb0, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x32, 0xe6, 0xbc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x72, 0xc4, 0x81, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0x4c, 0x0e, 0x1c, 0x2c, 0x29, 0x9b, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xfb, 0x1c, 0x38, 0x58, 0x52, 0x36, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xb9, 0x3a, 0x70, 0x50, 0x6c, 0x2b, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0xde, 0x0e, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x34, 0x78, 0xe0, 0x60, 0x49, 0xd9, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x6d, 0xf3, 0xc0, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0xb1, 0x07, 0x0e, 0x4e, 0x04, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe5, 0xe9, 0x03, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xa8, 0x1f, 0x38, 0x58, 0x86, 0xfd, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x7e, 0x40, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8a, 0x09, 0x82, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x26, 0x7a, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x02, 0x13, 0x82, 0x0d, 0x97, 0xd4, 0x1a, 0xac, 0x10, 0xc9, 0x6b, 0x0d, 0x16, 0x21, 0xe6, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x85, 0x33, 0x04, 0x1b, 0xde, 0xd6, 0x19, 0x3c, 0x3d, 0x58, 0xc6, 0x9c, 0x57, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x0f, 0x11, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0x8c, 0x39, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x8b, 0x22, 0xd8, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0xc1, 0x32, 0xe6, 0xbc, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x00, 0x23, 0xd8, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xbd, 0x1a, 0xc1, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8b, 0xea, 0x08, 0x36, 0x7c, 0xee, 0x32, 0xe0, 0xe5, 0x95, 0x91, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xdd, 0x1f, 0xc1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0x14, 0x09, 0x0e, 0x8a, 0x4c, 0xdc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa2, 0x4d, 0x82, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x14, 0x95, 0x60, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0xcb, 0x98, 0xf3, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xaa, 0x25, 0xd8, 0xf0, 0xb9, 0xcb, 0x80, 0x87, 0x16, 0x96, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa5, 0xbf, 0x04, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x55, 0x26, 0x38, 0x28, 0x89, 0x66, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0xb7, 0x09, 0x0e, 0x8a, 0x4a, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xaa, 0x74, 0x82, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0xcf, 0x13, 0x1c, 0x1e, 0x93, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xfb, 0x27, 0x38, 0x3c, 0x26, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x2d, 0x43, 0xc1, 0xc1, 0x32, 0x5c, 0xbd, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0x32, 0x0a, 0x36, 0x7c, 0x85, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0x92, 0x14, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x56, 0x61, 0x31, 0xb0, 0x62, 0x15, 0x56, 0x07, 0x27, 0x3d, 0xd1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xd4, 0xa5, 0x60, 0x83, 0x93, 0x83, 0xdc, 0x1a, 0xac, 0xf7, 0xd4, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xd4, 0x4a, 0x64, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd5, 0x61, 0x22, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xf5, 0x5a, 0xc6, 0xde, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0xe5, 0x44, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xb0, 0x8c, 0x39, 0xaf, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x64, 0x15, 0xd2, 0x81, 0x25, 0xab, 0x90, 0x6f, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0x7c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2b, 0x79, 0x0a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x70, 0x54, 0x70, 0xb0, 0x6e, 0x1d, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x6a, 0xaa, 0xe0, 0x60, 0xcd, 0xc6, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xe1, 0x57, 0xc1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8b, 0xd5, 0x0a, 0x0e, 0x4e, 0x04, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc5, 0x7b, 0x05, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x38, 0x2c, 0x38, 0x28, 0x88, 0x96, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0x33, 0x0b, 0x0e, 0x8a, 0x4a, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xba, 0xd3, 0x82, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0xca, 0x16, 0x6c, 0x78, 0x5b, 0x67, 0x83, 0x85, 0xc7, 0x71, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x16, 0x17, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x1a, 0xba, 0xe0, 0x60, 0x95, 0x13, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x65, 0x78, 0xc1, 0xc1, 0xd2, 0x92, 0xbd, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x3c, 0xbe, 0xe0, 0xa0, 0xd8, 0x56, 0xae, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x65, 0x15, 0xd2, 0x81, 0x2d, 0xab, 0x90, 0x1f, 0x9c, 0x73, 0x53, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xda, 0x00, 0x83, 0x0d, 0x4e, 0x0e, 0x72, 0x6b, 0xb0, 0x72, 0x58, 0xaf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe2, 0x98, 0x86, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0xf3, 0x34, 0x1c, 0xac, 0xe4, 0xd8, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x79, 0x6a, 0x38, 0x58, 0x5a, 0xb2, 0xd7, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xb3, 0x0a, 0xf9, 0xc0, 0x9e, 0x55, 0x58, 0x1c, 0xa4, 0x6c, 0x31, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x85, 0x10, 0x06, 0x1b, 0x3e, 0xb1, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xdc, 0x30, 0xd8, 0xf0, 0xb9, 0xcb, 0x80, 0x97, 0xf7, 0x46, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd5, 0x25, 0x06, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x86, 0x31, 0xd8, 0xf0, 0xb6, 0xce, 0x06, 0xe9, 0x17, 0xa2, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x0e, 0x19, 0x1c, 0x2c, 0x2d, 0xd9, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x81, 0x32, 0xd8, 0xe0, 0x38, 0x36, 0xb1, 0x41, 0x89, 0xae, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xdd, 0x65, 0xb0, 0x41, 0x31, 0x89, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x4d, 0xab, 0xb0, 0x1c, 0xd8, 0xb4, 0x0a, 0xd3, 0x83, 0x22, 0x15, 0x73, 0x70, 0x73, 0x70, 0x7a, 0x83, 0x95, 0xd2, 0x7b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0xa8, 0x19, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x90, 0xce, 0xe0, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x35, 0xa0, 0xc1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2b, 0x18, 0x0d, 0x36, 0xbc, 0xad, 0x33, 0xe0, 0xcf, 0xb5, 0x8c, 0xbd, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0x73, 0x1a, 0x6c, 0x78, 0x5b, 0xe7, 0x60, 0xf9, 0x00, 0x5f, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x05, 0xad, 0x06, 0x1b, 0x1c, 0xc7, 0x26, 0x36, 0x28, 0xd1, 0x95, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4b, 0x75, 0x0d, 0x36, 0xbc, 0xcd, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0x16, 0x1b, 0x6c, 0x78, 0x50, 0x72, 0x0d, 0x8f, 0xb0, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x74, 0x1b, 0x6c, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xd5, 0x2a, 0x8c, 0x07, 0x56, 0xad, 0xc2, 0xfa, 0x20, 0x04, 0x1f, 0x0e, 0x02, 0x3c, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x6c, 0xdd, 0x60, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x75, 0xf6, 0x06, 0x87, 0x07, 0x6f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf2, 0x80, 0x83, 0x83, 0x83, 0x32, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x9d, 0xc3, 0xc1, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0b, 0x33, 0x0e, 0x0e, 0x0f, 0xde, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf5, 0x24, 0x07, 0x07, 0x87, 0xd0, 0x89, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc2, 0x98, 0x83, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0xf2, 0x1c, 0x1c, 0x1e, 0xbc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0b, 0x90, 0x0e, 0x0e, 0x0e, 0xe7, 0x7c, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x65, 0xd0, 0x06, 0x1b, 0xde, 0xd6, 0x39, 0x58, 0x4e, 0xc0, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xaa, 0x75, 0xb0, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x89, 0xae, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x7c, 0x76, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x12, 0xb9, 0x83, 0x83, 0x45, 0x78, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x55, 0x7e, 0x07, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x4c, 0x3c, 0xd8, 0xf0, 0xb6, 0xce, 0x80, 0x9f, 0xd7, 0x32, 0xf6, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xbe, 0x79, 0xb0, 0xe1, 0x6d, 0x9d, 0xc1, 0xe7, 0x83, 0xe5, 0x04, 0x7c, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0xa5, 0x1e, 0x6c, 0x50, 0xf4, 0xe9, 0x6e, 0x50, 0xa2, 0x2b, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0xd9, 0x1e, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x14, 0xf8, 0xe0, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x35, 0xf3, 0xc1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0b, 0xb0, 0x0f, 0x0e, 0x16, 0xd9, 0xf2, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0xa3, 0x1f, 0x6c, 0x78, 0x5b, 0x67, 0xf0, 0xf6, 0x60, 0x39, 0x01, 0x5f, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x45, 0xf6, 0x07, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x02, 0x40, 0x38, 0x58, 0x84, 0x27, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xca, 0x80, 0x70, 0xb0, 0x08, 0x4f, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x1a, 0x03, 0x61, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x05, 0x24, 0x08, 0x07, 0x8b, 0x6c, 0xf9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0x69, 0x10, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7a, 0xb0, 0x9c, 0x80, 0xaf, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf2, 0x21, 0x84, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x4a, 0x74, 0xe5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x62, 0x28, 0x84, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0x6c, 0x21, 0x1c, 0x2c, 0xc2, 0x93, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x3a, 0x43, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xa1, 0x1c, 0xc2, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0xb0, 0x96, 0xb1, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7a, 0x42, 0x84, 0x0d, 0x6f, 0xeb, 0x0c, 0x4e, 0x1e, 0x2c, 0x27, 0xe0, 0xab, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x5c, 0x12, 0x61, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x12, 0x5d, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xf8, 0x13, 0x61, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x25, 0xaa, 0x08, 0x07, 0x8b, 0xf0, 0xe4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xab, 0x6c, 0x11, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x18, 0x8c, 0x70, 0xb0, 0x1e, 0xa7, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x4e, 0x1a, 0x61, 0xc3, 0xdb, 0x3a, 0x83, 0xb7, 0x07, 0xcb, 0x0b, 0xf8, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x03, 0x47, 0xd8, 0xe0, 0x38, 0x36, 0xb1, 0x41, 0x89, 0xae, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xe0, 0x8e, 0xb0, 0xe1, 0x6d, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x1e, 0x1f, 0x61, 0xc3, 0xdb, 0x3a, 0x83, 0x87, 0x07, 0xcb, 0x0b, 0xf8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0x0c, 0x12, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x0c, 0x91, 0x70, 0xb0, 0x66, 0xe3, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xa0, 0x23, 0xe1, 0xa0, 0xd8, 0x56, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x5f, 0x49, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x7d, 0x4d, 0xc2, 0xc1, 0xba, 0x75, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0a, 0xa1, 0x84, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0x34, 0x25, 0x1c, 0xac, 0xc7, 0xe9, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xf0, 0x4a, 0xd8, 0xf0, 0xb6, 0xce, 0xe0, 0xf9, 0xc1, 0xf2, 0x02, 0xbe, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x57, 0x21, 0x1f, 0xd8, 0xb9, 0x0a, 0x8b, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x85, 0xcb, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xcd, 0x5b, 0xc2, 0x86, 0x4f, 0x6c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8b, 0xf4, 0x12, 0x36, 0x7c, 0xee, 0x32, 0xe0, 0xe5, 0xd5, 0x9d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x21, 0x61, 0xc2, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0x1e, 0x13, 0x0e, 0x52, 0xc4, 0x44, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xab, 0x43, 0x13, 0x0e, 0x96, 0x96, 0xec, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0xba, 0x26, 0x6c, 0x70, 0x1c, 0x9b, 0xd8, 0xa0, 0x44, 0x57, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xe1, 0x4d, 0xd8, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xd6, 0x55, 0x58, 0x0e, 0x6c, 0x5d, 0x85, 0xe9, 0x41, 0x91, 0x8a, 0x39, 0xb8, 0xb9, 0xc1, 0xfa, 0xec, 0xbe, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4b, 0x90, 0x13, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x29, 0x9d, 0x70, 0xb0, 0x08, 0x4f, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xdc, 0x3b, 0x61, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x25, 0xea, 0x09, 0x07, 0x4b, 0x3f, 0xf8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0b, 0xf6, 0x13, 0x36, 0xbc, 0xad, 0x73, 0xb0, 0x2a, 0xc1, 0xaf, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8a, 0x05, 0x85, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x92, 0x0a, 0x85, 0x83, 0x75, 0xeb, 0x70, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x55, 0x88, 0xc2, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0b, 0x58, 0x14, 0x36, 0x3c, 0xc2, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x70, 0xa3, 0xb0, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfa, 0x20, 0x85, 0xc3, 0x83, 0x37, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x51, 0x93, 0xc2, 0x86, 0xb7, 0x75, 0x06, 0x27, 0x0f, 0x56, 0x29, 0xf8, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x68, 0x29, 0x6c, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xa2, 0x4c, 0xe1, 0xf0, 0xe0, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x08, 0xa7, 0xb0, 0xe1, 0x6d, 0x9d, 0xc1, 0xdb, 0x83, 0x55, 0x0a, 0x7e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x75, 0x7d, 0x0a, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x44, 0x54, 0x38, 0x3c, 0x78, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0x4f, 0x2a, 0x6c, 0x78, 0x5b, 0x67, 0x70, 0xf4, 0x60, 0x95, 0x82, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x39, 0xa8, 0xc2, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0x57, 0x15, 0x0e, 0x0f, 0xde, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x65, 0xb7, 0x0a, 0x1b, 0xde, 0xd6, 0x19, 0x7c, 0x3e, 0x58, 0xa5, 0xe0, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x4d, 0xb2, 0xc2, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0xa6, 0x15, 0x36, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0x3e, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x7c, 0x2b, 0x1c, 0x2c, 0x82, 0x77, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x59, 0x57, 0x38, 0x28, 0xb6, 0x95, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0xee, 0x15, 0x36, 0x38, 0x8e, 0x4d, 0x6c, 0x50, 0xa2, 0x2b, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x13, 0x2c, 0x6c, 0x78, 0x9b, 0x75, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x7e, 0x58, 0xd8, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xa5, 0xc6, 0xc2, 0xe1, 0xc1, 0x9b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xbc, 0x64, 0xe1, 0x60, 0x25, 0xa6, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xf1, 0xcc, 0xc2, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0x7c, 0x16, 0x0e, 0x16, 0xe1, 0xc9, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0x2a, 0x2d, 0x1c, 0x2c, 0x41, 0xf5, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xb8, 0x5a, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x91, 0xd8, 0xc2, 0xc1, 0x7a, 0x9c, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa2, 0xb9, 0x85, 0x83, 0x95, 0x98, 0x7e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x0d, 0x2e, 0x6c, 0x70, 0x1c, 0x9b, 0xd8, 0xa0, 0x44, 0x57, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x87, 0x5c, 0xd8, 0xf0, 0x36, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xbf, 0xb9, 0xb0, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5a, 0xd3, 0x85, 0xc3, 0x83, 0x37, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x81, 0xec, 0xc2, 0xc1, 0xea, 0x36, 0xbf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xca, 0xdf, 0x85, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x28, 0x2f, 0x1c, 0x2c, 0xc2, 0x93, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xb3, 0x5e, 0xd8, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0x78, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x20, 0xbe, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa2, 0xf6, 0x85, 0x83, 0xf5, 0x38, 0x7d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x45, 0xfe, 0x0b, 0x07, 0xab, 0xdb, 0xfc, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x70, 0x60, 0xd8, 0xe0, 0x38, 0x36, 0xb1, 0x41, 0x89, 0xae, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xba, 0xc1, 0xb0, 0xe1, 0x6d, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xd4, 0x84, 0x61, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x65, 0x31, 0x0c, 0x87, 0x07, 0x6f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5a, 0x1e, 0x86, 0x83, 0x35, 0x83, 0x7e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x45, 0x4a, 0x0c, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xa5, 0x62, 0x38, 0x58, 0x84, 0x27, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x12, 0xc6, 0xb0, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x70, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x96, 0x8d, 0x61, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf5, 0x77, 0x0c, 0x07, 0xeb, 0x71, 0xfa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0x11, 0x19, 0x0e, 0xd6, 0x0c, 0xfa, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x8b, 0xc9, 0xb0, 0xc1, 0x71, 0x6c, 0x62, 0x83, 0x12, 0x5d, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xca, 0x94, 0x61, 0xc3, 0xdb, 0xac, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x55, 0x2c, 0xc3, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2b, 0x78, 0x19, 0x0e, 0x0f, 0xde, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x65, 0xc7, 0x0c, 0x07, 0xeb, 0xb0, 0xfc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0xa9, 0x19, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xf6, 0xcd, 0x70, 0xb0, 0x08, 0x4f, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x7a, 0x9d, 0x61, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xe1, 0xe4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xfd, 0x3d, 0xc3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0x06, 0x1a, 0x0e, 0xd6, 0xe3, 0xf4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0x50, 0x34, 0x1c, 0xac, 0xc3, 0xf2, 0xab, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x7e, 0xa4, 0x61, 0xc3, 0x25, 0xb5, 0xc6, 0xf3, 0x83, 0x12, 0x5d, 0xb9, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x02, 0x56, 0x48, 0x07, 0x16, 0xb0, 0x42, 0x7e, 0x70, 0xd4, 0x37, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0b, 0xbd, 0x1a, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x97, 0xd6, 0xb0, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2a, 0xba, 0x86, 0x83, 0x22, 0xa7, 0x75, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xfd, 0x6b, 0x38, 0x58, 0x5a, 0xb2, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xb7, 0xd8, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xda, 0xca, 0x86, 0x83, 0x45, 0x78, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf5, 0xa1, 0x0d, 0x1b, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0xcf, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0x5a, 0x1b, 0x0e, 0x8a, 0x6d, 0xe5, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb2, 0xdc, 0x86, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x10, 0x37, 0x6c, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xde, 0xb9, 0xe1, 0xa0, 0x80, 0xcd, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0xb4, 0x1b, 0x0e, 0x96, 0x96, 0xec, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x99, 0x37, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x14, 0xbe, 0xe1, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x3d, 0x7f, 0xc3, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0xc3, 0xdd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8a, 0x04, 0x87, 0x83, 0x62, 0x5b, 0xb9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xa6, 0xc2, 0x61, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x75, 0x20, 0x0e, 0x07, 0x2b, 0x39, 0xf6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0x62, 0x1c, 0x0e, 0x96, 0x96, 0xec, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xb6, 0xb0, 0x42, 0x3a, 0xb0, 0x85, 0x15, 0xf2, 0x83, 0xd3, 0xde, 0xc9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x0f, 0xe4, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa2, 0x25, 0x87, 0x83, 0x75, 0xeb, 0x70, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x75, 0x57, 0x0e, 0x07, 0xc5, 0xb6, 0x72, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x0d, 0x2b, 0xa4, 0x03, 0x6b, 0x58, 0x21, 0x3f, 0x38, 0x6a, 0x9d, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x25, 0x66, 0x0e, 0x1b, 0x9c, 0x1c, 0xe4, 0x36, 0x58, 0x53, 0xba, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x13, 0xfc, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x32, 0xe6, 0x87, 0x83, 0x95, 0x1c, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x45, 0xdd, 0x0f, 0x07, 0x4b, 0x4b, 0xf6, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8b, 0x58, 0x21, 0x1d, 0x58, 0xc4, 0x0a, 0xf9, 0xc1, 0x51, 0xdf, 0x64, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xa6, 0x73, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x01, 0xa0, 0xc3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0x16, 0x1d, 0x36, 0xbc, 0xad, 0x33, 0xc0, 0x23, 0xf7, 0xd6, 0x32, 0xf6, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xd9, 0xe9, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfa, 0x53, 0x87, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x78, 0xd6, 0xe1, 0x20, 0xe5, 0xb5, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xfc, 0xd7, 0xe1, 0xe0, 0xd4, 0xdc, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x6d, 0xb3, 0xc3, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x88, 0x15, 0x5a, 0x06, 0x16, 0xb1, 0x42, 0xd1, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x62, 0x85, 0x9e, 0x83, 0x25, 0xfb, 0x80, 0x87, 0x1f, 0x6a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4a, 0x6d, 0x87, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x8a, 0x7c, 0xd9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xea, 0x72, 0x87, 0x0d, 0x6f, 0xeb, 0x0c, 0xbc, 0x5b, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x41, 0xbe, 0xc3, 0xe1, 0x69, 0x9d, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x61, 0x78, 0x38, 0x58, 0x5a, 0xb2, 0xd7, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xc4, 0x0a, 0xe9, 0xc0, 0x26, 0x56, 0xc8, 0x37, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0x3e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc5, 0x1d, 0x0f, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x47, 0x79, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x09, 0xcd, 0xc3, 0xc1, 0x92, 0x67, 0xc0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x92, 0xa2, 0x87, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x3e, 0x3d, 0x1c, 0x9c, 0x9a, 0xdb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0xb7, 0x1e, 0x0e, 0x0e, 0xaf, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe5, 0x67, 0x0f, 0x07, 0x87, 0x95, 0xb9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0xeb, 0x1e, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x4d, 0xac, 0xd0, 0x32, 0xb0, 0x89, 0x15, 0x8a, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x13, 0x2b, 0xf4, 0x1c, 0xac, 0x76, 0x0b, 0x3c, 0xfc, 0x50, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x0a, 0x3e, 0x6c, 0x50, 0x96, 0xbc, 0x6f, 0x90, 0x82, 0xe9, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xdd, 0xf8, 0x70, 0xb0, 0xf0, 0x22, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xdc, 0xf3, 0xe1, 0xf0, 0xb4, 0x4e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0xc8, 0x3e, 0x1c, 0x2c, 0x2d, 0xd9, 0xab, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x8c, 0x15, 0xd2, 0x81, 0x65, 0xac, 0x90, 0x1f, 0x9c, 0x39, 0x5d, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5a, 0xf6, 0x87, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0xdf, 0x3f, 0x6c, 0xf8, 0xdc, 0x65, 0xc0, 0x9b, 0xc3, 0xd3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfa, 0x00, 0x88, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0x33, 0x40, 0x6c, 0x78, 0x50, 0x72, 0x83, 0x54, 0x9c, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xfa, 0x02, 0x62, 0xc3, 0xdb, 0x3a, 0x07, 0x29, 0x30, 0x8b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf5, 0x2b, 0x10, 0x07, 0x4b, 0x4b, 0xf6, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4b, 0x71, 0x20, 0x36, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x38, 0x04, 0xb1, 0xe1, 0x73, 0x97, 0x01, 0x8f, 0x2c, 0x0f, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4b, 0x9b, 0x20, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x89, 0x05, 0x71, 0x50, 0x14, 0xff, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0xae, 0x41, 0x1c, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x15, 0x79, 0x10, 0x1b, 0xde, 0xd6, 0xd9, 0x60, 0x81, 0x6c, 0x60, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x25, 0x85, 0x10, 0x1b, 0x14, 0x86, 0xaa, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x35, 0x8f, 0x10, 0x07, 0xeb, 0xd6, 0xe1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xaa, 0x4d, 0x88, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x98, 0x42, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x22, 0x16, 0xe2, 0xf0, 0xc5, 0xef, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x81, 0x30, 0xc4, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xda, 0x1d, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xb5, 0x33, 0xc4, 0xe1, 0x31, 0x99, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0xb6, 0x21, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x68, 0x0e, 0x71, 0x70, 0x22, 0x68, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xd1, 0x87, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x55, 0x41, 0xc4, 0xc1, 0x32, 0xec, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1a, 0x8c, 0x88, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0x8d, 0x44, 0x6c, 0x78, 0x50, 0x72, 0x83, 0x95, 0x2d, 0x71, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x99, 0x4b, 0xc4, 0xc1, 0xda, 0x81, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x62, 0xa1, 0x88, 0x83, 0x15, 0xf7, 0x81, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x20, 0x15, 0x71, 0x50, 0x6c, 0x2b, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0x7c, 0x45, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x40, 0x2d, 0x62, 0xc3, 0xe7, 0x2e, 0x03, 0x1e, 0x59, 0x5e, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0xd0, 0x45, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xe2, 0x2f, 0xe2, 0xa0, 0x28, 0xfe, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x92, 0x8c, 0x38, 0x38, 0x35, 0xb7, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x80, 0x46, 0x1c, 0xac, 0xb8, 0x0f, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x64, 0x8d, 0xd8, 0xa0, 0xb4, 0xb7, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xbb, 0x8d, 0xd8, 0xf0, 0xe7, 0xd2, 0x80, 0x97, 0xd6, 0x06, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x95, 0xc1, 0x11, 0x07, 0x65, 0x96, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xcb, 0x1c, 0xb1, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xfe, 0x3a, 0x62, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xca, 0x0a, 0x9b, 0x81, 0xa5, 0xac, 0xb0, 0x3b, 0x38, 0xe9, 0x89, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe5, 0xe1, 0x11, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x64, 0x8f, 0xd8, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xdd, 0x7d, 0xc4, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x99, 0x29, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x30, 0x20, 0xb1, 0xe1, 0x6d, 0x9d, 0x0d, 0xd6, 0xc4, 0x09, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xeb, 0x20, 0x71, 0x50, 0x6c, 0x2b, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc5, 0x1a, 0x12, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x2c, 0x5d, 0x16, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2b, 0x21, 0x29, 0x36, 0x7c, 0x1c, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0x6d, 0x52, 0x1c, 0xac, 0x4f, 0x16, 0x5c, 0x83, 0x12, 0x5d, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x44, 0x91, 0xd8, 0xa0, 0x20, 0x8d, 0x1d, 0xf0, 0xd8, 0xde, 0xce, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xca, 0x19, 0x89, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0xfb, 0x48, 0x1c, 0x94, 0x44, 0xb3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb5, 0x4f, 0x12, 0x07, 0xa7, 0xe6, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xda, 0x2e, 0x89, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0xa0, 0x49, 0x1c, 0xac, 0x4f, 0x16, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x9e, 0x93, 0x38, 0x3c, 0x26, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x49, 0xa0, 0xc4, 0xc1, 0x8a, 0xfb, 0xc0, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x12, 0x47, 0x89, 0x0d, 0x92, 0x0c, 0x08, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2b, 0x32, 0x25, 0x0e, 0x4e, 0x04, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x55, 0xb0, 0x12, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xdc, 0x95, 0x38, 0x58, 0x86, 0xfd, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xe8, 0x2c, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xda, 0x6c, 0x89, 0x0d, 0x0f, 0x4a, 0x6e, 0xb0, 0xf8, 0x1f, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x25, 0x97, 0x38, 0x58, 0x3b, 0x10, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x96, 0x2f, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x52, 0x82, 0x89, 0x83, 0x12, 0x1f, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x02, 0x63, 0xe2, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x2c, 0x99, 0xd8, 0xf0, 0xb6, 0xce, 0x06, 0xcb, 0xf6, 0x05, 0xab, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4b, 0x7b, 0x26, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x8d, 0x34, 0x71, 0xb0, 0x0c, 0xfb, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x36, 0x6b, 0x62, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe5, 0x64, 0x13, 0x1b, 0x1e, 0x94, 0xdc, 0x60, 0x65, 0x4b, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xfe, 0x36, 0x71, 0xb0, 0x76, 0x20, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x4c, 0x70, 0x62, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa5, 0x8d, 0x13, 0x07, 0x45, 0x26, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x41, 0xe8, 0xc4, 0x41, 0x51, 0x29, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xe8, 0x3a, 0x71, 0xb0, 0x08, 0x6e, 0xb0, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x34, 0x9e, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x69, 0xf4, 0xc4, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4b, 0xb9, 0x27, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x7d, 0x3e, 0x71, 0x10, 0x76, 0xb7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb5, 0xfa, 0x13, 0x07, 0xeb, 0x93, 0x05, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0b, 0x10, 0x28, 0x0e, 0x4e, 0xcd, 0x6d, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x25, 0x15, 0x14, 0x87, 0x07, 0x6f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0x41, 0x28, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xbc, 0x42, 0xb1, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6a, 0x1b, 0x8a, 0x83, 0xf5, 0xc9, 0x82, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xa1, 0x10, 0xc5, 0xe1, 0xc1, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0a, 0x27, 0x8a, 0x83, 0x05, 0x41, 0x74, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x99, 0x16, 0xc5, 0x86, 0x67, 0xf1, 0x0e, 0x96, 0x92, 0x51, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x05, 0x6c, 0x14, 0x1b, 0x9e, 0xc5, 0x3b, 0x58, 0xa7, 0x05, 0xb0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x02, 0x48, 0x71, 0x50, 0x6c, 0x2b, 0xd7, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xd0, 0x0a, 0xe9, 0xc0, 0x86, 0x56, 0xc8, 0x0f, 0x8e, 0xc5, 0xae, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xe5, 0x2a, 0xc5, 0x06, 0xe7, 0xfc, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf2, 0x5a, 0x8a, 0x83, 0x45, 0x78, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x25, 0xc2, 0x14, 0x07, 0xeb, 0xd6, 0xe1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2a, 0x67, 0x8a, 0x0d, 0x16, 0x60, 0x36, 0xad, 0xe1, 0xfb, 0xf6, 0x0d, 0x8e, 0x19, 0x9e, 0x1b, 0x94, 0xd0, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xd1, 0x0a, 0x9b, 0x81, 0x1d, 0xad, 0x50, 0xb0, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x47, 0x2b, 0x8c, 0x06, 0x76, 0xb4, 0xc2, 0xf0, 0xa0, 0xf4, 0xa6, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x8e, 0x56, 0x58, 0x0e, 0xec, 0x68, 0x85, 0xe9, 0xe1, 0x83, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x68, 0x85, 0xed, 0xc0, 0x8e, 0x56, 0xd8, 0x1f, 0x9c, 0xf4, 0x44, 0x3b, 0x08, 0xd3, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xaa, 0x69, 0x8b, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0x79, 0x5b, 0x1c, 0x9c, 0x08, 0xda, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0xe3, 0x2d, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0x70, 0x06, 0xf3, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xfc, 0xb7, 0x38, 0x28, 0xb6, 0x95, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0xb2, 0x29, 0x36, 0x28, 0x3a, 0x8d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2b, 0xc8, 0x29, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0x19, 0xaa, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xf1, 0x3d, 0xc5, 0x06, 0x2b, 0x5d, 0x9c, 0xd6, 0xe0, 0x6c, 0x72, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xb4, 0xc2, 0x6c, 0x60, 0x4d, 0x2b, 0xac, 0x0f, 0x96, 0x96, 0xec, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa5, 0x03, 0x15, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x72, 0xa8, 0xd8, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x51, 0x46, 0xc5, 0xe1, 0xc1, 0x9b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x92, 0xa4, 0x62, 0xc3, 0xdb, 0x3a, 0x07, 0x8b, 0x3a, 0x09, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0x60, 0x2a, 0x36, 0x38, 0xba, 0x0e, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0xea, 0x54, 0x1c, 0x1e, 0xbc, 0x69, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x39, 0xaa, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x95, 0x54, 0xc5, 0x41, 0x41, 0xb4, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x36, 0x56, 0x71, 0x50, 0x54, 0x8a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0xc3, 0x55, 0x1c, 0x2c, 0x0b, 0x26, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xfa, 0xab, 0xd8, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xb5, 0x42, 0x3e, 0xb0, 0xa8, 0x15, 0xf6, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xa2, 0x56, 0x18, 0x0c, 0x2c, 0x6a, 0x85, 0xcd, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x6a, 0x85, 0xc9, 0xc1, 0x9a, 0x81, 0xc2, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xd4, 0x0a, 0xa3, 0x81, 0x45, 0xad, 0xb0, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x45, 0xad, 0x30, 0x3b, 0x58, 0x98, 0x51, 0x78, 0xf8, 0x60, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8b, 0x5a, 0x61, 0x38, 0xb0, 0xa8, 0x15, 0xe6, 0x1b, 0xfe, 0x5c, 0x1a, 0x5c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xa8, 0x15, 0xa6, 0x07, 0xab, 0x5f, 0x0a, 0x0f, 0x4e, 0x7a, 0xa2, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x85, 0x8c, 0x15, 0x1b, 0x14, 0x86, 0xaa, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x95, 0x96, 0x15, 0x1b, 0xde, 0x66, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0x42, 0x2b, 0x0e, 0x0e, 0xe7, 0x7c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x99, 0x6b, 0xc5, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x51, 0x6e, 0xc5, 0xc1, 0x89, 0xa0, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x46, 0xb9, 0x62, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x55, 0xd5, 0x15, 0x07, 0xcb, 0xb0, 0xdf, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4b, 0xcc, 0x2b, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x15, 0x5f, 0xb1, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2a, 0xfe, 0x8a, 0x83, 0xc3, 0x39, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x09, 0x82, 0xc5, 0x86, 0x07, 0x25, 0x37, 0x58, 0xd9, 0x12, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x4c, 0x58, 0x1c, 0xac, 0x1d, 0x88, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0x41, 0x2c, 0x36, 0x3c, 0x28, 0xb9, 0xc1, 0xe2, 0x7f, 0xb8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x7e, 0xc5, 0xe2, 0x60, 0xed, 0x40, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xad, 0x8f, 0xc5, 0xc1, 0xe9, 0x48, 0xa4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xda, 0x26, 0x8b, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x32, 0x2c, 0x8b, 0x0d, 0x8f, 0xb0, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x8d, 0x59, 0x1c, 0x1c, 0xce, 0xf9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xab, 0xdf, 0x2c, 0x36, 0xbc, 0xcd, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0xeb, 0x59, 0x6c, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xb0, 0xd0, 0xe2, 0xe0, 0xf8, 0xc9, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0x45, 0x5a, 0x1c, 0x2c, 0x08, 0xa2, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x92, 0xd8, 0xe2, 0xe0, 0xf8, 0xc9, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0x87, 0x5a, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x88, 0xd5, 0xe2, 0x60, 0xcd, 0xc6, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x21, 0xae, 0xc5, 0xc1, 0xf1, 0x93, 0xaf, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xae, 0x15, 0xd2, 0x81, 0x75, 0xad, 0x90, 0x1f, 0x2c, 0x4c, 0xee, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8b, 0x22, 0x2e, 0x36, 0x38, 0x39, 0xc8, 0x6d, 0xb0, 0xa6, 0x74, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x48, 0x1e, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x75, 0xfd, 0x18, 0x07, 0x2b, 0x39, 0xf6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xab, 0x1c, 0x32, 0x0e, 0x96, 0x96, 0xec, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xb6, 0x42, 0x3a, 0xb0, 0xb0, 0x15, 0xf2, 0x83, 0x73, 0x6e, 0xca, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xff, 0x71, 0xb1, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2a, 0x95, 0x8b, 0x83, 0x45, 0x78, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa5, 0x36, 0x17, 0x07, 0xeb, 0xd6, 0xe1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xab, 0x85, 0x2e, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xe0, 0x74, 0xb1, 0xe1, 0x6d, 0x9d, 0x01, 0x5f, 0xae, 0x65, 0xec, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x0a, 0xec, 0x62, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x95, 0x6b, 0x17, 0x1b, 0xde, 0xd6, 0xd9, 0x20, 0x29, 0x7e, 0xaf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3a, 0xbf, 0x8b, 0x83, 0xa5, 0x25, 0x7b, 0xd5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xd8, 0x0a, 0xe9, 0xc0, 0xc6, 0x56, 0xc8, 0x37, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0x8e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x05, 0x91, 0x17, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xdb, 0xbc, 0x38, 0x58, 0x84, 0x27, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x7b, 0x7a, 0x71, 0xb0, 0x6e, 0x1d, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x80, 0xf6, 0xe2, 0x60, 0xdd, 0x3a, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x0d, 0xf0, 0xc5, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0x96, 0x2f, 0x0e, 0x56, 0xe5, 0x18, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x71, 0x5f, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xf2, 0xfc, 0x62, 0xc3, 0xdb, 0x3a, 0x1b, 0x24, 0x92, 0x2e, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x85, 0x7f, 0x71, 0xb0, 0xb4, 0x64, 0xaf, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2b, 0x5b, 0x21, 0x1d, 0x58, 0xd9, 0x0a, 0xf9, 0xc1, 0xb1, 0xd8, 0x75, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x55, 0xc0, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x45, 0x05, 0xc6, 0xc1, 0x22, 0x3c, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb2, 0x10, 0x8c, 0x83, 0x75, 0xeb, 0x70, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb5, 0x2d, 0x18, 0x07, 0xeb, 0xd6, 0xe1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0b, 0x74, 0x30, 0x0e, 0xd6, 0xad, 0xc3, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x19, 0x61, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x30, 0x0a, 0xe3, 0x60, 0x55, 0x8e, 0xe1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xa1, 0x18, 0xc6, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8b, 0xdb, 0x30, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0x2a, 0xea, 0x5e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc5, 0x80, 0x18, 0x07, 0x4b, 0x4b, 0xf6, 0xaa, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xb3, 0x15, 0xd2, 0x81, 0x9d, 0xad, 0x90, 0x1f, 0x2c, 0x89, 0x09, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0x22, 0x31, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xbc, 0x89, 0x71, 0xb0, 0x08, 0x4f, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xfe, 0x14, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x25, 0xb3, 0x18, 0x07, 0xab, 0x72, 0x0c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0b, 0x88, 0x31, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xf3, 0x8c, 0xb1, 0xe1, 0x6d, 0x9d, 0x0d, 0x12, 0xf5, 0xf8, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x11, 0xc7, 0x38, 0x58, 0x5a, 0xb2, 0x57, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xb6, 0x42, 0x3a, 0xb0, 0xb6, 0x15, 0xf2, 0x83, 0x84, 0x30, 0xa3, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xf6, 0x23, 0x63, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x85, 0x2a, 0x19, 0x1b, 0x14, 0x93, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xdb, 0x0a, 0x93, 0x81, 0xbd, 0xad, 0x30, 0x3a, 0x58, 0x3b, 0xb3, 0x77, 0xb0, 0xa6, 0x74, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x18, 0x27, 0x63, 0x83, 0xa2, 0xd3, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x7c, 0x28, 0xe3, 0xe0, 0x90, 0xb5, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x76, 0x95, 0xb1, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe2, 0xb0, 0x8c, 0x83, 0x45, 0xf0, 0x6e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x15, 0x6e, 0x19, 0x1b, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0x1f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xab, 0xf4, 0x32, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x59, 0x98, 0x71, 0x70, 0x92, 0x69, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xca, 0xcc, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x21, 0x69, 0xc6, 0x86, 0x07, 0x25, 0x37, 0x38, 0x08, 0xb5, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x95, 0xaf, 0x19, 0x1b, 0xde, 0xd6, 0x19, 0x78, 0xb3, 0xb0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x02, 0xe2, 0x8c, 0x83, 0xa5, 0x25, 0x7b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0x49, 0x67, 0x6c, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x34, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x09, 0x9e, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xba, 0xf5, 0x8c, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x63, 0x2d, 0x63, 0x6f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb5, 0xfd, 0x19, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x47, 0xd0, 0xd8, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xca, 0xdc, 0xc6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xea, 0x09, 0x8d, 0x83, 0x15, 0x8b, 0x87, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x65, 0x26, 0x1a, 0x07, 0x4b, 0x4b, 0xf6, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xa7, 0xd1, 0xd8, 0x60, 0x01, 0x66, 0xd3, 0x1a, 0xbe, 0x6f, 0x1f, 0xf0, 0xce, 0xc2, 0xda, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x6e, 0x85, 0xcd, 0xc0, 0xee, 0x56, 0xe8, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xbb, 0x15, 0x46, 0x03, 0xbb, 0x5b, 0x61, 0x78, 0x50, 0x7a, 0xd3, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x77, 0x2b, 0x2c, 0x07, 0x76, 0xb7, 0xc2, 0xfa, 0xe0, 0xa4, 0x27, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xdd, 0xad, 0x30, 0x1f, 0xd8, 0xdd, 0x0a, 0x15, 0x07, 0x27, 0x3d, 0xd1, 0x0e, 0xc2, 0x74, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x72, 0xd8, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb5, 0xce, 0x1e, 0x07, 0x27, 0x82, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd2, 0x6f, 0x8f, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x6f, 0xb0, 0x5c, 0xfa, 0xb0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa2, 0x76, 0x8f, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0xe1, 0x7b, 0x6c, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x68, 0xe0, 0xe3, 0xf0, 0xe0, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xe9, 0xf0, 0x71, 0xb0, 0xb4, 0x64, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x58, 0xe3, 0x63, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xde, 0x0a, 0x55, 0x03, 0xcb, 0x5b, 0xa1, 0xee, 0xe0, 0xa4, 0x27, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x94, 0x7c, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xe8, 0xe5, 0xe3, 0x60, 0x11, 0xbc, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xe5, 0xce, 0xc7, 0x41, 0x41, 0x91, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x70, 0xf4, 0xb1, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x35, 0x19, 0x88, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd5, 0x3f, 0x1a, 0x1b, 0x9c, 0x1c, 0xe4, 0x36, 0x58, 0x53, 0xba, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x8d, 0xe1, 0xb1, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa2, 0x11, 0x8f, 0x83, 0x82, 0x22, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xd2, 0xc5, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd5, 0x39, 0x1e, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x28, 0xf2, 0xd8, 0xf0, 0xb6, 0xce, 0x00, 0xcf, 0x1b, 0x5e, 0xcb, 0xd8, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x81, 0x95, 0xc7, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0xc0, 0x3c, 0x0e, 0x52, 0x5e, 0xab, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4b, 0xd9, 0x3c, 0x0e, 0x8a, 0x4a, 0xf1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4b, 0xf4, 0x3c, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xed, 0xad, 0xd0, 0x34, 0xb0, 0xbd, 0x15, 0xca, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x7b, 0x2b, 0x74, 0x1d, 0xac, 0x6e, 0x45, 0x3c, 0xfc, 0x50, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x1c, 0x7a, 0x6c, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xe4, 0xcb, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x49, 0x7a, 0x1c, 0x2c, 0xbc, 0x08, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x1d, 0xf5, 0x38, 0x3c, 0xad, 0x53, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc5, 0xb6, 0x1e, 0x07, 0x4b, 0x4b, 0xf6, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x6f, 0x85, 0x74, 0x60, 0x7d, 0x2b, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4a, 0x27, 0x8d, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x64, 0x69, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x6a, 0x4c, 0xe3, 0x60, 0x11, 0xbc, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xe9, 0x9b, 0xc6, 0xc1, 0x72, 0xdc, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xea, 0x3d, 0x8d, 0x83, 0x82, 0x22, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x92, 0x43, 0x8d, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0x49, 0x6a, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xb2, 0x53, 0xe3, 0x60, 0x11, 0x22, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x01, 0xac, 0xc6, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0x74, 0x35, 0x0e, 0x02, 0x96, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xc8, 0x58, 0xe3, 0xe0, 0xd4, 0xdc, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x09, 0xb5, 0xc6, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xbe, 0x15, 0xfa, 0x06, 0xd6, 0xb7, 0x42, 0xe5, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x6f, 0x85, 0xc6, 0x83, 0xa5, 0x39, 0x89, 0x87, 0x1f, 0x6a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x82, 0x70, 0x8d, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x8a, 0x7c, 0xd9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x22, 0x76, 0x8d, 0x83, 0x85, 0x17, 0x81, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa5, 0xfd, 0x1a, 0x87, 0xa7, 0x75, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x18, 0x62, 0xe3, 0x60, 0x69, 0xc9, 0x5e, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xfd, 0xad, 0x90, 0x0e, 0xec, 0x6f, 0x85, 0xfc, 0xe0, 0xa8, 0x75, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x84, 0x6c, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x6c, 0x65, 0x63, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb5, 0x35, 0x1b, 0x07, 0x8b, 0xe0, 0xdd, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0b, 0x84, 0x36, 0x36, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0x9e, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x38, 0x6d, 0x1c, 0x14, 0x14, 0x99, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x65, 0x6d, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x90, 0x6c, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb5, 0x6f, 0x1b, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xc9, 0x5a, 0xc6, 0xde, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0x01, 0x37, 0x0e, 0x8f, 0xc9, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x1e, 0xb9, 0x71, 0xb0, 0xb4, 0x64, 0xaf, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x02, 0x57, 0x48, 0x07, 0x16, 0xb8, 0x42, 0xbe, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x70, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x1b, 0xdd, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x79, 0xeb, 0xc6, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6b, 0x70, 0x37, 0x0e, 0x16, 0xc1, 0xbb, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x12, 0x6f, 0x1c, 0xac, 0x41, 0x7f, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x85, 0xde, 0x38, 0x28, 0x28, 0x32, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xe0, 0xde, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xd1, 0xf9, 0xc6, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0xe4, 0x37, 0x0e, 0x16, 0x21, 0x22, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x0e, 0x70, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xc0, 0x81, 0xe3, 0xe0, 0xf0, 0x2a, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xa5, 0xc1, 0x71, 0x70, 0x6a, 0x6e, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x06, 0x85, 0x63, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe0, 0x0a, 0x85, 0x03, 0x0b, 0x5c, 0xa1, 0x73, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xb8, 0x42, 0xe5, 0xc1, 0x4a, 0x0a, 0xc5, 0xc3, 0x0f, 0x35, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x45, 0x0d, 0xc7, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x29, 0x98, 0x4e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x55, 0x40, 0x1c, 0x07, 0x0b, 0x2f, 0x02, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0xa2, 0x38, 0x0e, 0x4f, 0xeb, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x21, 0x19, 0xc7, 0xc1, 0xd2, 0x92, 0xbd, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1b, 0x5c, 0x21, 0x1d, 0xd8, 0xe0, 0x0a, 0xf9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0xc2, 0xed, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xc6, 0x8e, 0x63, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa5, 0x80, 0x1c, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x57, 0xe4, 0x38, 0x58, 0x04, 0xef, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x74, 0xc9, 0x71, 0xb0, 0x7c, 0xde, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x6e, 0x94, 0xe3, 0xa0, 0xa0, 0xc8, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xd8, 0x95, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x05, 0xba, 0x1c, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x29, 0xe6, 0x38, 0x58, 0x84, 0x88, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x65, 0xcd, 0xb1, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x62, 0x70, 0x8e, 0x83, 0xd4, 0xd3, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8a, 0x76, 0x8e, 0x83, 0xc3, 0x02, 0x5b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf5, 0xfa, 0x1c, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x06, 0x57, 0x28, 0x1c, 0xd8, 0xe0, 0x0a, 0x9d, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xc1, 0x15, 0x2a, 0x0f, 0x16, 0x83, 0x2a, 0x1e, 0x7e, 0xa8, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xab, 0x0f, 0x3a, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x48, 0xc1, 0x74, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x98, 0xe8, 0x38, 0x58, 0x78, 0x11, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x42, 0xd2, 0x71, 0x78, 0x5a, 0xa7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8b, 0x6e, 0x3a, 0x0e, 0x96, 0x96, 0xec, 0xd5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xe1, 0x0a, 0xe9, 0xc0, 0x0a, 0x57, 0xc8, 0x37, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0x7e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x35, 0x48, 0x1d, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x95, 0xea, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x3d, 0x57, 0xc7, 0xc1, 0x22, 0x78, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa2, 0xb4, 0x8e, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x87, 0xdf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x85, 0x75, 0x1d, 0x07, 0x05, 0x45, 0x66, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd5, 0x80, 0x1d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x60, 0xec, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xd1, 0x65, 0xc7, 0xc1, 0x22, 0x44, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x32, 0xd4, 0x8e, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0xcb, 0x76, 0x1c, 0xa4, 0x40, 0xa7, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0xfc, 0x76, 0x1c, 0x1c, 0x16, 0xd8, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x68, 0xee, 0xd8, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xb8, 0x42, 0xe1, 0xc0, 0x0a, 0x57, 0xe8, 0xdc, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x15, 0xae, 0x50, 0x79, 0xb0, 0xce, 0x65, 0xf1, 0xf0, 0x43, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x9e, 0xdd, 0xb1, 0x41, 0x59, 0xf2, 0xbe, 0x61, 0x05, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xa4, 0xbc, 0xe3, 0x60, 0xe1, 0x45, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x99, 0x7d, 0xc7, 0xe1, 0x69, 0x9d, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x4c, 0xf0, 0x38, 0x58, 0x5a, 0xb2, 0x57, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x2d, 0xae, 0x90, 0x0e, 0x6c, 0x71, 0x85, 0xfc, 0x60, 0x49, 0x4c, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x8d, 0xf5, 0xb1, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x3f, 0xf6, 0x71, 0x70, 0x22, 0x68, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xa6, 0xfb, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xf1, 0xdf, 0xc7, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0x15, 0x3f, 0x36, 0x3c, 0x28, 0xb9, 0x41, 0xa2, 0x4d, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x5e, 0xf9, 0x71, 0x50, 0x0a, 0xa9, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0xa1, 0x7e, 0x1c, 0x2c, 0x2d, 0xd9, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xa4, 0xf6, 0xe3, 0x60, 0xfd, 0xff, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x18, 0xfc, 0x71, 0xb0, 0x02, 0x81, 0x70, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x7c, 0xfe, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0xe5, 0xc3, 0xde, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x41, 0x01, 0xb2, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0xf0, 0x7a, 0x0d, 0x56, 0x9d, 0xec, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd5, 0xdc, 0x1f, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x40, 0xff, 0xd8, 0xf0, 0xa0, 0xe4, 0x06, 0xc9, 0x6c, 0x4e, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xc1, 0xfc, 0xc7, 0x41, 0x29, 0xa4, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x59, 0x00, 0x72, 0xb0, 0xb4, 0x64, 0xaf, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x2a, 0x57, 0x48, 0x07, 0x56, 0xb9, 0x42, 0x7e, 0x70, 0xfa, 0x71, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xab, 0x49, 0x40, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xfc, 0x02, 0xb2, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x52, 0x1d, 0x90, 0x83, 0x75, 0x5d, 0x70, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xb1, 0x11, 0xc8, 0x86, 0xb7, 0x75, 0x0e, 0xd6, 0x94, 0xee, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x16, 0x49, 0x81, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xa6, 0x0b, 0x64, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x35, 0x68, 0x20, 0x07, 0x4b, 0x50, 0xfd, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3a, 0x3a, 0x90, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0xfe, 0x81, 0x1c, 0x94, 0x44, 0xb3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x95, 0x90, 0x20, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x85, 0x27, 0xc8, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0x50, 0x41, 0x0e, 0x02, 0x96, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x86, 0x16, 0xe4, 0xf0, 0x98, 0x4c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x85, 0xc1, 0x20, 0x07, 0xcb, 0x70, 0xf5, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0x73, 0x06, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x61, 0x36, 0xc8, 0xc1, 0x89, 0xa0, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x4e, 0x1d, 0x64, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa5, 0xf5, 0x20, 0x07, 0x05, 0xd1, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xa9, 0x41, 0xc8, 0x41, 0x51, 0x29, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x40, 0x11, 0x72, 0xb0, 0xb4, 0x64, 0xaf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x32, 0x91, 0x90, 0x83, 0x62, 0x5b, 0xb9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xee, 0x25, 0x64, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x85, 0x39, 0x21, 0x07, 0xeb, 0xd6, 0xe1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8b, 0x8b, 0x42, 0x0e, 0x16, 0xe1, 0xc9, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0x47, 0x85, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xa4, 0x2b, 0xe4, 0xe0, 0x44, 0xd0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xe1, 0x16, 0xb2, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa2, 0xbc, 0x90, 0x83, 0x82, 0x68, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x4a, 0x31, 0xe4, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xbe, 0x0c, 0x39, 0x58, 0x5a, 0xb2, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x91, 0x69, 0xc8, 0x41, 0xb1, 0xad, 0x5c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xd5, 0x6c, 0xc8, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0x7a, 0x43, 0x0e, 0xd6, 0xad, 0xc3, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x56, 0x26, 0x87, 0x1c, 0xac, 0x5b, 0x87, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xae, 0x0e, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x3d, 0x78, 0xc8, 0xc1, 0x89, 0xa0, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x3c, 0x3e, 0x64, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x15, 0xfd, 0x21, 0x07, 0x05, 0xd1, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x85, 0x83, 0xc8, 0x41, 0x51, 0x29, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xb8, 0x21, 0xb2, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x62, 0x13, 0x91, 0x83, 0x35, 0x75, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc5, 0x37, 0x22, 0x07, 0x4b, 0x4b, 0xf6, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xe4, 0x48, 0xe4, 0xa0, 0xd8, 0x56, 0xae, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x69, 0x95, 0xde, 0x1b, 0x94, 0xf6, 0x96, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x44, 0x55, 0xef, 0x0d, 0x7f, 0x2e, 0x6d, 0x30, 0xe6, 0x9f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x92, 0xaf, 0xf7, 0xc1, 0x49, 0x4f, 0x74, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0x75, 0x7b, 0x6f, 0x78, 0x50, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xbc, 0xef, 0xbe, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0xc1, 0xba, 0x10, 0xbe, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x75, 0x21, 0x7c, 0x0d, 0x80, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x27, 0x2e, 0x27, 0x2d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x64, 0x20, 0x62, 0x61, 0x73, 0x65, 0x31, 0x36, 0x2c, 0x20, 0x34, 0x20, 0x64, 0x69, 0x67, 0x69, 0x74, 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x19, 0xe2, 0x7d, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xfb, 0x0a, 0xe9, 0xc0, 0xda, 0x57, 0x58, 0x6e, 0xf8, 0x73, 0x69, 0xc0, 0x2b, 0x9b, 0x1b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x7d, 0x85, 0xc5, 0xc1, 0xba, 0xa0, 0xc6, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6b, 0x5f, 0x61, 0x32, 0xb0, 0xf6, 0x15, 0x66, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xb5, 0xaf, 0xb0, 0x1b, 0x58, 0xfb, 0x0a, 0xc3, 0xc3, 0x0f, 0x35, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x24, 0x95, 0xf7, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xed, 0x2b, 0xec, 0x07, 0xd6, 0xbe, 0x42, 0xc7, 0xc1, 0x49, 0x4f, 0x74, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xf8, 0xbc, 0x6f, 0x50, 0xc2, 0x63, 0xae, 0xc1, 0xc2, 0xa2, 0xc6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x89, 0x56, 0xef, 0x07, 0xc5, 0xb6, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x73, 0x7b, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x4d, 0xf0, 0xfd, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x51, 0xf3, 0x7d, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x06, 0xfb, 0xbe, 0xe1, 0x92, 0xda, 0xa0, 0xa8, 0x11, 0x5f, 0x83, 0x12, 0x5d, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0x22, 0xbf, 0x6f, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xfa, 0xaf, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x8c, 0xbf, 0x6f, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0x60, 0xf5, 0x5f, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd4, 0xfe, 0xf7, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x52, 0x28, 0xe0, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x55, 0x81, 0xdf, 0xf0, 0xb6, 0xce, 0x80, 0x8f, 0xd7, 0x32, 0xf6, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x7b, 0x82, 0x3f, 0x38, 0x35, 0xb7, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x97, 0x83, 0xdf, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0xc1, 0xea, 0xbf, 0xc6, 0x5a, 0x0d, 0x56, 0xc2, 0xe6, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xac, 0x84, 0xcd, 0x6b, 0x00, 0xbc, 0x10, 0x0b, 0x9b, 0x2b, 0x9b, 0x91, 0x61, 0x01, 0xa1, 0x0b, 0x5b, 0x2b, 0x9b, 0x03, 0x69, 0x4b, 0x73, 0x4b, 0x6b, 0xab, 0x6b, 0x03, 0x79, 0xab, 0xa3, 0x83, 0xab, 0xa3, 0x03, 0x21, 0x4b, 0x3b, 0x4b, 0xa3, 0x9b, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x09, 0x8e, 0xf0, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xea, 0x57, 0x18, 0x0d, 0xac, 0x7e, 0x85, 0xe5, 0x86, 0x3f, 0x97, 0x36, 0x74, 0x03, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xfa, 0x15, 0x86, 0x07, 0x6b, 0x0e, 0x1c, 0x0f, 0x3f, 0xd4, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe4, 0x53, 0xf8, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x92, 0x7c, 0xe1, 0x37, 0xbc, 0xad, 0x33, 0xc0, 0x53, 0xd6, 0xd6, 0x32, 0xf6, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0xff, 0x86, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x99, 0x1e, 0xfe, 0x20, 0xf5, 0x34, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xd6, 0x10, 0x7f, 0x90, 0x2e, 0x31, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x05, 0x25, 0x7e, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xfd, 0x0a, 0x6d, 0x03, 0xab, 0x5f, 0xa1, 0x7b, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xfd, 0x0a, 0x75, 0x03, 0xab, 0x5f, 0xa1, 0xef, 0xf0, 0xc1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xbf, 0x42, 0xe1, 0xc0, 0xea, 0x57, 0xe8, 0xdc, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd5, 0xaf, 0x50, 0x79, 0xb0, 0x9e, 0xcb, 0xf1, 0xf0, 0x43, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xbf, 0x42, 0xe9, 0xc0, 0xea, 0x57, 0xa8, 0xde, 0xf0, 0xe7, 0xd2, 0xe0, 0xe3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd5, 0xaf, 0x50, 0x7b, 0xb0, 0x6e, 0xce, 0xf1, 0xe0, 0xa4, 0x27, 0xda, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x1b, 0x8a, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x0d, 0x2b, 0x7e, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x43, 0x6b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xe1, 0x2d, 0xfe, 0x60, 0xe1, 0x45, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xb5, 0x32, 0xfe, 0xf0, 0x5e, 0x50, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb4, 0xd7, 0xf8, 0xc3, 0xd3, 0x3b, 0xb5, 0x1a, 0x2c, 0x23, 0x4d, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0x46, 0x9a, 0xd8, 0x00, 0xf8, 0x41, 0x56, 0x36, 0x96, 0xd6, 0x16, 0xc6, 0xc6, 0x02, 0x42, 0x17, 0xb6, 0x56, 0x36, 0x07, 0xd2, 0x96, 0xe6, 0x96, 0xd6, 0x56, 0xd7, 0x06, 0xf2, 0x56, 0x47, 0x07, 0x57, 0x47, 0x07, 0x42, 0x96, 0x76, 0x96, 0x46, 0x37, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd2, 0x9a, 0xe3, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1d, 0xaf, 0x30, 0x1a, 0xd8, 0xf1, 0x0a, 0xcb, 0x0d, 0x7f, 0x2e, 0x6d, 0xe8, 0x06, 0xb0, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xc7, 0x2b, 0x0c, 0x0f, 0x16, 0x3d, 0x3b, 0x1e, 0x7e, 0xa8, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x29, 0xe7, 0xf1, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xf6, 0xc7, 0x1f, 0x2c, 0x0d, 0x71, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x7d, 0xc8, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x42, 0x23, 0x7f, 0x90, 0xf2, 0x5a, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x65, 0x92, 0x3f, 0x48, 0x97, 0x18, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x76, 0x26, 0xbf, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x78, 0x85, 0xb6, 0x81, 0x1d, 0xaf, 0xd0, 0xbd, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x78, 0x85, 0xba, 0x81, 0x1d, 0xaf, 0xd0, 0x77, 0xf8, 0x60, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x5e, 0xa1, 0x70, 0x60, 0xc7, 0x2b, 0x74, 0x6e, 0xf8, 0x73, 0x69, 0x70, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x8e, 0x57, 0xa8, 0x3c, 0x58, 0x1e, 0xf2, 0x78, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x5e, 0xa1, 0x74, 0x60, 0xc7, 0x2b, 0x54, 0x6f, 0xf8, 0x73, 0x69, 0xf0, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x8e, 0x57, 0xa8, 0x3d, 0x58, 0x86, 0xf3, 0x78, 0x70, 0xd2, 0x13, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0x0a, 0xca, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x7a, 0x29, 0xbf, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x91, 0x2f, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x72, 0x95, 0x3f, 0x58, 0x78, 0x11, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x89, 0x96, 0x3f, 0xbc, 0x17, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x5d, 0x5d, 0xfe, 0xf0, 0xf4, 0x4e, 0x1d, 0x4e, 0xb1, 0x16, 0xf0, 0xef, 0x5a, 0xc6, 0xde, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x65, 0x6b, 0x8f, 0x0d, 0x80, 0x17, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x2c, 0x20, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x69, 0x67, 0x69, 0x74, 0x73, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x25, 0x61, 0x7e, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xfd, 0x0a, 0xa3, 0x81, 0xdd, 0xaf, 0xb0, 0xdc, 0xf0, 0xe7, 0xd2, 0x86, 0x6e, 0x00, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x76, 0xbf, 0xc2, 0xf0, 0x60, 0x61, 0xe5, 0xe3, 0xe1, 0x87, 0x9a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x2e, 0x32, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x5a, 0xce, 0xfc, 0xc1, 0xd2, 0x10, 0xc7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xc2, 0xd6, 0xfc, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xe9, 0x6f, 0xf3, 0x07, 0x29, 0xd0, 0xa9, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x44, 0xc4, 0xf9, 0x83, 0x74, 0x89, 0xb1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x49, 0xa3, 0xf3, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xee, 0x57, 0x68, 0x1b, 0xd8, 0xfd, 0x0a, 0xdd, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xee, 0x57, 0xa8, 0x1b, 0xd8, 0xfd, 0x0a, 0x7d, 0x87, 0x0f, 0x56, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xfb, 0x15, 0x0a, 0x07, 0x76, 0xbf, 0x42, 0xe7, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x7e, 0x85, 0xca, 0x83, 0x25, 0xe8, 0x8f, 0x87, 0x1f, 0x6a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xfb, 0x15, 0x4a, 0x07, 0x76, 0xbf, 0x42, 0xf5, 0x86, 0x3f, 0x97, 0x06, 0x1f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x7e, 0x85, 0xda, 0x83, 0xa5, 0xfe, 0x8f, 0x07, 0x27, 0x3d, 0xd1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa2, 0xef, 0xfc, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x89, 0xd3, 0xf3, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x56, 0xf0, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x29, 0xea, 0xf3, 0x07, 0x0b, 0x2f, 0x02, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xc9, 0x0c, 0xf4, 0x87, 0xf7, 0x82, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x9a, 0xd0, 0x1f, 0x9e, 0xde, 0xa9, 0xd5, 0x60, 0x05, 0x2e, 0xdf, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x0a, 0x5c, 0xbe, 0x06, 0xe0, 0x8f, 0xac, 0x6c, 0x2c, 0xad, 0x2d, 0x8c, 0x8d, 0x05, 0x44, 0x06, 0x84, 0x2c, 0xed, 0x2c, 0x8d, 0x0e, 0xa4, 0x2d, 0xcd, 0x2d, 0xad, 0xad, 0xae, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x13, 0xd1, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdb, 0x5f, 0x61, 0x34, 0xb0, 0xfd, 0x15, 0x96, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xa8, 0x2d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xfd, 0x15, 0x86, 0x07, 0xab, 0xa7, 0x20, 0x0f, 0x3f, 0xd4, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x34, 0x2f, 0xfa, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x92, 0xe9, 0xe8, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x59, 0xa4, 0x3f, 0x58, 0x29, 0x9a, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x78, 0xa5, 0x3f, 0x08, 0x58, 0xd6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xc9, 0xd1, 0xf4, 0x07, 0xa5, 0x9f, 0x71, 0x87, 0x53, 0x6c, 0x0d, 0x16, 0xeb, 0xf4, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x2c, 0xd6, 0xe9, 0x6b, 0x80, 0x97, 0xac, 0x6c, 0x2c, 0xad, 0x2d, 0x8c, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xb4, 0xd3, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1b, 0x5e, 0x61, 0x34, 0xb0, 0xe1, 0x15, 0x96, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xa8, 0x2d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe1, 0x15, 0x86, 0x07, 0xab, 0x40, 0x21, 0x0f, 0x3f, 0xd4, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x64, 0x83, 0xfa, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x52, 0x3a, 0xea, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x9c, 0xa9, 0x3f, 0x58, 0x29, 0x9a, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0xaa, 0xaa, 0x3f, 0x3c, 0x26, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xf5, 0xae, 0xfe, 0xa0, 0xf4, 0x33, 0x6e, 0x35, 0x58, 0xa9, 0xdc, 0xb8, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0x52, 0xb9, 0xb1, 0x01, 0xf0, 0x42, 0x2c, 0x6c, 0xae, 0x2c, 0xc6, 0x86, 0x05, 0x84, 0x2e, 0x6c, 0xad, 0x6c, 0x0e, 0xa4, 0x2d, 0xcd, 0x2d, 0xad, 0xad, 0xae, 0x0d, 0xe4, 0xad, 0x8e, 0x0e, 0xae, 0x8e, 0x0e, 0x84, 0x2c, 0xed, 0x2c, 0x8d, 0x6e, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x4d, 0xd6, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x5f, 0x61, 0x34, 0xb0, 0xfc, 0x15, 0x96, 0x1b, 0xfe, 0x5c, 0xda, 0xd0, 0x0d, 0x60, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xf2, 0x57, 0x18, 0x1e, 0xac, 0xce, 0x87, 0x3c, 0xfc, 0x50, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x12, 0x5a, 0xeb, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x1c, 0xae, 0x3f, 0x58, 0x1a, 0xe2, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x29, 0xaf, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x41, 0xbf, 0xfe, 0xe0, 0xf0, 0x2a, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x95, 0xb0, 0x3f, 0x48, 0x97, 0x18, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xd6, 0x62, 0xbf, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x7f, 0x85, 0xb6, 0x81, 0xe5, 0xaf, 0xd0, 0xbd, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x7f, 0x85, 0xba, 0x81, 0xe5, 0xaf, 0xd0, 0x77, 0xf8, 0x60, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x5f, 0xa1, 0x70, 0x60, 0xf9, 0x2b, 0x74, 0x6e, 0xf8, 0x73, 0x69, 0x70, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xf2, 0x57, 0xa8, 0x3c, 0x58, 0xc6, 0x14, 0x79, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x5f, 0xa1, 0x74, 0x60, 0xf9, 0x2b, 0x54, 0x6f, 0xf8, 0x73, 0x69, 0xf0, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xf2, 0x57, 0xa8, 0x3d, 0x58, 0x2e, 0x16, 0x79, 0x70, 0xd2, 0x13, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0x22, 0xd9, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xda, 0x65, 0xbf, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x0a, 0xa6, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x89, 0xce, 0xfe, 0x60, 0xe1, 0x45, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xd1, 0xd2, 0xfe, 0xf0, 0x5e, 0x50, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x24, 0x58, 0xfb, 0xc3, 0xd3, 0x3b, 0xb5, 0x1a, 0xac, 0x4e, 0x3d, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0x9d, 0x7a, 0xd8, 0x00, 0x5e, 0x62, 0x61, 0x73, 0x65, 0x35, 0x38, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xd1, 0xd9, 0x7e, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x84, 0x72, 0xfb, 0x83, 0xa5, 0x21, 0x8e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x74, 0x83, 0xfb, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x12, 0x37, 0xee, 0x37, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x87, 0xea, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x92, 0xcc, 0xfd, 0xe1, 0x31, 0x99, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xa9, 0x4c, 0xf7, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x8a, 0x57, 0xa8, 0x18, 0x58, 0xf1, 0x0a, 0x85, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x8a, 0x57, 0xe8, 0x18, 0x58, 0xf1, 0x0a, 0x25, 0x87, 0x0f, 0x56, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe2, 0x15, 0x5a, 0x06, 0x56, 0xbc, 0x42, 0xd1, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x78, 0x85, 0x9e, 0x83, 0x25, 0xe9, 0x91, 0x87, 0x1f, 0x6a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe2, 0x15, 0x9a, 0x06, 0x56, 0xbc, 0x42, 0xdf, 0x86, 0x3f, 0x97, 0x06, 0x1f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x78, 0x85, 0xae, 0x83, 0xa5, 0xff, 0x91, 0x07, 0x27, 0x3d, 0xd1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xea, 0xd9, 0xfd, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x89, 0x7c, 0xf7, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0xfe, 0xe1, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x4c, 0xde, 0x1f, 0x2c, 0xbc, 0x08, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xe4, 0xde, 0x1f, 0xde, 0x0b, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x2a, 0x7d, 0x7f, 0x78, 0x7a, 0xa7, 0x66, 0x0d, 0x96, 0xec, 0x18, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x2c, 0xd9, 0x31, 0x6c, 0x00, 0x5f, 0x33, 0xb6, 0xb7, 0x30, 0xba, 0x34, 0xb7, 0x33, 0x10, 0xb8, 0xb7, 0x34, 0x37, 0xba, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xe8, 0x7e, 0xbf, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x79, 0x85, 0x74, 0x60, 0xcd, 0x2b, 0x2c, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xcd, 0x2b, 0xe4, 0x07, 0xcb, 0x9f, 0x24, 0x0f, 0x52, 0xaf, 0x8d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x52, 0x02, 0xfe, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x89, 0x1e, 0xf8, 0x1b, 0x14, 0x93, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xf3, 0x0a, 0x83, 0x81, 0x3d, 0xaf, 0x30, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xf6, 0xbc, 0xc2, 0x62, 0x60, 0xcf, 0x2b, 0x6c, 0x0e, 0x8e, 0x5a, 0x27, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0xf3, 0x0a, 0xa3, 0x81, 0x3d, 0xaf, 0xb0, 0x3a, 0x08, 0xd3, 0xb1, 0x0e, 0x0f, 0xee, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd2, 0x6d, 0xf0, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x6a, 0xc2, 0x3f, 0x38, 0x11, 0xb4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x92, 0xde, 0xf0, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x2b, 0xc4, 0x3f, 0x48, 0x59, 0x6e, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0x72, 0xe2, 0x6f, 0x78, 0x16, 0xef, 0x20, 0x25, 0x16, 0x7f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0x05, 0xe3, 0x6f, 0x78, 0x16, 0xef, 0x20, 0xbd, 0x1a, 0x7f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x7e, 0x8e, 0x7f, 0x50, 0x6c, 0x2b, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd2, 0x03, 0xf2, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0xb9, 0xc8, 0xdf, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xa2, 0x57, 0x18, 0x0c, 0x2c, 0x7a, 0x85, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0xe8, 0x15, 0x16, 0x03, 0x8b, 0x5e, 0x61, 0x73, 0x70, 0xda, 0x3b, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xa2, 0x57, 0x18, 0x0d, 0x2c, 0x7a, 0x85, 0xd5, 0x41, 0x98, 0x8e, 0x75, 0x78, 0x70, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xf8, 0x92, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7a, 0x51, 0xfe, 0xc1, 0x89, 0xa0, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x7e, 0x96, 0xbf, 0xe1, 0x59, 0xbc, 0x83, 0x34, 0xbe, 0xfc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x0a, 0x64, 0xfe, 0x41, 0xb1, 0xad, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x51, 0xcd, 0xdf, 0x60, 0x01, 0x66, 0xd3, 0x06, 0x63, 0xfe, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x0c, 0x27, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x65, 0x43, 0x01, 0x07, 0x29, 0xcb, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x35, 0x4f, 0x01, 0x07, 0xc5, 0xb6, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xa5, 0x15, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5a, 0xb2, 0x80, 0x83, 0x35, 0x1b, 0x6f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf5, 0x70, 0x01, 0x07, 0xc5, 0xb6, 0x72, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xf9, 0x37, 0x7f, 0x83, 0x82, 0x34, 0x76, 0x70, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x56, 0x9d, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xea, 0x7a, 0xfe, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xe9, 0x01, 0xfa, 0x07, 0x2b, 0x45, 0x13, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x89, 0x23, 0xfa, 0x87, 0xc7, 0x64, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0x16, 0xe9, 0x1f, 0xa4, 0x6b, 0x3a, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x12, 0xbf, 0xf4, 0x37, 0x28, 0x3a, 0x68, 0x07, 0x2f, 0x37, 0x48, 0xb5, 0x71, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xef, 0xe9, 0x6f, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0xc1, 0xcb, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x7b, 0x85, 0xc5, 0xc0, 0xb2, 0x57, 0xd8, 0x1c, 0x1c, 0x4f, 0x4e, 0x0e, 0xc2, 0x74, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x22, 0xa9, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x22, 0xaa, 0xfe, 0x86, 0x07, 0x25, 0x37, 0x48, 0xec, 0x3f, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x69, 0xbe, 0xfa, 0x07, 0xa5, 0x90, 0xfa, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x61, 0x5c, 0x7f, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb4, 0x7c, 0xfd, 0x0d, 0x6f, 0xeb, 0x6c, 0x50, 0x3c, 0x70, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x02, 0xd9, 0x3f, 0x28, 0x46, 0x6a, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0xea, 0xec, 0x6f, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x73, 0x63, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x05, 0x6a, 0x7f, 0x83, 0x24, 0x03, 0xc2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa2, 0xd9, 0xfe, 0x86, 0x07, 0x25, 0x37, 0x38, 0x6c, 0xc3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x34, 0xbe, 0xfd, 0x83, 0x52, 0x48, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x88, 0xba, 0x7f, 0x90, 0x34, 0xe3, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0xa0, 0xde, 0x3f, 0x28, 0x27, 0xa0, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x49, 0xf1, 0xfb, 0x07, 0x29, 0x43, 0x4e, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x24, 0x06, 0xfe, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x12, 0x43, 0xf8, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0xbe, 0xe1, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0x89, 0x36, 0x51, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xb5, 0x89, 0xff, 0xa0, 0x14, 0x52, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0xca, 0xf1, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x8e, 0xc8, 0xbf, 0xe1, 0x41, 0xc9, 0x0d, 0xd2, 0xd1, 0xa1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xb2, 0x27, 0xff, 0x41, 0x29, 0xa4, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x1f, 0xe6, 0x3f, 0x48, 0x9a, 0x71, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x7e, 0xf3, 0x6f, 0xf8, 0x11, 0x66, 0xe0, 0xe7, 0xc8, 0xd8, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0xef, 0xf3, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x0a, 0xd1, 0x7f, 0x90, 0x8a, 0x2a, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x42, 0xe9, 0xdf, 0xf0, 0xb6, 0xce, 0x06, 0xab, 0x5e, 0x27, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0xfb, 0xf4, 0x6f, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x40, 0xd5, 0xbf, 0xe1, 0x6d, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x9e, 0xd6, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xea, 0x5f, 0xff, 0x86, 0x07, 0x25, 0x37, 0x48, 0xb4, 0x89, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x89, 0x95, 0xfd, 0x07, 0xa5, 0x90, 0xfa, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x4d, 0xb7, 0x7f, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x64, 0xe8, 0xfe, 0x0d, 0x0f, 0x4a, 0x6e, 0x90, 0x8e, 0x0e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x52, 0xcd, 0xfb, 0x0f, 0x4a, 0x21, 0xf5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf2, 0x82, 0xff, 0xc1, 0x62, 0x14, 0xca, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x6a, 0x89, 0xff, 0x86, 0x1f, 0x61, 0x06, 0x7e, 0x8e, 0x8c, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x85, 0xc8, 0x7f, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x84, 0x2c, 0xff, 0x83, 0x54, 0x54, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x2a, 0x9c, 0xff, 0xc1, 0x62, 0x14, 0xca, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xca, 0xa1, 0xff, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x29, 0x9b, 0xfe, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0xc5, 0xfa, 0x6f, 0x78, 0x50, 0x72, 0x83, 0xc3, 0x36, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x38, 0xf6, 0x3f, 0x28, 0x85, 0xd4, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x09, 0xec, 0xfe, 0x07, 0x8b, 0x51, 0x28, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xa9, 0x05, 0xff, 0x07, 0xa9, 0xa8, 0x52, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd2, 0x3d, 0xfe, 0x0f, 0x12, 0x78, 0x9c, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xe9, 0x45, 0xff, 0x1b, 0x1c, 0xc7, 0x26, 0x36, 0x28, 0xd1, 0x95, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xe9, 0x60, 0xff, 0x1b, 0xde, 0x66, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xc9, 0x76, 0xff, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0x30, 0xfe, 0x1f, 0x24, 0xf0, 0x38, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x64, 0xd1, 0xff, 0x83, 0xa4, 0x19, 0xa7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x52, 0xef, 0xff, 0x06, 0x49, 0x06, 0x84, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd4, 0xe9, 0xff, 0x83, 0x13, 0x41, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x91, 0xff, 0x7f, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x45, 0x09, 0x00, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0xa3, 0x00, 0xd8, 0xf0, 0xa0, 0xe4, 0x06, 0x89, 0x36, 0x51, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xd9, 0x07, 0xc0, 0x41, 0x29, 0xa4, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0x1e, 0x03, 0x70, 0x90, 0x34, 0xe3, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xad, 0x0f, 0xc0, 0x86, 0x67, 0xf1, 0x0e, 0x8a, 0x10, 0xe8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xe6, 0x09, 0x60, 0xc3, 0xb3, 0x78, 0x07, 0xeb, 0xb2, 0x00, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8b, 0xc6, 0x00, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x58, 0xe9, 0x06, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xea, 0x3c, 0x80, 0x83, 0x95, 0xa2, 0x89, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd5, 0x8b, 0x00, 0x87, 0xc7, 0x64, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xe8, 0x04, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x15, 0x2a, 0xc0, 0x86, 0x07, 0x25, 0x37, 0x48, 0x66, 0x73, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcb, 0x66, 0x01, 0x0e, 0x4a, 0x21, 0xf5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfa, 0x62, 0x80, 0x83, 0xa4, 0x19, 0xa7, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x2c, 0xbb, 0x06, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0x8d, 0x38, 0xc0, 0xc1, 0x89, 0xa0, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0x60, 0x1e, 0x60, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x15, 0xfe, 0x00, 0x1b, 0xde, 0xd6, 0x19, 0xe0, 0x29, 0x23, 0x6b, 0x19, 0x7b, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xac, 0x83, 0x08, 0x38, 0x28, 0x27, 0xa0, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8b, 0x3a, 0x02, 0x0e, 0x8a, 0x91, 0xda, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xeb, 0x56, 0x02, 0x0e, 0x8a, 0x6d, 0xe5, 0x0e, 0xa7, 0x58, 0x6b, 0xb0, 0xcc, 0x63, 0x6f, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0x99, 0xc7, 0x5e, 0x03, 0xd0, 0x73, 0x02, 0x83, 0x77, 0xd2, 0x02, 0x27, 0x57, 0x66, 0x96, 0x86, 0x57, 0x46, 0x06, 0x22, 0x16, 0x36, 0x57, 0x16, 0x63, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4b, 0xfa, 0x02, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xf5, 0xaf, 0x30, 0x1a, 0x58, 0xff, 0x0a, 0xcb, 0x0d, 0x7f, 0x2e, 0x6d, 0x50, 0xd4, 0x16, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0xff, 0x0a, 0xc3, 0x83, 0x45, 0x9a, 0x95, 0x87, 0x1f, 0x6a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfa, 0xc4, 0x80, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xfd, 0x2b, 0x6c, 0x07, 0xd6, 0xbf, 0xc2, 0xfe, 0xe0, 0xa4, 0x27, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd6, 0x50, 0x06, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xcc, 0x33, 0xe0, 0x60, 0x11, 0xbc, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xb5, 0x6a, 0xc0, 0xc1, 0x1a, 0xf4, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x92, 0xdb, 0x80, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x96, 0x09, 0x07, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xb0, 0xb4, 0x39, 0xe0, 0x60, 0x31, 0x72, 0xe3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x60, 0xa5, 0x77, 0xc0, 0xe1, 0x31, 0x99, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8b, 0xdf, 0x03, 0x0e, 0x4a, 0x3f, 0xe3, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xc8, 0x7b, 0x6f, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x6b, 0xb0, 0x6e, 0xc4, 0x71, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0xdd, 0x88, 0x63, 0x03, 0xf0, 0x65, 0xf6, 0x26, 0xd7, 0x16, 0x46, 0x07, 0x92, 0xe6, 0x06, 0xe2, 0x56, 0xd7, 0x56, 0x26, 0x97, 0x36, 0x06, 0x22, 0x16, 0x36, 0x57, 0xae, 0x04, 0xe0, 0x59, 0x9a, 0x1b, 0x88, 0x8b, 0x58, 0xd8, 0x1c, 0x0b, 0x88, 0xd9, 0x9b, 0x5c, 0x5b, 0x18, 0x1d, 0x88, 0x4b, 0x5b, 0x9a, 0x1b, 0x08, 0x59, 0xda, 0x59, 0x1a, 0xdd, 0x1c, 0xc8, 0x9b, 0x19, 0x88, 0x0b, 0xda, 0x1b, 0x1b, 0xc8, 0x5d, 0x1a, 0x1d, 0x1a, 0x88, 0x0b, 0x5c, 0x98, 0xdc, 0x4a, 0x00, 0x1e, 0xb6, 0x80, 0xb8, 0xa0, 0xbd, 0xb1, 0x81, 0xa4, 0xcd, 0x81, 0xc0, 0xc9, 0xbd, 0x8d, 0x95, 0xcd, 0xcd, 0x95, 0x91, 0x81, 0xb0, 0x95, 0x85, 0xcd, 0xd1, 0xb5, 0xcc, 0xa5, 0x9d, 0xb9, 0xa5, 0x99, 0xa5, 0x8d, 0x85, 0xb9, 0xd1, 0x81, 0x90, 0xa5, 0x9d, 0xa5, 0xd1, 0x81, 0x98, 0xa5, 0xc9, 0xcd, 0xd1, 0x4b, 0x00, 0x9e, 0xb6, 0x80, 0x84, 0xb1, 0xb1, 0x81, 0x84, 0xd9, 0x85, 0xa5, 0xb1, 0x85, 0x89, 0xb1, 0x95, 0x81, 0x90, 0xa5, 0x9d, 0xa5, 0xd1, 0xcd, 0x81, 0xa4, 0xb9, 0x81, 0xb8, 0xa0, 0xbd, 0xb1, 0x81, 0xdc, 0xa5, 0xb1, 0xb1, 0x81, 0x88, 0x95, 0x81, 0xc0, 0xc9, 0xbd, 0x8d, 0x95, 0xcd, 0xcd, 0x95, 0x91, 0xb1, 0x80, 0x88, 0xd5, 0xd1, 0x8b, 0x01, 0x78, 0xe9, 0xd2, 0x96, 0xe6, 0x06, 0x42, 0x96, 0x76, 0x96, 0x46, 0x37, 0x07, 0x32, 0x16, 0xe6, 0x06, 0x52, 0x86, 0x37, 0x56, 0x56, 0x46, 0x06, 0x42, 0x87, 0x56, 0x06, 0xe2, 0x56, 0xd7, 0x26, 0x56, 0x26, 0x07, 0x12, 0x66, 0x17, 0x96, 0xc6, 0x16, 0x26, 0xc6, 0x56, 0x06, 0x92, 0xe6, 0x06, 0xe2, 0x82, 0xf6, 0xc6, 0x2e, 0x01, 0x68, 0xd9, 0x02, 0xe2, 0x02, 0x17, 0x26, 0x07, 0x82, 0x16, 0xe6, 0x46, 0xc6, 0x56, 0x36, 0x07, 0x12, 0xc6, 0xc6, 0x06, 0x12, 0x36, 0x36, 0x56, 0xd7, 0x56, 0xc7, 0x16, 0x46, 0x57, 0x46, 0x06, 0xf2, 0x56, 0x47, 0x07, 0x57, 0x47, 0x07, 0xf2, 0xe6, 0x06, 0x52, 0x16, 0x36, 0x86, 0x06, 0x32, 0x16, 0xc6, 0xc6, 0xc6, 0x16, 0x03, 0xf0, 0x2c, 0xcc, 0x8d, 0x0c, 0x64, 0x2c, 0xcc, 0x0d, 0xa4, 0x8c, 0x2c, 0x8d, 0x0e, 0x24, 0x8d, 0x8e, 0x05, 0x04, 0x4e, 0xae, 0x0c, 0xae, 0xcc, 0x8d, 0x0c, 0xe4, 0x4d, 0x0e, 0x24, 0x0c, 0x0e, 0xae, 0xcc, 0x8d, 0x0c, 0x84, 0x2c, 0xed, 0x2c, 0x8d, 0x6e, 0x8e, 0x05, 0xc4, 0x64, 0x5c, 0x02, 0xd0, 0xbc, 0x05, 0xa4, 0xce, 0x8d, 0x2e, 0x8d, 0x0d, 0xc4, 0x05, 0xed, 0x8d, 0x0d, 0x24, 0x6d, 0x0e, 0xa4, 0x0c, 0x0f, 0x2d, 0xac, 0x6e, 0x8e, 0xae, 0x8c, 0x8c, 0x05, 0xc4, 0x05, 0x2e, 0x4c, 0xee, 0x64, 0x0e, 0x64, 0x2e, 0xac, 0x0d, 0x8e, 0xad, 0x0c, 0x24, 0x6d, 0x0e, 0x64, 0x8b, 0x0f, 0x84, 0x2c, 0xed, 0x2c, 0x8d, 0x0e, 0xe4, 0xad, 0x8e, 0x0e, 0xae, 0x8e, 0xae, 0x8b, 0x2d, 0x06, 0xf0, 0x3e, 0x57, 0x27, 0x36, 0x57, 0x16, 0x57, 0x57, 0xe6, 0x46, 0xc7, 0x96, 0xc7, 0x02, 0x92, 0x46, 0x77, 0x32, 0x07, 0xb2, 0x65, 0x02, 0x02, 0x03, 0xf2, 0x56, 0x47, 0x07, 0x57, 0x47, 0xd7, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x35, 0xf8, 0xde, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xc1, 0x42, 0x32, 0xb0, 0x0e, 0x16, 0x0a, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x75, 0xb0, 0x10, 0x0d, 0xac, 0x83, 0x85, 0xdd, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x0e, 0x16, 0xb2, 0x81, 0x75, 0xb0, 0x30, 0xd8, 0xf0, 0xe7, 0xd2, 0x80, 0x27, 0x16, 0x36, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x07, 0x0b, 0xf9, 0xc1, 0x82, 0x7f, 0xcb, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x07, 0x0b, 0x8b, 0x81, 0x75, 0xb0, 0x30, 0xdb, 0xf0, 0xe7, 0xd2, 0x86, 0x6e, 0x00, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xc1, 0xc2, 0xea, 0x60, 0xa1, 0xc5, 0xe5, 0xe1, 0x87, 0x9a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x0e, 0x16, 0x86, 0x03, 0xeb, 0x60, 0xa1, 0x6f, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0x5c, 0x98, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x1d, 0x2c, 0x8c, 0x0f, 0x56, 0xb6, 0x5c, 0x6e, 0x10, 0x4e, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x07, 0x0b, 0xfb, 0x81, 0x75, 0xb0, 0xd0, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x83, 0x85, 0x82, 0x81, 0x75, 0xb0, 0xd0, 0x70, 0xf8, 0x60, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xeb, 0x60, 0xa1, 0x62, 0x60, 0x1d, 0x2c, 0x74, 0x1c, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x3a, 0x58, 0x28, 0x19, 0x58, 0x07, 0x0b, 0x45, 0x07, 0x27, 0x3d, 0xd1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x83, 0x85, 0xaa, 0x81, 0x75, 0xb0, 0x50, 0x77, 0x70, 0xd2, 0x13, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x91, 0x7c, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfb, 0x60, 0x21, 0x19, 0xd8, 0x07, 0x0b, 0xf1, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb4, 0x37, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x3e, 0x58, 0x48, 0x0f, 0x16, 0x0b, 0x5e, 0x1e, 0x7e, 0xa8, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xc9, 0x3c, 0xdf, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x42, 0x58, 0x48, 0x06, 0x16, 0xc2, 0x42, 0x7a, 0x70, 0xd2, 0x13, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x29, 0x50, 0xdf, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x94, 0x7d, 0x6f, 0x78, 0x84, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xac, 0xf7, 0xbd, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x22, 0xe4, 0xf7, 0xe1, 0xc1, 0x9b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x6e, 0xfa, 0xbd, 0xe1, 0x6d, 0x9d, 0x0d, 0x16, 0x1b, 0x5e, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0xfd, 0xfd, 0xde, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xb1, 0xfa, 0xfb, 0xf0, 0xe0, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x61, 0xff, 0x3e, 0x48, 0x97, 0x18, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x9c, 0x00, 0x7e, 0x50, 0x6c, 0x2b, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x94, 0x10, 0xf0, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x28, 0xa1, 0x63, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x13, 0x16, 0x92, 0x81, 0x9d, 0xb0, 0x30, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x76, 0xc2, 0x42, 0x34, 0xb0, 0x13, 0x16, 0xf2, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x64, 0x61, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9d, 0xb0, 0x10, 0x1f, 0xac, 0xbe, 0xbf, 0x3c, 0xfc, 0x50, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9d, 0xb0, 0x30, 0x18, 0xd8, 0x09, 0x0b, 0xab, 0x0d, 0x7f, 0x2e, 0x6d, 0x90, 0xe4, 0xe5, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x27, 0x2c, 0x8c, 0x0e, 0x16, 0x3d, 0x60, 0x1e, 0x7e, 0xa8, 0xe9, 0x20, 0x4c, 0xc7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x69, 0x36, 0xe0, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x33, 0x81, 0x1f, 0xfe, 0xa2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xc9, 0x81, 0x1f, 0xac, 0x06, 0xbe, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x34, 0x82, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0x15, 0x03, 0x97, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x52, 0x4e, 0xc1, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x48, 0xb2, 0x18, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x09, 0x79, 0xe1, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0x3b, 0x86, 0x6f, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x4a, 0x1a, 0x7e, 0x78, 0xf0, 0x66, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0xed, 0x86, 0x1f, 0xa4, 0x4b, 0x8c, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x12, 0xa7, 0xc3, 0x0f, 0x0f, 0xde, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x14, 0xf5, 0xf0, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x12, 0x01, 0xc4, 0x0f, 0xaf, 0xf9, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x12, 0x44, 0xc4, 0x0f, 0xd2, 0x25, 0xc6, 0x5a, 0x83, 0x85, 0xc2, 0x97, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xe5, 0x47, 0x7c, 0xc3, 0xdb, 0x3a, 0x1b, 0xac, 0xde, 0xbf, 0x6c, 0x0d, 0x4a, 0x74, 0xe5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x12, 0x0c, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xda, 0x35, 0xf8, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x1b, 0x73, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xfd, 0x1e, 0x7c, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe4, 0x86, 0xf0, 0xc3, 0x83, 0x37, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x8d, 0x24, 0xfc, 0x60, 0x79, 0x1f, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xfd, 0x27, 0xfc, 0x20, 0x69, 0xe2, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xb2, 0x15, 0x7e, 0x50, 0x6c, 0x2b, 0xd7, 0x6a, 0xb0, 0x42, 0x11, 0x71, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0x85, 0x22, 0x62, 0x03, 0xe0, 0xa7, 0xd9, 0x9b, 0x5c, 0x5b, 0x18, 0x1d, 0xc8, 0x89, 0xcb, 0x49, 0xcb, 0x5c, 0x19, 0x5c, 0x98, 0x5c, 0x18, 0x5d, 0x19, 0x19, 0x08, 0x59, 0xda, 0x59, 0x1a, 0x1d, 0xc8, 0x5c, 0x59, 0x5c, 0x5d, 0x99, 0xdb, 0x58, 0xd9, 0x1c, 0x48, 0x9a, 0x1b, 0x88, 0x5b, 0x5d, 0x5b, 0x99, 0x5c, 0xda, 0x18, 0x88, 0x58, 0xd8, 0x5c, 0xb9, 0x12, 0x80, 0x66, 0x69, 0x6e, 0x20, 0x2e, 0x62, 0x61, 0x73, 0x2c, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x64, 0x69, 0x67, 0x69, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x2e, 0x68, 0x6f, 0x6c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x2e, 0x64, 0x75, 0x67, 0x6c, 0x09, 0x40, 0x97, 0xbb, 0x34, 0x3a, 0x34, 0x90, 0x13, 0x97, 0x13, 0x90, 0xb9, 0x32, 0xb8, 0x30, 0xb9, 0x30, 0xba, 0x37, 0xb9, 0x39, 0x90, 0x32, 0xbb, 0x32, 0xb9, 0x3c, 0x10, 0x97, 0xb3, 0x37, 0x38, 0x10, 0xb2, 0xb4, 0xb3, 0x34, 0xba, 0x39, 0xd7, 0x1a, 0xac, 0x39, 0xb1, 0x5c, 0x02, 0xf0, 0xb4, 0x05, 0xc4, 0x85, 0xac, 0xee, 0x0c, 0x04, 0x2d, 0xcc, 0x8d, 0x8c, 0xad, 0x6c, 0x0e, 0x24, 0xcd, 0x8d, 0x2c, 0xcd, 0x2e, 0x8d, 0xac, 0x2e, 0x8c, 0x0d, 0x84, 0x2c, 0xed, 0x2c, 0x8d, 0x6e, 0x8e, 0x05, 0xe4, 0xad, 0x8e, 0x0e, 0xae, 0x8e, 0x0e, 0x24, 0x6d, 0x0e, 0x04, 0x4e, 0xae, 0x0c, 0xae, 0xcc, 0x8d, 0xac, 0x8c, 0x5c, 0x02, 0xf0, 0xb2, 0x05, 0xa4, 0xcc, 0xae, 0x4c, 0x2e, 0x0f, 0x64, 0xae, 0xec, 0xac, 0xad, 0xcc, 0x8d, 0x0e, 0x44, 0xac, 0x8e, 0x0e, 0x84, 0x0e, 0xad, 0x0c, 0x84, 0x2d, 0x6c, 0x8e, 0x0e, 0x24, 0x6d, 0x0e, 0x44, 0xaf, 0x4c, 0xee, 0xad, 0x05, 0x2e, 0x8c, 0x8c, 0xac, 0x8c, 0x0c, 0x84, 0xee, 0x0d, 0xc4, 0xe5, 0xec, 0x0d, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xca, 0x25, 0xbe, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xec, 0x8c, 0x85, 0x64, 0x60, 0x67, 0x2c, 0x94, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x63, 0x21, 0x1a, 0xd8, 0x19, 0x0b, 0xbb, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x67, 0x2c, 0x64, 0x03, 0x3b, 0x63, 0x61, 0xb0, 0xe1, 0xcf, 0xa5, 0x0d, 0x56, 0x0c, 0x5c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0x19, 0x0b, 0xf9, 0xc1, 0x0a, 0xb0, 0xcc, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0x19, 0x0b, 0x8b, 0x81, 0x9d, 0xb1, 0x30, 0xdb, 0xf0, 0xe7, 0xd2, 0x80, 0x77, 0xf6, 0x06, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xd8, 0x19, 0x0b, 0xab, 0x83, 0x85, 0x77, 0x99, 0x87, 0x1f, 0x6a, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xce, 0x58, 0x18, 0x0e, 0xec, 0x8c, 0x85, 0x8e, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x64, 0x75, 0xe7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9d, 0xb1, 0x30, 0x3e, 0x58, 0xf3, 0x98, 0xb9, 0x41, 0x38, 0x8d, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x67, 0x2c, 0xec, 0x07, 0x76, 0xc6, 0x42, 0xc1, 0xe1, 0x87, 0x9a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3b, 0x63, 0xa1, 0x61, 0x60, 0x67, 0x2c, 0x54, 0x1c, 0x7e, 0xa8, 0x69, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xea, 0x89, 0x6f, 0x50, 0x74, 0x1a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd2, 0x1f, 0xc5, 0x0f, 0x96, 0x86, 0x38, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd2, 0x62, 0xc5, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x2c, 0x16, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x75, 0x5b, 0xfc, 0x20, 0x05, 0x37, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x18, 0x30, 0x7e, 0xb0, 0x16, 0x07, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xcc, 0x31, 0xbe, 0xe1, 0x6d, 0x9d, 0x0d, 0x56, 0xee, 0x65, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xd5, 0x66, 0xfc, 0xf0, 0xe0, 0x4d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x15, 0x6a, 0x7c, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x1b, 0x0b, 0xc9, 0xc0, 0xda, 0x58, 0xd8, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6b, 0x63, 0x21, 0x1a, 0x58, 0x1b, 0x0b, 0xf9, 0x86, 0x3f, 0x97, 0x36, 0x28, 0x2f, 0x2f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x8d, 0x85, 0xf8, 0x60, 0x91, 0x80, 0xe6, 0xe1, 0x83, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x8d, 0x85, 0xc1, 0xc0, 0xda, 0x58, 0x58, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x9b, 0x2b, 0x3b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x8d, 0x85, 0xd1, 0xc1, 0xba, 0x0c, 0xcd, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x1b, 0x0b, 0xb3, 0x81, 0xb5, 0xb1, 0x30, 0xdf, 0xf0, 0xe7, 0xd2, 0x06, 0xc7, 0x0c, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6b, 0x63, 0x61, 0x7a, 0xb0, 0x20, 0x46, 0xf3, 0xe0, 0xa4, 0x27, 0xda, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x54, 0x1b, 0xdf, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0xff, 0x8d, 0x1f, 0x9c, 0x08, 0xda, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x69, 0xa1, 0xe3, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0xdb, 0x8e, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0xf2, 0xf2, 0xb2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x5a, 0xf3, 0xf8, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x92, 0xc7, 0xc7, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc5, 0xb1, 0xb0, 0x18, 0x58, 0x1c, 0x0b, 0xab, 0x83, 0x93, 0x9e, 0xe8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0xc1, 0x1f, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x89, 0x81, 0xfc, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x95, 0x84, 0xfc, 0xa0, 0xa0, 0xc8, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xfa, 0x90, 0x6f, 0x70, 0x6a, 0x38, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x59, 0x97, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0x85, 0x1d, 0x9a, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf4, 0x29, 0xf2, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x4a, 0x1a, 0xf9, 0x86, 0x4b, 0x6a, 0x83, 0x55, 0x23, 0x8e, 0x6b, 0x50, 0xa2, 0x2b, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb4, 0x41, 0xf2, 0x83, 0x83, 0x96, 0x67, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc4, 0x53, 0xf2, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x52, 0x77, 0xc9, 0x0f, 0xd6, 0xe2, 0x60, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd2, 0xa6, 0xc9, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x49, 0x27, 0x3f, 0x58, 0x93, 0xa5, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0xff, 0x27, 0x3f, 0x3c, 0x78, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x12, 0x2d, 0xca, 0x0f, 0x56, 0x81, 0x67, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd2, 0x63, 0xca, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe5, 0xb1, 0x10, 0x0c, 0x2c, 0x8f, 0x85, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x3c, 0x16, 0x92, 0x81, 0xe5, 0xb1, 0x10, 0x1d, 0x3e, 0x58, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0xf2, 0x58, 0xc8, 0x06, 0x96, 0xc7, 0x42, 0xbc, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x63, 0x21, 0x3d, 0x58, 0x52, 0xaf, 0x79, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcb, 0x63, 0x21, 0x1f, 0x58, 0x1e, 0x0b, 0xab, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x1e, 0x0b, 0x8b, 0x83, 0x45, 0x0b, 0x9b, 0x07, 0x27, 0x3d, 0xd1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf2, 0x52, 0xf9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x89, 0x60, 0xe5, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0xdb, 0x95, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0x55, 0x93, 0x99, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd2, 0x2f, 0xcb, 0x0f, 0xef, 0x05, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x89, 0x2d, 0x3f, 0x3c, 0xbd, 0xd3, 0xe1, 0x14, 0x5b, 0x83, 0xf5, 0xd0, 0x80, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xeb, 0xa1, 0x01, 0x1b, 0x00, 0x8f, 0xcc, 0xde, 0xe4, 0xda, 0xc2, 0xe8, 0x40, 0x4e, 0x5c, 0x4e, 0x5a, 0xe0, 0xe4, 0xca, 0xcc, 0xd2, 0xf0, 0xca, 0xc8, 0x40, 0xc4, 0xd8, 0xde, 0xe2, 0xe6, 0x40, 0xd2, 0xdc, 0x40, 0xdc, 0xea, 0xda, 0xca, 0xe4, 0xd2, 0xc6, 0x40, 0xc4, 0xc2, 0xe6, 0xca, 0x95, 0x00, 0x7c, 0x4d, 0x73, 0x03, 0x71, 0x11, 0x0b, 0x9b, 0x63, 0x01, 0x31, 0x7b, 0x93, 0x03, 0x71, 0x11, 0xab, 0xd3, 0x03, 0x11, 0x63, 0x7b, 0x8b, 0x9b, 0x03, 0x81, 0x01, 0xa1, 0x7b, 0x03, 0x71, 0x21, 0x7b, 0x83, 0x63, 0x01, 0x31, 0x7b, 0x93, 0x6b, 0x0b, 0xa3, 0x03, 0x09, 0xa3, 0x03, 0x61, 0x2b, 0x0b, 0x9b, 0xa3, 0x03, 0x79, 0x73, 0x2b, 0x97, 0x00, 0xfa, 0xc9, 0xd2, 0xce, 0xd2, 0xe8, 0x40, 0xde, 0xcc, 0x40, 0x5c, 0xd0, 0xde, 0xd8, 0x58, 0x40, 0xe0, 0xe4, 0xca, 0xcc, 0xd2, 0xf0, 0xca, 0xc8, 0x40, 0xee, 0xd2, 0xe8, 0xd0, 0x40, 0x4e, 0x5c, 0x4e, 0x2b, 0x01, 0x3c, 0xb7, 0x80, 0xd4, 0xcd, 0x95, 0x91, 0x81, 0xbc, 0xb9, 0xb1, 0xe5, 0x81, 0x98, 0xbd, 0xc9, 0x81, 0x00, 0xa5, 0xa9, 0x80, 0x84, 0x91, 0x91, 0xc9, 0x95, 0xcd, 0xcd, 0x95, 0xcd, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x12, 0xee, 0xcb, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x35, 0xb2, 0x90, 0x0c, 0xac, 0x91, 0x85, 0xaa, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x8d, 0x2c, 0x44, 0x03, 0x6b, 0x64, 0x61, 0xbd, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xac, 0x91, 0x85, 0x6c, 0x60, 0x8d, 0x2c, 0x0c, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0x89, 0xd5, 0xe9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xc8, 0x42, 0x7e, 0xb0, 0xbc, 0x77, 0xf3, 0xf0, 0x43, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xc8, 0xc2, 0x62, 0x60, 0x8d, 0x2c, 0xcc, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x8a, 0x81, 0xcb, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6b, 0x64, 0x61, 0x75, 0xb0, 0xac, 0x7a, 0xf3, 0xf0, 0x43, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xc8, 0xc2, 0x6e, 0x60, 0x8d, 0x2c, 0x8c, 0x37, 0xfc, 0xb9, 0x34, 0xe0, 0x91, 0xbd, 0xc1, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xd6, 0xc8, 0xc2, 0xf6, 0x60, 0x39, 0xfb, 0xe6, 0xe1, 0x87, 0x9a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x46, 0x16, 0xe6, 0x03, 0x6b, 0x64, 0xa1, 0x69, 0xc3, 0x9f, 0x4b, 0x1b, 0xac, 0x9a, 0xcc, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x46, 0x16, 0x2a, 0x0e, 0x56, 0x12, 0x70, 0x6e, 0x10, 0x4e, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x58, 0x23, 0x0b, 0x2d, 0x03, 0x6b, 0x64, 0xa1, 0xe6, 0xf0, 0x43, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x35, 0xb2, 0xd0, 0x33, 0xb0, 0x46, 0x16, 0x8a, 0x0e, 0x3f, 0xd4, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd2, 0x2b, 0xcc, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3d, 0xb2, 0x90, 0x0c, 0xec, 0x91, 0x85, 0x78, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0x36, 0xbc, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x47, 0x16, 0xd2, 0x83, 0x35, 0x38, 0x9c, 0x87, 0x1f, 0x6a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x9a, 0x8b, 0xf9, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x48, 0x16, 0x92, 0x81, 0x45, 0xb2, 0x90, 0x1e, 0x9c, 0xf4, 0x44, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x72, 0x90, 0xf9, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xa9, 0x56, 0xe6, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xb1, 0x99, 0x1f, 0x1e, 0xbc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xc9, 0x82, 0xe6, 0x1b, 0xde, 0xd6, 0xd9, 0x60, 0x3d, 0xfc, 0x66, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf4, 0x4c, 0xf3, 0x83, 0x62, 0x5b, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0xc5, 0x9a, 0x6f, 0x50, 0x18, 0xaa, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd2, 0x89, 0xcd, 0x0f, 0x16, 0xe1, 0xc9, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x84, 0x6e, 0xf3, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0x0f, 0xee, 0x8d, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0xc9, 0x9b, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x86, 0x70, 0x7e, 0x78, 0xcd, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x9c, 0x72, 0x7e, 0xb0, 0x02, 0x8e, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x40, 0x74, 0xbe, 0xc1, 0xa9, 0xe1, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x40, 0x8b, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8a, 0x32, 0xfa, 0x41, 0x49, 0x34, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x7d, 0x47, 0xdf, 0xf0, 0xb6, 0xce, 0x06, 0xeb, 0x83, 0x37, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x2d, 0xa4, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xfe, 0x91, 0xbe, 0xe1, 0x6d, 0x9d, 0x0d, 0x96, 0x36, 0x72, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0xb1, 0x49, 0x3f, 0x3c, 0x26, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x11, 0x2a, 0xfd, 0x60, 0x35, 0xf0, 0x65, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x29, 0xeb, 0x7c, 0x83, 0xa2, 0xd3, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xe8, 0x76, 0xbe, 0xe1, 0x92, 0xda, 0x60, 0xd5, 0x88, 0xe3, 0x1a, 0x94, 0xe8, 0xca, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x19, 0xf1, 0x7c, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xc5, 0x71, 0x9c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x85, 0xf4, 0xfc, 0x60, 0x15, 0x32, 0x67, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x92, 0x92, 0xcf, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0xea, 0x3e, 0x3f, 0x58, 0x8b, 0x83, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0xab, 0x3f, 0x3f, 0x3c, 0x26, 0xd3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x7c, 0x40, 0xdf, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x16, 0xca, 0x42, 0x30, 0xb0, 0x50, 0x16, 0x66, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x42, 0x59, 0x48, 0x06, 0x16, 0xca, 0x42, 0x74, 0xf8, 0x60, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0b, 0x65, 0x21, 0x1b, 0x58, 0x28, 0x0b, 0xf1, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x94, 0x85, 0xf4, 0x60, 0xb1, 0x4b, 0xe7, 0xe1, 0x87, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x2c, 0x94, 0x85, 0x7c, 0x60, 0xa1, 0x2c, 0xac, 0x36, 0xfc, 0xb9, 0x34, 0xf8, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0xa1, 0x2c, 0x2c, 0x0e, 0x96, 0x13, 0x75, 0x1e, 0x9c, 0xf4, 0x44, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x69, 0x29, 0xe8, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xf8, 0xa0, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x46, 0x85, 0x7e, 0xb0, 0x76, 0x65, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x5a, 0x87, 0x7e, 0x78, 0x2f, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xba, 0x23, 0xfa, 0xe1, 0xe9, 0x9d, 0x66, 0x0d, 0x96, 0x7f, 0x55, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x2c, 0xff, 0xaa, 0x6c, 0x00, 0x7c, 0x32, 0x7b, 0x93, 0x6b, 0x0b, 0xa3, 0x03, 0x49, 0x73, 0x03, 0x71, 0xab, 0x6b, 0x2b, 0x93, 0x4b, 0x1b, 0x03, 0x11, 0x0b, 0x9b, 0x2b, 0x63, 0x01, 0xb9, 0x4b, 0xa3, 0x43, 0x03, 0x79, 0xab, 0xa3, 0x83, 0xab, 0xa3, 0x03, 0x61, 0x2b, 0x73, 0x3b, 0xa3, 0x43, 0x57, 0x02, 0xf0, 0xb8, 0x05, 0x84, 0x2d, 0x6d, 0xad, 0x0c, 0x64, 0xa5, 0xac, 0xad, 0x65, 0xec, 0x8d, 0x05, 0x44, 0xac, 0x8e, 0x0e, 0xc4, 0x05, 0x2e, 0x4c, 0xee, 0x64, 0x0e, 0x64, 0x2e, 0xac, 0x0d, 0x8e, 0xad, 0x0c, 0xe4, 0x2e, 0x8d, 0x8d, 0x0d, 0x44, 0xac, 0x0c, 0x64, 0x8b, 0x0f, 0x84, 0x2c, 0xed, 0x2c, 0x8d, 0x0e, 0xe4, 0xad, 0x8e, 0x0e, 0xae, 0x8e, 0xae, 0x5b, 0x0c, 0xc0, 0xf3, 0x37, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb3, 0x34, 0xb9, 0x39, 0x3a, 0x90, 0xb1, 0x30, 0x36, 0x36, 0x16, 0x10, 0xb9, 0xb2, 0xb3, 0x30, 0x39, 0x32, 0xb6, 0xb2, 0xb9, 0x39, 0x90, 0x37, 0x33, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0x30, 0xbb, 0xb0, 0x34, 0xb6, 0x30, 0x31, 0xb6, 0x32, 0x10, 0xb2, 0xb4, 0xb3, 0x34, 0xba, 0x39, 0x90, 0x34, 0x37, 0x10, 0x17, 0xb4, 0x37, 0x76, 0x09, 0xe0, 0xb3, 0x05, 0xa4, 0x6e, 0xae, 0x8c, 0x0c, 0xe4, 0xcd, 0x8d, 0x2d, 0x0f, 0xc4, 0xec, 0x4d, 0x0e, 0x04, 0x48, 0x4e, 0x05, 0xc4, 0x8c, 0xed, 0x2d, 0x8c, 0x6e, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xf2, 0x96, 0xbe, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x88, 0x85, 0x64, 0x60, 0x43, 0x2c, 0x4c, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x0d, 0xb1, 0x10, 0x0d, 0x6c, 0x88, 0x85, 0xc1, 0x86, 0x3f, 0x97, 0x36, 0x48, 0xab, 0x49, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x21, 0x16, 0xe2, 0x83, 0xb5, 0xf8, 0x9d, 0x07, 0xc7, 0x93, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x6c, 0x88, 0x85, 0xc5, 0xc0, 0x86, 0x58, 0x58, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0x81, 0x56, 0xbf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0x60, 0x43, 0x2c, 0xac, 0x0e, 0xd6, 0x41, 0x78, 0x1e, 0x9c, 0xf4, 0x44, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xc9, 0x88, 0xe9, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x86, 0x58, 0x28, 0x18, 0xd8, 0x10, 0x0b, 0x25, 0x07, 0x27, 0x3d, 0xd1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xca, 0x99, 0xbe, 0x41, 0x41, 0x1a, 0xbb, 0x06, 0x25, 0x74, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xc4, 0x42, 0x32, 0xb0, 0x22, 0x16, 0x76, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0xc0, 0x8a, 0x58, 0x88, 0x06, 0x56, 0xc4, 0x42, 0xbe, 0xe1, 0xcf, 0xa5, 0x01, 0x0f, 0xee, 0x6d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x22, 0x16, 0xe2, 0x83, 0xa5, 0x4c, 0x9e, 0x87, 0x0f, 0x56, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xb0, 0x22, 0x16, 0x06, 0x03, 0x2b, 0x62, 0x61, 0xb6, 0xe1, 0xcf, 0xa5, 0x0d, 0xce, 0x70, 0x32, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x56, 0xc4, 0xc2, 0xe8, 0x60, 0x05, 0x99, 0xe7, 0xc1, 0x51, 0xe8, 0xa4, 0x83, 0x30, 0x1d, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xc7, 0xa6, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x6a, 0x9c, 0xbe, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x2a, 0x77, 0xfa, 0x41, 0x2a, 0xaa, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0xa0, 0x4f, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x51, 0x41, 0x7d, 0xc3, 0x83, 0x92, 0x1b, 0xa4, 0x9c, 0x38, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x54, 0x10, 0xf5, 0x83, 0x52, 0x48, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x5e, 0xa4, 0x7e, 0x90, 0x54, 0x96, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x01, 0x53, 0x3f, 0x48, 0xe0, 0x71, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x8e, 0xa7, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xda, 0xa3, 0xfa, 0x86, 0x07, 0x25, 0x37, 0x48, 0x66, 0x73, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x89, 0xa5, 0xea, 0x07, 0xa5, 0x90, 0xfa, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x51, 0x59, 0xfd, 0x20, 0xa9, 0x2c, 0xa9, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd2, 0xb8, 0xfa, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x05, 0x5f, 0x7d, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0x85, 0xf2, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xfc, 0xd9, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x6a, 0x6d, 0xfb, 0x86, 0xb7, 0x75, 0x36, 0x28, 0x41, 0xbd, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x72, 0xb7, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x2c, 0xdf, 0x7e, 0x70, 0x22, 0x68, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x67, 0xb8, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x02, 0xe3, 0x7e, 0x70, 0x92, 0x69, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x24, 0x5d, 0xb9, 0x6f, 0xf8, 0x38, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xb3, 0xb9, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0x33, 0x9c, 0x4c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x14, 0x44, 0xf7, 0x83, 0x45, 0xf0, 0x6e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x12, 0x4c, 0xdd, 0x37, 0xbc, 0xad, 0xb3, 0xc1, 0x40, 0xab, 0xaf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xba, 0xb0, 0xfb, 0xe1, 0x31, 0x99, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x62, 0xb7, 0xfb, 0xc1, 0x22, 0x3c, 0xb9, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x02, 0xc4, 0xfa, 0x06, 0x05, 0x69, 0xec, 0x06, 0x65, 0x61, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xa9, 0x64, 0x7d, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb4, 0x9d, 0xf5, 0x83, 0x85, 0x9e, 0x93, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x04, 0xb1, 0xf5, 0x83, 0xa5, 0x15, 0x9f, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x84, 0xbd, 0xf5, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xd2, 0x1f, 0xd7, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x30, 0x5d, 0x3f, 0x7c, 0x71, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x3c, 0x5e, 0x3f, 0x58, 0x6b, 0xf0, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x48, 0x0c, 0x5f, 0x3f, 0x28, 0xbc, 0x8c, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xa4, 0xe7, 0xaf, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x04, 0xc1, 0x7e, 0xb0, 0xee, 0xdb, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x76, 0xc3, 0x7e, 0xb0, 0xb4, 0xe2, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x26, 0xc5, 0x7e, 0xb0, 0xd6, 0xe0, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xcc, 0xc6, 0x7e, 0xb0, 0x08, 0x4f, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x74, 0xc8, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x22, 0x27, 0xfb, 0xc1, 0x89, 0xa0, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0xdc, 0xcb, 0x7e, 0xb0, 0xb4, 0xe2, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x82, 0xcd, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x9a, 0x3b, 0xfb, 0xc1, 0x49, 0xa6, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x90, 0x58, 0xd1, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xfa, 0x4a, 0xfb, 0xe1, 0x53, 0xc0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x6a, 0x53, 0xfb, 0xc1, 0x5a, 0x83, 0xcf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf2, 0x59, 0xfb, 0x41, 0xe1, 0x65, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x6d, 0xb0, 0xfd, 0x60, 0x11, 0xbc, 0x5b, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0x00, 0x6f, 0xb8, 0x30, 0xb9, 0xb9, 0x34, 0xb7, 0xb3, 0x16, 0x3a, 0xb9, 0xb0, 0xb1, 0x34, 0xb7, 0x73, 0x19, 0x80, 0x26, 0x1a, 0x32, 0x1d, 0x10, 0xb8, 0x30, 0xb9, 0xb9, 0x34, 0xb7, 0x33, 0x10, 0x14, 0x3a, 0xb9, 0xb0, 0xb1, 0x34, 0xb7, 0xb3, 0xd4, 0x02, 0x3e, 0x5b, 0xdd, 0x1c, 0xbd, 0xe1, 0x17, 0xa5, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x25, 0x2b, 0xa3, 0x2b, 0x1b, 0xa3, 0x03, 0x71, 0x2b, 0xbb, 0x63, 0x4b, 0x73, 0x2b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xee, 0xca, 0xe2, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x49, 0x85, 0xb4, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0xe7, 0x16, 0xa6, 0x1f, 0x24, 0x29, 0x03, 0xb7, 0xe1, 0x2f, 0x9a, 0x0d, 0x92, 0x94, 0x81, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0xf5, 0xcb, 0x86, 0x0f, 0x61, 0x36, 0x7c, 0xfd, 0xb2, 0xe1, 0x43, 0x98, 0x83, 0x94, 0xd7, 0xaa, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x9c, 0xfd, 0xb3, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x8f, 0xa3, 0x36, 0xbc, 0xad, 0x33, 0x38, 0xbc, 0xc1, 0x8a, 0xfa, 0xcf, 0x0e, 0x0a, 0xe2, 0xf1, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x24, 0x02, 0x74, 0x0d, 0x1f, 0x47, 0x6d, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0x60, 0xf5, 0x04, 0x68, 0x2b, 0xe0, 0xb3, 0x85, 0xcd, 0xd1, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x4f, 0xb3, 0x30, 0x39, 0x3a, 0xb4, 0x32, 0x39, 0x10, 0x3a, 0xb9, 0xb0, 0xb1, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x4f, 0x2f, 0x6f, 0x3c, 0x48, 0x52, 0x06, 0x3e, 0x58, 0x32, 0xff, 0xb9, 0xe1, 0x2f, 0x9a, 0x0d, 0x92, 0x94, 0x81, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x06, 0x4b, 0x6c, 0x40, 0x3b, 0x58, 0x12, 0x01, 0xba, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x6f, 0x14, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0xc1, 0x3a, 0x23, 0xd0, 0x0d, 0xd6, 0x76, 0x80, 0xb6, 0x86, 0xb7, 0x75, 0x0e, 0xd6, 0x19, 0x81, 0x6e, 0x78, 0x5b, 0xe7, 0x60, 0xf5, 0x04, 0xe8, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x6f, 0x14, 0x37, 0x58, 0x3c, 0x04, 0xba, 0xc1, 0x92, 0x08, 0xd0, 0x0e, 0x56, 0x5d, 0x81, 0x1e, 0x4e, 0xb1, 0x56, 0x00, 0x9e, 0xe0, 0xc2, 0xe4, 0xe6, 0xd2, 0xdc, 0xce, 0x5a, 0xea, 0xe6, 0xca, 0xcc, 0xea, 0xd8, 0x5a, 0xd2, 0xc8, 0xd2, 0xde, 0xda, 0xe6, 0x65, 0x00, 0x5a, 0x69, 0xd2, 0x74, 0x40, 0xe0, 0xc2, 0xe4, 0xe6, 0xd2, 0xdc, 0xce, 0x40, 0x50, 0xea, 0xe6, 0xca, 0xcc, 0xea, 0xd8, 0x40, 0xd2, 0xc8, 0xd2, 0xde, 0xda, 0xe6, 0x52, 0x0b, 0x78, 0x63, 0x69, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x5e, 0x6f, 0x63, 0x74, 0x61, 0x6c, 0x20, 0x64, 0x69, 0x67, 0x69, 0x74, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xac, 0x45, 0xf1, 0x69, 0x0d, 0xbf, 0x28, 0x6d, 0xf8, 0x72, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0xdc, 0xf0, 0xb4, 0xce, 0xc1, 0xba, 0x1f, 0xb9, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x01, 0xd4, 0xd3, 0x06, 0x8b, 0xe0, 0xdd, 0xd6, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0xe8, 0xad, 0x15, 0xf0, 0xe2, 0xd2, 0xe8, 0x0d, 0x56, 0x08, 0x35, 0xad, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xf7, 0x18, 0x5a, 0x98, 0xdc, 0x1c, 0x48, 0x9a, 0x1b, 0x48, 0x18, 0xc8, 0xd8, 0x9b, 0x1c, 0xd9, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x85, 0x52, 0xd4, 0x1a, 0xac, 0x10, 0x6a, 0x5a, 0xc3, 0xdb, 0x3a, 0x03, 0x3e, 0x5b, 0xd9, 0xdc, 0xdc, 0x06, 0x6b, 0x71, 0x30, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x37, 0xf7, 0x16, 0xb7, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0x38, 0x39, 0xb7, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xaf, 0x6c, 0x6e, 0x2c, 0x0c, 0xae, 0x0c, 0x64, 0x0c, 0x2d, 0x4c, 0x6e, 0x6e, 0x83, 0x15, 0x42, 0x4d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x35, 0xf2, 0x44, 0x6d, 0xb0, 0x16, 0x07, 0x73, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x83, 0xb5, 0x38, 0x98, 0x1b, 0x2c, 0x72, 0x06, 0x5d, 0xc3, 0xdb, 0x3a, 0x03, 0x5e, 0x5b, 0xd9, 0x5c, 0xb5, 0x02, 0x5e, 0x5c, 0x18, 0xbd, 0xc1, 0x0a, 0xa1, 0xa6, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x63, 0x0c, 0x2d, 0x4c, 0x6e, 0x0e, 0x24, 0xcd, 0x0d, 0x44, 0x8c, 0xed, 0x6d, 0x6c, 0x6d, 0xec, 0x4d, 0x8e, 0xec, 0x60, 0x3d, 0x30, 0xe8, 0x06, 0xeb, 0xa4, 0x41, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xcb, 0x8e, 0x41, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0xb5, 0x66, 0x51, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xf8, 0xcb, 0xa7, 0x0d, 0x16, 0x03, 0x80, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0xb9, 0x37, 0xbd, 0x36, 0x58, 0x93, 0x11, 0x5a, 0xb3, 0x80, 0x47, 0x56, 0xe7, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xdb, 0xd2, 0x02, 0x82, 0x32, 0x47, 0xf7, 0x06, 0x97, 0x02, 0x42, 0xf7, 0x06, 0xe2, 0xb7, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x0a, 0xcc, 0x9c, 0x36, 0x28, 0x28, 0x32, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x87, 0x56, 0x06, 0xb7, 0xc1, 0x62, 0xa1, 0xd0, 0x3a, 0x9c, 0x62, 0x0b, 0x78, 0x6e, 0x75, 0xe4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xaf, 0x5b, 0x5d, 0x5b, 0x99, 0x5c, 0xda, 0xd8, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x5f, 0x0a, 0xba, 0xc1, 0x22, 0x78, 0xb7, 0x83, 0xf5, 0x46, 0x72, 0x87, 0x53, 0x6c, 0x01, 0x6f, 0x2e, 0xaf, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0xea, 0x15, 0xda, 0x00, 0xdf, 0x5c, 0x5e, 0x9b, 0xd8, 0x1b, 0xdb, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x06, 0x8b, 0x08, 0xea, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x5a, 0xc7, 0xb6, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xfc, 0x45, 0xb3, 0x41, 0x39, 0x67, 0x7b, 0x78, 0x5a, 0xa7, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x6c, 0x6f, 0x77, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x73, 0x74, 0x61, 0x72, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xd5, 0x4a, 0xa1, 0x6d, 0xb0, 0x90, 0x30, 0xf4, 0x60, 0xb5, 0x51, 0x68, 0xad, 0x80, 0x87, 0x56, 0x86, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x85, 0x56, 0x86, 0x07, 0x42, 0xf7, 0x06, 0x12, 0x46, 0xf7, 0xd6, 0xb6, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0x8b, 0x85, 0xcd, 0xcd, 0x6d, 0x70, 0x78, 0x95, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x6f, 0x7b, 0x9b, 0xa3, 0x5b, 0xc3, 0xdb, 0x3a, 0x03, 0xde, 0xd9, 0x9b, 0xdb, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xd0, 0xd2, 0xe8, 0x6a, 0x05, 0xbc, 0xb3, 0x30, 0x74, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5f, 0xb7, 0xb2, 0x3b, 0xb6, 0x34, 0xb7, 0x32, 0x90, 0x37, 0x39, 0x90, 0xb0, 0xb1, 0xb2, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xd6, 0xdb, 0xe5, 0xb4, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x0c, 0x00, 0xba, 0xc1, 0x62, 0x9f, 0xbb, 0x83, 0xb2, 0xce, 0xb3, 0x15, 0xf0, 0xc2, 0xd8, 0xcc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xc2, 0xd8, 0xe0, 0xd0, 0xc2, 0xc4, 0xca, 0xe8, 0xd2, 0xc6, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x0d, 0x16, 0x12, 0x86, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x0f, 0x2d, 0xed, 0xac, 0xc3, 0x29, 0xb6, 0x80, 0xe7, 0x96, 0x86, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x62, 0x6f, 0x73, 0x73, 0x1b, 0xa4, 0x62, 0xff, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x2a, 0x86, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x2f, 0x8c, 0xcd, 0x6d, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x63, 0x61, 0x62, 0xd5, 0x6a, 0xb0, 0x88, 0x1a, 0x74, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x2f, 0xb7, 0x37, 0xb7, 0x96, 0xb1, 0x37, 0x37, 0x3a, 0xb9, 0x37, 0xb6, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xec, 0x18, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x60, 0x23, 0x74, 0x0d, 0x5f, 0xbf, 0x6c, 0xf8, 0x10, 0x66, 0xc3, 0xd7, 0x2f, 0x1b, 0x3e, 0x84, 0x39, 0x58, 0x4a, 0x4d, 0xd7, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x7d, 0x29, 0xe8, 0x06, 0xa9, 0xa7, 0xb1, 0x07, 0x69, 0xd8, 0xbf, 0x1d, 0x4e, 0xb1, 0x05, 0xbc, 0xb3, 0x3a, 0x76, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xed, 0x30, 0xbc, 0xb4, 0x39, 0x90, 0xb9, 0x3c, 0x37, 0xba, 0x30, 0x3c, 0x10, 0x1e, 0x10, 0xdf, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x82, 0x13, 0xba, 0x41, 0xc0, 0xb2, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0xef, 0x2c, 0x8c, 0xad, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0x9d, 0x85, 0xc9, 0xd5, 0x2c, 0xe0, 0x91, 0xbd, 0xa1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0xd1, 0xd2, 0x02, 0x02, 0x02, 0x87, 0xf6, 0xe6, 0x06, 0x32, 0x57, 0x06, 0x17, 0x26, 0x17, 0x46, 0xf7, 0x26, 0xb7, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0xc8, 0x27, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x67, 0x61, 0x79, 0x1d, 0x4e, 0xb1, 0x05, 0xbc, 0xb3, 0xb0, 0x7b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xcf, 0x31, 0xb6, 0xb0, 0xb9, 0xb9, 0xb4, 0x31, 0x90, 0x3b, 0xb4, 0x34, 0xba, 0xb2, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x04, 0x27, 0x74, 0x83, 0x82, 0x22, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x50, 0x31, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x76, 0x75, 0x6c, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xc5, 0xc0, 0xa1, 0x55, 0x2b, 0xe0, 0xa5, 0xb9, 0xe5, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x9b, 0x2b, 0x33, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0xc9, 0x43, 0xc2, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0xd2, 0xda, 0x81, 0x37, 0x7c, 0xfd, 0xb2, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x0b, 0x4f, 0x45, 0x6b, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x0d, 0x13, 0x37, 0xe0, 0xa1, 0x85, 0xc9, 0x07, 0xa5, 0xe8, 0xc0, 0x86, 0x07, 0x25, 0x37, 0x58, 0xa4, 0x88, 0x77, 0x70, 0x5a, 0x39, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xd8, 0xca, 0xec, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x18, 0x92, 0xb5, 0x41, 0x51, 0x29, 0xbe, 0x86, 0x77, 0x7b, 0x36, 0xbc, 0xe6, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x37, 0x58, 0xe7, 0x2b, 0x5a, 0x1b, 0x2c, 0xf6, 0xb9, 0x6b, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x2b, 0x7b, 0x63, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x82, 0x8d, 0xd0, 0x35, 0x7c, 0xfd, 0xb2, 0xc1, 0x5a, 0x85, 0xba, 0x83, 0x25, 0x04, 0xa0, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x8e, 0x36, 0x7c, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x93, 0x7b, 0x8b, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x18, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0xc1, 0x3a, 0x69, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x22, 0x54, 0xd4, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0xa1, 0xb8, 0x68, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x6a, 0x65, 0x73, 0x74, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe5, 0xcb, 0xa2, 0xd5, 0x41, 0x2a, 0xd0, 0x58, 0x6b, 0x78, 0x5b, 0xe7, 0x60, 0x89, 0xb6, 0xe8, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x14, 0x1d, 0xa8, 0x0d, 0x56, 0x08, 0x35, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0x7f, 0x2e, 0xad, 0xad, 0x6e, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0x95, 0x09, 0xa3, 0x1b, 0xac, 0x4c, 0x18, 0xed, 0x60, 0x05, 0xcc, 0xe8, 0x06, 0x25, 0x3c, 0xe6, 0x82, 0xc7, 0x1b, 0x2c, 0xa4, 0x17, 0x6d, 0x0d, 0x6f, 0xeb, 0x1c, 0xac, 0xbc, 0x19, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xec, 0xca, 0xf0, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xa8, 0x56, 0x74, 0x0d, 0x97, 0xd4, 0x06, 0x4b, 0xb4, 0x45, 0xd7, 0xe0, 0x88, 0x93, 0x71, 0x78, 0x4c, 0xa6, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x3c, 0x78, 0x7d, 0xb0, 0xd2, 0x66, 0xb4, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0xcf, 0xac, 0x4e, 0xde, 0x70, 0x49, 0x2d, 0x38, 0xbc, 0xc1, 0xb2, 0xa0, 0xd1, 0xd6, 0xe0, 0x88, 0x93, 0xb1, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0xb0, 0x7e, 0x5a, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0xac, 0xe2, 0x1a, 0xad, 0x0d, 0x4a, 0x78, 0xcc, 0x05, 0x8f, 0x0f, 0x56, 0x75, 0x8d, 0xae, 0xe1, 0x92, 0xda, 0x60, 0x55, 0xd7, 0xe8, 0x1a, 0x1c, 0x3c, 0x32, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0x52, 0xac, 0xd1, 0xda, 0xe0, 0x68, 0xc3, 0xb7, 0x86, 0x4b, 0x6a, 0x83, 0x55, 0x5d, 0xa3, 0x1b, 0xac, 0xac, 0x1b, 0x5d, 0xc1, 0xeb, 0x83, 0x23, 0x4e, 0xc6, 0xe1, 0x99, 0xc9, 0x36, 0x38, 0xe7, 0x2f, 0xad, 0xe1, 0x92, 0x5a, 0x43, 0xaa, 0xe6, 0x60, 0x55, 0xd7, 0x68, 0x6b, 0xb8, 0xa4, 0xd6, 0xb0, 0x57, 0x78, 0xb0, 0xaa, 0x6b, 0x74, 0x05, 0x8f, 0x0f, 0x0e, 0x1e, 0x19, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x06, 0xeb, 0xa7, 0x45, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0xe0, 0xf0, 0xc1, 0xe2, 0xc8, 0xd1, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xe0, 0x98, 0xe1, 0xb9, 0xe1, 0x92, 0x5a, 0x43, 0xb6, 0xe2, 0x60, 0x55, 0xd7, 0x68, 0x1b, 0xbe, 0xc2, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xe0, 0x0c, 0xe6, 0xb9, 0x86, 0x4b, 0x6a, 0x0d, 0xd9, 0x8a, 0x83, 0x95, 0x37, 0xa3, 0x6d, 0x50, 0xec, 0x68, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0x52, 0x5e, 0xab, 0x36, 0x5c, 0x52, 0x6b, 0x1c, 0x3a, 0x38, 0x83, 0x79, 0xb6, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x02, 0x3c, 0xba, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x67, 0x30, 0xcf, 0x0d, 0x97, 0xd4, 0x1a, 0xcf, 0x0f, 0xce, 0x60, 0x9e, 0xd5, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x64, 0x2d, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x96, 0xa2, 0x8b, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x61, 0xbf, 0x1d, 0xac, 0xa0, 0x18, 0xed, 0x60, 0x35, 0xf2, 0xe8, 0xe1, 0x14, 0x5b, 0xc0, 0x23, 0xab, 0xd3, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xed, 0xe9, 0x01, 0x41, 0x99, 0xa3, 0x2b, 0xa3, 0x4b, 0x01, 0xa1, 0x7b, 0x03, 0xf1, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x70, 0x42, 0x37, 0x28, 0x28, 0x32, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x47, 0x97, 0x36, 0xb7, 0xc1, 0x62, 0xfe, 0xd1, 0x3a, 0x9c, 0x62, 0x0b, 0x78, 0x64, 0x69, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x9e, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x64, 0x69, 0x67, 0x69, 0x74, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x59, 0x25, 0xe8, 0x06, 0x0b, 0x33, 0x41, 0x37, 0x58, 0x4f, 0x15, 0xda, 0x0a, 0x78, 0x64, 0x6f, 0xe7, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xbc, 0xb8, 0x80, 0x80, 0xb8, 0xd5, 0xb5, 0x89, 0x95, 0xc9, 0x81, 0xcc, 0x95, 0xc1, 0x85, 0xc9, 0x85, 0xd1, 0xbd, 0xc9, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x23, 0x7b, 0xa3, 0x3b, 0x58, 0x6e, 0x27, 0xba, 0x02, 0xde, 0x59, 0x58, 0xbc, 0xc1, 0x0a, 0xa1, 0xa6, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x2a, 0x73, 0x23, 0x03, 0x79, 0x33, 0x03, 0x61, 0x4b, 0x73, 0x2b, 0x3b, 0x58, 0x0f, 0x0c, 0xba, 0xc1, 0x9a, 0x8c, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0xd6, 0x72, 0x8a, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0x6e, 0xb0, 0x96, 0x53, 0x74, 0x83, 0x85, 0x98, 0xa2, 0x75, 0xb0, 0xcc, 0x8a, 0x74, 0x35, 0x58, 0xa5, 0x29, 0xba, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x12, 0x9c, 0xd0, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf8, 0xc7, 0xde, 0xda, 0xda, 0xca, 0xdc, 0xe8, 0xe6, 0x0e, 0x0a, 0x8a, 0xcc, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x63, 0x6f, 0x6c, 0x1b, 0x2c, 0x84, 0x23, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x54, 0x0c, 0x3d, 0x58, 0x25, 0x0d, 0x7a, 0xb0, 0xb4, 0x24, 0x74, 0x05, 0xbc, 0xb8, 0x3a, 0x7a, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x26, 0x19, 0x5d, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0xe6, 0xe0, 0x78, 0x24, 0x7a, 0xb0, 0xc8, 0x19, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xec, 0x18, 0x74, 0x83, 0x75, 0x21, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x69, 0x66, 0x69, 0x78, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x45, 0xce, 0xa0, 0x1b, 0x2c, 0x72, 0x06, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x20, 0x3f, 0x74, 0x83, 0x54, 0xec, 0xdf, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0xb6, 0x37, 0xb9, 0xb2, 0x0d, 0x96, 0xdf, 0x86, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x96, 0xc1, 0x82, 0x56, 0xb5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x87, 0x56, 0x46, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x70, 0x6c, 0x75, 0x73, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x0b, 0x1b, 0x2b, 0xeb, 0x60, 0x99, 0x15, 0xe9, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xc1, 0x46, 0xe8, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0x51, 0x6d, 0x70, 0x62, 0xbf, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xac, 0x0b, 0x15, 0x6d, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x85, 0x9a, 0xa4, 0x6b, 0x50, 0x18, 0xaa, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0x2e, 0x24, 0x74, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x92, 0x97, 0xb4, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0x56, 0x52, 0x93, 0x1e, 0xac, 0x0a, 0x09, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0xf2, 0x43, 0x37, 0x48, 0xc5, 0xfe, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x54, 0x0c, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0xac, 0xbd, 0x07, 0xad, 0x6a, 0x35, 0x58, 0x12, 0x1f, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x73, 0xb0, 0xca, 0x73, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x2f, 0x05, 0xdd, 0x60, 0x25, 0xaf, 0xdb, 0xc1, 0xba, 0x62, 0xb7, 0x59, 0x83, 0xd5, 0x78, 0xa2, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xce, 0xc2, 0xe0, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x69, 0x43, 0x4f, 0x07, 0x65, 0x9d, 0x67, 0xab, 0xc1, 0x2a, 0xc3, 0xd0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x83, 0xb5, 0x9a, 0x6e, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x7d, 0x29, 0xe8, 0x06, 0xeb, 0xba, 0xe0, 0x0e, 0x56, 0x9b, 0xc1, 0xad, 0x06, 0x6b, 0xe9, 0x41, 0x37, 0x28, 0x3a, 0x8d, 0xd7, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x45, 0x2b, 0xc3, 0x13, 0xcb, 0xa3, 0x2b, 0x3b, 0x58, 0x56, 0x09, 0xba, 0x86, 0x5f, 0x94, 0x36, 0xfc, 0xad, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x83, 0xc3, 0xab, 0xdc, 0xe1, 0xa1, 0x9f, 0xc3, 0x5b, 0x68, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x06, 0x2b, 0x78, 0x43, 0x0f, 0xd6, 0xef, 0x86, 0x1e, 0x4e, 0xb1, 0xd6, 0x60, 0xd1, 0x48, 0xe8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xba, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x27, 0x27, 0xa7, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0x45, 0xce, 0xa0, 0x07, 0xcb, 0x41, 0x49, 0x67, 0x01, 0xcf, 0x2e, 0x8d, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0xda, 0x57, 0xda, 0x00, 0x7e, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x20, 0x64, 0x69, 0x67, 0x69, 0x74, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x7e, 0x51, 0xda, 0xf0, 0xe5, 0xd2, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0xe1, 0x69, 0x9d, 0x0d, 0x16, 0xb5, 0xbc, 0xb5, 0xc1, 0x72, 0x89, 0xd2, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x86, 0x2f, 0x97, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x0d, 0x4f, 0xeb, 0x6c, 0xb0, 0xf0, 0xe7, 0xad, 0x0d, 0x56, 0xd8, 0x94, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x56, 0x09, 0xba, 0x86, 0x5f, 0x94, 0x36, 0x7c, 0xb9, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x78, 0x5a, 0xe7, 0xe0, 0xcc, 0xdc, 0x76, 0xb0, 0x04, 0x83, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x04, 0x27, 0x74, 0x83, 0xa5, 0x15, 0x6f, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x05, 0x1b, 0xa1, 0x1b, 0xac, 0xd9, 0x78, 0xab, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x0d, 0xd6, 0x23, 0xbc, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x6c, 0x84, 0x6e, 0xb0, 0xd0, 0xe1, 0xad, 0x9a, 0x05, 0x3c, 0xb1, 0x32, 0x7a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xed, 0x30, 0xbc, 0xb4, 0x39, 0x90, 0xb9, 0x3c, 0x37, 0xba, 0x30, 0x3c, 0x90, 0x16, 0x90, 0xd5, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x82, 0x13, 0xba, 0x41, 0xc0, 0xb2, 0x1e, 0xac, 0x36, 0x0a, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc1, 0x09, 0xdd, 0xa0, 0xa8, 0x14, 0x5f, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x5b, 0xdd, 0x5c, 0x1d, 0x4e, 0xb1, 0x16, 0xf0, 0xc4, 0xd2, 0xdc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xc5, 0xd2, 0xdc, 0xc2, 0xe4, 0xf2, 0x40, 0xe8, 0xde, 0x40, 0xc2, 0xe8, 0xde, 0xda, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x52, 0xd5, 0xd0, 0x0d, 0x02, 0x96, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x66, 0x36, 0x74, 0x83, 0xe5, 0xb7, 0xa1, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x13, 0xab, 0xa3, 0xab, 0xc3, 0x29, 0xb6, 0x80, 0x17, 0xc6, 0x06, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x40, 0x47, 0x18, 0x1b, 0x1c, 0x5a, 0x98, 0x5b, 0x5d, 0x5b, 0x99, 0x5c, 0xda, 0x18, 0x48, 0x98, 0x1b, 0x19, 0x48, 0x6b, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0xdd, 0x60, 0x21, 0x61, 0xe8, 0x06, 0xab, 0xde, 0x43, 0x37, 0x58, 0x3b, 0x19, 0x7a, 0xb0, 0xda, 0x28, 0x74, 0x05, 0x3c, 0xb2, 0x37, 0x73, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xdf, 0x16, 0x10, 0xa0, 0x38, 0x90, 0xb9, 0x32, 0xb8, 0x30, 0xb9, 0x30, 0xba, 0x37, 0xb9, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0xc5, 0x42, 0xa1, 0x07, 0xcb, 0xed, 0x44, 0x57, 0x83, 0xb5, 0xb9, 0xa1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xe8, 0xb3, 0xbd, 0xb9, 0x9d, 0x81, 0xb8, 0xd5, 0xb5, 0x89, 0x95, 0xc9, 0xcd, 0x81, 0x70, 0x81, 0xbc, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0xd6, 0xe2, 0x60, 0x6e, 0xb0, 0xe0, 0x4e, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x66, 0x61, 0x73, 0x1d, 0x2c, 0x31, 0x29, 0x3d, 0x9c, 0x62, 0x6b, 0xb0, 0x44, 0x41, 0x74, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xbf, 0x30, 0x36, 0x38, 0xb4, 0x30, 0xb7, 0xba, 0xb6, 0x32, 0xb9, 0xb4, 0xb1, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x83, 0x85, 0x84, 0xa1, 0x1b, 0xac, 0x7a, 0x0f, 0xdd, 0x60, 0xed, 0x64, 0x68, 0xb3, 0x80, 0x47, 0x56, 0xd6, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x4d, 0x56, 0x36, 0x96, 0xd6, 0x16, 0xc6, 0x06, 0x42, 0xf7, 0x06, 0x12, 0x46, 0xf7, 0xd6, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xaa, 0x86, 0x6e, 0x90, 0xf2, 0x5a, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x33, 0x1b, 0xba, 0xc1, 0xf2, 0xdb, 0xd0, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x6a, 0x02, 0xd2, 0xea, 0x70, 0x8a, 0x2d, 0x00, 0x0f, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x2d, 0x63, 0x61, 0x73, 0x65, 0x2d, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0xec, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0x37, 0x58, 0x0c, 0x17, 0xba, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x96, 0x73, 0x87, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x18, 0xba, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x61, 0x62, 0x5a, 0x1d, 0x4e, 0xb1, 0xd6, 0x60, 0x79, 0x6f, 0xe8, 0x06, 0x2b, 0x84, 0x9a, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x07, 0xad, 0x0c, 0x0f, 0x84, 0x2c, 0xed, 0x2c, 0x8d, 0x6e, 0xee, 0x60, 0x3d, 0x30, 0xe8, 0x06, 0x4b, 0x61, 0x4d, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3c, 0x58, 0xf0, 0xfe, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x6e, 0x78, 0x5a, 0x67, 0x83, 0x65, 0x09, 0x70, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0x97, 0x82, 0x6e, 0xb0, 0xae, 0x0b, 0x6e, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x87, 0x9b, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x56, 0x09, 0xba, 0x86, 0x5f, 0x94, 0x36, 0x58, 0x11, 0x6f, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x6e, 0x78, 0x5a, 0x67, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0xa1, 0xb7, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xfa, 0x52, 0xd0, 0x0d, 0x56, 0xf2, 0xba, 0xad, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x70, 0xa3, 0x5a, 0x01, 0xcf, 0xae, 0xcc, 0xdd, 0x60, 0x85, 0x50, 0xd3, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xaf, 0xf8, 0xb4, 0x80, 0x84, 0xe1, 0xa5, 0xcd, 0x81, 0xcc, 0xe5, 0xb9, 0xd1, 0x85, 0xe1, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x08, 0x9b, 0xa8, 0x35, 0xfc, 0xa2, 0xb4, 0xe1, 0x6f, 0xa5, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xc6, 0x9a, 0x39, 0xfc, 0x7e, 0xd6, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0xf1, 0x77, 0x69, 0x6b, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x68, 0x6f, 0xed, 0x86, 0xbf, 0x68, 0x36, 0x7c, 0xb0, 0x7a, 0x50, 0xc0, 0xe6, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x74, 0x75, 0xe2, 0x41, 0x5a, 0x3b, 0xf0, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0xd6, 0xf0, 0xb6, 0xce, 0x86, 0x7f, 0xe7, 0x3b, 0x28, 0x23, 0x6d, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0x16, 0x34, 0xba, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x2a, 0xa5, 0xd3, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0x85, 0x4e, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xab, 0xaa, 0x4e, 0x6b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xc5, 0x38, 0xa2, 0x1d, 0x2c, 0x91, 0x3b, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0xa9, 0xdb, 0xe8, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0xeb, 0xe7, 0x4e, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x05, 0x45, 0xe6, 0x86, 0xc7, 0x64, 0x0e, 0x96, 0xc8, 0x9d, 0xb6, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xdd, 0x85, 0x9d, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0x30, 0x3c, 0xdd, 0xf0, 0xb6, 0xce, 0xc1, 0x2a, 0xae, 0xd1, 0x35, 0x58, 0xbd, 0x76, 0xba, 0xe1, 0x6d, 0xd6, 0x83, 0x25, 0x6a, 0xa7, 0x6b, 0xb0, 0x7e, 0xee, 0x74, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x83, 0xd7, 0x07, 0x4b, 0xdd, 0x46, 0xdb, 0xa0, 0xe0, 0xc3, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x83, 0x22, 0x15, 0x73, 0xf0, 0x78, 0x83, 0x75, 0x94, 0xa7, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x2c, 0xa7, 0x3d, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x14, 0x99, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x33, 0xd6, 0xcc, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x58, 0xa9, 0x7a, 0xba, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x07, 0xaf, 0x0f, 0x96, 0xcf, 0x9e, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x96, 0x34, 0x9f, 0x56, 0xb3, 0x06, 0x0b, 0x44, 0x4c, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x13, 0x4b, 0x73, 0x0b, 0x93, 0xcb, 0x03, 0x21, 0x4b, 0x3b, 0x4b, 0xa3, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0x37, 0x58, 0x98, 0x09, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x5f, 0x0a, 0xba, 0xc1, 0x22, 0x78, 0xb7, 0x0d, 0xd6, 0x66, 0x1e, 0xd6, 0xac, 0xc1, 0xf2, 0x91, 0xd2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xe0, 0xd8, 0xea, 0xe4, 0xc2, 0xd8, 0x40, 0xe6, 0xe0, 0xc2, 0xc6, 0xca, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x0d, 0x0a, 0x8a, 0xcc, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x1a, 0x1b, 0xd2, 0x0e, 0x96, 0x3f, 0x8a, 0x76, 0x38, 0xc5, 0x5a, 0x01, 0xfc, 0xca, 0xf0, 0xde, 0xe8, 0xd2, 0xc6, 0x5a, 0xc4, 0xc2, 0xe6, 0xca, 0xe6, 0x65, 0x00, 0x7f, 0x9a, 0x30, 0x1d, 0x90, 0x32, 0xbc, 0x37, 0xba, 0xb4, 0x31, 0x10, 0xb1, 0xb0, 0xb9, 0xb2, 0xb9, 0x05, 0xde, 0x2c, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x0c, 0xde, 0x2c, 0xec, 0x60, 0x9d, 0x67, 0xe4, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x45, 0xeb, 0xc9, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0x16, 0xaf, 0xa6, 0x6c, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x01, 0x2f, 0xaf, 0x6c, 0xdd, 0xa0, 0x84, 0x8e, 0xdd, 0xe0, 0xd8, 0x52, 0x7a, 0x10, 0xa6, 0x63, 0x6b, 0xb0, 0x1c, 0x92, 0x69, 0x36, 0x38, 0xda, 0xf0, 0xad, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x52, 0x1d, 0xd4, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x52, 0x49, 0xc2, 0x0d, 0x0e, 0x14, 0x6d, 0x07, 0xa9, 0x40, 0x63, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x70, 0x83, 0x42, 0x30, 0xf5, 0x60, 0xc1, 0xfb, 0xe7, 0x1a, 0x3e, 0x77, 0x19, 0x5c, 0xdc, 0xa0, 0x10, 0x4c, 0x3d, 0xfc, 0x50, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0xaa, 0x83, 0xba, 0xe1, 0xeb, 0x97, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0x78, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x21, 0xcc, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x0c, 0xc9, 0xda, 0xa0, 0xa8, 0x14, 0xdf, 0x20, 0x15, 0xfb, 0x77, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x1e, 0xc4, 0xbf, 0x36, 0x38, 0x0f, 0x76, 0x6c, 0xf8, 0xc5, 0x65, 0xc3, 0xbf, 0x51, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0c, 0xc4, 0x06, 0x4b, 0x92, 0x50, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x01, 0xef, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xa8, 0x14, 0x5f, 0xc3, 0xd7, 0x2f, 0x1b, 0x84, 0xf3, 0xd9, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0x73, 0x78, 0x5a, 0xa7, 0x35, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xc9, 0x16, 0xb9, 0x1b, 0x9c, 0xf9, 0xd7, 0x0e, 0x0a, 0x4a, 0xf1, 0xc3, 0x5b, 0x68, 0xd5, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x06, 0xcb, 0x75, 0x0f, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0x8e, 0x2d, 0xa5, 0x1b, 0xbe, 0x7e, 0xd9, 0x60, 0xe9, 0x1a, 0xea, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x31, 0x10, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x80, 0x77, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0x54, 0x8a, 0x1f, 0x9c, 0x99, 0xdb, 0x0e, 0x0f, 0xfd, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xd1, 0xbd, 0xad, 0x1d, 0x1e, 0xfa, 0x69, 0x05, 0xbc, 0x31, 0xb4, 0x70, 0xc3, 0x2f, 0x4a, 0x1b, 0xac, 0x88, 0x37, 0xdd, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0x65, 0x13, 0xe6, 0x1a, 0xbe, 0xa8, 0xd9, 0x50, 0xc7, 0x83, 0xaf, 0x33, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x5c, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x06, 0x45, 0xa5, 0xf8, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xd7, 0x2f, 0x1b, 0x3e, 0x84, 0x39, 0x58, 0x5f, 0x89, 0x7a, 0x50, 0x10, 0x8f, 0x6f, 0xb0, 0x24, 0x09, 0xb5, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0xef, 0x05, 0x1d, 0x2c, 0xd4, 0x43, 0xdd, 0xa0, 0xa0, 0xc8, 0xdc, 0xe0, 0x18, 0x6e, 0x70, 0x78, 0x2f, 0x68, 0x35, 0x58, 0xc7, 0x8c, 0xba, 0xe1, 0x17, 0xa5, 0x0d, 0xd6, 0xb7, 0xa2, 0x6e, 0xf8, 0x8b, 0x66, 0x83, 0x63, 0x4b, 0xe9, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe2, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x08, 0xb5, 0x1d, 0x1e, 0xfa, 0xd9, 0xe0, 0x68, 0xc3, 0xb7, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0x20, 0x05, 0x3c, 0xf5, 0xe0, 0xc4, 0xbf, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x32, 0x71, 0x37, 0x58, 0x18, 0x8c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x9e, 0x8c, 0xdd, 0x20, 0xf5, 0x34, 0xf6, 0x20, 0x15, 0x68, 0xac, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xf2, 0x64, 0xec, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x86, 0xf7, 0x82, 0x36, 0x48, 0x27, 0x87, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x1a, 0xf0, 0x6e, 0xb0, 0xea, 0x41, 0x6e, 0x83, 0x94, 0x89, 0xd8, 0x3a, 0x9c, 0x62, 0x6b, 0x70, 0x54, 0x65, 0xdb, 0xf0, 0x8b, 0xd2, 0x86, 0x2f, 0x97, 0x36, 0x7c, 0x62, 0xb3, 0xc1, 0x92, 0x52, 0xb8, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0xb0, 0x95, 0x36, 0xbc, 0x17, 0xb4, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0xb0, 0x6a, 0xc3, 0x83, 0x37, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x06, 0xeb, 0xab, 0x52, 0x0f, 0x6f, 0xa1, 0xcd, 0x1a, 0x24, 0x84, 0x54, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xf5, 0xad, 0xa8, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0x3c, 0x38, 0xb4, 0x94, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x2e, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x12, 0x1f, 0xf7, 0x60, 0x59, 0x30, 0xea, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xfe, 0xcd, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x55, 0x46, 0x3d, 0xbc, 0x85, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x4c, 0xdc, 0x83, 0x65, 0xc1, 0xa8, 0x07, 0x8b, 0xfc, 0x51, 0x0f, 0xa7, 0x58, 0x87, 0x53, 0x6c, 0x16, 0x78, 0xb8, 0x77, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0x78, 0xb8, 0xb7, 0x01, 0x3c, 0xe1, 0xd0, 0xde, 0xdc, 0xca, 0xe8, 0xd2, 0xc6, 0x40, 0xc4, 0xc2, 0xe6, 0xca, 0x36, 0x3c, 0x3e, 0x32, 0xf0, 0x70, 0xef, 0x86, 0x4f, 0x6c, 0xd6, 0xa0, 0x30, 0x54, 0x5d, 0xc3, 0xe7, 0x2e, 0x6b, 0xb8, 0xd3, 0x96, 0x01, 0xfc, 0xe1, 0xe4, 0xca, 0xcc, 0xd2, 0xf0, 0x40, 0xe6, 0xf2, 0xd8, 0xd8, 0xc2, 0xc4, 0xd8, 0xca, 0xe6, 0x02, 0x6f, 0x2e, 0x6d, 0xde, 0xf0, 0x23, 0xcc, 0xe0, 0xf4, 0xc1, 0x92, 0x77, 0x95, 0x0d, 0x9f, 0xbb, 0xac, 0xe1, 0x4e, 0x5b, 0x06, 0xf0, 0x9f, 0xab, 0x33, 0x33, 0x4b, 0xc3, 0x03, 0x99, 0xcb, 0x63, 0x63, 0x0b, 0x13, 0x63, 0x2b, 0x9b, 0x0b, 0x3c, 0xb2, 0x32, 0x7c, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x07, 0x8b, 0xe1, 0x58, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x58, 0xf0, 0xe0, 0xb2, 0xe1, 0xf1, 0x91, 0x0d, 0x16, 0x3c, 0xb8, 0x6c, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1e, 0x9c, 0x37, 0x4f, 0x37, 0x7c, 0x62, 0xb3, 0xe1, 0x8b, 0xcf, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x43, 0xbb, 0xcc, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0xa9, 0xd8, 0xbf, 0x87, 0xf7, 0x82, 0x36, 0x28, 0x28, 0x32, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0xad, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xb6, 0xc4, 0x1d, 0xde, 0x42, 0xdb, 0xe0, 0x84, 0x71, 0x74, 0xf8, 0x70, 0x74, 0xd6, 0x60, 0x59, 0x8e, 0xcb, 0x86, 0xc7, 0x47, 0x36, 0x58, 0x96, 0xe3, 0xb2, 0xe1, 0x17, 0xa5, 0x0d, 0x5f, 0x2e, 0x6d, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x5f, 0x9c, 0x6d, 0x78, 0x5a, 0xe7, 0x20, 0x0d, 0xfb, 0x77, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x44, 0xb3, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3c, 0xb5, 0x07, 0x45, 0xcf, 0xfe, 0x41, 0x41, 0x29, 0xbe, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x74, 0x9c, 0x5a, 0xab, 0xc1, 0x02, 0x2c, 0x97, 0x0d, 0x8f, 0x8f, 0x6c, 0xb0, 0x00, 0xcb, 0x65, 0xc3, 0x2f, 0x4a, 0x1b, 0x2c, 0xc8, 0x4e, 0xdd, 0xf0, 0x89, 0xcd, 0x86, 0x2f, 0x3e, 0x37, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x0e, 0xed, 0x32, 0x1b, 0x3e, 0xc8, 0xd9, 0x60, 0x11, 0x7a, 0xea, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x86, 0xa7, 0x75, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0xe2, 0x7f, 0xb8, 0xc3, 0x5b, 0x68, 0x07, 0x8b, 0xf4, 0x53, 0x57, 0x83, 0x54, 0x31, 0xbf, 0x0d, 0x8f, 0x8f, 0x6c, 0x90, 0x2a, 0xe6, 0xb7, 0xe1, 0x17, 0xa5, 0x0d, 0x5f, 0x2e, 0x6d, 0x50, 0xf0, 0x61, 0x6e, 0xb0, 0x3a, 0x41, 0x75, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x44, 0xb3, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0xac, 0xb5, 0x50, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0x9d, 0x4d, 0xad, 0xc3, 0x29, 0x56, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x16, 0xc0, 0x2f, 0x8c, 0xee, 0xad, 0xad, 0x05, 0x2e, 0x4c, 0x6e, 0x2e, 0xcd, 0xed, 0x5c, 0x06, 0xf0, 0xa7, 0x61, 0xd3, 0x01, 0x09, 0xa3, 0x7b, 0x6b, 0x03, 0x81, 0x0b, 0x93, 0x9b, 0x4b, 0x73, 0x3b, 0x5b, 0xe0, 0xe7, 0xde, 0x0d, 0xca, 0x2e, 0xd9, 0x81, 0x9f, 0x7b, 0x37, 0xdc, 0x51, 0xb3, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0x2c, 0xc0, 0x2b, 0xf7, 0x96, 0xc7, 0xd6, 0x22, 0xe7, 0x6e, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x6d, 0x6f, 0xef, 0x1a, 0x7e, 0x51, 0xda, 0x60, 0x11, 0x41, 0xdd, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0xe7, 0xe4, 0xe1, 0xa1, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x7f, 0x6e, 0x2c, 0xcc, 0x6d, 0xc3, 0xd3, 0x3a, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa5, 0xaa, 0xa1, 0x1b, 0xa4, 0xbc, 0x56, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x26, 0x93, 0xae, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xcd, 0xa5, 0x91, 0x6d, 0x78, 0x5b, 0x67, 0xe0, 0xc3, 0xc4, 0xaa, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0xa5, 0xf4, 0x20, 0x95, 0x94, 0x69, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x04, 0x27, 0x74, 0x83, 0x02, 0x36, 0xff, 0x60, 0xb5, 0x51, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0x4a, 0xe9, 0x41, 0x7a, 0x0a, 0x54, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x64, 0x69, 0x6d, 0x1b, 0xde, 0xd6, 0x19, 0xf8, 0xb0, 0xb3, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0xd6, 0xbe, 0x90, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x56, 0x29, 0xaa, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x98, 0x4c, 0x7a, 0xb0, 0x04, 0x83, 0xb4, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0x50, 0x4a, 0x37, 0x38, 0xd4, 0xee, 0xd5, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xc1, 0x46, 0xe8, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0x2f, 0x5b, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0xdd, 0x60, 0xc1, 0xb0, 0xea, 0x06, 0x6b, 0xb4, 0x55, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0xa5, 0x74, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0xe4, 0xb4, 0x1e, 0x14, 0x4e, 0xb2, 0x55, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x28, 0xa5, 0x1b, 0x24, 0x96, 0x54, 0xb5, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x57, 0x30, 0xba, 0xc1, 0x82, 0x61, 0xd5, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xc2, 0x87, 0xd1, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x7d, 0xb0, 0x36, 0xe1, 0xa5, 0x5a, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x29, 0xdd, 0xe0, 0xc8, 0xac, 0xda, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x09, 0x4e, 0xe8, 0x06, 0x05, 0x45, 0xe6, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xe1, 0xc3, 0xe8, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x58, 0x6c, 0xed, 0x52, 0xb5, 0x02, 0x3e, 0x5c, 0x99, 0x1c, 0xb9, 0xc1, 0x72, 0x48, 0xa6, 0xd9, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x81, 0x8b, 0x4e, 0x1b, 0x24, 0xa5, 0x05, 0xaf, 0xe1, 0x6d, 0x9d, 0x01, 0x5f, 0xaf, 0x6e, 0x8e, 0xae, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x35, 0xbc, 0x71, 0x77, 0x90, 0x32, 0x1b, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x49, 0xba, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xc8, 0x20, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0xc1, 0x42, 0x06, 0xd1, 0x83, 0x65, 0x0c, 0xa2, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0xb5, 0x92, 0x6e, 0xb0, 0x90, 0x41, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x6e, 0x75, 0x73, 0x6b, 0x55, 0x87, 0x53, 0x6c, 0x01, 0xff, 0x0e, 0xad, 0xcc, 0xdd, 0x60, 0x39, 0x24, 0xd3, 0x6c, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x5f, 0x2e, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0xc3, 0x07, 0xab, 0x1d, 0x9c, 0x14, 0xb1, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0xd6, 0x68, 0xab, 0x6e, 0xb0, 0x60, 0x58, 0xb5, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0x78, 0xda, 0xde, 0xdc, 0xe8, 0xd0, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0xd6, 0xbe, 0x90, 0xae, 0xe1, 0x41, 0xc9, 0x0d, 0xd2, 0x40, 0x3f, 0x0f, 0x56, 0x80, 0xab, 0xb6, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x41, 0xda, 0x26, 0xe7, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0xc1, 0xda, 0x17, 0xd2, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb2, 0x34, 0xb8, 0x83, 0x15, 0xe0, 0xaa, 0xad, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0xf6, 0x85, 0x74, 0x83, 0xb5, 0x2f, 0xa4, 0xad, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0x91, 0xd5, 0xb5, 0x1d, 0xac, 0x00, 0x57, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x60, 0xed, 0x0b, 0xe9, 0x06, 0xab, 0xf3, 0x57, 0xdb, 0x60, 0x79, 0x00, 0xeb, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0xab, 0xd8, 0x57, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x6b, 0x66, 0x43, 0x37, 0x58, 0xfb, 0x42, 0xba, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x17, 0x97, 0x86, 0x77, 0xb0, 0x06, 0x56, 0xb5, 0x0e, 0x96, 0x98, 0x94, 0xd6, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0x4a, 0xe9, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0xe0, 0xcd, 0x86, 0x07, 0x6f, 0x36, 0x3c, 0x78, 0x73, 0x50, 0xd6, 0x79, 0x56, 0x2b, 0xc0, 0x2b, 0xf7, 0x96, 0xc7, 0xd6, 0x22, 0x17, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xc4, 0x5e, 0xc5, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0x37, 0x48, 0xa3, 0x3d, 0xda, 0x20, 0x8d, 0xf6, 0x68, 0x83, 0x34, 0xda, 0xa3, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0xb6, 0xce, 0x00, 0x1e, 0x72, 0x6f, 0x79, 0x6c, 0x2d, 0x63, 0x65, 0x6c, 0x6c, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xf5, 0x83, 0xaa, 0x55, 0x2b, 0xe0, 0xd3, 0xdd, 0xa5, 0x91, 0x1b, 0x2c, 0x87, 0x64, 0x9a, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x56, 0xa0, 0xad, 0xae, 0xe1, 0x8d, 0xbb, 0x83, 0x44, 0xd0, 0xe0, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xcf, 0x95, 0x85, 0xc9, 0xad, 0xe1, 0x17, 0xa5, 0x0d, 0x5f, 0x2e, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x0a, 0x1d, 0xa8, 0x35, 0x38, 0x0f, 0x76, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x30, 0xee, 0xae, 0x3b, 0x3c, 0xf4, 0xd3, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xb0, 0x11, 0x7a, 0xb0, 0xee, 0x47, 0x6e, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0xcf, 0xae, 0xae, 0xed, 0x60, 0x05, 0xb8, 0x6a, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x24, 0xa5, 0x05, 0xaf, 0xe1, 0x6d, 0x9d, 0x01, 0x7f, 0x4c, 0xae, 0x4e, 0xac, 0x56, 0x83, 0x05, 0x76, 0x32, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0x81, 0x9d, 0xcc, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x41, 0x5a, 0x3b, 0xf0, 0x06, 0xa7, 0x86, 0xa3, 0x0d, 0x4f, 0xeb, 0x6c, 0x50, 0x74, 0x1a, 0xaf, 0xe1, 0x6d, 0x9d, 0x01, 0x7f, 0xcd, 0xad, 0xac, 0x6c, 0x0d, 0x0a, 0xc1, 0xd4, 0x83, 0xf4, 0xe3, 0xe0, 0x0d, 0xce, 0x83, 0x1d, 0x1b, 0x2c, 0x87, 0x64, 0x9a, 0x0d, 0x4e, 0xec, 0x37, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xa5, 0xe7, 0x3b, 0x6d, 0x70, 0x6c, 0x73, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0xfe, 0x1c, 0x5d, 0x19, 0xdd, 0x06, 0xc7, 0x36, 0xc7, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x99, 0x70, 0xb3, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0x50, 0x18, 0xaa, 0xae, 0xe1, 0x17, 0x97, 0x83, 0xf5, 0x39, 0xa5, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x7e, 0x51, 0xda, 0x60, 0x49, 0xe0, 0xdc, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0x4a, 0x0b, 0xde, 0x60, 0x5d, 0x76, 0xdd, 0xe1, 0xa1, 0x9f, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x52, 0xaf, 0xd0, 0x5a, 0x83, 0xc2, 0x50, 0x75, 0x0d, 0xbf, 0xb8, 0x1c, 0xac, 0xc6, 0x0a, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x48, 0x4a, 0x0b, 0x5e, 0xc3, 0xdb, 0x3a, 0x03, 0xbe, 0x58, 0xda, 0xdc, 0x5a, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0x66, 0xe3, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0x20, 0x29, 0x2d, 0x78, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x74, 0x61, 0x73, 0x68, 0xad, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0x22, 0x3c, 0xb9, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0xb5, 0x2f, 0xa4, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xb5, 0x5c, 0xab, 0xb5, 0x06, 0x85, 0xa1, 0xea, 0x06, 0xeb, 0xd6, 0xe1, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0xd2, 0x68, 0x8f, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xeb, 0xc4, 0x58, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x29, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x24, 0xa5, 0x05, 0x6f, 0x70, 0x64, 0x56, 0x3d, 0x28, 0x9c, 0x64, 0xab, 0x56, 0x83, 0xb5, 0x07, 0xad, 0x1b, 0x2c, 0x87, 0x64, 0x9a, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0xf5, 0x91, 0xac, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x6b, 0x78, 0xe3, 0xee, 0xe0, 0x6c, 0xb0, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xb0, 0x11, 0xba, 0xc1, 0x72, 0xdc, 0xb8, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xc4, 0xc2, 0xf2, 0x0e, 0x56, 0x80, 0xab, 0xd6, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x1a, 0xde, 0xb8, 0x3b, 0x38, 0xd2, 0xac, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x6c, 0x84, 0x6e, 0xb0, 0x02, 0xed, 0xb0, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb3, 0xb4, 0xb6, 0x83, 0x15, 0xe0, 0xaa, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x86, 0x37, 0xee, 0x0e, 0x8e, 0x83, 0xab, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x05, 0x1b, 0xa1, 0x1b, 0x2c, 0x3d, 0x4c, 0xec, 0x60, 0xbd, 0xc6, 0x6a, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x6b, 0x78, 0xe3, 0xee, 0xe0, 0x14, 0xbb, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xb0, 0x11, 0xba, 0xc1, 0x1a, 0xf4, 0xb7, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x25, 0x67, 0x68, 0x07, 0x2b, 0xc0, 0x55, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x0d, 0x6f, 0xdc, 0x1d, 0x1c, 0xa7, 0x57, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x36, 0x42, 0x37, 0x58, 0x3e, 0xef, 0xd6, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0x5d, 0x9a, 0xde, 0xc1, 0x0a, 0x70, 0xd5, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0x5d, 0xc3, 0x1b, 0x77, 0x07, 0xa7, 0x00, 0xd6, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x82, 0x8d, 0xd0, 0x0d, 0x16, 0xc4, 0x2b, 0xb6, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x77, 0x97, 0xa6, 0x77, 0xb0, 0x02, 0x5c, 0xb5, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x44, 0xb8, 0xe0, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x61, 0x69, 0xda, 0xc1, 0x0a, 0x70, 0xd5, 0x3a, 0x9c, 0x62, 0x0b, 0xf0, 0xca, 0xbd, 0xe5, 0xb1, 0xb5, 0xc8, 0xa1, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xe9, 0x86, 0xaf, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x83, 0xc5, 0x4d, 0xac, 0x07, 0x4b, 0xa4, 0x58, 0x5b, 0x01, 0x5e, 0xb9, 0xb7, 0x3c, 0xb6, 0x16, 0x39, 0x72, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0x24, 0x30, 0x03, 0xb6, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x41, 0x1a, 0xed, 0xd1, 0xc1, 0x12, 0x29, 0xd6, 0x66, 0x0d, 0x96, 0xa0, 0xb2, 0x6e, 0xb0, 0x1c, 0x92, 0x69, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x41, 0x92, 0xd6, 0xe8, 0x86, 0xbf, 0x68, 0x36, 0x48, 0x7e, 0x0c, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xb8, 0x3b, 0x38, 0xbd, 0xb5, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x7a, 0xcd, 0x68, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x3d, 0x70, 0xb4, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x4b, 0x31, 0x57, 0x6b, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0x82, 0xcd, 0x74, 0x83, 0x73, 0x6e, 0xca, 0x06, 0x4b, 0xb9, 0x0c, 0xd7, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0x78, 0xbb, 0xc1, 0x92, 0x98, 0xc0, 0x0e, 0xcf, 0xd4, 0x75, 0x50, 0x74, 0xd9, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x72, 0x6f, 0xf0, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xa2, 0xa4, 0x6e, 0xf8, 0xc5, 0x65, 0xc3, 0x83, 0x37, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0xe0, 0xcd, 0xc1, 0xb9, 0xc5, 0x61, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0xf9, 0x31, 0x78, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x1d, 0x1c, 0x3a, 0x5b, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xe9, 0xe5, 0xa3, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xd5, 0x86, 0xae, 0xd5, 0x06, 0x41, 0x7a, 0xba, 0xe0, 0xf0, 0x41, 0x51, 0x1c, 0xbf, 0x06, 0xe7, 0xdc, 0x94, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0x02, 0x41, 0x7e, 0x05, 0x27, 0x0f, 0x96, 0xa7, 0xba, 0x6e, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xa0, 0x28, 0x8e, 0x5f, 0xc3, 0xdb, 0x3a, 0x07, 0x4b, 0x71, 0x5d, 0x6b, 0x0d, 0x96, 0x72, 0x19, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x14, 0x08, 0xf2, 0x2b, 0x38, 0x7a, 0xb0, 0x3c, 0xd5, 0x75, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0x60, 0xcd, 0xaf, 0xeb, 0x1a, 0xde, 0xd6, 0x39, 0x58, 0xf5, 0xec, 0x5a, 0x6b, 0xb0, 0x28, 0xcf, 0x75, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x40, 0x90, 0x5f, 0xc1, 0xdb, 0x83, 0xe5, 0xa9, 0xae, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x06, 0x6b, 0x7e, 0x5d, 0xd7, 0xf0, 0xb6, 0xce, 0xc1, 0xc2, 0x71, 0xd7, 0x5a, 0x83, 0x25, 0x31, 0x81, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0x05, 0x82, 0xfc, 0x0a, 0x3e, 0x1f, 0x2c, 0x4f, 0x75, 0xdd, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0x36, 0x58, 0xf3, 0xeb, 0xba, 0x86, 0xb7, 0x75, 0x0e, 0xd6, 0xde, 0xbb, 0x56, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0xac, 0x99, 0x0d, 0xdd, 0x60, 0xed, 0x0b, 0xe9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xb0, 0x11, 0xba, 0xc1, 0x32, 0xe3, 0xbf, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x48, 0x27, 0x65, 0x3a, 0x58, 0xaf, 0xb1, 0xda, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xc1, 0x46, 0xe8, 0x06, 0xab, 0xf9, 0xfe, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0x5d, 0xc3, 0x1b, 0x77, 0x07, 0x4b, 0xbc, 0x0c, 0x0f, 0xd6, 0x6b, 0xac, 0xb6, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xb0, 0x11, 0xba, 0xc1, 0xa2, 0x99, 0xbf, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x62, 0x3d, 0xd7, 0x83, 0xf5, 0x1a, 0xab, 0xad, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x6c, 0x84, 0x6e, 0xb0, 0x04, 0xd5, 0xaf, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x54, 0x26, 0xf0, 0x60, 0xbd, 0xc6, 0x6a, 0x1d, 0xac, 0x67, 0x60, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0x5d, 0xc3, 0x1b, 0x77, 0x07, 0x67, 0x51, 0xd7, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb3, 0x32, 0xb2, 0x83, 0x15, 0xe0, 0xaa, 0xad, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0x6e, 0xb0, 0xf6, 0x85, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0xb5, 0x54, 0x76, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x75, 0x72, 0x73, 0x07, 0x6b, 0x60, 0x55, 0x6b, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x34, 0xda, 0xa3, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0xd6, 0xee, 0xd6, 0xad, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xd5, 0xc9, 0xe1, 0x1d, 0xac, 0x81, 0x55, 0xad, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0x16, 0x0b, 0x85, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0xae, 0xe1, 0x8d, 0xbb, 0x83, 0x35, 0x35, 0x7b, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x1b, 0xac, 0x36, 0x90, 0x3b, 0x58, 0x9b, 0xf9, 0x5a, 0x1d, 0x4e, 0xb1, 0x05, 0x7c, 0xb9, 0xb7, 0x3c, 0x76, 0x83, 0xe5, 0x90, 0x4c, 0xb3, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0xae, 0xe1, 0x8d, 0xbb, 0x83, 0xf3, 0xd3, 0xeb, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x15, 0x82, 0x6b, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0xae, 0xe1, 0x8d, 0xbb, 0x83, 0x63, 0xdf, 0xeb, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x9d, 0x0d, 0x6b, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0xae, 0xe1, 0x8d, 0xbb, 0x83, 0x83, 0xc8, 0xeb, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x89, 0x88, 0x6b, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0xae, 0xe1, 0x8d, 0xbb, 0x83, 0x13, 0xbd, 0xeb, 0x1a, 0xde, 0xd6, 0x19, 0xe0, 0x95, 0x7b, 0xcb, 0x63, 0x6b, 0x91, 0x9b, 0xab, 0xc3, 0x29, 0xb6, 0x06, 0xab, 0x27, 0x57, 0x37, 0x58, 0x0e, 0xc9, 0x34, 0x1b, 0x24, 0x19, 0x10, 0x6e, 0xb0, 0xc4, 0x8e, 0x75, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x24, 0x70, 0x6e, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x97, 0xab, 0x9b, 0x43, 0xdb, 0xf0, 0xb4, 0xce, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x81, 0x9d, 0x4c, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0xd6, 0x3c, 0xcb, 0xb5, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x57, 0x27, 0x47, 0x77, 0xb0, 0x06, 0x56, 0xb5, 0xd5, 0x60, 0xb5, 0x45, 0xeb, 0x06, 0xcb, 0x21, 0x99, 0x66, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x73, 0x2b, 0x3b, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x29, 0x3a, 0x51, 0x87, 0x0f, 0x56, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0xd7, 0xf6, 0xc6, 0x1e, 0x24, 0x3f, 0x06, 0xb7, 0xe1, 0x2f, 0x9a, 0x0d, 0x92, 0x1f, 0x83, 0x37, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x06, 0xab, 0x5c, 0x17, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x91, 0x89, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x37, 0x58, 0x31, 0x03, 0x5b, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf5, 0xb6, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x2c, 0x41, 0xf5, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf8, 0xb8, 0x07, 0xab, 0x89, 0x60, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x37, 0xc8, 0x6d, 0x90, 0x68, 0x13, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x96, 0x26, 0xc1, 0xd6, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0xc1, 0x62, 0xa1, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0x92, 0x1f, 0x83, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x60, 0x02, 0xdb, 0x06, 0x05, 0x6c, 0xfe, 0xe1, 0xa1, 0x9f, 0x83, 0xc5, 0x05, 0xad, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x2c, 0x16, 0x0a, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x1b, 0xac, 0xbf, 0x83, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0xeb, 0xfc, 0x60, 0x0f, 0xd2, 0xaa, 0x9c, 0x0e, 0x16, 0x17, 0xb4, 0x56, 0x87, 0x53, 0x6c, 0x0d, 0x96, 0xc0, 0xad, 0x6e, 0xb0, 0x1c, 0x92, 0x69, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x35, 0xbc, 0x71, 0x77, 0x70, 0xbc, 0x70, 0x5d, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x13, 0x4b, 0x83, 0x3b, 0x58, 0x01, 0xae, 0xda, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x1a, 0xde, 0xb8, 0x3b, 0x38, 0xa7, 0xb7, 0xae, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xb1, 0xa5, 0xc1, 0x1d, 0xac, 0x00, 0x57, 0x6d, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x58, 0xf7, 0xb5, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x52, 0x9c, 0x9c, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x70, 0x42, 0x37, 0x28, 0x72, 0x5a, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x36, 0x42, 0x37, 0x58, 0xc1, 0x01, 0x58, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x25, 0x38, 0xa1, 0x1b, 0x14, 0xb0, 0xf9, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x05, 0x1b, 0xa1, 0x1b, 0xac, 0x83, 0x02, 0xac, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0x5d, 0xc3, 0x1b, 0x77, 0x07, 0xc7, 0x65, 0xd7, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0xd2, 0x68, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xcc, 0xca, 0xe2, 0x0e, 0x56, 0x80, 0xab, 0x56, 0x87, 0x53, 0x6c, 0x0d, 0x56, 0x60, 0xb1, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0xff, 0xce, 0x2f, 0xf0, 0x72, 0x6e, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xd4, 0x6b, 0xa3, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x28, 0x26, 0x31, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0xe7, 0xdc, 0x94, 0x83, 0x43, 0x4c, 0xc7, 0xc1, 0x31, 0xe6, 0x6c, 0x83, 0xd3, 0xca, 0xd9, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe8, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x2a, 0x87, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x37, 0xc8, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xcd, 0xc3, 0xe7, 0x41, 0x07, 0x85, 0x0f, 0xea, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x51, 0xfe, 0x69, 0x0d, 0x6f, 0xeb, 0x0c, 0x4e, 0x1e, 0x3e, 0x0f, 0xaa, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0x4e, 0xca, 0xb4, 0xe1, 0x69, 0x9d, 0x0d, 0x0e, 0xca, 0x74, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe0, 0xa9, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0x8f, 0x87, 0xcf, 0x83, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x29, 0xb8, 0x69, 0x1b, 0xa4, 0xbc, 0x56, 0x1d, 0x2c, 0xcb, 0x89, 0xed, 0x20, 0x59, 0x34, 0xaa, 0x59, 0x83, 0xe5, 0xf1, 0xaf, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xe1, 0x88, 0xae, 0x83, 0x25, 0x52, 0xac, 0x87, 0x53, 0xac, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x02, 0xf0, 0x05, 0x17, 0x26, 0x37, 0x97, 0xe6, 0x76, 0xd6, 0xf2, 0x56, 0x47, 0x37, 0x97, 0x46, 0x56, 0xd6, 0x32, 0x16, 0xc6, 0xc6, 0x56, 0x26, 0x2f, 0x03, 0xd0, 0x4b, 0x73, 0xa6, 0x03, 0x02, 0x17, 0x26, 0x37, 0x97, 0xe6, 0x76, 0x06, 0x82, 0xf2, 0x56, 0x47, 0x37, 0x97, 0x46, 0x56, 0x06, 0x32, 0x16, 0xc6, 0xc6, 0x56, 0x26, 0x97, 0x5a, 0xc0, 0x97, 0xab, 0x9b, 0xa3, 0x37, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xd8, 0xde, 0xe6, 0x83, 0x93, 0x9e, 0xe8, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xe6, 0xc2, 0xc4, 0x83, 0xa5, 0xa9, 0xa2, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xb0, 0x2c, 0x68, 0x74, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x1c, 0xce, 0x91, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xf2, 0xcb, 0xd8, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x94, 0x42, 0xe4, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe5, 0x91, 0xb1, 0xd5, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x4b, 0xdd, 0x46, 0x37, 0x28, 0x28, 0x32, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0x41, 0x91, 0xb9, 0x86, 0xcf, 0x5d, 0x06, 0xaf, 0x0f, 0x56, 0x16, 0x9f, 0xb6, 0x1a, 0x2c, 0xdd, 0x54, 0xdd, 0xa0, 0x50, 0xee, 0xdc, 0x60, 0x91, 0x63, 0xec, 0x86, 0x4f, 0x6c, 0x36, 0x58, 0xe0, 0x19, 0xbb, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x52, 0xb7, 0xd1, 0x35, 0xbc, 0x65, 0xb7, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x3f, 0x87, 0xf6, 0x76, 0xb7, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xac, 0xf4, 0xba, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0x16, 0x63, 0xde, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0x56, 0x71, 0x8d, 0x6e, 0xb0, 0xf0, 0x6c, 0xf4, 0xa0, 0xac, 0xf3, 0xdc, 0xf0, 0x96, 0xdd, 0x1a, 0x9e, 0xb8, 0xdb, 0xf0, 0x2c, 0xde, 0xc1, 0x3a, 0xd6, 0x9b, 0x83, 0xf0, 0x54, 0x3d, 0x58, 0x59, 0x7c, 0xba, 0x1a, 0x2c, 0x44, 0x80, 0xdd, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x73, 0x0b, 0x33, 0x0f, 0x3f, 0xd4, 0x1c, 0xac, 0xaf, 0x8c, 0xdd, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x61, 0x62, 0x6c, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x65, 0xd8, 0x6f, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x05, 0x00, 0xb2, 0x75, 0xb0, 0x10, 0x35, 0xf6, 0x70, 0x8a, 0x2d, 0xe0, 0xcb, 0x85, 0xcd, 0xa1, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x2c, 0xe3, 0x8f, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0xab, 0x33, 0x55, 0x0f, 0x56, 0x2e, 0xc8, 0x1e, 0x4e, 0xb1, 0x35, 0x28, 0xfd, 0x01, 0x37, 0x28, 0x94, 0x3b, 0x37, 0x58, 0xe4, 0x18, 0xbb, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0xb2, 0xa0, 0xd1, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x14, 0x35, 0xf6, 0x60, 0x31, 0x6b, 0xec, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x65, 0x61, 0xf1, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xe8, 0x39, 0x79, 0xb0, 0x12, 0x36, 0x76, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0xe3, 0xa8, 0x83, 0xc2, 0xcb, 0xf8, 0x60, 0xe1, 0xd9, 0xe8, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x1b, 0x77, 0x07, 0x61, 0x07, 0xb4, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0xbc, 0xdb, 0xb3, 0xe1, 0x35, 0x9f, 0x83, 0x65, 0x67, 0xa3, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0xb0, 0xd4, 0x6d, 0x74, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x83, 0x00, 0x0f, 0x5a, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x07, 0x05, 0x45, 0x66, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x15, 0x98, 0xec, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0x3e, 0x58, 0xb2, 0x1b, 0xdb, 0xe1, 0x14, 0x5b, 0x01, 0xf8, 0x81, 0x0b, 0x93, 0x9b, 0x4b, 0x73, 0x3b, 0x6b, 0x09, 0x9b, 0x1b, 0x4b, 0x4b, 0x6b, 0x39, 0x63, 0xcb, 0x83, 0x43, 0x9b, 0x97, 0x01, 0xe8, 0xa4, 0x41, 0xd3, 0x01, 0x81, 0x0b, 0x93, 0x9b, 0x4b, 0x73, 0x3b, 0x03, 0x41, 0x09, 0x9b, 0x1b, 0x4b, 0x4b, 0x03, 0x39, 0x63, 0xcb, 0x83, 0x43, 0x9b, 0x4b, 0x2d, 0xe0, 0x8d, 0x95, 0xb9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xbc, 0x70, 0x65, 0x72, 0x43, 0x45, 0x4e, 0x74, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xc1, 0x46, 0xe8, 0x06, 0xeb, 0xa5, 0xdf, 0x5a, 0x01, 0x0f, 0x2e, 0xac, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x9f, 0xa0, 0x26, 0xa8, 0x32, 0xb9, 0xb9, 0x30, 0x37, 0x32, 0x10, 0xb8, 0xb0, 0x36, 0xb8, 0x32, 0xb9, 0xb9, 0x30, 0x37, 0xb2, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x60, 0x23, 0x74, 0x83, 0xe5, 0x91, 0x70, 0xad, 0x06, 0x0b, 0x63, 0x48, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xd0, 0x26, 0x7b, 0xa3, 0x03, 0x21, 0x7b, 0xa3, 0x03, 0x21, 0x7b, 0xa3, 0x03, 0x71, 0x71, 0x71, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x05, 0x1b, 0xa1, 0x1b, 0x2c, 0xc2, 0x93, 0x6b, 0x35, 0x48, 0x4c, 0x3c, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x8f, 0xa9, 0xa4, 0x23, 0xb7, 0x30, 0xba, 0x3a, 0xb9, 0x32, 0x90, 0xb9, 0xb8, 0xba, 0xb4, 0xb3, 0x33, 0xb6, 0xb2, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x60, 0x23, 0x74, 0x83, 0x75, 0xeb, 0x70, 0xad, 0x06, 0x6b, 0x04, 0x4c, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0x7c, 0x38, 0xa6, 0xaa, 0xa9, 0x83, 0xd5, 0xd8, 0xa5, 0x87, 0x53, 0xac, 0x35, 0x58, 0x1b, 0x73, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x17, 0x54, 0x98, 0x5c, 0x99, 0x1b, 0x88, 0x54, 0xda, 0x19, 0x1a, 0xdd, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xb0, 0x11, 0xba, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x43, 0x53, 0xab, 0xc1, 0x0a, 0x68, 0xd0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xa6, 0xd2, 0xdc, 0xce, 0xd8, 0xca, 0x40, 0xa2, 0xea, 0xde, 0xe8, 0xca, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x82, 0x8d, 0xd0, 0x0d, 0x16, 0x55, 0xc0, 0xb5, 0x02, 0x5e, 0x5b, 0xda, 0xb8, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xc7, 0x5c, 0x59, 0x53, 0xd2, 0xd0, 0x1b, 0xdb, 0x9b, 0xdb, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xb0, 0x11, 0xba, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x43, 0x77, 0x87, 0x53, 0xac, 0x16, 0xf0, 0xd6, 0xca, 0xe4, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0x86, 0xea, 0xe4, 0xd8, 0xf2, 0x40, 0xa4, 0xd2, 0xce, 0xd0, 0xe8, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x82, 0x8d, 0xd0, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xde, 0xb7, 0x1a, 0xac, 0xbe, 0x33, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xd3, 0xe8, 0x4d, 0xee, 0x2e, 0x4c, 0x8e, 0x0c, 0x64, 0x8a, 0x2d, 0x6c, 0x0e, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd8, 0x08, 0xdd, 0x60, 0x75, 0x58, 0x5b, 0x2b, 0xe0, 0x8d, 0xbd, 0xb5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x3c, 0x43, 0x4f, 0x4d, 0x6d, 0x61, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xc1, 0x46, 0xe8, 0x06, 0xeb, 0x7a, 0xdf, 0x9a, 0x05, 0x3c, 0xb2, 0xb7, 0x78, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3f, 0xa2, 0xb7, 0x3a, 0x31, 0xb6, 0x32, 0x90, 0xa8, 0xba, 0x37, 0xba, 0xb2, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x60, 0x23, 0x74, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x87, 0x8a, 0x0e, 0xa7, 0xd8, 0x02, 0x9e, 0x58, 0x98, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x9f, 0x5d, 0x99, 0x1c, 0x5d, 0xda, 0x58, 0x18, 0x1b, 0x88, 0x50, 0x90, 0xd4, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xb0, 0x11, 0xba, 0xc1, 0xb2, 0x4b, 0xb8, 0x56, 0xc0, 0x9b, 0x2b, 0x93, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x9b, 0x8a, 0xab, 0x0b, 0x93, 0x2b, 0x03, 0x91, 0x4a, 0x3b, 0x43, 0xa3, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x36, 0x42, 0xd7, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0x78, 0xd7, 0x0a, 0x78, 0x74, 0x61, 0xf2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x80, 0x3f, 0x47, 0x15, 0x24, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x6c, 0x84, 0xae, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x50, 0xd5, 0xe1, 0x14, 0x5b, 0x83, 0x55, 0x72, 0xa4, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x3c, 0x43, 0x4f, 0x4c, 0x6f, 0x6e, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xc1, 0x46, 0xe8, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0xd5, 0x1d, 0x4e, 0xb1, 0x05, 0x3c, 0xb8, 0x30, 0x7a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x2f, 0x88, 0x0a, 0x04, 0x2e, 0x8c, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd8, 0x08, 0x5d, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xe1, 0x40, 0xab, 0xc1, 0x2a, 0x07, 0xd1, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xde, 0xa1, 0x20, 0xa1, 0xb7, 0xb7, 0xb9, 0xb2, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x60, 0x23, 0x74, 0x83, 0x25, 0x65, 0x73, 0xad, 0x80, 0x47, 0x97, 0x36, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x8b, 0x85, 0x8d, 0xad, 0x51, 0xa5, 0x0d, 0xad, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x05, 0x1b, 0xa1, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x1c, 0x6c, 0x35, 0x58, 0x49, 0x14, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0xc0, 0x87, 0x94, 0x07, 0x85, 0x56, 0xe6, 0x76, 0xb0, 0x86, 0xb9, 0x74, 0x16, 0xf0, 0xe6, 0xca, 0xd8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0xa6, 0xe2, 0xea, 0xc2, 0xe4, 0xca, 0x40, 0x98, 0xca, 0xcc, 0xe8, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x82, 0x8d, 0xd0, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xbe, 0x75, 0x38, 0xc5, 0x6a, 0x01, 0x0f, 0x2e, 0x8c, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x07, 0x2a, 0x4c, 0xae, 0xcc, 0x0d, 0x84, 0xa9, 0xcc, 0x8c, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd8, 0x08, 0x5d, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xa1, 0xa8, 0x59, 0x83, 0x75, 0x5d, 0xa2, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0x1e, 0xc9, 0x95, 0x85, 0xd1, 0x95, 0xc9, 0x81, 0x48, 0xa5, 0x9d, 0xa1, 0xd1, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x05, 0x1b, 0xa1, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0xd4, 0x77, 0x38, 0xc5, 0xd6, 0x60, 0xc5, 0xc0, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xf4, 0x08, 0x85, 0x8d, 0xad, 0x81, 0x4c, 0xb1, 0x85, 0xcd, 0xa1, 0x81, 0xa0, 0x94, 0xcd, 0x8d, 0x85, 0xc1, 0x95, 0x91, 0xa5, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x82, 0x8d, 0xd0, 0x0d, 0x56, 0x52, 0xb4, 0x35, 0x0b, 0x78, 0x6b, 0x65, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xcf, 0x50, 0x98, 0x5c, 0x19, 0xd5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xb0, 0x11, 0xba, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0xc3, 0xbd, 0x0e, 0xa7, 0xd8, 0x02, 0x9e, 0x5e, 0x18, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1d, 0x7a, 0x61, 0x70, 0x21, 0x20, 0x62, 0x61, 0x6e, 0x67, 0x21, 0x20, 0x63, 0x72, 0x61, 0x73, 0x68, 0x21, 0xa1, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x60, 0x23, 0x74, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x87, 0x86, 0x56, 0x83, 0xe4, 0x16, 0xd5, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x1f, 0x29, 0x6c, 0x0e, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd8, 0x08, 0x5d, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xa1, 0xa3, 0xd5, 0x60, 0xa5, 0xff, 0xe8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xde, 0x27, 0x74, 0x69, 0x73, 0x20, 0x74, 0x69, 0x73, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xc1, 0x46, 0xe8, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0xed, 0xcd, 0x02, 0xde, 0x5d, 0x1d, 0xbd, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xce, 0x5d, 0x1d, 0x1d, 0x0b, 0xc8, 0x1d, 0x5a, 0x18, 0xdd, 0x6f, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd8, 0x08, 0x5d, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xa1, 0xbf, 0xc3, 0x29, 0xb6, 0x06, 0x4b, 0xa6, 0x44, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x3b, 0x92, 0x2b, 0x0b, 0xa3, 0x2b, 0x93, 0x03, 0x61, 0x2a, 0x33, 0xa3, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x36, 0x42, 0xd7, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0x28, 0xef, 0x70, 0x8a, 0x2d, 0xe0, 0x89, 0xd5, 0x8d, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0x92, 0xbd, 0xb1, 0xb1, 0x85, 0xc9, 0xcd, 0x81, 0x08, 0x55, 0x0d, 0xad, 0xcd, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x05, 0x1b, 0xa1, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x94, 0xb4, 0x1a, 0x2c, 0x80, 0x26, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x99, 0x83, 0x0b, 0x1a, 0x2a, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x36, 0x42, 0x0f, 0x56, 0x72, 0x8b, 0x1e, 0x4e, 0xb1, 0x05, 0xbc, 0xb5, 0x32, 0x76, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x9f, 0xa1, 0x3a, 0x39, 0xb6, 0x3c, 0x10, 0xa6, 0x32, 0x33, 0xba, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x60, 0x23, 0x74, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x87, 0xef, 0x1d, 0x4e, 0xb1, 0x59, 0x00, 0x9e, 0xe0, 0xc2, 0xe4, 0xe6, 0xd2, 0xdc, 0xce, 0x5a, 0xe4, 0xea, 0xd8, 0xca, 0x5a, 0xc4, 0xea, 0xd2, 0xd8, 0xc8, 0xca, 0xe4, 0xe6, 0x65, 0x00, 0x5a, 0x69, 0xcc, 0x74, 0x40, 0xe0, 0xc2, 0xe4, 0xe6, 0xd2, 0xdc, 0xce, 0x40, 0x50, 0xe4, 0xea, 0xd8, 0xca, 0x40, 0xc4, 0xea, 0xd2, 0xd8, 0xc8, 0xca, 0xe4, 0xe6, 0x52, 0x6b, 0xb0, 0xf4, 0x97, 0x75, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0xe9, 0x2f, 0x6b, 0x03, 0x78, 0x8c, 0x85, 0xb1, 0xb1, 0x89, 0x85, 0x8d, 0xad, 0xcd, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0xba, 0x2e, 0xd1, 0x83, 0x30, 0x1d, 0x5b, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0x3c, 0x15, 0xdd, 0x20, 0x80, 0xce, 0x36, 0x38, 0x0f, 0x76, 0x6c, 0x50, 0x08, 0xa6, 0x1e, 0x2c, 0x4d, 0x15, 0x6d, 0xc3, 0x2f, 0x4a, 0x1b, 0x2c, 0x9c, 0x3a, 0xdd, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0x8b, 0xba, 0x4e, 0xd7, 0x20, 0x80, 0xce, 0x0e, 0x96, 0x6e, 0x89, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0xcd, 0x8a, 0x1e, 0x2c, 0x91, 0x3b, 0x5d, 0x0d, 0xd6, 0xdb, 0xe5, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xac, 0xb7, 0xcb, 0x69, 0x00, 0x1e, 0xda, 0xc2, 0xe8, 0xc6, 0xd0, 0x40, 0xc6, 0xd0, 0xc2, 0xe4, 0x40, 0xd2, 0xdc, 0x40, 0xe6, 0xca, 0xe8, 0x36, 0x3c, 0x3e, 0xb2, 0xc1, 0x7a, 0xbb, 0x9c, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x4f, 0xac, 0x8e, 0xdc, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x0d, 0x16, 0xbc, 0x7f, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0xc6, 0xaa, 0xc0, 0x86, 0x5f, 0x94, 0x36, 0x58, 0x38, 0x75, 0xba, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x16, 0x75, 0x9d, 0x1e, 0x2c, 0x34, 0xac, 0xdd, 0xa0, 0x84, 0xc7, 0x5c, 0xf0, 0xf8, 0x60, 0xfd, 0xdc, 0xe9, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xbe, 0x59, 0x58, 0x1a, 0xdb, 0xc1, 0x12, 0xb9, 0xd3, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x28, 0x6f, 0xcd, 0x5a, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0x05, 0xac, 0x6d, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x22, 0xde, 0x74, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0x60, 0x99, 0x66, 0xed, 0xe1, 0x69, 0x9d, 0x36, 0x58, 0xd9, 0x59, 0xbb, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xbb, 0x95, 0xe1, 0xd1, 0x1d, 0x2c, 0x91, 0x3b, 0x5d, 0x0d, 0x56, 0x60, 0xe6, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xac, 0xc0, 0xcc, 0x69, 0x00, 0x5e, 0xe4, 0xca, 0xe0, 0xd8, 0xc2, 0xc6, 0xca, 0x40, 0xee, 0x56, 0x40, 0xc6, 0xde, 0xdc, 0xe6, 0xe8, 0xc2, 0xdc, 0xe8, 0x36, 0x3c, 0x3e, 0xb2, 0xc1, 0x0a, 0xcc, 0x9c, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb1, 0xba, 0xf9, 0x20, 0x4c, 0xc7, 0x36, 0x58, 0x5b, 0x2a, 0xda, 0x86, 0xc7, 0x47, 0x36, 0x18, 0xab, 0x02, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0xe1, 0xd4, 0xe9, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0xcb, 0x82, 0x46, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0xa2, 0x5a, 0xd1, 0x83, 0x25, 0x72, 0xa7, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x2c, 0x75, 0x1b, 0x5d, 0xc3, 0xdb, 0x3a, 0x07, 0xab, 0xba, 0x46, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x0f, 0x16, 0x6f, 0x9e, 0xae, 0xe1, 0x73, 0x97, 0xc1, 0xe3, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0x50, 0x64, 0xae, 0xe1, 0x73, 0x97, 0xc1, 0xeb, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xe8, 0xbc, 0xb6, 0x35, 0x7c, 0xee, 0x32, 0x78, 0x7c, 0xb0, 0xfc, 0xf4, 0xb4, 0x5a, 0x01, 0x7f, 0x8e, 0xad, 0xee, 0xdc, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x5c, 0x58, 0xbc, 0x41, 0x00, 0x9d, 0x6d, 0x50, 0x4a, 0x88, 0x6f, 0x50, 0x50, 0x64, 0x6e, 0x50, 0x28, 0x77, 0x6e, 0x50, 0xc6, 0xe2, 0x1f, 0x94, 0x7c, 0xc1, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x62, 0x75, 0xf3, 0xc1, 0xd2, 0x54, 0xd1, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0x99, 0x95, 0xb1, 0x07, 0x4b, 0x53, 0x45, 0xdb, 0x60, 0x85, 0x50, 0xd3, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x61, 0xcd, 0xe9, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x4d, 0x8b, 0x6d, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0xd6, 0x1b, 0xd9, 0xb6, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x6b, 0xb2, 0x78, 0x5a, 0xc3, 0x25, 0xb5, 0x86, 0x71, 0x39, 0x58, 0x34, 0x65, 0xdb, 0x06, 0x2b, 0xa3, 0x6c, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xab, 0x81, 0x6c, 0xdb, 0x60, 0x75, 0x95, 0x6d, 0x75, 0x38, 0xc5, 0x5a, 0xc0, 0x37, 0xab, 0x9b, 0x9b, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x37, 0x97, 0x36, 0x1e, 0x9c, 0x67, 0x47, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0xe7, 0xf6, 0xe6, 0x1e, 0x9c, 0x67, 0x47, 0xdb, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x70, 0x42, 0x37, 0x58, 0x05, 0x26, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xf8, 0x30, 0xba, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xc1, 0x67, 0x5b, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xe0, 0x84, 0x6e, 0xb0, 0xcc, 0x49, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xf0, 0x61, 0x74, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x42, 0xd0, 0xb6, 0x6a, 0xd6, 0x60, 0x4d, 0x35, 0xeb, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xd8, 0xca, 0xd0, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0x59, 0xc3, 0xe7, 0x4a, 0x6b, 0x10, 0x6c, 0xa6, 0x1b, 0x7e, 0xa8, 0x39, 0x48, 0x4b, 0xc0, 0xdc, 0x60, 0x69, 0xaa, 0x68, 0x6d, 0xf8, 0x0a, 0x67, 0x83, 0x12, 0x1e, 0x73, 0x0d, 0x96, 0xb9, 0xda, 0xb6, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xba, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xe1, 0x92, 0x5a, 0xe3, 0xd0, 0xe0, 0xe9, 0xc1, 0x02, 0x61, 0xdb, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x4b, 0x6a, 0x8d, 0xe7, 0x07, 0xeb, 0xa3, 0x6d, 0x6b, 0x0d, 0x9f, 0xbb, 0x0c, 0x4e, 0x6f, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0x40, 0xd8, 0x76, 0xc3, 0xdb, 0x3a, 0x83, 0xd3, 0x07, 0x0b, 0x84, 0x6d, 0x6b, 0x35, 0x58, 0xe0, 0xa2, 0xb3, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0xc0, 0x45, 0xa7, 0x01, 0xbc, 0xc2, 0xc8, 0xc8, 0x40, 0xc2, 0x40, 0xd8, 0xc2, 0xc4, 0xca, 0xd8, 0x36, 0x3c, 0x3e, 0xb2, 0xc1, 0x02, 0x17, 0x9d, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb3, 0x37, 0xf1, 0x20, 0x4c, 0xc7, 0x0e, 0x96, 0xac, 0xd7, 0x6e, 0x78, 0x7c, 0x64, 0x83, 0xb1, 0x2a, 0xb0, 0xe1, 0x17, 0xa5, 0x0d, 0x16, 0x4e, 0x9d, 0x6e, 0xf8, 0xc4, 0x66, 0x83, 0xc5, 0xf6, 0xb5, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x2c, 0x75, 0x1b, 0xdd, 0x60, 0x39, 0x81, 0xed, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xa7, 0x60, 0xbb, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0x41, 0x91, 0xb9, 0x86, 0xcf, 0x5d, 0x06, 0xaf, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x44, 0x70, 0xdb, 0x06, 0x2b, 0x8b, 0x4f, 0x3b, 0x58, 0x10, 0x62, 0x5b, 0x87, 0x53, 0x6c, 0x01, 0x1f, 0x2e, 0x6d, 0x6c, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0x9a, 0x73, 0xdb, 0x00, 0xde, 0x72, 0x75, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x2b, 0x2b, 0x65, 0x61, 0x63, 0x68, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1e, 0x2c, 0x4d, 0x15, 0x5d, 0xc3, 0x9f, 0x4b, 0x83, 0x8b, 0x07, 0x4b, 0x53, 0x45, 0xdb, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x58, 0x05, 0x26, 0x7b, 0x78, 0xe8, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x65, 0x4e, 0xb2, 0x87, 0xb7, 0xd0, 0x5a, 0x01, 0x3f, 0xcd, 0x8d, 0xac, 0x3c, 0x58, 0x39, 0x2a, 0x3a, 0x6b, 0xb0, 0x2a, 0x62, 0x74, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0x55, 0xc4, 0x68, 0x03, 0xf8, 0xb5, 0x85, 0xd1, 0x8d, 0xa1, 0x81, 0x84, 0x81, 0x8c, 0xbd, 0xc9, 0x91, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x64, 0x61, 0xe6, 0xc1, 0x79, 0x76, 0x74, 0xc3, 0x2f, 0x4a, 0x1b, 0x2c, 0x9c, 0x3a, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xcc, 0xc2, 0xc8, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x0a, 0xf1, 0xb6, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x45, 0x5d, 0xa7, 0x07, 0xc7, 0x27, 0xd7, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0xd6, 0x75, 0xb6, 0x1d, 0x2c, 0xb0, 0xbc, 0x5d, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0xf8, 0x60, 0x19, 0xe1, 0xe9, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0x05, 0x45, 0xe6, 0x1a, 0x3e, 0x77, 0x19, 0xbc, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0xb6, 0xce, 0x06, 0xcb, 0x27, 0x6f, 0x5b, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x07, 0x8b, 0xe4, 0x4e, 0xab, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x57, 0xb2, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0xc1, 0x87, 0x83, 0x65, 0x9a, 0xb5, 0x6b, 0x78, 0x9b, 0x75, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x22, 0x13, 0x77, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x05, 0x96, 0xb7, 0x1d, 0xac, 0xbd, 0xad, 0x6d, 0x83, 0x95, 0x9d, 0xb5, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0x30, 0x3c, 0xdd, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x4d, 0xf6, 0x67, 0x1b, 0xac, 0xbd, 0xad, 0xdd, 0x60, 0x19, 0xe1, 0x69, 0x6b, 0xb0, 0x4c, 0xb3, 0x76, 0xc3, 0xdb, 0x3a, 0x83, 0xd3, 0x07, 0xcb, 0x34, 0x6b, 0xd7, 0x60, 0xed, 0xe5, 0xed, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xf1, 0x71, 0x0f, 0x96, 0x67, 0xdf, 0x76, 0x38, 0xc5, 0x5a, 0x83, 0xf5, 0x77, 0xac, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xeb, 0xef, 0x58, 0x1b, 0xc0, 0x7f, 0xec, 0xcd, 0x8d, 0x2c, 0x8d, 0x2e, 0xed, 0xcd, 0x2d, 0x8c, 0x0d, 0x64, 0xec, 0xed, 0x6d, 0x6d, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x0f, 0x2e, 0x2f, 0x3e, 0x38, 0x79, 0x0b, 0x1c, 0x2c, 0x59, 0xaf, 0xdd, 0xf0, 0x8b, 0xd2, 0x06, 0x0b, 0xa7, 0x4e, 0x37, 0x7c, 0x62, 0xb3, 0xc1, 0x62, 0xfb, 0xda, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x96, 0xba, 0x8d, 0x6e, 0xb0, 0x9c, 0xc0, 0x76, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x3b, 0x2b, 0xcb, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xba, 0x81, 0xdb, 0xc1, 0xba, 0x99, 0xdb, 0x0d, 0x4a, 0x78, 0xcc, 0x35, 0x58, 0x38, 0x83, 0xdb, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x9d, 0x82, 0xed, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0x3e, 0x28, 0x28, 0x32, 0xdb, 0xf0, 0x8b, 0xcb, 0x06, 0xeb, 0x14, 0x6c, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x28, 0x32, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x96, 0xfe, 0xe0, 0x1e, 0x2c, 0x08, 0xb1, 0xad, 0xd5, 0x60, 0xb5, 0x7e, 0xe8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x6a, 0xfd, 0xd0, 0x06, 0xf0, 0x95, 0x4b, 0x3b, 0x43, 0xa3, 0x6b, 0x7b, 0x9b, 0xa3, 0x03, 0x11, 0x0b, 0x9b, 0x2b, 0xdb, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0xbb, 0xab, 0x1b, 0x0f, 0x3f, 0xd4, 0xac, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0x2e, 0x8f, 0x3c, 0x58, 0x9a, 0x2a, 0xda, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xee, 0xc2, 0xe2, 0x83, 0x72, 0xce, 0x76, 0x83, 0xa2, 0xd3, 0x78, 0x0d, 0x6f, 0xeb, 0x6c, 0x50, 0x10, 0xb9, 0xb5, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xd6, 0x88, 0xdb, 0x06, 0xa5, 0xbd, 0xe5, 0x86, 0x5f, 0xe7, 0x36, 0x38, 0x0f, 0x76, 0x6c, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0x9c, 0x2e, 0x32, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xb8, 0x87, 0xdb, 0xc1, 0xa1, 0x97, 0xaf, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x24, 0x10, 0xb7, 0xd5, 0x60, 0x15, 0x63, 0xe8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x2a, 0xc6, 0xd0, 0x06, 0xf0, 0x86, 0x01, 0x79, 0x93, 0x03, 0x69, 0x7b, 0x93, 0x2b, 0x03, 0xa1, 0x4b, 0x6b, 0x2b, 0x9b, 0xdb, 0xa0, 0x50, 0xee, 0xdc, 0x60, 0x49, 0x91, 0xed, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xbc, 0x65, 0xbb, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x35, 0x08, 0xa0, 0xb3, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x52, 0x79, 0x87, 0x5b, 0x83, 0x42, 0x30, 0x75, 0xc3, 0xbf, 0xf3, 0x1b, 0x2c, 0xbc, 0xb2, 0xad, 0x0e, 0x0a, 0x8a, 0xcc, 0x0d, 0xd6, 0xd4, 0xd8, 0x1e, 0x2c, 0x7e, 0xb3, 0x5d, 0x0d, 0x96, 0x9e, 0xef, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x2c, 0x3d, 0xdf, 0x69, 0x00, 0x7e, 0xe6, 0xee, 0xd2, 0xe8, 0xc6, 0xd0, 0x40, 0xc4, 0xf2, 0x40, 0xcc, 0xd2, 0xe4, 0xe6, 0xe8, 0x40, 0xc6, 0xd0, 0xc2, 0xe4, 0x36, 0x3c, 0x3e, 0xb2, 0xc1, 0xd2, 0xf3, 0x9d, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x1e, 0x43, 0x0b, 0x93, 0x5b, 0x91, 0x0b, 0x73, 0x3b, 0x2b, 0x03, 0x59, 0x2b, 0xcb, 0x9b, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0xcb, 0x5c, 0x6d, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x83, 0x35, 0xb6, 0xb6, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf8, 0x60, 0x69, 0xaa, 0x68, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0xac, 0xe1, 0x4e, 0x5b, 0x06, 0xe0, 0x43, 0x2e, 0xcc, 0xed, 0xac, 0x0c, 0x64, 0xec, 0xad, 0x0d, 0x8e, 0xad, 0x8c, 0xae, 0x0c, 0x84, 0x8d, 0x0e, 0x2d, 0xf0, 0xee, 0xde, 0xe4, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xbd, 0xc9, 0xd1, 0x07, 0x6b, 0x6c, 0x6d, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x77, 0x17, 0xe6, 0x1e, 0xac, 0xb1, 0xb5, 0x6d, 0x83, 0x82, 0x60, 0x76, 0x0d, 0xd6, 0xed, 0xe4, 0xb6, 0x06, 0x05, 0xc1, 0xec, 0x1a, 0xac, 0x0c, 0xca, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0x6c, 0x0d, 0x6f, 0xeb, 0x1c, 0x2c, 0x40, 0xca, 0x5d, 0xc3, 0xdb, 0x3a, 0x07, 0x2b, 0x99, 0x72, 0xdb, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0xce, 0x36, 0x58, 0x28, 0x95, 0xbb, 0x86, 0x4b, 0x6a, 0x8d, 0x43, 0x07, 0x2b, 0x99, 0x72, 0x6b, 0x83, 0x82, 0x60, 0x76, 0x83, 0x95, 0x4c, 0xb9, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0x67, 0x6b, 0xb8, 0xa4, 0xd6, 0x78, 0x7e, 0xb0, 0x00, 0x29, 0xb7, 0x83, 0x45, 0x56, 0xb9, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xd9, 0x06, 0x6b, 0xd9, 0x72, 0x0f, 0x56, 0x7f, 0xe5, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0xac, 0xe1, 0x4e, 0x5b, 0x06, 0xf0, 0x17, 0xab, 0x4b, 0x63, 0x23, 0x03, 0x81, 0x0b, 0x93, 0x9b, 0x2b, 0x93, 0x03, 0x69, 0x0b, 0x83, 0x0b, 0x3c, 0xb4, 0x32, 0x76, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xc5, 0x89, 0xb9, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0x70, 0xf4, 0xd6, 0x20, 0x80, 0xce, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0xa0, 0x48, 0xc5, 0x3c, 0x58, 0x20, 0x6c, 0xbb, 0xe1, 0x6d, 0x9d, 0x83, 0xf5, 0xd1, 0xb6, 0x1d, 0x14, 0x14, 0x99, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0xf5, 0xcb, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x71, 0x62, 0x6e, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x2c, 0x10, 0xb6, 0xdd, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xf2, 0xc2, 0xd8, 0x83, 0xb5, 0xdf, 0xb6, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0xf5, 0xcb, 0x06, 0x2b, 0x55, 0x73, 0x37, 0x28, 0xe1, 0x31, 0xd7, 0x60, 0x19, 0x6e, 0x6e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x55, 0xa1, 0xb9, 0x07, 0x65, 0x99, 0xe7, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0xf9, 0x4c, 0x6e, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0x60, 0x7d, 0xb4, 0xed, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x1e, 0xdc, 0x3d, 0x58, 0x44, 0x9c, 0xdb, 0x1a, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x9e, 0x5b, 0xdd, 0xb8, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0x22, 0xe2, 0xdc, 0x0d, 0x6f, 0xeb, 0x0c, 0xce, 0x1e, 0x2c, 0x22, 0xce, 0x6d, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x8a, 0x54, 0xcc, 0x0d, 0xd6, 0x8a, 0xe7, 0xb6, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x29, 0xaa, 0xb9, 0xc1, 0x8a, 0xec, 0xdc, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x3c, 0xb8, 0x7b, 0xb0, 0xa0, 0x3e, 0xb7, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x0e, 0x16, 0x6f, 0xe7, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0x05, 0xf5, 0xb9, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf9, 0x60, 0x11, 0x71, 0x6e, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x07, 0xab, 0x03, 0x74, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xec, 0xc1, 0x82, 0xfa, 0xdc, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x7a, 0x03, 0xdd, 0x35, 0xbc, 0xad, 0x33, 0xb8, 0x7c, 0xb0, 0xa0, 0x3e, 0xf7, 0x60, 0xa5, 0x83, 0x6e, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0xac, 0x15, 0xcf, 0xdd, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x11, 0x71, 0xee, 0xc1, 0x5a, 0x07, 0xdd, 0x36, 0x28, 0xf8, 0x30, 0x37, 0x58, 0x10, 0x9f, 0xbb, 0xe1, 0x83, 0x9c, 0x0d, 0x96, 0xe4, 0xe7, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0xd6, 0x1b, 0xe8, 0x6e, 0xb0, 0x40, 0x3d, 0x77, 0x83, 0xd5, 0x0a, 0xba, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x65, 0x15, 0xba, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xf5, 0x06, 0xba, 0x1b, 0x2c, 0x50, 0xcf, 0xdd, 0x60, 0x51, 0x86, 0x6e, 0x1b, 0x2c, 0x11, 0xd1, 0x6d, 0x83, 0xb2, 0x4b, 0x76, 0x83, 0xb1, 0x2a, 0xb0, 0x86, 0x4b, 0x6a, 0x8d, 0xc7, 0x07, 0x87, 0xfd, 0x8e, 0x66, 0xc3, 0x2f, 0x4a, 0x1b, 0x2c, 0x9c, 0x3a, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0x99, 0x66, 0xed, 0x06, 0x2b, 0x3b, 0x6b, 0x37, 0x7c, 0x85, 0xb3, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x22, 0xd6, 0xdc, 0x0d, 0x56, 0x76, 0xd6, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0x0a, 0x82, 0xd9, 0x05, 0x87, 0x07, 0x77, 0x0f, 0x16, 0xb1, 0xe6, 0xae, 0xe1, 0xdf, 0x9c, 0x35, 0xbc, 0xad, 0x73, 0xb0, 0x94, 0x4e, 0xf7, 0x60, 0xed, 0x6d, 0xed, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x69, 0xd8, 0x4a, 0x1b, 0xac, 0xbd, 0xad, 0x5d, 0xc3, 0x25, 0xb5, 0xc6, 0xa1, 0x83, 0xa5, 0x74, 0xba, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xf1, 0xbb, 0xc1, 0xda, 0xdb, 0xda, 0x35, 0x5c, 0x52, 0x6b, 0x3c, 0x3f, 0x58, 0x4a, 0xa7, 0x5b, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xb0, 0xb4, 0x4e, 0xf7, 0x60, 0x89, 0xdc, 0xe9, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xa0, 0x73, 0x37, 0x58, 0x7b, 0x5b, 0xbb, 0xc1, 0x52, 0x3d, 0xdd, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x11, 0x6b, 0xee, 0x86, 0xb7, 0x75, 0x06, 0x67, 0x0f, 0x16, 0xb1, 0xe6, 0xb6, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0x22, 0xd6, 0xdc, 0x0d, 0x6f, 0xeb, 0x0c, 0x2e, 0x1f, 0x2c, 0x62, 0xcd, 0xed, 0x70, 0x8a, 0xad, 0xc1, 0x9a, 0x2c, 0x9e, 0x0d, 0x8f, 0x8f, 0x6c, 0xb0, 0x26, 0x8b, 0x67, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x56, 0xf6, 0xc1, 0x1d, 0x84, 0xe9, 0xd8, 0x06, 0xcb, 0x56, 0x6c, 0x0f, 0x16, 0x14, 0xd9, 0x6e, 0x78, 0x7c, 0x64, 0x83, 0xb1, 0x2a, 0xb0, 0xe1, 0x17, 0xa5, 0x0d, 0x16, 0x4e, 0x9d, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x45, 0x5d, 0xa7, 0x6b, 0x10, 0x40, 0x67, 0x07, 0x8b, 0xf7, 0xe0, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x59, 0xc3, 0xc4, 0x0d, 0x78, 0x6c, 0x65, 0xe6, 0xc1, 0x3a, 0xca, 0xd3, 0x0d, 0x4a, 0x7b, 0xcb, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0xaa, 0x75, 0xdd, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0x59, 0x83, 0x00, 0x3a, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xab, 0xab, 0x6c, 0x0f, 0x96, 0xc8, 0x9d, 0xb6, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0xac, 0xe1, 0x73, 0xa5, 0x35, 0x08, 0xa0, 0xb3, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x6a, 0x5d, 0xb7, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0x6f, 0xfa, 0x0d, 0x92, 0x94, 0x81, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0x21, 0xf8, 0xb0, 0x86, 0x3f, 0x97, 0x06, 0xaf, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0x6f, 0xfa, 0x0d, 0xd6, 0x88, 0xeb, 0x6e, 0x90, 0xd6, 0x0e, 0x5c, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0xb2, 0xa0, 0xd1, 0x83, 0x45, 0xfb, 0xba, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x2c, 0x75, 0x1b, 0x5d, 0x83, 0xc2, 0x50, 0x75, 0x83, 0x85, 0x08, 0xbb, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0xf1, 0xe6, 0xe9, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0xf1, 0x1e, 0xdc, 0xc1, 0x12, 0xb9, 0xd3, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0xa3, 0xb0, 0xbb, 0xe1, 0x17, 0x97, 0x0d, 0x96, 0x13, 0xd8, 0x6e, 0xb0, 0x10, 0x61, 0xb7, 0x83, 0x95, 0xa5, 0xa7, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0x95, 0x24, 0xdc, 0x60, 0x21, 0xc2, 0xee, 0x86, 0x5f, 0x94, 0xd6, 0x20, 0x80, 0xce, 0x36, 0xfc, 0xe2, 0xb2, 0xc1, 0xd2, 0x91, 0xdd, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x3a, 0xca, 0xd3, 0x0d, 0x6f, 0xeb, 0x1c, 0x2c, 0xa7, 0x3d, 0x6d, 0xc3, 0xd7, 0x2f, 0x1b, 0x2c, 0xec, 0xda, 0xdd, 0xa0, 0x30, 0x54, 0x5d, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xf5, 0x22, 0xa0, 0x6d, 0xb0, 0x78, 0xf3, 0x74, 0x83, 0x05, 0xb9, 0xa7, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x82, 0x22, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x32, 0xca, 0x76, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x0f, 0x5e, 0x6f, 0x3c, 0x3f, 0x58, 0xea, 0x36, 0x7a, 0xb0, 0x4a, 0xf9, 0xf4, 0x60, 0x15, 0xf4, 0xe9, 0xac, 0xc1, 0xa2, 0x57, 0xd2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x45, 0xaf, 0xa4, 0x0d, 0xa0, 0x37, 0x57, 0x06, 0x17, 0x26, 0x17, 0x46, 0x57, 0x46, 0xc6, 0x02, 0xa2, 0xda, 0xa0, 0x50, 0xee, 0xdc, 0x60, 0x4d, 0x8f, 0xed, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x33, 0x1b, 0x7a, 0xb0, 0x74, 0xcd, 0xf6, 0x60, 0x89, 0x49, 0xe9, 0xe1, 0x14, 0x5b, 0x83, 0x05, 0xb5, 0xa1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x0b, 0x6a, 0x43, 0x1b, 0x40, 0x6f, 0xae, 0x0c, 0x2e, 0x4c, 0x2e, 0x8c, 0xae, 0x8c, 0x8c, 0x05, 0x64, 0xb5, 0x41, 0xa1, 0xdc, 0xb9, 0xc1, 0x9a, 0x1e, 0xdb, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0xd5, 0x55, 0xb6, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x8a, 0xa1, 0x07, 0x4b, 0xce, 0x6c, 0x9b, 0x35, 0x58, 0x3f, 0x5c, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0x7e, 0xb8, 0xb6, 0x01, 0x7c, 0xc7, 0xde, 0xdc, 0xe6, 0xea, 0xda, 0xca, 0x40, 0xc2, 0x40, 0xc6, 0xd0, 0xc2, 0xe4, 0x36, 0xfc, 0xa2, 0xb4, 0xc1, 0xc2, 0xa9, 0xd3, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0x44, 0xb2, 0x76, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x65, 0x9a, 0xb5, 0x1b, 0xac, 0xec, 0xac, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xf4, 0xc2, 0xc6, 0x83, 0xc5, 0xe7, 0xb7, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0x6f, 0xdf, 0x6d, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0x50, 0x64, 0x6e, 0xb0, 0xf6, 0xb6, 0x76, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x7c, 0x7e, 0x77, 0x83, 0x65, 0xf4, 0xb7, 0xd5, 0xe1, 0x14, 0x5b, 0x83, 0x25, 0xdc, 0x3c, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x4b, 0xb8, 0x79, 0x1a, 0x80, 0x07, 0x38, 0xb6, 0xb0, 0xb1, 0xb2, 0x16, 0xb1, 0xb0, 0xb9, 0x32, 0x32, 0x90, 0x30, 0x38, 0x38, 0xb6, 0xbc, 0x0d, 0x8f, 0x8f, 0x6c, 0xb0, 0x84, 0x9b, 0x67, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x0f, 0xad, 0x4c, 0xdf, 0x20, 0x80, 0xce, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x41, 0x62, 0x4c, 0xf0, 0x41, 0x39, 0x8e, 0x7f, 0x50, 0xf2, 0x05, 0x1f, 0x2c, 0x59, 0xaf, 0xdd, 0xf0, 0xf8, 0xc8, 0x06, 0x63, 0x55, 0x60, 0xc3, 0x2f, 0x4a, 0x1b, 0x2c, 0x9c, 0x3a, 0xdd, 0xf0, 0x89, 0xcd, 0x06, 0x8b, 0xed, 0x6b, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x58, 0xea, 0x36, 0xba, 0xc1, 0x72, 0x02, 0xdb, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x4e, 0xc1, 0x76, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x9f, 0xbb, 0x0c, 0x5e, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x64, 0x84, 0xb7, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x32, 0xc2, 0xd3, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xb0, 0x32, 0xf5, 0xb4, 0x83, 0x75, 0x33, 0xb7, 0x07, 0x0b, 0x42, 0x6c, 0x6b, 0x35, 0x58, 0xc7, 0x1a, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0x8e, 0x35, 0xb4, 0x01, 0x3c, 0xd9, 0xca, 0xcc, 0xe8, 0xda, 0xde, 0xe6, 0xe8, 0x40, 0xc4, 0xc2, 0xe6, 0xca, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x58, 0x7e, 0x87, 0xbb, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0xc1, 0xca, 0x45, 0xdc, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0x4a, 0x12, 0x1e, 0xac, 0xba, 0xc4, 0x3d, 0x58, 0x08, 0x8b, 0xbb, 0x1a, 0x2c, 0x6d, 0xe8, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0xda, 0xd0, 0xd3, 0x00, 0x7e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0x69, 0x43, 0xcf, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xd0, 0xea, 0xcc, 0x83, 0x30, 0x1d, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0x63, 0x55, 0x60, 0xc3, 0x2f, 0x4a, 0x1b, 0x2c, 0x9c, 0x3a, 0xdd, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0x8b, 0xba, 0x4e, 0xd7, 0x20, 0x80, 0xce, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0xb2, 0x55, 0xde, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0x6b, 0x5a, 0x6f, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x28, 0x32, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0xc1, 0x52, 0x5f, 0xde, 0x83, 0xc5, 0xc3, 0xb7, 0x75, 0x38, 0xc5, 0x5a, 0x83, 0x15, 0x40, 0x3d, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x2b, 0x80, 0x7a, 0x1a, 0x80, 0x97, 0xb6, 0x30, 0xba, 0x31, 0x34, 0x90, 0x31, 0xb4, 0x30, 0x39, 0x90, 0x34, 0x37, 0x10, 0xb9, 0x30, 0xb7, 0xb3, 0xb2, 0x0d, 0x8f, 0x8f, 0x6c, 0xb0, 0x02, 0xa8, 0x67, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6c, 0x65, 0xf3, 0xe1, 0x87, 0x9a, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xb5, 0xbd, 0xcd, 0x87, 0x1f, 0x6a, 0xda, 0xf0, 0xf8, 0xc8, 0x06, 0x63, 0x55, 0x60, 0xc3, 0x2f, 0x4a, 0x1b, 0x2c, 0x9c, 0x3a, 0xdd, 0xf0, 0x17, 0xcd, 0x06, 0x4b, 0x24, 0x6b, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x58, 0xa6, 0x59, 0xbb, 0xc1, 0xca, 0xce, 0xda, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x3c, 0xc2, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc3, 0x56, 0xda, 0x60, 0xed, 0x6d, 0xed, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x15, 0x3e, 0x6f, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x5f, 0xfc, 0x6e, 0xb0, 0xf6, 0xb6, 0x76, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xbe, 0x9f, 0xb7, 0x3a, 0x58, 0xe2, 0x5b, 0xbb, 0x02, 0x3e, 0x5c, 0x9d, 0x1b, 0xbd, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x08, 0x75, 0xdb, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0x41, 0x91, 0x79, 0x78, 0xe8, 0xe7, 0x60, 0x89, 0x49, 0xe9, 0x6a, 0x38, 0x48, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x07, 0x49, 0x03, 0xf0, 0x81, 0x16, 0x36, 0x07, 0x42, 0xf7, 0x06, 0x62, 0x56, 0xc7, 0xc6, 0x96, 0x07, 0x02, 0x17, 0x26, 0x37, 0x57, 0xb6, 0x41, 0xa1, 0xdc, 0xb9, 0xc1, 0xda, 0x52, 0xd1, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x70, 0xea, 0x74, 0xc3, 0x27, 0x36, 0x1b, 0x2c, 0xb6, 0xaf, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0xa9, 0xdb, 0xe8, 0x06, 0xcb, 0x09, 0x6c, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xb0, 0x32, 0xf5, 0x74, 0x83, 0xe5, 0x04, 0xb6, 0x07, 0x2b, 0x84, 0x70, 0x0f, 0xa7, 0x58, 0x6b, 0xb0, 0x7c, 0xb7, 0x67, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0xf9, 0x6e, 0x4f, 0x03, 0xf0, 0x02, 0x17, 0x26, 0x37, 0x57, 0x06, 0x32, 0x57, 0x66, 0x57, 0x26, 0x17, 0xc6, 0x06, 0x42, 0x97, 0xd6, 0x56, 0x36, 0xb7, 0xe1, 0xf1, 0x91, 0x0d, 0x96, 0xef, 0xf6, 0x6c, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xb1, 0xa5, 0x9d, 0x07, 0xa9, 0x09, 0x98, 0x07, 0x0b, 0x8a, 0x6c, 0x37, 0xfc, 0xa2, 0xb4, 0xc1, 0xc2, 0xa9, 0xd3, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0xb0, 0xa8, 0xeb, 0x74, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0x59, 0x83, 0x00, 0x3a, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xab, 0xb1, 0x71, 0xd7, 0xf0, 0x6e, 0xcf, 0xc1, 0xe2, 0x37, 0xdb, 0x6a, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0xc3, 0x83, 0x37, 0x1b, 0x2e, 0xa9, 0x35, 0x9e, 0x6f, 0xb0, 0x0e, 0xb3, 0xb7, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x08, 0x4f, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x05, 0x45, 0xe6, 0x06, 0x05, 0x45, 0xe6, 0xc1, 0x12, 0xb9, 0xd3, 0x36, 0x7c, 0x62, 0xb3, 0xc1, 0xd2, 0x91, 0xdd, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x96, 0xba, 0x8d, 0xae, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0xc1, 0x9b, 0x0d, 0x97, 0xd4, 0x1a, 0x87, 0x0e, 0xd6, 0xf8, 0xf6, 0xb6, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xbc, 0x79, 0x7a, 0xb0, 0x94, 0xb8, 0xf7, 0x60, 0x39, 0x81, 0xed, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0xeb, 0x28, 0x4f, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0xb9, 0xdd, 0xbb, 0xe1, 0x83, 0x9c, 0x0d, 0x96, 0x5a, 0xf7, 0x6e, 0x78, 0xf0, 0x66, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0xd9, 0x60, 0x81, 0x76, 0x6f, 0x6b, 0xb0, 0xa4, 0xb7, 0x77, 0xc3, 0x07, 0x39, 0x1b, 0xac, 0xc1, 0xed, 0xdd, 0xf0, 0xe0, 0xcd, 0x86, 0x77, 0x7b, 0x36, 0xbc, 0xe6, 0xb3, 0xc1, 0xca, 0xdd, 0xde, 0x0e, 0x56, 0x96, 0x9e, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0xb0, 0x7c, 0xf6, 0x74, 0x83, 0x85, 0x5d, 0xbb, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x41, 0xee, 0xe9, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xa0, 0xc8, 0x5c, 0xc3, 0x2f, 0x2e, 0x07, 0xeb, 0x8a, 0x4f, 0x0f, 0x56, 0x41, 0x9f, 0xb6, 0x1a, 0xac, 0x5a, 0x26, 0xdd, 0xa0, 0x50, 0xee, 0xdc, 0x60, 0x49, 0x91, 0xed, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0xc1, 0xea, 0x2a, 0xdb, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x42, 0xc5, 0xd0, 0x83, 0xc5, 0x6f, 0xb6, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xa9, 0x69, 0xd9, 0x00, 0x3c, 0x84, 0x91, 0x91, 0x81, 0xd0, 0xbd, 0x81, 0xd0, 0x85, 0xc1, 0x95, 0x81, 0x98, 0xa5, 0xc9, 0xcd, 0xd1, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xc1, 0xc9, 0x95, 0x07, 0x27, 0x3d, 0xd1, 0x83, 0x25, 0xeb, 0xb5, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0xe1, 0xd4, 0xe9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x54, 0x2b, 0xba, 0xc1, 0x32, 0xc2, 0xd3, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x89, 0xa0, 0x6d, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xae, 0xc9, 0xb7, 0x35, 0xbc, 0xad, 0x73, 0xb0, 0x4c, 0xb3, 0xb6, 0x0e, 0xa7, 0xd8, 0x02, 0x3e, 0x5c, 0x99, 0xdc, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0x66, 0xcd, 0xb7, 0x01, 0xbc, 0xe1, 0xc2, 0xe4, 0xe6, 0xca, 0x40, 0xc6, 0xea, 0xc4, 0xca, 0x40, 0xcc, 0xde, 0xe4, 0xd6, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xa8, 0xb8, 0x6c, 0x70, 0xde, 0x3c, 0x6d, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x1b, 0x2c, 0xfb, 0xac, 0xdd, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x70, 0x42, 0x37, 0x28, 0xd1, 0xf3, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x1f, 0x46, 0x37, 0x28, 0xd1, 0xf3, 0xeb, 0xe0, 0x70, 0x70, 0xb7, 0x1a, 0xac, 0x45, 0xf1, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0x8b, 0xe2, 0xd3, 0x00, 0x3e, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x20, 0x67, 0x61, 0x74, 0x65, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0x2d, 0x8a, 0xcf, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0xdc, 0x5b, 0x7c, 0x50, 0xd4, 0xbb, 0x1e, 0x2c, 0x59, 0xaf, 0xdd, 0xf0, 0xf8, 0xc8, 0x06, 0x63, 0x55, 0x60, 0xc3, 0x2f, 0x4a, 0x1b, 0x2c, 0x9c, 0x3a, 0xdd, 0xf0, 0x89, 0xcd, 0x06, 0x8b, 0xed, 0x6b, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x58, 0xea, 0x36, 0xba, 0xc1, 0x72, 0x02, 0xdb, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x4e, 0xc1, 0x76, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x9f, 0xbb, 0x0c, 0x5e, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x66, 0xd7, 0xb7, 0x83, 0x75, 0x33, 0xb7, 0x07, 0x0b, 0x42, 0x6c, 0x6b, 0xd6, 0x60, 0x15, 0x27, 0xe9, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xac, 0x37, 0xb2, 0xdd, 0xf0, 0xb9, 0xd2, 0x06, 0x4b, 0x53, 0x45, 0x0f, 0x16, 0xef, 0xda, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0x0f, 0xed, 0xcd, 0x3c, 0x58, 0x9a, 0x2a, 0xda, 0x06, 0x6b, 0xd1, 0x99, 0x36, 0x38, 0xad, 0x9c, 0x6d, 0xb0, 0x16, 0x9d, 0x69, 0x0d, 0x0f, 0x4a, 0x6e, 0x70, 0x5a, 0x39, 0xdb, 0x70, 0x49, 0xad, 0x71, 0xe8, 0x60, 0xe1, 0x95, 0x6d, 0x1b, 0xac, 0x45, 0x67, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x9c, 0x56, 0xce, 0x36, 0x5c, 0x52, 0x6b, 0x3c, 0x3f, 0x58, 0x78, 0x65, 0xdb, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0xc1, 0xe2, 0x87, 0xdf, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xba, 0x82, 0xd1, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x92, 0x80, 0xdf, 0x36, 0x58, 0xaa, 0xf1, 0x5b, 0x87, 0x53, 0xac, 0x35, 0x58, 0xfc, 0xe5, 0xb3, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0xf8, 0xcb, 0xa7, 0x01, 0xf8, 0xc0, 0xc2, 0x02, 0x91, 0x2b, 0x23, 0xab, 0x73, 0x23, 0x0b, 0x73, 0xa3, 0x63, 0x01, 0x51, 0x2b, 0x9b, 0xa3, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0x8b, 0xbf, 0x7c, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x85, 0x78, 0x7b, 0xb0, 0xe0, 0xfd, 0x73, 0xc3, 0xe3, 0x23, 0x1b, 0x8c, 0x55, 0x81, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x70, 0xea, 0x74, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0x91, 0xac, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0x99, 0x66, 0xed, 0x06, 0x2b, 0x3b, 0x6b, 0x37, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0x6f, 0xce, 0x06, 0x0b, 0x2c, 0x6f, 0x0f, 0xd6, 0xde, 0xd6, 0x1e, 0x2c, 0xf1, 0xad, 0x3d, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x01, 0x7c, 0xed, 0xd2, 0xe4, 0xe8, 0xea, 0xc2, 0xd8, 0xd2, 0xf4, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x65, 0x00, 0x3e, 0x68, 0xdc, 0x74, 0x40, 0xec, 0xd2, 0xe4, 0xe8, 0xea, 0xc2, 0xd8, 0xd2, 0xf4, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x16, 0xf0, 0xe7, 0xde, 0xcc, 0xe8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe5, 0x83, 0xbf, 0x0d, 0xe0, 0x67, 0x97, 0x26, 0x47, 0x57, 0x17, 0xc6, 0x06, 0x32, 0xc6, 0x16, 0xd6, 0xb6, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb4, 0x30, 0xf7, 0x20, 0x94, 0xc6, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb3, 0x3a, 0xf2, 0x20, 0x4c, 0xc7, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x02, 0x40, 0xd6, 0x35, 0x38, 0x0f, 0x76, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x28, 0xf3, 0xb7, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x62, 0xd0, 0xdf, 0x6a, 0x35, 0x58, 0xb7, 0xe8, 0xb3, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0x6e, 0xd1, 0xa7, 0x01, 0xf0, 0x6e, 0x8e, 0x2d, 0xac, 0x0d, 0x24, 0x0c, 0xe4, 0x2c, 0x8c, 0xae, 0x0c, 0xe4, 0xcd, 0x0d, 0x24, 0x0c, 0x64, 0x2e, 0xac, 0x0d, 0x8e, 0xad, 0x0c, 0xa4, 0x6e, 0x2e, 0xcd, 0xed, 0x0c, 0x44, 0x2e, 0xec, 0x0e, 0xc4, 0xed, 0x6d, 0x6c, 0x8d, 0x05, 0xa4, 0xce, 0x8d, 0x2e, 0x0f, 0xae, 0x8c, 0x6c, 0xc3, 0xe3, 0x23, 0x1b, 0xac, 0x5b, 0xf4, 0xd9, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0xd0, 0xe2, 0x63, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x3b, 0x0b, 0xa3, 0x0f, 0xc2, 0x74, 0x6c, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x73, 0x61, 0xed, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0x82, 0x90, 0xa5, 0x0d, 0x9f, 0x02, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x1d, 0x24, 0xaa, 0x56, 0x6d, 0x10, 0xb0, 0xac, 0x6b, 0x78, 0xe3, 0xee, 0x20, 0x51, 0xb6, 0x6a, 0x0d, 0xbf, 0xb8, 0x6c, 0x70, 0x5c, 0x9e, 0x59, 0xc3, 0x1b, 0x77, 0x87, 0xdf, 0x6f, 0x0e, 0x0a, 0x4a, 0xf1, 0x0d, 0x96, 0x05, 0x00, 0x1f, 0x04, 0x2b, 0xeb, 0x0a, 0xf8, 0x6d, 0x75, 0x72, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x6a, 0x05, 0xe0, 0x06, 0xe0, 0xad, 0xce, 0x8d, 0x2e, 0x0f, 0xae, 0x8c, 0x0c, 0xa4, 0xce, 0x2d, 0x8d, 0x2e, 0x4c, 0x2e, 0x0f, 0xc4, 0x2e, 0x4d, 0x8e, 0xae, 0x2e, 0x8c, 0x6d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x52, 0x74, 0xe0, 0xe0, 0xac, 0xa3, 0xb0, 0xe1, 0x2f, 0x9a, 0x0d, 0x0e, 0xc3, 0x02, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x1e, 0xdd, 0x9b, 0xbb, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x6b, 0x74, 0x88, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0xf4, 0x18, 0xdd, 0x60, 0x01, 0xfd, 0xef, 0x06, 0x01, 0xcb, 0xba, 0xc1, 0xb2, 0x00, 0xe0, 0x83, 0x82, 0x78, 0x7c, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x83, 0x22, 0x15, 0x73, 0x83, 0x63, 0xb8, 0xc1, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0x16, 0x84, 0x2c, 0x6d, 0x78, 0x5a, 0x67, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0x75, 0x87, 0xdb, 0x1a, 0x7e, 0x71, 0x39, 0x58, 0x68, 0x00, 0x7c, 0xb0, 0x28, 0x00, 0xb8, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0xe9, 0xd4, 0x8d, 0x43, 0x1b, 0xac, 0x79, 0x01, 0x6e, 0x83, 0x82, 0x22, 0x73, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0xb7, 0x75, 0x36, 0x08, 0x8f, 0xb4, 0x83, 0x95, 0x64, 0xc0, 0x2b, 0xe0, 0xb7, 0xbd, 0xbd, 0xad, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xeb, 0xe1, 0x80, 0x1b, 0x00, 0xdf, 0xc6, 0xde, 0xdc, 0xec, 0xca, 0xe4, 0xe8, 0x40, 0x4a, 0xe8, 0xde, 0xdc, 0xca, 0x40, 0xe8, 0xde, 0x40, 0x4a, 0xe8, 0xde, 0xde, 0xdc, 0x58, 0x40, 0xe4, 0xca, 0xdc, 0xc8, 0xca, 0xe4, 0xd2, 0xdc, 0xce, 0x40, 0xe6, 0xe8, 0xc2, 0xc6, 0xd6, 0x40, 0xcc, 0xe4, 0xc2, 0xda, 0xca, 0xe6, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x58, 0xf3, 0x02, 0xbc, 0xe1, 0xdf, 0xf9, 0x35, 0x48, 0x68, 0x21, 0xae, 0x0d, 0x7f, 0xd1, 0xac, 0xe1, 0xdf, 0xf9, 0x35, 0x48, 0xa3, 0x0e, 0xae, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x28, 0x26, 0x31, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0x41, 0x6c, 0x7a, 0x70, 0x88, 0xe9, 0x38, 0x58, 0x49, 0x06, 0xbc, 0x86, 0xb7, 0x75, 0x0e, 0x56, 0x92, 0x01, 0x6f, 0x70, 0xc0, 0xa2, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x84, 0x1b, 0xea, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x44, 0xaa, 0x5e, 0xc3, 0xdb, 0x3a, 0x1b, 0x94, 0xf7, 0x71, 0x6d, 0xb0, 0x00, 0x2a, 0xaf, 0x96, 0x59, 0x83, 0x55, 0x14, 0x79, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xab, 0x28, 0xf2, 0x1a, 0x80, 0x37, 0xb9, 0xb0, 0x3b, 0x90, 0x39, 0xba, 0xb0, 0xb1, 0x35, 0x10, 0x33, 0xb9, 0xb0, 0xb6, 0x32, 0x10, 0xba, 0x37, 0x10, 0xba, 0x30, 0xb7, 0x75, 0x25, 0x00, 0x8d, 0x49, 0x4a, 0x40, 0x40, 0xb6, 0x4a, 0xd0, 0xea, 0xdc, 0xd6, 0x40, 0xe4, 0xca, 0xcc, 0x7a, 0x54, 0x40, 0xe0, 0xc2, 0xe8, 0xd0, 0xba, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x74, 0x74, 0x40, 0x40, 0xcc, 0xc2, 0xd2, 0xd8, 0xca, 0xc8, 0x40, 0xe6, 0xc6, 0xe4, 0xf2, 0x40, 0x50, 0xb6, 0xfc, 0x40, 0xfc, 0xba, 0x52, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x74, 0x4f, 0x6f, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x74, 0x61, 0xe7, 0xc1, 0x51, 0x1b, 0x74, 0x0d, 0x7f, 0x2e, 0x6d, 0x50, 0xd4, 0x16, 0x1f, 0x84, 0xe9, 0x58, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x4c, 0x30, 0xba, 0xc1, 0xc9, 0x41, 0x6e, 0x0d, 0x56, 0x0d, 0x04, 0xb7, 0x86, 0x27, 0xee, 0x36, 0x3c, 0x8b, 0x37, 0x78, 0x3b, 0xf8, 0x3b, 0xf8, 0x3b, 0xf8, 0x3a, 0xa8, 0x5b, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x88, 0x96, 0x37, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0xb6, 0xce, 0xc1, 0x82, 0x89, 0xe0, 0x6a, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0x22, 0xd9, 0x67, 0x83, 0x82, 0x60, 0x76, 0x83, 0xf2, 0xbf, 0x78, 0x0d, 0x4f, 0xdc, 0x6d, 0x78, 0x16, 0xef, 0x60, 0x21, 0xb5, 0xcf, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0xf0, 0xe6, 0xde, 0xcc, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x0d, 0xce, 0x48, 0xa8, 0x1d, 0x84, 0xe9, 0xd8, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe5, 0x83, 0xbf, 0xad, 0xe1, 0x6d, 0x9d, 0x83, 0x03, 0x14, 0x6a, 0x6b, 0xb8, 0xa4, 0xd6, 0x78, 0x7e, 0x50, 0xfe, 0x17, 0xd7, 0x06, 0x25, 0x3c, 0xe6, 0x1a, 0x2c, 0xe7, 0x09, 0x6e, 0x83, 0x85, 0x33, 0xc1, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xfe, 0x5c, 0x5b, 0x1e, 0xdd, 0x1a, 0xde, 0xd6, 0x19, 0xbc, 0x3e, 0x58, 0xb9, 0x15, 0xdc, 0x6a, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0xb1, 0xbf, 0xcf, 0x06, 0xc5, 0x80, 0xec, 0x06, 0xe5, 0x7f, 0xf1, 0x1a, 0x9e, 0xb8, 0xdb, 0xf0, 0x2c, 0xde, 0xc1, 0xda, 0x8b, 0x9f, 0x0d, 0x4f, 0xdc, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x82, 0x68, 0x79, 0x83, 0xa2, 0x52, 0xfc, 0xa0, 0xec, 0x33, 0x5e, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xac, 0x22, 0xf9, 0xd9, 0xf0, 0xc4, 0xdd, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xeb, 0x9f, 0xb6, 0xda, 0x60, 0xf9, 0xda, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xe4, 0xf7, 0x3f, 0x28, 0xfb, 0x8c, 0x5b, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xf2, 0xd8, 0x1b, 0x14, 0x04, 0xb3, 0x1b, 0x94, 0xff, 0xc5, 0x1b, 0x2c, 0xd4, 0x0b, 0xde, 0xa0, 0x20, 0x8d, 0x1d, 0xf0, 0xda, 0xc2, 0xc6, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0xb6, 0xb0, 0xb1, 0xb5, 0x0d, 0x4a, 0x3f, 0xe3, 0x35, 0x5c, 0x52, 0x6b, 0x1c, 0x3a, 0x28, 0xff, 0x8b, 0x6b, 0x83, 0x12, 0x1e, 0x73, 0x0d, 0x96, 0x97, 0x06, 0xb7, 0x86, 0x27, 0xee, 0x36, 0x3c, 0x8b, 0x77, 0xb0, 0x52, 0xeb, 0x67, 0x83, 0x82, 0x34, 0x76, 0x83, 0xe5, 0x3c, 0xc1, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x96, 0x29, 0x78, 0x0d, 0x6f, 0xeb, 0x1c, 0x1c, 0x18, 0x46, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0x0b, 0x6f, 0x83, 0xdb, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0xe5, 0x56, 0xf0, 0x1a, 0x9e, 0xb8, 0xdb, 0xf0, 0x2c, 0xde, 0xc1, 0xb2, 0xbc, 0x9f, 0x83, 0x95, 0x66, 0xc1, 0xab, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x44, 0x7c, 0xe0, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0xbe, 0xc1, 0x72, 0x9e, 0xe0, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x35, 0xfc, 0x3b, 0xbf, 0x06, 0x89, 0xf8, 0xc0, 0xd5, 0x41, 0x98, 0x8e, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x5a, 0xa6, 0xe0, 0x35, 0xbc, 0xad, 0x73, 0xb0, 0x2e, 0x3e, 0xb8, 0x83, 0xb2, 0xcf, 0x78, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x95, 0x5b, 0xc1, 0x6b, 0x78, 0xe2, 0x6e, 0xc3, 0xb3, 0x78, 0x07, 0x4b, 0x43, 0x7f, 0x36, 0x38, 0xe7, 0x2f, 0xad, 0xe1, 0x8d, 0xbb, 0x83, 0x03, 0xc9, 0xe8, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xb3, 0x78, 0x07, 0x2b, 0x64, 0x7f, 0x0e, 0xca, 0x32, 0xcf, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe5, 0x61, 0xc1, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0x60, 0x11, 0x5a, 0x70, 0x6b, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0x41, 0x2a, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x07, 0x8f, 0x0f, 0x16, 0xa1, 0x05, 0x6f, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0x82, 0x67, 0x73, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x2c, 0x55, 0x11, 0xde, 0xa0, 0x20, 0x8d, 0xdd, 0x50, 0xf3, 0xd7, 0xf0, 0x8b, 0xd2, 0x06, 0xe7, 0x9b, 0x93, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x98, 0x31, 0x78, 0x83, 0x44, 0xb8, 0xe0, 0xc3, 0x43, 0x3f, 0x1b, 0x9e, 0xb8, 0xdb, 0xf0, 0x2c, 0xde, 0xa0, 0x7c, 0xf0, 0x6d, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x87, 0xdf, 0x6f, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xc1, 0x20, 0x95, 0xaa, 0x41, 0xc1, 0xb2, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x72, 0x27, 0xe1, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0x30, 0x48, 0xa5, 0x6a, 0xf0, 0x6e, 0x50, 0x37, 0xf8, 0xb6, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xdc, 0x49, 0x78, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x14, 0x3c, 0x9b, 0x35, 0x28, 0x58, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xee, 0x24, 0xbc, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x0a, 0x9e, 0xcd, 0x3a, 0x58, 0xac, 0x00, 0x54, 0xab, 0x41, 0x79, 0x1f, 0xb7, 0xe1, 0xeb, 0x97, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xfa, 0x28, 0xf1, 0xc1, 0x4a, 0x32, 0xe0, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0x2f, 0xaf, 0x8c, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xf4, 0x9c, 0xdc, 0x60, 0xc9, 0xa0, 0x70, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x37, 0x8a, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x25, 0x8b, 0xc2, 0x1d, 0xa4, 0x0a, 0xd2, 0x6e, 0xb0, 0x64, 0x50, 0x78, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x13, 0x41, 0xdb, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x60, 0x21, 0xb8, 0x41, 0xe2, 0x6e, 0xea, 0xc1, 0xa2, 0x48, 0xe1, 0x0d, 0x5f, 0xbf, 0x6c, 0xb0, 0x64, 0x50, 0x78, 0x83, 0x25, 0xd5, 0x49, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd3, 0x5b, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x06, 0x6b, 0x32, 0x85, 0x0f, 0x92, 0x76, 0x53, 0x0f, 0x16, 0x45, 0x0a, 0x6f, 0x50, 0x18, 0xaa, 0xae, 0xe1, 0x8d, 0xbb, 0x83, 0x35, 0x6d, 0xc1, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xac, 0xa9, 0xa7, 0x6b, 0x0d, 0xcf, 0xe2, 0x0d, 0xbe, 0x0d, 0x3e, 0x0f, 0xbe, 0x0e, 0x9e, 0x0e, 0x0e, 0x0f, 0x0e, 0x0f, 0x5e, 0x0e, 0x4e, 0x0e, 0x0a, 0x96, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x33, 0x06, 0x6f, 0x90, 0x08, 0x17, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0x78, 0xb0, 0x22, 0x53, 0xb8, 0x0e, 0x16, 0x63, 0x02, 0x75, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0xac, 0x35, 0x58, 0x85, 0x0e, 0xb4, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0x0a, 0x1d, 0xa8, 0x01, 0x78, 0xa2, 0xcb, 0x83, 0x2b, 0x23, 0x03, 0xa9, 0x73, 0x4b, 0xa3, 0x0b, 0x93, 0xcb, 0x03, 0xb1, 0x4b, 0x93, 0xa3, 0xab, 0x0b, 0x63, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0xab, 0xd0, 0x81, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x58, 0x3b, 0x02, 0xbc, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x35, 0x08, 0xa0, 0xb3, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0x80, 0x6c, 0x07, 0x2b, 0x3d, 0x46, 0xdb, 0xa0, 0x20, 0x8d, 0x1d, 0xf0, 0xda, 0xea, 0xe4, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xad, 0x00, 0xdc, 0xc1, 0x3a, 0x8f, 0xd1, 0x0d, 0x4a, 0x78, 0xcc, 0x35, 0x58, 0x96, 0x31, 0xdc, 0x06, 0x05, 0x45, 0xe6, 0x06, 0xc7, 0x70, 0x83, 0x83, 0x85, 0x11, 0xc3, 0x87, 0x53, 0x6c, 0x01, 0xbf, 0xed, 0x6d, 0x6c, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0xfa, 0x32, 0xdc, 0x00, 0x7e, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x6e, 0x6f, 0x63, 0x6b, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0x68, 0xf1, 0x71, 0x10, 0xa6, 0x63, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x33, 0x7b, 0x63, 0x0f, 0xc2, 0x74, 0xac, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x62, 0x1c, 0xd1, 0x0d, 0xc2, 0x69, 0x6c, 0x83, 0x22, 0x15, 0x73, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0xdc, 0xe0, 0x30, 0x2c, 0x50, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xac, 0x87, 0x03, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x68, 0x06, 0x78, 0x0d, 0xbf, 0xb8, 0x6c, 0xf8, 0x14, 0x70, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xb0, 0x69, 0xb8, 0x36, 0x58, 0x83, 0x77, 0x5a, 0xab, 0xc1, 0x92, 0x94, 0xa0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x25, 0x29, 0x41, 0x0d, 0xe0, 0x49, 0x97, 0x07, 0x57, 0x46, 0x06, 0x62, 0x97, 0x26, 0x47, 0x57, 0x17, 0xc6, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0x96, 0xa4, 0x04, 0x6d, 0x50, 0x28, 0x77, 0x6e, 0xb0, 0x76, 0x04, 0x78, 0x83, 0x82, 0x34, 0x76, 0xc0, 0x6b, 0xab, 0x23, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xdb, 0xea, 0xe8, 0xca, 0x0e, 0xd6, 0x79, 0x8c, 0x6e, 0x10, 0xa4, 0xa7, 0x6b, 0x1c, 0xda, 0x60, 0xe1, 0xe3, 0x70, 0x6b, 0x10, 0xb0, 0x41, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x15, 0x98, 0xec, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0x3e, 0x58, 0x18, 0x31, 0xdc, 0x1a, 0x84, 0x11, 0xd0, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xe6, 0x24, 0xbb, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xb0, 0xa8, 0x73, 0xb8, 0x0e, 0xa7, 0xd8, 0x02, 0x7e, 0xdb, 0x9b, 0xdb, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0x36, 0x77, 0xb8, 0x01, 0xfc, 0xec, 0xd2, 0xe4, 0xe8, 0xea, 0xc2, 0xd8, 0x40, 0xe6, 0xd8, 0xc2, 0xda, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x0e, 0xfe, 0x7b, 0xb0, 0x30, 0x6a, 0x78, 0xc3, 0x5f, 0x34, 0x1b, 0xac, 0xfa, 0x04, 0xde, 0xa0, 0xd8, 0xd1, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x83, 0x53, 0x36, 0xc6, 0x06, 0x0b, 0xc9, 0x7f, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x84, 0x1b, 0xea, 0x41, 0x59, 0xe7, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xd2, 0x97, 0xe1, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x2e, 0xa9, 0x0d, 0xd6, 0x73, 0x0f, 0xaf, 0xc1, 0x31, 0xe6, 0x6c, 0xc3, 0xdb, 0x3a, 0x1b, 0xac, 0x52, 0xff, 0xad, 0x83, 0x45, 0x3b, 0xc0, 0x07, 0x4b, 0xe2, 0x86, 0x57, 0x83, 0x35, 0x3a, 0x44, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x6b, 0x74, 0x88, 0x1a, 0xc0, 0x5f, 0x2e, 0xec, 0x0e, 0xc4, 0x2e, 0x4d, 0x8e, 0xae, 0x2e, 0x8c, 0x0d, 0xc4, 0xed, 0x6d, 0x6c, 0x6d, 0xc3, 0xe3, 0x23, 0x1b, 0xac, 0xd1, 0x21, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x80, 0x77, 0xae, 0x4e, 0x4c, 0xad, 0x6c, 0x8c, 0x3e, 0x08, 0xd3, 0xb1, 0x35, 0xfc, 0xb9, 0x34, 0xc0, 0x6b, 0xf6, 0x26, 0xd7, 0x56, 0xc7, 0x16, 0x1e, 0x84, 0xe9, 0x58, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x9f, 0x1b, 0x93, 0xcb, 0x0f, 0x16, 0x56, 0x0d, 0xb7, 0x41, 0x69, 0x6f, 0xb9, 0x41, 0x12, 0x28, 0xf1, 0x06, 0x07, 0x2c, 0xba, 0x35, 0xfc, 0x45, 0xb3, 0xc1, 0xaa, 0x4c, 0xe0, 0x0d, 0x4e, 0x0e, 0x72, 0x6b, 0xb0, 0x1e, 0x84, 0xb8, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xb8, 0xa1, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0xd2, 0x47, 0x89, 0x6b, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x91, 0x8a, 0x79, 0x70, 0x88, 0xe9, 0xd8, 0xa0, 0x20, 0x8d, 0xdd, 0x20, 0x58, 0x96, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x8d, 0x0e, 0xf1, 0x86, 0x4b, 0x6a, 0x8d, 0x43, 0x07, 0x6b, 0x74, 0x88, 0x6b, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x42, 0x3a, 0x75, 0xe3, 0xd0, 0x41, 0x00, 0x56, 0xad, 0xe1, 0x6d, 0x9d, 0x83, 0x00, 0xac, 0xda, 0xa0, 0x20, 0x8d, 0xdd, 0x20, 0x08, 0x97, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x8d, 0x0e, 0xf1, 0x86, 0x4b, 0x6a, 0x8d, 0xe7, 0x07, 0x6b, 0x74, 0x88, 0x6b, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x42, 0x3a, 0x75, 0xe3, 0xd0, 0x41, 0x00, 0x2e, 0x6d, 0x70, 0xb0, 0x96, 0xdb, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x02, 0x80, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xe1, 0x91, 0x76, 0x10, 0x80, 0x55, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xf0, 0x48, 0x3b, 0x08, 0xc0, 0xa5, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0x84, 0x74, 0xea, 0x1a, 0xfe, 0x5c, 0xda, 0xe0, 0x4c, 0x9f, 0x7a, 0xf8, 0xa1, 0xa6, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0x1f, 0x2e, 0x4c, 0x8e, 0x5e, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x85, 0x97, 0x59, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0xce, 0xf4, 0xa9, 0x07, 0x6b, 0x74, 0x88, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x0b, 0x32, 0x88, 0x6b, 0x83, 0x12, 0x1e, 0x73, 0x0d, 0x96, 0x60, 0x12, 0xb7, 0xc1, 0x52, 0x1e, 0xe2, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x2c, 0x00, 0x78, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1f, 0x2c, 0x68, 0x25, 0x6e, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0xe0, 0xa8, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0xfe, 0xb1, 0x37, 0xb7, 0x39, 0xba, 0x30, 0x37, 0xfa, 0x20, 0x4c, 0xc7, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x02, 0x80, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x4b, 0x80, 0x89, 0x0f, 0xd6, 0xe8, 0x10, 0xb7, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x88, 0x4d, 0x0f, 0x56, 0x5c, 0x10, 0x6f, 0x50, 0x90, 0xc6, 0x6e, 0xb0, 0x20, 0x83, 0x78, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xd6, 0xe8, 0x10, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0x05, 0x19, 0xc4, 0x07, 0x6b, 0x74, 0x88, 0xdb, 0xa0, 0xd8, 0xd1, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x83, 0x90, 0x4e, 0xdd, 0x38, 0x74, 0xb0, 0x0e, 0x95, 0x78, 0x83, 0xc5, 0xa6, 0xc4, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0xac, 0x07, 0x21, 0x5e, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x35, 0x3a, 0xc4, 0x1b, 0xde, 0xd6, 0xd9, 0x60, 0x3d, 0x08, 0xf1, 0xc1, 0x1a, 0x1d, 0xe2, 0x36, 0x28, 0x76, 0x34, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0xa4, 0x53, 0x0f, 0x16, 0x54, 0x11, 0xaf, 0xe1, 0x6d, 0x9d, 0x83, 0x35, 0x3a, 0xc4, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0x43, 0x25, 0xde, 0xf0, 0xb6, 0xce, 0x06, 0xe1, 0x91, 0x76, 0xb0, 0x0e, 0x95, 0x78, 0x0d, 0xd6, 0xe8, 0x10, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0xf0, 0x48, 0x3b, 0x58, 0xa3, 0x43, 0xdc, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x90, 0x39, 0x5d, 0xc3, 0x9f, 0x4b, 0x03, 0xfc, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0xf4, 0x41, 0x98, 0x8e, 0xb5, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0xda, 0x92, 0xe2, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0xa3, 0x43, 0xbc, 0xe1, 0x6d, 0x9d, 0x0d, 0xd6, 0x96, 0x14, 0x1f, 0xac, 0xd1, 0x21, 0x6e, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x42, 0x3a, 0x75, 0xe3, 0xd0, 0x06, 0x6b, 0x4b, 0x8a, 0x5b, 0xc3, 0xdb, 0x3a, 0x07, 0xeb, 0x85, 0x8a, 0x37, 0xfc, 0xe2, 0xb2, 0xc1, 0xb2, 0x00, 0xe0, 0x35, 0x58, 0x03, 0xb4, 0xb4, 0xe1, 0x6d, 0x9d, 0x0d, 0xc2, 0x23, 0xed, 0x60, 0xbd, 0x50, 0x71, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0xa0, 0xe1, 0x1d, 0x2c, 0x1e, 0x29, 0xde, 0xa0, 0x20, 0x8d, 0xdd, 0x60, 0x6d, 0x49, 0xf1, 0x06, 0x4b, 0x61, 0x8a, 0x37, 0x28, 0x76, 0x34, 0x37, 0x58, 0xe0, 0x53, 0xbc, 0xc1, 0xb2, 0xa2, 0xe2, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0x16, 0x44, 0x15, 0x6f, 0xb0, 0x94, 0x87, 0x78, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x0b, 0x00, 0x5e, 0xc3, 0xc7, 0x51, 0x07, 0xab, 0x9e, 0x8a, 0x5b, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0x7e, 0x70, 0x8e, 0x60, 0x3b, 0x28, 0x7e, 0xf1, 0x37, 0x28, 0x48, 0x63, 0x07, 0x0f, 0xd7, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x8d, 0x0e, 0xf1, 0x86, 0xb7, 0x75, 0x06, 0x0f, 0x0f, 0xd6, 0xe8, 0x10, 0xb7, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x21, 0x9d, 0x7a, 0x50, 0x3a, 0xbf, 0x6f, 0x78, 0x5a, 0x67, 0x83, 0x82, 0x34, 0x76, 0x70, 0x71, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xd6, 0xe8, 0x10, 0x6f, 0x78, 0x5b, 0x67, 0x70, 0xf1, 0x60, 0x8d, 0x0e, 0x71, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0x10, 0xd2, 0xa9, 0x07, 0x45, 0x1f, 0xed, 0x86, 0xf7, 0x82, 0x36, 0xfc, 0xe2, 0xb2, 0xc1, 0xb2, 0x00, 0xe0, 0x35, 0xfc, 0x9b, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x08, 0x8f, 0xb4, 0xc3, 0x83, 0x3b, 0x1b, 0xde, 0xd6, 0xd9, 0x20, 0x3c, 0xd2, 0x0e, 0x9f, 0x07, 0xb5, 0x1a, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0xfc, 0xe0, 0x24, 0x3d, 0xb3, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x54, 0x97, 0x1d, 0x84, 0xe9, 0xd8, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xf2, 0xca, 0xe6, 0x83, 0x30, 0x1d, 0x5b, 0xc3, 0x9f, 0x4b, 0x03, 0xef, 0xf6, 0x1e, 0x84, 0xe9, 0x58, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x7c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0xf4, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0xd1, 0x21, 0xde, 0xf0, 0xb6, 0xce, 0x06, 0x87, 0xea, 0xb2, 0x83, 0x35, 0x3a, 0xc4, 0x6d, 0x50, 0xec, 0x68, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x48, 0xa7, 0x6e, 0x1c, 0xda, 0x60, 0xed, 0x74, 0x71, 0x6b, 0x78, 0x5b, 0xe7, 0x60, 0x71, 0x7a, 0xf1, 0x06, 0x27, 0x07, 0xb9, 0x35, 0x08, 0x8f, 0xb4, 0x83, 0xc5, 0xe9, 0xc5, 0x1b, 0x2c, 0xe5, 0x21, 0x5e, 0x83, 0x80, 0x0d, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x8d, 0x0e, 0xf1, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x86, 0x5c, 0x7c, 0xb0, 0x46, 0x87, 0xb8, 0x35, 0x08, 0x23, 0xa0, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xd6, 0xe8, 0x10, 0x6f, 0x78, 0x5b, 0x67, 0xe0, 0xdd, 0xde, 0x83, 0x35, 0x3a, 0xc4, 0xb5, 0x1a, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0xfc, 0xe0, 0x28, 0x41, 0xb3, 0xc1, 0x9a, 0x0b, 0xe2, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0xfa, 0xe1, 0xda, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x82, 0x34, 0x76, 0x83, 0x05, 0x19, 0xc4, 0x1b, 0x2c, 0xd8, 0x26, 0xde, 0xa0, 0xd8, 0xd1, 0xdc, 0x60, 0x19, 0x3a, 0xf1, 0x06, 0x8b, 0x4d, 0x89, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0x56, 0x40, 0x14, 0xaf, 0xc1, 0x1a, 0x1d, 0xe2, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x7e, 0xb8, 0xf6, 0x60, 0x8d, 0x0e, 0x71, 0xab, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x0f, 0xce, 0x31, 0x73, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x60, 0x59, 0x3a, 0x08, 0xd3, 0xb1, 0x83, 0x05, 0x1a, 0xc6, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0x04, 0xcb, 0xd2, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0xd1, 0x21, 0xde, 0xf0, 0xb6, 0xce, 0x06, 0xc1, 0xb2, 0x74, 0xb0, 0x46, 0x87, 0xb8, 0x0d, 0x8a, 0x1d, 0xcd, 0x0d, 0x16, 0x6a, 0x11, 0x6f, 0xb0, 0x2a, 0x8c, 0x78, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x75, 0xa8, 0xc4, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x71, 0x20, 0xf1, 0xc1, 0x52, 0x53, 0xe2, 0x83, 0xb5, 0x31, 0xc6, 0xab, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x0f, 0x12, 0x55, 0xab, 0x36, 0x58, 0x09, 0x49, 0xbc, 0x86, 0x3f, 0x97, 0x36, 0xcc, 0xd0, 0x41, 0x98, 0x8e, 0xb5, 0x41, 0x41, 0x1a, 0xbb, 0x61, 0x86, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x8d, 0x0e, 0xf1, 0x86, 0xb7, 0x75, 0x36, 0xcc, 0xd0, 0xc1, 0x1a, 0x1d, 0xe2, 0x36, 0x28, 0x76, 0x34, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0xa4, 0x53, 0x37, 0x0e, 0x6d, 0x98, 0xa1, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0x9a, 0x45, 0xe3, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0x2f, 0x4c, 0xae, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0xe5, 0x24, 0xde, 0x60, 0x35, 0x28, 0xf1, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x3c, 0xd2, 0x0e, 0xd6, 0x2c, 0x1a, 0xb7, 0x41, 0x09, 0x8f, 0xb9, 0x06, 0x4b, 0x25, 0x8d, 0xdb, 0x60, 0x29, 0x0f, 0xf1, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xeb, 0x50, 0x89, 0x0f, 0x56, 0x6c, 0x1a, 0xaf, 0xc1, 0x1a, 0x1d, 0xe2, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1f, 0xac, 0x17, 0x35, 0x6e, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x41, 0xa2, 0x6c, 0xd5, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x25, 0x24, 0xf1, 0x1a, 0xfe, 0x5c, 0xda, 0xe0, 0x44, 0xeb, 0x71, 0x10, 0xa6, 0x63, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x3e, 0xba, 0x30, 0xb9, 0xb3, 0x32, 0xfa, 0x20, 0x4c, 0xc7, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0xc1, 0x6a, 0x50, 0xe2, 0x0d, 0x96, 0xf2, 0x10, 0x6f, 0x50, 0x90, 0xc6, 0x6e, 0xb0, 0xe4, 0xd8, 0x78, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xd6, 0xe8, 0x10, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0x25, 0xc7, 0xc6, 0x07, 0x6b, 0x74, 0x88, 0xdb, 0xa0, 0xd8, 0xd1, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x83, 0x90, 0x4e, 0xdd, 0x38, 0xb4, 0xc1, 0x92, 0x63, 0xe3, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0x6a, 0x76, 0xe3, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x4e, 0xb4, 0x1e, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0x46, 0x87, 0x78, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0x68, 0x3d, 0x0e, 0xd6, 0xe8, 0x10, 0xb7, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x21, 0x9d, 0xba, 0x71, 0xe8, 0xe0, 0x3c, 0xeb, 0xb1, 0x86, 0xb7, 0x75, 0x0e, 0xce, 0xb3, 0x1e, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0xf8, 0xbe, 0x7d, 0x80, 0xaf, 0xad, 0x8e, 0x2e, 0xcc, 0x8d, 0xde, 0xa0, 0x84, 0x8e, 0xdd, 0xe0, 0x9c, 0x64, 0x75, 0x10, 0xa6, 0x63, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x65, 0x64, 0x69, 0x74, 0x1b, 0xac, 0x06, 0x25, 0x5e, 0xc3, 0xdb, 0x3a, 0x1b, 0x84, 0x47, 0xda, 0xc1, 0x6a, 0x76, 0xe3, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x78, 0xa4, 0x1d, 0x9c, 0x67, 0x3d, 0xda, 0xa0, 0x84, 0xc7, 0x5c, 0x83, 0x05, 0x13, 0xc7, 0x6d, 0xb0, 0x94, 0x87, 0x78, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x0b, 0x00, 0x5e, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0xcb, 0x65, 0x8e, 0x5b, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0x7e, 0x90, 0x04, 0x6d, 0xb7, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x35, 0x10, 0x7c, 0xf8, 0xa1, 0xe6, 0x60, 0x81, 0x86, 0xf1, 0x06, 0x05, 0x69, 0xec, 0x06, 0xeb, 0x87, 0x6b, 0xd7, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x0e, 0xd6, 0xc6, 0x18, 0x6f, 0x50, 0xec, 0x68, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x48, 0xa7, 0x6e, 0x1c, 0x3a, 0x58, 0x3d, 0x5c, 0xbb, 0xc1, 0x12, 0xe1, 0xda, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x96, 0x05, 0x00, 0x6f, 0xb0, 0x20, 0x64, 0x69, 0x83, 0xc5, 0xa6, 0xc4, 0x1b, 0x7e, 0x71, 0xd9, 0x20, 0x9d, 0xd9, 0x6e, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x6a, 0x20, 0xf8, 0x60, 0x8d, 0x0e, 0xf1, 0x86, 0xc7, 0x64, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xe1, 0x91, 0x76, 0xb0, 0x7a, 0xb8, 0xb6, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xab, 0x84, 0x8e, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0xeb, 0x8b, 0x8e, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x3f, 0xc6, 0x56, 0x57, 0x1e, 0x84, 0xe9, 0x58, 0x07, 0x0b, 0x34, 0x8c, 0x37, 0x28, 0x48, 0x63, 0x37, 0x58, 0x61, 0x78, 0xbc, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x6b, 0x74, 0x88, 0x37, 0xbc, 0xad, 0xb3, 0xc1, 0x0a, 0xc3, 0xe3, 0x83, 0x35, 0x3a, 0xc4, 0x6d, 0x50, 0xec, 0x68, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x48, 0xa7, 0x6e, 0x1c, 0xda, 0x60, 0x85, 0xe1, 0x71, 0x6b, 0x78, 0x5b, 0xe7, 0x60, 0xd1, 0xe8, 0xf1, 0x06, 0x05, 0x69, 0xec, 0x06, 0xeb, 0x87, 0x6b, 0xd7, 0xe0, 0x38, 0x36, 0xb1, 0xc1, 0x02, 0x21, 0xe2, 0x35, 0x28, 0x26, 0x31, 0xd7, 0x20, 0xd8, 0x4c, 0x37, 0x58, 0xa2, 0x12, 0xbc, 0xc1, 0x02, 0xc2, 0xe0, 0x0d, 0xd6, 0xae, 0x05, 0x6f, 0xb0, 0x20, 0x33, 0x78, 0x83, 0x55, 0xde, 0xc1, 0x1d, 0xac, 0x81, 0x3b, 0x5e, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x85, 0x6e, 0xc7, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xf0, 0x48, 0x3b, 0x58, 0x34, 0x7a, 0xdc, 0xc1, 0x1a, 0x20, 0xe2, 0x83, 0xc5, 0x51, 0xc7, 0x1b, 0x14, 0x3b, 0x9a, 0x1b, 0xac, 0xc6, 0x3a, 0xde, 0x60, 0x89, 0x70, 0xed, 0x06, 0x85, 0xa1, 0xea, 0x06, 0xcb, 0x02, 0x80, 0x37, 0x58, 0x10, 0xb2, 0xb4, 0xc1, 0x62, 0x53, 0xe2, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0xce, 0x6c, 0xb7, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xe8, 0x76, 0xbc, 0xe1, 0x31, 0x99, 0x83, 0x15, 0xc9, 0xc7, 0x07, 0xeb, 0xe8, 0x8e, 0x57, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x1f, 0xac, 0xee, 0x70, 0x5b, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x5c, 0x99, 0x79, 0x10, 0xa6, 0x63, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x83, 0xe9, 0xe7, 0x41, 0x98, 0x8e, 0xb5, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0x9a, 0xfb, 0xe3, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0xa3, 0x43, 0xbc, 0xe1, 0x6d, 0x9d, 0x0d, 0xd6, 0xdc, 0x1f, 0x1f, 0xac, 0xd1, 0x21, 0x6e, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x42, 0x3a, 0x75, 0xe3, 0xd0, 0x06, 0x6b, 0xee, 0x8f, 0x5b, 0xc3, 0xdb, 0x3a, 0x07, 0xeb, 0x2e, 0x90, 0x37, 0x28, 0x48, 0x63, 0x37, 0x38, 0x98, 0x7e, 0xae, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0x1a, 0x1d, 0xe2, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x30, 0xfd, 0x3c, 0x58, 0xa3, 0x43, 0xdc, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x84, 0x74, 0xea, 0xc6, 0xa1, 0x83, 0x03, 0x14, 0xea, 0x06, 0xab, 0xa1, 0x82, 0x37, 0x28, 0x48, 0x63, 0x37, 0x58, 0x3b, 0x5d, 0xbc, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x0b, 0x52, 0x88, 0x5b, 0xc3, 0xdb, 0x3a, 0x1b, 0x84, 0x47, 0xda, 0xc1, 0xba, 0x0b, 0xe4, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x78, 0xa4, 0x1d, 0x1c, 0xa0, 0x50, 0xdb, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0x71, 0x7a, 0xf1, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x1b, 0x77, 0x87, 0x9f, 0x65, 0x0e, 0x16, 0x20, 0x21, 0x6f, 0x50, 0xc2, 0x63, 0x2e, 0x78, 0x7d, 0xb0, 0x38, 0xbd, 0x78, 0x0d, 0xbf, 0xb8, 0x6c, 0x10, 0x6e, 0xa8, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x1d, 0x2c, 0x5d, 0x09, 0x3e, 0x58, 0x24, 0x84, 0x7c, 0xb0, 0x06, 0x88, 0x78, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x0b, 0x00, 0x5e, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0xab, 0xb6, 0x90, 0x6b, 0x99, 0x35, 0x58, 0x78, 0x99, 0xb5, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x4a, 0x48, 0xe2, 0x35, 0xfc, 0xb9, 0xb4, 0x61, 0x3a, 0x0f, 0xc2, 0x74, 0xac, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x18, 0x16, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x86, 0xb7, 0x75, 0x36, 0x38, 0xd3, 0xa7, 0xb6, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x18, 0x16, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0x98, 0xcc, 0xc1, 0xba, 0x45, 0xe4, 0x35, 0x38, 0x86, 0x1b, 0x6c, 0x78, 0x5b, 0xe7, 0x60, 0x4d, 0xc7, 0xd1, 0x06, 0x05, 0xc1, 0xec, 0x06, 0x6b, 0x3a, 0x8e, 0x36, 0x28, 0x28, 0x32, 0x37, 0x28, 0x48, 0x63, 0x37, 0x58, 0x9a, 0x73, 0xbb, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x86, 0x3e, 0xf8, 0x6d, 0xb0, 0x6e, 0x11, 0xb9, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x96, 0x34, 0x22, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xf8, 0xda, 0xa3, 0x83, 0xb5, 0xb3, 0xc8, 0x6b, 0xb0, 0xa6, 0xe3, 0x68, 0x83, 0x20, 0x3d, 0x5d, 0x83, 0xa5, 0x39, 0xb7, 0xad, 0x41, 0x10, 0x9b, 0x6e, 0xb8, 0xa4, 0xd6, 0x38, 0x74, 0xb0, 0xa6, 0xe3, 0xa8, 0x35, 0x08, 0x99, 0xd3, 0x0d, 0x97, 0xd4, 0x1a, 0xcf, 0x0f, 0xd6, 0x74, 0x1c, 0x55, 0xab, 0xc1, 0x2a, 0x90, 0xe3, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x56, 0x42, 0x12, 0x6f, 0xb0, 0xaa, 0xd8, 0xf8, 0x60, 0xdd, 0xaf, 0xf1, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x0c, 0x0b, 0x6c, 0xf8, 0x20, 0x67, 0x83, 0x95, 0x98, 0xc8, 0x6b, 0x70, 0x0c, 0x37, 0x38, 0x58, 0xb7, 0x70, 0xbc, 0x41, 0x41, 0x30, 0xbb, 0xc1, 0x6a, 0x76, 0xe3, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x96, 0xe6, 0xdc, 0x6e, 0xb0, 0xce, 0x15, 0x79, 0x83, 0x82, 0x34, 0x76, 0x83, 0x05, 0x13, 0xc7, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x2c, 0xc8, 0x45, 0x5e, 0x83, 0xd5, 0xec, 0xc6, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0xcb, 0x8d, 0x91, 0xd7, 0x20, 0x88, 0x4d, 0x37, 0x5c, 0x52, 0x1b, 0x2c, 0x5e, 0x37, 0x6e, 0x0d, 0x42, 0xe6, 0x74, 0xc3, 0x25, 0xb5, 0xc6, 0xf3, 0x83, 0xd5, 0xec, 0xc6, 0xd5, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xcb, 0x65, 0x8e, 0x37, 0x28, 0x28, 0x32, 0x37, 0x08, 0xd2, 0xd3, 0x0d, 0x96, 0x1b, 0x23, 0xaf, 0x41, 0x10, 0x9b, 0x6e, 0x70, 0x0c, 0x37, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x76, 0x8e, 0x37, 0x58, 0x36, 0x91, 0xdc, 0x1a, 0x84, 0xcc, 0xe9, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xb4, 0x21, 0xf9, 0x60, 0xd1, 0xce, 0x71, 0x87, 0x53, 0xac, 0xc3, 0x29, 0xb6, 0x1a, 0x2c, 0x5e, 0x0d, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0xbc, 0x1a, 0xdc, 0x00, 0xf8, 0x54, 0xe7, 0x46, 0x97, 0x07, 0x57, 0x46, 0xc6, 0x02, 0x32, 0x37, 0x26, 0x97, 0xd7, 0xc2, 0x56, 0x36, 0x37, 0xc7, 0x02, 0x52, 0xe7, 0x96, 0x46, 0x17, 0x26, 0x97, 0x07, 0x62, 0x97, 0x26, 0x47, 0x57, 0x17, 0xc6, 0x96, 0xa6, 0x17, 0x46, 0x97, 0xf6, 0xe6, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0xd6, 0x12, 0x0d, 0x6f, 0xf8, 0x8b, 0x66, 0x83, 0xc3, 0xb0, 0xc0, 0x06, 0x05, 0x69, 0xec, 0x06, 0x6b, 0x5e, 0x80, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x8b, 0x66, 0x80, 0x37, 0x58, 0x98, 0x36, 0xbc, 0x06, 0x8b, 0x0b, 0x93, 0x36, 0x28, 0x52, 0x31, 0x0f, 0x0a, 0x8a, 0xcc, 0x0e, 0x16, 0x76, 0x01, 0x1f, 0x4e, 0xb1, 0x35, 0x58, 0x56, 0x39, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0xac, 0x72, 0xb8, 0x01, 0xbc, 0xeb, 0xdc, 0xe8, 0xf2, 0xe0, 0xca, 0xc8, 0x40, 0xec, 0xd2, 0xe4, 0xe8, 0xea, 0xc2, 0xd8, 0x36, 0xfc, 0xa2, 0xb4, 0xc1, 0xda, 0x11, 0xe0, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x82, 0xc0, 0xa6, 0x0d, 0xc2, 0x74, 0x6c, 0x83, 0x53, 0xbd, 0x68, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0xac, 0x79, 0x01, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x35, 0x1f, 0x3e, 0x58, 0x74, 0x03, 0xbc, 0x41, 0x90, 0x9e, 0x6e, 0xb0, 0x70, 0x0c, 0x78, 0x0d, 0x42, 0x3a, 0x75, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0x02, 0x93, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0x2b, 0xc9, 0x80, 0x5b, 0x83, 0xc0, 0x51, 0xdd, 0xa0, 0x20, 0x8d, 0xdd, 0x60, 0xc5, 0x4e, 0xf0, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xb9, 0x52, 0xf0, 0xc1, 0x22, 0xd6, 0xe4, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xcc, 0x49, 0x76, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x56, 0x6e, 0x05, 0xaf, 0xe1, 0x89, 0xbb, 0x0d, 0xcf, 0xe2, 0x1d, 0xac, 0x0d, 0x24, 0x3a, 0x58, 0x01, 0x16, 0x7c, 0x50, 0xd6, 0x79, 0xae, 0x41, 0x10, 0x9b, 0x6e, 0xf8, 0xc5, 0x65, 0x83, 0x65, 0x4e, 0xb2, 0x07, 0x8b, 0x58, 0x93, 0x3b, 0x9c, 0x62, 0x1d, 0x4e, 0xb1, 0x05, 0xe0, 0x05, 0x2e, 0x4c, 0x6e, 0x2e, 0xcd, 0xed, 0xac, 0x65, 0xec, 0xad, 0x4d, 0x2c, 0xcd, 0x2d, 0x8c, 0xee, 0x4d, 0x6e, 0x5e, 0x06, 0xa0, 0x91, 0xa6, 0x4c, 0x07, 0x04, 0x2e, 0x4c, 0x6e, 0x2e, 0xcd, 0xed, 0x0c, 0x04, 0x65, 0xec, 0xad, 0x4d, 0x2c, 0xcd, 0x2d, 0x8c, 0xee, 0x4d, 0x6e, 0x2e, 0xb5, 0x06, 0x8b, 0xb0, 0x89, 0x36, 0x3c, 0x3e, 0xb2, 0xc1, 0x22, 0x6c, 0xa2, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x21, 0x4c, 0x4e, 0x2c, 0x8d, 0x4e, 0x2e, 0x4c, 0x2e, 0x0f, 0x64, 0xec, 0xad, 0x0d, 0xee, 0x6d, 0xae, 0x6c, 0xc3, 0x9f, 0x4b, 0x1b, 0xac, 0x69, 0xb1, 0xdd, 0x20, 0x80, 0xce, 0x0e, 0xd6, 0xd4, 0xd8, 0x6e, 0x78, 0x7c, 0x64, 0x83, 0xb1, 0x2a, 0xb0, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xcb, 0x82, 0x46, 0x37, 0xfc, 0x3b, 0xbf, 0x41, 0x6a, 0xa2, 0x70, 0x07, 0xeb, 0x2b, 0x63, 0x37, 0x58, 0x8b, 0xce, 0xb4, 0xc1, 0x69, 0xe5, 0x6c, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xa5, 0x6e, 0xa3, 0x1b, 0x2c, 0x27, 0xb0, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xf2, 0xd2, 0xe8, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x14, 0x35, 0x76, 0x83, 0xe5, 0xa7, 0xa7, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x79, 0x75, 0xf2, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x93, 0xb6, 0xbb, 0xc1, 0xe2, 0xcd, 0xd3, 0x35, 0xbc, 0xad, 0x33, 0x38, 0xbc, 0xc1, 0xf2, 0x17, 0xe5, 0xda, 0xa0, 0x84, 0xc7, 0x5c, 0xf0, 0xf8, 0x60, 0xb5, 0x91, 0xf2, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xde, 0xd6, 0xd9, 0x60, 0xf5, 0x8e, 0x72, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x78, 0xc3, 0xdb, 0x3a, 0x07, 0xcb, 0x96, 0x94, 0xdb, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0xa0, 0x94, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x28, 0x32, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x19, 0x65, 0xbb, 0xc1, 0xca, 0xe2, 0xd3, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x3c, 0x78, 0x7d, 0xb0, 0x6c, 0x49, 0xb9, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x55, 0x78, 0xca, 0xd5, 0x6a, 0xb0, 0x46, 0x9e, 0x68, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0x8d, 0x3c, 0x51, 0x03, 0xf0, 0x41, 0x96, 0x36, 0x37, 0x16, 0x26, 0x47, 0x06, 0x62, 0x96, 0x26, 0x37, 0x47, 0x07, 0x22, 0x57, 0xc7, 0x56, 0xb6, 0xe1, 0xf1, 0x91, 0x0d, 0xd6, 0xc8, 0x13, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0x56, 0xa9, 0xff, 0x1e, 0xac, 0xaf, 0x50, 0xde, 0xe0, 0xd4, 0x70, 0xb4, 0xc1, 0x32, 0xf9, 0xe1, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xb0, 0xe6, 0x74, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0xca, 0x58, 0xfc, 0xc3, 0x7b, 0x41, 0xad, 0x06, 0x6b, 0x92, 0x41, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xd6, 0x24, 0x83, 0x36, 0x00, 0x2f, 0x6e, 0x6f, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0xac, 0xaf, 0x50, 0xde, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0xa9, 0xdb, 0xe8, 0x1a, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x2c, 0xa4, 0x17, 0xdd, 0xf0, 0x6e, 0xcf, 0xc1, 0x42, 0xd4, 0xd8, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x26, 0x6d, 0x77, 0x83, 0xc5, 0x9b, 0xa7, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0x60, 0xe5, 0xcd, 0x68, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x78, 0xc3, 0xdb, 0x3a, 0x07, 0x2b, 0x6d, 0x46, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x3e, 0x6b, 0xd7, 0x70, 0x49, 0xad, 0x21, 0x75, 0x70, 0xb0, 0x4a, 0x35, 0xb6, 0x66, 0x0d, 0x96, 0x9a, 0x8c, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x2c, 0x35, 0x19, 0x6d, 0x00, 0x7f, 0xb3, 0x34, 0xb9, 0x39, 0x3a, 0x90, 0x30, 0x37, 0x32, 0x90, 0xb9, 0xb2, 0xb1, 0x37, 0x37, 0xb2, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0xd6, 0x57, 0x28, 0x6f, 0x50, 0xc2, 0x63, 0x6e, 0xb0, 0xd4, 0x6d, 0x74, 0x83, 0xe5, 0x04, 0xb6, 0x1b, 0x3e, 0xb1, 0xd9, 0x60, 0x39, 0xb4, 0xf2, 0xc1, 0x02, 0x9d, 0xd1, 0xc3, 0x29, 0xb6, 0x06, 0xab, 0x50, 0x8a, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x56, 0xa1, 0x14, 0x35, 0x80, 0xb7, 0x59, 0x9a, 0xdc, 0x1c, 0x1d, 0xc8, 0x9b, 0x1c, 0xc8, 0x5c, 0xd9, 0xd8, 0x9b, 0x1b, 0xd9, 0x86, 0xc7, 0x47, 0x36, 0x58, 0x85, 0x52, 0xb4, 0x41, 0xa1, 0xdc, 0xb9, 0xc1, 0xfa, 0x0a, 0xe5, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x96, 0xba, 0x8d, 0x6e, 0xb0, 0xe2, 0x59, 0xf9, 0x60, 0x39, 0x81, 0xed, 0xe1, 0x14, 0x5b, 0x83, 0x25, 0x42, 0x45, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x4b, 0x84, 0x8a, 0x1a, 0x80, 0x17, 0xb2, 0xb4, 0xb9, 0xb1, 0x30, 0x39, 0x32, 0x90, 0xb9, 0xb2, 0xb1, 0x37, 0x37, 0x32, 0x10, 0xb9, 0x3a, 0xb6, 0xb2, 0x0d, 0x8f, 0x8f, 0x6c, 0xb0, 0x44, 0xa8, 0x68, 0x83, 0x42, 0xb9, 0x73, 0x83, 0xd5, 0x9d, 0xca, 0x1b, 0x9c, 0x1a, 0x8e, 0x36, 0x58, 0x26, 0x3f, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0xd6, 0x9c, 0xae, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0x19, 0x8b, 0x7f, 0x78, 0x5a, 0xa7, 0xd5, 0x60, 0xe5, 0x5d, 0xd1, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xca, 0xbb, 0xa2, 0x06, 0xf0, 0x1f, 0x7b, 0x73, 0x23, 0x4b, 0xa3, 0x4b, 0x7b, 0x73, 0x0b, 0x63, 0x03, 0x19, 0x7b, 0x6b, 0x83, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0x2b, 0xef, 0x8a, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x6b, 0x5a, 0x6c, 0x37, 0x08, 0xa0, 0xb3, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0xca, 0x58, 0xfc, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0x50, 0x64, 0xae, 0xe1, 0x73, 0x97, 0xc1, 0xeb, 0x83, 0x92, 0x2f, 0xb8, 0x0d, 0x8f, 0x8f, 0x6c, 0x30, 0x56, 0x05, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x58, 0x5f, 0xa1, 0xbc, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x52, 0xb7, 0xd1, 0x0d, 0x96, 0x13, 0xd8, 0x6e, 0xf8, 0xc4, 0x66, 0x83, 0x15, 0x2e, 0xca, 0x1b, 0x3e, 0xb1, 0xd9, 0x60, 0x81, 0x8e, 0xf2, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xcb, 0x96, 0x94, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0xa0, 0x94, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0xb7, 0x75, 0x0e, 0x96, 0xba, 0x8d, 0xb6, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xd9, 0xd5, 0xe1, 0x07, 0xeb, 0xde, 0x94, 0x37, 0x28, 0xe1, 0x31, 0xd7, 0x60, 0x1d, 0xf0, 0x72, 0x1b, 0x2c, 0x92, 0x5d, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0xa0, 0x94, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x28, 0x32, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x16, 0x1b, 0x2f, 0x1f, 0x2c, 0xdc, 0x53, 0xae, 0x59, 0x83, 0xd5, 0x9a, 0x45, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xab, 0x35, 0x8b, 0x1a, 0x80, 0x07, 0xb3, 0x34, 0xb9, 0x39, 0x3a, 0x10, 0x3a, 0xb4, 0x32, 0x37, 0x90, 0xb9, 0xb2, 0xb1, 0x37, 0x37, 0xb2, 0x0d, 0x8f, 0x8f, 0x6c, 0xb0, 0x5a, 0xb3, 0x68, 0x83, 0x42, 0xb9, 0x73, 0x83, 0xf5, 0x15, 0xca, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x2c, 0x75, 0x1b, 0xdd, 0x60, 0x39, 0x81, 0xed, 0x86, 0x4f, 0x6c, 0x36, 0x58, 0xe1, 0xa2, 0xbc, 0xe1, 0x13, 0x9b, 0x0d, 0x16, 0xe8, 0x28, 0x6f, 0x50, 0xc2, 0x63, 0x6e, 0xb0, 0x6c, 0x49, 0x79, 0x83, 0x95, 0x4e, 0xca, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x19, 0x94, 0xf2, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0x05, 0x45, 0xe6, 0x1a, 0x3e, 0x77, 0x19, 0xbc, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x8b, 0xcb, 0xc1, 0xaa, 0x39, 0xe5, 0x83, 0x85, 0x7b, 0xca, 0x75, 0x38, 0xc5, 0xd6, 0x60, 0xd5, 0x70, 0xd1, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xaa, 0xe1, 0xa2, 0x06, 0xf8, 0xc3, 0xc8, 0xc8, 0x40, 0xe4, 0xea, 0xd8, 0xca, 0x36, 0x3c, 0x3e, 0xb2, 0xc1, 0xaa, 0xe1, 0xa2, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x16, 0xfc, 0xd8, 0x6e, 0x78, 0x7c, 0x64, 0x83, 0xb1, 0x2a, 0xb0, 0x41, 0xa1, 0xdc, 0xb9, 0xc1, 0xfa, 0x0a, 0xe5, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0xe5, 0x04, 0xb6, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x2c, 0x5e, 0xb3, 0x3d, 0x58, 0x88, 0x1a, 0xdb, 0x6a, 0xb0, 0x26, 0xb4, 0x76, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x2f, 0xb7, 0x32, 0xbb, 0x32, 0x39, 0x10, 0xb8, 0x30, 0xb9, 0xb9, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x70, 0xea, 0x74, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0x69, 0xbd, 0x3d, 0x58, 0x5f, 0x84, 0x7b, 0x38, 0xc5, 0x5a, 0x0d, 0x8e, 0x36, 0x9f, 0xcb, 0x00, 0xbc, 0xd2, 0xbc, 0xe9, 0x80, 0xb4, 0xbd, 0xb1, 0x91, 0xcd, 0x81, 0x84, 0xb9, 0x91, 0x81, 0xb4, 0xbd, 0xb1, 0x91, 0x81, 0x88, 0xd5, 0xa5, 0xb1, 0x91, 0x95, 0xc9, 0xcd, 0x2d, 0xe0, 0xd3, 0xbd, 0xb9, 0xe5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0xd6, 0x13, 0x32, 0x37, 0x00, 0x0f, 0x2b, 0x2b, 0x74, 0x6f, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x6e, 0x65, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xeb, 0x09, 0x99, 0x37, 0x08, 0xda, 0x9f, 0x35, 0x3c, 0xf1, 0xbe, 0x41, 0x12, 0x7b, 0xf0, 0x86, 0xcf, 0x95, 0x36, 0x08, 0xe9, 0xd4, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xe1, 0xdf, 0xf9, 0x05, 0x7c, 0xba, 0x34, 0xb7, 0xb2, 0x0e, 0x0e, 0x72, 0x18, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x1c, 0x9c, 0xe8, 0xde, 0x36, 0x7c, 0xae, 0xb4, 0x41, 0xe0, 0xa8, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x12, 0xf1, 0xbd, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xa3, 0x4c, 0x4e, 0xee, 0x4d, 0x0e, 0xc4, 0xef, 0x6b, 0x6e, 0xc3, 0xe7, 0x4a, 0x1b, 0x04, 0xb1, 0xe9, 0x1a, 0xfe, 0x5c, 0x1a, 0x1c, 0x3e, 0x48, 0x53, 0x25, 0xae, 0xd5, 0xf0, 0x45, 0xcd, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0xc3, 0x17, 0x35, 0x0d, 0xe0, 0x21, 0x16, 0x36, 0x57, 0x06, 0xd2, 0xf6, 0xc6, 0x46, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf8, 0xa2, 0x66, 0xc3, 0x07, 0xf3, 0x6b, 0x10, 0x6c, 0xa6, 0x6b, 0x78, 0xe2, 0x7d, 0x83, 0x93, 0x6f, 0xe9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xd3, 0xb9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7f, 0x98, 0x5b, 0x1e, 0xc8, 0x58, 0x19, 0x1b, 0xdb, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x13, 0xb7, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x2f, 0xdb, 0xdb, 0x9b, 0x58, 0x59, 0x98, 0xdb, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xcf, 0xad, 0xae, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x40, 0xe7, 0x07, 0xd2, 0xd3, 0x03, 0x02, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xe0, 0x3e, 0xac, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x47, 0x59, 0x1b, 0x1c, 0x5d, 0x1e, 0xc8, 0x5c, 0x19, 0xdd, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x56, 0x39, 0x18, 0xb5, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x73, 0xf8, 0xb7, 0x66, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x50, 0xc7, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x86, 0x7f, 0xe7, 0x17, 0xf0, 0xc3, 0xea, 0xe4, 0xc2, 0x6a, 0x35, 0xd4, 0xf1, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x43, 0x1d, 0xdf, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x4f, 0xad, 0x6e, 0x8e, 0x0e, 0x24, 0xcc, 0x0d, 0x24, 0x8c, 0xee, 0xad, 0xed, 0xf0, 0x43, 0xcd, 0x0a, 0xf8, 0x70, 0x61, 0x6c, 0xef, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x2a, 0xa7, 0xe6, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0xb8, 0x4b, 0x73, 0x3b, 0x03, 0xa1, 0x93, 0x0b, 0x1b, 0x2b, 0x63, 0x01, 0x69, 0x0b, 0xa3, 0x1b, 0x43, 0xdb, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0xd7, 0xf0, 0xef, 0xfc, 0x02, 0xbe, 0x5d, 0x59, 0x9a, 0x5b, 0x6b, 0xf8, 0x77, 0x7e, 0x01, 0xff, 0x0d, 0x2e, 0x8c, 0xad, 0x0e, 0xa7, 0xd8, 0x02, 0x3e, 0xdd, 0x1b, 0x5c, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0x60, 0xcd, 0x5c, 0x73, 0x03, 0xf8, 0xd3, 0xbd, 0xc1, 0xbd, 0x9d, 0xc9, 0x85, 0xc1, 0xa1, 0xa5, 0x8d, 0x81, 0xd0, 0xe5, 0xc1, 0x95, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0x99, 0x6b, 0xde, 0xf0, 0xc1, 0xfc, 0x1a, 0x04, 0x9b, 0xe9, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0x8d, 0x95, 0xb1, 0xb1, 0x81, 0xbc, 0xc9, 0x81, 0x84, 0xd1, 0xbd, 0xb5, 0x1d, 0x04, 0x6c, 0xd0, 0x1a, 0x9e, 0x78, 0xdf, 0x60, 0x89, 0x4a, 0xf3, 0x41, 0x18, 0x01, 0xb5, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0xb3, 0x61, 0xe2, 0xda, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0xd7, 0xf0, 0xef, 0xfc, 0x1a, 0xac, 0x99, 0x6b, 0xae, 0x0d, 0x16, 0xad, 0x36, 0xb7, 0x1a, 0x24, 0x2d, 0x08, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x24, 0x2d, 0x08, 0x37, 0x00, 0x9e, 0x84, 0x89, 0xcd, 0xd1, 0xc9, 0x85, 0x8d, 0xd1, 0x81, 0xa4, 0x91, 0x95, 0xb9, 0xd1, 0xa5, 0xd1, 0xe5, 0x81, 0xbc, 0x99, 0x81, 0xc8, 0x95, 0xcd, 0xbd, 0xd5, 0xc9, 0x8d, 0x95, 0x81, 0x84, 0xdd, 0x85, 0xa5, 0xd1, 0x95, 0x91, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x24, 0x2d, 0x08, 0x1f, 0x9c, 0x91, 0x50, 0x0f, 0xa7, 0xd8, 0x02, 0xbe, 0x5d, 0x5a, 0x18, 0xbb, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0x16, 0xbb, 0x79, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xef, 0xb1, 0xb7, 0x97, 0xb1, 0x37, 0x37, 0x3a, 0xb9, 0xb0, 0x97, 0x34, 0xb7, 0x17, 0xb1, 0xb4, 0x0d, 0x82, 0xcd, 0x74, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x2c, 0x49, 0x36, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x2b, 0xaf, 0x8d, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xb9, 0xe8, 0x60, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xac, 0x19, 0x36, 0xea, 0x70, 0x8a, 0x2d, 0xe0, 0xd3, 0xe5, 0xad, 0x95, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xeb, 0x0b, 0x9c, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xff, 0xce, 0x6f, 0x90, 0xba, 0xe6, 0x5d, 0xad, 0x80, 0x6f, 0x17, 0x36, 0x57, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0xd4, 0x70, 0xde, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x9b, 0x2e, 0x0f, 0xae, 0xac, 0xc5, 0x2e, 0x8c, 0xad, 0xae, 0x0c, 0x04, 0x2e, 0x2c, 0x4d, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0x78, 0xc3, 0xbf, 0xf3, 0x6b, 0x70, 0xf2, 0x41, 0xad, 0x83, 0x83, 0x1c, 0xc6, 0x6a, 0x90, 0x66, 0xe6, 0xbd, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0x20, 0xcd, 0xcc, 0xbb, 0x01, 0x7e, 0xb4, 0xb7, 0x37, 0x37, 0x90, 0xa0, 0x29, 0xaa, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x34, 0x33, 0xef, 0x0d, 0x0e, 0x10, 0xa2, 0x1b, 0xa4, 0x99, 0x79, 0x6f, 0x10, 0x6a, 0x88, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0x44, 0x55, 0x0f, 0xca, 0x3a, 0xcf, 0x0d, 0x96, 0x2e, 0x57, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0x7c, 0xb0, 0xc0, 0xc2, 0x79, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1f, 0x2c, 0xb0, 0x70, 0x6e, 0x83, 0xa0, 0xfd, 0x59, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x9f, 0xb9, 0xb4, 0x36, 0x38, 0xb6, 0x32, 0x10, 0xb6, 0xb2, 0xb3, 0x0d, 0x9f, 0x2b, 0x6d, 0x90, 0x32, 0x18, 0xbc, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0xfc, 0x3b, 0xbf, 0xc1, 0x92, 0x46, 0xe4, 0x5a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x0f, 0xb1, 0xb0, 0xb9, 0x32, 0x90, 0x39, 0xb8, 0xb2, 0xb1, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc3, 0x17, 0x35, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0x78, 0xc3, 0xbf, 0xf3, 0x6b, 0xf8, 0xa2, 0xa6, 0x5a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x0f, 0xb1, 0x3a, 0x37, 0x3a, 0x10, 0xb1, 0xb0, 0xb9, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xa2, 0x22, 0xf3, 0x60, 0x45, 0xa4, 0xf3, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x42, 0x56, 0x26, 0x56, 0x77, 0x06, 0x92, 0xe6, 0x66, 0xf6, 0x06, 0x92, 0xe6, 0x06, 0x42, 0x27, 0x17, 0x36, 0x56, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x1f, 0x2c, 0x7d, 0x0f, 0x3e, 0x58, 0x5e, 0xe6, 0xbc, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbe, 0x61, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xcb, 0x17, 0x8f, 0x0e, 0x0e, 0x6f, 0xa2, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x0b, 0x27, 0x57, 0xd6, 0x16, 0x46, 0x56, 0x06, 0x22, 0x57, 0x36, 0x57, 0xc7, 0x46, 0xb7, 0xe1, 0x73, 0xa5, 0x0d, 0x16, 0x10, 0x06, 0x6f, 0xb0, 0x16, 0xc6, 0x79, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6f, 0xf8, 0x77, 0x7e, 0x01, 0xdf, 0xed, 0x6d, 0x6c, 0xad, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x0f, 0x73, 0x73, 0x7b, 0xa3, 0x0b, 0xa3, 0x2b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x3c, 0x4f, 0xb2, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0xfc, 0x3b, 0xbf, 0x86, 0xe7, 0x49, 0xea, 0x60, 0x79, 0x99, 0xf3, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x68, 0xd6, 0xb9, 0x91, 0x95, 0xc9, 0xb1, 0xe5, 0xa5, 0xb9, 0x9d, 0x81, 0xfc, 0xf4, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x16, 0x40, 0x1f, 0x6d, 0xb0, 0x24, 0xcc, 0x79, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6f, 0xf8, 0x77, 0x7e, 0x0d, 0x6f, 0xeb, 0x54, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x1d, 0x36, 0x37, 0x57, 0xd6, 0x26, 0xc6, 0x56, 0x06, 0x32, 0x47, 0x27, 0x97, 0xe6, 0x76, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x78, 0x16, 0x6f, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0xfe, 0x9d, 0x5f, 0xc0, 0xbf, 0x7b, 0x7b, 0x33, 0xab, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x6b, 0x2e, 0xaf, 0x4d, 0xec, 0x8d, 0x0d, 0x64, 0x0e, 0xae, 0x6c, 0x6c, 0xc3, 0xe7, 0x4a, 0x1b, 0x9c, 0xc5, 0x44, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xe9, 0x4d, 0xbf, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x04, 0x94, 0x5a, 0x07, 0x65, 0xa4, 0x6d, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x41, 0x17, 0xb6, 0x56, 0x06, 0xc2, 0x96, 0xd6, 0x26, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0x5a, 0x04, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x1f, 0xac, 0xd7, 0x7a, 0x6e, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0xdd, 0xde, 0xe8, 0x40, 0xe8, 0xde, 0x40, 0xc4, 0xca, 0x40, 0xe8, 0xc2, 0xd6, 0xca, 0xdc, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x16, 0xde, 0x20, 0x6d, 0xb0, 0x24, 0xcc, 0xb9, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x35, 0x4b, 0xc3, 0x2b, 0x23, 0x03, 0x19, 0x7b, 0x73, 0x9b, 0xa3, 0x0b, 0x73, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0xbc, 0x71, 0xb7, 0xc1, 0xc2, 0xb8, 0xe7, 0x83, 0x83, 0x1c, 0xc6, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xd7, 0xb9, 0x99, 0xa5, 0xe1, 0x95, 0x91, 0x81, 0x8c, 0xbd, 0xb9, 0xcd, 0xd1, 0x85, 0xb9, 0xd1, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x7e, 0x84, 0x39, 0x58, 0xe5, 0xf9, 0xbc, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbe, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x61, 0x73, 0x20, 0x74, 0x61, 0x70, 0x65, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x2b, 0xd4, 0x90, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0x1c, 0x2c, 0xaf, 0x70, 0x6e, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xda, 0xd2, 0xdc, 0xd2, 0xda, 0xc2, 0xd8, 0x40, 0xcc, 0xc2, 0xc6, 0xca, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x16, 0x06, 0x22, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0x1f, 0xcc, 0x6f, 0xb0, 0x5e, 0xeb, 0x79, 0xc3, 0xbf, 0xf3, 0x6b, 0xb0, 0x30, 0x10, 0xa9, 0x5a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x0f, 0xba, 0xb0, 0xb5, 0x32, 0x90, 0xbb, 0x34, 0xb7, 0xb3, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc3, 0xdb, 0x3a, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xf8, 0x60, 0xed, 0xc8, 0x73, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x2b, 0x57, 0xe6, 0x46, 0x56, 0x26, 0x07, 0x12, 0x36, 0x07, 0x42, 0x17, 0xe6, 0xb6, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x90, 0xa0, 0xb5, 0x79, 0xb0, 0x54, 0xf9, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0x77, 0xcc, 0xde, 0xde, 0x76, 0x40, 0xe8, 0xca, 0xda, 0xe0, 0xd8, 0xc2, 0xe8, 0xd2, 0xdc, 0xce, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x16, 0xf7, 0x22, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x32, 0xed, 0xa8, 0x16, 0xf0, 0xd1, 0xde, 0xde, 0xe8, 0x6a, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x81, 0xe6, 0x23, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x1e, 0xce, 0x5f, 0xc3, 0x9f, 0x4b, 0x03, 0x7c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0xe5, 0x06, 0xa1, 0x5f, 0xb2, 0x86, 0xb7, 0x75, 0x36, 0x08, 0xb2, 0xc4, 0x36, 0x58, 0xaf, 0xf5, 0xdc, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xc5, 0xde, 0xc8, 0xf2, 0x0d, 0xff, 0xce, 0xaf, 0x41, 0x09, 0x1d, 0x5b, 0xad, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xf0, 0x7c, 0x5f, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x65, 0x19, 0xf6, 0x1a, 0xfe, 0x5c, 0x1a, 0x1c, 0x3e, 0x58, 0x60, 0x05, 0xbd, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x37, 0xfc, 0x3b, 0xbf, 0x80, 0x1f, 0xc6, 0x16, 0x36, 0xd7, 0x1a, 0xfe, 0x5c, 0x1a, 0x5c, 0xde, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x11, 0xeb, 0x37, 0x58, 0xaf, 0xf5, 0xbc, 0x86, 0x7f, 0xe7, 0x17, 0xf0, 0xe9, 0xde, 0xda, 0xca, 0xaa, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0x9a, 0x4f, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf8, 0xae, 0xe5, 0x60, 0x41, 0x98, 0xf3, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xcd, 0x57, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x28, 0x59, 0xd8, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xd9, 0x84, 0x79, 0xb0, 0xe4, 0x09, 0x7a, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1f, 0x2c, 0xae, 0x83, 0x6e, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x81, 0xe6, 0x73, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x9c, 0x07, 0x3b, 0x0e, 0xd6, 0x26, 0x3e, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xf0, 0x7c, 0x5e, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x07, 0x2c, 0xba, 0x0d, 0x96, 0x84, 0x39, 0x1f, 0x2c, 0x1f, 0x85, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0xa0, 0xf9, 0x5a, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x87, 0xaf, 0x70, 0x0e, 0xd6, 0x26, 0x3e, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xf0, 0x7c, 0x7e, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x8b, 0x0b, 0x93, 0x36, 0x58, 0x69, 0x06, 0x7d, 0xb0, 0xbc, 0xcc, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x81, 0xe6, 0x53, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x14, 0xca, 0x9d, 0x07, 0x4b, 0xc4, 0xa1, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x68, 0xbe, 0xde, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xe1, 0x17, 0xa5, 0x83, 0x25, 0xe2, 0xd0, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0x3c, 0x1f, 0xd0, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x99, 0x77, 0x79, 0xb0, 0x64, 0x13, 0x7a, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x81, 0xe6, 0xfb, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x84, 0xfc, 0xda, 0xc1, 0xda, 0xc4, 0xe7, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf8, 0x75, 0xbe, 0x40, 0xb6, 0xe2, 0x40, 0xe0, 0xba, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x96, 0x54, 0x27, 0x1d, 0x2c, 0x08, 0x73, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3f, 0x1d, 0x2f, 0x90, 0x2d, 0x38, 0x90, 0x38, 0x10, 0x39, 0x90, 0xb9, 0xae, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x45, 0xe5, 0x49, 0x1b, 0x2c, 0x09, 0x73, 0xde, 0x60, 0x81, 0x99, 0xf3, 0x1a, 0xfe, 0x5c, 0x1a, 0x5c, 0x3e, 0x58, 0x60, 0xe1, 0xbc, 0x86, 0x3f, 0x97, 0x06, 0x9f, 0x0f, 0x16, 0x58, 0x38, 0xb7, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbf, 0x4e, 0x0b, 0xc8, 0x16, 0x1c, 0x48, 0x5c, 0xd7, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x61, 0xa8, 0x7a, 0xb0, 0x20, 0xcc, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0x74, 0x56, 0x40, 0xb6, 0xe0, 0x40, 0xe2, 0x40, 0xe4, 0xba, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xce, 0xf9, 0x4b, 0x1b, 0x2c, 0x09, 0x73, 0xde, 0x60, 0x81, 0x99, 0xf3, 0x06, 0x2b, 0x8e, 0xa2, 0x5b, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x5f, 0xc7, 0x0f, 0x64, 0x0b, 0x0e, 0xc4, 0xaf, 0x6b, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0xe8, 0x3a, 0x78, 0xb0, 0x54, 0xf9, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0x75, 0x54, 0x40, 0xe0, 0x40, 0xc2, 0xe6, 0x40, 0xc2, 0x40, 0xe8, 0xea, 0xe0, 0xd8, 0xca, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xbf, 0xb8, 0x1c, 0x2c, 0x55, 0x7e, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0xe0, 0x4b, 0xbe, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x56, 0x21, 0x29, 0x6d, 0xb0, 0x06, 0x00, 0x7a, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6f, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0xa5, 0x37, 0xfd, 0x06, 0x6b, 0x47, 0x9e, 0x0f, 0x96, 0x57, 0x38, 0xd7, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x5d, 0xe2, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x38, 0x35, 0x1c, 0x1d, 0x2c, 0x08, 0x73, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0xa0, 0x4b, 0x5a, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x27, 0xf6, 0x9b, 0x83, 0x05, 0x61, 0xce, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0x74, 0x89, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0xc2, 0x9c, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xf1, 0xc1, 0xba, 0xe6, 0xe7, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe8, 0x12, 0xd5, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x12, 0x5e, 0xd2, 0x06, 0x6b, 0x00, 0xa0, 0x37, 0x58, 0x60, 0xe6, 0xbc, 0x86, 0x3f, 0x97, 0x06, 0x97, 0x0f, 0xd6, 0xc6, 0x46, 0xb7, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0xc0, 0x97, 0x78, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xac, 0xea, 0x55, 0x3a, 0x58, 0x29, 0x14, 0xbd, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x40, 0x97, 0xac, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x8a, 0x4e, 0xe3, 0x83, 0x15, 0x73, 0xd1, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0x7c, 0x89, 0xdf, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x59, 0xf2, 0xbe, 0xc1, 0x1a, 0x00, 0xe8, 0x0d, 0x16, 0x98, 0x39, 0xaf, 0xe1, 0xcf, 0xa5, 0xc1, 0xe5, 0x83, 0x75, 0xcd, 0xcf, 0xad, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xd0, 0x25, 0xbd, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc3, 0x25, 0x75, 0xb0, 0x96, 0x35, 0x7a, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xb4, 0x5c, 0xbc, 0x40, 0x40, 0xdc, 0xde, 0xc6, 0xd6, 0x40, 0x62, 0x62, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xab, 0x03, 0x96, 0x0e, 0x96, 0x88, 0x43, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x8e, 0xcb, 0x0a, 0x08, 0x88, 0xdb, 0xdb, 0xd8, 0x1a, 0x08, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xf0, 0x71, 0xd4, 0xc1, 0xda, 0xc4, 0xe7, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xd0, 0x71, 0x51, 0x01, 0x01, 0x71, 0x7b, 0x1b, 0x5b, 0x03, 0x91, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x2c, 0x08, 0x59, 0x3a, 0x58, 0x10, 0xe6, 0xbc, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3a, 0x2e, 0x3d, 0x20, 0x20, 0x6e, 0x6f, 0x63, 0x6b, 0x20, 0xb5, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc3, 0xbf, 0x39, 0x07, 0x0b, 0xc2, 0x9c, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x40, 0xc7, 0xe5, 0x07, 0x04, 0xc4, 0xed, 0x6d, 0x6c, 0x0d, 0x64, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0x06, 0x68, 0xe9, 0x60, 0x6d, 0xe2, 0xf3, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0xe0, 0xc5, 0x07, 0x02, 0x32, 0xf6, 0xe6, 0x46, 0x27, 0x17, 0x66, 0x17, 0x26, 0x97, 0x16, 0xe6, 0x46, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x90, 0xb4, 0x60, 0x74, 0xb0, 0x36, 0xf1, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xbd, 0x5c, 0x40, 0x40, 0xe6, 0xca, 0xd8, 0xcc, 0x5a, 0xc6, 0xc2, 0xe6, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x8e, 0x6d, 0x8e, 0x07, 0x0b, 0xc2, 0x9c, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x17, 0xaf, 0x15, 0x10, 0x90, 0x32, 0x3c, 0x38, 0xb9, 0xb2, 0xb9, 0xb9, 0xb4, 0x37, 0x37, 0x90, 0xb1, 0xb0, 0x39, 0xba, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc3, 0xd7, 0x2f, 0x07, 0x0b, 0xc2, 0x9c, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x0f, 0xaf, 0x16, 0x10, 0x90, 0x39, 0x3a, 0xb9, 0xba, 0x31, 0xba, 0x3a, 0xb9, 0x32, 0x90, 0xb1, 0xb0, 0x39, 0xba, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc3, 0x5f, 0x34, 0x07, 0x4b, 0xc4, 0xa1, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xd3, 0xcb, 0x04, 0x04, 0x64, 0xec, 0xcd, 0x2e, 0x4c, 0x2e, 0x2d, 0xcc, 0x8d, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0x59, 0xe3, 0xd2, 0xc1, 0xda, 0xc4, 0xe7, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xf3, 0xf2, 0x03, 0x01, 0x19, 0x7b, 0x73, 0x9b, 0xa3, 0x0b, 0x73, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0xd8, 0xb9, 0x74, 0xb0, 0x36, 0xf1, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xbc, 0x7a, 0x40, 0x40, 0xd8, 0xc2, 0xc4, 0xca, 0xd8, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x9f, 0xbb, 0xac, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xff, 0xce, 0x2f, 0xe0, 0xcf, 0xad, 0xa5, 0xb9, 0x75, 0xb0, 0xbc, 0xcc, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xbd, 0x7e, 0x40, 0x40, 0xc4, 0xd2, 0xec, 0xc2, 0xe4, 0xd2, 0xc2, 0xdc, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x52, 0x2f, 0x8a, 0x0f, 0xd6, 0x26, 0x3e, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x97, 0x97, 0x0a, 0x08, 0x48, 0x19, 0x5e, 0x58, 0x1b, 0x1c, 0x5b, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x21, 0x98, 0xba, 0xc1, 0x4a, 0x33, 0xe8, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xc7, 0x4b, 0x07, 0x04, 0xc4, 0x2c, 0x8d, 0x8d, 0xae, 0x4c, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xf0, 0x51, 0xfb, 0xc1, 0x2a, 0xb0, 0xe9, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xc1, 0x8f, 0x0f, 0x04, 0x64, 0xae, 0x8c, 0x8d, 0x0d, 0xe4, 0xcd, 0x0d, 0x84, 0x4e, 0x2e, 0x6c, 0xac, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0x49, 0xfd, 0xd2, 0xc1, 0x82, 0x30, 0xe7, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xc1, 0xef, 0x0b, 0x04, 0x84, 0x2e, 0xcc, 0x6d, 0x0d, 0xe4, 0xcd, 0x0d, 0x84, 0x4e, 0x2e, 0x6c, 0xac, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xf0, 0x96, 0xdd, 0xc1, 0x82, 0x30, 0xe7, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xc7, 0xaf, 0x04, 0x04, 0xe4, 0xac, 0xcc, 0xad, 0x4c, 0x2e, 0x8c, 0x0d, 0x44, 0xad, 0x8c, 0x0e, 0x04, 0x2d, 0xcd, 0x8d, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0xec, 0x92, 0x5d, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xfe, 0x9d, 0x5f, 0xc0, 0x1f, 0x43, 0xab, 0x6b, 0x6b, 0x83, 0x05, 0x66, 0xce, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0x79, 0xc3, 0xbf, 0xf3, 0x0b, 0xf8, 0x74, 0x79, 0x72, 0x65, 0x1d, 0xac, 0x5e, 0x8a, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5e, 0xfc, 0x5e, 0x40, 0x40, 0xcc, 0xea, 0xdc, 0xc6, 0xe8, 0xd2, 0xde, 0xdc, 0x40, 0xd4, 0x5a, 0xd0, 0xd2, 0xdc, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x8f, 0x8f, 0x6c, 0xb0, 0xec, 0x76, 0xfa, 0x60, 0x79, 0x99, 0xf3, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0xe0, 0xc7, 0x03, 0x02, 0x22, 0x16, 0x36, 0xb6, 0x76, 0x17, 0x26, 0x47, 0x06, 0x82, 0x96, 0xe6, 0x46, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0x12, 0x89, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xf8, 0x60, 0x7e, 0x83, 0xf5, 0x5a, 0xcf, 0x1b, 0x3e, 0x57, 0xda, 0x60, 0x61, 0xdc, 0xf3, 0xc1, 0xf2, 0x32, 0xe7, 0x83, 0xe5, 0x65, 0xce, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xef, 0xe7, 0x03, 0x02, 0x62, 0xf6, 0x26, 0x77, 0x17, 0x26, 0x47, 0x06, 0x82, 0x96, 0xe6, 0x46, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x70, 0x2e, 0x5c, 0x38, 0x58, 0x86, 0x3f, 0xbd, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xfe, 0x7e, 0x24, 0x20, 0x20, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x68, 0x69, 0x74, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x2b, 0xfd, 0x98, 0x0e, 0x16, 0x03, 0x50, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x0f, 0x7e, 0x2b, 0x20, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x3d, 0x6d, 0x65, 0x6d, 0x6f, 0x69, 0x7a, 0x65, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xcb, 0x21, 0x99, 0x36, 0x3c, 0x42, 0x77, 0xb0, 0xbc, 0xcc, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0xf1, 0x33, 0x01, 0x01, 0x81, 0x93, 0x4b, 0x73, 0xa3, 0x33, 0xeb, 0x81, 0x93, 0x4b, 0x7b, 0x93, 0x4b, 0xa3, 0xcb, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0xb7, 0xca, 0xb4, 0x41, 0x92, 0x21, 0xf0, 0xc1, 0xa2, 0xba, 0xe8, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xc5, 0xaf, 0x07, 0x04, 0x84, 0xec, 0xcd, 0xed, 0x84, 0x0e, 0x84, 0xac, 0x0e, 0x8e, 0x2d, 0x6d, 0x2c, 0x8c, 0xae, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0x91, 0x31, 0xd3, 0xc1, 0x82, 0x30, 0xe7, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xc1, 0xef, 0x07, 0x04, 0x84, 0xae, 0x6c, 0x8e, 0xae, 0x8c, 0x0c, 0x04, 0x4e, 0x2e, 0xcd, 0x8d, 0xce, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0x99, 0x35, 0xd3, 0x06, 0x49, 0x86, 0xc0, 0x07, 0x8b, 0x89, 0xa2, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x07, 0xbf, 0x10, 0x10, 0x10, 0xba, 0x3c, 0xb8, 0x32, 0x90, 0x37, 0x37, 0x10, 0x3a, 0xb9, 0xb0, 0xb1, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xb5, 0xe8, 0x4c, 0x07, 0x0b, 0xc2, 0x9c, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x97, 0x9d, 0x1e, 0x10, 0x10, 0xb6, 0xb4, 0x39, 0x3a, 0x10, 0xba, 0xb2, 0x36, 0x38, 0xb6, 0x30, 0xba, 0x34, 0xb7, 0xb3, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xd5, 0xf8, 0x4c, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0x78, 0xc3, 0xbf, 0xf3, 0x6b, 0xb0, 0x0a, 0x3d, 0xaa, 0x83, 0xa5, 0x34, 0xd0, 0xad, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1f, 0x3b, 0x3a, 0x20, 0x20, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x6e, 0x61, 0x72, 0x79, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x49, 0x06, 0x84, 0x07, 0xeb, 0xcc, 0xa3, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x97, 0x9d, 0x17, 0x10, 0x90, 0xad, 0x12, 0x12, 0x90, 0xad, 0x12, 0x12, 0x10, 0x38, 0x10, 0xbf, 0x2e, 0x10, 0xbf, 0xae, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xa5, 0x1f, 0x4d, 0x07, 0x6b, 0x13, 0x9f, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0xdf, 0xe1, 0x01, 0x01, 0x11, 0x4b, 0x73, 0x23, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0xfc, 0xd2, 0xb4, 0xc1, 0x4a, 0x33, 0xe8, 0x83, 0xc5, 0x44, 0xd1, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xc3, 0x8e, 0x1f, 0x08, 0xc8, 0x1a, 0x5b, 0x59, 0xda, 0x1c, 0x5b, 0x1a, 0x48, 0x98, 0x9c, 0xdc, 0xdb, 0xdd, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x0a, 0xa1, 0xa6, 0x83, 0x75, 0xe6, 0xd1, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xb9, 0xb3, 0x03, 0x02, 0xe2, 0xf6, 0x26, 0xd7, 0x16, 0xc6, 0x96, 0xa6, 0x57, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0x46, 0xaa, 0xe9, 0x60, 0x89, 0x38, 0xf4, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xf6, 0xf0, 0x81, 0x80, 0xc0, 0xd5, 0xcd, 0xa1, 0x81, 0x88, 0xd5, 0xb9, 0xd1, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x94, 0xf6, 0x96, 0x07, 0x4b, 0xc4, 0xa1, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x8f, 0x1e, 0x1d, 0x10, 0x90, 0x38, 0x90, 0xbb, 0x1e, 0x10, 0x38, 0x90, 0x31, 0xb4, 0x30, 0xb7, 0xb3, 0xb2, 0xb9, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xb5, 0x71, 0x4d, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xf8, 0x60, 0x6d, 0x6c, 0xf4, 0xc1, 0xf2, 0x32, 0xe7, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xa3, 0xe7, 0x05, 0x04, 0x84, 0x2e, 0x0f, 0xae, 0x8c, 0x0c, 0xc4, 0x2e, 0x4c, 0x2e, 0x2d, 0x4c, 0x8c, 0xad, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x20, 0x8d, 0xdd, 0x60, 0x55, 0xcc, 0xf4, 0xc1, 0xa2, 0xba, 0xe8, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xd0, 0xec, 0xd9, 0x01, 0x01, 0xe9, 0x79, 0x41, 0x89, 0x03, 0x81, 0x03, 0x91, 0x4b, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x2c, 0xc0, 0x6c, 0x3a, 0x58, 0xbc, 0x57, 0xbd, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3c, 0xf4, 0xb8, 0x80, 0x80, 0xc8, 0x81, 0xdc, 0xa5, 0xd1, 0xa1, 0x81, 0xc0, 0x81, 0x84, 0xcd, 0x81, 0xc4, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x14, 0x7d, 0xba, 0x1b, 0xac, 0x01, 0x80, 0x3e, 0x58, 0x54, 0x17, 0xbd, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x74, 0xf4, 0xfc, 0x80, 0x80, 0x8c, 0xbd, 0xb9, 0x91, 0xa5, 0xd1, 0xa5, 0xbd, 0xb9, 0x85, 0xb1, 0x81, 0xf4, 0xb8, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x8e, 0x63, 0x13, 0x1b, 0xac, 0x01, 0x80, 0x3e, 0x58, 0x4c, 0x14, 0xbd, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x5a, 0x3d, 0x3c, 0x20, 0x20, 0x3d, 0x3e, 0x28, 0x71, 0x20, 0x70, 0xa9, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc3, 0x83, 0x92, 0x07, 0x0b, 0xc2, 0x9c, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x40, 0xab, 0xa7, 0x05, 0x04, 0xa4, 0x67, 0x05, 0x25, 0x0e, 0x04, 0x2e, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x70, 0xb4, 0xe1, 0x3b, 0x58, 0x10, 0xe6, 0xbc, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3c, 0xf4, 0xf8, 0x80, 0x80, 0xc4, 0x81, 0xdc, 0xf5, 0xcc, 0xd5, 0x89, 0xa9, 0x95, 0x8d, 0xd1, 0x81, 0xc0, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x94, 0x12, 0xe2, 0x07, 0x0b, 0xc2, 0x9c, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x87, 0x1e, 0x2f, 0x10, 0x90, 0x39, 0xba, 0x30, 0xba, 0x32, 0x90, 0xb6, 0xb0, 0x31, 0xb4, 0x34, 0xb7, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xa2, 0x83, 0x76, 0x83, 0x55, 0x31, 0xd3, 0x1b, 0x2c, 0x08, 0x79, 0x3e, 0x58, 0x6f, 0x14, 0xbd, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbc, 0xf4, 0xac, 0x80, 0x80, 0xc4, 0x81, 0xdc, 0xf5, 0x6c, 0xc1, 0x81, 0xcc, 0xd5, 0x89, 0xa9, 0x95, 0x8d, 0xd1, 0x75, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3e, 0xb1, 0x39, 0x58, 0x10, 0xe6, 0xbc, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbe, 0x3d, 0x7e, 0x20, 0x20, 0x68, 0x6f, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xeb, 0x3c, 0x9c, 0x0e, 0x96, 0x2a, 0x3f, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x67, 0x8f, 0x0a, 0x08, 0x88, 0x5b, 0xd9, 0x1d, 0xc8, 0x1c, 0x5d, 0x1e, 0x5b, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x4a, 0x17, 0xa7, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x7a, 0xd3, 0x6f, 0xb0, 0x5e, 0xeb, 0x79, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xb2, 0x09, 0x73, 0x83, 0x05, 0x56, 0xd0, 0x75, 0xb0, 0xa8, 0x2e, 0x7a, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0xe9, 0x61, 0x01, 0x01, 0x79, 0xb3, 0x2b, 0x93, 0x63, 0x7b, 0x0b, 0x23, 0x03, 0x81, 0x03, 0x49, 0x73, 0x03, 0x89, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0x85, 0xe5, 0x74, 0xb0, 0x20, 0xcc, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0x7f, 0xf8, 0x40, 0x40, 0xd8, 0xde, 0xde, 0xc4, 0xca, 0xc2, 0xdc, 0x40, 0xde, 0xe4, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xbf, 0x92, 0x1d, 0x2c, 0x55, 0x7e, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3e, 0x7e, 0x5a, 0x40, 0x40, 0xe0, 0xd2, 0xc6, 0xd6, 0x40, 0xc6, 0xc2, 0xe6, 0xca, 0x40, 0xd2, 0xdc, 0x40, 0xe2, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x82, 0xf4, 0x74, 0x83, 0x35, 0x00, 0xd0, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x78, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0x37, 0x58, 0x60, 0x05, 0x7d, 0xb0, 0xbc, 0xc2, 0xb9, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xff, 0x47, 0x07, 0x04, 0x24, 0xcd, 0xac, 0x87, 0x0e, 0xad, 0xcc, 0xad, 0xa7, 0x8c, 0x6d, 0xae, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xf0, 0x41, 0xce, 0xc1, 0x8a, 0xb9, 0xe8, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xd0, 0xfc, 0x71, 0x01, 0x01, 0xf9, 0xd1, 0x41, 0x81, 0x03, 0x91, 0x03, 0x89, 0x4b, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x14, 0x3b, 0x9a, 0x07, 0x2b, 0xe6, 0xa2, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x8f, 0x1f, 0x2f, 0x10, 0x90, 0x34, 0x33, 0x10, 0x38, 0x90, 0xb4, 0x39, 0x90, 0x30, 0x90, 0xb1, 0x32, 0x36, 0xb6, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x62, 0x40, 0xf6, 0x60, 0x25, 0x6a, 0xf5, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xe8, 0xfe, 0xf0, 0x80, 0x80, 0xfc, 0xe8, 0xa0, 0xc0, 0x81, 0x84, 0x84, 0x80, 0xc4, 0xa5, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xef, 0xe6, 0x1d, 0x2c, 0x08, 0x73, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xdd, 0x1f, 0x1f, 0x10, 0x90, 0x1f, 0x1d, 0x14, 0x38, 0x90, 0x38, 0x90, 0x90, 0x90, 0xd4, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xc1, 0x87, 0x79, 0xb0, 0x20, 0xcc, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0xf8, 0x59, 0x01, 0x01, 0xf9, 0x69, 0x01, 0x01, 0xb9, 0xeb, 0x21, 0x2b, 0x33, 0x0b, 0xab, 0x63, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x38, 0x39, 0xc8, 0x6d, 0xb0, 0x06, 0x00, 0x7a, 0x83, 0x05, 0x66, 0xce, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xf9, 0x60, 0x79, 0xac, 0x75, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xfd, 0x63, 0x02, 0x02, 0xc2, 0xf6, 0xf6, 0x26, 0x56, 0x16, 0xe6, 0x06, 0x12, 0xe6, 0x46, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x78, 0x84, 0xf5, 0x60, 0xa9, 0xf2, 0xf3, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xff, 0x00, 0x81, 0x80, 0xa4, 0x99, 0x81, 0xc0, 0x81, 0xa4, 0xcd, 0x81, 0x84, 0xd1, 0xbd, 0xb5, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x14, 0x04, 0xb3, 0x07, 0x2b, 0x51, 0xab, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xff, 0xc7, 0x0f, 0x04, 0x24, 0xcd, 0x0c, 0x04, 0x0e, 0x24, 0x6d, 0x0e, 0xc4, 0xad, 0x8e, 0x8d, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x84, 0xc7, 0x3c, 0x58, 0x89, 0x5a, 0xbd, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7c, 0xfc, 0x8c, 0x80, 0x80, 0xa4, 0x99, 0x81, 0xc4, 0x81, 0xb4, 0x85, 0xd1, 0x8d, 0xa1, 0x95, 0xcd, 0x81, 0xc0, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xac, 0x77, 0x79, 0xda, 0x60, 0x55, 0xcc, 0xf4, 0xc1, 0x72, 0x90, 0xe7, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xe3, 0xa7, 0x07, 0x04, 0x24, 0xcd, 0x0c, 0x24, 0x0e, 0xa4, 0x2d, 0x8c, 0x6e, 0x0c, 0xad, 0x6c, 0x0e, 0x04, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x98, 0xc4, 0xdc, 0x60, 0xa5, 0x19, 0xf4, 0xc1, 0x72, 0x90, 0xe7, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xfe, 0x09, 0x01, 0x01, 0x61, 0x7b, 0x7b, 0x13, 0x2b, 0x0b, 0x73, 0x03, 0x71, 0x7b, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0xbc, 0xcd, 0x7a, 0xb0, 0x36, 0xf1, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x81, 0x0e, 0x61, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x2c, 0x0f, 0x7b, 0x3a, 0x58, 0x10, 0xe6, 0xbc, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x40, 0x87, 0xf8, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x16, 0xc8, 0x3d, 0x1d, 0xac, 0x4d, 0x7c, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0xa0, 0x43, 0x78, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x4b, 0x04, 0x9f, 0x0e, 0x96, 0x88, 0x43, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xd0, 0x21, 0xbb, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x45, 0x92, 0x4f, 0x07, 0x0b, 0xc2, 0x9c, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe8, 0x90, 0xde, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x32, 0xd1, 0xa7, 0x83, 0xb5, 0x89, 0xcf, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0x7c, 0x08, 0xd0, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x42, 0xd9, 0xa7, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x1b, 0xac, 0x1d, 0x79, 0xee, 0x60, 0x51, 0x5d, 0xf4, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x1d, 0xf2, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0x00, 0xfd, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x7c, 0x30, 0xbf, 0xe1, 0x11, 0xba, 0xc3, 0xaf, 0x73, 0x07, 0xcb, 0xcb, 0x9c, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe8, 0x90, 0xd0, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0x3f, 0x58, 0x7b, 0xe5, 0x7c, 0x70, 0x5c, 0x3c, 0x69, 0x05, 0xfc, 0xb1, 0x3a, 0x33, 0x73, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x60, 0xd1, 0x13, 0xf6, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbc, 0xc0, 0x85, 0xc9, 0xcd, 0x95, 0x91, 0x81, 0xb0, 0x95, 0xe1, 0x81, 0xcc, 0x95, 0x9d, 0xb5, 0x95, 0xb9, 0xd1, 0xcd, 0x6d, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0xfe, 0x9d, 0x5f, 0xc0, 0x67, 0x4b, 0x73, 0x5b, 0xab, 0x15, 0xf0, 0xcf, 0xc2, 0xe4, 0xc4, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xe5, 0x6e, 0xd8, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x07, 0x6b, 0x16, 0x8d, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x8e, 0x45, 0xa3, 0x1b, 0xac, 0xef, 0x84, 0x5e, 0xc3, 0xbf, 0xf3, 0x0b, 0xf8, 0x70, 0x6f, 0x6c, 0x79, 0xad, 0xe1, 0xdf, 0xf9, 0x05, 0x7c, 0xbb, 0xb0, 0x34, 0xb9, 0x9a, 0x05, 0x78, 0xe8, 0xd0, 0xea, 0xdc, 0xd6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x45, 0x8d, 0xd8, 0x0d, 0xc0, 0x8f, 0x99, 0x5c, 0xd8, 0x59, 0x5b, 0x99, 0x1b, 0x1d, 0xc8, 0xd8, 0x9b, 0xdb, 0x1c, 0x9d, 0x5c, 0xdd, 0x18, 0xdd, 0x9b, 0xdc, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xa2, 0x46, 0xec, 0x0d, 0xc2, 0x69, 0x6c, 0x83, 0x32, 0x4b, 0x77, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0x5c, 0xc3, 0xbf, 0xf3, 0x1b, 0xac, 0xe9, 0x38, 0xaa, 0xc3, 0x29, 0xb6, 0x06, 0x6b, 0xa7, 0x8b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xd6, 0x4e, 0x17, 0x37, 0x00, 0xaf, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x72, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x6b, 0xa7, 0x8b, 0x37, 0x7c, 0x30, 0xbf, 0x41, 0x08, 0x3e, 0x6c, 0xf8, 0x77, 0x7e, 0x01, 0xfe, 0xb9, 0xb2, 0xb6, 0x34, 0xb7, 0xb7, 0x3a, 0xb7, 0x56, 0xc0, 0x1f, 0x7b, 0x4b, 0x63, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x16, 0x7e, 0x63, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x71, 0x0b, 0x6b, 0x2b, 0x63, 0x01, 0xb9, 0x2b, 0xa3, 0xeb, 0x21, 0x93, 0xcb, 0x63, 0x01, 0xb1, 0x0b, 0x93, 0xcb, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x86, 0x7f, 0xe7, 0xd7, 0x60, 0xb9, 0x1b, 0x76, 0xad, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xc0, 0x3b, 0xf6, 0xe6, 0x46, 0x57, 0x86, 0x47, 0xb7, 0xe1, 0xcf, 0xa5, 0xc1, 0xe3, 0x83, 0x65, 0x33, 0xce, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x8f, 0xa1, 0x85, 0xc1, 0xd1, 0x95, 0xc9, 0xcd, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x79, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0xf4, 0xa6, 0xdf, 0x60, 0x0d, 0x36, 0xf6, 0x06, 0x8b, 0xeb, 0xa0, 0x6b, 0x16, 0xf0, 0xe1, 0xde, 0xc6, 0xd6, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xe5, 0x1f, 0xd9, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xbc, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0xa5, 0x37, 0xfd, 0x06, 0x4b, 0xfa, 0x9c, 0x37, 0x58, 0xfb, 0xee, 0xdc, 0xe1, 0x14, 0x5b, 0x83, 0x05, 0xbc, 0xd3, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x0b, 0x78, 0xa7, 0x37, 0x08, 0x36, 0xd3, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf8, 0xd5, 0xca, 0xe8, 0x40, 0xdc, 0xc2, 0xda, 0xca, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xaa, 0x75, 0xdd, 0x83, 0xf5, 0x5a, 0xcf, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xbb, 0x56, 0xc6, 0x66, 0x97, 0xe6, 0x06, 0x62, 0x57, 0x26, 0x37, 0x97, 0xf6, 0xe6, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xcd, 0xd1, 0x91, 0x07, 0xeb, 0xb5, 0x9e, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x8b, 0xf8, 0x69, 0x0f, 0x3f, 0xd4, 0xb4, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7c, 0xd8, 0x95, 0xb9, 0x91, 0xbd, 0xc9, 0x81, 0x84, 0xb9, 0x91, 0x81, 0xc0, 0xc9, 0xbd, 0x91, 0xd5, 0x8d, 0xd1, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x64, 0xe4, 0xf4, 0x60, 0xbd, 0xd6, 0xf3, 0x1a, 0xfe, 0x5c, 0xda, 0x20, 0x45, 0xd3, 0xf8, 0x60, 0xbd, 0xd6, 0xf3, 0xc1, 0xd2, 0xb2, 0xec, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x0f, 0x63, 0x63, 0x03, 0x79, 0x33, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x09, 0x13, 0x7b, 0xb3, 0x2b, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0x0b, 0xf6, 0xb2, 0x37, 0x58, 0x11, 0x98, 0xbd, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xbb, 0x32, 0xf9, 0xf0, 0x43, 0xcd, 0xc1, 0xd2, 0xb2, 0xec, 0x0e, 0xa7, 0xd8, 0x1a, 0x2c, 0x66, 0x65, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xb0, 0x98, 0x95, 0xb9, 0x01, 0xfc, 0xe0, 0xc2, 0xe4, 0xe8, 0xd2, 0xc2, 0xd8, 0x40, 0xdc, 0xde, 0xea, 0xdc, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x16, 0xb3, 0x32, 0x6f, 0xf8, 0x60, 0x7e, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xff, 0x0d, 0xae, 0xcc, 0xed, 0x20, 0x04, 0x1f, 0x36, 0x08, 0xda, 0x9f, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x43, 0x0b, 0x63, 0x33, 0x6b, 0x11, 0x63, 0x7b, 0x1b, 0x5b, 0x2b, 0x23, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0x01, 0x1b, 0xb4, 0xc1, 0x12, 0x54, 0xe6, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x7c, 0xb0, 0x5a, 0x95, 0xb9, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x34, 0xab, 0x63, 0x63, 0xcb, 0x03, 0x11, 0x63, 0x7b, 0x1b, 0x5b, 0x2b, 0x23, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0x61, 0x04, 0x74, 0xb0, 0x56, 0x97, 0xb9, 0x15, 0xf0, 0xe9, 0xde, 0xde, 0xd8, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x65, 0xee, 0xd9, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xd3, 0xe5, 0xc1, 0x95, 0x81, 0x90, 0x95, 0x8d, 0xbd, 0xc9, 0x85, 0xd1, 0xa5, 0xbd, 0xb9, 0x1d, 0x2c, 0x40, 0x7f, 0x9e, 0x05, 0xfc, 0x31, 0xb9, 0x34, 0x71, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x60, 0x51, 0x81, 0xf6, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x00, 0xef, 0x5c, 0x5d, 0x5b, 0x5b, 0x98, 0x5c, 0x7e, 0x70, 0x02, 0x12, 0x5d, 0xc3, 0x9f, 0x4b, 0x03, 0xbc, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0xf3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0xe1, 0xdf, 0xf9, 0x05, 0xfc, 0xb9, 0xb2, 0x31, 0xba, 0xea, 0x70, 0x8a, 0xb5, 0x06, 0xcb, 0x69, 0xa0, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x96, 0xd3, 0x40, 0x37, 0x80, 0x0f, 0xda, 0xdb, 0x9b, 0x1b, 0x08, 0xdd, 0xdb, 0x1b, 0xdb, 0xdc, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x06, 0xab, 0xd0, 0xa3, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x56, 0xa1, 0x47, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x03, 0x59, 0x9e, 0x5b, 0x58, 0x5b, 0xda, 0x18, 0x08, 0x56, 0x13, 0x13, 0x88, 0xdb, 0x1b, 0x59, 0xd9, 0xdc, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0xe1, 0xdf, 0xf9, 0x05, 0x7c, 0xba, 0x3a, 0xb7, 0xb0, 0x5a, 0x01, 0x5f, 0xac, 0xac, 0x4c, 0xde, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x58, 0x92, 0xa5, 0xbd, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xdf, 0x5c, 0x5a, 0x1b, 0x1c, 0x5b, 0x19, 0x48, 0x59, 0x9b, 0x58, 0x19, 0xd9, 0x86, 0x0f, 0xe6, 0x37, 0x58, 0xf0, 0xfe, 0xb9, 0xe1, 0x73, 0xa5, 0x0d, 0x42, 0xf0, 0xe1, 0x60, 0x6d, 0xe2, 0xf3, 0x0a, 0xf8, 0x6d, 0x61, 0x72, 0xf8, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xea, 0x3a, 0xed, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0xc9, 0xf2, 0xdc, 0xc2, 0xda, 0xd2, 0xc6, 0x40, 0xb0, 0x9a, 0x98, 0x40, 0xe8, 0xc2, 0xce, 0x36, 0x08, 0x35, 0xc4, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x52, 0x5a, 0xf0, 0x41, 0x59, 0xe7, 0xb9, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xb8, 0xbb, 0xe1, 0xdf, 0xf9, 0x05, 0xfc, 0xb6, 0x30, 0xb7, 0xb2, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x86, 0x7f, 0xe7, 0x17, 0xf0, 0xdb, 0xc2, 0xe4, 0xe8, 0xea, 0x70, 0x8a, 0xad, 0xc1, 0x22, 0x4c, 0xed, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x45, 0x98, 0xda, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0x62, 0x35, 0x31, 0x81, 0xb8, 0x85, 0xb5, 0x95, 0xad, 0xcc, 0xc1, 0x85, 0x8d, 0x95, 0x6d, 0xf8, 0x60, 0x7e, 0x83, 0xf3, 0xe6, 0xe9, 0x86, 0xcf, 0x95, 0x36, 0x38, 0x6f, 0x9e, 0x1e, 0xac, 0x35, 0xf4, 0x9d, 0x35, 0x58, 0xa6, 0x1d, 0xb5, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0x4c, 0x3b, 0x6a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x7f, 0xb2, 0x3c, 0xb7, 0xb0, 0xb6, 0xb4, 0x31, 0x10, 0xac, 0x26, 0x26, 0x10, 0xb7, 0x37, 0xb2, 0xb2, 0x0d, 0x42, 0x0d, 0x71, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x84, 0x51, 0xfb, 0xa0, 0xac, 0xf3, 0xdc, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xfc, 0xdc, 0xf0, 0xef, 0xfc, 0x1a, 0xac, 0xae, 0xd3, 0xae, 0x35, 0xfc, 0xb9, 0x34, 0xf8, 0xb8, 0xe1, 0xdf, 0xf9, 0x0d, 0xd6, 0x14, 0x53, 0xd7, 0xe1, 0x14, 0x5b, 0x83, 0xc5, 0x55, 0xda, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0x16, 0x57, 0x69, 0x37, 0x00, 0x2f, 0x6d, 0x61, 0x79, 0x62, 0x65, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x8b, 0xab, 0xb4, 0x37, 0x08, 0x35, 0xc4, 0x0d, 0x16, 0x60, 0x6b, 0x6f, 0xb0, 0x74, 0xb9, 0x6a, 0x0d, 0xff, 0xce, 0x6f, 0xb0, 0x4a, 0x06, 0xba, 0x0d, 0x9f, 0x2b, 0xad, 0x41, 0xb0, 0x99, 0xae, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x63, 0x06, 0xe8, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0xa6, 0x1d, 0xb5, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x56, 0xa1, 0x47, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x65, 0xf7, 0x51, 0x1d, 0xac, 0x4d, 0x7c, 0x9e, 0x35, 0x58, 0xfe, 0xa9, 0xbd, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0xfc, 0x53, 0x7b, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xc8, 0xf2, 0xdc, 0xc2, 0xda, 0xd2, 0xc6, 0x40, 0xb0, 0x9a, 0x98, 0x40, 0xc2, 0xe8, 0xe8, 0xe4, 0xe6, 0x36, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x74, 0x52, 0x7b, 0x0d, 0x7f, 0x2e, 0x0d, 0x6e, 0x6f, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0xfe, 0x9d, 0x5f, 0x83, 0x25, 0x59, 0xda, 0x55, 0xad, 0x80, 0xdf, 0x16, 0x26, 0x57, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0xbc, 0xda, 0xde, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x3b, 0xcd, 0x8d, 0xae, 0x4c, 0x0e, 0x0e, 0xe4, 0x4d, 0x0e, 0xc4, 0xed, 0x8d, 0xac, 0x6c, 0x6e, 0x83, 0xd0, 0x2f, 0xd9, 0x60, 0x15, 0x64, 0xf2, 0x06, 0xab, 0xa7, 0xb4, 0x37, 0x58, 0x95, 0xae, 0xdd, 0xe1, 0x14, 0x5b, 0xc0, 0x6f, 0x0b, 0x93, 0x2b, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x16, 0xd8, 0x6d, 0x6f, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xe9, 0xf6, 0x46, 0x56, 0x06, 0xf2, 0x26, 0x07, 0xe2, 0xf6, 0x46, 0x56, 0x36, 0xb7, 0x41, 0xe8, 0x97, 0x6c, 0xb0, 0x0a, 0x32, 0x79, 0x83, 0x85, 0x0f, 0xdb, 0x07, 0x4b, 0xe4, 0xb6, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x0d, 0xd6, 0xa6, 0x35, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0x4d, 0x6b, 0xde, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x6f, 0xae, 0x2c, 0x4c, 0x6e, 0x0c, 0x0d, 0x84, 0x4e, 0x2e, 0x6c, 0xac, 0x6c, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0x37, 0x58, 0xd2, 0xe7, 0x5c, 0xab, 0xe1, 0x6d, 0x9d, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0xc3, 0xdb, 0x3a, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xcd, 0x95, 0x85, 0xc9, 0x8d, 0xa1, 0x81, 0xc0, 0x85, 0xd1, 0xa1, 0x6d, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0xfe, 0x9d, 0x5f, 0x83, 0xd5, 0x22, 0x48, 0xd5, 0x6a, 0xb0, 0x9a, 0x10, 0x7b, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x60, 0x35, 0x21, 0xf6, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3f, 0xdc, 0x1b, 0x5b, 0x98, 0x5c, 0x1a, 0x5d, 0xde, 0x06, 0xc1, 0x66, 0xba, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x56, 0x54, 0x4a, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc3, 0xa1, 0xd0, 0xe1, 0x14, 0x6b, 0x0d, 0x4e, 0x3e, 0xa8, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x27, 0x1f, 0xd4, 0x0d, 0x0e, 0x10, 0xa2, 0x1b, 0x9c, 0x7c, 0x50, 0x37, 0x08, 0x35, 0xc4, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x0e, 0x9e, 0x79, 0xc3, 0x07, 0xf3, 0x6b, 0x10, 0x6c, 0xa6, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x11, 0xe6, 0x96, 0x07, 0xe2, 0xf6, 0x56, 0xe7, 0x36, 0x77, 0xb0, 0xde, 0x9d, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x5e, 0xb7, 0x37, 0x10, 0xb7, 0xb7, 0x3a, 0xb7, 0x83, 0xf5, 0x22, 0xcd, 0x6d, 0x10, 0xb4, 0x3f, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x1d, 0x46, 0xf7, 0xd6, 0x06, 0xf2, 0x02, 0x32, 0xf6, 0xe6, 0x36, 0x47, 0x17, 0xe6, 0x46, 0xb7, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0xbc, 0x34, 0x6f, 0xb0, 0x30, 0xee, 0x79, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1f, 0x1c, 0xda, 0x65, 0x5a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xbf, 0x37, 0x39, 0xb2, 0x32, 0xb9, 0x32, 0x32, 0x10, 0xb8, 0xb0, 0x34, 0xb9, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x7e, 0x9f, 0x79, 0x83, 0xb5, 0x30, 0xce, 0x1b, 0xac, 0x36, 0xc8, 0x6e, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xbe, 0x37, 0x31, 0xb5, 0xb2, 0x31, 0xba, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc3, 0x0c, 0x6d, 0xb0, 0x16, 0xc6, 0x79, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6f, 0xf8, 0x77, 0x7e, 0x0d, 0x16, 0x7e, 0x63, 0x57, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xe1, 0x16, 0xd6, 0x56, 0x36, 0x07, 0x17, 0x36, 0x56, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x98, 0xfb, 0x0d, 0x56, 0x95, 0x3f, 0x1f, 0xac, 0xe8, 0xe1, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0xe6, 0xe0, 0x60, 0xa0, 0xb3, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0xa0, 0x61, 0x6a, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x88, 0xef, 0x1b, 0x2c, 0x9b, 0x71, 0xae, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x09, 0x73, 0x73, 0x7b, 0xa3, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x14, 0xd3, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x7a, 0xd3, 0x6f, 0xb0, 0x6c, 0xc6, 0x79, 0x83, 0xa5, 0x06, 0xcf, 0x1d, 0xac, 0xe8, 0xe1, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x6f, 0xb6, 0x30, 0xbd, 0x3c, 0x90, 0x32, 0xbb, 0x30, 0xb6, 0xba, 0x30, 0xba, 0xb4, 0x37, 0xb7, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x43, 0x1d, 0xd9, 0x60, 0x2d, 0x8c, 0xf3, 0xc1, 0xf2, 0x32, 0xe7, 0x0e, 0xa7, 0xd8, 0x1a, 0xac, 0x16, 0x41, 0xda, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x58, 0x2d, 0x82, 0xb4, 0xe1, 0x83, 0xf9, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xbb, 0x4b, 0x73, 0x3b, 0x03, 0x29, 0x63, 0x2b, 0x6b, 0x2b, 0x73, 0xa3, 0x3b, 0x58, 0xaf, 0xf5, 0xbc, 0x41, 0xd0, 0xfe, 0xac, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x97, 0x58, 0x1e, 0xc8, 0x59, 0xd9, 0x5b, 0x5b, 0x19, 0x9d, 0x5c, 0xde, 0x86, 0xcf, 0x95, 0x36, 0x08, 0xd8, 0xa0, 0x83, 0x55, 0x7a, 0xce, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x8a, 0xe5, 0x81, 0xb8, 0x85, 0xb5, 0x95, 0x6d, 0xf8, 0x5c, 0x69, 0x83, 0x30, 0x02, 0xda, 0x20, 0xc9, 0x10, 0x78, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1f, 0xac, 0xef, 0x84, 0xae, 0xd5, 0x60, 0x19, 0x4e, 0xf3, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x32, 0x9c, 0xe6, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0xc2, 0xe8, 0xde, 0xda, 0x40, 0xcc, 0xde, 0xe4, 0xda, 0xc2, 0xe8, 0x0e, 0x8e, 0xda, 0xa0, 0x2b, 0xc0, 0x3b, 0x47, 0x57, 0xe6, 0x36, 0x96, 0xc6, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xac, 0x27, 0xe8, 0x6e, 0x00, 0x3e, 0xdc, 0xde, 0xea, 0xdc, 0x40, 0xd6, 0xdc, 0xde, 0xee, 0xd8, 0xca, 0xc8, 0xce, 0xca, 0x40, 0xda, 0xc2, 0xe0, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0xd6, 0x13, 0x74, 0x6f, 0x10, 0xb4, 0x3f, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xac, 0x71, 0x9c, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x3e, 0x5b, 0x99, 0x19, 0xbd, 0xe1, 0xdf, 0xf9, 0x35, 0x58, 0x4f, 0xd0, 0x5d, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x95, 0xd7, 0x46, 0x07, 0xab, 0x5c, 0xba, 0x5b, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x70, 0x90, 0xac, 0xe1, 0xcf, 0xa5, 0x0d, 0x0e, 0x4e, 0x6e, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x25, 0xe2, 0xfb, 0x1a, 0xfe, 0x9d, 0xdf, 0x20, 0x61, 0x41, 0xb8, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0xbd, 0xe1, 0xd4, 0x1a, 0xfe, 0x5c, 0x1a, 0xe0, 0x37, 0x93, 0x0b, 0x3b, 0x6b, 0x2b, 0x73, 0xa3, 0x0f, 0x96, 0xf4, 0x39, 0xaf, 0xe1, 0xcf, 0xa5, 0x01, 0x5e, 0xb9, 0xb2, 0xb9, 0x37, 0x36, 0xbb, 0x72, 0xc3, 0xbf, 0xf3, 0x6b, 0xb0, 0xa8, 0x11, 0xbb, 0xea, 0x70, 0x8a, 0xb5, 0x86, 0x3b, 0x6d, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x70, 0xa7, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x49, 0xf6, 0x36, 0x56, 0xd7, 0x56, 0xe6, 0x46, 0x17, 0x46, 0x97, 0xf6, 0xe6, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0xa2, 0x27, 0xec, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0xa2, 0x27, 0xec, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0x2a, 0xd0, 0xde, 0xf0, 0xef, 0xfc, 0x1a, 0x2c, 0x2a, 0xd0, 0xae, 0x56, 0x83, 0xe5, 0x7d, 0xd0, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xcb, 0xfb, 0xa0, 0x37, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x1b, 0x7b, 0x93, 0x2b, 0x03, 0x19, 0x43, 0x0b, 0x83, 0xa3, 0x2b, 0x93, 0xdb, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0xd7, 0xf0, 0xef, 0xfc, 0x02, 0xfe, 0x1d, 0x5a, 0x18, 0x5d, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x88, 0xf5, 0x1b, 0xac, 0xd7, 0x7a, 0x3e, 0x58, 0x5e, 0xe1, 0xdc, 0xe1, 0x14, 0x5b, 0xc0, 0x47, 0xab, 0x6b, 0x83, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x16, 0xc2, 0x76, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xe6, 0xc2, 0xda, 0xe0, 0xd8, 0xca, 0x40, 0xc6, 0xde, 0xea, 0xdc, 0xe8, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xb5, 0xbd, 0xb9, 0x1b, 0xfe, 0x9d, 0x5f, 0xc0, 0x6f, 0x7b, 0x0b, 0x73, 0x6b, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xc6, 0xc2, 0xd8, 0xd8, 0xe6, 0x40, 0xde, 0xea, 0xe8, 0x40, 0xde, 0xcc, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0x69, 0x96, 0xbd, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x22, 0xd6, 0x6f, 0x70, 0x46, 0x42, 0x3d, 0x38, 0x1d, 0x12, 0xae, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xcf, 0x58, 0x18, 0x1b, 0xdb, 0x1c, 0x48, 0x9a, 0x1b, 0xdd, 0xdb, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0x34, 0x37, 0xf7, 0x60, 0x15, 0x77, 0x77, 0xab, 0xc1, 0x12, 0x6d, 0xec, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x25, 0xda, 0xd8, 0x1b, 0x84, 0x1a, 0xe2, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0x0d, 0x4f, 0xf7, 0x1a, 0x1c, 0x5d, 0x07, 0x3b, 0x28, 0xcb, 0x3c, 0x0f, 0xca, 0x3a, 0xcf, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xd6, 0xdb, 0xe5, 0x1c, 0xac, 0x72, 0xe9, 0x5e, 0xc3, 0x9f, 0x4b, 0x1b, 0x1c, 0xe4, 0xd9, 0x0e, 0x96, 0xc3, 0x62, 0xb7, 0x02, 0x7e, 0x98, 0x58, 0x19, 0xbb, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0x36, 0xc3, 0x7b, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3e, 0xde, 0xe4, 0xd2, 0xce, 0xd2, 0xdc, 0xc2, 0xd8, 0x40, 0xe6, 0xd2, 0xdc, 0x74, 0x40, 0xe8, 0xf2, 0xe0, 0xca, 0x36, 0xfc, 0x3b, 0xbf, 0x80, 0x4f, 0x97, 0x07, 0xf7, 0xd6, 0xe1, 0x14, 0x6b, 0x0d, 0x4a, 0xe8, 0xd8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0x25, 0x74, 0x6c, 0x03, 0xf0, 0x33, 0x47, 0x27, 0x57, 0x37, 0x46, 0x57, 0x27, 0x57, 0x06, 0x42, 0x56, 0x66, 0x96, 0xe6, 0x96, 0x46, 0x97, 0xf6, 0xe6, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0x50, 0x42, 0xc7, 0x6e, 0x10, 0x6a, 0x88, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x6e, 0x74, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x8b, 0x2c, 0x9a, 0xdb, 0x20, 0x68, 0x7f, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x43, 0x2c, 0x6c, 0xae, 0x0c, 0x84, 0x2e, 0x0f, 0xae, 0xec, 0x60, 0xa1, 0xa2, 0xf3, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xcc, 0x95, 0xd1, 0x81, 0x90, 0x95, 0x89, 0xd5, 0x9d, 0x6d, 0xf8, 0x5c, 0x69, 0x83, 0x25, 0xba, 0xce, 0x1b, 0x2c, 0xfc, 0x75, 0x5e, 0xc3, 0x9f, 0x4b, 0x83, 0xc7, 0x07, 0x0b, 0xac, 0xa0, 0x5b, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5f, 0xb3, 0x37, 0xb9, 0xb6, 0x30, 0x36, 0x90, 0xb1, 0xb7, 0xb6, 0xb6, 0x32, 0x37, 0xba, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc3, 0x13, 0xef, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0x78, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x70, 0xa7, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xff, 0xce, 0xaf, 0xe1, 0x4e, 0xab, 0x0e, 0x16, 0xe1, 0x79, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xe7, 0xd8, 0x9b, 0xdb, 0x1c, 0x5d, 0x98, 0x1b, 0x1d, 0x48, 0x18, 0xdd, 0x5b, 0xdb, 0x86, 0xcf, 0x95, 0x36, 0x38, 0x8b, 0x89, 0x6e, 0xb0, 0x30, 0xee, 0xf9, 0xf0, 0x4c, 0xdd, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xc8, 0x95, 0x99, 0x95, 0xc9, 0x95, 0xb9, 0x8d, 0x95, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xfe, 0x9d, 0xdf, 0x60, 0x0d, 0x00, 0xf4, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3e, 0x58, 0x3d, 0x82, 0xdd, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x81, 0x96, 0x77, 0x96, 0x56, 0xe6, 0x96, 0x36, 0x06, 0x22, 0x57, 0x66, 0x56, 0x26, 0x57, 0xe6, 0x36, 0x56, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0x4c, 0x97, 0xea, 0x60, 0x59, 0xdc, 0xf3, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x11, 0xe6, 0xe6, 0xf6, 0x46, 0x17, 0x46, 0x57, 0x06, 0x32, 0x97, 0xe7, 0x46, 0x87, 0x56, 0x46, 0x97, 0x36, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0x50, 0x99, 0x6a, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0xde, 0xf4, 0x1b, 0xac, 0xd7, 0x7a, 0x5e, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0x0e, 0x96, 0x3c, 0x41, 0x77, 0xb0, 0x08, 0xcf, 0x7b, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xc7, 0xde, 0xda, 0xe0, 0xde, 0xe6, 0xca, 0xc8, 0x40, 0xe6, 0xe0, 0xca, 0xc6, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x42, 0xbf, 0x64, 0x83, 0x25, 0x61, 0xce, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x78, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0x0e, 0x96, 0x9f, 0x59, 0xb7, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xde, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x20, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x87, 0xef, 0xdb, 0x37, 0x58, 0x18, 0xf7, 0x7c, 0xb0, 0x08, 0xcf, 0x7b, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x91, 0x2b, 0x63, 0x0b, 0xa3, 0x4b, 0xb3, 0x2b, 0x03, 0xa1, 0x7b, 0x03, 0x99, 0xab, 0x13, 0x53, 0x2b, 0x1b, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0x8a, 0x51, 0xb5, 0xc1, 0x1a, 0x00, 0xe8, 0x83, 0x45, 0x78, 0xde, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x0b, 0x89, 0x0f, 0x0b, 0x88, 0x59, 0x1a, 0x1b, 0x5d, 0x99, 0x9c, 0x0e, 0x88, 0x5c, 0x59, 0x5c, 0x5d, 0x9a, 0x5c, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x7a, 0x95, 0xaa, 0x0d, 0x56, 0x9a, 0x41, 0x1f, 0x2c, 0xc2, 0xf3, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x4f, 0x12, 0x12, 0x16, 0x10, 0xb9, 0xb2, 0xb1, 0x3a, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x45, 0x3d, 0x55, 0x1b, 0xac, 0x34, 0x83, 0x5e, 0xc3, 0x9f, 0x4b, 0x83, 0xc7, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x25, 0x62, 0xfd, 0x06, 0xeb, 0xb5, 0x9e, 0x0f, 0x96, 0x9f, 0x59, 0xb7, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3e, 0x24, 0x7c, 0x2c, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x67, 0xa2, 0x8f, 0x83, 0x25, 0xe2, 0xd0, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x45, 0xf2, 0xc5, 0x02, 0x52, 0x86, 0x17, 0xd6, 0x06, 0xc7, 0x56, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x10, 0x40, 0x67, 0x07, 0x6b, 0x13, 0x9f, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x83, 0x44, 0x87, 0x05, 0x84, 0xae, 0x0e, 0x8e, 0xad, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3d, 0x58, 0x60, 0x05, 0xbd, 0x86, 0x3f, 0x97, 0x06, 0xa7, 0x0f, 0x96, 0x7b, 0x7c, 0xd7, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0x92, 0x94, 0xb0, 0x80, 0xa0, 0x95, 0x85, 0x91, 0x81, 0xc0, 0xa5, 0x8d, 0xad, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x04, 0xed, 0xcf, 0xc1, 0x3a, 0xe2, 0xef, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x85, 0xc4, 0x85, 0x05, 0x44, 0xae, 0x2c, 0x8c, 0xac, 0xe5, 0x4e, 0x2e, 0x8d, 0xae, 0x0c, 0x64, 0xec, 0x4d, 0xae, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0x09, 0x67, 0xd5, 0xc1, 0xca, 0xc0, 0xef, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x85, 0x84, 0x87, 0x05, 0xc4, 0x2c, 0x8d, 0x8d, 0xae, 0x4c, 0x4e, 0x07, 0xa4, 0x0c, 0x6f, 0x8c, 0xad, 0x8e, 0xac, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0x11, 0x6b, 0xd5, 0xc1, 0x82, 0xb5, 0xef, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x81, 0xa4, 0x85, 0x05, 0xc4, 0xac, 0xce, 0x6d, 0x8c, 0x2e, 0xed, 0xcd, 0x0d, 0x64, 0xec, 0x4d, 0xae, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x20, 0x9c, 0xc6, 0x0e, 0x16, 0xac, 0x7d, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x27, 0x89, 0x17, 0x0b, 0xc8, 0xd8, 0x9b, 0xdb, 0x1c, 0x08, 0x5c, 0xda, 0xd8, 0xda, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xd2, 0xe5, 0xaa, 0x83, 0x05, 0x6b, 0xdf, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x47, 0xb2, 0xc2, 0x02, 0x32, 0x47, 0x17, 0xe6, 0x46, 0x16, 0x26, 0x47, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x70, 0x80, 0x10, 0x5d, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0xc3, 0xbf, 0x69, 0x1d, 0x2c, 0xc2, 0xf3, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5e, 0x48, 0x5e, 0x58, 0x40, 0xee, 0xe4, 0xd2, 0xe8, 0xca, 0x5a, 0xde, 0xdc, 0xd8, 0xf2, 0x40, 0xc6, 0xde, 0xe4, 0xca, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x16, 0xd1, 0x57, 0x1d, 0xac, 0x0c, 0xfc, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1f, 0x92, 0x1d, 0x16, 0x90, 0xb6, 0x30, 0xb7, 0xba, 0x30, 0xb6, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x65, 0x04, 0x56, 0x07, 0x6b, 0x13, 0x9f, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x87, 0xc4, 0x84, 0x05, 0x44, 0xae, 0x0c, 0x2e, 0x2c, 0x4d, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0x21, 0x85, 0xd5, 0xc1, 0x12, 0x71, 0xe8, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x22, 0xf1, 0x63, 0x01, 0x21, 0x2b, 0x33, 0x0b, 0xab, 0x63, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x08, 0x35, 0xc4, 0x0d, 0x96, 0x84, 0x39, 0x1f, 0x2c, 0xc2, 0xf3, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3e, 0x48, 0xc0, 0x58, 0x40, 0xe4, 0xca, 0xc2, 0xc8, 0x5a, 0xde, 0xdc, 0xd8, 0xf2, 0x40, 0xc6, 0xde, 0xe4, 0xca, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x56, 0xd8, 0x58, 0x1d, 0xac, 0x0c, 0xfc, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x9f, 0xa4, 0x87, 0x05, 0xc4, 0x2d, 0xac, 0xad, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xf0, 0xe7, 0xd2, 0x06, 0xab, 0x62, 0xa6, 0x0f, 0x16, 0xe1, 0x79, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x27, 0x09, 0x10, 0x0b, 0x48, 0x18, 0xdd, 0x5b, 0x1b, 0x08, 0x5c, 0xda, 0xd8, 0xda, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xe1, 0x83, 0xf9, 0x83, 0x05, 0x6b, 0xdf, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x49, 0xf2, 0xc3, 0x02, 0x62, 0x56, 0xc7, 0xc6, 0x06, 0x02, 0x97, 0x36, 0xb6, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x10, 0x6c, 0xa6, 0x07, 0xeb, 0x88, 0xbf, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x9b, 0x24, 0x84, 0x05, 0xe4, 0x0d, 0x2e, 0x2c, 0xae, 0xae, 0x0c, 0x64, 0xec, 0x4d, 0xae, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0xc1, 0x9d, 0xd5, 0xc1, 0xca, 0xc0, 0xef, 0x0e, 0xa7, 0xd8, 0x02, 0x7c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0xf4, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x9a, 0x8b, 0xf0, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x45, 0x97, 0x56, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xf8, 0x60, 0x39, 0x2c, 0x76, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xac, 0x89, 0xb4, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x21, 0x65, 0x72, 0xb0, 0xde, 0xa8, 0xbb, 0x5a, 0x0d, 0x16, 0x8d, 0x68, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x2c, 0x1a, 0xd1, 0xde, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x03, 0x2e, 0x4c, 0x2e, 0xec, 0x4c, 0x2e, 0x0c, 0x0e, 0x6d, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0xf0, 0xef, 0xfc, 0x02, 0x3e, 0x5c, 0xda, 0x58, 0x58, 0xad, 0x80, 0x4f, 0x97, 0xb6, 0x96, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x70, 0x64, 0x08, 0x3d, 0x58, 0xd1, 0x15, 0xde, 0x00, 0x1e, 0x74, 0x65, 0x73, 0x74, 0x20, 0x63, 0x61, 0x73, 0x65, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x2b, 0xba, 0xc2, 0x37, 0x08, 0xda, 0x9f, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x9a, 0x4b, 0x6b, 0x83, 0x63, 0x2b, 0x03, 0xb9, 0x4b, 0x73, 0x3b, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0x01, 0x1b, 0xb4, 0xc1, 0xa2, 0x4d, 0xe8, 0x83, 0xe5, 0x20, 0xcf, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xe3, 0x16, 0xd6, 0x56, 0x46, 0x06, 0x72, 0x97, 0xe6, 0x76, 0xb6, 0xe1, 0x73, 0xa5, 0x0d, 0xc2, 0x08, 0x68, 0x83, 0x45, 0x9b, 0xd0, 0x07, 0xcb, 0xcb, 0x9c, 0x9b, 0x35, 0x58, 0x5d, 0x3c, 0xbd, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0xba, 0x78, 0x7a, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0x36, 0x58, 0xf1, 0x3f, 0xdd, 0xe1, 0x14, 0x6b, 0x0d, 0x96, 0xc6, 0x3b, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x2c, 0x8d, 0x77, 0xde, 0x60, 0xe9, 0x72, 0xd5, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xfc, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6e, 0x73, 0x1b, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x07, 0x6b, 0xdf, 0x9d, 0x0f, 0x96, 0xb3, 0x3b, 0x6f, 0x10, 0xb4, 0x3f, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x6c, 0xb0, 0x04, 0x98, 0xb8, 0x83, 0x04, 0x09, 0xe1, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x0e, 0xce, 0x7d, 0x06, 0x1b, 0x3e, 0x57, 0xda, 0x20, 0x88, 0x4d, 0x0f, 0x16, 0xf1, 0x86, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xc7, 0x58, 0x19, 0x1b, 0x1b, 0x08, 0x5d, 0xd9, 0x1c, 0xdd, 0x86, 0xcf, 0x95, 0x36, 0x08, 0x99, 0xd3, 0x0d, 0x96, 0xf1, 0x86, 0xb7, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x1e, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1b, 0x3e, 0x57, 0xda, 0x60, 0x0d, 0x1a, 0xde, 0xc1, 0x82, 0xf2, 0xf0, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x2c, 0x8b, 0xab, 0x0b, 0x63, 0x4b, 0xa3, 0xcb, 0x03, 0xa1, 0x2b, 0x9b, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0xab, 0xf0, 0x8a, 0x0f, 0x16, 0xf1, 0x86, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x6f, 0x9a, 0x19, 0x0b, 0x08, 0x1d, 0x5a, 0x99, 0x1b, 0x0b, 0x48, 0x19, 0xdb, 0x5c, 0xd9, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xd6, 0x5b, 0xbc, 0xc1, 0x32, 0xde, 0xf0, 0x0d, 0x16, 0xb4, 0x3b, 0xaf, 0xe1, 0xcf, 0xa5, 0xc1, 0xe5, 0x83, 0xb5, 0xef, 0xce, 0xad, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xef, 0x5c, 0x99, 0x5c, 0x5a, 0x18, 0x1b, 0xc8, 0xd8, 0x5b, 0x1b, 0xdc, 0xdb, 0x5c, 0xd9, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x46, 0x61, 0x7c, 0xb0, 0x88, 0x37, 0x7c, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x80, 0xab, 0x9b, 0x43, 0x03, 0x79, 0x73, 0xa3, 0x7b, 0x03, 0x99, 0xab, 0x13, 0x53, 0x2b, 0x1b, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0x4b, 0x78, 0x8c, 0x0f, 0x16, 0xf1, 0x86, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x2f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x61, 0x72, 0x6d, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x72, 0x65, 0x1b, 0x3e, 0x57, 0xda, 0x60, 0xe9, 0x9a, 0xf1, 0x86, 0x47, 0xe8, 0x0e, 0x96, 0xb3, 0x3b, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x73, 0xb0, 0x06, 0xe4, 0x78, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0xbf, 0x35, 0x5e, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0x3e, 0x57, 0x3a, 0x58, 0x7f, 0x25, 0x7e, 0xb0, 0x9c, 0xdd, 0x79, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x0d, 0xc5, 0xb4, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x4a, 0xe8, 0x78, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xf8, 0x60, 0x7e, 0xc3, 0x0f, 0x35, 0x07, 0x2b, 0xd0, 0xc4, 0x0f, 0x96, 0xb3, 0x3b, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1f, 0x67, 0x72, 0x61, 0x62, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x73, 0x6b, 0x79, 0x1b, 0x3e, 0x57, 0xda, 0x60, 0x6d, 0xfc, 0xf1, 0xc1, 0x22, 0xde, 0xf0, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x0a, 0xc3, 0x4b, 0x9b, 0x03, 0x99, 0x2b, 0x63, 0x2b, 0x1b, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0x21, 0x9d, 0xba, 0xe1, 0x11, 0xba, 0x5a, 0x01, 0x9f, 0xec, 0x6d, 0x6e, 0xde, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x58, 0x52, 0x2a, 0xbe, 0xe1, 0x73, 0xa5, 0x0d, 0x16, 0xea, 0x76, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x0f, 0x5a, 0x1a, 0x1d, 0x08, 0xdc, 0x5b, 0x9a, 0x1b, 0xdd, 0xdc, 0x86, 0x3f, 0x97, 0x36, 0x58, 0xde, 0x1b, 0xba, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x22, 0xd6, 0x6f, 0xb0, 0x5e, 0xeb, 0xf9, 0xe0, 0x74, 0x48, 0xb8, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3e, 0x63, 0x75, 0x74, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0x8c, 0x53, 0x6c, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x88, 0xf5, 0x1b, 0x9c, 0x91, 0x50, 0xd7, 0xf0, 0xef, 0xfc, 0x1a, 0x2c, 0x84, 0xed, 0xae, 0x3a, 0x9c, 0x62, 0x6b, 0x10, 0xb8, 0x0f, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x81, 0xfb, 0xb0, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xaf, 0x5b, 0x1d, 0x1b, 0x1b, 0x0b, 0x88, 0x5b, 0x1a, 0x1b, 0x0b, 0x48, 0x19, 0xdd, 0xd8, 0x41, 0x08, 0x3e, 0xac, 0x86, 0xe7, 0x49, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x9e, 0x27, 0x69, 0x00, 0x6f, 0xba, 0x3c, 0xb8, 0x32, 0x90, 0x30, 0x37, 0xb7, 0x37, 0xba, 0x30, 0xba, 0xb4, 0x37, 0xb7, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0xc3, 0xf3, 0x24, 0x1b, 0x04, 0xed, 0xcf, 0x1a, 0x9e, 0x78, 0xdf, 0x60, 0xe1, 0x5b, 0xf7, 0xc1, 0x32, 0x49, 0xef, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x3e, 0x63, 0x7b, 0x13, 0x0b, 0x63, 0x03, 0x99, 0xa3, 0x0b, 0x73, 0x23, 0x0b, 0x93, 0x23, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0x25, 0x82, 0xb5, 0xc1, 0x32, 0x29, 0xf0, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x63, 0x8e, 0x4e, 0xae, 0x6e, 0x8c, 0xae, 0x4e, 0xae, 0x6c, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0x8d, 0xf7, 0xde, 0x60, 0x61, 0xdc, 0xf3, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xde, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0x37, 0x58, 0x3d, 0x82, 0x5d, 0xad, 0x06, 0x0b, 0x03, 0x91, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x2c, 0x0c, 0x44, 0x6a, 0x80, 0x77, 0xec, 0xad, 0x0d, 0x8e, 0xad, 0x0c, 0x6f, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x60, 0x61, 0x20, 0xd2, 0x06, 0xa1, 0x86, 0xb8, 0xc1, 0x59, 0x56, 0x6a, 0xc3, 0xe7, 0x4a, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x86, 0xb1, 0xa5, 0x85, 0xcd, 0x95, 0xcd, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0xac, 0xdf, 0x60, 0xbd, 0xd6, 0xf3, 0xc1, 0xf2, 0x08, 0xe7, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0x78, 0xc5, 0xe4, 0xd2, 0xc8, 0xce, 0xca, 0xe6, 0x0e, 0x16, 0xa3, 0x47, 0x37, 0x6b, 0xb0, 0x60, 0xe8, 0x79, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x60, 0xc1, 0xd0, 0xf3, 0x86, 0x27, 0xde, 0x37, 0x58, 0x32, 0xa6, 0xbd, 0xe1, 0x83, 0xf9, 0x0d, 0x3f, 0xd4, 0x1c, 0xac, 0x7e, 0xd3, 0x3e, 0x9c, 0x62, 0x6b, 0xb0, 0x32, 0xc6, 0x7b, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x60, 0x65, 0x8c, 0xf7, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xff, 0x1b, 0x1b, 0x19, 0x08, 0x5d, 0x1e, 0x5c, 0xd9, 0xc1, 0xb2, 0x19, 0xe7, 0xc3, 0x29, 0xd6, 0x02, 0xbe, 0xd9, 0xdb, 0x1b, 0xbd, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0xf6, 0x73, 0x7c, 0x83, 0xa0, 0xfd, 0x59, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3e, 0xc8, 0xe4, 0xf2, 0x40, 0xc2, 0xe4, 0xda, 0x58, 0x40, 0xce, 0xca, 0xde, 0xda, 0xca, 0xe8, 0xe4, 0xd2, 0xc6, 0x36, 0x7c, 0xae, 0xb4, 0xc1, 0x2a, 0xf1, 0xed, 0x83, 0xb5, 0x89, 0xcf, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x7f, 0x57, 0x46, 0x07, 0x12, 0x26, 0xd7, 0xc6, 0x02, 0x72, 0x56, 0xe6, 0x56, 0x26, 0x97, 0x36, 0xb6, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0x73, 0x6f, 0x1f, 0xac, 0x4d, 0x7c, 0x6e, 0xd6, 0x60, 0x6d, 0x56, 0xf8, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xda, 0xac, 0xf0, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0x4d, 0x40, 0xe0, 0xe4, 0xde, 0xe6, 0xca, 0x58, 0x40, 0xf8, 0x40, 0xc6, 0xde, 0xc8, 0xca, 0x36, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0x6f, 0xfa, 0x0d, 0x1f, 0xac, 0x1e, 0x9c, 0x35, 0x48, 0x57, 0x83, 0x15, 0x70, 0xd0, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x2b, 0xe0, 0xa0, 0x37, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x09, 0x63, 0x4b, 0x0b, 0x9b, 0x03, 0x61, 0x4b, 0x9b, 0xa3, 0xdb, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0x6f, 0xfa, 0x83, 0x95, 0xaa, 0xdd, 0xad, 0x80, 0x6f, 0x97, 0x36, 0x57, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0x40, 0x20, 0xdf, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x7f, 0x63, 0x23, 0x03, 0xb1, 0x0b, 0x9b, 0x2b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x1c, 0x3e, 0x58, 0xfa, 0xe2, 0x7d, 0x70, 0x90, 0xc3, 0x98, 0x05, 0xfc, 0x37, 0xb7, 0x3c, 0x7c, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x60, 0x71, 0x08, 0xf9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbe, 0x61, 0x72, 0x6d, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x21, 0x65, 0xb2, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xe9, 0x4d, 0xbf, 0xc1, 0xb2, 0x19, 0xe7, 0x35, 0xfc, 0x3b, 0xbf, 0x06, 0x6b, 0x3f, 0xc7, 0xab, 0x56, 0x83, 0x05, 0xcb, 0xdd, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0x16, 0x2c, 0x77, 0x37, 0x80, 0xe7, 0x5c, 0x58, 0x1b, 0x1c, 0x5b, 0x19, 0x48, 0x5b, 0x19, 0x9d, 0x5c, 0xda, 0xd8, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x82, 0xe5, 0xee, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xdf, 0x5c, 0x58, 0x1b, 0x1c, 0x5b, 0xd9, 0x1c, 0x48, 0x9a, 0x1b, 0xc8, 0xd0, 0x86, 0x3f, 0x97, 0x36, 0x18, 0xab, 0x02, 0x07, 0x65, 0x96, 0xee, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xcf, 0x85, 0xb5, 0xc1, 0xb1, 0x95, 0xcd, 0x81, 0xa4, 0xb9, 0x81, 0xb8, 0xbd, 0x8d, 0xad, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x73, 0x7b, 0x1b, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x9e, 0x0b, 0x6b, 0x83, 0x63, 0x2b, 0x9b, 0x03, 0x49, 0x73, 0x03, 0x39, 0x63, 0xab, 0x2b, 0xdb, 0xf0, 0xe7, 0xd2, 0x80, 0x77, 0xc6, 0x56, 0x1f, 0x94, 0x59, 0xba, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x3f, 0x17, 0xd6, 0x06, 0xc7, 0x56, 0x36, 0x07, 0x92, 0xe6, 0x06, 0x12, 0xc6, 0xc6, 0xf6, 0x36, 0xb6, 0xe1, 0xcf, 0xa5, 0x01, 0xaf, 0x2d, 0x8c, 0x3d, 0x28, 0xb3, 0x74, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x7b, 0x2e, 0xac, 0x0d, 0x8e, 0xad, 0x6c, 0x0e, 0x24, 0xcd, 0x0d, 0xc4, 0x4c, 0x2e, 0xec, 0x6c, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x59, 0x98, 0x7c, 0x50, 0x66, 0xe9, 0xae, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xf7, 0x5c, 0x58, 0x1b, 0x1c, 0x5b, 0xd9, 0x1c, 0x48, 0x9a, 0x1b, 0xc8, 0xd8, 0x1b, 0x5c, 0xde, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb1, 0xb7, 0xfc, 0xa0, 0xcc, 0xd2, 0x5d, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xff, 0xb9, 0xb0, 0x36, 0x38, 0xb6, 0xb2, 0x39, 0x90, 0x34, 0x37, 0x90, 0xb2, 0xb8, 0xba, 0x30, 0xb6, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x65, 0x75, 0xf1, 0x41, 0x99, 0xa5, 0xdb, 0x0a, 0xf8, 0x77, 0x68, 0x69, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x55, 0xdb, 0xe4, 0x0d, 0xc0, 0x03, 0x9c, 0x5c, 0x99, 0x59, 0x1a, 0x1e, 0x08, 0xd9, 0xdb, 0xd8, 0x1c, 0x08, 0x5c, 0x98, 0xdc, 0x5c, 0xd9, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xaa, 0x6d, 0xf2, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xa7, 0x58, 0x18, 0xdd, 0x18, 0x1a, 0xc8, 0xd8, 0x5b, 0x5b, 0x5b, 0x99, 0x1b, 0xdd, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb1, 0x30, 0x7a, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0xac, 0xdf, 0x60, 0xa1, 0x5f, 0xf7, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0xa5, 0x37, 0xfd, 0x06, 0x27, 0x20, 0xd1, 0x0d, 0xd6, 0x75, 0x68, 0x57, 0x87, 0x53, 0xac, 0xd6, 0x60, 0xe1, 0x1a, 0xf6, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x85, 0x6b, 0xd8, 0x0d, 0xe0, 0xcd, 0x56, 0x86, 0x97, 0x36, 0x16, 0xc6, 0x06, 0x32, 0x57, 0x76, 0xd6, 0x56, 0xe6, 0x46, 0xb7, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0x70, 0x0d, 0x7b, 0x83, 0xa0, 0xfd, 0x59, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x9f, 0x6f, 0x0c, 0x2d, 0x0c, 0x8e, 0xae, 0x4c, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0x3d, 0x5b, 0xd6, 0xc1, 0xb2, 0xb8, 0xe7, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x28, 0x19, 0x7b, 0x73, 0x9b, 0xa3, 0x0b, 0x73, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0xd1, 0x97, 0xb5, 0xc1, 0xe2, 0x99, 0xe6, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0xbc, 0xe1, 0xdf, 0xf9, 0x0d, 0xff, 0xd6, 0xd4, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x3c, 0x2e, 0x66, 0x61, 0x63, 0x65, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x0b, 0x2f, 0xb3, 0x0e, 0x96, 0xc5, 0x3d, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xe0, 0xaf, 0x84, 0xc9, 0xb5, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x94, 0x9a, 0x96, 0x07, 0xcb, 0xe2, 0x9e, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x21, 0x99, 0x83, 0x2b, 0x1b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x38, 0x32, 0x84, 0x1e, 0x2c, 0x8b, 0x7b, 0xee, 0x70, 0x8a, 0xad, 0xc1, 0xe2, 0x44, 0xec, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xc5, 0x89, 0xd8, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xa7, 0xb9, 0xbd, 0x8c, 0xbd, 0xb9, 0xd1, 0xc9, 0x85, 0xbd, 0x88, 0xa5, 0xbd, 0x8c, 0xbd, 0x6d, 0x10, 0x6c, 0xa6, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x70, 0x4a, 0xac, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x25, 0xd6, 0x59, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0xb0, 0x7f, 0xb6, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x96, 0x64, 0x40, 0xb5, 0x1a, 0xac, 0x1d, 0xed, 0xde, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x58, 0x3b, 0xda, 0xbd, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x2f, 0x68, 0x65, 0x6c, 0x70, 0x20, 0x73, 0x6c, 0x6f, 0x67, 0x61, 0x6e, 0x2f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x65, 0x13, 0xe6, 0xc1, 0xfa, 0x85, 0xf2, 0x15, 0xf0, 0xe1, 0xde, 0xe4, 0xe8, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x65, 0xd3, 0xe5, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xcf, 0xd5, 0x8d, 0x8d, 0x95, 0xcd, 0xcd, 0x99, 0xd5, 0xb1, 0x81, 0xb4, 0x85, 0xd1, 0x8d, 0xa1, 0x6d, 0x10, 0xfa, 0x25, 0x1b, 0xac, 0x82, 0x4c, 0x5e, 0xc3, 0xbf, 0xf3, 0x6b, 0xb0, 0xca, 0xa9, 0xb9, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0x37, 0x58, 0x36, 0xe3, 0x7c, 0xb0, 0xc4, 0x26, 0xbb, 0xd5, 0x60, 0xa9, 0x5b, 0xf3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xa5, 0x6e, 0xcd, 0x0d, 0xe0, 0xc3, 0x96, 0xd6, 0x26, 0x06, 0xd2, 0x16, 0x46, 0x37, 0x86, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0xd4, 0xad, 0x79, 0x83, 0xa0, 0xfd, 0x59, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0xc0, 0x63, 0x2b, 0x3b, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0x01, 0x1b, 0xb4, 0xc1, 0x5a, 0x18, 0xe7, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x39, 0x58, 0x2f, 0x6a, 0xbc, 0xe1, 0x73, 0xa5, 0x0d, 0xc2, 0x08, 0x68, 0x83, 0x75, 0x7a, 0xce, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x78, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0x7c, 0x5f, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0x85, 0x71, 0x5e, 0xc3, 0x9f, 0x4b, 0x83, 0xc7, 0x07, 0x4b, 0x7f, 0xc8, 0xab, 0x66, 0x01, 0x9f, 0xae, 0xcc, 0x8d, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xb0, 0x14, 0xc7, 0xbc, 0x01, 0x3c, 0xdb, 0xde, 0xc8, 0xca, 0xd8, 0x40, 0xc4, 0xea, 0xd2, 0xd8, 0xc8, 0xca, 0xe4, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x96, 0xe2, 0x98, 0x6f, 0x10, 0xb4, 0x3f, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xa0, 0xe5, 0x87, 0x02, 0x07, 0x12, 0x07, 0x22, 0xe7, 0xe2, 0xe2, 0x92, 0xda, 0xf0, 0xb9, 0xd2, 0x06, 0x61, 0x04, 0xb4, 0xc1, 0x1a, 0x00, 0xe8, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0xbc, 0xe1, 0xdf, 0xf9, 0x35, 0x58, 0x8a, 0x63, 0x5e, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xf9, 0x60, 0xb9, 0xc7, 0x77, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x86, 0xb9, 0x88, 0xe9, 0x8c, 0xb9, 0x90, 0x6d, 0xf8, 0x5c, 0x69, 0x83, 0x80, 0x0d, 0xda, 0x60, 0x49, 0x08, 0x76, 0x1d, 0x4e, 0xb1, 0x5a, 0x83, 0xf5, 0x35, 0xd3, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0xd6, 0xd7, 0x4c, 0x37, 0xc0, 0x4b, 0x57, 0x86, 0x47, 0x57, 0x27, 0x57, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0xbe, 0x66, 0x7a, 0xc3, 0x07, 0xf3, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x87, 0x5b, 0x58, 0x5b, 0xd9, 0x8b, 0xdf, 0x16, 0x5d, 0x99, 0x5c, 0x1b, 0x48, 0x89, 0xdb, 0x9b, 0x5b, 0x59, 0xd7, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x01, 0xa5, 0x1e, 0xac, 0xd7, 0x7a, 0xde, 0x20, 0x68, 0x7f, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x47, 0x2c, 0x6c, 0xae, 0x0c, 0xa4, 0x2d, 0x8c, 0x6e, 0x0c, 0x6d, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0x62, 0x74, 0x5e, 0xc3, 0x9f, 0x4b, 0x1b, 0xbe, 0xa8, 0x39, 0x58, 0x3e, 0xe9, 0xdc, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x07, 0x05, 0x3b, 0xfd, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xbf, 0xcf, 0xbc, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x5f, 0x33, 0x7d, 0xb0, 0x80, 0x66, 0x7a, 0x83, 0xf5, 0xc5, 0xe6, 0xad, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x73, 0xb0, 0x40, 0x88, 0x78, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0xd1, 0x75, 0x5e, 0xc3, 0x9f, 0x4b, 0x1b, 0x24, 0xe2, 0x03, 0x1f, 0x2c, 0x7d, 0x0f, 0x3e, 0x58, 0xbe, 0x6c, 0xbe, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xde, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x1b, 0x3e, 0x57, 0xda, 0xe0, 0x2c, 0x26, 0xba, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x86, 0xd3, 0x7c, 0xb0, 0xce, 0xa6, 0x79, 0x0d, 0x7f, 0x2e, 0x6d, 0xa8, 0xe3, 0x07, 0xab, 0xae, 0xca, 0x5b, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x9f, 0xac, 0x6c, 0x6e, 0x4c, 0x2e, 0x4d, 0xac, 0x6c, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0xa1, 0xf4, 0x5e, 0xc3, 0x9f, 0x4b, 0x1b, 0xee, 0xb4, 0x83, 0x85, 0x9b, 0xde, 0x07, 0xcb, 0x97, 0xcd, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x2b, 0x0c, 0x0e, 0x8e, 0x2d, 0x0f, 0x84, 0x2d, 0x4c, 0xac, 0x8c, 0x6d, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0x97, 0xf9, 0xde, 0x60, 0x5d, 0xa8, 0xf9, 0xc1, 0xf2, 0x65, 0xf3, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x92, 0x2b, 0x63, 0x0b, 0xa3, 0x4b, 0xb3, 0x2b, 0x03, 0xa1, 0x7b, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0x2b, 0x98, 0xbe, 0xd7, 0xf0, 0xe7, 0xd2, 0x86, 0xb7, 0x75, 0x0e, 0xd6, 0x8e, 0x3c, 0x1f, 0x2c, 0x5f, 0x36, 0x5f, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x77, 0x2c, 0x6c, 0x8e, 0x0e, 0x84, 0xee, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x84, 0x8e, 0x5d, 0xc3, 0x9f, 0x4b, 0x1b, 0x94, 0xd0, 0xb1, 0x07, 0x0b, 0xac, 0xa0, 0x0f, 0x96, 0x2f, 0x9b, 0xaf, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xd7, 0x1c, 0x9d, 0x5c, 0x1a, 0x1c, 0x88, 0x59, 0xd8, 0x58, 0xd9, 0xdc, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xea, 0x6f, 0xad, 0x35, 0xfc, 0xb9, 0x34, 0xc0, 0x43, 0x56, 0x06, 0x47, 0x87, 0x1e, 0x94, 0x59, 0xba, 0x35, 0x0b, 0xf8, 0x77, 0x68, 0x69, 0xfa, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xaa, 0xb3, 0xf3, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x80, 0x7b, 0x9b, 0xa3, 0x33, 0x4b, 0xc3, 0x03, 0x21, 0x7b, 0x1b, 0x03, 0x81, 0x0b, 0x93, 0x9b, 0x2b, 0x3b, 0x38, 0x01, 0x89, 0x1e, 0x4e, 0xb1, 0x59, 0x00, 0x7e, 0xcc, 0xde, 0xe4, 0xda, 0xc2, 0xe8, 0xe8, 0xd2, 0xdc, 0xce, 0x5a, 0xcc, 0xea, 0xdc, 0xc6, 0xe8, 0xd2, 0xde, 0xdc, 0xe6, 0x65, 0x00, 0xfe, 0x68, 0xda, 0x74, 0x40, 0xcc, 0xde, 0xe4, 0xda, 0xc2, 0xe8, 0xe8, 0xd2, 0xdc, 0xce, 0x40, 0xcc, 0xea, 0xdc, 0xc6, 0xe8, 0xd2, 0xde, 0xdc, 0xe6, 0xd6, 0x60, 0x55, 0xc3, 0xd6, 0x86, 0xc7, 0x47, 0x36, 0x58, 0xd5, 0xb0, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0x16, 0xc5, 0xc0, 0x6e, 0x50, 0x96, 0xbc, 0x6f, 0xb0, 0x62, 0x4d, 0x6f, 0x0d, 0x6f, 0xeb, 0x1c, 0x2c, 0x36, 0xc6, 0xdb, 0x20, 0x29, 0x2d, 0x78, 0x0d, 0x6f, 0xeb, 0x1c, 0x2c, 0x4d, 0x82, 0x6d, 0x05, 0xfc, 0x39, 0xb6, 0xb0, 0x7c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0xa3, 0xc3, 0xa3, 0x0f, 0x8e, 0xda, 0xa0, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0x3c, 0x48, 0x3d, 0x0e, 0xde, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0x59, 0xd0, 0xe8, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x1b, 0x0b, 0x0b, 0x04, 0x04, 0xae, 0x8c, 0x8e, 0x2e, 0x0f, 0x64, 0x2c, 0x6c, 0x0c, 0xad, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0x51, 0x5c, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0x2c, 0xf5, 0xd8, 0x5a, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0xc0, 0x3d, 0xaf, 0x35, 0x58, 0x0e, 0xc9, 0x34, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x2c, 0x8d, 0x5d, 0xc3, 0x83, 0x92, 0x1b, 0xac, 0x68, 0x80, 0xdd, 0xf0, 0xb6, 0xce, 0xc0, 0xcf, 0xbd, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x85, 0xc8, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0xb0, 0xdf, 0x0e, 0x16, 0x81, 0x9f, 0xd7, 0xc1, 0x8a, 0xf3, 0xf3, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x96, 0xba, 0x8d, 0x6e, 0x50, 0x50, 0x64, 0x6e, 0xf8, 0xc5, 0x65, 0x83, 0x82, 0x22, 0xf3, 0x60, 0xdd, 0xcc, 0xed, 0xac, 0xc1, 0xfa, 0xa7, 0xad, 0x0d, 0x8f, 0x8f, 0x6c, 0xb0, 0xfe, 0x69, 0x6b, 0xc3, 0x2f, 0x4a, 0x1b, 0x2c, 0x8a, 0x81, 0xdd, 0xa0, 0x2c, 0x79, 0xdf, 0x60, 0x0d, 0x45, 0xde, 0xc1, 0xb2, 0xd3, 0xf3, 0x15, 0xf0, 0xe7, 0xe8, 0xc2, 0xc4, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x80, 0x0b, 0x93, 0x9b, 0x2b, 0x03, 0x19, 0x7b, 0x93, 0x23, 0x03, 0xa1, 0x7b, 0x03, 0x81, 0x0b, 0xa3, 0x43, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xf4, 0xca, 0xe0, 0x83, 0xf3, 0xec, 0xe8, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x23, 0xa1, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xee, 0x42, 0xb6, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xb2, 0x18, 0xf4, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x3f, 0x47, 0x17, 0x06, 0xd7, 0xe1, 0x14, 0x5b, 0x83, 0xd5, 0x82, 0x5c, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0xb5, 0x20, 0xd7, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0xd0, 0xfc, 0xe0, 0xe0, 0xbc, 0x79, 0xba, 0xc1, 0x1a, 0xdb, 0xf3, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xa1, 0x5d, 0x66, 0x83, 0x93, 0x83, 0xdc, 0x06, 0xc1, 0x7a, 0xbb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0xa3, 0xa4, 0x6f, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xc5, 0xb1, 0xe7, 0x1d, 0x2c, 0x02, 0x3f, 0xdf, 0xa0, 0xd8, 0xd1, 0x5c, 0xc3, 0x23, 0xac, 0x6b, 0x50, 0x4c, 0x62, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x42, 0xf0, 0x61, 0x83, 0x94, 0xc1, 0xe0, 0x83, 0x84, 0x06, 0xcc, 0x83, 0x32, 0xb4, 0x7b, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0xc1, 0xe1, 0xc1, 0xeb, 0x83, 0x32, 0xb4, 0xfb, 0x20, 0xec, 0x6e, 0xdb, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x8b, 0xcb, 0x06, 0x05, 0x45, 0xe6, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3e, 0x58, 0x40, 0x88, 0xde, 0x1a, 0x9c, 0xd2, 0x5a, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x5a, 0x03, 0xd8, 0x0d, 0x96, 0x81, 0x9f, 0xaf, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0x6e, 0x90, 0x46, 0x7b, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x56, 0x09, 0xba, 0xc1, 0xd2, 0x29, 0xd7, 0x35, 0x3c, 0x28, 0xb9, 0xc1, 0xe2, 0x2d, 0xd7, 0x83, 0xc5, 0xf0, 0xe7, 0xd5, 0x1a, 0x9c, 0x39, 0x5d, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x5a, 0x03, 0xd8, 0x0d, 0x96, 0x81, 0x9f, 0xaf, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0x6e, 0x90, 0x46, 0x7b, 0x74, 0xb0, 0xf0, 0xed, 0xb5, 0x35, 0x38, 0x71, 0xad, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xb5, 0x06, 0xb0, 0x1b, 0x2c, 0x03, 0x3f, 0x3f, 0x58, 0xe8, 0xdf, 0xba, 0x06, 0xa7, 0xd5, 0xd5, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xd6, 0x00, 0x76, 0x83, 0x65, 0xe0, 0xe7, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x0f, 0xa3, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x78, 0x18, 0xbc, 0x83, 0x25, 0xba, 0xad, 0xad, 0xc1, 0xb1, 0x79, 0x75, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x35, 0x80, 0xdd, 0x60, 0x19, 0xf8, 0xf9, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xe1, 0xc3, 0xe8, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0x1e, 0xc6, 0xee, 0x60, 0x3d, 0x75, 0x6b, 0x6b, 0x70, 0xcc, 0x73, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x6b, 0x0d, 0x60, 0x37, 0x58, 0x06, 0x7e, 0xbe, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0x41, 0x1a, 0xed, 0xd1, 0xc1, 0x72, 0xf9, 0xd5, 0x83, 0x95, 0x84, 0xaf, 0xad, 0x86, 0x0c, 0xf8, 0xc1, 0x92, 0xed, 0xba, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xd6, 0x00, 0x76, 0x83, 0x65, 0xe0, 0xe7, 0x07, 0x0b, 0xeb, 0x59, 0x5b, 0x0d, 0xd6, 0x8e, 0x05, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xac, 0x1d, 0x0b, 0x6e, 0x00, 0x1e, 0xe0, 0xe4, 0xca, 0xe8, 0xe8, 0xf2, 0x40, 0xe0, 0xe4, 0xd2, 0xdc, 0xe8, 0x40, 0xe0, 0xc2, 0xe8, 0xd0, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb1, 0x37, 0xf7, 0xe0, 0x8c, 0x84, 0xba, 0xe1, 0x2f, 0x9a, 0x0d, 0xce, 0x04, 0xa3, 0x1b, 0x9c, 0xf3, 0x97, 0x36, 0x58, 0xd5, 0x20, 0xbc, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xab, 0xc3, 0xda, 0x0e, 0xca, 0x3a, 0xcf, 0x0d, 0x16, 0x0d, 0xa5, 0x1f, 0x94, 0x75, 0x9e, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x44, 0xaa, 0x5e, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0xaa, 0x49, 0x6f, 0x0d, 0xbf, 0x28, 0x6d, 0xf8, 0x72, 0x69, 0xc3, 0x2f, 0x2e, 0x1b, 0x9e, 0xb8, 0x3b, 0x58, 0x67, 0xfd, 0xd6, 0xe1, 0x14, 0x5b, 0xc0, 0x87, 0x0b, 0xb3, 0x2b, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x98, 0x7e, 0x1e, 0x9c, 0x91, 0x50, 0x37, 0xfc, 0x45, 0xb3, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x78, 0x68, 0x5a, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x94, 0x48, 0xd5, 0x1b, 0xac, 0x86, 0x0a, 0xde, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3d, 0x38, 0x6a, 0x83, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x63, 0xec, 0xd8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xad, 0x01, 0xec, 0x06, 0x65, 0xf4, 0xf9, 0x1a, 0x1e, 0x94, 0xdc, 0x60, 0xe9, 0x7e, 0xf0, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0x39, 0xba, 0x34, 0xb8, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x6b, 0xa9, 0xec, 0x0e, 0x4a, 0x33, 0xf4, 0x56, 0xc0, 0x87, 0x7b, 0xab, 0xa3, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x1e, 0x9a, 0x1e, 0xac, 0x5b, 0x4b, 0xdf, 0xf0, 0x17, 0xcd, 0x06, 0x67, 0x24, 0xd4, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x4a, 0xa4, 0xea, 0x35, 0xbc, 0xad, 0x73, 0xb0, 0xa8, 0x2d, 0x7d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf4, 0xe0, 0x9c, 0x6e, 0xba, 0x41, 0x41, 0x30, 0xbb, 0x41, 0xb1, 0x7b, 0xbe, 0x41, 0x19, 0x7d, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xaa, 0x86, 0xad, 0x0e, 0x4a, 0x33, 0xf4, 0x59, 0xc0, 0x9f, 0x83, 0xab, 0x23, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x45, 0xae, 0xcc, 0x8d, 0xac, 0x4c, 0x0e, 0x04, 0x2e, 0x8c, 0x0e, 0x0d, 0x84, 0xee, 0x0d, 0x84, 0x2e, 0x0c, 0xae, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x83, 0x0b, 0xc3, 0x0f, 0xce, 0x48, 0xa8, 0x1b, 0x94, 0x25, 0xef, 0x0b, 0x78, 0x72, 0x61, 0x6d, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xe5, 0xca, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0xc3, 0x82, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x0b, 0xa8, 0xd3, 0xab, 0xc3, 0x29, 0xd6, 0x02, 0xfe, 0x1c, 0x5c, 0x18, 0xbd, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x2f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x72, 0x64, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0x8d, 0x74, 0xfa, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x8e, 0x2c, 0xbc, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x0b, 0x7f, 0xd3, 0x3b, 0x58, 0x42, 0x9e, 0xde, 0x6a, 0xb0, 0x78, 0x31, 0x7d, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0xf1, 0x62, 0x7a, 0x03, 0xf0, 0x40, 0x97, 0x07, 0x57, 0x46, 0x06, 0x02, 0x17, 0x46, 0x87, 0x06, 0x02, 0x17, 0x26, 0x37, 0x57, 0x26, 0xb7, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xcf, 0xdd, 0xbd, 0xd1, 0x6d, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x6b, 0xb0, 0x4e, 0x44, 0x7d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xf7, 0x20, 0xad, 0x1d, 0x78, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x2c, 0xb0, 0x33, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x6b, 0x25, 0xdd, 0x60, 0x81, 0x9d, 0xe9, 0xc1, 0xc2, 0xfd, 0xe0, 0x0e, 0xd2, 0xf0, 0x72, 0x57, 0x83, 0x44, 0x7c, 0xe0, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0xd8, 0xb1, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0x32, 0x05, 0xaf, 0xe1, 0x6d, 0x9d, 0x83, 0x43, 0xbc, 0x69, 0x1b, 0x9c, 0xd8, 0x6f, 0x36, 0x58, 0xd3, 0xcc, 0xba, 0xc1, 0xb1, 0xcd, 0x71, 0x83, 0x65, 0xd3, 0xac, 0x1b, 0x1c, 0xdb, 0x1c, 0x37, 0x58, 0xa2, 0xcd, 0xba, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0x58, 0xd7, 0x05, 0x77, 0xb0, 0xde, 0x0c, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0x60, 0x5d, 0x76, 0xdd, 0xc1, 0xc2, 0x7a, 0xd6, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x58, 0x7b, 0x4e, 0xbb, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xe0, 0x84, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0xd6, 0x65, 0xd7, 0x6d, 0x90, 0x94, 0x16, 0xdc, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x9d, 0x35, 0x6d, 0xad, 0x41, 0x61, 0xa8, 0xba, 0x06, 0x8b, 0xe0, 0xdd, 0x0e, 0x56, 0x1c, 0xc9, 0x6d, 0x78, 0x50, 0x72, 0x83, 0xe5, 0x05, 0xad, 0x07, 0x8b, 0xe1, 0xcf, 0xd7, 0xa0, 0x30, 0x54, 0xdd, 0x60, 0xcd, 0xc6, 0xdb, 0x86, 0x07, 0x25, 0x37, 0x58, 0x50, 0xd1, 0x7a, 0xb0, 0x18, 0xfe, 0x7c, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x16, 0xe1, 0xc9, 0x6d, 0x78, 0x50, 0x72, 0x83, 0x55, 0x6e, 0xab, 0x07, 0x8b, 0xe1, 0xcf, 0xd7, 0xa0, 0x30, 0x54, 0xdd, 0x60, 0xdd, 0x3a, 0xdc, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x41, 0x1a, 0xed, 0xd1, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0x1e, 0x94, 0xdc, 0x60, 0x95, 0x29, 0xeb, 0xc1, 0x62, 0xf8, 0xf3, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0x94, 0xd2, 0x0d, 0x4e, 0xc5, 0xaa, 0xd5, 0x1a, 0x14, 0x86, 0xaa, 0x1b, 0x2c, 0xaa, 0x80, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x58, 0xbb, 0x5b, 0xb7, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xf4, 0x47, 0x5a, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0x2c, 0xe0, 0xcf, 0xb1, 0x85, 0xd1, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0xc5, 0x14, 0xfa, 0x86, 0x5f, 0x94, 0x36, 0x58, 0x63, 0x7b, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x6a, 0x41, 0xae, 0x36, 0x08, 0xbb, 0xdb, 0x83, 0x45, 0xe0, 0xe7, 0xb3, 0x06, 0x2b, 0x8a, 0xd0, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x56, 0x14, 0xa1, 0x37, 0x80, 0x17, 0x5c, 0x18, 0x1d, 0x1a, 0x08, 0x5c, 0x98, 0xdc, 0x5c, 0x99, 0xdc, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x4b, 0xec, 0x58, 0xd7, 0xf0, 0x8b, 0xd2, 0x06, 0xa9, 0x22, 0xc1, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0x49, 0x50, 0xf0, 0x86, 0x0f, 0x72, 0xd6, 0xa0, 0x98, 0xc4, 0x5c, 0xc3, 0xe7, 0x4a, 0x1b, 0x84, 0xe0, 0xc3, 0xc1, 0x71, 0xf1, 0xe4, 0xe0, 0xe0, 0x91, 0xb1, 0x06, 0xc7, 0x70, 0x83, 0x83, 0x82, 0x22, 0x73, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x50, 0x50, 0x64, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x50, 0xf0, 0x9d, 0x75, 0x90, 0x9e, 0x34, 0xb8, 0x06, 0xc7, 0x70, 0x83, 0x83, 0xd3, 0x45, 0xc6, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0x6e, 0xb0, 0xc0, 0xce, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x66, 0x36, 0x74, 0x83, 0x05, 0x76, 0xa6, 0x07, 0x2b, 0x09, 0x5f, 0x3b, 0x9c, 0x62, 0x0b, 0xf8, 0x73, 0x6c, 0x61, 0xf6, 0x86, 0x5f, 0x94, 0x36, 0x58, 0x14, 0x85, 0xbe, 0xe1, 0xdd, 0x9e, 0x0d, 0xce, 0x86, 0x2e, 0x1b, 0xac, 0xda, 0x56, 0xef, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x05, 0xf0, 0xa3, 0x0b, 0x73, 0x5b, 0x6b, 0x81, 0x93, 0x4b, 0x73, 0xa3, 0x2b, 0x93, 0x67, 0x0d, 0x56, 0x60, 0xc7, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xac, 0xc0, 0x8e, 0x6d, 0x00, 0x5d, 0x2c, 0x2c, 0x10, 0xb2, 0x32, 0x38, 0xb9, 0xb2, 0xb1, 0x30, 0xba, 0x32, 0xb2, 0xd0, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x67, 0x57, 0xd6, 0x1e, 0x84, 0xe9, 0xd8, 0x06, 0x07, 0x2c, 0xba, 0x35, 0xfc, 0x45, 0xb3, 0xc1, 0x99, 0x60, 0x74, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xf8, 0xa1, 0x66, 0x83, 0x95, 0x61, 0xeb, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x4f, 0xdc, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0x7a, 0xc0, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x61, 0xbf, 0xad, 0xe1, 0x6d, 0x9d, 0x83, 0xe5, 0x70, 0xeb, 0xd5, 0x06, 0x41, 0x7a, 0xba, 0xc1, 0x72, 0xb8, 0xf5, 0xd5, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x7c, 0x3e, 0x08, 0xc1, 0x87, 0x83, 0x13, 0x99, 0xc5, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x71, 0xb7, 0xc1, 0xa2, 0x0a, 0xb8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x89, 0xa0, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xd2, 0x03, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x00, 0x3b, 0xbc, 0x86, 0x4b, 0x6a, 0x8d, 0xe7, 0x07, 0xcb, 0xe1, 0xd6, 0xab, 0x83, 0xa5, 0x24, 0x70, 0xad, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xf3, 0x41, 0xca, 0x16, 0xd3, 0x41, 0xf1, 0x17, 0xbb, 0xe1, 0x17, 0x97, 0x0d, 0x4f, 0xdc, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0x7a, 0xc0, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x61, 0xbf, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xc7, 0x83, 0xe5, 0x70, 0xeb, 0xd5, 0x6a, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x1f, 0xac, 0x14, 0x47, 0x3c, 0x38, 0x91, 0x59, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x73, 0x68, 0x6f, 0x70, 0x1b, 0xac, 0xe2, 0x5d, 0x5f, 0xc3, 0x2f, 0x4a, 0x1b, 0xbe, 0x5c, 0xda, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0x00, 0xc2, 0xb2, 0xc1, 0xfa, 0xad, 0xb6, 0xc3, 0x43, 0x3f, 0xad, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xf3, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x3b, 0xb3, 0x77, 0xb0, 0x5a, 0x54, 0xfc, 0xe0, 0x44, 0x66, 0xb1, 0xc1, 0x39, 0x7f, 0x69, 0x0d, 0x6f, 0xdc, 0x1d, 0x1c, 0x32, 0x45, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x11, 0x9e, 0xdc, 0x41, 0x59, 0xe7, 0xb9, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xb3, 0xf1, 0x76, 0x50, 0xd6, 0x79, 0x1e, 0x94, 0x65, 0x9e, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x9e, 0xb8, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0xf4, 0x80, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc3, 0x7e, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x83, 0xcf, 0x07, 0xcb, 0xe1, 0xd6, 0xab, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0x0e, 0xb7, 0x7e, 0xb0, 0x8a, 0x77, 0xbd, 0x83, 0xb2, 0xce, 0x73, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x9f, 0x0f, 0xce, 0xb9, 0x29, 0x07, 0x27, 0x32, 0x8b, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x80, 0x79, 0x7d, 0x83, 0x55, 0xbc, 0xeb, 0x6b, 0xf8, 0x45, 0x69, 0xc3, 0x97, 0x4b, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0xac, 0xeb, 0x83, 0x3b, 0x58, 0xa5, 0xbd, 0xde, 0x6a, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x6f, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0x7c, 0x3d, 0x38, 0x91, 0x59, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x85, 0xc9, 0xc1, 0x07, 0x6b, 0x78, 0xd7, 0x57, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf9, 0x60, 0x29, 0x97, 0xe1, 0xc1, 0x89, 0xcc, 0x62, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0xab, 0x1a, 0x84, 0x37, 0x58, 0x17, 0x94, 0xbe, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xe5, 0xbd, 0xb1, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x94, 0xc9, 0xc1, 0x89, 0xd1, 0xf5, 0x60, 0x0d, 0xef, 0xfa, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x91, 0xaa, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xeb, 0xb1, 0xd8, 0x5b, 0xc3, 0x2f, 0x4a, 0x1b, 0x2c, 0x09, 0x9c, 0x3b, 0x58, 0x86, 0x95, 0xde, 0x6a, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x6f, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0x9c, 0x3d, 0x38, 0x91, 0x59, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x73, 0x68, 0x6f, 0x6c, 0x07, 0x6b, 0x78, 0xd7, 0x57, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x79, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0xe1, 0xef, 0xc1, 0x89, 0xcc, 0x62, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xe5, 0x70, 0xeb, 0x1b, 0x14, 0x86, 0xaa, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xc5, 0x4a, 0xaf, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0x60, 0xe1, 0x38, 0x58, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x25, 0xb5, 0xc6, 0xa1, 0x83, 0x05, 0xbe, 0xeb, 0xad, 0xe1, 0x92, 0x5a, 0x43, 0x34, 0x0f, 0x16, 0xf8, 0xae, 0xb7, 0x86, 0x4b, 0x6a, 0x0d, 0xe3, 0x72, 0xb0, 0xc0, 0x77, 0xbd, 0x35, 0x5c, 0x52, 0x6b, 0x48, 0xd5, 0x1c, 0x2c, 0xf0, 0x5d, 0x6f, 0x0d, 0x97, 0xd4, 0x1a, 0x56, 0x68, 0x0f, 0x16, 0xf8, 0xae, 0x77, 0x50, 0xd6, 0x79, 0xb6, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0xcf, 0x07, 0x67, 0x4e, 0xd7, 0x83, 0x13, 0x99, 0xc5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xc0, 0xbc, 0xbe, 0xc1, 0x2a, 0xde, 0xf5, 0x35, 0xfc, 0xa2, 0xb4, 0xe1, 0xcb, 0xa5, 0x0d, 0xca, 0x92, 0xf7, 0x35, 0x58, 0x13, 0x0a, 0xd7, 0xc1, 0x2a, 0xed, 0xf5, 0x56, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf9, 0xe0, 0x58, 0xec, 0x7a, 0x70, 0x22, 0xb3, 0xd8, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x98, 0xd7, 0x37, 0x58, 0xc5, 0xbb, 0xbe, 0x86, 0x5f, 0x94, 0x36, 0x7c, 0xb9, 0xb4, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xc1, 0xb3, 0x79, 0xb0, 0x4a, 0x7b, 0xbd, 0xd5, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x7c, 0x3e, 0x58, 0x98, 0xdc, 0x77, 0x70, 0x22, 0xb3, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x39, 0xdc, 0xfa, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0xb0, 0xdc, 0xb7, 0xc1, 0x62, 0x9f, 0xbb, 0x0d, 0x16, 0x30, 0xd4, 0x1e, 0x2c, 0xc4, 0x99, 0x3d, 0x58, 0xc3, 0xbb, 0xde, 0x6a, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x1f, 0x9c, 0x7e, 0x5c, 0x0f, 0x4e, 0x64, 0x16, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x01, 0xf3, 0xfa, 0x06, 0xab, 0x78, 0xd7, 0xd7, 0xf0, 0x8b, 0xd2, 0x86, 0x2f, 0x97, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x58, 0xde, 0x19, 0x77, 0xb0, 0x4a, 0x7b, 0xbd, 0xd5, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x7c, 0x3e, 0x58, 0x97, 0xa4, 0x78, 0x70, 0x22, 0xb3, 0xd8, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x98, 0xd7, 0x37, 0x58, 0xc5, 0xbb, 0xbe, 0x86, 0x5f, 0x94, 0x36, 0x7c, 0xb9, 0xb4, 0x41, 0x59, 0xf2, 0xbe, 0x06, 0x6b, 0xd0, 0xdd, 0x3a, 0x58, 0xa5, 0xbd, 0xde, 0x6a, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x1f, 0xac, 0xea, 0x4d, 0x3c, 0x38, 0x91, 0x59, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x05, 0xcc, 0xeb, 0x1b, 0xac, 0xe2, 0x5d, 0x5f, 0xc3, 0x2f, 0x4a, 0x1b, 0xbe, 0x5c, 0xda, 0xa0, 0x2c, 0x79, 0xdf, 0x60, 0x5d, 0x56, 0xdb, 0xc1, 0x2a, 0xed, 0xf5, 0x56, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x79, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0xca, 0x73, 0x3d, 0x58, 0x2d, 0x2a, 0x7e, 0x70, 0x22, 0xb3, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xe7, 0xd0, 0xca, 0xe0, 0x36, 0x58, 0xd6, 0xc0, 0x7e, 0xb0, 0x86, 0x77, 0x7d, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x9f, 0x37, 0x7c, 0xae, 0xb4, 0xc1, 0xc2, 0xe4, 0xbe, 0x83, 0xd5, 0xa2, 0xe2, 0x07, 0x27, 0x32, 0x8b, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x96, 0xc3, 0xad, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x22, 0xa0, 0x7d, 0x83, 0xc5, 0x3e, 0x77, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x22, 0x75, 0xfc, 0x60, 0x51, 0x03, 0xfb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x24, 0x9a, 0xdd, 0xa0, 0xa8, 0x14, 0xdf, 0xa0, 0x14, 0x22, 0x3f, 0x58, 0xd4, 0xc0, 0xde, 0xc1, 0x1a, 0xde, 0xf5, 0x56, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x79, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0x4c, 0xee, 0xdb, 0xf0, 0x08, 0xdd, 0x86, 0x77, 0xea, 0x0e, 0xd2, 0xd2, 0x19, 0x0f, 0x4e, 0x64, 0x16, 0x1b, 0x9c, 0xf3, 0x97, 0x36, 0x58, 0xd5, 0x20, 0xbc, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0xc1, 0xb2, 0x02, 0xf6, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0x7a, 0xc0, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x61, 0xbf, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x15, 0x10, 0xec, 0xb5, 0x86, 0xcf, 0x5d, 0x06, 0x97, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x4a, 0x0f, 0xb8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x32, 0xec, 0xb7, 0x35, 0xbc, 0xad, 0x33, 0xb8, 0x7c, 0xb0, 0x02, 0x82, 0xbd, 0xda, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xd5, 0x8b, 0x6e, 0x50, 0x10, 0xcc, 0x6e, 0xb0, 0xc0, 0x77, 0x7d, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x2f, 0x2e, 0x6b, 0xb8, 0xa4, 0x36, 0x38, 0xec, 0x77, 0xac, 0xc1, 0x72, 0xb8, 0xf5, 0x83, 0x65, 0xa2, 0xec, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0x02, 0xdf, 0xf5, 0x0d, 0x97, 0xd4, 0x1a, 0xcf, 0x0f, 0x16, 0xf8, 0xae, 0x57, 0xab, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xf8, 0x7c, 0x90, 0xd8, 0x66, 0x74, 0x70, 0x22, 0xb3, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x39, 0xdc, 0xfa, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x2b, 0x02, 0xda, 0x37, 0x48, 0x4a, 0x0b, 0xde, 0x20, 0x29, 0x2d, 0xf8, 0x60, 0xed, 0x9e, 0xfa, 0xc1, 0x1a, 0xde, 0xf5, 0x0e, 0xd6, 0x6b, 0xc2, 0x2d, 0xb3, 0x06, 0xab, 0x9b, 0xd7, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x17, 0x56, 0x77, 0x1e, 0x84, 0xe9, 0xd8, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xec, 0xca, 0xd8, 0x0d, 0xc2, 0x69, 0x6c, 0xc3, 0x97, 0x4b, 0x07, 0x27, 0x3d, 0xd1, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x99, 0x60, 0x74, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xf8, 0xa1, 0x66, 0x83, 0x95, 0x1f, 0xee, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x4f, 0xdc, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xb2, 0x12, 0xf7, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0x32, 0x1b, 0xf7, 0xda, 0xe0, 0x9c, 0xbf, 0xb4, 0xc1, 0xaa, 0x06, 0xe1, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x0e, 0x56, 0x61, 0x87, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x96, 0x4e, 0xd0, 0x1e, 0x94, 0x75, 0x9e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x45, 0x9a, 0xb3, 0x07, 0x65, 0x9d, 0x67, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0xb8, 0xa4, 0x36, 0x28, 0x6a, 0xc4, 0xd7, 0x60, 0x99, 0x8d, 0xfb, 0x86, 0xbf, 0x68, 0x36, 0x08, 0xd3, 0xb1, 0x83, 0x45, 0x42, 0xee, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0xea, 0x45, 0x37, 0x7c, 0x90, 0xb3, 0xc1, 0x5a, 0x19, 0xf7, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x0e, 0x0e, 0xfb, 0x1d, 0x07, 0x65, 0x9d, 0xe7, 0x86, 0x5f, 0x5c, 0xd6, 0x70, 0x49, 0x6d, 0x70, 0xd8, 0xef, 0x58, 0x83, 0x65, 0x36, 0xee, 0x1b, 0x2e, 0xa9, 0x35, 0x0e, 0x1d, 0x2c, 0xb3, 0x71, 0xaf, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0x66, 0xe3, 0xbe, 0xe1, 0x92, 0x5a, 0xe3, 0xf9, 0xc1, 0x32, 0x1b, 0xf7, 0x6a, 0x35, 0x58, 0x7e, 0xd6, 0xbe, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb3, 0xb7, 0xf6, 0xf0, 0x43, 0xcd, 0x06, 0x4b, 0x7f, 0x6a, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x67, 0x82, 0xd1, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xd9, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x14, 0xff, 0x6e, 0x50, 0x54, 0x8a, 0xaf, 0xe1, 0x6d, 0x9d, 0x0d, 0x16, 0x65, 0xba, 0xd7, 0x86, 0x4f, 0x6c, 0x36, 0x48, 0x02, 0x52, 0xdd, 0xa0, 0x30, 0x54, 0xdd, 0xf0, 0xc4, 0xdd, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x49, 0x4f, 0x74, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x34, 0x6c, 0xa5, 0x0d, 0xca, 0xe8, 0xf3, 0x83, 0x84, 0x10, 0xdb, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc7, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x12, 0xcd, 0x6e, 0x50, 0x54, 0x8a, 0x6f, 0x70, 0x78, 0xa6, 0x38, 0x58, 0xd3, 0xea, 0xbe, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x5a, 0x0e, 0x4f, 0xef, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x95, 0x1e, 0x70, 0x6b, 0xf8, 0xc5, 0x65, 0xc3, 0xd3, 0x3b, 0x07, 0x65, 0x9d, 0x67, 0x07, 0xcb, 0xe2, 0xed, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x27, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x49, 0x34, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x88, 0xcf, 0x0f, 0x0a, 0xe2, 0xf1, 0x83, 0x35, 0xad, 0xee, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xb0, 0x06, 0x68, 0xe9, 0x60, 0xe9, 0x96, 0xe8, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x25, 0x45, 0xdb, 0x06, 0xcb, 0x22, 0x69, 0xd7, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xd8, 0x3d, 0xdf, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0x36, 0x08, 0x58, 0xd6, 0x83, 0xd2, 0x0c, 0xbd, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x89, 0xa0, 0x6d, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xd6, 0x68, 0xa7, 0x6f, 0xb0, 0x96, 0x3b, 0x7d, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xc8, 0x3a, 0x76, 0x83, 0x72, 0x5d, 0x76, 0x0d, 0x97, 0xd4, 0x1a, 0x87, 0x0e, 0x56, 0x75, 0x89, 0x56, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x2c, 0x96, 0x78, 0x5f, 0x83, 0x55, 0x5d, 0xa2, 0x1b, 0x2e, 0xa9, 0x35, 0x9e, 0x1f, 0xac, 0xea, 0x12, 0xad, 0x66, 0x0d, 0x56, 0x03, 0xb2, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6c, 0x69, 0xed, 0x41, 0x98, 0x8e, 0x6d, 0x70, 0xce, 0x5f, 0xda, 0x60, 0x55, 0x83, 0xf0, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xa5, 0xfc, 0xfa, 0x41, 0x59, 0xe6, 0xb9, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xaa, 0x17, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x7e, 0xa8, 0xd9, 0x60, 0x15, 0xd1, 0x7b, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x2c, 0xa9, 0x4e, 0x5a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x45, 0x5d, 0xef, 0x1b, 0x2e, 0xa9, 0x35, 0x9e, 0x1f, 0x2c, 0xea, 0x7a, 0xaf, 0x0d, 0x4e, 0x0e, 0x72, 0x6b, 0x1c, 0x3a, 0x58, 0xd4, 0xf5, 0xbe, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x64, 0x1d, 0x7b, 0xb0, 0x28, 0x92, 0x76, 0x0d, 0x42, 0xf0, 0x61, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xb2, 0x8e, 0x3d, 0x58, 0x79, 0x4e, 0xbb, 0x06, 0x05, 0x60, 0xec, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x64, 0x1d, 0xbb, 0x86, 0xb7, 0x75, 0x06, 0x1f, 0x0f, 0x16, 0x75, 0xbd, 0xb7, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x60, 0x83, 0x0e, 0x82, 0x46, 0x75, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xb2, 0x8e, 0x3d, 0x58, 0x71, 0x2c, 0xbb, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x60, 0x83, 0x0e, 0x8a, 0xbf, 0xd8, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xe2, 0x6e, 0x83, 0x85, 0x0e, 0x6f, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xb0, 0xae, 0x0f, 0x6e, 0x83, 0xf5, 0x5b, 0x6d, 0x07, 0xab, 0x0e, 0xdf, 0x5b, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0x46, 0x40, 0x1b, 0x7e, 0xa8, 0x39, 0x38, 0x2e, 0x9e, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x45, 0xd6, 0xb1, 0x07, 0xeb, 0xba, 0x66, 0x57, 0xc3, 0xe7, 0x4a, 0x1b, 0x84, 0x11, 0xd0, 0x1a, 0xfe, 0x5c, 0x1a, 0xdc, 0x3d, 0xfc, 0x50, 0xb3, 0x41, 0x08, 0x3e, 0x1c, 0x14, 0x7f, 0xb1, 0x1b, 0x7e, 0x71, 0xd9, 0xf0, 0xc4, 0xdd, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x44, 0xd0, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc9, 0xb4, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xdd, 0x83, 0x45, 0x5d, 0xef, 0x07, 0xab, 0xcf, 0x68, 0xd7, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0x49, 0xe2, 0xfb, 0x1a, 0x9e, 0xc5, 0x3b, 0x58, 0x9f, 0xfa, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x61, 0xbf, 0x1d, 0xac, 0x3a, 0x7c, 0xaf, 0x0e, 0xa7, 0x58, 0x87, 0x53, 0x6c, 0xd6, 0x60, 0xf5, 0xb7, 0xd6, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xea, 0x6f, 0xad, 0x06, 0xe0, 0x47, 0xae, 0xcc, 0x8d, 0xac, 0x4c, 0x0e, 0x84, 0x2e, 0xcc, 0x6d, 0x0d, 0x24, 0x8c, 0x0e, 0xe4, 0x2e, 0x8d, 0x8c, 0x0e, 0x6d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0x2e, 0x4c, 0x3c, 0xfc, 0x50, 0xb3, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0x32, 0xb2, 0xf3, 0xf0, 0x43, 0x4d, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0xa3, 0x0b, 0x1b, 0x0f, 0xce, 0x04, 0xa3, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x69, 0x0b, 0xb5, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x02, 0xde, 0x5d, 0x9a, 0xdb, 0x06, 0x6b, 0xb9, 0xd3, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x0b, 0x21, 0xe0, 0x6b, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xa4, 0x00, 0xbe, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x62, 0x05, 0xf8, 0x5a, 0x81, 0x97, 0x2b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x97, 0x2b, 0x1b, 0xc0, 0x93, 0x2e, 0xcc, 0x6d, 0x0d, 0x44, 0xae, 0xcc, 0x8d, 0xac, 0x4c, 0xae, 0x4c, 0x6e, 0x83, 0xb2, 0x0c, 0x7b, 0x83, 0xb5, 0x0e, 0xf0, 0xb3, 0xcc, 0x1a, 0xac, 0xf5, 0x80, 0xdf, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0xeb, 0x01, 0xdf, 0x00, 0xe8, 0x22, 0x57, 0xe6, 0x46, 0x56, 0x26, 0x07, 0x12, 0x06, 0x42, 0x17, 0xe6, 0xb6, 0x06, 0x42, 0xf7, 0x06, 0xd2, 0x56, 0xc7, 0x46, 0x97, 0x06, 0xc7, 0x56, 0x06, 0xc2, 0x96, 0xe6, 0x56, 0x36, 0x07, 0x82, 0x42, 0x17, 0xc6, 0xc6, 0x96, 0x56, 0x02, 0xf0, 0x25, 0xcd, 0x8d, 0xac, 0xcc, 0x8d, 0xae, 0x8c, 0x0c, 0x44, 0x2c, 0x0f, 0xc4, 0x85, 0x2e, 0x4c, 0x8c, 0x05, 0x64, 0xee, 0xcd, 0x8c, 0xae, 0xe5, 0x4e, 0x2e, 0x0c, 0x0e, 0xae, 0x8c, 0x0c, 0x24, 0x8c, 0x0e, 0xc4, 0xa5, 0x8c, 0xec, 0xac, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x92, 0x02, 0xf8, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x58, 0x01, 0xfe, 0xa0, 0xcc, 0xd2, 0x6d, 0x83, 0xd2, 0xde, 0x72, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x5c, 0xec, 0x3e, 0x58, 0x68, 0x01, 0xbf, 0xc1, 0x01, 0x8b, 0x6e, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0xd0, 0x02, 0x7e, 0x83, 0x82, 0x60, 0x76, 0x83, 0xf5, 0x24, 0xf0, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x30, 0x78, 0x50, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc3, 0x7e, 0x3b, 0x58, 0x32, 0x02, 0xdf, 0x06, 0x41, 0x7a, 0xba, 0xc6, 0xa1, 0x83, 0xf5, 0x24, 0xf0, 0x6b, 0x70, 0x16, 0x13, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x38, 0xe1, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xc1, 0x7a, 0x12, 0xf8, 0xd6, 0xe0, 0x30, 0x29, 0xba, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0x2a, 0xa5, 0xd3, 0x35, 0xbc, 0xad, 0x73, 0xb0, 0x46, 0x3b, 0x7d, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x9e, 0x93, 0x1b, 0x2c, 0x51, 0x3b, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0xa5, 0x2b, 0xf0, 0x1b, 0x2c, 0x3c, 0x81, 0xaf, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x02, 0x4e, 0xf8, 0x83, 0x95, 0xc9, 0xf0, 0x1b, 0xac, 0x74, 0x71, 0x5a, 0xc0, 0x33, 0x7b, 0x93, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0xeb, 0x65, 0xe1, 0x37, 0x58, 0xe9, 0xe2, 0xb4, 0xc1, 0x19, 0x6a, 0x72, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0xac, 0x27, 0x81, 0xdf, 0xa0, 0x84, 0xc7, 0xdc, 0xe0, 0x0c, 0x35, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xc0, 0x09, 0xbf, 0x86, 0xb7, 0x75, 0x0e, 0x96, 0x71, 0xc3, 0xb7, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0xf9, 0x7b, 0x72, 0x0d, 0xd6, 0xc6, 0x35, 0xad, 0x06, 0x6b, 0x52, 0xe0, 0x37, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x02, 0x96, 0xf5, 0x60, 0x65, 0x34, 0xfc, 0x1a, 0xa4, 0x88, 0x4c, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0x9e, 0x04, 0xfe, 0xe0, 0x98, 0x35, 0x59, 0x07, 0xeb, 0xe1, 0xe1, 0x37, 0x28, 0x25, 0xc4, 0xd7, 0x70, 0x49, 0x6d, 0x50, 0xd4, 0x88, 0xaf, 0xc1, 0x19, 0x6a, 0x72, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0xea, 0x45, 0x37, 0xbc, 0xad, 0x73, 0x70, 0x86, 0x9a, 0x6c, 0x83, 0x82, 0x34, 0x76, 0xc0, 0x63, 0xcb, 0x73, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0x41, 0xc0, 0xb2, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x7a, 0x4e, 0x6e, 0xb0, 0x04, 0x24, 0xbe, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x48, 0x11, 0x99, 0x5a, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0xa1, 0x05, 0xfc, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x67, 0xa8, 0xc9, 0x0d, 0x92, 0x3d, 0xa6, 0x36, 0x28, 0x48, 0x63, 0x07, 0x3c, 0xb7, 0x3c, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xc0, 0x24, 0xbe, 0x83, 0x60, 0x65, 0xdd, 0x70, 0x49, 0x6d, 0x70, 0xd8, 0xef, 0xd8, 0x60, 0x8d, 0x43, 0xfc, 0x1a, 0xac, 0x49, 0x81, 0xdf, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0x36, 0x58, 0x78, 0x02, 0xbf, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x64, 0x14, 0x5f, 0x6b, 0x90, 0x22, 0x32, 0xb5, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0x70, 0xec, 0xa1, 0x5c, 0x83, 0xb5, 0x4d, 0xf1, 0x07, 0xeb, 0xbe, 0xe2, 0x6b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0xbb, 0x4b, 0x3b, 0x3b, 0x58, 0x4d, 0x0f, 0xbf, 0x06, 0x07, 0x8f, 0xd1, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x56, 0x29, 0x9d, 0x6e, 0xb0, 0x94, 0x17, 0x7e, 0xc3, 0x07, 0x39, 0x1b, 0xac, 0x11, 0x86, 0xdf, 0x60, 0x09, 0x35, 0xfc, 0x06, 0x2b, 0x5d, 0x9c, 0x36, 0x58, 0xc6, 0x0d, 0xbf, 0xc1, 0x72, 0x6f, 0xf8, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0x50, 0x9a, 0xe2, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xe5, 0x83, 0xf5, 0xb2, 0xf0, 0x1b, 0xac, 0x74, 0x71, 0xda, 0xe0, 0x0c, 0x35, 0xb9, 0xc1, 0x02, 0x74, 0xf8, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x52, 0x44, 0xa6, 0xd6, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x68, 0x01, 0xbf, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x19, 0x6a, 0x72, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x4a, 0x53, 0xdc, 0x0d, 0x92, 0x3d, 0xa6, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x02, 0x4e, 0xf8, 0x0d, 0x8a, 0x4c, 0xdc, 0x36, 0x5c, 0x52, 0x1b, 0x1c, 0xf6, 0x3b, 0x36, 0x58, 0xe3, 0x10, 0xbf, 0x06, 0x6b, 0x52, 0xe0, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xd8, 0xdd, 0x6e, 0xb0, 0x34, 0x20, 0x7e, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3c, 0xb5, 0x1b, 0x04, 0x2c, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x14, 0x58, 0x37, 0x58, 0xba, 0x02, 0x7f, 0x50, 0x50, 0x8a, 0xd7, 0x1a, 0xa4, 0x88, 0x4c, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x07, 0x87, 0x1e, 0xca, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x58, 0xc6, 0x0d, 0xbf, 0x41, 0xb2, 0xc7, 0xd4, 0xc1, 0xb2, 0xb7, 0xf8, 0x96, 0x59, 0x83, 0x05, 0x73, 0xf1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x0b, 0xe6, 0xe2, 0x1b, 0x00, 0x5f, 0xd2, 0xdc, 0xc8, 0xca, 0xdc, 0xe8, 0x40, 0xe8, 0xc2, 0xe0, 0xca, 0x40, 0xc2, 0xdc, 0xc8, 0x40, 0xc6, 0xde, 0xdc, 0xe6, 0x40, 0xee, 0xd2, 0xe8, 0xd0, 0x40, 0xde, 0xea, 0xe8, 0xe0, 0xea, 0xe8, 0x40, 0xe6, 0xe8, 0xc2, 0xc6, 0xd6, 0x95, 0x00, 0xfc, 0x55, 0x7b, 0x4b, 0x73, 0x2b, 0x23, 0x03, 0xb9, 0x4b, 0xa3, 0x43, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0xa1, 0x7b, 0x83, 0x03, 0x61, 0x4b, 0x73, 0x2b, 0x03, 0x49, 0x33, 0x03, 0xb9, 0x43, 0x4b, 0xa3, 0x2b, 0x9b, 0x83, 0x0b, 0x1b, 0x2b, 0x7b, 0x49, 0x73, 0x23, 0x2b, 0x73, 0xa3, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0x03, 0x09, 0x63, 0x63, 0x7b, 0xbb, 0x6b, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x55, 0x4a, 0xa7, 0x07, 0x27, 0x3d, 0xd1, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0xd0, 0x02, 0x7e, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x14, 0x91, 0xa9, 0x0d, 0x96, 0x50, 0xc3, 0x6f, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x77, 0x75, 0xe7, 0x1a, 0x24, 0x19, 0x10, 0x6e, 0xf8, 0x13, 0x68, 0xc3, 0x63, 0x32, 0x1b, 0x2c, 0x3c, 0x81, 0xdf, 0x60, 0x6d, 0x31, 0x7c, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x6d, 0x69, 0xf2, 0x86, 0xb7, 0x75, 0x06, 0x4f, 0x0f, 0x52, 0x44, 0xa6, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0x50, 0xc2, 0x63, 0xae, 0xc1, 0xea, 0x21, 0xf9, 0x36, 0x28, 0x60, 0xf3, 0x37, 0xfc, 0x4a, 0xb6, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x78, 0xb3, 0xe1, 0x6d, 0x9d, 0x0d, 0x56, 0xc7, 0xc8, 0xb7, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6f, 0xce, 0x06, 0x8b, 0x7d, 0xee, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0xb0, 0x3a, 0x4a, 0x7e, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x56, 0x47, 0xc9, 0x6f, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0x60, 0x75, 0x94, 0xfc, 0x1a, 0x2c, 0xe8, 0x92, 0xdf, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0x36, 0x58, 0xb5, 0x25, 0x5f, 0xb5, 0xc1, 0x12, 0x6a, 0xf8, 0x0d, 0x96, 0x54, 0x27, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x83, 0x14, 0x91, 0xa9, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xba, 0x32, 0xb7, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x0b, 0x4f, 0xe0, 0x0f, 0x56, 0x72, 0x8b, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x13, 0x41, 0xdb, 0x06, 0x4b, 0xd4, 0x4e, 0xd7, 0xf0, 0x17, 0xcd, 0x06, 0x27, 0x3d, 0xd1, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xd8, 0xe7, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x7a, 0x8b, 0xdb, 0x60, 0xd5, 0x96, 0xfc, 0x06, 0xeb, 0x8b, 0xe4, 0xab, 0xd5, 0x60, 0xf0, 0xa0, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0x65, 0x2f, 0xf3, 0x06, 0xcb, 0xd7, 0xe3, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x6b, 0x3f, 0xe4, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x42, 0x0b, 0xf8, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x1e, 0xca, 0x6f, 0xb0, 0x78, 0x51, 0xfe, 0x60, 0x65, 0x32, 0xfc, 0x06, 0xc9, 0x1e, 0x53, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0xac, 0xc1, 0x2a, 0xed, 0xf4, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xa0, 0x20, 0x98, 0xdd, 0x60, 0x3d, 0x09, 0xfc, 0x06, 0xcb, 0x3f, 0xe1, 0x37, 0x08, 0xd2, 0xd3, 0x0d, 0xd6, 0x9f, 0xc2, 0xaf, 0xc1, 0x59, 0x4c, 0xf4, 0x60, 0x51, 0x2c, 0xfc, 0x1a, 0x1c, 0x26, 0x45, 0x37, 0x58, 0xe9, 0xe2, 0xb4, 0x80, 0xd7, 0x96, 0x46, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0xd6, 0xcb, 0xc2, 0x6f, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0x65, 0xdc, 0xf0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x13, 0x41, 0xdb, 0x06, 0xcb, 0xbd, 0xe1, 0x37, 0x58, 0x0d, 0x19, 0xdf, 0x06, 0x2b, 0x5d, 0x9c, 0x36, 0x28, 0x4d, 0x71, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf3, 0xc1, 0x7a, 0x59, 0xf8, 0x0d, 0x97, 0xd4, 0x06, 0x6b, 0xb4, 0xd3, 0xd7, 0x60, 0x3d, 0x09, 0xfc, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xd5, 0x20, 0xbc, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0xfa, 0x70, 0xf9, 0x0d, 0xd6, 0xd3, 0xc3, 0x1f, 0x2c, 0xa0, 0x8d, 0xdf, 0x60, 0x01, 0x3a, 0x7c, 0xad, 0xc1, 0xc1, 0x63, 0x74, 0x83, 0x95, 0x2e, 0x4e, 0x1b, 0xac, 0x0f, 0x97, 0xdf, 0x60, 0x1d, 0xb9, 0xfc, 0x06, 0x2b, 0x5d, 0x9c, 0x36, 0x58, 0xc6, 0x0d, 0xbf, 0xc1, 0x72, 0x6f, 0xf8, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0x50, 0x9a, 0xe2, 0x6e, 0xb0, 0x1a, 0x32, 0x7e, 0x83, 0x95, 0x2e, 0x4e, 0x1b, 0x9c, 0xa1, 0x26, 0x37, 0x58, 0x80, 0x0e, 0xbf, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x89, 0xa0, 0x6d, 0x83, 0xf5, 0xf4, 0xf0, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0x27, 0x3d, 0xd1, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xce, 0x50, 0x93, 0x1b, 0x14, 0x99, 0xb8, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x9c, 0x08, 0xda, 0xd6, 0x70, 0x49, 0x6d, 0xb0, 0x46, 0x3b, 0xfd, 0x60, 0x85, 0x43, 0xfc, 0x06, 0x2b, 0x5d, 0x9c, 0x16, 0xf0, 0xec, 0xde, 0xf4, 0x36, 0x58, 0x3b, 0x1d, 0xbf, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0xf9, 0x7b, 0x72, 0x0d, 0x6f, 0xeb, 0x1c, 0x2c, 0x7a, 0x9a, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0x27, 0x82, 0xb6, 0x0d, 0x16, 0x2b, 0xcc, 0x6f, 0xb0, 0x00, 0x6b, 0xbe, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0xad, 0x00, 0x3c, 0xc3, 0x85, 0xc9, 0xcd, 0xa5, 0xb9, 0x9d, 0xb5, 0x88, 0x85, 0xcd, 0x95, 0xcd, 0xb5, 0x84, 0xb9, 0x91, 0xb5, 0x88, 0x85, 0xcd, 0x95, 0xb5, 0x90, 0xa5, 0x9d, 0xa5, 0xd1, 0xcd, 0xcb, 0x00, 0x68, 0x41, 0xa3, 0xa6, 0x03, 0x02, 0x17, 0x26, 0x37, 0x97, 0xe6, 0x76, 0x06, 0x82, 0x22, 0x16, 0x36, 0x57, 0x36, 0x07, 0x12, 0xe6, 0x46, 0x06, 0x22, 0x16, 0x36, 0x57, 0x06, 0x42, 0x96, 0x76, 0x96, 0x46, 0x37, 0x97, 0x5a, 0xe0, 0xc3, 0xce, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x01, 0x2f, 0x0c, 0xae, 0xdc, 0xa0, 0x50, 0xee, 0xdc, 0x60, 0x49, 0x91, 0xed, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x82, 0x13, 0xba, 0xc1, 0xba, 0xce, 0xb6, 0x0d, 0xd6, 0x47, 0xb2, 0x76, 0xb0, 0xf8, 0xcd, 0x76, 0x35, 0x58, 0xc9, 0x19, 0xba, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x12, 0xc8, 0xf9, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x55, 0x43, 0x37, 0x48, 0xc6, 0x6f, 0x5c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0x5d, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x8b, 0x2b, 0xc3, 0x3b, 0x58, 0x03, 0xab, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x18, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xad, 0x41, 0xda, 0xc1, 0x2a, 0x0f, 0xd6, 0xaa, 0xd5, 0x60, 0xe9, 0x26, 0xeb, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xaa, 0x1a, 0xba, 0x41, 0xea, 0x69, 0xec, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x61, 0x32, 0xe9, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0xde, 0x5c, 0x9a, 0xdd, 0xc1, 0x1a, 0x58, 0xd5, 0x5a, 0x0d, 0x12, 0xdc, 0x3e, 0x37, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x82, 0x8d, 0xd0, 0x83, 0x05, 0xef, 0xa7, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0xf8, 0x45, 0x69, 0xc3, 0x97, 0x4b, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x06, 0x29, 0xaf, 0x55, 0x1b, 0x2c, 0xe7, 0x04, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xbe, 0x14, 0x74, 0x83, 0x45, 0xf0, 0x6e, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x54, 0x56, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x73, 0x65, 0x64, 0x07, 0x6b, 0x60, 0x55, 0x9b, 0x35, 0x58, 0x50, 0x0b, 0xbb, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0xb2, 0x1c, 0x97, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x34, 0x75, 0x7e, 0x83, 0x65, 0xb8, 0xf3, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xa5, 0xaa, 0xa1, 0x1b, 0x24, 0xe3, 0x37, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0xb2, 0x25, 0x6e, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x96, 0xef, 0xf6, 0xb4, 0x86, 0x5f, 0x5c, 0x36, 0x38, 0x2f, 0xd0, 0x1c, 0x9c, 0x16, 0x68, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x58, 0x8f, 0x3c, 0xbf, 0xc1, 0xca, 0x96, 0xb8, 0xaa, 0xc3, 0x29, 0xb6, 0x06, 0x8b, 0xe6, 0x5e, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x86, 0x07, 0x25, 0x37, 0x48, 0x28, 0x5a, 0x3c, 0x58, 0x6e, 0x1c, 0xb8, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x52, 0xd5, 0xd0, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x78, 0xb3, 0x2b, 0x93, 0x9b, 0x4b, 0xd3, 0x2b, 0x23, 0xdb, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x07, 0x8b, 0xf7, 0xcb, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0x3c, 0x28, 0xb9, 0xc1, 0x52, 0x5f, 0xde, 0x83, 0x35, 0xb0, 0xaa, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0xc9, 0xa4, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x75, 0x60, 0xa2, 0xad, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xa1, 0xe5, 0x99, 0x1d, 0xac, 0x81, 0x55, 0xad, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x17, 0x8e, 0x2d, 0xcc, 0xad, 0x8c, 0x0e, 0xe4, 0x4d, 0x0e, 0xa4, 0xed, 0xed, 0xcd, 0x6d, 0xc3, 0x83, 0x92, 0x1b, 0x2c, 0x55, 0xf9, 0x3d, 0x58, 0x03, 0xab, 0xba, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0xc1, 0x1a, 0xc6, 0xd0, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x0f, 0x2d, 0xcc, 0xec, 0x60, 0x0d, 0xac, 0xea, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x7c, 0x67, 0x61, 0x6c, 0x61, 0x78, 0x79, 0x1b, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x5d, 0x5a, 0xdc, 0xc1, 0x1a, 0x58, 0xd5, 0x0e, 0xa7, 0xd8, 0x1a, 0x2c, 0x72, 0x6c, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0xec, 0x58, 0xd7, 0xf0, 0xa0, 0xe4, 0x06, 0x69, 0x1d, 0x55, 0x07, 0x2b, 0x16, 0x0f, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x55, 0x43, 0x37, 0x58, 0xc2, 0x1b, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x98, 0x4c, 0xba, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x67, 0x56, 0xd6, 0x76, 0xb0, 0x06, 0x56, 0xb5, 0x3a, 0x9c, 0x62, 0x6b, 0xb0, 0xd8, 0x7b, 0x75, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x55, 0x0d, 0xdd, 0x20, 0xe5, 0xb5, 0x6a, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0x35, 0x0f, 0xf4, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x8a, 0xa1, 0x07, 0x6b, 0x54, 0x55, 0x6b, 0x35, 0x58, 0x36, 0x10, 0xbb, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0xca, 0x39, 0xdb, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x6c, 0x2b, 0x6f, 0x70, 0x6a, 0x6e, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x16, 0xcb, 0x87, 0x87, 0x7e, 0xda, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xd0, 0xd2, 0xcc, 0x0e, 0xd6, 0xc0, 0xaa, 0x6e, 0xb0, 0x62, 0x96, 0xbe, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x42, 0xc5, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xa2, 0x21, 0xd3, 0x36, 0x58, 0x34, 0x51, 0x5f, 0xcd, 0x1a, 0xac, 0x27, 0x86, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0x59, 0x8e, 0xcb, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x9a, 0x3a, 0xbf, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x47, 0x57, 0x46, 0x76, 0xb0, 0x06, 0x56, 0xb5, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x54, 0x35, 0x74, 0x83, 0x54, 0xec, 0xdf, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0x56, 0xb6, 0xc4, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xd1, 0xd0, 0xaf, 0xe1, 0x17, 0x97, 0x0d, 0x8a, 0x4a, 0xf1, 0x83, 0x82, 0x52, 0xfc, 0x60, 0x89, 0x0f, 0x7d, 0xad, 0x06, 0xab, 0xbb, 0x55, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0xd2, 0xd4, 0xf9, 0x0d, 0xd6, 0x73, 0xaf, 0xb6, 0x1a, 0xac, 0xb0, 0x34, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x53, 0xe7, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x55, 0x43, 0xd7, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x14, 0xfa, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0xd6, 0xe3, 0xd4, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x2a, 0x86, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0x6e, 0xb0, 0x1e, 0x79, 0x7e, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x8f, 0x2e, 0x8d, 0xec, 0x60, 0x0d, 0xac, 0x6a, 0x55, 0xab, 0xc1, 0x5a, 0xec, 0xd6, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x34, 0x75, 0x7e, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x54, 0x35, 0x74, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0xb0, 0x9c, 0xe7, 0x6c, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x0f, 0xae, 0xcc, 0xee, 0x60, 0x0d, 0xac, 0xea, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0x62, 0xe8, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0xeb, 0x91, 0xe7, 0xd7, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xe0, 0xd2, 0xec, 0x0e, 0xd6, 0xc0, 0xaa, 0x56, 0x75, 0x38, 0xc5, 0xaa, 0x35, 0x58, 0xd7, 0xbf, 0x7a, 0xb0, 0x06, 0x54, 0x75, 0xd6, 0x60, 0xd9, 0x5c, 0xeb, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x9a, 0x3a, 0xbf, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xaa, 0x1a, 0xba, 0xc1, 0xe1, 0x55, 0x6e, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x2f, 0xae, 0x4c, 0xec, 0x60, 0x0d, 0xac, 0xea, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0x62, 0xe8, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0xeb, 0x91, 0xe7, 0xd7, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xe2, 0xd2, 0xc4, 0x0e, 0xd6, 0xc0, 0xaa, 0x56, 0x35, 0x6b, 0xb0, 0x72, 0xbe, 0x75, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x4d, 0x9d, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x55, 0x0d, 0x5d, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0xac, 0xe6, 0x3d, 0x5b, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0x5d, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x83, 0x2b, 0xbb, 0x3b, 0x58, 0x03, 0xab, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x18, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0xc1, 0x7a, 0xe4, 0xf9, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb8, 0xb4, 0xbb, 0x83, 0x35, 0xb0, 0xaa, 0x55, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x02, 0xef, 0x56, 0x6e, 0x50, 0x96, 0x61, 0xaf, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0x2e, 0xed, 0x3c, 0xfc, 0x50, 0x33, 0xcb, 0x2c, 0x38, 0xbe, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x1a, 0xb6, 0xd2, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x69, 0x89, 0x7d, 0x07, 0xe9, 0xae, 0x55, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0xac, 0x88, 0xb1, 0x3f, 0x58, 0xae, 0x6f, 0x7a, 0x50, 0xae, 0xcb, 0xae, 0xe0, 0xf7, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x2b, 0x62, 0xec, 0x0f, 0xd6, 0x23, 0xbc, 0x6d, 0xb0, 0x6e, 0x1d, 0x6e, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0x15, 0x31, 0xf6, 0x07, 0x4b, 0x2b, 0xde, 0x36, 0x58, 0xb3, 0xf1, 0xb6, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x1a, 0xb6, 0xd2, 0x06, 0x2b, 0x62, 0xec, 0xd7, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x4a, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0x60, 0x45, 0x8c, 0xfd, 0x06, 0xc9, 0xbe, 0x9e, 0x1d, 0x24, 0x53, 0x3a, 0xad, 0xe0, 0xe4, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0xc1, 0x8a, 0x18, 0xfb, 0x83, 0x75, 0x3f, 0x72, 0x2b, 0xb8, 0x7d, 0xb0, 0x6a, 0xc5, 0xfe, 0x70, 0x8a, 0xb5, 0xe0, 0xe3, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x2b, 0x62, 0xec, 0x0f, 0x0a, 0xe2, 0xf1, 0x35, 0x3c, 0x28, 0xb9, 0xc1, 0xa1, 0xb5, 0xeb, 0x60, 0xc5, 0xe2, 0x61, 0x87, 0x53, 0xac, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x16, 0xf8, 0xb6, 0x7a, 0x83, 0xb2, 0x0c, 0x7b, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xca, 0xcb, 0xcb, 0xc3, 0x0f, 0x35, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x13, 0x7b, 0xa3, 0x0f, 0x3f, 0xd4, 0x34, 0xcb, 0x2c, 0xe0, 0xe9, 0xd5, 0x9d, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x10, 0x03, 0xb1, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0x37, 0x38, 0x35, 0xb7, 0x6d, 0xb0, 0x26, 0x4b, 0xb3, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x82, 0x4e, 0xfb, 0x5a, 0x01, 0x4f, 0x2f, 0xec, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0x06, 0xa7, 0xe6, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0xd6, 0x64, 0x69, 0x1e, 0x2c, 0x80, 0xb5, 0x6f, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x1f, 0x2c, 0x81, 0xb5, 0x6f, 0x05, 0x3c, 0xbd, 0xb4, 0x73, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x99, 0xb8, 0x1b, 0x9c, 0x9a, 0xdb, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0x36, 0x58, 0x93, 0xa5, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x41, 0x32, 0x7e, 0xe3, 0xc1, 0x02, 0x58, 0xfb, 0x3a, 0x58, 0x8e, 0x6c, 0x7f, 0x38, 0xc5, 0xea, 0x70, 0x8a, 0xcd, 0x02, 0x1f, 0x26, 0x6e, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0x78, 0x73, 0x65, 0xe2, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x82, 0x13, 0xba, 0xe1, 0x31, 0x99, 0x0d, 0x96, 0xbe, 0xcf, 0xb7, 0x1a, 0xac, 0x10, 0x61, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x55, 0x43, 0x37, 0x38, 0xbc, 0xca, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xd1, 0xd0, 0xaf, 0xe1, 0x17, 0x97, 0x0d, 0x4e, 0xcd, 0x6d, 0x07, 0x67, 0xe6, 0xb6, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xcd, 0xa5, 0xe1, 0xd5, 0x6a, 0xb0, 0xdc, 0xa2, 0x7e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x55, 0x0d, 0xdd, 0x20, 0x15, 0xfb, 0x77, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x74, 0x69, 0x70, 0x1b, 0x2c, 0xa7, 0xa5, 0x3f, 0x58, 0x62, 0x52, 0xda, 0x0a, 0x78, 0x73, 0x69, 0xf7, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0xc1, 0x12, 0x56, 0xd5, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xcd, 0xbd, 0xdd, 0x75, 0x38, 0xc5, 0xd6, 0x60, 0x69, 0x75, 0xfd, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xaa, 0x1a, 0xba, 0x41, 0xc0, 0xb2, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x56, 0xc9, 0xdb, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x45, 0x43, 0xbf, 0x41, 0xe2, 0x4b, 0xea, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xe6, 0xd2, 0xc4, 0xaa, 0x59, 0xc0, 0x43, 0x2b, 0x33, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x62, 0xc7, 0xba, 0x86, 0x5f, 0x94, 0x36, 0x7c, 0xb9, 0xb4, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0x69, 0x9d, 0xc3, 0x83, 0x37, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x2c, 0x05, 0x76, 0x78, 0xe8, 0x67, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xa5, 0xaa, 0xa1, 0x1b, 0xa4, 0x62, 0xff, 0x1e, 0x2c, 0xdc, 0xb8, 0x9f, 0x05, 0xbc, 0xb9, 0x32, 0x7c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0xdd, 0x60, 0x41, 0x04, 0xfd, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xe6, 0xde, 0xf0, 0x3a, 0x9c, 0x62, 0x6b, 0xb0, 0xe4, 0x94, 0x7e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x55, 0x0d, 0xdd, 0x20, 0x15, 0xfb, 0x77, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x74, 0x65, 0x70, 0x07, 0x2b, 0x48, 0xee, 0x5b, 0x0d, 0xd6, 0x1d, 0xd2, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xa5, 0xaa, 0xa1, 0x1b, 0x24, 0xe3, 0x37, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0xa2, 0xa2, 0x7e, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x8a, 0x86, 0x7e, 0x83, 0xd5, 0x51, 0xf5, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x2c, 0x16, 0x0a, 0xdd, 0x60, 0x45, 0x45, 0x7d, 0xd5, 0x0a, 0x78, 0x62, 0x69, 0xf8, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xaa, 0x1a, 0xba, 0xc1, 0xe1, 0x55, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x8a, 0x86, 0x7e, 0x0d, 0xbf, 0xb8, 0x6c, 0x10, 0xb0, 0xac, 0x07, 0xc1, 0xca, 0x7a, 0xb0, 0xd0, 0xe1, 0xbe, 0xc3, 0x29, 0xd6, 0x1a, 0xac, 0xeb, 0x7c, 0xdd, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x59, 0x25, 0xe8, 0x06, 0x8b, 0xe1, 0x42, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0xb0, 0x50, 0x31, 0x74, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0xdd, 0x60, 0xed, 0x64, 0xe8, 0x06, 0x0b, 0x09, 0x43, 0x37, 0x58, 0x2c, 0x14, 0xba, 0xc1, 0x42, 0x06, 0xd1, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x0d, 0x16, 0xfb, 0xdc, 0x1d, 0x2c, 0x97, 0x5f, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xab, 0x04, 0xdd, 0x60, 0x95, 0x13, 0xdd, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0x26, 0xe9, 0x1a, 0x7e, 0x71, 0x39, 0x58, 0xb5, 0x90, 0xbe, 0xc1, 0x0a, 0xde, 0xd6, 0x5a, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x20, 0x8d, 0xf6, 0x68, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0xf4, 0x60, 0xd5, 0x42, 0x7a, 0xad, 0x06, 0xab, 0x21, 0xef, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x3b, 0xd6, 0x35, 0xfc, 0xa2, 0xb4, 0xe1, 0xcb, 0xa5, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x4f, 0xeb, 0x6c, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0x60, 0x65, 0x7f, 0xda, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x01, 0x96, 0x4b, 0x07, 0x6b, 0x07, 0xe2, 0x0e, 0x0f, 0xfd, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x8f, 0x2e, 0x8d, 0xad, 0xc3, 0x29, 0xb6, 0x06, 0x4b, 0x0c, 0xeb, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x52, 0xd5, 0xd0, 0x0d, 0x52, 0x5e, 0xab, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xab, 0x68, 0xe8, 0x37, 0x58, 0x1d, 0x55, 0xbf, 0xc1, 0x12, 0x56, 0xd5, 0x5a, 0x01, 0x6f, 0xee, 0xcd, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x86, 0x2f, 0x97, 0x0e, 0x56, 0xd7, 0x9b, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0x97, 0x82, 0x6e, 0xb0, 0xae, 0x0b, 0xee, 0x60, 0xa9, 0x74, 0x6b, 0x87, 0x53, 0x6c, 0x0d, 0x96, 0x3f, 0xdd, 0x1f, 0x2c, 0x16, 0x3f, 0x5d, 0x0d, 0x96, 0xf9, 0xdd, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x1b, 0x2c, 0x3e, 0xc2, 0x3f, 0x58, 0xd3, 0x6f, 0xba, 0x1a, 0x2c, 0xc2, 0xb0, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x55, 0x43, 0x37, 0x48, 0x81, 0x4e, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0xa2, 0xa1, 0x5f, 0xc3, 0x2f, 0x2e, 0x1b, 0x1c, 0x16, 0xd8, 0x0e, 0x8e, 0x0a, 0x6c, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xd5, 0x28, 0xf7, 0xd5, 0x6a, 0xb0, 0x0c, 0xbd, 0x7e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x55, 0x0d, 0xdd, 0x20, 0x60, 0x59, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xab, 0x68, 0xe8, 0x37, 0x58, 0x8d, 0x70, 0x7f, 0xb0, 0xbe, 0xe9, 0xbe, 0xc3, 0x29, 0xb6, 0x06, 0x4b, 0x02, 0x7e, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x52, 0xd5, 0xd0, 0x0d, 0x92, 0xf1, 0x1b, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x0b, 0xa6, 0xee, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0xa2, 0xa1, 0x5f, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0x93, 0x39, 0x28, 0x28, 0xc5, 0x0f, 0x56, 0xaa, 0xde, 0xd7, 0xe1, 0x14, 0x6b, 0x0d, 0x56, 0x64, 0xc0, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x83, 0xc5, 0x70, 0xa1, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0x62, 0xe8, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x06, 0x6b, 0x27, 0x43, 0x37, 0x58, 0x48, 0x18, 0xba, 0xc1, 0x62, 0xa1, 0xd0, 0x0d, 0xd6, 0xbe, 0x90, 0x1e, 0x2c, 0x7f, 0x62, 0x6d, 0x35, 0x58, 0x85, 0xf8, 0xba, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x0d, 0x16, 0xc3, 0x85, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x8a, 0xa1, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x1b, 0xac, 0x9d, 0x0c, 0xdd, 0x60, 0x21, 0x61, 0xe8, 0x06, 0x8b, 0x85, 0x42, 0x37, 0x58, 0xfb, 0x42, 0xba, 0x41, 0x1a, 0xed, 0xd1, 0xc1, 0x32, 0x06, 0xd1, 0x0e, 0xa7, 0xd8, 0x1a, 0xac, 0x6f, 0x55, 0x3d, 0x58, 0x21, 0x41, 0x3a, 0x6b, 0xb0, 0x92, 0xa7, 0x7e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x55, 0x0d, 0xdd, 0x20, 0xe5, 0xb5, 0x6a, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0x05, 0x11, 0xf4, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x55, 0x34, 0xf4, 0x1b, 0x1c, 0xd8, 0x49, 0x0e, 0x56, 0xfb, 0xe0, 0xd7, 0xac, 0xc1, 0xba, 0x99, 0xfb, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xac, 0x12, 0x74, 0x83, 0xc5, 0x47, 0xf8, 0x07, 0x0b, 0x66, 0x4b, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x86, 0x2f, 0x97, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x0d, 0x4f, 0xeb, 0x1c, 0xac, 0x3b, 0xb3, 0x3f, 0x58, 0x1d, 0x5a, 0xba, 0xc1, 0x02, 0xe3, 0xd2, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x0d, 0xd6, 0x23, 0xbc, 0x6d, 0xb0, 0x30, 0x5b, 0xb6, 0x56, 0x83, 0xe5, 0xb5, 0xf5, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xa9, 0x6a, 0xe8, 0x06, 0xa9, 0xa7, 0xb1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x55, 0x34, 0xf4, 0x1b, 0x2c, 0x93, 0xc3, 0xdf, 0x60, 0x79, 0xf7, 0x7c, 0xad, 0x06, 0xab, 0x43, 0xee, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x3b, 0xd6, 0x35, 0xfc, 0xa2, 0xb4, 0xe1, 0xcb, 0xa5, 0x83, 0x75, 0x1f, 0xf8, 0x07, 0x6b, 0x55, 0xf0, 0x0f, 0xa7, 0x58, 0xad, 0xc1, 0xc2, 0x02, 0xfb, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x54, 0x35, 0x74, 0x83, 0x14, 0xe8, 0xd4, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xf8, 0x68, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x8a, 0x86, 0x7e, 0x83, 0xc5, 0x60, 0x78, 0x07, 0x2b, 0xf0, 0xf0, 0x6b, 0xd6, 0x60, 0x29, 0x0b, 0xfe, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x90, 0x1f, 0xba, 0x41, 0x2a, 0xf6, 0xef, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x15, 0x0d, 0xfd, 0x06, 0xab, 0xa3, 0xea, 0x37, 0x58, 0x48, 0x18, 0x5a, 0xab, 0xc1, 0x4a, 0x6b, 0xfa, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xc4, 0x8e, 0x75, 0x0d, 0xbf, 0x28, 0x6d, 0xf8, 0x72, 0x69, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x18, 0x1a, 0xb5, 0x83, 0x15, 0x8b, 0x87, 0x87, 0x87, 0x7e, 0x36, 0x58, 0x85, 0x20, 0xda, 0x6a, 0x30, 0x3e, 0x5a, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x0d, 0x16, 0x44, 0xd0, 0x1f, 0x2c, 0x8c, 0xb9, 0x5f, 0x0d, 0x16, 0xf0, 0xce, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xa5, 0xaa, 0xa1, 0x1b, 0x1c, 0x5e, 0xe5, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x8b, 0xe7, 0xee, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0xa2, 0xa1, 0xdf, 0x20, 0xf1, 0x25, 0xf5, 0x60, 0xfd, 0x6e, 0x68, 0xad, 0x06, 0xcb, 0x56, 0x79, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x52, 0xd5, 0xd0, 0x0d, 0x92, 0xf1, 0x1b, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0x37, 0x58, 0xb4, 0x89, 0xbf, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x45, 0x43, 0xbf, 0x41, 0xe2, 0x4b, 0xea, 0xc1, 0x4a, 0xd5, 0xfb, 0x9a, 0x05, 0xbc, 0xb9, 0x32, 0x7b, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0xdd, 0x60, 0x41, 0x04, 0xfd, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x69, 0x10, 0x7e, 0xad, 0x06, 0x6b, 0xbf, 0xe7, 0x37, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x0d, 0x96, 0xb0, 0xaa, 0x1e, 0xac, 0xaf, 0xce, 0x3f, 0x9c, 0x62, 0x0b, 0x78, 0x76, 0x6f, 0xf9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0xc1, 0x5a, 0x1c, 0xcc, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x0d, 0xd6, 0xe2, 0x60, 0x6e, 0xb0, 0xc8, 0x19, 0x74, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x8a, 0xf6, 0xbe, 0x3a, 0x9c, 0x62, 0xb5, 0x06, 0x4b, 0x46, 0xeb, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x52, 0xd5, 0xd0, 0x0d, 0x52, 0x4f, 0x63, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x8b, 0x9a, 0xf3, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0xa2, 0xa1, 0xdf, 0x60, 0x31, 0x18, 0xde, 0xc1, 0xa2, 0x9e, 0xfc, 0x3a, 0x9c, 0x62, 0x6b, 0xb0, 0xd6, 0x96, 0x7e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xb1, 0x63, 0x5d, 0xc3, 0x2f, 0x4a, 0x1b, 0xbe, 0x5c, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0x78, 0x70, 0xe9, 0x60, 0xed, 0x40, 0xdc, 0xe1, 0xa1, 0x9f, 0x83, 0xb5, 0x2a, 0xf8, 0xb3, 0x06, 0xeb, 0x20, 0xee, 0x37, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x0d, 0x96, 0xb0, 0xaa, 0x1e, 0xac, 0xe3, 0xbb, 0x5f, 0x0d, 0x56, 0x4b, 0xd0, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x1b, 0x2c, 0xcc, 0x04, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x2f, 0x05, 0xdd, 0x60, 0x6d, 0xe6, 0xe1, 0xc1, 0x7a, 0x23, 0xb9, 0x0e, 0xa7, 0x58, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x36, 0x9c, 0x08, 0x1b, 0x2a, 0xe1, 0x06, 0x8b, 0xd9, 0xa0, 0x96, 0x59, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x21, 0x41, 0xbe, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0xde, 0xd6, 0x39, 0xa4, 0x96, 0x36, 0xbc, 0xad, 0x73, 0xb0, 0x2e, 0xc6, 0xfb, 0xe0, 0x5c, 0x6f, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x48, 0x90, 0x6f, 0xf8, 0xdc, 0x65, 0xf0, 0xf8, 0x30, 0x2e, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xbf, 0x39, 0x87, 0xae, 0x30, 0x87, 0xd4, 0xc1, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0x4b, 0xaf, 0xf4, 0x37, 0xcc, 0xd0, 0x1a, 0x8a, 0xe9, 0x1a, 0x4a, 0xe9, 0x86, 0x3b, 0x6d, 0x06, 0x68, 0xd9, 0xc2, 0xf2, 0xca, 0xe4, 0x5a, 0x68, 0x87, 0x9a, 0xb9, 0xe1, 0x44, 0xd8, 0x60, 0x45, 0xa0, 0xfe, 0x1a, 0xce, 0x91, 0x15, 0x04, 0x1b, 0xac, 0xe6, 0x38, 0x5a, 0x5c, 0xd8, 0x0d, 0x46, 0x2c, 0xd6, 0x82, 0x60, 0x41, 0xb0, 0xc1, 0x62, 0xda, 0x99, 0x41, 0x32, 0xf0, 0xd5, 0xdd, 0x21, 0x39, 0x37, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xb8, 0xa1, 0x8e, 0x1f, 0x4e, 0xb1, 0xe3, 0xd0, 0xb0, 0x1b, 0x14, 0x21, 0x83, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x8b, 0x69, 0x67, 0x06, 0xc9, 0x40, 0xfa, 0xee, 0x90, 0x9c, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x83, 0x25, 0xdb, 0x4e, 0x6b, 0xb0, 0x1c, 0xe8, 0x69, 0x0d, 0xb9, 0xef, 0x0d, 0xd2, 0x42, 0xb3, 0x0f, 0x8d, 0x04, 0xc7, 0xc3, 0x97, 0x93, 0x07, 0x43, 0x11, 0xe9, 0x38, 0x34, 0x08, 0x36, 0x58, 0x80, 0xa9, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xb8, 0x61, 0xe2, 0x36, 0x4c, 0xe7, 0x61, 0x3a, 0x8f, 0x43, 0x87, 0x71, 0x39, 0x1e, 0xaf, 0x20, 0x58, 0xdc, 0x60, 0x4d, 0xc7, 0xd1, 0x41, 0x78, 0xaa, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0xc5, 0xb4, 0x33, 0x83, 0x64, 0x40, 0xd8, 0xfd, 0x1d, 0x24, 0x26, 0x1a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0x42, 0x13, 0xa3, 0x43, 0xbe, 0xf6, 0x38, 0xb4, 0x41, 0x48, 0x81, 0x0f, 0xd9, 0x60, 0x5c, 0x98, 0x1d, 0x84, 0x00, 0xf8, 0xf1, 0x78, 0x41, 0xb0, 0xf0, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0x78, 0x1d, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x01, 0xeb, 0x78, 0x1c, 0x3a, 0xbe, 0x2d, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x20, 0xfd, 0x75, 0x58, 0xa1, 0x3d, 0x34, 0x6a, 0x19, 0x76, 0x83, 0x05, 0xb0, 0x3e, 0x1b, 0x84, 0x00, 0xf8, 0x20, 0xdb, 0x60, 0x29, 0x47, 0xd0, 0x20, 0x58, 0x90, 0x0c, 0x34, 0xff, 0x39, 0xac, 0xd0, 0x1e, 0x8c, 0x28, 0xdc, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x83, 0x60, 0x83, 0x85, 0x26, 0x46, 0x8b, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x61, 0x37, 0x74, 0x1c, 0x59, 0xd8, 0x85, 0xdd, 0x20, 0x18, 0xf6, 0x17, 0x76, 0x83, 0x72, 0xef, 0x70, 0x61, 0x17, 0x6e, 0x83, 0xb5, 0x94, 0x52, 0x87, 0x86, 0x3a, 0x0b, 0xbb, 0xd0, 0x09, 0x9d, 0x0b, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0x70, 0x62, 0xb9, 0x5f, 0xb8, 0x0d, 0x47, 0xfb, 0xc1, 0x99, 0x04, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xc1, 0xf2, 0xfc, 0xae, 0xc3, 0xd1, 0xbe, 0xc1, 0xf8, 0xe9, 0x1a, 0x04, 0x0b, 0x92, 0x81, 0xa3, 0xef, 0x20, 0xc8, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x0d, 0x06, 0xc9, 0xcb, 0xc1, 0x30, 0xf4, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x1e, 0x4a, 0x6b, 0x71, 0xd8, 0x85, 0xdd, 0x20, 0x18, 0xf6, 0x17, 0x6e, 0x83, 0x35, 0xdd, 0x52, 0x07, 0xe3, 0xa7, 0xeb, 0x70, 0xb4, 0xaf, 0xc1, 0x72, 0xa5, 0xa9, 0x41, 0xb0, 0x06, 0x6b, 0xba, 0xa5, 0x96, 0x20, 0x9c, 0x83, 0x68, 0x41, 0x76, 0xb0, 0x14, 0x39, 0xeb, 0x60, 0x21, 0xcc, 0xfe, 0xb0, 0x0b, 0xb7, 0xc1, 0x0a, 0x48, 0xa9, 0x43, 0x0f, 0xa1, 0x85, 0x5d, 0xd8, 0x85, 0xdd, 0xa0, 0x40, 0xdf, 0x39, 0xac, 0x6f, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0x82, 0x05, 0xc9, 0xe0, 0xdc, 0x20, 0x5a, 0xd8, 0x09, 0xc6, 0xf9, 0x20, 0xc8, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x83, 0x94, 0xc1, 0x80, 0xe3, 0xd0, 0x21, 0x9d, 0xbb, 0xc1, 0x12, 0xb3, 0x9d, 0xc3, 0x29, 0x36, 0xc8, 0xd6, 0xd0, 0x7e, 0x7d, 0xb8, 0x0d, 0xd6, 0x52, 0x4a, 0x1d, 0x7a, 0x08, 0x0d, 0xbf, 0x20, 0x5a, 0x70, 0x79, 0x10, 0x2c, 0x48, 0x06, 0xb6, 0xfa, 0x06, 0xd1, 0x06, 0x69, 0xea, 0x03, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0xa0, 0x9c, 0x1f, 0x87, 0x8e, 0xc7, 0xc3, 0x2e, 0xec, 0x06, 0x4b, 0xf7, 0xf6, 0x37, 0xc4, 0x70, 0xd8, 0x05, 0xc1, 0x82, 0x60, 0x41, 0x32, 0xb0, 0xd6, 0x77, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x03, 0xd3, 0x37, 0x88, 0x16, 0xf6, 0xe0, 0x44, 0x11, 0x7d, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x83, 0xc1, 0x3b, 0x79, 0xb0, 0xc4, 0x6c, 0xe7, 0x38, 0xb4, 0x21, 0x86, 0xc3, 0x2e, 0xec, 0xc2, 0x6d, 0x88, 0xe1, 0x20, 0x58, 0x90, 0x0c, 0x3c, 0x75, 0x37, 0x88, 0x16, 0x54, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x0b, 0x6a, 0xf7, 0x07, 0xc9, 0xe0, 0xd4, 0xc1, 0xaa, 0xdd, 0xfd, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x91, 0xfa, 0x60, 0x10, 0xb2, 0x1c, 0x87, 0x06, 0xd1, 0x86, 0x5c, 0xdd, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x64, 0xae, 0x7f, 0x30, 0x08, 0x59, 0x8e, 0x43, 0x87, 0xf5, 0xcd, 0x43, 0x3a, 0x77, 0x83, 0x41, 0xa2, 0x71, 0x38, 0xc5, 0x06, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x90, 0xfa, 0x3b, 0x08, 0x72, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0x00, 0x0f, 0xb3, 0x34, 0xb9, 0xb2, 0x16, 0xba, 0x3c, 0xb8, 0xf2, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x6e, 0xc8, 0x7d, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x83, 0x97, 0x83, 0xe3, 0x83, 0xc3, 0x83, 0x97, 0x83, 0x8f, 0x83, 0xd3, 0x83, 0x97, 0x83, 0x93, 0x83, 0xb6, 0xc1, 0xcd, 0xc1, 0xdf, 0xc1, 0xe5, 0xc1, 0xd7, 0x41, 0xdb, 0xe0, 0xf4, 0xe0, 0xef, 0xa0, 0x6d, 0x70, 0x71, 0xf0, 0x72, 0xd0, 0x36, 0xf8, 0x38, 0xf8, 0x7b, 0x70, 0xd2, 0x29, 0x39, 0xbe, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x90, 0xfa, 0x3b, 0x58, 0x2a, 0xbe, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x18, 0xe0, 0x61, 0xf6, 0x26, 0xb7, 0xd6, 0x42, 0x97, 0x07, 0x57, 0x1e, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0x31, 0xc0, 0xc3, 0x2c, 0x4d, 0xae, 0xac, 0x65, 0xec, 0x4d, 0xae, 0x3c, 0x9c, 0x62, 0xc7, 0xe3, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0xbc, 0xc2, 0x2f, 0x08, 0x16, 0x17, 0x76, 0xe1, 0x36, 0x58, 0xdf, 0x60, 0x74, 0x48, 0xd5, 0x6c, 0xb0, 0xbe, 0xc1, 0x68, 0xd8, 0x85, 0xdb, 0x60, 0xa1, 0x89, 0xd1, 0x21, 0x55, 0xb3, 0xc1, 0x42, 0x13, 0xa3, 0x61, 0x17, 0x76, 0x83, 0xe2, 0xb2, 0x69, 0xe1, 0x36, 0x58, 0x78, 0x61, 0x74, 0xc8, 0xda, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0xcb, 0xb8, 0x04, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x85, 0xdf, 0x78, 0x3e, 0x06, 0x34, 0x61, 0x74, 0x6f, 0x6d, 0x60, 0x43, 0x0b, 0xa0, 0x0d, 0x52, 0xc3, 0x4e, 0x16, 0x7e, 0xe3, 0xf9, 0xb0, 0x1b, 0x04, 0x49, 0xf3, 0x06, 0xc9, 0x43, 0xcc, 0x87, 0x66, 0x49, 0x07, 0x03, 0x3f, 0xe4, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0x50, 0x5c, 0x36, 0x2d, 0xdc, 0x06, 0x0b, 0x67, 0x8c, 0x0e, 0x59, 0xbb, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0x60, 0x19, 0x97, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0xf0, 0x1b, 0xcf, 0xc7, 0x80, 0x66, 0xac, 0x8c, 0x8d, 0x0d, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x39, 0x94, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0xb4, 0x00, 0x3a, 0x0e, 0x6d, 0x90, 0x1a, 0x76, 0xb2, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe5, 0x50, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xd0, 0xf0, 0xeb, 0x38, 0x74, 0x30, 0xf0, 0x43, 0x8e, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0xc5, 0x65, 0xd3, 0xc2, 0x6d, 0xb0, 0x90, 0x5e, 0xea, 0x90, 0xb5, 0x3b, 0x1c, 0xed, 0x0b, 0x82, 0x0d, 0x96, 0x71, 0x09, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x0b, 0xbf, 0xf1, 0x7c, 0x0c, 0x68, 0xcc, 0xc2, 0xc6, 0xca, 0xc0, 0xc2, 0x6f, 0x3c, 0x1f, 0x76, 0x83, 0xb4, 0x44, 0xeb, 0x0d, 0x3d, 0x84, 0x0e, 0x16, 0x66, 0xf2, 0x1f, 0xac, 0x0d, 0xe5, 0x3f, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x14, 0x97, 0x4d, 0x0b, 0xb7, 0xc1, 0x52, 0x86, 0xa9, 0x43, 0xd6, 0xee, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x58, 0xc6, 0x25, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x2d, 0xfc, 0xc6, 0xf3, 0x31, 0xa0, 0x31, 0x7b, 0x93, 0x5b, 0x03, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x50, 0x0e, 0x25, 0x1d, 0xf6, 0x78, 0x0f, 0x06, 0x7e, 0xc8, 0x71, 0x68, 0xd8, 0x85, 0xdd, 0xa0, 0xb8, 0x6c, 0x5a, 0xb8, 0x0d, 0x96, 0xa6, 0x4c, 0x1d, 0xb2, 0x76, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0xc1, 0x32, 0x2e, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0xe1, 0x37, 0x9e, 0x8f, 0x01, 0x0d, 0x5a, 0x9a, 0x1b, 0x1d, 0x38, 0x58, 0x7b, 0xc9, 0x7f, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x28, 0x2e, 0x9b, 0x16, 0x6e, 0x83, 0xe5, 0x4a, 0x53, 0x87, 0xac, 0xdd, 0xe1, 0x68, 0x5f, 0x10, 0x6c, 0xb0, 0x8c, 0x4b, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x5a, 0xf8, 0x8d, 0xe7, 0x63, 0x40, 0x83, 0xf6, 0xc6, 0x46, 0x06, 0x0e, 0xd6, 0x5e, 0xf2, 0x1f, 0x87, 0x06, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0xbb, 0x41, 0x71, 0xd9, 0xb4, 0x70, 0x1b, 0xac, 0xe9, 0x96, 0x3a, 0x64, 0xed, 0x0e, 0x47, 0xfb, 0x20, 0xd8, 0x60, 0x19, 0x97, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x34, 0xfc, 0xc6, 0xf3, 0xc5, 0x80, 0x66, 0xec, 0x4d, 0xae, 0x0c, 0x6c, 0xb0, 0x30, 0x93, 0x7f, 0x83, 0x84, 0xb2, 0x93, 0x85, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0x58, 0x24, 0xfe, 0xb3, 0x41, 0xf2, 0x10, 0xf3, 0x04, 0x93, 0xbd, 0x41, 0x42, 0xd9, 0xc9, 0x12, 0x8c, 0xf6, 0x06, 0x09, 0x65, 0x27, 0x4b, 0x30, 0xdb, 0x1b, 0x24, 0x94, 0x9d, 0x2c, 0x08, 0x36, 0x28, 0x87, 0x92, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xc9, 0x1a, 0x08, 0xc7, 0xa1, 0x0d, 0x12, 0xca, 0x4e, 0x16, 0x04, 0x1b, 0x94, 0x43, 0x49, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x84, 0x1c, 0x84, 0xe3, 0xd0, 0x21, 0x86, 0xc7, 0xa1, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x10, 0xba, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x50, 0x6f, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0xe8, 0xdc, 0x77, 0x30, 0xfc, 0x63, 0x0f, 0x8d, 0x5a, 0x8e, 0x43, 0xc7, 0xe3, 0x83, 0x92, 0xa1, 0x69, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x73, 0x69, 0x6e, 0xeb, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x41, 0xb0, 0xc1, 0x42, 0x13, 0xa3, 0xc5, 0x61, 0x17, 0x04, 0x1b, 0x24, 0xc4, 0x00, 0x1c, 0x24, 0x07, 0x5e, 0x6c, 0x88, 0xe1, 0xb0, 0x0b, 0x82, 0x05, 0xc9, 0xe0, 0xdc, 0x41, 0x7a, 0x51, 0xc2, 0xc1, 0x49, 0x90, 0xf8, 0x90, 0xce, 0x3d, 0x1e, 0x2f, 0x08, 0x16, 0x67, 0x0e, 0xd3, 0xb9, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0x78, 0x1d, 0x92, 0x4b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0xb4, 0xdc, 0xe8, 0xd0, 0x43, 0xe8, 0x38, 0x34, 0xec, 0x06, 0x8b, 0x3c, 0x82, 0x36, 0x08, 0x4c, 0xec, 0x41, 0xb6, 0x86, 0xf6, 0xeb, 0x07, 0x0b, 0x60, 0x7d, 0x86, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0xde, 0xfb, 0x3b, 0xac, 0xd0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x34, 0x12, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xa1, 0x89, 0xd1, 0xe2, 0xb0, 0x1b, 0x92, 0x1d, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0x57, 0x77, 0x83, 0x68, 0x83, 0x11, 0x41, 0x75, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x31, 0xb0, 0x70, 0x1c, 0x1a, 0x04, 0x0b, 0x92, 0x81, 0xb3, 0xee, 0x60, 0x45, 0x73, 0xff, 0xc1, 0xca, 0xe8, 0xfe, 0xe3, 0xf1, 0x71, 0xe8, 0x78, 0x7e, 0x3c, 0x5e, 0x90, 0x6d, 0x88, 0xcb, 0x20, 0x58, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x15, 0xca, 0x52, 0x87, 0xa3, 0x7d, 0x0d, 0x16, 0xce, 0x18, 0x2d, 0x48, 0x06, 0xc6, 0xea, 0x20, 0x24, 0xbe, 0x07, 0xc9, 0xc0, 0x58, 0x1d, 0x2c, 0xa8, 0xdb, 0x19, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0x1d, 0xb7, 0xd4, 0xe1, 0x68, 0x5f, 0x83, 0x35, 0xdd, 0x52, 0x1b, 0xac, 0x72, 0xef, 0xdf, 0xd0, 0x49, 0x6d, 0x41, 0x32, 0x30, 0x56, 0x83, 0x68, 0x61, 0x0f, 0x4d, 0xb8, 0x8e, 0xc7, 0x0b, 0xbb, 0xb0, 0x0b, 0x3d, 0x34, 0xe3, 0x59, 0xd8, 0x85, 0x4e, 0x30, 0xbc, 0x0b, 0xbb, 0x70, 0x1b, 0x2c, 0x47, 0x9d, 0x9a, 0xa0, 0xf0, 0x2e, 0xdc, 0x86, 0x18, 0x4e, 0x50, 0x79, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x1b, 0x9a, 0xf1, 0x1c, 0xac, 0x4d, 0xa2, 0x3a, 0x18, 0xa7, 0xca, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0x2c, 0x9e, 0x97, 0x3a, 0x1c, 0xed, 0x6b, 0xb0, 0x90, 0x5e, 0x6a, 0x43, 0x23, 0xc1, 0x83, 0x25, 0xf2, 0xfd, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0x2c, 0x5f, 0x98, 0x3a, 0x1c, 0xed, 0x6b, 0xb0, 0x94, 0x61, 0x6a, 0x10, 0x2c, 0x08, 0x36, 0x18, 0x4f, 0xa2, 0x83, 0x64, 0x60, 0xfc, 0x0e, 0x7d, 0x35, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0x34, 0x31, 0x5a, 0x1c, 0x24, 0x03, 0x63, 0x75, 0x90, 0x5e, 0x94, 0x70, 0x3c, 0x3e, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0x1c, 0x65, 0xea, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x24, 0x03, 0x67, 0xdf, 0x61, 0x85, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x17, 0x24, 0x03, 0x63, 0x35, 0x88, 0x16, 0xf6, 0x60, 0x78, 0x51, 0x1c, 0x8f, 0x0f, 0x86, 0xe9, 0xc4, 0xf0, 0x1b, 0xcf, 0x0f, 0x96, 0xc8, 0xf7, 0x1f, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x16, 0x6e, 0x83, 0xe5, 0x4a, 0x53, 0x87, 0x68, 0x1e, 0x8e, 0xf6, 0x35, 0x58, 0xae, 0x34, 0xb5, 0xc1, 0x2a, 0xf7, 0xfe, 0x83, 0xa0, 0xf4, 0x1e, 0x64, 0x1b, 0x9a, 0xaf, 0x1f, 0x52, 0x07, 0xc3, 0x6e, 0xe8, 0x05, 0x73, 0xe8, 0x0a, 0xb3, 0x20, 0x58, 0xdc, 0x30, 0x9d, 0x1b, 0x0e, 0x85, 0x16, 0x87, 0xdd, 0x60, 0xac, 0xa3, 0x6d, 0x88, 0xe1, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x04, 0xdd, 0xdf, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0xdb, 0xd0, 0x43, 0xe8, 0x60, 0xad, 0x53, 0xff, 0x71, 0x68, 0xd8, 0x85, 0x5d, 0xe8, 0xa1, 0x63, 0xd8, 0xc2, 0x2e, 0xf4, 0xd0, 0x2c, 0x69, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0xc2, 0x9e, 0x7a, 0xe1, 0x36, 0xc4, 0xf0, 0xa0, 0xc4, 0x1e, 0x3c, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x6f, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x58, 0x86, 0xe9, 0xbf, 0xb0, 0x1b, 0xac, 0xda, 0xf4, 0xdf, 0x60, 0x91, 0xa7, 0xff, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x6b, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xed, 0x41, 0x89, 0x3d, 0x78, 0x3c, 0x1f, 0x76, 0x61, 0x37, 0x58, 0x86, 0xe9, 0xbf, 0xb0, 0x1b, 0xac, 0xda, 0xf4, 0x3f, 0x58, 0x1e, 0xea, 0x7f, 0x38, 0xda, 0xd7, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xdb, 0x83, 0xb0, 0xa7, 0x3e, 0x9e, 0x0f, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x76, 0x83, 0x65, 0x98, 0xfe, 0x1b, 0xac, 0xda, 0xf4, 0x3f, 0x1c, 0xed, 0x1b, 0x87, 0x36, 0x58, 0x85, 0xec, 0x7f, 0xb0, 0xe8, 0xd6, 0xff, 0x78, 0x3c, 0xfc, 0x82, 0x60, 0x83, 0x35, 0x2d, 0x47, 0x8b, 0x1b, 0x2c, 0xa4, 0x97, 0x5a, 0x43, 0x0c, 0x0f, 0x8a, 0x45, 0xb2, 0xc3, 0x5e, 0xe1, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x62, 0x75, 0x73, 0xeb, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0xb0, 0xd0, 0xc4, 0x68, 0x71, 0x10, 0x2c, 0xfc, 0x82, 0x60, 0x41, 0x32, 0xb0, 0xd2, 0x77, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0xbc, 0xf7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x38, 0xbb, 0xcb, 0x1d, 0x04, 0xbc, 0xff, 0x71, 0xe8, 0x38, 0x74, 0x7c, 0x1b, 0x04, 0x8b, 0x0b, 0xbb, 0x70, 0x1b, 0xf6, 0x0a, 0x0f, 0xc6, 0x9b, 0xce, 0x82, 0x60, 0x41, 0x32, 0x38, 0x37, 0x88, 0x16, 0xf6, 0x60, 0x7d, 0x83, 0xd1, 0x21, 0x5b, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x6c, 0xb8, 0x1e, 0x0c, 0xde, 0xc9, 0xe3, 0xd0, 0xb0, 0x0b, 0xb7, 0xc1, 0xfa, 0x06, 0xa3, 0x83, 0xf1, 0xa6, 0xb3, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x06, 0x0b, 0x4d, 0x8c, 0x0e, 0xc6, 0x9b, 0xce, 0x82, 0x60, 0x83, 0x85, 0x16, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x86, 0xeb, 0x41, 0x60, 0x62, 0x1f, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x86, 0x32, 0xeb, 0xc2, 0x6d, 0xb0, 0xf0, 0xc2, 0xe8, 0x20, 0x48, 0xf1, 0x0f, 0x47, 0xfb, 0x06, 0xe5, 0x50, 0xd2, 0xb0, 0x0b, 0xbb, 0xc1, 0x50, 0x66, 0x5d, 0xb8, 0x0d, 0x16, 0xce, 0x18, 0x1d, 0x04, 0x29, 0xfe, 0xe1, 0x68, 0xdf, 0xa0, 0x1c, 0x4a, 0x1a, 0x76, 0x61, 0x37, 0x18, 0xca, 0xac, 0x0b, 0xb7, 0xc1, 0x9a, 0x6e, 0xa9, 0x83, 0x20, 0xc5, 0x3f, 0x1c, 0xed, 0x0b, 0x92, 0xe1, 0x06, 0xd1, 0x82, 0xfb, 0x07, 0xeb, 0x98, 0xf5, 0x8f, 0xc7, 0xc3, 0x2e, 0xec, 0x06, 0x43, 0x99, 0x75, 0xe1, 0x36, 0x58, 0xca, 0x30, 0x75, 0x10, 0xa4, 0xf8, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x20, 0x19, 0x68, 0xde, 0x77, 0x30, 0x1c, 0xa5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xd6, 0xfa, 0x0e, 0x86, 0xa3, 0xf4, 0x20, 0x19, 0x08, 0xdd, 0xc1, 0xa2, 0x4f, 0xb1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x16, 0x9a, 0x18, 0x2d, 0x0e, 0x92, 0x61, 0x06, 0xd1, 0x82, 0xfb, 0x87, 0xd4, 0xc1, 0x21, 0xb9, 0x74, 0x3c, 0x3e, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x0c, 0x65, 0xd6, 0x85, 0xdb, 0x60, 0x21, 0xbd, 0xd4, 0x41, 0x90, 0xe2, 0x1f, 0x8e, 0xf6, 0x05, 0xc9, 0x30, 0x83, 0x68, 0x83, 0xe1, 0x81, 0x7e, 0x3c, 0x1e, 0x76, 0x61, 0x37, 0x18, 0xca, 0xac, 0x0b, 0xb7, 0xc1, 0xd2, 0x94, 0xa9, 0x83, 0x20, 0xc5, 0x3f, 0x1c, 0xed, 0x1b, 0x2c, 0xa9, 0xfc, 0x1f, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xec, 0x06, 0x43, 0x99, 0x75, 0xe1, 0x36, 0x58, 0xae, 0x34, 0x75, 0x10, 0xa4, 0xf8, 0x87, 0xa3, 0x7d, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0xac, 0xb2, 0xfb, 0x3f, 0x18, 0x9a, 0x54, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x6f, 0x30, 0xde, 0x74, 0x36, 0xec, 0x15, 0x1e, 0x62, 0x78, 0x1c, 0x1a, 0x76, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x41, 0xed, 0xfe, 0x20, 0x19, 0x98, 0xbe, 0x83, 0xb1, 0xbe, 0x7a, 0x30, 0xb0, 0x45, 0x37, 0xc4, 0x70, 0x90, 0x0c, 0x33, 0x88, 0x16, 0xdc, 0x3f, 0x58, 0x1f, 0xe9, 0x30, 0x88, 0x16, 0x76, 0x10, 0x2c, 0x08, 0x36, 0x58, 0x50, 0xbb, 0x3f, 0x48, 0x06, 0xa7, 0x0e, 0xc6, 0xfa, 0xea, 0xc1, 0xc0, 0x16, 0x3d, 0x9e, 0x0f, 0xbb, 0xb0, 0x0b, 0x3d, 0xec, 0x15, 0x2e, 0xdc, 0x06, 0x0b, 0x2f, 0x8c, 0x0e, 0xf1, 0x3f, 0x1c, 0xed, 0x0b, 0xbb, 0xc1, 0x32, 0x9e, 0xff, 0x85, 0x5d, 0xe8, 0xa1, 0xe1, 0xd7, 0xc2, 0x2e, 0xf4, 0x60, 0x0c, 0x2c, 0x2c, 0xec, 0xc2, 0x2e, 0xdc, 0x86, 0x86, 0x5f, 0x07, 0x63, 0x60, 0xe1, 0xb0, 0xbe, 0x79, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x88, 0xe1, 0xb0, 0x0b, 0xbb, 0xc1, 0x1a, 0xf0, 0xff, 0x85, 0xdb, 0x60, 0xe1, 0x8c, 0xd1, 0x21, 0xfe, 0x87, 0xa3, 0x7d, 0x61, 0x37, 0x58, 0x7b, 0xf4, 0xbf, 0xb0, 0x0b, 0x92, 0x61, 0x06, 0xd1, 0x06, 0x23, 0xdf, 0xfc, 0xa0, 0xd0, 0x1a, 0xd8, 0x10, 0xc3, 0x61, 0x17, 0x24, 0xc3, 0x0c, 0xa2, 0x0d, 0x86, 0x07, 0xfa, 0x41, 0x21, 0xa5, 0x72, 0x48, 0xe7, 0x1e, 0x62, 0x38, 0xc8, 0x36, 0x34, 0x5f, 0x1f, 0x24, 0xc3, 0x0c, 0xa2, 0x05, 0xf7, 0x0f, 0x7b, 0x85, 0x83, 0x68, 0xc1, 0xfc, 0x60, 0xbc, 0xe9, 0x1c, 0x8f, 0x0f, 0x4a, 0x86, 0xa6, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x41, 0xb0, 0x78, 0xb0, 0xc4, 0x59, 0x7f, 0x71, 0x10, 0x2c, 0x08, 0x56, 0x10, 0x2c, 0x48, 0x06, 0xe2, 0x75, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0x62, 0x64, 0xa3, 0x43, 0xb2, 0xe3, 0x38, 0x34, 0x08, 0x16, 0x24, 0x03, 0xf1, 0x1a, 0x44, 0x1b, 0x0c, 0x3b, 0xdc, 0x43, 0xb6, 0xe2, 0xa0, 0x8d, 0x0d, 0x80, 0x61, 0x17, 0x6e, 0xc3, 0xd1, 0x7e, 0x50, 0x50, 0x14, 0x2d, 0xec, 0xc2, 0x2e, 0xdc, 0x86, 0xa3, 0xfd, 0x20, 0xc8, 0xe2, 0x17, 0x76, 0x83, 0x71, 0xc8, 0x74, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0x95, 0x30, 0x39, 0x08, 0xdc, 0xf8, 0xc3, 0x29, 0x36, 0xec, 0x06, 0x0b, 0xb5, 0xb8, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xe3, 0xee, 0x20, 0xc8, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x83, 0xb3, 0x69, 0xf8, 0xc1, 0x60, 0x8d, 0xdd, 0xb0, 0xf6, 0x7b, 0x10, 0x22, 0xfe, 0xc7, 0xa1, 0xc3, 0x29, 0x36, 0xec, 0xc2, 0x6e, 0xb0, 0x74, 0x6f, 0x7f, 0x43, 0x0c, 0x87, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0xe7, 0x0e, 0x96, 0x8a, 0xef, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x87, 0x68, 0x1e, 0x87, 0x0e, 0xe9, 0xdc, 0x83, 0xb1, 0x30, 0x7a, 0x3c, 0x5e, 0x10, 0x2c, 0x08, 0x36, 0x58, 0x23, 0xda, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x51, 0x0e, 0x80, 0x43, 0xd6, 0xee, 0x38, 0x34, 0xec, 0x06, 0x8b, 0x3c, 0x82, 0x16, 0x64, 0x6b, 0xc8, 0x63, 0x8f, 0x07, 0x69, 0x66, 0xde, 0xc3, 0x6e, 0x58, 0x41, 0xdd, 0x20, 0xc8, 0xe2, 0x0f, 0xa7, 0xd8, 0x20, 0xd8, 0x20, 0x3d, 0x91, 0xe5, 0x20, 0xc1, 0x2b, 0x68, 0x10, 0x6c, 0xb0, 0xd0, 0xc4, 0x68, 0x71, 0x10, 0x2c, 0x08, 0x36, 0x68, 0x1e, 0x03, 0x60, 0xd8, 0x0d, 0x16, 0x79, 0x04, 0x2d, 0xc8, 0x36, 0x68, 0x73, 0x09, 0x60, 0xd8, 0x0d, 0xc6, 0x21, 0xd3, 0x06, 0x21, 0x00, 0x7e, 0x38, 0xc5, 0x06, 0xc1, 0x82, 0x64, 0x60, 0xfd, 0xef, 0x20, 0xc8, 0xf9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xc6, 0xe5, 0x20, 0x44, 0xfc, 0x8f, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0x4b, 0xf7, 0xf6, 0x37, 0xc4, 0x70, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0x70, 0x6e, 0x10, 0x6d, 0xe8, 0xe6, 0x72, 0x10, 0xe4, 0xfc, 0x07, 0x6d, 0xf9, 0x00, 0x1c, 0xd2, 0xb9, 0x07, 0x63, 0x61, 0xf4, 0x78, 0x7c, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0xb8, 0xc1, 0x9a, 0x61, 0xa3, 0x16, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x83, 0xb1, 0x94, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xe3, 0xe0, 0xe3, 0x41, 0xf9, 0x15, 0xb6, 0xf0, 0x1b, 0xcf, 0x0f, 0xd6, 0x31, 0x83, 0x1d, 0xd6, 0x7e, 0x8f, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x7c, 0xfd, 0x77, 0x48, 0x2e, 0x1d, 0x12, 0xad, 0xc3, 0x2e, 0xec, 0x06, 0xa3, 0x63, 0xfd, 0xb0, 0xbe, 0xb9, 0xe1, 0x14, 0x1b, 0x76, 0x83, 0x05, 0xb0, 0x3e, 0x1b, 0x84, 0x9b, 0xfb, 0x20, 0xdb, 0x60, 0x29, 0x47, 0xd0, 0xb0, 0x1b, 0xb4, 0x76, 0x02, 0xb0, 0x86, 0xa3, 0xfd, 0x60, 0xb0, 0xc6, 0x0e, 0xb2, 0x35, 0xb4, 0x5f, 0x3f, 0x58, 0xa8, 0xc5, 0x75, 0x38, 0xc5, 0x8e, 0xc7, 0x07, 0x05, 0x52, 0xd8, 0xc2, 0x6e, 0xb0, 0xe0, 0xbe, 0x7f, 0x0d, 0x16, 0xce, 0x18, 0x6d, 0xb0, 0xd0, 0xc4, 0xe8, 0xd0, 0x48, 0x70, 0xd8, 0x0d, 0x56, 0x89, 0xf8, 0x6f, 0x10, 0x94, 0xde, 0xc3, 0x6e, 0xb0, 0x9e, 0xc9, 0x7f, 0x83, 0xa0, 0xf4, 0x1e, 0x76, 0x83, 0xe5, 0x69, 0xfe, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0x5a, 0xdf, 0xf1, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x0d, 0x46, 0x78, 0xda, 0x21, 0x86, 0xc7, 0xa1, 0x61, 0x37, 0x58, 0x5c, 0x62, 0xb4, 0x20, 0x58, 0x90, 0x0c, 0x1c, 0x7d, 0x87, 0x15, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8b, 0x43, 0xf5, 0x37, 0x58, 0xac, 0xac, 0x7f, 0x30, 0xf0, 0x43, 0x8e, 0x43, 0x83, 0x6c, 0x43, 0xf3, 0xf5, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0x18, 0xe0, 0x21, 0x57, 0x06, 0xf7, 0xd6, 0x62, 0xc6, 0x46, 0x47, 0x1f, 0x4e, 0xb1, 0x15, 0x7e, 0x41, 0xb0, 0x78, 0xb0, 0xcc, 0xb3, 0x7f, 0x71, 0x10, 0xac, 0xf0, 0x1b, 0x2c, 0x02, 0xf8, 0x3f, 0xbe, 0x6d, 0xd0, 0x6e, 0x2b, 0xc0, 0xf0, 0x0b, 0x82, 0x0d, 0x16, 0xde, 0xfb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xcf, 0x02, 0x60, 0x71, 0x10, 0xac, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0xe5, 0x07, 0xff, 0x87, 0x34, 0xdc, 0x20, 0xd8, 0xa0, 0xd9, 0x5b, 0x80, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xf8, 0x36, 0xfc, 0x82, 0x60, 0x71, 0x61, 0x37, 0x18, 0x21, 0x51, 0x0b, 0xbb, 0x20, 0x19, 0xd4, 0x0d, 0xa2, 0x05, 0xf7, 0x0f, 0x6b, 0xbf, 0x83, 0x68, 0x41, 0xfb, 0xc1, 0x78, 0xd3, 0x39, 0x1e, 0x1f, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0xb8, 0xc1, 0x92, 0x0c, 0xa8, 0x83, 0x25, 0x19, 0x50, 0x8b, 0xc3, 0x2e, 0xec, 0x86, 0x74, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x1b, 0xac, 0x21, 0xcf, 0x3a, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x96, 0x22, 0x67, 0x1d, 0xc6, 0xe5, 0x90, 0xce, 0x5d, 0xd8, 0x0d, 0xda, 0x6b, 0x06, 0xd8, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x83, 0xa5, 0xc8, 0x59, 0x87, 0x68, 0x6e, 0x70, 0x0e, 0xfe, 0x1e, 0x76, 0xe1, 0x36, 0x58, 0x5c, 0x9d, 0x75, 0x88, 0xe6, 0x82, 0x64, 0x50, 0x37, 0x88, 0x16, 0xdc, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xe3, 0x6f, 0x10, 0x2d, 0xec, 0x41, 0x88, 0xf8, 0x1f, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0xb9, 0x36, 0x3a, 0x34, 0x9e, 0x3f, 0x0e, 0x0d, 0xa2, 0x05, 0xed, 0x83, 0x60, 0x41, 0x32, 0x70, 0xfc, 0x1d, 0x04, 0xbc, 0xff, 0x41, 0xfb, 0xe0, 0x00, 0x87, 0xe4, 0xd2, 0x20, 0x5b, 0x43, 0xfb, 0xf5, 0xe1, 0x36, 0x58, 0x34, 0x9c, 0x75, 0x88, 0xe6, 0x20, 0x19, 0xd4, 0x0d, 0xa2, 0x05, 0xf7, 0x07, 0xc1, 0x06, 0x0d, 0x9c, 0x03, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x94, 0x03, 0xe0, 0xd0, 0x78, 0xfe, 0x38, 0x34, 0x88, 0x16, 0xb4, 0x0f, 0x82, 0x0d, 0xda, 0xea, 0x06, 0x38, 0x68, 0x2b, 0x1e, 0xe0, 0x90, 0x5c, 0x3a, 0x1c, 0xed, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xb0, 0x1b, 0xf2, 0x58, 0x1b, 0x94, 0xa1, 0x52, 0xc3, 0x6e, 0xd8, 0x35, 0xd8, 0x70, 0xb4, 0x0f, 0xbb, 0x70, 0x4b, 0x28, 0x3c, 0x18, 0x5e, 0x14, 0x0b, 0xbb, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xd0, 0x06, 0xf4, 0x78, 0xbc, 0xb0, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x08, 0xb3, 0x7f, 0x30, 0x32, 0x7b, 0x8f, 0xc7, 0x0b, 0xbb, 0x20, 0x58, 0x09, 0x1f, 0x0f, 0xc6, 0x9a, 0xca, 0x20, 0x58, 0x1c, 0x76, 0x43, 0x1e, 0x6b, 0x83, 0x32, 0x54, 0x6a, 0xd8, 0x0d, 0xbb, 0x06, 0x1b, 0x8e, 0xf6, 0x61, 0x37, 0x68, 0x07, 0x20, 0x60, 0x61, 0x37, 0x68, 0x4f, 0x20, 0x60, 0x61, 0x37, 0x68, 0xb3, 0x20, 0x60, 0x61, 0x17, 0x24, 0x83, 0xba, 0x41, 0xb4, 0xe0, 0xfe, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0xef, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xc2, 0xe3, 0xe3, 0xd0, 0x20, 0x5a, 0xd0, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xe9, 0xbb, 0x41, 0xb4, 0xb0, 0x07, 0xeb, 0x54, 0x1a, 0x0e, 0x86, 0xa1, 0xcf, 0xc1, 0xba, 0x31, 0xa6, 0x43, 0xb6, 0xe2, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0xdf, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x8b, 0x83, 0x60, 0x61, 0x17, 0x6e, 0x83, 0xc1, 0x3b, 0x79, 0x48, 0xcc, 0x6c, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0xc1, 0xfa, 0x06, 0xa3, 0x83, 0xc1, 0x3b, 0xb9, 0x20, 0x19, 0xf4, 0x1d, 0xcf, 0x87, 0x5d, 0xb8, 0x0d, 0x16, 0x9a, 0x18, 0x1d, 0x0c, 0xde, 0xc9, 0x0d, 0x31, 0x1c, 0x76, 0x61, 0x17, 0x7a, 0x30, 0x78, 0x27, 0x17, 0x6e, 0x83, 0x85, 0x17, 0x46, 0x07, 0xa3, 0xd5, 0xfc, 0x70, 0xb4, 0x2f, 0xec, 0xc2, 0x2e, 0xf4, 0x90, 0x98, 0x59, 0xb8, 0x0d, 0x16, 0x5e, 0x18, 0x1d, 0x84, 0x7c, 0xf6, 0xe1, 0x68, 0x5f, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0xc0, 0xe0, 0xea, 0x3b, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xd2, 0x1b, 0x1b, 0x0e, 0x92, 0xe5, 0x4b, 0x8e, 0x43, 0x0b, 0xbb, 0xb0, 0x1b, 0x2c, 0x97, 0x16, 0xdb, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x83, 0x72, 0xac, 0xe1, 0xa0, 0x94, 0xd9, 0x39, 0xa4, 0x73, 0x0f, 0xe9, 0xdc, 0xc3, 0xd1, 0x7e, 0xd0, 0x2e, 0x4c, 0xc0, 0xb0, 0x0b, 0xbb, 0x41, 0x23, 0x36, 0x01, 0x0b, 0xb7, 0xc1, 0xc2, 0x19, 0xa3, 0x83, 0xd1, 0x6a, 0x7e, 0x38, 0xda, 0x17, 0x76, 0x61, 0x37, 0x68, 0x65, 0x27, 0x60, 0xe1, 0x36, 0x58, 0x38, 0x63, 0x74, 0x10, 0xf2, 0xd9, 0x87, 0xa3, 0x7d, 0x61, 0x17, 0x24, 0x83, 0xba, 0x41, 0xb4, 0xe0, 0xfe, 0x41, 0x49, 0xd3, 0x30, 0x88, 0x16, 0xb4, 0x1f, 0x14, 0xb9, 0x0a, 0x83, 0x68, 0xc1, 0xf4, 0x10, 0xc3, 0x41, 0xb4, 0x20, 0x3c, 0xc4, 0xf0, 0x78, 0xbe, 0xb0, 0x0b, 0x92, 0x41, 0xdd, 0x20, 0x5a, 0x70, 0xff, 0xa0, 0x1c, 0x6b, 0x18, 0x44, 0x0b, 0xda, 0x0f, 0x4a, 0x99, 0x9d, 0x83, 0x96, 0xba, 0x02, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0x7e, 0xd0, 0x2e, 0x4c, 0xc0, 0xb0, 0x0b, 0xbb, 0x41, 0x23, 0x36, 0x01, 0x0b, 0xb7, 0xc1, 0x9a, 0x6e, 0xa9, 0x83, 0xd1, 0x6a, 0x7e, 0x38, 0xda, 0x17, 0x76, 0x61, 0x37, 0x68, 0x65, 0x27, 0x60, 0xe1, 0x36, 0x58, 0xd3, 0x2d, 0x75, 0x10, 0xf2, 0xd9, 0x87, 0xa3, 0x7d, 0x61, 0x37, 0x68, 0x24, 0x29, 0x60, 0x41, 0x32, 0xa8, 0x1b, 0x44, 0x1b, 0xb4, 0x9f, 0x15, 0x30, 0x88, 0x36, 0x68, 0x7c, 0x2b, 0xe0, 0x78, 0x3e, 0xec, 0xc2, 0x2d, 0xc1, 0x6a, 0xff, 0x04, 0xa9, 0xfb, 0x85, 0x5d, 0x90, 0x0c, 0x33, 0x88, 0x16, 0xdc, 0x9f, 0x20, 0xdd, 0x3f, 0x88, 0x16, 0xb4, 0x1f, 0x94, 0x34, 0x0d, 0xc7, 0xf3, 0x85, 0x5d, 0x90, 0x0c, 0xea, 0x06, 0xd1, 0x82, 0xfb, 0x07, 0x89, 0xf1, 0x19, 0x07, 0xad, 0xdb, 0x05, 0x2c, 0xec, 0x82, 0x60, 0x41, 0x32, 0x88, 0x06, 0xd1, 0x06, 0x8d, 0xf3, 0x05, 0x0c, 0xa2, 0x05, 0xed, 0x07, 0x89, 0xf1, 0x19, 0xc7, 0xf3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x12, 0xf4, 0xf6, 0x9f, 0x60, 0x77, 0xff, 0x38, 0xb4, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0xac, 0xa5, 0x94, 0x3a, 0x68, 0x35, 0x2f, 0x60, 0xe1, 0x96, 0x60, 0xbf, 0xff, 0x20, 0xfd, 0x3e, 0x63, 0xd8, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x05, 0xb5, 0xfb, 0x83, 0x64, 0x60, 0xfa, 0x0e, 0x56, 0xa7, 0xf2, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0xd0, 0xec, 0x4a, 0xc0, 0x71, 0x68, 0x43, 0x0c, 0x87, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0xb3, 0x41, 0xb4, 0xe0, 0xfe, 0x20, 0x5a, 0xd0, 0x7d, 0xb0, 0x14, 0x39, 0x6b, 0x10, 0x2d, 0xec, 0x41, 0x63, 0x7d, 0x01, 0x07, 0x83, 0x77, 0x72, 0x10, 0x2d, 0x68, 0x1f, 0x44, 0x1b, 0x34, 0xfb, 0x19, 0x30, 0x88, 0x16, 0xf6, 0x20, 0x31, 0x3e, 0xe3, 0x90, 0x98, 0x19, 0x44, 0x0b, 0xb6, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x82, 0xda, 0xfd, 0x41, 0x32, 0x38, 0x75, 0xb0, 0x3a, 0x95, 0xff, 0xa0, 0x0d, 0xcc, 0x80, 0xe3, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0x4d, 0x47, 0x06, 0x1c, 0x87, 0x0e, 0xe9, 0xdc, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0xda, 0x85, 0x09, 0x18, 0x76, 0x61, 0x37, 0x68, 0xc4, 0x26, 0x60, 0xe1, 0x36, 0x58, 0x48, 0x2f, 0x75, 0x30, 0x5a, 0xcd, 0x0f, 0x47, 0xfb, 0x82, 0x64, 0x50, 0x37, 0x88, 0x36, 0x68, 0x4e, 0x2c, 0xe0, 0x78, 0x3e, 0xec, 0xc2, 0x6e, 0xd0, 0x88, 0x4d, 0xc0, 0xc2, 0x6d, 0xb0, 0x94, 0x61, 0xea, 0x60, 0xb4, 0x9a, 0x1f, 0x8e, 0xf6, 0x85, 0x5d, 0xd8, 0x85, 0xdb, 0x60, 0xa1, 0x89, 0xd1, 0x21, 0x31, 0xb3, 0x21, 0x86, 0xc3, 0x6e, 0xd0, 0xa0, 0x5b, 0xc0, 0x86, 0x18, 0x0e, 0xbb, 0x41, 0xcb, 0x3a, 0x01, 0x1b, 0x62, 0x78, 0xd0, 0xf0, 0x54, 0xc0, 0x82, 0x60, 0x41, 0x32, 0xa0, 0x78, 0xef, 0x3b, 0x38, 0x09, 0x1d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x41, 0xed, 0xfe, 0x20, 0x19, 0x08, 0xdd, 0x20, 0xda, 0xa0, 0x9d, 0x8f, 0x80, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0b, 0x4d, 0x8c, 0x16, 0x07, 0xc9, 0xa0, 0x6e, 0x10, 0x6d, 0xb0, 0xc2, 0xf0, 0x7f, 0x10, 0x2d, 0x28, 0x3f, 0x1c, 0xed, 0x87, 0x15, 0xda, 0xe3, 0xf1, 0x71, 0xe8, 0xa0, 0x5d, 0x98, 0x80, 0x61, 0x17, 0x76, 0x83, 0x46, 0x6c, 0x02, 0x16, 0x6e, 0x83, 0xa5, 0x29, 0x53, 0x07, 0xa3, 0xd5, 0xfc, 0x70, 0xb4, 0x6f, 0xd0, 0x42, 0x6f, 0xc0, 0x20, 0x5b, 0x43, 0xfb, 0xf5, 0x61, 0x37, 0x68, 0xc4, 0x26, 0x60, 0xe1, 0x36, 0x58, 0xae, 0x34, 0x75, 0x30, 0x5a, 0xcd, 0x0f, 0x47, 0xfb, 0xb0, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x0b, 0x6a, 0xf7, 0x07, 0xc9, 0xc0, 0xf4, 0x1d, 0xf6, 0x6c, 0x0f, 0xd6, 0xba, 0x96, 0x6c, 0x38, 0xda, 0x87, 0xdd, 0xa0, 0x09, 0xca, 0x80, 0x0d, 0x31, 0x1c, 0x24, 0x83, 0xba, 0x41, 0xb4, 0xc1, 0xe2, 0xe7, 0xff, 0x41, 0xb4, 0x41, 0x5b, 0xa9, 0x01, 0x83, 0x68, 0x41, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x2c, 0xa8, 0xdd, 0x1f, 0x24, 0x83, 0x53, 0x87, 0x3d, 0xdb, 0x83, 0xb5, 0xae, 0x25, 0xc7, 0xf3, 0x61, 0x37, 0x0e, 0x6d, 0x88, 0xe1, 0xb0, 0x1b, 0x04, 0x29, 0xfe, 0x82, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x48, 0xfd, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0x06, 0x5b, 0xdc, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0xc7, 0x5e, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0xd4, 0xdf, 0x20, 0xda, 0x60, 0x0d, 0xa8, 0xd8, 0xc1, 0x78, 0xd7, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0c, 0x7c, 0xb4, 0x30, 0xbb, 0xf2, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0xc8, 0x63, 0x8f, 0x01, 0x1e, 0x6e, 0x65, 0x73, 0x74, 0x2d, 0x66, 0x61, 0x69, 0xec, 0xe1, 0x14, 0x3b, 0x1c, 0xed, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0x00, 0x0f, 0xb7, 0xb2, 0x39, 0xba, 0x16, 0xb2, 0x32, 0x3c, 0xfa, 0x70, 0x75, 0x1d, 0x8f, 0x8f, 0x6f, 0xc3, 0x2e, 0xdc, 0x06, 0x0b, 0x4d, 0x8c, 0x0e, 0x6b, 0xbf, 0x1b, 0x8e, 0xf6, 0x61, 0x17, 0x6e, 0x83, 0xf5, 0x0d, 0x46, 0x87, 0xb5, 0xdf, 0x0d, 0x31, 0x1c, 0x76, 0x61, 0x37, 0x58, 0x2b, 0x24, 0xb6, 0x70, 0x1b, 0x2c, 0xbc, 0x30, 0x3a, 0xb4, 0x00, 0x3a, 0x1c, 0xed, 0x1b, 0x8e, 0xf6, 0x61, 0x17, 0x76, 0x83, 0xb5, 0x42, 0x62, 0x0b, 0xb7, 0xc1, 0xc2, 0x19, 0xa3, 0x43, 0x0b, 0xa0, 0xc3, 0xd1, 0xbe, 0xe1, 0x68, 0x1f, 0x76, 0x61, 0x37, 0x58, 0x2b, 0x24, 0xb6, 0x70, 0x1b, 0xac, 0xe9, 0x96, 0x3a, 0xb4, 0x00, 0x3a, 0x1c, 0xed, 0x0b, 0x92, 0x41, 0xdd, 0x20, 0x5a, 0xd0, 0x3e, 0x48, 0x06, 0xb3, 0x41, 0xb4, 0x61, 0xd9, 0xf7, 0x90, 0xad, 0x38, 0x1e, 0x0f, 0xbb, 0xb0, 0x1b, 0xac, 0x15, 0x12, 0x5b, 0xb8, 0x0d, 0x16, 0xd2, 0x4b, 0x1d, 0x5a, 0x00, 0x1d, 0x8e, 0xf6, 0x05, 0xc9, 0xa0, 0x6e, 0x10, 0x2d, 0x68, 0x3f, 0x34, 0x3a, 0x3a, 0x1e, 0x0f, 0xbb, 0xb0, 0x1b, 0xac, 0x15, 0x12, 0x5b, 0xb8, 0x0d, 0x96, 0x32, 0x4c, 0x1d, 0x5a, 0x00, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0xeb, 0xd8, 0xfe, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xca, 0xee, 0x7f, 0x90, 0x0c, 0x84, 0x6e, 0x10, 0x2d, 0xec, 0x41, 0xf0, 0x70, 0x1f, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x68, 0x62, 0xb4, 0x38, 0x48, 0x06, 0x75, 0x83, 0x68, 0x41, 0xfb, 0x21, 0x75, 0x70, 0x48, 0x2e, 0x1d, 0x8f, 0x8f, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0x6b, 0x85, 0xc4, 0x16, 0x6e, 0x83, 0xa5, 0x29, 0x53, 0x87, 0x16, 0x40, 0x87, 0xa3, 0x7d, 0x83, 0xa6, 0x7b, 0x04, 0x06, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0xbb, 0xc1, 0x5a, 0x21, 0xb1, 0x85, 0xdb, 0x60, 0xb9, 0xd2, 0xd4, 0xa1, 0x05, 0xd0, 0xe1, 0x68, 0x1f, 0x76, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x95, 0xdd, 0xff, 0x20, 0x19, 0x98, 0xbe, 0x43, 0xab, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x21, 0x31, 0x73, 0x1c, 0xda, 0x10, 0xc3, 0x61, 0x17, 0x04, 0x0b, 0x82, 0x0d, 0x56, 0xd9, 0xfd, 0x0f, 0x92, 0x81, 0xe9, 0x3b, 0x34, 0x06, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x83, 0xf1, 0xa6, 0x73, 0x58, 0xfb, 0x3d, 0x0e, 0x6d, 0x88, 0xe1, 0x20, 0x19, 0xd4, 0x0d, 0xa2, 0x0d, 0x9a, 0xab, 0x11, 0x18, 0x44, 0x0b, 0xd2, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x55, 0x76, 0xff, 0x83, 0x64, 0x70, 0xea, 0xd0, 0x2a, 0xe8, 0xa0, 0x21, 0x32, 0x81, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x95, 0xdd, 0xff, 0x20, 0x19, 0x9c, 0x3a, 0x34, 0x06, 0x3b, 0x68, 0x74, 0x4d, 0xe0, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x78, 0xdd, 0xca, 0xe6, 0xe8, 0x5a, 0xd2, 0xdc, 0x43, 0x6a, 0xe9, 0x78, 0x7c, 0x30, 0x42, 0xa2, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x77, 0x2b, 0x9b, 0xa3, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x0a, 0x82, 0xc5, 0x0d, 0xd3, 0xb9, 0xc1, 0x92, 0x0c, 0xa8, 0x39, 0x58, 0x21, 0xe8, 0xbf, 0x38, 0x08, 0x16, 0x17, 0x04, 0x8b, 0x1b, 0xa6, 0xf3, 0x70, 0x8a, 0x2d, 0x0e, 0x82, 0x05, 0xc9, 0x40, 0xfe, 0xee, 0xe0, 0x24, 0x74, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x82, 0x60, 0x41, 0x32, 0xb0, 0x5f, 0x77, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xe8, 0x21, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x86, 0xdc, 0xf7, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x06, 0x27, 0xbd, 0xdd, 0x0d, 0x86, 0xd4, 0xef, 0x06, 0xeb, 0x1f, 0x5f, 0x36, 0x48, 0x90, 0x84, 0xde, 0xa0, 0x14, 0x91, 0xdc, 0x60, 0xfd, 0xe3, 0xcb, 0x06, 0x4b, 0x6d, 0x0a, 0x36, 0x28, 0x81, 0x22, 0x37, 0x58, 0xff, 0xf8, 0xb2, 0xc1, 0xc0, 0x37, 0xde, 0x20, 0xfd, 0xe9, 0x79, 0x83, 0x73, 0xe4, 0xee, 0x06, 0x6b, 0xd2, 0x12, 0x36, 0x58, 0xd5, 0xbd, 0xb0, 0x41, 0xda, 0x4b, 0xf5, 0x20, 0x58, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x16, 0xaa, 0x96, 0x1c, 0xac, 0x8c, 0xee, 0x3f, 0xc4, 0xf0, 0x60, 0x35, 0x03, 0xd0, 0xf1, 0xed, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xbd, 0xbe, 0x83, 0xb3, 0x97, 0xf1, 0x20, 0x19, 0xa8, 0x5e, 0x87, 0xf6, 0x2d, 0x83, 0x64, 0xc8, 0x41, 0xf3, 0x4b, 0x02, 0x83, 0x60, 0x41, 0x32, 0x90, 0xbe, 0x1b, 0x44, 0x1b, 0x52, 0x1c, 0x07, 0xc3, 0xd0, 0xe7, 0x60, 0x60, 0x8b, 0x1e, 0x8f, 0x8f, 0x43, 0x07, 0x0b, 0x4d, 0x8c, 0x8e, 0x43, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x2c, 0x34, 0x31, 0x5a, 0x1c, 0x04, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x6e, 0xb0, 0x42, 0x59, 0x6a, 0x0d, 0x16, 0x39, 0x4b, 0x2d, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x38, 0xbb, 0xcb, 0x1d, 0x8c, 0x77, 0x9d, 0x43, 0x53, 0xa0, 0x41, 0xb0, 0x41, 0xe3, 0xc9, 0x02, 0x87, 0x16, 0x60, 0xc3, 0x6e, 0xb0, 0x8e, 0x5b, 0x6a, 0x0d, 0x96, 0x80, 0x4b, 0x6d, 0xd0, 0x5a, 0xb2, 0xc0, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb2, 0xc1, 0x42, 0x77, 0xa9, 0x83, 0xf1, 0xae, 0x73, 0x68, 0x01, 0xb6, 0xc1, 0x82, 0x88, 0xa9, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0x32, 0xb0, 0xd2, 0x77, 0x30, 0xfc, 0x63, 0x0f, 0x96, 0x6d, 0x48, 0x1d, 0x3a, 0x68, 0x1c, 0xac, 0x4c, 0x31, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0x58, 0x68, 0x62, 0xb4, 0x38, 0xec, 0x06, 0x8b, 0x4b, 0x8c, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0x96, 0x98, 0xf7, 0x6f, 0x88, 0xe1, 0xb0, 0x1b, 0xac, 0x76, 0xf1, 0xdf, 0x10, 0xc3, 0x41, 0xb6, 0x86, 0xf6, 0xeb, 0x07, 0x0b, 0xee, 0xfb, 0x37, 0xc4, 0xf0, 0x60, 0x9c, 0x2a, 0x1f, 0x8f, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xb0, 0x1b, 0xc6, 0x65, 0x43, 0x34, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x1b, 0x72, 0xdf, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xe0, 0xe3, 0xe0, 0xef, 0xe0, 0xf2, 0xe0, 0xe5, 0xa0, 0x6d, 0x70, 0x77, 0xf0, 0x74, 0xf0, 0xf1, 0xa0, 0x08, 0x81, 0x3e, 0xbe, 0x1d, 0x8f, 0x0f, 0xa7, 0xd8, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xec, 0x86, 0x5d, 0x83, 0x0d, 0xe3, 0x32, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0x5e, 0xdf, 0xc1, 0x49, 0xe8, 0x78, 0x90, 0x0c, 0x6e, 0x1d, 0x1a, 0x83, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x60, 0xaf, 0xef, 0xe0, 0x98, 0x55, 0x3c, 0x48, 0x06, 0xb7, 0x0e, 0x7b, 0xb6, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x76, 0x07, 0xc7, 0xac, 0xe2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x0b, 0x0f, 0x65, 0x0e, 0x7b, 0x85, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x76, 0x07, 0x67, 0x2f, 0xe3, 0x83, 0x06, 0x1b, 0x06, 0x36, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x37, 0x58, 0x6a, 0x53, 0xb0, 0xc1, 0x1a, 0x14, 0xa0, 0x0d, 0xd6, 0xa4, 0x25, 0x6c, 0xb0, 0xfe, 0xf1, 0x65, 0x83, 0xf4, 0xa7, 0xe7, 0x0d, 0x86, 0xd4, 0xef, 0x06, 0x27, 0xbd, 0xdd, 0x0d, 0x56, 0x75, 0x2f, 0x6c, 0x90, 0xb6, 0x40, 0xbd, 0xc1, 0xfa, 0xc7, 0x97, 0x0d, 0xd6, 0xa4, 0x25, 0x6c, 0x90, 0xfe, 0xf4, 0xbc, 0xc1, 0x1a, 0x14, 0xa0, 0x0d, 0xc6, 0xed, 0xee, 0x06, 0xe9, 0x4f, 0xcf, 0x1b, 0x9c, 0x23, 0x77, 0x37, 0x58, 0x93, 0x96, 0xb0, 0xc1, 0xaa, 0xee, 0x85, 0x0d, 0xd6, 0x68, 0x2b, 0x6c, 0x90, 0xf6, 0x52, 0xbd, 0xc1, 0xfa, 0xc7, 0x97, 0x0d, 0x12, 0x24, 0xa1, 0x37, 0x28, 0x45, 0x24, 0x37, 0x48, 0x0c, 0x91, 0x19, 0x04, 0x6b, 0x48, 0xd5, 0x6c, 0x90, 0xf6, 0x52, 0xbd, 0xc1, 0x02, 0x34, 0x86, 0x0d, 0xce, 0x91, 0xbb, 0x1b, 0x24, 0x78, 0x3c, 0x6f, 0x90, 0x18, 0x22, 0x33, 0x08, 0x36, 0x28, 0x16, 0xc9, 0x0e, 0x56, 0x33, 0x00, 0x1d, 0xac, 0x66, 0x00, 0x3a, 0xbe, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x58, 0xeb, 0x3b, 0x38, 0x9d, 0x21, 0x0f, 0x92, 0x81, 0xd0, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x9e, 0xcf, 0xc0, 0x20, 0x19, 0x88, 0xd7, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0x5e, 0xdf, 0xc1, 0xe9, 0x0c, 0x79, 0x90, 0x0c, 0x04, 0xef, 0x60, 0xbd, 0x74, 0xff, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x53, 0x48, 0x03, 0x83, 0x64, 0x20, 0x78, 0x07, 0x21, 0x87, 0x7f, 0x1c, 0x3a, 0x0e, 0x6d, 0xc8, 0x7d, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x6e, 0xb0, 0xaa, 0x7b, 0x61, 0x83, 0xd1, 0xe0, 0xbb, 0xc1, 0x1a, 0x6d, 0x85, 0x0d, 0xd6, 0x68, 0x2b, 0x6c, 0x30, 0x1a, 0x7c, 0x37, 0x18, 0x52, 0xbf, 0x8b, 0xe1, 0xe7, 0x06, 0x69, 0x2f, 0xd5, 0x83, 0x60, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x69, 0x9f, 0x83, 0x63, 0x56, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x10, 0x9e, 0x83, 0x63, 0x56, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x06, 0x0b, 0x1a, 0xa6, 0xd6, 0x30, 0xf7, 0x83, 0x87, 0x1b, 0xea, 0xf8, 0xe0, 0xee, 0xe1, 0x14, 0x5b, 0x0d, 0x73, 0x3f, 0x78, 0xb8, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x83, 0xbb, 0x1b, 0xea, 0xf8, 0x41, 0x2a, 0x5b, 0xf0, 0x86, 0x89, 0x5b, 0x83, 0x05, 0x0d, 0x53, 0x6b, 0x98, 0xfb, 0xc1, 0xd9, 0x83, 0x16, 0xdb, 0x06, 0x66, 0x0d, 0x73, 0x3f, 0x38, 0xbb, 0x61, 0xe2, 0x36, 0x68, 0x2c, 0x6e, 0x60, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0x67, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0x60, 0x6f, 0xdb, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0xb9, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x28, 0xa6, 0x6b, 0x10, 0x52, 0xca, 0x07, 0x67, 0x65, 0xa5, 0x0d, 0x16, 0x34, 0x4c, 0x6d, 0xd0, 0x18, 0xdb, 0xc0, 0x6a, 0x98, 0xfb, 0xc1, 0xc3, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0x1f, 0xdc, 0xdd, 0x30, 0x71, 0x6b, 0x28, 0xa6, 0xab, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0xf3, 0x20, 0xa4, 0x94, 0x37, 0x9c, 0x08, 0x1b, 0x34, 0x0e, 0x39, 0xb0, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xce, 0x67, 0xa9, 0x1b, 0xbe, 0x7e, 0x59, 0xc3, 0x8f, 0x30, 0x07, 0xa9, 0x6c, 0xc1, 0x1b, 0x2c, 0x94, 0x7d, 0x5a, 0xc5, 0x99, 0x83, 0x05, 0x19, 0x75, 0xb5, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x16, 0x41, 0x3a, 0x58, 0x90, 0x51, 0xb7, 0x86, 0x1f, 0x61, 0x06, 0x9e, 0x2e, 0x3c, 0xbc, 0x7c, 0x77, 0x48, 0x1d, 0x6c, 0x50, 0x10, 0xcc, 0x6e, 0x70, 0x8c, 0x39, 0xdb, 0x90, 0x3a, 0x38, 0x08, 0x4f, 0xd5, 0x83, 0x95, 0x74, 0xfa, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x9c, 0xcf, 0x52, 0x37, 0xcc, 0xfd, 0xe0, 0xf0, 0x41, 0x8b, 0x72, 0x03, 0x1b, 0x8a, 0xe9, 0x6a, 0x98, 0xa1, 0x0d, 0x95, 0x70, 0xc3, 0x89, 0xb0, 0xa1, 0x12, 0x6e, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x56, 0x89, 0x60, 0x1d, 0xa4, 0x99, 0x79, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x16, 0x2a, 0x53, 0x1d, 0xa4, 0xae, 0x79, 0x6f, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0x00, 0x2d, 0x1d, 0xa2, 0xb9, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0xb6, 0xce, 0x41, 0xea, 0x9a, 0xf7, 0xc1, 0xb9, 0xde, 0x60, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc5, 0xdf, 0x81, 0x83, 0x03, 0x68, 0xd2, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xba, 0x39, 0x6f, 0x90, 0x94, 0x16, 0xbc, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x6f, 0x78, 0x50, 0x72, 0x83, 0xe5, 0xc7, 0xdb, 0x07, 0xeb, 0x16, 0x91, 0x0f, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0xb5, 0x6e, 0xce, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0xe1, 0x14, 0x3b, 0x48, 0x4a, 0x0b, 0xde, 0xf0, 0x3c, 0xc9, 0x06, 0x6b, 0xdd, 0x9c, 0x37, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0x7f, 0xb0, 0x6e, 0x11, 0xf9, 0xe0, 0x00, 0x9a, 0xb4, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x35, 0x83, 0xce, 0x1b, 0x2c, 0xa0, 0xf2, 0xde, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0x3c, 0x28, 0xb9, 0xc1, 0xf2, 0xe3, 0xed, 0x0d, 0x6f, 0xeb, 0x1c, 0xac, 0xad, 0x74, 0x3e, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x0c, 0x3a, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xf8, 0xa2, 0xe6, 0x60, 0x01, 0x95, 0xf7, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x33, 0xe8, 0xbc, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x83, 0x86, 0xe3, 0x07, 0x0e, 0x0e, 0xa0, 0x49, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x9b, 0xe9, 0xbc, 0x86, 0x37, 0xee, 0x0e, 0x56, 0x91, 0x3a, 0x1f, 0x34, 0xc6, 0x3e, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xcd, 0x74, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xa0, 0xa8, 0xc8, 0x3c, 0x68, 0x37, 0x81, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xcd, 0x74, 0x3e, 0x68, 0xbd, 0x7f, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xcb, 0x57, 0x9d, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0xd2, 0x5d, 0xe7, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0x0f, 0x4a, 0x6e, 0xb0, 0xfc, 0x78, 0xfb, 0x60, 0xe9, 0x7e, 0xf0, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0x41, 0xc9, 0x0d, 0x96, 0x1f, 0x6f, 0x1f, 0x34, 0x1a, 0x3c, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x5f, 0x75, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0x60, 0x5d, 0xdc, 0xd1, 0x41, 0xa3, 0x1d, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xf9, 0xaa, 0xf3, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x58, 0xba, 0x1f, 0xbc, 0xa1, 0x91, 0x60, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xf9, 0xaa, 0xf3, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x8b, 0xbf, 0x03, 0x1b, 0x04, 0xa5, 0x77, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x84, 0xec, 0xbc, 0x86, 0x37, 0xee, 0x0e, 0x96, 0x55, 0x3b, 0x6f, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x1b, 0x1e, 0x94, 0xdc, 0x60, 0xf9, 0xf1, 0xf6, 0x41, 0x02, 0xec, 0xf0, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x08, 0xd9, 0x79, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0xe5, 0x8b, 0x47, 0x07, 0xed, 0x23, 0x11, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x45, 0xc8, 0xce, 0x1b, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x48, 0x80, 0x1d, 0x3e, 0x38, 0x80, 0x26, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x41, 0xb7, 0xf3, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0x58, 0x18, 0xbc, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0x41, 0xc9, 0x0d, 0x96, 0x1f, 0x6f, 0x6f, 0x78, 0x5b, 0xe7, 0x60, 0x4d, 0x8d, 0xf3, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0x41, 0xc9, 0x0d, 0x96, 0x1f, 0x6f, 0x6f, 0x78, 0x5b, 0xe7, 0x60, 0x61, 0xbc, 0xf3, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xa0, 0xdb, 0x79, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x55, 0x24, 0x3f, 0x07, 0x2d, 0x9e, 0x11, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x05, 0xdd, 0xce, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0xff, 0xa0, 0x6d, 0x37, 0x82, 0x83, 0xd6, 0x78, 0x08, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x82, 0x6e, 0xe7, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x1f, 0xb4, 0x61, 0x47, 0x70, 0xd0, 0xa2, 0x10, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xda, 0x3b, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0x95, 0x00, 0xcf, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x1b, 0x1e, 0x94, 0xdc, 0x60, 0xf9, 0xf1, 0xf6, 0x86, 0xb7, 0x75, 0x0e, 0xd6, 0x21, 0x3c, 0x1f, 0xb4, 0x5f, 0x42, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xb4, 0x77, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xf0, 0x3c, 0xc9, 0x41, 0xeb, 0x96, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xa5, 0xbd, 0xf3, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x68, 0xc7, 0x93, 0xe0, 0xa0, 0x35, 0x1e, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xd2, 0xde, 0xf9, 0xa0, 0x9d, 0x1f, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x73, 0x78, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xeb, 0x35, 0x9e, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x41, 0x53, 0x27, 0x04, 0x1b, 0x3e, 0x77, 0x19, 0x3c, 0xde, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x07, 0x25, 0x37, 0x58, 0x7e, 0xbc, 0xbd, 0xe1, 0x6d, 0x9d, 0x83, 0x85, 0x25, 0xcf, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x32, 0x87, 0xe7, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0x16, 0x40, 0x1f, 0x1d, 0x34, 0xa7, 0x4b, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0x39, 0x3c, 0xaf, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xe2, 0xef, 0xc0, 0x41, 0x6b, 0x3c, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x99, 0xc3, 0xf3, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x0f, 0x5a, 0x21, 0x26, 0x38, 0x68, 0x51, 0x88, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0x53, 0x9e, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x92, 0x9b, 0xe7, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0x83, 0x92, 0x1b, 0x2c, 0x3f, 0xde, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x21, 0x65, 0xb2, 0x86, 0x8f, 0xda, 0x0f, 0x56, 0x04, 0x3d, 0x77, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x4c, 0x79, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xf0, 0x2c, 0xde, 0x41, 0xe3, 0xe2, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x61, 0xca, 0xf3, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x0f, 0x1a, 0x51, 0x27, 0x38, 0x38, 0x80, 0x26, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x05, 0xd2, 0xf3, 0x86, 0x27, 0xee, 0x36, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0x0f, 0x4a, 0x6e, 0xb0, 0xfc, 0x78, 0x7b, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xde, 0xf4, 0x6b, 0xf8, 0xa8, 0xfd, 0x60, 0xbd, 0xd6, 0xf3, 0x1a, 0x3e, 0x6a, 0x3f, 0xfc, 0x50, 0xd3, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x02, 0xe9, 0x79, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x43, 0x06, 0xfc, 0xf0, 0xc4, 0xdd, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x81, 0xf4, 0xbc, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x83, 0x66, 0x14, 0x0a, 0x0e, 0x0e, 0xa0, 0x49, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x30, 0xf6, 0xbc, 0x86, 0x37, 0xee, 0x0e, 0x96, 0xb6, 0x3d, 0x6f, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x1b, 0x1e, 0x94, 0xdc, 0x60, 0xf9, 0xf1, 0xf6, 0x86, 0xb7, 0x75, 0x0e, 0x16, 0x73, 0x3d, 0x1f, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0xc6, 0x9e, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x58, 0x2d, 0x82, 0x74, 0xd0, 0x5e, 0x49, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x30, 0xf6, 0xbc, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x83, 0x76, 0x59, 0x0a, 0x0e, 0x0e, 0xa0, 0x49, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x85, 0xf7, 0xbc, 0x86, 0x37, 0xee, 0x0e, 0xd6, 0x17, 0x3e, 0x1f, 0x34, 0xc6, 0x4b, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xc2, 0x7b, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0x60, 0xe1, 0x0d, 0xd2, 0x41, 0xfb, 0x44, 0x05, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x15, 0xde, 0xf3, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x0f, 0x5a, 0x2e, 0x1e, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xfa, 0xc6, 0xe7, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x62, 0xf3, 0x79, 0x83, 0xb6, 0x4e, 0x0a, 0x36, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xeb, 0x97, 0x35, 0x58, 0x10, 0xb2, 0xb4, 0x41, 0x23, 0xdb, 0x03, 0x1b, 0x34, 0xb2, 0x3d, 0xb0, 0xe1, 0x8d, 0xbb, 0xe3, 0xf1, 0x41, 0x23, 0xdb, 0x03, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0xfa, 0xc6, 0xe7, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0x6f, 0xdc, 0x1d, 0x34, 0xa5, 0x55, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x37, 0x3e, 0xaf, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xda, 0x4e, 0xc1, 0x41, 0x6b, 0x3c, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x7d, 0xe3, 0xf3, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x0f, 0x82, 0xd2, 0x7b, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xcb, 0x48, 0x9f, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x42, 0xd9, 0xe7, 0x83, 0x66, 0xb8, 0x0a, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x65, 0xa4, 0xcf, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x7e, 0x84, 0x39, 0x68, 0xb4, 0xaf, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x23, 0x7d, 0xde, 0xa0, 0xd5, 0xb7, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x8c, 0xf4, 0xf9, 0xa0, 0xfd, 0xba, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xce, 0x7d, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xcb, 0x8d, 0x9f, 0x37, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0x0f, 0x4a, 0x6e, 0xb0, 0xfc, 0x78, 0x7b, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0x3e, 0x6a, 0x3f, 0x58, 0x60, 0xe1, 0xdc, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x38, 0xf7, 0x79, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x15, 0x6a, 0x48, 0x07, 0xcd, 0x51, 0x16, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xc5, 0xb9, 0xcf, 0x1b, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x68, 0x76, 0xb3, 0xe0, 0xe0, 0x00, 0x9a, 0xb4, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x55, 0xd5, 0xcf, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0x5d, 0xf8, 0xf3, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xaf, 0x5f, 0xd6, 0xa0, 0xa8, 0xc8, 0x3c, 0x4c, 0xe7, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0x3c, 0x28, 0xb9, 0x21, 0x75, 0x70, 0xd0, 0x2e, 0x4b, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x0d, 0xd0, 0xd2, 0x71, 0x68, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0x86, 0xb7, 0x75, 0x0e, 0x46, 0xb3, 0xc0, 0x86, 0xb7, 0x75, 0x0e, 0xd6, 0xb6, 0x3f, 0x1f, 0xbe, 0x9c, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xb4, 0x5b, 0x5c, 0x70, 0xd0, 0x2e, 0x4b, 0xc1, 0xe1, 0xcb, 0xc9, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0x55, 0xf5, 0xf3, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x37, 0x07, 0x0b, 0x03, 0x91, 0x0e, 0xda, 0xae, 0x2d, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0xaa, 0x9f, 0x37, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x03, 0xb4, 0x74, 0x18, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x0f, 0xda, 0x3b, 0x2e, 0x38, 0x38, 0x80, 0x26, 0x1d, 0x34, 0xa8, 0x53, 0xb0, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x35, 0xf2, 0xcf, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0x35, 0xff, 0xf3, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x0f, 0x1a, 0x01, 0x26, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xc8, 0x3f, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0x78, 0x5b, 0xe7, 0xa0, 0x8d, 0xf4, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x46, 0xfe, 0x79, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x9d, 0x6c, 0x82, 0x83, 0x03, 0x68, 0xd2, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0x1c, 0x40, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0x25, 0x14, 0xd0, 0x07, 0x4d, 0x59, 0x16, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0x0e, 0xa0, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x48, 0xd0, 0xda, 0x3c, 0x68, 0x2d, 0xc0, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x38, 0x80, 0x3e, 0x68, 0x41, 0xb5, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0x37, 0xa0, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0xfa, 0x14, 0xe8, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0x83, 0x92, 0x1b, 0x2c, 0x3f, 0xde, 0xde, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x39, 0x58, 0x25, 0x03, 0xbd, 0xe1, 0x6d, 0x9d, 0x83, 0xc5, 0x34, 0xd0, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0xea, 0x0d, 0xe8, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0x16, 0xf7, 0x22, 0x1d, 0x34, 0x56, 0x61, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x6f, 0x40, 0x6f, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0xff, 0xa0, 0x51, 0x0e, 0x83, 0x83, 0x03, 0x68, 0xd2, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xe7, 0x40, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0x85, 0x40, 0xd0, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xb5, 0x45, 0xd0, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0xcb, 0x8f, 0xb7, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0xba, 0x25, 0xe8, 0x0d, 0xda, 0x60, 0x28, 0x68, 0xc3, 0xe7, 0x2e, 0x1b, 0x2c, 0x9b, 0x82, 0xde, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x07, 0x25, 0x37, 0x58, 0x7e, 0xbc, 0xbd, 0xe1, 0x6d, 0x9d, 0x83, 0xd5, 0x57, 0xd0, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0xea, 0x1c, 0xe8, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0x0f, 0xe7, 0x1f, 0xb4, 0x7a, 0x63, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xe7, 0x40, 0xaf, 0xe1, 0x73, 0x97, 0x0d, 0xd6, 0x16, 0x41, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x1f, 0x34, 0xf9, 0x63, 0x70, 0xd0, 0x1a, 0x0f, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x9d, 0x03, 0xbd, 0xe1, 0x73, 0x97, 0x0d, 0x96, 0x4d, 0x41, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x1f, 0xb4, 0x8a, 0x64, 0x70, 0xd0, 0xa2, 0x10, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0x70, 0x41, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0xe5, 0x62, 0xd0, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0xf8, 0xa0, 0x51, 0x22, 0x83, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0x0f, 0x4a, 0x6e, 0xb0, 0xfc, 0x78, 0x7b, 0xc3, 0xdb, 0x3a, 0x07, 0xeb, 0xdf, 0xa0, 0x37, 0x7c, 0xee, 0x32, 0xb8, 0xbc, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0x0f, 0x4a, 0x6e, 0xb0, 0xfc, 0x78, 0x7b, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x88, 0xf5, 0x1b, 0xb4, 0xc1, 0x50, 0xb0, 0x86, 0x8f, 0xda, 0x0f, 0xd6, 0xef, 0x41, 0x77, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xe1, 0x82, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xa0, 0x2c, 0xc3, 0x3e, 0x68, 0x4d, 0xcd, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xe1, 0x82, 0x5e, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x61, 0x30, 0x83, 0x83, 0xd6, 0x78, 0x08, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x12, 0x2e, 0xe8, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0x7f, 0xd0, 0x0c, 0x9d, 0xc1, 0x86, 0x4e, 0x6a, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x25, 0x5c, 0xd0, 0x1b, 0x3e, 0x77, 0x19, 0x5c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x68, 0x6e, 0xcf, 0x60, 0x83, 0x91, 0xd9, 0xdb, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x0b, 0x42, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0xa5, 0x89, 0xd0, 0x1b, 0x34, 0xc6, 0x4b, 0x70, 0xd0, 0x7e, 0x09, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x5e, 0x10, 0x7a, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0xc3, 0x77, 0x2d, 0x07, 0xad, 0x95, 0x1a, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xf5, 0x82, 0xd0, 0x1b, 0xb4, 0x0a, 0x4d, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x0b, 0x42, 0x1f, 0xb4, 0xf3, 0x43, 0xb0, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0xe5, 0x90, 0xd0, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0xe5, 0x25, 0xf4, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x07, 0x25, 0x37, 0x58, 0x7e, 0xbc, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0xca, 0x26, 0xcc, 0x83, 0x06, 0x83, 0x0c, 0x36, 0x7c, 0xee, 0x32, 0x78, 0x7c, 0xd0, 0xda, 0x9d, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x1c, 0x12, 0x7a, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x92, 0x85, 0xfd, 0xa0, 0xad, 0x5e, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x1c, 0x12, 0x7a, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x1f, 0xb4, 0x4a, 0x6c, 0x70, 0xd0, 0x1a, 0x0f, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x0e, 0x09, 0xbd, 0xe1, 0x73, 0x97, 0xc1, 0xe3, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xf2, 0xa6, 0xc1, 0x41, 0x8b, 0x42, 0x04, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xad, 0x0a, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0x16, 0xc6, 0x42, 0x1f, 0x34, 0xc6, 0x4b, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x56, 0x85, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xe0, 0x3c, 0xd8, 0x71, 0xd0, 0xae, 0xb9, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xad, 0x0a, 0x7d, 0xd0, 0x9e, 0x54, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0xe4, 0x42, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0xe5, 0xbf, 0xd0, 0x1b, 0x34, 0xc6, 0x4b, 0x70, 0xd0, 0xe4, 0xb1, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x24, 0x17, 0x7a, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x03, 0x16, 0xdd, 0x41, 0xab, 0xfa, 0x06, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x49, 0x2e, 0xf4, 0x06, 0xad, 0x42, 0x13, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x25, 0xb9, 0xd0, 0x07, 0xad, 0x73, 0x1b, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x6d, 0x32, 0xf4, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0x06, 0x0d, 0x7d, 0xd0, 0x18, 0x2f, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x36, 0x19, 0x7a, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0xc3, 0x57, 0x38, 0x07, 0x2d, 0x4b, 0x1c, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xb5, 0xc9, 0xd0, 0x07, 0xed, 0x49, 0x15, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xe9, 0x35, 0xf4, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0xe6, 0x0d, 0xbd, 0x41, 0x5b, 0x6c, 0x06, 0x07, 0xed, 0x97, 0x10, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0xaf, 0xa1, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x58, 0x5c, 0x98, 0x74, 0xd0, 0xa2, 0xc9, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x7a, 0x0d, 0xbd, 0x41, 0xf3, 0x8a, 0x06, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xe9, 0x35, 0xf4, 0x41, 0x3b, 0x3f, 0x04, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x85, 0x0e, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0x16, 0xbc, 0x43, 0x1f, 0xb4, 0x86, 0x72, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x42, 0x87, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xa0, 0x50, 0xee, 0x3c, 0x68, 0xd7, 0xe7, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x42, 0x87, 0xde, 0xa0, 0x79, 0x45, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x0a, 0x1d, 0xfa, 0xa0, 0x9d, 0x1f, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xb4, 0x87, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x8b, 0xfa, 0xa1, 0x0f, 0x5a, 0x43, 0x39, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xda, 0x43, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xf8, 0x45, 0xe9, 0xa0, 0xd9, 0xaa, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xd2, 0x1e, 0x7a, 0x83, 0xe6, 0x15, 0x0d, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x4a, 0x7b, 0xe8, 0x83, 0x76, 0x7e, 0x08, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x90, 0x20, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0x2c, 0x5a, 0x88, 0x3e, 0x68, 0xe7, 0xd7, 0xe0, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x48, 0x10, 0xbd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0x41, 0x99, 0x77, 0x79, 0xd0, 0x20, 0xdb, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x48, 0x10, 0xbd, 0x41, 0x83, 0xd4, 0x06, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x21, 0x41, 0xf4, 0x41, 0xeb, 0xdc, 0x06, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x2d, 0x11, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0x16, 0x66, 0x44, 0x1f, 0x34, 0xc6, 0x4b, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x96, 0x88, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0x20, 0xe4, 0xd7, 0x0e, 0xda, 0x1b, 0x3c, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0x25, 0xa2, 0x0f, 0xda, 0x93, 0x2a, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x7a, 0x90, 0xe8, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x5e, 0x25, 0xfa, 0xa0, 0xa5, 0x53, 0x83, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0x3d, 0x48, 0xf4, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x37, 0x07, 0x4b, 0xaa, 0x93, 0x0e, 0x9a, 0xba, 0x3c, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0x41, 0xa2, 0x37, 0x68, 0x15, 0x9a, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x07, 0x89, 0x3e, 0x68, 0xe7, 0x87, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x6b, 0x65, 0xa2, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x6a, 0x9f, 0xe8, 0x0d, 0x1a, 0xe3, 0x25, 0xd8, 0xa0, 0xfd, 0x12, 0x82, 0x35, 0x7c, 0xee, 0x32, 0xb8, 0x7c, 0xd0, 0xd4, 0x09, 0xc1, 0x86, 0xcf, 0x5d, 0x06, 0x9f, 0x0f, 0x9a, 0x3a, 0x21, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xca, 0x44, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xb0, 0xa8, 0x3c, 0xe9, 0xa0, 0x31, 0xd7, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x56, 0x26, 0x7a, 0x83, 0x56, 0xa1, 0x09, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x5a, 0x99, 0xe8, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x5a, 0xfc, 0x1d, 0x38, 0x68, 0xd7, 0xd2, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x95, 0x89, 0x5e, 0xc3, 0xe7, 0x2e, 0x83, 0xcb, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc5, 0xdf, 0x81, 0x0d, 0x4d, 0xb8, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x6b, 0x65, 0xa2, 0x37, 0x7c, 0xee, 0x32, 0xf8, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x5a, 0xfc, 0x1d, 0xd8, 0xe0, 0xac, 0x7e, 0xde, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0x4b, 0x45, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0xc5, 0x5c, 0xd1, 0x07, 0x2d, 0x9d, 0x1a, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x8b, 0xa5, 0xa2, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x28, 0x0c, 0x55, 0x0f, 0x5a, 0xdb, 0x3e, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x8b, 0xa5, 0xa2, 0x37, 0x68, 0x15, 0x9a, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x96, 0x8a, 0x3e, 0x68, 0xe7, 0x87, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0xc8, 0xa2, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0xba, 0xb7, 0xe8, 0x0d, 0x1a, 0xe3, 0x25, 0xd8, 0xa0, 0xfd, 0x12, 0x82, 0x83, 0x26, 0x65, 0x0f, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x55, 0x64, 0xd1, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x9c, 0xf3, 0x97, 0x0e, 0x1a, 0x93, 0x3f, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0xc8, 0xa2, 0x37, 0x68, 0x15, 0x9a, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x22, 0x8b, 0xde, 0xa0, 0x89, 0xe2, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x8a, 0x2c, 0x7a, 0xc3, 0xe7, 0x2e, 0x83, 0xcb, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc5, 0xdf, 0x81, 0x83, 0xe6, 0x3d, 0x0d, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x76, 0x2f, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x2d, 0x8c, 0x3e, 0x68, 0xca, 0xb2, 0xe0, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xbb, 0x17, 0xbd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0xc1, 0xd1, 0x75, 0xf0, 0xa0, 0x01, 0x09, 0x84, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x76, 0x2f, 0xfa, 0xa0, 0x05, 0xd5, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x6a, 0x8c, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xeb, 0x35, 0xa3, 0x0f, 0x9a, 0xb2, 0x2c, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x35, 0x46, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xf8, 0xc5, 0xe5, 0xa0, 0xf9, 0x12, 0x84, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xaa, 0x31, 0xfa, 0xa0, 0x05, 0xd5, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x11, 0x8d, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xeb, 0x51, 0xa3, 0x37, 0x68, 0x5f, 0xbd, 0x60, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0xcb, 0x8f, 0xb7, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x48, 0x99, 0xac, 0xe1, 0xa3, 0xf6, 0x83, 0x95, 0xb5, 0xd1, 0x1d, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x6b, 0x44, 0xa3, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x58, 0x85, 0xa4, 0x74, 0xd0, 0x6c, 0x0e, 0xc2, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x23, 0x1a, 0xbd, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x3b, 0xd9, 0x04, 0x07, 0xad, 0xf1, 0x10, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x35, 0xa2, 0xd1, 0x1b, 0x3e, 0x77, 0x19, 0x3c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x68, 0x42, 0x08, 0xe1, 0xa0, 0x45, 0x21, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xff, 0x8d, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x2b, 0x8d, 0xa3, 0x0f, 0x5a, 0x3a, 0x35, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0xff, 0x46, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0x70, 0x6a, 0x38, 0x3a, 0x68, 0x56, 0x0c, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xff, 0x8d, 0xde, 0xa0, 0x55, 0x68, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xfc, 0x37, 0xfa, 0xa0, 0x9d, 0x1f, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x71, 0x8e, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xcb, 0xa9, 0xa3, 0x0f, 0x5a, 0x3a, 0x35, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x38, 0x47, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0x70, 0x62, 0xbf, 0x39, 0x68, 0x36, 0x0f, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x71, 0x8e, 0xde, 0xa0, 0x55, 0x68, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xc6, 0x39, 0xfa, 0xa0, 0x9d, 0x1f, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xe4, 0x8e, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x6b, 0xc6, 0xa3, 0x37, 0x68, 0x8c, 0x97, 0x60, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x07, 0xad, 0x5e, 0x16, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0xb9, 0xa3, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0xbc, 0xdb, 0x73, 0xd0, 0x2c, 0x24, 0xc2, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xc8, 0x1d, 0xbd, 0x41, 0xab, 0xd0, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x21, 0x77, 0xf4, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x4b, 0xac, 0x05, 0x07, 0x2d, 0x0a, 0x11, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xe5, 0x7b, 0xf4, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0x64, 0x1f, 0xbd, 0x41, 0xfb, 0xea, 0x05, 0x1b, 0xb4, 0x5f, 0x42, 0xb0, 0xe1, 0x73, 0x97, 0xc1, 0xe5, 0x83, 0x16, 0x7c, 0x10, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x95, 0xef, 0xd1, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x24, 0xe1, 0x25, 0x1d, 0xb4, 0xd4, 0x8a, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xbe, 0x47, 0x6f, 0xd0, 0x1e, 0x14, 0xc2, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xf9, 0x1e, 0xbd, 0x41, 0x13, 0xc5, 0x07, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xe5, 0x7b, 0xf4, 0x86, 0xcf, 0x5d, 0x06, 0x97, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x0b, 0x59, 0x08, 0x07, 0xcd, 0x7b, 0x1a, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x51, 0x81, 0xf4, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0xc0, 0x20, 0x7d, 0xd0, 0x10, 0xec, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xa8, 0x40, 0x7a, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x55, 0xbd, 0x4a, 0x07, 0x2d, 0x39, 0x23, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x45, 0x05, 0xd2, 0x1b, 0xb4, 0x0a, 0x4d, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0x15, 0x48, 0x6f, 0xd0, 0x44, 0xf1, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x54, 0x20, 0xbd, 0x41, 0x73, 0xcb, 0x07, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x51, 0x81, 0xf4, 0x41, 0x93, 0xd1, 0x07, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x3c, 0x21, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0xd6, 0x69, 0x48, 0x1f, 0x34, 0x44, 0x7f, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x9e, 0x90, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xa0, 0xe8, 0x34, 0x3e, 0x68, 0x6f, 0x1d, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x9e, 0x90, 0xde, 0xa0, 0x55, 0x68, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x78, 0x42, 0x7a, 0x83, 0x26, 0x8a, 0x0f, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xe2, 0x09, 0xe9, 0x83, 0x66, 0x10, 0x10, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x40, 0x44, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0x2c, 0x46, 0x91, 0xde, 0xa0, 0x7d, 0xf5, 0x82, 0x0d, 0xda, 0x2f, 0x21, 0xd8, 0xf0, 0xb9, 0xcb, 0xe0, 0xf2, 0x41, 0xab, 0x97, 0x05, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x02, 0x11, 0xe9, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0xca, 0x92, 0xf7, 0x83, 0x06, 0x0b, 0x12, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x02, 0x11, 0xe9, 0x0d, 0xda, 0x83, 0x42, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0x44, 0xa4, 0x37, 0x68, 0xa2, 0xf8, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x10, 0x91, 0xde, 0xf0, 0xb9, 0xcb, 0xe0, 0xf2, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x89, 0xb5, 0xe0, 0xa0, 0x79, 0x4f, 0x83, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xbd, 0x91, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xab, 0x7c, 0xa4, 0x0f, 0x9a, 0xdc, 0x41, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0xde, 0x48, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xb8, 0xa4, 0x0e, 0x9a, 0x33, 0x49, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0x6f, 0xa4, 0x37, 0x68, 0x0f, 0x0a, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xbd, 0x91, 0x3e, 0x68, 0xd9, 0x0a, 0x61, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0x8a, 0xa4, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x72, 0x28, 0xe9, 0x83, 0xd6, 0x50, 0x0e, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x55, 0x45, 0xd2, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0xac, 0x0e, 0x58, 0x3a, 0x68, 0xa4, 0x27, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x2a, 0x92, 0xde, 0xa0, 0x79, 0x45, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xaa, 0x48, 0xfa, 0xa0, 0x9d, 0x1f, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xc5, 0x92, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x6b, 0xc7, 0xa4, 0x0f, 0x1a, 0xe3, 0x25, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0x62, 0x49, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xf8, 0x38, 0xea, 0xa0, 0x19, 0xaa, 0x84, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x14, 0x4b, 0xfa, 0xa0, 0x3d, 0xa9, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x57, 0x93, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x0b, 0xec, 0xa4, 0x0f, 0x5a, 0x3a, 0x35, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xab, 0x49, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xb0, 0x20, 0x64, 0xe9, 0xa0, 0xf9, 0xb3, 0x84, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x5e, 0x4d, 0x7a, 0x83, 0x56, 0xa1, 0x09, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x7a, 0x35, 0xe9, 0x83, 0x76, 0x7e, 0x08, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xb8, 0x4f, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x46, 0x94, 0x3e, 0x68, 0xe9, 0xd4, 0xe0, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xdc, 0x27, 0xbd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0xe1, 0xdf, 0x9c, 0x83, 0x06, 0xfe, 0x12, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xe2, 0x3e, 0xe9, 0x0d, 0x5a, 0x85, 0x26, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x8b, 0xfb, 0xa4, 0x0f, 0xda, 0xf9, 0x21, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x0a, 0x48, 0xe9, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x64, 0x53, 0xfa, 0xa0, 0x31, 0x5e, 0x82, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0x05, 0xa4, 0xf4, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x37, 0x07, 0x6b, 0x80, 0x96, 0x0e, 0x9a, 0xae, 0x4c, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x2b, 0x20, 0xa5, 0x0f, 0xda, 0x93, 0x2a, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x72, 0x51, 0xe9, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x34, 0x56, 0xfa, 0xa0, 0x31, 0x5e, 0x82, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0xb9, 0xa8, 0xf4, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x37, 0x07, 0x49, 0x0b, 0x46, 0x07, 0x4d, 0xa7, 0x26, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xe5, 0xa2, 0xd2, 0x07, 0xed, 0x49, 0x15, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x55, 0xae, 0xf4, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0x5f, 0x2c, 0x7d, 0xd0, 0xd2, 0xa9, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x2a, 0x57, 0x7a, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x63, 0x9b, 0xe3, 0x41, 0xcb, 0xbd, 0x09, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x55, 0xae, 0xf4, 0x06, 0xad, 0x42, 0x13, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x55, 0xb9, 0xd2, 0x07, 0xed, 0xfc, 0x10, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x65, 0xb3, 0xf4, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0xd5, 0x2d, 0x7d, 0xd0, 0xd2, 0xa9, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xb2, 0x59, 0x7a, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0xc3, 0xd7, 0x2f, 0x07, 0x2d, 0x53, 0x27, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x95, 0xcd, 0xd2, 0x1b, 0xb4, 0x0a, 0x4d, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x36, 0x4b, 0x1f, 0xb4, 0xf3, 0x43, 0xb0, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x95, 0xe4, 0xd2, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0xf5, 0xbc, 0xf4, 0x41, 0x6b, 0x28, 0x07, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x4a, 0x72, 0xe9, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0x7f, 0xd1, 0x1c, 0xb4, 0xb9, 0x9e, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x92, 0x4b, 0x6f, 0xd0, 0xbc, 0xa2, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x49, 0x2e, 0x7d, 0xd0, 0xce, 0x0f, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xec, 0x4b, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0xb5, 0x07, 0xd3, 0x07, 0x8d, 0xf1, 0x12, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x2b, 0xf6, 0xa5, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x58, 0xd6, 0xb8, 0x74, 0xd0, 0x9a, 0x80, 0xc2, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xb1, 0x2f, 0x7d, 0xd0, 0x9e, 0x54, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x3d, 0x4c, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0x95, 0x1b, 0xd3, 0x07, 0x8d, 0xf1, 0x12, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0x1e, 0xa6, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x58, 0xd8, 0xb9, 0x74, 0xd0, 0x9a, 0x85, 0xc2, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xf7, 0x30, 0x7d, 0xd0, 0x9e, 0x54, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x8d, 0x4c, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0xf5, 0x2d, 0xd3, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x1b, 0x1e, 0x94, 0xdc, 0x60, 0xf9, 0xf1, 0xf6, 0x86, 0xb7, 0x75, 0x0e, 0x56, 0xd7, 0x4c, 0x1f, 0xb4, 0x5f, 0x42, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x1a, 0x99, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xf0, 0xb9, 0xcb, 0x41, 0x6b, 0x2a, 0x0a, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xd5, 0xc8, 0xf4, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x68, 0x37, 0x46, 0xe1, 0xa0, 0x35, 0x1e, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x6a, 0x64, 0xfa, 0xa0, 0x9d, 0x1f, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xe6, 0x99, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xeb, 0x92, 0xa6, 0x0f, 0x1a, 0xe3, 0x25, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xf3, 0x4c, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0x90, 0x7a, 0x51, 0x7c, 0xd0, 0x7c, 0x93, 0xc2, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xcd, 0x33, 0x7d, 0xd0, 0x9e, 0x54, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0x44, 0x4d, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0xc5, 0x5c, 0xd3, 0x07, 0x6d, 0xb1, 0x19, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0xa2, 0xa6, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x28, 0x04, 0x53, 0x0f, 0x5a, 0x0f, 0x53, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0xa2, 0xa6, 0x37, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x06, 0x33, 0x38, 0x38, 0x80, 0x26, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x25, 0xd9, 0xf4, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0xfb, 0x36, 0x7d, 0xd0, 0x16, 0x9b, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x92, 0x6c, 0x7a, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0xc3, 0x47, 0xed, 0x07, 0x2d, 0xe4, 0x29, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x95, 0x64, 0xd3, 0x07, 0x4d, 0xbd, 0x29, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xbd, 0xdd, 0xf4, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0x5b, 0x38, 0x7d, 0xd0, 0xd2, 0xa9, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xde, 0x6e, 0x7a, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x25, 0xf5, 0x4b, 0x07, 0x2d, 0x33, 0x2a, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xf5, 0x76, 0xd3, 0x1b, 0xb4, 0x0a, 0x4d, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xdb, 0x4d, 0x1f, 0xb4, 0xf3, 0x43, 0xb0, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x75, 0x8d, 0xd3, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0x0d, 0xe7, 0xf4, 0x41, 0x4b, 0xa7, 0x06, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0xba, 0xc6, 0xe9, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0x6f, 0xd9, 0x1d, 0xb4, 0x3d, 0xaa, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x35, 0x4e, 0x6f, 0xd0, 0x2a, 0x34, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xd7, 0x38, 0x7d, 0xd0, 0xce, 0x0f, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x8d, 0x4e, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0xb5, 0xb3, 0xd3, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x1b, 0x1e, 0x94, 0xdc, 0x60, 0xf9, 0xf1, 0xf6, 0x86, 0xb7, 0x75, 0x0e, 0x96, 0xef, 0x4e, 0x6f, 0xd0, 0x7e, 0x09, 0xc1, 0x1a, 0x3e, 0x77, 0x19, 0x5c, 0xde, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x07, 0x25, 0x37, 0x58, 0x7e, 0xbc, 0xbd, 0xe1, 0x6d, 0x9d, 0x83, 0xb5, 0xc5, 0xd3, 0x07, 0xed, 0xd3, 0x1e, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0x46, 0xa7, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x28, 0xbb, 0x64, 0x0f, 0x5a, 0xd5, 0x55, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0x46, 0xa7, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x41, 0xfb, 0xc1, 0x0a, 0x07, 0xad, 0xf1, 0x10, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x75, 0xa3, 0xd3, 0x1b, 0x34, 0x51, 0x7c, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x8d, 0x4e, 0xaf, 0xe1, 0x73, 0x97, 0xc1, 0xe5, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x83, 0xd6, 0x94, 0x15, 0x0e, 0x1a, 0x76, 0x3e, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0x46, 0xa7, 0x0f, 0x9a, 0x8c, 0x3e, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x5a, 0xe6, 0xe9, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x8e, 0x7b, 0x7a, 0x83, 0x36, 0x79, 0x15, 0x0e, 0xda, 0x2f, 0x21, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x32, 0x4f, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0x78, 0x7c, 0xe4, 0xa0, 0x29, 0x79, 0x85, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x96, 0x79, 0x7a, 0x83, 0xc6, 0xaf, 0x15, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x5a, 0xe6, 0xe9, 0x83, 0x76, 0x7e, 0x08, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xbc, 0x7c, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0x2c, 0xa5, 0x9f, 0x5e, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0x3e, 0xb1, 0xd9, 0xa0, 0xfd, 0xdc, 0x82, 0x0d, 0x1f, 0xe4, 0x6c, 0xd0, 0x88, 0x70, 0xc1, 0x6a, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0xb0, 0x5c, 0x70, 0x90, 0x90, 0xde, 0xbd, 0xe1, 0x73, 0x97, 0xc1, 0xe3, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0x41, 0xbb, 0xc5, 0x05, 0x07, 0x8d, 0x06, 0x0f, 0x1c, 0x24, 0x5e, 0x77, 0x1f, 0x34, 0xa2, 0x5c, 0x70, 0xd0, 0x7e, 0x09, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xbc, 0x7c, 0x7a, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x95, 0x48, 0x4c, 0x07, 0x0d, 0x29, 0x2c, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xe5, 0xe5, 0xd3, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x06, 0x68, 0xe9, 0xd0, 0x48, 0x70, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x5a, 0xdb, 0x29, 0xd8, 0x60, 0x78, 0x51, 0xb4, 0xe1, 0x73, 0x97, 0xc1, 0xe3, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xe2, 0xef, 0xc0, 0x06, 0xc3, 0x74, 0xa2, 0x83, 0x06, 0xe2, 0x0a, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xf2, 0xf2, 0xe9, 0x83, 0x76, 0x7e, 0x08, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x20, 0x81, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0x2c, 0xb9, 0xa0, 0x3e, 0x68, 0x84, 0x61, 0xe1, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x90, 0x40, 0xbd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0xc1, 0xb9, 0x70, 0xe1, 0xa0, 0xc1, 0x9f, 0x85, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x20, 0x81, 0x7a, 0x83, 0x36, 0x52, 0x16, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x82, 0x04, 0xea, 0x83, 0x76, 0x7e, 0x08, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xd8, 0x83, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0x2c, 0x67, 0xa1, 0xde, 0xa0, 0xad, 0x93, 0x82, 0x83, 0xf6, 0x4b, 0x08, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0xc5, 0x1e, 0xd4, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0xac, 0xf4, 0x63, 0x3a, 0x68, 0xd0, 0x6a, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xf6, 0xa0, 0xde, 0xa0, 0xd5, 0xb7, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xd8, 0x83, 0xfa, 0xa0, 0x9d, 0x1f, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xa5, 0xa1, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xcb, 0x86, 0xa8, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0xe1, 0x43, 0x98, 0x83, 0xf6, 0x4b, 0x08, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0xa5, 0x34, 0xd4, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x2c, 0x87, 0x64, 0x3a, 0x68, 0xd6, 0x6d, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xa5, 0xa1, 0x5e, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x21, 0xcc, 0x06, 0x0b, 0x65, 0x9f, 0x36, 0x68, 0xa6, 0x73, 0x60, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x5a, 0x00, 0x1d, 0xd8, 0x60, 0x6d, 0x4c, 0xde, 0xa1, 0x91, 0xe0, 0x06, 0x05, 0xc1, 0xec, 0x06, 0xad, 0xf1, 0x10, 0x6c, 0x68, 0x24, 0x78, 0x10, 0x9e, 0xaa, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x29, 0x0d, 0xf5, 0x41, 0x3b, 0x3f, 0x04, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xcd, 0x44, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0x56, 0x72, 0x51, 0xaf, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0xc3, 0x83, 0x37, 0x07, 0x8d, 0xd5, 0x1f, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0x99, 0xa8, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x58, 0xb7, 0xca, 0x74, 0xd0, 0xfe, 0xe4, 0xc2, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xcd, 0x44, 0xbd, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0x7c, 0xfd, 0xb2, 0xe1, 0xc1, 0x9b, 0x0d, 0x16, 0xca, 0x3e, 0x6d, 0xd0, 0x4c, 0xe7, 0xc0, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0xb4, 0x00, 0x3a, 0xb0, 0x86, 0x1f, 0x61, 0x06, 0x9e, 0x2e, 0x3c, 0xd4, 0xfc, 0x43, 0x23, 0xc1, 0x83, 0x76, 0x0f, 0x17, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x6a, 0x26, 0xea, 0x0d, 0x9a, 0x28, 0x3e, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0x99, 0xa8, 0x0f, 0x9a, 0x41, 0x40, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x3a, 0x33, 0xea, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0xc6, 0x8e, 0xfa, 0xa0, 0xa5, 0x53, 0x83, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0x9d, 0x19, 0xf5, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x37, 0x07, 0x8b, 0x8c, 0x99, 0x0e, 0x9a, 0xd6, 0x5d, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0xcc, 0xa8, 0x37, 0x68, 0x15, 0x9a, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x33, 0xa3, 0x3e, 0x68, 0xe7, 0x87, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0xfb, 0xa8, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x5a, 0x46, 0xea, 0x0d, 0x5a, 0xaf, 0x5c, 0x38, 0x68, 0x2c, 0xf6, 0xe0, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xdf, 0x47, 0xbd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0xc1, 0x32, 0x6b, 0xa6, 0x83, 0xc6, 0xa3, 0x17, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xfa, 0x3e, 0xea, 0x0d, 0xda, 0x1d, 0x5d, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0xfb, 0xa8, 0x37, 0x68, 0xa2, 0xf8, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xef, 0xa3, 0xde, 0xa0, 0xb9, 0xe5, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xbe, 0x8f, 0xfa, 0xa0, 0xc9, 0xe8, 0x83, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xb4, 0xa4, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xab, 0x4a, 0xa9, 0x0f, 0x5a, 0x3a, 0x35, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x5a, 0x52, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xb0, 0x16, 0x9d, 0xe9, 0xa0, 0x19, 0xf8, 0x85, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xd2, 0x92, 0x7a, 0x83, 0x56, 0xa1, 0x09, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x4a, 0x4b, 0xea, 0x83, 0x76, 0x7e, 0x08, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xa2, 0x95, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0xe6, 0xa5, 0xde, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0x3c, 0x28, 0xb9, 0xc1, 0xf2, 0xe3, 0xed, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0x35, 0xc5, 0xd4, 0x07, 0xad, 0x7d, 0x18, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x2b, 0x5a, 0xa9, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x58, 0x8d, 0xcf, 0x74, 0xd0, 0xd0, 0x01, 0xc3, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xd1, 0x4a, 0xbd, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x83, 0x06, 0x1d, 0x18, 0x0e, 0x0e, 0xa0, 0x49, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xba, 0x4c, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0x96, 0x6b, 0x53, 0x1f, 0x34, 0x29, 0x89, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x5d, 0xa6, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0x20, 0xc9, 0x80, 0xf0, 0xa0, 0x5d, 0x14, 0x86, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x74, 0x99, 0x7a, 0x83, 0x56, 0xa1, 0x09, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xd2, 0x65, 0xea, 0x83, 0xf6, 0x46, 0x11, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x52, 0x9c, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x92, 0xa7, 0x3e, 0x68, 0x8c, 0x97, 0xe0, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x29, 0x4e, 0xbd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0xc1, 0xd2, 0x8f, 0xa6, 0x83, 0x86, 0x7f, 0x18, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x4a, 0x71, 0xea, 0x83, 0xf6, 0xa4, 0x0a, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x42, 0x9f, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x20, 0xa8, 0xde, 0xa0, 0x2d, 0x36, 0x83, 0x83, 0xc6, 0x62, 0x0f, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x15, 0xfa, 0xd4, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x2c, 0x7e, 0x69, 0x3a, 0x68, 0x78, 0x8a, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xd0, 0xa7, 0xde, 0xa0, 0x79, 0x45, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x42, 0x9f, 0x7a, 0x83, 0x26, 0x8a, 0x0f, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x0a, 0x7d, 0xea, 0x0d, 0x9a, 0x5b, 0x3e, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x2b, 0xf4, 0xa9, 0x0f, 0x9a, 0x8c, 0x3e, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x02, 0x87, 0xea, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x98, 0xa3, 0xfa, 0xa0, 0x49, 0x49, 0x84, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0x81, 0x43, 0xf5, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x37, 0x07, 0x2b, 0x84, 0x9a, 0x0e, 0x9a, 0x90, 0x63, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0x1c, 0xaa, 0x37, 0x68, 0x15, 0x9a, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x70, 0xa8, 0x3e, 0x68, 0x6f, 0x14, 0x61, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0x49, 0xaa, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x92, 0x98, 0xea, 0x83, 0xd6, 0x50, 0x0e, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x85, 0x24, 0xd5, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0xac, 0x91, 0x6a, 0x3a, 0x68, 0x24, 0x91, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x24, 0xa9, 0xde, 0xa0, 0x79, 0x45, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x90, 0xa4, 0xfa, 0xa0, 0x9d, 0x1f, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xc7, 0xa9, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x0b, 0x8b, 0xaa, 0x0f, 0x5a, 0x43, 0x39, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0xe3, 0x54, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0x50, 0xda, 0x5b, 0x1e, 0x34, 0x03, 0xca, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0xe3, 0x54, 0x6f, 0xd0, 0xbc, 0xa2, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x8e, 0x53, 0x7d, 0xd0, 0xce, 0x0f, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x34, 0x55, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0x55, 0x5c, 0xd5, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0xf8, 0xa0, 0x05, 0x1f, 0x84, 0x83, 0xf6, 0x4b, 0x08, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x15, 0x4d, 0xd5, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0xac, 0x8d, 0x6b, 0x3a, 0x68, 0xe5, 0x96, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x68, 0xaa, 0x5e, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x85, 0x2c, 0x84, 0x83, 0xd6, 0x78, 0x08, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x8a, 0xa6, 0xea, 0x83, 0x76, 0x7e, 0x08, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x1e, 0xad, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0xc1, 0xab, 0xde, 0xa0, 0x2d, 0x16, 0x85, 0x83, 0xc6, 0xea, 0x0f, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0xf5, 0x68, 0xd5, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x14, 0xa4, 0xb1, 0x07, 0x0d, 0x50, 0x33, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xf5, 0x68, 0xd5, 0x1b, 0xb4, 0xf0, 0xa3, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xa3, 0x55, 0x6f, 0xd0, 0x44, 0xf1, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x8f, 0x56, 0x7d, 0xd0, 0x0c, 0x02, 0xc2, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x07, 0x56, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0x85, 0x8e, 0xd5, 0x07, 0x8d, 0x57, 0x33, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0x03, 0xab, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x58, 0x80, 0xd9, 0x74, 0xd0, 0xca, 0x3b, 0xc3, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x1f, 0x58, 0xbd, 0x41, 0x0b, 0x3f, 0x0a, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x7d, 0x60, 0xf5, 0x06, 0x4d, 0x14, 0x1f, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xf5, 0x81, 0xd5, 0x07, 0xcd, 0x20, 0x20, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x91, 0x65, 0xf5, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0x50, 0x5a, 0xbd, 0x41, 0xfb, 0xea, 0x05, 0x07, 0x8d, 0xd5, 0x1f, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x8b, 0x2c, 0xab, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x28, 0xfa, 0x74, 0x0f, 0x5a, 0x4a, 0x68, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x8b, 0x2c, 0xab, 0x37, 0x68, 0x0f, 0x0a, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xb2, 0xac, 0xde, 0xa0, 0x89, 0xe2, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xc8, 0xb2, 0xfa, 0xa0, 0x19, 0x04, 0x84, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x76, 0xad, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xeb, 0x7b, 0xab, 0x37, 0x68, 0x5f, 0xbd, 0xe0, 0xa0, 0xb1, 0xd8, 0x83, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0xb1, 0x6b, 0xf5, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x37, 0x07, 0xc7, 0xb1, 0x89, 0x83, 0xe6, 0x48, 0x1a, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x62, 0xd7, 0xea, 0x0d, 0xda, 0x83, 0x42, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x8b, 0x5d, 0xab, 0x37, 0x68, 0xa2, 0xf8, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x76, 0xad, 0xde, 0xa0, 0xb9, 0xe5, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xd8, 0xb5, 0xfa, 0xa0, 0xc9, 0xe8, 0x83, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x3e, 0xae, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xab, 0xa6, 0xab, 0x0f, 0x5a, 0x3a, 0x35, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0x1f, 0x57, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0x78, 0x50, 0xf2, 0xa0, 0x59, 0xa1, 0x86, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xf8, 0xb8, 0x7a, 0x83, 0x56, 0xa1, 0x09, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xe2, 0xe3, 0xea, 0x83, 0x76, 0x7e, 0x08, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x52, 0xbb, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0x2c, 0x31, 0xaf, 0x3e, 0x68, 0xe9, 0xd4, 0xe0, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xa9, 0x5d, 0xbd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0xc1, 0xd1, 0x86, 0xef, 0xa0, 0xc1, 0xac, 0x86, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x52, 0xbb, 0x7a, 0x83, 0x56, 0xa1, 0x09, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x4a, 0xed, 0xea, 0x83, 0x76, 0x7e, 0x08, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xb8, 0xbd, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0x2c, 0xe4, 0xaf, 0x3e, 0x68, 0xe9, 0xd4, 0xe0, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xdc, 0x5e, 0xbd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0x41, 0x29, 0x21, 0x7e, 0xd0, 0x20, 0x5c, 0xc3, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xdc, 0x5e, 0xbd, 0x41, 0xab, 0xd0, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x71, 0x7b, 0xf5, 0x41, 0x3b, 0x3f, 0x04, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x41, 0x60, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0x56, 0x4b, 0x58, 0x6f, 0xd0, 0x16, 0x8b, 0xc2, 0x06, 0x2d, 0xfb, 0x12, 0x1c, 0x34, 0x28, 0x7b, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x20, 0xb0, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xa0, 0xe8, 0xa0, 0x3d, 0x68, 0xef, 0xb0, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x20, 0xb0, 0xde, 0xa0, 0x85, 0x1f, 0x85, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x82, 0xc0, 0x7a, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x76, 0xb2, 0x09, 0x0e, 0xda, 0xb5, 0x34, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x2b, 0x08, 0xac, 0x37, 0x68, 0x6e, 0xf9, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x20, 0xb0, 0x3e, 0x68, 0x32, 0xfa, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x8b, 0x3d, 0xac, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x42, 0x17, 0xeb, 0x83, 0x96, 0x4e, 0x0d, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0xc5, 0x1e, 0xd6, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x3e, 0xb1, 0x39, 0x68, 0x44, 0xb5, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xf6, 0xb0, 0xde, 0xa0, 0x55, 0x68, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xd8, 0xc3, 0xfa, 0xa0, 0x9d, 0x1f, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xae, 0xb1, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xcb, 0x85, 0xac, 0x0f, 0x9a, 0xb2, 0x2c, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0xd7, 0x58, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xb0, 0xce, 0xc3, 0xe9, 0xa0, 0x79, 0xe0, 0x86, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xb8, 0xc6, 0xfa, 0xa0, 0x05, 0xd5, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x55, 0xb2, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x8b, 0xae, 0xac, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0x3c, 0x28, 0xb9, 0xc1, 0xf2, 0xe3, 0xed, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x7a, 0xd3, 0x6f, 0xd0, 0x06, 0x43, 0xc1, 0x1a, 0x3e, 0x6a, 0x3f, 0x58, 0x40, 0x66, 0xdd, 0x41, 0x63, 0xf5, 0x07, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x52, 0x25, 0xeb, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0x56, 0xba, 0x38, 0x1d, 0x34, 0x4f, 0xdd, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0x2a, 0x59, 0xaf, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x83, 0x86, 0xb8, 0x1b, 0x0e, 0x5a, 0xe3, 0x21, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0x95, 0xac, 0x37, 0x68, 0xa2, 0xf8, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x55, 0xb2, 0x3e, 0x68, 0x06, 0x01, 0x61, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0xdc, 0xac, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x0a, 0x3f, 0xeb, 0x83, 0x96, 0x4e, 0x0d, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x55, 0x6e, 0xd6, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0xac, 0xc2, 0x72, 0x3a, 0x68, 0xdc, 0xbf, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x72, 0xb3, 0xde, 0xa0, 0x55, 0x68, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xca, 0xcd, 0xfa, 0xa0, 0x9d, 0x1f, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x2e, 0xb4, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xeb, 0x25, 0xad, 0x0f, 0x9a, 0xb2, 0x2c, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x17, 0x5a, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xf8, 0x95, 0xec, 0xa0, 0xf9, 0x0a, 0x87, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xba, 0xd0, 0xfa, 0xa0, 0x05, 0xd5, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xd1, 0xb4, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xeb, 0x52, 0xad, 0x37, 0x68, 0x5f, 0xbd, 0x60, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0xcb, 0x8f, 0xb7, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x48, 0x99, 0xac, 0xe1, 0xa3, 0xf6, 0x83, 0xc5, 0xb5, 0xd6, 0x1d, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x6b, 0x34, 0xad, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x08, 0xd2, 0xd3, 0x83, 0x66, 0x53, 0x1c, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x1a, 0x4d, 0xeb, 0x0d, 0xda, 0x83, 0x42, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x6b, 0x34, 0xad, 0x37, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0x7f, 0xd0, 0x84, 0x8c, 0xc3, 0x41, 0x8b, 0x42, 0x04, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x01, 0x6c, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0xd6, 0x38, 0x5b, 0x1f, 0x34, 0x44, 0x7f, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x00, 0xb6, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xf0, 0x41, 0xce, 0x41, 0x3b, 0x4f, 0x0e, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x05, 0xb0, 0xf5, 0x06, 0xad, 0x42, 0x13, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x15, 0xc0, 0xd6, 0x1b, 0x34, 0x51, 0x7c, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x00, 0x5b, 0x1f, 0x34, 0x83, 0x80, 0xb0, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x75, 0xd5, 0xd6, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0x81, 0xb8, 0xf5, 0x41, 0x43, 0xf4, 0x07, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0xba, 0x6a, 0xeb, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0x8a, 0x1d, 0xcd, 0x83, 0x36, 0xd2, 0x1c, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xba, 0x6a, 0xeb, 0x0d, 0x5a, 0x85, 0x26, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0xaa, 0xad, 0x37, 0x68, 0xa2, 0xf8, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xab, 0xb6, 0x3e, 0x68, 0x06, 0x01, 0x61, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x2b, 0xd3, 0xad, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x6a, 0x7c, 0xeb, 0x83, 0x56, 0x16, 0x1a, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x95, 0xe9, 0xd6, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x14, 0x03, 0xb2, 0x07, 0x8d, 0x0c, 0x3a, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x95, 0xe9, 0xd6, 0x1b, 0xb4, 0x07, 0x85, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xa6, 0x5b, 0x6f, 0xd0, 0x44, 0xf1, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x99, 0x6e, 0x7d, 0xd0, 0x0c, 0x02, 0xc2, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0x01, 0x5c, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0x75, 0x0d, 0xd7, 0x07, 0x2d, 0x9d, 0x1a, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0xcb, 0x00, 0xae, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0xbc, 0x9b, 0x77, 0xd0, 0x4a, 0xa7, 0xc3, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x06, 0x70, 0xbd, 0x41, 0xab, 0xd0, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x19, 0xc0, 0xf5, 0x41, 0x3b, 0x3f, 0x04, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x4b, 0x71, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0x16, 0x87, 0x5c, 0x1f, 0xb4, 0x74, 0x6a, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xa5, 0xb8, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xa0, 0xe0, 0xc3, 0x3c, 0x68, 0x7f, 0xd6, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xa5, 0xb8, 0xde, 0xa0, 0x55, 0x68, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x96, 0xe2, 0xfa, 0xa0, 0x9d, 0x1f, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x4a, 0xb9, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x2b, 0x70, 0xae, 0x37, 0x68, 0x5f, 0xbd, 0x60, 0x83, 0xf6, 0x4b, 0x08, 0x36, 0x7c, 0xee, 0x32, 0xb8, 0x7c, 0xd0, 0x82, 0x8b, 0xc3, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x2a, 0xe5, 0x7a, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x93, 0x83, 0xdc, 0x41, 0xf3, 0xca, 0x0e, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x55, 0xca, 0xf5, 0x06, 0xed, 0x41, 0x21, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x55, 0x29, 0xd7, 0x1b, 0x34, 0x51, 0x7c, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xa5, 0x5c, 0x6f, 0xf8, 0xdc, 0x65, 0x70, 0x79, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x59, 0xe4, 0x70, 0xd0, 0xbc, 0xa7, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0x1c, 0x5d, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0xa5, 0x54, 0xd7, 0x07, 0x4d, 0x59, 0x16, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0x8e, 0xae, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x3c, 0xc2, 0x7a, 0xd0, 0xfa, 0xba, 0xc3, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x70, 0x74, 0x7d, 0xd0, 0x82, 0x6a, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0x6f, 0x5d, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0x05, 0x6a, 0xd7, 0x07, 0xad, 0x2c, 0x34, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0xcb, 0xb7, 0xae, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x28, 0x08, 0x66, 0x0f, 0x5a, 0xfd, 0x77, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xcb, 0xb7, 0xae, 0x37, 0x68, 0x0f, 0x0a, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xdf, 0xba, 0xde, 0xa0, 0x89, 0xe2, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x7c, 0xeb, 0xfa, 0xa0, 0x19, 0x04, 0x84, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x8c, 0xbb, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x6b, 0xff, 0xae, 0x0f, 0x5a, 0x59, 0x68, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xc6, 0x5d, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0x50, 0xc2, 0x63, 0x1e, 0x34, 0x9b, 0xf1, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xc6, 0x5d, 0x6f, 0xd0, 0x1e, 0x14, 0xc2, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x19, 0x77, 0xbd, 0x41, 0x13, 0xc5, 0x07, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x65, 0xdc, 0xf5, 0x41, 0x33, 0x08, 0x08, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x74, 0x78, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0x16, 0x5a, 0x5e, 0x6f, 0xd0, 0x16, 0x8b, 0xc2, 0x41, 0xcb, 0xbe, 0x04, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0xa2, 0xc3, 0xeb, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0xd6, 0xbb, 0x3c, 0x1d, 0xb4, 0x3b, 0xf3, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0x1d, 0x5e, 0x6f, 0xd0, 0xc2, 0x8f, 0xc2, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x74, 0x78, 0x7d, 0xd0, 0xbe, 0x35, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x81, 0x5e, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0xb5, 0xaf, 0xd7, 0x1b, 0xb4, 0xc5, 0x66, 0x70, 0xd0, 0xb2, 0x2f, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x0e, 0xf4, 0x7a, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x62, 0x12, 0xf3, 0xa0, 0xf5, 0xa5, 0x87, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x0e, 0xf4, 0x7a, 0x83, 0xe6, 0x15, 0x0d, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x3a, 0xd0, 0xeb, 0x83, 0xf6, 0xad, 0x09, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x2e, 0xf7, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x38, 0xbe, 0x3e, 0x68, 0x8c, 0x97, 0xe0, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x97, 0x7b, 0xbd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0xe1, 0x6d, 0xd6, 0x83, 0x06, 0xc8, 0x1e, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xba, 0xdc, 0xeb, 0x83, 0xf6, 0xa4, 0x0a, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xca, 0xf9, 0x7a, 0x0d, 0x6f, 0xdc, 0x1d, 0x2c, 0xa8, 0xbe, 0x3e, 0x68, 0xe9, 0xd4, 0xe0, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xe5, 0x7c, 0xbd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0xc1, 0xf2, 0xb0, 0xa7, 0x83, 0x86, 0xef, 0x1e, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x2a, 0xe7, 0xeb, 0x0d, 0x5a, 0x85, 0x26, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0x9c, 0xaf, 0x0f, 0xda, 0xf9, 0x21, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x62, 0xee, 0xeb, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x6e, 0xfc, 0xfa, 0xa0, 0x31, 0x5e, 0x82, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0x31, 0xf7, 0xf5, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x37, 0x07, 0x0b, 0xe4, 0x9e, 0x0e, 0x9a, 0x76, 0x7c, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x8b, 0xb9, 0xaf, 0x0f, 0xda, 0x93, 0x2a, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x9a, 0xf5, 0xeb, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x3c, 0xfe, 0xfa, 0xa0, 0x35, 0x94, 0x83, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0xcd, 0xfa, 0xf5, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x37, 0x07, 0x4b, 0x04, 0x9f, 0x0e, 0x9a, 0x16, 0x7d, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x6b, 0xd6, 0xaf, 0x37, 0x68, 0x5e, 0xd1, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x59, 0xbf, 0x3e, 0x68, 0xe7, 0x87, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0xf3, 0xaf, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x2a, 0x00, 0xec, 0x83, 0x96, 0x4e, 0x0d, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0xa5, 0xf9, 0xd7, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x2c, 0x92, 0x7c, 0x3a, 0x68, 0x3c, 0xf7, 0x61, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xcd, 0xbf, 0xde, 0xa0, 0x55, 0x68, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x34, 0xff, 0xfa, 0xa0, 0x9d, 0x1f, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x40, 0xc0, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x8b, 0x1d, 0xb0, 0x0f, 0x1a, 0xe3, 0x25, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x20, 0x60, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xb0, 0x4c, 0xf4, 0xe9, 0xa0, 0x79, 0xe8, 0x87, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x02, 0x01, 0xfb, 0xa0, 0x3d, 0xa9, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xb4, 0xc0, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x8b, 0x3a, 0xb0, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0x3c, 0x28, 0xb9, 0xc1, 0xf2, 0xe3, 0xed, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x52, 0x26, 0x6b, 0xf8, 0xa8, 0xfd, 0x60, 0xed, 0xc8, 0x73, 0x07, 0x8d, 0xd5, 0x1f, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0x2d, 0xb0, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x58, 0x28, 0xfb, 0x74, 0xd0, 0x3c, 0xf9, 0xc3, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x68, 0x81, 0xbd, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x0f, 0x1a, 0x62, 0x7f, 0x38, 0x68, 0x8d, 0x87, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xb4, 0xc0, 0xde, 0xa0, 0x89, 0xe2, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xd0, 0x02, 0xfb, 0xa0, 0x19, 0x04, 0x84, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x6f, 0xc1, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x2b, 0x69, 0xb0, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xf5, 0xcb, 0x06, 0x8d, 0xeb, 0x16, 0x6c, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0xff, 0xa0, 0x51, 0xb8, 0x85, 0x0d, 0x1f, 0xe4, 0x6c, 0xd0, 0x88, 0x70, 0xc1, 0x6a, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0xc3, 0xd7, 0x2f, 0x1b, 0x3e, 0x84, 0xd9, 0x60, 0xa1, 0xec, 0xd3, 0x06, 0xcd, 0x74, 0x0e, 0xac, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x0b, 0xa0, 0x03, 0x1b, 0xac, 0x8d, 0xc9, 0x3b, 0x08, 0x29, 0xf0, 0x0d, 0x0a, 0x82, 0xd9, 0x0d, 0x12, 0xd2, 0xbb, 0x37, 0x08, 0x29, 0xf0, 0x83, 0xf0, 0x54, 0xdd, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0xb3, 0xc1, 0x42, 0xd9, 0xa7, 0x0d, 0x9a, 0xe9, 0x1c, 0x58, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x16, 0x40, 0x07, 0x36, 0x58, 0x1b, 0x93, 0x77, 0x10, 0x02, 0xe0, 0x1b, 0x14, 0x04, 0xb3, 0x1b, 0x24, 0x5e, 0x77, 0x6f, 0x10, 0x02, 0xe0, 0x07, 0xe1, 0xa9, 0xba, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0x5f, 0xbf, 0x6c, 0xf8, 0x10, 0x66, 0x83, 0x85, 0xb2, 0x4f, 0x1b, 0x34, 0xd3, 0x39, 0xb0, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x2d, 0x80, 0x0e, 0x6c, 0xb0, 0x36, 0x26, 0xef, 0x38, 0xb4, 0x41, 0x41, 0x30, 0xbb, 0xe1, 0xcb, 0xc9, 0x8d, 0x43, 0x07, 0xe1, 0xa9, 0x7a, 0xd0, 0x7e, 0x09, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xbc, 0x05, 0x7b, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x05, 0xd0, 0x4f, 0x07, 0xcd, 0x36, 0x40, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xe5, 0x2d, 0xd8, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0xc3, 0x07, 0x39, 0x1b, 0xb4, 0xb5, 0xb2, 0xb0, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0xf5, 0xcb, 0x86, 0x0f, 0x61, 0x36, 0x58, 0x28, 0xfb, 0xb4, 0x41, 0x33, 0x9d, 0x03, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xd0, 0x02, 0xe8, 0xc0, 0x06, 0x6b, 0x63, 0xf2, 0x0e, 0x86, 0x17, 0xc5, 0x06, 0x05, 0xc1, 0xec, 0x06, 0x8d, 0xc2, 0x2c, 0x6c, 0x30, 0xbc, 0x28, 0x0e, 0xc2, 0x53, 0x75, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x21, 0xcc, 0x06, 0x0b, 0x65, 0x9f, 0x36, 0x68, 0xa6, 0x73, 0x60, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x5a, 0x00, 0x1d, 0xd8, 0x60, 0x6d, 0x4c, 0xde, 0xc1, 0x30, 0x9d, 0xd8, 0xa0, 0x20, 0x98, 0xdd, 0xa0, 0x7d, 0x9a, 0x85, 0x0d, 0x86, 0xe9, 0xc4, 0x41, 0x78, 0xaa, 0x1e, 0x34, 0xe7, 0xb7, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0xb7, 0x60, 0x1f, 0xb4, 0xf3, 0x43, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x10, 0x61, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0x10, 0xa2, 0xaa, 0x07, 0x0b, 0xac, 0x9c, 0x37, 0x3c, 0x4f, 0xb2, 0xc1, 0x0a, 0x22, 0xec, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0xe3, 0xba, 0x05, 0x87, 0x71, 0x39, 0x38, 0x86, 0x1b, 0x1c, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0xa0, 0xc1, 0xda, 0x81, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x68, 0x10, 0x77, 0x60, 0x83, 0x05, 0x0d, 0x53, 0x6b, 0x28, 0xa6, 0x6b, 0xd0, 0xd6, 0xeb, 0xc0, 0xc1, 0x82, 0xa3, 0xeb, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0x50, 0xbd, 0xc3, 0x86, 0x62, 0xba, 0x41, 0x1b, 0x84, 0x10, 0x1b, 0xe6, 0x7e, 0x70, 0x78, 0x43, 0x1d, 0x59, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x4c, 0xe7, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x37, 0x08, 0x57, 0x84, 0x0d, 0xc5, 0x74, 0x0d, 0x35, 0xf3, 0x60, 0x69, 0x8f, 0xf3, 0x41, 0x5b, 0xaf, 0x03, 0x87, 0xf3, 0x78, 0xd9, 0x60, 0x45, 0xa5, 0xd4, 0xe1, 0x94, 0x58, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x37, 0x08, 0x57, 0x84, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x30, 0x9d, 0x07, 0xab, 0x99, 0xf5, 0x97, 0x0d, 0x87, 0xc2, 0xc1, 0x12, 0xeb, 0xac, 0x0d, 0xda, 0xe5, 0x84, 0xd8, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x61, 0x85, 0xf6, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x79, 0xbc, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0xcf, 0x93, 0x6c, 0x10, 0x4a, 0x96, 0x1b, 0x3e, 0x6a, 0x3f, 0x08, 0xd3, 0xcc, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x36, 0x9c, 0x08, 0x1b, 0xb4, 0xf2, 0x08, 0xb1, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x03, 0xb4, 0x74, 0x48, 0x1d, 0xac, 0x86, 0xcf, 0x5d, 0x06, 0x4f, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0xbc, 0xad, 0x73, 0x10, 0xaa, 0x08, 0x07, 0xe7, 0x7a, 0x83, 0x0d, 0x9f, 0xbb, 0x0c, 0x4e, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x90, 0x32, 0x59, 0xc3, 0x47, 0xed, 0x07, 0x81, 0x0d, 0xd1, 0xc1, 0x01, 0x34, 0x69, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0xd0, 0xb8, 0x6e, 0xc1, 0x21, 0x75, 0x70, 0x70, 0x0c, 0x37, 0x38, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x41, 0x43, 0xb0, 0x10, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0x4b, 0xa2, 0xa6, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x43, 0x6b, 0x0a, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0x33, 0x43, 0x6c, 0x98, 0xfb, 0xc1, 0xe1, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0xa1, 0x12, 0x6e, 0x38, 0x11, 0x36, 0x54, 0xc2, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0xcf, 0x93, 0xac, 0xc1, 0x42, 0x65, 0xaa, 0x83, 0xd5, 0x57, 0xd0, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xf9, 0xe5, 0x7d, 0xd0, 0xd2, 0xfa, 0xc0, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xf2, 0xcb, 0x7b, 0x83, 0x56, 0xed, 0x07, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xca, 0x2f, 0xef, 0x83, 0xd6, 0xfb, 0x07, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x5c, 0xcd, 0x7b, 0x83, 0x46, 0x3b, 0x08, 0x36, 0x68, 0xf2, 0x83, 0x60, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x07, 0x8d, 0x12, 0x19, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0xcb, 0xd5, 0xbc, 0x37, 0x68, 0xee, 0x85, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x57, 0xf3, 0xde, 0xa0, 0x85, 0x1b, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x5c, 0xcd, 0x7b, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x07, 0x6d, 0x7f, 0x19, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xcd, 0x9f, 0xf7, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0xc5, 0xe8, 0xbd, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0xda, 0x4a, 0xef, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0x83, 0x92, 0x1b, 0x2c, 0x3f, 0xde, 0xde, 0xf0, 0xb6, 0xce, 0xc1, 0xaa, 0x4e, 0xef, 0x83, 0x66, 0xe9, 0x21, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x35, 0x7f, 0xde, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x9e, 0x78, 0x3f, 0x68, 0x01, 0x21, 0x62, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xf9, 0xf3, 0x5e, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0x86, 0x17, 0xc5, 0x86, 0x37, 0xee, 0xe6, 0x70, 0xa7, 0x1d, 0x34, 0xb6, 0x10, 0xb1, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x83, 0x46, 0x25, 0x22, 0x0e, 0xda, 0xa7, 0x59, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x6b, 0xfe, 0xbc, 0x0f, 0x9a, 0x01, 0x88, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x92, 0x51, 0xef, 0x0d, 0x4f, 0xdc, 0x6d, 0xd0, 0xd6, 0x49, 0xc1, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x0f, 0x1f, 0xc2, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0x46, 0xbd, 0x37, 0x68, 0x58, 0xa2, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x19, 0xf5, 0xde, 0xa0, 0xd5, 0xb7, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x64, 0xd4, 0x7b, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x21, 0xcc, 0x06, 0x0b, 0x65, 0x9f, 0x36, 0x68, 0xa6, 0x73, 0x60, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x5a, 0x00, 0x1d, 0xd8, 0x60, 0x6d, 0x4c, 0xde, 0x41, 0x50, 0x7a, 0x6f, 0x50, 0x10, 0xcc, 0x6e, 0xd0, 0xa2, 0x10, 0xc1, 0x06, 0x41, 0xe9, 0x7d, 0x10, 0x9e, 0xaa, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x5e, 0xeb, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0x16, 0x02, 0x7b, 0x6f, 0xd0, 0xbe, 0x7a, 0xc1, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x0f, 0xda, 0x41, 0x7f, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0xd7, 0x7a, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xf8, 0x77, 0xfe, 0xa0, 0xdd, 0xaa, 0x88, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xbc, 0xd6, 0x7b, 0x83, 0xf6, 0xa0, 0x10, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xf2, 0x5a, 0xef, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xf6, 0xfb, 0x1f, 0x0e, 0x5a, 0x14, 0x22, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x72, 0x66, 0xef, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x84, 0xdb, 0xfb, 0xa0, 0xad, 0x93, 0x82, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0x39, 0xb3, 0xf7, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x37, 0x07, 0xcb, 0x74, 0xa9, 0x0e, 0x9a, 0x92, 0x8b, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xcb, 0x99, 0xbd, 0x0f, 0x5a, 0xc9, 0x29, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xf2, 0x71, 0xef, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x64, 0xde, 0x7b, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0x83, 0x92, 0x1b, 0x2c, 0x3f, 0xde, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x37, 0xfd, 0x06, 0x6d, 0x30, 0x14, 0xac, 0xe1, 0xa3, 0xf6, 0x83, 0xe5, 0xff, 0xde, 0x1d, 0x34, 0x4b, 0x0f, 0x71, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x1f, 0xf7, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0x60, 0xa1, 0x32, 0xd5, 0x41, 0x53, 0x86, 0x11, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xf9, 0xb8, 0xf7, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x68, 0xb4, 0x31, 0xe2, 0xa0, 0x35, 0x1e, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x7c, 0xdc, 0xfb, 0xa0, 0x19, 0x80, 0x88, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x4e, 0xf8, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0xeb, 0x2c, 0xbe, 0x37, 0x68, 0x8c, 0x97, 0x60, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0xcb, 0x8f, 0xb7, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x48, 0x99, 0xac, 0xe1, 0xa3, 0xf6, 0x83, 0x05, 0x56, 0xd0, 0x1d, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0x13, 0xbe, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x08, 0xfd, 0x92, 0x83, 0x66, 0x5a, 0x23, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xea, 0x84, 0xef, 0x0d, 0x5a, 0x85, 0x26, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0x13, 0xbe, 0x37, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0x7f, 0xd0, 0x64, 0x6d, 0xc4, 0x41, 0x8b, 0x42, 0x04, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x6c, 0xf2, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0x96, 0xd1, 0x7c, 0x6f, 0xd0, 0xd6, 0x49, 0xc1, 0x41, 0xb3, 0xf4, 0x10, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x62, 0x93, 0xef, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0xdf, 0xb7, 0x1f, 0xb4, 0x2b, 0x1d, 0xb1, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0x9b, 0x7c, 0x6f, 0xd0, 0xea, 0x5b, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x6c, 0xf2, 0x7d, 0xd0, 0x0c, 0x40, 0xc4, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xf7, 0x7c, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0x95, 0x4d, 0xdf, 0x1b, 0xb4, 0xaf, 0x5e, 0x70, 0xd0, 0x2c, 0x3d, 0xc4, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xba, 0xe7, 0x7b, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0xa5, 0x18, 0x55, 0x07, 0xad, 0xaa, 0x47, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xd5, 0x3d, 0xdf, 0x1b, 0xb4, 0x07, 0x85, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xf7, 0x7c, 0x1f, 0x34, 0x03, 0x10, 0xb1, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x85, 0x57, 0xdf, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0xd1, 0xd9, 0xf7, 0x06, 0x6d, 0xb1, 0x19, 0x1c, 0x34, 0x4b, 0x0f, 0x71, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xbc, 0xfa, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0x60, 0xbd, 0x4a, 0xd5, 0x41, 0xdb, 0x02, 0x12, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xe1, 0xd5, 0xf7, 0x06, 0xcd, 0x2b, 0x1a, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x85, 0x57, 0xdf, 0x07, 0xcd, 0x00, 0x44, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x4d, 0xdc, 0xf7, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0xdd, 0xf7, 0xbd, 0x41, 0x5b, 0x6c, 0x06, 0x1b, 0x3e, 0x77, 0x19, 0x3c, 0xde, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x07, 0x25, 0x37, 0x58, 0x7e, 0xbc, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xc4, 0xfa, 0x0d, 0xda, 0x60, 0x28, 0x38, 0x68, 0xeb, 0x36, 0xe2, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x13, 0xf7, 0xbd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0xc1, 0xa2, 0x9e, 0xaa, 0x83, 0x16, 0x36, 0x24, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x9a, 0xb8, 0xef, 0x0d, 0x9a, 0x57, 0x34, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x6b, 0xe2, 0xbe, 0x37, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0x7f, 0xd0, 0xda, 0x88, 0xc4, 0x41, 0x8b, 0x42, 0x04, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x0c, 0xf9, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0x96, 0x6f, 0x7e, 0x1f, 0xb4, 0x86, 0x72, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x86, 0xfc, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xe0, 0x4c, 0xf4, 0x71, 0xd0, 0x3e, 0x90, 0xc4, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x0c, 0xf9, 0xbd, 0x41, 0xf3, 0x8a, 0x06, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x31, 0xe4, 0xf7, 0x41, 0x3b, 0x3f, 0x04, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x38, 0xfa, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0x96, 0xbc, 0x7e, 0x1f, 0x34, 0xc6, 0x4b, 0x70, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x1c, 0xfd, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0x20, 0x80, 0xce, 0x0e, 0xda, 0xbf, 0x92, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0x47, 0xbf, 0x0f, 0xda, 0x93, 0x2a, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x4a, 0xdb, 0xef, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x26, 0xf8, 0x7b, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0xf4, 0xa0, 0x51, 0x22, 0x83, 0x0d, 0x9f, 0xbb, 0x0c, 0x4e, 0x1f, 0xb4, 0x18, 0x1b, 0x71, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xb4, 0xfd, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xf0, 0xb9, 0xd2, 0x41, 0xd3, 0x6b, 0x12, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xa5, 0xed, 0xf7, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xe9, 0x41, 0x4b, 0x8c, 0x06, 0x1b, 0x3e, 0x77, 0x19, 0x9c, 0x3e, 0x68, 0x05, 0x39, 0x62, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xcb, 0xa9, 0xbf, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0xc2, 0xf0, 0xef, 0x83, 0x66, 0xdb, 0x24, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0xe5, 0xd4, 0xdf, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x04, 0xed, 0xcf, 0x41, 0xe3, 0x89, 0x12, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x39, 0xf5, 0xf7, 0x41, 0x3b, 0x7e, 0x12, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x8f, 0xfe, 0xbd, 0x86, 0x37, 0xee, 0x0e, 0xd6, 0xe2, 0x7f, 0x1f, 0xb4, 0xce, 0x21, 0x71, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x47, 0xff, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0x60, 0x09, 0x67, 0xd5, 0x41, 0xbb, 0x9d, 0x12, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x3d, 0xfa, 0xf7, 0x06, 0xcd, 0x2b, 0x1a, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xf5, 0xe8, 0xdf, 0x07, 0x4d, 0xd4, 0x48, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x1d, 0x00, 0xf8, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0x03, 0x01, 0x7e, 0xd0, 0x2e, 0x81, 0xc4, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x0e, 0x00, 0x7c, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x45, 0xac, 0x55, 0x07, 0x2d, 0xd3, 0x4a, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x75, 0x00, 0xe0, 0x1b, 0x34, 0xaf, 0x68, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x01, 0x80, 0x1f, 0x34, 0x03, 0x10, 0xb1, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0xf5, 0x17, 0xe0, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0xad, 0x09, 0xf8, 0x41, 0xbb, 0x04, 0x12, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0xfa, 0x0b, 0xf0, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0xc2, 0x69, 0xec, 0xa0, 0xed, 0x65, 0x89, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xfe, 0x02, 0x7c, 0x83, 0xe6, 0x15, 0x0d, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xfa, 0x0b, 0xf0, 0x83, 0x66, 0x00, 0x22, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xc4, 0x05, 0x7c, 0x0d, 0x6f, 0xdc, 0x1d, 0x2c, 0xd6, 0x01, 0x3f, 0x68, 0x97, 0x40, 0xe2, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xe2, 0x02, 0xbe, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0xc1, 0xd2, 0xe5, 0xaa, 0x83, 0x86, 0xc5, 0x25, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x12, 0x17, 0xf0, 0x0d, 0x9a, 0x57, 0x34, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0x5c, 0xc0, 0x0f, 0x9a, 0x01, 0x88, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x42, 0x21, 0xf0, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0xd4, 0x09, 0x7c, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0x83, 0x92, 0x1b, 0x2c, 0x3f, 0xde, 0xde, 0xf0, 0xb6, 0xce, 0xc1, 0x72, 0x2b, 0xf0, 0x83, 0x66, 0xe9, 0x21, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x85, 0x42, 0xe0, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x1c, 0x20, 0x44, 0x0f, 0x9a, 0xce, 0x97, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0x85, 0xc0, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x41, 0x23, 0x01, 0x13, 0x07, 0xad, 0xf1, 0x10, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x85, 0x42, 0xe0, 0x07, 0xcd, 0x00, 0x44, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x4d, 0x17, 0xf8, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0xcf, 0x06, 0x7e, 0xd0, 0x3a, 0x87, 0xc4, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xa6, 0x0b, 0x7c, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x45, 0xf4, 0x55, 0x07, 0x2d, 0x76, 0x4c, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x35, 0x5d, 0xe0, 0x1b, 0x34, 0xaf, 0x68, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x74, 0x81, 0x1f, 0x34, 0x51, 0x23, 0xb1, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0xb5, 0x74, 0xe0, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0xf5, 0x1f, 0xf8, 0x41, 0x63, 0xbc, 0x04, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x5a, 0x3a, 0xf0, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0x96, 0x11, 0x58, 0x1d, 0xb4, 0x49, 0x33, 0xb1, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xd2, 0x81, 0x1f, 0xb4, 0x27, 0x55, 0xb0, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x95, 0x87, 0xe0, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0xad, 0x24, 0xf8, 0x41, 0x6b, 0x28, 0x07, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0xca, 0x43, 0xf0, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0x16, 0x52, 0x58, 0x1d, 0xb4, 0x89, 0x34, 0xb1, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x1e, 0x82, 0x6f, 0xd0, 0xbc, 0xa2, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x79, 0x08, 0x7e, 0xd0, 0xce, 0x0f, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x69, 0x82, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0x15, 0xa6, 0xe0, 0x1b, 0x34, 0xc6, 0x4b, 0x70, 0xd0, 0x2c, 0x3d, 0xc4, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x4e, 0x13, 0x7c, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x50, 0x43, 0x3c, 0x68, 0xf5, 0x6b, 0x62, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xd3, 0x04, 0xdf, 0xa0, 0x55, 0x68, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x4e, 0x13, 0xfc, 0xa0, 0x19, 0x80, 0x88, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x7d, 0x05, 0x5f, 0xc3, 0x1b, 0x77, 0x07, 0xeb, 0x7d, 0xc1, 0x0f, 0x5a, 0xe7, 0x90, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xbe, 0x82, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xb0, 0xc2, 0xc6, 0xea, 0xa0, 0xd9, 0xbb, 0x89, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xf6, 0x15, 0x7c, 0x83, 0xe6, 0x15, 0x0d, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xda, 0x57, 0xf0, 0x83, 0x26, 0x6a, 0x24, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xd6, 0x18, 0x7c, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x85, 0x06, 0xdf, 0xa0, 0x2d, 0x16, 0x85, 0x83, 0x66, 0xe9, 0x21, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0xb5, 0xc6, 0xe0, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0xfe, 0x5c, 0x3a, 0x68, 0xd8, 0x71, 0x62, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x35, 0x06, 0xdf, 0xa0, 0x85, 0x1f, 0x85, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xd6, 0x18, 0xfc, 0xa0, 0x19, 0x80, 0x88, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xd1, 0x06, 0x5f, 0xc3, 0x1b, 0x77, 0x07, 0x8b, 0xcd, 0xc1, 0x0f, 0xda, 0x25, 0x90, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0x68, 0x83, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xf8, 0x60, 0xfe, 0xa0, 0x59, 0xd3, 0x89, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x44, 0x1b, 0x7c, 0x83, 0xe6, 0x15, 0x0d, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x12, 0x6d, 0xf0, 0x83, 0x66, 0x00, 0x22, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xc0, 0x1d, 0x7c, 0x0d, 0x6f, 0xdc, 0x1d, 0x2c, 0xd5, 0x07, 0x3f, 0x68, 0xb6, 0x4d, 0xe2, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xe0, 0x0e, 0xbe, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0x41, 0xb0, 0x99, 0x1e, 0x34, 0xd8, 0x3b, 0xb1, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0xb8, 0x83, 0x1f, 0xb4, 0xe3, 0x27, 0xb1, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x08, 0x84, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xb0, 0xe0, 0xce, 0x6a, 0xc3, 0x1b, 0x77, 0x07, 0x6b, 0x1f, 0xc2, 0x37, 0x3c, 0x4f, 0xb2, 0xc1, 0x0a, 0x81, 0xf0, 0x0d, 0x9a, 0x57, 0x34, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x2b, 0x04, 0xc2, 0x0f, 0x9a, 0xa8, 0x91, 0x38, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x41, 0x9b, 0xdb, 0x10, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0xeb, 0x1a, 0xa7, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x33, 0xad, 0x0a, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0x7a, 0x4f, 0x6c, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0xe0, 0xf0, 0x86, 0x3a, 0xb2, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0xcd, 0xce, 0x0e, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0xea, 0x3d, 0xb1, 0x61, 0xee, 0x07, 0x8f, 0x0f, 0xda, 0x47, 0x9f, 0x58, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0xc2, 0x05, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x9a, 0x36, 0x34, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x18, 0x7e, 0x62, 0xc3, 0xc4, 0x6d, 0xd0, 0x56, 0x35, 0xc4, 0x86, 0x62, 0xba, 0x41, 0xc3, 0xf0, 0x13, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0x36, 0x54, 0xc2, 0x0d, 0x27, 0xc2, 0x86, 0x4a, 0xb8, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xd7, 0x8f, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x90, 0x32, 0x59, 0xc3, 0x47, 0xed, 0x07, 0x4b, 0x03, 0xc8, 0x3b, 0x38, 0xc6, 0x9c, 0x1d, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0xa0, 0xe1, 0x01, 0x8a, 0x0d, 0xc5, 0x74, 0x83, 0x86, 0xe1, 0x27, 0x36, 0xcc, 0xfd, 0xe0, 0xf2, 0x86, 0x3a, 0xb2, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0x5b, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x37, 0x28, 0x5a, 0x4f, 0x0e, 0x5a, 0x81, 0x1c, 0xd8, 0x30, 0xf7, 0x1b, 0x9c, 0x68, 0x3d, 0x36, 0xcc, 0xd0, 0x86, 0x4a, 0xb8, 0xe1, 0x44, 0xd8, 0x50, 0x09, 0x37, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x7a, 0xca, 0xee, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x7a, 0xd3, 0xaf, 0xe1, 0xa3, 0xf6, 0x83, 0xc5, 0xa1, 0xdd, 0x6b, 0xf8, 0xa8, 0xfd, 0x60, 0xad, 0x69, 0x77, 0x07, 0xc7, 0x98, 0xb3, 0x83, 0x95, 0x74, 0xfa, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x84, 0x94, 0xf2, 0x06, 0x0d, 0x5f, 0x42, 0xac, 0x61, 0xe2, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0x0d, 0x8a, 0xd6, 0x93, 0x83, 0x06, 0x38, 0x21, 0x36, 0xcc, 0xfd, 0x06, 0x27, 0x5a, 0x8f, 0x83, 0x06, 0x38, 0x21, 0x0e, 0x42, 0x4a, 0x79, 0x83, 0xc5, 0x6c, 0x50, 0xcb, 0x2c, 0x1b, 0x3e, 0x6a, 0x3f, 0x38, 0x40, 0x7f, 0x1c, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0xe1, 0x44, 0xd8, 0xa0, 0x19, 0x0b, 0x8a, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0xdd, 0x9e, 0x0d, 0x02, 0x47, 0x6f, 0x0d, 0x1f, 0xb5, 0x1f, 0x9c, 0xd0, 0x3f, 0x3a, 0x38, 0xc6, 0x9c, 0x6d, 0x50, 0xf0, 0x61, 0xae, 0xc1, 0x89, 0xfd, 0x66, 0x0d, 0x4a, 0x09, 0xf1, 0x8d, 0xe7, 0x07, 0x27, 0x04, 0x90, 0xe3, 0xd0, 0x71, 0xe8, 0x60, 0x25, 0x9d, 0xfe, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0x6d, 0x0d, 0x51, 0xac, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0xac, 0x22, 0x8b, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xed, 0xf7, 0x1f, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x6b, 0x45, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xfa, 0x7c, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0x5d, 0x2b, 0x8a, 0x0d, 0x13, 0xb7, 0x41, 0xab, 0xed, 0x13, 0x1b, 0x8a, 0xe9, 0x06, 0xed, 0x5a, 0x51, 0x6c, 0x98, 0xfb, 0xc1, 0xe5, 0x83, 0xf6, 0xd1, 0x27, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0x56, 0xbe, 0x47, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x76, 0x74, 0x11, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0x4b, 0xa3, 0xd8, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0xc1, 0xe1, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0xa1, 0x12, 0x6e, 0x38, 0x11, 0x36, 0x54, 0xc2, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x3c, 0x77, 0x7b, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0x3e, 0x6a, 0x3f, 0x58, 0x61, 0xbc, 0xdd, 0xc1, 0x31, 0xe6, 0xec, 0x60, 0x25, 0x9d, 0xfe, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0x6d, 0xe3, 0x51, 0x6c, 0x28, 0xa6, 0x1b, 0x34, 0x97, 0x46, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xb5, 0x7d, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0xb9, 0x34, 0x8a, 0x0d, 0x73, 0x3f, 0xb8, 0xbc, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0x73, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0x84, 0x2b, 0xc2, 0x86, 0x62, 0xba, 0x1a, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x6f, 0x10, 0x2c, 0x4b, 0x07, 0x0d, 0xd2, 0x51, 0x6c, 0x98, 0xfb, 0x0d, 0x82, 0x70, 0xe9, 0xa0, 0xc1, 0x49, 0x88, 0xc3, 0x79, 0xbc, 0x41, 0xc3, 0x97, 0x10, 0x6b, 0x98, 0xb8, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0x60, 0x59, 0x3a, 0x68, 0x80, 0x13, 0x62, 0xc3, 0xdc, 0x6f, 0x10, 0x84, 0x4b, 0x07, 0x0d, 0x70, 0x42, 0x1c, 0xce, 0xe3, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xb0, 0x60, 0xda, 0xf0, 0x51, 0xfb, 0x41, 0xd8, 0x52, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x10, 0x16, 0x4c, 0x1b, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x61, 0x3a, 0x0f, 0x5a, 0xa0, 0xa4, 0xd8, 0x70, 0x22, 0x6c, 0xd0, 0x30, 0x2b, 0xc5, 0x06, 0x8b, 0xd9, 0xa0, 0x96, 0x59, 0x36, 0x7c, 0x62, 0xb3, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x58, 0x15, 0x46, 0x7c, 0x70, 0xae, 0x37, 0xd8, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0xc1, 0xc1, 0x5a, 0xee, 0xe0, 0x00, 0x9a, 0x74, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x79, 0x7c, 0xd0, 0xec, 0x25, 0xc4, 0x86, 0x13, 0x61, 0x83, 0xc6, 0x1d, 0x29, 0x0e, 0x5a, 0x75, 0x85, 0x38, 0x68, 0x08, 0x16, 0x62, 0xd6, 0x50, 0x4c, 0xd7, 0xa0, 0xad, 0xd7, 0x81, 0x83, 0xc5, 0x7d, 0xd2, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x2d, 0xc4, 0x84, 0x0d, 0xc5, 0x74, 0x83, 0x46, 0x92, 0x29, 0x36, 0x4c, 0xdc, 0x06, 0x4d, 0x9f, 0x4f, 0x6c, 0x28, 0xa6, 0x1b, 0x34, 0x92, 0x4c, 0x71, 0xd0, 0x6a, 0xfb, 0xc4, 0xac, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0xcb, 0x71, 0xaa, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x8b, 0xa9, 0x0c, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0x5c, 0x53, 0x6c, 0x98, 0xb8, 0x0d, 0xda, 0xaa, 0x86, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0xe5, 0x9a, 0xe2, 0xa0, 0xd5, 0xf6, 0x89, 0xc3, 0x29, 0xb6, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0x2c, 0x73, 0x78, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xcd, 0x31, 0x13, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x5b, 0x4e, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xfa, 0x7c, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0xdd, 0x72, 0x8a, 0x0d, 0x73, 0x3f, 0x78, 0x7c, 0xd0, 0xf0, 0x1c, 0xc5, 0x6a, 0x28, 0xa6, 0x6b, 0xd0, 0xd6, 0xeb, 0xc0, 0xc1, 0xfa, 0x3e, 0xea, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0x16, 0xf7, 0xc2, 0x86, 0x62, 0xba, 0x41, 0xdb, 0xf4, 0x14, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0x3f, 0x38, 0xbc, 0xa1, 0x8e, 0x1f, 0x7e, 0xbf, 0xd9, 0x50, 0x4c, 0x37, 0x68, 0x9b, 0x9e, 0x62, 0xc3, 0xc4, 0x6d, 0xd0, 0x6a, 0xfb, 0xc4, 0x86, 0x62, 0xba, 0x41, 0xdb, 0xf4, 0x14, 0x1b, 0x26, 0x6e, 0x83, 0xb6, 0xcc, 0x28, 0x36, 0x14, 0xd3, 0x0d, 0xda, 0xa6, 0xa7, 0xd8, 0x30, 0xf7, 0x83, 0xcf, 0x07, 0xed, 0xa3, 0x4f, 0xcc, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0x24, 0x17, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0x52, 0x70, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0x32, 0x43, 0xc5, 0x86, 0x89, 0xdb, 0xa0, 0xe9, 0xf3, 0x89, 0x0d, 0xc5, 0x74, 0x83, 0x96, 0x19, 0x2a, 0x36, 0xcc, 0xfd, 0xe0, 0xf1, 0x41, 0xbb, 0x14, 0x14, 0x87, 0x53, 0xac, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xeb, 0x75, 0xe0, 0x60, 0x05, 0xd2, 0xf3, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xc4, 0xa2, 0x60, 0x43, 0x31, 0xdd, 0xa0, 0x49, 0x8e, 0x8a, 0x0d, 0x73, 0x3f, 0x38, 0xbc, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0x73, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0x0d, 0x82, 0x65, 0xe9, 0xa0, 0x15, 0xc8, 0x81, 0x0d, 0x73, 0xbf, 0x41, 0x10, 0x2e, 0x6d, 0x98, 0xa1, 0x0d, 0x95, 0x70, 0xc3, 0x89, 0xb0, 0xa1, 0x12, 0x6e, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xfa, 0x65, 0xc3, 0x87, 0x30, 0x1b, 0x2c, 0x94, 0x7d, 0xda, 0xa0, 0x99, 0xce, 0x81, 0x35, 0x28, 0x3a, 0x8d, 0x37, 0x68, 0x01, 0x74, 0x60, 0x83, 0xb5, 0x31, 0x79, 0x87, 0xd4, 0xc1, 0x41, 0x5b, 0xa5, 0x03, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0xc7, 0x07, 0xad, 0x70, 0x52, 0x6c, 0x38, 0x11, 0x36, 0x68, 0xf4, 0xa4, 0xe2, 0xa0, 0x7d, 0x58, 0x8a, 0x83, 0x26, 0x65, 0x29, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0xd6, 0xab, 0x49, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x96, 0xe2, 0x12, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0x33, 0xaa, 0xd8, 0x30, 0x71, 0x1b, 0x34, 0x7d, 0x3e, 0xb1, 0xa1, 0x98, 0x6e, 0xd0, 0x9c, 0x51, 0xc5, 0x41, 0xab, 0xed, 0x13, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0x8b, 0x3d, 0xa8, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xfb, 0x60, 0x0b, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0x51, 0x55, 0x6c, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0xe0, 0xf0, 0x86, 0x3a, 0xb2, 0x41, 0x2b, 0x90, 0x03, 0x07, 0x0d, 0x5a, 0x0e, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x46, 0x55, 0x71, 0xd0, 0x6a, 0xfb, 0xc4, 0x6a, 0x28, 0xa6, 0x6b, 0xd0, 0xd6, 0xeb, 0xc0, 0xc1, 0xa2, 0xc3, 0xeb, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0x8c, 0xcf, 0xc3, 0x86, 0x62, 0xba, 0x41, 0x5b, 0x65, 0x15, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0x3f, 0x38, 0xbc, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0x36, 0x54, 0xc2, 0x0d, 0x27, 0xc2, 0x86, 0x4a, 0xb8, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0x58, 0xa8, 0x4c, 0x75, 0xb0, 0xba, 0x66, 0x7a, 0xc3, 0x07, 0x39, 0x1b, 0x34, 0x21, 0x0b, 0xb1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xac, 0x9a, 0x6f, 0xb0, 0x80, 0xca, 0x7b, 0xc3, 0xe7, 0x2e, 0x1b, 0xbe, 0xa8, 0x39, 0x68, 0xb7, 0x7d, 0xe0, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xb1, 0x6a, 0xbe, 0x41, 0xab, 0xf6, 0x03, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xc5, 0xaa, 0xf9, 0x86, 0xcf, 0x5d, 0x36, 0x7c, 0x51, 0x73, 0xd0, 0xd0, 0xff, 0xc0, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0xf9, 0x9a, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0x75, 0xfd, 0xcc, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xf5, 0x35, 0xd3, 0x07, 0xcd, 0xb6, 0x28, 0x1c, 0xb4, 0x41, 0x59, 0x71, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xf3, 0x35, 0x5f, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0x30, 0x71, 0x07, 0xad, 0x48, 0x56, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x65, 0xbe, 0xe6, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xf5, 0x35, 0xd3, 0x07, 0x8d, 0x01, 0x29, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x65, 0xbe, 0xe6, 0x1b, 0x3e, 0x77, 0xd9, 0x60, 0x7d, 0xcd, 0xf4, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x29, 0x48, 0xe1, 0xa0, 0x45, 0x21, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x81, 0x36, 0xdf, 0xa0, 0xd1, 0x0e, 0x82, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x22, 0x3e, 0xf0, 0x41, 0xeb, 0x20, 0x04, 0x07, 0x6d, 0x50, 0x56, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0xa0, 0xcd, 0x37, 0x68, 0xee, 0x85, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x81, 0x36, 0x5f, 0xc3, 0xe7, 0x2e, 0x1b, 0x24, 0xe2, 0x03, 0x1f, 0x34, 0x86, 0x43, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0x40, 0x9b, 0x1f, 0xb4, 0x74, 0x5a, 0xb1, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0xc5, 0xe1, 0xe6, 0x1b, 0x9e, 0xb8, 0x5b, 0xc3, 0xe7, 0x2e, 0x1b, 0x2c, 0xc3, 0x69, 0xde, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x07, 0x25, 0x37, 0x58, 0x7e, 0xbc, 0xbd, 0xe1, 0x6d, 0x9d, 0x83, 0x45, 0x38, 0xcd, 0x1b, 0x3e, 0x77, 0xd9, 0x50, 0xc7, 0x37, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0x41, 0xc9, 0x0d, 0x96, 0x1f, 0x6f, 0x6f, 0x78, 0x5b, 0xe7, 0xf0, 0x6f, 0xcd, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x38, 0xdc, 0x7c, 0x83, 0x86, 0x25, 0x0a, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xe2, 0x70, 0xf3, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x32, 0x9c, 0xe6, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x83, 0x56, 0x9e, 0x2b, 0x0e, 0x5a, 0xe3, 0x21, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x8b, 0xc3, 0xcd, 0x37, 0x7c, 0xee, 0xb2, 0xa1, 0x8e, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x1f, 0xb4, 0x69, 0x5d, 0x71, 0xd0, 0xa2, 0x10, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xf4, 0x9b, 0x6f, 0xd0, 0xd8, 0x42, 0xc4, 0x1a, 0x3e, 0x77, 0xd9, 0x70, 0xa7, 0x1d, 0xb4, 0xe9, 0x10, 0x71, 0xd0, 0x06, 0x65, 0xc5, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xa6, 0xdf, 0x7c, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x07, 0xed, 0x90, 0x44, 0x1c, 0x34, 0xb6, 0x10, 0xb1, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xf4, 0x9b, 0xaf, 0xe1, 0x73, 0x97, 0x0d, 0x77, 0xda, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x25, 0x25, 0xe2, 0xa0, 0x35, 0x1e, 0x82, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xa6, 0xdf, 0xfc, 0xa0, 0xa5, 0xd3, 0x8a, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x88, 0x38, 0xdf, 0xa0, 0x5d, 0xe9, 0x88, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x09, 0x28, 0xf5, 0xa0, 0x59, 0x94, 0x82, 0x83, 0x36, 0x28, 0x2b, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x15, 0x11, 0xe7, 0x1b, 0x34, 0x9d, 0x1d, 0xb1, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x44, 0x9c, 0xaf, 0xe1, 0x73, 0x97, 0x0d, 0x4e, 0x40, 0xa9, 0x07, 0x0d, 0xc4, 0x15, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x15, 0x11, 0xe7, 0x07, 0x2d, 0x9d, 0x56, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xdd, 0xc8, 0xf9, 0x06, 0xad, 0xaa, 0x47, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0x02, 0x4c, 0x70, 0xd0, 0x06, 0x65, 0xc5, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x6e, 0xe4, 0x7c, 0x83, 0x86, 0xe3, 0x23, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xba, 0x91, 0xf3, 0x35, 0x7c, 0xee, 0xb2, 0xe1, 0x6d, 0x9d, 0x83, 0xa6, 0xa3, 0x10, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xba, 0x91, 0xf3, 0x83, 0x96, 0x4e, 0x2b, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x26, 0xe7, 0x7c, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x15, 0x3a, 0x5f, 0xc3, 0xe7, 0x2e, 0x1b, 0x94, 0xd0, 0xb1, 0x07, 0x8d, 0x12, 0x19, 0x1c, 0xb4, 0x41, 0x59, 0x71, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xc9, 0x39, 0x5f, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xa0, 0x84, 0x8e, 0x3d, 0x68, 0x78, 0xc7, 0x62, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xc9, 0x39, 0x5f, 0xc3, 0xe7, 0x2e, 0x1b, 0x94, 0xd0, 0xb1, 0x07, 0x2d, 0x31, 0x1a, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x35, 0x39, 0xe7, 0x07, 0x2d, 0x9d, 0x56, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x25, 0x50, 0xe7, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0xac, 0xfe, 0xd6, 0xda, 0xf0, 0xc6, 0xdd, 0xc1, 0xe2, 0xad, 0xf3, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x04, 0xea, 0x7c, 0xc3, 0xe7, 0x2e, 0x1b, 0xac, 0x0b, 0x3b, 0xdf, 0xf0, 0xf5, 0xcb, 0x86, 0x07, 0x6f, 0x36, 0x58, 0x28, 0xfb, 0xb4, 0x41, 0x33, 0x9d, 0x03, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xd0, 0x02, 0xe8, 0xc0, 0x06, 0xed, 0xac, 0x2e, 0x1c, 0xc6, 0x65, 0x83, 0x82, 0x60, 0x76, 0x83, 0x03, 0x68, 0xd2, 0x86, 0x71, 0x39, 0x08, 0x4f, 0xd5, 0x0d, 0x9f, 0xbb, 0x6c, 0x70, 0x02, 0x4a, 0xdd, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0x2b, 0xcd, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x6b, 0x3b, 0x05, 0x07, 0xc7, 0x98, 0xb3, 0x83, 0x95, 0x74, 0xfa, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x34, 0x4c, 0x57, 0xb1, 0xa1, 0x98, 0x6e, 0xd0, 0x56, 0x59, 0xc5, 0x41, 0xc3, 0xf1, 0x14, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0xab, 0x25, 0xa2, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xd3, 0x8c, 0x07, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0xde, 0x59, 0x1c, 0x34, 0x7d, 0x3e, 0xb1, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0x46, 0x34, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0xc4, 0x84, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0x82, 0xa0, 0xc5, 0x86, 0x89, 0xdb, 0xa0, 0x4d, 0x39, 0x8a, 0x0d, 0xc5, 0x74, 0x83, 0x16, 0x04, 0x2d, 0x36, 0xcc, 0xfd, 0xe0, 0xf1, 0x41, 0x6b, 0x8d, 0x14, 0x87, 0x53, 0x6c, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0xec, 0x61, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xda, 0x9b, 0x6d, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x38, 0xd2, 0x62, 0xc3, 0xc4, 0x6d, 0xd0, 0xf4, 0xf9, 0xc4, 0x86, 0x62, 0xba, 0x41, 0xc3, 0x91, 0x16, 0x07, 0xad, 0xb6, 0x4f, 0x1c, 0x4e, 0xb1, 0xd6, 0x50, 0x4c, 0xd7, 0xa0, 0xad, 0xd7, 0x81, 0x83, 0x15, 0x90, 0xd2, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x95, 0xcf, 0x84, 0x0d, 0xc5, 0x74, 0x83, 0xc6, 0x40, 0x2d, 0x0e, 0x9a, 0x3e, 0x9f, 0x38, 0x9c, 0x62, 0x6b, 0x28, 0xa6, 0x6b, 0xd0, 0xd6, 0xeb, 0xc0, 0xc1, 0x2a, 0x74, 0xe8, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0x04, 0xd2, 0xc1, 0x86, 0x62, 0xba, 0x41, 0x5b, 0xab, 0x16, 0x1b, 0x26, 0x6e, 0x83, 0xb6, 0xaa, 0x21, 0x36, 0x14, 0xd3, 0x0d, 0xda, 0x5a, 0xb5, 0x38, 0x68, 0xb5, 0x7d, 0x62, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xeb, 0x75, 0xe0, 0x60, 0x31, 0xf7, 0xf5, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0x05, 0xf3, 0x61, 0x43, 0x31, 0xdd, 0xa0, 0xa9, 0x5c, 0x8b, 0x83, 0xa6, 0xcf, 0x27, 0x0e, 0xa7, 0xd8, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0xc0, 0xa1, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0xb4, 0xb6, 0xc7, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0x12, 0xb1, 0xc5, 0x86, 0x89, 0xdb, 0xa0, 0xe9, 0xf3, 0x89, 0x0d, 0xc5, 0x74, 0x83, 0x96, 0x88, 0x2d, 0x36, 0xcc, 0xfd, 0xe0, 0xf1, 0x41, 0xb3, 0x8d, 0x10, 0x87, 0x53, 0x6c, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0xd5, 0x18, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x5a, 0x7a, 0x41, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x80, 0xda, 0xe2, 0xa0, 0x45, 0x46, 0x88, 0xd5, 0x50, 0x4c, 0xd7, 0xa0, 0xad, 0xd7, 0x81, 0x83, 0xf5, 0x68, 0xd5, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x3d, 0x6f, 0x86, 0x0d, 0xc5, 0x74, 0x83, 0xc6, 0xbc, 0x2d, 0x36, 0x4c, 0xdc, 0x06, 0x0d, 0xba, 0x55, 0x6c, 0x28, 0xa6, 0x1b, 0x34, 0xe6, 0x6d, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xb5, 0x7d, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0x31, 0x6f, 0x8b, 0x83, 0xb6, 0xcc, 0x28, 0x66, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0x48, 0x10, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xda, 0xae, 0x3b, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x00, 0xde, 0x62, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0x87, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0x70, 0x45, 0x38, 0x68, 0x05, 0x72, 0xe0, 0x70, 0x1e, 0x6f, 0xd0, 0xf0, 0x25, 0xc4, 0x06, 0xcd, 0x66, 0x42, 0x6c, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0xf3, 0x24, 0x1b, 0x04, 0x50, 0xc2, 0x86, 0x8f, 0xda, 0x0f, 0x02, 0xe9, 0xe1, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x0d, 0x27, 0xc2, 0x06, 0x2d, 0xef, 0x5b, 0x6c, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0x20, 0x67, 0x83, 0x26, 0x64, 0x21, 0x56, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0xd0, 0xb8, 0x6e, 0xc1, 0x21, 0x9a, 0x07, 0xc7, 0x70, 0x83, 0x0d, 0x9f, 0xbb, 0x0c, 0x5e, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x76, 0x6c, 0x21, 0x0e, 0x0e, 0xa0, 0x49, 0x07, 0xcd, 0x0f, 0x43, 0x1c, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0xa0, 0xf9, 0x86, 0x8b, 0x0d, 0xc5, 0x74, 0x83, 0x06, 0xe0, 0x2d, 0x0e, 0x9a, 0xc6, 0xa8, 0x98, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xeb, 0x75, 0xe0, 0x60, 0x15, 0xde, 0xf3, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xca, 0xa9, 0x60, 0x43, 0x31, 0xdd, 0xa0, 0x09, 0x91, 0x8b, 0x83, 0xa6, 0xcf, 0x27, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0x16, 0xbb, 0x56, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xd6, 0x5d, 0x1a, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0x63, 0xb9, 0xd8, 0x30, 0x71, 0x1b, 0xb4, 0x29, 0x47, 0xb1, 0xa1, 0x98, 0x6e, 0xd0, 0x1c, 0xcb, 0xc5, 0x86, 0x89, 0xdb, 0xa0, 0xd5, 0xf6, 0x89, 0x0d, 0xc5, 0x74, 0x83, 0xe6, 0x58, 0x2e, 0x36, 0x4c, 0xdc, 0x06, 0x6d, 0x99, 0x51, 0x6c, 0x28, 0xa6, 0x1b, 0x34, 0xc7, 0x72, 0x71, 0xd0, 0x68, 0x42, 0xc5, 0xe1, 0x14, 0x6b, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0xaa, 0x64, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x9a, 0x45, 0x6f, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x48, 0xe8, 0x62, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0x87, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0x26, 0x6e, 0x83, 0x36, 0x56, 0x2a, 0x36, 0xcc, 0xfd, 0x06, 0x41, 0xb8, 0xb4, 0xa1, 0x98, 0xae, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x37, 0x08, 0x57, 0x84, 0x0d, 0xc5, 0x74, 0x0d, 0x35, 0xf3, 0x60, 0x75, 0x8e, 0xf7, 0x41, 0x43, 0xd7, 0x10, 0x87, 0xf3, 0xf8, 0xa0, 0xed, 0x80, 0x8b, 0x83, 0x00, 0x4a, 0xd8, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0x79, 0xd0, 0x3e, 0xd5, 0xc5, 0x86, 0x13, 0x61, 0x83, 0xb6, 0xbd, 0x2e, 0x0e, 0xda, 0x62, 0xb8, 0x38, 0x9c, 0xc7, 0x07, 0xad, 0x70, 0x52, 0x6c, 0x38, 0x11, 0x36, 0x68, 0xc1, 0xe9, 0xe2, 0xa0, 0x7d, 0x58, 0x8a, 0x83, 0x26, 0x65, 0x29, 0x36, 0x14, 0xd3, 0x0d, 0x1a, 0x12, 0xba, 0xd8, 0x30, 0x71, 0x1b, 0xb4, 0xda, 0x3e, 0xb1, 0xa1, 0x98, 0x6e, 0xd0, 0x90, 0xd0, 0xc5, 0x41, 0x5b, 0x66, 0x14, 0xb3, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0xac, 0xb4, 0x87, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x2d, 0x7c, 0x1d, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x13, 0x77, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xab, 0x1a, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0x9d, 0xb8, 0x8b, 0x83, 0x56, 0xdb, 0x27, 0x0e, 0xa7, 0xd8, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0x36, 0xd3, 0x79, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0x31, 0x41, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0xf2, 0xdf, 0xc5, 0x86, 0xb9, 0x1f, 0x1c, 0xde, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x1b, 0x2a, 0xe1, 0x86, 0x13, 0x61, 0x43, 0x25, 0xdc, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0x2c, 0x54, 0xa6, 0x3a, 0x58, 0x5b, 0xe9, 0xbc, 0xe1, 0x83, 0x9c, 0x0d, 0x9a, 0x90, 0x85, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x51, 0x69, 0x5e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0x50, 0xc7, 0x37, 0xbc, 0x71, 0x77, 0xb0, 0x16, 0xa6, 0x79, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x51, 0x69, 0xde, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x25, 0xbc, 0xe2, 0xe0, 0x00, 0x9a, 0xb4, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0xe7, 0x49, 0x36, 0x38, 0xf9, 0x96, 0x1e, 0x2c, 0xb1, 0xdf, 0x3e, 0x38, 0xc6, 0x9c, 0xad, 0xe1, 0x79, 0x92, 0x0d, 0x4e, 0xbe, 0xa5, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0xea, 0x60, 0xc3, 0x1b, 0x77, 0x07, 0xcb, 0x3c, 0xfb, 0x0f, 0x96, 0xd8, 0x6f, 0x6f, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0xd5, 0x33, 0x1f, 0xb4, 0x22, 0x59, 0x71, 0x70, 0x8c, 0x39, 0x5b, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xaa, 0x67, 0xde, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0x52, 0x07, 0x07, 0xed, 0x76, 0x56, 0x1c, 0xb4, 0x22, 0x59, 0xb1, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x24, 0xd0, 0xbc, 0xe1, 0x8d, 0xbb, 0x83, 0xf5, 0x09, 0xcd, 0x07, 0xc7, 0x98, 0xb3, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x22, 0x81, 0xe6, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x75, 0xb0, 0xe1, 0x8d, 0xbb, 0x39, 0x3c, 0xb7, 0x7a, 0xd0, 0x3a, 0xf0, 0xc5, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0xc9, 0x43, 0xf3, 0xc1, 0xf2, 0x2b, 0xef, 0x83, 0x63, 0xcc, 0xd9, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0xc9, 0x43, 0xf3, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x90, 0x3a, 0xd8, 0xf0, 0xc6, 0xdd, 0x1c, 0x04, 0xee, 0xc3, 0xc1, 0xf2, 0x2b, 0xef, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x74, 0xa3, 0x79, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x48, 0x1d, 0x6c, 0x78, 0xe3, 0x6e, 0x0e, 0x56, 0x39, 0x18, 0x6d, 0x78, 0xe3, 0xee, 0x60, 0x1d, 0x49, 0xf3, 0xc1, 0x4a, 0x3a, 0xfd, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xda, 0x73, 0xbc, 0x58, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0xfe, 0x1b, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x5a, 0x60, 0x43, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0xb0, 0xfc, 0x62, 0xc3, 0xc4, 0x6d, 0xd0, 0xf4, 0xf9, 0xc4, 0x86, 0x62, 0xba, 0x41, 0x83, 0xe5, 0x17, 0x07, 0xad, 0xb6, 0x4f, 0xac, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0xac, 0x91, 0x7f, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x2d, 0xcf, 0x17, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x37, 0x7f, 0x71, 0xd0, 0xa6, 0x1c, 0xc5, 0xac, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0x8b, 0x6b, 0xac, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x4b, 0xca, 0x0d, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0xf7, 0x5f, 0x1c, 0xb4, 0xc8, 0x08, 0xb1, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0xe0, 0x00, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0xac, 0x60, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0x12, 0x02, 0xc6, 0x41, 0x8b, 0x8c, 0x10, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0xcb, 0xb7, 0xae, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x03, 0x09, 0x0f, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0x4a, 0x60, 0x6c, 0x98, 0xb8, 0x0d, 0xda, 0x94, 0xa3, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x55, 0x02, 0x63, 0xc3, 0xc4, 0x6d, 0xd0, 0x6a, 0xfb, 0xc4, 0x86, 0x62, 0xba, 0x41, 0xab, 0x12, 0x18, 0x07, 0x6d, 0x99, 0x51, 0x1c, 0x4e, 0xb1, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xeb, 0x75, 0xe0, 0x60, 0x79, 0xf9, 0xf4, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0x9c, 0x64, 0x61, 0x43, 0x31, 0xdd, 0xa0, 0x69, 0x12, 0x8c, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0x1f, 0x1c, 0xde, 0x60, 0x41, 0xc3, 0xd4, 0x1a, 0x26, 0x6e, 0x83, 0x26, 0xbb, 0x2a, 0x0e, 0x5a, 0x6d, 0x9f, 0x98, 0x0d, 0xda, 0xf5, 0xaa, 0x38, 0x9c, 0x62, 0x1b, 0x8a, 0xe9, 0x06, 0x4d, 0x93, 0x60, 0x1c, 0xb4, 0xda, 0x3e, 0x71, 0x38, 0xc5, 0x5a, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0xd6, 0x99, 0x51, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x56, 0x88, 0x17, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0xcb, 0xc1, 0xd8, 0x30, 0x71, 0x1b, 0x34, 0x7d, 0x3e, 0xb1, 0xa1, 0x98, 0x6e, 0xd0, 0x5c, 0x0e, 0xc6, 0x41, 0xab, 0xed, 0x13, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0x6b, 0x34, 0xad, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x43, 0x3c, 0x0e, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0x1d, 0x61, 0x6c, 0x98, 0xb8, 0x0d, 0xda, 0x94, 0xa3, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0xed, 0x08, 0x63, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x86, 0xe9, 0xdc, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xe1, 0x8a, 0xb0, 0xa1, 0x98, 0xae, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0x04, 0xcb, 0xd2, 0x41, 0x03, 0x58, 0x17, 0x07, 0x6d, 0x63, 0x52, 0x1c, 0xce, 0xe3, 0x83, 0x56, 0x38, 0x29, 0x0e, 0xc2, 0x82, 0x69, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x4c, 0xe7, 0x41, 0x3b, 0x5b, 0x18, 0x1b, 0x4e, 0x84, 0x0d, 0x5a, 0x23, 0xc3, 0x38, 0x68, 0x1f, 0x96, 0xe2, 0x70, 0x1e, 0x1f, 0x34, 0x7b, 0x09, 0xb1, 0xe1, 0x44, 0xd8, 0xa0, 0x09, 0x2b, 0x8c, 0x83, 0x56, 0x5d, 0x21, 0x0e, 0x1a, 0x82, 0x85, 0x58, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0xd1, 0x54, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xda, 0x17, 0x66, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x08, 0x0e, 0x63, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0x87, 0x0f, 0x5a, 0x6b, 0xa4, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x08, 0x0e, 0xe3, 0xa0, 0xd5, 0xf6, 0x89, 0xd5, 0x50, 0x4c, 0xd7, 0xa0, 0xad, 0xd7, 0x81, 0x83, 0x85, 0x16, 0xd8, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0xc1, 0xfb, 0x87, 0x0d, 0xc5, 0x74, 0x83, 0xc6, 0xfe, 0x30, 0x36, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x70, 0x78, 0x43, 0x1d, 0x59, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x4c, 0xe7, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x37, 0x08, 0x57, 0x84, 0x83, 0x06, 0xe9, 0x28, 0x0e, 0xe7, 0xf1, 0x41, 0xb3, 0x97, 0x10, 0x1b, 0x4e, 0x84, 0x0d, 0x5a, 0x59, 0xc4, 0x38, 0x68, 0xd5, 0x15, 0xe2, 0xa0, 0x21, 0x58, 0x88, 0x0d, 0xc5, 0x74, 0x83, 0xc6, 0xfe, 0x30, 0x36, 0x4c, 0xdc, 0x06, 0xad, 0xb6, 0x4f, 0x6c, 0x28, 0xa6, 0x1b, 0x34, 0xf6, 0x87, 0x71, 0xd0, 0x96, 0x19, 0xc5, 0x6a, 0x28, 0xa6, 0x6b, 0xd0, 0xd6, 0xeb, 0xc0, 0xc1, 0x7a, 0xbb, 0xe9, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0x88, 0xa5, 0xc2, 0x86, 0x62, 0xba, 0x41, 0x9b, 0x9d, 0x18, 0x1b, 0x26, 0x6e, 0x83, 0xa6, 0xcf, 0x27, 0x36, 0x14, 0xd3, 0x0d, 0xda, 0xec, 0xc4, 0x38, 0x68, 0xb5, 0x7d, 0xe2, 0x70, 0x8a, 0xad, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0x4b, 0xb1, 0xa4, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x8b, 0x5d, 0x09, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0xb0, 0x62, 0x1c, 0x34, 0x7d, 0x3e, 0x71, 0x38, 0xc5, 0xd6, 0x50, 0x4c, 0xd7, 0xa0, 0xad, 0xd7, 0x81, 0x83, 0xb5, 0x7b, 0xd1, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0xad, 0x0d, 0x84, 0x0d, 0xc5, 0x74, 0x83, 0x46, 0x6e, 0x31, 0x0e, 0x5a, 0x64, 0x84, 0x58, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0xbe, 0xea, 0xbc, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x9a, 0x96, 0x21, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x30, 0x18, 0x63, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0x87, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x1e, 0x9c, 0x31, 0x67, 0x37, 0x9c, 0x08, 0x1b, 0xb4, 0xd4, 0x8c, 0xb1, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xd2, 0x18, 0x82, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0xc1, 0x6a, 0xa8, 0xe0, 0x83, 0x73, 0xbd, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x48, 0x63, 0x08, 0xde, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0xb7, 0x75, 0x0e, 0x52, 0x6a, 0x82, 0x0f, 0x0e, 0xa0, 0x49, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x68, 0x60, 0x1a, 0x63, 0x43, 0x31, 0xdd, 0xa0, 0xc1, 0x60, 0x8c, 0x83, 0x56, 0xdb, 0x27, 0x0e, 0xa7, 0xd8, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0x1c, 0x12, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0x06, 0x6d, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0x42, 0x3b, 0xc6, 0x86, 0x89, 0xdb, 0xa0, 0x95, 0x7c, 0x8b, 0x0d, 0xc5, 0x74, 0x83, 0x16, 0xda, 0x31, 0x0e, 0x9a, 0xc6, 0xa8, 0x58, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0x95, 0x2b, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x1a, 0x39, 0x4e, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x60, 0x1f, 0x63, 0xc3, 0xc4, 0x6d, 0xd0, 0xf4, 0xf9, 0xc4, 0x86, 0x62, 0xba, 0x41, 0x03, 0xfb, 0x18, 0x07, 0xad, 0xb6, 0x4f, 0xac, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0x2c, 0xce, 0x7d, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x8d, 0x97, 0x16, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x8f, 0x90, 0x71, 0xd0, 0x22, 0x23, 0xc4, 0xe1, 0x14, 0x6b, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0xcd, 0x33, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x5a, 0xba, 0x52, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x80, 0x22, 0xe3, 0xa0, 0xe9, 0xf3, 0x89, 0xd5, 0x50, 0x4c, 0xd7, 0xa0, 0xad, 0xd7, 0x81, 0x83, 0x45, 0x05, 0xd2, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0xd1, 0x6b, 0x84, 0x0d, 0xc5, 0x74, 0x83, 0xc6, 0x3c, 0x32, 0x36, 0x4c, 0xdc, 0x06, 0x4d, 0x9f, 0x4f, 0x6c, 0x28, 0xa6, 0x1b, 0x34, 0xe6, 0x91, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xb5, 0x7d, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0x31, 0x8f, 0x8c, 0x0d, 0x13, 0xb7, 0x41, 0x5b, 0x66, 0x14, 0x1b, 0x8a, 0xe9, 0x06, 0x8d, 0x79, 0x64, 0x1c, 0x34, 0x9a, 0x50, 0xb1, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0x90, 0xa4, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0xb4, 0x27, 0xc9, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0xe2, 0x4c, 0xc6, 0x86, 0x89, 0xdb, 0xa0, 0xad, 0x6a, 0x88, 0x0d, 0xc5, 0x74, 0x83, 0x16, 0x67, 0x32, 0x0e, 0x5a, 0x6d, 0x9f, 0x38, 0x9c, 0x62, 0xb5, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0xac, 0x0f, 0xac, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x0d, 0xe2, 0x33, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x23, 0x94, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xd0, 0xad, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0x1d, 0xa1, 0x8c, 0x0d, 0x13, 0xb7, 0x41, 0xab, 0xed, 0x13, 0x1b, 0x8a, 0xe9, 0x06, 0xed, 0x08, 0x65, 0x1c, 0xb4, 0x65, 0x46, 0xb1, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0xee, 0x61, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0xfc, 0xa1, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0xf2, 0x54, 0xc6, 0x41, 0xd3, 0xe7, 0x13, 0xb3, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0xac, 0x4d, 0x86, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x8d, 0x70, 0x1c, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0xe3, 0x95, 0x71, 0xd0, 0xf4, 0xf9, 0xc4, 0xac, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0x2b, 0x2d, 0xa9, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x8b, 0xf9, 0x0b, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0xa2, 0x65, 0x6c, 0x98, 0xb8, 0x0d, 0x9a, 0x3e, 0x9f, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x15, 0x2d, 0xe3, 0xa0, 0xd5, 0xf6, 0x89, 0x59, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0x96, 0xde, 0x48, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x96, 0x5f, 0x12, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0xb5, 0xcb, 0xd8, 0x30, 0x71, 0x1b, 0xb4, 0x29, 0x47, 0xb1, 0xa1, 0x98, 0x6e, 0xd0, 0xac, 0x5d, 0xc6, 0x41, 0x13, 0x8e, 0x16, 0x87, 0x53, 0x6c, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0x49, 0x36, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x1a, 0x13, 0x54, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0xa8, 0x30, 0xe3, 0xa0, 0xad, 0x6a, 0x88, 0xd5, 0x50, 0x4c, 0xd7, 0xa0, 0xad, 0xd7, 0x81, 0x83, 0xd5, 0x4c, 0xd4, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0xc1, 0xcf, 0x85, 0x0d, 0xc5, 0x74, 0x83, 0x46, 0x1f, 0x33, 0x36, 0x4c, 0xdc, 0x06, 0x0d, 0xf8, 0x53, 0x6c, 0x28, 0xa6, 0x1b, 0x34, 0xfa, 0x98, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xb5, 0x7d, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0xd1, 0xc7, 0x8c, 0x83, 0xb6, 0xcc, 0x28, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0x56, 0x20, 0x60, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x96, 0xb4, 0x1f, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0x09, 0xcd, 0x38, 0x68, 0xfa, 0x7c, 0xe2, 0x70, 0x8a, 0xd5, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0xba, 0xd0, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0xb4, 0xf4, 0xe1, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0x12, 0x6b, 0xc6, 0x41, 0x8b, 0x8c, 0x10, 0x87, 0x53, 0xac, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xeb, 0x75, 0xe0, 0x60, 0x2d, 0xc5, 0xf5, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xaa, 0xd7, 0x61, 0x43, 0x31, 0xdd, 0xa0, 0xa9, 0xdb, 0x8c, 0x0d, 0x13, 0xb7, 0x41, 0xd3, 0xe7, 0x13, 0x1b, 0x8a, 0xe9, 0x06, 0x4d, 0xdd, 0x66, 0x1c, 0xb4, 0xda, 0x3e, 0x31, 0x6b, 0x28, 0xa6, 0x6b, 0xd0, 0xd6, 0xeb, 0xc0, 0xc1, 0x2a, 0x37, 0xeb, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0x0e, 0x82, 0xc3, 0x86, 0x62, 0xba, 0x41, 0x5b, 0xc5, 0x19, 0x1b, 0x26, 0x6e, 0x83, 0xa6, 0xcf, 0x27, 0x36, 0x14, 0xd3, 0x0d, 0xda, 0x2a, 0xce, 0x38, 0x68, 0xb5, 0x7d, 0x62, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xeb, 0x75, 0xe0, 0x60, 0xbd, 0x20, 0xf4, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xfc, 0xd5, 0x60, 0x43, 0x31, 0xdd, 0xa0, 0xa9, 0xe9, 0x8c, 0x0d, 0x13, 0xb7, 0x41, 0xd3, 0xe7, 0x13, 0x1b, 0x8a, 0xe9, 0x06, 0x4d, 0x4d, 0x67, 0x1c, 0xb4, 0xda, 0x3e, 0x71, 0x38, 0xc5, 0x5a, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0x56, 0x8d, 0x4c, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x26, 0x76, 0x14, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0x0f, 0xcf, 0xd8, 0x30, 0x71, 0x1b, 0x34, 0xe8, 0x56, 0xb1, 0xa1, 0x98, 0x6e, 0xd0, 0x7c, 0x78, 0xc6, 0x41, 0xab, 0xed, 0x13, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0x2b, 0x5a, 0xa9, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xc3, 0x18, 0x0c, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0xbf, 0x67, 0x6c, 0x98, 0xfb, 0xc1, 0xe1, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x30, 0x9d, 0x1b, 0x66, 0x68, 0x43, 0xcd, 0xdc, 0x70, 0x22, 0x6c, 0xa8, 0x99, 0x1b, 0x2c, 0x66, 0x83, 0x3a, 0x58, 0xa3, 0xa3, 0xbd, 0xe1, 0x44, 0xd8, 0xa0, 0x7d, 0xfd, 0x8c, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x90, 0x48, 0x7b, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0x3e, 0x6a, 0x3f, 0x58, 0x3d, 0xa5, 0xdd, 0xc1, 0x31, 0xe6, 0xec, 0x60, 0x25, 0x9d, 0xfe, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0x6d, 0x12, 0x68, 0xac, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0xac, 0x00, 0xb6, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x4d, 0x62, 0x39, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x37, 0xa1, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xfa, 0x7c, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0xbd, 0x09, 0x8d, 0x0d, 0x13, 0xb7, 0x41, 0xab, 0xed, 0x13, 0x1b, 0x8a, 0xe9, 0x06, 0xed, 0x4d, 0x68, 0x1c, 0xb4, 0x65, 0x46, 0x31, 0x6b, 0x28, 0xa6, 0x6b, 0xd0, 0xd6, 0xeb, 0xc0, 0xc1, 0x4a, 0x7b, 0xe7, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0xe4, 0x29, 0xc1, 0x86, 0x62, 0xba, 0x41, 0x1b, 0x25, 0x1a, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0x3f, 0x38, 0xbc, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0x36, 0x54, 0xc2, 0x0d, 0x27, 0xc2, 0x86, 0x4a, 0xb8, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0x58, 0xa8, 0x4c, 0x75, 0xb0, 0x0e, 0xe1, 0x79, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0xdf, 0xba, 0x0f, 0x9a, 0x5a, 0x88, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0xbe, 0x75, 0x6f, 0xd0, 0xd0, 0x7e, 0xc5, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xf8, 0xd6, 0xbd, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x4a, 0x4a, 0xc4, 0xc1, 0x01, 0x34, 0x69, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0x2a, 0xc6, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x8a, 0x91, 0xf1, 0x83, 0x86, 0xf7, 0x25, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x75, 0x15, 0xe3, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0xac, 0x12, 0xc1, 0x3a, 0x68, 0xd4, 0x49, 0x63, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xab, 0x18, 0xdf, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x1c, 0x62, 0xe2, 0xe0, 0x00, 0x9a, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xac, 0x8c, 0x6f, 0xd0, 0xac, 0x65, 0xc4, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xb1, 0x32, 0xbe, 0x41, 0xab, 0x6f, 0x05, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xc5, 0xca, 0xf8, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xd9, 0x84, 0xb9, 0x86, 0x8f, 0xda, 0x0f, 0x56, 0x8f, 0x60, 0x77, 0xd0, 0xa2, 0x10, 0xc1, 0xc1, 0x4a, 0x3a, 0xfd, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0x1a, 0xa4, 0xd1, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0xa3, 0x44, 0xe3, 0xa0, 0xd5, 0xf6, 0x89, 0xd5, 0x50, 0x4c, 0xd7, 0xa0, 0xad, 0xd7, 0x81, 0x83, 0x35, 0xeb, 0xd7, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x15, 0xd6, 0x87, 0x0d, 0xc5, 0x74, 0x83, 0xc6, 0xf1, 0x34, 0x36, 0x4c, 0xdc, 0x06, 0x6d, 0x55, 0x43, 0x6c, 0x28, 0xa6, 0x1b, 0x34, 0x8e, 0xa7, 0x71, 0xd0, 0x6a, 0xfb, 0xc4, 0x6a, 0x28, 0xa6, 0x6b, 0xd0, 0xd6, 0xeb, 0xc0, 0xc1, 0xfa, 0xc6, 0xe7, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0xec, 0x5a, 0xc1, 0x86, 0x62, 0xba, 0x41, 0xdb, 0x86, 0x1a, 0x1b, 0x26, 0x6e, 0x83, 0x26, 0xbb, 0x2a, 0x36, 0x14, 0xd3, 0x0d, 0xda, 0x36, 0xd4, 0xd8, 0x30, 0xf7, 0x83, 0xc7, 0x87, 0xe9, 0x3c, 0x9c, 0x62, 0xb5, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0x2c, 0xa5, 0xa1, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xed, 0xe8, 0x2d, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x63, 0xa9, 0xb1, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x83, 0xc3, 0x07, 0xab, 0x47, 0xf5, 0x37, 0x14, 0xd3, 0x0d, 0xda, 0xb1, 0xd4, 0x38, 0x68, 0xb5, 0x7d, 0xe2, 0x70, 0x8a, 0xad, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x06, 0x4d, 0x9f, 0x4f, 0x1c, 0xb4, 0xda, 0x3e, 0xb1, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0x60, 0xec, 0x79, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0x50, 0x53, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0x82, 0xaa, 0xc6, 0x41, 0x93, 0x5d, 0x15, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0x8b, 0x2c, 0xab, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xc3, 0x13, 0x0d, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0xd1, 0x6a, 0x6c, 0x98, 0xb8, 0x0d, 0xda, 0x94, 0xa3, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x8d, 0x56, 0x63, 0xc3, 0xc4, 0x6d, 0xd0, 0x6a, 0xfb, 0xc4, 0x86, 0x62, 0xba, 0x41, 0x6b, 0xb4, 0x1a, 0x07, 0x6d, 0x99, 0x51, 0xac, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0xac, 0x20, 0xb0, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x4d, 0x4c, 0x36, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x5f, 0xac, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xd0, 0xad, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0xfd, 0x62, 0x8d, 0x0d, 0x13, 0xb7, 0x41, 0xc3, 0xf1, 0x14, 0x1b, 0x8a, 0xe9, 0x06, 0xed, 0x17, 0x6b, 0x6c, 0x98, 0xb8, 0x0d, 0xda, 0x32, 0xa3, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0xbf, 0x58, 0xe3, 0xa0, 0xd1, 0x84, 0x8a, 0xd5, 0x50, 0x4c, 0xd7, 0xa0, 0xad, 0xd7, 0x81, 0x83, 0x15, 0xfa, 0xd4, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x1d, 0x2f, 0x86, 0x0d, 0xc5, 0x74, 0x83, 0x46, 0xb6, 0x35, 0x36, 0x4c, 0xdc, 0x06, 0x6d, 0x55, 0x43, 0x6c, 0x28, 0xa6, 0x1b, 0x34, 0xb2, 0xad, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xb5, 0x7d, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0x91, 0x6d, 0x8d, 0x0d, 0x13, 0xb7, 0x41, 0x5b, 0x66, 0x14, 0x1b, 0x8a, 0xe9, 0x06, 0x8d, 0x6c, 0x6b, 0x1c, 0x34, 0x9a, 0x50, 0x71, 0x38, 0xc5, 0x6a, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0x2e, 0x2a, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x5a, 0x99, 0x4d, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x20, 0x5e, 0xe3, 0xa0, 0xe9, 0xf3, 0x89, 0xd5, 0x50, 0x4c, 0xd7, 0xa0, 0xad, 0xd7, 0x81, 0x83, 0x75, 0xd5, 0xd6, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x39, 0x39, 0x87, 0x0d, 0xc5, 0x74, 0x83, 0xc6, 0xf6, 0x35, 0x36, 0x4c, 0xdc, 0x06, 0x4d, 0x9f, 0x4f, 0x6c, 0x28, 0xa6, 0x1b, 0x34, 0xb6, 0xaf, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xb5, 0x7d, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0xb1, 0x7d, 0x8d, 0x83, 0xb6, 0xcc, 0x28, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0x56, 0x6a, 0x57, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xb6, 0xc5, 0x1a, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0x67, 0xd8, 0xd8, 0x30, 0x71, 0x1b, 0x34, 0x7d, 0x3e, 0xb1, 0xa1, 0x98, 0x6e, 0xd0, 0x3c, 0xc3, 0xc6, 0x41, 0xab, 0xed, 0x13, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0x6b, 0x06, 0x9d, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x0b, 0xfa, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0x6b, 0x6c, 0x1c, 0xb4, 0x83, 0x78, 0xb1, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0x5a, 0x15, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0x01, 0x6f, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0x52, 0xc9, 0xc6, 0x41, 0xd3, 0xe7, 0x13, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0x8b, 0x8f, 0xab, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x0b, 0x4c, 0x0d, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0xbe, 0x6c, 0x6c, 0x98, 0xb8, 0x0d, 0x9a, 0x3e, 0x9f, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0xf5, 0x65, 0xe3, 0xa0, 0xd5, 0xf6, 0x89, 0x59, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0xd6, 0x38, 0x47, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x16, 0x06, 0x11, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0xed, 0xd9, 0xd8, 0x30, 0x71, 0x1b, 0x34, 0x7d, 0x3e, 0xb1, 0xa1, 0x98, 0x6e, 0xd0, 0x6c, 0xcf, 0xc6, 0x41, 0xab, 0xed, 0x13, 0xb3, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0x2c, 0x96, 0x8a, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x0d, 0x93, 0x1f, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0xbb, 0xb4, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xfa, 0x7c, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0xdd, 0xa5, 0x8d, 0x83, 0x56, 0xdb, 0x27, 0x0e, 0xa7, 0xd8, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0xca, 0xf9, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0xb4, 0x11, 0xf8, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0x92, 0xd6, 0xc6, 0x86, 0x89, 0xdb, 0xa0, 0xe9, 0xf3, 0x89, 0x0d, 0xc5, 0x74, 0x83, 0x96, 0xb4, 0x36, 0x0e, 0x5a, 0x6d, 0x9f, 0x58, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0x9d, 0x03, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x9a, 0x87, 0x32, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x08, 0x6d, 0x63, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x37, 0x58, 0x5b, 0x04, 0xbd, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0x73, 0xc3, 0x0c, 0x6d, 0xd0, 0x74, 0xbf, 0xc5, 0x06, 0x0d, 0x5f, 0x42, 0x6c, 0xd0, 0x6c, 0x26, 0xc4, 0x06, 0x8b, 0xd9, 0xa0, 0x96, 0x59, 0x36, 0x3c, 0x4f, 0xb2, 0x41, 0x90, 0x29, 0x6e, 0xf8, 0xa8, 0xfd, 0x20, 0xf0, 0x27, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0x70, 0x22, 0x6c, 0xd0, 0x28, 0xdd, 0xc6, 0x06, 0x8b, 0xd9, 0xa0, 0x96, 0x59, 0x36, 0x7c, 0x62, 0xb3, 0x41, 0xeb, 0xb3, 0x10, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x68, 0x7a, 0x70, 0x63, 0x43, 0x31, 0xdd, 0xa0, 0x21, 0xb4, 0x8d, 0x0d, 0x73, 0xbf, 0xc1, 0xb2, 0x29, 0xe8, 0x83, 0x06, 0xad, 0x21, 0x0e, 0xa7, 0xd8, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0x32, 0xee, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0xb4, 0x30, 0xf2, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0xd2, 0xe3, 0xc6, 0x86, 0x89, 0xdb, 0xa0, 0x4d, 0x39, 0x8a, 0x0d, 0xc5, 0x74, 0x83, 0x96, 0x1e, 0x37, 0x36, 0x4c, 0xdc, 0x06, 0xad, 0xb6, 0x4f, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0xf4, 0xb8, 0x71, 0xd0, 0x96, 0x19, 0xc5, 0xe1, 0x14, 0x5b, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0xd6, 0xe5, 0x5e, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xb6, 0xda, 0x1e, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0x0b, 0xdd, 0x38, 0x68, 0xfa, 0x7c, 0xe2, 0x70, 0x8a, 0xd5, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0x20, 0x81, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0xb4, 0x8d, 0xb4, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0x22, 0xeb, 0xc6, 0x86, 0x89, 0xdb, 0xa0, 0xfd, 0x16, 0x8c, 0x0d, 0xc5, 0x74, 0x83, 0x16, 0x59, 0x37, 0x0e, 0x5a, 0x6d, 0x9f, 0x98, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xeb, 0x75, 0xe0, 0x60, 0x55, 0x91, 0xf4, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xcf, 0x28, 0x61, 0x43, 0x31, 0xdd, 0xa0, 0x49, 0xdd, 0x8d, 0x0d, 0x13, 0xb7, 0x41, 0x5b, 0xd5, 0x10, 0x1b, 0x8a, 0xe9, 0x06, 0x4d, 0xea, 0x6e, 0x1c, 0xb4, 0xda, 0x3e, 0xb1, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0xa0, 0xdb, 0x79, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0xe6, 0x47, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0x22, 0xf2, 0xc6, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x0f, 0x0e, 0x6f, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x0d, 0x95, 0x70, 0xc3, 0x89, 0xb0, 0xa1, 0x12, 0x6e, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x56, 0x89, 0x60, 0x1d, 0x9c, 0x7c, 0x50, 0x37, 0x3c, 0x4f, 0xb2, 0x06, 0x0b, 0x95, 0xa9, 0x0e, 0xd6, 0xd4, 0x38, 0x6f, 0xf8, 0x20, 0x67, 0x83, 0x26, 0x64, 0x21, 0xd6, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x82, 0x0b, 0xee, 0x0d, 0x9a, 0xd4, 0xbc, 0xd8, 0xa0, 0xad, 0x93, 0x82, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0x83, 0x92, 0x1b, 0x2c, 0x3f, 0xde, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x65, 0x13, 0xe6, 0x41, 0xfb, 0x0d, 0x05, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x82, 0x0b, 0xee, 0x0d, 0x9a, 0xb3, 0xbc, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0x2e, 0xb8, 0x37, 0x68, 0xf5, 0xad, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xb8, 0xe0, 0xde, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x41, 0xe3, 0xed, 0x1b, 0x07, 0x2d, 0x0a, 0x11, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x8d, 0x0b, 0xf7, 0x06, 0xad, 0x48, 0x56, 0x6c, 0xd0, 0x5e, 0x1a, 0xc1, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x0f, 0x9a, 0x56, 0x23, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xb8, 0x70, 0x6f, 0xd0, 0xcc, 0x66, 0xc5, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xe3, 0xc2, 0xbd, 0x41, 0x9b, 0x82, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x8d, 0x0b, 0xf7, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xdb, 0x84, 0x04, 0x07, 0x2d, 0x0a, 0x11, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x55, 0x10, 0xf7, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0xa5, 0xc4, 0xbd, 0x41, 0x7b, 0x69, 0x04, 0x1b, 0x3e, 0x77, 0x19, 0x3c, 0xde, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x07, 0x25, 0x37, 0x58, 0x7e, 0xbc, 0xbd, 0xe1, 0x6d, 0x9d, 0x83, 0x05, 0x54, 0xdc, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0xaa, 0x20, 0xee, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0x0e, 0x33, 0x74, 0xd0, 0x52, 0x07, 0xc7, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x15, 0xc4, 0xbd, 0x41, 0x9b, 0x82, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x55, 0x10, 0xf7, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x0f, 0x5a, 0x2d, 0xe1, 0x38, 0x68, 0x51, 0x88, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0xb1, 0xb8, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x92, 0x31, 0xee, 0x0d, 0xda, 0xbd, 0x2d, 0x38, 0x68, 0xff, 0x80, 0xe3, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x88, 0xc5, 0xbd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0x61, 0xee, 0x0f, 0x1a, 0x05, 0xe2, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0xb1, 0xb8, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x86, 0x0f, 0x72, 0x36, 0x68, 0x6b, 0x65, 0x61, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x9e, 0x77, 0xc1, 0x41, 0x6b, 0x3c, 0x04, 0x07, 0x0d, 0xc4, 0x15, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x85, 0x58, 0xdc, 0x07, 0xed, 0x4d, 0x70, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x0d, 0x1b, 0xf7, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0x32, 0xc7, 0xbd, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x6f, 0x78, 0x50, 0x72, 0x83, 0xe5, 0xc7, 0xdb, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x44, 0x7c, 0x5f, 0xc3, 0x47, 0xed, 0x07, 0xcb, 0x66, 0x9c, 0x3b, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0xb0, 0x71, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x73, 0xb0, 0xa0, 0x61, 0xea, 0xa0, 0x65, 0x2f, 0x8e, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x86, 0x8d, 0x7b, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x07, 0x2d, 0x98, 0x71, 0x1c, 0x1c, 0x40, 0x93, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x3e, 0x90, 0x7b, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x68, 0xe4, 0x5e, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0xcb, 0x8f, 0xb7, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xe9, 0x4d, 0xbf, 0x41, 0xf3, 0x67, 0x1c, 0x6b, 0xf8, 0xa8, 0xfd, 0x60, 0xa9, 0xc1, 0x73, 0x07, 0xed, 0x1f, 0x70, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0x03, 0xb9, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x14, 0xd3, 0x83, 0x86, 0x00, 0x39, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xfa, 0x40, 0xee, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0x7f, 0xd0, 0xe4, 0x21, 0xc7, 0x41, 0x6b, 0x3c, 0x04, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x7d, 0x20, 0xf7, 0x41, 0x7b, 0x13, 0x1c, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xcd, 0x27, 0xf7, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x37, 0x87, 0x3a, 0xb2, 0xe1, 0x8d, 0xbb, 0x83, 0xd5, 0xac, 0xdc, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xcd, 0x27, 0xf7, 0x06, 0x6d, 0x0a, 0x12, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x35, 0x9f, 0xdc, 0x07, 0xed, 0xfc, 0x10, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0xfe, 0x6f, 0x1f, 0x2c, 0xb1, 0xdf, 0x3e, 0x38, 0xc6, 0x9c, 0xad, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0xfe, 0x6f, 0x1f, 0xb4, 0xa8, 0x7a, 0xb1, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x2b, 0x70, 0x1f, 0x34, 0xab, 0x7d, 0x71, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0xe6, 0xaf, 0x37, 0x36, 0x14, 0xd3, 0x0d, 0x5a, 0x44, 0xde, 0xd8, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x43, 0x25, 0xdc, 0x70, 0x22, 0x6c, 0xa8, 0x84, 0x1b, 0x2c, 0x66, 0x83, 0x5a, 0x66, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x9e, 0x27, 0x59, 0x83, 0x85, 0xca, 0x54, 0x07, 0x0b, 0xe3, 0x9d, 0x37, 0x7c, 0x90, 0xb3, 0x41, 0x83, 0xbb, 0x03, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0xe5, 0xb3, 0xe1, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xd4, 0x48, 0x70, 0x70, 0xae, 0x37, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xcb, 0x67, 0xc3, 0x37, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x6a, 0x24, 0x38, 0x38, 0x80, 0x26, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xc1, 0x71, 0xf8, 0x06, 0xcb, 0xa7, 0x90, 0x37, 0x7c, 0xee, 0x32, 0x38, 0x7c, 0xd0, 0xaa, 0x57, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xe0, 0x38, 0x7c, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x07, 0xad, 0x8b, 0x15, 0x1c, 0x2c, 0x9f, 0x42, 0xde, 0xf0, 0x3c, 0xc9, 0x06, 0x0b, 0x8e, 0xc3, 0x37, 0x7c, 0xee, 0x32, 0x38, 0x7c, 0x18, 0x97, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x77, 0x0e, 0xdf, 0x20, 0xdc, 0x50, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x41, 0x13, 0x72, 0x04, 0x07, 0xed, 0xc2, 0x11, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0x9d, 0xc3, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0xe3, 0xd0, 0x41, 0xb8, 0xa1, 0x6e, 0x78, 0x9e, 0x64, 0x83, 0xf5, 0xce, 0xe1, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xd4, 0x48, 0x70, 0xd0, 0x1a, 0x0f, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xef, 0x1c, 0x7e, 0xd0, 0xc0, 0x22, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0x68, 0x87, 0x6f, 0x10, 0x1c, 0xa9, 0x07, 0x8d, 0xd0, 0x73, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0xb4, 0xc3, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0xe3, 0xf9, 0x41, 0x70, 0xa4, 0x6e, 0x78, 0x9e, 0x64, 0x83, 0x25, 0xda, 0xe1, 0x1b, 0x3e, 0x77, 0x19, 0x1c, 0x3e, 0x68, 0xcd, 0x9a, 0x63, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x8b, 0xd2, 0xc3, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x81, 0xba, 0xed, 0xa0, 0x11, 0x7a, 0x8e, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0x51, 0x7a, 0xf8, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x77, 0x10, 0x52, 0xe0, 0x07, 0x8d, 0x86, 0x74, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x45, 0xe9, 0xe1, 0x07, 0x2d, 0x67, 0x74, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x1d, 0x7e, 0xf8, 0x1a, 0xde, 0xb8, 0x3b, 0x38, 0x47, 0xb0, 0x1d, 0x34, 0x41, 0xcf, 0x71, 0x70, 0xae, 0x37, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xc3, 0x0f, 0x5f, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0x0e, 0x42, 0x00, 0xfc, 0xa0, 0xa5, 0x9a, 0x8e, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x0e, 0x3f, 0x7c, 0x83, 0xb6, 0x02, 0x3a, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x3a, 0xfc, 0xf0, 0x83, 0x06, 0x16, 0x09, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x34, 0x41, 0x7c, 0x0d, 0x6f, 0xdc, 0x1d, 0x9c, 0xa4, 0x67, 0x36, 0x68, 0x84, 0x9e, 0x63, 0x83, 0x76, 0xe1, 0x08, 0x36, 0x7c, 0xee, 0x32, 0xb8, 0x7c, 0xd0, 0x84, 0x1c, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x34, 0x41, 0x7c, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x3b, 0xa4, 0x0e, 0x0e, 0x1a, 0x60, 0xea, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0x13, 0xc4, 0x37, 0x68, 0x2b, 0xa0, 0x63, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x4d, 0x10, 0x5f, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xa1, 0x46, 0x82, 0x83, 0x76, 0x2d, 0x0d, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xd2, 0x04, 0xf1, 0x0d, 0x9f, 0xbb, 0x0c, 0x2e, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x86, 0x1a, 0x09, 0x0e, 0x9a, 0xf7, 0x34, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x52, 0x11, 0xf1, 0x35, 0xbc, 0x71, 0x77, 0x70, 0x94, 0xa0, 0x39, 0x68, 0x82, 0x9e, 0xe3, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x2a, 0x22, 0xbe, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0x1d, 0x92, 0x4b, 0x07, 0x4d, 0xbf, 0x75, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xa5, 0x22, 0xe2, 0x1b, 0xb4, 0x15, 0xd0, 0xb1, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0x8a, 0x88, 0x1f, 0x34, 0xb0, 0x48, 0xb0, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x55, 0x34, 0xe2, 0x6b, 0x78, 0xe3, 0xee, 0xe0, 0x1c, 0x33, 0x77, 0xd0, 0x04, 0x3d, 0xc7, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x8a, 0x46, 0x7c, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x3b, 0x28, 0x28, 0x8a, 0x0e, 0xda, 0x32, 0xec, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0x68, 0xc4, 0x37, 0x68, 0x2b, 0xa0, 0x63, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0xa2, 0x11, 0x3f, 0x68, 0x60, 0x91, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0x8f, 0xc4, 0x37, 0x58, 0x40, 0xff, 0xbb, 0x41, 0xa3, 0x70, 0x0b, 0x07, 0xed, 0xc2, 0x11, 0x1c, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0x8f, 0xc4, 0xd7, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x83, 0xb3, 0x69, 0xf8, 0xc1, 0x02, 0xfa, 0xdf, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xf4, 0x48, 0x7c, 0x83, 0xe6, 0xfc, 0x16, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xd2, 0x23, 0xf1, 0x83, 0x06, 0x16, 0x09, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xb4, 0x4b, 0x7c, 0x83, 0xb5, 0xf9, 0xbf, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0xf8, 0xa0, 0x15, 0xcf, 0x8e, 0x83, 0x76, 0xe1, 0x08, 0x0e, 0xce, 0xf5, 0x06, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0xa5, 0x5d, 0xe2, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x41, 0x90, 0xc5, 0x1f, 0xac, 0xcd, 0xff, 0xdd, 0xf0, 0x3c, 0xc9, 0x06, 0x4b, 0xbb, 0xc4, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x06, 0x2d, 0x3c, 0x41, 0x6c, 0xf8, 0xdc, 0x65, 0xf0, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xd4, 0x48, 0x70, 0xd0, 0x3e, 0xcd, 0xc2, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xda, 0x25, 0x7e, 0xd0, 0xc0, 0x22, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xbf, 0x89, 0xaf, 0xe1, 0x8d, 0xbb, 0x83, 0x24, 0x68, 0xbb, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xfd, 0xb2, 0x41, 0xe3, 0xba, 0x05, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x7c, 0x08, 0xb3, 0xe1, 0x83, 0x9c, 0x0d, 0x1a, 0x11, 0x2e, 0x58, 0x83, 0x36, 0x32, 0x20, 0x36, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x68, 0xb7, 0xb8, 0xe0, 0xa0, 0x0d, 0x3b, 0x82, 0x83, 0xc4, 0xeb, 0xee, 0x83, 0x06, 0x6a, 0x20, 0x0e, 0xda, 0x85, 0x23, 0x38, 0x38, 0xd7, 0x1b, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0xbf, 0x89, 0xaf, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x07, 0x83, 0x35, 0xf6, 0xa0, 0x35, 0xe9, 0x8e, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xfa, 0x4d, 0x7c, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0xf8, 0x20, 0x67, 0x83, 0xb6, 0x56, 0x16, 0x36, 0x68, 0x8f, 0xb8, 0xe3, 0xa0, 0xe5, 0xbf, 0x85, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xfa, 0x4d, 0xfc, 0xa0, 0x81, 0x45, 0x82, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x19, 0x14, 0xdf, 0x60, 0xed, 0x14, 0xf0, 0x41, 0x13, 0xf4, 0x1c, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x92, 0x41, 0xf1, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0xee, 0x10, 0xcd, 0x83, 0xb5, 0x53, 0xc0, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xc9, 0xa0, 0xf8, 0x06, 0x6d, 0x05, 0x74, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x25, 0x83, 0xe2, 0x07, 0x0d, 0x2c, 0x12, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xf5, 0x96, 0xe2, 0x6b, 0x50, 0xf0, 0x61, 0x6e, 0xd0, 0x6a, 0xf6, 0xc0, 0xc1, 0xb2, 0x00, 0xe0, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xde, 0x52, 0x7c, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x21, 0xcc, 0x06, 0x0b, 0x65, 0x9f, 0x36, 0x68, 0xa6, 0x73, 0x60, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x5a, 0x00, 0x1d, 0xd8, 0x60, 0x6d, 0x4c, 0xde, 0x61, 0x5c, 0x0e, 0x9a, 0x31, 0xb3, 0x38, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x41, 0xe3, 0xc6, 0x1c, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0xcb, 0x00, 0xae, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x83, 0xa6, 0x0e, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0x94, 0x78, 0x6c, 0x98, 0xb8, 0x0d, 0x9a, 0x3e, 0x9f, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0xa5, 0xc4, 0xe3, 0xa0, 0xd5, 0xf6, 0x89, 0x59, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0xd6, 0x32, 0x4f, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x96, 0xf9, 0x15, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0x99, 0xf1, 0xd8, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0xc1, 0xe1, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0xa1, 0x12, 0x6e, 0x38, 0x11, 0x36, 0x54, 0xc2, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0xcf, 0x93, 0xac, 0xc1, 0x42, 0x65, 0xaa, 0x83, 0xe5, 0xbb, 0xd3, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x75, 0x45, 0xd9, 0x1b, 0x3e, 0x77, 0xd9, 0x60, 0xd5, 0xba, 0xee, 0x41, 0xb3, 0x28, 0x05, 0x07, 0xc7, 0x98, 0xb3, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0xaa, 0x75, 0xdd, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xae, 0x28, 0xfb, 0xa0, 0xc9, 0x36, 0x8b, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x02, 0xaa, 0xec, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0xba, 0xb0, 0xec, 0x83, 0x66, 0x51, 0x0a, 0x36, 0x7c, 0xee, 0xb2, 0xc1, 0x22, 0x7e, 0xda, 0xc3, 0x87, 0x30, 0x07, 0xc7, 0x98, 0xb3, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x02, 0xaa, 0xec, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0xba, 0xb0, 0xec, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xda, 0x4e, 0xc1, 0xc1, 0xb9, 0xde, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xa0, 0xca, 0xde, 0xf0, 0xb9, 0xcb, 0x06, 0x8b, 0xf8, 0x69, 0x0f, 0x5a, 0xc0, 0xf0, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0x6a, 0xcb, 0x5e, 0xc3, 0xe7, 0x2e, 0x1b, 0x2c, 0x19, 0x39, 0x3d, 0x68, 0x16, 0xa5, 0x60, 0x0d, 0x9f, 0xbb, 0x6c, 0x90, 0xa2, 0x69, 0x7c, 0xd0, 0x2c, 0x4a, 0xc1, 0x41, 0x93, 0x5a, 0x1e, 0x07, 0xc7, 0x98, 0xb3, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0xa2, 0xb6, 0xec, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x92, 0x91, 0xd3, 0x83, 0x86, 0xc4, 0x3c, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xa2, 0xb6, 0xec, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x8a, 0xa6, 0xf1, 0x41, 0x03, 0x71, 0x05, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x51, 0x5b, 0xf6, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0xc4, 0x4f, 0x7b, 0xd0, 0x12, 0x51, 0xc4, 0x86, 0xe7, 0x49, 0x36, 0x58, 0xaf, 0x98, 0xbd, 0x41, 0x53, 0x78, 0x1e, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xbd, 0x62, 0xf6, 0x06, 0x4d, 0xf5, 0x79, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xf5, 0x8a, 0xd9, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xc5, 0x9d, 0xd9, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x21, 0xcc, 0x06, 0x0b, 0x65, 0x9f, 0x36, 0x68, 0xa6, 0x73, 0x60, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x5a, 0x00, 0x1d, 0xd8, 0x60, 0x6d, 0x4c, 0xde, 0xa1, 0x93, 0xda, 0x06, 0x05, 0xc1, 0xec, 0x06, 0xed, 0x5a, 0x1a, 0x6c, 0xe8, 0xa4, 0x76, 0x10, 0x9e, 0xaa, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xbd, 0x62, 0xf6, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0xc4, 0x4f, 0xbb, 0xe1, 0xeb, 0x97, 0x0d, 0x1f, 0xc2, 0x6c, 0xb0, 0x50, 0xf6, 0x69, 0x83, 0x66, 0x3a, 0x07, 0xd6, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x05, 0xd0, 0x81, 0x0d, 0xd6, 0xc6, 0xe4, 0x1d, 0x8c, 0xcc, 0xde, 0x0d, 0x0a, 0x82, 0xd9, 0x0d, 0x9a, 0xf7, 0x34, 0xd8, 0x60, 0x64, 0xf6, 0x1e, 0x84, 0xa7, 0xea, 0xc1, 0x4a, 0x3a, 0xfd, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xda, 0x14, 0xf2, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x66, 0xc6, 0xe3, 0xa0, 0xd5, 0xf6, 0x89, 0xc3, 0x29, 0xb6, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0xac, 0x6c, 0x96, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x8d, 0x78, 0x27, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x2b, 0xeb, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0xfa, 0x7c, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0x5d, 0x59, 0x8f, 0x83, 0x56, 0xdb, 0x27, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0x56, 0x6f, 0x40, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x66, 0x4f, 0x0c, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0x05, 0xf6, 0xd8, 0x30, 0xf7, 0x83, 0xc3, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x83, 0xf6, 0xf5, 0x33, 0x36, 0x9c, 0x08, 0x1b, 0xb4, 0xaf, 0x9f, 0xb1, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x2c, 0x6b, 0xaf, 0xe1, 0x73, 0x97, 0xc1, 0xcf, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0x6f, 0xeb, 0x1c, 0xac, 0x20, 0xd7, 0x3e, 0x38, 0xd7, 0x1b, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x35, 0xcb, 0xda, 0x1b, 0x3e, 0x77, 0x19, 0x7c, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x68, 0xed, 0x81, 0xe1, 0xe0, 0x00, 0x9a, 0x74, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0x86, 0xa0, 0x3d, 0x0e, 0xa7, 0xd8, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0x40, 0x44, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0x27, 0x91, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0xe2, 0xb9, 0xc7, 0x86, 0x89, 0xdb, 0xa0, 0x4d, 0x39, 0x8a, 0x0d, 0xc5, 0x74, 0x83, 0x16, 0xcf, 0x3d, 0x36, 0x4c, 0xdc, 0x06, 0xad, 0xb6, 0x4f, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x78, 0xee, 0xb1, 0x61, 0xee, 0x07, 0x97, 0x0f, 0x9a, 0x6d, 0x84, 0x98, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xeb, 0x75, 0xe0, 0x60, 0x61, 0xca, 0xf3, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0x8a, 0x9e, 0x60, 0x43, 0x31, 0xdd, 0xa0, 0x29, 0x7d, 0x8f, 0x0d, 0x73, 0x3f, 0x38, 0xbc, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0x73, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0x84, 0x2b, 0xc2, 0x86, 0x19, 0xda, 0x50, 0x09, 0x37, 0x9c, 0x08, 0x1b, 0x2a, 0xe1, 0x06, 0x8b, 0xd9, 0xa0, 0x96, 0x59, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x32, 0xa6, 0xbd, 0xe1, 0x83, 0x9c, 0x0d, 0x9a, 0x90, 0x85, 0x58, 0x83, 0xe6, 0x21, 0x2e, 0x0e, 0xda, 0x93, 0x2a, 0x38, 0x68, 0x93, 0xa6, 0xe2, 0x60, 0x25, 0x9d, 0xfe, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x87, 0xf3, 0xf8, 0xa0, 0xd9, 0x4b, 0x88, 0x0d, 0x27, 0xc2, 0x06, 0x8d, 0x15, 0x7c, 0x1c, 0xb4, 0xea, 0x0a, 0x71, 0xd0, 0x10, 0x2c, 0xc4, 0xe1, 0x14, 0x5b, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0xd6, 0xba, 0x39, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0xc3, 0x29, 0xb6, 0xa1, 0x98, 0x6e, 0xd0, 0xec, 0xc7, 0xc7, 0x86, 0xb9, 0x1f, 0x1c, 0xde, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x1b, 0x34, 0x0e, 0x39, 0xb0, 0xe1, 0x44, 0xd8, 0xa0, 0x71, 0xc8, 0x81, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0xcf, 0x93, 0x6c, 0x70, 0xe2, 0x50, 0x3d, 0x68, 0x93, 0xa6, 0xe2, 0x60, 0x25, 0x9d, 0xfe, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0x6d, 0xbb, 0x7c, 0x1c, 0x4e, 0xb1, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xeb, 0x75, 0xe0, 0x60, 0x55, 0xf5, 0xf3, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xad, 0xba, 0x60, 0x43, 0x31, 0xdd, 0xa0, 0xc9, 0x9b, 0x8f, 0x0d, 0x73, 0x3f, 0x38, 0xbc, 0xc1, 0x82, 0x86, 0xa9, 0x35, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x86, 0x4a, 0xb8, 0xe1, 0x44, 0xd8, 0x50, 0x09, 0x37, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0x06, 0x0b, 0x95, 0xa9, 0x0e, 0xd6, 0xb6, 0x3f, 0xaf, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xb0, 0x6b, 0x7c, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x88, 0xf5, 0x1b, 0xb4, 0xc1, 0x50, 0xb0, 0x86, 0x8f, 0xda, 0x0f, 0x16, 0x48, 0x38, 0x77, 0x70, 0xae, 0x37, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xed, 0x24, 0x7d, 0x6c, 0xf8, 0xdc, 0x65, 0xf0, 0x78, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x83, 0x1b, 0x3f, 0x68, 0x6c, 0xb5, 0xe0, 0x60, 0x25, 0x9d, 0xfe, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0xad, 0x1d, 0x7d, 0x1c, 0x34, 0x32, 0x83, 0xb1, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0x90, 0x3b, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0xc8, 0x89, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0xd2, 0xd8, 0xc7, 0x86, 0x89, 0xdb, 0xa0, 0xe9, 0xf3, 0x89, 0x0d, 0xc5, 0x74, 0x83, 0x96, 0xc6, 0x3e, 0x0e, 0x9a, 0x82, 0xb6, 0x38, 0x9c, 0x62, 0x6b, 0x28, 0xa6, 0x6b, 0xd0, 0xd6, 0xeb, 0xc0, 0xc1, 0x8a, 0x7d, 0xe9, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0xf0, 0x82, 0xc2, 0x86, 0x62, 0xba, 0x41, 0xdb, 0x71, 0x1f, 0x07, 0x4d, 0x9f, 0x4f, 0xac, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0xac, 0x4a, 0xb9, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x8d, 0x5f, 0x3b, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0xc3, 0xf7, 0xb1, 0x61, 0xe2, 0x36, 0x68, 0x53, 0x8e, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0x1d, 0xbe, 0x8f, 0x0d, 0x13, 0xb7, 0x41, 0xab, 0xed, 0x13, 0x1b, 0x8a, 0xe9, 0x06, 0xed, 0xf0, 0x7d, 0x6c, 0x98, 0xfb, 0xc1, 0xe5, 0x83, 0x36, 0xa9, 0x30, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0x96, 0xe6, 0x5f, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x76, 0x86, 0x1f, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0x77, 0xfc, 0xd8, 0x30, 0x71, 0x1b, 0x34, 0x7d, 0x3e, 0xb1, 0xa1, 0x98, 0x6e, 0xd0, 0xbc, 0xe3, 0xc7, 0x41, 0xab, 0xed, 0x13, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0x2b, 0x88, 0xb0, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x4b, 0x73, 0x10, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0x73, 0x7e, 0x1c, 0xb4, 0xd8, 0x36, 0x70, 0x38, 0xc5, 0xd6, 0x50, 0x4c, 0xd7, 0xa0, 0xad, 0xd7, 0x81, 0x83, 0xa5, 0xcb, 0xd4, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x09, 0x19, 0x86, 0x0d, 0xc5, 0x74, 0x83, 0xc6, 0x4f, 0x3f, 0x36, 0x4c, 0xdc, 0x06, 0x4d, 0x9f, 0x4f, 0x6c, 0x28, 0xa6, 0x1b, 0x34, 0x7e, 0xfa, 0x71, 0xd0, 0x14, 0xb4, 0xc5, 0x6a, 0x28, 0xa6, 0x6b, 0xd0, 0xd6, 0xeb, 0xc0, 0xc1, 0x4a, 0x71, 0xea, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0x46, 0x12, 0xc3, 0x86, 0x62, 0xba, 0x41, 0xdb, 0xb5, 0x1f, 0x07, 0x4d, 0x9f, 0x4f, 0x1c, 0x4e, 0xb1, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xeb, 0x75, 0xe0, 0x60, 0x79, 0x0b, 0xf6, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xec, 0x08, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0x69, 0xe0, 0x8f, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0x1f, 0x1c, 0xde, 0x60, 0x41, 0xc3, 0xd4, 0x1a, 0x26, 0x6e, 0x83, 0xc6, 0x3e, 0x35, 0x36, 0xcc, 0xfd, 0xe0, 0xf1, 0xc1, 0xea, 0x51, 0xfd, 0xd9, 0xa0, 0xb1, 0x4f, 0x8d, 0xc3, 0x29, 0xb6, 0xa1, 0x98, 0x6e, 0xd0, 0x34, 0xf0, 0xc7, 0x41, 0xab, 0xed, 0x13, 0xab, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0xeb, 0x40, 0xaf, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x63, 0x56, 0x0f, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0x57, 0x7f, 0x6c, 0x98, 0xb8, 0x0d, 0xda, 0xaa, 0x86, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0xbd, 0xfa, 0xe3, 0xa0, 0xe1, 0x78, 0x8a, 0xd5, 0x50, 0x4c, 0xd7, 0xa0, 0xad, 0xd7, 0x81, 0x83, 0x65, 0xa4, 0xcf, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x7d, 0xc3, 0x82, 0x0d, 0xc5, 0x74, 0x83, 0xc6, 0xc7, 0x3f, 0x36, 0x4c, 0xdc, 0x06, 0x4d, 0x76, 0x55, 0x6c, 0x28, 0xa6, 0x1b, 0x34, 0x3e, 0xfe, 0x71, 0xd0, 0xb8, 0xa4, 0xc6, 0xe1, 0x14, 0x6b, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0x0f, 0x12, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x5a, 0x05, 0x3d, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x50, 0xfe, 0x63, 0xc3, 0xc4, 0x6d, 0xd0, 0xf4, 0xf9, 0xc4, 0x86, 0x62, 0xba, 0x41, 0x83, 0xf2, 0x1f, 0x07, 0xad, 0xb6, 0x4f, 0x1c, 0x4e, 0xb1, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xeb, 0x75, 0xe0, 0x60, 0xad, 0x4c, 0xf4, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xb9, 0xf7, 0x60, 0x43, 0x31, 0xdd, 0xa0, 0x89, 0x00, 0x90, 0x0d, 0x13, 0xb7, 0x41, 0xd3, 0xe7, 0x13, 0x1b, 0x8a, 0xe9, 0x06, 0x4d, 0x04, 0x80, 0x6c, 0x98, 0xb8, 0x0d, 0x5a, 0x6d, 0x9f, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x22, 0x00, 0x64, 0xc3, 0xc4, 0x6d, 0xd0, 0x96, 0x19, 0xc5, 0x86, 0x62, 0xba, 0x41, 0x13, 0x01, 0x20, 0x07, 0x8d, 0x26, 0x54, 0xac, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0x2c, 0x9e, 0x90, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x4d, 0xd3, 0x23, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x63, 0x01, 0xb2, 0x61, 0xe2, 0x36, 0x68, 0xfa, 0x7c, 0x62, 0x43, 0x31, 0xdd, 0xa0, 0x1d, 0x0b, 0x90, 0x0d, 0x13, 0xb7, 0x41, 0xab, 0xed, 0x13, 0x1b, 0x8a, 0xe9, 0x06, 0xed, 0x58, 0x80, 0x1c, 0xb4, 0x65, 0x46, 0x71, 0x38, 0xc5, 0x5a, 0x43, 0x31, 0x5d, 0x83, 0xb6, 0x5e, 0x07, 0x0e, 0x56, 0xa6, 0x5b, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xf6, 0x18, 0x1d, 0x36, 0x14, 0xd3, 0x0d, 0x9a, 0x43, 0x01, 0xd9, 0x30, 0x71, 0x1b, 0xb4, 0x29, 0x47, 0xb1, 0xa1, 0x98, 0x6e, 0xd0, 0x1c, 0x0a, 0xc8, 0x86, 0x89, 0xdb, 0xa0, 0xd5, 0xf6, 0x89, 0x0d, 0xc5, 0x74, 0x83, 0xe6, 0x50, 0x40, 0x0e, 0xda, 0x32, 0xa3, 0x98, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xeb, 0x75, 0xe0, 0x60, 0xdd, 0xe8, 0xf4, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0x78, 0x5a, 0x61, 0x43, 0x31, 0xdd, 0xa0, 0x09, 0x1d, 0x90, 0x0d, 0x13, 0xb7, 0x41, 0x5b, 0x3c, 0x1e, 0x1b, 0x8a, 0xe9, 0x06, 0x4d, 0xe8, 0x80, 0x6c, 0x98, 0xb8, 0x0d, 0x5a, 0x6d, 0x9f, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x42, 0x07, 0x64, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0x97, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x86, 0x4a, 0xb8, 0xe1, 0x44, 0xd8, 0x50, 0x09, 0x37, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0x06, 0x0b, 0x95, 0xa9, 0x0e, 0xd6, 0x16, 0x4f, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x90, 0x32, 0x59, 0xc3, 0x47, 0xed, 0x07, 0x2b, 0xfe, 0xa7, 0x3b, 0x38, 0xc6, 0x9c, 0x1d, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0xa0, 0x55, 0x28, 0x90, 0x0d, 0xc5, 0x74, 0x83, 0x26, 0x74, 0x40, 0x0e, 0x1a, 0x4d, 0xa8, 0x58, 0x0d, 0xc5, 0x74, 0x0d, 0xda, 0x7a, 0x1d, 0x38, 0x58, 0xdc, 0x5e, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xda, 0xce, 0x6b, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0x70, 0x0c, 0x64, 0xc3, 0xc4, 0x6d, 0xd0, 0xf4, 0xf9, 0xc4, 0x86, 0x62, 0xba, 0x41, 0x83, 0x63, 0x20, 0x07, 0xad, 0xb6, 0x4f, 0xac, 0x86, 0x62, 0xba, 0x06, 0x6d, 0xbd, 0x0e, 0x1c, 0x2c, 0x42, 0x76, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x8d, 0x5e, 0x11, 0x6c, 0x28, 0xa6, 0x1b, 0xb4, 0x17, 0x07, 0xb2, 0x61, 0xee, 0x07, 0x87, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x06, 0x8d, 0x43, 0x0e, 0x6c, 0x38, 0x11, 0x36, 0x68, 0x1c, 0x72, 0x60, 0x83, 0xc5, 0x6c, 0x50, 0xcb, 0x2c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xf3, 0x24, 0x1b, 0x1c, 0x82, 0x40, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x48, 0x99, 0xac, 0xe1, 0xa3, 0xf6, 0x83, 0x93, 0x20, 0x68, 0x07, 0xc7, 0x98, 0xb3, 0x83, 0x95, 0x74, 0xfa, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0xb4, 0x10, 0x08, 0xb2, 0x1a, 0x8a, 0xe9, 0x1a, 0xb4, 0xf5, 0x3a, 0x70, 0xb0, 0x92, 0x5c, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0x4f, 0x9f, 0xb0, 0xa1, 0x98, 0x6e, 0xd0, 0xf2, 0x23, 0xc8, 0x86, 0x89, 0xdb, 0xa0, 0xad, 0x6a, 0x88, 0x0d, 0xc5, 0x74, 0x83, 0x96, 0x1f, 0x41, 0x0e, 0x5a, 0x6d, 0x9f, 0x38, 0x9c, 0x62, 0xad, 0xa1, 0x98, 0xae, 0x41, 0x5b, 0xaf, 0x03, 0x07, 0x4b, 0xaf, 0xa1, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x03, 0x31, 0x07, 0x1b, 0x8a, 0xe9, 0x06, 0xad, 0x79, 0x82, 0x6c, 0x98, 0xb8, 0x0d, 0xda, 0xaa, 0x86, 0xd8, 0x50, 0x4c, 0x37, 0x68, 0xcd, 0x13, 0xe4, 0xa0, 0xd5, 0xf6, 0x89, 0xc3, 0x29, 0xd6, 0x86, 0x89, 0x5b, 0x83, 0x05, 0x0d, 0x53, 0x1b, 0xb4, 0x61, 0x37, 0xb0, 0x1a, 0xe6, 0x7e, 0x70, 0x76, 0xc3, 0xc4, 0x6d, 0xd0, 0x5e, 0xe3, 0xc0, 0x86, 0x89, 0x5b, 0x83, 0x05, 0x0d, 0x53, 0x1b, 0xb4, 0x61, 0x37, 0xb0, 0x1a, 0xe6, 0x7e, 0x70, 0x76, 0xc3, 0xc4, 0x6d, 0xd0, 0x5e, 0xe3, 0xc0, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x0f, 0xce, 0x6e, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x86, 0xe9, 0xdc, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xc1, 0xde, 0xb6, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0x73, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0x71, 0x1b, 0xb4, 0xb1, 0x52, 0xb1, 0xa1, 0x98, 0x6e, 0xd0, 0x10, 0x25, 0xc4, 0x86, 0xb9, 0xdf, 0x20, 0x08, 0x97, 0x0e, 0xda, 0x7a, 0x1d, 0x38, 0x9c, 0xc7, 0x07, 0xad, 0x70, 0x52, 0x6c, 0x38, 0x11, 0x36, 0x68, 0x14, 0x18, 0xe4, 0xa0, 0x7d, 0x58, 0x8a, 0xc3, 0x79, 0xbc, 0x41, 0xc3, 0x97, 0x10, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xc1, 0xde, 0x76, 0xd0, 0x00, 0x27, 0xc4, 0xe1, 0x3c, 0xde, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x86, 0xe7, 0x49, 0x36, 0x08, 0x3f, 0xb7, 0x0d, 0x1f, 0xb5, 0x1f, 0x84, 0x09, 0xde, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x1b, 0x4e, 0x84, 0x0d, 0x9a, 0xdc, 0x05, 0xd9, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x41, 0xce, 0x06, 0x4d, 0xc8, 0x42, 0xac, 0x86, 0xcf, 0x5d, 0x06, 0x77, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0xbc, 0xad, 0x73, 0x10, 0xe8, 0x6d, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xbb, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0xdd, 0x9e, 0x0d, 0x02, 0x47, 0x6f, 0x0d, 0x1f, 0xb5, 0x1f, 0x04, 0x4a, 0x5e, 0x07, 0xad, 0xf1, 0x10, 0x6c, 0xf8, 0xdc, 0x65, 0x70, 0x79, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa5, 0x0e, 0x72, 0xd0, 0xa2, 0x10, 0xc1, 0x41, 0xf3, 0xc3, 0x10, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x68, 0xbf, 0x1b, 0x64, 0xc3, 0xdc, 0x0f, 0x2e, 0x1f, 0xb4, 0xa1, 0x0b, 0x72, 0x38, 0xc5, 0xda, 0x60, 0x41, 0xc3, 0xd4, 0x1a, 0xe6, 0x7e, 0x70, 0xf9, 0xa0, 0xc5, 0xb6, 0x81, 0x59, 0xc3, 0xdc, 0x0f, 0x2e, 0x1f, 0x34, 0x67, 0x0b, 0x72, 0x38, 0xc5, 0x0e, 0xa7, 0x58, 0x1b, 0x2c, 0x68, 0x98, 0xda, 0xa0, 0x05, 0x7f, 0x90, 0x59, 0xc3, 0xdc, 0x0f, 0x2e, 0x1f, 0x34, 0x07, 0x0b, 0x72, 0x38, 0xc5, 0x0e, 0xa7, 0x58, 0x07, 0x21, 0xa5, 0xbc, 0x41, 0xc3, 0x97, 0x10, 0x6b, 0x98, 0xb8, 0x35, 0x14, 0xd3, 0x0d, 0xda, 0x3a, 0x1c, 0xd8, 0x30, 0xf7, 0x83, 0x87, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x61, 0x3a, 0x37, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0x0d, 0x73, 0xbf, 0x41, 0xb0, 0xb7, 0x6d, 0x28, 0xa6, 0xab, 0x61, 0x86, 0x36, 0x68, 0xab, 0x93, 0xe2, 0xa0, 0x15, 0x4e, 0x8a, 0x83, 0xb0, 0x60, 0xda, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0x79, 0xd0, 0x9a, 0x45, 0xc8, 0x86, 0x13, 0x61, 0x83, 0xb6, 0x35, 0x42, 0x0e, 0xda, 0x87, 0xa5, 0x38, 0x9c, 0xc7, 0x07, 0xad, 0x3b, 0x83, 0x6c, 0x38, 0x11, 0x36, 0x68, 0x28, 0x22, 0xe4, 0xa0, 0x31, 0x6e, 0x90, 0x83, 0xf6, 0xbb, 0x41, 0x0e, 0x42, 0x4a, 0x79, 0x83, 0xc5, 0x6c, 0x50, 0x07, 0x07, 0x78, 0xa5, 0x0d, 0x27, 0xc2, 0x06, 0x6d, 0x0f, 0x0e, 0x6c, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0xff, 0xe0, 0x08, 0xbf, 0x75, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x79, 0x7c, 0xd0, 0xba, 0x33, 0xc8, 0x86, 0x13, 0x61, 0x83, 0x96, 0xfd, 0x06, 0x0e, 0x1a, 0xe3, 0x06, 0x39, 0x68, 0xbf, 0x1b, 0x64, 0xc3, 0xdc, 0x0f, 0x2e, 0x1f, 0x34, 0xd5, 0x37, 0x70, 0x38, 0xc5, 0x36, 0x58, 0xd0, 0x30, 0xb5, 0x41, 0x0b, 0xfe, 0x20, 0xb3, 0x86, 0xb9, 0x1f, 0x5c, 0x3e, 0x68, 0x35, 0x6f, 0xe0, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x0e, 0x42, 0x4a, 0x79, 0x83, 0x86, 0x2f, 0x21, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0xc1, 0xc3, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x30, 0x9d, 0x1b, 0x66, 0x68, 0x83, 0x36, 0xa0, 0x41, 0x0e, 0x5a, 0x77, 0x06, 0xd9, 0x70, 0x22, 0x6c, 0xd0, 0x9e, 0x51, 0xc8, 0x41, 0x63, 0xdc, 0x20, 0x07, 0xed, 0x77, 0x83, 0x1c, 0x84, 0x94, 0xf2, 0x06, 0x8b, 0xd9, 0xa0, 0x0e, 0x8e, 0xc3, 0x31, 0x07, 0x07, 0x8e, 0x9f, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x88, 0xe1, 0xc1, 0x6a, 0x06, 0xa0, 0xe3, 0xdb, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0x38, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0xe7, 0x33, 0x30, 0x48, 0x06, 0x42, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x7b, 0x3e, 0x03, 0x83, 0x64, 0x20, 0x5e, 0x07, 0x8d, 0x36, 0x0d, 0x0c, 0x92, 0x21, 0x07, 0xed, 0x18, 0x0d, 0x1c, 0x87, 0x36, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x37, 0x58, 0xff, 0xf8, 0xb2, 0x41, 0x82, 0x24, 0xf4, 0x06, 0x25, 0x50, 0xe4, 0x06, 0x6b, 0xd2, 0x12, 0x36, 0x38, 0x47, 0xee, 0x1e, 0xb4, 0xcb, 0x35, 0x70, 0x7c, 0x3b, 0x1e, 0x0f, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0xf6, 0x7c, 0x06, 0x06, 0xc9, 0x40, 0xe8, 0x0e, 0x1a, 0x6d, 0x1a, 0xd8, 0x90, 0xfb, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xdc, 0x60, 0x01, 0x1a, 0xc3, 0x06, 0xe7, 0xc8, 0xdd, 0x0d, 0x12, 0x3c, 0x9e, 0x37, 0x58, 0xff, 0xf8, 0xb2, 0x41, 0xda, 0x4b, 0xf5, 0x20, 0x58, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0xfd, 0x1a, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x20, 0xd9, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x86, 0x62, 0xba, 0x06, 0xad, 0x14, 0x0e, 0x1c, 0x1c, 0xe3, 0xb6, 0x36, 0x58, 0xd0, 0x30, 0xb5, 0x86, 0xb9, 0x1f, 0x3c, 0x3c, 0x68, 0x35, 0x6f, 0x60, 0x0d, 0x1a, 0x63, 0x1b, 0x38, 0x9c, 0x62, 0x1d, 0x84, 0x94, 0xf2, 0x41, 0xf3, 0x41, 0x21, 0x07, 0x07, 0x8e, 0x9f, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x88, 0xe1, 0xc1, 0x6a, 0x06, 0xa0, 0xe3, 0xdb, 0xf1, 0x78, 0x10, 0x2c, 0x48, 0x06, 0x5d, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x62, 0x66, 0xf8, 0x8d, 0xe7, 0x07, 0xe7, 0x09, 0xde, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0xbc, 0x82, 0x60, 0x83, 0x85, 0x26, 0x46, 0x8b, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x96, 0x58, 0xf1, 0x2f, 0x08, 0x16, 0x24, 0x83, 0xae, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xc3, 0x5e, 0xe1, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x0d, 0xbb, 0xc1, 0x0a, 0x41, 0xfe, 0x0d, 0x5a, 0xfb, 0x0c, 0x19, 0x76, 0x83, 0xb5, 0x26, 0xfd, 0x0b, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x37, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0xc1, 0xc7, 0xc1, 0xdf, 0xc1, 0xe5, 0xc1, 0xcb, 0x41, 0xdb, 0xe0, 0xee, 0xe0, 0xf5, 0xe0, 0xed, 0xe0, 0xe2, 0xe0, 0xe5, 0xe0, 0xf2, 0xa0, 0x6d, 0xf0, 0x77, 0x70, 0x73, 0xd0, 0x36, 0xf8, 0x38, 0x38, 0x3a, 0x78, 0x38, 0x38, 0x3c, 0x38, 0x3d, 0x78, 0x39, 0xb8, 0x7c, 0x70, 0x6e, 0xe7, 0x3b, 0xbe, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0x8d, 0x7f, 0x86, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x0e, 0xbf, 0xf1, 0x7c, 0xb8, 0x05, 0xc1, 0x06, 0x2d, 0x15, 0x0c, 0x0c, 0x92, 0xc1, 0xad, 0x41, 0xb4, 0xb0, 0x07, 0x69, 0xc5, 0x23, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0x4b, 0x05, 0x03, 0x83, 0x64, 0x70, 0x6b, 0x10, 0x2d, 0xec, 0x04, 0xf5, 0xfd, 0x38, 0x74, 0x1c, 0x1a, 0x64, 0x6b, 0x68, 0xbf, 0x7e, 0xb0, 0x5e, 0x9a, 0x7f, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x6b, 0x7d, 0x07, 0xc7, 0xac, 0xe2, 0x41, 0x32, 0x10, 0xba, 0xc3, 0x76, 0xef, 0x20, 0x58, 0x1c, 0x76, 0xc3, 0xfa, 0xde, 0x06, 0x81, 0x89, 0x3d, 0x08, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf8, 0x10, 0xcd, 0x43, 0x72, 0x69, 0x10, 0x6c, 0x30, 0xbc, 0x02, 0x0e, 0x06, 0xef, 0xe4, 0xf1, 0xed, 0xf8, 0x76, 0x3c, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0x1a, 0xa2, 0x14, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xc8, 0xda, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x43, 0xee, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x83, 0x93, 0xde, 0xee, 0x06, 0x43, 0xea, 0x77, 0x83, 0xf5, 0x8f, 0x2f, 0x1b, 0x24, 0x48, 0x42, 0x6f, 0x50, 0x8a, 0x48, 0x6e, 0xb0, 0xd4, 0xa6, 0x60, 0x83, 0x12, 0x28, 0x72, 0x83, 0xf5, 0x8f, 0x2f, 0x1b, 0x0c, 0x7c, 0xe3, 0x0d, 0xd2, 0x9f, 0x9e, 0x37, 0x58, 0x6a, 0x53, 0xb0, 0xc1, 0x02, 0x34, 0x86, 0x0d, 0xce, 0x91, 0xbb, 0x1b, 0x94, 0x22, 0x92, 0x1b, 0x94, 0x40, 0x91, 0x1b, 0xac, 0x7f, 0x7c, 0xd9, 0x60, 0x4d, 0x5a, 0xc2, 0x06, 0x69, 0x2f, 0xd5, 0x83, 0x60, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0xa8, 0x5a, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0x5a, 0xf7, 0x06, 0x38, 0x0e, 0x1d, 0x62, 0x78, 0xb0, 0x9a, 0x01, 0xe8, 0xf8, 0x76, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0x41, 0xa3, 0xb5, 0x02, 0x07, 0x0d, 0x91, 0x09, 0x1c, 0xcf, 0x8f, 0xc7, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0xa1, 0x89, 0xd1, 0xe2, 0x20, 0x58, 0x1c, 0x76, 0x83, 0x25, 0x56, 0xfc, 0x1b, 0xb4, 0xf6, 0x19, 0x32, 0xec, 0x06, 0x0b, 0x9e, 0xf8, 0x17, 0x04, 0x1b, 0x34, 0xfe, 0x19, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x91, 0xb9, 0xfe, 0xc1, 0xd8, 0x70, 0x3d, 0x0e, 0x0d, 0xbb, 0xc1, 0xa2, 0x2e, 0xfe, 0x0d, 0x1a, 0x53, 0x10, 0x19, 0x76, 0x83, 0x15, 0x82, 0xfc, 0x0b, 0x82, 0x0d, 0x1a, 0xff, 0x0c, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd8, 0x2b, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xce, 0x0d, 0xa2, 0x0d, 0x9d, 0x83, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x39, 0x58, 0x64, 0xae, 0x7f, 0x1c, 0x3a, 0x0e, 0x0d, 0xbb, 0xc1, 0x5a, 0x93, 0xfe, 0x05, 0xc1, 0x06, 0x8d, 0x7f, 0x86, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xda, 0xa0, 0xd9, 0xcf, 0x80, 0x43, 0xaa, 0xe6, 0x60, 0xe0, 0x87, 0x1c, 0x87, 0x86, 0xdd, 0x60, 0xbd, 0x34, 0xff, 0x82, 0x60, 0x83, 0x56, 0x96, 0x43, 0x36, 0x58, 0xca, 0x30, 0x35, 0x08, 0x16, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0x21, 0x86, 0x83, 0x60, 0x83, 0x46, 0xa5, 0x43, 0x06, 0xc1, 0x06, 0xc3, 0x2b, 0x60, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x6b, 0x7d, 0x07, 0xe7, 0xfa, 0xe3, 0x83, 0x61, 0x16, 0x79, 0x68, 0xd4, 0x72, 0x7c, 0x1b, 0x64, 0x1b, 0x9a, 0xaf, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x41, 0x3c, 0x48, 0x06, 0xb3, 0x41, 0xb4, 0xa1, 0x9b, 0xcb, 0x41, 0xc0, 0xfb, 0x1f, 0x8f, 0x8f, 0x6f, 0xc7, 0xe3, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xe4, 0x89, 0x7b, 0xd8, 0xa8, 0x3d, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x50, 0x75, 0x3c, 0x3f, 0x18, 0xd8, 0xa2, 0x83, 0x60, 0xe1, 0x17, 0x44, 0x0b, 0x84, 0x7f, 0x10, 0x2c, 0x48, 0x06, 0x84, 0x55, 0xdf, 0xc1, 0x30, 0xf4, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x10, 0xa9, 0x17, 0x7e, 0xe3, 0xf9, 0x06, 0x45, 0xae, 0xc2, 0x06, 0x69, 0xee, 0x19, 0x07, 0x4b, 0x91, 0xb3, 0x36, 0x18, 0x88, 0xd4, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x4a, 0xdd, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x96, 0x2f, 0xd9, 0xa0, 0x3c, 0x32, 0x98, 0xe0, 0xde, 0x3f, 0x0e, 0x1d, 0x34, 0xbe, 0x25, 0x72, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0xc5, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0x1a, 0xdf, 0x12, 0xd9, 0x10, 0xc3, 0x41, 0xb0, 0x20, 0x58, 0x82, 0xde, 0xfb, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0xcc, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2b, 0xd8, 0xb9, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf6, 0x0a, 0x27, 0x78, 0xde, 0xff, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x8b, 0xc3, 0x6e, 0x10, 0x7c, 0xcc, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x8c, 0xe0, 0xd3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x83, 0x77, 0x72, 0x43, 0xaa, 0xe6, 0x60, 0x4c, 0x58, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0xd0, 0xaf, 0xef, 0x60, 0x38, 0x4a, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x97, 0x40, 0x70, 0xff, 0x6f, 0x48, 0x1d, 0x1c, 0x8c, 0xc5, 0xce, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0xd0, 0x83, 0xc0, 0xc4, 0x5e, 0xd8, 0x0d, 0x5a, 0xd9, 0x09, 0x58, 0xd8, 0x85, 0x3b, 0x38, 0xc9, 0x71, 0x2f, 0xdc, 0x86, 0x18, 0x1e, 0x04, 0x0f, 0xf7, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0x41, 0xfb, 0x80, 0x22, 0x0b, 0xbb, 0x41, 0x2b, 0x3b, 0x01, 0x1b, 0x34, 0x41, 0x28, 0x72, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x1a, 0x87, 0x06, 0xc9, 0x90, 0x83, 0x92, 0x01, 0x60, 0xd8, 0x85, 0xdd, 0xa0, 0x7d, 0x40, 0x91, 0x85, 0xdd, 0xa0, 0x95, 0x9d, 0x80, 0x83, 0xb6, 0x0a, 0x45, 0x0e, 0x47, 0xfb, 0x1a, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x20, 0x3e, 0x08, 0xf9, 0xec, 0x43, 0x72, 0x69, 0x90, 0xad, 0xa1, 0xfd, 0xfa, 0xb0, 0x1b, 0xb4, 0x0f, 0x28, 0xb2, 0x41, 0x2b, 0x3b, 0x01, 0x87, 0xa3, 0x7d, 0xe3, 0xd0, 0x06, 0x4d, 0x5d, 0x8a, 0x1c, 0x34, 0x01, 0x29, 0x72, 0x7c, 0x1b, 0x76, 0x61, 0x17, 0x7a, 0x90, 0x56, 0x3c, 0xb2, 0xb0, 0x0b, 0x3d, 0x68, 0x3c, 0x32, 0x60, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0x92, 0x37, 0x6b, 0x16, 0x6e, 0x43, 0x0c, 0x27, 0xe8, 0xdf, 0x7f, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0xdf, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xd0, 0xb8, 0xa8, 0xc8, 0xc2, 0x6e, 0xd0, 0x26, 0xa9, 0xc8, 0x06, 0x8d, 0x99, 0x8a, 0x1c, 0x8e, 0xf6, 0xc3, 0xd1, 0xbe, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x70, 0xef, 0x1f, 0x34, 0x95, 0x2a, 0x72, 0x3c, 0x1f, 0x76, 0x61, 0x37, 0x68, 0x5c, 0x54, 0x64, 0x61, 0x37, 0x68, 0x93, 0x54, 0xe4, 0xa0, 0x29, 0x54, 0x91, 0xc3, 0xd1, 0xbe, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x70, 0xef, 0x1f, 0x24, 0x6f, 0xd6, 0x1c, 0xcf, 0x07, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0xbb, 0x41, 0xe3, 0xa2, 0x22, 0x1b, 0xb4, 0x49, 0x2a, 0x72, 0x38, 0xda, 0x37, 0x0e, 0x6d, 0xd0, 0x00, 0xaf, 0xc8, 0x41, 0x03, 0xb3, 0x22, 0xc7, 0xb7, 0x05, 0xc1, 0x82, 0x64, 0x40, 0x58, 0xf5, 0x1d, 0x0c, 0xff, 0xd8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x85, 0x5b, 0xd2, 0xc2, 0x6f, 0x3c, 0xdf, 0x20, 0x59, 0xbe, 0x64, 0x83, 0xf2, 0xc8, 0xe0, 0x60, 0x8c, 0x3d, 0x6d, 0x50, 0xb8, 0x25, 0x2d, 0xfc, 0xc6, 0xf3, 0xc5, 0xc3, 0x39, 0x72, 0x1c, 0x3a, 0x48, 0x2b, 0x1e, 0x39, 0x0e, 0x1d, 0x14, 0x71, 0x48, 0x07, 0x63, 0x19, 0xea, 0x78, 0xbc, 0x20, 0x58, 0x3c, 0x68, 0x50, 0x51, 0x60, 0x71, 0x90, 0x6d, 0x88, 0xcb, 0x20, 0x58, 0x0c, 0xe8, 0xd1, 0xca, 0xda, 0xe0, 0x5a, 0x62, 0x68, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x36, 0x18, 0xdc, 0xd3, 0x07, 0x83, 0xf2, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0xfd, 0x75, 0x30, 0x1c, 0xa5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xe1, 0x3a, 0x18, 0x8e, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xc2, 0x77, 0xe7, 0x60, 0xf8, 0xc7, 0x1e, 0x2c, 0x4c, 0xfe, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x08, 0x74, 0xb9, 0x83, 0xf1, 0xae, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0xdf, 0x06, 0xc1, 0x86, 0xa3, 0x7d, 0x10, 0x2c, 0x2e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x04, 0x26, 0xf6, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x6e, 0x30, 0x7a, 0xb1, 0x16, 0x76, 0x83, 0x20, 0xf1, 0xde, 0x60, 0xac, 0xa3, 0x1d, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x57, 0xc3, 0x5e, 0xe1, 0xc1, 0xd0, 0xec, 0x3a, 0x08, 0x4c, 0xec, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x85, 0xdd, 0x60, 0xf4, 0x62, 0x1d, 0x34, 0x1a, 0x30, 0x72, 0x38, 0xda, 0x17, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xfa, 0x15, 0x04, 0x0b, 0x92, 0x41, 0xdd, 0xc1, 0x39, 0xef, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x60, 0x62, 0x1f, 0x1a, 0xcf, 0x1f, 0x87, 0x0e, 0x86, 0x66, 0xd7, 0x41, 0x60, 0x62, 0x0f, 0xa2, 0x05, 0xf3, 0x41, 0xb0, 0x41, 0x1b, 0x0e, 0x23, 0x07, 0xa3, 0xa7, 0xe8, 0x20, 0x24, 0xbe, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x16, 0x76, 0x83, 0xd1, 0x8b, 0xb5, 0x41, 0x90, 0x78, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0xbe, 0x20, 0x19, 0x32, 0x88, 0x36, 0x68, 0xa1, 0x61, 0x64, 0x10, 0x6d, 0xd0, 0x74, 0xc5, 0xc8, 0xc1, 0x82, 0xba, 0x9d, 0x41, 0xb6, 0x86, 0xf6, 0xeb, 0xc3, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0xe8, 0xc5, 0x3a, 0x1c, 0xed, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x50, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0x5a, 0x68, 0x18, 0x19, 0x44, 0x0b, 0xe6, 0x83, 0x60, 0x83, 0x36, 0x1c, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x04, 0x26, 0xf6, 0xc1, 0x90, 0x3d, 0x3f, 0x0e, 0x1d, 0x84, 0xc4, 0xf7, 0x20, 0x5a, 0x30, 0x1f, 0x04, 0x1b, 0xb4, 0xe1, 0x30, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x30, 0xb1, 0x0f, 0xc6, 0x35, 0xfa, 0x71, 0xe8, 0x60, 0x41, 0xdd, 0xce, 0xf1, 0x78, 0xd8, 0x0d, 0xca, 0xa8, 0x82, 0x0d, 0xa9, 0x9a, 0x61, 0x17, 0x76, 0x83, 0x55, 0xee, 0xff, 0x0b, 0xbb, 0xd0, 0x09, 0xea, 0xfe, 0xc2, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x94, 0x47, 0x06, 0x1b, 0x34, 0x02, 0x26, 0x72, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x5f, 0x10, 0x6c, 0x50, 0x32, 0x34, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x27, 0xd8, 0xed, 0x3f, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0xac, 0x72, 0xff, 0x5f, 0xd8, 0x0d, 0xda, 0xf3, 0x19, 0x39, 0x68, 0x39, 0x68, 0xe4, 0x70, 0xb4, 0x2f, 0x48, 0x86, 0x1b, 0x44, 0x1b, 0x94, 0x3d, 0x06, 0x83, 0x68, 0x41, 0x3c, 0x08, 0x16, 0x24, 0xc3, 0x0c, 0xa2, 0x85, 0x1d, 0x04, 0x0b, 0x92, 0x41, 0xdd, 0xc1, 0xd9, 0xcb, 0xf8, 0xd0, 0x31, 0xfe, 0x78, 0x7c, 0xd0, 0x96, 0xd1, 0xc8, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0x41, 0x9b, 0x53, 0x23, 0x07, 0x69, 0x99, 0x1f, 0xc7, 0xe3, 0x61, 0x17, 0x76, 0x83, 0x55, 0xee, 0xff, 0x0b, 0xbb, 0x41, 0x7b, 0x3e, 0x23, 0x1b, 0xb4, 0xfe, 0x33, 0x72, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x82, 0x64, 0xb8, 0x41, 0xb4, 0xc0, 0xec, 0x1f, 0x34, 0xbe, 0x25, 0x72, 0xd0, 0x12, 0xd4, 0xc8, 0x20, 0x5b, 0x43, 0xfb, 0xf5, 0x61, 0x37, 0x58, 0xe5, 0xfe, 0xbf, 0x41, 0x7b, 0x3e, 0x23, 0x87, 0xa3, 0x7d, 0x90, 0x0c, 0x37, 0x88, 0x36, 0x68, 0x4f, 0x6c, 0x64, 0x10, 0x2d, 0x88, 0x07, 0xc9, 0x70, 0x83, 0x68, 0x83, 0xb2, 0xc7, 0x60, 0x10, 0x6d, 0xd0, 0x30, 0xd4, 0xc8, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0x41, 0x9b, 0x53, 0x23, 0x07, 0x63, 0xed, 0xfc, 0x78, 0x3c, 0x88, 0x16, 0x76, 0x10, 0x6c, 0xd0, 0xe6, 0xd4, 0xc8, 0xc1, 0x80, 0x44, 0x3f, 0x1e, 0x1f, 0x94, 0x43, 0x49, 0xc7, 0xa1, 0x35, 0x58, 0x72, 0x3c, 0xb5, 0xe1, 0x68, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x24, 0x03, 0xfb, 0x75, 0x07, 0xc7, 0xac, 0xe2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0x2a, 0x18, 0x18, 0x24, 0x03, 0xc5, 0xef, 0x60, 0xac, 0xaf, 0x1e, 0x1a, 0xb5, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xa6, 0xe5, 0x68, 0x71, 0x10, 0x2c, 0x48, 0x06, 0xfa, 0xf5, 0x0d, 0xa2, 0x85, 0x1d, 0x04, 0x0b, 0x92, 0x01, 0x61, 0xd5, 0x77, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x70, 0x2a, 0x47, 0x5e, 0xf8, 0x8d, 0xe7, 0x1b, 0x94, 0x04, 0x0d, 0x1b, 0xa4, 0x37, 0x36, 0x1c, 0x2c, 0x45, 0xce, 0xda, 0xe0, 0x54, 0x8e, 0xbc, 0xf0, 0x1b, 0xcf, 0xd7, 0x60, 0xc9, 0xf1, 0xd4, 0x86, 0xa3, 0xfd, 0x90, 0x5c, 0x3a, 0xc4, 0xf0, 0x60, 0xd1, 0xc6, 0xd8, 0x71, 0xe8, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x41, 0x7a, 0x63, 0xc3, 0xc1, 0x32, 0x13, 0xa3, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0x74, 0x3c, 0x3e, 0xc4, 0xf0, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x16, 0x9a, 0x18, 0x2d, 0x0e, 0x82, 0x0d, 0x31, 0x1c, 0x04, 0x8b, 0x0b, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x37, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0xc1, 0xc7, 0xc1, 0xe5, 0xc1, 0xdf, 0x83, 0x83, 0x47, 0xc6, 0xf1, 0xed, 0x78, 0x3c, 0xec, 0xc2, 0x2e, 0xdc, 0x06, 0xe3, 0x4d, 0xe7, 0xb0, 0x57, 0xb8, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x06, 0x0b, 0x4d, 0x8c, 0x0e, 0x7b, 0x85, 0x87, 0x74, 0xee, 0x06, 0xeb, 0x1b, 0x8c, 0x86, 0x5d, 0xb8, 0x0d, 0xd6, 0x37, 0x18, 0x1d, 0xf6, 0x0a, 0x37, 0x18, 0x6f, 0x3a, 0xc3, 0x6e, 0xb0, 0x8c, 0xe7, 0x7f, 0x61, 0x37, 0x58, 0xf7, 0xfd, 0xbf, 0xb0, 0x0b, 0xbb, 0xc1, 0x2a, 0xf7, 0xff, 0xc3, 0xfa, 0xe6, 0xc2, 0x2e, 0xec, 0x06, 0xcb, 0xd6, 0xff, 0x0f, 0xeb, 0x9b, 0x07, 0xab, 0x4c, 0xfe, 0x87, 0xdd, 0xa0, 0xb5, 0xdf, 0x91, 0x0d, 0xd6, 0x37, 0x18, 0x0d, 0xbb, 0xc1, 0x2a, 0xf9, 0xff, 0x83, 0x55, 0x26, 0xff, 0xc3, 0x6e, 0xb0, 0xb6, 0xff, 0x7f, 0x83, 0xf1, 0xa6, 0x33, 0xc8, 0x36, 0x34, 0x5f, 0x3f, 0x28, 0x87, 0x92, 0x86, 0xdd, 0x60, 0xed, 0xd1, 0xff, 0xc2, 0x6e, 0xb0, 0xee, 0xfb, 0x7f, 0x83, 0xf1, 0xa6, 0x33, 0xec, 0x06, 0x6b, 0xfb, 0xff, 0x17, 0x76, 0x41, 0xb0, 0x20, 0x19, 0x9c, 0x1b, 0x44, 0x1b, 0x2c, 0xf5, 0xe4, 0x3f, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x8c, 0x0d, 0xd7, 0x83, 0x92, 0xa6, 0xe1, 0x38, 0xb4, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0xfb, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x92, 0xa6, 0x61, 0xf8, 0x8d, 0xe7, 0x07, 0x8d, 0x23, 0x00, 0x1c, 0x87, 0x0e, 0xc6, 0x9b, 0xce, 0x41, 0xeb, 0xc9, 0x23, 0xc3, 0x6e, 0xb0, 0x60, 0xea, 0x7f, 0x61, 0x17, 0x76, 0x83, 0x75, 0xdf, 0xff, 0x1b, 0x62, 0x78, 0xb0, 0xb6, 0xff, 0x7f, 0x83, 0xf1, 0xa6, 0x73, 0x50, 0x0e, 0x25, 0x0d, 0xbb, 0xc1, 0x3a, 0xc6, 0xff, 0x05, 0xc1, 0x82, 0x64, 0xe0, 0xa9, 0xbe, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0xa4, 0x69, 0x18, 0x7e, 0xe3, 0xf9, 0xc1, 0x92, 0xca, 0xff, 0xe3, 0xd0, 0xb0, 0x1b, 0xac, 0x16, 0xfb, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0x8e, 0xbe, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x6c, 0x30, 0x48, 0x5e, 0x0e, 0x86, 0xa3, 0xf4, 0xc1, 0x52, 0xb8, 0xff, 0xe3, 0xd0, 0xb0, 0x1b, 0x2c, 0xd8, 0xfc, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0xce, 0xbe, 0x83, 0xf1, 0xae, 0x73, 0xd0, 0x5a, 0xfb, 0xc8, 0xb0, 0x1b, 0xac, 0x42, 0xfd, 0x5f, 0xd8, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x55, 0x76, 0xff, 0x83, 0x64, 0x60, 0xfa, 0x0e, 0xed, 0x5b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x68, 0xef, 0x75, 0xe4, 0x38, 0xb4, 0xe1, 0x14, 0x1b, 0x24, 0xc3, 0x0c, 0xa2, 0x05, 0xf7, 0x0f, 0xda, 0x2b, 0x13, 0x19, 0x44, 0x0b, 0x3b, 0x08, 0x16, 0x04, 0x1b, 0xac, 0xb2, 0xfb, 0x3f, 0x28, 0x18, 0x1d, 0x0e, 0x9a, 0x3a, 0x20, 0x39, 0x1e, 0x0f, 0xbb, 0xc1, 0x2a, 0x96, 0xff, 0x05, 0xc9, 0x30, 0x83, 0x68, 0x83, 0x26, 0x1a, 0x48, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x0f, 0xd6, 0x96, 0xfc, 0x1f, 0xac, 0x6f, 0x30, 0x1a, 0x76, 0x61, 0x37, 0x58, 0x03, 0xfe, 0xbf, 0x70, 0x1b, 0xac, 0xe9, 0x96, 0x3a, 0xc4, 0xff, 0x70, 0xb4, 0x6f, 0x30, 0xde, 0x74, 0x86, 0x5d, 0xd8, 0x0d, 0xd6, 0x80, 0xff, 0x2f, 0xdc, 0x06, 0x0b, 0xe9, 0xa5, 0x0e, 0xf1, 0x3f, 0x1c, 0xed, 0x0b, 0x92, 0x61, 0x06, 0xd1, 0x82, 0xf9, 0x20, 0x19, 0xcc, 0x06, 0xd1, 0x06, 0x43, 0x7f, 0xf5, 0x90, 0xad, 0x38, 0x1e, 0x0f, 0xbb, 0xb0, 0x1b, 0xac, 0x01, 0xff, 0x5f, 0xb8, 0x0d, 0x96, 0x32, 0x4c, 0x1d, 0xe2, 0x7f, 0x38, 0xda, 0x17, 0x04, 0x0b, 0x82, 0x0d, 0x56, 0xd9, 0xfd, 0x0f, 0x92, 0x81, 0xd0, 0x1d, 0x34, 0x4f, 0x26, 0x30, 0x08, 0x16, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0xc1, 0x40, 0xa4, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0x02, 0xe3, 0x3f, 0x48, 0x86, 0x19, 0x44, 0x0b, 0xe6, 0x87, 0x68, 0x1e, 0x92, 0x4b, 0x07, 0x45, 0xcd, 0xd9, 0xf1, 0x6d, 0xd8, 0x85, 0xdd, 0x60, 0x0d, 0xf8, 0xff, 0xc2, 0x6d, 0xb0, 0x34, 0x65, 0xea, 0x10, 0xff, 0xc3, 0xd1, 0xbe, 0x41, 0x5b, 0x25, 0x24, 0xc3, 0x2e, 0xec, 0x06, 0x6b, 0xc0, 0xff, 0x17, 0x6e, 0x83, 0xe5, 0x4a, 0x53, 0x87, 0xf8, 0x1f, 0x8e, 0xf6, 0x0d, 0xda, 0x2a, 0x21, 0x39, 0x48, 0xbf, 0x8e, 0x3e, 0x28, 0x19, 0x9a, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x1f, 0x93, 0x7b, 0x83, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x16, 0x9a, 0x18, 0x2d, 0x0e, 0xbb, 0xc1, 0x62, 0xc6, 0xfe, 0x85, 0x5d, 0x10, 0x6c, 0xb0, 0x94, 0xb2, 0xff, 0x60, 0x05, 0xcd, 0xff, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x8f, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0xe1, 0x68, 0x1f, 0x04, 0x0b, 0x92, 0x41, 0xdd, 0xc1, 0xf0, 0x8f, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xa2, 0xa0, 0x0d, 0xbf, 0xf1, 0x7c, 0xd8, 0x0d, 0x79, 0xac, 0x0d, 0x47, 0xfb, 0xc1, 0xd0, 0xec, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0x07, 0xc9, 0xc0, 0xd1, 0x77, 0x3c, 0x3f, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x83, 0x85, 0xd6, 0x56, 0x8b, 0x1b, 0x2c, 0xa4, 0x97, 0x5a, 0x35, 0x44, 0xf3, 0xb0, 0x75, 0x70, 0x48, 0x4c, 0x1d, 0x62, 0x78, 0xd8, 0x2b, 0x3c, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x5f, 0xac, 0x6e, 0x6e, 0x3e, 0xa4, 0x96, 0x8e, 0xc7, 0x2b, 0x08, 0x16, 0xd7, 0x60, 0x51, 0x9c, 0xd1, 0xc1, 0xa2, 0x38, 0xa3, 0x83, 0x35, 0x1d, 0x47, 0x8b, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x4e, 0xb8, 0xb8, 0xb0, 0x1b, 0xac, 0x93, 0xd9, 0x5f, 0x10, 0x2c, 0x0e, 0xbb, 0x41, 0x90, 0x34, 0xaf, 0x04, 0x31, 0x3e, 0x38, 0xd6, 0xd7, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xe0, 0xa9, 0xbb, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x45, 0xe6, 0xfa, 0x1b, 0x5a, 0x00, 0x1d, 0x14, 0x56, 0x6a, 0xc7, 0xa1, 0x41, 0xb0, 0x82, 0x60, 0x41, 0x32, 0xb0, 0x77, 0x37, 0x88, 0x16, 0x76, 0x82, 0x19, 0x3f, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x14, 0x9d, 0x30, 0x87, 0x68, 0x1e, 0x87, 0x06, 0xc1, 0x82, 0x64, 0x60, 0xef, 0x6e, 0x10, 0x6d, 0xb0, 0x28, 0xf6, 0xeb, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0x74, 0xc2, 0x1c, 0xc6, 0xe5, 0x38, 0x34, 0xec, 0xc2, 0x6d, 0x50, 0x50, 0x14, 0x1d, 0x04, 0x59, 0xfc, 0x82, 0x64, 0xc8, 0x20, 0x5a, 0x20, 0xce, 0x07, 0x83, 0x35, 0x76, 0x10, 0x2d, 0x10, 0xe3, 0x83, 0xb3, 0x69, 0xf8, 0x20, 0x5a, 0xd0, 0x7d, 0x50, 0xca, 0xec, 0x1c, 0x92, 0x4b, 0x87, 0x53, 0xec, 0xf8, 0x76, 0x38, 0xc5, 0x86, 0x5d, 0xb8, 0x0d, 0x47, 0xfb, 0xc1, 0x89, 0xe5, 0x7e, 0x61, 0x17, 0x6e, 0x09, 0xc2, 0x78, 0xb0, 0xb8, 0x6d, 0x7f, 0x41, 0xb0, 0x82, 0x60, 0x41, 0x32, 0xb0, 0xd6, 0x77, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x40, 0xe8, 0x06, 0xd1, 0xc2, 0x4e, 0x30, 0xc7, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0xc3, 0xa2, 0x24, 0x83, 0x64, 0x20, 0x74, 0x83, 0x68, 0x61, 0x27, 0x98, 0xe7, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x2c, 0x0e, 0xbb, 0x41, 0x51, 0xa5, 0xb0, 0x21, 0x75, 0x30, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xa7, 0xee, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8b, 0xcc, 0xf5, 0x37, 0x08, 0xf9, 0xec, 0x09, 0xaa, 0xfd, 0x71, 0x68, 0x10, 0xac, 0x20, 0x58, 0x90, 0x0c, 0x3c, 0xf7, 0x77, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x25, 0x38, 0xf6, 0x37, 0x44, 0xf3, 0x10, 0xff, 0xe3, 0xd0, 0x20, 0xd8, 0xa0, 0xf9, 0x5b, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x4d, 0xee, 0x92, 0x1c, 0xa4, 0x8f, 0x05, 0x1d, 0x87, 0x86, 0xdd, 0xa0, 0xc5, 0x48, 0x92, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfb, 0x41, 0xc3, 0x3e, 0x23, 0x83, 0x68, 0x61, 0x0f, 0x9a, 0xa3, 0x01, 0x38, 0x24, 0x97, 0x0e, 0xa7, 0xd8, 0xf1, 0x6d, 0x41, 0xb0, 0xc1, 0x39, 0xe0, 0xfb, 0x60, 0x18, 0x3b, 0x0c, 0x82, 0x05, 0xc9, 0x30, 0x83, 0x68, 0x41, 0xf7, 0xe1, 0x68, 0x3f, 0x64, 0x2b, 0x0e, 0x46, 0x14, 0xee, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0xc7, 0xe3, 0x15, 0x7e, 0x41, 0xb0, 0xc1, 0x42, 0x6b, 0xab, 0xc5, 0x61, 0x17, 0x76, 0x83, 0xd1, 0x8b, 0xb5, 0x70, 0x1b, 0x2c, 0x07, 0x7a, 0x3a, 0x34, 0x12, 0x3c, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0xa8, 0x0e, 0xc9, 0xa5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xac, 0xdd, 0x86, 0x66, 0x49, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x24, 0x75, 0x9e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x83, 0x6f, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x06, 0xb7, 0x0e, 0xfd, 0x89, 0x8e, 0x43, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0x83, 0xd1, 0x8b, 0xb5, 0x70, 0x1b, 0xac, 0x74, 0x79, 0x3a, 0x34, 0x12, 0x3c, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x6b, 0x44, 0xfb, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x45, 0xed, 0x3f, 0x34, 0x4b, 0x3a, 0x0e, 0x0d, 0xbb, 0xc1, 0x22, 0x8f, 0xa0, 0x0d, 0x02, 0x13, 0x7b, 0x90, 0x6d, 0xb0, 0x8e, 0xb6, 0x7f, 0xf8, 0x05, 0xc1, 0x06, 0xab, 0x73, 0xfb, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1a, 0x09, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xd0, 0xc4, 0x68, 0x71, 0xd8, 0x0d, 0xc9, 0x8e, 0x05, 0xc1, 0x82, 0x64, 0xe0, 0xe9, 0xbf, 0x83, 0x20, 0xe7, 0x1f, 0x24, 0xc3, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x39, 0x48, 0x96, 0x2f, 0x39, 0x0e, 0x0d, 0x82, 0x0d, 0x5a, 0x00, 0x28, 0x19, 0x24, 0x83, 0xec, 0xa0, 0x6d, 0x81, 0x92, 0xe3, 0xf1, 0x71, 0xe8, 0x78, 0x3e, 0xec, 0xc2, 0x6e, 0x88, 0xe6, 0xc2, 0x2e, 0xec, 0x06, 0xa3, 0x17, 0x6b, 0xe1, 0x36, 0x58, 0x0c, 0xf0, 0x74, 0x68, 0x24, 0x78, 0x38, 0xda, 0x0f, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x1c, 0x76, 0x83, 0x20, 0x69, 0xde, 0x20, 0x30, 0xb1, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0x7e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xd2, 0x43, 0xe3, 0xa2, 0xe3, 0xf9, 0xc1, 0xb2, 0x54, 0xb2, 0xe3, 0xdb, 0xb0, 0x0b, 0xbb, 0xb0, 0x1b, 0xa2, 0x79, 0x58, 0xdf, 0x5c, 0xd8, 0x85, 0xdd, 0x60, 0xf4, 0x62, 0x2d, 0xdc, 0x06, 0x2b, 0xd0, 0x9c, 0x0e, 0x8d, 0x04, 0x0f, 0x47, 0xfb, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x37, 0x68, 0x3f, 0xa2, 0x64, 0x10, 0x2c, 0x08, 0x36, 0x18, 0x85, 0x3b, 0x83, 0x64, 0x10, 0x1d, 0xfa, 0x6a, 0x0c, 0xbb, 0x70, 0x1b, 0x87, 0x0e, 0xf9, 0xda, 0x0d, 0x02, 0x13, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xd2, 0xe3, 0xd0, 0xf1, 0xfc, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xfc, 0x31, 0xb4, 0x34, 0xf8, 0x90, 0x5a, 0x3a, 0x1e, 0xaf, 0xf0, 0x0b, 0x82, 0xc5, 0x0d, 0xd3, 0xb9, 0x61, 0x3a, 0x0f, 0xc2, 0x53, 0x75, 0x71, 0x10, 0x2c, 0x2e, 0x08, 0x36, 0x58, 0x68, 0x62, 0xb4, 0xb8, 0x20, 0xd8, 0x20, 0x19, 0x93, 0xfe, 0xd0, 0xa8, 0xe5, 0x90, 0x3a, 0x38, 0x1e, 0xaf, 0x20, 0x58, 0xdc, 0x60, 0x49, 0x06, 0xd4, 0x6c, 0x38, 0x14, 0x36, 0x08, 0x4f, 0xd5, 0x16, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x1b, 0x72, 0xdf, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xe0, 0xed, 0xe0, 0xf5, 0xe0, 0xec, 0xe0, 0xec, 0xa0, 0x6d, 0xf0, 0x73, 0x70, 0xf9, 0xb0, 0x72, 0x77, 0x7c, 0x3b, 0x1e, 0x0f, 0x82, 0x05, 0xc9, 0x20, 0x1b, 0x44, 0x0b, 0xba, 0x0f, 0x4d, 0xb8, 0x06, 0xd1, 0x82, 0xf1, 0xc1, 0x42, 0x13, 0xa3, 0x43, 0x72, 0x69, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xe3, 0x37, 0x88, 0x16, 0xf6, 0x20, 0xa4, 0xc0, 0x0f, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0x5c, 0x36, 0xc4, 0x7f, 0x43, 0x0b, 0xa0, 0x0d, 0x4d, 0x87, 0x0e, 0x12, 0x3d, 0x15, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0xd6, 0x02, 0x02, 0x1c, 0x0c, 0x63, 0x87, 0x83, 0x10, 0x00, 0x3f, 0x1e, 0x0f, 0x82, 0x0d, 0x16, 0x9a, 0x18, 0x2d, 0x0e, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x37, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0xc1, 0xdb, 0xc1, 0xeb, 0xc1, 0xd9, 0xc1, 0xd9, 0x83, 0xf6, 0xed, 0x05, 0x8e, 0x6f, 0xc7, 0xe3, 0x61, 0x17, 0x76, 0x83, 0xa5, 0x7b, 0xfb, 0x1b, 0x62, 0x38, 0xec, 0x82, 0x60, 0x41, 0x32, 0x38, 0x37, 0x88, 0x36, 0xa4, 0x38, 0x0e, 0x82, 0x9c, 0xff, 0x60, 0x1c, 0x87, 0x1c, 0xd2, 0xb9, 0x87, 0x86, 0x9b, 0xc7, 0xe3, 0x61, 0x17, 0x6e, 0x83, 0xf5, 0x0d, 0x46, 0x07, 0x81, 0x89, 0xbd, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x0c, 0xf0, 0x68, 0xab, 0x63, 0x63, 0x6b, 0x71, 0x7b, 0x73, 0x2b, 0x0f, 0xa7, 0xd8, 0xb0, 0x0b, 0xbb, 0xc1, 0x32, 0x4c, 0xff, 0x85, 0x1e, 0x1a, 0x17, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x82, 0x64, 0x90, 0x0d, 0xa2, 0x05, 0xdd, 0x87, 0xc6, 0x45, 0x83, 0x68, 0x83, 0x96, 0x96, 0x4a, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0x32, 0xc8, 0x06, 0xd1, 0x82, 0xee, 0x43, 0xa3, 0xa3, 0x41, 0xb4, 0x41, 0x4b, 0x4b, 0x25, 0xc7, 0xf3, 0x05, 0xc1, 0x06, 0xc9, 0x98, 0xf4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xba, 0xef, 0x60, 0x18, 0xfa, 0x1c, 0x8c, 0x52, 0xd9, 0xe3, 0xd0, 0x20, 0xd8, 0xa0, 0xc9, 0xc3, 0x92, 0x83, 0xd5, 0x16, 0x44, 0xc3, 0x2e, 0xec, 0x06, 0xcb, 0x30, 0xfd, 0x17, 0x6e, 0x83, 0xe5, 0x39, 0x49, 0x87, 0xc6, 0x45, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0xc1, 0xf9, 0x89, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0x96, 0x22, 0x67, 0x6d, 0x90, 0xac, 0x81, 0xb0, 0xf0, 0x1b, 0xcf, 0x0f, 0x56, 0x40, 0x4a, 0x6d, 0x30, 0xde, 0x90, 0x0e, 0x12, 0x3d, 0x15, 0x8e, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0xcb, 0x30, 0xfd, 0x17, 0x6e, 0x83, 0x25, 0xb6, 0x49, 0x87, 0xc6, 0x45, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0xc1, 0xf9, 0x89, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x3b, 0x95, 0x25, 0x1b, 0x24, 0x6b, 0x20, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xb5, 0x94, 0x52, 0x07, 0x6d, 0x68, 0x96, 0x1c, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x96, 0x61, 0xfa, 0x2f, 0xdc, 0x06, 0x4b, 0xe5, 0x95, 0x0e, 0x8d, 0x8b, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xd7, 0x61, 0x85, 0x76, 0x90, 0x0c, 0x33, 0x88, 0x16, 0x76, 0x83, 0x64, 0x0d, 0x84, 0x83, 0x44, 0x4f, 0x85, 0xe3, 0xd0, 0x41, 0x6a, 0x27, 0xcd, 0xb0, 0x0b, 0xbb, 0xc1, 0x32, 0x4c, 0xff, 0x85, 0xdb, 0x60, 0x5d, 0xc0, 0xd2, 0xa1, 0x71, 0xd1, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0xd9, 0x20, 0x5a, 0xd0, 0x7d, 0x50, 0x62, 0x0f, 0x1e, 0xb4, 0xc4, 0x57, 0x32, 0x48, 0x06, 0xd9, 0x20, 0x5a, 0xd0, 0xbd, 0xc1, 0xf2, 0xe9, 0xa5, 0x83, 0x64, 0x0d, 0x84, 0xe3, 0xf9, 0xb0, 0x0b, 0xbb, 0xc1, 0x32, 0x4c, 0xff, 0x85, 0xdb, 0x60, 0x65, 0xc4, 0xd2, 0xa1, 0x71, 0xd1, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0xd9, 0x20, 0xda, 0x60, 0x95, 0x2a, 0xd9, 0x20, 0x5a, 0x30, 0x3e, 0x58, 0x37, 0xaa, 0x7f, 0x3c, 0x1e, 0x04, 0x1b, 0x24, 0xb6, 0x9c, 0x1c, 0xac, 0xf6, 0xd4, 0x1f, 0x76, 0x61, 0x37, 0x58, 0x86, 0xe9, 0xbf, 0x70, 0x1b, 0x2c, 0xd5, 0x42, 0x3a, 0x34, 0x2e, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x0d, 0x4a, 0x86, 0xa6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x7d, 0x77, 0x58, 0xa1, 0x3d, 0x58, 0x87, 0xca, 0x7f, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x58, 0x86, 0xe9, 0xbf, 0x70, 0x1b, 0x2c, 0x3a, 0x42, 0x3a, 0x34, 0x2e, 0x3a, 0x1c, 0xed, 0x1b, 0xb4, 0x49, 0x5d, 0x32, 0xec, 0xc2, 0x6e, 0xb0, 0x0c, 0xd3, 0x7f, 0xe1, 0x36, 0x58, 0x0a, 0xb2, 0x74, 0x68, 0x5c, 0x74, 0x38, 0xda, 0x17, 0x04, 0x2b, 0x48, 0x06, 0xd9, 0x20, 0xda, 0x20, 0xac, 0xca, 0x0f, 0x5a, 0xe2, 0x2b, 0x39, 0x68, 0x6d, 0xb7, 0x64, 0x10, 0x6c, 0x90, 0xd8, 0x72, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x58, 0x64, 0xae, 0x7f, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x58, 0x86, 0xe9, 0xbf, 0x70, 0x1b, 0x2c, 0x86, 0x59, 0x3a, 0x34, 0x2e, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x0d, 0xda, 0x38, 0x2f, 0x19, 0x04, 0x1b, 0x24, 0xb6, 0x9c, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0xb0, 0xd2, 0x63, 0xe0, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xb0, 0x0c, 0xd3, 0x7f, 0xe1, 0x36, 0x58, 0xfd, 0xb3, 0x74, 0x68, 0x5c, 0x74, 0x38, 0xda, 0x17, 0x04, 0x0b, 0x92, 0x41, 0x36, 0x88, 0x36, 0x58, 0xa5, 0x4a, 0x76, 0xd0, 0x12, 0x5f, 0xc9, 0x41, 0x23, 0xf6, 0x25, 0xc3, 0x2e, 0xec, 0x06, 0xcb, 0x30, 0xfd, 0x17, 0x6e, 0x83, 0xf5, 0x23, 0x3f, 0x87, 0xc6, 0x45, 0x87, 0xa3, 0x7d, 0x0d, 0xc2, 0x9e, 0xfa, 0x20, 0xec, 0xa9, 0x87, 0x5d, 0xd8, 0x0d, 0x96, 0x61, 0xfa, 0x2f, 0xdc, 0x06, 0xeb, 0x9f, 0x96, 0x0e, 0x8d, 0x8b, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x41, 0x32, 0xc8, 0x0e, 0x96, 0xa5, 0x92, 0x2d, 0x08, 0x16, 0x24, 0x03, 0xcb, 0x7f, 0x83, 0x68, 0x83, 0xc6, 0x9f, 0x4a, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0x16, 0x57, 0x67, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x64, 0x60, 0xf9, 0x6f, 0x10, 0x6d, 0x50, 0xba, 0x77, 0x1c, 0xb2, 0x15, 0x07, 0x0d, 0x5a, 0x98, 0x0c, 0xbb, 0xb0, 0x1b, 0x2c, 0xc3, 0xf4, 0x5f, 0xb8, 0x0d, 0x96, 0xbb, 0x2d, 0x1d, 0x1a, 0x17, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x0a, 0x82, 0x0d, 0xd6, 0x45, 0x83, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x19, 0xbb, 0xe4, 0x60, 0x49, 0x55, 0xff, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x06, 0xd2, 0x77, 0x83, 0x68, 0x43, 0xe7, 0xa0, 0xc3, 0x0a, 0xed, 0xc1, 0x92, 0xaa, 0xfe, 0x41, 0xb0, 0x20, 0x19, 0x64, 0x83, 0x68, 0x41, 0xf7, 0x41, 0xa2, 0xa7, 0xc2, 0x41, 0xe9, 0x40, 0x72, 0x48, 0x1d, 0x0c, 0xbb, 0xb0, 0x1b, 0x2c, 0xc3, 0xf4, 0x5f, 0xb8, 0x0d, 0x16, 0x34, 0x2e, 0x1d, 0x1a, 0x17, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0x0d, 0x43, 0x98, 0x2c, 0x08, 0x36, 0x68, 0x64, 0xc2, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0x45, 0xc3, 0x59, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0xcb, 0x1a, 0x26, 0x07, 0xcd, 0xf1, 0x98, 0x0c, 0xbb, 0xb0, 0x1b, 0x2c, 0xc3, 0xf4, 0x5f, 0xb8, 0x0d, 0x96, 0x04, 0x22, 0x1d, 0x1a, 0x17, 0x1d, 0x8e, 0xf6, 0x15, 0x04, 0x0b, 0x92, 0x81, 0xa7, 0xfa, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0xd1, 0xd1, 0xc1, 0x78, 0xd3, 0x39, 0x0e, 0x0d, 0x82, 0x0d, 0xda, 0x40, 0x32, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x74, 0x74, 0x68, 0x01, 0x74, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x58, 0x86, 0xe9, 0xbf, 0x70, 0x1b, 0x2c, 0x23, 0x5e, 0x3a, 0x34, 0x2e, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x0d, 0x1a, 0x86, 0x30, 0x59, 0x10, 0x6c, 0xd0, 0xc8, 0x84, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0x6b, 0xc8, 0xb3, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x96, 0x35, 0x4c, 0x0e, 0xda, 0xd5, 0x32, 0x19, 0x76, 0x61, 0x37, 0x58, 0x86, 0xe9, 0xbf, 0x70, 0x1b, 0x2c, 0xc1, 0x3d, 0x3a, 0x34, 0x2e, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc9, 0x20, 0x1b, 0x44, 0x1b, 0x34, 0xcb, 0x5b, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0xd0, 0xaa, 0xff, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x6f, 0x30, 0xde, 0x74, 0x0e, 0x92, 0x35, 0x10, 0x0e, 0xd1, 0x3c, 0x0e, 0x0d, 0x82, 0x0d, 0x5a, 0xf5, 0x1f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x2d, 0x80, 0x0e, 0x92, 0x35, 0x10, 0x0e, 0xe3, 0x72, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x58, 0x86, 0xe9, 0xbf, 0x70, 0x1b, 0x2c, 0xe9, 0x5c, 0x3a, 0x34, 0x2e, 0x3a, 0x1c, 0xed, 0x1b, 0x34, 0x0c, 0x61, 0x32, 0xec, 0xc2, 0x6e, 0xb0, 0x0c, 0xd3, 0x7f, 0xe1, 0x36, 0x58, 0x85, 0xce, 0x74, 0x68, 0x5c, 0x74, 0x38, 0xda, 0x17, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x0e, 0x92, 0x81, 0xa3, 0x6f, 0x10, 0x2d, 0xec, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0xef, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x41, 0x9a, 0x7b, 0xc6, 0x71, 0xe8, 0x90, 0xad, 0x38, 0x1e, 0x1f, 0x34, 0x65, 0x66, 0x32, 0xec, 0xc2, 0x6e, 0xb0, 0x0c, 0xd3, 0x7f, 0xe1, 0x36, 0x58, 0xec, 0xc6, 0x74, 0x68, 0x5c, 0x74, 0x38, 0xda, 0x37, 0x68, 0xca, 0xcc, 0x64, 0xd8, 0x85, 0xdd, 0x60, 0x19, 0xa6, 0xff, 0xc2, 0x6d, 0xb0, 0x2e, 0xbd, 0xe9, 0xd0, 0xb8, 0xe8, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x68, 0xe5, 0xbc, 0x64, 0x90, 0x0c, 0xb2, 0x41, 0xb4, 0xc1, 0xa8, 0xfa, 0x1f, 0x44, 0x0b, 0xd6, 0x1b, 0x84, 0x00, 0xf8, 0x41, 0xa2, 0xa7, 0xc2, 0xf1, 0x7c, 0xd8, 0x85, 0xdd, 0x60, 0x19, 0xa6, 0xff, 0xc2, 0x6d, 0xb0, 0xfe, 0xca, 0xe9, 0xd0, 0xb8, 0xe8, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0x7a, 0x75, 0x58, 0xa1, 0x3d, 0x58, 0x52, 0xd5, 0x3f, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0x7a, 0x75, 0xd0, 0xc8, 0xf4, 0xc8, 0x41, 0x03, 0x87, 0x26, 0x83, 0x64, 0x90, 0x0d, 0xa2, 0x05, 0xf5, 0x87, 0xd4, 0xc1, 0x20, 0x5a, 0xb0, 0xde, 0x38, 0x74, 0x90, 0xe8, 0xad, 0x70, 0x48, 0x2e, 0x0d, 0xbb, 0xb0, 0x1b, 0x2c, 0xc3, 0xf4, 0x5f, 0xb8, 0x0d, 0x16, 0x79, 0x3a, 0x1d, 0x1a, 0x17, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x82, 0x64, 0x90, 0x0d, 0xa2, 0x0d, 0xc2, 0xaa, 0x7c, 0x10, 0x2d, 0x18, 0x0f, 0x92, 0x81, 0xa5, 0xbe, 0x83, 0x80, 0xf7, 0x3f, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x0a, 0x82, 0x05, 0xc9, 0xc0, 0xf0, 0x1d, 0xb2, 0x15, 0x07, 0x0d, 0x1c, 0x9a, 0x0c, 0x82, 0x05, 0xc9, 0xc0, 0xf0, 0x1d, 0x34, 0x32, 0x3d, 0x72, 0xd0, 0xc0, 0xa1, 0xc9, 0xb0, 0x0b, 0xb7, 0xc1, 0xfa, 0x06, 0xa3, 0x83, 0x90, 0x02, 0x5f, 0x83, 0xf5, 0x0d, 0x46, 0xc3, 0x2e, 0xdc, 0x06, 0xeb, 0x1b, 0x8c, 0x0e, 0x42, 0x00, 0x7c, 0x83, 0xf5, 0x0d, 0x46, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0x31, 0xf0, 0xd3, 0xcc, 0x5a, 0xf4, 0x41, 0xb0, 0x20, 0x19, 0x48, 0xdf, 0x0d, 0xa2, 0x0d, 0x4a, 0xf7, 0x8e, 0x83, 0x20, 0xe7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x24, 0x88, 0x74, 0x1c, 0x87, 0x86, 0xdd, 0xa0, 0x55, 0x63, 0x93, 0x05, 0xd9, 0x1a, 0xf2, 0xd8, 0x63, 0x80, 0x57, 0x5b, 0x1d, 0x1b, 0x5b, 0x8b, 0xd8, 0x9b, 0xdb, 0x5a, 0x8b, 0x78, 0x38, 0xc5, 0x06, 0xc9, 0x20, 0x1b, 0x44, 0x1b, 0x8c, 0xaa, 0xff, 0x41, 0xb4, 0x60, 0xbd, 0x41, 0x08, 0x80, 0x1f, 0x24, 0xc6, 0x67, 0x1c, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb0, 0x82, 0x60, 0x41, 0x32, 0x60, 0xf0, 0xfd, 0x1d, 0x04, 0x39, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xa0, 0x3c, 0x32, 0x38, 0x0e, 0x0d, 0x82, 0x05, 0xc9, 0x80, 0xc1, 0xf7, 0x37, 0x88, 0x36, 0x48, 0x54, 0xba, 0x38, 0x08, 0x72, 0xfe, 0x83, 0x76, 0xc7, 0x4d, 0x86, 0xdd, 0xa0, 0x6d, 0x61, 0x93, 0x35, 0x58, 0xdf, 0x60, 0x34, 0xec, 0x06, 0xad, 0x1a, 0x9b, 0x6c, 0xb0, 0xbe, 0xc1, 0x68, 0x90, 0xad, 0x21, 0x8f, 0x3d, 0x06, 0x7e, 0x9a, 0x59, 0x4b, 0x38, 0x08, 0x16, 0x24, 0x03, 0xe9, 0xbb, 0x41, 0xb4, 0x41, 0xe9, 0xde, 0x71, 0x10, 0xf0, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0xc6, 0x23, 0x03, 0x8e, 0x43, 0xc3, 0x6e, 0xd0, 0xaa, 0xb1, 0xc9, 0x82, 0x6c, 0x0d, 0x79, 0xec, 0x31, 0xc0, 0xab, 0xad, 0x8e, 0x8d, 0xad, 0x45, 0xec, 0xcd, 0x6d, 0xad, 0x65, 0x3c, 0x9c, 0x62, 0x83, 0x64, 0x90, 0x0d, 0xa2, 0x0d, 0x46, 0xd5, 0xff, 0x20, 0x5a, 0xb0, 0xde, 0x20, 0x04, 0xc0, 0x27, 0xc8, 0xef, 0x1f, 0x56, 0x68, 0x17, 0x04, 0x0b, 0x92, 0xc1, 0xea, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x1c, 0x7d, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x6b, 0xb7, 0x21, 0x9a, 0x07, 0x03, 0x3f, 0xe4, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0x34, 0xbb, 0x70, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaf, 0xdd, 0x30, 0x2e, 0x07, 0x03, 0x3f, 0xe4, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xb0, 0x0c, 0xd3, 0x7f, 0xe1, 0x36, 0x58, 0xfa, 0x7c, 0x74, 0x68, 0x5c, 0x74, 0x38, 0xda, 0x17, 0x04, 0x6b, 0xd0, 0x0a, 0x8a, 0xc9, 0x41, 0x33, 0x2b, 0x26, 0x83, 0x60, 0x05, 0xc1, 0x82, 0x64, 0x60, 0xad, 0xef, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0x82, 0x60, 0x41, 0x32, 0x20, 0xec, 0xfe, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8b, 0xcc, 0xf5, 0x87, 0xdf, 0x78, 0xbe, 0xc1, 0x32, 0x4e, 0xa4, 0x83, 0x44, 0x4f, 0x85, 0xe3, 0xd0, 0xf1, 0xfc, 0x38, 0x34, 0x08, 0x36, 0x68, 0x11, 0xe4, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x17, 0x04, 0x0b, 0x92, 0x01, 0x61, 0xf7, 0x77, 0xd0, 0xc8, 0xf4, 0xc8, 0x41, 0xc3, 0x27, 0x27, 0xc7, 0xf3, 0xe3, 0xd0, 0x20, 0x58, 0x41, 0xb0, 0x20, 0x19, 0x58, 0xbb, 0x1b, 0x44, 0x1b, 0x8c, 0x30, 0x80, 0x83, 0x20, 0xe7, 0x3f, 0x18, 0xc6, 0x0e, 0x83, 0x60, 0x41, 0x32, 0xb0, 0x76, 0x37, 0x88, 0x36, 0x18, 0x76, 0xb8, 0x07, 0x41, 0xce, 0x7f, 0x30, 0xa2, 0x70, 0x87, 0x5d, 0xd8, 0x0d, 0xe9, 0xcc, 0x85, 0xdd, 0x60, 0x7c, 0x69, 0x1d, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0xc1, 0xe0, 0xae, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x2c, 0xf5, 0x1d, 0x0c, 0xff, 0xd8, 0xe3, 0xd0, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x0c, 0xf0, 0x6a, 0xab, 0x63, 0x63, 0x6b, 0x11, 0x7b, 0x73, 0x5b, 0x6b, 0x09, 0x0f, 0xa7, 0xd8, 0xb0, 0x0b, 0xbb, 0xc1, 0x32, 0x4c, 0xff, 0x85, 0xdb, 0x60, 0xa5, 0xcb, 0xd3, 0xa1, 0x71, 0xd1, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x21, 0x8f, 0x3d, 0x06, 0x78, 0xb5, 0xd5, 0xb1, 0xb1, 0xb5, 0x88, 0xbd, 0xb9, 0xad, 0xb5, 0xe0, 0x83, 0x60, 0x85, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0x7a, 0xff, 0x1d, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x34, 0xca, 0x01, 0x30, 0xfc, 0xc6, 0xf3, 0x0d, 0x86, 0x22, 0xd2, 0x41, 0x89, 0x3d, 0x78, 0x1c, 0x3a, 0x58, 0x8e, 0x4b, 0x32, 0xfc, 0x82, 0x60, 0x41, 0x32, 0xd0, 0xfb, 0xef, 0xa0, 0x65, 0x16, 0x93, 0x83, 0x26, 0xbc, 0x4e, 0x0e, 0x96, 0xe3, 0x92, 0x0c, 0xbb, 0x70, 0x1b, 0x0c, 0xd6, 0xd8, 0x83, 0xb3, 0x69, 0xf8, 0xc2, 0x2e, 0x08, 0x16, 0x24, 0x83, 0x73, 0x83, 0x68, 0x61, 0x0f, 0x82, 0x2c, 0xfe, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0xc6, 0x4f, 0xd7, 0x71, 0x68, 0x83, 0x46, 0xec, 0x4b, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x1b, 0x76, 0x61, 0x37, 0x58, 0x86, 0xe9, 0xbf, 0x70, 0x1b, 0xac, 0x88, 0x3b, 0x3a, 0x34, 0x2e, 0x3a, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x07, 0xc1, 0x06, 0xa3, 0x65, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0xd6, 0xa0, 0x00, 0x1d, 0xa4, 0xb9, 0x67, 0x1c, 0x87, 0x8e, 0xc7, 0x07, 0x4d, 0x99, 0x99, 0x0c, 0xbb, 0xb0, 0x1b, 0x2c, 0xc3, 0xf4, 0x5f, 0xb8, 0x0d, 0x16, 0x86, 0x3d, 0x1d, 0x1a, 0x17, 0x1d, 0x8e, 0xf6, 0x0d, 0x5a, 0x22, 0x31, 0x19, 0x76, 0x61, 0x37, 0x58, 0x86, 0xe9, 0xbf, 0x70, 0x1b, 0x2c, 0xb9, 0x41, 0x3a, 0x34, 0x2e, 0x3a, 0x1c, 0xed, 0x0b, 0xbb, 0xc1, 0x18, 0x58, 0x58, 0x90, 0xad, 0x21, 0x8f, 0x3d, 0x06, 0x78, 0xb4, 0xd5, 0xb1, 0xb1, 0xb5, 0xcc, 0xad, 0xa5, 0xc1, 0x87, 0x53, 0x6c, 0x10, 0x6c, 0x50, 0x32, 0x34, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0xb0, 0xbe, 0xc1, 0xe8, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xb0, 0x0c, 0xd3, 0x7f, 0xe1, 0x36, 0x58, 0x20, 0xfa, 0x74, 0x68, 0x5c, 0x74, 0x38, 0xda, 0x17, 0x04, 0x1b, 0x94, 0x0c, 0x4d, 0x07, 0xad, 0xb3, 0x97, 0x0c, 0xbb, 0xb0, 0x1b, 0x2c, 0xc3, 0xf4, 0x5f, 0xb8, 0x0d, 0x96, 0x47, 0x3e, 0x1d, 0x1a, 0x17, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0xad, 0xed, 0x96, 0x2c, 0x08, 0x16, 0x24, 0x83, 0xd5, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xb3, 0xd9, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xd0, 0x2e, 0xa1, 0xc9, 0x21, 0x9a, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0xd8, 0xa0, 0xd9, 0xec, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xf4, 0xdd, 0x41, 0x23, 0xd3, 0x23, 0x07, 0x0d, 0x1c, 0x9a, 0x1c, 0xc6, 0xe5, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xb0, 0x0c, 0xd3, 0x7f, 0xe1, 0x36, 0x58, 0x1c, 0xf8, 0x74, 0x68, 0x5c, 0x74, 0x38, 0xda, 0x17, 0x04, 0x1b, 0x94, 0x0c, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5a, 0xc6, 0x2e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x83, 0xe5, 0xd3, 0x4b, 0x07, 0x61, 0x4f, 0x7d, 0x1c, 0x3a, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x2c, 0xc3, 0xf4, 0x5f, 0xb8, 0x0d, 0x96, 0xc8, 0x3e, 0x1d, 0x1a, 0x17, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x0a, 0x82, 0x05, 0xc9, 0xc0, 0x79, 0x77, 0x58, 0xa1, 0x3d, 0x58, 0x52, 0xd5, 0x3f, 0x08, 0x16, 0x24, 0x03, 0xe7, 0xdd, 0x41, 0xcb, 0x2c, 0x26, 0x07, 0x4b, 0xaa, 0xfa, 0x87, 0xdd, 0x60, 0x7c, 0x69, 0x2d, 0xec, 0x06, 0x21, 0x05, 0xbe, 0x20, 0x19, 0x64, 0x83, 0x68, 0x41, 0xf7, 0x41, 0x42, 0x0e, 0xc2, 0xf1, 0x7c, 0x90, 0x0c, 0xb2, 0x41, 0xb4, 0xa0, 0xfb, 0xa0, 0x5d, 0xe3, 0x90, 0xe3, 0xf9, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x0c, 0xf0, 0x6a, 0xab, 0x63, 0x63, 0x6b, 0x11, 0x7b, 0x73, 0x5b, 0x6b, 0x31, 0x0f, 0xa7, 0xd8, 0xb0, 0x0b, 0xbb, 0xc1, 0x32, 0x4c, 0xff, 0x85, 0xdb, 0x60, 0x69, 0xfd, 0xd3, 0xa1, 0x71, 0xd1, 0xe1, 0x68, 0xdf, 0xa0, 0xd9, 0xca, 0x93, 0x41, 0xb6, 0xa1, 0xf9, 0xfa, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x65, 0x07, 0x01, 0xef, 0x3f, 0x48, 0x06, 0xd1, 0xc1, 0xea, 0x54, 0xfe, 0x61, 0x17, 0x6e, 0xe3, 0xd0, 0xa1, 0xe1, 0xd7, 0x82, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0x41, 0xb1, 0x0a, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xe3, 0xe0, 0xe3, 0x41, 0x9a, 0x99, 0xf7, 0xf0, 0x1b, 0xcf, 0x37, 0x28, 0x22, 0x25, 0x0f, 0x82, 0x87, 0xfb, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0xc8, 0x63, 0x8f, 0x01, 0x1e, 0x6d, 0x75, 0x6c, 0x6c, 0x2d, 0x6f, 0x70, 0x65, 0xee, 0xe1, 0x14, 0x1b, 0x24, 0x83, 0x6c, 0x10, 0x2d, 0xe8, 0x3e, 0x0e, 0x1d, 0xcf, 0x0f, 0xd6, 0xf2, 0x09, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0xdf, 0x56, 0xc7, 0xc6, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x2c, 0x34, 0x31, 0x5a, 0x1c, 0x04, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x87, 0xdd, 0xa0, 0x65, 0xd7, 0x91, 0x0d, 0xc6, 0x9b, 0xce, 0xb0, 0x1b, 0x2c, 0xe3, 0xf9, 0x5f, 0xd8, 0x0d, 0xd6, 0x7d, 0xff, 0x2f, 0x08, 0x16, 0x76, 0x41, 0xb0, 0x20, 0x19, 0x30, 0xb8, 0xfa, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x90, 0xcf, 0x3e, 0x28, 0x69, 0x1a, 0x8e, 0x43, 0x1b, 0x8c, 0xb1, 0xa7, 0x43, 0x0b, 0xa0, 0x61, 0x17, 0x76, 0xa1, 0x07, 0xe5, 0x58, 0xc3, 0x61, 0x7d, 0x73, 0x0d, 0x16, 0x5e, 0x18, 0x6d, 0x1c, 0x3a, 0x08, 0x1e, 0xee, 0x61, 0x17, 0x76, 0xa1, 0x07, 0xc1, 0xc3, 0x7d, 0x58, 0xdf, 0x5c, 0x83, 0x85, 0x17, 0x46, 0x1b, 0x87, 0x0e, 0xca, 0xb1, 0x86, 0x61, 0x17, 0x6e, 0x83, 0x72, 0xac, 0xe1, 0x20, 0x78, 0xb8, 0x37, 0x68, 0x96, 0x04, 0xe5, 0x60, 0x7d, 0x83, 0xd1, 0xb0, 0x1b, 0xac, 0xed, 0xff, 0xdf, 0x60, 0x7d, 0x83, 0xd1, 0x20, 0xdb, 0xd0, 0x7c, 0x7d, 0x90, 0x0c, 0x39, 0x68, 0xe3, 0x01, 0x60, 0xd8, 0x0d, 0xd6, 0x1e, 0xfd, 0x2f, 0xec, 0x06, 0x6b, 0xfb, 0xff, 0x17, 0x04, 0x1b, 0x34, 0x9b, 0x3d, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xc8, 0x41, 0x93, 0x05, 0x00, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x43, 0x0e, 0xda, 0x4c, 0x00, 0x38, 0x0e, 0x1d, 0xb4, 0xe7, 0x82, 0x32, 0xec, 0x06, 0x0b, 0xa6, 0xfe, 0x17, 0x24, 0x43, 0x0e, 0x5a, 0xb0, 0x20, 0x19, 0x76, 0x83, 0x75, 0x8c, 0xff, 0x0b, 0x82, 0x0d, 0x5a, 0x5a, 0x1f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xd2, 0x34, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x39, 0x58, 0x69, 0xf9, 0x7f, 0x1c, 0x1a, 0x76, 0x83, 0xd5, 0x62, 0xff, 0x0b, 0x82, 0x0d, 0x5a, 0xa1, 0x1f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x3c, 0xfe, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb5, 0x73, 0xff, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0x34, 0x31, 0x5a, 0x1c, 0x24, 0x43, 0x0e, 0x96, 0x14, 0xfe, 0x1f, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0x61, 0x37, 0x58, 0xb0, 0xf9, 0xbf, 0x20, 0xd8, 0xa0, 0x55, 0xff, 0x91, 0x83, 0xc6, 0x88, 0x50, 0x86, 0xdd, 0x60, 0x15, 0xea, 0xff, 0xc2, 0x6e, 0xd0, 0xe4, 0x00, 0xc9, 0x82, 0x6c, 0x0d, 0x79, 0xec, 0x31, 0xc0, 0xc3, 0xac, 0x6e, 0xae, 0xac, 0x85, 0xed, 0xed, 0x0d, 0x3e, 0x9c, 0x62, 0x83, 0x64, 0xc8, 0x41, 0x9b, 0x0c, 0x24, 0xc3, 0x6e, 0xb0, 0x8a, 0xe5, 0x7f, 0xc3, 0x5e, 0xe1, 0x41, 0x0b, 0x18, 0x24, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xcd, 0xea, 0xe6, 0xca, 0x43, 0x6a, 0xe9, 0x78, 0x3c, 0xc8, 0x36, 0xc4, 0x65, 0x10, 0x6c, 0x88, 0xe1, 0x20, 0x58, 0x1c, 0x64, 0x1b, 0xe2, 0x32, 0xec, 0x06, 0xad, 0xc8, 0x8e, 0x6c, 0xb0, 0x36, 0x89, 0x6a, 0xd8, 0x0d, 0x9a, 0xb3, 0x1d, 0xd9, 0x60, 0x6d, 0x12, 0xd5, 0xb0, 0x1b, 0xac, 0xfb, 0xfe, 0x5f, 0xd8, 0x0d, 0x8a, 0x2a, 0x85, 0x0d, 0xd6, 0x26, 0x51, 0x6d, 0xd0, 0x84, 0xb4, 0xc8, 0xa1, 0xd1, 0xd1, 0xb0, 0x1b, 0xac, 0xed, 0xff, 0x5f, 0x10, 0x2c, 0xfc, 0x06, 0xab, 0x20, 0x0f, 0x0e, 0x56, 0xf7, 0xc2, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0xf1, 0x34, 0x30, 0xfc, 0xc6, 0xf3, 0x83, 0xe2, 0x48, 0xe5, 0x38, 0x34, 0xec, 0x06, 0x0d, 0x6f, 0x90, 0x2c, 0x08, 0x36, 0x68, 0xe5, 0x0f, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x62, 0x7c, 0xc6, 0x41, 0x23, 0x83, 0x28, 0xc7, 0xa1, 0x61, 0x37, 0x68, 0x26, 0x84, 0x64, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x98, 0x1f, 0xa4, 0x7f, 0x29, 0x1c, 0x8f, 0x87, 0xdd, 0xa0, 0x5d, 0x15, 0x92, 0x0d, 0xd6, 0x26, 0x51, 0x0d, 0xbb, 0x41, 0x13, 0x3c, 0x24, 0x1b, 0x34, 0xfc, 0x88, 0x32, 0xc8, 0xd6, 0xd0, 0x7e, 0xfd, 0xa0, 0xd5, 0x20, 0x92, 0x61, 0x17, 0x04, 0x0b, 0x82, 0x0d, 0x1a, 0x16, 0x25, 0x39, 0x68, 0xb1, 0x80, 0xe4, 0x60, 0x7c, 0x18, 0x6d, 0xb0, 0x36, 0x89, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0xb4, 0x0e, 0x89, 0x32, 0x88, 0x16, 0x76, 0x10, 0x2c, 0x08, 0x36, 0x68, 0x58, 0x94, 0xe4, 0xa0, 0x60, 0x74, 0x38, 0x18, 0x1f, 0x46, 0xc7, 0xe3, 0xe3, 0xdb, 0xc2, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x88, 0xe1, 0x20, 0x58, 0x1c, 0x76, 0x83, 0xb5, 0x25, 0xff, 0x1b, 0xce, 0xf5, 0x61, 0x37, 0x58, 0xc5, 0xf2, 0xbf, 0xc1, 0x60, 0x45, 0x19, 0x76, 0x83, 0x65, 0x3c, 0xff, 0x0b, 0xbb, 0x41, 0x19, 0x55, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x28, 0xbb, 0xfa, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x1b, 0xfa, 0x93, 0x1f, 0x8c, 0x52, 0xce, 0xe3, 0xd0, 0x06, 0x85, 0x1d, 0xce, 0x1a, 0x8e, 0xf6, 0x83, 0x86, 0x7d, 0x46, 0x0e, 0x46, 0x29, 0xe7, 0xb0, 0x1b, 0xac, 0x3d, 0xfa, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0xf2, 0x7d, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x73, 0xb6, 0x28, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0xf2, 0x8b, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xc8, 0x20, 0xda, 0x60, 0xe4, 0x9b, 0x0f, 0xa2, 0x05, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0xd4, 0x1d, 0x9c, 0x84, 0x8e, 0x0f, 0x9a, 0x7f, 0x18, 0x39, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x0c, 0x0f, 0xf4, 0x41, 0xb4, 0x60, 0x3e, 0x08, 0x36, 0x68, 0x7f, 0x19, 0xe5, 0x60, 0xf4, 0x14, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0x61, 0x37, 0x58, 0x30, 0xf5, 0xbf, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x0c, 0xf0, 0x30, 0x4b, 0x9b, 0x43, 0x6b, 0x19, 0x7b, 0x93, 0x2b, 0x0f, 0xa7, 0xd8, 0xb0, 0x1b, 0xac, 0x63, 0xfc, 0xdf, 0xa0, 0xd9, 0x23, 0x94, 0x61, 0x37, 0x58, 0x2d, 0xf6, 0xbf, 0x20, 0xd8, 0x60, 0x59, 0xdd, 0xff, 0x20, 0x58, 0x1c, 0x76, 0xc3, 0xfa, 0xde, 0x86, 0x73, 0x7d, 0x10, 0x2c, 0x48, 0x06, 0xfe, 0xeb, 0x3b, 0x18, 0xfe, 0xb1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf7, 0x0f, 0xd1, 0x3c, 0x24, 0x97, 0x0e, 0x4a, 0x14, 0xb4, 0xe3, 0xd0, 0xf1, 0x6d, 0xd8, 0x0d, 0x16, 0x6c, 0xfe, 0x6f, 0xd0, 0xec, 0x11, 0xca, 0x20, 0xdb, 0x60, 0xad, 0xe9, 0xff, 0xb0, 0x0b, 0x82, 0x0d, 0x5a, 0x20, 0x20, 0x39, 0x18, 0x6d, 0xad, 0x0b, 0xb2, 0x35, 0xe4, 0xb1, 0xc7, 0x00, 0x0f, 0xb3, 0xb4, 0x39, 0xb4, 0x16, 0xb6, 0xb7, 0x37, 0xf8, 0x70, 0x8a, 0x0d, 0xbf, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0x41, 0xe3, 0x0f, 0x24, 0x07, 0xa3, 0xad, 0xf5, 0x78, 0x7c, 0xd0, 0xe8, 0x0f, 0xca, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x7c, 0xb3, 0xb4, 0x39, 0xf4, 0x90, 0x5a, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0xda, 0x5d, 0x05, 0x58, 0x1c, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x0e, 0x82, 0x0d, 0xc6, 0x52, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x83, 0x8f, 0x81, 0x4f, 0x17, 0x36, 0xb6, 0x6e, 0xd0, 0x5e, 0x1d, 0xc0, 0x21, 0xfe, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0xb0, 0x46, 0xb4, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x83, 0xe2, 0x00, 0x87, 0xac, 0xdd, 0x71, 0x68, 0xd8, 0x0d, 0x16, 0xc0, 0xfa, 0x2c, 0x08, 0x36, 0x58, 0x9d, 0xdb, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x48, 0x70, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x85, 0x26, 0x46, 0x8b, 0x87, 0xc4, 0xcc, 0xf1, 0xf8, 0x38, 0x74, 0x38, 0xc5, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x7e, 0x41, 0xb4, 0xb0, 0x83, 0x60, 0x41, 0xb2, 0xc1, 0x10, 0xff, 0x38, 0x18, 0x86, 0x3e, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xc1, 0xc7, 0xbc, 0x21, 0x86, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0xf8, 0xfa, 0xef, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xab, 0x85, 0x8d, 0x0e, 0xf1, 0x3f, 0x0e, 0x0d, 0xbb, 0xc1, 0xa8, 0x97, 0xdc, 0x70, 0xb4, 0x0f, 0xbb, 0xc1, 0x02, 0x58, 0x9f, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0x7e, 0xf8, 0x05, 0xc1, 0x82, 0x64, 0xc0, 0xe8, 0xfb, 0x3b, 0x64, 0x2b, 0x0e, 0x86, 0xa6, 0xeb, 0x71, 0x68, 0x10, 0x2d, 0x88, 0x0f, 0x6b, 0xbf, 0xc7, 0xf3, 0x41, 0xb6, 0xc1, 0x52, 0x8e, 0xa0, 0x61, 0x37, 0x58, 0xa8, 0xc5, 0xb5, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x68, 0xbf, 0x7e, 0xd0, 0xda, 0x09, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xd4, 0x0f, 0xbf, 0x20, 0xd8, 0xa0, 0x65, 0x9b, 0x94, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xc3, 0xf5, 0x20, 0x28, 0xbd, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0x66, 0x74, 0x52, 0x8e, 0x6f, 0xc7, 0xe3, 0x85, 0x5f, 0xf8, 0x05, 0xd1, 0x06, 0x0d, 0x3e, 0x93, 0x1c, 0x8f, 0x07, 0xc1, 0x06, 0x6b, 0x5a, 0x8e, 0x16, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x08, 0x86, 0xfd, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0xfb, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0x06, 0x0f, 0xc0, 0x41, 0x89, 0x82, 0x76, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0x49, 0x4e, 0xd2, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0x84, 0x55, 0xdf, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x4c, 0xec, 0x85, 0xdf, 0x78, 0xbe, 0xa1, 0x91, 0xe0, 0x78, 0x38, 0x13, 0x36, 0x08, 0x4c, 0xec, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0x36, 0x89, 0xea, 0xd0, 0x31, 0xec, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0xb2, 0xda, 0xa4, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0xa0, 0x55, 0xaf, 0x94, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x81, 0x89, 0xbd, 0xf0, 0x1b, 0xcf, 0x37, 0x34, 0x12, 0x1c, 0x0f, 0x1a, 0xbf, 0x84, 0x38, 0x68, 0xba, 0x2c, 0xe5, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0xf2, 0x78, 0xa5, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x90, 0x0c, 0x84, 0xeb, 0x90, 0x5c, 0x1a, 0x24, 0x83, 0xe8, 0x20, 0x89, 0xc7, 0x64, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0xb5, 0x00, 0x4b, 0x87, 0xa3, 0x7d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xcb, 0xa7, 0x97, 0x0e, 0x8d, 0x04, 0x8f, 0xc7, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0xac, 0x86, 0x58, 0x3a, 0x1c, 0xed, 0x1b, 0xac, 0x1b, 0xd5, 0x1f, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0xa1, 0x11, 0xd2, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0x0e, 0xbb, 0xb0, 0x1b, 0x2c, 0xc3, 0xf4, 0x3f, 0xac, 0x6f, 0xae, 0xc1, 0xc2, 0x0b, 0xa3, 0x0d, 0x3d, 0x84, 0x0e, 0x02, 0xa7, 0x79, 0x83, 0x85, 0x33, 0x46, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x83, 0x26, 0xf6, 0x4a, 0x8e, 0xc7, 0x07, 0x0b, 0x50, 0xc9, 0x8e, 0x6f, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0x2c, 0xcf, 0x42, 0x3a, 0x1c, 0xed, 0x0b, 0xbb, 0x41, 0x02, 0xd7, 0xcf, 0xc2, 0x6e, 0x70, 0x20, 0x3c, 0x5f, 0xd8, 0x0d, 0xc6, 0x3a, 0xda, 0x1a, 0x2c, 0xbc, 0x30, 0xda, 0xd0, 0x48, 0xf0, 0x60, 0xd4, 0xa3, 0x1d, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0x83, 0x71, 0xbb, 0x7b, 0x68, 0x24, 0xb8, 0xb0, 0x0b, 0x82, 0x0d, 0x4e, 0x19, 0xd7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x1d, 0xc3, 0x0e, 0xc6, 0x86, 0xeb, 0x71, 0x68, 0x41, 0x32, 0xb0, 0xd4, 0x77, 0x10, 0xe4, 0xfc, 0x87, 0x53, 0x6c, 0x83, 0x85, 0x17, 0x46, 0x1b, 0x1a, 0x09, 0x1e, 0x62, 0x38, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe1, 0xc1, 0xa2, 0x23, 0xa4, 0xe3, 0xf1, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0xcb, 0x00, 0x91, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x41, 0x32, 0xf0, 0x54, 0xdf, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xe4, 0x6b, 0x0f, 0x02, 0x13, 0xfb, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0xf2, 0x8f, 0xa5, 0xc3, 0xd1, 0xbe, 0xc1, 0x42, 0x13, 0xa3, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0x16, 0xc0, 0x2c, 0x1d, 0x8e, 0xf6, 0x0d, 0x1a, 0x50, 0x4d, 0x19, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0xc5, 0xcf, 0xd2, 0xe1, 0x68, 0xdf, 0xa0, 0x01, 0xd5, 0x94, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0xd6, 0x8c, 0xfc, 0x1c, 0x8e, 0xf6, 0x0d, 0x8d, 0x04, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0xf3, 0xb4, 0x74, 0x38, 0xda, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xe5, 0xbf, 0x41, 0xb4, 0xb0, 0x07, 0x85, 0xca, 0xd9, 0x21, 0xb9, 0x74, 0xd0, 0xa0, 0x85, 0xc9, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x4b, 0xdc, 0x96, 0x0e, 0x47, 0xfb, 0x06, 0xe5, 0x39, 0xc0, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x8b, 0x18, 0x97, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x83, 0x36, 0xa1, 0x53, 0x0e, 0x9a, 0xe3, 0x31, 0x19, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0x19, 0xe7, 0xd2, 0xe1, 0x68, 0xdf, 0xa0, 0x50, 0x39, 0x1b, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0xe9, 0xf0, 0xd2, 0xe1, 0x68, 0x5f, 0x10, 0x6c, 0xd0, 0x26, 0x74, 0xca, 0x41, 0xbb, 0x5a, 0x26, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0x2c, 0xbb, 0x3d, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0xd9, 0x77, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0x78, 0xca, 0x67, 0xf8, 0x8d, 0xe7, 0x07, 0x4b, 0xe7, 0x76, 0x8e, 0x43, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0xac, 0x3c, 0x67, 0x3a, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x07, 0xc9, 0xc0, 0xd1, 0x37, 0x88, 0x16, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x3a, 0x07, 0x1d, 0xcf, 0x0f, 0x2b, 0xb4, 0xc7, 0xe3, 0x83, 0xa5, 0x73, 0x3b, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0x2c, 0x70, 0x63, 0x3a, 0x1c, 0xed, 0x1b, 0x2c, 0x9d, 0xdb, 0x19, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0x2d, 0x7a, 0xd3, 0xe1, 0x68, 0x5f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe6, 0x07, 0xe5, 0x39, 0xc0, 0xc1, 0x82, 0xba, 0x9d, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0xd6, 0x5c, 0x39, 0x1d, 0x8e, 0xf6, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xf5, 0xea, 0x90, 0x5c, 0x3a, 0x34, 0x05, 0x3a, 0x58, 0x50, 0xb7, 0x33, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0xc2, 0x4e, 0xa7, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x41, 0xb0, 0x41, 0x1a, 0x0e, 0xfc, 0xa1, 0x29, 0xd0, 0x20, 0x58, 0x90, 0x0c, 0x18, 0x7c, 0x7f, 0x87, 0xe4, 0xd2, 0xa1, 0x29, 0xd0, 0x20, 0x58, 0x90, 0x0c, 0x1c, 0x7d, 0x07, 0x01, 0xef, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xc2, 0x6e, 0xd0, 0xb6, 0xb0, 0xc9, 0x06, 0xeb, 0x1b, 0x8c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x7e, 0x10, 0x52, 0xe0, 0x07, 0x4b, 0x38, 0xc9, 0x16, 0x76, 0x83, 0x56, 0x8d, 0x4d, 0x36, 0x58, 0xdf, 0x60, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0xc6, 0x29, 0xc0, 0x20, 0xda, 0xd0, 0x22, 0xe9, 0x78, 0x7e, 0x88, 0xe1, 0x71, 0x68, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0xe5, 0xce, 0x47, 0x87, 0xa3, 0x7d, 0x83, 0x06, 0x54, 0x53, 0x86, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0xdd, 0xf2, 0x74, 0x38, 0xda, 0x37, 0x68, 0x40, 0x35, 0x65, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x55, 0x70, 0x47, 0x87, 0xa3, 0x7d, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0xd8, 0x60, 0x2c, 0xe5, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x07, 0xf0, 0xe4, 0xd0, 0x02, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0x58, 0x3a, 0xb7, 0x33, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x62, 0xb0, 0xa7, 0xc3, 0xd1, 0xbe, 0x41, 0x79, 0x0e, 0x30, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x32, 0x1b, 0xa4, 0xc3, 0xd1, 0xbe, 0xc1, 0xfa, 0x06, 0xa3, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0x96, 0x44, 0x3e, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0xcd, 0x50, 0xa5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0x79, 0x0e, 0x70, 0xd0, 0xac, 0x7c, 0xca, 0x71, 0x68, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x05, 0x81, 0x4f, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x41, 0x52, 0xe7, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0xed, 0x06, 0xa6, 0x1c, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0x14, 0xfa, 0x74, 0x38, 0xda, 0x37, 0x58, 0x68, 0x62, 0x34, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0xb2, 0xd8, 0xa7, 0xc3, 0xd1, 0xbe, 0xb0, 0x0b, 0x82, 0x0d, 0x92, 0xe3, 0x57, 0x0e, 0x4d, 0x81, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x06, 0x27, 0x78, 0xfa, 0xe3, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x60, 0x64, 0xf6, 0x1e, 0x8f, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x16, 0x6e, 0x83, 0xa5, 0xf5, 0x4f, 0x87, 0x68, 0x1e, 0x8e, 0xf6, 0x0d, 0xd6, 0x37, 0x18, 0x0d, 0xb2, 0x0d, 0xcd, 0xd7, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x51, 0xb8, 0x33, 0x48, 0x06, 0xd1, 0xa1, 0x7d, 0xcb, 0xb0, 0x0b, 0x77, 0x50, 0xaa, 0xf0, 0x2d, 0xc8, 0xd6, 0x90, 0xc7, 0x5e, 0x1c, 0x04, 0x1b, 0x8c, 0x96, 0xd9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xcd, 0xdd, 0x9f, 0x0c, 0xbf, 0xf1, 0x7c, 0x83, 0x22, 0x52, 0xf2, 0xb0, 0x57, 0x78, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0xe4, 0xb1, 0xc7, 0x00, 0x0f, 0x38, 0xb6, 0xb0, 0xbc, 0x96, 0x37, 0xb8, 0x32, 0xf7, 0x70, 0x8a, 0x1d, 0x24, 0x8c, 0x3e, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x0f, 0xc7, 0x16, 0x96, 0x1f, 0x52, 0x4b, 0xc7, 0xe3, 0x85, 0x5f, 0x10, 0x2c, 0x6e, 0xb0, 0x66, 0xd8, 0xe8, 0x20, 0x3c, 0x55, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x51, 0xb8, 0x73, 0xb0, 0x24, 0x4e, 0x6c, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x1a, 0x8e, 0xf6, 0x41, 0xb0, 0x20, 0x19, 0x10, 0x76, 0x7f, 0x87, 0x15, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8b, 0xcc, 0xf5, 0x0f, 0x6b, 0xbf, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x19, 0x88, 0xd7, 0x61, 0x85, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0xfe, 0x87, 0x71, 0x39, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x6f, 0x56, 0xe7, 0x46, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0x41, 0xb0, 0x78, 0xd0, 0xca, 0x4c, 0xc9, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x84, 0xdd, 0xdf, 0x21, 0xb9, 0x74, 0x48, 0xb4, 0x0e, 0x82, 0x05, 0xc1, 0xc2, 0x2f, 0x48, 0x06, 0x75, 0x07, 0x01, 0xef, 0x3f, 0x48, 0x06, 0xca, 0xdf, 0xf1, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x40, 0xaf, 0xbb, 0xc3, 0x0a, 0xed, 0x61, 0x5c, 0x8e, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x16, 0xa1, 0x5a, 0x1d, 0x04, 0x59, 0xfc, 0x21, 0x9d, 0xbb, 0x21, 0xb1, 0xb9, 0x21, 0x9a, 0x07, 0xed, 0x13, 0x02, 0x1c, 0x8f, 0x37, 0x9c, 0x62, 0x2b, 0xfc, 0x82, 0x60, 0x83, 0x35, 0x2d, 0x47, 0x8b, 0x83, 0x60, 0x41, 0x32, 0xb0, 0x74, 0x77, 0x48, 0x2e, 0x1d, 0x8c, 0xe3, 0x90, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xcf, 0xc2, 0xd2, 0xdc, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0x82, 0x60, 0x41, 0x32, 0x50, 0x7e, 0x0e, 0x2b, 0xb4, 0x83, 0x64, 0x70, 0xef, 0xd0, 0xbe, 0x65, 0x05, 0xc1, 0xe2, 0x06, 0x8b, 0xe2, 0x8c, 0x5a, 0x1c, 0x76, 0xe1, 0x0e, 0x1d, 0x12, 0x17, 0x04, 0x8b, 0xc3, 0x6e, 0x58, 0x41, 0xdd, 0xe0, 0x20, 0xde, 0x3d, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0x8c, 0x5d, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x28, 0xf6, 0x20, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0xd8, 0xbb, 0x1b, 0x44, 0x0b, 0x7b, 0x90, 0x02, 0x69, 0x7e, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0x42, 0x13, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x7c, 0x3e, 0x08, 0x01, 0xf0, 0x41, 0xb4, 0x60, 0x7d, 0x10, 0x3c, 0xdc, 0x87, 0xe4, 0xd2, 0xf1, 0x6d, 0x10, 0x2c, 0x08, 0x36, 0x68, 0x58, 0x94, 0x64, 0x90, 0x0c, 0x84, 0xee, 0x60, 0x51, 0x2b, 0xd1, 0x20, 0xd8, 0x60, 0x70, 0x57, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x87, 0xdd, 0x60, 0x10, 0x70, 0x6c, 0x48, 0x1d, 0x0c, 0x82, 0x05, 0xc1, 0x06, 0xcd, 0x14, 0x9a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xce, 0x46, 0xcf, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0xf9, 0x5b, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x47, 0x07, 0xee, 0x83, 0xd2, 0xf6, 0xe6, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0x4a, 0x86, 0xb0, 0x41, 0xb4, 0x41, 0xe9, 0xde, 0x71, 0x48, 0x2e, 0x1d, 0xdf, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x2c, 0x34, 0x31, 0x5a, 0x1c, 0x04, 0x0b, 0xbf, 0x20, 0x58, 0x90, 0x0c, 0xdc, 0x5f, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xe0, 0xb8, 0x2e, 0x77, 0x10, 0xf0, 0xfe, 0xc7, 0xa1, 0xe3, 0xdb, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x0c, 0x82, 0x85, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0x56, 0xfa, 0x0e, 0x86, 0xa3, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x30, 0x5c, 0x07, 0x27, 0xa1, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xce, 0xee, 0x72, 0x07, 0xc3, 0xd0, 0xe7, 0xa0, 0x25, 0x8b, 0x95, 0xe3, 0xd0, 0x71, 0xe8, 0xf8, 0x36, 0x08, 0x16, 0x17, 0x04, 0x0b, 0x82, 0x0d, 0xc6, 0x1d, 0xd4, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x05, 0xd9, 0x02, 0xfe, 0x1c, 0xdb, 0xdb, 0xb9, 0x21, 0x86, 0x83, 0x60, 0x41, 0x32, 0x90, 0xfe, 0x39, 0x18, 0x8e, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x78, 0x0e, 0x86, 0xa3, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x13, 0x78, 0x77, 0x65, 0xe3, 0x86, 0x3a, 0xb2, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x6f, 0x10, 0xae, 0x08, 0x1b, 0x8a, 0xe9, 0x6a, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0x70, 0x45, 0xd8, 0x30, 0x43, 0x1b, 0x2a, 0xe1, 0x86, 0x13, 0x61, 0x43, 0x25, 0xdc, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0xcb, 0xf0, 0xb3, 0x37, 0x7c, 0x90, 0xb3, 0x41, 0x13, 0xb2, 0x10, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf6, 0xbc, 0x0b, 0x0e, 0x8e, 0x31, 0x67, 0x07, 0x4d, 0xb6, 0x59, 0x1c, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0x70, 0x1e, 0x1f, 0x34, 0x7b, 0x09, 0x71, 0x10, 0x4a, 0x96, 0x1b, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x61, 0x3a, 0x0f, 0xda, 0xb0, 0x59, 0xd9, 0x70, 0x22, 0x6c, 0xd0, 0x00, 0xd3, 0xca, 0x41, 0xab, 0xae, 0x10, 0x07, 0x21, 0xa5, 0xbc, 0x41, 0xc3, 0x97, 0x10, 0x6b, 0x98, 0xb8, 0x0d, 0x5a, 0xd3, 0x84, 0x38, 0x08, 0x29, 0xe5, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0xf8, 0xa8, 0xfd, 0xe0, 0x44, 0xf4, 0x71, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x86, 0x13, 0x61, 0x83, 0xe6, 0x61, 0x56, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0x62, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x1c, 0xbd, 0x83, 0x46, 0x82, 0x21, 0x0e, 0x8e, 0x31, 0x67, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x70, 0x62, 0xbf, 0x59, 0x83, 0x52, 0x42, 0x7c, 0xe3, 0xf9, 0xc1, 0xb9, 0xec, 0xe3, 0x38, 0x74, 0x1c, 0x3a, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x41, 0x2b, 0x5e, 0x2b, 0x8b, 0x07, 0xad, 0xb9, 0xac, 0x1c, 0xf6, 0x0a, 0x8f, 0x43, 0xc7, 0xa1, 0xc3, 0x29, 0x36, 0x08, 0x16, 0x24, 0x03, 0xe7, 0xdd, 0xc1, 0xd9, 0xcb, 0xf8, 0x60, 0x60, 0x8b, 0x0e, 0x82, 0xc5, 0x61, 0x37, 0xac, 0xef, 0x6d, 0x70, 0x96, 0x3d, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0x02, 0xe7, 0xff, 0x20, 0x58, 0x90, 0x0c, 0x3c, 0xd5, 0x77, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xc8, 0xda, 0x1d, 0x9c, 0xca, 0x91, 0x8f, 0x43, 0x07, 0x45, 0xcd, 0xd9, 0xf1, 0x6d, 0x61, 0x37, 0x08, 0x3e, 0xe6, 0x0d, 0x89, 0xa9, 0x61, 0x17, 0x76, 0x83, 0xe2, 0xb2, 0x69, 0x61, 0x37, 0x58, 0x36, 0x18, 0xb4, 0xb0, 0x1b, 0x04, 0xdb, 0xf3, 0x06, 0x41, 0xd2, 0x7c, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x5f, 0x43, 0x0c, 0x07, 0xc1, 0x86, 0xac, 0xdd, 0x20, 0x58, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xaa, 0xf7, 0x1d, 0x9c, 0xbd, 0x8c, 0x0f, 0x46, 0xc2, 0xea, 0x20, 0xd8, 0xa0, 0xbd, 0xc7, 0x95, 0x83, 0x81, 0x2d, 0x3a, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x20, 0x58, 0x90, 0x0c, 0x0c, 0xd5, 0xc1, 0x39, 0xef, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xbe, 0x3b, 0x07, 0xa7, 0x33, 0xe4, 0x83, 0x85, 0xc9, 0x3f, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xf1, 0x6d, 0x10, 0x6c, 0x88, 0xe1, 0x20, 0x58, 0x1c, 0x76, 0x61, 0x17, 0x04, 0x1b, 0x1c, 0x39, 0x95, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xc3, 0x3c, 0xfd, 0x38, 0xb4, 0x21, 0x86, 0xc3, 0x2e, 0x08, 0x36, 0x38, 0x72, 0x2a, 0x1f, 0x14, 0x39, 0x36, 0x87, 0x74, 0xee, 0x82, 0x60, 0x41, 0x32, 0x90, 0xbf, 0x3b, 0x38, 0x50, 0x24, 0x1f, 0xb4, 0x17, 0x1a, 0x32, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x0d, 0x0a, 0xff, 0xa0, 0x83, 0x03, 0x45, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xe0, 0xcf, 0xc1, 0x69, 0x43, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0xd9, 0x71, 0x48, 0xd5, 0x1c, 0x87, 0x0e, 0xce, 0xb2, 0xc7, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x6c, 0x50, 0x44, 0x77, 0x1d, 0x9c, 0x36, 0x94, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf6, 0x0a, 0x0f, 0x06, 0xef, 0xe4, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe2, 0x61, 0x37, 0x38, 0x4f, 0xf0, 0x6e, 0x30, 0x4a, 0x39, 0x0f, 0x02, 0x13, 0xfb, 0xa0, 0x80, 0x8f, 0x3a, 0xbe, 0x0d, 0x82, 0x0d, 0x56, 0x7f, 0x4a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x88, 0xd4, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x0d, 0x0a, 0xff, 0xa0, 0x83, 0x73, 0xde, 0xf1, 0x41, 0x3a, 0x21, 0xcf, 0x71, 0x68, 0x90, 0xad, 0x41, 0x5b, 0x20, 0x2b, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x24, 0x03, 0xe9, 0x9f, 0x83, 0xe1, 0x1f, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x84, 0xe7, 0x60, 0xf8, 0xc7, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x37, 0x01, 0x1e, 0x64, 0x65, 0x61, 0x72, 0x2d, 0x6d, 0x61, 0x6e, 0xf9, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x0f, 0xee, 0x6e, 0xa8, 0x23, 0x1b, 0xb4, 0xb4, 0xb4, 0x72, 0xd0, 0x10, 0x2c, 0xc4, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x0f, 0xce, 0x6e, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x86, 0xe9, 0xdc, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xc1, 0xde, 0x76, 0xd0, 0xd2, 0xd2, 0xca, 0xe1, 0x3c, 0x3e, 0x68, 0xdd, 0x19, 0x64, 0xc3, 0x89, 0xb0, 0x41, 0x93, 0xed, 0x2b, 0x07, 0x8d, 0x71, 0x83, 0x1c, 0xb4, 0xdf, 0x0d, 0xb2, 0x61, 0xee, 0x07, 0x97, 0x0f, 0xda, 0x60, 0x5f, 0x59, 0x3c, 0x68, 0x59, 0x7c, 0xe5, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x87, 0x0e, 0x31, 0x5c, 0xd8, 0x85, 0x5d, 0xb8, 0x0d, 0x06, 0x22, 0xf5, 0xc1, 0x78, 0xd3, 0xd9, 0x10, 0xc3, 0x61, 0x17, 0x76, 0x83, 0xb5, 0x25, 0xff, 0x1b, 0x62, 0x38, 0xec, 0x06, 0xab, 0x58, 0xfe, 0x37, 0xc4, 0x70, 0xd8, 0x0d, 0x86, 0x32, 0xeb, 0xc2, 0x6e, 0xb0, 0xb6, 0xea, 0x7f, 0x43, 0x0c, 0x0f, 0x56, 0xfc, 0xfc, 0x1f, 0x8e, 0xf6, 0x43, 0x3a, 0x77, 0x83, 0x92, 0xa1, 0x69, 0xd8, 0x85, 0x5d, 0xb8, 0x0d, 0xd6, 0x37, 0x18, 0x1d, 0x0c, 0x44, 0xea, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x58, 0x68, 0x62, 0x74, 0x30, 0x10, 0xa9, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0x1e, 0x0c, 0x44, 0xea, 0x85, 0x5d, 0xb8, 0x0d, 0xd6, 0x74, 0x4b, 0x1d, 0x94, 0x04, 0x0d, 0x1b, 0x62, 0x38, 0xdc, 0x06, 0x0b, 0x2f, 0x8c, 0x0e, 0x4a, 0x82, 0x86, 0xc3, 0xd1, 0xbe, 0xf0, 0x0b, 0x82, 0x0d, 0xd2, 0x2d, 0xa5, 0x0f, 0x52, 0x94, 0x9f, 0x0f, 0xce, 0xc1, 0xdf, 0xc3, 0x2e, 0xec, 0x06, 0x4d, 0x52, 0xb0, 0x2c, 0xdc, 0x06, 0x0b, 0x67, 0x8c, 0x0e, 0x4a, 0x82, 0x86, 0xc3, 0xd1, 0xbe, 0xf0, 0x1b, 0xb4, 0xc9, 0xc1, 0x32, 0xec, 0xc2, 0x2e, 0xf4, 0xe0, 0x2c, 0x7b, 0xbc, 0x70, 0x1b, 0x2c, 0x9c, 0x31, 0x9a, 0x20, 0xf9, 0x7f, 0x38, 0xda, 0x17, 0x24, 0xc3, 0x0c, 0xa2, 0x05, 0xc6, 0x7f, 0xf8, 0x05, 0xd1, 0x82, 0xfb, 0x87, 0x18, 0x0e, 0xa2, 0x05, 0xf5, 0x07, 0x23, 0xff, 0xe1, 0x78, 0xbc, 0xc1, 0xc2, 0x19, 0xa3, 0x05, 0xc9, 0x60, 0x36, 0x88, 0x16, 0x18, 0xff, 0x83, 0xb4, 0x0b, 0x86, 0x41, 0xb4, 0xe0, 0xfe, 0x20, 0x58, 0x90, 0x0c, 0x1c, 0x7f, 0x83, 0x68, 0x83, 0x05, 0xb1, 0x25, 0x07, 0xc3, 0xd0, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xf3, 0x2d, 0x29, 0x87, 0xc6, 0xf3, 0xc7, 0xa1, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x66, 0x83, 0x68, 0x81, 0xf1, 0x3f, 0x28, 0x1b, 0x84, 0x06, 0xd1, 0x82, 0xfb, 0x83, 0x60, 0x83, 0xe6, 0x6d, 0x58, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x34, 0xdf, 0x92, 0x72, 0x30, 0x14, 0x8b, 0x8e, 0x43, 0x87, 0xe4, 0xd2, 0x21, 0xb9, 0x74, 0x38, 0xc5, 0x86, 0x5d, 0xd8, 0x0d, 0x9a, 0xa4, 0x60, 0x59, 0xb8, 0x0d, 0x16, 0xd2, 0x4b, 0x1d, 0x94, 0x04, 0x0d, 0x87, 0xa3, 0x7d, 0x41, 0x32, 0x98, 0x0d, 0xa2, 0x05, 0xc6, 0xff, 0xa0, 0x40, 0xdf, 0x19, 0x44, 0x0b, 0xe6, 0x1b, 0xa4, 0x37, 0x36, 0x1c, 0xf6, 0x0a, 0x8f, 0xc7, 0xc3, 0x2e, 0xec, 0x06, 0x4d, 0x52, 0xb0, 0x2c, 0xdc, 0x06, 0x4b, 0x53, 0xa6, 0x0e, 0x4a, 0x82, 0x86, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x7d, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x89, 0x22, 0x7a, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x30, 0x1b, 0x44, 0x1b, 0x34, 0x09, 0xc5, 0x72, 0x3c, 0x3e, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x34, 0x49, 0xc1, 0xb2, 0x70, 0x1b, 0x2c, 0x65, 0x98, 0x3a, 0x28, 0x09, 0x1a, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x83, 0x66, 0x17, 0x4e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x0d, 0x06, 0xc9, 0xcb, 0xc1, 0x31, 0xab, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x8d, 0x2e, 0x87, 0x0c, 0x92, 0x81, 0xd0, 0x0d, 0xa2, 0x85, 0x9d, 0xe0, 0xfa, 0x3f, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xd0, 0xc4, 0x68, 0x71, 0x90, 0x0c, 0x66, 0x83, 0x68, 0x81, 0xf1, 0x3f, 0xa4, 0x0e, 0x0e, 0xc9, 0xa5, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0xd0, 0x7e, 0x7d, 0xd8, 0x0d, 0x9a, 0xa4, 0x60, 0x59, 0xb8, 0x0d, 0x96, 0x2b, 0x4d, 0x1d, 0x94, 0x04, 0x0d, 0x87, 0xa3, 0x7d, 0xf8, 0x05, 0xc1, 0x06, 0xe9, 0x96, 0xd2, 0x07, 0xe9, 0x82, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0xad, 0x9c, 0xb0, 0x2c, 0xdc, 0x06, 0xcb, 0x95, 0xa6, 0x0e, 0x1a, 0x4f, 0x61, 0x39, 0x1c, 0xed, 0x0b, 0xbb, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x9e, 0xcf, 0xc0, 0x20, 0x19, 0x98, 0xbe, 0x41, 0xb4, 0xb0, 0x07, 0xc9, 0x59, 0x21, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x37, 0x48, 0xbb, 0x60, 0x38, 0x28, 0x1b, 0x84, 0x8e, 0x43, 0x0b, 0xbf, 0x20, 0xd8, 0x20, 0xdd, 0x7d, 0xe7, 0x20, 0x45, 0xf9, 0xf9, 0xe0, 0x1c, 0xfc, 0x3d, 0xec, 0x82, 0x60, 0x41, 0xb0, 0x41, 0x7b, 0x3e, 0x03, 0x83, 0x64, 0x60, 0xfa, 0x0e, 0x46, 0x8d, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x1b, 0x9c, 0x65, 0x8f, 0x0f, 0x06, 0x22, 0xf5, 0x71, 0x68, 0xe1, 0x17, 0x04, 0x1b, 0xa4, 0xbb, 0xef, 0x1c, 0xa4, 0x0b, 0x0e, 0x1d, 0x9c, 0x83, 0xbf, 0x07, 0xc1, 0x82, 0x64, 0x30, 0x3b, 0x18, 0x86, 0x3e, 0x83, 0x60, 0x41, 0x32, 0x98, 0x0d, 0xa2, 0x05, 0xc6, 0xff, 0x38, 0x34, 0x88, 0x16, 0x76, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x6b, 0x7d, 0x07, 0xe7, 0xbc, 0xe3, 0x41, 0x32, 0x38, 0x75, 0x30, 0xc8, 0x20, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9c, 0x33, 0x93, 0x0f, 0xce, 0xb2, 0xc7, 0xc7, 0xa1, 0xc3, 0x0a, 0xed, 0xb0, 0x0b, 0x77, 0x30, 0xc4, 0x3b, 0x37, 0x38, 0x67, 0x26, 0x1f, 0x87, 0x0e, 0xa7, 0xd8, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x37, 0x68, 0xb5, 0x8a, 0x65, 0x41, 0x32, 0xe4, 0xa0, 0x71, 0x30, 0x96, 0x61, 0x37, 0x68, 0x56, 0x89, 0x65, 0x41, 0x32, 0x64, 0x10, 0x6d, 0xd0, 0x24, 0x14, 0xcb, 0x20, 0x5a, 0x50, 0x3f, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0xe7, 0x33, 0x30, 0x48, 0x06, 0xc6, 0xef, 0x60, 0x90, 0x41, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x83, 0xb4, 0x0b, 0x86, 0x43, 0xea, 0xe0, 0x78, 0x7c, 0x1c, 0x3a, 0x1e, 0x0f, 0xbb, 0x41, 0xbb, 0x63, 0x2c, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0xf6, 0x7c, 0x06, 0x0e, 0xda, 0x96, 0x63, 0x19, 0x04, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x90, 0x98, 0x1a, 0x04, 0x1b, 0x14, 0x2a, 0x67, 0xc3, 0x2e, 0x08, 0x16, 0x24, 0x83, 0x5b, 0x07, 0x27, 0xa1, 0xe3, 0xc3, 0x46, 0xed, 0xc6, 0xa1, 0x41, 0xb0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x18, 0xff, 0x43, 0xd6, 0xee, 0xb0, 0x42, 0xbb, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xd6, 0xfa, 0x0e, 0x4e, 0x1b, 0xca, 0x83, 0x64, 0x20, 0x5c, 0x87, 0xe4, 0xdc, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xd0, 0x8c, 0xe7, 0x38, 0xb4, 0x04, 0xe5, 0xef, 0x30, 0x2e, 0xc7, 0xb7, 0x41, 0xb4, 0xc0, 0xf8, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0xd1, 0x77, 0x70, 0xcc, 0x2a, 0x3e, 0x18, 0x51, 0xb8, 0x83, 0x68, 0x83, 0x51, 0xf5, 0x7f, 0x3c, 0x1f, 0x76, 0x83, 0xe6, 0xfc, 0x58, 0x16, 0x76, 0x43, 0xea, 0x60, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x30, 0xfe, 0x83, 0x64, 0x30, 0x3b, 0x68, 0x01, 0x87, 0xe5, 0x78, 0x7c, 0x3c, 0x1e, 0x64, 0x1b, 0x9a, 0xaf, 0x1f, 0x8f, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0x41, 0xc3, 0x22, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x3c, 0x59, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x04, 0xf8, 0xc8, 0x95, 0x91, 0xbd, 0xb5, 0xb4, 0x85, 0xd1, 0x8d, 0xa1, 0xc3, 0x6f, 0x3c, 0x1f, 0x0f, 0xda, 0x0e, 0x68, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x07, 0xa7, 0x15, 0xdc, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xe5, 0xca, 0xc8, 0xde, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xbc, 0xf7, 0x1d, 0x0c, 0x43, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xed, 0x98, 0xaa, 0x2c, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xab, 0xec, 0xfe, 0x07, 0xc9, 0xc0, 0xf4, 0x0d, 0xa2, 0x85, 0x3d, 0x28, 0x09, 0x1a, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x24, 0x12, 0xef, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0xb4, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x0c, 0xf0, 0x90, 0x2b, 0x9b, 0xa3, 0x6b, 0x61, 0x7b, 0x7b, 0x83, 0x0f, 0xa7, 0xd8, 0xf0, 0x0b, 0xa2, 0x05, 0xe7, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x86, 0x45, 0x49, 0x06, 0xc9, 0x40, 0xec, 0x0e, 0x42, 0x0e, 0xff, 0xd0, 0xa8, 0xe5, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x73, 0xb4, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x61, 0x51, 0x92, 0x41, 0x32, 0x10, 0xba, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x82, 0x0d, 0x1a, 0x16, 0x25, 0x39, 0x18, 0x9a, 0x54, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x42, 0xed, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xc7, 0x54, 0x65, 0x71, 0x10, 0x2c, 0x48, 0x06, 0xd2, 0x77, 0x83, 0x68, 0x83, 0x11, 0x06, 0x70, 0xc8, 0x56, 0x1c, 0x3a, 0x68, 0x1c, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x7c, 0xb9, 0xb2, 0x39, 0xfa, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x6c, 0xd0, 0x5c, 0x5e, 0xca, 0x20, 0x19, 0x44, 0x87, 0xf4, 0xeb, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x65, 0x70, 0x6c, 0xe1, 0x21, 0xb5, 0x74, 0x3c, 0x1e, 0x04, 0x8b, 0x1b, 0x0e, 0x85, 0x83, 0x56, 0x66, 0x4a, 0x16, 0x07, 0xd9, 0x86, 0xb8, 0x0c, 0x82, 0x0d, 0x9a, 0xd5, 0x16, 0x19, 0x76, 0xe1, 0x36, 0x58, 0x01, 0x29, 0x75, 0xc8, 0xda, 0x2d, 0xfc, 0x82, 0x60, 0x83, 0x76, 0x2c, 0x55, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x5a, 0x00, 0x1d, 0x1a, 0x7e, 0x1d, 0x87, 0x8e, 0xe7, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x87, 0xdb, 0x60, 0x2d, 0xa5, 0xd4, 0x21, 0x6b, 0x37, 0xfc, 0x82, 0x60, 0x41, 0x32, 0x20, 0xec, 0xfe, 0x06, 0xd1, 0x06, 0x0d, 0x3e, 0x93, 0x1c, 0x56, 0x68, 0x0f, 0x9a, 0xea, 0x6a, 0x39, 0x9e, 0x1f, 0x8f, 0x07, 0xc1, 0xe2, 0x06, 0x6b, 0x86, 0x8d, 0x0e, 0x96, 0x64, 0x40, 0x2d, 0x0e, 0xbb, 0x41, 0x73, 0xd0, 0x00, 0x1b, 0x12, 0x53, 0xc3, 0x2e, 0xdc, 0x06, 0x4b, 0xcb, 0x8d, 0x0e, 0xd1, 0xdc, 0x70, 0xae, 0x0f, 0xbb, 0x70, 0x1b, 0xac, 0x16, 0x36, 0x3a, 0x44, 0x73, 0x43, 0x62, 0x6a, 0xd8, 0x85, 0xdb, 0x60, 0x31, 0xb2, 0xd1, 0x21, 0x9a, 0x2b, 0xdc, 0x06, 0x8b, 0x86, 0xb3, 0x0e, 0xe3, 0x72, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0xb7, 0xc1, 0x9a, 0x6b, 0xa3, 0x43, 0x34, 0x17, 0x6e, 0x83, 0xc5, 0xd5, 0x59, 0x87, 0x71, 0x39, 0x1c, 0xed, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x4d, 0x22, 0x0a, 0x2c, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xad, 0x7a, 0xa5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x4c, 0xec, 0x85, 0xdf, 0x78, 0xbe, 0xa1, 0x93, 0xda, 0x86, 0x26, 0x5c, 0x07, 0x4b, 0x91, 0xb3, 0x36, 0x08, 0x4c, 0xec, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0x9b, 0x04, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x34, 0x2e, 0xda, 0x20, 0xec, 0xa9, 0x0f, 0x4a, 0xec, 0xc1, 0xe3, 0xd0, 0x41, 0x89, 0x3d, 0x78, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0x80, 0xb0, 0xea, 0x3b, 0x08, 0x78, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xf8, 0x2f, 0xfc, 0xc6, 0xf3, 0x0d, 0x8d, 0x8b, 0x36, 0x08, 0x7b, 0xea, 0x83, 0xa5, 0xc8, 0x59, 0x1b, 0xe2, 0xbf, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xa0, 0xd4, 0x1d, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9a, 0x0e, 0x1d, 0x34, 0x2b, 0x5b, 0x72, 0x1c, 0x3a, 0x48, 0xf4, 0x54, 0x38, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0x5c, 0x0d, 0xa2, 0x0d, 0x46, 0x04, 0xd5, 0x21, 0x5b, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0xd8, 0x20, 0xcd, 0x3d, 0xe3, 0x20, 0xd1, 0x5b, 0xe1, 0x38, 0x74, 0x30, 0x96, 0x7d, 0x8e, 0xc7, 0x2b, 0xfc, 0x82, 0x60, 0x83, 0xf6, 0xd9, 0x00, 0x16, 0x87, 0xdd, 0xf0, 0x08, 0xc0, 0x86, 0xbd, 0xc2, 0x41, 0xb0, 0x82, 0x60, 0x83, 0x65, 0xb2, 0x41, 0x87, 0x0e, 0x1a, 0x83, 0x60, 0x41, 0x32, 0xe8, 0x3b, 0x18, 0xfe, 0xb1, 0x87, 0x0e, 0x1a, 0x83, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0xe2, 0xb0, 0x1b, 0x34, 0x5c, 0x13, 0xb0, 0xc1, 0xfa, 0x06, 0xa3, 0x61, 0x37, 0x68, 0xdb, 0x29, 0x60, 0x61, 0x17, 0x6e, 0x43, 0x2b, 0xf1, 0x43, 0xd6, 0x6e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x98, 0x1f, 0x94, 0x34, 0x0d, 0x83, 0x68, 0x41, 0x7a, 0xc8, 0xd7, 0x1e, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x7e, 0x50, 0x8e, 0x35, 0x1c, 0xb4, 0x5c, 0xdc, 0x32, 0xec, 0x06, 0x6d, 0xa6, 0x05, 0x2c, 0xec, 0xc2, 0x6d, 0xe8, 0x4f, 0x7e, 0xc8, 0xda, 0x2d, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xda, 0x77, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x82, 0x14, 0xff, 0xa0, 0x05, 0xc6, 0x80, 0xe3, 0xd0, 0x20, 0x58, 0xd8, 0x85, 0xdb, 0x70, 0xb4, 0x1f, 0xd6, 0x7e, 0x37, 0x1c, 0xed, 0x83, 0x60, 0x41, 0x32, 0x98, 0x1d, 0x9c, 0xbd, 0x8c, 0x0f, 0x1a, 0x22, 0x13, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf9, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0x12, 0x53, 0x87, 0xd4, 0xc1, 0x86, 0x18, 0x0e, 0xbb, 0xb0, 0x1b, 0xa2, 0xb9, 0xb0, 0x1b, 0x1c, 0xf8, 0x98, 0x0f, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x21, 0x86, 0xc3, 0x2e, 0xec, 0x86, 0x71, 0x59, 0xd8, 0x85, 0xdb, 0x38, 0x74, 0xe8, 0x4f, 0x7e, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0x43, 0x3a, 0x77, 0x83, 0x13, 0x45, 0xf4, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x43, 0xee, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x1c, 0x1c, 0x1e, 0x3c, 0x1c, 0x3c, 0x1f, 0x9c, 0x1d, 0xfc, 0x1d, 0x3c, 0x1c, 0x9c, 0x1c, 0xb4, 0x0d, 0x2e, 0x0e, 0xce, 0x0e, 0xfe, 0x0e, 0x3e, 0x1e, 0x24, 0x51, 0x57, 0x1d, 0xdf, 0x8e, 0xc7, 0xc3, 0x2e, 0xdc, 0x06, 0xa3, 0xd5, 0xfc, 0x60, 0x31, 0xb2, 0xd1, 0x82, 0x60, 0x41, 0x32, 0x90, 0xee, 0x3b, 0x18, 0x8e, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xec, 0x86, 0x68, 0x2e, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf3, 0x83, 0x13, 0x45, 0xf4, 0x20, 0x5a, 0x90, 0x1e, 0x5a, 0x89, 0x1f, 0x04, 0x39, 0xff, 0xc1, 0x42, 0x13, 0xa3, 0xe1, 0x37, 0x9e, 0x0f, 0xbb, 0x61, 0x5c, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x06, 0x4d, 0x09, 0xb8, 0x0c, 0xa2, 0x05, 0xe9, 0xa1, 0x3f, 0xf9, 0x41, 0x90, 0xf3, 0x1f, 0x2c, 0x34, 0x31, 0x3a, 0x0e, 0x1d, 0x4e, 0xb1, 0x41, 0xb4, 0x20, 0x3d, 0x24, 0x66, 0x0e, 0x82, 0x9c, 0xff, 0x60, 0xa1, 0x89, 0xd1, 0xb0, 0x1b, 0xb4, 0x04, 0x1c, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x1c, 0x7d, 0x07, 0xc3, 0xd0, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd9, 0x60, 0x90, 0xbc, 0x1c, 0x9c, 0x84, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x34, 0x1e, 0x1d, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x42, 0x13, 0xa3, 0xc5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x10, 0xfe, 0x43, 0xea, 0xe0, 0x90, 0x5c, 0x3a, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0xc3, 0x6e, 0xd0, 0xf0, 0x79, 0xc0, 0xc2, 0x2e, 0x08, 0x16, 0x04, 0x1b, 0x2c, 0xa8, 0xdd, 0x3f, 0x68, 0xb1, 0x80, 0xe4, 0x60, 0xad, 0x6b, 0xc9, 0x06, 0xeb, 0x1b, 0x8c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x40, 0xf8, 0x0f, 0xd6, 0x47, 0x3a, 0x0c, 0xa2, 0x85, 0x1d, 0x04, 0x0b, 0x82, 0x0d, 0x16, 0xd4, 0xee, 0x1f, 0x14, 0x8c, 0x0e, 0x07, 0x6b, 0x5d, 0x4b, 0x8e, 0xc7, 0xc3, 0x6e, 0xd0, 0x96, 0x4b, 0xc0, 0x06, 0xeb, 0x1b, 0x8c, 0x86, 0xdd, 0xa0, 0x39, 0x99, 0x80, 0x0d, 0x16, 0x9a, 0x18, 0x0d, 0xb2, 0x0d, 0xcd, 0xd7, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x41, 0x7b, 0x2e, 0x2e, 0xc7, 0xe3, 0xe3, 0xdb, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x70, 0x65, 0x65, 0xeb, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x06, 0x85, 0xd4, 0xdf, 0x06, 0xab, 0x89, 0xc0, 0xd6, 0x90, 0xfb, 0x1e, 0x04, 0x1b, 0x0c, 0x34, 0xa7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0x56, 0x07, 0x83, 0x1d, 0x87, 0x16, 0x24, 0x03, 0x47, 0xdf, 0x21, 0xb9, 0x74, 0x88, 0xe1, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x8b, 0x1b, 0xa6, 0xf3, 0xa0, 0xa5, 0x46, 0x81, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0xb9, 0xbc, 0x94, 0x41, 0x32, 0xcc, 0x41, 0x3a, 0x1d, 0xc8, 0xc1, 0x18, 0x8d, 0x38, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xbf, 0xac, 0xad, 0x8e, 0x3d, 0xa4, 0x96, 0x8e, 0xc7, 0x2b, 0xfc, 0x82, 0x60, 0x71, 0x0e, 0xd6, 0x74, 0x1c, 0x2d, 0x0e, 0x82, 0x05, 0xc1, 0xe2, 0xb0, 0x1b, 0x04, 0x49, 0xf3, 0x86, 0xc4, 0xd4, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xf6, 0xee, 0x06, 0xd1, 0x06, 0x4b, 0xc3, 0x7f, 0x0e, 0x2b, 0xb4, 0x07, 0xa9, 0x9d, 0x34, 0x83, 0x60, 0x41, 0x32, 0x64, 0x10, 0x6d, 0xd0, 0x02, 0x60, 0xc9, 0xf1, 0x7c, 0x41, 0xb0, 0x20, 0x19, 0x48, 0xdf, 0x1d, 0x9c, 0x84, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa2, 0x79, 0x30, 0xe6, 0xef, 0x8e, 0x43, 0x6b, 0x18, 0x97, 0x83, 0x86, 0x6b, 0x49, 0x0e, 0x42, 0x00, 0xfc, 0xf8, 0xb6, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x77, 0x07, 0xc3, 0x3f, 0xf6, 0x60, 0x18, 0x3b, 0x1c, 0x84, 0x00, 0xf8, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x6e, 0x68, 0xbf, 0x7e, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x2c, 0x03, 0xf4, 0x5f, 0x1c, 0x76, 0x83, 0xb1, 0x8e, 0xb6, 0x21, 0x86, 0x83, 0x60, 0x61, 0x17, 0x6e, 0x83, 0x15, 0x90, 0x52, 0x87, 0x46, 0x82, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0x53, 0x77, 0x87, 0xe4, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x45, 0xe6, 0xfa, 0x1b, 0xb2, 0x76, 0x07, 0xc5, 0x39, 0xd7, 0x71, 0x68, 0x90, 0xad, 0xa1, 0xfd, 0xfa, 0x70, 0x1b, 0xac, 0xa5, 0x94, 0x3a, 0x34, 0x12, 0x3c, 0xc4, 0xf0, 0x60, 0xb9, 0xa5, 0xff, 0xf1, 0x78, 0xf8, 0x05, 0xc1, 0x06, 0xed, 0x98, 0xaa, 0x2c, 0x0e, 0x82, 0xc5, 0x85, 0x5d, 0xd8, 0x0d, 0x1a, 0x75, 0x2b, 0x59, 0xd8, 0x85, 0x5d, 0xd8, 0x0d, 0x96, 0x0d, 0x06, 0x2d, 0xdc, 0x06, 0x2b, 0xe2, 0x8e, 0x0e, 0x3d, 0x84, 0x0e, 0x47, 0xfb, 0x61, 0x7d, 0xf3, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x0b, 0xbb, 0xb0, 0x0b, 0xbb, 0xc1, 0x18, 0x58, 0x38, 0xac, 0x6f, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xbb, 0xc1, 0xb2, 0xc1, 0xa0, 0x85, 0xdb, 0x60, 0xc9, 0x0d, 0xd2, 0xa1, 0x87, 0xd0, 0xe1, 0x68, 0xdf, 0x10, 0xc3, 0x61, 0x17, 0x76, 0x83, 0x65, 0x83, 0x41, 0x0b, 0xb7, 0xc1, 0xd2, 0xfa, 0xa7, 0x43, 0x0f, 0xa1, 0xc3, 0xd1, 0x7e, 0x48, 0xe7, 0x2e, 0x6e, 0xb0, 0xca, 0xc1, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x35, 0xe4, 0xb1, 0xc7, 0x00, 0x8f, 0xb6, 0x34, 0x37, 0xba, 0x16, 0xbb, 0xb0, 0x34, 0xf7, 0x70, 0x8a, 0x0d, 0xbb, 0xb0, 0x1b, 0x2c, 0x1b, 0x0c, 0xda, 0x20, 0x5d, 0xd1, 0xfa, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x24, 0xc3, 0x0c, 0xa2, 0x05, 0xf1, 0x06, 0x0b, 0x4d, 0x8c, 0x0e, 0x3d, 0x84, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0x32, 0xcc, 0x20, 0x5a, 0x10, 0x6f, 0xb0, 0xd0, 0xc4, 0xe8, 0xd0, 0xf0, 0xeb, 0x78, 0xbe, 0x20, 0xd8, 0x60, 0x5d, 0xdb, 0xd8, 0x41, 0xcb, 0x84, 0x25, 0x83, 0x60, 0x41, 0x32, 0x20, 0xbc, 0xfa, 0x0e, 0x86, 0xa1, 0xcf, 0xc1, 0x6a, 0x0b, 0xa2, 0x61, 0x17, 0x76, 0x83, 0x65, 0x83, 0x41, 0x0b, 0xb7, 0xc1, 0xf2, 0x9c, 0xa4, 0x43, 0x0f, 0xa1, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0x60, 0xdc, 0x41, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0xa7, 0xb2, 0x64, 0x43, 0xd3, 0xa1, 0x0d, 0xda, 0xc1, 0x2c, 0xd9, 0x60, 0xbc, 0x21, 0x1d, 0x1a, 0x1d, 0x1d, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x96, 0x0d, 0x06, 0x2d, 0xdc, 0x06, 0x4b, 0x6c, 0x93, 0x0e, 0x3d, 0x84, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x83, 0x71, 0x07, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x9d, 0xca, 0x92, 0x0d, 0x4d, 0x87, 0x36, 0x68, 0xcd, 0xb4, 0xe4, 0xa0, 0x31, 0x66, 0x97, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0xc1, 0xb2, 0xc1, 0xa0, 0x85, 0xdb, 0x60, 0xa9, 0xbc, 0xd2, 0xa1, 0x87, 0xd0, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0x08, 0x36, 0x68, 0xef, 0xb5, 0x64, 0x90, 0x0c, 0xb2, 0x41, 0xb4, 0xb0, 0x1b, 0x9a, 0x0e, 0x1d, 0x1a, 0x1d, 0x1d, 0x87, 0x0e, 0x1b, 0xb5, 0xc3, 0x2e, 0xec, 0x06, 0xcb, 0x06, 0x83, 0x16, 0x6e, 0x83, 0x75, 0x01, 0x4b, 0x87, 0x1e, 0x42, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x20, 0x19, 0x66, 0x10, 0x2d, 0x58, 0x6f, 0xb0, 0x7c, 0x7a, 0xe9, 0xd0, 0xb8, 0xe8, 0x78, 0xbc, 0x41, 0x48, 0x81, 0x6f, 0xb0, 0x18, 0x80, 0x68, 0x0d, 0x47, 0xfb, 0x82, 0x64, 0xc8, 0xc1, 0x31, 0xab, 0xf8, 0x20, 0xa4, 0xc0, 0x87, 0x5f, 0x90, 0x0c, 0x33, 0x88, 0x16, 0xc4, 0x1b, 0x2c, 0x34, 0x31, 0x3a, 0x34, 0x3a, 0x3a, 0x9e, 0x1f, 0xcf, 0x87, 0x5d, 0xd8, 0x0d, 0x96, 0x0d, 0x06, 0x2d, 0xdc, 0x06, 0x2b, 0x23, 0x96, 0x0e, 0x3d, 0x84, 0x0e, 0x47, 0xfb, 0x0a, 0x82, 0x0d, 0xd6, 0xf2, 0x09, 0x1c, 0xac, 0xf6, 0xd4, 0xdf, 0xa0, 0x8c, 0xdb, 0x19, 0x7e, 0x41, 0x32, 0xcc, 0x20, 0x5a, 0x10, 0x6f, 0xb0, 0x6e, 0x54, 0xff, 0xd0, 0x31, 0xec, 0x78, 0x7c, 0x3c, 0x1f, 0x76, 0x61, 0x37, 0x58, 0x36, 0x18, 0xb4, 0x70, 0x1b, 0x2c, 0xd5, 0x42, 0x3a, 0xf4, 0x10, 0x3a, 0x1c, 0xed, 0x2b, 0x08, 0x36, 0x58, 0xcb, 0x27, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x65, 0xec, 0x92, 0xc3, 0x1e, 0xef, 0x71, 0x68, 0xc3, 0xd1, 0x7e, 0x68, 0x96, 0x34, 0xec, 0xc2, 0x6e, 0xb0, 0x6c, 0x30, 0x68, 0xe1, 0x36, 0x58, 0x74, 0x84, 0x74, 0xe8, 0x21, 0x74, 0x38, 0xda, 0x37, 0x68, 0x5b, 0xe1, 0x65, 0xd8, 0x85, 0xdd, 0x60, 0xd9, 0x60, 0xd0, 0xc2, 0x6d, 0xb0, 0x14, 0x64, 0xe9, 0xd0, 0x43, 0xe8, 0x70, 0xb4, 0xaf, 0x20, 0xd8, 0x60, 0x2d, 0x9f, 0xc0, 0x41, 0xeb, 0xec, 0x25, 0x1b, 0x5a, 0x89, 0x2f, 0xfc, 0x82, 0x64, 0x98, 0x41, 0xb4, 0x20, 0xde, 0x60, 0xa1, 0x89, 0xd1, 0xa1, 0x71, 0xd1, 0xf1, 0xf8, 0x78, 0x3e, 0xfc, 0x82, 0x64, 0x98, 0x41, 0xb4, 0x20, 0xde, 0x60, 0xa1, 0x89, 0xd1, 0xa1, 0x59, 0xd2, 0xf1, 0xf8, 0x78, 0x3e, 0xec, 0xc2, 0x6e, 0xb0, 0x6c, 0x30, 0x68, 0xe1, 0x36, 0x58, 0x0c, 0xb3, 0x74, 0xe8, 0x21, 0x74, 0x38, 0xda, 0x57, 0x10, 0x6c, 0xb0, 0x96, 0x4f, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0x36, 0x70, 0x4d, 0x8e, 0x43, 0x1b, 0x14, 0x76, 0x38, 0x07, 0x6d, 0x83, 0xbc, 0x0c, 0xbb, 0xb0, 0x1b, 0x2c, 0x1b, 0x0c, 0x5a, 0xb8, 0x0d, 0x56, 0xff, 0x2c, 0x1d, 0x7a, 0x08, 0x1d, 0x8e, 0xf6, 0x35, 0x68, 0xe6, 0xe5, 0x65, 0x43, 0x7f, 0xf2, 0xe1, 0x17, 0x24, 0xc3, 0x0c, 0xa2, 0x05, 0xf1, 0x06, 0x0b, 0x4d, 0x8c, 0x0e, 0x1d, 0xc3, 0x8e, 0xc7, 0xc7, 0xf3, 0x61, 0x17, 0x76, 0x83, 0x65, 0x83, 0x41, 0x0b, 0xb7, 0xc1, 0xfa, 0x91, 0x9f, 0x43, 0x0f, 0xa1, 0xc3, 0xd1, 0xbe, 0x41, 0x02, 0x1e, 0xc8, 0xb0, 0x0b, 0xbb, 0xc1, 0xb2, 0xc1, 0xa0, 0x85, 0xdb, 0x60, 0xfd, 0xd3, 0xd2, 0xa1, 0x87, 0xd0, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0x48, 0x86, 0x19, 0x44, 0x0b, 0xd6, 0x87, 0x8e, 0x61, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0xcb, 0x94, 0xc5, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x68, 0x55, 0xc2, 0xe4, 0x38, 0x74, 0x10, 0x02, 0xe0, 0xc3, 0x2e, 0xec, 0x06, 0xcb, 0x06, 0x83, 0x16, 0x6e, 0x83, 0xe5, 0x6e, 0x4b, 0x87, 0x1e, 0x42, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x2d, 0x9f, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x96, 0xb1, 0x4b, 0x0e, 0x0e, 0xa0, 0xe9, 0xc7, 0xa1, 0x8d, 0x43, 0xc3, 0x2f, 0x48, 0x86, 0x19, 0x44, 0x0b, 0xe2, 0x8d, 0x43, 0x87, 0x46, 0x47, 0xc7, 0xf3, 0xe3, 0xf9, 0xb0, 0x0b, 0xbb, 0xc1, 0xb2, 0xc1, 0xa0, 0x85, 0xdb, 0x60, 0x41, 0xe3, 0xd2, 0xa1, 0x87, 0xd0, 0xe1, 0x68, 0x5f, 0x10, 0x6c, 0xd0, 0x3a, 0xd3, 0xcb, 0x82, 0x60, 0x83, 0x65, 0xca, 0x62, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0xb4, 0xae, 0x63, 0x72, 0x1c, 0x3a, 0x08, 0x01, 0xf0, 0x61, 0x17, 0x76, 0x83, 0x65, 0x83, 0x41, 0x0b, 0xb7, 0xc1, 0x92, 0xce, 0xa5, 0x43, 0x0f, 0xa1, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x90, 0x0c, 0xec, 0xdf, 0x1d, 0x56, 0x68, 0x0f, 0xc6, 0x1d, 0xc2, 0xb0, 0x0b, 0xbb, 0xc1, 0xb2, 0xc1, 0xa0, 0x85, 0xdb, 0x60, 0x49, 0x20, 0xd2, 0xa1, 0x87, 0xd0, 0xe1, 0x68, 0x5f, 0x41, 0xb0, 0x41, 0x1b, 0x48, 0x26, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x0d, 0xbf, 0x0e, 0xc6, 0x9b, 0xce, 0x71, 0xe8, 0x60, 0x28, 0x22, 0x0d, 0xbb, 0xb0, 0x1b, 0x2c, 0x1b, 0x0c, 0x5a, 0xb8, 0x0d, 0x96, 0x11, 0x2f, 0x1d, 0x7a, 0x08, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0xad, 0x33, 0xbd, 0x2c, 0x08, 0x36, 0x58, 0xa6, 0x2c, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x41, 0x33, 0x59, 0x26, 0xc7, 0xa1, 0x83, 0x10, 0x00, 0x1f, 0x76, 0x61, 0x37, 0x58, 0x36, 0x18, 0xb4, 0x70, 0x1b, 0x2c, 0xc1, 0x3d, 0x3a, 0xf4, 0x10, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc9, 0x30, 0x83, 0x68, 0xc1, 0xfa, 0xd0, 0x2c, 0xe9, 0x78, 0xbc, 0x20, 0xd8, 0xa0, 0x55, 0xff, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0x60, 0xbc, 0xe9, 0x1c, 0x9a, 0x0e, 0x1d, 0xa2, 0x79, 0x1c, 0x3a, 0x08, 0x01, 0xf0, 0x61, 0x17, 0x76, 0x83, 0x65, 0x83, 0x41, 0x0b, 0xb7, 0xc1, 0x2a, 0x74, 0xa6, 0x43, 0x0f, 0xa1, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x90, 0x0c, 0x1c, 0x7d, 0x83, 0x68, 0x61, 0x07, 0xc1, 0x06, 0xcd, 0x14, 0x9a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x8a, 0x5c, 0x85, 0xe3, 0xd0, 0x21, 0x5b, 0x71, 0x3c, 0x3e, 0x68, 0xfa, 0xf2, 0x65, 0xd8, 0x85, 0xdd, 0x60, 0xd9, 0x60, 0xd0, 0xc2, 0x6d, 0xb0, 0xd8, 0x8d, 0xe9, 0xd0, 0x43, 0xe8, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x68, 0xfa, 0xf2, 0x65, 0x83, 0x90, 0x02, 0xdf, 0xe0, 0x18, 0x98, 0xbf, 0xb0, 0x0b, 0xbb, 0xd0, 0x43, 0xd3, 0xa1, 0xc3, 0xfa, 0xe6, 0x86, 0xa6, 0x43, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x0f, 0xda, 0xcf, 0x7d, 0xd9, 0xa0, 0x8c, 0x86, 0x19, 0x7e, 0x41, 0x32, 0xcc, 0x20, 0x5a, 0x10, 0x6f, 0xb0, 0xd0, 0xc4, 0xe8, 0xa0, 0xb0, 0x52, 0x3b, 0x9e, 0x1f, 0xcf, 0x0f, 0x42, 0x00, 0x7c, 0xd8, 0x85, 0xdd, 0x60, 0xd9, 0x60, 0xd0, 0xc2, 0x6d, 0xb0, 0x2e, 0xbd, 0xe9, 0xd0, 0x43, 0xe8, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x68, 0x29, 0xe4, 0x65, 0x10, 0x2c, 0x48, 0x86, 0x19, 0x44, 0x1b, 0x8c, 0xaa, 0xff, 0x41, 0xb4, 0x60, 0x7d, 0x68, 0x74, 0x74, 0x3c, 0xdf, 0x20, 0xa4, 0xc0, 0x07, 0xc1, 0x82, 0x64, 0x60, 0xf8, 0x0e, 0x86, 0xa1, 0xcf, 0xc1, 0x6a, 0x0b, 0xa2, 0x61, 0x17, 0x76, 0x83, 0x65, 0x83, 0x41, 0x0b, 0xb7, 0xc1, 0xfa, 0x2b, 0xa7, 0x43, 0x0f, 0xa1, 0xc3, 0xd1, 0xbe, 0x20, 0x19, 0x66, 0x10, 0x2d, 0xa8, 0x1f, 0x04, 0x1b, 0xb4, 0x35, 0x6a, 0x72, 0x70, 0x00, 0x4d, 0x3f, 0x68, 0x11, 0xf3, 0x65, 0xd8, 0x85, 0xdd, 0x60, 0xd9, 0x60, 0xd0, 0xc2, 0x6d, 0xb0, 0xc8, 0xd3, 0xe9, 0xd0, 0x43, 0xe8, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x24, 0xc3, 0x0c, 0xa2, 0x05, 0xf1, 0x06, 0x6d, 0xe0, 0x9a, 0x1c, 0x1a, 0x17, 0x1d, 0x8f, 0x07, 0xc1, 0x0a, 0x82, 0x0d, 0x9a, 0xe0, 0x35, 0x39, 0x68, 0x7b, 0xf5, 0x65, 0x10, 0x2c, 0x48, 0x06, 0x0c, 0xbe, 0xbf, 0x43, 0xb6, 0xe2, 0xa0, 0xed, 0xd5, 0x97, 0x41, 0xb0, 0x20, 0x58, 0xd8, 0x85, 0xdd, 0x60, 0x74, 0xac, 0x2f, 0xec, 0x06, 0x6d, 0x0b, 0x9b, 0x6c, 0xd0, 0xaa, 0xb1, 0xc9, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x1b, 0x1c, 0xf7, 0x3b, 0x86, 0x5d, 0xd8, 0x0d, 0x46, 0xc7, 0xfa, 0x06, 0x6d, 0x0b, 0x9b, 0x1c, 0x8e, 0xf6, 0xc5, 0x39, 0x1c, 0xed, 0xc3, 0x2e, 0xec, 0x06, 0xa3, 0x63, 0xfd, 0xa0, 0x6d, 0xf9, 0x97, 0x0d, 0x06, 0xef, 0xc1, 0x20, 0xdb, 0xd0, 0x7c, 0xfd, 0xf0, 0x12, 0xc0, 0xc1, 0x48, 0xd3, 0x1a, 0x04, 0x0b, 0x92, 0x61, 0x06, 0xd1, 0x82, 0xfa, 0x43, 0x34, 0x07, 0xd1, 0x82, 0xf5, 0x41, 0x79, 0x64, 0x70, 0x58, 0xa1, 0x1d, 0x04, 0x0b, 0x92, 0x61, 0x06, 0xd1, 0x82, 0xfa, 0x43, 0xbe, 0x76, 0x10, 0x2d, 0x58, 0x1f, 0xa4, 0x15, 0x8f, 0x1c, 0xb2, 0x15, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x78, 0xaf, 0xef, 0xe0, 0x24, 0x74, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xb0, 0xf6, 0x7b, 0xb0, 0xec, 0x6f, 0xe8, 0x38, 0xb4, 0x20, 0xd8, 0xa0, 0x49, 0x74, 0x96, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xf8, 0x1f, 0x1c, 0xe4, 0x74, 0x8f, 0x43, 0xc3, 0x6e, 0x88, 0xff, 0x1a, 0x1c, 0x03, 0xf3, 0x57, 0x3c, 0xb4, 0x5f, 0x3f, 0x08, 0x11, 0xff, 0xe3, 0xd0, 0x71, 0x68, 0xd8, 0x85, 0xdd, 0x60, 0xd9, 0x60, 0xd0, 0xc2, 0x6d, 0xb0, 0xd2, 0xe5, 0xe9, 0xd0, 0x43, 0xe8, 0x70, 0xb4, 0xaf, 0x41, 0x33, 0x2f, 0x2f, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x2b, 0x5c, 0x27, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x1a, 0xe5, 0x00, 0x18, 0x7e, 0xe3, 0xf9, 0x06, 0x43, 0x11, 0xe9, 0xd0, 0x2c, 0xe9, 0x38, 0x34, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xa7, 0xff, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x88, 0x06, 0xd1, 0xc2, 0x6e, 0x88, 0xe6, 0x41, 0x91, 0xab, 0x70, 0x1c, 0x3a, 0x18, 0x51, 0xb8, 0xc3, 0x2e, 0xec, 0x06, 0xcb, 0x06, 0x83, 0x16, 0x6e, 0x83, 0xa5, 0xcf, 0x47, 0x87, 0x1e, 0x42, 0x87, 0xa3, 0x7d, 0x0d, 0x9a, 0x79, 0x79, 0x19, 0x04, 0x1b, 0xb4, 0xf0, 0xf5, 0x32, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0x96, 0x01, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x51, 0x0e, 0x80, 0x83, 0x52, 0x66, 0xe7, 0x38, 0x34, 0xc8, 0xd6, 0x90, 0xc7, 0x5e, 0x1c, 0x04, 0x1b, 0x34, 0x72, 0xbd, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xf9, 0xed, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0xe6, 0xe0, 0x50, 0x5d, 0x76, 0xd0, 0xf0, 0x1c, 0xc5, 0xf0, 0x1b, 0xcf, 0x17, 0x0f, 0x0e, 0xd5, 0x65, 0x07, 0xa5, 0xcc, 0xce, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x8b, 0xc3, 0x6e, 0xc8, 0x63, 0x2d, 0xec, 0xc2, 0x1d, 0x2c, 0xb4, 0xbf, 0x59, 0x10, 0x2c, 0x48, 0x06, 0xd6, 0xee, 0x0e, 0x1a, 0xdc, 0x11, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xb6, 0xeb, 0x0e, 0x02, 0xde, 0xff, 0xd0, 0x14, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0xd0, 0x7e, 0x7d, 0xb8, 0x0d, 0x47, 0xfb, 0xa1, 0x93, 0xda, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xc3, 0xd1, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x46, 0xdf, 0xdf, 0x41, 0xc0, 0xfb, 0x1f, 0x1a, 0xb5, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xda, 0xaf, 0x1f, 0x1a, 0x2e, 0x6e, 0x30, 0xe4, 0xd1, 0x37, 0x08, 0x4a, 0xef, 0x41, 0xb0, 0x41, 0x6b, 0x55, 0x30, 0x07, 0xe9, 0x82, 0x43, 0xc7, 0xb7, 0x61, 0x37, 0x68, 0x7e, 0xd2, 0x65, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0xd8, 0x60, 0xb4, 0xcc, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x07, 0xf0, 0xe4, 0xa0, 0xc8, 0x55, 0x38, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0x4d, 0x5f, 0xbe, 0x6c, 0x10, 0x52, 0xe0, 0x1b, 0x1c, 0x03, 0xf3, 0xd7, 0x60, 0xa1, 0xe1, 0xcf, 0x86, 0xa3, 0xfd, 0xd0, 0x74, 0xe8, 0x20, 0x04, 0xc0, 0x87, 0x5d, 0xd8, 0x0d, 0x96, 0x0d, 0x06, 0x2d, 0xdc, 0x06, 0x0b, 0xc3, 0x9e, 0x0e, 0x3d, 0x84, 0x0e, 0x47, 0xfb, 0x1a, 0xb4, 0xb3, 0xf5, 0x72, 0xd0, 0x5c, 0xc4, 0xcb, 0xb0, 0x1b, 0xb4, 0xe1, 0xe9, 0xb2, 0xb0, 0x1b, 0x8c, 0x81, 0x85, 0x05, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x90, 0xfa, 0x1b, 0x44, 0x0b, 0x3b, 0x08, 0x36, 0x68, 0xa6, 0xd0, 0xe4, 0xa0, 0x05, 0x5d, 0x81, 0x43, 0xb6, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0x25, 0x37, 0x48, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x0c, 0xf0, 0x68, 0x4b, 0x73, 0xa3, 0x6b, 0x61, 0x7b, 0x9b, 0xa3, 0x0f, 0xa7, 0xd8, 0x41, 0x6b, 0xa8, 0x2e, 0xc3, 0x2e, 0xec, 0x06, 0xcb, 0x06, 0x83, 0x16, 0x6e, 0x83, 0xe5, 0x91, 0x4f, 0x87, 0x1e, 0x42, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x41, 0x0b, 0x26, 0x2f, 0x83, 0x60, 0xe1, 0x17, 0x24, 0xc3, 0x0c, 0xa2, 0x05, 0xf1, 0x06, 0x0b, 0x4d, 0x8c, 0x0e, 0x4d, 0x87, 0x8e, 0xe7, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xeb, 0xda, 0xc6, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x79, 0x58, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x38, 0x64, 0xed, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0x83, 0xbe, 0x2e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0xe1, 0x68, 0x1f, 0x24, 0x03, 0x63, 0x75, 0xd0, 0x78, 0xce, 0xc9, 0x21, 0x5f, 0x7b, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x58, 0x36, 0x18, 0xb4, 0x70, 0x1b, 0x2c, 0x0e, 0x7c, 0x3a, 0xf4, 0x10, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x6b, 0xf9, 0x04, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0x8c, 0x5d, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x41, 0x9b, 0xec, 0x2e, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x05, 0xc9, 0x30, 0x83, 0x68, 0x41, 0xbc, 0xc1, 0x42, 0x13, 0xa3, 0x0d, 0x16, 0x79, 0x3a, 0xad, 0xc1, 0x7a, 0x49, 0xa5, 0xc5, 0x0d, 0x56, 0x8b, 0x20, 0x05, 0x3e, 0x5b, 0x99, 0x5d, 0xba, 0x06, 0xeb, 0xd2, 0x9b, 0xd6, 0x60, 0x69, 0xdc, 0xd3, 0x06, 0xcb, 0xa7, 0x97, 0x0e, 0x4d, 0x87, 0x0e, 0x46, 0x1b, 0xed, 0x1a, 0xac, 0x4b, 0x6f, 0xda, 0xd0, 0xe8, 0xe8, 0x60, 0xb4, 0xd1, 0x1e, 0x62, 0xb8, 0x06, 0xeb, 0xd2, 0x9b, 0x36, 0x34, 0x3a, 0x3a, 0x48, 0x25, 0xee, 0x38, 0x58, 0xd3, 0x72, 0x74, 0x3c, 0x3f, 0x9e, 0x1f, 0x0c, 0x15, 0x81, 0x61, 0x17, 0x76, 0x83, 0x65, 0x83, 0x41, 0x0b, 0xb7, 0xc1, 0x02, 0xd1, 0xa7, 0x43, 0x0f, 0xa1, 0xc3, 0xd1, 0xbe, 0x06, 0xed, 0x75, 0xbc, 0x6c, 0x38, 0xda, 0x87, 0x5f, 0x90, 0x0c, 0x33, 0x88, 0x16, 0x98, 0xfd, 0xc3, 0xd1, 0x7e, 0xd0, 0x68, 0xd3, 0xcb, 0xf1, 0x7c, 0xd8, 0x85, 0xdd, 0x60, 0xd9, 0x60, 0xd0, 0xc2, 0x6d, 0xb0, 0x44, 0xf6, 0xe9, 0xd0, 0x43, 0xe8, 0x70, 0xb4, 0x2f, 0xec, 0x82, 0x60, 0x83, 0x26, 0xa1, 0x4f, 0x0e, 0x0e, 0xa0, 0xe9, 0x0b, 0x92, 0x61, 0x06, 0xd1, 0x82, 0xf5, 0x41, 0xd8, 0x53, 0x1f, 0x8f, 0x07, 0xc9, 0x30, 0x83, 0x68, 0xc1, 0xfa, 0xa0, 0xc4, 0x1e, 0x3c, 0x1e, 0x0f, 0xbb, 0xb0, 0x1b, 0x2c, 0x1b, 0x0c, 0x5a, 0xd8, 0x0d, 0xda, 0x26, 0x75, 0x39, 0x68, 0x37, 0x71, 0xe5, 0x70, 0xb4, 0x6f, 0xd0, 0x1a, 0xaa, 0xcb, 0x20, 0xdb, 0xd0, 0x7c, 0x7d, 0x10, 0x2c, 0x08, 0x36, 0x68, 0xad, 0xfd, 0x64, 0x90, 0x0c, 0xa2, 0xc3, 0x76, 0xef, 0xb0, 0x0b, 0xb7, 0x71, 0xe8, 0xb0, 0xf6, 0xbb, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x6c, 0x50, 0xac, 0x42, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0xee, 0xfe, 0x64, 0xf8, 0x8d, 0xe7, 0x1b, 0x14, 0x91, 0x92, 0x87, 0xc4, 0xcc, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0xc7, 0x1e, 0x03, 0x3c, 0xda, 0xd2, 0xdc, 0xe8, 0x5a, 0xde, 0xe0, 0xca, 0xdc, 0xc3, 0x29, 0x36, 0x48, 0x86, 0x19, 0x44, 0x0b, 0xd6, 0xc7, 0xa1, 0xe3, 0xf9, 0x82, 0x60, 0x83, 0xe6, 0x76, 0x4a, 0x16, 0x07, 0xc1, 0x82, 0x64, 0x98, 0x41, 0xb4, 0x20, 0xde, 0x60, 0xa1, 0x89, 0xd1, 0xa1, 0x09, 0xd7, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xa1, 0x3b, 0x08, 0x78, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa3, 0xd5, 0xfc, 0xa0, 0x09, 0xaa, 0x92, 0xe3, 0xd0, 0x82, 0x60, 0x41, 0x32, 0xc8, 0x0e, 0xd9, 0x8a, 0x83, 0x61, 0xec, 0x30, 0x08, 0x16, 0x24, 0x03, 0xc2, 0xab, 0xef, 0x60, 0x38, 0x4a, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x8c, 0xcb, 0x21, 0x5f, 0x7b, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x16, 0x9a, 0x18, 0x2d, 0x0e, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x37, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0xc1, 0xdb, 0xc1, 0xd3, 0xc1, 0xdd, 0xc1, 0xe9, 0x83, 0xf6, 0xed, 0x05, 0x8e, 0x6f, 0xc7, 0xe3, 0x83, 0x86, 0xca, 0x4a, 0x8e, 0xc7, 0x07, 0x25, 0x43, 0xd3, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x6d, 0x69, 0x6e, 0xf4, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x10, 0x2c, 0xce, 0x86, 0x15, 0xda, 0x0d, 0xd3, 0x79, 0xb0, 0xc4, 0x59, 0x7f, 0x71, 0x41, 0xb0, 0x20, 0x19, 0xd8, 0xae, 0x3b, 0x24, 0x97, 0x0e, 0x69, 0xb8, 0xe1, 0x17, 0x44, 0x0b, 0xc2, 0x41, 0xb0, 0x41, 0x83, 0x23, 0x29, 0x87, 0x34, 0xdc, 0xf1, 0x78, 0x10, 0x2c, 0x0e, 0xbb, 0x61, 0x2d, 0x74, 0x41, 0xb0, 0x21, 0x5f, 0x7b, 0x30, 0x12, 0x56, 0x87, 0xdd, 0x60, 0xed, 0xc7, 0xd7, 0x82, 0x60, 0x71, 0xd8, 0x0d, 0xd6, 0x31, 0xfe, 0x2f, 0x08, 0x36, 0x68, 0x69, 0x7d, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x49, 0xd3, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xa8, 0x3f, 0x18, 0x03, 0x0b, 0x07, 0x05, 0x05, 0xdb, 0x71, 0x68, 0xd8, 0x0d, 0x16, 0x6c, 0xfe, 0x2f, 0x08, 0x36, 0x68, 0xd5, 0x7f, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x49, 0xd3, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x64, 0x10, 0x6d, 0xd0, 0xea, 0x53, 0xcc, 0xf1, 0xfc, 0x38, 0x34, 0xec, 0x06, 0xab, 0xc5, 0xfe, 0x37, 0x68, 0x6b, 0x09, 0x65, 0xd8, 0x0d, 0x56, 0xa1, 0xfe, 0x6f, 0xd0, 0xe8, 0x0f, 0xca, 0x20, 0xdb, 0xd0, 0x7c, 0xfd, 0xa0, 0x48, 0x60, 0x3b, 0xbe, 0x0d, 0x82, 0x0d, 0x31, 0x1c, 0x04, 0x8b, 0xc3, 0x2e, 0xdc, 0x86, 0xa3, 0xfd, 0x60, 0xa5, 0x1b, 0xcd, 0x82, 0x64, 0xc8, 0x20, 0x5a, 0x30, 0x3e, 0x18, 0x8b, 0x9d, 0x87, 0xe4, 0xd2, 0x20, 0x58, 0x41, 0xb0, 0x20, 0x19, 0xcc, 0x0e, 0x8e, 0x59, 0xc5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x09, 0x2a, 0xfe, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x06, 0x7d, 0x07, 0xc7, 0xac, 0xe2, 0x83, 0x96, 0xdb, 0x62, 0x86, 0xdd, 0xa0, 0xa1, 0x08, 0x96, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x40, 0xf8, 0x0f, 0xd6, 0x31, 0xeb, 0x1f, 0xcf, 0x87, 0xdd, 0xa0, 0xf9, 0x06, 0x96, 0x0d, 0xd6, 0x37, 0x18, 0x0d, 0xbb, 0xb0, 0x1b, 0x34, 0x49, 0xc1, 0xb2, 0x41, 0x2b, 0x19, 0x2c, 0x87, 0xa3, 0x7d, 0x83, 0xf5, 0x0d, 0x46, 0xc3, 0x6e, 0xd0, 0x1a, 0x08, 0xcb, 0xc2, 0x6e, 0xb0, 0x5c, 0x92, 0x68, 0x41, 0xb0, 0x20, 0x19, 0x48, 0xf7, 0x1d, 0x0c, 0xff, 0xd8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0x02, 0x13, 0x7f, 0x10, 0x02, 0xe0, 0x83, 0x68, 0x81, 0xf0, 0x1f, 0xa4, 0x37, 0x36, 0x1c, 0xcf, 0x0f, 0x16, 0x6d, 0x8c, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0xed, 0x0c, 0xc6, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0x51, 0x44, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0xb4, 0x8c, 0x18, 0x33, 0x88, 0x16, 0x08, 0xff, 0x41, 0x81, 0xbe, 0x73, 0x3c, 0x3f, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x34, 0x49, 0xc1, 0xb2, 0x41, 0x33, 0x16, 0x2c, 0x87, 0xa3, 0x7d, 0x61, 0x37, 0x58, 0x2e, 0x49, 0xb4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x08, 0xff, 0x20, 0x19, 0xcc, 0x0e, 0x02, 0xde, 0xff, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xf1, 0x58, 0xe4, 0xa0, 0xa1, 0xc2, 0x98, 0x61, 0x37, 0x68, 0x56, 0x89, 0x65, 0x41, 0xb0, 0x20, 0x19, 0x78, 0xaa, 0xef, 0x60, 0xf8, 0xc7, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0x51, 0x44, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x39, 0x68, 0xad, 0x32, 0xe6, 0x38, 0x34, 0xec, 0x06, 0xed, 0x8e, 0xb1, 0x2c, 0x08, 0x36, 0x68, 0x76, 0xe1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x9b, 0x6c, 0x2c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xda, 0x83, 0x63, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xa1, 0x89, 0xd1, 0xe2, 0x20, 0x19, 0x32, 0x88, 0x36, 0x68, 0x5d, 0xc4, 0xe5, 0xb0, 0x42, 0x7b, 0x3c, 0x3e, 0x0e, 0x1d, 0x87, 0x86, 0xdd, 0xa0, 0xd5, 0x2a, 0x96, 0x05, 0xc1, 0x06, 0xcd, 0x6a, 0xb1, 0x1c, 0xb4, 0x81, 0x1a, 0x33, 0xc8, 0x36, 0x68, 0xb4, 0x8f, 0x65, 0xd8, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x46, 0x97, 0x43, 0x0e, 0xd6, 0x19, 0xff, 0x1f, 0x94, 0x56, 0x49, 0x1b, 0xac, 0x6f, 0x30, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x06, 0x8d, 0x7a, 0xc6, 0x0c, 0xa2, 0x85, 0x1d, 0x04, 0x0b, 0x82, 0x0d, 0x1a, 0x5d, 0x0e, 0x39, 0x58, 0x85, 0xfd, 0x7f, 0x50, 0x5a, 0x25, 0x1d, 0xcf, 0x8f, 0x6f, 0xc7, 0xb7, 0xe3, 0xf1, 0x0a, 0xbf, 0x20, 0xd8, 0x60, 0x4d, 0xcb, 0xd1, 0xe2, 0x20, 0xd8, 0xa0, 0xa1, 0x60, 0x95, 0x83, 0xe4, 0xc0, 0x8b, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0xdc, 0x60, 0xb1, 0xbf, 0xcf, 0x21, 0xb5, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0xc1, 0xf2, 0x07, 0xad, 0xc5, 0x61, 0x37, 0x34, 0x5c, 0xdc, 0x30, 0x2e, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x0f, 0x79, 0xac, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0xdd, 0x9d, 0x98, 0x43, 0x53, 0xa0, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0x8d, 0x8b, 0xd6, 0xd0, 0x2c, 0xe9, 0x60, 0xfc, 0x4b, 0x0e, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x6e, 0xc3, 0xd1, 0x7e, 0x68, 0x5c, 0xb4, 0x20, 0xd8, 0x60, 0x70, 0x57, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x6b, 0x7d, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x84, 0x6e, 0x10, 0x2d, 0xec, 0x41, 0xa2, 0xa7, 0xc2, 0x71, 0xe8, 0x38, 0xb4, 0xc1, 0xb9, 0xa5, 0x78, 0x83, 0xb0, 0xa7, 0x3e, 0x18, 0xff, 0x92, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0x9b, 0xa5, 0xb9, 0x95, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0x20, 0x58, 0x1c, 0x76, 0x83, 0x75, 0xdf, 0xff, 0x1b, 0x8e, 0xf6, 0x61, 0x37, 0x58, 0xdb, 0xff, 0xbf, 0xb0, 0x1b, 0x14, 0x4f, 0x03, 0x1b, 0x62, 0x38, 0xec, 0x06, 0xc5, 0x91, 0xca, 0x21, 0x9d, 0x3b, 0xec, 0x06, 0x0d, 0x6f, 0x90, 0x6c, 0x50, 0x3c, 0x0d, 0x0c, 0xbb, 0x41, 0x33, 0x21, 0x24, 0x1b, 0x14, 0x47, 0x2a, 0xc3, 0x6e, 0xd0, 0xae, 0x0a, 0xc9, 0x82, 0x60, 0x41, 0x32, 0xd0, 0xbc, 0xef, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x61, 0x51, 0x92, 0x83, 0xb6, 0x61, 0x48, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x68, 0x62, 0xb4, 0x38, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0x92, 0x0b, 0xa7, 0x0f, 0xc9, 0xa5, 0xe3, 0xf1, 0x71, 0x68, 0xd8, 0x0d, 0x9a, 0xe0, 0x21, 0xd9, 0xa0, 0x38, 0x52, 0x19, 0x76, 0x83, 0x56, 0x83, 0x48, 0x16, 0x76, 0x83, 0x46, 0x35, 0x51, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0x9a, 0xfd, 0x44, 0x39, 0xa4, 0x73, 0x87, 0xdd, 0xa0, 0x15, 0xd9, 0x91, 0x0d, 0x47, 0xfb, 0x20, 0x5b, 0x43, 0xfb, 0xf5, 0x83, 0xe6, 0x6c, 0x47, 0x0e, 0x31, 0x3c, 0xbe, 0x2d, 0xfc, 0x82, 0x60, 0x83, 0x36, 0x1a, 0x05, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0xe6, 0xf2, 0x52, 0x06, 0xc9, 0x20, 0x3b, 0x48, 0xe2, 0x31, 0x39, 0xa4, 0xe1, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x2f, 0x6b, 0x4b, 0x73, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x0a, 0xbf, 0x20, 0xd8, 0x60, 0xd1, 0x70, 0xd6, 0xe2, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x43, 0xee, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x1c, 0xfc, 0x1e, 0x5c, 0x1e, 0x3c, 0x3c, 0x38, 0x78, 0x64, 0x1c, 0xdf, 0x8e, 0xc7, 0xc3, 0x6e, 0xb0, 0xb6, 0xff, 0x7f, 0x41, 0xb0, 0x41, 0x33, 0x54, 0x29, 0x07, 0x6d, 0x06, 0xa2, 0x0c, 0xbb, 0x41, 0xc3, 0x1b, 0x24, 0x0b, 0xbb, 0xb0, 0x0b, 0xb7, 0xc1, 0x52, 0xe4, 0xac, 0x09, 0x6a, 0xfb, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0xba, 0xf1, 0xac, 0x43, 0x3a, 0x77, 0x41, 0xb4, 0xa0, 0xfb, 0x90, 0x3a, 0x38, 0xec, 0x15, 0x1e, 0x4e, 0xb1, 0x61, 0x37, 0x68, 0x26, 0x84, 0x64, 0x41, 0xb0, 0x41, 0x03, 0xb6, 0x29, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x42, 0x3e, 0xfb, 0xa0, 0x75, 0x42, 0x94, 0xe3, 0xd0, 0xb0, 0x1b, 0xb4, 0xab, 0x42, 0xb2, 0x20, 0xd8, 0x60, 0xcd, 0xd1, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xb5, 0x50, 0xfb, 0x07, 0x6d, 0x37, 0xc8, 0x1c, 0x87, 0x86, 0xdd, 0xa0, 0x09, 0x1e, 0x92, 0x05, 0xc1, 0x06, 0x4d, 0xb5, 0xa7, 0x1c, 0xb4, 0xcc, 0x24, 0x33, 0xec, 0x06, 0xad, 0x06, 0x91, 0x6c, 0xd0, 0xf0, 0x23, 0xca, 0x20, 0xdb, 0xd0, 0x7c, 0xfd, 0xb0, 0x57, 0x78, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xfe, 0x9d, 0x5c, 0x18, 0x7c, 0x48, 0x2d, 0x1d, 0x8f, 0x57, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x28, 0xe2, 0x06, 0x9a, 0x6e, 0xc4, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x51, 0xc4, 0x1d, 0x34, 0xa1, 0x26, 0x33, 0x08, 0x36, 0x58, 0xcd, 0x71, 0xb4, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x58, 0xc4, 0x0f, 0xf4, 0xc7, 0x08, 0xc9, 0x20, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x17, 0x8b, 0x90, 0x1d, 0xb4, 0x61, 0x27, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x36, 0x16, 0xf1, 0x07, 0x6d, 0xd8, 0xc9, 0x0c, 0xbb, 0xc1, 0x52, 0xc1, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xc6, 0x22, 0x2c, 0x06, 0xda, 0x58, 0x84, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x58, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8d, 0x45, 0x18, 0x0e, 0xb4, 0xb1, 0x08, 0xf5, 0x1b, 0x2c, 0x65, 0xd6, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x1b, 0x8b, 0xb0, 0x3e, 0x68, 0xc3, 0x51, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xb1, 0x08, 0xf3, 0x81, 0x36, 0x16, 0xa1, 0x6f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xb1, 0x08, 0xfb, 0x81, 0x36, 0x16, 0xa1, 0xe4, 0x60, 0x95, 0x29, 0xd5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x63, 0x11, 0x5a, 0x06, 0xda, 0x58, 0x84, 0xb2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xc6, 0x22, 0xd4, 0x0c, 0xb4, 0xb1, 0x08, 0x55, 0x87, 0x7c, 0xed, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x63, 0x11, 0xda, 0x06, 0xda, 0x58, 0x84, 0xba, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xc6, 0x22, 0x14, 0x0e, 0xb4, 0xb1, 0x08, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8d, 0x45, 0x68, 0x1c, 0x68, 0x63, 0x11, 0x6a, 0x0f, 0x56, 0x34, 0x1d, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8d, 0x45, 0xe8, 0x1d, 0x68, 0x63, 0x11, 0xca, 0x0f, 0x16, 0x9a, 0x18, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xc7, 0x22, 0xfe, 0xa0, 0x0d, 0x3b, 0x99, 0x61, 0x17, 0x6e, 0x83, 0x15, 0x4d, 0x47, 0x87, 0x1e, 0x42, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x95, 0x45, 0x48, 0x06, 0x7a, 0x5c, 0x84, 0x6c, 0xd8, 0x85, 0xdb, 0x60, 0xe1, 0x8c, 0xd1, 0xa1, 0x63, 0xd8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x65, 0x11, 0x86, 0x03, 0xbd, 0x2c, 0xc2, 0x87, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x58, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x97, 0x45, 0xd8, 0x0f, 0xf4, 0xb2, 0x08, 0x17, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x2f, 0x8b, 0x50, 0x30, 0xd0, 0xcb, 0x22, 0xb4, 0x1c, 0x2c, 0x9c, 0x31, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0x2c, 0x42, 0xcd, 0x40, 0x2f, 0x8b, 0xd0, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x59, 0x84, 0x9e, 0x81, 0x5e, 0x16, 0xa1, 0xec, 0x60, 0x45, 0xd3, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x59, 0x84, 0xb6, 0x81, 0x5e, 0x16, 0xa1, 0xf2, 0x60, 0xa1, 0x89, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x59, 0x84, 0xd2, 0x81, 0x5e, 0x16, 0xe1, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x65, 0x11, 0x5a, 0x07, 0x7a, 0x59, 0x84, 0xea, 0x83, 0x15, 0x4d, 0x47, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x65, 0x11, 0xba, 0x07, 0x7a, 0x59, 0x84, 0x03, 0x07, 0x0b, 0x4d, 0x8c, 0x8e, 0xc7, 0xc3, 0x2e, 0xdc, 0x06, 0x0b, 0x81, 0x8c, 0x0e, 0x1d, 0xc3, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x33, 0x8b, 0x30, 0x1c, 0x68, 0x66, 0x11, 0xae, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcc, 0x22, 0x2c, 0x07, 0x9a, 0x59, 0x84, 0xf5, 0x41, 0x33, 0x1e, 0x2a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x66, 0x16, 0x61, 0x3e, 0xd0, 0xcc, 0x22, 0x54, 0x0e, 0x92, 0x21, 0x83, 0x68, 0xc1, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0x2c, 0x42, 0xcb, 0x40, 0x33, 0x8b, 0xd0, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x59, 0x84, 0x9a, 0x81, 0x66, 0x16, 0xa1, 0xeb, 0x90, 0xfb, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0x2c, 0x42, 0xd9, 0x40, 0x33, 0x8b, 0x50, 0x77, 0x30, 0x6e, 0x77, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcc, 0x22, 0xf4, 0x0d, 0x34, 0xb3, 0x08, 0x85, 0x87, 0x18, 0x1e, 0x8f, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x59, 0x84, 0xce, 0x81, 0x66, 0x16, 0xe1, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcc, 0x22, 0x54, 0x0f, 0x34, 0xb3, 0x08, 0x37, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x33, 0x8b, 0xd0, 0x3d, 0xd0, 0xcc, 0x22, 0x1c, 0x38, 0xe4, 0xbe, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x33, 0x8b, 0xf0, 0x60, 0xa0, 0x99, 0x45, 0xf8, 0x70, 0x30, 0x6e, 0x77, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcc, 0x22, 0x9c, 0x18, 0x68, 0x66, 0x11, 0x5e, 0x1c, 0x8e, 0xf6, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcc, 0x22, 0x1c, 0x19, 0x68, 0x66, 0x11, 0x9e, 0x1c, 0x62, 0x78, 0x1c, 0x1a, 0x76, 0xe1, 0x36, 0x58, 0xde, 0x64, 0x74, 0xe8, 0x18, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x59, 0x84, 0xe1, 0x40, 0x37, 0x8b, 0x50, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xeb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xb3, 0x08, 0xfb, 0x81, 0x6e, 0x16, 0xa1, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xb3, 0x08, 0x05, 0x03, 0xdd, 0x2c, 0x42, 0xcb, 0x21, 0xf7, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x59, 0x84, 0x9a, 0x81, 0x6e, 0x16, 0xa1, 0xe8, 0x60, 0x48, 0xfd, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x9b, 0x45, 0x68, 0x1a, 0xe8, 0x66, 0x11, 0xaa, 0x0e, 0x31, 0x3c, 0x1e, 0x0f, 0xbb, 0x70, 0x1b, 0xac, 0x6f, 0x30, 0x3a, 0x74, 0x0c, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x2c, 0xc2, 0x70, 0xa0, 0x9d, 0x45, 0x58, 0x1f, 0xac, 0x6f, 0x30, 0x1a, 0x76, 0xe1, 0x0e, 0xda, 0xf9, 0x79, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x2c, 0xc2, 0x70, 0xa0, 0x9f, 0x45, 0xa8, 0x1f, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xb3, 0x08, 0xdb, 0x81, 0x7e, 0x16, 0xa1, 0x73, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7e, 0x16, 0x61, 0x3c, 0xd0, 0xcf, 0x22, 0x94, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcf, 0x22, 0x74, 0x0c, 0xf4, 0xb3, 0x08, 0x2d, 0x83, 0x64, 0x20, 0x2c, 0x07, 0x01, 0xef, 0x3f, 0x48, 0x06, 0xe7, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x2c, 0x42, 0xcd, 0x40, 0x3f, 0x8b, 0xd0, 0x75, 0xb0, 0xbe, 0xc1, 0xe8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x67, 0x11, 0xda, 0x06, 0xfa, 0x59, 0x84, 0xba, 0xc3, 0xd1, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xb3, 0x08, 0x7d, 0x03, 0xfd, 0x2c, 0x42, 0xe5, 0x21, 0x6b, 0x77, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x2c, 0x42, 0xe9, 0x40, 0x3f, 0x8b, 0xd0, 0x7c, 0xb0, 0xbe, 0xc1, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x2c, 0x42, 0xf5, 0x40, 0x3f, 0x8b, 0xd0, 0x7e, 0xc8, 0xda, 0x0d, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x76, 0x83, 0x65, 0x98, 0xfe, 0x0b, 0xb7, 0xc1, 0xc2, 0x0b, 0xa3, 0x43, 0xe3, 0xa2, 0xc3, 0xd1, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8e, 0x16, 0x21, 0x1b, 0x68, 0x71, 0x11, 0xd2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x5a, 0x84, 0x7c, 0xa0, 0xa3, 0x45, 0x58, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa3, 0x45, 0xd8, 0x1c, 0x34, 0x83, 0x3d, 0x33, 0xfc, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xb4, 0x08, 0xa3, 0x81, 0x8e, 0x16, 0x61, 0x77, 0xd0, 0xf0, 0xb6, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x68, 0x11, 0x86, 0x03, 0x1d, 0x2d, 0xc2, 0xf8, 0xa0, 0x79, 0x65, 0x81, 0xe3, 0xd0, 0xf1, 0x6d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2d, 0x2d, 0x42, 0x76, 0xd0, 0xa8, 0xf4, 0xcc, 0x20, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x4b, 0x8b, 0x90, 0x1f, 0x34, 0x2a, 0x3d, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9e, 0x16, 0x21, 0x3b, 0x68, 0x54, 0x7a, 0x66, 0xd8, 0x85, 0xdb, 0x60, 0x7d, 0x83, 0xd1, 0x21, 0xd9, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x5a, 0x84, 0xe1, 0x40, 0x53, 0x8b, 0xb0, 0x3e, 0x58, 0xdf, 0x60, 0x34, 0xec, 0xc2, 0x6d, 0xb0, 0xd0, 0xc4, 0xe8, 0x90, 0xec, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0x2d, 0xc2, 0x70, 0xa0, 0xab, 0x45, 0x68, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0x2d, 0xc2, 0x72, 0xa0, 0xab, 0x45, 0x98, 0x1f, 0x2c, 0xbc, 0x30, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0x2d, 0xc2, 0x7e, 0xa0, 0xab, 0x45, 0xa8, 0x3a, 0x28, 0x65, 0x76, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xd5, 0x22, 0x74, 0x0d, 0x74, 0xb5, 0x08, 0x65, 0x87, 0x18, 0x0e, 0xbb, 0xb0, 0x0b, 0x3d, 0x24, 0x3b, 0x16, 0x6e, 0x83, 0x85, 0x17, 0x46, 0x07, 0x25, 0x8c, 0xc4, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0x2d, 0xc2, 0x70, 0xa0, 0xb5, 0x45, 0x58, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x5a, 0x84, 0xf1, 0x40, 0x5b, 0x8b, 0x50, 0x3a, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x5b, 0x8b, 0xb0, 0x1e, 0x68, 0x6b, 0x11, 0x1a, 0x0e, 0x5a, 0x00, 0x0a, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xb5, 0x08, 0x15, 0x03, 0x6d, 0x2d, 0x42, 0xdb, 0x41, 0x29, 0xb3, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xb5, 0x08, 0x75, 0x03, 0x6d, 0x2d, 0x42, 0xe7, 0x41, 0x02, 0xb6, 0xc0, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xb6, 0x08, 0xc3, 0x83, 0x66, 0x54, 0x68, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x63, 0x8b, 0x30, 0x1e, 0x68, 0x6c, 0x11, 0x1a, 0x0e, 0x16, 0x5e, 0x18, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xce, 0x16, 0x61, 0x3a, 0xd0, 0xd9, 0x22, 0x34, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xd9, 0x22, 0x6c, 0x07, 0x3a, 0x5b, 0x84, 0xf9, 0x20, 0x19, 0x28, 0x2b, 0x07, 0xc7, 0xac, 0xe2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x67, 0x8b, 0xb0, 0x1f, 0xe8, 0x6c, 0x11, 0xaa, 0x0e, 0x4a, 0x99, 0x9d, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xb3, 0x45, 0xe8, 0x1a, 0xe8, 0x6c, 0x11, 0x0a, 0x0f, 0x12, 0xb0, 0x05, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x6d, 0x11, 0x86, 0x07, 0xcd, 0xa8, 0xd0, 0x1c, 0x8c, 0x20, 0xcf, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xb5, 0x08, 0xdb, 0x81, 0xbe, 0x16, 0xa1, 0x77, 0x90, 0xad, 0x21, 0x8f, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbe, 0x16, 0xa1, 0x64, 0xa0, 0xaf, 0x45, 0xe8, 0x1c, 0x03, 0x3c, 0xc3, 0xe8, 0xde, 0xda, 0x5a, 0xda, 0xd2, 0xe6, 0xda, 0xc2, 0xe8, 0xc6, 0xd0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xb5, 0x08, 0xa5, 0x03, 0x7d, 0x2d, 0x42, 0xed, 0xe1, 0x14, 0x1b, 0x76, 0x61, 0x37, 0x68, 0x43, 0x84, 0x66, 0xe1, 0x36, 0x58, 0x38, 0x63, 0x74, 0x50, 0xc2, 0x48, 0x1c, 0x8e, 0xf6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xdb, 0x22, 0x0c, 0x07, 0x7a, 0x5b, 0x84, 0xf5, 0xc1, 0xfa, 0x06, 0xa3, 0x61, 0x17, 0x76, 0x83, 0x36, 0x44, 0x68, 0x16, 0x6e, 0x83, 0x35, 0xdd, 0x52, 0x07, 0x25, 0x8c, 0xc4, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0x2d, 0xc2, 0x70, 0xa0, 0xb9, 0x45, 0x58, 0x1f, 0xac, 0x6f, 0x30, 0x1a, 0x76, 0x61, 0x37, 0x68, 0x43, 0x84, 0x66, 0xe1, 0x36, 0x58, 0x48, 0x2f, 0x75, 0x50, 0xc2, 0x48, 0x1c, 0x8e, 0xf6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xdd, 0x22, 0x0c, 0x07, 0xba, 0x5b, 0x84, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x38, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xee, 0x16, 0x61, 0x3e, 0xd0, 0xdd, 0x22, 0x74, 0x1c, 0x8c, 0x20, 0xcf, 0xe3, 0xf1, 0xb0, 0x0b, 0xbb, 0x41, 0x1b, 0x22, 0x34, 0x0b, 0xb7, 0xc1, 0x52, 0x86, 0xa9, 0x83, 0x12, 0x46, 0xe2, 0x70, 0xb4, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xf6, 0x16, 0x61, 0x38, 0xd0, 0xde, 0x22, 0x9c, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbd, 0x45, 0x58, 0x0e, 0xb4, 0xb7, 0x08, 0xeb, 0x83, 0xe6, 0x2a, 0x5c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x7b, 0x8b, 0x30, 0x1f, 0x68, 0x6f, 0x11, 0xbe, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xde, 0x22, 0xec, 0x07, 0xda, 0x5b, 0x84, 0x8e, 0x83, 0x76, 0x34, 0x5c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x2d, 0x42, 0xc9, 0x40, 0x7b, 0x8b, 0xd0, 0x39, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x7b, 0x8b, 0x50, 0x35, 0xd0, 0xde, 0x22, 0x94, 0x1d, 0x2c, 0xa8, 0xdd, 0x1f, 0x24, 0x03, 0xa1, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xb7, 0x08, 0x6d, 0x03, 0xed, 0x2d, 0x42, 0xe5, 0xc1, 0x58, 0xec, 0x3c, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x2d, 0x42, 0xe9, 0x40, 0x7b, 0x8b, 0x70, 0x65, 0x10, 0x6c, 0xb0, 0xd0, 0xc4, 0x68, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x2d, 0x42, 0xfb, 0x40, 0x7b, 0x8b, 0xf0, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xce, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbd, 0x45, 0x38, 0x31, 0xd0, 0xde, 0x22, 0x1c, 0x39, 0xa4, 0x0e, 0x0e, 0xc9, 0xa5, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xd0, 0x86, 0x08, 0xcd, 0xc2, 0x6d, 0xb0, 0x34, 0x65, 0xea, 0xa0, 0x84, 0x91, 0x38, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbf, 0x45, 0x18, 0x0e, 0xf4, 0xb7, 0x08, 0x8d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xb7, 0x08, 0xcb, 0x81, 0xfe, 0x16, 0x61, 0x3d, 0x48, 0x06, 0xce, 0xbe, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x6f, 0x11, 0xe6, 0x03, 0xfd, 0x2d, 0x42, 0xc7, 0x41, 0x02, 0xb6, 0xc0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xdf, 0x22, 0x94, 0x0c, 0xf4, 0xb7, 0x08, 0x85, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x70, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x2d, 0x42, 0xd5, 0x40, 0x7f, 0x8b, 0xd0, 0x77, 0x30, 0x82, 0x3c, 0x8f, 0xc7, 0xc7, 0xa1, 0x41, 0xb6, 0x86, 0xf6, 0xeb, 0xc3, 0x6e, 0xd0, 0x86, 0x08, 0xcd, 0xc2, 0x6d, 0xb0, 0x5c, 0x69, 0xea, 0xa0, 0x84, 0x91, 0x38, 0x1c, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x70, 0x11, 0x86, 0x03, 0x1d, 0x2e, 0xc2, 0x8b, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x83, 0x8b, 0x30, 0x1e, 0x68, 0x70, 0x11, 0xfa, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x70, 0x11, 0xd6, 0x03, 0x0d, 0x2e, 0x42, 0xd5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0x2e, 0x42, 0xc7, 0x40, 0x83, 0x8b, 0xd0, 0x72, 0xb0, 0xa0, 0x76, 0x7f, 0x90, 0x0c, 0x4c, 0xdf, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc1, 0x45, 0xa8, 0x19, 0x68, 0x70, 0x11, 0x9a, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x70, 0x11, 0xba, 0x06, 0x1a, 0x5c, 0x84, 0xba, 0x43, 0xb2, 0xe3, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x5c, 0x84, 0xc6, 0x81, 0x06, 0x17, 0xa1, 0xf6, 0x60, 0x7d, 0x83, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x5c, 0x84, 0xe1, 0x41, 0x4b, 0x34, 0x35, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x70, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x2e, 0x42, 0xef, 0x40, 0x87, 0x8b, 0x70, 0x62, 0x90, 0x0c, 0x66, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xe1, 0x22, 0x1c, 0x18, 0xe8, 0x70, 0x11, 0x3e, 0x1c, 0x92, 0x1d, 0x07, 0x41, 0xce, 0x3f, 0x88, 0x16, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x2e, 0xc2, 0x7c, 0xa0, 0xc3, 0x45, 0x68, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc3, 0x45, 0xd8, 0x0f, 0x74, 0xb8, 0x08, 0x65, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xb8, 0x08, 0x2d, 0x03, 0x1d, 0x2e, 0x42, 0xcf, 0xc1, 0x82, 0xda, 0xfd, 0x41, 0x32, 0x38, 0x35, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x70, 0x11, 0x8a, 0x06, 0x3a, 0x5c, 0x84, 0xae, 0x43, 0xea, 0xe0, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x5c, 0x84, 0xb6, 0x81, 0x0e, 0x17, 0xa1, 0xf0, 0x90, 0xec, 0x38, 0x0e, 0x1d, 0x8f, 0x8f, 0x6f, 0xc3, 0x2e, 0xdc, 0x06, 0x0b, 0x67, 0x8c, 0x0e, 0x3d, 0x84, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x9b, 0x8b, 0x90, 0x0c, 0xf4, 0xbe, 0x08, 0xd9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0x2e, 0x42, 0x3a, 0xd0, 0xe6, 0x22, 0x6c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xe6, 0x22, 0x2c, 0x0e, 0x5a, 0x27, 0xad, 0x19, 0x7e, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x5c, 0x84, 0xc9, 0x40, 0x9b, 0x8b, 0xb0, 0x3a, 0x68, 0x78, 0x5b, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xb9, 0x08, 0xb3, 0x81, 0x36, 0x17, 0x61, 0x7a, 0xd0, 0xbc, 0xb2, 0xc0, 0x71, 0xe8, 0xf8, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3e, 0x17, 0x21, 0x39, 0x68, 0xeb, 0xb3, 0x66, 0x10, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xcf, 0x45, 0x48, 0x0f, 0xda, 0xfa, 0xac, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xa3, 0x8b, 0x90, 0x1c, 0xb4, 0xf5, 0x59, 0x33, 0xec, 0x06, 0x4d, 0xfc, 0xcf, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x4e, 0x17, 0x61, 0x38, 0xd0, 0xe9, 0x22, 0xac, 0x0f, 0xd6, 0x37, 0x18, 0x0d, 0xbb, 0x41, 0xcb, 0x07, 0x34, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xd5, 0x45, 0x18, 0x0e, 0x34, 0xbb, 0x08, 0xa5, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xba, 0x08, 0xe3, 0x81, 0x56, 0x17, 0xa1, 0x6e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x75, 0x11, 0x4a, 0x06, 0x5a, 0x5d, 0x84, 0xb6, 0x83, 0x22, 0x57, 0xe1, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xaf, 0x8b, 0x30, 0x3c, 0x68, 0x13, 0xbb, 0x66, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xeb, 0x22, 0x8c, 0x07, 0x7a, 0x5d, 0x84, 0x9a, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xaf, 0x8b, 0x30, 0x1f, 0xe8, 0x75, 0x11, 0x3a, 0x0e, 0xd6, 0x37, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xd7, 0x45, 0x28, 0x19, 0xe8, 0x75, 0x11, 0x5a, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xd7, 0x45, 0x28, 0x1a, 0xe8, 0x75, 0x11, 0xda, 0x0e, 0xd6, 0x37, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xd9, 0x45, 0x18, 0x1e, 0xb4, 0x89, 0x5d, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xb3, 0x8b, 0xb0, 0x1c, 0x68, 0x76, 0x11, 0xd6, 0x07, 0xed, 0x0c, 0xc6, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x5d, 0x84, 0xf9, 0x40, 0xb3, 0x8b, 0xb0, 0x3f, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0x2e, 0x42, 0xc1, 0x40, 0xb3, 0x8b, 0xd0, 0x39, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xeb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xbb, 0x08, 0x45, 0x03, 0xcd, 0x2e, 0x42, 0xe5, 0x41, 0xc3, 0x3e, 0x23, 0x87, 0x15, 0xda, 0xe3, 0xd0, 0xb0, 0x1b, 0xb4, 0x1b, 0x42, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x5d, 0x84, 0xe1, 0x40, 0xb7, 0x8b, 0xb0, 0x3e, 0x58, 0xdf, 0x60, 0x34, 0xec, 0x06, 0x0d, 0x2f, 0xd2, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x76, 0x17, 0x61, 0x38, 0xd0, 0xf0, 0x22, 0xf4, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xee, 0x22, 0x8c, 0x07, 0xda, 0x5d, 0x84, 0xe6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x88, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xbb, 0x8b, 0xd0, 0x39, 0xd0, 0xee, 0x22, 0x14, 0x1f, 0x24, 0x60, 0x0b, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xdd, 0x45, 0x28, 0x19, 0x68, 0x77, 0x11, 0xda, 0x0e, 0x8a, 0x5c, 0x85, 0x43, 0x72, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x2e, 0xc2, 0xf0, 0xa0, 0x95, 0x1a, 0x9b, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xbf, 0x8b, 0x30, 0x1e, 0xe8, 0x77, 0x11, 0x6a, 0x86, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x2e, 0xc2, 0x7c, 0xa0, 0xdf, 0x45, 0xe8, 0x38, 0x58, 0xdf, 0x60, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7e, 0x17, 0xa1, 0x64, 0xa0, 0xdf, 0x45, 0x68, 0x39, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7e, 0x17, 0xa1, 0x68, 0xa0, 0xdf, 0x45, 0x68, 0x3b, 0x58, 0xdf, 0x60, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x86, 0x17, 0x61, 0x78, 0xd0, 0x4a, 0x8d, 0xcd, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0x2f, 0xc2, 0x72, 0xa0, 0xe1, 0x45, 0x58, 0x1f, 0xb4, 0x33, 0x18, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x78, 0x11, 0xe6, 0x03, 0x0d, 0x2f, 0xc2, 0xfe, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xbc, 0x08, 0x05, 0x03, 0x0d, 0x2f, 0x42, 0xfd, 0x20, 0x19, 0x32, 0x88, 0x16, 0xc4, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xe1, 0x45, 0x28, 0x1e, 0x68, 0x78, 0x11, 0xda, 0x27, 0xa8, 0xf9, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x78, 0x11, 0x8a, 0x06, 0x1a, 0x5e, 0x84, 0xca, 0x83, 0x86, 0x7d, 0x46, 0x0e, 0x2b, 0xb4, 0xc7, 0xa1, 0x61, 0x37, 0x68, 0xdc, 0x92, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xbc, 0x08, 0xc3, 0x81, 0xae, 0x17, 0xa1, 0x67, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8e, 0x17, 0x61, 0x3c, 0xd0, 0xf1, 0x22, 0x34, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x41, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x5e, 0x84, 0xce, 0x81, 0x8e, 0x17, 0xa1, 0xf8, 0x20, 0x01, 0x5b, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x2f, 0x42, 0xc9, 0x40, 0xc7, 0x8b, 0xd0, 0x76, 0x50, 0xe4, 0x2a, 0x1c, 0x92, 0x4b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x79, 0x11, 0x86, 0x07, 0x0d, 0x59, 0xda, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x5e, 0x84, 0xf1, 0x40, 0xcb, 0x8b, 0x50, 0x33, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x79, 0x11, 0xe6, 0x03, 0x2d, 0x2f, 0x42, 0xc7, 0xc1, 0xfa, 0x06, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xbc, 0x08, 0x25, 0x03, 0x2d, 0x2f, 0x42, 0xcb, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xbc, 0x08, 0x45, 0x03, 0x2d, 0x2f, 0x42, 0xdb, 0xc1, 0xfa, 0x06, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xbc, 0x08, 0xc3, 0x83, 0x86, 0x2c, 0x6d, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0x2f, 0xc2, 0x78, 0xa0, 0xe7, 0x45, 0xe8, 0x1b, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xbc, 0x08, 0xf3, 0x81, 0x9e, 0x17, 0xa1, 0xe3, 0x60, 0xa1, 0x89, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x5e, 0x84, 0x92, 0x81, 0x9e, 0x17, 0xa1, 0xee, 0xa0, 0x61, 0x9f, 0x91, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xf5, 0x22, 0x0c, 0x0f, 0x1a, 0xb2, 0xb4, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0x2f, 0xc2, 0x72, 0xa0, 0xeb, 0x45, 0x98, 0x1f, 0xac, 0xe9, 0x96, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0x2f, 0xc2, 0x7e, 0xa0, 0xeb, 0x45, 0x28, 0x38, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xeb, 0x45, 0x68, 0x18, 0xe8, 0x7a, 0x11, 0x6a, 0x0e, 0x9a, 0x44, 0xb4, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xd3, 0x8b, 0x30, 0x1d, 0x68, 0x7a, 0x11, 0x1e, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xf4, 0x22, 0x6c, 0x07, 0x9a, 0x5e, 0x84, 0xfd, 0x41, 0x3b, 0x83, 0x31, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xa6, 0x17, 0xa1, 0x60, 0xa0, 0xe9, 0x45, 0x68, 0x38, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0x2f, 0x42, 0xc5, 0x40, 0xd3, 0x8b, 0x70, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xf4, 0x22, 0x54, 0x0f, 0x34, 0xbd, 0x08, 0xfd, 0x07, 0x0b, 0x4d, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xf4, 0x22, 0x54, 0x0d, 0x34, 0xbd, 0x08, 0xa5, 0x07, 0x0d, 0xfb, 0x8c, 0x1c, 0x56, 0x68, 0x8f, 0x43, 0xc3, 0x6e, 0xd0, 0x80, 0x28, 0xcd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x7b, 0x11, 0x86, 0x03, 0x6d, 0x2f, 0x42, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x9c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xdb, 0x8b, 0x30, 0x1f, 0x68, 0x7b, 0x11, 0x3a, 0x0e, 0x46, 0x90, 0xe7, 0xf1, 0x78, 0xd8, 0x0d, 0xda, 0xa2, 0xa5, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x2f, 0xc2, 0x70, 0xa0, 0xef, 0x45, 0x38, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xdf, 0x8b, 0xb0, 0x1c, 0xe8, 0x7b, 0x11, 0xd6, 0x07, 0xcd, 0x55, 0xb8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbe, 0x17, 0x61, 0x3e, 0xd0, 0xf7, 0x22, 0x7c, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xef, 0x45, 0xd8, 0x0f, 0xf4, 0xbd, 0x08, 0x1d, 0x07, 0xed, 0x68, 0xb8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x5e, 0x84, 0x92, 0x81, 0xbe, 0x17, 0xa1, 0x73, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbe, 0x17, 0xa1, 0x6a, 0xa0, 0xef, 0x45, 0x28, 0x3b, 0x58, 0x50, 0xbb, 0x3f, 0x48, 0x06, 0x42, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x7b, 0x11, 0xda, 0x06, 0xfa, 0x5e, 0x84, 0xca, 0x83, 0xb1, 0xd8, 0x79, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x5e, 0x84, 0xd2, 0x81, 0xbe, 0x17, 0xe1, 0xca, 0x20, 0xd8, 0x60, 0xa1, 0x89, 0xd1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x5e, 0x84, 0xf6, 0x81, 0xbe, 0x17, 0xe1, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x9c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xdf, 0x8b, 0x70, 0x62, 0xa0, 0xef, 0x45, 0x38, 0x72, 0x48, 0x1d, 0x1c, 0x92, 0x4b, 0xc7, 0xe3, 0xe3, 0xd0, 0x71, 0x68, 0xd8, 0x0d, 0x5a, 0x0e, 0xa8, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0x2f, 0xc2, 0x70, 0xa0, 0xf1, 0x45, 0x68, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xf1, 0x45, 0x58, 0x0e, 0x34, 0xbe, 0x08, 0xeb, 0x83, 0x56, 0x22, 0x6a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0x2f, 0xc2, 0x7c, 0xa0, 0xf1, 0x45, 0xe8, 0x38, 0x48, 0xc0, 0x16, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x5f, 0x84, 0x92, 0x81, 0xc6, 0x17, 0xa1, 0x70, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xce, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xf1, 0x45, 0xa8, 0x1a, 0x68, 0x7c, 0x11, 0xfa, 0x0e, 0x46, 0x90, 0xe7, 0xf1, 0xf8, 0x38, 0x34, 0xc8, 0x36, 0x68, 0x5f, 0xa5, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9d, 0x2f, 0xc2, 0x70, 0xa0, 0xf5, 0x45, 0x78, 0x31, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x7c, 0x11, 0xc6, 0x03, 0x9d, 0x2f, 0x42, 0xdf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9d, 0x2f, 0xc2, 0x7a, 0xa0, 0xf3, 0x45, 0xa8, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xf3, 0x45, 0xe8, 0x18, 0xe8, 0x7c, 0x11, 0x5a, 0x0e, 0x16, 0xd4, 0xee, 0x0f, 0x92, 0x81, 0xe9, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xbe, 0x08, 0x35, 0x03, 0x9d, 0x2f, 0x42, 0xd3, 0x21, 0x75, 0x70, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9d, 0x2f, 0x42, 0xd7, 0x40, 0xe7, 0x8b, 0x50, 0x77, 0x48, 0x76, 0x1c, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe7, 0x8b, 0xd0, 0x38, 0xd0, 0xf9, 0x22, 0xd4, 0x1e, 0xac, 0x6f, 0x30, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xeb, 0x8b, 0x30, 0x3c, 0x68, 0x8e, 0xf4, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xce, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xf5, 0x45, 0xe8, 0x1d, 0x68, 0x7d, 0x11, 0x4e, 0x0c, 0x92, 0xc1, 0x6c, 0x10, 0x2d, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x5f, 0x84, 0x03, 0x03, 0xad, 0x2f, 0xc2, 0x87, 0x43, 0xb2, 0xe3, 0x20, 0xc8, 0xf9, 0x07, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xf5, 0x45, 0x98, 0x0f, 0xb4, 0xbe, 0x08, 0x8d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xbe, 0x08, 0xfb, 0x81, 0xd6, 0x17, 0xa1, 0x6c, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd6, 0x17, 0xa1, 0x65, 0xa0, 0xf5, 0x45, 0xe8, 0x39, 0x58, 0x50, 0xbb, 0x3f, 0x48, 0x06, 0xa7, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0x2f, 0x42, 0xd1, 0x40, 0xeb, 0x8b, 0xd0, 0x75, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xeb, 0x8b, 0xd0, 0x36, 0xd0, 0xfa, 0x22, 0x14, 0x1e, 0x92, 0x1d, 0xc7, 0xa1, 0xe3, 0xf1, 0xf1, 0x6d, 0xd8, 0x85, 0xdb, 0x90, 0xfb, 0x3e, 0xf4, 0x10, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x2f, 0x42, 0x32, 0xd0, 0x11, 0x23, 0x64, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xbf, 0x08, 0xe9, 0x40, 0xfb, 0x8b, 0xb0, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xfb, 0x8b, 0xb0, 0x38, 0x68, 0x97, 0x02, 0x67, 0xf8, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x7f, 0x11, 0x26, 0x03, 0xed, 0x2f, 0xc2, 0xea, 0xa0, 0xe1, 0x6d, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xfe, 0x22, 0xcc, 0x06, 0xda, 0x5f, 0x84, 0xe9, 0x41, 0xf3, 0xca, 0x02, 0xc7, 0xa1, 0xe3, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x5f, 0x84, 0xe4, 0xa0, 0x95, 0x07, 0x9c, 0x41, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xfe, 0x17, 0x21, 0x3d, 0x68, 0xe5, 0x01, 0x67, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0x30, 0x42, 0x72, 0xd0, 0xca, 0x03, 0xce, 0xb0, 0x1b, 0x34, 0xf1, 0x3f, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x60, 0x84, 0xd9, 0x40, 0x07, 0x8c, 0xb0, 0x3d, 0x58, 0xdf, 0x60, 0x34, 0xec, 0x06, 0x2d, 0x1f, 0xd0, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x16, 0x18, 0x61, 0x36, 0xd0, 0x02, 0x23, 0x54, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x16, 0x18, 0x61, 0x37, 0xd0, 0x02, 0x23, 0x8c, 0x0f, 0x16, 0x5e, 0x18, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x16, 0x18, 0x61, 0x3d, 0xd0, 0x02, 0x23, 0xd4, 0x1c, 0x14, 0xb9, 0x0a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x81, 0x11, 0x7a, 0x06, 0x5a, 0x60, 0x84, 0xc6, 0x0d, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x0b, 0x8c, 0x50, 0x74, 0xd0, 0x84, 0x16, 0xce, 0x41, 0x29, 0xb3, 0x33, 0xec, 0x06, 0xed, 0x86, 0xd0, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1e, 0x18, 0x61, 0x36, 0xd0, 0x09, 0x23, 0x14, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x60, 0x84, 0xe9, 0x40, 0x0f, 0x8c, 0x50, 0x3f, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x81, 0x11, 0xc6, 0x03, 0x3d, 0x30, 0x42, 0xcf, 0xd0, 0x83, 0x11, 0xe4, 0xb9, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x07, 0x46, 0x28, 0x1a, 0xe8, 0x81, 0x11, 0xda, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0x30, 0x42, 0xd3, 0x41, 0x63, 0x79, 0x38, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1e, 0x18, 0xa1, 0x6b, 0xa0, 0x07, 0x46, 0x28, 0x3d, 0x28, 0x65, 0x76, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x03, 0x23, 0xb4, 0x0e, 0xf4, 0xc0, 0x08, 0xe5, 0x07, 0xcb, 0x99, 0x84, 0x0e, 0xeb, 0x9b, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0x30, 0xc2, 0x70, 0xa0, 0x09, 0x46, 0x58, 0x1f, 0xac, 0x6f, 0x30, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x17, 0x8c, 0x30, 0x3b, 0x68, 0xed, 0x0c, 0x67, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x05, 0x23, 0x4c, 0x07, 0xba, 0x60, 0x84, 0xc2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x60, 0x84, 0xed, 0x40, 0x17, 0x8c, 0xb0, 0x3f, 0x68, 0x01, 0x28, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x05, 0x23, 0x14, 0x0c, 0x74, 0xc1, 0x08, 0x4d, 0x07, 0x45, 0xae, 0xc2, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x05, 0x23, 0x54, 0x0d, 0x74, 0xc1, 0x08, 0x7d, 0x07, 0x09, 0xd8, 0x02, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x07, 0x23, 0xcc, 0x0e, 0x5a, 0x3b, 0xc3, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x30, 0xc2, 0x74, 0xa0, 0x0f, 0x46, 0xd8, 0x1f, 0x2c, 0xbc, 0x30, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0x30, 0xc2, 0x70, 0xa0, 0x11, 0x46, 0x68, 0x1b, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x11, 0x46, 0x58, 0x0e, 0x34, 0xc2, 0x08, 0xe3, 0x83, 0xf6, 0xbb, 0x68, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0x30, 0xc2, 0x7a, 0xa0, 0x11, 0x46, 0xa8, 0x39, 0x28, 0x72, 0x15, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x46, 0x18, 0xa1, 0x67, 0xa0, 0x11, 0x46, 0x28, 0x3b, 0x48, 0xc0, 0x16, 0x38, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x13, 0x46, 0x98, 0x1d, 0xb4, 0x76, 0x86, 0xb3, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x84, 0x11, 0x76, 0x07, 0xad, 0x9d, 0xe1, 0x1c, 0x94, 0x32, 0x3b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x83, 0x11, 0x96, 0x03, 0x6d, 0x30, 0x42, 0xeb, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0x30, 0x42, 0xc5, 0x40, 0x1b, 0x8c, 0xd0, 0x78, 0xd0, 0x68, 0x20, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x60, 0x84, 0xca, 0x81, 0x36, 0x18, 0xa1, 0xf4, 0x70, 0x8a, 0x0d, 0xbb, 0x41, 0xc3, 0x8b, 0x34, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x15, 0x46, 0x98, 0x0d, 0xb4, 0xc2, 0x08, 0xdb, 0x83, 0xf5, 0x0d, 0x46, 0xc3, 0x6e, 0xd0, 0xb8, 0x25, 0xcd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x85, 0x11, 0x66, 0x03, 0xbd, 0x30, 0xc2, 0xf6, 0x60, 0x7d, 0x83, 0xd1, 0xb0, 0x1b, 0x34, 0x20, 0x4a, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x61, 0x84, 0xd9, 0x40, 0x33, 0x8c, 0x50, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe7, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x0c, 0x23, 0x8c, 0x07, 0x9a, 0x61, 0x84, 0x86, 0x83, 0x11, 0xe4, 0x79, 0x3c, 0x1e, 0x76, 0x83, 0xb6, 0x68, 0x69, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x37, 0x8c, 0x30, 0x1b, 0xe8, 0x86, 0x11, 0xae, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x0d, 0x23, 0xec, 0x06, 0xba, 0x61, 0x84, 0xed, 0x41, 0x73, 0x15, 0x2e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x1b, 0x46, 0x18, 0x0f, 0x74, 0xc3, 0x08, 0x4f, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x86, 0x11, 0xd6, 0x03, 0xdd, 0x30, 0x42, 0xc3, 0x41, 0x3b, 0x1a, 0x2e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x18, 0xa1, 0x62, 0xa0, 0x1b, 0x46, 0x68, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x1b, 0x46, 0x28, 0x1a, 0xe8, 0x86, 0x11, 0xaa, 0x0e, 0x16, 0xd4, 0xee, 0x0f, 0x92, 0x81, 0xd0, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x61, 0x84, 0xae, 0x81, 0x6e, 0x18, 0xa1, 0xf0, 0x60, 0x2c, 0x76, 0x1e, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x18, 0xa1, 0x72, 0xa0, 0x1b, 0x46, 0x38, 0x32, 0x08, 0x36, 0x58, 0x68, 0x62, 0xb4, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x18, 0xa1, 0x7b, 0xa0, 0x1b, 0x46, 0xf8, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe7, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x0d, 0x23, 0x5c, 0x18, 0xe8, 0x86, 0x11, 0x6e, 0x1c, 0x52, 0x07, 0x87, 0xe4, 0xd2, 0xf1, 0xf8, 0x38, 0x74, 0x1c, 0x1a, 0x76, 0x83, 0x96, 0x03, 0x6a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3b, 0x8c, 0x30, 0x1b, 0x68, 0x87, 0x11, 0xfa, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x87, 0x11, 0x76, 0x03, 0xed, 0x30, 0xc2, 0xf6, 0xa0, 0x95, 0x88, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3b, 0x8c, 0x30, 0x1e, 0x68, 0x87, 0x11, 0x1a, 0x0e, 0x12, 0xb0, 0x05, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x76, 0x18, 0xa1, 0x62, 0xa0, 0x1d, 0x46, 0xa8, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x87, 0x11, 0x8a, 0x06, 0xda, 0x61, 0x84, 0xb6, 0x83, 0x11, 0xe4, 0x79, 0x3c, 0x3e, 0x0e, 0x0d, 0xb2, 0x0d, 0xda, 0x57, 0xa9, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3f, 0x8c, 0x30, 0x1b, 0x68, 0x88, 0x11, 0x3e, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x61, 0x84, 0xe9, 0x40, 0x3f, 0x8c, 0xd0, 0x36, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3f, 0x8c, 0xb0, 0x1d, 0xe8, 0x87, 0x11, 0x8a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x87, 0x11, 0x1a, 0x06, 0xfa, 0x61, 0x84, 0x8e, 0x83, 0x05, 0xb5, 0xfb, 0x83, 0x64, 0x60, 0xfa, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x30, 0x42, 0xc9, 0x40, 0x3f, 0x8c, 0xd0, 0x73, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3f, 0x8c, 0xd0, 0x34, 0xd0, 0x0f, 0x23, 0x94, 0x1d, 0x92, 0x1d, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x0f, 0x23, 0xf4, 0x0d, 0xf4, 0xc3, 0x08, 0xa5, 0x07, 0xeb, 0x1b, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x10, 0x23, 0xcc, 0x0e, 0x1a, 0x75, 0xcc, 0x19, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x88, 0x11, 0x5a, 0x07, 0x1a, 0x62, 0x84, 0x0b, 0x83, 0x64, 0x30, 0x1b, 0x44, 0x0b, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x86, 0x18, 0xa1, 0x7e, 0xa0, 0x21, 0x46, 0x78, 0x70, 0x48, 0x76, 0x1c, 0x04, 0x39, 0xff, 0x20, 0x5a, 0xd8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xc4, 0x08, 0xe3, 0x81, 0x86, 0x18, 0xa1, 0x6f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x86, 0x18, 0x61, 0x3d, 0xd0, 0x10, 0x23, 0x54, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x10, 0x23, 0x74, 0x0c, 0x34, 0xc4, 0x08, 0x2d, 0x07, 0x0b, 0x6a, 0xf7, 0x07, 0xc9, 0xe0, 0xd4, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x21, 0x46, 0xa8, 0x19, 0x68, 0x88, 0x11, 0x9a, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x88, 0x11, 0xba, 0x06, 0x1a, 0x62, 0x84, 0xba, 0x43, 0xb2, 0xe3, 0x38, 0x74, 0x3c, 0x3e, 0xbe, 0x0d, 0xbb, 0x41, 0x6b, 0x95, 0x2e, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x27, 0x46, 0x98, 0x0c, 0xf4, 0xc4, 0x08, 0x1d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xb0, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x4f, 0x8c, 0xb0, 0x1c, 0xe8, 0x89, 0x11, 0x2a, 0x0e, 0xcd, 0x92, 0x8e, 0xc7, 0xc3, 0x2e, 0xdc, 0x06, 0xab, 0x1b, 0xa9, 0x0e, 0x3d, 0x84, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x53, 0x8c, 0x30, 0x19, 0x68, 0x8a, 0x11, 0x0e, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x14, 0x23, 0x6c, 0x06, 0x9a, 0x62, 0x84, 0xdd, 0x20, 0x19, 0x38, 0xfb, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x14, 0x23, 0x0c, 0x07, 0x9a, 0x62, 0x84, 0xb6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x14, 0x23, 0x2c, 0x07, 0x9a, 0x62, 0x84, 0xf1, 0x41, 0x60, 0x62, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xa6, 0x18, 0x61, 0x3d, 0xd0, 0x14, 0x23, 0x54, 0x1c, 0xac, 0x6e, 0xa4, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x53, 0x8c, 0xd0, 0x31, 0xd0, 0x14, 0x23, 0x94, 0x1d, 0x1a, 0x17, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0x31, 0x42, 0xdd, 0x40, 0x53, 0x8c, 0xd0, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xeb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xc5, 0x08, 0xad, 0x03, 0x4d, 0x31, 0x42, 0xfd, 0xa1, 0x59, 0xd2, 0xf1, 0xf8, 0x38, 0x34, 0xec, 0xc2, 0x6d, 0xb0, 0xe0, 0xa0, 0xea, 0xd0, 0x43, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xc5, 0x08, 0x93, 0x81, 0xae, 0x18, 0xa1, 0x74, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xae, 0x18, 0x61, 0x33, 0xd0, 0x15, 0x23, 0xec, 0x0e, 0xda, 0x40, 0x32, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xc5, 0x08, 0xc3, 0x81, 0xae, 0x18, 0xa1, 0xe1, 0xd0, 0xb8, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x8a, 0x11, 0x2a, 0x06, 0xba, 0x62, 0x84, 0xce, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x58, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x2b, 0x46, 0x68, 0x1a, 0xe8, 0x8a, 0x11, 0x2a, 0x0f, 0xcd, 0x92, 0x8e, 0xc7, 0xc7, 0xa1, 0x61, 0x17, 0x6e, 0x83, 0x45, 0x18, 0x55, 0x87, 0x1e, 0x42, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x2d, 0x46, 0x98, 0x0c, 0xb4, 0xc5, 0x08, 0x4f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0x31, 0x42, 0xd1, 0x40, 0x5b, 0x8c, 0x70, 0x64, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xb6, 0x18, 0xa1, 0x69, 0xa0, 0x2d, 0x46, 0xe8, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x2d, 0x46, 0x28, 0x1c, 0x68, 0x8b, 0x11, 0x2a, 0x0f, 0x5a, 0x12, 0x9d, 0x19, 0x24, 0x03, 0xe9, 0xbb, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x5b, 0x8c, 0xd0, 0x39, 0xd0, 0x16, 0x23, 0xd4, 0x1e, 0x04, 0x26, 0xf6, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x16, 0x23, 0x14, 0x0f, 0xb4, 0xc5, 0x08, 0xed, 0x07, 0xcb, 0x38, 0x91, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xb6, 0x18, 0xa1, 0x7e, 0xa0, 0x2d, 0x46, 0xf8, 0x71, 0x68, 0x5c, 0x74, 0x1c, 0x1a, 0x44, 0x0b, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x8b, 0x11, 0x96, 0x03, 0x6d, 0x31, 0x42, 0xc5, 0xa1, 0x59, 0xd2, 0xf1, 0x78, 0xd8, 0x85, 0xdb, 0x60, 0x29, 0xb3, 0xd6, 0xa1, 0x87, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x8b, 0x11, 0x26, 0x03, 0x9d, 0x31, 0x42, 0xcd, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x31, 0xc2, 0x76, 0xa0, 0x2f, 0x46, 0xf8, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x5f, 0x8c, 0x30, 0x1e, 0xe8, 0x8b, 0x11, 0xaa, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x8b, 0x11, 0x3a, 0x06, 0xfa, 0x62, 0x84, 0x96, 0x83, 0x96, 0x44, 0x67, 0x06, 0xc9, 0x40, 0xfa, 0x6e, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x17, 0x23, 0xd4, 0x0c, 0xf4, 0xc5, 0x08, 0x4d, 0x07, 0x81, 0x89, 0x7d, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x31, 0x42, 0xd7, 0x40, 0x5f, 0x8c, 0x70, 0x61, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbe, 0x18, 0xa1, 0x75, 0xa0, 0x2f, 0x46, 0xe8, 0x1d, 0x24, 0x83, 0x6f, 0x07, 0x01, 0xef, 0x3f, 0x48, 0x06, 0xb7, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x31, 0x42, 0xf1, 0x40, 0x5f, 0x8c, 0xf0, 0xe0, 0xd0, 0xb8, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x63, 0x8c, 0x30, 0x39, 0x68, 0x29, 0x54, 0x67, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x18, 0x23, 0xcc, 0x06, 0x1a, 0x63, 0x84, 0xea, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x63, 0x84, 0xdd, 0x40, 0x63, 0x8c, 0xd0, 0x32, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x63, 0x8c, 0x30, 0x1f, 0x68, 0x8c, 0x11, 0x0a, 0x06, 0xc9, 0x40, 0x58, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x9c, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xc6, 0x08, 0x0d, 0x03, 0x8d, 0x31, 0x42, 0xc9, 0x71, 0xe8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x8c, 0x11, 0x6a, 0x06, 0x1a, 0x63, 0x84, 0x9e, 0x43, 0x0c, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0x18, 0xa1, 0x68, 0xa0, 0x31, 0x46, 0x68, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x63, 0x84, 0xbe, 0x81, 0xc6, 0x18, 0xa1, 0xf8, 0xd0, 0xe8, 0xe8, 0x78, 0x7e, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9d, 0x31, 0xc2, 0xe4, 0xa0, 0xa5, 0x50, 0x9d, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x63, 0x84, 0xcd, 0x40, 0x67, 0x8c, 0xd0, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x67, 0x8c, 0x30, 0x1d, 0xe8, 0x8c, 0x11, 0xc6, 0x07, 0x4d, 0xb1, 0xeb, 0x0c, 0x92, 0x81, 0xaf, 0xee, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9d, 0x31, 0xc2, 0x7a, 0xa0, 0x33, 0x46, 0x28, 0x38, 0xc4, 0xff, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x63, 0x84, 0x8a, 0x81, 0xce, 0x18, 0xa1, 0xe5, 0x38, 0x74, 0x1c, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x87, 0xdb, 0x60, 0xdd, 0xb7, 0xd6, 0xa1, 0x87, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x63, 0x84, 0xc9, 0x40, 0x7b, 0x8c, 0xd0, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x6f, 0x8c, 0x30, 0x39, 0x68, 0x17, 0x67, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xc6, 0x08, 0xb3, 0x81, 0xde, 0x18, 0x61, 0x7b, 0xb0, 0x8c, 0x13, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0x31, 0xc2, 0xe4, 0xa0, 0x5d, 0x9c, 0x9d, 0x41, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe6, 0x18, 0x61, 0x76, 0xd0, 0x2e, 0xce, 0xce, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x63, 0x84, 0xc9, 0x41, 0xbb, 0x38, 0x3b, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xee, 0x18, 0x61, 0x36, 0xd0, 0x1d, 0x23, 0xb4, 0x0c, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x63, 0x84, 0xe1, 0x40, 0x77, 0x8c, 0xb0, 0x3c, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdd, 0x31, 0xc2, 0x74, 0xa0, 0x3b, 0x46, 0x28, 0x39, 0x34, 0xfc, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdd, 0x31, 0x42, 0xcf, 0x40, 0x77, 0x8c, 0x50, 0x74, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x63, 0x84, 0xc9, 0x41, 0xbb, 0x38, 0x3b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x3d, 0x46, 0xd8, 0x0c, 0xb4, 0xc7, 0x08, 0xdb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x1e, 0x23, 0x8c, 0x06, 0xda, 0x63, 0x84, 0xd9, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x31, 0xc2, 0x6e, 0xa0, 0x3d, 0x46, 0x18, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xf6, 0x18, 0x61, 0x39, 0xd0, 0x1e, 0x23, 0x4c, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x7b, 0x8c, 0x30, 0x1e, 0x68, 0x8f, 0x11, 0xaa, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x63, 0x84, 0xa6, 0x81, 0xf6, 0x18, 0xa1, 0x79, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xf6, 0x18, 0xa1, 0x6a, 0xa0, 0x3d, 0x46, 0x68, 0x3b, 0x48, 0x1e, 0xac, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x31, 0x42, 0xdd, 0x40, 0x7b, 0x8c, 0x50, 0x7c, 0x68, 0xf8, 0x75, 0x1c, 0x3a, 0x1e, 0x1f, 0xdf, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x1a, 0x23, 0xcc, 0x06, 0x5a, 0x63, 0x84, 0xbe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x18, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x35, 0x46, 0x18, 0x0f, 0xb4, 0xc6, 0x08, 0x75, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xc6, 0x08, 0xeb, 0x81, 0xd6, 0x18, 0xa1, 0x6b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd6, 0x18, 0xa1, 0x64, 0xa0, 0x35, 0x46, 0xa8, 0x39, 0x68, 0x8a, 0x5d, 0x67, 0x90, 0x0c, 0xa4, 0xef, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0x31, 0x42, 0xcf, 0x40, 0x6b, 0x8c, 0x50, 0x75, 0x88, 0xff, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xc6, 0x08, 0x65, 0x03, 0xad, 0x31, 0x42, 0xdb, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3f, 0xbe, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x14, 0xf1, 0x03, 0x0d, 0x2c, 0x42, 0x32, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x28, 0xe2, 0x0f, 0x5a, 0x9e, 0xde, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3f, 0x8a, 0xf8, 0x83, 0x96, 0xa7, 0x77, 0x86, 0xdd, 0x60, 0x7d, 0x90, 0xd8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x47, 0x11, 0x16, 0x03, 0xfd, 0x28, 0x42, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x1f, 0x45, 0x18, 0x0e, 0xf4, 0xa3, 0x08, 0xf5, 0x1b, 0x2c, 0x65, 0xd6, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3f, 0x8a, 0xb0, 0x3e, 0x68, 0x8b, 0x7d, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xa3, 0x08, 0xf3, 0x81, 0x7e, 0x14, 0xa1, 0x6f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xa3, 0x08, 0xfb, 0x81, 0x7e, 0x14, 0xa1, 0xe4, 0x60, 0x95, 0x29, 0xd5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x47, 0x11, 0x5a, 0x06, 0xfa, 0x51, 0x84, 0xb2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x8f, 0x22, 0xd4, 0x0c, 0xf4, 0xa3, 0x08, 0x55, 0x87, 0xb5, 0xdf, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x8f, 0x22, 0xb4, 0x0d, 0xf4, 0xa3, 0x08, 0x75, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x1f, 0x45, 0x28, 0x1c, 0xe8, 0x47, 0x11, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3f, 0x8a, 0xd0, 0x38, 0xd0, 0x8f, 0x22, 0xd4, 0x1e, 0xac, 0x68, 0x3a, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3f, 0x8a, 0xd0, 0x3b, 0xd0, 0x8f, 0x22, 0x94, 0x1f, 0x2c, 0x34, 0x31, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x21, 0x45, 0xfc, 0x41, 0xcb, 0xd3, 0x3b, 0xc3, 0x2e, 0xdc, 0x06, 0x2b, 0x9a, 0x8e, 0x0e, 0x2d, 0x80, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x4f, 0x8a, 0x90, 0x0c, 0x34, 0xa9, 0x08, 0xd9, 0xb0, 0x0b, 0xb7, 0xc1, 0xc2, 0x19, 0xa3, 0x43, 0xc3, 0xaf, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x94, 0x22, 0xcc, 0x06, 0x9a, 0x52, 0x84, 0x07, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd0, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xa6, 0x14, 0x61, 0x3d, 0xd0, 0x94, 0x22, 0x1c, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0x29, 0xc2, 0x7c, 0xa0, 0x29, 0x45, 0xe8, 0x38, 0x58, 0x38, 0x63, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x52, 0x84, 0x92, 0x81, 0xa6, 0x14, 0xa1, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xa5, 0x08, 0x2d, 0x03, 0x4d, 0x29, 0x42, 0xd5, 0xc1, 0x8a, 0xa6, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xa5, 0x08, 0x5d, 0x03, 0x4d, 0x29, 0x42, 0xe1, 0xc1, 0x42, 0x13, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xa5, 0x08, 0x95, 0x03, 0x4d, 0x29, 0x42, 0xff, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x4a, 0x11, 0x3a, 0x07, 0x9a, 0x52, 0x84, 0xe2, 0x83, 0x15, 0x4d, 0x47, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x4a, 0x11, 0x9a, 0x07, 0x9a, 0x52, 0x84, 0xfa, 0x83, 0x85, 0x26, 0x46, 0xc7, 0xe3, 0x61, 0x17, 0x6e, 0x83, 0x85, 0x40, 0x46, 0x87, 0x86, 0x5f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x2b, 0x45, 0x98, 0x0d, 0xf4, 0xa6, 0x08, 0x5d, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xae, 0x14, 0x61, 0x3a, 0xd0, 0x95, 0x22, 0x34, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x95, 0x22, 0x6c, 0x07, 0xba, 0x52, 0x84, 0xaa, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x52, 0x84, 0x8a, 0x81, 0xae, 0x14, 0xa1, 0xe4, 0xa0, 0x29, 0x76, 0x9d, 0x41, 0x32, 0x38, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x4a, 0x11, 0x5a, 0x06, 0xba, 0x52, 0x84, 0xa6, 0x83, 0x95, 0x1e, 0x03, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x57, 0x8a, 0xd0, 0x35, 0xd0, 0x95, 0x22, 0x94, 0x1d, 0x8e, 0xf6, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x2b, 0x45, 0x68, 0x1b, 0xe8, 0x4a, 0x11, 0x0a, 0x0f, 0xf1, 0x3f, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xb6, 0x14, 0x61, 0x38, 0xd0, 0x96, 0x22, 0xcc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x5b, 0x8a, 0xb0, 0x1c, 0x68, 0x4b, 0x11, 0xb6, 0x87, 0xa3, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0x29, 0xc2, 0x78, 0xa0, 0x2d, 0x45, 0x58, 0x1f, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbe, 0x14, 0x61, 0x76, 0xd0, 0xd6, 0x1b, 0xcf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x29, 0xc2, 0x74, 0xa0, 0x2f, 0x45, 0x98, 0x1f, 0xb4, 0xf2, 0x8b, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x4c, 0x11, 0x86, 0x03, 0x8d, 0x29, 0x42, 0xe1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x31, 0x45, 0xd8, 0x0f, 0x34, 0xa6, 0x08, 0x7d, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x31, 0x45, 0x28, 0x18, 0x68, 0x4c, 0x11, 0x5a, 0x0e, 0x56, 0x34, 0x1d, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0x14, 0xa1, 0x66, 0xa0, 0x31, 0x45, 0xe8, 0x3a, 0x58, 0x78, 0x61, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0x14, 0xa1, 0x6c, 0xa0, 0x31, 0x45, 0xa8, 0x3b, 0xc4, 0xf0, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xa6, 0x08, 0xb3, 0x83, 0xb6, 0xde, 0x78, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x4c, 0x11, 0xa6, 0x03, 0x9d, 0x29, 0xc2, 0x7c, 0x90, 0x0c, 0xfc, 0xd7, 0x77, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0x29, 0xc2, 0x70, 0xa0, 0x35, 0x45, 0x68, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0x29, 0xc2, 0x72, 0xa0, 0x35, 0x45, 0xd8, 0x1e, 0x14, 0x76, 0x38, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x35, 0x45, 0x18, 0x0f, 0xb4, 0xa6, 0x08, 0x2d, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x35, 0x45, 0x58, 0x0f, 0xb4, 0xa6, 0x08, 0xfb, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x9a, 0x22, 0x14, 0x0c, 0xb4, 0xa6, 0x08, 0x25, 0x87, 0xd4, 0xc1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x53, 0x84, 0x9a, 0x81, 0xd6, 0x14, 0xa1, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xa6, 0x08, 0x3d, 0x03, 0xad, 0x29, 0x42, 0xd3, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x6b, 0x8a, 0x50, 0x35, 0xd0, 0x9a, 0x22, 0x74, 0x1d, 0x62, 0x38, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xa6, 0x08, 0xb3, 0x83, 0xb6, 0xde, 0x78, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x6f, 0x8a, 0xb0, 0x1b, 0xe8, 0x4d, 0x11, 0x96, 0x07, 0x85, 0x1d, 0xce, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x4d, 0x11, 0xa6, 0x03, 0xbd, 0x29, 0x42, 0xc7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x4d, 0x11, 0xb6, 0x03, 0xbd, 0x29, 0xc2, 0xfa, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xa6, 0x08, 0xf3, 0x81, 0xde, 0x14, 0xa1, 0xe2, 0x90, 0x3a, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x6f, 0x8a, 0x50, 0x32, 0xd0, 0x9b, 0x22, 0x54, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0x14, 0xa1, 0x65, 0xa0, 0x37, 0x45, 0xe8, 0x39, 0x1c, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x4d, 0x11, 0x8a, 0x06, 0x7a, 0x53, 0x84, 0xa6, 0xc3, 0xd1, 0x7e, 0x1c, 0x3a, 0x0e, 0x0d, 0xbb, 0x70, 0x07, 0x6d, 0xe4, 0xba, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe6, 0x14, 0x61, 0x36, 0xd0, 0x9c, 0x22, 0x8c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x73, 0x8a, 0xb0, 0x1b, 0x68, 0x4e, 0x11, 0x96, 0x87, 0xa3, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0x29, 0xc2, 0x74, 0xa0, 0x39, 0x45, 0xd8, 0x1e, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0xb0, 0xbc, 0xc9, 0xe8, 0xd0, 0xf0, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xa7, 0x08, 0xb3, 0x81, 0xee, 0x14, 0xa1, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x9d, 0x22, 0xac, 0x07, 0xba, 0x53, 0x84, 0xa6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x9d, 0x22, 0xcc, 0x07, 0xba, 0x53, 0x84, 0x8e, 0x43, 0xee, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xa7, 0x08, 0x25, 0x03, 0xdd, 0x29, 0x42, 0xcd, 0xc1, 0x90, 0xfa, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x77, 0x8a, 0xd0, 0x33, 0xd0, 0x9d, 0x22, 0x14, 0x1d, 0x62, 0x78, 0x3c, 0x1e, 0x76, 0xe1, 0x36, 0x58, 0xdf, 0x60, 0x74, 0x68, 0xf8, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x53, 0x84, 0xd9, 0x40, 0x7b, 0x8a, 0x30, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x29, 0xc2, 0x6e, 0xa0, 0x3d, 0x45, 0x58, 0x1e, 0x8e, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xa7, 0x08, 0xd3, 0x81, 0xf6, 0x14, 0x61, 0x7b, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0xbb, 0xc1, 0xb2, 0xf5, 0xff, 0x85, 0xdb, 0x60, 0xe1, 0x85, 0xd1, 0xa1, 0xe9, 0xd0, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x7f, 0x8a, 0x30, 0x1b, 0xe8, 0x51, 0x11, 0x9a, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x29, 0xc2, 0x74, 0xa0, 0x3f, 0x45, 0x68, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x3f, 0x45, 0xd8, 0x0e, 0xf4, 0xa7, 0x08, 0x95, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xa7, 0x08, 0x15, 0x03, 0xfd, 0x29, 0x42, 0xc9, 0x41, 0x53, 0xec, 0x3a, 0x83, 0x64, 0x70, 0x6e, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x9f, 0x22, 0xb4, 0x0c, 0xf4, 0xa7, 0x08, 0x8d, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x3f, 0x45, 0xa8, 0x19, 0xe8, 0x4f, 0x11, 0xba, 0x0e, 0x16, 0x5e, 0x18, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xfe, 0x14, 0xa1, 0x6c, 0xa0, 0x3f, 0x45, 0xa8, 0x3b, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x29, 0x42, 0xdf, 0x40, 0x7f, 0x8a, 0x50, 0x78, 0x88, 0xe1, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x9f, 0x22, 0x74, 0x0e, 0xf4, 0xa7, 0x08, 0xa5, 0x87, 0xa3, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x4f, 0x11, 0x5a, 0x07, 0xfa, 0x53, 0x84, 0xe2, 0x43, 0xfc, 0x8f, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x41, 0x45, 0x18, 0x0e, 0x34, 0xa8, 0x08, 0xf3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa0, 0x22, 0x2c, 0x07, 0x1a, 0x54, 0x84, 0xed, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x83, 0x8a, 0x30, 0x1e, 0x68, 0x50, 0x11, 0xd6, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x43, 0x45, 0x98, 0x1d, 0x34, 0x5a, 0xd9, 0x33, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x50, 0x11, 0xa6, 0x03, 0x1d, 0x2a, 0xc2, 0x81, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x54, 0x84, 0xed, 0x40, 0x87, 0x8a, 0xd0, 0x3c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x87, 0x8a, 0x50, 0x31, 0xd0, 0xa1, 0x22, 0x94, 0x1c, 0x34, 0xc5, 0xae, 0x33, 0x48, 0x06, 0xe7, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x2a, 0x42, 0xcb, 0x40, 0x87, 0x8a, 0x50, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x54, 0x84, 0x9a, 0x81, 0x0e, 0x15, 0xa1, 0xeb, 0x60, 0xe1, 0x8c, 0xd1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x50, 0x11, 0xca, 0x06, 0x3a, 0x54, 0x84, 0xc6, 0x83, 0x85, 0x26, 0x46, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x50, 0x11, 0x2a, 0x07, 0x3a, 0x54, 0x84, 0xde, 0x83, 0x85, 0x26, 0x46, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x87, 0x8a, 0x50, 0x3d, 0xd0, 0xa1, 0x22, 0x74, 0x1f, 0x8e, 0xf6, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x43, 0x45, 0x28, 0x1f, 0xe8, 0x50, 0x11, 0xfa, 0x0f, 0xf1, 0x3f, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x16, 0x15, 0x61, 0x38, 0xd0, 0xa2, 0x22, 0xcc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x8b, 0x8a, 0xb0, 0x1c, 0x68, 0x51, 0x11, 0xb6, 0x87, 0xa3, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2d, 0x2a, 0xc2, 0x78, 0xa0, 0x45, 0x45, 0x58, 0x1f, 0x8e, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xa8, 0x08, 0xb3, 0x83, 0x46, 0x2b, 0x7b, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x51, 0x11, 0x76, 0x03, 0x3d, 0x2a, 0xc2, 0xf6, 0xa0, 0x59, 0x59, 0x94, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa3, 0x22, 0x8c, 0x07, 0x7a, 0x54, 0x84, 0xa2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa3, 0x22, 0xac, 0x07, 0x7a, 0x54, 0x84, 0xfd, 0xa1, 0x3f, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x51, 0x11, 0x0a, 0x06, 0x7a, 0x54, 0x84, 0x8a, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa3, 0x22, 0x74, 0x0c, 0xf4, 0xa8, 0x08, 0x3d, 0x87, 0xd4, 0xc1, 0x71, 0x68, 0xd8, 0x0d, 0xda, 0x5e, 0x11, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x2a, 0x42, 0x32, 0xd0, 0xae, 0x22, 0x7c, 0x19, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xa9, 0x08, 0xe9, 0x40, 0x9f, 0x8a, 0x50, 0x36, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x9f, 0x8a, 0x10, 0x0f, 0xf4, 0xa9, 0x08, 0x2d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xa9, 0x08, 0xab, 0x81, 0x3e, 0x15, 0x61, 0x77, 0xd0, 0x14, 0xbb, 0xce, 0x20, 0x19, 0x9c, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xa9, 0x08, 0xc3, 0x81, 0x3e, 0x15, 0xa1, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xa9, 0x08, 0xcb, 0x81, 0x3e, 0x15, 0x61, 0x7e, 0xb0, 0xf0, 0xc2, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xa9, 0x08, 0xfb, 0x81, 0x3e, 0x15, 0xa1, 0xe1, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xa9, 0x08, 0x15, 0x03, 0x7d, 0x2a, 0x42, 0xc7, 0x21, 0x86, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x9f, 0x8a, 0x50, 0x33, 0xd0, 0xa7, 0x22, 0xf4, 0x1c, 0x8e, 0xf6, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x4f, 0x45, 0x28, 0x1a, 0xe8, 0x53, 0x11, 0xba, 0x0e, 0xf1, 0x3f, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3e, 0x15, 0xa1, 0x6e, 0xa0, 0x4f, 0x45, 0x28, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x2a, 0x42, 0xdf, 0x40, 0x9f, 0x8a, 0xd0, 0x78, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa7, 0x22, 0x54, 0x0e, 0xf4, 0xa9, 0x08, 0x9d, 0x87, 0xa3, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0x2a, 0x42, 0x72, 0xd0, 0x1a, 0x98, 0xcf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0x2a, 0x42, 0x3a, 0xd0, 0xa8, 0x22, 0x2c, 0x0e, 0x5a, 0xf9, 0x45, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xaa, 0x08, 0xd9, 0x40, 0xaf, 0x8a, 0xb0, 0x1b, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xaa, 0x08, 0xf9, 0x40, 0xa7, 0x8a, 0xd0, 0x3a, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xa7, 0x8a, 0x30, 0x18, 0xe8, 0x54, 0x11, 0xea, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x54, 0x11, 0x76, 0x03, 0x9d, 0x2a, 0xc2, 0xf2, 0xa0, 0x29, 0x76, 0x9d, 0x41, 0x32, 0x38, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x54, 0x11, 0xa6, 0x03, 0x9d, 0x2a, 0x42, 0xdb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x54, 0x11, 0xb6, 0x03, 0x9d, 0x2a, 0x42, 0xc1, 0xc1, 0xc2, 0x19, 0xa3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa9, 0x22, 0x34, 0x0c, 0x74, 0xaa, 0x08, 0x35, 0x07, 0x0b, 0x4d, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa9, 0x22, 0xf4, 0x0c, 0x74, 0xaa, 0x08, 0x65, 0x07, 0x0b, 0x4d, 0x8c, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x4e, 0x15, 0xa1, 0x6f, 0xa0, 0x53, 0x45, 0x28, 0x3c, 0x1c, 0xed, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xa7, 0x8a, 0xd0, 0x38, 0xd0, 0xa9, 0x22, 0x94, 0x1e, 0xe2, 0x7f, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0x2a, 0x42, 0x3a, 0xd0, 0xaa, 0x22, 0x6c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xab, 0x8a, 0x10, 0x0f, 0xb4, 0xaa, 0x08, 0x83, 0xc3, 0xd1, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x56, 0x15, 0x61, 0x31, 0xd0, 0xaa, 0x22, 0x4c, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xaf, 0x8a, 0x90, 0x1d, 0xb4, 0xff, 0xeb, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x55, 0x84, 0x70, 0xa0, 0x57, 0x45, 0x88, 0x0f, 0xfd, 0xc9, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xaf, 0x8a, 0x90, 0x0f, 0xf4, 0xaa, 0x08, 0x8b, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xab, 0x22, 0x4c, 0x06, 0x7a, 0x55, 0x84, 0xd9, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xab, 0x08, 0xc9, 0x41, 0x6b, 0x60, 0x3e, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xab, 0x08, 0xe9, 0x40, 0xb3, 0x8a, 0xb0, 0x38, 0x68, 0xe5, 0x17, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xad, 0x22, 0x64, 0x03, 0xdd, 0x2a, 0xc2, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x98, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x15, 0x61, 0x31, 0xd0, 0xad, 0x22, 0x14, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xad, 0x22, 0x4c, 0x06, 0xba, 0x55, 0x84, 0xfd, 0x20, 0x19, 0x38, 0xfe, 0x06, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x5b, 0x45, 0xd8, 0x0e, 0x74, 0xab, 0x08, 0xf3, 0x43, 0xfc, 0x0f, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xb7, 0x8a, 0x50, 0x30, 0xd0, 0xad, 0x22, 0xb4, 0x1c, 0xac, 0x16, 0x36, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x55, 0x84, 0x9a, 0x81, 0x6e, 0x15, 0xa1, 0xe7, 0xd0, 0x4a, 0xfc, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x15, 0xe1, 0xc2, 0x40, 0xb7, 0x8a, 0xf0, 0xe5, 0xd0, 0x74, 0x68, 0x10, 0x2d, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x55, 0x84, 0xbe, 0x81, 0x6e, 0x15, 0xa1, 0x7b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x15, 0xa1, 0x70, 0xa0, 0x5b, 0x45, 0xe8, 0x3c, 0x68, 0x7f, 0x19, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xad, 0x22, 0x94, 0x0e, 0x74, 0xab, 0x08, 0xc5, 0x87, 0xd4, 0xc1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xad, 0x22, 0x34, 0x0f, 0x74, 0xab, 0x08, 0xd5, 0x87, 0x56, 0xe2, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xae, 0x22, 0x24, 0x07, 0xad, 0x81, 0xf9, 0x0c, 0x92, 0x21, 0x83, 0x68, 0xc1, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xab, 0x08, 0xf9, 0x40, 0xbb, 0x8a, 0x50, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xbb, 0x8a, 0x30, 0x18, 0x68, 0x57, 0x11, 0xd6, 0x83, 0x64, 0xe0, 0xf8, 0x1b, 0x44, 0x0b, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x76, 0x15, 0x61, 0x39, 0xd0, 0xae, 0x22, 0x8c, 0x0f, 0xf1, 0x3f, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x2a, 0xc2, 0x7c, 0xa0, 0x5d, 0x45, 0xe8, 0x38, 0x58, 0x2d, 0x6c, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xab, 0x08, 0x25, 0x03, 0xed, 0x2a, 0x42, 0xcb, 0xa1, 0x3f, 0xf9, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x2a, 0xc2, 0x81, 0x81, 0x76, 0x15, 0xe1, 0xca, 0xa1, 0xd1, 0xd1, 0x20, 0x5a, 0xd8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xab, 0x08, 0x6d, 0x03, 0xed, 0x2a, 0x42, 0xf3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x2a, 0x42, 0xdd, 0x40, 0xbb, 0x8a, 0xd0, 0x78, 0xd0, 0xfe, 0x32, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x5d, 0x45, 0xa8, 0x1c, 0x68, 0x57, 0x11, 0x6a, 0x0f, 0xa9, 0x83, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x5d, 0x45, 0xe8, 0x1d, 0x68, 0x57, 0x11, 0x8a, 0x0f, 0xfd, 0xc9, 0x8f, 0x43, 0xc7, 0xe3, 0xe3, 0xd0, 0x71, 0x68, 0xd8, 0x85, 0xdb, 0x90, 0xfb, 0x3e, 0xb4, 0x00, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x2b, 0x42, 0x32, 0xd0, 0xb3, 0x22, 0xd4, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x56, 0x84, 0x74, 0xa0, 0x63, 0x45, 0x68, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x63, 0x45, 0x88, 0x07, 0x3a, 0x56, 0x84, 0xba, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x56, 0x84, 0xd5, 0x40, 0xc7, 0x8a, 0xb0, 0x3b, 0x68, 0x8a, 0x5d, 0x67, 0x90, 0x0c, 0xce, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x56, 0x84, 0xe1, 0x40, 0xc7, 0x8a, 0xd0, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x56, 0x84, 0xe5, 0x40, 0xc7, 0x8a, 0x30, 0x3f, 0x58, 0x78, 0x61, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x56, 0x84, 0xfd, 0x40, 0xc7, 0x8a, 0xd0, 0x70, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x56, 0x84, 0x8a, 0x81, 0x8e, 0x15, 0xa1, 0x6c, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xb1, 0x22, 0x74, 0x1c, 0x34, 0xf8, 0xff, 0x73, 0x68, 0x74, 0x74, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xac, 0x08, 0x7d, 0x03, 0x1d, 0x2b, 0x42, 0xe1, 0xe1, 0x68, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x56, 0x84, 0xc6, 0x81, 0x8e, 0x15, 0xa1, 0xf4, 0x10, 0xff, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x59, 0x11, 0xb2, 0x81, 0x96, 0x15, 0x61, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x56, 0x84, 0x70, 0xa0, 0x65, 0x45, 0x88, 0x0f, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x56, 0x84, 0x7c, 0xa0, 0x65, 0x45, 0x18, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9e, 0x15, 0x21, 0x39, 0x68, 0x95, 0xfa, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xac, 0x08, 0xd1, 0x40, 0xcf, 0x8a, 0x10, 0x1e, 0x14, 0x76, 0x38, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x67, 0x45, 0x48, 0x07, 0x7a, 0x56, 0x84, 0xed, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x59, 0x11, 0xe2, 0x81, 0x9e, 0x15, 0x61, 0x70, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xb3, 0x22, 0x2c, 0x06, 0x7a, 0x56, 0x84, 0xe9, 0xa1, 0xd1, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x56, 0x84, 0xf1, 0x40, 0xcf, 0x8a, 0xd0, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x56, 0x84, 0xf5, 0x40, 0xcf, 0x8a, 0xb0, 0x3f, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0x2b, 0x42, 0xc1, 0x40, 0xcf, 0x8a, 0x50, 0x72, 0x48, 0x1d, 0x0c, 0xbb, 0x70, 0x1b, 0xac, 0x88, 0x3b, 0x3a, 0xb4, 0x00, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0x2b, 0xc2, 0x64, 0xa0, 0x6b, 0x45, 0xe8, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xad, 0x08, 0xcb, 0x81, 0xae, 0x15, 0xa1, 0xe2, 0xd0, 0xe8, 0xe8, 0x78, 0x3c, 0xec, 0xc2, 0x6d, 0xb0, 0xba, 0x91, 0xea, 0xd0, 0x02, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xad, 0x08, 0x93, 0x81, 0xb6, 0x15, 0xa1, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xb6, 0x22, 0x2c, 0x07, 0xda, 0x56, 0x84, 0x8a, 0x43, 0xa3, 0xa3, 0xe3, 0xf1, 0xb0, 0x0b, 0xb7, 0xc1, 0x82, 0x83, 0xaa, 0x43, 0x0b, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xb7, 0x22, 0x4c, 0x06, 0xfa, 0x56, 0x84, 0x8e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xdf, 0x8a, 0xb0, 0x1c, 0xe8, 0x5b, 0x11, 0x2a, 0x0e, 0x8d, 0x8e, 0x8e, 0xc7, 0xc3, 0x2e, 0xdc, 0x06, 0x8b, 0x30, 0xaa, 0x0e, 0x2d, 0x80, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe7, 0x8a, 0x30, 0x19, 0xe8, 0x5d, 0x11, 0x5e, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xb9, 0x22, 0xcc, 0x06, 0x5a, 0x57, 0x84, 0xc2, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x7f, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x10, 0x9e, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x09, 0xc0, 0x8f, 0xb7, 0x37, 0xb8, 0xb9, 0x96, 0xb3, 0xba, 0xb2, 0xb9, 0xb9, 0x96, 0xbc, 0xb7, 0xba, 0x16, 0xb7, 0xb2, 0x32, 0xb2, 0x32, 0xb2, 0x16, 0xb3, 0xb2, 0x32, 0xb6, 0x96, 0x30, 0x33, 0xba, 0x32, 0xb9, 0x96, 0x30, 0x36, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x5c, 0x11, 0xa6, 0x03, 0x9d, 0x2b, 0x42, 0xff, 0x78, 0xd0, 0x98, 0x27, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xeb, 0x8a, 0x30, 0x3b, 0x68, 0x0a, 0x12, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0x2b, 0xc2, 0xf4, 0xa0, 0x29, 0x48, 0xa0, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x57, 0x84, 0xed, 0x40, 0xeb, 0x8a, 0xb0, 0x1f, 0x24, 0x03, 0xbd, 0xff, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xeb, 0x8a, 0x50, 0x30, 0xd0, 0xba, 0x22, 0xb4, 0x1c, 0x2c, 0x46, 0x36, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x57, 0x84, 0x9a, 0x81, 0xd6, 0x15, 0xa1, 0xef, 0xd0, 0x74, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0x15, 0x61, 0x72, 0xd0, 0xa8, 0x22, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xdc, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xef, 0x8a, 0x30, 0x1c, 0xe8, 0x5d, 0x11, 0xd6, 0x07, 0x21, 0x05, 0x3e, 0x88, 0x16, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x77, 0x45, 0xe8, 0x1e, 0xe8, 0x5d, 0x11, 0x4e, 0x1c, 0x94, 0x32, 0x3b, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xbb, 0x22, 0x94, 0x0c, 0xf4, 0xae, 0x08, 0xa5, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xae, 0x08, 0x2d, 0x03, 0xbd, 0x2b, 0x42, 0xd1, 0x20, 0x19, 0xd4, 0x1d, 0x1c, 0xb3, 0x8a, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0x2b, 0x42, 0xd3, 0x40, 0xef, 0x8a, 0xd0, 0x76, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0x2b, 0x42, 0xdd, 0x40, 0xef, 0x8a, 0xd0, 0x79, 0x10, 0x02, 0xe0, 0xc7, 0xa1, 0xe3, 0xf9, 0xb0, 0x0b, 0xb7, 0xc1, 0x52, 0x66, 0xad, 0x43, 0x0b, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xbc, 0x22, 0x4c, 0x06, 0xda, 0x57, 0x84, 0x8e, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x57, 0x84, 0xed, 0x40, 0xf3, 0x8a, 0xf0, 0x61, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe6, 0x15, 0x61, 0x3c, 0xd0, 0xbc, 0x22, 0x54, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xbc, 0x22, 0x74, 0x0c, 0x34, 0xaf, 0x08, 0x2d, 0x07, 0x4d, 0xb1, 0xeb, 0x0c, 0x92, 0x81, 0xf4, 0xdd, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x79, 0x45, 0xa8, 0x19, 0x68, 0x5e, 0x11, 0x9a, 0x0e, 0xc6, 0x9b, 0xce, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xaf, 0x08, 0x5d, 0x03, 0xcd, 0x2b, 0xc2, 0x85, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x57, 0x84, 0xd6, 0x81, 0xe6, 0x15, 0xa1, 0x77, 0x90, 0x0c, 0xbe, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0xb8, 0x35, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x5e, 0x11, 0x8a, 0x07, 0x9a, 0x57, 0x84, 0x07, 0x87, 0xa6, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x57, 0x84, 0xc9, 0x41, 0x53, 0x0a, 0x41, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xee, 0x15, 0x61, 0x36, 0xd0, 0xbd, 0x22, 0x94, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xbd, 0x22, 0xec, 0x06, 0xba, 0x57, 0x84, 0x96, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x57, 0x84, 0xf9, 0x40, 0xf7, 0x8a, 0x50, 0x30, 0x48, 0x06, 0xc2, 0x72, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0xe0, 0xdc, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x7b, 0x45, 0x68, 0x18, 0xe8, 0x5e, 0x11, 0x4a, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xf7, 0x8a, 0x50, 0x33, 0xd0, 0xbd, 0x22, 0xf4, 0x1c, 0x62, 0x38, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xaf, 0x08, 0x45, 0x03, 0xdd, 0x2b, 0x42, 0xd7, 0x21, 0xd9, 0x71, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x2b, 0xc2, 0xe4, 0xa0, 0x29, 0x85, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xfb, 0x8a, 0xb0, 0x1c, 0x68, 0x5f, 0x11, 0x2a, 0x0e, 0x4a, 0x99, 0x9d, 0xe3, 0xf9, 0xe1, 0x14, 0x1b, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xdc, 0x06, 0xeb, 0xbe, 0xb5, 0x0e, 0x2d, 0x80, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xbf, 0x22, 0x4c, 0x06, 0xfa, 0x57, 0x84, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x5f, 0x11, 0x36, 0x03, 0xfd, 0x2b, 0xc2, 0xea, 0x70, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x7f, 0x45, 0x98, 0x0d, 0xf4, 0xaf, 0x08, 0xbb, 0x43, 0x0c, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x92, 0x11, 0x3f, 0xd0, 0x73, 0x23, 0x24, 0x83, 0x60, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0x32, 0x42, 0x76, 0xd0, 0x7a, 0x65, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x64, 0xc4, 0x1f, 0xb4, 0x5e, 0x19, 0x34, 0xec, 0x06, 0x4b, 0x05, 0x83, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x97, 0x8c, 0xb0, 0x18, 0xe8, 0x92, 0x11, 0xfa, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x2e, 0x19, 0x61, 0x38, 0xd0, 0x25, 0x23, 0xd4, 0x6f, 0xb0, 0x94, 0x59, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0x32, 0xc2, 0xfa, 0xa0, 0xf5, 0xd6, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x25, 0x23, 0xcc, 0x07, 0xba, 0x64, 0x84, 0xbe, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x25, 0x23, 0xec, 0x07, 0xba, 0x64, 0x84, 0x92, 0x83, 0x55, 0xa6, 0x54, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x4b, 0x46, 0x68, 0x19, 0xe8, 0x92, 0x11, 0xca, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x97, 0x8c, 0x50, 0x33, 0xd0, 0x25, 0x23, 0x54, 0x1d, 0xf2, 0xb5, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x4b, 0x46, 0x68, 0x1b, 0xe8, 0x92, 0x11, 0xea, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x97, 0x8c, 0x50, 0x38, 0xd0, 0x25, 0x23, 0xb4, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x2e, 0x19, 0xa1, 0x71, 0xa0, 0x4b, 0x46, 0xa8, 0x3d, 0x58, 0xd1, 0x74, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x2e, 0x19, 0xa1, 0x77, 0xa0, 0x4b, 0x46, 0x28, 0x3f, 0x58, 0x68, 0x62, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x9b, 0x8c, 0xf8, 0x83, 0xd6, 0x2b, 0x83, 0x86, 0xdd, 0xa0, 0x11, 0x65, 0x99, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x29, 0x23, 0x24, 0x03, 0xed, 0x33, 0x42, 0x36, 0xec, 0x06, 0x4d, 0x47, 0xcb, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x56, 0x19, 0x61, 0x38, 0xd0, 0x2a, 0x23, 0x7c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x65, 0x84, 0xfd, 0x40, 0xab, 0x8c, 0x70, 0x61, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xca, 0x08, 0x05, 0x03, 0xad, 0x32, 0x42, 0xcb, 0xc1, 0xc2, 0x19, 0xa3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x2a, 0x23, 0xd4, 0x0c, 0xb4, 0xca, 0x08, 0x9d, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x55, 0x46, 0xe8, 0x19, 0x68, 0x95, 0x11, 0xca, 0x0e, 0x56, 0x34, 0x1d, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x55, 0x46, 0x68, 0x1b, 0x68, 0x95, 0x11, 0x2a, 0x0f, 0x16, 0x9a, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x55, 0x46, 0x28, 0x1d, 0x68, 0x95, 0x11, 0x1e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x56, 0x19, 0xa1, 0x75, 0xa0, 0x55, 0x46, 0xa8, 0x3e, 0x58, 0xd1, 0x74, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x56, 0x19, 0xa1, 0x7b, 0xa0, 0x55, 0x46, 0x38, 0x70, 0xb0, 0xd0, 0xc4, 0xe8, 0x78, 0x3c, 0xec, 0x06, 0xad, 0x2b, 0xcc, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x5e, 0x19, 0x61, 0x38, 0xd0, 0x2b, 0x23, 0xdc, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xca, 0x08, 0xf3, 0x81, 0x5e, 0x19, 0xa1, 0x72, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x95, 0x11, 0x5a, 0x06, 0x7a, 0x65, 0x84, 0xc6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x2b, 0x23, 0xd4, 0x0c, 0xf4, 0xca, 0x08, 0x5d, 0x87, 0xdc, 0xf7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x95, 0x11, 0xca, 0x06, 0x7a, 0x65, 0x84, 0xba, 0x83, 0x71, 0xbb, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x5e, 0x19, 0xa1, 0x6f, 0xa0, 0x57, 0x46, 0x28, 0x3c, 0xc4, 0xf0, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x5e, 0x19, 0xa1, 0x79, 0xa0, 0x57, 0x46, 0x78, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x65, 0x84, 0xea, 0x81, 0x5e, 0x19, 0xa1, 0xff, 0x90, 0xfb, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0x32, 0xc2, 0x81, 0x81, 0x5e, 0x19, 0xe1, 0xc2, 0xc1, 0xb8, 0xdd, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xaf, 0x8c, 0xf0, 0x61, 0xa0, 0x57, 0x46, 0x38, 0x71, 0x38, 0xda, 0x8f, 0xc7, 0xc3, 0x6e, 0xd0, 0x40, 0xd8, 0xcc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x96, 0x11, 0x86, 0x03, 0xcd, 0x32, 0x42, 0xd9, 0x20, 0x19, 0x32, 0x88, 0x16, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x2c, 0x23, 0xec, 0x07, 0x9a, 0x65, 0x84, 0xae, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x2c, 0x23, 0x14, 0x0c, 0x34, 0xcb, 0x08, 0x2d, 0x87, 0xdc, 0xf7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x96, 0x11, 0x6a, 0x06, 0x9a, 0x65, 0x84, 0xa2, 0x83, 0x21, 0xf5, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x66, 0x19, 0xa1, 0x69, 0xa0, 0x59, 0x46, 0xa8, 0x3a, 0xc4, 0xf0, 0x78, 0x3c, 0xec, 0x06, 0xed, 0x07, 0xce, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x19, 0x61, 0x38, 0xd0, 0x2d, 0x23, 0x6c, 0x0f, 0x59, 0xbb, 0x61, 0x37, 0x68, 0x58, 0x71, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xcb, 0x08, 0xc3, 0x81, 0x76, 0x19, 0x61, 0x7d, 0xb0, 0xbe, 0xc1, 0x68, 0x90, 0x6d, 0xd0, 0x64, 0xf2, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x66, 0x84, 0x6c, 0xa0, 0x7b, 0x46, 0x48, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x98, 0x11, 0xf2, 0x81, 0x86, 0x19, 0x61, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x86, 0x19, 0x61, 0x73, 0xd0, 0x30, 0xa8, 0xd0, 0xf0, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x30, 0x23, 0x8c, 0x06, 0x1a, 0x66, 0x84, 0xdd, 0x41, 0xc3, 0xdb, 0x02, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x61, 0x46, 0x18, 0x0e, 0x34, 0xcc, 0x08, 0xe3, 0x83, 0xe6, 0x95, 0x05, 0x8e, 0x43, 0xc7, 0xb7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xcc, 0x08, 0xd9, 0x41, 0x33, 0x9b, 0x42, 0x83, 0x60, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x33, 0x42, 0x7e, 0xd0, 0xcc, 0xa6, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x66, 0x84, 0xec, 0xa0, 0x99, 0x4d, 0xa1, 0x61, 0x37, 0x68, 0xe2, 0x7f, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xcc, 0x08, 0xc3, 0x81, 0x9e, 0x19, 0x61, 0x7d, 0xb0, 0xbe, 0xc1, 0x68, 0xd8, 0x0d, 0x5a, 0x3e, 0xa0, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0x33, 0xc2, 0x70, 0xa0, 0x69, 0x46, 0xe8, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0x33, 0xc2, 0x72, 0xa0, 0x69, 0x46, 0x98, 0x1f, 0x2c, 0x9c, 0x31, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0x33, 0xc2, 0x7e, 0xa0, 0x69, 0x46, 0x28, 0x39, 0x58, 0x68, 0x62, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xa6, 0x19, 0xa1, 0x65, 0xa0, 0x69, 0x46, 0xa8, 0x3a, 0x58, 0x68, 0x62, 0x34, 0xec, 0x06, 0xed, 0x86, 0xd0, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xae, 0x19, 0x61, 0x38, 0xd0, 0x35, 0x23, 0xac, 0x0f, 0xd6, 0x37, 0x18, 0x0d, 0xbb, 0x41, 0xc3, 0x8b, 0x34, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x6d, 0x46, 0x18, 0x0e, 0xb4, 0xcd, 0x08, 0xdb, 0x43, 0xb2, 0x63, 0xd8, 0x0d, 0x1a, 0xb7, 0xa4, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x33, 0xc2, 0x70, 0xa0, 0x6f, 0x46, 0xd8, 0x1e, 0x92, 0x1d, 0xc3, 0x6e, 0xd0, 0x80, 0x28, 0xcd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x9c, 0x11, 0x86, 0x03, 0x8d, 0x33, 0x42, 0xe3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0x33, 0xc2, 0x72, 0xa0, 0x71, 0x46, 0x58, 0x0f, 0x92, 0x81, 0xa7, 0xfa, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x71, 0x46, 0x98, 0x0f, 0x34, 0xce, 0x08, 0x1d, 0x07, 0x09, 0xd8, 0x02, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe3, 0x8c, 0x50, 0x32, 0xd0, 0x38, 0x23, 0x14, 0x0e, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xce, 0x08, 0x55, 0x03, 0x8d, 0x33, 0x42, 0xdf, 0xc1, 0x08, 0xf2, 0x3c, 0x1e, 0x1f, 0x87, 0x86, 0xdd, 0xa0, 0x2d, 0x5a, 0x9a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x39, 0x23, 0x0c, 0x07, 0x3a, 0x67, 0x84, 0x33, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xce, 0x08, 0xcb, 0x81, 0xce, 0x19, 0x61, 0x7d, 0xd0, 0x5c, 0x85, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x9c, 0x11, 0xe6, 0x03, 0x9d, 0x33, 0xc2, 0x97, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x67, 0x84, 0xfd, 0x40, 0xe7, 0x8c, 0xd0, 0x71, 0xd0, 0x8e, 0x86, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x73, 0x46, 0x28, 0x19, 0xe8, 0x9c, 0x11, 0x3a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x9c, 0x11, 0xaa, 0x06, 0x3a, 0x67, 0x84, 0xb2, 0x83, 0x05, 0xb5, 0xfb, 0x83, 0x64, 0x20, 0x74, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xce, 0x19, 0xa1, 0x6d, 0xa0, 0x73, 0x46, 0xa8, 0x3c, 0x18, 0x8b, 0x9d, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x73, 0x46, 0x28, 0x1d, 0xe8, 0x9c, 0x11, 0xae, 0x0c, 0x82, 0x0d, 0x16, 0x9a, 0x18, 0x2d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x73, 0x46, 0x68, 0x1f, 0xe8, 0x9c, 0x11, 0x9e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xce, 0x08, 0x27, 0x06, 0x3a, 0x67, 0x84, 0x23, 0x87, 0xd4, 0xc1, 0x21, 0xb9, 0x74, 0x3c, 0x3e, 0x0e, 0x1d, 0x87, 0x86, 0xdd, 0xa0, 0xe5, 0x80, 0x9a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x3a, 0x23, 0x0c, 0x07, 0x5a, 0x67, 0x84, 0xc6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x67, 0x84, 0xe5, 0x40, 0xeb, 0x8c, 0xb0, 0x3e, 0x68, 0x25, 0xa2, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x3a, 0x23, 0xcc, 0x07, 0x5a, 0x67, 0x84, 0x8e, 0x83, 0x04, 0x6c, 0x81, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x75, 0x46, 0x28, 0x19, 0x68, 0x9d, 0x11, 0x0a, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x67, 0x84, 0xaa, 0x81, 0xd6, 0x19, 0xa1, 0xef, 0x60, 0x04, 0x79, 0x1e, 0x8f, 0x8f, 0x43, 0x83, 0x6c, 0x83, 0xf6, 0x55, 0x6a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x3b, 0x23, 0x0c, 0x07, 0x9a, 0x67, 0x84, 0x17, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0x19, 0x61, 0x3c, 0xd0, 0x3b, 0x23, 0xf4, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x3b, 0x23, 0xac, 0x07, 0x7a, 0x67, 0x84, 0xaa, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x67, 0x84, 0x8e, 0x81, 0xde, 0x19, 0xa1, 0xe5, 0x60, 0x41, 0xed, 0xfe, 0x20, 0x19, 0x98, 0xbe, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xef, 0x8c, 0x50, 0x33, 0xd0, 0x3b, 0x23, 0x34, 0x1d, 0x52, 0x07, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x3b, 0x23, 0x74, 0x0d, 0xf4, 0xce, 0x08, 0x75, 0x87, 0x64, 0xc7, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xce, 0x08, 0x8d, 0x03, 0xbd, 0x33, 0x42, 0xed, 0xc1, 0xfa, 0x06, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xcf, 0x08, 0xc3, 0x83, 0xa6, 0x31, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x67, 0x84, 0xde, 0x81, 0xe6, 0x19, 0xe1, 0xc4, 0x20, 0x19, 0xcc, 0x06, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x79, 0x46, 0x38, 0x30, 0xd0, 0x3c, 0x23, 0x7c, 0x38, 0x24, 0x3b, 0x0e, 0x82, 0x9c, 0x7f, 0x10, 0x2d, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x67, 0x84, 0xf9, 0x40, 0xf3, 0x8c, 0xd0, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xf3, 0x8c, 0xb0, 0x1f, 0x68, 0x9e, 0x11, 0xca, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x9e, 0x11, 0x5a, 0x06, 0x9a, 0x67, 0x84, 0x9e, 0x83, 0x05, 0xb5, 0xfb, 0x83, 0x64, 0x70, 0x6a, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x3c, 0x23, 0x14, 0x0d, 0x34, 0xcf, 0x08, 0x5d, 0x87, 0xd4, 0xc1, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xcf, 0x08, 0x6d, 0x03, 0xcd, 0x33, 0x42, 0xe1, 0x21, 0xd9, 0x71, 0x1c, 0x3a, 0x1e, 0x1f, 0xdf, 0x86, 0xdd, 0xa0, 0x95, 0xcc, 0x9a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x41, 0x23, 0x24, 0x03, 0x6d, 0x35, 0x42, 0x36, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x07, 0x8d, 0x90, 0x0e, 0x74, 0xd0, 0x08, 0xdb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xd0, 0x08, 0x8b, 0x83, 0xb6, 0x10, 0x88, 0x86, 0x5f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x0e, 0x1a, 0x61, 0x32, 0xd0, 0x41, 0x23, 0xac, 0x0e, 0x1a, 0xde, 0x16, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x34, 0xc2, 0x6c, 0xa0, 0x83, 0x46, 0x98, 0x1e, 0x34, 0xaf, 0x2c, 0x70, 0x1c, 0x3a, 0xbe, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x85, 0x46, 0x48, 0x0e, 0x5a, 0x16, 0x20, 0x1a, 0x04, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xa1, 0x11, 0xd2, 0x83, 0x96, 0x05, 0x88, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x43, 0x23, 0x24, 0x07, 0x2d, 0x0b, 0x10, 0x0d, 0xbb, 0x41, 0x13, 0xff, 0x33, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x89, 0x46, 0x18, 0x0e, 0x34, 0xd1, 0x08, 0xeb, 0x83, 0xf5, 0x0d, 0x46, 0xc3, 0x6e, 0xd0, 0xf2, 0x01, 0xcd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa2, 0x11, 0x86, 0x03, 0x7d, 0x34, 0x42, 0xc9, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8b, 0x46, 0x18, 0x0f, 0x74, 0xd1, 0x08, 0x3f, 0x86, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0x34, 0xc2, 0x7c, 0xa0, 0x8b, 0x46, 0x78, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x68, 0x84, 0xfd, 0x40, 0x17, 0x8d, 0x50, 0x72, 0xb0, 0x70, 0xc6, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xd1, 0x08, 0x2d, 0x03, 0x5d, 0x34, 0x42, 0xe5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa2, 0x11, 0x6a, 0x06, 0xba, 0x68, 0x84, 0xae, 0x83, 0x15, 0x4d, 0x47, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa2, 0x11, 0xca, 0x06, 0xba, 0x68, 0x84, 0xc6, 0x83, 0x85, 0x26, 0x46, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa2, 0x11, 0x3a, 0x07, 0xba, 0x68, 0x84, 0x03, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8b, 0x46, 0x28, 0x1d, 0xe8, 0xa2, 0x11, 0x9a, 0x0f, 0x56, 0x34, 0x1d, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8b, 0x46, 0xa8, 0x1e, 0xe8, 0xa2, 0x11, 0xfa, 0x0f, 0x16, 0x9a, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8b, 0x46, 0xb8, 0x30, 0xd0, 0x45, 0x23, 0xdc, 0x38, 0x24, 0x66, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x1f, 0x8d, 0x30, 0x3c, 0x68, 0x81, 0x87, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd1, 0x08, 0xcb, 0x81, 0x3e, 0x1a, 0x61, 0x7e, 0xb0, 0xf0, 0xc2, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd1, 0x08, 0xfb, 0x81, 0x3e, 0x1a, 0xa1, 0xe1, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd1, 0x08, 0x15, 0x03, 0x7d, 0x34, 0x42, 0xc7, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xa3, 0x11, 0xa6, 0x03, 0x6d, 0x34, 0xc2, 0xfa, 0x90, 0xec, 0x18, 0x76, 0x83, 0x76, 0x43, 0x68, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x23, 0x8d, 0x30, 0x1c, 0x68, 0xa4, 0x11, 0xb6, 0x87, 0x64, 0xc7, 0xb0, 0x1b, 0x34, 0xbc, 0x48, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x69, 0x84, 0xe1, 0x40, 0x2f, 0x8d, 0xf0, 0x68, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x4e, 0x1a, 0xa1, 0x61, 0xa0, 0x93, 0x46, 0xa8, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xd2, 0x08, 0xc5, 0x03, 0x9d, 0x34, 0x42, 0xfb, 0x41, 0x02, 0xb6, 0xc0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x69, 0x84, 0xa6, 0x81, 0x4e, 0x1a, 0xa1, 0xf2, 0xa0, 0xc8, 0x55, 0x38, 0x24, 0x97, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x4a, 0x23, 0x0c, 0x0f, 0xda, 0x0f, 0x25, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x95, 0x46, 0x68, 0x18, 0x68, 0xa5, 0x11, 0xfa, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x20, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0x34, 0x42, 0xf3, 0x40, 0x2b, 0x8d, 0x50, 0x7f, 0xd0, 0x24, 0xa2, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x69, 0x84, 0xa6, 0x81, 0x56, 0x1a, 0xa1, 0xf3, 0xa0, 0x61, 0x9f, 0x91, 0xc3, 0x0a, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x69, 0x84, 0xe1, 0x41, 0xfb, 0xa1, 0x44, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd2, 0x08, 0xcb, 0x81, 0x5e, 0x1a, 0x61, 0x3d, 0x48, 0x06, 0x8e, 0xbe, 0x83, 0xe1, 0x28, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa5, 0x11, 0xe6, 0x03, 0xbd, 0x34, 0x42, 0xd9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0x34, 0xc2, 0x7e, 0xa0, 0x97, 0x46, 0xe8, 0x38, 0x68, 0x78, 0xbf, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x4b, 0x23, 0x94, 0x0c, 0xf4, 0xd2, 0x08, 0x3d, 0x87, 0xd4, 0xc1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x4b, 0x23, 0x14, 0x0d, 0xf4, 0xd2, 0x08, 0x5d, 0xc7, 0xa1, 0xe3, 0xd0, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x2f, 0x8d, 0xd0, 0x36, 0xd0, 0x4b, 0x23, 0xb4, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x4b, 0x23, 0xd4, 0x0d, 0xf4, 0xd2, 0x08, 0x95, 0x07, 0x0d, 0xef, 0xb7, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x69, 0x84, 0xce, 0x81, 0x5e, 0x1a, 0xa1, 0xf6, 0x90, 0x3a, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x69, 0x84, 0xde, 0x81, 0x5e, 0x1a, 0xa1, 0x7c, 0x82, 0x9b, 0xff, 0x38, 0xb4, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x4b, 0x23, 0xd4, 0x0f, 0xf4, 0xd2, 0x08, 0x77, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa5, 0x11, 0xfa, 0x07, 0x7a, 0x69, 0x84, 0x0f, 0x07, 0x0d, 0xef, 0xb7, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x69, 0x84, 0x13, 0x03, 0xbd, 0x34, 0xc2, 0x93, 0x09, 0x4e, 0xfe, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x97, 0x46, 0xb8, 0x32, 0xd0, 0x4b, 0x23, 0xbc, 0x39, 0x0e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x5e, 0x1a, 0xe1, 0xcf, 0x40, 0x2f, 0x8d, 0x70, 0xe8, 0x10, 0xc3, 0xe3, 0xd0, 0xb0, 0x1b, 0x34, 0x6e, 0x49, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x69, 0x84, 0xe1, 0x40, 0x43, 0x8d, 0xd0, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x33, 0x8d, 0x30, 0x1e, 0x68, 0xa6, 0x11, 0x9a, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x20, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0x34, 0x42, 0xe7, 0x40, 0x33, 0x8d, 0x50, 0x7c, 0x90, 0x80, 0x2d, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x66, 0x1a, 0xa1, 0x64, 0xa0, 0x99, 0x46, 0x68, 0x3b, 0x28, 0x72, 0x15, 0x0e, 0xc9, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xd3, 0x08, 0xc3, 0x83, 0xf6, 0x81, 0x8a, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdd, 0x34, 0xc2, 0x78, 0xa0, 0x9b, 0x46, 0xa8, 0x19, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xd3, 0x08, 0xf3, 0x81, 0x6e, 0x1a, 0xa1, 0xe3, 0x60, 0x7d, 0x83, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x69, 0x84, 0x92, 0x81, 0x6e, 0x1a, 0xa1, 0xe5, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x69, 0x84, 0xa2, 0x81, 0x6e, 0x1a, 0xa1, 0xed, 0x60, 0x7d, 0x83, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x69, 0x84, 0xe1, 0x41, 0xfb, 0x40, 0x45, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x76, 0x1a, 0x61, 0x3c, 0xd0, 0x4e, 0x23, 0xf4, 0x0d, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x69, 0x84, 0xf9, 0x40, 0x3b, 0x8d, 0xd0, 0x71, 0xb0, 0xd0, 0xc4, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x34, 0x42, 0xc9, 0x40, 0x3b, 0x8d, 0x50, 0x77, 0xd0, 0xb0, 0xcf, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xa8, 0x11, 0x86, 0x07, 0xed, 0x03, 0x15, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x86, 0x1a, 0x61, 0x39, 0xd0, 0x50, 0x23, 0xcc, 0x0f, 0xd6, 0x74, 0x4b, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x86, 0x1a, 0x61, 0x3f, 0xd0, 0x50, 0x23, 0x14, 0x1c, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x50, 0x23, 0x34, 0x0c, 0x34, 0xd4, 0x08, 0x35, 0x07, 0x4d, 0x22, 0xda, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x9f, 0x46, 0x98, 0x0e, 0xf4, 0xd3, 0x08, 0x0f, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa7, 0x11, 0xb6, 0x03, 0xfd, 0x34, 0xc2, 0xfe, 0xa0, 0x9d, 0xc1, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3f, 0x8d, 0x50, 0x30, 0xd0, 0x4f, 0x23, 0x34, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7e, 0x1a, 0xa1, 0x62, 0xa0, 0x9f, 0x46, 0x38, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa7, 0x11, 0xaa, 0x07, 0xfa, 0x69, 0x84, 0xfe, 0x83, 0x85, 0x26, 0x46, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa7, 0x11, 0xaa, 0x06, 0xfa, 0x69, 0x84, 0xd2, 0x83, 0x86, 0x7d, 0x46, 0x0e, 0x2b, 0xb4, 0xc7, 0xa1, 0x61, 0x37, 0x68, 0x40, 0x94, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xd4, 0x08, 0xc3, 0x81, 0x8e, 0x1a, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xce, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa3, 0x46, 0x98, 0x0f, 0x74, 0xd4, 0x08, 0x1d, 0x07, 0x23, 0xc8, 0xf3, 0x78, 0x3c, 0xec, 0x06, 0x6d, 0xd1, 0xd2, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x96, 0x1a, 0x61, 0x38, 0xd0, 0x52, 0x23, 0x9c, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa5, 0x46, 0x58, 0x0e, 0xb4, 0xd4, 0x08, 0xeb, 0x83, 0xe6, 0x2a, 0x5c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x4b, 0x8d, 0x30, 0x1f, 0x68, 0xa9, 0x11, 0xbe, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x52, 0x23, 0xec, 0x07, 0x5a, 0x6a, 0x84, 0x8e, 0x83, 0x76, 0x34, 0x5c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2d, 0x35, 0x42, 0xc9, 0x40, 0x4b, 0x8d, 0xd0, 0x39, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x4b, 0x8d, 0x50, 0x35, 0xd0, 0x52, 0x23, 0x94, 0x1d, 0x2c, 0xa8, 0xdd, 0x1f, 0x24, 0x03, 0xa1, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xd4, 0x08, 0x6d, 0x03, 0x2d, 0x35, 0x42, 0xe5, 0xc1, 0x58, 0xec, 0x3c, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2d, 0x35, 0x42, 0xe9, 0x40, 0x4b, 0x8d, 0x70, 0x65, 0x10, 0x6c, 0xb0, 0xd0, 0xc4, 0x68, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2d, 0x35, 0x42, 0xfb, 0x40, 0x4b, 0x8d, 0xf0, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xce, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa5, 0x46, 0x38, 0x31, 0xd0, 0x52, 0x23, 0x1c, 0x39, 0xa4, 0x0e, 0x0e, 0xc9, 0xa5, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x34, 0xec, 0x06, 0x2d, 0x07, 0xd4, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9e, 0x1a, 0x61, 0x38, 0xd0, 0x53, 0x23, 0x34, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x53, 0x23, 0x2c, 0x07, 0x7a, 0x6a, 0x84, 0xf5, 0x41, 0x2b, 0x11, 0x35, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9e, 0x1a, 0x61, 0x3e, 0xd0, 0x53, 0x23, 0x74, 0x1c, 0x24, 0x60, 0x0b, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0x35, 0x42, 0xc9, 0x40, 0x4f, 0x8d, 0x50, 0x38, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe7, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x53, 0x23, 0x54, 0x0d, 0xf4, 0xd4, 0x08, 0x7d, 0x07, 0x23, 0xc8, 0xf3, 0x78, 0x7c, 0x1c, 0x1a, 0x64, 0x1b, 0xb4, 0xaf, 0x52, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xa6, 0x1a, 0x61, 0x38, 0xd0, 0x55, 0x23, 0xbc, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xd5, 0x08, 0xe3, 0x81, 0xa6, 0x1a, 0xa1, 0x6f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xa6, 0x1a, 0x61, 0x3d, 0xd0, 0x54, 0x23, 0x54, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x54, 0x23, 0x74, 0x0c, 0x34, 0xd5, 0x08, 0x2d, 0x07, 0x0b, 0x6a, 0xf7, 0x07, 0xc9, 0xc0, 0xf4, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x6a, 0x84, 0x9a, 0x81, 0xa6, 0x1a, 0xa1, 0xe9, 0x90, 0x3a, 0x38, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xa6, 0x1a, 0xa1, 0x6b, 0xa0, 0xa9, 0x46, 0xa8, 0x3b, 0x24, 0x3b, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa9, 0x46, 0x68, 0x1c, 0x68, 0xaa, 0x11, 0x6a, 0x0f, 0xd6, 0x37, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xab, 0x46, 0x18, 0x1e, 0xb4, 0xf2, 0x64, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe7, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x55, 0x23, 0xf4, 0x0e, 0x74, 0xd5, 0x08, 0x27, 0x06, 0xc9, 0x60, 0x36, 0x88, 0x16, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0x35, 0xc2, 0x81, 0x81, 0xae, 0x1a, 0xe1, 0xc3, 0x21, 0xd9, 0x71, 0x10, 0xe4, 0xfc, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x55, 0x23, 0xcc, 0x07, 0xba, 0x6a, 0x84, 0xc6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x6a, 0x84, 0xfd, 0x40, 0x57, 0x8d, 0x50, 0x36, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x57, 0x8d, 0xd0, 0x32, 0xd0, 0x55, 0x23, 0xf4, 0x1c, 0x2c, 0xa8, 0xdd, 0x1f, 0x24, 0x83, 0x53, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xae, 0x1a, 0xa1, 0x68, 0xa0, 0xab, 0x46, 0xe8, 0x3a, 0xa4, 0x0e, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xab, 0x46, 0x68, 0x1b, 0xe8, 0xaa, 0x11, 0x0a, 0x0f, 0xc9, 0x8e, 0xe3, 0xd0, 0xf1, 0xf8, 0xf8, 0x36, 0xec, 0x06, 0x4d, 0x25, 0xe0, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xce, 0x1a, 0x21, 0x19, 0x68, 0xb4, 0x11, 0xb2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x6b, 0x84, 0x74, 0xa0, 0xb3, 0x46, 0xd8, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xb3, 0x46, 0x58, 0x1c, 0x34, 0xeb, 0x6b, 0x34, 0xfc, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xd6, 0x08, 0x93, 0x81, 0xce, 0x1a, 0x61, 0x75, 0xd0, 0xf0, 0xb6, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xac, 0x11, 0x66, 0x03, 0x9d, 0x35, 0xc2, 0xf4, 0xa0, 0x79, 0x65, 0x81, 0xe3, 0xd0, 0xf1, 0x6d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0x35, 0x42, 0x72, 0xd0, 0x48, 0xae, 0xd1, 0x20, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x6b, 0x8d, 0x90, 0x1e, 0x34, 0x92, 0x6b, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0x1a, 0x21, 0x39, 0x68, 0x24, 0xd7, 0x68, 0xd8, 0x0d, 0x9a, 0xf8, 0x9f, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0x35, 0xc2, 0x6c, 0xa0, 0xb9, 0x46, 0xd8, 0x1e, 0xac, 0x6f, 0x30, 0x1a, 0x76, 0x83, 0x96, 0x0f, 0x68, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x77, 0x8d, 0x30, 0x1b, 0xe8, 0xae, 0x11, 0xb6, 0x07, 0x0b, 0x4d, 0x8c, 0x86, 0xdd, 0xa0, 0xdd, 0x10, 0x9a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x5e, 0x23, 0xcc, 0x06, 0x1a, 0x6c, 0x84, 0xe5, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbd, 0x46, 0x98, 0x0e, 0xb4, 0xd7, 0x08, 0x6d, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xf6, 0x1a, 0x61, 0x3c, 0xd0, 0x5e, 0x23, 0x34, 0x1c, 0x8c, 0x20, 0xcf, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xd7, 0x08, 0x15, 0x03, 0xed, 0x35, 0x42, 0xd9, 0x86, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbd, 0x46, 0xe8, 0x38, 0x68, 0x69, 0xe1, 0xe8, 0xa0, 0x94, 0xd9, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x35, 0xc2, 0x70, 0xa0, 0xbf, 0x46, 0x58, 0x1f, 0xac, 0x6f, 0x30, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x83, 0x8d, 0x30, 0x3b, 0x68, 0x42, 0xdf, 0xe8, 0x90, 0xec, 0x18, 0x76, 0x83, 0x86, 0x17, 0x69, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x87, 0x8d, 0x30, 0x1b, 0xe8, 0xb0, 0x11, 0x96, 0x87, 0x64, 0xc7, 0xb0, 0x1b, 0x34, 0x6e, 0x49, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x6c, 0x84, 0xd9, 0x40, 0x8b, 0x8d, 0xb0, 0x3c, 0x24, 0x3b, 0x86, 0xdd, 0xa0, 0x01, 0x51, 0x9a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x63, 0x23, 0xcc, 0x06, 0x7a, 0x6c, 0x84, 0xbe, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x6c, 0x84, 0xdd, 0x40, 0x8f, 0x8d, 0xb0, 0x3d, 0x68, 0x63, 0x61, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x63, 0x23, 0x8c, 0x07, 0x7a, 0x6c, 0x84, 0x86, 0x83, 0x04, 0x6c, 0x81, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc7, 0x46, 0xa8, 0x18, 0xe8, 0xb1, 0x11, 0xea, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x6c, 0x84, 0xa2, 0x81, 0x1e, 0x1b, 0xa1, 0xed, 0x60, 0x04, 0x79, 0x1e, 0x8f, 0x8f, 0x43, 0xc3, 0x6e, 0xd0, 0x16, 0x2d, 0xcd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb2, 0x11, 0x66, 0x03, 0x4d, 0x36, 0xc2, 0x95, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x6c, 0x84, 0xdd, 0x40, 0x93, 0x8d, 0xb0, 0x3d, 0x68, 0xae, 0xc2, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xd9, 0x08, 0xe3, 0x81, 0x26, 0x1b, 0xe1, 0xc9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0x36, 0xc2, 0x7a, 0xa0, 0xc9, 0x46, 0x68, 0x38, 0x68, 0x47, 0xc3, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x64, 0x23, 0x54, 0x0c, 0x34, 0xd9, 0x08, 0x8d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xd9, 0x08, 0x45, 0x03, 0x4d, 0x36, 0x42, 0xd5, 0xc1, 0x82, 0xda, 0xfd, 0x41, 0x32, 0x10, 0xba, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x93, 0x8d, 0xd0, 0x35, 0xd0, 0x64, 0x23, 0x14, 0x1e, 0x8c, 0xc5, 0xce, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x64, 0x23, 0x54, 0x0e, 0x34, 0xd9, 0x08, 0x47, 0x06, 0xc1, 0x06, 0x0b, 0x4d, 0x8c, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x64, 0x23, 0x74, 0x0f, 0x34, 0xd9, 0x08, 0x3f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x6c, 0x84, 0x0b, 0x03, 0x4d, 0x36, 0xc2, 0x8d, 0x43, 0xea, 0xe0, 0x90, 0x5c, 0x3a, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0xc3, 0x6e, 0xd0, 0x72, 0x40, 0xcd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb2, 0x11, 0x66, 0x03, 0x5d, 0x36, 0x42, 0xdf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0x36, 0xc2, 0x6e, 0xa0, 0xcb, 0x46, 0xd8, 0x1e, 0xb4, 0x12, 0x51, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb2, 0x11, 0xc6, 0x03, 0x5d, 0x36, 0x42, 0xc3, 0x41, 0x02, 0xb6, 0xc0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x65, 0x23, 0x54, 0x0c, 0x74, 0xd9, 0x08, 0x75, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x70, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0x36, 0x42, 0xd1, 0x40, 0x97, 0x8d, 0xd0, 0x76, 0x30, 0x82, 0x3c, 0x8f, 0xc7, 0xc7, 0xa1, 0x41, 0xb6, 0x41, 0xfb, 0x2a, 0x35, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb3, 0x11, 0x66, 0x03, 0x7d, 0x36, 0xc2, 0x87, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x9b, 0x8d, 0x30, 0x1d, 0x68, 0xb3, 0x11, 0xda, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb3, 0x11, 0xb6, 0x03, 0x6d, 0x36, 0x42, 0xd1, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0x36, 0x42, 0xc3, 0x40, 0x9b, 0x8d, 0xd0, 0x71, 0xb0, 0xa0, 0x76, 0x7f, 0x90, 0x0c, 0x4c, 0xdf, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xcd, 0x46, 0x28, 0x19, 0x68, 0xb3, 0x11, 0x7a, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb3, 0x11, 0x9a, 0x06, 0xda, 0x6c, 0x84, 0xb2, 0x43, 0xb2, 0xe3, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x6c, 0x84, 0xbe, 0x81, 0x36, 0x1b, 0xa1, 0xf4, 0x60, 0x7d, 0x83, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x6c, 0x84, 0xd9, 0x41, 0xcb, 0xc6, 0x47, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x70, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x36, 0x42, 0xeb, 0x40, 0x9f, 0x8d, 0x70, 0x61, 0x90, 0x0c, 0x66, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x67, 0x23, 0xd4, 0x0f, 0xf4, 0xd9, 0x08, 0x0f, 0x0e, 0xc9, 0x8e, 0x83, 0x20, 0xe7, 0x1f, 0x44, 0x0b, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3e, 0x1b, 0x61, 0x3c, 0xd0, 0x67, 0x23, 0xf4, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x67, 0x23, 0xac, 0x07, 0xfa, 0x6c, 0x84, 0xaa, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x6c, 0x84, 0x8e, 0x81, 0x3e, 0x1b, 0xa1, 0xe5, 0x60, 0x41, 0xed, 0xfe, 0x20, 0x19, 0x9c, 0x1a, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd9, 0x08, 0x35, 0x03, 0x7d, 0x36, 0x42, 0xd3, 0x21, 0x75, 0x70, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x36, 0x42, 0xd7, 0x40, 0x9f, 0x8d, 0x50, 0x77, 0x48, 0x76, 0x1c, 0x87, 0x8e, 0xc7, 0xc7, 0xb7, 0x61, 0x37, 0x68, 0xad, 0xd2, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xda, 0x08, 0x93, 0x81, 0x56, 0x1b, 0xa1, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb5, 0x11, 0x96, 0x03, 0xad, 0x36, 0x42, 0xc5, 0xa1, 0x59, 0xd2, 0xf1, 0x78, 0xd8, 0x0d, 0x5a, 0x11, 0xd0, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0x36, 0xc2, 0x64, 0xa0, 0xd7, 0x46, 0xe8, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x6d, 0x84, 0xe5, 0x40, 0xaf, 0x8d, 0x50, 0x71, 0x68, 0x96, 0x74, 0x3c, 0x1e, 0x76, 0x83, 0x16, 0x74, 0x74, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xb3, 0x8d, 0x30, 0x19, 0x68, 0xb6, 0x11, 0x3a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x66, 0x1b, 0x61, 0x39, 0xd0, 0x6c, 0x23, 0x54, 0x1c, 0x9a, 0x25, 0x1d, 0x8f, 0x87, 0xdd, 0xa0, 0xb1, 0x2f, 0x9d, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x6e, 0x23, 0x4c, 0x06, 0xda, 0x6d, 0x84, 0x27, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x50, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x76, 0x1b, 0xa1, 0x68, 0xa0, 0xdd, 0x46, 0x38, 0x32, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xbb, 0x8d, 0xd0, 0x34, 0xd0, 0x6e, 0x23, 0xf4, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x6e, 0x23, 0x14, 0x0e, 0xb4, 0xdb, 0x08, 0x95, 0x07, 0x2d, 0x89, 0xce, 0x0c, 0x92, 0x81, 0xf4, 0xdd, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xdd, 0x46, 0xe8, 0x1c, 0x68, 0xb7, 0x11, 0x6a, 0x0f, 0x02, 0x13, 0xfb, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb7, 0x11, 0x8a, 0x07, 0xda, 0x6d, 0x84, 0xf6, 0x83, 0x65, 0x9c, 0x48, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xbb, 0x8d, 0x50, 0x3f, 0xd0, 0x6e, 0x23, 0xfc, 0x38, 0x34, 0x2e, 0x3a, 0x0e, 0x0d, 0xa2, 0x05, 0xeb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xdb, 0x08, 0xcb, 0x81, 0x76, 0x1b, 0xa1, 0xe2, 0xd0, 0x2c, 0xe9, 0x78, 0x3c, 0xec, 0x06, 0x4d, 0x6c, 0xea, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7e, 0x1b, 0x61, 0x32, 0xd0, 0x71, 0x23, 0xd4, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x6f, 0x23, 0x6c, 0x07, 0xfa, 0x6d, 0x84, 0x0f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xdb, 0x08, 0xe3, 0x81, 0x7e, 0x1b, 0xa1, 0x6a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7e, 0x1b, 0xa1, 0x63, 0xa0, 0xdf, 0x46, 0x68, 0x39, 0x68, 0x49, 0x74, 0x66, 0x90, 0x0c, 0xa4, 0xef, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x36, 0x42, 0xcd, 0x40, 0xbf, 0x8d, 0xd0, 0x74, 0x10, 0x98, 0xd8, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x6f, 0x23, 0x74, 0x0d, 0xf4, 0xdb, 0x08, 0x17, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb7, 0x11, 0x5a, 0x07, 0xfa, 0x6d, 0x84, 0xde, 0x83, 0x46, 0x96, 0x75, 0x06, 0xc9, 0xe0, 0xd6, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xdf, 0x46, 0x28, 0x1e, 0xe8, 0xb7, 0x11, 0x1e, 0x1c, 0x1a, 0x17, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb8, 0x11, 0x26, 0x07, 0xad, 0x5d, 0x22, 0x0d, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x6e, 0x84, 0xd9, 0x40, 0xc3, 0x8d, 0x50, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xc3, 0x8d, 0xb0, 0x1b, 0x68, 0xb8, 0x11, 0x5a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb8, 0x11, 0xe6, 0x03, 0x0d, 0x37, 0x42, 0xc1, 0x41, 0x53, 0xec, 0x3a, 0x83, 0x64, 0x70, 0x6e, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x70, 0x23, 0x34, 0x0c, 0x34, 0xdc, 0x08, 0x25, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xe1, 0x46, 0xa8, 0x19, 0x68, 0xb8, 0x11, 0x7a, 0x0e, 0x31, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x6e, 0x84, 0xa2, 0x81, 0x86, 0x1b, 0xa1, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb8, 0x11, 0xfa, 0x06, 0x1a, 0x6e, 0x84, 0xe2, 0x43, 0xa3, 0xa3, 0xe3, 0xf9, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xdc, 0x08, 0x93, 0x83, 0xd6, 0x2e, 0x91, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb8, 0x11, 0x36, 0x03, 0x1d, 0x37, 0x42, 0xc3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x37, 0xc2, 0x74, 0xa0, 0xe3, 0x46, 0x18, 0x1f, 0x34, 0xc5, 0xae, 0x33, 0x48, 0x06, 0xce, 0xba, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xc7, 0x8d, 0xb0, 0x1e, 0xe8, 0xb8, 0x11, 0x0a, 0x0e, 0xf1, 0x3f, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8e, 0x1b, 0xa1, 0x62, 0xa0, 0xe3, 0x46, 0x68, 0x39, 0x0e, 0x1d, 0x87, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xa0, 0xe1, 0x98, 0x9d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xdc, 0x08, 0x93, 0x81, 0x96, 0x1b, 0x61, 0x75, 0xc8, 0xda, 0x1d, 0xdf, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xe0, 0xc3, 0xe4, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x82, 0x22, 0x24, 0x03, 0x2d, 0x28, 0x42, 0x76, 0x48, 0x2e, 0xad, 0x41, 0x23, 0x02, 0x29, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x42, 0x11, 0x06, 0x03, 0x4d, 0x28, 0xc2, 0xe8, 0x60, 0xdc, 0x41, 0xad, 0x41, 0xf3, 0xc5, 0x2a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x42, 0x11, 0x06, 0x03, 0x5d, 0x28, 0xc2, 0xe8, 0xa0, 0x64, 0x68, 0x5a, 0x83, 0xc5, 0xfe, 0x3e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x43, 0x11, 0x06, 0x03, 0x6d, 0x28, 0xc2, 0xe8, 0x60, 0x2d, 0x9f, 0x40, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0xb4, 0xcf, 0x06, 0xb0, 0x38, 0x08, 0x16, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0x32, 0x30, 0x57, 0x07, 0xc3, 0x51, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcb, 0xe1, 0x8c, 0x16, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0xc0, 0xaa, 0xdc, 0xc1, 0x78, 0xd7, 0x39, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x10, 0x55, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa6, 0xd8, 0x45, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xa3, 0x51, 0x60, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0xd0, 0x36, 0xba, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x34, 0xaf, 0x2c, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x20, 0xf8, 0xe5, 0x0e, 0xc6, 0xbb, 0xce, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0xfa, 0x53, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x87, 0xdd, 0xb0, 0x82, 0xba, 0x86, 0x18, 0x6e, 0x88, 0xe1, 0x41, 0xc0, 0x61, 0x0f, 0x82, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x20, 0x3d, 0x74, 0x0c, 0x3b, 0x9e, 0x0f, 0xbb, 0xc1, 0x22, 0x8f, 0xa0, 0x85, 0xdd, 0x60, 0xa1, 0x16, 0xd7, 0xc6, 0xa1, 0x41, 0xb6, 0x41, 0x5b, 0x40, 0x29, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x10, 0x76, 0x7f, 0x83, 0x68, 0x61, 0x0f, 0x02, 0x37, 0xfe, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xc8, 0x5c, 0x7f, 0xf8, 0x8d, 0xe7, 0x1b, 0x2c, 0xe3, 0x44, 0xda, 0xd0, 0x02, 0xe8, 0x10, 0xc3, 0xe3, 0xd0, 0x86, 0xa3, 0x7d, 0xc3, 0xd1, 0xbe, 0x41, 0x48, 0x81, 0x0f, 0x82, 0x0d, 0x5a, 0x90, 0x7e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x96, 0x74, 0x18, 0x97, 0xe3, 0xd0, 0x20, 0xdb, 0x60, 0x1d, 0x6d, 0xff, 0xf0, 0x0b, 0xa2, 0x05, 0xf7, 0x87, 0xdf, 0x78, 0x3c, 0xec, 0xc2, 0x1d, 0x2c, 0xfd, 0xbb, 0xd9, 0x20, 0x0c, 0xe4, 0x07, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0xb7, 0xe1, 0x68, 0x3f, 0x08, 0xdc, 0xf8, 0x41, 0xb0, 0x41, 0x2b, 0xf4, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0xc7, 0x1f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x2a, 0xbb, 0xff, 0x41, 0x32, 0x10, 0xba, 0x41, 0xb4, 0xb0, 0x07, 0x67, 0xf5, 0xf3, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xd0, 0xed, 0x3b, 0x18, 0x8e, 0xd2, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0xd5, 0x70, 0xb4, 0x6f, 0x10, 0x64, 0xf1, 0xc3, 0x2e, 0xec, 0x42, 0x0f, 0x2d, 0x80, 0x0e, 0xeb, 0x9b, 0x6b, 0x38, 0xda, 0x37, 0xc4, 0x70, 0x10, 0x2c, 0x48, 0x06, 0xd6, 0xeb, 0x0e, 0x86, 0xa3, 0xf4, 0x41, 0x7a, 0xd1, 0xc5, 0xa1, 0x05, 0xd0, 0xf1, 0x7c, 0xd8, 0x0d, 0x5a, 0xce, 0x4c, 0x5a, 0x43, 0x0c, 0xd7, 0x60, 0xb5, 0x1e, 0xd7, 0x41, 0x90, 0xc5, 0x6f, 0x88, 0xe1, 0x20, 0x58, 0x90, 0x0c, 0x1c, 0x7f, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xb2, 0xe3, 0x60, 0x64, 0xf6, 0x1e, 0x87, 0x06, 0xc1, 0xc2, 0x2f, 0x08, 0x36, 0x68, 0xbd, 0x61, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0xd0, 0x92, 0xc5, 0xca, 0x71, 0xe8, 0xf8, 0x36, 0x08, 0x16, 0x17, 0x76, 0x83, 0x05, 0xa2, 0xfe, 0x1b, 0x9c, 0x56, 0x70, 0x0f, 0xc6, 0x32, 0xd4, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0xb8, 0x21, 0xf7, 0x3d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x0e, 0x6e, 0x0e, 0x9e, 0x0e, 0xee, 0x0e, 0x4e, 0x0e, 0xda, 0x06, 0x37, 0x07, 0x7f, 0x07, 0x97, 0x0f, 0x92, 0xa8, 0xab, 0x8e, 0x6f, 0xc7, 0xe3, 0x61, 0x37, 0xa4, 0x33, 0x37, 0x44, 0x73, 0xd8, 0x0d, 0x79, 0xac, 0x0d, 0xe3, 0x32, 0xec, 0x86, 0x5d, 0x83, 0x0d, 0xd1, 0x1c, 0x76, 0x83, 0x92, 0xe8, 0x70, 0x61, 0x17, 0x76, 0x83, 0x61, 0xca, 0xbb, 0xb0, 0x0b, 0xb7, 0xe1, 0x68, 0x3f, 0x34, 0xd4, 0x59, 0xd8, 0x0d, 0x9a, 0xf7, 0x82, 0x59, 0xd8, 0x85, 0xdb, 0xe0, 0x4c, 0x82, 0x7e, 0x70, 0x56, 0x3f, 0x3f, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x6b, 0x38, 0xda, 0x37, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0xd1, 0x77, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x70, 0x8c, 0x9c, 0xde, 0x20, 0xec, 0xa9, 0x0f, 0x06, 0x7e, 0xc8, 0x71, 0xe8, 0xe0, 0x4c, 0x82, 0x7e, 0x38, 0xc5, 0x86, 0xdd, 0x20, 0x48, 0xbc, 0x17, 0x76, 0x83, 0x43, 0x1e, 0xfa, 0xc2, 0x2e, 0xec, 0x06, 0xeb, 0x64, 0xf6, 0x17, 0x76, 0xe1, 0x36, 0xc4, 0xf0, 0xd0, 0x84, 0xeb, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x6b, 0x88, 0xe1, 0x86, 0x86, 0x3a, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x68, 0xc2, 0x3d, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xb1, 0xbe, 0x7e, 0x83, 0x12, 0x7b, 0xf0, 0x60, 0xe0, 0x87, 0x1c, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x9a, 0xe9, 0x24, 0x59, 0xd8, 0x85, 0xdb, 0x70, 0xb4, 0x1f, 0x9a, 0x70, 0x1d, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x61, 0x17, 0x6e, 0x83, 0xc5, 0x6d, 0xfb, 0x87, 0x66, 0x3c, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0xf6, 0x7c, 0x06, 0x06, 0xc9, 0x40, 0xb8, 0x0e, 0x5a, 0x52, 0x25, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x24, 0x18, 0x20, 0x1c, 0x87, 0x36, 0xc4, 0x70, 0x83, 0xd4, 0xf5, 0x81, 0x0d, 0x47, 0xfb, 0x06, 0x0b, 0x0c, 0xf7, 0x8f, 0x43, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x3c, 0x5e, 0xd8, 0x0d, 0x16, 0x79, 0xfa, 0xaf, 0x21, 0x86, 0x6b, 0x88, 0xe1, 0x86, 0x05, 0xd1, 0x43, 0x0f, 0xa1, 0x0d, 0x31, 0x3c, 0x18, 0x88, 0xd4, 0x1b, 0x8e, 0xf6, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x2c, 0x23, 0x2c, 0x39, 0x58, 0x52, 0xd5, 0xbf, 0xb0, 0x1b, 0x34, 0xdf, 0xc0, 0xb2, 0x21, 0x86, 0xc3, 0x6e, 0xd0, 0x50, 0x04, 0xcb, 0x06, 0x25, 0x43, 0xd3, 0xb0, 0x1b, 0xb4, 0xb7, 0x17, 0xb3, 0x41, 0xc9, 0xd0, 0x34, 0xec, 0x06, 0xad, 0x81, 0xb0, 0x2c, 0xec, 0x06, 0x0b, 0x44, 0xfd, 0x37, 0x38, 0xad, 0xe0, 0x0e, 0x82, 0x05, 0xc9, 0xa0, 0x6e, 0x10, 0x2d, 0x30, 0xfe, 0x07, 0xe9, 0x8d, 0x0d, 0x83, 0x68, 0xc1, 0x78, 0x10, 0x6c, 0xd0, 0xe6, 0xd4, 0xc8, 0xc1, 0xa1, 0x11, 0xf8, 0x78, 0x3c, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x43, 0x0c, 0x87, 0x5d, 0xd8, 0x0d, 0x16, 0xc0, 0xfa, 0x6c, 0x88, 0xe1, 0xb0, 0x1b, 0xb4, 0x76, 0x02, 0x70, 0x48, 0xe7, 0x6e, 0x1c, 0x1a, 0x24, 0x83, 0xba, 0x41, 0xb4, 0xc0, 0xf8, 0x1f, 0x2c, 0xda, 0x18, 0x1b, 0x44, 0x0b, 0x84, 0xfb, 0x60, 0xb0, 0xc6, 0x0e, 0xa2, 0x05, 0xe3, 0x41, 0xb0, 0x20, 0x19, 0xd4, 0x1d, 0x9c, 0xce, 0x90, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x92, 0x1d, 0x07, 0x43, 0xb1, 0xe8, 0x38, 0x74, 0x3c, 0x1f, 0x76, 0x83, 0x76, 0x31, 0x63, 0x16, 0x76, 0x83, 0x05, 0xa2, 0xfe, 0x1b, 0x9c, 0x56, 0x70, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x04, 0x55, 0xdf, 0xc1, 0xf0, 0x8f, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0xae, 0x71, 0xc8, 0x04, 0xff, 0xfd, 0x1f, 0x87, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0xae, 0x21, 0x86, 0x07, 0xc9, 0x1a, 0x08, 0xc3, 0x2e, 0xdc, 0x41, 0x6b, 0x5b, 0x4a, 0x1b, 0x9c, 0x0b, 0xb1, 0x37, 0xc4, 0x70, 0x10, 0x6c, 0xb0, 0xf4, 0x7f, 0xec, 0xa0, 0x81, 0x43, 0x93, 0xe1, 0x17, 0x44, 0x0b, 0x8c, 0xfb, 0x41, 0x08, 0x80, 0x1f, 0x8f, 0x87, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xbb, 0x41, 0xeb, 0x7c, 0x00, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0xf6, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x25, 0x41, 0xc3, 0x04, 0xc2, 0xf6, 0xff, 0x38, 0x34, 0xec, 0x06, 0x21, 0x05, 0xbe, 0xb0, 0x1b, 0x84, 0x00, 0xf8, 0x82, 0x64, 0x50, 0x37, 0x88, 0x36, 0x68, 0x7c, 0x86, 0x65, 0x10, 0x2d, 0x18, 0x0f, 0x82, 0x0d, 0xda, 0x70, 0x18, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xa4, 0xf8, 0x07, 0x43, 0xb1, 0xe8, 0x38, 0x74, 0x48, 0x2e, 0x0d, 0x92, 0x41, 0xdd, 0x20, 0x5a, 0x60, 0xfc, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0xf8, 0x1b, 0x44, 0x0b, 0x7b, 0x90, 0x76, 0xc1, 0x70, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9c, 0x19, 0x97, 0x0f, 0x8d, 0xe7, 0x8f, 0x43, 0x83, 0x68, 0xc1, 0x78, 0x10, 0x6c, 0xd0, 0x86, 0xc3, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x20, 0xc5, 0x3f, 0x18, 0xb2, 0xe7, 0xc7, 0xa1, 0x43, 0x72, 0x69, 0x90, 0x0c, 0xfa, 0x0e, 0xc9, 0xa5, 0x0d, 0x31, 0x5c, 0x43, 0x4a, 0xe0, 0xd0, 0x02, 0x68, 0x10, 0x2c, 0xec, 0xc2, 0x6d, 0xb0, 0x96, 0x52, 0x6a, 0x82, 0xd7, 0xfe, 0xd7, 0x60, 0x2d, 0xa5, 0xd4, 0xc1, 0x60, 0x8d, 0x1d, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xdc, 0x06, 0x2b, 0x20, 0xa5, 0x0e, 0x9a, 0x91, 0x54, 0xda, 0x60, 0x05, 0xa4, 0xd4, 0xc1, 0x60, 0x8d, 0xdd, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x68, 0xc3, 0x61, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0xf1, 0xfc, 0xa1, 0x87, 0xd0, 0x71, 0x68, 0x0d, 0xce, 0xb2, 0xc7, 0xc7, 0xa1, 0x43, 0x62, 0x6a, 0xd8, 0x0d, 0x5a, 0xad, 0x62, 0x59, 0x90, 0x0c, 0xea, 0x06, 0xd1, 0x02, 0xe3, 0x7f, 0xd0, 0xce, 0x67, 0xcc, 0xf1, 0x78, 0xd8, 0x0d, 0x9a, 0x55, 0x62, 0x59, 0xd8, 0x0d, 0x16, 0x88, 0xfa, 0x6f, 0xd0, 0x02, 0x18, 0xcb, 0xf0, 0x1b, 0x8f, 0x87, 0x5d, 0xd8, 0x85, 0x1e, 0xa4, 0x37, 0x36, 0x1c, 0xd6, 0x37, 0x17, 0x76, 0xe1, 0x36, 0x48, 0x30, 0x40, 0x38, 0x48, 0x6f, 0x6c, 0xd8, 0xa0, 0x05, 0x30, 0x96, 0x83, 0xb1, 0x0c, 0x35, 0x08, 0x16, 0x17, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x6d, 0xd8, 0x0a, 0x0c, 0x92, 0x81, 0xe2, 0x37, 0x88, 0x16, 0xf6, 0xe0, 0x5c, 0x63, 0x7e, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0xa4, 0xc6, 0x74, 0x1c, 0x87, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x50, 0xf0, 0x3b, 0x0d, 0xbb, 0x41, 0x68, 0xb9, 0x2f, 0x48, 0x06, 0x75, 0x83, 0x68, 0x83, 0x86, 0x80, 0x58, 0x06, 0xd1, 0x02, 0xe1, 0x1e, 0xe6, 0x20, 0xcd, 0x3d, 0x63, 0x10, 0x2d, 0xa8, 0x3e, 0x38, 0xc9, 0x71, 0x1f, 0x92, 0x4b, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0xa4, 0xb9, 0x67, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xf5, 0xbb, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0xcc, 0xb8, 0x7c, 0x10, 0x94, 0xde, 0xc7, 0xa1, 0x61, 0x37, 0x58, 0x00, 0xeb, 0xb3, 0x86, 0x18, 0x2e, 0x08, 0x36, 0x58, 0xfd, 0x29, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x48, 0x70, 0xf8, 0x8d, 0xe7, 0x1b, 0x62, 0xb8, 0x86, 0x18, 0x1e, 0x04, 0x29, 0xfe, 0xc1, 0x18, 0x7b, 0x3a, 0x0e, 0x1d, 0x0c, 0xd6, 0xd8, 0x41, 0xb6, 0xc1, 0x52, 0x8e, 0xa0, 0x0d, 0x47, 0xfb, 0x86, 0xa3, 0x7d, 0x83, 0x20, 0x8b, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xe1, 0x3b, 0x38, 0x66, 0x15, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0x7b, 0xd9, 0x4a, 0x07, 0x41, 0xe9, 0x7d, 0x1c, 0x1a, 0x24, 0xc3, 0x0d, 0xa2, 0x05, 0xc6, 0x7d, 0x10, 0x2c, 0x48, 0x06, 0xd2, 0x2b, 0x07, 0xe7, 0xbc, 0xe3, 0x83, 0x76, 0xc7, 0x4d, 0x8e, 0xe7, 0x83, 0x60, 0x71, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x83, 0x53, 0x73, 0xf9, 0x82, 0x64, 0x50, 0x37, 0x88, 0x36, 0x68, 0x08, 0x88, 0xe5, 0xa0, 0x19, 0x63, 0xa5, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xbb, 0xbf, 0x41, 0xb4, 0xb0, 0x07, 0x65, 0x83, 0xd0, 0xc1, 0x30, 0xf4, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xc8, 0x5c, 0x7f, 0x02, 0x41, 0xfd, 0x7f, 0x1c, 0x1a, 0x04, 0x0b, 0x92, 0x41, 0xdd, 0x20, 0x5a, 0x60, 0xfc, 0x0f, 0x42, 0x0a, 0x7c, 0x10, 0x6d, 0x30, 0xd2, 0xe7, 0x07, 0xd1, 0x82, 0xf1, 0xe1, 0x68, 0x1f, 0x44, 0x0b, 0x7b, 0x88, 0xe1, 0x61, 0x85, 0x76, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x86, 0x18, 0x0e, 0xbb, 0xb0, 0x1b, 0x8c, 0x8e, 0xf5, 0x85, 0xdd, 0x60, 0x91, 0x47, 0xd0, 0xc2, 0x6e, 0xb0, 0x66, 0x28, 0x65, 0x83, 0x85, 0x5a, 0x5c, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x40, 0xd7, 0xff, 0x09, 0x8c, 0xf5, 0xff, 0x41, 0xb4, 0x40, 0xb9, 0x3f, 0x18, 0xac, 0xb1, 0x87, 0xe4, 0xd2, 0x20, 0x58, 0xd8, 0x0d, 0x16, 0xc0, 0xfa, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x46, 0xdf, 0xdf, 0xc1, 0x70, 0x94, 0x3e, 0x18, 0x9a, 0xae, 0x83, 0x6c, 0x83, 0xa5, 0x1c, 0x41, 0x83, 0x60, 0x83, 0x46, 0x2f, 0x96, 0x0e, 0x1a, 0x2e, 0x4a, 0xd9, 0x70, 0xb4, 0x6f, 0x38, 0xda, 0x37, 0x08, 0x29, 0xf0, 0x41, 0xb0, 0x20, 0x19, 0x18, 0xbe, 0x83, 0xd3, 0x19, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xda, 0x0d, 0x59, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x31, 0x3c, 0x28, 0x09, 0x1a, 0x0e, 0x6b, 0xbf, 0xc7, 0xa1, 0xc3, 0xb8, 0x1c, 0x87, 0x8e, 0x6f, 0x07, 0x25, 0x43, 0xd3, 0xb0, 0x1b, 0xb4, 0x3b, 0xc6, 0xb2, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x26, 0x1b, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf6, 0xe0, 0x58, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x68, 0x62, 0xb4, 0x38, 0x48, 0x06, 0x75, 0x07, 0x2d, 0xe5, 0xb1, 0x1c, 0x8f, 0x8f, 0x43, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x37, 0xc4, 0x70, 0x10, 0x2c, 0x0e, 0xbb, 0x61, 0xd7, 0x60, 0x43, 0x34, 0x07, 0xc1, 0x06, 0x23, 0x01, 0xe7, 0xa0, 0x28, 0x40, 0x3b, 0xbe, 0x0d, 0xb2, 0x0d, 0x1a, 0xed, 0x63, 0x19, 0x76, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0xd1, 0xe5, 0x90, 0x83, 0x16, 0x0b, 0x48, 0x0e, 0x4a, 0xab, 0xa4, 0x0d, 0x31, 0x1c, 0x24, 0x83, 0xba, 0x41, 0xb4, 0x41, 0xcb, 0xa5, 0x4a, 0x83, 0x68, 0x61, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x46, 0x97, 0x43, 0x0e, 0x0a, 0x46, 0x87, 0x83, 0xd2, 0x2a, 0xe9, 0x78, 0xbc, 0xe1, 0x68, 0x3f, 0x58, 0xee, 0xe9, 0x7f, 0x30, 0x42, 0xa2, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x37, 0x7b, 0x73, 0x23, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0x7d, 0x36, 0x80, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x8d, 0x68, 0xff, 0x21, 0xd1, 0x3a, 0xc8, 0xd6, 0x90, 0xc7, 0x1e, 0x03, 0x3c, 0xcd, 0xca, 0xdc, 0xc8, 0x5a, 0xcc, 0xe4, 0xc2, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0x61, 0x17, 0x76, 0x83, 0x05, 0xb0, 0x3e, 0x0b, 0xbb, 0x41, 0xcb, 0x99, 0x49, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x5f, 0x83, 0x30, 0x90, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xed, 0xba, 0xc3, 0x0a, 0xed, 0xc1, 0x4a, 0xdc, 0x9f, 0xc3, 0x29, 0x76, 0x3c, 0x5e, 0x10, 0x6c, 0xd0, 0x42, 0xb3, 0xca, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0xee, 0x4e, 0xcc, 0x41, 0xb2, 0xa1, 0xc1, 0x20, 0x58, 0xf8, 0x05, 0xc1, 0x06, 0x4d, 0x90, 0x8b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x1b, 0x5d, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x06, 0xcb, 0x8c, 0x8e, 0x0e, 0x86, 0x7f, 0xec, 0x41, 0xeb, 0x6e, 0x49, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x6d, 0xd8, 0x0d, 0xd6, 0x21, 0x08, 0x2d, 0x08, 0x16, 0x04, 0x8b, 0xc3, 0x6e, 0x30, 0x0e, 0x99, 0xd6, 0x60, 0x04, 0x79, 0x1e, 0x52, 0x07, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x10, 0x76, 0x7f, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x91, 0xb9, 0xfe, 0xc1, 0x19, 0x20, 0xfb, 0x38, 0x34, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xbd, 0xbb, 0x41, 0xb4, 0xb0, 0x07, 0x4d, 0x22, 0xda, 0x1c, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x62, 0xb6, 0xe0, 0x10, 0xcd, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x98, 0xf9, 0x83, 0x10, 0x00, 0x1f, 0x44, 0x1b, 0x94, 0xbc, 0x74, 0x83, 0x68, 0x61, 0xd7, 0x20, 0xa4, 0xc0, 0x0f, 0xe3, 0x72, 0xd8, 0x2b, 0x3c, 0x24, 0x97, 0x8e, 0x6f, 0x1b, 0x84, 0x14, 0xf8, 0x20, 0x58, 0x90, 0x0c, 0xb4, 0xeb, 0x3b, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x7b, 0x85, 0x87, 0x71, 0x39, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0xab, 0xec, 0xfe, 0x07, 0xc9, 0x40, 0xe8, 0x06, 0xd1, 0xc2, 0x1e, 0x2c, 0x67, 0x12, 0x3a, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0xe2, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x07, 0x21, 0xe2, 0xbf, 0x41, 0x5a, 0xc2, 0xc2, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x84, 0xdd, 0xdf, 0x41, 0xc0, 0xfb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x64, 0xae, 0x7f, 0x70, 0x60, 0xd0, 0x3e, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xe0, 0xb9, 0xbf, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0x82, 0xa4, 0xff, 0x86, 0x68, 0x1e, 0xf6, 0x0a, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x20, 0xfa, 0x07, 0x05, 0xfa, 0xce, 0x20, 0x5a, 0x10, 0x6f, 0xd0, 0xb8, 0xe5, 0xd2, 0x41, 0x60, 0x62, 0x1f, 0x34, 0xcc, 0xaf, 0x72, 0x7c, 0x5b, 0x10, 0x6c, 0x30, 0x82, 0x4f, 0x0f, 0x86, 0xb1, 0xc3, 0x06, 0xe7, 0x96, 0xe2, 0x0d, 0x56, 0xef, 0x0c, 0x0d, 0x82, 0x05, 0xc9, 0x40, 0xbb, 0xbe, 0x83, 0xe1, 0x1f, 0x7b, 0x30, 0xd6, 0x9c, 0x8f, 0xc7, 0x83, 0x60, 0x83, 0x85, 0x26, 0x46, 0x8b, 0xc3, 0x2e, 0xec, 0xc2, 0x6e, 0x10, 0x3c, 0xdc, 0x87, 0xf5, 0xcd, 0x83, 0xb5, 0x91, 0xfd, 0x87, 0x86, 0x9b, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf8, 0x3a, 0x7a, 0xc3, 0x0a, 0xed, 0x02, 0x1f, 0x26, 0x0f, 0x92, 0x81, 0xa7, 0xff, 0x8e, 0xc7, 0x6b, 0x90, 0xe4, 0xbb, 0x79, 0xc8, 0xda, 0xad, 0xc1, 0x01, 0x00, 0xeb, 0xd0, 0x43, 0x68, 0x01, 0xcf, 0xae, 0x8c, 0x3e, 0x74, 0x0c, 0x5b, 0xc0, 0x17, 0x63, 0x7b, 0xbb, 0x07, 0xc9, 0xc0, 0xfe, 0xdd, 0xf1, 0x78, 0x01, 0x5f, 0xac, 0x4e, 0x0e, 0x3e, 0x38, 0xbc, 0xd3, 0xae, 0xc1, 0x2a, 0x76, 0xff, 0x83, 0x65, 0x2d, 0x6c, 0x6b, 0xd0, 0x24, 0x1b, 0xc9, 0x41, 0xca, 0xc7, 0xc5, 0x1a, 0x34, 0xac, 0x44, 0x72, 0x70, 0x92, 0xe7, 0x5d, 0xc0, 0x27, 0xab, 0x1b, 0x5b, 0x07, 0xc9, 0xc0, 0xd1, 0x77, 0x3c, 0x5e, 0xc0, 0x27, 0xab, 0x73, 0x2b, 0x07, 0xc9, 0x40, 0xbe, 0xee, 0x78, 0xbc, 0x80, 0x4f, 0x56, 0xe7, 0xb6, 0x0e, 0x92, 0x81, 0xd4, 0xdf, 0xf1, 0x78, 0x0d, 0x5a, 0x89, 0x6a, 0x19, 0x24, 0x03, 0xed, 0xfa, 0x8e, 0xc7, 0x6b, 0xd0, 0xe0, 0x8b, 0xcc, 0x20, 0x19, 0x38, 0xff, 0x8e, 0xc7, 0x6b, 0xd0, 0x44, 0x96, 0xcb, 0x20, 0x19, 0x58, 0xfb, 0x3b, 0x1e, 0x2f, 0xe0, 0x9b, 0x95, 0x95, 0xb1, 0x83, 0x64, 0xe0, 0xbc, 0x3b, 0x1e, 0x2f, 0xe0, 0x9b, 0x95, 0xb1, 0xd1, 0x07, 0xab, 0x7b, 0x61, 0xd6, 0xa0, 0x9d, 0xfc, 0x98, 0x41, 0x32, 0x60, 0xf4, 0xfd, 0x1d, 0x8f, 0x17, 0xf0, 0xcd, 0xd2, 0xe4, 0xca, 0x83, 0x92, 0xa1, 0x69, 0x0d, 0x1a, 0x11, 0x48, 0x19, 0x24, 0x03, 0x6b, 0x77, 0xc7, 0xe3, 0x35, 0x68, 0x90, 0x6a, 0x69, 0x90, 0x0c, 0x7c, 0xfd, 0x77, 0x3c, 0x5e, 0x83, 0x96, 0x46, 0x55, 0x06, 0xc9, 0xc0, 0xfa, 0xdd, 0xf1, 0x78, 0x0d, 0x4a, 0x4d, 0xcb, 0x41, 0x32, 0x60, 0xe9, 0x7f, 0xd7, 0x21, 0x5b, 0xb1, 0x06, 0xcd, 0xb0, 0xa1, 0x0c, 0x92, 0x81, 0xaf, 0xee, 0x8e, 0xc7, 0x6b, 0xd0, 0x7c, 0xb1, 0xca, 0x20, 0x19, 0x18, 0xbe, 0xe3, 0xf1, 0x1a, 0x2c, 0xf6, 0xf7, 0x19, 0x24, 0x03, 0x06, 0xdf, 0xdf, 0xf1, 0x78, 0x01, 0xbf, 0x2d, 0x8d, 0xad, 0x3c, 0x58, 0xbd, 0x89, 0xb6, 0x80, 0xdf, 0x96, 0xe6, 0x56, 0x0e, 0x92, 0x81, 0xa1, 0x3b, 0x1e, 0xaf, 0x41, 0x2b, 0x35, 0x31, 0x83, 0x64, 0x40, 0xd8, 0xfd, 0x1d, 0x8f, 0x17, 0xf0, 0xdb, 0xde, 0xde, 0xe8, 0x41, 0x32, 0x20, 0xfc, 0xfe, 0x8e, 0xc7, 0x6b, 0xd0, 0x02, 0x02, 0xca, 0x20, 0x19, 0x78, 0xea, 0xee, 0x78, 0xbc, 0x06, 0x0d, 0x16, 0x0a, 0x1c, 0x9c, 0xc2, 0x70, 0x17, 0xf0, 0xe1, 0xca, 0xca, 0xd8, 0x41, 0x32, 0x50, 0xfb, 0x8e, 0xc7, 0x6b, 0xd0, 0xc2, 0xa2, 0xca, 0x20, 0x19, 0x48, 0xdf, 0x1d, 0x8f, 0xd7, 0xa0, 0x55, 0x20, 0x97, 0x41, 0x32, 0x70, 0xfc, 0x1d, 0x8f, 0x17, 0xf0, 0xe5, 0xca, 0xe0, 0xde, 0x83, 0xd3, 0x0a, 0xee, 0x1a, 0x34, 0x7e, 0xd4, 0x72, 0xd0, 0x84, 0x25, 0xc0, 0x1a, 0xac, 0x1a, 0xec, 0x3f, 0x38, 0x3f, 0xd1, 0xae, 0x41, 0x4b, 0x0c, 0x29, 0x83, 0x64, 0x60, 0xef, 0xee, 0x78, 0xbc, 0x86, 0xf6, 0xeb, 0x83, 0x64, 0xe0, 0xb9, 0xbf, 0xe3, 0xf1, 0x1a, 0xb4, 0x39, 0x26, 0x33, 0x48, 0x06, 0x96, 0xff, 0x8e, 0xc7, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0xb4, 0x67, 0x01, 0xb0, 0x38, 0xec, 0x82, 0x60, 0x41, 0xb0, 0xc1, 0x62, 0xda, 0x99, 0x41, 0x32, 0x38, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x62, 0xda, 0x99, 0x41, 0x32, 0x70, 0xfc, 0x1d, 0x92, 0x73, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x9a, 0x6f, 0x49, 0x39, 0x18, 0xb2, 0xe7, 0xc7, 0xa1, 0xe3, 0xd0, 0xc1, 0xa8, 0xc2, 0x5e, 0x10, 0x2c, 0x08, 0x36, 0x58, 0x4c, 0x3b, 0x33, 0x48, 0x06, 0xd2, 0x77, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xc1, 0xc2, 0x19, 0xa3, 0x43, 0x62, 0xf3, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xb8, 0x41, 0x59, 0xf2, 0xbe, 0xe1, 0x14, 0xdb, 0x38, 0x74, 0xb8, 0xba, 0x8e, 0x43, 0x87, 0x53, 0xec, 0x78, 0xbc, 0x82, 0x60, 0x83, 0x85, 0x26, 0x46, 0x8b, 0xc3, 0x6e, 0xb0, 0x3c, 0xcd, 0x7f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x20, 0xd8, 0x60, 0x31, 0xed, 0xcc, 0x20, 0x19, 0xcc, 0x0e, 0xed, 0x5b, 0x8e, 0xc7, 0xc3, 0x6e, 0xb0, 0x9e, 0xc9, 0x7f, 0x83, 0x86, 0xc2, 0x98, 0x86, 0xdd, 0x60, 0xc1, 0x7d, 0xff, 0x82, 0x60, 0x41, 0x32, 0x60, 0xe9, 0x7b, 0xdf, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x08, 0x0c, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x21, 0x00, 0x39, 0x48, 0x06, 0xc2, 0x75, 0xd0, 0x14, 0x85, 0xd2, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x10, 0x2c, 0x48, 0x36, 0x18, 0x24, 0x2f, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x43, 0xce, 0x7a, 0x90, 0x0c, 0x84, 0xeb, 0xd0, 0x18, 0xec, 0x60, 0x11, 0x4e, 0xd1, 0x71, 0xe8, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x0d, 0xcd, 0xd7, 0x0f, 0x31, 0x3c, 0x1e, 0x0f, 0x82, 0xc5, 0x0d, 0xce, 0x45, 0x07, 0x07, 0xcb, 0x3c, 0xfb, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xc1, 0x62, 0xda, 0x99, 0x41, 0x32, 0xf0, 0xf5, 0xdf, 0xa1, 0x31, 0xd8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xd6, 0x6e, 0xf8, 0x8d, 0xe7, 0x07, 0x2d, 0xb7, 0xa6, 0x1c, 0x87, 0x86, 0xdd, 0x60, 0x74, 0xac, 0x6f, 0xb0, 0x00, 0xd6, 0xe7, 0x70, 0xb4, 0x1f, 0x8f, 0x87, 0x5f, 0x10, 0x6c, 0xb0, 0x9a, 0xe3, 0x68, 0x71, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0x38, 0x08, 0x16, 0x24, 0x03, 0xe9, 0x9f, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x10, 0x9e, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x26, 0xf0, 0xe7, 0xca, 0xd8, 0xd8, 0xe1, 0x37, 0x9e, 0x8f, 0x07, 0xcd, 0x92, 0x32, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x94, 0x9f, 0x43, 0x72, 0x69, 0x90, 0x0c, 0xfe, 0x1d, 0x92, 0x73, 0x87, 0x0e, 0x1a, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0xb8, 0x41, 0xb3, 0xa4, 0x4c, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0x42, 0x13, 0xa3, 0x83, 0xb1, 0x6b, 0xb5, 0x20, 0xd8, 0xa0, 0x3d, 0x0b, 0x80, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x31, 0xed, 0xcc, 0x20, 0x19, 0x9c, 0x3b, 0x24, 0xe7, 0x0e, 0x46, 0x15, 0xf6, 0xf1, 0x78, 0x41, 0x32, 0x50, 0x7c, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x58, 0xcd, 0x71, 0x74, 0x30, 0x76, 0xad, 0x56, 0x10, 0x6c, 0xd0, 0xee, 0x2a, 0xc0, 0xe2, 0xb0, 0x0b, 0xbb, 0xc1, 0xe8, 0xc5, 0x5a, 0xb8, 0x0d, 0x96, 0x2b, 0x4d, 0x1d, 0x1a, 0x09, 0x1e, 0x8e, 0xf6, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x20, 0x1d, 0x04, 0x1b, 0x2c, 0xa6, 0x9d, 0x19, 0x24, 0x83, 0xd9, 0xa1, 0xaf, 0xc6, 0xf1, 0x78, 0xd8, 0x85, 0xdd, 0x60, 0xf4, 0x62, 0x2d, 0xdc, 0x06, 0x4b, 0x53, 0xa6, 0x0e, 0x8d, 0x04, 0x0f, 0x47, 0xfb, 0x06, 0x4d, 0x1a, 0x33, 0x0d, 0xbb, 0xb0, 0x1b, 0x8c, 0x5e, 0xac, 0x85, 0xdb, 0x60, 0x4d, 0xb7, 0xd4, 0xa1, 0x91, 0xe0, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0x0e, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0xb0, 0xc2, 0x27, 0x6b, 0xc3, 0xd1, 0x3e, 0xec, 0x82, 0x60, 0x41, 0xb0, 0xc1, 0x10, 0x9a, 0x1c, 0x24, 0x03, 0x59, 0xbf, 0x41, 0xb4, 0xb0, 0x13, 0xf4, 0x7e, 0x3f, 0x0e, 0x1d, 0x36, 0x6a, 0x37, 0xc4, 0x70, 0xd8, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x40, 0xfd, 0x9e, 0x20, 0xfd, 0x7d, 0x3c, 0xde, 0x10, 0xc3, 0x61, 0x17, 0x24, 0x43, 0x06, 0xd1, 0x02, 0xf5, 0x7b, 0x82, 0xfc, 0xf7, 0xf1, 0xf8, 0x90, 0xce, 0x3d, 0xbe, 0x0d, 0xb2, 0x0d, 0xcd, 0xd7, 0x0f, 0x47, 0xfb, 0xf1, 0x78, 0x41, 0xb0, 0xb8, 0xc1, 0x9a, 0x8e, 0xa3, 0x83, 0x35, 0x1d, 0x47, 0x8b, 0x6b, 0xb0, 0x70, 0xc6, 0xe8, 0x60, 0xf4, 0x74, 0x1d, 0x0c, 0xcc, 0xae, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0xfd, 0x75, 0xa6, 0xc5, 0x41, 0xb0, 0x06, 0x6d, 0xba, 0x33, 0x1d, 0xb4, 0x93, 0xc5, 0x34, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0x58, 0x0e, 0x2b, 0xb4, 0x83, 0x64, 0x40, 0xd8, 0xfd, 0x1d, 0x0c, 0x6e, 0x87, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8b, 0xcc, 0xf5, 0x0f, 0xe3, 0x72, 0x1c, 0xda, 0x20, 0xa4, 0xc0, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0xf8, 0x3a, 0x08, 0x72, 0xfe, 0x83, 0x83, 0xe9, 0xef, 0xf1, 0x78, 0x41, 0x32, 0x20, 0xec, 0x7d, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x1a, 0xe4, 0x72, 0x59, 0x1c, 0x04, 0x0b, 0x82, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0xe9, 0x7b, 0xa6, 0x41, 0x32, 0x70, 0xfc, 0x1d, 0xac, 0xed, 0xe4, 0x3f, 0x68, 0x8d, 0x25, 0xe5, 0x78, 0x3c, 0x08, 0x16, 0x87, 0x5d, 0xb8, 0x0d, 0x47, 0xfb, 0x21, 0xfe, 0x6b, 0x88, 0xe1, 0xc2, 0x6f, 0x48, 0x1d, 0x1c, 0xdf, 0x0e, 0x0d, 0xbf, 0x86, 0xdd, 0xa0, 0xb5, 0xdf, 0x91, 0x0d, 0x31, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xef, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x8b, 0xa6, 0x2c, 0x87, 0xec, 0xc5, 0xb0, 0x1b, 0x94, 0x3c, 0x48, 0x1b, 0x14, 0xb9, 0x0a, 0x83, 0x6c, 0x83, 0x45, 0x9d, 0x41, 0x07, 0xa5, 0xcc, 0xce, 0x20, 0x5a, 0x50, 0x3e, 0x08, 0x16, 0x24, 0x83, 0xbe, 0x83, 0x61, 0xe8, 0x73, 0xc8, 0x5e, 0x1c, 0x8f, 0x8f, 0x6f, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x6b, 0xe8, 0x57, 0xbb, 0xa1, 0x9b, 0xec, 0x1a, 0x2c, 0xf9, 0x38, 0xda, 0x60, 0x4d, 0xc7, 0xd1, 0x06, 0x49, 0x0e, 0xcc, 0x07, 0xab, 0x56, 0x49, 0x0e, 0xc6, 0xad, 0xd9, 0x41, 0x78, 0xaa, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0xc5, 0xb4, 0x33, 0x83, 0x64, 0x40, 0xd8, 0xfd, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x0b, 0xbf, 0x21, 0x9a, 0xc7, 0xb7, 0xe3, 0xd0, 0x71, 0xe8, 0x60, 0xcd, 0xb8, 0xfe, 0xe2, 0x21, 0x10, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0x41, 0x32, 0x60, 0xb8, 0xf6, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x5b, 0x83, 0xb6, 0x40, 0x56, 0x36, 0xa4, 0x6a, 0x0e, 0xd1, 0x3c, 0x28, 0x54, 0xce, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0xd5, 0x1c, 0x47, 0x8b, 0x83, 0x60, 0x83, 0x64, 0xe8, 0x87, 0x41, 0x32, 0xdc, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x7d, 0x39, 0x24, 0x97, 0x0e, 0x8d, 0x5a, 0x8e, 0x43, 0xc7, 0xe3, 0x83, 0x56, 0x7b, 0x99, 0x16, 0x04, 0x8b, 0x0b, 0x82, 0xc5, 0xc0, 0xcf, 0x0b, 0x93, 0x73, 0x17, 0x07, 0xc1, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x6d, 0x61, 0x74, 0xef, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0x7b, 0x52, 0x4d, 0x1b, 0xb4, 0x27, 0xd5, 0x74, 0x38, 0xc5, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x0d, 0xd6, 0x5c, 0x20, 0x1d, 0xb2, 0x15, 0x87, 0x0e, 0x1a, 0xc3, 0x6e, 0xb0, 0x8e, 0x5b, 0x6a, 0x0d, 0x96, 0x80, 0x4b, 0x2d, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0xb0, 0x9c, 0x2a, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x22, 0xb1, 0xa0, 0x83, 0xa5, 0x7b, 0x53, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x29, 0xd0, 0x20, 0xd8, 0x60, 0x65, 0x6d, 0xd4, 0xa1, 0x05, 0xd8, 0xb0, 0x1b, 0x2c, 0x9e, 0x97, 0x5a, 0x83, 0x75, 0xf7, 0x52, 0x0b, 0x82, 0x0d, 0x5a, 0xca, 0x6a, 0x3a, 0x34, 0x05, 0x3a, 0x68, 0x7f, 0xad, 0x69, 0xd8, 0x85, 0x5b, 0x3c, 0x08, 0x46, 0x93, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xe6, 0xe9, 0x9a, 0x36, 0x68, 0x9e, 0xae, 0xe9, 0x70, 0x8a, 0x1d, 0xb4, 0x0c, 0xd7, 0x34, 0xec, 0xc2, 0x2d, 0x06, 0x3e, 0x5c, 0x59, 0x98, 0x7c, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xd0, 0x2a, 0x5f, 0xd3, 0x06, 0xad, 0xf2, 0x35, 0x1d, 0x4e, 0xb1, 0x0d, 0xda, 0x86, 0x6b, 0x1a, 0x04, 0x1b, 0x2c, 0x12, 0x0b, 0x3a, 0x38, 0x66, 0xf7, 0x0e, 0xbb, 0xc1, 0xb2, 0x32, 0xab, 0x35, 0x58, 0x9a, 0x66, 0x35, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0xb0, 0x9c, 0x2a, 0xe8, 0xe0, 0xb0, 0xd1, 0x7b, 0xe8, 0xa0, 0x31, 0xec, 0xc2, 0x2d, 0x06, 0x3e, 0x1c, 0xdb, 0x1b, 0x7d, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xd0, 0xaa, 0x63, 0xd3, 0x06, 0xad, 0x3a, 0x36, 0x1d, 0x4e, 0xb1, 0x83, 0x56, 0x12, 0x9b, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0x9f, 0xa3, 0x7b, 0x83, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x9a, 0xb6, 0x6c, 0xda, 0xa0, 0x69, 0xcb, 0xa6, 0xc3, 0x29, 0x36, 0x08, 0x36, 0x58, 0x24, 0x16, 0x74, 0xb0, 0x1e, 0x5d, 0x6b, 0xd8, 0x85, 0x5b, 0x3c, 0x08, 0xad, 0xb6, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xe6, 0x40, 0x9b, 0x36, 0x68, 0x0e, 0xb4, 0xe9, 0x70, 0x8a, 0x1d, 0xb4, 0x0c, 0xd7, 0x34, 0xec, 0xc2, 0x2d, 0x1e, 0x04, 0x07, 0xc2, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0x2b, 0xa8, 0x4d, 0x1b, 0xb4, 0x82, 0xda, 0x74, 0x38, 0xc5, 0x0e, 0x5a, 0x86, 0x6b, 0xda, 0x60, 0x95, 0x42, 0xd5, 0x82, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x06, 0xcb, 0xd6, 0xab, 0x0e, 0xd9, 0x8a, 0x43, 0x53, 0xa0, 0x83, 0xf6, 0xd7, 0x9a, 0x86, 0xdd, 0x60, 0x71, 0x89, 0xd1, 0x06, 0x2b, 0x53, 0x8c, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x83, 0xe9, 0xe7, 0x21, 0x75, 0xb0, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0xd0, 0x44, 0x6e, 0xd3, 0x06, 0x4d, 0xe4, 0x36, 0x1d, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0xf1, 0xe0, 0xe4, 0x83, 0x7a, 0x48, 0x1d, 0x2c, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x34, 0x00, 0xdc, 0xb4, 0x41, 0x03, 0xc0, 0x4d, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0xdb, 0x60, 0x7d, 0x83, 0xd1, 0x21, 0x75, 0xb0, 0xc1, 0xfa, 0x2c, 0xa3, 0x61, 0x17, 0x6e, 0xf1, 0xe0, 0xb4, 0x85, 0x7a, 0x48, 0x1d, 0x2c, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x34, 0xa8, 0xdc, 0xb4, 0x41, 0x83, 0xca, 0x4d, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0x5b, 0x0c, 0xfc, 0xbb, 0xb7, 0x37, 0xf6, 0x90, 0x3a, 0x58, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x68, 0x2e, 0xba, 0x69, 0x83, 0xe6, 0xa2, 0x9b, 0x0e, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0xd0, 0x94, 0x53, 0xd3, 0x06, 0x4d, 0x39, 0x35, 0x1d, 0x4e, 0xb1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0x58, 0x9c, 0x83, 0x06, 0x9d, 0x9a, 0x16, 0x07, 0xc1, 0x0a, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0x92, 0x81, 0x36, 0x7d, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0x16, 0x89, 0x05, 0x1d, 0x2c, 0x4c, 0xfe, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x9c, 0x4d, 0x7a, 0x8f, 0x43, 0x87, 0x34, 0xdc, 0xc1, 0x52, 0xda, 0xa8, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0xa1, 0x89, 0xd1, 0xe2, 0x82, 0x60, 0x83, 0xe6, 0xbb, 0x9b, 0x16, 0x07, 0xc1, 0xc2, 0x2e, 0xec, 0x06, 0xa3, 0x17, 0x6b, 0xe1, 0x36, 0x68, 0xda, 0xb2, 0xe9, 0xd0, 0x48, 0xf0, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0x5e, 0xdf, 0xc1, 0x30, 0xf4, 0x19, 0x24, 0x03, 0xc5, 0xef, 0x90, 0x9c, 0x3b, 0xb4, 0x00, 0x1b, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x21, 0x5f, 0x3b, 0x08, 0x16, 0x37, 0x68, 0x9b, 0xaf, 0xe9, 0x60, 0xd8, 0xed, 0x0e, 0xbb, 0xb0, 0x0b, 0xbb, 0xc1, 0xe8, 0xc5, 0x5a, 0xb8, 0x0d, 0x96, 0x98, 0x59, 0x1d, 0x1a, 0x09, 0x1e, 0x8e, 0xf6, 0x85, 0x5d, 0xd8, 0x0d, 0x12, 0xbb, 0x7e, 0x16, 0x76, 0x83, 0x01, 0xd9, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0x70, 0x56, 0x3f, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x61, 0x17, 0x76, 0xe1, 0x36, 0x0e, 0x1d, 0x3a, 0xa9, 0x6d, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x71, 0xe8, 0xd0, 0x84, 0xeb, 0x90, 0xce, 0x3d, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0xec, 0x06, 0x0d, 0x3f, 0x38, 0x6d, 0x68, 0xc2, 0x75, 0xe8, 0xa4, 0x36, 0xec, 0xc2, 0x2e, 0xec, 0x06, 0xa3, 0x63, 0x7d, 0x61, 0x17, 0x6e, 0x83, 0x56, 0x1d, 0x9b, 0x0e, 0x42, 0x0a, 0x7c, 0x61, 0x37, 0x58, 0x33, 0x94, 0xb2, 0xb0, 0x0b, 0xbb, 0xd0, 0x83, 0x20, 0x8b, 0x5f, 0xb8, 0x0d, 0x16, 0xd2, 0x4b, 0x4d, 0x18, 0x1d, 0x8e, 0xf6, 0x85, 0xdd, 0x60, 0xc1, 0x17, 0xd7, 0xc2, 0x2e, 0xec, 0x06, 0x0b, 0xc6, 0xb8, 0x16, 0x76, 0xe1, 0x36, 0x58, 0x48, 0x2f, 0x35, 0xa1, 0x6c, 0x61, 0x17, 0x3a, 0xa1, 0x6d, 0x61, 0x17, 0x3a, 0xe1, 0xdb, 0xc2, 0x6d, 0xd0, 0xb4, 0x65, 0xd3, 0x04, 0x61, 0x3b, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x85, 0x3b, 0x58, 0xad, 0xc7, 0x75, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x2f, 0xec, 0xc2, 0x6d, 0x10, 0x3c, 0xdc, 0x13, 0xc4, 0x6d, 0x61, 0x17, 0x6e, 0xc3, 0xd1, 0x3e, 0x08, 0x36, 0x58, 0x5d, 0x18, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x1d, 0x7a, 0xec, 0x1c, 0x87, 0x16, 0x76, 0xe1, 0x36, 0x1c, 0xed, 0x83, 0x60, 0x83, 0xd5, 0x85, 0x11, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xa1, 0xef, 0xce, 0x71, 0xe8, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0xaf, 0x41, 0xf3, 0x74, 0x4d, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0x98, 0x0e, 0x4e, 0x42, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x86, 0x1e, 0x3b, 0x87, 0xbe, 0x3b, 0xc7, 0xa1, 0x09, 0x5d, 0xc3, 0x2e, 0xec, 0xc2, 0x6e, 0x30, 0x3a, 0xd6, 0x17, 0x76, 0x83, 0x46, 0x39, 0x9c, 0x16, 0x76, 0x83, 0x35, 0x43, 0x29, 0x0b, 0xbb, 0x41, 0xdb, 0x20, 0x4e, 0x0b, 0xbb, 0xc1, 0x82, 0x2f, 0xae, 0x85, 0xdd, 0xa0, 0x75, 0x13, 0xa7, 0x85, 0xdd, 0x60, 0xe9, 0x19, 0xd7, 0xc2, 0x2e, 0xec, 0x42, 0x0f, 0xd6, 0xee, 0x20, 0x2c, 0xec, 0xc2, 0x6d, 0xb0, 0x90, 0x5e, 0x6a, 0xc2, 0xb9, 0x85, 0x5d, 0xe8, 0x84, 0x77, 0x0b, 0xbb, 0xd0, 0x09, 0x62, 0xb7, 0x70, 0x1b, 0x34, 0x6d, 0xd9, 0x34, 0xc1, 0xd8, 0x1d, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x06, 0xeb, 0xca, 0x7a, 0x0e, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x17, 0x76, 0x83, 0x96, 0x6f, 0x9c, 0x16, 0x76, 0xe1, 0x36, 0x08, 0x1e, 0xee, 0x09, 0xe6, 0x6e, 0x61, 0x37, 0x68, 0x44, 0xc7, 0x69, 0x61, 0x37, 0x68, 0x18, 0xc8, 0x69, 0x61, 0x17, 0x6e, 0xc3, 0xd1, 0x3e, 0x08, 0x36, 0x58, 0x5d, 0x18, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x4d, 0x30, 0xba, 0xc7, 0xa1, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x1a, 0x34, 0x07, 0xda, 0xb4, 0x20, 0xd8, 0xa0, 0xa9, 0x25, 0xa7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0x43, 0x8f, 0x9d, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x5a, 0x72, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x36, 0xf4, 0xdd, 0x39, 0x68, 0x7b, 0xcf, 0xe9, 0x38, 0x74, 0x1c, 0x3a, 0x68, 0x38, 0xca, 0xe9, 0x90, 0x98, 0x39, 0xac, 0xfd, 0x0e, 0xbb, 0xb0, 0x0b, 0xbb, 0xc1, 0xe8, 0xc5, 0x5a, 0xd8, 0x0d, 0x9a, 0x2d, 0x70, 0x5a, 0xd8, 0x0d, 0x12, 0xbb, 0x7e, 0x16, 0x76, 0x61, 0x37, 0x18, 0x11, 0xbd, 0x0b, 0xbb, 0x70, 0x1b, 0xb4, 0xca, 0xd7, 0x34, 0xe1, 0xec, 0xc2, 0x2e, 0x74, 0xc2, 0xdb, 0x85, 0x5d, 0xb8, 0x0d, 0x86, 0xd4, 0xef, 0xa1, 0xef, 0xce, 0xc2, 0x6d, 0x88, 0xe1, 0x04, 0xb1, 0x3d, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x85, 0xdd, 0x60, 0x40, 0xf6, 0x2e, 0xec, 0xc2, 0x6e, 0x50, 0xdc, 0x0d, 0x2e, 0xec, 0xc2, 0x6d, 0xd0, 0xaa, 0x63, 0xd3, 0xc1, 0x80, 0x47, 0x5e, 0xd8, 0x0d, 0x06, 0x5a, 0xf2, 0xc2, 0x2e, 0xec, 0x42, 0x0f, 0xda, 0xde, 0x73, 0x5a, 0xd8, 0x85, 0xdb, 0xa0, 0x55, 0xbe, 0xa6, 0x09, 0x8a, 0xee, 0xc2, 0x2e, 0x74, 0x82, 0xaa, 0xbb, 0xb0, 0x0b, 0xb7, 0xc1, 0x90, 0xfa, 0x9d, 0xe0, 0xd4, 0x5d, 0xb8, 0x0d, 0x31, 0x9c, 0xe0, 0xd6, 0x3d, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x85, 0x5d, 0xe8, 0x04, 0xb3, 0xbb, 0xb0, 0x0b, 0xbb, 0xd0, 0x09, 0xca, 0xee, 0xc2, 0x6d, 0xb0, 0x90, 0x5e, 0x6a, 0x82, 0x63, 0xf7, 0x70, 0xb4, 0x2f, 0xdc, 0x86, 0x18, 0x4e, 0x50, 0x77, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x83, 0x56, 0x17, 0x9c, 0x0e, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x2f, 0xec, 0xc2, 0x6d, 0x38, 0xda, 0x07, 0xc1, 0x06, 0x07, 0xd6, 0xed, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0x82, 0xd5, 0xee, 0xe3, 0xd0, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0xd7, 0xa0, 0x15, 0xd4, 0xa6, 0xe1, 0x37, 0x68, 0x20, 0xd7, 0x69, 0x43, 0xea, 0xe0, 0x90, 0x5c, 0x3a, 0x8c, 0xcb, 0xb0, 0x0b, 0xbb, 0xc1, 0xe8, 0x58, 0x5f, 0xd8, 0x85, 0xdb, 0xa0, 0x79, 0xba, 0xa6, 0x83, 0x90, 0x02, 0x5f, 0xd8, 0x0d, 0xd6, 0x0c, 0xa5, 0x2c, 0xec, 0x06, 0x0b, 0xbe, 0xb8, 0x16, 0x76, 0xe1, 0x36, 0x68, 0x4f, 0xaa, 0xe9, 0x20, 0x70, 0xe3, 0x17, 0x6e, 0x83, 0xe2, 0x35, 0xf2, 0x20, 0x0c, 0xe4, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x6f, 0xd0, 0x44, 0x6e, 0xd3, 0xb0, 0x0b, 0xbb, 0xc1, 0xe8, 0x58, 0x5f, 0xd8, 0x0d, 0x9a, 0xaa, 0x76, 0x5a, 0xd8, 0x0d, 0xd6, 0x0c, 0xa5, 0x2c, 0xec, 0x06, 0x0b, 0xbe, 0xb8, 0x16, 0x76, 0x83, 0x06, 0xb6, 0x9d, 0x16, 0x6e, 0x83, 0x12, 0x28, 0xf2, 0x20, 0x0c, 0xe4, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x6f, 0xd0, 0xa0, 0x72, 0xd3, 0xb0, 0x0b, 0xbb, 0xc1, 0xe8, 0x58, 0x5f, 0xd8, 0x0d, 0x9a, 0xaa, 0x76, 0x5a, 0xd8, 0x0d, 0xd6, 0x0c, 0xa5, 0x2c, 0xec, 0x06, 0x0b, 0xbe, 0xb8, 0x16, 0x76, 0x83, 0x06, 0xb6, 0x9d, 0x16, 0x6e, 0x31, 0x78, 0x3a, 0xe2, 0x20, 0x0c, 0xe4, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x6f, 0xd0, 0x94, 0x53, 0xd3, 0xb0, 0x0b, 0xbb, 0xc1, 0xe8, 0x58, 0x5f, 0xd8, 0x0d, 0x9a, 0xaa, 0x76, 0x5a, 0xd8, 0x0d, 0xd6, 0x0c, 0xa5, 0x2c, 0xdc, 0x06, 0x4d, 0x39, 0x35, 0x1d, 0x0c, 0xd6, 0xd8, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x06, 0xcd, 0x45, 0x37, 0x0d, 0xb2, 0x0d, 0xcd, 0xd7, 0x8f, 0x43, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x34, 0xdf, 0xdd, 0xb4, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x10, 0x2c, 0x2e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x8c, 0x52, 0xce, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x56, 0xe1, 0xf7, 0x0c, 0xbf, 0xc1, 0xb0, 0x0d, 0x18, 0x7e, 0x83, 0xc1, 0x0e, 0x30, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc9, 0x70, 0x83, 0x68, 0x41, 0xfb, 0x21, 0x6b, 0x77, 0x58, 0xa1, 0x1d, 0x7e, 0x41, 0xb4, 0xe0, 0xfe, 0x41, 0x08, 0x80, 0x1f, 0x8f, 0x87, 0xdf, 0x60, 0xb0, 0x03, 0x6c, 0x30, 0xc4, 0x3b, 0x0f, 0xc6, 0x9b, 0xce, 0xf1, 0x78, 0xd8, 0x0d, 0x5a, 0xf5, 0x10, 0x58, 0x71, 0x43, 0x06, 0x7c, 0x50, 0xd5, 0x21, 0x75, 0x30, 0xec, 0xc2, 0x6d, 0xd0, 0x44, 0x6e, 0xd3, 0x61, 0xed, 0x77, 0xc5, 0x0d, 0x19, 0xf0, 0x83, 0x15, 0x8d, 0x5c, 0x87, 0xd4, 0xc1, 0xb0, 0x0b, 0xb7, 0x41, 0x03, 0xc0, 0x4d, 0x87, 0xb5, 0xdf, 0x15, 0x37, 0x64, 0xc0, 0x07, 0x1d, 0x07, 0x07, 0x9a, 0xbe, 0x43, 0xea, 0x60, 0xd8, 0x0d, 0x1a, 0x0f, 0x11, 0x58, 0x71, 0x43, 0x06, 0x7c, 0xd0, 0x31, 0x68, 0xe8, 0x90, 0x3a, 0x18, 0x76, 0xe1, 0x36, 0x68, 0x2e, 0xba, 0xe9, 0xb0, 0xf6, 0xbb, 0xe2, 0x86, 0x0c, 0xf8, 0xa0, 0x6a, 0x50, 0x31, 0xa8, 0xe8, 0x90, 0x3a, 0x18, 0x76, 0xe1, 0x36, 0x68, 0x50, 0xb9, 0xe9, 0xb0, 0xf6, 0xbb, 0xe2, 0x86, 0x0c, 0xf8, 0xa0, 0x6a, 0xd0, 0x73, 0x90, 0x0a, 0x11, 0x7d, 0x48, 0x1d, 0x0c, 0xbb, 0x70, 0x1b, 0x34, 0xe5, 0xd4, 0x74, 0x58, 0xfb, 0x5d, 0x71, 0x43, 0x06, 0xfc, 0xa0, 0x99, 0x9d, 0xa7, 0x43, 0xea, 0x60, 0xd8, 0x85, 0xdd, 0x60, 0xad, 0x90, 0xd8, 0xc2, 0x6d, 0xd0, 0x9e, 0x54, 0xd3, 0xa1, 0x05, 0xd0, 0xe1, 0x68, 0x5f, 0x0d, 0xb9, 0xef, 0x0d, 0xd2, 0xa1, 0x3c, 0x06, 0xc1, 0x82, 0x64, 0x20, 0xbd, 0x73, 0x30, 0x0c, 0x7d, 0x0e, 0x5a, 0xd0, 0x15, 0x38, 0xa4, 0x0e, 0x86, 0xdd, 0xa0, 0xe1, 0x17, 0x81, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x19, 0xee, 0xa0, 0x59, 0x1f, 0x81, 0xe1, 0x17, 0x44, 0x1b, 0x24, 0x75, 0x75, 0x1f, 0x8f, 0x87, 0xdf, 0x60, 0xb0, 0x03, 0xac, 0x41, 0xb9, 0x0f, 0xb8, 0xb8, 0xc1, 0x6a, 0x00, 0x92, 0x05, 0xe5, 0x1d, 0x2c, 0x5e, 0x00, 0x1a, 0x04, 0x8b, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x24, 0xcb, 0x97, 0x6c, 0x50, 0x2c, 0x92, 0xad, 0x21, 0xf7, 0x3d, 0x08, 0x36, 0x48, 0x91, 0xf7, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x0e, 0x0a, 0xd6, 0x95, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x28, 0xfb, 0x13, 0x5c, 0xfb, 0xc7, 0xe3, 0xe3, 0xdb, 0x21, 0x55, 0x33, 0xec, 0x06, 0xed, 0xe5, 0x08, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x23, 0x56, 0x4f, 0xc3, 0x6f, 0xd0, 0x48, 0xd6, 0xd3, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x35, 0x28, 0xa4, 0xfe, 0x16, 0x17, 0xb4, 0x77, 0x10, 0x00, 0xf7, 0x6b, 0xc8, 0x7d, 0x0f, 0x82, 0x0d, 0x56, 0x30, 0x44, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x92, 0xe5, 0x4b, 0x8e, 0x43, 0x07, 0xe7, 0x42, 0xec, 0x43, 0xaa, 0x66, 0xd8, 0x85, 0xdd, 0x60, 0xad, 0x90, 0xd8, 0xc2, 0x6d, 0xd0, 0x3c, 0x5d, 0xd3, 0xa1, 0x05, 0xd0, 0xe1, 0x68, 0x5f, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x46, 0xac, 0x9e, 0x86, 0xdf, 0xa0, 0x91, 0xac, 0xa7, 0xe1, 0x37, 0x18, 0xec, 0x00, 0x6b, 0x50, 0xee, 0x03, 0xae, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x78, 0xb0, 0x1a, 0x80, 0xe4, 0xf8, 0xb6, 0x20, 0xd8, 0x60, 0x4d, 0x3b, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0xb4, 0x8d, 0xf7, 0x34, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0x71, 0x50, 0xd4, 0xf1, 0xed, 0x38, 0x34, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x0e, 0x9a, 0x3a, 0xbe, 0x1d, 0x9c, 0x0b, 0xb1, 0x0f, 0xa9, 0x9a, 0x61, 0x17, 0x76, 0x83, 0xb5, 0x42, 0x62, 0x0b, 0xb7, 0xc1, 0x12, 0x33, 0xab, 0x43, 0x0b, 0xa0, 0xc3, 0xd1, 0xbe, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x94, 0x0c, 0x4d, 0x07, 0x2d, 0xe8, 0x0a, 0x0c, 0xbf, 0x41, 0x23, 0x59, 0x4f, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0xd6, 0xa0, 0xdc, 0x07, 0x5c, 0xdc, 0x60, 0x35, 0x00, 0xc9, 0x82, 0xfe, 0x83, 0x66, 0x29, 0x9f, 0x0e, 0xda, 0xbe, 0x7c, 0x3a, 0x0e, 0x1d, 0x52, 0x35, 0xc3, 0x2e, 0xec, 0x06, 0x6b, 0x85, 0xc4, 0x16, 0x6e, 0x83, 0x56, 0x1d, 0x9b, 0x0e, 0x2d, 0x80, 0x0e, 0x47, 0xfb, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0x08, 0xfa, 0x34, 0xfc, 0x06, 0x8d, 0x64, 0x3d, 0x0d, 0xbf, 0xc1, 0x60, 0x07, 0x58, 0x83, 0x72, 0x1f, 0x70, 0x83, 0x75, 0x4d, 0x5e, 0xc7, 0xa1, 0x43, 0xaa, 0x66, 0xd8, 0x85, 0xdd, 0x60, 0xad, 0x90, 0xd8, 0xc2, 0x6d, 0xd0, 0x2a, 0x5f, 0xd3, 0xa1, 0x05, 0xd0, 0xe1, 0x68, 0x5f, 0x0d, 0xb9, 0xef, 0x0d, 0x12, 0xfd, 0xa0, 0x07, 0xc1, 0x06, 0xcb, 0x3c, 0x20, 0x06, 0xc9, 0x20, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x0d, 0x31, 0x3c, 0x68, 0x61, 0xdc, 0xe5, 0x38, 0x74, 0x48, 0x1d, 0x0c, 0xbb, 0xb0, 0x1b, 0xac, 0x15, 0x12, 0x5b, 0xb8, 0x0d, 0x9a, 0xb6, 0x6c, 0x3a, 0xb4, 0x00, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0xcb, 0x3c, 0x20, 0x06, 0xc9, 0x20, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x0d, 0x31, 0xdc, 0xa0, 0x20, 0x4d, 0x3c, 0x34, 0xfc, 0x3a, 0x0e, 0x0d, 0xbb, 0x20, 0xd8, 0x60, 0xdd, 0xf0, 0xff, 0xc1, 0xca, 0xe8, 0xfe, 0xd5, 0x90, 0xfb, 0xde, 0x60, 0x61, 0x3d, 0xce, 0x71, 0xe8, 0x90, 0xaa, 0x19, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x64, 0xb8, 0x41, 0xb4, 0xa0, 0x7d, 0x10, 0x2c, 0x08, 0x36, 0x68, 0x12, 0x60, 0x60, 0x90, 0x0c, 0x54, 0xaf, 0x83, 0x90, 0xc3, 0x3f, 0x58, 0x19, 0xdd, 0x3f, 0x88, 0x16, 0x76, 0x10, 0x6c, 0xb0, 0xaa, 0xfa, 0xff, 0x60, 0x65, 0x74, 0xff, 0xf1, 0x7c, 0xf8, 0x0d, 0x06, 0x26, 0xc0, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x35, 0x28, 0xa4, 0xfe, 0x16, 0x37, 0x58, 0x4f, 0xf0, 0x75, 0x10, 0x00, 0xf7, 0x6b, 0xc8, 0x7d, 0x6f, 0xb0, 0x32, 0x1c, 0x67, 0x83, 0x85, 0xf5, 0x38, 0x87, 0xd4, 0xc1, 0xc1, 0xb9, 0x10, 0xfb, 0xb0, 0x57, 0x38, 0xec, 0xc2, 0x6e, 0xb0, 0x56, 0x48, 0x6c, 0xe1, 0x36, 0x68, 0x0e, 0xb4, 0xe9, 0xd0, 0x02, 0xe8, 0x70, 0xb4, 0x6f, 0xd0, 0xec, 0xe0, 0xd3, 0xb0, 0x0b, 0xbb, 0xc1, 0x5a, 0x21, 0xb1, 0x85, 0xdb, 0xa0, 0x15, 0xd4, 0xa6, 0x43, 0x0b, 0xa0, 0xc3, 0xd1, 0xbe, 0x41, 0xb3, 0x83, 0x4f, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x87, 0xdd, 0x60, 0xad, 0x90, 0xd8, 0x06, 0x6d, 0xd2, 0x01, 0x1d, 0x8e, 0xf6, 0x85, 0xdd, 0xa0, 0xcd, 0xdc, 0x97, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x4c, 0x07, 0xc3, 0x51, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0xda, 0x60, 0xf5, 0x3c, 0xce, 0x41, 0x91, 0xab, 0x70, 0x1c, 0x1a, 0x04, 0x0b, 0x92, 0x81, 0x20, 0x1d, 0x0c, 0x47, 0xe9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0x83, 0xd5, 0xf3, 0x38, 0x1b, 0x14, 0x9d, 0x30, 0x1b, 0xac, 0x80, 0x3c, 0x59, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x50, 0xee, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xa0, 0xe1, 0x5a, 0x92, 0xe3, 0xd0, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x1d, 0x52, 0x07, 0xc3, 0x6f, 0x50, 0x0e, 0x25, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xf0, 0x0b, 0x82, 0xc5, 0x41, 0xb0, 0xb0, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x2d, 0x89, 0xce, 0x0c, 0x92, 0x81, 0xe5, 0xba, 0x83, 0x41, 0x06, 0x39, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0x78, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x71, 0x83, 0xb6, 0xa5, 0x37, 0x0e, 0xd3, 0x79, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x36, 0x68, 0x53, 0xb8, 0x69, 0xd8, 0x85, 0xdb, 0x60, 0xa1, 0x89, 0xd1, 0x41, 0x60, 0x62, 0x6f, 0x90, 0x08, 0xd7, 0x30, 0xec, 0x06, 0x8d, 0xba, 0x95, 0x6c, 0x90, 0x08, 0xd7, 0x30, 0xec, 0xc2, 0x6e, 0xd0, 0x3e, 0xa0, 0xc8, 0xc2, 0x6d, 0xb0, 0xf0, 0xc2, 0xe8, 0x90, 0xec, 0x38, 0x1c, 0xed, 0x6b, 0x48, 0x1d, 0x0c, 0xbb, 0x41, 0x6b, 0x85, 0x22, 0x6b, 0xd0, 0x9e, 0x54, 0xd3, 0x41, 0xc8, 0x67, 0x6f, 0xd0, 0x2a, 0x5f, 0xd3, 0x06, 0x21, 0x9f, 0x7d, 0x50, 0xca, 0xec, 0x0c, 0xbb, 0xb0, 0x1b, 0xb4, 0x0f, 0x28, 0xb2, 0x70, 0x1b, 0x2c, 0x9c, 0x31, 0x3a, 0x24, 0x3b, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x83, 0x50, 0xcc, 0x1e, 0x04, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x83, 0x56, 0x9f, 0x62, 0x06, 0xd1, 0x06, 0x8d, 0x3f, 0x95, 0x1c, 0xcf, 0x37, 0x08, 0x29, 0xf0, 0x0d, 0x5a, 0x75, 0x6c, 0x1a, 0x76, 0x61, 0x37, 0x58, 0x33, 0x94, 0xb2, 0x70, 0x1b, 0xb4, 0xea, 0xd8, 0x74, 0x10, 0x64, 0xf1, 0x87, 0xa3, 0x7d, 0x0d, 0xe3, 0x72, 0x30, 0x58, 0x63, 0x37, 0x8c, 0xcb, 0x06, 0x21, 0x00, 0x7e, 0x88, 0xe1, 0xb0, 0x0b, 0xbb, 0x41, 0xfb, 0x80, 0x22, 0x0b, 0xb7, 0xc1, 0x9a, 0x6e, 0xa9, 0x43, 0xb2, 0xe3, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x08, 0xc5, 0xec, 0x0d, 0x42, 0x0a, 0x7c, 0x10, 0x2c, 0xec, 0xc2, 0x6e, 0xb0, 0x66, 0x28, 0x65, 0xe1, 0x36, 0x58, 0xd3, 0x2d, 0x75, 0x10, 0x64, 0xf1, 0x87, 0xa3, 0x7d, 0x0d, 0x02, 0x37, 0xfe, 0x20, 0x0c, 0xe4, 0x0f, 0xc2, 0xcd, 0x7d, 0x83, 0x35, 0xdd, 0x52, 0x2b, 0x08, 0x36, 0x68, 0x6a, 0xc9, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x5a, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x43, 0x9d, 0xf9, 0x20, 0x19, 0x44, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x21, 0x86, 0x1b, 0x14, 0xa4, 0x89, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x93, 0x00, 0x03, 0x83, 0x64, 0xa0, 0xfe, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x24, 0xc0, 0xc0, 0x20, 0x19, 0x28, 0x7f, 0x83, 0x68, 0x61, 0x27, 0xe8, 0xef, 0x7f, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0xda, 0xb0, 0x15, 0x18, 0x24, 0x83, 0x5b, 0x87, 0xbe, 0x1a, 0xc7, 0xe3, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x41, 0x2d, 0xb6, 0x38, 0x08, 0x16, 0x24, 0x83, 0x92, 0x83, 0xd3, 0x19, 0xf2, 0xc1, 0x7a, 0x8f, 0x9d, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x53, 0x4b, 0x4e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xc2, 0x6f, 0x3c, 0x1f, 0x76, 0xe1, 0x36, 0x58, 0x8a, 0x9c, 0x75, 0xd0, 0xf4, 0xd1, 0xc8, 0x06, 0x69, 0x2f, 0xd5, 0xc3, 0x2e, 0xdc, 0x06, 0x8b, 0xab, 0xb3, 0x0e, 0x9a, 0x3e, 0x1a, 0xd9, 0x20, 0xad, 0x3a, 0x7a, 0xd8, 0x85, 0xdb, 0x60, 0x0d, 0x79, 0xd6, 0x41, 0xd3, 0x47, 0x23, 0x1b, 0x24, 0xff, 0x3c, 0x0f, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x6e, 0x83, 0x45, 0xc3, 0x59, 0x07, 0x4d, 0x1f, 0x8d, 0x1c, 0x24, 0x39, 0x47, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x9d, 0xfb, 0x0e, 0x4e, 0x42, 0xc7, 0x83, 0x64, 0xc8, 0x41, 0x8b, 0x7a, 0x50, 0x83, 0x60, 0x41, 0x32, 0x20, 0xfc, 0x9d, 0x0e, 0x8e, 0x59, 0xc5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xf0, 0x1b, 0xcf, 0xd7, 0x70, 0xb4, 0x0f, 0x82, 0x0d, 0x4e, 0x7c, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x52, 0xcb, 0xa2, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xd1, 0x39, 0x38, 0x7b, 0x19, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x0e, 0xd2, 0xc4, 0x9e, 0x8f, 0x43, 0xc7, 0xa1, 0x35, 0x1c, 0xed, 0x83, 0x60, 0x83, 0x13, 0x9f, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xd4, 0xb2, 0xe8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0xad, 0x85, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x38, 0x57, 0x0e, 0xce, 0x5e, 0xc6, 0x07, 0x6d, 0xde, 0x42, 0x1d, 0xa4, 0x89, 0x3d, 0x1f, 0x87, 0x8e, 0x43, 0x6b, 0x38, 0xda, 0x07, 0xc1, 0x06, 0x27, 0x3e, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa9, 0x65, 0xd1, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x5a, 0x0b, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x76, 0x8b, 0xa1, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x83, 0x22, 0x75, 0x1c, 0x3a, 0x48, 0x13, 0x7b, 0x3e, 0x0e, 0x1d, 0x87, 0x0e, 0x31, 0x3c, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x07, 0x21, 0x05, 0x7e, 0x10, 0x02, 0xe0, 0xc3, 0x2e, 0xec, 0x06, 0xed, 0x03, 0x8a, 0x2c, 0xdc, 0x06, 0x4b, 0x53, 0xa6, 0x0e, 0xc9, 0x8e, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0x20, 0x50, 0xf2, 0x87, 0x5d, 0xb8, 0x0d, 0xd6, 0x87, 0x60, 0x4d, 0x70, 0xea, 0xaf, 0x41, 0x48, 0x81, 0x6f, 0xb0, 0xe0, 0xa0, 0x6a, 0x83, 0x92, 0xbf, 0xe0, 0x20, 0x04, 0xc0, 0x8f, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0xed, 0x03, 0x8a, 0x2c, 0xdc, 0x06, 0x0b, 0xe9, 0xa5, 0x0e, 0xc9, 0x8e, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0x20, 0x50, 0xf2, 0x87, 0x5d, 0xd8, 0x85, 0x1e, 0x8c, 0xb1, 0xa7, 0xc3, 0xfa, 0xe6, 0x1a, 0x84, 0x14, 0xf8, 0x06, 0x0b, 0xe9, 0xa5, 0x36, 0x18, 0x63, 0x4f, 0x07, 0x21, 0x00, 0x7e, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x68, 0x1f, 0x50, 0x64, 0xe1, 0x36, 0x58, 0xca, 0x30, 0x75, 0x48, 0x76, 0x1c, 0x8e, 0xf6, 0x05, 0xc1, 0x82, 0x60, 0x41, 0x32, 0xe0, 0xf9, 0xef, 0x7d, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x8d, 0xba, 0xc7, 0x0c, 0x92, 0x81, 0xd0, 0x1d, 0xb4, 0xa9, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x28, 0x3b, 0x18, 0xfe, 0xb1, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x58, 0x1c, 0x76, 0xc3, 0xfa, 0xde, 0x06, 0x4b, 0x7c, 0xff, 0x07, 0xc1, 0x06, 0x85, 0xca, 0xd9, 0x20, 0x58, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xea, 0x0f, 0x59, 0xbb, 0x41, 0xb4, 0x41, 0xe3, 0x4f, 0x25, 0x87, 0x15, 0xda, 0x0d, 0x42, 0x0a, 0x7c, 0x83, 0x10, 0x00, 0x3f, 0x8c, 0xcb, 0xf1, 0x6d, 0x83, 0x90, 0x02, 0xdf, 0x60, 0x89, 0x99, 0xd5, 0x41, 0x08, 0x80, 0x0f, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x76, 0x83, 0xf6, 0x01, 0x45, 0x16, 0x6e, 0x83, 0xe5, 0x4a, 0x53, 0x87, 0x64, 0xc7, 0xe1, 0x68, 0x1f, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x83, 0x7b, 0xfa, 0xa0, 0x31, 0xfe, 0xa6, 0x83, 0x91, 0xb0, 0x3a, 0xec, 0x06, 0xad, 0xf3, 0x01, 0x2c, 0xec, 0x82, 0x60, 0x41, 0xb0, 0xc1, 0x2a, 0xbb, 0xff, 0x83, 0x16, 0x37, 0x59, 0x0e, 0x46, 0x5b, 0xeb, 0x82, 0x60, 0x61, 0x06, 0xc1, 0x82, 0x64, 0x60, 0xaf, 0xef, 0x60, 0x38, 0x4a, 0x1f, 0xb4, 0x76, 0x30, 0xb0, 0x82, 0x60, 0x41, 0xb0, 0x41, 0x93, 0x00, 0x03, 0x83, 0x64, 0x60, 0xa8, 0x0e, 0x39, 0x8d, 0x83, 0x71, 0x45, 0x7d, 0x58, 0xfb, 0xdd, 0xa0, 0x69, 0xcb, 0xa6, 0xe3, 0xd0, 0x20, 0x58, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xea, 0x07, 0xc1, 0x06, 0x4d, 0xb1, 0xeb, 0x0c, 0x92, 0xc1, 0xec, 0x60, 0x8c, 0x4e, 0x0e, 0xa2, 0x05, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0xb0, 0xca, 0xee, 0x7f, 0x90, 0x0c, 0x4e, 0x1d, 0x8c, 0x1a, 0xa3, 0x83, 0xd1, 0xd6, 0x7a, 0x3c, 0x1f, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x4d, 0x02, 0x0c, 0x0c, 0x92, 0x81, 0xe2, 0x37, 0x88, 0x16, 0xf6, 0x60, 0xfc, 0x74, 0x1d, 0x87, 0x0e, 0xd6, 0xba, 0x96, 0x0c, 0xbb, 0xc1, 0xa8, 0x97, 0xdc, 0x90, 0x3a, 0x58, 0x83, 0xf1, 0xd3, 0x35, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0x54, 0x30, 0x30, 0x48, 0x06, 0x86, 0xea, 0x60, 0xf8, 0x97, 0x1d, 0xb4, 0x35, 0x12, 0xb3, 0x41, 0xd3, 0x96, 0x4d, 0x07, 0x21, 0x00, 0xbe, 0x21, 0x55, 0x73, 0xd0, 0xfa, 0x53, 0xd4, 0x06, 0x21, 0x05, 0x3e, 0x08, 0x36, 0x38, 0x07, 0x7c, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x9a, 0x5d, 0x87, 0x71, 0x39, 0x0e, 0x1d, 0xdf, 0x36, 0x08, 0x01, 0xf0, 0xe3, 0xf9, 0x82, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0x41, 0xd3, 0x72, 0x68, 0x01, 0xb6, 0xa1, 0x87, 0xd0, 0x20, 0x58, 0x1c, 0x76, 0x43, 0x22, 0x60, 0x83, 0x46, 0x19, 0x93, 0x86, 0x5d, 0xd8, 0x85, 0xdb, 0xd0, 0x02, 0xe8, 0x60, 0x4c, 0x58, 0x6d, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x41, 0x72, 0x07, 0xf3, 0xc1, 0x98, 0xb0, 0xda, 0x10, 0xc3, 0x61, 0x17, 0x04, 0x1b, 0xb4, 0x40, 0x40, 0x72, 0x50, 0x44, 0x9d, 0x1c, 0xd2, 0xb9, 0x6b, 0x90, 0xdc, 0xc1, 0x7c, 0x30, 0x22, 0xac, 0x86, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0x82, 0x72, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x1a, 0x76, 0x72, 0x50, 0xc2, 0x48, 0x1c, 0x87, 0x36, 0x18, 0x11, 0x56, 0x1b, 0x24, 0x77, 0x30, 0x2f, 0x08, 0x16, 0x24, 0x03, 0xe3, 0x77, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x30, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0xa6, 0xac, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x3c, 0x7f, 0x50, 0xc2, 0x48, 0x1c, 0x87, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0x1a, 0xc9, 0x8b, 0x1a, 0x24, 0xc3, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xf4, 0x75, 0x3a, 0x18, 0x8e, 0xd2, 0x07, 0x8d, 0xfb, 0x45, 0x1d, 0x87, 0x0e, 0x46, 0x89, 0xd5, 0xf1, 0xed, 0x78, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x68, 0xc5, 0x0d, 0x34, 0xff, 0x8a, 0x1f, 0x04, 0x8b, 0x1b, 0x34, 0xe2, 0xdd, 0xd4, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x68, 0x85, 0xed, 0x41, 0xdb, 0x90, 0x51, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa1, 0x15, 0x77, 0xd0, 0x36, 0x64, 0xd4, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x2c, 0x48, 0x06, 0xd2, 0x3f, 0x07, 0x01, 0xef, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x09, 0x14, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x26, 0xe0, 0x23, 0x4b, 0x9b, 0x43, 0x6b, 0x41, 0x37, 0x58, 0xd0, 0x30, 0xb5, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xe6, 0x5b, 0x38, 0x56, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x33, 0xdd, 0x11, 0xab, 0xa1, 0x98, 0xae, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x0d, 0x33, 0xb4, 0x86, 0x19, 0xda, 0x60, 0x45, 0xa0, 0xfe, 0x86, 0x13, 0x61, 0x83, 0x15, 0x81, 0xfa, 0x1b, 0x2c, 0x66, 0x83, 0x5a, 0x00, 0x7c, 0x18, 0x7b, 0x6b, 0x83, 0x4b, 0x63, 0x2b, 0x93, 0x6b, 0x11, 0x0b, 0x1b, 0x5b, 0x2b, 0x73, 0x23, 0x6b, 0x09, 0x73, 0x23, 0x6b, 0x81, 0x93, 0x2b, 0xa3, 0xa3, 0xcb, 0x83, 0x93, 0x4b, 0x73, 0xa3, 0x2b, 0x93, 0x97, 0x01, 0xf0, 0xa5, 0x66, 0x4c, 0x07, 0x64, 0xec, 0xad, 0x0d, 0x2e, 0x8d, 0xad, 0x4c, 0x0e, 0x44, 0x2c, 0x6c, 0x6c, 0xad, 0xcc, 0x8d, 0x0c, 0x24, 0xcc, 0x8d, 0x0c, 0x04, 0x4e, 0xae, 0x8c, 0x8e, 0x2e, 0x0f, 0x4e, 0x2e, 0xcd, 0x8d, 0xae, 0x4c, 0x6e, 0x01, 0x7f, 0x0e, 0xae, 0x8c, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0xe2, 0x39, 0xaa, 0x01, 0xfc, 0xe5, 0xca, 0xc6, 0xde, 0xdc, 0xe6, 0xe8, 0xe4, 0xea, 0xc6, 0xe8, 0x40, 0xe8, 0xf2, 0xe0, 0xca, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xbb, 0x30, 0x7c, 0xc3, 0xbf, 0xf3, 0x6b, 0xb0, 0x52, 0xc3, 0xb9, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0xb3, 0xdb, 0x51, 0x1b, 0x2c, 0xa9, 0x4e, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x1b, 0x34, 0xaa, 0x1d, 0xd5, 0x06, 0x05, 0xc1, 0xec, 0x06, 0x2d, 0x87, 0x47, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0xd7, 0xa0, 0x19, 0x36, 0x94, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0xd7, 0xd1, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x96, 0xc4, 0xa3, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xa9, 0x79, 0x71, 0xb0, 0xba, 0x51, 0xbb, 0x0d, 0x0a, 0x82, 0xd9, 0x35, 0x0e, 0x1d, 0xb4, 0x1c, 0x1e, 0xb5, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xba, 0x3c, 0x78, 0x83, 0x13, 0xfb, 0xcd, 0x1a, 0x94, 0x25, 0xef, 0x6b, 0xd0, 0xc2, 0xa2, 0x4a, 0x07, 0x4d, 0xa3, 0x47, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0xf6, 0x67, 0x1d, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0x2f, 0x3d, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x4f, 0xdc, 0x6d, 0xb0, 0x2e, 0xbb, 0x6e, 0x0d, 0x97, 0xd4, 0x06, 0x4d, 0xc5, 0x47, 0xd5, 0x1a, 0x1c, 0x5d, 0x07, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xab, 0xc0, 0x64, 0x0f, 0x82, 0x95, 0xb5, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x49, 0x69, 0xc1, 0x07, 0x05, 0xf1, 0x78, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x49, 0xf3, 0xa8, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x2b, 0x92, 0x15, 0x1b, 0x2c, 0xb1, 0xdf, 0xde, 0x60, 0x89, 0xfd, 0x76, 0xad, 0x80, 0x3f, 0xc7, 0x16, 0x06, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x6e, 0x76, 0xd4, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xce, 0xca, 0xdc, 0x83, 0x05, 0x16, 0xce, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xb4, 0xeb, 0xdc, 0xe8, 0xf2, 0xe0, 0xca, 0xc8, 0x40, 0xec, 0xc2, 0xe6, 0xca, 0x40, 0x5c, 0x54, 0x07, 0xcd, 0x6e, 0x47, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x67, 0x75, 0xee, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0x5f, 0x83, 0x56, 0x6a, 0x62, 0x3a, 0x68, 0x1a, 0x3d, 0x6a, 0x83, 0x25, 0xf6, 0xdb, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe6, 0x29, 0xa4, 0x6a, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0x78, 0x83, 0xd6, 0x41, 0xa4, 0x5a, 0x83, 0x05, 0x21, 0x4b, 0x1b, 0x34, 0x0f, 0x1e, 0xb5, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x66, 0x57, 0xa4, 0x5a, 0x01, 0x5f, 0xee, 0x2d, 0x8c, 0xdc, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0x9f, 0x4b, 0x1b, 0x04, 0x23, 0xda, 0x06, 0xa1, 0x5f, 0xb2, 0xc1, 0x59, 0x48, 0xe1, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0xeb, 0x97, 0x35, 0x3c, 0x28, 0xb9, 0x41, 0x00, 0xb2, 0x1d, 0x9c, 0x85, 0x14, 0x36, 0x28, 0x48, 0x63, 0x37, 0x38, 0x66, 0x78, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x92, 0x94, 0xa0, 0x0e, 0x4e, 0x42, 0x0a, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0x6b, 0x83, 0x47, 0xd7, 0x20, 0x60, 0x83, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0x70, 0x06, 0xf3, 0x5c, 0x83, 0x30, 0x02, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x90, 0xc7, 0x6e, 0x83, 0x26, 0x8b, 0xa4, 0xea, 0x70, 0x8a, 0x2d, 0xf0, 0x75, 0xf4, 0x06, 0x65, 0x97, 0xec, 0xc0, 0xd7, 0xd1, 0x1b, 0x14, 0x83, 0xb2, 0x2b, 0xf0, 0x61, 0xf2, 0x86, 0xb7, 0x75, 0x06, 0x3e, 0x4c, 0x6e, 0x0d, 0x92, 0x7c, 0x37, 0x0f, 0xd2, 0xb4, 0x3a, 0xd7, 0xe0, 0x00, 0x80, 0xb5, 0xe1, 0x6d, 0x9d, 0x0d, 0x0e, 0x00, 0x58, 0xad, 0x41, 0x13, 0xd9, 0x4b, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0x89, 0xec, 0xa5, 0xd6, 0xa0, 0x81, 0xed, 0xa5, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xc0, 0xf6, 0x52, 0x6b, 0xd0, 0x84, 0xf7, 0xd2, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xc2, 0x7b, 0xa9, 0x35, 0x58, 0xc5, 0xee, 0xbf, 0xe1, 0x6d, 0x9d, 0x0d, 0x56, 0xb1, 0xfb, 0xb7, 0x06, 0x4d, 0xb2, 0x91, 0x6c, 0x78, 0x5b, 0x67, 0x83, 0x26, 0xd9, 0x48, 0x5a, 0x83, 0x86, 0x95, 0x48, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0xc3, 0x4a, 0x24, 0xad, 0x41, 0x03, 0xe7, 0x4b, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0x81, 0xf3, 0xa5, 0xd6, 0xa0, 0x01, 0xf5, 0xa5, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x80, 0xfa, 0x52, 0x6b, 0xd0, 0x42, 0xfb, 0xd2, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xa1, 0x7d, 0xa9, 0x35, 0x68, 0x25, 0xaa, 0x65, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x12, 0xd5, 0xd2, 0x1a, 0x34, 0xf8, 0x22, 0xb3, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0x7c, 0x91, 0x69, 0x0d, 0x9a, 0xc8, 0x72, 0xd9, 0xf0, 0xb6, 0xce, 0x06, 0x4d, 0x64, 0xb9, 0xb4, 0x06, 0xed, 0xe1, 0x2f, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0xf6, 0xf0, 0x97, 0x5a, 0x83, 0xf6, 0xf6, 0x97, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0x7b, 0xfb, 0x4b, 0xad, 0x41, 0x3b, 0xf9, 0x31, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0x9d, 0xfc, 0x98, 0xd6, 0xa0, 0x79, 0x00, 0xa6, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x3c, 0x00, 0x53, 0x6b, 0xd0, 0x88, 0x40, 0xca, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x44, 0x20, 0xa5, 0x35, 0x68, 0x90, 0x6a, 0x69, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0x48, 0xb5, 0xd4, 0x1a, 0xb4, 0x34, 0xaa, 0xb2, 0xe1, 0x6d, 0x9d, 0x0d, 0x5a, 0x1a, 0x55, 0x69, 0x0d, 0x4a, 0x4d, 0xcb, 0x0d, 0x6f, 0xeb, 0x6c, 0x50, 0x6a, 0x5a, 0xb6, 0x06, 0xcd, 0xb0, 0xa1, 0x6c, 0x78, 0x5b, 0xe7, 0xa0, 0xd1, 0xf3, 0xa8, 0x35, 0x68, 0xbe, 0x58, 0x65, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0x5f, 0xac, 0xd2, 0x1a, 0x2c, 0xf6, 0xf7, 0xd9, 0xf0, 0xb6, 0xce, 0x06, 0x8b, 0xfd, 0x7d, 0x5a, 0x83, 0x26, 0x2f, 0x98, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0x93, 0x17, 0x4c, 0xad, 0x41, 0x0b, 0x1a, 0x4c, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0x05, 0x0d, 0xa6, 0xd6, 0xa0, 0x95, 0x9a, 0x98, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0x3f, 0x22, 0xb5, 0x06, 0xcd, 0x7f, 0x30, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0xe6, 0x3f, 0x98, 0x5a, 0x83, 0x16, 0x10, 0x50, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0x0b, 0x08, 0x28, 0xad, 0x41, 0x83, 0x85, 0x02, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0xc1, 0x42, 0x81, 0xd6, 0xa0, 0x19, 0x14, 0xa6, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x0c, 0x0a, 0x53, 0x6b, 0xd0, 0xc2, 0xa2, 0xca, 0x86, 0xb7, 0x75, 0x0e, 0xda, 0xb8, 0x8f, 0x5a, 0x83, 0x56, 0x81, 0x5c, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0xab, 0x40, 0x2e, 0xad, 0x41, 0xb3, 0x30, 0x4c, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0x59, 0x18, 0xa6, 0xd6, 0xa0, 0xf1, 0xa3, 0x96, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xf8, 0x51, 0x4b, 0x6b, 0xb0, 0x6a, 0xb0, 0x7f, 0xc3, 0xdb, 0x3a, 0x1b, 0xac, 0x1a, 0xec, 0x6f, 0x0d, 0x5a, 0x62, 0x48, 0xd9, 0xf0, 0xb6, 0xce, 0x06, 0x2d, 0x31, 0xa4, 0xb4, 0x86, 0xf6, 0xeb, 0x1b, 0xde, 0xd6, 0xd9, 0xd0, 0x7e, 0xbd, 0x35, 0x68, 0x73, 0x4c, 0x66, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x39, 0x26, 0x53, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x24, 0xdf, 0xcd, 0x0d, 0x0a, 0xc1, 0xd4, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x12, 0xf1, 0x7d, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x6c, 0xc6, 0xf9, 0x60, 0x79, 0x85, 0x73, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x03, 0x00, 0xd6, 0x06, 0x85, 0x60, 0xea, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x89, 0xf8, 0xbe, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x36, 0xe3, 0x7c, 0xd0, 0x56, 0xb6, 0x54, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x26, 0xb2, 0x97, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x83, 0xd5, 0x83, 0x22, 0xa7, 0xb5, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x6f, 0xae, 0x8e, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0xcb, 0x66, 0x9c, 0x0f, 0x96, 0xd8, 0x6f, 0x6f, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x6b, 0xd0, 0x3c, 0x00, 0xd3, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x87, 0x16, 0x76, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0xc1, 0x62, 0x17, 0xf3, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0x6c, 0xc6, 0x79, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0xae, 0xe1, 0x73, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x98, 0x8e, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0x73, 0x6f, 0x6f, 0x10, 0x82, 0x0f, 0x07, 0x41, 0xa3, 0xda, 0xc1, 0x71, 0xf1, 0x64, 0x83, 0x16, 0xe5, 0xa5, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x83, 0xa7, 0x07, 0xcd, 0x07, 0x4c, 0x6d, 0x70, 0x62, 0xbf, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0x68, 0x98, 0x6a, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x12, 0xa9, 0x7a, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xa2, 0xbc, 0xd4, 0xe1, 0x14, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0xcb, 0x5d, 0xcc, 0x37, 0x28, 0x76, 0x34, 0xd7, 0xa0, 0x98, 0xc4, 0x5c, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0x46, 0xe2, 0x3e, 0x38, 0xc4, 0x74, 0x1c, 0x1c, 0x3c, 0x32, 0xd6, 0xf0, 0x96, 0xdd, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xdd, 0x39, 0xa9, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0x85, 0x01, 0xfc, 0x6d, 0x78, 0xcb, 0x6e, 0x0d, 0x4f, 0xdc, 0x6d, 0x78, 0x16, 0xef, 0x60, 0x25, 0x04, 0xff, 0x86, 0xb7, 0xec, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x2e, 0xa9, 0x0d, 0x9a, 0xa4, 0x93, 0x5a, 0x0d, 0x9a, 0x50, 0x97, 0xea, 0xe0, 0x74, 0x91, 0xd1, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0xc1, 0xaa, 0x1b, 0xfe, 0x36, 0x38, 0x17, 0x2e, 0xac, 0x21, 0x8f, 0xbd, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0x65, 0x41, 0xfc, 0x07, 0xe1, 0xa9, 0xba, 0x41, 0x61, 0xa8, 0xba, 0x41, 0x6b, 0xa7, 0x1c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x1e, 0xd9, 0x1b, 0xbe, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0xea, 0xe0, 0x58, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0x4b, 0x2b, 0x47, 0xd7, 0x70, 0x49, 0x6d, 0xb0, 0xb4, 0x72, 0x74, 0x05, 0x97, 0x0f, 0x0e, 0x1e, 0x19, 0x1b, 0xde, 0xb8, 0x3b, 0x58, 0x3b, 0x5a, 0x5e, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x62, 0x12, 0x73, 0x83, 0x55, 0xe2, 0xdb, 0x1b, 0x87, 0x0e, 0x8e, 0x38, 0x19, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0x57, 0xb2, 0x35, 0xbc, 0xcd, 0x7a, 0xd0, 0x82, 0x96, 0xd4, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0x25, 0xb5, 0x41, 0x63, 0xb4, 0x52, 0x6b, 0xd0, 0xc0, 0xc8, 0xd4, 0x41, 0x33, 0x34, 0x53, 0x6d, 0x50, 0xe4, 0xb4, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x83, 0x47, 0x46, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x46, 0xcc, 0x54, 0x07, 0xc9, 0xd1, 0x51, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xb0, 0x9e, 0x7b, 0xfb, 0xa0, 0x85, 0x9f, 0xa9, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x1a, 0x5c, 0x9a, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0xb8, 0xa4, 0xd6, 0xa0, 0x99, 0x85, 0x96, 0xd6, 0xa0, 0x81, 0x91, 0xa9, 0x83, 0x56, 0x95, 0xa6, 0xda, 0xa0, 0x19, 0x9a, 0xa9, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x2b, 0xd9, 0x06, 0x4d, 0x0a, 0x4d, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x38, 0x5a, 0x6b, 0x6c, 0x50, 0x36, 0xbd, 0x6f, 0xd0, 0xba, 0x95, 0x54, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0x30, 0x32, 0x75, 0xd0, 0x7c, 0xd3, 0x54, 0x6b, 0x78, 0x9b, 0x75, 0xc3, 0xbf, 0x39, 0x1b, 0x9c, 0x50, 0x02, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0x4b, 0x6a, 0x83, 0x56, 0x62, 0xa5, 0x36, 0x68, 0x5e, 0x64, 0x6a, 0x0d, 0x1a, 0xbe, 0x92, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x2d, 0xa8, 0x07, 0x6d, 0x8f, 0x4d, 0x1d, 0x34, 0x6f, 0x36, 0xd5, 0x06, 0x4b, 0xec, 0xb7, 0x0f, 0x9a, 0x6f, 0x9a, 0x6a, 0xc3, 0x2f, 0x2e, 0x1b, 0x9c, 0x2e, 0x32, 0x0e, 0x92, 0xa3, 0xa3, 0x56, 0x83, 0x55, 0x83, 0xfd, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0xd5, 0x60, 0xff, 0x06, 0x07, 0x2c, 0xba, 0x35, 0xfc, 0x45, 0xb3, 0xc1, 0x09, 0x48, 0x74, 0x83, 0x20, 0x3d, 0xdd, 0xa0, 0x81, 0x91, 0xa9, 0x35, 0x58, 0x2f, 0xd2, 0xbc, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0x55, 0x0e, 0x46, 0x6b, 0xb0, 0xde, 0x9d, 0x79, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x87, 0xe9, 0x5c, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0xe6, 0xa5, 0xf9, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0x3a, 0xb6, 0x6d, 0x50, 0x54, 0x8a, 0xaf, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0xb5, 0x6f, 0xfc, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0xa0, 0x81, 0x91, 0xa9, 0x0d, 0x16, 0xfb, 0xdc, 0xad, 0x41, 0x09, 0x8f, 0xb9, 0xe0, 0xf1, 0x41, 0x03, 0x23, 0x53, 0x1b, 0xac, 0x5b, 0x87, 0xdb, 0xf0, 0xb6, 0xce, 0xe0, 0xf5, 0x41, 0xfb, 0x97, 0x53, 0x07, 0x65, 0x9d, 0xe7, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0xf5, 0xfb, 0xcc, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xd6, 0xb1, 0x6d, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x1f, 0x2c, 0xa4, 0xe4, 0x5f, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x6b, 0xab, 0x83, 0xdb, 0xa0, 0xad, 0xc9, 0xa9, 0x36, 0x58, 0xec, 0x73, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xeb, 0x74, 0x6a, 0x0d, 0x6f, 0xeb, 0x1c, 0xb4, 0x7f, 0x39, 0xd5, 0x41, 0x59, 0xe7, 0xb9, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x69, 0x18, 0xf7, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x75, 0x6c, 0xdb, 0xa0, 0xa8, 0x14, 0x5f, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x07, 0x8b, 0x87, 0xf9, 0xd7, 0xa0, 0x20, 0x98, 0xdd, 0xa0, 0x19, 0xca, 0xa9, 0x0d, 0xda, 0x9a, 0x9c, 0x3a, 0x68, 0xce, 0x74, 0xea, 0xa0, 0x49, 0xd5, 0xa9, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x4b, 0xe3, 0xb8, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xad, 0x63, 0xdb, 0x06, 0x45, 0xa5, 0xf8, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x58, 0x56, 0xce, 0xbf, 0x41, 0x73, 0xa6, 0x53, 0x07, 0x65, 0x9d, 0xe7, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x95, 0x8b, 0xdc, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xd6, 0xb1, 0x6d, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x1f, 0xac, 0x24, 0xe8, 0x3f, 0x68, 0xcc, 0x74, 0x6a, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0xaa, 0x55, 0xee, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xeb, 0xd8, 0xb6, 0x41, 0x51, 0x29, 0xbe, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0xd6, 0x77, 0xf4, 0x1f, 0x34, 0x66, 0x3a, 0xb5, 0x06, 0xcd, 0x47, 0x4c, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xd6, 0xb1, 0x6d, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x58, 0x90, 0xd3, 0xbf, 0x41, 0x73, 0xa6, 0x53, 0x1b, 0x2c, 0xf6, 0xb9, 0x5b, 0x83, 0x12, 0x1e, 0x73, 0xc1, 0xe1, 0xc1, 0xe1, 0x83, 0xf6, 0x2f, 0xa7, 0x36, 0x58, 0xb7, 0x0e, 0xb7, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0x06, 0xce, 0xa7, 0x36, 0x58, 0xec, 0x73, 0xb7, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x1a, 0x3c, 0x9f, 0xda, 0x60, 0xb1, 0xcf, 0xdd, 0x1a, 0xde, 0xd6, 0x19, 0x5c, 0x3e, 0x68, 0xf0, 0x7c, 0x6a, 0x83, 0xc5, 0x3e, 0x77, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb6, 0x4e, 0xa7, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0xfb, 0x97, 0x53, 0x6d, 0xb0, 0xd8, 0xe7, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xd6, 0xe9, 0xd4, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x1e, 0x5c, 0x3e, 0x68, 0xff, 0x72, 0xaa, 0x5a, 0x66, 0x0d, 0x1a, 0x42, 0x9d, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0x61, 0x3a, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xe4, 0xa6, 0x6f, 0xb0, 0x7c, 0xed, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xf2, 0xfb, 0x1f, 0x9c, 0xb6, 0xd0, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x05, 0xfc, 0xb6, 0x34, 0xba, 0x72, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x35, 0xf7, 0xc7, 0x07, 0xcb, 0x66, 0x9c, 0x37, 0xfc, 0x4a, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x71, 0x56, 0x6a, 0x83, 0x02, 0x36, 0x7f, 0x83, 0xe5, 0x19, 0xc8, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0x5c, 0x52, 0x1b, 0x34, 0x46, 0x2b, 0xb5, 0x06, 0x0d, 0x8c, 0x4c, 0x1d, 0x2c, 0xcf, 0x40, 0x6e, 0x83, 0x22, 0xa7, 0x75, 0x83, 0x06, 0xce, 0xa6, 0x6a, 0x05, 0xfc, 0xb1, 0xb7, 0x37, 0x76, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x70, 0x6f, 0xec, 0xe1, 0x83, 0xd5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xa1, 0xe5, 0xc1, 0x07, 0x6b, 0x47, 0x9e, 0x37, 0x68, 0x93, 0x81, 0xaa, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0x6c, 0xc6, 0x79, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x33, 0x4b, 0x23, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x28, 0xbf, 0xc2, 0x5a, 0xc3, 0x1b, 0x77, 0x07, 0x8b, 0xf6, 0x9b, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xed, 0x8b, 0x50, 0xd5, 0x06, 0x41, 0x7a, 0xba, 0xc6, 0xa1, 0x0d, 0x1a, 0x50, 0xa1, 0x6a, 0x0d, 0xc2, 0x08, 0xe8, 0xa0, 0x81, 0xb3, 0xa9, 0x35, 0x08, 0xd8, 0xa0, 0x0d, 0x0f, 0x4a, 0x6e, 0x70, 0x3a, 0x12, 0xd9, 0xa0, 0xe8, 0x34, 0x5e, 0xc3, 0xdb, 0x3a, 0x03, 0x3e, 0x5d, 0xd8, 0x5a, 0xd9, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x1e, 0x1c, 0x3e, 0x68, 0x70, 0x86, 0x6a, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf0, 0x60, 0xd9, 0x8c, 0xf3, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xad, 0x80, 0x50, 0xb5, 0x86, 0x77, 0x7b, 0xd6, 0x70, 0x49, 0x6d, 0xd0, 0xe8, 0x79, 0xd4, 0x1a, 0x34, 0x30, 0x32, 0x75, 0x78, 0x5a, 0xa7, 0x83, 0xe6, 0x26, 0xa8, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0x4b, 0x6a, 0x83, 0xd6, 0xd5, 0xa4, 0x0e, 0xda, 0x47, 0xa2, 0x3a, 0x68, 0x6e, 0x82, 0xaa, 0xc3, 0x29, 0xb6, 0x06, 0x4d, 0x78, 0x2f, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x67, 0x19, 0x1e, 0x5c, 0x19, 0x1b, 0x48, 0x9d, 0x1b, 0x59, 0xda, 0x59, 0xd9, 0x1c, 0x5d, 0x19, 0x19, 0xc8, 0x5c, 0x59, 0x5b, 0x9a, 0xdb, 0x5b, 0x9d, 0xdb, 0xdc, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x36, 0xe3, 0xbc, 0xc1, 0x72, 0x48, 0xa6, 0xd9, 0xe0, 0x68, 0xc3, 0xb7, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0x81, 0xb3, 0xa9, 0xc3, 0x33, 0x93, 0x1b, 0x9e, 0x99, 0x3c, 0x68, 0xe0, 0x6c, 0x6a, 0x83, 0x93, 0x83, 0xdc, 0x06, 0x0d, 0x8c, 0x4c, 0x6d, 0xd0, 0xc0, 0xd9, 0xd4, 0x1a, 0xb4, 0xe1, 0x39, 0xb5, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0x91, 0xac, 0x58, 0xc3, 0x25, 0xb5, 0x41, 0x53, 0x61, 0x52, 0x6b, 0xd0, 0xc0, 0xc8, 0xd4, 0x41, 0x5b, 0x93, 0x53, 0xad, 0xe1, 0x92, 0xda, 0xa0, 0xa9, 0x30, 0xa9, 0x35, 0x68, 0x60, 0x64, 0xea, 0xa0, 0xe1, 0xd6, 0xa9, 0x5a, 0x83, 0xe6, 0x23, 0xa6, 0x36, 0x38, 0xe7, 0x2f, 0x6d, 0xd0, 0x52, 0x07, 0xc7, 0x06, 0xcd, 0xb0, 0x51, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0x78, 0x3e, 0xb5, 0x86, 0x4b, 0x6a, 0x83, 0xa6, 0xc2, 0xa4, 0xd6, 0xa0, 0x81, 0x91, 0xa9, 0x83, 0xc6, 0xed, 0xa7, 0x5a, 0x83, 0x25, 0xd5, 0x49, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xa0, 0xf1, 0xfe, 0xa9, 0x0d, 0x1f, 0xe4, 0xac, 0x41, 0x31, 0x89, 0xb9, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x6b, 0x75, 0xba, 0x0f, 0x8e, 0x8b, 0x27, 0x07, 0x87, 0x98, 0x8e, 0x83, 0xc6, 0xfa, 0xa7, 0x36, 0x68, 0x91, 0x7f, 0x6a, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xb5, 0x01, 0xde, 0x1b, 0x14, 0x14, 0x99, 0x07, 0x65, 0x99, 0xe7, 0x41, 0x59, 0xe7, 0xd9, 0x1a, 0xb4, 0x0c, 0x3b, 0xb5, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x05, 0xe2, 0xd8, 0xa0, 0xad, 0xc9, 0xa9, 0x83, 0xb6, 0xe0, 0xa8, 0xd6, 0xa0, 0x51, 0xdf, 0xa9, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xb2, 0x17, 0xc7, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xc4, 0x8d, 0xda, 0x0d, 0xca, 0xa6, 0xf7, 0x83, 0xc6, 0x52, 0xa7, 0xd6, 0xf0, 0x8b, 0xd2, 0x06, 0xcb, 0x66, 0x9c, 0x37, 0x5c, 0x52, 0x1b, 0x34, 0x15, 0x26, 0xb5, 0x06, 0x0d, 0x8c, 0x4c, 0x1d, 0x9c, 0x56, 0xce, 0xaa, 0x35, 0x68, 0x23, 0x79, 0x6a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0xe7, 0x60, 0x61, 0x9c, 0xf8, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x25, 0xb5, 0x41, 0x53, 0x61, 0x52, 0x6b, 0xd0, 0xc0, 0xc8, 0xd4, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0x9a, 0xa1, 0x9c, 0x6a, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x34, 0x43, 0x39, 0xd5, 0x41, 0x5b, 0x70, 0x54, 0x6b, 0xd0, 0xa4, 0xf4, 0xd4, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xed, 0x94, 0x63, 0x83, 0x66, 0xd8, 0xa8, 0x0e, 0x9a, 0x6d, 0x9d, 0x6a, 0x05, 0x7c, 0xb1, 0x30, 0xb6, 0x75, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x46, 0xcc, 0xd4, 0xc1, 0xb2, 0x19, 0xe7, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xa1, 0xd5, 0x91, 0x07, 0xcb, 0x05, 0xb1, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x47, 0xf6, 0xd6, 0x1e, 0x2c, 0xae, 0x83, 0x6e, 0xc3, 0x5f, 0x34, 0x1b, 0x84, 0xe9, 0xd8, 0x86, 0x0f, 0x72, 0xd6, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0x04, 0x1f, 0x36, 0x68, 0x81, 0x98, 0xaa, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x8f, 0xec, 0xcd, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0xd0, 0x5b, 0xd9, 0x06, 0x0d, 0x38, 0x4d, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0xda, 0x07, 0xa6, 0x6a, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x0f, 0x1e, 0x0f, 0xee, 0x1e, 0x34, 0xad, 0x4c, 0xd5, 0x06, 0x41, 0x7a, 0xba, 0x41, 0xd3, 0xca, 0x54, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0xc2, 0x74, 0xec, 0x60, 0xe5, 0xc1, 0xfa, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xda, 0x99, 0xaa, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x61, 0x3a, 0xb6, 0x41, 0x08, 0x3e, 0x1c, 0x1c, 0x62, 0x3a, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x7b, 0xde, 0x54, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0xb4, 0x32, 0xd5, 0x86, 0xb7, 0x75, 0x06, 0x97, 0x0f, 0x9a, 0x56, 0xa6, 0xaa, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x61, 0x3a, 0xb6, 0x41, 0x98, 0x8e, 0x1d, 0x1c, 0x17, 0x4f, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x7b, 0xde, 0x54, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0xb4, 0x32, 0xd5, 0x86, 0xb7, 0x75, 0x06, 0x67, 0x0f, 0x9a, 0x56, 0xa6, 0xaa, 0x35, 0x38, 0xa5, 0x2d, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0xf6, 0xbc, 0xa9, 0x36, 0x68, 0x2b, 0x9e, 0xea, 0xa0, 0x25, 0x73, 0xaa, 0x66, 0x0d, 0x56, 0xb1, 0xfb, 0x6f, 0x78, 0x7c, 0x64, 0x83, 0x55, 0xec, 0xfe, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0x05, 0x0a, 0xa9, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0x6c, 0xc6, 0x79, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x0a, 0xc4, 0xb1, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x28, 0x32, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x6d, 0x9d, 0x48, 0x1d, 0x94, 0x75, 0x9e, 0x1d, 0x34, 0xab, 0x41, 0x75, 0x38, 0xc5, 0x5a, 0xc0, 0x6f, 0x4b, 0x9b, 0x9b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1a, 0x5e, 0xa8, 0x6a, 0x00, 0x6f, 0xb7, 0x37, 0xb7, 0x34, 0x37, 0xba, 0x32, 0xb9, 0xb9, 0xb2, 0x31, 0xba, 0xb4, 0x37, 0xb7, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x83, 0x26, 0x4a, 0xa8, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x83, 0xd5, 0x0d, 0x4a, 0x7b, 0xcb, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0x9d, 0xa5, 0xb1, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x25, 0xe2, 0xfb, 0x06, 0x6b, 0xf3, 0xb8, 0xdb, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xc9, 0xca, 0xf0, 0xe8, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x68, 0x36, 0xa4, 0x6a, 0xc3, 0x5f, 0x34, 0x1b, 0x3e, 0x58, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0x60, 0x79, 0x06, 0xf2, 0x41, 0x03, 0x67, 0x53, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x97, 0xd4, 0x06, 0x8d, 0xd1, 0x4a, 0xad, 0x41, 0x03, 0x23, 0x53, 0x07, 0x6d, 0x7d, 0x5f, 0xb4, 0x41, 0x01, 0x9b, 0x7f, 0xd0, 0xac, 0x06, 0xd5, 0x06, 0x41, 0x7a, 0xba, 0x41, 0x03, 0x23, 0x53, 0x6b, 0xb0, 0x5e, 0xa4, 0xf9, 0xa0, 0xc8, 0x69, 0x5d, 0x83, 0xf5, 0xee, 0xcc, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x21, 0x96, 0xaa, 0x83, 0xe6, 0x24, 0xa8, 0xd6, 0xa0, 0x81, 0xc5, 0xa9, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x73, 0x69, 0x6e, 0x74, 0x6b, 0xd0, 0x86, 0xe7, 0xd4, 0x41, 0x03, 0x3c, 0x55, 0x6b, 0xd0, 0x7c, 0xc4, 0xd4, 0x86, 0x4b, 0x6a, 0x83, 0xb6, 0x79, 0xaa, 0xd6, 0xa0, 0x81, 0x91, 0xa9, 0x83, 0xa6, 0x16, 0xa4, 0x5a, 0x83, 0x46, 0x7d, 0xa7, 0x36, 0x28, 0x3a, 0x8d, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x85, 0x57, 0x56, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xb0, 0x08, 0x64, 0xf4, 0xa0, 0x01, 0x4f, 0xaa, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x6c, 0xc6, 0x79, 0xc3, 0x25, 0xb5, 0x41, 0xa3, 0x21, 0x55, 0x07, 0xad, 0x8f, 0x52, 0xad, 0x41, 0xcb, 0xb0, 0x53, 0x1b, 0x2e, 0xa9, 0x0d, 0x1a, 0x0d, 0xa9, 0x3a, 0x68, 0x48, 0x8e, 0x6a, 0x0d, 0xda, 0x48, 0x9e, 0x3a, 0x68, 0x69, 0xaa, 0x6a, 0x0d, 0x9a, 0x94, 0x9e, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x72, 0xe7, 0x7d, 0x83, 0xb2, 0xe9, 0x7d, 0x0d, 0x0a, 0xc1, 0xd4, 0x83, 0xb5, 0x79, 0xdc, 0xad, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0xe4, 0x60, 0x65, 0x1f, 0xf7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xe0, 0x6c, 0x6a, 0x83, 0xe5, 0x19, 0xc8, 0x07, 0x65, 0x9d, 0x67, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x70, 0xb4, 0xd6, 0xd8, 0xa0, 0x6c, 0x7a, 0x5f, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0xbb, 0x51, 0x55, 0x07, 0xa9, 0x40, 0x63, 0x1b, 0x14, 0x39, 0xad, 0x1b, 0x2e, 0xa9, 0x0d, 0x1a, 0x0d, 0xa9, 0x5a, 0x83, 0x06, 0x46, 0xa6, 0x0e, 0x5a, 0x02, 0x96, 0x5a, 0x83, 0x96, 0xdc, 0xaa, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x65, 0x0b, 0xea, 0x41, 0x63, 0x6c, 0x55, 0x07, 0xa9, 0x40, 0x63, 0xb5, 0x1a, 0xb4, 0xce, 0x53, 0xb5, 0xc1, 0xc9, 0x41, 0x6e, 0x83, 0x75, 0x17, 0xc8, 0x6b, 0xb8, 0xa4, 0x36, 0x68, 0x34, 0xa4, 0x6a, 0x83, 0xf6, 0x2e, 0xa8, 0xd6, 0x60, 0xdd, 0x05, 0xf2, 0x41, 0x03, 0x67, 0x53, 0xad, 0x41, 0x03, 0x8b, 0x53, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xd0, 0xc0, 0xe2, 0xd4, 0x41, 0x03, 0x23, 0x53, 0x1b, 0x14, 0x39, 0xad, 0x1b, 0x1e, 0x61, 0x5d, 0x83, 0x62, 0x12, 0x73, 0x83, 0x22, 0x15, 0x73, 0xf0, 0xf8, 0x60, 0xdd, 0x05, 0xf2, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x14, 0xa9, 0x98, 0x07, 0xed, 0x5f, 0x4e, 0xad, 0xe1, 0x6d, 0xd6, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0xe6, 0x1b, 0xab, 0x0e, 0x1a, 0x6e, 0x9d, 0x6a, 0x0d, 0xda, 0xf0, 0x9c, 0xda, 0xa0, 0xd8, 0xd1, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x83, 0x36, 0x3c, 0xa7, 0x0e, 0x1a, 0x18, 0x99, 0xda, 0xa0, 0xc8, 0x69, 0xdd, 0xf0, 0x2b, 0xd9, 0x1a, 0x2e, 0xa9, 0x0d, 0x1a, 0x0d, 0xa9, 0xda, 0xa0, 0x0d, 0x37, 0xaa, 0x35, 0x58, 0x77, 0x81, 0xbc, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x75, 0x17, 0xc8, 0xad, 0xe1, 0x92, 0xda, 0xa0, 0xd1, 0x90, 0xaa, 0x0d, 0x9a, 0x92, 0xa3, 0x5a, 0x83, 0x75, 0x17, 0xc8, 0x07, 0xad, 0x51, 0x56, 0x55, 0x87, 0x53, 0xac, 0xc3, 0x29, 0xb6, 0x02, 0x5f, 0x46, 0x6f, 0x50, 0x96, 0x61, 0xaf, 0xe1, 0x73, 0xa5, 0x0d, 0x9a, 0x10, 0xa1, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x0c, 0x1e, 0x94, 0x83, 0xb5, 0xb1, 0xd1, 0xcd, 0x32, 0x6b, 0xd0, 0x02, 0x02, 0xca, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xce, 0xde, 0xd8, 0x83, 0x65, 0x33, 0xce, 0x1b, 0x34, 0xd0, 0x4b, 0xd5, 0x06, 0x47, 0x1b, 0xbe, 0x35, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x2b, 0xd9, 0x06, 0x4d, 0x0a, 0x4d, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0x5c, 0x52, 0x1b, 0x34, 0x46, 0x2b, 0xb5, 0x06, 0x0d, 0x8c, 0x4c, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0xe6, 0x6e, 0xab, 0x6a, 0x83, 0x22, 0xa7, 0x75, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0xbe, 0x9c, 0xac, 0xc3, 0x33, 0x93, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0xf4, 0xa6, 0xdf, 0x60, 0xd9, 0x8c, 0xf3, 0xc1, 0xca, 0x3e, 0xee, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x8e, 0x8b, 0xdd, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xfd, 0x15, 0xaa, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x10, 0xbe, 0xf9, 0xa0, 0xe9, 0x17, 0xaa, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0x5c, 0x52, 0x1b, 0x34, 0xcd, 0x42, 0xb5, 0x06, 0x0d, 0x8c, 0x4c, 0x1d, 0x34, 0xe0, 0x34, 0xd5, 0x41, 0x03, 0xd5, 0x55, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0xc2, 0x08, 0x68, 0xe3, 0xd0, 0xe0, 0xf0, 0x41, 0x8a, 0xc8, 0xd4, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0xc2, 0x08, 0x68, 0xe3, 0xd0, 0xe0, 0xf1, 0x41, 0x8a, 0xc8, 0xd4, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x84, 0xe0, 0xc3, 0xc1, 0xda, 0x4e, 0xf8, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x07, 0x87, 0x0f, 0xda, 0x17, 0xaf, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x83, 0xc3, 0x07, 0xed, 0xa3, 0x57, 0xb5, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x01, 0x1b, 0x74, 0xd0, 0x1c, 0x7a, 0xd5, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x5f, 0xe6, 0x46, 0xf6, 0xb6, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0xd3, 0xef, 0x55, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0x65, 0xf9, 0xaa, 0x36, 0x68, 0xc0, 0x69, 0x6a, 0x83, 0x05, 0x9c, 0xf0, 0xcd, 0x1a, 0xb4, 0xb0, 0xa8, 0xb2, 0xe1, 0x2f, 0x9a, 0x0d, 0x96, 0xcd, 0x38, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0x70, 0x5c, 0xec, 0x3e, 0x68, 0x61, 0xba, 0x6a, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0x10, 0x46, 0x40, 0x1b, 0x87, 0x0e, 0x52, 0x44, 0xa6, 0xd6, 0xe0, 0x5c, 0xb8, 0xb0, 0x86, 0x3c, 0xf6, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0xd2, 0xcc, 0xbc, 0x37, 0x28, 0xf8, 0x30, 0x37, 0x68, 0x51, 0xbd, 0xea, 0xa0, 0x51, 0xfe, 0xaa, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0xbf, 0x8c, 0x4d, 0xec, 0x6d, 0x0d, 0x6f, 0xeb, 0x1c, 0xb4, 0x2f, 0x5e, 0x75, 0xd0, 0x6c, 0x80, 0xd5, 0xac, 0x41, 0x2b, 0x35, 0x31, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0x45, 0xdb, 0xaa, 0x0d, 0x8e, 0x36, 0x7c, 0x1b, 0x34, 0xbd, 0x5b, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x16, 0xc3, 0x97, 0x6f, 0xf8, 0xc4, 0x66, 0x83, 0x06, 0x0e, 0xac, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0xdb, 0x0a, 0x56, 0x6b, 0x70, 0x2e, 0x5c, 0xd8, 0xa0, 0xbd, 0x07, 0xab, 0x0d, 0x0a, 0x3e, 0xcc, 0x0d, 0x5a, 0x54, 0xaf, 0x3a, 0x68, 0x20, 0xc3, 0x6a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x2f, 0x93, 0x3b, 0x7b, 0x3b, 0x68, 0x1e, 0xc3, 0xea, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x06, 0xe5, 0x57, 0xd8, 0x86, 0xc7, 0x47, 0x36, 0x28, 0xbf, 0xc2, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x77, 0x17, 0x96, 0x6f, 0xf8, 0x77, 0x7e, 0x0d, 0xd6, 0x62, 0x37, 0xd7, 0x06, 0x4d, 0x88, 0x50, 0xb5, 0xe1, 0x2f, 0x9a, 0x35, 0xfc, 0x3b, 0xbf, 0x06, 0xcb, 0xa6, 0xcb, 0x6b, 0xc3, 0x5b, 0x76, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x45, 0xd6, 0xb1, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xd5, 0xac, 0xaf, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x07, 0xe5, 0x57, 0x58, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0x2d, 0x1e, 0xfb, 0x41, 0xd3, 0x2f, 0x54, 0x1b, 0x1c, 0x6d, 0xf8, 0xd6, 0xa0, 0x20, 0x98, 0xdd, 0xf0, 0xe5, 0xe4, 0x06, 0xe1, 0xa9, 0xba, 0x41, 0x90, 0x9e, 0x6e, 0x90, 0x90, 0xde, 0xbd, 0x06, 0x01, 0x1b, 0xb4, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0x81, 0xc9, 0x1e, 0x34, 0x5f, 0x5c, 0xb5, 0x06, 0x61, 0x04, 0xb4, 0x41, 0x90, 0x9e, 0xae, 0x71, 0xe8, 0xa0, 0x6d, 0xe3, 0xaa, 0x35, 0x08, 0x23, 0xa0, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xcc, 0x49, 0x76, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0xb4, 0x6d, 0x5c, 0xd5, 0x1a, 0x04, 0x6c, 0xd0, 0x41, 0x78, 0xaa, 0xd6, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x16, 0x52, 0x6a, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x22, 0x8e, 0x55, 0x07, 0x4d, 0xbf, 0x50, 0x1d, 0x4e, 0xb1, 0x35, 0x68, 0x16, 0x86, 0x69, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0x9b, 0x71, 0xde, 0x20, 0x48, 0x4f, 0x37, 0x68, 0x60, 0x64, 0x6a, 0x0d, 0x9a, 0x8f, 0x98, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0x48, 0x56, 0x6c, 0xb0, 0xc4, 0x7e, 0xfb, 0xa0, 0xb1, 0xd4, 0xa9, 0x35, 0x68, 0x19, 0x76, 0xea, 0xa0, 0xe1, 0xd6, 0xa9, 0x35, 0x68, 0x23, 0x79, 0xea, 0xa0, 0xe1, 0xd6, 0xa9, 0x35, 0x68, 0x52, 0x7a, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x38, 0x2c, 0xb5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x6d, 0x4d, 0x4e, 0x1d, 0x34, 0xdb, 0x3a, 0x75, 0x50, 0xd6, 0x79, 0xb6, 0x06, 0xeb, 0xdd, 0x99, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x33, 0x07, 0x53, 0x1b, 0x34, 0xd3, 0x1e, 0xb5, 0x41, 0x53, 0x0b, 0x52, 0x07, 0x65, 0x9d, 0xe7, 0x1a, 0x84, 0xe9, 0xd8, 0x06, 0xe7, 0xc2, 0x85, 0x35, 0xe4, 0xb1, 0x37, 0xfc, 0x08, 0x33, 0x38, 0x7d, 0xd0, 0xda, 0x29, 0xc0, 0x41, 0x78, 0xaa, 0xb6, 0x1a, 0x34, 0x58, 0x28, 0xb0, 0xe1, 0xf1, 0x91, 0x0d, 0x1a, 0x2c, 0x14, 0xd8, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0x5d, 0x19, 0x7b, 0xf8, 0x60, 0xf5, 0xa0, 0x89, 0x12, 0xaa, 0x0d, 0x4a, 0x7b, 0xcb, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbe, 0x64, 0x65, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x73, 0x75, 0x74, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0x61, 0x87, 0xe6, 0xc1, 0xda, 0x3c, 0xee, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x25, 0x2b, 0x3b, 0x2b, 0x73, 0x2b, 0x93, 0x0b, 0xa3, 0x2b, 0x03, 0x91, 0x2b, 0x33, 0xdb, 0xf0, 0xe7, 0xd2, 0x80, 0x27, 0x57, 0x76, 0x1e, 0xac, 0xcd, 0xe3, 0x5e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xaf, 0xb0, 0xb9, 0xb9, 0xba, 0xb6, 0x32, 0x10, 0xb7, 0xb2, 0x39, 0xba, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xee, 0x46, 0xd5, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x89, 0xf8, 0xbe, 0x86, 0xcf, 0x95, 0x0e, 0x96, 0xeb, 0x70, 0xd7, 0x86, 0x07, 0x25, 0x37, 0x68, 0x19, 0xa4, 0x6a, 0x83, 0xb2, 0x4b, 0x76, 0x83, 0xc6, 0xfe, 0x04, 0xd6, 0x70, 0x49, 0xad, 0xf1, 0xf8, 0x70, 0x8a, 0x35, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0x24, 0xe7, 0xc2, 0x6e, 0x78, 0x84, 0x75, 0x83, 0x96, 0x41, 0xaa, 0x36, 0x68, 0xeb, 0xaf, 0xaa, 0x15, 0xf0, 0xc9, 0xca, 0xca, 0xda, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xb5, 0x95, 0xb1, 0x07, 0xab, 0x0f, 0xb1, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0xab, 0xb4, 0xd3, 0x0f, 0x56, 0x1f, 0x62, 0xb7, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0x50, 0xec, 0x68, 0xae, 0xe1, 0x57, 0xb2, 0x35, 0xfc, 0x9b, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x17, 0xd8, 0xaa, 0x83, 0xa5, 0xbc, 0xf0, 0x6b, 0xf8, 0x37, 0x67, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x6d, 0x2d, 0x3f, 0x68, 0x4f, 0xd9, 0x6a, 0x0d, 0xff, 0xe6, 0x6c, 0xd0, 0x82, 0xce, 0xd4, 0xc1, 0x52, 0x5e, 0xf8, 0x36, 0x28, 0x60, 0xf3, 0x37, 0x08, 0xd2, 0xd3, 0x0d, 0x9a, 0x5a, 0xb6, 0x5a, 0x83, 0x35, 0xac, 0xe5, 0x07, 0x45, 0x4e, 0xeb, 0x1a, 0xac, 0x11, 0x2d, 0x3f, 0x48, 0x75, 0x8f, 0x5d, 0x83, 0xd5, 0xa6, 0xe5, 0x1b, 0x2e, 0xa9, 0x0d, 0x1a, 0x0d, 0xa9, 0x5a, 0x83, 0x06, 0x46, 0xa6, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0x4b, 0x6a, 0x83, 0xd6, 0x7b, 0xa5, 0x0e, 0x5a, 0xbb, 0xa0, 0x5a, 0xc3, 0x1b, 0x77, 0x07, 0xcb, 0xeb, 0x9b, 0x0f, 0x82, 0x95, 0x75, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x26, 0x7a, 0xa5, 0x0e, 0x1a, 0x1f, 0xb7, 0x6a, 0x0d, 0xd6, 0xc5, 0x96, 0x6f, 0xb8, 0xa4, 0x36, 0x68, 0x34, 0xa4, 0x6a, 0x0d, 0x1a, 0x18, 0x99, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x4d, 0xf4, 0x4a, 0x6d, 0xd0, 0x44, 0x75, 0xd5, 0x41, 0xb0, 0xb2, 0xae, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x3e, 0xb8, 0xd5, 0x41, 0x1b, 0xf1, 0x56, 0x75, 0x38, 0xc5, 0x16, 0xf0, 0xc9, 0xca, 0xca, 0xe0, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x1a, 0x19, 0xa6, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x5d, 0x5a, 0x7b, 0xb0, 0xb8, 0x0e, 0xba, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0x60, 0x75, 0xc3, 0x07, 0x39, 0x1b, 0x34, 0x8e, 0x4c, 0xb5, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x6d, 0xf5, 0x5b, 0x75, 0x50, 0x50, 0x64, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x42, 0xf0, 0xe1, 0xa0, 0x7d, 0x82, 0xab, 0x0d, 0x0a, 0xd8, 0xfc, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0xdf, 0x9c, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xd0, 0xf6, 0x35, 0xd5, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x07, 0x77, 0x0f, 0xda, 0x27, 0xb8, 0x5a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x6d, 0x79, 0xaa, 0x35, 0x68, 0x9f, 0xe0, 0x6a, 0xc3, 0xdb, 0x3a, 0x83, 0xb3, 0x07, 0xed, 0x13, 0x5c, 0xb5, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0xdb, 0xe7, 0x54, 0x6b, 0xd0, 0x3e, 0xc1, 0xd5, 0x86, 0xb7, 0x75, 0x06, 0x97, 0x0f, 0xda, 0x27, 0xb8, 0x6a, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x35, 0x4c, 0xdc, 0x80, 0x47, 0x16, 0x26, 0x06, 0x1e, 0x5a, 0x59, 0xbb, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0xb0, 0xa6, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x83, 0xc7, 0x07, 0x4d, 0x46, 0x5c, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0x60, 0x75, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0x10, 0x82, 0x0f, 0x1b, 0xb4, 0x24, 0x72, 0xd5, 0x1a, 0xfe, 0xcd, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x35, 0x72, 0xd5, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x83, 0x9c, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0xc1, 0x87, 0x83, 0x96, 0x63, 0xae, 0x36, 0x28, 0x60, 0xf3, 0x37, 0x3c, 0xc2, 0xba, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xe0, 0xee, 0x41, 0xcb, 0x2e, 0x57, 0x1b, 0xde, 0xd6, 0x19, 0x1c, 0x1e, 0xdc, 0x3d, 0x68, 0x39, 0xe6, 0x6a, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x5a, 0x76, 0xb9, 0xda, 0xf0, 0xb6, 0xce, 0xe0, 0xec, 0x41, 0xcb, 0x2e, 0x57, 0x6b, 0xd0, 0x72, 0xcc, 0xd5, 0x86, 0xb7, 0x75, 0x06, 0x67, 0x0f, 0x5a, 0x8e, 0xb9, 0x6a, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x5a, 0x76, 0xb9, 0xda, 0xf0, 0xb6, 0xce, 0xe0, 0xf2, 0x41, 0xcb, 0x2e, 0x57, 0x6b, 0xd0, 0x72, 0xcc, 0xd5, 0x86, 0xb7, 0x75, 0x06, 0x97, 0x0f, 0x5a, 0x8e, 0xb9, 0x6a, 0x0d, 0x97, 0xd4, 0x06, 0x8d, 0x86, 0x54, 0xad, 0x41, 0x03, 0x23, 0x53, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xfd, 0x5c, 0xa9, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xd0, 0xfe, 0xce, 0x55, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0xc3, 0xbb, 0x3d, 0x6b, 0xb8, 0xa4, 0x36, 0x68, 0xe3, 0x3e, 0xea, 0xa0, 0xb5, 0x0b, 0xaa, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xd0, 0xb8, 0xcf, 0x55, 0xd5, 0x6a, 0xd0, 0x6c, 0x48, 0xd5, 0x86, 0x07, 0x25, 0x37, 0x08, 0x40, 0xb6, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0x1a, 0xd0, 0x10, 0xd8, 0x70, 0x47, 0xcd, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0x60, 0x75, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0x3e, 0xc8, 0xd9, 0xf0, 0xcc, 0xe4, 0x06, 0x45, 0x4e, 0xeb, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x6d, 0x47, 0xab, 0x36, 0x28, 0x60, 0xf3, 0x37, 0xbc, 0x65, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x77, 0x4e, 0x6a, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x60, 0xc8, 0xc5, 0xb5, 0xe1, 0x2d, 0xbb, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x4b, 0x6a, 0x83, 0x26, 0xe9, 0xa4, 0x0e, 0x5a, 0xbb, 0xa0, 0x5a, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0x1c, 0x42, 0xa0, 0x0d, 0xce, 0x85, 0x0b, 0x6b, 0xc8, 0x63, 0x6f, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0xa0, 0x45, 0x0a, 0x81, 0x83, 0xf0, 0x54, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0x81, 0xb3, 0xa9, 0x83, 0xe5, 0x19, 0xc8, 0x1b, 0x14, 0x39, 0xad, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0x0d, 0x8c, 0x4c, 0xad, 0xc1, 0x7a, 0x91, 0xe6, 0x83, 0x06, 0x78, 0xaa, 0xd6, 0x60, 0xbd, 0x3b, 0xf3, 0x41, 0x91, 0xd3, 0xba, 0x06, 0x0d, 0x2c, 0x4e, 0x6d, 0x50, 0xec, 0x68, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x03, 0x8b, 0x53, 0x07, 0xeb, 0x2e, 0x90, 0x37, 0x68, 0x80, 0xa7, 0x6a, 0xc3, 0x23, 0xac, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x66, 0x69, 0x74, 0x7a, 0x1b, 0xb4, 0x35, 0x39, 0xb5, 0x41, 0xeb, 0xa2, 0x55, 0xad, 0xe1, 0x57, 0xb2, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0xc1, 0x87, 0x83, 0xf6, 0x2f, 0xa7, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x0d, 0xb7, 0x4e, 0x1d, 0xb4, 0x46, 0x59, 0x55, 0x6b, 0xd0, 0x86, 0xe7, 0xd4, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0xb4, 0xe1, 0x39, 0x75, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x06, 0x78, 0xaa, 0x36, 0x3c, 0xc2, 0xba, 0x86, 0x4b, 0x6a, 0x83, 0x46, 0x43, 0xaa, 0x36, 0x68, 0xc3, 0x8d, 0x6a, 0x83, 0xa6, 0x43, 0xab, 0xd6, 0x60, 0xf9, 0xa4, 0xe6, 0x41, 0x41, 0x91, 0xb9, 0x1a, 0xb4, 0x34, 0x6a, 0xd5, 0x41, 0x41, 0x91, 0xd9, 0x1a, 0x2e, 0xa9, 0x0d, 0x1a, 0x0d, 0xa9, 0xda, 0xa0, 0x29, 0x39, 0xaa, 0x0d, 0x9a, 0x43, 0xad, 0x3a, 0x68, 0xe2, 0xf5, 0xaa, 0x35, 0x68, 0x3e, 0x62, 0x6a, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x9a, 0x8f, 0x98, 0x3a, 0x58, 0x77, 0x81, 0xbc, 0x41, 0x03, 0x3c, 0x55, 0x1b, 0x3e, 0xc8, 0xd9, 0xa0, 0x31, 0xd0, 0xab, 0x0d, 0x5a, 0xf6, 0xac, 0xda, 0xf0, 0x08, 0xeb, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xcd, 0x85, 0xb5, 0x95, 0x81, 0xdc, 0x95, 0xd1, 0xbd, 0x90, 0xc9, 0xe5, 0x6d, 0xf8, 0x37, 0x67, 0x83, 0x76, 0xdb, 0xa7, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x3c, 0x38, 0x7c, 0xd0, 0x7c, 0x63, 0xd5, 0x1a, 0x2e, 0xa9, 0x0d, 0x12, 0xe4, 0x63, 0x37, 0x68, 0xbc, 0x8f, 0x6a, 0x0d, 0xd6, 0x5d, 0x20, 0x1f, 0xb4, 0x35, 0x39, 0xd5, 0x1a, 0x2e, 0xa9, 0x0d, 0x1a, 0x0d, 0xa9, 0x5a, 0x83, 0x06, 0x46, 0xa6, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xd0, 0x7c, 0x63, 0xd5, 0x41, 0xc3, 0xa1, 0x55, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x97, 0xd4, 0x1a, 0x34, 0xcb, 0x6b, 0xd5, 0x06, 0x8d, 0xf7, 0x51, 0xad, 0xc1, 0xba, 0x0b, 0xe4, 0x83, 0xa6, 0xab, 0xaf, 0xda, 0xa0, 0xa5, 0xf8, 0xa9, 0x35, 0xbc, 0xad, 0x33, 0xb8, 0x7c, 0xd0, 0xfa, 0xf2, 0x55, 0x6b, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x8d, 0xbb, 0x83, 0x75, 0xde, 0xdb, 0x07, 0xed, 0xb6, 0x4f, 0xad, 0xe1, 0xdf, 0x9c, 0x0d, 0xda, 0x0a, 0xa4, 0xda, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0xe0, 0xf2, 0x41, 0xf3, 0x8d, 0x55, 0x1b, 0x7e, 0x25, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0xa5, 0x56, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xe0, 0x6c, 0xea, 0xa0, 0xb9, 0x09, 0xaa, 0xd6, 0xe0, 0xd4, 0x70, 0xb4, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x2b, 0x90, 0x6a, 0x83, 0x46, 0xd4, 0xaf, 0xda, 0x70, 0x49, 0xad, 0x41, 0x33, 0xf8, 0x56, 0xad, 0x41, 0x4b, 0x6e, 0x55, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xdd, 0xbb, 0xaa, 0x83, 0xd6, 0xdf, 0xaf, 0xd6, 0xa0, 0x81, 0x91, 0xa9, 0x0d, 0x97, 0xd4, 0x06, 0x0d, 0x8c, 0x4c, 0xad, 0xc1, 0xc1, 0x23, 0xe3, 0xa0, 0x71, 0xfb, 0xa9, 0x15, 0x5c, 0x3e, 0x48, 0xab, 0x8e, 0x3a, 0x68, 0x41, 0x67, 0xaa, 0x35, 0x58, 0x77, 0x81, 0xbc, 0xe1, 0x92, 0xda, 0x60, 0xdd, 0x05, 0xf2, 0x1a, 0x1c, 0x3c, 0x32, 0x0e, 0x9a, 0xae, 0xbe, 0x3a, 0x68, 0x58, 0x00, 0xab, 0xda, 0xa0, 0x15, 0xa9, 0xaa, 0x35, 0x68, 0xd4, 0x77, 0x6a, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x35, 0x08, 0x36, 0xd3, 0x0d, 0x1a, 0x58, 0x9c, 0xda, 0x60, 0xbd, 0x3b, 0xf3, 0x06, 0x6d, 0x78, 0x4e, 0x6d, 0xd0, 0x7c, 0xc4, 0x54, 0x07, 0xeb, 0x2e, 0x90, 0x37, 0x68, 0x80, 0xa7, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x4f, 0xad, 0xdd, 0xa0, 0x0d, 0xa5, 0xaa, 0x35, 0xfc, 0xa2, 0xb4, 0xc1, 0xb2, 0x19, 0xe7, 0x0d, 0x97, 0xd4, 0x06, 0x8d, 0x86, 0x54, 0xad, 0x41, 0xa3, 0x6f, 0x57, 0x07, 0x05, 0x6c, 0xfe, 0x41, 0xeb, 0xa3, 0x54, 0x6d, 0xd0, 0x90, 0x55, 0xd5, 0x1a, 0x34, 0x29, 0x3d, 0xb5, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x47, 0x6b, 0x8d, 0x0d, 0xca, 0xa6, 0xf7, 0x0d, 0xd6, 0x48, 0x6a, 0x76, 0xd0, 0xac, 0x06, 0xd5, 0x06, 0x05, 0x6c, 0xfe, 0x86, 0x0f, 0x72, 0x36, 0x68, 0xbe, 0xfd, 0x6a, 0x83, 0x22, 0xa7, 0x75, 0xc3, 0x25, 0xb5, 0x41, 0xa3, 0x21, 0x55, 0x1b, 0x34, 0x37, 0x57, 0xb5, 0x06, 0xcb, 0x27, 0x35, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x65, 0x0b, 0xea, 0x41, 0x43, 0x28, 0x58, 0x07, 0xcd, 0x6a, 0x50, 0x6d, 0xd0, 0x5a, 0xfe, 0x55, 0xad, 0x06, 0xad, 0xf3, 0x54, 0x6d, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0xeb, 0x2e, 0x90, 0xd7, 0x60, 0xbd, 0x3b, 0xf3, 0x41, 0x01, 0x9b, 0xbf, 0x41, 0x9b, 0x34, 0x55, 0x6b, 0xd0, 0xc0, 0xe2, 0xd4, 0x41, 0x01, 0x9b, 0xbf, 0x06, 0x6d, 0x78, 0x4e, 0x1d, 0x14, 0xb0, 0xf9, 0x6b, 0xd0, 0x7c, 0xc4, 0xd4, 0x86, 0x4b, 0x6a, 0x83, 0x46, 0x43, 0xaa, 0xd6, 0x60, 0xdd, 0x05, 0xf2, 0x86, 0x4b, 0x6a, 0x83, 0x46, 0x82, 0xa5, 0x0e, 0x5a, 0xbb, 0xa0, 0x6a, 0x0d, 0x5a, 0x86, 0x9d, 0xda, 0x70, 0x49, 0x6d, 0xd0, 0x68, 0x48, 0xd5, 0x41, 0x63, 0xa8, 0x55, 0x6b, 0xd0, 0xa8, 0xef, 0xd4, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x04, 0xa9, 0x6a, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x16, 0x81, 0x8c, 0x6e, 0x50, 0x36, 0xbd, 0x1f, 0xb4, 0xb2, 0x79, 0xb5, 0x86, 0x5f, 0x94, 0x36, 0x58, 0x36, 0xe3, 0xbc, 0xe1, 0x92, 0xda, 0xa0, 0xd1, 0x90, 0xaa, 0x35, 0x58, 0x77, 0x81, 0x7c, 0x70, 0x5a, 0x39, 0xab, 0x35, 0x68, 0x23, 0x79, 0xea, 0xa0, 0x51, 0x27, 0xac, 0x35, 0x68, 0x52, 0x7a, 0x6a, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x8e, 0xd6, 0x1a, 0x1b, 0x94, 0x4d, 0xef, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0xa5, 0xd8, 0xab, 0x0e, 0x9a, 0x9b, 0xa0, 0xda, 0xa0, 0xc8, 0x69, 0xdd, 0xf0, 0x41, 0xce, 0x06, 0xcd, 0xb7, 0x5f, 0x6d, 0x50, 0xe4, 0xb4, 0x6e, 0xb8, 0xa4, 0x36, 0x68, 0x34, 0xa4, 0x6a, 0x83, 0xc6, 0x92, 0xb0, 0xd6, 0xa0, 0xa5, 0xd8, 0xab, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0x7a, 0xd0, 0x92, 0x19, 0xd6, 0x41, 0x73, 0x13, 0x54, 0x07, 0x6d, 0xe2, 0x60, 0x75, 0x38, 0xc5, 0xea, 0x70, 0x8a, 0xad, 0x06, 0x2d, 0x68, 0x30, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x80, 0x1f, 0x6d, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x65, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x72, 0x65, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xb4, 0x68, 0x5b, 0xb5, 0x41, 0xd3, 0xbf, 0x56, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x73, 0xcb, 0x6b, 0x0f, 0xd6, 0x77, 0x42, 0x1f, 0x34, 0x00, 0x4c, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x16, 0xc3, 0x97, 0x6f, 0x70, 0xc0, 0xa2, 0x5b, 0x83, 0x82, 0x34, 0x76, 0x83, 0x65, 0xfb, 0x82, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xe0, 0x3b, 0x86, 0x16, 0x06, 0x47, 0x57, 0x26, 0x37, 0xd7, 0x32, 0x86, 0x56, 0x36, 0xb6, 0xb6, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0x3e, 0x63, 0x6f, 0x72, 0x65, 0x2d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x1b, 0xb4, 0x2d, 0x5c, 0x55, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0xac, 0xd6, 0x20, 0x5d, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x00, 0x8f, 0xb3, 0x32, 0xba, 0x16, 0xba, 0xb7, 0xb6, 0xb2, 0xb9, 0x0d, 0x16, 0xc1, 0x0d, 0xb6, 0xc1, 0xd1, 0x86, 0x6f, 0x0d, 0x96, 0x54, 0x27, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x96, 0x4f, 0x21, 0xaf, 0xe1, 0x6d, 0x9d, 0x01, 0x8f, 0xac, 0x4c, 0xaf, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x98, 0xd1, 0x78, 0x83, 0x06, 0xce, 0xa6, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xe1, 0x45, 0xac, 0x36, 0x68, 0x7d, 0x9a, 0x6a, 0x83, 0xf6, 0x94, 0xad, 0xda, 0xa0, 0x81, 0xb3, 0xa9, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x1b, 0xe0, 0x7d, 0x50, 0xd6, 0x79, 0x1e, 0xb4, 0xc1, 0x8a, 0xb5, 0x86, 0xb7, 0x75, 0x0e, 0x9a, 0x56, 0xa6, 0x6a, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0xd1, 0x8a, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x03, 0x23, 0x53, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc5, 0x8c, 0xc6, 0x1b, 0x34, 0x70, 0x36, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x49, 0x16, 0x6b, 0x83, 0xd6, 0xa7, 0xa9, 0x36, 0x68, 0x41, 0x67, 0xaa, 0x0d, 0x1a, 0x38, 0x9b, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x67, 0x0b, 0xd3, 0x2b, 0xdb, 0xa0, 0x25, 0x59, 0xac, 0x0d, 0x5a, 0x9f, 0xa6, 0x3a, 0x68, 0x95, 0x17, 0xeb, 0xa0, 0x55, 0x5e, 0xac, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0x82, 0xcd, 0x74, 0x83, 0x10, 0x7c, 0x38, 0x38, 0x9e, 0x63, 0x6c, 0xf8, 0x20, 0x67, 0x83, 0xc6, 0x91, 0xa9, 0x36, 0x28, 0x28, 0x32, 0x37, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x06, 0x4d, 0x3b, 0x53, 0x6d, 0x50, 0x42, 0xc7, 0x6e, 0xd0, 0x30, 0x35, 0xd6, 0x41, 0x98, 0x8e, 0xad, 0x41, 0x41, 0x1a, 0xbb, 0x86, 0xef, 0xdb, 0x37, 0x68, 0x49, 0xe4, 0x6a, 0x83, 0x12, 0x3a, 0x76, 0x83, 0xb5, 0xa6, 0xdd, 0x07, 0x61, 0x3a, 0xb6, 0x41, 0x03, 0xd6, 0x54, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x1e, 0x59, 0xd8, 0xb9, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0x3e, 0x61, 0x72, 0x6d, 0x73, 0x2d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0x65, 0x97, 0xab, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xf8, 0xcf, 0xca, 0xe8, 0x5a, 0xc2, 0xe4, 0xda, 0xe6, 0x36, 0x58, 0x8f, 0x3c, 0xbf, 0x41, 0xd3, 0x0d, 0x57, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0xd0, 0x30, 0x35, 0xd6, 0x86, 0x0f, 0x72, 0x36, 0x68, 0x9b, 0xe5, 0x6a, 0x83, 0x82, 0x22, 0x73, 0x83, 0x82, 0x34, 0x76, 0xc0, 0x3b, 0x7b, 0x3b, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xc0, 0xef, 0xac, 0x8c, 0xae, 0x25, 0x4c, 0xae, 0xad, 0x85, 0x2e, 0x0f, 0xae, 0x6c, 0x83, 0x45, 0x70, 0x83, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xb6, 0xd1, 0xb1, 0xda, 0xa0, 0x51, 0x9d, 0xab, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xbb, 0x30, 0x72, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x47, 0x2b, 0x6b, 0x83, 0xdb, 0xa0, 0xf5, 0x69, 0xaa, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x43, 0xfe, 0x58, 0x1d, 0x34, 0x70, 0x75, 0xb5, 0x41, 0x90, 0x9e, 0x6e, 0xd0, 0xb2, 0xcb, 0xd5, 0x1a, 0xb4, 0xba, 0x4d, 0xb5, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0x57, 0xc8, 0x6a, 0x0d, 0x1a, 0x05, 0xa7, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0x5a, 0x64, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0xd0, 0xb0, 0xd2, 0x55, 0xad, 0x41, 0xa3, 0xeb, 0x54, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x55, 0x8b, 0xac, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0x1a, 0x10, 0xba, 0xaa, 0x35, 0x38, 0xa5, 0x2d, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x56, 0x2d, 0xb2, 0x36, 0x68, 0x3a, 0x24, 0xeb, 0xa0, 0xed, 0x8d, 0xac, 0x0e, 0xda, 0xcb, 0xa6, 0x5a, 0x66, 0x0d, 0x9a, 0x09, 0xc8, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x26, 0x20, 0xab, 0x01, 0x78, 0x3e, 0x2b, 0xa3, 0x03, 0x29, 0xc3, 0x83, 0x2b, 0x1b, 0xa3, 0x2b, 0x23, 0x03, 0xa1, 0xcb, 0x83, 0x2b, 0x03, 0x79, 0x33, 0x03, 0xa1, 0x43, 0x4b, 0x9b, 0x03, 0x09, 0x93, 0x6b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0xdb, 0x17, 0xdc, 0xf0, 0xef, 0xfc, 0x02, 0xfc, 0x67, 0x6f, 0x6c, 0x2d, 0x74, 0x79, 0x70, 0x65, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xda, 0x46, 0xc7, 0xda, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0x0f, 0x56, 0x9a, 0x76, 0xaf, 0xe1, 0xcf, 0xa5, 0x01, 0xcf, 0x2d, 0xac, 0x3d, 0x58, 0xaf, 0xf5, 0xdc, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x36, 0xe3, 0xbc, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x63, 0xec, 0xd8, 0x06, 0x4b, 0xaa, 0x93, 0x36, 0x58, 0x62, 0xbf, 0xbd, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x21, 0x83, 0x60, 0x83, 0xb6, 0x0b, 0xb2, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0xd6, 0x9a, 0x76, 0x6f, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0x9a, 0xa7, 0x90, 0xda, 0xa0, 0x84, 0x8e, 0xdd, 0x60, 0x81, 0x85, 0xf3, 0x41, 0x98, 0x8e, 0xad, 0xe1, 0x2d, 0xbb, 0x35, 0x3c, 0x71, 0xb7, 0xe1, 0x59, 0xbc, 0xc1, 0xeb, 0xc1, 0xdd, 0xc1, 0xcb, 0xc1, 0xf1, 0xc1, 0xe1, 0xc1, 0xcb, 0xc1, 0xc7, 0xc1, 0xe9, 0xc1, 0xcb, 0xc1, 0xc9, 0x41, 0xdb, 0xe0, 0xe1, 0xe0, 0xf2, 0xe0, 0xed, 0xa0, 0x6e, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x19, 0xf6, 0xdb, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xa9, 0xa2, 0xac, 0xaa, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x06, 0xc7, 0x55, 0xab, 0x0e, 0x8e, 0xc9, 0x16, 0x07, 0xed, 0x9c, 0x65, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0x97, 0xd4, 0x06, 0x6d, 0xdc, 0x47, 0xad, 0x41, 0x03, 0x23, 0x53, 0x07, 0x8b, 0xe0, 0x06, 0x3b, 0x68, 0xe9, 0x44, 0x6a, 0x35, 0x68, 0x9b, 0x27, 0x6b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0x6d, 0x9e, 0xac, 0x06, 0x40, 0xb3, 0x30, 0x36, 0x36, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb8, 0xb7, 0xb9, 0xb9, 0x34, 0x31, 0xb6, 0x32, 0x10, 0xba, 0x3c, 0xb8, 0xb2, 0x39, 0x90, 0xbb, 0x32, 0x90, 0xb1, 0xb7, 0x3a, 0x36, 0x32, 0x10, 0xb1, 0x32, 0x90, 0x32, 0x3c, 0xb8, 0xb2, 0x31, 0xba, 0x34, 0xb7, 0x33, 0xd7, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0x41, 0xdb, 0x3c, 0x59, 0x1b, 0x84, 0x1a, 0xe2, 0x06, 0x4b, 0xec, 0xb7, 0x37, 0x7c, 0x30, 0xbf, 0xc1, 0x7a, 0x77, 0xe6, 0x0d, 0x82, 0xf6, 0x67, 0x83, 0x05, 0x37, 0xdc, 0x1b, 0x2c, 0x38, 0xe2, 0x5e, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0x8d, 0xe3, 0x5e, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x25, 0xe2, 0xfb, 0x06, 0x8d, 0xef, 0x64, 0x55, 0xb3, 0x06, 0x0d, 0x90, 0x62, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x34, 0x40, 0x8a, 0xd5, 0x00, 0x7c, 0x9e, 0x95, 0xd1, 0x81, 0xb4, 0x85, 0xc1, 0x81, 0xbc, 0x99, 0x81, 0xd0, 0xbd, 0xb5, 0x95, 0xcd, 0x81, 0xa4, 0x99, 0x81, 0x94, 0xe1, 0xa5, 0xcd, 0xd1, 0xcd, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xe6, 0x73, 0xb2, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xd9, 0x84, 0x79, 0xb0, 0x9e, 0x23, 0x7b, 0x83, 0x20, 0x3d, 0xdd, 0x60, 0x7d, 0xdc, 0xe0, 0x1a, 0xac, 0x77, 0x67, 0x3e, 0x28, 0x28, 0x32, 0xd7, 0xa0, 0x0d, 0xcf, 0xa9, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x1a, 0xf5, 0x9d, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0xef, 0xb6, 0xb0, 0x3c, 0xb1, 0x32, 0x90, 0xb1, 0xb7, 0x3a, 0x36, 0x32, 0x10, 0xb1, 0x32, 0x90, 0xb6, 0x37, 0xb9, 0x32, 0x90, 0xb0, 0xb3, 0x33, 0xb9, 0xb2, 0xb9, 0xb9, 0x34, 0xbb, 0xb2, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x9a, 0x8f, 0x98, 0xda, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0xc1, 0xe5, 0xc1, 0xe3, 0x83, 0xf5, 0x71, 0x83, 0xad, 0x80, 0xef, 0x96, 0x36, 0x56, 0x6e, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0xe3, 0xf3, 0x51, 0x07, 0x61, 0x3a, 0xb6, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb3, 0x3a, 0xf2, 0xf0, 0xc1, 0x6a, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0x7a, 0x9c, 0xd5, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xf1, 0xf9, 0xa8, 0x36, 0xbc, 0x65, 0xb7, 0x86, 0x27, 0xee, 0x36, 0x3c, 0x8b, 0x77, 0xd0, 0x3e, 0xbd, 0xc0, 0x41, 0x78, 0xaa, 0x1e, 0x4e, 0xb1, 0xd6, 0xa0, 0xe5, 0x75, 0xac, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x96, 0xd7, 0xb1, 0x1a, 0x00, 0x8f, 0xc6, 0xd0, 0xca, 0xc6, 0xd6, 0x40, 0xee, 0xca, 0x40, 0xd0, 0xc2, 0xec, 0xca, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xca, 0xf0, 0xe0, 0xca, 0xc6, 0xe8, 0xca, 0xc8, 0x40, 0xdc, 0xea, 0xda, 0xc4, 0xca, 0xe4, 0x40, 0xde, 0xcc, 0x40, 0xc2, 0xe4, 0xda, 0xe6, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x2d, 0x89, 0x5c, 0x1d, 0xac, 0x35, 0xed, 0xde, 0xa0, 0xb5, 0x9f, 0xac, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x68, 0xd6, 0x20, 0x6b, 0x83, 0xb6, 0x0b, 0xb2, 0x36, 0x28, 0x48, 0x63, 0x07, 0x0f, 0xd7, 0xa0, 0x20, 0x8d, 0xdd, 0x20, 0xad, 0x26, 0x69, 0x0d, 0xca, 0x92, 0xf7, 0x35, 0x28, 0x56, 0x05, 0xda, 0xa0, 0x6c, 0xaa, 0x5f, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0xcd, 0x1a, 0x64, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xe0, 0xa1, 0x85, 0xd9, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0x74, 0x7c, 0xd6, 0x06, 0x65, 0x53, 0xfd, 0x06, 0x6d, 0xbb, 0x63, 0xb5, 0xe1, 0x2d, 0xbb, 0x35, 0x28, 0x48, 0x63, 0x07, 0xfc, 0x32, 0x3c, 0x38, 0x7a, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x98, 0x31, 0x78, 0x83, 0x44, 0xb8, 0xe0, 0x0d, 0x92, 0xca, 0x92, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xf0, 0xd1, 0xc2, 0xec, 0xe8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x62, 0xc6, 0xe0, 0x0d, 0x12, 0xe1, 0x82, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xed, 0xdd, 0x67, 0xd5, 0x86, 0x27, 0xee, 0x36, 0x3c, 0x8b, 0x37, 0xf8, 0x38, 0xf8, 0x3b, 0xb8, 0x3c, 0x78, 0x39, 0x68, 0x1b, 0xdc, 0x1d, 0xbc, 0x1e, 0xbc, 0x1d, 0x5c, 0x1c, 0xbc, 0x1c, 0x5c, 0x1e, 0xb4, 0x0d, 0xfe, 0x0e, 0x6e, 0x0e, 0xda, 0x06, 0x0f, 0x07, 0x97, 0x07, 0x6f, 0x07, 0x9f, 0x07, 0x75, 0x83, 0x97, 0x83, 0xe3, 0x83, 0xc3, 0x83, 0xf6, 0x65, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xc6, 0xfd, 0xb3, 0x6a, 0x50, 0x37, 0x38, 0x3a, 0x78, 0x38, 0xb8, 0x3d, 0x68, 0x5f, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xae, 0x40, 0xab, 0xda, 0xf0, 0x96, 0xdd, 0x1a, 0x14, 0xa4, 0xb1, 0x03, 0xbc, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0xe7, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x2c, 0x02, 0x19, 0xdd, 0xa0, 0x6c, 0x7a, 0x5f, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x90, 0xc4, 0x0e, 0xb5, 0x41, 0xd9, 0xf4, 0xbe, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xc7, 0x81, 0x8f, 0x83, 0xc6, 0xe5, 0xb3, 0x5a, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xe3, 0xc0, 0xc7, 0x41, 0xbb, 0xfa, 0x59, 0xb5, 0xe1, 0x89, 0xbb, 0x0d, 0xcf, 0xe2, 0x0d, 0xde, 0x0e, 0x9e, 0x0e, 0x3e, 0x0f, 0x3e, 0x0f, 0x9e, 0x0e, 0xee, 0x0e, 0x7e, 0x0e, 0xea, 0x96, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0x0a, 0x35, 0xa4, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x5b, 0x24, 0x5a, 0x55, 0x1b, 0xde, 0xb2, 0x5b, 0x83, 0x82, 0x34, 0x76, 0x80, 0xa7, 0x0c, 0x8f, 0x4e, 0x2e, 0x5c, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x1b, 0x94, 0x4d, 0xef, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x92, 0xd8, 0xa1, 0x36, 0x28, 0x9b, 0xde, 0x0f, 0x1a, 0x87, 0xd1, 0x3a, 0x68, 0xb5, 0x45, 0xab, 0x0d, 0x4f, 0xdc, 0x6d, 0x78, 0x16, 0x6f, 0xf0, 0x72, 0x70, 0x7c, 0x70, 0x7a, 0x70, 0x79, 0xf0, 0x70, 0x50, 0xb7, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0x56, 0xa8, 0x21, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0x02, 0xd2, 0xaa, 0xda, 0xf0, 0x96, 0xdd, 0x1a, 0x14, 0xa4, 0xb1, 0x1b, 0x34, 0x0e, 0x21, 0xb0, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8b, 0x40, 0x46, 0x0f, 0x9a, 0x40, 0xd2, 0xda, 0xf0, 0xc4, 0xdd, 0x86, 0x67, 0xf1, 0x06, 0x47, 0x07, 0x0f, 0x07, 0xb7, 0x07, 0x2f, 0x07, 0x75, 0xcb, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x85, 0x1a, 0xd2, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x71, 0x08, 0x81, 0xaa, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x5a, 0x04, 0xce, 0x6a, 0x83, 0xb6, 0x0b, 0xb2, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x49, 0x65, 0x49, 0x07, 0x8d, 0x27, 0x68, 0x75, 0x78, 0x5a, 0x67, 0x35, 0x68, 0xbd, 0x12, 0x6b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0xf5, 0x4a, 0xac, 0x06, 0xc0, 0xb3, 0x31, 0xb4, 0xb2, 0xb1, 0x35, 0x90, 0xbb, 0x32, 0x10, 0xb4, 0x30, 0xbb, 0x32, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0x32, 0x3c, 0xb8, 0xb2, 0x31, 0xba, 0x32, 0x32, 0x10, 0xb7, 0xba, 0x36, 0xb1, 0x32, 0x39, 0x90, 0x37, 0x33, 0x90, 0x31, 0xb4, 0x30, 0x38, 0xba, 0x32, 0xb9, 0xb9, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0x7c, 0x4e, 0xd6, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0xe3, 0x3b, 0x59, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0xeb, 0xe3, 0x06, 0xd7, 0x60, 0xbd, 0x3b, 0xf3, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x85, 0x4c, 0x6b, 0x83, 0x45, 0x70, 0x83, 0x07, 0xe9, 0x29, 0x50, 0x6b, 0xd0, 0x86, 0xe7, 0xd4, 0x41, 0x3b, 0x84, 0x5a, 0x6b, 0xd0, 0x7c, 0xc4, 0xd4, 0x86, 0xb7, 0xec, 0xd6, 0xf0, 0xc4, 0xdd, 0x86, 0x67, 0xf1, 0x0e, 0x1a, 0x68, 0x0d, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0xad, 0x90, 0x69, 0x6d, 0xb0, 0x08, 0x6e, 0x70, 0x0d, 0xff, 0xe6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd3, 0xf1, 0x59, 0x1b, 0x94, 0x4d, 0xf5, 0x07, 0xad, 0xf2, 0x62, 0x6d, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0x74, 0x7c, 0xd6, 0x06, 0x65, 0x53, 0xfd, 0x06, 0xad, 0xf3, 0x66, 0xd5, 0x1a, 0x34, 0xea, 0x3b, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xe0, 0xd1, 0xe5, 0xcd, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xb0, 0x08, 0x64, 0x74, 0x83, 0xb2, 0xe9, 0x7d, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0xac, 0x8f, 0x1b, 0x6c, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0xf1, 0x9d, 0xac, 0x0d, 0x4a, 0x78, 0xcc, 0x35, 0x68, 0xc7, 0x53, 0xab, 0x0d, 0x16, 0xc1, 0x0d, 0x6e, 0x50, 0x90, 0xc6, 0x0e, 0x1e, 0xae, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xeb, 0xe3, 0x06, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0xd0, 0x34, 0xaa, 0x56, 0x1b, 0x14, 0xa4, 0xb1, 0x83, 0x8b, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0x34, 0xaa, 0xd6, 0x86, 0xb7, 0x75, 0x06, 0xa7, 0x0f, 0x9a, 0x46, 0xd5, 0xea, 0x60, 0x11, 0xdc, 0x60, 0xab, 0x41, 0xa3, 0xf2, 0x58, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x8d, 0xca, 0x63, 0x35, 0x80, 0xff, 0x59, 0x19, 0x1d, 0x48, 0x98, 0x5c, 0xdb, 0x1c, 0x48, 0x9a, 0x1b, 0x08, 0xdd, 0x5b, 0x5b, 0xd9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0xb5, 0x06, 0xe9, 0x41, 0x7b, 0xa5, 0x59, 0x07, 0x6d, 0x11, 0x65, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xc6, 0x82, 0xb2, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x38, 0x64, 0x10, 0x6c, 0xb0, 0x1e, 0x79, 0x7e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf0, 0x60, 0x71, 0x1d, 0xf4, 0x86, 0xb7, 0xec, 0xd6, 0xf0, 0xc4, 0xdd, 0x86, 0x67, 0xf1, 0x06, 0xaf, 0x07, 0x77, 0x07, 0x2f, 0x07, 0xc7, 0x07, 0x87, 0x07, 0x1f, 0x07, 0xa7, 0x07, 0x2f, 0x07, 0x27, 0x07, 0x6d, 0x83, 0x8f, 0x83, 0xa3, 0x83, 0x87, 0x83, 0xc3, 0x83, 0xd3, 0x83, 0x97, 0x83, 0xcb, 0x07, 0xed, 0x8e, 0x65, 0x6d, 0x78, 0x50, 0x72, 0x83, 0xd3, 0x91, 0xc8, 0x41, 0x83, 0x69, 0x59, 0xb3, 0x06, 0x2d, 0x6f, 0x62, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xb4, 0xbc, 0x89, 0xd5, 0x00, 0x78, 0x31, 0x86, 0x56, 0x36, 0xb6, 0x06, 0x42, 0x87, 0x16, 0x46, 0x07, 0x72, 0x57, 0x76, 0x22, 0x57, 0x06, 0xc2, 0xf6, 0xf6, 0xb6, 0x96, 0xe6, 0x76, 0x06, 0x62, 0xf6, 0x26, 0x07, 0x12, 0x06, 0x32, 0xf6, 0x26, 0x57, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0xb2, 0x7d, 0xc1, 0x83, 0x65, 0x33, 0xce, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0x8d, 0xef, 0x64, 0x6d, 0x70, 0x72, 0x90, 0xdb, 0x60, 0x7d, 0xdc, 0xe0, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0x8f, 0x1b, 0xdc, 0x70, 0x49, 0x6d, 0xd0, 0x48, 0xb0, 0xd4, 0x41, 0x5b, 0x71, 0x59, 0x6d, 0xd0, 0xc8, 0xa0, 0xd6, 0x1a, 0xac, 0x17, 0x69, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0xad, 0x90, 0x69, 0x6d, 0xb0, 0xc4, 0x7e, 0xfb, 0x20, 0xd5, 0x16, 0x6e, 0x0d, 0x1a, 0x58, 0x9c, 0x3a, 0x68, 0x04, 0x60, 0x6b, 0x0d, 0xda, 0xf0, 0x9c, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xad, 0x90, 0x69, 0x6d, 0xb0, 0x08, 0x6e, 0x70, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x92, 0xda, 0xa0, 0x31, 0x5a, 0xa9, 0x35, 0x68, 0x60, 0x64, 0xea, 0xa0, 0x41, 0x51, 0xad, 0x36, 0x28, 0x72, 0x5a, 0x0f, 0x1a, 0x73, 0x90, 0x6a, 0x0d, 0x9a, 0x8f, 0x98, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xad, 0x90, 0x69, 0xad, 0xe1, 0x92, 0xda, 0x60, 0x7d, 0xdc, 0xe0, 0x41, 0xc3, 0x02, 0x58, 0x07, 0xe9, 0x29, 0x50, 0x6b, 0xd0, 0xa8, 0xef, 0xd4, 0x06, 0x05, 0x69, 0xec, 0x06, 0xed, 0x78, 0x6a, 0x6d, 0xd0, 0xd6, 0xa7, 0xd6, 0x06, 0x85, 0xa1, 0xea, 0x06, 0x2d, 0x7b, 0x71, 0x6c, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0xb4, 0x30, 0x99, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xd3, 0xa8, 0x5a, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x14, 0xa4, 0xb1, 0x83, 0x87, 0x1b, 0xb4, 0xca, 0xaa, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xb8, 0xb8, 0x41, 0x9b, 0xb3, 0x5a, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x84, 0xc7, 0x75, 0x78, 0xe8, 0xa7, 0xc3, 0x29, 0x56, 0x87, 0x53, 0x6c, 0x35, 0x68, 0xa8, 0x19, 0x6b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xfc, 0x83, 0x93, 0x7b, 0x23, 0xab, 0x1b, 0x2b, 0x03, 0x61, 0x0b, 0xd3, 0xcb, 0x03, 0x19, 0x7b, 0x93, 0x2b, 0x03, 0x39, 0x2b, 0x73, 0x2b, 0x93, 0x0b, 0xa3, 0x7b, 0x93, 0x03, 0x31, 0x7b, 0x93, 0x03, 0x99, 0xa3, 0x0b, 0xa3, 0x4b, 0x1b, 0x03, 0x29, 0xc3, 0x2b, 0x1b, 0xab, 0xa3, 0x4b, 0x7b, 0x73, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x3a, 0x68, 0x59, 0x11, 0x6b, 0x83, 0xe5, 0x90, 0x4c, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0xd6, 0x60, 0x63, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0xa0, 0x71, 0x6d, 0x91, 0x0d, 0x16, 0x60, 0x36, 0xad, 0xe1, 0xfb, 0xf6, 0x01, 0x8f, 0x2e, 0x8c, 0xdd, 0xa0, 0x84, 0x8e, 0x5d, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0xac, 0xdf, 0xa0, 0xcc, 0xd2, 0x3d, 0x58, 0x5e, 0xe1, 0x7c, 0x10, 0xa6, 0x63, 0x6b, 0xb0, 0xa4, 0x3a, 0x69, 0x83, 0x82, 0x22, 0x73, 0x83, 0x73, 0xfe, 0xd2, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0xeb, 0xd4, 0xbd, 0xe1, 0x31, 0x99, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x2f, 0x0c, 0xaf, 0x3c, 0x28, 0xb3, 0x74, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x72, 0x56, 0xec, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x0e, 0x19, 0x04, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x0a, 0x37, 0xd1, 0x0d, 0xca, 0xa6, 0xfa, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x53, 0x4a, 0x5b, 0xb5, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x22, 0x6b, 0xab, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x0b, 0x14, 0x52, 0x1b, 0x9c, 0x1a, 0x8e, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0x4f, 0x53, 0x1d, 0x34, 0x63, 0x22, 0xb5, 0xe1, 0x92, 0xda, 0xa0, 0xd9, 0x86, 0xac, 0x35, 0x68, 0x60, 0x64, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x66, 0x34, 0xde, 0xa0, 0x81, 0xb3, 0xa9, 0x0d, 0xda, 0x2f, 0xc6, 0xda, 0xa0, 0x81, 0xb3, 0xa9, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x91, 0x6a, 0x6b, 0xc3, 0x63, 0x32, 0x1b, 0xac, 0xcb, 0xd2, 0xed, 0xa0, 0xac, 0xf3, 0x3c, 0x68, 0x95, 0x17, 0xab, 0x0d, 0x4e, 0xec, 0x37, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xee, 0xbc, 0x6f, 0x50, 0x36, 0xd5, 0xaf, 0x41, 0x21, 0x98, 0x7a, 0xd0, 0x1c, 0xd3, 0x56, 0x1b, 0x94, 0xf6, 0x96, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0xcb, 0x2b, 0x13, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xd2, 0x9b, 0xfe, 0xa0, 0x31, 0xa7, 0xad, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0x22, 0x6b, 0xeb, 0xf0, 0x98, 0xcc, 0x06, 0x07, 0x2c, 0xba, 0x35, 0x08, 0xd2, 0xd3, 0x0d, 0x9a, 0x56, 0xa6, 0x5a, 0x83, 0x10, 0x7c, 0xd8, 0xf0, 0xb6, 0xce, 0x06, 0x0d, 0x14, 0x6e, 0xb5, 0x06, 0xad, 0x6e, 0x53, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf0, 0x8e, 0xa1, 0x85, 0xc1, 0xd1, 0x95, 0xc9, 0x1d, 0x34, 0x5f, 0x4d, 0xb5, 0x06, 0x8d, 0xae, 0x53, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0xb4, 0x2d, 0x4f, 0xb5, 0x06, 0x4d, 0x98, 0x6d, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x33, 0xd6, 0xcc, 0x06, 0xed, 0x94, 0x6d, 0x1d, 0x14, 0x94, 0xe2, 0x6b, 0xd0, 0xee, 0xe4, 0xd6, 0x86, 0x77, 0x7b, 0xd6, 0x70, 0x49, 0x6d, 0xd0, 0xf6, 0xe5, 0xd6, 0x1a, 0x34, 0x61, 0xb6, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0xce, 0x58, 0x33, 0x1b, 0xb4, 0x53, 0xb6, 0x75, 0x10, 0xac, 0xac, 0x1d, 0x34, 0x5f, 0x4d, 0xd5, 0x1a, 0x34, 0x0a, 0x4e, 0xb5, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0xd0, 0xf6, 0x39, 0xd5, 0x41, 0xeb, 0x9e, 0x5b, 0x6b, 0x70, 0x4a, 0x5b, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x68, 0xfb, 0x9c, 0x6a, 0x0d, 0x9a, 0x30, 0xdb, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x67, 0xac, 0x99, 0x0d, 0xda, 0x29, 0xdb, 0x3a, 0x38, 0x2d, 0xd0, 0xac, 0x41, 0xbb, 0x93, 0x5b, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0x6d, 0xcb, 0x53, 0xad, 0x41, 0x13, 0x66, 0x5b, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x8c, 0x35, 0xb3, 0x41, 0x3b, 0x65, 0x5b, 0x07, 0x87, 0xe5, 0x99, 0x83, 0x16, 0x48, 0xb7, 0x6a, 0x99, 0x35, 0x68, 0xfd, 0x72, 0x6b, 0xc3, 0x2f, 0x4a, 0x1b, 0x34, 0x5a, 0x9e, 0xb5, 0xe1, 0xeb, 0x97, 0x0d, 0x1a, 0x97, 0xdc, 0xda, 0x20, 0x48, 0x4f, 0x37, 0x68, 0xd9, 0xe5, 0x6a, 0x83, 0xe6, 0x23, 0xb7, 0xd6, 0xa0, 0xd5, 0x6d, 0xaa, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x29, 0xdb, 0x3a, 0x68, 0xe0, 0xea, 0x6a, 0x83, 0xc6, 0x25, 0xb7, 0x5a, 0x83, 0x46, 0xd7, 0xa9, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0x1a, 0x10, 0xba, 0xda, 0xa0, 0x7d, 0xcf, 0xad, 0x35, 0x68, 0x77, 0x72, 0x6b, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x56, 0x52, 0xb7, 0x0e, 0x1a, 0xb8, 0xba, 0x3a, 0x68, 0x76, 0x7a, 0xab, 0x35, 0x68, 0x14, 0x9c, 0x6a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x61, 0xa5, 0xab, 0x83, 0x46, 0xb1, 0xb7, 0xd6, 0xe0, 0x94, 0xb6, 0xb4, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0xd0, 0xb0, 0xd2, 0xd5, 0x06, 0x0d, 0xdb, 0x6e, 0xad, 0x41, 0xbb, 0x93, 0x5b, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0x0d, 0x08, 0x5d, 0x6d, 0xd0, 0xea, 0xef, 0xd6, 0x41, 0xc3, 0xd9, 0x5b, 0x75, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x83, 0x86, 0x95, 0x48, 0x36, 0x3c, 0x3e, 0xb2, 0x41, 0xc3, 0x4a, 0x24, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0x4d, 0x06, 0xaa, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x56, 0xd1, 0xde, 0x6f, 0x50, 0x08, 0xa6, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x88, 0xef, 0x6b, 0xf8, 0x5c, 0xe9, 0xa0, 0xf1, 0xe5, 0xaa, 0x36, 0x3c, 0x28, 0xb9, 0x41, 0xcb, 0x20, 0x55, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0x34, 0x1b, 0x52, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x96, 0xcd, 0x38, 0x6f, 0x78, 0xcb, 0x6e, 0x0d, 0x4f, 0xdc, 0x6d, 0x78, 0x16, 0xef, 0xa0, 0x81, 0xd5, 0x91, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x57, 0xb2, 0x0d, 0x5a, 0x28, 0xbc, 0x5a, 0xc3, 0xbf, 0x39, 0x1b, 0x2c, 0xb1, 0xdf, 0x3e, 0x58, 0x9e, 0x81, 0xdc, 0x06, 0x6d, 0x7d, 0x5f, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0xd0, 0xd6, 0xf7, 0xc5, 0xc1, 0xf2, 0x0c, 0xe4, 0x0d, 0x1a, 0x38, 0x9b, 0xda, 0x20, 0x48, 0x4f, 0x37, 0x68, 0x60, 0x64, 0x6a, 0x0d, 0x1a, 0x58, 0x9c, 0xda, 0xe0, 0xe4, 0x20, 0xb7, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0x1a, 0xe0, 0xa9, 0x5a, 0x83, 0x06, 0x16, 0xa7, 0x36, 0x28, 0x06, 0x64, 0x37, 0x68, 0xff, 0x72, 0x6a, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0x9a, 0x6f, 0xac, 0x5a, 0xc3, 0x07, 0x39, 0x1b, 0x34, 0x38, 0x59, 0xb5, 0x41, 0x5b, 0xdf, 0x17, 0x07, 0x0d, 0x9c, 0x4d, 0x1d, 0xb4, 0xf5, 0x7d, 0xb1, 0x41, 0x31, 0x20, 0xbb, 0x41, 0xf3, 0x8d, 0x55, 0x1b, 0x34, 0x70, 0x36, 0x75, 0xd0, 0xd6, 0xf7, 0xc5, 0x1a, 0xb4, 0xe1, 0x39, 0x75, 0xd0, 0xc0, 0xd9, 0x54, 0x6b, 0xd0, 0x86, 0xe7, 0xd4, 0x06, 0x27, 0x07, 0xb9, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0xd0, 0x00, 0x4f, 0xd5, 0x1a, 0x34, 0xb0, 0x38, 0x75, 0xd0, 0xc0, 0xd9, 0xd4, 0x1a, 0xb4, 0xe1, 0x39, 0xb5, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x77, 0x7b, 0xd6, 0x70, 0x49, 0x6d, 0xd0, 0x18, 0xad, 0xd4, 0x1a, 0x34, 0x30, 0x32, 0x75, 0xd0, 0xba, 0x68, 0x55, 0x1b, 0x14, 0xb0, 0xf9, 0x07, 0x8d, 0xa5, 0x4e, 0x6d, 0xd0, 0xc0, 0xd9, 0xd4, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0xea, 0xd2, 0xe6, 0x0d, 0xda, 0x9a, 0x9c, 0x3a, 0x68, 0xab, 0xb4, 0xaa, 0x35, 0x68, 0x3e, 0x62, 0x6a, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0xae, 0x41, 0xb0, 0x99, 0x6e, 0xd0, 0xc0, 0xe2, 0xd4, 0x06, 0x6d, 0x78, 0x4e, 0x75, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x06, 0xce, 0xa6, 0x0e, 0x1a, 0xe0, 0xa9, 0x5a, 0x83, 0x96, 0x61, 0xa7, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0xcc, 0x7d, 0x1b, 0xb4, 0x35, 0x39, 0xb5, 0x41, 0x4b, 0x53, 0x55, 0xad, 0x41, 0xa3, 0xbe, 0x53, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x99, 0x83, 0xa9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x89, 0x54, 0xbd, 0x41, 0x1b, 0x4a, 0x55, 0x1b, 0x34, 0xd4, 0x54, 0x55, 0x6b, 0xd0, 0x46, 0xf2, 0xd4, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x0b, 0x95, 0xea, 0xa0, 0x25, 0x28, 0xae, 0x35, 0x68, 0x52, 0x7a, 0x6a, 0xc3, 0xbb, 0x79, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x8e, 0xd6, 0x1a, 0x1b, 0x94, 0x4d, 0xef, 0x07, 0xcb, 0xf0, 0xf3, 0x0f, 0x5a, 0x7f, 0xbf, 0xda, 0x70, 0x49, 0x6d, 0xd0, 0x68, 0x48, 0xd5, 0x06, 0xcd, 0xcd, 0x55, 0xad, 0xc1, 0x1a, 0xfd, 0xfc, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0x7a, 0xd0, 0xd2, 0x18, 0xd7, 0x41, 0xeb, 0xef, 0x57, 0xad, 0xc1, 0x7a, 0x77, 0xe6, 0x0d, 0x97, 0xd4, 0x06, 0x8d, 0x86, 0x54, 0x6d, 0xd0, 0xdc, 0x5c, 0x55, 0x6b, 0xb0, 0x5e, 0xa4, 0xf9, 0xa0, 0xad, 0xef, 0x8b, 0x56, 0x83, 0xd6, 0x79, 0xaa, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xb2, 0x19, 0xe7, 0x0d, 0x4e, 0x0e, 0x72, 0x1b, 0xac, 0xbb, 0x40, 0xde, 0x20, 0x3c, 0x55, 0xd7, 0xa0, 0xf9, 0x88, 0xa9, 0x83, 0x06, 0xce, 0xa6, 0xd6, 0xa0, 0x65, 0xd8, 0xa9, 0x83, 0xf6, 0x8e, 0xb0, 0xd6, 0xa0, 0x51, 0xdf, 0xa9, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0xd6, 0x7b, 0xea, 0x1d, 0x34, 0x4c, 0x85, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0x6c, 0xc6, 0x79, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x95, 0x0f, 0x7b, 0x1b, 0x34, 0x70, 0x36, 0xb5, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xca, 0x87, 0xbd, 0x0d, 0x6f, 0xeb, 0x0c, 0x4e, 0x1f, 0xac, 0x7c, 0xd8, 0x5b, 0x83, 0x06, 0x46, 0xa6, 0x36, 0x5c, 0x52, 0x1b, 0x34, 0x1a, 0x52, 0xb5, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0xb0, 0xf2, 0x61, 0xaf, 0xd6, 0xa0, 0x8d, 0xe4, 0xa9, 0x83, 0xf6, 0x8e, 0xb0, 0xd6, 0xa0, 0x49, 0xe9, 0xa9, 0x83, 0xf6, 0x8e, 0xb0, 0x3a, 0x9c, 0x62, 0x1d, 0x4e, 0xb1, 0xd5, 0x20, 0x39, 0x17, 0x76, 0xc3, 0x2f, 0x4a, 0x1b, 0xb4, 0xc9, 0x40, 0xb5, 0xe1, 0x11, 0xd6, 0x0d, 0xda, 0x83, 0xa0, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x59, 0x41, 0x75, 0xd0, 0x1a, 0x4c, 0x55, 0xb3, 0x80, 0x4f, 0x57, 0xe6, 0x46, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0xb4, 0xaf, 0xf4, 0x60, 0xf1, 0x59, 0xf3, 0x86, 0xbf, 0x68, 0x36, 0x58, 0xd2, 0xe7, 0xbc, 0x41, 0x09, 0x8f, 0xb9, 0x06, 0x4b, 0xfb, 0x4a, 0xdb, 0xf0, 0x98, 0xcc, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x63, 0xcd, 0xac, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x3b, 0xae, 0x5c, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3e, 0x68, 0xc7, 0x95, 0xab, 0x35, 0x28, 0xe1, 0x31, 0x17, 0x3c, 0x3d, 0x68, 0xc7, 0x95, 0x6b, 0xc3, 0x63, 0x32, 0x1b, 0xde, 0xd6, 0x19, 0xbc, 0x3e, 0x68, 0x0c, 0x97, 0xab, 0xc3, 0x29, 0xb6, 0x06, 0x0d, 0xa8, 0x2f, 0x6d, 0x70, 0x1e, 0xec, 0x38, 0x68, 0xa9, 0x4d, 0xea, 0x70, 0x8a, 0xad, 0x41, 0x93, 0x6c, 0x24, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0x49, 0x36, 0x92, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0x8d, 0xbd, 0x9d, 0x07, 0xeb, 0xb5, 0x9e, 0x0f, 0xda, 0x9f, 0x90, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xcb, 0x66, 0x9c, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0xa3, 0x40, 0x1c, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xbb, 0xc7, 0x5c, 0x6d, 0x50, 0x50, 0x64, 0x1e, 0xb4, 0x74, 0x22, 0x75, 0x50, 0x96, 0x79, 0x1e, 0x94, 0x75, 0x9e, 0x07, 0xcd, 0x6a, 0x50, 0xad, 0x06, 0x2d, 0xe9, 0x57, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0xed, 0x0d, 0xde, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0x37, 0x58, 0xc6, 0x5e, 0xbe, 0xc1, 0x32, 0xf6, 0xf2, 0x36, 0x68, 0xa0, 0x97, 0xea, 0xa0, 0x11, 0xd8, 0xaa, 0x0d, 0x7f, 0xd1, 0x6c, 0xd0, 0x7c, 0x72, 0xd5, 0x86, 0x0f, 0x72, 0xd6, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0x60, 0x83, 0x36, 0x0e, 0x0d, 0x1e, 0x0f, 0x0e, 0x6f, 0xd0, 0x24, 0x37, 0x57, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x41, 0xc0, 0x06, 0x6d, 0x1c, 0x1a, 0x3c, 0x1e, 0x3c, 0x3e, 0x68, 0x4b, 0x9d, 0x6b, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0xf9, 0xe4, 0xaa, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xd6, 0x76, 0xc2, 0xaf, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xd0, 0x56, 0x3a, 0xd7, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x68, 0xe4, 0x9d, 0xab, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x4f, 0x2f, 0x8d, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x4d, 0xc1, 0x4a, 0x6d, 0xb0, 0xc4, 0x7e, 0x7b, 0x83, 0x06, 0x9c, 0xa6, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0xe0, 0xe9, 0xc1, 0xda, 0x4e, 0xf8, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0xbd, 0x7f, 0xb9, 0x41, 0x61, 0xa8, 0xba, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0x4b, 0x6a, 0x83, 0x76, 0x95, 0xa5, 0xd6, 0xa0, 0x81, 0x91, 0xa9, 0x83, 0x26, 0xee, 0xb9, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0xed, 0x11, 0x74, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x0d, 0x9a, 0xee, 0xe7, 0xaa, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x97, 0xd4, 0x06, 0xed, 0x2a, 0x4b, 0xad, 0x41, 0x03, 0x23, 0x53, 0x07, 0x2d, 0xe6, 0x73, 0xb5, 0x41, 0x73, 0x10, 0x5d, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xa0, 0x21, 0x8a, 0xae, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x1e, 0x1c, 0x3e, 0x58, 0xf9, 0x87, 0xb9, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0xc1, 0xe3, 0x83, 0x95, 0x7f, 0x98, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0xed, 0x84, 0xdf, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0xc1, 0xda, 0x4e, 0xf8, 0x35, 0x68, 0xfd, 0x9e, 0x6b, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0x8d, 0x8b, 0x74, 0xad, 0x41, 0x63, 0xfa, 0x5c, 0x1b, 0xde, 0xd6, 0x19, 0x3c, 0x3e, 0x68, 0xb8, 0xa4, 0xab, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0x23, 0xa0, 0x83, 0x36, 0xdd, 0xb9, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x06, 0x4d, 0xdc, 0x73, 0x1d, 0xb4, 0x98, 0xcf, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x8b, 0xf2, 0x52, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x2c, 0x02, 0x19, 0xdd, 0xa0, 0x6c, 0x7a, 0x5f, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0x6d, 0xa5, 0x73, 0xb5, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0x28, 0x4b, 0xde, 0x37, 0x58, 0x04, 0x32, 0xba, 0x41, 0xd9, 0xf4, 0xbe, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x1a, 0x79, 0xe7, 0xaa, 0x0d, 0x8e, 0x36, 0x7c, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x90, 0xa2, 0xd4, 0x41, 0xf3, 0xc5, 0x55, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x97, 0xd4, 0x06, 0x6d, 0x2c, 0x4a, 0xad, 0x41, 0xe3, 0x5a, 0x52, 0x07, 0x05, 0x6c, 0x7e, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xf0, 0xe5, 0x64, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0xde, 0xf4, 0x1b, 0xac, 0xac, 0x21, 0xdf, 0x60, 0x65, 0x0d, 0x79, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xac, 0xed, 0x84, 0x5f, 0xc3, 0xdb, 0x3a, 0x07, 0xcd, 0x07, 0x4c, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0xd6, 0xf9, 0xb9, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb2, 0x34, 0x7c, 0x83, 0xc2, 0x50, 0x75, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x96, 0x99, 0xa5, 0x36, 0x68, 0x0e, 0xa2, 0x6b, 0x83, 0xd6, 0x25, 0xba, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0xf3, 0x01, 0x53, 0x6d, 0xf8, 0xdc, 0x65, 0xf0, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0xcc, 0x2c, 0xb5, 0x41, 0x73, 0x10, 0x5d, 0x1b, 0xb4, 0xd1, 0xd1, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x9a, 0x0f, 0x98, 0x6a, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0xc1, 0xe1, 0x0d, 0x1a, 0x3d, 0xeb, 0x6a, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x83, 0xc7, 0x07, 0x0d, 0xf7, 0x75, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0xb4, 0x8c, 0xd2, 0xb5, 0x06, 0xcd, 0x07, 0x4c, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x34, 0xd4, 0xd7, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x5a, 0x02, 0xec, 0xaa, 0xd5, 0xa0, 0x71, 0x97, 0x92, 0x0d, 0x8f, 0x8f, 0x6c, 0xd0, 0xb8, 0x4b, 0xc9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xd0, 0xde, 0xee, 0xc3, 0x07, 0xab, 0x07, 0xed, 0x4f, 0x48, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x65, 0x33, 0xce, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x62, 0x12, 0x73, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0xc6, 0xf5, 0xfa, 0xe0, 0x10, 0xd3, 0x71, 0xd0, 0x0c, 0x8a, 0xd4, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0xc2, 0x41, 0xd5, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xb9, 0xc8, 0xae, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0x33, 0x28, 0x52, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf6, 0x73, 0xa5, 0xd6, 0xa0, 0x2c, 0x79, 0x5f, 0x80, 0xb7, 0x0c, 0x2f, 0xac, 0x0d, 0x8e, 0xad, 0x6c, 0x0d, 0x6f, 0xeb, 0x0c, 0x7c, 0x18, 0xde, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x68, 0x06, 0x45, 0xaa, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0x14, 0x93, 0x98, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x05, 0x95, 0xd7, 0x07, 0x87, 0x98, 0x8e, 0x83, 0x66, 0x50, 0xa4, 0xd6, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xa0, 0x01, 0x15, 0xaa, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xfe, 0x0a, 0xd5, 0x06, 0xcd, 0xb7, 0x50, 0x6d, 0xd0, 0x58, 0x68, 0x57, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0xed, 0xcb, 0x50, 0x6d, 0xd0, 0x30, 0x0d, 0xd5, 0x1a, 0x04, 0x6c, 0xd0, 0x86, 0x07, 0x25, 0x37, 0x38, 0x1d, 0x89, 0x6c, 0x50, 0x74, 0x1a, 0x6f, 0xd0, 0xac, 0x0e, 0xd5, 0x06, 0x2d, 0xf4, 0x50, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xb6, 0x81, 0xa8, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0x4b, 0x9f, 0x5d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0x82, 0xa7, 0xd4, 0x06, 0xed, 0x47, 0x49, 0x6d, 0x78, 0x5a, 0xe7, 0xa0, 0x7d, 0xd5, 0xae, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xda, 0x09, 0x95, 0x3a, 0x68, 0x47, 0xb9, 0xab, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x11, 0xd6, 0x0d, 0x5a, 0xfa, 0xec, 0x5a, 0x83, 0x62, 0x12, 0x73, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x64, 0xea, 0xfa, 0xe0, 0x10, 0xd3, 0x71, 0xd0, 0x0c, 0x8a, 0x54, 0x6b, 0xf8, 0x0a, 0x67, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xc6, 0x57, 0xbb, 0x36, 0x68, 0xe0, 0x6c, 0x6a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xc6, 0x57, 0xbb, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0xd0, 0xf8, 0x6a, 0xd7, 0x1a, 0x34, 0x30, 0x32, 0xb5, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xcd, 0xa0, 0x48, 0x6d, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0xa0, 0xf1, 0xd5, 0xae, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0x1e, 0x61, 0x5d, 0xc3, 0xdb, 0xac, 0x07, 0x2d, 0x7d, 0x76, 0xad, 0x41, 0x31, 0x89, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x17, 0x69, 0x7d, 0x70, 0x88, 0xe9, 0x38, 0x68, 0x06, 0x45, 0xaa, 0x0d, 0xda, 0xc4, 0xee, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0x81, 0x09, 0xec, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x0b, 0x82, 0xb3, 0xd7, 0xf0, 0xb6, 0xce, 0xc0, 0x87, 0xc1, 0x1d, 0xb4, 0x74, 0x22, 0xb5, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0xc1, 0x3a, 0x3f, 0xd8, 0x83, 0xb6, 0x4e, 0xa4, 0x36, 0x68, 0xe0, 0x6c, 0x6a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x66, 0x50, 0xa4, 0x0e, 0xd6, 0xf9, 0xc1, 0xb6, 0x1a, 0xb4, 0x80, 0x80, 0xb2, 0xe1, 0xf1, 0x91, 0x0d, 0x5a, 0x40, 0x40, 0xd9, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x45, 0xdb, 0xaa, 0x0d, 0x1a, 0xe8, 0xa5, 0x3a, 0x68, 0x7f, 0x42, 0x6a, 0x83, 0x03, 0x16, 0xdd, 0x1a, 0xfe, 0xa2, 0xd9, 0xa0, 0x3d, 0x57, 0xab, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x83, 0xd6, 0x45, 0xb8, 0xd6, 0xe0, 0x5c, 0xb8, 0xb0, 0x86, 0x3c, 0xf6, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0x1a, 0x93, 0x2b, 0x39, 0x08, 0x4f, 0xd5, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0x66, 0x50, 0xa4, 0xd6, 0x60, 0x29, 0x11, 0xf1, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x2b, 0x79, 0x49, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0x06, 0x45, 0xea, 0xa0, 0x85, 0xd5, 0xae, 0x35, 0x68, 0x76, 0xb8, 0xea, 0x60, 0x89, 0xfd, 0x76, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0xa5, 0xb4, 0xb5, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x33, 0x28, 0x52, 0x07, 0x8d, 0x85, 0x76, 0x1d, 0x34, 0x00, 0xe2, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x2b, 0x64, 0x5a, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc6, 0x7d, 0xb8, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xc1, 0x9a, 0x78, 0xd2, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xd0, 0xfa, 0xd8, 0x56, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0xf7, 0xe1, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0x6b, 0xe2, 0x49, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0xeb, 0x63, 0x5b, 0xb5, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x85, 0x25, 0xf4, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x3f, 0x93, 0x7b, 0xbb, 0xdb, 0xa0, 0x05, 0x9d, 0xa9, 0x0d, 0x5a, 0x58, 0xed, 0x5a, 0xc3, 0x1b, 0x77, 0x07, 0xab, 0xc7, 0xb7, 0x37, 0x68, 0xcc, 0x40, 0xea, 0xa0, 0xcd, 0xdc, 0xae, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x8b, 0x13, 0xa2, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x6d, 0x1f, 0xaf, 0x0d, 0x5a, 0xd0, 0x99, 0xda, 0xa0, 0x85, 0xd5, 0xae, 0x0d, 0x5a, 0x29, 0xbf, 0x3a, 0x68, 0xaa, 0xc8, 0x6b, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x6a, 0x1e, 0xe9, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x95, 0x58, 0xa9, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x65, 0x74, 0x1b, 0xb4, 0xb0, 0xda, 0x75, 0xd0, 0x66, 0x6e, 0xd7, 0x06, 0x6d, 0x0b, 0x57, 0x6d, 0xd0, 0x80, 0xd3, 0x54, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0x96, 0x3d, 0x49, 0x1f, 0x1c, 0x62, 0x3a, 0x36, 0x7c, 0x62, 0xb3, 0x41, 0x2b, 0x25, 0x5e, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x34, 0x83, 0x22, 0xb5, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0x0f, 0x53, 0x38, 0x68, 0x5f, 0xb5, 0xab, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x6b, 0xc4, 0xa4, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0xe9, 0x0e, 0xaf, 0x35, 0x68, 0x76, 0xb8, 0xea, 0xa0, 0x99, 0xf6, 0xa8, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x7c, 0xb1, 0x32, 0x3a, 0xb4, 0x83, 0x46, 0xda, 0xa3, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0x88, 0x7d, 0x3e, 0x38, 0xc4, 0x74, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x76, 0xe3, 0xbc, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xed, 0xe7, 0x4a, 0x1d, 0xb4, 0x74, 0x22, 0xd5, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x95, 0x99, 0xcf, 0x07, 0x87, 0x98, 0x8e, 0x83, 0x36, 0xf0, 0xbc, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0xa4, 0x93, 0x3e, 0x38, 0xc4, 0x74, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x14, 0x87, 0xd7, 0x06, 0xad, 0x94, 0x78, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0x8d, 0xf3, 0x3a, 0x68, 0xcc, 0x41, 0x6a, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0xaa, 0x43, 0xe9, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x4f, 0x6c, 0x36, 0x68, 0xa8, 0xd0, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0x1b, 0xe7, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x7c, 0xb1, 0xb7, 0x37, 0xb6, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0xcd, 0x94, 0x3e, 0x38, 0xc4, 0x74, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x61, 0x61, 0x81, 0x80, 0xf4, 0xf0, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0xa6, 0x38, 0xbc, 0x0e, 0x9a, 0x83, 0xf4, 0x5a, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x80, 0x30, 0xf8, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0x58, 0xed, 0x3a, 0x68, 0x5f, 0xb5, 0x6b, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x12, 0x58, 0xe9, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x67, 0x17, 0x46, 0x6f, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x34, 0xdd, 0xe1, 0xd5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x2e, 0xa9, 0x0d, 0x5a, 0x84, 0x96, 0x5a, 0x83, 0x06, 0x46, 0xa6, 0x36, 0xbc, 0xad, 0x33, 0x38, 0xbc, 0x41, 0x8b, 0xa9, 0x5e, 0xb5, 0x86, 0x37, 0xee, 0x0e, 0x56, 0xa1, 0x96, 0xb7, 0x86, 0x77, 0x7b, 0xd6, 0x70, 0x49, 0x6d, 0xd0, 0x22, 0xb4, 0xd4, 0x1a, 0x34, 0x30, 0x32, 0xb5, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0xd6, 0x66, 0xbd, 0x3a, 0x68, 0x95, 0xd6, 0xab, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xab, 0xb7, 0xa5, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x2c, 0xb7, 0xa8, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0xad, 0x90, 0x69, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0xcf, 0x95, 0x3a, 0x68, 0x5f, 0xb5, 0xab, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0x5c, 0x52, 0x1b, 0xb4, 0x71, 0x1f, 0x75, 0xd0, 0x0a, 0x77, 0xd5, 0x41, 0xfb, 0xaa, 0x5d, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0x56, 0x4d, 0xbc, 0xd6, 0xa0, 0xd9, 0xe1, 0xaa, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x2c, 0xb6, 0xa8, 0xef, 0x60, 0x45, 0x45, 0xfd, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x35, 0x06, 0xd3, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0x9f, 0xd8, 0x6c, 0xd0, 0x28, 0xaa, 0xd7, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x2d, 0xbc, 0x7a, 0xad, 0xe1, 0x8d, 0xbb, 0x83, 0xf5, 0xb2, 0xe5, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0xbd, 0xf5, 0x3a, 0x68, 0x3b, 0xdc, 0xab, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xeb, 0xbf, 0x9f, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0xeb, 0xc4, 0xb5, 0x41, 0x0b, 0xab, 0x5d, 0x07, 0xcd, 0x6a, 0x50, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0x75, 0xe2, 0xda, 0xa0, 0x85, 0xd5, 0xae, 0x83, 0x36, 0xb8, 0xbc, 0x5a, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0xfe, 0x68, 0xfa, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0x13, 0x9b, 0x0d, 0x1a, 0x45, 0xf5, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x85, 0x57, 0xaf, 0x0d, 0x1a, 0x74, 0xb6, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xe8, 0xad, 0xd7, 0x41, 0x43, 0xfb, 0x5e, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xf1, 0xef, 0x7c, 0x70, 0x88, 0xe9, 0xd8, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xa0, 0xc5, 0x54, 0xaf, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0x56, 0x4d, 0xbc, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x2d, 0x54, 0xaa, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x03, 0x67, 0x53, 0x07, 0xed, 0xab, 0x76, 0x6d, 0xd0, 0x84, 0xac, 0x57, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb6, 0x50, 0xa9, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x0d, 0x38, 0x4d, 0x1d, 0xb4, 0xaf, 0xda, 0xb5, 0x41, 0xab, 0xba, 0x5e, 0xb5, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x85, 0xc6, 0xf4, 0xc1, 0x21, 0xa6, 0xe3, 0xa0, 0x4d, 0x55, 0xaf, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xab, 0x47, 0xa9, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0xde, 0xb2, 0x5b, 0xc3, 0x25, 0xb5, 0x41, 0x23, 0x6e, 0x52, 0x6b, 0xd0, 0xc0, 0xc8, 0xd4, 0x41, 0x6b, 0xc8, 0x5e, 0x1d, 0x34, 0x58, 0xf0, 0xb5, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x69, 0x05, 0xf5, 0xc1, 0x21, 0xa6, 0xe3, 0xa0, 0xc1, 0x82, 0xaf, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x0b, 0xf6, 0xab, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x1e, 0x5b, 0x59, 0x7b, 0xd0, 0x14, 0x87, 0xd7, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0xab, 0x26, 0x5e, 0x6b, 0xd0, 0xc0, 0xc8, 0xd4, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x37, 0x68, 0x7b, 0xe5, 0xab, 0x35, 0x68, 0xdb, 0x69, 0x6a, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0x4d, 0xcc, 0x7c, 0xb5, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x25, 0x9f, 0xf5, 0xc1, 0x21, 0xa6, 0x63, 0x83, 0x82, 0x34, 0x76, 0xc0, 0x13, 0x7b, 0x1b, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xad, 0x8e, 0x49, 0x1d, 0xb4, 0xaf, 0xda, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xe0, 0xb9, 0xd5, 0x99, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x97, 0xd4, 0x06, 0x0d, 0x92, 0x49, 0x1d, 0xb4, 0xc2, 0x5d, 0x75, 0xd0, 0xbe, 0x6a, 0xd7, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0xab, 0x26, 0x5e, 0x6b, 0xd0, 0xc0, 0xc8, 0xd4, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x80, 0xe7, 0xab, 0x35, 0x68, 0xdb, 0x69, 0x6a, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x13, 0xf4, 0x55, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0x32, 0x5b, 0x1f, 0x1c, 0x62, 0x3a, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb7, 0x37, 0x79, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0xe9, 0x0e, 0xaf, 0x35, 0x68, 0x76, 0xb8, 0xea, 0xa0, 0x3d, 0x49, 0xaf, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb4, 0xb4, 0x78, 0xc3, 0x5f, 0x34, 0x1b, 0xb4, 0xe7, 0x6a, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0x99, 0x95, 0xe1, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x99, 0x4e, 0xa9, 0x83, 0xf6, 0x55, 0xbb, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x77, 0x7b, 0xd6, 0x70, 0x49, 0x6d, 0xd0, 0x82, 0xa7, 0xd4, 0x41, 0x2b, 0xdc, 0x55, 0x07, 0xed, 0xab, 0x76, 0xb5, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x5b, 0xdf, 0x17, 0x1b, 0xde, 0xd6, 0x19, 0x1c, 0xde, 0xa0, 0xdd, 0xb0, 0xaf, 0xd6, 0xa0, 0x30, 0x54, 0xdd, 0xa0, 0xad, 0xef, 0x8b, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0xda, 0xfa, 0xbe, 0xd8, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0xa3, 0x72, 0x5f, 0x1b, 0xb4, 0xf5, 0x7d, 0xb1, 0xc1, 0xb9, 0x70, 0x61, 0x0d, 0x79, 0xec, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x1f, 0x34, 0xb7, 0x6c, 0xb2, 0xe1, 0xdd, 0x9e, 0x35, 0x5c, 0x52, 0x1b, 0xb4, 0x71, 0x1f, 0xb5, 0x06, 0x0d, 0x8c, 0x4c, 0x1d, 0x34, 0x8e, 0xf7, 0xd5, 0x41, 0x9b, 0xb9, 0x5d, 0x1b, 0x3e, 0xc8, 0xd9, 0xa0, 0x75, 0xbb, 0xaf, 0x35, 0x38, 0x17, 0x2e, 0xac, 0x21, 0x8f, 0xbd, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0xf6, 0xac, 0x4d, 0x0e, 0xc2, 0x53, 0x75, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x06, 0x46, 0xa6, 0x0e, 0x5a, 0x8a, 0xfb, 0x5a, 0x83, 0xb6, 0x9d, 0xa6, 0x0e, 0x1a, 0xc7, 0xfb, 0x3a, 0x68, 0xde, 0xe0, 0x6b, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x93, 0x0b, 0x73, 0x37, 0xfc, 0x45, 0xb3, 0x41, 0x7b, 0xae, 0x56, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0xde, 0x5d, 0x1d, 0xbe, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x03, 0x95, 0x3a, 0x68, 0x5f, 0xb5, 0x6b, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x97, 0xd4, 0x06, 0xed, 0x84, 0x4a, 0x1d, 0xb4, 0xc2, 0x5d, 0x75, 0xd0, 0xbe, 0x6a, 0x57, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0xb4, 0xf5, 0x7d, 0xb1, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x0d, 0xda, 0xdc, 0xfc, 0x6a, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0xda, 0xfa, 0xbe, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0xad, 0xef, 0x8b, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x34, 0xc8, 0xfa, 0xb5, 0x41, 0x5b, 0xdf, 0x17, 0x1b, 0x9c, 0x0b, 0x17, 0xd6, 0x90, 0xc7, 0xde, 0xf0, 0x23, 0xcc, 0xe0, 0xf4, 0x41, 0x5b, 0xf2, 0x26, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x25, 0xb5, 0x41, 0x1b, 0xf7, 0x51, 0x6b, 0xd0, 0xc0, 0xc8, 0xd4, 0x41, 0xc3, 0xb2, 0x5f, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe5, 0x83, 0x66, 0x50, 0xa4, 0xda, 0xf0, 0x41, 0xce, 0x06, 0x2d, 0xc3, 0x7e, 0xad, 0xc1, 0xb9, 0x70, 0x61, 0x0d, 0x79, 0xec, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x1f, 0x34, 0xd7, 0x6f, 0x72, 0x10, 0x9e, 0xaa, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x34, 0x30, 0x32, 0x75, 0xd0, 0xca, 0xea, 0xd7, 0x1a, 0xb4, 0xed, 0x34, 0x75, 0xd0, 0xb0, 0xec, 0xd7, 0x1a, 0x34, 0x83, 0x22, 0x75, 0xd0, 0xea, 0xef, 0x57, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0x42, 0xa6, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xe6, 0x60, 0x6a, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x6f, 0xd0, 0x38, 0xd7, 0x57, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0x78, 0x83, 0x86, 0x2d, 0xbf, 0x3a, 0x28, 0xeb, 0x3c, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x73, 0x30, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0xda, 0xbe, 0xfe, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0xcd, 0x69, 0x7f, 0x1d, 0x94, 0x75, 0x9e, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x97, 0xf1, 0x7c, 0x70, 0x88, 0xe9, 0xd8, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xee, 0xc2, 0xf4, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x83, 0xd6, 0x90, 0xbd, 0x0e, 0x1a, 0x5c, 0xf6, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xe6, 0xf2, 0xf0, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0x8f, 0xbd, 0xd9, 0x95, 0xad, 0xe1, 0x41, 0xc9, 0x0d, 0x4e, 0x47, 0x22, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x01, 0x55, 0xa9, 0x0d, 0x96, 0xd8, 0x6f, 0xaf, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x48, 0x2f, 0x38, 0x68, 0x33, 0xb7, 0xab, 0x36, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0xa8, 0xff, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x9c, 0x8e, 0x44, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0x4b, 0x6a, 0x83, 0xe6, 0x47, 0xa4, 0x0e, 0x5a, 0xe1, 0xae, 0x3a, 0x68, 0x68, 0xff, 0xab, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x0f, 0xee, 0xcd, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x2e, 0xa9, 0x0d, 0x9a, 0x72, 0x94, 0x5a, 0x83, 0x06, 0x46, 0xa6, 0x36, 0xbc, 0xad, 0x33, 0x38, 0xbc, 0x41, 0x73, 0xe9, 0x5f, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x37, 0x68, 0x16, 0xfe, 0xab, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x77, 0x7b, 0xd6, 0x70, 0x49, 0x6d, 0xd0, 0x94, 0xa3, 0xd4, 0x1a, 0x34, 0x30, 0x32, 0xb5, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x56, 0x28, 0xc0, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0x4d, 0x5b, 0x80, 0xd5, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0x1e, 0x61, 0x5d, 0xc3, 0xbf, 0x39, 0x1b, 0xb4, 0x57, 0x01, 0x76, 0xd0, 0xfc, 0x07, 0xd8, 0x1a, 0xfe, 0xcd, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x1b, 0x34, 0xb9, 0x00, 0xd6, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x5a, 0x4e, 0x01, 0x6b, 0x0d, 0xce, 0x85, 0x0b, 0x6b, 0xc8, 0x63, 0x6f, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0xa0, 0xd1, 0xa6, 0x93, 0x83, 0xf0, 0x54, 0x3d, 0x68, 0x0e, 0xd2, 0x6b, 0x0d, 0xda, 0x7c, 0xed, 0xda, 0xe0, 0x5c, 0xb8, 0xb0, 0x86, 0x3c, 0xf6, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0xda, 0xbc, 0x3a, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x14, 0x86, 0xaa, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x84, 0x0a, 0xb9, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0xc9, 0x07, 0xf5, 0xe0, 0x74, 0x91, 0xb1, 0x86, 0xcf, 0x5d, 0x36, 0x38, 0xd3, 0xa7, 0x1e, 0x9c, 0x8e, 0x44, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xcd, 0xca, 0xdc, 0xc8, 0x36, 0x68, 0xa2, 0xba, 0x6a, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0x81, 0xc9, 0x1e, 0x14, 0xc4, 0xe3, 0x07, 0x6d, 0xe6, 0x76, 0xb5, 0xe1, 0x73, 0x97, 0x0d, 0x92, 0x91, 0xe2, 0x36, 0x3c, 0x28, 0xb9, 0x41, 0xeb, 0x3d, 0x60, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x25, 0xb5, 0x41, 0x63, 0x46, 0x60, 0x07, 0xad, 0x70, 0x57, 0x1d, 0x34, 0x7d, 0x04, 0xb6, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x67, 0xfa, 0xd4, 0x83, 0x44, 0xa4, 0xb8, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0xa6, 0x4f, 0x3d, 0x48, 0xa6, 0x90, 0xdb, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbb, 0x3d, 0x6b, 0xb8, 0xa4, 0x36, 0x68, 0x8c, 0x56, 0x6a, 0x0d, 0x1a, 0x18, 0x99, 0xda, 0xf0, 0xb6, 0xce, 0x06, 0x27, 0x1f, 0xd4, 0x83, 0x44, 0xa4, 0xb8, 0x36, 0x28, 0x72, 0x5a, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x27, 0x1f, 0xd4, 0x83, 0x64, 0x0a, 0xb9, 0x0e, 0x9a, 0x83, 0xf4, 0x5a, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x44, 0xd7, 0xf9, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0x2d, 0xbb, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x22, 0xeb, 0xd8, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0x7c, 0x91, 0xfd, 0xa0, 0x7d, 0xd5, 0xae, 0x83, 0x06, 0x0b, 0xbe, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0x9c, 0xbe, 0x3e, 0x38, 0xc4, 0x74, 0x6c, 0xf8, 0xc5, 0x65, 0x83, 0xc6, 0x8c, 0xbd, 0x36, 0x68, 0x9d, 0xd9, 0xab, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xeb, 0x08, 0x9f, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x3e, 0xc8, 0xd9, 0xa0, 0x05, 0x2d, 0xa9, 0x35, 0x38, 0x17, 0x2e, 0xac, 0x21, 0x8f, 0xbd, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0xb6, 0x24, 0x4f, 0x0e, 0xc2, 0x53, 0x75, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0x1b, 0xe7, 0xb5, 0x41, 0x5b, 0xdf, 0x17, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xd4, 0x80, 0x7d, 0x70, 0x88, 0xe9, 0x38, 0x68, 0x0d, 0xd1, 0x6b, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x6a, 0xff, 0xeb, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x40, 0x0f, 0x0b, 0x0b, 0xc4, 0x2e, 0x8c, 0x2d, 0x8d, 0x2c, 0x8c, 0xae, 0x2c, 0xb4, 0xe1, 0x73, 0x97, 0x01, 0xcf, 0xee, 0x6d, 0xde, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x68, 0x02, 0xc4, 0xeb, 0xa0, 0x79, 0x83, 0xaf, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x5a, 0x21, 0xd3, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xee, 0xc3, 0xb5, 0x41, 0x6b, 0xc8, 0x5e, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0x78, 0x83, 0x26, 0x2e, 0xc1, 0xaa, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xe3, 0x3e, 0x5c, 0x1b, 0xb4, 0xce, 0xec, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x9a, 0x19, 0x05, 0xab, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xcb, 0xe0, 0xaf, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xdd, 0x38, 0xaf, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xfb, 0xb9, 0x52, 0x1b, 0xb4, 0x4e, 0xe6, 0x55, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0x16, 0x6f, 0x60, 0x1f, 0x1c, 0x62, 0x3a, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x6d, 0x02, 0x4a, 0x1d, 0xb4, 0xaf, 0xda, 0xb5, 0x86, 0x77, 0x7b, 0xd6, 0x70, 0x49, 0x6d, 0xd0, 0x5c, 0xa0, 0xd4, 0x41, 0x2b, 0xdc, 0x55, 0x07, 0xed, 0xab, 0x76, 0xb5, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x7f, 0x73, 0xd6, 0x70, 0x49, 0x6d, 0x90, 0x90, 0xde, 0xdd, 0x86, 0x4b, 0x6a, 0x83, 0xc4, 0xeb, 0xee, 0xd6, 0xe0, 0x5c, 0xb8, 0xb0, 0x86, 0x3c, 0xf6, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0x1a, 0x0d, 0x3f, 0x39, 0x08, 0x4f, 0xd5, 0x0d, 0x1f, 0xe4, 0x6c, 0xd0, 0x58, 0x30, 0xd8, 0x06, 0x0d, 0x16, 0x7c, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x07, 0xed, 0x3c, 0x7f, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x94, 0x84, 0x7d, 0x70, 0x88, 0xe9, 0x38, 0x68, 0xb6, 0x10, 0x6c, 0x0d, 0xc2, 0x74, 0x6c, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x95, 0xfd, 0x69, 0x07, 0xed, 0xd4, 0x77, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x56, 0xf6, 0xa7, 0x75, 0xd0, 0xd6, 0x89, 0xd4, 0x1a, 0xde, 0xb2, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xb2, 0x8e, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0x66, 0x7d, 0xdd, 0xa0, 0x1d, 0x08, 0xab, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0xea, 0x61, 0x0f, 0x5a, 0x3a, 0x91, 0x6a, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xf2, 0xd8, 0x1b, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x68, 0xe1, 0xff, 0xe4, 0x20, 0x3c, 0x55, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0x06, 0x45, 0xea, 0xa0, 0x55, 0x6d, 0xb0, 0x5a, 0x66, 0x0d, 0x1a, 0x95, 0xf3, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0xf1, 0xf9, 0xa8, 0x83, 0x65, 0x33, 0xce, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0x42, 0xa6, 0xb5, 0x41, 0x8b, 0xcc, 0x59, 0x1d, 0xb4, 0x82, 0x0f, 0xb6, 0x1a, 0x34, 0xfc, 0xe3, 0xb5, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0xd3, 0xbf, 0x56, 0x1b, 0xb4, 0xad, 0x88, 0xb5, 0x41, 0x13, 0xc0, 0x54, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x93, 0xab, 0x33, 0x0f, 0x16, 0x58, 0x38, 0x1f, 0x34, 0x31, 0x4c, 0xb5, 0xe1, 0x2d, 0xbb, 0x35, 0x3c, 0x71, 0xb7, 0xe1, 0x59, 0xbc, 0x83, 0x76, 0x85, 0x4a, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x7b, 0xae, 0x56, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x1e, 0x59, 0x98, 0xbb, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xcd, 0xa0, 0x48, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0x86, 0x03, 0xc2, 0x3a, 0x68, 0x00, 0xc4, 0x6b, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0xcb, 0x0b, 0xd3, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0x4b, 0x6a, 0x83, 0xd6, 0x48, 0xa5, 0xd6, 0xa0, 0x81, 0x91, 0xa9, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x6f, 0xd0, 0x16, 0x43, 0x58, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x36, 0x37, 0xc2, 0x36, 0x68, 0x4f, 0xd9, 0xea, 0xa0, 0x51, 0x67, 0xac, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x5a, 0x21, 0xd3, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x1b, 0x34, 0x54, 0x11, 0x56, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xa0, 0xe5, 0x92, 0xb0, 0x66, 0x0d, 0x5a, 0x04, 0xce, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0x2d, 0xc9, 0x83, 0x6d, 0x78, 0xcb, 0x6e, 0x0d, 0x4f, 0xdc, 0x6d, 0x78, 0x16, 0xef, 0xa0, 0xa1, 0xb0, 0x92, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x4a, 0xb6, 0x41, 0x93, 0x42, 0x53, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa6, 0x7f, 0xab, 0x36, 0x28, 0x72, 0x5a, 0x0f, 0x5a, 0xc1, 0x07, 0xeb, 0xa0, 0x45, 0xe6, 0xac, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0x5b, 0x0d, 0x9a, 0x61, 0x43, 0xd9, 0xf0, 0xf8, 0xc8, 0x06, 0xcd, 0xb0, 0xa1, 0x6c, 0xf8, 0x45, 0x69, 0x83, 0x36, 0x19, 0xa8, 0x36, 0x7c, 0x62, 0xb3, 0x41, 0xab, 0xf7, 0x5b, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0xcb, 0x66, 0x9c, 0x37, 0x7c, 0x90, 0xb3, 0x41, 0xab, 0x09, 0x5c, 0x1b, 0x34, 0x70, 0x36, 0xb5, 0x41, 0x90, 0x9e, 0x6e, 0xd0, 0xc0, 0xc8, 0xd4, 0x1a, 0x34, 0xb0, 0x38, 0xb5, 0x41, 0x90, 0x9e, 0x6e, 0xb0, 0xee, 0x02, 0x79, 0x0d, 0x1a, 0x58, 0x9c, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xcc, 0xde, 0xc6, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0xbe, 0xbc, 0xda, 0xa0, 0x75, 0xd1, 0xaa, 0x83, 0xc6, 0x52, 0xa7, 0x36, 0x68, 0x6b, 0x72, 0xea, 0xa0, 0x75, 0xd1, 0xaa, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0xda, 0xbf, 0x9c, 0x5a, 0x83, 0x62, 0x40, 0x76, 0x83, 0xe6, 0x1b, 0xab, 0xd6, 0xf0, 0x41, 0xce, 0x06, 0x8d, 0x81, 0x5e, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0xd4, 0xbc, 0x58, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0xf7, 0x14, 0xd6, 0x41, 0xb3, 0xad, 0x53, 0x07, 0x6d, 0x7d, 0x5f, 0x1c, 0xb4, 0xe2, 0x15, 0xb6, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0xd4, 0xbc, 0xd8, 0xa0, 0x19, 0xb0, 0xb0, 0x0d, 0x5a, 0xa3, 0xac, 0x6a, 0x0d, 0xda, 0xf0, 0x9c, 0x3a, 0x68, 0xeb, 0xfb, 0x62, 0x0d, 0xc2, 0x74, 0x6c, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x3b, 0x68, 0x26, 0xb0, 0xaa, 0x35, 0x68, 0xc3, 0x73, 0x6a, 0x83, 0x20, 0x3d, 0xdd, 0x60, 0xdd, 0x05, 0xf2, 0x1a, 0xb4, 0xe1, 0x39, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0xf7, 0xe1, 0x5a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x3b, 0x68, 0x14, 0xb4, 0x6a, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0xec, 0xa0, 0xa1, 0xd3, 0xaa, 0x0e, 0x9a, 0x5f, 0x0b, 0x5b, 0x83, 0xe6, 0x23, 0xa6, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x83, 0x36, 0xe5, 0xb8, 0xd6, 0xa0, 0x65, 0xd8, 0xa9, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xae, 0x13, 0xd7, 0x06, 0x6d, 0x4d, 0x4e, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x1d, 0x34, 0x24, 0x47, 0xd5, 0x1a, 0x34, 0xea, 0x3b, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x39, 0x98, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x48, 0xd5, 0x1b, 0xb4, 0xa1, 0x54, 0xb5, 0x86, 0x5f, 0x94, 0x36, 0x58, 0x36, 0xe3, 0xbc, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0x71, 0xd0, 0xfa, 0x28, 0x55, 0xad, 0x41, 0x1b, 0xc9, 0x53, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x2d, 0x54, 0xaa, 0x83, 0xf6, 0x05, 0xc3, 0xd6, 0xa0, 0x49, 0xe9, 0xa9, 0x0d, 0x1f, 0xe4, 0x6c, 0xd0, 0x16, 0x18, 0xd7, 0x1a, 0x9c, 0x0b, 0x17, 0xd6, 0x90, 0xc7, 0xde, 0xf0, 0x23, 0xcc, 0xe0, 0xf4, 0x41, 0x73, 0x61, 0x28, 0x07, 0xe1, 0xa9, 0xba, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x1d, 0xb4, 0x83, 0xc6, 0xb5, 0x06, 0xeb, 0xdd, 0x99, 0x0f, 0x96, 0x67, 0x20, 0x1f, 0xb4, 0x3c, 0xc7, 0x75, 0x38, 0xc5, 0x5a, 0xc0, 0x17, 0x93, 0x0b, 0x73, 0x37, 0x58, 0x0e, 0xc9, 0x34, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0xb4, 0xbb, 0x51, 0x75, 0xd0, 0xa0, 0x57, 0xd5, 0x86, 0xaf, 0x70, 0x36, 0x58, 0x0e, 0xc9, 0x34, 0x1b, 0xfe, 0xa2, 0x59, 0xc3, 0xbf, 0xf3, 0x1b, 0x2c, 0xd0, 0xc6, 0x5e, 0xc0, 0x6f, 0xab, 0x9b, 0x5b, 0x6b, 0x83, 0x20, 0x3d, 0xdd, 0xa0, 0x81, 0x91, 0xa9, 0x35, 0x58, 0xef, 0xce, 0xbc, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x1b, 0xe0, 0xbd, 0xe1, 0x17, 0x97, 0x83, 0x16, 0x1f, 0xa9, 0x0e, 0xca, 0x3a, 0xcf, 0x35, 0x58, 0x2f, 0xd2, 0x7c, 0xd0, 0x4a, 0x6d, 0xd8, 0x1a, 0x34, 0xb0, 0x38, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xfb, 0x97, 0x53, 0x1b, 0xb4, 0x52, 0x1b, 0xb6, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x1b, 0xe0, 0x7d, 0x50, 0x50, 0x64, 0x6e, 0xd0, 0xa8, 0xe6, 0x54, 0x6b, 0xd0, 0x86, 0xe7, 0xd4, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x39, 0x38, 0x93, 0x20, 0x6c, 0x78, 0x5b, 0xe7, 0xa0, 0x39, 0xd8, 0xb0, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x83, 0x16, 0xdc, 0xa8, 0x0e, 0xda, 0x20, 0x0c, 0x5b, 0x83, 0xe6, 0x23, 0xa6, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x68, 0xdc, 0x38, 0x6c, 0x83, 0x16, 0xf9, 0xa7, 0x0e, 0x9a, 0x5c, 0x0e, 0x5b, 0x83, 0x96, 0x61, 0xa7, 0x0e, 0x9a, 0xea, 0x0b, 0x5b, 0x83, 0x46, 0x7d, 0xa7, 0x0e, 0x5a, 0xa9, 0x0d, 0x5b, 0x83, 0x36, 0x92, 0xa7, 0x0e, 0x9a, 0xea, 0x0b, 0x5b, 0x83, 0x26, 0xa5, 0xa7, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x4b, 0xad, 0xea, 0xa0, 0x59, 0x0d, 0xaa, 0x0d, 0x5a, 0xa9, 0x0d, 0xdb, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x68, 0x6e, 0xae, 0x6a, 0x0d, 0x5a, 0x72, 0xab, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xed, 0xde, 0x55, 0x1d, 0x34, 0xab, 0x41, 0x55, 0x87, 0x53, 0x6c, 0x0d, 0x1a, 0x11, 0x48, 0xd9, 0xf0, 0xf8, 0xc8, 0x06, 0x8d, 0x08, 0xa4, 0x6c, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x44, 0xd6, 0xd6, 0xc1, 0x92, 0x3e, 0xe7, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0xcf, 0xee, 0x8d, 0x3e, 0x68, 0xd0, 0xab, 0x6a, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0xed, 0xbb, 0xf3, 0x06, 0x41, 0x7a, 0xba, 0x41, 0x03, 0x23, 0x53, 0x6b, 0xb0, 0x5e, 0xa4, 0x79, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x9f, 0x42, 0x3e, 0x28, 0x88, 0xc7, 0xd7, 0x60, 0xbd, 0x3b, 0xf3, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x3e, 0x85, 0x7c, 0x50, 0x38, 0xc9, 0xae, 0x41, 0x03, 0x8b, 0x53, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xb4, 0x7f, 0x39, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xfc, 0x8c, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x04, 0x47, 0xea, 0x06, 0xcb, 0x02, 0x80, 0x0f, 0x5a, 0x29, 0xdb, 0x6a, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x54, 0xd3, 0xb1, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x3e, 0x85, 0x7c, 0xd0, 0xe6, 0x70, 0xd8, 0x1a, 0x7e, 0x71, 0x39, 0x68, 0x07, 0x41, 0xac, 0x35, 0x68, 0xc3, 0x73, 0x6a, 0x83, 0xa2, 0xd3, 0x78, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x66, 0x6c, 0x61, 0x6e, 0x1b, 0x34, 0x67, 0x20, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x9e, 0x10, 0x5b, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x0d, 0x37, 0xaa, 0x83, 0xf6, 0x4f, 0xb7, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x68, 0x4a, 0x8e, 0x6a, 0x83, 0xf6, 0x3d, 0xb7, 0x6a, 0x0d, 0x9a, 0x8f, 0x98, 0xda, 0xe0, 0x5c, 0xb8, 0xb0, 0x86, 0x3c, 0xf6, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0x1a, 0xcf, 0x46, 0x39, 0x08, 0x4f, 0xd5, 0x35, 0x68, 0x19, 0x76, 0xea, 0xa0, 0x15, 0xc2, 0xb0, 0x35, 0x68, 0xd4, 0x77, 0x6a, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xf5, 0x9e, 0x7a, 0x07, 0x6d, 0x28, 0x55, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0xac, 0x7d, 0x77, 0xde, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0xe5, 0xc3, 0xde, 0x06, 0xcd, 0xe8, 0x87, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x66, 0x6c, 0x6f, 0x72, 0x6b, 0xb8, 0xa4, 0x36, 0x38, 0xec, 0x77, 0xac, 0x41, 0x03, 0x23, 0x53, 0x07, 0x4d, 0x54, 0x72, 0xb5, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0x6b, 0x8d, 0x5c, 0xb5, 0x06, 0x6d, 0x24, 0x4f, 0x1d, 0xb4, 0x42, 0x18, 0xb6, 0x06, 0x4d, 0x4a, 0x4f, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0xc1, 0xd1, 0x5a, 0x63, 0x83, 0xb2, 0xe9, 0x7d, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x84, 0x7c, 0x58, 0x1d, 0x34, 0xab, 0x41, 0xb5, 0x06, 0xe7, 0xc2, 0x85, 0x35, 0xe4, 0xb1, 0x37, 0xfc, 0x08, 0x33, 0x38, 0x7d, 0xd0, 0xd0, 0x3d, 0xca, 0x41, 0x78, 0xaa, 0x6e, 0x50, 0x4a, 0x88, 0xaf, 0xe1, 0x92, 0xda, 0xa0, 0xa8, 0x11, 0x5f, 0x83, 0x36, 0x8f, 0xc4, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x65, 0x0b, 0xea, 0x41, 0xb3, 0x45, 0x62, 0x07, 0xcd, 0x6a, 0x50, 0x75, 0xd0, 0x54, 0x5f, 0x58, 0xab, 0x41, 0x4b, 0x0c, 0x29, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x34, 0x21, 0x42, 0xb5, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x96, 0x31, 0x7c, 0xb0, 0x6c, 0xc6, 0xb9, 0x0d, 0x6f, 0xd9, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x59, 0xc7, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0xb3, 0xbe, 0xae, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0xb4, 0xc4, 0x90, 0xd2, 0x41, 0x8b, 0x47, 0x56, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0xa0, 0x42, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0x5f, 0xa1, 0xda, 0xa0, 0xf9, 0x71, 0xab, 0x83, 0xa6, 0x5f, 0xa8, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0x60, 0x83, 0x0e, 0xda, 0x97, 0xa1, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xcd, 0xea, 0x50, 0x6d, 0xd0, 0x42, 0x0f, 0xd5, 0x1a, 0x7e, 0x51, 0xda, 0x60, 0xd9, 0x8c, 0xf3, 0x86, 0xb7, 0x75, 0x0e, 0x96, 0x96, 0x0c, 0x77, 0x38, 0xc5, 0x5a, 0x83, 0xf6, 0xf0, 0x97, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xda, 0xc3, 0x5f, 0x6a, 0x00, 0x7f, 0xb2, 0x32, 0xba, 0xb2, 0x31, 0x3a, 0x90, 0x32, 0xbc, 0xb4, 0x39, 0xba, 0x32, 0xb7, 0xb1, 0xb2, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x4f, 0xee, 0x8d, 0x3e, 0x58, 0x3d, 0x82, 0xbd, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0x50, 0xf4, 0xe9, 0xae, 0x41, 0x93, 0x87, 0x62, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0x8b, 0xe5, 0x35, 0xbc, 0xad, 0x73, 0xd0, 0x1a, 0xa3, 0x58, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x86, 0x0f, 0x56, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x8d, 0x51, 0x6c, 0x83, 0x22, 0xa7, 0x75, 0x83, 0x82, 0x34, 0x76, 0xc0, 0xcb, 0x2b, 0x83, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcd, 0x42, 0x4a, 0xad, 0xe1, 0x8d, 0xbb, 0x83, 0x85, 0x00, 0xce, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0xa0, 0x35, 0x46, 0xb1, 0x36, 0x28, 0xe1, 0x31, 0xd7, 0xa0, 0x21, 0x4c, 0xb1, 0x36, 0x28, 0x60, 0xf3, 0x37, 0x08, 0xd2, 0xd3, 0x35, 0x0e, 0x1d, 0x34, 0x0e, 0x2a, 0xb6, 0x06, 0x01, 0x1b, 0xb4, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x6b, 0x8c, 0x62, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3e, 0x68, 0x8d, 0x51, 0x6c, 0x0d, 0x1a, 0x18, 0x99, 0xda, 0xf0, 0xa0, 0xe4, 0x06, 0xa7, 0x8b, 0x8c, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xc2, 0xa1, 0xd4, 0x06, 0xab, 0xc0, 0x64, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0xe3, 0xa0, 0x62, 0xb5, 0x06, 0x61, 0x04, 0xb4, 0x41, 0x90, 0x9e, 0xae, 0x71, 0xe8, 0xa0, 0x5d, 0x59, 0xb1, 0x35, 0x08, 0xd8, 0xa0, 0x83, 0x02, 0x36, 0x7f, 0x0d, 0xc2, 0x08, 0x68, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x15, 0x54, 0xb1, 0x35, 0x68, 0x60, 0x64, 0x6a, 0xc3, 0x83, 0x92, 0x1b, 0x9c, 0x2e, 0x32, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x0b, 0x87, 0x52, 0x1b, 0x2c, 0x73, 0x92, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0xed, 0xca, 0x8a, 0x55, 0xad, 0x06, 0x2d, 0x2c, 0xaa, 0x6c, 0x78, 0x7c, 0x64, 0x83, 0x16, 0x16, 0x55, 0x36, 0x28, 0x25, 0xc4, 0xd7, 0x70, 0x49, 0x6d, 0x50, 0xd4, 0x88, 0x1f, 0xb4, 0x55, 0xd5, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0x5a, 0xa0, 0x90, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xcb, 0x66, 0x9c, 0x37, 0x08, 0xd2, 0xd3, 0x0d, 0x9a, 0x41, 0x91, 0x5a, 0x83, 0xa5, 0x44, 0xc4, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x71, 0x1f, 0xae, 0x0d, 0xda, 0x54, 0xf5, 0xda, 0xa0, 0xc1, 0x82, 0xaf, 0xd6, 0xa0, 0x85, 0x1d, 0xaf, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x98, 0xd1, 0x78, 0x83, 0x06, 0xce, 0xa6, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x2d, 0xac, 0x76, 0x6d, 0xd0, 0xdc, 0x90, 0xd7, 0x41, 0x13, 0xc9, 0x58, 0x1b, 0x34, 0x70, 0x36, 0xb5, 0x06, 0x85, 0x60, 0xea, 0xc1, 0x1a, 0x6c, 0xec, 0x83, 0x36, 0x73, 0xbb, 0xd6, 0xa0, 0xd1, 0x23, 0xaf, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x98, 0xd1, 0x78, 0x83, 0x06, 0xce, 0xa6, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x2d, 0xac, 0x76, 0x6d, 0xd0, 0x4a, 0xf9, 0xd5, 0x41, 0x13, 0xc9, 0x58, 0x07, 0x2d, 0x85, 0x8b, 0xad, 0x41, 0x13, 0x51, 0x5e, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0xb4, 0x71, 0x1f, 0x75, 0xd0, 0xc0, 0x95, 0xd7, 0x1a, 0xb4, 0xd6, 0xe5, 0x75, 0xd0, 0x92, 0x98, 0xd7, 0x1a, 0x34, 0x82, 0xe6, 0x75, 0xd0, 0x4c, 0x7b, 0xd4, 0x1a, 0xb4, 0xd5, 0xe7, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0x6c, 0xc6, 0x79, 0x83, 0x82, 0x60, 0x76, 0x83, 0x76, 0x44, 0xbb, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x4d, 0x6a, 0x5e, 0x6c, 0xd0, 0xc2, 0x6a, 0xd7, 0x1a, 0x1c, 0xc3, 0x0d, 0x0e, 0x1a, 0x0b, 0xed, 0x6a, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x22, 0x59, 0xb1, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xed, 0x88, 0x76, 0x6d, 0xb8, 0xa4, 0xd6, 0x38, 0x74, 0xd0, 0x8e, 0x68, 0x57, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x3b, 0xa2, 0x5d, 0x1b, 0x2e, 0xa9, 0x35, 0x9e, 0x1f, 0xb4, 0x23, 0xda, 0x55, 0xad, 0x41, 0x33, 0x75, 0x5e, 0x1b, 0x14, 0x04, 0xb3, 0x1b, 0xb4, 0x23, 0xda, 0xb5, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x47, 0x66, 0xd5, 0x83, 0x16, 0x56, 0xbb, 0xd6, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0x39, 0x68, 0x2c, 0xb4, 0xeb, 0xa0, 0x11, 0x7f, 0xb1, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x52, 0x9c, 0x9c, 0x0e, 0x5a, 0x58, 0xed, 0x5a, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0x77, 0x83, 0xc6, 0x42, 0xbb, 0x0e, 0x0a, 0xe2, 0xf1, 0x83, 0xf6, 0x24, 0xbd, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x93, 0x9a, 0x17, 0x1b, 0xb4, 0xb0, 0xda, 0x75, 0x50, 0xd6, 0x79, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0xab, 0x71, 0xe8, 0xa0, 0x19, 0x14, 0xa9, 0x83, 0xa6, 0xb4, 0x0a, 0x5a, 0x83, 0x46, 0xce, 0xbd, 0x0e, 0x9a, 0x57, 0xf7, 0x5a, 0x83, 0xe6, 0x02, 0xbd, 0x0e, 0x96, 0xd8, 0x6f, 0xaf, 0x41, 0x93, 0x8b, 0x5e, 0x07, 0xed, 0x49, 0x7a, 0xad, 0x41, 0xf3, 0x94, 0x5e, 0x07, 0xed, 0x49, 0x7a, 0xad, 0x41, 0xc3, 0x9e, 0x5e, 0x07, 0x2d, 0xac, 0x76, 0xad, 0x41, 0xd3, 0xa4, 0x5e, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x25, 0xb5, 0x41, 0x8b, 0xd0, 0x52, 0x6b, 0xd0, 0xc0, 0xc8, 0xd4, 0x41, 0x9b, 0xaa, 0x5e, 0x1d, 0xb4, 0x4a, 0xeb, 0xb5, 0x06, 0x8d, 0xf9, 0x7a, 0x1d, 0xb4, 0xa9, 0xea, 0xb5, 0x06, 0x6d, 0x68, 0x7b, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xe6, 0x76, 0xc6, 0x0e, 0xda, 0x0e, 0xf7, 0xda, 0xa0, 0xdd, 0x8a, 0xaf, 0x35, 0x68, 0x70, 0xde, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xb7, 0x33, 0x76, 0xd0, 0xd0, 0xbe, 0xd7, 0x1a, 0xb4, 0xfb, 0xef, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0x42, 0xa5, 0xda, 0xa0, 0x89, 0x85, 0xaf, 0x83, 0x46, 0xaf, 0xc5, 0xd6, 0xa0, 0xf1, 0x8c, 0xaf, 0x0d, 0x6f, 0xd9, 0xad, 0xe1, 0x92, 0xda, 0xa0, 0x11, 0x37, 0xa9, 0x35, 0x68, 0x60, 0x64, 0x6a, 0xc3, 0x25, 0xb5, 0xc1, 0x61, 0xbf, 0xe3, 0xa0, 0x05, 0x56, 0xaf, 0x0e, 0x1a, 0x2c, 0xf8, 0xda, 0xa0, 0x7d, 0x91, 0xaf, 0x35, 0x68, 0xe4, 0xe4, 0x6b, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x55, 0x13, 0xaf, 0x83, 0x96, 0x7a, 0xc6, 0xd6, 0xa0, 0x05, 0x9c, 0xaf, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0x56, 0x4d, 0xbc, 0xd6, 0xa0, 0x81, 0x91, 0xa9, 0x83, 0x46, 0x7a, 0xbe, 0x5a, 0x83, 0xd6, 0xa0, 0xbe, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0xed, 0x86, 0x7d, 0x1d, 0xb4, 0x50, 0xf6, 0xb5, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0x73, 0xf3, 0xeb, 0xa0, 0x75, 0xcf, 0xaf, 0x36, 0x38, 0xb1, 0xdf, 0x6c, 0xd0, 0xcc, 0xc1, 0xd4, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x68, 0xeb, 0xfb, 0x62, 0xc3, 0xdb, 0x3a, 0x07, 0x8d, 0xca, 0x7d, 0x6d, 0xd0, 0xd6, 0xf7, 0xc5, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x0d, 0x8c, 0x4c, 0x1d, 0x34, 0x63, 0x37, 0x76, 0xd0, 0xbc, 0xc1, 0xd7, 0x1a, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0xb4, 0xf5, 0x7d, 0xb1, 0xe1, 0x6d, 0x9d, 0x83, 0x06, 0x59, 0xbf, 0x36, 0x68, 0xeb, 0xfb, 0x62, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x06, 0x46, 0xa6, 0x0e, 0x5a, 0x07, 0x1c, 0x3b, 0x68, 0xe7, 0xf9, 0xab, 0x35, 0x68, 0x97, 0xfc, 0xeb, 0xa0, 0x3d, 0x49, 0xaf, 0x35, 0x68, 0xf3, 0xb5, 0xeb, 0xa0, 0x3d, 0x49, 0xaf, 0x0d, 0x9a, 0x5b, 0x03, 0x5b, 0x83, 0xe6, 0xea, 0xc0, 0x0e, 0xda, 0x54, 0xf5, 0x5a, 0x83, 0x46, 0xf7, 0xc0, 0x0e, 0xda, 0xfa, 0xbe, 0x58, 0x83, 0x26, 0x1a, 0xc1, 0x0e, 0x5a, 0xa4, 0x16, 0x5b, 0x83, 0xc6, 0x54, 0xc1, 0x0e, 0x9a, 0x7a, 0x05, 0x5b, 0x83, 0xf6, 0x11, 0xc1, 0x0e, 0x96, 0xd8, 0x6f, 0xaf, 0x41, 0xab, 0xb2, 0x60, 0x1b, 0x3e, 0xc8, 0xd9, 0xa0, 0xb1, 0x5b, 0xb0, 0x83, 0x76, 0x98, 0xc1, 0xd6, 0xa0, 0xfd, 0x67, 0xb0, 0x83, 0xb6, 0xbe, 0x2f, 0xd6, 0x20, 0x4c, 0xc7, 0x36, 0x7c, 0x62, 0xb3, 0x41, 0xdb, 0xd5, 0x60, 0x1b, 0x3e, 0xc8, 0xd9, 0xa0, 0xe1, 0x6c, 0xb0, 0x35, 0xbc, 0x65, 0xb7, 0x41, 0xb3, 0xde, 0x60, 0x1b, 0x9c, 0x0b, 0x17, 0xd6, 0x90, 0xc7, 0xde, 0xf0, 0x23, 0xcc, 0xe0, 0xf4, 0x41, 0xc3, 0x84, 0x2a, 0x07, 0xe1, 0xa9, 0x7a, 0xd0, 0x04, 0x3b, 0x58, 0xb3, 0x06, 0x2d, 0x8d, 0xaa, 0x6c, 0x78, 0x7c, 0x64, 0x83, 0x96, 0x46, 0x55, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x68, 0xf4, 0xc6, 0xea, 0xa0, 0xfd, 0x09, 0xa9, 0x0d, 0x7f, 0xd1, 0x6c, 0xd0, 0x74, 0x8f, 0xd5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x87, 0x56, 0x07, 0x6f, 0x50, 0x96, 0xbc, 0x2f, 0xe0, 0xcb, 0x95, 0x95, 0xad, 0x1d, 0x34, 0x75, 0xdf, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0x06, 0x2d, 0xe1, 0x8e, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xe6, 0x24, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x40, 0x55, 0xea, 0xa0, 0x19, 0x13, 0xa9, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xfb, 0x2b, 0x54, 0x1b, 0x34, 0x18, 0x66, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0xda, 0xef, 0x1d, 0x6b, 0x35, 0x68, 0x60, 0x7b, 0x69, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x16, 0x6d, 0xab, 0x0e, 0xda, 0x9f, 0x90, 0xda, 0xf0, 0x17, 0xcd, 0x1a, 0x3e, 0x57, 0x3a, 0x58, 0x4a, 0x5f, 0xbe, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x8a, 0xa6, 0xf1, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x40, 0x55, 0x6a, 0x83, 0xb6, 0x85, 0xab, 0x0e, 0x5a, 0x3a, 0x91, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xd4, 0xde, 0xdc, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0x87, 0xc1, 0x95, 0xe1, 0x1d, 0xb4, 0x99, 0x1c, 0xb6, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xa0, 0x34, 0xac, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0x90, 0x8e, 0x78, 0xdc, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x2b, 0xd9, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x84, 0xe0, 0xc3, 0x06, 0xcd, 0x6a, 0x8f, 0xb5, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x0b, 0x69, 0xc2, 0x37, 0x0e, 0x0d, 0x5e, 0x1f, 0xb4, 0x93, 0x3e, 0xd6, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0xe9, 0x88, 0xc7, 0x07, 0x0d, 0x8c, 0x8f, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x66, 0xdf, 0xc7, 0x36, 0x58, 0x3e, 0x85, 0xbc, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0xda, 0x68, 0x1f, 0xeb, 0x70, 0x8a, 0xd5, 0x1a, 0xb4, 0xb7, 0xbf, 0x74, 0x10, 0x9e, 0xaa, 0xab, 0x41, 0xf3, 0xc5, 0x2a, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0xf9, 0x62, 0x95, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0x02, 0x85, 0xd4, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x36, 0xe3, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xe3, 0x2e, 0x25, 0x6d, 0x50, 0xe4, 0xb4, 0x1e, 0xb4, 0x74, 0x22, 0xb5, 0x1a, 0x34, 0x70, 0xbe, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0xce, 0x04, 0xa3, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x34, 0xe2, 0x26, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0xbe, 0x6e, 0xee, 0xa0, 0x59, 0x0d, 0xaa, 0xd5, 0xa0, 0xc9, 0x0b, 0xab, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x93, 0xdc, 0x5c, 0x07, 0xcb, 0xd8, 0xcb, 0x0f, 0x1a, 0x81, 0xad, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xcb, 0x66, 0x9c, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x01, 0x1b, 0xb4, 0x71, 0xe8, 0xa0, 0xd1, 0x77, 0xae, 0x35, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x96, 0xcd, 0x38, 0x6f, 0x50, 0xc2, 0x63, 0x6e, 0xb0, 0xb6, 0x13, 0x7e, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x34, 0xfa, 0xce, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0xd3, 0xfd, 0x5c, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xfd, 0x5c, 0xa9, 0x83, 0x26, 0x06, 0xba, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0xbd, 0x7f, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0x5c, 0x52, 0x1b, 0xb4, 0xab, 0x2c, 0xb5, 0x06, 0x0d, 0x8c, 0x4c, 0x1d, 0x34, 0x24, 0x42, 0xd6, 0x06, 0xcd, 0x41, 0x74, 0xad, 0xe1, 0x6d, 0x9d, 0x83, 0x86, 0x28, 0xba, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x68, 0x19, 0xa5, 0x6b, 0x0d, 0xda, 0x18, 0x21, 0xdb, 0xf0, 0xb6, 0xce, 0x41, 0xc3, 0x25, 0x5d, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xd0, 0xa2, 0xbc, 0xd4, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8b, 0x40, 0x46, 0x37, 0x28, 0x9b, 0xde, 0xd7, 0xf0, 0xb6, 0xce, 0x41, 0x23, 0xef, 0x5c, 0x6d, 0x70, 0x62, 0xbf, 0xd9, 0xa0, 0x21, 0x45, 0xa9, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0xfa, 0x65, 0x83, 0xe6, 0xc3, 0xba, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x58, 0xdb, 0x09, 0xbf, 0x41, 0xf3, 0x61, 0x5d, 0x1b, 0x3e, 0xb1, 0xd9, 0xa0, 0xc9, 0x12, 0xb2, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x1a, 0x3d, 0xeb, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x2d, 0x33, 0x4b, 0x6d, 0xd0, 0x1c, 0x44, 0xd7, 0x06, 0xad, 0xce, 0x90, 0x6d, 0xd0, 0x7c, 0x58, 0x57, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0x2d, 0xa3, 0x74, 0xad, 0x41, 0xf3, 0x01, 0x53, 0x1b, 0xde, 0xd6, 0x39, 0x68, 0x09, 0xb0, 0xab, 0xd5, 0xa0, 0x99, 0x85, 0x96, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x66, 0x16, 0x5a, 0x1a, 0xc0, 0x5b, 0xae, 0xcc, 0xac, 0x4e, 0x4e, 0x2c, 0x6d, 0x0e, 0x0d, 0xc4, 0x2c, 0x6c, 0xac, 0x6c, 0x6e, 0xc3, 0xe3, 0x23, 0x1b, 0x34, 0xb3, 0xd0, 0xb2, 0xe1, 0x17, 0xa5, 0x0d, 0x5a, 0xb1, 0xa8, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xcb, 0x66, 0x9c, 0x37, 0x28, 0xed, 0x2d, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x87, 0xf6, 0x36, 0x6f, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0xfe, 0x9d, 0x5f, 0x83, 0x65, 0xee, 0xd9, 0xd5, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0xdf, 0xa0, 0x35, 0x97, 0x95, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0xc4, 0xf7, 0x0d, 0xda, 0x6e, 0x23, 0xeb, 0x20, 0x4c, 0xc7, 0x36, 0x68, 0xe5, 0x36, 0x6c, 0x83, 0xd2, 0xde, 0x72, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xee, 0x46, 0xd5, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x89, 0xf8, 0xbe, 0x41, 0xf3, 0xc9, 0x55, 0x6d, 0x78, 0x50, 0x72, 0x0d, 0x96, 0xd4, 0x2f, 0xad, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0xb4, 0x1d, 0xd0, 0x72, 0xd0, 0x32, 0x48, 0xd5, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x06, 0x8b, 0x2e, 0xad, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x16, 0x5d, 0x5a, 0x35, 0x00, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0xd9, 0x8c, 0xf3, 0x06, 0x05, 0x69, 0xec, 0x80, 0xc7, 0xf6, 0x66, 0xaf, 0x41, 0x41, 0x1a, 0xbb, 0x41, 0x8b, 0x95, 0x64, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x27, 0x2b, 0x0b, 0x93, 0xdb, 0xa0, 0x84, 0xc7, 0x5c, 0x83, 0x16, 0x2b, 0xc9, 0x5a, 0x83, 0x75, 0xab, 0x4c, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x5a, 0x73, 0x59, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0xe6, 0xb2, 0x52, 0x07, 0xe1, 0xa9, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0xce, 0x86, 0x2e, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0x19, 0x4e, 0xb2, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x96, 0xcd, 0x38, 0x6f, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0x0c, 0x27, 0xd9, 0x06, 0x0d, 0x9c, 0x4d, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0x0c, 0x27, 0xd9, 0x86, 0xb7, 0x75, 0x06, 0xa7, 0x0f, 0x9a, 0xe1, 0x24, 0x5b, 0x83, 0x06, 0x46, 0xa6, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xbb, 0x4e, 0x5c, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0xa0, 0x19, 0x4e, 0xb2, 0x83, 0x66, 0x35, 0xa8, 0x5a, 0x0d, 0x1a, 0xce, 0x24, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x38, 0x93, 0xac, 0x01, 0xf8, 0x90, 0x2b, 0x9b, 0x7b, 0x63, 0xb3, 0x2b, 0x03, 0xa1, 0x7b, 0x7b, 0x63, 0x03, 0x99, 0xa3, 0x0b, 0x1b, 0x5b, 0xdb, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0x65, 0x13, 0xe6, 0x41, 0x03, 0x78, 0x64, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xb4, 0x34, 0x4a, 0xb6, 0xc1, 0xba, 0x86, 0xf5, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x28, 0x26, 0x31, 0x37, 0x68, 0x75, 0x9b, 0xea, 0xa0, 0xa5, 0x51, 0xb2, 0x35, 0x58, 0xb7, 0xca, 0x34, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0xa0, 0x65, 0xf1, 0x95, 0x83, 0xc6, 0x44, 0xc9, 0x0e, 0x0a, 0x8a, 0xcc, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xd6, 0xf9, 0x8a, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xdd, 0x83, 0x96, 0x46, 0xc9, 0x36, 0x28, 0x48, 0x63, 0x37, 0x28, 0x0b, 0x8b, 0xd7, 0xf0, 0xb9, 0xcb, 0x1a, 0x26, 0x6e, 0x70, 0x38, 0x3c, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0xe7, 0xe4, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x65, 0x36, 0xb2, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xf4, 0x9c, 0xdc, 0x60, 0xad, 0xc6, 0x68, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x80, 0x2e, 0x61, 0x6c, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x30, 0x2e, 0x20, 0x20, 0x62, 0x72, 0x75, 0x74, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6e, 0x65, 0xae, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xd6, 0x13, 0xc3, 0xae, 0x41, 0x69, 0x6f, 0xb9, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb6, 0x3a, 0xf8, 0xe0, 0x7c, 0x47, 0xb8, 0x41, 0x69, 0x6f, 0xb9, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x4f, 0x0c, 0x7b, 0x50, 0x66, 0xe9, 0x6e, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x94, 0x59, 0xba, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xaf, 0x64, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x37, 0x8a, 0x1b, 0x2c, 0x19, 0x86, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0xe5, 0x9a, 0x71, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x37, 0x8a, 0x1b, 0x2c, 0x19, 0x86, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0xe5, 0x9a, 0x71, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x8e, 0xb1, 0x63, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x46, 0xf6, 0xc9, 0x3a, 0x28, 0x9c, 0x64, 0x37, 0x28, 0x48, 0x63, 0x37, 0x48, 0x46, 0x26, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xde, 0xe2, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x68, 0x0e, 0xa1, 0x6c, 0x83, 0x25, 0xc3, 0xb0, 0x1d, 0xb4, 0x5b, 0x4e, 0xb6, 0x41, 0x41, 0x1a, 0x3b, 0xe0, 0xb1, 0x85, 0xc1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x83, 0x85, 0xe0, 0x06, 0x4b, 0x86, 0x61, 0x0f, 0x1a, 0x4f, 0x27, 0xdb, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x35, 0x31, 0xec, 0x86, 0x8f, 0xa3, 0x0e, 0x96, 0x0c, 0xc3, 0xae, 0x41, 0xf3, 0x12, 0x65, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0x54, 0xff, 0xd2, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xce, 0x47, 0x59, 0x1b, 0xb4, 0x21, 0x51, 0xb6, 0xc1, 0x31, 0xdc, 0xe0, 0x60, 0xc9, 0x30, 0x6c, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x44, 0xd0, 0xb6, 0x41, 0xcb, 0xe5, 0x64, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd3, 0x5b, 0xdc, 0x41, 0x3b, 0x22, 0x65, 0xcd, 0x1a, 0x34, 0x1b, 0x52, 0xb5, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x6c, 0x48, 0x55, 0x03, 0xf8, 0xcf, 0xd5, 0x89, 0xa9, 0x95, 0x8d, 0xd1, 0x81, 0xd0, 0xc9, 0x85, 0xd9, 0x95, 0xc9, 0xcd, 0x95, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x65, 0x33, 0xce, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xaf, 0x64, 0x1b, 0xb4, 0x50, 0x78, 0xb5, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x04, 0x9b, 0xe9, 0x06, 0xeb, 0xdd, 0x99, 0x37, 0x58, 0x2f, 0xd2, 0xbc, 0x86, 0xcf, 0x95, 0xd6, 0x20, 0xd8, 0x4c, 0x37, 0x58, 0xf3, 0xd2, 0xbc, 0xc1, 0x6a, 0x24, 0xee, 0x0e, 0x0e, 0x31, 0x1d, 0x1d, 0xac, 0xbb, 0x40, 0x6e, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xe8, 0xd2, 0xaa, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0x06, 0x46, 0xa6, 0xd6, 0xa0, 0x05, 0xa4, 0xb2, 0x0d, 0x0f, 0x4a, 0x6e, 0xd0, 0x60, 0x54, 0xd9, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x80, 0xa7, 0xea, 0x20, 0x3d, 0x05, 0x6a, 0x0d, 0xda, 0xf0, 0x9c, 0xda, 0xa0, 0x94, 0x10, 0xdf, 0xa0, 0x5d, 0xac, 0xb2, 0x0d, 0x0a, 0x3e, 0xcc, 0x0d, 0x9a, 0xcd, 0xac, 0xda, 0x70, 0x49, 0x6d, 0xd0, 0x96, 0x54, 0xd9, 0x1a, 0x34, 0x30, 0x32, 0xb5, 0xc1, 0xda, 0xb8, 0xa6, 0xd5, 0xa0, 0x51, 0x73, 0xb2, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x5a, 0x1a, 0x25, 0x3b, 0x68, 0xe5, 0x36, 0xac, 0x0d, 0xce, 0xf9, 0x4b, 0x1b, 0xb4, 0x22, 0x59, 0xb1, 0x86, 0x4b, 0x6a, 0x83, 0x46, 0x43, 0xaa, 0x36, 0x68, 0xc3, 0x8d, 0x6a, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xf6, 0xc1, 0xad, 0x36, 0x68, 0x6d, 0x53, 0xec, 0x20, 0x58, 0x59, 0xdb, 0x70, 0x49, 0x6d, 0xd0, 0x68, 0x48, 0xd5, 0x06, 0x4d, 0xc9, 0x51, 0xad, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x3e, 0xb8, 0xd5, 0x06, 0xad, 0x6d, 0x8a, 0x1d, 0x14, 0x94, 0xe2, 0xb5, 0x06, 0x2d, 0xc3, 0x4e, 0x6d, 0xb8, 0xa4, 0x36, 0x68, 0x34, 0xa4, 0x6a, 0x0d, 0x1a, 0x35, 0x27, 0xdb, 0xf0, 0x8b, 0xcb, 0x06, 0x6d, 0x4d, 0x4e, 0x1d, 0xb4, 0x5b, 0x4e, 0x76, 0xd0, 0x90, 0x1c, 0xd5, 0x06, 0x6d, 0x68, 0x71, 0x6d, 0xd0, 0xaa, 0x14, 0xd7, 0x1a, 0x34, 0x29, 0x3d, 0xb5, 0x41, 0x29, 0x21, 0xbe, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x80, 0xa7, 0xea, 0x20, 0xd5, 0x16, 0x6e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x9a, 0x94, 0x9e, 0x3a, 0x68, 0x60, 0x64, 0x6a, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x8e, 0xd6, 0x1a, 0x1b, 0x94, 0x4d, 0xef, 0x07, 0x29, 0x5a, 0x9d, 0x1b, 0x34, 0x86, 0x67, 0xd5, 0x06, 0x0d, 0x5b, 0x95, 0x6d, 0xf8, 0x20, 0x67, 0x83, 0xe6, 0xdb, 0xaf, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0x0d, 0x46, 0x95, 0x1d, 0xb4, 0x93, 0x58, 0xb6, 0xe1, 0x13, 0x9b, 0x0d, 0x5a, 0x02, 0x96, 0xda, 0xe0, 0x68, 0xc3, 0xb7, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x86, 0x67, 0x26, 0x0f, 0x4e, 0x2b, 0x67, 0x07, 0x8d, 0x87, 0x51, 0x6d, 0xb8, 0xa4, 0x36, 0x68, 0x34, 0xa4, 0x6a, 0x0d, 0x1a, 0x18, 0x99, 0x3a, 0x3c, 0x33, 0xb9, 0x06, 0x2d, 0xb9, 0x55, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x76, 0xef, 0xaa, 0x0e, 0x9a, 0x86, 0xbf, 0xaa, 0xd5, 0xa0, 0x75, 0x9e, 0xaa, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xd6, 0x79, 0xaa, 0x1a, 0x80, 0x17, 0xb9, 0x32, 0xb2, 0xba, 0xb1, 0x32, 0x10, 0xb1, 0x3c, 0x10, 0xb9, 0x32, 0xb3, 0x32, 0xb9, 0x32, 0xb7, 0xb1, 0xb2, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xa1, 0xbd, 0x91, 0x87, 0x0f, 0x56, 0xdb, 0xf0, 0xf5, 0xcb, 0x06, 0x89, 0x2d, 0x55, 0x1b, 0x9c, 0x1c, 0xe4, 0x36, 0x58, 0x77, 0x81, 0xbc, 0x41, 0x62, 0x4b, 0xd5, 0x1a, 0xb4, 0x91, 0x3c, 0xb5, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x1d, 0x34, 0x86, 0x5a, 0xb5, 0x06, 0x2d, 0xc3, 0x4e, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x34, 0x87, 0x5a, 0xb5, 0x06, 0x2d, 0x8d, 0x92, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x12, 0x37, 0x6a, 0x37, 0x28, 0x9b, 0xde, 0x0f, 0x1a, 0x13, 0x25, 0x5b, 0xc3, 0x2f, 0x4a, 0x1b, 0xb4, 0xdd, 0x46, 0xb6, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0x17, 0xad, 0x3a, 0x38, 0x6d, 0xa1, 0xd5, 0x1a, 0x34, 0xea, 0x3b, 0xb5, 0xc1, 0xd1, 0x86, 0x6f, 0x0d, 0x97, 0xd4, 0x86, 0xab, 0x6b, 0x0d, 0x5a, 0x1a, 0x25, 0x3b, 0x68, 0x2c, 0x18, 0x6c, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x66, 0x0e, 0xa6, 0x36, 0x68, 0x67, 0x18, 0xac, 0x36, 0x28, 0x48, 0x63, 0x37, 0x48, 0x5a, 0xf5, 0xdc, 0xa0, 0x61, 0x2a, 0xac, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xd2, 0x9b, 0x7e, 0x83, 0x26, 0xec, 0xc8, 0x36, 0x68, 0x32, 0xac, 0xaa, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x92, 0xf5, 0x3f, 0x37, 0x38, 0xcb, 0x4a, 0x6d, 0x50, 0x90, 0xc6, 0x6e, 0x30, 0x16, 0xc4, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x20, 0x59, 0xff, 0x73, 0xc3, 0xdb, 0x3a, 0x83, 0xd3, 0x07, 0xc9, 0xfa, 0x9f, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0x5e, 0xa8, 0x6a, 0x0d, 0x6f, 0xeb, 0x0c, 0x9e, 0x1e, 0x24, 0xeb, 0x7f, 0xb6, 0x41, 0x29, 0xaa, 0xb9, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0xe8, 0x31, 0x5c, 0xc3, 0x25, 0xb5, 0xc1, 0x61, 0xbf, 0x63, 0x0d, 0xd6, 0x5d, 0x20, 0x1f, 0x34, 0x60, 0x5f, 0xd6, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x1c, 0xfb, 0x6f, 0x36, 0x28, 0x9b, 0xde, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0x01, 0xab, 0xd9, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x35, 0x97, 0x95, 0x83, 0x53, 0x79, 0x5c, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xe6, 0xfe, 0xf8, 0xe0, 0x54, 0x1e, 0xb7, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x0a, 0x58, 0xcd, 0x5a, 0x83, 0x26, 0xa5, 0xa7, 0x36, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xed, 0xea, 0x96, 0xb5, 0x41, 0x62, 0x4b, 0xd5, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0x76, 0xd0, 0x54, 0x12, 0x56, 0x87, 0x53, 0xac, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x6b, 0x0d, 0x1a, 0x3f, 0x6a, 0xd9, 0xf0, 0xf8, 0xc8, 0x06, 0x8d, 0x1f, 0xb5, 0x6c, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x90, 0xc2, 0x7c, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0xf0, 0xb9, 0xd2, 0xc1, 0xe2, 0x57, 0xee, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xb2, 0x19, 0xe7, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0xa7, 0xd6, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0x65, 0x14, 0xe6, 0x6b, 0xf8, 0x45, 0x69, 0x83, 0x46, 0x44, 0xcc, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x43, 0x92, 0x65, 0x1b, 0x2c, 0x52, 0xc4, 0xab, 0x35, 0x38, 0x17, 0x2e, 0xac, 0x21, 0x8f, 0xbd, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0xc6, 0x43, 0x5a, 0x0e, 0xc2, 0x53, 0x75, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0x24, 0x77, 0x75, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xca, 0x9d, 0xf7, 0x83, 0x96, 0x28, 0xcb, 0x36, 0x68, 0x1d, 0xc5, 0xac, 0x36, 0x38, 0xb1, 0xdf, 0x6c, 0xd0, 0xcc, 0xc1, 0xd4, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8b, 0x40, 0x46, 0x37, 0x28, 0x9b, 0xde, 0xd7, 0xe0, 0xc4, 0x7e, 0xb3, 0x41, 0x73, 0x5b, 0x55, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x44, 0xaa, 0xde, 0xa0, 0x75, 0x14, 0xb3, 0x35, 0xfc, 0xa2, 0xb4, 0x41, 0x23, 0x22, 0x66, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x25, 0xb5, 0x41, 0x1b, 0xf7, 0x51, 0x07, 0x8d, 0x8b, 0x4c, 0x1d, 0x1c, 0x7a, 0xf9, 0x6a, 0x35, 0x68, 0x25, 0xaa, 0x65, 0xc3, 0xe3, 0x23, 0x1b, 0xb4, 0x12, 0xd5, 0xb2, 0xe1, 0x17, 0xa5, 0x0d, 0x5a, 0x71, 0xad, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xcb, 0x66, 0x9c, 0x37, 0x28, 0x4b, 0xde, 0x37, 0x68, 0xe3, 0x3e, 0x6a, 0x83, 0x26, 0xae, 0xbc, 0x36, 0x68, 0xfc, 0x85, 0xea, 0xa0, 0xd9, 0x00, 0xab, 0x59, 0x83, 0x86, 0x1b, 0xb2, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xf3, 0xac, 0xcc, 0xad, 0x4c, 0x2e, 0x8c, 0xae, 0x0c, 0xc4, 0xec, 0x4d, 0xae, 0xad, 0x8e, 0x2d, 0x0c, 0xc4, 0x4c, 0xee, 0xad, 0x0d, 0xc4, 0xec, 0xed, 0x8d, 0x6e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x26, 0x80, 0xa9, 0x0e, 0x9a, 0x67, 0x1e, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x6b, 0xdf, 0x9d, 0x37, 0x58, 0x0e, 0xc9, 0x34, 0x1b, 0x3e, 0xb1, 0xd9, 0xa0, 0xc1, 0xa2, 0xad, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0x86, 0xa9, 0xa9, 0xd6, 0x60, 0x95, 0xf8, 0xf6, 0x86, 0x07, 0x25, 0x37, 0x38, 0x1d, 0x89, 0x1c, 0xb4, 0x4b, 0x3d, 0xb6, 0x06, 0xeb, 0xb9, 0xb7, 0x37, 0x3c, 0x28, 0xb9, 0xc1, 0xe9, 0x48, 0x64, 0xc3, 0xbb, 0x3d, 0x6b, 0xb8, 0xa4, 0x36, 0x68, 0x7e, 0x44, 0xea, 0xa0, 0xad, 0xaa, 0xae, 0x83, 0x66, 0xad, 0xc7, 0x3a, 0x9c, 0x62, 0xad, 0x41, 0x33, 0x28, 0x4c, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x34, 0x7a, 0x63, 0xb5, 0x86, 0x3f, 0x97, 0x36, 0x18, 0x4c, 0x1d, 0x07, 0x6b, 0x40, 0xcb, 0xdb, 0xf0, 0x17, 0xcd, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xac, 0x52, 0xff, 0x3d, 0x7c, 0xb0, 0xba, 0x86, 0x3f, 0x97, 0x36, 0x18, 0x25, 0x7d, 0x87, 0x0f, 0x56, 0xdb, 0xf0, 0x41, 0xce, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0xac, 0x11, 0x2d, 0x3f, 0x28, 0xa5, 0x7f, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x45, 0x4e, 0xeb, 0x41, 0x7a, 0x0a, 0xd4, 0x06, 0x41, 0x7a, 0xba, 0x41, 0x5b, 0x62, 0x56, 0x6b, 0xb0, 0x38, 0xbf, 0x79, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0xb0, 0xf9, 0x07, 0xa9, 0xb6, 0x70, 0x6b, 0xb0, 0xe0, 0xbf, 0xf9, 0xa0, 0x51, 0x48, 0xb3, 0x35, 0x58, 0xf0, 0xde, 0xbc, 0xe1, 0x17, 0x97, 0x35, 0x28, 0x26, 0x31, 0x37, 0x58, 0x17, 0x5b, 0x7e, 0x50, 0x4a, 0xff, 0x1e, 0xa4, 0xda, 0xc2, 0xad, 0xc1, 0x32, 0xfa, 0xe6, 0x0d, 0xbf, 0xb8, 0xac, 0x41, 0x31, 0x89, 0xb9, 0xc1, 0x6a, 0xd3, 0xf2, 0x83, 0x52, 0xfa, 0xf7, 0x20, 0xd5, 0x16, 0xae, 0xc3, 0x29, 0xb6, 0x06, 0x4d, 0x5e, 0x30, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x80, 0x1f, 0x6d, 0x75, 0x6c, 0x6c, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x65, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x72, 0x65, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x34, 0xd0, 0x4b, 0x75, 0xd0, 0x6a, 0x22, 0xd6, 0x86, 0xbf, 0x68, 0x36, 0x68, 0x3e, 0xb9, 0x6a, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0xcb, 0x2b, 0xa3, 0x0f, 0xda, 0x16, 0xc6, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xd0, 0xea, 0xda, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x98, 0xd1, 0x78, 0x83, 0x06, 0x9c, 0xa6, 0x36, 0x68, 0xbf, 0x18, 0x6b, 0x83, 0x06, 0x9c, 0xa6, 0x0e, 0x1a, 0x5b, 0xc6, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0x25, 0xb5, 0x06, 0x8d, 0xe7, 0x52, 0xb5, 0x06, 0x0d, 0x8c, 0x4c, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0x06, 0x7a, 0xcd, 0x6a, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x3c, 0xb0, 0x59, 0x07, 0x0d, 0x3f, 0x63, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0xb6, 0x9a, 0xcd, 0x36, 0x68, 0xf0, 0xd9, 0xac, 0xd5, 0xa0, 0x55, 0x20, 0x97, 0x0d, 0x8f, 0x8f, 0x6c, 0xd0, 0x2a, 0x90, 0xcb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0x45, 0x1c, 0xab, 0x83, 0x05, 0xed, 0xcd, 0x1b, 0x34, 0xd4, 0x1e, 0xd6, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x36, 0xe3, 0xbc, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0x31, 0x99, 0x83, 0x76, 0xca, 0xb6, 0x36, 0x68, 0xe0, 0x6c, 0x6a, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x9f, 0xbb, 0x6c, 0x90, 0x40, 0xb8, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0xc1, 0x22, 0x1f, 0xb4, 0x52, 0xb6, 0xb5, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb6, 0x30, 0x7a, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xe8, 0x45, 0x3e, 0x68, 0xa5, 0x6c, 0xab, 0x0d, 0x9f, 0xd8, 0x6c, 0xd0, 0x1c, 0x6a, 0xd8, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xb2, 0x19, 0xe7, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0x06, 0x46, 0xa6, 0xd6, 0xa0, 0x81, 0xc5, 0xa9, 0x83, 0xb6, 0xbe, 0x2f, 0xd6, 0xa0, 0x0d, 0xcf, 0xa9, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x02, 0x96, 0xf5, 0x20, 0xdd, 0x75, 0x73, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x0d, 0xda, 0x70, 0xa3, 0x5a, 0x83, 0x26, 0xcc, 0xb6, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0x63, 0xed, 0x66, 0xb5, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x41, 0x53, 0x72, 0x54, 0x07, 0x8d, 0x09, 0x9c, 0xad, 0x41, 0xf3, 0x11, 0x53, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0xa2, 0x52, 0xfc, 0x20, 0xdd, 0x75, 0x73, 0x83, 0x25, 0xf6, 0xdb, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x1e, 0x5c, 0xd9, 0xb8, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0xb6, 0x95, 0xda, 0xa0, 0xc1, 0x30, 0xab, 0x0d, 0x5a, 0x8a, 0x9f, 0x6a, 0x83, 0x82, 0x34, 0x76, 0xc0, 0xa3, 0x7b, 0xbb, 0xd7, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0x98, 0xcc, 0x41, 0x93, 0x03, 0x67, 0x1b, 0x1e, 0x93, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x8b, 0x60, 0x91, 0x37, 0x68, 0x72, 0xe0, 0xac, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x0d, 0x9a, 0x13, 0x38, 0x5b, 0x83, 0x06, 0x46, 0xa6, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x5f, 0xc9, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x8d, 0x42, 0x9a, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0x36, 0x23, 0xce, 0x5a, 0xc3, 0x23, 0xac, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x55, 0xea, 0xbf, 0x07, 0xcd, 0xa5, 0x9c, 0xad, 0xe1, 0xdf, 0x9c, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x03, 0x18, 0x67, 0x1d, 0x04, 0x2c, 0x6b, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0x6f, 0xeb, 0x6c, 0x30, 0x4a, 0xfa, 0x0e, 0x9a, 0x4b, 0x39, 0x5b, 0xc3, 0xbf, 0x39, 0x1b, 0x34, 0xf9, 0x72, 0x76, 0x50, 0x54, 0x8a, 0xd7, 0x06, 0x6d, 0x4d, 0x4e, 0x6d, 0x78, 0xcb, 0x6e, 0x0d, 0x4f, 0xdc, 0x6d, 0x78, 0x16, 0xef, 0xa0, 0x51, 0xf8, 0x96, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x83, 0x61, 0x56, 0x07, 0x4d, 0x54, 0x57, 0x6d, 0x10, 0x9e, 0xaa, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x34, 0xee, 0xc3, 0xb5, 0x06, 0xc5, 0x8e, 0xe6, 0x06, 0x6d, 0xae, 0x9c, 0x6d, 0xb0, 0xc4, 0x7e, 0x7b, 0xc3, 0x25, 0xb5, 0xc1, 0x61, 0xbf, 0x63, 0x83, 0x36, 0xdc, 0xa8, 0xd6, 0xa0, 0x09, 0xb3, 0xad, 0x83, 0x80, 0x65, 0x6d, 0x83, 0x62, 0x47, 0x73, 0x83, 0x06, 0x67, 0xce, 0x36, 0x58, 0x62, 0xbf, 0xbd, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x41, 0x1b, 0x6e, 0x54, 0x6b, 0xd0, 0x84, 0xd9, 0xd6, 0x41, 0x51, 0x29, 0x5e, 0x1b, 0xb4, 0x6c, 0x18, 0xb6, 0x06, 0x4d, 0x4a, 0x4f, 0x6d, 0xf8, 0x20, 0x67, 0x83, 0xf6, 0xba, 0xc3, 0x36, 0x68, 0xeb, 0xfb, 0x62, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x21, 0xf2, 0xb0, 0x83, 0x36, 0xe5, 0xb8, 0x36, 0x68, 0x7b, 0x8e, 0x6b, 0x0d, 0xd6, 0xbb, 0x33, 0x1f, 0x2c, 0xb1, 0xdf, 0x5e, 0x83, 0x30, 0x1d, 0x3b, 0x68, 0xaa, 0x2f, 0xac, 0x59, 0x83, 0x16, 0xda, 0x97, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb8, 0x30, 0xfd, 0x60, 0xbd, 0xd6, 0xf3, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x13, 0x8c, 0x6e, 0x70, 0xce, 0x5f, 0xda, 0x60, 0x41, 0xfb, 0xfa, 0x06, 0x8b, 0xe1, 0xd7, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x71, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xe9, 0x01, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x86, 0xfd, 0xb6, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xf4, 0xec, 0xac, 0x6a, 0x83, 0x96, 0xda, 0xa4, 0x0e, 0xca, 0x3a, 0xcf, 0xd5, 0xa0, 0x89, 0x2c, 0x97, 0x0d, 0x8f, 0x8f, 0x6c, 0xd0, 0x44, 0x96, 0xcb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x2d, 0xda, 0x56, 0x6d, 0xd0, 0x40, 0x2f, 0xd5, 0x41, 0x03, 0xaf, 0x55, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0xf9, 0xe4, 0xaa, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x2b, 0xb1, 0x52, 0x07, 0xcd, 0x63, 0x99, 0x1d, 0xb4, 0xaf, 0xe5, 0xb5, 0x1a, 0xda, 0xaf, 0x6f, 0x78, 0x7c, 0x64, 0x43, 0xfb, 0xf5, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x9a, 0x10, 0xa1, 0xda, 0xa0, 0xbd, 0x2e, 0xb1, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xb5, 0x95, 0xb9, 0x07, 0x6d, 0xce, 0x4b, 0xb5, 0xe1, 0x2f, 0x9a, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x3a, 0x3d, 0xe7, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x7c, 0xd0, 0xe6, 0xbc, 0x54, 0x1b, 0x1c, 0x6d, 0xf8, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x6c, 0xe8, 0xb2, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x07, 0xbc, 0xbb, 0x34, 0xb1, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0x93, 0x9d, 0x67, 0x6d, 0xf8, 0xdc, 0x65, 0x83, 0x46, 0x3b, 0xcf, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x0f, 0x16, 0xab, 0x6e, 0x1f, 0x34, 0x5c, 0x79, 0xb6, 0x41, 0x09, 0x8f, 0xb9, 0x06, 0xed, 0x42, 0x9e, 0xb5, 0x86, 0x5f, 0x5c, 0xd6, 0xa0, 0x10, 0x4c, 0x3d, 0x58, 0xac, 0xba, 0x7d, 0x50, 0xd6, 0x79, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x67, 0x65, 0xf1, 0x86, 0x77, 0x7b, 0xd6, 0x70, 0x49, 0x6d, 0xd0, 0xae, 0xb2, 0xd4, 0x1a, 0x34, 0x30, 0x32, 0xb5, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0xc1, 0xd3, 0x83, 0xf6, 0x54, 0xcf, 0xda, 0xa0, 0xf1, 0x17, 0xaa, 0x0d, 0xda, 0xcb, 0x13, 0x6b, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x6b, 0x7b, 0xc3, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0x4f, 0xf5, 0x6c, 0xc3, 0xdb, 0x3a, 0x83, 0xd3, 0x07, 0xed, 0xa9, 0x9e, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x18, 0x55, 0x73, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x0d, 0x1a, 0xec, 0x3d, 0x6b, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0x00, 0x9d, 0x1d, 0xb4, 0x76, 0x7c, 0xb6, 0xe1, 0x17, 0x97, 0x0d, 0x0a, 0x8a, 0xcc, 0x35, 0xbc, 0xad, 0x33, 0x38, 0xbc, 0x41, 0x6b, 0xb1, 0x67, 0xd5, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xa0, 0x15, 0xe8, 0xb3, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xd0, 0xf0, 0xed, 0x59, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xa0, 0x61, 0xe4, 0xb3, 0x9a, 0x35, 0x38, 0xf4, 0x56, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x40, 0x2f, 0xd5, 0x06, 0x4d, 0x00, 0x53, 0x6d, 0xd0, 0x68, 0x79, 0x56, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0x4c, 0xc7, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0xdb, 0x2c, 0x57, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0xed, 0x4c, 0xb5, 0x41, 0x90, 0x9e, 0x6e, 0xd0, 0x30, 0x35, 0xd5, 0x1a, 0xac, 0x12, 0xdf, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x4d, 0xc1, 0x4a, 0x6d, 0xb0, 0xc4, 0x7e, 0x7b, 0x83, 0x06, 0x9c, 0xa6, 0x0e, 0x1a, 0xb8, 0xba, 0x5a, 0x83, 0xf5, 0xdc, 0xdb, 0x07, 0x05, 0x45, 0x66, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0x2d, 0xbb, 0x5c, 0x6d, 0xd0, 0xe6, 0x36, 0xd5, 0x1a, 0x34, 0x0a, 0x4e, 0xb5, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0xf3, 0xa6, 0x3a, 0x68, 0x7b, 0x23, 0x6b, 0x0d, 0x1a, 0x5d, 0xa7, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xed, 0x79, 0x53, 0x1d, 0x34, 0x1c, 0x92, 0xb5, 0x06, 0xa7, 0xb4, 0xa5, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x9e, 0x37, 0xd5, 0x41, 0x93, 0x27, 0x59, 0xad, 0x06, 0xad, 0xd4, 0xc4, 0x6c, 0x78, 0x7c, 0x64, 0x83, 0x56, 0x6a, 0x62, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x1b, 0xcc, 0x63, 0x1b, 0xfe, 0xa2, 0x59, 0xc3, 0xe7, 0x4a, 0x07, 0x6b, 0xd5, 0x9d, 0x37, 0x38, 0x60, 0xd1, 0xad, 0xe1, 0x2f, 0x9a, 0x0d, 0x9a, 0x4b, 0x40, 0xdb, 0xf0, 0x41, 0xce, 0x1a, 0x1e, 0x61, 0xdd, 0xa0, 0x95, 0x07, 0xaf, 0x35, 0xbc, 0xcd, 0xba, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x83, 0x6b, 0x60, 0x07, 0xcd, 0xa0, 0x48, 0xb5, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0x7e, 0x25, 0xdb, 0xa0, 0x49, 0xa1, 0xa9, 0x35, 0x28, 0x26, 0x31, 0x37, 0x68, 0x74, 0x0f, 0xec, 0xa0, 0x19, 0x14, 0xa9, 0x35, 0x28, 0x26, 0x31, 0x37, 0x68, 0xff, 0x19, 0xec, 0xa0, 0x19, 0x14, 0xa9, 0xd6, 0xe0, 0x5c, 0xb8, 0xb0, 0x86, 0x3c, 0xf6, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0x1a, 0x5e, 0x75, 0x39, 0x08, 0x4f, 0xd5, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xd6, 0xf7, 0xc5, 0x06, 0xcb, 0x02, 0x80, 0x0f, 0x0a, 0x27, 0xd9, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0x66, 0x50, 0xa4, 0xd6, 0x60, 0x29, 0x11, 0xf1, 0x86, 0x4f, 0x6c, 0x36, 0x68, 0x4c, 0xc3, 0x6b, 0xc3, 0x27, 0x36, 0x1b, 0x34, 0x33, 0xe2, 0xb5, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0x56, 0xf1, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x1f, 0x7b, 0x73, 0x9b, 0x3b, 0x68, 0xbc, 0xc6, 0xab, 0x0d, 0xda, 0xd7, 0xf1, 0xda, 0xa0, 0xc9, 0x23, 0xaf, 0x35, 0x68, 0x22, 0xca, 0x6b, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0xfc, 0x88, 0xd4, 0x41, 0x03, 0x57, 0x5e, 0x07, 0x2d, 0x7b, 0x62, 0xad, 0x41, 0x6b, 0x5d, 0x5e, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x24, 0x58, 0x84, 0x1e, 0xb4, 0x24, 0xe6, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0x90, 0x2a, 0x13, 0xba, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x3b, 0x05, 0xbc, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x3e, 0x85, 0xbc, 0x86, 0xb7, 0x75, 0x36, 0x5c, 0x36, 0x6d, 0xd0, 0x14, 0x11, 0x5a, 0x6b, 0x78, 0x50, 0x72, 0x83, 0xd3, 0x91, 0xc8, 0x41, 0x2b, 0x25, 0x5e, 0xb5, 0x06, 0x8d, 0xa0, 0x79, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x0a, 0x99, 0xd6, 0x41, 0x23, 0xed, 0x51, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x46, 0x43, 0x3a, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0xa7, 0x23, 0x91, 0x83, 0xe6, 0xd7, 0xbc, 0x6a, 0x0d, 0x9a, 0xa9, 0xf3, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x15, 0x32, 0xad, 0x83, 0x26, 0xf4, 0xbc, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0xa7, 0x90, 0x0f, 0xda, 0xcc, 0xed, 0x6a, 0x0d, 0xda, 0xea, 0xf3, 0x3a, 0x68, 0x84, 0x0b, 0x6d, 0x0d, 0x9a, 0x0b, 0xf4, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x15, 0x32, 0xad, 0x83, 0xc6, 0x1c, 0xa4, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xe1, 0x86, 0xba, 0x86, 0x07, 0x25, 0x37, 0x38, 0x1d, 0x89, 0x1c, 0x34, 0xc5, 0xe1, 0x75, 0xd0, 0x62, 0x13, 0x5a, 0x6b, 0xd0, 0xe4, 0xa2, 0xd7, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xad, 0x90, 0x69, 0x1d, 0xb4, 0x26, 0xe9, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xa9, 0xa6, 0xe3, 0xa0, 0x35, 0x36, 0xb4, 0xd6, 0xa0, 0x79, 0x4a, 0xaf, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xa8, 0x1c, 0xda, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0x38, 0x52, 0x37, 0x68, 0x8f, 0x0d, 0xad, 0xd6, 0xa0, 0x61, 0x4f, 0xaf, 0x0d, 0xbf, 0xb8, 0x1c, 0xb4, 0x8c, 0xe5, 0xb5, 0x06, 0x4d, 0x93, 0x7a, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0x46, 0x51, 0xbd, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x85, 0x4c, 0x6b, 0x83, 0x46, 0x5c, 0xbd, 0x3a, 0x68, 0x8d, 0xe2, 0x6b, 0x0d, 0x1a, 0xf3, 0xf5, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0xb9, 0x45, 0xfd, 0x41, 0x63, 0xc6, 0x5e, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x45, 0x45, 0xfd, 0x1a, 0x1e, 0x94, 0xdc, 0xe0, 0x74, 0x24, 0xb2, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0xd0, 0xaa, 0x89, 0xd7, 0x1a, 0x34, 0x3b, 0x5c, 0x75, 0xb0, 0xa2, 0xa2, 0xbe, 0xd6, 0xa0, 0x0d, 0x6d, 0xaf, 0x0d, 0x9f, 0xd8, 0x6c, 0xd0, 0x28, 0xaa, 0xd7, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xad, 0x90, 0x69, 0x6d, 0xd0, 0xf8, 0xb7, 0x57, 0x07, 0xad, 0x51, 0x7c, 0xad, 0x41, 0xcb, 0x15, 0x5f, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xa1, 0x2e, 0xa9, 0x0d, 0xda, 0x16, 0xae, 0x3a, 0x68, 0x5f, 0xb5, 0x6b, 0x0d, 0x1a, 0x39, 0xf7, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0xab, 0x7b, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x96, 0x05, 0x00, 0x6f, 0xb0, 0x7c, 0x0a, 0xb9, 0xd6, 0xa0, 0xc1, 0x79, 0xaf, 0x0d, 0x9f, 0xd8, 0x6c, 0xd0, 0x28, 0xaa, 0xd7, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xad, 0x90, 0x69, 0x6d, 0xd0, 0x52, 0xbe, 0x57, 0x07, 0xad, 0x51, 0x7c, 0xad, 0x41, 0xbb, 0xff, 0x5e, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0x0f, 0x6c, 0x76, 0xd0, 0x60, 0xc1, 0xd7, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x6d, 0xa1, 0x52, 0x6d, 0xd0, 0xc4, 0xc2, 0xd7, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x68, 0x0b, 0xda, 0xac, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xd0, 0x16, 0xb4, 0x59, 0x1b, 0x34, 0x9d, 0xf1, 0xb5, 0x06, 0x2d, 0x8c, 0x7c, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0x66, 0x6d, 0xd1, 0x36, 0x28, 0x0c, 0x55, 0x37, 0x68, 0xb9, 0x17, 0x6d, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0xad, 0x49, 0x77, 0xac, 0x41, 0x90, 0x9e, 0x6e, 0xd0, 0xf8, 0x6a, 0xd7, 0x1a, 0x7e, 0xa8, 0x39, 0x68, 0x61, 0xb5, 0x6b, 0x0d, 0x8a, 0x54, 0xcc, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0xc6, 0x57, 0xbb, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0xa7, 0x23, 0x91, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x9a, 0x41, 0x91, 0xda, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0xe3, 0xab, 0x5d, 0x07, 0x0d, 0x80, 0x78, 0xd5, 0x41, 0x53, 0xc0, 0x68, 0x6b, 0xd0, 0xc8, 0xc9, 0xd7, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x0d, 0xa8, 0x50, 0x1d, 0x34, 0xc5, 0xe1, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0xd3, 0xce, 0x54, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x34, 0x30, 0x32, 0xb5, 0xe1, 0x6d, 0x9d, 0x83, 0xc6, 0x7c, 0xa8, 0x0e, 0x9a, 0x37, 0xf8, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x68, 0xea, 0x9b, 0x6a, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x7f, 0xec, 0xad, 0x4d, 0x6c, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x34, 0x38, 0x43, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x9a, 0xfa, 0xa6, 0xaa, 0x0d, 0x1a, 0x07, 0x1b, 0x5b, 0x83, 0xd6, 0xa0, 0xbe, 0x36, 0x7c, 0x62, 0xb3, 0x41, 0x3b, 0x54, 0x5f, 0x1b, 0x3e, 0xb1, 0xd9, 0xa0, 0x7d, 0xb4, 0xb1, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x35, 0x4c, 0xdc, 0x06, 0x69, 0x03, 0x65, 0x81, 0x47, 0x56, 0x97, 0x6f, 0x10, 0xa4, 0xa7, 0x1b, 0xbe, 0x9c, 0x5c, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x5e, 0xa4, 0x79, 0x83, 0xf5, 0x22, 0xcd, 0x6d, 0xb0, 0xcc, 0x49, 0x76, 0xc3, 0x2f, 0x2e, 0x07, 0xed, 0x98, 0xa0, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x2f, 0xd2, 0x7c, 0x70, 0x88, 0xe9, 0xd8, 0x60, 0x15, 0x98, 0xec, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x3e, 0x85, 0x7c, 0x90, 0x6a, 0x0b, 0xb7, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x4c, 0xc7, 0x0e, 0x9a, 0x27, 0x48, 0xdb, 0x60, 0x15, 0x98, 0xec, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x3e, 0x85, 0x7c, 0x90, 0x9e, 0x02, 0xb5, 0x06, 0x61, 0x3a, 0xb6, 0xc1, 0x32, 0x27, 0xd9, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x6f, 0xd0, 0x48, 0xd5, 0x57, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xd0, 0x38, 0xd7, 0xd7, 0x41, 0x3b, 0x79, 0x63, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0x6c, 0xf9, 0x75, 0xd0, 0xfc, 0xe0, 0xd8, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x0b, 0x9b, 0x86, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0xb1, 0x37, 0x37, 0xb2, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x0b, 0x00, 0x69, 0x6d, 0xd0, 0xae, 0xf7, 0xd7, 0x06, 0xcd, 0x84, 0x7f, 0xb5, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0xa3, 0xfe, 0x5a, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x6f, 0xeb, 0x6c, 0x90, 0x36, 0x50, 0xd6, 0x06, 0x0b, 0xda, 0x86, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0x6b, 0xd2, 0x1d, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0xd0, 0x7e, 0x7d, 0x83, 0x86, 0x32, 0xd2, 0x3a, 0x58, 0xce, 0x36, 0xdc, 0x1a, 0xb4, 0xf9, 0xda, 0xb5, 0x41, 0x61, 0xa8, 0xba, 0x41, 0xa3, 0x72, 0x68, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0xa0, 0x42, 0x75, 0xd0, 0x28, 0x11, 0xd8, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x29, 0x47, 0xa9, 0x0d, 0xda, 0x8f, 0x92, 0x5a, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0x9b, 0x71, 0x3e, 0x68, 0xf5, 0x1c, 0x6d, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0x80, 0x66, 0xfa, 0xa0, 0x85, 0xd5, 0xae, 0x36, 0x68, 0x28, 0x1e, 0xad, 0x35, 0x68, 0x97, 0xfc, 0x6b, 0x83, 0xc2, 0x50, 0x75, 0x83, 0x46, 0xe5, 0xd0, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0x73, 0x7f, 0x7c, 0xd0, 0x1a, 0xb2, 0xd7, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x0d, 0xa8, 0x50, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xf6, 0x57, 0xa8, 0x36, 0x68, 0xa2, 0xba, 0xea, 0xa0, 0xcd, 0xdc, 0xae, 0x0d, 0x96, 0xd4, 0x2f, 0xad, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0x43, 0x75, 0xd9, 0x41, 0x9b, 0xb9, 0x5d, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0x6b, 0xdf, 0x9d, 0x37, 0x08, 0xd2, 0xd3, 0x0d, 0xda, 0x97, 0xa1, 0x5a, 0x83, 0x80, 0x0d, 0xda, 0x20, 0x48, 0x4f, 0xd7, 0x38, 0x34, 0x78, 0x7c, 0xd0, 0x98, 0x0f, 0xd5, 0x1a, 0x04, 0x6c, 0xd0, 0x86, 0x77, 0x7b, 0xd6, 0x70, 0x49, 0x6d, 0xd0, 0x94, 0xa3, 0xd4, 0x41, 0x6b, 0x17, 0x54, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x82, 0x29, 0x57, 0x1b, 0xb4, 0xd0, 0x43, 0x55, 0x6b, 0x10, 0x46, 0x40, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x34, 0x38, 0x43, 0xb5, 0xe1, 0x17, 0x97, 0x0d, 0x96, 0x39, 0xc9, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x5a, 0x38, 0x94, 0x5a, 0xc3, 0xdb, 0x3a, 0x07, 0x0d, 0xce, 0x50, 0x55, 0xad, 0x41, 0x18, 0x01, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0xa6, 0xdf, 0x3a, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0x2b, 0x6a, 0x69, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x46, 0xdb, 0xd2, 0x0e, 0x0a, 0xe2, 0xf1, 0x5a, 0x83, 0x06, 0xd7, 0xc0, 0x36, 0xbc, 0x65, 0xb7, 0x41, 0x53, 0x6f, 0x60, 0x1b, 0x3e, 0xb1, 0xd9, 0xa0, 0x59, 0x5b, 0xb4, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x72, 0x2f, 0xda, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x35, 0xe9, 0x8e, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x37, 0xee, 0x0e, 0x56, 0x7f, 0x07, 0x6f, 0xb0, 0x7c, 0x0a, 0xf9, 0xa0, 0x7d, 0xd5, 0xae, 0x83, 0x86, 0x80, 0xd1, 0x5a, 0x83, 0xe6, 0xea, 0xc0, 0x36, 0x3c, 0x4f, 0xb2, 0x41, 0xcb, 0x91, 0x60, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x31, 0x63, 0xaf, 0x83, 0x26, 0xc0, 0xd0, 0xd6, 0xa0, 0xd1, 0x3d, 0xb0, 0x0d, 0x1f, 0xe4, 0x6c, 0xd0, 0x82, 0x96, 0xd4, 0x1a, 0xde, 0xb2, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0xb8, 0xa4, 0x36, 0x68, 0x92, 0x4e, 0xea, 0xa0, 0xc5, 0x8f, 0xaf, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x7d, 0xb0, 0xf0, 0x06, 0xa9, 0x0d, 0xce, 0x85, 0x0b, 0x6b, 0xc8, 0x63, 0x6f, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0xa0, 0x11, 0x4a, 0x98, 0x83, 0xf0, 0x54, 0xdd, 0xf0, 0x8b, 0xcb, 0x06, 0x6d, 0x7d, 0x5f, 0x6c, 0xd0, 0xcc, 0x41, 0x5a, 0x6b, 0xd0, 0x44, 0x23, 0xd8, 0x86, 0x4f, 0x6c, 0x36, 0x68, 0xc5, 0x12, 0x6c, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x35, 0xf7, 0xc7, 0x1b, 0x1e, 0x94, 0xdc, 0xe0, 0x74, 0x91, 0xb1, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0xd0, 0x04, 0x88, 0xd7, 0x41, 0x0b, 0xac, 0x5e, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0x42, 0xa6, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xdc, 0x87, 0x6b, 0x83, 0xe5, 0x19, 0xc8, 0x07, 0x2d, 0x87, 0x82, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x4b, 0x06, 0x6d, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x7c, 0x0a, 0x79, 0x0d, 0x97, 0xd4, 0x06, 0x4d, 0x85, 0x49, 0xad, 0x41, 0x03, 0x23, 0x53, 0x07, 0x6d, 0x87, 0x82, 0xd5, 0x41, 0xab, 0xa7, 0x60, 0xad, 0x41, 0x63, 0xaa, 0x60, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0x34, 0x3e, 0x1f, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x85, 0x4c, 0xeb, 0xa0, 0xa1, 0x57, 0xb0, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xce, 0x26, 0x57, 0x6b, 0x78, 0x50, 0x72, 0x83, 0xd3, 0x91, 0xc8, 0x06, 0xab, 0x90, 0x94, 0x36, 0x9c, 0x62, 0x1b, 0x34, 0x01, 0xe2, 0xb5, 0x06, 0xcd, 0xa0, 0x48, 0x6d, 0xb0, 0xa8, 0x3c, 0x69, 0x83, 0x76, 0x9e, 0x1c, 0xd6, 0xe0, 0x9c, 0xbf, 0xb4, 0x41, 0xb3, 0x90, 0x08, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xf6, 0x4a, 0x0a, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0xda, 0x58, 0x86, 0x69, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x41, 0xb8, 0x86, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xd3, 0x8e, 0x0f, 0x07, 0x2d, 0xc5, 0x82, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x92, 0xd2, 0x82, 0x0f, 0x82, 0x95, 0xb5, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x83, 0x70, 0x0d, 0x1b, 0x34, 0x16, 0xda, 0x75, 0xd0, 0x36, 0x7a, 0x5a, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x06, 0xe1, 0x1a, 0x36, 0x68, 0x2c, 0xb4, 0x6b, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0x94, 0x16, 0x7c, 0x50, 0x50, 0x8a, 0x77, 0xb0, 0x86, 0xca, 0xb9, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x22, 0x73, 0xd6, 0x06, 0xcb, 0x82, 0x09, 0x5b, 0x83, 0xf6, 0x11, 0xc1, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x8b, 0x67, 0x68, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xe5, 0x53, 0xc8, 0x6b, 0x78, 0x50, 0x72, 0x83, 0xd3, 0x91, 0xc8, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0x6b, 0x55, 0x5d, 0x07, 0x2d, 0xb0, 0x7a, 0xd5, 0x06, 0xad, 0x66, 0x8e, 0xad, 0xc1, 0xba, 0x23, 0xec, 0x83, 0x46, 0x57, 0xd3, 0xd6, 0x20, 0x4c, 0xc7, 0x36, 0x7c, 0x62, 0xb3, 0x41, 0xdb, 0xd5, 0x60, 0x1b, 0x3e, 0xc8, 0xd9, 0xa0, 0xe1, 0x6c, 0xb0, 0x35, 0xbc, 0x65, 0xb7, 0x41, 0xb3, 0xde, 0x60, 0x1b, 0x9c, 0x0b, 0x17, 0xd6, 0x90, 0xc7, 0xde, 0xf0, 0x23, 0xcc, 0xe0, 0xf4, 0x41, 0x93, 0x0a, 0x31, 0x07, 0xe1, 0xa9, 0x7a, 0xd0, 0x04, 0x3b, 0x58, 0xcb, 0xac, 0x41, 0xc3, 0x3f, 0x5e, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0x49, 0x7e, 0xb0, 0x0d, 0x7f, 0xd1, 0x6c, 0xd0, 0x5c, 0x02, 0xda, 0x86, 0x4f, 0x6c, 0x36, 0x68, 0x6e, 0x21, 0x6c, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x83, 0xab, 0x63, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xcb, 0xa6, 0x52, 0x1b, 0xb4, 0x2d, 0x5c, 0x75, 0xd0, 0xd4, 0x47, 0xd8, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xad, 0x90, 0x69, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x0d, 0x1a, 0xf8, 0x50, 0xab, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x5b, 0x32, 0x68, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xa0, 0x41, 0x14, 0xb5, 0x0d, 0x5a, 0xe7, 0x08, 0xab, 0x59, 0x83, 0x16, 0x81, 0xb3, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x4b, 0xf2, 0x60, 0x1b, 0xde, 0xb2, 0x5b, 0xc3, 0x13, 0x77, 0x1b, 0x9e, 0xc5, 0x3b, 0x68, 0x98, 0x25, 0xe6, 0xa0, 0x41, 0x98, 0xb0, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xa7, 0x58, 0x6b, 0xd0, 0xe6, 0x0e, 0xd5, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x0d, 0xa1, 0x72, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x16, 0x92, 0x8f, 0x6e, 0x10, 0x4e, 0x63, 0x1b, 0x2c, 0x9b, 0x71, 0x3e, 0x58, 0x36, 0xe3, 0xdc, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0x37, 0x58, 0xd2, 0xe7, 0x7c, 0xb0, 0xb2, 0x8f, 0x7b, 0x83, 0xc2, 0x50, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x60, 0x5c, 0xda, 0x1a, 0xde, 0xd6, 0x39, 0x68, 0xc7, 0x95, 0xab, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0xda, 0x71, 0xe5, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x16, 0xcb, 0x07, 0xed, 0x2a, 0xa9, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0x9b, 0x71, 0xde, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0x1d, 0x57, 0xae, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x48, 0x3e, 0xda, 0x41, 0xb3, 0x1a, 0x54, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x34, 0x86, 0xcb, 0xb5, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xb2, 0x19, 0xe7, 0x0d, 0x4e, 0x0e, 0x72, 0x1b, 0x34, 0x30, 0x32, 0xb5, 0x86, 0x4b, 0x6a, 0x83, 0xc3, 0x7e, 0xc7, 0x41, 0x9b, 0xb3, 0x5c, 0x6b, 0xd0, 0x32, 0xec, 0xd4, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xd7, 0x89, 0x6b, 0x83, 0xb6, 0x26, 0xa7, 0xd6, 0x70, 0x49, 0x6d, 0x70, 0xd8, 0xef, 0xd8, 0xa0, 0xd5, 0x59, 0xae, 0x83, 0x86, 0xe4, 0xa8, 0x5a, 0x83, 0x36, 0x92, 0xa7, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x5b, 0xa8, 0x54, 0x1b, 0xb4, 0x35, 0x39, 0xb5, 0x86, 0x4b, 0x6a, 0x83, 0xc3, 0x7e, 0xc7, 0x41, 0x43, 0x72, 0x54, 0x6d, 0xd0, 0xb2, 0x61, 0xd8, 0x1a, 0x34, 0x29, 0x3d, 0x75, 0xd0, 0x54, 0x5f, 0x58, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x9e, 0x5d, 0x1a, 0x7b, 0xd0, 0xa0, 0x57, 0xd5, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xb2, 0x19, 0xe7, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x83, 0xe6, 0x73, 0xb9, 0x36, 0x68, 0x3f, 0x4c, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x0d, 0x13, 0xb7, 0x41, 0x02, 0xe1, 0xe6, 0x41, 0x63, 0xed, 0x66, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x45, 0xb0, 0xc8, 0x1b, 0xb4, 0xac, 0xcb, 0xd5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xd0, 0x8b, 0x7c, 0xd0, 0x42, 0xa2, 0xda, 0x06, 0x41, 0x7a, 0xba, 0x41, 0x03, 0x23, 0x53, 0x6b, 0xb0, 0xde, 0x9d, 0x79, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x3b, 0x68, 0x72, 0xa8, 0x6a, 0x83, 0xb6, 0xe7, 0xb8, 0x36, 0x68, 0x0c, 0xdf, 0x6c, 0x0d, 0xda, 0xf0, 0x9c, 0xda, 0xf0, 0x41, 0xce, 0x06, 0xad, 0xf2, 0x9b, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0xf7, 0xe1, 0x5a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x0d, 0x37, 0xaa, 0x35, 0x68, 0x74, 0x97, 0xeb, 0xa0, 0xc9, 0x81, 0xb3, 0x0e, 0x9a, 0x6d, 0x9d, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x8d, 0xfb, 0x70, 0x6d, 0xd0, 0xd6, 0xe4, 0xd4, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0x4d, 0xc9, 0x51, 0x1d, 0x34, 0xd0, 0xa9, 0xd6, 0x1a, 0x34, 0x1f, 0x31, 0xb5, 0xe1, 0x83, 0x9c, 0x0d, 0x5a, 0xe5, 0x37, 0xdb, 0xa0, 0xa9, 0xbe, 0xb0, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x98, 0xd1, 0xf8, 0xa0, 0x31, 0x4d, 0xb5, 0x0d, 0x1a, 0xff, 0x0b, 0xdb, 0xa0, 0x65, 0xc3, 0xb0, 0x0d, 0x5a, 0x8f, 0x0c, 0x5b, 0x83, 0x26, 0xa5, 0xa7, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0x68, 0xad, 0xb1, 0x41, 0xd9, 0xf4, 0xbe, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x33, 0x4f, 0xad, 0x0e, 0x9a, 0xd5, 0xa0, 0xda, 0xa0, 0xad, 0xef, 0x8b, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0xe6, 0xe6, 0xaa, 0xd6, 0xa0, 0x69, 0x5c, 0xb5, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0x7a, 0xd0, 0xba, 0xad, 0xda, 0x41, 0xb3, 0x1a, 0x54, 0xb5, 0x1a, 0x2c, 0xf6, 0xf7, 0xd9, 0xf0, 0xf8, 0xc8, 0x06, 0x8b, 0xfd, 0x7d, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x0b, 0x14, 0x52, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0xd9, 0x8c, 0xf3, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x72, 0x80, 0x6c, 0x83, 0x02, 0x36, 0xff, 0xa0, 0xa5, 0x13, 0xa9, 0xd5, 0xa0, 0x9d, 0xfc, 0x98, 0x0d, 0x8f, 0x8f, 0x6c, 0xd0, 0x4e, 0x7e, 0xcc, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x47, 0xf7, 0x26, 0x1f, 0x34, 0xdd, 0x63, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x16, 0xc3, 0x97, 0x6f, 0x10, 0xa4, 0xa7, 0x6b, 0x1c, 0xda, 0xa0, 0xa5, 0x6a, 0xb5, 0xd6, 0x20, 0x8c, 0x80, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xd0, 0xb8, 0xb6, 0xda, 0x1a, 0x04, 0x6c, 0xd0, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x4d, 0x64, 0x6d, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x06, 0xe3, 0xd2, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0xeb, 0xdd, 0x6a, 0x6d, 0x10, 0xa4, 0xa7, 0x6b, 0x1c, 0x1a, 0x3c, 0x3e, 0x68, 0xbd, 0x5b, 0x6d, 0x0d, 0x02, 0x36, 0x68, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0x8b, 0x66, 0x83, 0x65, 0x33, 0xce, 0x1b, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x68, 0x2c, 0x5d, 0xed, 0xa0, 0x1d, 0x04, 0xb1, 0x35, 0x08, 0x23, 0xa0, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x52, 0x94, 0x5a, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x1b, 0x94, 0x4d, 0xef, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xa0, 0xb1, 0x74, 0xb5, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0xa0, 0xff, 0xdd, 0xa0, 0x65, 0x77, 0xb5, 0x83, 0x76, 0x10, 0xc4, 0xaa, 0xc3, 0x29, 0xd6, 0x1a, 0x34, 0xff, 0xc1, 0xb4, 0xe1, 0x13, 0x9b, 0x0d, 0x9a, 0x43, 0x0d, 0xdb, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x7c, 0xb0, 0xba, 0x41, 0x90, 0x9e, 0x6e, 0xd0, 0xc0, 0xc8, 0xd4, 0x06, 0x6d, 0x08, 0x61, 0xad, 0x41, 0x1b, 0x9e, 0x53, 0x1b, 0x7e, 0x25, 0x3b, 0x68, 0x70, 0x39, 0x6c, 0x0d, 0x9a, 0x8f, 0x98, 0x3a, 0x68, 0x72, 0x39, 0x6c, 0x83, 0x26, 0x4e, 0xc4, 0xd6, 0xa0, 0x51, 0xdf, 0xa9, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x08, 0x52, 0xd5, 0x41, 0xcb, 0x8b, 0x61, 0x1b, 0xb4, 0xe7, 0x23, 0xb6, 0x06, 0x4d, 0x4a, 0x4f, 0x6d, 0xf8, 0x95, 0x6c, 0x83, 0xf6, 0xba, 0xc3, 0x36, 0x68, 0x6e, 0xeb, 0xac, 0x0d, 0x1a, 0xf7, 0xc1, 0xda, 0xa0, 0x4d, 0x9a, 0xaa, 0x0e, 0xa7, 0x58, 0x6b, 0xd0, 0xe0, 0x8b, 0xcc, 0x86, 0xc7, 0x47, 0x36, 0x68, 0xf0, 0x45, 0x66, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x16, 0x6d, 0xab, 0x0e, 0x1a, 0x78, 0xad, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x8b, 0xe1, 0xcb, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xcd, 0x8f, 0x48, 0x1d, 0x34, 0x8f, 0x65, 0x76, 0xd0, 0xb2, 0x27, 0xd6, 0x6a, 0xd0, 0xe6, 0x98, 0xcc, 0x86, 0xc7, 0x47, 0x36, 0x68, 0x73, 0x4c, 0x66, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0xcb, 0x7b, 0xd3, 0x37, 0x08, 0x36, 0xd3, 0x0d, 0xd6, 0xb0, 0x96, 0x6f, 0xb0, 0xda, 0xb4, 0xfc, 0x60, 0x55, 0x6c, 0xf9, 0x86, 0xb7, 0xec, 0xd6, 0xf0, 0xc4, 0xdd, 0x86, 0x67, 0xf1, 0x0e, 0x1a, 0xc1, 0x91, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0xcb, 0x66, 0x9c, 0x37, 0x38, 0x39, 0xc8, 0x6d, 0xd0, 0xc0, 0xc8, 0xd4, 0x06, 0x0d, 0x9c, 0x4d, 0xad, 0x41, 0x1b, 0x9e, 0x53, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x71, 0x1f, 0xae, 0x83, 0x06, 0x97, 0xc3, 0xd6, 0xa0, 0xf9, 0x88, 0xa9, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x4a, 0xb6, 0x86, 0x7f, 0x73, 0x36, 0x68, 0x41, 0x67, 0xea, 0xa0, 0xa5, 0xf8, 0xa9, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x83, 0xce, 0x56, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0x21, 0x98, 0xb5, 0xda, 0x70, 0x49, 0x6d, 0xd0, 0xc0, 0xc8, 0xd4, 0x1a, 0x34, 0x2e, 0x80, 0x75, 0xd0, 0xb2, 0xd2, 0x5a, 0x1b, 0x34, 0xfe, 0x17, 0xb6, 0x41, 0xcb, 0x86, 0x61, 0x1b, 0xb4, 0x1e, 0x19, 0x76, 0xd0, 0x5e, 0x9d, 0xda, 0x0a, 0x7c, 0x98, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x19, 0x7c, 0x98, 0xdc, 0x00, 0xbe, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x20, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xf5, 0x33, 0x99, 0x0d, 0xca, 0x2e, 0xd9, 0x81, 0x0f, 0x93, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0xc8, 0x24, 0x1d, 0xa4, 0x11, 0x18, 0xad, 0x06, 0x8d, 0x08, 0xa4, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x06, 0x72, 0x92, 0x0e, 0xda, 0x6b, 0x94, 0x5a, 0x83, 0xe6, 0x8b, 0x55, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x43, 0x40, 0x49, 0x07, 0xcd, 0x74, 0x4a, 0xad, 0xc1, 0x62, 0x7f, 0x9f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xe0, 0x51, 0xd2, 0x41, 0x63, 0xa0, 0x52, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x66, 0xda, 0x64, 0x36, 0x28, 0xcb, 0xb0, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x88, 0x22, 0x24, 0x03, 0x8d, 0x28, 0xc2, 0x72, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x44, 0x11, 0xa2, 0x81, 0x46, 0x14, 0x61, 0xb2, 0xe1, 0xcf, 0xa5, 0x0d, 0xd6, 0xdc, 0x1f, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x44, 0x11, 0xe2, 0x83, 0x06, 0xfe, 0xd6, 0x0e, 0x96, 0xcd, 0x38, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x11, 0x45, 0xd8, 0x0c, 0x34, 0xa2, 0x08, 0xc3, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0xbe, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x23, 0x8a, 0x30, 0x3a, 0x68, 0x63, 0x71, 0xed, 0x60, 0x01, 0xcd, 0x74, 0xb3, 0xcc, 0x1a, 0x34, 0x5f, 0xac, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x7c, 0xb1, 0x4a, 0x03, 0xe0, 0x51, 0x5b, 0xd8, 0x5a, 0x19, 0x48, 0x18, 0x08, 0x09, 0x5d, 0x1e, 0x5c, 0x19, 0x88, 0x58, 0x1e, 0x88, 0x5c, 0xd9, 0x1c, 0x9d, 0x5c, 0xda, 0x18, 0x5d, 0x9a, 0xdb, 0x19, 0x88, 0x8b, 0x5c, 0x99, 0x19, 0x08, 0xdd, 0x1b, 0x88, 0xcb, 0xdc, 0x5a, 0x9a, 0xdb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x7e, 0x4e, 0x66, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xcd, 0x3c, 0x99, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8b, 0x45, 0xc8, 0x07, 0xba, 0x58, 0x84, 0xcd, 0xc1, 0xb2, 0x19, 0xe7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xa8, 0x9f, 0xcc, 0x06, 0x05, 0xc1, 0xec, 0x06, 0xab, 0x6b, 0xa6, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0x14, 0xca, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xbd, 0x28, 0xb3, 0x41, 0xc3, 0x3b, 0x16, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x0d, 0x49, 0x99, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0xb9, 0x94, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x3d, 0x4e, 0x99, 0x83, 0x76, 0xab, 0x22, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0x8b, 0xca, 0x6c, 0x70, 0x74, 0x1d, 0x5c, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x16, 0x50, 0x65, 0x0e, 0xda, 0x8d, 0x51, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x83, 0xae, 0x32, 0x07, 0x05, 0x45, 0x66, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x96, 0x68, 0x65, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x32, 0x57, 0xe6, 0x60, 0x01, 0x95, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xe9, 0x5f, 0x99, 0x83, 0x25, 0xf6, 0xdb, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xd1, 0x58, 0x66, 0x83, 0x20, 0x3d, 0x5d, 0xe3, 0xd0, 0xc1, 0xea, 0x9a, 0xe9, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xc9, 0x22, 0x64, 0x03, 0x9d, 0x2c, 0xc2, 0xe0, 0x60, 0x15, 0xa3, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xc2, 0x59, 0x66, 0x83, 0x20, 0x3d, 0x5d, 0xc3, 0x17, 0x35, 0x07, 0xab, 0x6b, 0xa6, 0x57, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x2f, 0x8b, 0x90, 0x0e, 0xf4, 0xb2, 0x08, 0x93, 0x83, 0xf5, 0xfb, 0xcc, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xe1, 0x6a, 0x99, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x26, 0xb9, 0x65, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x3b, 0x5c, 0xe6, 0xa0, 0x15, 0xc9, 0x8a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x2b, 0xe8, 0x32, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xd7, 0x2e, 0x73, 0xb0, 0x80, 0xca, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xec, 0xbc, 0xcc, 0xc1, 0x12, 0xfb, 0xed, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0xe7, 0xcb, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xd0, 0xbf, 0xcc, 0xc1, 0x02, 0x2a, 0xef, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x83, 0x05, 0x33, 0x07, 0x4b, 0xec, 0xb7, 0xab, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcc, 0x22, 0xa4, 0x03, 0xcd, 0x2c, 0xc2, 0xe4, 0x60, 0x1d, 0x42, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xdb, 0x61, 0x66, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x16, 0x29, 0x66, 0x0e, 0x9a, 0x39, 0x98, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xd2, 0x31, 0xb3, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xea, 0x9a, 0xe9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xfa, 0xc8, 0xcc, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0xa4, 0xcc, 0x1c, 0x9e, 0xb8, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xf2, 0x32, 0x73, 0x90, 0xe2, 0xe4, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xa9, 0x66, 0xe6, 0xa0, 0xc8, 0x69, 0xad, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x73, 0x3c, 0x33, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0xae, 0x99, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0x0d, 0xcd, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x26, 0xd2, 0xcc, 0xe1, 0x89, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x9b, 0x4e, 0x33, 0x07, 0x29, 0x4e, 0x4e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x96, 0xa9, 0x66, 0x0e, 0x0a, 0xd8, 0xfc, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xc0, 0x35, 0x73, 0x50, 0x50, 0x64, 0xb6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x59, 0x84, 0x74, 0xa0, 0x9b, 0x45, 0x98, 0x1c, 0x2c, 0xa6, 0x68, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0x93, 0xcd, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xbb, 0x36, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xfb, 0x70, 0x33, 0x87, 0x27, 0xee, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0xdb, 0xcd, 0x1c, 0x1c, 0x99, 0x55, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4d, 0xf4, 0xcd, 0x1c, 0x14, 0x14, 0x99, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x59, 0x84, 0x74, 0xa0, 0x9d, 0x45, 0x98, 0x1c, 0xac, 0x17, 0x69, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0x17, 0xce, 0x1c, 0xb4, 0xf5, 0x7d, 0xb1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x59, 0x84, 0x74, 0xa0, 0x9f, 0x45, 0x98, 0x1c, 0xac, 0x77, 0x67, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0x37, 0xce, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xde, 0xe4, 0xcc, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0x64, 0xce, 0x6c, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0x18, 0xad, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x65, 0xcf, 0x99, 0x83, 0xc6, 0xd1, 0xa3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0xa1, 0xce, 0x1c, 0xb4, 0xf5, 0x7d, 0xd1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xc1, 0xd8, 0x99, 0x83, 0x02, 0x36, 0x7f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x0e, 0xee, 0xcc, 0xc1, 0xf2, 0x0c, 0xe4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0xfa, 0xce, 0x1c, 0xb4, 0xf5, 0x7d, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x27, 0x9e, 0x39, 0x58, 0x9e, 0x81, 0xbc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x5a, 0x84, 0x74, 0xa0, 0xa1, 0x45, 0x98, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0x2d, 0x42, 0x3c, 0xd0, 0xd0, 0x22, 0x6c, 0x0e, 0xd6, 0xbc, 0x34, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa1, 0x45, 0x18, 0x0d, 0x34, 0xb4, 0x08, 0xab, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x06, 0x3d, 0xb3, 0x41, 0x69, 0x6f, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xbe, 0x7a, 0x66, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0xbb, 0x51, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0xd8, 0x9e, 0xd9, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0x83, 0xcf, 0x1c, 0x94, 0x88, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x06, 0xd3, 0x67, 0x0e, 0x96, 0xcd, 0x38, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x85, 0x9f, 0xd9, 0xf0, 0x15, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xcb, 0x7e, 0x66, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x69, 0x11, 0x36, 0x03, 0x2d, 0x2d, 0xc2, 0xee, 0x60, 0xd9, 0x8c, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x6c, 0x7f, 0x66, 0x83, 0x20, 0x3d, 0xdd, 0x60, 0xdd, 0x05, 0xf2, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x6a, 0x11, 0xd2, 0x81, 0xa6, 0x16, 0x61, 0x72, 0xb0, 0x5e, 0xa4, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x2f, 0x40, 0x73, 0xd0, 0xd6, 0xf7, 0xc5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x6a, 0x11, 0xd2, 0x81, 0xae, 0x16, 0x61, 0x72, 0xb0, 0xde, 0x9d, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xba, 0x40, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xeb, 0x10, 0x34, 0x07, 0x4d, 0x6a, 0x5e, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0xb9, 0xa0, 0xd9, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0xb3, 0xe8, 0x6b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x96, 0x3a, 0x68, 0x0e, 0x0a, 0x8a, 0xcc, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x5b, 0x8b, 0x90, 0x0e, 0xb4, 0xb5, 0x08, 0xb3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xad, 0x45, 0x88, 0x07, 0xda, 0x5a, 0x84, 0xcd, 0xc1, 0x9a, 0x97, 0xe6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xb5, 0x08, 0xa3, 0x81, 0xb6, 0x16, 0x61, 0x75, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd6, 0x4f, 0x68, 0x36, 0x28, 0x76, 0x34, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0xb5, 0xd0, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xc6, 0x0c, 0xcd, 0x41, 0xc3, 0x97, 0x57, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x76, 0x77, 0x68, 0x0e, 0x1a, 0x7f, 0x66, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x2b, 0x44, 0x73, 0xd0, 0xba, 0x68, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x76, 0xef, 0x68, 0x36, 0x38, 0x17, 0x2e, 0xac, 0x21, 0x8f, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0xf1, 0xa3, 0xd9, 0xf0, 0x23, 0xcc, 0xe0, 0xf4, 0x41, 0xd3, 0x81, 0x34, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x9d, 0x43, 0x9a, 0x83, 0xf0, 0x54, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0x25, 0xd1, 0x6c, 0x70, 0xce, 0x5f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xe9, 0x44, 0x73, 0xd0, 0xa4, 0xe6, 0xc5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x71, 0x2a, 0x9a, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0xd4, 0xa2, 0x39, 0x28, 0xb2, 0x4c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x90, 0xd1, 0x1c, 0x34, 0xfe, 0xcc, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x62, 0x8d, 0xe6, 0xa0, 0x75, 0xd1, 0xaa, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xc3, 0x71, 0x34, 0x07, 0xad, 0x51, 0x56, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0x16, 0x21, 0x1d, 0xe8, 0x6d, 0x11, 0x66, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x6f, 0x8b, 0x10, 0x0f, 0xf4, 0xb6, 0x08, 0x9b, 0x83, 0xf5, 0xfb, 0xcc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x6d, 0x11, 0x46, 0x03, 0xbd, 0x2d, 0xc2, 0xea, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0x48, 0xd2, 0x1c, 0xb4, 0xf5, 0x7d, 0xb1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x5b, 0x84, 0x74, 0xa0, 0xb9, 0x45, 0x98, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0x2d, 0x42, 0x3c, 0xd0, 0xdc, 0x22, 0x6c, 0x0e, 0x56, 0x23, 0x71, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xb9, 0x45, 0x18, 0x0d, 0x34, 0xb7, 0x08, 0xab, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xd2, 0x49, 0x73, 0xd0, 0xd6, 0xf7, 0xc5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x6e, 0x11, 0xd2, 0x81, 0xee, 0x16, 0x61, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xb7, 0x08, 0xf1, 0x40, 0x77, 0x8b, 0xb0, 0x39, 0x58, 0x1a, 0xc6, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xee, 0x16, 0x61, 0x34, 0xd0, 0xdd, 0x22, 0xac, 0x0e, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x12, 0x2a, 0xcd, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x23, 0xaf, 0x34, 0x07, 0xad, 0x51, 0x56, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x5b, 0x84, 0x74, 0xa0, 0xbd, 0x45, 0x98, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x2d, 0x42, 0x3c, 0xd0, 0xde, 0x22, 0x6c, 0x0e, 0x96, 0xc6, 0x71, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbd, 0x45, 0x18, 0x0d, 0xb4, 0xb7, 0x08, 0xab, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xaa, 0x4b, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x53, 0xc0, 0x34, 0x07, 0xcd, 0x1c, 0x4c, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0x46, 0xa6, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x45, 0x67, 0x9a, 0x83, 0x12, 0xa9, 0x7a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xca, 0x35, 0xcd, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8b, 0x40, 0x46, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x73, 0xd3, 0x1c, 0x94, 0x4d, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x76, 0xcb, 0x69, 0x0e, 0x5a, 0x17, 0xad, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x4a, 0x3b, 0xcd, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xde, 0x22, 0xf4, 0x0e, 0xb4, 0xb7, 0x08, 0xe5, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0xe4, 0x83, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbd, 0x45, 0x28, 0x3e, 0x68, 0x3b, 0xb1, 0xed, 0x60, 0xd9, 0x8c, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x85, 0x9e, 0x66, 0xc3, 0x25, 0xb5, 0xc1, 0x61, 0xbf, 0x63, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x26, 0xf6, 0x69, 0x0e, 0xda, 0x76, 0x23, 0xa8, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x7f, 0x8b, 0x90, 0x0e, 0xf4, 0xb7, 0x08, 0xb3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbf, 0x45, 0x88, 0x07, 0xfa, 0x5b, 0x84, 0xcd, 0xc1, 0xca, 0x45, 0xee, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xb7, 0x08, 0xa3, 0x81, 0xfe, 0x16, 0x61, 0x75, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x26, 0x10, 0x6a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xb7, 0xa1, 0xe6, 0xa0, 0x2d, 0x54, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x43, 0x17, 0x35, 0x07, 0xad, 0x8b, 0x56, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0xf2, 0xa8, 0xd9, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0xdd, 0x05, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xa5, 0xa4, 0xe6, 0xa0, 0x35, 0xca, 0xaa, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0x2e, 0x42, 0x3a, 0xd0, 0xe0, 0x22, 0xcc, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x06, 0x17, 0x21, 0x1e, 0x68, 0x70, 0x11, 0x36, 0x07, 0xab, 0x56, 0xb9, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xe0, 0x22, 0x8c, 0x06, 0x1a, 0x5c, 0x84, 0xd5, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x90, 0xa9, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xcd, 0x9b, 0x9a, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0xea, 0xa9, 0xd9, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0x68, 0xad, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x5d, 0xa8, 0xe6, 0xa0, 0x6c, 0x7a, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xbd, 0x54, 0x73, 0xd0, 0x5c, 0x5b, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x06, 0xa9, 0x6a, 0x0e, 0x96, 0x67, 0x20, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x5e, 0xab, 0xe6, 0xa0, 0xad, 0xef, 0x8b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x4c, 0x58, 0xcd, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x2d, 0xb9, 0x55, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd6, 0xec, 0x6a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x82, 0xaf, 0x66, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xb2, 0x05, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x6e, 0x60, 0xcd, 0x41, 0xd9, 0xf4, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x50, 0xb1, 0xe6, 0xa0, 0xb9, 0xb6, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0x4c, 0xd6, 0x1c, 0x2c, 0xcf, 0x40, 0x6e, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd6, 0xcf, 0x6a, 0x36, 0x5c, 0x52, 0x1b, 0x34, 0x12, 0x2c, 0xb5, 0x06, 0x0d, 0x8c, 0x4c, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x96, 0xdd, 0x6a, 0x0e, 0x96, 0x67, 0x20, 0x57, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x2e, 0x17, 0x21, 0x1b, 0xe8, 0x72, 0x11, 0x06, 0x07, 0xeb, 0xf7, 0x99, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x1b, 0x9d, 0x35, 0x1b, 0x94, 0xf6, 0x96, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x56, 0x45, 0x6b, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xbb, 0x1b, 0x55, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xe5, 0xd3, 0x9a, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x6c, 0x6b, 0xcd, 0x41, 0x89, 0xf8, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xc7, 0xb6, 0xe6, 0x60, 0xd9, 0x8c, 0x73, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xb1, 0xde, 0x9a, 0x0d, 0x5f, 0xe1, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x26, 0x86, 0x6b, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3e, 0x17, 0x61, 0x31, 0xd0, 0xe7, 0x22, 0xac, 0x0e, 0x96, 0xcd, 0x38, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x36, 0x90, 0x6b, 0x36, 0x08, 0xd2, 0xd3, 0x0d, 0xd6, 0x5d, 0x20, 0xaf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x4e, 0x17, 0x21, 0x1d, 0xe8, 0x74, 0x11, 0x26, 0x07, 0xeb, 0x45, 0x9a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa3, 0xce, 0x35, 0x07, 0x6d, 0x7d, 0x5f, 0xac, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x56, 0x17, 0x21, 0x1d, 0x68, 0x75, 0x11, 0x26, 0x07, 0xeb, 0xdd, 0x99, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x53, 0xd6, 0x35, 0x1b, 0x3e, 0xb1, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xbf, 0x5d, 0xb3, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xab, 0x6b, 0xa6, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xc3, 0xe2, 0x35, 0x1b, 0xde, 0xd6, 0xd9, 0x60, 0x7d, 0xcd, 0xf4, 0xc1, 0xea, 0x9a, 0xe9, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x9b, 0xe9, 0x35, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xf0, 0x5e, 0xb3, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x9b, 0xf4, 0x35, 0x07, 0x6d, 0x7d, 0x5f, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa6, 0xf5, 0x6b, 0x0e, 0xcf, 0x4c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x04, 0xb0, 0x39, 0x68, 0xeb, 0xfb, 0x62, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x6d, 0x60, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x5b, 0x0c, 0x36, 0x07, 0x8d, 0xfb, 0x70, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0xa7, 0xb0, 0x39, 0x3c, 0x33, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x6d, 0xc3, 0x66, 0xc3, 0x25, 0xb5, 0xc1, 0x61, 0xbf, 0x63, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x76, 0x44, 0x6c, 0x36, 0xbc, 0xad, 0xb3, 0x38, 0xce, 0xc1, 0xfa, 0x9a, 0xe9, 0x83, 0xd5, 0x35, 0xd3, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x5d, 0x84, 0x74, 0xa0, 0xdb, 0x45, 0x98, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdd, 0x2e, 0x42, 0x3c, 0xd0, 0xed, 0x22, 0x6c, 0x0e, 0xd6, 0xbc, 0x34, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xdb, 0x45, 0x18, 0x0d, 0x74, 0xbb, 0x08, 0xab, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xb3, 0x62, 0x73, 0xd0, 0xd6, 0xf7, 0xc5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x77, 0x11, 0xd2, 0x81, 0x76, 0x17, 0x61, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xbb, 0x08, 0xf1, 0x40, 0xbb, 0x8b, 0xb0, 0x39, 0x58, 0xbf, 0xcf, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x76, 0x17, 0x61, 0x34, 0xd0, 0xee, 0x22, 0xac, 0x0e, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xb8, 0x8c, 0xcd, 0x86, 0x4f, 0x6c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0xe2, 0xd8, 0x6c, 0xb8, 0xa4, 0x36, 0x38, 0xec, 0x77, 0xac, 0xc1, 0xea, 0x9a, 0xe9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x64, 0x91, 0xcd, 0x41, 0xcb, 0x46, 0x6e, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xf5, 0x63, 0x73, 0xd0, 0xba, 0x68, 0x55, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x35, 0x26, 0x9b, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0x8e, 0xb2, 0xd9, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xb5, 0x2b, 0x9b, 0x83, 0xb6, 0xbe, 0x2f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa3, 0x5d, 0x36, 0x87, 0x67, 0x26, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0x8d, 0xd9, 0x1c, 0xb4, 0xf5, 0x7d, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x4d, 0xb3, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x95, 0x37, 0x9b, 0x83, 0xc6, 0x7d, 0xb8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0xdf, 0xd9, 0x1c, 0x9e, 0x99, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xe3, 0x67, 0xb3, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xab, 0x6b, 0xa6, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x03, 0x8b, 0x36, 0x07, 0x4d, 0xaa, 0xb9, 0xad, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x44, 0xa1, 0xcd, 0x41, 0x6b, 0x94, 0x55, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x5e, 0x84, 0x74, 0xa0, 0xe3, 0x45, 0x98, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x2f, 0x42, 0x3c, 0xd0, 0xf1, 0x22, 0x6c, 0x0e, 0x56, 0x23, 0x71, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xe3, 0x45, 0x18, 0x0d, 0x74, 0xbc, 0x08, 0xab, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x3f, 0x69, 0xb3, 0xe1, 0x13, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa3, 0x99, 0x36, 0x1b, 0x2e, 0xa9, 0x0d, 0x0e, 0xfb, 0x1d, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x6a, 0x6a, 0x73, 0xd0, 0xb2, 0x91, 0xdb, 0x1a, 0xac, 0xbb, 0x40, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0x81, 0xda, 0x1c, 0xb4, 0x2e, 0x5a, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xb0, 0xd5, 0x66, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe6, 0x65, 0x6d, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x10, 0xd7, 0xe6, 0xa0, 0xad, 0xef, 0x8b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xae, 0xaf, 0xcd, 0xe1, 0x99, 0xc9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7b, 0xc4, 0x36, 0x07, 0x6d, 0x7d, 0x5f, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x76, 0x95, 0x6d, 0x36, 0x28, 0x76, 0x34, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0x40, 0xdb, 0x6c, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x6e, 0xb5, 0xcd, 0xc1, 0x12, 0xfb, 0xed, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xfc, 0xb6, 0xcd, 0x41, 0x93, 0x6a, 0x6e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x36, 0xf3, 0x6d, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xe9, 0xdf, 0xe6, 0xa0, 0x71, 0x1f, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe3, 0x07, 0x37, 0x87, 0x67, 0x26, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0x39, 0xdc, 0x6c, 0xb8, 0xa4, 0x36, 0x38, 0xec, 0x77, 0xac, 0xc1, 0xea, 0x9a, 0xe9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xe2, 0xc6, 0xcd, 0x41, 0x93, 0x6a, 0x6e, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x54, 0x71, 0x73, 0xb0, 0xc4, 0x7e, 0xbb, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x4b, 0xe2, 0x36, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x76, 0x6e, 0x73, 0xd0, 0x52, 0x07, 0xc7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xd5, 0x76, 0x9b, 0xc3, 0x33, 0x93, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa6, 0xe6, 0x6d, 0x0e, 0x5a, 0xa3, 0xac, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xbd, 0x08, 0xe9, 0x40, 0xdb, 0x8b, 0x30, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x5e, 0x84, 0x78, 0xa0, 0xed, 0x45, 0xd8, 0x1c, 0x2c, 0x0d, 0xe3, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xdb, 0x8b, 0x30, 0x1a, 0x68, 0x7b, 0x11, 0x56, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x90, 0xe4, 0x66, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x75, 0x17, 0xc8, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xad, 0x95, 0x9b, 0x83, 0xd6, 0x28, 0xab, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x2f, 0x42, 0x3a, 0xd0, 0xf7, 0x22, 0xcc, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbe, 0x17, 0x21, 0x1e, 0xe8, 0x7b, 0x11, 0x36, 0x07, 0x4b, 0xe3, 0xb8, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xf7, 0x22, 0x8c, 0x06, 0xfa, 0x5e, 0x84, 0xd5, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x9b, 0xb9, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x8d, 0x9c, 0x9b, 0x83, 0x66, 0x0e, 0xa6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0x06, 0xdd, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xd4, 0xd1, 0xcd, 0x41, 0x89, 0x54, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xfe, 0xe9, 0x66, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x46, 0xab, 0x6e, 0x0e, 0xca, 0xa6, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x83, 0x5e, 0x37, 0x07, 0xad, 0x8b, 0x56, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xbe, 0xec, 0x66, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x7b, 0x11, 0x7a, 0x07, 0xfa, 0x5e, 0x84, 0xf2, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0xf2, 0x41, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xf7, 0x22, 0x14, 0x1f, 0x34, 0x29, 0xf7, 0x76, 0xb0, 0x6c, 0xc6, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xcf, 0x76, 0xb3, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xdb, 0x73, 0x37, 0x07, 0x6d, 0xbb, 0x11, 0x54, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xf1, 0x45, 0x48, 0x07, 0x1a, 0x5f, 0x84, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xf8, 0x22, 0xc4, 0x03, 0x8d, 0x2f, 0xc2, 0xe6, 0x60, 0xe5, 0x22, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x5f, 0x84, 0xd1, 0x40, 0xe3, 0x8b, 0xb0, 0x3a, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x6b, 0x7d, 0x37, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x31, 0x78, 0x73, 0xd0, 0x16, 0x2a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xd5, 0xc5, 0x9b, 0x83, 0xd6, 0x45, 0xab, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0x4a, 0xde, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x99, 0x79, 0x73, 0xd0, 0x1a, 0x65, 0x55, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xce, 0x17, 0x21, 0x1d, 0xe8, 0x7c, 0x11, 0x66, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe7, 0x8b, 0x10, 0x0f, 0x74, 0xbe, 0x08, 0x9b, 0x83, 0x55, 0xab, 0xdc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x7c, 0x11, 0x46, 0x03, 0x9d, 0x2f, 0xc2, 0xea, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0x88, 0xde, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xf0, 0xe9, 0xcd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0xb5, 0xde, 0x6c, 0x50, 0x96, 0xbc, 0x6f, 0x70, 0xb4, 0xd6, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x31, 0x7b, 0x73, 0x50, 0x36, 0xbd, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0xdf, 0xbd, 0x39, 0x68, 0xae, 0xad, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xab, 0xc4, 0x37, 0x07, 0xcb, 0x33, 0x90, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xb1, 0x7c, 0x73, 0xd0, 0xd6, 0xf7, 0xc5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x2b, 0xfa, 0x66, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x96, 0xdc, 0xaa, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x93, 0xe6, 0x37, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xc3, 0x7e, 0xb3, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x3c, 0xfe, 0xe6, 0xa0, 0x6c, 0x7a, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xaa, 0x7f, 0x73, 0xd0, 0x5c, 0x5b, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb6, 0x06, 0x70, 0x0e, 0x96, 0x67, 0x20, 0xb7, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x13, 0xd8, 0x37, 0x1b, 0x2e, 0xa9, 0x0d, 0x1a, 0x09, 0x96, 0x5a, 0x83, 0x06, 0x46, 0xa6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf3, 0xde, 0x37, 0x07, 0xcb, 0x33, 0x90, 0xab, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xfd, 0x22, 0x64, 0x03, 0xdd, 0x2f, 0xc2, 0xe0, 0xe0, 0x2c, 0x26, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x67, 0xc0, 0xd9, 0xa0, 0xb4, 0xb7, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x27, 0x81, 0xb3, 0xe1, 0xcf, 0xa5, 0x0d, 0xda, 0xdd, 0xa8, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x5e, 0xe0, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x06, 0x3b, 0x70, 0x0e, 0x4a, 0xc4, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x0b, 0x26, 0x38, 0x07, 0xcb, 0x66, 0x9c, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0xb4, 0xe0, 0x6c, 0xf8, 0x0a, 0x67, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x2e, 0x83, 0xb3, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xbf, 0x08, 0x8b, 0x81, 0xfe, 0x17, 0x61, 0x75, 0xb0, 0x6c, 0xc6, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x7e, 0x83, 0xb3, 0x41, 0x90, 0x9e, 0x6e, 0xb0, 0xee, 0x02, 0x79, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xc0, 0x08, 0xd9, 0x40, 0x07, 0x8c, 0x30, 0x38, 0x58, 0x2f, 0xd2, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0xf3, 0xc1, 0x39, 0x68, 0xeb, 0xfb, 0x62, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xc0, 0x08, 0xd9, 0x40, 0x0b, 0x8c, 0x30, 0x38, 0x58, 0xef, 0xce, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x31, 0xc2, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xb1, 0x25, 0x9c, 0x83, 0x26, 0x35, 0x2f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0x46, 0xe1, 0x6c, 0x78, 0x5b, 0x67, 0x83, 0x65, 0x38, 0xcd, 0x07, 0xab, 0x6b, 0xa6, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0x5f, 0xe1, 0x6c, 0x70, 0x0c, 0x37, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x76, 0xe1, 0x6c, 0x78, 0x5b, 0x67, 0x43, 0x1d, 0x3f, 0x58, 0x5d, 0x33, 0xdd, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x81, 0x11, 0xb2, 0x81, 0x1e, 0x18, 0x61, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xc0, 0x08, 0xe1, 0x40, 0x0f, 0x8c, 0xb0, 0x38, 0x58, 0xf3, 0xd2, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1e, 0x18, 0x61, 0x32, 0xd0, 0x03, 0x23, 0x6c, 0x0e, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x48, 0x19, 0xce, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0xaa, 0xe1, 0x6c, 0x78, 0x84, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x10, 0x1c, 0xce, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x60, 0x84, 0xfd, 0x40, 0x0f, 0x8c, 0x50, 0x70, 0x50, 0xa4, 0x62, 0x1e, 0x34, 0xdf, 0x58, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xe2, 0x0e, 0x67, 0xc3, 0xdb, 0xac, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x55, 0x3e, 0x9c, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x11, 0xc4, 0x39, 0x68, 0xc3, 0x06, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x84, 0x88, 0xb3, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0xe6, 0x1b, 0xab, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x0a, 0x89, 0x73, 0xd0, 0xd6, 0xf7, 0xc5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xdb, 0x12, 0x67, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x12, 0x27, 0xce, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0x87, 0xe2, 0x1c, 0x34, 0x7c, 0x79, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x51, 0x15, 0xe7, 0xa0, 0xcd, 0x16, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8b, 0xb1, 0x38, 0x07, 0xad, 0x8b, 0x56, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x68, 0x1d, 0x67, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xf2, 0xd8, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xd5, 0x78, 0x9c, 0x83, 0x46, 0xfa, 0xd9, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf3, 0xf7, 0x38, 0x07, 0xe1, 0xa9, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0xc2, 0xc5, 0xd9, 0xe0, 0x9c, 0xbf, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xad, 0x17, 0xe7, 0xa0, 0x49, 0xcd, 0x8b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xab, 0xc3, 0x38, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x95, 0x8c, 0x73, 0x50, 0x64, 0x99, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x8f, 0xc6, 0x39, 0x68, 0xb3, 0x05, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x38, 0x36, 0xce, 0x41, 0xeb, 0xa2, 0x55, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x26, 0xbf, 0x71, 0x36, 0x38, 0x86, 0x1b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x86, 0xca, 0x71, 0x0e, 0xda, 0xb0, 0x81, 0x5b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0x30, 0x42, 0x36, 0xd0, 0x0a, 0x23, 0x8c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x56, 0x18, 0x21, 0x1c, 0x68, 0x85, 0x11, 0x16, 0x07, 0xeb, 0xf7, 0x99, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x0a, 0x23, 0x4c, 0x06, 0x5a, 0x61, 0x84, 0xcd, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0xfa, 0xc7, 0x39, 0x68, 0xeb, 0xfb, 0x62, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xc2, 0x08, 0xd9, 0x40, 0x2f, 0x8c, 0x30, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x61, 0x84, 0x70, 0xa0, 0x17, 0x46, 0x58, 0x1c, 0xac, 0x46, 0xe2, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x2f, 0x8c, 0x30, 0x19, 0xe8, 0x85, 0x11, 0x36, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xe0, 0x20, 0xe7, 0xa0, 0xad, 0xef, 0x8b, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x0c, 0x23, 0x64, 0x03, 0xcd, 0x30, 0xc2, 0x68, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x86, 0x11, 0xc2, 0x81, 0x66, 0x18, 0x61, 0x71, 0xb0, 0x34, 0x8c, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0x30, 0xc2, 0x64, 0xa0, 0x19, 0x46, 0xd8, 0x1c, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x59, 0x87, 0x9c, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x16, 0x2b, 0x72, 0x0e, 0x5a, 0xa3, 0xac, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xc3, 0x08, 0xd9, 0x40, 0x37, 0x8c, 0x30, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x61, 0x84, 0x70, 0xa0, 0x1b, 0x46, 0x58, 0x1c, 0x2c, 0x8d, 0xe3, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x37, 0x8c, 0x30, 0x19, 0xe8, 0x86, 0x11, 0x36, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xb3, 0x23, 0x67, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x96, 0x46, 0x72, 0x0e, 0x9a, 0x39, 0x98, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xbd, 0x92, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x83, 0x31, 0x39, 0x07, 0x25, 0x52, 0xf5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x11, 0x9d, 0x9c, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x16, 0x81, 0x8c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0xfe, 0xc9, 0x39, 0x28, 0x9b, 0xde, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0x22, 0xe5, 0x1c, 0xb4, 0x2e, 0x5a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x11, 0xa8, 0x9c, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x1b, 0x46, 0x68, 0x1d, 0xe8, 0x86, 0x11, 0xaa, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0xc9, 0x07, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x37, 0x8c, 0x50, 0x7b, 0xd0, 0x28, 0x44, 0xdc, 0xc1, 0xb2, 0x19, 0xe7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xc8, 0x55, 0xce, 0x86, 0x4b, 0x6a, 0x83, 0xc3, 0x7e, 0xc7, 0x1a, 0xac, 0xbb, 0x40, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0x78, 0xe5, 0x1c, 0xb4, 0xed, 0x46, 0x50, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x76, 0x18, 0x21, 0x1b, 0x68, 0x87, 0x11, 0x46, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3b, 0x8c, 0x10, 0x0e, 0xb4, 0xc3, 0x08, 0x8b, 0x83, 0x95, 0x8b, 0xdc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x87, 0x11, 0x26, 0x03, 0xed, 0x30, 0xc2, 0xe6, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x9e, 0xe5, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x50, 0x5b, 0xce, 0x41, 0x5b, 0xa8, 0x54, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb6, 0xeb, 0x72, 0x0e, 0x5a, 0x17, 0xad, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xce, 0x97, 0xb3, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xf0, 0x60, 0xce, 0x41, 0x6b, 0x94, 0x55, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x61, 0x84, 0x6c, 0xa0, 0x1f, 0x46, 0x18, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x30, 0x42, 0x38, 0xd0, 0x0f, 0x23, 0x2c, 0x0e, 0x56, 0xad, 0x72, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x1f, 0x46, 0x98, 0x0c, 0xf4, 0xc3, 0x08, 0x9b, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xc5, 0x98, 0xb3, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf3, 0x91, 0x39, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x79, 0x99, 0xb3, 0x41, 0x59, 0xf2, 0xbe, 0xc1, 0xd1, 0x5a, 0x63, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x50, 0x67, 0xce, 0x41, 0xd9, 0xf4, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xc5, 0x34, 0xe7, 0xa0, 0xb9, 0xb6, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0xbb, 0xe6, 0x1c, 0x2c, 0xcf, 0x40, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x52, 0x6d, 0xce, 0x41, 0x5b, 0xdf, 0x17, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xc5, 0xdd, 0x9c, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x5a, 0x72, 0xab, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0x42, 0xe7, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x98, 0x75, 0xce, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x65, 0x0b, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x05, 0xee, 0x9c, 0x83, 0xb2, 0xe9, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x34, 0x79, 0xce, 0x41, 0x73, 0x6d, 0x55, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x6c, 0xcf, 0x39, 0x58, 0x9e, 0x81, 0xdc, 0x1a, 0xac, 0xbb, 0x40, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0x09, 0xe7, 0x6c, 0xb8, 0xa4, 0x36, 0x68, 0x24, 0x58, 0x6a, 0x0d, 0x1a, 0x18, 0x99, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0x24, 0xe7, 0x1c, 0x2c, 0xcf, 0x40, 0xae, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x4f, 0x8c, 0x90, 0x0d, 0xf4, 0xc4, 0x08, 0x83, 0x83, 0x25, 0xba, 0xce, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x29, 0xfb, 0x9c, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x36, 0xfa, 0x73, 0x0e, 0x5a, 0x36, 0x72, 0x6b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xc5, 0x08, 0xd9, 0x40, 0x53, 0x8c, 0x30, 0x38, 0x58, 0x43, 0xe9, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0x30, 0xd0, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xe5, 0x05, 0x9d, 0x83, 0xb6, 0x50, 0xa9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0x55, 0xe8, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xa2, 0x86, 0xce, 0x41, 0x03, 0x67, 0x53, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x46, 0x41, 0x74, 0x0e, 0x1a, 0x5b, 0x88, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x6d, 0xa2, 0xb3, 0xe1, 0x6d, 0x9d, 0x0d, 0x77, 0xda, 0xc1, 0xea, 0x9a, 0xe9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0xb6, 0xe8, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x47, 0xa3, 0x73, 0xd0, 0xb2, 0x91, 0x5b, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xae, 0x18, 0x21, 0x1b, 0xe8, 0x8a, 0x11, 0x06, 0x07, 0xcb, 0x65, 0xbe, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xfb, 0x3d, 0x3a, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x3a, 0xa4, 0x73, 0xd0, 0xae, 0x13, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x1d, 0x26, 0x9d, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x02, 0x4a, 0x3d, 0x58, 0x5d, 0x33, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x60, 0x4a, 0x67, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xd5, 0x35, 0xd3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xe9, 0x2c, 0x9d, 0x83, 0x96, 0x8d, 0xdc, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xc5, 0x08, 0xd9, 0x40, 0x5b, 0x8c, 0x30, 0x38, 0x58, 0xc1, 0xf4, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x1a, 0xd3, 0xd9, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x75, 0xcd, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xc0, 0x52, 0xe7, 0xa0, 0x65, 0x23, 0xb7, 0x35, 0x68, 0x60, 0x64, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xa2, 0xa6, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe3, 0x6f, 0x3a, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0xb4, 0x71, 0x1f, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xb2, 0x4e, 0xe7, 0xa0, 0x71, 0xf4, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x9b, 0x7e, 0x3a, 0x07, 0x0d, 0x9c, 0x4d, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xf1, 0x50, 0xe7, 0xa0, 0x8d, 0xf4, 0x82, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa3, 0x8e, 0x3a, 0x1b, 0xde, 0xd6, 0x39, 0x68, 0x37, 0x46, 0xa1, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x5f, 0x8c, 0x90, 0x0d, 0xf4, 0xc5, 0x08, 0x83, 0x83, 0x35, 0x41, 0xe7, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x81, 0x4f, 0x9d, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x96, 0xf7, 0x86, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x25, 0xd5, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x2d, 0x55, 0x9d, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xda, 0xb8, 0x8f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x00, 0xab, 0x73, 0xd0, 0x38, 0x7a, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x85, 0x5c, 0x9d, 0x83, 0x06, 0xce, 0xa6, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x1e, 0xac, 0xb3, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xf3, 0xa6, 0x5d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x46, 0x8f, 0x75, 0x0e, 0x1a, 0x4a, 0xed, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x12, 0xad, 0xb3, 0xe1, 0x6d, 0x9d, 0x0d, 0x4a, 0xe8, 0xd8, 0x83, 0xd5, 0x35, 0xd3, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0xc0, 0xd6, 0xd9, 0xa0, 0xe0, 0xc3, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xd8, 0xad, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x33, 0xe3, 0x3a, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x34, 0x46, 0x2b, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x1b, 0x5d, 0xe7, 0xa0, 0x71, 0xf4, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7b, 0xf2, 0x3a, 0x07, 0x2b, 0x78, 0x43, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xb0, 0xaf, 0x73, 0x50, 0xe4, 0xb4, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x0d, 0xd8, 0xd9, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x75, 0xcd, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x0e, 0x61, 0xe7, 0xa0, 0x65, 0x23, 0xb7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0x3d, 0xec, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x3c, 0xc5, 0xce, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8d, 0x9e, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0xd4, 0xd8, 0x39, 0x68, 0x1c, 0x3d, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xea, 0xc8, 0xce, 0xc1, 0xf2, 0x0c, 0xe4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0xb0, 0xec, 0x1c, 0xac, 0xe0, 0x0d, 0x6d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xc6, 0x08, 0xd9, 0x40, 0x6b, 0x8c, 0x30, 0x38, 0x58, 0xa4, 0x75, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0xb3, 0xd9, 0xd9, 0xe0, 0x68, 0xc3, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xd9, 0x74, 0x67, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x75, 0x17, 0xc8, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xc9, 0xd6, 0x9d, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0x99, 0xdd, 0xd9, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x8d, 0xfb, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe3, 0xb8, 0x3b, 0x07, 0x8d, 0xa3, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x0f, 0xde, 0x39, 0x58, 0x9e, 0x81, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x3d, 0xe5, 0x9d, 0xc3, 0x33, 0x93, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0xe0, 0xd9, 0xd9, 0xa0, 0x30, 0x54, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x13, 0xb4, 0x73, 0xd0, 0x46, 0x7a, 0xc1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xed, 0x68, 0x67, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x91, 0xa6, 0x9d, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x39, 0x46, 0x98, 0x0e, 0x34, 0xc7, 0x08, 0xf3, 0x83, 0xb5, 0x23, 0xcf, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x19, 0xa9, 0x9d, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0xbd, 0xda, 0xd9, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x99, 0xae, 0x9d, 0xc3, 0x83, 0x37, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x75, 0xb1, 0x9d, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x2e, 0xec, 0xfc, 0x60, 0x75, 0xcd, 0xf4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x75, 0xb4, 0x9d, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xeb, 0xb6, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd3, 0x73, 0x3b, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x90, 0xb7, 0x73, 0xb0, 0xcc, 0x49, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xba, 0xdf, 0xce, 0xe1, 0xc1, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa3, 0x84, 0x3b, 0x07, 0x05, 0x45, 0x66, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb6, 0x14, 0x77, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0xd3, 0x51, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x13, 0xb9, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe3, 0x96, 0x3b, 0x87, 0xd7, 0x7c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0x7d, 0xee, 0x1c, 0x34, 0xdc, 0x28, 0x57, 0xb5, 0x1a, 0x34, 0x22, 0x90, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x8d, 0xde, 0xd9, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x51, 0x84, 0x6c, 0xa0, 0x1b, 0x45, 0x18, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x33, 0x7d, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x14, 0x21, 0x3c, 0x68, 0x46, 0x57, 0xee, 0x60, 0x49, 0x9f, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xfd, 0x7a, 0x67, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x47, 0x11, 0xb2, 0x81, 0x76, 0x14, 0x21, 0x3f, 0x58, 0xfb, 0xee, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0xe6, 0xde, 0xd9, 0xa0, 0x20, 0x98, 0xdd, 0x60, 0x75, 0xcd, 0xf4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xa1, 0xf1, 0x9d, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x26, 0xd4, 0x77, 0x36, 0x68, 0x78, 0xc7, 0x62, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x05, 0xbf, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7b, 0xf5, 0x3b, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xab, 0xbf, 0x73, 0xd0, 0x6e, 0x55, 0xc4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x81, 0x00, 0x9e, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x92, 0x01, 0xcf, 0x41, 0xbb, 0x31, 0x0a, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x99, 0x81, 0xe7, 0xa0, 0xa0, 0xc8, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xa4, 0x04, 0xcf, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x5f, 0xf0, 0x1c, 0x2c, 0xa0, 0xf2, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xe1, 0xc1, 0x73, 0xb0, 0xc4, 0x7e, 0xbb, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4d, 0x93, 0xf0, 0x6c, 0x10, 0xa4, 0xa7, 0x1b, 0x34, 0xe3, 0xbd, 0xb6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x52, 0x84, 0x6c, 0xa0, 0x25, 0x45, 0x18, 0x1c, 0xac, 0x62, 0x74, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0xb1, 0xf0, 0x6c, 0x10, 0xa4, 0xa7, 0x1b, 0x34, 0x8b, 0xbe, 0xb6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x52, 0x84, 0x6c, 0xa0, 0x29, 0x45, 0x18, 0x1c, 0xac, 0xdf, 0x67, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0xd0, 0xf0, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xae, 0xc3, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x2b, 0x40, 0x3c, 0x07, 0xad, 0x48, 0x56, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x33, 0xe2, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xdd, 0x25, 0x9e, 0x83, 0x05, 0x54, 0xde, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf6, 0xa3, 0x78, 0x0e, 0x96, 0xd8, 0x6f, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x07, 0x8b, 0x67, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x06, 0xbb, 0x78, 0x0e, 0x16, 0x50, 0x79, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x1e, 0xe3, 0x39, 0x58, 0x62, 0xbf, 0x5d, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xae, 0x14, 0x21, 0x1b, 0xe8, 0x4a, 0x11, 0x06, 0x07, 0xeb, 0x10, 0x9a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x13, 0x6d, 0x3c, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x2a, 0xc7, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x4b, 0x78, 0x3c, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x34, 0x46, 0x2b, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xbe, 0x8f, 0xe7, 0xa0, 0x71, 0xf4, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xc3, 0x86, 0x3c, 0x07, 0xed, 0x49, 0x7a, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xfb, 0x91, 0xe7, 0xa0, 0x80, 0xcd, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x69, 0xc9, 0x73, 0xb0, 0x3c, 0x03, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe3, 0x9c, 0x3c, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x21, 0xca, 0x73, 0xb0, 0x7c, 0x0a, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xfa, 0x29, 0xcf, 0x41, 0x91, 0xd3, 0xda, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xb4, 0x95, 0x67, 0x83, 0xa2, 0xd3, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xca, 0x2c, 0xcf, 0x41, 0xc3, 0x13, 0x62, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x86, 0x77, 0x79, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0x5d, 0x33, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x14, 0xe6, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xe9, 0x63, 0x9e, 0x83, 0x05, 0x54, 0xde, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x46, 0x9c, 0x79, 0x0e, 0x9a, 0xd4, 0xbc, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x46, 0xcd, 0x73, 0x90, 0x94, 0x16, 0x5c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xbd, 0x6d, 0x9e, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x03, 0xe1, 0x3c, 0x07, 0x0d, 0xd5, 0x88, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x55, 0xe7, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xf5, 0x77, 0x9e, 0x83, 0x96, 0x6a, 0x3a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4d, 0xd8, 0xf3, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xd4, 0x3e, 0xcf, 0xc1, 0xb2, 0x00, 0xe0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x0b, 0x01, 0x3d, 0x07, 0xeb, 0x16, 0x91, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x6f, 0xd0, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x3b, 0x0c, 0x3d, 0x07, 0xcb, 0xa7, 0x90, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x48, 0xf4, 0x1c, 0x14, 0x39, 0xad, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0xc5, 0xe8, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xed, 0x8e, 0x9e, 0x83, 0x96, 0x6a, 0x3a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0x90, 0xf4, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x50, 0x4a, 0xcf, 0xc1, 0xb2, 0x00, 0xe0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xfb, 0x2e, 0x3d, 0x07, 0xeb, 0x16, 0x91, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x4d, 0xd3, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x23, 0x3a, 0x3d, 0x07, 0xcb, 0xa7, 0x90, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0x00, 0xf5, 0x1c, 0x14, 0xb0, 0xf9, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x53, 0x84, 0x6c, 0xa0, 0x39, 0x45, 0x18, 0x1c, 0xac, 0x77, 0x67, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0x22, 0xf5, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x76, 0x53, 0xcf, 0xc1, 0xf2, 0x29, 0xe4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xab, 0x53, 0x3d, 0x07, 0x45, 0x4e, 0x6b, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x3b, 0x45, 0xc8, 0x06, 0xba, 0x53, 0x84, 0xc1, 0xc1, 0x62, 0x8a, 0xe6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xfe, 0x56, 0xcf, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xab, 0x6b, 0xa6, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xcb, 0x62, 0x3d, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x80, 0xd6, 0x73, 0x78, 0xe2, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x7e, 0x5b, 0xcf, 0xc1, 0x91, 0x59, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x06, 0x5d, 0xcf, 0x41, 0x41, 0x91, 0x59, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x3d, 0x45, 0xc8, 0x06, 0xda, 0x53, 0x84, 0xc1, 0xc1, 0x7a, 0x91, 0xe6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x3c, 0x5f, 0xcf, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0x08, 0xf6, 0x1c, 0x2c, 0x9f, 0x42, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x7f, 0xd8, 0x73, 0x50, 0xc0, 0xe6, 0xb7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x53, 0x84, 0x6c, 0xa0, 0x3f, 0x45, 0x18, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x29, 0x42, 0x38, 0xd0, 0x9f, 0x22, 0x2c, 0x0e, 0xd6, 0xbc, 0x34, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x3f, 0x45, 0x98, 0x0c, 0xf4, 0xa7, 0x08, 0x9b, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x35, 0xd9, 0xb3, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xeb, 0x98, 0x3d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xe9, 0xd9, 0xb3, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x63, 0xb4, 0x52, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x76, 0x48, 0x7b, 0x0e, 0x1a, 0x47, 0x8f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xd0, 0xda, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x53, 0xb2, 0x3d, 0x07, 0x4d, 0x6a, 0x5e, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0xc5, 0xed, 0x39, 0x48, 0x4a, 0x0b, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xe6, 0xdb, 0x73, 0x50, 0x50, 0x64, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x85, 0xe3, 0x9e, 0x83, 0x02, 0x36, 0x7f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x70, 0x73, 0xcf, 0xc1, 0xf2, 0x0c, 0xe4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4d, 0x50, 0xf7, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x52, 0x76, 0xcf, 0xc1, 0xf2, 0x29, 0xe4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x1b, 0xdf, 0x3d, 0x07, 0x45, 0x4e, 0x6b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x69, 0xf2, 0x9e, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x52, 0xef, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xf9, 0xf7, 0x9e, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x1a, 0xa3, 0x95, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x59, 0xdf, 0x73, 0xd0, 0x38, 0x7a, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x35, 0xff, 0x9e, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x1d, 0xf0, 0x39, 0x68, 0x45, 0xb2, 0x62, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x80, 0x82, 0xcf, 0xc1, 0x12, 0xfb, 0xed, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x43, 0x10, 0x3e, 0x07, 0x4b, 0xec, 0xb7, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x56, 0x86, 0xcf, 0x41, 0x01, 0x9b, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x02, 0xc4, 0xe7, 0x60, 0x79, 0x06, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc6, 0x4c, 0x7c, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x73, 0xc5, 0xe7, 0x60, 0xf9, 0x14, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xb5, 0x18, 0x9f, 0x83, 0x02, 0x36, 0xbf, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xce, 0x8d, 0xcf, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0xf3, 0xf8, 0x1c, 0x24, 0x7e, 0xc6, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x2a, 0xf2, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x45, 0x25, 0x9f, 0x83, 0xe0, 0x48, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x08, 0xe5, 0x73, 0xb0, 0x2c, 0x00, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x92, 0x95, 0xcf, 0xc1, 0xba, 0x45, 0xe4, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xa9, 0x08, 0xd9, 0x40, 0x9b, 0x8a, 0x30, 0x38, 0x58, 0xbf, 0xcf, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0xf1, 0xf2, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xdd, 0x31, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0x4a, 0xf3, 0xd9, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x31, 0x5a, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xfb, 0x6e, 0x3e, 0x07, 0x8d, 0xa3, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0xbd, 0xf3, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x7d, 0x3e, 0x9f, 0x83, 0x26, 0x35, 0x2f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0x0c, 0xfa, 0x1c, 0x24, 0xa5, 0x05, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0x47, 0xf4, 0x39, 0x28, 0x28, 0x32, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x66, 0xa4, 0xcf, 0x41, 0x01, 0x9b, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x0a, 0xd3, 0xe7, 0x60, 0x79, 0x06, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x46, 0x3d, 0x7d, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x7d, 0xd4, 0xe7, 0x60, 0xf9, 0x14, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xe5, 0x54, 0x9f, 0x83, 0x02, 0x36, 0xbf, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xea, 0xab, 0xcf, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x95, 0x5a, 0x9f, 0x83, 0x86, 0x27, 0xc4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0xf6, 0xfa, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xce, 0xb0, 0xcf, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x23, 0xfb, 0x6c, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0x18, 0xad, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x41, 0x67, 0x9f, 0x83, 0xc6, 0xd1, 0xa3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0x5d, 0xfb, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x20, 0xb7, 0xcf, 0x41, 0x2b, 0x92, 0x15, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x96, 0xc5, 0x7d, 0x0e, 0x96, 0xd8, 0x6f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x48, 0xf7, 0x39, 0x58, 0x62, 0xbf, 0x5d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x46, 0xe4, 0x7d, 0x0e, 0x0a, 0xd8, 0xfc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xdb, 0xf8, 0x3e, 0x07, 0xcb, 0x33, 0x90, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xf2, 0xef, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x5b, 0x04, 0x3f, 0x07, 0xcb, 0xa7, 0x90, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0x28, 0xfc, 0x1c, 0x14, 0x39, 0xad, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb6, 0x1f, 0x7e, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x9e, 0xe2, 0xe7, 0x20, 0x38, 0x52, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x6b, 0xfc, 0x1c, 0x2c, 0x0b, 0x00, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x08, 0xf2, 0x73, 0xb0, 0x6e, 0x11, 0xb9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xce, 0xc9, 0xcf, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x5d, 0x96, 0x9f, 0x83, 0x86, 0x27, 0xc4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0xd5, 0xfc, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xc2, 0xf3, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xcb, 0x41, 0x3f, 0x1b, 0x2e, 0xa9, 0x0d, 0x5a, 0xef, 0x95, 0x5a, 0x83, 0x06, 0x46, 0xa6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd3, 0x48, 0x3f, 0x07, 0xcb, 0x33, 0x90, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x19, 0xf5, 0x73, 0xd0, 0xda, 0xa6, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x59, 0xac, 0x9f, 0x83, 0x80, 0x65, 0x6d, 0x0d, 0x96, 0x34, 0x22, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe6, 0xcb, 0x7e, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x74, 0xed, 0xe7, 0xe0, 0x8c, 0x35, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x89, 0xee, 0xe7, 0x60, 0xdd, 0x22, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x85, 0xbd, 0x9f, 0x83, 0x80, 0x65, 0x6d, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x46, 0xbe, 0x7e, 0x0e, 0x5a, 0x36, 0x72, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x2c, 0xf8, 0xb3, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x5e, 0xe2, 0xcf, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x3c, 0xfe, 0x6c, 0xb8, 0xa4, 0x36, 0x68, 0xbd, 0x57, 0x6a, 0x0d, 0x1a, 0x18, 0x99, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0x58, 0xfe, 0x1c, 0x2c, 0xcf, 0x40, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xba, 0xe7, 0xcf, 0x41, 0x6b, 0x9b, 0x62, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf6, 0x4b, 0x7f, 0x0e, 0x8a, 0x4a, 0xf1, 0xd6, 0x60, 0x49, 0x23, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x67, 0xf6, 0x67, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd6, 0x71, 0x7f, 0x0e, 0xce, 0x58, 0x33, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x26, 0x83, 0x7f, 0x0e, 0xd6, 0x2d, 0x22, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x42, 0xfe, 0x39, 0x28, 0x2a, 0xc5, 0x5b, 0x83, 0xd5, 0x35, 0xd3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x35, 0xd6, 0x9f, 0x83, 0x26, 0xd5, 0xdc, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0x2b, 0x42, 0x36, 0xd0, 0xb0, 0x22, 0x0c, 0x0e, 0xce, 0x62, 0xa2, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x35, 0xe9, 0x9f, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0xbf, 0xfe, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xc9, 0xee, 0x9f, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x1a, 0xa3, 0x95, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x33, 0xfe, 0x73, 0xd0, 0x38, 0x7a, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xf9, 0xf5, 0x9f, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x89, 0xff, 0x39, 0x68, 0x52, 0xf3, 0x62, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xdc, 0xfd, 0xcf, 0x41, 0x52, 0x5a, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x99, 0xfe, 0x9f, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x85, 0x01, 0xa0, 0x83, 0x36, 0x6c, 0xe0, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xee, 0x02, 0xd0, 0x41, 0x01, 0x9b, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x4e, 0x02, 0xe8, 0x60, 0x79, 0x06, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x86, 0x31, 0x80, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xbe, 0x03, 0xe8, 0x60, 0xf9, 0x14, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xd9, 0x11, 0xa0, 0x83, 0x22, 0xa7, 0xb5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x58, 0x0a, 0xd0, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0xb9, 0x00, 0x1d, 0xb4, 0x54, 0xd3, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x92, 0x06, 0x68, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x86, 0x73, 0x80, 0x0e, 0x96, 0x4f, 0x21, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0xfc, 0x01, 0x3a, 0x68, 0xc3, 0x06, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x73, 0x45, 0x40, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xab, 0x04, 0x74, 0xb0, 0x2c, 0x00, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x1a, 0x14, 0xd0, 0xc1, 0xba, 0x45, 0xe4, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0x2b, 0x42, 0x36, 0xd0, 0xb5, 0x22, 0x0c, 0x0e, 0x96, 0xe8, 0x3a, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd6, 0xb1, 0x80, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0x5d, 0x33, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0xfd, 0x02, 0x3a, 0x68, 0xd9, 0xc8, 0xad, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xb6, 0x22, 0x64, 0x03, 0x6d, 0x2b, 0xc2, 0xe0, 0x60, 0x0d, 0xa5, 0xf7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x17, 0x0d, 0x68, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xd5, 0x35, 0xd3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xc5, 0x37, 0xa0, 0x83, 0x96, 0x8d, 0xdc, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x2b, 0x42, 0x36, 0xd0, 0xb7, 0x22, 0x0c, 0x0e, 0x96, 0xcb, 0x7c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x16, 0xf1, 0x80, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0x5d, 0x33, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0xfa, 0x03, 0x3a, 0x68, 0xd9, 0xc8, 0xad, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xb8, 0x22, 0x64, 0x03, 0x8d, 0x2b, 0xc2, 0xe0, 0x60, 0x05, 0xd3, 0xf7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x0b, 0x11, 0x68, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x16, 0x1c, 0x81, 0x36, 0x58, 0x52, 0xbf, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x50, 0x15, 0x68, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xcc, 0x13, 0x68, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x25, 0x0b, 0xb4, 0xe1, 0x73, 0x97, 0x0d, 0x1a, 0x50, 0xa1, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0xdd, 0x02, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x3c, 0x2f, 0xd0, 0x41, 0x8b, 0x45, 0x60, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb6, 0x8c, 0x81, 0x0e, 0x9a, 0xa8, 0xae, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xd7, 0x0c, 0x74, 0xd0, 0xb2, 0x7e, 0x5c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xf1, 0x69, 0xa0, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x1a, 0x18, 0x99, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x6a, 0x03, 0x1d, 0xb4, 0x7a, 0x8e, 0xb6, 0x06, 0x4b, 0x1a, 0x91, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8b, 0xe8, 0x40, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xe3, 0x0e, 0x74, 0x70, 0xc6, 0x9a, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x7a, 0x0f, 0x74, 0xb0, 0x6e, 0x11, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x9a, 0x3f, 0xd0, 0x41, 0x43, 0xf1, 0x68, 0xad, 0xc1, 0xea, 0x9a, 0xe9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x64, 0x38, 0xd0, 0x41, 0xcb, 0x46, 0x6e, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe6, 0x15, 0x21, 0x1b, 0x68, 0x5e, 0x11, 0x06, 0x07, 0x6b, 0x82, 0xce, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x0b, 0x08, 0x41, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0x2c, 0xef, 0x0d, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xdb, 0x10, 0xb4, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x63, 0x13, 0x41, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0xb4, 0x71, 0x1f, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x21, 0x23, 0xe8, 0xa0, 0x71, 0xf4, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x13, 0x22, 0x41, 0x07, 0x0d, 0x9c, 0x4d, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x5f, 0x25, 0x68, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xe6, 0x4d, 0xbb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0xc2, 0x04, 0x1d, 0x34, 0x94, 0xda, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x48, 0x27, 0xe8, 0xa0, 0x95, 0x0f, 0xb9, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0x04, 0x05, 0x6d, 0x50, 0xf0, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x35, 0x0a, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x25, 0xa6, 0xa0, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x1a, 0xa3, 0x95, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x1f, 0x15, 0x74, 0xd0, 0x38, 0x7a, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xc9, 0xad, 0xa0, 0x83, 0x15, 0xbc, 0xa1, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0x20, 0x0b, 0x3a, 0x28, 0x72, 0x5a, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0xaa, 0x05, 0x1d, 0x2c, 0xcf, 0x40, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x12, 0x17, 0xb4, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xea, 0x9a, 0xe9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xf6, 0x5d, 0xd0, 0x41, 0xcb, 0x46, 0x6e, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xfe, 0x15, 0x21, 0x1b, 0xe8, 0x5f, 0x11, 0x06, 0x07, 0x8b, 0xb4, 0xce, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8b, 0x82, 0x41, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x7c, 0x18, 0x74, 0xb0, 0x7c, 0x0a, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x64, 0x63, 0xd0, 0x41, 0x91, 0xd3, 0x5a, 0x87, 0x53, 0x6c, 0x0d, 0x16, 0xfb, 0xfb, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x2c, 0xf6, 0xf7, 0x69, 0x00, 0x3c, 0x6c, 0x0b, 0x5b, 0x2b, 0x03, 0x09, 0x03, 0x21, 0xa1, 0xcb, 0x83, 0x2b, 0x03, 0x11, 0xcb, 0x03, 0x91, 0x2b, 0x9b, 0xa3, 0x93, 0x4b, 0x1b, 0xa3, 0x4b, 0x73, 0x3b, 0x03, 0x71, 0x91, 0x2b, 0x33, 0x03, 0xa1, 0x7b, 0x03, 0x29, 0xc3, 0x1b, 0x63, 0xab, 0x23, 0x2b, 0x03, 0x71, 0x99, 0x5b, 0x4b, 0x73, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0x4f, 0x06, 0x6d, 0xf8, 0x0a, 0x67, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x96, 0x19, 0xb4, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xc9, 0x08, 0xf9, 0x40, 0x93, 0x8c, 0xb0, 0x39, 0x58, 0x36, 0xe3, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0xf3, 0x0c, 0xda, 0xa0, 0x20, 0x98, 0xdd, 0x60, 0x75, 0xcd, 0xf4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x6d, 0xd2, 0xa0, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x46, 0x57, 0x83, 0x36, 0x68, 0x78, 0xc7, 0x62, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x1e, 0x1b, 0xb4, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x0b, 0xb7, 0x41, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xc4, 0x1b, 0x74, 0xd0, 0x6e, 0x55, 0xc4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x49, 0xe1, 0xa0, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xf6, 0x71, 0xd0, 0x41, 0xbb, 0x31, 0x0a, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xca, 0x39, 0xe8, 0xa0, 0xa0, 0xc8, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x06, 0x75, 0xd0, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0x65, 0x07, 0x1d, 0x2c, 0xa0, 0xf2, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xfa, 0x1d, 0x74, 0xb0, 0xc4, 0x7e, 0xbb, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x99, 0x07, 0x6d, 0x10, 0xa4, 0xa7, 0x1b, 0x34, 0xe3, 0xbd, 0xb6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x65, 0x84, 0x6c, 0xa0, 0x51, 0x46, 0x18, 0x1c, 0xac, 0x62, 0x74, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0xb3, 0x07, 0x6d, 0x10, 0xa4, 0xa7, 0x1b, 0x34, 0x8b, 0xbe, 0xb6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x65, 0x84, 0x74, 0xa0, 0x55, 0x46, 0x98, 0x1c, 0xac, 0xdf, 0x67, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0xcd, 0x07, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xa3, 0x1f, 0xb4, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7b, 0xff, 0x41, 0x07, 0xad, 0x48, 0x56, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x2e, 0x10, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x89, 0x05, 0xa1, 0x83, 0x05, 0x54, 0xde, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa6, 0x22, 0x84, 0x0e, 0x96, 0xd8, 0x6f, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xf2, 0x42, 0x68, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc6, 0x39, 0x84, 0x0e, 0x16, 0x50, 0x79, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x19, 0x11, 0x3a, 0x58, 0x62, 0xbf, 0x5d, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x5e, 0x19, 0x21, 0x1d, 0xe8, 0x95, 0x11, 0x26, 0x07, 0xeb, 0x10, 0x9a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x63, 0x2b, 0x42, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0xbb, 0x40, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0xc8, 0x08, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x90, 0x23, 0xb4, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x4b, 0x3e, 0x42, 0x87, 0x27, 0xee, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0x11, 0x09, 0x1d, 0xa4, 0x38, 0x39, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x53, 0x12, 0x3a, 0x28, 0x72, 0x5a, 0x6b, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x46, 0xa1, 0x84, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xbe, 0x4a, 0xe8, 0xf0, 0xc4, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xf5, 0x2d, 0xa1, 0x83, 0x14, 0x27, 0xa7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x1b, 0x62, 0x42, 0x07, 0x05, 0x6c, 0x7e, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x66, 0x19, 0x21, 0x1d, 0x68, 0x96, 0x11, 0x26, 0x07, 0x8b, 0x29, 0x9a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x03, 0x6a, 0x42, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0xae, 0x99, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0xc3, 0x09, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x82, 0x9d, 0xd0, 0xe1, 0x89, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x03, 0x7c, 0x42, 0x07, 0x47, 0x66, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x23, 0x82, 0x42, 0x07, 0x05, 0x45, 0x66, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x19, 0x21, 0x1d, 0xe8, 0x96, 0x11, 0x26, 0x07, 0xeb, 0x45, 0x9a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe3, 0x89, 0x42, 0x07, 0xcb, 0x33, 0x90, 0x57, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xbb, 0x8c, 0x90, 0x0e, 0xb4, 0xcb, 0x08, 0x93, 0x83, 0xf5, 0xee, 0xcc, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x9d, 0x48, 0xa1, 0x83, 0xb6, 0xbe, 0x2f, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xbf, 0x8c, 0x90, 0x0e, 0xf4, 0xcb, 0x08, 0xb3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x5f, 0x46, 0x88, 0x07, 0xfa, 0x65, 0x84, 0xcd, 0xc1, 0x9a, 0x97, 0xe6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xcb, 0x08, 0xa3, 0x81, 0x7e, 0x19, 0x61, 0x75, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe6, 0x31, 0x85, 0x36, 0x28, 0xed, 0x2d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0x7a, 0x0a, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x76, 0x37, 0xaa, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa3, 0xa3, 0x42, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xc5, 0x54, 0xa1, 0x83, 0x12, 0xf1, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x84, 0xac, 0xd0, 0xc1, 0xb2, 0x19, 0xe7, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x3b, 0xb9, 0x42, 0x1b, 0xbe, 0xc2, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0xfb, 0x0a, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x33, 0xc2, 0x66, 0xa0, 0x63, 0x46, 0xd8, 0x1d, 0x2c, 0x9b, 0x71, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0x0f, 0x0b, 0x6d, 0x10, 0xa4, 0xa7, 0x1b, 0xac, 0xbb, 0x40, 0x5e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0x33, 0x42, 0x3a, 0xd0, 0x33, 0x23, 0x4c, 0x0e, 0xd6, 0x8b, 0x34, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf6, 0x94, 0x85, 0x0e, 0xda, 0xfa, 0xbe, 0x58, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0x33, 0x42, 0x3a, 0xd0, 0x34, 0x23, 0x4c, 0x0e, 0xd6, 0xbb, 0x33, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x56, 0xa4, 0x85, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xed, 0x5a, 0xe8, 0xa0, 0x15, 0xc9, 0x8a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xab, 0xdd, 0x42, 0x07, 0x4b, 0xec, 0xb7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0x8f, 0x0b, 0x1d, 0x2c, 0xb1, 0xdf, 0x6e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xcd, 0x08, 0xe9, 0x40, 0xd7, 0x8c, 0x30, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x66, 0x84, 0x78, 0xa0, 0x6b, 0x46, 0xd8, 0x1c, 0xac, 0x79, 0x69, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xd7, 0x8c, 0x30, 0x1a, 0xe8, 0x9a, 0x11, 0x56, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x74, 0x5d, 0xe8, 0xa0, 0xad, 0xef, 0x8b, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x36, 0x23, 0xa4, 0x03, 0x6d, 0x33, 0xc2, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x9b, 0x11, 0xe2, 0x81, 0xb6, 0x19, 0x61, 0x73, 0xb0, 0x7e, 0x9f, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0x33, 0xc2, 0x68, 0xa0, 0x6d, 0x46, 0x58, 0x1d, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xa9, 0x79, 0xa1, 0x83, 0xe5, 0x19, 0xc8, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x6f, 0x46, 0x48, 0x07, 0xfa, 0x66, 0x84, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x37, 0x23, 0xc4, 0x03, 0x7d, 0x33, 0xc2, 0xe6, 0x60, 0x35, 0x12, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x66, 0x84, 0xd1, 0x40, 0xdf, 0x8c, 0xb0, 0x3a, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xab, 0xfa, 0x42, 0x07, 0xcb, 0x33, 0x90, 0x57, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe3, 0x8c, 0x90, 0x0e, 0x34, 0xce, 0x08, 0xb3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x71, 0x46, 0x88, 0x07, 0x1a, 0x67, 0x84, 0xcd, 0xc1, 0xd2, 0x30, 0xee, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xce, 0x08, 0xa3, 0x81, 0xc6, 0x19, 0x61, 0x75, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x06, 0x04, 0x86, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xf5, 0x60, 0xe8, 0xa0, 0x5d, 0x27, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x53, 0x11, 0x43, 0x07, 0xad, 0x8b, 0x56, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0xc2, 0x18, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0xdd, 0x05, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xe7, 0x63, 0xe8, 0xa0, 0x35, 0xca, 0xaa, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9d, 0x33, 0x42, 0x3a, 0xd0, 0x39, 0x23, 0xcc, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xce, 0x19, 0x21, 0x1e, 0xe8, 0x9c, 0x11, 0x36, 0x07, 0x4b, 0xe3, 0xb8, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x39, 0x23, 0x8c, 0x06, 0x3a, 0x67, 0x84, 0xd5, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x3e, 0x19, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xbd, 0x96, 0xa1, 0x83, 0x66, 0x0e, 0xa6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0xd8, 0x0c, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xec, 0xce, 0xd0, 0x41, 0x89, 0x54, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x8a, 0x68, 0x68, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x06, 0x94, 0x86, 0x0e, 0xca, 0xa6, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe3, 0x52, 0x43, 0x07, 0xad, 0x8b, 0x56, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x4a, 0x6b, 0x68, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x9c, 0x11, 0x7a, 0x07, 0x3a, 0x67, 0x84, 0xf2, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0xf2, 0x41, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x39, 0x23, 0x14, 0x1f, 0x34, 0x31, 0x7d, 0x77, 0xb0, 0x6c, 0xc6, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x15, 0x36, 0xb4, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x3b, 0x68, 0x43, 0x07, 0x6d, 0xbb, 0x11, 0x54, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x75, 0x46, 0x48, 0x07, 0x5a, 0x67, 0x84, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x3a, 0x23, 0xc4, 0x03, 0xad, 0x33, 0xc2, 0xe6, 0x60, 0xe5, 0x22, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x67, 0x84, 0xd1, 0x40, 0xeb, 0x8c, 0xb0, 0x3a, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xcb, 0x71, 0x43, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x77, 0x37, 0x74, 0xd0, 0x16, 0x2a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x05, 0xc0, 0xa1, 0x83, 0xd6, 0x45, 0xab, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4d, 0x1c, 0x0e, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xdf, 0x38, 0x74, 0xd0, 0x1a, 0x65, 0x55, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0x19, 0x21, 0x1d, 0xe8, 0x9d, 0x11, 0x66, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xef, 0x8c, 0x10, 0x0f, 0xf4, 0xce, 0x08, 0x9b, 0x83, 0x55, 0xab, 0xdc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x9d, 0x11, 0x46, 0x03, 0xbd, 0x33, 0xc2, 0xea, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0x5a, 0x0e, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x08, 0xe7, 0xd0, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0x87, 0x0e, 0x6d, 0x50, 0x96, 0xbc, 0x6f, 0x70, 0xb4, 0xd6, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x77, 0x3a, 0x74, 0x50, 0x36, 0xbd, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0x82, 0x1d, 0x3a, 0x68, 0xae, 0xad, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x0b, 0xb9, 0x43, 0x07, 0xcb, 0x33, 0x90, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xf7, 0x3b, 0x74, 0xd0, 0xd6, 0xf7, 0xc5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xb7, 0x78, 0x68, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x96, 0xdc, 0xaa, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf3, 0xda, 0x43, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x09, 0x3e, 0xb4, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xc8, 0x7c, 0xe8, 0xa0, 0x6c, 0x7a, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xf0, 0x3e, 0x74, 0xd0, 0x5c, 0x5b, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x76, 0xef, 0x87, 0x0e, 0x96, 0x67, 0x20, 0xb7, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x73, 0xcc, 0x43, 0x1b, 0x2e, 0xa9, 0x0d, 0x1a, 0x09, 0x96, 0x5a, 0x83, 0x06, 0x46, 0xa6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x53, 0xd3, 0x43, 0x07, 0xcb, 0x33, 0x90, 0xab, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x03, 0x8d, 0x90, 0x0d, 0x34, 0xd0, 0x08, 0x83, 0x83, 0xf5, 0xfb, 0xcc, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x45, 0x00, 0xa2, 0x0d, 0x4a, 0x7b, 0xcb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x1b, 0x06, 0x44, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xdd, 0x8d, 0xaa, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xce, 0x02, 0xd1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x24, 0x82, 0xe8, 0xa0, 0x44, 0x7c, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x9a, 0x41, 0x74, 0xb0, 0x6c, 0xc6, 0xb9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x34, 0x08, 0xd1, 0x86, 0xaf, 0x70, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x83, 0x26, 0x44, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x0b, 0x8d, 0xb0, 0x18, 0x68, 0xa1, 0x11, 0x56, 0x07, 0xcb, 0x66, 0x9c, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8b, 0x2b, 0x44, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0xeb, 0x2e, 0x90, 0x57, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x13, 0x8d, 0x90, 0x0e, 0x34, 0xd1, 0x08, 0x93, 0x83, 0xf5, 0x22, 0xcd, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x09, 0x19, 0xa2, 0x83, 0xb6, 0xbe, 0x2f, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x17, 0x8d, 0x90, 0x0e, 0x74, 0xd1, 0x08, 0x93, 0x83, 0xf5, 0xee, 0xcc, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xe1, 0x1c, 0xa2, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x53, 0x3f, 0x44, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x4e, 0x44, 0xb4, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x33, 0x4a, 0x44, 0x07, 0xad, 0x48, 0x56, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0x83, 0x22, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xe1, 0x2a, 0xa2, 0x83, 0x05, 0x54, 0xde, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x06, 0xb8, 0x88, 0x0e, 0x96, 0xd8, 0x6f, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x48, 0x8c, 0x68, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x26, 0xcf, 0x88, 0x0e, 0x16, 0x50, 0x79, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x6e, 0x23, 0x3a, 0x58, 0x62, 0xbf, 0x5d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x09, 0x3a, 0xa2, 0x83, 0x76, 0x63, 0x14, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0x44, 0x12, 0x1d, 0x2c, 0xcf, 0x40, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0xe8, 0x11, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xce, 0x1f, 0xd1, 0x41, 0x93, 0x9a, 0x17, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf6, 0x0a, 0x89, 0x0e, 0x92, 0xd2, 0x82, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0x2c, 0x12, 0x1d, 0x14, 0x14, 0x99, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x46, 0x1a, 0x21, 0x1d, 0x68, 0xa4, 0x11, 0x66, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x23, 0x8d, 0x10, 0x0f, 0x34, 0xd2, 0x08, 0x9b, 0x83, 0x35, 0x2f, 0xcd, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xa4, 0x11, 0x46, 0x03, 0x8d, 0x34, 0xc2, 0xea, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x61, 0x12, 0x1d, 0x2c, 0xcf, 0x40, 0x5e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9d, 0x34, 0x42, 0x3a, 0xd0, 0x49, 0x23, 0xcc, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x4e, 0x1a, 0x21, 0x1e, 0xe8, 0xa4, 0x11, 0x36, 0x07, 0xeb, 0xf7, 0x99, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x49, 0x23, 0x8c, 0x06, 0x3a, 0x69, 0x84, 0xd5, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0xfd, 0x24, 0xda, 0xa0, 0x20, 0x8d, 0xdd, 0x60, 0xd5, 0xba, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xb1, 0x52, 0xa2, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x35, 0x58, 0x5d, 0x33, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x93, 0x25, 0x3a, 0x68, 0xd9, 0xc8, 0x6d, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x76, 0x58, 0x89, 0x0e, 0x5a, 0x17, 0xad, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x94, 0x4b, 0xb4, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0xe0, 0x41, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xed, 0x4b, 0xb4, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xab, 0x6b, 0xa6, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf3, 0xcb, 0x44, 0x07, 0x4d, 0xaa, 0xb9, 0xad, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x6a, 0x31, 0xd1, 0x41, 0x6b, 0x94, 0x55, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe6, 0xa5, 0x89, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x0f, 0x9b, 0xe8, 0xa0, 0x99, 0x83, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x03, 0xe2, 0x44, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x7a, 0x4e, 0x74, 0xd0, 0xb8, 0x0f, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x25, 0x78, 0xa2, 0x83, 0x85, 0x08, 0xbb, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x16, 0xee, 0x89, 0x0e, 0x16, 0x70, 0xc2, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xc3, 0x9f, 0x68, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x96, 0x07, 0x8a, 0x0e, 0x1a, 0xf7, 0xe1, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xc7, 0x50, 0x74, 0xb0, 0x10, 0x61, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xcc, 0x44, 0xd1, 0x41, 0x6b, 0x94, 0x55, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0xd4, 0x28, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x21, 0x90, 0xa2, 0x83, 0xc6, 0x7d, 0xb8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcd, 0xa3, 0x14, 0x1d, 0xb4, 0x2e, 0x5a, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xfa, 0xa5, 0xe8, 0x60, 0x01, 0x27, 0x7c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc6, 0x6d, 0x8a, 0x0e, 0x0a, 0x8a, 0xcc, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x33, 0x8d, 0x90, 0x0e, 0x34, 0xd3, 0x08, 0xb3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x99, 0x46, 0x88, 0x07, 0x9a, 0x69, 0x84, 0xcd, 0xc1, 0x6a, 0x24, 0xee, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xd3, 0x08, 0xa3, 0x81, 0x66, 0x1a, 0x61, 0x75, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x66, 0x7d, 0x8a, 0x36, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x8b, 0xa8, 0x68, 0xc3, 0x25, 0xb5, 0xc1, 0x61, 0xbf, 0x63, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc6, 0xa2, 0x8a, 0x0e, 0x5a, 0x36, 0x72, 0x5b, 0x83, 0x75, 0x17, 0xc8, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x95, 0xa5, 0xa2, 0x83, 0xd6, 0x45, 0xab, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0x60, 0x15, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x6a, 0x57, 0xd1, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0x8c, 0x15, 0x1d, 0xb4, 0xf5, 0x7d, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x4b, 0x2b, 0x3a, 0x3c, 0x33, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xe6, 0xad, 0xe8, 0xa0, 0xad, 0xef, 0x8b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x5c, 0x5d, 0xd1, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x71, 0xbd, 0xa2, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x03, 0x2c, 0x3a, 0x58, 0x62, 0xbf, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x35, 0x2c, 0x3a, 0x68, 0x52, 0xcd, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x14, 0x69, 0xd1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0xa8, 0x16, 0x1d, 0x34, 0xee, 0xc3, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x53, 0xb6, 0xe8, 0xf0, 0xcc, 0xe4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x91, 0xdc, 0xa2, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x35, 0x58, 0x5d, 0x33, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x32, 0x2e, 0x3a, 0x68, 0x52, 0xcd, 0x6d, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x06, 0x80, 0x8b, 0x0e, 0x96, 0xd8, 0x6f, 0xd7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xa0, 0xb1, 0x68, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x46, 0x24, 0x8b, 0x0e, 0x5a, 0xea, 0xe0, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x86, 0x59, 0x74, 0x78, 0x66, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x82, 0x67, 0xd1, 0x41, 0x6b, 0x94, 0x55, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8e, 0x1a, 0x21, 0x1d, 0xe8, 0xa8, 0x11, 0x66, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x47, 0x8d, 0x10, 0x0f, 0x74, 0xd4, 0x08, 0x9b, 0x83, 0xa5, 0x61, 0xdc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa8, 0x11, 0x46, 0x03, 0x1d, 0x35, 0xc2, 0xea, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0x3c, 0x17, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x61, 0x5d, 0x74, 0xd0, 0x1a, 0x65, 0x55, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa5, 0x46, 0x48, 0x07, 0x5a, 0x6a, 0x84, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x52, 0x23, 0xc4, 0x03, 0x2d, 0x35, 0xc2, 0xe6, 0x60, 0x69, 0x1c, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x6a, 0x84, 0xd1, 0x40, 0x4b, 0x8d, 0xb0, 0x3a, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x23, 0xde, 0x45, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x3d, 0x5e, 0x74, 0xd0, 0xcc, 0xc1, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x2d, 0xf6, 0xa2, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x90, 0x2f, 0x3a, 0x28, 0x91, 0xaa, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0xea, 0x17, 0x6d, 0x50, 0x96, 0xbc, 0x6f, 0xb0, 0x08, 0x64, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x16, 0x80, 0xd1, 0x41, 0xd9, 0xf4, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x27, 0xc1, 0xe8, 0xa0, 0x75, 0xd1, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0x42, 0x18, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2d, 0x35, 0x42, 0xef, 0x40, 0x4b, 0x8d, 0x50, 0xbe, 0xe1, 0xcf, 0xa5, 0x0d, 0x4e, 0x3e, 0xa8, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x6a, 0x84, 0xe2, 0x83, 0x76, 0xb6, 0xf3, 0x0e, 0x96, 0xcd, 0x38, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x56, 0x2f, 0x8c, 0x36, 0x5c, 0x52, 0x1b, 0x1c, 0xf6, 0x3b, 0xd6, 0x60, 0xdd, 0x05, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xd2, 0xc3, 0xe8, 0xa0, 0x6d, 0x37, 0x82, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd4, 0x08, 0xe9, 0x40, 0x4f, 0x8d, 0x30, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x6a, 0x84, 0x78, 0xa0, 0xa7, 0x46, 0xd8, 0x1c, 0xac, 0x5c, 0xe4, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x4f, 0x8d, 0x30, 0x1a, 0xe8, 0xa9, 0x11, 0x56, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x04, 0xc5, 0x68, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x96, 0x5b, 0x8c, 0x0e, 0xda, 0x42, 0xa5, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x66, 0x63, 0x74, 0xd0, 0xba, 0x68, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xb5, 0x1e, 0xa3, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x96, 0x88, 0x8c, 0x0e, 0x5a, 0xa3, 0xac, 0xaa, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x54, 0x23, 0xa4, 0x03, 0x4d, 0x35, 0xc2, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xaa, 0x11, 0xe2, 0x81, 0xa6, 0x1a, 0x61, 0x73, 0xb0, 0x6a, 0x95, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0x35, 0xc2, 0x68, 0xa0, 0xa9, 0x46, 0x58, 0x1d, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x71, 0x26, 0xa3, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0x93, 0x32, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x11, 0x2c, 0xa3, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x8e, 0xd6, 0x1a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x96, 0xbb, 0x8c, 0x0e, 0xca, 0xa6, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xb3, 0x66, 0x46, 0x07, 0xcd, 0xb5, 0x55, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xec, 0xcd, 0xe8, 0x60, 0x79, 0x06, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa6, 0xeb, 0x8c, 0x0e, 0xda, 0xfa, 0xbe, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4d, 0xf0, 0x19, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0x92, 0x5b, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x29, 0xd2, 0x68, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe6, 0x2d, 0x8d, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x28, 0x5b, 0x50, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6d, 0x72, 0x1a, 0x1d, 0x94, 0x4d, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc6, 0x4a, 0x8d, 0x0e, 0x9a, 0x6b, 0xab, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x84, 0xab, 0xd1, 0xc1, 0xf2, 0x0c, 0xe4, 0xd6, 0x60, 0xdd, 0x05, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x59, 0xd0, 0x68, 0xc3, 0x25, 0xb5, 0x41, 0x23, 0xc1, 0x52, 0x6b, 0xd0, 0xc0, 0xc8, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x35, 0xd1, 0xe8, 0x60, 0x79, 0x06, 0x72, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x6b, 0x84, 0x6c, 0xa0, 0xb1, 0x46, 0x18, 0x1c, 0x9c, 0xc5, 0x44, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe3, 0xb6, 0x46, 0x1b, 0x94, 0xf6, 0x96, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe6, 0x78, 0x8d, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xbb, 0x1b, 0x55, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xc9, 0x60, 0xa3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xde, 0xb1, 0xd1, 0x41, 0x89, 0xf8, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x00, 0xda, 0xe8, 0x60, 0xd9, 0x8c, 0x73, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x95, 0x6b, 0xa3, 0x0d, 0x5f, 0xe1, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb6, 0xb9, 0x8d, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd6, 0x1a, 0x61, 0x31, 0xd0, 0x5a, 0x23, 0xac, 0x0e, 0x96, 0xcd, 0x38, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc6, 0xc3, 0x8d, 0x36, 0x08, 0xd2, 0xd3, 0x0d, 0xd6, 0x5d, 0x20, 0xaf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe6, 0x1a, 0x21, 0x1b, 0x68, 0xae, 0x11, 0x06, 0x07, 0xeb, 0x45, 0x9a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x6b, 0xe8, 0x46, 0x07, 0x6d, 0x7d, 0x5f, 0xac, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xee, 0x1a, 0x21, 0x1b, 0xe8, 0xae, 0x11, 0x06, 0x07, 0xeb, 0xdd, 0x99, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x1b, 0xf0, 0x46, 0x07, 0x4b, 0xec, 0xb7, 0x57, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x7b, 0x8d, 0x90, 0x0d, 0xb4, 0xd7, 0x08, 0xa3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbd, 0x46, 0x08, 0x07, 0xda, 0x6b, 0x84, 0xc5, 0xc1, 0x9a, 0x97, 0xe6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xd7, 0x08, 0x93, 0x81, 0xf6, 0x1a, 0x61, 0x73, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x96, 0xef, 0x8d, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xaa, 0xdf, 0x68, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc6, 0x05, 0x8e, 0x0e, 0x5a, 0xa3, 0xac, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0x23, 0x1c, 0x6d, 0x70, 0x0c, 0x37, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4d, 0x3b, 0x1c, 0x1d, 0xb4, 0x61, 0x03, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x9d, 0xe2, 0xe8, 0xa0, 0xad, 0xef, 0x8b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xc6, 0xc6, 0xd1, 0xc1, 0xf2, 0x0c, 0xe4, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x61, 0x23, 0x64, 0x03, 0x1d, 0x36, 0xc2, 0x68, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb0, 0x11, 0xc2, 0x81, 0x0e, 0x1b, 0x61, 0x71, 0xb0, 0x7e, 0x9f, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x36, 0xc2, 0x64, 0xa0, 0xc3, 0x46, 0xd8, 0x1c, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x2d, 0x91, 0xa3, 0x83, 0xe5, 0x19, 0xc8, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc5, 0x46, 0xc8, 0x06, 0x5a, 0x6c, 0x84, 0xd1, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x62, 0x23, 0x84, 0x03, 0x2d, 0x36, 0xc2, 0xe2, 0x60, 0x35, 0x12, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x6c, 0x84, 0xc9, 0x40, 0x8b, 0x8d, 0xb0, 0x39, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xb3, 0x29, 0x47, 0x07, 0xcb, 0x33, 0x90, 0x57, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x8f, 0x8d, 0x90, 0x0d, 0xf4, 0xd8, 0x08, 0xa3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc7, 0x46, 0x08, 0x07, 0x7a, 0x6c, 0x84, 0xc5, 0xc1, 0xd2, 0x30, 0xee, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd8, 0x08, 0x93, 0x81, 0x1e, 0x1b, 0x61, 0x73, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x16, 0x62, 0x8e, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xd6, 0xe6, 0xe8, 0xa0, 0x5d, 0x27, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x4b, 0x3f, 0x47, 0x07, 0xad, 0x8b, 0x56, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x32, 0x3a, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0xdd, 0x05, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xa6, 0xe9, 0xe8, 0xa0, 0x35, 0xca, 0xaa, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0x36, 0x42, 0x36, 0xd0, 0x64, 0x23, 0x8c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x26, 0x1b, 0x21, 0x1c, 0x68, 0xb2, 0x11, 0x16, 0x07, 0x4b, 0xe3, 0xb8, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x64, 0x23, 0x4c, 0x06, 0x9a, 0x6c, 0x84, 0xcd, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0xae, 0x3a, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xb9, 0xad, 0xa3, 0x83, 0x66, 0x0e, 0xa6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0x8f, 0x1d, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x6a, 0xda, 0xd1, 0x41, 0x89, 0x54, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x49, 0xee, 0x68, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf6, 0xef, 0x8e, 0x0e, 0xca, 0xa6, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xdb, 0x80, 0x47, 0x07, 0xad, 0x8b, 0x56, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x09, 0xf1, 0x68, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb2, 0x11, 0x5a, 0x07, 0x9a, 0x6c, 0x84, 0xea, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0xf2, 0x41, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x64, 0x23, 0xd4, 0x1e, 0x34, 0x25, 0xb3, 0x77, 0xb0, 0x6c, 0xc6, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xf4, 0x78, 0xb4, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x33, 0x96, 0x47, 0x07, 0x6d, 0xbb, 0x11, 0x54, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xcb, 0x46, 0xc8, 0x06, 0xba, 0x6c, 0x84, 0xd1, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x65, 0x23, 0x84, 0x03, 0x5d, 0x36, 0xc2, 0xe2, 0x60, 0xe5, 0x22, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x6c, 0x84, 0xc9, 0x40, 0x97, 0x8d, 0xb0, 0x39, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xc3, 0x9f, 0x47, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x56, 0x7a, 0x74, 0xd0, 0x16, 0x2a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x01, 0xd7, 0xa3, 0x83, 0xd6, 0x45, 0xab, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2d, 0xd4, 0x1e, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xbe, 0x7b, 0x74, 0xd0, 0x1a, 0x65, 0x55, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x36, 0x1b, 0x21, 0x1b, 0x68, 0xb3, 0x11, 0x46, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x9b, 0x8d, 0x10, 0x0e, 0xb4, 0xd9, 0x08, 0x8b, 0x83, 0x55, 0xab, 0xdc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb3, 0x11, 0x26, 0x03, 0x6d, 0x36, 0xc2, 0xe6, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0x12, 0x1f, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x86, 0xf2, 0xd1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0d, 0x3f, 0x1f, 0x6d, 0x50, 0x96, 0xbc, 0x6f, 0x70, 0xb4, 0xd6, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x56, 0x7d, 0x74, 0x50, 0x36, 0xbd, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0xf2, 0x3e, 0x3a, 0x68, 0xae, 0xad, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x03, 0xe7, 0x47, 0x07, 0xcb, 0x33, 0x90, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xd7, 0x7e, 0x74, 0xd0, 0xd6, 0xf7, 0xc5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x76, 0xfe, 0x68, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x96, 0xdc, 0xaa, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe3, 0x08, 0x48, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xe8, 0x80, 0xb4, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x86, 0x02, 0xe9, 0xa0, 0x6c, 0x7a, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xcf, 0x81, 0x74, 0xd0, 0x5c, 0x5b, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x56, 0x4b, 0x90, 0x0e, 0x96, 0x67, 0x20, 0xb7, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x6b, 0xfa, 0x47, 0x1b, 0x2e, 0xa9, 0x0d, 0x1a, 0x09, 0x96, 0x5a, 0x83, 0x06, 0x46, 0xa6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x4b, 0x01, 0x48, 0x07, 0xcb, 0x33, 0x90, 0xab, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x6a, 0x23, 0x64, 0x03, 0xad, 0x36, 0xc2, 0xe0, 0x60, 0x89, 0xae, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xcf, 0x05, 0x69, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xd5, 0x35, 0xd3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xa1, 0x1a, 0xa4, 0x83, 0x96, 0x8d, 0xdc, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0x36, 0x42, 0x36, 0xd0, 0x6b, 0x23, 0x0c, 0x0e, 0xd6, 0x50, 0x7a, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x56, 0x7a, 0x90, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0x5d, 0x33, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x1f, 0x42, 0x3a, 0x68, 0xd9, 0xc8, 0xad, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x6c, 0x23, 0x64, 0x03, 0xcd, 0x36, 0xc2, 0xe0, 0x60, 0xb9, 0xcc, 0xf7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x7b, 0x09, 0x69, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xd5, 0x35, 0xd3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x51, 0x29, 0xa4, 0x83, 0x96, 0x8d, 0xdc, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdd, 0x36, 0x42, 0x36, 0xd0, 0x6d, 0x23, 0x0c, 0x0e, 0x56, 0x30, 0x7d, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x16, 0xb5, 0x90, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0x5d, 0x33, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0x69, 0x44, 0x3a, 0x68, 0xd9, 0xc8, 0x6d, 0x0d, 0x1a, 0x18, 0x99, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0x85, 0x21, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xc6, 0x19, 0xd2, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x6d, 0xdc, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5a, 0x66, 0x43, 0x3a, 0x68, 0x1c, 0x3d, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x74, 0x1d, 0xd2, 0x41, 0x03, 0x67, 0x53, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0xf6, 0x43, 0x3a, 0x68, 0x23, 0xbd, 0x60, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x76, 0x21, 0xd2, 0x41, 0xcb, 0xfa, 0x71, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x6d, 0x84, 0x6c, 0xa0, 0xdf, 0x46, 0x18, 0x1c, 0xac, 0x09, 0x3a, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8d, 0x54, 0x22, 0x6d, 0x50, 0x90, 0xc6, 0x6e, 0xb0, 0xbc, 0x37, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0xb2, 0x26, 0xd2, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xed, 0x81, 0x22, 0x6d, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0xc6, 0x7d, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x11, 0x53, 0xa4, 0x83, 0xc6, 0xd1, 0xa3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xad, 0xbc, 0x22, 0x1d, 0x34, 0x70, 0x36, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x05, 0x5c, 0xa4, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x9a, 0x37, 0xed, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xdc, 0x8b, 0x74, 0xd0, 0x50, 0x6a, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x49, 0x63, 0xa4, 0x83, 0x56, 0x3e, 0xe4, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xd8, 0x8c, 0xb4, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0x5e, 0x1a, 0x69, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x36, 0xb1, 0x91, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x68, 0x8c, 0x56, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x90, 0x37, 0xd2, 0x41, 0xe3, 0xe8, 0x51, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x16, 0xce, 0x91, 0x0e, 0x56, 0xf0, 0x86, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xf2, 0x1d, 0xe9, 0xa0, 0xc8, 0x69, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0x63, 0x8f, 0xb4, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xea, 0x9a, 0xe9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xd0, 0x40, 0x3f, 0xd2, 0x41, 0xcb, 0x46, 0x6e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xda, 0x1f, 0x48, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0xc1, 0x84, 0xa4, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x5a, 0x57, 0x93, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0xf2, 0x90, 0x74, 0xd0, 0x38, 0x7a, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xa0, 0x0d, 0x8c, 0xa4, 0x83, 0xe5, 0x19, 0xc8, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1a, 0x05, 0x49, 0x3a, 0x58, 0xc1, 0x1b, 0xda, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb9, 0x11, 0xb2, 0x81, 0x96, 0x1b, 0x61, 0x70, 0xb0, 0x48, 0xeb, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xb4, 0x8f, 0x92, 0x74, 0xb0, 0x3c, 0x03, 0xb9, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0x83, 0x06, 0xa9, 0x96, 0x36, 0x3c, 0x3e, 0xb2, 0x41, 0x83, 0x54, 0x4b, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0x5d, 0x1b, 0xab, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0x7c, 0xb8, 0x37, 0xb7, 0x7c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0x71, 0x30, 0xbe, 0x06, 0xf0, 0x90, 0x0b, 0xbb, 0x03, 0x69, 0x0b, 0xa3, 0x1b, 0x43, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0x0f, 0xe6, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0xd9, 0x60, 0x95, 0x83, 0x51, 0x07, 0x21, 0xf8, 0xb0, 0x41, 0xe8, 0x97, 0xac, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xbf, 0x5b, 0x18, 0x5d, 0x9d, 0x5c, 0x18, 0xdb, 0x4b, 0x98, 0x98, 0xdb, 0x9b, 0x5c, 0x5b, 0x18, 0xdb, 0xc1, 0x2a, 0xc8, 0xe4, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x09, 0x93, 0x6b, 0x03, 0x79, 0x93, 0x03, 0x61, 0x2b, 0x3b, 0x3b, 0x58, 0xc6, 0x5e, 0xbe, 0x06, 0xa1, 0x5f, 0xb2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x7f, 0x98, 0x98, 0xdb, 0x9b, 0x5c, 0x5b, 0x18, 0xdb, 0xc1, 0x2a, 0xc8, 0xe4, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xa8, 0x73, 0x6b, 0x0b, 0xa3, 0x1b, 0x43, 0x2b, 0x23, 0x3b, 0x28, 0xb3, 0x74, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x63, 0x2e, 0xcf, 0x8d, 0x0e, 0xad, 0x8c, 0x2e, 0x6d, 0xec, 0x60, 0x31, 0x7c, 0x79, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0xe1, 0x2f, 0x9a, 0x35, 0xfc, 0x3b, 0xbf, 0x06, 0x8d, 0x83, 0xf1, 0xd5, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xed, 0xc2, 0x50, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0x81, 0xc9, 0x6e, 0x50, 0x50, 0x64, 0x6e, 0xb0, 0x0a, 0x4c, 0xf6, 0xa0, 0x59, 0x0d, 0xaa, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0xc6, 0x82, 0xd8, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xed, 0xc2, 0x50, 0x6d, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xa0, 0x5d, 0x18, 0xaa, 0x36, 0x08, 0xd2, 0xd3, 0x35, 0x0e, 0x1d, 0x14, 0xb0, 0x9a, 0x6b, 0x10, 0x46, 0x40, 0x1b, 0x04, 0xe9, 0xe9, 0x1a, 0x87, 0x0e, 0xda, 0x29, 0x30, 0x5b, 0x83, 0x80, 0x0d, 0x3a, 0x28, 0x45, 0x35, 0xd7, 0x20, 0x8c, 0x80, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0x37, 0xec, 0x6b, 0xc3, 0xbb, 0x3d, 0x6b, 0xb8, 0xa4, 0x36, 0x68, 0x7e, 0x44, 0x6a, 0x0d, 0x1a, 0x18, 0x99, 0xda, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xe0, 0xf0, 0x41, 0x3b, 0x05, 0x66, 0x6d, 0xb0, 0xc4, 0x7e, 0x7b, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x46, 0x7a, 0xc1, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3d, 0x68, 0x17, 0x86, 0xea, 0xa0, 0xac, 0xf3, 0x6c, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x73, 0x92, 0xdd, 0x60, 0x99, 0x93, 0xec, 0x06, 0x2d, 0xc5, 0x7d, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x5a, 0x77, 0x47, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0xed, 0xcb, 0xf2, 0x6d, 0xd0, 0x38, 0xde, 0x57, 0xb5, 0x06, 0x01, 0x1b, 0xb4, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x03, 0x23, 0x53, 0x6b, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0xb6, 0x5b, 0xca, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0x3b, 0x05, 0x66, 0x1b, 0x04, 0xe9, 0xe9, 0x1a, 0x87, 0x0e, 0xda, 0x6e, 0x29, 0x5b, 0x83, 0x80, 0x0d, 0xda, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0xdb, 0x2d, 0x65, 0x6b, 0x10, 0x46, 0x40, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x99, 0x83, 0xa9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x89, 0x54, 0xbd, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8b, 0x40, 0x46, 0x37, 0x28, 0x9b, 0xde, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0xdb, 0x2d, 0x65, 0x6d, 0xb0, 0x2a, 0x8c, 0xb8, 0xda, 0xa0, 0x94, 0x10, 0x5f, 0x83, 0x25, 0xd5, 0x49, 0x1b, 0xee, 0xa8, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x9a, 0xc8, 0xda, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x4b, 0xfa, 0x9c, 0x0f, 0x8f, 0xc9, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x8f, 0xed, 0xcd, 0xdd, 0xf0, 0xb6, 0xce, 0x41, 0xfb, 0xb2, 0x7c, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x43, 0x2b, 0x3b, 0x37, 0x28, 0x06, 0x64, 0x37, 0x68, 0x14, 0x97, 0x6f, 0x83, 0x96, 0x6f, 0xf9, 0x36, 0xfc, 0xe2, 0xb2, 0xc1, 0x32, 0x27, 0xd9, 0x0d, 0x5a, 0xaf, 0x5c, 0x58, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x2c, 0x05, 0xb6, 0x41, 0xcb, 0xb7, 0x7c, 0xd5, 0x86, 0x0f, 0x72, 0xd6, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0x60, 0x83, 0x36, 0x0e, 0x6d, 0xd0, 0x10, 0x3b, 0x5f, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x55, 0x60, 0xb2, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x68, 0x73, 0x9f, 0x6f, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x14, 0x3a, 0x5f, 0x6d, 0xb0, 0x0a, 0x4c, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x44, 0xaf, 0xd4, 0x06, 0x0d, 0x86, 0x59, 0x6d, 0xd0, 0x32, 0x40, 0x5f, 0x6d, 0x50, 0xda, 0x5b, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0xda, 0xdd, 0xa8, 0x3a, 0x58, 0x9b, 0xc7, 0xbd, 0xe1, 0x41, 0xc9, 0x0d, 0x02, 0x90, 0x6d, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x06, 0x2e, 0x9b, 0x36, 0x28, 0xe1, 0x31, 0x17, 0x3c, 0x3e, 0x68, 0x73, 0x9f, 0x6f, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x84, 0x9b, 0xa7, 0x83, 0xc6, 0x40, 0xa5, 0x56, 0xc0, 0xa7, 0xbb, 0x4b, 0x73, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xc9, 0x2d, 0xaa, 0x07, 0x4d, 0x42, 0xf2, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x2f, 0xef, 0x4d, 0x3e, 0x68, 0x12, 0x92, 0xaf, 0x0d, 0x7f, 0xd1, 0x6c, 0xd0, 0x24, 0x24, 0xdf, 0x86, 0xb7, 0xec, 0xd6, 0xf0, 0xc4, 0xdd, 0x86, 0x67, 0xf1, 0x0e, 0xda, 0xa6, 0x4e, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0x20, 0xcd, 0x4f, 0x75, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0x05, 0xd2, 0xd7, 0x06, 0x69, 0x7e, 0xaa, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x24, 0x07, 0xaa, 0x6e, 0xd0, 0xbc, 0x4a, 0xdf, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x2d, 0xaf, 0xf4, 0x6d, 0x90, 0xe6, 0xa7, 0xba, 0xe1, 0x83, 0x9c, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0x23, 0xa0, 0x8d, 0x43, 0x07, 0xc9, 0x81, 0xaa, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0x11, 0xd6, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0x23, 0xa0, 0x8d, 0x43, 0x07, 0x2d, 0xaf, 0xf4, 0xad, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x18, 0x01, 0x6d, 0x1c, 0x1a, 0x1c, 0x3e, 0x48, 0x0e, 0x54, 0x5d, 0x83, 0x62, 0x12, 0x73, 0x83, 0x30, 0x02, 0xda, 0x38, 0x34, 0x38, 0x7c, 0xd0, 0xf2, 0x4a, 0xdf, 0x1a, 0xfe, 0xcd, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x83, 0xc3, 0x07, 0x8d, 0x03, 0xf5, 0x6d, 0x78, 0x5b, 0x67, 0xf0, 0x78, 0x70, 0xf8, 0xa0, 0x75, 0xa2, 0xbe, 0x36, 0x38, 0xe7, 0x2f, 0x6d, 0xb0, 0xcc, 0x49, 0x76, 0x83, 0x65, 0x4e, 0xb2, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x73, 0x30, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0x5a, 0x46, 0xea, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0xcd, 0x2e, 0xf5, 0x1d, 0x94, 0x75, 0x9e, 0x1b, 0x34, 0x77, 0xd4, 0xd7, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x04, 0x6c, 0xd0, 0x41, 0xc3, 0x3c, 0x7d, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x0d, 0x6f, 0xeb, 0x1c, 0xb4, 0x8c, 0xd4, 0xb7, 0xe1, 0x6d, 0x9d, 0x83, 0x66, 0x97, 0xfa, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x47, 0x58, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0x60, 0x83, 0x36, 0x0e, 0x0d, 0x1e, 0x1f, 0x34, 0x0e, 0xd4, 0xb7, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x01, 0x1b, 0xb4, 0x71, 0x68, 0xf0, 0xf8, 0xa0, 0x75, 0xa2, 0xbe, 0xd6, 0xe0, 0x9c, 0xbf, 0xb4, 0xc1, 0x2a, 0x30, 0xd9, 0x0d, 0x1a, 0x04, 0xeb, 0xdb, 0xf0, 0x8b, 0xcb, 0x06, 0xab, 0xc0, 0x64, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcd, 0x1c, 0x4c, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x36, 0xd1, 0xfa, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0xb3, 0x6c, 0x7d, 0x07, 0x65, 0x9d, 0x67, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0xc2, 0x08, 0xe8, 0xa0, 0x09, 0xb4, 0xbe, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0x23, 0xa0, 0x83, 0x56, 0xd8, 0xfa, 0xda, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xb4, 0x5a, 0xd7, 0x77, 0xd0, 0x08, 0x5e, 0xdf, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x77, 0x17, 0xc6, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x8e, 0xfd, 0x37, 0x1b, 0x94, 0x4d, 0xef, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xa0, 0x4d, 0xb4, 0xbe, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0xb3, 0x6c, 0x7d, 0x6d, 0x70, 0xce, 0x5f, 0xda, 0x60, 0x15, 0x98, 0xec, 0x06, 0x0d, 0x82, 0xf5, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x65, 0x4e, 0xb2, 0x1b, 0xb4, 0x5a, 0xd7, 0xb7, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x31, 0xb1, 0xaf, 0x0e, 0xa7, 0xd8, 0x1a, 0x2c, 0xe1, 0xe6, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x41, 0xcb, 0x00, 0x7d, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x55, 0x60, 0xb2, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x8e, 0xe1, 0x06, 0x07, 0xed, 0x94, 0x6d, 0x1d, 0x34, 0x33, 0xd0, 0x77, 0xd0, 0xf6, 0x25, 0xdf, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xe6, 0x24, 0xbb, 0xc1, 0x2a, 0x30, 0xd9, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x35, 0x9f, 0x83, 0x36, 0x13, 0xfa, 0x9a, 0x65, 0xc3, 0x5f, 0x34, 0x1b, 0x34, 0x09, 0xc9, 0xb7, 0x41, 0x90, 0x9e, 0x6e, 0xd0, 0xc0, 0xc8, 0xd4, 0x1a, 0xac, 0x17, 0x69, 0x3e, 0x28, 0x28, 0x32, 0xd7, 0x60, 0xbd, 0x3b, 0xf3, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xe0, 0xb2, 0xa9, 0x35, 0x68, 0x60, 0x71, 0xea, 0xa0, 0x9d, 0xdb, 0xbe, 0x35, 0x68, 0xc3, 0x73, 0x6a, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xc6, 0x28, 0xfa, 0x36, 0x68, 0xc0, 0xa2, 0x6f, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0xa3, 0x0b, 0x33, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0x5a, 0x40, 0xdd, 0x3a, 0x68, 0xc1, 0x8d, 0x6a, 0x83, 0x12, 0x1e, 0x73, 0x0d, 0x1a, 0x0e, 0xee, 0x6b, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x95, 0x6c, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x02, 0x36, 0x68, 0xe3, 0xd0, 0x41, 0x83, 0xc7, 0x7d, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0x10, 0x46, 0x40, 0x1b, 0x87, 0x06, 0x87, 0x0f, 0x1a, 0x3c, 0xee, 0x6b, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0x78, 0xdc, 0xb7, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0xd0, 0xbe, 0xe7, 0xd6, 0x1a, 0x34, 0x1a, 0xd0, 0xb7, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x26, 0xa3, 0xfb, 0x0e, 0x1a, 0x92, 0xa3, 0x5a, 0x83, 0xe6, 0x23, 0xa6, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x8c, 0xa2, 0x6f, 0x83, 0x06, 0x2c, 0xfa, 0x36, 0x28, 0x3a, 0x68, 0x07, 0x3c, 0xbd, 0xb2, 0x76, 0x83, 0x46, 0x03, 0xfa, 0xd6, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xa0, 0xf1, 0xf0, 0xbe, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x9f, 0xed, 0xed, 0x8d, 0x6e, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1f, 0x34, 0x46, 0xd1, 0xb7, 0x41, 0x5b, 0x81, 0x54, 0x6d, 0x50, 0xc2, 0x63, 0xae, 0x41, 0xe3, 0xe1, 0x7d, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x0a, 0x8a, 0xcc, 0x83, 0x36, 0x13, 0xfa, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0xcb, 0x9e, 0x7d, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x1c, 0xb4, 0xee, 0xde, 0x77, 0x50, 0x38, 0xc9, 0x6e, 0xf8, 0xc5, 0x65, 0x83, 0x82, 0x22, 0xf3, 0xa0, 0x61, 0xd6, 0xbe, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0x5a, 0x77, 0xef, 0x5b, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0xab, 0xc0, 0x64, 0xd7, 0xf0, 0x8b, 0xcb, 0x41, 0x73, 0xa5, 0x7d, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x9e, 0x5e, 0x1d, 0xbd, 0x86, 0xbf, 0x68, 0x36, 0x58, 0xfa, 0x43, 0xbe, 0x41, 0x90, 0x9e, 0x6e, 0xd0, 0xa4, 0xfb, 0xd4, 0x1a, 0xac, 0xe7, 0xde, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0x94, 0x5f, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0xc1, 0xeb, 0x83, 0xd6, 0xdd, 0xfb, 0x5a, 0x83, 0x55, 0xe2, 0xdb, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0xb9, 0x21, 0xaf, 0x83, 0xb6, 0x16, 0xfc, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x9c, 0x64, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x67, 0xac, 0x99, 0x0d, 0x02, 0x96, 0x75, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x34, 0xcc, 0xe0, 0xd7, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x70, 0x36, 0xb5, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x63, 0xc0, 0xaf, 0x0e, 0xca, 0x32, 0xcf, 0x36, 0x7c, 0x62, 0xb3, 0x41, 0xb3, 0x10, 0x67, 0x1b, 0x14, 0x3b, 0x9a, 0x1b, 0xb4, 0xb9, 0x72, 0xb6, 0x41, 0x63, 0xa0, 0x52, 0x1b, 0x3e, 0xc8, 0xd9, 0xa0, 0xc1, 0x99, 0xb3, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0xda, 0x70, 0xa3, 0x3a, 0x68, 0xee, 0x43, 0x6c, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x06, 0x46, 0xa6, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0x4b, 0x6a, 0x83, 0xd6, 0x7b, 0xa5, 0x0e, 0x5a, 0x70, 0xa3, 0xda, 0xa0, 0xc1, 0x30, 0xab, 0x83, 0x60, 0x65, 0xdd, 0xa0, 0xd5, 0xdf, 0xad, 0x36, 0x68, 0x26, 0x3b, 0x6c, 0x0d, 0x5a, 0x86, 0x9d, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x84, 0xe0, 0xc3, 0x41, 0x63, 0x14, 0x7d, 0x6b, 0xb8, 0xa4, 0x36, 0x68, 0xdb, 0xa2, 0xef, 0xa0, 0x21, 0x39, 0xaa, 0x0d, 0x56, 0xba, 0x38, 0x2d, 0xe0, 0xe9, 0xbd, 0xd1, 0x6d, 0xd0, 0xd6, 0xe4, 0xd4, 0x06, 0x05, 0xc1, 0xec, 0x06, 0xad, 0xfb, 0xf8, 0xad, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x43, 0xea, 0x7d, 0x1b, 0xde, 0xd6, 0x39, 0x68, 0xdd, 0xc7, 0x6f, 0x83, 0xb6, 0x75, 0xfc, 0x0e, 0x1a, 0x03, 0x95, 0xda, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xdb, 0xc2, 0xd2, 0xdc, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x68, 0x86, 0xc9, 0x6f, 0xc3, 0x5f, 0x34, 0x1b, 0x34, 0x09, 0xc9, 0xb7, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xd1, 0xe5, 0xc9, 0x1b, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xc2, 0x4d, 0x74, 0x83, 0xb2, 0xa9, 0x7e, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0xb4, 0xee, 0xe3, 0xd7, 0x06, 0x0d, 0xa9, 0xf7, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0x06, 0xed, 0x4f, 0xf9, 0xb5, 0xc1, 0x12, 0xe1, 0xda, 0x0d, 0x4a, 0x78, 0xcc, 0x05, 0xaf, 0x0f, 0xda, 0xed, 0xf2, 0x5b, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x29, 0x39, 0xaa, 0x35, 0x68, 0x83, 0xa0, 0x6f, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x14, 0x99, 0x07, 0xcd, 0x0c, 0xf4, 0xad, 0x41, 0xa3, 0x01, 0x7d, 0x1b, 0x3e, 0x8e, 0x3a, 0x68, 0x19, 0xa0, 0xaf, 0x0d, 0x8a, 0x1d, 0xcd, 0x0d, 0x5a, 0xf6, 0xec, 0x5b, 0xc3, 0x25, 0xb5, 0xc1, 0xea, 0xe1, 0xda, 0x35, 0x68, 0x34, 0xa0, 0xef, 0xa0, 0x69, 0xd6, 0xbe, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0xa9, 0x5a, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0x3e, 0x29, 0xb5, 0x41, 0x83, 0x61, 0x56, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xfa, 0xa0, 0x89, 0x30, 0xbf, 0x36, 0x08, 0xd2, 0xd3, 0x0d, 0xda, 0xd2, 0x56, 0x5b, 0x83, 0x80, 0x0d, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xab, 0xc0, 0x64, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x27, 0x82, 0xb6, 0x0d, 0x1a, 0x2b, 0x57, 0x5b, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0x3e, 0x6b, 0x3e, 0x68, 0x73, 0xb4, 0xaf, 0x35, 0xbc, 0xad, 0x73, 0xd0, 0x58, 0xba, 0x5a, 0x6b, 0x10, 0x46, 0x40, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x99, 0x93, 0xec, 0x06, 0xcb, 0x9c, 0x64, 0x37, 0x68, 0xac, 0x5c, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xba, 0x3b, 0xda, 0x06, 0x2d, 0x3e, 0x88, 0x1d, 0x34, 0x68, 0xe8, 0x57, 0xab, 0xc1, 0xfa, 0xe1, 0xda, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x26, 0x21, 0xf9, 0x36, 0x28, 0xe1, 0x31, 0x17, 0x3c, 0x3e, 0x68, 0xdd, 0xc7, 0x6f, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x0d, 0x9a, 0x92, 0xa3, 0xda, 0xa0, 0xa9, 0x32, 0xbf, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xba, 0x34, 0x7b, 0xc3, 0xbb, 0x3d, 0x6b, 0xb8, 0xa4, 0x36, 0x68, 0x7e, 0x44, 0xea, 0xa0, 0x21, 0x39, 0xaa, 0x0d, 0x96, 0xd8, 0x6f, 0xaf, 0xe1, 0x6d, 0x9d, 0xc1, 0xd3, 0x83, 0x46, 0x2e, 0xfd, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xa0, 0x01, 0x15, 0xaa, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x35, 0x68, 0x60, 0x64, 0x6a, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x1b, 0x34, 0xea, 0xe9, 0xd7, 0x1a, 0xb4, 0x41, 0xd0, 0x77, 0x50, 0x50, 0x64, 0xae, 0x41, 0x13, 0x66, 0x5b, 0x87, 0xc7, 0x64, 0xd6, 0xa0, 0x25, 0xb7, 0xaa, 0x83, 0x82, 0x22, 0xb3, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x1a, 0x9c, 0xa1, 0xda, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x41, 0xce, 0x1a, 0x14, 0x93, 0x98, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x30, 0x02, 0xda, 0x20, 0x60, 0x83, 0x0e, 0x0e, 0x31, 0x1d, 0x07, 0x0d, 0xce, 0x50, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x23, 0x97, 0x7e, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3e, 0x68, 0xe4, 0xd2, 0x6f, 0x0d, 0x1a, 0x0d, 0xe8, 0x3b, 0x68, 0xa1, 0x87, 0xaa, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0xbe, 0x41, 0x8b, 0xa9, 0x5e, 0x1b, 0x94, 0xd0, 0xb1, 0x1b, 0x2c, 0x86, 0x2f, 0x3f, 0x08, 0xd3, 0xb1, 0x35, 0x08, 0xd2, 0xd3, 0x0d, 0xda, 0x97, 0xa1, 0x5a, 0x83, 0x80, 0x0d, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x2d, 0x1c, 0x4a, 0x6d, 0xb0, 0x0a, 0x4c, 0x76, 0x83, 0x56, 0xcf, 0xd1, 0x5a, 0x83, 0x30, 0x02, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x2d, 0x1c, 0x4a, 0x6d, 0xb0, 0xcc, 0x49, 0xf6, 0xa0, 0xc5, 0xb9, 0xb4, 0x36, 0xfc, 0xe2, 0xb2, 0xc1, 0x32, 0x27, 0xd9, 0x0d, 0x96, 0x39, 0xc9, 0x6e, 0xd0, 0x84, 0xac, 0xd7, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x75, 0x77, 0xb4, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xeb, 0xee, 0x68, 0x1b, 0xb4, 0xf8, 0x20, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x5a, 0x72, 0xf5, 0xeb, 0xa0, 0x35, 0x8a, 0xaf, 0x0e, 0xa7, 0x58, 0x87, 0x53, 0x6c, 0x0d, 0x1a, 0xf5, 0x9d, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0xe5, 0x7c, 0xeb, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x91, 0xaa, 0x37, 0x68, 0x43, 0xa9, 0x6a, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0x36, 0x10, 0xd5, 0x86, 0x4b, 0x6a, 0x83, 0xc3, 0x7e, 0xc7, 0x41, 0xfb, 0x48, 0x54, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0xb0, 0x6e, 0xbe, 0x75, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0x49, 0x48, 0xbe, 0x0d, 0x4a, 0x78, 0xcc, 0x05, 0xa7, 0x0f, 0xd6, 0xcd, 0xb7, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xd3, 0x83, 0x75, 0xf3, 0xad, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0x94, 0xd1, 0xd7, 0x06, 0xad, 0xf1, 0xfb, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xba, 0xf9, 0xd6, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0xad, 0xef, 0x57, 0x6b, 0xd0, 0xa4, 0xf4, 0xd4, 0x86, 0x0f, 0x72, 0x36, 0x68, 0xaf, 0x3b, 0x6c, 0x83, 0x82, 0x22, 0xf3, 0xa0, 0xb9, 0xad, 0xb3, 0x56, 0x83, 0xc5, 0xfe, 0x3e, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x99, 0x93, 0xec, 0x06, 0xab, 0xc0, 0x64, 0x0f, 0xda, 0x4c, 0xe8, 0x3b, 0x9c, 0x62, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0x58, 0x6b, 0xd0, 0x9c, 0x11, 0xd8, 0x86, 0x5f, 0x94, 0x36, 0x68, 0xd7, 0xc6, 0x6a, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0xde, 0xf4, 0x1b, 0x2c, 0x9b, 0x71, 0x3e, 0x58, 0xea, 0xba, 0xbd, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x03, 0x2a, 0x54, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xfd, 0x15, 0xaa, 0x83, 0xe6, 0xc2, 0xac, 0x36, 0x38, 0x17, 0x2e, 0xac, 0x21, 0x8f, 0xbd, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0xa6, 0xb9, 0x96, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x08, 0xeb, 0x06, 0x8d, 0xc5, 0x89, 0xad, 0x41, 0x31, 0x89, 0xb9, 0x41, 0xc0, 0x06, 0x1d, 0x34, 0x9a, 0x96, 0xd6, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0x2b, 0x6a, 0x69, 0x07, 0x2d, 0xc2, 0xa5, 0x1d, 0x4e, 0xb1, 0x35, 0x68, 0xd0, 0xc5, 0x6a, 0xc3, 0x2f, 0x4a, 0x1b, 0xb4, 0x1e, 0x41, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x16, 0xc3, 0x97, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xd0, 0x44, 0xd6, 0xd6, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x30, 0x2e, 0x6d, 0x0d, 0x6f, 0xeb, 0x1c, 0xb4, 0x9d, 0xce, 0xd5, 0x06, 0xa5, 0xbd, 0xe5, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xd0, 0xca, 0xd4, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0xd9, 0x60, 0x05, 0x4c, 0x76, 0x1b, 0x3e, 0xc8, 0xd9, 0xa0, 0xdd, 0x0c, 0xb2, 0x35, 0x38, 0xda, 0xf0, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x30, 0xae, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x47, 0x4b, 0x5b, 0x2b, 0xdb, 0xa0, 0x9d, 0xb2, 0xad, 0x83, 0x16, 0xaf, 0xba, 0xda, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0x37, 0x58, 0x36, 0xe3, 0xbc, 0x41, 0xc3, 0x40, 0x7f, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0xb0, 0xb6, 0x13, 0x7e, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x90, 0x08, 0xd9, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xd9, 0x9f, 0xbf, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xa0, 0xe9, 0x7e, 0xae, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x80, 0xaa, 0xd4, 0x06, 0x4b, 0xec, 0xb7, 0x0f, 0x9a, 0x18, 0xe8, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0xf5, 0xfe, 0xe5, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xca, 0x85, 0xec, 0xa0, 0x31, 0x88, 0xae, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0x96, 0x51, 0xba, 0x36, 0x68, 0x08, 0x87, 0x6c, 0x0d, 0x1a, 0xcb, 0xfa, 0xdb, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x07, 0x8d, 0x8b, 0x74, 0x1d, 0xb4, 0xd0, 0xd1, 0x75, 0xd0, 0x1e, 0xd6, 0x5f, 0x1b, 0x3e, 0xb1, 0xd9, 0xa0, 0x21, 0x1e, 0xb2, 0x0d, 0x8e, 0x36, 0x7c, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x06, 0x9f, 0xba, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x0b, 0xe8, 0x7f, 0x37, 0x68, 0x48, 0x84, 0xec, 0xa0, 0x71, 0xa4, 0xbf, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0x6f, 0xfa, 0x0d, 0x56, 0xd6, 0x90, 0x1f, 0xb4, 0x32, 0xf5, 0xb7, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0xda, 0x4e, 0xf8, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xf3, 0x61, 0x5d, 0x07, 0xed, 0x61, 0xfd, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0x16, 0xb7, 0xfe, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0xf4, 0xac, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0xcc, 0x2c, 0xb5, 0x41, 0x73, 0x10, 0x5d, 0x1b, 0xb4, 0x2e, 0xd1, 0x75, 0xd0, 0x26, 0x15, 0xd9, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0xcb, 0x28, 0x5d, 0x1b, 0xb4, 0x86, 0x45, 0xb6, 0x06, 0x8d, 0x65, 0xfd, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0x86, 0xfa, 0xba, 0x0e, 0x5a, 0xe8, 0xe8, 0x3a, 0x68, 0x0f, 0xeb, 0xaf, 0x15, 0xf0, 0xc7, 0xd8, 0xd2, 0xe0, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0x26, 0x03, 0xd5, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0x7e, 0x25, 0xdb, 0xa0, 0x49, 0xa1, 0xa9, 0x83, 0x36, 0x29, 0xa8, 0x0e, 0x96, 0x67, 0x20, 0x1f, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0x2c, 0xe0, 0xcf, 0xb1, 0xa5, 0xd1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xed, 0x96, 0xfe, 0x35, 0x80, 0x1f, 0x5d, 0x1e, 0x5c, 0x19, 0xc8, 0x9b, 0x19, 0xc8, 0x1c, 0x5b, 0x58, 0xdb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0x21, 0xf9, 0xef, 0xc1, 0xb2, 0x19, 0xe7, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x2a, 0xf5, 0xdf, 0x83, 0x65, 0x33, 0xce, 0x6d, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x68, 0x8c, 0x56, 0x6a, 0x83, 0xc6, 0xd1, 0xa3, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0xb4, 0xde, 0x2b, 0xb5, 0x41, 0xe3, 0xe8, 0x51, 0x6b, 0x78, 0x5b, 0xe7, 0x60, 0x3d, 0xf7, 0x70, 0x1b, 0xb4, 0xb6, 0x29, 0x76, 0x70, 0x58, 0x9e, 0x69, 0x83, 0x22, 0xa7, 0x75, 0x83, 0x65, 0xf2, 0xc3, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xda, 0xb8, 0x8f, 0xda, 0xa0, 0x71, 0xf4, 0xa8, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x2b, 0x92, 0x15, 0x1b, 0xb4, 0xfd, 0xfb, 0x77, 0xd0, 0x3c, 0xf1, 0x5f, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x06, 0x0b, 0x12, 0x36, 0x58, 0xc2, 0xa8, 0xbd, 0x41, 0xeb, 0xe8, 0x69, 0x1b, 0x34, 0x34, 0x9f, 0x76, 0x50, 0xd6, 0x79, 0xb6, 0x02, 0xfe, 0x1c, 0xdb, 0x5b, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x46, 0xf5, 0x5f, 0x03, 0xf8, 0x9f, 0x95, 0xd1, 0x81, 0x84, 0xc9, 0xb5, 0xcd, 0x81, 0xa4, 0xb9, 0x81, 0x8c, 0xbd, 0xc9, 0x95, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x96, 0xe4, 0xc1, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xf2, 0x7f, 0xef, 0x0d, 0x4e, 0x0e, 0x72, 0x1b, 0x34, 0xd6, 0x9c, 0xb5, 0x41, 0x41, 0x91, 0xb9, 0x06, 0x4d, 0x4a, 0x4f, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0x58, 0x73, 0xd6, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8d, 0x04, 0x4b, 0x6d, 0xd0, 0x38, 0x7a, 0xd4, 0x41, 0x2b, 0xf8, 0x60, 0xad, 0x41, 0x1b, 0xc9, 0x53, 0x07, 0x6d, 0x9c, 0xff, 0xad, 0x41, 0xf3, 0x11, 0x53, 0x1b, 0x9c, 0xd8, 0x6f, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xe5, 0x1a, 0x5a, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x94, 0x48, 0xd5, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xb0, 0x08, 0x64, 0x74, 0x83, 0xb2, 0xa9, 0x7e, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x0f, 0x2e, 0x0f, 0x1e, 0x1f, 0x34, 0xd6, 0x9c, 0xd5, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x61, 0x3a, 0xb6, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x0f, 0xd6, 0xef, 0x41, 0xb7, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x89, 0x54, 0xbd, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8b, 0x40, 0x46, 0x37, 0x28, 0x9b, 0xea, 0x37, 0x28, 0xdb, 0x45, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x07, 0xeb, 0xb5, 0x9e, 0x0f, 0x0e, 0x31, 0x1d, 0x87, 0xa7, 0x75, 0x5a, 0x01, 0x7f, 0x8e, 0x2d, 0x4c, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0xda, 0x01, 0xb0, 0x01, 0xd0, 0x6e, 0x8e, 0x2e, 0x8c, 0xae, 0x6c, 0x0e, 0xe4, 0x0e, 0xad, 0x8c, 0x0e, 0xad, 0x4c, 0x0e, 0x24, 0xef, 0xad, 0x0e, 0x64, 0x2c, 0xcc, 0x0d, 0x24, 0x6c, 0x6c, 0xac, 0x6c, 0x6e, 0x0e, 0x24, 0xcc, 0x0d, 0x24, 0x4c, 0xae, 0x0d, 0x24, 0xcd, 0x0d, 0x24, 0x0c, 0x84, 0x2e, 0x0f, 0xae, 0xcc, 0xad, 0x04, 0xa0, 0xbb, 0xcb, 0x5d, 0x58, 0x9e, 0x0e, 0x08, 0x1d, 0x5a, 0x19, 0x48, 0xd8, 0xd8, 0x58, 0xd9, 0xdc, 0x1c, 0x08, 0x5d, 0x1e, 0x5c, 0x19, 0x08, 0x0a, 0x89, 0x5d, 0x5a, 0x18, 0x5b, 0x8a, 0x0e, 0x88, 0x5c, 0x59, 0x18, 0x19, 0x0b, 0xc8, 0x9d, 0x5c, 0x1a, 0x5d, 0x19, 0x0b, 0xc8, 0x9b, 0x1c, 0x88, 0x5c, 0x59, 0x18, 0x59, 0x4b, 0x98, 0x1b, 0x59, 0xcb, 0x9d, 0x5c, 0x1a, 0x5d, 0x99, 0x5b, 0x02, 0xe0, 0x03, 0x2a, 0xb4, 0x32, 0x10, 0xb3, 0xb7, 0x3a, 0x39, 0x3a, 0x34, 0x90, 0xb1, 0xb0, 0xb9, 0x32, 0x90, 0x37, 0x33, 0x10, 0x12, 0xbb, 0xb4, 0x30, 0x36, 0x16, 0x90, 0x12, 0x33, 0xb9, 0xb2, 0x32, 0x16, 0x90, 0xb4, 0x39, 0x10, 0xb7, 0x37, 0x3a, 0x10, 0xb8, 0x32, 0xb9, 0xb6, 0x34, 0x3a, 0xba, 0x32, 0x32, 0x10, 0xb1, 0xb2, 0xb1, 0xb0, 0xba, 0xb9, 0x32, 0x90, 0x34, 0x3a, 0x90, 0xbb, 0xb7, 0x3a, 0x36, 0x72, 0x09, 0x40, 0xe3, 0x30, 0x36, 0xb6, 0xb7, 0x3b, 0x90, 0xbc, 0xb7, 0x3a, 0x10, 0xba, 0x37, 0x10, 0xb2, 0xb4, 0xb9, 0xb1, 0x37, 0xbb, 0x32, 0x39, 0x10, 0x11, 0x38, 0xb9, 0x34, 0xbb, 0x30, 0xba, 0x32, 0x11, 0x90, 0x34, 0x37, 0xb3, 0x37, 0xb9, 0xb6, 0x30, 0xba, 0xb4, 0x37, 0x37, 0x90, 0x30, 0xb1, 0xb7, 0x3a, 0x3a, 0x90, 0x30, 0x10, 0xba, 0x3c, 0xb8, 0x32, 0xb6, 0x04, 0x40, 0x23, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x20, 0x28, 0x6c, 0x61, 0x77, 0x2d, 0x61, 0x62, 0x69, 0x64, 0x69, 0x6e, 0x67, 0x29, 0x20, 0x68, 0x6f, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x79, 0x77, 0x61, 0x79, 0xae, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x83, 0xa6, 0x23, 0x00, 0x07, 0xf0, 0xa7, 0x2b, 0x9b, 0xa3, 0x03, 0x49, 0x33, 0x03, 0x19, 0x7b, 0x73, 0xa3, 0x0b, 0x4b, 0x73, 0x9b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0x88, 0x63, 0xb5, 0x41, 0xb0, 0x99, 0x6e, 0xb0, 0xe0, 0xbd, 0x79, 0x83, 0x65, 0xf4, 0xcd, 0x1b, 0x2c, 0xce, 0x6f, 0x6e, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xee, 0x31, 0xd7, 0xc1, 0x79, 0xf3, 0x74, 0x83, 0x96, 0xe4, 0xc1, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x16, 0x23, 0xa5, 0x0e, 0xda, 0x5e, 0xff, 0xdb, 0xa0, 0xc1, 0x30, 0xab, 0x35, 0x38, 0xba, 0x0e, 0x6e, 0xd0, 0x64, 0x34, 0x57, 0x6d, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0x52, 0x8c, 0xaa, 0x0d, 0x57, 0xd7, 0x86, 0xcf, 0x95, 0x0e, 0x1a, 0xe5, 0xf5, 0x3b, 0x7c, 0x39, 0x79, 0x38, 0xc5, 0x5a, 0x83, 0x66, 0x49, 0x99, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x9a, 0x25, 0x65, 0x6a, 0x00, 0x74, 0x82, 0x93, 0x2b, 0xa3, 0xa3, 0xcb, 0x6b, 0x81, 0x93, 0x4b, 0x73, 0xa3, 0x03, 0x09, 0x03, 0xb1, 0x0b, 0x9b, 0x2b, 0x03, 0xa1, 0x7b, 0x03, 0x09, 0x03, 0xa1, 0x0b, 0x73, 0x5b, 0x03, 0xa9, 0x9b, 0x4b, 0x73, 0x3b, 0x03, 0x59, 0x21, 0x2b, 0x0b, 0x63, 0x73, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0x66, 0x49, 0x99, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xbb, 0xd9, 0x51, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x4c, 0x30, 0xba, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0x66, 0x49, 0x99, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x02, 0x3e, 0x59, 0x59, 0x18, 0xdb, 0x06, 0xed, 0x33, 0x90, 0x1d, 0xb4, 0xa9, 0x1e, 0xb5, 0x41, 0xf3, 0xe0, 0x51, 0x1d, 0x4e, 0xb1, 0x05, 0xfc, 0xb9, 0xb2, 0xb2, 0x76, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3f, 0x38, 0xb9, 0xb7, 0xb6, 0x37, 0xba, 0x32, 0x10, 0xba, 0x3c, 0xb8, 0xb7, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0xee, 0x2d, 0x3f, 0x58, 0xfa, 0xe2, 0xbd, 0xe1, 0x2f, 0x9a, 0x0d, 0x96, 0xcd, 0x38, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0xa6, 0x60, 0x01, 0x5b, 0x0d, 0xda, 0x58, 0x86, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x63, 0x19, 0xa6, 0x01, 0x68, 0x20, 0x69, 0x41, 0xd9, 0xa2, 0xcb, 0x83, 0x2b, 0x03, 0xa1, 0xcb, 0x83, 0x2b, 0xeb, 0x02, 0xf9, 0x49, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x36, 0x10, 0xd5, 0x1a, 0xfe, 0x5c, 0x1a, 0x5c, 0x3c, 0x58, 0x36, 0xe3, 0xdc, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x31, 0x5a, 0xa9, 0x0d, 0x1a, 0x47, 0x8f, 0x3a, 0x3c, 0xf4, 0xb3, 0x41, 0x91, 0xd3, 0x7a, 0x78, 0x0b, 0x6d, 0x05, 0xfc, 0x37, 0xb7, 0x30, 0x77, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x4d, 0x92, 0x16, 0x14, 0xbb, 0xb4, 0xb9, 0x32, 0x10, 0xbb, 0xb0, 0xb9, 0xb2, 0xd4, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0xb9, 0xb2, 0x32, 0xb9, 0xd5, 0xa0, 0x31, 0x6a, 0xc0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xe0, 0xe4, 0xde, 0xda, 0xde, 0xe8, 0xca, 0x40, 0xec, 0xd2, 0xe6, 0xca, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x14, 0xae, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x0a, 0x04, 0xf2, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xcd, 0x6e, 0x47, 0x6d, 0x78, 0x5b, 0x67, 0x43, 0xe1, 0x6a, 0x05, 0xfc, 0x39, 0xb6, 0x37, 0x71, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0x51, 0x72, 0xc0, 0x06, 0xf0, 0x9e, 0xab, 0x83, 0x2b, 0x93, 0x33, 0x4b, 0x1b, 0x4b, 0x0b, 0x63, 0x03, 0x09, 0x93, 0x6b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x3a, 0x68, 0x6e, 0x0e, 0x70, 0xc3, 0x5f, 0x34, 0x1b, 0x3e, 0x58, 0xdd, 0xe0, 0xe4, 0x20, 0xb7, 0x41, 0x63, 0xcd, 0x59, 0x1b, 0x14, 0xb0, 0xf9, 0x1b, 0xb4, 0x5f, 0xfe, 0xb7, 0x41, 0x2b, 0xee, 0x7f, 0x6b, 0xd0, 0x7c, 0xc4, 0xd4, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x83, 0xd5, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xda, 0xd4, 0xff, 0xdb, 0xa0, 0x80, 0xcd, 0xdf, 0xf0, 0x2b, 0xd9, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xa3, 0xb5, 0xc6, 0x06, 0x65, 0x53, 0xfd, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x1e, 0x3c, 0x1e, 0xdc, 0x3d, 0x68, 0x53, 0xff, 0xaf, 0x83, 0xb6, 0xfd, 0x00, 0xd7, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0x4d, 0xfd, 0xbf, 0x0d, 0x6f, 0xeb, 0x0c, 0xce, 0x1e, 0xb4, 0xa9, 0xff, 0xd7, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xb4, 0xa9, 0xff, 0xb7, 0xe1, 0x6d, 0x9d, 0xc1, 0xe5, 0x83, 0x36, 0xf5, 0xff, 0xaa, 0x15, 0xf0, 0xe7, 0xd8, 0xde, 0xe0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe6, 0x25, 0x02, 0x1b, 0xc0, 0x77, 0xec, 0xcd, 0x6d, 0x0e, 0x84, 0xee, 0xee, 0x0d, 0xc4, 0x2e, 0x6c, 0xae, 0x6c, 0x6e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x92, 0x97, 0xf4, 0xa0, 0xd9, 0xed, 0xa8, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x53, 0x4a, 0x5b, 0x07, 0xcd, 0x6e, 0x47, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x9a, 0xdd, 0x8e, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x15, 0xc9, 0x8a, 0x83, 0xa6, 0x5d, 0xbc, 0xd6, 0xf0, 0x8b, 0xcb, 0x41, 0xe3, 0x35, 0x5e, 0xcd, 0x02, 0xfe, 0x1c, 0x5b, 0x58, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x16, 0x4b, 0x60, 0x03, 0x78, 0xcd, 0xb1, 0x85, 0xb5, 0x81, 0x84, 0x81, 0x9c, 0x85, 0xd1, 0x95, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x16, 0x92, 0xff, 0x1e, 0x34, 0xbb, 0x1d, 0xb5, 0x86, 0x3f, 0x97, 0x36, 0x58, 0xa5, 0xfe, 0x7b, 0xd0, 0xec, 0x76, 0x54, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0xd9, 0xed, 0xa8, 0x0d, 0x9f, 0xd8, 0xac, 0x41, 0x61, 0xa8, 0xba, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0x7c, 0x3e, 0x6a, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0x9b, 0x71, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0x48, 0x56, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0xf5, 0xdc, 0xc3, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0x60, 0x05, 0xfd, 0x70, 0x1b, 0x3e, 0x77, 0xd9, 0xa0, 0x79, 0x0a, 0xa9, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0xc0, 0xc2, 0xf9, 0xa0, 0x4d, 0xe7, 0xbf, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x5a, 0x07, 0x91, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x34, 0x3f, 0x22, 0x75, 0xd0, 0xf6, 0xfa, 0xdf, 0x41, 0x33, 0x26, 0x52, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x2d, 0x15, 0xa9, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xb7, 0xe8, 0xd3, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3e, 0x58, 0xcf, 0x3d, 0xbc, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x56, 0xd0, 0x0f, 0xd7, 0xe1, 0x14, 0x6b, 0x01, 0xdf, 0xed, 0x2d, 0x0c, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x40, 0x93, 0xa4, 0x05, 0xc5, 0x2e, 0x6c, 0xae, 0x0c, 0x84, 0x2e, 0x0c, 0xae, 0x2c, 0xb5, 0xe1, 0x6d, 0x9d, 0x01, 0x9f, 0xae, 0x0c, 0x8f, 0x6e, 0x16, 0xf0, 0xe7, 0xd8, 0xca, 0xee, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x66, 0xd9, 0x02, 0x1b, 0xc0, 0xff, 0xac, 0x8c, 0x0e, 0x24, 0x0c, 0x2f, 0x6d, 0x0e, 0x24, 0xcd, 0x0d, 0xc4, 0x2e, 0x6c, 0xae, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x44, 0xd6, 0xd6, 0xe1, 0x87, 0x9a, 0x0d, 0xda, 0xcd, 0x8e, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x83, 0xc6, 0xe7, 0xa3, 0xd6, 0xe0, 0x3c, 0xd8, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x68, 0xbd, 0x57, 0xea, 0xa0, 0x69, 0xf4, 0xa8, 0x0d, 0x5a, 0xdb, 0x14, 0x3b, 0x68, 0xa5, 0x6c, 0x6b, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0xdc, 0xa0, 0xd9, 0xed, 0xa8, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0xd3, 0xe1, 0x66, 0x6b, 0x70, 0x0c, 0x37, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0x1e, 0x94, 0xdc, 0x20, 0x00, 0xd9, 0x0e, 0x5a, 0x64, 0xce, 0x3a, 0x68, 0xbd, 0x14, 0x70, 0x83, 0x82, 0x60, 0x76, 0x83, 0x96, 0xc3, 0xa3, 0x36, 0x28, 0x28, 0x32, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0xc2, 0x6c, 0xeb, 0xa0, 0x39, 0x77, 0xb3, 0x35, 0x68, 0x39, 0x3c, 0x6a, 0xc3, 0x27, 0x36, 0x1b, 0xb4, 0x96, 0x6e, 0xb6, 0x41, 0x90, 0x9e, 0x6e, 0xf8, 0x72, 0x72, 0x0d, 0x82, 0xd8, 0x74, 0x83, 0x52, 0x42, 0x7c, 0xe3, 0xf9, 0x41, 0x43, 0x00, 0x52, 0x6b, 0x10, 0x32, 0xa7, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0xcf, 0x37, 0x5c, 0x52, 0x6b, 0x3c, 0x3f, 0x68, 0x39, 0x3c, 0xaa, 0x5a, 0x01, 0x7f, 0xee, 0x2e, 0x8c, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0xe2, 0x34, 0xb0, 0x01, 0x7c, 0xc9, 0xca, 0xcc, 0xca, 0xe4, 0xe4, 0xca, 0xc8, 0x40, 0x56, 0xe6, 0xd8, 0xc2, 0xe0, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xa5, 0xe8, 0xc0, 0x06, 0xa1, 0x5f, 0xb2, 0xc1, 0x59, 0x48, 0xe1, 0xa0, 0xb1, 0xc4, 0xc0, 0x83, 0xf6, 0x27, 0xa4, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0xfb, 0xb3, 0x81, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0xb4, 0x0e, 0x22, 0xb5, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0xf9, 0x11, 0xa9, 0x0d, 0x1a, 0x47, 0x8f, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x9c, 0x2e, 0x32, 0x0e, 0x16, 0x46, 0x0c, 0x77, 0xd0, 0x8c, 0x89, 0xd4, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0x96, 0x43, 0x32, 0xcd, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x4b, 0x45, 0x6a, 0x0d, 0x16, 0x84, 0x2c, 0xad, 0xe1, 0x41, 0xc9, 0x0d, 0x4e, 0x47, 0x22, 0x07, 0x0b, 0x23, 0x86, 0x0f, 0x5a, 0x79, 0x91, 0x6a, 0x35, 0x68, 0x0b, 0x64, 0x65, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0x2d, 0x90, 0x95, 0x06, 0xf0, 0x23, 0x2b, 0x4b, 0x33, 0xcb, 0x03, 0x81, 0x93, 0x4b, 0x73, 0xa3, 0x33, 0xdb, 0xa0, 0xb4, 0xb7, 0x5c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5f, 0x38, 0xb9, 0xb4, 0x37, 0xb9, 0x34, 0xba, 0x3c, 0x10, 0xb6, 0x32, 0xbb, 0x32, 0xb6, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x70, 0x72, 0xe9, 0xe1, 0x87, 0x9a, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x89, 0x32, 0xb5, 0x36, 0x7c, 0xfd, 0xb2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x7a, 0x2e, 0x3d, 0x20, 0x20, 0x7e, 0x26, 0x28, 0x25, 0x61, 0x20, 0x31, 0xa9, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x7a, 0x37, 0x6b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3a, 0x50, 0x50, 0xe6, 0xd8, 0xde, 0xce, 0x40, 0xfc, 0xb6, 0x7c, 0x4a, 0xc2, 0x78, 0xba, 0x52, 0x40, 0x62, 0x52, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xa0, 0x61, 0xf5, 0xc0, 0x0d, 0xce, 0x85, 0x0b, 0x6b, 0xd0, 0x16, 0xc8, 0xca, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xad, 0x79, 0x07, 0x76, 0x70, 0x08, 0xf5, 0x3b, 0x28, 0xe0, 0xe3, 0x0f, 0xa7, 0xd8, 0x1a, 0x34, 0xb1, 0x16, 0xb8, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0xc4, 0x5a, 0x60, 0x03, 0xf0, 0x40, 0x17, 0x06, 0x57, 0x06, 0x02, 0x27, 0x57, 0x46, 0x47, 0x97, 0xd7, 0x02, 0x27, 0x97, 0xe6, 0x46, 0xb7, 0xe1, 0x17, 0xa5, 0x0d, 0xda, 0xcd, 0x8e, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x27, 0x3d, 0xd1, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xd6, 0x68, 0xa7, 0x6f, 0xb0, 0x96, 0x3b, 0x7d, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x9a, 0x25, 0x65, 0x6a, 0x0d, 0x6f, 0xeb, 0x1c, 0xb4, 0x24, 0x1e, 0x55, 0x87, 0x53, 0x6c, 0x01, 0x7f, 0x8e, 0x2d, 0xad, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0xa2, 0x42, 0xb0, 0x01, 0xe8, 0x48, 0x23, 0x2b, 0x73, 0xa3, 0x4b, 0x1b, 0x0b, 0x63, 0x03, 0xa1, 0x7b, 0x03, 0x99, 0x2b, 0x2b, 0x93, 0xfb, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0x90, 0x8c, 0x14, 0x77, 0xd0, 0xb0, 0x37, 0xe0, 0x86, 0xbf, 0x68, 0x36, 0x68, 0x76, 0x3b, 0xea, 0x20, 0xa5, 0x28, 0xee, 0x70, 0x8a, 0x2d, 0xf0, 0x75, 0xf3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xf0, 0x75, 0x73, 0x03, 0x78, 0xc2, 0xc9, 0x95, 0xd1, 0xd1, 0xe5, 0xc1, 0xc9, 0xa5, 0xb9, 0xd1, 0x95, 0xc9, 0x6d, 0x50, 0x4a, 0x88, 0xaf, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0x2c, 0xe0, 0xdf, 0xa5, 0xb9, 0x95, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xed, 0xc6, 0x08, 0x6e, 0xf8, 0x60, 0x7e, 0x0d, 0x82, 0xcd, 0x74, 0x83, 0xf5, 0xee, 0xcc, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x60, 0xfa, 0xb9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x4e, 0x3e, 0xa8, 0x1b, 0xac, 0x17, 0x69, 0x5e, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xa7, 0x2d, 0xd4, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0x68, 0x74, 0xd3, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xd0, 0xa9, 0xa9, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x56, 0xa5, 0x9a, 0x0e, 0x96, 0xc5, 0x3d, 0xaf, 0xe1, 0x73, 0xa5, 0x0d, 0x56, 0x23, 0x71, 0xaf, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0x42, 0xbf, 0xe4, 0x60, 0xa5, 0x17, 0xfb, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xde, 0xf0, 0xef, 0xfc, 0x1a, 0xb4, 0x1b, 0x23, 0x58, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x96, 0x86, 0x71, 0x6f, 0xb0, 0x30, 0xee, 0xf9, 0xa0, 0x1d, 0x29, 0xc1, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x82, 0xd1, 0xe4, 0xa0, 0xed, 0x2b, 0xc1, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xda, 0xe6, 0x6b, 0x3a, 0x58, 0x03, 0xeb, 0xbd, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x92, 0x0f, 0xbe, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x83, 0x46, 0xa7, 0x04, 0x6b, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xb6, 0x1d, 0x9b, 0x0e, 0x5a, 0x29, 0x13, 0x5c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x81, 0xcb, 0xa6, 0x0d, 0x92, 0x0c, 0x81, 0x5b, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x20, 0xb4, 0xda, 0x0e, 0xda, 0xbe, 0x12, 0x5c, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x20, 0x38, 0x10, 0x0e, 0xda, 0xbe, 0x12, 0x5c, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0x97, 0xf9, 0xde, 0x60, 0x99, 0x14, 0xf8, 0x41, 0x3b, 0x52, 0x82, 0xad, 0x80, 0x3f, 0x16, 0x06, 0x57, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xb4, 0x08, 0x28, 0xb8, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x22, 0xd6, 0x6f, 0x50, 0x66, 0xe9, 0x1e, 0x34, 0x87, 0x26, 0x78, 0xd0, 0x8e, 0x94, 0xe0, 0xe1, 0x14, 0xeb, 0x70, 0x8a, 0x6d, 0x50, 0x96, 0x61, 0xaf, 0xe1, 0xcf, 0xa5, 0x0d, 0x9a, 0x50, 0x97, 0x3a, 0x58, 0x36, 0xe3, 0x3c, 0xcb, 0x2c, 0xe0, 0x93, 0xbd, 0x9d, 0x95, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x0c, 0x85, 0xc5, 0x0d, 0xff, 0xce, 0xaf, 0x41, 0x8b, 0x80, 0x82, 0xb5, 0xc1, 0xd1, 0x86, 0x6f, 0x0d, 0x4e, 0x0e, 0x72, 0x0b, 0x78, 0x77, 0x6f, 0x7a, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0x2d, 0x4d, 0xc1, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xed, 0x6b, 0x09, 0x6e, 0x10, 0xa6, 0x63, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x56, 0x92, 0x04, 0xd7, 0x90, 0x01, 0x1f, 0x9c, 0x0e, 0x9e, 0x2e, 0xac, 0x0d, 0x6f, 0xdc, 0x1d, 0xb4, 0x99, 0x23, 0xb8, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x7d, 0x2d, 0xc1, 0x0d, 0xc2, 0x74, 0x6c, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x4a, 0x92, 0xe0, 0x1a, 0x32, 0xe0, 0x83, 0xd3, 0xe1, 0x74, 0x6d, 0x78, 0xe3, 0xee, 0xa0, 0xf9, 0x1f, 0xc1, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xed, 0x6b, 0x09, 0x6e, 0x10, 0xa6, 0x63, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x56, 0x92, 0x04, 0xd7, 0x90, 0x01, 0x1f, 0x9c, 0x0e, 0x9e, 0x8e, 0xa8, 0x0d, 0x6f, 0xdc, 0x1d, 0xb4, 0x54, 0x24, 0xb8, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x7d, 0x2d, 0xc1, 0x0d, 0xc2, 0x74, 0xec, 0xa0, 0x3d, 0x22, 0xc1, 0x0d, 0x6f, 0xdc, 0x1d, 0x34, 0x29, 0x24, 0xd8, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0x4d, 0x53, 0x70, 0xc3, 0x5f, 0x34, 0x1b, 0x34, 0x3a, 0x25, 0xb8, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0xad, 0x37, 0xc1, 0x83, 0x43, 0x4c, 0xc7, 0xe0, 0xf1, 0xc1, 0x69, 0x26, 0x6f, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x11, 0xd6, 0x35, 0x28, 0x26, 0x31, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0x4b, 0xf2, 0xc1, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0xed, 0x7d, 0x09, 0x6e, 0x70, 0xda, 0x3b, 0xd9, 0x20, 0xa4, 0x53, 0x5b, 0xc3, 0xe7, 0x4a, 0x1b, 0xb4, 0xaa, 0x26, 0xb8, 0x41, 0x23, 0xce, 0x82, 0x1b, 0xb4, 0x0c, 0x3b, 0x75, 0x70, 0x5c, 0x3c, 0x39, 0x38, 0x2e, 0x9e, 0x1c, 0xb4, 0x7b, 0x2c, 0xb8, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x26, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xe2, 0xdf, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x3c, 0x78, 0x3a, 0x38, 0x3d, 0x38, 0x3c, 0x78, 0x3a, 0x38, 0x3d, 0x38, 0x7c, 0xd0, 0xee, 0xb1, 0x60, 0xad, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0x71, 0x77, 0xd0, 0x56, 0x9e, 0xe0, 0x1a, 0x1e, 0x94, 0xdc, 0x60, 0x91, 0x22, 0xde, 0x86, 0xb7, 0x75, 0x0e, 0x5a, 0xfb, 0x16, 0x6c, 0xc3, 0xdb, 0x3a, 0x07, 0xed, 0x1e, 0x0b, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x6d, 0x61, 0xf9, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x70, 0x13, 0xdd, 0xa0, 0x6c, 0xaa, 0x5f, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0xa7, 0x99, 0xbc, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0xeb, 0xe1, 0x82, 0x6d, 0x50, 0xc2, 0x63, 0xae, 0x41, 0x2b, 0xee, 0x82, 0x6d, 0xd0, 0x9c, 0xba, 0xe0, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0xe7, 0x56, 0xc7, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x1d, 0xb4, 0x03, 0x26, 0x78, 0xb0, 0x86, 0xa8, 0x75, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x8f, 0xb0, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x92, 0x0f, 0x7e, 0x70, 0x88, 0xe9, 0x18, 0xbc, 0x3e, 0x68, 0x15, 0x5f, 0x70, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x1a, 0x5d, 0xa7, 0x1a, 0x1c, 0x3e, 0x68, 0xf4, 0x60, 0x70, 0x0d, 0xbf, 0x92, 0xad, 0xe1, 0xdf, 0x9c, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xcb, 0xfc, 0x82, 0x6d, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0xa0, 0xb1, 0x85, 0xc1, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0xd3, 0x0e, 0x83, 0x1b, 0xde, 0xd6, 0x19, 0x3c, 0x1d, 0x9c, 0x3e, 0x68, 0x6c, 0x61, 0xb0, 0x36, 0x68, 0x4e, 0x5d, 0x70, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x23, 0x4b, 0x73, 0x37, 0x7c, 0x90, 0xb3, 0x41, 0xeb, 0x0d, 0x83, 0x1b, 0xb4, 0x54, 0x31, 0x78, 0xd0, 0x36, 0xc4, 0xe0, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x08, 0xeb, 0x1a, 0x14, 0x93, 0x98, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x56, 0xd5, 0x04, 0x37, 0x68, 0x19, 0x76, 0x6a, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x34, 0x8c, 0x7b, 0x83, 0x30, 0x1d, 0x3b, 0x68, 0xb4, 0x58, 0xf0, 0xe0, 0xb8, 0x78, 0xb2, 0x41, 0x43, 0x1b, 0x83, 0xad, 0xe1, 0xdf, 0x9c, 0x0d, 0x1a, 0xad, 0x17, 0xdc, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xe0, 0xf1, 0xe0, 0xe9, 0xe0, 0xf4, 0xe0, 0xf0, 0x41, 0x6b, 0x2b, 0x83, 0x6b, 0xf8, 0x37, 0x67, 0xc3, 0x63, 0x32, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x28, 0xfe, 0xdd, 0xa0, 0xa8, 0x14, 0x5f, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x83, 0xa7, 0x07, 0xed, 0xc5, 0x0c, 0xb6, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x26, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xe2, 0xdf, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xd0, 0x1e, 0xcc, 0x60, 0xad, 0xc1, 0x39, 0x7f, 0x69, 0x0d, 0x6f, 0xdc, 0x1d, 0xb4, 0xbb, 0x25, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xeb, 0x6d, 0x37, 0x28, 0x2a, 0xc5, 0x37, 0x68, 0xf6, 0x66, 0xf0, 0xa0, 0xa1, 0x9f, 0xc1, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0xb4, 0x90, 0x33, 0xb8, 0xe1, 0x83, 0x9c, 0x35, 0x3c, 0xc2, 0xba, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x55, 0x35, 0xc1, 0x0d, 0x5a, 0x86, 0x9d, 0xda, 0xa0, 0x41, 0x93, 0xc1, 0x35, 0x7c, 0xae, 0x74, 0xd0, 0x9c, 0xc9, 0x60, 0x07, 0xad, 0xad, 0x0c, 0x6e, 0xd0, 0x2a, 0xcb, 0xe0, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0xd1, 0x7a, 0xc1, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x0f, 0x1e, 0x0f, 0x9e, 0x0e, 0x4e, 0x1f, 0xb4, 0x0f, 0x33, 0xb8, 0x41, 0x1b, 0x33, 0x83, 0x1b, 0xb4, 0xab, 0x33, 0xb8, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x26, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xe2, 0xdf, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xd0, 0xe6, 0xd6, 0x60, 0xad, 0xc1, 0x39, 0x7f, 0x69, 0x0d, 0x6f, 0xdc, 0x1d, 0xb4, 0x4d, 0x27, 0xb8, 0x06, 0xab, 0x7a, 0x95, 0x36, 0x28, 0xeb, 0x6d, 0x37, 0x28, 0x2a, 0xc5, 0x37, 0x68, 0xf6, 0x66, 0x70, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf5, 0xb6, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x34, 0xf5, 0x33, 0x78, 0xd0, 0x20, 0xd9, 0xe0, 0x41, 0x03, 0x4a, 0x83, 0x07, 0xcd, 0xa9, 0x0b, 0xae, 0x80, 0x4f, 0x96, 0x16, 0xc6, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0x66, 0x28, 0x05, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0xbc, 0xb3, 0x34, 0x72, 0x83, 0x42, 0x30, 0x75, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0x7c, 0x3f, 0x38, 0x1d, 0x12, 0x6e, 0x78, 0x50, 0x72, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x26, 0x18, 0xdd, 0xf0, 0xa0, 0xe4, 0x86, 0x67, 0x26, 0x0f, 0x02, 0x90, 0x6d, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x74, 0x4a, 0x9f, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xce, 0x3c, 0x78, 0x07, 0x4d, 0x9a, 0x09, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0x9f, 0x2b, 0x6d, 0x70, 0xaa, 0x17, 0xdd, 0xa0, 0x79, 0xbe, 0xc1, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x38, 0xd7, 0xe3, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x0a, 0x8a, 0xcc, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xe3, 0x7a, 0x83, 0xb5, 0x41, 0xd1, 0x41, 0xbb, 0xc1, 0x58, 0x10, 0xdb, 0xa0, 0x35, 0xca, 0xc1, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x38, 0xd7, 0xe3, 0x6d, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xe0, 0x5c, 0x8f, 0xd7, 0x06, 0x45, 0x07, 0xed, 0x06, 0xa3, 0xc7, 0x70, 0x83, 0xd6, 0x28, 0x07, 0xd7, 0x70, 0x49, 0x6d, 0x70, 0xd8, 0xef, 0x58, 0x83, 0x76, 0x8f, 0x05, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0x70, 0xae, 0xc7, 0x6b, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa3, 0x77, 0xdc, 0x06, 0xa5, 0xa8, 0x66, 0x07, 0x0d, 0x4e, 0x0e, 0xce, 0xb2, 0xe1, 0x2f, 0x9a, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x99, 0x60, 0xf4, 0xa0, 0x31, 0xc7, 0xc1, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0x76, 0x8f, 0x05, 0xd7, 0x60, 0xbd, 0x3b, 0xf3, 0x06, 0x4b, 0xaa, 0x93, 0x36, 0x68, 0x72, 0x72, 0x70, 0xc3, 0x2f, 0x2e, 0x1b, 0x9e, 0xb8, 0xdb, 0x60, 0xb5, 0xea, 0xec, 0x41, 0x59, 0xe7, 0xb9, 0x06, 0x6d, 0xe3, 0x08, 0x6e, 0xb0, 0xa4, 0x3a, 0x69, 0x83, 0x26, 0x27, 0x07, 0x37, 0xfc, 0xe2, 0xb2, 0xe1, 0x89, 0xbb, 0x83, 0xf5, 0x44, 0xe9, 0x6b, 0xd0, 0xde, 0x8e, 0xe0, 0x06, 0x4b, 0xaa, 0x93, 0x36, 0x68, 0x72, 0x72, 0x70, 0xc3, 0x2f, 0x2e, 0x1b, 0x9e, 0xb8, 0xdb, 0x60, 0x59, 0x24, 0xed, 0x1a, 0x7e, 0x84, 0x39, 0x68, 0x91, 0x55, 0xf0, 0xa0, 0xac, 0xf3, 0x5c, 0x83, 0xf5, 0x22, 0xcd, 0x1b, 0x2c, 0xa9, 0x4e, 0xda, 0xa0, 0xc9, 0xc9, 0xc1, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xe2, 0x6e, 0x83, 0x65, 0x91, 0xb4, 0x1b, 0x2c, 0x08, 0xa4, 0x3d, 0x28, 0xeb, 0x3c, 0xd7, 0xa0, 0xe9, 0x20, 0xc1, 0x0d, 0x96, 0x54, 0x27, 0x6d, 0xd0, 0xe4, 0xe4, 0xe0, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x71, 0xb7, 0xc1, 0x6a, 0xd5, 0xd9, 0x0d, 0x16, 0xc4, 0xcd, 0x6e, 0xb0, 0x20, 0x6e, 0xf6, 0xa0, 0xac, 0xf3, 0x5c, 0x83, 0x66, 0x7e, 0x04, 0x37, 0x58, 0x52, 0x9d, 0xb4, 0x41, 0x93, 0x93, 0x83, 0x1b, 0x7e, 0x71, 0xd9, 0xf0, 0xc4, 0xdd, 0x06, 0xab, 0x55, 0x67, 0x37, 0x58, 0x54, 0x01, 0x77, 0xb0, 0x46, 0x05, 0x6e, 0x0d, 0x5a, 0x24, 0x12, 0xdc, 0x60, 0x49, 0x75, 0xd2, 0x06, 0x4d, 0x4e, 0x0e, 0x6e, 0xf8, 0xc5, 0x65, 0xc3, 0x13, 0x77, 0x07, 0x0d, 0x58, 0x0f, 0xae, 0x86, 0xcf, 0x95, 0x36, 0x68, 0x25, 0x49, 0xf0, 0xe0, 0x10, 0xd3, 0xb1, 0xc1, 0x92, 0xea, 0xa4, 0x0d, 0x9a, 0x9c, 0x1c, 0xdc, 0xf0, 0x8b, 0xcb, 0x86, 0x27, 0xee, 0x36, 0x58, 0xfe, 0x3c, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x86, 0xfd, 0x76, 0xd0, 0x64, 0xbd, 0x60, 0x6b, 0xd0, 0x7c, 0xc4, 0xd4, 0x06, 0x45, 0x07, 0xed, 0x80, 0x37, 0xf6, 0x86, 0x6f, 0xd0, 0x1a, 0xe5, 0xe0, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xb4, 0x7b, 0x2c, 0xb8, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x76, 0x8f, 0x05, 0xdb, 0x60, 0x49, 0x75, 0xd2, 0x06, 0x4d, 0x4e, 0x0e, 0x6e, 0x70, 0xce, 0x5f, 0xda, 0x60, 0x55, 0x83, 0xf0, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x1d, 0x93, 0xfb, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x51, 0x34, 0xed, 0x41, 0x59, 0xe7, 0xb9, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xe3, 0x43, 0x7b, 0x50, 0xd6, 0x79, 0xb6, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xaa, 0x17, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0xf5, 0x70, 0xc1, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xa1, 0x7e, 0xb0, 0x83, 0xb2, 0xce, 0x73, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0xc3, 0x13, 0x77, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x82, 0x68, 0x79, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0x6f, 0xeb, 0x0c, 0x9e, 0x1e, 0xb4, 0x1e, 0x2e, 0x58, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0x7a, 0xb8, 0xe0, 0x86, 0xb7, 0x75, 0x0e, 0x5a, 0x0b, 0x17, 0xac, 0x35, 0x68, 0x19, 0x76, 0x6a, 0x83, 0xa2, 0x83, 0x76, 0x83, 0x16, 0xea, 0x07, 0x37, 0x68, 0x8d, 0x72, 0x70, 0x83, 0x96, 0xee, 0x07, 0x37, 0x58, 0x52, 0x9d, 0xb4, 0x41, 0x93, 0x93, 0x83, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x41, 0xfb, 0xfa, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0x3c, 0xa5, 0x3d, 0x28, 0xeb, 0x3c, 0x0f, 0x5a, 0x7c, 0xa4, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x9e, 0xb8, 0x3b, 0x68, 0xf5, 0x7d, 0xf0, 0xa0, 0x35, 0x07, 0xc2, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xed, 0x6b, 0x09, 0x1e, 0x1c, 0x62, 0x3a, 0x36, 0x28, 0x3a, 0x68, 0x37, 0x68, 0xa1, 0x7e, 0x70, 0x83, 0xd6, 0x28, 0x07, 0x37, 0x68, 0xe9, 0x7e, 0x70, 0x83, 0x25, 0xd5, 0x49, 0x1b, 0x34, 0x39, 0x39, 0xb8, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0x35, 0x08, 0xaf, 0xe1, 0x17, 0x97, 0x35, 0x3c, 0x8b, 0x77, 0xb0, 0x1a, 0x80, 0x64, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x22, 0x68, 0xdb, 0xa0, 0xdd, 0xf7, 0xc1, 0x35, 0x3c, 0x8b, 0x77, 0xd0, 0x2c, 0xe5, 0x53, 0x6b, 0x78, 0x16, 0xef, 0xa0, 0xed, 0xcb, 0xa7, 0x0e, 0x5a, 0x73, 0x20, 0x5c, 0x83, 0x76, 0x09, 0x06, 0x37, 0x28, 0x3a, 0x68, 0x07, 0xbc, 0xb1, 0x37, 0x7d, 0x83, 0xd6, 0x28, 0x07, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x9d, 0xd2, 0xa7, 0x83, 0x26, 0xeb, 0x05, 0x37, 0x58, 0x52, 0x9d, 0xb4, 0x41, 0x93, 0x93, 0x83, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x55, 0x83, 0xf0, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x1d, 0x93, 0xfb, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xd9, 0x2e, 0xed, 0x06, 0xcb, 0x51, 0x68, 0x0f, 0xca, 0x3a, 0xcf, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x3a, 0x7e, 0xd9, 0x83, 0xb2, 0xce, 0xb3, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xa3, 0x49, 0x84, 0xb5, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x55, 0x35, 0xc1, 0x83, 0x43, 0x4c, 0xc7, 0x06, 0x45, 0x07, 0xed, 0x06, 0x8d, 0x26, 0x11, 0x6e, 0xd0, 0x1a, 0xe5, 0xe0, 0x06, 0x8d, 0x2f, 0x11, 0x6e, 0xb0, 0xa4, 0x3a, 0x69, 0x83, 0x26, 0x27, 0x07, 0x37, 0xfc, 0xe2, 0xb2, 0xc1, 0xaa, 0x06, 0xe1, 0x0d, 0x96, 0x2a, 0xb9, 0x1f, 0x34, 0xd0, 0x45, 0xb8, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0xbd, 0x2f, 0xc1, 0x83, 0x43, 0x4c, 0xc7, 0x06, 0x4b, 0xaa, 0x93, 0x36, 0x68, 0x72, 0x72, 0x70, 0xc3, 0x2f, 0x2e, 0x1b, 0x9e, 0xb8, 0xdb, 0x60, 0xbd, 0xf4, 0xdb, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0xac, 0xa1, 0xc8, 0xdb, 0x60, 0xe1, 0xe9, 0xf9, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0x29, 0x2d, 0x78, 0x83, 0x46, 0xeb, 0x05, 0x37, 0x68, 0x3d, 0x7f, 0xb0, 0x5a, 0x83, 0x96, 0x89, 0x05, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb7, 0xba, 0x76, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x35, 0x14, 0x79, 0x1b, 0x2c, 0x3c, 0x3d, 0x5f, 0xc3, 0x2f, 0x2e, 0x1b, 0x24, 0xa5, 0x05, 0x6f, 0x90, 0x08, 0x17, 0x7c, 0xd0, 0x64, 0xbd, 0x60, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x70, 0xb4, 0xd6, 0xd8, 0xa0, 0x6c, 0x7a, 0x3f, 0x68, 0x70, 0x72, 0xf0, 0xa0, 0xc9, 0x7a, 0xc1, 0x35, 0x58, 0x52, 0x9d, 0xb4, 0x41, 0x93, 0x93, 0x83, 0x1b, 0x7e, 0x71, 0xd9, 0xf0, 0xc4, 0xdd, 0x06, 0xcb, 0x22, 0x69, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x8d, 0xfe, 0x11, 0xd6, 0x06, 0x45, 0x07, 0xed, 0x06, 0x2d, 0xd4, 0x0f, 0x6e, 0xd0, 0x1a, 0xe5, 0xe0, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xb4, 0x46, 0x39, 0xb8, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x28, 0x5b, 0x50, 0x0f, 0x1a, 0x5f, 0x24, 0x3c, 0x68, 0xb2, 0x5e, 0x70, 0x0d, 0xda, 0x3d, 0x16, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0xb4, 0xb7, 0x96, 0x75, 0xd0, 0x88, 0xbc, 0xe0, 0x41, 0x93, 0xf5, 0x82, 0x6d, 0xb0, 0xa4, 0x3a, 0x69, 0x83, 0x26, 0x27, 0x07, 0x37, 0xfc, 0xe2, 0xb2, 0xc1, 0x82, 0xf6, 0xf5, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x4a, 0xf9, 0xf5, 0x83, 0x16, 0x1f, 0xa9, 0xd6, 0xf0, 0x8b, 0xcb, 0x86, 0x27, 0xee, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xeb, 0xcf, 0x68, 0x0f, 0xda, 0x97, 0x24, 0xec, 0xa0, 0x35, 0x07, 0xc2, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x6d, 0xd0, 0x09, 0x1e, 0x1c, 0x62, 0x3a, 0x0e, 0x9a, 0x9e, 0x21, 0x5c, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x26, 0x9e, 0xe0, 0xc1, 0x21, 0xa6, 0xe3, 0xa0, 0xe9, 0x19, 0xc2, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xcb, 0x65, 0xbe, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x2c, 0xa9, 0x4e, 0xda, 0xa0, 0xc9, 0xc9, 0xc1, 0x0d, 0x0a, 0x82, 0xd9, 0x0d, 0x5a, 0x0f, 0x17, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf5, 0xb6, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x2c, 0x8b, 0xa4, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0x22, 0x4f, 0x0f, 0x5a, 0x0f, 0x17, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x75, 0x6c, 0xdb, 0xa0, 0xa8, 0x14, 0xdf, 0x60, 0x59, 0x24, 0xed, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0x5c, 0x7f, 0x7a, 0xd0, 0x7a, 0xb8, 0xe0, 0x06, 0x0b, 0x1d, 0xde, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x8d, 0x7a, 0x7a, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x93, 0x0f, 0xea, 0x41, 0xeb, 0xe1, 0x82, 0x1d, 0x94, 0x75, 0x9e, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x36, 0x0b, 0xf8, 0x64, 0x6f, 0x6c, 0xe5, 0x86, 0xbf, 0x68, 0x36, 0x68, 0xc0, 0x52, 0x70, 0xc3, 0x27, 0x36, 0x1b, 0x34, 0x87, 0x1a, 0xb6, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0xa2, 0xe3, 0xd4, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0x0a, 0xc1, 0xd4, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x12, 0xb1, 0x7e, 0x83, 0x65, 0x33, 0xce, 0x07, 0x65, 0xa4, 0xed, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0xde, 0xa0, 0x10, 0x4c, 0xdd, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x11, 0xeb, 0x37, 0xfc, 0x50, 0x73, 0xd0, 0x1c, 0x9a, 0x60, 0x1b, 0x1e, 0x94, 0x5c, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0xe7, 0x60, 0x69, 0xe5, 0xe8, 0xc1, 0xa1, 0x97, 0x6f, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0x59, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0x78, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xf8, 0xa0, 0xc1, 0x73, 0xc2, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x7c, 0xd0, 0x78, 0x3b, 0x61, 0x07, 0xed, 0x48, 0x09, 0x6e, 0x70, 0xb4, 0xe1, 0x5b, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0x78, 0xc0, 0xa3, 0x2b, 0xd3, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xf6, 0x23, 0x05, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0xcd, 0x10, 0x14, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x66, 0x09, 0x0a, 0x6b, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0x4c, 0x50, 0xb8, 0xe1, 0x2f, 0x9a, 0x0d, 0x9a, 0xc1, 0x27, 0xdc, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x04, 0xf9, 0xd8, 0x0d, 0x1a, 0x47, 0x8f, 0x3a, 0x68, 0x56, 0x83, 0x6a, 0x0d, 0x0f, 0x4a, 0x6e, 0x78, 0x66, 0x72, 0x83, 0x05, 0x72, 0x4f, 0x1b, 0x14, 0x82, 0xa9, 0x07, 0xcb, 0x66, 0x9c, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0xff, 0x50, 0x5d, 0xc3, 0x1b, 0x77, 0x07, 0xed, 0xf0, 0x08, 0xb6, 0x41, 0x90, 0x9e, 0x6e, 0xd0, 0xc0, 0xc8, 0xd4, 0x1a, 0xac, 0x77, 0x67, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0xeb, 0x3f, 0x54, 0x0f, 0x9a, 0xd5, 0xa0, 0x5a, 0x83, 0xf5, 0x22, 0xcd, 0x07, 0x8d, 0x90, 0x14, 0xae, 0x41, 0x03, 0x8b, 0x53, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0xfd, 0x87, 0xea, 0x1a, 0x94, 0xf0, 0x98, 0x1b, 0xb4, 0x7f, 0x39, 0xb5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xc6, 0xdd, 0x41, 0xeb, 0x49, 0x82, 0x07, 0x8d, 0xa5, 0x4e, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x86, 0xfd, 0x05, 0x37, 0x68, 0x6b, 0x72, 0xea, 0xa0, 0xcd, 0xe1, 0xb0, 0xd6, 0xa0, 0x0d, 0xcf, 0xa9, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x0f, 0x2d, 0xcd, 0x3d, 0x68, 0x72, 0x39, 0x6c, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0xcb, 0x7b, 0x73, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0x1a, 0xa2, 0xba, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x0d, 0x9a, 0xce, 0x29, 0xec, 0xa0, 0x21, 0x39, 0xaa, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0xbc, 0xad, 0x33, 0x38, 0xbc, 0x41, 0xc3, 0x3d, 0x85, 0x6d, 0x50, 0x18, 0xaa, 0xae, 0xe1, 0x8d, 0xbb, 0x83, 0xd6, 0xd6, 0x04, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x2d, 0x7d, 0x11, 0x0e, 0x1e, 0x1f, 0xb4, 0x76, 0x54, 0xb8, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0xc3, 0x42, 0x85, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0xa0, 0x4d, 0xa7, 0xc2, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x23, 0x51, 0x85, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0x4d, 0xa7, 0xc2, 0x83, 0xb2, 0xce, 0x73, 0x0d, 0x9a, 0x8f, 0x98, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xf2, 0xc2, 0xc8, 0x83, 0x26, 0x97, 0xc3, 0x36, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x06, 0xcd, 0x77, 0x15, 0xb6, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0x91, 0xbd, 0xe5, 0x1b, 0xfe, 0xa2, 0x59, 0xc3, 0xe7, 0x4a, 0x07, 0x6d, 0x3b, 0x09, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x9a, 0x8f, 0x98, 0x1a, 0x3c, 0x3e, 0x68, 0x4f, 0xac, 0x70, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0xc6, 0xd8, 0x0a, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0x63, 0x6c, 0x85, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0xc6, 0x56, 0xd8, 0x06, 0x85, 0xa1, 0xea, 0x06, 0x2d, 0x75, 0x70, 0x6c, 0xb0, 0xa4, 0x3a, 0x69, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x6f, 0xd0, 0x5e, 0x59, 0x61, 0x1b, 0x2c, 0xa9, 0x4e, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0x6d, 0xf1, 0x15, 0x6e, 0xb0, 0xaa, 0x57, 0x69, 0x83, 0xb2, 0xde, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x56, 0xac, 0xe9, 0x6d, 0xb0, 0xf0, 0xf4, 0x7c, 0x0d, 0xce, 0xf9, 0x4b, 0x1b, 0x24, 0xa5, 0x05, 0x6f, 0x90, 0x08, 0x17, 0xbc, 0xc1, 0x89, 0xfd, 0x66, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x4a, 0x74, 0xe5, 0x0d, 0xca, 0xa6, 0xfa, 0x35, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x89, 0x1b, 0xb5, 0x1b, 0x94, 0x4d, 0xf5, 0x07, 0xad, 0xb2, 0xf7, 0xad, 0xe1, 0x17, 0xa5, 0x0d, 0xd6, 0xef, 0x41, 0x6f, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0x74, 0x7c, 0xd6, 0x06, 0x65, 0x53, 0xfd, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3e, 0x38, 0xc6, 0x9c, 0x55, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0xc3, 0x0f, 0x35, 0x07, 0xa7, 0x9b, 0x93, 0x35, 0xfc, 0xb9, 0x34, 0xb8, 0x78, 0x70, 0x14, 0x3a, 0xe9, 0x20, 0xed, 0x78, 0xb9, 0x0d, 0x56, 0xf5, 0x2a, 0x6d, 0x50, 0xd6, 0xdb, 0x6e, 0x50, 0x54, 0x8a, 0xaf, 0x41, 0x90, 0x9e, 0x6e, 0xd0, 0x88, 0xfc, 0xd4, 0x1a, 0xac, 0x11, 0x2d, 0x3f, 0x58, 0x84, 0x27, 0xb7, 0x06, 0xab, 0x4d, 0xcb, 0x0f, 0x96, 0x5d, 0xc2, 0xad, 0xc1, 0x1a, 0xd6, 0xf2, 0x83, 0x65, 0xbb, 0xb4, 0x6b, 0xb0, 0x2e, 0xb6, 0xfc, 0x60, 0x79, 0x24, 0x5c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0xde, 0x59, 0x5d, 0xbb, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7e, 0xff, 0x83, 0x56, 0xd9, 0xfb, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0x8b, 0xa3, 0x37, 0x28, 0x2a, 0xc5, 0x37, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x8f, 0xc9, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0xb0, 0xae, 0x0b, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x76, 0xb7, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xb6, 0x66, 0x0b, 0x3b, 0x58, 0x59, 0xf2, 0x56, 0x6b, 0xf8, 0xc5, 0x65, 0xc3, 0x63, 0x32, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0xac, 0xeb, 0x82, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x14, 0x58, 0x0f, 0x5a, 0x0e, 0x2e, 0x3c, 0x58, 0x59, 0xf2, 0x56, 0x6b, 0xf8, 0xc5, 0x65, 0xc3, 0x63, 0x32, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0xac, 0xeb, 0x82, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x14, 0x58, 0x37, 0x68, 0x3b, 0xb8, 0x70, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0x41, 0x91, 0xea, 0x60, 0x65, 0xc9, 0x5b, 0xb5, 0x06, 0x6d, 0x24, 0x4f, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xd0, 0x7c, 0x57, 0xe1, 0x41, 0x2b, 0x84, 0x61, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xb0, 0x32, 0x64, 0x7c, 0xe3, 0xd0, 0x41, 0x9b, 0xb1, 0x54, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0x3d, 0xb1, 0xc2, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x48, 0x58, 0xe1, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x5d, 0xe9, 0x88, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xd0, 0x66, 0x2c, 0xd5, 0x41, 0xb3, 0x75, 0x85, 0xad, 0x41, 0xcb, 0xb0, 0x53, 0x1b, 0x3e, 0xb1, 0xd9, 0xa0, 0x41, 0xef, 0xc2, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0x9a, 0xa1, 0x9c, 0xda, 0xa0, 0x2d, 0xf3, 0xc2, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x48, 0x58, 0xe1, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x51, 0x20, 0x8e, 0x0d, 0xda, 0x9a, 0x9c, 0x3a, 0x68, 0xb6, 0xae, 0xb0, 0x35, 0x68, 0xd4, 0x77, 0x6a, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xf5, 0x9e, 0x7a, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x94, 0xef, 0x77, 0x6d, 0xd0, 0x86, 0x52, 0xd5, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0xb8, 0x79, 0xd5, 0x06, 0x47, 0x1b, 0xbe, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xe9, 0x22, 0x63, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x60, 0xef, 0xc4, 0xc1, 0xa1, 0x97, 0xaf, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x46, 0x3e, 0xe1, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3e, 0x68, 0xd2, 0x4c, 0xb0, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x56, 0x3e, 0xec, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0xd6, 0x7f, 0xa8, 0x1e, 0x94, 0x75, 0x9e, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x8c, 0x05, 0xb1, 0x83, 0x76, 0x77, 0xc4, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x18, 0x3d, 0x86, 0x1b, 0x2e, 0xa9, 0x0d, 0x0e, 0xfb, 0x1d, 0x6b, 0xb0, 0x34, 0x44, 0xf5, 0xa0, 0x31, 0x02, 0xb3, 0x83, 0xb6, 0x72, 0xc4, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0x4e, 0xe5, 0x71, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xe0, 0x54, 0x1e, 0x77, 0xd0, 0x6a, 0x83, 0xd9, 0x1a, 0x34, 0x29, 0x3d, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xa1, 0x95, 0xe5, 0x1b, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xc2, 0x4d, 0x74, 0x83, 0xb2, 0xa9, 0x7e, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x2c, 0x0d, 0x51, 0xed, 0xa0, 0x59, 0x0d, 0xaa, 0x0d, 0x8a, 0x01, 0xd9, 0x35, 0x68, 0x9f, 0xc5, 0xb0, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xfa, 0x0f, 0xd5, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x37, 0xee, 0x0e, 0xda, 0x80, 0x13, 0x5c, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0x4d, 0xda, 0x18, 0xd6, 0x86, 0x0f, 0x72, 0x36, 0x68, 0xaf, 0x3b, 0x6c, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x8f, 0x2c, 0x4f, 0xde, 0xf0, 0x71, 0xd4, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x4d, 0xc7, 0x67, 0x1d, 0x34, 0x0f, 0x63, 0xb8, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x6c, 0x41, 0x3d, 0x68, 0x1e, 0xc6, 0x70, 0x83, 0x06, 0xce, 0xa6, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x4d, 0x0c, 0x19, 0xd6, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3e, 0x58, 0x1a, 0xa2, 0xda, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x5d, 0x1d, 0xc3, 0x83, 0x26, 0x9e, 0x0c, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0x55, 0x40, 0xde, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0x43, 0xe4, 0x61, 0x6b, 0xd0, 0xc0, 0xc8, 0xd4, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8d, 0x04, 0x4b, 0x1d, 0x34, 0x5c, 0x51, 0xd8, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x27, 0x57, 0x96, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x0a, 0x37, 0xd1, 0x0d, 0xca, 0xa6, 0xfa, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x3c, 0x38, 0x7c, 0xb0, 0xe8, 0x23, 0xaf, 0x83, 0x66, 0x35, 0xa8, 0x36, 0x28, 0xe1, 0x31, 0xd7, 0xa0, 0x45, 0x31, 0xc3, 0x36, 0x58, 0xd9, 0x91, 0xb7, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x93, 0x67, 0x86, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xca, 0x16, 0xd4, 0x0d, 0xca, 0xa6, 0xfa, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xd0, 0x3a, 0x9a, 0x61, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xfa, 0xa0, 0x51, 0x36, 0xc3, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xb0, 0xe8, 0x23, 0xaf, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xed, 0xea, 0x18, 0x6e, 0xd0, 0x16, 0x9e, 0x61, 0x75, 0x38, 0xc5, 0x16, 0xf0, 0xc9, 0xc2, 0xe6, 0xd0, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xb5, 0xa5, 0xb1, 0x07, 0x27, 0x3d, 0xd1, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x2a, 0xa2, 0xf7, 0x83, 0x05, 0xef, 0x9f, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x63, 0x0b, 0x6b, 0x0f, 0x4e, 0x7a, 0xa2, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x93, 0x9e, 0xe8, 0x06, 0x05, 0x69, 0xec, 0x06, 0x0b, 0x8b, 0x1a, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x3b, 0xef, 0x1b, 0x94, 0x4d, 0xef, 0x6b, 0x50, 0x08, 0xa6, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x88, 0xef, 0x07, 0xe7, 0x40, 0xd0, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x0d, 0x2e, 0x1a, 0xd6, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0xde, 0xd6, 0x39, 0x58, 0xd4, 0xf5, 0xbe, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xa0, 0x84, 0xc7, 0x5c, 0x83, 0xf6, 0x0a, 0x0d, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xcc, 0x69, 0x78, 0x50, 0xd6, 0x79, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xbf, 0x92, 0xad, 0xe1, 0xdf, 0x9c, 0x0d, 0x5a, 0xe6, 0x34, 0xdc, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0x41, 0x73, 0xa2, 0x86, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0x95, 0x14, 0x6d, 0x07, 0x8d, 0xa9, 0x1a, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x38, 0x5a, 0x6b, 0x6c, 0x50, 0x36, 0xbd, 0xaf, 0xe1, 0x6d, 0x9d, 0x83, 0xd5, 0x7f, 0x8d, 0x6d, 0xd0, 0x98, 0xaa, 0x61, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0x52, 0xb4, 0x6d, 0xd0, 0x98, 0xaa, 0xe1, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x34, 0x27, 0x6a, 0xb8, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x83, 0xe6, 0x44, 0x0d, 0x6b, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x1b, 0x2c, 0xf6, 0xb9, 0x3b, 0x68, 0xbb, 0xd6, 0x70, 0x0d, 0xbf, 0xb8, 0x1c, 0xb4, 0x91, 0x6b, 0xb8, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0x52, 0xb4, 0xad, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x0a, 0xa6, 0xd3, 0x06, 0x0b, 0x2f, 0x02, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x3e, 0xee, 0x06, 0x01, 0xcb, 0x7a, 0xd0, 0x76, 0xad, 0x61, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x90, 0x82, 0xe9, 0xb4, 0xc1, 0xc2, 0x8b, 0xc0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x91, 0x89, 0x7b, 0xd0, 0x4e, 0xb3, 0x61, 0x07, 0xed, 0xe8, 0x1a, 0xce, 0x02, 0x3e, 0x59, 0xda, 0x1c, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9a, 0x75, 0x8c, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x68, 0x85, 0x64, 0xa0, 0x85, 0x56, 0x58, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2d, 0xb4, 0x42, 0x34, 0xd0, 0x42, 0x2b, 0x4c, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x50, 0x58, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x42, 0x2b, 0xc4, 0x07, 0xad, 0x90, 0x1b, 0x1e, 0x34, 0x60, 0x29, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x16, 0x5a, 0x61, 0x33, 0xd0, 0x42, 0x2b, 0x0c, 0x37, 0xfc, 0xb9, 0x34, 0xe0, 0xb1, 0xd5, 0xb5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x68, 0x85, 0xdd, 0x41, 0x2b, 0xf0, 0x86, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x68, 0xb6, 0x32, 0x6a, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xa1, 0x15, 0xf6, 0x03, 0x2d, 0xb4, 0x42, 0xc7, 0xc1, 0x99, 0x60, 0x74, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x34, 0xac, 0x19, 0xb5, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd0, 0x0a, 0xc9, 0x40, 0x0f, 0xad, 0x50, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd0, 0x0a, 0xd1, 0x40, 0x0f, 0xad, 0xb0, 0xd8, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x9a, 0x55, 0x8d, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x0f, 0xad, 0x30, 0x19, 0xe8, 0xa1, 0x15, 0x9a, 0x36, 0x28, 0x08, 0x66, 0x37, 0x68, 0xf7, 0x58, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0xb4, 0xc2, 0x76, 0xa0, 0x87, 0x56, 0x28, 0x38, 0x68, 0x4e, 0x5d, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x0f, 0xad, 0xd0, 0x30, 0xd0, 0x43, 0x2b, 0x14, 0x6d, 0xb8, 0xa4, 0xd6, 0x38, 0x74, 0xd0, 0xee, 0xb1, 0x60, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xa2, 0x15, 0x77, 0xd0, 0x36, 0x64, 0xd4, 0x06, 0x4b, 0xea, 0x97, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x44, 0x2b, 0x24, 0x03, 0x4d, 0xb4, 0xc2, 0x68, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xa2, 0x15, 0xa2, 0x81, 0x26, 0x5a, 0x21, 0xdf, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x02, 0x9f, 0xad, 0xae, 0x0d, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x13, 0xad, 0x30, 0x18, 0x68, 0xa2, 0x15, 0x36, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0x1d, 0x79, 0xc3, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x45, 0x2b, 0xee, 0xa0, 0x6d, 0xc8, 0xa8, 0x0d, 0x96, 0xd4, 0x2f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8b, 0x56, 0x48, 0x06, 0xba, 0x68, 0x85, 0xcd, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x45, 0x2b, 0x44, 0x03, 0x5d, 0xb4, 0x42, 0xbc, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0x0c, 0x85, 0xc5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xd1, 0x0a, 0xf9, 0x40, 0x17, 0xad, 0x30, 0x39, 0x38, 0xb2, 0xe4, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8d, 0x56, 0xdc, 0x41, 0xdb, 0x90, 0x51, 0x1b, 0x9c, 0xd8, 0x6f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x46, 0x2b, 0x24, 0x03, 0x6d, 0xb4, 0x42, 0x7a, 0x70, 0x36, 0x74, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x47, 0x2b, 0xee, 0xa0, 0x6d, 0xc8, 0xa8, 0x0d, 0x4a, 0x7b, 0xcb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd1, 0x0a, 0xc9, 0x40, 0x1f, 0xad, 0x30, 0xdd, 0xf0, 0xe7, 0xd2, 0x06, 0xed, 0x6e, 0x54, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa3, 0x15, 0xd2, 0x83, 0x76, 0xd4, 0x0e, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd1, 0x0a, 0xf1, 0x40, 0x1f, 0xad, 0xb0, 0x38, 0x28, 0x11, 0xdf, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x47, 0x2b, 0x4c, 0x06, 0xfa, 0x68, 0x85, 0xe5, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x47, 0x2b, 0x6c, 0x06, 0xfa, 0x68, 0x85, 0xd9, 0x41, 0x99, 0xa5, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3e, 0x5a, 0x61, 0x37, 0xd0, 0x47, 0x2b, 0x0c, 0x0f, 0xc2, 0x74, 0xac, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xd2, 0x8a, 0x3b, 0x68, 0x1b, 0x32, 0x6a, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x69, 0x85, 0xe4, 0xa0, 0x6d, 0xc8, 0xa8, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x91, 0x56, 0x48, 0x07, 0x1a, 0x69, 0x85, 0xe1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x46, 0x5a, 0x21, 0x1e, 0x68, 0xa4, 0x15, 0x26, 0x07, 0x65, 0x13, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x69, 0x85, 0xcd, 0x40, 0x23, 0xad, 0xb0, 0x3b, 0x38, 0x13, 0x8c, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x93, 0x56, 0xdc, 0x41, 0xdb, 0x90, 0x51, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0xed, 0x1e, 0x0b, 0xae, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x56, 0x5a, 0x21, 0x19, 0x68, 0xa5, 0x15, 0xe2, 0x83, 0xf5, 0xee, 0xcc, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x69, 0xc5, 0x0f, 0xb4, 0xd4, 0x0a, 0xc9, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xed, 0x1e, 0x0b, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa6, 0x15, 0x92, 0x81, 0x8e, 0x5a, 0xa1, 0x7c, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa6, 0x15, 0xd2, 0x81, 0x6e, 0x5a, 0x61, 0xb6, 0x41, 0x31, 0x89, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x5a, 0x61, 0x30, 0xd0, 0x4d, 0x2b, 0x2c, 0x0e, 0x3f, 0xd4, 0x1c, 0x34, 0xd6, 0x73, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x76, 0x5a, 0x21, 0x1b, 0x68, 0xa7, 0x15, 0x56, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3b, 0xad, 0x10, 0x0e, 0xb4, 0xd3, 0x0a, 0x8b, 0x83, 0x46, 0x5f, 0x0a, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x4e, 0x2b, 0x4c, 0x06, 0xda, 0x69, 0x85, 0xd1, 0x41, 0x52, 0x5a, 0x70, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x69, 0x85, 0xe4, 0xa0, 0x81, 0xdd, 0xc3, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd3, 0x0a, 0xe9, 0x40, 0x3f, 0xad, 0x30, 0x39, 0x68, 0x35, 0xa9, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x43, 0xad, 0x90, 0x1c, 0x34, 0xb0, 0x7b, 0xb8, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0xb5, 0x42, 0x7a, 0xd0, 0xc0, 0xee, 0xe1, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x50, 0x2b, 0x2c, 0x06, 0x1a, 0x6a, 0x85, 0xf1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x86, 0x5a, 0x61, 0x32, 0xd0, 0x50, 0x2b, 0xcc, 0x0e, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0xb5, 0xc2, 0x6e, 0xa0, 0xa1, 0x56, 0xd8, 0x1e, 0x34, 0x3a, 0x25, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8e, 0x5a, 0x21, 0x39, 0x68, 0x60, 0xf7, 0x70, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa8, 0x15, 0xa2, 0x81, 0x8e, 0x5a, 0x21, 0x3f, 0x58, 0x62, 0xbf, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8e, 0x5a, 0x61, 0x30, 0xd0, 0x51, 0x2b, 0x74, 0x6f, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0xb5, 0xc2, 0x66, 0xa0, 0xa3, 0x56, 0x98, 0x6f, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa3, 0x56, 0x98, 0x0d, 0x74, 0xd4, 0x0a, 0xbb, 0xc3, 0x0f, 0x35, 0x1b, 0xcf, 0x0f, 0x1a, 0xeb, 0x39, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x47, 0xad, 0xb0, 0x1f, 0xe8, 0xa8, 0x15, 0xda, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8e, 0x5a, 0xa1, 0x60, 0xa0, 0xa3, 0x56, 0xa8, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x6a, 0x85, 0x86, 0x81, 0x8e, 0x5a, 0xa1, 0xe6, 0xa0, 0xd1, 0x97, 0xc2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xd4, 0x0a, 0x3d, 0x03, 0x1d, 0xb5, 0x42, 0xd3, 0x41, 0x52, 0x5a, 0x70, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xa8, 0x15, 0xba, 0x06, 0x3a, 0x6a, 0x85, 0xb2, 0x83, 0x82, 0x22, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0xb5, 0x42, 0xdd, 0x40, 0x47, 0xad, 0x50, 0xbd, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x63, 0x3d, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x6a, 0x85, 0xd2, 0x81, 0x8e, 0x5a, 0xa1, 0x79, 0xc3, 0x25, 0xb5, 0x41, 0x4b, 0x1c, 0x88, 0x55, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa9, 0x56, 0x48, 0x06, 0x9a, 0x6a, 0x85, 0xf8, 0xa0, 0x6d, 0x1c, 0xc1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0xb5, 0xe2, 0x07, 0x9a, 0x6b, 0x85, 0xae, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xd5, 0x0a, 0xd9, 0x40, 0x57, 0xad, 0x10, 0x1e, 0x14, 0x14, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x6a, 0xc5, 0x1f, 0x34, 0x15, 0x85, 0xb8, 0xc1, 0x39, 0x7f, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0xb5, 0x42, 0x36, 0xd0, 0x56, 0x2b, 0x0c, 0x0e, 0x56, 0x35, 0x08, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xaf, 0x56, 0x48, 0x06, 0xfa, 0x6a, 0x85, 0xf1, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x57, 0x2b, 0x44, 0x03, 0x7d, 0xb5, 0xc2, 0x62, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xab, 0x15, 0xb2, 0x81, 0xbe, 0x5a, 0x21, 0x3e, 0x58, 0x1d, 0xd6, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbe, 0x5a, 0x21, 0x1f, 0xe8, 0xab, 0x15, 0x06, 0x07, 0x05, 0x45, 0x66, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xab, 0x15, 0x26, 0x03, 0x7d, 0xb5, 0xc2, 0x72, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xab, 0x15, 0x36, 0x03, 0x7d, 0xb5, 0xc2, 0xec, 0x60, 0x75, 0x58, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x6a, 0x85, 0xdd, 0x40, 0x5f, 0xad, 0x30, 0x3c, 0x28, 0x28, 0x32, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x5f, 0xad, 0x30, 0x1d, 0xe8, 0xab, 0x15, 0xb6, 0x07, 0x05, 0x45, 0x66, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x6b, 0xc5, 0x1f, 0x34, 0x15, 0x85, 0xb8, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0xb5, 0x42, 0x76, 0xd0, 0x54, 0x14, 0xe2, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x58, 0x2b, 0xe4, 0x03, 0x8d, 0xb5, 0xc2, 0x74, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x63, 0xad, 0x30, 0x18, 0x68, 0xac, 0x15, 0x46, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0x5a, 0x61, 0x35, 0xd0, 0x58, 0x2b, 0x2c, 0x0f, 0xce, 0x04, 0xa3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xac, 0x15, 0x7f, 0xd0, 0x54, 0x14, 0xe2, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x8d, 0xf5, 0x1c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xb3, 0x56, 0x18, 0x0c, 0x74, 0xd6, 0x0a, 0x8b, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x6b, 0xad, 0xf8, 0x83, 0xa6, 0xa2, 0x10, 0x37, 0x28, 0x08, 0x66, 0x37, 0x68, 0xac, 0xe7, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0xb5, 0xc2, 0x60, 0xa0, 0xb5, 0x56, 0x98, 0x1c, 0x84, 0xa7, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0x5a, 0xf1, 0x07, 0x4d, 0x45, 0x21, 0x6e, 0x50, 0xf0, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xb7, 0x56, 0xc8, 0x06, 0x7a, 0x6b, 0x85, 0xd9, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x6b, 0x85, 0x78, 0xa0, 0xb7, 0x56, 0xc8, 0x0f, 0x3f, 0xd4, 0x6c, 0x1c, 0x3a, 0x68, 0xac, 0xe7, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x73, 0xad, 0xf8, 0x83, 0xa6, 0xa2, 0x10, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe6, 0x5a, 0x21, 0x18, 0x68, 0xae, 0x15, 0xd6, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x73, 0xad, 0x90, 0x0c, 0x34, 0xd7, 0x0a, 0xf1, 0xe1, 0x89, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xd7, 0x0a, 0xf9, 0x40, 0x73, 0xad, 0x30, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x6b, 0x85, 0xc1, 0x40, 0x73, 0xad, 0xb0, 0x39, 0x28, 0x88, 0x96, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x5c, 0x2b, 0x8c, 0x06, 0x9a, 0x6b, 0x85, 0xd5, 0x41, 0x51, 0x29, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe6, 0x5a, 0x61, 0x36, 0xd0, 0x5c, 0x2b, 0x6c, 0x37, 0x5c, 0x52, 0x1b, 0xb4, 0x49, 0x8d, 0x58, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xb9, 0x56, 0x98, 0x0f, 0x34, 0xd7, 0x0a, 0x55, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x34, 0xd6, 0x73, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xb9, 0x56, 0x28, 0x19, 0x68, 0xae, 0x15, 0x9a, 0x0e, 0x9a, 0x31, 0x42, 0xac, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x5e, 0x2b, 0x24, 0x03, 0xed, 0xb5, 0x42, 0x7c, 0xd0, 0xde, 0x8e, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xfe, 0x5a, 0xf1, 0x03, 0x4d, 0xb6, 0x42, 0xc9, 0x86, 0x4f, 0x6c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x5f, 0x2b, 0x64, 0x03, 0xfd, 0xb5, 0xc2, 0x7c, 0xc3, 0xe7, 0x2e, 0x1b, 0xb4, 0x3f, 0xe5, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbf, 0x56, 0xc8, 0x0f, 0x5a, 0xca, 0x48, 0xdc, 0xe0, 0x3c, 0xd8, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbf, 0x56, 0x98, 0x0c, 0xf4, 0xd7, 0x0a, 0xeb, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbf, 0x56, 0xd8, 0x0c, 0xf4, 0xd7, 0x0a, 0xbb, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x72, 0xdd, 0x60, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xaf, 0x15, 0x86, 0x03, 0xfd, 0xb5, 0xc2, 0x78, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0xc2, 0x4d, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x6c, 0xc5, 0x1f, 0xb4, 0x3c, 0x91, 0xb8, 0xe1, 0x13, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xd8, 0x0a, 0xd9, 0x40, 0x83, 0xad, 0xb0, 0xdd, 0xf0, 0xb9, 0xcb, 0x80, 0x67, 0xf7, 0xc6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb0, 0x15, 0xf2, 0x83, 0xf6, 0x7a, 0x12, 0x37, 0x5c, 0x52, 0x1b, 0xb4, 0xdb, 0xe5, 0xb7, 0x06, 0x0d, 0x8c, 0x4c, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb0, 0x15, 0x76, 0x03, 0x0d, 0xb6, 0xc2, 0xf4, 0xa0, 0x45, 0x9e, 0xc3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xd8, 0x8a, 0x3f, 0x68, 0x79, 0x22, 0x71, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb0, 0x15, 0xb2, 0x81, 0x0e, 0x5b, 0xa1, 0x6b, 0xc3, 0xe7, 0x2e, 0x03, 0xde, 0x58, 0xda, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc3, 0x56, 0xc8, 0x0f, 0x1a, 0xb4, 0x4a, 0xdc, 0x60, 0x8d, 0x54, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x6c, 0x85, 0xc9, 0x40, 0x87, 0xad, 0x30, 0x3b, 0x38, 0x13, 0x8c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb0, 0x15, 0x76, 0x03, 0x1d, 0xb6, 0x42, 0xd5, 0x06, 0x0b, 0x42, 0x96, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x61, 0x2b, 0x4c, 0x07, 0x3a, 0x6c, 0x85, 0xf5, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xf1, 0x27, 0xb1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0xb6, 0xc2, 0x7c, 0xa0, 0xc3, 0x56, 0x68, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x6c, 0x85, 0xfd, 0x40, 0x87, 0xad, 0xd0, 0x70, 0xb0, 0x80, 0xfe, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0xb6, 0x42, 0xc5, 0x40, 0x87, 0xad, 0xd0, 0x71, 0x10, 0xb0, 0xac, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb0, 0x15, 0x4a, 0x06, 0x3a, 0x6c, 0x85, 0x9a, 0x83, 0x65, 0x01, 0xc0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb0, 0x15, 0x7a, 0x06, 0x3a, 0x6c, 0x85, 0xa2, 0xc3, 0x63, 0x32, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb1, 0x15, 0x7f, 0xd0, 0xf2, 0x44, 0xe2, 0x06, 0x8b, 0xca, 0x93, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x62, 0x2b, 0x64, 0x03, 0x2d, 0xb6, 0x42, 0x78, 0x50, 0x50, 0x64, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc5, 0x56, 0xc8, 0x07, 0x5a, 0x6c, 0x85, 0xd1, 0xc1, 0x82, 0xf6, 0xf5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd8, 0x0a, 0xc9, 0x40, 0x8f, 0xad, 0x30, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x6c, 0x85, 0x68, 0xa0, 0xc7, 0x56, 0xc8, 0x0e, 0x0a, 0x8a, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xd8, 0x0a, 0xe1, 0x40, 0x8f, 0xad, 0x90, 0x1e, 0x14, 0x14, 0x99, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb1, 0x15, 0xe2, 0x81, 0x1e, 0x5b, 0x21, 0x3f, 0x28, 0x28, 0x32, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x63, 0x2b, 0x0c, 0x06, 0x7a, 0x6c, 0x85, 0xc5, 0x41, 0x41, 0x91, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x26, 0x5b, 0xf1, 0x07, 0x2d, 0x4f, 0x24, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0xb6, 0x42, 0x30, 0xd0, 0x64, 0x2b, 0xac, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x26, 0x5b, 0x21, 0x19, 0x68, 0xb2, 0x15, 0xe2, 0xc3, 0x13, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb2, 0x15, 0xf2, 0x81, 0x26, 0x5b, 0x61, 0x72, 0xb0, 0x2c, 0x92, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0xb6, 0xc2, 0x66, 0xa0, 0xc9, 0x56, 0x98, 0x1d, 0xb4, 0x4c, 0x3c, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x26, 0x5b, 0x61, 0x37, 0xd0, 0x64, 0x2b, 0x4c, 0x0f, 0x56, 0x87, 0xb5, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc9, 0x56, 0xd8, 0x0e, 0x34, 0xd9, 0x0a, 0xe3, 0x83, 0x82, 0x22, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xd9, 0x0a, 0xf3, 0x81, 0x26, 0x5b, 0xa1, 0x61, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x89, 0x95, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x6c, 0x85, 0x8a, 0x81, 0x26, 0x5b, 0xa1, 0xe3, 0xa0, 0xa0, 0xc8, 0x6c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xd9, 0x0a, 0xc9, 0x40, 0x9b, 0xad, 0x10, 0x1f, 0x34, 0xf3, 0x23, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xcf, 0x56, 0xfc, 0x40, 0xb7, 0xad, 0x50, 0xb8, 0x41, 0x61, 0xa8, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3e, 0x5b, 0x21, 0x1b, 0xe8, 0xb3, 0x15, 0xc2, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xa3, 0xad, 0xf8, 0x83, 0xf6, 0xeb, 0x13, 0x37, 0x38, 0xe7, 0x2f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xd1, 0x56, 0xc8, 0x06, 0x1a, 0x6d, 0x85, 0xc1, 0xc1, 0xaa, 0x06, 0xe1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xda, 0x0a, 0xc9, 0x40, 0xa7, 0xad, 0x50, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xda, 0x0a, 0xd1, 0x40, 0xa7, 0xad, 0xb0, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x6d, 0x85, 0x6c, 0xa0, 0xd3, 0x56, 0x88, 0x0f, 0x16, 0xfb, 0xdc, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xd3, 0x56, 0xc8, 0x07, 0x3a, 0x6d, 0x85, 0xc1, 0x41, 0x41, 0x91, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x6d, 0x85, 0xc9, 0x40, 0xa7, 0xad, 0xb0, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x6d, 0x85, 0xcd, 0x40, 0xa7, 0xad, 0x30, 0x3b, 0x58, 0x14, 0x4d, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x4e, 0x5b, 0x61, 0x37, 0xd0, 0x69, 0x2b, 0x4c, 0x0f, 0x96, 0x5d, 0xc2, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xd3, 0x56, 0xd8, 0x0e, 0x74, 0xda, 0x0a, 0xe3, 0x83, 0x82, 0x22, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xda, 0x0a, 0xf3, 0x81, 0x4e, 0x5b, 0xa1, 0x69, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb4, 0x15, 0xf6, 0x03, 0x9d, 0xb6, 0x42, 0xc5, 0xc1, 0xb2, 0x4b, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xda, 0x0a, 0x1d, 0x03, 0x9d, 0xb6, 0x42, 0xcd, 0xc1, 0x1a, 0x1f, 0xda, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xda, 0x0a, 0x3d, 0x03, 0x9d, 0xb6, 0x42, 0xd1, 0x41, 0x41, 0x91, 0x59, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x6d, 0xc5, 0x1f, 0xb4, 0x5f, 0x9f, 0xb8, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0xb6, 0x42, 0x76, 0xd0, 0x7e, 0x7d, 0xe2, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x6a, 0x2b, 0xe4, 0x03, 0xad, 0xb6, 0xc2, 0x74, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xab, 0xad, 0x30, 0x18, 0x68, 0xb5, 0x15, 0x46, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x56, 0x5b, 0x61, 0x35, 0xd0, 0x6a, 0x2b, 0x2c, 0x0f, 0xce, 0x04, 0xa3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb5, 0x15, 0x7f, 0xd0, 0x7e, 0x7d, 0xe2, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x8d, 0xf5, 0x1c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xd7, 0x56, 0x18, 0x0c, 0xf4, 0xda, 0x0a, 0x8b, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xb3, 0xad, 0xf8, 0x83, 0xf6, 0xeb, 0x13, 0x37, 0x28, 0x08, 0x66, 0x37, 0x68, 0xac, 0xe7, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0xb6, 0xc2, 0x60, 0xa0, 0xd9, 0x56, 0x98, 0x1c, 0x84, 0xa7, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x5b, 0xf1, 0x07, 0xed, 0xd7, 0x27, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdd, 0xb6, 0x42, 0x30, 0xd0, 0x6d, 0x2b, 0x54, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdd, 0xb6, 0x42, 0x32, 0xd0, 0x6d, 0x2b, 0xc4, 0x87, 0x27, 0xee, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x6d, 0x2b, 0xe4, 0x03, 0xdd, 0xb6, 0x42, 0xc3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x6d, 0x2b, 0x0c, 0x06, 0xba, 0x6d, 0x85, 0xd1, 0xc1, 0x32, 0xec, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xdb, 0x0a, 0xab, 0x81, 0x6e, 0x5b, 0xa1, 0x60, 0x83, 0x35, 0x52, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb6, 0x15, 0x86, 0x03, 0xdd, 0xb6, 0xc2, 0xf2, 0xf0, 0x43, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x5b, 0x61, 0x3a, 0xd0, 0x6d, 0x2b, 0xec, 0x0f, 0x9a, 0xdc, 0x47, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xdb, 0x0a, 0x1d, 0x03, 0xdd, 0xb6, 0x42, 0xdf, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x8d, 0xf5, 0x1c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xb6, 0x15, 0x9a, 0x06, 0xba, 0x6d, 0x85, 0xba, 0x83, 0x66, 0x8c, 0x10, 0x6b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xdb, 0x0a, 0xc9, 0x40, 0xbf, 0xad, 0x10, 0x1f, 0x34, 0x1d, 0x24, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xe1, 0x56, 0xfc, 0x40, 0xdb, 0xad, 0xd0, 0xbb, 0x41, 0x61, 0xa8, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x86, 0x5b, 0x21, 0x1b, 0x68, 0xb8, 0x15, 0xc2, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xc7, 0xad, 0xf8, 0x83, 0x76, 0x84, 0x15, 0x37, 0x38, 0xe7, 0x2f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xe3, 0x56, 0xc8, 0x06, 0x3a, 0x6e, 0x85, 0xc1, 0xc1, 0xaa, 0x06, 0xe1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xdc, 0x0a, 0xc9, 0x40, 0xcb, 0xad, 0x50, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xdc, 0x0a, 0xd1, 0x40, 0xcb, 0xad, 0xb0, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x6e, 0x85, 0x6c, 0xa0, 0xe5, 0x56, 0x88, 0x0f, 0x16, 0xfb, 0xdc, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xe5, 0x56, 0xc8, 0x07, 0x5a, 0x6e, 0x85, 0xc1, 0x41, 0x41, 0x91, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x6e, 0x85, 0xc9, 0x40, 0xcb, 0xad, 0xb0, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x6e, 0x85, 0xcd, 0x40, 0xcb, 0xad, 0x30, 0x3b, 0x58, 0x14, 0x4d, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x96, 0x5b, 0x61, 0x37, 0xd0, 0x72, 0x2b, 0x4c, 0x0f, 0x16, 0x45, 0xd3, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xe5, 0x56, 0xd8, 0x0e, 0xb4, 0xdc, 0x0a, 0xe3, 0x83, 0x82, 0x22, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xdc, 0x0a, 0xf3, 0x81, 0x96, 0x5b, 0xa1, 0x69, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xb9, 0x15, 0xf6, 0x03, 0x2d, 0xb7, 0x42, 0xc5, 0xc1, 0x1a, 0x1f, 0xda, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xdc, 0x0a, 0x1d, 0x03, 0x2d, 0xb7, 0x42, 0xcd, 0xc1, 0x1a, 0x1f, 0xda, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xdc, 0x0a, 0x3d, 0x03, 0x2d, 0xb7, 0x42, 0xd1, 0x41, 0x41, 0x91, 0x59, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x6e, 0xc5, 0x1f, 0xb4, 0x23, 0xac, 0xb8, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0xb7, 0x42, 0x76, 0xd0, 0x8e, 0xb0, 0xe2, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x73, 0x2b, 0xe4, 0x03, 0x3d, 0xb7, 0xc2, 0x74, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xcf, 0xad, 0x30, 0x18, 0xe8, 0xb9, 0x15, 0x46, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9e, 0x5b, 0x61, 0x35, 0xd0, 0x73, 0x2b, 0x2c, 0x0f, 0xce, 0x04, 0xa3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xba, 0x15, 0x7f, 0xd0, 0x8e, 0xb0, 0xe2, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x8d, 0xf5, 0x1c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xe9, 0x56, 0x18, 0x0c, 0x34, 0xdd, 0x0a, 0x8b, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xd7, 0xad, 0xf8, 0x83, 0x76, 0x84, 0x15, 0x37, 0x28, 0x08, 0x66, 0x37, 0x68, 0xac, 0xe7, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0xb7, 0xc2, 0x60, 0xa0, 0xeb, 0x56, 0x98, 0x1c, 0x84, 0xa7, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xb6, 0x5b, 0xf1, 0x07, 0xed, 0x08, 0x2b, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0xb7, 0x42, 0x30, 0xd0, 0x76, 0x2b, 0x34, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0xb7, 0x42, 0x32, 0xd0, 0x76, 0x2b, 0xa4, 0x07, 0x67, 0x43, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xdd, 0x0a, 0xf1, 0x40, 0xdb, 0xad, 0x50, 0xb4, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xed, 0x1e, 0x0b, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xbb, 0x15, 0x76, 0x03, 0x6d, 0xb7, 0xc2, 0xf8, 0xa0, 0x61, 0x5b, 0xc1, 0x35, 0x68, 0xac, 0xe7, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xdb, 0xad, 0x50, 0x31, 0xd0, 0x76, 0x2b, 0xf4, 0x1c, 0x34, 0xb9, 0x8f, 0x58, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xbb, 0x15, 0xaa, 0x06, 0xda, 0x6e, 0x85, 0xda, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x1a, 0xeb, 0x39, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x76, 0x2b, 0x14, 0x0e, 0xb4, 0xdd, 0x0a, 0xad, 0x07, 0xcd, 0x18, 0x21, 0xd6, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xbc, 0x15, 0x92, 0x81, 0xc6, 0x5b, 0x21, 0x3e, 0x68, 0x91, 0x48, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe7, 0xad, 0xf8, 0x81, 0xce, 0x5b, 0xa1, 0x6b, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xbc, 0x15, 0x82, 0x81, 0xce, 0x5b, 0x21, 0x39, 0x28, 0x28, 0x32, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x79, 0x2b, 0x44, 0x03, 0x9d, 0xb7, 0x42, 0x7e, 0x78, 0xe2, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9d, 0xb7, 0xc2, 0x60, 0xa0, 0xf3, 0x56, 0xa8, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x6f, 0x85, 0xc5, 0x40, 0xe7, 0xad, 0xb0, 0xda, 0xf0, 0xb6, 0xce, 0x06, 0xcd, 0x05, 0x1a, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xce, 0x5b, 0x61, 0x36, 0xd0, 0x79, 0x2b, 0x14, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9d, 0xb7, 0xc2, 0x6e, 0xa0, 0xf3, 0x56, 0xd8, 0x1e, 0x24, 0xc0, 0x0e, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xf3, 0x56, 0x18, 0x0f, 0x74, 0xde, 0x0a, 0xfb, 0x83, 0x16, 0x79, 0x0e, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe7, 0xad, 0xd0, 0x30, 0xd0, 0x79, 0x2b, 0x94, 0x1c, 0x2c, 0x88, 0x9b, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe7, 0xad, 0xd0, 0x32, 0xd0, 0x79, 0x2b, 0x34, 0x6d, 0x78, 0x16, 0x6f, 0xf0, 0xbd, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0xb7, 0x42, 0x32, 0xd0, 0x7b, 0x2b, 0xc4, 0x07, 0xeb, 0x45, 0x9a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xdf, 0x8a, 0x1f, 0x68, 0xbe, 0x15, 0x82, 0x83, 0x82, 0x22, 0x73, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xdf, 0x0a, 0xc9, 0x40, 0xfb, 0xad, 0x30, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x6f, 0x85, 0x68, 0xa0, 0xfd, 0x56, 0xc8, 0x0f, 0x5a, 0x49, 0x12, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xfb, 0xad, 0x30, 0x18, 0x68, 0xbf, 0x15, 0x16, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xfe, 0x5b, 0xf1, 0x03, 0x8d, 0xb8, 0x42, 0xb2, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xfe, 0x5b, 0x21, 0x1b, 0xe8, 0xbf, 0x15, 0x46, 0x1b, 0x14, 0x93, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xbf, 0x15, 0xe2, 0x81, 0xfe, 0x5b, 0x21, 0x3f, 0xfc, 0x50, 0x73, 0xd0, 0x58, 0xcf, 0xe1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x70, 0x85, 0x64, 0xa0, 0x01, 0x57, 0x88, 0x0e, 0x0a, 0x8a, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0xb8, 0xe2, 0x0f, 0x5a, 0xe0, 0x5e, 0xdc, 0xe0, 0x9c, 0xbf, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x0e, 0x5c, 0x21, 0x1b, 0xe8, 0xc0, 0x15, 0xc2, 0x83, 0x82, 0x22, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2d, 0xb8, 0x42, 0x32, 0xd0, 0x82, 0x2b, 0xc4, 0x87, 0x27, 0xee, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xe0, 0x8a, 0x3f, 0x68, 0x81, 0x7b, 0x71, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xc1, 0x15, 0xd2, 0x81, 0x1e, 0x5c, 0xe1, 0xc6, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x83, 0x2b, 0xc4, 0x03, 0x3d, 0xb8, 0xc2, 0xe4, 0x60, 0xc1, 0x0e, 0xfa, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x70, 0x85, 0xcd, 0x40, 0x0f, 0xae, 0x30, 0x3d, 0x68, 0xb4, 0x5e, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0xb8, 0xc2, 0x76, 0xa0, 0x07, 0x57, 0x78, 0xb1, 0xc1, 0x0a, 0xa1, 0xa6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xe0, 0x0a, 0xf3, 0x81, 0x1e, 0x5c, 0xa1, 0xe2, 0x60, 0x5d, 0xc1, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x70, 0x85, 0x8e, 0x81, 0x1e, 0x5c, 0xa1, 0x79, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xc1, 0x15, 0x4a, 0x06, 0x7a, 0x70, 0x85, 0xa2, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xc1, 0x15, 0x9a, 0x06, 0x7a, 0x70, 0x85, 0xb6, 0x83, 0xe5, 0xc8, 0xc2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xc1, 0x15, 0xea, 0x06, 0x7a, 0x70, 0x85, 0xe2, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x07, 0x57, 0xe8, 0x1b, 0xe8, 0xc1, 0x15, 0x3a, 0x0f, 0x16, 0x2a, 0x86, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x07, 0x57, 0x28, 0x1d, 0xe8, 0xc1, 0x15, 0x7a, 0x0f, 0x16, 0x12, 0x86, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x70, 0x85, 0xea, 0x81, 0x1e, 0x5c, 0xe1, 0xc4, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x83, 0x2b, 0x74, 0x0f, 0xf4, 0xe0, 0x0a, 0xfd, 0x07, 0x0b, 0x15, 0x43, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x83, 0x2b, 0x1c, 0x18, 0xe8, 0xc1, 0x15, 0x3e, 0x1c, 0xac, 0x7a, 0x0f, 0xad, 0x36, 0x38, 0x39, 0xc8, 0x6d, 0xf8, 0x72, 0x72, 0x0d, 0x4a, 0x09, 0xf1, 0x8d, 0xe7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x70, 0x85, 0x6c, 0xa0, 0x09, 0x57, 0xa8, 0xd9, 0xa0, 0x2c, 0x79, 0xdf, 0x60, 0x0d, 0x45, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x70, 0x85, 0xc9, 0x40, 0x13, 0xae, 0x30, 0x3a, 0x58, 0x78, 0x7a, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x26, 0x5c, 0x61, 0x35, 0xd0, 0x84, 0x2b, 0xb4, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x4d, 0xb8, 0xc2, 0x6c, 0xa0, 0x09, 0x57, 0x18, 0x1e, 0x24, 0xa5, 0x05, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x09, 0x57, 0x58, 0x0e, 0x34, 0xe1, 0x0a, 0x05, 0x07, 0x8d, 0xd6, 0x0b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x09, 0x57, 0x68, 0x18, 0x68, 0xc2, 0x15, 0x4a, 0x0e, 0x5a, 0xe4, 0x39, 0xac, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x85, 0x2b, 0x24, 0x03, 0x5d, 0xb8, 0x42, 0x76, 0x90, 0x32, 0x18, 0xbc, 0x41, 0x29, 0x21, 0xbe, 0xf1, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x17, 0xae, 0x90, 0x0f, 0x74, 0xe1, 0x0a, 0x35, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0xac, 0xa1, 0xc8, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x17, 0xae, 0x30, 0x1b, 0xe8, 0xc2, 0x15, 0x86, 0x07, 0x0b, 0x4f, 0xcf, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x85, 0x2b, 0x2c, 0x07, 0xba, 0x70, 0x85, 0x96, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x0b, 0x57, 0x98, 0x0e, 0x74, 0xe1, 0x0a, 0xe3, 0x83, 0xa4, 0xb4, 0xe0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xe1, 0x0a, 0xeb, 0x81, 0x2e, 0x5c, 0xa1, 0xe0, 0x20, 0x11, 0x2e, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0xb8, 0x42, 0xc3, 0x40, 0x17, 0xae, 0x50, 0x72, 0xd0, 0x22, 0xcf, 0x61, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x36, 0x5c, 0x21, 0x19, 0x68, 0xc3, 0x15, 0xb2, 0x83, 0xd3, 0x8f, 0xeb, 0x06, 0xa5, 0x84, 0xf8, 0xc6, 0xf3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0xb8, 0x42, 0x3e, 0xd0, 0x86, 0x2b, 0x14, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0xb8, 0xc2, 0x60, 0xa0, 0x0d, 0x57, 0x18, 0x1d, 0x34, 0xde, 0xb9, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x36, 0x5c, 0x61, 0x35, 0xd0, 0x86, 0x2b, 0x14, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0xb8, 0xc2, 0x6c, 0xa0, 0x0d, 0x57, 0x58, 0x1e, 0x14, 0x44, 0xcb, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xc3, 0x15, 0xa6, 0x03, 0x6d, 0xb8, 0xc2, 0xf6, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x1b, 0xae, 0x30, 0x1e, 0x68, 0xc3, 0x15, 0xf6, 0x07, 0x2d, 0xf2, 0x1c, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x36, 0x5c, 0xa1, 0x61, 0xa0, 0x0d, 0x57, 0x68, 0x39, 0x58, 0x54, 0x01, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x36, 0x5c, 0xa1, 0x66, 0xa0, 0x0d, 0x57, 0xe8, 0x39, 0x28, 0x28, 0x32, 0x5b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0xb8, 0x42, 0x32, 0xd0, 0x87, 0x2b, 0xa4, 0x07, 0xeb, 0x23, 0xd2, 0x37, 0x28, 0x25, 0xc4, 0x37, 0x9e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xc3, 0x15, 0xf2, 0x81, 0x3e, 0x5c, 0xa1, 0x75, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xc3, 0x15, 0x06, 0x03, 0x7d, 0xb8, 0xc2, 0xe6, 0x60, 0xbd, 0xf4, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x70, 0x85, 0xd1, 0x40, 0x1f, 0xae, 0x50, 0xba, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3e, 0x5c, 0x61, 0x37, 0xd0, 0x87, 0x2b, 0xec, 0x37, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3e, 0x5c, 0x61, 0x39, 0xd0, 0x87, 0x2b, 0x4c, 0x0f, 0x0f, 0xde, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xc3, 0x15, 0xb6, 0x03, 0x7d, 0xb8, 0xc2, 0xfc, 0xa0, 0x45, 0x9e, 0xc3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xe1, 0x0a, 0x05, 0x03, 0x7d, 0xb8, 0x42, 0xd7, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x87, 0x2b, 0x34, 0x0c, 0xf4, 0xe1, 0x0a, 0x25, 0x07, 0x05, 0xd1, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x70, 0x85, 0x96, 0x81, 0x3e, 0x5c, 0xa1, 0xe6, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x1f, 0xae, 0xd0, 0x33, 0xd0, 0x87, 0x2b, 0x54, 0x1d, 0xb4, 0xc8, 0x73, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3e, 0x5c, 0xa1, 0x6c, 0xa0, 0x0f, 0x57, 0xe8, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x70, 0x85, 0xb6, 0x81, 0x3e, 0x5c, 0xa1, 0xf0, 0x60, 0xed, 0x39, 0xed, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x70, 0x85, 0xc6, 0x81, 0x3e, 0x5c, 0xa1, 0xf2, 0xa0, 0xa0, 0xc8, 0xac, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x2b, 0xae, 0x90, 0x0c, 0xb4, 0xe2, 0x0a, 0x93, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x15, 0x57, 0x88, 0x06, 0x5a, 0x71, 0x85, 0xfc, 0x60, 0x35, 0x12, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x71, 0x85, 0xc1, 0x40, 0x2b, 0xae, 0xb0, 0x38, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xe4, 0x8a, 0x1f, 0x68, 0xcb, 0x15, 0x56, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xd0, 0xf4, 0xe3, 0x87, 0x42, 0x56, 0xe6, 0x06, 0xe2, 0x07, 0xb2, 0xe5, 0x07, 0x52, 0xe7, 0x42, 0x56, 0xe6, 0x06, 0xe2, 0xd7, 0x95, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x72, 0x85, 0x60, 0xa0, 0x2d, 0x57, 0x48, 0x0e, 0x0a, 0x8a, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xe5, 0x0a, 0xd1, 0x40, 0x5b, 0xae, 0x30, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x72, 0x85, 0x6c, 0xa0, 0x2d, 0x57, 0xc8, 0x0f, 0x1a, 0x60, 0x49, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x5b, 0xae, 0x30, 0x18, 0x68, 0xcb, 0x15, 0x36, 0x07, 0x47, 0x96, 0xbc, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0xb9, 0x42, 0x32, 0xd0, 0x98, 0x2b, 0x4c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0x5c, 0x21, 0x1a, 0x68, 0xcc, 0x15, 0xf2, 0x83, 0xa5, 0x61, 0xdc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xcc, 0x15, 0x06, 0x03, 0x8d, 0xb9, 0xc2, 0xe2, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x99, 0x2b, 0x7e, 0xa0, 0x39, 0x57, 0xe8, 0xdf, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x73, 0x85, 0x6c, 0xa0, 0x33, 0x57, 0xd8, 0x6f, 0xf8, 0xdc, 0x65, 0x83, 0x16, 0x13, 0xfb, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xe6, 0x0a, 0xf9, 0x41, 0xb3, 0x78, 0x8d, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xb4, 0x7b, 0x2c, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x33, 0x57, 0xd8, 0x0d, 0x74, 0xe6, 0x0a, 0xf3, 0x83, 0xd6, 0xf3, 0x07, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x9a, 0x2b, 0xfe, 0xa0, 0x99, 0xb9, 0xc6, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x9a, 0xd6, 0xec, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x6f, 0xae, 0x90, 0x0c, 0xf4, 0xe6, 0x0a, 0xd1, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x39, 0x57, 0xfc, 0x41, 0x33, 0x73, 0x8d, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x73, 0xae, 0x10, 0x0c, 0x34, 0xe7, 0x0a, 0xc9, 0x41, 0x41, 0x91, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xe6, 0x5c, 0x21, 0x1a, 0x68, 0xce, 0x15, 0xf2, 0x83, 0x05, 0xed, 0xeb, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xce, 0x15, 0x06, 0x03, 0xcd, 0xb9, 0xc2, 0x7e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xce, 0x15, 0x16, 0x03, 0xcd, 0xb9, 0xc2, 0x70, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xce, 0x15, 0x26, 0x03, 0xcd, 0xb9, 0xc2, 0xea, 0x60, 0xe5, 0x29, 0xed, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x73, 0x85, 0xd9, 0x40, 0x73, 0xae, 0xb0, 0x3b, 0x28, 0x28, 0x32, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x73, 0xae, 0xb0, 0x1c, 0x68, 0xce, 0x15, 0xa6, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x73, 0x85, 0xed, 0x40, 0x73, 0xae, 0x30, 0x3e, 0x28, 0x28, 0x32, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x9c, 0x2b, 0xac, 0x07, 0x9a, 0x73, 0x85, 0xf9, 0x41, 0x41, 0x91, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x73, 0x85, 0x82, 0x81, 0xe6, 0x5c, 0xa1, 0x76, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xce, 0x15, 0x1a, 0x06, 0x9a, 0x73, 0x85, 0x9a, 0xc3, 0x13, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xce, 0x15, 0x7a, 0x06, 0x9a, 0x73, 0x85, 0xd6, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x39, 0x57, 0x28, 0x1a, 0x68, 0xce, 0x15, 0xca, 0x0e, 0x96, 0x61, 0xbf, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x39, 0x57, 0x68, 0x1b, 0x68, 0xce, 0x15, 0x4a, 0x0f, 0x1a, 0xad, 0x17, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xe7, 0x0a, 0xbd, 0x03, 0xcd, 0xb9, 0x42, 0xf9, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x9a, 0xd6, 0xec, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x73, 0xae, 0xd0, 0x3e, 0xd0, 0x9c, 0x2b, 0xd4, 0x1f, 0x14, 0x14, 0x99, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xf6, 0x5c, 0x21, 0x19, 0x68, 0xcf, 0x15, 0x26, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x7b, 0xae, 0x10, 0x0d, 0xb4, 0xe7, 0x0a, 0xf9, 0x41, 0xfb, 0x5a, 0x82, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xcf, 0x15, 0x06, 0x03, 0xed, 0xb9, 0xc2, 0xe2, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x9f, 0x2b, 0x7e, 0xa0, 0x57, 0x57, 0x98, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0xb9, 0x42, 0x36, 0xd0, 0x9f, 0x2b, 0x6c, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xfe, 0x5c, 0x21, 0x1d, 0xe8, 0xcf, 0x15, 0xe2, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x7f, 0xae, 0x90, 0x0f, 0xf4, 0xe7, 0x0a, 0x93, 0x83, 0x16, 0x79, 0x0e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa0, 0x2b, 0x24, 0x03, 0x0d, 0xba, 0xc2, 0x70, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xd0, 0x15, 0xa2, 0x81, 0x06, 0x5d, 0x21, 0x3b, 0x28, 0x28, 0x32, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa0, 0x2b, 0x84, 0x03, 0x0d, 0xba, 0xc2, 0xe2, 0xf0, 0xc4, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x74, 0x85, 0xc9, 0x40, 0x83, 0xae, 0xb0, 0x3a, 0x58, 0xb7, 0x0e, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x06, 0x5d, 0x61, 0x36, 0xd0, 0xa0, 0x2b, 0xec, 0x0e, 0x0a, 0x8a, 0xcc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xe8, 0x8a, 0x3f, 0x68, 0x2e, 0xc1, 0x71, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x74, 0x85, 0x6c, 0xa0, 0x47, 0x57, 0x28, 0xde, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0x15, 0x33, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x74, 0x85, 0x74, 0xa0, 0x45, 0x57, 0x88, 0x0f, 0x0a, 0x8a, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0xba, 0x42, 0x76, 0xd0, 0x2c, 0x90, 0xe3, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa3, 0x2b, 0x84, 0x03, 0x3d, 0xba, 0x42, 0x7a, 0x50, 0x50, 0x64, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x47, 0x57, 0x88, 0x07, 0x7a, 0x74, 0x85, 0xcd, 0xc1, 0xaa, 0x06, 0xe1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xe8, 0x0a, 0xa3, 0x81, 0x1e, 0x5d, 0xa1, 0x71, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xd1, 0x15, 0x56, 0x03, 0x3d, 0xba, 0xc2, 0x78, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xd1, 0x15, 0x66, 0x03, 0x3d, 0xba, 0xc2, 0xf2, 0x60, 0xb1, 0xcf, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x74, 0x85, 0xe9, 0x40, 0x8f, 0xae, 0xb0, 0x3d, 0x28, 0x28, 0x32, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x8f, 0xae, 0xb0, 0x1e, 0xe8, 0xd1, 0x15, 0x8a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1e, 0x5d, 0x61, 0x3e, 0xd0, 0xa3, 0x2b, 0x34, 0x1c, 0xac, 0x5b, 0x87, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x8f, 0xae, 0x50, 0x31, 0xd0, 0xa3, 0x2b, 0xb4, 0x1c, 0x2c, 0x9d, 0xa0, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x8f, 0xae, 0x50, 0x33, 0xd0, 0xa3, 0x2b, 0xf4, 0x1c, 0x14, 0x14, 0x99, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x47, 0x57, 0x68, 0x1a, 0xe8, 0xd1, 0x15, 0x0a, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1e, 0x5d, 0xa1, 0x6a, 0xa0, 0x47, 0x57, 0x68, 0x3b, 0x58, 0xa4, 0x39, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1e, 0x5d, 0xa1, 0x6e, 0xa0, 0x47, 0x57, 0xe8, 0x3b, 0x28, 0x28, 0x32, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0xba, 0x42, 0xe5, 0x40, 0x8f, 0xae, 0xd0, 0xbb, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0x55, 0xcc, 0xa8, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xd2, 0x15, 0x7f, 0xd0, 0x5c, 0x82, 0xe3, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0xc7, 0x8c, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x4b, 0x57, 0xfc, 0x41, 0x73, 0x09, 0x8e, 0x1b, 0xbe, 0xc2, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa5, 0x2b, 0x64, 0x07, 0xcd, 0x25, 0x38, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0xba, 0x42, 0x3e, 0xd0, 0xa5, 0x2b, 0x34, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xd2, 0x15, 0x06, 0x03, 0x5d, 0xba, 0xc2, 0xe8, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x97, 0xae, 0xb0, 0x1a, 0xe8, 0xd2, 0x15, 0x0a, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xe9, 0x0a, 0xb3, 0x81, 0x2e, 0x5d, 0x61, 0x7a, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xd2, 0x15, 0xb6, 0x03, 0x5d, 0xba, 0xc2, 0xfe, 0xe0, 0x4c, 0x30, 0x5a, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x74, 0xc5, 0x1f, 0x34, 0x97, 0xe0, 0xb8, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xe9, 0x0a, 0xd9, 0x40, 0x9b, 0xae, 0x30, 0xda, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x9b, 0xae, 0x10, 0x0f, 0xb4, 0xe9, 0x0a, 0xf9, 0xe1, 0x87, 0x9a, 0x83, 0xc6, 0x7a, 0x0e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa7, 0x2b, 0x24, 0x03, 0x7d, 0xba, 0xc2, 0x7a, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0xba, 0x42, 0x38, 0xd0, 0xa7, 0x2b, 0x8c, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3e, 0x5d, 0x21, 0x1e, 0xe8, 0xd3, 0x15, 0xf2, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x9f, 0xae, 0x30, 0x18, 0xe8, 0xd3, 0x15, 0x36, 0x07, 0x2d, 0xf2, 0x1c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x4f, 0x57, 0x58, 0x0d, 0xf4, 0xe9, 0x0a, 0xb3, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x9f, 0xae, 0xb0, 0x1b, 0xe8, 0xd3, 0x15, 0xc6, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x9f, 0xae, 0x30, 0x1c, 0xe8, 0xd3, 0x15, 0x96, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x74, 0x85, 0xe9, 0x40, 0x9f, 0xae, 0xb0, 0x3d, 0x28, 0x28, 0x32, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa8, 0x2b, 0xfe, 0xa0, 0xb9, 0x04, 0xc7, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x51, 0x57, 0xc8, 0x06, 0x1a, 0x75, 0x85, 0xfa, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x51, 0x57, 0x08, 0x07, 0x1a, 0x75, 0x85, 0xb2, 0x0d, 0x9f, 0xbb, 0x6c, 0xb0, 0x90, 0x1b, 0x7e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xa3, 0xae, 0x30, 0x38, 0x68, 0x0a, 0xe3, 0x71, 0xc3, 0x25, 0xb5, 0xc1, 0x61, 0xbf, 0x63, 0x0d, 0xda, 0x3d, 0x16, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa8, 0x2b, 0x2c, 0x07, 0x1a, 0x75, 0x85, 0x82, 0x83, 0xd6, 0xf3, 0x07, 0xd7, 0xa0, 0xb1, 0x9e, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0xba, 0x42, 0xcd, 0x40, 0xa3, 0xae, 0xd0, 0x75, 0xd0, 0xe4, 0x3e, 0x62, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xd4, 0x15, 0xda, 0x06, 0x1a, 0x75, 0x85, 0xf6, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x61, 0x66, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x46, 0x5d, 0xa1, 0xf1, 0xa0, 0x89, 0x99, 0xc7, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x1a, 0xeb, 0x39, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xa8, 0x2b, 0xf4, 0x0e, 0x34, 0xea, 0x0a, 0xe5, 0x07, 0xcd, 0x18, 0x21, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x4e, 0x5d, 0xf1, 0x07, 0xcd, 0x25, 0x38, 0x6e, 0x50, 0xec, 0x68, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x53, 0x57, 0xc8, 0x06, 0x3a, 0x75, 0x85, 0x86, 0x0d, 0x8f, 0xb0, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x53, 0x57, 0x48, 0x07, 0x3a, 0x75, 0x85, 0xd9, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x75, 0x85, 0xc1, 0x40, 0xa7, 0xae, 0xb0, 0x38, 0x28, 0x52, 0x31, 0x0f, 0x96, 0x71, 0xc3, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x53, 0x57, 0xd8, 0x0d, 0x74, 0xea, 0x0a, 0x05, 0x1b, 0x14, 0x93, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xd4, 0x15, 0xa6, 0x03, 0x9d, 0xba, 0xc2, 0xf6, 0xa0, 0x48, 0xc5, 0xdc, 0xa0, 0x95, 0x9a, 0xc7, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xab, 0xae, 0x90, 0x0c, 0xb4, 0xea, 0x0a, 0xd1, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x57, 0x57, 0xfc, 0x41, 0x73, 0x09, 0x8e, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xaf, 0xae, 0x10, 0x0c, 0xf4, 0xea, 0x0a, 0xc9, 0x41, 0x41, 0x91, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x5e, 0x5d, 0x21, 0x1a, 0xe8, 0xd5, 0x15, 0xf2, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1f, 0x2c, 0xe3, 0x86, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xaf, 0xae, 0x30, 0x18, 0xe8, 0xd5, 0x15, 0x56, 0x1b, 0xde, 0xd6, 0x19, 0xbc, 0x3e, 0x68, 0xb4, 0xec, 0xb1, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xad, 0x2b, 0x24, 0x03, 0xdd, 0xba, 0xc2, 0x64, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xd6, 0x15, 0xa2, 0x81, 0x6e, 0x5d, 0x21, 0x3f, 0x58, 0x92, 0x0f, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x5d, 0x61, 0x30, 0xd0, 0xad, 0x2b, 0x2c, 0x0e, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0xba, 0xe2, 0x07, 0x9a, 0x76, 0x85, 0x68, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x75, 0x85, 0xec, 0xa0, 0xa9, 0xcc, 0xc7, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x5d, 0x57, 0xc8, 0x07, 0xda, 0x75, 0x85, 0xe9, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x76, 0x5d, 0x61, 0x30, 0xd0, 0xae, 0x2b, 0x8c, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xeb, 0x0a, 0xab, 0x81, 0x76, 0x5d, 0x61, 0x79, 0x70, 0x26, 0x18, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xbf, 0xae, 0xf8, 0x83, 0xa6, 0x32, 0x1f, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x3d, 0x5c, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0xbb, 0x42, 0x32, 0xd0, 0xb0, 0x2b, 0x44, 0x07, 0x05, 0x45, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8e, 0x5d, 0xf1, 0x07, 0x4d, 0x65, 0x3e, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0xbb, 0x42, 0x36, 0xd0, 0xb1, 0x2b, 0x54, 0x6c, 0xf8, 0xdc, 0x65, 0x83, 0x16, 0x13, 0xfb, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xec, 0x0a, 0xf9, 0x41, 0x2b, 0xc6, 0x8f, 0x1b, 0x2e, 0xa9, 0x0d, 0x0e, 0xfb, 0x1d, 0x6b, 0xd0, 0xee, 0xb1, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8e, 0x5d, 0x61, 0x38, 0xd0, 0xb1, 0x2b, 0x34, 0x1c, 0x34, 0x70, 0x41, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x96, 0x5d, 0xf1, 0x07, 0x4d, 0x65, 0x3e, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0xb4, 0x66, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x76, 0x85, 0x64, 0xa0, 0x67, 0x57, 0x58, 0x6f, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0x7a, 0xb8, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9e, 0x5d, 0x61, 0x33, 0xd0, 0xb3, 0x2b, 0x8c, 0x0f, 0xda, 0xe1, 0x20, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xd3, 0xae, 0xf8, 0x83, 0xa6, 0x32, 0x1f, 0x0f, 0xda, 0xcf, 0xec, 0x5b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0xbb, 0x42, 0x32, 0xd0, 0xb6, 0x2b, 0x4c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xb6, 0x5d, 0x21, 0x1a, 0x68, 0xdb, 0x15, 0xf2, 0x83, 0x56, 0xd5, 0x04, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xb6, 0x2b, 0x0c, 0x06, 0xda, 0x76, 0x85, 0xc5, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x6f, 0x57, 0xfc, 0x40, 0x27, 0xaf, 0x30, 0xdb, 0xe0, 0x68, 0xc3, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbe, 0x5d, 0x21, 0x1b, 0xe8, 0xdc, 0x15, 0x4a, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x58, 0xc5, 0x8c, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0x5d, 0x21, 0x1d, 0x68, 0xdc, 0x15, 0xe2, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe7, 0xae, 0x90, 0x1d, 0x34, 0x92, 0x00, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xee, 0x0a, 0xe1, 0x40, 0xe7, 0xae, 0x90, 0x1e, 0x14, 0x14, 0x99, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xdc, 0x15, 0xe2, 0x81, 0xce, 0x5d, 0x61, 0x73, 0xb0, 0xaa, 0x41, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9d, 0xbb, 0xc2, 0x68, 0xa0, 0x73, 0x57, 0x68, 0xdb, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x77, 0x85, 0xd5, 0x40, 0xe7, 0xae, 0x30, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x77, 0x85, 0xd9, 0x40, 0xe7, 0xae, 0xb0, 0x3c, 0x58, 0xec, 0x73, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xce, 0x5d, 0x61, 0x3a, 0xd0, 0xb9, 0x2b, 0x6c, 0x0f, 0x0a, 0x8a, 0xcc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xb9, 0x2b, 0xac, 0x07, 0x3a, 0x77, 0x85, 0x92, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x73, 0x57, 0x98, 0x0f, 0x74, 0xee, 0x0a, 0x0d, 0x07, 0x4b, 0x27, 0x68, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xb9, 0x2b, 0x54, 0x0c, 0x74, 0xee, 0x0a, 0x1d, 0x07, 0x05, 0x45, 0x66, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xdc, 0x15, 0x5a, 0x06, 0x3a, 0x77, 0x85, 0xb2, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x73, 0x57, 0xa8, 0x19, 0xe8, 0xdc, 0x15, 0x9a, 0x0e, 0x16, 0x69, 0xce, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x73, 0x57, 0xa8, 0x1a, 0xe8, 0xdc, 0x15, 0xba, 0x0e, 0x0a, 0x8a, 0xcc, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe7, 0xae, 0x50, 0x37, 0xd0, 0xb9, 0x2b, 0x74, 0x1e, 0xb4, 0xce, 0xe9, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd6, 0x5d, 0xf1, 0x07, 0xed, 0x0d, 0x40, 0x6e, 0xf8, 0xdc, 0x65, 0x83, 0x75, 0xcc, 0xa8, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x77, 0xc5, 0x1f, 0xb4, 0x37, 0x00, 0xb9, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0xbb, 0x42, 0x76, 0xd0, 0xde, 0x00, 0xe4, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xbb, 0x2b, 0xe4, 0x03, 0xbd, 0xbb, 0x42, 0xc3, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0x5d, 0x61, 0x30, 0xd0, 0xbb, 0x2b, 0x8c, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xee, 0x0a, 0xab, 0x81, 0xde, 0x5d, 0xa1, 0x60, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xef, 0xae, 0x30, 0x1b, 0xe8, 0xdd, 0x15, 0xa6, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0x5d, 0x61, 0x3b, 0xd0, 0xbb, 0x2b, 0xec, 0x0f, 0xce, 0x04, 0xa3, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x79, 0x57, 0xfc, 0x41, 0x7b, 0x03, 0x90, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xb4, 0x1e, 0x2e, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xee, 0x5d, 0x21, 0x19, 0xe8, 0xde, 0x15, 0xa2, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xfb, 0xae, 0xf8, 0x83, 0xf6, 0x06, 0x20, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xf6, 0x5d, 0x21, 0x1b, 0x68, 0xdf, 0x15, 0xc6, 0x1b, 0x14, 0x93, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xdf, 0x15, 0xe2, 0x81, 0xf6, 0x5d, 0x61, 0xb3, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xef, 0x0a, 0xf9, 0x40, 0xfb, 0xae, 0x30, 0x38, 0x08, 0xd3, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xef, 0x0a, 0x8b, 0x81, 0xf6, 0x5d, 0x61, 0x72, 0x10, 0x82, 0x0f, 0x1d, 0xb4, 0x1e, 0x2e, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xfe, 0x5d, 0x21, 0x19, 0x68, 0xe0, 0x15, 0x0a, 0x36, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xfe, 0x5d, 0x21, 0x1d, 0xe8, 0xdf, 0x15, 0x4a, 0x36, 0x7c, 0xee, 0xb2, 0x41, 0x8b, 0x89, 0x7d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x77, 0x85, 0xc5, 0x41, 0x23, 0xbf, 0x90, 0x1b, 0x2e, 0xa9, 0x0d, 0x0e, 0xfb, 0x1d, 0x6b, 0xd0, 0xee, 0xb1, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xfe, 0x5d, 0x61, 0x3a, 0xd0, 0xbf, 0x2b, 0x74, 0x1c, 0x34, 0x70, 0x41, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x06, 0x5e, 0x21, 0x39, 0x68, 0x34, 0x17, 0x72, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xa6, 0x35, 0xfb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xc0, 0x2b, 0x0c, 0x06, 0x1a, 0x78, 0x85, 0xc5, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x81, 0x57, 0x98, 0x0c, 0x34, 0xf0, 0x0a, 0xfb, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x81, 0x57, 0xd8, 0x0c, 0x34, 0xf0, 0x0a, 0xa3, 0x83, 0x82, 0x22, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0xbc, 0xc2, 0x6a, 0xa0, 0x81, 0x57, 0x98, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0xbc, 0xc2, 0x6c, 0xa0, 0x81, 0x57, 0xd8, 0x1e, 0xb4, 0xd3, 0xde, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x06, 0x5e, 0x61, 0x3c, 0xd0, 0xc0, 0x2b, 0xac, 0x0f, 0x0a, 0x8a, 0xcc, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xc1, 0x2b, 0xfe, 0xa0, 0xbd, 0x01, 0xc8, 0x0d, 0x0a, 0x82, 0xd9, 0x0d, 0x1a, 0xeb, 0x39, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x0b, 0xaf, 0x90, 0x0c, 0xb4, 0xf0, 0x0a, 0xd1, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x87, 0x57, 0xfc, 0x41, 0x7b, 0x03, 0x90, 0x1b, 0x3e, 0xb1, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x0f, 0xaf, 0x90, 0x0d, 0xf4, 0xf0, 0x0a, 0x6d, 0x1b, 0x3e, 0x77, 0x19, 0xf0, 0xce, 0xd2, 0xda, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0xbc, 0x42, 0x7e, 0xd0, 0x16, 0x43, 0xe4, 0x86, 0x4b, 0x6a, 0x83, 0xc3, 0x7e, 0xc7, 0x1a, 0xb4, 0x7b, 0x2c, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x87, 0x57, 0x18, 0x0e, 0xf4, 0xf0, 0x0a, 0x0d, 0x07, 0x0d, 0x5c, 0x10, 0xae, 0x41, 0x63, 0x3d, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x78, 0x85, 0x9e, 0x81, 0x1e, 0x5e, 0xa1, 0xec, 0xa0, 0xc9, 0x7d, 0xc4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xf1, 0x8a, 0x3f, 0x68, 0x6f, 0x00, 0x72, 0x83, 0x12, 0x1e, 0x73, 0x0d, 0x9a, 0x73, 0x88, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x5d, 0xbc, 0x42, 0x32, 0xd0, 0xc5, 0x2b, 0x44, 0x07, 0x05, 0x45, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x36, 0x5e, 0xf1, 0x07, 0xed, 0x0d, 0x40, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0xbc, 0x42, 0x36, 0xd0, 0xc6, 0x2b, 0xd4, 0x6d, 0xf8, 0xdc, 0x65, 0xc0, 0x6b, 0xcb, 0x23, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xf1, 0x0a, 0xf9, 0x41, 0x6b, 0x38, 0x91, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xb4, 0x1e, 0x2e, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8d, 0x57, 0x58, 0x0e, 0xb4, 0xf1, 0x0a, 0x15, 0x07, 0xed, 0x70, 0x10, 0xae, 0x41, 0x63, 0x3d, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x78, 0x85, 0xa2, 0x81, 0x36, 0x5e, 0xa1, 0xed, 0xa0, 0x19, 0x23, 0xc4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xf1, 0x8a, 0x3f, 0x68, 0x6f, 0x00, 0x72, 0x83, 0x12, 0x1e, 0x73, 0x0d, 0x1a, 0xd4, 0x89, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0xbc, 0x42, 0x32, 0xd0, 0xc8, 0x2b, 0x44, 0x07, 0x05, 0x45, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x4e, 0x5e, 0xf1, 0x07, 0xed, 0x0d, 0x40, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x9d, 0xbc, 0x42, 0x30, 0xd0, 0xc9, 0x2b, 0x24, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x79, 0x85, 0x68, 0xa0, 0x93, 0x57, 0xc8, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7d, 0xd0, 0x40, 0x4a, 0xe4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x79, 0x85, 0xc1, 0x40, 0x27, 0xaf, 0xb0, 0xda, 0xf0, 0xb6, 0xce, 0xe0, 0xf5, 0x41, 0xc3, 0x54, 0x91, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x5e, 0x5e, 0x21, 0x19, 0xe8, 0xe5, 0x15, 0x26, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x2f, 0xaf, 0x10, 0x0d, 0xf4, 0xf2, 0x0a, 0xf9, 0x41, 0x7b, 0x5f, 0x82, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xe5, 0x15, 0x06, 0x03, 0xbd, 0xbc, 0xc2, 0xe2, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcc, 0x2b, 0x7e, 0xa0, 0xa9, 0x57, 0x18, 0x6f, 0x50, 0xec, 0x68, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x99, 0x57, 0xc8, 0x06, 0x9a, 0x79, 0x85, 0xe5, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcc, 0x2b, 0xa4, 0x03, 0xcd, 0xbc, 0xc2, 0xe0, 0xa0, 0x45, 0x9e, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0xbc, 0xc2, 0x62, 0xa0, 0x99, 0x57, 0x18, 0x1e, 0xb4, 0x9e, 0x3f, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0x5e, 0x21, 0x19, 0xe8, 0xe6, 0x15, 0xa2, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3b, 0xaf, 0xf8, 0x83, 0xe6, 0x10, 0x23, 0x37, 0x28, 0xfa, 0x74, 0x37, 0x68, 0x3d, 0x5c, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0xbc, 0x42, 0x32, 0xd0, 0xcf, 0x2b, 0x5c, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x79, 0x85, 0x68, 0xa0, 0x9f, 0x57, 0x88, 0x0f, 0x16, 0xec, 0xa0, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x9f, 0x57, 0xc8, 0x07, 0xfa, 0x79, 0x85, 0xd9, 0x41, 0xa3, 0xf5, 0x82, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xe7, 0x15, 0x76, 0x03, 0xfd, 0xbc, 0xc2, 0x83, 0x0d, 0x56, 0x08, 0x35, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x9f, 0x57, 0x98, 0x0e, 0xf4, 0xf3, 0x0a, 0xf3, 0x83, 0x75, 0x05, 0xa3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xe7, 0x15, 0xf6, 0x03, 0xfd, 0xbc, 0x42, 0xeb, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcf, 0x2b, 0x14, 0x0c, 0xf4, 0xf3, 0x0a, 0x25, 0x07, 0xcb, 0x2a, 0x41, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcf, 0x2b, 0xb4, 0x0c, 0xf4, 0xf3, 0x0a, 0x4d, 0x07, 0xcb, 0x91, 0x85, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcf, 0x2b, 0x54, 0x0d, 0xf4, 0xf3, 0x0a, 0xa5, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3f, 0xaf, 0xd0, 0x35, 0xd0, 0xcf, 0x2b, 0xf4, 0x1d, 0x2c, 0x54, 0x0c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3f, 0xaf, 0x50, 0x38, 0xd0, 0xcf, 0x2b, 0x74, 0x1e, 0x2c, 0x24, 0x0c, 0xad, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xf3, 0x0a, 0xb5, 0x03, 0xfd, 0xbc, 0xc2, 0x81, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x9f, 0x57, 0xe8, 0x1d, 0xe8, 0xe7, 0x15, 0xba, 0x0f, 0x16, 0x2a, 0x86, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x9f, 0x57, 0x28, 0x1f, 0xe8, 0xe7, 0x15, 0xfa, 0x0f, 0x56, 0xbd, 0x87, 0x56, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x7a, 0xc5, 0x1f, 0x34, 0x87, 0x18, 0xb9, 0xe1, 0x13, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xf4, 0x0a, 0xd9, 0x40, 0x43, 0xaf, 0xd0, 0xb3, 0xe1, 0x73, 0x97, 0x01, 0xcf, 0xec, 0x0d, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xd0, 0x2b, 0xe4, 0x07, 0xed, 0xff, 0x47, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0xee, 0xb1, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x86, 0x5e, 0x61, 0x37, 0xd0, 0xd0, 0x2b, 0xd4, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0xbd, 0xc2, 0x70, 0xa0, 0xa1, 0x57, 0x58, 0x1f, 0x34, 0xfa, 0x52, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x86, 0x5e, 0x61, 0x3e, 0xd0, 0xd0, 0x2b, 0xb4, 0x1c, 0x34, 0x5a, 0x2f, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x7a, 0xc5, 0x1f, 0x34, 0x87, 0x18, 0xb9, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8e, 0x5e, 0x21, 0x1b, 0xe8, 0xe8, 0x15, 0xe6, 0x1b, 0x14, 0x93, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xe8, 0x15, 0xe2, 0x81, 0x8e, 0x5e, 0x61, 0xb9, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xf4, 0x0a, 0xf9, 0x40, 0x47, 0xaf, 0x30, 0x38, 0x08, 0xc1, 0x87, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xf4, 0x0a, 0x8b, 0x81, 0x8e, 0x5e, 0x61, 0x76, 0x70, 0x16, 0x13, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x47, 0xaf, 0xb0, 0x1b, 0xe8, 0xe8, 0x15, 0x86, 0x07, 0x45, 0x2a, 0x66, 0x1b, 0x34, 0x21, 0x20, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x96, 0x5e, 0xf1, 0x07, 0xcd, 0x21, 0x46, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2d, 0xbd, 0x42, 0x36, 0xd0, 0xd2, 0x2b, 0x34, 0x6c, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa5, 0x57, 0x88, 0x07, 0x5a, 0x7a, 0x85, 0xe1, 0x06, 0xc1, 0x66, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x96, 0x5e, 0x61, 0x30, 0xd0, 0xd2, 0x2b, 0x4c, 0x0e, 0x4e, 0x7b, 0x27, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xe9, 0x15, 0x36, 0x03, 0x2d, 0xbd, 0xc2, 0xee, 0x60, 0x7d, 0x44, 0x7a, 0x07, 0xad, 0x87, 0x0b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa7, 0x57, 0x48, 0x06, 0x7a, 0x7a, 0x85, 0x70, 0xc3, 0xdb, 0x3a, 0x07, 0x2d, 0xf2, 0x48, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xea, 0x15, 0x7f, 0xd0, 0x1c, 0x62, 0xe4, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xd4, 0x2b, 0x04, 0x03, 0x4d, 0xbd, 0x42, 0x72, 0x50, 0x50, 0x64, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa9, 0x57, 0x88, 0x06, 0x9a, 0x7a, 0x85, 0xfc, 0xf0, 0xc4, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x7a, 0x85, 0xc1, 0x40, 0x53, 0xaf, 0xb0, 0x39, 0x58, 0x2f, 0xfd, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xa6, 0x5e, 0x61, 0x34, 0xd0, 0xd4, 0x2b, 0x6c, 0x37, 0xbc, 0xad, 0x33, 0x38, 0x3c, 0x78, 0x7d, 0xd0, 0x22, 0x8f, 0x64, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xad, 0x57, 0x48, 0x06, 0xda, 0x7a, 0x85, 0xc9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xd6, 0x2b, 0x44, 0x03, 0x6d, 0xbd, 0x42, 0x7e, 0xd0, 0xd6, 0x9b, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x7a, 0x85, 0xc1, 0x40, 0x5b, 0xaf, 0xb0, 0x38, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xf5, 0x8a, 0x1f, 0xe8, 0xed, 0x15, 0x8a, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbe, 0x5e, 0x21, 0x1b, 0xe8, 0xeb, 0x15, 0x8a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbe, 0x5e, 0x21, 0x1c, 0xe8, 0xeb, 0x15, 0x96, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x1c, 0xad, 0x35, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xd7, 0x2b, 0x4c, 0x06, 0xfa, 0x7a, 0x85, 0xd1, 0x41, 0xd9, 0xf4, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xbe, 0x5e, 0x61, 0x35, 0xd0, 0xd7, 0x2b, 0x0c, 0x0f, 0x9a, 0x6b, 0xab, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0xbd, 0xc2, 0x74, 0xa0, 0xaf, 0x57, 0xe8, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x7a, 0x85, 0xed, 0x40, 0x5f, 0xaf, 0x50, 0x71, 0xd0, 0x68, 0xbd, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x7a, 0x85, 0x8e, 0x81, 0xbe, 0x5e, 0xa1, 0xe6, 0xa0, 0x45, 0x9e, 0xc3, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x5f, 0xaf, 0x50, 0x35, 0xd0, 0xd7, 0x2b, 0x74, 0x1d, 0x14, 0x14, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x7b, 0xc5, 0x1f, 0x34, 0x2a, 0x29, 0xb9, 0xe1, 0x13, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xf6, 0x0a, 0xd9, 0x40, 0x63, 0xaf, 0x50, 0xb4, 0xe1, 0x73, 0x97, 0x01, 0x6f, 0xad, 0x0c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xd8, 0x2b, 0xe4, 0x07, 0xed, 0x2e, 0x4b, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0xbd, 0xc2, 0x60, 0xa0, 0xb1, 0x57, 0xd8, 0x6f, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xb8, 0x89, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xb1, 0x57, 0x98, 0x0d, 0x34, 0xf6, 0x0a, 0xc3, 0x83, 0xb2, 0xa9, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0xbd, 0xc2, 0x72, 0xa0, 0xb1, 0x57, 0x98, 0x1f, 0x34, 0x33, 0x2f, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x7b, 0x85, 0x82, 0x81, 0xc6, 0x5e, 0xa1, 0xe7, 0xa0, 0xd1, 0x7a, 0xc1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xf6, 0x8a, 0x3f, 0x68, 0x54, 0x52, 0x72, 0x83, 0x12, 0x1e, 0x73, 0x0d, 0x9a, 0x6e, 0x96, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0xbd, 0x42, 0x32, 0xd0, 0xda, 0x2b, 0x94, 0x6c, 0xb0, 0xa4, 0x7e, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0xbd, 0x42, 0x38, 0xd0, 0xda, 0x2b, 0x14, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0xbd, 0x42, 0x3a, 0xd0, 0xda, 0x2b, 0xec, 0x36, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x00, 0x8f, 0x39, 0xba, 0x37, 0xb8, 0x16, 0xb6, 0xb7, 0xb9, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0xbd, 0xc2, 0x70, 0xa0, 0xb5, 0x57, 0xd8, 0x1f, 0x34, 0x5a, 0x2f, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd6, 0x5e, 0xa1, 0x61, 0xa0, 0xb5, 0x57, 0xe8, 0x38, 0x08, 0x4f, 0xd5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0xbd, 0xe2, 0x0f, 0x1a, 0x95, 0x94, 0xdc, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0x25, 0xb7, 0xaa, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0xbd, 0x42, 0x3a, 0xd0, 0xdb, 0x2b, 0x54, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0xbd, 0x42, 0x3c, 0xd0, 0xdb, 0x2b, 0x6c, 0x37, 0x28, 0x4b, 0xde, 0x37, 0x28, 0x5b, 0x50, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xdb, 0x2b, 0x8c, 0x06, 0x7a, 0x7b, 0x85, 0xd9, 0x41, 0xd9, 0xf4, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0x5e, 0x61, 0x37, 0xd0, 0xdb, 0x2b, 0x4c, 0x0f, 0x9a, 0x6b, 0xab, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0xbd, 0xc2, 0x78, 0xa0, 0xb7, 0x57, 0x68, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x7b, 0x85, 0xf5, 0x40, 0x6f, 0xaf, 0x50, 0x72, 0xd0, 0x68, 0xbd, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x7b, 0x85, 0x96, 0x81, 0xde, 0x5e, 0xa1, 0xe8, 0xa0, 0x45, 0x9e, 0xc3, 0x5a, 0x83, 0x76, 0x8f, 0x05, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xf6, 0x0a, 0x95, 0x03, 0xbd, 0xbd, 0x42, 0xef, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x1a, 0x8c, 0x97, 0x6c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xf7, 0x0a, 0xc9, 0x40, 0x77, 0xaf, 0x30, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x7b, 0x85, 0x68, 0xa0, 0xbb, 0x57, 0xc8, 0x0f, 0xda, 0xa0, 0x13, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x77, 0xaf, 0x30, 0x18, 0xe8, 0xee, 0x15, 0x16, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xf6, 0x5e, 0xf1, 0x03, 0xed, 0xbe, 0x42, 0xcd, 0x06, 0x47, 0x1b, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xf7, 0x0a, 0xd9, 0x40, 0x83, 0xaf, 0x50, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x2a, 0x66, 0xd4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xf7, 0x0a, 0xe9, 0x40, 0x7f, 0xaf, 0x10, 0x1f, 0x14, 0x14, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x7c, 0x85, 0xec, 0xa0, 0xfd, 0xb1, 0xc9, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc1, 0x57, 0x08, 0x07, 0x1a, 0x7c, 0x85, 0xf4, 0xa0, 0xa0, 0xc8, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x83, 0xaf, 0x10, 0x0f, 0x34, 0xf8, 0x0a, 0x9b, 0x83, 0x55, 0x0d, 0xc2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xf0, 0x15, 0x46, 0x03, 0x0d, 0xbe, 0x42, 0xdb, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xe0, 0x2b, 0xac, 0x06, 0x1a, 0x7c, 0x85, 0xf1, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xe0, 0x2b, 0xcc, 0x06, 0x1a, 0x7c, 0x85, 0xe5, 0xc1, 0x62, 0x9f, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xf8, 0x0a, 0xd3, 0x81, 0x06, 0x5f, 0x61, 0x7b, 0x50, 0x50, 0x64, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x06, 0x5f, 0x61, 0x3d, 0xd0, 0xe0, 0x2b, 0x94, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0xbe, 0xc2, 0x7c, 0xa0, 0xc1, 0x57, 0x68, 0x38, 0x58, 0xc0, 0x50, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x06, 0x5f, 0xa1, 0x62, 0xa0, 0xc1, 0x57, 0xe8, 0x38, 0x28, 0x28, 0x32, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x83, 0xaf, 0xd0, 0x32, 0xd0, 0xe0, 0x2b, 0x94, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0xbe, 0x42, 0xcd, 0x40, 0x83, 0xaf, 0xd0, 0x74, 0xb0, 0x14, 0x67, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0xbe, 0x42, 0xd5, 0x40, 0x83, 0xaf, 0xd0, 0x75, 0x50, 0x50, 0x64, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x7c, 0x85, 0xba, 0x81, 0x06, 0x5f, 0xa1, 0xf3, 0xa0, 0x75, 0x4e, 0xc7, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xf8, 0x8a, 0x3f, 0x68, 0xc9, 0x6b, 0x72, 0xc3, 0xe7, 0x2e, 0x1b, 0xac, 0x63, 0x46, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xe2, 0x2b, 0xfe, 0xa0, 0x25, 0xaf, 0xc9, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc5, 0x57, 0xc8, 0x06, 0x5a, 0x7c, 0x85, 0xed, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xba, 0xba, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x8b, 0xaf, 0x90, 0x1f, 0x34, 0xa9, 0x3c, 0xb9, 0x41, 0x21, 0x98, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc5, 0x57, 0x18, 0x1c, 0x34, 0xa9, 0x3c, 0xb9, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc5, 0x57, 0x58, 0x0c, 0xb4, 0xf8, 0x0a, 0xab, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x8b, 0xaf, 0x30, 0x1b, 0x68, 0xf1, 0x15, 0xa6, 0x07, 0x67, 0x82, 0xd1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0xf8, 0x8a, 0x3f, 0x68, 0xc9, 0x6b, 0x72, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x7c, 0x85, 0xec, 0xa0, 0x25, 0xaf, 0xc9, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc7, 0x57, 0xc8, 0x07, 0x7a, 0x7c, 0x85, 0x86, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0xbe, 0xc2, 0x60, 0xa0, 0xc7, 0x57, 0x18, 0x1d, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xf1, 0x15, 0x56, 0x03, 0x3d, 0xbe, 0x42, 0xc1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1e, 0x5f, 0x61, 0x36, 0xd0, 0xe3, 0x2b, 0x4c, 0x0f, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0xbe, 0xc2, 0x76, 0xa0, 0xc7, 0x57, 0xd8, 0x1f, 0x9c, 0x09, 0x46, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x93, 0xaf, 0xf8, 0x83, 0x96, 0xbc, 0x26, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x26, 0x5f, 0x21, 0x1b, 0x68, 0xf2, 0x15, 0x36, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x93, 0xaf, 0x90, 0x0e, 0x34, 0xf9, 0x0a, 0xf1, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc9, 0x57, 0xc8, 0x07, 0x9a, 0x7c, 0x85, 0xc9, 0x41, 0x8b, 0x3c, 0x87, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xf2, 0x15, 0x92, 0x81, 0x2e, 0x5f, 0x61, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xf9, 0x0a, 0xd1, 0x40, 0x97, 0xaf, 0x90, 0x1d, 0x14, 0x14, 0x99, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xf2, 0x15, 0xc2, 0x81, 0x2e, 0x5f, 0x21, 0xdf, 0xf0, 0xb6, 0xce, 0x06, 0x8d, 0x32, 0x4f, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x36, 0x5f, 0xf1, 0x07, 0x2d, 0x79, 0x4d, 0x6e, 0x50, 0xec, 0x68, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xcd, 0x57, 0xc8, 0x06, 0xda, 0x7c, 0x85, 0x82, 0x0d, 0x8a, 0x49, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xf9, 0x0a, 0xf1, 0x40, 0x9b, 0xaf, 0xb0, 0xdd, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x7c, 0x85, 0x7c, 0xa0, 0xcd, 0x57, 0x98, 0x6c, 0xf8, 0x73, 0x69, 0x70, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x9b, 0xaf, 0xb0, 0x38, 0x68, 0xbe, 0x88, 0xf2, 0x20, 0x4c, 0xc7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xe6, 0x2b, 0x6c, 0x06, 0xda, 0x7c, 0x85, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0x67, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xf9, 0x0a, 0xab, 0x83, 0xa6, 0xa2, 0x28, 0x0f, 0xc2, 0x74, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x6d, 0xbe, 0xc2, 0x6e, 0xa0, 0xcd, 0x57, 0x98, 0x6e, 0xf8, 0x73, 0x69, 0x70, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x9b, 0xaf, 0xb0, 0x3c, 0x68, 0x96, 0x8b, 0xf2, 0x20, 0x4c, 0xc7, 0x3a, 0x68, 0xac, 0xe7, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0xbe, 0x42, 0x32, 0xd0, 0xe7, 0x2b, 0x44, 0x07, 0x05, 0x45, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x46, 0x5f, 0xf1, 0x07, 0x2d, 0x79, 0x4d, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0xbe, 0x42, 0x36, 0xd0, 0xe8, 0x2b, 0x6c, 0x37, 0x7c, 0xee, 0xb2, 0x41, 0x51, 0xe8, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xd1, 0x57, 0xc8, 0x0f, 0x5a, 0x9f, 0xa3, 0xdc, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xb1, 0x9e, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0xbe, 0xc2, 0x6a, 0xa0, 0xd1, 0x57, 0x98, 0x6e, 0x78, 0x5b, 0x67, 0x70, 0xf9, 0xa0, 0xb1, 0x9e, 0xc3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xfa, 0x8a, 0x3f, 0x68, 0xc9, 0x6b, 0x72, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xe3, 0xf9, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x7d, 0x85, 0x64, 0xa0, 0xd5, 0x57, 0x88, 0x0e, 0x0a, 0x8a, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0xbe, 0xe2, 0x0f, 0x5a, 0xf2, 0x9a, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x7d, 0x85, 0x6c, 0xa0, 0xd7, 0x57, 0xe8, 0xda, 0xf0, 0xb9, 0xcb, 0x80, 0x47, 0x97, 0xd6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xf5, 0x15, 0xf2, 0x83, 0x66, 0x33, 0x29, 0x37, 0x5c, 0x52, 0x1b, 0x1c, 0xf6, 0x3b, 0xd6, 0xa0, 0xdd, 0x63, 0xc1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0xbe, 0xc2, 0x70, 0xa0, 0xd7, 0x57, 0xd8, 0x1f, 0xb4, 0x9e, 0x3f, 0xb8, 0x06, 0x8d, 0xf5, 0x1c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0xf5, 0x15, 0x5a, 0x06, 0x7a, 0x7d, 0x85, 0xaa, 0x0d, 0x6f, 0xeb, 0x0c, 0xee, 0x1e, 0x34, 0xd6, 0x73, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x66, 0x5f, 0xf1, 0x07, 0x2d, 0x79, 0x4d, 0x6e, 0x50, 0xc2, 0x63, 0xae, 0x41, 0xcb, 0x9b, 0x94, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xdb, 0x57, 0x48, 0x06, 0xba, 0x7d, 0x85, 0xe8, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xee, 0x2b, 0xfe, 0xa0, 0x25, 0xaf, 0xc9, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x1a, 0xeb, 0x39, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xee, 0x2b, 0xa4, 0x03, 0xed, 0xbe, 0xc2, 0x64, 0xc3, 0xdb, 0x3a, 0x83, 0xb3, 0x07, 0x8d, 0xf5, 0x1c, 0xae, 0x41, 0xbb, 0x30, 0x94, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x7d, 0x85, 0xe1, 0x40, 0xbb, 0xaf, 0xd0, 0xb2, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xfb, 0x0a, 0xcb, 0x81, 0x76, 0x5f, 0x61, 0xbe, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0x56, 0x6f, 0x29, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xee, 0x2b, 0xec, 0x07, 0xda, 0x7d, 0x85, 0x92, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1f, 0x1c, 0xcf, 0xdf, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xfc, 0x0a, 0xc9, 0x40, 0xc3, 0xaf, 0x30, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x7e, 0x85, 0x68, 0xa0, 0xe1, 0x57, 0xc8, 0x0f, 0xda, 0xc4, 0x13, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xc3, 0xaf, 0x30, 0x18, 0x68, 0xf8, 0x15, 0x16, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8e, 0x5f, 0xf1, 0x03, 0x8d, 0xbf, 0xc2, 0x81, 0x0d, 0x0a, 0x82, 0xd9, 0x0d, 0x1a, 0xeb, 0x39, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xcb, 0xaf, 0x90, 0x0c, 0xb4, 0xfc, 0x0a, 0x3d, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xf9, 0x15, 0xc2, 0x81, 0x96, 0x5f, 0x61, 0xb4, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xfc, 0x0a, 0xf1, 0x40, 0xcb, 0xaf, 0x90, 0x1f, 0x14, 0x14, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x7e, 0x85, 0xc1, 0x40, 0xcb, 0xaf, 0xb0, 0x39, 0x68, 0x91, 0xe7, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2d, 0xbf, 0xc2, 0x6a, 0xa0, 0xe5, 0x57, 0x98, 0x1d, 0x14, 0x14, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x7e, 0x85, 0xdd, 0x40, 0xcb, 0xaf, 0x50, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0xfc, 0x0a, 0xc3, 0x81, 0x96, 0x5f, 0x61, 0x79, 0x50, 0x50, 0x64, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xe5, 0x57, 0x98, 0x0e, 0xb4, 0xfc, 0x0a, 0xfb, 0xc3, 0x13, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xf9, 0x15, 0x0a, 0x06, 0x5a, 0x7e, 0x85, 0x8e, 0x83, 0x75, 0xeb, 0x70, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xf9, 0x15, 0x4a, 0x06, 0x5a, 0x7e, 0x85, 0x96, 0x83, 0x82, 0x22, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0xbf, 0xe2, 0x0f, 0x5a, 0xaa, 0xa7, 0xdc, 0xa0, 0xd8, 0xd1, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xcf, 0xaf, 0x90, 0x0d, 0xf4, 0xfc, 0x0a, 0xab, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xe7, 0x57, 0x48, 0x07, 0x7a, 0x7e, 0x85, 0xf8, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xf3, 0x2b, 0xe4, 0x03, 0x3d, 0xbf, 0xc2, 0xe8, 0xa0, 0xc9, 0x7d, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xfd, 0x0a, 0xc9, 0x40, 0xd3, 0xaf, 0x10, 0x1d, 0x14, 0x14, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x7e, 0xc5, 0x1f, 0xb4, 0x54, 0x4f, 0xb9, 0xe1, 0x13, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xfd, 0x0a, 0xd9, 0x40, 0xd7, 0xaf, 0x50, 0xb5, 0xe1, 0x73, 0x97, 0x0d, 0x5a, 0x4c, 0xec, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xf5, 0x2b, 0xe4, 0x07, 0xed, 0x52, 0x55, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0xee, 0xb1, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xae, 0x5f, 0x61, 0x37, 0xd0, 0xf5, 0x2b, 0xcc, 0x0f, 0x5a, 0xcf, 0x1f, 0x5c, 0x83, 0xc6, 0x7a, 0x0e, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0xfd, 0x0a, 0x25, 0x03, 0x5d, 0xbf, 0x42, 0xd3, 0x41, 0x33, 0x46, 0x88, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xfb, 0x15, 0x7f, 0xd0, 0x52, 0x3d, 0xe5, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x4d, 0x6b, 0xf6, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xef, 0x57, 0x48, 0x06, 0xfa, 0x7e, 0x85, 0xe8, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xf8, 0x2b, 0xfe, 0xa0, 0xa5, 0x7a, 0xca, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xf1, 0x57, 0x08, 0x06, 0x1a, 0x7f, 0x85, 0xe4, 0xa0, 0xa0, 0xc8, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe3, 0xaf, 0x10, 0x0d, 0x34, 0xfe, 0x0a, 0xf9, 0xc1, 0xaa, 0x06, 0xe1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xfe, 0x0a, 0x83, 0x81, 0xc6, 0x5f, 0xa1, 0x69, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xfc, 0x15, 0x16, 0x03, 0x8d, 0xbf, 0xc2, 0x70, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xfc, 0x15, 0x26, 0x03, 0x8d, 0xbf, 0xc2, 0xea, 0x60, 0xb1, 0xcf, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x7f, 0x85, 0xd9, 0x40, 0xe3, 0xaf, 0xb0, 0x3b, 0x28, 0x28, 0x32, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe3, 0xaf, 0xb0, 0x1c, 0x68, 0xfc, 0x15, 0x0a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0x5f, 0x61, 0x3a, 0xd0, 0xf8, 0x2b, 0xac, 0x0f, 0x96, 0x4e, 0xd0, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xf1, 0x57, 0x98, 0x0f, 0x34, 0xfe, 0x0a, 0xfb, 0x83, 0x82, 0x22, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0xfe, 0x0a, 0x0d, 0x03, 0x8d, 0xbf, 0x42, 0xd1, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xf8, 0x2b, 0x54, 0x0c, 0x34, 0xfe, 0x0a, 0x2d, 0x07, 0x8b, 0x34, 0x67, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xf8, 0x2b, 0xd4, 0x0c, 0x34, 0xfe, 0x0a, 0x3d, 0x07, 0x05, 0x45, 0x66, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xf1, 0x57, 0xa8, 0x1a, 0x68, 0xfc, 0x15, 0x7a, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0x5f, 0xa1, 0x6b, 0xa0, 0xf1, 0x57, 0x28, 0x3c, 0x3c, 0x71, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0x5f, 0xa1, 0x71, 0xa0, 0xf1, 0x57, 0x28, 0x3d, 0x58, 0xb7, 0x0e, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0x5f, 0xa1, 0x75, 0xa0, 0xf1, 0x57, 0xa8, 0x3d, 0x28, 0x28, 0x32, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xe3, 0xaf, 0x50, 0x3c, 0xd0, 0xf8, 0x2b, 0xb4, 0x1f, 0xb4, 0xd3, 0xde, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0x5f, 0xa1, 0x7e, 0xa0, 0xf1, 0x57, 0xe8, 0x3f, 0x28, 0x28, 0x32, 0x5b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0xbf, 0x42, 0x32, 0xd0, 0xfa, 0x2b, 0x4c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd6, 0x5f, 0x21, 0x1a, 0x68, 0xfd, 0x15, 0xf2, 0x83, 0xe5, 0x32, 0xdf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0xfd, 0x15, 0x06, 0x03, 0xad, 0xbf, 0xc2, 0xe2, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xfb, 0x2b, 0x7e, 0xa0, 0xf7, 0x57, 0xd8, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0xee, 0xb1, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0x5f, 0x21, 0x1f, 0xe8, 0xfd, 0x15, 0x66, 0x07, 0xad, 0xe7, 0x0f, 0xd6, 0x6a, 0xd0, 0xc0, 0xf9, 0xd2, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x80, 0x25, 0x71, 0x83, 0x66, 0x65, 0x12, 0x5b, 0x0d, 0xda, 0x12, 0x05, 0xdc, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0x1d, 0x79, 0xc3, 0x83, 0x30, 0x1d, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x6d, 0x6b, 0xc3, 0x36, 0x68, 0x56, 0x26, 0x71, 0x83, 0x16, 0x79, 0x0e, 0x3b, 0x9c, 0x62, 0x75, 0x38, 0xc5, 0x56, 0xc0, 0x9f, 0x5b, 0x7b, 0x63, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1a, 0x82, 0xb0, 0x6c, 0x00, 0x3a, 0x41, 0x48, 0x5a, 0x50, 0xe8, 0xf2, 0xe0, 0xca, 0x40, 0xe8, 0xc2, 0xdc, 0xd6, 0x52, 0x40, 0xea, 0xe6, 0xd2, 0xdc, 0xce, 0x40, 0xc8, 0xea, 0xc6, 0xd6, 0x5c, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0x25, 0x79, 0xb0, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x26, 0x18, 0xdd, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x11, 0x37, 0xa9, 0x83, 0xb6, 0xd7, 0xff, 0x56, 0xc0, 0x1f, 0x0b, 0x4b, 0x73, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xd0, 0x24, 0x69, 0x41, 0xb1, 0x0b, 0x9b, 0x2b, 0x03, 0xa1, 0x0b, 0x73, 0x5b, 0x4b, 0x1d, 0xb4, 0x02, 0x21, 0xb8, 0x1a, 0xf2, 0xd8, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x87, 0x3c, 0x76, 0x03, 0xf8, 0x8f, 0xc9, 0x85, 0xcd, 0xa1, 0x81, 0xdc, 0xa5, 0xd1, 0xa1, 0x81, 0xd0, 0xc9, 0x85, 0x8d, 0x95, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x56, 0xc2, 0x03, 0x37, 0x7c, 0xfd, 0xb2, 0x41, 0x78, 0xaa, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0x83, 0xf0, 0x54, 0xdd, 0xf0, 0x96, 0xdd, 0xc1, 0x51, 0x5a, 0x71, 0x16, 0xf0, 0xe7, 0xd8, 0xde, 0xe8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x66, 0x7a, 0x2c, 0x1b, 0xc0, 0xff, 0xec, 0x8d, 0x0e, 0x24, 0x0c, 0x2f, 0x6d, 0x0e, 0x24, 0xcd, 0x0d, 0xc4, 0x2e, 0x6c, 0xae, 0x6c, 0xc3, 0x2f, 0x4a, 0x1b, 0xb4, 0x75, 0x17, 0xb8, 0xe1, 0x2f, 0x9a, 0x0d, 0x9a, 0xdd, 0x8e, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0xfd, 0x05, 0xae, 0xc1, 0x82, 0x90, 0xa5, 0x0d, 0x9a, 0x07, 0x8f, 0xda, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0x0e, 0x5a, 0x29, 0xdb, 0xea, 0x70, 0x8a, 0x2d, 0xe0, 0xcf, 0xb1, 0xe5, 0xb5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xed, 0x4a, 0x59, 0x36, 0x00, 0x3f, 0x73, 0x6c, 0x61, 0x6d, 0x20, 0x77, 0x2b, 0x6f, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xb4, 0x6a, 0x13, 0x78, 0xb0, 0x0c, 0xfd, 0x77, 0xc3, 0x5f, 0x34, 0x1b, 0x34, 0xbb, 0x1d, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xcb, 0x0f, 0x52, 0xad, 0xe1, 0x92, 0xda, 0x60, 0x3d, 0xf7, 0xf0, 0x6a, 0x48, 0x1d, 0x1c, 0x1c, 0x71, 0x32, 0x0e, 0x96, 0xc9, 0x0f, 0xb7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xaf, 0xa4, 0xe0, 0x60, 0xed, 0x9e, 0x7a, 0x87, 0x53, 0xac, 0x6a, 0x16, 0xe0, 0x83, 0x0b, 0x93, 0x9b, 0x2b, 0x93, 0x97, 0x01, 0x7c, 0x6a, 0xc8, 0x74, 0x40, 0xe0, 0xc2, 0xe4, 0xe6, 0xca, 0xe4, 0x16, 0xf0, 0xed, 0xc2, 0xe6, 0xe8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x66, 0xe9, 0x2c, 0x1b, 0x80, 0x87, 0xb6, 0xb0, 0x34, 0x37, 0x10, 0xb8, 0x30, 0xb9, 0xb9, 0x34, 0xb7, 0x33, 0x90, 0xb1, 0x37, 0xb9, 0xb2, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0x89, 0xd5, 0x9d, 0x07, 0xeb, 0x98, 0x4e, 0xd7, 0xf0, 0xb9, 0xcb, 0x80, 0x77, 0x57, 0x26, 0x6f, 0x50, 0x08, 0xa6, 0x1e, 0x9c, 0x91, 0x50, 0xd7, 0xf0, 0xb9, 0xcb, 0x80, 0x47, 0xf6, 0x36, 0x1e, 0x34, 0x59, 0x2e, 0xd5, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x80, 0x2f, 0xf7, 0xf6, 0x46, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x2c, 0xb0, 0x33, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0xa0, 0x01, 0x09, 0x84, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xc3, 0xbd, 0xbd, 0xc9, 0xd5, 0x0a, 0xf8, 0x72, 0x75, 0x6d, 0xf0, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x4b, 0xec, 0x58, 0xd7, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x07, 0x6b, 0x47, 0x9e, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0xc1, 0x02, 0x09, 0xe7, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x02, 0x09, 0xe7, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x9f, 0x07, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xda, 0x48, 0x2f, 0x38, 0x3c, 0xf4, 0xb3, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x3e, 0x57, 0x3a, 0x58, 0xf9, 0xfa, 0x7e, 0x78, 0x70, 0x67, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x14, 0x99, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa6, 0xb4, 0x0a, 0x36, 0x58, 0x97, 0x5d, 0x77, 0x70, 0x08, 0xf5, 0x3b, 0x38, 0x22, 0x16, 0x6c, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x97, 0x7b, 0x83, 0x2b, 0x5b, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0xa0, 0xa0, 0xc8, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0xfe, 0x5d, 0x19, 0x59, 0x59, 0x07, 0x4b, 0x4c, 0x4a, 0x5b, 0x01, 0x7f, 0x8e, 0xae, 0xac, 0xdd, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x75, 0x2f, 0xeb, 0x1a, 0x14, 0x82, 0xa9, 0x07, 0x0b, 0x2c, 0x9c, 0x37, 0x38, 0x0f, 0x76, 0x6c, 0xb0, 0x1c, 0x92, 0x69, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xc7, 0x78, 0xd3, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x34, 0x33, 0xef, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x9a, 0x99, 0xf7, 0xc1, 0x02, 0x0b, 0xe7, 0x0e, 0x4e, 0xe9, 0xa6, 0x1b, 0x14, 0x04, 0xb3, 0x1b, 0x1c, 0xe2, 0x4d, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x4d, 0x69, 0x15, 0x6c, 0xb0, 0x2e, 0xbb, 0xee, 0x60, 0x8d, 0x93, 0xfa, 0x86, 0x0f, 0x72, 0xd6, 0xa0, 0x98, 0xc4, 0xdc, 0xa0, 0x95, 0x68, 0xcb, 0x8d, 0x43, 0x07, 0x87, 0x78, 0xd3, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x9a, 0x99, 0xf7, 0xc1, 0x21, 0xde, 0x74, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xb6, 0x7d, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x4a, 0xab, 0x60, 0x83, 0x75, 0xd9, 0x75, 0x6b, 0xb8, 0xa4, 0x36, 0x68, 0x20, 0xdc, 0xb2, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x8d, 0xf6, 0x15, 0x1c, 0xac, 0x71, 0x52, 0x6f, 0x83, 0x03, 0x16, 0xdd, 0x1a, 0x9c, 0xd8, 0x6f, 0x36, 0x58, 0xd3, 0xcc, 0xba, 0xc1, 0xb1, 0xcd, 0x71, 0x83, 0x65, 0xd3, 0xac, 0x1b, 0x1c, 0xdb, 0x1c, 0x37, 0x58, 0xa2, 0xcd, 0xba, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x96, 0x8c, 0xa9, 0x6f, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x73, 0x70, 0x69, 0x74, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0x0b, 0x89, 0xb0, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x49, 0xba, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x4b, 0x32, 0x68, 0xdb, 0x60, 0x9d, 0x23, 0x66, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x35, 0xb3, 0xa1, 0x1b, 0xac, 0x71, 0x26, 0x5d, 0xc3, 0xdb, 0x3a, 0x03, 0xfe, 0x5d, 0x1a, 0x59, 0x59, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc1, 0x7e, 0xcb, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x42, 0x4d, 0xd2, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x36, 0x40, 0xdb, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x61, 0xe2, 0x6c, 0x1d, 0x34, 0xc2, 0x70, 0xd9, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0xd3, 0x63, 0xd9, 0xc1, 0xc2, 0x7a, 0xd6, 0xd6, 0xa0, 0x30, 0x54, 0xdd, 0x60, 0xed, 0x39, 0xed, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x82, 0x13, 0xba, 0x41, 0x52, 0x5a, 0xf0, 0xc1, 0xfa, 0x3e, 0xf5, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x58, 0x47, 0xa8, 0xbe, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0xcf, 0xb8, 0xdc, 0x60, 0x2d, 0xa2, 0x7a, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0x66, 0xe3, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x9f, 0x71, 0xb9, 0xc1, 0x7a, 0x49, 0xf5, 0xd6, 0xa0, 0x30, 0x54, 0xdd, 0x60, 0x11, 0x9e, 0xdc, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0xc1, 0xda, 0x17, 0xd2, 0x0d, 0xd6, 0x74, 0xaa, 0xb7, 0x06, 0x85, 0xa1, 0xea, 0x06, 0xeb, 0xd6, 0xe1, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xf3, 0x19, 0x97, 0x1b, 0xac, 0x3b, 0x55, 0x6f, 0x83, 0x15, 0xbf, 0xea, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0x74, 0x82, 0x76, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x9f, 0x63, 0x4b, 0x83, 0x3b, 0x68, 0x18, 0xe2, 0x72, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x96, 0xa3, 0xd0, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xb6, 0x7b, 0x2e, 0x0f, 0x5a, 0xfe, 0xb7, 0x6c, 0x99, 0x35, 0x68, 0xcd, 0xdf, 0x72, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x1f, 0x2c, 0x4d, 0x15, 0xdd, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x05, 0xda, 0xea, 0x1a, 0xde, 0xb8, 0x3b, 0x68, 0x3d, 0xda, 0x72, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x9a, 0x53, 0x00, 0x3c, 0x28, 0xc7, 0xf1, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x02, 0x0b, 0xe7, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xda, 0xf6, 0xc1, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x29, 0xad, 0x82, 0x83, 0xc5, 0xf1, 0xac, 0x87, 0xb7, 0xd0, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xab, 0x86, 0x8b, 0x3a, 0x58, 0x04, 0x60, 0xba, 0xc1, 0xd2, 0x7a, 0xd6, 0x83, 0x43, 0x5f, 0xdf, 0x6a, 0xd0, 0x4c, 0x8f, 0xe5, 0x06, 0x85, 0x72, 0xe7, 0x06, 0x0d, 0x24, 0x5d, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x25, 0x76, 0xac, 0x1b, 0xac, 0x52, 0x52, 0x3f, 0x38, 0xf4, 0xf5, 0xcd, 0x1a, 0x34, 0xec, 0x73, 0xb9, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0x03, 0x49, 0x97, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x06, 0x2d, 0x36, 0x5d, 0x1e, 0x1c, 0xfa, 0xfa, 0x0e, 0xa7, 0x58, 0x87, 0x53, 0x6c, 0x05, 0xfc, 0xb9, 0xba, 0x36, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd4, 0x24, 0x5d, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x45, 0xfc, 0xb4, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x96, 0xa1, 0xcc, 0xd6, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x06, 0xcd, 0x97, 0x20, 0x1c, 0xb4, 0x90, 0x70, 0xd9, 0x0a, 0xf8, 0x6c, 0x75, 0x74, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xab, 0x81, 0x97, 0x0d, 0xe0, 0x47, 0x17, 0xc6, 0xc6, 0x06, 0xb2, 0xd5, 0x05, 0xe2, 0xf6, 0x56, 0xe7, 0xb6, 0xc1, 0x72, 0x48, 0xa6, 0xd9, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x7e, 0x51, 0xda, 0x60, 0x81, 0x85, 0xf3, 0xc1, 0x69, 0xe5, 0x6c, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0x5f, 0x82, 0xb0, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x42, 0x4d, 0xd2, 0x35, 0xfc, 0xe2, 0xb2, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0x41, 0xbb, 0x13, 0x97, 0x1b, 0xac, 0x10, 0x29, 0x6d, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0x15, 0x22, 0xa5, 0x07, 0xed, 0x56, 0x5c, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0xcc, 0x86, 0x6e, 0xb0, 0x42, 0xa4, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x74, 0x61, 0x6c, 0x6c, 0xad, 0x06, 0x0d, 0xe1, 0x5a, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x34, 0x84, 0x6b, 0xd9, 0x00, 0x1e, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0xac, 0xee, 0x65, 0x5d, 0x83, 0x42, 0x30, 0xf5, 0x60, 0xed, 0xc8, 0xf3, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0x96, 0x43, 0x32, 0xcd, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0x35, 0xb1, 0x6d, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x78, 0xb0, 0xc2, 0x78, 0x7b, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x1e, 0xac, 0x1d, 0x79, 0xee, 0xa0, 0xe4, 0x0b, 0x6e, 0x83, 0xb5, 0x2f, 0xa4, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x09, 0x4e, 0xe8, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x99, 0x93, 0xec, 0xc1, 0x12, 0x19, 0xd6, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x3a, 0xa8, 0xd9, 0x5a, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x50, 0xc2, 0xb9, 0xaf, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x83, 0xf5, 0x5a, 0xcf, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0xc3, 0x7b, 0x41, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x99, 0x93, 0xec, 0x06, 0x2b, 0x25, 0x55, 0x37, 0x58, 0x04, 0x90, 0xda, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x18, 0xba, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xad, 0x45, 0x5b, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x1b, 0x2c, 0xad, 0x67, 0xdd, 0xa0, 0x9d, 0x8f, 0xcb, 0x5a, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1e, 0x2c, 0xe9, 0x73, 0xde, 0xf0, 0x8b, 0xcb, 0xc1, 0x52, 0xb1, 0xdb, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x65, 0x00, 0xa6, 0x07, 0xeb, 0x35, 0x56, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x4b, 0x3b, 0x65, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x1b, 0xbe, 0x5c, 0xda, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x85, 0x76, 0xef, 0x06, 0x47, 0x0e, 0xc9, 0x0e, 0x82, 0x95, 0xf5, 0x60, 0xbd, 0xc6, 0x6a, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x35, 0x76, 0xb3, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x0d, 0x5f, 0x2e, 0x6d, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x1b, 0x34, 0xae, 0x7f, 0x79, 0x50, 0x10, 0x8f, 0x1f, 0xac, 0xd7, 0x58, 0x6d, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x64, 0xe4, 0xb4, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x0d, 0x8f, 0xc9, 0x1c, 0x2c, 0x97, 0x5f, 0xad, 0xc3, 0x29, 0xb6, 0x06, 0xad, 0x8f, 0x5e, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xb4, 0x3e, 0x7a, 0xd9, 0x00, 0xbe, 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x74, 0x61, 0x6c, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0xac, 0xee, 0x65, 0xdd, 0xa0, 0x05, 0x63, 0xcb, 0x0d, 0xce, 0x83, 0x1d, 0x1b, 0x2c, 0x87, 0x64, 0x9a, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0xff, 0x2e, 0x4c, 0x8e, 0x6e, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x7f, 0x8c, 0x2d, 0x8c, 0x6c, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x7c, 0xca, 0xf0, 0xe0, 0xe4, 0xca, 0xe6, 0xe6, 0xd2, 0xde, 0xdc, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x7c, 0xb7, 0x37, 0xb9, 0xb6, 0x83, 0xf4, 0x14, 0xa8, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xb3, 0xbd, 0xb9, 0x9d, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x5a, 0x0d, 0xbc, 0x6c, 0x0d, 0x0f, 0x4a, 0x6e, 0xd0, 0x64, 0xf7, 0xd8, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x3f, 0x17, 0x96, 0xc6, 0x76, 0x90, 0x9e, 0x02, 0x55, 0xad, 0x80, 0x3f, 0x37, 0x96, 0x57, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xb4, 0xec, 0x83, 0xd9, 0x00, 0xfc, 0xdc, 0xa5, 0xd1, 0xa1, 0x81, 0xc0, 0xc9, 0x95, 0x99, 0xa5, 0xe1, 0x81, 0x90, 0xbd, 0x8d, 0x8d, 0xbd, 0xc9, 0x91, 0xcd, 0x6d, 0x50, 0x28, 0x77, 0x6e, 0xb0, 0xa4, 0xc8, 0x76, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0x5d, 0xc3, 0x83, 0x92, 0x1b, 0x34, 0xd9, 0x3d, 0xb6, 0xe1, 0x6d, 0x9d, 0x01, 0x9f, 0xec, 0x6d, 0x6c, 0x6e, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x15, 0x22, 0xa5, 0x07, 0x8b, 0xdf, 0x6c, 0x5b, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x29, 0x5d, 0x83, 0x42, 0x30, 0x75, 0xc3, 0xbf, 0xf3, 0x6b, 0xb0, 0x6a, 0x9b, 0xbc, 0x3a, 0x58, 0xfc, 0x66, 0xdb, 0x0a, 0xf8, 0x77, 0x79, 0x64, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xab, 0x61, 0x98, 0x0d, 0xe0, 0xdb, 0xf6, 0xc6, 0x46, 0x06, 0x72, 0x97, 0x46, 0x56, 0x06, 0x62, 0xf6, 0x26, 0xd7, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xea, 0x5e, 0xd6, 0x35, 0x28, 0x04, 0x53, 0x0f, 0x16, 0x58, 0x41, 0x6f, 0x70, 0x1e, 0xec, 0xd8, 0x60, 0x39, 0x24, 0xd3, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x77, 0x65, 0x72, 0x74, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x1c, 0x2c, 0x66, 0x19, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0xed, 0xc1, 0x60, 0x1e, 0xa4, 0xda, 0xc2, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0x7f, 0x6e, 0x2c, 0x8c, 0xac, 0x56, 0xc0, 0x9f, 0x1b, 0x0b, 0xa3, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0xdd, 0xcb, 0xba, 0x41, 0x0b, 0xc6, 0x96, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x0e, 0xc9, 0x34, 0x1b, 0x9c, 0xd8, 0x6f, 0x36, 0x58, 0xd3, 0xcc, 0xba, 0xc1, 0xb1, 0xcd, 0x71, 0x83, 0x65, 0xd3, 0xac, 0x1b, 0x1c, 0xdb, 0x1c, 0x37, 0x58, 0xa2, 0xcd, 0xba, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0xd6, 0xf5, 0xbe, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0xb4, 0x90, 0xa7, 0xb0, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x41, 0xd3, 0xc7, 0x97, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x56, 0xc3, 0x30, 0xab, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0xda, 0x48, 0x2f, 0xd8, 0xa0, 0xad, 0x5b, 0xcb, 0x5a, 0x83, 0xc2, 0x50, 0x75, 0x83, 0x05, 0x81, 0xb4, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x06, 0x0d, 0x90, 0x3d, 0xac, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0xd6, 0xb4, 0xd1, 0x76, 0xd0, 0x08, 0xc3, 0x65, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x2c, 0xb0, 0x72, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc1, 0x09, 0xdd, 0xa0, 0xa0, 0xc8, 0x5c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0xdd, 0xa0, 0x55, 0x54, 0xcc, 0x0d, 0x5a, 0x45, 0xc5, 0xac, 0x5a, 0x83, 0xc2, 0x50, 0x75, 0x83, 0x25, 0x65, 0x73, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x0b, 0x19, 0x44, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x68, 0x21, 0x4f, 0x61, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0xf6, 0xaf, 0x24, 0x0e, 0x1a, 0x61, 0xb8, 0xac, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x58, 0x7b, 0x4e, 0xbb, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0x6e, 0xb0, 0xc2, 0x4f, 0x7d, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0xc3, 0x13, 0x77, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0xac, 0xcb, 0xae, 0x3b, 0x68, 0x3c, 0xfc, 0xb2, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x4f, 0xdc, 0x6d, 0xb0, 0x68, 0x58, 0xbd, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x4f, 0xdc, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xd8, 0xb1, 0xae, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x78, 0x90, 0x7e, 0x1c, 0xbc, 0xe1, 0x83, 0x9c, 0x35, 0x28, 0x26, 0x31, 0x37, 0x48, 0x19, 0x0c, 0x3e, 0x28, 0x9d, 0xdf, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x67, 0x29, 0xb0, 0x0d, 0x4a, 0x1d, 0xfd, 0x0e, 0x0a, 0x8a, 0xcc, 0x83, 0xc5, 0xec, 0xe7, 0xd5, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x55, 0x4b, 0xcb, 0x5a, 0x83, 0xc2, 0x50, 0x75, 0x83, 0xf5, 0xd2, 0x6f, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x3d, 0xa3, 0x6c, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0x20, 0x81, 0xb0, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x62, 0xc7, 0xba, 0x06, 0x8b, 0x0b, 0x93, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3c, 0x28, 0xb3, 0x74, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0x86, 0x7f, 0xe7, 0xd7, 0x60, 0x7d, 0x81, 0x73, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xc3, 0xbd, 0xcd, 0xa1, 0x6d, 0x50, 0x50, 0x64, 0x6e, 0x50, 0x50, 0x64, 0x1e, 0x7e, 0x3f, 0x5b, 0xc3, 0xdb, 0x3a, 0x03, 0x3e, 0xdc, 0x9b, 0xdc, 0x58, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xd0, 0x94, 0x56, 0xc1, 0x41, 0x4b, 0xd0, 0x98, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0xa5, 0x55, 0xb0, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0x8a, 0x93, 0xd3, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x09, 0x4e, 0xe8, 0x06, 0x45, 0x4e, 0xeb, 0x06, 0x8d, 0xcd, 0x5f, 0x56, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0xa5, 0x55, 0xb0, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0x8a, 0x93, 0xd3, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x09, 0x4e, 0xe8, 0x06, 0x05, 0x6c, 0xfe, 0x06, 0x6d, 0x08, 0x60, 0x56, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0xa5, 0x55, 0x70, 0xd0, 0xd6, 0x35, 0xe6, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xbe, 0xda, 0xdb, 0xd8, 0xda, 0x41, 0x7a, 0x0a, 0xd4, 0xc1, 0x62, 0xf6, 0xf3, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x1a, 0x90, 0x40, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xb1, 0x63, 0x5d, 0xc3, 0x2f, 0x4a, 0x1b, 0x94, 0x70, 0xee, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x49, 0x81, 0xcc, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x56, 0x4a, 0xaa, 0x1e, 0x94, 0x75, 0x9e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x8a, 0xa1, 0x1b, 0xb4, 0x04, 0x8f, 0x59, 0xd5, 0x1a, 0x14, 0x86, 0xaa, 0x1b, 0x2c, 0x8f, 0x84, 0xdb, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x06, 0xcd, 0x6f, 0x5a, 0x6e, 0xf8, 0xc5, 0x65, 0x83, 0xe6, 0x4c, 0x12, 0x36, 0x3c, 0xad, 0x73, 0x50, 0xd6, 0x79, 0x1e, 0x34, 0xda, 0x89, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0xeb, 0xeb, 0x0e, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x34, 0x36, 0x7f, 0x79, 0xd0, 0xba, 0xc0, 0x65, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0xb4, 0xe5, 0x90, 0x79, 0xd0, 0xb8, 0xaf, 0xe5, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x06, 0x8d, 0xf6, 0x15, 0x1c, 0xb4, 0x16, 0x91, 0xd9, 0x1a, 0x14, 0x86, 0xaa, 0x1b, 0x2c, 0xaa, 0x80, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x68, 0xb4, 0xaf, 0xe0, 0xa0, 0xad, 0x6b, 0xcc, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x58, 0x8e, 0x42, 0x7b, 0xd0, 0xf6, 0xbf, 0xe5, 0x1a, 0x14, 0x86, 0xaa, 0x1b, 0xac, 0x56, 0x9d, 0xdd, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x68, 0x3d, 0x4c, 0x61, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xca, 0x73, 0xb6, 0x83, 0x96, 0x30, 0x31, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc1, 0x09, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0xa0, 0xf2, 0x3e, 0x68, 0xcc, 0x41, 0x6a, 0x83, 0x06, 0xe0, 0x32, 0x6b, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x96, 0x3f, 0xcf, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x45, 0xc2, 0xb3, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xb0, 0x80, 0xca, 0x7b, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x26, 0x35, 0x2f, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0xdf, 0xf6, 0x46, 0x17, 0x56, 0xad, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0x42, 0x87, 0xb7, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x66, 0xa8, 0x12, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x58, 0x06, 0x60, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x49, 0xba, 0x41, 0xfb, 0x04, 0x97, 0x07, 0x8d, 0x30, 0x5c, 0xd6, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0x36, 0x58, 0xd3, 0xf3, 0xdc, 0x06, 0x85, 0xa1, 0xea, 0x06, 0x0d, 0xff, 0x30, 0x6c, 0xf8, 0xc5, 0x65, 0x83, 0xc6, 0xc5, 0x09, 0xd6, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x58, 0xd3, 0xf3, 0xbc, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x22, 0x68, 0x3b, 0x38, 0x4b, 0x25, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0xcc, 0x86, 0x6e, 0xb0, 0x1e, 0x79, 0x7e, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x65, 0x00, 0xa6, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x9f, 0x7b, 0x4b, 0x63, 0xab, 0x0d, 0x1a, 0x1d, 0xca, 0x6c, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0xd6, 0x6c, 0xbc, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0xda, 0x57, 0x70, 0xd0, 0x2a, 0xcb, 0xe5, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x1b, 0xb4, 0xad, 0x99, 0xb9, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x90, 0x40, 0x58, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x87, 0x43, 0x0b, 0xc3, 0x3b, 0x3c, 0xf4, 0xd3, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x33, 0x1b, 0xba, 0xc1, 0x7a, 0xe4, 0xf9, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0x16, 0x0b, 0x85, 0x1e, 0xb4, 0x24, 0x9b, 0xd9, 0x41, 0xc3, 0xb4, 0x99, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0x08, 0x4f, 0x6e, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa7, 0x92, 0x79, 0x90, 0x6a, 0x0b, 0xb7, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0xc1, 0xda, 0x17, 0xd2, 0x35, 0x3c, 0x28, 0xb9, 0xc1, 0x5a, 0x92, 0xd6, 0x83, 0xc5, 0xf0, 0xe7, 0x75, 0xd0, 0x30, 0x6d, 0xe6, 0x1a, 0x14, 0x86, 0xaa, 0x1b, 0x2c, 0xe0, 0x67, 0xdd, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0xbf, 0x83, 0x3d, 0x68, 0xca, 0xd3, 0x72, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0xe7, 0x41, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x46, 0xfb, 0x0a, 0x0e, 0x0f, 0xfd, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x94, 0x56, 0xc1, 0xe1, 0xa1, 0x9f, 0x83, 0x23, 0x62, 0xc1, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0xc1, 0x5a, 0x44, 0xf5, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xe3, 0xd2, 0xdb, 0x41, 0xe3, 0xbe, 0x96, 0xad, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0x8a, 0xde, 0xd9, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x85, 0x70, 0xa4, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0xb4, 0x8b, 0xc2, 0x70, 0xd0, 0xba, 0xc0, 0xe5, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x0b, 0xec, 0x4c, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x68, 0xf8, 0x87, 0xe1, 0xa0, 0x11, 0x86, 0xcb, 0x6a, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x56, 0x9e, 0xd2, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x2c, 0xe6, 0x1f, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0xa0, 0x81, 0xbf, 0x84, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x42, 0x4d, 0xd2, 0x0d, 0xda, 0x27, 0xb8, 0x5c, 0x83, 0x15, 0x42, 0x4d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x3f, 0x63, 0x0b, 0x6b, 0xdb, 0xa0, 0x19, 0x86, 0xcb, 0x83, 0x46, 0x18, 0x2e, 0x6b, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0xd8, 0xb1, 0xae, 0xe1, 0x17, 0xa5, 0x0d, 0x96, 0x19, 0x9d, 0x6f, 0xf8, 0x8b, 0x66, 0x83, 0x05, 0x12, 0xce, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x1c, 0x32, 0x08, 0xd6, 0xa0, 0x2c, 0x79, 0x5f, 0x80, 0x3f, 0xac, 0x8e, 0xee, 0xcd, 0x2d, 0xac, 0xad, 0x6c, 0x83, 0x86, 0x52, 0xbb, 0x36, 0x68, 0x15, 0xc9, 0xa0, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x2e, 0xd4, 0x7c, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0xb0, 0x70, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0xa9, 0x28, 0x6c, 0xd0, 0x2e, 0x4b, 0xc1, 0x06, 0xad, 0x87, 0x29, 0x1c, 0x34, 0xf5, 0xa2, 0x79, 0xd0, 0x16, 0x26, 0x66, 0xad, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0xb2, 0x5d, 0xda, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xd0, 0x42, 0x9e, 0xc2, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0x83, 0xbd, 0x13, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xb5, 0xab, 0xb4, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x6a, 0x92, 0x6e, 0xd0, 0x3e, 0xc1, 0xe5, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xcd, 0x6c, 0xe8, 0x06, 0x6b, 0x9c, 0x49, 0x0f, 0x5a, 0xc2, 0xc4, 0xac, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x70, 0x42, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x0b, 0xa8, 0xbc, 0x37, 0x68, 0x1d, 0xf8, 0xa2, 0x0d, 0xda, 0x3e, 0xd2, 0xac, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x58, 0x3a, 0x41, 0xbb, 0xe1, 0x6d, 0x9d, 0x01, 0x5f, 0xae, 0x0e, 0x8e, 0x6d, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0xd6, 0x9f, 0xd1, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x1b, 0x34, 0xa9, 0x89, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x82, 0x13, 0xba, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x40, 0xe5, 0xbd, 0x41, 0x2b, 0x92, 0x15, 0x1d, 0xb4, 0xc6, 0x7d, 0xd9, 0x1a, 0x14, 0x86, 0xaa, 0x1b, 0xac, 0x99, 0x9f, 0xdd, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x2b, 0xc9, 0x67, 0x5b, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x24, 0x70, 0x6e, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x1e, 0x2c, 0xb0, 0x70, 0x6e, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x4c, 0x9d, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xb4, 0xaf, 0xe0, 0xa0, 0x04, 0x92, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x4c, 0x9d, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xb4, 0xaf, 0x60, 0x83, 0xa4, 0xb4, 0xe0, 0x83, 0xc2, 0x49, 0xf6, 0xf0, 0x16, 0x5a, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x6d, 0xf7, 0x65, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xd0, 0x88, 0x61, 0xe6, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x8d, 0xb1, 0x69, 0x1e, 0x34, 0xc2, 0x70, 0x59, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x34, 0x00, 0x97, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0x9b, 0xeb, 0x09, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0x53, 0x97, 0x79, 0xd0, 0xae, 0xa2, 0x66, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xd0, 0xe6, 0x7a, 0xc2, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x06, 0x6d, 0x61, 0x62, 0x1e, 0xb4, 0xab, 0xa8, 0xd9, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x06, 0x2d, 0x53, 0x27, 0xac, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0x6e, 0xb0, 0x0c, 0xc0, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0x66, 0x18, 0x2e, 0x0f, 0xda, 0x55, 0xd4, 0xac, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0x16, 0x58, 0x38, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x94, 0x56, 0xc1, 0xc1, 0x81, 0x59, 0xf5, 0xf0, 0xd0, 0xcf, 0x41, 0x23, 0x0c, 0x97, 0xb5, 0x06, 0x85, 0xa1, 0xea, 0x06, 0x0b, 0xe2, 0x66, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x86, 0x5f, 0x94, 0x36, 0x68, 0x5b, 0x33, 0xf3, 0xa0, 0xad, 0xd0, 0xcc, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x66, 0x36, 0x74, 0x83, 0xf5, 0xc8, 0xf3, 0x07, 0x2d, 0xc9, 0x66, 0xae, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0x2a, 0x71, 0xd6, 0x83, 0x96, 0xd3, 0x31, 0xd7, 0xa0, 0x30, 0x54, 0xdd, 0x60, 0xd9, 0x25, 0xdc, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x41, 0xa3, 0x43, 0x99, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0x5f, 0xe1, 0xb0, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x41, 0x1b, 0x02, 0x98, 0x07, 0xad, 0x0b, 0x5c, 0xb6, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0x41, 0xdb, 0x18, 0x99, 0x07, 0x8d, 0xfb, 0x5a, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xd0, 0x68, 0x5f, 0xc1, 0x41, 0xeb, 0x1b, 0x99, 0xad, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0xba, 0x75, 0xb8, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x83, 0xd6, 0xb3, 0x34, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x48, 0xa3, 0x3d, 0x5a, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0xa0, 0x01, 0x09, 0x84, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x42, 0x4d, 0xd2, 0x0d, 0x9a, 0x96, 0xb8, 0x3c, 0x68, 0x21, 0xe1, 0xb2, 0x35, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x81, 0xb6, 0xba, 0x41, 0x83, 0x05, 0x09, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xd4, 0x24, 0xdd, 0xa0, 0x7d, 0x82, 0xcb, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xd0, 0x76, 0x87, 0xe6, 0x06, 0x6d, 0xdd, 0x5a, 0x6e, 0xd0, 0x0c, 0xc3, 0xe5, 0x41, 0x0b, 0x09, 0x97, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x1b, 0x34, 0x7b, 0x9d, 0xb9, 0x86, 0x07, 0x25, 0x37, 0x58, 0x84, 0xd3, 0x7a, 0xb0, 0x18, 0xfe, 0xbc, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xbb, 0x09, 0x04, 0x07, 0x8b, 0xaf, 0xbc, 0x0f, 0x1a, 0xf7, 0xb5, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x29, 0xdd, 0xa0, 0x89, 0x81, 0xcd, 0xaa, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x58, 0x1d, 0xd6, 0xb6, 0xe1, 0x6d, 0x9d, 0x0d, 0x5a, 0x62, 0xb4, 0x6c, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x16, 0x45, 0xd3, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x9a, 0xa4, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x55, 0x51, 0xa2, 0x07, 0x0b, 0xb7, 0x44, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x68, 0x8e, 0xb2, 0xe0, 0xa0, 0x85, 0x84, 0xcb, 0xd6, 0xa0, 0x30, 0x54, 0xdd, 0x60, 0x8d, 0x0f, 0xed, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x49, 0xba, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xba, 0x25, 0x7a, 0xb0, 0x26, 0x4a, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0xd6, 0x02, 0x0c, 0x0e, 0x5a, 0x48, 0xb8, 0x6c, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x96, 0x45, 0xd2, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0xa4, 0xf9, 0xa9, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x5f, 0xae, 0xac, 0x8c, 0xac, 0x0e, 0xa7, 0x58, 0x0b, 0xf8, 0x67, 0x61, 0x73, 0xf0, 0x06, 0x2b, 0x84, 0x9a, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x06, 0xb8, 0x30, 0xb9, 0xb9, 0x32, 0x90, 0x1e, 0xb8, 0x30, 0x3a, 0xb4, 0x1e, 0x90, 0x32, 0xba, 0x31, 0xd7, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3c, 0x68, 0xef, 0x1f, 0x73, 0x83, 0x46, 0xfc, 0x31, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe3, 0x41, 0x7b, 0xff, 0x98, 0x6d, 0x90, 0x64, 0x40, 0xb8, 0xc1, 0x89, 0xa0, 0xed, 0xe0, 0x0c, 0x6e, 0xb6, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x0d, 0x4a, 0x38, 0xf7, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x22, 0x55, 0x6f, 0x78, 0x5a, 0x67, 0x0d, 0xbf, 0x28, 0x6d, 0x50, 0x80, 0x77, 0x1e, 0x14, 0x14, 0x99, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x2a, 0x86, 0x1e, 0xac, 0x06, 0x20, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0xee, 0xab, 0xe6, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0xc1, 0xaa, 0x9f, 0xde, 0x83, 0xb2, 0xce, 0x73, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x68, 0x61, 0x73, 0x70, 0x6d, 0xd0, 0xea, 0xd1, 0x66, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x1b, 0xb4, 0x9a, 0xb4, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x98, 0x4c, 0x7a, 0xb0, 0x1a, 0x80, 0xb4, 0x56, 0x83, 0x26, 0xfb, 0x30, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0xdd, 0xcb, 0xba, 0x41, 0x13, 0x6d, 0x98, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x0e, 0xc9, 0x34, 0x1b, 0x9c, 0xd8, 0x6f, 0x36, 0x58, 0xd3, 0xcc, 0xba, 0xc1, 0xb1, 0xcd, 0x71, 0x83, 0x65, 0xd3, 0xac, 0x1b, 0x1c, 0xdb, 0x1c, 0x37, 0x58, 0xa2, 0xcd, 0xba, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x96, 0x94, 0xcd, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x2c, 0x64, 0x10, 0x3d, 0x68, 0xe6, 0x17, 0x73, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0xd6, 0xf5, 0xbe, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x34, 0x7d, 0x7c, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0x9b, 0x34, 0x13, 0x07, 0x8d, 0x30, 0x5c, 0xb6, 0x06, 0x85, 0xa1, 0xea, 0x06, 0x6b, 0xcf, 0x69, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0xda, 0xad, 0x8a, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x99, 0x0d, 0xdd, 0x60, 0x21, 0x1c, 0xe9, 0x41, 0xa3, 0x9d, 0x98, 0xad, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0x7a, 0xe9, 0xb7, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x96, 0xe0, 0x31, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0x37, 0x68, 0xb0, 0x19, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0xc3, 0x13, 0x77, 0x07, 0xad, 0x45, 0x64, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0x78, 0xe2, 0xee, 0xa0, 0xf5, 0x8d, 0xcc, 0x83, 0x06, 0xa9, 0x31, 0x6b, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x96, 0xa3, 0xd0, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0xc0, 0x0a, 0xfa, 0xe0, 0xb4, 0x72, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x9a, 0x69, 0x8d, 0xd8, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0xa1, 0x26, 0xe9, 0x06, 0xed, 0x13, 0x5c, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0x34, 0xc3, 0x70, 0xb9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0xc1, 0x1a, 0x67, 0xd2, 0x83, 0xf6, 0x99, 0x34, 0x0f, 0x96, 0x98, 0x94, 0xb6, 0x06, 0x85, 0xa1, 0xea, 0x06, 0x4b, 0x27, 0x68, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x9a, 0x5e, 0x93, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd4, 0x24, 0xdd, 0xa0, 0x69, 0x89, 0xcb, 0x83, 0xf6, 0x99, 0x34, 0x5b, 0x83, 0xc2, 0x50, 0x75, 0x83, 0xd5, 0xaa, 0xb3, 0x07, 0xcd, 0xcc, 0x65, 0xae, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0xea, 0xb0, 0xb6, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x05, 0x76, 0xa6, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0x25, 0x17, 0xb1, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x41, 0x3b, 0x1f, 0x97, 0x07, 0x0b, 0xeb, 0x59, 0x6b, 0x83, 0x06, 0xf3, 0x32, 0xd7, 0xa0, 0x30, 0x54, 0xdd, 0x60, 0xd9, 0x2e, 0xed, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x68, 0xb0, 0x77, 0xe2, 0xa0, 0xcd, 0x22, 0xcd, 0x83, 0xa6, 0xa2, 0x34, 0xd7, 0xa0, 0x30, 0x54, 0xdd, 0x60, 0xdd, 0x3a, 0xdc, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x82, 0x13, 0xba, 0xc1, 0x1a, 0x29, 0xef, 0x83, 0xe5, 0x4f, 0xac, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0x20, 0x90, 0x76, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc1, 0x09, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0xa0, 0xf2, 0x3e, 0x68, 0xf5, 0x10, 0xec, 0xa0, 0xf1, 0x58, 0xcc, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x58, 0x7f, 0x46, 0xbb, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0x6e, 0xd0, 0x94, 0xe1, 0xe6, 0x41, 0xab, 0x61, 0x9a, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0xf2, 0x94, 0x76, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x60, 0x31, 0xff, 0xe8, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xb1, 0x63, 0x5d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0x10, 0x1c, 0x08, 0x07, 0xeb, 0x3b, 0xa1, 0x37, 0x58, 0x66, 0x74, 0xde, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x87, 0x0c, 0x82, 0x0d, 0x1a, 0x55, 0xd1, 0xdc, 0xf0, 0x8b, 0xd2, 0x06, 0xeb, 0x42, 0xcd, 0x37, 0x58, 0xe9, 0xe2, 0xb4, 0x86, 0xef, 0xdb, 0x5b, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x62, 0x0b, 0x73, 0x83, 0x76, 0x59, 0x0a, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x59, 0x6f, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x8a, 0x2d, 0xcc, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x59, 0x6f, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0xc1, 0x9a, 0x8d, 0xb7, 0x0d, 0xda, 0x65, 0x29, 0xa8, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xb0, 0xe3, 0xc4, 0x1a, 0xde, 0xd6, 0x39, 0x68, 0xf7, 0x80, 0xf3, 0xa0, 0xa9, 0x17, 0xcd, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xae, 0x60, 0x74, 0x83, 0xa5, 0xf5, 0xac, 0x07, 0xab, 0x01, 0x48, 0x3b, 0x68, 0x09, 0x13, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x82, 0x22, 0xf3, 0xa0, 0x25, 0x4c, 0xcc, 0x5a, 0x83, 0xc2, 0x50, 0x75, 0x83, 0x55, 0xe2, 0xac, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x06, 0x0d, 0x3b, 0x4e, 0xac, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0xb4, 0x9e, 0x75, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0xc5, 0xfc, 0xa3, 0x07, 0x2d, 0x61, 0x62, 0xd6, 0x06, 0x4d, 0x19, 0x6e, 0xd6, 0xac, 0x41, 0xeb, 0x5c, 0x9b, 0x1b, 0xac, 0x10, 0x6a, 0x5a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3f, 0xb8, 0x30, 0x3a, 0x34, 0x90, 0x32, 0xb6, 0xb2, 0xb6, 0x32, 0x37, 0xba, 0x83, 0xf5, 0xc0, 0xa0, 0x1b, 0x34, 0x0d, 0x71, 0xb9, 0x41, 0xdb, 0xff, 0x96, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0xda, 0x57, 0x70, 0xd0, 0x12, 0x34, 0xe6, 0x06, 0x8d, 0x7b, 0x65, 0xae, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x41, 0x53, 0xde, 0x98, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0xd1, 0xbe, 0x82, 0x35, 0x7c, 0x90, 0xb3, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x04, 0x1f, 0x36, 0x58, 0x1f, 0x91, 0x7e, 0x70, 0x88, 0xe9, 0x38, 0x3c, 0xb8, 0xb3, 0xc1, 0xba, 0xec, 0xba, 0x83, 0xb5, 0x54, 0x76, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xb0, 0x62, 0x4d, 0x6f, 0x83, 0x85, 0xa7, 0xe7, 0x87, 0x87, 0x7e, 0x3a, 0x58, 0xce, 0x7e, 0xde, 0x6a, 0xd0, 0xc2, 0x61, 0xe6, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x11, 0x41, 0xdd, 0x06, 0xeb, 0x2d, 0xe6, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x6b, 0x1d, 0xdb, 0x36, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x27, 0x82, 0xb6, 0xc3, 0xef, 0x67, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x8a, 0xa1, 0x07, 0x4b, 0xee, 0xf2, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x15, 0x43, 0x0f, 0xd6, 0xbc, 0x87, 0x36, 0x0b, 0xf8, 0x70, 0x6f, 0x6f, 0xe6, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x2b, 0x77, 0x9c, 0x0d, 0x40, 0x0b, 0x5c, 0x18, 0x1d, 0x1a, 0x48, 0x8b, 0x0f, 0x08, 0x0a, 0x5b, 0xda, 0x1c, 0x1d, 0x08, 0xda, 0xdb, 0x9b, 0x5b, 0x6a, 0xc3, 0x2f, 0x4a, 0x1b, 0xac, 0x91, 0x4e, 0xdf, 0xf0, 0x17, 0xcd, 0x06, 0xeb, 0x9a, 0x9f, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x89, 0x54, 0xbd, 0xc1, 0x22, 0xf2, 0xf4, 0x35, 0xfc, 0xa2, 0xb4, 0xc1, 0x92, 0xc0, 0xb9, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x68, 0x5f, 0xc1, 0x06, 0x6b, 0xa9, 0xec, 0x0e, 0x0f, 0xfd, 0x74, 0x38, 0xc5, 0x5a, 0xc0, 0x1f, 0x93, 0x0b, 0x6b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1a, 0x7a, 0xe4, 0x6c, 0x00, 0x3f, 0xb8, 0x30, 0xb9, 0xb9, 0x32, 0x90, 0x3a, 0xb7, 0xb6, 0x30, 0xb9, 0xb5, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x08, 0x57, 0x84, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0xc0, 0x6b, 0x63, 0x03, 0x71, 0x7b, 0x23, 0x2b, 0x03, 0x39, 0x2b, 0x73, 0x2b, 0x93, 0x0b, 0xa3, 0x7b, 0x93, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x37, 0xfd, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x31, 0x05, 0xaa, 0x36, 0x68, 0xd0, 0x81, 0xa1, 0xd5, 0xa0, 0x31, 0x05, 0xaa, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xc6, 0x14, 0xa8, 0x3a, 0x58, 0x25, 0x90, 0xbd, 0xe1, 0xa3, 0xf6, 0x0d, 0x82, 0xcd, 0x74, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0xde, 0xea, 0xe8, 0xca, 0xe4, 0x40, 0xca, 0xda, 0xc4, 0xca, 0xc8, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0xf8, 0x64, 0x6f, 0x77, 0xee, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xd6, 0xb9, 0xbd, 0xc9, 0x91, 0x95, 0xc9, 0x95, 0x91, 0x81, 0xb0, 0xa5, 0xcd, 0xd1, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xf0, 0xd9, 0xea, 0xdc, 0xe8, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x60, 0x4b, 0x9b, 0xa3, 0x03, 0x49, 0xa3, 0x2b, 0x6b, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xe0, 0xb3, 0xa5, 0xb5, 0x95, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xf7, 0x26, 0x47, 0x56, 0x26, 0x57, 0x46, 0x06, 0xc2, 0x96, 0x36, 0x47, 0xb7, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc0, 0x67, 0x7b, 0x93, 0x23, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0xb1, 0x2b, 0x93, 0x9b, 0x2b, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xe0, 0xc3, 0xbd, 0x95, 0xb5, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x23, 0xc6, 0xf6, 0x36, 0xb6, 0x16, 0x57, 0xf7, 0x46, 0x57, 0xb6, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc0, 0x17, 0x63, 0x7b, 0x1b, 0xd7, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x45, 0x2b, 0x0b, 0x23, 0x4b, 0x73, 0x3b, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xb0, 0x2c, 0x75, 0x38, 0xc5, 0xd6, 0xe0, 0x84, 0x47, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x07, 0x0d, 0x3a, 0x30, 0xac, 0x00, 0x3e, 0x74, 0x72, 0x69, 0x67, 0x2d, 0x73, 0x74, 0x79, 0x6c, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x8b, 0xee, 0x9c, 0x0d, 0xc0, 0x0b, 0x5d, 0x1e, 0x5c, 0x19, 0xc8, 0x9b, 0x19, 0x08, 0x5c, 0x98, 0xdc, 0x5c, 0x19, 0x19, 0x08, 0x5b, 0x9a, 0x5b, 0xd9, 0x86, 0x8f, 0xda, 0x37, 0x08, 0xda, 0x9f, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3e, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x18, 0x98, 0x1e, 0x6b, 0x10, 0x6c, 0xa6, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x57, 0xe6, 0x46, 0x06, 0xf2, 0x66, 0x06, 0x92, 0xe6, 0x06, 0x57, 0x47, 0x77, 0xb0, 0x0a, 0x25, 0x7c, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xac, 0xa9, 0x66, 0x5d, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3e, 0x7a, 0x7a, 0x40, 0xca, 0xdc, 0xc8, 0x40, 0xde, 0xcc, 0x40, 0xda, 0xc2, 0xe4, 0xd6, 0xc8, 0xde, 0xee, 0xdc, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0xf8, 0x64, 0x65, 0x6e, 0x74, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x60, 0x2b, 0x0b, 0x33, 0x03, 0x71, 0x7b, 0x23, 0x2b, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xe0, 0xbd, 0xb9, 0x95, 0x6b, 0x10, 0x6c, 0xa6, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x20, 0x79, 0x48, 0x78, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0x5b, 0x5a, 0x5a, 0x40, 0xd0, 0xde, 0xe4, 0xf4, 0x40, 0xe4, 0xea, 0xd8, 0xca, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0xf8, 0x66, 0x65, 0x6e, 0xf3, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0x82, 0x81, 0x81, 0x81, 0x8c, 0xbd, 0x91, 0x95, 0x81, 0x98, 0x95, 0xb9, 0x8d, 0x95, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xf0, 0xcb, 0xf0, 0xe0, 0xe4, 0x5a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xdf, 0x37, 0xb8, 0x32, 0x37, 0x90, 0xb1, 0x37, 0x37, 0xba, 0xb0, 0x34, 0xb7, 0x32, 0xb9, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x84, 0x0a, 0xb9, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xe1, 0xdf, 0xf9, 0x05, 0xf8, 0xe9, 0xe4, 0xd2, 0xce, 0x5a, 0xdc, 0xca, 0xee, 0x6a, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xc3, 0xdc, 0xf2, 0xe8, 0xd0, 0xd2, 0xdc, 0xce, 0x40, 0xca, 0xd8, 0xe6, 0xca, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x92, 0x91, 0xe2, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x13, 0x6b, 0x81, 0xb5, 0x02, 0xfe, 0x99, 0x5c, 0x98, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x26, 0x54, 0x67, 0x03, 0xf0, 0x00, 0x17, 0x26, 0x17, 0x76, 0x26, 0x17, 0x06, 0x87, 0x06, 0x52, 0xc6, 0x56, 0xd6, 0x56, 0xe6, 0x46, 0xb7, 0xe1, 0xa3, 0xf6, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x3a, 0x15, 0xb1, 0x37, 0x36, 0x32, 0xd5, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xe0, 0x8b, 0xbd, 0xb1, 0x91, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0xf0, 0xef, 0xfc, 0x1a, 0xb4, 0x09, 0xd5, 0x59, 0xb5, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x1e, 0x5f, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x73, 0x5f, 0x1b, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x81, 0x4f, 0x17, 0xc6, 0x36, 0x1e, 0xb4, 0x40, 0xd6, 0xb9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xba, 0x22, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x71, 0x75, 0x6f, 0x74, 0x65, 0xa2, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc0, 0x8f, 0xab, 0x7b, 0x23, 0x0f, 0x5a, 0x20, 0xeb, 0x5c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xbf, 0xb1, 0x37, 0xb2, 0x32, 0x10, 0xb6, 0x34, 0xba, 0x32, 0xb9, 0x30, 0xb6, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc0, 0x1f, 0x7b, 0x23, 0x2b, 0x0f, 0x0e, 0x6f, 0xa2, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x45, 0x57, 0x86, 0x47, 0x07, 0x32, 0x97, 0xd7, 0x26, 0xf6, 0xc6, 0xb6, 0xe1, 0x73, 0xa5, 0x0d, 0x1a, 0x6d, 0xea, 0x3c, 0x38, 0xbc, 0x89, 0xae, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xe0, 0x55, 0x49, 0x31, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x2c, 0x5c, 0xc3, 0xde, 0xa0, 0x0d, 0xb2, 0xce, 0x83, 0xe4, 0x7e, 0xe1, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0x78, 0xd2, 0xda, 0xc2, 0xce, 0xca, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x02, 0xbf, 0x2d, 0xec, 0xac, 0xdc, 0xe0, 0xf8, 0x26, 0x7a, 0x90, 0xdc, 0x2f, 0xbc, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3c, 0xa4, 0xb9, 0xd1, 0x95, 0xc9, 0xc1, 0xbd, 0xb1, 0x85, 0xd1, 0x95, 0x91, 0x81, 0xa0, 0xbd, 0xbd, 0xb9, 0x6d, 0xf8, 0x5c, 0x69, 0x83, 0x36, 0x66, 0x3a, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x86, 0x7f, 0xe7, 0x37, 0x58, 0x5a, 0xa5, 0x7d, 0xb0, 0x94, 0x06, 0xba, 0x0e, 0xa7, 0x58, 0x0b, 0xf8, 0x63, 0x6f, 0x6c, 0xed, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xdf, 0xd8, 0x1b, 0x5b, 0x5d, 0x9b, 0xdb, 0x41, 0x99, 0xa5, 0xbb, 0x02, 0x3e, 0x9d, 0x5c, 0xda, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x96, 0x6d, 0x67, 0x03, 0xf8, 0xb0, 0xa5, 0xb9, 0x95, 0x81, 0xcc, 0xd1, 0xe5, 0xb1, 0x95, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xe7, 0x4a, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x37, 0x47, 0x17, 0x26, 0x47, 0x07, 0x32, 0xf6, 0xc6, 0x56, 0xd7, 0xe6, 0xb6, 0xe1, 0xcf, 0xa5, 0x0d, 0x56, 0xc9, 0x91, 0x1e, 0x94, 0x59, 0xba, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0xcc, 0xd1, 0xe5, 0xb1, 0x95, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x9b, 0xa3, 0xcb, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0x2d, 0xba, 0x73, 0x56, 0x87, 0x53, 0x6c, 0x0d, 0x1a, 0x0f, 0xea, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x3c, 0xa8, 0xb3, 0x01, 0xde, 0x39, 0xba, 0x30, 0x39, 0x3a, 0x90, 0xb0, 0x0d, 0x1f, 0xb5, 0x6f, 0x10, 0x6c, 0xa6, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xf0, 0xd9, 0xd2, 0xe8, 0xca, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x5a, 0x01, 0x61, 0x4b, 0x73, 0x2b, 0x03, 0x49, 0xa3, 0x2b, 0x6b, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xe0, 0xb3, 0xa5, 0xb9, 0xd1, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xd5, 0x02, 0xc2, 0x96, 0xe6, 0x56, 0x06, 0x92, 0x46, 0x57, 0xd6, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xc7, 0x08, 0x08, 0x5a, 0x59, 0x18, 0x59, 0x9a, 0xdb, 0xd9, 0x41, 0x63, 0xe2, 0x9c, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xe9, 0x03, 0x22, 0xc6, 0xf6, 0x36, 0xb6, 0xd6, 0x12, 0x57, 0xf7, 0x46, 0x57, 0x76, 0xd0, 0xda, 0x36, 0xe7, 0x06, 0x8d, 0x4e, 0x73, 0x76, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0x78, 0xb8, 0xbd, 0xb9, 0xb5, 0x94, 0xb5, 0xc1, 0xd1, 0xe5, 0x6d, 0x78, 0x5b, 0x67, 0x80, 0x07, 0x2e, 0x4c, 0x6e, 0xae, 0x6c, 0x0d, 0xbf, 0x28, 0x6d, 0x90, 0xd6, 0x0e, 0xbc, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x16, 0x75, 0x9d, 0x6e, 0x70, 0x44, 0x49, 0x6d, 0x83, 0xb2, 0xe4, 0x7d, 0xc3, 0x29, 0xb6, 0x41, 0x4b, 0x4b, 0x7e, 0x07, 0xa7, 0x2d, 0xb4, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x68, 0x08, 0xc0, 0x73, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0x21, 0x00, 0xcf, 0x06, 0xe0, 0x23, 0xcd, 0x8d, 0x2c, 0xcd, 0x2e, 0x8d, 0xac, 0x2e, 0x8c, 0x0d, 0x04, 0x2e, 0x4c, 0x6e, 0xae, 0x4c, 0x6e, 0x6e, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0xc0, 0xbf, 0x2b, 0x93, 0x5b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x4e, 0x73, 0x23, 0x2b, 0x33, 0x4b, 0x73, 0x4b, 0xa3, 0x2b, 0x03, 0xa1, 0x0b, 0x93, 0x83, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0x37, 0x68, 0x54, 0xfe, 0x6f, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x50, 0x31, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x77, 0x6f, 0x72, 0x64, 0xb5, 0x02, 0x3e, 0x5d, 0xda, 0xd8, 0xbc, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xd0, 0x18, 0x9b, 0xe6, 0x06, 0x8d, 0xb1, 0x69, 0x6e, 0xd0, 0x18, 0x9b, 0xe6, 0xc1, 0x3a, 0x6a, 0xd2, 0x15, 0xf0, 0xcb, 0xc6, 0xd0, 0xde, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x66, 0x60, 0x3c, 0x1b, 0xc0, 0x0f, 0xed, 0xed, 0xcd, 0x0d, 0x84, 0x2d, 0x8d, 0xae, 0x4c, 0x2e, 0x8c, 0x6d, 0x83, 0x42, 0xb9, 0x73, 0x83, 0x15, 0x96, 0xb1, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x63, 0x7b, 0x1b, 0x0f, 0x92, 0x94, 0x81, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x0b, 0x70, 0xcf, 0x0f, 0x4e, 0x7a, 0xa2, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x45, 0x5d, 0xa7, 0x07, 0xa7, 0x70, 0xd1, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x96, 0x05, 0x8d, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xa2, 0xc6, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0xee, 0xf1, 0xec, 0x60, 0x11, 0xf8, 0xf9, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x4b, 0xdd, 0x46, 0x37, 0x58, 0x4e, 0x60, 0xbb, 0xc1, 0xd1, 0x86, 0x6f, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x78, 0xf3, 0x74, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0x7e, 0x71, 0xd9, 0xf0, 0xcc, 0xe4, 0xc1, 0xf2, 0x1a, 0xe5, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x4e, 0x7a, 0xa2, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x2c, 0x7d, 0xeb, 0x3d, 0x58, 0x06, 0x7e, 0xbe, 0x41, 0x41, 0x91, 0xb9, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x0a, 0xf1, 0xf3, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xd3, 0x83, 0x15, 0xe2, 0xe7, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0x42, 0xfc, 0x7c, 0xc3, 0x25, 0xb5, 0xc6, 0xf3, 0x83, 0x15, 0xe2, 0xe7, 0xd5, 0x6a, 0xd0, 0x08, 0x07, 0xd5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x23, 0x1c, 0x54, 0x0d, 0xf0, 0xca, 0x95, 0xc1, 0x85, 0xc9, 0xcd, 0x95, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0xbb, 0x61, 0x5f, 0x07, 0x4b, 0x53, 0x45, 0x0f, 0xd6, 0x57, 0xc6, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0xe6, 0x77, 0x3c, 0x37, 0x7c, 0xfd, 0xb2, 0x06, 0x85, 0x60, 0xea, 0x86, 0x7f, 0xe7, 0x37, 0x58, 0xa5, 0x1a, 0xdb, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0xdf, 0x60, 0x59, 0xd0, 0xe8, 0x06, 0x25, 0x74, 0xec, 0x06, 0x0d, 0x0f, 0x79, 0x1e, 0x84, 0xe9, 0xd8, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x19, 0xbb, 0xb1, 0x83, 0xb6, 0x95, 0x3c, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x58, 0xea, 0x36, 0xba, 0xc1, 0x72, 0x02, 0xdb, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xda, 0xbb, 0xcf, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x1d, 0x8d, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xae, 0xe4, 0x79, 0xb0, 0x6e, 0xe6, 0xb6, 0x0d, 0x4a, 0x78, 0xcc, 0x05, 0x8f, 0x0f, 0xda, 0x55, 0xd0, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xae, 0xe4, 0x79, 0x50, 0xd6, 0x79, 0x6e, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0x78, 0xf3, 0x74, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xe0, 0xf5, 0x41, 0x13, 0x93, 0x9e, 0x07, 0xcb, 0x6b, 0x94, 0x57, 0x00, 0xdf, 0xb1, 0x37, 0x37, 0xba, 0x32, 0x37, 0xba, 0xb9, 0x16, 0xba, 0xb7, 0x96, 0x34, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0xe1, 0x4f, 0xcf, 0x06, 0xe0, 0x65, 0x04, 0x84, 0xae, 0x0c, 0x8f, 0x0e, 0x24, 0xcd, 0x8d, 0xee, 0x0d, 0xa4, 0x8c, 0xad, 0xac, 0x0d, 0x24, 0x8d, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0x36, 0x68, 0x87, 0xb5, 0xb3, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0x60, 0x01, 0x66, 0xd3, 0x1a, 0xbe, 0x6f, 0xdf, 0x20, 0x45, 0xb6, 0x67, 0x83, 0x12, 0x3a, 0x76, 0x83, 0x93, 0x9e, 0xe8, 0x41, 0x98, 0x8e, 0xad, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x89, 0x54, 0xbd, 0x41, 0x7a, 0x00, 0xe7, 0x86, 0x5f, 0x94, 0x36, 0x38, 0x09, 0x82, 0x6e, 0xf8, 0x8b, 0x66, 0x83, 0x93, 0x20, 0xe8, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x2b, 0xd9, 0x1a, 0x1e, 0x61, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0x6d, 0x70, 0x5a, 0x39, 0x3b, 0x58, 0xd5, 0x05, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xf1, 0xbb, 0xc1, 0x69, 0xe5, 0xec, 0x60, 0xb5, 0x19, 0x5c, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x86, 0xad, 0xb4, 0xc1, 0x69, 0xe5, 0xec, 0x60, 0xdd, 0x8f, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xef, 0x06, 0xa7, 0x95, 0xb3, 0x83, 0xf5, 0x46, 0x72, 0xb5, 0xc1, 0x69, 0xe5, 0x6c, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x86, 0xad, 0xb4, 0xc1, 0x69, 0xe5, 0xec, 0x60, 0x1d, 0xaf, 0xdb, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xef, 0x06, 0xa7, 0x95, 0xb3, 0x83, 0x75, 0xc5, 0x6e, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x90, 0x7a, 0x1a, 0x7b, 0x70, 0xda, 0x42, 0x3b, 0x58, 0xb3, 0xf1, 0xb6, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x06, 0x05, 0x45, 0xe6, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x27, 0x82, 0xb6, 0x35, 0xfc, 0x45, 0xb3, 0xc1, 0x49, 0x4f, 0x74, 0x83, 0x20, 0x3d, 0xdd, 0xa0, 0x28, 0x8e, 0x5f, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0xa0, 0x2b, 0xc3, 0xa3, 0x03, 0x71, 0x7b, 0x23, 0x2b, 0x03, 0x19, 0x7b, 0x73, 0xa3, 0x2b, 0x73, 0xa3, 0x9b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x65, 0x30, 0x78, 0x0d, 0x9f, 0x2b, 0x6d, 0x90, 0x32, 0x18, 0x7c, 0x70, 0x88, 0xe9, 0x38, 0x38, 0x2e, 0x9e, 0x1c, 0x1c, 0x17, 0x4f, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x28, 0xfa, 0xd8, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xdb, 0x83, 0xa7, 0x83, 0x87, 0x83, 0x9f, 0x07, 0x45, 0x71, 0xfc, 0x1a, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xfe, 0x9d, 0xdf, 0x60, 0x19, 0xd5, 0xf6, 0xc1, 0x52, 0x1a, 0xe8, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0x0f, 0xee, 0x1c, 0xac, 0x1c, 0xbb, 0x6f, 0x0d, 0x96, 0x12, 0x11, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xcf, 0xd8, 0x9b, 0xdb, 0x58, 0x18, 0x5d, 0x99, 0x5b, 0x18, 0x5d, 0x19, 0xc8, 0x18, 0x5a, 0x1a, 0x1b, 0x99, 0x5c, 0x99, 0xdb, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0x07, 0x77, 0x36, 0xbc, 0xad, 0x33, 0xf8, 0x78, 0x50, 0x14, 0xc7, 0xb7, 0x1a, 0x3e, 0x57, 0x3a, 0x38, 0x75, 0xad, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x4f, 0xda, 0x99, 0xdb, 0x9b, 0x5c, 0x19, 0x48, 0x9a, 0x1b, 0x5d, 0x99, 0x1c, 0xdc, 0x1b, 0x5b, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x41, 0x41, 0x91, 0xd9, 0x41, 0x01, 0x1f, 0x7f, 0x38, 0xc5, 0x16, 0xf0, 0xe1, 0xc2, 0xe4, 0xc2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x66, 0x4c, 0x3e, 0x3b, 0x58, 0xe4, 0x14, 0xbe, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0x8e, 0x28, 0xa9, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xa0, 0xa0, 0xc8, 0xdc, 0xe0, 0xe8, 0x3a, 0xb8, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0xd7, 0x5e, 0x0f, 0xca, 0x3a, 0xcf, 0xc3, 0x43, 0x3f, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf6, 0xef, 0x33, 0xd7, 0xf0, 0xb6, 0xce, 0x41, 0x1b, 0x5f, 0x98, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x5a, 0xb1, 0xe5, 0xac, 0xc3, 0x29, 0xd6, 0x1a, 0xb4, 0x62, 0xcb, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x8a, 0x2d, 0x67, 0x03, 0xf0, 0x00, 0x17, 0x26, 0x37, 0x57, 0x06, 0x92, 0xe6, 0xc6, 0x96, 0xe6, 0x56, 0x06, 0x42, 0x17, 0x26, 0x07, 0xb7, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xea, 0x5e, 0xd6, 0x35, 0x28, 0x04, 0x53, 0x0f, 0x8e, 0x28, 0xa9, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x0e, 0xc9, 0x34, 0x1b, 0x1c, 0x6d, 0xf8, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0x37, 0x3c, 0x33, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x20, 0xc3, 0xb3, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb3, 0x30, 0xf3, 0xa0, 0xb9, 0xb2, 0xce, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x44, 0x49, 0xdd, 0xf0, 0xa0, 0xe4, 0x06, 0x2d, 0x2d, 0xf9, 0x6d, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x6b, 0x10, 0xae, 0x08, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x5b, 0x19, 0x7e, 0xd0, 0xd8, 0x59, 0xe7, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xa2, 0xa4, 0x6e, 0x10, 0xa4, 0xa7, 0x6b, 0x1c, 0xda, 0xa0, 0xed, 0xb2, 0xcf, 0xd6, 0xa0, 0xd1, 0xa6, 0xce, 0x83, 0xf0, 0x54, 0x5d, 0x83, 0x36, 0x66, 0x3a, 0x37, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xd0, 0xd8, 0xda, 0x67, 0xad, 0x41, 0x23, 0x61, 0x9d, 0x1b, 0x1c, 0x5d, 0x07, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x1b, 0x77, 0x07, 0x2b, 0xc8, 0x11, 0x0f, 0xca, 0x3a, 0xcf, 0x35, 0x5c, 0x52, 0x1b, 0x1c, 0xf6, 0x3b, 0x56, 0x83, 0x46, 0xb7, 0x3e, 0x3b, 0x68, 0x3a, 0xee, 0xb3, 0x5a, 0x83, 0x66, 0xde, 0x3a, 0x37, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x62, 0x49, 0xd5, 0x41, 0x59, 0xe7, 0x79, 0xd0, 0xd0, 0xde, 0x67, 0x6b, 0xd0, 0x0a, 0x61, 0xe7, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xc6, 0xdd, 0x41, 0xeb, 0x84, 0x9d, 0x07, 0x65, 0x9d, 0xe7, 0x1a, 0x2c, 0xfd, 0x68, 0x3a, 0x68, 0x3a, 0xee, 0xf3, 0xa0, 0xac, 0xf3, 0x6c, 0x0d, 0x5a, 0xcf, 0xeb, 0xdc, 0x70, 0x49, 0x6d, 0x70, 0xd8, 0xef, 0x58, 0x83, 0x66, 0xfa, 0x3e, 0x37, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xb8, 0x3b, 0x68, 0xcc, 0xa9, 0x73, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xd6, 0x79, 0xd0, 0xb5, 0x86, 0x1f, 0x61, 0x06, 0x1f, 0x83, 0xe6, 0x00, 0x07, 0x65, 0x9d, 0x67, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x9c, 0x08, 0xda, 0x36, 0x68, 0x3a, 0xee, 0x73, 0xc3, 0x5f, 0x34, 0x1b, 0x34, 0x57, 0xd6, 0xb9, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xc2, 0xe5, 0xe7, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xf5, 0xcc, 0xcf, 0x35, 0xfc, 0x08, 0x33, 0xf8, 0x18, 0x74, 0x07, 0x38, 0x28, 0xeb, 0x3c, 0xab, 0x35, 0x68, 0x80, 0xb2, 0x73, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x24, 0x39, 0x3c, 0xad, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0xc0, 0x47, 0x93, 0x2b, 0x33, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0x63, 0x6b, 0x9f, 0x1d, 0x94, 0x75, 0x9e, 0x07, 0x0d, 0xed, 0x7d, 0xb6, 0x06, 0xed, 0x74, 0x76, 0x6e, 0x70, 0x74, 0x1d, 0x5c, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0x2e, 0xf0, 0xd2, 0xda, 0xce, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0x78, 0x73, 0x72, 0xe3, 0x41, 0x93, 0xb5, 0x9f, 0x6b, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0xaa, 0xdc, 0xe7, 0x06, 0x05, 0x45, 0xe6, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0x78, 0x61, 0x6c, 0xf4, 0x41, 0xc3, 0x71, 0x9f, 0x75, 0x50, 0xd6, 0x79, 0xd6, 0xac, 0x41, 0x33, 0x4c, 0x7e, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x88, 0x92, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x33, 0x7d, 0x9f, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xd0, 0x68, 0x53, 0xe7, 0xc6, 0xa1, 0xc1, 0xd3, 0x83, 0x66, 0xfa, 0x3e, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x27, 0x82, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x53, 0xb8, 0x10, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0x01, 0xed, 0xcf, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0x99, 0xbe, 0xcf, 0x0d, 0x6f, 0xeb, 0x0c, 0x4e, 0x1f, 0x34, 0xd3, 0xf7, 0x59, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0xf8, 0xbe, 0x7d, 0xc0, 0x33, 0x4b, 0x83, 0x37, 0x28, 0xa1, 0x63, 0x37, 0x38, 0x2a, 0xa2, 0x1e, 0x84, 0xe9, 0xd8, 0x1a, 0x1c, 0x5d, 0x07, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x68, 0x40, 0xfb, 0xb3, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x8e, 0x28, 0xa9, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xb4, 0x51, 0xfe, 0xb9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0xe9, 0x47, 0xd3, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x54, 0xfe, 0x6f, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x58, 0x2c, 0xaf, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0x46, 0xff, 0xac, 0x0e, 0xca, 0x3a, 0xcf, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x28, 0x26, 0x31, 0x37, 0x68, 0xb4, 0xa9, 0x73, 0xe3, 0xd0, 0xe0, 0xe9, 0x41, 0x1b, 0xe5, 0x9f, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x46, 0xee, 0x3f, 0xd7, 0x70, 0x49, 0x6d, 0x70, 0xd8, 0xef, 0x38, 0x68, 0x62, 0xfc, 0xb3, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0x46, 0xc6, 0x3f, 0xd7, 0xa0, 0x81, 0xfe, 0xcf, 0x0d, 0x96, 0x54, 0x27, 0x6d, 0xd0, 0x0a, 0xff, 0xe7, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0xda, 0x17, 0x00, 0xed, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xd5, 0xa0, 0x4d, 0xfe, 0xce, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x16, 0x42, 0xdd, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0x85, 0x53, 0xa7, 0x1b, 0xbe, 0x7e, 0x59, 0xc3, 0xbb, 0x3d, 0x87, 0x87, 0x7e, 0x36, 0x28, 0x48, 0x63, 0x37, 0x58, 0x16, 0x34, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x3c, 0xad, 0x73, 0xb0, 0x44, 0xee, 0x74, 0x83, 0xb5, 0xe8, 0x4c, 0x1b, 0x2c, 0x27, 0xb0, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0xa9, 0xdb, 0xe8, 0x06, 0xcb, 0x09, 0x6c, 0x37, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0x6f, 0xce, 0x06, 0x8b, 0xe4, 0x4e, 0x0f, 0x96, 0x9f, 0x9e, 0x6e, 0xb0, 0x9c, 0xc0, 0xf6, 0x60, 0x65, 0x67, 0xed, 0x0a, 0xf0, 0x97, 0x85, 0xcd, 0xe5, 0xb5, 0xcc, 0xbd, 0xb1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xad, 0xae, 0x80, 0x36, 0x00, 0x2f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x14, 0xc0, 0xf8, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x8b, 0x07, 0x69, 0xed, 0xc0, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0x93, 0xd9, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0x81, 0x2c, 0xba, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0x50, 0x4a, 0x0f, 0x0f, 0xfd, 0x1c, 0xde, 0x42, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x3e, 0x6b, 0x0f, 0x6f, 0xa1, 0xcd, 0x02, 0x3e, 0xdb, 0xdb, 0xdb, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x36, 0x12, 0x68, 0x03, 0x78, 0x8e, 0xb1, 0x85, 0xcd, 0xcd, 0xa5, 0x99, 0xe5, 0x81, 0xb0, 0xa5, 0xb9, 0x95, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xff, 0xce, 0xaf, 0x41, 0x5b, 0xb6, 0x9d, 0xd5, 0xe1, 0x69, 0x9d, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x50, 0x31, 0xf4, 0x60, 0x85, 0x33, 0xe9, 0x1a, 0x14, 0x9d, 0xc6, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x29, 0x57, 0x06, 0xf7, 0x26, 0x47, 0x07, 0x92, 0xe6, 0x46, 0x56, 0xe6, 0x46, 0x77, 0xd0, 0x80, 0x45, 0xdf, 0x1a, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0x56, 0xe1, 0x5d, 0xc3, 0x9f, 0x4b, 0x83, 0x8b, 0x1b, 0x04, 0x9b, 0xe9, 0x06, 0x21, 0xf8, 0xb0, 0x41, 0x13, 0xce, 0x9d, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xf3, 0xa0, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x83, 0xc3, 0x87, 0x07, 0x77, 0x0e, 0x6f, 0xa1, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x23, 0xc6, 0x16, 0xe6, 0xb6, 0x06, 0xc2, 0x96, 0xe6, 0x56, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xe0, 0x84, 0x6e, 0x50, 0x50, 0x64, 0x1e, 0x2c, 0x2d, 0x09, 0x5d, 0xc3, 0xf3, 0x24, 0x1b, 0x34, 0x6c, 0xd0, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x96, 0xc6, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0x94, 0xae, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0x71, 0x77, 0xd0, 0xc2, 0x40, 0xe7, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0x9d, 0x12, 0x5e, 0xad, 0xe1, 0x79, 0x92, 0x0d, 0xda, 0x7e, 0xe8, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x70, 0x42, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x4d, 0x27, 0x82, 0xae, 0xe1, 0x8d, 0xbb, 0x83, 0x06, 0x1a, 0x3a, 0xdb, 0xa0, 0xdd, 0x2b, 0xb5, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x9f, 0x96, 0x96, 0x16, 0x10, 0xb4, 0x37, 0xb9, 0x34, 0xbd, 0x37, 0x37, 0xba, 0x30, 0x36, 0x10, 0xb9, 0x3a, 0xb6, 0x32, 0xb9, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x04, 0x27, 0x74, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x83, 0x46, 0x3e, 0x3a, 0xd7, 0xf0, 0xc6, 0xdd, 0x41, 0xdb, 0x22, 0x9d, 0xad, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0x58, 0x28, 0xf4, 0x60, 0xa9, 0x50, 0x68, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x66, 0x5c, 0x3a, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x6b, 0xa1, 0xa0, 0x6b, 0x78, 0xe3, 0xee, 0xa0, 0x89, 0x95, 0xce, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0x37, 0x68, 0x8c, 0x4d, 0x73, 0x83, 0xc6, 0xd8, 0x34, 0x37, 0x68, 0x8c, 0x4d, 0xb3, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x7f, 0x67, 0x2e, 0x2c, 0x8d, 0x0d, 0xa4, 0x0c, 0x0f, 0x4e, 0xae, 0x6c, 0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc1, 0x09, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x16, 0x0a, 0xba, 0x86, 0x37, 0xee, 0x0e, 0xda, 0x9e, 0xe9, 0x6c, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x76, 0x62, 0xb6, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x4d, 0xac, 0x77, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x25, 0x38, 0xa1, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x1d, 0xb4, 0xda, 0xd3, 0xb9, 0x86, 0x37, 0xee, 0x0e, 0x1a, 0x19, 0xe7, 0x6c, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x50, 0x31, 0xf4, 0x20, 0xc5, 0x4f, 0xf5, 0x60, 0x85, 0x33, 0x69, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0x06, 0xcc, 0x3b, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x03, 0xcb, 0xa0, 0x6b, 0x78, 0xe3, 0xee, 0xa0, 0x71, 0xf1, 0xce, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0x37, 0x58, 0x2c, 0x14, 0x7a, 0xb0, 0xc2, 0x99, 0xb4, 0x35, 0x3c, 0x4f, 0xb2, 0x41, 0xfb, 0xdd, 0x9d, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x09, 0x4e, 0xe8, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x81, 0x65, 0xd0, 0x35, 0xbc, 0x71, 0x77, 0xd0, 0xb6, 0x76, 0x67, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0x2c, 0x03, 0x30, 0x3d, 0x58, 0xe1, 0x4c, 0xda, 0x1a, 0x9e, 0x27, 0xd9, 0xa0, 0x61, 0xf8, 0xce, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x04, 0x27, 0x74, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xc0, 0x32, 0xe8, 0x1a, 0xde, 0xb8, 0x3b, 0x68, 0x85, 0x9b, 0xb3, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0x96, 0x6e, 0x89, 0x1e, 0xac, 0x70, 0x26, 0x6d, 0x0d, 0xcf, 0x93, 0x6c, 0xd0, 0x5a, 0x51, 0xe7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0x52, 0xba, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xc6, 0xdd, 0x41, 0xbb, 0x4b, 0x9d, 0x1b, 0xb4, 0x70, 0xf9, 0x59, 0x35, 0x6b, 0x10, 0x2c, 0x4b, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xc1, 0xb2, 0xd4, 0x00, 0x9e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0xa0, 0x85, 0xe1, 0x95, 0xcd, 0x07, 0x27, 0x3d, 0xd1, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xaf, 0xa5, 0x91, 0xcd, 0x07, 0x47, 0x94, 0xd4, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x11, 0x25, 0x75, 0x83, 0x82, 0x34, 0x76, 0x83, 0x55, 0x03, 0xc1, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xa0, 0x5d, 0xe6, 0x72, 0xe6, 0x02, 0x32, 0x32, 0x32, 0x02, 0xd2, 0xe2, 0x03, 0x52, 0x82, 0x36, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x91, 0x85, 0x37, 0x58, 0xcd, 0xf7, 0xb7, 0x06, 0x2b, 0xd4, 0x90, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x3d, 0x27, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xad, 0x41, 0x84, 0x56, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x7c, 0x1a, 0xb9, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x0d, 0x7f, 0x7a, 0xb6, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x7f, 0x22, 0xb4, 0x36, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xe2, 0x92, 0xe0, 0x35, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0xe0, 0xd3, 0xc8, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x69, 0x64, 0xd5, 0x41, 0xab, 0x2d, 0xa1, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x34, 0xd8, 0x05, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x8d, 0x7d, 0x5d, 0x1e, 0x34, 0xe9, 0xf3, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x45, 0x43, 0xbf, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x26, 0x73, 0x70, 0x58, 0x9e, 0x39, 0x48, 0xf1, 0x53, 0x3d, 0x68, 0x13, 0xe8, 0xb3, 0x15, 0xf0, 0xc7, 0xc2, 0xd8, 0xcc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe6, 0x93, 0x42, 0x1b, 0x80, 0x9f, 0xb1, 0xb0, 0x39, 0x34, 0x10, 0xb1, 0x3a, 0x3a, 0x10, 0xb3, 0x37, 0x39, 0x10, 0xba, 0xb4, 0x31, 0x10, 0xba, 0xb4, 0xb1, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x8a, 0x67, 0xeb, 0xc1, 0xd2, 0x54, 0xd1, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0x2c, 0x54, 0x0c, 0xdd, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x58, 0x8b, 0x83, 0xb9, 0x41, 0x9a, 0xc0, 0x6b, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x65, 0xc7, 0xa0, 0x1b, 0xa4, 0x09, 0xbc, 0x1e, 0xac, 0x92, 0x06, 0x6d, 0x35, 0x68, 0x7d, 0xa5, 0x73, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x55, 0x72, 0xa4, 0x07, 0x47, 0xa1, 0x93, 0x0d, 0x96, 0x43, 0x32, 0xcd, 0x06, 0x05, 0x69, 0xec, 0x06, 0x0b, 0x1e, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xab, 0x68, 0xe8, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x9a, 0xcf, 0x06, 0x0b, 0xe1, 0x48, 0xdb, 0xa0, 0xa5, 0xb8, 0xd0, 0x0e, 0x56, 0x38, 0x93, 0x6e, 0x50, 0x90, 0xc6, 0x0e, 0xf0, 0xa7, 0xb9, 0x91, 0xb5, 0xd0, 0xa5, 0x8d, 0xcd, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0x2c, 0x33, 0xd1, 0x5f, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x81, 0xe2, 0x59, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x1b, 0x34, 0xfe, 0xe3, 0xb9, 0xe1, 0x2f, 0x9a, 0x0d, 0x8e, 0x28, 0xa9, 0x1b, 0x1c, 0x5d, 0x07, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0xd7, 0xe4, 0x7b, 0x50, 0xd6, 0x79, 0xae, 0xc1, 0xd2, 0x8f, 0xa6, 0x83, 0x65, 0xe0, 0xe7, 0x07, 0x65, 0x9d, 0x67, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xd4, 0x24, 0x5d, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0x34, 0xd8, 0x05, 0x7a, 0xd0, 0x48, 0x5f, 0xe8, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xb5, 0xbb, 0xd0, 0xda, 0x60, 0x55, 0xaf, 0xd2, 0x06, 0x8b, 0xb7, 0x6c, 0x37, 0x58, 0x10, 0x44, 0xb7, 0x86, 0x5f, 0x94, 0x36, 0x68, 0xb9, 0x8c, 0x73, 0xc3, 0xb3, 0x78, 0xcb, 0x86, 0x5f, 0x5c, 0x0e, 0x0f, 0xfd, 0x0c, 0xa2, 0xe5, 0xe0, 0x98, 0x3b, 0xd8, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x0b, 0x35, 0x49, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x4c, 0xf4, 0x0f, 0xd6, 0x51, 0x93, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x65, 0xc7, 0xa0, 0x1b, 0x34, 0xd3, 0x17, 0xba, 0xc1, 0x72, 0x3b, 0xd2, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x70, 0x42, 0x37, 0x58, 0x10, 0x44, 0xb7, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0x41, 0x83, 0x5d, 0xa0, 0x07, 0xeb, 0xa8, 0x49, 0xeb, 0x70, 0x8a, 0x2d, 0xe0, 0x8f, 0x85, 0xcd, 0xa1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xed, 0xd9, 0x86, 0x36, 0x80, 0x67, 0xd9, 0xdc, 0x58, 0x18, 0x5c, 0x19, 0x19, 0x88, 0x59, 0x99, 0xdb, 0x58, 0xd9, 0x06, 0x85, 0x72, 0xe7, 0x06, 0x4d, 0x57, 0x85, 0x6e, 0x70, 0x62, 0xbf, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0x03, 0xe3, 0xd9, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x16, 0x2a, 0x86, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x1b, 0x34, 0xea, 0xf3, 0xb9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0x7a, 0xd0, 0xd4, 0x57, 0xe8, 0x41, 0x8b, 0x61, 0xa1, 0x87, 0x53, 0xac, 0xd6, 0x60, 0xd5, 0x36, 0xf9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xaa, 0x6d, 0xf2, 0x06, 0xf0, 0xb9, 0x43, 0x4b, 0xa3, 0x2b, 0x9b, 0x83, 0x0b, 0x1b, 0x2b, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x70, 0x42, 0x37, 0x58, 0xec, 0x73, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x98, 0x4c, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0xc1, 0x62, 0x7a, 0xda, 0x83, 0x75, 0xd4, 0xa4, 0x75, 0x38, 0xc5, 0xd6, 0xa0, 0x35, 0x13, 0xcf, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xd6, 0x4c, 0x3c, 0x1b, 0xc0, 0x8b, 0x2e, 0x4c, 0x0e, 0x0e, 0x04, 0x2e, 0x4c, 0x6e, 0xae, 0x4c, 0x6e, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xd5, 0xbd, 0xac, 0x6b, 0x50, 0x08, 0xa6, 0x1e, 0x34, 0x57, 0xd6, 0xb9, 0xc1, 0x79, 0xb0, 0x63, 0x83, 0xe5, 0x90, 0x4c, 0xb3, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0x08, 0xda, 0x9f, 0x0d, 0x1a, 0x3b, 0xeb, 0x5c, 0xc3, 0xe7, 0x4a, 0x1b, 0xb4, 0xaf, 0x25, 0xb8, 0x41, 0x73, 0x65, 0x9d, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x9a, 0x2b, 0xeb, 0xdc, 0xf0, 0x41, 0xce, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0xb4, 0xaf, 0x25, 0x78, 0x50, 0x3a, 0xbf, 0x6f, 0x50, 0xea, 0xe8, 0x6f, 0xf8, 0xc5, 0xe5, 0xa0, 0xc9, 0xa4, 0xcc, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xd0, 0xc2, 0xe5, 0xe7, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0xc1, 0x52, 0xf4, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x42, 0xc5, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x0d, 0xd6, 0x4e, 0x86, 0x6e, 0xb0, 0x90, 0x30, 0x74, 0x83, 0x55, 0xef, 0xa1, 0x07, 0xab, 0x8d, 0x42, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x16, 0x2e, 0x3f, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x58, 0x8b, 0x83, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x56, 0x09, 0xba, 0xc1, 0x32, 0xec, 0xb7, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xb2, 0x63, 0xd0, 0x0d, 0xd6, 0x38, 0x93, 0x1e, 0xac, 0x92, 0x06, 0xad, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x68, 0x3f, 0x18, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x04, 0x27, 0x74, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0xe0, 0xc5, 0xe4, 0x83, 0xb2, 0xce, 0xf3, 0xa0, 0xac, 0xf3, 0x5c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0xdd, 0x60, 0x2d, 0x0e, 0xe6, 0xc1, 0x3a, 0x6a, 0xd2, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0x5d, 0xc3, 0x1b, 0x77, 0x07, 0x8d, 0x87, 0x75, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x6a, 0x92, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x80, 0xcb, 0x3c, 0x68, 0x06, 0x2f, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x4c, 0x67, 0xd7, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x67, 0x1b, 0xda, 0x41, 0x33, 0x78, 0x99, 0x07, 0xad, 0x5e, 0x7d, 0xd6, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x1a, 0xde, 0xb8, 0x3b, 0x68, 0xfe, 0xad, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x50, 0x93, 0x74, 0x0d, 0xbf, 0xb8, 0x1c, 0xac, 0x3a, 0x5c, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xd3, 0xd9, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xce, 0x47, 0xf4, 0x60, 0x19, 0x83, 0xe8, 0x41, 0xab, 0x57, 0x9f, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x86, 0x37, 0xee, 0x0e, 0x5a, 0xd5, 0xeb, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd4, 0x24, 0x5d, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x45, 0x60, 0xb3, 0x6d, 0xd0, 0xf6, 0x95, 0x68, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x66, 0x3a, 0xbb, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xcd, 0xf9, 0x88, 0x1e, 0xb4, 0x9d, 0x25, 0x7a, 0xd0, 0xea, 0xd5, 0x67, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xd0, 0xb8, 0xe2, 0xe7, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0x26, 0xe9, 0x1a, 0x7e, 0x71, 0x39, 0x68, 0xa6, 0x16, 0x74, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x9a, 0x4f, 0x0a, 0xed, 0xa0, 0x29, 0x5b, 0xd0, 0x5a, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0xae, 0xf8, 0xb9, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0x0c, 0xc0, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x83, 0x65, 0x00, 0xa6, 0x1b, 0xac, 0xf0, 0x53, 0x3f, 0x68, 0x06, 0x2f, 0x73, 0x83, 0x85, 0x84, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x8a, 0xa1, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x1b, 0xac, 0x9d, 0x0c, 0xdd, 0x60, 0x21, 0x61, 0xe8, 0x06, 0x8b, 0x85, 0x42, 0x0f, 0xda, 0x97, 0x0b, 0xad, 0x35, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x81, 0xb6, 0xba, 0x86, 0x37, 0xee, 0x0e, 0x1a, 0xa6, 0xec, 0xdc, 0x60, 0x85, 0x50, 0xd3, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xb1, 0xaf, 0xcb, 0x0d, 0xda, 0xe4, 0xf9, 0x6c, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x50, 0x93, 0x74, 0x83, 0xa6, 0x25, 0x2e, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcd, 0x74, 0x76, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0xf3, 0x11, 0x3d, 0x68, 0xb7, 0xe2, 0xf2, 0xa0, 0xd5, 0xab, 0xcf, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x35, 0x49, 0x37, 0x68, 0x9f, 0xe0, 0x72, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x9c, 0x8f, 0xe8, 0x41, 0xe3, 0x07, 0x97, 0xb5, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x2b, 0xd0, 0x56, 0xd7, 0xf0, 0xc6, 0xdd, 0x41, 0xfb, 0x9d, 0x9d, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0xad, 0xa2, 0x62, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x5a, 0x3e, 0x14, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd4, 0x24, 0xdd, 0xa0, 0x69, 0x89, 0xcb, 0x0d, 0x5a, 0x81, 0x14, 0xed, 0xa0, 0x29, 0x4a, 0xd1, 0xd6, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x05, 0xda, 0xea, 0x06, 0x0d, 0x0c, 0x0d, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0xb4, 0x70, 0xf9, 0xb9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x82, 0x13, 0xba, 0x41, 0x53, 0x3d, 0x84, 0x07, 0x4d, 0xfa, 0x7c, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xab, 0x2b, 0xa0, 0x1d, 0x94, 0x75, 0x9e, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0xe3, 0x8a, 0x9f, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0xa4, 0xf9, 0xa9, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x15, 0x0e, 0x3d, 0x68, 0x84, 0xe1, 0xb2, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xab, 0x49, 0x46, 0x37, 0x68, 0xd4, 0xe7, 0xf3, 0x60, 0x89, 0x49, 0x69, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x06, 0x86, 0x06, 0x37, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0xda, 0x7a, 0x15, 0x5d, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0xae, 0xf8, 0xb9, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x66, 0x85, 0x43, 0x37, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x6a, 0x92, 0xd1, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0xd6, 0x47, 0xb2, 0x1e, 0xac, 0x96, 0x36, 0x3d, 0x68, 0xec, 0xe4, 0x72, 0x83, 0xf5, 0x92, 0xea, 0x1b, 0xb4, 0xab, 0x9d, 0xb9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x41, 0x1a, 0xed, 0xd1, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x06, 0xed, 0xf7, 0x6b, 0x1e, 0x2c, 0xe2, 0x69, 0x6d, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x96, 0xe0, 0x31, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0x37, 0x58, 0x5a, 0xcf, 0xba, 0xc1, 0x0a, 0x3f, 0xf5, 0x0d, 0x1a, 0x9b, 0xbf, 0xdc, 0xa0, 0x0d, 0x01, 0xcc, 0x0d, 0xd6, 0x25, 0xab, 0x1f, 0x2c, 0x66, 0x3f, 0xaf, 0x83, 0x26, 0x8d, 0x45, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x68, 0xe1, 0xf2, 0x73, 0x83, 0x76, 0x69, 0x45, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0xa0, 0xfd, 0x60, 0xd0, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x06, 0xf0, 0x4b, 0x73, 0x63, 0x4b, 0x73, 0x2b, 0x6b, 0x29, 0x6b, 0x13, 0x2b, 0x23, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x8d, 0xec, 0x60, 0x1e, 0xa4, 0xda, 0xc2, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0x0b, 0x97, 0x9f, 0x07, 0xad, 0x6b, 0x88, 0x36, 0x6b, 0xd0, 0x2c, 0x4d, 0xe7, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xb3, 0x34, 0x9d, 0x1d, 0x34, 0xc8, 0x82, 0xb9, 0x41, 0x29, 0x21, 0xbe, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x1e, 0x74, 0x61, 0x6c, 0x6c, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x07, 0xed, 0xe8, 0x60, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0x50, 0x93, 0x74, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x60, 0x7b, 0x7b, 0x5b, 0x6b, 0x09, 0x43, 0x2b, 0x0b, 0x23, 0x03, 0x31, 0x7b, 0x93, 0x03, 0x39, 0x0b, 0x83, 0xdb, 0xf0, 0x8b, 0xcb, 0x06, 0x0d, 0x76, 0x81, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x93, 0x8c, 0x6e, 0xb0, 0x42, 0xa4, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0xa5, 0xb4, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x8f, 0x2d, 0x6d, 0x8e, 0x0e, 0xe4, 0xcd, 0x0c, 0x84, 0x2e, 0xec, 0x6c, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0xdb, 0x3a, 0x03, 0xfc, 0x64, 0x72, 0x6f, 0x70, 0x2d, 0x74, 0x6f, 0x70, 0x6b, 0x78, 0x5b, 0x67, 0x00, 0x0f, 0xba, 0x37, 0xb8, 0x16, 0xb6, 0x32, 0xbb, 0x32, 0xb6, 0x66, 0x01, 0x1f, 0x4d, 0xae, 0x8e, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x12, 0x67, 0xb4, 0x01, 0x78, 0x29, 0x6b, 0x83, 0xa3, 0xcb, 0x03, 0x11, 0x2b, 0x9b, 0x4b, 0x23, 0x2b, 0x9b, 0x03, 0x31, 0x2b, 0x73, 0x1b, 0x2b, 0xdb, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x09, 0x4e, 0xe8, 0x1a, 0x1c, 0x5d, 0x07, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x0b, 0x1e, 0x4d, 0x3e, 0x28, 0xeb, 0x3c, 0x0f, 0xca, 0x3a, 0xcf, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0x1a, 0xec, 0x02, 0xdd, 0x60, 0xb1, 0x50, 0xe8, 0x06, 0x8b, 0x85, 0x42, 0x37, 0x58, 0x2c, 0x14, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x18, 0x7a, 0xb0, 0xda, 0x28, 0xf4, 0x60, 0x1d, 0x35, 0xe9, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0xb3, 0x06, 0xcd, 0x30, 0xf9, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x40, 0xe7, 0x1c, 0x5d, 0x18, 0x5d, 0x19, 0xc8, 0x9b, 0x19, 0x08, 0x1d, 0x5a, 0x19, 0x08, 0x5c, 0x98, 0xdc, 0x5c, 0x9a, 0xdb, 0x19, 0x08, 0xdb, 0xdb, 0x1b, 0x9c, 0x5b, 0x09, 0xc0, 0xdf, 0xbb, 0x32, 0x90, 0xb6, 0xb0, 0x34, 0x37, 0xba, 0xb0, 0x34, 0x37, 0x90, 0x30, 0x90, 0xb1, 0x37, 0xb7, 0x39, 0x3a, 0xb9, 0xba, 0x31, 0xba, 0xb4, 0x37, 0x37, 0x90, 0x39, 0xba, 0xb0, 0xb1, 0x35, 0x10, 0xb3, 0x37, 0x39, 0x90, 0x32, 0xb6, 0xb2, 0xb6, 0x32, 0x37, 0xba, 0x39, 0x90, 0x30, 0x37, 0x32, 0x90, 0x30, 0x10, 0xb6, 0x34, 0xb7, 0x72, 0x09, 0xc0, 0xcb, 0x39, 0xba, 0xb0, 0xb1, 0x35, 0x10, 0xb3, 0x37, 0x39, 0x10, 0xb6, 0x34, 0xb7, 0xb2, 0x39, 0x90, 0x34, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0xb1, 0x3a, 0x39, 0xb9, 0x32, 0x37, 0x3a, 0x10, 0x31, 0xb6, 0xb7, 0xb1, 0x35, 0x17, 0x10, 0x90, 0x30, 0x10, 0x31, 0xb6, 0x30, 0xb7, 0x35, 0x10, 0xb6, 0x34, 0xb7, 0x72, 0x09, 0xc0, 0xdb, 0xb1, 0xb0, 0xba, 0xb9, 0xb2, 0x39, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0xb1, 0x3a, 0x39, 0xb9, 0x32, 0x37, 0x3a, 0x10, 0x31, 0xb6, 0xb7, 0xb1, 0x35, 0x10, 0xba, 0x37, 0x10, 0xb1, 0x32, 0x10, 0xb8, 0x30, 0xb9, 0xb9, 0x32, 0x32, 0x90, 0x30, 0x37, 0x32, 0x10, 0x3a, 0x34, 0xb9, 0xb7, 0x3b, 0x37, 0x90, 0x34, 0x37, 0x10, 0x3a, 0xb4, 0x72, 0x09, 0xc0, 0xd7, 0xb1, 0x3a, 0x39, 0xb9, 0x32, 0x37, 0x3a, 0x90, 0x32, 0xb6, 0xb2, 0xb6, 0x32, 0x37, 0x3a, 0x17, 0x10, 0x90, 0x3b, 0xb4, 0x32, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0x34, 0x37, 0xb2, 0x32, 0x37, 0x3a, 0x90, 0xb1, 0x37, 0xb6, 0xba, 0x36, 0x37, 0x10, 0xb9, 0x32, 0x3a, 0xb9, 0xb2, 0x30, 0xba, 0x39, 0x16, 0x10, 0x3a, 0xb4, 0x72, 0x09, 0xa0, 0xad, 0x8c, 0xad, 0xac, 0xad, 0xcc, 0x8d, 0x0e, 0x64, 0x8e, 0x2e, 0x6c, 0x6c, 0x0d, 0x44, 0xee, 0x8d, 0x8d, 0x6d, 0x0e, 0xa4, 0x0e, 0xce, 0xb5, 0x12, 0xc0, 0xbf, 0x8b, 0x5d, 0x99, 0x9c, 0xd8, 0xdb, 0x5c, 0x99, 0x0e, 0x08, 0x59, 0x99, 0x58, 0xdd, 0x19, 0x08, 0x9c, 0x5c, 0x9a, 0x1b, 0x5d, 0x9a, 0xdb, 0x19, 0x48, 0x99, 0x5b, 0x98, 0x18, 0x5b, 0x19, 0xb9, 0x04, 0xf0, 0xe3, 0x52, 0x26, 0x27, 0xa7, 0x03, 0x52, 0x26, 0x27, 0xf7, 0x26, 0x07, 0x02, 0xf7, 0x36, 0x97, 0x46, 0x97, 0xf6, 0xe6, 0x2e, 0x01, 0xf8, 0xe0, 0x92, 0xe6, 0x46, 0xa6, 0x03, 0xf2, 0x56, 0x47, 0x57, 0x26, 0x07, 0x12, 0xe6, 0x46, 0x06, 0x92, 0xe6, 0xe6, 0x56, 0x26, 0x07, 0x92, 0xe6, 0x46, 0x56, 0xe6, 0x46, 0x07, 0xc2, 0x56, 0x66, 0x57, 0xc6, 0x2e, 0x01, 0x78, 0xe3, 0x82, 0x16, 0x36, 0xa6, 0x03, 0x32, 0x47, 0x17, 0x36, 0xb6, 0x06, 0xf2, 0x66, 0x06, 0x92, 0x46, 0x57, 0xd6, 0x36, 0x07, 0x52, 0xe7, 0x46, 0x56, 0x26, 0x07, 0x32, 0xf6, 0xe6, 0x36, 0x47, 0x27, 0x57, 0x37, 0x46, 0x97, 0xf6, 0xe6, 0x2e, 0x01, 0x78, 0xe2, 0x32, 0x56, 0x27, 0xa7, 0x03, 0x32, 0x56, 0x27, 0x27, 0x57, 0xe6, 0x46, 0x07, 0x92, 0x46, 0x57, 0xd6, 0x06, 0x52, 0xe7, 0x46, 0x56, 0x26, 0x07, 0x32, 0xf6, 0xe6, 0x36, 0x47, 0x27, 0x57, 0x37, 0x46, 0x97, 0xf6, 0xe6, 0x2e, 0x01, 0x78, 0xe3, 0x02, 0x17, 0x26, 0xa7, 0x03, 0x32, 0x56, 0x27, 0x27, 0x57, 0xe6, 0x46, 0x07, 0x22, 0x02, 0x17, 0x26, 0x17, 0x76, 0x26, 0x17, 0x06, 0x87, 0x26, 0x02, 0x22, 0x56, 0x96, 0xe6, 0x76, 0x06, 0x22, 0x57, 0x16, 0x46, 0x06, 0x92, 0xe6, 0x2e, 0x01, 0x3c, 0xba, 0x6c, 0xb1, 0xbd, 0x8d, 0x81, 0xd0, 0xe1, 0xd1, 0x75, 0xe9, 0x80, 0xc0, 0x85, 0xc9, 0xcd, 0xa5, 0xb9, 0x9d, 0x81, 0xcc, 0xd1, 0x85, 0xd1, 0x95, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xc0, 0x6b, 0x57, 0x26, 0x27, 0xf6, 0x36, 0x57, 0x6e, 0x50, 0xe4, 0xb4, 0x6e, 0x50, 0xda, 0x5b, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0xaf, 0x4c, 0x4e, 0xde, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0x37, 0x48, 0x52, 0x06, 0x6e, 0x83, 0xd2, 0xde, 0x72, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0xe0, 0xc1, 0x65, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xd2, 0x2c, 0xfb, 0xa0, 0xcc, 0xd2, 0x5d, 0xc3, 0x9f, 0x4b, 0x03, 0x5e, 0x9a, 0x9b, 0x7c, 0x50, 0x66, 0xe9, 0xb6, 0x41, 0x69, 0x6f, 0xb9, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb4, 0xb0, 0xf1, 0x20, 0xec, 0x4b, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x06, 0x8b, 0xe8, 0xeb, 0x36, 0x28, 0xa1, 0x63, 0x37, 0x08, 0x6c, 0x88, 0x83, 0x30, 0x1d, 0x5b, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xe3, 0xee, 0xa0, 0xa9, 0x5a, 0xce, 0x83, 0xb2, 0xce, 0x73, 0x83, 0xd2, 0xde, 0x72, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x36, 0xe6, 0x72, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0xf4, 0xa6, 0xdf, 0x20, 0x49, 0x19, 0x78, 0x83, 0x85, 0x16, 0xf0, 0xb5, 0x41, 0x59, 0x86, 0xbd, 0x41, 0xf3, 0x3b, 0x9e, 0xb3, 0xcc, 0x02, 0xf8, 0x8c, 0xd5, 0xc9, 0xb5, 0xa4, 0xb9, 0x91, 0x95, 0xb9, 0xd1, 0x1b, 0x04, 0xe9, 0xe9, 0x82, 0xc3, 0x07, 0x2b, 0x1d, 0xec, 0xd6, 0xa0, 0x49, 0x5a, 0xce, 0x83, 0x80, 0x65, 0x5d, 0x83, 0xc6, 0xc4, 0x39, 0x0f, 0x0f, 0xde, 0xac, 0x41, 0x5b, 0xbd, 0x9c, 0x87, 0x07, 0x6f, 0xd6, 0xa0, 0x71, 0x62, 0xce, 0x83, 0x80, 0x65, 0x5d, 0x83, 0x56, 0x9a, 0x39, 0x0f, 0x0f, 0xde, 0xac, 0x41, 0xa3, 0xd3, 0x9c, 0x07, 0x87, 0x95, 0xb9, 0x35, 0x68, 0x6d, 0x9b, 0xf3, 0x20, 0x60, 0x59, 0x5b, 0x01, 0x3c, 0xe4, 0xca, 0xc2, 0xc8, 0x5a, 0xd8, 0xd2, 0xdc, 0xca, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa6, 0x42, 0x48, 0x1b, 0xc0, 0x7f, 0x2c, 0x0c, 0x8e, 0xae, 0x4e, 0xae, 0x0c, 0x44, 0x2e, 0xec, 0x0e, 0x84, 0x2d, 0xcd, 0xad, 0x6c, 0x83, 0xd2, 0xde, 0x72, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6c, 0x69, 0xee, 0xc1, 0x49, 0x4f, 0x74, 0xc3, 0x57, 0x38, 0x1b, 0xbe, 0x7e, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x9a, 0x0b, 0x69, 0x6b, 0x50, 0x08, 0xa6, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x4d, 0x98, 0x6b, 0x10, 0x40, 0x67, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0x09, 0xf3, 0xd1, 0x6a, 0x0d, 0x97, 0xd4, 0x1a, 0x52, 0x07, 0x07, 0x87, 0xfd, 0x8e, 0xda, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0x85, 0xf8, 0xf9, 0x1a, 0x2c, 0xb3, 0x66, 0x9a, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xfb, 0xe0, 0xa3, 0xad, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x05, 0xf0, 0x50, 0xe7, 0x46, 0x57, 0x26, 0xd7, 0x96, 0xe6, 0x16, 0x46, 0x57, 0x46, 0xd6, 0xc2, 0x96, 0xe6, 0x56, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0x50, 0x64, 0xae, 0xc1, 0x31, 0xdc, 0x60, 0x83, 0x63, 0xb8, 0xc1, 0x41, 0xeb, 0x4a, 0x9e, 0x1d, 0x34, 0xc3, 0x43, 0xba, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x58, 0x0c, 0x00, 0x7a, 0xd0, 0xea, 0x98, 0xe7, 0x1a, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0x51, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x1d, 0x3f, 0x7a, 0xb0, 0x02, 0x45, 0x7f, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x34, 0xbc, 0xe4, 0xd9, 0x1a, 0x14, 0x3b, 0x9a, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0xc5, 0x3e, 0x77, 0x07, 0xad, 0x8e, 0x79, 0xae, 0xc1, 0x32, 0x6b, 0xa6, 0xd9, 0xa0, 0x29, 0x21, 0xd2, 0xd5, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x02, 0xbc, 0xcb, 0xf0, 0xe0, 0xca, 0xc6, 0xe8, 0xca, 0xc8, 0x5a, 0xd2, 0xdc, 0xc8, 0xca, 0xdc, 0xe8, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x2c, 0x16, 0xe9, 0x41, 0xdb, 0x4a, 0x9e, 0x07, 0x6d, 0x2b, 0x91, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0x42, 0xfc, 0x7c, 0xc3, 0xdb, 0x3a, 0x83, 0xd3, 0x07, 0x2b, 0xc4, 0xcf, 0xd7, 0xa0, 0x4d, 0x2e, 0xd2, 0x0d, 0x1f, 0x47, 0x1d, 0x34, 0xbc, 0x45, 0xda, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0x5b, 0x70, 0xa4, 0x1b, 0x34, 0x3e, 0x47, 0xba, 0x06, 0x6d, 0xd3, 0x90, 0x6e, 0xf8, 0xc5, 0x65, 0x83, 0x56, 0xc7, 0x3c, 0x37, 0x68, 0x80, 0x86, 0xb4, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x68, 0x9b, 0x86, 0x74, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x93, 0x9e, 0xe8, 0x86, 0x0f, 0x72, 0xd6, 0xa0, 0x98, 0xc4, 0x5c, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0x9e, 0x95, 0x3b, 0x38, 0xc4, 0x74, 0x1c, 0xb4, 0x4d, 0x43, 0xba, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x6d, 0xd3, 0x90, 0x6e, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xa0, 0x6d, 0x1a, 0xd2, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x61, 0xb1, 0x7c, 0xd0, 0x74, 0x1f, 0xe9, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0xc0, 0xab, 0x2c, 0x8c, 0xae, 0xc5, 0xad, 0xec, 0x8e, 0x2d, 0xcd, 0xad, 0xdc, 0xa0, 0x84, 0x8e, 0xdd, 0x20, 0xad, 0x1d, 0xf8, 0x20, 0x4c, 0xc7, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xc7, 0x51, 0x1b, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x68, 0x78, 0xc9, 0xf3, 0xa0, 0x20, 0x1e, 0xdf, 0xa0, 0xb9, 0x38, 0xd2, 0x36, 0x28, 0x48, 0x63, 0x07, 0xbc, 0xb9, 0xb0, 0x7b, 0x0d, 0x97, 0xd4, 0x1a, 0xb4, 0x8d, 0x04, 0xda, 0x1a, 0x1a, 0x6e, 0x6e, 0x78, 0x5b, 0x67, 0x83, 0xe6, 0x27, 0x49, 0x6b, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xcf, 0x1c, 0xdd, 0x1b, 0x1c, 0xc8, 0x9b, 0x1b, 0x48, 0x4f, 0x0f, 0xc8, 0x9b, 0x1c, 0x08, 0x59, 0x19, 0x59, 0x99, 0x1b, 0xdd, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x04, 0x1f, 0x36, 0xfc, 0x50, 0xb3, 0x41, 0x4b, 0x02, 0x9d, 0x6b, 0x10, 0x6c, 0xa6, 0x1b, 0x34, 0xc4, 0xd0, 0xb9, 0x41, 0xd3, 0x15, 0x9d, 0xb5, 0x41, 0x63, 0xa2, 0xa4, 0xad, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x03, 0x34, 0xa4, 0x1b, 0xac, 0x6b, 0x58, 0xef, 0xa0, 0x19, 0x1e, 0xd2, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0xa0, 0x21, 0x3d, 0x28, 0xeb, 0x3c, 0x37, 0x68, 0xcb, 0x94, 0xb4, 0x15, 0xc0, 0xe3, 0x0d, 0xae, 0xcc, 0xad, 0x25, 0x8d, 0xae, 0xac, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x8e, 0x98, 0xb4, 0x01, 0xfc, 0xcb, 0xdc, 0xe8, 0xca, 0xe4, 0x40, 0xd8, 0xd2, 0xe6, 0xe8, 0x5e, 0xe2, 0xea, 0xde, 0xe8, 0xca, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x68, 0x4c, 0x94, 0xf4, 0xa0, 0x75, 0xa0, 0xce, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x41, 0xc9, 0x35, 0x5c, 0x52, 0x1b, 0xa4, 0xc7, 0xf8, 0x76, 0xd0, 0x64, 0xf7, 0xd8, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x80, 0x5f, 0xe6, 0x46, 0x27, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xb4, 0x9c, 0x4d, 0xda, 0x00, 0xde, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0x3e, 0x1f, 0xb5, 0xe1, 0xdf, 0xf9, 0x0d, 0x1a, 0x29, 0xe5, 0x6c, 0xc3, 0xd7, 0x2f, 0x1b, 0xa4, 0x11, 0x18, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0xd0, 0x62, 0x16, 0xe9, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x06, 0x01, 0xcb, 0xba, 0x41, 0xb3, 0x58, 0xa4, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0xb0, 0x42, 0xfc, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x7a, 0x8b, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0x3c, 0x68, 0x14, 0x8b, 0xf4, 0x60, 0x11, 0xf8, 0xf9, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x6d, 0x72, 0x91, 0x6e, 0xd0, 0x2c, 0x16, 0xe9, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x0f, 0x57, 0x37, 0x87, 0x76, 0xd0, 0x0a, 0x3e, 0xd8, 0x6a, 0xd0, 0x42, 0x3f, 0xe9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x0b, 0xfd, 0xa4, 0x0d, 0xe0, 0x07, 0x57, 0x37, 0x87, 0x06, 0x32, 0xf6, 0xe6, 0x46, 0x57, 0x86, 0x47, 0xb7, 0xe1, 0x17, 0xa5, 0x0d, 0x5a, 0x31, 0x27, 0xdd, 0x70, 0x49, 0x6d, 0x48, 0x2d, 0xad, 0x06, 0x8d, 0xd7, 0x8f, 0xb6, 0xe1, 0x17, 0x97, 0x0d, 0x96, 0x33, 0xd8, 0xad, 0xe1, 0x6d, 0x9d, 0x83, 0x76, 0x17, 0x4a, 0x5b, 0x83, 0x95, 0x0e, 0x76, 0x1b, 0x7e, 0x71, 0xd9, 0xe0, 0xb4, 0x72, 0x76, 0x50, 0xd6, 0x79, 0x36, 0x6b, 0x50, 0x3c, 0x70, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0x27, 0x00, 0xc0, 0x01, 0x7c, 0xd8, 0xd2, 0xe6, 0xe8, 0x40, 0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x43, 0x12, 0x6c, 0x10, 0x6c, 0xa6, 0x1b, 0xb4, 0xd2, 0xcc, 0xb9, 0x41, 0x5b, 0xbd, 0x9c, 0x6d, 0xf8, 0xfa, 0x65, 0x83, 0x34, 0x02, 0xa3, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x87, 0xab, 0x9b, 0x43, 0x03, 0x61, 0x4b, 0x9b, 0xa3, 0x03, 0x49, 0x33, 0x03, 0x71, 0x2b, 0xbb, 0xdb, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xe0, 0x0c, 0x57, 0xb0, 0xe1, 0x6d, 0x9d, 0x83, 0x96, 0x22, 0x48, 0x37, 0x68, 0xaa, 0x9a, 0x74, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xc2, 0x4f, 0xba, 0xc1, 0x19, 0xae, 0xa0, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x5a, 0xce, 0x26, 0x6d, 0x0d, 0x6f, 0xdc, 0x1d, 0x34, 0x5a, 0xcc, 0xd9, 0xe1, 0x14, 0x5b, 0x83, 0xf6, 0xbc, 0xc7, 0x36, 0x7c, 0xfd, 0xb2, 0x86, 0xe7, 0x49, 0x36, 0x68, 0xe3, 0xa6, 0xf3, 0x20, 0xb1, 0xa5, 0x6a, 0x83, 0x20, 0x3d, 0xdd, 0xa0, 0x75, 0x5c, 0xd2, 0x35, 0x68, 0x74, 0x9a, 0x73, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x4f, 0xbb, 0x32, 0xb9, 0xb9, 0x32, 0x10, 0xb6, 0x34, 0xba, 0x32, 0xb9, 0x30, 0xb6, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x08, 0x3f, 0xe9, 0x1a, 0xde, 0xb8, 0x3b, 0x68, 0x8c, 0x9a, 0xb3, 0x35, 0x68, 0x4c, 0x9c, 0x73, 0xc3, 0xf3, 0x24, 0x1b, 0xb4, 0xf4, 0xcd, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0xe1, 0x27, 0x3d, 0x68, 0x9d, 0x19, 0x74, 0x0d, 0x5a, 0xdb, 0xe6, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x5b, 0x8c, 0xed, 0x6d, 0x6c, 0x2d, 0xae, 0xee, 0x8d, 0xae, 0x0c, 0x84, 0x2d, 0xcd, 0xad, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0x4e, 0x53, 0x7a, 0xd0, 0x0e, 0x3d, 0xe8, 0x1a, 0x34, 0x22, 0xde, 0xb9, 0xe1, 0x79, 0x92, 0x0d, 0x9a, 0xc3, 0xe5, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x3d, 0x27, 0xd7, 0xf0, 0xc6, 0xdd, 0x41, 0x1b, 0xbe, 0x9c, 0xad, 0x41, 0x1b, 0xda, 0x9d, 0x1b, 0x9e, 0x27, 0xd9, 0xa0, 0x61, 0x64, 0xce, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xd0, 0x73, 0x72, 0x0d, 0x6f, 0xdc, 0x1d, 0xb4, 0xde, 0xcc, 0x59, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x16, 0xf0, 0xd9, 0xd2, 0xdc, 0xca, 0x0d, 0x5f, 0xbf, 0xac, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xaf, 0xd8, 0x1b, 0x59, 0x1e, 0x08, 0x5b, 0x9a, 0x5b, 0x19, 0x08, 0xdb, 0xdb, 0x1b, 0xdc, 0x41, 0x62, 0x4b, 0xd5, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x36, 0xeb, 0x86, 0x7f, 0x73, 0x36, 0x28, 0x28, 0x32, 0x0f, 0x5a, 0xd0, 0x21, 0xdd, 0x20, 0xb1, 0xa5, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x83, 0xc6, 0x44, 0x49, 0xd7, 0xf0, 0xb6, 0xce, 0x41, 0x4b, 0xa4, 0xa4, 0x1b, 0x2c, 0xb3, 0x66, 0x9a, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0x78, 0xc8, 0xca, 0xc4, 0xea, 0xce, 0x83, 0x02, 0x36, 0xbf, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0xd0, 0x36, 0x12, 0xe8, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0xc1, 0x83, 0xcb, 0xc1, 0x32, 0x13, 0xfd, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x63, 0xa2, 0xa4, 0x1b, 0xde, 0xd6, 0x39, 0x68, 0x1d, 0x97, 0x74, 0x0d, 0x9f, 0xbb, 0x6c, 0xb0, 0x00, 0xf7, 0xfc, 0x60, 0x19, 0xf8, 0x79, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xb4, 0x8e, 0x4b, 0xba, 0x06, 0x45, 0x07, 0xed, 0x1a, 0xbe, 0x6f, 0x1f, 0x3c, 0xdc, 0xa0, 0x84, 0x8e, 0x5d, 0xc3, 0xe7, 0x4a, 0x1b, 0x9c, 0xf4, 0x44, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x67, 0x96, 0xe6, 0x1e, 0xb4, 0x71, 0x43, 0xda, 0x41, 0x98, 0x8e, 0x6d, 0x68, 0xb8, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x2a, 0x84, 0xb4, 0x0d, 0x8a, 0x01, 0xd9, 0x35, 0x68, 0x69, 0xb3, 0xf4, 0xf0, 0xe0, 0xce, 0x1a, 0x2e, 0xa9, 0x0d, 0x5a, 0xab, 0xb5, 0x5a, 0x83, 0xc6, 0x75, 0x48, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7d, 0xd0, 0x94, 0x68, 0x69, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0x78, 0x5b, 0x67, 0x00, 0x8f, 0x31, 0xb6, 0xb7, 0xb9, 0xb2, 0x16, 0xb8, 0x30, 0xb9, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x1c, 0x5b, 0x69, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0xb8, 0xa4, 0x36, 0x28, 0x6a, 0xc4, 0xd7, 0xa0, 0x75, 0x5c, 0xd2, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1f, 0xb4, 0x8e, 0x4b, 0xda, 0x86, 0x0f, 0x72, 0xd6, 0xa0, 0x98, 0xc4, 0xdc, 0xa0, 0x25, 0x81, 0xce, 0x8d, 0x43, 0x1b, 0x34, 0xd0, 0xdc, 0x79, 0xd0, 0x3a, 0x2e, 0xe9, 0x1a, 0x2e, 0xa9, 0x0d, 0x5a, 0xab, 0xb5, 0x5a, 0x83, 0x36, 0xb9, 0x48, 0x37, 0xbc, 0xad, 0xb3, 0xc1, 0x2a, 0x39, 0xd2, 0x83, 0xd6, 0x71, 0x49, 0xdb, 0xa0, 0xe8, 0xd3, 0xdd, 0x60, 0x05, 0x8a, 0xfe, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xa5, 0xb9, 0xa5, 0xd1, 0x81, 0xa4, 0xb9, 0x91, 0x95, 0xb9, 0xd1, 0xcd, 0x6d, 0x50, 0xc2, 0x63, 0xae, 0x41, 0x69, 0x96, 0x7d, 0xb0, 0x02, 0x45, 0x7f, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xf4, 0x6f, 0xe9, 0x06, 0x4d, 0xff, 0x96, 0x76, 0xb0, 0xcc, 0x44, 0x7f, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x95, 0x6c, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x42, 0xf0, 0xe1, 0x60, 0x09, 0x24, 0xe6, 0x1a, 0x1e, 0x61, 0x5d, 0x83, 0x62, 0x12, 0x73, 0x0d, 0x82, 0xcd, 0x74, 0x83, 0x26, 0x69, 0x39, 0x37, 0x68, 0x9c, 0x98, 0x73, 0x83, 0xd6, 0xb6, 0x39, 0x3b, 0x68, 0x29, 0x82, 0x74, 0x0d, 0xbf, 0x92, 0xad, 0xe1, 0x6d, 0xd6, 0x0d, 0xff, 0xe6, 0x6c, 0xd0, 0xe8, 0x3f, 0xe8, 0x86, 0x4b, 0x6a, 0x83, 0x06, 0x74, 0x4b, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0x51, 0xdc, 0xa0, 0xe9, 0xdf, 0xd2, 0x83, 0xd6, 0xdd, 0x49, 0xab, 0x35, 0x28, 0x25, 0xc4, 0xd7, 0x70, 0x49, 0x6d, 0x50, 0xd4, 0x88, 0xaf, 0x41, 0x6b, 0xb5, 0x56, 0x07, 0x6d, 0xab, 0x96, 0xb6, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x6b, 0xb5, 0x56, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x62, 0x61, 0x63, 0x6b, 0x07, 0xed, 0x3d, 0x97, 0x6e, 0x50, 0x74, 0xd0, 0x0e, 0xf0, 0x8d, 0xbd, 0xb1, 0xb5, 0xbc, 0xad, 0x1b, 0xb4, 0xa8, 0x5b, 0xba, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x0f, 0x1a, 0x2b, 0x2f, 0xdd, 0xe0, 0xe4, 0x20, 0xb7, 0xe1, 0xcb, 0xc9, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x9e, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0x02, 0x36, 0x7f, 0x0d, 0x6f, 0xeb, 0x1c, 0xb4, 0xa8, 0x5b, 0xda, 0x1a, 0x84, 0x74, 0xea, 0x06, 0xa5, 0x84, 0xf8, 0xc6, 0xf3, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0xe4, 0xb4, 0x1e, 0x34, 0x07, 0x60, 0xba, 0x06, 0x4b, 0x78, 0x8c, 0x37, 0x28, 0x25, 0xc4, 0x37, 0x9e, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0x22, 0xa7, 0x75, 0x83, 0x06, 0x96, 0x41, 0x0f, 0xda, 0x4b, 0x2a, 0x6d, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x1a, 0x7d, 0x69, 0x6b, 0xb0, 0xcc, 0x9a, 0x69, 0x36, 0x68, 0x4a, 0x88, 0x74, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x05, 0xf8, 0x8f, 0xbd, 0xb1, 0xd5, 0xb5, 0xb9, 0xcd, 0xb5, 0x84, 0x91, 0xd9, 0x85, 0xb9, 0x8d, 0x95, 0x91, 0x07, 0x8d, 0x95, 0x97, 0x6e, 0xb8, 0xa4, 0x36, 0x68, 0xad, 0xd6, 0x6a, 0x0d, 0x1a, 0xd7, 0x21, 0xdd, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0xe6, 0x24, 0x3d, 0x68, 0xef, 0xb9, 0xb4, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x5a, 0xcc, 0x22, 0xdd, 0xa0, 0xe9, 0xdf, 0xd2, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x5a, 0xab, 0xb5, 0x5a, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x95, 0x6c, 0x0d, 0x8f, 0xb0, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x5b, 0xbd, 0x9c, 0x07, 0x2d, 0x45, 0x90, 0xae, 0xe1, 0x6d, 0xd6, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x1a, 0x11, 0xef, 0xdc, 0x78, 0x7e, 0xd0, 0xa2, 0x6e, 0x69, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x5a, 0x69, 0xe6, 0x3c, 0x68, 0x29, 0x82, 0x74, 0x0d, 0x6f, 0xb3, 0x6e, 0x50, 0x4c, 0x62, 0x6e, 0xd0, 0x86, 0x76, 0xe7, 0x41, 0xe3, 0x31, 0xa6, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0xf0, 0x19, 0x63, 0x7b, 0x9b, 0x2b, 0x6b, 0x49, 0xa3, 0x2b, 0x6b, 0x3b, 0x68, 0x94, 0xd6, 0x6a, 0xc3, 0x83, 0x92, 0x6b, 0xb8, 0xa4, 0x36, 0x68, 0xeb, 0xb5, 0x74, 0x0d, 0x96, 0x40, 0x62, 0x6e, 0x70, 0x0c, 0x37, 0x38, 0x68, 0x96, 0xd2, 0xb3, 0x0d, 0x5f, 0xbf, 0xac, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x61, 0x72, 0x61, 0x07, 0x8d, 0xd2, 0x5a, 0x6d, 0x10, 0xa4, 0xa7, 0x1b, 0x34, 0xa0, 0x5b, 0xba, 0x06, 0x8d, 0x79, 0x74, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x07, 0x17, 0x26, 0x37, 0x57, 0x06, 0xc2, 0x56, 0x16, 0x66, 0x57, 0x36, 0xb7, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xc0, 0x2f, 0x57, 0x16, 0x46, 0xd6, 0xf2, 0xe6, 0x56, 0xb6, 0x86, 0x4b, 0x6a, 0x83, 0xc6, 0x63, 0x4c, 0x6b, 0x0d, 0x5a, 0xe7, 0xe9, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xfb, 0x0d, 0xae, 0xcc, 0x0d, 0x64, 0xec, 0xcd, 0x8d, 0x2e, 0x2c, 0xcd, 0xad, 0x4c, 0x6e, 0x6e, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe6, 0x88, 0x49, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0x2d, 0xea, 0x96, 0xb6, 0x06, 0xed, 0x2b, 0x75, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xa1, 0x56, 0x37, 0x47, 0x07, 0x42, 0x57, 0x86, 0x47, 0x77, 0xd0, 0x28, 0xad, 0x55, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x50, 0xc2, 0x63, 0x2e, 0x78, 0x3c, 0x78, 0x7d, 0xb0, 0x04, 0x12, 0x73, 0x83, 0x22, 0xa7, 0x75, 0x83, 0x20, 0x3d, 0xdd, 0xa0, 0xa5, 0x08, 0xd2, 0x35, 0x68, 0xd3, 0xa3, 0x74, 0x83, 0x25, 0xf5, 0x4b, 0xab, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x05, 0xf0, 0x21, 0x16, 0x46, 0xd6, 0xc2, 0x56, 0x16, 0x66, 0xd6, 0x32, 0xf6, 0xe6, 0x46, 0x17, 0x96, 0xe6, 0x56, 0x26, 0x1f, 0xb4, 0xde, 0x52, 0x7a, 0x10, 0x9e, 0xaa, 0x6b, 0xd0, 0x98, 0x38, 0xe7, 0x41, 0x01, 0x9b, 0xbf, 0x06, 0x8d, 0x4e, 0x73, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x34, 0x6c, 0xa5, 0x83, 0xc6, 0xca, 0x4b, 0x57, 0x83, 0x60, 0x33, 0xdd, 0xa0, 0x49, 0x5a, 0xce, 0x0d, 0xda, 0xea, 0xe5, 0xdc, 0xa0, 0x71, 0x62, 0xce, 0x0d, 0x5a, 0x69, 0xe6, 0x3c, 0x68, 0x76, 0xbb, 0x74, 0xc3, 0xbf, 0x39, 0x1b, 0x34, 0xfd, 0x5b, 0x7a, 0xd0, 0x2c, 0x16, 0x69, 0x6b, 0xb0, 0xcc, 0x9a, 0x69, 0x36, 0x68, 0x4a, 0x88, 0x74, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x00, 0x5e, 0xc4, 0xc2, 0xc8, 0x5a, 0xc4, 0xd8, 0xde, 0xc6, 0xd6, 0x5a, 0xe6, 0xe8, 0xe4, 0xea, 0xc6, 0xe8, 0xea, 0xe4, 0xca, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x7a, 0x4b, 0xe9, 0x06, 0xcd, 0x62, 0x91, 0x1e, 0xb4, 0xf7, 0x5c, 0x7a, 0xd0, 0x16, 0x87, 0xe9, 0x06, 0x45, 0x07, 0xed, 0x1a, 0xbe, 0x6f, 0x1f, 0x3c, 0xdc, 0xa0, 0x84, 0x8e, 0x5d, 0xc3, 0xe7, 0x4a, 0x1b, 0x34, 0xd8, 0x42, 0x7a, 0xd0, 0x94, 0x66, 0xe9, 0x41, 0x98, 0x8e, 0x6d, 0x68, 0xb8, 0xb9, 0x41, 0x3b, 0x9f, 0xa5, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x2c, 0x81, 0xc4, 0x5c, 0xc3, 0x25, 0xb5, 0xc1, 0x12, 0x48, 0xcc, 0x35, 0x38, 0x5b, 0xb6, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x9a, 0x0b, 0xe9, 0xe1, 0xc1, 0x9d, 0x35, 0xbc, 0xad, 0x73, 0xd0, 0x1a, 0x9d, 0x69, 0x6d, 0x50, 0x0c, 0xc8, 0x6e, 0xd0, 0x94, 0x68, 0xe9, 0x06, 0x2d, 0x91, 0x96, 0x1e, 0x34, 0xe8, 0x5a, 0xba, 0x1a, 0xb4, 0xa3, 0x65, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x8e, 0x96, 0x69, 0x03, 0xf8, 0xca, 0x95, 0x85, 0x91, 0x81, 0x94, 0xbc, 0xb9, 0x95, 0x81, 0xa4, 0xd1, 0x95, 0xb5, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x40, 0x73, 0xe7, 0x06, 0xc1, 0x66, 0xba, 0x41, 0x1b, 0x33, 0x9d, 0x1b, 0xb4, 0x21, 0xd2, 0xb9, 0x41, 0x53, 0x2a, 0x9d, 0x6d, 0xf8, 0xfa, 0x65, 0x83, 0x34, 0x02, 0xa3, 0x0d, 0x82, 0xf4, 0x74, 0x0d, 0x1a, 0x68, 0xee, 0x6c, 0x0d, 0xda, 0x98, 0xe9, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xc0, 0x0b, 0x2e, 0x4c, 0x6e, 0xae, 0xac, 0x45, 0x8c, 0xed, 0x6d, 0x6c, 0x6d, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x9a, 0xa5, 0xe9, 0xec, 0xa0, 0xad, 0xff, 0xce, 0xd6, 0xa0, 0x0d, 0x91, 0xce, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x92, 0xb4, 0xe9, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0x89, 0x33, 0xda, 0x41, 0x5b, 0xff, 0x9d, 0xad, 0x41, 0x53, 0x2a, 0x9d, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x25, 0x69, 0xd3, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xad, 0xaf, 0x74, 0x76, 0xd0, 0xd6, 0x7f, 0xe7, 0x41, 0xeb, 0xee, 0xa4, 0x35, 0x6b, 0xd0, 0xcc, 0xb4, 0xe9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x33, 0xd3, 0xa6, 0x0d, 0xe0, 0x5b, 0x86, 0x57, 0x36, 0x56, 0x47, 0x57, 0x06, 0x02, 0x17, 0x26, 0x37, 0x57, 0x26, 0xb7, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x7a, 0x23, 0xdb, 0x0d, 0xc2, 0x69, 0x6c, 0x83, 0xb4, 0x76, 0xe0, 0x83, 0xa6, 0x09, 0x3c, 0x37, 0x7c, 0xfd, 0xb2, 0x41, 0x1a, 0x81, 0xd1, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0xdf, 0x60, 0x59, 0xd0, 0xe8, 0x06, 0x25, 0x74, 0xec, 0x06, 0x4d, 0x13, 0x78, 0x1e, 0x84, 0xe9, 0xd8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x75, 0x95, 0xed, 0x41, 0xdb, 0x4a, 0x9e, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x2c, 0x75, 0x1b, 0x5d, 0x83, 0x65, 0xd6, 0x4c, 0xb3, 0x41, 0x53, 0x42, 0xa4, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0xa0, 0x99, 0x69, 0xd3, 0x83, 0x45, 0xe0, 0xe7, 0x1b, 0x2e, 0xa9, 0x0d, 0xd2, 0x63, 0x7c, 0xd7, 0xa0, 0x71, 0x1d, 0xd2, 0x0d, 0x8e, 0xe1, 0x06, 0x07, 0x8b, 0x37, 0x4f, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x59, 0xc3, 0xc4, 0x6d, 0x70, 0xcc, 0xf0, 0xdc, 0x30, 0x71, 0x1b, 0x34, 0xdc, 0xe3, 0x79, 0xb0, 0x00, 0xf7, 0x7c, 0xc3, 0xdb, 0x3a, 0x07, 0x2b, 0x55, 0x4f, 0x37, 0x58, 0x85, 0xa4, 0xb4, 0x41, 0x7a, 0x8c, 0xef, 0x1a, 0x34, 0xbc, 0xe4, 0x79, 0xd0, 0xba, 0x92, 0xe7, 0x1a, 0xac, 0x10, 0x3f, 0x3f, 0x58, 0x06, 0x7e, 0xbe, 0x82, 0xc7, 0x07, 0x2b, 0x1d, 0xec, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x07, 0x4e, 0xae, 0x0c, 0xae, 0xcc, 0x8d, 0x0c, 0x84, 0xee, 0x0d, 0x84, 0x0e, 0xad, 0x0c, 0x64, 0x8e, 0x2e, 0x6c, 0x6c, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x08, 0xda, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x85, 0xc5, 0xf2, 0x1a, 0xfe, 0xa2, 0xd9, 0xe0, 0x88, 0x92, 0x7a, 0x70, 0xd0, 0xf2, 0x6c, 0x0d, 0x6f, 0xeb, 0x1c, 0xb4, 0x28, 0x72, 0x5a, 0xab, 0x41, 0xdb, 0x48, 0xa0, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0xdb, 0x4b, 0xa0, 0x03, 0xf8, 0xa5, 0xb9, 0xcd, 0xc1, 0x95, 0x8d, 0xd1, 0x81, 0xb0, 0xa5, 0xb9, 0x95, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x86, 0xac, 0x40, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x38, 0x64, 0x10, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0x63, 0xe3, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0x3c, 0x28, 0xb9, 0x41, 0x63, 0x7d, 0xa5, 0x07, 0x6d, 0xfd, 0x77, 0x1e, 0xb4, 0xad, 0xe4, 0xd9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x41, 0x43, 0x58, 0xa0, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0xb4, 0xce, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x4d, 0x27, 0x82, 0x6e, 0xb8, 0xa4, 0xd6, 0x38, 0xb4, 0x41, 0x03, 0xcd, 0x9d, 0x87, 0x07, 0x77, 0xda, 0xf0, 0xb4, 0xce, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0xce, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xab, 0xe4, 0x48, 0x0f, 0x0f, 0xee, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0xd6, 0x96, 0x4b, 0x5b, 0xc3, 0x25, 0xb5, 0xe1, 0xc1, 0x9d, 0x35, 0x68, 0xe0, 0xd9, 0x74, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x9d, 0x08, 0xba, 0x86, 0x37, 0xee, 0x0e, 0x9a, 0xb4, 0xe8, 0xac, 0xc3, 0xd3, 0x3a, 0x87, 0x53, 0xac, 0x05, 0xf0, 0x1a, 0xab, 0x93, 0x6b, 0xa1, 0x7b, 0x6b, 0xa1, 0x0b, 0x93, 0x83, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1a, 0x17, 0x3b, 0x6d, 0x00, 0xbf, 0x34, 0xba, 0xb2, 0x36, 0x10, 0xba, 0x37, 0x10, 0xba, 0x30, 0x39, 0xb8, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x44, 0x49, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0x14, 0x93, 0x98, 0x6b, 0x10, 0x6c, 0xa6, 0x1b, 0x34, 0x49, 0xcb, 0xb9, 0x41, 0x63, 0xe2, 0x9c, 0x1b, 0xb4, 0x31, 0xd3, 0xd9, 0x41, 0x4b, 0x11, 0xa4, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0xf9, 0xa0, 0x19, 0x99, 0xd3, 0x0d, 0x8e, 0x36, 0x7c, 0x6b, 0x70, 0x74, 0x1d, 0x5c, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0xc3, 0x33, 0x93, 0x07, 0x65, 0x9d, 0xe7, 0x06, 0x6d, 0xdb, 0x9d, 0xd6, 0x06, 0x41, 0x7a, 0xba, 0x41, 0x4b, 0x11, 0xa4, 0x6b, 0xd0, 0x56, 0x2f, 0xe7, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0x7c, 0x1d, 0xbb, 0x06, 0xad, 0x34, 0x73, 0x6e, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0xc1, 0xbf, 0xb1, 0x6b, 0xd0, 0x38, 0x31, 0xe7, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0x3c, 0x5b, 0xba, 0x06, 0x8d, 0x4e, 0x73, 0x6e, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x87, 0x45, 0xab, 0x35, 0x68, 0x6d, 0x9b, 0x73, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0x0d, 0x9b, 0xb3, 0x59, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x0d, 0xda, 0xbe, 0x94, 0x6a, 0x83, 0x25, 0x5d, 0xdd, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xa6, 0x09, 0x3c, 0x37, 0x28, 0x25, 0xc4, 0x37, 0x68, 0xd0, 0xb5, 0x74, 0x83, 0x62, 0x47, 0x73, 0x83, 0x76, 0xee, 0x4a, 0xd7, 0x60, 0xdd, 0x2a, 0xd3, 0xac, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0xd0, 0x84, 0xf9, 0xe8, 0x41, 0x0b, 0x3a, 0xa4, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x25, 0xb5, 0xc6, 0xf3, 0x83, 0xc6, 0x75, 0x48, 0x3b, 0x28, 0xeb, 0x3c, 0x37, 0x38, 0xda, 0xf0, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0x57, 0xf2, 0x5c, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x33, 0xb9, 0x86, 0x5f, 0x5c, 0x0e, 0xda, 0x56, 0xf2, 0xac, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0xda, 0x56, 0x2d, 0xdd, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xa2, 0xa4, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0xee, 0x42, 0xe9, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x71, 0xb1, 0xd3, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0xb0, 0xa5, 0x7b, 0xd0, 0xfe, 0x8e, 0x69, 0xab, 0x41, 0xeb, 0xf0, 0xa5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xad, 0xc3, 0x97, 0x36, 0x80, 0xef, 0xd8, 0x1b, 0x5b, 0x5d, 0x9b, 0x1b, 0x88, 0x5c, 0x19, 0x9d, 0x5c, 0x59, 0x18, 0xdd, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0xc7, 0x56, 0x37, 0x1e, 0x94, 0x59, 0xba, 0x1b, 0xbe, 0x7e, 0xd9, 0x20, 0x8d, 0xc0, 0x68, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x34, 0x6c, 0xa5, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x0b, 0xc9, 0xa7, 0x1d, 0xb4, 0xee, 0x4e, 0xba, 0x41, 0x1a, 0x81, 0xd1, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0xdf, 0xa0, 0xed, 0xb2, 0xcf, 0x0d, 0x4a, 0xe8, 0xd8, 0x0d, 0xca, 0x2c, 0xdd, 0x83, 0x30, 0x1d, 0x5b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xde, 0xa5, 0x8a, 0xac, 0x92, 0x8a, 0xae, 0x40, 0xc6, 0xde, 0xc8, 0xca, 0x40, 0xc2, 0xdc, 0xc8, 0x40, 0xe0, 0xde, 0xca, 0xda, 0x40, 0xc4, 0xd8, 0xde, 0xc6, 0xd6, 0xe6, 0x40, 0xc2, 0xe4, 0xca, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0x5b, 0x0d, 0xa4, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x46, 0x71, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0xb6, 0xf6, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x41, 0xb3, 0x58, 0xa4, 0x1b, 0x34, 0xfd, 0x7c, 0x5a, 0x6b, 0xb0, 0xcc, 0x9a, 0x69, 0x36, 0x68, 0x4a, 0x88, 0x74, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x00, 0xfe, 0xd2, 0xdc, 0xc8, 0xca, 0xdc, 0xe8, 0x5a, 0xe0, 0xc2, 0xe8, 0xe8, 0xca, 0xe4, 0xdc, 0x5a, 0xec, 0xd2, 0xde, 0xd8, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x7a, 0x4b, 0xe9, 0x06, 0x0d, 0xa3, 0x9f, 0x1e, 0xb4, 0xc6, 0x7e, 0xba, 0xe1, 0x92, 0xda, 0x60, 0xc1, 0x96, 0xee, 0x1a, 0xb4, 0x98, 0x45, 0x7a, 0xd0, 0xf4, 0xf3, 0xe9, 0x1a, 0x34, 0xae, 0x43, 0xba, 0xc1, 0x31, 0xdc, 0x60, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xcc, 0x49, 0x7a, 0xd0, 0x62, 0xfb, 0x69, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x2c, 0xd8, 0xd2, 0xdd, 0xa0, 0xfd, 0x1d, 0xd3, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x5a, 0xcc, 0x22, 0xdd, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x68, 0x16, 0x8b, 0x74, 0x83, 0x86, 0xd1, 0x4f, 0x6b, 0x35, 0x68, 0x78, 0xb5, 0x74, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0xe1, 0xd5, 0xd2, 0x06, 0xf0, 0x69, 0x0b, 0x5b, 0x2b, 0x03, 0x11, 0x63, 0x7b, 0x1b, 0x5b, 0xdb, 0xf0, 0xf5, 0xcb, 0x06, 0x89, 0x2d, 0x55, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x2c, 0x81, 0xc4, 0xdc, 0x20, 0xb1, 0xa5, 0x6a, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xd0, 0xe8, 0x34, 0xe7, 0x41, 0x4b, 0x11, 0xa4, 0x6b, 0x50, 0xf4, 0xe9, 0x6e, 0xd0, 0xa2, 0xc8, 0xe9, 0x1a, 0x94, 0xf0, 0x98, 0x1b, 0xb4, 0x28, 0x72, 0xba, 0x41, 0x43, 0x32, 0xa7, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0xe1, 0x13, 0xd1, 0x83, 0x66, 0x64, 0x4e, 0x37, 0x38, 0xda, 0xf0, 0xad, 0xe1, 0x92, 0xda, 0xa0, 0x69, 0x1e, 0xd3, 0x35, 0x58, 0x02, 0x89, 0x79, 0x50, 0x50, 0x64, 0xae, 0x41, 0x8b, 0x22, 0xa7, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x44, 0xd0, 0xb6, 0xe1, 0x99, 0xc9, 0x83, 0x66, 0x64, 0x4e, 0xd7, 0xa0, 0xc5, 0x2c, 0xd2, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0x66, 0xb1, 0x48, 0x0f, 0x8e, 0x2a, 0x73, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x22, 0x55, 0x6f, 0xd0, 0x54, 0xad, 0xe9, 0x86, 0x5f, 0x94, 0x36, 0x38, 0xe9, 0x89, 0x6e, 0xf8, 0x8b, 0x66, 0x83, 0x85, 0x0f, 0xdb, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0x34, 0x6a, 0xf3, 0xb9, 0xc1, 0x92, 0xea, 0xa4, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x96, 0x7e, 0x34, 0x6d, 0x78, 0x16, 0x6f, 0xd9, 0xf0, 0x8b, 0xcb, 0xc1, 0x69, 0x0b, 0x6d, 0x10, 0xb5, 0x41, 0x41, 0x1a, 0xbb, 0x86, 0xef, 0xdb, 0x07, 0xbc, 0xbc, 0x32, 0xfc, 0xa0, 0x99, 0x5b, 0xcf, 0x35, 0x38, 0xb1, 0xdf, 0x6c, 0xd0, 0xa8, 0xfc, 0xdf, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x25, 0x52, 0xf5, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xb0, 0x58, 0x3e, 0x68, 0xa8, 0xd6, 0x74, 0xc3, 0x2f, 0x4a, 0x1b, 0x2c, 0x22, 0xa8, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x0f, 0xe5, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x9a, 0xcf, 0x41, 0xeb, 0xee, 0xa4, 0x07, 0x2b, 0xb9, 0x45, 0xd7, 0xf0, 0x2c, 0xde, 0x06, 0x6d, 0x7b, 0x86, 0x1e, 0x34, 0x8f, 0x84, 0xda, 0x06, 0x05, 0x69, 0xec, 0x06, 0x2d, 0xf5, 0x9b, 0xae, 0xc1, 0xa9, 0xe1, 0x68, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0xd6, 0xe9, 0x4c, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x8d, 0x2d, 0xa1, 0xd6, 0x86, 0x0f, 0x72, 0xd6, 0xa0, 0x98, 0xc4, 0xdc, 0xa0, 0x31, 0x71, 0xce, 0x83, 0x96, 0x22, 0x48, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x4b, 0x63, 0xd7, 0xf0, 0xa0, 0xe4, 0x06, 0xab, 0xc2, 0x88, 0x0f, 0xda, 0xfa, 0xef, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x2c, 0x8d, 0x5d, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x66, 0x4c, 0x3e, 0x3b, 0x68, 0xeb, 0xbf, 0xb3, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x96, 0xba, 0x8d, 0xae, 0xc1, 0x32, 0x6b, 0xa6, 0xd9, 0xa0, 0x29, 0x21, 0xd2, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0xd0, 0xf0, 0x6a, 0xe9, 0x06, 0xad, 0xb7, 0x94, 0x1e, 0x34, 0x71, 0x86, 0xba, 0xe1, 0x92, 0xda, 0xa0, 0xb5, 0x5a, 0xab, 0x83, 0xa6, 0x20, 0x4e, 0x37, 0x3c, 0x28, 0xb9, 0x86, 0x0f, 0x72, 0x36, 0x68, 0x44, 0x0d, 0xf5, 0xa0, 0xf5, 0x1d, 0xd3, 0x0d, 0x97, 0xd4, 0x06, 0xad, 0xd5, 0x5a, 0x6d, 0xd0, 0x74, 0x0b, 0xea, 0x1a, 0xb4, 0x28, 0x72, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x1b, 0xac, 0x2c, 0x3e, 0x3d, 0x68, 0x46, 0xe6, 0xb4, 0xc3, 0x29, 0xb6, 0x06, 0x8d, 0xf3, 0x98, 0x6e, 0xf8, 0xfa, 0x65, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xc7, 0xde, 0xda, 0xe0, 0xd8, 0xca, 0xe8, 0xca, 0x40, 0xc2, 0xdc, 0xc8, 0x40, 0xe0, 0xde, 0xe0, 0x0e, 0x12, 0x5b, 0xaa, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x77, 0xa1, 0x74, 0x83, 0xc4, 0x96, 0xaa, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0xb4, 0xbb, 0x50, 0xba, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x83, 0x76, 0x17, 0x4a, 0xd7, 0x60, 0xa5, 0x83, 0xdd, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xe0, 0xe9, 0x41, 0xbb, 0x0b, 0xa5, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x13, 0x41, 0xdb, 0x06, 0x2d, 0xe1, 0x9e, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0xf6, 0x4f, 0x51, 0xab, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x2d, 0xe0, 0xb3, 0xd5, 0xb9, 0x9d, 0x1b, 0x2c, 0x87, 0x64, 0x9a, 0x0d, 0x4e, 0xec, 0x37, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x95, 0x77, 0x45, 0x6d, 0xf8, 0xae, 0x65, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0x80, 0x6c, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xd9, 0xc2, 0xdc, 0xce, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x02, 0x09, 0xe7, 0x0d, 0x82, 0xf4, 0x74, 0x8d, 0x43, 0x07, 0x4d, 0xe3, 0xaa, 0xad, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x56, 0xc9, 0x91, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0xd0, 0xd8, 0x94, 0xe6, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb9, 0xb7, 0xb9, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0x50, 0x64, 0x6e, 0xd0, 0xac, 0x50, 0xc3, 0x06, 0xed, 0x1d, 0xa3, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0xa6, 0x71, 0xd5, 0x5a, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x9c, 0x0e, 0x26, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x83, 0x60, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x5a, 0xd3, 0x1d, 0xdb, 0xa0, 0xb1, 0xfb, 0xae, 0x0d, 0xda, 0x3b, 0x46, 0x6d, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0x84, 0x08, 0xd5, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xce, 0x24, 0x61, 0x83, 0xc6, 0x5f, 0xa8, 0x0e, 0xda, 0x74, 0x46, 0x6d, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0x5a, 0x8b, 0x76, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x14, 0x99, 0x07, 0xed, 0x35, 0xa3, 0xae, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x56, 0xfa, 0x8f, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xb0, 0xb2, 0x0f, 0x6e, 0x83, 0xb2, 0xe4, 0x7d, 0x01, 0xdf, 0x8c, 0x2d, 0x2c, 0xef, 0xa0, 0xf1, 0x6b, 0xd4, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xd6, 0xf5, 0xc1, 0x6d, 0x50, 0x50, 0x64, 0x6e, 0x70, 0x0c, 0x37, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0xa9, 0x28, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0x75, 0x7d, 0x70, 0x07, 0x6d, 0x3a, 0xa3, 0x76, 0x38, 0xc5, 0xd6, 0xa0, 0x05, 0x1e, 0xcc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x16, 0x78, 0x30, 0x1b, 0xc0, 0x0f, 0xaf, 0x8d, 0x0d, 0x84, 0xae, 0xac, 0x0d, 0x8e, 0x2d, 0x8c, 0xae, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x00, 0xbf, 0x34, 0xb7, 0x16, 0xba, 0x30, 0x36, 0xb6, 0x16, 0xb3, 0x37, 0xb9, 0xf6, 0xf0, 0xc1, 0xea, 0x06, 0xa5, 0xbd, 0xe5, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0x35, 0x17, 0xd2, 0xc3, 0x07, 0xab, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0x34, 0x58, 0x33, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x60, 0xcd, 0x68, 0x03, 0x78, 0x95, 0xb9, 0xd1, 0xc9, 0xe5, 0xb5, 0xc0, 0xbd, 0xa5, 0xb9, 0xd1, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x34, 0x40, 0x0c, 0xba, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x0d, 0x10, 0xa4, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0xf8, 0xe9, 0xc2, 0xd8, 0xd8, 0x5a, 0xe8, 0xde, 0xe0, 0x36, 0xbc, 0xad, 0x33, 0xc0, 0x7f, 0x97, 0x46, 0x56, 0xd6, 0x42, 0xf7, 0x06, 0xd7, 0x6a, 0xd0, 0x68, 0xc0, 0xe8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xa3, 0x01, 0xa3, 0x0d, 0xc0, 0x8b, 0x98, 0x5c, 0xd8, 0x58, 0x19, 0x48, 0x9a, 0x1b, 0x5d, 0x99, 0x1c, 0xdc, 0x1b, 0x5b, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3c, 0x68, 0x87, 0xb5, 0xf3, 0xf0, 0xb4, 0xce, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x41, 0x03, 0xc4, 0xa0, 0x6b, 0xb8, 0xa4, 0x16, 0xc0, 0x57, 0x4c, 0x2e, 0x6c, 0x6c, 0xad, 0x8c, 0xae, 0x8c, 0xac, 0xa5, 0x8c, 0xad, 0xac, 0x6d, 0x0d, 0xda, 0xd7, 0x48, 0x3d, 0x28, 0x60, 0xf3, 0x6b, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0xe0, 0x41, 0x57, 0xe7, 0x16, 0xd6, 0xd2, 0xf6, 0x46, 0x56, 0xb6, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x9c, 0xee, 0xb2, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x6a, 0x8c, 0xed, 0x83, 0xd6, 0x8c, 0x52, 0x5b, 0x01, 0x3c, 0xe8, 0xc2, 0xd8, 0xd8, 0x5a, 0xca, 0xd8, 0xca, 0xda, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa6, 0x9b, 0x52, 0x1b, 0xc0, 0x8f, 0x2e, 0x8c, 0x8d, 0x0d, 0x04, 0x4e, 0xae, 0xcc, 0x2c, 0x6c, 0xac, 0x6c, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xff, 0xce, 0x6f, 0xb0, 0x04, 0x53, 0xfb, 0x60, 0x29, 0x0d, 0xf4, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xde, 0xf0, 0xef, 0xfc, 0x06, 0x8b, 0x3f, 0xb5, 0x0f, 0x96, 0xd2, 0x40, 0xb7, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x0f, 0x1a, 0x1f, 0x4b, 0x5d, 0xc3, 0x9f, 0x4b, 0x83, 0x8f, 0x07, 0xcb, 0x86, 0xa9, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x0b, 0x61, 0xa0, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0xcb, 0x75, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x13, 0x41, 0xdb, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3e, 0x3c, 0xb8, 0x73, 0x78, 0x0b, 0xad, 0xc3, 0x2f, 0x42, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x1a, 0xde, 0xd6, 0x19, 0xe0, 0xa7, 0x0b, 0x3b, 0x6b, 0x41, 0x2b, 0x0b, 0x23, 0x5b, 0xc3, 0xdb, 0x3a, 0x03, 0xf8, 0xd0, 0x85, 0xb1, 0xb1, 0xb5, 0x84, 0xd1, 0xd1, 0xc9, 0xcd, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0x3c, 0xe8, 0xc2, 0xd8, 0xd8, 0x5a, 0xe8, 0xc2, 0xd2, 0xd8, 0x5a, 0x0d, 0x1a, 0xe9, 0x48, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0xa4, 0x23, 0xb5, 0x01, 0x7e, 0xba, 0x30, 0x36, 0x36, 0x10, 0xba, 0x37, 0xb8, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x56, 0xf7, 0xb2, 0xae, 0x41, 0x21, 0x98, 0xba, 0x41, 0xe8, 0x97, 0x6c, 0xb0, 0x0a, 0x32, 0x79, 0x83, 0x85, 0x30, 0xd0, 0x1b, 0x2c, 0x1b, 0xa6, 0x6e, 0x83, 0xf3, 0x60, 0xc7, 0x06, 0xcb, 0x21, 0x99, 0x66, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0x60, 0x99, 0x93, 0xec, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x6b, 0x8f, 0x49, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0xb6, 0xce, 0x00, 0xbe, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x2d, 0x63, 0x68, 0x61, 0x72, 0x73, 0x6b, 0x78, 0x5b, 0x67, 0x00, 0xcf, 0xb8, 0xba, 0x37, 0xba, 0xb2, 0x96, 0x34, 0x37, 0xb7, 0x30, 0x39, 0xb2, 0xb9, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x55, 0x60, 0xb2, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0x5b, 0x67, 0x00, 0xef, 0xb9, 0x31, 0xb9, 0x34, 0x38, 0xba, 0x96, 0x37, 0xb9, 0x96, 0x39, 0xba, 0x3c, 0xb6, 0xb2, 0x35, 0xbc, 0xad, 0x33, 0x00, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2d, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x2d, 0x74, 0x61, 0x69, 0x6c, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0xc1, 0x2a, 0x30, 0xd9, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xd3, 0x4d, 0xa9, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0xc1, 0x32, 0x27, 0xd9, 0x35, 0xbc, 0xad, 0x33, 0x80, 0xcf, 0x5d, 0x1a, 0x59, 0x59, 0x4b, 0x5c, 0xdd, 0x1b, 0x5d, 0x59, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x2c, 0x73, 0x92, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x60, 0x31, 0xff, 0xe8, 0x41, 0xdb, 0x80, 0xa9, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xb0, 0x0a, 0x4c, 0x76, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0xa5, 0x5b, 0xa2, 0x1b, 0xac, 0x10, 0x29, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xed, 0x78, 0x7a, 0x50, 0xd6, 0x79, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0x7a, 0xe4, 0xac, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0x60, 0x99, 0x93, 0xec, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x1a, 0xac, 0x10, 0x6a, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xf6, 0x75, 0x79, 0xd0, 0x92, 0xe6, 0xe5, 0x06, 0x0d, 0x0b, 0xa5, 0x1e, 0x34, 0x2f, 0x7a, 0x79, 0xb0, 0xc4, 0xa4, 0xb4, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0x94, 0xd2, 0x0d, 0x96, 0x39, 0xc9, 0xae, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xd2, 0x8f, 0xa6, 0x0d, 0xcf, 0xe2, 0x1d, 0x34, 0x8f, 0x84, 0x5a, 0xb5, 0x02, 0xf8, 0xdc, 0xa5, 0x91, 0x95, 0xb5, 0x84, 0xd1, 0xd1, 0xc9, 0xcd, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x6d, 0xcc, 0xa7, 0x36, 0x80, 0xf7, 0x5d, 0x1a, 0x59, 0x19, 0x48, 0x18, 0x1d, 0x9d, 0x5c, 0x9a, 0x58, 0x1d, 0x5d, 0xd9, 0xdc, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0x37, 0x68, 0x7c, 0x2c, 0xb5, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x8c, 0x1d, 0x3b, 0x68, 0x32, 0x29, 0x73, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0xed, 0xdf, 0x67, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0x50, 0x93, 0x74, 0x83, 0xf6, 0x09, 0x2e, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0xd7, 0x4a, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xf8, 0x30, 0xba, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x83, 0x66, 0x01, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xd8, 0xd7, 0xe5, 0xc1, 0x0a, 0x67, 0xd2, 0x35, 0xbc, 0xad, 0x33, 0xc0, 0x17, 0xd6, 0xd2, 0x16, 0xe6, 0x56, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0xf0, 0x46, 0x7b, 0x83, 0x2b, 0x33, 0xab, 0x63, 0x63, 0xcb, 0x6b, 0x89, 0xab, 0x7b, 0xa3, 0x2b, 0xeb, 0x70, 0x8a, 0x2d, 0x80, 0xe7, 0x9d, 0x5c, 0x18, 0x1c, 0x5c, 0x19, 0x59, 0x4b, 0x19, 0x5b, 0x59, 0xdb, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x5e, 0x88, 0x6a, 0x03, 0xf8, 0xdd, 0xc9, 0x85, 0xc1, 0xc1, 0x95, 0x91, 0x81, 0xd0, 0xd5, 0xb9, 0x85, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x83, 0x65, 0xc3, 0xd4, 0x87, 0xa7, 0x75, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0xbc, 0xad, 0x33, 0x80, 0xff, 0x5d, 0x1a, 0x59, 0x59, 0x0b, 0x5c, 0x98, 0x5c, 0x99, 0x5b, 0x4b, 0x19, 0x5b, 0x59, 0xdb, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x7e, 0x51, 0xda, 0xe0, 0x3c, 0x3b, 0xba, 0xe1, 0x2f, 0x9a, 0x0d, 0x56, 0xa5, 0x6b, 0x6f, 0x70, 0x74, 0x1d, 0x5c, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0xf4, 0xa3, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc3, 0x7e, 0x3b, 0x38, 0x6d, 0xa1, 0xd5, 0xc1, 0xaa, 0x64, 0xf5, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xb2, 0x4a, 0xd0, 0x0d, 0x9a, 0x89, 0x19, 0xdd, 0xa0, 0xc9, 0x8f, 0xd4, 0x5a, 0x0d, 0xda, 0xcb, 0x50, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x2f, 0x43, 0xb5, 0x01, 0xfc, 0xda, 0xc2, 0xdc, 0xca, 0x40, 0xc2, 0xe6, 0x40, 0xd0, 0xde, 0xde, 0xdc, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x0b, 0xb2, 0x53, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xd9, 0x84, 0x79, 0xb0, 0xd6, 0xd0, 0xb7, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x9f, 0x07, 0x6d, 0x78, 0x5a, 0x67, 0xc3, 0x2f, 0x2e, 0x1b, 0x9e, 0xd6, 0x39, 0x38, 0x22, 0x16, 0x6c, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x75, 0xb6, 0xa6, 0xad, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x85, 0x0c, 0xa2, 0x1b, 0xb4, 0x59, 0xa6, 0xda, 0xc1, 0x12, 0x93, 0xd2, 0x66, 0x0d, 0x1a, 0x34, 0x4d, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0xd0, 0x34, 0xb5, 0x01, 0x7c, 0xef, 0xd2, 0xc8, 0xca, 0x56, 0xe8, 0xc2, 0xd8, 0xd8, 0x40, 0xcc, 0xd8, 0xde, 0xee, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0xe1, 0x83, 0xf9, 0x0d, 0x3f, 0xd4, 0x1c, 0xb4, 0xc3, 0xda, 0xd9, 0xe1, 0x69, 0x9d, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0x2c, 0x54, 0x0c, 0xdd, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x58, 0x8b, 0x83, 0xb9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x05, 0x1d, 0xba, 0x86, 0x67, 0xf1, 0x06, 0x6d, 0x83, 0xae, 0x41, 0xd5, 0xa0, 0x65, 0xd0, 0x7d, 0xd0, 0x0c, 0xef, 0x62, 0x1b, 0xac, 0xc5, 0xc1, 0xdc, 0xa0, 0xed, 0x2b, 0xd1, 0x35, 0x3c, 0x28, 0xb9, 0xc1, 0x42, 0xfc, 0xfc, 0x83, 0x35, 0xb0, 0xaa, 0xb5, 0x41, 0xbb, 0x00, 0xa3, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x65, 0xc7, 0xa0, 0x1b, 0xac, 0xc5, 0xc1, 0xdc, 0xa0, 0x8d, 0xbc, 0xcb, 0x35, 0x7c, 0x90, 0xb3, 0x41, 0x23, 0x1a, 0xa9, 0x1b, 0x2c, 0xfb, 0xac, 0x3d, 0x68, 0xfb, 0x4a, 0xf4, 0x60, 0x95, 0x34, 0xe8, 0x1a, 0x3e, 0xc8, 0xd9, 0xa0, 0x01, 0x1a, 0xd2, 0x0d, 0x96, 0x7d, 0xd6, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x65, 0xc7, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x0f, 0xa3, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0xd0, 0x15, 0x44, 0x44, 0x44, 0x07, 0xeb, 0xa8, 0x49, 0x3b, 0x9c, 0x62, 0x0b, 0xe0, 0x41, 0x17, 0xc6, 0xc6, 0xd6, 0xb2, 0x96, 0x46, 0x36, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xb4, 0x22, 0xab, 0xda, 0x00, 0xbe, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0xdb, 0x3a, 0x03, 0x78, 0xa8, 0xbd, 0xa5, 0xb9, 0xb5, 0xd0, 0xbd, 0xc1, 0xcd, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x35, 0xb3, 0xa1, 0x1b, 0xac, 0x10, 0x29, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0xdd, 0xa0, 0x4d, 0x9a, 0xd1, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x96, 0x39, 0xc9, 0x1e, 0xb4, 0xb5, 0x9d, 0x5a, 0xab, 0x41, 0xc3, 0xb0, 0xa9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x0d, 0xc3, 0xa6, 0x36, 0x80, 0xf7, 0xdc, 0x98, 0x5c, 0x1a, 0x1c, 0x1d, 0xc8, 0x9b, 0x1c, 0xc8, 0x1c, 0x5d, 0x1e, 0x5b, 0xd9, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0xf0, 0xef, 0xfc, 0x06, 0x2b, 0xc8, 0xb5, 0x0f, 0x96, 0xd2, 0x40, 0x1f, 0x9e, 0xd6, 0xd9, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x1f, 0x46, 0xd7, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x02, 0xbe, 0xb9, 0x31, 0xb9, 0x34, 0x38, 0xba, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xc2, 0x87, 0xd1, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0xd6, 0x94, 0x3b, 0x6b, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xc6, 0x7c, 0x6a, 0xad, 0x00, 0x7f, 0x99, 0x5b, 0xcb, 0x18, 0x5b, 0xd8, 0xdc, 0xbc, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x05, 0x3c, 0x63, 0x6c, 0x61, 0x73, 0xf3, 0xc1, 0xb2, 0xb8, 0xe7, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xd9, 0x84, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x68, 0xf8, 0x5e, 0xf5, 0xe0, 0x14, 0x2e, 0xda, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0x36, 0x28, 0x28, 0x32, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0x70, 0x96, 0x02, 0xdb, 0xa0, 0x30, 0x54, 0x5d, 0xc3, 0x1b, 0x77, 0x07, 0x0d, 0xe2, 0xab, 0x6e, 0xf8, 0x0a, 0x67, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x43, 0xd6, 0xe2, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x19, 0xf6, 0xdb, 0x1a, 0xde, 0xd6, 0x39, 0x58, 0xe7, 0xea, 0xda, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xc5, 0x88, 0xfc, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xec, 0x73, 0x77, 0x70, 0xd6, 0x4a, 0x5c, 0x01, 0x7c, 0xef, 0xd2, 0xc8, 0xca, 0x5a, 0xd2, 0xdc, 0xdc, 0xca, 0xe4, 0x5a, 0xe8, 0xde, 0xe0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa6, 0x2d, 0x56, 0x1b, 0xc0, 0xf7, 0x2e, 0x8d, 0xac, 0x0c, 0x24, 0xcd, 0xcd, 0xad, 0x4c, 0x0e, 0x84, 0xee, 0x0d, 0x6e, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xd5, 0xbd, 0xac, 0x6b, 0x50, 0x08, 0xa6, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0xac, 0x82, 0x4c, 0xde, 0xa0, 0x1d, 0xd6, 0xce, 0x83, 0x16, 0x25, 0x53, 0x37, 0x38, 0x0f, 0x76, 0x6c, 0xb0, 0x1c, 0x92, 0x69, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x0d, 0x9a, 0xfc, 0x48, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0x60, 0x15, 0x98, 0xec, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x06, 0x0d, 0x0b, 0xa5, 0x1e, 0x34, 0xc2, 0x70, 0x59, 0x87, 0x53, 0xac, 0x35, 0x68, 0x87, 0x38, 0x75, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0x1d, 0xe2, 0xd4, 0x06, 0xf0, 0xb9, 0x4b, 0x23, 0x2b, 0x03, 0x89, 0xab, 0x7b, 0xa3, 0x2b, 0xdb, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x59, 0x25, 0xe8, 0x06, 0x0d, 0xbb, 0xa8, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x65, 0xc7, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x0f, 0xa3, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0xd0, 0x44, 0x44, 0x44, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x9a, 0xa4, 0x1b, 0x34, 0x6f, 0x25, 0x7a, 0xd0, 0xa4, 0x67, 0x6a, 0x6b, 0x70, 0x62, 0xbf, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0x75, 0xbb, 0x6d, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x85, 0x9a, 0xa4, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xf0, 0x61, 0x74, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0xb2, 0x88, 0x88, 0x88, 0xda, 0xa0, 0xcd, 0x55, 0xd5, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0xb2, 0x4a, 0xd0, 0x0d, 0x1a, 0x05, 0x4d, 0x5d, 0xc3, 0x25, 0xb5, 0x41, 0x73, 0xa6, 0xa9, 0x6b, 0xd0, 0x36, 0x0d, 0xe9, 0x41, 0x01, 0x9b, 0x5f, 0xcd, 0x1a, 0xb4, 0xe7, 0x3d, 0xb6, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x9e, 0xf7, 0x58, 0x03, 0xf8, 0xc1, 0xc9, 0xbd, 0x91, 0xd5, 0x8d, 0xd1, 0x81, 0xa0, 0xbd, 0xbd, 0xb9, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0xae, 0xae, 0x3d, 0x68, 0xed, 0x31, 0x75, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0xb0, 0x70, 0xde, 0x20, 0x48, 0x4f, 0xd7, 0x38, 0xb4, 0x41, 0x93, 0x70, 0xab, 0xad, 0x41, 0xc0, 0x06, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0xc6, 0x2a, 0x0c, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0x2b, 0x76, 0xab, 0xad, 0x41, 0x18, 0x01, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x86, 0x0e, 0x18, 0x0e, 0x9a, 0xd2, 0x5b, 0xed, 0xa0, 0x4d, 0x9a, 0xd1, 0xc3, 0x29, 0xd6, 0x1a, 0x34, 0x1d, 0x98, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x74, 0x60, 0x6a, 0x03, 0x78, 0xd0, 0x85, 0xb1, 0xb1, 0x81, 0xd0, 0x85, 0xa5, 0xb1, 0x6d, 0x50, 0xf0, 0x61, 0x6e, 0xd0, 0x88, 0x46, 0xea, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0x37, 0x68, 0xd8, 0x45, 0x75, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc1, 0x09, 0xdd, 0xa0, 0xa0, 0xc8, 0x3c, 0x68, 0x7e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x85, 0x70, 0xa4, 0x6b, 0xb8, 0xa4, 0xd6, 0xa0, 0xbd, 0x10, 0xd5, 0x0e, 0x9a, 0xf1, 0x49, 0x6d, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x85, 0x70, 0xa4, 0x1b, 0xac, 0x71, 0x26, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x25, 0xb5, 0x41, 0x7b, 0xa1, 0xa9, 0x07, 0xcd, 0xf8, 0xa4, 0x1e, 0xb4, 0x58, 0x9a, 0xda, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0x26, 0xe9, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x85, 0x48, 0xe9, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x06, 0x2b, 0x44, 0x4a, 0x0f, 0x1a, 0xaf, 0x04, 0x6d, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x8a, 0xac, 0x6a, 0xb5, 0x1a, 0xb4, 0x5f, 0xa3, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x7e, 0x8d, 0x6a, 0x03, 0x78, 0xdc, 0xa5, 0x91, 0x95, 0x81, 0x98, 0xb1, 0xbd, 0xdd, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x83, 0x86, 0x5d, 0x54, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x41, 0xf3, 0xbe, 0xaa, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0x26, 0xe9, 0x06, 0xed, 0x13, 0x5c, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0xb5, 0x92, 0x6e, 0xb0, 0xc6, 0x99, 0x74, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xb4, 0xc5, 0x6a, 0x75, 0x38, 0xc5, 0xd6, 0xa0, 0xc5, 0xd0, 0xd4, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x16, 0x43, 0x53, 0x1b, 0x80, 0x8f, 0x33, 0xb9, 0xb7, 0x3a, 0x38, 0x90, 0xb1, 0x37, 0xb7, 0xb9, 0xb2, 0x31, 0x90, 0x31, 0xb4, 0x30, 0xb9, 0xb9, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x4f, 0xae, 0x4c, 0x3c, 0x68, 0x07, 0x50, 0x75, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0x1b, 0xa6, 0xde, 0xa0, 0xb4, 0xb7, 0x5c, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x9b, 0x4b, 0x6b, 0x0f, 0xca, 0x39, 0xdb, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xd1, 0xd5, 0xe9, 0x07, 0xcb, 0x86, 0xa9, 0xdb, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x36, 0x4c, 0xbd, 0x41, 0x09, 0x8f, 0xb9, 0x06, 0x4d, 0x55, 0xaf, 0xb6, 0x06, 0x45, 0x9f, 0xee, 0x1a, 0x34, 0xc4, 0xbd, 0xda, 0x1a, 0x14, 0x3b, 0x9a, 0x1b, 0x34, 0xa2, 0x91, 0xba, 0x86, 0xb7, 0x75, 0x0e, 0x5a, 0x3c, 0x5f, 0xdd, 0xf0, 0x8b, 0xcb, 0x06, 0x29, 0xaf, 0x55, 0x6b, 0xf8, 0x0a, 0x67, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x16, 0xcf, 0x57, 0x37, 0x68, 0x5f, 0x7d, 0x75, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0xd4, 0xd3, 0xd8, 0x0d, 0x6f, 0xeb, 0x0c, 0x9e, 0x1e, 0xb4, 0x78, 0xbe, 0xba, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x2d, 0x9e, 0xaf, 0x6e, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xa0, 0xc5, 0xf3, 0xd5, 0x0e, 0xda, 0x57, 0x5f, 0x6d, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x16, 0xcf, 0x57, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xed, 0x7c, 0xaf, 0xb6, 0xe1, 0x17, 0x97, 0x35, 0x58, 0xfa, 0xd1, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0x8b, 0xe5, 0x0d, 0xda, 0x57, 0x5f, 0x6d, 0x83, 0x46, 0x01, 0x58, 0xdb, 0xa0, 0x20, 0x98, 0x5d, 0xf0, 0xf4, 0xa0, 0x9d, 0xf2, 0xd5, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0xa7, 0x7c, 0x75, 0xc3, 0xdb, 0x3a, 0x83, 0xd3, 0x07, 0xed, 0x94, 0xaf, 0xae, 0x41, 0x8b, 0xe7, 0xab, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x07, 0xcd, 0x27, 0xb0, 0x1e, 0x34, 0x68, 0xc0, 0xda, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x2d, 0x9e, 0xaf, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0x95, 0x60, 0x5d, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x89, 0x06, 0xd6, 0x35, 0x68, 0xf1, 0x7c, 0xf5, 0xa0, 0xa0, 0xc8, 0xac, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xe4, 0x00, 0xeb, 0x41, 0xc3, 0x18, 0xac, 0xab, 0x41, 0xdb, 0x7d, 0xa9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x6d, 0xf7, 0xa5, 0x36, 0x80, 0x37, 0x5d, 0x18, 0x1b, 0x1b, 0x48, 0x18, 0x1d, 0x9d, 0x5c, 0x9a, 0x58, 0x1d, 0x5d, 0xd9, 0xdc, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x16, 0x2a, 0x86, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0xac, 0x10, 0x29, 0x3d, 0x58, 0x0d, 0x40, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x68, 0x86, 0x3c, 0xf5, 0xa0, 0x41, 0x0c, 0xd5, 0x0e, 0xa7, 0xd8, 0x1a, 0xb4, 0xfd, 0xab, 0xba, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x1b, 0xb4, 0x5d, 0xb2, 0xda, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x36, 0x4c, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x95, 0xff, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x48, 0xd5, 0x1b, 0x9e, 0xd6, 0xd9, 0xa0, 0x99, 0x98, 0xd1, 0x3a, 0x9c, 0x62, 0x6b, 0xd0, 0x7e, 0x6d, 0xea, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xfb, 0xb5, 0xa9, 0x0d, 0xc0, 0x4b, 0x9d, 0x5b, 0xd9, 0xdc, 0x58, 0x18, 0x5c, 0x19, 0x19, 0x08, 0x5d, 0x18, 0x1b, 0x1b, 0x08, 0x5d, 0x58, 0x1a, 0xdb, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0x37, 0x68, 0xd8, 0x45, 0x75, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x85, 0x9a, 0xa4, 0x1b, 0xb4, 0x94, 0xba, 0xba, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x9a, 0xd9, 0xd0, 0x0d, 0x56, 0x88, 0x94, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x34, 0x40, 0x0c, 0xba, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x06, 0x8b, 0x08, 0xea, 0x36, 0x58, 0xfa, 0xd1, 0x74, 0x78, 0x5a, 0x67, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x60, 0x8d, 0x33, 0xe9, 0x41, 0xeb, 0xac, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x28, 0xa5, 0x1b, 0x34, 0x0c, 0x9f, 0x5a, 0xcd, 0x1a, 0x34, 0xc6, 0xa1, 0xba, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x83, 0x16, 0x0e, 0x3e, 0x3b, 0x3c, 0xad, 0xb3, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x41, 0xbb, 0xaf, 0x9a, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x62, 0x12, 0x73, 0x83, 0xa5, 0x35, 0xcf, 0x07, 0xa5, 0xf3, 0xfb, 0x06, 0x8d, 0xbe, 0xa5, 0x6e, 0x70, 0x74, 0x1d, 0xdc, 0xa0, 0x91, 0xac, 0xcd, 0x0e, 0x9a, 0x61, 0xb8, 0x5c, 0x0d, 0x9a, 0xd1, 0x49, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x46, 0x27, 0xb5, 0x01, 0x78, 0x10, 0x93, 0x0b, 0x1b, 0x5b, 0x2b, 0xa3, 0x2b, 0x23, 0x03, 0x29, 0x63, 0x2b, 0x6b, 0x2b, 0x73, 0xa3, 0xdb, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0xa1, 0x26, 0xe9, 0x06, 0xcd, 0xe0, 0x5d, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0xb4, 0x98, 0x97, 0xba, 0x86, 0xb7, 0x75, 0x06, 0xf0, 0xb9, 0x4b, 0x23, 0x2b, 0x6b, 0x29, 0x63, 0x2b, 0x6b, 0x9b, 0xeb, 0x70, 0x8a, 0xb5, 0x06, 0x6d, 0xc8, 0x8c, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1e, 0xb4, 0x5d, 0xb2, 0xba, 0xe1, 0x2f, 0x9a, 0x0d, 0x96, 0x0d, 0x53, 0x6f, 0x10, 0xa4, 0xa7, 0x1b, 0x94, 0xce, 0xef, 0x6b, 0x10, 0xb0, 0x41, 0x1b, 0x1c, 0x5d, 0x07, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x8d, 0xbe, 0xa5, 0xd6, 0x1a, 0x84, 0x11, 0xd0, 0x41, 0xa3, 0x6f, 0xa9, 0xad, 0x00, 0x1e, 0x77, 0x69, 0x64, 0x65, 0x2d, 0x74, 0x61, 0x69, 0xec, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x8b, 0xa8, 0xac, 0x0d, 0xe0, 0x79, 0x97, 0x46, 0x56, 0x06, 0x52, 0xc6, 0x56, 0xd6, 0x56, 0xe6, 0x46, 0x37, 0xb7, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x0d, 0x1a, 0x76, 0x51, 0xdd, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x58, 0x08, 0x47, 0xba, 0x86, 0xb7, 0x75, 0x0e, 0x1a, 0xd3, 0x5c, 0x6d, 0x83, 0x66, 0x24, 0x57, 0x0f, 0x96, 0x98, 0x94, 0xce, 0x1a, 0x34, 0xa7, 0x97, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x9c, 0x5e, 0x6a, 0x03, 0xfc, 0x74, 0x61, 0x67, 0x20, 0x68, 0x65, 0x61, 0x64, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1e, 0x34, 0xf8, 0x95, 0xba, 0x41, 0xfb, 0x66, 0xa9, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf1, 0xa0, 0xf1, 0xb1, 0xd4, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x23, 0xdb, 0xaa, 0x1b, 0x7e, 0x71, 0xd9, 0xf0, 0xb4, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x44, 0xd0, 0x76, 0x78, 0x2e, 0xa8, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0x26, 0x31, 0x54, 0xd7, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x21, 0x65, 0xb2, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xd9, 0x84, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xaf, 0xf5, 0xbc, 0x41, 0x13, 0x74, 0xac, 0xd5, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x83, 0x56, 0xc7, 0x59, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xfb, 0xfe, 0x9e, 0x1b, 0x9e, 0xd6, 0xd9, 0xa0, 0x61, 0xf5, 0xc0, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xfb, 0xf7, 0x99, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x25, 0x38, 0xa1, 0x1b, 0x34, 0x5d, 0x13, 0x7a, 0x90, 0xe2, 0xa7, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x56, 0x09, 0xba, 0xc1, 0x32, 0xec, 0xb7, 0x83, 0x85, 0xf5, 0xac, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x56, 0x09, 0xba, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x09, 0x5e, 0xb5, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x42, 0xc5, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x0d, 0x9a, 0x3f, 0x58, 0x3d, 0x58, 0x2e, 0xbf, 0x7a, 0xb0, 0xb0, 0x9e, 0xb5, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xed, 0xdf, 0x67, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xe0, 0x84, 0x6e, 0xd0, 0xa4, 0xec, 0xe7, 0xc1, 0xf2, 0x3a, 0xd3, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x0d, 0xda, 0x0f, 0xfe, 0xdc, 0xa0, 0xed, 0xbe, 0xcc, 0x3a, 0x68, 0x49, 0x36, 0xb3, 0x83, 0x25, 0x26, 0xa5, 0x07, 0xcd, 0xb7, 0xab, 0xae, 0x06, 0x8d, 0x57, 0xb2, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x34, 0x5e, 0xc9, 0xda, 0x41, 0x1b, 0xaf, 0xac, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0xdd, 0xa0, 0x61, 0x17, 0xd5, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0x55, 0x82, 0x6e, 0xd0, 0xbc, 0xaf, 0xea, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x18, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0x7a, 0xd0, 0x56, 0xf1, 0x6a, 0x87, 0x53, 0xac, 0x35, 0x68, 0x0f, 0x24, 0x75, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0x3d, 0x90, 0xd4, 0x06, 0xf0, 0xbd, 0x4b, 0x23, 0x2b, 0x03, 0x79, 0xab, 0xa3, 0x2b, 0x93, 0x03, 0xa1, 0x7b, 0x83, 0xdb, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x75, 0x2f, 0xeb, 0x06, 0xad, 0x39, 0xa6, 0x6e, 0x70, 0x1e, 0xec, 0xd8, 0x60, 0x39, 0x24, 0xd3, 0x6c, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x1b, 0xb4, 0x03, 0x9c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0xc1, 0x32, 0x27, 0xd9, 0x0d, 0x9a, 0xa8, 0x51, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x55, 0x60, 0xb2, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0xb4, 0x98, 0x97, 0xba, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x11, 0x95, 0xb5, 0x6a, 0x35, 0x68, 0x75, 0x28, 0x75, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0xd5, 0xa1, 0xd4, 0x06, 0xf0, 0xc7, 0x6b, 0x63, 0x03, 0x71, 0x7b, 0x23, 0x2b, 0x43, 0x99, 0x4b, 0x01, 0x59, 0x4b, 0x73, 0x23, 0xdb, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x70, 0x42, 0x37, 0x68, 0x54, 0x29, 0xf5, 0x60, 0xb5, 0x51, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x09, 0x4e, 0xe8, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0xe1, 0xb1, 0x7d, 0xb0, 0x08, 0xc0, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x04, 0x27, 0x74, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x1b, 0xd9, 0x3e, 0x68, 0x06, 0x2f, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x04, 0x27, 0x74, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x46, 0xd9, 0x3e, 0x68, 0xb9, 0x27, 0xb3, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x0b, 0xf8, 0x67, 0x61, 0x73, 0xe8, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xc0, 0x85, 0xc9, 0xcd, 0x95, 0x81, 0xc0, 0x85, 0xd1, 0xa1, 0x1d, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0x36, 0x68, 0xef, 0x1f, 0xb3, 0x0d, 0x7f, 0xd1, 0x6c, 0xd0, 0xde, 0x3f, 0xe6, 0x41, 0x2b, 0xa6, 0x99, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x5d, 0x2b, 0xe9, 0x06, 0x0b, 0xec, 0x4c, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0xcf, 0x96, 0xd6, 0x06, 0xd7, 0x2c, 0xe0, 0xb3, 0xbd, 0xbd, 0xb9, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xcd, 0x6c, 0xe8, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x06, 0x4d, 0x1f, 0x5f, 0x1e, 0xac, 0x70, 0x26, 0x3d, 0x68, 0x94, 0x43, 0x73, 0x16, 0xf0, 0xef, 0xd2, 0xe6, 0xca, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0xc5, 0xfc, 0xa3, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xc4, 0x8e, 0x75, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0xcc, 0xe8, 0x7c, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x4d, 0x98, 0x1b, 0x2c, 0xa0, 0x99, 0x6e, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x43, 0x06, 0xc1, 0x06, 0x8d, 0xaa, 0x68, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0x75, 0xa1, 0xe6, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x5d, 0xe9, 0x88, 0x0d, 0xda, 0x65, 0x29, 0xd8, 0xa0, 0xe1, 0x1d, 0x8b, 0x0d, 0x5a, 0x45, 0x32, 0x38, 0x68, 0xc1, 0x2e, 0xf3, 0xa0, 0x2d, 0x4c, 0xcc, 0xd6, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0x0b, 0x35, 0x5f, 0xc3, 0x9f, 0x4b, 0x1b, 0x04, 0x07, 0xc2, 0xc1, 0x02, 0x32, 0xeb, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x02, 0x9a, 0xe9, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x8a, 0x2d, 0xcc, 0x0d, 0xda, 0x65, 0x29, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0xed, 0x4a, 0x47, 0x6c, 0xd0, 0x2e, 0x4b, 0xc1, 0x06, 0x0d, 0xef, 0x58, 0x6c, 0xd0, 0xae, 0x03, 0xe7, 0x41, 0x0b, 0x76, 0x99, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x06, 0x4b, 0xeb, 0x59, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xed, 0xdf, 0x67, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0x6e, 0xb0, 0xc0, 0xce, 0xf4, 0x60, 0x35, 0x00, 0xe9, 0x41, 0x4b, 0x98, 0x98, 0xb5, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x06, 0xcb, 0x8c, 0xce, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x02, 0x9a, 0xe9, 0x0d, 0xbf, 0xb8, 0x1c, 0x34, 0x6e, 0xda, 0x7a, 0xd0, 0x16, 0x26, 0x66, 0xab, 0x41, 0x13, 0x53, 0x98, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0x3e, 0x5b, 0x98, 0xdc, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0xf6, 0x75, 0x6b, 0x03, 0xa0, 0x17, 0x0d, 0x48, 0xd8, 0x58, 0xd9, 0x1c, 0x08, 0x1d, 0x5a, 0x99, 0x1b, 0xc8, 0x5c, 0x5d, 0x5b, 0x5b, 0x98, 0x5c, 0x1e, 0x0b, 0x88, 0x0c, 0x48, 0xd8, 0x58, 0xd9, 0x1c, 0x08, 0x1d, 0x5a, 0x99, 0x1b, 0x08, 0x5c, 0x98, 0x5c, 0xd8, 0x99, 0x5c, 0x18, 0x1c, 0xda, 0x9c, 0x6b, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0xa0, 0x88, 0xf2, 0xdd, 0xa0, 0x88, 0xf2, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x2b, 0x18, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x2b, 0x18, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x4c, 0x26, 0x5d, 0xc3, 0xdb, 0x3a, 0x03, 0xbc, 0x65, 0x6e, 0x2d, 0x6c, 0x69, 0x6e, 0x6b, 0x6d, 0xb0, 0x10, 0x8e, 0xf4, 0x60, 0x85, 0x33, 0xe9, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xd9, 0x31, 0xe8, 0x06, 0x6b, 0x9c, 0x49, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0x50, 0x4a, 0xd7, 0xa0, 0x10, 0x4c, 0x3d, 0x58, 0xe8, 0xd7, 0x5d, 0xad, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x96, 0x1d, 0x83, 0x6e, 0xb0, 0xc6, 0x99, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xac, 0x12, 0x74, 0x83, 0xe5, 0xc8, 0xc2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0xc9, 0xa4, 0x07, 0xab, 0xa4, 0x41, 0xab, 0x83, 0x75, 0xd4, 0xa4, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x72, 0x61, 0x6e, 0x74, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x14, 0x51, 0xbe, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0xa7, 0x2b, 0xcb, 0xa3, 0xab, 0x5a, 0x01, 0x3f, 0x0c, 0x6e, 0xae, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x62, 0xc3, 0xb5, 0x01, 0xf4, 0xe1, 0xde, 0xe6, 0xe8, 0xcc, 0xd2, 0xf0, 0x40, 0xc6, 0xde, 0xda, 0xda, 0xca, 0xdc, 0xe8, 0xdc, 0x4a, 0x00, 0x3c, 0x11, 0x06, 0xf2, 0xe6, 0x56, 0x06, 0xc2, 0x96, 0xe6, 0x56, 0x06, 0x32, 0xf6, 0xd6, 0xd6, 0x56, 0xe6, 0x46, 0x07, 0x12, 0x46, 0x07, 0x42, 0x87, 0x56, 0x06, 0x52, 0xe6, 0x46, 0x06, 0xf2, 0x66, 0x06, 0x12, 0x06, 0xc2, 0x96, 0xe6, 0x56, 0x06, 0x82, 0x42, 0x97, 0x07, 0x97, 0x36, 0x16, 0xc6, 0xc6, 0x96, 0x07, 0x32, 0x47, 0x17, 0x26, 0x47, 0x97, 0xe6, 0x76, 0x06, 0x12, 0x46, 0x07, 0x32, 0xf6, 0xc6, 0x56, 0xd7, 0xe6, 0x2e, 0x01, 0xf0, 0x43, 0xcd, 0x4d, 0x0a, 0x08, 0x1d, 0x5a, 0x18, 0x1d, 0x48, 0x18, 0x1d, 0x5d, 0xd8, 0x18, 0x5a, 0xd9, 0x1c, 0x08, 0xdd, 0x1b, 0x08, 0x1d, 0x5a, 0x19, 0x48, 0x19, 0x1e, 0x9c, 0x5c, 0xd9, 0xdc, 0x5c, 0xda, 0x9b, 0x1b, 0xc8, 0x1c, 0x5d, 0x98, 0x1c, 0x5d, 0x9a, 0xdb, 0x19, 0x48, 0x18, 0x1d, 0x08, 0x1d, 0x5a, 0x19, 0x88, 0x58, 0xd9, 0x59, 0x9a, 0x9b, 0x5b, 0x9a, 0xdb, 0x19, 0xc8, 0x9b, 0x19, 0x08, 0x1d, 0x5a, 0xb9, 0x04, 0xa0, 0xc5, 0x58, 0x9d, 0x9c, 0x5c, 0x99, 0x1b, 0x1d, 0x08, 0x5b, 0x9a, 0x5b, 0x99, 0x0b, 0x08, 0xd9, 0x5b, 0xd9, 0x1c, 0x88, 0xdb, 0x1b, 0x1d, 0x48, 0xdd, 0x5c, 0x19, 0x48, 0x18, 0x08, 0x09, 0x5b, 0x9a, 0xdb, 0x9a, 0xab, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x8b, 0x88, 0x96, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0x94, 0xae, 0x41, 0x21, 0x98, 0xba, 0xe1, 0xdf, 0xf9, 0x35, 0x58, 0x75, 0x76, 0x5e, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xba, 0x97, 0x75, 0x83, 0xd6, 0xae, 0x5c, 0x37, 0x38, 0x0f, 0x76, 0x6c, 0xb0, 0x1c, 0x92, 0x69, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xb2, 0x63, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0xd6, 0x7d, 0x7b, 0x6e, 0x50, 0x44, 0xf9, 0x6e, 0xd0, 0x8c, 0x7e, 0xeb, 0x41, 0x5b, 0xfd, 0xad, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0xac, 0xfb, 0xf6, 0xdc, 0xa0, 0x88, 0xf2, 0xdd, 0xa0, 0x41, 0xd7, 0xd2, 0xda, 0xa0, 0xb5, 0x2a, 0xd7, 0x56, 0xc0, 0x9f, 0x6b, 0x7b, 0x63, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1a, 0x90, 0x73, 0x6d, 0x00, 0xf4, 0x92, 0x01, 0x09, 0x1b, 0x2b, 0x9b, 0x03, 0xa1, 0x43, 0x2b, 0x73, 0x03, 0x99, 0xab, 0x6b, 0x6b, 0x0b, 0x93, 0xcb, 0x63, 0x01, 0xa1, 0x01, 0x09, 0x1b, 0x2b, 0x9b, 0x03, 0xa1, 0x43, 0x2b, 0x73, 0x03, 0x81, 0x0b, 0x93, 0x0b, 0x3b, 0x93, 0x0b, 0x83, 0x43, 0x9b, 0x73, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x14, 0x51, 0xbe, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0x34, 0x83, 0xdf, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x49, 0xba, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0x0f, 0xda, 0xea, 0x6f, 0x3d, 0x58, 0x47, 0x4d, 0x7a, 0xd0, 0x9c, 0x82, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0x26, 0xe9, 0x1a, 0x7e, 0x71, 0x39, 0x68, 0x6d, 0x36, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0xa5, 0x74, 0x0d, 0x0a, 0xc1, 0xd4, 0x83, 0x13, 0x90, 0x68, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x61, 0x09, 0xd7, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0x8a, 0x28, 0xdf, 0x0d, 0x8a, 0x28, 0xdf, 0x0d, 0x5a, 0x51, 0x0b, 0xac, 0x3a, 0x9c, 0x62, 0x6b, 0xd0, 0xea, 0x84, 0xeb, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0xfe, 0x5c, 0xda, 0x20, 0xdd, 0x73, 0xf3, 0x60, 0x69, 0xaa, 0xe8, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x16, 0x2a, 0x86, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x9a, 0xa4, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x75, 0xdf, 0x9e, 0x07, 0xeb, 0xa8, 0x49, 0x37, 0x68, 0xb0, 0x0b, 0xb4, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xc2, 0x64, 0xd2, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x42, 0x4d, 0xd2, 0x0d, 0xda, 0x92, 0x75, 0x3d, 0x48, 0x0d, 0x40, 0xad, 0xc3, 0x29, 0xb6, 0x06, 0x25, 0xa8, 0xd7, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0x41, 0x83, 0x5d, 0xa0, 0x1b, 0x2c, 0x84, 0x23, 0x3d, 0x68, 0x5f, 0x2e, 0x74, 0xd6, 0xa0, 0x39, 0xb6, 0xd2, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xec, 0x18, 0x74, 0x83, 0x35, 0xce, 0xa4, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x1b, 0x2c, 0x47, 0x16, 0x3e, 0x68, 0x9d, 0x35, 0xb4, 0xd5, 0xf0, 0xd6, 0xfd, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0xc1, 0x1a, 0x67, 0xd2, 0x83, 0x15, 0xce, 0xa4, 0x2b, 0xe0, 0xb3, 0x95, 0x85, 0xc1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xed, 0x48, 0xbb, 0x36, 0x00, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x77, 0x2f, 0x6f, 0x20, 0x64, 0x6f, 0x63, 0x73, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xc1, 0x09, 0xdd, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0x37, 0x58, 0x49, 0x4d, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0xc1, 0x5a, 0x4e, 0xd1, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x0d, 0xd6, 0x72, 0x8a, 0x6e, 0xb0, 0x9c, 0x17, 0xb8, 0x0e, 0xda, 0x60, 0x77, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x54, 0x0c, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0xdd, 0x60, 0x39, 0x2f, 0xf0, 0xc1, 0x4a, 0x4e, 0xd1, 0x3a, 0x9c, 0x62, 0x6b, 0xd0, 0x9e, 0xf7, 0xd8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0xd0, 0xb6, 0xd9, 0xea, 0x00, 0x68, 0x05, 0x27, 0x57, 0x66, 0x96, 0x86, 0x07, 0x32, 0xf6, 0xd6, 0xd6, 0x56, 0xe6, 0x46, 0xe7, 0x02, 0xd2, 0x16, 0x96, 0x07, 0x32, 0xf6, 0xe6, 0x46, 0x17, 0x96, 0xe6, 0x06, 0x22, 0x16, 0x46, 0x37, 0x86, 0x06, 0x32, 0xf6, 0xd6, 0xd6, 0x56, 0xe6, 0x46, 0x37, 0xe7, 0x56, 0x02, 0xe0, 0x89, 0x3b, 0xb4, 0x32, 0x37, 0x90, 0x30, 0x10, 0x38, 0xb9, 0x32, 0xb3, 0x34, 0x3c, 0x10, 0xb2, 0xb7, 0xb1, 0xb1, 0x37, 0x39, 0x32, 0x90, 0xb4, 0x39, 0x10, 0xb8, 0x30, 0xb9, 0xb9, 0x32, 0x32, 0x16, 0x90, 0x34, 0x3a, 0x90, 0xb4, 0x39, 0x10, 0xb8, 0xb7, 0xb9, 0xb9, 0x34, 0x31, 0xb6, 0x32, 0x10, 0x3a, 0xb4, 0x30, 0x3a, 0x10, 0x3a, 0xb4, 0x32, 0xb9, 0x32, 0x90, 0xb4, 0x39, 0x10, 0xb7, 0x37, 0x90, 0x95, 0xb3, 0x30, 0x78, 0x09, 0xc0, 0xf3, 0x30, 0x33, 0xba, 0x32, 0xb9, 0xbb, 0x30, 0x39, 0x32, 0x10, 0xba, 0x37, 0x10, 0xb1, 0x32, 0x90, 0xb1, 0x37, 0xb7, 0xb9, 0xba, 0xb6, 0x32, 0x32, 0x16, 0x90, 0xb9, 0x37, 0x90, 0xbb, 0x32, 0x90, 0x30, 0x32, 0x32, 0x90, 0x30, 0x37, 0x90, 0x30, 0x32, 0xb2, 0x34, 0xba, 0xb4, 0x37, 0xb7, 0x30, 0x36, 0x10, 0xb7, 0xb2, 0x3b, 0xb6, 0x34, 0xb7, 0x32, 0x90, 0x30, 0x37, 0x72, 0x09, 0xc0, 0x53, 0xb2, 0xb2, 0x31, 0xb9, 0xb2, 0xb6, 0x32, 0x37, 0x3a, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb6, 0x34, 0xb7, 0x32, 0x10, 0xb7, 0xba, 0x36, 0xb1, 0x32, 0x39, 0x90, 0x34, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0x30, 0xb4, 0xb0, 0x34, 0x39, 0x30, 0x90, 0x37, 0x33, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb8, 0x30, 0xb9, 0xb9, 0x32, 0xb9, 0x95, 0x00, 0xf8, 0x81, 0x0e, 0xad, 0x0c, 0x44, 0xae, 0x2c, 0x6c, 0xee, 0xcd, 0x0d, 0xc4, 0xec, 0x4d, 0x0e, 0x84, 0x0e, 0x2d, 0x6d, 0x0e, 0x24, 0x6d, 0x0e, 0x84, 0x0e, 0x2d, 0x8c, 0x0e, 0x84, 0x0e, 0xad, 0x0c, 0xe4, 0x0e, 0x2d, 0x8d, 0xae, 0x6c, 0x0e, 0x2e, 0x6c, 0xac, 0x0c, 0x04, 0x2e, 0x4c, 0x6e, 0x2e, 0xcd, 0xed, 0x0c, 0xa4, 0xce, 0x8d, 0xac, 0x4c, 0x0e, 0x64, 0xc5, 0x2e, 0x6c, 0x8e, 0x0e, 0x64, 0xae, 0xac, 0xac, 0x6d, 0x5e, 0x02, 0xe0, 0x07, 0xba, 0x37, 0x10, 0xb3, 0xb0, 0x31, 0xba, 0x37, 0x39, 0x90, 0xb6, 0x37, 0xb9, 0x32, 0x90, 0x31, 0xb6, 0xb2, 0x30, 0x37, 0xb6, 0x3c, 0x10, 0x3a, 0xb4, 0xb4, 0x39, 0x90, 0xbb, 0xb0, 0x3c, 0x16, 0x90, 0x30, 0x3a, 0x10, 0xb6, 0xb2, 0xb0, 0x39, 0x3a, 0x90, 0xb1, 0xb7, 0x36, 0xb8, 0x30, 0xb9, 0x32, 0x32, 0x10, 0xba, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xbb, 0x30, 0xb9, 0xb4, 0x30, 0xba, 0xb4, 0x37, 0xb7, 0x79, 0x09, 0xc0, 0x7f, 0x3a, 0xb9, 0xb4, 0x32, 0x32, 0x90, 0xbb, 0x34, 0x3a, 0xb4, 0xb7, 0x3a, 0x3a, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0x32, 0x3c, 0x3a, 0xb9, 0x30, 0x10, 0xb7, 0xb2, 0x3b, 0xb6, 0x34, 0xb7, 0x32, 0x17, 0x10, 0x3a, 0xb4, 0xb4, 0x39, 0x10, 0xb2, 0xb7, 0xb2, 0x39, 0xb7, 0x13, 0x3a, 0x90, 0xb6, 0xb2, 0x30, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0xb9, 0x32, 0x90, 0xb4, 0x39, 0xb7, 0x13, 0x3a, 0x90, 0x70, 0x09, 0x40, 0x1f, 0xb1, 0x32, 0x3a, 0xba, 0x32, 0x39, 0x10, 0xb3, 0xb0, 0x31, 0xba, 0x37, 0xb9, 0x34, 0xbd, 0x30, 0xba, 0xb4, 0x37, 0x37, 0x90, 0xbb, 0x34, 0x3a, 0xb4, 0xb7, 0x3a, 0x3a, 0x90, 0x34, 0x3a, 0x16, 0x10, 0x3a, 0xb4, 0xb7, 0xba, 0x33, 0x34, 0x57, 0x1b, 0x14, 0x3b, 0x9a, 0x1b, 0x34, 0x35, 0xe5, 0xba, 0x41, 0x33, 0x5b, 0x98, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0xac, 0xee, 0x65, 0xdd, 0xa0, 0x99, 0x2e, 0xcc, 0x0d, 0xce, 0x83, 0x1d, 0x1b, 0x2c, 0x87, 0x64, 0x9a, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x70, 0xea, 0x74, 0x83, 0x82, 0x34, 0x76, 0x83, 0x65, 0x41, 0xa3, 0x6b, 0x70, 0x6a, 0x38, 0xda, 0x60, 0x91, 0xdc, 0xe9, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x16, 0x2a, 0x86, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x19, 0x8b, 0x7f, 0x70, 0x22, 0xb3, 0xd8, 0xf0, 0x8b, 0xcb, 0xc1, 0x19, 0xdc, 0x6c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0x7f, 0x9f, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x47, 0xda, 0xb5, 0x36, 0x58, 0xf7, 0xed, 0xb9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xfb, 0xba, 0xb5, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x03, 0x72, 0xae, 0xd5, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x4b, 0xdd, 0x46, 0x37, 0x58, 0x4e, 0x60, 0xbb, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0x3a, 0x05, 0xdb, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0x9c, 0xa5, 0xc0, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x58, 0x74, 0x7c, 0xba, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x3e, 0x26, 0x7b, 0xb0, 0x20, 0xc4, 0x76, 0x83, 0xc2, 0x50, 0x75, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x96, 0x84, 0xed, 0x60, 0xdd, 0xcc, 0xed, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0xfc, 0x45, 0xb3, 0x41, 0x5a, 0x3b, 0xf0, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x9a, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x58, 0x45, 0xc6, 0xdb, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3e, 0x58, 0x45, 0xc6, 0xdb, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x25, 0x36, 0xe9, 0x06, 0x4b, 0xdf, 0x7a, 0xab, 0xc3, 0x29, 0xb6, 0x06, 0x81, 0xfb, 0xb0, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xe0, 0x84, 0x6e, 0x50, 0x50, 0x64, 0x1e, 0x34, 0x55, 0xeb, 0xba, 0x1a, 0xb4, 0xb1, 0xdf, 0xba, 0xe1, 0x17, 0xa5, 0x0d, 0x16, 0xcd, 0xb2, 0x6e, 0x70, 0x6a, 0x38, 0xda, 0xf0, 0xb4, 0xce, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xab, 0x7b, 0x59, 0xd7, 0xa0, 0x10, 0x4c, 0x3d, 0x58, 0x99, 0x86, 0xbd, 0xc1, 0x79, 0xb0, 0x63, 0x83, 0xe5, 0x90, 0x4c, 0xb3, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x35, 0xcd, 0xac, 0x1b, 0x1c, 0xdb, 0x1c, 0x37, 0x58, 0x36, 0xcd, 0xba, 0xc1, 0xb1, 0xcd, 0x71, 0x83, 0x25, 0xda, 0xac, 0x1b, 0x1c, 0x5d, 0x07, 0xd7, 0xa0, 0x30, 0x54, 0xdd, 0x60, 0xd9, 0x25, 0xdc, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x41, 0x1b, 0x02, 0x98, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x6b, 0x78, 0xe3, 0xee, 0x60, 0x0d, 0x4f, 0xf9, 0xc1, 0xc2, 0x7a, 0xd6, 0xd6, 0xa0, 0x30, 0x54, 0xdd, 0x60, 0x11, 0x9e, 0xdc, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0xc1, 0xda, 0x17, 0xd2, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x35, 0xbc, 0x71, 0x77, 0xb0, 0xac, 0xac, 0xfc, 0x60, 0x61, 0x3d, 0x6b, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0xd0, 0xe1, 0x6d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x60, 0x19, 0x80, 0xe9, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0x50, 0x57, 0x7e, 0xb0, 0xb0, 0x9e, 0xb5, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x58, 0x7b, 0x4e, 0xbb, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0x6e, 0xb0, 0xc2, 0x4f, 0x7d, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x28, 0x2c, 0x3f, 0x58, 0x58, 0xcf, 0xda, 0x1a, 0x14, 0x86, 0xaa, 0x1b, 0xac, 0x97, 0x7e, 0xdb, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x68, 0x09, 0x1e, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x74, 0x2a, 0x3f, 0x68, 0xec, 0xe4, 0xb2, 0x56, 0x83, 0x86, 0x0b, 0x3b, 0x37, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0x8a, 0x28, 0xdf, 0x0d, 0x1a, 0x2a, 0x76, 0x6d, 0x35, 0x68, 0x62, 0x2d, 0x70, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0xe7, 0x60, 0xb9, 0x31, 0xf2, 0x06, 0x0d, 0xba, 0x96, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0x2e, 0xec, 0xac, 0xc3, 0x29, 0x56, 0x6b, 0xd0, 0x50, 0x86, 0xeb, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x83, 0x02, 0x76, 0x83, 0x06, 0x5d, 0x4b, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x28, 0xa2, 0x7c, 0x0f, 0xda, 0xb8, 0x80, 0x6d, 0x35, 0x28, 0xef, 0xe3, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x83, 0xd3, 0x1a, 0xe5, 0x00, 0xbc, 0xb8, 0xbd, 0xb9, 0xb5, 0x90, 0xbd, 0x8d, 0x8d, 0xbd, 0xc9, 0x91, 0x81, 0x8c, 0xbd, 0xb5, 0xb5, 0x95, 0xb9, 0xd1, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0x2c, 0x84, 0x23, 0xdd, 0x60, 0x21, 0x1c, 0xe9, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xd9, 0x31, 0xe8, 0x06, 0xed, 0x5b, 0xbe, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0xdc, 0x8e, 0xf4, 0x60, 0x1d, 0x35, 0x69, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0x6a, 0xd0, 0xf6, 0xaf, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xdb, 0xbf, 0x96, 0x0d, 0xe0, 0x71, 0x97, 0x46, 0x56, 0x06, 0x22, 0x56, 0xc7, 0x26, 0xb6, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0x6e, 0xb0, 0x0c, 0xc0, 0xf4, 0x60, 0x79, 0x9d, 0xe9, 0x41, 0x23, 0x0c, 0x97, 0xb3, 0x06, 0x0d, 0x1a, 0x67, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x72, 0x75, 0xf7, 0x41, 0x33, 0x9c, 0x99, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0xcb, 0xab, 0x73, 0x37, 0x28, 0x04, 0x53, 0x0f, 0xd6, 0x35, 0x3f, 0xaf, 0xe1, 0x73, 0x97, 0x0d, 0x12, 0xad, 0x3f, 0x37, 0x28, 0x04, 0x53, 0x0f, 0xca, 0x39, 0xdb, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0xbc, 0xbb, 0x37, 0x72, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x45, 0x04, 0x75, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xf1, 0x60, 0x5d, 0xf3, 0x73, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x5e, 0xd0, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0x36, 0xbc, 0x17, 0xb4, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xc3, 0x3f, 0x0c, 0x1b, 0x34, 0x2e, 0x4e, 0x70, 0xb0, 0x98, 0xa0, 0xfe, 0xf0, 0x16, 0xda, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0xfd, 0xb2, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x20, 0x0a, 0xb6, 0x0d, 0x4a, 0x78, 0xcc, 0x35, 0x68, 0x85, 0x09, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x61, 0xb1, 0xbc, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x8d, 0x67, 0xc1, 0xb6, 0x41, 0x92, 0x12, 0xe8, 0x06, 0xed, 0xb0, 0xc1, 0xd6, 0x06, 0x25, 0x3c, 0xe6, 0x82, 0xa7, 0x07, 0x4d, 0xbd, 0xc1, 0xae, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x53, 0x6f, 0xb0, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3e, 0x68, 0xea, 0x0d, 0xb6, 0x0d, 0x0a, 0x82, 0xd9, 0x05, 0x4f, 0x0f, 0x5a, 0xc6, 0x83, 0x5d, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x96, 0xf1, 0x60, 0x37, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0xd0, 0x32, 0x1e, 0xec, 0x1a, 0xa4, 0xea, 0x80, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0x09, 0x08, 0x7b, 0x90, 0xa0, 0x04, 0xda, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0xb3, 0x83, 0xb0, 0x6b, 0x90, 0xaa, 0x03, 0x7a, 0x50, 0x50, 0x64, 0xae, 0x41, 0x13, 0x6d, 0xb0, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0x4d, 0x02, 0xc2, 0x1e, 0xb4, 0x26, 0x07, 0xdb, 0xe1, 0x14, 0x5b, 0xc0, 0x87, 0x63, 0x2b, 0xc3, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1a, 0xba, 0x84, 0x6d, 0x00, 0x5e, 0xe4, 0xca, 0xe0, 0xc2, 0xe4, 0xe6, 0xca, 0x40, 0xe6, 0xe8, 0xc2, 0xe8, 0xd2, 0xc6, 0x40, 0xe0, 0xc2, 0xe8, 0xd0, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x0b, 0x14, 0x52, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0x49, 0x50, 0xf0, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xaf, 0xce, 0xed, 0x4e, 0x2e, 0x0c, 0x0e, 0xa4, 0x84, 0x4c, 0xac, 0xee, 0xec, 0xa0, 0x15, 0x09, 0xb4, 0x0d, 0x1a, 0x2c, 0xf8, 0xda, 0xa0, 0xd8, 0xd1, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x86, 0x30, 0xfa, 0xe0, 0x10, 0xd3, 0x71, 0xd0, 0x0c, 0x8a, 0xd4, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xcb, 0x95, 0xc5, 0xd5, 0xa5, 0xc9, 0x95, 0x81, 0xe8, 0xf8, 0x81, 0xa0, 0xbd, 0xbd, 0xb9, 0x1d, 0x14, 0x14, 0x99, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0x9c, 0xc4, 0x5d, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x7e, 0xc4, 0xea, 0xd2, 0xd8, 0xc8, 0x40, 0xea, 0xe6, 0xd2, 0xdc, 0xce, 0x40, 0xca, 0xd8, 0xca, 0xda, 0xca, 0xdc, 0xe8, 0xe6, 0x0e, 0x5a, 0x58, 0xed, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xd0, 0x33, 0x47, 0x17, 0x26, 0x47, 0x97, 0xe6, 0x76, 0x06, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0xa2, 0x56, 0x37, 0x47, 0x07, 0xf2, 0xda, 0xf0, 0xb9, 0xd2, 0x06, 0xed, 0xbe, 0x6a, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0x02, 0xe8, 0x6c, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0x09, 0x0a, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0x05, 0x45, 0xe6, 0x1a, 0x3e, 0x77, 0x19, 0xbc, 0x3e, 0x58, 0x59, 0xe0, 0x5d, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x3e, 0x0f, 0xda, 0xa0, 0xa0, 0xc8, 0xdc, 0xa0, 0xd8, 0xd1, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x20, 0xf6, 0x79, 0x0d, 0x82, 0xcd, 0x74, 0x83, 0x63, 0x9e, 0xeb, 0x06, 0xeb, 0x23, 0xd2, 0x3b, 0x28, 0x23, 0x6d, 0x0f, 0x0f, 0xee, 0xac, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xef, 0x8b, 0xd9, 0xdb, 0x1b, 0xc8, 0xd8, 0x9b, 0xdb, 0x1c, 0x5d, 0x98, 0x1b, 0xdd, 0xdc, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0x31, 0xdc, 0x60, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x38, 0x97, 0x7a, 0x70, 0x44, 0x2c, 0x38, 0x9c, 0x62, 0x6b, 0xd0, 0xb0, 0x87, 0xe6, 0x06, 0xcb, 0x21, 0x99, 0xe6, 0xa0, 0xc1, 0x0a, 0xd5, 0xd5, 0xa0, 0xe9, 0x95, 0xcd, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x05, 0x76, 0xa6, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x34, 0x20, 0x81, 0xb0, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xd7, 0x4a, 0xba, 0xc1, 0x02, 0x3b, 0xd3, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x93, 0xc2, 0x96, 0x55, 0x87, 0x53, 0xac, 0x35, 0x68, 0x9f, 0xd2, 0x72, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x25, 0x76, 0xac, 0x1b, 0x34, 0x29, 0x90, 0xb9, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0x50, 0x50, 0x64, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x5a, 0x83, 0x6b, 0xad, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x0a, 0x8a, 0xcc, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0x5a, 0x82, 0xc7, 0x3c, 0x68, 0xf4, 0x20, 0xb3, 0x83, 0x25, 0x26, 0xa5, 0xad, 0x06, 0x6d, 0x22, 0x64, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0xf8, 0x45, 0x69, 0x83, 0x12, 0xce, 0xfd, 0x60, 0xa5, 0xa4, 0xea, 0x41, 0xcb, 0x3b, 0x99, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x2c, 0xb0, 0x33, 0x3d, 0x68, 0x5b, 0x21, 0xb6, 0x59, 0xc0, 0x9f, 0x2b, 0x0b, 0x6b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1a, 0x30, 0x89, 0x6d, 0x00, 0xcf, 0xbb, 0x34, 0x3a, 0x34, 0x10, 0xb2, 0xb7, 0xb1, 0xb1, 0x37, 0x39, 0xb2, 0xb9, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x96, 0x14, 0xd9, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xb2, 0x0f, 0x66, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0xac, 0xae, 0xb2, 0x5d, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x26, 0x36, 0x5c, 0x3b, 0x68, 0x45, 0x0a, 0xb3, 0x56, 0x83, 0x56, 0xe6, 0x30, 0x37, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0xa7, 0xf7, 0x26, 0x1f, 0x2c, 0x4d, 0x15, 0xdd, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x01, 0x8b, 0xbe, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xac, 0xc2, 0xbb, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x0f, 0x16, 0x58, 0x41, 0xb7, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x7b, 0x81, 0x96, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0xed, 0x20, 0x58, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x16, 0x09, 0x2d, 0x3b, 0x3c, 0xf4, 0x73, 0x78, 0x0b, 0xed, 0xf0, 0x5e, 0xd0, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xd9, 0x27, 0xb6, 0x15, 0xf0, 0xe5, 0xde, 0xe0, 0xc2, 0x83, 0xe6, 0x12, 0x37, 0x0f, 0xa7, 0x58, 0xad, 0x41, 0xd3, 0x5a, 0x9a, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x03, 0x90, 0xca, 0x06, 0x6d, 0x77, 0xc1, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xc7, 0xc3, 0x07, 0xab, 0x6d, 0xf8, 0x20, 0x67, 0xc3, 0xd3, 0x3a, 0x6b, 0xf8, 0x20, 0x67, 0xc3, 0xd3, 0x3b, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x06, 0x24, 0x10, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x0d, 0x48, 0x20, 0x1c, 0xde, 0x42, 0x3b, 0x28, 0xeb, 0x3c, 0x0f, 0x1a, 0x39, 0x8b, 0xdd, 0xf0, 0x41, 0xce, 0x86, 0xa7, 0x77, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x0d, 0x48, 0x20, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0x2f, 0x41, 0x38, 0xbc, 0x85, 0x76, 0x50, 0xd6, 0x79, 0x1e, 0xb4, 0xfa, 0x16, 0xbb, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xe0, 0x84, 0x6e, 0x50, 0xc0, 0xe6, 0x6f, 0xb0, 0xf4, 0x81, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x0d, 0x8a, 0x9c, 0xd6, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xc2, 0x87, 0xd1, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xbc, 0xdf, 0x56, 0xad, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x6a, 0x92, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0xd6, 0x38, 0x93, 0x1e, 0xb4, 0xa4, 0x79, 0xb9, 0x41, 0xeb, 0x9f, 0x97, 0x1d, 0xb4, 0x90, 0x70, 0xb9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x82, 0x13, 0xba, 0x41, 0x91, 0xd3, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xf8, 0x30, 0xba, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x83, 0xef, 0xf2, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x04, 0x27, 0x74, 0x83, 0x02, 0x36, 0x7f, 0x83, 0x45, 0x96, 0xb3, 0xd5, 0x6a, 0xd0, 0x46, 0xc3, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x1b, 0x0d, 0x97, 0x0d, 0xe0, 0x6b, 0x56, 0xc7, 0xc6, 0x06, 0x72, 0x97, 0x46, 0x56, 0x06, 0x62, 0xf6, 0x26, 0xd7, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xea, 0x5e, 0xd6, 0x0d, 0x5a, 0x30, 0xb6, 0xdc, 0xe0, 0x3c, 0xd8, 0xb1, 0xc1, 0x72, 0x48, 0xa6, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0xad, 0x8b, 0x60, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xe1, 0x41, 0xc9, 0x0d, 0x5a, 0x5d, 0xc1, 0x3c, 0x68, 0x34, 0x0f, 0x73, 0x83, 0xa6, 0x67, 0x30, 0xd7, 0xf0, 0xa0, 0xe4, 0x06, 0x4d, 0x76, 0x8f, 0x1d, 0x34, 0x52, 0x30, 0x5a, 0x2b, 0xe0, 0xc3, 0xbd, 0xbd, 0xb9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xed, 0xd8, 0xc6, 0x36, 0x00, 0x2f, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, 0x27, 0x3d, 0x27, 0x73, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x83, 0x0b, 0x3b, 0x0f, 0xd6, 0x35, 0x3f, 0xaf, 0xe1, 0xcf, 0xa5, 0x01, 0xef, 0xec, 0xed, 0x3d, 0x68, 0xef, 0x1f, 0xb3, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xc9, 0xca, 0xcc, 0xc2, 0xea, 0xd8, 0xe8, 0x40, 0xe8, 0xde, 0x40, 0xe0, 0xc2, 0xce, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xd9, 0x84, 0xb9, 0xc1, 0xba, 0xe6, 0xe7, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x35, 0x7b, 0x93, 0x03, 0x71, 0xab, 0x63, 0x63, 0x03, 0x39, 0x7b, 0x7b, 0x3b, 0x99, 0xdb, 0xa0, 0x84, 0xc7, 0x5c, 0x83, 0x26, 0x8d, 0x63, 0x5b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xdf, 0xb5, 0xb2, 0x32, 0x38, 0x90, 0xb2, 0x36, 0x38, 0xba, 0x3c, 0x90, 0xb3, 0xb7, 0xb7, 0x83, 0x75, 0x0d, 0xeb, 0x1b, 0x14, 0x9d, 0xc6, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xcf, 0x1b, 0x1d, 0x5a, 0x99, 0xdc, 0x5d, 0xda, 0x5c, 0x19, 0x08, 0x5a, 0x59, 0x18, 0x19, 0xc8, 0xd8, 0x5b, 0x5b, 0xd9, 0xdc, 0x86, 0xb7, 0x75, 0x36, 0x38, 0x17, 0x1d, 0xb4, 0x06, 0xc5, 0x80, 0xec, 0x82, 0xa7, 0x07, 0xcd, 0x65, 0xc7, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0x16, 0xda, 0x63, 0x37, 0x28, 0xe1, 0x31, 0xd7, 0xa0, 0xc1, 0xe1, 0xd8, 0x36, 0x28, 0x28, 0x32, 0x37, 0x38, 0x86, 0x1b, 0x6c, 0xf8, 0xdc, 0x65, 0xf0, 0x7a, 0xc3, 0xdb, 0x3a, 0x83, 0xa7, 0x07, 0x8d, 0xc6, 0xc7, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x6d, 0x26, 0xf7, 0xd6, 0x06, 0x72, 0xf6, 0xf6, 0x06, 0xf2, 0x26, 0x07, 0x02, 0x17, 0x76, 0xb6, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xbf, 0x5c, 0xd9, 0x58, 0x9d, 0xdc, 0x5c, 0x19, 0xc8, 0x9b, 0x1b, 0x08, 0x5d, 0x58, 0x1a, 0xdb, 0xdc, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xcd, 0x65, 0xc7, 0x6e, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xa0, 0xb9, 0xec, 0xd8, 0x35, 0x68, 0x34, 0x3e, 0x76, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x46, 0xe3, 0x63, 0x37, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0xd0, 0x68, 0x7c, 0x6c, 0xab, 0x41, 0x43, 0xb3, 0x99, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xd9, 0x31, 0xe8, 0x06, 0x6d, 0x1f, 0xad, 0xae, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x42, 0x4d, 0xd2, 0x0d, 0x9a, 0xb7, 0x12, 0xdd, 0xe0, 0xc4, 0x7e, 0xb3, 0xc1, 0x42, 0xc5, 0xd0, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0xb5, 0x38, 0x98, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x1b, 0xac, 0xc5, 0xc1, 0xdc, 0xa0, 0xed, 0x2b, 0xd1, 0x0d, 0xda, 0xc8, 0xbb, 0x3c, 0x68, 0x08, 0x53, 0xb5, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xb2, 0x63, 0xd0, 0x0d, 0xda, 0xbe, 0x12, 0xdd, 0x60, 0x2d, 0x0e, 0xe6, 0x06, 0x6d, 0xe4, 0x5d, 0x1e, 0xac, 0x92, 0x06, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0xa0, 0xa0, 0xc8, 0x3c, 0x68, 0xcd, 0x28, 0xb5, 0xd6, 0xe0, 0xc4, 0x7e, 0xb3, 0xc1, 0x32, 0x6f, 0xd2, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x16, 0x6a, 0x92, 0x6e, 0xd0, 0x76, 0xd5, 0xea, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x16, 0x2a, 0x86, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0xac, 0xc5, 0xc1, 0x5c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0xdd, 0x60, 0x2d, 0x0e, 0xe6, 0x41, 0x03, 0x27, 0xb2, 0xad, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x96, 0x1d, 0x83, 0x1e, 0x34, 0xca, 0x22, 0xbb, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x76, 0x0c, 0xba, 0x41, 0x9b, 0xab, 0xaa, 0x07, 0x4b, 0x4b, 0x42, 0x0f, 0x1a, 0x7f, 0x91, 0x6d, 0x35, 0x68, 0x97, 0x06, 0x73, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xd5, 0xbd, 0xac, 0x1b, 0xb4, 0x60, 0x6c, 0xb9, 0xc1, 0x79, 0xb0, 0x63, 0x83, 0xe5, 0x90, 0x4c, 0xb3, 0xc1, 0x0a, 0xa1, 0xa6, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xbb, 0xb2, 0xa8, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0xfa, 0xc3, 0x6c, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x04, 0x27, 0x74, 0x0d, 0x6f, 0xdc, 0x1d, 0xb4, 0x6f, 0x8e, 0x7a, 0xb0, 0x1a, 0x80, 0xf4, 0xa0, 0x11, 0x86, 0xcb, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x35, 0xbc, 0x71, 0x77, 0xd0, 0xae, 0x30, 0xea, 0x41, 0xfb, 0x72, 0xa1, 0x07, 0x8d, 0x30, 0x5c, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xe0, 0x84, 0xae, 0xe1, 0x8d, 0xbb, 0x83, 0xa6, 0xc2, 0x51, 0x0f, 0x5a, 0xe3, 0xbe, 0x3c, 0x68, 0x84, 0xe1, 0x72, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0xa5, 0x74, 0x0d, 0x6f, 0xdc, 0x1d, 0x34, 0x20, 0x8d, 0xda, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0x26, 0xe9, 0x06, 0xed, 0x13, 0x5c, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x9f, 0xed, 0x4d, 0xec, 0xad, 0x6a, 0x35, 0x68, 0x2c, 0x06, 0x73, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0xb1, 0x18, 0xcc, 0x06, 0xe0, 0x41, 0xae, 0xce, 0xad, 0x0c, 0x44, 0xae, 0xec, 0xac, 0x8e, 0x2d, 0x4c, 0x0e, 0xc4, 0xec, 0x4d, 0xae, 0x6d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0xa3, 0x7b, 0x63, 0x0f, 0x1f, 0xac, 0x6e, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0xf8, 0x65, 0x78, 0x70, 0xe3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x5e, 0x74, 0x68, 0x72, 0x65, 0x65, 0x20, 0x68, 0x6f, 0x6f, 0x6e, 0x73, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0xb3, 0xb7, 0x37, 0xb8, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xb3, 0xbd, 0x85, 0x99, 0x6d, 0xd0, 0xf4, 0xa6, 0xec, 0x06, 0x4d, 0x6f, 0xca, 0xb6, 0x02, 0x7e, 0x19, 0x1e, 0x5c, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x68, 0x6f, 0x6f, 0x6e, 0x73, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0x41, 0x7b, 0x99, 0xb2, 0x1b, 0xb4, 0x75, 0x6b, 0x79, 0xd0, 0x86, 0xa7, 0xec, 0x0a, 0xf8, 0x74, 0x6b, 0x73, 0xe7, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0x2b, 0xba, 0xc2, 0x6b, 0x83, 0x86, 0xeb, 0x34, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe3, 0xc1, 0x02, 0x0b, 0xe7, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x1a, 0x94, 0xf0, 0x98, 0xad, 0xe1, 0x6d, 0x9d, 0x81, 0x0f, 0x43, 0x3b, 0x3c, 0xf4, 0x73, 0x78, 0x2e, 0x68, 0x83, 0x15, 0x42, 0x4d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x3f, 0xab, 0x73, 0x5b, 0x5b, 0xc3, 0xdb, 0x3a, 0x03, 0x3e, 0x5d, 0x59, 0xd8, 0xda, 0x41, 0x1b, 0x9e, 0xb2, 0x2b, 0xe0, 0x8b, 0xd5, 0xd1, 0xd1, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xc7, 0x18, 0xdb, 0xdb, 0x5c, 0x9a, 0xdb, 0x19, 0x48, 0x4f, 0x0f, 0x48, 0x9a, 0x19, 0x08, 0x5d, 0x18, 0x1b, 0xdb, 0x41, 0xe3, 0x3d, 0xb1, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0xd8, 0x28, 0xdb, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x5d, 0xc1, 0xe8, 0x06, 0xed, 0x4a, 0xc5, 0x1e, 0xb4, 0xb3, 0xba, 0x7a, 0xd0, 0xae, 0x54, 0xec, 0x0a, 0xf8, 0x68, 0x69, 0x6e, 0xe8, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xd0, 0x5e, 0xa6, 0xec, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x06, 0xeb, 0x00, 0x5c, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x35, 0x49, 0x37, 0x68, 0x5a, 0xe2, 0x72, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0x75, 0x00, 0xae, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0xac, 0x71, 0x26, 0xdd, 0x60, 0x1d, 0x80, 0x6b, 0xd5, 0x41, 0x3b, 0x9f, 0xb2, 0x2b, 0xe0, 0xb3, 0xbd, 0xc9, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x07, 0xab, 0x6b, 0xa6, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x3b, 0xd6, 0x35, 0xfc, 0xa2, 0xb4, 0x41, 0xd3, 0xd3, 0x96, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x34, 0xcc, 0x8e, 0xba, 0x41, 0x63, 0xf7, 0x5d, 0x1b, 0x34, 0x1a, 0x3c, 0xd0, 0x41, 0x3b, 0x9f, 0xb2, 0x2b, 0xe0, 0xa3, 0xa5, 0xb9, 0x89, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xa2, 0xa5, 0xb9, 0xd1, 0x81, 0x84, 0xb9, 0x91, 0x81, 0xa0, 0xbd, 0xbd, 0xb9, 0x6d, 0x70, 0x1e, 0xec, 0xd8, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xed, 0x65, 0xca, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x5f, 0xec, 0xcd, 0x8d, 0xee, 0xa0, 0x9d, 0x4f, 0xd9, 0x15, 0xf0, 0xc5, 0xde, 0xc4, 0xc2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe6, 0x17, 0x66, 0x1b, 0xe0, 0x5f, 0x21, 0x01, 0x01, 0x09, 0x93, 0x6b, 0x9b, 0xdb, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x75, 0x2f, 0xeb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xc7, 0x1b, 0x14, 0x82, 0xa9, 0x07, 0xeb, 0xb5, 0x9e, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf2, 0x06, 0x85, 0x60, 0xea, 0xc1, 0xc2, 0x4d, 0xef, 0x35, 0x7c, 0xee, 0x32, 0xf8, 0x7c, 0xd0, 0x82, 0xb1, 0x65, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x0e, 0xc9, 0x34, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1f, 0xac, 0xd7, 0x7a, 0x5e, 0xc3, 0x9f, 0x4b, 0x83, 0xcb, 0x07, 0xad, 0x61, 0xb9, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xe7, 0x83, 0x05, 0x56, 0xd0, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x70, 0xfc, 0xe4, 0x3b, 0x68, 0xed, 0xca, 0x75, 0x0d, 0xbf, 0xb8, 0x6c, 0x70, 0x3a, 0x12, 0xd9, 0xa0, 0xbd, 0x8d, 0xd9, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x0b, 0x79, 0x0a, 0x1b, 0xb4, 0x2b, 0x1d, 0xb1, 0xc1, 0xe9, 0x48, 0xe4, 0xe0, 0x24, 0xcf, 0xd7, 0x86, 0x5f, 0x5c, 0x36, 0x38, 0x1d, 0x89, 0xac, 0xe1, 0x17, 0x97, 0x35, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0xf6, 0x7f, 0x3d, 0x38, 0xf4, 0xf2, 0xb5, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0xfc, 0xe2, 0x72, 0x70, 0xe8, 0xeb, 0xab, 0x83, 0x06, 0x69, 0x66, 0x37, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xc2, 0x87, 0xd1, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xf4, 0x0a, 0x69, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x15, 0x22, 0xa5, 0x07, 0x0b, 0xeb, 0x59, 0x37, 0x68, 0xee, 0x26, 0x76, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x6a, 0x75, 0x6d, 0x70, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x67, 0x7b, 0x0b, 0x73, 0xab, 0x0e, 0xa7, 0xd8, 0x1a, 0xa4, 0x95, 0xb1, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xcb, 0x96, 0x36, 0x47, 0x07, 0x32, 0x57, 0x06, 0x17, 0x26, 0x17, 0x46, 0xf7, 0x26, 0xb7, 0xe1, 0x83, 0x9c, 0x0d, 0x9a, 0xa3, 0x96, 0xdd, 0x60, 0x85, 0x48, 0xe9, 0x41, 0x0b, 0x8a, 0xad, 0x2b, 0xe0, 0x8b, 0xbd, 0xb9, 0xe5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0x8b, 0x85, 0xcd, 0x95, 0x81, 0xc4, 0x80, 0xf4, 0x94, 0xb9, 0x81, 0x8c, 0xbd, 0xd5, 0xb9, 0xd1, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x1b, 0xb4, 0xd5, 0x11, 0x7b, 0xd0, 0xaa, 0xd8, 0xe6, 0x2c, 0xe0, 0x97, 0xe1, 0xc5, 0xcd, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x32, 0xc6, 0xf6, 0x36, 0x57, 0x46, 0x06, 0x72, 0x16, 0x06, 0x07, 0x57, 0x46, 0x06, 0x32, 0x07, 0x57, 0x36, 0x36, 0xb7, 0xc1, 0x79, 0xb0, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x76, 0x92, 0x65, 0x5b, 0xc3, 0xdb, 0x3a, 0x1b, 0xac, 0x48, 0xf6, 0xa9, 0x59, 0xc0, 0x47, 0x4b, 0x73, 0x33, 0x37, 0x38, 0x0f, 0x76, 0x6c, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf6, 0x32, 0x65, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0x37, 0x58, 0xe8, 0x39, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x45, 0x43, 0xbf, 0xc1, 0xb2, 0x51, 0xfc, 0x83, 0x85, 0x5b, 0xa2, 0x1d, 0xb4, 0xe1, 0x29, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0xe1, 0xc1, 0x9b, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0x41, 0x7b, 0x99, 0xb2, 0x07, 0x6d, 0x78, 0xca, 0xd6, 0xe1, 0x14, 0x6b, 0x01, 0xbf, 0x0c, 0x0f, 0xce, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xb7, 0x84, 0xae, 0x4c, 0xae, 0x0d, 0x24, 0xcc, 0x8d, 0x0c, 0x04, 0xed, 0xed, 0xcd, 0x6d, 0x83, 0xf3, 0x60, 0xc7, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x68, 0x2f, 0x53, 0x76, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x96, 0xe0, 0x31, 0x0f, 0x16, 0xd6, 0xb3, 0x1e, 0xb4, 0xf3, 0x29, 0xbb, 0x02, 0x7e, 0x19, 0x1e, 0xdc, 0xbd, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x3f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x20, 0x68, 0x6f, 0x6f, 0x6e, 0x73, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0x41, 0x7b, 0x99, 0xb2, 0x1b, 0xb4, 0x75, 0x6b, 0x79, 0xd0, 0xf0, 0xa6, 0xec, 0x2c, 0xe0, 0xcb, 0xa5, 0x8d, 0xad, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xb3, 0xa5, 0xcd, 0xd1, 0x81, 0x6c, 0xdd, 0xa5, 0xb9, 0x9d, 0x81, 0xa0, 0xbd, 0xbd, 0xb9, 0x75, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x35, 0xb3, 0xa1, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xb4, 0x32, 0x96, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xed, 0x65, 0xca, 0x6e, 0xd0, 0xd6, 0xad, 0xe5, 0x41, 0x3b, 0x9f, 0xb2, 0x1d, 0x4e, 0xb1, 0x05, 0xfc, 0x32, 0xbc, 0xb8, 0x73, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x4f, 0xba, 0x32, 0xb9, 0x36, 0x90, 0x30, 0x37, 0x32, 0x90, 0x39, 0xb8, 0xb2, 0xb1, 0x0d, 0xce, 0x83, 0x1d, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0xa0, 0xbd, 0x4c, 0xd9, 0x0d, 0x96, 0xd6, 0xb3, 0x1e, 0xb4, 0x78, 0x35, 0xbb, 0x02, 0x7e, 0x19, 0x1e, 0x9c, 0xb8, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x07, 0xdd, 0xdd, 0x1b, 0x08, 0xda, 0xdb, 0x9b, 0xdb, 0xdc, 0x06, 0xe7, 0xc1, 0x8e, 0x83, 0xa6, 0x25, 0x67, 0x0f, 0xa7, 0x58, 0x0b, 0xf8, 0x65, 0x78, 0x70, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x1e, 0x63, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x61, 0x69, 0x6c, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0xbc, 0xad, 0x33, 0xe0, 0xdf, 0xa5, 0xcd, 0xc1, 0x1d, 0x4e, 0xb1, 0x05, 0xfc, 0xb6, 0xba, 0xb9, 0x79, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x7f, 0xb6, 0xb4, 0x39, 0x3a, 0x90, 0xbb, 0x17, 0x10, 0xb2, 0xb7, 0xb1, 0xb1, 0x37, 0x39, 0xb2, 0xb9, 0x0d, 0x1f, 0xe4, 0x6c, 0xd0, 0x1c, 0xb5, 0xec, 0x06, 0x0d, 0x55, 0xcd, 0x1e, 0xb4, 0xa0, 0xd8, 0xba, 0x02, 0x7e, 0x19, 0x5e, 0x5c, 0xbe, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x0f, 0x68, 0x6f, 0x6f, 0x6e, 0x2c, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x73, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0x41, 0x7b, 0x99, 0xb2, 0x1b, 0x34, 0xbd, 0x29, 0xbb, 0x41, 0x9b, 0x57, 0xb3, 0x1b, 0xb4, 0x79, 0x35, 0x7b, 0xd0, 0xe2, 0xd5, 0xec, 0x6a, 0xd0, 0x2e, 0xa7, 0xec, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x41, 0xea, 0x9a, 0xf7, 0x86, 0x0f, 0x72, 0x36, 0x68, 0x8e, 0x5a, 0x76, 0x83, 0x06, 0x46, 0x2f, 0x0f, 0x9a, 0x61, 0xb8, 0x5c, 0x0d, 0x1a, 0xf7, 0xcf, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xf8, 0x1e, 0xaf, 0x0d, 0xce, 0x83, 0x1d, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0xa0, 0xad, 0x61, 0xd9, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xb3, 0x8f, 0xad, 0x1d, 0xb4, 0xc0, 0x2a, 0xbb, 0x02, 0xbe, 0xd8, 0x1b, 0x5b, 0xb8, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0xf6, 0x04, 0x6d, 0x03, 0xfc, 0x2b, 0x2b, 0x20, 0x20, 0x61, 0x72, 0x6d, 0x73, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0xac, 0xee, 0x65, 0xdd, 0xa0, 0xe5, 0x8a, 0xd9, 0x0d, 0xce, 0x83, 0x1d, 0x1b, 0x2c, 0x87, 0x64, 0x9a, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x43, 0x26, 0xb3, 0x1b, 0x34, 0x8b, 0x32, 0x7b, 0xb0, 0x7a, 0x29, 0x7a, 0xc3, 0x07, 0x39, 0x1b, 0x34, 0xe8, 0x32, 0xbb, 0x86, 0x5f, 0x5c, 0x36, 0x38, 0x1d, 0x89, 0x6c, 0xd0, 0xde, 0xc6, 0xec, 0xc1, 0x49, 0x9e, 0x6f, 0xc3, 0x2f, 0x2e, 0x1b, 0x9c, 0x8e, 0x44, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x1c, 0x5d, 0x07, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x2d, 0xd1, 0xbf, 0x1e, 0x1c, 0x7a, 0xf9, 0x3a, 0x68, 0x15, 0x68, 0xf6, 0xe0, 0x24, 0xcf, 0xb7, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x3e, 0x8c, 0xae, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0xa0, 0x57, 0x56, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0xac, 0x10, 0x29, 0x3d, 0x68, 0xf5, 0x79, 0x73, 0x83, 0xe6, 0x6e, 0x62, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x68, 0xa8, 0x6a, 0xf6, 0xa0, 0x9d, 0x4f, 0xd9, 0x3a, 0x9c, 0x62, 0x0b, 0xf8, 0x65, 0x78, 0x70, 0xfa, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xfc, 0xcc, 0xc1, 0x95, 0x8d, 0x81, 0x84, 0xb9, 0x91, 0x81, 0xd0, 0xa1, 0xc9, 0x95, 0x95, 0x81, 0xa0, 0xbd, 0xbd, 0xb9, 0xcd, 0x6d, 0x70, 0x1e, 0xec, 0xd8, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xed, 0x65, 0xca, 0x6e, 0xd0, 0xe6, 0xd5, 0xec, 0x41, 0xc3, 0x9b, 0xb2, 0x87, 0x53, 0x6c, 0x0d, 0x5a, 0xb1, 0x9a, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xfb, 0x2c, 0x0c, 0x0e, 0x44, 0xac, 0xcc, 0xec, 0x4d, 0xae, 0x0c, 0x84, 0xec, 0x6d, 0x6c, 0x6e, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0xc3, 0x83, 0x92, 0x1b, 0xb4, 0x3b, 0xf9, 0x7a, 0xd0, 0x8a, 0x14, 0xe6, 0x41, 0x4b, 0x9a, 0x97, 0x2b, 0xe0, 0xd3, 0xe1, 0xb1, 0xcd, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0xed, 0xd2, 0xca, 0x6e, 0xd0, 0x70, 0x9d, 0xe6, 0x1a, 0xfe, 0x5c, 0x1a, 0x7c, 0x3c, 0x58, 0x1e, 0x6b, 0xdd, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0x5f, 0x83, 0x93, 0x83, 0x5c, 0x07, 0x6d, 0xfb, 0xca, 0x1e, 0x9e, 0x0b, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x6d, 0xf1, 0xcd, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xda, 0x1a, 0x96, 0xdd, 0xa0, 0xd9, 0x62, 0xd9, 0x0d, 0x9a, 0xde, 0x94, 0x5d, 0xc3, 0xdb, 0x3a, 0x03, 0xbe, 0x5c, 0xdd, 0xd8, 0x5a, 0x1d, 0x4e, 0xb1, 0x05, 0xfc, 0x3b, 0xb4, 0x30, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x0b, 0xd3, 0xf8, 0x81, 0x0e, 0xa7, 0x61, 0xb7, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x16, 0xa6, 0x21, 0x1b, 0x68, 0x61, 0x1a, 0xf2, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x61, 0x1a, 0x92, 0x81, 0xfe, 0xa6, 0x61, 0xb1, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x30, 0x0d, 0xe9, 0x40, 0x0f, 0xd3, 0x50, 0xb8, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0x4c, 0x43, 0x7e, 0xd0, 0x8e, 0x25, 0xed, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1e, 0xa6, 0x61, 0x30, 0xd0, 0xc3, 0x34, 0x8c, 0x0e, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0x4c, 0xc3, 0x6a, 0xa0, 0x87, 0x69, 0xe8, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xc3, 0x34, 0xcc, 0x06, 0x7a, 0x98, 0x86, 0xe9, 0xc1, 0x51, 0x57, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x3d, 0x4c, 0xc3, 0x76, 0xa0, 0x87, 0x69, 0xd8, 0x1f, 0x34, 0xe3, 0x85, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1e, 0xa6, 0xa1, 0x60, 0xa0, 0x87, 0x69, 0x28, 0x39, 0x58, 0xaf, 0xf5, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1e, 0xa6, 0xa1, 0x65, 0xa0, 0x87, 0x69, 0x68, 0x3a, 0x58, 0xb8, 0xe9, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1e, 0xa6, 0xa1, 0x6a, 0xa0, 0x87, 0x69, 0xa8, 0x3b, 0x58, 0x60, 0xe1, 0x5c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x98, 0x86, 0xe4, 0xa0, 0x61, 0x48, 0xda, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x28, 0xa1, 0x63, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xc5, 0x34, 0xa4, 0x03, 0x5d, 0x4c, 0x43, 0xf9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xc5, 0x34, 0xc4, 0x03, 0x5d, 0x4c, 0xc3, 0x7c, 0xc3, 0x9f, 0x4b, 0x03, 0x3e, 0x59, 0x1d, 0xd9, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8b, 0x69, 0xd8, 0x1c, 0xb4, 0x58, 0x4d, 0xbb, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8b, 0x69, 0x18, 0x0d, 0x74, 0x31, 0x0d, 0xc3, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x17, 0xd3, 0xb0, 0x1c, 0xe8, 0x62, 0x1a, 0xd6, 0x07, 0x0b, 0x37, 0xbd, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x17, 0xd3, 0xb0, 0x1f, 0xe8, 0x62, 0x1a, 0xba, 0x37, 0xfc, 0xb9, 0x34, 0xe0, 0xbb, 0xd5, 0x91, 0x95, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x98, 0x86, 0x92, 0x83, 0x46, 0xda, 0x69, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0x31, 0x0d, 0x2d, 0x03, 0x5d, 0x4c, 0x43, 0xd3, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8b, 0x69, 0xa8, 0x1a, 0xe8, 0x62, 0x1a, 0xaa, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0x31, 0x0d, 0x5d, 0x03, 0x5d, 0x4c, 0x43, 0xdf, 0x41, 0xe9, 0x4d, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x2e, 0xa6, 0xa1, 0x70, 0xa0, 0x8b, 0x69, 0x28, 0x3d, 0x58, 0xaf, 0xf5, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x2e, 0xa6, 0xa1, 0x75, 0xa0, 0x8b, 0x69, 0x68, 0x3e, 0x58, 0x60, 0xe1, 0x5c, 0x1d, 0x84, 0xe9, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x98, 0x86, 0x6c, 0xa0, 0xab, 0x69, 0xd8, 0x6d, 0x50, 0x74, 0x1a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x8d, 0x69, 0xc8, 0x07, 0xda, 0x98, 0x86, 0xcd, 0xc1, 0x52, 0x49, 0xc2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0x31, 0x0d, 0xab, 0x81, 0x36, 0xa6, 0x61, 0x76, 0x78, 0x5a, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x1f, 0xd3, 0x90, 0x1d, 0x34, 0x6f, 0x51, 0xbb, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x31, 0x0d, 0xf9, 0x40, 0x33, 0xd3, 0xb0, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x98, 0x86, 0xcd, 0x40, 0x23, 0xd3, 0xd0, 0xb6, 0xe1, 0xcf, 0xa5, 0x01, 0x4f, 0xec, 0xed, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xc8, 0x34, 0x6c, 0x0e, 0xda, 0x93, 0xa9, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xc8, 0x34, 0x8c, 0x06, 0x1a, 0x99, 0x86, 0xe1, 0xc1, 0x51, 0x57, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0x4c, 0xc3, 0x72, 0xa0, 0x91, 0x69, 0x58, 0x1f, 0x34, 0xe3, 0x85, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x46, 0xa6, 0x61, 0x3e, 0xd0, 0xc8, 0x34, 0x54, 0x1c, 0xac, 0xd7, 0x7a, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x23, 0xd3, 0xd0, 0x31, 0xd0, 0xc8, 0x34, 0xf4, 0x1c, 0x2c, 0xdc, 0xf4, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x23, 0xd3, 0x50, 0x34, 0xd0, 0xc8, 0x34, 0x94, 0x1d, 0x2c, 0xb0, 0x70, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xad, 0x4c, 0xc3, 0x66, 0xa0, 0x97, 0x69, 0xb8, 0xb0, 0xe1, 0xcf, 0xa5, 0x0d, 0x16, 0x11, 0xdc, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x65, 0x1a, 0x36, 0x07, 0xcd, 0x6c, 0xd5, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0x4c, 0xc3, 0x68, 0xa0, 0x97, 0x69, 0x28, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0x6d, 0x5e, 0xd3, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x65, 0x1a, 0x96, 0x07, 0xcd, 0x9c, 0xd5, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x65, 0x1a, 0xa6, 0x03, 0xbd, 0x4c, 0xc3, 0xfc, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcb, 0x34, 0xec, 0x07, 0x7a, 0x99, 0x86, 0x8e, 0x83, 0x85, 0x9b, 0xde, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x97, 0x69, 0x68, 0x19, 0xe8, 0x65, 0x1a, 0x1e, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x76, 0xde, 0x69, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x32, 0x0d, 0x55, 0x07, 0x8d, 0xfa, 0xd5, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x65, 0x1a, 0xba, 0x06, 0x7a, 0x99, 0x86, 0xbe, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x2f, 0xd3, 0x50, 0x38, 0xd0, 0xcb, 0x34, 0x1c, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcb, 0x34, 0x34, 0x0e, 0xf4, 0x32, 0x0d, 0xad, 0x07, 0xa5, 0x37, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x99, 0x86, 0xda, 0x81, 0x5e, 0xa6, 0xa1, 0xfa, 0x60, 0xbd, 0xd6, 0xf3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x99, 0x86, 0xee, 0x81, 0x5e, 0xa6, 0xa1, 0xff, 0x60, 0x81, 0x85, 0x73, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x6e, 0xa6, 0x21, 0x3b, 0x68, 0xde, 0xa2, 0x76, 0x83, 0x82, 0x34, 0x76, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0x33, 0x0d, 0xf9, 0x40, 0x37, 0xd3, 0x50, 0xb8, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0x33, 0x0d, 0x83, 0x81, 0x6e, 0xa6, 0x61, 0xbf, 0xe1, 0xcf, 0xa5, 0x01, 0xaf, 0xce, 0x8d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcd, 0x34, 0x8c, 0x0e, 0x1a, 0x9c, 0xad, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcd, 0x34, 0xac, 0x06, 0xba, 0x99, 0x86, 0xe5, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x9b, 0x69, 0x98, 0x0e, 0x74, 0x33, 0x0d, 0xf3, 0x83, 0x85, 0x9b, 0xde, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x9b, 0x69, 0x28, 0x18, 0xe8, 0x66, 0x1a, 0xfa, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xaa, 0x81, 0xe0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdd, 0x4c, 0x43, 0xc9, 0x41, 0xe3, 0xca, 0xb5, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x99, 0x86, 0x96, 0x81, 0x6e, 0xa6, 0xa1, 0xe9, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcd, 0x34, 0x54, 0x0d, 0x74, 0x33, 0x0d, 0x75, 0x07, 0x0b, 0x37, 0xbd, 0xeb, 0x20, 0x4c, 0xc7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xce, 0x34, 0xa4, 0x03, 0xed, 0x4c, 0xc3, 0x89, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0x33, 0x0d, 0x8b, 0x81, 0x76, 0xa6, 0x61, 0x75, 0x70, 0x4a, 0xc7, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3b, 0xd3, 0xb0, 0x1b, 0x68, 0x67, 0x1a, 0xaa, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x58, 0x04, 0x32, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x76, 0xa6, 0x61, 0x3d, 0xd0, 0xce, 0x34, 0xec, 0x0f, 0xca, 0xa6, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0x33, 0x0d, 0x05, 0x03, 0xed, 0x4c, 0x43, 0xd3, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x3c, 0x50, 0x3e, 0x38, 0xbc, 0x41, 0x93, 0x34, 0xb5, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x9d, 0x69, 0x28, 0x3b, 0x68, 0x69, 0xbc, 0x76, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x67, 0x1a, 0xfa, 0x06, 0xda, 0x99, 0x86, 0xd2, 0x0d, 0x7f, 0x2e, 0x6d, 0xb8, 0xd3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0x33, 0x0d, 0x85, 0x07, 0x4d, 0x23, 0xd8, 0x1e, 0x2c, 0xdc, 0xf4, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xce, 0x34, 0xb4, 0x0e, 0xb4, 0x33, 0x0d, 0x1f, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x76, 0xa6, 0xa1, 0x77, 0xa0, 0x9d, 0x69, 0x28, 0x3e, 0x28, 0x28, 0x32, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0x33, 0x0d, 0xcd, 0x03, 0xed, 0x4c, 0xc3, 0x85, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xe8, 0x09, 0xfb, 0x60, 0x55, 0xa7, 0xf7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7e, 0xa6, 0x21, 0x3b, 0x68, 0xde, 0xa2, 0x76, 0x83, 0xc2, 0x50, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x4c, 0x43, 0x3e, 0xd0, 0xd1, 0x34, 0x54, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x4c, 0xc3, 0x66, 0xa0, 0x9f, 0x69, 0x68, 0xd8, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x99, 0x86, 0xd5, 0x40, 0x3f, 0xd3, 0x30, 0xdd, 0xa0, 0x10, 0x4c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xcf, 0x34, 0xcc, 0x0e, 0xda, 0xbf, 0xb1, 0x3d, 0x58, 0xb8, 0xe9, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x9f, 0x69, 0xd8, 0x0e, 0xf4, 0x33, 0x0d, 0x05, 0x1b, 0xde, 0xd6, 0x19, 0x5c, 0x3e, 0x68, 0xd5, 0xbf, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0x4d, 0xc3, 0x62, 0xa0, 0xa1, 0x69, 0x28, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x9a, 0x86, 0xc9, 0x40, 0x43, 0xd3, 0x30, 0x3b, 0x38, 0x11, 0xb4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa1, 0x69, 0xd8, 0x0d, 0x34, 0x34, 0x0d, 0xd3, 0x83, 0xc5, 0x25, 0xc1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x68, 0x1a, 0xb6, 0x03, 0x0d, 0x4d, 0x43, 0xc7, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xf3, 0x9a, 0xf6, 0x60, 0x49, 0xcc, 0x6d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x9a, 0x86, 0xfc, 0xa0, 0x75, 0x16, 0xdb, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa3, 0x69, 0x18, 0x0c, 0x74, 0x34, 0x0d, 0xab, 0x83, 0x96, 0x88, 0x6c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xd1, 0x34, 0xcc, 0x06, 0x3a, 0x9a, 0x86, 0xa6, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa3, 0x69, 0xd8, 0x0d, 0x74, 0x34, 0x0d, 0xdb, 0x83, 0x13, 0x41, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0x9a, 0x86, 0xf1, 0x40, 0x47, 0xd3, 0xb0, 0x3f, 0x58, 0x5c, 0x12, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x8e, 0xa6, 0xa1, 0x60, 0xa0, 0xa3, 0x69, 0x28, 0x3a, 0x68, 0x87, 0xcb, 0xb6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0x34, 0x0d, 0xd9, 0x41, 0xf3, 0x16, 0xb5, 0x1b, 0xbe, 0xc2, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xd3, 0x34, 0x64, 0x07, 0xcd, 0x5b, 0xd4, 0x6e, 0x50, 0xc2, 0x63, 0xae, 0x41, 0x93, 0xb5, 0xb5, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa7, 0x69, 0x18, 0x0d, 0xf4, 0x34, 0x0d, 0x65, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x4f, 0xd3, 0xb0, 0x1a, 0xe8, 0x69, 0x1a, 0x2a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9e, 0xa6, 0x61, 0x36, 0xd0, 0xd3, 0x34, 0x6c, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xd0, 0xaa, 0x7f, 0xed, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x9a, 0x86, 0xf1, 0x40, 0x4f, 0xd3, 0xd0, 0xb0, 0xe1, 0x6d, 0x9d, 0xc1, 0xe7, 0x83, 0x56, 0xfd, 0x6b, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x4f, 0xd3, 0xd0, 0x31, 0xd0, 0xd3, 0x34, 0x74, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0x76, 0xde, 0x69, 0x0f, 0x96, 0xc4, 0xdc, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xa9, 0x69, 0xc8, 0x0e, 0x9a, 0xb7, 0xa8, 0xdd, 0xa0, 0xe8, 0xd3, 0xdd, 0xa0, 0x61, 0x52, 0xdb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0x35, 0x0d, 0xb3, 0x81, 0xa6, 0xa6, 0xa1, 0x6e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x6a, 0x1a, 0x76, 0x03, 0x4d, 0x4d, 0xc3, 0xf8, 0xa0, 0x75, 0x4b, 0x82, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0x35, 0x0d, 0xeb, 0x81, 0xa6, 0xa6, 0xa1, 0x67, 0x83, 0xc6, 0x16, 0x22, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0x35, 0x0d, 0x15, 0x07, 0x0d, 0x0e, 0xdb, 0x6e, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0xa0, 0xf5, 0x45, 0xdb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0x35, 0x0d, 0x45, 0x03, 0x4d, 0x4d, 0x43, 0xdb, 0x41, 0xeb, 0xa3, 0xb6, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x6a, 0x1a, 0xb2, 0x83, 0xe6, 0x2d, 0x6a, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0x7d, 0xd1, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x57, 0xd3, 0xb0, 0x18, 0xe8, 0x6a, 0x1a, 0x66, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3e, 0x68, 0x7d, 0xd1, 0xb6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x4d, 0x43, 0x72, 0xd0, 0x30, 0x24, 0xed, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x9a, 0x86, 0x74, 0xa0, 0xaf, 0x69, 0x58, 0x6c, 0x78, 0x5b, 0x67, 0xc0, 0x3f, 0x63, 0x7b, 0xbb, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x5f, 0xd3, 0xb0, 0x19, 0xe8, 0x6b, 0x1a, 0x76, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0xcd, 0x6b, 0xda, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0x36, 0x0d, 0xc9, 0x41, 0xc3, 0x90, 0xb4, 0x1b, 0xbe, 0xc2, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xd8, 0x34, 0xa4, 0x07, 0x0d, 0x43, 0xd2, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0x4d, 0xc3, 0x62, 0xa0, 0xb1, 0x69, 0x28, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xd8, 0x34, 0x4c, 0x06, 0x1a, 0x9b, 0x86, 0xd5, 0x41, 0x89, 0x58, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0xa6, 0x61, 0x36, 0xd0, 0xd8, 0x34, 0x4c, 0x0f, 0xd6, 0x6b, 0x3d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xb1, 0x69, 0xd8, 0x0e, 0x34, 0x36, 0x0d, 0xfb, 0x83, 0x05, 0x16, 0xce, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x6c, 0x1a, 0x92, 0x83, 0x86, 0x21, 0x69, 0x37, 0x28, 0xe1, 0x31, 0xd7, 0xa0, 0x9d, 0x77, 0xda, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xd9, 0x34, 0x6c, 0x06, 0x3a, 0x9b, 0x86, 0xd1, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xb5, 0x69, 0x48, 0x0e, 0x1a, 0x86, 0xa4, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0x9b, 0x86, 0x74, 0xa0, 0xb5, 0x69, 0xd8, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0xa8, 0xc6, 0xed, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xd6, 0xa6, 0x61, 0x34, 0xd0, 0xda, 0x34, 0x4c, 0x37, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0xd0, 0xa8, 0xc6, 0x6d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x9b, 0x86, 0xe4, 0xa0, 0x61, 0x48, 0xda, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x36, 0x0d, 0xe9, 0x40, 0x6f, 0xd3, 0x30, 0xdc, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x6c, 0x41, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x6f, 0xd3, 0xb0, 0x19, 0xe8, 0x6d, 0x1a, 0x56, 0x07, 0x65, 0x53, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0x9b, 0x86, 0xd9, 0x40, 0x6f, 0xd3, 0xb0, 0x3b, 0x3c, 0x33, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0x9b, 0x86, 0x6c, 0xa0, 0xb9, 0x69, 0xd8, 0x6c, 0x78, 0x5b, 0x67, 0x70, 0x78, 0xf0, 0xf4, 0xa0, 0x51, 0x8d, 0xdb, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdd, 0x4d, 0x43, 0x72, 0xd0, 0x30, 0x24, 0xed, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xdd, 0x34, 0xa4, 0x03, 0xdd, 0x4d, 0x43, 0xc7, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xdd, 0x34, 0xc4, 0x03, 0xdd, 0x4d, 0xc3, 0x72, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xa3, 0xb5, 0xc6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0x9b, 0x86, 0xd1, 0x40, 0x77, 0xd3, 0x30, 0x3b, 0x28, 0x9b, 0xea, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xdd, 0x34, 0xec, 0x06, 0xba, 0x9b, 0x86, 0xe1, 0xe1, 0x99, 0xc9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xdd, 0x34, 0x4c, 0x07, 0xba, 0x9b, 0x86, 0x8a, 0x83, 0xb6, 0xa1, 0x6e, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x7b, 0xd3, 0x90, 0x0d, 0xb4, 0x37, 0x0d, 0xe5, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x7b, 0xd3, 0x10, 0x0e, 0xb4, 0x37, 0x0d, 0x8b, 0x83, 0xf6, 0x91, 0x08, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xde, 0x34, 0x4c, 0x06, 0xda, 0x9b, 0x86, 0xee, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xbd, 0x69, 0xd8, 0x0c, 0xb4, 0x37, 0x0d, 0xbb, 0x83, 0x13, 0x41, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0x9b, 0x86, 0xe1, 0x40, 0x7b, 0xd3, 0x50, 0xb5, 0xe1, 0x59, 0xbc, 0xc1, 0xc9, 0xc1, 0xeb, 0xc1, 0xe1, 0xc1, 0xd9, 0xc1, 0xd3, 0xc1, 0xc7, 0xc1, 0xc3, 0xc1, 0xe9, 0xc1, 0xcb, 0x41, 0xc1, 0xe0, 0xe1, 0xe0, 0xf2, 0xe0, 0xed, 0xa0, 0x7a, 0x50, 0x30, 0xe8, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xed, 0x4d, 0x43, 0xd7, 0x40, 0x7b, 0xd3, 0x50, 0xbd, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0x37, 0x0d, 0x65, 0x03, 0xed, 0x4d, 0x43, 0xe1, 0xc1, 0x32, 0xec, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0x37, 0x0d, 0x8d, 0x03, 0xed, 0x4d, 0x43, 0xf3, 0x41, 0xdb, 0x50, 0xb7, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xfe, 0xa6, 0x21, 0x39, 0x68, 0x18, 0x92, 0x76, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0xcd, 0x48, 0xdd, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x70, 0x1a, 0x7f, 0xd0, 0x60, 0x21, 0xed, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0xe1, 0x34, 0x04, 0x03, 0x1d, 0x4e, 0x43, 0x78, 0xb0, 0x66, 0x36, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x1d, 0x4e, 0x43, 0x3a, 0xd0, 0xe1, 0x34, 0x2c, 0x36, 0xbc, 0xad, 0x33, 0xe0, 0xb7, 0xd5, 0xcd, 0xa1, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0xc3, 0x69, 0x98, 0x0c, 0x74, 0x38, 0x0d, 0xb3, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x62, 0x6f, 0x6f, 0x67, 0x1d, 0x4e, 0xb1, 0x16, 0xf0, 0xd1, 0xc2, 0xdc, 0xd6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xce, 0xc2, 0xe0, 0xe0, 0xca, 0xc8, 0x40, 0xd0, 0xde, 0xde, 0xdc, 0xe6, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x9a, 0xd9, 0xd0, 0x0d, 0x9a, 0x0c, 0xbe, 0x3d, 0x68, 0xe7, 0x53, 0x76, 0x05, 0x7c, 0x3a, 0x3c, 0xba, 0x79, 0x83, 0xf3, 0x60, 0xc7, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x07, 0x0b, 0xac, 0xa0, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0x41, 0x13, 0xb6, 0xb2, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x35, 0x28, 0x26, 0x31, 0xdb, 0xa0, 0x75, 0x5f, 0xd9, 0xc3, 0x5b, 0x68, 0x87, 0x87, 0x7e, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0x41, 0x5b, 0xc3, 0xb2, 0x1b, 0xb4, 0x79, 0x35, 0xbb, 0x41, 0xb3, 0xc5, 0xb2, 0xad, 0x80, 0x2f, 0xf6, 0xe6, 0xb6, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xb4, 0xc4, 0x7e, 0xdb, 0x00, 0x9e, 0x6a, 0x65, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x2d, 0xc1, 0x63, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0xb4, 0x9e, 0x75, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x85, 0x70, 0xa4, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0x2c, 0xad, 0x67, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x60, 0xed, 0x0b, 0xe9, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x6b, 0x5f, 0x48, 0x0f, 0x1a, 0x6f, 0x97, 0xad, 0x5a, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0xdd, 0x60, 0x69, 0x3d, 0xeb, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x0b, 0xe1, 0x48, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0x37, 0x58, 0x5a, 0xcf, 0x7a, 0xd0, 0x0e, 0x02, 0x6e, 0x6d, 0xd0, 0xe8, 0x04, 0xee, 0xc1, 0xc2, 0x7a, 0xd6, 0x56, 0x83, 0xd6, 0x92, 0x6f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x23, 0x8d, 0x1f, 0x68, 0x48, 0x1a, 0x8a, 0x36, 0x28, 0x3a, 0x8d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x8f, 0x34, 0x64, 0x03, 0xfd, 0x48, 0x43, 0x7e, 0xb0, 0xba, 0x97, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x48, 0xc3, 0x62, 0xa0, 0x1f, 0x69, 0xa8, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0x91, 0x86, 0xc9, 0x40, 0x3f, 0xd2, 0xb0, 0xdc, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7e, 0xa4, 0x61, 0x74, 0xd0, 0xee, 0x0b, 0xee, 0x06, 0x85, 0x60, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x7e, 0xa4, 0x61, 0x75, 0xd0, 0xee, 0x0b, 0xee, 0x41, 0x33, 0x5e, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x47, 0x1a, 0xa6, 0x03, 0xfd, 0x48, 0x43, 0xc3, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x23, 0x0d, 0xe3, 0x83, 0x96, 0x81, 0x70, 0x37, 0x28, 0x04, 0x53, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x23, 0x0d, 0xeb, 0x83, 0x96, 0x81, 0x70, 0x0f, 0xd6, 0x6b, 0x3d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x1f, 0x69, 0xa8, 0x18, 0xe8, 0x47, 0x1a, 0x9a, 0x36, 0x7c, 0xee, 0x32, 0xb8, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x1f, 0x69, 0x28, 0x39, 0x68, 0x3c, 0x0a, 0x77, 0x83, 0x42, 0x30, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x3f, 0xd2, 0xd0, 0x72, 0xd0, 0x78, 0x14, 0xee, 0xc1, 0xc2, 0x4d, 0xef, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x23, 0x0d, 0x55, 0x03, 0xfd, 0x48, 0x43, 0xe3, 0x86, 0xcf, 0x5d, 0x06, 0x9f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x23, 0x0d, 0x65, 0x07, 0x2d, 0x8c, 0xe1, 0x6e, 0x50, 0x08, 0xa6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x47, 0x1a, 0xda, 0x0e, 0x5a, 0x18, 0xc3, 0x3d, 0x58, 0x60, 0xe1, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x86, 0xa4, 0xf1, 0x07, 0x8d, 0x7b, 0xe0, 0x6e, 0x70, 0x1e, 0xec, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x90, 0x34, 0x44, 0x03, 0x0d, 0x49, 0x43, 0xcf, 0x06, 0xcb, 0x21, 0x99, 0x66, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x43, 0xd2, 0x90, 0x0e, 0x34, 0x24, 0x0d, 0x35, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x43, 0xd2, 0x10, 0x0f, 0x34, 0x24, 0x0d, 0x93, 0x83, 0x06, 0x64, 0x62, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x90, 0x34, 0x6c, 0x06, 0x1a, 0x92, 0x86, 0x96, 0x0d, 0x56, 0x08, 0x35, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x21, 0x69, 0x98, 0x0d, 0x34, 0x24, 0x0d, 0xd3, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x48, 0x1a, 0xb6, 0x03, 0x0d, 0x49, 0xc3, 0x7e, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x3d, 0x41, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x1a, 0x92, 0x86, 0x82, 0x81, 0x86, 0xa4, 0xa1, 0x64, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0xbf, 0x30, 0x5b, 0x1d, 0x4e, 0xb1, 0x5a, 0x83, 0xf6, 0xc6, 0x67, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0x45, 0x8d, 0x1f, 0x68, 0x9d, 0x1a, 0x92, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0x45, 0x0d, 0xd9, 0x40, 0x5b, 0xd4, 0x10, 0x1f, 0x34, 0x47, 0x2d, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xb6, 0xa8, 0x61, 0x30, 0xd0, 0x16, 0x35, 0x8c, 0x0e, 0x96, 0x7d, 0xd6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x8b, 0x1a, 0x7f, 0xd0, 0x58, 0x29, 0xee, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xfa, 0xa2, 0x86, 0x6c, 0xa0, 0x2f, 0x6a, 0xc8, 0x0f, 0x96, 0x55, 0x82, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x31, 0x6a, 0x48, 0x06, 0xba, 0xa5, 0x86, 0x2b, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x63, 0xd4, 0x90, 0x0e, 0x34, 0x46, 0x0d, 0x07, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x31, 0x6a, 0xc8, 0x0f, 0xda, 0x36, 0xc6, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x18, 0x35, 0x0c, 0x06, 0x1a, 0xa3, 0x86, 0xd1, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x31, 0x6a, 0x58, 0x0d, 0x34, 0x46, 0x0d, 0xfd, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x63, 0xd4, 0x30, 0x1b, 0x68, 0x8c, 0x1a, 0xe6, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xee, 0xd2, 0xe8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0x51, 0xc3, 0xf4, 0xa0, 0xb1, 0x6e, 0xdc, 0x83, 0x66, 0xbc, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x18, 0x35, 0xec, 0x07, 0x1a, 0xa3, 0x86, 0xfa, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x77, 0x61, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0xa8, 0xa1, 0xe3, 0xa0, 0xc9, 0x74, 0xdc, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0x51, 0x43, 0xc9, 0x40, 0x63, 0xd4, 0x50, 0x74, 0x50, 0x7a, 0xd3, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x31, 0x6a, 0x68, 0x1a, 0x68, 0x8c, 0x1a, 0xda, 0x0e, 0xd6, 0x6b, 0x3d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x31, 0x6a, 0xa8, 0x1b, 0x68, 0x8c, 0x1a, 0xda, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0x46, 0x0d, 0x7d, 0x03, 0x8d, 0x51, 0x43, 0xe5, 0x41, 0x89, 0x58, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0xa8, 0xa1, 0x73, 0xa0, 0x31, 0x6a, 0xe8, 0x3d, 0x58, 0xaf, 0xf5, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xc6, 0xa8, 0xa1, 0x78, 0xa0, 0x31, 0x6a, 0x28, 0x3f, 0x58, 0x60, 0xe1, 0x5c, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x33, 0x6a, 0x48, 0x0e, 0x9a, 0x0a, 0xc6, 0xdd, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0xa3, 0x86, 0x74, 0xa0, 0x33, 0x6a, 0x18, 0x6f, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x8c, 0x1a, 0xe2, 0x81, 0xce, 0xa8, 0x61, 0x71, 0x50, 0x22, 0xd6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x33, 0x6a, 0x98, 0x0c, 0x74, 0x46, 0x0d, 0xb3, 0x83, 0xf5, 0x5a, 0xcf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x8c, 0x1a, 0x76, 0x03, 0x9d, 0x51, 0xc3, 0xf6, 0x60, 0xfd, 0x1e, 0x74, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0xa3, 0x86, 0xe4, 0xa0, 0xa9, 0x60, 0xdc, 0x0d, 0x0f, 0x4a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x35, 0x6a, 0x48, 0x07, 0x5a, 0xa3, 0x86, 0xf8, 0xe0, 0x74, 0x91, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x37, 0x6a, 0x48, 0x0e, 0x9a, 0x0a, 0xc6, 0xdd, 0xf0, 0x15, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0xa8, 0x21, 0x3d, 0x68, 0x2a, 0x18, 0x77, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x8d, 0x1a, 0x16, 0x03, 0xbd, 0x51, 0x43, 0xef, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0xa8, 0x61, 0x32, 0xd0, 0x1b, 0x35, 0xcc, 0x0e, 0x4a, 0x6f, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x46, 0x0d, 0xbb, 0x81, 0xde, 0xa8, 0xa1, 0x66, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x6f, 0xd4, 0x30, 0x1c, 0xe8, 0x8d, 0x1a, 0xb6, 0x07, 0x25, 0x62, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x7a, 0xa3, 0x86, 0xf1, 0x40, 0x6f, 0xd4, 0x50, 0x70, 0xb0, 0x5e, 0xeb, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xbd, 0x51, 0x43, 0xc3, 0x40, 0x6f, 0xd4, 0xd0, 0x72, 0xb0, 0x7e, 0x0f, 0xba, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x46, 0x0d, 0x3d, 0x03, 0xbd, 0x51, 0x43, 0xed, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xde, 0xa8, 0xa1, 0x68, 0xa0, 0x37, 0x6a, 0xe8, 0x3a, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x1b, 0x35, 0x94, 0x0d, 0xf4, 0x46, 0x0d, 0x85, 0x07, 0xeb, 0xb5, 0x9e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x1b, 0x35, 0x34, 0x0e, 0xf4, 0x46, 0x0d, 0xad, 0x07, 0x0b, 0x2c, 0x9c, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x73, 0xd4, 0x90, 0x1c, 0x34, 0x15, 0x8c, 0xbb, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0x47, 0x0d, 0x83, 0x81, 0xe6, 0xa8, 0x61, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0x47, 0x0d, 0x8b, 0x81, 0xe6, 0xa8, 0x61, 0x72, 0x50, 0x50, 0x64, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x39, 0x6a, 0xd8, 0x0c, 0x34, 0x47, 0x0d, 0xa3, 0x83, 0x82, 0x22, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdd, 0x51, 0x43, 0x72, 0xd0, 0x54, 0x30, 0xee, 0x06, 0x05, 0x69, 0xec, 0x06, 0x63, 0x41, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdd, 0x51, 0xc3, 0x64, 0xa0, 0x3b, 0x6a, 0x98, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x78, 0x70, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x77, 0xd4, 0x30, 0x1b, 0xe8, 0x8e, 0x1a, 0x96, 0x07, 0x65, 0x85, 0x7c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xda, 0xa3, 0x86, 0xe4, 0xa0, 0xa9, 0x60, 0xdc, 0x0d, 0x8a, 0x3e, 0xdd, 0x05, 0x8f, 0x37, 0x68, 0x75, 0x1d, 0xf7, 0xa0, 0x28, 0x8e, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x7f, 0xd4, 0x90, 0x0d, 0xf4, 0x48, 0x0d, 0xbd, 0x1b, 0x9c, 0xd8, 0x6f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x1f, 0x35, 0xe4, 0x03, 0xfd, 0x51, 0x43, 0xc5, 0x06, 0x65, 0xc9, 0xfb, 0x1a, 0x94, 0xd7, 0x25, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x3f, 0x6a, 0x58, 0x0d, 0xf4, 0x47, 0x0d, 0xbb, 0x83, 0xb2, 0xa9, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xfd, 0x51, 0xc3, 0x70, 0xa0, 0x3f, 0x6a, 0x68, 0xd8, 0xf0, 0xb6, 0xce, 0x41, 0x93, 0xae, 0xb9, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x90, 0x1a, 0xb2, 0x83, 0x36, 0x69, 0x73, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x06, 0xa9, 0x21, 0x1f, 0x68, 0x90, 0x1a, 0x1a, 0x36, 0xfc, 0xb9, 0x34, 0xb8, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x41, 0x6a, 0x58, 0x1c, 0x34, 0x2a, 0x9d, 0xbb, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x41, 0x6a, 0x98, 0x0c, 0x34, 0x48, 0x0d, 0xb3, 0x83, 0xd2, 0x9b, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x0d, 0x52, 0xc3, 0x6e, 0xa0, 0x41, 0x6a, 0xd8, 0x1e, 0xac, 0xd7, 0x7a, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x83, 0xd4, 0x30, 0x1e, 0x68, 0x90, 0x1a, 0x0a, 0x0e, 0x16, 0x58, 0x38, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x41, 0x6a, 0xe8, 0x38, 0x68, 0x93, 0x36, 0x77, 0xc3, 0xd7, 0x2f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x90, 0x1a, 0x7a, 0x06, 0x1a, 0xa4, 0x86, 0xaa, 0x83, 0x52, 0x9c, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x8b, 0xd4, 0x90, 0x1d, 0xb4, 0x49, 0x9b, 0xbb, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x16, 0xa9, 0x21, 0x1f, 0x68, 0x91, 0x1a, 0x4a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x16, 0xa9, 0x61, 0x30, 0xd0, 0x22, 0x35, 0xec, 0x37, 0x28, 0x4b, 0xde, 0x37, 0x38, 0x5a, 0x6b, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x45, 0x6a, 0x98, 0x0d, 0xb4, 0x48, 0x0d, 0xc3, 0x83, 0xb2, 0xa9, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2d, 0x52, 0xc3, 0x72, 0xa0, 0x45, 0x6a, 0x98, 0x1f, 0xb4, 0xdb, 0x60, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x5a, 0xa4, 0x86, 0x82, 0x81, 0x16, 0xa9, 0xa1, 0xe3, 0xa0, 0xd4, 0x15, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x2d, 0x52, 0x43, 0xcd, 0x40, 0x8b, 0xd4, 0xd0, 0x74, 0x50, 0x8a, 0xd3, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x91, 0x1a, 0xb2, 0x83, 0x36, 0x69, 0x73, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x1e, 0xa9, 0x21, 0x1c, 0xe8, 0x91, 0x1a, 0x16, 0x07, 0xed, 0x23, 0x11, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x47, 0x6a, 0x98, 0x0c, 0xf4, 0x48, 0x0d, 0xb5, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x8f, 0xd4, 0xb0, 0x19, 0xe8, 0x91, 0x1a, 0x76, 0x07, 0x27, 0x82, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x48, 0x0d, 0xc3, 0x81, 0x1e, 0xa9, 0xa1, 0xea, 0xa0, 0x95, 0xc8, 0xdb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x48, 0x0d, 0x5d, 0x03, 0x3d, 0x52, 0x43, 0xeb, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x23, 0x35, 0x94, 0x0d, 0xf4, 0x48, 0x0d, 0x85, 0x07, 0xcb, 0xb0, 0xdf, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x23, 0x35, 0x34, 0x0e, 0xf4, 0x48, 0x0d, 0xa5, 0x07, 0xa5, 0xae, 0x68, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x49, 0x6a, 0x48, 0x0e, 0x9a, 0x0a, 0xc6, 0xdd, 0x60, 0x49, 0x75, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0xa4, 0x86, 0x74, 0xa0, 0x49, 0x6a, 0x28, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0xa4, 0x86, 0x78, 0xa0, 0x49, 0x6a, 0x58, 0x6f, 0x50, 0x96, 0xbc, 0x6f, 0x70, 0xec, 0xbf, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0x93, 0xd4, 0x30, 0x1a, 0x68, 0x92, 0x1a, 0x66, 0x07, 0x65, 0x53, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0xa4, 0x86, 0xdd, 0x40, 0x93, 0xd4, 0x30, 0x3e, 0x68, 0xb7, 0xc1, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0x49, 0x0d, 0xf3, 0x81, 0x26, 0xa9, 0xa1, 0xe7, 0xa0, 0xf1, 0xe3, 0xdc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0x49, 0x0d, 0xc9, 0x41, 0x53, 0xc1, 0xb8, 0x1b, 0x14, 0x9d, 0xc6, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x92, 0x1a, 0xd2, 0x81, 0x2e, 0xa9, 0x61, 0xbc, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x2e, 0xa9, 0x61, 0x33, 0xd0, 0x25, 0x35, 0xac, 0x0e, 0xca, 0xa6, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0x49, 0x0d, 0xb3, 0x81, 0x2e, 0xa9, 0x61, 0x7b, 0xd0, 0x18, 0x81, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x93, 0x1a, 0xb2, 0x81, 0x36, 0xa9, 0x61, 0xb4, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x26, 0x5e, 0x73, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x49, 0x0d, 0xc9, 0x41, 0x53, 0xc1, 0xb8, 0x1b, 0x14, 0x86, 0xaa, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x93, 0x1a, 0xd2, 0x81, 0x56, 0xa9, 0x21, 0xde, 0xe0, 0xc4, 0x7e, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x3e, 0xa9, 0x61, 0x31, 0xd0, 0x27, 0x35, 0xd4, 0x6c, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xb8, 0x89, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x4f, 0x6a, 0xd8, 0x0d, 0xf4, 0x49, 0x0d, 0xcb, 0x83, 0xb2, 0xa9, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x7d, 0x52, 0xc3, 0x74, 0xa0, 0x4f, 0x6a, 0x68, 0xd9, 0xf0, 0xb6, 0xce, 0x06, 0x8b, 0x07, 0xca, 0x37, 0x68, 0xee, 0x1b, 0xf7, 0xa0, 0x28, 0x8e, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xa3, 0xd4, 0x90, 0x1e, 0x34, 0x68, 0xa9, 0xbb, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0x4a, 0x0d, 0x8b, 0x81, 0x46, 0xa9, 0xa1, 0x7b, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0x68, 0x94, 0x1a, 0x26, 0x03, 0x8d, 0x52, 0x43, 0xcf, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x47, 0x6b, 0x8d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0x4a, 0x0d, 0xc3, 0x81, 0x46, 0xa9, 0x61, 0x7a, 0x50, 0x36, 0xd5, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x51, 0x6a, 0xd8, 0x0e, 0x34, 0x4a, 0x0d, 0x35, 0x07, 0x8d, 0xa6, 0xea, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x46, 0xa9, 0xa1, 0x68, 0xa0, 0x51, 0x6a, 0xa8, 0xde, 0xe0, 0xe8, 0x3a, 0xb8, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x28, 0x35, 0x34, 0x0d, 0x34, 0x4a, 0x0d, 0x75, 0x07, 0x6d, 0x7d, 0xbf, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x51, 0x6a, 0xe8, 0x1b, 0x68, 0x94, 0x1a, 0x8a, 0x0f, 0x5a, 0x59, 0xd4, 0xad, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x29, 0x35, 0xe4, 0x03, 0x9d, 0x52, 0x43, 0xc3, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x4e, 0xa9, 0x61, 0x30, 0xd0, 0x29, 0x35, 0xac, 0x0e, 0xda, 0xfa, 0x7e, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xa7, 0xd4, 0x30, 0x1b, 0xe8, 0x94, 0x1a, 0xf6, 0x07, 0xad, 0x2c, 0xea, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x56, 0xa9, 0x21, 0x3d, 0x68, 0xd0, 0x52, 0xf7, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x2b, 0x35, 0x24, 0x07, 0x4d, 0x05, 0xe3, 0x6e, 0x50, 0xec, 0x68, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x57, 0x6a, 0x48, 0x07, 0x7a, 0xa5, 0x86, 0xa2, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x57, 0x6a, 0x88, 0x07, 0x7a, 0xa5, 0x86, 0xf5, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x47, 0x6b, 0x8d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xf4, 0x4a, 0x0d, 0xa3, 0x81, 0x5e, 0xa9, 0x61, 0x76, 0x50, 0x36, 0xd5, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x57, 0x6a, 0xd8, 0x0d, 0xf4, 0x4a, 0x0d, 0xe3, 0x83, 0xc6, 0x08, 0xcc, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xaf, 0xd4, 0x30, 0x1f, 0xe8, 0x95, 0x1a, 0x7a, 0x0e, 0x5a, 0x59, 0xd4, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xcd, 0x52, 0x43, 0x36, 0xd0, 0x2c, 0x35, 0x8c, 0x0e, 0x1a, 0x3f, 0xce, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x2d, 0x35, 0x24, 0x07, 0x4d, 0x05, 0xe3, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0xdd, 0x52, 0x43, 0x34, 0xd0, 0x2d, 0x35, 0xbc, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0xa5, 0x86, 0x6c, 0xa0, 0x5b, 0x6a, 0x48, 0x0f, 0x92, 0xd2, 0x82, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x2d, 0x35, 0xc4, 0x03, 0xdd, 0x52, 0xc3, 0x89, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x5b, 0x6a, 0xc8, 0x07, 0xba, 0xa5, 0x86, 0xd1, 0x41, 0xfb, 0x48, 0x04, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x96, 0x1a, 0x56, 0x03, 0xdd, 0x52, 0xc3, 0x87, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x5b, 0x6a, 0x98, 0x0d, 0x74, 0x4b, 0x0d, 0xd3, 0x83, 0x13, 0x41, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0xa5, 0x86, 0xed, 0x40, 0xb7, 0xd4, 0xd0, 0xb8, 0xe1, 0x59, 0xbc, 0xc1, 0xc9, 0xc1, 0xeb, 0xc1, 0xe1, 0xc1, 0xd9, 0xc1, 0xd3, 0xc1, 0xc7, 0xc1, 0xc3, 0xc1, 0xe9, 0xc1, 0xcb, 0x41, 0xc1, 0xe0, 0xe3, 0xe0, 0xe8, 0xe0, 0xe1, 0xe0, 0xf0, 0xe0, 0xf4, 0xe0, 0xe5, 0xe0, 0xf2, 0xa0, 0x7a, 0x50, 0x30, 0x38, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0xa5, 0x86, 0xca, 0x81, 0x6e, 0xa9, 0xe1, 0xc2, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x2d, 0x35, 0x74, 0x0e, 0x74, 0x4b, 0x0d, 0xbd, 0x07, 0xcb, 0xb0, 0xdf, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x2d, 0x35, 0x14, 0x0f, 0x74, 0x4b, 0x0d, 0x0f, 0x0e, 0x5a, 0x59, 0xd4, 0xad, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xb7, 0xd4, 0x70, 0x63, 0xa0, 0x5b, 0x6a, 0xf8, 0x71, 0x50, 0x50, 0x64, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x5b, 0x6a, 0x38, 0x32, 0xd0, 0x2d, 0x35, 0x3c, 0x39, 0x28, 0x28, 0x32, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x30, 0x35, 0xfe, 0xa0, 0xb1, 0x52, 0xdc, 0x0d, 0x56, 0x08, 0x35, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x61, 0x6a, 0xc8, 0x06, 0x1a, 0xa6, 0x86, 0xfc, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x3a, 0xa6, 0x86, 0x64, 0xa0, 0x63, 0x6a, 0x08, 0x37, 0xbc, 0xad, 0xb3, 0xc1, 0x4a, 0x94, 0xd0, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x32, 0x35, 0x24, 0x03, 0x9d, 0x53, 0x43, 0xb6, 0xc1, 0x0a, 0xa1, 0xa6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0xb4, 0x4c, 0x0d, 0xe9, 0x40, 0xcb, 0xd4, 0xb0, 0x38, 0x58, 0x57, 0x30, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0x9e, 0xa9, 0x21, 0x1b, 0x68, 0x9b, 0x1a, 0xd2, 0x0d, 0x56, 0x08, 0x35, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x67, 0x6a, 0xc8, 0x07, 0x7a, 0xa6, 0x86, 0xcd, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x34, 0x4d, 0x0d, 0xe9, 0x40, 0xd3, 0xd4, 0xb0, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0x9a, 0xa6, 0x86, 0x78, 0xa0, 0x69, 0x6a, 0x98, 0x1c, 0xac, 0x99, 0x0d, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xd3, 0xd4, 0xb0, 0x19, 0x68, 0x9a, 0x1a, 0x76, 0x07, 0x4d, 0x06, 0xdf, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x69, 0x6a, 0x18, 0x0e, 0x34, 0x4d, 0x0d, 0xe3, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x77, 0x68, 0x69, 0x70, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x6b, 0x6a, 0x48, 0x07, 0xba, 0xa6, 0x86, 0xea, 0x0d, 0x56, 0x08, 0x35, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x48, 0x0d, 0xf3, 0x5e, 0xa0, 0x6b, 0x6a, 0x18, 0x0c, 0x74, 0x4d, 0x0d, 0xa3, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x9a, 0x1a, 0x56, 0x03, 0x5d, 0x53, 0x43, 0xe1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x35, 0x35, 0xcc, 0x06, 0xba, 0xa6, 0x86, 0xe9, 0xc1, 0x0a, 0xb4, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0x4d, 0x0d, 0xdb, 0x81, 0xae, 0xa9, 0xa1, 0x60, 0x83, 0x42, 0x30, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0x90, 0x1a, 0xe6, 0xbd, 0x40, 0xd7, 0xd4, 0x30, 0x3e, 0x68, 0x58, 0x79, 0xf7, 0xa0, 0x19, 0x2f, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xa9, 0x61, 0xde, 0x0b, 0x74, 0x4d, 0x0d, 0x0d, 0x03, 0x5d, 0x53, 0x43, 0xdf, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x35, 0x35, 0x54, 0x0c, 0x74, 0x4d, 0x0d, 0x35, 0x07, 0x2b, 0xd0, 0x56, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x35, 0x35, 0xf4, 0x0c, 0x74, 0x4d, 0x0d, 0x4d, 0x07, 0x49, 0x69, 0xc1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x52, 0xc3, 0xbc, 0x17, 0xe8, 0x9a, 0x1a, 0xaa, 0x06, 0xba, 0xa6, 0x86, 0xba, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x38, 0x20, 0x6d, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0x20, 0x35, 0xcc, 0x7b, 0x81, 0xae, 0xa9, 0xa1, 0x71, 0xa0, 0x6b, 0x6a, 0x68, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0xa6, 0x86, 0xca, 0x81, 0xae, 0xa9, 0xa1, 0xf6, 0x60, 0x05, 0x4a, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd4, 0x30, 0xef, 0x05, 0xba, 0xa6, 0x86, 0xde, 0x81, 0xae, 0xa9, 0xa1, 0xf8, 0xa0, 0xa0, 0xc8, 0xac, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xa4, 0x86, 0x79, 0x2f, 0xd0, 0x37, 0x35, 0x64, 0x03, 0x7d, 0x53, 0x43, 0x7c, 0xb0, 0x42, 0xa4, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0x41, 0x6a, 0x98, 0xf7, 0x02, 0x8d, 0x53, 0x43, 0x36, 0xd0, 0x38, 0x35, 0xc4, 0x07, 0x4d, 0x00, 0xee, 0xd6, 0x0a, 0xf8, 0x65, 0x78, 0x70, 0xef, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x40, 0xf7, 0xec, 0x36, 0x38, 0x0f, 0x76, 0x6c, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf6, 0x32, 0x65, 0x37, 0x68, 0x12, 0x82, 0xf6, 0xa0, 0x0d, 0x4f, 0xd9, 0xc3, 0x29, 0xd6, 0x02, 0x3e, 0x5a, 0x9a, 0x5b, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x0f, 0x6a, 0x65, 0x74, 0x2d, 0x68, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x68, 0x6f, 0x6f, 0x6e, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0x41, 0x7b, 0x99, 0xb2, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x96, 0xd8, 0x6f, 0x3b, 0x68, 0xe7, 0x53, 0x76, 0x05, 0xfc, 0x32, 0x3c, 0xb8, 0x7c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xd0, 0xde, 0xde, 0xdc, 0x40, 0xee, 0xd2, 0xe8, 0xd0, 0x40, 0xe8, 0xe4, 0xc2, 0xc6, 0xd2, 0xdc, 0xce, 0x36, 0x38, 0x0f, 0x76, 0x6c, 0xb8, 0xa4, 0x36, 0x68, 0x95, 0x53, 0x76, 0x0d, 0x5a, 0x51, 0x8a, 0x3d, 0x28, 0x72, 0x5a, 0x5b, 0x01, 0xbf, 0x0c, 0x0f, 0x0e, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x8f, 0xbb, 0x34, 0xb7, 0x33, 0x16, 0x90, 0xad, 0xbb, 0x34, 0xb7, 0x33, 0x10, 0xb4, 0xb7, 0x37, 0xb7, 0xae, 0xb9, 0x0d, 0xce, 0x83, 0x1d, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x2d, 0xbe, 0xd9, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0x41, 0x5b, 0xc3, 0xb2, 0x1b, 0xb4, 0x75, 0x6b, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xaf, 0x76, 0xb6, 0x9a, 0x05, 0xfc, 0x32, 0x3c, 0xb8, 0x7a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xee, 0xd2, 0xdc, 0xce, 0x58, 0x40, 0xd0, 0xde, 0xde, 0xdc, 0x58, 0x40, 0xd0, 0xde, 0xde, 0xdc, 0xe6, 0x36, 0x38, 0x0f, 0x76, 0x6c, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb6, 0x86, 0x65, 0x37, 0x68, 0xeb, 0xd6, 0x72, 0x83, 0xa6, 0x37, 0x65, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x6d, 0xf1, 0xcd, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x9a, 0x5d, 0xbe, 0xad, 0x0e, 0xa7, 0x58, 0x6b, 0xd0, 0x54, 0xc2, 0xec, 0x06, 0x2b, 0x84, 0x9a, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x17, 0xba, 0x32, 0xb9, 0x36, 0x16, 0x90, 0x37, 0x38, 0xba, 0xb4, 0x37, 0xb7, 0x30, 0x36, 0x10, 0xb4, 0xb7, 0x37, 0xb7, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x96, 0x2d, 0x6a, 0x1b, 0x34, 0x18, 0x3a, 0xbb, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0xc1, 0xda, 0x17, 0xd2, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x0d, 0x9a, 0x61, 0xb8, 0x5c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0x5d, 0xc3, 0xdb, 0x3a, 0x03, 0x7e, 0x5b, 0xdd, 0xd8, 0xda, 0x41, 0x3b, 0x9f, 0xb2, 0xd5, 0xe1, 0x14, 0x5b, 0xc0, 0xa7, 0xc3, 0x43, 0xc3, 0x37, 0x38, 0x0f, 0x76, 0x6c, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x78, 0xb0, 0x80, 0x66, 0xfa, 0xa0, 0xa9, 0xef, 0xdb, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x06, 0xeb, 0x5d, 0x9e, 0x3a, 0x68, 0x9c, 0xfc, 0xf6, 0xf0, 0xd0, 0xcf, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x68, 0x6b, 0x58, 0x76, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x1e, 0xbc, 0x6c, 0x07, 0xad, 0xab, 0xdf, 0xae, 0x80, 0x2f, 0x17, 0x36, 0xb6, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xcf, 0x96, 0x36, 0x47, 0x07, 0xb2, 0x85, 0xf6, 0xf6, 0xe6, 0x06, 0x82, 0xf6, 0xf6, 0xe6, 0xd6, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0xcc, 0x86, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0x2d, 0x9f, 0xed, 0xa0, 0x61, 0xc9, 0xd9, 0x15, 0xf0, 0xcb, 0xf0, 0xe2, 0xca, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x63, 0x4b, 0x9b, 0xa3, 0x03, 0x79, 0x33, 0x03, 0x71, 0x0b, 0x6b, 0x2b, 0x9b, 0x03, 0xa1, 0x43, 0x2b, 0x73, 0x03, 0x99, 0x83, 0x2b, 0x1b, 0xdb, 0xe0, 0x3c, 0xd8, 0xb1, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xda, 0xcb, 0x94, 0x5d, 0xc3, 0xdb, 0x3a, 0x03, 0x3e, 0x5b, 0x9e, 0x1b, 0xde, 0x41, 0x8b, 0x57, 0xb3, 0xb3, 0x80, 0x8f, 0x96, 0xe6, 0x76, 0x6e, 0x70, 0x1e, 0xec, 0xd8, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xed, 0x65, 0xca, 0x6e, 0xd0, 0xe8, 0xe1, 0xec, 0x41, 0xc3, 0x9b, 0xb2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x1e, 0xbc, 0xd9, 0xa0, 0x29, 0x4c, 0xd9, 0x3a, 0x9c, 0x62, 0x2d, 0xe0, 0xd3, 0xbd, 0x85, 0x91, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xed, 0xa7, 0xf2, 0x36, 0x00, 0x1f, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x70, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x65, 0x78, 0x70, 0x72, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x75, 0xbe, 0xa2, 0x1b, 0x04, 0xd0, 0xd9, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0x32, 0x3c, 0xb8, 0xb0, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x8f, 0xac, 0x4e, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x35, 0x49, 0x37, 0x68, 0x9f, 0xe0, 0x72, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0x80, 0x6c, 0x1b, 0x2e, 0xa9, 0x0d, 0x96, 0x68, 0x8b, 0xae, 0x41, 0x4b, 0xd5, 0xb2, 0x07, 0x05, 0x6c, 0x7e, 0x6d, 0x50, 0xec, 0x68, 0x6e, 0xd0, 0x1c, 0xb5, 0xec, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x29, 0x5e, 0xde, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0x1a, 0xaa, 0x9a, 0x5d, 0xc3, 0x83, 0x92, 0x1b, 0x04, 0x20, 0xdb, 0x86, 0x4b, 0x6a, 0x83, 0x25, 0xda, 0xa2, 0x6b, 0xd0, 0x52, 0xb5, 0xec, 0x41, 0x91, 0xd3, 0x5a, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0xac, 0x10, 0x29, 0x3d, 0x68, 0x04, 0x9a, 0x77, 0x83, 0x16, 0x91, 0x79, 0x5b, 0x01, 0xbf, 0x0c, 0x2f, 0x4e, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x83, 0xee, 0xee, 0x0d, 0x64, 0x0e, 0xae, 0x6c, 0x6c, 0x6e, 0x83, 0xf3, 0x60, 0xc7, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x68, 0x2f, 0x53, 0xf6, 0xa0, 0x85, 0xff, 0xd9, 0xd5, 0xa0, 0x4d, 0x63, 0xd9, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x56, 0xf7, 0xb2, 0xae, 0x41, 0x21, 0x98, 0x7a, 0xd0, 0x84, 0xad, 0xec, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0x96, 0x43, 0x32, 0xcd, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x77, 0x56, 0x27, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x9c, 0x02, 0xe0, 0x1a, 0xfe, 0x5c, 0x1a, 0x5c, 0xdc, 0x20, 0x68, 0x7f, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x01, 0x1b, 0x74, 0xb0, 0x02, 0x00, 0x7a, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0x46, 0x40, 0x07, 0x6b, 0x13, 0x9f, 0x6b, 0xc3, 0x5f, 0x34, 0x1b, 0x34, 0x61, 0x2b, 0xbb, 0x41, 0x90, 0x9e, 0x6e, 0x50, 0xf4, 0xd1, 0xae, 0x41, 0xc0, 0x06, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x55, 0x60, 0xb2, 0x1b, 0x34, 0x92, 0xb5, 0xb9, 0x41, 0xa9, 0x2b, 0xda, 0x1a, 0x84, 0x11, 0xd0, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xe6, 0x24, 0x7b, 0xd0, 0xa2, 0x40, 0x6f, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0xde, 0x5d, 0x1e, 0xbc, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x8b, 0xef, 0xbc, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0x2c, 0xad, 0x67, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x60, 0x31, 0xff, 0xe8, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x06, 0xab, 0xc0, 0x64, 0x0f, 0x1a, 0xed, 0xc4, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0x60, 0x99, 0x93, 0xec, 0x41, 0x23, 0x0c, 0x97, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x06, 0xab, 0xc0, 0x64, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x28, 0x28, 0x32, 0x0f, 0x1a, 0xed, 0xc4, 0x6c, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x65, 0x4e, 0xb2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x14, 0x14, 0x99, 0x07, 0x8d, 0x30, 0x5c, 0xd6, 0x06, 0xc5, 0x8e, 0xe6, 0x06, 0xcd, 0x51, 0xcb, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0xda, 0x54, 0xe8, 0x6d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0xdd, 0xa0, 0x15, 0x9a, 0xde, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0xda, 0xe3, 0xbe, 0xdc, 0x60, 0x31, 0xff, 0xe8, 0x41, 0x4b, 0x9a, 0x97, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x83, 0x26, 0x20, 0x7a, 0x37, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0x96, 0xd6, 0xb3, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0x6e, 0xb0, 0x42, 0xa4, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x83, 0x16, 0x36, 0x7a, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x58, 0xe6, 0x24, 0x7b, 0xd0, 0xbc, 0xe8, 0x65, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x06, 0xcb, 0x9c, 0x64, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x28, 0x28, 0x32, 0x0f, 0x9a, 0x17, 0xbd, 0xac, 0x15, 0xf0, 0xcb, 0xf0, 0xe0, 0xe6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x19, 0x63, 0x7b, 0x9b, 0x2b, 0x23, 0x03, 0x39, 0x0b, 0x83, 0x83, 0x2b, 0x23, 0x03, 0x41, 0x7b, 0x7b, 0x73, 0x9b, 0xdb, 0xe0, 0x3c, 0xd8, 0x71, 0xd0, 0xe8, 0x12, 0xef, 0xe1, 0x14, 0x5b, 0xc0, 0x2f, 0xc3, 0x8b, 0x0b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf8, 0xdf, 0xdc, 0xca, 0x40, 0xe6, 0xe0, 0xca, 0xc6, 0x36, 0x38, 0x0f, 0x76, 0x1c, 0xb4, 0x79, 0x35, 0x7b, 0x38, 0xc5, 0xd6, 0x60, 0x45, 0xb2, 0xcf, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x7e, 0x67, 0x61, 0x70, 0x70, 0x65, 0x64, 0x20, 0x73, 0x70, 0x65, 0x63, 0x73, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xcd, 0x6c, 0xe8, 0x06, 0x4d, 0x06, 0xdf, 0x1e, 0xb4, 0x78, 0x35, 0x7b, 0x38, 0xc5, 0x5a, 0x83, 0x86, 0xd7, 0x6d, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1a, 0x5e, 0xb7, 0x6d, 0x00, 0xbc, 0x69, 0x7b, 0xb3, 0x2b, 0x9b, 0x03, 0x11, 0x0b, 0xa3, 0x1b, 0x43, 0x03, 0x19, 0x7b, 0x6b, 0x6b, 0x2b, 0x73, 0xa3, 0x9b, 0x03, 0xa1, 0x7b, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x19, 0x7b, 0x93, 0x93, 0x2b, 0x1b, 0xa3, 0x03, 0x09, 0x93, 0x6b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0x79, 0x4d, 0xbb, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x1b, 0x2c, 0xdc, 0xf4, 0x6e, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xce, 0x3b, 0xed, 0xc1, 0x5a, 0xd3, 0xee, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x5a, 0xd3, 0xee, 0x0d, 0x5f, 0xe1, 0x6c, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0xa8, 0xbc, 0xed, 0x1a, 0xde, 0xd6, 0x39, 0x68, 0x54, 0xe3, 0x76, 0x83, 0x12, 0x1e, 0x73, 0x0d, 0x16, 0x3d, 0x61, 0x0f, 0x9e, 0x1e, 0x34, 0x2a, 0x6f, 0xbb, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x8d, 0xca, 0xdb, 0x6e, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xa0, 0x51, 0x79, 0xdb, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x80, 0xe7, 0xf6, 0xd6, 0x6e, 0x50, 0x42, 0xc7, 0x6e, 0xb0, 0xbe, 0x13, 0xfa, 0x20, 0x4c, 0xc7, 0xd6, 0xe0, 0xe4, 0x20, 0xb7, 0xe0, 0xe9, 0x41, 0xc3, 0x9a, 0xbd, 0x1b, 0x14, 0x14, 0x99, 0xab, 0x41, 0xb0, 0x99, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x16, 0xce, 0x95, 0x1f, 0x1c, 0x62, 0x3a, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x2b, 0x07, 0xcb, 0x0f, 0x0e, 0x31, 0x1d, 0x6d, 0x70, 0x0c, 0x37, 0xd8, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0xbb, 0xa9, 0xbd, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0xb4, 0xef, 0xd9, 0xbb, 0x06, 0x8d, 0x6a, 0xdc, 0x6e, 0x50, 0xc2, 0x63, 0xae, 0x41, 0x8b, 0xa4, 0xbd, 0x6d, 0xd0, 0xf2, 0x65, 0xef, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xa3, 0xb5, 0xc6, 0x06, 0x65, 0x53, 0xfd, 0x06, 0x2d, 0x5f, 0xf6, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x5a, 0xdd, 0xed, 0x6d, 0x83, 0x96, 0x2f, 0x7b, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x1a, 0x14, 0x9a, 0x2a, 0x1d, 0xb4, 0x1f, 0xdc, 0xbb, 0x41, 0x3b, 0xc4, 0xbd, 0x6b, 0xf8, 0x45, 0x69, 0x83, 0x76, 0x5f, 0x35, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0xeb, 0x96, 0x04, 0x6b, 0xd0, 0xd8, 0x42, 0xc4, 0x86, 0xb7, 0x75, 0x0e, 0xda, 0xde, 0xec, 0x3d, 0x3c, 0xf4, 0x53, 0x2b, 0xe0, 0xcb, 0xd5, 0xb9, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xed, 0x54, 0xf7, 0x36, 0x80, 0x8f, 0x58, 0x5d, 0x1a, 0x1b, 0x19, 0x88, 0x5c, 0x9d, 0x5b, 0xd9, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x94, 0x39, 0x01, 0x07, 0x4b, 0x53, 0x45, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x47, 0x57, 0x17, 0x1f, 0x84, 0xe9, 0xd8, 0x06, 0x6d, 0xd5, 0xf2, 0xb6, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0x6e, 0x90, 0x8e, 0x0e, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x69, 0xbc, 0xb7, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x3f, 0x95, 0xb7, 0x83, 0xc6, 0xd3, 0xc9, 0x6a, 0x35, 0x68, 0x92, 0x05, 0x73, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x6b, 0x9a, 0x59, 0x37, 0x38, 0xb6, 0x39, 0x6e, 0xb0, 0x6c, 0x9a, 0x75, 0x83, 0x63, 0x9b, 0xe3, 0x06, 0x4b, 0xb4, 0x59, 0x37, 0x38, 0xba, 0x0e, 0xae, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0xb2, 0x4b, 0xb8, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x36, 0x04, 0x30, 0xd7, 0xe0, 0xc4, 0x7e, 0xb3, 0xc1, 0x9a, 0x66, 0xd6, 0x0d, 0x8e, 0x6d, 0x8e, 0x1b, 0x2c, 0x9b, 0x66, 0xdd, 0xe0, 0xd8, 0xe6, 0xb8, 0xc1, 0x12, 0x6d, 0xd6, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x25, 0x65, 0x73, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x4e, 0x75, 0x6f, 0x1b, 0x2c, 0x64, 0x10, 0xdd, 0xa0, 0x35, 0x35, 0x83, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0x97, 0xe1, 0xc5, 0xc9, 0xd5, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xbd, 0xf4, 0xdb, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xbe, 0x5c, 0x9d, 0xdb, 0xdb, 0x06, 0x2d, 0xc1, 0x63, 0x6e, 0xd0, 0x56, 0xaf, 0xc1, 0x06, 0x05, 0x45, 0xe6, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xd5, 0xed, 0xd9, 0x6a, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xfc, 0x79, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x0c, 0x85, 0xef, 0x06, 0x6d, 0xf7, 0x65, 0x6e, 0xd0, 0x20, 0xdb, 0xc1, 0x41, 0xbb, 0x18, 0xbe, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0xf4, 0xce, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x54, 0xf0, 0xdd, 0x60, 0x21, 0x1c, 0xe9, 0x06, 0xad, 0x95, 0x1a, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xda, 0x96, 0x9e, 0xad, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x8b, 0xf0, 0xe4, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x2a, 0xf8, 0x6e, 0xb0, 0xf6, 0x85, 0x74, 0x83, 0x76, 0xcd, 0x0d, 0x36, 0x68, 0x07, 0x97, 0xb7, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x6b, 0x36, 0xde, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x2a, 0xf8, 0x6e, 0xb0, 0x58, 0x28, 0x74, 0x83, 0x96, 0x25, 0x0e, 0x0e, 0x9a, 0x90, 0xf1, 0x6d, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xfe, 0x8c, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0xed, 0x71, 0x5f, 0x6e, 0xd0, 0xaa, 0xbe, 0xc1, 0x06, 0xad, 0x5d, 0x9b, 0xd6, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xdd, 0x3a, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0xd2, 0x68, 0x8f, 0x36, 0x68, 0xd1, 0xe4, 0x60, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x65, 0x78, 0x71, 0x63, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xad, 0x3a, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0x06, 0xe0, 0x32, 0x37, 0x68, 0xd7, 0xe7, 0xe0, 0xa0, 0x39, 0x24, 0xdf, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x2b, 0x4f, 0x69, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x2a, 0xf8, 0x6e, 0xb0, 0x98, 0x7f, 0x74, 0x83, 0x66, 0xab, 0x0e, 0x0e, 0x9a, 0x43, 0xf2, 0x6d, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x6c, 0x97, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0x6d, 0x1f, 0x69, 0x6e, 0xd0, 0xde, 0xe0, 0xc1, 0x41, 0x13, 0x32, 0xbe, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0xd6, 0x9e, 0xd3, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x54, 0xf0, 0xdd, 0x60, 0x85, 0x9f, 0xfa, 0x06, 0xad, 0xde, 0x18, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x9a, 0x5d, 0xe4, 0xad, 0x6a, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0xd6, 0x9e, 0xd3, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0xac, 0xf0, 0x53, 0x5f, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x6b, 0x9a, 0x59, 0x37, 0x38, 0xb6, 0x39, 0x6e, 0xb0, 0x6c, 0x9a, 0x75, 0x83, 0x63, 0x9b, 0xe3, 0x06, 0x4b, 0xb4, 0x59, 0x37, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x96, 0x3f, 0xcf, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xd0, 0x42, 0x9e, 0xc2, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0xda, 0xee, 0xcb, 0xdc, 0xa0, 0x59, 0xd3, 0x89, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xd3, 0xdb, 0xbc, 0x55, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x25, 0x65, 0x73, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0xb4, 0x90, 0xa7, 0xb0, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0x85, 0x0c, 0xa2, 0x1b, 0xb4, 0x7f, 0x25, 0x71, 0xd0, 0x84, 0x8c, 0x6f, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0xf4, 0xce, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xd0, 0x42, 0x9e, 0xc2, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0x16, 0xc2, 0x91, 0x6e, 0xd0, 0xf4, 0x9a, 0xc4, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xfd, 0xb8, 0xd9, 0xaa, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x7a, 0xe9, 0xb7, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x5a, 0xc8, 0x53, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0x41, 0x4b, 0xf0, 0x98, 0x1b, 0x34, 0x9e, 0x28, 0x71, 0xd0, 0x8e, 0xa5, 0x6f, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x16, 0x45, 0xd3, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xd0, 0x42, 0x9e, 0xc2, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0x56, 0x45, 0x89, 0x6e, 0xd0, 0x32, 0xad, 0xc4, 0x41, 0x03, 0x80, 0xbe, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xe3, 0x43, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0x0b, 0x79, 0x0a, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x58, 0xba, 0x25, 0xba, 0x41, 0xdb, 0x02, 0x12, 0x07, 0x0d, 0x00, 0xfa, 0xd6, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xd9, 0x25, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x06, 0x2d, 0xe4, 0x29, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x54, 0xf0, 0xdd, 0xa0, 0x0d, 0x01, 0xcc, 0x0d, 0xda, 0x07, 0x92, 0x38, 0x68, 0x0e, 0xc9, 0xb7, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x23, 0xe1, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x68, 0x21, 0x4f, 0x61, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0x8d, 0xcd, 0x5f, 0x6e, 0xd0, 0x26, 0xd2, 0xc4, 0x41, 0x73, 0x48, 0xbe, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x7f, 0x46, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0x0b, 0x79, 0x0a, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x68, 0x8f, 0xfb, 0x72, 0x83, 0x86, 0xc5, 0x25, 0x0e, 0x1a, 0x00, 0xf4, 0xad, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xba, 0x75, 0xb8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x5a, 0xc8, 0x53, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0x41, 0x1a, 0xed, 0xd1, 0x06, 0xad, 0x7e, 0x4d, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0xbf, 0x0c, 0x2f, 0x8e, 0xac, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0xd9, 0x78, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0xa0, 0x85, 0x3c, 0x85, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0x2c, 0x16, 0x0a, 0xdd, 0xa0, 0xed, 0x65, 0x89, 0x83, 0x06, 0x00, 0x7d, 0x6b, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xf2, 0x94, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x16, 0xf2, 0x14, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x2a, 0xf8, 0x6e, 0xb0, 0x98, 0x7f, 0x74, 0x83, 0x86, 0x1d, 0x27, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x8d, 0x19, 0xcf, 0x56, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x96, 0xed, 0xd2, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xd0, 0x42, 0x9e, 0xc2, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0xda, 0x3e, 0xd2, 0xdc, 0xa0, 0xc1, 0xde, 0x89, 0x83, 0x76, 0x2c, 0x7d, 0x6b, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xd0, 0xe1, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0x16, 0xf2, 0x14, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x2a, 0xf8, 0x6e, 0xb0, 0x0c, 0xc0, 0x74, 0x83, 0xa6, 0xf3, 0x25, 0x0e, 0x9a, 0xbe, 0xf7, 0xad, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x22, 0x3c, 0xb9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0xac, 0x7d, 0x21, 0xdd, 0xa0, 0xf5, 0x30, 0x85, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xc3, 0x65, 0xbd, 0xd5, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x5d, 0xef, 0xdb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0x9a, 0x3e, 0xbe, 0xdc, 0xa0, 0x85, 0x3c, 0x85, 0x83, 0x06, 0x2b, 0x7e, 0xab, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x58, 0x2f, 0xfd, 0xb6, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0x6e, 0xd0, 0x12, 0x3c, 0xe6, 0x1a, 0x9c, 0xd8, 0x6f, 0x36, 0x58, 0xd3, 0xcc, 0xba, 0xc1, 0xb1, 0xcd, 0x71, 0x83, 0x65, 0xd3, 0xac, 0x1b, 0x1c, 0xdb, 0x1c, 0x37, 0x58, 0xa2, 0xcd, 0xba, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xa4, 0x6c, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0x0b, 0x19, 0x44, 0x37, 0x68, 0x36, 0x07, 0x61, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x44, 0x0b, 0x6f, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x84, 0x27, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0xb5, 0x2f, 0xa4, 0x1b, 0x34, 0x2b, 0x86, 0x70, 0xd0, 0x66, 0x8a, 0x6f, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xf5, 0x67, 0xb4, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x68, 0x8f, 0xfb, 0x72, 0x83, 0x96, 0x9c, 0x11, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x5f, 0x86, 0x07, 0x47, 0x56, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x85, 0x0e, 0x6f, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x58, 0x06, 0x60, 0xba, 0x41, 0x7b, 0xeb, 0x08, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xd6, 0x21, 0x65, 0xab, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x9a, 0x8d, 0xb7, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0x2c, 0x16, 0x0a, 0xdd, 0xa0, 0xd9, 0x3c, 0x84, 0x83, 0x36, 0x53, 0x7c, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0xe8, 0x9d, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0xc1, 0x42, 0x38, 0xd2, 0x0d, 0x9a, 0x85, 0x44, 0x58, 0xc3, 0xdb, 0x3a, 0x03, 0x7e, 0x19, 0x1e, 0x5c, 0x5a, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0xd6, 0xad, 0xc3, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x54, 0xf0, 0xdd, 0x20, 0x8d, 0xf6, 0x68, 0x83, 0x06, 0x0b, 0x12, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x5f, 0x86, 0x07, 0xe7, 0x56, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xd5, 0xaa, 0xb3, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x68, 0x00, 0x2e, 0x73, 0x83, 0x96, 0x5a, 0x11, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x5f, 0x86, 0x07, 0xd7, 0x56, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x95, 0xa7, 0xb4, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x58, 0xcc, 0x3f, 0xba, 0x41, 0x73, 0x26, 0x09, 0x07, 0xcd, 0xc9, 0xfc, 0x56, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0xa2, 0x77, 0x76, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x60, 0x21, 0x1c, 0xe9, 0x1a, 0x9c, 0xd8, 0x6f, 0x36, 0x58, 0xd3, 0xcc, 0xba, 0xc1, 0xb1, 0xcd, 0x71, 0x83, 0x65, 0xd3, 0xac, 0x1b, 0x1c, 0xdb, 0x1c, 0x37, 0x58, 0xa2, 0xcd, 0xba, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xa4, 0x6c, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0x0b, 0x19, 0x44, 0x37, 0x68, 0xea, 0xf2, 0xe0, 0xa0, 0xcd, 0x14, 0xdf, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xeb, 0xcf, 0x68, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x2a, 0xf8, 0x6e, 0xd0, 0x1e, 0xf7, 0xe5, 0x06, 0x8d, 0xb9, 0x1e, 0x1c, 0x34, 0x25, 0xf4, 0xdb, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xa1, 0xc3, 0xdb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0x96, 0x01, 0x98, 0x6e, 0xd0, 0x98, 0xfc, 0xc1, 0x41, 0x0b, 0x4b, 0xbf, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0xd6, 0x6c, 0xbc, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x54, 0xf0, 0xdd, 0x60, 0xb1, 0x50, 0xe8, 0x06, 0xad, 0x6d, 0x1f, 0x1c, 0xb4, 0x99, 0xe2, 0xdb, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xdd, 0x3a, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0xd2, 0x68, 0x8f, 0x36, 0x68, 0x40, 0x02, 0x61, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x9c, 0x56, 0x6f, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xad, 0x3a, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0x06, 0xe0, 0x32, 0x37, 0x68, 0xbe, 0x04, 0xe1, 0xa0, 0x79, 0xd3, 0xdf, 0x6a, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x16, 0xe1, 0xc9, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0xac, 0x7d, 0x21, 0x5d, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x6b, 0x9a, 0x59, 0x37, 0x38, 0xb6, 0x39, 0x6e, 0xb0, 0x6c, 0x9a, 0x75, 0x83, 0x63, 0x9b, 0xe3, 0x06, 0x4b, 0xb4, 0x59, 0x37, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x16, 0x3a, 0xbc, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x54, 0xf0, 0xdd, 0x60, 0x19, 0x80, 0xe9, 0x06, 0xcd, 0x50, 0x25, 0x1c, 0x34, 0x21, 0xe3, 0xdb, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xb5, 0xea, 0xec, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0x1a, 0x80, 0xcb, 0xdc, 0xa0, 0xf9, 0xb3, 0x84, 0x83, 0x36, 0x53, 0x7c, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0x3c, 0xa5, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0xc1, 0x62, 0xfe, 0xd1, 0x0d, 0x1a, 0xf8, 0x4b, 0x38, 0x68, 0x33, 0xc5, 0xb7, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xb2, 0x5d, 0xda, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0xb4, 0x7d, 0xa4, 0xb9, 0x41, 0xd3, 0x95, 0x09, 0x07, 0x4d, 0xc8, 0xf8, 0xb6, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x7f, 0x46, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0xf6, 0xb8, 0x2f, 0x37, 0x68, 0xa4, 0x27, 0x61, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x65, 0x78, 0x71, 0x6e, 0x55, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0xfe, 0x8c, 0x76, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0xa0, 0x3d, 0xee, 0xcb, 0x35, 0x38, 0xb1, 0xdf, 0x6c, 0xb0, 0xa6, 0x99, 0x75, 0x83, 0x63, 0x9b, 0xe3, 0x06, 0xcb, 0xa6, 0x59, 0x37, 0x38, 0xb6, 0x39, 0x6e, 0xb0, 0x44, 0x9b, 0x75, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xd9, 0x25, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0xda, 0x10, 0xc0, 0xdc, 0xa0, 0xe9, 0xd4, 0x84, 0x83, 0x26, 0x64, 0x7c, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0xc2, 0x93, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0xc1, 0xda, 0x17, 0xd2, 0x0d, 0x5a, 0xee, 0x4d, 0x38, 0x68, 0x33, 0xc5, 0xb7, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x9a, 0x8d, 0xb7, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0x2c, 0x16, 0x0a, 0xdd, 0xa0, 0xcd, 0xf5, 0x84, 0x83, 0xe6, 0x90, 0x7c, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x74, 0x78, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0xc1, 0x32, 0x00, 0xd3, 0x0d, 0x5a, 0xa6, 0x4e, 0x38, 0x68, 0x33, 0xc5, 0xb7, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xf2, 0x48, 0xb8, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0x34, 0x36, 0x7f, 0xb9, 0x41, 0x6b, 0x02, 0x0a, 0x07, 0x4d, 0xc8, 0xf8, 0xb6, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xb7, 0x0e, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0x34, 0xda, 0xa3, 0x0d, 0x5a, 0xb3, 0x50, 0x38, 0x68, 0x42, 0xc6, 0xb7, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xca, 0x53, 0xda, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0x2c, 0xe6, 0x1f, 0xdd, 0xa0, 0x35, 0x15, 0x85, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0x97, 0xe1, 0xc1, 0xa9, 0xd5, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xd9, 0x2e, 0xed, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0xda, 0x3e, 0xd2, 0xdc, 0xa0, 0xf9, 0x26, 0x85, 0x83, 0x26, 0x64, 0x7c, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0x56, 0x9d, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0x41, 0x03, 0x70, 0x99, 0x07, 0x8d, 0x51, 0xfc, 0xb6, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xd1, 0x3b, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0x85, 0x70, 0xa4, 0x07, 0x8d, 0x73, 0xfc, 0x56, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0x6e, 0x1d, 0x6e, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x20, 0x8d, 0xf6, 0x68, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0xac, 0x69, 0x66, 0xdd, 0xe0, 0xd8, 0xe6, 0xb8, 0xc1, 0xb2, 0x69, 0xd6, 0x0d, 0x8e, 0x6d, 0x8e, 0x1b, 0x2c, 0xd1, 0x66, 0xdd, 0xe0, 0xe8, 0x3a, 0xb8, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x76, 0x09, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0x36, 0x04, 0x30, 0x37, 0x68, 0x99, 0x51, 0xe1, 0xa0, 0xcd, 0x14, 0xdf, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x6b, 0xcf, 0x69, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x2a, 0xf8, 0x6e, 0xb0, 0xc2, 0x4f, 0x7d, 0x83, 0x06, 0xad, 0x16, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x4d, 0x5c, 0xce, 0x56, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x25, 0x65, 0x73, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x58, 0xc8, 0x20, 0xba, 0x41, 0xdb, 0xa3, 0x0a, 0x07, 0x6d, 0xa6, 0xf8, 0xb6, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x2f, 0xfd, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0x96, 0xe0, 0x31, 0x37, 0x68, 0x55, 0x57, 0x61, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x68, 0x69, 0x6e, 0x64, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x1d, 0xd6, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0x05, 0x76, 0xa6, 0x1b, 0x34, 0x25, 0xaf, 0xb0, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x2b, 0x82, 0xb7, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x8a, 0xa6, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0xc1, 0xaa, 0x28, 0xd1, 0x0d, 0x1a, 0x52, 0x58, 0x58, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0xe3, 0x2f, 0x5b, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0xd6, 0xf8, 0xd0, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x54, 0xf0, 0xdd, 0x60, 0xe9, 0x96, 0xe8, 0x06, 0x0d, 0xfe, 0x2c, 0x1c, 0x34, 0x5a, 0x07, 0xdc, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xa1, 0xc3, 0xdb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0x96, 0x01, 0x98, 0x6e, 0xd0, 0xac, 0xdb, 0xc2, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xd1, 0xd2, 0xdc, 0xc6, 0x6a, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x3c, 0x12, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0x8d, 0xcd, 0x5f, 0x6e, 0xd0, 0xfe, 0xe4, 0xc2, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x61, 0xc0, 0xd9, 0x6a, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x6c, 0x97, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0x6d, 0x1f, 0x69, 0x6e, 0xd0, 0x78, 0xf4, 0xc2, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x05, 0x4e, 0xde, 0x6a, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xf2, 0x94, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0x8b, 0xf9, 0x47, 0x37, 0x68, 0x5a, 0x77, 0xe1, 0xa0, 0xcd, 0x14, 0xdf, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x0b, 0x02, 0x69, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x2a, 0xf8, 0x6e, 0xd0, 0x2a, 0x2a, 0xe6, 0x06, 0xcd, 0xc0, 0x2f, 0x1c, 0xb4, 0x99, 0xe2, 0x5b, 0xad, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0x7a, 0x91, 0xd9, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x06, 0x88, 0x41, 0xd7, 0xe0, 0xc4, 0x7e, 0xb3, 0xc1, 0x9a, 0x66, 0xd6, 0x0d, 0x8e, 0x6d, 0x8e, 0x1b, 0x2c, 0x9b, 0x66, 0xdd, 0xe0, 0xd8, 0xe6, 0xb8, 0xc1, 0x12, 0x6d, 0xd6, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x15, 0xbd, 0xb3, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x58, 0x08, 0x47, 0xba, 0x41, 0xbb, 0x28, 0x0c, 0x07, 0x8d, 0x6b, 0xfd, 0xb6, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x1d, 0xd6, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0x05, 0x76, 0xa6, 0x1b, 0x34, 0xfc, 0xc3, 0x70, 0xd0, 0x84, 0x8c, 0x6f, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x45, 0xd1, 0xb4, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x58, 0x15, 0x25, 0xba, 0x41, 0xc3, 0x53, 0x0c, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x56, 0x95, 0x68, 0xab, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xba, 0x75, 0xb8, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0xa4, 0xd1, 0x1e, 0x6d, 0xd0, 0x84, 0x1c, 0xc3, 0x41, 0xe3, 0x5a, 0xbf, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0xd6, 0x8b, 0xcc, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x54, 0xf0, 0xdd, 0xa0, 0x01, 0x62, 0xd0, 0x0d, 0x1a, 0x49, 0x64, 0x38, 0x68, 0x0e, 0xc9, 0xb7, 0x5a, 0x83, 0xc2, 0x50, 0x75, 0x83, 0x95, 0xa7, 0xb4, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x8b, 0xf9, 0x47, 0xd7, 0xe0, 0xc4, 0x7e, 0xb3, 0xc1, 0x9a, 0x66, 0xd6, 0x0d, 0x8e, 0x6d, 0x8e, 0x1b, 0x2c, 0x9b, 0x66, 0xdd, 0xe0, 0xd8, 0xe6, 0xb8, 0xc1, 0x12, 0x6d, 0xd6, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x65, 0x97, 0x70, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x68, 0x43, 0x00, 0x73, 0x83, 0x66, 0x40, 0x19, 0x0e, 0x9a, 0x43, 0xf2, 0x6d, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x08, 0x4f, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0x6b, 0x5f, 0x48, 0x37, 0x68, 0x29, 0xa1, 0x61, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x26, 0xa8, 0x6c, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xb6, 0x4b, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0xb6, 0x8f, 0x34, 0x37, 0x68, 0x8e, 0xa4, 0x61, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xc6, 0xe9, 0x6c, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x7f, 0x46, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0xf6, 0xb8, 0x2f, 0x37, 0x68, 0xef, 0xb0, 0xe1, 0xa0, 0x45, 0x0d, 0xad, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x2b, 0x7a, 0x67, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x2a, 0xf8, 0x6e, 0xb0, 0x10, 0x8e, 0x74, 0x83, 0x56, 0x6e, 0x19, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x5f, 0x86, 0x07, 0x07, 0x57, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xd5, 0x61, 0x6d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x58, 0x60, 0x67, 0xba, 0x41, 0x03, 0xd4, 0x0c, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x56, 0x0e, 0x78, 0xab, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x7a, 0x91, 0xd9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0x34, 0x40, 0x0c, 0xba, 0x41, 0x2b, 0xef, 0x0c, 0x07, 0x2d, 0x5a, 0x04, 0xb7, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x14, 0x4d, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0x55, 0x51, 0xa2, 0x1b, 0x34, 0x2b, 0xd4, 0x70, 0xd0, 0x66, 0x8a, 0x6f, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x35, 0x3e, 0xb4, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x58, 0xba, 0x25, 0xba, 0x41, 0x83, 0x70, 0x0d, 0x07, 0x6d, 0xa6, 0xf8, 0xb6, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xb3, 0xf1, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0xc5, 0x42, 0xa1, 0x1b, 0x34, 0x98, 0xd5, 0x70, 0xd0, 0x66, 0x8a, 0x6f, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xd5, 0xaa, 0xb3, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x68, 0x00, 0x2e, 0x73, 0x83, 0xe6, 0xa9, 0x1b, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x5f, 0x86, 0x07, 0x77, 0x56, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x75, 0xbd, 0x6f, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x15, 0x7c, 0x37, 0x68, 0xfa, 0xf8, 0x72, 0x83, 0xc6, 0xfd, 0x1b, 0x0e, 0xda, 0x4c, 0xf1, 0x6d, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xd0, 0xe1, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0xcb, 0x00, 0x4c, 0x37, 0x68, 0x44, 0xb5, 0xe1, 0xa0, 0xcd, 0x14, 0xdf, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xeb, 0xd6, 0xe1, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x2a, 0xf8, 0x6e, 0x90, 0x46, 0x7b, 0xb4, 0x41, 0xf3, 0xc0, 0x0d, 0x07, 0x8d, 0x6b, 0xfd, 0x56, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xb0, 0x6c, 0x97, 0x76, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0xa0, 0xed, 0x23, 0xcd, 0x35, 0x38, 0xb1, 0xdf, 0x6c, 0xb0, 0xa6, 0x99, 0x75, 0x83, 0x63, 0x9b, 0xe3, 0x06, 0xcb, 0xa6, 0x59, 0x37, 0x38, 0xb6, 0x39, 0x6e, 0xb0, 0x44, 0x9b, 0x75, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xd9, 0x25, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0xda, 0x10, 0xc0, 0xdc, 0xa0, 0xf9, 0x0a, 0x87, 0x83, 0xe6, 0x4d, 0x7f, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0xe8, 0x9d, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0xc1, 0x42, 0x38, 0xd2, 0x0d, 0xda, 0x79, 0x72, 0x38, 0x68, 0x61, 0xe9, 0xb7, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x22, 0x3c, 0xb9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0xac, 0x7d, 0x21, 0xdd, 0xa0, 0x8d, 0x34, 0x87, 0x83, 0x16, 0x96, 0x7e, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x8a, 0xa6, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0xc1, 0xaa, 0x28, 0xd1, 0x0d, 0x5a, 0xe9, 0x74, 0x38, 0x68, 0x33, 0xc5, 0xb7, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x1a, 0x1f, 0xda, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0x2c, 0xdd, 0x12, 0xdd, 0xa0, 0xfd, 0x59, 0x87, 0x83, 0x36, 0x53, 0x7c, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0xd9, 0x78, 0x5b, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x60, 0xb1, 0x50, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x5d, 0xf7, 0xde, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xd3, 0xe1, 0xa1, 0xc1, 0x55, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xf5, 0x67, 0xb4, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0xb4, 0xc7, 0x7d, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xd7, 0xbd, 0x77, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x74, 0x6b, 0x6b, 0x74, 0xd5, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xe5, 0x29, 0xed, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x8b, 0xf9, 0x47, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xed, 0xba, 0xf7, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0xb5, 0xbe, 0xad, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x8b, 0xa4, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x20, 0xcd, 0x4f, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xae, 0x7b, 0xef, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x41, 0x35, 0xde, 0xaa, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x42, 0x87, 0xb7, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0x96, 0x01, 0x98, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0x75, 0xef, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x73, 0x46, 0x5b, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x1e, 0x09, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0xc6, 0xe6, 0x2f, 0x37, 0x68, 0x7d, 0xdd, 0xe1, 0xa0, 0x79, 0xd3, 0xdf, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x9f, 0x67, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x68, 0xbb, 0x2f, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xae, 0x7b, 0xef, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xe9, 0xd6, 0xec, 0xe8, 0xaa, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xba, 0x75, 0xb8, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0xd2, 0x68, 0x8f, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xed, 0xba, 0xf7, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x5a, 0x73, 0x95, 0xad, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x08, 0xa4, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0x41, 0xab, 0xa8, 0x98, 0x1b, 0x34, 0x40, 0xf6, 0x70, 0xd0, 0x84, 0x8c, 0x6f, 0xb5, 0x06, 0x85, 0xa1, 0xea, 0x06, 0x0b, 0x02, 0x69, 0x37, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0x5a, 0x45, 0xc5, 0x5c, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x6b, 0x9a, 0x59, 0x37, 0x38, 0xb6, 0x39, 0x6e, 0xb0, 0x6c, 0x9a, 0x75, 0x83, 0x63, 0x9b, 0xe3, 0x06, 0x4b, 0xb4, 0x59, 0x37, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0xf4, 0xce, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0x6e, 0xb0, 0x10, 0x8e, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xae, 0x7b, 0xef, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xf1, 0x0f, 0xde, 0xaa, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x22, 0x3c, 0xb9, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0xd6, 0xbe, 0x90, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0x75, 0xef, 0x5d, 0x83, 0xf3, 0x60, 0xc7, 0x86, 0x4b, 0x6a, 0x83, 0x56, 0x39, 0x65, 0xd7, 0xa0, 0x15, 0xa5, 0xd8, 0x83, 0x02, 0x36, 0xbf, 0x6a, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xae, 0xf7, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0x4d, 0x1f, 0x5f, 0x6e, 0xd0, 0xf0, 0xdd, 0xc3, 0x41, 0x9b, 0x29, 0xbe, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0xd6, 0x8b, 0xcc, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x54, 0xf0, 0xdd, 0xa0, 0x01, 0x62, 0xd0, 0x0d, 0x1a, 0xcf, 0x7d, 0x38, 0x68, 0x33, 0xc5, 0xb7, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x1a, 0x1f, 0xda, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0x2c, 0xdd, 0x12, 0xdd, 0xa0, 0x69, 0xc7, 0x87, 0x83, 0x26, 0x64, 0x7c, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x8a, 0xa6, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0xc1, 0xaa, 0x28, 0xd1, 0x0d, 0x9a, 0x16, 0x7d, 0x38, 0x68, 0x0e, 0xc9, 0xb7, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xf2, 0xe7, 0xd9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0xb4, 0xdd, 0x97, 0xb9, 0x41, 0xf3, 0xe4, 0x0f, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x2f, 0xc3, 0x83, 0xc3, 0xab, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xca, 0x53, 0xda, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x83, 0x0a, 0xbe, 0x1b, 0x2c, 0xe6, 0x1f, 0xdd, 0xa0, 0x79, 0xe8, 0x87, 0x83, 0x26, 0x64, 0x7c, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0xdb, 0xa5, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xa8, 0xe0, 0xbb, 0x41, 0xdb, 0x47, 0x9a, 0x1b, 0x34, 0xdb, 0x00, 0xb1, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x85, 0x5b, 0xb6, 0xaa, 0x56, 0xc0, 0x67, 0x7b, 0x6b, 0x83, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xa4, 0xcb, 0x83, 0x2b, 0x0b, 0x13, 0x63, 0x2b, 0x03, 0x71, 0x0b, 0x6b, 0x2b, 0xdb, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0x37, 0x58, 0x5a, 0xcf, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xff, 0x3e, 0xf3, 0xa0, 0x99, 0x1b, 0xce, 0x0e, 0xa7, 0xd8, 0x1a, 0xb4, 0x95, 0xc9, 0xbb, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0x59, 0xc8, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x50, 0x93, 0x74, 0x83, 0xa6, 0x25, 0x2e, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x6b, 0x66, 0x43, 0x37, 0x58, 0xe3, 0x4c, 0x7a, 0xb0, 0xb0, 0x9e, 0xb5, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x9a, 0x52, 0xda, 0x5a, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x2b, 0x18, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x99, 0x0d, 0x3d, 0x68, 0xf6, 0x69, 0xf6, 0xa0, 0x9d, 0xd5, 0xd5, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xda, 0xff, 0xe8, 0x5c, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0xcb, 0x2a, 0x41, 0x37, 0x58, 0x52, 0x9d, 0xb4, 0xc1, 0xd2, 0x7a, 0xd6, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0x9c, 0x02, 0xe0, 0x86, 0xbf, 0x68, 0x36, 0x58, 0xfe, 0xef, 0xbd, 0xc1, 0xd1, 0x75, 0xf0, 0xf0, 0xd0, 0xcf, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x96, 0x55, 0x82, 0x6e, 0xb0, 0xa4, 0x3a, 0x69, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x5f, 0xae, 0xce, 0x2d, 0x6e, 0x83, 0xd4, 0x4c, 0xd8, 0x83, 0x06, 0xc6, 0xb6, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xed, 0x7f, 0x74, 0xd6, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0xc1, 0xf2, 0x7f, 0xef, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0x6c, 0x10, 0x9e, 0xaa, 0x87, 0xa7, 0x75, 0x0e, 0xa7, 0x58, 0x6b, 0xd0, 0xca, 0xeb, 0xee, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x2b, 0xaf, 0xbb, 0x0d, 0xe0, 0x3d, 0x86, 0x16, 0x06, 0x47, 0x57, 0x26, 0x07, 0x42, 0x56, 0x36, 0xc6, 0x16, 0x26, 0x57, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3c, 0x68, 0xc6, 0x0b, 0x73, 0x83, 0xd6, 0x9d, 0x2f, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe3, 0x41, 0x6b, 0x58, 0xae, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc9, 0x83, 0xb5, 0xa6, 0xdd, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x8c, 0x17, 0xe6, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0xa5, 0x37, 0xfd, 0x06, 0xeb, 0xb5, 0x9e, 0x0f, 0x56, 0x9a, 0x76, 0xb7, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x68, 0xa6, 0x0b, 0xf3, 0xf0, 0xb4, 0xce, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0xb4, 0xce, 0x41, 0xd1, 0x2d, 0xbb, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x6b, 0x57, 0xae, 0x87, 0xa7, 0x77, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0x74, 0x61, 0x1e, 0x14, 0xdd, 0xb2, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x24, 0xbc, 0xa4, 0x0d, 0x8a, 0x1a, 0xf1, 0x0d, 0x9a, 0xe9, 0xc2, 0x5c, 0x0d, 0x16, 0x0f, 0x94, 0xb7, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x6a, 0x7d, 0x5d, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0x59, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xad, 0xef, 0xd7, 0xc3, 0x5b, 0x68, 0xad, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0xbf, 0xb8, 0x1c, 0x7e, 0x11, 0xaa, 0xea, 0xa0, 0xe8, 0x96, 0xdd, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x01, 0x93, 0xd8, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x1f, 0x46, 0xd7, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0xf0, 0x2b, 0x7c, 0x1b, 0xac, 0x10, 0x29, 0x3d, 0x68, 0x76, 0x74, 0xb6, 0x0d, 0x1a, 0x42, 0xdf, 0x6d, 0x35, 0x68, 0x4d, 0xfc, 0x77, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xff, 0xb0, 0x3a, 0xba, 0xb7, 0xb1, 0x37, 0xb7, 0xb9, 0x32, 0x32, 0x10, 0xb4, 0xb7, 0x37, 0xb7, 0xb9, 0x0d, 0xce, 0x83, 0x1d, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0xa0, 0xad, 0x61, 0xd9, 0x0d, 0xda, 0xbc, 0x9a, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0xa0, 0xf9, 0x12, 0x84, 0x83, 0x26, 0x97, 0x78, 0x5b, 0x0d, 0x5a, 0x24, 0xfb, 0xdd, 0xe0, 0x3c, 0xd8, 0xb1, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xda, 0x1a, 0x96, 0xdd, 0xa0, 0xad, 0x5b, 0xcb, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xd0, 0xba, 0x4b, 0x73, 0x3b, 0x63, 0x01, 0x41, 0x7b, 0x7b, 0x73, 0x63, 0x1d, 0x34, 0xbd, 0x29, 0xbb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xfe, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x68, 0x6f, 0x6f, 0x6e, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x06, 0x4d, 0x6f, 0xca, 0x1e, 0x2c, 0x31, 0x29, 0x6d, 0xd6, 0xa0, 0x69, 0x34, 0xe1, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa6, 0xd1, 0x84, 0x1b, 0x80, 0x97, 0xbb, 0x34, 0xb2, 0x32, 0x90, 0x37, 0x39, 0x10, 0xba, 0x30, 0x36, 0x36, 0x90, 0x34, 0x33, 0x10, 0xba, 0x37, 0xb6, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x28, 0x63, 0x9b, 0x2b, 0x03, 0xb9, 0x4b, 0x23, 0x2b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0xe0, 0x2c, 0x64, 0x7a, 0xb0, 0x34, 0x55, 0x74, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x94, 0xd2, 0xd6, 0xc1, 0xd2, 0x54, 0xd1, 0x36, 0x28, 0x76, 0x34, 0x37, 0x68, 0x8e, 0x5a, 0x76, 0x83, 0xd4, 0x4c, 0xd8, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0xf4, 0xa0, 0x19, 0x35, 0xe1, 0xc3, 0x29, 0xd6, 0x1a, 0xb4, 0xd8, 0x13, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x3f, 0x74, 0x65, 0x72, 0x6d, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x2c, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x68, 0x6f, 0x6f, 0x6e, 0x73, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0x41, 0x5b, 0xc3, 0xb2, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x86, 0x68, 0x84, 0x5b, 0xc3, 0xdb, 0x3a, 0x03, 0x3e, 0xdb, 0x1b, 0x1b, 0xdb, 0x41, 0x3b, 0x9f, 0xb2, 0x2b, 0xe0, 0x97, 0xe1, 0xc5, 0xe9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xa2, 0xbd, 0xbd, 0xb9, 0xb1, 0x80, 0xb8, 0x81, 0xcc, 0xc1, 0x95, 0x8d, 0xcd, 0x6d, 0x70, 0x1e, 0xec, 0xd8, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xed, 0x65, 0xca, 0x6e, 0xd0, 0xf4, 0xa6, 0xec, 0x06, 0xcd, 0xed, 0xcd, 0xb6, 0x02, 0x7e, 0x19, 0x5e, 0x1c, 0xbe, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x37, 0xda, 0xdb, 0x9b, 0x1b, 0x0b, 0x08, 0xdd, 0xdd, 0x1b, 0xc8, 0x1c, 0x5c, 0xd9, 0xd8, 0xdc, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xd0, 0x5e, 0xa6, 0xec, 0x06, 0x4d, 0x6f, 0xca, 0x1e, 0xb4, 0xf0, 0x3f, 0xbb, 0x1a, 0xb4, 0xfb, 0xe0, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1f, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x3f, 0x2f, 0x74, 0x61, 0x69, 0x6c, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0x41, 0x5b, 0xc3, 0xb2, 0x1b, 0xb4, 0x79, 0x35, 0xbb, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0xbb, 0xb0, 0x39, 0xb8, 0x0d, 0x9a, 0x14, 0x9f, 0xad, 0x59, 0x83, 0xc6, 0x34, 0x65, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x69, 0xae, 0x0c, 0x2e, 0x4c, 0x2e, 0x8c, 0xee, 0x4d, 0x0e, 0x84, 0x2d, 0x6d, 0x8e, 0x0e, 0xc4, 0x04, 0x84, 0xec, 0x6d, 0x6c, 0x6e, 0x83, 0xe5, 0x90, 0x4c, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0xfb, 0xba, 0xdc, 0xa0, 0xc9, 0xe0, 0xdb, 0x0e, 0xa7, 0x58, 0x6b, 0xb0, 0x9c, 0x65, 0x7c, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x6b, 0x9a, 0x59, 0x37, 0x38, 0xb6, 0x39, 0x6e, 0xb0, 0x6c, 0x9a, 0x75, 0x83, 0x63, 0x9b, 0xe3, 0x06, 0x4b, 0xb4, 0x59, 0x37, 0x38, 0xba, 0x0e, 0xae, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0xda, 0x73, 0xda, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x15, 0x7e, 0xea, 0x6b, 0x70, 0x62, 0xbf, 0xd9, 0x60, 0x4d, 0x33, 0xeb, 0x06, 0xc7, 0x36, 0xc7, 0x0d, 0x96, 0x4d, 0xb3, 0x6e, 0x70, 0x6c, 0x73, 0xdc, 0x60, 0x89, 0x36, 0xeb, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x8a, 0xde, 0xd9, 0x83, 0xf6, 0x23, 0x7d, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xeb, 0xa5, 0xdf, 0x0e, 0x1a, 0xed, 0xf4, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x8a, 0xa6, 0x3d, 0x68, 0x07, 0xd5, 0x77, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xc6, 0x87, 0xf6, 0xa0, 0x65, 0x59, 0xdf, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xfa, 0x33, 0xda, 0x83, 0x16, 0xa5, 0x7d, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xeb, 0xd6, 0xe1, 0x0e, 0x1a, 0xe9, 0xf6, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0xbb, 0x84, 0x3b, 0x68, 0xab, 0xd7, 0x77, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x3c, 0x12, 0xee, 0xa0, 0xf9, 0x63, 0xdf, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xf2, 0xe7, 0xd9, 0x83, 0x76, 0xf7, 0x7c, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x4b, 0xca, 0xe6, 0x0e, 0x5a, 0x3b, 0xf4, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0xd9, 0x78, 0x3b, 0x68, 0x20, 0xdd, 0x77, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xf2, 0x94, 0xf6, 0xa0, 0xc9, 0x79, 0xdf, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xb2, 0x5d, 0xda, 0x83, 0x76, 0xfe, 0x7d, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xeb, 0x45, 0x66, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x2a, 0xf8, 0x6e, 0xd0, 0x00, 0x31, 0xe8, 0x06, 0x6d, 0xd2, 0x4c, 0x1c, 0x34, 0x21, 0xe3, 0xdb, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xa1, 0xc3, 0xdb, 0x41, 0xd3, 0x09, 0xbf, 0xb5, 0x06, 0x85, 0xa1, 0xea, 0x06, 0xeb, 0xa5, 0xdf, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xda, 0x71, 0xd0, 0x0d, 0x5a, 0x82, 0xc7, 0x5c, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x6b, 0x9a, 0x59, 0x37, 0x38, 0xb6, 0x39, 0x6e, 0xb0, 0x6c, 0x9a, 0x75, 0x83, 0x63, 0x9b, 0xe3, 0x06, 0x4b, 0xb4, 0x59, 0x37, 0x38, 0xba, 0x0e, 0xae, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0xfa, 0x33, 0xda, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x42, 0x05, 0xe9, 0x0d, 0xda, 0x7d, 0xd5, 0xdc, 0xa0, 0xfd, 0xa2, 0xd8, 0x35, 0xfc, 0xb9, 0x34, 0xf8, 0x78, 0xb0, 0xc0, 0x0a, 0x7a, 0x0d, 0x7f, 0x2e, 0x0d, 0x4e, 0x1e, 0x2c, 0xb0, 0x82, 0x6e, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xd3, 0x1a, 0xb1, 0xe1, 0x69, 0x9d, 0x0d, 0xef, 0x05, 0x6d, 0x78, 0x7a, 0x67, 0x83, 0x72, 0x5d, 0xf6, 0xa0, 0xac, 0xf3, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x2a, 0xf8, 0x6e, 0xd0, 0x1e, 0xf7, 0xe5, 0x06, 0x2d, 0x39, 0x23, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xda, 0x8c, 0x9f, 0xad, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x58, 0xe8, 0xf0, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x8f, 0x21, 0xbd, 0x41, 0xbb, 0xaf, 0x9a, 0x1b, 0xb4, 0x5f, 0x14, 0xbb, 0x41, 0x13, 0xb0, 0xc3, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x66, 0x5a, 0x23, 0x36, 0x3c, 0xad, 0xb3, 0xe1, 0xbd, 0xa0, 0x83, 0x65, 0xeb, 0xee, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x41, 0x05, 0xdf, 0x0d, 0x96, 0x01, 0x98, 0x6e, 0xd0, 0xde, 0x3a, 0xc2, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x4d, 0x92, 0xe1, 0x5a, 0x83, 0xc2, 0x50, 0x75, 0x83, 0x35, 0x1b, 0x6f, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x65, 0xd3, 0xd1, 0x1b, 0xb4, 0xfb, 0xaa, 0x79, 0xd0, 0x7a, 0x51, 0xec, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xa6, 0x35, 0x62, 0xc3, 0xd3, 0x3a, 0x07, 0x47, 0x57, 0xac, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0x8b, 0x85, 0x42, 0x37, 0x68, 0x36, 0x0f, 0xe1, 0xa0, 0xad, 0x70, 0xdf, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x58, 0x84, 0x27, 0xb7, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x51, 0x1c, 0xbd, 0x41, 0xf3, 0xdc, 0xb7, 0x07, 0xcd, 0xd6, 0x69, 0x6e, 0xf8, 0xc5, 0x65, 0x83, 0x66, 0x5a, 0x23, 0x36, 0xbc, 0x17, 0x74, 0xd0, 0x64, 0x52, 0xe6, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x50, 0xc1, 0x77, 0x83, 0xb5, 0x2f, 0xa4, 0x1b, 0x34, 0x2b, 0x86, 0x70, 0xd0, 0x1c, 0x92, 0xef, 0x1a, 0x14, 0x86, 0xaa, 0x1b, 0xac, 0xe8, 0x9d, 0xdd, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0x0d, 0x8f, 0xde, 0xa0, 0xdd, 0x57, 0xcd, 0x35, 0xfc, 0xb9, 0x34, 0xb8, 0x78, 0xb0, 0xdc, 0xe3, 0xbb, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x4c, 0x6b, 0xc4, 0xe1, 0xf7, 0xb3, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa0, 0x82, 0xef, 0x06, 0x0b, 0xe1, 0x48, 0x37, 0x68, 0x16, 0x12, 0x61, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xfe, 0xc5, 0x70, 0xd5, 0x1a, 0x14, 0x86, 0xaa, 0x1b, 0x2c, 0x8b, 0xa4, 0xdd, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x48, 0xf3, 0x53, 0xdd, 0x60, 0x81, 0x9d, 0xe9, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0xa0, 0xe9, 0x35, 0x89, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0xa2, 0xe3, 0xef, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x79, 0xb0, 0xc0, 0x0a, 0xba, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0x46, 0x9f, 0xaf, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x29, 0x5e, 0xb0, 0x0d, 0x4e, 0x2d, 0x7d, 0x07, 0x65, 0xb6, 0x74, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0xac, 0x99, 0x0d, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0x2c, 0x3b, 0x06, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0xdd, 0x60, 0x81, 0x9d, 0xe9, 0x41, 0x33, 0x78, 0x99, 0x07, 0xcb, 0xeb, 0x4c, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0xb0, 0xa6, 0x99, 0x75, 0x83, 0x63, 0x9b, 0xe3, 0x06, 0xcb, 0xa6, 0x59, 0x37, 0x38, 0xb6, 0x39, 0x6e, 0xb0, 0x44, 0x9b, 0x75, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x14, 0x86, 0xaa, 0x1b, 0xac, 0x12, 0x67, 0xdd, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0x0b, 0x35, 0xdf, 0x60, 0xfd, 0xbb, 0x79, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0x81, 0x15, 0xf4, 0x06, 0xe7, 0xfc, 0xa5, 0x0d, 0x9a, 0x5e, 0x93, 0x58, 0xc3, 0x2f, 0x2e, 0x1b, 0x9e, 0xb8, 0xdb, 0x60, 0x5d, 0x76, 0xdd, 0x06, 0xad, 0x3c, 0x57, 0xb4, 0xc1, 0x92, 0xea, 0xa4, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xce, 0xf9, 0x4b, 0x1b, 0x34, 0xec, 0x38, 0xb1, 0x41, 0xbb, 0x2c, 0x05, 0x1b, 0x9c, 0x1c, 0xe4, 0x36, 0x58, 0x84, 0xd3, 0xbc, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x40, 0xe5, 0xbd, 0x41, 0x93, 0x9a, 0x17, 0x07, 0xed, 0x34, 0x11, 0xaf, 0xc1, 0x51, 0xdf, 0xe4, 0xa0, 0xb1, 0x29, 0xcd, 0x35, 0x38, 0xed, 0x9d, 0x1c, 0xac, 0x91, 0xf2, 0x6e, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0xdd, 0x60, 0x69, 0x3d, 0xeb, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x8b, 0xf9, 0x47, 0x37, 0x68, 0xbb, 0x2f, 0xf3, 0xa0, 0x09, 0xc3, 0xcc, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x3c, 0x71, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0xc1, 0xba, 0xec, 0xba, 0x83, 0x16, 0xbd, 0x2f, 0x6b, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x96, 0x3f, 0xcf, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0xfe, 0xdd, 0x7c, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0xb0, 0x82, 0xde, 0xe0, 0x9c, 0xbf, 0xb4, 0x41, 0xd3, 0x6b, 0x12, 0x1b, 0x34, 0xa7, 0x44, 0xbc, 0xc1, 0xd1, 0x75, 0x70, 0x83, 0xf6, 0xab, 0x88, 0xdb, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x0f, 0x9a, 0x28, 0x23, 0x5e, 0x83, 0xc2, 0x50, 0x75, 0x83, 0x65, 0xbb, 0xb4, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x09, 0x4e, 0xe8, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xe9, 0x35, 0x89, 0x35, 0xfc, 0xe2, 0xb2, 0xe1, 0x89, 0xbb, 0x0d, 0xd6, 0x65, 0xd7, 0x6d, 0x90, 0xe2, 0xe4, 0xd4, 0x06, 0x8d, 0x4d, 0x69, 0x1e, 0x94, 0x75, 0x9e, 0x07, 0x0d, 0x5a, 0x69, 0xae, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0xba, 0x75, 0xb8, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x04, 0x27, 0x74, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xf4, 0x9a, 0xc4, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0xc4, 0xdd, 0x06, 0xeb, 0xb2, 0xeb, 0x0e, 0x16, 0x2b, 0xad, 0x6e, 0xb0, 0x46, 0xca, 0xfb, 0xa0, 0xac, 0xf3, 0x3c, 0x58, 0xfe, 0xc4, 0xda, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x09, 0x4e, 0xe8, 0x06, 0xcd, 0xd4, 0x65, 0x6e, 0xd0, 0xbc, 0x0b, 0x71, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x28, 0xa5, 0x07, 0xcb, 0xa7, 0xbc, 0xab, 0x56, 0x83, 0x46, 0x82, 0x86, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1a, 0x09, 0x1a, 0x6e, 0x00, 0x4f, 0x12, 0x31, 0xb9, 0x31, 0x31, 0x90, 0x30, 0xb6, 0xb4, 0xb0, 0xb9, 0xb2, 0xb9, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x16, 0x6a, 0x92, 0xae, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0x96, 0x01, 0x98, 0x6e, 0xd0, 0x00, 0x5c, 0xe6, 0x06, 0xcd, 0x98, 0xf1, 0x76, 0xd0, 0x8e, 0x2d, 0xf1, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x33, 0x1b, 0xba, 0x41, 0x33, 0x66, 0xbc, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb6, 0x86, 0x65, 0x37, 0x58, 0x5a, 0xcf, 0xba, 0x41, 0x73, 0x14, 0xc3, 0x75, 0xb0, 0xc4, 0xa4, 0xf4, 0x70, 0x8a, 0xad, 0x41, 0x1b, 0x67, 0xbc, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x70, 0x56, 0xe6, 0x56, 0x26, 0x17, 0xc6, 0x06, 0x32, 0x57, 0x06, 0x17, 0x26, 0x17, 0x46, 0xf7, 0x26, 0xb7, 0xe1, 0x83, 0x9c, 0x0d, 0x9a, 0xa3, 0x96, 0xdd, 0x60, 0x85, 0x48, 0xe9, 0xc1, 0x1a, 0x67, 0xd2, 0xc3, 0x29, 0xb6, 0x06, 0xed, 0x09, 0xdf, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xc3, 0x5c, 0x19, 0x5c, 0x98, 0x5c, 0x18, 0xdd, 0x9b, 0x1c, 0xc8, 0xdd, 0x0b, 0x08, 0xd9, 0xdb, 0xd8, 0xdc, 0x86, 0x0f, 0x72, 0x36, 0x68, 0x8e, 0x5a, 0x76, 0x83, 0x86, 0xaa, 0x66, 0x0f, 0xd6, 0x38, 0x93, 0xae, 0x06, 0xad, 0x25, 0xf9, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x3b, 0x07, 0x57, 0x36, 0x06, 0x42, 0x87, 0x56, 0xe6, 0x06, 0x82, 0xf6, 0xf6, 0xe6, 0xb6, 0xc1, 0x79, 0xb0, 0x63, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xb4, 0x97, 0x29, 0xbb, 0x41, 0x9b, 0x57, 0xb3, 0x07, 0xed, 0x7c, 0xca, 0xae, 0x06, 0x0d, 0x11, 0xcb, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x3b, 0x57, 0x06, 0x17, 0x26, 0x17, 0x46, 0x57, 0x46, 0x06, 0xc2, 0x96, 0x36, 0x47, 0xb7, 0xc1, 0x72, 0x48, 0xa6, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x8d, 0x7d, 0x5d, 0x1e, 0xb4, 0x63, 0x4b, 0xbc, 0x1a, 0x34, 0x88, 0x35, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x73, 0xb0, 0xfa, 0x0a, 0x7a, 0xc3, 0x07, 0x39, 0x1b, 0x34, 0x47, 0x2d, 0xbb, 0x86, 0xb7, 0x75, 0x06, 0x7c, 0xba, 0x34, 0x36, 0xb6, 0x83, 0xb6, 0x30, 0x31, 0x57, 0x83, 0x96, 0xda, 0x7e, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x67, 0xae, 0xcc, 0xae, 0x4c, 0x2e, 0x8c, 0x0d, 0x64, 0x6b, 0x0e, 0xae, 0x6c, 0x0c, 0x04, 0xed, 0xed, 0xcd, 0xad, 0x6b, 0x6e, 0x83, 0xf3, 0x60, 0xc7, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x8b, 0x6f, 0x76, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xd0, 0xd6, 0xb0, 0xec, 0x06, 0x6d, 0xdd, 0x5a, 0x6e, 0xd0, 0xf4, 0xa6, 0xec, 0x41, 0xab, 0x3b, 0xbc, 0x1d, 0x4e, 0xb1, 0x35, 0x68, 0xab, 0x62, 0x78, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xd0, 0xde, 0xde, 0xdc, 0x40, 0xee, 0xd2, 0xe8, 0xd0, 0xde, 0xea, 0xe8, 0x40, 0xc8, 0xde, 0xc6, 0xe6, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0x73, 0xd4, 0xb2, 0x6b, 0xb8, 0xa4, 0x36, 0x68, 0x7b, 0xf4, 0x72, 0x0d, 0x5a, 0xa1, 0x72, 0x3d, 0x28, 0x60, 0xf3, 0xdb, 0x70, 0x49, 0x6d, 0xd0, 0x42, 0xc3, 0xe5, 0x41, 0x33, 0x19, 0xc5, 0x87, 0x53, 0xac, 0xd6, 0xa0, 0xbd, 0xc7, 0xe0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0xa5, 0x4b, 0x5b, 0x4b, 0x03, 0x29, 0xc3, 0x83, 0x0b, 0x73, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x31, 0x7b, 0x93, 0x03, 0x29, 0xb9, 0xa3, 0x03, 0x91, 0xab, 0x73, 0x2b, 0x9b, 0xdb, 0xe0, 0x3c, 0xd8, 0xb1, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x68, 0x97, 0x56, 0x76, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x1e, 0x2c, 0x8f, 0xb5, 0x6e, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0xaf, 0x41, 0x90, 0x9e, 0x76, 0xd0, 0xb6, 0xaf, 0xec, 0xe1, 0x2d, 0xb4, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x16, 0xdf, 0xec, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0xa0, 0xad, 0x61, 0xd9, 0x0d, 0x9a, 0x2d, 0x96, 0x3d, 0x68, 0xb4, 0x8f, 0xb6, 0x15, 0xf0, 0xcf, 0xd8, 0xde, 0xe0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x98, 0x2b, 0x83, 0x0b, 0x93, 0x0b, 0xa3, 0x2b, 0x23, 0x03, 0x11, 0xcb, 0x03, 0x99, 0x83, 0x0b, 0x1b, 0x2b, 0xdb, 0x60, 0x39, 0x24, 0xd3, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xc6, 0xbe, 0x2e, 0x37, 0x68, 0xe3, 0x77, 0xb6, 0xd5, 0xa0, 0x65, 0x87, 0xe0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0xd8, 0xba, 0x4b, 0x73, 0x3b, 0x03, 0x41, 0x7b, 0x7b, 0x73, 0xeb, 0x9a, 0x63, 0x01, 0x41, 0x7b, 0x7b, 0x73, 0xdb, 0xe0, 0x3c, 0xd8, 0xb1, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xda, 0xcb, 0x94, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0xc5, 0x37, 0x7b, 0xd0, 0xea, 0x0e, 0xef, 0x41, 0x3b, 0x9f, 0xb2, 0xb3, 0x06, 0x8d, 0xe4, 0xf2, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0xbf, 0xb9, 0x95, 0x81, 0xa0, 0xbd, 0xbd, 0xb9, 0x6d, 0x70, 0x1e, 0xec, 0x38, 0x68, 0x7a, 0x53, 0xf6, 0x70, 0x8a, 0xad, 0x41, 0x1b, 0x15, 0xbe, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x6d, 0x54, 0xf8, 0x36, 0x80, 0x87, 0x5c, 0x9d, 0x5b, 0x19, 0x08, 0x1c, 0x5b, 0xdd, 0xdc, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0xb9, 0xef, 0xde, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xa1, 0xa5, 0xb1, 0x07, 0x61, 0x3a, 0x76, 0xd0, 0x94, 0x78, 0xef, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x41, 0x3a, 0x3a, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xfd, 0xb6, 0xe2, 0x0e, 0x5a, 0x4d, 0xef, 0xed, 0x70, 0x8a, 0xad, 0x41, 0x6b, 0x99, 0xc1, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x86, 0x5f, 0x94, 0x36, 0x68, 0x7a, 0x56, 0x76, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0xaf, 0x41, 0x31, 0x20, 0xdb, 0x41, 0xdb, 0xbe, 0xb2, 0x87, 0xe7, 0x82, 0x0e, 0x9a, 0x11, 0x96, 0x5d, 0x0d, 0xda, 0x23, 0x01, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x73, 0x6e, 0x2d, 0xcd, 0x0d, 0x24, 0xcc, 0x8d, 0x0c, 0x04, 0xed, 0xed, 0xcd, 0x6d, 0x83, 0xf3, 0x60, 0xc7, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x68, 0x2f, 0x53, 0x76, 0x83, 0x06, 0xf7, 0x78, 0x0f, 0xda, 0xf9, 0x94, 0x5d, 0x0d, 0x5a, 0x1a, 0xfa, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xc7, 0xec, 0xad, 0x4e, 0x0e, 0x04, 0xed, 0xed, 0xcd, 0x6d, 0x6e, 0x83, 0xf3, 0x60, 0xc7, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x68, 0x2f, 0x53, 0x76, 0x83, 0xa6, 0x37, 0x65, 0x0f, 0x1a, 0xde, 0x94, 0x5d, 0x0d, 0x9a, 0x33, 0x04, 0xde, 0xe0, 0x3c, 0xd8, 0xb1, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xda, 0xcb, 0x94, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x5f, 0x36, 0xdb, 0x41, 0x3b, 0x9f, 0xb2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0x14, 0x14, 0x99, 0x07, 0xed, 0x7c, 0xca, 0x36, 0x0b, 0xf8, 0x62, 0x6f, 0x6e, 0xfa, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x6b, 0xac, 0xc5, 0x0d, 0xc0, 0x0b, 0x5d, 0x99, 0x5c, 0x5b, 0x0b, 0x5b, 0x98, 0x58, 0x19, 0x1b, 0x5b, 0x19, 0x19, 0x08, 0xda, 0xdb, 0x9b, 0xdb, 0xdc, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x82, 0x13, 0xba, 0x41, 0x41, 0x91, 0x79, 0xb0, 0xfc, 0x89, 0x75, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x16, 0x6a, 0x92, 0xae, 0xe1, 0x83, 0x9c, 0x0d, 0x9a, 0xa3, 0x96, 0x5d, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0xb4, 0x7b, 0xa5, 0x76, 0xd0, 0x92, 0xe6, 0xe5, 0x41, 0x3b, 0xab, 0xab, 0x07, 0xed, 0x13, 0x5c, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x75, 0xad, 0xa4, 0x1b, 0xb4, 0xf1, 0x3b, 0xbb, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x68, 0x6b, 0x58, 0xf6, 0xa0, 0xb9, 0xd0, 0xd9, 0x3a, 0x9c, 0x62, 0x6b, 0xd0, 0x5a, 0x19, 0xf0, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xfc, 0xa8, 0x95, 0xd1, 0x81, 0xa0, 0xbd, 0xbd, 0xb9, 0x81, 0x88, 0x88, 0xbd, 0xb9, 0x89, 0xcc, 0x81, 0xa0, 0xbd, 0xbd, 0xb9, 0x6d, 0x70, 0x1e, 0xec, 0xd8, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6d, 0x0d, 0xcb, 0x6e, 0xd0, 0x26, 0x07, 0xef, 0x06, 0x4d, 0x6f, 0xca, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xda, 0xcb, 0x94, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0xc6, 0x5a, 0xdc, 0x41, 0x3b, 0x9f, 0xb2, 0xad, 0x06, 0xcd, 0xd2, 0x74, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x07, 0xda, 0xdb, 0x9b, 0x1b, 0x48, 0x98, 0x1b, 0x19, 0xc8, 0xd8, 0x9b, 0x5c, 0x19, 0x08, 0x5d, 0x58, 0x1a, 0xdb, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xd0, 0x5e, 0xa6, 0xec, 0x06, 0x4d, 0x6f, 0xca, 0x1e, 0x34, 0x28, 0x34, 0xbc, 0x1a, 0xb4, 0xbd, 0xf5, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x0f, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x68, 0x6f, 0x6f, 0x6e, 0x73, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x5b, 0x7c, 0xb3, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf6, 0x32, 0x65, 0x37, 0x68, 0x7a, 0x53, 0xf6, 0xa0, 0xcd, 0x26, 0xde, 0x0e, 0xa7, 0x58, 0xb5, 0x06, 0xcd, 0x1e, 0x07, 0x6f, 0x70, 0x1e, 0xec, 0xd8, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x7e, 0x51, 0xda, 0xa0, 0xe9, 0x59, 0xd9, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x06, 0x05, 0xc1, 0x6c, 0x07, 0x6d, 0xfb, 0xca, 0x1e, 0x9e, 0x0b, 0x3a, 0x68, 0x46, 0x58, 0x76, 0x16, 0xf0, 0xeb, 0xd8, 0xec, 0xc2, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x65, 0x8c, 0xed, 0x6d, 0x2e, 0xcd, 0xed, 0x0c, 0xa4, 0xa5, 0x05, 0x24, 0xcc, 0x8d, 0x0c, 0x84, 0x2e, 0x8c, 0x8d, 0xed, 0xa0, 0xf1, 0x9e, 0xd8, 0x0d, 0x8a, 0x1d, 0xcd, 0x0d, 0x9a, 0xa3, 0x96, 0xdd, 0x60, 0xd9, 0x67, 0xed, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x57, 0x30, 0xba, 0x41, 0xbb, 0x52, 0xb1, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0xac, 0x10, 0x29, 0xdd, 0xa0, 0x09, 0xc0, 0xdd, 0x5a, 0x0d, 0x1a, 0x14, 0x11, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x97, 0xbb, 0x34, 0xb7, 0xb3, 0x39, 0x90, 0x30, 0x37, 0x32, 0x10, 0xba, 0xbb, 0x37, 0x10, 0xb4, 0xb7, 0x37, 0xb7, 0xb9, 0x0d, 0xce, 0x83, 0x1d, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0xa0, 0xbd, 0x4c, 0xd9, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xf3, 0x54, 0xb1, 0x1d, 0xb4, 0xe1, 0x29, 0xbb, 0x1a, 0x34, 0x25, 0xee, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x2f, 0xda, 0xdb, 0x9b, 0x1b, 0x08, 0x1d, 0x5a, 0x99, 0x1b, 0xc8, 0x1c, 0x5c, 0xd9, 0xd8, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xd0, 0x5e, 0xa6, 0xec, 0x06, 0x4d, 0x6f, 0xca, 0x1e, 0xb4, 0x78, 0x35, 0xbb, 0x1a, 0xb4, 0xe9, 0x47, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x3f, 0x5b, 0xda, 0x1c, 0x1d, 0xc8, 0xd6, 0x1c, 0x5c, 0xd9, 0x18, 0x08, 0xda, 0xdb, 0x9b, 0x5b, 0xd7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x33, 0x1b, 0xba, 0x41, 0x6b, 0x88, 0xbc, 0x1b, 0x34, 0x27, 0x4e, 0xdc, 0xe1, 0x14, 0xab, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0xc0, 0x1f, 0x7b, 0x0b, 0xa3, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1a, 0x68, 0x32, 0x6e, 0x00, 0xcf, 0x39, 0xb8, 0xb2, 0x31, 0x10, 0xb2, 0xb7, 0xb1, 0xb1, 0x37, 0x39, 0xb2, 0xb9, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x96, 0x14, 0xd9, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x5a, 0x22, 0x14, 0xde, 0xa0, 0xfd, 0xa2, 0xd8, 0x83, 0xa6, 0x0f, 0x85, 0x37, 0x38, 0x8e, 0x4d, 0x6c, 0xf8, 0x3c, 0x68, 0x0d, 0x6f, 0xb3, 0x6e, 0xf8, 0x37, 0x67, 0xc3, 0xd3, 0x3b, 0x07, 0xad, 0x5d, 0xb9, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0x40, 0x88, 0x58, 0x83, 0xc6, 0x16, 0x22, 0x36, 0x38, 0x86, 0x1b, 0x1c, 0xb4, 0xe6, 0x2a, 0x7c, 0x78, 0x0b, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x26, 0xa6, 0x30, 0x37, 0x28, 0x4b, 0xde, 0x37, 0x58, 0x04, 0x32, 0xba, 0x41, 0xd9, 0x54, 0xbf, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x3c, 0x50, 0x7e, 0x78, 0x70, 0xa7, 0x0d, 0x5f, 0xe1, 0x6c, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0xc0, 0x14, 0xe6, 0x86, 0xf7, 0x82, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0x60, 0x0a, 0x73, 0xc3, 0xdb, 0x3a, 0x83, 0xd3, 0x07, 0x0d, 0x4c, 0x61, 0xae, 0xe1, 0xf3, 0xa0, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x02, 0x42, 0xc4, 0x1a, 0x34, 0xb6, 0x10, 0xb1, 0xe1, 0x6d, 0x9d, 0xc1, 0xd3, 0x83, 0x06, 0xa6, 0x30, 0x0f, 0x6f, 0xa1, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x5a, 0xac, 0x15, 0x3e, 0x58, 0xfc, 0x66, 0x7b, 0x38, 0xc5, 0x5a, 0x83, 0x26, 0x4e, 0x30, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x9a, 0x38, 0xc1, 0x6c, 0x00, 0x4f, 0xb4, 0xb7, 0x37, 0x37, 0x10, 0xb2, 0xb7, 0xb1, 0xb1, 0x37, 0x39, 0xb2, 0xb9, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x96, 0x14, 0xd9, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x5a, 0x22, 0x14, 0xde, 0xa0, 0xe1, 0x3a, 0xcd, 0x83, 0xa6, 0x0f, 0x85, 0x37, 0x38, 0x8e, 0x4d, 0x6c, 0xf8, 0x3c, 0x68, 0x83, 0x86, 0xc2, 0x8c, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0x5b, 0x12, 0x1c, 0x34, 0x6e, 0x66, 0xbc, 0xe1, 0x13, 0x9b, 0x0d, 0xda, 0x5e, 0x33, 0xde, 0xf0, 0x15, 0xce, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x0d, 0x4c, 0x61, 0x6e, 0x78, 0x2f, 0x68, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x89, 0x3c, 0xe3, 0x35, 0x7c, 0x1e, 0xb4, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0xb7, 0x24, 0x38, 0x68, 0xef, 0xcf, 0xb8, 0x83, 0xd6, 0x07, 0x8d, 0x0f, 0xa7, 0xd8, 0x1a, 0x34, 0x3d, 0x82, 0xb9, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0xe3, 0x3d, 0xb1, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x34, 0x60, 0xd1, 0xb7, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x8b, 0x55, 0x78, 0x0f, 0x9a, 0xad, 0xd3, 0x3c, 0x68, 0x0d, 0x29, 0xf6, 0xa0, 0x5d, 0xa9, 0xd8, 0x59, 0x83, 0x16, 0x0a, 0x5b, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x25, 0x9c, 0xfb, 0x41, 0x13, 0xfe, 0x98, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0xd9, 0xf0, 0x5e, 0xd0, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0x81, 0x20, 0xbf, 0x86, 0xcf, 0x83, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x68, 0x5f, 0xc1, 0xc1, 0xc2, 0x3c, 0xf5, 0xc3, 0x5b, 0x68, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x8a, 0xa1, 0x07, 0xcb, 0xeb, 0x4c, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xad, 0xb8, 0x6c, 0xd6, 0x6a, 0xd0, 0xfc, 0x2e, 0xea, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xf3, 0xbb, 0xa8, 0x0d, 0xe0, 0xc5, 0x56, 0xe7, 0x76, 0x06, 0x32, 0x17, 0xd6, 0x06, 0xc7, 0x56, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x1a, 0x43, 0x46, 0x3d, 0x58, 0x60, 0xe1, 0xbc, 0x86, 0x3f, 0x97, 0x36, 0x68, 0x33, 0x4f, 0x6d, 0x83, 0xa0, 0xfd, 0x59, 0xc3, 0xe7, 0x4a, 0x1b, 0xb4, 0x63, 0x8e, 0x7a, 0xb0, 0x36, 0xf1, 0x79, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x7e, 0x30, 0xea, 0xc1, 0xda, 0xc4, 0xe7, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x93, 0xe0, 0xa8, 0x07, 0x6b, 0x13, 0x9f, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0x0d, 0x45, 0xa3, 0x6e, 0xb0, 0x06, 0xac, 0xba, 0x5a, 0x0d, 0x1a, 0xc9, 0x27, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x24, 0x9f, 0xb8, 0x01, 0x7c, 0xdb, 0xde, 0xd8, 0xc8, 0x40, 0xe8, 0xc2, 0xd8, 0xd8, 0x40, 0xcc, 0xde, 0xe4, 0xda, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0xdd, 0xcb, 0xba, 0x41, 0x13, 0x6d, 0x98, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x0e, 0xc9, 0x34, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x21, 0x39, 0xcc, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xa0, 0xc9, 0xb8, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0x3c, 0x28, 0xb9, 0x41, 0xc3, 0x77, 0x98, 0x07, 0x4d, 0xbe, 0x60, 0x1e, 0xb4, 0xc9, 0x87, 0x59, 0xb3, 0x06, 0xed, 0x0d, 0x64, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xd6, 0x35, 0xf9, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x4d, 0x98, 0x07, 0x4d, 0xf3, 0xb5, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0x0f, 0xee, 0xcd, 0xdc, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0x49, 0x86, 0xc0, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf8, 0xa0, 0xbd, 0x7f, 0xcc, 0x6a, 0xc3, 0x5f, 0x34, 0x1b, 0xb4, 0xf7, 0x1c, 0xbb, 0xc1, 0xd1, 0x86, 0x6f, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0x5f, 0x4e, 0x6e, 0x78, 0x66, 0x72, 0x83, 0x75, 0xab, 0x4c, 0xb3, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0xe0, 0x01, 0xf7, 0x36, 0x87, 0xd6, 0x62, 0x16, 0x96, 0xc6, 0x1e, 0x9e, 0x99, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xee, 0xde, 0xda, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x5a, 0xb9, 0xe3, 0x6c, 0x83, 0xb6, 0x9c, 0x62, 0xdb, 0xa0, 0xe8, 0x34, 0x5e, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0xe3, 0x04, 0x5a, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x35, 0x63, 0xbe, 0x6b, 0x70, 0x0c, 0x37, 0xd8, 0xf0, 0xb9, 0xcb, 0xe0, 0xf5, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x2e, 0xe5, 0xb8, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x0e, 0x19, 0x04, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x8e, 0x6d, 0x6c, 0x1b, 0xb4, 0x63, 0x73, 0xbc, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0xd6, 0x8c, 0xf9, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xb5, 0xbd, 0xe9, 0x07, 0xeb, 0x9a, 0x9f, 0x37, 0x28, 0xe1, 0x31, 0xd7, 0xa0, 0xe9, 0x89, 0xe3, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xed, 0x0a, 0x1d, 0xb7, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x1b, 0x34, 0x72, 0x74, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xbd, 0xc5, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x7a, 0x4e, 0x1e, 0xb4, 0xe6, 0x73, 0xbc, 0x41, 0x3b, 0x36, 0xc7, 0xb5, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xe5, 0x95, 0xe9, 0x07, 0xeb, 0x9a, 0x9f, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x68, 0xbc, 0xe8, 0x78, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0x1d, 0xaa, 0xe3, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xbd, 0xb2, 0x7c, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x16, 0xcb, 0x1b, 0xb4, 0x98, 0x75, 0xdc, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0xd9, 0xa0, 0x5d, 0xa1, 0xe3, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xb0, 0x10, 0x5c, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x83, 0xd7, 0x07, 0x8d, 0x17, 0x1d, 0xaf, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0xeb, 0x3a, 0xae, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x62, 0x1c, 0xd1, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x7a, 0x8b, 0x3b, 0x68, 0xe4, 0xec, 0xb8, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x4f, 0xef, 0xad, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0xed, 0x1c, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0x8b, 0xe5, 0x0d, 0x1a, 0x39, 0x3a, 0x6e, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0xb4, 0x88, 0x76, 0xdc, 0x06, 0x25, 0x3c, 0xe6, 0x1a, 0x34, 0x31, 0x77, 0xdc, 0x06, 0x05, 0x45, 0xe6, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x22, 0x68, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x16, 0xcb, 0x07, 0x4b, 0xe2, 0x86, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf5, 0x41, 0xcb, 0x7c, 0xc7, 0x1d, 0x4e, 0xb1, 0x35, 0x68, 0x02, 0x50, 0x76, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x99, 0x0d, 0xdd, 0xa0, 0x05, 0xc5, 0xd6, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0x41, 0xdb, 0x1d, 0x9a, 0x1b, 0xb4, 0x75, 0x6b, 0x79, 0xd0, 0x08, 0xc3, 0x65, 0x87, 0x53, 0xac, 0x3a, 0x9c, 0x62, 0xab, 0x41, 0xe8, 0x97, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x84, 0x7e, 0x49, 0x03, 0xf0, 0x33, 0xf6, 0xd6, 0x06, 0x97, 0xc6, 0x56, 0x06, 0x32, 0xf6, 0x26, 0x47, 0x06, 0x42, 0xf7, 0x06, 0xe2, 0xf6, 0x36, 0xb6, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x02, 0xdc, 0xf3, 0xc3, 0x0f, 0x35, 0x1b, 0x1e, 0x94, 0xdc, 0xe0, 0x74, 0x24, 0xb2, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x68, 0x7e, 0x44, 0x6a, 0x83, 0xc6, 0xd1, 0xa3, 0x0e, 0x1a, 0x73, 0x90, 0xda, 0x60, 0x89, 0xfd, 0xf6, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xbe, 0x5c, 0x59, 0x58, 0xdb, 0xc1, 0x22, 0xf0, 0xf3, 0x56, 0xc0, 0xb7, 0x2b, 0x9b, 0xa3, 0x37, 0x3c, 0x3e, 0xb2, 0x41, 0x03, 0xad, 0xc7, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0xe1, 0xd4, 0xe9, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x58, 0xd4, 0x75, 0x7a, 0xb0, 0xbc, 0xc2, 0x79, 0x83, 0x53, 0xc3, 0xd1, 0x06, 0x8b, 0xe4, 0x4e, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0xb0, 0xb0, 0x34, 0x76, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd4, 0x24, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0xb8, 0x13, 0x3d, 0x58, 0x6e, 0x27, 0xba, 0x86, 0x07, 0x25, 0x37, 0x68, 0x60, 0xf4, 0x72, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0x4b, 0x67, 0x59, 0x87, 0x53, 0x6c, 0x01, 0xdf, 0x2e, 0xcc, 0xed, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x8a, 0xf8, 0xb8, 0x01, 0xfc, 0xe7, 0xca, 0xe8, 0x40, 0x56, 0xec, 0xc2, 0xe6, 0xe8, 0x40, 0xe0, 0xc2, 0xe4, 0xc2, 0xda, 0xe6, 0x95, 0x00, 0x6f, 0xb1, 0xba, 0x33, 0x1d, 0x10, 0xb2, 0x32, 0xb1, 0xba, 0x33, 0x90, 0xb6, 0x37, 0xb2, 0x72, 0x09, 0xe0, 0x87, 0xec, 0x6d, 0x4c, 0x07, 0x84, 0xec, 0x6d, 0x6c, 0xec, 0x4d, 0x8e, 0x0c, 0x04, 0x2e, 0x4c, 0x6e, 0x2e, 0xcd, 0xed, 0x5c, 0x02, 0x78, 0xb8, 0x2b, 0x93, 0xd3, 0x01, 0xb9, 0x43, 0x2b, 0x93, 0x2b, 0x03, 0xb9, 0x2b, 0x03, 0x09, 0x93, 0x2b, 0x6b, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x6e, 0x6e, 0xf8, 0x60, 0x7e, 0xc3, 0x07, 0xab, 0x1b, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0x17, 0x68, 0x79, 0xf8, 0x60, 0x75, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x22, 0xa2, 0xe5, 0xe1, 0x83, 0xd5, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x2d, 0x12, 0x5a, 0x1e, 0x9c, 0x91, 0x50, 0xdb, 0x20, 0x09, 0x2f, 0x69, 0x83, 0xa2, 0x46, 0x7c, 0x83, 0xe6, 0x82, 0x8f, 0xd7, 0xa0, 0x15, 0xa5, 0xd8, 0x0d, 0x0a, 0x82, 0xd9, 0x0d, 0x02, 0x3c, 0x68, 0x83, 0x62, 0xa4, 0x76, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x17, 0x68, 0x79, 0x10, 0xe0, 0x41, 0x6b, 0xd0, 0x0a, 0x95, 0xeb, 0x06, 0x05, 0xc1, 0xec, 0x06, 0x01, 0x1e, 0xb4, 0x41, 0x91, 0xd3, 0xba, 0xe1, 0x6d, 0x9d, 0x0d, 0x5a, 0x44, 0xb4, 0x3c, 0x08, 0xf0, 0xa0, 0x35, 0x68, 0xe6, 0x29, 0xf6, 0xa0, 0x2d, 0xa7, 0xd8, 0x0e, 0xa7, 0xd8, 0x02, 0xbe, 0x5c, 0x58, 0x9a, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0xf6, 0xff, 0x71, 0x03, 0xf0, 0x00, 0x17, 0x26, 0x37, 0x57, 0x06, 0x72, 0x97, 0x46, 0x87, 0x06, 0x52, 0x02, 0x02, 0x17, 0x46, 0x87, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0xba, 0x99, 0xf4, 0x0d, 0x9a, 0xec, 0x3c, 0x6e, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0xb0, 0x70, 0xde, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xec, 0xc2, 0xf4, 0x83, 0xe6, 0x82, 0x8f, 0x37, 0x58, 0x52, 0xbf, 0xb4, 0xc1, 0x72, 0xa8, 0xf4, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x3a, 0x53, 0x75, 0x83, 0x45, 0xf8, 0xe7, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0xa5, 0xb1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x9a, 0xa4, 0x1b, 0x34, 0xc7, 0x7b, 0xbc, 0x86, 0x07, 0x25, 0x37, 0x68, 0x60, 0xf4, 0x72, 0xc3, 0x25, 0xb5, 0x06, 0xcd, 0x46, 0x20, 0xb7, 0x06, 0xcd, 0x3c, 0xc5, 0x1e, 0x2c, 0x87, 0x4a, 0xaf, 0x9a, 0x35, 0x68, 0x4b, 0xf5, 0x78, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0x2d, 0xd5, 0xe3, 0x06, 0xe0, 0x03, 0x2e, 0x4c, 0x6e, 0xae, 0x0c, 0x64, 0xec, 0x4d, 0x8e, 0x0c, 0x84, 0xee, 0x0d, 0x04, 0xed, 0xed, 0xcd, 0x6d, 0xc3, 0x2f, 0x4a, 0x1b, 0x34, 0xd9, 0x79, 0xbc, 0xe1, 0x2f, 0x9a, 0x0d, 0x16, 0x58, 0x38, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x05, 0x3b, 0xe8, 0x1b, 0x2c, 0x03, 0x3f, 0x5f, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0xd0, 0x7a, 0x5c, 0x2b, 0xe0, 0xdb, 0xa5, 0x8d, 0x95, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0x8d, 0xed, 0xf9, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x60, 0xe1, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0xec, 0xa0, 0x6f, 0xb0, 0x0c, 0xfc, 0x7c, 0x0d, 0x0f, 0x4a, 0x6e, 0xd0, 0x0c, 0xc3, 0xe5, 0x41, 0x73, 0xc1, 0xc7, 0x1d, 0x4e, 0xb1, 0x05, 0x7c, 0xb9, 0x34, 0xb2, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0x31, 0x22, 0xe4, 0x06, 0xe0, 0xa5, 0xcc, 0x8d, 0xac, 0x85, 0xee, 0xad, 0xa5, 0xcc, 0x8d, 0x0c, 0x64, 0xec, 0xad, 0x0d, 0x2e, 0x8d, 0xad, 0x4c, 0x6e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x96, 0xe4, 0xc1, 0x0e, 0x1a, 0x66, 0x40, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0x8b, 0xe1, 0xcb, 0x37, 0x38, 0x17, 0x2e, 0xac, 0x41, 0x5b, 0x20, 0x2b, 0x1b, 0x7e, 0x71, 0xd9, 0xf0, 0xe0, 0xcd, 0x1a, 0x9e, 0xb8, 0xdb, 0xf0, 0x2c, 0xde, 0xe0, 0xf2, 0xe0, 0xe9, 0xe0, 0xe4, 0xe0, 0xe5, 0xa0, 0x7a, 0x50, 0x30, 0x38, 0x3c, 0x78, 0x38, 0xb8, 0x3c, 0xf8, 0x3c, 0x78, 0x3a, 0xb8, 0x7b, 0x50, 0x34, 0xd5, 0xb6, 0x41, 0x41, 0x1a, 0xbb, 0x41, 0xf3, 0x14, 0x52, 0x1b, 0xb4, 0x88, 0x7a, 0xbc, 0xc1, 0xb9, 0x70, 0x61, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0xc4, 0xdd, 0x86, 0x67, 0xf1, 0x06, 0x97, 0x07, 0x4f, 0x07, 0x27, 0x07, 0x2f, 0x07, 0xd5, 0x83, 0x82, 0xc1, 0xc7, 0xc1, 0xdf, 0xc1, 0xdb, 0xc1, 0xe1, 0xc1, 0xd3, 0xc1, 0xd9, 0x83, 0xd6, 0xbe, 0x90, 0xdb, 0x60, 0x25, 0x12, 0xd3, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0xe1, 0x17, 0x97, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x89, 0xbb, 0x0d, 0xcf, 0xe2, 0x0d, 0x2e, 0x0f, 0x9e, 0x0e, 0x4e, 0x0e, 0x5e, 0x0e, 0xaa, 0x07, 0x05, 0x83, 0x8f, 0x83, 0xbf, 0x83, 0xb7, 0x83, 0xc3, 0x83, 0xa7, 0x83, 0xb3, 0x83, 0x97, 0x07, 0x45, 0xbe, 0x6c, 0x07, 0x8d, 0x4d, 0x05, 0xce, 0x02, 0xbe, 0x5c, 0xd9, 0xd8, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0xf6, 0x1f, 0x72, 0x03, 0x78, 0xc3, 0x85, 0xc9, 0xcd, 0x95, 0x81, 0xa0, 0xbd, 0xbd, 0xb9, 0x81, 0x98, 0xa5, 0xb1, 0x95, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x75, 0x33, 0xe9, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0xfd, 0x7f, 0xdc, 0x06, 0xcb, 0xa1, 0xd2, 0xd7, 0x60, 0x75, 0xc0, 0xd2, 0x06, 0xe7, 0xd9, 0xd1, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x05, 0x3f, 0x86, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x1b, 0x2c, 0x87, 0x4a, 0x5f, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0x91, 0x50, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0x8b, 0x4d, 0x97, 0x07, 0x65, 0x9d, 0x67, 0x75, 0x38, 0xc5, 0x66, 0x01, 0xfc, 0xdb, 0xc2, 0xc6, 0xe4, 0xde, 0x5a, 0xca, 0xf0, 0xe0, 0xc2, 0xdc, 0xe6, 0xd2, 0xde, 0xdc, 0xe6, 0x65, 0x00, 0x5e, 0x6a, 0xc4, 0x74, 0x40, 0xda, 0xc2, 0xc6, 0xe4, 0xde, 0x40, 0xca, 0xf0, 0xe0, 0xc2, 0xdc, 0xe6, 0xd2, 0xde, 0xdc, 0x16, 0xf8, 0x30, 0x78, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf8, 0x30, 0xb8, 0x01, 0xbc, 0xd0, 0xde, 0xde, 0xdc, 0x40, 0xca, 0xdc, 0xce, 0xd2, 0xdc, 0xca, 0x36, 0x28, 0xbb, 0x64, 0x07, 0x3e, 0x0c, 0xde, 0xa0, 0x18, 0x94, 0x5d, 0x0d, 0x96, 0x04, 0x67, 0x6f, 0x78, 0x5b, 0xe7, 0x60, 0x41, 0x70, 0xf6, 0x02, 0xbe, 0x5c, 0xd8, 0x5a, 0xb9, 0xe1, 0x6d, 0x9d, 0x0d, 0xda, 0xac, 0x45, 0xae, 0x0d, 0xca, 0x32, 0xec, 0x0d, 0x5a, 0xa0, 0x90, 0x9a, 0x65, 0xd6, 0xa0, 0x3d, 0xdd, 0xb1, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0x1e, 0xac, 0x3c, 0xc1, 0xde, 0xe0, 0xe4, 0x20, 0xb7, 0x41, 0x33, 0x28, 0x52, 0x1b, 0x14, 0x14, 0x99, 0xab, 0xe1, 0x73, 0xa5, 0x83, 0xd6, 0xc4, 0xa9, 0x36, 0x38, 0x86, 0x1b, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x0a, 0x4c, 0xf6, 0xa0, 0x7d, 0xd5, 0xae, 0x83, 0xb2, 0xce, 0x73, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x12, 0xb6, 0xe7, 0x83, 0x43, 0x4c, 0xc7, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0xbf, 0xb8, 0x1c, 0xb4, 0x7c, 0x32, 0xb6, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0xd5, 0xfe, 0xf3, 0xc1, 0x21, 0xa6, 0x63, 0x83, 0x63, 0xb8, 0xc1, 0x41, 0x0b, 0xab, 0x5d, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0x56, 0xf3, 0x48, 0x1f, 0xb4, 0xd6, 0x4e, 0x75, 0xd0, 0x2c, 0x35, 0xf2, 0x1a, 0x34, 0xb8, 0x06, 0xb6, 0xe1, 0x92, 0xda, 0xa0, 0x35, 0xdd, 0xb1, 0x83, 0xe6, 0x0d, 0xbe, 0x5a, 0x0d, 0x96, 0x04, 0x67, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x2c, 0x09, 0xce, 0x6e, 0x00, 0x0f, 0xb2, 0xb2, 0xb9, 0xba, 0xb3, 0x30, 0xb9, 0x32, 0xb9, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0xc0, 0xc2, 0x79, 0x83, 0x20, 0x3d, 0xdd, 0xa0, 0x19, 0x14, 0xa9, 0x35, 0x68, 0x7d, 0x18, 0x79, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x67, 0x92, 0xb0, 0x41, 0xdb, 0xc6, 0xc8, 0x07, 0x65, 0x9d, 0xe7, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x55, 0x8c, 0xce, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0xca, 0x92, 0xf7, 0x05, 0x78, 0xcd, 0xc2, 0xc6, 0xe8, 0xde, 0xe4, 0xf2, 0x36, 0x68, 0x28, 0xb5, 0x6b, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0xc0, 0x0a, 0xfa, 0xa0, 0xad, 0x13, 0xa9, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0x16, 0x75, 0x3e, 0x38, 0xc4, 0x74, 0x6c, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0xbc, 0x69, 0xd7, 0x06, 0x0d, 0xa5, 0x76, 0x6d, 0xb0, 0x80, 0xca, 0xfb, 0xa0, 0x7d, 0xd5, 0xae, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x6b, 0xdc, 0xa6, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x34, 0x45, 0x8f, 0x7c, 0xd0, 0x4c, 0x6a, 0xd7, 0x1a, 0x34, 0xb8, 0x06, 0x76, 0xd0, 0x58, 0x68, 0xd7, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0xe5, 0xd3, 0xce, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0x6f, 0xd9, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x23, 0x0b, 0x1f, 0xb4, 0xaf, 0xda, 0x75, 0x10, 0x9e, 0xaa, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0x96, 0xd6, 0x3c, 0x1f, 0x1c, 0x62, 0x3a, 0x36, 0x38, 0xe7, 0x2f, 0x6d, 0xd0, 0x20, 0x5c, 0xc3, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xb4, 0x3d, 0x3e, 0x20, 0x20, 0x76, 0x3d, 0xae, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x9a, 0x8a, 0xc2, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0xaf, 0xa4, 0x78, 0xd0, 0xce, 0x81, 0xd4, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0x9e, 0x27, 0xd9, 0x60, 0x6d, 0x32, 0xf4, 0x41, 0xcb, 0x12, 0x07, 0x1b, 0x9c, 0xf3, 0x97, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x68, 0xaf, 0xd5, 0x41, 0xcb, 0xd4, 0x09, 0x6b, 0x50, 0x18, 0xaa, 0x6e, 0xd0, 0xb2, 0x48, 0xf2, 0x06, 0x8b, 0xca, 0x93, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xe8, 0x1f, 0xdd, 0x41, 0x3b, 0x4f, 0x0e, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xfa, 0xdb, 0xf0, 0x8b, 0xcb, 0x06, 0xed, 0x26, 0x10, 0x1c, 0x34, 0x55, 0xa5, 0xb9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x41, 0x92, 0x98, 0xf4, 0x41, 0x13, 0x03, 0x9b, 0x1b, 0x14, 0x86, 0xaa, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0xeb, 0xb4, 0x80, 0x80, 0xa4, 0xf5, 0xf8, 0xf9, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0xd6, 0x54, 0x14, 0x36, 0x48, 0x2c, 0xa9, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xda, 0x57, 0xb0, 0x86, 0x1f, 0x61, 0x0e, 0x1a, 0xab, 0x15, 0xdc, 0x60, 0x91, 0x18, 0x6a, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x68, 0x74, 0x3d, 0xa4, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x9a, 0x8a, 0xc2, 0x06, 0x6b, 0x77, 0xeb, 0x0e, 0x5a, 0x59, 0xb3, 0xdc, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x60, 0xe1, 0xbc, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xe3, 0xab, 0x5d, 0x1b, 0xb4, 0x6f, 0x93, 0xbc, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x31, 0xc3, 0x73, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x19, 0xef, 0xae, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x02, 0x0b, 0xe7, 0x0d, 0x0a, 0x82, 0xd9, 0x0d, 0x9a, 0x35, 0xef, 0x5a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5e, 0xb6, 0xfc, 0xfc, 0xf6, 0xd2, 0x5c, 0xe0, 0x5c, 0xce, 0xca, 0xdc, 0xfa, 0x40, 0xf6, 0xe4, 0xca, 0xe6, 0xfa, 0xba, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xb4, 0xaf, 0x60, 0x83, 0x76, 0x8a, 0x92, 0x37, 0x68, 0xbb, 0xbc, 0xab, 0x0d, 0x0e, 0x5a, 0x9e, 0x6d, 0x70, 0xce, 0x5f, 0xda, 0xa0, 0x11, 0xd5, 0x86, 0x35, 0x28, 0x0c, 0x55, 0xd7, 0xe0, 0x9c, 0xbf, 0xb4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x40, 0x7b, 0xf5, 0x0e, 0x5a, 0x53, 0x51, 0x58, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0xe6, 0xf0, 0xe0, 0xce, 0x41, 0x92, 0xc3, 0xd3, 0x06, 0xe7, 0xfc, 0xa5, 0x0d, 0x1a, 0x37, 0x49, 0x5e, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0xe6, 0x60, 0x7d, 0xea, 0xd7, 0x41, 0x3b, 0x6b, 0x96, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xd0, 0xd0, 0xe3, 0x83, 0x62, 0x07, 0xb2, 0x07, 0xe7, 0x92, 0xe6, 0x02, 0xe7, 0x72, 0x56, 0xe6, 0xd6, 0x97, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0x0d, 0xc2, 0x35, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x2b, 0x29, 0xd8, 0xa0, 0x65, 0x8f, 0xe4, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0xb3, 0xe6, 0x5d, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x8a, 0xf5, 0x6c, 0xc9, 0x95, 0xcd, 0x75, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0xd6, 0x54, 0x14, 0x36, 0x68, 0x0e, 0xef, 0xf3, 0xa0, 0xa1, 0xb5, 0xe4, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0xc0, 0xc2, 0x79, 0x83, 0xc2, 0x50, 0x75, 0x83, 0x96, 0x45, 0x92, 0x37, 0x58, 0x54, 0x9e, 0xb4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0xc0, 0xff, 0x00, 0x1d, 0xb4, 0xfa, 0xef, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x68, 0xab, 0x2e, 0x79, 0xc3, 0x2f, 0x2e, 0x1b, 0x24, 0x39, 0x3c, 0x1d, 0x94, 0x75, 0x9e, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x1c, 0x3e, 0x0f, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xed, 0x95, 0x14, 0x6c, 0xd0, 0x1c, 0xde, 0x67, 0x1b, 0x14, 0x86, 0xaa, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0xea, 0xb4, 0x80, 0x80, 0xb4, 0xb8, 0x84, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x66, 0x85, 0x1a, 0x36, 0x68, 0x1d, 0x3d, 0x6d, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x5e, 0x49, 0xc1, 0x06, 0x49, 0x0e, 0x4f, 0xb5, 0xc1, 0x39, 0x7f, 0x69, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0xf4, 0x46, 0xfa, 0xa0, 0x39, 0x93, 0x84, 0x35, 0x3c, 0x4f, 0xb2, 0x41, 0x1b, 0x7b, 0xc9, 0x07, 0x4b, 0x18, 0xb5, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf8, 0xc2, 0x40, 0x40, 0x56, 0x5c, 0xc2, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xee, 0x33, 0x79, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xac, 0x50, 0xc3, 0x06, 0x0d, 0xcd, 0xa7, 0x1d, 0x34, 0x03, 0x9b, 0xdc, 0x41, 0x59, 0xe7, 0xb9, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0x2c, 0x26, 0x7a, 0x70, 0x88, 0xe9, 0x38, 0x68, 0x68, 0x1e, 0x79, 0x0d, 0x9a, 0x5e, 0x46, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0x99, 0x24, 0x6c, 0xd0, 0xf0, 0x33, 0xf2, 0x41, 0x59, 0xe7, 0xb9, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x59, 0xf1, 0xf3, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x0b, 0x89, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xaf, 0xa4, 0x60, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0xa0, 0xa9, 0xb1, 0xc0, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x4d, 0x3b, 0x3e, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0x2f, 0x41, 0x38, 0x68, 0x5f, 0xb5, 0xab, 0x83, 0xb2, 0xce, 0x73, 0x0d, 0x5a, 0x8e, 0x46, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0x99, 0x24, 0x1c, 0xb4, 0x7c, 0x32, 0xb6, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0xa9, 0x04, 0xf4, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x0b, 0x89, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xaf, 0xa4, 0x60, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0xa0, 0xe1, 0x11, 0xcb, 0x0e, 0x9a, 0xcc, 0x4e, 0x5e, 0x83, 0x76, 0xff, 0xbd, 0x0e, 0x1a, 0x0b, 0xed, 0x5a, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0xe0, 0x07, 0xfa, 0xe0, 0x10, 0xd3, 0xb1, 0xc1, 0xd1, 0x86, 0x6f, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x5f, 0x4e, 0x6e, 0x10, 0x9e, 0xaa, 0x1b, 0x9c, 0xf3, 0x97, 0x36, 0x68, 0xd7, 0xe7, 0x60, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xf4, 0x9a, 0xc4, 0x41, 0x2a, 0xd0, 0xd8, 0x86, 0xaf, 0x70, 0x36, 0x28, 0x76, 0x34, 0xd7, 0xa0, 0x98, 0xc4, 0x5c, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0x56, 0xf4, 0x3e, 0x38, 0xc4, 0x74, 0x6c, 0xb0, 0x6c, 0x0a, 0xfa, 0xa0, 0x19, 0x14, 0xa9, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x0b, 0x79, 0x0a, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0x8d, 0x01, 0xe5, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0xeb, 0x96, 0x04, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0xa0, 0x8d, 0x01, 0xe5, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0x63, 0x40, 0x79, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0x6d, 0x0c, 0x28, 0xd7, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x25, 0x52, 0xf5, 0x1a, 0xfe, 0xa2, 0xd9, 0x60, 0xf9, 0xbf, 0xf7, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x5b, 0x04, 0x7d, 0xd0, 0x0c, 0x8a, 0xd4, 0x86, 0x5f, 0x94, 0x36, 0x58, 0x17, 0x6a, 0xbe, 0xe1, 0x2f, 0x9a, 0x0d, 0x16, 0x58, 0x41, 0x6f, 0x50, 0x90, 0xc6, 0x6e, 0xb0, 0xca, 0x73, 0x76, 0x83, 0x66, 0xea, 0x32, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0xc3, 0x8e, 0x13, 0x1b, 0xb4, 0xcb, 0x52, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xf5, 0x6b, 0x62, 0x83, 0x06, 0xe0, 0x32, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x6d, 0x2f, 0x4b, 0x1c, 0x34, 0x94, 0x23, 0x5a, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0x96, 0x85, 0x41, 0x1f, 0x1c, 0x62, 0x3a, 0x36, 0x38, 0xe7, 0x2f, 0x6d, 0xd0, 0x88, 0x6a, 0xc3, 0x06, 0xad, 0x93, 0x79, 0x6d, 0x70, 0xce, 0x5f, 0xda, 0xa0, 0xad, 0x5e, 0x83, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x4e, 0xec, 0x37, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x90, 0xb8, 0x51, 0xbb, 0x41, 0xd9, 0x54, 0x7f, 0xd0, 0xe6, 0xef, 0xd7, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xcb, 0xfb, 0xa0, 0x0f, 0xd6, 0xef, 0x41, 0x6f, 0x50, 0x18, 0xaa, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0xc5, 0x7d, 0xd0, 0x1b, 0x9c, 0xd8, 0x6f, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0x20, 0x71, 0xa3, 0x76, 0x83, 0xb2, 0xa9, 0x7e, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x2c, 0xee, 0x83, 0x6e, 0xc3, 0x2f, 0x4a, 0x1b, 0x34, 0x3d, 0x6d, 0xb9, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x3b, 0xa2, 0x5d, 0x1b, 0x34, 0x1a, 0x3c, 0xb0, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0xa7, 0x6e, 0x58, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0x78, 0xf0, 0xf4, 0xa0, 0x1d, 0xd1, 0xae, 0x83, 0xb2, 0xce, 0x73, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x34, 0x0b, 0xa5, 0xbc, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xed, 0x88, 0x76, 0x6d, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xa0, 0x1d, 0xd1, 0xae, 0x5a, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x04, 0x11, 0xfa, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x51, 0x6d, 0xd8, 0xa0, 0x85, 0xd5, 0xae, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xbb, 0xe6, 0x06, 0x07, 0x6d, 0xe6, 0x76, 0xb5, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x01, 0x2c, 0xf4, 0xc1, 0x21, 0xa6, 0x63, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0x6d, 0xf5, 0x1a, 0x6c, 0x50, 0x50, 0x64, 0x6e, 0x70, 0xb4, 0xe1, 0x5b, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa4, 0xb4, 0xe0, 0x0d, 0x0a, 0x8a, 0xcc, 0x83, 0x54, 0xa0, 0xb1, 0x83, 0xb2, 0xcc, 0x73, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xb6, 0xa0, 0x6e, 0x50, 0x36, 0xd5, 0xaf, 0x41, 0x21, 0x98, 0x7a, 0xb0, 0xd6, 0xb4, 0xbb, 0x0d, 0x92, 0xd2, 0x82, 0x0f, 0xda, 0x57, 0xed, 0x5a, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0xcc, 0x17, 0xfa, 0xe0, 0x10, 0xd3, 0xb1, 0xc1, 0x39, 0x7f, 0x69, 0x83, 0x66, 0x85, 0x1a, 0x36, 0x68, 0x67, 0xcd, 0x72, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0x6d, 0xf5, 0x1a, 0x6c, 0x50, 0x50, 0x64, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xd0, 0x74, 0x3f, 0xd7, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x70, 0x13, 0xdd, 0xa0, 0x6c, 0xaa, 0x3f, 0x68, 0x33, 0xb7, 0xeb, 0x60, 0xed, 0x9e, 0xfa, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x0d, 0x51, 0x74, 0xad, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x65, 0x0b, 0xea, 0x41, 0xa3, 0x88, 0xca, 0x1b, 0x24, 0xa5, 0x05, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0x0a, 0xc1, 0xd4, 0x83, 0xc5, 0xa1, 0xdd, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0x1c, 0x34, 0x74, 0xa7, 0x7c, 0x50, 0x96, 0x79, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0xfb, 0x8e, 0xca, 0x1b, 0x24, 0xa5, 0x05, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x0f, 0x5e, 0x1f, 0x34, 0x44, 0xd1, 0xb5, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x6c, 0x41, 0xdd, 0xa0, 0x6c, 0xaa, 0x5f, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0x6d, 0x7d, 0x2a, 0x77, 0xd0, 0xd0, 0x9d, 0x72, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0x96, 0x3b, 0x43, 0x1f, 0x1c, 0x62, 0x3a, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0xb3, 0x42, 0x0d, 0x1b, 0xb4, 0xb3, 0x66, 0xb9, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xd7, 0xdc, 0xe0, 0xa0, 0x7d, 0xd5, 0xae, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0xe7, 0x86, 0x3e, 0x38, 0xc4, 0x74, 0x6c, 0xf8, 0xc5, 0x65, 0x83, 0xa6, 0x53, 0x13, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0x56, 0x1d, 0x1c, 0xb4, 0x8c, 0xe5, 0xd5, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x85, 0xed, 0xd0, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0xce, 0xf9, 0x4b, 0x1b, 0x34, 0xa2, 0xda, 0xb0, 0x41, 0xeb, 0x64, 0x5e, 0x1b, 0x9c, 0xf3, 0x97, 0x36, 0x68, 0x90, 0xed, 0x60, 0x83, 0x82, 0x22, 0x73, 0x83, 0xa3, 0x0d, 0xdf, 0x06, 0xcd, 0xad, 0x29, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x36, 0xe4, 0x94, 0x37, 0x48, 0x4a, 0x0b, 0x3e, 0x68, 0x33, 0xb7, 0x6b, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0xe2, 0x7d, 0xe8, 0x83, 0x43, 0x4c, 0xc7, 0x06, 0xe7, 0xfc, 0xa5, 0x0d, 0x5a, 0x53, 0x33, 0xd8, 0xa0, 0x85, 0xd5, 0xae, 0x0d, 0x8e, 0x36, 0x7c, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x82, 0x22, 0x73, 0x83, 0xe6, 0xd6, 0x94, 0x3b, 0x68, 0xb3, 0x58, 0x79, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x02, 0x8c, 0xe8, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xbe, 0x49, 0xe1, 0xa0, 0xc9, 0x57, 0xe5, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xab, 0x7a, 0xa2, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x85, 0xd5, 0xae, 0x0d, 0x1a, 0x0b, 0xed, 0xda, 0xa0, 0xd5, 0xdf, 0xaf, 0x35, 0xbc, 0xad, 0x33, 0xf8, 0x7c, 0xd0, 0x0c, 0x8a, 0x54, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0xb7, 0x45, 0x1f, 0x1c, 0x62, 0x3a, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x0b, 0xab, 0x5d, 0x1b, 0x34, 0x16, 0xda, 0x75, 0xd0, 0xe6, 0xef, 0xd7, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x75, 0x29, 0xd1, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x58, 0x68, 0xd7, 0x41, 0xfb, 0xaa, 0x5d, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0x16, 0x6d, 0x45, 0x1f, 0x1c, 0x62, 0x3a, 0x0e, 0x1a, 0x02, 0x44, 0x5b, 0x83, 0x86, 0x60, 0x61, 0x37, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x16, 0x58, 0x38, 0x6f, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0xf8, 0x6a, 0xd7, 0x06, 0x0d, 0xcc, 0x6a, 0x6e, 0xf8, 0xc5, 0x65, 0x83, 0xb6, 0xcb, 0xbb, 0x36, 0x68, 0x06, 0x2b, 0xb9, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xeb, 0x32, 0xa3, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0x0b, 0x2c, 0x9c, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x7c, 0xb5, 0x6b, 0x83, 0x35, 0x54, 0xce, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xb4, 0x02, 0xde, 0xb5, 0x41, 0xdb, 0xe5, 0x5d, 0x07, 0x6d, 0xf6, 0x2b, 0xaf, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xb4, 0x35, 0x7d, 0x70, 0x88, 0xe9, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0x59, 0x28, 0x1c, 0x34, 0x5d, 0xda, 0xb5, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0xdd, 0x69, 0xf4, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x4c, 0x9d, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x23, 0xbd, 0xe0, 0xa0, 0x7d, 0xd5, 0xae, 0x0d, 0x9a, 0x33, 0x49, 0x38, 0x68, 0x19, 0xcb, 0x6b, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x8a, 0xe2, 0xe8, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x16, 0x12, 0x61, 0x83, 0xc6, 0x42, 0xbb, 0x36, 0x68, 0xf8, 0x19, 0xb9, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x0b, 0x15, 0xa4, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x59, 0x48, 0x84, 0x0d, 0x5a, 0x58, 0xed, 0xda, 0xa0, 0xb1, 0xd0, 0xae, 0x0d, 0x5a, 0xfd, 0xfd, 0xda, 0xa0, 0x49, 0x71, 0xe5, 0x83, 0xb2, 0xce, 0x73, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x7a, 0x0c, 0xe9, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x16, 0x12, 0x61, 0x83, 0x16, 0x56, 0xbb, 0x36, 0x68, 0x2c, 0xb4, 0x6b, 0x83, 0x56, 0x7f, 0xbf, 0x0e, 0xca, 0x3a, 0xcf, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xcb, 0xa6, 0xa3, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x59, 0x48, 0x84, 0x0d, 0x5a, 0x58, 0xed, 0xda, 0xa0, 0xb1, 0xd0, 0xae, 0x83, 0xb2, 0xce, 0x73, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0xda, 0xf0, 0xe8, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xb0, 0x20, 0x61, 0x83, 0x25, 0x8c, 0xda, 0x07, 0x2d, 0x63, 0x79, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x74, 0x22, 0x7d, 0x70, 0x88, 0xe9, 0xd8, 0x60, 0x51, 0x79, 0xd2, 0x06, 0x2d, 0xb5, 0x22, 0x6c, 0xd0, 0xc2, 0x6a, 0xd7, 0x06, 0x8d, 0x85, 0x76, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xd0, 0x44, 0xd6, 0xd6, 0xc1, 0x71, 0x79, 0x66, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0xf0, 0xb9, 0xd2, 0xc1, 0xba, 0xdc, 0xe8, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x10, 0xf8, 0x6b, 0x83, 0x82, 0x22, 0x73, 0x83, 0x12, 0x1e, 0x73, 0xc1, 0xe9, 0x83, 0x06, 0x81, 0xbf, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x4c, 0x7c, 0xb9, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x05, 0x26, 0x7b, 0xd0, 0x4a, 0xd9, 0xd6, 0x41, 0x59, 0xe7, 0xb9, 0x86, 0xb7, 0x75, 0x06, 0x4f, 0x0f, 0x1a, 0x04, 0xfe, 0xea, 0xa0, 0xac, 0xf3, 0xdc, 0xa0, 0x30, 0x54, 0x5d, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x96, 0x89, 0x2f, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xab, 0xc0, 0x64, 0x37, 0x68, 0x25, 0x75, 0xab, 0x83, 0xb2, 0xce, 0xf3, 0xa0, 0xb5, 0xb3, 0xe5, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0xf6, 0x3d, 0xb7, 0xd6, 0xa0, 0x41, 0xe0, 0xaf, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0xe0, 0xb5, 0xdc, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0xc5, 0xf4, 0xd1, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0a, 0x8a, 0xcc, 0x83, 0x56, 0x7f, 0xbf, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x0d, 0xc2, 0x35, 0x6c, 0xd0, 0x58, 0x68, 0xd7, 0x06, 0xed, 0x64, 0x2c, 0xb7, 0xc1, 0x39, 0x7f, 0x69, 0x83, 0x46, 0x54, 0x1b, 0x36, 0x68, 0x2c, 0xb4, 0x6b, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0xcd, 0x99, 0x24, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x1b, 0xb4, 0xb0, 0xda, 0xb5, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x3b, 0xf2, 0xbc, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x1b, 0x90, 0x3a, 0x28, 0xeb, 0x3c, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x52, 0xf5, 0x06, 0xad, 0xfe, 0x7e, 0xad, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x1a, 0x00, 0xe8, 0x83, 0xe5, 0x65, 0xce, 0x1b, 0x7e, 0x71, 0xd9, 0xe0, 0x74, 0x91, 0xb1, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x10, 0xae, 0x61, 0x83, 0x86, 0xe6, 0xd3, 0x0e, 0x0e, 0xbd, 0x7c, 0xb5, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x1d, 0xb1, 0xf4, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x4c, 0x9d, 0xb0, 0x41, 0x8b, 0x3c, 0xcb, 0x07, 0x6d, 0xe6, 0x76, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x25, 0x2f, 0x7d, 0x70, 0x88, 0xe9, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0x2d, 0x53, 0x27, 0x6c, 0xd0, 0x78, 0x69, 0xd7, 0x41, 0x9b, 0xb9, 0x5d, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0xb1, 0x4c, 0x1f, 0x1c, 0x62, 0x3a, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0x4b, 0x6a, 0x01, 0xff, 0x4c, 0x2e, 0x0d, 0xee, 0xa0, 0x79, 0x83, 0xaf, 0x83, 0xf6, 0x55, 0xbb, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0x21, 0x9c, 0x3e, 0x38, 0xc4, 0x74, 0x6c, 0x70, 0xce, 0x5f, 0xda, 0xa0, 0xc1, 0x9f, 0x85, 0x35, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0xc6, 0xdd, 0xc1, 0x42, 0xcd, 0xe0, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0xcf, 0xac, 0x6c, 0xdd, 0xa0, 0x2c, 0x79, 0x5f, 0xc0, 0x37, 0x2b, 0x1b, 0x5b, 0xdb, 0xa0, 0xb1, 0xfb, 0xae, 0x83, 0xf6, 0x55, 0xbb, 0x36, 0x28, 0x06, 0x64, 0xd7, 0xa0, 0x09, 0xe0, 0xe5, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x4d, 0x69, 0x15, 0x6c, 0xb0, 0x2e, 0xbb, 0x6e, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1f, 0x34, 0x6e, 0xbc, 0xdc, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xd7, 0xdc, 0x60, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x2c, 0x24, 0xc2, 0x06, 0xed, 0xa3, 0x27, 0xaf, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0x76, 0x7c, 0x58, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x08, 0xd7, 0xb0, 0x41, 0x43, 0xf3, 0x69, 0x07, 0xed, 0xab, 0x76, 0x75, 0x50, 0xd6, 0x79, 0x76, 0xd0, 0x58, 0x68, 0xd7, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0xb5, 0x9a, 0xd3, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xe0, 0xcf, 0xc2, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x31, 0xde, 0xe5, 0x83, 0x56, 0x5d, 0x95, 0x0f, 0xda, 0xcc, 0xed, 0x5a, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x46, 0x76, 0xfa, 0xe0, 0x10, 0xd3, 0xb1, 0xc1, 0x39, 0x7f, 0x69, 0x83, 0x86, 0x14, 0x16, 0xd6, 0xa0, 0x30, 0x54, 0x5d, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0xa4, 0x81, 0x36, 0x28, 0x0c, 0x55, 0x37, 0x68, 0x4c, 0xfe, 0x60, 0x83, 0x73, 0xfe, 0xd2, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x29, 0xad, 0x82, 0x83, 0x86, 0xee, 0x94, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0x43, 0x3f, 0x1c, 0xb4, 0x99, 0xdb, 0xb5, 0x41, 0x61, 0xa8, 0xba, 0x41, 0x03, 0x12, 0x08, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x9e, 0xdb, 0x9b, 0xb8, 0xe1, 0x2f, 0x9a, 0x0d, 0xd6, 0x35, 0x3f, 0x1f, 0x14, 0x14, 0x99, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0xeb, 0x9a, 0x9f, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x10, 0xf8, 0x6b, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x96, 0xfe, 0x72, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa6, 0xb4, 0x0a, 0x36, 0x48, 0x4a, 0x0b, 0x5e, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0x4d, 0xa1, 0x2d, 0xb7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x1e, 0xfa, 0x61, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x34, 0x85, 0xb6, 0x5c, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x07, 0x4d, 0xda, 0x2d, 0x77, 0xd0, 0xa4, 0xb8, 0xf2, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0xf5, 0xda, 0xd3, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xaa, 0xae, 0xc2, 0x06, 0x2d, 0xac, 0x76, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x92, 0xd2, 0x82, 0x0f, 0x4e, 0x0b, 0x34, 0x1b, 0x14, 0x14, 0x99, 0x07, 0x6d, 0xe6, 0x76, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x32, 0x3f, 0x7d, 0x70, 0x88, 0xe9, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0x0a, 0x35, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0xfc, 0x59, 0xd8, 0xa0, 0x85, 0xd5, 0xae, 0x83, 0xa6, 0x0c, 0xa4, 0x0e, 0xda, 0xcc, 0xed, 0x5a, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x6c, 0x85, 0xfa, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0xfc, 0x59, 0x58, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x81, 0xcf, 0x96, 0x66, 0x57, 0x6e, 0xd0, 0x12, 0xfc, 0x72, 0x07, 0x6d, 0xe6, 0x76, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x1e, 0x44, 0x7d, 0x70, 0x88, 0xe9, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0x0d, 0xfe, 0x2c, 0xac, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x43, 0x64, 0x0e, 0x1a, 0x89, 0x5f, 0x3e, 0x68, 0x33, 0xb7, 0x6b, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x8a, 0x2d, 0xea, 0x83, 0x43, 0x4c, 0xc7, 0x06, 0xe7, 0xfc, 0xa5, 0x0d, 0x1a, 0xfc, 0x59, 0x58, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x07, 0x6d, 0x81, 0xac, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0xed, 0x2b, 0x38, 0x68, 0xe8, 0x4e, 0x79, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x2c, 0x24, 0xc2, 0x06, 0xed, 0xa3, 0x27, 0xaf, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0x76, 0x7c, 0x38, 0x68, 0x33, 0xb7, 0xeb, 0xa0, 0xac, 0xf3, 0xec, 0xa0, 0xd5, 0xdf, 0xaf, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x6b, 0xe9, 0xa8, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0xc1, 0x9f, 0x85, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0xf8, 0x67, 0x65, 0x72, 0xed, 0x41, 0xfb, 0xaa, 0x5d, 0x07, 0x6d, 0xe6, 0x76, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xb3, 0x48, 0x7d, 0x70, 0x88, 0xe9, 0xd8, 0xe0, 0x9c, 0xbf, 0xb4, 0x41, 0x23, 0xaa, 0x0d, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x36, 0xd2, 0x1c, 0x36, 0x68, 0x2c, 0xb4, 0x6b, 0x83, 0x26, 0x06, 0x36, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x4d, 0x0c, 0x6c, 0x1e, 0xb4, 0xf9, 0xfb, 0xd5, 0x06, 0x8b, 0xca, 0x93, 0x36, 0x68, 0x36, 0xe3, 0x61, 0x83, 0x96, 0x04, 0xa4, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x0d, 0xc2, 0x35, 0x6c, 0xd0, 0xd0, 0x7c, 0xda, 0x41, 0x83, 0xe2, 0xca, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0xfd, 0xc9, 0x85, 0x0d, 0x5a, 0x58, 0xed, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x24, 0xa5, 0x05, 0x1f, 0x1c, 0x15, 0xd8, 0x36, 0x68, 0xec, 0x8d, 0xb9, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xab, 0x76, 0xa9, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0xbe, 0xc2, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0xf1, 0xd5, 0xae, 0x0d, 0x9a, 0x18, 0xd8, 0xdc, 0x20, 0x48, 0x4f, 0xd7, 0x38, 0x74, 0xd0, 0xac, 0x79, 0xd7, 0x1a, 0x14, 0xa9, 0x98, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x56, 0x61, 0x70, 0xd0, 0x84, 0x5a, 0xf2, 0x41, 0x93, 0xff, 0xca, 0x6b, 0xb0, 0x92, 0x63, 0x7b, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x9e, 0x98, 0x7c, 0xd0, 0xe4, 0xbf, 0xf2, 0x1a, 0xac, 0xba, 0xd8, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xe1, 0x1f, 0x86, 0x83, 0xa6, 0x13, 0x93, 0x0f, 0x9a, 0xfc, 0x57, 0x5e, 0x83, 0x55, 0x27, 0xdb, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x59, 0x48, 0x84, 0x0d, 0x1a, 0x4f, 0x4c, 0x5e, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0x39, 0x68, 0xf2, 0x5f, 0xb9, 0xd6, 0x60, 0x7d, 0xc8, 0xf6, 0x06, 0x47, 0x1b, 0xbe, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xb3, 0x62, 0x08, 0x1b, 0x34, 0xbb, 0xc8, 0x7c, 0x90, 0x0a, 0x34, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x16, 0x58, 0x38, 0x6f, 0x70, 0xce, 0x5f, 0xda, 0xa0, 0x19, 0x50, 0x86, 0x0d, 0xda, 0x1d, 0xd3, 0xdc, 0xe0, 0x9c, 0xbf, 0xb4, 0x41, 0x83, 0x6c, 0x07, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0x71, 0x1d, 0xf4, 0x06, 0x47, 0x1b, 0xbe, 0x0d, 0x9a, 0x5b, 0x53, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0x6b, 0x4d, 0xbb, 0x37, 0x58, 0x52, 0x9d, 0xb4, 0xc1, 0x59, 0x56, 0x6a, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x9b, 0xab, 0x3b, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x05, 0x26, 0xbb, 0xc1, 0x12, 0x0e, 0xb7, 0x0e, 0xca, 0x3a, 0xcf, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x92, 0xd2, 0x82, 0x37, 0x58, 0x54, 0x9e, 0xb4, 0x41, 0xb3, 0x19, 0x0f, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x06, 0x6a, 0x99, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x67, 0x92, 0xb0, 0x41, 0x5b, 0xbf, 0xcc, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0x4f, 0x02, 0x3b, 0x28, 0xeb, 0x3c, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x49, 0x69, 0xc1, 0x07, 0xa7, 0xc5, 0xba, 0x0e, 0xca, 0x3a, 0xcf, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x73, 0x26, 0x09, 0x1b, 0xb4, 0xf5, 0xcb, 0xbc, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0x02, 0x93, 0x3d, 0x28, 0x28, 0xc5, 0x0f, 0xca, 0x3a, 0xcf, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x73, 0x26, 0x09, 0x1b, 0x2c, 0x61, 0xd4, 0x5e, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xb6, 0x7e, 0x99, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x49, 0x69, 0xc1, 0x1b, 0x24, 0x8f, 0xf3, 0xd6, 0x41, 0x59, 0xe7, 0x59, 0x07, 0x65, 0x9d, 0x67, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x96, 0x4d, 0x7d, 0x70, 0x88, 0xe9, 0xd8, 0x20, 0x48, 0x4f, 0x37, 0x68, 0x47, 0xb4, 0x6b, 0x0d, 0x42, 0xf0, 0xe1, 0x60, 0x0d, 0x95, 0xf3, 0x6a, 0xf8, 0x5c, 0xe9, 0xa0, 0xb5, 0x76, 0xaa, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0x0b, 0xa5, 0xbc, 0x06, 0x45, 0x2a, 0xe6, 0x06, 0xe7, 0xfc, 0xa5, 0x0d, 0x1a, 0x51, 0x6d, 0xd8, 0xa0, 0x85, 0xd5, 0xae, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x1a, 0x5b, 0x42, 0xdd, 0xf0, 0x17, 0xcd, 0x06, 0xeb, 0x9a, 0x9f, 0x0f, 0x1a, 0x0b, 0xed, 0xda, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x60, 0xe1, 0xbc, 0x41, 0x90, 0x9e, 0x6e, 0xd0, 0xfe, 0x19, 0xea, 0x1a, 0xb4, 0x99, 0xce, 0xbc, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x84, 0x6b, 0xd8, 0xa0, 0xa1, 0xf9, 0xb4, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0xd0, 0xfe, 0x19, 0x6a, 0x6b, 0x70, 0xca, 0xc6, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0x42, 0x22, 0x6c, 0xd0, 0x3a, 0x7a, 0xda, 0x06, 0xad, 0xf6, 0x33, 0xaf, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0xfb, 0x67, 0xa8, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3e, 0x68, 0xff, 0x0c, 0xb5, 0x83, 0xb2, 0xce, 0x73, 0x0d, 0x42, 0xf0, 0xe1, 0x20, 0x3c, 0x55, 0x6b, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x6a, 0x78, 0xea, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0xa7, 0xf7, 0x96, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0xa6, 0xb4, 0x0a, 0x36, 0x58, 0x4b, 0x65, 0x77, 0xb0, 0x76, 0x4f, 0x7d, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x20, 0x81, 0xb0, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x2d, 0x56, 0x34, 0xb7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x40, 0x02, 0x61, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x68, 0x47, 0xf3, 0x41, 0xfb, 0xaa, 0x5d, 0x07, 0x65, 0x9d, 0x67, 0x07, 0x65, 0x9d, 0xe7, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x95, 0x02, 0xd5, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x5b, 0x47, 0x58, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x9b, 0x87, 0xb0, 0xc1, 0xe9, 0x48, 0x64, 0x0d, 0x5a, 0xc8, 0x53, 0x38, 0x38, 0x5d, 0x64, 0xb4, 0xc1, 0xf1, 0x93, 0x6f, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x6c, 0xd5, 0xc1, 0x06, 0xa7, 0x8b, 0x8c, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x83, 0x70, 0x0d, 0x6b, 0x90, 0x94, 0x16, 0x7c, 0x50, 0x54, 0x8a, 0x1f, 0x9c, 0xe4, 0xf9, 0xea, 0xa0, 0xad, 0x13, 0xa9, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x8b, 0x36, 0xaa, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0x0b, 0x2c, 0x9c, 0x37, 0x08, 0xd2, 0xd3, 0x0d, 0xda, 0x11, 0xed, 0x5a, 0x83, 0x10, 0x7c, 0xd8, 0xf0, 0x96, 0xdd, 0x1a, 0x9e, 0xb8, 0xdb, 0xf0, 0x2c, 0xde, 0xe0, 0xef, 0xe0, 0xf0, 0xe0, 0xe5, 0xe0, 0xee, 0xa0, 0x6d, 0xf0, 0x76, 0xf0, 0x71, 0xf0, 0xf9, 0xa0, 0x68, 0xaa, 0x3d, 0x08, 0x4f, 0xd5, 0x35, 0x28, 0x52, 0x31, 0x37, 0x38, 0xe7, 0x2f, 0x6d, 0xd0, 0x20, 0x5c, 0xc3, 0x06, 0x2d, 0x63, 0x24, 0x6f, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0xb0, 0x70, 0xde, 0xf0, 0x41, 0xce, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x84, 0xe0, 0xc3, 0x41, 0x33, 0x59, 0xca, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xa0, 0xdd, 0xe3, 0x83, 0x62, 0x07, 0xb2, 0x97, 0xe6, 0x12, 0xe7, 0x72, 0x56, 0xe6, 0xd6, 0x97, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0x0d, 0xc2, 0x35, 0x6c, 0xd0, 0xaa, 0x61, 0xf2, 0x06, 0x0d, 0xae, 0x33, 0xb7, 0xc1, 0x39, 0x7f, 0x69, 0x83, 0x46, 0x54, 0x1b, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xa3, 0x67, 0x05, 0x04, 0xc4, 0xab, 0x07, 0x04, 0x24, 0x6c, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xa6, 0xa2, 0xb0, 0x41, 0x92, 0xc3, 0xd3, 0x41, 0xab, 0x55, 0xca, 0x1b, 0x9c, 0xf3, 0x97, 0x36, 0x68, 0x44, 0xb5, 0x61, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0xd8, 0x23, 0x41, 0x89, 0x73, 0x39, 0x2b, 0x73, 0x03, 0xa1, 0x73, 0x89, 0x73, 0x39, 0x2b, 0x73, 0x4b, 0xe9, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xa3, 0x67, 0x05, 0x04, 0xc4, 0xab, 0x07, 0x04, 0x44, 0x6c, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xa6, 0xa2, 0xb0, 0x41, 0x73, 0x78, 0x9f, 0x1b, 0x34, 0xea, 0xd5, 0xdc, 0x06, 0xe7, 0xfc, 0xa5, 0x0d, 0x1a, 0x51, 0x6d, 0x58, 0xc3, 0xf3, 0x24, 0x1b, 0x34, 0x98, 0xd5, 0xbc, 0xc1, 0x39, 0x7f, 0x69, 0x83, 0xd6, 0x54, 0x14, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xaf, 0x67, 0x05, 0x04, 0x64, 0xac, 0x87, 0xc5, 0x65, 0xc5, 0xc6, 0x45, 0xec, 0x60, 0x35, 0xeb, 0xeb, 0x06, 0xe7, 0xfc, 0xa5, 0x0d, 0x9a, 0x15, 0x6a, 0x58, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x91, 0x5e, 0xb0, 0x41, 0xcb, 0xc4, 0x97, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x55, 0x60, 0xb2, 0x07, 0x87, 0xe5, 0x99, 0x83, 0xb2, 0xce, 0xf3, 0xa0, 0x71, 0xd2, 0xe4, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0x3c, 0x4f, 0xb2, 0xc1, 0x6a, 0x55, 0xe8, 0x83, 0x76, 0xcd, 0x0d, 0x36, 0x58, 0x54, 0x9e, 0xb4, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x3c, 0x21, 0x7d, 0xd0, 0xde, 0x3a, 0xc2, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x41, 0xb8, 0x86, 0x0d, 0x5a, 0x35, 0x4c, 0x3e, 0x68, 0x5f, 0xb5, 0x6b, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x2c, 0x24, 0xc2, 0x06, 0x8d, 0x93, 0x26, 0xaf, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x2b, 0x29, 0xd8, 0x60, 0x35, 0xeb, 0x6b, 0x07, 0x65, 0x9d, 0xe7, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x0d, 0x8a, 0x18, 0xc8, 0x58, 0x6a, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0xcd, 0x99, 0x24, 0xac, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x46, 0x18, 0x0a, 0x8b, 0xcb, 0x8a, 0x0d, 0xc8, 0x58, 0xea, 0xa0, 0xb9, 0xcf, 0xe4, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0xe2, 0x72, 0xd0, 0x2a, 0x64, 0xf3, 0x06, 0xad, 0x99, 0x36, 0x77, 0x50, 0xd6, 0x79, 0xb6, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0xe9, 0x4b, 0xf5, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x9b, 0x87, 0xb0, 0x41, 0x4b, 0x06, 0xc9, 0x07, 0x6d, 0xe6, 0x76, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x40, 0x54, 0x7d, 0x70, 0x88, 0xe9, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0x8d, 0xa8, 0x36, 0x1c, 0xb4, 0xb9, 0xba, 0xbc, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x71, 0x95, 0xf5, 0xc1, 0x21, 0xa6, 0x63, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0xcd, 0x0a, 0x35, 0x6c, 0xd0, 0xea, 0xef, 0xd7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xbb, 0xb6, 0x60, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0x8b, 0x46, 0xdb, 0xa0, 0xa0, 0xc8, 0x5c, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x76, 0xb2, 0xd1, 0x36, 0x68, 0x2c, 0xb4, 0x6b, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xb9, 0x9e, 0xb0, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0xda, 0xc9, 0x46, 0x3b, 0x68, 0x33, 0xb7, 0xab, 0x83, 0xb2, 0xcc, 0xf3, 0xa0, 0xac, 0xf3, 0x5c, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x5a, 0xab, 0xfa, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x84, 0x6b, 0x58, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x9b, 0x83, 0xb0, 0x41, 0x6b, 0xc6, 0xcc, 0x07, 0xed, 0xab, 0x76, 0x1d, 0xb4, 0x99, 0xdb, 0xb5, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0xad, 0x5d, 0xf5, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xa2, 0xda, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x4d, 0x45, 0xe1, 0xa0, 0x65, 0x2c, 0xaf, 0x83, 0x36, 0x7f, 0xbf, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0x68, 0xac, 0x3e, 0x38, 0xc4, 0x74, 0x6c, 0xf8, 0xc5, 0x65, 0x83, 0x06, 0xa8, 0x19, 0x36, 0x68, 0x61, 0xb5, 0x6b, 0x83, 0x56, 0x7f, 0xbf, 0x0e, 0xda, 0xcc, 0xed, 0x5a, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x70, 0xb4, 0xfa, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x84, 0x6b, 0x58, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x9b, 0x83, 0xb0, 0x41, 0x6b, 0xc6, 0xcc, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x86, 0x00, 0xd1, 0x0e, 0xca, 0x3a, 0xcf, 0x0e, 0xda, 0xfc, 0xfd, 0x5a, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x8e, 0xb7, 0xfa, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0x4a, 0x68, 0xd8, 0xa0, 0x85, 0xd5, 0xae, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x3b, 0x4f, 0x0e, 0x1b, 0x34, 0x16, 0xda, 0xb5, 0x41, 0xab, 0xbf, 0x5f, 0x07, 0xed, 0x0e, 0x2e, 0x1f, 0x34, 0x28, 0xae, 0xbc, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x55, 0x84, 0xf5, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0xbb, 0xab, 0xcb, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x89, 0xa0, 0x6d, 0x83, 0xc6, 0x42, 0xbb, 0xd6, 0xf0, 0x17, 0xcd, 0x06, 0x6b, 0x47, 0x9e, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0xcb, 0x1e, 0xc9, 0x07, 0x65, 0x9d, 0x67, 0x1b, 0x9c, 0xf3, 0x97, 0x36, 0x68, 0x10, 0xae, 0x61, 0x83, 0x96, 0x31, 0x92, 0x37, 0x38, 0xe7, 0x2f, 0x6d, 0xd0, 0x88, 0x6a, 0xc3, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xd0, 0xd1, 0xb3, 0x02, 0x02, 0x12, 0xd6, 0xd3, 0xe3, 0x83, 0x62, 0x07, 0xc2, 0x25, 0xe7, 0x72, 0x56, 0xe6, 0x96, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0xa9, 0x28, 0x6c, 0x90, 0xe4, 0xf0, 0xb4, 0x41, 0x83, 0x70, 0x0d, 0x1b, 0xb4, 0x6a, 0x98, 0x7c, 0xd0, 0xe6, 0xef, 0xd7, 0x06, 0x8b, 0xca, 0x93, 0x36, 0x68, 0x29, 0xa1, 0x61, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x50, 0x86, 0x73, 0x1b, 0x34, 0x14, 0x9c, 0xbc, 0xc1, 0x39, 0x7f, 0x69, 0x83, 0x06, 0xe1, 0x1a, 0xd6, 0xa0, 0x30, 0x54, 0x5d, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0xad, 0xa9, 0x28, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0x55, 0x8f, 0xd8, 0xa0, 0xa9, 0x0f, 0xe7, 0x83, 0xf6, 0x55, 0xbb, 0x0e, 0xda, 0x68, 0x4d, 0x3e, 0x68, 0xd5, 0x30, 0xf9, 0xa0, 0x49, 0x71, 0xe5, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xab, 0xa3, 0xab, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x41, 0xb8, 0x86, 0x83, 0x36, 0xe0, 0x95, 0x57, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0x68, 0xb1, 0x3e, 0x38, 0xc4, 0x74, 0x6c, 0xf8, 0xc5, 0x65, 0x83, 0x06, 0xe1, 0x1a, 0xd6, 0xf0, 0x8b, 0xcb, 0x41, 0x23, 0x27, 0xcc, 0x07, 0x6d, 0xe6, 0x76, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x4a, 0x5e, 0x7d, 0x70, 0x88, 0xe9, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0x8d, 0xa8, 0x36, 0x1c, 0xb4, 0x01, 0xaf, 0xbc, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x59, 0x90, 0xf5, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0x81, 0x85, 0xf3, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x8d, 0xaf, 0x76, 0x6d, 0xd0, 0x98, 0x81, 0xd4, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xad, 0x80, 0x77, 0x6d, 0xd0, 0x76, 0x79, 0xd7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x10, 0xae, 0xe1, 0xa0, 0x39, 0x7f, 0xe5, 0x35, 0x68, 0xa7, 0xbd, 0x6b, 0xc3, 0x57, 0x38, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x34, 0xbe, 0xda, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x4a, 0xab, 0x60, 0x83, 0x14, 0x27, 0xa7, 0x83, 0x82, 0x78, 0x7c, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xf3, 0xe4, 0xb0, 0x41, 0xdb, 0xe5, 0x5d, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa6, 0xb4, 0x0a, 0x36, 0x48, 0x71, 0x72, 0x3a, 0x28, 0x9c, 0x64, 0x0f, 0x9a, 0xfc, 0x57, 0x5e, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x10, 0xdc, 0xfa, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x79, 0x72, 0x38, 0x68, 0x0a, 0xbf, 0x79, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0xfa, 0x85, 0xeb, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xe7, 0xc9, 0x61, 0x83, 0x16, 0x56, 0xbb, 0x36, 0x58, 0x43, 0xe5, 0x7c, 0xd0, 0x66, 0x6e, 0xd7, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x45, 0x20, 0xd7, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xce, 0x93, 0xc3, 0x06, 0x2d, 0xac, 0x76, 0x6d, 0xd0, 0x58, 0x68, 0xd7, 0x06, 0x6b, 0xa8, 0x9c, 0x5b, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0xea, 0xde, 0xfa, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x79, 0x72, 0x58, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xbe, 0xf4, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x40, 0xe5, 0xbd, 0x41, 0x93, 0x9a, 0x17, 0x07, 0x6b, 0xf7, 0xd4, 0x0f, 0xda, 0x57, 0xed, 0x3a, 0x68, 0x2e, 0xbf, 0x79, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0xfa, 0x53, 0xeb, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0xaf, 0x70, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x47, 0xb4, 0x6b, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x3e, 0x51, 0xc1, 0x41, 0xbb, 0x83, 0xcb, 0x1b, 0x2c, 0x2a, 0x4f, 0xda, 0xa0, 0x9d, 0x27, 0x87, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xeb, 0x4b, 0x0f, 0x1b, 0xb4, 0xf5, 0xa4, 0x7c, 0xd0, 0xbe, 0x6a, 0xd7, 0x06, 0x0d, 0x4d, 0x29, 0x1f, 0xb4, 0x5b, 0xa5, 0xbc, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0xa5, 0xcd, 0xf5, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x9b, 0xe2, 0xb0, 0x41, 0x0b, 0xab, 0x5d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x13, 0x41, 0xdb, 0x06, 0xad, 0xfe, 0x7e, 0xad, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xa0, 0xb3, 0x83, 0x56, 0x7f, 0xbf, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xa6, 0x2e, 0xf3, 0xa0, 0xcd, 0xdc, 0xae, 0x83, 0xb2, 0xce, 0xb3, 0xd6, 0xa0, 0x41, 0xea, 0xae, 0x0d, 0x5f, 0xe1, 0x6c, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0xf8, 0x6a, 0xd7, 0x06, 0x6d, 0xd8, 0x39, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0x76, 0x9e, 0x1c, 0x36, 0x68, 0xbb, 0xbc, 0x6b, 0x83, 0x66, 0xb0, 0x92, 0x37, 0x68, 0xdf, 0xcd, 0xb9, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xeb, 0x50, 0xa0, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x1c, 0xb0, 0xe8, 0xd6, 0xa0, 0x30, 0x54, 0x5d, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xe0, 0xf1, 0x06, 0x57, 0xe6, 0xd6, 0xd2, 0x16, 0xe6, 0x56, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0x77, 0x07, 0x3f, 0x0f, 0x1a, 0x5f, 0xed, 0x6a, 0x83, 0x06, 0x24, 0x10, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x52, 0xf5, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3c, 0x68, 0x1a, 0xdb, 0x79, 0x0d, 0x6f, 0xeb, 0x0c, 0xe0, 0xf1, 0x06, 0x57, 0xe6, 0xd6, 0xd2, 0x16, 0x26, 0x47, 0x57, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0xa1, 0x03, 0x86, 0x35, 0xbc, 0xad, 0x33, 0xf8, 0x78, 0xd0, 0xf8, 0x6a, 0x57, 0xcb, 0xac, 0x41, 0xab, 0xd4, 0xce, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0xc1, 0x65, 0xd6, 0x0d, 0x0a, 0x82, 0xd9, 0x0d, 0x0f, 0xee, 0x6c, 0xd0, 0x62, 0xd6, 0xe5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x4d, 0x69, 0x15, 0x6c, 0xb0, 0x2e, 0xbb, 0xee, 0x60, 0x49, 0xa7, 0xef, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x29, 0xad, 0x82, 0x0d, 0xd6, 0x65, 0xd7, 0x1d, 0x34, 0x68, 0x8e, 0xd9, 0x6a, 0xd0, 0x3a, 0xb8, 0xf3, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xdc, 0x3d, 0x68, 0xf0, 0x2b, 0x75, 0x0d, 0x7f, 0x2e, 0x0d, 0x6e, 0x1f, 0x34, 0x41, 0xc7, 0xda, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x4f, 0x3b, 0x1f, 0xa4, 0xe1, 0xe5, 0x6e, 0xd0, 0xb8, 0x38, 0xc1, 0x41, 0x9a, 0x50, 0xd4, 0xe1, 0x14, 0xeb, 0x70, 0x8a, 0xad, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x88, 0x76, 0x7d, 0x70, 0x88, 0xe9, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0xed, 0x3c, 0x39, 0x6c, 0xd0, 0xbc, 0xa5, 0xf3, 0x41, 0x0b, 0xea, 0xca, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0xf8, 0x5d, 0x1f, 0x1c, 0x62, 0x3a, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x3b, 0x4f, 0x0e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xd6, 0x97, 0x1e, 0x36, 0x58, 0x23, 0xe5, 0x7d, 0xd0, 0xbe, 0x6a, 0xd7, 0x41, 0x0b, 0xea, 0xca, 0x6b, 0xd0, 0x10, 0x66, 0xd7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x4e, 0x97, 0xe0, 0xa0, 0xcd, 0xd5, 0xe5, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x2b, 0x8b, 0xaf, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x9d, 0x27, 0x87, 0x0d, 0x5a, 0x58, 0xed, 0xda, 0xa0, 0x7d, 0x37, 0xe7, 0x0d, 0xda, 0xb0, 0x73, 0x6e, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0xfa, 0xf0, 0xeb, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x16, 0x12, 0x61, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x5e, 0x49, 0xc1, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0x41, 0xa3, 0xcc, 0x80, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0xcf, 0x7d, 0x58, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x1e, 0xa6, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x93, 0x66, 0x62, 0x83, 0xf6, 0x4a, 0x0a, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0xd6, 0x66, 0x78, 0xd7, 0x41, 0xfb, 0xaa, 0x5d, 0x07, 0x65, 0x9d, 0xe7, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x15, 0x33, 0xd8, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x83, 0x9c, 0x35, 0x28, 0x26, 0x31, 0x37, 0xfc, 0x50, 0x73, 0xd0, 0xf8, 0x6a, 0xd7, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xef, 0x06, 0xed, 0x2a, 0xa1, 0x1d, 0xb4, 0xaf, 0xda, 0xb5, 0xe1, 0x11, 0xd6, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xdf, 0x0d, 0xda, 0x55, 0x42, 0xdb, 0xa0, 0xb5, 0x68, 0xb4, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x69, 0xd8, 0x4a, 0x1b, 0xb4, 0xab, 0x84, 0xb6, 0x41, 0x63, 0xd8, 0x68, 0xb5, 0x41, 0x63, 0xa1, 0x5d, 0x1b, 0xde, 0xb2, 0x5b, 0xc3, 0x13, 0x77, 0x1b, 0x9e, 0xc5, 0x1b, 0x1c, 0x1d, 0xfc, 0x1d, 0xfc, 0x1d, 0xdc, 0x1d, 0xb4, 0x0d, 0x6e, 0x0f, 0x5e, 0x0e, 0x2e, 0x0f, 0x3e, 0x0f, 0x9e, 0x0e, 0xfe, 0x1e, 0x0c, 0xbb, 0xdd, 0x83, 0xf0, 0x54, 0x5d, 0x83, 0x30, 0x1d, 0x3b, 0x68, 0xeb, 0x44, 0xaa, 0xc3, 0x29, 0xb6, 0x06, 0x6b, 0x1c, 0xa7, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0x6f, 0xfa, 0x0d, 0x16, 0x58, 0x38, 0x1f, 0x2c, 0xaf, 0x70, 0x6e, 0x83, 0x93, 0x83, 0xdc, 0x06, 0xcd, 0xa0, 0x48, 0x6d, 0x50, 0x50, 0x64, 0xae, 0xc1, 0x52, 0x22, 0xe2, 0x0d, 0x8e, 0xe1, 0x06, 0x07, 0x0d, 0x01, 0xa2, 0xad, 0x41, 0x83, 0x6b, 0x60, 0x07, 0x0d, 0x16, 0x7c, 0xad, 0x41, 0x5b, 0xec, 0xca, 0x1b, 0x1c, 0xc3, 0x0d, 0x0e, 0x1a, 0x7a, 0x57, 0x5e, 0x83, 0xd6, 0xe4, 0x95, 0x0f, 0x1a, 0x5c, 0x7b, 0x5e, 0x83, 0xc6, 0xb6, 0x95, 0x37, 0x38, 0x86, 0x1b, 0x6c, 0xf8, 0xc5, 0x65, 0x83, 0x16, 0x56, 0xbb, 0x36, 0x68, 0x4c, 0xfe, 0xe0, 0xa0, 0x21, 0x70, 0xe5, 0x35, 0x68, 0x08, 0x16, 0x76, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xc6, 0x57, 0xbb, 0x36, 0x28, 0x28, 0x32, 0x37, 0x38, 0x86, 0x1b, 0x6c, 0xf8, 0xc5, 0x65, 0x83, 0xb6, 0xcb, 0xbb, 0x36, 0x68, 0x40, 0x02, 0x61, 0x83, 0xa6, 0xbe, 0xbb, 0x5a, 0x83, 0xc6, 0x01, 0x96, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x7c, 0xb5, 0x6b, 0x83, 0x82, 0x22, 0x73, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x56, 0xc0, 0xbb, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x0e, 0x5a, 0x25, 0xef, 0xda, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x2e, 0xef, 0xda, 0xa0, 0xf9, 0x12, 0x84, 0x83, 0x66, 0x08, 0x9f, 0x9b, 0x05, 0x7c, 0xb9, 0xba, 0xb9, 0x75, 0xc3, 0x5f, 0x34, 0x1b, 0xac, 0xd7, 0x7a, 0xde, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0xc1, 0x5c, 0xfc, 0x41, 0xeb, 0xb6, 0xc8, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xd0, 0xa2, 0xaa, 0xe5, 0xc1, 0x72, 0xb9, 0xf8, 0x35, 0x38, 0x17, 0x2e, 0xac, 0x21, 0x8f, 0xbd, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x00, 0x0f, 0xb9, 0xba, 0xb9, 0xb5, 0x16, 0xb4, 0xb7, 0x37, 0xf7, 0x20, 0x3c, 0x55, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0xb0, 0x5c, 0x2e, 0x7e, 0x35, 0x68, 0xb3, 0x16, 0x79, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xf2, 0xd8, 0x1b, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0xf0, 0x90, 0x0b, 0x5b, 0x2b, 0x6b, 0x41, 0x7b, 0x7b, 0x73, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0xd9, 0xd0, 0x65, 0x0d, 0x6f, 0xeb, 0x1c, 0xb4, 0xa6, 0x3b, 0xd6, 0x6a, 0xd0, 0xa4, 0xec, 0xf2, 0x86, 0x5f, 0x94, 0x36, 0x58, 0x5f, 0x6c, 0xbe, 0x41, 0x69, 0x6f, 0xb9, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb9, 0x32, 0xf6, 0x60, 0xed, 0xc8, 0xf3, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x02, 0x0b, 0xe7, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0xd5, 0x35, 0xd3, 0x6b, 0xf8, 0xa1, 0x66, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x2b, 0xd4, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xbb, 0xb6, 0x60, 0x83, 0x76, 0x63, 0x14, 0x3a, 0x68, 0xe9, 0x44, 0x6a, 0x0d, 0xda, 0x82, 0x47, 0xde, 0xf0, 0x41, 0xce, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0xac, 0x77, 0x67, 0x3e, 0x68, 0x16, 0x7d, 0x6d, 0x83, 0xb6, 0x4e, 0xa4, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x9b, 0xeb, 0x09, 0x1b, 0xb4, 0x1b, 0xa3, 0x70, 0xd0, 0xd2, 0x89, 0xd4, 0x1a, 0xb4, 0xe1, 0x39, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x92, 0x53, 0xfa, 0x0d, 0xca, 0x92, 0xf7, 0x35, 0x58, 0xe3, 0x38, 0xd5, 0x41, 0x53, 0xf7, 0x5d, 0x1b, 0x14, 0x03, 0xb2, 0x1b, 0x2c, 0x38, 0xa5, 0x5f, 0x83, 0xc2, 0x50, 0x75, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x56, 0xd7, 0x4c, 0x1f, 0xb4, 0x6c, 0xe4, 0xb6, 0x06, 0xcd, 0xa0, 0x48, 0x6d, 0x78, 0x5b, 0x67, 0x70, 0x78, 0xf0, 0xfa, 0x60, 0xc1, 0x29, 0x7d, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0xae, 0x99, 0x3e, 0x68, 0x52, 0xcd, 0x6d, 0x0d, 0x9a, 0x41, 0x91, 0xda, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0xf3, 0xe1, 0xcf, 0x6d, 0x70, 0xce, 0x5f, 0xda, 0xa0, 0x11, 0xd5, 0x86, 0x0d, 0xda, 0x3a, 0x91, 0xda, 0xa0, 0x30, 0x54, 0x5d, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0xa1, 0xee, 0xe7, 0x35, 0x68, 0x06, 0x45, 0x6a, 0xc3, 0x2f, 0x2e, 0x1b, 0x24, 0xa5, 0x05, 0x1f, 0x9c, 0x99, 0xdb, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x68, 0xa1, 0xfc, 0x79, 0x0d, 0x9a, 0x41, 0x91, 0x3a, 0x68, 0xd6, 0x8e, 0xb9, 0x35, 0x68, 0x70, 0x0d, 0x6c, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xda, 0x41, 0xb0, 0x86, 0xb7, 0x75, 0x36, 0x48, 0xc4, 0x07, 0x3e, 0x58, 0x5d, 0x33, 0xbd, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0x43, 0xdd, 0xcf, 0xb5, 0x06, 0x2d, 0x1a, 0x27, 0x1f, 0x34, 0xd1, 0xfc, 0xbc, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x0d, 0xa5, 0xf7, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x6e, 0x49, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x6c, 0x21, 0x62, 0x83, 0xd6, 0x66, 0xe3, 0x3a, 0x68, 0x1d, 0x00, 0x7a, 0x0d, 0x1a, 0xe9, 0x25, 0xdc, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0x0a, 0x35, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0xae, 0x2d, 0xd8, 0xa0, 0x61, 0xe6, 0xb8, 0x0e, 0x5a, 0x07, 0x80, 0x5e, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x82, 0xe9, 0xfb, 0xe0, 0x10, 0xd3, 0xb1, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0xd0, 0x50, 0xf7, 0xf3, 0x6a, 0xd0, 0x28, 0xee, 0x73, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x44, 0xd0, 0xb6, 0x41, 0xcb, 0xfa, 0x71, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0x2d, 0x0e, 0xe8, 0x5a, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x26, 0xe8, 0xfc, 0xe0, 0x10, 0xd3, 0xb1, 0xc1, 0x39, 0x7f, 0x69, 0x83, 0x36, 0xd7, 0x13, 0xd6, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0x2d, 0x0e, 0xe8, 0x0d, 0x5a, 0xf9, 0x90, 0xdb, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0xaa, 0x47, 0x6c, 0xd0, 0x26, 0x08, 0xf4, 0x06, 0xad, 0x7c, 0xc8, 0x75, 0xd0, 0x3e, 0x00, 0xf4, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x45, 0x5a, 0xe7, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0xce, 0xf9, 0x4b, 0x1b, 0x34, 0x2b, 0xd4, 0xb0, 0x06, 0x85, 0xa1, 0xea, 0x06, 0x6d, 0xa4, 0x17, 0x6c, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0xac, 0x1d, 0x79, 0xde, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x41, 0xc3, 0x8d, 0x72, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x65, 0xe2, 0xcb, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0xd3, 0x51, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0xd9, 0xa0, 0xe1, 0x46, 0xb9, 0xea, 0xa0, 0xad, 0x13, 0xa9, 0x66, 0x0d, 0x1a, 0x12, 0x5e, 0xde, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x58, 0xdf, 0x09, 0xbd, 0x41, 0x90, 0x9e, 0x6e, 0xd0, 0x0c, 0x8a, 0xd4, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x05, 0xb1, 0xcf, 0x1b, 0xac, 0x8f, 0x48, 0x3f, 0x28, 0x23, 0x6d, 0x37, 0xfc, 0xe2, 0x72, 0xd0, 0x82, 0x07, 0xf3, 0x06, 0xad, 0xb6, 0x3d, 0xaf, 0x41, 0x98, 0x8e, 0x1d, 0x14, 0x14, 0x99, 0x1d, 0x4e, 0xb1, 0xd6, 0xf0, 0x7d, 0xfb, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xfa, 0x4e, 0xe8, 0x0d, 0x4e, 0x0e, 0x72, 0x1b, 0x34, 0x83, 0x22, 0xb5, 0x41, 0x41, 0x91, 0xb9, 0x06, 0x2d, 0x47, 0x23, 0x6f, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0xf8, 0x6a, 0xd7, 0x06, 0x05, 0x45, 0xe6, 0x06, 0xc5, 0x80, 0xec, 0x06, 0xcd, 0x9a, 0x77, 0xad, 0xe1, 0x83, 0x9c, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0xd8, 0xa0, 0x83, 0xc6, 0x05, 0x99, 0x37, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xd0, 0xac, 0x79, 0xd7, 0x06, 0xc7, 0x70, 0x83, 0x83, 0xb6, 0xcb, 0xbb, 0xd6, 0xa0, 0xe9, 0x65, 0xe4, 0x83, 0x66, 0xa9, 0x91, 0xd7, 0xa0, 0xc1, 0x35, 0xb0, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x9a, 0x41, 0x91, 0x3a, 0x68, 0xa7, 0xbe, 0xab, 0x35, 0x68, 0xec, 0xc8, 0xf9, 0xa0, 0x21, 0x39, 0xe8, 0x35, 0x68, 0xe4, 0xe4, 0xeb, 0xa0, 0xc1, 0x82, 0xaf, 0x66, 0x0d, 0x9a, 0x66, 0x47, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x9a, 0x1d, 0xb5, 0x01, 0xfc, 0xd0, 0xde, 0xde, 0xdc, 0x40, 0xe8, 0xde, 0x40, 0xe6, 0xd6, 0xd2, 0xdc, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0xda, 0xdc, 0x6c, 0xdd, 0xe0, 0xe4, 0x20, 0xb7, 0x41, 0x33, 0x28, 0x52, 0x6b, 0xf8, 0xc4, 0x66, 0x83, 0x36, 0x67, 0x91, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x33, 0x79, 0xd0, 0xd6, 0x89, 0xd4, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xcd, 0xa0, 0x48, 0x1d, 0x9e, 0x99, 0x6c, 0x0d, 0x96, 0x12, 0x11, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0xbf, 0xb8, 0x1c, 0x34, 0x68, 0x2d, 0xb6, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x42, 0x7a, 0xf7, 0x06, 0x05, 0x45, 0xe6, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x89, 0xd7, 0xdd, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x1c, 0xc3, 0x0d, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x2b, 0x92, 0x15, 0x6b, 0xb8, 0xa4, 0xd6, 0xe0, 0x6c, 0x1a, 0x5e, 0x6b, 0xb8, 0xa4, 0xd6, 0x60, 0xb0, 0xc6, 0x56, 0x6b, 0xd0, 0x16, 0x3c, 0xf2, 0x06, 0xc7, 0x70, 0x83, 0x83, 0xb6, 0x4e, 0xa4, 0xd6, 0xa0, 0xad, 0x3e, 0xaf, 0x0d, 0x0a, 0x82, 0xd9, 0x0d, 0xda, 0x11, 0xed, 0x5a, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x71, 0x77, 0xd0, 0x32, 0x96, 0xd7, 0x41, 0x41, 0x91, 0xb9, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x35, 0x8f, 0xf4, 0x06, 0x2d, 0xaa, 0x5a, 0x1e, 0x1c, 0x17, 0x4f, 0x0e, 0xda, 0x65, 0x83, 0x5e, 0x83, 0x46, 0x4e, 0xbe, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x68, 0xf6, 0xe5, 0x78, 0x0d, 0x97, 0xd4, 0x06, 0xad, 0xe9, 0x8e, 0x1d, 0xb4, 0xc0, 0xea, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0x16, 0xbf, 0x9c, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x06, 0xc1, 0x1a, 0x2e, 0xa9, 0x0d, 0x0e, 0xfb, 0x1d, 0x07, 0xcd, 0x1b, 0x7c, 0xad, 0xe1, 0x17, 0xa5, 0x0d, 0xd6, 0x17, 0x9b, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0x56, 0xd5, 0x23, 0x36, 0x68, 0x85, 0x98, 0xe0, 0xa0, 0x39, 0xe2, 0xe7, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0x61, 0x7b, 0x3e, 0x28, 0x23, 0x6d, 0x0f, 0x9a, 0xa5, 0x46, 0x5e, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0xe2, 0xdf, 0x79, 0x83, 0x16, 0x0c, 0xa0, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x90, 0x41, 0xb0, 0x41, 0x83, 0x05, 0x5f, 0x6b, 0xf8, 0x45, 0x69, 0x83, 0xf5, 0xc5, 0xe6, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0xb1, 0x85, 0x88, 0x0d, 0x5a, 0x8b, 0x46, 0x3b, 0x68, 0x8e, 0xf8, 0xb9, 0x35, 0x68, 0x39, 0x1a, 0x79, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xd0, 0xa2, 0xaa, 0xe5, 0x41, 0xe3, 0xab, 0x5d, 0x1b, 0xb4, 0xcb, 0x06, 0xbd, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0xba, 0xb0, 0xf3, 0x0d, 0x0f, 0xde, 0x6c, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0xb4, 0xb9, 0xd9, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xe3, 0xab, 0x5d, 0x6b, 0x70, 0x0c, 0x37, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0x8d, 0x62, 0x59, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xd6, 0x85, 0x9d, 0xd7, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0x65, 0xe2, 0xcb, 0x83, 0xb6, 0xcb, 0xbb, 0x36, 0x28, 0x28, 0x32, 0x0f, 0x9a, 0xc1, 0x4a, 0x5e, 0x83, 0x76, 0x1c, 0x96, 0x37, 0x38, 0x86, 0x1b, 0x6c, 0xf8, 0xc5, 0x65, 0x83, 0x86, 0x77, 0x2c, 0x36, 0x68, 0x61, 0xb5, 0xeb, 0xa0, 0x05, 0xbb, 0xcc, 0x35, 0x68, 0xbd, 0x75, 0x79, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x66, 0x5f, 0x8e, 0x37, 0x68, 0xb0, 0xe0, 0x6b, 0xc3, 0x2f, 0x4a, 0x1b, 0xac, 0x2f, 0x36, 0xdf, 0xa0, 0x20, 0x98, 0xdd, 0xa0, 0xf1, 0xd5, 0xae, 0x35, 0x38, 0x86, 0x1b, 0x6c, 0xf8, 0xc5, 0x65, 0x83, 0x76, 0xa5, 0x23, 0x36, 0x68, 0x61, 0xb5, 0xeb, 0xa0, 0x39, 0xe2, 0xe7, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x28, 0x26, 0x31, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0xcb, 0x65, 0xbe, 0x37, 0xfc, 0x50, 0xb3, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xc5, 0xe8, 0xbc, 0xc1, 0x7a, 0x77, 0xe6, 0x3a, 0x68, 0x7c, 0xb5, 0x6b, 0x83, 0x82, 0x22, 0x73, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x57, 0x3a, 0x62, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x02, 0x4a, 0x3d, 0x68, 0x7c, 0xb5, 0xeb, 0xa0, 0x39, 0xe2, 0xe7, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x81, 0x0f, 0x43, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x0f, 0x43, 0x1b, 0xc0, 0x8b, 0x2e, 0x6d, 0x2d, 0x0d, 0xa4, 0xcc, 0xed, 0x2c, 0xcd, 0xad, 0x6c, 0x83, 0xb2, 0x0c, 0x7b, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x74, 0x69, 0xeb, 0x41, 0x13, 0xb6, 0xb2, 0xb3, 0xcc, 0x1a, 0x14, 0x04, 0xb3, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x15, 0x7c, 0xb6, 0x07, 0x0b, 0x2c, 0x9c, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x2b, 0x04, 0x6d, 0x0f, 0x16, 0x58, 0x38, 0xb7, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0x9f, 0xc9, 0x85, 0xe5, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0xfd, 0x77, 0x58, 0xc3, 0xdb, 0x3a, 0x03, 0x3e, 0x5c, 0xdd, 0x58, 0xd9, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xbe, 0x18, 0x5b, 0x5d, 0xd9, 0xc1, 0x6a, 0x4a, 0xdb, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf3, 0x36, 0xd1, 0x07, 0xcb, 0x46, 0x6d, 0x6b, 0x35, 0x28, 0x26, 0x31, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x34, 0x3f, 0x38, 0x58, 0x60, 0x05, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x7a, 0x89, 0x5e, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xbe, 0xf4, 0xb0, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x4f, 0x57, 0x16, 0xc6, 0xb6, 0x41, 0xd8, 0xdd, 0xb6, 0x41, 0xb3, 0x33, 0xd1, 0xb5, 0x1a, 0x94, 0xf0, 0x98, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0xb9, 0x93, 0xe8, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xd4, 0x4b, 0xf4, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xd9, 0x8c, 0x87, 0x83, 0x46, 0x67, 0xa2, 0x3b, 0x9c, 0x62, 0xad, 0xc1, 0xc9, 0x41, 0x6e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x16, 0x28, 0xa4, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0xf7, 0x06, 0x47, 0x1f, 0x2c, 0x8f, 0xb5, 0x6e, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xa6, 0x5e, 0xa2, 0x37, 0x68, 0x5e, 0xd9, 0x61, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x3b, 0x13, 0xbd, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xde, 0x26, 0xfa, 0xa0, 0xa5, 0x13, 0xa9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x89, 0x54, 0xbd, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x31, 0x2b, 0xba, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x0e, 0x5a, 0x87, 0x1f, 0xde, 0xf0, 0x8b, 0xcb, 0x86, 0xa7, 0x75, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xcd, 0xdb, 0x44, 0x1f, 0xde, 0x42, 0xab, 0x56, 0x83, 0x20, 0x3d, 0xdd, 0xf0, 0x8b, 0xd2, 0x06, 0x8d, 0x62, 0x45, 0x6f, 0x50, 0x74, 0x1a, 0x6f, 0xd0, 0xd4, 0x4b, 0xf4, 0x06, 0xcd, 0xa6, 0x38, 0x6c, 0xf8, 0xc5, 0x65, 0x83, 0x66, 0x67, 0xa2, 0x0f, 0x1a, 0x20, 0x8b, 0x9e, 0x35, 0x68, 0xfb, 0x26, 0x7a, 0xc3, 0x2f, 0x4a, 0x1b, 0xb4, 0x40, 0x21, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x16, 0x58, 0x38, 0x6f, 0x50, 0xec, 0x68, 0xae, 0xe1, 0x11, 0xd6, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0x23, 0xa0, 0x8d, 0x43, 0x1b, 0xb4, 0x2e, 0x12, 0xdd, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x84, 0xe0, 0xc3, 0xe0, 0xf0, 0x41, 0x8b, 0x82, 0xd1, 0x6d, 0xd0, 0xd6, 0x89, 0xd4, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x10, 0xae, 0x61, 0x83, 0x86, 0xe6, 0xd3, 0x0e, 0x5a, 0x3a, 0x91, 0x5a, 0x0d, 0xda, 0xa4, 0x89, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0x6b, 0x47, 0x9e, 0x37, 0x08, 0xd2, 0xd3, 0x0d, 0x1a, 0x10, 0x8c, 0x5e, 0x83, 0x80, 0x0d, 0xda, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0xdd, 0xc2, 0xe8, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xd0, 0xa2, 0x60, 0xf4, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf5, 0x41, 0xbb, 0x85, 0xd1, 0x07, 0x65, 0x9d, 0xe7, 0x1a, 0x84, 0x11, 0xd0, 0x41, 0x6b, 0x8f, 0xcb, 0xcd, 0x1a, 0x14, 0x03, 0xb2, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0xb9, 0x93, 0xe8, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xd4, 0x4b, 0xf4, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x91, 0x41, 0x87, 0x83, 0x46, 0x67, 0xa2, 0x3b, 0x9c, 0x62, 0x0b, 0xf8, 0x74, 0x65, 0x6c, 0xe5, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x29, 0x3a, 0x51, 0x07, 0x0b, 0x68, 0xa6, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x02, 0x9a, 0xe9, 0x0d, 0x1f, 0xe4, 0xac, 0x41, 0x31, 0x89, 0xb9, 0x41, 0xc0, 0x06, 0x1d, 0x34, 0x20, 0x18, 0xbd, 0x41, 0xa2, 0x4d, 0xd4, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x55, 0x3d, 0x62, 0x0d, 0x8e, 0xae, 0x83, 0x1b, 0x34, 0x33, 0xcd, 0xdc, 0x06, 0x89, 0x36, 0x51, 0x1d, 0x4e, 0xb1, 0x35, 0x68, 0x01, 0x29, 0x7a, 0xc3, 0x2f, 0x4a, 0x1b, 0xb4, 0xf7, 0x13, 0xbd, 0xe1, 0x2f, 0x9a, 0x0d, 0x16, 0x58, 0x41, 0x6f, 0xf8, 0x20, 0x67, 0x83, 0xd6, 0x5d, 0xa3, 0x37, 0x08, 0xbb, 0xdb, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xaa, 0x7a, 0xc4, 0x06, 0x0d, 0xd4, 0x46, 0x1f, 0xb4, 0x96, 0x14, 0xbd, 0x1a, 0xac, 0x77, 0x79, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0x8d, 0xa4, 0x46, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xa6, 0x5e, 0xa2, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xed, 0xce, 0x3c, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xeb, 0xa6, 0xd1, 0x1d, 0xb4, 0x73, 0x1b, 0x7d, 0xd0, 0x9a, 0x52, 0x74, 0x87, 0x53, 0x6c, 0x0d, 0xda, 0x81, 0x89, 0xde, 0xf0, 0x8b, 0xd2, 0x06, 0x2d, 0x50, 0x48, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x05, 0x16, 0xce, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0x0d, 0x08, 0x46, 0xaf, 0x41, 0xc0, 0x06, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0x6e, 0x61, 0xf4, 0x06, 0x6d, 0x9d, 0x48, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0xe6, 0xa9, 0x1b, 0x36, 0x68, 0xef, 0x32, 0x7a, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x46, 0x7a, 0xc1, 0x06, 0x4d, 0x54, 0x46, 0x77, 0xd0, 0xd2, 0x89, 0xd4, 0x1a, 0x84, 0x11, 0xd0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x44, 0xb5, 0x61, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xda, 0x2d, 0x8c, 0xde, 0xa0, 0x89, 0xca, 0xe8, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x9a, 0x8a, 0xc2, 0x06, 0x8d, 0x61, 0x46, 0x1f, 0xb4, 0x2b, 0x1e, 0x7d, 0xd0, 0xd2, 0x89, 0x54, 0x87, 0x53, 0xec, 0x70, 0x8a, 0xcd, 0x02, 0x1f, 0x86, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0xc2, 0xcb, 0xac, 0xc0, 0x23, 0x2b, 0x33, 0x1b, 0x80, 0x0f, 0xb2, 0x32, 0xb3, 0xb0, 0x3a, 0x36, 0x3a, 0x90, 0x32, 0x3c, 0x38, 0xb9, 0xb2, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x16, 0x5e, 0x66, 0x1d, 0xac, 0x1c, 0xd6, 0x6b, 0x00, 0xbf, 0xbb, 0x34, 0xb7, 0x33, 0x10, 0xba, 0x37, 0x10, 0xb4, 0xb7, 0xb6, 0xb2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x16, 0x5e, 0x66, 0x1d, 0xb4, 0x40, 0x4c, 0xd5, 0x00, 0x7e, 0x61, 0x78, 0x69, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x68, 0x6f, 0x6d, 0x65, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x2c, 0xbc, 0xcc, 0x3a, 0x68, 0x2f, 0xd0, 0xb2, 0x01, 0x78, 0x20, 0x2b, 0x13, 0xab, 0x3b, 0x03, 0x09, 0x73, 0x73, 0x7b, 0xa3, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0x9b, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0x60, 0xe1, 0x65, 0x56, 0xe0, 0xb9, 0xd5, 0xd1, 0x0d, 0xe0, 0x15, 0xe6, 0xe6, 0xf6, 0x46, 0x17, 0x46, 0x97, 0xf6, 0xe6, 0x36, 0xb7, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0xc2, 0xcb, 0xac, 0x83, 0x16, 0xea, 0x07, 0x1b, 0xc0, 0x1f, 0x2d, 0xef, 0x2c, 0xad, 0xcc, 0x2d, 0x6d, 0x0c, 0x64, 0xec, 0xcd, 0x8d, 0xae, 0x0c, 0x8f, 0x6e, 0xc3, 0xe7, 0x2e, 0x1b, 0xb4, 0x40, 0x4c, 0x75, 0xd0, 0x28, 0x39, 0xdf, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0xe5, 0xb0, 0xde, 0x41, 0x73, 0xaf, 0x97, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x16, 0xea, 0x07, 0x37, 0x28, 0x04, 0x53, 0x0f, 0x56, 0x1a, 0x7e, 0xaf, 0xe1, 0x73, 0x97, 0x0d, 0xda, 0x0b, 0xb4, 0xdc, 0xa0, 0x10, 0x4c, 0xdd, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x83, 0x85, 0xef, 0xc1, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xf6, 0x30, 0xa4, 0x37, 0x28, 0x04, 0x53, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x83, 0xe5, 0x98, 0xdc, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x06, 0xef, 0xa3, 0x37, 0x28, 0x04, 0x53, 0x0f, 0x16, 0x48, 0x38, 0xb7, 0x41, 0x59, 0x86, 0xbd, 0x41, 0x7b, 0x3f, 0xd1, 0xb3, 0xcc, 0x02, 0xbc, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0xe4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xf8, 0x20, 0x57, 0x36, 0xf6, 0x26, 0x47, 0x06, 0x12, 0xe6, 0x06, 0x12, 0x86, 0x97, 0x36, 0x07, 0x42, 0xf7, 0x06, 0xf2, 0x26, 0x97, 0x76, 0x96, 0xe6, 0x16, 0xc6, 0x06, 0x32, 0x57, 0x27, 0xa6, 0x56, 0x36, 0x46, 0xb7, 0xe1, 0x17, 0xa5, 0x0d, 0x1a, 0x6a, 0x0f, 0xdb, 0x70, 0x49, 0x6d, 0x48, 0x2d, 0xad, 0x41, 0xd3, 0xca, 0x54, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x8c, 0x35, 0xb3, 0x41, 0x3b, 0x65, 0x5b, 0x07, 0xad, 0xf2, 0x62, 0xb5, 0x02, 0x3c, 0x73, 0x70, 0x6f, 0x72, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xfc, 0x88, 0xd5, 0xa5, 0xb1, 0x91, 0x81, 0x90, 0x95, 0x99, 0x85, 0xd5, 0xb1, 0xd1, 0x81, 0xcc, 0x85, 0xb5, 0xc1, 0xb1, 0x95, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x05, 0x16, 0xce, 0x1b, 0x9c, 0xf3, 0x97, 0x36, 0x68, 0x99, 0x3a, 0x61, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x6e, 0x02, 0xc1, 0x41, 0x63, 0x0e, 0x52, 0x1b, 0x9c, 0xd8, 0x6f, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0x3f, 0x59, 0xd9, 0xd8, 0x9b, 0x5c, 0x18, 0x5d, 0xd9, 0x06, 0x27, 0xf6, 0x9b, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xa3, 0xbd, 0xb5, 0x95, 0x6d, 0x50, 0x0c, 0xc8, 0xae, 0x41, 0x83, 0xf7, 0xd1, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0xd6, 0xe2, 0xa4, 0x37, 0x58, 0x0e, 0xc9, 0x34, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0x0b, 0x2c, 0x9c, 0x37, 0x08, 0xd2, 0xd3, 0x0d, 0x82, 0xf5, 0x76, 0x0d, 0xda, 0x82, 0x47, 0xde, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0xad, 0xef, 0x8b, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x04, 0xeb, 0xed, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x29, 0xad, 0x82, 0x83, 0x35, 0x44, 0xad, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x3c, 0x62, 0x61, 0x73, 0x61, 0x6c, 0x1b, 0x34, 0xf0, 0x27, 0xdd, 0x6a, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0x80, 0x47, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x20, 0x68, 0x79, 0x67, 0x69, 0x65, 0x6e, 0x69, 0x63, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x6c, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x1b, 0x3e, 0x57, 0xda, 0x60, 0x15, 0xdf, 0xf7, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x60, 0xbd, 0x3d, 0x68, 0xe0, 0x4f, 0x7a, 0x0d, 0x9a, 0x7a, 0x20, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x2d, 0xa8, 0x1b, 0x94, 0x4d, 0xf5, 0x6b, 0xf8, 0xfa, 0x65, 0x83, 0xf6, 0x1c, 0x08, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xc7, 0xfe, 0x9b, 0x0d, 0xca, 0xa6, 0xfa, 0x0d, 0xda, 0x73, 0x20, 0x6c, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x04, 0xeb, 0x6d, 0x6d, 0x90, 0x94, 0x16, 0x7c, 0xd0, 0xf2, 0xa1, 0x74, 0x6b, 0xd0, 0xe0, 0x1a, 0xd8, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xb4, 0x83, 0x60, 0x83, 0x06, 0xfe, 0xa4, 0xd7, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x20, 0x58, 0x6f, 0x0f, 0x1a, 0x44, 0x95, 0xae, 0x35, 0x68, 0x06, 0x40, 0xf9, 0xa0, 0xb1, 0x58, 0xe9, 0x35, 0x68, 0xd1, 0x38, 0x79, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xa5, 0x55, 0xb0, 0x41, 0x03, 0x7f, 0xd2, 0x07, 0xcd, 0xa1, 0x4a, 0xaf, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xaa, 0xed, 0x7d, 0x70, 0x88, 0xe9, 0xd8, 0x60, 0x49, 0xfd, 0xd2, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x29, 0xb9, 0x88, 0x83, 0x96, 0x0f, 0xa5, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x08, 0xd6, 0xdb, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x7b, 0x6b, 0x59, 0x07, 0x0d, 0x99, 0x4a, 0x1f, 0xb4, 0x7c, 0x28, 0xdd, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x05, 0xbf, 0xde, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x82, 0xf5, 0x76, 0x83, 0x36, 0x69, 0x26, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xf8, 0xea, 0xdc, 0xe4, 0xca, 0xca, 0xd8, 0x0e, 0x5a, 0xd3, 0x95, 0x6e, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0xd2, 0x78, 0xef, 0x83, 0x43, 0x4c, 0xc7, 0x41, 0x63, 0xb1, 0xd2, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0x53, 0x7c, 0x1f, 0x1c, 0x62, 0x3a, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x08, 0xd6, 0xdb, 0x0d, 0xda, 0xa4, 0x99, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xe0, 0xab, 0x73, 0x33, 0x7b, 0x63, 0x23, 0x3b, 0x68, 0x4d, 0x57, 0xba, 0x35, 0x68, 0xa4, 0x97, 0xf0, 0xa0, 0xb1, 0x58, 0xe9, 0x35, 0x68, 0xd8, 0x02, 0x7a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x35, 0xa5, 0x7b, 0x07, 0x0d, 0xfc, 0x49, 0x1f, 0x34, 0x2d, 0x2b, 0xbd, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x99, 0xe6, 0xf7, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x19, 0x4d, 0xe9, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0x2c, 0x6d, 0xfd, 0x3e, 0x38, 0xc4, 0x74, 0x1c, 0xb4, 0x14, 0x28, 0xbd, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0xed, 0xef, 0xf7, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0x81, 0x85, 0xf3, 0x06, 0x25, 0x3c, 0xe6, 0x82, 0xd3, 0x07, 0x6d, 0xff, 0x49, 0xaf, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xc1, 0x7a, 0xbb, 0xe1, 0x6d, 0x9d, 0xc1, 0xd3, 0x83, 0xb6, 0xff, 0xa4, 0xdb, 0xa0, 0x30, 0x54, 0xdd, 0xa0, 0x75, 0x80, 0xe9, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x1a, 0x24, 0x98, 0xde, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0x41, 0x4b, 0xff, 0xd2, 0x6b, 0xd0, 0xd2, 0xbf, 0xf4, 0x86, 0xb7, 0x75, 0x06, 0xa7, 0x0f, 0x5a, 0xfa, 0x97, 0x6e, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xad, 0x9b, 0x2b, 0x03, 0x61, 0x0b, 0x9b, 0xa3, 0x03, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0x0b, 0xc0, 0xbf, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0x0b, 0x2c, 0x9c, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x68, 0xe9, 0x5f, 0xfa, 0xa0, 0x91, 0x83, 0xe9, 0xd5, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x7b, 0xae, 0xac, 0x0c, 0xa4, 0xce, 0x8d, 0xac, 0x4c, 0x0e, 0xa4, 0x44, 0x6c, 0x6c, 0x4c, 0x6c, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0x29, 0x01, 0x3f, 0x38, 0xc4, 0x74, 0x1c, 0xb4, 0x14, 0x28, 0xbd, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0xad, 0x03, 0xf8, 0xc1, 0x21, 0xa6, 0xe3, 0xa0, 0xb1, 0x58, 0xe9, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x8b, 0xcb, 0xbe, 0x0f, 0x0e, 0x31, 0x1d, 0x07, 0x8d, 0xc5, 0x4a, 0xaf, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x94, 0x03, 0x7e, 0x70, 0x88, 0xe9, 0x38, 0x68, 0x2c, 0x56, 0x7a, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x92, 0x26, 0xf0, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xdd, 0x92, 0x60, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xa8, 0x93, 0xc6, 0x41, 0xcb, 0x87, 0xd2, 0x07, 0x4d, 0xc5, 0x4a, 0xaf, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x9e, 0x62, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x1b, 0x3e, 0x57, 0xda, 0x60, 0x95, 0x1f, 0xf8, 0xc1, 0x21, 0xa6, 0x63, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x2b, 0xd4, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0x4a, 0x0b, 0x3e, 0x38, 0x2c, 0xcf, 0x1c, 0xb4, 0x7c, 0x28, 0xbd, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x4d, 0x24, 0xf8, 0xc1, 0x21, 0xa6, 0xe3, 0xa0, 0xd9, 0x78, 0xe9, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x2b, 0x49, 0xc1, 0x0f, 0x0e, 0x31, 0x1d, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0xcd, 0xf5, 0x84, 0x0d, 0x1a, 0x44, 0x95, 0x3e, 0x68, 0xf9, 0x50, 0x7a, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x9a, 0x67, 0xf0, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x4d, 0x45, 0xe1, 0xa0, 0x19, 0x58, 0xe9, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0x8b, 0xca, 0xc1, 0x0f, 0x0e, 0x31, 0x1d, 0x07, 0xcd, 0xc6, 0x4b, 0xaf, 0x86, 0x27, 0xde, 0x37, 0x68, 0x3f, 0x62, 0xfa, 0xa0, 0x5d, 0x82, 0xc1, 0x83, 0x96, 0x33, 0xa6, 0x57, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0xb9, 0xff, 0x3e, 0x38, 0xc4, 0x74, 0x1c, 0xb4, 0x14, 0x28, 0xbd, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0xdd, 0x1a, 0xf8, 0xc1, 0x21, 0xa6, 0xe3, 0xa0, 0xa5, 0x40, 0xe9, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xeb, 0x7a, 0xc1, 0x0f, 0x0e, 0x31, 0x1d, 0x07, 0x2d, 0x05, 0x4a, 0xaf, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xe3, 0x10, 0x7e, 0x70, 0x88, 0xe9, 0x38, 0x68, 0x29, 0x50, 0xba, 0xd5, 0xa0, 0xe1, 0x15, 0xcd, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x22, 0x2b, 0x93, 0x4b, 0xb3, 0x2b, 0x03, 0x71, 0x0b, 0x6b, 0x2b, 0x03, 0x31, 0x93, 0x7b, 0x6b, 0x03, 0x99, 0x83, 0x2b, 0x1b, 0xdb, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x58, 0xdf, 0x09, 0xbd, 0x41, 0x90, 0x9e, 0xae, 0x71, 0xe8, 0x20, 0x58, 0x6f, 0xd7, 0x60, 0x15, 0xa3, 0xf3, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x34, 0xb0, 0x38, 0x75, 0xd0, 0xf6, 0x9f, 0xf4, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x49, 0x69, 0xc1, 0x1b, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x68, 0xfb, 0x4f, 0x7a, 0x0d, 0x8e, 0xe1, 0x06, 0x07, 0x4d, 0x6a, 0x5e, 0x6c, 0x70, 0x0c, 0x37, 0x38, 0x68, 0xe9, 0x71, 0x7a, 0x0d, 0x96, 0xe8, 0x3a, 0x1f, 0x34, 0x16, 0x2b, 0xbd, 0x06, 0xab, 0x15, 0xbd, 0x0f, 0x1a, 0x8b, 0x95, 0x5e, 0x83, 0xb3, 0x98, 0xe8, 0x06, 0xc7, 0x70, 0x83, 0x83, 0x06, 0xfe, 0xa4, 0xd7, 0x60, 0xa9, 0xb6, 0xf7, 0x41, 0x7b, 0x9b, 0xd3, 0x6b, 0xb0, 0xe0, 0xd7, 0x7b, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xb6, 0xff, 0xa4, 0x37, 0x28, 0x28, 0x32, 0x37, 0x28, 0x06, 0x64, 0x37, 0x68, 0x90, 0x60, 0x7a, 0x0d, 0x1f, 0xe4, 0xac, 0x41, 0x31, 0x89, 0xb9, 0x41, 0xc0, 0x06, 0x6d, 0x1c, 0x3a, 0x68, 0x90, 0x60, 0x7a, 0x83, 0x82, 0x22, 0x73, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0x0d, 0x12, 0x4c, 0x6f, 0x70, 0x0c, 0x37, 0x38, 0x68, 0x75, 0x60, 0x7a, 0x0d, 0xd6, 0x53, 0x7c, 0x6f, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0xee, 0x01, 0xe7, 0x06, 0x8d, 0xdd, 0x77, 0x1d, 0xb4, 0x7c, 0x28, 0xbd, 0x06, 0x4b, 0xe3, 0xbd, 0x0f, 0x1a, 0x8b, 0x95, 0x5e, 0x83, 0x15, 0x4c, 0xdf, 0x07, 0x8d, 0xc5, 0x4a, 0xaf, 0xc1, 0x72, 0x99, 0xef, 0x83, 0xc6, 0x62, 0xa5, 0xd7, 0x60, 0x15, 0xdf, 0xf7, 0x41, 0xb3, 0xf1, 0xd2, 0x6b, 0xb0, 0x4c, 0xf3, 0xfb, 0xa0, 0xd9, 0x78, 0xe9, 0x35, 0x58, 0xda, 0xfa, 0x7d, 0xd0, 0x56, 0xec, 0xf4, 0x1a, 0xac, 0xfd, 0xfd, 0xde, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x0e, 0x5a, 0x15, 0x98, 0x5e, 0x83, 0x05, 0xe0, 0xdf, 0x07, 0x8d, 0x10, 0x4f, 0xaf, 0xc1, 0x9a, 0xfb, 0xef, 0x83, 0x82, 0x22, 0x73, 0x0d, 0xd6, 0x3a, 0x80, 0x1f, 0x34, 0x16, 0x2b, 0xbd, 0x06, 0x8b, 0xcb, 0xbe, 0x0f, 0x1a, 0x8b, 0x95, 0x5e, 0x83, 0x35, 0x25, 0xe0, 0x07, 0xcd, 0xc6, 0x4b, 0xaf, 0xc1, 0xa2, 0x1c, 0xf0, 0x83, 0xc6, 0x62, 0xa5, 0xd7, 0x60, 0x49, 0x13, 0xf8, 0x41, 0x63, 0xb1, 0xd2, 0x6b, 0xb0, 0x6e, 0x0d, 0xfc, 0xa0, 0xa0, 0xc8, 0x5c, 0x83, 0x55, 0x7e, 0xe0, 0x07, 0x6d, 0xc5, 0x4e, 0xaf, 0xc1, 0x9a, 0x48, 0xf0, 0x83, 0x66, 0xe3, 0xa5, 0xd7, 0x60, 0x25, 0x29, 0xf8, 0x41, 0x63, 0xb1, 0xd2, 0x6b, 0xb0, 0xae, 0x17, 0xfc, 0xa0, 0xa0, 0xc8, 0x5c, 0x83, 0x35, 0xcf, 0xe0, 0x07, 0x8d, 0xc5, 0x4a, 0xaf, 0xc1, 0xa2, 0x72, 0xf0, 0x83, 0xc6, 0x62, 0xa5, 0xd7, 0x60, 0x49, 0x3e, 0xf8, 0x41, 0x23, 0xc4, 0xd3, 0x6b, 0xb0, 0xc6, 0x21, 0xfc, 0xa0, 0xa0, 0xc8, 0x6c, 0x16, 0xe0, 0x83, 0x4b, 0x2b, 0x1b, 0x2b, 0x9b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xa9, 0xcc, 0xad, 0xae, 0xad, 0x4c, 0x2e, 0x8c, 0xae, 0x0c, 0x84, 0xae, 0x0e, 0x8e, 0xad, 0x0c, 0xe4, 0x2e, 0xcd, 0xed, 0x6c, 0x6e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x60, 0x34, 0x39, 0x58, 0xfe, 0xef, 0xbd, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x35, 0xbc, 0xad, 0xb3, 0x38, 0xce, 0x41, 0x30, 0x9a, 0x74, 0xb0, 0xf2, 0x04, 0x7b, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x48, 0xd5, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0x7e, 0x51, 0xda, 0x60, 0x5d, 0xa8, 0xf9, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x3b, 0xf2, 0xbc, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x65, 0x29, 0x38, 0x28, 0xeb, 0x3c, 0x3b, 0x9c, 0x62, 0x6b, 0xd0, 0xc0, 0x69, 0xd7, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xf8, 0x04, 0x27, 0xf7, 0x46, 0x56, 0x37, 0x56, 0x06, 0x12, 0x06, 0x32, 0xf6, 0x26, 0x27, 0x57, 0x36, 0x46, 0xc7, 0x96, 0x07, 0x42, 0x97, 0x07, 0x57, 0x46, 0x06, 0x42, 0x56, 0x66, 0x16, 0x56, 0xc7, 0x46, 0x07, 0x92, 0xe6, 0x36, 0x47, 0x17, 0xe6, 0x36, 0x56, 0xb6, 0xc1, 0x72, 0x48, 0xa6, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0x0b, 0x2c, 0x9c, 0x37, 0x38, 0x39, 0xc8, 0x6d, 0x10, 0xac, 0xb7, 0x6b, 0x70, 0xce, 0x5f, 0xda, 0xa0, 0x11, 0xd5, 0x86, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x5b, 0x58, 0xd2, 0x6d, 0x50, 0x96, 0xbc, 0x2f, 0xc0, 0x2f, 0x57, 0xc6, 0x16, 0x46, 0x97, 0x66, 0x57, 0xb6, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x00, 0x6f, 0x98, 0x5b, 0x18, 0x5b, 0x9e, 0x5e, 0xd9, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x6d, 0x09, 0x49, 0x77, 0x50, 0x50, 0x8a, 0x1f, 0x04, 0x2b, 0xeb, 0x1a, 0xb4, 0x05, 0x8f, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x4d, 0x93, 0xde, 0xa0, 0x25, 0x42, 0xe9, 0xd6, 0xa0, 0xc1, 0x35, 0xb0, 0x0d, 0x97, 0xd4, 0x06, 0xcd, 0x9b, 0x76, 0x6d, 0xd0, 0xb8, 0xac, 0xf4, 0x1a, 0xb4, 0xa2, 0x14, 0xbb, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0xf8, 0x93, 0xde, 0xa0, 0xa9, 0xa4, 0xd8, 0x5a, 0x83, 0x66, 0x00, 0x94, 0x37, 0x5c, 0x52, 0x1b, 0x34, 0x6f, 0xda, 0xb5, 0x41, 0xe3, 0xb2, 0xd2, 0xab, 0x41, 0x7b, 0x18, 0xd2, 0x1d, 0xb4, 0xb7, 0x39, 0xdd, 0x1a, 0xb4, 0x68, 0x9c, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x4d, 0x93, 0xde, 0xa0, 0x39, 0x5c, 0xe9, 0xd6, 0xa0, 0xcd, 0x65, 0xe9, 0x0d, 0x97, 0xd4, 0x06, 0xcd, 0x9b, 0x76, 0x1d, 0x34, 0xff, 0x2c, 0xbd, 0x06, 0xed, 0xf2, 0x4a, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0xf6, 0x4a, 0x0a, 0x0e, 0x5a, 0x3e, 0x94, 0x5e, 0x83, 0x26, 0xae, 0xa5, 0x37, 0x5c, 0x52, 0x1b, 0x34, 0x6f, 0xda, 0xb5, 0x41, 0xe3, 0xb2, 0xd2, 0x6b, 0xd0, 0xfa, 0x0e, 0xf5, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0x9a, 0x32, 0x8c, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0x2d, 0x3d, 0x4e, 0xaf, 0xc1, 0x31, 0xdc, 0x60, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe6, 0xd3, 0xa7, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0x6d, 0xff, 0x49, 0x57, 0x6b, 0xd0, 0xca, 0xb6, 0xf4, 0x86, 0x4b, 0x6a, 0x83, 0xe6, 0x4d, 0xbb, 0x0e, 0x1a, 0xfc, 0x96, 0x5e, 0x83, 0x46, 0x7a, 0x09, 0x37, 0x5c, 0x52, 0x1b, 0x34, 0x6f, 0xda, 0xb5, 0x41, 0xe3, 0xb2, 0xd2, 0x6b, 0xd0, 0xfa, 0x0e, 0xf5, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0x9a, 0x32, 0x8c, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0x0d, 0xfc, 0x49, 0x1f, 0x94, 0x75, 0x9e, 0xad, 0x41, 0xc3, 0x16, 0xd0, 0x1b, 0x2e, 0xa9, 0x0d, 0x9a, 0x37, 0xed, 0x3a, 0x68, 0x6c, 0x5d, 0x7a, 0x0d, 0x9a, 0xa3, 0x97, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x8d, 0xa6, 0x49, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x70, 0x93, 0x3e, 0x68, 0xf9, 0x50, 0xba, 0x35, 0x68, 0x11, 0x5f, 0x7a, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x8d, 0xa6, 0x49, 0x6f, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0xb0, 0x70, 0xde, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0xa5, 0x7f, 0xe9, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x0e, 0x9a, 0x37, 0xed, 0xda, 0x70, 0x49, 0x2d, 0xc0, 0x33, 0xc6, 0x56, 0x16, 0x26, 0x77, 0xd0, 0xaa, 0xc0, 0xf4, 0x06, 0x85, 0xa1, 0xea, 0x06, 0x4d, 0xf1, 0x51, 0x6f, 0x78, 0x50, 0x72, 0x83, 0x76, 0xfa, 0xa8, 0x37, 0x5c, 0x52, 0x1b, 0xb4, 0xfe, 0x47, 0x7d, 0xd0, 0x6c, 0xc2, 0xf4, 0x1a, 0x34, 0x5f, 0x32, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x4d, 0x93, 0x5e, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x14, 0x58, 0x6d, 0x78, 0x5b, 0xe7, 0xa0, 0xf5, 0x3f, 0xea, 0x83, 0xd6, 0x74, 0xa5, 0x5b, 0x83, 0x16, 0x8a, 0xa6, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xa3, 0x69, 0xd2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x26, 0xdc, 0xa4, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0x0a, 0x35, 0x6c, 0xd0, 0xce, 0x9a, 0xe5, 0x41, 0xcb, 0x87, 0xd2, 0xb5, 0x06, 0x8d, 0x48, 0x4d, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0x96, 0xa9, 0x13, 0xd6, 0x70, 0x49, 0x6d, 0xd0, 0xbc, 0x69, 0xd7, 0x41, 0xd3, 0xb2, 0xd2, 0x07, 0x6d, 0xc3, 0x51, 0xaf, 0x41, 0x53, 0x36, 0xd3, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xd1, 0x34, 0xe9, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xeb, 0x96, 0x04, 0x1b, 0x34, 0xb4, 0x33, 0xbd, 0x41, 0x63, 0xa0, 0xd4, 0xb5, 0x06, 0x4d, 0x65, 0x4d, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x46, 0xd3, 0xa4, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0xa9, 0x28, 0x6c, 0xd0, 0xc0, 0x9f, 0xf4, 0x1a, 0x1e, 0x94, 0xdc, 0xa0, 0x9d, 0x3e, 0xea, 0x0d, 0x97, 0xd4, 0x06, 0xad, 0xff, 0x51, 0x1f, 0x34, 0x2d, 0x2b, 0x5d, 0x6b, 0xd0, 0xec, 0xd9, 0xf4, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x34, 0x4d, 0x7a, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x84, 0x9b, 0xf4, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x78, 0xa4, 0xb9, 0xd1, 0x95, 0xc9, 0x99, 0x85, 0x8d, 0x95, 0x6d, 0xd0, 0x82, 0xce, 0xd4, 0x41, 0x6b, 0xba, 0xd2, 0xb5, 0x06, 0x2d, 0xaf, 0x4d, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x46, 0xd3, 0xa4, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x4d, 0xb8, 0x49, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0xeb, 0xa5, 0xde, 0xa0, 0x5d, 0x5a, 0xaf, 0x83, 0xd6, 0x74, 0xa5, 0x6b, 0x0d, 0xda, 0x9f, 0x9b, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x8d, 0xa6, 0x49, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x70, 0x93, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xd7, 0x4b, 0xbd, 0x41, 0x83, 0xce, 0x56, 0x07, 0xad, 0xe9, 0x4a, 0xd7, 0x1a, 0x34, 0xfe, 0x36, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x4d, 0x93, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xe1, 0x26, 0xbd, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xae, 0x97, 0x7a, 0x83, 0xd6, 0xc3, 0xbd, 0x0e, 0x5a, 0xd3, 0x95, 0xae, 0x56, 0x83, 0xf6, 0xdd, 0xa4, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xc0, 0xab, 0x32, 0x3c, 0x38, 0xb9, 0xb2, 0xb9, 0x39, 0x90, 0x30, 0x10, 0xb4, 0xb7, 0x37, 0x37, 0x90, 0xb0, 0xb3, 0xb0, 0x34, 0xb7, 0x39, 0x3a, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0x37, 0xb9, 0xb4, 0xb3, 0x34, 0xb7, 0x30, 0x36, 0x90, 0xb9, 0x3a, 0x31, 0xb5, 0xb2, 0x31, 0xba, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0x02, 0x85, 0xd4, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x60, 0xe1, 0xbc, 0x41, 0x41, 0x1a, 0xbb, 0x06, 0x25, 0x74, 0xec, 0x1a, 0x2c, 0x23, 0xb0, 0x3a, 0x68, 0x85, 0x98, 0xe0, 0x20, 0x4c, 0xc7, 0xd6, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0x98, 0xcc, 0x41, 0xbb, 0xbc, 0x58, 0x1b, 0xac, 0x8f, 0x5f, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x27, 0x82, 0xb6, 0x0d, 0xd6, 0xc7, 0x2f, 0xae, 0xe1, 0x2f, 0x9a, 0x0d, 0xd6, 0x8e, 0x3c, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x0a, 0x4c, 0xf6, 0xa0, 0x55, 0x5e, 0xac, 0x83, 0xb2, 0xce, 0xb3, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x5f, 0x4e, 0x6e, 0xd0, 0xd6, 0x89, 0xd4, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x10, 0xae, 0x61, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x46, 0x7a, 0xc1, 0x41, 0x2a, 0xd0, 0xd8, 0x41, 0x4b, 0x27, 0x52, 0xb3, 0x06, 0x2d, 0x8f, 0x50, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x80, 0x17, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x61, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x1b, 0x94, 0x65, 0xd8, 0x6b, 0xf8, 0x5c, 0xe9, 0xa0, 0xe5, 0x6e, 0xb3, 0x59, 0x66, 0x0d, 0xda, 0xff, 0xa3, 0xde, 0x70, 0x49, 0x6d, 0x50, 0xd4, 0x88, 0xaf, 0xc6, 0xe3, 0x83, 0x76, 0x47, 0xa8, 0x37, 0xbc, 0xad, 0xb3, 0x38, 0xce, 0x41, 0xfb, 0x7f, 0xd4, 0xb5, 0x02, 0x3c, 0x62, 0x61, 0x73, 0x69, 0xe3, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x2b, 0x06, 0x2e, 0x0f, 0x96, 0x4f, 0x3a, 0x6f, 0xf8, 0x8b, 0x66, 0x83, 0x05, 0x16, 0xce, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0xcb, 0x74, 0x30, 0xd7, 0xa0, 0x81, 0xc5, 0xa9, 0x0d, 0xce, 0xf9, 0x4b, 0x1b, 0xb4, 0x4c, 0x9d, 0xb0, 0x41, 0x3b, 0x7d, 0xd4, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0x81, 0x85, 0xf3, 0x06, 0x8b, 0xca, 0x93, 0x36, 0x68, 0x9e, 0xfc, 0x61, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x32, 0x27, 0xd9, 0x0d, 0x0f, 0xde, 0xac, 0xc1, 0x31, 0xdc, 0x60, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0x90, 0x51, 0xd7, 0x41, 0x59, 0xe7, 0x79, 0x50, 0xd6, 0x79, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x5b, 0x47, 0x58, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x57, 0x52, 0xb0, 0x41, 0x73, 0x3e, 0xd5, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0xed, 0x2b, 0xd8, 0x60, 0x2d, 0x95, 0xdd, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x58, 0xa6, 0x83, 0xd9, 0x1a, 0xde, 0xd6, 0x19, 0xe0, 0x31, 0x2b, 0xa3, 0x1b, 0x43, 0x6b, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xfa, 0xef, 0xb0, 0x86, 0xb7, 0x75, 0x06, 0xf0, 0x31, 0x2b, 0xa3, 0x1b, 0x43, 0x6b, 0xb9, 0x4b, 0x73, 0x3b, 0xdb, 0xa0, 0x05, 0xa7, 0xea, 0x83, 0x76, 0x21, 0x9d, 0xd7, 0x60, 0xfd, 0x3e, 0xf3, 0x06, 0xe7, 0xfc, 0xa5, 0x0d, 0x5a, 0xa6, 0x4e, 0xd8, 0xa0, 0x9d, 0x3e, 0xea, 0x0d, 0x9f, 0xd8, 0x6c, 0xd0, 0xae, 0x54, 0xf5, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x8d, 0xf4, 0x82, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x05, 0x26, 0xbb, 0x41, 0xb8, 0xa1, 0x76, 0x90, 0x0a, 0x34, 0xd6, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x23, 0xbd, 0x60, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0x81, 0xc9, 0x6e, 0x10, 0x1c, 0xa9, 0x1d, 0xa4, 0x02, 0x8d, 0xb5, 0x06, 0xeb, 0x10, 0x9a, 0x37, 0x58, 0x54, 0x9e, 0xb4, 0x41, 0x3b, 0x4f, 0x0e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x06, 0xfe, 0x12, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x4d, 0x69, 0x15, 0x6c, 0x90, 0x94, 0x16, 0x7c, 0x90, 0x9e, 0x02, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0x4a, 0x0b, 0x3e, 0x68, 0xa5, 0x6c, 0xab, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x53, 0x5a, 0x05, 0x1b, 0xa4, 0x38, 0x39, 0x1d, 0xa4, 0xa7, 0x40, 0x6d, 0x70, 0xce, 0x5f, 0xda, 0xa0, 0xfd, 0x59, 0x87, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x03, 0x7f, 0x09, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa6, 0xb4, 0x0a, 0x36, 0x48, 0x4a, 0x0b, 0x3e, 0x48, 0xb5, 0x85, 0x3b, 0x68, 0xf5, 0xae, 0x7a, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xa5, 0x55, 0xb0, 0x41, 0x8a, 0x93, 0xd3, 0x41, 0xaa, 0x2d, 0xdc, 0x1a, 0xac, 0x77, 0x67, 0x3e, 0x68, 0xc1, 0xa9, 0x7a, 0x0d, 0x16, 0x53, 0x34, 0x6f, 0x70, 0xce, 0x5f, 0xda, 0xa0, 0xfd, 0x59, 0x87, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x03, 0x7f, 0x09, 0x1b, 0x34, 0x58, 0x26, 0x7d, 0xd0, 0xea, 0x5d, 0xf5, 0x41, 0x03, 0xb3, 0x9a, 0x6b, 0xb0, 0x5e, 0xa4, 0xf9, 0x60, 0x0d, 0x95, 0x73, 0xb3, 0x06, 0xcd, 0x3b, 0x55, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x03, 0xdb, 0x5b, 0x18, 0x19, 0x08, 0x1d, 0x5a, 0x19, 0x88, 0x99, 0x5c, 0xd8, 0x59, 0x5b, 0x99, 0x1b, 0xdd, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x60, 0xe1, 0x7c, 0xd0, 0xee, 0x5d, 0xf5, 0xe1, 0x14, 0x5b, 0x80, 0x6f, 0xee, 0x2e, 0x8d, 0x6e, 0x0c, 0xdd, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0xff, 0xd1, 0x79, 0xb0, 0xc0, 0x0a, 0x7a, 0x0d, 0x7f, 0x2e, 0x6d, 0x30, 0xe6, 0x9f, 0x0e, 0x96, 0x7b, 0x7c, 0xb7, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0xc0, 0xc2, 0x79, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x12, 0x5d, 0x79, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0xd6, 0x3e, 0xa8, 0x37, 0x5c, 0x52, 0x1b, 0xb4, 0xfe, 0x47, 0xbd, 0x06, 0xc1, 0x7a, 0x7b, 0xd0, 0x18, 0x9b, 0x70, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0xf8, 0xbe, 0x7d, 0x83, 0x96, 0x36, 0x4b, 0x0f, 0x1a, 0xb9, 0xca, 0x5a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x76, 0xda, 0x84, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0x50, 0xa2, 0x2b, 0xaf, 0x41, 0x89, 0xae, 0xbc, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x83, 0x12, 0x5d, 0xb9, 0x0d, 0x16, 0x95, 0x27, 0x6d, 0xd0, 0xce, 0x93, 0xc3, 0x1a, 0x9c, 0xf3, 0x97, 0x36, 0x68, 0x4e, 0x97, 0x60, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xac, 0x50, 0xc3, 0x06, 0xad, 0xa3, 0xa7, 0xad, 0xe1, 0x41, 0xc9, 0x0d, 0xda, 0xe9, 0xa3, 0x3e, 0x68, 0xca, 0xb6, 0xba, 0x0d, 0x97, 0xd4, 0x06, 0x4d, 0x4e, 0x55, 0x1f, 0xb4, 0x7f, 0xba, 0xb5, 0x41, 0x83, 0xb3, 0xd5, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0xa5, 0xcd, 0xd2, 0x66, 0x01, 0xbe, 0x31, 0xb4, 0xb7, 0xb4, 0xb1, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3c, 0x68, 0x0b, 0xa3, 0x1b, 0x43, 0x03, 0x31, 0xab, 0x63, 0x63, 0x03, 0x69, 0x7b, 0x23, 0x2b, 0x63, 0x9b, 0x63, 0x01, 0x11, 0xcb, 0x03, 0xa1, 0x93, 0xcb, 0x4b, 0x73, 0x3b, 0x03, 0xa1, 0x43, 0x2b, 0x6b, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x2d, 0x9f, 0x56, 0x6f, 0xf8, 0x8b, 0x66, 0x83, 0x05, 0x16, 0xce, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x94, 0xe8, 0xca, 0x1b, 0x34, 0x38, 0x5b, 0xbd, 0xc1, 0xa2, 0xf2, 0xa4, 0x0d, 0xda, 0x79, 0x72, 0x58, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xa7, 0x4b, 0xb0, 0x41, 0x6b, 0xce, 0xd5, 0x1b, 0xb4, 0x2b, 0x55, 0xdd, 0x06, 0x0d, 0xce, 0x56, 0x1f, 0x34, 0xe7, 0x5b, 0x3d, 0x6b, 0xd0, 0xe8, 0x54, 0xf5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xde, 0x6c, 0x6f, 0x61, 0x64, 0x2c, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x77, 0x69, 0x6e, 0x67, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0xed, 0xc8, 0xf3, 0x86, 0x5f, 0x5c, 0x0e, 0x5a, 0x1b, 0x5b, 0x9e, 0x35, 0x68, 0xef, 0x83, 0x7a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xd8, 0xde, 0xc6, 0xc2, 0xd8, 0x40, 0xc6, 0xde, 0xdc, 0xe6, 0xe8, 0xe4, 0xea, 0xc6, 0xe8, 0xde, 0xe4, 0x36, 0x58, 0x0e, 0xc9, 0x34, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0x81, 0x85, 0xf3, 0x06, 0x41, 0x7a, 0xba, 0x41, 0xb0, 0xde, 0xae, 0x41, 0x5b, 0xf0, 0xc8, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xd1, 0x34, 0xe9, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x6d, 0x9a, 0x54, 0x77, 0xd0, 0x26, 0x24, 0xf5, 0x41, 0xcb, 0x87, 0xd2, 0xad, 0x41, 0x83, 0x6b, 0x60, 0x1b, 0x2e, 0xa9, 0x0d, 0x5a, 0xfb, 0xa0, 0x3e, 0x68, 0x43, 0x86, 0x7a, 0x0d, 0x9a, 0x01, 0x50, 0xde, 0x70, 0x49, 0x6d, 0xd0, 0xda, 0x07, 0xf5, 0x41, 0xab, 0x3a, 0xd4, 0x6b, 0xd0, 0xa2, 0x71, 0xf2, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x1a, 0x4d, 0x93, 0xde, 0xe0, 0x9c, 0xbf, 0xb4, 0x41, 0xfb, 0xb3, 0x0e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x06, 0xfe, 0x12, 0x36, 0x68, 0xc1, 0xa9, 0x7a, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x94, 0x56, 0xc1, 0x06, 0x49, 0x69, 0xc1, 0x07, 0xcd, 0xa1, 0x4a, 0x77, 0xd0, 0x1c, 0xae, 0xf4, 0x1a, 0xb4, 0xb2, 0x2d, 0xbd, 0xe1, 0x92, 0xda, 0xa0, 0xb5, 0x0f, 0xea, 0x83, 0x06, 0xbf, 0xa5, 0xd7, 0xa0, 0xcd, 0x65, 0xe9, 0x0d, 0x97, 0xd4, 0x06, 0xad, 0x7d, 0x50, 0x1f, 0x34, 0xff, 0x2c, 0xbd, 0x06, 0xed, 0xf2, 0x4a, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x46, 0xd3, 0xa4, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0xe6, 0x21, 0x6c, 0xd0, 0xf6, 0x11, 0xf5, 0x41, 0xfb, 0x4d, 0xd5, 0xad, 0x41, 0x23, 0xbd, 0x84, 0x1b, 0x2e, 0xa9, 0x0d, 0x5a, 0xfb, 0xa0, 0x3e, 0x68, 0x45, 0x8c, 0x7a, 0x0d, 0x9a, 0xb8, 0x96, 0xde, 0x70, 0x49, 0x6d, 0xd0, 0xda, 0x07, 0xf5, 0x41, 0xeb, 0x4d, 0xd4, 0x6b, 0xd0, 0xb0, 0x05, 0xf4, 0x86, 0x4b, 0x6a, 0x83, 0xd6, 0x3e, 0xa8, 0x0f, 0x1a, 0x5b, 0x97, 0x5e, 0x83, 0x96, 0x2b, 0xa5, 0x37, 0x38, 0xe7, 0x2f, 0x6d, 0xd0, 0xaa, 0xbe, 0xc1, 0x1a, 0x2e, 0xa9, 0x0d, 0x5a, 0xfb, 0xa0, 0xde, 0xa0, 0x19, 0x4d, 0xe9, 0x35, 0x68, 0x5a, 0x99, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xb1, 0x66, 0x36, 0x28, 0x2a, 0xc5, 0x0f, 0x5a, 0xe5, 0xc5, 0x6a, 0x83, 0xa3, 0x0d, 0xdf, 0x06, 0xcd, 0xad, 0x29, 0x6f, 0x70, 0x62, 0xbf, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x72, 0xe7, 0xfd, 0xa0, 0x0d, 0x3a, 0xe5, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0xb8, 0x7f, 0x7c, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x12, 0xa9, 0x7a, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x16, 0x81, 0x8c, 0x6e, 0x50, 0x36, 0xd5, 0x1f, 0x34, 0x87, 0x2a, 0xbd, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0xba, 0x50, 0xf3, 0x83, 0xa6, 0x00, 0x38, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0xbb, 0x2c, 0x05, 0x6b, 0xb8, 0xa4, 0x36, 0x68, 0xed, 0x83, 0x7a, 0x0d, 0x82, 0xf5, 0xf6, 0xa0, 0x55, 0x24, 0x83, 0x83, 0x06, 0x9c, 0xac, 0x5b, 0x83, 0x16, 0x9c, 0xa6, 0x37, 0x38, 0xe7, 0x2f, 0x6d, 0xd0, 0x88, 0x6a, 0xc3, 0x1a, 0x2e, 0xa9, 0x0d, 0x5a, 0xfb, 0xa0, 0x3e, 0x68, 0x64, 0x5e, 0x7a, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0x8d, 0xa8, 0x36, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x84, 0x6b, 0xd8, 0xa0, 0x0d, 0x9c, 0xe6, 0x83, 0xe6, 0x50, 0xa5, 0x37, 0x38, 0xe7, 0x2f, 0x6d, 0xd0, 0x88, 0x6a, 0xc3, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xd9, 0x3c, 0x84, 0x35, 0x48, 0x4a, 0x0b, 0x3e, 0x08, 0x58, 0xd6, 0x35, 0x48, 0x4a, 0x0b, 0x3e, 0x38, 0x2e, 0xcf, 0xb4, 0xc1, 0x39, 0x7f, 0x69, 0x83, 0xf6, 0x67, 0x1d, 0xd6, 0xe0, 0xe8, 0x3a, 0xb8, 0x41, 0xf3, 0x15, 0x0e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x06, 0xfe, 0x12, 0xd6, 0x20, 0x29, 0x2d, 0xf8, 0x20, 0x6d, 0x70, 0x75, 0x83, 0x26, 0xfb, 0xac, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xf0, 0x97, 0xb0, 0x41, 0x93, 0x7d, 0xd6, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x66, 0xf3, 0x10, 0x36, 0x68, 0xf2, 0xcf, 0xfa, 0xa0, 0x19, 0x45, 0xeb, 0x3a, 0x68, 0xb2, 0xcf, 0x7a, 0x0d, 0x5a, 0x76, 0x97, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0x0b, 0x2c, 0x9c, 0x37, 0x38, 0xe7, 0x2f, 0x6d, 0xd0, 0x88, 0x6a, 0xc3, 0x06, 0x2d, 0xc0, 0x59, 0x6f, 0xf8, 0x8b, 0x66, 0x83, 0x05, 0x16, 0xce, 0x1b, 0x9c, 0xf3, 0x97, 0x36, 0x68, 0x7f, 0xd6, 0x61, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x6c, 0x1e, 0xc2, 0x06, 0xad, 0xd4, 0x59, 0x1f, 0x34, 0xa3, 0x68, 0x7d, 0xd0, 0x64, 0x9f, 0xf5, 0x06, 0x0d, 0xb7, 0x51, 0xaf, 0x41, 0xe3, 0x16, 0xd3, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xd1, 0x34, 0xe9, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xa0, 0xb4, 0xba, 0x0d, 0x5a, 0x1d, 0x98, 0x5e, 0xc3, 0xdb, 0x3a, 0x07, 0x2d, 0xfd, 0x4b, 0xd7, 0x1a, 0xb4, 0x88, 0x2f, 0xbd, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x46, 0xd3, 0xa4, 0x37, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x16, 0x58, 0x38, 0x6f, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0xd2, 0xbf, 0xf4, 0x1a, 0x1e, 0x94, 0xdc, 0xa0, 0x35, 0xda, 0xea, 0x83, 0x46, 0xfe, 0xa8, 0x37, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0xa0, 0xe4, 0x06, 0xad, 0xd1, 0x56, 0x6f, 0xb8, 0xa4, 0x36, 0x68, 0xfd, 0x8f, 0x7a, 0x83, 0x76, 0x05, 0xa6, 0x0f, 0xda, 0x3f, 0xdd, 0xda, 0x70, 0x49, 0x6d, 0xd0, 0xda, 0x07, 0xf5, 0x06, 0x0d, 0x27, 0x4c, 0x6f, 0xd0, 0x56, 0xc3, 0xf4, 0x41, 0x73, 0x1f, 0x62, 0x6b, 0xd0, 0x82, 0xca, 0xf4, 0x06, 0xe7, 0xfc, 0xa5, 0x0d, 0x1a, 0x51, 0x6d, 0x58, 0xc3, 0x83, 0x92, 0x1b, 0xb4, 0x46, 0x5b, 0x7d, 0xd0, 0x10, 0x2d, 0xf5, 0x06, 0xe7, 0xfc, 0xa5, 0x0d, 0x5a, 0xe9, 0x74, 0x58, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0xbe, 0xf4, 0xb0, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x55, 0x3d, 0x62, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0xb0, 0x0a, 0x4c, 0xf6, 0xa0, 0xa8, 0x14, 0xef, 0xa0, 0xe5, 0x43, 0xe9, 0x35, 0x38, 0xba, 0x0e, 0xae, 0xc1, 0x2a, 0x30, 0xd9, 0x83, 0x53, 0x73, 0x5b, 0x1d, 0x34, 0xd9, 0x67, 0xbd, 0x06, 0x8d, 0xb8, 0x4c, 0x6f, 0x70, 0xce, 0x5f, 0xda, 0xa0, 0x11, 0xd5, 0x86, 0x0d, 0x9a, 0x49, 0xb6, 0xde, 0xe0, 0x9c, 0xbf, 0xb4, 0x41, 0xfb, 0xb3, 0x0e, 0x07, 0x8d, 0x39, 0x5b, 0xaf, 0x41, 0xf3, 0x25, 0xd3, 0x1b, 0x9c, 0xd8, 0x6f, 0x36, 0x68, 0x34, 0x4d, 0x7a, 0x83, 0x82, 0x34, 0x76, 0x83, 0xb1, 0x2a, 0xb0, 0x41, 0xf3, 0x8c, 0xd4, 0x1b, 0x14, 0x03, 0xb2, 0x1b, 0xb4, 0x16, 0x27, 0xbd, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x99, 0x3a, 0x61, 0x83, 0xf3, 0x78, 0xd7, 0x06, 0xad, 0xca, 0x49, 0x77, 0x70, 0x1e, 0xef, 0x5a, 0x83, 0x76, 0x64, 0xa6, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0xd0, 0x68, 0x9a, 0xf4, 0x06, 0x8b, 0xca, 0x93, 0x36, 0x68, 0xe7, 0xc9, 0x61, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x74, 0x65, 0xc2, 0x1a, 0x2e, 0xa9, 0x0d, 0x1a, 0x77, 0xaa, 0x3e, 0x68, 0xff, 0x74, 0xab, 0x35, 0x3c, 0x28, 0xb9, 0x41, 0x6b, 0xb4, 0xd5, 0x1b, 0x2e, 0xa9, 0x0d, 0x5a, 0xff, 0xa3, 0x3e, 0x68, 0x64, 0x5e, 0xfa, 0xa0, 0x99, 0x64, 0xeb, 0x35, 0x68, 0xa1, 0x68, 0x7a, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x9a, 0x26, 0xbd, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x16, 0x12, 0x61, 0x83, 0xd6, 0xe1, 0xa8, 0x37, 0x68, 0xc1, 0xa9, 0xfa, 0xa0, 0xac, 0xf3, 0x6c, 0x0d, 0x1a, 0x91, 0x9a, 0xde, 0x70, 0x49, 0x6d, 0xd0, 0xda, 0x07, 0xf5, 0x06, 0x8d, 0xcb, 0x4a, 0xaf, 0x41, 0x6b, 0x71, 0xd2, 0x1b, 0x1c, 0xc3, 0x0d, 0x0e, 0x5a, 0xa8, 0x9a, 0x6e, 0x0d, 0xda, 0x25, 0x18, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x8d, 0xa6, 0x49, 0xaf, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xd3, 0xd7, 0xd5, 0x1d, 0x34, 0xb0, 0x6a, 0xdd, 0x1a, 0x34, 0x95, 0x35, 0xbd, 0xe1, 0x17, 0x97, 0x0d, 0x5a, 0x53, 0x51, 0xd8, 0xa0, 0x81, 0x3f, 0xe9, 0x35, 0x5c, 0x52, 0x1b, 0xb4, 0xf6, 0x41, 0x7d, 0xd0, 0xb4, 0xac, 0x74, 0x6b, 0xd0, 0xd8, 0xd7, 0xf4, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x1a, 0x4d, 0x93, 0xde, 0x60, 0x51, 0x79, 0xd2, 0x06, 0xed, 0x3c, 0x39, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0xae, 0x4c, 0x38, 0x68, 0xbf, 0xa9, 0x7a, 0x83, 0x66, 0x92, 0xad, 0x0f, 0x9a, 0xda, 0xb7, 0x5e, 0x83, 0xa6, 0x6c, 0xa6, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0xeb, 0x96, 0x04, 0x1b, 0x34, 0xb4, 0x33, 0x7d, 0xd0, 0x30, 0xc7, 0xf5, 0x41, 0x4b, 0xb7, 0xd4, 0x87, 0x53, 0xec, 0x70, 0x8a, 0xcd, 0x1a, 0x34, 0x37, 0x2e, 0xbd, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x18, 0xab, 0x02, 0x07, 0x0b, 0x2c, 0x9c, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x47, 0x4a, 0xcb, 0x83, 0xe5, 0x1e, 0xdf, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x05, 0x16, 0xce, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x59, 0x48, 0x84, 0x0d, 0xce, 0xe3, 0x5d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x12, 0xa9, 0x7a, 0x83, 0x93, 0xae, 0xe5, 0x1a, 0x7e, 0x51, 0xda, 0x60, 0x81, 0x15, 0xf4, 0x06, 0x2d, 0xe4, 0x29, 0x1c, 0x9c, 0x56, 0xce, 0xea, 0x70, 0x8a, 0xad, 0x41, 0xe3, 0xd3, 0xd2, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xf6, 0x3f, 0x3a, 0x0f, 0xd6, 0x8e, 0x3c, 0xaf, 0xe1, 0xcf, 0xa5, 0x0d, 0x8e, 0x19, 0x9e, 0x07, 0xab, 0x47, 0xb0, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x0b, 0x2c, 0x9c, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x38, 0x83, 0x79, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x48, 0x2f, 0x38, 0x68, 0x8a, 0x4d, 0x78, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0x2b, 0xd4, 0xb0, 0x41, 0x2b, 0x55, 0xd7, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0x4e, 0x9b, 0xf0, 0x86, 0xb7, 0x75, 0x06, 0x4f, 0x0f, 0xce, 0x60, 0x9e, 0x6b, 0x70, 0x06, 0xf3, 0xdc, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0xc1, 0x19, 0xcc, 0xb3, 0x0e, 0xa7, 0xd8, 0x1a, 0xb4, 0xff, 0x47, 0xbd, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1b, 0xbe, 0x7e, 0xd9, 0x20, 0xb1, 0xa5, 0x6a, 0xc3, 0x25, 0xb5, 0x41, 0x51, 0x23, 0xbe, 0x06, 0xad, 0x28, 0xc5, 0x1e, 0x14, 0x14, 0x99, 0x6b, 0xd0, 0x5a, 0x9c, 0xf4, 0x41, 0x41, 0x91, 0xb9, 0x06, 0xad, 0xef, 0x50, 0x1f, 0x14, 0x14, 0x99, 0xad, 0x06, 0x2d, 0xaa, 0x49, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x80, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0x05, 0x0a, 0xa9, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0xc0, 0xc2, 0x79, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0x94, 0xf0, 0x98, 0x1b, 0xb4, 0xbe, 0x43, 0xbd, 0xe1, 0x99, 0xc9, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xba, 0x25, 0xc1, 0x1a, 0xde, 0xd6, 0x19, 0xbc, 0x3e, 0x68, 0x7d, 0x87, 0xfa, 0x20, 0x15, 0x68, 0x6c, 0xc3, 0x57, 0x38, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xb4, 0xa2, 0x14, 0xbb, 0x41, 0x5b, 0x27, 0x52, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0xd1, 0x0e, 0x82, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0xd0, 0x8a, 0x52, 0xec, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xb4, 0xa2, 0x14, 0xbb, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x83, 0x56, 0x94, 0x62, 0xeb, 0x70, 0x8a, 0xad, 0x41, 0x50, 0x60, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xef, 0xd8, 0x9b, 0xdb, 0x1c, 0x9d, 0x5c, 0xdd, 0x18, 0x1d, 0x48, 0x18, 0x88, 0x59, 0x9d, 0xdb, 0x18, 0x5d, 0xda, 0x9b, 0x1b, 0x48, 0x19, 0x5e, 0x58, 0x1b, 0x1c, 0x5b, 0xd9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0xac, 0x0a, 0x1c, 0x2c, 0xb0, 0x82, 0x5e, 0xc3, 0x9f, 0x4b, 0x1b, 0x1c, 0x29, 0x2d, 0x0f, 0x16, 0x58, 0x41, 0xb7, 0xe1, 0x2f, 0x9a, 0x0d, 0x16, 0x58, 0x38, 0x6f, 0x70, 0xce, 0x5f, 0xda, 0xa0, 0x41, 0xb8, 0x86, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x07, 0x25, 0x37, 0x68, 0xa7, 0x8f, 0x7a, 0xc3, 0x25, 0xb5, 0x41, 0xeb, 0x7f, 0xd4, 0x6b, 0x10, 0xac, 0xb7, 0x07, 0xe7, 0xf1, 0xae, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0xed, 0xf4, 0x51, 0x6f, 0xb8, 0xa4, 0x36, 0x68, 0xfd, 0x8f, 0x7a, 0x0d, 0x82, 0xf5, 0xf6, 0xe0, 0xa4, 0x6b, 0x59, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0x34, 0x9d, 0x9a, 0xb0, 0xc1, 0x39, 0x7f, 0x69, 0x83, 0xd6, 0x4a, 0x0d, 0x36, 0x68, 0x1d, 0x3d, 0x6d, 0xc3, 0x2f, 0x2e, 0x1b, 0x24, 0xa5, 0x05, 0x1f, 0x24, 0xba, 0xd6, 0xae, 0x06, 0x6d, 0xf9, 0x52, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xdf, 0xd8, 0x9b, 0xdb, 0x1c, 0x9d, 0x5c, 0xdd, 0x18, 0x1d, 0x48, 0x18, 0xc8, 0xd8, 0x9b, 0x5c, 0x19, 0x48, 0x19, 0x5e, 0x58, 0x1b, 0x1c, 0x5b, 0xd9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xe0, 0xb7, 0x0b, 0x93, 0x4b, 0x0b, 0x73, 0x1b, 0x2b, 0x0f, 0x56, 0x1f, 0x62, 0xaf, 0xe1, 0xcf, 0xa5, 0x01, 0x5e, 0xb8, 0xb0, 0x3c, 0xb6, 0xb7, 0x30, 0xf2, 0x60, 0x81, 0x15, 0xf4, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xc3, 0xe4, 0xda, 0xe6, 0x83, 0x95, 0x86, 0xdf, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x05, 0x16, 0xce, 0x1b, 0x1c, 0x6d, 0xf8, 0xd6, 0x20, 0x48, 0x4f, 0xd7, 0xa0, 0xd9, 0xea, 0xeb, 0xd6, 0x60, 0x8d, 0x68, 0xf9, 0xe1, 0x99, 0xc9, 0x35, 0x58, 0xc3, 0x5a, 0xbe, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0x6f, 0x52, 0x38, 0x48, 0x05, 0x1a, 0x5b, 0x83, 0x75, 0xb1, 0xe5, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x35, 0x01, 0x85, 0x83, 0x54, 0xa0, 0xb1, 0x35, 0x58, 0x6d, 0x5a, 0xbe, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0x4e, 0x4d, 0x38, 0x48, 0x05, 0x1a, 0x6b, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0xb0, 0x70, 0xde, 0xe0, 0x9c, 0xbf, 0xb4, 0x41, 0x83, 0x70, 0x0d, 0x6b, 0x78, 0x50, 0x72, 0x83, 0x76, 0xfa, 0xa8, 0x37, 0x5c, 0x52, 0x1b, 0xb4, 0xfe, 0x47, 0xbd, 0x06, 0xc1, 0x7a, 0xbb, 0xe1, 0x6d, 0x9d, 0x0d, 0x9a, 0xd0, 0xbe, 0xae, 0x0d, 0xce, 0xf9, 0x4b, 0x1b, 0xb4, 0xd5, 0x6b, 0xb0, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xd1, 0x86, 0x6f, 0x83, 0xe6, 0xd6, 0x94, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0xd0, 0x9c, 0x95, 0xf5, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x25, 0x52, 0xf5, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x2c, 0x02, 0x19, 0xdd, 0xa0, 0x6c, 0xaa, 0x5f, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0xe3, 0x7d, 0x5d, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0x49, 0x31, 0xeb, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x2e, 0x4b, 0xc1, 0x1a, 0x1e, 0x94, 0xdc, 0xa0, 0x9d, 0x3e, 0xea, 0x0d, 0x97, 0xd4, 0x06, 0xad, 0xff, 0x51, 0x6f, 0xd0, 0x60, 0x9a, 0x75, 0xad, 0x06, 0x6d, 0x18, 0x4a, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x43, 0x19, 0x5e, 0x58, 0x1b, 0x1c, 0x5b, 0x19, 0x88, 0x58, 0xd8, 0x5c, 0x19, 0xc8, 0x58, 0xd8, 0x5c, 0xd9, 0x86, 0x5f, 0x94, 0x36, 0x68, 0x24, 0xa5, 0x7a, 0x83, 0x20, 0x3d, 0xdd, 0x60, 0x99, 0x0e, 0xe6, 0x1a, 0x34, 0xb0, 0x38, 0xb5, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0xed, 0x2b, 0xd8, 0xa0, 0xc5, 0xa5, 0xea, 0x35, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x58, 0xe1, 0xe4, 0x7a, 0xd0, 0xe2, 0x52, 0xf5, 0x1a, 0x7e, 0x84, 0x19, 0x78, 0xb2, 0xf0, 0x20, 0x0d, 0x20, 0xe3, 0xf0, 0xe0, 0x4d, 0x6b, 0xb0, 0xde, 0x9d, 0x79, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa6, 0xb4, 0x0a, 0x0e, 0x9a, 0x09, 0xd4, 0xdc, 0xf0, 0x8b, 0xcb, 0x06, 0x2d, 0x53, 0x27, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0x3f, 0x4b, 0xd8, 0xf0, 0xcc, 0xe4, 0x86, 0x67, 0x26, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x4d, 0x69, 0x15, 0x1c, 0xb4, 0x73, 0x20, 0xd5, 0x41, 0x2a, 0xd0, 0xd8, 0x1a, 0xac, 0xdf, 0x67, 0xde, 0xf0, 0x89, 0xcd, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x2c, 0xd3, 0xc1, 0x3c, 0x58, 0x62, 0xbf, 0xdd, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x33, 0x79, 0x90, 0x0a, 0x34, 0xb6, 0x06, 0xeb, 0x10, 0x9a, 0x37, 0x7c, 0x62, 0xb3, 0x41, 0xdb, 0x30, 0xd8, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x65, 0xea, 0x84, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x03, 0x7f, 0x09, 0x07, 0x4d, 0x11, 0x61, 0x1f, 0xa4, 0x02, 0x8d, 0xad, 0xc1, 0x62, 0x8a, 0xe6, 0x83, 0x96, 0x02, 0xa5, 0x0f, 0x5a, 0xb8, 0xac, 0x3e, 0x9c, 0x62, 0x6b, 0xd0, 0x18, 0x3d, 0xf2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x74, 0xb7, 0x85, 0xad, 0x95, 0x81, 0x84, 0x81, 0xb8, 0xbd, 0xc9, 0xb5, 0x85, 0xb1, 0xa5, 0xe9, 0xa5, 0xb9, 0x9d, 0x81, 0x9c, 0x85, 0xd1, 0x95, 0x81, 0xa0, 0xb4, 0xbd, 0xb1, 0x91, 0xa5, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x02, 0x0b, 0xe7, 0x0d, 0x1f, 0xe4, 0xac, 0x41, 0x31, 0x89, 0xb9, 0xc1, 0x12, 0x5d, 0xe7, 0x83, 0x56, 0x09, 0xa7, 0xd7, 0x70, 0x49, 0x6d, 0xd0, 0x14, 0x3d, 0xf2, 0x41, 0x1b, 0x32, 0xd4, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x62, 0x12, 0x73, 0x83, 0x95, 0xa4, 0xe0, 0x07, 0xad, 0x12, 0x4e, 0xaf, 0xe1, 0x92, 0xda, 0xa0, 0x29, 0x7a, 0xe4, 0x83, 0x76, 0x19, 0xae, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x02, 0x0b, 0xe7, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x11, 0xd6, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x6d, 0x9d, 0x83, 0xd6, 0xe2, 0xa4, 0xd7, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x60, 0x33, 0xdd, 0x60, 0x95, 0x1f, 0xf8, 0x06, 0x0b, 0x7e, 0xbd, 0x37, 0x58, 0xaa, 0xed, 0xbd, 0xc1, 0x7a, 0x8a, 0xef, 0x0e, 0x5a, 0x25, 0x9c, 0x6e, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0x34, 0x9a, 0x26, 0xbd, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x26, 0xdc, 0xa4, 0x37, 0x08, 0xd2, 0xd3, 0x0d, 0x5a, 0x25, 0x9c, 0x5e, 0x83, 0x55, 0x7e, 0xe0, 0x07, 0x0d, 0xfc, 0x49, 0xaf, 0xc1, 0x82, 0x5f, 0xef, 0x83, 0x26, 0xa4, 0xa5, 0xd7, 0x60, 0xa9, 0xb6, 0xf7, 0x41, 0xdb, 0x47, 0xd4, 0x6b, 0xb0, 0x9e, 0xe2, 0xfb, 0xa0, 0xd1, 0x70, 0xe9, 0x36, 0x38, 0xe7, 0x2f, 0x6d, 0xd0, 0x5a, 0xa9, 0xc1, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x35, 0x0b, 0x85, 0x0d, 0x9a, 0xe2, 0xa0, 0x6e, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0x8d, 0xa8, 0x36, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x6b, 0x1f, 0xd4, 0x6b, 0x78, 0x50, 0x72, 0x83, 0xc6, 0x45, 0xa8, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xe3, 0x26, 0xd4, 0x07, 0xa7, 0x05, 0x9a, 0x83, 0xc3, 0xf2, 0xcc, 0x06, 0xe7, 0xfc, 0xa5, 0x0d, 0x1a, 0x51, 0x6d, 0xd8, 0xa0, 0x0d, 0x43, 0xeb, 0x83, 0x26, 0xff, 0xac, 0x0f, 0xa7, 0x58, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x35, 0x0b, 0xc0, 0xaf, 0x5b, 0xd9, 0x5d, 0x0b, 0x5c, 0x98, 0x1c, 0x5d, 0x5a, 0x18, 0x5b, 0x8b, 0xdb, 0xdb, 0xd8, 0x5a, 0x4b, 0x9a, 0x1b, 0x5d, 0x99, 0x1c, 0x9c, 0x5c, 0x19, 0x5d, 0x99, 0xbc, 0x0c, 0x80, 0x07, 0x35, 0x61, 0x61, 0x3a, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x20, 0x6e, 0x6f, 0x63, 0x6b, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x72, 0x6b, 0xd0, 0x20, 0x6c, 0xd8, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x00, 0x5f, 0x5b, 0x1d, 0x5d, 0x18, 0x5d, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x3e, 0x8c, 0xa1, 0x85, 0xb9, 0x9d, 0x95, 0x81, 0x84, 0x81, 0xcc, 0xa5, 0xb9, 0x9d, 0xb1, 0x95, 0x81, 0x84, 0xe1, 0xa5, 0xcd, 0x81, 0xa4, 0xb9, 0x81, 0x84, 0x81, 0xcc, 0x95, 0xb5, 0xa5, 0xb9, 0xbd, 0xd5, 0xb9, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x10, 0x5e, 0xe0, 0x1a, 0xfe, 0x5c, 0xda, 0xe0, 0x74, 0x30, 0x79, 0xb0, 0x06, 0x1b, 0x7b, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x62, 0x69, 0xe7, 0xc1, 0x1a, 0x6c, 0xec, 0x36, 0xfc, 0x45, 0xb3, 0x86, 0x7f, 0xe7, 0x37, 0x58, 0x9c, 0x5e, 0xdc, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x4d, 0x98, 0x6d, 0x6d, 0x50, 0x50, 0x64, 0x6e, 0xf8, 0x20, 0x67, 0x83, 0xa6, 0xc3, 0xcd, 0x36, 0x58, 0x02, 0x12, 0xbf, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0xd0, 0x4e, 0x33, 0xf6, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x01, 0xcb, 0x7a, 0xd0, 0x4e, 0xd9, 0xd6, 0x1a, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0xa5, 0xb4, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x32, 0xaa, 0xee, 0x36, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xad, 0x28, 0x63, 0xd7, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xad, 0x8f, 0x6d, 0x6d, 0x50, 0x50, 0x64, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x96, 0x8f, 0xc3, 0x36, 0x58, 0x02, 0x12, 0x7f, 0xd0, 0xc0, 0xd8, 0xd6, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x45, 0xa5, 0xf8, 0x41, 0x3b, 0x65, 0x5b, 0x6b, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xb0, 0x92, 0x97, 0x74, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xfd, 0x8d, 0xbd, 0x41, 0xc0, 0xb2, 0x1e, 0x34, 0x2d, 0x8e, 0xbd, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x9a, 0x78, 0xd2, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xf2, 0x71, 0xd8, 0x06, 0x0b, 0xdf, 0x49, 0x0f, 0xd6, 0xc6, 0xc4, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0x30, 0x16, 0xc4, 0x0e, 0x9a, 0x73, 0x37, 0xdb, 0xf0, 0x89, 0xcd, 0x06, 0x0d, 0xc4, 0x63, 0x6f, 0x50, 0xc2, 0x63, 0x6e, 0xb0, 0x26, 0x9e, 0x74, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x27, 0x36, 0x1b, 0x34, 0xcf, 0x8d, 0xbd, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xeb, 0x63, 0x5b, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x04, 0x2c, 0xeb, 0x41, 0x6b, 0xe9, 0x66, 0x6b, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x6d, 0x75, 0xf4, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xed, 0x8e, 0x63, 0x1f, 0x2c, 0x7c, 0x27, 0x5d, 0x83, 0x26, 0xcc, 0xb6, 0x0e, 0x4a, 0x51, 0xcd, 0x36, 0x28, 0xe1, 0x31, 0xd7, 0xa0, 0xd5, 0x88, 0xec, 0x36, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xcb, 0xc7, 0x61, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0xd1, 0x8c, 0xec, 0x83, 0x06, 0xc6, 0xb6, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0x35, 0x22, 0x7b, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x76, 0xc7, 0xb1, 0x0f, 0x9a, 0x18, 0xdb, 0x3a, 0x68, 0xcc, 0x22, 0x7b, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x46, 0x33, 0xb2, 0x37, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xcb, 0xc7, 0x61, 0x1b, 0x2c, 0x7c, 0x27, 0xdd, 0xa0, 0xed, 0x8e, 0xec, 0x56, 0x83, 0x65, 0x54, 0xdd, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x3c, 0x57, 0x56, 0xb6, 0x06, 0x42, 0xf7, 0x06, 0x12, 0xe6, 0x06, 0x12, 0x86, 0x97, 0x36, 0x07, 0x92, 0xe6, 0x06, 0x12, 0x06, 0x32, 0x57, 0xd6, 0x96, 0xe6, 0xf6, 0x56, 0xe7, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x43, 0xed, 0x61, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xd5, 0x40, 0xb6, 0x07, 0x6b, 0xb0, 0xb1, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0xed, 0x34, 0x63, 0x6f, 0xf8, 0x20, 0x67, 0x83, 0xa6, 0xc3, 0xcd, 0x36, 0x58, 0xbc, 0x66, 0xbb, 0xe1, 0x13, 0x9b, 0x0d, 0xda, 0x34, 0x37, 0xdb, 0x20, 0x48, 0x4f, 0xd7, 0x38, 0xb4, 0xc1, 0x7a, 0xbb, 0x9c, 0x83, 0x75, 0x6d, 0xb6, 0xab, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1f, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x20, 0x6c, 0x61, 0x7a, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x07, 0x6b, 0x9a, 0xba, 0x37, 0x5c, 0x52, 0x1b, 0xac, 0x6b, 0xb3, 0x5d, 0x0d, 0x96, 0x51, 0x75, 0x1f, 0x2c, 0x90, 0x0e, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x67, 0xac, 0x99, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x32, 0xaa, 0xee, 0x83, 0x56, 0x92, 0xb2, 0x0f, 0x5a, 0x29, 0xdb, 0x6a, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x3b, 0xcd, 0x0c, 0xc4, 0xac, 0x8e, 0x8d, 0x2d, 0x0f, 0x44, 0x8c, 0xed, 0x6d, 0x6c, 0xad, 0x8c, 0x8c, 0x05, 0x04, 0x4e, 0xee, 0x8d, 0xac, 0x6e, 0xac, 0x0c, 0x64, 0xae, 0x8c, 0xcd, 0xec, 0x60, 0xad, 0x4e, 0xf7, 0x06, 0xc5, 0x80, 0xec, 0x1a, 0x1c, 0x9c, 0xdc, 0x0e, 0x5a, 0x49, 0xca, 0xde, 0x60, 0xf1, 0x9a, 0xed, 0x06, 0x05, 0xc1, 0xec, 0x1a, 0x1c, 0xe4, 0xd9, 0x0e, 0xd6, 0xb5, 0xd9, 0x6e, 0x50, 0x50, 0x64, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x34, 0x27, 0x70, 0xb6, 0x06, 0xeb, 0xda, 0x6c, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0x93, 0xc1, 0x61, 0x6b, 0xf8, 0x20, 0x67, 0x83, 0x56, 0xf9, 0xcd, 0xd6, 0x70, 0x49, 0xad, 0x71, 0xe8, 0xa0, 0xe5, 0xb6, 0xec, 0x36, 0x5c, 0x52, 0x6b, 0x3c, 0x3f, 0x68, 0xb9, 0x2d, 0xbb, 0x5a, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x24, 0x2b, 0x9b, 0x1b, 0x2b, 0x73, 0x23, 0x03, 0x49, 0x73, 0xa3, 0x7b, 0x03, 0x81, 0x0b, 0x93, 0xa3, 0x4b, 0x0b, 0x63, 0x03, 0x19, 0x2b, 0x63, 0x63, 0x3b, 0x58, 0x48, 0xd2, 0xbd, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0xd0, 0x9c, 0xc0, 0xd9, 0x1a, 0xac, 0x6b, 0xb3, 0xdd, 0xf0, 0x41, 0xce, 0x06, 0xad, 0xf2, 0x9b, 0xad, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xda, 0x95, 0xee, 0x83, 0x56, 0x92, 0xb2, 0x37, 0x68, 0x14, 0x2f, 0xbb, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x56, 0x5e, 0x1b, 0x1d, 0xb4, 0x92, 0x94, 0xbd, 0x41, 0x13, 0x7b, 0xd9, 0xd5, 0x0a, 0xf0, 0xca, 0x95, 0xc5, 0xd5, 0xa5, 0xc9, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xe0, 0x83, 0x5c, 0x59, 0x5c, 0x5d, 0x9a, 0x5c, 0x19, 0xc8, 0xd8, 0x5b, 0x1b, 0x1c, 0x5b, 0x19, 0x5d, 0x19, 0x48, 0x9a, 0x1b, 0x5d, 0x99, 0x5c, 0x5b, 0x19, 0x59, 0x5a, 0x18, 0x5d, 0x19, 0xc8, 0x1c, 0x5d, 0x19, 0xdc, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xdc, 0xde, 0xf2, 0x83, 0x76, 0x9a, 0xb1, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x97, 0x57, 0xe6, 0x6e, 0x10, 0x4e, 0x63, 0x1b, 0x84, 0xe9, 0xd8, 0x41, 0x3b, 0xcd, 0xd8, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x76, 0x9a, 0xb1, 0x37, 0x28, 0xe1, 0x31, 0xd7, 0xa0, 0xb9, 0xd3, 0xec, 0x36, 0x28, 0x28, 0x32, 0x37, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x06, 0xab, 0x81, 0x6c, 0x37, 0x28, 0xa1, 0x63, 0x37, 0x58, 0x83, 0x8d, 0x7d, 0x10, 0xa6, 0x63, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf0, 0x8f, 0xbd, 0xb5, 0xc1, 0xb1, 0x95, 0xd1, 0x95, 0xad, 0xe1, 0x6d, 0x9d, 0x83, 0x46, 0x63, 0xb3, 0xdb, 0xf0, 0x6e, 0xde, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0xac, 0x69, 0xea, 0x3e, 0x68, 0x14, 0x29, 0x7b, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xb0, 0x90, 0xa4, 0xfb, 0xa0, 0x51, 0xa4, 0xec, 0x35, 0xfc, 0xe2, 0xb2, 0x06, 0x6b, 0x03, 0xbc, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xf8, 0xe6, 0xe2, 0xea, 0xc2, 0xe6, 0xd0, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0x2b, 0x49, 0xd9, 0x1d, 0x94, 0x75, 0x9e, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x62, 0x12, 0x73, 0x83, 0x22, 0x15, 0xf3, 0xa0, 0xc5, 0xb4, 0xec, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x23, 0xce, 0xd9, 0x07, 0x65, 0x9d, 0xe7, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x2d, 0xaa, 0x66, 0xb7, 0x86, 0xb7, 0x75, 0x0e, 0x5a, 0x6e, 0xcb, 0xee, 0x70, 0x8a, 0xad, 0x41, 0x23, 0xcc, 0xd9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x3b, 0xf6, 0xe6, 0x66, 0x57, 0x26, 0x47, 0x07, 0x32, 0x47, 0x57, 0xe6, 0x36, 0x96, 0xc6, 0x06, 0x42, 0xf7, 0x06, 0x22, 0xc6, 0xf6, 0x36, 0xb6, 0x06, 0x32, 0x57, 0x46, 0xb7, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xd1, 0xe5, 0xb9, 0x07, 0xab, 0x5c, 0xba, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x8a, 0xa1, 0xee, 0x0d, 0x82, 0xf4, 0x74, 0x8d, 0x43, 0x1b, 0xb4, 0x9f, 0x9e, 0xdd, 0x1a, 0xac, 0x69, 0xea, 0xde, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xc5, 0xf7, 0xec, 0x0d, 0x0f, 0x4a, 0x6e, 0x78, 0x66, 0x72, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xac, 0x9b, 0xbd, 0x86, 0xb7, 0x75, 0x0e, 0x5a, 0x7c, 0xcf, 0x3e, 0x28, 0xeb, 0x3c, 0x5b, 0x83, 0xb5, 0x3a, 0xdd, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0xe0, 0xe4, 0x76, 0xd0, 0xe2, 0x7b, 0xf6, 0x1a, 0x2c, 0x24, 0xe9, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x1c, 0xfb, 0x6f, 0x36, 0x28, 0x9b, 0xde, 0xd7, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xc5, 0xf7, 0xec, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x76, 0xa5, 0xfb, 0xa0, 0xc5, 0xf7, 0xec, 0x5a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x16, 0xdf, 0xb3, 0x37, 0xbc, 0xad, 0xb3, 0xc1, 0xca, 0x6b, 0xa3, 0x83, 0x16, 0xdf, 0xb3, 0xab, 0xd5, 0xe0, 0x54, 0x82, 0xb0, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0xaf, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x20, 0x61, 0x20, 0x70, 0x61, 0x69, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x65, 0x6d, 0x69, 0x6e, 0x6f, 0x75, 0x6e, 0x73, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x95, 0xbc, 0xa4, 0x07, 0x6b, 0xb0, 0xb1, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x4d, 0x29, 0x6d, 0x1d, 0xac, 0xc1, 0xc6, 0x6e, 0xc3, 0x5f, 0x34, 0x1b, 0xac, 0xc1, 0xc6, 0xde, 0xa0, 0xd8, 0xd1, 0x5c, 0xc3, 0x23, 0xac, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0xd6, 0xea, 0x74, 0x6f, 0x1c, 0xda, 0x60, 0xbd, 0x5d, 0xce, 0xc1, 0x9a, 0x78, 0xd2, 0x35, 0x28, 0x26, 0x31, 0x37, 0x58, 0xab, 0xd3, 0xbd, 0x71, 0x68, 0x83, 0xf5, 0x76, 0x39, 0x07, 0xad, 0x8f, 0x6d, 0xb5, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x05, 0x45, 0xe6, 0x86, 0xb7, 0x75, 0x36, 0x38, 0x38, 0xb9, 0x1d, 0x34, 0x9a, 0xa2, 0xbd, 0xe1, 0xdf, 0x9c, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x70, 0x72, 0x3b, 0x68, 0xce, 0x45, 0xbb, 0x35, 0xfc, 0xe2, 0xb2, 0x1a, 0xde, 0xb8, 0x3b, 0x58, 0x60, 0xd2, 0xbd, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0x73, 0xd0, 0x68, 0x8a, 0xf6, 0x1a, 0xde, 0xd6, 0x39, 0x68, 0xce, 0x45, 0xbb, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x36, 0x38, 0xc8, 0xb3, 0x1d, 0xac, 0x89, 0x27, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0x1c, 0xe4, 0xd9, 0x0e, 0x5a, 0x1f, 0xdb, 0xaa, 0x0d, 0x1f, 0xe4, 0x6c, 0xd0, 0x68, 0x8c, 0xf6, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xc9, 0xe0, 0xb0, 0x83, 0xd6, 0x87, 0xb4, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0x6b, 0x03, 0xbc, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xc7, 0xfe, 0x9b, 0x0d, 0xca, 0xa6, 0xf7, 0x0d, 0xda, 0x9b, 0xd1, 0x6e, 0x83, 0x86, 0x70, 0xb4, 0x3b, 0x28, 0xeb, 0x3c, 0x67, 0x01, 0x3f, 0x4c, 0xac, 0x8c, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x97, 0xb9, 0xb4, 0x36, 0x38, 0xb6, 0x34, 0xb3, 0x3c, 0x10, 0xb9, 0xb0, 0x3b, 0x10, 0xb9, 0xb2, 0xb9, 0x3a, 0x36, 0xba, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x5a, 0x34, 0xcd, 0x6e, 0xc3, 0x5f, 0x34, 0x6b, 0xf8, 0x77, 0x7e, 0x0d, 0xd6, 0x5c, 0x84, 0xd7, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x8d, 0xc6, 0x66, 0x6f, 0x50, 0x50, 0x64, 0x6e, 0x50, 0x18, 0xaa, 0x6e, 0x50, 0x50, 0x64, 0x6e, 0x50, 0x90, 0xc6, 0x6e, 0x70, 0x70, 0x72, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0xb3, 0x9c, 0xbd, 0x86, 0xb7, 0x75, 0x36, 0x58, 0x6f, 0x97, 0x73, 0xd0, 0x68, 0x6c, 0x76, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x14, 0x14, 0x99, 0x07, 0xc7, 0xb6, 0xb7, 0x35, 0x68, 0x79, 0x11, 0x74, 0xc3, 0xdb, 0x3a, 0x1b, 0x1c, 0xe4, 0xd9, 0x0e, 0x1a, 0x8d, 0xcd, 0x5e, 0xc3, 0x1b, 0x77, 0x07, 0x0b, 0x6c, 0xc2, 0x37, 0x28, 0x4b, 0xde, 0x37, 0x58, 0x04, 0x32, 0xba, 0x41, 0xd9, 0xf4, 0x7e, 0x70, 0x68, 0x7b, 0x5b, 0x01, 0x3f, 0x4c, 0x2e, 0xec, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0xf7, 0x32, 0xbc, 0xb2, 0xb1, 0x3a, 0xba, 0x32, 0x10, 0xb7, 0xb7, 0xb1, 0x35, 0x90, 0x37, 0x37, 0x10, 0xb8, 0x30, 0x39, 0xba, 0xb4, 0x30, 0x36, 0x90, 0xb9, 0x3a, 0x31, 0xb5, 0xb2, 0x31, 0xba, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0xda, 0xec, 0xc9, 0x5e, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0x6c, 0x1a, 0x3e, 0x58, 0x0e, 0x8b, 0xdd, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x3b, 0xcd, 0xd8, 0x1b, 0x14, 0x04, 0xb3, 0x1b, 0xac, 0x75, 0x1b, 0xde, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x41, 0xce, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x14, 0xa9, 0x98, 0x1b, 0x87, 0x0e, 0xd6, 0xba, 0x0d, 0xaf, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x4a, 0x5e, 0xd2, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xd6, 0xba, 0x0d, 0x6f, 0xb8, 0xa4, 0x36, 0x68, 0x71, 0x53, 0xbb, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x58, 0x13, 0x4f, 0xba, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x53, 0x4a, 0x5b, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0x75, 0x1b, 0xde, 0x70, 0x49, 0xad, 0xf1, 0xfc, 0x60, 0xad, 0xdb, 0x70, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0xfa, 0xd8, 0xd6, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xf9, 0x38, 0x6c, 0x83, 0x85, 0xef, 0xa4, 0x07, 0x0d, 0x8c, 0x6d, 0x6d, 0x70, 0x72, 0x90, 0xdb, 0x60, 0xad, 0xdb, 0xf0, 0x06, 0x05, 0x45, 0xe6, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x90, 0x4e, 0x3d, 0xbc, 0xce, 0xb4, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0xc1, 0x9b, 0x0d, 0x6f, 0xeb, 0x0c, 0x2e, 0x1e, 0xac, 0x75, 0x1b, 0xde, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x4d, 0x7f, 0x63, 0x6f, 0xd0, 0xd0, 0xaf, 0xf6, 0x06, 0x8b, 0xd7, 0x6c, 0x5b, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0x38, 0xaa, 0x07, 0xe5, 0x38, 0xfe, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x32, 0x38, 0x6c, 0x83, 0x86, 0x7e, 0xb5, 0x5b, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0xc4, 0xa6, 0x07, 0x27, 0x2e, 0x8b, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xab, 0x97, 0xd9, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0x5a, 0xb7, 0xe1, 0x0d, 0x6f, 0xeb, 0x0c, 0x3e, 0x1e, 0xac, 0x75, 0x1b, 0x6e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x93, 0xcb, 0x33, 0x0f, 0x96, 0xc3, 0x62, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x6c, 0x75, 0xe2, 0x86, 0x4b, 0x6a, 0x83, 0xc3, 0x7e, 0xc7, 0x1a, 0xac, 0x75, 0x1b, 0x3e, 0x68, 0xe8, 0x57, 0xbb, 0x0d, 0x4a, 0x78, 0xcc, 0x35, 0x68, 0xb5, 0x5b, 0xbb, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x35, 0x58, 0xeb, 0x36, 0xbc, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0xce, 0xd6, 0x6e, 0x0d, 0xd6, 0xb5, 0xd9, 0x6e, 0x78, 0x5b, 0xe7, 0xa0, 0xe9, 0x71, 0xed, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0x84, 0xcc, 0xe9, 0x41, 0x39, 0x8e, 0xbf, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0xd3, 0xd0, 0xda, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x07, 0xed, 0x81, 0x6b, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x66, 0x69, 0xe7, 0xc1, 0x72, 0x58, 0xec, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x64, 0x70, 0xd8, 0x1a, 0xac, 0x01, 0x5a, 0xda, 0xf0, 0xb6, 0xce, 0x06, 0xad, 0xdd, 0x6b, 0xd7, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x35, 0x68, 0x78, 0x07, 0xe5, 0x38, 0xfe, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x4d, 0x43, 0x6b, 0x6f, 0xd0, 0xc6, 0xbc, 0xf6, 0x86, 0x5f, 0x94, 0x36, 0x68, 0xd0, 0x5e, 0x7b, 0x83, 0x62, 0x40, 0x76, 0x83, 0xf6, 0xfa, 0xb5, 0x37, 0x28, 0x28, 0x32, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0x93, 0xc1, 0x61, 0x6b, 0xf8, 0x38, 0xea, 0xa0, 0x51, 0x7e, 0xed, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0xc2, 0x2b, 0x3e, 0x38, 0x71, 0x59, 0x6c, 0x50, 0x74, 0x1a, 0x6f, 0xd0, 0x34, 0xb4, 0xf6, 0x06, 0x6d, 0xcc, 0x6b, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x92, 0x97, 0xf4, 0x60, 0x39, 0x2c, 0xf6, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x4d, 0x43, 0x6b, 0xaf, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0x71, 0xd0, 0x16, 0xb5, 0xf6, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x4d, 0x29, 0x6d, 0x1d, 0x2c, 0x87, 0xc5, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0x4d, 0x06, 0x87, 0xad, 0xe1, 0xdf, 0x9c, 0x0d, 0x16, 0xbe, 0x93, 0x1e, 0x34, 0x31, 0xb6, 0xd5, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x65, 0xbd, 0xc5, 0x1b, 0x14, 0xe0, 0x9d, 0x1b, 0x9c, 0xc9, 0x2c, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe4, 0x41, 0x98, 0x8e, 0xb5, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0xd3, 0xd0, 0xda, 0x1b, 0xb4, 0x31, 0xaf, 0xbd, 0xe1, 0x17, 0xa5, 0x0d, 0x1a, 0xb4, 0xd7, 0xde, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0xc8, 0x69, 0x3d, 0x68, 0x94, 0x5f, 0x7b, 0x83, 0xd6, 0x34, 0xb6, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x28, 0x60, 0xf3, 0x0f, 0x1a, 0xe5, 0xd7, 0x5e, 0xc3, 0x25, 0xb5, 0xc1, 0x61, 0xbf, 0x63, 0x0d, 0xd6, 0xba, 0x0d, 0x6f, 0x78, 0x5b, 0x67, 0x70, 0xf2, 0x60, 0xad, 0xdb, 0x70, 0x07, 0x05, 0x45, 0xe6, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0x65, 0x14, 0xc6, 0x07, 0x27, 0x2e, 0x8b, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0xda, 0xff, 0xe8, 0x3c, 0x68, 0x63, 0x5e, 0x7b, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x76, 0xda, 0x84, 0x37, 0x28, 0x28, 0x32, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0x5a, 0xa3, 0xd6, 0x5e, 0x83, 0x75, 0x6d, 0xb6, 0x07, 0x8d, 0xb1, 0x09, 0xb7, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x09, 0x8f, 0xf1, 0xc1, 0x89, 0xcb, 0x62, 0xc3, 0x27, 0x36, 0x1b, 0xb4, 0x4e, 0xb4, 0xbd, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x3b, 0x6d, 0xc2, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0xad, 0x51, 0x6b, 0xaf, 0xc1, 0xba, 0x36, 0xdb, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xf2, 0x71, 0xd8, 0x06, 0x8d, 0xb1, 0x09, 0x1f, 0xb4, 0x5b, 0xac, 0xdd, 0x6a, 0xf8, 0x5c, 0x69, 0x83, 0xa5, 0x6b, 0xc6, 0x07, 0x27, 0x2e, 0x8b, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0xda, 0x00, 0xd6, 0xde, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xa0, 0xfd, 0x8f, 0xce, 0x83, 0xd6, 0xa5, 0xb5, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x68, 0xa7, 0x4d, 0x78, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xd0, 0x6e, 0x21, 0xd5, 0x41, 0x3b, 0x6d, 0xc2, 0x6b, 0xf8, 0xc4, 0x66, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x3e, 0x35, 0x78, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x90, 0x67, 0x3b, 0x68, 0xa7, 0x4d, 0x78, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x80, 0xfe, 0x77, 0x83, 0x86, 0x7e, 0xb5, 0x0f, 0x56, 0xfd, 0x00, 0xb7, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xcb, 0xc9, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x2e, 0x2e, 0xd6, 0x1a, 0xde, 0xd6, 0x19, 0xbc, 0x3e, 0x7c, 0x39, 0xd9, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x4d, 0x43, 0x6b, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0xfe, 0xc6, 0xde, 0xa0, 0xa1, 0x5f, 0xed, 0x83, 0xa6, 0xd8, 0x84, 0x37, 0xfc, 0xa2, 0xb4, 0xc1, 0x72, 0x58, 0xec, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x0d, 0x9a, 0x6d, 0xda, 0x5e, 0x83, 0xb5, 0x6e, 0xc3, 0x07, 0xa7, 0x95, 0xb3, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0xac, 0xbf, 0x35, 0x5e, 0xc3, 0xe7, 0x4a, 0x07, 0xa7, 0xf1, 0xc0, 0x83, 0xa6, 0x54, 0xb6, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0xe5, 0x39, 0xbb, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x1d, 0x34, 0xc7, 0xb3, 0xbd, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xdb, 0x70, 0x99, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x2c, 0x7e, 0xef, 0x3e, 0x68, 0x5d, 0x5a, 0x7b, 0x83, 0x12, 0x1e, 0x73, 0x0d, 0x16, 0xbf, 0x77, 0xb7, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x8b, 0xb6, 0xd8, 0x6d, 0xd0, 0xd0, 0xaf, 0xf6, 0x1a, 0xde, 0xd6, 0x39, 0x68, 0x48, 0x74, 0xfb, 0xa0, 0x19, 0xbc, 0xcc, 0xd5, 0xf0, 0xb9, 0xd2, 0x06, 0xab, 0x84, 0x8e, 0x37, 0xfc, 0x50, 0x73, 0x70, 0x22, 0xb3, 0x38, 0x68, 0x5d, 0x5a, 0x7b, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x2a, 0xa1, 0xe3, 0x0d, 0x8e, 0x55, 0x16, 0x07, 0x4d, 0xa9, 0x6c, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xd0, 0xdc, 0x69, 0xf6, 0x41, 0xeb, 0xd2, 0xda, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x34, 0x1a, 0x9b, 0xbd, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x83, 0x9c, 0x35, 0x3c, 0xc2, 0xba, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0xab, 0xbc, 0x83, 0x0f, 0xda, 0x00, 0xd6, 0x5e, 0x83, 0x62, 0x12, 0x73, 0x83, 0x76, 0x0b, 0xa9, 0x0e, 0x1a, 0x8d, 0xcd, 0x6e, 0x0d, 0x6f, 0xd9, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x59, 0xc7, 0x6e, 0xd0, 0x54, 0x1c, 0xd8, 0x1a, 0x2e, 0xa9, 0x35, 0x9e, 0x1f, 0x34, 0x1a, 0x9b, 0x5d, 0x07, 0xad, 0x5e, 0x6e, 0x1f, 0xb4, 0x7a, 0xb9, 0xdd, 0x6a, 0xd0, 0x9e, 0xf7, 0xd8, 0x86, 0xe7, 0x49, 0x36, 0x68, 0x71, 0x50, 0x7b, 0xc3, 0x2f, 0x4a, 0x1b, 0xb4, 0xda, 0xa8, 0xbd, 0xc1, 0x72, 0x48, 0xa6, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0x6d, 0x93, 0x69, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x24, 0x96, 0x76, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x54, 0xa0, 0x76, 0x1b, 0x2c, 0x5e, 0xb3, 0x3d, 0x58, 0xce, 0x36, 0xdc, 0xe1, 0x14, 0x5b, 0x83, 0x56, 0x77, 0xb3, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x69, 0xec, 0xad, 0x0d, 0x8e, 0xad, 0x8c, 0xae, 0x0c, 0x24, 0xcc, 0x2d, 0x0f, 0x84, 0x2d, 0x4c, 0x2f, 0xcd, 0xad, 0x6c, 0x6e, 0x6e, 0xc3, 0x2f, 0x4a, 0x1b, 0xb4, 0xd9, 0x93, 0xbd, 0xe1, 0x2f, 0x9a, 0x0d, 0xd6, 0x60, 0x63, 0x6f, 0x10, 0xa4, 0xa7, 0x1b, 0x34, 0x8a, 0x94, 0xbd, 0x06, 0x6b, 0x75, 0xba, 0x0f, 0x16, 0xaf, 0xd9, 0xae, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3c, 0x9b, 0xc9, 0x85, 0x9d, 0xb5, 0x95, 0xb9, 0xd1, 0x81, 0xc4, 0x80, 0xa4, 0xcd, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0xdc, 0xa1, 0xbd, 0xb1, 0x95, 0x81, 0xd0, 0xa1, 0xa5, 0xb9, 0x9d, 0x1d, 0xac, 0x69, 0xea, 0xde, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0x98, 0xcc, 0x41, 0x53, 0x59, 0xd9, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x36, 0xc0, 0x7b, 0x83, 0x56, 0x6e, 0xc3, 0x3a, 0x28, 0xeb, 0x3c, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x4b, 0xba, 0xba, 0x0f, 0x5a, 0x49, 0xca, 0xde, 0xa0, 0xa9, 0xac, 0xec, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x39, 0xb9, 0x41, 0x5b, 0xfd, 0xdb, 0x07, 0x0d, 0xf9, 0x6d, 0xaf, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3c, 0xc8, 0x95, 0x8d, 0xd5, 0xc9, 0xcd, 0xa5, 0xd9, 0x95, 0x81, 0x90, 0x95, 0xcd, 0x8d, 0x95, 0xb9, 0xd1, 0x1d, 0x2c, 0x24, 0xe9, 0xde, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0xe5, 0xe3, 0xb0, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0xd7, 0x66, 0x7b, 0xd0, 0x4a, 0x63, 0x76, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0x6b, 0xb3, 0x3d, 0x68, 0x48, 0x32, 0xbb, 0x0e, 0xa7, 0x58, 0x75, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x0a, 0xc0, 0x03, 0x9c, 0xdc, 0x9b, 0x59, 0x1a, 0x5b, 0x9a, 0xdb, 0x59, 0xcb, 0x5c, 0x1d, 0x1c, 0xdc, 0x9b, 0x1c, 0xbd, 0x0c, 0x40, 0x7b, 0x8d, 0x99, 0x0e, 0x08, 0x9c, 0xdc, 0x9b, 0x59, 0x1a, 0x5b, 0x9a, 0xdb, 0x19, 0xc8, 0x5c, 0x1d, 0x1c, 0xdc, 0x9b, 0x1c, 0x1d, 0x08, 0x0a, 0x16, 0x16, 0x48, 0xdb, 0x9b, 0x5d, 0x59, 0x6a, 0x01, 0x5e, 0xb8, 0xb4, 0x96, 0xb6, 0x37, 0xb8, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0xc9, 0x16, 0xee, 0x06, 0xf0, 0x09, 0x23, 0x23, 0x03, 0x99, 0x0b, 0x6b, 0x83, 0x63, 0x2b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x24, 0xb8, 0x7d, 0x1e, 0xac, 0xd7, 0x7a, 0xde, 0x60, 0x49, 0x71, 0x77, 0x1b, 0x9c, 0x1c, 0xe4, 0x36, 0x48, 0xa7, 0xfc, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0xac, 0x37, 0xee, 0x6e, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x30, 0x56, 0x05, 0x36, 0x5c, 0x52, 0x1b, 0xb4, 0xf8, 0xc3, 0xbd, 0x06, 0x47, 0xf5, 0xae, 0x0d, 0x1f, 0x47, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0xb1, 0x2a, 0x70, 0xd0, 0xe2, 0x0f, 0x77, 0xab, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x85, 0x7b, 0xe4, 0x1b, 0x2e, 0xa9, 0x0d, 0x5a, 0xfc, 0xe1, 0x5e, 0x0d, 0x16, 0xee, 0x91, 0xb7, 0xe1, 0xe3, 0xa8, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x70, 0x8f, 0xfc, 0xa0, 0xc5, 0x1f, 0xee, 0x56, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x2b, 0x1b, 0xc9, 0x37, 0x5c, 0x52, 0x1b, 0xb4, 0xf8, 0xc3, 0xbd, 0x1a, 0xac, 0x6c, 0x24, 0x6f, 0xc3, 0xc7, 0x51, 0x1b, 0xde, 0xd6, 0xd9, 0x60, 0x65, 0x23, 0xf9, 0x41, 0x8b, 0x3f, 0xdc, 0xad, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x96, 0x80, 0x92, 0x6f, 0xb8, 0xa4, 0x36, 0x68, 0xf1, 0x87, 0x7b, 0x35, 0x58, 0x02, 0x4a, 0xde, 0x86, 0x8f, 0xa3, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0x12, 0x50, 0xf2, 0x83, 0x16, 0x7f, 0xb8, 0x5b, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xac, 0x91, 0x25, 0xdf, 0x70, 0x49, 0x6d, 0xd0, 0xe2, 0x0f, 0xf7, 0x6a, 0xb0, 0x46, 0x96, 0xbc, 0x0d, 0x1f, 0x47, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0x35, 0xb2, 0xe4, 0x07, 0x2d, 0xfe, 0x70, 0xb7, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0x44, 0x4c, 0xbe, 0xe1, 0x92, 0xda, 0xa0, 0xc5, 0x1f, 0xee, 0xd5, 0x60, 0x11, 0x31, 0x79, 0x1b, 0x3e, 0x8e, 0xda, 0xf0, 0xb6, 0xce, 0x06, 0x8b, 0x88, 0xc9, 0x0f, 0x5a, 0xfc, 0xe1, 0x6e, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0xda, 0x9a, 0x7c, 0xc3, 0x25, 0xb5, 0x41, 0x8b, 0x3f, 0xdc, 0xab, 0xc1, 0x6a, 0x6b, 0xf2, 0x36, 0x7c, 0x1c, 0xb5, 0xe1, 0x6d, 0x9d, 0x0d, 0x56, 0x5b, 0x93, 0x1f, 0xb4, 0xf8, 0xc3, 0x5d, 0x2b, 0xc0, 0x0b, 0x97, 0xd6, 0xd2, 0xf6, 0x46, 0x87, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xb4, 0x4f, 0xc8, 0xdd, 0x00, 0x7e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0x49, 0x71, 0xf7, 0x86, 0xbf, 0x68, 0x36, 0x28, 0xb3, 0x74, 0x37, 0x48, 0x32, 0x20, 0xdc, 0xf0, 0x27, 0xd0, 0x06, 0x6d, 0x1c, 0x71, 0x6f, 0xd0, 0x30, 0x14, 0xf7, 0x06, 0x2d, 0x6a, 0x71, 0x6f, 0xd0, 0x14, 0x19, 0xf7, 0x06, 0x6d, 0xb8, 0x71, 0x6f, 0xd0, 0xf8, 0x1d, 0xf7, 0x06, 0xad, 0x06, 0x72, 0x77, 0x38, 0xc5, 0x16, 0xe0, 0x85, 0x4b, 0x6b, 0x69, 0xab, 0x6b, 0x6b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x9a, 0xe7, 0xe4, 0x6e, 0x00, 0x3f, 0x38, 0xb9, 0x34, 0x37, 0x3a, 0x90, 0xb9, 0xb0, 0x36, 0x38, 0xb6, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0xa4, 0xb8, 0x7b, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0xf4, 0x44, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xba, 0x37, 0x7a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xf6, 0x09, 0xb9, 0xdb, 0xa0, 0x59, 0x1f, 0xee, 0x36, 0x48, 0x32, 0x20, 0xdc, 0xe0, 0x90, 0xb5, 0xb8, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xe9, 0x89, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0xf0, 0xe6, 0xa0, 0x61, 0x28, 0xee, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xc8, 0x5a, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x66, 0x0c, 0xde, 0x20, 0x11, 0x2e, 0x78, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x0a, 0xac, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe0, 0xa9, 0xdd, 0x20, 0xcd, 0x20, 0x74, 0x83, 0x86, 0xa1, 0xb8, 0x5b, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0xc2, 0xca, 0x5d, 0xad, 0xe1, 0x59, 0xbc, 0xc1, 0xdd, 0x83, 0xd5, 0x00, 0x24, 0xad, 0xe1, 0x2f, 0x9a, 0x0d, 0x4e, 0x7a, 0xa2, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0x39, 0x68, 0xe3, 0x88, 0x7b, 0x83, 0x82, 0x22, 0x73, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0xb2, 0x16, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x8b, 0x19, 0x83, 0x37, 0x48, 0x84, 0x0b, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x02, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0x37, 0x48, 0x33, 0x08, 0xdd, 0xa0, 0x8d, 0x23, 0xee, 0x0e, 0x1a, 0x27, 0xe6, 0x6e, 0x0d, 0xcf, 0xe2, 0x0d, 0x3e, 0x1e, 0xac, 0x06, 0x20, 0x69, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x41, 0x8b, 0x5a, 0xdc, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x90, 0xb5, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xcc, 0x18, 0xbc, 0x41, 0x22, 0x5c, 0xf0, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x14, 0x58, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0x41, 0x9a, 0x41, 0xe8, 0x06, 0x2d, 0x6a, 0x71, 0x77, 0xd0, 0x38, 0x31, 0x77, 0x6b, 0x78, 0x16, 0x6f, 0xf0, 0xf3, 0x60, 0x35, 0x00, 0x49, 0x6b, 0xf8, 0x8b, 0x66, 0x83, 0x93, 0x9e, 0xe8, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x86, 0x07, 0x6f, 0x0e, 0x9a, 0x22, 0xe3, 0xde, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x87, 0xac, 0xc5, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x62, 0xc6, 0xe0, 0x0d, 0x12, 0xe1, 0x82, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xa1, 0xc0, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0xd2, 0x0c, 0x42, 0x37, 0x68, 0x8a, 0x8c, 0xbb, 0x83, 0xc6, 0x89, 0xb9, 0x5b, 0xc3, 0xb3, 0x78, 0x83, 0xb7, 0x07, 0xab, 0x01, 0x48, 0x5a, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0xf4, 0x44, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x78, 0x73, 0xd0, 0x86, 0x1b, 0xf7, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x64, 0x2d, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x33, 0x06, 0x6f, 0x90, 0x08, 0x17, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x05, 0xd6, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x6e, 0x90, 0x66, 0x10, 0xba, 0x41, 0x1b, 0x6e, 0xdc, 0x1d, 0x34, 0x4e, 0xcc, 0xdd, 0x1a, 0x9e, 0xc5, 0x1b, 0xdc, 0x3c, 0x58, 0x0d, 0x40, 0xd2, 0x1a, 0xfe, 0xa2, 0xd9, 0xe0, 0xa4, 0x27, 0xba, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0xc1, 0x9b, 0x83, 0xc6, 0xef, 0xb8, 0x37, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x6b, 0x71, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x98, 0x31, 0x78, 0x83, 0x44, 0xb8, 0xe0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x28, 0xb0, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x83, 0x34, 0x83, 0xd0, 0x0d, 0x1a, 0xbf, 0xe3, 0xee, 0xa0, 0x71, 0x62, 0xee, 0xd6, 0xf0, 0x2c, 0xde, 0xe0, 0xf9, 0xc1, 0x6a, 0x00, 0x92, 0xd6, 0xf0, 0x17, 0xcd, 0x06, 0x27, 0x3d, 0xd1, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0f, 0xde, 0x1c, 0xb4, 0x1a, 0xc8, 0xbd, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x59, 0x8b, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc5, 0x8c, 0xc1, 0x1b, 0x24, 0xc2, 0x05, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x42, 0x81, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3c, 0xb5, 0x1b, 0xa4, 0x19, 0x84, 0x1e, 0xb4, 0xaf, 0xc9, 0x7d, 0xd0, 0x38, 0x31, 0x77, 0x6b, 0x78, 0x16, 0x6f, 0xf0, 0xf2, 0x60, 0x35, 0x00, 0x49, 0xad, 0x00, 0x2f, 0x5c, 0x5a, 0x8b, 0xdb, 0xdb, 0x9b, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x12, 0x52, 0x77, 0x03, 0xf8, 0xcd, 0x85, 0xb5, 0xc1, 0xb1, 0x95, 0x81, 0xd0, 0xc9, 0x85, 0x8d, 0x95, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x1c, 0x0e, 0xf7, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0xd1, 0xb3, 0xb3, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0x39, 0x58, 0x50, 0x14, 0xbc, 0x86, 0x3f, 0x97, 0x36, 0x48, 0x05, 0xe4, 0xdc, 0xf0, 0xef, 0xfc, 0x1a, 0x2c, 0x29, 0x15, 0xaf, 0x36, 0x28, 0xed, 0x2d, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0xc7, 0x16, 0x86, 0x1f, 0x2c, 0x09, 0x0a, 0xde, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x68, 0x74, 0xab, 0x7b, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xa6, 0xec, 0xce, 0xd6, 0x70, 0x49, 0x6d, 0x90, 0xb6, 0xc9, 0xb9, 0x06, 0x2d, 0xfe, 0x70, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x64, 0x0b, 0x77, 0x1b, 0xa4, 0x81, 0x7e, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0xd6, 0x1b, 0x77, 0x1f, 0xa4, 0x6d, 0x72, 0xd6, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x4d, 0xd9, 0x9d, 0x6d, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xa0, 0x29, 0xbb, 0xb3, 0xd5, 0xa0, 0xe5, 0xaf, 0xee, 0x36, 0x38, 0x86, 0x1b, 0x6c, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0xa0, 0x29, 0xbb, 0xb3, 0xd5, 0x60, 0x8c, 0x53, 0x1c, 0xa4, 0x6d, 0x72, 0x6e, 0x50, 0x74, 0x1a, 0xaf, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x41, 0xd9, 0x54, 0xbf, 0x86, 0xb7, 0x75, 0x0e, 0x1a, 0xd7, 0xeb, 0x6e, 0x83, 0xb6, 0xf0, 0xba, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x22, 0x6d, 0xf1, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0xcf, 0x2d, 0x0c, 0xdf, 0xf0, 0x17, 0xcd, 0x06, 0x4b, 0x82, 0x82, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x8e, 0xae, 0x7b, 0x83, 0x82, 0x22, 0x73, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0xb7, 0x75, 0x06, 0x4f, 0x0f, 0x9a, 0xa3, 0xeb, 0xde, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xa0, 0x25, 0xdc, 0xb1, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0x48, 0x5b, 0x7c, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x96, 0x70, 0xc7, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x85, 0x9b, 0xe8, 0x41, 0xeb, 0x7f, 0xdd, 0x1b, 0xb4, 0x85, 0xd7, 0xdd, 0x06, 0xc5, 0x80, 0xec, 0x06, 0xed, 0xf7, 0x8e, 0x6d, 0xd0, 0xde, 0xf1, 0xd8, 0x86, 0x5f, 0x5c, 0xd6, 0xa0, 0x10, 0x4c, 0x3d, 0x58, 0x91, 0xdc, 0x7d, 0x50, 0x96, 0x79, 0x6e, 0x70, 0xce, 0x5f, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xac, 0xd6, 0xbd, 0x41, 0x1a, 0xe8, 0xe7, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0xbd, 0x71, 0xf7, 0x41, 0xfb, 0xbd, 0x63, 0xad, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x23, 0x76, 0xdd, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xd2, 0x2c, 0xfb, 0xa0, 0xfd, 0xde, 0xb1, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x5a, 0x94, 0x97, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x14, 0x6e, 0xa2, 0x1b, 0x94, 0x4d, 0xf5, 0x1b, 0xb4, 0xed, 0xda, 0xdd, 0x1a, 0xde, 0xd6, 0x19, 0xbc, 0x3e, 0x68, 0xc4, 0xae, 0xbb, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0x7a, 0xd0, 0xe2, 0x6d, 0xf7, 0x06, 0x2d, 0xe7, 0x76, 0xaf, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xf3, 0x01, 0x53, 0x1b, 0x1e, 0x93, 0xd9, 0xf0, 0x71, 0xd4, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x9a, 0x0f, 0x98, 0x6a, 0x83, 0x12, 0x1e, 0x73, 0x0d, 0x9a, 0x3e, 0xec, 0x6e, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xf8, 0xbd, 0xfb, 0xa0, 0xfd, 0xde, 0xb1, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x5a, 0x94, 0x97, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x14, 0x6e, 0xa2, 0x1b, 0x94, 0x4d, 0xf5, 0x1b, 0x34, 0xa0, 0xdc, 0xdd, 0x1a, 0xde, 0xd6, 0x19, 0xbc, 0x3e, 0x68, 0x18, 0xb9, 0xbb, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0x7a, 0xd0, 0xb2, 0x74, 0xf7, 0x06, 0x2d, 0x54, 0x77, 0x1f, 0xb4, 0x15, 0xdc, 0xdd, 0x0a, 0xf0, 0xc2, 0xa5, 0xb5, 0xd0, 0x95, 0xb1, 0xb1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xad, 0x77, 0x77, 0x37, 0x80, 0x1f, 0x9c, 0xdc, 0x1b, 0x59, 0xdd, 0x58, 0x19, 0x08, 0x59, 0x5d, 0x1b, 0xdc, 0x86, 0x5f, 0x94, 0x36, 0x68, 0x37, 0xab, 0x7b, 0xc3, 0x5f, 0x34, 0x1b, 0x1c, 0x15, 0x51, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x48, 0xc0, 0xe4, 0xdc, 0xa0, 0x10, 0x4c, 0x3d, 0x68, 0x74, 0xab, 0x7b, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x46, 0x58, 0xb9, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x1b, 0xae, 0xdc, 0x07, 0x6d, 0xb7, 0x75, 0x6f, 0x90, 0x64, 0x40, 0xb8, 0xc1, 0x21, 0x6b, 0x71, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x59, 0x8b, 0x6b, 0x78, 0x16, 0x6f, 0xf0, 0x72, 0x70, 0x7b, 0xf0, 0x72, 0x70, 0x77, 0x70, 0x7a, 0xf0, 0x79, 0x50, 0x7d, 0xb0, 0x1a, 0x80, 0x64, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x9a, 0xe7, 0xe4, 0xee, 0xa0, 0xed, 0xb6, 0xee, 0x0e, 0xca, 0x3a, 0xcf, 0x35, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0x91, 0xaa, 0xd7, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0xb9, 0x00, 0xc3, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x58, 0x04, 0x32, 0xba, 0x41, 0xd9, 0x54, 0xbf, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xde, 0x1b, 0x7a, 0x90, 0xb6, 0xc9, 0xd9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0xf0, 0xb9, 0xd2, 0xc1, 0x31, 0x45, 0x64, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x1e, 0x34, 0x42, 0xe1, 0xdd, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x71, 0xb6, 0x41, 0xa9, 0xa3, 0x7f, 0x70, 0x28, 0xe3, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x35, 0xa2, 0xac, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0xa3, 0x7f, 0x84, 0x07, 0x65, 0x96, 0x6e, 0x1b, 0x24, 0x19, 0x10, 0x6e, 0x70, 0xc8, 0x5a, 0xdc, 0xa0, 0xa5, 0xb2, 0xac, 0x35, 0x3c, 0x8b, 0x77, 0xd0, 0xfc, 0x7f, 0xf7, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x31, 0x63, 0xf0, 0x06, 0x89, 0x70, 0xc1, 0x07, 0x4d, 0x50, 0x12, 0xb6, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x10, 0x44, 0x77, 0x50, 0xd6, 0x79, 0xae, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x46, 0xe5, 0xff, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0x6c, 0x70, 0x54, 0x44, 0x6d, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x12, 0xa9, 0x7a, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x9a, 0x0b, 0x30, 0x5c, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x07, 0xad, 0xff, 0x75, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xda, 0xff, 0xe8, 0xdc, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0x0f, 0x56, 0x60, 0x8b, 0xaf, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0xee, 0xee, 0x3d, 0x68, 0xf4, 0xc7, 0xbb, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x46, 0x71, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x86, 0x2b, 0xf7, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0xbd, 0x71, 0xf7, 0xe0, 0xf1, 0x41, 0x3b, 0x6d, 0xc2, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0x70, 0xe5, 0x5e, 0xc3, 0xdb, 0x3a, 0x1b, 0xac, 0x37, 0xee, 0x1e, 0x3c, 0xde, 0xa0, 0xc9, 0x21, 0xef, 0x6a, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x35, 0xd2, 0xe9, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x96, 0x70, 0xc7, 0x0e, 0x16, 0x69, 0x8b, 0xb7, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xbd, 0xd1, 0xd1, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x0d, 0x57, 0xee, 0x83, 0xf6, 0x52, 0xbb, 0x37, 0x48, 0x32, 0x20, 0xdc, 0xe0, 0x90, 0xb5, 0xb8, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x87, 0xac, 0xc5, 0x35, 0x3c, 0x8b, 0x37, 0x38, 0x3b, 0x78, 0x38, 0xb8, 0x38, 0x78, 0x39, 0x38, 0x7b, 0xd0, 0xfc, 0x7f, 0xf7, 0xc1, 0x6a, 0x01, 0xf5, 0x83, 0xb2, 0xce, 0x73, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x59, 0x8b, 0x6b, 0x78, 0x16, 0x6f, 0x70, 0x78, 0x70, 0x79, 0xf0, 0x74, 0xf0, 0x71, 0xf0, 0xf2, 0xa0, 0xf9, 0xff, 0xee, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x62, 0xc6, 0xe0, 0x0d, 0x12, 0xe1, 0x82, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xa1, 0xc0, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0xd2, 0x0c, 0x42, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xed, 0x6a, 0x79, 0xd7, 0x41, 0xe3, 0xc4, 0xdc, 0x75, 0x50, 0xd6, 0x79, 0xae, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x6b, 0x71, 0x0d, 0xcf, 0xe2, 0x0d, 0x3e, 0x0f, 0x8e, 0x0e, 0x1e, 0x0e, 0x0e, 0x1f, 0x34, 0xff, 0xe6, 0xbd, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x4d, 0xc0, 0xfb, 0xa0, 0xbd, 0xd4, 0xee, 0x0e, 0xca, 0x3a, 0xcf, 0x35, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x28, 0x28, 0x32, 0x0f, 0xda, 0x76, 0xed, 0xde, 0xa0, 0xa0, 0xc8, 0xdc, 0xa0, 0x30, 0x54, 0x5d, 0xc3, 0xb3, 0x78, 0x83, 0xa7, 0x83, 0xbb, 0x83, 0xd3, 0x83, 0xbf, 0x07, 0x2b, 0x64, 0x7f, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0x91, 0xaa, 0xd7, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0xb9, 0x00, 0xc3, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x58, 0x04, 0x32, 0x7a, 0xd0, 0xe2, 0x6d, 0xf7, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x4c, 0xc7, 0x36, 0x68, 0x79, 0x1f, 0xb3, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x98, 0x8e, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x83, 0x32, 0x4b, 0xb7, 0x0e, 0x0f, 0x27, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x46, 0x3a, 0xfd, 0xa0, 0x81, 0x0f, 0xef, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0x20, 0xc9, 0x80, 0x70, 0x83, 0x43, 0xd6, 0xe2, 0x1a, 0x9e, 0xc5, 0x1b, 0x14, 0x1c, 0xac, 0x06, 0x20, 0xd9, 0x60, 0xbd, 0x80, 0xfa, 0x41, 0x43, 0x25, 0xde, 0x6b, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x50, 0x50, 0x64, 0x1e, 0x34, 0xa0, 0xdc, 0xbd, 0x41, 0x41, 0x91, 0xb9, 0x41, 0x61, 0xa8, 0xba, 0x86, 0x67, 0xf1, 0x06, 0x37, 0x07, 0x97, 0x07, 0x7f, 0x07, 0x6f, 0x0f, 0x56, 0xc8, 0xfe, 0x6c, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x22, 0x55, 0xaf, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x73, 0x01, 0x86, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xb0, 0x08, 0x64, 0xf4, 0xa0, 0x65, 0xe9, 0xee, 0x83, 0x76, 0x33, 0xbd, 0x0f, 0xda, 0x1c, 0xf5, 0xde, 0xa0, 0xbd, 0x15, 0xef, 0x83, 0xb2, 0xce, 0xb3, 0xc3, 0x29, 0xd6, 0x02, 0xbc, 0x70, 0x69, 0x2d, 0x68, 0x65, 0x63, 0xeb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0xa9, 0xa2, 0xac, 0x83, 0xf3, 0xe6, 0xe9, 0x41, 0xab, 0x59, 0xdd, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0xd1, 0xad, 0xee, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x1a, 0x5c, 0x34, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x14, 0x6e, 0xa2, 0x07, 0xad, 0x33, 0x78, 0x1f, 0xb4, 0x73, 0x96, 0xb5, 0xe1, 0x92, 0xda, 0x20, 0x6d, 0x93, 0x73, 0x0d, 0x16, 0xf7, 0x86, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xca, 0x16, 0xd4, 0x83, 0xd6, 0x19, 0xbc, 0x37, 0x68, 0xe9, 0x2c, 0x6b, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xda, 0xd3, 0x34, 0xdc, 0xf0, 0x98, 0xcc, 0x86, 0x8f, 0xa3, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x7d, 0xd0, 0x9e, 0xa6, 0x61, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x00, 0x7c, 0x8c, 0xbd, 0xb5, 0xc1, 0xa5, 0xb1, 0x95, 0xc9, 0xb5, 0xd4, 0xd1, 0xa5, 0xb1, 0xa5, 0xd1, 0xa5, 0x95, 0xcd, 0xcb, 0x00, 0x7c, 0xd5, 0x84, 0xe9, 0x80, 0x8c, 0xbd, 0xb5, 0xc1, 0xa5, 0xb1, 0x95, 0xc9, 0x81, 0xd4, 0xd1, 0xa5, 0xb1, 0xa5, 0xd1, 0xa5, 0x95, 0xcd, 0xad, 0x41, 0xd3, 0xef, 0x68, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x4d, 0xbf, 0xa3, 0x35, 0x00, 0x3f, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x73, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0xe9, 0x77, 0xb4, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x12, 0x50, 0xf2, 0x83, 0xb5, 0xef, 0xce, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xf5, 0xc1, 0x9b, 0x07, 0x6b, 0xdf, 0x9d, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x6b, 0xdf, 0x9d, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x47, 0x58, 0xd7, 0xa0, 0x98, 0xc4, 0x5c, 0xc3, 0xe7, 0x4a, 0x1b, 0x84, 0x74, 0xea, 0xc1, 0x21, 0xa6, 0xe3, 0xa0, 0x29, 0x31, 0xee, 0x35, 0xbc, 0xcd, 0xba, 0xe1, 0xdf, 0x9c, 0x0d, 0x0f, 0xde, 0x6c, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0xa0, 0x29, 0x31, 0xee, 0xd6, 0xf0, 0x41, 0xce, 0x1a, 0x1e, 0x61, 0x5d, 0x83, 0x62, 0x12, 0x73, 0x83, 0x66, 0x19, 0xbe, 0x0f, 0xd6, 0xed, 0x72, 0xae, 0xe1, 0x6d, 0xd6, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0xf0, 0x66, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0xeb, 0x76, 0x39, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x0b, 0x00, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xb1, 0x66, 0x36, 0x68, 0x63, 0xe2, 0x7b, 0x83, 0x66, 0x3a, 0xbe, 0x6b, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x82, 0xd8, 0x74, 0x83, 0x66, 0x19, 0xbe, 0x37, 0x68, 0x96, 0xe1, 0xbb, 0x83, 0x75, 0xbb, 0x9c, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x70, 0x43, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x0b, 0x00, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xb1, 0x66, 0x36, 0x68, 0x63, 0xe2, 0x7b, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0xb4, 0xe0, 0xf1, 0x5d, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x65, 0x01, 0xc0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x33, 0xd6, 0xcc, 0x06, 0x6d, 0x4c, 0x7c, 0xaf, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0xc1, 0xe3, 0x83, 0x75, 0xbb, 0x9c, 0xd5, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xfa, 0xad, 0x63, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0x25, 0xc6, 0xbd, 0xc1, 0xe2, 0x5c, 0xce, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x48, 0xc5, 0x5c, 0xc3, 0xe7, 0x4a, 0x07, 0xe1, 0x9c, 0xda, 0x41, 0x53, 0x62, 0xdc, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xb6, 0x0c, 0x3b, 0x36, 0x68, 0x63, 0xe2, 0xfb, 0xa0, 0x55, 0xa1, 0xef, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x5a, 0x49, 0x45, 0x3b, 0x58, 0x9c, 0xcb, 0xb9, 0x41, 0xc3, 0x40, 0xdf, 0x07, 0xed, 0xfa, 0x7c, 0xaf, 0x06, 0x0b, 0x1a, 0xa6, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x16, 0x34, 0x4c, 0x35, 0x80, 0x77, 0x5b, 0xd8, 0x5a, 0x19, 0x48, 0x89, 0xd9, 0x9b, 0xdc, 0x1a, 0x08, 0x5d, 0x1e, 0x5c, 0xd9, 0x86, 0xc7, 0x47, 0x36, 0x58, 0xd0, 0x30, 0xb5, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x7a, 0x4f, 0xbd, 0x83, 0x26, 0xc3, 0xaa, 0x36, 0x28, 0xed, 0x2d, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0xc7, 0x56, 0xa6, 0x1f, 0xac, 0xcd, 0xe3, 0xde, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x58, 0x36, 0xe3, 0xbc, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0xca, 0x87, 0xbd, 0x35, 0x28, 0xe1, 0x31, 0xd7, 0xa0, 0x05, 0xb3, 0xef, 0x36, 0x68, 0xeb, 0xfb, 0x62, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xd0, 0xea, 0x36, 0xd5, 0x41, 0x23, 0x6e, 0xdf, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf7, 0xa0, 0x11, 0xb7, 0xef, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xb2, 0x17, 0xc7, 0x1a, 0xde, 0xd6, 0x39, 0x68, 0xc4, 0xed, 0xbb, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0xd6, 0x1a, 0xb9, 0xd6, 0xa0, 0x11, 0xb7, 0xef, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0xda, 0xfa, 0xbe, 0x38, 0x68, 0xa2, 0x92, 0x6b, 0x83, 0x16, 0xf2, 0xbe, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x8d, 0xfa, 0x4e, 0x1d, 0xb4, 0x5e, 0xc9, 0xb5, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0xd8, 0x7f, 0xb3, 0x41, 0xd9, 0xf4, 0x7e, 0xd0, 0x3e, 0xde, 0xf7, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x68, 0xbd, 0x92, 0xab, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0x7a, 0xd0, 0xba, 0xe2, 0xf7, 0x06, 0x4d, 0x54, 0x72, 0xd5, 0x6a, 0xd0, 0xd8, 0xa4, 0xd7, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x63, 0x93, 0x5e, 0x0d, 0xe0, 0xd7, 0x16, 0xb6, 0x56, 0x06, 0xc2, 0xf6, 0xf6, 0x26, 0x56, 0x16, 0xe6, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x96, 0xcd, 0x38, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x66, 0x0e, 0xa6, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x4d, 0x6a, 0x5e, 0x6c, 0x90, 0xe2, 0xe4, 0xb4, 0x06, 0xc7, 0x70, 0x83, 0x83, 0x55, 0x60, 0xb2, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0xd4, 0xbc, 0xd8, 0x20, 0xc5, 0xc9, 0x69, 0x0d, 0x8e, 0xe1, 0x06, 0x07, 0xcb, 0x9c, 0x64, 0x3b, 0x28, 0xeb, 0x3c, 0x57, 0xc3, 0xdc, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xe6, 0xbe, 0x01, 0xbc, 0xdb, 0xc2, 0xd6, 0xca, 0x40, 0x4a, 0xcc, 0xc2, 0xc6, 0xca, 0x40, 0xe8, 0xf2, 0xe0, 0xca, 0x36, 0x3c, 0x3e, 0xb2, 0x61, 0xee, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x77, 0x96, 0xa6, 0x1f, 0x2c, 0x40, 0x7f, 0x5e, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0x59, 0x99, 0x7c, 0xb0, 0x6c, 0xc6, 0xb9, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0x6c, 0xc6, 0x79, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0xb6, 0xbe, 0x2f, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0x9b, 0xbc, 0xdf, 0x6d, 0xd0, 0xd6, 0xf7, 0xc5, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x14, 0x88, 0x63, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x62, 0xee, 0x77, 0x1b, 0x34, 0x39, 0xfc, 0xdd, 0xac, 0x41, 0xd3, 0xe8, 0x7d, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0x69, 0xf4, 0xbe, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x9a, 0x36, 0xe6, 0x3a, 0x68, 0x62, 0x98, 0x6a, 0xc3, 0x27, 0x36, 0x1b, 0xb4, 0xbf, 0xb8, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0xe9, 0x39, 0x1f, 0x2c, 0x2f, 0x73, 0x6e, 0x83, 0x20, 0x3d, 0xdd, 0xa0, 0x69, 0x65, 0xaa, 0x35, 0x08, 0xc1, 0x87, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x5a, 0xdd, 0xa6, 0xda, 0xa0, 0xe8, 0x34, 0xde, 0xe0, 0x90, 0x41, 0xb0, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xac, 0xaf, 0x74, 0x83, 0x26, 0xa3, 0xb9, 0x0e, 0x9a, 0xaf, 0xa6, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0xa5, 0x37, 0xfd, 0x06, 0x4b, 0xfa, 0x9c, 0x0f, 0x96, 0x57, 0x38, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xc6, 0x9a, 0xd9, 0xa0, 0x9d, 0xb2, 0xad, 0x83, 0xf4, 0xa4, 0xc1, 0x83, 0x43, 0x2f, 0xdf, 0x1a, 0x34, 0x0a, 0x4e, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x43, 0x98, 0x62, 0x07, 0xed, 0x8c, 0x7f, 0x6f, 0x50, 0x0c, 0xc8, 0x6e, 0xd0, 0x38, 0xa8, 0xd8, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xa0, 0xc8, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xb1, 0x66, 0x36, 0x68, 0x25, 0x75, 0x6b, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x0f, 0x5e, 0x1f, 0x34, 0x0e, 0x2a, 0xd6, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3e, 0x68, 0xfb, 0xff, 0xbb, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0xf6, 0x3d, 0xb7, 0x0e, 0x5a, 0x3e, 0xa7, 0x5a, 0x83, 0x46, 0xd7, 0xa9, 0x36, 0x7c, 0x62, 0xb3, 0x41, 0x53, 0xf4, 0xdf, 0x1b, 0x14, 0x03, 0xb2, 0x1b, 0x34, 0x0e, 0x2a, 0xb6, 0x41, 0x8b, 0xf9, 0xdf, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0xed, 0x7b, 0x6e, 0x1d, 0xb4, 0x2c, 0x4f, 0xb5, 0x06, 0xa7, 0xb4, 0xa5, 0x0d, 0x9f, 0xd8, 0x6c, 0xd0, 0x14, 0xfd, 0xf7, 0x06, 0xc5, 0x80, 0xec, 0x06, 0x8d, 0x83, 0x8a, 0x6d, 0xd0, 0x62, 0xfe, 0xf7, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x07, 0x57, 0x96, 0x6f, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0xb4, 0xfa, 0xbb, 0x75, 0xd0, 0xb2, 0x3c, 0xd5, 0x06, 0xc5, 0x80, 0xec, 0x1a, 0xb4, 0x9c, 0x01, 0xde, 0x1a, 0xde, 0xd6, 0x39, 0x68, 0xf1, 0x03, 0x7c, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xa0, 0x61, 0xdb, 0xad, 0x83, 0x96, 0xcf, 0xa9, 0x5a, 0x0d, 0x33, 0xb4, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x98, 0xa1, 0x06, 0xf0, 0x6e, 0x0b, 0x5b, 0x2b, 0x03, 0x29, 0x19, 0x7b, 0x93, 0x2b, 0x03, 0xa1, 0xcb, 0x83, 0x2b, 0xdb, 0xf0, 0xf8, 0xc8, 0x86, 0x19, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0x5c, 0xd8, 0x78, 0xb0, 0x6c, 0xc6, 0x79, 0x0d, 0x7f, 0x2e, 0x6d, 0x30, 0x4a, 0xfa, 0x0e, 0xd6, 0x48, 0x71, 0xb7, 0xe1, 0x2f, 0x9a, 0x0d, 0x96, 0xcd, 0x38, 0x6f, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0xd0, 0xd6, 0xf7, 0xc5, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x63, 0x06, 0xbc, 0x0d, 0xda, 0xfa, 0xbe, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0x2d, 0x75, 0x70, 0x6c, 0xd0, 0x3e, 0x0f, 0xf8, 0x06, 0x05, 0x65, 0x77, 0x87, 0x53, 0xac, 0x35, 0x68, 0x6b, 0x25, 0x73, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x24, 0x2f, 0xdf, 0xc3, 0x07, 0xab, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xac, 0x02, 0xc7, 0x3b, 0x48, 0x3f, 0x0e, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0x0b, 0x2c, 0x9c, 0x37, 0x08, 0xd2, 0xd3, 0x0d, 0xd6, 0x1c, 0xe6, 0xad, 0x41, 0x08, 0x3e, 0x6c, 0xf8, 0x20, 0x67, 0x83, 0xa4, 0x89, 0xdf, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x53, 0x5a, 0x05, 0x1b, 0xac, 0x55, 0xce, 0x6b, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xda, 0x57, 0x70, 0xd0, 0xa2, 0x15, 0xf8, 0x1a, 0x24, 0x76, 0x06, 0x6f, 0xf8, 0x20, 0x67, 0x83, 0xa4, 0x89, 0xdf, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x53, 0x5a, 0x05, 0x1b, 0x24, 0xa5, 0x05, 0x1f, 0xb4, 0x68, 0x05, 0xbe, 0x41, 0x41, 0x30, 0xbb, 0xc1, 0x32, 0xe6, 0xbc, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xa3, 0x7d, 0x05, 0x07, 0x2d, 0x7f, 0x81, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x96, 0x31, 0xe7, 0x6d, 0xb8, 0xa4, 0xd6, 0x38, 0x74, 0xb0, 0x8c, 0x39, 0xaf, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x19, 0x73, 0xde, 0x86, 0x4b, 0x6a, 0x8d, 0xe7, 0x07, 0xcb, 0x98, 0xf3, 0xaa, 0x35, 0x48, 0x81, 0x0d, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0x97, 0x20, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa4, 0xea, 0x0d, 0xd6, 0x2a, 0xe7, 0xad, 0xe1, 0x17, 0xa5, 0x0d, 0x9a, 0xf2, 0xc6, 0xdc, 0x70, 0x49, 0x6d, 0x70, 0xd8, 0xef, 0x58, 0x83, 0x45, 0x88, 0x79, 0x87, 0xa7, 0x75, 0xaa, 0x56, 0x83, 0x56, 0x31, 0xaf, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x5a, 0xc5, 0xbc, 0x6a, 0x00, 0x3e, 0xde, 0xc8, 0xde, 0xe4, 0x40, 0xc6, 0xde, 0xda, 0xe0, 0xc2, 0xe8, 0xd2, 0xc4, 0xd2, 0xd8, 0xd2, 0xe8, 0xf2, 0x36, 0x3c, 0x3e, 0xb2, 0x41, 0xab, 0x98, 0x57, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x86, 0x2a, 0xc2, 0x0e, 0xd6, 0x6b, 0x3d, 0xaf, 0xe1, 0xcf, 0xa5, 0x01, 0xef, 0x2e, 0x0d, 0x3f, 0x58, 0xaf, 0xf5, 0xdc, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x67, 0x96, 0xa6, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0x90, 0xe0, 0xf6, 0x79, 0x70, 0xd4, 0x06, 0xdd, 0xf0, 0x17, 0xcd, 0x1a, 0x3e, 0x57, 0xda, 0xf0, 0x08, 0xdd, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3e, 0x38, 0x6a, 0x83, 0xb6, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x59, 0x58, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xe2, 0xdf, 0x0d, 0x8a, 0x4a, 0xf1, 0x83, 0x14, 0xd0, 0xcf, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0xbe, 0x79, 0xb9, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x78, 0x73, 0xb0, 0x76, 0x4f, 0x7d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0xa3, 0xcb, 0x63, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x89, 0x8f, 0xbb, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x2a, 0xc5, 0x37, 0x48, 0xc9, 0xbd, 0xec, 0x20, 0x05, 0xf4, 0x73, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x86, 0xad, 0xb4, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x68, 0x15, 0xbc, 0x83, 0x75, 0xbc, 0x6e, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x1b, 0xb4, 0x5f, 0x0b, 0x7e, 0xb0, 0xae, 0xd8, 0xad, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x41, 0xfb, 0xb5, 0xe0, 0x07, 0xe9, 0xda, 0xb1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x22, 0x13, 0xf7, 0xa0, 0x15, 0x57, 0xf0, 0x36, 0xfc, 0xe2, 0xb2, 0xe1, 0xc1, 0x9b, 0x83, 0x14, 0xd0, 0xcf, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x43, 0x30, 0x6b, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0x44, 0x09, 0xde, 0x1a, 0xde, 0xd6, 0x39, 0x68, 0xb9, 0x24, 0xac, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x9b, 0x9b, 0x5f, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x19, 0x66, 0xf0, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x53, 0x90, 0xe0, 0xd5, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x2b, 0xd9, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0x1a, 0x5d, 0x5a, 0x5b, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0x39, 0x68, 0x65, 0xf5, 0x6b, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0x6d, 0xd6, 0x83, 0xe6, 0xb8, 0xc1, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0x68, 0x65, 0xf5, 0x6b, 0x83, 0xf6, 0xb3, 0xc1, 0xab, 0x35, 0x7c, 0x85, 0xb3, 0xe1, 0x57, 0xb2, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x52, 0x5a, 0xf0, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x1a, 0x5d, 0x5a, 0x5b, 0xc3, 0xbf, 0x39, 0x1b, 0x24, 0xa5, 0x05, 0x1f, 0x34, 0x2c, 0xfb, 0xb5, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6f, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0xc4, 0xdd, 0xa0, 0xa8, 0x14, 0xdf, 0xa0, 0xfd, 0x74, 0xf0, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x91, 0x89, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0x41, 0xc3, 0xb2, 0x5f, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0xd3, 0xea, 0xe0, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc4, 0xc7, 0x3d, 0x68, 0x64, 0x1e, 0x7c, 0x0d, 0xda, 0x9c, 0xfd, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x3e, 0xee, 0x41, 0x2b, 0xf7, 0xe0, 0x55, 0xab, 0x41, 0xdb, 0x48, 0xa0, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0x6d, 0x24, 0xd0, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x9a, 0x36, 0xe6, 0x3a, 0x68, 0x03, 0xfc, 0x6c, 0xc3, 0x27, 0x36, 0x1b, 0xb4, 0xbf, 0xb8, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0xd0, 0xba, 0xf5, 0xf7, 0x06, 0x41, 0x7a, 0xba, 0x41, 0xcb, 0x2e, 0x57, 0x1b, 0x34, 0xe1, 0xfd, 0xbd, 0x06, 0xad, 0x6e, 0x53, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0xd0, 0x64, 0x34, 0xd7, 0x41, 0xa3, 0x3a, 0x57, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x82, 0x22, 0xf3, 0xa0, 0xc1, 0xe8, 0xad, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x1a, 0x05, 0xa7, 0xda, 0xf0, 0x41, 0xce, 0x06, 0x0d, 0x52, 0x84, 0xaf, 0xe1, 0x17, 0x97, 0x0d, 0x0a, 0x8a, 0xcc, 0x83, 0x66, 0xb9, 0xb7, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x0e, 0xce, 0x6c, 0xd0, 0x64, 0x34, 0xd7, 0x41, 0xe3, 0x07, 0x59, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0xed, 0x7b, 0x6e, 0x1d, 0xb4, 0xd5, 0x91, 0xb5, 0x06, 0x8d, 0xae, 0x53, 0x6d, 0xf8, 0x20, 0x67, 0x83, 0x06, 0x29, 0xc2, 0x37, 0x68, 0xd5, 0x23, 0x7c, 0xc3, 0x07, 0x39, 0x1b, 0xb4, 0x27, 0x12, 0xbe, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x41, 0xfb, 0x9e, 0x5b, 0x07, 0x0d, 0x8d, 0x64, 0x1d, 0x14, 0x14, 0x99, 0x6b, 0x70, 0x4a, 0x5b, 0xda, 0xf0, 0x41, 0xce, 0x06, 0x0d, 0x52, 0x84, 0x6f, 0xd0, 0xaa, 0x47, 0xf8, 0x86, 0x0f, 0x72, 0x36, 0x68, 0x4f, 0x24, 0x7c, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0x56, 0x7f, 0xb7, 0x0e, 0x1a, 0x1a, 0xc9, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x68, 0xd8, 0x76, 0xeb, 0xa0, 0xad, 0x8e, 0xac, 0x0e, 0xa7, 0xd8, 0x1a, 0xa4, 0x85, 0xc4, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xa4, 0x85, 0xc4, 0x36, 0x80, 0x3f, 0xdb, 0xdb, 0x9b, 0x58, 0x59, 0x98, 0x1b, 0x88, 0x5b, 0xd9, 0x59, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x86, 0xc7, 0x47, 0x36, 0x48, 0x0b, 0x89, 0xdd, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0x89, 0x21, 0xc3, 0x83, 0xb5, 0xef, 0xce, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0xed, 0xbb, 0xf3, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0xed, 0x50, 0xa4, 0x1d, 0x34, 0xf2, 0x64, 0xb8, 0x41, 0x3b, 0x0d, 0x69, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0xb4, 0xd3, 0x90, 0x76, 0xd0, 0xc8, 0x93, 0xe1, 0x06, 0xed, 0x50, 0xa4, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0xd0, 0xcc, 0x41, 0xda, 0x41, 0x23, 0x4f, 0x86, 0x1b, 0x34, 0xf2, 0x64, 0xb8, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x60, 0xea, 0xd8, 0xa0, 0x91, 0x27, 0xc3, 0x0d, 0xda, 0x69, 0x48, 0x3b, 0x68, 0xa2, 0x22, 0xed, 0x70, 0x8a, 0xad, 0x41, 0x43, 0x33, 0x68, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x0d, 0xcd, 0xa0, 0x35, 0x00, 0x0f, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0xa1, 0x19, 0xb4, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xd9, 0xd5, 0xc9, 0x07, 0x6b, 0xdf, 0x9d, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0xab, 0x25, 0xe8, 0x0f, 0xd6, 0xbe, 0x3b, 0xb7, 0xe1, 0x2f, 0x9a, 0x0d, 0xd6, 0xbe, 0x3b, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xc7, 0x56, 0x09, 0x0c, 0x08, 0x0a, 0x59, 0x9a, 0x1d, 0x08, 0x9c, 0x8b, 0x5d, 0x9d, 0x1c, 0x88, 0x4c, 0x4a, 0xd7, 0x86, 0x0f, 0x72, 0xd6, 0xa0, 0x98, 0xc4, 0x5c, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0xc0, 0x51, 0x3d, 0x38, 0xc4, 0x74, 0x6c, 0xd0, 0x86, 0x62, 0x78, 0x07, 0xc7, 0x98, 0xb3, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xf2, 0x29, 0xe4, 0x35, 0xbc, 0xad, 0x33, 0x38, 0xbc, 0x41, 0x3b, 0x79, 0xe1, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0xb5, 0x12, 0xf4, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x1c, 0xb4, 0x26, 0x19, 0xbe, 0xc1, 0x82, 0x08, 0xfa, 0x0e, 0xa7, 0xd8, 0x1a, 0xb4, 0x5f, 0xff, 0xb5, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x7e, 0xfd, 0x57, 0x03, 0xf0, 0x51, 0x86, 0x47, 0x27, 0x17, 0x36, 0x46, 0x07, 0xb2, 0x05, 0x03, 0xa2, 0xd2, 0x05, 0x12, 0x86, 0x97, 0x36, 0xb7, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xb9, 0xd5, 0x9d, 0x07, 0x6b, 0xdf, 0x9d, 0x37, 0x08, 0xd2, 0xd3, 0x35, 0x68, 0xd7, 0x34, 0xbc, 0x35, 0x68, 0x96, 0xe1, 0x7b, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0x4d, 0xa7, 0x86, 0xaf, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x25, 0x74, 0x7c, 0x70, 0x88, 0xe9, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xe9, 0xd4, 0xf0, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x34, 0x9d, 0x1a, 0xde, 0x1a, 0x84, 0xe9, 0xd8, 0x86, 0xb7, 0xec, 0xd6, 0xf0, 0xc4, 0xdd, 0x86, 0x67, 0xf1, 0x06, 0x1f, 0x07, 0x7f, 0x07, 0xb7, 0x0f, 0x8a, 0x10, 0xe8, 0x83, 0xf0, 0x54, 0x6d, 0x35, 0x68, 0x58, 0xe9, 0x6f, 0xc3, 0xe3, 0x23, 0x1b, 0x34, 0xac, 0xf4, 0xb7, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x43, 0xe6, 0x97, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x36, 0x66, 0xc0, 0x0f, 0x1a, 0x06, 0xfa, 0x6b, 0x83, 0x03, 0x16, 0xdd, 0x1a, 0x14, 0xa4, 0xb1, 0x6b, 0xf8, 0xbe, 0x7d, 0x83, 0x46, 0x71, 0x9f, 0x37, 0x28, 0xa1, 0x63, 0xd7, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x11, 0xeb, 0x0f, 0xd6, 0xcf, 0x64, 0x1f, 0x84, 0xe9, 0xd8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa9, 0x24, 0xe1, 0x06, 0xed, 0xf3, 0x80, 0xaf, 0xe1, 0x6d, 0x9d, 0x01, 0xbe, 0x34, 0xb7, 0xb9, 0x32, 0x39, 0xba, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x06, 0x67, 0x48, 0x82, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0xe4, 0x60, 0xa9, 0xeb, 0xf6, 0x41, 0x98, 0x8e, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x0b, 0x30, 0x5c, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x1b, 0x94, 0x4d, 0xef, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x70, 0x1c, 0xf8, 0xd8, 0xa0, 0x6c, 0xaa, 0x3f, 0x68, 0x11, 0x04, 0xba, 0x0d, 0xdf, 0x28, 0xb6, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0xf6, 0xdd, 0x79, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xe3, 0x5d, 0xc1, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x59, 0x00, 0xf0, 0xe1, 0xa1, 0x9f, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0x3e, 0xb8, 0xb8, 0x41, 0x09, 0x1d, 0xbb, 0xc1, 0x92, 0x3e, 0xe7, 0x83, 0x30, 0x1d, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xa7, 0x07, 0xc7, 0xbb, 0x82, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0x3e, 0xf8, 0xb8, 0x41, 0x09, 0x1d, 0xbb, 0xc1, 0xda, 0x77, 0xe7, 0x83, 0x30, 0x1d, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0xde, 0x5a, 0xd6, 0x41, 0x23, 0xe5, 0xe1, 0x87, 0xb7, 0xd0, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0xe0, 0xe4, 0x41, 0xeb, 0xf9, 0xe1, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x70, 0xbc, 0x2b, 0xd8, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0xc1, 0xf1, 0xae, 0xa0, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x36, 0xff, 0x77, 0x83, 0x53, 0xc8, 0xd3, 0x41, 0xa9, 0x2e, 0xbb, 0xcc, 0x02, 0x7c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0xf4, 0x86, 0x5f, 0x94, 0x36, 0x68, 0xc8, 0xfc, 0x72, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0xe9, 0x73, 0x3e, 0x38, 0x06, 0x38, 0xac, 0x06, 0x4d, 0x50, 0x87, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xcb, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x50, 0x7b, 0xd8, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0x61, 0xd3, 0xf0, 0xc1, 0xda, 0x77, 0xe7, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xee, 0x41, 0x23, 0xcc, 0xe1, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x46, 0x98, 0xc3, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0x3c, 0x3c, 0x68, 0x45, 0x3e, 0x7c, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x44, 0xd6, 0xd6, 0x41, 0x11, 0x02, 0xbd, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0x60, 0x75, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0xc3, 0x63, 0x32, 0x87, 0xa7, 0x75, 0x36, 0x28, 0x60, 0xf3, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0x68, 0xad, 0xb1, 0x41, 0xd9, 0x54, 0x7f, 0x90, 0x86, 0x97, 0x7b, 0x78, 0xe8, 0x67, 0x83, 0x22, 0xa7, 0x75, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0x83, 0x3b, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xb4, 0xe9, 0x20, 0xde, 0xe1, 0xa1, 0x9f, 0x36, 0x28, 0x86, 0x76, 0x37, 0x28, 0xfa, 0x74, 0x37, 0x18, 0x76, 0xbb, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0x54, 0x92, 0x70, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x16, 0x81, 0x8c, 0x1e, 0xb4, 0x56, 0x23, 0xbe, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0xc3, 0x19, 0xe2, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x76, 0x83, 0x00, 0x3a, 0x3b, 0x28, 0x86, 0x76, 0xdb, 0xa0, 0xd8, 0xd1, 0x5c, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x80, 0x7f, 0xec, 0xcd, 0x8d, 0x2e, 0x2c, 0xcd, 0x6d, 0x6e, 0x83, 0x86, 0x4f, 0xc4, 0x0f, 0x5a, 0x29, 0xdb, 0xda, 0xe0, 0x10, 0x3a, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x38, 0x9c, 0x5e, 0x1c, 0x9c, 0x69, 0x45, 0x0e, 0x5a, 0x29, 0xdb, 0xda, 0xa0, 0x20, 0x8d, 0xdd, 0x60, 0xf9, 0xd3, 0xfd, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xbc, 0x73, 0x69, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x1b, 0x34, 0x7c, 0x22, 0xde, 0x06, 0x05, 0x69, 0xec, 0xc0, 0xd7, 0xb9, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x0a, 0x37, 0xd1, 0x83, 0xd6, 0x6a, 0xc4, 0x0f, 0xd6, 0x37, 0xdd, 0x6f, 0x50, 0xc2, 0x63, 0x2e, 0xf0, 0x75, 0x6e, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xca, 0x16, 0xd4, 0x83, 0xd6, 0x6a, 0xc4, 0x37, 0x68, 0xf8, 0x44, 0x7c, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0xb0, 0x69, 0xf8, 0xa0, 0x08, 0x81, 0x6e, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x61, 0xb7, 0xbb, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x38, 0x9c, 0x5e, 0x1c, 0xb4, 0x56, 0x23, 0x7e, 0xb0, 0xbe, 0xe9, 0x7e, 0x0d, 0x8a, 0x10, 0xe8, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x73, 0x3c, 0xe2, 0x07, 0xeb, 0x9b, 0xee, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xa3, 0xb8, 0xc1, 0x0a, 0xa7, 0xfb, 0x83, 0x16, 0xc3, 0xc4, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x6d, 0xc9, 0xa0, 0x6d, 0xd0, 0x30, 0x9c, 0xf8, 0x1a, 0xde, 0xd6, 0x19, 0xbc, 0x3e, 0x68, 0x55, 0x4d, 0xbc, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x96, 0x0c, 0xda, 0x06, 0x2d, 0x21, 0x8a, 0x1f, 0x34, 0x0b, 0x27, 0xde, 0x6a, 0xd0, 0xd6, 0x97, 0xf8, 0x86, 0x5f, 0x94, 0x36, 0x68, 0xc8, 0xfc, 0x72, 0xc3, 0x5f, 0x34, 0x1b, 0x2c, 0xe9, 0x73, 0xde, 0xf0, 0x89, 0xcd, 0x06, 0xa1, 0x79, 0xbc, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xcb, 0xc9, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x9e, 0x1f, 0x1c, 0x39, 0x24, 0x37, 0x28, 0x25, 0xc4, 0x37, 0x9e, 0x1f, 0x9e, 0xed, 0x39, 0x9c, 0x62, 0xad, 0x41, 0xc3, 0x50, 0xe2, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x00, 0x8f, 0xb1, 0x37, 0x37, 0xba, 0xb0, 0x34, 0xb7, 0x32, 0xf9, 0x60, 0x49, 0x9f, 0xf3, 0x1a, 0xfe, 0x5c, 0x1a, 0xc0, 0x63, 0xec, 0xcd, 0x8d, 0x2e, 0x2c, 0xcd, 0xad, 0x8c, 0x3c, 0x58, 0xd2, 0xe7, 0xdc, 0x86, 0xbf, 0x68, 0x36, 0x7c, 0xb0, 0xba, 0x41, 0x41, 0x1a, 0xbb, 0x86, 0xef, 0xdb, 0x37, 0x68, 0x45, 0x19, 0x7b, 0x83, 0x12, 0x3a, 0xf6, 0xa0, 0xec, 0xa8, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xc5, 0xbf, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0x14, 0x2a, 0x5e, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0xf8, 0xbe, 0x7d, 0x80, 0x67, 0xae, 0x2d, 0x8c, 0x8d, 0x3d, 0x68, 0xce, 0x55, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x14, 0xff, 0x6e, 0x78, 0xf0, 0x66, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x7c, 0xa9, 0x78, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0x77, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xd0, 0xad, 0x78, 0x07, 0x4d, 0x8b, 0x63, 0x6f, 0x50, 0xc0, 0xe6, 0x6f, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0xca, 0x9c, 0x80, 0x83, 0xe6, 0x5c, 0xc5, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x0f, 0x9a, 0x0b, 0x16, 0xdf, 0xf0, 0x6f, 0xce, 0x06, 0xcd, 0xcc, 0x8a, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x12, 0x1f, 0x77, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xf0, 0x66, 0x83, 0x74, 0x74, 0xa8, 0x0e, 0x9a, 0xe5, 0x15, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x35, 0x68, 0x0c, 0x25, 0x6d, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0x31, 0x94, 0xb4, 0x06, 0xf0, 0xfa, 0xd1, 0x01, 0x01, 0x19, 0x7b, 0x6b, 0x83, 0x4b, 0x63, 0x2b, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0x8d, 0xa1, 0xa4, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x0f, 0xae, 0x0c, 0x3f, 0x58, 0xfb, 0xee, 0xbc, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xbc, 0xb7, 0xf6, 0x60, 0xed, 0xbb, 0xf3, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xee, 0xde, 0xe2, 0x83, 0xb5, 0xef, 0xce, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xb5, 0xef, 0xce, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0xb4, 0x43, 0x91, 0xb6, 0xe1, 0x6d, 0x9d, 0x0d, 0x9a, 0x14, 0x17, 0x6f, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0x68, 0xb9, 0x78, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0xb4, 0xd3, 0x90, 0x76, 0xd0, 0xea, 0xbb, 0xf8, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x59, 0x74, 0xf1, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x68, 0xe6, 0x20, 0xed, 0xa0, 0xd5, 0x77, 0xf1, 0x0d, 0x5a, 0x7d, 0x17, 0xdf, 0xf0, 0x8b, 0xcb, 0x06, 0x0d, 0x30, 0x75, 0x6c, 0xd0, 0xea, 0xbb, 0xf8, 0x06, 0x0d, 0xc7, 0x8b, 0x6f, 0xd0, 0xf2, 0xbd, 0x78, 0xab, 0x41, 0x2b, 0x36, 0x62, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xad, 0xd8, 0x88, 0x35, 0x80, 0x0f, 0xdb, 0xdb, 0x9b, 0x58, 0x59, 0x98, 0x1b, 0x08, 0x08, 0xdf, 0x86, 0xc7, 0x47, 0x36, 0x68, 0xc5, 0x46, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x62, 0x6f, 0xf3, 0xc1, 0xda, 0x77, 0xe7, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xb9, 0xa5, 0x99, 0x07, 0x6b, 0xdf, 0x9d, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x6b, 0xdf, 0x9d, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x5f, 0xc9, 0xd6, 0xf0, 0x6f, 0xce, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x95, 0x88, 0xf1, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0x3b, 0x14, 0xe3, 0xad, 0xe1, 0xdf, 0x9c, 0x0d, 0xda, 0xa1, 0x48, 0x3b, 0x68, 0x61, 0x63, 0x7c, 0x0d, 0xff, 0xe6, 0x6c, 0xd0, 0x4e, 0x43, 0xda, 0x41, 0x13, 0x1d, 0xe3, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0x66, 0x0e, 0xd2, 0x0e, 0x5a, 0xd8, 0x18, 0x6f, 0x83, 0x16, 0x36, 0xc6, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x5f, 0xc9, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0xed, 0x34, 0xa4, 0x1d, 0xb4, 0xb0, 0x31, 0xbe, 0x86, 0x7f, 0x73, 0x36, 0x68, 0x87, 0x22, 0xed, 0xa0, 0x89, 0x8e, 0xf1, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x33, 0x07, 0x69, 0x07, 0x4d, 0x74, 0x8c, 0xb7, 0x41, 0x13, 0x1d, 0xe3, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0x01, 0xa6, 0x8e, 0x0d, 0x5a, 0xd8, 0x18, 0xdf, 0xa0, 0x1d, 0x8a, 0xb4, 0x0d, 0x9a, 0xe8, 0x18, 0xef, 0x70, 0x8a, 0x55, 0x6b, 0x28, 0xa6, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x07, 0x0b, 0x20, 0xb9, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0xb2, 0x19, 0xe7, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0xda, 0xfa, 0xbe, 0x38, 0x38, 0x1d, 0x89, 0x6c, 0xd0, 0xd6, 0xf7, 0xc5, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x4b, 0xec, 0xb7, 0x0f, 0x4e, 0x47, 0x22, 0x1b, 0x2c, 0xb1, 0xdf, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0x0d, 0x01, 0x72, 0x1c, 0xac, 0x5f, 0xc4, 0x5b, 0x0d, 0x13, 0xb7, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x98, 0xb8, 0x06, 0xf0, 0x6e, 0x0b, 0x5b, 0x2b, 0x03, 0x29, 0x19, 0x2b, 0x63, 0x63, 0x03, 0xa1, 0xcb, 0x83, 0x2b, 0xdb, 0xf0, 0xf8, 0xc8, 0x86, 0x89, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xac, 0xe4, 0x25, 0x3d, 0x58, 0x36, 0xe3, 0xbc, 0x86, 0x3f, 0x97, 0x36, 0x68, 0x4a, 0x69, 0xeb, 0x60, 0xd9, 0x8c, 0x73, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0xd9, 0x8c, 0xf3, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x6d, 0x7d, 0x5f, 0x1c, 0x2c, 0x7c, 0x27, 0xdd, 0xa0, 0xad, 0xef, 0x8b, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0xda, 0xfa, 0xbe, 0x38, 0x68, 0x62, 0x6c, 0x6b, 0x83, 0xb6, 0xbe, 0x2f, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x2b, 0x92, 0x15, 0x07, 0xcd, 0xd2, 0x6a, 0x1f, 0x4e, 0xb1, 0x35, 0x68, 0x95, 0x42, 0x6c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0x55, 0x0a, 0xb1, 0x06, 0xd0, 0x61, 0x7b, 0x7b, 0x13, 0x2b, 0x0b, 0x73, 0x03, 0x01, 0x31, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0x56, 0x29, 0xc4, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x5b, 0x0f, 0xe3, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0xed, 0xbb, 0xf3, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x2b, 0xd9, 0x06, 0x8d, 0x68, 0x8c, 0x6f, 0xd0, 0xd8, 0xca, 0xf8, 0x06, 0xed, 0xb9, 0x8c, 0x1f, 0xb4, 0x54, 0x32, 0xbe, 0x41, 0x0b, 0x1b, 0xe3, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xaf, 0x64, 0x1b, 0xb4, 0xf2, 0x31, 0xbe, 0x41, 0x43, 0x22, 0xe3, 0x07, 0x0d, 0xc6, 0x8c, 0x6f, 0xd0, 0x44, 0xc7, 0xf8, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x80, 0xa9, 0x63, 0x83, 0x16, 0x36, 0xc6, 0x37, 0x68, 0xa2, 0x63, 0x7c, 0x83, 0x76, 0x1a, 0xd2, 0x3a, 0x9c, 0x62, 0xb3, 0x06, 0x47, 0x9b, 0xcf, 0x65, 0x00, 0x5e, 0x6b, 0xca, 0x74, 0x40, 0xda, 0xde, 0xd8, 0xc8, 0xe6, 0x40, 0xc2, 0xdc, 0xc8, 0x40, 0xda, 0xde, 0xd8, 0xc8, 0x40, 0xc4, 0xea, 0xd2, 0xd8, 0xc8, 0xca, 0xe4, 0xe6, 0xd6, 0x60, 0x15, 0x7a, 0xd4, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x2a, 0xf4, 0xa8, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xb1, 0x9a, 0x98, 0x40, 0xdc, 0xde, 0xc8, 0xca, 0x40, 0xd8, 0xd2, 0xe6, 0xe8, 0x36, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x83, 0x85, 0x0f, 0xdb, 0xad, 0x80, 0x0f, 0x17, 0x36, 0x37, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xb4, 0x70, 0x3a, 0xbe, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x0f, 0x5c, 0x9d, 0x18, 0x5b, 0xda, 0x18, 0xc8, 0x5a, 0x59, 0xde, 0xe1, 0x87, 0x9a, 0xd5, 0xa0, 0x31, 0x05, 0xaa, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xc6, 0x14, 0xa8, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x68, 0x4b, 0x6b, 0x2b, 0x03, 0xa1, 0xcb, 0x83, 0x2b, 0x3b, 0x68, 0x08, 0x4a, 0xf0, 0x70, 0x8a, 0x6d, 0xb0, 0x8a, 0x54, 0x7b, 0x0d, 0xd6, 0xd6, 0x69, 0xcf, 0x02, 0x3e, 0x5d, 0x5a, 0x5b, 0xb9, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xd0, 0x66, 0xef, 0xf8, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x9e, 0x67, 0x61, 0x6c, 0x61, 0x63, 0x74, 0x69, 0x63, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x07, 0x47, 0xbe, 0xd6, 0xc3, 0x29, 0x76, 0xb0, 0x30, 0x58, 0x7b, 0x0d, 0x56, 0x37, 0xaf, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0x6e, 0x5e, 0xdf, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x8f, 0x3a, 0x39, 0xb1, 0x34, 0xba, 0x17, 0x32, 0xb7, 0x39, 0x90, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x34, 0xba, 0xbc, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x55, 0x90, 0xc9, 0x6b, 0xf8, 0x77, 0x7e, 0x01, 0x7f, 0x0e, 0x2d, 0x0d, 0xae, 0x0d, 0x1a, 0x82, 0x12, 0x6c, 0x35, 0x68, 0xfa, 0x7a, 0x7c, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xa0, 0xe9, 0xeb, 0xf1, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xdd, 0xca, 0xe8, 0xee, 0xde, 0xe4, 0xd6, 0x40, 0xd2, 0xc8, 0xca, 0xdc, 0xe8, 0xd2, 0xe8, 0xf2, 0x0e, 0x8e, 0xad, 0xae, 0x2b, 0xe0, 0xcf, 0xc1, 0xd5, 0xc9, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xed, 0x97, 0x8f, 0x6f, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xcb, 0x1c, 0x5a, 0x1a, 0x1c, 0x08, 0x59, 0xd9, 0xdc, 0x1a, 0xc8, 0x58, 0xd8, 0x5c, 0x19, 0xc8, 0x1c, 0x5c, 0x9d, 0xdc, 0xc1, 0x19, 0x09, 0xf5, 0x70, 0x8a, 0xb5, 0x80, 0xdf, 0x16, 0x26, 0x37, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xb4, 0x30, 0x3f, 0xbe, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x07, 0x56, 0x13, 0x13, 0xc8, 0x18, 0x59, 0x18, 0x5d, 0xd8, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xf4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xee, 0x41, 0xca, 0x60, 0xf0, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xdd, 0xf0, 0xb9, 0xd2, 0x06, 0x8d, 0xfb, 0x8f, 0xaf, 0xe1, 0xcf, 0xa5, 0xc1, 0xed, 0x83, 0x93, 0x9e, 0x68, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xfa, 0x20, 0x04, 0x1f, 0x6a, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x1e, 0x84, 0xe0, 0x43, 0xb3, 0x06, 0xcb, 0x3f, 0xb5, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x96, 0x7f, 0x6a, 0x6f, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x8b, 0xd5, 0xc4, 0x04, 0x12, 0x46, 0x47, 0x27, 0x97, 0x26, 0x56, 0x47, 0x57, 0x36, 0xb7, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0xa5, 0x93, 0xda, 0x07, 0x6d, 0x1b, 0x90, 0x37, 0x0b, 0xf8, 0x72, 0x69, 0x6e, 0xe7, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0x41, 0x2b, 0x1d, 0xe4, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xc1, 0xc9, 0xa5, 0xd9, 0x85, 0xd1, 0x95, 0x81, 0xac, 0x95, 0xe5, 0x1d, 0x7e, 0xa8, 0x39, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0xc3, 0x89, 0xb0, 0x41, 0xbb, 0xb6, 0x51, 0x6b, 0x38, 0x47, 0x0e, 0x5a, 0x6e, 0x6a, 0x3a, 0x68, 0x29, 0x46, 0x70, 0xc3, 0x89, 0xb0, 0x41, 0xb3, 0xb4, 0x51, 0x1b, 0x2c, 0x66, 0x83, 0x5a, 0x66, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x9e, 0x27, 0x59, 0x83, 0x85, 0xca, 0x54, 0x07, 0x2d, 0x52, 0x09, 0x6e, 0xf8, 0x20, 0x67, 0x83, 0x26, 0x64, 0x21, 0xd6, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x68, 0xf4, 0xa5, 0xf0, 0xa0, 0xad, 0x93, 0x82, 0x83, 0x73, 0xbd, 0xc1, 0x6a, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0xb4, 0x2a, 0xd5, 0x74, 0xd0, 0xe8, 0x4b, 0xe1, 0x41, 0x2b, 0x39, 0x05, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x06, 0x2d, 0x75, 0x70, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x6f, 0x78, 0x50, 0x72, 0x83, 0xe5, 0xc7, 0xdb, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0xf0, 0x51, 0xfb, 0xc1, 0x51, 0x1b, 0xb4, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0x83, 0x92, 0x1b, 0x2c, 0x3f, 0xde, 0xde, 0xf0, 0xb6, 0xce, 0x41, 0x8b, 0x54, 0x82, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x68, 0x52, 0x85, 0x63, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x1f, 0xb4, 0xe0, 0x44, 0x7e, 0xd0, 0x1a, 0x0f, 0xc1, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x0f, 0x1a, 0xb9, 0x22, 0x3f, 0x68, 0x51, 0x88, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xa0, 0x51, 0x20, 0x8e, 0x0d, 0xda, 0x3a, 0x29, 0x38, 0x68, 0x38, 0x8a, 0xfc, 0xe0, 0x5c, 0x6f, 0xb0, 0x06, 0xed, 0x1e, 0x71, 0x6c, 0xd0, 0xea, 0x5b, 0xc1, 0x41, 0xbb, 0x61, 0xe4, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x06, 0x0d, 0x0c, 0x0d, 0x1e, 0x34, 0xcc, 0x46, 0x7e, 0x70, 0xae, 0x37, 0x58, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x3b, 0x68, 0x4b, 0x7f, 0xfa, 0xa0, 0x81, 0xa1, 0xc1, 0x83, 0x36, 0xe2, 0xc8, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0x1a, 0xf6, 0x17, 0x3c, 0x68, 0xd3, 0x26, 0xe2, 0xe0, 0x5c, 0x6f, 0xb0, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x34, 0x37, 0xbc, 0x71, 0x37, 0x07, 0x6d, 0xf3, 0x35, 0x1d, 0x34, 0xec, 0x2f, 0xb8, 0x41, 0xab, 0x6f, 0x05, 0x07, 0xcd, 0x0b, 0x45, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0x34, 0xd8, 0x3b, 0xb1, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x6f, 0x78, 0x50, 0x72, 0x83, 0xe5, 0xc7, 0xdb, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0xf0, 0x51, 0xfb, 0x41, 0xa3, 0x53, 0x82, 0x1d, 0x9c, 0xeb, 0x0d, 0xd6, 0xa0, 0xbd, 0xe1, 0x89, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x1f, 0xb4, 0x90, 0x49, 0x7e, 0x70, 0x00, 0x4d, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x68, 0x35, 0xa9, 0xf0, 0xa0, 0xd5, 0x49, 0xf2, 0x83, 0x73, 0xbd, 0xc1, 0x6a, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0xb4, 0xed, 0xd8, 0x74, 0xd0, 0x6a, 0x52, 0xe1, 0x41, 0x03, 0x9f, 0xe4, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x06, 0xed, 0xea, 0x18, 0x1e, 0xb4, 0x5e, 0xb9, 0x70, 0x70, 0xae, 0x37, 0x58, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x06, 0x2e, 0x9b, 0x0e, 0xda, 0xd5, 0x31, 0xdc, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x41, 0x63, 0x5e, 0x16, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x06, 0x0d, 0xa1, 0x0d, 0x1e, 0x34, 0xcc, 0x46, 0x7e, 0x70, 0xae, 0x37, 0x58, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0xd0, 0x6a, 0x3b, 0x68, 0x08, 0x6d, 0xf0, 0xa0, 0x8d, 0x38, 0xf2, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0x83, 0x26, 0xc9, 0x05, 0x0f, 0x1a, 0x66, 0x23, 0x3f, 0x38, 0xd7, 0x1b, 0xac, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0xcd, 0x41, 0x70, 0x20, 0x1c, 0x34, 0x49, 0x2e, 0x78, 0xd0, 0x46, 0x1c, 0xf9, 0x06, 0x4d, 0x67, 0x47, 0x6c, 0xd0, 0xa8, 0xc3, 0xc4, 0x41, 0xbb, 0x61, 0xe4, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x1b, 0x2c, 0xb1, 0xdf, 0x3e, 0x38, 0xc6, 0x9c, 0x6d, 0xd0, 0xa2, 0xea, 0xc5, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x06, 0x0d, 0x93, 0x0a, 0x1e, 0x1c, 0x63, 0xce, 0xd6, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0x52, 0x07, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x83, 0xe9, 0xe7, 0x41, 0xc3, 0xa4, 0x82, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x1b, 0x34, 0xef, 0x51, 0x78, 0x70, 0x8c, 0x39, 0x5b, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x48, 0x1d, 0x6c, 0x78, 0xe3, 0x6e, 0x0e, 0x4e, 0x3e, 0xa8, 0x07, 0xcd, 0x7b, 0x14, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0x6d, 0xd0, 0xd6, 0xf7, 0xc5, 0xc1, 0x31, 0xe6, 0x6c, 0x83, 0x66, 0xb5, 0x2f, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0x36, 0x68, 0xb3, 0x55, 0xf0, 0xe0, 0x18, 0x73, 0xb6, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x90, 0x3a, 0xd8, 0xf0, 0xc6, 0xdd, 0x1c, 0x9c, 0xb6, 0x50, 0x0f, 0xda, 0x6c, 0x15, 0xdc, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0xda, 0xa0, 0x61, 0x5e, 0xc1, 0x83, 0x63, 0xcc, 0xd9, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0xea, 0x60, 0xc3, 0x1b, 0x77, 0x73, 0xd0, 0x68, 0x74, 0xd3, 0x41, 0xc3, 0xbc, 0x82, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0xea, 0x60, 0xc3, 0x1b, 0x77, 0x07, 0x8d, 0x78, 0x37, 0x1d, 0x34, 0x6c, 0x2b, 0x78, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0xe6, 0x64, 0xc8, 0x37, 0x58, 0xd0, 0x30, 0xb5, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x96, 0x1d, 0xca, 0x67, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x8d, 0x78, 0x37, 0xad, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x46, 0xd8, 0xc9, 0x0f, 0xa7, 0xd8, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x9a, 0xf1, 0xbe, 0x58, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xed, 0x13, 0x94, 0xaf, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x65, 0x9e, 0xfd, 0xab, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0xf9, 0x7a, 0xf2, 0xc3, 0x29, 0x56, 0xcd, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x1a, 0x5d, 0x26, 0x3f, 0x9c, 0x62, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0x55, 0x91, 0x7c, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0xc6, 0x12, 0xc7, 0x6a, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xdb, 0x78, 0xe2, 0x70, 0x8a, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x5d, 0x20, 0xf2, 0x59, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x7b, 0xaf, 0xe4, 0xab, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x6d, 0x6c, 0xf2, 0x59, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xe3, 0xbc, 0xe4, 0xab, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x2d, 0xfd, 0xe9, 0xc3, 0x29, 0x56, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x7e, 0xc1, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf6, 0x16, 0x0e, 0xc7, 0x83, 0x66, 0x55, 0xa3, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6d, 0x4b, 0x1c, 0x0e, 0xbb, 0x41, 0x59, 0x77, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xd5, 0x8c, 0xc3, 0x83, 0xa1, 0xd9, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xeb, 0xe3, 0xf0, 0xd0, 0x50, 0xe7, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x34, 0x39, 0x1c, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x0e, 0x82, 0x0d, 0x5a, 0xff, 0x8c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x04, 0x0a, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x73, 0xd0, 0xa4, 0xcd, 0xe1, 0x61, 0x3a, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x81, 0xe5, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x83, 0x31, 0x87, 0xe3, 0x41, 0x93, 0x36, 0x87, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x36, 0x72, 0x0e, 0x0f, 0xe3, 0x72, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0xff, 0x1c, 0x0e, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x07, 0xc1, 0x06, 0xad, 0x7f, 0x46, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x02, 0x05, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x39, 0x18, 0x0a, 0x8b, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x83, 0x66, 0x69, 0xa3, 0x36, 0x9c, 0x08, 0x1b, 0x34, 0x4b, 0x1b, 0xb5, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0x58, 0xa8, 0x4c, 0x75, 0xd0, 0xba, 0xa5, 0xe0, 0x1a, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x62, 0xfd, 0x1a, 0x3e, 0x6a, 0x3f, 0x28, 0xb3, 0x74, 0x0f, 0x9a, 0xd6, 0x24, 0x3f, 0x38, 0xd7, 0x1b, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xa6, 0x25, 0xcb, 0x37, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0x1f, 0x23, 0x3f, 0x38, 0x80, 0x26, 0x1d, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0xa0, 0x81, 0xc8, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x2a, 0x3a, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xb2, 0xd2, 0xe1, 0x78, 0x30, 0x14, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xed, 0x47, 0x1d, 0x1e, 0xa2, 0x79, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4d, 0x5e, 0x1d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0x74, 0x1d, 0x0e, 0x92, 0x81, 0xf3, 0xee, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x51, 0xec, 0x70, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xff, 0xec, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xa0, 0xdb, 0xe1, 0xf0, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xed, 0xcf, 0x1d, 0x1e, 0x2c, 0xbc, 0xf7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0xe6, 0x1d, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xe1, 0xef, 0x70, 0x10, 0x2c, 0x48, 0x06, 0x84, 0xef, 0xce, 0xc1, 0x30, 0xf4, 0x39, 0x58, 0x05, 0x90, 0x35, 0xc8, 0x36, 0x68, 0x31, 0xba, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x28, 0xe1, 0xe1, 0x61, 0x5c, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x1d, 0xc5, 0xc3, 0x41, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xee, 0xf1, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x64, 0xe9, 0xe1, 0xb0, 0x0b, 0xb7, 0xc1, 0x42, 0x13, 0xa3, 0x83, 0x91, 0x65, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xd9, 0xd8, 0xc3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x18, 0xf7, 0x70, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0d, 0xf9, 0x1e, 0x1e, 0xac, 0x0f, 0x12, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x98, 0xf2, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb6, 0x9f, 0x0f, 0x0f, 0xda, 0x93, 0x6a, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x58, 0x7d, 0x78, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x99, 0xed, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xed, 0x82, 0x1f, 0x1e, 0xb4, 0xea, 0xd8, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xcb, 0xfc, 0x70, 0x10, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x5d, 0x3f, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x1e, 0x80, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xa1, 0x03, 0xc4, 0x83, 0x85, 0x26, 0x46, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc6, 0x19, 0x10, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x9a, 0x04, 0xe2, 0x41, 0x63, 0x22, 0x28, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0xf8, 0x40, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x28, 0x09, 0xe2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x66, 0x54, 0x10, 0x0f, 0xda, 0x93, 0x6a, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xff, 0x82, 0x78, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xe1, 0x1a, 0xc4, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xad, 0xed, 0x20, 0x0e, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xfb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xb3, 0x42, 0x88, 0x07, 0xc1, 0xc3, 0x7d, 0x3c, 0x3e, 0xbe, 0x1d, 0x8f, 0x87, 0x5d, 0xb8, 0x0d, 0x9a, 0xc8, 0x6d, 0x3a, 0x18, 0x59, 0x56, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x79, 0x42, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x2e, 0x15, 0xe2, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x66, 0xb4, 0x10, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xfa, 0x85, 0x78, 0x50, 0xee, 0x03, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xaa, 0x0c, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xcb, 0x6a, 0x88, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x82, 0x43, 0x3c, 0x48, 0xd1, 0x64, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x5e, 0x87, 0x78, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x06, 0xf7, 0x10, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x10, 0x88, 0x78, 0x90, 0xa2, 0xc9, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xd6, 0x10, 0xf1, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x5b, 0x8c, 0x88, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x8f, 0x44, 0x1c, 0x04, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x56, 0x2e, 0x11, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0d, 0xb5, 0x22, 0x0e, 0xbb, 0xc1, 0x38, 0x64, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xf4, 0x2c, 0xe2, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb6, 0x72, 0x11, 0x87, 0x5d, 0xd8, 0x0d, 0x5a, 0xd9, 0x09, 0x38, 0xac, 0x6f, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xfd, 0x17, 0xf1, 0x70, 0x8a, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x2b, 0x46, 0x1c, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xd3, 0xca, 0x88, 0xc3, 0x2e, 0xf4, 0x20, 0xe4, 0xb3, 0x0f, 0xeb, 0x9b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0xba, 0x46, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x28, 0x37, 0xe2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x36, 0xc4, 0x11, 0x0f, 0xb9, 0xef, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x7b, 0xe7, 0x88, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xf3, 0xec, 0x88, 0x83, 0x64, 0x60, 0x94, 0x0e, 0x4e, 0x42, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x51, 0x1e, 0xf1, 0xd0, 0x9f, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x46, 0xf0, 0x11, 0x0f, 0x42, 0x3e, 0xfb, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xda, 0x1f, 0x71, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xde, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x30, 0x48, 0x3c, 0x08, 0x1e, 0xee, 0xe3, 0xf1, 0xe1, 0x14, 0x3b, 0xbe, 0x0d, 0xbb, 0x70, 0x1b, 0x34, 0x00, 0xdc, 0x74, 0x30, 0xb2, 0xac, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x1a, 0x91, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x70, 0x91, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xb2, 0x23, 0x71, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xc4, 0x48, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x24, 0x4a, 0xe2, 0x20, 0x19, 0x8c, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x43, 0x2f, 0x89, 0x83, 0x64, 0xb0, 0x3a, 0x08, 0x72, 0xfe, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x7c, 0x4d, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xce, 0x4e, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xe1, 0xa0, 0xc4, 0x41, 0xb4, 0x40, 0xf8, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0d, 0x25, 0x25, 0x1e, 0x12, 0x33, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xfb, 0x4e, 0x89, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x43, 0x54, 0x89, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa6, 0xb5, 0x12, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe6, 0xc0, 0x12, 0x07, 0xc9, 0x80, 0xe0, 0xef, 0x3b, 0x38, 0x66, 0x15, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xc0, 0x2c, 0x71, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x96, 0xd7, 0x12, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd6, 0xe4, 0x12, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x7f, 0x97, 0x78, 0x70, 0x6e, 0x29, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x6a, 0x5f, 0xe2, 0xa1, 0x95, 0xf8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x86, 0x06, 0x13, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x90, 0x98, 0x78, 0x38, 0xda, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x06, 0x1d, 0x13, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x40, 0x99, 0x78, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x26, 0x33, 0x13, 0x0f, 0x0a, 0xa9, 0xbf, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xed, 0x7c, 0x26, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x96, 0x34, 0xf1, 0x10, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xed, 0xa8, 0x26, 0x1e, 0x62, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xe1, 0xd7, 0xc4, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0xd5, 0x26, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x5c, 0x37, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x2b, 0xc0, 0x89, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x2d, 0x4e, 0x3c, 0xe4, 0xbe, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xb0, 0x9c, 0x78, 0xb0, 0xb0, 0x1e, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xab, 0xd0, 0x89, 0x07, 0x25, 0x50, 0xe4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc6, 0xac, 0x13, 0x0f, 0x52, 0x34, 0x99, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4d, 0x70, 0x27, 0x1e, 0x62, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xdd, 0xf0, 0xc4, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x39, 0xf4, 0xc4, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x1a, 0x54, 0x6e, 0x3a, 0x18, 0x59, 0x56, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x9e, 0x4f, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x58, 0x7e, 0xe2, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb6, 0xfd, 0x13, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x45, 0xa0, 0x78, 0x50, 0xee, 0x03, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x3f, 0x41, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x7b, 0x0f, 0x8a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0xa7, 0x50, 0x3c, 0x48, 0x28, 0x3b, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xa9, 0xa1, 0x78, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x66, 0x40, 0x14, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x5b, 0xa2, 0x78, 0x90, 0x7e, 0x6a, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xb1, 0x15, 0xc5, 0x83, 0xb4, 0xea, 0xe8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x13, 0x31, 0x8a, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0xb5, 0x51, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x10, 0x8f, 0xe2, 0x41, 0x5a, 0x75, 0xf4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf6, 0x83, 0x14, 0x0f, 0x12, 0x95, 0x9e, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xed, 0x1e, 0x29, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xae, 0x49, 0x71, 0x10, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x95, 0x52, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x8c, 0xa6, 0x38, 0xec, 0x06, 0xe3, 0x90, 0x69, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x53, 0x6f, 0x8a, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0xa6, 0x53, 0x1c, 0x76, 0x83, 0x66, 0xe3, 0xcc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xb6, 0xa7, 0x78, 0x38, 0xc5, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0x03, 0x2a, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xc5, 0x50, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xab, 0x8b, 0x8a, 0x87, 0xdc, 0xf7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x85, 0x48, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x45, 0x4b, 0xc5, 0x83, 0x15, 0x0c, 0x11, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0xe1, 0x54, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x10, 0x55, 0x1c, 0x04, 0x0b, 0x92, 0x01, 0xe1, 0xbb, 0x73, 0x70, 0x12, 0x3a, 0x3e, 0x18, 0xc7, 0x21, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0x9d, 0x2a, 0x1e, 0x84, 0x7c, 0xf6, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xa7, 0x55, 0x71, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xde, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0xa4, 0x55, 0x3c, 0x08, 0x1e, 0xee, 0xe3, 0xf1, 0xf1, 0x6d, 0xd8, 0x85, 0xdb, 0xa0, 0xb9, 0xe8, 0xa6, 0x83, 0x91, 0x65, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x09, 0x60, 0xc5, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0x16, 0x2b, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x63, 0x59, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x93, 0xd0, 0x8a, 0x07, 0xe5, 0x3e, 0xe0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x76, 0xac, 0x15, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xbb, 0xad, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x99, 0x70, 0xc5, 0x83, 0x84, 0xb2, 0x93, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xd3, 0xe6, 0x8a, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x8e, 0x5d, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xf3, 0xf1, 0x8a, 0x07, 0xe9, 0xa7, 0x16, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0xbd, 0x57, 0x3c, 0x48, 0x3f, 0xb5, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xd5, 0xaf, 0x78, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x7d, 0x81, 0xc5, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0d, 0x22, 0x2c, 0x1e, 0x24, 0x2a, 0x3d, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xc7, 0x61, 0xf1, 0x20, 0x51, 0xe9, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xfe, 0xc4, 0xe2, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x66, 0x33, 0x16, 0x07, 0xc1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x75, 0x8f, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x03, 0x35, 0x8b, 0xc3, 0x6e, 0x30, 0x0e, 0x99, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xb9, 0xb3, 0x78, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x8d, 0xa0, 0xc5, 0x61, 0x37, 0x68, 0x36, 0xce, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xab, 0x47, 0x8b, 0x87, 0x53, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x48, 0xd3, 0xe2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd6, 0xa4, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd6, 0xaf, 0x16, 0x07, 0xc9, 0xc0, 0x79, 0x77, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x5e, 0xd7, 0xe2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x50, 0xb6, 0x78, 0xd0, 0x94, 0x53, 0xd3, 0x20, 0x5a, 0xd0, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x7b, 0x6d, 0xf1, 0x20, 0xe4, 0xb3, 0x8f, 0xe7, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xc3, 0x71, 0x8b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xf0, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x42, 0xde, 0xe2, 0x41, 0xf0, 0x70, 0x1f, 0x8f, 0x8f, 0x6f, 0xc3, 0x2e, 0xdc, 0x06, 0x4d, 0x39, 0x35, 0x1d, 0x8c, 0x2c, 0xab, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6d, 0x12, 0x2e, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x40, 0x71, 0xf1, 0x10, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0x3e, 0x2e, 0x1e, 0x72, 0xdf, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd6, 0x29, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe6, 0x34, 0x17, 0x0f, 0xda, 0x2b, 0x13, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x23, 0xa1, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xab, 0xa6, 0x8b, 0x83, 0x64, 0x40, 0xe0, 0xf7, 0x1d, 0x0c, 0x47, 0xe9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4d, 0xb1, 0x2e, 0x1e, 0xd6, 0x7e, 0x8f, 0x43, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x86, 0xec, 0xe2, 0x41, 0x5a, 0x14, 0xcd, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6d, 0xdf, 0x2e, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x07, 0xcd, 0xf0, 0x2e, 0x1e, 0xdf, 0x8e, 0x43, 0xc3, 0x2e, 0xdc, 0x06, 0xeb, 0x1b, 0x8c, 0x0e, 0x46, 0x96, 0xd5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x76, 0x87, 0x17, 0x0f, 0x31, 0x1c, 0x76, 0x61, 0x37, 0x58, 0x3f, 0x1e, 0xb4, 0x70, 0x1b, 0xb4, 0x27, 0xd5, 0x74, 0x90, 0x32, 0x18, 0x70, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x9e, 0xbd, 0x38, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc6, 0xbe, 0x17, 0x0f, 0xd6, 0x07, 0x89, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x1d, 0x7e, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x63, 0xf6, 0x8b, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x7d, 0x7f, 0xf1, 0x90, 0xfb, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x13, 0xc0, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x68, 0xc0, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xc0, 0xc0, 0x38, 0x48, 0x06, 0x6e, 0xad, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x66, 0x23, 0x18, 0x0f, 0x52, 0x20, 0xcd, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xed, 0x82, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x29, 0x62, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x56, 0x62, 0x3c, 0x58, 0x58, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x45, 0x28, 0xc6, 0x41, 0xb2, 0xc1, 0x1a, 0x04, 0x92, 0x83, 0x61, 0xe8, 0x73, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xbc, 0x08, 0xe3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x20, 0x0a, 0xe3, 0x20, 0xd9, 0x60, 0xb1, 0xad, 0xc8, 0xc1, 0x30, 0xf4, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x43, 0x2e, 0x8c, 0x83, 0x64, 0x40, 0xf0, 0xee, 0x1c, 0x0c, 0x43, 0x9f, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0xa0, 0x61, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0xcc, 0x61, 0x3c, 0x58, 0x58, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xa9, 0x1f, 0xc6, 0x41, 0xb2, 0xc1, 0x5a, 0xe1, 0x91, 0x83, 0x61, 0xe8, 0x73, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x9d, 0x0e, 0xc6, 0x83, 0xe5, 0x29, 0x25, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0xc7, 0xa1, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x16, 0x21, 0xe3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xc6, 0x22, 0xe3, 0xc1, 0x32, 0x0f, 0x88, 0x41, 0x32, 0xc8, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x32, 0x24, 0xe3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa6, 0x2c, 0x19, 0x0f, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xfe, 0x26, 0xe3, 0x41, 0x41, 0x9a, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x35, 0x94, 0xf1, 0xb0, 0xf6, 0x7b, 0x1c, 0x1a, 0x76, 0xe1, 0x36, 0x28, 0x81, 0x22, 0x8f, 0x43, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xaa, 0x2b, 0xe3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x0a, 0x2d, 0xe3, 0x41, 0x7b, 0x65, 0x22, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x3c, 0x97, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xed, 0x97, 0x71, 0x90, 0x0c, 0x8c, 0xd2, 0xc1, 0x70, 0x94, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x03, 0xc5, 0x8c, 0x87, 0xfe, 0xe4, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xa9, 0xcc, 0x78, 0x58, 0xfb, 0x3d, 0x0e, 0x2d, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x63, 0xd0, 0x8c, 0x07, 0x49, 0x44, 0x24, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x62, 0xcd, 0x78, 0x88, 0xe1, 0x71, 0x68, 0xd8, 0x85, 0xdb, 0x20, 0x2d, 0x34, 0xfb, 0x38, 0xb4, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0d, 0x8c, 0x33, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x10, 0x9d, 0xf1, 0x20, 0xd1, 0x0f, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x8c, 0x3b, 0xe3, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x9f, 0x67, 0x1c, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x63, 0xf9, 0x8c, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0xf6, 0x67, 0x3c, 0xac, 0xfd, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x64, 0xa3, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xb3, 0x20, 0x8d, 0x07, 0x0b, 0x38, 0x72, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcd, 0x99, 0x34, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x8f, 0xa0, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x41, 0xa1, 0xf1, 0xa0, 0xb9, 0x73, 0xf4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xfb, 0xd0, 0x78, 0xe8, 0x4f, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x5b, 0x15, 0x8d, 0x87, 0xb5, 0xdf, 0xe3, 0xd0, 0x20, 0xdb, 0xd0, 0x7c, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe6, 0xb3, 0x18, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x66, 0xc1, 0x18, 0x0f, 0x96, 0x79, 0x40, 0x0c, 0x92, 0x41, 0x36, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc6, 0xcc, 0x18, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xbe, 0xc6, 0x78, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x26, 0xe3, 0x18, 0x0f, 0x52, 0x20, 0xcd, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4d, 0xdd, 0x31, 0x1e, 0xd6, 0x7e, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe6, 0xd6, 0x17, 0x0f, 0x31, 0x1c, 0x76, 0x61, 0x37, 0x58, 0x3f, 0x1e, 0xb4, 0x70, 0x1b, 0xac, 0xe9, 0x96, 0x3a, 0x48, 0x19, 0x0c, 0x38, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0xe7, 0x69, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x7c, 0x52, 0xe3, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf6, 0x9e, 0x1a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe6, 0xa9, 0x1a, 0x0f, 0x8e, 0xde, 0xe6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0xd4, 0x6a, 0x3c, 0xc4, 0xff, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xb0, 0x7e, 0x3c, 0x68, 0xe1, 0x36, 0x58, 0x48, 0x2f, 0x75, 0x90, 0x32, 0x18, 0x70, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x10, 0xd7, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x67, 0xd7, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x9f, 0xaf, 0x71, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x20, 0x6c, 0x3c, 0x58, 0x8e, 0x2b, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x9c, 0xd8, 0x38, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x5b, 0x90, 0x8d, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0xae, 0x6c, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xc6, 0x66, 0xe3, 0x21, 0x86, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x05, 0x6d, 0x3c, 0x28, 0xa4, 0xfe, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x64, 0xda, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xe1, 0xd5, 0xc6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0d, 0xc5, 0x36, 0x1e, 0x24, 0x86, 0xc8, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0xb7, 0x6d, 0x3c, 0xc4, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x9b, 0xbc, 0x8d, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x46, 0xb8, 0xf1, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xcb, 0xc7, 0x8d, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xae, 0xb9, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x03, 0xd3, 0x8d, 0x87, 0xdc, 0xf7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x41, 0xec, 0xc6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x09, 0xef, 0xc6, 0x83, 0x15, 0x0c, 0x11, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x1e, 0x6f, 0x3c, 0x58, 0x54, 0x3a, 0x74, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x6e, 0x7a, 0xe3, 0x41, 0x08, 0x80, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0x86, 0x6f, 0x3c, 0xc4, 0x70, 0xd8, 0x85, 0xdd, 0x60, 0xfd, 0x78, 0xd0, 0xc2, 0x6d, 0xd0, 0x3c, 0x5d, 0xd3, 0x41, 0xca, 0x60, 0xc0, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xd2, 0x81, 0xe3, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x65, 0x70, 0x1c, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x23, 0x12, 0x8e, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0xbc, 0x70, 0x3c, 0xac, 0xfd, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xa9, 0xc3, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xc3, 0x22, 0x8e, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x09, 0xc5, 0xf1, 0x90, 0xfb, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x6c, 0x8b, 0xe3, 0x41, 0xf2, 0x10, 0xf3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xb1, 0x19, 0xc7, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xed, 0xe3, 0x38, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0d, 0x82, 0x3a, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x36, 0x75, 0x1c, 0x04, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x16, 0x58, 0x1d, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcd, 0x35, 0x3b, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x5d, 0x69, 0xc7, 0x83, 0x66, 0xe3, 0xcc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xec, 0xed, 0x38, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd6, 0xc8, 0x1d, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x78, 0xba, 0xe3, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb6, 0xde, 0x1d, 0x0f, 0x89, 0x99, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6d, 0xea, 0x3b, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x03, 0xe0, 0xf1, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xb3, 0x05, 0x8f, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0xa8, 0x77, 0x3c, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xd2, 0xc2, 0xe3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x24, 0xc4, 0xe3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x26, 0x2c, 0x1e, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6d, 0x72, 0x3c, 0x0e, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x0b, 0x24, 0x8f, 0x07, 0xcb, 0x99, 0x84, 0x06, 0xd1, 0x82, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xeb, 0x2a, 0x8f, 0x07, 0x21, 0x9f, 0x7d, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x0c, 0xf3, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xec, 0xe6, 0x71, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xde, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0xf4, 0x79, 0x3c, 0x08, 0x1e, 0xee, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x31, 0xa2, 0xc7, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x9d, 0xf4, 0x38, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa6, 0x9e, 0x1e, 0x0f, 0x52, 0x5b, 0xad, 0x17, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x93, 0x5b, 0x8f, 0x07, 0x6b, 0x86, 0x52, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xc9, 0xb6, 0xc7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6d, 0xcb, 0x3d, 0x1e, 0x62, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x31, 0xbc, 0xc7, 0x83, 0xb3, 0x69, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xad, 0xbf, 0xc7, 0x83, 0xc1, 0x1a, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x03, 0xed, 0xf1, 0x10, 0xc3, 0xe3, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x39, 0x1f, 0xc7, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x29, 0x72, 0x3c, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xaa, 0x92, 0xe3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x16, 0xa0, 0x1c, 0x0f, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x64, 0x95, 0xe3, 0x41, 0xb9, 0x0f, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x9d, 0x2d, 0xc7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0d, 0x83, 0x39, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xc8, 0xcc, 0xf1, 0x20, 0xa1, 0xec, 0x64, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xfc, 0x9a, 0xe3, 0x21, 0x86, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0x8c, 0x73, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xc8, 0x9d, 0xe3, 0x41, 0xf2, 0x10, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb6, 0xf9, 0x1c, 0x0f, 0x96, 0xec, 0xe2, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0x14, 0x74, 0x3c, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x14, 0xa2, 0xe3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc6, 0x1b, 0x1d, 0x0f, 0xd6, 0x00, 0xe2, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x9d, 0x74, 0x3c, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x5a, 0xa6, 0xe3, 0x41, 0x08, 0x80, 0x0f, 0xbb, 0xb0, 0x1b, 0xac, 0x1f, 0x0f, 0x5a, 0xb8, 0x0d, 0x96, 0x98, 0x59, 0x1d, 0xa4, 0x0c, 0x06, 0x1c, 0x8e, 0xf6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xad, 0x5c, 0x3e, 0x0e, 0x82, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x73, 0x9c, 0x8f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x36, 0x65, 0x1f, 0x87, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0x18, 0x41, 0x9e, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0xc9, 0x7d, 0x3c, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xa8, 0xef, 0xe3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xfa, 0xf0, 0xe3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x3d, 0xe5, 0xc7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x3c, 0xfa, 0xf1, 0x60, 0x51, 0xe9, 0xd0, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xe8, 0xf5, 0xe3, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcd, 0x78, 0x3f, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x81, 0x99, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x56, 0xfe, 0x38, 0xc1, 0x9d, 0x7f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xb1, 0xfe, 0x78, 0x1c, 0x3a, 0xbe, 0x0d, 0xbb, 0xb0, 0x1b, 0xac, 0x1f, 0x0f, 0x5a, 0xb8, 0x0d, 0x5a, 0x75, 0x6c, 0x3a, 0x48, 0x19, 0x0c, 0x38, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x0a, 0x80, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x0f, 0x83, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x83, 0x06, 0x39, 0x08, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xad, 0xb5, 0x41, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x76, 0x84, 0x1c, 0x76, 0x83, 0x66, 0x30, 0xd5, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x56, 0x09, 0x79, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x6d, 0x4d, 0xc8, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x02, 0x0a, 0x39, 0xec, 0x06, 0xed, 0xce, 0xe1, 0x2c, 0xdc, 0x86, 0x18, 0x1e, 0x2c, 0x67, 0x12, 0x3a, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0xbb, 0x85, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0xe7, 0x85, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x37, 0x0c, 0x39, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0x2b, 0x43, 0x1e, 0x2c, 0x2a, 0x1d, 0x3a, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x85, 0x86, 0x1c, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xa5, 0x6b, 0xc8, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4d, 0x73, 0x43, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x4a, 0x1c, 0xf2, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xeb, 0xe7, 0x90, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x6b, 0x87, 0x3c, 0x08, 0x01, 0xf0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x23, 0xf3, 0x90, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0xc6, 0x87, 0x1c, 0x76, 0x83, 0x66, 0xe3, 0xcc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xf5, 0x0f, 0x79, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x69, 0x82, 0xc8, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x0d, 0x85, 0xc8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xab, 0x10, 0x91, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xf0, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x04, 0x46, 0xe4, 0xc1, 0xa2, 0xd2, 0xa1, 0x41, 0xb4, 0xa0, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xbc, 0x47, 0xe4, 0x41, 0xc8, 0x67, 0x1f, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xed, 0x92, 0x44, 0x0e, 0xbb, 0xc1, 0xa8, 0x97, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xda, 0x4a, 0xe4, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc6, 0x61, 0x22, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x56, 0x6c, 0x22, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xed, 0xf2, 0x44, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x81, 0x99, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x3d, 0x14, 0x79, 0xd0, 0xea, 0xad, 0xfa, 0x20, 0x5a, 0xf0, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xac, 0x52, 0xe4, 0xc1, 0x18, 0x58, 0x38, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0x83, 0x8a, 0x1c, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x95, 0xab, 0xc8, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0x72, 0x45, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x3d, 0x2c, 0xf2, 0x10, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcd, 0x9d, 0x45, 0x1e, 0xc6, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x9c, 0x5b, 0xe4, 0x41, 0x08, 0x80, 0x1f, 0xdf, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0x1b, 0x40, 0x0e, 0xbb, 0xc1, 0xa8, 0x97, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x68, 0x03, 0xe4, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x36, 0x26, 0x20, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x87, 0x01, 0x79, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x06, 0x3c, 0x20, 0x0f, 0xca, 0x7d, 0xc0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xad, 0x8e, 0x40, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x26, 0x05, 0x72, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xb3, 0x2e, 0x90, 0x07, 0x09, 0x65, 0x27, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc6, 0x68, 0x20, 0x0f, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x82, 0x0e, 0xe4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x26, 0x7f, 0x20, 0x0f, 0x96, 0xec, 0xe2, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x2a, 0x82, 0x3c, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xc0, 0x12, 0xe4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x26, 0xa1, 0x20, 0x0f, 0xd6, 0x00, 0xe2, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0xb2, 0x82, 0x3c, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x06, 0x17, 0xe4, 0x41, 0x08, 0x80, 0x0f, 0xbb, 0xb0, 0x1b, 0xac, 0x1f, 0x0f, 0x5a, 0xb8, 0x0d, 0x5a, 0xe5, 0x6b, 0x3a, 0x48, 0x19, 0x0c, 0x38, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x32, 0x8c, 0x1c, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xd3, 0x8b, 0x91, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x29, 0x32, 0xf2, 0xb0, 0xf6, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xdd, 0x32, 0xf2, 0x60, 0x39, 0xae, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x36, 0x44, 0x23, 0x87, 0x5f, 0x10, 0x2d, 0x30, 0xe6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x56, 0x51, 0x23, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x66, 0x5c, 0x23, 0x0f, 0x5a, 0x9f, 0x43, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xd3, 0xb3, 0x91, 0x07, 0x4b, 0x86, 0x84, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x30, 0x37, 0x72, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0x39, 0x8f, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x66, 0x8f, 0x3c, 0x58, 0x58, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x49, 0xf9, 0xc8, 0x83, 0x06, 0x1c, 0xd1, 0x8f, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x28, 0x8e, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x54, 0x8e, 0x3c, 0x68, 0x07, 0x13, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0x41, 0x47, 0x1e, 0xb4, 0xfc, 0x89, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x0b, 0xd6, 0x91, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x9b, 0xdb, 0x91, 0x07, 0x0b, 0x0b, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x15, 0x1e, 0x79, 0xd0, 0xc0, 0x2b, 0xfa, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa6, 0x7e, 0x23, 0x0f, 0x96, 0xa7, 0x94, 0x1c, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x1f, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe6, 0xf0, 0x23, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x76, 0xfb, 0x23, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0x11, 0x48, 0x0e, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x63, 0x0b, 0x92, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x87, 0x90, 0x3c, 0x68, 0x4f, 0xaa, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xa8, 0x85, 0xe4, 0xc1, 0x92, 0x21, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x39, 0x0e, 0xc9, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x1e, 0x22, 0x39, 0xec, 0x06, 0xa3, 0x63, 0x7d, 0x61, 0x37, 0x58, 0x00, 0xeb, 0xb3, 0xb0, 0x1b, 0xac, 0x19, 0x4a, 0x59, 0xd8, 0x85, 0xdb, 0x90, 0xfb, 0x3e, 0x08, 0xb2, 0xf8, 0x0d, 0x16, 0x7c, 0x71, 0x1d, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc6, 0x7d, 0x24, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x0a, 0x91, 0xe4, 0xb0, 0x0b, 0xb7, 0x41, 0x5a, 0x68, 0xf6, 0xc1, 0xa2, 0xd2, 0xa1, 0x0d, 0x31, 0x1c, 0x6e, 0x83, 0x21, 0xf5, 0x7b, 0xb0, 0xa8, 0x74, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xd3, 0x5b, 0x92, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x43, 0x62, 0x92, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x3c, 0x93, 0x3c, 0xc4, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x13, 0x6d, 0x92, 0x87, 0xdc, 0xf7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe6, 0xe4, 0x24, 0x0f, 0x12, 0xfd, 0xa0, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0xe0, 0x49, 0x1e, 0x0c, 0xd6, 0xd8, 0xc3, 0x29, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x94, 0x33, 0xf2, 0x10, 0xc3, 0x61, 0x17, 0x76, 0x83, 0xf5, 0xe3, 0x41, 0x0b, 0xb7, 0x41, 0xd3, 0x96, 0x4d, 0x07, 0x29, 0x83, 0x01, 0x87, 0xa3, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x7b, 0x90, 0x92, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xbc, 0x52, 0x72, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x6c, 0x53, 0x72, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x41, 0x54, 0xf2, 0x60, 0x95, 0xdd, 0xff, 0x20, 0x19, 0x98, 0xbe, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x7a, 0x2a, 0x79, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xd6, 0x2a, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x79, 0x59, 0xc9, 0x83, 0x14, 0x48, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xb3, 0xb8, 0x92, 0x87, 0xb5, 0xdf, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x36, 0x7d, 0x25, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x43, 0x2c, 0x39, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x97, 0x2c, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x01, 0x5a, 0x72, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xad, 0x5a, 0x72, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x82, 0x5b, 0xf2, 0xa0, 0xc5, 0x95, 0xa8, 0x41, 0x32, 0x50, 0xfc, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x6a, 0xb8, 0xe4, 0xc1, 0x98, 0xb0, 0x3a, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xee, 0x5c, 0xf2, 0x20, 0x05, 0xd2, 0xfc, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xa7, 0x5d, 0x72, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd6, 0xe7, 0x25, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x83, 0x46, 0xae, 0x57, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xbf, 0xbd, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x1c, 0x34, 0x44, 0x30, 0x79, 0xd0, 0xca, 0x3f, 0xc5, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xad, 0xe6, 0x4b, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xe5, 0x5f, 0x72, 0x3c, 0x68, 0x88, 0x60, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x0a, 0xc2, 0xe4, 0xc1, 0x08, 0xf2, 0x3c, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc6, 0x1b, 0x26, 0x0f, 0xa7, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xb5, 0x89, 0xc9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x87, 0x68, 0xf2, 0x20, 0x04, 0xc0, 0x07, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0xd3, 0x98, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0xff, 0x98, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x34, 0x99, 0x3c, 0x58, 0x50, 0xbb, 0x3f, 0x48, 0x06, 0xa7, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x08, 0xcb, 0xe4, 0x21, 0x55, 0x73, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x7a, 0xcc, 0xe4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe6, 0x6e, 0x26, 0x0f, 0x46, 0x90, 0xe7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x99, 0x9e, 0xc9, 0x43, 0x62, 0xe6, 0x38, 0x74, 0x3c, 0x1f, 0x76, 0x61, 0x37, 0x58, 0x3f, 0x1e, 0xb4, 0x70, 0x1b, 0x34, 0x07, 0xda, 0x74, 0x90, 0x32, 0x18, 0x70, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xc2, 0x35, 0x39, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xcb, 0x3b, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x61, 0x78, 0x72, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x0a, 0x79, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xb6, 0xf3, 0xe4, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf6, 0xc9, 0x27, 0x07, 0xc1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x19, 0xf5, 0xc9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x9b, 0x0b, 0x94, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x1c, 0x82, 0x72, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6d, 0x59, 0x50, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x7a, 0x83, 0xf2, 0x20, 0x44, 0xfc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x18, 0x42, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x7d, 0x13, 0xca, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0d, 0xb2, 0x50, 0x1e, 0x52, 0x07, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x46, 0x66, 0x28, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x24, 0x0e, 0xe5, 0xb0, 0x0b, 0x3d, 0x08, 0x11, 0xff, 0x0d, 0x56, 0xb9, 0xff, 0x1f, 0x8e, 0xf6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0xb1, 0x51, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xad, 0xc6, 0x51, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0xc0, 0xa3, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0x02, 0xd1, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xf2, 0x47, 0x79, 0xd0, 0xb0, 0xcf, 0xc8, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x8e, 0x21, 0xe5, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcd, 0x32, 0x52, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x45, 0x92, 0x72, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xee, 0x92, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x80, 0x27, 0xe5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x56, 0x4a, 0x39, 0x41, 0x9e, 0x7f, 0x10, 0x2d, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xc4, 0x4a, 0x79, 0x50, 0xd2, 0x34, 0x1c, 0x56, 0x68, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0xcd, 0x52, 0x0e, 0xbb, 0xc1, 0xa8, 0x97, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x84, 0x2e, 0xe5, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x16, 0x7f, 0x29, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x40, 0xf4, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0x1a, 0x53, 0x1e, 0xa4, 0xe3, 0x35, 0x0c, 0xa2, 0x85, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xeb, 0x4c, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x1d, 0x6a, 0xca, 0x83, 0x10, 0x00, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xb4, 0x4d, 0x79, 0x18, 0x97, 0x43, 0x72, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xba, 0x19, 0xe5, 0x21, 0x86, 0xc7, 0xb7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xbb, 0x61, 0x93, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x87, 0x36, 0x79, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xf9, 0xb6, 0xc9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4d, 0xcd, 0x4d, 0x1e, 0x62, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x6d, 0xbc, 0xc9, 0x83, 0x72, 0x1f, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x83, 0x7e, 0x93, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x20, 0x9c, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x62, 0xe2, 0xe4, 0x41, 0x42, 0xd9, 0xc9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x9d, 0xc7, 0xc9, 0x43, 0x0c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x4e, 0x39, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x35, 0xcd, 0xc9, 0x83, 0xe5, 0x2a, 0x39, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x46, 0x40, 0x27, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x5d, 0x3a, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xb5, 0xd5, 0xc9, 0x83, 0xa5, 0x4e, 0x38, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x56, 0x62, 0x27, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x6f, 0x3b, 0x79, 0x10, 0x02, 0xe0, 0xc3, 0x2e, 0xec, 0x06, 0xeb, 0xc7, 0x83, 0x16, 0x6e, 0x83, 0x56, 0x50, 0x9b, 0x0e, 0x52, 0x06, 0x03, 0x0e, 0x47, 0xfb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x46, 0xe6, 0x29, 0x87, 0xdd, 0x60, 0x7d, 0x90, 0xd8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb6, 0xf3, 0x29, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xe0, 0x3f, 0xe5, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0x27, 0xa8, 0x3c, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x9c, 0x42, 0xe5, 0x61, 0xed, 0x77, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xb3, 0x15, 0x95, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0xd9, 0xa8, 0x3c, 0xc4, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xd3, 0x20, 0x95, 0x87, 0xdc, 0xf7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x86, 0x4c, 0x2a, 0x0f, 0x92, 0x87, 0x98, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0d, 0xb0, 0x54, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x05, 0xa2, 0xf2, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xab, 0x31, 0x95, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xe3, 0xa6, 0x72, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4d, 0xf2, 0x54, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x41, 0xa8, 0xf2, 0xd0, 0x02, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x33, 0x4d, 0x95, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x7b, 0x52, 0x95, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x16, 0xb2, 0x2a, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x11, 0xb0, 0xca, 0x83, 0xe5, 0xb8, 0x42, 0x83, 0x68, 0x41, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x7d, 0xb3, 0xca, 0x43, 0xc3, 0xaf, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x61, 0xb6, 0xca, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x9a, 0xab, 0x3c, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x32, 0x5e, 0xe5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x26, 0xfc, 0x2a, 0x0f, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xe6, 0x60, 0xe5, 0x41, 0xb9, 0x0f, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x9d, 0xc4, 0xca, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0d, 0x3b, 0x56, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x88, 0xb2, 0xf2, 0x20, 0xa1, 0xec, 0x64, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x7c, 0x66, 0xe5, 0x21, 0x86, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0xfc, 0xac, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x48, 0x69, 0xe5, 0xc1, 0x92, 0x5d, 0x9c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xd3, 0xaa, 0x95, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0x83, 0xad, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x82, 0x6d, 0xe5, 0xc1, 0x1a, 0x40, 0x9c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xcb, 0xbb, 0x95, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x32, 0xb8, 0x72, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x23, 0xc7, 0x95, 0x87, 0xdc, 0xf7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x46, 0x99, 0x2b, 0x0f, 0x92, 0x87, 0x98, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0x49, 0x57, 0x1e, 0x62, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x0d, 0xec, 0xca, 0x83, 0x10, 0x00, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xde, 0x5d, 0x79, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xdd, 0xa3, 0xca, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0xbb, 0xc1, 0xfa, 0xf1, 0xa0, 0x85, 0xdb, 0x60, 0xc1, 0x41, 0xd5, 0x41, 0xca, 0x60, 0xc0, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x44, 0x5f, 0x39, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0xed, 0x57, 0x1e, 0x2c, 0xc7, 0x15, 0x3a, 0x1e, 0x1f, 0xdf, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0xe7, 0x27, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0xd6, 0x45, 0x83, 0x1d, 0x87, 0x06, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x06, 0xe7, 0xe3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x24, 0x63, 0xd2, 0x1f, 0x52, 0x35, 0xc7, 0xa1, 0xe3, 0xf1, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0x42, 0x13, 0xa3, 0xc5, 0x41, 0xb0, 0xc1, 0x62, 0xda, 0x99, 0x41, 0x32, 0x70, 0xf4, 0x1d, 0xda, 0xb7, 0x1c, 0x8f, 0x17, 0x24, 0x03, 0xf5, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0xe1, 0x14, 0x1b, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x1e, 0xb2, 0x76, 0xc7, 0xe3, 0x83, 0x42, 0xe5, 0xec, 0x78, 0x3c, 0x08, 0x36, 0x68, 0x90, 0xcb, 0x65, 0x71, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x31, 0xed, 0xcc, 0x20, 0x19, 0x38, 0xfe, 0x0e, 0xad, 0x82, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x34, 0xdf, 0x92, 0x72, 0xc8, 0xda, 0x1d, 0x87, 0x86, 0x6c, 0x10, 0x94, 0xde, 0x87, 0x8c, 0xd6, 0xf1, 0x78, 0x10, 0x2c, 0x1e, 0xac, 0x94, 0xc5, 0x5e, 0x1c, 0x04, 0x1b, 0x1e, 0x3c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb4, 0x20, 0x3e, 0x8c, 0xcb, 0x21, 0x9a, 0xc3, 0x6f, 0x3c, 0x1f, 0x0f, 0x96, 0x1f, 0x6f, 0x1f, 0x87, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x38, 0xee, 0x77, 0x2c, 0x2e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xf0, 0x76, 0x1d, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x5d, 0x8a, 0xd2, 0xc1, 0x62, 0xd8, 0x9a, 0xe3, 0xd0, 0xc1, 0x72, 0x9c, 0xae, 0x05, 0xc1, 0x06, 0x27, 0x36, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0xc3, 0x6e, 0xd8, 0x35, 0x58, 0x43, 0x0c, 0x0f, 0x16, 0x71, 0x22, 0x0d, 0xbb, 0xb0, 0x1b, 0x04, 0xc3, 0xfe, 0xc2, 0x6e, 0x90, 0x5e, 0xf4, 0xb3, 0x41, 0xe9, 0x0b, 0x76, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x1a, 0x62, 0xb8, 0x06, 0x8b, 0x8e, 0x90, 0x36, 0x48, 0x0b, 0xcd, 0x3e, 0x18, 0x3f, 0x5d, 0x07, 0x41, 0xe9, 0x7d, 0x88, 0xe1, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0xd0, 0xef, 0x3a, 0xac, 0xd0, 0x1e, 0xa4, 0x28, 0x3f, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x19, 0xcb, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x68, 0xfa, 0x76, 0x3c, 0x3e, 0x0e, 0x1d, 0xac, 0xe2, 0x26, 0x1b, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x9c, 0x6a, 0xc7, 0xe3, 0x41, 0xb0, 0x41, 0x90, 0xc5, 0x2f, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0xad, 0x18, 0x24, 0x03, 0xd5, 0xed, 0xb0, 0x42, 0x7b, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0x7c, 0x1c, 0x5a, 0x41, 0xb0, 0xc1, 0x52, 0xe5, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0xd3, 0x72, 0x34, 0xfc, 0xc6, 0xf3, 0xc5, 0x41, 0xb6, 0x21, 0x2e, 0x83, 0x60, 0x83, 0x45, 0xe6, 0x31, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x70, 0xbb, 0x8b, 0xc3, 0x6e, 0xe8, 0x9a, 0xb9, 0x06, 0x8b, 0x8e, 0x90, 0x0e, 0xd6, 0xcc, 0xc7, 0x0c, 0xbb, 0x70, 0x1b, 0xb4, 0xc5, 0x04, 0x70, 0x88, 0xe6, 0x86, 0x71, 0xd9, 0x60, 0xf5, 0x80, 0xd2, 0x1a, 0x2c, 0x3a, 0x42, 0x3a, 0x58, 0x55, 0xc3, 0xb5, 0xc1, 0x52, 0x2d, 0xa4, 0x43, 0xea, 0xe0, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xb8, 0x20, 0xd8, 0x60, 0xb9, 0x29, 0xc9, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xde, 0xae, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x6d, 0x31, 0x01, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x36, 0x58, 0x6c, 0x2b, 0x72, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x6e, 0xb0, 0x7a, 0x40, 0x69, 0x83, 0x96, 0x47, 0xdd, 0x0f, 0xe3, 0x72, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x86, 0xd4, 0xc1, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x20, 0x4d, 0x75, 0x30, 0xde, 0x75, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0x62, 0x10, 0x2c, 0x48, 0x06, 0xca, 0xdb, 0xc1, 0x78, 0xd7, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x08, 0x55, 0xae, 0x83, 0xf1, 0xae, 0x73, 0x1c, 0x3a, 0x58, 0x89, 0x2f, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x58, 0x6e, 0x4a, 0xb2, 0x38, 0x08, 0x16, 0x24, 0x03, 0xe9, 0xae, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x30, 0x5e, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb2, 0x41, 0x21, 0x56, 0x78, 0x30, 0xfc, 0x63, 0x8f, 0x43, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x6e, 0x4a, 0xb2, 0x38, 0x08, 0x36, 0x68, 0x7e, 0xd5, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xb3, 0xaf, 0xee, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x16, 0x24, 0x03, 0x86, 0x7a, 0xd7, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x06, 0x2b, 0xc6, 0x63, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0x70, 0x7e, 0xa2, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0xa4, 0xa9, 0x0e, 0x82, 0x9c, 0xff, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x64, 0x68, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x36, 0x58, 0xac, 0x67, 0x72, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x20, 0x19, 0x10, 0xef, 0xbb, 0x5c, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x06, 0x24, 0xee, 0x72, 0x1d, 0x04, 0x39, 0xff, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0xc0, 0xf8, 0x1d, 0x92, 0x4b, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0x92, 0x81, 0x59, 0x3b, 0x08, 0x72, 0xfe, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x25, 0x43, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x20, 0x78, 0xbb, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0xd6, 0x4b, 0x2a, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xfa, 0xbe, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x2f, 0x48, 0x06, 0x34, 0xbf, 0xcb, 0x75, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0x40, 0xb0, 0x72, 0x1d, 0x04, 0x39, 0xff, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xb0, 0x77, 0x1d, 0x04, 0x39, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xf7, 0xb9, 0x0e, 0x82, 0x9c, 0xff, 0xa0, 0xbd, 0x82, 0xf7, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x68, 0x1f, 0xe1, 0x7d, 0x0d, 0x16, 0x70, 0xe4, 0x0c, 0x82, 0x05, 0xc9, 0x40, 0xd3, 0xae, 0x83, 0x20, 0xe7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xda, 0x73, 0x1d, 0x04, 0x39, 0xff, 0x71, 0x68, 0x0d, 0x96, 0xf8, 0xc7, 0x0c, 0x82, 0x0d, 0xce, 0x4f, 0xb4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x20, 0x19, 0x88, 0xd5, 0x41, 0x90, 0xf3, 0x1f, 0xac, 0x94, 0xec, 0x3a, 0x0e, 0xad, 0x41, 0xfa, 0xd3, 0xf3, 0x20, 0xd8, 0xe0, 0xfc, 0x44, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xb4, 0xeb, 0xf3, 0x7e, 0xb0, 0x58, 0xb3, 0xeb, 0x38, 0xb4, 0x06, 0x69, 0x2f, 0xd5, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x0d, 0xda, 0xf5, 0x79, 0x3f, 0x58, 0xb4, 0x03, 0x33, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x68, 0xca, 0x75, 0x10, 0xe4, 0xfc, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x71, 0x90, 0x40, 0x5e, 0x71, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0xbc, 0x06, 0xc9, 0x43, 0xcc, 0x83, 0x60, 0x83, 0xf3, 0x13, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0xd0, 0xef, 0x3a, 0x08, 0x72, 0xfe, 0x83, 0xe5, 0xb2, 0x5d, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x41, 0xbb, 0x3e, 0xef, 0x07, 0x8b, 0xed, 0x62, 0x0e, 0xda, 0x47, 0x78, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x08, 0x54, 0xae, 0x83, 0x20, 0xe7, 0x3f, 0x68, 0x61, 0xea, 0xfd, 0x38, 0xb4, 0x06, 0x49, 0x44, 0x24, 0x83, 0x60, 0x83, 0x06, 0x2a, 0xde, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x0d, 0xa0, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xb0, 0x68, 0x9f, 0xea, 0x20, 0xc8, 0xf9, 0x8f, 0x43, 0x6b, 0xb0, 0x64, 0x17, 0x67, 0x10, 0x6c, 0xb0, 0x2e, 0x1a, 0xec, 0xa0, 0x91, 0x7c, 0xf7, 0x35, 0x48, 0x71, 0x26, 0x19, 0x04, 0x1b, 0xac, 0x8b, 0x06, 0x3b, 0x68, 0x47, 0xe2, 0xfd, 0x10, 0xc3, 0xe3, 0xd0, 0xc1, 0x5a, 0x3e, 0x81, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0xb4, 0x82, 0x60, 0x41, 0xb2, 0xc1, 0x62, 0x3d, 0x93, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x2f, 0x48, 0x06, 0xfe, 0xe7, 0x3a, 0xac, 0xd0, 0x0e, 0x92, 0x81, 0xb6, 0x5c, 0x87, 0x15, 0xda, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5a, 0xc6, 0x72, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0xe5, 0x38, 0x4a, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x01, 0xc1, 0xde, 0x75, 0x58, 0xa1, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xf0, 0x3e, 0xd7, 0x61, 0x85, 0xf6, 0x60, 0x89, 0x26, 0xda, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x5a, 0x41, 0xb6, 0x21, 0x2e, 0x83, 0x60, 0x41, 0xb2, 0xc1, 0x62, 0x5b, 0x91, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0xb4, 0x1c, 0x1d, 0x8c, 0x5d, 0xab, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5a, 0xc6, 0x72, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0x0a, 0xe4, 0xfb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0d, 0x0f, 0xbe, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0x0c, 0x28, 0xff, 0xa9, 0x0e, 0x2b, 0xb4, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x0d, 0x9a, 0x09, 0x78, 0x3f, 0xac, 0xd0, 0x1e, 0x34, 0x8c, 0xe8, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc9, 0x80, 0xc4, 0x5d, 0xae, 0xc3, 0x0a, 0xed, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0xcd, 0xc2, 0xbe, 0x1f, 0x34, 0x8c, 0xe8, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x5b, 0x93, 0xef, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x9a, 0xe1, 0x7d, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x48, 0xab, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x41, 0xb0, 0xc1, 0x52, 0xe5, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xf8, 0x8d, 0xe7, 0x8b, 0x83, 0x6c, 0x43, 0x5c, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0xd0, 0xb5, 0xeb, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0xac, 0xca, 0xd7, 0x39, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0xa3, 0x22, 0x33, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x2c, 0x32, 0x8f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0xb1, 0xe4, 0x36, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x64, 0xa0, 0x69, 0xd7, 0x21, 0x5b, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x6c, 0xb8, 0x1e, 0xac, 0x51, 0x91, 0x39, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x0c, 0x7f, 0xaa, 0x43, 0xb6, 0xe2, 0x60, 0xd5, 0x95, 0xcc, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0xc8, 0x3c, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x8e, 0x57, 0xd0, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0x30, 0xef, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x58, 0x3e, 0x39, 0x0e, 0x1d, 0x8c, 0x0d, 0xd7, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x70, 0x68, 0xd2, 0x3d, 0x48, 0xf9, 0xb8, 0x38, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x14, 0xbb, 0x5c, 0x87, 0x6c, 0xc5, 0xc1, 0xd2, 0x17, 0x99, 0x83, 0x55, 0x57, 0x32, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x22, 0xf3, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x38, 0x5e, 0x41, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x3a, 0xff, 0xfd, 0xd0, 0x78, 0xfe, 0x38, 0x74, 0x3c, 0x3e, 0x68, 0x2e, 0x00, 0xfe, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x48, 0x72, 0x1d, 0xb2, 0x15, 0x07, 0x4b, 0x5f, 0x64, 0x0e, 0x56, 0x5d, 0xc9, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x0f, 0x5a, 0x12, 0x80, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x08, 0x55, 0xae, 0x43, 0xb6, 0xe2, 0x60, 0xe9, 0x8b, 0xcc, 0xc1, 0xaa, 0x2b, 0x99, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x45, 0xe6, 0x31, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x87, 0xdd, 0x90, 0xc7, 0xda, 0x30, 0x2e, 0x1b, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0x09, 0x07, 0xfb, 0x87, 0x34, 0xdc, 0x61, 0xeb, 0xe0, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x2d, 0x90, 0xbf, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xed, 0xb9, 0x0e, 0xd9, 0x8a, 0xe3, 0xd0, 0x20, 0xd8, 0x60, 0xe9, 0x7d, 0xcc, 0xc1, 0xaa, 0x2b, 0x99, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xa0, 0x77, 0x1d, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0xe1, 0xcb, 0x75, 0xc8, 0x56, 0x1c, 0x87, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0xe2, 0x60, 0x55, 0x6a, 0xd1, 0xc1, 0x4a, 0x7c, 0x91, 0xe3, 0xf1, 0x71, 0xe8, 0x60, 0xd5, 0x95, 0xcc, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x16, 0xc8, 0xdf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xe0, 0xb8, 0xdf, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xa0, 0xd0, 0xe5, 0x3a, 0x64, 0x2b, 0x8e, 0x43, 0x07, 0xab, 0xae, 0x64, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0xa5, 0xca, 0x31, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x5a, 0x96, 0x74, 0x1f, 0x7e, 0xe3, 0xf9, 0xe2, 0x20, 0xdb, 0x10, 0x97, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xff, 0x8e, 0xe7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xee, 0xef, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0x5f, 0x10, 0x6c, 0xb0, 0xb2, 0x08, 0xe6, 0x20, 0x45, 0xf9, 0x79, 0x90, 0x0c, 0x08, 0xff, 0xaa, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xa0, 0xa8, 0x1d, 0xcf, 0x0f, 0x56, 0x5d, 0xc9, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x5a, 0xfd, 0x1d, 0xcf, 0x0f, 0x56, 0x5d, 0xc9, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0x82, 0x60, 0x41, 0x32, 0xf0, 0xd6, 0xdf, 0xf1, 0xfc, 0x20, 0x45, 0xf9, 0xf9, 0x20, 0x99, 0xc1, 0xe2, 0x60, 0xd5, 0x95, 0xcc, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0xad, 0x20, 0xd8, 0x60, 0xb9, 0x29, 0xc9, 0xe2, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x90, 0x3a, 0x18, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x94, 0xd8, 0xfb, 0x41, 0x8a, 0xf2, 0xf3, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0x92, 0x81, 0xea, 0x76, 0x10, 0xe4, 0xfc, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xa9, 0x83, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xf2, 0x9f, 0xea, 0x20, 0xc8, 0xf9, 0x0f, 0x5a, 0x98, 0x7a, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x05, 0xc9, 0x40, 0xf2, 0xed, 0x90, 0x5c, 0x3a, 0x58, 0x03, 0x76, 0x76, 0xd0, 0x8e, 0x24, 0xfc, 0x41, 0xfb, 0x08, 0xef, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x2c, 0x55, 0x8e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0x55, 0x6b, 0x54, 0xc3, 0x6f, 0x3c, 0x5f, 0x1c, 0x64, 0x1b, 0xe2, 0x32, 0x08, 0x16, 0x24, 0x03, 0x65, 0xef, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0x0a, 0x77, 0xb5, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x2f, 0x08, 0x36, 0x68, 0x38, 0x10, 0xfe, 0x20, 0x5d, 0x70, 0xe8, 0xa0, 0x5d, 0xfb, 0xa5, 0x83, 0x55, 0x57, 0x32, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0x68, 0x10, 0x6c, 0xb0, 0x54, 0x39, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xcb, 0x92, 0xee, 0xc3, 0x6f, 0x3c, 0x5f, 0x1c, 0x64, 0x1b, 0xe2, 0x32, 0x08, 0x36, 0x58, 0xa2, 0x1d, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x1a, 0x24, 0x90, 0x41, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x9a, 0x00, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0xc6, 0x89, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x70, 0xaa, 0x1d, 0xcf, 0x8f, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x04, 0xc8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0xda, 0xf2, 0xa5, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0x32, 0x20, 0xd0, 0xd5, 0x8e, 0xe7, 0x83, 0x60, 0x83, 0x56, 0xb6, 0xe0, 0x0f, 0x96, 0xbe, 0xc8, 0x1c, 0x87, 0x0e, 0x56, 0x5d, 0xc9, 0xac, 0xc1, 0xc2, 0x75, 0x9c, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x13, 0x20, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x4b, 0xeb, 0x9f, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x81, 0xfc, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0x69, 0xae, 0x43, 0xb6, 0x62, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xc6, 0xea, 0xe1, 0x0f, 0x9a, 0x6e, 0x82, 0x3f, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x09, 0x90, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0x75, 0x52, 0x4f, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x64, 0x60, 0xfc, 0x8e, 0xe7, 0x83, 0x60, 0x83, 0x56, 0xef, 0xe1, 0x0f, 0x96, 0xbe, 0xc8, 0x1c, 0x87, 0x0e, 0x56, 0x5d, 0xc9, 0xac, 0x41, 0x4a, 0x9f, 0xf5, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xac, 0x09, 0x90, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0xa8, 0x36, 0xfc, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6b, 0x02, 0x64, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x01, 0x5b, 0xd5, 0xf0, 0x1b, 0xcf, 0x0f, 0x5a, 0x26, 0x88, 0x3f, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x1b, 0x2c, 0x2a, 0x21, 0x39, 0x64, 0x2b, 0x0e, 0x96, 0xbe, 0xc8, 0xac, 0xc1, 0x02, 0x8e, 0x9c, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0x90, 0x3e, 0x7d, 0x32, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x9a, 0x00, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xe9, 0xae, 0x43, 0xb6, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe9, 0x51, 0x3e, 0x8b, 0xc3, 0x6e, 0xc8, 0x63, 0x2d, 0x08, 0x16, 0x24, 0x03, 0xeb, 0x75, 0x07, 0xc3, 0xd0, 0xe7, 0xd0, 0x41, 0xe3, 0x10, 0xc3, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x87, 0x5f, 0x90, 0x0c, 0xc4, 0xea, 0x90, 0xad, 0x38, 0x38, 0x42, 0xd0, 0x1f, 0x87, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x04, 0xc8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x89, 0x25, 0x7e, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x35, 0x01, 0x32, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x96, 0x06, 0xd0, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x58, 0xb4, 0x4f, 0x75, 0xc8, 0x56, 0x1c, 0x87, 0x8e, 0x43, 0x07, 0xab, 0xae, 0x64, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x09, 0x90, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0x12, 0x4b, 0xfc, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6b, 0x02, 0x64, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x64, 0x8c, 0x1a, 0x7e, 0xe3, 0xf9, 0x41, 0x93, 0x3b, 0xf0, 0xc7, 0xa1, 0xe3, 0xd0, 0xc1, 0xaa, 0x2b, 0x99, 0x41, 0xb0, 0x41, 0x8b, 0x3f, 0xf0, 0x07, 0x4b, 0x5f, 0x64, 0x0e, 0x56, 0x5d, 0xc9, 0xac, 0x41, 0xa2, 0x1f, 0xf4, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xac, 0x09, 0x90, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0x16, 0x97, 0xfb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x8d, 0xbc, 0xc4, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0xf8, 0xfe, 0xef, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x6c, 0x30, 0xf0, 0x43, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xe1, 0x60, 0xff, 0xd0, 0xa8, 0xe5, 0x60, 0xe0, 0x87, 0x1c, 0x87, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0x70, 0x04, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x28, 0x5c, 0x87, 0x6c, 0xc5, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xc8, 0x3c, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0xad, 0xbe, 0xc3, 0x0a, 0xed, 0x41, 0x8a, 0xf2, 0xf3, 0x41, 0x7b, 0x3a, 0xf1, 0xc7, 0xa1, 0x83, 0x55, 0x57, 0x32, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x04, 0xc8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0xa2, 0x23, 0xa4, 0x83, 0x66, 0x89, 0xe2, 0x8f, 0x43, 0x07, 0xab, 0xae, 0x64, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x09, 0x90, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0x18, 0x65, 0xfc, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6b, 0x02, 0x64, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x36, 0x48, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x05, 0xf2, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xc3, 0xf5, 0xa0, 0xc9, 0x02, 0xf8, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0xb0, 0xea, 0x4a, 0x66, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x9a, 0x00, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8d, 0x51, 0xc6, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x26, 0x40, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x62, 0x83, 0x94, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5a, 0x20, 0x7f, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0x1a, 0xd7, 0x80, 0x3f, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x07, 0xab, 0xae, 0x64, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x09, 0x90, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0x18, 0x65, 0xfc, 0x41, 0xfb, 0x53, 0xf1, 0xc7, 0xa1, 0x83, 0x55, 0x57, 0x32, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x04, 0xc8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x8b, 0xcb, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x46, 0x5e, 0xe2, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0xda, 0x95, 0x8b, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x36, 0x18, 0xf8, 0x21, 0x87, 0xbc, 0xec, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x10, 0xbc, 0xe3, 0xf9, 0x71, 0xe8, 0x38, 0x74, 0xb0, 0xea, 0x4a, 0x66, 0x10, 0x6c, 0xd0, 0x38, 0x60, 0xfc, 0xc1, 0xd2, 0x17, 0x99, 0x35, 0x48, 0x72, 0x8e, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x4d, 0x80, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x2c, 0xd5, 0x42, 0x3a, 0x68, 0x1b, 0x36, 0xfe, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0x4d, 0xdf, 0x8e, 0xe7, 0x83, 0x60, 0x83, 0xd6, 0x57, 0xe3, 0x0f, 0x9a, 0x6e, 0x82, 0x3f, 0x58, 0x75, 0x25, 0x33, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x4d, 0x80, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x2c, 0x06, 0x78, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x0d, 0x16, 0xeb, 0x99, 0x1c, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x20, 0x19, 0xd0, 0xfc, 0x2e, 0xd7, 0x21, 0x5b, 0x31, 0x48, 0x06, 0x04, 0x2b, 0xd7, 0x21, 0x5b, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xec, 0x5d, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xf7, 0xb9, 0x0e, 0xd9, 0x8a, 0x83, 0xf6, 0x2e, 0xe2, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0xd6, 0x34, 0xe0, 0x8f, 0x43, 0x07, 0xab, 0xae, 0x64, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0x32, 0x8f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x1b, 0x2c, 0x95, 0x57, 0x3a, 0x28, 0x16, 0xc9, 0x8e, 0xc7, 0x07, 0xad, 0x4d, 0xc3, 0x1f, 0x87, 0x0e, 0x56, 0x5d, 0xc9, 0xac, 0x41, 0x12, 0x11, 0xc9, 0x20, 0xd8, 0x60, 0x4d, 0x80, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x86, 0xcc, 0xe3, 0x0f, 0x9a, 0x25, 0x8a, 0x3f, 0x0e, 0xad, 0x41, 0x8a, 0x33, 0xc9, 0x20, 0xd8, 0x60, 0x4d, 0x80, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x76, 0x31, 0xde, 0x87, 0xdf, 0x78, 0x7e, 0xd0, 0xe8, 0x7e, 0xfc, 0x71, 0x68, 0x0d, 0x86, 0x6b, 0xd5, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0x40, 0xfe, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xe3, 0x41, 0x98, 0x8e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x58, 0xba, 0xcb, 0x75, 0xc8, 0x56, 0x1c, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x09, 0x90, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0xe5, 0xd3, 0x4b, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0x55, 0x6f, 0xf8, 0x41, 0xb0, 0x41, 0x1b, 0x33, 0xf2, 0x07, 0x4b, 0x5f, 0x64, 0x8e, 0x43, 0x07, 0xab, 0xae, 0x64, 0xd6, 0x20, 0x1d, 0xca, 0x63, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xd6, 0x04, 0xc8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0x8a, 0xa6, 0xa3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x04, 0xc8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0xc2, 0x0b, 0xa3, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0xc9, 0xee, 0x6a, 0xc7, 0xf3, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x20, 0x79, 0x97, 0xeb, 0x90, 0xad, 0x38, 0x58, 0xfa, 0x22, 0xb3, 0x06, 0x29, 0x45, 0xcf, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0xd0, 0x98, 0x84, 0xfc, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x45, 0xe6, 0x31, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x83, 0x45, 0x1f, 0x4d, 0x1b, 0xac, 0x55, 0x3f, 0x1a, 0x04, 0x8b, 0xc3, 0x6e, 0x10, 0x7c, 0xcc, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x48, 0x8c, 0x96, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x88, 0xff, 0xf0, 0x1b, 0xcf, 0x0f, 0x56, 0x2c, 0xe8, 0x1c, 0x87, 0x8e, 0x6f, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xda, 0x31, 0x90, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x20, 0xf0, 0xa9, 0x0e, 0xd9, 0x8a, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0x32, 0xb0, 0xf4, 0x77, 0x3c, 0x3f, 0x68, 0x84, 0x04, 0xfe, 0x38, 0x74, 0x1c, 0x3a, 0x58, 0x75, 0x25, 0x33, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x4d, 0x80, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0x8c, 0x58, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0xc1, 0x1f, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0xe9, 0xff, 0xf8, 0x83, 0xf6, 0x2e, 0xe2, 0x8f, 0x43, 0x07, 0x8d, 0x90, 0xc0, 0x1f, 0x87, 0x0e, 0x56, 0x5d, 0xc9, 0xac, 0x41, 0xfa, 0xd3, 0xf3, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x26, 0xba, 0xe4, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0x32, 0x8f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x1b, 0xac, 0x4b, 0x51, 0x1a, 0x04, 0x0b, 0x92, 0x81, 0xae, 0x6f, 0x87, 0x15, 0xda, 0x43, 0xa3, 0x96, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xed, 0x18, 0xc8, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x9d, 0x4e, 0x7e, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0x9e, 0x27, 0x3f, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd9, 0x60, 0xad, 0xe2, 0xc8, 0x21, 0x5b, 0x71, 0xb0, 0xf4, 0x45, 0xe6, 0x38, 0x74, 0x1c, 0x3a, 0x58, 0x75, 0x25, 0x33, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x4d, 0x80, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x86, 0xcc, 0xe3, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0x06, 0xcd, 0xee, 0xc4, 0x1f, 0x2c, 0xd6, 0xec, 0x3a, 0x0e, 0x1d, 0xac, 0xba, 0x92, 0x59, 0x83, 0xb4, 0x97, 0xea, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x9a, 0xe8, 0x92, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xc8, 0x3c, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2d, 0x2a, 0xc6, 0x1f, 0xa4, 0x0b, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0x41, 0xb3, 0x3b, 0xf1, 0x07, 0xe3, 0x0e, 0xea, 0x60, 0x51, 0x8a, 0xcc, 0x71, 0xe8, 0x60, 0xd5, 0x95, 0xcc, 0x1a, 0x2c, 0xf1, 0x8f, 0x19, 0x04, 0x1b, 0x2c, 0x32, 0x8f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x41, 0x2d, 0xb6, 0x38, 0xec, 0x86, 0x5d, 0x83, 0x0d, 0x16, 0x6a, 0x21, 0x6d, 0xb0, 0xe4, 0x08, 0xe9, 0x20, 0x28, 0xbd, 0x8f, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0x32, 0xa0, 0xf0, 0xef, 0x3a, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x68, 0xa4, 0x3d, 0xfe, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x34, 0xbb, 0x13, 0x7f, 0xb0, 0x52, 0xb2, 0xeb, 0xa0, 0xe9, 0x26, 0xf8, 0xe3, 0xd0, 0x1a, 0x24, 0xa4, 0xdc, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x6b, 0x02, 0x64, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0xd1, 0x47, 0xd3, 0x41, 0x7b, 0x17, 0xf1, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xc0, 0xe5, 0x3a, 0x64, 0x2b, 0x0e, 0x96, 0xbe, 0xc8, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x13, 0x20, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x8b, 0x1f, 0x9a, 0x0e, 0x9a, 0x44, 0x91, 0x3f, 0x0e, 0x1d, 0xac, 0xba, 0x92, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x58, 0xbb, 0xcb, 0x75, 0xc8, 0x56, 0x1c, 0x2c, 0x7d, 0x91, 0x59, 0x83, 0xc4, 0x10, 0x99, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x8d, 0xbc, 0xc4, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xd5, 0x1a, 0xd5, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0xec, 0xd7, 0x1d, 0x0c, 0x43, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x52, 0x4e, 0x72, 0x50, 0x30, 0x3a, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x06, 0x8b, 0x5a, 0x97, 0x36, 0xa4, 0x0e, 0x36, 0x58, 0x3e, 0xbd, 0x74, 0xd8, 0x2b, 0x3c, 0x1e, 0x1f, 0x87, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x3f, 0x68, 0xf0, 0x1b, 0xfe, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x4d, 0x80, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x2c, 0x86, 0x59, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x0d, 0xfe, 0xf8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x4d, 0xff, 0xc7, 0x0f, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xe6, 0x07, 0xe2, 0x07, 0xc1, 0x06, 0xed, 0x5d, 0xc4, 0x0f, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x19, 0x48, 0xbf, 0x1d, 0xcf, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0x55, 0x57, 0x32, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0x81, 0xce, 0x75, 0xc8, 0x56, 0x1c, 0x2c, 0x7d, 0x91, 0x59, 0x83, 0xe4, 0x9f, 0xe7, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0x81, 0xfc, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0xc3, 0x07, 0xab, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x42, 0x9d, 0xeb, 0x90, 0xad, 0x38, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x13, 0x20, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x51, 0x6d, 0xf8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x04, 0xc8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0x12, 0x33, 0xab, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x1b, 0xfc, 0xf1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x9a, 0xfe, 0x8f, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x1d, 0x03, 0xf9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x0d, 0x27, 0xc8, 0x1f, 0xb4, 0xf4, 0x31, 0x7f, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x0d, 0x5a, 0x32, 0x9a, 0x3f, 0x58, 0xfa, 0x22, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0xac, 0xba, 0x92, 0x59, 0x83, 0x25, 0xbb, 0x38, 0x07, 0xcb, 0x75, 0x61, 0xd6, 0x60, 0x65, 0x38, 0xce, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0x40, 0xfe, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xe3, 0x41, 0x91, 0x8a, 0x79, 0xd0, 0xa0, 0x12, 0xfc, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x06, 0x9d, 0xe1, 0x0f, 0x56, 0x5d, 0xc9, 0xac, 0xc1, 0x92, 0x57, 0x9c, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x91, 0x79, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0xb4, 0x1c, 0x2d, 0x2e, 0x1e, 0x1c, 0xc3, 0x0d, 0x0e, 0xa9, 0x83, 0xe3, 0xf1, 0x41, 0x7b, 0x17, 0xf1, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6b, 0x02, 0x64, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0xb9, 0xdb, 0xd2, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0xf9, 0x81, 0xf8, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xa7, 0xef, 0x72, 0x1d, 0xb2, 0x15, 0x07, 0x4b, 0x5f, 0x64, 0x06, 0xc1, 0x06, 0xed, 0x5d, 0xc4, 0x1f, 0x34, 0xdd, 0x04, 0x7f, 0xd0, 0x08, 0x09, 0xfc, 0x71, 0xe8, 0x60, 0xd5, 0x95, 0xcc, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x35, 0x01, 0x32, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0xbe, 0x6f, 0x69, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0x1c, 0x39, 0x3f, 0x08, 0x36, 0x68, 0xe9, 0x63, 0xfe, 0xa0, 0xe9, 0x26, 0xf8, 0xe3, 0xd0, 0xc1, 0xaa, 0x2b, 0x99, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x4d, 0x80, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x26, 0x46, 0xe7, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x13, 0x20, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x99, 0x18, 0xf9, 0xe1, 0x37, 0x9e, 0x1f, 0x34, 0x2a, 0x39, 0x7f, 0x1c, 0x3a, 0x0e, 0x1d, 0x34, 0x00, 0x24, 0x7f, 0xb0, 0xea, 0x4a, 0x66, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x22, 0xf3, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0xb4, 0xb6, 0x5a, 0xdc, 0x60, 0xb9, 0xdb, 0xd2, 0x1a, 0x2c, 0xd5, 0x42, 0x3a, 0xb4, 0x90, 0xdc, 0x60, 0xb9, 0xdb, 0xd2, 0xe2, 0xe1, 0x43, 0x98, 0xc3, 0xb8, 0x1c, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0x39, 0x72, 0x7e, 0x10, 0x6c, 0xd0, 0x80, 0x94, 0xfc, 0x41, 0xd3, 0x4d, 0xf0, 0x07, 0xcd, 0x56, 0xc9, 0x1f, 0x87, 0x0e, 0x56, 0x5d, 0xc9, 0x1c, 0x34, 0x50, 0x39, 0xbf, 0x06, 0x69, 0x51, 0x34, 0x83, 0x60, 0x83, 0x45, 0xe6, 0x31, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0xf1, 0xa0, 0x45, 0x33, 0xf9, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xed, 0x18, 0xc8, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x9d, 0x4e, 0x7e, 0xf8, 0x8d, 0xe7, 0x07, 0x0d, 0xeb, 0xc9, 0x1f, 0x87, 0x8e, 0x43, 0x6b, 0xb0, 0x62, 0x3c, 0xe6, 0x20, 0x7d, 0xfa, 0x64, 0x0d, 0xd2, 0xaa, 0xa3, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x13, 0x20, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x21, 0xf3, 0xf8, 0x83, 0x76, 0x3c, 0xe3, 0x8f, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0x12, 0x7b, 0xfc, 0x20, 0xd8, 0xa0, 0xa5, 0xcc, 0xf8, 0x83, 0xa6, 0x9b, 0xe0, 0x0f, 0x56, 0x5d, 0xc9, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x13, 0x20, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x2b, 0xd0, 0x9c, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0xcb, 0xfa, 0xf1, 0x07, 0x6d, 0x14, 0xc0, 0x1f, 0x87, 0x0e, 0x56, 0x5d, 0xc9, 0x1c, 0x34, 0x11, 0x21, 0xbf, 0x06, 0xc9, 0x43, 0xcc, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x6b, 0x24, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x78, 0x50, 0x50, 0x64, 0x1e, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x09, 0x90, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0x98, 0x04, 0xfd, 0x41, 0x4b, 0xde, 0xf2, 0xc7, 0xa1, 0x83, 0x55, 0x57, 0x32, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x16, 0x99, 0xc7, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x17, 0x58, 0x7e, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0xd0, 0xec, 0x4e, 0xfc, 0xc1, 0x89, 0xd9, 0xf7, 0x38, 0x74, 0xb0, 0xea, 0x4a, 0x66, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x9a, 0x00, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0xc7, 0xad, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x1b, 0xfc, 0xf1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x9a, 0xfe, 0x8f, 0x1f, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x1f, 0x34, 0x5c, 0x20, 0x7f, 0xd0, 0x04, 0xcc, 0xfc, 0x20, 0xd8, 0xa0, 0xb5, 0x69, 0xf8, 0x83, 0x36, 0x63, 0xe6, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0x55, 0x57, 0x32, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x04, 0xc8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x8b, 0xcb, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x36, 0xf8, 0xe3, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x41, 0xb2, 0x41, 0x33, 0x01, 0xef, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0x90, 0xb8, 0xcb, 0x75, 0xc8, 0x56, 0x1c, 0xb4, 0x4e, 0x20, 0x7f, 0x1c, 0x3a, 0x0e, 0x1d, 0xac, 0xba, 0x92, 0x39, 0x58, 0x40, 0x26, 0x33, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0x72, 0x5d, 0x98, 0x83, 0x55, 0x57, 0x32, 0x6b, 0x90, 0xa2, 0xc9, 0x7c, 0x90, 0xd8, 0x72, 0xb2, 0x06, 0xe9, 0xa7, 0x16, 0x83, 0x60, 0x83, 0x36, 0xf8, 0xe3, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x41, 0x32, 0xf0, 0x3b, 0xd7, 0x21, 0x5b, 0x31, 0x48, 0x36, 0x58, 0xec, 0x45, 0x72, 0xc8, 0x56, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x26, 0x40, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0xd6, 0xa6, 0x21, 0x1d, 0xb4, 0x4e, 0x20, 0x7f, 0x1c, 0x3a, 0x0e, 0xad, 0x41, 0xa2, 0xd2, 0xf3, 0x20, 0xd8, 0xa0, 0x0d, 0xfe, 0xf8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0xa0, 0xb5, 0x2d, 0xfa, 0x83, 0x06, 0xb3, 0xe8, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x13, 0x20, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xcb, 0x5b, 0x91, 0x0e, 0x5a, 0x27, 0x90, 0x3f, 0x0e, 0x1d, 0x87, 0xd6, 0x60, 0x61, 0x3d, 0xce, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0xf9, 0xb7, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xa0, 0x39, 0xd7, 0x21, 0x5b, 0x71, 0xb0, 0xf4, 0x45, 0xe6, 0x10, 0xc3, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0xb4, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x34, 0xdc, 0xf9, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0xad, 0xe6, 0x31, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0xf0, 0x60, 0xc5, 0x13, 0xd1, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xa2, 0x51, 0x97, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0x40, 0xe7, 0x3a, 0xac, 0xd0, 0x1e, 0x87, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0xee, 0x7c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x1b, 0xa4, 0x00, 0xb8, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xf1, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x74, 0xd0, 0x54, 0x57, 0xcb, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x34, 0xdc, 0xf9, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x59, 0x42, 0xfa, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0x40, 0xef, 0x3a, 0xac, 0xd0, 0x1e, 0x34, 0x0c, 0x49, 0x7f, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x70, 0xe7, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0xb4, 0x1c, 0x2d, 0x1e, 0x0c, 0x54, 0xb5, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xa3, 0xbb, 0xda, 0xf1, 0xf8, 0x38, 0x74, 0xd0, 0x30, 0xa2, 0xfb, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0x8d, 0xa2, 0xd2, 0x1f, 0x34, 0x8c, 0xe8, 0x7e, 0x1c, 0x3a, 0x58, 0xc5, 0x4d, 0xb6, 0x82, 0x60, 0x83, 0xa5, 0xca, 0x31, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x5a, 0x69, 0x85, 0x1f, 0x7e, 0xe3, 0xf9, 0xe2, 0x20, 0xdb, 0x10, 0x97, 0x41, 0xb0, 0xc1, 0x12, 0xed, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xd7, 0x20, 0xa5, 0xcf, 0x7a, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x1f, 0x34, 0x29, 0x11, 0x7f, 0xd0, 0x94, 0x46, 0xfc, 0x1a, 0x24, 0x90, 0x41, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x9a, 0x00, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0x40, 0x60, 0x75, 0xd0, 0xde, 0x45, 0xfc, 0x71, 0xe8, 0xa0, 0xa5, 0x70, 0xf8, 0x35, 0x58, 0xc0, 0x91, 0x33, 0x08, 0x36, 0x58, 0x13, 0x20, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xab, 0x4c, 0xa9, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xc7, 0x40, 0x7e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x9b, 0x01, 0xf3, 0x07, 0xad, 0x4d, 0xc3, 0x1f, 0x87, 0x8e, 0x43, 0x6b, 0x90, 0xe8, 0x07, 0x3d, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0xe6, 0x4f, 0xe2, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x09, 0x90, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0x12, 0x4b, 0xfc, 0x41, 0x3b, 0x9e, 0xf1, 0xc7, 0xa1, 0x83, 0x55, 0x57, 0x32, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x04, 0xc8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x89, 0x25, 0xfe, 0xa0, 0x6d, 0xd8, 0xf8, 0xe3, 0xd0, 0xc1, 0xaa, 0x2b, 0x99, 0x83, 0x26, 0x9d, 0xe2, 0x0f, 0x9a, 0xe3, 0x8e, 0x5f, 0x83, 0x14, 0x67, 0x92, 0x41, 0xb0, 0xc1, 0x22, 0xf3, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x5a, 0xa3, 0x3a, 0x18, 0xbb, 0x56, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x09, 0x90, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0x45, 0xee, 0x54, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0xc1, 0x1f, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0xe9, 0xff, 0xf8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x6b, 0x24, 0x73, 0x90, 0xa2, 0xfc, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x3e, 0x68, 0x97, 0x6b, 0x7e, 0x10, 0x6c, 0xd0, 0x70, 0x82, 0xfc, 0xc1, 0xd2, 0x17, 0x99, 0x83, 0x55, 0x57, 0x32, 0x07, 0x4d, 0x66, 0xce, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x35, 0x58, 0xb2, 0x8b, 0x33, 0x08, 0x36, 0x58, 0x13, 0x20, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x8b, 0xf6, 0xaa, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x83, 0x3f, 0x7e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x9b, 0x45, 0xf4, 0x07, 0x8d, 0x6f, 0xcd, 0x1f, 0x87, 0x8e, 0x43, 0x6b, 0x30, 0x5c, 0xab, 0x0e, 0x1a, 0x71, 0x91, 0x5f, 0x83, 0x14, 0x4d, 0xe6, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x13, 0x20, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x0b, 0x74, 0xa9, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x0f, 0x56, 0xe5, 0xc7, 0x0c, 0x82, 0x0d, 0x1a, 0xc7, 0x8a, 0x3f, 0x58, 0x75, 0x25, 0x73, 0x1c, 0x3a, 0x68, 0x80, 0x5e, 0x7e, 0x83, 0x46, 0x88, 0xe4, 0xd7, 0x20, 0xf9, 0xe7, 0x79, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x26, 0x81, 0xe6, 0x07, 0xc1, 0x06, 0x0d, 0x3c, 0xcd, 0x1f, 0xac, 0xba, 0x92, 0x59, 0x83, 0xe4, 0x21, 0xe6, 0x41, 0xb0, 0x41, 0x0b, 0xe4, 0xef, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x5a, 0x69, 0x85, 0x3f, 0x58, 0x4f, 0x26, 0x73, 0x1c, 0x5a, 0x83, 0x85, 0xeb, 0x38, 0x83, 0x60, 0x83, 0x16, 0xc8, 0xdf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xdc, 0xf0, 0x45, 0xcd, 0xc1, 0x2a, 0x07, 0xa3, 0x83, 0xc6, 0xe4, 0xe1, 0x8f, 0x43, 0x6b, 0xb0, 0x32, 0x1c, 0x67, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x16, 0xd8, 0xe6, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x3f, 0x68, 0xd5, 0x9b, 0xfe, 0x60, 0xd5, 0x95, 0xcc, 0x1a, 0x24, 0x86, 0xc8, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x23, 0x2f, 0xf1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0xe7, 0x20, 0x04, 0x1f, 0x16, 0x07, 0xc1, 0x06, 0xcd, 0x44, 0xcc, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x91, 0x72, 0x92, 0x41, 0x32, 0x38, 0x75, 0xe8, 0xab, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6f, 0x3c, 0xde, 0x60, 0x75, 0x91, 0xd5, 0xc2, 0x6f, 0x3c, 0x1e, 0x76, 0x43, 0x22, 0x60, 0x43, 0xea, 0x60, 0x10, 0x6c, 0xd0, 0xd2, 0x00, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0xc1, 0x58, 0xec, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xa5, 0x01, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0x83, 0xa5, 0xa9, 0x27, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x38, 0x74, 0x58, 0xfb, 0x3d, 0x1e, 0x1f, 0x87, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x35, 0x01, 0x32, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0x41, 0x4b, 0x1f, 0xf3, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0xd5, 0x1b, 0x7e, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x9a, 0x00, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0xf8, 0xa0, 0x8d, 0x9d, 0xf9, 0x41, 0xb0, 0xc1, 0xd2, 0xfb, 0x98, 0x41, 0xb0, 0x41, 0x90, 0xc5, 0x2f, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0xad, 0x38, 0x28, 0x9e, 0x0f, 0x0e, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x8f, 0x43, 0x07, 0x4d, 0x37, 0xc1, 0x1f, 0xac, 0xba, 0x92, 0x39, 0x0e, 0x1d, 0xb4, 0x9c, 0x33, 0xbf, 0x06, 0x2b, 0xc6, 0x63, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x41, 0xab, 0xde, 0xf4, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x04, 0xc8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0xea, 0x22, 0xab, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x5a, 0xf5, 0x86, 0x3f, 0x68, 0x39, 0x67, 0x7e, 0x10, 0x6c, 0xb0, 0xf4, 0x3e, 0xe6, 0xa0, 0xe9, 0x26, 0xf8, 0xe3, 0xd0, 0xc1, 0xaa, 0x2b, 0x99, 0x43, 0x0c, 0x8f, 0x43, 0xc7, 0xe3, 0xe3, 0xd0, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x1a, 0xee, 0x7c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x7a, 0x94, 0xcf, 0xe2, 0x06, 0x4b, 0xb5, 0x90, 0x16, 0x76, 0x61, 0x37, 0x74, 0x1c, 0x59, 0xd8, 0x0d, 0x79, 0xac, 0x85, 0xdd, 0x60, 0xf4, 0x62, 0x2d, 0xdc, 0xc1, 0x42, 0x5e, 0xfd, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x06, 0x69, 0xa1, 0xd9, 0x07, 0xc5, 0x6b, 0xe4, 0x20, 0xd8, 0xa0, 0x9d, 0x5b, 0xf3, 0x83, 0x56, 0xee, 0x54, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x83, 0x83, 0xfe, 0xfa, 0xc1, 0x11, 0x82, 0xfe, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x65, 0x2c, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x0d, 0x99, 0xc7, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x32, 0x96, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa5, 0x01, 0x34, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x16, 0xed, 0x53, 0x1d, 0x56, 0x68, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0x55, 0xdc, 0x64, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5a, 0xc6, 0x72, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0x90, 0x79, 0xfc, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2d, 0x63, 0xb9, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0xc8, 0x18, 0x35, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xe2, 0x64, 0xb2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xa0, 0x3d, 0xd7, 0x61, 0x85, 0xf6, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0xac, 0xe2, 0x26, 0x1b, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x32, 0x96, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x76, 0x31, 0xde, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x78, 0xf0, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x17, 0x24, 0x03, 0x9a, 0xdf, 0xe5, 0x3a, 0xac, 0xd0, 0x0e, 0x92, 0x01, 0xc1, 0xca, 0x75, 0x58, 0xa1, 0x3d, 0x68, 0x41, 0xf2, 0xfd, 0x38, 0x74, 0x1c, 0x3a, 0x58, 0xc5, 0x4d, 0x36, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xe1, 0xc1, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0xa0, 0x0d, 0xda, 0xf7, 0x83, 0x26, 0x73, 0xdf, 0x0f, 0x96, 0x68, 0xa2, 0x1d, 0x87, 0x0e, 0x56, 0x71, 0x93, 0x2d, 0x08, 0x36, 0x68, 0xb8, 0xf3, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xd8, 0x60, 0x19, 0x97, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x0a, 0x80, 0xfb, 0x21, 0xd1, 0x7a, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x9a, 0x70, 0xa5, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x6c, 0xb0, 0x06, 0x81, 0xe4, 0xb0, 0x42, 0x7b, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x84, 0x2b, 0xfd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x83, 0xb5, 0xc2, 0x23, 0x87, 0x15, 0xda, 0xe3, 0xd0, 0x41, 0xc3, 0x88, 0xee, 0xc7, 0xa1, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0x56, 0xf3, 0x98, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0xc1, 0x52, 0x2d, 0xa4, 0x83, 0x45, 0xd1, 0x5c, 0xc7, 0xe3, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x2c, 0x2e, 0x08, 0x16, 0x24, 0x03, 0xc3, 0x75, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0x40, 0x06, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x0b, 0x92, 0x01, 0xc1, 0x2e, 0x77, 0xc8, 0x56, 0x1c, 0x94, 0x0c, 0x4d, 0xc7, 0xa1, 0x05, 0xc1, 0xe2, 0x41, 0xb0, 0x2c, 0x2d, 0x0e, 0x82, 0x85, 0x5d, 0xb8, 0xc5, 0x83, 0x56, 0x6c, 0x39, 0x0f, 0xa9, 0x83, 0x85, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0xa6, 0xaa, 0xec, 0x37, 0x68, 0xaa, 0xca, 0xfe, 0x70, 0x8a, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0xcd, 0xfb, 0x72, 0x1e, 0x52, 0x07, 0x0b, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0x6d, 0x71, 0xd9, 0x6f, 0xd0, 0x16, 0x97, 0xfd, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x16, 0x0f, 0xda, 0x33, 0xe6, 0x3c, 0xa4, 0x0e, 0x16, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0x1a, 0x1b, 0xb3, 0xdf, 0xa0, 0xb1, 0x31, 0xfb, 0xc3, 0x29, 0x36, 0xec, 0xc2, 0x2d, 0x1e, 0x34, 0xec, 0xcc, 0x79, 0x48, 0x1d, 0x2c, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0xb4, 0xa6, 0x66, 0xbf, 0x41, 0x6b, 0x6a, 0xf6, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0x5b, 0x3c, 0x68, 0xa7, 0x9a, 0xf3, 0x90, 0x3a, 0x58, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x68, 0x2e, 0xce, 0x7e, 0x83, 0xe6, 0xe2, 0xec, 0x0f, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x78, 0xd0, 0x40, 0x37, 0xe7, 0x21, 0x75, 0xb0, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0xd0, 0x1e, 0x9e, 0xfd, 0x06, 0xed, 0xe1, 0xd9, 0x1f, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0x43, 0xea, 0xe0, 0xa0, 0x65, 0x29, 0xfb, 0x0d, 0x5a, 0x96, 0xb2, 0x3f, 0x9c, 0x62, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x0d, 0xda, 0x73, 0xb2, 0x5f, 0x41, 0xb0, 0xb8, 0x41, 0x32, 0x52, 0xdc, 0x41, 0x13, 0x6b, 0x81, 0x8b, 0x83, 0x60, 0x61, 0x17, 0x6e, 0xf1, 0x60, 0x60, 0x7a, 0x1c, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x34, 0x9c, 0x68, 0xbf, 0x41, 0xc3, 0x89, 0xf6, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0xdb, 0x60, 0xb9, 0xa5, 0xd5, 0x61, 0x5c, 0x16, 0x76, 0xe1, 0x36, 0x8c, 0xcb, 0xc1, 0x72, 0x4b, 0xab, 0x83, 0xf5, 0x9f, 0x56, 0xc3, 0x2e, 0xdc, 0xe2, 0xc1, 0x9a, 0x6a, 0xd6, 0xc3, 0xb8, 0x2c, 0xec, 0xc2, 0x6d, 0x18, 0x97, 0x83, 0x96, 0x2c, 0xed, 0x37, 0x68, 0xc9, 0xd2, 0xfe, 0x70, 0x8a, 0x0d, 0xbb, 0x70, 0x1b, 0xc6, 0x65, 0x3c, 0x68, 0xed, 0xa2, 0x73, 0x83, 0x66, 0x3b, 0xed, 0x0f, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x78, 0xd0, 0xfe, 0x47, 0xe7, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0x7b, 0xa1, 0xf6, 0x1b, 0xb4, 0x17, 0x6a, 0x7f, 0x38, 0xc5, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0xe4, 0x21, 0xe1, 0xc3, 0xb8, 0x2c, 0xec, 0xc2, 0x6d, 0x18, 0x97, 0x83, 0xa6, 0x50, 0xed, 0x37, 0x68, 0x0a, 0xd5, 0xfe, 0x70, 0x8a, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0xad, 0xaf, 0x74, 0x1e, 0xc6, 0x65, 0x61, 0x17, 0x6e, 0xc3, 0xb8, 0x1c, 0xb4, 0xf1, 0x6a, 0xbf, 0x41, 0x1b, 0xaf, 0xf6, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0xdb, 0x30, 0x2e, 0xe3, 0x41, 0xb3, 0x34, 0x9d, 0x1b, 0xb4, 0x68, 0x6b, 0x7f, 0x38, 0xc5, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x84, 0x0a, 0xb9, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xa6, 0x74, 0xed, 0x37, 0x68, 0x4a, 0xd7, 0xfe, 0x70, 0x8a, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x38, 0x6a, 0xe9, 0x1e, 0x3a, 0x68, 0x2c, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x78, 0x90, 0x8c, 0x14, 0xb7, 0x41, 0xfb, 0xc4, 0xf6, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0xdb, 0x30, 0x2e, 0xe3, 0x41, 0x13, 0x6b, 0x81, 0x1b, 0xb4, 0x94, 0x6c, 0x7f, 0x38, 0xc5, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x71, 0x83, 0x66, 0x69, 0x3a, 0x0f, 0xc6, 0x18, 0xda, 0xe2, 0x20, 0x58, 0xd8, 0x85, 0x5b, 0x3c, 0x68, 0x57, 0xac, 0xf3, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xa0, 0xd9, 0x68, 0xfb, 0x0d, 0x9a, 0x8d, 0xb6, 0x3f, 0x9c, 0x62, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x06, 0xab, 0xf8, 0x77, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x83, 0x77, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xb0, 0x0b, 0xb7, 0x78, 0xd0, 0x32, 0x5c, 0xe7, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0x7b, 0xe0, 0xf6, 0x1b, 0xb4, 0x07, 0x6e, 0x7f, 0x38, 0xc5, 0x0e, 0x5a, 0xbe, 0xb6, 0x1f, 0x76, 0xe1, 0x16, 0x0f, 0x1a, 0xdc, 0xeb, 0x3c, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x68, 0x0c, 0xdd, 0x7e, 0x83, 0xc6, 0xd0, 0xed, 0x0f, 0xa7, 0xd8, 0x41, 0xcb, 0xd7, 0xf6, 0xc3, 0x2e, 0xdc, 0xe2, 0x41, 0xc3, 0x85, 0x9d, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x2d, 0xc1, 0xdb, 0x6f, 0xd0, 0x12, 0xbc, 0xfd, 0xe1, 0x14, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0x04, 0x7e, 0xdf, 0x41, 0xc0, 0xfb, 0x1f, 0x3a, 0x68, 0x0c, 0xbb, 0x70, 0x1b, 0xb4, 0x94, 0x6c, 0x7f, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xd0, 0x52, 0xb2, 0xfd, 0x41, 0x8b, 0xca, 0xf6, 0x07, 0x8d, 0xd9, 0xdb, 0x0f, 0xbb, 0x70, 0x8b, 0x07, 0x0b, 0xd7, 0xb0, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xda, 0x14, 0xb8, 0xdf, 0xa0, 0x4d, 0x81, 0xfb, 0xc3, 0x29, 0xb6, 0x20, 0xd8, 0xa0, 0x21, 0x6c, 0xfb, 0x43, 0x53, 0xa0, 0x41, 0xb0, 0x41, 0xdb, 0xf6, 0xf6, 0x87, 0x16, 0x60, 0xc3, 0x2e, 0xdc, 0xe2, 0x41, 0xd3, 0x9e, 0x9d, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x2d, 0x38, 0xdc, 0x6f, 0xd0, 0x82, 0xc3, 0xfd, 0xe1, 0x14, 0x5b, 0x10, 0x6c, 0xd0, 0xb6, 0xbd, 0xfd, 0xa1, 0x29, 0xd0, 0x41, 0x03, 0x0b, 0xf7, 0x0b, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xd0, 0xa2, 0xad, 0xfd, 0x41, 0xcb, 0xb7, 0xf6, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x86, 0xdf, 0xa0, 0x6d, 0x27, 0xfb, 0x83, 0xd3, 0x0a, 0xee, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xbe, 0x3b, 0x07, 0x01, 0xef, 0x7f, 0xb0, 0x30, 0xf9, 0xe7, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0x58, 0x9c, 0x83, 0x56, 0x0c, 0xed, 0x17, 0x07, 0xc1, 0x0a, 0x82, 0x0d, 0xda, 0x19, 0xb9, 0x3f, 0x58, 0x05, 0x90, 0x35, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0xe0, 0x14, 0x86, 0x7b, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0x34, 0x17, 0x67, 0xbf, 0x38, 0x08, 0x16, 0x76, 0xe1, 0x16, 0x0f, 0x9a, 0xdd, 0xee, 0x3c, 0xa4, 0x0e, 0x16, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0x1a, 0xa3, 0xb9, 0xdf, 0xa0, 0x31, 0x9a, 0xfb, 0xc3, 0x29, 0x36, 0xec, 0xc2, 0x2d, 0x1e, 0xb4, 0x3b, 0xde, 0x79, 0x48, 0x1d, 0x2c, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0xb4, 0xb6, 0x73, 0xbf, 0x41, 0x6b, 0x3b, 0xf7, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0xdb, 0xa0, 0x65, 0x29, 0xfb, 0x43, 0xea, 0x60, 0x83, 0x86, 0xfd, 0xec, 0x87, 0xdd, 0xa0, 0x0d, 0x3c, 0xfb, 0x0d, 0xda, 0xd3, 0xb3, 0x3f, 0x68, 0x6e, 0xce, 0xfe, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x16, 0x57, 0x5c, 0x10, 0x2c, 0x48, 0x36, 0x58, 0x6c, 0x2b, 0x72, 0x10, 0xf0, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x2c, 0x7d, 0xef, 0x3b, 0x18, 0x86, 0x3e, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x01, 0x81, 0xde, 0x75, 0x10, 0xf0, 0xfe, 0x07, 0x2b, 0x96, 0xa2, 0x8e, 0x43, 0x2b, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0xc5, 0xd3, 0x24, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x0d, 0x5a, 0xb6, 0x9c, 0x3f, 0x08, 0x78, 0xff, 0x41, 0xb0, 0x41, 0x90, 0xc5, 0x2f, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0xad, 0x18, 0x24, 0x03, 0xd5, 0xed, 0x20, 0xe0, 0xfd, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x0f, 0x5a, 0xe0, 0xba, 0x3f, 0x68, 0x81, 0xeb, 0x7e, 0x05, 0xc1, 0x06, 0xcb, 0x4d, 0x49, 0x16, 0x07, 0xc1, 0x06, 0x05, 0xb5, 0xd8, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0xd8, 0x2b, 0x3c, 0x24, 0x5a, 0x87, 0xdd, 0x20, 0xb4, 0xdc, 0x37, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0xe2, 0xb0, 0x0b, 0xb7, 0xc1, 0x59, 0xfd, 0xfc, 0xb0, 0xf6, 0xbb, 0x21, 0x86, 0xc3, 0x6e, 0x30, 0x08, 0x38, 0x36, 0xc4, 0x70, 0x43, 0x0b, 0xa0, 0x83, 0xf5, 0x4a, 0x62, 0xc7, 0xb7, 0x0d, 0xd1, 0xdc, 0x10, 0xc3, 0x8d, 0x43, 0x07, 0x23, 0xb3, 0xf7, 0x78, 0x7c, 0x3c, 0x5e, 0x10, 0x6c, 0xb0, 0x62, 0x34, 0x67, 0x71, 0x10, 0x6c, 0x50, 0x50, 0x8b, 0x2d, 0x0e, 0x82, 0x05, 0xc1, 0x86, 0xf8, 0x1f, 0x12, 0xad, 0xc3, 0x6e, 0x10, 0x5a, 0xee, 0x1b, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xfa, 0x77, 0x1d, 0x9c, 0x84, 0x8e, 0x0f, 0x5a, 0xcf, 0x0f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x43, 0xd6, 0xee, 0x20, 0x70, 0xe3, 0x8f, 0x43, 0xc3, 0x6e, 0x10, 0x5a, 0xee, 0x1b, 0x94, 0xb1, 0x56, 0x1b, 0xa2, 0xb9, 0x21, 0x86, 0x1b, 0x04, 0x6e, 0xfc, 0xc1, 0xc8, 0xec, 0x3d, 0x1e, 0x1f, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x8b, 0xc3, 0x6e, 0x10, 0x7c, 0xcc, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x58, 0xd3, 0x0e, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x2e, 0xec, 0x06, 0x8b, 0xb1, 0xbc, 0x16, 0x76, 0x61, 0x17, 0x7a, 0x50, 0x1c, 0x6a, 0x2c, 0xec, 0xc2, 0x6d, 0x88, 0xe1, 0x84, 0xc3, 0x0b, 0xbb, 0xd0, 0x83, 0x66, 0x36, 0x02, 0x16, 0x76, 0x61, 0x17, 0x3a, 0x41, 0x88, 0x17, 0x6e, 0x43, 0x0c, 0x27, 0x18, 0xe2, 0xc3, 0xd1, 0xbe, 0x70, 0x1b, 0x62, 0x78, 0xd0, 0x2e, 0x1e, 0xc9, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x2f, 0xdc, 0x86, 0x18, 0x1e, 0x8c, 0x0b, 0xb3, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x17, 0x04, 0x0b, 0x92, 0x01, 0x53, 0xfd, 0xbd, 0xef, 0xe0, 0x24, 0x74, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0x82, 0x2a, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0xe8, 0x9a, 0xb9, 0x20, 0x58, 0x90, 0x0c, 0xac, 0xd7, 0x1d, 0x9c, 0xbd, 0x8c, 0x0f, 0x8d, 0x5a, 0x0e, 0x31, 0x3c, 0x1e, 0x1f, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x16, 0x63, 0x79, 0x6d, 0xd0, 0x78, 0xe7, 0xfd, 0xe1, 0x68, 0x5f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe2, 0x83, 0x71, 0x61, 0x76, 0x3c, 0x1e, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xec, 0x06, 0x8b, 0xb1, 0xbc, 0x16, 0x76, 0x83, 0xc6, 0x3b, 0xef, 0x0f, 0xeb, 0x9b, 0x87, 0xa3, 0xfd, 0x10, 0xc3, 0x83, 0x76, 0xdb, 0xe4, 0x8f, 0x43, 0xc7, 0xb7, 0x41, 0xb0, 0x41, 0x3b, 0x1a, 0x2e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x83, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x61, 0x17, 0x76, 0x41, 0xb0, 0x20, 0x19, 0xd4, 0x1c, 0x9c, 0xce, 0x90, 0x0f, 0xd2, 0x60, 0xa9, 0x17, 0x76, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xca, 0xc1, 0xe9, 0x0c, 0xf9, 0x20, 0xd5, 0x98, 0xfa, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2e, 0x08, 0x36, 0x68, 0x4f, 0xfa, 0xfe, 0x20, 0xc5, 0x9c, 0x7a, 0x61, 0x17, 0x04, 0x1b, 0xb4, 0x63, 0x7d, 0x7f, 0x90, 0xc6, 0x4f, 0x7d, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0x43, 0x3a, 0x77, 0x43, 0xea, 0x60, 0xd8, 0x85, 0x5d, 0x10, 0x6c, 0xd0, 0x9e, 0xf4, 0xfd, 0x41, 0xa2, 0xb2, 0xf3, 0xc2, 0x2e, 0x08, 0x36, 0x68, 0xc7, 0xfa, 0xfe, 0x20, 0x4d, 0xdc, 0xf9, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x0b, 0x82, 0x0d, 0x1a, 0x4b, 0x84, 0x3a, 0x48, 0xf1, 0x77, 0x3e, 0x48, 0x7f, 0x7a, 0x3e, 0x1e, 0x1f, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x56, 0x97, 0xee, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xd6, 0xf7, 0x36, 0xc4, 0x70, 0xc5, 0x83, 0x83, 0x47, 0xc6, 0x21, 0x75, 0x70, 0x88, 0xe1, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0xf8, 0xd0, 0xc5, 0x64, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xf8, 0x77, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0x03, 0x09, 0xea, 0x38, 0x34, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x07, 0xa9, 0x31, 0x16, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0xc7, 0xa1, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0x74, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0xc5, 0x41, 0xb6, 0x21, 0x2e, 0x83, 0x60, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x71, 0x41, 0xb0, 0x41, 0x03, 0xce, 0xf6, 0x8b, 0xc3, 0x6e, 0xd0, 0xce, 0xbe, 0xfd, 0x86, 0x53, 0x6c, 0xd8, 0x85, 0xdb, 0xa0, 0x45, 0x5b, 0xfb, 0x43, 0x34, 0x37, 0x18, 0xb3, 0x70, 0xc3, 0x6e, 0xd0, 0x54, 0xb4, 0xfd, 0x2a, 0x1e, 0x3e, 0x0f, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x06, 0xc3, 0x0e, 0xf7, 0xb0, 0x42, 0x7b, 0x88, 0xe1, 0xb0, 0x1b, 0xb4, 0x01, 0x6e, 0xbf, 0x1a, 0x1c, 0x9d, 0xb9, 0x0f, 0x1a, 0xfd, 0xc0, 0x3f, 0xc4, 0x70, 0xd8, 0x0d, 0x5a, 0x7f, 0xb7, 0x5f, 0xc5, 0x83, 0x06, 0x30, 0x60, 0x57, 0x43, 0x0c, 0x37, 0x6c, 0x1d, 0x1c, 0x62, 0x78, 0x88, 0xe1, 0x21, 0x86, 0x87, 0x18, 0x0e, 0xbb, 0x41, 0x03, 0xe8, 0xf6, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x61, 0xd7, 0xa0, 0xa5, 0x64, 0xfb, 0x41, 0xb0, 0x20, 0x19, 0x78, 0x76, 0xe7, 0xe0, 0x98, 0x55, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x63, 0xd0, 0x1c, 0xe0, 0x60, 0xe0, 0x87, 0x1c, 0x87, 0x06, 0xc1, 0x82, 0x64, 0x83, 0xa2, 0x3e, 0xe7, 0xe0, 0x74, 0x86, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaf, 0x1d, 0x7e, 0xe3, 0xf9, 0x1a, 0xb4, 0x94, 0x6c, 0x3f, 0x08, 0x36, 0x68, 0x4f, 0x06, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0xa0, 0x3b, 0xc0, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x1d, 0x62, 0x78, 0x1c, 0x3a, 0xac, 0xd0, 0x0e, 0xbb, 0x41, 0x3b, 0x02, 0xf7, 0xab, 0x06, 0xe7, 0xc8, 0xdd, 0x15, 0x0f, 0x1a, 0xa2, 0xfd, 0x3c, 0x08, 0x4a, 0xef, 0x43, 0x0c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x41, 0xc0, 0x7c, 0x1f, 0x56, 0x68, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x68, 0xbf, 0x7e, 0xd0, 0x6a, 0xc3, 0xfd, 0x2a, 0x1e, 0x34, 0xff, 0xfb, 0xb9, 0xe2, 0x41, 0xab, 0xc3, 0x9f, 0x07, 0x41, 0xe9, 0x3d, 0xec, 0x06, 0x41, 0xe2, 0xbd, 0x21, 0x86, 0x2b, 0x1e, 0xb4, 0xca, 0xfc, 0x79, 0x68, 0x24, 0x78, 0x88, 0xe1, 0x21, 0x86, 0x87, 0x18, 0x1e, 0x8f, 0x87, 0xdd, 0x20, 0xf8, 0x98, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0xa0, 0xa5, 0x64, 0xfb, 0x83, 0xe2, 0x50, 0x63, 0x41, 0xb0, 0x06, 0xe3, 0xc2, 0xec, 0x10, 0xc3, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xe3, 0x90, 0x69, 0xd5, 0x10, 0xc3, 0x35, 0xc4, 0x70, 0x10, 0x2c, 0x48, 0x06, 0x2c, 0x7d, 0xef, 0x3b, 0x38, 0x9d, 0x21, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x4f, 0x48, 0x39, 0x34, 0x6a, 0x39, 0x0e, 0x1d, 0x62, 0x78, 0x88, 0xe1, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x06, 0x2d, 0x25, 0xdb, 0x1f, 0x14, 0xa1, 0x09, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x83, 0x95, 0x3c, 0x3b, 0x83, 0x68, 0x61, 0x37, 0x38, 0x1b, 0x3d, 0x1f, 0x52, 0x07, 0xc7, 0xe3, 0x0d, 0x9a, 0x30, 0xc3, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0x06, 0xad, 0x95, 0x09, 0x1c, 0x56, 0x68, 0x8f, 0x6f, 0x83, 0x60, 0x83, 0x85, 0xaf, 0x5e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x28, 0x19, 0x9a, 0x0e, 0x1b, 0xb5, 0xc3, 0x6f, 0x3c, 0x3f, 0x18, 0x5e, 0x01, 0xc7, 0xa1, 0x83, 0x72, 0x28, 0xe9, 0x78, 0x3c, 0x08, 0x16, 0x24, 0x1b, 0x2c, 0xb6, 0x15, 0x99, 0xe0, 0xfe, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x73, 0x10, 0x06, 0xf2, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0x68, 0x05, 0xc1, 0x06, 0xcb, 0x4d, 0x49, 0x16, 0x07, 0xc1, 0x06, 0x05, 0xb5, 0xd8, 0xe2, 0x20, 0xd8, 0xd0, 0x6f, 0x70, 0xd8, 0x0d, 0x42, 0xcb, 0x7d, 0xe3, 0xd0, 0xb0, 0x0b, 0xb7, 0x21, 0x55, 0x73, 0x10, 0x06, 0xf2, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0x7d, 0x3b, 0x38, 0x09, 0x1d, 0x1f, 0x0c, 0xb3, 0xf0, 0xe3, 0xd0, 0xf1, 0xf8, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0x41, 0x2d, 0xb6, 0x38, 0xec, 0xc2, 0x1d, 0x34, 0xf0, 0x45, 0xb2, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x84, 0x7e, 0xd7, 0xc1, 0x70, 0x94, 0x3e, 0x18, 0x1f, 0x46, 0x87, 0x46, 0x2d, 0x83, 0x60, 0x41, 0x32, 0x50, 0xdf, 0x0e, 0x86, 0xa3, 0xf4, 0xa1, 0x51, 0xcb, 0xf1, 0xf8, 0x78, 0xbc, 0x20, 0xd8, 0xa0, 0xd5, 0xa5, 0xfb, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x18, 0x9a, 0x56, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0x32, 0xd0, 0xbe, 0xeb, 0x20, 0xe0, 0xfd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x6e, 0x70, 0x9a, 0xec, 0x3d, 0x68, 0xc5, 0xd0, 0x7e, 0x71, 0xd8, 0x0d, 0xbb, 0x06, 0x1b, 0x62, 0xb8, 0x21, 0x86, 0x1b, 0x2c, 0xaf, 0x09, 0x3a, 0x8c, 0xcb, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x24, 0x03, 0x42, 0xbf, 0xeb, 0x20, 0xe0, 0xfd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x68, 0xbf, 0xd0, 0xfe, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x34, 0xed, 0x3a, 0x08, 0x78, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x37, 0x48, 0xa8, 0x90, 0x3b, 0x68, 0xa0, 0x9b, 0x73, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0x0c, 0xbc, 0xcf, 0x75, 0x10, 0xf0, 0xfe, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x0d, 0x16, 0x7b, 0x91, 0x1c, 0x04, 0xbc, 0xff, 0x41, 0xc3, 0x5f, 0xf7, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0x90, 0xc5, 0x2f, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0xad, 0x18, 0x24, 0x03, 0xb3, 0x76, 0x10, 0xf0, 0xfe, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x79, 0xc6, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x71, 0x83, 0x84, 0x0a, 0xb9, 0x83, 0x66, 0xb7, 0x3b, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x1b, 0xd8, 0xf8, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0xa1, 0xca, 0x75, 0x10, 0xf0, 0xfe, 0x07, 0x0d, 0x7f, 0xdd, 0x1f, 0x87, 0x0e, 0x1a, 0x02, 0xc7, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xcc, 0x33, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x1b, 0x24, 0x54, 0xc8, 0x1d, 0xb4, 0x3b, 0xde, 0x39, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xda, 0xc0, 0xc6, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x6c, 0xb0, 0x56, 0x71, 0xe4, 0x20, 0xe0, 0xfd, 0x0f, 0x1a, 0xfe, 0xba, 0x3f, 0x0e, 0x1d, 0x34, 0x04, 0x8e, 0x3f, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x99, 0x67, 0xfc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x37, 0x48, 0xa8, 0x90, 0x3b, 0x08, 0x96, 0xa5, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0x06, 0x36, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x36, 0xa8, 0xee, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xcd, 0xb9, 0x0e, 0x02, 0xde, 0xff, 0x38, 0x74, 0xd0, 0xf0, 0xd7, 0xfd, 0x71, 0xe8, 0xa0, 0x21, 0x70, 0xfc, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcd, 0x3c, 0xe3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xb8, 0x41, 0xfb, 0x1f, 0x9d, 0x07, 0xcd, 0xd2, 0x74, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x18, 0xaf, 0x5c, 0x07, 0x01, 0xef, 0x7f, 0x1c, 0x3a, 0x68, 0x08, 0x1c, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x33, 0xcf, 0xf8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x6e, 0xd0, 0xfe, 0x47, 0xe7, 0x41, 0xeb, 0x2b, 0x9d, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0xb6, 0xba, 0xee, 0x0f, 0x5a, 0xe0, 0xba, 0x3f, 0x68, 0x81, 0xeb, 0xfe, 0x38, 0x74, 0xd0, 0x10, 0x38, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x66, 0x9e, 0xf1, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xdc, 0xa0, 0xfd, 0x8f, 0xce, 0x83, 0xe4, 0x21, 0xe1, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x41, 0xb3, 0x03, 0xf9, 0x07, 0x8d, 0x09, 0xe4, 0x1f, 0x34, 0x26, 0x90, 0x7f, 0x1c, 0x3a, 0x68, 0x08, 0x1c, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x33, 0xcf, 0xf8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x6e, 0x30, 0x30, 0x3d, 0x0e, 0xd6, 0x54, 0xb3, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x18, 0xef, 0x54, 0x07, 0x01, 0xef, 0x7f, 0x1c, 0x3a, 0x68, 0x08, 0x1c, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xfa, 0x77, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xc6, 0x8e, 0xf1, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x37, 0x18, 0x98, 0x1e, 0x07, 0x8b, 0x2e, 0xad, 0x8e, 0x43, 0xc7, 0xa1, 0x83, 0x86, 0xc0, 0xf1, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xf3, 0x8c, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x0c, 0xbf, 0xf1, 0xfc, 0x60, 0xf1, 0x34, 0xc9, 0x71, 0xe8, 0xa0, 0x21, 0x70, 0xfc, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x36, 0xa8, 0xee, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x68, 0x1e, 0x1b, 0xff, 0x38, 0x74, 0xd0, 0x8a, 0x01, 0xfe, 0x71, 0x68, 0x41, 0xb0, 0x41, 0xab, 0x4b, 0xf7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x96, 0x3f, 0xd1, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0x12, 0xa9, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x7d, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x10, 0x9e, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x3a, 0xb2, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0x0f, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x0d, 0x9a, 0xcd, 0x84, 0x38, 0x68, 0xf6, 0x12, 0x62, 0xc3, 0x89, 0xb0, 0x41, 0x4b, 0x8e, 0xf9, 0x07, 0xad, 0xba, 0x42, 0x1c, 0x34, 0x04, 0x0b, 0x71, 0x10, 0x52, 0xca, 0x1b, 0x4e, 0x84, 0x0d, 0x9a, 0x57, 0xcc, 0xdf, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0xc1, 0xc9, 0x07, 0xf0, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0x93, 0x0f, 0xe0, 0x20, 0xd8, 0x60, 0x69, 0xf8, 0xd8, 0x21, 0x0d, 0x77, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x82, 0xfe, 0xe3, 0xb0, 0xc7, 0xbb, 0x1a, 0x52, 0x07, 0x2b, 0x06, 0x9f, 0x46, 0x1e, 0x87, 0x0e, 0x31, 0x3c, 0xac, 0xfd, 0x1e, 0x62, 0x78, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0x6d, 0xfe, 0xfb, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xf1, 0xdf, 0x75, 0x10, 0xf0, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x1e, 0x8c, 0xe6, 0xf3, 0x83, 0x16, 0x2f, 0xf2, 0x8f, 0x43, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0x08, 0x16, 0x24, 0x03, 0xe5, 0xed, 0x20, 0xe0, 0xfd, 0x0f, 0xda, 0x13, 0xc0, 0x3f, 0x58, 0x89, 0x2f, 0x72, 0x3c, 0x3e, 0x68, 0x97, 0x2d, 0xff, 0x38, 0xb4, 0x20, 0xd8, 0x60, 0xb9, 0x29, 0xc9, 0xe2, 0x20, 0xd8, 0x60, 0x61, 0x41, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x1f, 0xac, 0x03, 0x2a, 0x19, 0x04, 0x1b, 0x52, 0x35, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0x48, 0x06, 0x8a, 0xda, 0xc1, 0x30, 0xf4, 0x39, 0x58, 0x89, 0x2f, 0x72, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x43, 0xea, 0x60, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x20, 0x78, 0xb9, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0x92, 0x81, 0xa0, 0x1d, 0x0c, 0x43, 0x9f, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0x83, 0xb5, 0x30, 0x25, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x86, 0xb8, 0x0c, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x40, 0xf1, 0xdf, 0x75, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x83, 0xf4, 0xc0, 0xea, 0x83, 0xf4, 0xc0, 0xea, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xf7, 0xb9, 0x0e, 0x86, 0xa1, 0xcf, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x0f, 0x8e, 0xe2, 0xe8, 0x83, 0x60, 0x43, 0xea, 0x60, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x06, 0xc9, 0x40, 0x75, 0x3b, 0x18, 0xfe, 0xb1, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0xb2, 0xc1, 0x62, 0x5b, 0x91, 0x83, 0xe1, 0x28, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x57, 0x3c, 0x58, 0x33, 0xe6, 0xbb, 0x1a, 0x62, 0x78, 0x30, 0x50, 0xd5, 0x0e, 0x31, 0x3c, 0xc4, 0xf0, 0x10, 0xc3, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x83, 0xc5, 0x7a, 0x26, 0x07, 0xc3, 0x51, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x17, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x07, 0x47, 0x6f, 0xf3, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xa0, 0x77, 0x1d, 0x0c, 0x47, 0xe9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0xc0, 0xfb, 0x5c, 0x07, 0xc3, 0x51, 0xfa, 0x38, 0x34, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x64, 0xa0, 0xba, 0x1d, 0x0c, 0x47, 0xe9, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xb1, 0xde, 0x75, 0x30, 0x1c, 0xa5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x20, 0x45, 0xfb, 0x7a, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0x41, 0xb0, 0x86, 0xac, 0xdd, 0x06, 0x47, 0x9e, 0xe2, 0x41, 0xb0, 0x86, 0x7c, 0xed, 0x21, 0x86, 0x07, 0xab, 0x19, 0x80, 0x0e, 0x56, 0x33, 0x00, 0x1d, 0xdf, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0x32, 0xd0, 0xb4, 0xeb, 0x60, 0x38, 0x4a, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0xbb, 0x44, 0x7f, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x48, 0x06, 0x9c, 0xff, 0xbb, 0x0e, 0x86, 0xa3, 0xf4, 0xc1, 0xfa, 0xa7, 0x91, 0x83, 0x86, 0x21, 0xf4, 0x8f, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5a, 0x46, 0xd0, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0xa9, 0x83, 0x83, 0x66, 0x7b, 0xf4, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x2d, 0x4a, 0xe8, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x1c, 0xd7, 0xa9, 0x0e, 0x86, 0xa3, 0xf4, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xa3, 0xb7, 0xf9, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0x92, 0x81, 0xa2, 0x76, 0x30, 0x1c, 0xa5, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x8f, 0x43, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0x48, 0x06, 0x66, 0xed, 0x60, 0x38, 0x4a, 0x1f, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0xb9, 0x29, 0xc9, 0xe2, 0x20, 0xd8, 0xe0, 0xa8, 0xf8, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x61, 0x41, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x0d, 0xda, 0x3e, 0xce, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x43, 0xea, 0x60, 0x10, 0x6c, 0xd0, 0xda, 0x75, 0xfe, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0x92, 0x81, 0xea, 0x76, 0x30, 0x0c, 0x7d, 0x0e, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x0f, 0xd6, 0xc2, 0x94, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0x46, 0xb4, 0xff, 0x60, 0x2d, 0x4c, 0xc9, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x34, 0xf3, 0x8c, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x35, 0xec, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x20, 0xf1, 0xbf, 0xeb, 0x20, 0xe0, 0xfd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0x15, 0xad, 0xfb, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6b, 0xa9, 0x49, 0x0e, 0x92, 0xb7, 0x4e, 0x0e, 0x1a, 0x02, 0xc7, 0x3f, 0x0e, 0x1d, 0x87, 0x16, 0x04, 0x1b, 0xb4, 0xcc, 0x80, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x0c, 0xbf, 0xf1, 0x7c, 0x71, 0x90, 0x6d, 0x88, 0xcb, 0x20, 0xd8, 0xa0, 0x75, 0x59, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0x07, 0x81, 0x68, 0xb2, 0x38, 0xec, 0x06, 0x4d, 0xd2, 0x35, 0x6d, 0x18, 0x97, 0x83, 0x62, 0x91, 0xec, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0xf3, 0xab, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xd0, 0x52, 0xb2, 0xfd, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xad, 0xcb, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0x8a, 0xb9, 0xf4, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x19, 0x70, 0x5c, 0xa7, 0x3a, 0x18, 0xef, 0x3a, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xf7, 0xb9, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0x92, 0x81, 0xa2, 0x76, 0x30, 0xde, 0x75, 0x0e, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcd, 0xaf, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0x8b, 0xb6, 0xf6, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x41, 0xb0, 0xc1, 0xca, 0x2e, 0x99, 0x83, 0x74, 0xc1, 0xa1, 0x83, 0xf3, 0x13, 0xed, 0x71, 0x68, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x06, 0xc9, 0xc0, 0xac, 0x1d, 0x8c, 0x77, 0x9d, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcd, 0xaf, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x12, 0x56, 0x7f, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xd0, 0xb4, 0xeb, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0xfb, 0x89, 0x4f, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xf1, 0x3a, 0x9e, 0x1f, 0x87, 0x8e, 0x43, 0x07, 0xcd, 0x4f, 0xeb, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x7e, 0xd5, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0x9a, 0xa7, 0x6b, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xfa, 0x5d, 0x07, 0xe3, 0x5d, 0xe7, 0x20, 0x45, 0xf9, 0x79, 0x10, 0x6c, 0xd0, 0xb2, 0xb9, 0xfe, 0xc1, 0x3a, 0x7b, 0x92, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcd, 0xaf, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0x4b, 0xf0, 0xf6, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x94, 0xd4, 0x7f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xc1, 0x31, 0x45, 0xfa, 0xe0, 0x08, 0x41, 0x3f, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xb0, 0x68, 0x9f, 0xea, 0x60, 0xbc, 0xeb, 0x1c, 0x34, 0x3f, 0xad, 0x3f, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x50, 0xec, 0x72, 0x1d, 0x8c, 0x77, 0x9d, 0x83, 0xe6, 0xa7, 0xf5, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x49, 0xae, 0x83, 0xf1, 0xae, 0x73, 0xd0, 0xfc, 0xb4, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xa0, 0x3d, 0xd7, 0xc1, 0x78, 0xd7, 0x39, 0x68, 0x7e, 0x5a, 0x7f, 0x10, 0x6c, 0xd0, 0xec, 0xaf, 0xfb, 0x41, 0xf3, 0xd3, 0xfa, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xc2, 0x75, 0x30, 0xde, 0x75, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0xe2, 0x20, 0xd9, 0xcf, 0xe2, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xed, 0xdd, 0xeb, 0x1f, 0xac, 0x55, 0x92, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0x8e, 0x29, 0xd2, 0x07, 0x27, 0x66, 0xdf, 0x83, 0xe6, 0xa7, 0xf5, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x02, 0x95, 0xeb, 0x60, 0xbc, 0xeb, 0x1c, 0x34, 0xc5, 0xb2, 0x7f, 0xd0, 0xfc, 0xb4, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x0d, 0x8e, 0x29, 0xd2, 0x07, 0xe3, 0x0e, 0x6a, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xd0, 0x94, 0xeb, 0x60, 0xbc, 0xeb, 0x1c, 0x34, 0xc5, 0xb2, 0x7f, 0xd0, 0xfc, 0xb4, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x70, 0x4c, 0x91, 0x3e, 0x58, 0xac, 0xd9, 0x75, 0xd0, 0xfc, 0xb4, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x0d, 0x8e, 0x29, 0xd2, 0x07, 0x2b, 0x25, 0xbb, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x64, 0xc0, 0x71, 0x9f, 0xea, 0x60, 0xbc, 0xeb, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xce, 0xff, 0x5d, 0x07, 0xe3, 0x5d, 0xe7, 0x60, 0x25, 0x6e, 0xcc, 0xc1, 0xa2, 0x74, 0x92, 0x83, 0x75, 0xf6, 0x24, 0x07, 0xcd, 0x4f, 0xeb, 0x1f, 0x87, 0x8e, 0x43, 0x07, 0x8b, 0xd2, 0x49, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xbf, 0xea, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x49, 0x58, 0xfd, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x19, 0x28, 0x5d, 0xc7, 0xf3, 0x83, 0x14, 0xe5, 0xe7, 0x41, 0xb0, 0x41, 0xf3, 0xdf, 0xfa, 0x07, 0xcd, 0x4f, 0xeb, 0x1f, 0x87, 0x0e, 0x16, 0xa5, 0x93, 0x1c, 0x87, 0x0e, 0x9a, 0x9f, 0xd6, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xfc, 0xaa, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf6, 0xde, 0xf5, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x01, 0x7a, 0xfd, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcd, 0xaf, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x34, 0x60, 0x7f, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0x50, 0x52, 0xff, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x90, 0x2e, 0x53, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x34, 0xe7, 0x3a, 0x18, 0xef, 0x3a, 0x07, 0x4d, 0xb1, 0xec, 0x1f, 0x87, 0x0e, 0x16, 0xa5, 0x93, 0x1c, 0x34, 0xa5, 0xb6, 0x7f, 0x1c, 0x3a, 0x68, 0x7e, 0x5a, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xf3, 0xab, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xd0, 0x82, 0xc3, 0xfd, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x0d, 0x16, 0xeb, 0x99, 0x1c, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x5f, 0x90, 0x0c, 0x68, 0x7e, 0x97, 0xeb, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x01, 0xc1, 0xca, 0x75, 0x30, 0xde, 0x75, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xfd, 0xbb, 0x8e, 0xe7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0xb4, 0xdd, 0xba, 0x7f, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xd3, 0x74, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x17, 0x24, 0x1b, 0x34, 0x13, 0xf0, 0x7e, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x80, 0xc4, 0x5d, 0xae, 0x83, 0xf1, 0xae, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x63, 0xb1, 0xfb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0x34, 0xf1, 0xbb, 0x7f, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0xd8, 0xa0, 0x15, 0x63, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xe1, 0xdf, 0x75, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0x2d, 0x9b, 0xeb, 0x1f, 0x87, 0x8e, 0x43, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0x34, 0xd7, 0xc1, 0x78, 0xd7, 0x39, 0x68, 0x8a, 0x65, 0xff, 0x38, 0x74, 0xd0, 0xfc, 0xb4, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe6, 0x57, 0xdd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xa0, 0x4d, 0x81, 0xfb, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0x52, 0xe9, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x36, 0x4d, 0xf7, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb4, 0xbb, 0xbb, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xd5, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x6b, 0xc1, 0xfb, 0x07, 0x29, 0x2a, 0x27, 0xc7, 0xa1, 0xe3, 0xd0, 0x41, 0x1b, 0xc8, 0xfb, 0xc7, 0xa1, 0x83, 0xe6, 0xa7, 0xf5, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xbf, 0xea, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0xd1, 0x80, 0xfd, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x48, 0x06, 0x04, 0x7a, 0xd7, 0xc1, 0x78, 0xd7, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x64, 0xc0, 0xda, 0x5d, 0xae, 0x83, 0xf1, 0xae, 0x33, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd9, 0x60, 0xad, 0xe2, 0xc8, 0xc1, 0x78, 0xd7, 0x39, 0x68, 0x7e, 0x5a, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb2, 0xc1, 0x5a, 0xe1, 0x91, 0x83, 0xf1, 0xae, 0x73, 0xd0, 0xfc, 0xb4, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x60, 0x97, 0xea, 0x60, 0xbc, 0xeb, 0x1c, 0x34, 0x3f, 0xad, 0x7f, 0x1c, 0x1a, 0x04, 0x1b, 0xb4, 0xea, 0xc0, 0x7f, 0xb0, 0x28, 0x9d, 0x64, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0x96, 0xee, 0x72, 0x1d, 0x8c, 0x77, 0x9d, 0x83, 0xf6, 0x43, 0xf6, 0x07, 0xc1, 0x06, 0x6d, 0x26, 0xbb, 0x1f, 0x34, 0x3f, 0xad, 0x7f, 0xb0, 0x28, 0x9d, 0x64, 0x10, 0x6c, 0xd0, 0x66, 0xb2, 0xfb, 0xc1, 0xa2, 0x74, 0x92, 0xe3, 0xd0, 0x41, 0xf3, 0xd3, 0xfa, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x5f, 0x75, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0x68, 0xc0, 0xfe, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6d, 0x9a, 0xee, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x82, 0x64, 0x83, 0x96, 0x2d, 0xe7, 0x0f, 0xc6, 0xbb, 0xce, 0x41, 0xcb, 0x33, 0xfc, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xf5, 0xae, 0xe3, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0x2d, 0xcf, 0xf0, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x83, 0xe6, 0xa7, 0xf5, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xbf, 0xea, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x8d, 0xa1, 0xdb, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xa6, 0xe9, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x2f, 0x48, 0x06, 0x94, 0xba, 0x5c, 0x07, 0xe3, 0x5d, 0xe7, 0xa0, 0x95, 0x25, 0xfe, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xda, 0x67, 0xdf, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x63, 0xb1, 0xfb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0xb4, 0xb2, 0xc4, 0x7f, 0x1c, 0x3a, 0x48, 0x51, 0x39, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x07, 0xcd, 0x4f, 0xeb, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x7e, 0xd5, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0xda, 0x03, 0xb7, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x4d, 0xd3, 0xfd, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x5f, 0x90, 0x6c, 0xb0, 0xa8, 0x84, 0xe4, 0x60, 0xbc, 0xeb, 0x1c, 0x34, 0x73, 0xc6, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xfb, 0xec, 0xfb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x2c, 0x76, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0x66, 0xce, 0xf8, 0x8f, 0x43, 0x07, 0x29, 0x2a, 0x27, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0xa0, 0xf9, 0x69, 0xfd, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcd, 0xaf, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0xb3, 0xd1, 0xf6, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0x69, 0xba, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0x34, 0xe6, 0xc1, 0x7f, 0xd0, 0x98, 0x07, 0xff, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xed, 0xb3, 0xef, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xb1, 0xd8, 0xfd, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0x1a, 0xf3, 0xe0, 0x3f, 0x0e, 0x1d, 0xa4, 0xa8, 0x9c, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x83, 0xe6, 0xa7, 0xf5, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xbf, 0xea, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x71, 0x66, 0xfd, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0x0a, 0xd7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x71, 0x81, 0x17, 0x93, 0x6b, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0x78, 0xd8, 0xfe, 0xc1, 0xfa, 0xa7, 0x91, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xe0, 0xe5, 0x3a, 0x18, 0xef, 0x3a, 0x07, 0x8b, 0xd2, 0x49, 0x8e, 0x43, 0xc7, 0xa1, 0x83, 0xe6, 0xa7, 0xf5, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xbf, 0xea, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x49, 0x58, 0xfd, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0xa6, 0x66, 0xf5, 0x07, 0xc1, 0x06, 0xed, 0x91, 0xf2, 0x1f, 0x34, 0xc5, 0xb2, 0x7f, 0x1c, 0x3a, 0x68, 0x7e, 0x5a, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xf3, 0xab, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x9a, 0x84, 0xd5, 0x1f, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0xf6, 0xbf, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x0f, 0xda, 0x55, 0xe0, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x6c, 0xb0, 0x06, 0x81, 0xe4, 0x60, 0xbc, 0xeb, 0x1c, 0x34, 0x3f, 0xad, 0x7f, 0xd0, 0x8c, 0x03, 0xff, 0x41, 0xfb, 0x12, 0xfc, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x41, 0xf3, 0xc9, 0xfc, 0x07, 0xcd, 0x38, 0xf0, 0x1f, 0x2c, 0x4a, 0x27, 0x39, 0x0e, 0x1d, 0x34, 0x3f, 0xad, 0x7f, 0x1c, 0x3a, 0x1e, 0x1f, 0x87, 0x16, 0x7e, 0x41, 0xb0, 0xc1, 0x4a, 0x71, 0xb2, 0x83, 0x14, 0xe5, 0xe7, 0x41, 0xb0, 0x41, 0x9b, 0xa6, 0xfb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x20, 0xd8, 0xa0, 0xb5, 0xff, 0xfd, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x41, 0x03, 0xbe, 0xfa, 0xc7, 0xa1, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0x06, 0xed, 0xdd, 0xeb, 0x1f, 0xdf, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xca, 0x7f, 0xaa, 0x83, 0xf1, 0xae, 0x73, 0xb0, 0xce, 0x9e, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd6, 0x65, 0xdd, 0x0f, 0x96, 0xde, 0x48, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0xcd, 0x3c, 0xe3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xb8, 0x02, 0x8f, 0x26, 0x57, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0xd1, 0xba, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x06, 0xd5, 0xfd, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xa0, 0x6d, 0x81, 0xfc, 0xe3, 0xd0, 0x41, 0xc3, 0x5f, 0xf7, 0x07, 0x8d, 0x09, 0xe4, 0x1f, 0x34, 0x26, 0x90, 0x7f, 0xd0, 0x98, 0x40, 0xfe, 0x20, 0xd8, 0xa0, 0x99, 0xb6, 0xfc, 0x83, 0x86, 0xbf, 0xee, 0x8f, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x83, 0x60, 0xe1, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xa1, 0x3a, 0x18, 0xfe, 0xb1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0x8c, 0xa5, 0xdc, 0xe3, 0xd0, 0xf1, 0x6d, 0x10, 0x6c, 0x48, 0x4c, 0x0d, 0x82, 0x85, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0xee, 0xaf, 0x83, 0x93, 0xd0, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xe0, 0xb0, 0xef, 0x7d, 0x1c, 0x3a, 0xbe, 0x0d, 0x82, 0xc5, 0x83, 0x06, 0x83, 0x3e, 0x07, 0xc1, 0xc2, 0x2f, 0x08, 0x16, 0x24, 0x03, 0x43, 0x75, 0x70, 0xf6, 0x32, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x86, 0xeb, 0xe0, 0xec, 0x65, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x20, 0x78, 0x07, 0x27, 0xa1, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x0d, 0x16, 0xff, 0x89, 0x1d, 0x1c, 0xb3, 0x8a, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xdb, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0x5c, 0xd8, 0x85, 0xdb, 0xa0, 0xa9, 0x2a, 0xfb, 0x43, 0xfc, 0x37, 0xb4, 0x12, 0x1f, 0x76, 0xe1, 0x36, 0x68, 0x59, 0xca, 0xfe, 0x10, 0xff, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x68, 0x8b, 0xcb, 0xfe, 0x10, 0xff, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x68, 0x6c, 0xcc, 0xfe, 0x10, 0xff, 0x0d, 0xad, 0xc4, 0x87, 0x5d, 0xb8, 0x0d, 0x5a, 0x53, 0xb3, 0x3f, 0xc4, 0x7f, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x9a, 0x8b, 0xb3, 0x3f, 0xc4, 0x7f, 0x83, 0x02, 0x00, 0x6a, 0x90, 0xad, 0xa1, 0xfd, 0xfa, 0x70, 0x1b, 0xb4, 0x87, 0x67, 0x7f, 0x88, 0xff, 0xa1, 0x95, 0xf8, 0x0a, 0x82, 0x85, 0x5f, 0x90, 0x0c, 0x08, 0xfc, 0xbe, 0x83, 0x73, 0xde, 0xf1, 0xf1, 0x6d, 0x10, 0x2c, 0x0e, 0xbb, 0xc1, 0x20, 0xe0, 0x58, 0x10, 0x2c, 0xec, 0x06, 0x67, 0xd9, 0xe3, 0xc5, 0x39, 0x68, 0xc3, 0x88, 0xf4, 0x10, 0xc3, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xbf, 0xf1, 0x7c, 0x0d, 0x31, 0xdc, 0x10, 0xc3, 0x43, 0x4a, 0xe0, 0xb0, 0x57, 0x38, 0xc8, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0x31, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0xf4, 0xcf, 0xc1, 0x39, 0xef, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xcf, 0xc1, 0x39, 0xef, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x0d, 0x34, 0xf5, 0x1f, 0x84, 0x00, 0xf8, 0x71, 0xe8, 0x38, 0x74, 0xd0, 0x06, 0x54, 0xff, 0xb0, 0x0b, 0xb7, 0xc1, 0x91, 0xa7, 0xf8, 0xd0, 0x02, 0x68, 0xe1, 0x17, 0x44, 0x0b, 0x3b, 0x08, 0x16, 0x87, 0x5d, 0xd8, 0x0d, 0x8a, 0xcb, 0xa6, 0x85, 0xdb, 0x20, 0xa1, 0xec, 0xe4, 0x90, 0xb5, 0x3b, 0x1c, 0xed, 0x1b, 0xac, 0x58, 0xd0, 0x19, 0x04, 0x0b, 0x92, 0x0d, 0x86, 0xf8, 0xc7, 0xc1, 0x69, 0x43, 0xf9, 0x60, 0x98, 0x85, 0x1f, 0xdf, 0x8e, 0xc7, 0x83, 0x60, 0x35, 0x48, 0x8a, 0x24, 0x38, 0x1c, 0xed, 0x87, 0x86, 0x5f, 0x83, 0x60, 0x41, 0x32, 0x10, 0xbb, 0x41, 0xb4, 0xc1, 0x58, 0x60, 0x3f, 0xac, 0xd0, 0x0e, 0xbb, 0xb0, 0x1b, 0x8c, 0x8e, 0xf5, 0x85, 0xdd, 0x60, 0x01, 0xac, 0xcf, 0xc2, 0x6e, 0xb0, 0x66, 0x28, 0x65, 0x61, 0x17, 0x76, 0x83, 0x76, 0x42, 0x9c, 0x0e, 0xeb, 0x9b, 0x0b, 0xbb, 0xc1, 0x82, 0x2f, 0xae, 0x85, 0x5d, 0xb8, 0x0d, 0x1a, 0x4e, 0xb4, 0x3f, 0x08, 0xdc, 0xf8, 0x85, 0x5d, 0xb8, 0x0d, 0x5a, 0xb2, 0xb4, 0x3f, 0x08, 0x03, 0xf9, 0x0d, 0x31, 0x1c, 0x6e, 0x83, 0x66, 0x3b, 0xed, 0x0f, 0xc2, 0x40, 0xfe, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x5f, 0x0d, 0x7b, 0x85, 0x87, 0xc4, 0xd4, 0xc1, 0x78, 0xd3, 0xd9, 0x60, 0x89, 0xef, 0xff, 0x21, 0x75, 0x30, 0xec, 0x82, 0x60, 0x83, 0x23, 0xa7, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x46, 0xe9, 0x58, 0x0e, 0xc6, 0x62, 0xe7, 0x71, 0x68, 0x61, 0x17, 0x6e, 0x83, 0x84, 0xb2, 0x93, 0x43, 0x0b, 0xa0, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xf9, 0x30, 0x07, 0x23, 0xcb, 0xea, 0x60, 0x15, 0x93, 0xd8, 0x20, 0x58, 0xd8, 0x0d, 0xce, 0xb2, 0xc7, 0x6b, 0x88, 0xe1, 0xe2, 0x41, 0x93, 0x66, 0xa4, 0x1b, 0xac, 0x53, 0x69, 0x38, 0x18, 0x50, 0x61, 0x87, 0x18, 0x0e, 0xbb, 0xc1, 0xa8, 0x97, 0xdc, 0xa0, 0x0d, 0xa8, 0xfe, 0x41, 0xb6, 0x06, 0x6d, 0x81, 0xac, 0x6c, 0x88, 0xe1, 0x20, 0xd8, 0xa0, 0x2d, 0xab, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xed, 0x6c, 0xf5, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x37, 0x07, 0x4d, 0x9a, 0x91, 0x6e, 0x98, 0xb8, 0x0d, 0x5a, 0xf9, 0xa7, 0xd8, 0x30, 0x71, 0x6b, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x0d, 0x5a, 0x6a, 0xc6, 0xd8, 0x70, 0x22, 0x6c, 0xd0, 0x52, 0x33, 0xc6, 0x06, 0x8b, 0xd9, 0xa0, 0x96, 0x59, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xe7, 0x49, 0x36, 0x48, 0x80, 0x03, 0x5e, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0xe0, 0xcd, 0x06, 0x0b, 0x65, 0x9f, 0x36, 0x68, 0xa6, 0x73, 0x60, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x5a, 0x00, 0x1d, 0xd8, 0xa0, 0x9d, 0xd5, 0x85, 0x43, 0x34, 0x37, 0x28, 0x08, 0x66, 0x37, 0x38, 0xd7, 0x1b, 0x6c, 0x88, 0xe6, 0x41, 0x78, 0xaa, 0x6e, 0x78, 0x9e, 0x64, 0x83, 0x04, 0x38, 0xe0, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x1f, 0x34, 0xe6, 0x65, 0x71, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0xa6, 0x7d, 0xfb, 0x37, 0x14, 0xd3, 0x35, 0x68, 0x7a, 0x0f, 0xe4, 0xe0, 0x10, 0x04, 0xba, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x83, 0xa7, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x83, 0xc6, 0x21, 0x07, 0x36, 0x9c, 0x08, 0x1b, 0x34, 0x0e, 0x39, 0xb0, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0xeb, 0x97, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x74, 0x44, 0x1b, 0x2c, 0x94, 0x7d, 0xda, 0xa0, 0x99, 0xce, 0x81, 0x35, 0x28, 0x3a, 0x8d, 0x37, 0x68, 0x01, 0x74, 0x60, 0x0d, 0x3f, 0xc2, 0x0c, 0x3c, 0x5d, 0x18, 0x3c, 0x1d, 0x71, 0x48, 0x1d, 0x1c, 0xb4, 0x55, 0x3a, 0x70, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0x86, 0xc1, 0xfb, 0x37, 0xcc, 0xfd, 0xe0, 0xf4, 0x86, 0x3a, 0xb2, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x6f, 0x10, 0xae, 0x08, 0x07, 0x2d, 0x6e, 0xf7, 0x1f, 0xce, 0xe3, 0x83, 0x66, 0x2f, 0x21, 0x36, 0x9c, 0x08, 0x1b, 0x34, 0x2f, 0xdf, 0x7f, 0xd0, 0xaa, 0x2b, 0xc4, 0x41, 0x43, 0xb0, 0x10, 0x07, 0x21, 0x00, 0x7e, 0x1c, 0x3a, 0x0e, 0x1d, 0xb4, 0x01, 0xd5, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0xda, 0xe9, 0xec, 0x1f, 0x44, 0x1b, 0x94, 0x07, 0x71, 0x83, 0x68, 0x61, 0x0f, 0xca, 0x6a, 0xb8, 0xe3, 0xf1, 0xf1, 0x6d, 0x10, 0x6c, 0xd0, 0x5c, 0x9c, 0xfd, 0xe2, 0x20, 0x58, 0x5c, 0x10, 0x6c, 0xd0, 0xb2, 0x94, 0xfd, 0xe2, 0xf0, 0x0b, 0xa2, 0x05, 0xb6, 0xff, 0x07, 0xc1, 0x82, 0x64, 0x50, 0x32, 0x81, 0xf6, 0xff, 0xff, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1a, 0xcf, 0x4f, 0xd0, 0xfd, 0xff, 0x38, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb4, 0xc0, 0xf4, 0x0f, 0x82, 0x05, 0xc9, 0x06, 0x85, 0x7f, 0xd0, 0x41, 0x5a, 0xd0, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xe0, 0xcf, 0x41, 0x6b, 0x0e, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xda, 0x8e, 0xf0, 0x3f, 0x28, 0x21, 0x25, 0x8e, 0x43, 0x07, 0xeb, 0x54, 0x1a, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0x54, 0xfe, 0x83, 0xe4, 0x68, 0x90, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x19, 0xbc, 0xc0, 0xa1, 0x51, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0x06, 0x2d, 0x4b, 0xd9, 0x2f, 0x0e, 0xa2, 0x05, 0xc6, 0xff, 0x20, 0xcd, 0xc7, 0x66, 0x10, 0x2d, 0x10, 0xfe, 0x83, 0x62, 0x91, 0xec, 0x90, 0x5c, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0xda, 0xe2, 0xb2, 0x5f, 0x1c, 0x7e, 0x61, 0x17, 0x6e, 0x43, 0xea, 0xe0, 0xe0, 0xcc, 0xb8, 0xbc, 0x21, 0xb9, 0x74, 0xd0, 0x6e, 0x89, 0xff, 0x20, 0xd8, 0xa0, 0x64, 0x68, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0xa0, 0xb1, 0x31, 0xfb, 0xe3, 0xd0, 0xf1, 0x78, 0xd8, 0x85, 0xdb, 0xa0, 0xb9, 0x38, 0xfb, 0x43, 0xaa, 0x66, 0x41, 0xb0, 0xc1, 0xf9, 0x89, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0xe6, 0xe2, 0xec, 0x8f, 0x43, 0xc3, 0x2e, 0xdc, 0x06, 0x2d, 0x4b, 0xd9, 0x1f, 0x52, 0x35, 0x0b, 0x82, 0x0d, 0xce, 0x4f, 0xb4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0xb4, 0x2c, 0x65, 0x7f, 0x1c, 0x1a, 0x76, 0xe1, 0x36, 0x68, 0x0f, 0xcf, 0xfe, 0x90, 0xaa, 0x59, 0x10, 0x6c, 0x50, 0x32, 0x34, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0xd0, 0x1e, 0x9e, 0xfd, 0x71, 0x68, 0xd8, 0x85, 0xdb, 0xa0, 0xb5, 0x9d, 0xfb, 0x43, 0xaa, 0x66, 0x41, 0xb0, 0xc1, 0xba, 0x68, 0xb0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0xda, 0xe2, 0xb2, 0x3f, 0x0e, 0x0d, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x6e, 0x83, 0xc6, 0x68, 0xee, 0x0f, 0xa9, 0x9a, 0x41, 0xb0, 0xc1, 0xba, 0x68, 0xb0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0x5a, 0x53, 0xb3, 0x3f, 0x0e, 0x0d, 0xbf, 0xc1, 0x5a, 0x3e, 0x81, 0xc3, 0x0a, 0xed, 0xf1, 0x78, 0x61, 0x17, 0x76, 0x83, 0x82, 0x8b, 0xe1, 0xb0, 0xbe, 0xb9, 0xf1, 0x78, 0x10, 0x6c, 0x70, 0xf2, 0xc4, 0x1d, 0x04, 0x1b, 0x62, 0x38, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0xe1, 0x37, 0x9e, 0x0f, 0xbb, 0xc1, 0xa8, 0x97, 0x5c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x92, 0xc1, 0xe8, 0x78, 0x3e, 0xfc, 0x06, 0x03, 0x13, 0x60, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0xb0, 0x1b, 0x2c, 0x1a, 0x14, 0x5a, 0xf8, 0x0d, 0x0a, 0x74, 0xca, 0x83, 0xd3, 0x0a, 0xee, 0x20, 0x5a, 0x20, 0xfc, 0x07, 0x83, 0x35, 0xf6, 0x90, 0x5c, 0x1a, 0x7e, 0x41, 0xb4, 0x90, 0x83, 0x10, 0x00, 0x3f, 0x1e, 0x0f, 0xbb, 0x70, 0x1b, 0x34, 0x9c, 0x68, 0x7f, 0x10, 0x64, 0xf1, 0x0b, 0xa2, 0x05, 0xcb, 0x83, 0x90, 0x02, 0x3f, 0x9e, 0x0f, 0xbf, 0x20, 0x5a, 0x20, 0xfc, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x8c, 0x56, 0xf3, 0x35, 0x08, 0x29, 0xf0, 0x83, 0x90, 0x02, 0x3f, 0x18, 0xbc, 0x93, 0xc7, 0xe3, 0x61, 0x17, 0x76, 0x83, 0xb1, 0xc9, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xec, 0xc2, 0x2e, 0xdc, 0x06, 0x4d, 0x55, 0xd9, 0x1f, 0x92, 0x1d, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0xd0, 0x1e, 0x9e, 0xfd, 0x21, 0xd9, 0xb1, 0x21, 0x86, 0xc3, 0x6d, 0xd0, 0xd8, 0x98, 0xfd, 0x21, 0xd9, 0xb1, 0xb0, 0x0b, 0xbb, 0xb0, 0x0b, 0xb7, 0x41, 0xfb, 0xc4, 0xf6, 0x07, 0x41, 0x16, 0x7f, 0x58, 0xdf, 0xdc, 0x10, 0xc3, 0x61, 0x17, 0x04, 0x1b, 0x1c, 0xc0, 0x92, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa2, 0x79, 0xb0, 0x4e, 0xa5, 0xe1, 0x38, 0x74, 0x48, 0xe7, 0x1e, 0xd2, 0xb9, 0x87, 0xa3, 0xfd, 0x90, 0xce, 0x5d, 0xf8, 0x05, 0xd1, 0x42, 0x07, 0xc9, 0x40, 0xf9, 0x3b, 0x9e, 0x1f, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x74, 0x10, 0x6c, 0xd0, 0x32, 0x41, 0xfc, 0xc1, 0x30, 0x76, 0x38, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0x48, 0x9b, 0x7c, 0xd0, 0x14, 0xa7, 0xff, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x85, 0xdf, 0x78, 0x7e, 0x10, 0x6e, 0xee, 0xc3, 0x2e, 0xdc, 0x06, 0x05, 0x00, 0xd4, 0x71, 0x68, 0xe1, 0x37, 0x9e, 0x8f, 0xb3, 0x41, 0x42, 0x85, 0xdc, 0x41, 0x3b, 0xd5, 0x9c, 0x83, 0x6c, 0x43, 0xf3, 0xf5, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0x10, 0x09, 0x1a, 0x7e, 0x41, 0xb4, 0x20, 0x3d, 0x08, 0x01, 0xf0, 0xe3, 0xf1, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x61, 0x37, 0x0e, 0x2d, 0xfc, 0x82, 0x68, 0x81, 0xea, 0x7f, 0x88, 0xe6, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0xc2, 0x0f, 0xbb, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0xb4, 0xc5, 0x65, 0x7f, 0x10, 0xa4, 0xf8, 0x0b, 0xbb, 0xb0, 0x0b, 0xb7, 0x41, 0x6b, 0x3b, 0xf7, 0x07, 0x41, 0xe9, 0x7d, 0x58, 0xdf, 0x3c, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0x86, 0x18, 0x0e, 0xbb, 0xb0, 0x0b, 0xb7, 0x41, 0x6b, 0x6a, 0xf6, 0x07, 0x41, 0x8a, 0xbf, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0x34, 0x46, 0x73, 0x7f, 0x10, 0x94, 0xde, 0x87, 0xf5, 0xcd, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0xd2, 0xb9, 0x1b, 0xac, 0xea, 0xe0, 0x3a, 0x24, 0x97, 0x8e, 0xc7, 0xc3, 0x2f, 0xec, 0xc2, 0x6d, 0xd0, 0x5e, 0xa8, 0xfd, 0xa1, 0x91, 0xe0, 0x82, 0x60, 0x83, 0x84, 0x18, 0x80, 0x43, 0x0b, 0xb0, 0x61, 0x17, 0x6e, 0x83, 0xa6, 0x74, 0xed, 0x0f, 0x8d, 0x04, 0x17, 0x04, 0x1b, 0x24, 0x63, 0xd2, 0x1f, 0x5a, 0x80, 0x0d, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x6e, 0x83, 0xf6, 0x89, 0xed, 0x0f, 0x8d, 0x04, 0x0f, 0xc9, 0xa5, 0x41, 0x32, 0x98, 0x0d, 0xa2, 0x05, 0xf1, 0x86, 0x18, 0x1e, 0x5a, 0x48, 0x1e, 0x8f, 0x07, 0xc1, 0xc2, 0x6e, 0x70, 0x96, 0x3d, 0x5e, 0x43, 0x0c, 0x17, 0x0f, 0xda, 0xb6, 0x30, 0x3d, 0x68, 0xb9, 0xd3, 0xff, 0x10, 0xc3, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2d, 0x10, 0xfe, 0x0d, 0x31, 0x3c, 0x58, 0xa4, 0x4b, 0x74, 0x48, 0x2e, 0x0d, 0xb2, 0x35, 0x68, 0x0b, 0x64, 0x65, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0x6d, 0x59, 0xf5, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x67, 0xab, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x39, 0x68, 0xdb, 0xc2, 0x74, 0xc3, 0xc4, 0xad, 0xa1, 0x98, 0xae, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x0d, 0x33, 0xb4, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0xb4, 0x17, 0x68, 0xb9, 0xc1, 0x82, 0x86, 0xa9, 0x35, 0xd4, 0xf1, 0xc1, 0xcd, 0xe3, 0xf1, 0x6a, 0xa8, 0xe3, 0x83, 0x9b, 0x87, 0x53, 0xec, 0x70, 0x8a, 0xb5, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0xb4, 0x48, 0x68, 0xb9, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0x36, 0x68, 0x1c, 0x72, 0x60, 0xc3, 0x89, 0xb0, 0x41, 0xe3, 0x90, 0x03, 0x1b, 0x2c, 0x66, 0x83, 0x5a, 0x66, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x9e, 0x27, 0xd9, 0xe0, 0xd8, 0xfc, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0xdd, 0x9e, 0x0d, 0x42, 0xca, 0x64, 0x0d, 0x1f, 0xb5, 0x1f, 0x9c, 0x08, 0x40, 0x3b, 0x38, 0xc6, 0x9c, 0x1d, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0xa0, 0x11, 0x8c, 0xff, 0x0d, 0x73, 0xbf, 0x41, 0x8b, 0x88, 0x96, 0x07, 0xad, 0x28, 0xfc, 0x1f, 0xb4, 0x6b, 0x1b, 0xb5, 0xe1, 0x44, 0xd8, 0xa0, 0x79, 0x83, 0xff, 0x0d, 0x16, 0xb3, 0x41, 0x1d, 0xb4, 0xbd, 0x68, 0xb9, 0xe1, 0x44, 0xd8, 0xa0, 0x1d, 0x83, 0xff, 0x35, 0x9c, 0x23, 0x07, 0x6d, 0x22, 0xd9, 0x1f, 0x34, 0xa3, 0xc9, 0xb9, 0xe1, 0x44, 0xd8, 0xa0, 0x19, 0x82, 0xff, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0xf8, 0xc4, 0x66, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x2a, 0x39, 0xd2, 0x0d, 0xcf, 0x93, 0x6c, 0xd0, 0x50, 0x70, 0xe7, 0x41, 0x0b, 0xc3, 0xfd, 0x1b, 0x3e, 0x77, 0xd9, 0xa0, 0x81, 0xe6, 0xce, 0x0d, 0xcf, 0x93, 0x6c, 0xd0, 0x60, 0x72, 0xe7, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0xb7, 0x75, 0x0e, 0xda, 0x77, 0xee, 0x3c, 0x38, 0x80, 0x26, 0x1d, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0xa0, 0xa1, 0xe0, 0xce, 0x83, 0x56, 0xfe, 0x29, 0x0e, 0x5a, 0xf9, 0xa7, 0x38, 0x08, 0x01, 0xf0, 0xe3, 0xd0, 0x71, 0xe8, 0xa0, 0x0d, 0x78, 0xff, 0x61, 0x17, 0x76, 0x83, 0xa2, 0x4a, 0x61, 0x43, 0x0c, 0x87, 0x5d, 0xd8, 0x85, 0xdb, 0xa0, 0x2d, 0x2e, 0xfb, 0x43, 0xb2, 0x63, 0x43, 0x0c, 0x87, 0xdb, 0xa0, 0x35, 0x35, 0xfb, 0x43, 0xb2, 0x63, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x7f, 0x0e, 0x4e, 0x67, 0xc8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x78, 0x0e, 0x4e, 0x67, 0xc8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0xcd, 0x41, 0x9b, 0x7d, 0xa6, 0x1b, 0x2c, 0x68, 0x98, 0x5a, 0x43, 0x31, 0x5d, 0x0d, 0x33, 0xb4, 0x41, 0x33, 0x04, 0xff, 0x1b, 0x4e, 0x84, 0x0d, 0x9a, 0x21, 0xf8, 0xdf, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0xf3, 0x24, 0x1b, 0xb4, 0x06, 0xcb, 0x79, 0xd0, 0xa6, 0xff, 0xe8, 0xc1, 0x31, 0xe6, 0x6c, 0x0d, 0xcf, 0x93, 0x6c, 0xd0, 0x1a, 0x2c, 0xe7, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x90, 0x3a, 0xd8, 0xf0, 0xc6, 0xdd, 0x1c, 0xb4, 0x62, 0xcb, 0x79, 0xd0, 0xa6, 0xff, 0xe8, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x9e, 0x27, 0xd9, 0xa0, 0x39, 0x5c, 0xce, 0x83, 0x46, 0xc2, 0x4a, 0x0f, 0x8e, 0x31, 0x67, 0x6b, 0x78, 0x9e, 0x64, 0x83, 0xe6, 0x70, 0x39, 0x37, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0xd4, 0xc1, 0x86, 0x37, 0xee, 0xe6, 0xa0, 0x79, 0x5f, 0xce, 0x83, 0x46, 0xc2, 0x4a, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0xed, 0x04, 0x73, 0x1e, 0x34, 0x70, 0x53, 0x7a, 0x70, 0x8c, 0x39, 0x5b, 0xc3, 0xf3, 0x24, 0x1b, 0xb4, 0x13, 0xcc, 0xb9, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0xa4, 0x0e, 0x36, 0xbc, 0x71, 0x37, 0x07, 0xed, 0x19, 0x73, 0x1e, 0x34, 0x70, 0x53, 0xba, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0xe7, 0x49, 0x36, 0x68, 0x18, 0x99, 0xf3, 0xa0, 0x21, 0xb4, 0xd2, 0x83, 0x63, 0xcc, 0xd9, 0x1a, 0x9e, 0x27, 0xd9, 0xa0, 0x61, 0x64, 0xce, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x75, 0xb0, 0xe1, 0x8d, 0xbb, 0x39, 0x68, 0xd8, 0x99, 0xf3, 0xa0, 0x21, 0xb4, 0xd2, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x4f, 0xb2, 0x41, 0x0b, 0xd1, 0x9c, 0x07, 0x2d, 0x26, 0x95, 0x1e, 0x1c, 0x63, 0xce, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x2d, 0x44, 0x73, 0x6e, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xa9, 0x83, 0x0d, 0x6f, 0xdc, 0xcd, 0x41, 0x3b, 0xd5, 0x9c, 0x07, 0x2d, 0x26, 0x95, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x79, 0x92, 0x0d, 0x1a, 0xbc, 0xe6, 0x3c, 0x68, 0x89, 0x1e, 0xf4, 0xe0, 0x18, 0x73, 0xb6, 0x86, 0xe7, 0x49, 0x36, 0x68, 0xf0, 0x9a, 0x73, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x48, 0x1d, 0x6c, 0x78, 0xe3, 0x6e, 0x0e, 0x1a, 0xe8, 0xe6, 0x3c, 0x68, 0x89, 0x1e, 0x74, 0xc3, 0xf3, 0x24, 0x1b, 0xb4, 0xf4, 0xcd, 0xb9, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0xa4, 0x0e, 0x36, 0xbc, 0x71, 0x37, 0x07, 0xc1, 0xb2, 0x74, 0xd0, 0x3e, 0x33, 0xe8, 0xc1, 0x4a, 0x3a, 0xfd, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0x9a, 0xc3, 0xe5, 0xdc, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0xa4, 0xe1, 0xff, 0xac, 0xa1, 0x98, 0xae, 0x41, 0x03, 0x67, 0xff, 0x07, 0x0d, 0x23, 0x73, 0x6e, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0x48, 0xf4, 0xff, 0x70, 0x8a, 0x0d, 0xbf, 0xf1, 0x7c, 0xf1, 0xa0, 0xcd, 0x3e, 0xd3, 0x43, 0xb2, 0xe3, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x1f, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0x83, 0x96, 0xa5, 0xec, 0x0f, 0xc9, 0x8e, 0x0d, 0x47, 0xfb, 0xb0, 0x0b, 0xb7, 0x41, 0x73, 0x71, 0xf6, 0x87, 0x64, 0xc7, 0x82, 0x60, 0x41, 0x32, 0xa8, 0x39, 0x38, 0x50, 0x24, 0x1f, 0x34, 0xc5, 0xe9, 0x3f, 0xc8, 0xd6, 0xd0, 0x7e, 0x7d, 0xd8, 0x0d, 0x5a, 0x6d, 0xf4, 0xdf, 0x10, 0xc3, 0x61, 0x37, 0x68, 0x2a, 0xea, 0x7f, 0x43, 0x0c, 0x87, 0xdd, 0xa0, 0x65, 0x48, 0xff, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0x16, 0x27, 0xfd, 0x0f, 0x9a, 0x9b, 0xfa, 0x1f, 0x6e, 0x83, 0x90, 0x02, 0x3f, 0x18, 0xc6, 0xb0, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0x30, 0x9c, 0xff, 0xf0, 0x1b, 0x0c, 0x4c, 0x80, 0xe1, 0x37, 0x18, 0xec, 0x00, 0xc3, 0x2f, 0x88, 0x16, 0xd4, 0x0f, 0xa2, 0x85, 0xdf, 0x20, 0xa4, 0xc0, 0x0f, 0x82, 0x87, 0xfb, 0x20, 0x30, 0xb1, 0x8f, 0xc7, 0xc3, 0x6e, 0xb0, 0x68, 0x50, 0x68, 0x83, 0xf4, 0x2f, 0x85, 0x83, 0x76, 0xf2, 0xfc, 0x07, 0xc1, 0xc2, 0x6e, 0x50, 0xb8, 0x25, 0xad, 0x21, 0x86, 0x8b, 0x07, 0x0d, 0x63, 0x9a, 0x6e, 0x48, 0x76, 0x6c, 0x30, 0x8c, 0x61, 0x0f, 0x42, 0x0a, 0xfc, 0x10, 0xc3, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2d, 0x10, 0xfe, 0x0d, 0x31, 0xdc, 0xa0, 0x38, 0xd4, 0x38, 0x08, 0x29, 0xf0, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0xb6, 0x40, 0x56, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0xd0, 0x0c, 0xd6, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x26, 0xba, 0xfe, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0xdc, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x9b, 0x83, 0x86, 0x31, 0x4d, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xc8, 0x06, 0x0d, 0x9c, 0xfd, 0x1f, 0xb4, 0xc3, 0xf6, 0xbf, 0x61, 0xe2, 0x36, 0x68, 0xe5, 0x9f, 0xe2, 0xa0, 0x55, 0x81, 0xff, 0x83, 0x10, 0x00, 0x3f, 0x0e, 0x1d, 0x87, 0x0e, 0xde, 0x22, 0x00, 0x30, 0xc8, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x34, 0x83, 0xf5, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x89, 0xae, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0xe6, 0xa0, 0x6d, 0x24, 0xd0, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0xdf, 0x60, 0xc1, 0x83, 0xcb, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x6f, 0x50, 0x9a, 0x65, 0x1f, 0xb4, 0xf2, 0x4f, 0xb1, 0x61, 0xee, 0x37, 0x68, 0x3b, 0x7e, 0xf4, 0xa0, 0x95, 0x7f, 0x8a, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0xdf, 0xa0, 0x31, 0x51, 0xd2, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0x5b, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x37, 0x68, 0xb8, 0xc7, 0xf3, 0xa0, 0x6d, 0xdc, 0xfe, 0x0d, 0x73, 0xbf, 0xc1, 0x02, 0xdc, 0xf3, 0x83, 0x26, 0xf6, 0x40, 0x36, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0xb5, 0x31, 0x97, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x61, 0x3a, 0x37, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0x0d, 0x73, 0xbf, 0x41, 0xb8, 0x22, 0x6c, 0x28, 0xa6, 0xab, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xc1, 0xb2, 0x74, 0xd0, 0x66, 0x6e, 0xff, 0x86, 0xb9, 0xdf, 0x20, 0x08, 0x97, 0x36, 0xcc, 0xd0, 0x06, 0x8d, 0x43, 0x0e, 0x6c, 0x38, 0x11, 0x36, 0x68, 0x1c, 0x72, 0x60, 0x83, 0xc5, 0x6c, 0x50, 0xcb, 0x2c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xf3, 0x24, 0x1b, 0x1c, 0xd9, 0x47, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x48, 0x99, 0xac, 0xe1, 0xa3, 0xf6, 0x83, 0x93, 0x9e, 0x68, 0x07, 0xc7, 0x98, 0xb3, 0x83, 0x95, 0x74, 0xfa, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0xce, 0xe3, 0x83, 0x56, 0x38, 0x29, 0x0e, 0xc2, 0x82, 0x69, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x4c, 0xe7, 0xc1, 0xab, 0x4a, 0x00, 0x36, 0x9c, 0x08, 0x1b, 0xbc, 0x66, 0x06, 0xe0, 0xa0, 0x7d, 0x58, 0x8a, 0xc3, 0x79, 0x7c, 0xd0, 0x76, 0xc0, 0xc5, 0x86, 0x13, 0x61, 0x83, 0x07, 0x8b, 0x00, 0x1c, 0xb4, 0xc5, 0x70, 0x71, 0xd0, 0x7c, 0xc3, 0xc5, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x6f, 0xb0, 0x88, 0xbe, 0x6e, 0x43, 0x1d, 0x59, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x4c, 0xe7, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0x04, 0xcb, 0xd2, 0x86, 0x62, 0xba, 0x06, 0x0d, 0x16, 0xfc, 0x1f, 0xb4, 0x9a, 0xca, 0x79, 0xd0, 0xc0, 0xd9, 0xff, 0x86, 0xb9, 0xdf, 0x20, 0x08, 0x97, 0x0e, 0x1a, 0xd2, 0xcf, 0x38, 0x9c, 0xc7, 0x07, 0xad, 0x70, 0x52, 0x6c, 0x38, 0x11, 0x36, 0x78, 0xad, 0x0e, 0xc0, 0x41, 0xfb, 0xb0, 0x14, 0x07, 0x4d, 0xca, 0x52, 0x6c, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0x8d, 0xd7, 0x8f, 0x6e, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x86, 0xe9, 0xdc, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xe1, 0x8a, 0xb0, 0xa1, 0x98, 0xae, 0x41, 0x83, 0x05, 0xff, 0x07, 0xad, 0x71, 0x72, 0x6e, 0xa8, 0x23, 0x1b, 0xbc, 0x6b, 0x07, 0xe0, 0xa0, 0x2d, 0x53, 0x8a, 0xc3, 0x79, 0x7c, 0xd0, 0xec, 0x25, 0xc4, 0x86, 0x13, 0x61, 0x83, 0xa7, 0x15, 0x01, 0x1c, 0xb4, 0xea, 0x0a, 0x71, 0xd0, 0x10, 0x2c, 0xc4, 0x86, 0x89, 0xdb, 0xe0, 0x3d, 0x17, 0x00, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0xbf, 0x41, 0x13, 0xe6, 0xa3, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x61, 0x3a, 0x37, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0x0d, 0x73, 0xbf, 0x41, 0xb8, 0x22, 0x1c, 0xb4, 0x99, 0xdb, 0x7f, 0x38, 0x8f, 0x0f, 0xda, 0x0e, 0xb8, 0xd8, 0x70, 0x22, 0x6c, 0xf0, 0x20, 0x28, 0x80, 0x83, 0xb6, 0x18, 0x2e, 0x0e, 0x9a, 0x6f, 0xb8, 0xd8, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0x0d, 0xda, 0x07, 0x1f, 0x3d, 0x68, 0x45, 0xe1, 0x7f, 0xc3, 0x0c, 0x6d, 0xd0, 0x60, 0xc1, 0xff, 0x86, 0x13, 0x61, 0x83, 0x06, 0x0b, 0xfe, 0x37, 0x58, 0xcc, 0x06, 0x75, 0xd0, 0x3c, 0x83, 0xe7, 0x86, 0x13, 0x61, 0x83, 0xf7, 0x74, 0x00, 0x6c, 0xb0, 0x98, 0x0d, 0xea, 0xa0, 0x75, 0x06, 0xd2, 0x83, 0x16, 0x6b, 0x4e, 0x0f, 0x1e, 0xf6, 0x01, 0x70, 0x10, 0x02, 0xe0, 0xc7, 0xa1, 0xe3, 0xd0, 0x41, 0x43, 0x6d, 0xfe, 0x2b, 0x08, 0x36, 0x68, 0xe3, 0xd5, 0x7e, 0x71, 0xd8, 0x85, 0xdb, 0xa0, 0x45, 0x5b, 0xfb, 0x43, 0xea, 0x60, 0x41, 0xb0, 0x41, 0x8a, 0x2a, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x2f, 0x48, 0x86, 0x39, 0x18, 0x8e, 0xd2, 0x07, 0x23, 0x24, 0xea, 0x38, 0x34, 0xec, 0xc2, 0x6d, 0xd0, 0x14, 0xaa, 0xfd, 0x21, 0x75, 0xb0, 0x20, 0xd8, 0x20, 0x45, 0x95, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x78, 0xd5, 0x18, 0xc0, 0xc1, 0x58, 0x86, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x6e, 0x83, 0x36, 0x5e, 0xed, 0x0f, 0xa9, 0x83, 0x41, 0xb0, 0x41, 0x8a, 0x2a, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x78, 0xd5, 0x18, 0xc0, 0x20, 0x19, 0x68, 0xdf, 0x75, 0x3c, 0x1e, 0x24, 0x43, 0x0e, 0xda, 0x9e, 0x63, 0x39, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x8b, 0x1b, 0x56, 0x68, 0x37, 0x18, 0x63, 0x68, 0x1b, 0x8c, 0x31, 0xb4, 0x83, 0x31, 0x86, 0xb6, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x52, 0x07, 0x87, 0xf5, 0x89, 0x61, 0x37, 0x08, 0x2d, 0xf7, 0x05, 0xc1, 0xc2, 0x6e, 0x70, 0x2a, 0x47, 0x5e, 0x43, 0x0c, 0x17, 0x0f, 0x9a, 0x99, 0x36, 0x3d, 0x24, 0x66, 0x0e, 0x31, 0x1c, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0xf0, 0x1b, 0xcf, 0x07, 0xd1, 0x02, 0xe1, 0x3f, 0x58, 0x0a, 0xeb, 0x73, 0x58, 0xa1, 0x1d, 0x64, 0x6b, 0xd0, 0x16, 0xc8, 0xca, 0x86, 0x18, 0x0e, 0x82, 0x05, 0xc9, 0x40, 0xfa, 0xe7, 0xe0, 0x5c, 0x7f, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x84, 0xe7, 0xe0, 0x5c, 0x7f, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x1c, 0x34, 0x33, 0x6d, 0x7a, 0xd0, 0xc4, 0x1e, 0xc8, 0x41, 0x08, 0x80, 0x1f, 0x87, 0x8e, 0x43, 0x07, 0xef, 0xbb, 0x03, 0x18, 0x04, 0x0b, 0x82, 0x0d, 0x06, 0x6b, 0xec, 0x06, 0x21, 0x05, 0x3e, 0x08, 0x36, 0x08, 0x01, 0xf0, 0x83, 0x91, 0xa6, 0x35, 0x88, 0x16, 0xb4, 0x0f, 0x82, 0x05, 0xc9, 0x06, 0x45, 0x7d, 0xce, 0xc1, 0x31, 0x63, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x83, 0x21, 0xfe, 0x71, 0x70, 0xcc, 0x58, 0x3e, 0x18, 0xc6, 0x0e, 0x07, 0x8d, 0xd2, 0xb1, 0x1c, 0x87, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x64, 0xf1, 0x07, 0x83, 0x35, 0xf6, 0x90, 0xad, 0x38, 0x1e, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0x7e, 0xdd, 0xc1, 0x39, 0xef, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x20, 0xbb, 0x77, 0x70, 0x3a, 0x43, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x82, 0x64, 0x98, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x06, 0xce, 0xae, 0xe3, 0xf1, 0x21, 0xd1, 0x7a, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x19, 0x94, 0xfb, 0xc5, 0x61, 0x17, 0x6e, 0x83, 0x86, 0x13, 0xed, 0x0f, 0x8d, 0x04, 0x37, 0xa4, 0x0e, 0x86, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0xf2, 0x2b, 0x07, 0xa7, 0x0d, 0xe5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xac, 0xdd, 0xc1, 0x99, 0x71, 0xf9, 0x38, 0xb4, 0x20, 0x5a, 0xe8, 0xb8, 0xc1, 0xc0, 0xf4, 0x38, 0x68, 0xed, 0xa2, 0xf3, 0x90, 0x3a, 0x38, 0xa4, 0x0e, 0x8e, 0xc7, 0xc7, 0xa1, 0x85, 0x5d, 0xd8, 0x85, 0xdb, 0xa0, 0x45, 0x5b, 0xfb, 0x43, 0xfc, 0x37, 0xc4, 0x70, 0xd8, 0x0d, 0x9a, 0x76, 0xe9, 0xdf, 0x10, 0xc3, 0x83, 0x06, 0x64, 0xfa, 0x17, 0x04, 0x0b, 0x92, 0x0d, 0x86, 0xf8, 0xc7, 0xc1, 0x39, 0xef, 0xf8, 0xa0, 0x21, 0x32, 0x81, 0x41, 0xb0, 0xb0, 0x1b, 0x34, 0x50, 0xd3, 0xbf, 0x18, 0x7c, 0x1d, 0x3b, 0xec, 0x06, 0xcd, 0xec, 0xf4, 0x2f, 0x06, 0xff, 0xc6, 0x0e, 0xbb, 0x41, 0x03, 0x38, 0xfd, 0x8b, 0xc1, 0xb3, 0xa5, 0xc3, 0x6e, 0xd0, 0x8c, 0x4f, 0xff, 0xe2, 0x61, 0xd1, 0x6a, 0x90, 0x6d, 0xd0, 0x6a, 0x50, 0xff, 0x78, 0xd0, 0x1a, 0x36, 0xe7, 0x1a, 0x9c, 0x0b, 0xb1, 0x07, 0xc1, 0x82, 0x64, 0x83, 0x21, 0xfe, 0x71, 0x70, 0xae, 0x3f, 0x3e, 0x68, 0x3d, 0x3f, 0xe4, 0x10, 0xc3, 0x85, 0xdf, 0xe0, 0xb4, 0x82, 0x3b, 0xec, 0x06, 0x05, 0x17, 0xc3, 0x82, 0x60, 0xe1, 0x37, 0x68, 0xcd, 0x55, 0x65, 0x10, 0x2c, 0x0e, 0xbb, 0xc1, 0xc8, 0x27, 0x5f, 0x90, 0x0c, 0xee, 0x1d, 0xcf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xd0, 0x83, 0xf5, 0x90, 0x30, 0xc7, 0xe3, 0xe3, 0xdb, 0x86, 0xac, 0xdd, 0x86, 0x18, 0x6e, 0x1c, 0x3a, 0xe4, 0x65, 0x07, 0xd9, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0x21, 0x86, 0x83, 0x60, 0x41, 0x32, 0x90, 0xfe, 0x39, 0x38, 0x66, 0x15, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x90, 0x6c, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x39, 0x68, 0xc2, 0x7c, 0xf4, 0xe0, 0x85, 0x4f, 0x00, 0x8b, 0x07, 0x4d, 0x98, 0x8f, 0x1e, 0x0c, 0xde, 0xc9, 0xe3, 0xd0, 0x71, 0x68, 0x83, 0x61, 0x0c, 0x7b, 0x88, 0xe1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0x35, 0x07, 0xa7, 0x0d, 0xe5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0x41, 0xa3, 0x74, 0x2c, 0xc7, 0xa1, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0xc1, 0x39, 0xf8, 0x7b, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0xf0, 0xe5, 0xe0, 0x98, 0xb1, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xf9, 0x34, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x04, 0xd9, 0xff, 0xc3, 0x5e, 0xe1, 0x71, 0xe8, 0x38, 0xb4, 0x20, 0x58, 0xd8, 0x0d, 0x4e, 0xe5, 0xc8, 0x6b, 0x88, 0xe1, 0xe2, 0x41, 0x03, 0xf3, 0xa7, 0x1b, 0x8c, 0x56, 0xf3, 0x8d, 0x43, 0x1b, 0x34, 0x4a, 0xc7, 0x72, 0x48, 0xd5, 0x1c, 0x62, 0x38, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0xe1, 0x37, 0x9e, 0x0f, 0xa2, 0x05, 0xc2, 0xbf, 0x21, 0x86, 0x1b, 0x94, 0x30, 0x12, 0x87, 0x54, 0xcd, 0x20, 0x5a, 0x20, 0xfa, 0x87, 0x54, 0xcd, 0x61, 0x85, 0x76, 0x90, 0xad, 0x41, 0x5b, 0x20, 0x2b, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x78, 0xaa, 0x1e, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x67, 0xf4, 0x01, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x37, 0x07, 0x0d, 0xcc, 0x9f, 0x6e, 0x98, 0xb8, 0x0d, 0x5e, 0xbc, 0x00, 0xb0, 0x61, 0xe2, 0x36, 0x68, 0xe5, 0x9f, 0x62, 0xc3, 0xc4, 0x6d, 0xd0, 0xca, 0x3f, 0xc5, 0x41, 0x2b, 0xff, 0x14, 0x07, 0x21, 0x00, 0x7e, 0x1c, 0x3a, 0x0e, 0x1d, 0x3c, 0x90, 0x19, 0x60, 0xf8, 0x05, 0xd1, 0x82, 0xfc, 0x60, 0x3d, 0xab, 0xcb, 0xf1, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x54, 0xff, 0x41, 0xb0, 0x41, 0xf2, 0x69, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf7, 0x1a, 0x03, 0x1c, 0x52, 0x07, 0xc7, 0xa1, 0xe3, 0xf9, 0xf1, 0x78, 0x61, 0x37, 0x08, 0x3e, 0xe6, 0x8d, 0xc7, 0xc3, 0x6e, 0xd0, 0x8c, 0x4f, 0xff, 0xc2, 0x2f, 0x88, 0x16, 0xb4, 0x0f, 0xbb, 0xc1, 0x20, 0xe0, 0xd8, 0xb0, 0xf6, 0xbb, 0x41, 0x43, 0x9d, 0xfc, 0x87, 0xb5, 0xdf, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0x90, 0xb0, 0x95, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0xf0, 0x6b, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x37, 0x68, 0xfa, 0xfe, 0x7e, 0x35, 0xc4, 0x70, 0x0d, 0x31, 0x1c, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x04, 0x6b, 0x48, 0xd5, 0x8c, 0x07, 0xcd, 0x23, 0xa1, 0x1e, 0xac, 0x66, 0x00, 0x3a, 0xbe, 0x1d, 0x62, 0x78, 0x88, 0xe1, 0x21, 0x86, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0x19, 0xa8, 0x7f, 0x83, 0x68, 0x81, 0xe8, 0x0f, 0x82, 0x0d, 0x8e, 0xb4, 0xc9, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xd6, 0xa9, 0x34, 0x1c, 0x1c, 0x88, 0xf8, 0x8f, 0x43, 0x83, 0x68, 0x41, 0xfb, 0x20, 0x58, 0x90, 0x6c, 0x50, 0xd4, 0xe7, 0x1c, 0x9c, 0xeb, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0x07, 0x21, 0xe2, 0x7f, 0x1c, 0x1a, 0x44, 0x0b, 0xe2, 0x43, 0x0c, 0x8f, 0xe7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0xb0, 0xf4, 0xbd, 0xef, 0xe0, 0x9c, 0x77, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x61, 0x2b, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6f, 0x09, 0x05, 0x38, 0x58, 0x87, 0xca, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x68, 0x39, 0x38, 0xe7, 0x1d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x82, 0x60, 0x41, 0x32, 0x90, 0x5e, 0x39, 0x38, 0x6d, 0x28, 0x1f, 0x3c, 0xda, 0x0d, 0xe0, 0x20, 0xa1, 0xec, 0x64, 0xf8, 0x8d, 0xe7, 0x07, 0x8f, 0x4d, 0x07, 0x38, 0x0e, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x58, 0xd8, 0x0d, 0x1a, 0xcb, 0xfe, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0x94, 0xfe, 0x5d, 0x07, 0xa7, 0x33, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0x5f, 0x90, 0x0c, 0x73, 0x30, 0xfc, 0x63, 0x0f, 0x96, 0xa8, 0x77, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0xaf, 0x2a, 0x08, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0x9e, 0x7d, 0x10, 0x30, 0x48, 0x06, 0xe6, 0xea, 0x78, 0x7c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x43, 0x0b, 0xa0, 0xe3, 0xd0, 0x71, 0x68, 0xd8, 0x0d, 0x42, 0xcb, 0x7d, 0x41, 0xb0, 0xb0, 0x1b, 0x9c, 0x65, 0x8f, 0xd7, 0x10, 0xc3, 0xc5, 0x83, 0x86, 0x57, 0x4b, 0x37, 0x08, 0x52, 0xfc, 0x43, 0xea, 0xe0, 0x10, 0xc3, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6d, 0xf0, 0x12, 0x3c, 0x80, 0x43, 0x72, 0x69, 0x90, 0xad, 0x41, 0x5b, 0x20, 0x2b, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x68, 0xcb, 0xaa, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x3b, 0x5b, 0xfd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0xcd, 0x41, 0xc3, 0xab, 0xa5, 0x1b, 0x26, 0x6e, 0x0d, 0x16, 0x34, 0x4c, 0x6d, 0xd0, 0x8c, 0xd9, 0xff, 0x6a, 0x28, 0xa6, 0x6b, 0xd0, 0xc0, 0xd9, 0xff, 0x41, 0x4b, 0xdf, 0x9c, 0x1b, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x5a, 0x2d, 0xfe, 0x9f, 0x35, 0x14, 0xd3, 0x35, 0x68, 0xe0, 0xec, 0xff, 0xa0, 0x9d, 0x60, 0xce, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xad, 0x51, 0xfe, 0x1f, 0x4e, 0xb1, 0x0d, 0x5a, 0x6f, 0xfe, 0x5f, 0x0d, 0xc5, 0x74, 0x0d, 0x1a, 0x38, 0xfb, 0x3f, 0x68, 0xf0, 0x9a, 0x73, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xf3, 0xbd, 0xff, 0x87, 0x53, 0x6c, 0x0d, 0xc5, 0x74, 0x0d, 0x1a, 0x38, 0xfb, 0x3f, 0x68, 0x0d, 0x96, 0x73, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xbb, 0x78, 0xff, 0x87, 0x53, 0xec, 0xa0, 0x89, 0x3d, 0x90, 0x83, 0x10, 0x00, 0x3f, 0x0e, 0x1d, 0x87, 0x0e, 0xde, 0x36, 0x11, 0x30, 0xfc, 0x82, 0x68, 0x41, 0xfb, 0x20, 0x58, 0x90, 0x6c, 0x50, 0xd4, 0xe7, 0x1c, 0x1c, 0x28, 0x92, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3a, 0xa9, 0x1d, 0x0c, 0x63, 0xd8, 0xe3, 0xd0, 0x20, 0xda, 0xe0, 0x6d, 0xf5, 0x00, 0x87, 0xe4, 0xd2, 0xb0, 0x1b, 0x34, 0x20, 0xd3, 0xbf, 0xc1, 0x02, 0x0f, 0xaf, 0xe3, 0xf1, 0xb0, 0x1b, 0x04, 0x17, 0xf6, 0xc6, 0xe3, 0x41, 0xb4, 0xc1, 0x4a, 0x9e, 0x9d, 0x41, 0xb4, 0x60, 0xbe, 0x41, 0x09, 0x23, 0x31, 0x08, 0x36, 0x58, 0xfd, 0x29, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xab, 0x7b, 0x61, 0x0e, 0x4a, 0x4e, 0x89, 0xe3, 0xd0, 0xf1, 0xf8, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0x83, 0x92, 0xa1, 0xe9, 0x60, 0x61, 0x85, 0xd9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x82, 0x5a, 0x6c, 0x71, 0x10, 0x6c, 0xb0, 0x7a, 0x99, 0x6b, 0x90, 0x0c, 0x84, 0xef, 0xd0, 0xbe, 0xe5, 0x78, 0x7c, 0x1c, 0x1a, 0x64, 0x1b, 0xe2, 0x32, 0x08, 0x16, 0x24, 0x03, 0xc5, 0xed, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x05, 0xc9, 0xc0, 0xfa, 0xdf, 0xf1, 0xf8, 0xf8, 0xb6, 0x38, 0xec, 0xc2, 0x2d, 0x1e, 0xac, 0x92, 0x23, 0x3d, 0x34, 0x12, 0x5c, 0xd8, 0x85, 0xdb, 0xa0, 0xa9, 0xa2, 0xf9, 0x43, 0x34, 0x37, 0xc4, 0x70, 0x43, 0x0c, 0x37, 0x58, 0xaf, 0xdc, 0xb4, 0x21, 0x9a, 0x07, 0x41, 0xe9, 0x3d, 0xec, 0xc2, 0x2d, 0x1e, 0x9c, 0x0e, 0x26, 0x0f, 0x8d, 0x04, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xfd, 0xba, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xc5, 0xcc, 0x39, 0x83, 0x64, 0x98, 0x43, 0x72, 0x6e, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x37, 0x58, 0x2a, 0xaf, 0x74, 0x30, 0x08, 0x59, 0x8e, 0xc7, 0xc7, 0xa1, 0x61, 0x17, 0x6e, 0xf1, 0x60, 0xb5, 0x16, 0xed, 0xa1, 0x91, 0xe0, 0x1a, 0x62, 0x78, 0xf0, 0x3a, 0xa3, 0x80, 0x41, 0xb6, 0x86, 0xf6, 0xeb, 0xc3, 0x2d, 0x1e, 0xac, 0xf4, 0x1f, 0x3d, 0x34, 0x12, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0x16, 0x33, 0xe7, 0x0c, 0x92, 0x81, 0xf8, 0x1d, 0x92, 0x73, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x37, 0xc4, 0x70, 0x43, 0x0c, 0x37, 0x58, 0xd4, 0xba, 0xb4, 0x41, 0x08, 0x80, 0x1f, 0x3a, 0x86, 0x1d, 0x8f, 0x8f, 0x43, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x2e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdd, 0xb0, 0x57, 0xb8, 0x41, 0xc2, 0xa7, 0xc0, 0xc1, 0xea, 0x5e, 0x98, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xf1, 0xca, 0x75, 0x30, 0xde, 0x75, 0x0e, 0x9a, 0x62, 0xd9, 0x5f, 0x41, 0xb0, 0x41, 0xeb, 0xb2, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x28, 0xa8, 0xc5, 0x0e, 0xc6, 0xae, 0xd5, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0xfc, 0xaa, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x2c, 0x66, 0x8e, 0x1a, 0x7e, 0xe3, 0xf9, 0x41, 0xca, 0x6f, 0xc5, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0x90, 0xf2, 0x5b, 0x31, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xfc, 0x3b, 0x1e, 0x1f, 0x2c, 0x4a, 0x27, 0x39, 0x68, 0x7e, 0x5a, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x48, 0x06, 0xe2, 0x35, 0x88, 0x16, 0xcc, 0x0f, 0x47, 0xfb, 0xf1, 0xf8, 0xe0, 0x01, 0x5c, 0x01, 0x07, 0xcd, 0x4f, 0xeb, 0x1f, 0x87, 0x56, 0x10, 0x6c, 0xd0, 0xba, 0xac, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xce, 0x91, 0xbd, 0x8b, 0x6b, 0x30, 0x7e, 0xba, 0x06, 0xc1, 0x06, 0x6b, 0xda, 0x21, 0x0e, 0x16, 0xa4, 0xec, 0x1c, 0x04, 0xa5, 0xf7, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0x70, 0x78, 0xa7, 0x1d, 0x04, 0x0b, 0xbf, 0xf1, 0xfc, 0xe0, 0x70, 0x5d, 0x7b, 0xb0, 0x28, 0x9d, 0x64, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x64, 0x06, 0x8b, 0x83, 0x45, 0xe9, 0x24, 0xc7, 0xa1, 0x15, 0x04, 0x0b, 0x92, 0x81, 0xd2, 0x75, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x20, 0x71, 0xbf, 0x67, 0xf8, 0x8d, 0xe7, 0x8b, 0x83, 0x6c, 0x43, 0x5c, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0x32, 0x20, 0xf4, 0xbb, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb1, 0xe1, 0x3a, 0xfc, 0xc6, 0xf3, 0xd5, 0x10, 0xc3, 0x35, 0xc4, 0x70, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xf1, 0xe0, 0x0d, 0xeb, 0x00, 0xc7, 0xb7, 0x43, 0x0c, 0x0f, 0x31, 0x3c, 0xc4, 0xf0, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xde, 0xae, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x6c, 0xb8, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x1e, 0x1e, 0x18, 0x70, 0x90, 0xa2, 0xfc, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0x69, 0xb5, 0x83, 0x20, 0xe7, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0xfe, 0x1d, 0xcf, 0x07, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0x62, 0x10, 0x2c, 0x48, 0x06, 0xca, 0xdb, 0xc1, 0x30, 0xf4, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x28, 0xff, 0xa9, 0x0e, 0x86, 0xa1, 0xcf, 0x71, 0xe8, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0xf8, 0xa0, 0x3d, 0x3b, 0xfd, 0xe3, 0xd0, 0xc1, 0x5a, 0x98, 0x92, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcf, 0x46, 0x0c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x67, 0x23, 0x06, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x78, 0x10, 0x40, 0xac, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xc6, 0xbb, 0xda, 0x41, 0x90, 0xf3, 0x1f, 0x87, 0x06, 0xc1, 0x06, 0x6f, 0xac, 0x0c, 0x38, 0x68, 0x4f, 0x3b, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb2, 0xc1, 0x62, 0x2f, 0x92, 0x83, 0x61, 0xe8, 0x73, 0xd0, 0x9e, 0x76, 0xfe, 0x71, 0xe8, 0x60, 0x2d, 0x4c, 0xc9, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x67, 0x23, 0x06, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x1b, 0xae, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x64, 0x60, 0xac, 0x8e, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0x81, 0xce, 0x75, 0x30, 0x0c, 0x7d, 0x0e, 0xda, 0xd3, 0xce, 0x3f, 0x0e, 0x1d, 0xac, 0x85, 0x29, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x6c, 0xc4, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xc3, 0x75, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x40, 0xf0, 0x57, 0x1d, 0xcf, 0x8f, 0x43, 0x07, 0x6b, 0x61, 0x4a, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x3c, 0x1b, 0x31, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0x41, 0x49, 0xfd, 0x77, 0x1c, 0x3a, 0x58, 0x0b, 0x53, 0x32, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xd9, 0x88, 0x01, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x19, 0xdc, 0x3a, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xda, 0x57, 0x1d, 0xcf, 0x0f, 0xda, 0xb3, 0xd3, 0x3f, 0x0e, 0x1d, 0xac, 0x85, 0x29, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x6c, 0xc4, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xc3, 0x75, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0x0e, 0x26, 0xfa, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xf3, 0xea, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xb0, 0x5d, 0x75, 0x3c, 0x3f, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x12, 0xff, 0xbb, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xa0, 0x81, 0xf6, 0xfc, 0xe3, 0xd0, 0x41, 0x7b, 0xda, 0xf9, 0xc7, 0xa1, 0x83, 0xb5, 0x30, 0x25, 0xc7, 0xe3, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0xd6, 0x65, 0xdd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0xa0, 0xa9, 0x47, 0x81, 0x83, 0x83, 0x56, 0xef, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x16, 0x9f, 0xf7, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0x69, 0xba, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x45, 0xd5, 0xfd, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0x72, 0xbd, 0xeb, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x28, 0x7f, 0xbb, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x63, 0xd0, 0x2c, 0xe0, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0x70, 0xf8, 0xb5, 0x1d, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x2c, 0x57, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0x62, 0x10, 0x6c, 0xd0, 0x8a, 0xb1, 0xfb, 0x41, 0x03, 0xe2, 0xfc, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0xb4, 0x20, 0xd8, 0xa0, 0x75, 0x59, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x2d, 0xba, 0xe2, 0x0f, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xad, 0xcb, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x33, 0x57, 0x73, 0xf0, 0x5c, 0x9b, 0x80, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd6, 0x65, 0xdd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x6a, 0x88, 0xe1, 0x1a, 0x62, 0x38, 0x08, 0x36, 0x58, 0xc1, 0x10, 0x71, 0x68, 0xd4, 0x72, 0x88, 0xe1, 0x21, 0x86, 0x87, 0x18, 0x1e, 0x8f, 0x0f, 0x1a, 0xa5, 0xd8, 0x3f, 0x0e, 0x1d, 0x34, 0x3f, 0xad, 0x3f, 0x08, 0x36, 0x58, 0x03, 0xab, 0x76, 0xd0, 0xfc, 0xb4, 0xfe, 0x71, 0x68, 0x05, 0xc1, 0x06, 0xad, 0xcb, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x76, 0xc3, 0xae, 0xc1, 0x86, 0x68, 0x1e, 0xbc, 0xce, 0x28, 0xe0, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x2b, 0xf6, 0xfa, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x5f, 0x75, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc9, 0x80, 0xf4, 0x7d, 0xaa, 0x83, 0xf1, 0xae, 0x33, 0x08, 0x36, 0x68, 0x4d, 0x8e, 0xff, 0xa0, 0x29, 0x96, 0xfd, 0xe3, 0xd0, 0x41, 0xf3, 0xd3, 0xfa, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x1f, 0x3c, 0xc9, 0x3f, 0xe0, 0x60, 0x51, 0x3a, 0xc9, 0x71, 0x68, 0x10, 0x6c, 0xd0, 0xba, 0xac, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x16, 0x5d, 0xf1, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xed, 0x7f, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbb, 0x21, 0x75, 0xb0, 0xc1, 0x52, 0xcf, 0x9d, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xda, 0x04, 0xe5, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x3c, 0xec, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0x83, 0xe6, 0x5d, 0x55, 0x8f, 0x43, 0x07, 0xed, 0x03, 0xeb, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x98, 0xae, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6e, 0xd8, 0x2b, 0xdc, 0x60, 0xa9, 0xe7, 0xce, 0x41, 0x2b, 0x4b, 0xfc, 0x07, 0xed, 0x03, 0xeb, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xfe, 0xe7, 0x3a, 0x18, 0xef, 0x3a, 0x07, 0xed, 0x03, 0xeb, 0x0f, 0x82, 0x0d, 0xda, 0x23, 0xe5, 0x3f, 0x68, 0x1f, 0x58, 0xff, 0xa0, 0xf9, 0x69, 0xfd, 0x41, 0xb0, 0xc1, 0x2a, 0x0f, 0xa9, 0x83, 0xe6, 0xa7, 0xf5, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0x41, 0x32, 0x50, 0xff, 0x0e, 0xc6, 0xbb, 0xce, 0xc1, 0xea, 0x34, 0xb6, 0x41, 0xb0, 0x41, 0x43, 0x56, 0xfc, 0x07, 0xcd, 0x4f, 0xeb, 0x0f, 0x82, 0x0d, 0xda, 0x23, 0xe5, 0x3f, 0x68, 0x7e, 0x5a, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x48, 0x76, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0x83, 0x26, 0x25, 0x55, 0x8f, 0x6f, 0xc7, 0xa1, 0x83, 0xe6, 0xa7, 0xf5, 0x0f, 0x9a, 0xa0, 0xe5, 0x3f, 0x68, 0x7e, 0x5a, 0xff, 0x38, 0x74, 0x1c, 0x5a, 0x10, 0x6c, 0xd0, 0xba, 0xac, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xfc, 0xd5, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x20, 0xd8, 0xbb, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x16, 0xd3, 0xf9, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xcd, 0xaf, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x1b, 0xae, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xc6, 0xbb, 0xda, 0x21, 0x5b, 0x71, 0x1c, 0x1a, 0x04, 0x1b, 0x9c, 0x4d, 0x7a, 0x0f, 0x9a, 0x9f, 0xd6, 0x3f, 0x0e, 0x1d, 0x87, 0x16, 0x04, 0x1b, 0xb4, 0x2e, 0xeb, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x62, 0xea, 0x60, 0xec, 0x5a, 0x0d, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x1f, 0x24, 0xcb, 0x4f, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xcf, 0xc3, 0x0e, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x3c, 0x68, 0x4d, 0xb9, 0xf3, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x79, 0xd8, 0x01, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x8f, 0x07, 0x4d, 0x9c, 0xab, 0x1e, 0x87, 0x0e, 0x9a, 0x9f, 0xd6, 0x3f, 0x58, 0x94, 0x4e, 0x72, 0x1c, 0x5a, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x10, 0xc3, 0x41, 0xb0, 0x20, 0x19, 0x58, 0xaf, 0x3b, 0x38, 0x09, 0x1d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x78, 0xd0, 0x56, 0xbe, 0xea, 0x20, 0x58, 0x1c, 0x04, 0x0b, 0x92, 0x01, 0x85, 0x7a, 0xdf, 0xc1, 0x31, 0xab, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x20, 0xbd, 0x73, 0x30, 0x1c, 0xa5, 0x0f, 0x96, 0x5b, 0x81, 0x0d, 0xbf, 0xf1, 0x7c, 0xd8, 0x0d, 0x2b, 0xa8, 0x1b, 0x62, 0xb8, 0x41, 0x42, 0xd9, 0xc9, 0xc1, 0x8a, 0x05, 0x9d, 0xe3, 0xd0, 0xf1, 0xed, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0xbc, 0x6d, 0x2f, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x5b, 0xfa, 0x02, 0x86, 0xdf, 0x78, 0xbe, 0x38, 0xc8, 0x36, 0xc4, 0x65, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x9e, 0x8d, 0x18, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x1f, 0x24, 0x83, 0xde, 0x0f, 0x82, 0x0d, 0xde, 0x0e, 0x19, 0x70, 0xd0, 0x9e, 0x9d, 0xfe, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xe7, 0xbd, 0x02, 0x1c, 0xac, 0x85, 0x29, 0x39, 0x1e, 0x1f, 0x87, 0x16, 0x04, 0x1b, 0xb4, 0x2e, 0xeb, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x45, 0x57, 0xfc, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xfc, 0x76, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6d, 0x9a, 0xee, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x82, 0x60, 0x83, 0xe7, 0x61, 0x07, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x1e, 0xb4, 0xa1, 0xb5, 0x7a, 0x1c, 0x3a, 0x78, 0x16, 0x83, 0xc0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xad, 0xcb, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0xd1, 0xab, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x60, 0xbb, 0x6a, 0x10, 0x2d, 0xec, 0xe1, 0x68, 0x3f, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0x4d, 0xd3, 0xfd, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x0d, 0x29, 0xf1, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xba, 0xac, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc7, 0xa6, 0x09, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x6c, 0x57, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcf, 0xc3, 0x0e, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0c, 0x34, 0x11, 0x11, 0x71, 0x1c, 0x3a, 0x68, 0x1f, 0x58, 0xff, 0xa0, 0xf9, 0x69, 0xfd, 0xe3, 0xd0, 0x20, 0xd8, 0xa0, 0x75, 0x59, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x24, 0xee, 0xf7, 0x2c, 0x0e, 0xbb, 0x21, 0x8f, 0xb5, 0x06, 0xcb, 0x7a, 0x91, 0x0e, 0xe3, 0x32, 0xc8, 0x36, 0x68, 0xe9, 0x0c, 0x66, 0x83, 0x75, 0xf8, 0x4c, 0x87, 0x71, 0x39, 0x1e, 0x1f, 0x9c, 0x4d, 0x7a, 0x8f, 0x43, 0x0b, 0xbb, 0x61, 0xaf, 0x70, 0x41, 0xb0, 0x41, 0xeb, 0xb2, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x5a, 0x74, 0xc5, 0x1f, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x6d, 0x9a, 0xee, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x06, 0x8d, 0xa9, 0xf3, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0x32, 0x60, 0xbc, 0x53, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0xb0, 0x41, 0x8b, 0xe9, 0xfc, 0x07, 0x8b, 0xd2, 0x49, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xd6, 0xab, 0x8e, 0xc7, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0xba, 0xac, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xf3, 0xea, 0xe0, 0xb5, 0x6d, 0x01, 0x07, 0x6f, 0x9c, 0x13, 0x38, 0x0e, 0x0d, 0x82, 0x0d, 0x1a, 0xf0, 0xd5, 0x3f, 0x68, 0x8a, 0x65, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x16, 0x0e, 0xf8, 0x0f, 0x9a, 0x62, 0xd9, 0x3f, 0x68, 0x7e, 0x5a, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x48, 0x06, 0xce, 0xaa, 0x83, 0xd7, 0xb6, 0x05, 0x1c, 0x3c, 0x7f, 0x52, 0xe0, 0xa0, 0xf9, 0x69, 0xfd, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0d, 0x85, 0xeb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x07, 0xef, 0xe1, 0x0a, 0x38, 0x0e, 0x1d, 0x34, 0x3f, 0xad, 0x7f, 0x1c, 0x3a, 0x9c, 0x62, 0x0b, 0x82, 0x0d, 0x5a, 0x97, 0x75, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0xa2, 0x2b, 0xfe, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xad, 0xcb, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x78, 0x90, 0x8a, 0xc0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6d, 0x9a, 0xee, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x51, 0x75, 0x7f, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xa7, 0x57, 0x07, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0xc0, 0x57, 0x7f, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x40, 0xe8, 0x57, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x85, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0xee, 0xaf, 0x83, 0x63, 0x56, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0x8d, 0x5f, 0x9e, 0x1f, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0xc7, 0xb7, 0xe1, 0x17, 0x7e, 0x41, 0x32, 0x20, 0xd8, 0xe5, 0x0e, 0x86, 0x7f, 0xec, 0x41, 0xc9, 0xd0, 0x74, 0x7c, 0x1b, 0x04, 0x8b, 0xc3, 0x6e, 0x30, 0x36, 0x39, 0x17, 0x7e, 0x41, 0xb4, 0x20, 0x1c, 0x76, 0x83, 0x81, 0x48, 0xbd, 0x06, 0x47, 0x9e, 0xe2, 0x41, 0xb0, 0x38, 0xec, 0x86, 0xb5, 0xd0, 0x0d, 0x59, 0xbb, 0x61, 0x17, 0x6e, 0x83, 0x84, 0xb2, 0x93, 0x83, 0xe2, 0x50, 0x63, 0x83, 0xb2, 0x1f, 0xeb, 0x90, 0xb5, 0x3b, 0xbe, 0x1d, 0xa2, 0x79, 0x3c, 0x1e, 0x76, 0x43, 0x1e, 0x6b, 0xc3, 0xb8, 0xac, 0x86, 0x18, 0xae, 0x21, 0x86, 0x83, 0x60, 0x41, 0xb2, 0xc1, 0x10, 0xff, 0x38, 0x38, 0x7b, 0x19, 0x1f, 0xd2, 0x70, 0x87, 0x18, 0x1e, 0x62, 0x78, 0x18, 0x97, 0x61, 0x17, 0x76, 0xa1, 0x87, 0xf8, 0x1f, 0xd6, 0x37, 0x17, 0x24, 0x43, 0x06, 0xd1, 0x06, 0xa5, 0xf2, 0xd6, 0x20, 0x5a, 0x10, 0x6e, 0x88, 0xff, 0x21, 0x9a, 0xc7, 0xe3, 0x61, 0x37, 0xe4, 0xb1, 0xd6, 0x10, 0xff, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x50, 0x2a, 0x6f, 0x0d, 0xa2, 0x0d, 0xda, 0xf9, 0x0a, 0x38, 0x1e, 0x6f, 0xf0, 0x4a, 0x5d, 0x81, 0x83, 0xc7, 0x07, 0x0b, 0x1c, 0xdf, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x5a, 0xfb, 0xdf, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x44, 0xee, 0x80, 0x41, 0xb0, 0xc1, 0x5b, 0xbb, 0x03, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0x62, 0x10, 0x6c, 0xd0, 0x8a, 0xb1, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xa0, 0xc5, 0x74, 0xfe, 0xe3, 0xd0, 0xc1, 0x4a, 0x7c, 0x91, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0x0c, 0x08, 0x74, 0xae, 0x83, 0xf1, 0xae, 0x73, 0xf0, 0x10, 0x45, 0x81, 0x83, 0xa6, 0x58, 0xf6, 0x8f, 0x43, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x64, 0xc0, 0xd2, 0xf7, 0xbe, 0x83, 0x93, 0xd0, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x76, 0x34, 0x5c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0x07, 0x89, 0x5c, 0x0a, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x41, 0xeb, 0xb2, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x5a, 0x74, 0xc5, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x4d, 0xd3, 0xfd, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8f, 0x37, 0x14, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x21, 0x2c, 0x02, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x5a, 0x4c, 0xe7, 0x1f, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0x2e, 0xeb, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x0f, 0xda, 0x1d, 0xd0, 0x3f, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xda, 0xbb, 0xd7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0xe0, 0x59, 0x85, 0x01, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0xb5, 0xff, 0xfd, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0xda, 0xd9, 0xd5, 0x3f, 0x0e, 0x1d, 0xbc, 0x55, 0x52, 0xe0, 0xa0, 0xf9, 0x69, 0xfd, 0xe3, 0xd0, 0xc1, 0x03, 0xb8, 0x02, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0xd6, 0x65, 0xdd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb4, 0xe8, 0x8a, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xeb, 0xb2, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0xd3, 0x72, 0xb4, 0x38, 0xec, 0x06, 0xeb, 0xd3, 0x8f, 0x36, 0x8c, 0xcb, 0xc1, 0x40, 0x55, 0x3b, 0x1e, 0x1f, 0x34, 0xfd, 0xb8, 0x7f, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x0d, 0xda, 0x34, 0xdd, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x5e, 0x57, 0x21, 0x30, 0x48, 0x06, 0xda, 0x72, 0x1d, 0x8c, 0x77, 0x9d, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0x93, 0x27, 0xee, 0xc1, 0x73, 0xf2, 0x02, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0x12, 0xf7, 0x7b, 0x16, 0x87, 0xdd, 0x90, 0xc7, 0xda, 0x60, 0xcc, 0xc2, 0x0d, 0xb2, 0x0d, 0x5a, 0x3a, 0x83, 0x39, 0x8c, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0x06, 0xad, 0xcb, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0xd1, 0x15, 0x7f, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0xb1, 0xd7, 0x3f, 0x78, 0x88, 0xa6, 0xc0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0xf8, 0x20, 0x01, 0xe8, 0xe0, 0xe0, 0xf9, 0x93, 0x02, 0x07, 0xcd, 0x4f, 0xeb, 0x1f, 0x87, 0x16, 0x04, 0x1b, 0xb4, 0x2e, 0xeb, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0xb8, 0x21, 0x9a, 0x83, 0x60, 0x83, 0x35, 0xed, 0x10, 0x07, 0x89, 0x39, 0x26, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x36, 0x78, 0x60, 0x8e, 0xc0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd6, 0x65, 0xdd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0xa0, 0xad, 0xd7, 0xfb, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xe1, 0xda, 0x77, 0x70, 0x12, 0x3a, 0x3e, 0x0e, 0x1d, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x8a, 0xbd, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x16, 0x9f, 0xf7, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x64, 0x60, 0xe9, 0xef, 0x90, 0xad, 0x18, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x1a, 0x0a, 0xd7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0x16, 0xaa, 0xf0, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x24, 0xef, 0x72, 0x1d, 0x8c, 0x77, 0x9d, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x86, 0xc2, 0xf5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xa0, 0x91, 0x25, 0xfc, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0x81, 0xcb, 0x75, 0x30, 0xde, 0x75, 0x8e, 0x43, 0x07, 0xcd, 0x4f, 0xeb, 0x1f, 0x2c, 0x4a, 0x27, 0x39, 0x0e, 0x1d, 0x2c, 0x4a, 0x27, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xba, 0xac, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0x81, 0x5f, 0x75, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xb5, 0xff, 0xfd, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x41, 0x8b, 0xc0, 0xee, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0x0a, 0xd7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0xf7, 0x1e, 0x09, 0x1c, 0xb4, 0xaa, 0xb4, 0x7f, 0x1c, 0x3a, 0x58, 0x94, 0x4e, 0x72, 0x1c, 0x3a, 0x0e, 0x1d, 0x2c, 0x4a, 0x27, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xe2, 0xf3, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0xba, 0xac, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc6, 0x6c, 0xf5, 0x0f, 0x9a, 0xfd, 0x75, 0x3f, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x28, 0x5c, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0x5a, 0x29, 0xcd, 0x3f, 0x68, 0x53, 0x72, 0xff, 0x38, 0x74, 0xb0, 0x28, 0x9d, 0xe4, 0x38, 0x74, 0xb0, 0x28, 0x9d, 0xe4, 0x38, 0x74, 0xb0, 0x28, 0x9d, 0x64, 0x10, 0x6c, 0xf0, 0xd6, 0xee, 0x80, 0x83, 0x45, 0xe9, 0x24, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0xeb, 0xb2, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x5a, 0x74, 0xc5, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x75, 0x59, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x0f, 0x52, 0x11, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xb5, 0xff, 0xfd, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xc1, 0x4b, 0x51, 0x05, 0x0e, 0xde, 0x2a, 0x29, 0x70, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x16, 0x04, 0x1b, 0xbc, 0x6d, 0x2f, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x5b, 0xfa, 0x02, 0x86, 0xdf, 0x78, 0xbe, 0x38, 0xc8, 0x36, 0xc4, 0x65, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xcf, 0x46, 0x0c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc9, 0xe0, 0xdc, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x10, 0xba, 0xe3, 0xf9, 0x41, 0x7b, 0x76, 0xfa, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcf, 0x46, 0x0c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x36, 0x5c, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xca, 0xd5, 0xf1, 0xfc, 0x38, 0x74, 0xb0, 0x16, 0xa6, 0xe4, 0xe0, 0x71, 0xae, 0x01, 0xc7, 0xe3, 0xe3, 0xd0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x0d, 0x85, 0xeb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0x82, 0xfb, 0xa8, 0x83, 0x06, 0x53, 0xf6, 0x8f, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0x0a, 0xd7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0xf5, 0xe7, 0x51, 0x07, 0xed, 0x34, 0xf2, 0x1f, 0x87, 0x0e, 0x9a, 0x9f, 0xd6, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x50, 0xb8, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x2c, 0xd0, 0x8e, 0x3a, 0x68, 0x33, 0xd9, 0xfd, 0x38, 0x74, 0xd0, 0xfc, 0xb4, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x86, 0xc2, 0xf5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0x98, 0x2c, 0xe0, 0xa0, 0xf1, 0x04, 0xfe, 0xe3, 0xd0, 0x41, 0xf3, 0xd3, 0xfa, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x86, 0x3b, 0xdf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xd6, 0xf7, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0x90, 0x02, 0xe0, 0x7e, 0x50, 0x14, 0xa0, 0x1d, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x73, 0xd2, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x9d, 0x4b, 0xd7, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x40, 0xfa, 0xef, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0x2d, 0x08, 0x36, 0x68, 0x6b, 0xf2, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x41, 0xc3, 0x97, 0xef, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0x85, 0x2e, 0xd7, 0x61, 0x85, 0xf6, 0xa0, 0x61, 0x44, 0xf7, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0xd5, 0x9b, 0x68, 0x83, 0x60, 0x83, 0x25, 0x9a, 0x68, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0x48, 0x06, 0xd2, 0x6f, 0xc7, 0xe3, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0xe3, 0xd0, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0xb8, 0xf3, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xab, 0xd6, 0xa8, 0x16, 0x37, 0x58, 0xca, 0xac, 0xb5, 0x21, 0x75, 0x70, 0xd0, 0x82, 0x8c, 0xfc, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x40, 0xa0, 0xab, 0x1d, 0x8f, 0x8f, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0xee, 0x7c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xec, 0x86, 0x5d, 0x83, 0x0d, 0xd1, 0xdc, 0x60, 0xc1, 0x41, 0xd5, 0x86, 0x68, 0x6e, 0xb0, 0x94, 0x59, 0x6b, 0x83, 0xa0, 0xf4, 0x3e, 0x68, 0x41, 0x46, 0xfe, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x24, 0x03, 0x0a, 0xff, 0xae, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0xf8, 0xe0, 0x45, 0x8e, 0x03, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0x26, 0x26, 0xe9, 0x07, 0xc1, 0x06, 0xeb, 0x5c, 0xba, 0x0e, 0x56, 0x71, 0x93, 0x1d, 0x2c, 0xdf, 0xe9, 0x3a, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xd2, 0x54, 0x87, 0x15, 0xda, 0x83, 0x86, 0x11, 0xdd, 0x8f, 0x43, 0x07, 0xab, 0xb8, 0xc9, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x13, 0x9b, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x56, 0xad, 0x51, 0x2d, 0x0e, 0x82, 0x0d, 0xde, 0x8c, 0x14, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xf8, 0x76, 0xc8, 0x56, 0x1c, 0x14, 0x8c, 0x0e, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0xc1, 0x82, 0x83, 0xaa, 0x0d, 0xa9, 0x83, 0x0d, 0x96, 0x32, 0x6b, 0x6d, 0xd8, 0x2b, 0x3c, 0x68, 0x41, 0x46, 0xfe, 0x78, 0x7c, 0x1c, 0x3a, 0x1e, 0x1f, 0x3c, 0xbb, 0x71, 0xe0, 0x38, 0x34, 0x08, 0x36, 0x68, 0x47, 0x92, 0xfe, 0x60, 0xf9, 0x4e, 0xd7, 0xc1, 0x2a, 0x6e, 0xb2, 0x55, 0x5c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x20, 0xf9, 0x37, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0xd0, 0x9a, 0xab, 0xca, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0x27, 0x66, 0xdf, 0x83, 0xa5, 0x2f, 0x32, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x90, 0x0c, 0x38, 0xff, 0x77, 0x1d, 0xb2, 0x15, 0x07, 0xeb, 0x9f, 0x46, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0xc8, 0x3c, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0x56, 0x98, 0x01, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x24, 0xfe, 0x77, 0x1d, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0xc7, 0x75, 0xaa, 0x43, 0xb6, 0xe2, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0x34, 0x9c, 0x20, 0x3f, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x64, 0xa0, 0xa8, 0x1d, 0xb2, 0x15, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x9a, 0xda, 0xa8, 0x3f, 0x78, 0xb4, 0xf1, 0xc0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0xd0, 0xa6, 0x82, 0xfc, 0x20, 0xd8, 0xa0, 0xcd, 0x80, 0xf9, 0x83, 0x86, 0x45, 0xeb, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xbc, 0x62, 0x78, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x50, 0xfc, 0x8e, 0xc7, 0xc7, 0xa1, 0x83, 0x86, 0x45, 0xeb, 0x0f, 0x56, 0x5d, 0xc9, 0x1c, 0x34, 0xdd, 0x04, 0x7f, 0xd0, 0xb0, 0x68, 0xfd, 0x41, 0xd3, 0x4d, 0xf0, 0x07, 0xef, 0xbd, 0x1d, 0x38, 0x78, 0xef, 0xed, 0xc0, 0x0a, 0xbb, 0xa1, 0x63, 0xd8, 0x82, 0x60, 0x41, 0x32, 0x50, 0xba, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xf8, 0x8d, 0xe7, 0x8b, 0x83, 0x6c, 0x43, 0x5c, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x41, 0xb3, 0x8f, 0xf0, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x83, 0xba, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x15, 0xec, 0xf8, 0x83, 0x16, 0xa6, 0xde, 0x07, 0xc1, 0x06, 0xa9, 0x80, 0x27, 0x07, 0x2d, 0x4c, 0xbd, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x41, 0xdb, 0x29, 0xef, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0x6b, 0x77, 0xb9, 0x0e, 0x82, 0x9c, 0xff, 0xa0, 0x1d, 0x49, 0xf8, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x40, 0xf1, 0x3b, 0x9e, 0x1f, 0xb4, 0x23, 0x09, 0x3f, 0x08, 0x36, 0x68, 0x05, 0x3b, 0xfe, 0xa0, 0x1d, 0x49, 0xf8, 0x41, 0xb0, 0x41, 0x2a, 0xe0, 0xc9, 0x41, 0x3b, 0x92, 0xf0, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0x48, 0x06, 0x8a, 0xda, 0x41, 0x90, 0xf3, 0x1f, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x1f, 0xb4, 0x8f, 0xf0, 0x7e, 0x3c, 0x3e, 0x0e, 0x1d, 0xb4, 0xc2, 0x51, 0xbf, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xe4, 0xdf, 0xe8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0x0c, 0xdc, 0x7e, 0xc7, 0xe3, 0x83, 0xf7, 0xde, 0x0e, 0x1c, 0xbc, 0xf7, 0x76, 0xe0, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x36, 0xf8, 0xe3, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x41, 0xb0, 0x41, 0x0b, 0x47, 0xf0, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x86, 0x13, 0xe4, 0x8f, 0x43, 0x07, 0xef, 0xda, 0x1d, 0x18, 0x7e, 0xe3, 0xf9, 0x41, 0x2b, 0x1c, 0xf5, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6d, 0xf0, 0xc7, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x3c, 0xf9, 0x79, 0x60, 0x10, 0x6c, 0xd0, 0x66, 0xc0, 0xfc, 0x41, 0xd3, 0x4d, 0xf0, 0x07, 0xef, 0xda, 0x1d, 0x18, 0x7e, 0xe3, 0xf9, 0xc1, 0xf3, 0x7f, 0x07, 0x8e, 0x43, 0x07, 0xab, 0xae, 0x64, 0x06, 0xc1, 0x06, 0x2f, 0x92, 0x1e, 0x38, 0x68, 0xba, 0x09, 0xfe, 0xa0, 0xe9, 0x26, 0xf8, 0x83, 0xf7, 0xde, 0x0e, 0x0c, 0x82, 0x0d, 0x96, 0x9b, 0x92, 0x2c, 0x0e, 0x82, 0x0d, 0xda, 0xa0, 0xba, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x1a, 0x42, 0xd4, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x36, 0x58, 0xac, 0x67, 0x72, 0x10, 0xf0, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x41, 0xfa, 0x97, 0xc2, 0xc1, 0xe2, 0x69, 0x92, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x0a, 0x0a, 0x82, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x4f, 0xb0, 0x20, 0x38, 0x68, 0xa6, 0x2d, 0xff, 0x38, 0x74, 0xd0, 0x8a, 0x01, 0xfe, 0x71, 0xe8, 0x78, 0xbc, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x1f, 0x34, 0x27, 0x30, 0x7f, 0xf0, 0x0c, 0x04, 0x82, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x0f, 0x1e, 0x04, 0x40, 0x70, 0xd0, 0x74, 0x13, 0xfc, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0xc8, 0x3c, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xfb, 0x82, 0x07, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xe1, 0x08, 0xfe, 0xe0, 0x25, 0xc4, 0x03, 0xc7, 0xa1, 0x83, 0x47, 0x1b, 0x0f, 0xac, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x4f, 0x7e, 0x1e, 0x18, 0x04, 0x1b, 0x34, 0x9c, 0x20, 0x7f, 0xd0, 0x74, 0x13, 0xfc, 0x82, 0x60, 0x83, 0x16, 0xc8, 0xdf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x0b, 0x47, 0xf0, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0x32, 0x20, 0xd0, 0xa9, 0x0e, 0xd9, 0x8a, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x0f, 0x16, 0x78, 0x78, 0x1d, 0xac, 0xba, 0x92, 0x39, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x07, 0x0b, 0x3c, 0xbc, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x3c, 0x87, 0x86, 0x60, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x07, 0xbf, 0x10, 0x1c, 0xac, 0xba, 0x92, 0x19, 0x04, 0x1b, 0xbc, 0x0a, 0x87, 0xe0, 0xa0, 0xe9, 0x26, 0xf8, 0x83, 0x55, 0x57, 0x32, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x1f, 0xbc, 0x6b, 0x77, 0xe0, 0x60, 0xd5, 0x95, 0xcc, 0x41, 0xd3, 0x4d, 0xf0, 0xc7, 0xa1, 0x61, 0x37, 0x74, 0x0c, 0x5b, 0x10, 0x6c, 0xf0, 0x20, 0xed, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xf8, 0x8d, 0xe7, 0x8b, 0x83, 0x6c, 0x43, 0x5c, 0x86, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x41, 0x2d, 0xb6, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0xfb, 0xdf, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xba, 0xac, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x0a, 0x6a, 0xb1, 0xc5, 0x0d, 0xc6, 0x4f, 0xd7, 0x41, 0x93, 0x57, 0x51, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x3e, 0x08, 0x73, 0xf5, 0x41, 0xb0, 0xc1, 0xf9, 0xd1, 0xf7, 0xa0, 0xf9, 0x69, 0xfd, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x0f, 0x4e, 0x98, 0xe8, 0x07, 0x4d, 0xb1, 0xec, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xf1, 0x79, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x30, 0x7a, 0x87, 0x15, 0xda, 0xe3, 0xd0, 0x41, 0x53, 0x2c, 0xfb, 0xc7, 0xa1, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xb0, 0x1b, 0x84, 0x96, 0xfb, 0xc6, 0xa1, 0x0d, 0x42, 0x0a, 0x7c, 0x10, 0x6c, 0xd0, 0xaa, 0x6d, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6e, 0xd0, 0x72, 0x66, 0xd2, 0x06, 0xab, 0xf5, 0xb8, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xf1, 0x3b, 0x18, 0x8e, 0xd2, 0x07, 0x87, 0x73, 0xfa, 0x15, 0x04, 0x1b, 0x24, 0x0f, 0x56, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x06, 0x3c, 0xf2, 0x71, 0xe8, 0xa0, 0x3d, 0x31, 0xa7, 0x0d, 0x8e, 0x3c, 0xc5, 0x07, 0x0b, 0x87, 0x13, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xf1, 0x71, 0xe8, 0xa0, 0x15, 0x8e, 0xfa, 0x05, 0xc1, 0x06, 0x2d, 0x90, 0xbf, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x07, 0xef, 0xfb, 0x20, 0x38, 0x0e, 0xad, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0x66, 0xc0, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0x15, 0x67, 0x59, 0xc3, 0x6f, 0x3c, 0x5f, 0x1c, 0x64, 0x1b, 0xe2, 0x32, 0x08, 0x16, 0x24, 0x03, 0x86, 0x7a, 0xd7, 0xc1, 0x78, 0xd7, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0d, 0xd2, 0xaa, 0xa3, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0xf9, 0x55, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0xc9, 0x96, 0x75, 0xd0, 0xec, 0xaf, 0xfb, 0x71, 0x68, 0x10, 0x6c, 0xd0, 0x58, 0xc6, 0xfe, 0x41, 0x53, 0x2c, 0xfb, 0x6b, 0x90, 0xf6, 0x52, 0x3d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xcd, 0xaf, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0x92, 0xcb, 0xac, 0x83, 0x66, 0x7f, 0xdd, 0x8f, 0x43, 0x07, 0xcd, 0x28, 0xed, 0xaf, 0x41, 0x4a, 0xd1, 0xf3, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x34, 0xbf, 0xea, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x8b, 0x4e, 0xb3, 0x0e, 0x9a, 0xfd, 0x75, 0x3f, 0x0e, 0x0d, 0x82, 0x0d, 0xda, 0x4c, 0x76, 0x3f, 0x68, 0x8a, 0x65, 0x7f, 0x0d, 0x16, 0x70, 0xe4, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0xf3, 0xab, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0xfc, 0x36, 0xeb, 0xa0, 0xd9, 0x5f, 0xf7, 0xe3, 0xd0, 0x20, 0xd8, 0xa0, 0x39, 0x91, 0xfd, 0x83, 0xa6, 0x58, 0xf6, 0xd7, 0x20, 0xd1, 0x0f, 0x7a, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x9a, 0x5f, 0x75, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0xb5, 0x7c, 0x59, 0xc3, 0x6f, 0x3c, 0x3f, 0x68, 0xfe, 0x6a, 0xff, 0x38, 0x74, 0xd0, 0x42, 0xca, 0xfe, 0x21, 0x86, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0x78, 0xbc, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x3e, 0x78, 0x41, 0x08, 0xc1, 0xc1, 0x7b, 0x6f, 0x07, 0x06, 0xc1, 0x82, 0x64, 0xc0, 0xf0, 0xed, 0x3a, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x86, 0xad, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x38, 0xfd, 0x8e, 0xc7, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0x2f, 0x63, 0x24, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x18, 0xb6, 0x66, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0xf8, 0xe0, 0x1d, 0x8f, 0x04, 0x07, 0xef, 0xbd, 0x1d, 0x38, 0x0e, 0x0d, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0xf1, 0xba, 0x03, 0x83, 0x60, 0x83, 0xa7, 0x90, 0x10, 0x1c, 0x34, 0xdd, 0x04, 0x3f, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x3e, 0x48, 0xff, 0x6d, 0x18, 0x04, 0x1b, 0x9c, 0x4d, 0x7a, 0x0f, 0x56, 0x5d, 0xc9, 0x1c, 0xbc, 0xf2, 0x78, 0xe0, 0xe0, 0x19, 0x08, 0x04, 0x07, 0xcf, 0x40, 0x20, 0x38, 0x1e, 0xaf, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xaf, 0x17, 0x1c, 0x18, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x1f, 0x2c, 0x81, 0xe9, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x08, 0x55, 0xae, 0xc3, 0x0a, 0xed, 0xc1, 0x2a, 0x6e, 0xb2, 0x83, 0xe5, 0x3b, 0x5d, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0x20, 0x58, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbb, 0x21, 0x8f, 0xb5, 0x61, 0x5c, 0xd6, 0x60, 0xd1, 0x47, 0xd3, 0x06, 0x6b, 0xd5, 0x8f, 0x06, 0xc1, 0x82, 0x64, 0x83, 0x21, 0xfe, 0x71, 0x30, 0x1c, 0xa5, 0x0f, 0x69, 0xb8, 0xc3, 0xb8, 0x1c, 0x8f, 0x07, 0xc1, 0xe2, 0xb0, 0x1b, 0x04, 0x17, 0xf6, 0x82, 0x60, 0x83, 0x97, 0xa7, 0x12, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xa4, 0x0e, 0x0e, 0x92, 0x71, 0x87, 0x8e, 0x43, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x92, 0x1d, 0x1b, 0x2c, 0xd2, 0xd9, 0x19, 0x76, 0x61, 0x17, 0x7a, 0x50, 0xc2, 0x48, 0x1c, 0xd6, 0x37, 0x17, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf3, 0x07, 0x63, 0xb1, 0x73, 0x10, 0x2d, 0x58, 0x6f, 0x50, 0xc2, 0x48, 0x1c, 0xf2, 0xb5, 0xc7, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x6d, 0xf0, 0xd2, 0x59, 0x82, 0x41, 0xb4, 0x20, 0x5e, 0x83, 0x95, 0x6e, 0x34, 0x07, 0xaf, 0x76, 0x25, 0x38, 0xc4, 0xf0, 0x78, 0x7c, 0x7c, 0x3b, 0x1e, 0x0f, 0x82, 0x0d, 0xd6, 0xb4, 0x1c, 0x2d, 0x0e, 0xbb, 0x41, 0x13, 0x39, 0x2a, 0x1b, 0x2c, 0x9d, 0xdb, 0x19, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0x2d, 0x8a, 0xd2, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0x48, 0x36, 0x58, 0x47, 0xac, 0x73, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf2, 0xb5, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0x1b, 0x84, 0xa7, 0xea, 0xe1, 0x14, 0x5b, 0x1c, 0x76, 0xc3, 0xae, 0xc1, 0x86, 0x18, 0x0e, 0xbb, 0xb0, 0x1b, 0x04, 0xc3, 0xfe, 0xc2, 0x2e, 0xdc, 0x06, 0x4b, 0xb5, 0x90, 0x0e, 0xc6, 0x4f, 0xd7, 0xc2, 0x6e, 0x50, 0xee, 0x1d, 0x2e, 0xec, 0xc2, 0x2e, 0xdc, 0x06, 0x69, 0xa1, 0xd9, 0x87, 0x86, 0x3a, 0x1b, 0x62, 0x38, 0xdc, 0x06, 0xc5, 0x6b, 0xe4, 0xa1, 0xa1, 0xce, 0xc2, 0x6e, 0xb0, 0xfe, 0x65, 0xff, 0xb0, 0xbe, 0x79, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x6b, 0x88, 0xe1, 0x06, 0x0b, 0x61, 0xf6, 0x0f, 0x82, 0xd2, 0xfb, 0x10, 0xc3, 0xe3, 0xf1, 0x71, 0xe8, 0x10, 0xc3, 0xe3, 0xf1, 0x82, 0x6c, 0x43, 0x5c, 0x06, 0xc1, 0x82, 0x64, 0xa0, 0xbc, 0x1d, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xad, 0x5b, 0xbe, 0x1f, 0x87, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0x65, 0x2c, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x6d, 0x71, 0xb9, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xe6, 0xa4, 0x6b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x3a, 0x97, 0xae, 0xe1, 0x37, 0x9e, 0x1f, 0x2c, 0x31, 0x4b, 0x39, 0x0e, 0x1d, 0x87, 0x0e, 0x96, 0xe3, 0x74, 0x2d, 0x08, 0x36, 0x38, 0xb1, 0xb9, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xf8, 0xfe, 0xef, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x43, 0x78, 0xee, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5a, 0xc6, 0x72, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x0f, 0x4e, 0xcc, 0xbe, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xc2, 0x75, 0x58, 0xa1, 0x3d, 0x58, 0xbe, 0xd3, 0x75, 0x1c, 0x3a, 0x58, 0xc5, 0x4d, 0x36, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x65, 0x2c, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x20, 0x6c, 0xc7, 0xe3, 0xe3, 0xd0, 0x41, 0xc3, 0x88, 0xee, 0xc7, 0xa1, 0x15, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0xf8, 0xe0, 0xc5, 0xe7, 0x04, 0x07, 0xcb, 0x71, 0xba, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xdc, 0xf9, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0xc9, 0x48, 0xeb, 0x87, 0x46, 0x2d, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x70, 0xa5, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x3c, 0x44, 0x9c, 0xe0, 0x38, 0x74, 0x1c, 0x3a, 0x68, 0x18, 0xd1, 0x7d, 0x41, 0xb0, 0xc1, 0x72, 0x53, 0x92, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x68, 0xae, 0x76, 0x48, 0x2e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0xa0, 0x49, 0x52, 0xf8, 0x83, 0xf3, 0x13, 0xed, 0x20, 0xd8, 0x90, 0xaa, 0x39, 0x68, 0x47, 0x12, 0xfe, 0x38, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0xb0, 0xdc, 0x94, 0x64, 0x71, 0x10, 0x2c, 0x48, 0x06, 0xda, 0x77, 0x1d, 0x04, 0x39, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0xc5, 0x0d, 0x4e, 0x93, 0xbd, 0x07, 0x21, 0xf8, 0xb0, 0x38, 0xec, 0x06, 0x41, 0x8a, 0xbf, 0x06, 0x2b, 0xe2, 0x8e, 0xd6, 0x60, 0x8c, 0x3d, 0x1d, 0xa2, 0x79, 0x18, 0x97, 0xc3, 0xb8, 0x1c, 0x8f, 0x0f, 0xa9, 0x9a, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0xd6, 0xe4, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0x6b, 0x77, 0xb9, 0x0e, 0x2b, 0xb4, 0x07, 0x6d, 0x19, 0xba, 0x1f, 0x87, 0x16, 0x04, 0x1b, 0x34, 0xdc, 0xf9, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0xec, 0x86, 0x68, 0x2e, 0xec, 0x06, 0x41, 0xe9, 0xbd, 0x06, 0xeb, 0x52, 0x94, 0xd6, 0x60, 0x5d, 0x8a, 0xd2, 0xa1, 0x91, 0xe0, 0x21, 0x86, 0x07, 0x8f, 0x65, 0x28, 0x18, 0x76, 0x83, 0xa0, 0xf4, 0x5e, 0x83, 0x75, 0x29, 0x4a, 0x6b, 0xb0, 0x1c, 0x47, 0xe9, 0xd0, 0x48, 0xf0, 0x10, 0xc3, 0x83, 0xb7, 0x3e, 0x14, 0x1c, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0x38, 0x99, 0x6c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xd8, 0x70, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x45, 0x35, 0xd9, 0xc1, 0xca, 0x3d, 0x9c, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xc5, 0xc9, 0x64, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xf9, 0xdb, 0x75, 0x58, 0xa1, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0c, 0xbe, 0xcb, 0x3f, 0x0e, 0x1d, 0x87, 0x0e, 0x56, 0x71, 0x93, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x0f, 0x1a, 0x97, 0x7c, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xf0, 0xe0, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x6f, 0xd0, 0xf0, 0xe5, 0xfb, 0x41, 0xb3, 0xb0, 0xef, 0x07, 0xad, 0xfc, 0xbe, 0x1f, 0x87, 0x0e, 0x56, 0x71, 0x93, 0x1d, 0x34, 0x8c, 0xe8, 0x3e, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x2c, 0x4e, 0x26, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0xe9, 0x46, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x63, 0xf0, 0x7e, 0xdb, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x71, 0x32, 0xd9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb1, 0xe1, 0x3a, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x8a, 0x6a, 0xb2, 0x83, 0x85, 0xb6, 0x38, 0xc7, 0xa1, 0x83, 0x55, 0xdc, 0x64, 0x07, 0x0d, 0x23, 0xba, 0x1f, 0x87, 0x16, 0x04, 0x1b, 0x2c, 0x55, 0x8e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0xb2, 0xa4, 0xfb, 0xf0, 0x1b, 0xcf, 0x17, 0x07, 0xd9, 0x86, 0xb8, 0x0c, 0x82, 0x0d, 0xda, 0x3d, 0x83, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0x5f, 0x10, 0x6c, 0xb0, 0xb2, 0x08, 0xe6, 0x20, 0x5d, 0x70, 0xe8, 0xa0, 0xf9, 0x3a, 0xf8, 0x83, 0x36, 0xf7, 0xe0, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0x83, 0x56, 0x76, 0xe1, 0x0f, 0x92, 0x19, 0x2c, 0x0e, 0x56, 0x5d, 0xc9, 0x1c, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0x15, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0xc3, 0x6e, 0xd8, 0x35, 0xd8, 0x90, 0x98, 0x1a, 0x04, 0x0b, 0x92, 0x81, 0xb3, 0xee, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xb0, 0x1b, 0x14, 0x21, 0x83, 0x0b, 0xbb, 0x21, 0x8f, 0xb5, 0x21, 0x86, 0x07, 0x05, 0xc7, 0xe1, 0xa1, 0x91, 0xe0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbb, 0x21, 0x8f, 0x75, 0x50, 0x0e, 0x83, 0x1d, 0x04, 0xa5, 0xf7, 0xf1, 0xf8, 0x38, 0x74, 0x3c, 0x5e, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x24, 0x03, 0x86, 0x3b, 0xd5, 0x61, 0x85, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xc3, 0x83, 0xef, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x20, 0xd8, 0xe0, 0xa5, 0x1b, 0x05, 0x07, 0x6f, 0x29, 0x13, 0x18, 0x04, 0x1b, 0xbc, 0x74, 0xa3, 0xe0, 0xe0, 0x21, 0x0d, 0x02, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xe1, 0x4a, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x2d, 0x63, 0xb9, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0xc3, 0x6f, 0x3c, 0x3f, 0x58, 0xa6, 0x31, 0x72, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x56, 0x54, 0x93, 0x1d, 0xac, 0x7f, 0x1a, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0xfc, 0xe0, 0x91, 0x50, 0x05, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0x48, 0x06, 0x8a, 0xda, 0x61, 0x85, 0xf6, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0xf8, 0x60, 0x15, 0x37, 0xd9, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x48, 0x06, 0x1c, 0xd7, 0xa9, 0x0e, 0x2b, 0xb4, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x1f, 0xb4, 0x86, 0xf8, 0x7e, 0xf0, 0x92, 0xae, 0x82, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xe0, 0xe5, 0x3a, 0xac, 0xd0, 0x1e, 0xbc, 0xa4, 0xab, 0xe0, 0x60, 0x15, 0x37, 0xd9, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x60, 0x3d, 0xab, 0xcb, 0xc1, 0xea, 0x34, 0xb6, 0x41, 0xb0, 0xc1, 0x43, 0xc8, 0x0a, 0x0e, 0x56, 0x71, 0x93, 0x0d, 0x82, 0x0d, 0xde, 0x5d, 0x56, 0x70, 0xb0, 0x8a, 0x9b, 0x6c, 0x10, 0x6c, 0xf0, 0xee, 0xb2, 0x82, 0x83, 0xe5, 0x3b, 0x5d, 0x07, 0xab, 0xb8, 0xc9, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0xf0, 0xe0, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x2f, 0x48, 0x06, 0x94, 0xba, 0x5c, 0x87, 0x15, 0xda, 0x83, 0xd7, 0xd5, 0x15, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x84, 0x2b, 0xfd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x0d, 0xde, 0x55, 0x55, 0x30, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x8f, 0x0f, 0x2b, 0x18, 0x04, 0x0b, 0xbf, 0xf1, 0xfc, 0xe0, 0x75, 0x75, 0x05, 0x07, 0x2f, 0xe9, 0x2a, 0x38, 0x58, 0xc5, 0x4d, 0x36, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0xf0, 0x60, 0xb5, 0x82, 0x41, 0xb0, 0xc1, 0xdb, 0xf9, 0x0a, 0x0e, 0x56, 0x71, 0x93, 0x1d, 0xbc, 0xbd, 0xad, 0xe0, 0xe0, 0x39, 0x6f, 0x05, 0x07, 0xab, 0xb8, 0xc9, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2f, 0xdd, 0x28, 0x38, 0x78, 0xac, 0x9d, 0xc0, 0xc1, 0x4b, 0xba, 0x0a, 0x0e, 0x56, 0x71, 0x93, 0x2d, 0x08, 0x36, 0x58, 0xaa, 0x1c, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x65, 0x49, 0xf7, 0xe1, 0x37, 0x9e, 0x2f, 0x0e, 0xb2, 0x0d, 0x71, 0x19, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x36, 0xf8, 0xe3, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x34, 0xfd, 0x1f, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xd0, 0xff, 0xef, 0x78, 0x7e, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xd6, 0x48, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0x57, 0x1e, 0x05, 0x1c, 0x87, 0x0e, 0x9a, 0x6e, 0x82, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xe6, 0x07, 0xe2, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0x40, 0xfe, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x0f, 0x7b, 0x0a, 0x38, 0x68, 0x50, 0x09, 0xfe, 0x38, 0x74, 0xd0, 0x74, 0x13, 0xfc, 0xc1, 0xaa, 0x2b, 0x99, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0x7e, 0x20, 0x7e, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x0b, 0xe4, 0xef, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xf0, 0x8a, 0xa1, 0x80, 0x83, 0x36, 0x03, 0xe6, 0x8f, 0x43, 0x07, 0x4d, 0x37, 0xc1, 0x1f, 0xac, 0xba, 0x92, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xe6, 0x07, 0xe2, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0x40, 0xfe, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xaf, 0x90, 0x0a, 0x38, 0x68, 0x48, 0x67, 0xfe, 0x38, 0x74, 0xd0, 0x74, 0x13, 0xfc, 0xc1, 0xaa, 0x2b, 0x99, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0x50, 0x57, 0x3b, 0x9e, 0x0f, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x19, 0xd8, 0x57, 0x3b, 0x9e, 0x1f, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x1f, 0x8f, 0x8f, 0x43, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x5c, 0x5c, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc9, 0x40, 0xeb, 0xaa, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0x4f, 0x95, 0x2d, 0x18, 0x04, 0x1b, 0x04, 0x59, 0xfc, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xd9, 0x8a, 0x41, 0x32, 0xd0, 0xeb, 0xef, 0x78, 0x7e, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0x7c, 0xf0, 0xbe, 0xd9, 0x82, 0xe3, 0xf1, 0x2a, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x00, 0xd9, 0x82, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0xc0, 0xa9, 0x76, 0xc8, 0x56, 0x1c, 0x3c, 0x96, 0xb6, 0xe0, 0x78, 0xbc, 0x8a, 0x83, 0x60, 0x83, 0xd6, 0x65, 0xdd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x6e, 0xb0, 0xd0, 0xda, 0x6a, 0x83, 0xf0, 0x54, 0x3d, 0x08, 0x4f, 0xd5, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xae, 0x1d, 0x0c, 0x43, 0x9f, 0x41, 0x32, 0x58, 0x1d, 0x92, 0x73, 0x07, 0x89, 0x39, 0x26, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x36, 0x78, 0x8f, 0x6c, 0xc1, 0x20, 0xd8, 0xe0, 0xb9, 0xb3, 0x05, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0x48, 0x06, 0x5a, 0xff, 0x1d, 0xcf, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xc9, 0xaf, 0xe3, 0xf9, 0xc1, 0xcb, 0x8b, 0x0b, 0x8e, 0x43, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x2c, 0x37, 0x25, 0x59, 0x1c, 0x76, 0x83, 0xc0, 0xc4, 0x5e, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0x32, 0x60, 0xbc, 0x53, 0x1d, 0x0c, 0x43, 0x9f, 0x41, 0xb0, 0xc1, 0x1b, 0x2b, 0x03, 0x0e, 0xda, 0xb3, 0xd3, 0x3f, 0x58, 0x15, 0x52, 0x72, 0x48, 0x1d, 0x1c, 0x8f, 0x57, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xf7, 0xc8, 0x16, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x6d, 0x9a, 0xee, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x77, 0x77, 0x7f, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x92, 0x01, 0xef, 0xde, 0xa7, 0x3a, 0x18, 0xef, 0x3a, 0x07, 0x6f, 0x95, 0x14, 0x18, 0x04, 0x0b, 0xbf, 0xf1, 0xfc, 0xe0, 0x8d, 0xda, 0x05, 0x07, 0x8b, 0xd2, 0x49, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x37, 0x72, 0x17, 0x1c, 0x34, 0x3f, 0xad, 0x7f, 0xf0, 0x58, 0xda, 0x82, 0xe3, 0xf1, 0x0a, 0x82, 0x05, 0xc9, 0x40, 0xba, 0xeb, 0x20, 0xe0, 0xfd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xa6, 0xe5, 0x68, 0x71, 0x10, 0x2c, 0x48, 0x06, 0x65, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0xc4, 0xef, 0xd0, 0xbe, 0xe5, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xd0, 0xba, 0xea, 0x78, 0x7c, 0x1c, 0x5a, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xde, 0x23, 0x5b, 0x30, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xa8, 0x57, 0xc7, 0xf3, 0x83, 0xc7, 0xd2, 0x16, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0xb4, 0xcc, 0x80, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xe3, 0x6c, 0x10, 0x00, 0xf7, 0x07, 0xe1, 0xa9, 0x3a, 0xfc, 0xc6, 0xf3, 0xc5, 0x41, 0xb6, 0x21, 0x2e, 0x83, 0x60, 0x83, 0xd6, 0x65, 0xdd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xce, 0x41, 0x13, 0x6e, 0xf5, 0x8b, 0xc3, 0x2e, 0xdc, 0x41, 0xcb, 0xad, 0x29, 0x6b, 0x88, 0xe6, 0x06, 0x23, 0xff, 0x61, 0x83, 0xb5, 0xe5, 0x4b, 0x1b, 0x2c, 0x38, 0xa8, 0x3a, 0x78, 0x9d, 0x51, 0xc0, 0x86, 0x68, 0xae, 0x1a, 0x2c, 0xbf, 0xcd, 0x3a, 0x44, 0xf3, 0x10, 0xc3, 0x83, 0x96, 0x5b, 0x53, 0x0e, 0x9e, 0x3d, 0x5f, 0x70, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x48, 0x06, 0xde, 0xfe, 0x3b, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x04, 0x77, 0xd5, 0xf1, 0xfc, 0xa0, 0x29, 0x96, 0xfd, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0x5f, 0x90, 0x0c, 0x24, 0xdf, 0x0e, 0xd9, 0x8a, 0x83, 0xf3, 0x13, 0xed, 0xc1, 0xa2, 0x74, 0x92, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x78, 0x94, 0xcc, 0xc0, 0x20, 0xd8, 0xa0, 0xc5, 0x74, 0xfe, 0x83, 0xa6, 0x58, 0xf6, 0x0f, 0x16, 0xa5, 0x93, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x1e, 0x76, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x63, 0xd0, 0x2b, 0xe4, 0x38, 0x74, 0xd0, 0x14, 0xcb, 0xfe, 0x71, 0xe8, 0x78, 0x7c, 0x1c, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0x05, 0xc9, 0x80, 0xf2, 0x9f, 0xea, 0x20, 0xe0, 0xfd, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0x03, 0x1b, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xa0, 0xd0, 0xe5, 0x3a, 0x08, 0x78, 0xff, 0x83, 0x86, 0xbf, 0xee, 0x17, 0x04, 0x1b, 0xb4, 0xba, 0x74, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x0f, 0xd6, 0x82, 0x8f, 0x1d, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x08, 0x51, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x20, 0xd0, 0xb9, 0x0e, 0x02, 0xde, 0xff, 0x38, 0x74, 0x1c, 0x5a, 0x71, 0x10, 0x2c, 0x48, 0x06, 0x86, 0xea, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xc1, 0x50, 0xd3, 0x3c, 0x0e, 0x1d, 0x8f, 0x17, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0xf9, 0x55, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x3e, 0x78, 0x80, 0x6c, 0xc1, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x1e, 0x20, 0x5b, 0x30, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x75, 0x59, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0x5e, 0x2b, 0x36, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xfc, 0x77, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x6b, 0x51, 0xd5, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x36, 0x58, 0xec, 0x45, 0x72, 0x30, 0xde, 0x75, 0x8e, 0x43, 0xc7, 0xa1, 0x83, 0xc7, 0xd2, 0x16, 0x1c, 0x34, 0x3f, 0xad, 0x7f, 0x3c, 0x5e, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xf7, 0xc8, 0x16, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0xa3, 0x64, 0x06, 0x0e, 0x5a, 0x48, 0xd9, 0x3f, 0x78, 0x2c, 0x6d, 0xc1, 0xf1, 0x78, 0x15, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x78, 0x71, 0x6c, 0xc1, 0xc1, 0x03, 0x74, 0x0b, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0x32, 0x20, 0xd8, 0xbb, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0x61, 0x55, 0x75, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x3e, 0x78, 0x98, 0x79, 0xc1, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xe0, 0x54, 0x3b, 0xac, 0xd0, 0x0e, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x19, 0xe8, 0xf5, 0x77, 0x3c, 0x3e, 0x58, 0x89, 0x2f, 0x72, 0x3c, 0x3e, 0x0e, 0xad, 0x38, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x93, 0xf7, 0x0b, 0x06, 0xc1, 0x06, 0xcd, 0xfe, 0xba, 0x1f, 0x3c, 0x96, 0xb6, 0xe0, 0x78, 0xbc, 0x78, 0xf0, 0xb2, 0x0e, 0x83, 0xe3, 0xf1, 0xe2, 0x20, 0x19, 0x78, 0xbf, 0xea, 0x78, 0x7e, 0x3c, 0x5e, 0xd8, 0x0d, 0xa9, 0x9a, 0x05, 0xc9, 0x80, 0xe0, 0xae, 0x3a, 0x1e, 0x1f, 0x3c, 0x79, 0xc1, 0x60, 0x15, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x9e, 0xbc, 0x5f, 0x30, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0x6b, 0xf8, 0x0b, 0x0e, 0x1e, 0x4b, 0x5b, 0x70, 0xf0, 0x0a, 0x22, 0x83, 0x83, 0xf7, 0xcd, 0x16, 0x1c, 0x8f, 0x17, 0x76, 0x43, 0xaa, 0x66, 0x41, 0x32, 0x90, 0x56, 0x3b, 0xac, 0xd0, 0x1e, 0x1c, 0xab, 0xee, 0x57, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0xab, 0x88, 0x0b, 0x06, 0xc1, 0x06, 0xef, 0xd1, 0x2d, 0x38, 0x78, 0x79, 0x71, 0xc1, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xa0, 0xbc, 0x1d, 0xb2, 0x15, 0x07, 0x2f, 0x2f, 0x2e, 0x38, 0x1e, 0x2f, 0x08, 0x36, 0x68, 0x99, 0x01, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x33, 0xd9, 0x0b, 0x86, 0xdf, 0x78, 0xbe, 0x38, 0xc8, 0x36, 0xc4, 0x65, 0x10, 0x6c, 0xd0, 0xba, 0xac, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0xc5, 0x39, 0x58, 0x6e, 0x6d, 0xb5, 0x38, 0xec, 0x06, 0xaf, 0x92, 0x2f, 0x58, 0x43, 0x34, 0x37, 0x18, 0xf9, 0x0f, 0x07, 0x41, 0xe9, 0xbd, 0x21, 0x9a, 0xab, 0xc1, 0x92, 0xd3, 0xac, 0x43, 0x0c, 0x0f, 0x5a, 0x6e, 0x4d, 0x39, 0x08, 0x4a, 0xef, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x1e, 0xd9, 0x82, 0x83, 0x37, 0xf4, 0x17, 0x1c, 0x3c, 0xe4, 0xbf, 0x60, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0xa3, 0x64, 0x06, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x14, 0xae, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x1c, 0x34, 0x27, 0xb2, 0x7f, 0x1c, 0x3a, 0x68, 0x7e, 0x5a, 0xff, 0xe0, 0xbd, 0x03, 0x06, 0x07, 0x8b, 0xd2, 0x49, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x3c, 0x0f, 0x3b, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x31, 0xe8, 0x95, 0x75, 0x1c, 0x3a, 0x68, 0x8a, 0x65, 0xff, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x2d, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0xe2, 0xd8, 0x82, 0x83, 0x57, 0x10, 0x19, 0x1c, 0x8f, 0x17, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x07, 0x4f, 0x55, 0x30, 0x18, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x05, 0xc9, 0x40, 0xf2, 0xed, 0xb0, 0x42, 0x3b, 0x48, 0x06, 0x46, 0xef, 0x78, 0x7c, 0xd0, 0x10, 0x38, 0xfe, 0x8a, 0x83, 0x60, 0x83, 0xd6, 0x65, 0xdd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x6e, 0xb0, 0xd0, 0xda, 0xea, 0xa0, 0xc9, 0x9e, 0x92, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0xd9, 0xc0, 0x05, 0x83, 0x64, 0x30, 0x3b, 0x24, 0xe7, 0x0e, 0x12, 0x73, 0x4c, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xbc, 0xde, 0xc2, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0xd2, 0xff, 0xff, 0x8e, 0xe7, 0x07, 0xef, 0x28, 0x2e, 0x38, 0x78, 0x42, 0x72, 0xc1, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x35, 0x48, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x8e, 0x48, 0x7b, 0xd0, 0xea, 0xd2, 0xfd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x74, 0xa4, 0x1d, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xe6, 0x98, 0x76, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x96, 0xa2, 0x76, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x4a, 0xa3, 0x76, 0x90, 0x6c, 0xb0, 0x76, 0x9d, 0xe2, 0x60, 0x38, 0x4a, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xfd, 0x8f, 0xda, 0x43, 0xea, 0x60, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb6, 0x4a, 0x6a, 0x07, 0xc1, 0xe2, 0x72, 0xf0, 0x8e, 0xf6, 0x82, 0xc3, 0x29, 0xb6, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xa4, 0xb4, 0x76, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x21, 0xbc, 0x76, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xd7, 0xbc, 0x76, 0x90, 0x6c, 0x50, 0x14, 0xd9, 0x1d, 0x1c, 0xb3, 0x8a, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x16, 0x7b, 0xed, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xc8, 0x7c, 0xed, 0x41, 0x4b, 0x05, 0x03, 0x83, 0x64, 0x20, 0x5c, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x17, 0xbf, 0xf6, 0x60, 0xfc, 0x74, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x22, 0xc0, 0x76, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0x49, 0xd8, 0x0e, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xf1, 0x0b, 0xdb, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xed, 0x75, 0xd8, 0x1e, 0xa2, 0x79, 0x3c, 0x3e, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x29, 0xb1, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xaa, 0x8a, 0xed, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x81, 0xb1, 0x1d, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xb3, 0x35, 0xb6, 0x07, 0x23, 0xff, 0x61, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x34, 0x90, 0xed, 0xc1, 0x31, 0x72, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xeb, 0x47, 0xb6, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x73, 0x4d, 0xb6, 0x83, 0x64, 0x83, 0xa2, 0x3e, 0xe7, 0xe0, 0xec, 0x65, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x26, 0xa6, 0x6c, 0x0f, 0x42, 0x00, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x86, 0xb1, 0x6c, 0x0f, 0x3d, 0x84, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe6, 0xc0, 0x6c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x5d, 0x66, 0x7b, 0x70, 0x8c, 0x9c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xb8, 0x66, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x11, 0x67, 0x7b, 0xf0, 0x02, 0x59, 0x83, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x6b, 0x67, 0x7b, 0x10, 0x02, 0xe0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xc6, 0x67, 0x7b, 0xe8, 0x21, 0x74, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x23, 0x68, 0x3b, 0x08, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0x1e, 0xda, 0x0e, 0xbb, 0x21, 0x8f, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x29, 0x47, 0xdb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6d, 0x4f, 0xda, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x2c, 0xd3, 0xf6, 0x20, 0x65, 0x30, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x1c, 0xa8, 0xed, 0xc1, 0x72, 0x5c, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x9b, 0xa7, 0xb6, 0x87, 0x86, 0x5f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa6, 0x5e, 0x6d, 0x87, 0x5f, 0x10, 0x2d, 0x30, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf6, 0x6b, 0x6d, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xb8, 0x6b, 0x7b, 0xb0, 0x04, 0xf7, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x3b, 0xc1, 0xb6, 0x1b, 0xac, 0x6e, 0xa4, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x6f, 0x6c, 0x7b, 0x30, 0x7e, 0xba, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xed, 0x37, 0xdb, 0x1e, 0x2c, 0xc7, 0x15, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x9e, 0xb6, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xb6, 0xb6, 0xed, 0xc1, 0xd0, 0xec, 0x3a, 0x1e, 0x1f, 0xdf, 0x8e, 0xc7, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xeb, 0xe1, 0xb6, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x73, 0xe7, 0xb6, 0x07, 0x27, 0x4c, 0xf4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xe5, 0x6e, 0x7b, 0x10, 0x52, 0xe0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x4f, 0x6f, 0x3b, 0x08, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0xe9, 0xdb, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0xb2, 0xb8, 0x1d, 0x76, 0xc3, 0xae, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x16, 0x3a, 0x6e, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x29, 0x72, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x7f, 0x72, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x91, 0x97, 0xdb, 0x83, 0xa0, 0xf4, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0xb1, 0xb9, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0xdd, 0xb9, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0x12, 0xba, 0x3d, 0x68, 0xc3, 0x56, 0x60, 0x90, 0x0c, 0x0c, 0xd5, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x3f, 0xba, 0x3d, 0x0e, 0x1d, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x5c, 0xd3, 0xed, 0xc1, 0x20, 0x5a, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x75, 0xaa, 0xdb, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xa4, 0x75, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xfc, 0x75, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x67, 0x76, 0x7b, 0xd0, 0x86, 0xad, 0xc0, 0x20, 0x19, 0xc8, 0xfa, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x05, 0xb6, 0xdb, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x8b, 0x71, 0xb7, 0x07, 0x83, 0x68, 0xe5, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xad, 0xbb, 0xdb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6d, 0xf3, 0xdd, 0x1e, 0x2c, 0x5c, 0x3c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x28, 0x78, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x81, 0x78, 0x7b, 0xf0, 0x02, 0x59, 0x83, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xdb, 0x78, 0x3b, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x1e, 0x34, 0x20, 0x79, 0x7b, 0x7c, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x95, 0xcd, 0xdb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x5d, 0xd0, 0xdb, 0x41, 0x32, 0x90, 0xde, 0x39, 0x38, 0x09, 0x1d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xcf, 0xf4, 0xf6, 0x60, 0x10, 0xad, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc6, 0x58, 0x6f, 0x0f, 0x06, 0x7f, 0xcc, 0x71, 0xe8, 0xf8, 0x76, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xd0, 0xec, 0xed, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x22, 0xee, 0xed, 0xc1, 0x03, 0x62, 0x0c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x8a, 0xef, 0xed, 0x41, 0xfb, 0xf3, 0x4b, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x51, 0x7c, 0x3b, 0x48, 0x06, 0x84, 0x7d, 0xd5, 0xf1, 0xf8, 0x38, 0x74, 0x1c, 0x5a, 0x10, 0x6c, 0xf0, 0x80, 0x18, 0x83, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x68, 0x7f, 0x7e, 0xe9, 0xe0, 0xf5, 0xe5, 0x05, 0xc7, 0xa1, 0x55, 0x1c, 0x04, 0x1b, 0xb4, 0x2e, 0xeb, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x71, 0x83, 0x10, 0x7c, 0x38, 0x58, 0x68, 0x6d, 0xb5, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x3c, 0x1b, 0xb8, 0x60, 0x90, 0x0c, 0x46, 0x87, 0xbe, 0x1a, 0x87, 0x34, 0xdc, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0xf8, 0xe0, 0xb1, 0xc9, 0x05, 0x83, 0x60, 0x83, 0x47, 0x11, 0x19, 0x1c, 0xbc, 0xbc, 0xb8, 0xe0, 0x38, 0x74, 0x3c, 0x5e, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0x0c, 0xa4, 0xa9, 0x0e, 0x02, 0xde, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc9, 0x80, 0x77, 0xef, 0x53, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xa0, 0x29, 0xd7, 0x41, 0xc0, 0xfb, 0x1f, 0xb4, 0x62, 0x80, 0x3f, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0xb3, 0x7b, 0x0e, 0x0e, 0x1a, 0xfe, 0xba, 0x3f, 0x68, 0x08, 0x1c, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x0f, 0x1e, 0xf8, 0x73, 0x30, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xb0, 0x76, 0x97, 0xeb, 0x20, 0xe0, 0xfd, 0x0f, 0x5a, 0x31, 0xc0, 0x3f, 0x78, 0x45, 0xd1, 0xc1, 0x41, 0x43, 0xe0, 0xf8, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x78, 0x0a, 0xd0, 0xc1, 0xc1, 0xbb, 0x85, 0x0e, 0x0e, 0x5e, 0x51, 0x74, 0x70, 0xf0, 0x5a, 0xa5, 0x83, 0x83, 0x57, 0x14, 0x1d, 0x1c, 0x34, 0x04, 0x8e, 0x3f, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x28, 0x5c, 0x07, 0x01, 0xef, 0x7f, 0xd0, 0x8a, 0x01, 0xfe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x5d, 0x0e, 0xdc, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x25, 0x11, 0xdc, 0x83, 0x96, 0x19, 0xf0, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xfa, 0x09, 0xee, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe6, 0x5a, 0x70, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0xcd, 0xe0, 0x1e, 0x62, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x41, 0x1f, 0xdc, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x7b, 0x44, 0xb8, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xf2, 0x09, 0x77, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x64, 0x15, 0xee, 0xc1, 0xc8, 0x7f, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x0b, 0x86, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xd7, 0x0c, 0xf7, 0x60, 0x4d, 0xcb, 0xd1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0xc7, 0xe1, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0xba, 0xc3, 0x1d, 0x64, 0x1b, 0xe2, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xa3, 0x0f, 0x77, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x53, 0x10, 0x77, 0x90, 0x0c, 0x34, 0x57, 0x3b, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x84, 0x88, 0x3b, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcd, 0x69, 0xe2, 0x0e, 0x92, 0x01, 0x41, 0x55, 0x75, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xf0, 0x24, 0xee, 0x20, 0x19, 0x30, 0xb4, 0xab, 0x8e, 0xe7, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xc2, 0x11, 0xf7, 0xa0, 0x89, 0x6b, 0xfd, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x9d, 0x51, 0xdc, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x8b, 0x8a, 0x7b, 0x48, 0xd5, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x80, 0x16, 0x77, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x2e, 0x17, 0xf7, 0xa0, 0xd5, 0xa5, 0xfb, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xf1, 0x8b, 0x3b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x74, 0x45, 0xee, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xd9, 0x98, 0xdc, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xc9, 0x93, 0x3b, 0x08, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0x07, 0xe5, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xda, 0x00, 0xcc, 0x1d, 0x76, 0x83, 0xe0, 0x63, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x9e, 0x61, 0xee, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf6, 0x17, 0x73, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x19, 0x99, 0x7b, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x95, 0xcb, 0xdc, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xd5, 0xce, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x88, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6d, 0x92, 0xe6, 0x1e, 0xf2, 0xb5, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x33, 0xaa, 0xb9, 0xc3, 0x2f, 0x88, 0x16, 0x88, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x2d, 0xd9, 0xdc, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x05, 0xdc, 0xdc, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x69, 0xdf, 0xdc, 0x83, 0x96, 0x0a, 0x06, 0x06, 0xc9, 0x60, 0x36, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd6, 0x88, 0x73, 0x0f, 0x52, 0x20, 0xcd, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x58, 0xce, 0x1d, 0x04, 0x1b, 0x2c, 0xb4, 0xb6, 0x5a, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xcd, 0x9e, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xfb, 0x3e, 0x77, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0xf5, 0xe7, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0x0b, 0xe8, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4d, 0x26, 0xe8, 0x1e, 0x34, 0x85, 0x34, 0x30, 0x48, 0x06, 0xb2, 0x7e, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xe5, 0x41, 0xf7, 0x90, 0xaf, 0x3d, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x9e, 0x42, 0xf7, 0x10, 0xcd, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x86, 0x40, 0x74, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x5a, 0xa2, 0x7b, 0xb0, 0x70, 0xf1, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xd4, 0x8a, 0xee, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x36, 0x8c, 0xee, 0x41, 0xcb, 0x39, 0xf8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xcf, 0x46, 0xf7, 0xe0, 0x75, 0x17, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xc3, 0xa3, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x1c, 0xa4, 0x7b, 0xb0, 0x50, 0xb5, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x8b, 0x47, 0xba, 0x87, 0x68, 0x1e, 0x87, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x56, 0x35, 0x74, 0x0f, 0xe3, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4d, 0x35, 0xe9, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x07, 0x4e, 0x77, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xb8, 0x4e, 0x77, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x8c, 0x4f, 0xf7, 0xa0, 0xa5, 0x82, 0x81, 0x41, 0x32, 0x30, 0x54, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x3f, 0x50, 0xf7, 0x20, 0xa4, 0xc0, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xf8, 0x50, 0xf7, 0x20, 0x65, 0x30, 0x60, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x76, 0x1d, 0x75, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x44, 0xa9, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x9e, 0xa9, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x09, 0xaa, 0x7b, 0xd0, 0x52, 0xc1, 0xc0, 0x20, 0x19, 0x28, 0x7e, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0xc5, 0x54, 0xf7, 0x60, 0x4c, 0x58, 0x1d, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xed, 0xaa, 0x3b, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x76, 0x68, 0x75, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x86, 0x73, 0x75, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf6, 0x80, 0x75, 0x0f, 0x5a, 0x2a, 0x18, 0x18, 0x24, 0x03, 0x59, 0xbf, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x61, 0xac, 0x7b, 0x30, 0x26, 0xac, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x5f, 0xd6, 0x5d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x8b, 0xd2, 0xba, 0x07, 0x2b, 0xd9, 0xb2, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4d, 0x61, 0xeb, 0x1e, 0xa4, 0x0c, 0x06, 0x1c, 0x62, 0x78, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x92, 0xb7, 0xee, 0x0a, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0x27, 0xd7, 0x3d, 0x58, 0xc9, 0x96, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x53, 0x5d, 0xf7, 0x20, 0x65, 0x30, 0xe0, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x63, 0xf0, 0xba, 0x87, 0x18, 0x1e, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0xd7, 0xeb, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xa9, 0x7d, 0xdd, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x69, 0x80, 0xdd, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xbd, 0x83, 0xdd, 0x83, 0x96, 0x0a, 0x06, 0x06, 0xc9, 0x40, 0xd6, 0x6f, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4d, 0x34, 0xec, 0x1e, 0x84, 0x14, 0xf8, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xdb, 0x12, 0xbb, 0x07, 0x29, 0x83, 0x01, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2d, 0x79, 0xec, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x75, 0x64, 0x77, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x33, 0x29, 0xbb, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x76, 0xd9, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x14, 0xcd, 0xee, 0xc1, 0xc2, 0xc5, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x03, 0x3a, 0xbb, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x93, 0x3f, 0xbb, 0x07, 0x0b, 0x5f, 0xbd, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x4c, 0xd1, 0xee, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x78, 0xd0, 0x60, 0xd2, 0xee, 0xf1, 0x6d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x66, 0xa9, 0x76, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x96, 0xb4, 0x76, 0x0f, 0x5e, 0xb8, 0x24, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x05, 0xb0, 0xdd, 0x83, 0x94, 0xc1, 0x80, 0xe3, 0xd0, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x1b, 0x66, 0xbb, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9a, 0x5e, 0xdb, 0x3d, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x2a, 0xc6, 0xee, 0x41, 0x0a, 0xa4, 0xf9, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xbc, 0x94, 0xee, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x1c, 0x96, 0xee, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xc6, 0x97, 0xee, 0x41, 0x4b, 0x05, 0x03, 0x83, 0x64, 0xa0, 0x5c, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x59, 0x32, 0xdd, 0x83, 0x10, 0x00, 0x3f, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x68, 0x4f, 0x4d, 0xf7, 0x20, 0x05, 0xd2, 0xfc, 0x38, 0x74, 0x7c, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x71, 0x93, 0x7b, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x62, 0xdc, 0xee, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x34, 0xb8, 0x3b, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd6, 0x04, 0x78, 0x07, 0xc9, 0x40, 0x57, 0xaa, 0x83, 0x80, 0xf7, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x32, 0xff, 0xee, 0xc1, 0x53, 0x15, 0x0c, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x3e, 0xe2, 0xee, 0xc1, 0x20, 0x31, 0x3f, 0x58, 0x89, 0x2f, 0x72, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0xa8, 0xe3, 0xee, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0x1d, 0xbb, 0x3b, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8d, 0xae, 0xef, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcd, 0xc4, 0xef, 0x1e, 0x34, 0x76, 0x8c, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x79, 0xfb, 0xdd, 0x43, 0x0c, 0x8f, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1a, 0xea, 0xdd, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5a, 0x16, 0xde, 0x1d, 0x24, 0x03, 0x82, 0xb7, 0xeb, 0x20, 0xe0, 0xfd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xd0, 0x1e, 0xf2, 0xee, 0x21, 0x86, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x3b, 0xbd, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x94, 0xbd, 0x7b, 0xf0, 0xc8, 0x2a, 0x84, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0xf0, 0xbd, 0x7b, 0x88, 0xe1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0d, 0x93, 0xef, 0x0e, 0x92, 0x01, 0xe3, 0xbb, 0xea, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0xc9, 0xdb, 0xdd, 0x83, 0xc6, 0xc5, 0xee, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x9f, 0xb9, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x34, 0xf7, 0xb9, 0x7b, 0xf0, 0x80, 0x18, 0x83, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xb4, 0x51, 0xba, 0x7b, 0xd0, 0xfe, 0xfc, 0xd2, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4d, 0xab, 0xee, 0x1e, 0xac, 0xee, 0x85, 0x39, 0x0e, 0x0d, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x29, 0xca, 0xdd, 0x83, 0xc6, 0xc6, 0xf1, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x0f, 0x9e, 0x18, 0x84, 0x30, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x59, 0xbe, 0xdd, 0x83, 0xa7, 0xf7, 0x20, 0x0c, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xa0, 0x89, 0xbb, 0xdd, 0x83, 0xc6, 0xc6, 0xf1, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc6, 0x5c, 0x71, 0x0f, 0x96, 0xca, 0xe9, 0x2c, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x00, 0xd9, 0x82, 0x41, 0xb0, 0xc1, 0xb3, 0x98, 0x0c, 0x0e, 0x1e, 0x4b, 0x5b, 0x70, 0x3c, 0x5e, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xf7, 0xc8, 0x16, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x04, 0x7d, 0xd5, 0xf1, 0xfc, 0xe0, 0xb1, 0xb4, 0x05, 0xc7, 0xe3, 0x55, 0x1c, 0x24, 0x03, 0xad, 0xab, 0x06, 0xd1, 0x82, 0xf3, 0x87, 0x18, 0x1e, 0xcf, 0x8f, 0xc7, 0x2b, 0x0e, 0x82, 0x0d, 0x5e, 0x6f, 0x61, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x03, 0x46, 0x57, 0xd5, 0xf1, 0xfc, 0xe0, 0xc9, 0x4a, 0x06, 0xc7, 0xa1, 0xe3, 0xf1, 0xe2, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x5e, 0x6f, 0x61, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x58, 0xaf, 0x3a, 0x9e, 0x1f, 0x87, 0x0e, 0xde, 0x51, 0x5c, 0x70, 0xf0, 0x64, 0x25, 0x83, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x17, 0xd5, 0x18, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xfa, 0xfd, 0x1d, 0x8f, 0x0f, 0x5a, 0x31, 0xc0, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0xfc, 0xe0, 0x58, 0x75, 0x7f, 0xd0, 0x10, 0x38, 0xfe, 0xc1, 0xbb, 0x85, 0x0e, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0x6d, 0x3d, 0x07, 0x07, 0xaf, 0xaf, 0x3a, 0x18, 0x04, 0x1b, 0x04, 0x59, 0xfc, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xd9, 0x8a, 0xe1, 0x17, 0x24, 0x03, 0xc5, 0xed, 0x20, 0xe0, 0xfd, 0x8f, 0x6f, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0x2b, 0x0e, 0x82, 0x0d, 0x5a, 0x97, 0x75, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x38, 0x07, 0x0b, 0xad, 0xad, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x67, 0x03, 0x17, 0x0c, 0x92, 0x81, 0xf0, 0x1d, 0xfa, 0x6a, 0x1c, 0xd2, 0x70, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x36, 0x9c, 0x83, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0xc0, 0x52, 0xd5, 0xf1, 0xfc, 0xe0, 0xe5, 0xc5, 0x05, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x1e, 0x10, 0x63, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x09, 0x40, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0x45, 0x35, 0x06, 0x83, 0x60, 0x83, 0xd7, 0x97, 0x17, 0x1c, 0xbc, 0xf9, 0xc6, 0xe0, 0x38, 0xb4, 0xe2, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x4f, 0xde, 0x2f, 0x18, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0xcc, 0xdd, 0xf1, 0xfc, 0xe0, 0xb1, 0xb4, 0x05, 0xc7, 0xe3, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0x7e, 0xd5, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0xc1, 0xb3, 0x62, 0x0b, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0xe2, 0xd8, 0x82, 0x83, 0xd7, 0x81, 0x18, 0x1c, 0x34, 0x3f, 0xad, 0x7f, 0x3c, 0x5e, 0x10, 0x2c, 0x48, 0x06, 0x8c, 0xfa, 0xbf, 0xe3, 0xf1, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x36, 0x58, 0xac, 0x67, 0x72, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x41, 0x32, 0xa0, 0xf9, 0x5d, 0xae, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x06, 0x04, 0x2b, 0xd7, 0xc1, 0x30, 0xf4, 0x19, 0x7e, 0xe3, 0xf9, 0xf0, 0x0b, 0xa2, 0x0d, 0x1e, 0xdf, 0x16, 0x70, 0x48, 0x1d, 0x1c, 0xdf, 0x8e, 0x43, 0xc3, 0x6e, 0x30, 0xde, 0x74, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0x20, 0x5a, 0x30, 0x3f, 0xc4, 0xf0, 0x90, 0xaa, 0x39, 0xbe, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x94, 0xff, 0x54, 0x07, 0xc3, 0x3f, 0x76, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x06, 0xc9, 0x40, 0xd0, 0x0e, 0x86, 0x7f, 0xec, 0xc1, 0x4a, 0x7c, 0x91, 0xe3, 0xf1, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0x92, 0x81, 0x59, 0x3b, 0x18, 0xfe, 0xb1, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x00, 0x64, 0x84, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xe0, 0xae, 0x3a, 0xac, 0xd0, 0x1e, 0x3c, 0x77, 0x19, 0xe1, 0xe0, 0xfd, 0xce, 0x08, 0xc7, 0xa1, 0xe3, 0xf1, 0x8a, 0xc3, 0x6f, 0x3c, 0x3e, 0x78, 0xd3, 0x90, 0xc1, 0xf1, 0x78, 0x05, 0xc1, 0x06, 0x2d, 0x33, 0xe0, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0x12, 0x6b, 0xab, 0xe1, 0x37, 0x9e, 0x2f, 0x0e, 0xb2, 0x0d, 0x71, 0x19, 0x04, 0x0b, 0x82, 0xc5, 0x39, 0x58, 0xd3, 0x72, 0xb4, 0x38, 0xec, 0x06, 0x41, 0xe2, 0xbd, 0x86, 0x18, 0x6e, 0xc8, 0x68, 0x1d, 0x04, 0xa5, 0xf7, 0x20, 0x5b, 0x43, 0xfb, 0xf5, 0x83, 0x61, 0xca, 0xbb, 0xe1, 0x68, 0x3f, 0x78, 0xa3, 0x37, 0xc2, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x67, 0x23, 0x06, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x1b, 0xae, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x3c, 0x1b, 0x31, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0x41, 0x32, 0xe8, 0xfd, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xd9, 0x88, 0x01, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcf, 0x46, 0x0c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x4e, 0xb5, 0x83, 0x20, 0xe7, 0x3f, 0x0e, 0x1d, 0x87, 0x0e, 0xd6, 0xc2, 0x94, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x07, 0x13, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0xd9, 0x88, 0x01, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x86, 0xeb, 0xc1, 0x23, 0xcf, 0x11, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x77, 0xae, 0x23, 0x1c, 0xac, 0x85, 0x29, 0x39, 0x78, 0xd9, 0x6a, 0xc0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x20, 0x4d, 0x75, 0x30, 0x0c, 0x7d, 0x0e, 0xda, 0xb3, 0xd3, 0x3f, 0x0e, 0x1d, 0xac, 0x85, 0x29, 0x19, 0x76, 0x83, 0xf1, 0xa6, 0xb3, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0xe0, 0xed, 0x3a, 0x18, 0xfe, 0xb1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x86, 0xeb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x4f, 0x03, 0x48, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xd2, 0x6a, 0x07, 0x01, 0xef, 0x7f, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x64, 0x83, 0xc5, 0xb6, 0x22, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0x69, 0x00, 0x09, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x86, 0xeb, 0xc1, 0x53, 0x0a, 0x12, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9e, 0x06, 0x90, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x9c, 0x6a, 0x07, 0x01, 0xef, 0x7f, 0x1c, 0x3a, 0x78, 0xbf, 0x33, 0xc2, 0xc1, 0xdb, 0x93, 0x11, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x69, 0xaa, 0x83, 0xe1, 0x1f, 0x7b, 0xd0, 0x4c, 0x7d, 0xfe, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x3e, 0x78, 0xa5, 0x32, 0xc2, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x40, 0xa0, 0x73, 0x1d, 0x0c, 0xff, 0xd8, 0x83, 0x66, 0xea, 0xf3, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xc2, 0x97, 0xeb, 0x60, 0xf8, 0xc7, 0x1e, 0x34, 0x53, 0x9f, 0x7f, 0xf0, 0xdc, 0x65, 0x84, 0x83, 0xf7, 0x3b, 0x23, 0x0c, 0x82, 0x0d, 0xa9, 0x83, 0x83, 0xf7, 0x3b, 0x23, 0x1c, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0x15, 0x0f, 0xde, 0xe8, 0x88, 0x70, 0x3c, 0x5e, 0x3c, 0x78, 0x0d, 0x7f, 0xc1, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x80, 0x18, 0x83, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x2f, 0x7d, 0x39, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x78, 0xfb, 0xef, 0x78, 0x7c, 0x1c, 0x5a, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0xc5, 0x61, 0x37, 0xac, 0x85, 0x6e, 0xc8, 0xd7, 0x0e, 0xbb, 0x41, 0x8b, 0x9f, 0xf7, 0x1b, 0x94, 0xfd, 0x58, 0x83, 0x60, 0x61, 0x17, 0x76, 0x61, 0x17, 0x3a, 0x41, 0x80, 0x17, 0x6e, 0x83, 0xe5, 0xb7, 0x59, 0x13, 0x0c, 0xf0, 0xe1, 0x68, 0xdf, 0x10, 0xc3, 0x61, 0x37, 0x78, 0x44, 0x4b, 0xc2, 0xc2, 0x6d, 0xb0, 0xe8, 0x34, 0xeb, 0xe0, 0x45, 0x2e, 0x09, 0x87, 0xa3, 0x7d, 0x0d, 0x31, 0x9c, 0x60, 0x82, 0x0f, 0xda, 0x22, 0x64, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x78, 0x83, 0x91, 0x65, 0x35, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0xc3, 0xda, 0xef, 0xb0, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x2d, 0x15, 0x0c, 0x0c, 0x92, 0x81, 0xac, 0xdf, 0x41, 0xf3, 0x64, 0x02, 0x07, 0x23, 0x0a, 0x77, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0xa5, 0x82, 0x81, 0x41, 0x32, 0x30, 0x7b, 0x07, 0xcd, 0x93, 0x09, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x8c, 0xcb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6b, 0x5a, 0x8e, 0x16, 0x37, 0x58, 0x82, 0x7b, 0xb4, 0x06, 0xab, 0x1b, 0xa9, 0x0e, 0x8a, 0xb0, 0x89, 0x43, 0xea, 0xe0, 0x78, 0x7c, 0x1c, 0x3a, 0xac, 0xfd, 0x1e, 0xcf, 0x8f, 0x6f, 0xc7, 0xe3, 0x15, 0x04, 0x2b, 0xfc, 0x82, 0x64, 0x60, 0x5d, 0xef, 0x60, 0xbc, 0xeb, 0x1c, 0xdf, 0x36, 0xc4, 0xf0, 0xe0, 0x75, 0xbc, 0x08, 0x8b, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x6c, 0xc4, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x1e, 0x42, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xf1, 0x3a, 0x24, 0x97, 0x0e, 0x2d, 0xc0, 0x8e, 0x43, 0x83, 0x60, 0x43, 0xd6, 0xee, 0xa0, 0x3d, 0xed, 0xfc, 0xe3, 0xf1, 0x82, 0x60, 0x41, 0x32, 0x60, 0xa8, 0x77, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x6b, 0x90, 0x56, 0x1d, 0x3d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x0f, 0x4a, 0x4a, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0d, 0x52, 0xfa, 0xac, 0x07, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x1b, 0x2c, 0x2a, 0x21, 0x39, 0x08, 0x78, 0xff, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0x7a, 0x1f, 0x69, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xa0, 0xd5, 0xdf, 0xf1, 0xf8, 0x38, 0xb4, 0x06, 0x89, 0x7e, 0xd0, 0x83, 0x60, 0x41, 0x32, 0x20, 0xec, 0xff, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x1e, 0x63, 0x75, 0xb0, 0xf0, 0x1b, 0xcf, 0x0f, 0x96, 0xe7, 0x24, 0x6d, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x72, 0x55, 0xc7, 0xe3, 0xe3, 0xd0, 0x1a, 0xa4, 0x43, 0x79, 0x0c, 0x82, 0x0d, 0x1e, 0x60, 0x95, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x40, 0xf2, 0x2e, 0xd7, 0x41, 0xc0, 0xfb, 0x2f, 0xfc, 0xc6, 0xf3, 0x83, 0x25, 0xb6, 0x49, 0x07, 0x6f, 0xc9, 0x4a, 0x38, 0x0e, 0xad, 0x41, 0x42, 0xca, 0xfd, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0xf1, 0x4a, 0x07, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x29, 0x4a, 0xd2, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xf1, 0x55, 0x75, 0x3c, 0x3e, 0x0e, 0xad, 0x41, 0xda, 0x4b, 0xf5, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x19, 0x43, 0x07, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x51, 0x55, 0xd2, 0xf0, 0x1b, 0xcf, 0x0f, 0x5e, 0xc7, 0x8b, 0x70, 0x1c, 0x5a, 0x83, 0xf4, 0xa7, 0xe7, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xdb, 0x02, 0xf9, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x95, 0x5d, 0xd2, 0xc1, 0x7b, 0xd2, 0x12, 0x8e, 0x43, 0x6b, 0xb0, 0x32, 0x1c, 0x67, 0x10, 0x6c, 0x70, 0x0a, 0xc3, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x20, 0x7c, 0xb9, 0x0e, 0x02, 0xde, 0x7f, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0x25, 0x4b, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xb0, 0xbc, 0xff, 0xef, 0x78, 0x7c, 0x1c, 0x5a, 0x83, 0xe4, 0x21, 0xe6, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0x40, 0xe5, 0x3a, 0x08, 0x78, 0xff, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0xac, 0x30, 0x69, 0xf8, 0x8d, 0xe7, 0x07, 0xad, 0xf7, 0x30, 0x1d, 0x87, 0xd6, 0x60, 0xb8, 0x56, 0x0d, 0x82, 0x0d, 0x4e, 0x61, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x2c, 0xdd, 0xe5, 0x3a, 0x08, 0x78, 0xff, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0xf6, 0x32, 0xe9, 0xe0, 0x79, 0x79, 0x09, 0xc7, 0xa1, 0x35, 0x48, 0x0c, 0x91, 0x19, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xbc, 0x92, 0xc2, 0x60, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0x38, 0x4d, 0x3a, 0x78, 0x5e, 0x5e, 0xc2, 0x71, 0x68, 0x0d, 0x92, 0x7f, 0x9e, 0x07, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x42, 0x9d, 0xeb, 0x20, 0xe0, 0xfd, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0xc2, 0xe2, 0xa4, 0x83, 0xf7, 0xa4, 0x25, 0x1c, 0x87, 0xd6, 0x60, 0x01, 0x47, 0xce, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xa0, 0x3d, 0xd7, 0x41, 0xc0, 0xfb, 0x2f, 0xfc, 0xc6, 0xf3, 0x83, 0x15, 0xd7, 0x48, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xa5, 0xeb, 0x78, 0x7c, 0x1c, 0x3a, 0xc4, 0xf0, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x50, 0xec, 0x72, 0x1d, 0x04, 0xbc, 0xff, 0x41, 0x2b, 0x06, 0xf8, 0x6b, 0xb0, 0x80, 0x23, 0x67, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x1e, 0x94, 0x94, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x1a, 0xa4, 0x43, 0x79, 0x0c, 0x82, 0x0d, 0x1e, 0x59, 0x85, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x51, 0x6d, 0xf8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x4e, 0x61, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x9e, 0xd3, 0x95, 0xb0, 0xf0, 0x1b, 0xcf, 0x0f, 0x56, 0x5c, 0x59, 0x1d, 0x2c, 0x2d, 0x49, 0x3b, 0x0e, 0x1d, 0x87, 0xd6, 0x20, 0xa5, 0xcf, 0x7a, 0x10, 0x6c, 0xf0, 0xc8, 0x2a, 0x84, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8d, 0x6a, 0xc3, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0x0a, 0xc3, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xf0, 0x92, 0xa8, 0x84, 0x0d, 0xda, 0xac, 0x88, 0x3f, 0x78, 0x4f, 0x5a, 0xc2, 0x71, 0xe8, 0x38, 0xb4, 0x06, 0x09, 0x29, 0xf7, 0x83, 0x60, 0x83, 0x47, 0x56, 0x21, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x54, 0x1b, 0x7e, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc7, 0x2b, 0x1d, 0x6c, 0xd0, 0x5c, 0x4b, 0xfd, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xe3, 0x55, 0xd5, 0xf1, 0xf8, 0x38, 0x74, 0x1c, 0x5a, 0x83, 0x44, 0x3f, 0xe8, 0x41, 0xb0, 0xc1, 0x23, 0xab, 0x10, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x34, 0xaa, 0x0d, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x63, 0xac, 0x0e, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0x42, 0xc6, 0xaa, 0x83, 0x77, 0xa5, 0x26, 0x1c, 0x87, 0x8e, 0x43, 0x6b, 0x90, 0x7e, 0x6a, 0x31, 0x08, 0x36, 0x78, 0x64, 0x15, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x46, 0xb5, 0xe1, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0x85, 0xe1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xf8, 0x9d, 0xeb, 0x20, 0xe0, 0xfd, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0xf2, 0xd5, 0xaa, 0x83, 0xa5, 0x25, 0x69, 0xc7, 0xa1, 0xe3, 0xd0, 0x1a, 0x24, 0x2a, 0x3d, 0x0f, 0x82, 0x0d, 0x1e, 0x59, 0x85, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x51, 0x6d, 0xf8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x4e, 0x61, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x1a, 0xdc, 0xc6, 0x5f, 0xf8, 0x8d, 0xe7, 0x07, 0x2b, 0x55, 0xaa, 0x0e, 0x96, 0x96, 0xa4, 0x1d, 0x87, 0x8e, 0x43, 0x6b, 0x90, 0x56, 0x1d, 0x3d, 0x08, 0x36, 0x78, 0x64, 0x15, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x46, 0xb5, 0xe1, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0x85, 0xe1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x78, 0x14, 0x64, 0xc2, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0xc9, 0x55, 0x75, 0xf0, 0xbc, 0xbc, 0x84, 0xe3, 0xd0, 0x71, 0x68, 0x0d, 0x92, 0x9c, 0xa3, 0x07, 0xc1, 0x06, 0x8f, 0xac, 0x42, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0xa8, 0x36, 0xfc, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x49, 0xae, 0x83, 0x80, 0xf7, 0x5f, 0xf8, 0x8d, 0xe7, 0x07, 0x4b, 0x28, 0xac, 0x0e, 0x9e, 0x97, 0x97, 0x70, 0x1c, 0x3a, 0x0e, 0xad, 0xc1, 0xca, 0x70, 0x9c, 0x41, 0xb0, 0xc1, 0x23, 0xab, 0x10, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x34, 0xaa, 0x0d, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xab, 0xe1, 0x12, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0xa2, 0xe5, 0xaa, 0x83, 0xa5, 0x25, 0x69, 0xc7, 0xa1, 0xe3, 0xd0, 0x1a, 0x24, 0x0f, 0x31, 0x0f, 0x82, 0x0d, 0x1e, 0x59, 0x85, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x51, 0x6d, 0xf8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x4e, 0x61, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xde, 0x6f, 0x97, 0xb0, 0xf0, 0x1b, 0xcf, 0x0f, 0x16, 0x91, 0x58, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x48, 0xfe, 0xff, 0x3b, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0x6b, 0x90, 0xfe, 0xf4, 0x3c, 0x08, 0x36, 0x78, 0x64, 0x15, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x46, 0xb5, 0xe1, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0x85, 0xe1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x5b, 0x20, 0x7f, 0xe1, 0x37, 0x9e, 0x1f, 0x2c, 0xe0, 0xad, 0x3a, 0x58, 0x5a, 0x92, 0x76, 0x1c, 0x3a, 0x0e, 0xad, 0x41, 0x62, 0x88, 0xcc, 0x20, 0xd8, 0xe0, 0x91, 0x55, 0x08, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x1a, 0xd5, 0x86, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x95, 0x14, 0x06, 0x1b, 0x34, 0x52, 0x5b, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x60, 0x78, 0x55, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0x35, 0x48, 0xfe, 0x79, 0x1e, 0x04, 0x1b, 0x3c, 0xb2, 0x0a, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xa3, 0xda, 0xf0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xbc, 0xcc, 0x30, 0x61, 0x83, 0xc6, 0xa5, 0xe6, 0x0f, 0xde, 0x95, 0x9a, 0x70, 0x1c, 0x3a, 0x0e, 0xad, 0x41, 0x4a, 0xd1, 0xf3, 0x20, 0xd8, 0xe0, 0x91, 0x55, 0x08, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x1a, 0xd5, 0x86, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x01, 0x79, 0xfc, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0x6c, 0xbb, 0xea, 0xe0, 0xf5, 0xeb, 0x09, 0xc7, 0xa1, 0xe3, 0xd0, 0x1a, 0xa4, 0xbd, 0x54, 0x0f, 0x82, 0x0d, 0x4e, 0x61, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x9e, 0x31, 0x74, 0xb0, 0x41, 0xeb, 0x3a, 0xf2, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xbb, 0x5f, 0xc7, 0xe3, 0xe3, 0xd0, 0x1a, 0x24, 0x90, 0x41, 0x0f, 0x82, 0x0d, 0x4e, 0x61, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x5e, 0xd3, 0x60, 0xb0, 0x41, 0xa3, 0xda, 0xf0, 0x07, 0x2f, 0xf5, 0x4f, 0x38, 0x0e, 0x1d, 0x62, 0x78, 0x1c, 0x1a, 0x04, 0x1b, 0x3c, 0x77, 0x31, 0xe1, 0xa0, 0x15, 0x03, 0xfc, 0x35, 0x48, 0xf4, 0x83, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x07, 0x25, 0x25, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x06, 0x29, 0x7d, 0xd6, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x97, 0x44, 0x25, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xf5, 0x47, 0x4a, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xa9, 0xab, 0xe3, 0xf1, 0x71, 0x68, 0x0d, 0xd2, 0x5e, 0xaa, 0x07, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xcf, 0x18, 0x3a, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0x2b, 0xe8, 0x94, 0x0e, 0xde, 0x41, 0x96, 0x70, 0x1c, 0x5a, 0x83, 0x95, 0xe1, 0x38, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x57, 0xc3, 0x25, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xf5, 0xbc, 0x4a, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x8a, 0xfe, 0xbf, 0xe3, 0xf1, 0x71, 0x68, 0x0d, 0x52, 0x8a, 0x9e, 0x07, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x0d, 0xc8, 0xe3, 0x2f, 0xfc, 0xc6, 0xf3, 0x83, 0x15, 0xcd, 0x4a, 0x07, 0x67, 0x93, 0xde, 0xe3, 0xd0, 0x1a, 0xa4, 0x3f, 0x3d, 0x0f, 0x82, 0x0d, 0x4e, 0x61, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xda, 0x16, 0xc8, 0x5f, 0xf8, 0x8d, 0xe7, 0x07, 0x0b, 0x07, 0x95, 0x0e, 0xde, 0x41, 0x96, 0x70, 0x1c, 0x5a, 0x83, 0x84, 0x94, 0xfb, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xe3, 0x95, 0x0e, 0x36, 0x68, 0x17, 0xe3, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xc0, 0xfa, 0xfe, 0xbf, 0xe3, 0xf1, 0x71, 0x68, 0x0d, 0x92, 0x87, 0x98, 0x07, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xef, 0xb7, 0x4b, 0xd8, 0xa0, 0xa5, 0x15, 0xfa, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xd2, 0x77, 0x3c, 0x3e, 0x0e, 0xad, 0xc1, 0x70, 0xad, 0x1a, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0x95, 0x2f, 0x61, 0xe1, 0x37, 0x9e, 0x1f, 0x2c, 0x35, 0x55, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x10, 0xdc, 0x7f, 0xc7, 0xe3, 0xe3, 0xd0, 0x1a, 0x24, 0x86, 0xc8, 0x0c, 0x82, 0x0d, 0x4e, 0x61, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x5e, 0x49, 0x61, 0xb0, 0xf0, 0x1b, 0xcf, 0x0f, 0x96, 0xca, 0x2b, 0x1d, 0xbc, 0xa0, 0x41, 0xe1, 0x38, 0x74, 0x88, 0xe1, 0x71, 0xe8, 0xe0, 0xf5, 0x55, 0x07, 0x6b, 0x90, 0x90, 0x72, 0x3f, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x0f, 0x4a, 0x4a, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0d, 0x52, 0xfa, 0xac, 0x07, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x2f, 0x89, 0x4a, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0x8b, 0xa9, 0x93, 0x0e, 0xde, 0x41, 0x96, 0x70, 0x1c, 0x5a, 0x83, 0x95, 0xe1, 0x38, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x57, 0xc3, 0x25, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xe5, 0xe4, 0x49, 0x07, 0x2f, 0xb3, 0x50, 0x38, 0x0e, 0xad, 0x41, 0x4a, 0xd1, 0xf3, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x01, 0x79, 0xfc, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0x66, 0x42, 0xe9, 0xe0, 0x6c, 0xd2, 0x7b, 0x1c, 0x5a, 0x83, 0xf4, 0xa7, 0xe7, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xdb, 0x02, 0xf9, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0xf5, 0x80, 0xd2, 0xc1, 0x3b, 0xc8, 0x12, 0x8e, 0x43, 0x6b, 0x90, 0x3c, 0xc4, 0x3c, 0x08, 0x36, 0x38, 0x85, 0xe1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x78, 0xbf, 0x5d, 0xc2, 0x06, 0x6d, 0x71, 0xb9, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0xac, 0x7e, 0x1d, 0x8f, 0x8f, 0x43, 0x6b, 0x30, 0x5c, 0xab, 0x06, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x4f, 0xe5, 0x4b, 0xd8, 0xa0, 0x15, 0xc8, 0xf7, 0x83, 0xb7, 0x31, 0x29, 0x1c, 0x87, 0x0e, 0x31, 0x3c, 0x0e, 0x1d, 0xbc, 0x56, 0xe9, 0x60, 0x0d, 0xd2, 0x5e, 0xaa, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0x41, 0x49, 0x09, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0xaf, 0x41, 0x4a, 0xd1, 0xf3, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x01, 0x79, 0xfc, 0x0d, 0x1a, 0x1e, 0x94, 0x3f, 0x78, 0x4f, 0x5a, 0xc2, 0x71, 0x68, 0x0d, 0x86, 0x6b, 0xd5, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0xa9, 0x7c, 0x09, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x29, 0xc8, 0xd2, 0xc1, 0x3b, 0xc8, 0x12, 0x8e, 0x43, 0x6b, 0x90, 0x18, 0x22, 0x33, 0x08, 0x36, 0x38, 0x85, 0xe1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x78, 0x25, 0x85, 0xc1, 0x06, 0x0d, 0x98, 0xcc, 0x1f, 0xbc, 0x83, 0x2c, 0xe1, 0x38, 0xb4, 0x06, 0xc9, 0x3f, 0xcf, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x97, 0x19, 0x26, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xd5, 0x3f, 0x4b, 0x07, 0xef, 0x49, 0x4b, 0x38, 0x0e, 0xad, 0xc1, 0xca, 0x70, 0x9c, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xab, 0xe1, 0x12, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0xba, 0x80, 0xa5, 0xe1, 0x37, 0x9e, 0x1f, 0xb4, 0x2f, 0xc1, 0x74, 0x1c, 0x3a, 0xc4, 0xf0, 0x38, 0x74, 0xf0, 0x6e, 0xa1, 0x83, 0x35, 0x58, 0x19, 0x8e, 0x33, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x0f, 0x4a, 0x4a, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0d, 0xd2, 0xaa, 0xa3, 0x07, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8f, 0x82, 0x4c, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0xeb, 0x9f, 0x96, 0x0e, 0xde, 0x93, 0x96, 0x70, 0x1c, 0x5a, 0x83, 0xb4, 0x97, 0xea, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x33, 0x86, 0x0e, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0xba, 0xaf, 0xa5, 0x83, 0x77, 0x90, 0x25, 0x1c, 0x87, 0xd6, 0x20, 0xfd, 0xe9, 0x79, 0x10, 0x6c, 0x70, 0x0a, 0xc3, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0xb6, 0x40, 0xfe, 0x06, 0x4d, 0x8c, 0xce, 0x1f, 0x3c, 0x2f, 0x2f, 0xe1, 0x38, 0xb4, 0x06, 0x29, 0x45, 0xcf, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x06, 0xe4, 0xf1, 0x37, 0x68, 0x73, 0x71, 0xfe, 0xe0, 0x1d, 0x64, 0x09, 0xc7, 0xa1, 0x35, 0x48, 0x72, 0x8e, 0x1e, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xbc, 0x9c, 0x39, 0x61, 0xe1, 0x37, 0x9e, 0x1f, 0x2c, 0x68, 0x5c, 0x3a, 0x78, 0x4f, 0x5a, 0xc2, 0x71, 0x68, 0x0d, 0x92, 0x87, 0x98, 0x07, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xef, 0xb7, 0x4b, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0x4b, 0x3a, 0x97, 0x0e, 0xde, 0x93, 0x96, 0x70, 0x1c, 0x5a, 0x83, 0xc4, 0x10, 0x99, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x2b, 0x29, 0x0c, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0xa2, 0xd6, 0xa5, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0x83, 0xff, 0xef, 0x78, 0x7c, 0x1c, 0x5a, 0x83, 0xe4, 0x9f, 0xe7, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xcb, 0x0c, 0x13, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0x32, 0xe2, 0xa5, 0x83, 0xf7, 0xa4, 0x25, 0x1c, 0x87, 0xd6, 0x60, 0xb8, 0x56, 0x0d, 0x82, 0x0d, 0x4e, 0x61, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x9e, 0xca, 0x97, 0x70, 0xf0, 0x0a, 0xff, 0x84, 0xe3, 0xd0, 0x1a, 0x24, 0xa4, 0xdc, 0x0f, 0x82, 0x0d, 0x4e, 0x61, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x1e, 0xaf, 0x74, 0x70, 0xf0, 0x5a, 0x01, 0x85, 0xe3, 0xd0, 0x21, 0x86, 0xc7, 0xa1, 0x41, 0xb0, 0xc1, 0xab, 0xe1, 0x12, 0x0e, 0x5a, 0x31, 0xc0, 0x5f, 0x83, 0xe4, 0x21, 0xe6, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x78, 0x50, 0x52, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x6b, 0x90, 0x56, 0x1d, 0x3d, 0x08, 0x36, 0x38, 0x85, 0xe1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x78, 0x14, 0x64, 0xc2, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0x4c, 0xbf, 0x74, 0xf0, 0x0e, 0xb2, 0x84, 0xe3, 0xd0, 0x1a, 0x2c, 0xe0, 0xc8, 0x19, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0x77, 0x31, 0x61, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0xf1, 0x63, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x78, 0xab, 0xea, 0x78, 0x7c, 0x1c, 0x5a, 0x83, 0x94, 0x3e, 0xeb, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x4b, 0xa2, 0x12, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0x72, 0x02, 0xa6, 0x83, 0x77, 0x90, 0x25, 0x1c, 0x87, 0xd6, 0x20, 0xd1, 0x0f, 0x7a, 0x10, 0x6c, 0x70, 0x0a, 0xc3, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xf0, 0x18, 0xab, 0x83, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0x7e, 0x82, 0x69, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x40, 0x72, 0xff, 0xdf, 0xf1, 0xf8, 0x38, 0xb4, 0x06, 0x29, 0x9a, 0xcc, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0x81, 0xcb, 0x75, 0x10, 0xf0, 0xfe, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0xbd, 0x0d, 0xd3, 0xf0, 0x1b, 0xcf, 0x0f, 0x0e, 0xef, 0xb4, 0xc7, 0xa1, 0x35, 0x48, 0x3f, 0xb5, 0x18, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0xda, 0x36, 0x61, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0x41, 0x62, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x78, 0xaa, 0xea, 0x78, 0x7c, 0x1c, 0x5a, 0x83, 0x44, 0xa5, 0xe7, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x83, 0xdb, 0xf8, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0xb1, 0x1b, 0xd3, 0xc1, 0xa3, 0x76, 0x15, 0x8e, 0x43, 0x6b, 0x90, 0x52, 0xf4, 0x3c, 0x08, 0x36, 0x38, 0x85, 0xe1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x40, 0x1e, 0x7f, 0xe1, 0x37, 0x9e, 0x1f, 0x2c, 0x84, 0x64, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x90, 0xd8, 0xff, 0x77, 0x3c, 0x3e, 0x0e, 0xad, 0x41, 0x92, 0x73, 0xf4, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0xe5, 0xcc, 0x09, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0xc5, 0x2a, 0xd3, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xf3, 0x55, 0xd5, 0xf1, 0xf8, 0x38, 0xb4, 0x06, 0xc9, 0x3f, 0xcf, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x97, 0x19, 0x26, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x05, 0xd6, 0x4c, 0xc3, 0x6f, 0x3c, 0x3f, 0x34, 0x4e, 0x39, 0x0e, 0xad, 0x41, 0x62, 0x88, 0xcc, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x95, 0x14, 0x06, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x79, 0x31, 0xd3, 0xc1, 0x3b, 0xc8, 0x12, 0x8e, 0x43, 0x6b, 0xb0, 0x70, 0x1d, 0x67, 0x10, 0x6c, 0x70, 0x0a, 0xc3, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x90, 0xe6, 0x3a, 0x08, 0x78, 0xff, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0x0a, 0x9d, 0xe9, 0xe0, 0x1d, 0x64, 0x09, 0xc7, 0xa1, 0x43, 0x0c, 0x8f, 0x43, 0x83, 0x60, 0x83, 0xf7, 0xdb, 0x25, 0x1c, 0xb4, 0x62, 0x80, 0xbf, 0x06, 0x29, 0xe7, 0x24, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0xa0, 0xa4, 0x84, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xd7, 0x20, 0x21, 0xe5, 0x7e, 0x10, 0x6c, 0x70, 0x0a, 0xc3, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xf0, 0x78, 0xa5, 0x83, 0x0d, 0x9a, 0xe5, 0x97, 0x3f, 0x78, 0xee, 0x88, 0xc2, 0x71, 0x68, 0x0d, 0x52, 0x34, 0x99, 0x07, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x0f, 0xa1, 0x55, 0xd8, 0xa0, 0x4d, 0x78, 0xf9, 0x83, 0xf7, 0xa4, 0x25, 0x1c, 0x87, 0xd6, 0x20, 0xfd, 0xd4, 0x62, 0x10, 0x6c, 0x70, 0x0a, 0xc3, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xf0, 0x68, 0xdb, 0x84, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0xec, 0xa5, 0x69, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xc0, 0xd8, 0xae, 0x3a, 0x1e, 0x1f, 0x87, 0xd6, 0x20, 0x79, 0x88, 0x79, 0x10, 0x6c, 0x70, 0x0a, 0xc3, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xf0, 0x7e, 0xbb, 0x84, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0x36, 0xa8, 0xe9, 0xe0, 0xb9, 0x23, 0x0a, 0xc7, 0xa1, 0x35, 0x48, 0x39, 0x27, 0x19, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb4, 0x51, 0x92, 0xbf, 0xf0, 0x1b, 0xcf, 0x0f, 0x56, 0x47, 0x35, 0x1d, 0x3c, 0x2f, 0x2f, 0xe1, 0x38, 0x74, 0x88, 0xe1, 0x71, 0x68, 0x10, 0x6c, 0xd0, 0x46, 0x49, 0xfe, 0x41, 0x2b, 0x06, 0xf8, 0x6b, 0x90, 0x18, 0x22, 0x33, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x0f, 0x4a, 0x4a, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0d, 0xd2, 0xaa, 0xa3, 0x07, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8f, 0x82, 0x4c, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0xeb, 0xc3, 0x9a, 0x0e, 0x9e, 0x97, 0x97, 0x70, 0x1c, 0x5a, 0x83, 0xb4, 0x97, 0xea, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x33, 0x86, 0x0e, 0x16, 0x7e, 0xe3, 0xf9, 0xc1, 0xe2, 0xd3, 0xa6, 0x83, 0x55, 0x1e, 0x52, 0xc7, 0xa1, 0x35, 0x48, 0xfe, 0x79, 0x1e, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xbc, 0xcc, 0x30, 0x61, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0xca, 0x6d, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x30, 0xb8, 0xaa, 0x8e, 0xc7, 0xc7, 0xa1, 0x35, 0x58, 0x19, 0x8e, 0x33, 0x08, 0x36, 0x38, 0x85, 0xe1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x78, 0x35, 0x5c, 0xc2, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0x8d, 0xdf, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x20, 0xb0, 0xab, 0x8e, 0xc7, 0xc7, 0xa1, 0x35, 0x48, 0x48, 0xb9, 0x1f, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0x5e, 0xe9, 0x60, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0x8a, 0x6b, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x30, 0xe8, 0xff, 0x8e, 0xc7, 0xc7, 0xa1, 0x35, 0x48, 0xd1, 0x64, 0x1e, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0x84, 0x56, 0x61, 0xe1, 0x37, 0x9e, 0x1f, 0xac, 0x30, 0x6c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xf8, 0xbf, 0xea, 0x78, 0x7c, 0x1c, 0x5a, 0x83, 0x94, 0x73, 0x92, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x1b, 0x25, 0xf9, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0xe9, 0x65, 0xd3, 0xc1, 0x63, 0x2b, 0x16, 0x8e, 0x43, 0x6b, 0x90, 0x7e, 0x6a, 0x31, 0x08, 0x36, 0x38, 0x85, 0xe1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x78, 0xb4, 0x6d, 0xc2, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0xaf, 0xdc, 0x74, 0xf0, 0x0e, 0xb2, 0x84, 0xe3, 0xd0, 0x1a, 0x24, 0x2a, 0x3d, 0x0f, 0x82, 0x0d, 0x4e, 0x61, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x1a, 0xdc, 0xc6, 0x5f, 0xf8, 0x8d, 0xe7, 0x07, 0xeb, 0xd2, 0x9b, 0x0e, 0xde, 0x41, 0x96, 0x70, 0x1c, 0x5a, 0x83, 0xf4, 0xa7, 0xe7, 0x41, 0xb0, 0xc1, 0x29, 0x0c, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xdb, 0x02, 0xf9, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x81, 0x76, 0xd3, 0xc1, 0x3b, 0xc8, 0x12, 0x8e, 0x43, 0x6b, 0x30, 0x5c, 0xab, 0x06, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x4f, 0xe5, 0x4b, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0x6b, 0x5c, 0x9c, 0x0e, 0x96, 0x68, 0xa2, 0x1d, 0x87, 0xd6, 0x20, 0x81, 0x0c, 0x7a, 0x10, 0x6c, 0x70, 0x0a, 0xc3, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xf0, 0x9a, 0x06, 0x83, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0xfe, 0xca, 0xe9, 0xe0, 0x1d, 0x64, 0x09, 0xc7, 0xa1, 0x35, 0x48, 0x29, 0x7a, 0x1e, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x34, 0x20, 0x8f, 0xbf, 0xf0, 0x1b, 0xcf, 0x0f, 0x16, 0x3c, 0x38, 0x1d, 0xbc, 0x83, 0x2c, 0xe1, 0x38, 0xb4, 0x06, 0xc9, 0x43, 0xcc, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf7, 0xdb, 0x25, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x15, 0x1e, 0x4e, 0x07, 0xcf, 0x1d, 0x51, 0x38, 0x0e, 0x1d, 0x62, 0x78, 0x1c, 0x1a, 0x04, 0x1b, 0xbc, 0x92, 0xc2, 0xe0, 0xa0, 0x15, 0x03, 0xfc, 0x35, 0x48, 0xfe, 0x79, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x07, 0x25, 0x25, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x06, 0x69, 0xd5, 0xd1, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x47, 0x41, 0x26, 0x6c, 0xd0, 0x6c, 0xff, 0xfc, 0xc1, 0xdb, 0x98, 0x14, 0x8e, 0x43, 0x6b, 0x90, 0x90, 0x72, 0x3f, 0x08, 0x36, 0x38, 0x85, 0xe1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x78, 0xbc, 0xd2, 0xc1, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0xe4, 0xe9, 0x74, 0x70, 0x36, 0xe9, 0x3d, 0x0e, 0xad, 0x41, 0xda, 0x4b, 0xf5, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x19, 0x43, 0x07, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x55, 0xab, 0xd3, 0xc1, 0xd9, 0xa4, 0xf7, 0x38, 0xb4, 0x06, 0xe9, 0xa7, 0x16, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x47, 0xdb, 0x26, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x15, 0xcc, 0x4e, 0x07, 0xef, 0x20, 0x4b, 0x38, 0x0e, 0xad, 0x41, 0xa2, 0xd2, 0xf3, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0xc1, 0x6d, 0xfc, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0x64, 0xdb, 0xe9, 0xe0, 0x1d, 0x64, 0x09, 0xc7, 0xa1, 0x35, 0x48, 0x7f, 0x7a, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x03, 0xcd, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0x4f, 0x0c, 0x0a, 0x38, 0x0e, 0x0d, 0x82, 0x0d, 0xda, 0x16, 0xc8, 0x3f, 0x68, 0xc5, 0x00, 0x7f, 0x0d, 0x56, 0x86, 0xe3, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x81, 0xe6, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xf0, 0xfe, 0xdf, 0xf1, 0xf8, 0x38, 0x74, 0xf0, 0x20, 0x4d, 0x85, 0x35, 0x48, 0x0c, 0x91, 0x19, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x03, 0xcd, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xe0, 0xf9, 0xaa, 0xe3, 0xf1, 0x71, 0xe8, 0xe0, 0x51, 0x3a, 0x0b, 0x6b, 0xb0, 0xb0, 0x1e, 0x67, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x0e, 0x34, 0xb7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0xba, 0x98, 0x1c, 0x87, 0x06, 0xc1, 0x06, 0x2d, 0x5e, 0xe4, 0x1f, 0xb4, 0x62, 0x80, 0xbf, 0x06, 0x29, 0x45, 0xcf, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0x70, 0xa0, 0xb9, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x18, 0xde, 0x55, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0xd8, 0xa0, 0x01, 0x79, 0xfc, 0x83, 0x56, 0x0c, 0xf0, 0xd7, 0x20, 0xc9, 0x39, 0x7a, 0x10, 0x6c, 0x70, 0x0a, 0xc3, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xf0, 0x72, 0xe6, 0x84, 0x0d, 0x1a, 0xb6, 0x8f, 0x3f, 0x78, 0x1b, 0x93, 0xc2, 0x71, 0x68, 0x0d, 0xd2, 0xa1, 0x3c, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0x40, 0x73, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x30, 0xfc, 0xff, 0x8e, 0xc7, 0xc7, 0xa1, 0x41, 0xb0, 0xc1, 0x73, 0xba, 0x12, 0x0e, 0x5a, 0x31, 0xc0, 0x5f, 0x83, 0xe4, 0x21, 0xe6, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x38, 0xd0, 0xdc, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xd6, 0x3e, 0xa5, 0x1d, 0x87, 0x0e, 0x5e, 0xa2, 0xad, 0xb0, 0x06, 0x0b, 0xd7, 0x71, 0x06, 0xc1, 0x06, 0xa7, 0x30, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xaf, 0xb3, 0x56, 0xd8, 0xa0, 0xf5, 0x7f, 0xf8, 0x83, 0xf7, 0xa4, 0x25, 0x1c, 0x87, 0x0e, 0x31, 0x3c, 0x0e, 0x0d, 0x82, 0x0d, 0x5e, 0x66, 0x98, 0x70, 0xd0, 0x8a, 0x01, 0xfe, 0x1a, 0x2c, 0x5c, 0xc7, 0x19, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x07, 0x25, 0x25, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x06, 0x09, 0x29, 0xf7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0x70, 0xa0, 0xb9, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x1c, 0x57, 0xc7, 0xe3, 0xe3, 0xd0, 0xc1, 0x6b, 0x95, 0x0e, 0xd6, 0x20, 0xed, 0xa5, 0x7a, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x0e, 0x34, 0xb7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x0e, 0x92, 0x81, 0xd6, 0x55, 0x83, 0x68, 0xc1, 0xf9, 0xc3, 0xd1, 0x7e, 0x3c, 0x3f, 0x1e, 0x1f, 0x87, 0x0e, 0xde, 0x2d, 0x74, 0xb0, 0x06, 0x09, 0x64, 0xd0, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xd7, 0x34, 0x18, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x85, 0x61, 0x4f, 0x07, 0xef, 0x20, 0x4b, 0x38, 0x0e, 0xad, 0x41, 0xca, 0x39, 0xc9, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x8d, 0x92, 0xfc, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0x3c, 0xf2, 0xe9, 0xe0, 0x1d, 0x64, 0x09, 0xc7, 0xa1, 0x35, 0x48, 0x54, 0x7a, 0x1e, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x34, 0xb8, 0x8d, 0xbf, 0xf0, 0x1b, 0xcf, 0x0f, 0x96, 0xc6, 0x3d, 0x1d, 0xbc, 0x27, 0x2d, 0xe1, 0x38, 0xb4, 0x06, 0xe9, 0xa7, 0x16, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x47, 0xdb, 0x26, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xc5, 0x81, 0x4f, 0x07, 0xcf, 0xcb, 0x4b, 0x38, 0x0e, 0xad, 0x41, 0x3a, 0x94, 0xc7, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x39, 0x5d, 0x09, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0x89, 0xec, 0xd3, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xe3, 0xff, 0xdf, 0xf1, 0xf8, 0x38, 0xb4, 0x06, 0x89, 0x21, 0x32, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x57, 0x52, 0x18, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x05, 0xa2, 0x4f, 0x07, 0xef, 0x49, 0x4b, 0x38, 0x0e, 0xad, 0x41, 0xf2, 0xcf, 0xf3, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x65, 0x86, 0x09, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0xe9, 0xf3, 0xd3, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0xc0, 0x51, 0x75, 0x3c, 0x3e, 0x0e, 0x1d, 0x62, 0x78, 0x1c, 0x1a, 0x04, 0x1b, 0xbc, 0xce, 0x5a, 0xe1, 0xa0, 0x15, 0x03, 0xfc, 0x43, 0x0c, 0x8f, 0x43, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x3b, 0x00, 0xf8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0x32, 0x20, 0xd0, 0xd5, 0x0e, 0x2b, 0xb4, 0x07, 0x8f, 0xd2, 0x59, 0x38, 0x0e, 0x1d, 0xbc, 0xa2, 0xe8, 0x60, 0x10, 0x2c, 0x08, 0x36, 0x78, 0x05, 0x05, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x2f, 0x48, 0x36, 0x68, 0x26, 0xe0, 0xfd, 0x20, 0xe0, 0xfd, 0x07, 0xc9, 0x80, 0xc4, 0x5d, 0xae, 0x83, 0x80, 0xf7, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x01, 0x31, 0x06, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x5a, 0x88, 0xcb, 0x3f, 0x78, 0x54, 0xd1, 0xc1, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x07, 0x6f, 0x3f, 0x14, 0x18, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x10, 0x16, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x2d, 0xa6, 0xf3, 0x1f, 0x34, 0xfb, 0xeb, 0x7e, 0x1c, 0x1a, 0x04, 0x1b, 0x04, 0x59, 0xfc, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xd9, 0x8a, 0x83, 0x42, 0x98, 0xe1, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x36, 0x68, 0x07, 0x13, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x0d, 0x4a, 0x3b, 0xb2, 0x83, 0x97, 0xef, 0x23, 0x1c, 0x87, 0x06, 0xc1, 0x06, 0x2f, 0x48, 0x48, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x70, 0x8a, 0x1d, 0x52, 0x07, 0xc7, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xed, 0x3b, 0xac, 0xd0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x1e, 0x52, 0x35, 0xc7, 0xa1, 0x83, 0xf7, 0x3b, 0x23, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0xb4, 0xba, 0x74, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xf1, 0xa0, 0xf4, 0x8d, 0x58, 0x1c, 0x76, 0x83, 0xe2, 0xe2, 0x70, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0x16, 0xc2, 0xec, 0xaf, 0x21, 0x86, 0x1b, 0x1a, 0xea, 0x1c, 0xc6, 0x65, 0x41, 0xb0, 0x21, 0x86, 0x83, 0x68, 0x71, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xb7, 0x67, 0x11, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x6a, 0xb0, 0x92, 0x2d, 0xeb, 0xd0, 0x50, 0xe7, 0x10, 0xc3, 0x0d, 0x16, 0xc2, 0xec, 0x1f, 0x62, 0x78, 0x88, 0xe1, 0x71, 0xe8, 0x38, 0x74, 0xf0, 0xb2, 0xee, 0x85, 0x0d, 0xc6, 0x4f, 0xd7, 0xc1, 0xcb, 0xba, 0x17, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x07, 0x6f, 0x11, 0x43, 0x18, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x50, 0x29, 0x82, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x1b, 0xbc, 0x93, 0x13, 0x61, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0xa7, 0x2a, 0x18, 0x1c, 0xb4, 0x62, 0x80, 0x3f, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x28, 0x7f, 0xbb, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x31, 0xf8, 0x15, 0xfe, 0x38, 0x74, 0xd0, 0x8a, 0x01, 0xfe, 0x71, 0xe8, 0xa0, 0xe1, 0xaf, 0xfb, 0xe3, 0xd0, 0x2a, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0xf3, 0xab, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x5a, 0x81, 0x7c, 0x1f, 0x7e, 0xe3, 0xf9, 0xc1, 0x1b, 0x1d, 0x11, 0x8e, 0x43, 0x07, 0x2f, 0xcb, 0x39, 0x38, 0x1e, 0xaf, 0x38, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0x62, 0xaf, 0x3f, 0x08, 0x36, 0x78, 0xee, 0x6c, 0xc1, 0xc1, 0xa2, 0x74, 0x92, 0x83, 0x77, 0x14, 0x17, 0x1c, 0x3c, 0x59, 0xc9, 0xe0, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x31, 0x9a, 0xb3, 0x38, 0xec, 0x06, 0x81, 0x89, 0xbd, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x86, 0x71, 0x19, 0x04, 0x1b, 0xb2, 0x76, 0x07, 0x6b, 0x61, 0x4a, 0x0e, 0xd1, 0x3c, 0x1e, 0xaf, 0x38, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0x3d, 0xb2, 0x05, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0xe1, 0xfd, 0x77, 0x3c, 0x3f, 0x78, 0x79, 0x71, 0xc1, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x60, 0xec, 0x8e, 0xe7, 0x07, 0x2f, 0x2f, 0x2e, 0x38, 0x1e, 0xaf, 0xe2, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x3e, 0x78, 0xae, 0x85, 0xc1, 0xc1, 0xfb, 0x66, 0x0b, 0x8e, 0xc7, 0xab, 0x38, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x9b, 0x86, 0x0c, 0x0e, 0xde, 0x37, 0x5b, 0x70, 0x3c, 0x5e, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0x77, 0xfc, 0x18, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xda, 0xfd, 0x1d, 0xcf, 0x0f, 0x16, 0xa5, 0x93, 0x1c, 0xbc, 0x2c, 0xe7, 0xe0, 0x78, 0x3c, 0xc8, 0x36, 0xc4, 0x65, 0x10, 0x6c, 0xd0, 0xb8, 0x6e, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xe0, 0xa5, 0x2f, 0x07, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0x0f, 0x4a, 0x4a, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0d, 0x16, 0x70, 0xe4, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x83, 0x92, 0x12, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0x83, 0x84, 0x94, 0xfb, 0x83, 0x17, 0x9b, 0x26, 0xac, 0x41, 0xa2, 0x1f, 0xf4, 0xc1, 0x83, 0x5c, 0x13, 0xd6, 0x20, 0xfd, 0xd4, 0xe2, 0xe0, 0x55, 0xb5, 0x09, 0x6b, 0x90, 0xa8, 0xf4, 0x7c, 0xf0, 0xa6, 0xde, 0x84, 0x35, 0x58, 0x19, 0x8e, 0x73, 0xf0, 0xb0, 0xe9, 0x84, 0x35, 0x48, 0x1e, 0x62, 0x3e, 0x78, 0x9b, 0x76, 0xc2, 0x1a, 0xa4, 0x55, 0x47, 0x1f, 0xbc, 0x8a, 0x38, 0x61, 0x0d, 0x92, 0x9c, 0xa3, 0x0f, 0x9e, 0xb6, 0x9c, 0xb0, 0x06, 0xe9, 0x50, 0x1e, 0x07, 0x6f, 0xc8, 0x4c, 0x58, 0x83, 0x94, 0x3e, 0xeb, 0x83, 0x67, 0x80, 0x26, 0xac, 0x41, 0xfa, 0xd3, 0xf3, 0xc1, 0xab, 0xc4, 0x13, 0xd6, 0x20, 0x31, 0x44, 0xe6, 0xe0, 0x5d, 0xe9, 0x09, 0x6b, 0x90, 0xfc, 0xf3, 0x7c, 0xf0, 0x68, 0xf8, 0x84, 0x35, 0x48, 0x39, 0x27, 0x19, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb4, 0x51, 0x92, 0xbf, 0x41, 0x0b, 0xd9, 0xf4, 0x07, 0xef, 0x49, 0x4b, 0x38, 0x0e, 0xad, 0x41, 0x4a, 0xd1, 0xf3, 0xc1, 0xfb, 0xee, 0x13, 0x0e, 0x31, 0x3c, 0x0e, 0x1d, 0x3c, 0x92, 0x40, 0x61, 0x0d, 0x12, 0xfd, 0xa0, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0x41, 0x49, 0x09, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0xaf, 0xc1, 0xca, 0x70, 0x9c, 0x41, 0xb0, 0x41, 0xab, 0x4b, 0xf7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x37, 0x58, 0xd5, 0xab, 0xb4, 0x41, 0x78, 0xaa, 0x6e, 0x10, 0x82, 0x0f, 0x1b, 0x84, 0xe0, 0xc3, 0x41, 0x08, 0x3e, 0x2c, 0x6e, 0xb0, 0xc8, 0x9d, 0x6a, 0x43, 0x23, 0xc1, 0x0d, 0x9d, 0xd4, 0x36, 0x34, 0xe1, 0x3a, 0x38, 0xa9, 0x9f, 0x1f, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0x85, 0xe1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x78, 0x35, 0x5c, 0xc2, 0x06, 0xaf, 0xab, 0x50, 0x38, 0x78, 0x6b, 0x77, 0xc0, 0x71, 0xe8, 0x38, 0xb4, 0x06, 0x29, 0x45, 0xcf, 0x83, 0x60, 0x83, 0x56, 0x97, 0xee, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0x10, 0x9e, 0xaa, 0x07, 0x2f, 0xb8, 0x61, 0x58, 0xdc, 0x60, 0x91, 0x3b, 0xd5, 0x86, 0x46, 0x82, 0x1b, 0x3a, 0xa9, 0x1d, 0x1c, 0xc5, 0xe2, 0x8f, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x34, 0x20, 0x8f, 0xbf, 0xc1, 0x2b, 0x35, 0x14, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x96, 0xfe, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0x1a, 0xa4, 0x3f, 0x3d, 0x0f, 0x82, 0x0d, 0x5a, 0x5d, 0xba, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xb8, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0xf0, 0x54, 0x3d, 0x08, 0xc1, 0x87, 0xc5, 0x0d, 0x16, 0xb9, 0x53, 0x6d, 0x68, 0x24, 0xb8, 0x41, 0x50, 0x7a, 0x1f, 0x62, 0x78, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x14, 0x86, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x6d, 0x81, 0xfc, 0x0d, 0x9e, 0xed, 0xa1, 0x70, 0xf0, 0xb6, 0xee, 0x84, 0xe3, 0xd0, 0x71, 0x68, 0x0d, 0xd2, 0x5e, 0xaa, 0x07, 0xc1, 0x06, 0xad, 0x2e, 0xdd, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xdc, 0xe0, 0xd4, 0x70, 0x74, 0xd0, 0xb0, 0x43, 0xf3, 0xe2, 0x06, 0x8b, 0xdc, 0xa9, 0x36, 0x08, 0x4a, 0xef, 0x83, 0x96, 0x5b, 0x53, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0xc2, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0x63, 0xe8, 0x60, 0x83, 0x67, 0x44, 0x28, 0x1c, 0x3c, 0x2f, 0x2f, 0xe1, 0x38, 0x74, 0x1c, 0x5a, 0x83, 0x84, 0x94, 0xfb, 0x41, 0xb0, 0x41, 0xab, 0x4b, 0xf7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x37, 0xbc, 0xdb, 0x73, 0xd0, 0x64, 0x4f, 0xc9, 0xe2, 0x06, 0x8b, 0xdc, 0xa9, 0x0e, 0x46, 0x78, 0xda, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x53, 0x18, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc7, 0x2b, 0x1d, 0x6c, 0xd0, 0x2e, 0xc6, 0xfb, 0xf0, 0x1b, 0xcf, 0x0f, 0x1a, 0x78, 0x61, 0x3a, 0x0e, 0x1d, 0x87, 0x0e, 0x31, 0x3c, 0x0e, 0x1d, 0xbc, 0xbe, 0xea, 0x60, 0x0d, 0x16, 0xd6, 0xe3, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0x91, 0x55, 0x08, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x9a, 0x6b, 0xa9, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xd5, 0xa5, 0xfb, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0x1b, 0x1c, 0x17, 0x4f, 0x0e, 0x42, 0xf0, 0x61, 0x71, 0x83, 0xf1, 0xd3, 0x35, 0x08, 0x16, 0x24, 0x03, 0x96, 0xaf, 0xf7, 0x1d, 0x0c, 0x47, 0xe9, 0x83, 0xf5, 0x1e, 0x3b, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0xec, 0x18, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x63, 0x4a, 0xf2, 0xc3, 0x6f, 0x3c, 0x3f, 0x58, 0xde, 0x64, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xcc, 0x33, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x66, 0x62, 0xe4, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x0f, 0x5e, 0xd1, 0x97, 0x30, 0x08, 0x36, 0x78, 0x08, 0xad, 0xc2, 0x41, 0xc3, 0x5f, 0xf7, 0xc7, 0xa1, 0x83, 0x86, 0xc0, 0xf1, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x3c, 0x20, 0xc6, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xc1, 0x1b, 0x69, 0x15, 0x06, 0xc1, 0x06, 0x4f, 0xdd, 0x63, 0x18, 0x04, 0x1b, 0x04, 0x59, 0xfc, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xd9, 0x8a, 0x41, 0x32, 0x50, 0xd4, 0x0e, 0x02, 0xde, 0xff, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x07, 0x25, 0x25, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x06, 0x2b, 0xc6, 0x63, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0x91, 0x55, 0x08, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x5a, 0x62, 0x89, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x91, 0x55, 0x08, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x16, 0x32, 0x46, 0x0d, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x9a, 0x79, 0xc6, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0x9e, 0xbb, 0x98, 0x70, 0x1c, 0x1a, 0x04, 0x1b, 0x3c, 0xaa, 0xe8, 0xe0, 0xa0, 0x21, 0x70, 0xfc, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xab, 0x4b, 0xf7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x37, 0x58, 0xb4, 0x57, 0xb5, 0x86, 0xdc, 0xf7, 0x06, 0x69, 0xa1, 0xd9, 0x87, 0x71, 0x59, 0x83, 0xd5, 0x45, 0x56, 0x1b, 0xa2, 0x39, 0xec, 0x06, 0x0b, 0xdb, 0x1c, 0x36, 0x68, 0xaa, 0x68, 0x7e, 0xd8, 0x85, 0xdb, 0x60, 0x48, 0xfd, 0x1e, 0xc6, 0x65, 0x83, 0x55, 0x6b, 0x54, 0x83, 0x6c, 0x43, 0xf3, 0xf5, 0x0d, 0x56, 0x34, 0x1d, 0x6d, 0xb0, 0xf0, 0xc2, 0xe8, 0x30, 0x2e, 0x87, 0x18, 0x1e, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0x0c, 0x48, 0x76, 0x57, 0x3b, 0xac, 0xd0, 0x1e, 0x3c, 0x08, 0x6f, 0xe1, 0xe0, 0x51, 0x3a, 0x0b, 0x07, 0xaf, 0x28, 0x3a, 0x38, 0x0e, 0x1d, 0x34, 0x04, 0x8e, 0xbf, 0x06, 0xe9, 0x50, 0x1e, 0x83, 0x60, 0x83, 0x56, 0x97, 0xee, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x06, 0x8b, 0xf6, 0xaa, 0xd6, 0x90, 0xfb, 0x3e, 0x58, 0x33, 0x1f, 0xb3, 0x06, 0x2b, 0x9a, 0x8e, 0x36, 0x58, 0x78, 0x61, 0x74, 0x48, 0x1d, 0x1c, 0x62, 0x78, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x0f, 0x1e, 0x45, 0xca, 0x70, 0x1c, 0x5a, 0x83, 0xe4, 0x9f, 0xe7, 0x41, 0xb0, 0x41, 0x33, 0xcf, 0xf8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x1e, 0x1c, 0x7b, 0x5b, 0x0f, 0x5e, 0x66, 0x98, 0x70, 0x1c, 0x5a, 0x83, 0xe4, 0x21, 0xe6, 0x41, 0xb0, 0x41, 0x33, 0xcf, 0xf8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x1e, 0x1c, 0xe8, 0x4e, 0x0e, 0xde, 0x6f, 0x97, 0x70, 0x1c, 0x3a, 0xc4, 0xf0, 0x38, 0x74, 0x1c, 0x3a, 0x68, 0xf8, 0xeb, 0xfe, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0x3c, 0x84, 0x56, 0xe1, 0xa0, 0x15, 0x03, 0xfc, 0x83, 0xa7, 0xa1, 0x2d, 0x1c, 0x62, 0x78, 0x1c, 0x5a, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x1a, 0x3b, 0xc6, 0x3f, 0x48, 0x51, 0x7e, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x0a, 0x0a, 0x82, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x5f, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x0f, 0x5e, 0x7f, 0x89, 0x30, 0x08, 0x36, 0x78, 0x2a, 0x5f, 0xc2, 0x41, 0xc3, 0x5f, 0xf7, 0x07, 0x2d, 0xc6, 0xe3, 0x1f, 0xbc, 0xfe, 0x12, 0x61, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x07, 0xc4, 0x18, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x78, 0xe2, 0x25, 0xc2, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x19, 0x10, 0xde, 0x7f, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0xa3, 0x8a, 0x0e, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0x62, 0x90, 0x0c, 0xb4, 0xfe, 0x3b, 0x1e, 0x1f, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0x07, 0x0d, 0x81, 0xe3, 0x0f, 0xbb, 0x21, 0x55, 0xb3, 0xc1, 0x53, 0x15, 0x0c, 0x0e, 0x9a, 0xc7, 0xc6, 0x5f, 0xd8, 0x0d, 0xa9, 0x9a, 0x0d, 0x9e, 0x0c, 0x64, 0x70, 0xd0, 0x3c, 0x36, 0xfe, 0x2a, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x1e, 0xd9, 0x82, 0x83, 0x57, 0x10, 0x19, 0x1c, 0x8f, 0x17, 0x64, 0x1b, 0xe2, 0x32, 0x08, 0x36, 0x68, 0x5c, 0x37, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0xf0, 0xc4, 0x4b, 0x84, 0xe3, 0xd0, 0xc2, 0x6e, 0x48, 0xd5, 0x2c, 0x48, 0x06, 0x9e, 0xff, 0x3b, 0xac, 0xd0, 0x1e, 0x3c, 0x20, 0x77, 0x61, 0xc5, 0x41, 0xb0, 0xc1, 0xeb, 0x2d, 0x0c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0xf0, 0x62, 0x45, 0x84, 0x83, 0x77, 0x14, 0x17, 0x1c, 0x3c, 0x59, 0xc9, 0xe0, 0x38, 0x74, 0x3c, 0x1e, 0x76, 0x43, 0xaa, 0x66, 0x41, 0x32, 0x90, 0x56, 0x1b, 0x44, 0x0b, 0xb6, 0x87, 0xa3, 0xfd, 0xb0, 0x42, 0x3b, 0x48, 0x06, 0xc6, 0xef, 0xe0, 0x51, 0xe0, 0x0c, 0x2b, 0x0e, 0x82, 0x0d, 0x5a, 0x97, 0x75, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xb8, 0xc1, 0x42, 0x6b, 0xab, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x67, 0x03, 0x17, 0x1c, 0xb4, 0x8f, 0xcb, 0x74, 0xe8, 0xa0, 0x71, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xf5, 0x16, 0x06, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x62, 0x3d, 0x83, 0x83, 0x27, 0x24, 0x17, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x15, 0x64, 0x1b, 0xe2, 0x32, 0x08, 0x36, 0x68, 0x5c, 0x37, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0xf0, 0x6e, 0x19, 0x83, 0xe3, 0xd0, 0x2a, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x1e, 0xd9, 0x82, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xaf, 0xb7, 0x30, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0xe0, 0x31, 0x8b, 0x08, 0xc7, 0xa1, 0x83, 0xc7, 0xd2, 0x16, 0x1c, 0x8f, 0x17, 0x0f, 0x9e, 0x2a, 0x5b, 0x70, 0x3c, 0x1e, 0x04, 0x6b, 0xf0, 0x0a, 0xa0, 0x84, 0x0d, 0x31, 0x3c, 0x78, 0x62, 0x50, 0xc2, 0xe2, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x3c, 0x1b, 0x31, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0x87, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcf, 0x46, 0x0c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x5c, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x5b, 0x8c, 0x12, 0x0e, 0xdd, 0x8f, 0x8e, 0x43, 0xc7, 0xa1, 0x83, 0x97, 0x1e, 0x25, 0x1c, 0x8f, 0x57, 0x1c, 0x04, 0x1b, 0xb4, 0x2e, 0xeb, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd7, 0xfa, 0x16, 0x2c, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xcf, 0x06, 0x2e, 0x18, 0x24, 0x03, 0xd5, 0xee, 0x90, 0x9c, 0x3b, 0x48, 0xcc, 0x31, 0x39, 0x1e, 0x1f, 0x3c, 0x68, 0xb8, 0xe0, 0x38, 0x74, 0x3c, 0x5e, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xde, 0x23, 0x5b, 0x30, 0x08, 0x36, 0x78, 0x47, 0x2a, 0xc2, 0xc1, 0x63, 0x69, 0x0b, 0x8e, 0xc7, 0x2b, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0xe2, 0xd8, 0x82, 0x83, 0xf7, 0xcd, 0x16, 0x1c, 0x8f, 0x57, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x9a, 0x5f, 0x75, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0x9e, 0x3b, 0x5b, 0x70, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xf7, 0xc8, 0x16, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x14, 0x57, 0x55, 0xc7, 0xf3, 0x83, 0xc7, 0xd2, 0x16, 0x1c, 0x34, 0x3f, 0xad, 0x7f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x57, 0x50, 0x10, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xb0, 0x1b, 0x52, 0x35, 0x2b, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0xb3, 0xda, 0x0c, 0x06, 0xc1, 0x06, 0x6d, 0x42, 0xe5, 0x1f, 0x34, 0xfc, 0x75, 0x3f, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x0f, 0x9a, 0x8b, 0xca, 0x1f, 0x04, 0x1b, 0xbc, 0x8a, 0x7d, 0xe1, 0xa0, 0xe1, 0xaf, 0xfb, 0x05, 0xc9, 0x80, 0xe6, 0x77, 0xb9, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x08, 0x56, 0xae, 0x83, 0x80, 0xf7, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x28, 0xd7, 0xbb, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xbb, 0x65, 0x0c, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x8b, 0x6a, 0x0c, 0x06, 0xc1, 0x06, 0x2f, 0xde, 0x44, 0x38, 0x78, 0xe2, 0x32, 0xc3, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x99, 0x67, 0xfc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0xe4, 0xe0, 0xfd, 0x76, 0x09, 0xc7, 0xa1, 0x83, 0x86, 0xc0, 0xf1, 0x57, 0x1c, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xde, 0x23, 0x5b, 0x30, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x90, 0xda, 0xff, 0x77, 0x3c, 0x3f, 0x78, 0x2c, 0x6d, 0xc1, 0xc1, 0x3b, 0x8a, 0x0b, 0x06, 0xc1, 0x06, 0x4f, 0x1f, 0x44, 0x38, 0x78, 0x79, 0x71, 0xc1, 0xf1, 0x78, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x5e, 0xe7, 0xc0, 0x70, 0xf0, 0xbe, 0xd9, 0x82, 0xe3, 0xf1, 0xe2, 0x20, 0xd8, 0xe0, 0xf5, 0x16, 0x06, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0xf7, 0x41, 0x22, 0x1c, 0xbc, 0x6f, 0xb6, 0xe0, 0x38, 0x74, 0x3c, 0x5e, 0x71, 0x10, 0x6c, 0xd0, 0xba, 0xac, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5e, 0xeb, 0x5b, 0xb0, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x3c, 0x1b, 0xb8, 0xe0, 0xe0, 0xc5, 0x4b, 0x01, 0x07, 0x89, 0x39, 0x26, 0xc7, 0xe3, 0x83, 0x07, 0x0d, 0x17, 0x1c, 0x87, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x96, 0x9b, 0x92, 0x2c, 0x0e, 0xbb, 0x41, 0x60, 0x62, 0x2f, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x19, 0xe8, 0x4a, 0x75, 0x30, 0x0c, 0x7d, 0x0e, 0x1e, 0x06, 0x5d, 0x70, 0xb0, 0x2a, 0xa4, 0x64, 0x90, 0x0c, 0xd4, 0xb7, 0x83, 0x61, 0xe8, 0x73, 0x3c, 0x5e, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x07, 0xc8, 0x16, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xea, 0xde, 0x21, 0x5b, 0x71, 0xf0, 0x58, 0xda, 0x82, 0xe3, 0xf1, 0x8a, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x3c, 0x79, 0xbf, 0xe0, 0xe0, 0x7d, 0xb3, 0x05, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0x03, 0x62, 0x0c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0x9f, 0x15, 0x61, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xbc, 0xa8, 0xc6, 0x60, 0x10, 0x6c, 0xf0, 0xc8, 0x93, 0x84, 0x83, 0x37, 0xdf, 0x18, 0x1c, 0x87, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0x72, 0x53, 0x92, 0xc5, 0x41, 0xb0, 0x20, 0xd9, 0x60, 0xb1, 0xad, 0xc8, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x9c, 0x83, 0xe3, 0xe2, 0xc9, 0xe2, 0xf0, 0x0b, 0xa2, 0x05, 0xd3, 0x61, 0x17, 0x76, 0xe1, 0x0e, 0x5e, 0xf3, 0xc4, 0x70, 0x58, 0xdf, 0x5c, 0x83, 0xc5, 0x7e, 0x54, 0x6b, 0xb0, 0xba, 0x91, 0x6a, 0x43, 0x0c, 0x0f, 0x5e, 0xf3, 0xc4, 0x70, 0x68, 0x24, 0x78, 0x68, 0x24, 0x78, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x0d, 0x06, 0xf7, 0xf4, 0x41, 0xcb, 0xe0, 0x2c, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x5a, 0x00, 0x0d, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf5, 0x0d, 0x16, 0xfb, 0x51, 0x6d, 0xb0, 0x34, 0x02, 0xeb, 0xd0, 0x02, 0xe8, 0xa0, 0xa8, 0x39, 0x3b, 0xbe, 0x1d, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xa3, 0x77, 0x48, 0x2e, 0x1d, 0x1a, 0xb5, 0x1c, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0xe5, 0xa6, 0x24, 0x8b, 0x83, 0x60, 0x83, 0x77, 0x48, 0x35, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x9c, 0x83, 0x26, 0x7b, 0x4a, 0x16, 0x87, 0x5f, 0x10, 0x2d, 0x98, 0x0e, 0xbb, 0xc1, 0xa3, 0xac, 0x1a, 0xd6, 0x60, 0x09, 0xee, 0xd1, 0xc1, 0x4b, 0xb0, 0x1a, 0x0e, 0x8d, 0x04, 0x8f, 0xc7, 0x83, 0x60, 0x83, 0x37, 0x6b, 0x35, 0x0c, 0x82, 0xc5, 0x61, 0x37, 0xac, 0xef, 0x6d, 0x68, 0x01, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xd7, 0x37, 0x58, 0x82, 0x7b, 0x74, 0xf0, 0x56, 0xaf, 0x86, 0x83, 0xa2, 0xe6, 0xec, 0xf8, 0x76, 0x3c, 0x3e, 0x78, 0x22, 0x58, 0xc3, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x60, 0xb9, 0x29, 0xc9, 0xe2, 0x20, 0xd8, 0xe0, 0x15, 0xfd, 0x04, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x37, 0x38, 0x4d, 0xf6, 0x1e, 0x84, 0xa7, 0xea, 0xc1, 0x2b, 0x01, 0x0a, 0x0e, 0xa9, 0x9a, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x41, 0xc3, 0x9d, 0xef, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x87, 0xdd, 0x90, 0xc7, 0xda, 0x30, 0x2e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x66, 0xd7, 0xe2, 0x1c, 0x34, 0xa3, 0x39, 0x70, 0x18, 0x97, 0xe3, 0xf1, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0x0c, 0x08, 0x76, 0xb5, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x26, 0x5c, 0xe9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xeb, 0x5c, 0xba, 0x8e, 0x43, 0x07, 0x0d, 0x23, 0xba, 0x1f, 0x87, 0x16, 0x04, 0x8b, 0x1b, 0x84, 0xa7, 0xea, 0xc1, 0x19, 0x6a, 0x72, 0x71, 0x10, 0xac, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0x20, 0xd0, 0xe5, 0x0e, 0x2b, 0xb4, 0x87, 0x34, 0xdc, 0xb0, 0x1b, 0xbc, 0x3c, 0x2a, 0x60, 0x85, 0x5d, 0xb8, 0x0d, 0x8d, 0x04, 0x0f, 0x5e, 0x21, 0x15, 0xb0, 0xc1, 0x2b, 0xa4, 0x02, 0x0e, 0xa7, 0xd8, 0x20, 0xd8, 0xe0, 0x99, 0x83, 0x0d, 0x87, 0x16, 0x60, 0xc3, 0x6e, 0xf0, 0x72, 0xa1, 0x80, 0x15, 0x76, 0xe1, 0x36, 0x34, 0x12, 0x3c, 0x78, 0xc5, 0x50, 0xc0, 0x06, 0xaf, 0x18, 0x0a, 0x38, 0x9c, 0x62, 0x07, 0xef, 0x43, 0x6c, 0x18, 0x76, 0x83, 0xc7, 0x3c, 0x05, 0xac, 0xb0, 0x0b, 0xb7, 0xa1, 0x91, 0xe0, 0xc1, 0xc3, 0x9e, 0x02, 0x36, 0x78, 0xd8, 0x53, 0xc0, 0xe1, 0x14, 0x3b, 0x78, 0x1f, 0x62, 0xc3, 0xc2, 0x2e, 0xdc, 0x86, 0x46, 0x82, 0x07, 0xaf, 0x3c, 0x0a, 0xd8, 0xe0, 0x95, 0x47, 0x01, 0x87, 0x53, 0x6c, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0xd8, 0x60, 0x1d, 0x27, 0xd8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x30, 0x5c, 0x07, 0x01, 0xef, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x40, 0xa2, 0xbb, 0xdc, 0x61, 0x85, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0x0f, 0x21, 0x6c, 0x38, 0x0e, 0x1d, 0x87, 0x0e, 0x2d, 0xc0, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x58, 0xaa, 0x1c, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x95, 0x56, 0xf8, 0xe1, 0x37, 0x9e, 0x2f, 0x0e, 0xb2, 0x0d, 0x71, 0x19, 0x04, 0x1b, 0x34, 0x1a, 0x0b, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xfc, 0xf5, 0x77, 0x3c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x96, 0x6d, 0xe1, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0x83, 0x96, 0x02, 0xe1, 0x0f, 0xda, 0xb5, 0x5f, 0x3a, 0x58, 0x75, 0x25, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x8f, 0x43, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x01, 0xe9, 0xee, 0x6a, 0x87, 0xe4, 0xd2, 0x41, 0x7a, 0xd1, 0xc5, 0x20, 0x58, 0x90, 0x0c, 0xce, 0x1d, 0x0c, 0x43, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x76, 0xc3, 0x5a, 0xe8, 0x06, 0xe3, 0x5f, 0x72, 0x10, 0x6c, 0xd0, 0x4c, 0xc4, 0xfc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0xf1, 0x77, 0x58, 0xa1, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x1c, 0x8c, 0x2c, 0xab, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0xc1, 0x38, 0x64, 0xda, 0x90, 0x3a, 0x18, 0x04, 0x1b, 0xac, 0x28, 0xb7, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x36, 0x28, 0xfc, 0x83, 0x0e, 0x86, 0xa3, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x96, 0x86, 0x8f, 0x1d, 0x14, 0x27, 0x16, 0x87, 0xbd, 0xc2, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x7c, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x37, 0x18, 0x87, 0x4c, 0x1b, 0x16, 0xf9, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x97, 0xa7, 0x12, 0x1c, 0x1a, 0xb5, 0x0c, 0x82, 0x15, 0x04, 0x0b, 0x92, 0x0d, 0x8a, 0xe8, 0xae, 0x83, 0x93, 0xd0, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xe2, 0xb7, 0xe0, 0x90, 0x3a, 0x38, 0x0e, 0x0d, 0x82, 0x0d, 0x96, 0x9f, 0x90, 0x1d, 0xbc, 0x27, 0xb8, 0x61, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xc7, 0xdf, 0xc1, 0x78, 0xd7, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x6a, 0xb7, 0xc7, 0xc1, 0x30, 0x76, 0x38, 0x58, 0xfc, 0x3a, 0x76, 0x1c, 0x1a, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x21, 0x86, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x78, 0x81, 0xac, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1e, 0xb8, 0x2b, 0x70, 0xe8, 0xa0, 0x71, 0x18, 0x97, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0x34, 0xec, 0x06, 0xad, 0xf3, 0x01, 0x2c, 0xc8, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0x31, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0xf4, 0xcf, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xe1, 0x39, 0x08, 0x72, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0xcd, 0x41, 0x2b, 0x24, 0xc7, 0x07, 0xad, 0x90, 0x1c, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0xd6, 0xe4, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x77, 0xf6, 0x0d, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xd7, 0x0b, 0x0e, 0x0c, 0x82, 0x0d, 0xda, 0x32, 0x74, 0x3f, 0x78, 0x29, 0xe1, 0xc0, 0x71, 0xe8, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0x5f, 0x10, 0x2c, 0x08, 0x36, 0x58, 0x4c, 0x3b, 0x33, 0x48, 0x06, 0x84, 0xdd, 0xdf, 0x41, 0x9b, 0xed, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x16, 0x99, 0xeb, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x5c, 0x5e, 0xca, 0xa1, 0x51, 0xcb, 0x71, 0xe8, 0x78, 0x7e, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x06, 0x05, 0xb5, 0xd8, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x94, 0xfe, 0x5d, 0x87, 0x15, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0d, 0x0f, 0xbe, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x82, 0x64, 0x83, 0x35, 0x7a, 0x24, 0x87, 0x15, 0xda, 0x83, 0x97, 0xa7, 0x37, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0x96, 0xc1, 0x0b, 0x1c, 0xb4, 0x4f, 0xfc, 0x7e, 0x1c, 0x3a, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x06, 0x0d, 0xb4, 0x1e, 0x1f, 0x52, 0x4b, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x36, 0x58, 0x06, 0x2f, 0x30, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbb, 0x41, 0xd0, 0xeb, 0x6f, 0x88, 0xe6, 0xc1, 0xf8, 0xe9, 0xda, 0x90, 0xaf, 0x1d, 0x7e, 0xe3, 0xf9, 0xb0, 0x1b, 0x04, 0xbd, 0xfe, 0x41, 0x39, 0x0c, 0x76, 0x1c, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x06, 0xcb, 0xe0, 0x05, 0x06, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x90, 0xfe, 0x39, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xf0, 0x1c, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x1e, 0xb4, 0x22, 0xf1, 0x7f, 0x88, 0xff, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x81, 0xa2, 0x75, 0xc8, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x81, 0x4f, 0xfa, 0xb0, 0xc7, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xfa, 0x77, 0x1d, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xda, 0xe0, 0x8f, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x05, 0xc9, 0x06, 0x6b, 0xf4, 0x48, 0x0e, 0xd9, 0x8a, 0x83, 0x27, 0x1b, 0x38, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x05, 0xd1, 0x82, 0xe9, 0x21, 0x6b, 0x77, 0x1c, 0x3a, 0x68, 0x9f, 0xf8, 0xfd, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x24, 0x03, 0xb7, 0xd6, 0x61, 0x85, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0x83, 0xa6, 0xb6, 0x49, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x1e, 0xc7, 0xe0, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x19, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x2c, 0x83, 0x17, 0x38, 0x58, 0xbd, 0x89, 0x76, 0x1c, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0x58, 0xcd, 0x71, 0xb4, 0x38, 0xc8, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0x31, 0xdc, 0x90, 0xfb, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x0f, 0xda, 0xd3, 0x42, 0x3e, 0xbe, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0xcd, 0xe5, 0xa5, 0x1c, 0x3a, 0x68, 0x0c, 0xb2, 0x35, 0x68, 0x0b, 0x64, 0x65, 0x43, 0x0c, 0x37, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0x83, 0xa6, 0xd4, 0x90, 0x8f, 0x6f, 0xc3, 0x2f, 0x08, 0x16, 0x04, 0x1b, 0x34, 0x7d, 0xcf, 0x34, 0x48, 0x06, 0x84, 0xdd, 0xdf, 0x61, 0xcf, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x22, 0x73, 0xfd, 0x43, 0xea, 0xe0, 0x38, 0x34, 0xc8, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0x31, 0xdc, 0x90, 0xfb, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x0f, 0xda, 0xb8, 0x43, 0x3e, 0xbe, 0x1d, 0x8f, 0x8f, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0x87, 0x54, 0xf5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0x07, 0xe1, 0xe2, 0x40, 0x24, 0x36, 0xd4, 0xf1, 0x83, 0x03, 0x4d, 0xdf, 0x62, 0xf0, 0x63, 0xf8, 0x20, 0xd8, 0x60, 0xc9, 0xf7, 0xd7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0xe3, 0x41, 0xea, 0x9a, 0xf7, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x5e, 0xe1, 0x17, 0x04, 0x1b, 0xac, 0x69, 0x39, 0x5a, 0x5c, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x43, 0x1e, 0xeb, 0x70, 0xb4, 0x6f, 0xd0, 0x8c, 0x0a, 0xfe, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x6b, 0x43, 0x90, 0x0e, 0x47, 0xfb, 0x06, 0xe3, 0x13, 0x6e, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0xa5, 0x9b, 0x48, 0x87, 0xa3, 0x7d, 0xc3, 0xd6, 0xc1, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x6e, 0xb0, 0x3c, 0x5e, 0xe9, 0xa0, 0x61, 0x84, 0x91, 0xc3, 0xd1, 0xbe, 0x41, 0xe0, 0x78, 0x0f, 0xbb, 0x41, 0x13, 0x39, 0x2a, 0x0b, 0x92, 0x61, 0x0e, 0x16, 0xd4, 0xed, 0x1c, 0xb4, 0x45, 0xc8, 0xb4, 0xb0, 0x1b, 0x3c, 0xcd, 0xc5, 0x61, 0x0d, 0x96, 0xca, 0x2b, 0x6d, 0xd0, 0xb4, 0x0a, 0xfe, 0x21, 0x86, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0xac, 0x62, 0x3a, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc9, 0xe0, 0xdb, 0x21, 0xb9, 0x34, 0x48, 0x06, 0xe6, 0xef, 0xd0, 0xbe, 0x65, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0xf5, 0x60, 0x47, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0xc1, 0xd3, 0x7a, 0x1c, 0x06, 0xc9, 0xe0, 0xd6, 0x20, 0x5a, 0xd8, 0x0d, 0x1a, 0x53, 0x92, 0x3f, 0xe4, 0x6b, 0x8f, 0x43, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0xac, 0x27, 0x5f, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x0d, 0x9e, 0xd6, 0xe3, 0x30, 0x48, 0x06, 0xe6, 0xef, 0xd0, 0x57, 0x63, 0xd8, 0x0d, 0x9a, 0xc8, 0x51, 0xd9, 0x20, 0x28, 0xbd, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0xac, 0x78, 0x74, 0x38, 0xda, 0x17, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x0e, 0x82, 0x0d, 0x56, 0x98, 0x01, 0x1d, 0xf6, 0x78, 0x8f, 0xc7, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0xf5, 0xe9, 0x47, 0x87, 0xa3, 0x7d, 0x0d, 0xd6, 0xa5, 0x37, 0x2d, 0x6e, 0xf8, 0xdc, 0x65, 0x70, 0xfb, 0x78, 0xbc, 0xc1, 0x2a, 0xbb, 0xa4, 0x0d, 0x96, 0xbb, 0x2d, 0x2d, 0x6e, 0xf8, 0x0a, 0x67, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x54, 0x64, 0x1e, 0x9e, 0x5b, 0xdd, 0xa0, 0xa0, 0xc8, 0x5c, 0xc3, 0xe7, 0x2e, 0x83, 0xa7, 0x07, 0x4d, 0x8a, 0xf7, 0x6f, 0xf8, 0xdc, 0x65, 0x70, 0xfa, 0x60, 0xf9, 0xf1, 0xf6, 0x20, 0x58, 0x1c, 0x76, 0xc3, 0x0a, 0xea, 0x06, 0xed, 0x4c, 0xd0, 0x0f, 0x82, 0x05, 0xc9, 0x90, 0x83, 0x46, 0x9b, 0x5e, 0x86, 0xdd, 0xa0, 0x55, 0xd9, 0xa4, 0xd5, 0x60, 0xa9, 0x16, 0xd2, 0x06, 0x0d, 0xe9, 0x3b, 0x1d, 0x5a, 0x00, 0x1d, 0x87, 0x36, 0x58, 0xf0, 0xe0, 0xb4, 0x1a, 0x2c, 0x6a, 0x5d, 0xda, 0xe0, 0x1c, 0xb9, 0xbb, 0xc1, 0x72, 0xb7, 0xa5, 0x0d, 0x1a, 0x91, 0x72, 0xdf, 0x60, 0x5d, 0x7a, 0xd3, 0xe2, 0x06, 0xab, 0x45, 0x90, 0xc2, 0xed, 0x83, 0x62, 0x0f, 0x62, 0x83, 0x45, 0xad, 0x4b, 0x1b, 0xa4, 0x2d, 0x50, 0x1f, 0x87, 0xc6, 0x0d, 0x5f, 0xe1, 0x6c, 0x50, 0x10, 0xcc, 0x6e, 0x78, 0x70, 0x67, 0x0d, 0x56, 0x8b, 0x20, 0x85, 0x8b, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x06, 0xab, 0x45, 0x90, 0xc2, 0xc3, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x0f, 0xee, 0x6c, 0x78, 0x50, 0x72, 0xe3, 0xf9, 0xc1, 0x7b, 0xc6, 0x1c, 0x3a, 0xbe, 0x0d, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0x50, 0xca, 0xfa, 0x1d, 0x8e, 0xf6, 0x0d, 0xde, 0xd2, 0xe3, 0x30, 0xec, 0x06, 0x6f, 0x83, 0x71, 0x58, 0x83, 0xa5, 0xf2, 0x4a, 0x1b, 0x8c, 0x59, 0xb8, 0x43, 0x0c, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0x8f, 0x86, 0x74, 0x38, 0xda, 0xd7, 0x60, 0xbd, 0xa4, 0xd2, 0xe2, 0x06, 0xab, 0x45, 0x90, 0x0e, 0x9a, 0x1a, 0x0b, 0x5c, 0x83, 0xa5, 0x71, 0x4f, 0x1b, 0x2c, 0xc7, 0x51, 0x3a, 0x8c, 0xcb, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0x44, 0x19, 0x87, 0x35, 0x58, 0x2a, 0xaf, 0x74, 0x30, 0x66, 0xe1, 0x86, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0xd2, 0x8a, 0x74, 0x38, 0xda, 0xd7, 0x60, 0xbd, 0xa4, 0xd2, 0xe2, 0x06, 0xab, 0x45, 0x90, 0x0e, 0x1a, 0x1e, 0xb1, 0x3c, 0x78, 0x94, 0x9b, 0xc3, 0xb0, 0x1b, 0xb4, 0x9e, 0x9e, 0xb2, 0x41, 0x50, 0x7a, 0x0f, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0xca, 0x1a, 0xe9, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x04, 0x1b, 0x2c, 0x04, 0x06, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xe8, 0x21, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0x16, 0x64, 0xe4, 0x37, 0x58, 0x5d, 0x64, 0xb5, 0x21, 0x55, 0xb3, 0xc1, 0x22, 0x12, 0xab, 0x8d, 0x43, 0x1b, 0x2c, 0xe0, 0xad, 0xda, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x1f, 0x87, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x38, 0xc5, 0x36, 0x58, 0x7b, 0x99, 0xb4, 0x06, 0x8b, 0xf6, 0xaa, 0x8e, 0x43, 0x83, 0x60, 0x71, 0xd8, 0x85, 0xdd, 0x60, 0xd9, 0xfa, 0xff, 0xc2, 0x6d, 0xb0, 0xd8, 0x8f, 0xea, 0xd0, 0x74, 0xe8, 0x70, 0xb4, 0xaf, 0xc1, 0x12, 0xdc, 0xa3, 0x0d, 0x92, 0x35, 0x10, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfb, 0x41, 0xa2, 0xa7, 0xc2, 0xf1, 0x78, 0x83, 0xb5, 0xe5, 0x4b, 0x87, 0x86, 0x5f, 0xc7, 0xb7, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0x56, 0xec, 0x23, 0x1d, 0x8e, 0xf6, 0x35, 0x58, 0xf0, 0xe0, 0xb4, 0x41, 0xbb, 0x81, 0x29, 0x1b, 0x2c, 0xcf, 0x49, 0xda, 0x10, 0xc3, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x08, 0x40, 0x0e, 0x92, 0x81, 0xf2, 0x77, 0xe8, 0x89, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0xdc, 0x10, 0xcd, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0xc8, 0x59, 0x0f, 0x92, 0x81, 0xf2, 0x77, 0xe8, 0xab, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x4d, 0xcb, 0xd1, 0xe2, 0xb0, 0x1b, 0xb4, 0x16, 0xf6, 0xb4, 0x21, 0x75, 0xb0, 0xc1, 0x1a, 0x17, 0xa7, 0x95, 0x20, 0xb1, 0x7f, 0x88, 0xe1, 0x12, 0x64, 0xf6, 0x0f, 0xda, 0x53, 0x7b, 0x3a, 0x1e, 0x1f, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0x96, 0x9f, 0x24, 0x1d, 0x8e, 0xf6, 0x35, 0x58, 0xf0, 0xe0, 0xb4, 0xa1, 0x91, 0xe0, 0x06, 0x8b, 0xaa, 0x92, 0x0e, 0x82, 0xd2, 0x7b, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x85, 0x54, 0x49, 0x87, 0xa3, 0x7d, 0x0d, 0x96, 0xe7, 0x24, 0x6d, 0x88, 0xe1, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x36, 0x18, 0x02, 0x90, 0x83, 0x64, 0x60, 0xa8, 0x0e, 0x86, 0x2e, 0xd5, 0xc1, 0xa8, 0xc2, 0xde, 0xe0, 0x84, 0xb2, 0x7b, 0x48, 0x4c, 0x0d, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0x7e, 0x2c, 0xe9, 0x70, 0xb4, 0xaf, 0xc1, 0x7a, 0xe5, 0xa6, 0x0d, 0x1a, 0x91, 0x72, 0xdf, 0x60, 0x79, 0x4e, 0xd2, 0x86, 0x18, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x21, 0x00, 0x39, 0x48, 0x06, 0x8a, 0xdf, 0xa1, 0x31, 0xd8, 0x41, 0x8a, 0xf2, 0xf3, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x21, 0x34, 0x39, 0x48, 0x06, 0x86, 0xea, 0x60, 0x75, 0x2a, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0x0d, 0x31, 0xdc, 0x20, 0x00, 0x9f, 0x0f, 0x89, 0xa9, 0xe3, 0xd0, 0x20, 0xd8, 0xe0, 0x05, 0xa9, 0x0e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xf0, 0x1b, 0xcf, 0x37, 0x08, 0xb2, 0xf8, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x08, 0x4d, 0x0e, 0x92, 0x81, 0xa1, 0x1a, 0x44, 0x1b, 0xac, 0xaf, 0xdb, 0x39, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x87, 0x16, 0x40, 0xc7, 0xa1, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x2b, 0xeb, 0x92, 0x0e, 0x47, 0xfb, 0x1a, 0xac, 0x57, 0x6e, 0xda, 0xa0, 0x11, 0x29, 0xf7, 0x0d, 0x16, 0x55, 0x25, 0x1d, 0xc6, 0x65, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0xa5, 0x84, 0x49, 0x87, 0xa3, 0x7d, 0x0d, 0xd6, 0x3f, 0x2d, 0x6d, 0xb0, 0xe2, 0x34, 0xe9, 0x60, 0x84, 0xa7, 0x0d, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0xde, 0x32, 0xe9, 0x70, 0xb4, 0xaf, 0xc1, 0x82, 0x07, 0xa7, 0x0d, 0xda, 0x0d, 0x4c, 0xd9, 0x60, 0x89, 0x6d, 0xd2, 0x86, 0x18, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xaf, 0xf7, 0x74, 0x38, 0x38, 0x66, 0xf7, 0x1e, 0x3c, 0x22, 0xd4, 0x61, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x55, 0xa6, 0x49, 0x87, 0xa3, 0x7d, 0x0d, 0x56, 0xef, 0x23, 0x6d, 0x68, 0x24, 0x38, 0x08, 0x36, 0x78, 0xf2, 0xaf, 0xc3, 0x86, 0x18, 0x1e, 0x3c, 0x22, 0xd4, 0x61, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0xc5, 0xc4, 0x49, 0x87, 0xa3, 0x7d, 0x0d, 0x96, 0x11, 0x2f, 0x1d, 0x3c, 0xfc, 0xd6, 0x61, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x25, 0xe4, 0x49, 0x87, 0xa3, 0x7d, 0x83, 0x54, 0xb9, 0x8c, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0xd6, 0x49, 0x28, 0x1d, 0x8e, 0xf6, 0x35, 0x34, 0x12, 0x3c, 0x38, 0x23, 0xc0, 0x0f, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0x80, 0x3a, 0xe9, 0x70, 0xb4, 0xaf, 0x41, 0x50, 0x7a, 0x1f, 0x1a, 0x09, 0x0e, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0x62, 0x40, 0xe9, 0x70, 0xb4, 0x6f, 0x30, 0xc2, 0xd3, 0x86, 0xdd, 0xe0, 0xe1, 0xbb, 0x04, 0x0b, 0x82, 0xc5, 0x61, 0x37, 0xac, 0xa0, 0x6e, 0xd0, 0xda, 0xe0, 0xfc, 0x86, 0x1e, 0x42, 0x07, 0x4f, 0xb7, 0x72, 0x38, 0xbe, 0x0d, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0x04, 0x47, 0xe9, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x87, 0xdd, 0xb0, 0x82, 0xba, 0xc1, 0x9a, 0x96, 0xa3, 0x61, 0x37, 0x08, 0x92, 0xe6, 0x0d, 0x3d, 0x84, 0x0e, 0xde, 0x41, 0xed, 0x70, 0x7c, 0x1b, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0xc9, 0xf4, 0xd2, 0xe1, 0x68, 0x5f, 0x83, 0x25, 0x9d, 0x4b, 0x83, 0x60, 0x83, 0xa7, 0xf5, 0x38, 0x1c, 0x34, 0x1e, 0x08, 0x35, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x9a, 0x23, 0xa5, 0xc3, 0xd1, 0xbe, 0x06, 0xcb, 0xdd, 0x96, 0xd6, 0x60, 0x19, 0x27, 0xd2, 0xa1, 0x91, 0xe0, 0x06, 0x4b, 0xe5, 0x95, 0x0e, 0x46, 0x78, 0xda, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0xab, 0xe6, 0x94, 0x0e, 0x47, 0xfb, 0x1a, 0xac, 0x97, 0x54, 0x3a, 0x78, 0x32, 0x16, 0xc3, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x6b, 0x78, 0x95, 0x0e, 0x47, 0xfb, 0x1a, 0xac, 0x97, 0x54, 0x3a, 0x78, 0x26, 0x0e, 0xc3, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0xab, 0x98, 0x95, 0x0e, 0x47, 0xfb, 0x1a, 0xac, 0x97, 0x54, 0x3a, 0x78, 0xe7, 0x10, 0xc3, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x8b, 0x05, 0x95, 0x0e, 0x47, 0xfb, 0x1a, 0xac, 0x97, 0x54, 0x3a, 0x78, 0xb3, 0x13, 0xc3, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x6b, 0x24, 0x95, 0x0e, 0x47, 0xfb, 0x1a, 0xac, 0xe3, 0x56, 0xda, 0x90, 0x98, 0x3a, 0x18, 0xe1, 0x69, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0xac, 0xdd, 0x56, 0x3a, 0x1c, 0xed, 0x6b, 0xb0, 0xd4, 0x54, 0x69, 0x43, 0x23, 0xc1, 0x0d, 0x9d, 0xd4, 0x06, 0xc1, 0x06, 0xa3, 0xf9, 0x7c, 0x10, 0x2c, 0x0e, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0x68, 0x74, 0xb4, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x24, 0x7a, 0x2a, 0xac, 0x1a, 0x1c, 0xf7, 0x3b, 0x0e, 0x06, 0xaa, 0xda, 0x41, 0xb2, 0x06, 0xc2, 0x21, 0x86, 0xab, 0xc1, 0x71, 0xbf, 0x63, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0xac, 0x4e, 0x4a, 0x39, 0x74, 0x8c, 0x3f, 0xc4, 0xf0, 0x20, 0x59, 0x03, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xc4, 0xfd, 0x20, 0xd1, 0x53, 0x61, 0x10, 0x2d, 0xec, 0x20, 0xd8, 0x60, 0x75, 0x52, 0xca, 0x41, 0x5a, 0xe6, 0xc7, 0xf1, 0xf8, 0xf8, 0x36, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0xf2, 0x52, 0xa5, 0xc3, 0xd1, 0xbe, 0xb0, 0x1b, 0x1c, 0x8f, 0xd7, 0xd7, 0x60, 0x5d, 0x7a, 0xd3, 0x86, 0x4e, 0x6a, 0x07, 0x8f, 0xff, 0x76, 0xd8, 0x60, 0xc1, 0x83, 0xd3, 0x86, 0x4e, 0x6a, 0x1b, 0x2c, 0x95, 0x57, 0x5a, 0x10, 0x6c, 0xb0, 0xe4, 0xfb, 0x6b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0x87, 0xd0, 0xf0, 0x1b, 0xcf, 0x0f, 0x96, 0x00, 0xeb, 0x1f, 0x87, 0x06, 0xc1, 0x06, 0x0b, 0x81, 0x81, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9a, 0x25, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xd0, 0xda, 0x6a, 0x71, 0x43, 0x34, 0x37, 0x58, 0x97, 0xde, 0xb4, 0x41, 0x2a, 0x71, 0xc7, 0x61, 0x5c, 0x8e, 0xc7, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0xd6, 0x7a, 0x2d, 0x1d, 0x8e, 0xf6, 0x35, 0x58, 0xee, 0xb6, 0xb4, 0xc1, 0x8b, 0xd7, 0x1d, 0x0e, 0x82, 0xd2, 0x7b, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x35, 0x7d, 0x4b, 0x87, 0xa3, 0x7d, 0x0d, 0x96, 0xbb, 0x2d, 0x2d, 0x08, 0x36, 0x78, 0x5a, 0x8f, 0xc3, 0x20, 0x19, 0xdc, 0x3a, 0xb4, 0x0a, 0x3a, 0x08, 0x4a, 0xef, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0x16, 0xb2, 0x2e, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0x82, 0x64, 0x60, 0xf4, 0x0e, 0x16, 0xd4, 0xed, 0x1c, 0x9a, 0x02, 0x0d, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0x80, 0x7e, 0xe9, 0x70, 0xb4, 0xaf, 0xc1, 0x62, 0x37, 0xa6, 0x35, 0x58, 0xe5, 0xf3, 0x33, 0x08, 0x16, 0x04, 0x1b, 0x8c, 0xed, 0x99, 0x41, 0x32, 0x30, 0x7b, 0x87, 0x56, 0x41, 0xc3, 0x6e, 0xd0, 0x3a, 0x1f, 0xc0, 0x1a, 0x2c, 0xaa, 0x4a, 0xda, 0x60, 0xbd, 0xa4, 0xd2, 0x06, 0x2f, 0xa0, 0x73, 0x58, 0x83, 0xa5, 0x71, 0x4f, 0x1b, 0xac, 0x4b, 0x6f, 0xda, 0x20, 0x95, 0xb8, 0xe3, 0xd0, 0x43, 0xe8, 0x10, 0xc3, 0x0d, 0x16, 0x1d, 0x21, 0x6d, 0x90, 0x16, 0x9a, 0x7d, 0x10, 0x02, 0xe0, 0x07, 0x41, 0xe9, 0x3d, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x12, 0x02, 0xa6, 0xc3, 0xd1, 0xbe, 0x06, 0x8b, 0xdd, 0x98, 0xd6, 0x60, 0x95, 0xcf, 0xcf, 0x06, 0x8b, 0xaa, 0x92, 0x0e, 0x8d, 0x04, 0x0f, 0x82, 0xd2, 0x7b, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x35, 0x13, 0x4c, 0x87, 0xa3, 0x7d, 0x0d, 0xd6, 0x20, 0x31, 0xad, 0x78, 0x48, 0x03, 0x6d, 0xb0, 0x66, 0x42, 0x69, 0x0d, 0x16, 0x1d, 0x21, 0x1d, 0x04, 0x8e, 0xf7, 0x1a, 0x2c, 0x10, 0x7d, 0x3a, 0x74, 0x52, 0xdb, 0x60, 0x5d, 0x8a, 0xd2, 0x20, 0xd8, 0x10, 0xc3, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xad, 0x75, 0x29, 0x6d, 0x48, 0x1d, 0xac, 0x06, 0x8b, 0x8e, 0x90, 0x36, 0xc4, 0x70, 0x82, 0xc3, 0x7d, 0x83, 0x05, 0xa2, 0x4f, 0x13, 0x5c, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x60, 0xdc, 0x0f, 0x96, 0x2e, 0xdd, 0x1c, 0x8f, 0x8f, 0x6f, 0x07, 0x67, 0xf5, 0xf3, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0xd6, 0xd8, 0x30, 0x1d, 0x8e, 0xf6, 0x35, 0x58, 0x3f, 0xc1, 0xb4, 0xa1, 0x91, 0xe0, 0x06, 0xe9, 0xb9, 0x31, 0x07, 0xa3, 0x1e, 0x6d, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x75, 0x47, 0x4c, 0x87, 0xa3, 0x7d, 0x0d, 0xd6, 0x2b, 0x37, 0xad, 0xc1, 0x62, 0x37, 0xa6, 0x0d, 0x8d, 0x04, 0x0f, 0x86, 0x22, 0xd2, 0x41, 0x50, 0x7a, 0x0f, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0xae, 0x8f, 0xe9, 0x70, 0xb4, 0xaf, 0xc1, 0x62, 0x37, 0xa6, 0x15, 0x0f, 0x5a, 0x90, 0x61, 0x3e, 0x78, 0x78, 0xca, 0xc3, 0x41, 0x50, 0x7a, 0x0f, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0xf8, 0x91, 0xe9, 0x70, 0xb4, 0xaf, 0xc1, 0x62, 0x37, 0xa6, 0x15, 0x0f, 0x91, 0x39, 0x78, 0x78, 0xca, 0xc3, 0x41, 0x50, 0x7a, 0x0f, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0x4a, 0x95, 0xe9, 0x70, 0xb4, 0xaf, 0xc1, 0x62, 0x37, 0xa6, 0x15, 0x0f, 0xda, 0x02, 0x59, 0x59, 0x83, 0xa5, 0x5a, 0x48, 0x07, 0x81, 0xe3, 0xbd, 0xc1, 0x7a, 0x49, 0xa5, 0x0d, 0x5e, 0x40, 0xe7, 0xb0, 0x06, 0x4b, 0xe3, 0x9e, 0x0e, 0x9d, 0xd4, 0x0e, 0x31, 0x3c, 0x18, 0x99, 0xbd, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0x2c, 0x29, 0x66, 0x3a, 0x1c, 0xed, 0x6b, 0xb0, 0xd8, 0x8d, 0x69, 0xc5, 0x83, 0xd6, 0xb7, 0x98, 0x0f, 0x8d, 0x04, 0x0f, 0x82, 0xd2, 0x7b, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x45, 0xd5, 0x4c, 0x87, 0xa3, 0x7d, 0x0d, 0x16, 0x3c, 0x38, 0xad, 0xc1, 0xaa, 0x56, 0xa7, 0x0d, 0x9d, 0xd4, 0x36, 0x68, 0x67, 0x82, 0x7e, 0x83, 0x76, 0x26, 0xe8, 0x0f, 0x4d, 0xb8, 0x36, 0x58, 0xf3, 0xf1, 0xb4, 0xc1, 0x12, 0x60, 0xfd, 0x35, 0x58, 0x97, 0xde, 0xb4, 0x41, 0x2a, 0x71, 0xc7, 0xc1, 0x59, 0xfd, 0x7c, 0x83, 0x15, 0xab, 0x4c, 0x1b, 0x1a, 0x09, 0x2e, 0x1e, 0x84, 0x00, 0xf8, 0xc1, 0x93, 0xa4, 0x1e, 0x86, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0x7b, 0xcf, 0x74, 0x38, 0xda, 0x17, 0x04, 0x8b, 0xc3, 0x6e, 0x58, 0x41, 0xdd, 0xa0, 0x9d, 0x09, 0xfa, 0x61, 0x17, 0x7a, 0x30, 0x88, 0x56, 0x56, 0x83, 0x65, 0xbd, 0x48, 0x87, 0x1e, 0x42, 0x07, 0x4f, 0xb7, 0x72, 0x18, 0x76, 0xe1, 0x36, 0x58, 0xa0, 0x1d, 0x75, 0x30, 0x88, 0x56, 0xd6, 0x60, 0xf0, 0xc7, 0x1c, 0x3c, 0xdd, 0xca, 0x61, 0xd8, 0x85, 0xdb, 0x60, 0x31, 0x73, 0xd4, 0xc1, 0x20, 0x5a, 0x59, 0x0d, 0x16, 0x7d, 0x34, 0x1d, 0x0c, 0xfe, 0x98, 0x83, 0xa7, 0x5b, 0x39, 0x0c, 0xbb, 0x70, 0x1b, 0x2c, 0xb8, 0x8f, 0x3a, 0x18, 0x44, 0x2b, 0x6b, 0xb0, 0x5e, 0x52, 0x69, 0x83, 0xc1, 0x1f, 0xb3, 0xc1, 0xd3, 0xad, 0x1c, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xdc, 0x06, 0xeb, 0xcf, 0xa3, 0x0e, 0x06, 0xd1, 0xca, 0x20, 0x58, 0x83, 0xf5, 0x61, 0x4d, 0x1b, 0xb4, 0x0c, 0x37, 0xbf, 0xc1, 0x12, 0xdb, 0xa4, 0x0d, 0x31, 0x1c, 0x04, 0x2b, 0x08, 0x16, 0x0f, 0xce, 0xf5, 0x06, 0x1b, 0x62, 0xb8, 0xc1, 0x9a, 0x8f, 0xa7, 0x8d, 0x43, 0x6b, 0xb0, 0x54, 0x5e, 0x69, 0xe3, 0xd0, 0xb8, 0x06, 0x45, 0x8d, 0xf8, 0x61, 0x5c, 0xda, 0x60, 0xa9, 0xbc, 0xd2, 0xc6, 0xa1, 0x15, 0x0f, 0x57, 0xd7, 0x06, 0x4b, 0xe5, 0x95, 0x36, 0x24, 0xa6, 0xd6, 0x38, 0x34, 0x1e, 0x0c, 0xcd, 0xae, 0x43, 0x0c, 0x0f, 0x31, 0x3c, 0x24, 0xa6, 0x0e, 0x1e, 0x11, 0xea, 0xb0, 0xc1, 0x0a, 0x3a, 0xa5, 0x35, 0x28, 0xf6, 0x20, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x7d, 0x68, 0xf8, 0x75, 0x3c, 0x3f, 0x0e, 0x1d, 0xdf, 0x86, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0xf0, 0xd0, 0x74, 0x38, 0xda, 0x17, 0x76, 0x83, 0xb1, 0x8e, 0xb6, 0xc1, 0x9a, 0x96, 0xa3, 0x61, 0x17, 0x76, 0x83, 0xc4, 0xae, 0x9f, 0x0d, 0x8e, 0xc7, 0xeb, 0x87, 0xa3, 0x7d, 0x43, 0x27, 0xb5, 0x41, 0xb6, 0x86, 0xf6, 0xeb, 0x07, 0x89, 0x5d, 0x3f, 0x1b, 0x2c, 0x78, 0x70, 0xda, 0xd0, 0x48, 0x70, 0x10, 0x6c, 0x10, 0x94, 0xde, 0x83, 0x60, 0x71, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0xe4, 0x60, 0x79, 0x7e, 0xd7, 0x1a, 0xac, 0x4b, 0x6f, 0xda, 0x20, 0x95, 0xb8, 0xe3, 0x10, 0xcd, 0x61, 0x37, 0x68, 0x99, 0x64, 0x64, 0x0d, 0xd6, 0x4b, 0x2a, 0x6d, 0x30, 0xda, 0x68, 0x37, 0x78, 0x31, 0xdf, 0xc3, 0x06, 0x85, 0xca, 0xd9, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x0f, 0xeb, 0x7b, 0x87, 0x53, 0xec, 0xf8, 0x36, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x42, 0x8f, 0xa6, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0xdc, 0xf0, 0xc6, 0xdd, 0xc1, 0xb2, 0x99, 0xbc, 0x0d, 0xd6, 0xa5, 0x28, 0xad, 0x71, 0x68, 0x83, 0x75, 0x29, 0x4a, 0x1b, 0xb4, 0x84, 0x52, 0x72, 0x88, 0xe1, 0x21, 0x86, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0x2c, 0x75, 0x69, 0x3a, 0x1c, 0xed, 0x0b, 0xbf, 0x21, 0x75, 0xb0, 0xc1, 0x8a, 0x66, 0xa5, 0x35, 0x58, 0x38, 0xa8, 0xb4, 0x21, 0x55, 0xb3, 0xc1, 0xda, 0xf2, 0xa5, 0x43, 0xea, 0x60, 0xc3, 0x5e, 0xe1, 0x06, 0x2b, 0x4e, 0x93, 0x36, 0xa4, 0x0e, 0x36, 0x58, 0x97, 0xde, 0xb4, 0x41, 0x2a, 0x71, 0xc7, 0x21, 0x5b, 0x31, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x7a, 0xa0, 0xa6, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x1c, 0x76, 0x83, 0x20, 0x69, 0x5e, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0xb8, 0x21, 0xf7, 0x3d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x1e, 0xb4, 0x7b, 0xd4, 0x7c, 0x7c, 0x3b, 0x1e, 0x1f, 0x4e, 0xb1, 0x41, 0xb6, 0x86, 0xf6, 0xeb, 0x07, 0xcb, 0x30, 0xfd, 0x37, 0x58, 0x97, 0xde, 0xb4, 0xc1, 0xab, 0x9c, 0x1c, 0x06, 0xc1, 0xe2, 0xb0, 0x1b, 0xbc, 0x83, 0xde, 0x61, 0x0d, 0xd6, 0xa5, 0x37, 0x6d, 0xf0, 0xd2, 0x2e, 0x87, 0x43, 0xd3, 0xa1, 0x0d, 0x16, 0x3c, 0x38, 0xad, 0xc1, 0xa2, 0xd6, 0xa5, 0x0d, 0xce, 0x91, 0xbb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xf0, 0xfd, 0xd0, 0xe8, 0xe8, 0x78, 0xbc, 0xc1, 0x82, 0x07, 0xa7, 0x35, 0x58, 0xd4, 0xba, 0xb4, 0x41, 0xda, 0x02, 0xf5, 0xc1, 0xc3, 0x31, 0x1f, 0x36, 0x58, 0xf0, 0xe0, 0xb4, 0xb8, 0xe1, 0x73, 0x97, 0xc1, 0xc7, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x89, 0xa9, 0x83, 0x63, 0xcc, 0xd9, 0xc1, 0x83, 0xc3, 0x1c, 0x36, 0x58, 0x54, 0x95, 0xb4, 0xc1, 0x8a, 0x66, 0xa5, 0x35, 0x58, 0x97, 0xde, 0xb4, 0xc1, 0x4b, 0xbb, 0x1c, 0x0e, 0x2d, 0x80, 0xc6, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x83, 0xc3, 0x1c, 0xd6, 0x60, 0xb5, 0x08, 0x52, 0xf8, 0xd8, 0x86, 0x4b, 0x6a, 0xc3, 0x83, 0x3b, 0x6b, 0xf0, 0xf0, 0xd0, 0x87, 0x83, 0x47, 0x9c, 0x3e, 0x74, 0x7c, 0x3b, 0xbe, 0x0d, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0x22, 0xaa, 0xe9, 0x70, 0xb4, 0xaf, 0xc1, 0xc2, 0x41, 0xa5, 0x05, 0xc1, 0x06, 0x4f, 0xeb, 0x71, 0x18, 0x24, 0x03, 0xf3, 0x77, 0x68, 0x15, 0x74, 0x10, 0x94, 0xde, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0xac, 0x09, 0x6b, 0x3a, 0x1c, 0xed, 0x6b, 0xb0, 0xe0, 0xc1, 0xe9, 0xe0, 0xcd, 0x11, 0x0f, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0xac, 0x6b, 0x71, 0x3a, 0x1c, 0xed, 0x6b, 0xb0, 0x5e, 0xb9, 0x69, 0x83, 0x91, 0xd9, 0xbb, 0xc1, 0x92, 0x40, 0xa4, 0xd5, 0x60, 0x78, 0x51, 0x6c, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x07, 0xc3, 0x74, 0x62, 0x43, 0x27, 0xb5, 0x0d, 0xd6, 0xf7, 0x2d, 0x6d, 0x30, 0xd6, 0x54, 0x0e, 0x9d, 0xd4, 0x0e, 0x89, 0xa9, 0x43, 0x0c, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0x09, 0xd7, 0x74, 0x38, 0xda, 0xd7, 0x60, 0x5d, 0x7a, 0xd3, 0x1a, 0xac, 0x3f, 0x52, 0x5a, 0x3c, 0x28, 0x6a, 0xc4, 0x0f, 0x8d, 0x04, 0x0f, 0x82, 0xd2, 0x7b, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x55, 0x85, 0x4d, 0x87, 0xa3, 0x7d, 0x0d, 0x16, 0x3c, 0x38, 0xad, 0xc1, 0xa2, 0xd6, 0xa5, 0x0d, 0x8d, 0x04, 0x0f, 0x9d, 0xd4, 0x0e, 0x46, 0x66, 0xef, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0xcb, 0x2d, 0x9b, 0x0e, 0x47, 0xfb, 0x1a, 0xac, 0x30, 0x6c, 0xda, 0xd0, 0x48, 0x70, 0x83, 0x91, 0xd9, 0x7b, 0xe8, 0xa4, 0x36, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x82, 0xd3, 0xa6, 0xc3, 0xd1, 0xbe, 0x06, 0xeb, 0xd2, 0x9b, 0xd6, 0x60, 0xfd, 0x91, 0xd2, 0x06, 0xcf, 0xde, 0x7d, 0xd8, 0xe0, 0x01, 0xc0, 0x0f, 0x87, 0x18, 0x1e, 0x8c, 0xcc, 0xde, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0x56, 0xe2, 0x36, 0x1d, 0x8e, 0xf6, 0x35, 0x58, 0x7c, 0xda, 0xb4, 0xa1, 0x91, 0xe0, 0x1a, 0x2c, 0xf2, 0x74, 0xda, 0xd0, 0x49, 0x6d, 0x43, 0x13, 0xae, 0x83, 0xc7, 0x7f, 0x3b, 0x1c, 0x9c, 0xd5, 0xcf, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0x81, 0xdf, 0x74, 0x38, 0xda, 0x17, 0x04, 0x0b, 0x82, 0x0d, 0x96, 0x7c, 0x7f, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x34, 0x2e, 0x1a, 0x7e, 0xe3, 0xf9, 0x78, 0x70, 0x68, 0x6d, 0x39, 0x0e, 0x6d, 0xb0, 0x2e, 0xbd, 0x69, 0x83, 0x57, 0x39, 0x39, 0x6c, 0xb0, 0xe0, 0xc1, 0x69, 0x0d, 0x16, 0xb5, 0x2e, 0x6d, 0x70, 0x8e, 0xdc, 0xdd, 0x60, 0x5d, 0x7a, 0xd3, 0x06, 0x2f, 0xed, 0x72, 0x38, 0x08, 0x7b, 0xea, 0x0d, 0x16, 0x9f, 0x36, 0x6d, 0x1c, 0x5a, 0x3c, 0x78, 0x4b, 0x99, 0xc3, 0x06, 0xeb, 0xd2, 0x9b, 0x56, 0x83, 0x45, 0xad, 0x4b, 0x6b, 0xb0, 0x08, 0xa3, 0x6a, 0x83, 0x77, 0x4a, 0x3f, 0x1c, 0x7a, 0x08, 0x8d, 0x07, 0x6f, 0x14, 0x73, 0x38, 0x78, 0x69, 0x97, 0xc3, 0x41, 0x89, 0x3d, 0x38, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x1a, 0xe5, 0xa6, 0xc3, 0xd1, 0xbe, 0x06, 0xeb, 0xd2, 0x9b, 0x0e, 0x5e, 0xef, 0xec, 0x30, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x22, 0x07, 0xa7, 0xc3, 0xd1, 0xbe, 0x06, 0xeb, 0xd2, 0x9b, 0x36, 0x78, 0x50, 0xce, 0xc3, 0x41, 0x50, 0x7a, 0x0f, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0x28, 0xbb, 0xe9, 0x70, 0xb4, 0xaf, 0xc1, 0x82, 0x07, 0xa7, 0x83, 0xd7, 0x3b, 0x3b, 0x0c, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0xaa, 0xc3, 0xe9, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x87, 0xdd, 0xb0, 0x82, 0xba, 0xc1, 0x50, 0x44, 0x1a, 0x76, 0x83, 0x20, 0x69, 0xde, 0xd0, 0x43, 0x68, 0x83, 0x75, 0xe9, 0x4d, 0x07, 0xef, 0xa0, 0x76, 0x38, 0xbe, 0x0d, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0xea, 0xcc, 0xe9, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x87, 0xdd, 0xb0, 0x82, 0xba, 0x78, 0xb0, 0xcc, 0x49, 0x76, 0x83, 0x45, 0x9e, 0x4e, 0x1b, 0x7a, 0x08, 0x2d, 0x1e, 0xac, 0x02, 0x93, 0x3d, 0x78, 0xba, 0x95, 0xc3, 0xf1, 0x6d, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x95, 0xac, 0x4e, 0x87, 0xa3, 0x7d, 0x0d, 0x16, 0x79, 0x3a, 0x1d, 0x3c, 0x6e, 0xf8, 0x61, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x55, 0xcb, 0x4e, 0x87, 0xa3, 0x7d, 0x0d, 0x16, 0x79, 0x3a, 0x6d, 0x68, 0x24, 0xb8, 0xc1, 0x9a, 0x96, 0xa3, 0x83, 0xa0, 0xf4, 0x1e, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0x99, 0xb6, 0xd3, 0xe1, 0x68, 0x5f, 0x83, 0x45, 0x9e, 0x4e, 0x1b, 0x1a, 0x09, 0x6e, 0x10, 0x94, 0xde, 0x07, 0x6b, 0x5a, 0x8e, 0x86, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0xbf, 0xeb, 0x74, 0x38, 0xda, 0xd7, 0x60, 0x91, 0xa7, 0xd3, 0x1a, 0x2c, 0x07, 0x7a, 0x5a, 0x3c, 0xfc, 0x50, 0x73, 0x68, 0x24, 0x78, 0xf0, 0xec, 0xe1, 0x87, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0x96, 0xd9, 0x39, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0xe2, 0xb0, 0x1b, 0x04, 0x49, 0xf3, 0x1a, 0x2c, 0xb9, 0x41, 0xda, 0x60, 0x19, 0x27, 0xd2, 0xa1, 0x87, 0xd0, 0x06, 0x8b, 0x3c, 0x9d, 0xd6, 0x60, 0x39, 0xd0, 0xd3, 0x06, 0x8b, 0xc4, 0x7f, 0x0e, 0x3d, 0x84, 0x36, 0x28, 0xce, 0xb9, 0x0e, 0x16, 0xa0, 0x92, 0x1d, 0xdf, 0x86, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0x9c, 0xee, 0x74, 0x38, 0xda, 0xd7, 0x60, 0xc9, 0x9d, 0xd3, 0x86, 0x46, 0x82, 0x83, 0x60, 0x83, 0x25, 0xdf, 0x5f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xcd, 0x92, 0x86, 0xdf, 0x78, 0xbe, 0x06, 0x2d, 0xc8, 0xc8, 0x1f, 0x3a, 0xa9, 0x1d, 0x62, 0x78, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0x01, 0xc0, 0xd3, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0x0e, 0xbb, 0x61, 0x05, 0x75, 0x83, 0x57, 0xbf, 0x3f, 0x6c, 0xb0, 0xc8, 0xd3, 0x69, 0x43, 0x0f, 0xa1, 0x0d, 0x9e, 0x6e, 0xe5, 0x70, 0xf0, 0x1e, 0xf7, 0x87, 0xe3, 0xdb, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x4b, 0x79, 0x91, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x71, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0xe8, 0x9a, 0xb9, 0x41, 0x7b, 0x9d, 0xee, 0x1b, 0xb4, 0x3c, 0xea, 0xbe, 0xc1, 0xa2, 0x23, 0xa4, 0x83, 0xf7, 0x6b, 0x32, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x0b, 0x82, 0x0d, 0xce, 0xc1, 0xdf, 0x87, 0x34, 0xdc, 0x06, 0x6b, 0xd5, 0x8f, 0x0e, 0xe3, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0x41, 0xc9, 0xd0, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x08, 0x92, 0xe8, 0xe3, 0xd0, 0x06, 0xeb, 0x52, 0x94, 0x06, 0xc1, 0x06, 0xe9, 0xb2, 0xdd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8a, 0x3d, 0x88, 0x83, 0x15, 0xc8, 0x40, 0xc7, 0xa1, 0x0d, 0xd6, 0xe1, 0x33, 0x1d, 0x3a, 0x86, 0x1d, 0xac, 0xe5, 0x13, 0x18, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0xc5, 0xc3, 0xd3, 0xe1, 0x68, 0x5f, 0x83, 0x45, 0x9e, 0x4e, 0x1b, 0xbc, 0xac, 0xff, 0xe1, 0xe0, 0x8c, 0x00, 0x3f, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x3a, 0x8f, 0xa7, 0xc3, 0xd1, 0xbe, 0x06, 0x8b, 0x3c, 0x9d, 0xd6, 0x60, 0x39, 0xd0, 0xd3, 0x06, 0xab, 0xd6, 0xa8, 0x0e, 0x8d, 0x04, 0x0f, 0xce, 0x08, 0xf0, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0x2c, 0x01, 0x7a, 0x3a, 0x1c, 0xed, 0x6b, 0xb0, 0xf4, 0xf9, 0xe8, 0xe0, 0xcd, 0x11, 0x0f, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0xac, 0x8d, 0x7a, 0x3a, 0x1c, 0xed, 0x6b, 0xb0, 0xc8, 0xd3, 0x69, 0xc3, 0xb8, 0x8c, 0x1b, 0x2c, 0x73, 0x92, 0x3d, 0x58, 0x05, 0x26, 0x3b, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x72, 0xb8, 0xa7, 0xc3, 0xd1, 0xbe, 0x06, 0xeb, 0x25, 0x95, 0x16, 0x37, 0x58, 0x2d, 0x82, 0x74, 0xd0, 0x28, 0x33, 0xe0, 0x1a, 0x2c, 0x8f, 0x7c, 0x5a, 0xdc, 0xa0, 0x10, 0x4c, 0xdd, 0x60, 0x19, 0x81, 0xd5, 0x06, 0xab, 0x45, 0x90, 0x0e, 0xd6, 0x66, 0x78, 0x1f, 0xc6, 0xe5, 0x10, 0xc3, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x0d, 0x96, 0x3b, 0x3f, 0x1d, 0x8e, 0xf6, 0x85, 0x5d, 0xd8, 0x0d, 0x8a, 0x90, 0xc1, 0x05, 0xc1, 0x06, 0xe9, 0x95, 0xd8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x86, 0x1c, 0x8c, 0x77, 0x9d, 0x43, 0x0f, 0xa1, 0xe3, 0xd0, 0xb0, 0x0b, 0x82, 0x0d, 0xd2, 0x2b, 0xb1, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0x59, 0x07, 0xe2, 0x60, 0x10, 0xad, 0x1c, 0x87, 0x16, 0x76, 0x41, 0xb0, 0x41, 0x02, 0x23, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x27, 0xeb, 0x40, 0x1c, 0x0c, 0xfe, 0x98, 0xe3, 0xd0, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x37, 0x08, 0x4a, 0xef, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x86, 0xdc, 0xf7, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x78, 0xd0, 0x08, 0xd5, 0xf3, 0xf1, 0xed, 0x78, 0x7c, 0x38, 0xc5, 0x0e, 0x16, 0xdf, 0xf9, 0x2f, 0x08, 0x16, 0x87, 0x5d, 0xd8, 0x0d, 0x8a, 0xcb, 0xa6, 0x0d, 0x16, 0x63, 0x79, 0x1d, 0x8e, 0xf6, 0x35, 0xc4, 0xf0, 0x90, 0x97, 0x1d, 0x76, 0x61, 0x37, 0x28, 0x2e, 0x9b, 0x16, 0x6e, 0x83, 0x15, 0x71, 0x47, 0x87, 0xac, 0xdd, 0xe1, 0x68, 0xdf, 0x20, 0x84, 0x9b, 0x87, 0x5d, 0xd8, 0x0d, 0x8a, 0xcb, 0xa6, 0x85, 0xdb, 0x60, 0x31, 0x75, 0xd2, 0x21, 0x6b, 0x77, 0x38, 0xda, 0xd7, 0x10, 0xc3, 0x0d, 0x1d, 0xc3, 0x0e, 0x3d, 0x84, 0x86, 0x5d, 0xd8, 0x0d, 0x8a, 0xcb, 0xa6, 0x85, 0xdb, 0x60, 0xf5, 0x80, 0xd2, 0x21, 0x6b, 0x77, 0x38, 0xda, 0xd7, 0x10, 0xc3, 0x83, 0x33, 0x5f, 0xed, 0xb0, 0x0b, 0xbb, 0x41, 0x71, 0xd9, 0xb4, 0x70, 0x1b, 0x2c, 0x27, 0x4f, 0x3a, 0x64, 0xed, 0x0e, 0x47, 0xfb, 0x1a, 0x62, 0xb8, 0xa1, 0x87, 0xd0, 0x06, 0x6b, 0x26, 0x94, 0x0e, 0x9a, 0x84, 0x6c, 0x19, 0x76, 0x61, 0x37, 0x28, 0x2e, 0x9b, 0x16, 0x6e, 0x83, 0x75, 0x29, 0x4a, 0x87, 0xac, 0xdd, 0xe1, 0x68, 0x5f, 0xd8, 0x0d, 0x2b, 0xa8, 0x1b, 0x62, 0xb8, 0x21, 0x86, 0x1b, 0x7a, 0x08, 0x6d, 0xb0, 0x2e, 0x45, 0xe9, 0xd0, 0x31, 0x6c, 0xd8, 0x85, 0xdd, 0xa0, 0xb8, 0x6c, 0x5a, 0xb8, 0x0d, 0x96, 0xe3, 0x28, 0x1d, 0xb2, 0x76, 0x87, 0xa3, 0x7d, 0x61, 0x37, 0xac, 0xa0, 0x6e, 0x88, 0xe1, 0xb0, 0x1b, 0x04, 0x49, 0xf3, 0x06, 0x81, 0x7f, 0xbe, 0x21, 0x86, 0x1b, 0x7a, 0x08, 0x6d, 0xb0, 0x1c, 0x47, 0xe9, 0xd0, 0x31, 0xec, 0xa0, 0x2d, 0x42, 0xa6, 0xe3, 0xdb, 0x82, 0x60, 0x83, 0x13, 0xb3, 0xef, 0xb0, 0x0b, 0xbb, 0xc1, 0xe8, 0x58, 0x5f, 0xd8, 0x0d, 0x52, 0x58, 0xad, 0x37, 0x08, 0x2d, 0xf7, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x37, 0x08, 0x29, 0xf0, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0x78, 0xd0, 0xa0, 0xe8, 0xf3, 0xe1, 0x14, 0x5b, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0x78, 0xd0, 0x38, 0xeb, 0xf3, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x77, 0x07, 0x41, 0xce, 0x7f, 0x70, 0xd8, 0xe8, 0x5d, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0xf8, 0x05, 0xc9, 0x80, 0x44, 0x77, 0xb9, 0x83, 0x20, 0xe7, 0x3f, 0xbe, 0x0d, 0x82, 0xc5, 0x61, 0x17, 0x76, 0x83, 0x35, 0xe0, 0xff, 0x87, 0xf5, 0xcd, 0x35, 0x58, 0xaf, 0xdc, 0xb4, 0x06, 0x4b, 0x02, 0x91, 0x0e, 0x7b, 0x85, 0x07, 0xe3, 0x4d, 0x67, 0xd8, 0x85, 0xdd, 0x60, 0x0d, 0xf8, 0xff, 0xc2, 0x6d, 0xb0, 0xa2, 0xe9, 0xe8, 0x10, 0xff, 0xc3, 0xd1, 0xbe, 0xb0, 0x1b, 0xb4, 0xea, 0x21, 0xb0, 0xc1, 0x78, 0xd3, 0xd9, 0x60, 0x7d, 0xdf, 0xd2, 0xc1, 0x0a, 0x89, 0xff, 0x61, 0x37, 0x58, 0xdb, 0xff, 0xbf, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x5a, 0xfb, 0xc9, 0x41, 0x5b, 0x39, 0x51, 0xc3, 0x6e, 0xd0, 0x3a, 0x1f, 0xc0, 0x1a, 0x2c, 0x78, 0x70, 0xda, 0x60, 0xf0, 0x4e, 0x2e, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf7, 0x0f, 0x56, 0x2e, 0xaf, 0x1d, 0x04, 0x3d, 0xf7, 0x20, 0x19, 0x32, 0x88, 0x16, 0xdc, 0x3f, 0x78, 0x35, 0xd5, 0xc3, 0x20, 0xda, 0x20, 0x40, 0xb8, 0x8f, 0xe7, 0x0b, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xfd, 0x83, 0x20, 0x8b, 0x3f, 0x08, 0x7a, 0xee, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xb8, 0x7f, 0x30, 0x58, 0x63, 0x0f, 0xde, 0xd1, 0x07, 0x31, 0xec, 0xc2, 0x6e, 0xb0, 0x06, 0xfc, 0x7f, 0xe1, 0x36, 0x58, 0x11, 0x77, 0x74, 0x88, 0xff, 0xe1, 0x68, 0x5f, 0x83, 0x15, 0x71, 0x47, 0x1b, 0x5a, 0x00, 0x1d, 0x14, 0x47, 0x2a, 0xc3, 0x2e, 0xec, 0x06, 0x6b, 0xc0, 0xff, 0x17, 0x6e, 0x43, 0xee, 0xfb, 0x10, 0xff, 0xc3, 0xd1, 0xbe, 0xc1, 0xa3, 0xe9, 0x20, 0x86, 0x5d, 0xd8, 0x0d, 0xd6, 0x80, 0xff, 0x2f, 0xdc, 0x06, 0xab, 0x1b, 0xa9, 0x0e, 0xf1, 0x3f, 0x1c, 0xed, 0x6b, 0xb0, 0x04, 0xf7, 0x68, 0x83, 0x36, 0xca, 0x80, 0x0e, 0x8a, 0x23, 0x95, 0x61, 0x17, 0x76, 0x83, 0x35, 0xe0, 0xff, 0x0b, 0xb7, 0xc1, 0x82, 0x83, 0xaa, 0x43, 0xfc, 0x0f, 0x47, 0xfb, 0x1a, 0xac, 0x57, 0x6e, 0x5a, 0x83, 0x25, 0x81, 0x48, 0x87, 0x16, 0x40, 0x07, 0xc5, 0x91, 0xca, 0xb0, 0x0b, 0xbb, 0xc1, 0x1a, 0xf0, 0xff, 0x85, 0xdb, 0x60, 0x11, 0x46, 0xd5, 0x21, 0xfe, 0x87, 0xa3, 0x7d, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x30, 0x1a, 0x3a, 0x07, 0xd1, 0xc2, 0x0e, 0x82, 0x0d, 0x12, 0xa3, 0xa5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x84, 0x7c, 0xf6, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x1e, 0x0f, 0xbb, 0xb0, 0x1b, 0xac, 0x01, 0xff, 0x5f, 0xb8, 0x0d, 0x96, 0x32, 0x6b, 0x1d, 0xe2, 0x7f, 0x38, 0xda, 0xd7, 0x60, 0x7d, 0xdf, 0xd2, 0xc2, 0x6e, 0x58, 0xdf, 0xdb, 0xd0, 0x02, 0x68, 0x83, 0x45, 0x18, 0x55, 0x07, 0xa9, 0x4b, 0x44, 0x07, 0xc5, 0x91, 0xca, 0x20, 0x5b, 0x43, 0xfb, 0xf5, 0x61, 0x37, 0x58, 0x03, 0xfe, 0xbf, 0x70, 0x1b, 0xac, 0xfb, 0xd6, 0x3a, 0xc4, 0xff, 0x70, 0xb4, 0x6f, 0xb0, 0x5e, 0xb9, 0x69, 0x0d, 0x96, 0x71, 0x22, 0x0d, 0x82, 0xc5, 0x61, 0x37, 0x18, 0x87, 0x4c, 0x1b, 0x62, 0xb8, 0xc1, 0x71, 0xbf, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xde, 0x0f, 0x82, 0x0d, 0x92, 0x07, 0xab, 0x0f, 0x5a, 0xcf, 0x0f, 0x39, 0x1e, 0x1f, 0xdf, 0x0e, 0xc6, 0x9b, 0xce, 0xf1, 0xed, 0x78, 0x3c, 0x08, 0x16, 0x87, 0x5d, 0xd8, 0x0d, 0x8a, 0xcb, 0xa6, 0x85, 0x5d, 0xb8, 0x0d, 0x96, 0x6a, 0x21, 0x1d, 0xb2, 0x76, 0x0b, 0xbb, 0xc1, 0xb2, 0xc1, 0xa0, 0x85, 0x5d, 0xb8, 0x0d, 0xd2, 0x42, 0xb3, 0x0f, 0x3d, 0x84, 0x36, 0x68, 0x97, 0x31, 0xe5, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x37, 0x08, 0x9c, 0xe6, 0x61, 0x37, 0x78, 0x98, 0x12, 0xc4, 0x06, 0x21, 0xdc, 0x7c, 0xd0, 0x16, 0x21, 0xd3, 0xf1, 0x6d, 0x41, 0xb0, 0x38, 0xec, 0xc2, 0x6e, 0x50, 0x5c, 0x36, 0x2d, 0xdc, 0x06, 0xcb, 0x38, 0x91, 0x0e, 0x59, 0xbb, 0xc3, 0xd1, 0xbe, 0xb0, 0x1b, 0x56, 0x50, 0x37, 0xc4, 0x70, 0xd8, 0x0d, 0xd2, 0x12, 0xad, 0x37, 0x08, 0xc0, 0xe7, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0x06, 0xd1, 0xca, 0x86, 0x18, 0x1e, 0x04, 0xb9, 0xf5, 0xb0, 0x0b, 0xbb, 0x41, 0x71, 0xd9, 0xb4, 0x70, 0x1b, 0xac, 0x13, 0x41, 0x3a, 0x64, 0xed, 0x0e, 0x47, 0xfb, 0x86, 0x65, 0xd4, 0x61, 0x37, 0x78, 0x98, 0x12, 0xc4, 0x82, 0x64, 0xc8, 0x20, 0x5a, 0x10, 0x0f, 0x82, 0x05, 0xc9, 0xa0, 0xec, 0xb0, 0x42, 0x3b, 0x48, 0x06, 0xd1, 0xc1, 0x58, 0x5f, 0x3d, 0x1e, 0x0f, 0xbb, 0xb0, 0x1b, 0x14, 0x97, 0x4d, 0x0b, 0xb7, 0xc1, 0x7a, 0xe5, 0xa6, 0x43, 0xd6, 0xee, 0x70, 0xb4, 0x6f, 0xf0, 0xc2, 0x5b, 0x88, 0x61, 0x17, 0x76, 0x83, 0xe2, 0xb2, 0x69, 0xe1, 0x36, 0x58, 0x97, 0xde, 0x74, 0xc8, 0xda, 0x1d, 0x8e, 0xf6, 0x83, 0x77, 0xb1, 0x42, 0x1c, 0xdf, 0x06, 0xc1, 0xe2, 0xb0, 0x1b, 0x3c, 0xff, 0x08, 0x62, 0x41, 0xb0, 0x82, 0x64, 0xc8, 0x41, 0x59, 0xea, 0x74, 0xb0, 0x62, 0x41, 0x67, 0xd8, 0x0d, 0x16, 0xc0, 0xfa, 0x6c, 0x88, 0xe1, 0xb0, 0x1b, 0x84, 0x96, 0xfb, 0x86, 0x18, 0x6e, 0x88, 0xe1, 0x06, 0x0b, 0x67, 0x8c, 0x0e, 0x9a, 0xa3, 0x01, 0x18, 0x76, 0x61, 0x37, 0x28, 0x2e, 0x9b, 0x16, 0x6e, 0x83, 0x15, 0x4d, 0x47, 0x87, 0xac, 0xdd, 0xe1, 0x68, 0xdf, 0x20, 0x20, 0x99, 0x87, 0x5d, 0xd8, 0x0d, 0x8a, 0xcb, 0xa6, 0x85, 0xdb, 0x60, 0xd1, 0x11, 0xd2, 0x21, 0x6b, 0x77, 0x38, 0xda, 0x17, 0x76, 0x83, 0x76, 0x19, 0x53, 0xd6, 0x10, 0xc3, 0x0d, 0xb9, 0xef, 0x83, 0x33, 0x5f, 0xed, 0x21, 0x86, 0xc3, 0x2e, 0xec, 0x06, 0xc5, 0x65, 0xd3, 0xc2, 0x2e, 0xdc, 0x06, 0x4b, 0xe5, 0x95, 0x0e, 0x59, 0xbb, 0x85, 0xdd, 0x60, 0xd9, 0x60, 0xd0, 0xc2, 0x2e, 0xec, 0x06, 0xe9, 0x8a, 0xd6, 0x0b, 0xbb, 0xb0, 0x1b, 0x3c, 0x26, 0xeb, 0xe1, 0xb0, 0xbe, 0xb9, 0x70, 0x1b, 0x62, 0x78, 0x30, 0xf8, 0x63, 0x0e, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x68, 0x37, 0x71, 0xe5, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0xbe, 0xc1, 0x33, 0x65, 0x21, 0x86, 0xdd, 0xe0, 0x71, 0xbd, 0x10, 0x0b, 0x82, 0x05, 0xc9, 0xe0, 0xdc, 0x41, 0xc0, 0xfb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xe6, 0xa0, 0x31, 0xfe, 0x94, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x34, 0x13, 0x31, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x4d, 0x40, 0x8a, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x06, 0x8b, 0x30, 0xaa, 0x0e, 0xc6, 0x30, 0xfe, 0xf1, 0xf8, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x14, 0x97, 0x4d, 0x0b, 0xbb, 0xc1, 0xfb, 0x69, 0x21, 0x0e, 0x96, 0x01, 0x80, 0x1d, 0x8e, 0xf6, 0x0d, 0xcb, 0xa8, 0xc3, 0x2e, 0xec, 0x06, 0xc5, 0x65, 0xd3, 0xc2, 0x2e, 0xdc, 0x06, 0x4b, 0x70, 0x8f, 0x0e, 0x59, 0xbb, 0x85, 0xdd, 0x60, 0xd9, 0x60, 0xd0, 0xc2, 0x6e, 0x90, 0xae, 0x68, 0xbd, 0x70, 0x1b, 0xac, 0x6e, 0xa4, 0x3a, 0x18, 0x44, 0x2b, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0xe0, 0x18, 0xb0, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x54, 0xd1, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x83, 0xd5, 0x8d, 0x54, 0x07, 0x4d, 0xdb, 0xe1, 0x1f, 0x8f, 0x8f, 0x43, 0xc3, 0x6e, 0xf0, 0x12, 0x57, 0x88, 0x85, 0x5d, 0xd8, 0x0d, 0x96, 0x0d, 0x06, 0x2d, 0xec, 0x06, 0x69, 0x89, 0xd6, 0x07, 0xed, 0x26, 0xae, 0x1c, 0x8e, 0xf6, 0x0d, 0x02, 0xf0, 0x79, 0x10, 0x6c, 0x88, 0xe1, 0x20, 0x58, 0x1c, 0x76, 0x83, 0x71, 0xc8, 0xb4, 0x86, 0x18, 0x6e, 0xb0, 0xee, 0x5b, 0xeb, 0x90, 0x3a, 0x18, 0x76, 0xe1, 0x36, 0x38, 0xee, 0x77, 0x1c, 0x84, 0x7c, 0xf6, 0x82, 0x64, 0xc8, 0x20, 0xda, 0x60, 0xac, 0x35, 0x1d, 0x8f, 0x0f, 0x31, 0x3c, 0xbe, 0x0d, 0xbb, 0xb0, 0x1b, 0x14, 0x97, 0x4d, 0x0b, 0xb7, 0xc1, 0xf2, 0xe9, 0xa5, 0x43, 0xd6, 0xee, 0x70, 0xb4, 0xaf, 0x21, 0x86, 0x1b, 0x2c, 0x65, 0xd6, 0xda, 0x90, 0xaf, 0x3d, 0x68, 0x41, 0x46, 0x7e, 0xd8, 0x85, 0xdd, 0xa0, 0xb8, 0x6c, 0x5a, 0xb8, 0x0d, 0x16, 0xb5, 0x2e, 0x1d, 0xb2, 0x76, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0xc1, 0x93, 0xae, 0x21, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x84, 0x2a, 0xfa, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x41, 0x4b, 0x7d, 0xe6, 0x6b, 0x88, 0xe1, 0x06, 0x0b, 0x0e, 0xaa, 0x0e, 0xc6, 0xcc, 0xce, 0xb0, 0x0b, 0xbb, 0x41, 0xab, 0x7d, 0xe6, 0x0b, 0xbb, 0x70, 0x1b, 0x2c, 0x38, 0xa8, 0x3a, 0x28, 0x42, 0x13, 0x16, 0x76, 0xa1, 0x07, 0x67, 0xa3, 0xe7, 0x85, 0x5d, 0xd8, 0x85, 0x4e, 0x50, 0xea, 0x0f, 0xeb, 0x9b, 0x0b, 0xbb, 0xd0, 0x09, 0x6a, 0xfd, 0xc2, 0x2e, 0xdc, 0x06, 0x2b, 0x9a, 0x8e, 0x26, 0x38, 0xeb, 0x17, 0x6e, 0x83, 0x85, 0x26, 0x46, 0x13, 0xdc, 0xf5, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x1a, 0x62, 0xb8, 0xc1, 0x82, 0x83, 0xaa, 0x0d, 0xde, 0x6e, 0x10, 0x71, 0x48, 0x1d, 0x1c, 0x62, 0x78, 0x3c, 0x3e, 0x0e, 0x0d, 0xb2, 0x0d, 0xcd, 0xd7, 0x07, 0xc1, 0x06, 0xe9, 0xd3, 0x27, 0xc3, 0x2e, 0xdc, 0xc6, 0xa1, 0xc3, 0x5e, 0xe1, 0x86, 0x18, 0x1e, 0x0c, 0x6d, 0xe8, 0xe3, 0xdb, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x7c, 0x18, 0xbc, 0x61, 0x85, 0x76, 0x0d, 0x96, 0x04, 0x67, 0x1f, 0x8c, 0x3b, 0xa8, 0x35, 0x68, 0xb3, 0x16, 0xf9, 0xe0, 0xc4, 0xec, 0xdb, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0x12, 0x6b, 0xab, 0xc5, 0x05, 0xc1, 0xe2, 0xc1, 0xb3, 0x7e, 0x0b, 0x16, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x7e, 0x87, 0xe4, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x1b, 0xac, 0x7e, 0x78, 0xda, 0x60, 0xad, 0x12, 0xd7, 0x82, 0x60, 0x83, 0x14, 0x55, 0x82, 0x43, 0x1a, 0x6e, 0x10, 0x6c, 0x90, 0xa2, 0x4a, 0x70, 0xe8, 0xa0, 0x71, 0x1c, 0x3a, 0x1e, 0xaf, 0x20, 0xd8, 0x60, 0xd5, 0x1a, 0xd5, 0xe2, 0x20, 0xd8, 0xe0, 0xe5, 0x18, 0x11, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x6f, 0xb0, 0x1c, 0xe8, 0x69, 0x41, 0xb0, 0x20, 0x19, 0xdc, 0x3b, 0x24, 0x97, 0x0e, 0x8d, 0x5a, 0x0e, 0xd6, 0x2a, 0x71, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x97, 0x5f, 0x44, 0x2c, 0x0e, 0x82, 0x0d, 0x5e, 0x8e, 0x11, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x06, 0x6b, 0x3e, 0x9e, 0x0e, 0x1e, 0xb7, 0x11, 0x71, 0x1c, 0x3a, 0x1e, 0x2f, 0x08, 0x16, 0x0f, 0x9a, 0xec, 0x29, 0x59, 0x1c, 0x04, 0x1b, 0xbc, 0x1c, 0x23, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0x16, 0xaa, 0x3b, 0x0d, 0xbf, 0xf1, 0x7c, 0x83, 0xb5, 0x4a, 0x5c, 0x1b, 0xbc, 0x80, 0x23, 0x62, 0x10, 0x6c, 0xd0, 0x6a, 0x1e, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xbe, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xf1, 0xa0, 0x61, 0x87, 0xe6, 0xc5, 0x0d, 0xd1, 0x1c, 0x04, 0x1b, 0xac, 0x60, 0xe7, 0x3a, 0x74, 0xd0, 0x38, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x78, 0x39, 0x46, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x2c, 0xb9, 0x73, 0x1a, 0x7e, 0xe3, 0xf9, 0x06, 0x6b, 0x95, 0xb8, 0x06, 0xc1, 0x06, 0xad, 0xe6, 0x31, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x0e, 0x9e, 0xfd, 0x12, 0x71, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0xac, 0x69, 0x39, 0x5a, 0x1c, 0x76, 0x61, 0x37, 0x68, 0xf6, 0xa1, 0x69, 0x61, 0x37, 0x28, 0x7a, 0x12, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x06, 0xeb, 0xd2, 0x9b, 0x36, 0x48, 0x25, 0xee, 0x38, 0xa4, 0x0e, 0x0e, 0xa9, 0x83, 0xe3, 0xf1, 0x0a, 0xbb, 0x21, 0x8f, 0xb5, 0xb0, 0x1b, 0x04, 0x89, 0xf7, 0x06, 0x41, 0xe9, 0x7d, 0x70, 0x32, 0x9e, 0x1e, 0x64, 0x1b, 0xb4, 0x74, 0x06, 0x73, 0xb0, 0x04, 0x58, 0x7f, 0x10, 0x6c, 0xf0, 0xf2, 0x8b, 0x88, 0xc5, 0x41, 0xb0, 0xc1, 0xcb, 0x31, 0x22, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0xdf, 0x60, 0x2d, 0xaf, 0xd3, 0xc1, 0xe3, 0x36, 0x22, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x48, 0x04, 0x6c, 0x48, 0x1d, 0x6c, 0xb0, 0x08, 0xa3, 0x6a, 0x83, 0x47, 0xb3, 0x3d, 0x1c, 0x52, 0x07, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0xab, 0xd6, 0xa8, 0x0e, 0x5e, 0x88, 0x14, 0xb1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xc1, 0xcb, 0x31, 0x22, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0xdf, 0x60, 0xa5, 0xcb, 0xd3, 0x82, 0x60, 0x41, 0x32, 0x30, 0x77, 0x87, 0xe4, 0xd2, 0xa1, 0x51, 0xcb, 0xc1, 0x5a, 0x25, 0xae, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0xa6, 0xe5, 0x68, 0x71, 0xd8, 0x0d, 0x89, 0x80, 0x85, 0xdd, 0xa0, 0xe8, 0x49, 0xd8, 0x90, 0x3a, 0xd8, 0x60, 0x8d, 0x8b, 0xd3, 0x1a, 0x14, 0x7b, 0x10, 0x87, 0x18, 0xae, 0xc1, 0x32, 0x4e, 0xa4, 0x43, 0xc3, 0xaf, 0x43, 0xea, 0x60, 0x90, 0xad, 0xa1, 0xfd, 0xfa, 0x41, 0xb3, 0x0f, 0x4d, 0x1b, 0x2c, 0x78, 0x70, 0x5a, 0xd8, 0x0d, 0x8a, 0x9e, 0x84, 0x0d, 0x0d, 0xbf, 0x36, 0x58, 0xd4, 0xba, 0xb4, 0x41, 0xb1, 0x07, 0x71, 0x68, 0xf8, 0x75, 0x48, 0x1d, 0x1c, 0x8f, 0x8f, 0xc7, 0x83, 0x60, 0xf1, 0xa0, 0x80, 0x16, 0x1c, 0x04, 0x1b, 0xac, 0x5a, 0xa3, 0x5a, 0x5c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5a, 0x30, 0x1e, 0x04, 0x1b, 0xb4, 0x8d, 0x45, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x39, 0x08, 0x52, 0xfc, 0xe3, 0xd0, 0x21, 0xb9, 0x74, 0x3c, 0x5e, 0x0d, 0x96, 0xbb, 0x2d, 0x2d, 0x1e, 0x34, 0xae, 0x5b, 0x30, 0x08, 0x36, 0x18, 0x21, 0x51, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x16, 0x56, 0x98, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xec, 0xc2, 0x2e, 0xf4, 0x20, 0xc1, 0x00, 0xe1, 0xb0, 0xbe, 0xb9, 0x20, 0xdb, 0x10, 0x97, 0x41, 0xb0, 0x38, 0xec, 0x06, 0x0f, 0x34, 0x86, 0x58, 0xd8, 0x85, 0xdb, 0x60, 0x7d, 0x83, 0xd1, 0x21, 0x5f, 0xbb, 0x41, 0x6b, 0x83, 0xf3, 0x83, 0x60, 0x83, 0x96, 0x09, 0xe2, 0x0f, 0x7b, 0xbc, 0xc3, 0x2e, 0xec, 0x06, 0xc5, 0x65, 0xd3, 0xc2, 0x6d, 0xb0, 0x9c, 0xa7, 0xea, 0x90, 0xb5, 0x3b, 0x1c, 0xed, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x81, 0xb0, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x43, 0xce, 0x7a, 0x90, 0x0c, 0x0c, 0xd5, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x43, 0xce, 0x7a, 0x90, 0x0c, 0x94, 0xab, 0x83, 0x16, 0x59, 0x5f, 0x0e, 0xd6, 0xa1, 0xf2, 0x1f, 0x87, 0x0e, 0xde, 0x30, 0xeb, 0x70, 0x10, 0x24, 0xe8, 0xc3, 0x6e, 0xf0, 0x30, 0x25, 0x88, 0x35, 0x58, 0x11, 0x77, 0xb4, 0xa1, 0x87, 0xd0, 0x41, 0x08, 0x37, 0x0f, 0xbb, 0xb0, 0x1b, 0x14, 0x97, 0x4d, 0x0b, 0xb7, 0xc1, 0x62, 0x3f, 0xaa, 0x43, 0xd6, 0xee, 0x70, 0xb4, 0x6f, 0x10, 0xc2, 0xcd, 0xc3, 0x2e, 0xec, 0x06, 0xc5, 0x65, 0xd3, 0xc2, 0x6d, 0xc8, 0x7d, 0x1f, 0xb2, 0x76, 0x87, 0xa3, 0x7d, 0x0d, 0x16, 0x1d, 0x21, 0x1d, 0x9c, 0xf9, 0x6a, 0x87, 0x5d, 0xd8, 0x0d, 0x8a, 0xcb, 0xa6, 0x85, 0xdb, 0x60, 0x81, 0x2e, 0xd5, 0x21, 0x6b, 0x77, 0x38, 0xda, 0x17, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x0e, 0x82, 0x0d, 0xde, 0x06, 0xdd, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xd1, 0xd2, 0x0d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x1d, 0xb4, 0xba, 0x17, 0x71, 0xd0, 0xae, 0x57, 0xc5, 0xf0, 0x1b, 0xcf, 0x37, 0x58, 0xa0, 0x4b, 0x75, 0xc8, 0xd7, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x88, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x21, 0x67, 0x3d, 0x48, 0x06, 0xaa, 0xd7, 0x41, 0x8b, 0xac, 0x2f, 0x87, 0x3d, 0xde, 0xe3, 0xf1, 0xb0, 0x0b, 0xbb, 0x41, 0x71, 0xd9, 0xb4, 0x70, 0x1b, 0xac, 0x32, 0xa5, 0x3a, 0x64, 0xed, 0x0e, 0x47, 0xfb, 0x82, 0x64, 0xc8, 0x20, 0x5a, 0x10, 0x6f, 0xb0, 0x80, 0xc0, 0x6a, 0x10, 0x6c, 0xd0, 0xe8, 0xb9, 0xfe, 0x41, 0x53, 0x5d, 0x2d, 0xc7, 0xe3, 0x61, 0x17, 0x76, 0x83, 0xe2, 0xb2, 0x69, 0xe1, 0x36, 0x58, 0xa2, 0x4c, 0x75, 0xc8, 0xda, 0x1d, 0x8e, 0xf6, 0x0d, 0x42, 0xb8, 0x79, 0xd8, 0x85, 0xdd, 0xa0, 0xb8, 0x6c, 0x5a, 0xb8, 0x0d, 0x16, 0xb9, 0x53, 0x1d, 0xb2, 0x76, 0x87, 0xa3, 0x7d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x88, 0x37, 0x58, 0x40, 0x60, 0x35, 0x08, 0x16, 0x24, 0x03, 0xb5, 0xeb, 0x78, 0x7e, 0xd0, 0x54, 0x57, 0xcb, 0xf1, 0x78, 0xd8, 0x85, 0xdd, 0xa0, 0xb8, 0x6c, 0x5a, 0xb8, 0x0d, 0x16, 0x1c, 0x54, 0x1d, 0xb2, 0x76, 0x87, 0xa3, 0x7d, 0x83, 0x10, 0x6e, 0x1e, 0x76, 0x61, 0x37, 0x28, 0x2e, 0x9b, 0x16, 0x6e, 0x83, 0x45, 0x18, 0x55, 0x87, 0xac, 0xdd, 0xe1, 0x68, 0x5f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xae, 0x1f, 0x7a, 0x08, 0x1d, 0x84, 0x7b, 0xf3, 0xb0, 0x0b, 0xbb, 0x41, 0x71, 0xd9, 0xb4, 0x70, 0x1b, 0xac, 0xe4, 0xaa, 0x3a, 0x64, 0xed, 0x0e, 0x47, 0xfb, 0x06, 0x81, 0x7f, 0x3e, 0xec, 0xc2, 0x6e, 0x50, 0x5c, 0x36, 0x2d, 0xdc, 0x06, 0x0b, 0xd8, 0xaa, 0x0e, 0x59, 0xbb, 0xc3, 0xd1, 0xbe, 0x41, 0x6b, 0x83, 0xf3, 0xc3, 0x2e, 0xec, 0x06, 0xc5, 0x65, 0xd3, 0xc2, 0x6d, 0xb0, 0x68, 0xaf, 0xea, 0x90, 0xb5, 0x3b, 0x1c, 0xed, 0x0b, 0x82, 0xc5, 0x61, 0x37, 0x28, 0xaa, 0x14, 0x16, 0x24, 0x43, 0x0e, 0x06, 0xe0, 0xff, 0x06, 0x8f, 0x4d, 0x8d, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf6, 0x83, 0x16, 0xc6, 0x5d, 0x8e, 0xc7, 0xc7, 0xb7, 0x61, 0x17, 0x76, 0x83, 0xe2, 0xb2, 0x69, 0xe1, 0x36, 0x58, 0xc8, 0x58, 0x75, 0xc8, 0xda, 0x1d, 0x8e, 0xf6, 0x05, 0xc1, 0xe2, 0xb0, 0x1b, 0x14, 0x55, 0x0a, 0x07, 0xef, 0x53, 0x8d, 0x38, 0xbe, 0x0d, 0xbb, 0xb0, 0x1b, 0x14, 0x97, 0x4d, 0x0b, 0xb7, 0xc1, 0x02, 0xde, 0xaa, 0x43, 0xd6, 0xee, 0x70, 0xb4, 0x6f, 0xd0, 0xda, 0xe0, 0xfc, 0xb0, 0x0b, 0xbb, 0x41, 0x71, 0xd9, 0xb4, 0x70, 0x1b, 0x2c, 0x5f, 0xad, 0x3a, 0x64, 0xed, 0x0e, 0x47, 0xfb, 0x06, 0x21, 0xdc, 0x3c, 0xec, 0xc2, 0x6e, 0x50, 0x5c, 0x36, 0x2d, 0xdc, 0x06, 0x2b, 0x55, 0xaa, 0x0e, 0x59, 0xbb, 0xc3, 0xd1, 0xbe, 0x41, 0x08, 0x37, 0x0f, 0xbb, 0xb0, 0x1b, 0x14, 0x97, 0x4d, 0x0b, 0xb7, 0xc1, 0xa2, 0xe5, 0xaa, 0x43, 0xd6, 0xee, 0x70, 0xb4, 0x6f, 0x10, 0xc2, 0xcd, 0xc3, 0x2e, 0xec, 0x06, 0xc5, 0x65, 0xd3, 0xc2, 0x6d, 0xb0, 0x6c, 0xbb, 0xea, 0x90, 0xb5, 0x3b, 0x1c, 0xed, 0x6b, 0xb0, 0x04, 0xf7, 0x68, 0x0d, 0xd6, 0x87, 0x60, 0x1d, 0x7a, 0x08, 0x1d, 0x84, 0x70, 0xf3, 0xb0, 0x0b, 0xbb, 0x41, 0x71, 0xd9, 0xb4, 0x70, 0x1b, 0x2c, 0x20, 0xb0, 0x3a, 0x64, 0xed, 0x0e, 0x47, 0xfb, 0x1a, 0xac, 0x57, 0x6e, 0xda, 0x60, 0xf4, 0x5a, 0x1d, 0xf2, 0xb5, 0xc3, 0x2e, 0xec, 0x06, 0xc5, 0x65, 0xd3, 0xc2, 0x6d, 0xb0, 0x84, 0xc2, 0xea, 0x90, 0xb5, 0x3b, 0x1c, 0xed, 0x1b, 0x04, 0xfe, 0xf9, 0xb0, 0x0b, 0xbb, 0x41, 0x71, 0xd9, 0xb4, 0x70, 0x1b, 0x2c, 0x22, 0xb1, 0x3a, 0x64, 0xed, 0x0e, 0x47, 0xfb, 0x1a, 0xac, 0xef, 0x5b, 0x3a, 0x78, 0xe0, 0x13, 0xc4, 0xb0, 0x0b, 0xbb, 0x41, 0x71, 0xd9, 0xb4, 0x70, 0x1b, 0xac, 0x2e, 0xb2, 0x3a, 0x64, 0xed, 0x0e, 0x47, 0xfb, 0x1a, 0x2c, 0x6a, 0x5d, 0x3a, 0x78, 0xed, 0x5d, 0xc4, 0xb0, 0x0b, 0xbb, 0x41, 0x71, 0xd9, 0xb4, 0x70, 0x1b, 0xac, 0xb8, 0xb2, 0x3a, 0x64, 0xed, 0x0e, 0x47, 0xfb, 0x06, 0x81, 0x7f, 0x3e, 0xec, 0xc2, 0x6e, 0x50, 0x5c, 0x36, 0x2d, 0xdc, 0x06, 0x4b, 0xcc, 0xac, 0x0e, 0x59, 0xbb, 0xc3, 0xd1, 0xbe, 0xc1, 0x53, 0x5e, 0x23, 0x86, 0x5d, 0xd8, 0x0d, 0x8a, 0xcb, 0xa6, 0x85, 0xdb, 0x60, 0xf1, 0x66, 0xd5, 0x21, 0x6b, 0x77, 0x38, 0xda, 0x37, 0x68, 0x6d, 0x70, 0x7e, 0xd8, 0x85, 0xdd, 0xa0, 0xb8, 0x6c, 0x5a, 0xb8, 0x0d, 0x96, 0xcf, 0x57, 0x1d, 0xb2, 0x76, 0x87, 0xa3, 0x7d, 0x83, 0xd6, 0x06, 0xe7, 0x87, 0x5d, 0xd8, 0x0d, 0x8a, 0xcb, 0xa6, 0x85, 0xdb, 0x60, 0x6d, 0x8d, 0xd5, 0x21, 0x6b, 0x77, 0x38, 0xda, 0x37, 0x68, 0x6d, 0x70, 0x7e, 0x90, 0xad, 0xa1, 0xfd, 0xfa, 0xb0, 0x1b, 0x14, 0x97, 0x4d, 0x0b, 0xb7, 0xc1, 0x52, 0x3b, 0xab, 0x43, 0xd6, 0xee, 0x70, 0xb4, 0x1f, 0xb4, 0x36, 0x38, 0x7f, 0x7c, 0x3b, 0x58, 0xe1, 0x93, 0x75, 0x1c, 0x3a, 0x0e, 0xad, 0x20, 0x58, 0x1c, 0x76, 0x83, 0xc7, 0x1c, 0x43, 0x2c, 0xec, 0xc2, 0x6e, 0xb0, 0x6c, 0x30, 0x68, 0xe1, 0x36, 0x58, 0x78, 0x61, 0x74, 0xe8, 0x21, 0x74, 0x38, 0xda, 0x17, 0x76, 0x83, 0x20, 0x69, 0x5e, 0x3c, 0x68, 0x3a, 0xf3, 0xe2, 0x20, 0x70, 0x9a, 0x0f, 0x31, 0x1c, 0x76, 0x83, 0x47, 0x2c, 0x41, 0x6c, 0x10, 0xc2, 0xcd, 0xc3, 0x6e, 0xf0, 0xb6, 0xbc, 0x88, 0x0d, 0x42, 0xb8, 0x79, 0xd8, 0x0d, 0x5e, 0xc2, 0x17, 0xb1, 0x41, 0x00, 0x3e, 0x0f, 0xbb, 0xc1, 0x93, 0xfe, 0x22, 0x36, 0x2c, 0xa3, 0x0e, 0xbb, 0xc1, 0xbb, 0x1b, 0x23, 0x16, 0x76, 0x83, 0x60, 0x7b, 0xde, 0x10, 0xc3, 0x61, 0x37, 0x78, 0x5f, 0x34, 0xc4, 0x06, 0xcf, 0x94, 0x85, 0x18, 0x76, 0xe1, 0x36, 0xc4, 0x70, 0x82, 0x40, 0x6f, 0x88, 0xe1, 0x04, 0x33, 0x3d, 0xec, 0x06, 0xcf, 0xad, 0x8c, 0x58, 0x10, 0x6c, 0xb0, 0x98, 0x39, 0x67, 0x90, 0x0c, 0x84, 0xef, 0x60, 0x6d, 0x27, 0xff, 0xb0, 0x1b, 0x3c, 0x60, 0x32, 0x62, 0x83, 0x10, 0x6e, 0x1e, 0x76, 0x83, 0x47, 0x77, 0x46, 0x6c, 0x10, 0xc2, 0xcd, 0xc3, 0x6e, 0xf0, 0x8c, 0xcd, 0x88, 0x0d, 0x42, 0xb8, 0x79, 0xd8, 0x0d, 0x5e, 0xe2, 0x16, 0xb1, 0x41, 0xe0, 0x9f, 0x0f, 0xbb, 0xc1, 0x7b, 0x43, 0x23, 0x36, 0x08, 0xfc, 0xf3, 0x61, 0x37, 0x78, 0x1d, 0x69, 0xc4, 0x82, 0x60, 0x83, 0xc5, 0xcc, 0x39, 0x83, 0x64, 0x20, 0x7c, 0x87, 0xed, 0xde, 0x61, 0x37, 0x78, 0xd1, 0x69, 0xc4, 0x06, 0x81, 0x7f, 0x3e, 0xec, 0x06, 0x0f, 0x6e, 0x8d, 0xd8, 0x20, 0xf0, 0xcf, 0x87, 0xdd, 0xe0, 0xa9, 0xd3, 0x11, 0x1b, 0x62, 0x38, 0xec, 0x06, 0xef, 0xa4, 0x8d, 0xd8, 0x20, 0x84, 0x9b, 0x87, 0xdd, 0xe0, 0x55, 0xb7, 0x11, 0x1b, 0x84, 0x70, 0xf3, 0xb0, 0x1b, 0xbc, 0x39, 0x36, 0x62, 0x83, 0xc0, 0x3f, 0x1f, 0x76, 0x83, 0x37, 0xe8, 0x46, 0x6c, 0x10, 0xc2, 0xcd, 0xc3, 0x6e, 0xf0, 0x62, 0xde, 0x88, 0x0d, 0x42, 0xb8, 0x79, 0xd8, 0x0d, 0x9e, 0x67, 0x1d, 0xb1, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0x7e, 0xe0, 0x88, 0x0d, 0x5e, 0x7e, 0x1f, 0x31, 0xec, 0x06, 0x2f, 0x25, 0x8e, 0xd8, 0x20, 0xf0, 0xcf, 0x87, 0xdd, 0xe0, 0x5d, 0xc7, 0x11, 0x1b, 0x84, 0x70, 0xf3, 0xb0, 0x1b, 0x3c, 0x29, 0x3b, 0x62, 0x43, 0x0c, 0x87, 0xdd, 0xe0, 0xbd, 0xca, 0x11, 0x1b, 0x84, 0x70, 0xf3, 0xb0, 0x1b, 0xbc, 0xc3, 0x39, 0x62, 0x83, 0x10, 0x6e, 0x1e, 0x76, 0x83, 0x57, 0x43, 0x47, 0x6c, 0x10, 0xf8, 0xe7, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x0f, 0xde, 0xc8, 0x1d, 0x71, 0x88, 0xe1, 0xf1, 0x6d, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x60, 0x2d, 0xd4, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x07, 0xa5, 0x1d, 0xd9, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xdb, 0x10, 0x97, 0x61, 0x37, 0x78, 0xed, 0x8e, 0xc3, 0x82, 0x60, 0x83, 0x11, 0x12, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xf5, 0x26, 0xda, 0xa1, 0x83, 0xc6, 0x71, 0x68, 0xd8, 0x0d, 0x9a, 0xc8, 0x51, 0x59, 0x90, 0x0c, 0x6e, 0x0d, 0xa2, 0x05, 0xc2, 0xbd, 0xa1, 0x91, 0xe0, 0x41, 0xd8, 0x53, 0x1f, 0x2c, 0xa8, 0xdb, 0x19, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0x81, 0x1f, 0xd5, 0xe1, 0x68, 0x5f, 0x90, 0x0c, 0x6e, 0x0d, 0xa2, 0x05, 0xc6, 0xfb, 0x20, 0x70, 0xbc, 0x0f, 0x16, 0xd4, 0xed, 0x0c, 0xbb, 0xc1, 0xbb, 0xcd, 0x1c, 0x16, 0x04, 0x1b, 0x8c, 0x90, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x37, 0x58, 0x74, 0x84, 0x74, 0x30, 0xc2, 0xd3, 0x8e, 0x43, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0xac, 0x2c, 0xa5, 0x3a, 0x1c, 0xed, 0x0b, 0x92, 0xc1, 0xad, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x20, 0xb0, 0x1a, 0x04, 0x1b, 0x0c, 0x24, 0xa8, 0x83, 0xc4, 0x1c, 0x93, 0xe3, 0xf1, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x8b, 0x72, 0xa9, 0x0e, 0x47, 0xfb, 0x1a, 0xac, 0x13, 0x41, 0x3a, 0x8c, 0xcb, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0xcb, 0x92, 0xa9, 0x0e, 0x47, 0xfb, 0x82, 0x64, 0x70, 0x6b, 0x10, 0x2d, 0x30, 0xde, 0x1b, 0x62, 0xb8, 0xc1, 0x12, 0x65, 0xaa, 0x0d, 0x86, 0x17, 0xc5, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0xd2, 0xb8, 0x4f, 0x0e, 0xd6, 0x8d, 0x31, 0x1d, 0x2c, 0xa8, 0xdb, 0x19, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0x61, 0x3b, 0xd5, 0xe1, 0x68, 0x5f, 0x90, 0x0c, 0x6e, 0x0d, 0xa2, 0x85, 0xdd, 0x60, 0x01, 0x81, 0xd5, 0x20, 0xd8, 0xd0, 0x38, 0xe5, 0x20, 0x31, 0xc7, 0xe4, 0x78, 0x3c, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x22, 0x83, 0xaa, 0xc3, 0xd1, 0xbe, 0x20, 0x19, 0xdc, 0x1a, 0x44, 0x0b, 0x8c, 0xf7, 0x86, 0x18, 0x6e, 0xb0, 0x44, 0x99, 0xea, 0xa0, 0xe5, 0xd6, 0x94, 0x83, 0x05, 0x75, 0x3b, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0x2c, 0xbc, 0xa8, 0x3a, 0x1c, 0xed, 0x0b, 0x92, 0xc1, 0xad, 0x41, 0xb4, 0xa0, 0xfa, 0xd0, 0x48, 0xf0, 0x60, 0x41, 0xdd, 0xce, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x8b, 0xd6, 0xaa, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x83, 0x11, 0x12, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x61, 0x85, 0xd9, 0xa1, 0x83, 0xc6, 0x71, 0x68, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x85, 0x7a, 0x55, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0xc1, 0x08, 0x89, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x0e, 0xbb, 0x41, 0x90, 0x34, 0x2f, 0xfc, 0x82, 0x64, 0x30, 0x3b, 0x68, 0x8c, 0x3f, 0xe5, 0xd0, 0xc5, 0x64, 0x83, 0x57, 0x0f, 0x49, 0x0c, 0xbf, 0x20, 0x19, 0xcc, 0x06, 0xd1, 0x82, 0xf4, 0x20, 0x01, 0x0f, 0xe4, 0x78, 0x7e, 0xe8, 0x62, 0x72, 0x7c, 0x3b, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0x68, 0xb7, 0xea, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x18, 0x21, 0x51, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0xe0, 0xb4, 0x82, 0x7b, 0xb0, 0xba, 0x17, 0xe6, 0x20, 0x31, 0xc7, 0xe4, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0xa2, 0x01, 0xab, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0x60, 0x84, 0x44, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x58, 0x61, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x06, 0xeb, 0x95, 0x9b, 0x36, 0x68, 0x44, 0xca, 0xfd, 0x30, 0x2e, 0xc7, 0xa1, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x0b, 0x47, 0xac, 0x0e, 0x47, 0xfb, 0x1a, 0x2c, 0x77, 0x5b, 0x5a, 0x90, 0x0c, 0x6e, 0x1d, 0x2c, 0xa8, 0xdb, 0x19, 0x04, 0x1b, 0x2c, 0xac, 0x30, 0x3b, 0x34, 0x05, 0x1a, 0x76, 0x61, 0x37, 0x74, 0x1c, 0xd9, 0x60, 0xa9, 0x76, 0xd5, 0xe1, 0x68, 0x5f, 0x10, 0x6c, 0x30, 0x42, 0xa2, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0xdf, 0x60, 0x09, 0xee, 0xd1, 0x1a, 0xac, 0x0f, 0xc1, 0x3a, 0x34, 0x12, 0x3c, 0x78, 0xee, 0x95, 0xc4, 0x71, 0x68, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x15, 0x45, 0x56, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0xc1, 0x08, 0x89, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x83, 0x45, 0xad, 0x4b, 0x1b, 0x1a, 0x09, 0x0e, 0xbf, 0x20, 0x19, 0xcc, 0x0e, 0x16, 0xd4, 0xed, 0x1c, 0xba, 0x98, 0x1c, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x58, 0xb0, 0x59, 0x75, 0x38, 0xda, 0x17, 0x04, 0x1b, 0x8c, 0x90, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0b, 0x2b, 0xcc, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0x7f, 0xc2, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb4, 0x53, 0x59, 0x72, 0x70, 0xe6, 0xab, 0x3d, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc3, 0x2e, 0xec, 0x86, 0x8e, 0x23, 0x1b, 0x2c, 0x99, 0xaf, 0x3a, 0x1c, 0xed, 0x0b, 0x82, 0x0d, 0x46, 0x48, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x85, 0x15, 0x66, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xce, 0x3f, 0xe1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xda, 0xbf, 0x30, 0x39, 0x38, 0xf3, 0xd5, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x85, 0xdb, 0x60, 0xa9, 0x9d, 0xd5, 0x21, 0x9a, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0xc1, 0x08, 0x89, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xb0, 0xc2, 0x6c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xf9, 0x27, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x33, 0x5c, 0x26, 0x07, 0x67, 0xbe, 0xda, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xc1, 0x7a, 0x1a, 0xab, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0x60, 0x84, 0x44, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x58, 0x61, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xfc, 0x13, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0xf5, 0x1e, 0x93, 0x83, 0x33, 0x5f, 0xed, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x64, 0x1b, 0x9a, 0xaf, 0x6f, 0xb0, 0xe0, 0xc1, 0x69, 0x83, 0xf3, 0x13, 0xed, 0x20, 0x58, 0xf8, 0x05, 0xc1, 0x06, 0x25, 0x43, 0xd3, 0x20, 0x19, 0x72, 0xb0, 0x6a, 0x3f, 0xe5, 0xe0, 0x91, 0x8e, 0x09, 0x83, 0x64, 0xf0, 0x6f, 0x10, 0x2d, 0xec, 0xa1, 0xf1, 0xfc, 0x71, 0x68, 0x05, 0xc1, 0x06, 0x6b, 0x5a, 0x8e, 0x16, 0x07, 0xc1, 0xc2, 0x2e, 0xdc, 0x86, 0xa3, 0xfd, 0x90, 0xec, 0xd8, 0x20, 0xe4, 0xb3, 0x07, 0xc1, 0x06, 0xe9, 0x20, 0xdd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0xd8, 0xd3, 0xf0, 0x1b, 0xcf, 0x37, 0x78, 0x1f, 0x2c, 0xc1, 0x21, 0x86, 0xc7, 0xa1, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x52, 0x35, 0x1b, 0xac, 0x4b, 0x6f, 0x5a, 0x83, 0x65, 0x9c, 0x48, 0xc7, 0xa1, 0x43, 0xaa, 0xe6, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x05, 0xd1, 0xc2, 0x1f, 0xa4, 0x7f, 0x29, 0x1c, 0x8f, 0x57, 0x10, 0x6c, 0xb0, 0xbe, 0xc1, 0x68, 0x71, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x95, 0xb3, 0x52, 0x87, 0xa3, 0x7d, 0x0d, 0x96, 0xbb, 0x2d, 0x2d, 0x48, 0x06, 0xb7, 0x0e, 0xd9, 0x8a, 0x0d, 0x96, 0xc8, 0x3e, 0x2d, 0x1e, 0x34, 0xd3, 0x39, 0xb0, 0x06, 0x2b, 0x9a, 0x95, 0x16, 0x0f, 0x5a, 0x00, 0x1d, 0x58, 0x83, 0xa5, 0x5a, 0x48, 0x1b, 0x14, 0xaf, 0x91, 0x87, 0x71, 0x39, 0x48, 0xc6, 0xa4, 0xdf, 0x60, 0xf5, 0xc3, 0xd3, 0x06, 0xef, 0x12, 0x89, 0xd8, 0x20, 0x19, 0x93, 0xfe, 0x60, 0x4d, 0xcb, 0xd1, 0xb0, 0x1b, 0x2c, 0x96, 0x31, 0x5a, 0x83, 0xe5, 0x6e, 0x4b, 0x1b, 0xbc, 0x8e, 0x53, 0x62, 0x10, 0x6c, 0xf0, 0x2e, 0x91, 0x88, 0x35, 0x58, 0xc6, 0x89, 0xb4, 0xc1, 0x68, 0xa3, 0x3d, 0x0e, 0x6d, 0xb0, 0x8c, 0x13, 0x69, 0x83, 0x54, 0xe2, 0x8e, 0xe3, 0xd0, 0xb0, 0x1b, 0x2c, 0xfe, 0x31, 0x5a, 0x83, 0x45, 0x9e, 0x4e, 0x6b, 0xb0, 0x18, 0x66, 0x69, 0xf1, 0xa0, 0x91, 0xed, 0x81, 0x83, 0x51, 0xca, 0xb9, 0xc1, 0xab, 0xdf, 0x1f, 0x36, 0x58, 0xb2, 0xed, 0xb4, 0x06, 0x8b, 0x61, 0x96, 0x16, 0x0f, 0x5a, 0x17, 0x2b, 0x38, 0x18, 0xa5, 0x9c, 0x07, 0xef, 0x71, 0x7f, 0x18, 0x76, 0x83, 0xc5, 0x25, 0x46, 0x1b, 0x24, 0x63, 0xd2, 0x0f, 0xbb, 0xc1, 0x92, 0x26, 0xa3, 0x35, 0x58, 0xb2, 0xed, 0xb4, 0x06, 0x8b, 0x61, 0x96, 0x36, 0x78, 0xbd, 0x58, 0xc4, 0xc1, 0x28, 0xe5, 0x3c, 0x68, 0x6d, 0x70, 0x7e, 0x90, 0xad, 0xa1, 0xfd, 0xfa, 0x41, 0x93, 0xc6, 0x4d, 0x07, 0x6b, 0x5a, 0x8e, 0x8e, 0xc7, 0x87, 0x45, 0xbe, 0x05, 0xc1, 0xe2, 0xc1, 0x71, 0xf1, 0x64, 0x71, 0x10, 0x2c, 0x0e, 0xbb, 0x61, 0x05, 0x75, 0xe1, 0x17, 0x24, 0xc3, 0x0c, 0xa2, 0x05, 0xf3, 0x43, 0xd6, 0xee, 0xb0, 0x42, 0x7b, 0xf0, 0xde, 0xb4, 0x80, 0x41, 0xb0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xc4, 0x07, 0x67, 0xbe, 0xda, 0xe3, 0xf1, 0x06, 0x8b, 0x3c, 0x9d, 0xd6, 0x60, 0xe9, 0xf3, 0xd1, 0x1a, 0xac, 0x57, 0x6e, 0xda, 0x60, 0xb4, 0xd1, 0x0e, 0xbf, 0x20, 0x19, 0x66, 0x10, 0x2d, 0x98, 0x1f, 0xe2, 0x7f, 0xc8, 0x56, 0x1c, 0x1c, 0x52, 0xd5, 0x07, 0xc9, 0xe0, 0xde, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0x41, 0x9b, 0x53, 0x23, 0x07, 0x27, 0x75, 0xe3, 0x43, 0xb6, 0x62, 0xe1, 0x37, 0x78, 0x9f, 0xaf, 0xc4, 0xc1, 0x7b, 0xd3, 0x02, 0x8e, 0x43, 0xc7, 0xb7, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x17, 0xda, 0x4a, 0x2c, 0x0e, 0xbb, 0x61, 0xd7, 0x60, 0xe1, 0x37, 0x68, 0xed, 0x86, 0xe4, 0xe0, 0xbd, 0x69, 0x01, 0x1b, 0x2c, 0xf2, 0x74, 0x5a, 0x83, 0xa5, 0xcf, 0x47, 0x0b, 0xbf, 0x41, 0x6b, 0x37, 0x24, 0x07, 0x87, 0x54, 0xf5, 0x83, 0x77, 0x89, 0x44, 0x6c, 0xf0, 0x30, 0x63, 0x89, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc1, 0x08, 0x4f, 0x3b, 0x1e, 0x1f, 0x8f, 0x37, 0x18, 0xa8, 0x6a, 0x83, 0x6c, 0x43, 0x5c, 0x86, 0xdd, 0xe0, 0x89, 0x71, 0x10, 0x0b, 0x82, 0x0d, 0x06, 0xe7, 0xe3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x28, 0x19, 0x9a, 0x0e, 0xce, 0x4f, 0xb4, 0x07, 0x0d, 0x91, 0x09, 0x1c, 0x87, 0x86, 0xdd, 0xe0, 0xc5, 0x81, 0x10, 0x0b, 0x92, 0xc1, 0xbf, 0x41, 0xb4, 0x40, 0xb9, 0xdf, 0xd0, 0x02, 0xe8, 0x20, 0xcd, 0x3d, 0xe3, 0xa0, 0x90, 0x52, 0x19, 0x76, 0x61, 0x37, 0x58, 0x03, 0xfe, 0xbf, 0x70, 0x1b, 0x2c, 0xf6, 0xa3, 0x3a, 0xc4, 0xff, 0x70, 0xb4, 0x2f, 0x48, 0x06, 0xff, 0x06, 0xd1, 0x02, 0xe7, 0xfd, 0x41, 0x21, 0x94, 0x70, 0x50, 0x48, 0xa9, 0x0c, 0xbb, 0xc1, 0xeb, 0x0a, 0x21, 0x16, 0x04, 0x1b, 0x0c, 0xce, 0xc7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x37, 0x58, 0xb2, 0xed, 0xb4, 0x06, 0x8b, 0x61, 0x96, 0x36, 0x58, 0x17, 0x0d, 0xb6, 0xc1, 0xa2, 0x23, 0xa4, 0x83, 0x42, 0x4b, 0x61, 0x83, 0x45, 0x47, 0x48, 0x07, 0x2d, 0x7b, 0xb5, 0x1c, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0xd6, 0x80, 0xff, 0x2f, 0xdc, 0x06, 0x8b, 0xdc, 0xa9, 0x0e, 0xf1, 0x3f, 0x1c, 0xed, 0x0b, 0x92, 0xc1, 0xbf, 0x41, 0xb4, 0x60, 0xbe, 0xc1, 0x02, 0x02, 0xab, 0x41, 0xb0, 0x20, 0x19, 0xa8, 0x5d, 0x87, 0xe4, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x90, 0xcf, 0x3e, 0x08, 0x1e, 0xee, 0xe3, 0xd0, 0xf1, 0x78, 0xd8, 0x85, 0xdd, 0x60, 0x0d, 0xf8, 0xff, 0xc2, 0x6d, 0xb0, 0xca, 0x94, 0xea, 0x10, 0xff, 0xc3, 0xd1, 0xbe, 0x20, 0x19, 0xfc, 0x1b, 0x44, 0x0b, 0xe6, 0x1b, 0x2c, 0x20, 0xb0, 0x1a, 0x04, 0x1b, 0xac, 0x11, 0xed, 0x3f, 0x78, 0x57, 0xb9, 0xc4, 0xf1, 0x78, 0xd8, 0x85, 0xdd, 0x60, 0x0d, 0xf8, 0xff, 0xc2, 0x6d, 0xb0, 0x40, 0x97, 0xea, 0x10, 0xff, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0x60, 0x70, 0x3e, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xc1, 0xc2, 0x41, 0xa5, 0x35, 0x58, 0x27, 0x82, 0x74, 0x58, 0xfb, 0x3d, 0x58, 0x17, 0x0d, 0x76, 0x1c, 0x1a, 0x76, 0x83, 0xc7, 0x2f, 0x42, 0x2c, 0x48, 0x06, 0xff, 0x06, 0xd1, 0x02, 0xe7, 0xfd, 0x86, 0x18, 0x6e, 0xb0, 0x44, 0x99, 0xea, 0xa0, 0x51, 0xc6, 0xa4, 0x83, 0x42, 0x4a, 0x65, 0xd8, 0x85, 0xdd, 0x60, 0x0d, 0xf8, 0xff, 0xc2, 0x6d, 0xb0, 0x44, 0x99, 0xea, 0x10, 0xff, 0xc3, 0xd1, 0xbe, 0x20, 0x19, 0xfc, 0x1b, 0x44, 0x0b, 0x9c, 0xf7, 0x1b, 0x62, 0xb8, 0xc1, 0x12, 0x65, 0xaa, 0x0d, 0x82, 0x24, 0x7a, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x64, 0xf0, 0xea, 0x90, 0x5c, 0x3a, 0x68, 0x3b, 0x5e, 0xe5, 0xa0, 0x90, 0x52, 0x19, 0x76, 0x83, 0xb7, 0x40, 0x42, 0x2c, 0x48, 0x06, 0xff, 0x06, 0xd1, 0x02, 0xa1, 0x3f, 0xb4, 0x00, 0x3a, 0x28, 0xa4, 0x54, 0x86, 0x5d, 0xd8, 0x0d, 0xd6, 0x80, 0xff, 0x2f, 0xdc, 0x06, 0xcb, 0x79, 0xaa, 0x0e, 0xf1, 0x3f, 0x1c, 0xed, 0x6b, 0xb0, 0x96, 0x2c, 0x69, 0x41, 0x32, 0xf8, 0x37, 0x88, 0x16, 0x9c, 0x1f, 0x04, 0x1b, 0xb4, 0x8d, 0x45, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x1d, 0x04, 0x29, 0xfe, 0x71, 0xe8, 0xa0, 0xd0, 0x1a, 0x18, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x4d, 0xe9, 0x37, 0x1d, 0x0c, 0xca, 0xab, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6b, 0xa1, 0xf6, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x94, 0x7e, 0xd3, 0x20, 0x19, 0x08, 0xd7, 0x41, 0xf3, 0x4b, 0x02, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xde, 0x56, 0xbf, 0xb8, 0x21, 0x9a, 0x83, 0x64, 0xf0, 0x6f, 0x10, 0x2d, 0x38, 0x3f, 0x08, 0x36, 0x68, 0x7f, 0x19, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x3a, 0x28, 0x09, 0x1a, 0x8e, 0x43, 0x83, 0x68, 0xc1, 0xfc, 0x30, 0x2e, 0x87, 0xe4, 0xd2, 0xf1, 0xf8, 0x38, 0x74, 0x1c, 0x3a, 0x78, 0x44, 0xa8, 0xc3, 0xb0, 0x0b, 0xbb, 0xc1, 0x1a, 0xf0, 0xff, 0x85, 0xdb, 0x60, 0x09, 0x85, 0xd5, 0x21, 0xfe, 0x87, 0xa3, 0x7d, 0x0d, 0x16, 0x3c, 0x38, 0x2d, 0x48, 0x06, 0xff, 0x0e, 0x0a, 0xad, 0x81, 0x0d, 0x16, 0x3c, 0x38, 0xad, 0xc1, 0xba, 0xf4, 0xa6, 0x0d, 0x52, 0x89, 0x3b, 0x0e, 0x0d, 0xbf, 0xc6, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0x89, 0xfd, 0xe6, 0x60, 0x88, 0x77, 0x6e, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0x57, 0xb2, 0x0d, 0x96, 0xd9, 0xe9, 0xaf, 0xe1, 0xdf, 0x9c, 0x8d, 0x43, 0x1b, 0x9c, 0xd8, 0x6f, 0x0e, 0x86, 0x8a, 0x40, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0x83, 0x35, 0xe0, 0xff, 0x0b, 0xb7, 0xc1, 0x4a, 0xae, 0xaa, 0x43, 0xfc, 0x0f, 0x47, 0xfb, 0x1a, 0x2c, 0x78, 0x70, 0xda, 0xe0, 0x35, 0x18, 0x13, 0x1b, 0x2c, 0xd9, 0x76, 0x5a, 0x83, 0x85, 0x83, 0x4a, 0x1b, 0xbc, 0x36, 0x63, 0xe2, 0x60, 0xb4, 0xd1, 0x1e, 0x8c, 0x36, 0xda, 0x61, 0x17, 0x76, 0x83, 0x35, 0xe0, 0xff, 0x0b, 0xb7, 0xc1, 0x02, 0xb6, 0xaa, 0x43, 0xfc, 0x0f, 0x47, 0xfb, 0x82, 0x60, 0x83, 0xc1, 0xf9, 0x38, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x0c, 0xd7, 0x21, 0xb9, 0x74, 0xd0, 0x10, 0x99, 0xc0, 0x71, 0x68, 0xd8, 0x85, 0xdd, 0x60, 0x0d, 0xf8, 0xff, 0xc2, 0x6d, 0xb0, 0x90, 0xb1, 0xea, 0x10, 0xff, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0x60, 0x70, 0x3e, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0xad, 0xe0, 0x1e, 0xbc, 0xab, 0x5c, 0xe2, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xb0, 0x06, 0xfc, 0x7f, 0xe1, 0x36, 0x58, 0xb4, 0x57, 0x75, 0x88, 0xff, 0xe1, 0x68, 0x5f, 0x10, 0x6c, 0x30, 0x38, 0x1f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0xc3, 0x6e, 0xd0, 0x5a, 0xa1, 0xc8, 0xc2, 0x2f, 0x48, 0x86, 0x39, 0x08, 0x7a, 0xee, 0x83, 0xf7, 0xa6, 0x05, 0x2c, 0xfc, 0x82, 0x64, 0x98, 0x41, 0xb4, 0x41, 0x48, 0x74, 0x0f, 0xa2, 0x85, 0x1d, 0x04, 0x0b, 0x92, 0x41, 0xdd, 0xc1, 0x70, 0x94, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd8, 0x2b, 0x3c, 0x34, 0x9e, 0x3f, 0x0e, 0x1d, 0xcf, 0x0f, 0xde, 0x9b, 0x16, 0x30, 0x48, 0x06, 0xff, 0x06, 0xd1, 0x82, 0xf6, 0x0d, 0x8a, 0x5c, 0x85, 0x83, 0x52, 0x66, 0x67, 0x10, 0x2d, 0xec, 0x20, 0xd8, 0xe0, 0x4d, 0x3a, 0x13, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x7b, 0x85, 0x07, 0x43, 0xb1, 0xe8, 0x38, 0x74, 0x3c, 0x3f, 0xbe, 0x1d, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0xd6, 0x80, 0xff, 0x2f, 0xdc, 0x06, 0xcb, 0x57, 0xab, 0x0e, 0xf1, 0x3f, 0x1c, 0xed, 0x6b, 0xb0, 0xe0, 0xc1, 0x69, 0xe1, 0x17, 0x24, 0xc3, 0x1c, 0x14, 0x52, 0x2a, 0x07, 0xef, 0x4d, 0x0b, 0xd8, 0x60, 0x05, 0xb3, 0xd3, 0x1a, 0x2c, 0x07, 0x7a, 0x5a, 0x83, 0x45, 0x18, 0x55, 0x1b, 0x3c, 0x9a, 0xed, 0xe1, 0xd0, 0x02, 0x68, 0x3c, 0x48, 0x48, 0xef, 0x3e, 0x18, 0x6d, 0xb4, 0xc3, 0x2e, 0xec, 0x06, 0x6b, 0xc0, 0xff, 0x17, 0x6e, 0x83, 0x95, 0x2a, 0x55, 0x87, 0xf8, 0x1f, 0x8e, 0xf6, 0x35, 0x58, 0xf0, 0xe0, 0xb4, 0xc1, 0x43, 0x8c, 0x26, 0x36, 0x58, 0xb2, 0xed, 0x74, 0xf0, 0x1e, 0xa4, 0x89, 0x61, 0x17, 0x76, 0x83, 0x35, 0xe0, 0xff, 0x0b, 0xb7, 0xc1, 0x02, 0xde, 0xaa, 0x43, 0xfc, 0x0f, 0x47, 0xfb, 0x82, 0x60, 0x83, 0xc1, 0xf9, 0x38, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x06, 0x25, 0x43, 0xd3, 0xc1, 0xbb, 0x44, 0x22, 0x0e, 0xde, 0x55, 0x2e, 0x31, 0xec, 0xc2, 0x2e, 0xf4, 0xa0, 0xa9, 0x82, 0x93, 0xc3, 0xfa, 0xe6, 0xc6, 0xa1, 0x0d, 0x96, 0xbb, 0x2d, 0x6d, 0x1c, 0x9a, 0x60, 0x7f, 0xff, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xb0, 0x06, 0xfc, 0x7f, 0xe1, 0x36, 0x58, 0xb4, 0x5c, 0x75, 0x88, 0xff, 0xe1, 0x68, 0x5f, 0x10, 0x6c, 0x30, 0x38, 0x1f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0xdf, 0x60, 0x91, 0xa7, 0xd3, 0x1a, 0xac, 0xfe, 0x59, 0x1a, 0x24, 0x83, 0xd5, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0x41, 0xdb, 0x58, 0x24, 0x87, 0x8e, 0xf1, 0xc7, 0xe3, 0x85, 0x5f, 0x90, 0x0c, 0x73, 0x50, 0x68, 0x0d, 0x1c, 0xbc, 0x37, 0x2d, 0xe0, 0xe0, 0x21, 0x46, 0x13, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0x83, 0x35, 0xe0, 0xff, 0x0b, 0xb7, 0xc1, 0x02, 0x02, 0xab, 0x43, 0xfc, 0x0f, 0x47, 0xfb, 0x82, 0x60, 0x83, 0xc1, 0xf9, 0x38, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x06, 0xeb, 0x25, 0x95, 0x36, 0x78, 0x8f, 0xca, 0xc4, 0x06, 0xeb, 0xa2, 0xc1, 0x0e, 0x31, 0x3c, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0xac, 0x01, 0xff, 0x5f, 0xb8, 0x0d, 0x16, 0x91, 0x58, 0x1d, 0xe2, 0x7f, 0x38, 0xda, 0x17, 0x24, 0x83, 0x7f, 0x83, 0x68, 0x81, 0xfb, 0x7e, 0x43, 0x0c, 0x37, 0x58, 0xdf, 0xb7, 0xb4, 0xa1, 0xe1, 0xd7, 0xa1, 0x05, 0xd0, 0x41, 0x21, 0xa5, 0x32, 0xec, 0xc2, 0x6e, 0xb0, 0x06, 0xfc, 0x7f, 0xe1, 0x36, 0x58, 0x62, 0x66, 0x75, 0x88, 0xff, 0xe1, 0x68, 0x5f, 0x10, 0x6c, 0x30, 0x38, 0x1f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x8c, 0x90, 0xa8, 0x83, 0x77, 0x95, 0x4b, 0x1c, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0xd6, 0x80, 0xff, 0x2f, 0xdc, 0x06, 0xab, 0x8b, 0xac, 0x0e, 0xf1, 0x3f, 0x1c, 0xed, 0x6b, 0xb0, 0xa8, 0x75, 0x69, 0x43, 0x0b, 0xa0, 0x41, 0x32, 0xf8, 0x77, 0x50, 0x48, 0xa9, 0x0c, 0xbb, 0xb0, 0x1b, 0xac, 0x01, 0xff, 0x5f, 0xb8, 0x0d, 0x56, 0x5c, 0x59, 0x1d, 0xe2, 0x7f, 0x38, 0xda, 0x17, 0x04, 0x1b, 0x0c, 0xce, 0xc7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x37, 0x58, 0xe4, 0xe9, 0xb4, 0x06, 0xab, 0x7f, 0x96, 0x0e, 0xd6, 0x45, 0x83, 0x6d, 0xf0, 0x10, 0xa3, 0x89, 0x83, 0x27, 0x83, 0x4d, 0x1c, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0xd6, 0x80, 0xff, 0x2f, 0xdc, 0x06, 0xcb, 0xb6, 0xab, 0x0e, 0xf1, 0x3f, 0x1c, 0xed, 0x6b, 0xb0, 0x04, 0xf7, 0x68, 0x0d, 0xd6, 0x87, 0x60, 0x1d, 0x5a, 0x00, 0x1d, 0x3c, 0xf4, 0x6e, 0x62, 0xd8, 0x85, 0xdd, 0x60, 0x0d, 0xf8, 0xff, 0xc2, 0x6d, 0xb0, 0x78, 0xb3, 0xea, 0x10, 0xff, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0x60, 0x70, 0x3e, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x9e, 0xca, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x12, 0x35, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x3b, 0x95, 0x25, 0x07, 0xcf, 0x30, 0x97, 0x38, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0x6b, 0xc0, 0xff, 0x17, 0x6e, 0x83, 0xe5, 0xf3, 0x55, 0x87, 0xf8, 0x1f, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0x83, 0xf3, 0x71, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xf3, 0x54, 0x26, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x94, 0xa8, 0x21, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xda, 0xbf, 0x30, 0x39, 0x78, 0x86, 0xb9, 0xc4, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x58, 0x03, 0xfe, 0xbf, 0x70, 0x1b, 0x2c, 0xb5, 0xb3, 0x3a, 0xc4, 0xff, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x18, 0x9c, 0x8f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9e, 0xa7, 0x32, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x44, 0x0d, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0x0c, 0x97, 0xc9, 0xc1, 0x33, 0xcc, 0x25, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x43, 0xfb, 0xf5, 0x61, 0x37, 0x58, 0x03, 0xfe, 0xbf, 0x70, 0x1b, 0xac, 0xad, 0xb1, 0x3a, 0xc4, 0xff, 0x70, 0xb4, 0x0f, 0x82, 0x0d, 0x06, 0xe7, 0xe3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe7, 0xa9, 0x4c, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x28, 0x51, 0x43, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb4, 0xde, 0x63, 0x72, 0xf0, 0x0c, 0x73, 0x89, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x3c, 0x26, 0x25, 0x62, 0x71, 0x83, 0xf5, 0x92, 0x4a, 0x1b, 0xa2, 0x39, 0x08, 0x36, 0x58, 0x0b, 0xb5, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaf, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xd5, 0x1a, 0xd5, 0xe2, 0xc1, 0xeb, 0x17, 0x1f, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x76, 0xc3, 0xae, 0xc1, 0x06, 0x8b, 0x38, 0x91, 0x36, 0x58, 0xaf, 0xdc, 0xb4, 0xc1, 0x22, 0x4e, 0xa4, 0x83, 0x87, 0x2c, 0x4b, 0x1c, 0x8f, 0x17, 0x44, 0x0b, 0x7e, 0x1f, 0x8c, 0xfc, 0x87, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x35, 0x2d, 0x47, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xad, 0xff, 0x8c, 0x6c, 0x48, 0xd5, 0x6c, 0xb0, 0x22, 0xee, 0x68, 0x09, 0x92, 0xfb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xe0, 0xdc, 0x9f, 0x20, 0xbb, 0x7f, 0x3c, 0x3e, 0xbe, 0x0d, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0x90, 0x20, 0xd2, 0xb1, 0x71, 0x68, 0x83, 0x25, 0xb8, 0x47, 0x4b, 0xb0, 0xbd, 0x7f, 0x1c, 0x3a, 0x1e, 0x2f, 0x08, 0x16, 0x0f, 0x5e, 0x70, 0xc3, 0xb0, 0xb8, 0xc1, 0xba, 0xf4, 0xa6, 0x15, 0x7e, 0x41, 0x32, 0x98, 0x0d, 0xa2, 0x0d, 0x46, 0x18, 0xc0, 0x21, 0xb9, 0x74, 0xe8, 0x62, 0x32, 0xfc, 0x82, 0x64, 0x30, 0x1b, 0x44, 0x1b, 0x0c, 0x3b, 0xdc, 0x43, 0x72, 0xe9, 0xd0, 0xc5, 0x64, 0xdc, 0x20, 0x69, 0xc1, 0x68, 0xc3, 0x77, 0x2d, 0x1b, 0x87, 0x0e, 0x2b, 0xb4, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x06, 0x4b, 0x32, 0xa0, 0x0e, 0x8e, 0x8b, 0x27, 0x8b, 0x83, 0x60, 0x0d, 0xd6, 0xa5, 0x37, 0x2d, 0xfc, 0x82, 0x64, 0x30, 0x1b, 0x44, 0x1b, 0x04, 0xcc, 0xf7, 0x21, 0xb9, 0x74, 0xe8, 0x62, 0xb2, 0xc1, 0xf2, 0x9c, 0xa4, 0x0d, 0x31, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0x9e, 0x7a, 0x30, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x2d, 0xd4, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0xd2, 0x6f, 0x3a, 0x68, 0xf6, 0x8f, 0x69, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xc6, 0xdb, 0xea, 0x17, 0x37, 0x44, 0x73, 0xf8, 0x05, 0xc9, 0x60, 0x76, 0xd0, 0x48, 0x08, 0xc0, 0xa1, 0x8b, 0xc9, 0xf1, 0xf8, 0x38, 0x74, 0x1c, 0x3a, 0x78, 0x44, 0xa8, 0xc3, 0xb0, 0x0b, 0xb7, 0xc1, 0x52, 0xe4, 0xac, 0x43, 0xd6, 0x6e, 0xe3, 0xd0, 0xb0, 0x0b, 0xb7, 0xc1, 0x1a, 0xf2, 0xac, 0x43, 0xd6, 0x6e, 0x0d, 0x96, 0x11, 0x2f, 0x1d, 0x87, 0x86, 0x5d, 0xb8, 0x0d, 0x16, 0x0d, 0x67, 0x1d, 0xb2, 0x76, 0x6b, 0xb0, 0xa0, 0x71, 0xe9, 0x38, 0x34, 0xc8, 0xd6, 0xd0, 0x7e, 0x7d, 0xb8, 0x0d, 0x16, 0x57, 0x67, 0x1d, 0xb2, 0x76, 0x1b, 0xac, 0x7f, 0x5a, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0xac, 0x6f, 0x30, 0x5a, 0x1c, 0x76, 0x83, 0xa7, 0x69, 0x4a, 0xac, 0xc1, 0x52, 0x2d, 0xa4, 0x0d, 0xe3, 0x32, 0xec, 0xc2, 0x6d, 0x50, 0x30, 0x3c, 0x1e, 0xc6, 0x65, 0x83, 0xd4, 0x7f, 0x8c, 0x43, 0x0c, 0x87, 0xdd, 0x60, 0x71, 0x89, 0xd1, 0x82, 0x60, 0x83, 0x87, 0xab, 0x4a, 0x6c, 0xb0, 0xdc, 0x6d, 0x69, 0x0d, 0x96, 0x82, 0x2c, 0x6d, 0x1c, 0xda, 0x38, 0x74, 0xf0, 0xd8, 0x56, 0x89, 0xe3, 0xd0, 0xb0, 0x1b, 0x2c, 0x96, 0x31, 0x5a, 0x10, 0x2c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x58, 0x68, 0x62, 0x74, 0x3c, 0x3e, 0x78, 0xb4, 0x9f, 0xc3, 0xb0, 0x1b, 0x2c, 0xfe, 0x31, 0x5a, 0x10, 0x6c, 0xf0, 0x70, 0x55, 0x89, 0x0d, 0x96, 0xbb, 0x2d, 0xad, 0xc1, 0x62, 0x98, 0xa5, 0x83, 0x47, 0xfb, 0x39, 0x1c, 0x87, 0x86, 0xdd, 0x60, 0x49, 0x93, 0xd1, 0x06, 0xad, 0x0d, 0xce, 0x1f, 0x3c, 0x7f, 0x56, 0xe2, 0x78, 0x3c, 0xec, 0x06, 0xab, 0xe0, 0x8e, 0x16, 0x24, 0x03, 0xf3, 0x77, 0xf0, 0xd6, 0x0b, 0x89, 0x61, 0x37, 0x58, 0x38, 0x62, 0xb5, 0x20, 0x19, 0x98, 0xbf, 0x41, 0xb4, 0xc0, 0x7c, 0x6f, 0x88, 0xe1, 0x06, 0xeb, 0xfb, 0x96, 0x0e, 0x5e, 0xef, 0xec, 0x70, 0xb0, 0xa0, 0x6e, 0x67, 0xd8, 0x85, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0x48, 0x30, 0x40, 0x58, 0xd8, 0x85, 0xdd, 0x60, 0xd1, 0x80, 0xd5, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0xc2, 0x76, 0xaa, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0x95, 0xa5, 0x54, 0x1b, 0x62, 0x78, 0xb0, 0x28, 0x97, 0xea, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x0b, 0x82, 0x0d, 0x46, 0x48, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x85, 0x15, 0x66, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbb, 0xc1, 0xa2, 0x01, 0xab, 0x0d, 0xe3, 0x32, 0xec, 0x06, 0x2b, 0x4b, 0xa9, 0x36, 0x78, 0x04, 0x89, 0xc4, 0xb0, 0x1b, 0x2c, 0xca, 0xa5, 0xda, 0xe0, 0x25, 0x27, 0x12, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x0f, 0x16, 0xb6, 0x53, 0x1d, 0xbc, 0x23, 0x46, 0xe2, 0x38, 0x74, 0x1c, 0xda, 0x60, 0x29, 0x4a, 0xd2, 0x1a, 0x2c, 0xe9, 0x5c, 0x3a, 0x38, 0x3f, 0xd1, 0x6e, 0xb0, 0xe0, 0xc1, 0x69, 0x41, 0xb0, 0xf0, 0x0b, 0x82, 0x0d, 0x4a, 0x86, 0xa6, 0x41, 0x32, 0xe4, 0x20, 0x95, 0xaf, 0xe5, 0xe0, 0x91, 0x8e, 0x09, 0x07, 0xe9, 0x5e, 0x1e, 0xe3, 0xc1, 0x4a, 0x3a, 0xfd, 0xe3, 0xf1, 0x8a, 0x0b, 0x82, 0xc5, 0xd9, 0x60, 0x31, 0x1b, 0xd4, 0xc1, 0x62, 0x36, 0xa8, 0xc5, 0x61, 0x37, 0xe4, 0xb1, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0x0d, 0x17, 0x37, 0x34, 0x12, 0x1c, 0x04, 0x8b, 0xc3, 0x6e, 0xd0, 0x58, 0x70, 0xcb, 0x82, 0x60, 0x41, 0xb0, 0x41, 0xfa, 0x38, 0xd1, 0x41, 0xc9, 0xa5, 0x33, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0xc7, 0x85, 0xf3, 0x83, 0x41, 0xb0, 0x33, 0xec, 0x06, 0x2d, 0x36, 0xb7, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0xa4, 0x8f, 0x13, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x34, 0x9e, 0x3f, 0x34, 0xfc, 0x3a, 0x0e, 0x0d, 0xbb, 0xc1, 0xa8, 0x97, 0xdc, 0x10, 0xc3, 0x41, 0xb0, 0xc1, 0x71, 0xe1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x70, 0x10, 0xf2, 0xd9, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x71, 0x90, 0xa6, 0xc3, 0x46, 0xed, 0x20, 0x58, 0x10, 0x6c, 0x90, 0x1c, 0xef, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x78, 0xfe, 0x20, 0x78, 0xb8, 0x8f, 0x43, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x37, 0xc4, 0x70, 0x10, 0x2c, 0x08, 0x36, 0x58, 0x47, 0xaa, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x1d, 0x8c, 0x81, 0x85, 0xe3, 0xd0, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0xb4, 0x12, 0x1f, 0x04, 0x0b, 0x92, 0xc1, 0xec, 0xe0, 0x24, 0x74, 0x7c, 0x50, 0x7a, 0x3b, 0x2c, 0x08, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x06, 0xed, 0x1c, 0xc9, 0x0c, 0xa2, 0x05, 0xe3, 0x43, 0xaa, 0xe6, 0xb0, 0x42, 0x3b, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x64, 0x70, 0xef, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xd2, 0x12, 0x16, 0x8e, 0x43, 0x83, 0x60, 0x41, 0x32, 0x64, 0x10, 0x6d, 0xd0, 0xea, 0x00, 0xca, 0xc1, 0x1b, 0x47, 0x28, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x88, 0xe1, 0x20, 0xd8, 0xe0, 0xe5, 0x25, 0x14, 0x07, 0xc5, 0xe8, 0xcf, 0xf1, 0xed, 0x78, 0xbc, 0x20, 0x58, 0x9c, 0x83, 0xc5, 0x6c, 0x50, 0x8b, 0xc3, 0x6e, 0x68, 0xb8, 0xb8, 0x61, 0x5c, 0x06, 0xc1, 0x0a, 0x82, 0x05, 0xc9, 0x60, 0x76, 0x30, 0xde, 0x75, 0x0e, 0x69, 0xb8, 0x41, 0xb0, 0x20, 0x19, 0xf4, 0x1d, 0x8c, 0x77, 0x9d, 0x43, 0x1a, 0x6e, 0xd8, 0x85, 0xdb, 0x60, 0xc9, 0xf1, 0xd4, 0xc1, 0x20, 0x5a, 0x59, 0x10, 0x2d, 0x88, 0x06, 0xc1, 0x06, 0xab, 0x93, 0x52, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x4b, 0x30, 0xea, 0x87, 0xf8, 0x1f, 0x87, 0x0e, 0xf9, 0xda, 0x61, 0x17, 0x6e, 0x83, 0xe5, 0xa8, 0x53, 0x07, 0x83, 0x68, 0x65, 0x61, 0x17, 0x76, 0xa1, 0x07, 0x83, 0x3f, 0xe6, 0xb0, 0xbe, 0xb9, 0xb0, 0x1b, 0xb4, 0xcb, 0x98, 0xb2, 0x21, 0x86, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x42, 0x00, 0x7c, 0x83, 0x26, 0xa4, 0x45, 0x86, 0xdd, 0x60, 0xb9, 0x24, 0xd1, 0x41, 0x02, 0x1e, 0xc8, 0xf1, 0xfc, 0x90, 0xaf, 0x1d, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xdc, 0x06, 0xab, 0x1b, 0xa7, 0x0e, 0x06, 0xd1, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x10, 0x00, 0x1f, 0x76, 0x83, 0xe5, 0x92, 0x44, 0x6b, 0x30, 0xac, 0x56, 0x0e, 0x8d, 0x8b, 0x36, 0x08, 0x72, 0xeb, 0x43, 0xb3, 0xa4, 0xe3, 0xf9, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0x28, 0x2b, 0x5b, 0x1c, 0x76, 0x43, 0x1e, 0x6b, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x55, 0x1d, 0x5c, 0x87, 0x34, 0xdc, 0xb0, 0x0b, 0xb7, 0xc1, 0x92, 0xe3, 0xa9, 0x83, 0x82, 0xa2, 0x68, 0xc3, 0x29, 0x36, 0xec, 0xc2, 0x6d, 0xb0, 0xba, 0x71, 0xea, 0xa0, 0xa0, 0x28, 0x5a, 0x0d, 0x96, 0xa3, 0x4e, 0x0d, 0x82, 0x05, 0xc9, 0xa0, 0xee, 0xb0, 0x42, 0x7b, 0x30, 0x8c, 0x1d, 0x0e, 0x31, 0x1c, 0x76, 0xa1, 0x07, 0x67, 0xd3, 0xf0, 0x0d, 0xd6, 0xa9, 0xf5, 0x0c, 0x82, 0x0d, 0xf9, 0xda, 0x83, 0x11, 0x85, 0x7b, 0x3c, 0x5e, 0x10, 0x2c, 0x6e, 0xb0, 0xde, 0x70, 0xea, 0x60, 0x78, 0xbb, 0x2c, 0x0e, 0xbb, 0x70, 0x1b, 0x2c, 0x39, 0x9e, 0x3a, 0x44, 0x73, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x0b, 0x82, 0x0d, 0x56, 0x75, 0x70, 0x1d, 0x1c, 0xb4, 0x7a, 0x8f, 0x43, 0xc7, 0xe3, 0x61, 0x37, 0x58, 0x82, 0x3a, 0xb5, 0x61, 0x5c, 0x06, 0xd9, 0x1a, 0xda, 0xaf, 0x1f, 0xac, 0x68, 0x9c, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0xc6, 0x93, 0xe8, 0x20, 0x19, 0x08, 0xd7, 0x20, 0x5a, 0xd8, 0x83, 0x46, 0xa6, 0x54, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x66, 0xe5, 0x53, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0xc1, 0xa3, 0x10, 0x28, 0x16, 0x87, 0x5d, 0xd8, 0x85, 0x5d, 0xb8, 0x0d, 0x96, 0xa3, 0x4e, 0x1d, 0xb4, 0x09, 0x10, 0xb0, 0xb0, 0x0b, 0xb7, 0xc1, 0x72, 0xd4, 0xa9, 0x83, 0xe1, 0x45, 0x71, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0x85, 0x5d, 0xb8, 0x85, 0xdb, 0x10, 0xc3, 0x83, 0xe5, 0x35, 0x41, 0x07, 0x6f, 0xad, 0x7d, 0x38, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0xc2, 0x6e, 0xf0, 0xf4, 0x2f, 0x8a, 0x35, 0x68, 0x42, 0x5a, 0xe4, 0x60, 0x60, 0x76, 0xad, 0xc1, 0x72, 0xd4, 0xa9, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x3c, 0x89, 0x0e, 0x92, 0x81, 0x70, 0x1d, 0xb4, 0xa6, 0x11, 0x70, 0xb0, 0x6e, 0x8c, 0xe9, 0x10, 0xc3, 0x35, 0x58, 0xdd, 0x38, 0x75, 0x30, 0x7a, 0xba, 0x0e, 0x06, 0x66, 0xd7, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x10, 0xc3, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x8c, 0xc6, 0xc7, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x6b, 0xb0, 0xdc, 0xd2, 0xea, 0x90, 0xaf, 0xdd, 0x60, 0x11, 0xaa, 0xd5, 0x20, 0xd8, 0xa0, 0x45, 0x90, 0x93, 0x41, 0x32, 0x10, 0xba, 0x83, 0x31, 0x18, 0x79, 0x3c, 0x5e, 0x10, 0x2c, 0x1e, 0x2c, 0x65, 0x83, 0x5a, 0x1c, 0x04, 0x8b, 0xc3, 0x6e, 0xb0, 0x54, 0x30, 0x68, 0x43, 0x0c, 0x87, 0xdd, 0x20, 0x5d, 0xd1, 0x7a, 0x41, 0xb0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xac, 0x0f, 0x3d, 0x84, 0x8e, 0xc7, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x37, 0xc4, 0x70, 0x10, 0x6c, 0xf0, 0xc4, 0xb8, 0x87, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x58, 0x95, 0x87, 0x70, 0x30, 0x38, 0x7d, 0x86, 0x5d, 0xd8, 0x0d, 0x96, 0x0d, 0x06, 0x2d, 0xec, 0x06, 0xc1, 0xf6, 0x7c, 0xf0, 0xa4, 0x54, 0x88, 0xc3, 0xd1, 0xbe, 0xb0, 0x1b, 0x04, 0x49, 0xf3, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0xd2, 0xc7, 0x89, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1a, 0x7e, 0x1d, 0xe2, 0x7f, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x58, 0x36, 0x18, 0xb4, 0x70, 0x1b, 0x8e, 0xf6, 0x43, 0x0f, 0xa1, 0xc3, 0xd1, 0xbe, 0x06, 0x4d, 0x48, 0x8b, 0x1c, 0x3a, 0x86, 0x0d, 0xbb, 0xb0, 0x1b, 0x2c, 0x1b, 0x0c, 0x5a, 0xd8, 0x85, 0xdb, 0xd0, 0x4a, 0xfc, 0xd0, 0x43, 0x68, 0x83, 0x65, 0x98, 0xfe, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x38, 0x61, 0xa2, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x72, 0xd0, 0x22, 0xe6, 0xcb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x7d, 0x50, 0xe4, 0x2a, 0x1c, 0x92, 0x4b, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x37, 0xc4, 0x70, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe2, 0x83, 0x52, 0x85, 0xef, 0xb0, 0x42, 0x7b, 0x3c, 0x3e, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x2c, 0x1b, 0x0c, 0x5a, 0xb8, 0x0d, 0xfd, 0xc9, 0x0f, 0x3d, 0x84, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x83, 0x13, 0x26, 0xfa, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x3c, 0xdd, 0xca, 0x61, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x37, 0x68, 0x42, 0x5a, 0xe4, 0xd0, 0x71, 0xe4, 0x78, 0x7c, 0x1c, 0x1a, 0x76, 0x61, 0x37, 0x58, 0x36, 0x18, 0xb4, 0x70, 0x1b, 0x94, 0x71, 0x3b, 0x87, 0x1e, 0x42, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0xc1, 0x09, 0x13, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x83, 0x21, 0x29, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0x5d, 0x33, 0xd7, 0xa0, 0x09, 0x69, 0x91, 0xc3, 0xf2, 0xc9, 0x21, 0x86, 0xc7, 0xe3, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0xc1, 0xb2, 0xc1, 0xa0, 0x85, 0x5d, 0xb8, 0x0d, 0x0a, 0x3b, 0x9c, 0x43, 0x0f, 0xa1, 0x83, 0x67, 0x0c, 0x52, 0x1c, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0x27, 0x4c, 0xf4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf5, 0xa1, 0x71, 0xd1, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0xeb, 0x23, 0x1d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xd6, 0x07, 0xa5, 0xcc, 0xce, 0x21, 0xb9, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x1b, 0x34, 0x21, 0x2d, 0x72, 0x30, 0x72, 0xf1, 0x8f, 0xc7, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0x68, 0xd8, 0x85, 0xdd, 0x60, 0xd9, 0x60, 0xd0, 0xc2, 0x2e, 0xdc, 0x06, 0xa3, 0xf9, 0xfc, 0xd0, 0x43, 0x68, 0x83, 0xc5, 0xd0, 0xfe, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x38, 0x61, 0xa2, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x78, 0x19, 0x28, 0xc5, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x58, 0x1f, 0xa4, 0xb9, 0x67, 0x1c, 0x92, 0x4b, 0xc3, 0x6e, 0x68, 0x7a, 0xbe, 0x20, 0x19, 0x32, 0x88, 0x16, 0xac, 0x0f, 0x12, 0xbd, 0x15, 0x0e, 0xc9, 0xa5, 0x43, 0x0c, 0x8f, 0xc7, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0x83, 0x65, 0x83, 0x41, 0x0b, 0xbb, 0x70, 0x1b, 0x0c, 0x79, 0xf4, 0x43, 0x0f, 0xa1, 0x83, 0x67, 0x0c, 0x52, 0x1c, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0x8f, 0x06, 0xa5, 0x18, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x21, 0x86, 0x83, 0x64, 0xc8, 0x41, 0xa3, 0x63, 0x2f, 0xc3, 0x2e, 0xec, 0x06, 0xcb, 0x06, 0x83, 0x16, 0x76, 0xe1, 0x36, 0x28, 0x00, 0xa0, 0x0e, 0x3d, 0x84, 0x0e, 0x9e, 0x31, 0x48, 0x71, 0x38, 0xda, 0x17, 0x04, 0x1b, 0x3c, 0x1a, 0x94, 0x62, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x86, 0x18, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x41, 0xbc, 0x20, 0xd8, 0xe0, 0xb8, 0x70, 0x7e, 0x90, 0xb2, 0x3e, 0x74, 0x68, 0x74, 0x74, 0x3c, 0x1f, 0x76, 0x61, 0x37, 0x58, 0x36, 0x18, 0xb4, 0xb0, 0x0b, 0xb7, 0xc1, 0xb9, 0xa5, 0xf8, 0xd0, 0x43, 0xe8, 0xe0, 0x19, 0x83, 0x14, 0x87, 0xa3, 0x7d, 0x61, 0x17, 0x76, 0x83, 0x26, 0xef, 0x4a, 0x0e, 0xeb, 0x9b, 0x0b, 0x82, 0x0d, 0xde, 0x63, 0x48, 0x31, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x43, 0x0c, 0x87, 0x5d, 0xd8, 0x0d, 0x46, 0xc7, 0xfa, 0xc2, 0x6e, 0x90, 0xda, 0x6a, 0xbd, 0xb0, 0x0b, 0xb7, 0xc1, 0x72, 0xd4, 0xa9, 0x83, 0x82, 0xa2, 0x68, 0xe1, 0x36, 0xc4, 0xf0, 0xe0, 0x6c, 0x1a, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x5f, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xef, 0x7f, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xc3, 0xb8, 0x0c, 0xbf, 0xf1, 0x7c, 0x83, 0x73, 0x4b, 0xf1, 0x86, 0xa6, 0x43, 0x07, 0x43, 0x11, 0xe9, 0x38, 0x34, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x43, 0x0c, 0x37, 0x68, 0x42, 0x5a, 0xe4, 0x20, 0x04, 0xc0, 0x07, 0xc1, 0x06, 0xed, 0x95, 0x89, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x39, 0xde, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x91, 0xab, 0x70, 0x48, 0x1d, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe2, 0x83, 0xb1, 0xec, 0x73, 0x58, 0xa1, 0x3d, 0x1e, 0x1f, 0x87, 0x0e, 0x31, 0x1c, 0x76, 0x61, 0x37, 0x58, 0x36, 0x18, 0xb4, 0xb0, 0x0b, 0xb7, 0xc1, 0x91, 0xa7, 0xf8, 0xd0, 0x43, 0x68, 0x61, 0x37, 0x58, 0x86, 0xe9, 0xbf, 0xb0, 0x1b, 0x34, 0x79, 0x57, 0xb2, 0xb0, 0x0b, 0x3d, 0x58, 0x24, 0xfe, 0x73, 0x58, 0xdf, 0x3c, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0xef, 0x31, 0xa4, 0x18, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x21, 0x86, 0x83, 0x60, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x58, 0x1f, 0x14, 0x56, 0x6a, 0xc7, 0xf3, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x38, 0xf9, 0x40, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x72, 0x97, 0xe4, 0x20, 0x2d, 0x61, 0xe1, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xb0, 0x6c, 0x30, 0x68, 0x61, 0x17, 0x6e, 0x83, 0x63, 0x60, 0xfe, 0xa1, 0x87, 0xd0, 0xc2, 0x6e, 0xb0, 0x0c, 0xd3, 0x7f, 0x83, 0x47, 0x17, 0x53, 0x1c, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x37, 0x78, 0x8f, 0x21, 0xc5, 0xb0, 0x0b, 0xbb, 0xc1, 0xb2, 0xc1, 0xa0, 0x85, 0xdd, 0xe0, 0x91, 0xea, 0x14, 0x1b, 0xb4, 0x61, 0x57, 0x72, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x82, 0x60, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x58, 0x1f, 0x14, 0xe7, 0x5c, 0xc7, 0xe3, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2e, 0xdc, 0x06, 0x0b, 0x0d, 0x7f, 0x0e, 0xca, 0x68, 0x98, 0x85, 0xdd, 0xe0, 0xd9, 0xc8, 0x14, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0x38, 0x08, 0x36, 0x18, 0x4b, 0xb9, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xda, 0x01, 0x3c, 0x39, 0xe4, 0x6b, 0x8f, 0x43, 0xc7, 0xe3, 0x41, 0x32, 0xe4, 0xa0, 0x41, 0xe7, 0x97, 0x83, 0x87, 0xea, 0x53, 0x1c, 0xb4, 0x45, 0xc8, 0x74, 0x7c, 0x3b, 0x1e, 0x2f, 0x08, 0x36, 0x78, 0xf5, 0x1b, 0xc5, 0xe2, 0x20, 0xdb, 0x10, 0x97, 0x41, 0xb0, 0x41, 0x89, 0x1a, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x29, 0x83, 0xf7, 0x43, 0xa2, 0xf5, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0xac, 0x4d, 0xa2, 0x5a, 0x1c, 0x76, 0xe1, 0x36, 0x58, 0x8e, 0x3a, 0x75, 0x30, 0x7e, 0xba, 0x36, 0xa4, 0x0e, 0x86, 0x5d, 0xb8, 0x0d, 0x96, 0x1c, 0x4f, 0x1d, 0x8c, 0x9f, 0xae, 0x85, 0xdd, 0xa0, 0xad, 0xf1, 0xa4, 0x0d, 0xd6, 0x26, 0x51, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0x0b, 0x61, 0xf6, 0x0f, 0x92, 0xcb, 0x07, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0xb0, 0x36, 0x89, 0xea, 0xe0, 0x29, 0xd3, 0x14, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x87, 0xdb, 0x60, 0x75, 0xe3, 0xd4, 0xc1, 0xf8, 0xe9, 0x1a, 0x04, 0x1b, 0xbc, 0x4b, 0x24, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1a, 0xea, 0x1c, 0x1a, 0x09, 0x1e, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x78, 0xb7, 0x32, 0xc1, 0xf1, 0xf8, 0x38, 0x74, 0x3c, 0x3e, 0x1e, 0xaf, 0x20, 0x58, 0x9c, 0x83, 0xa5, 0x18, 0x54, 0x8b, 0xc3, 0x2e, 0xdc, 0xe2, 0xc1, 0x58, 0x15, 0x38, 0x44, 0x73, 0x41, 0xb4, 0x90, 0x83, 0xf2, 0x3f, 0xef, 0x30, 0x2e, 0xc3, 0x2e, 0xdc, 0xe2, 0xc1, 0xc2, 0x3d, 0xf2, 0x43, 0x34, 0x17, 0x44, 0x0b, 0x3b, 0xcc, 0xa1, 0x93, 0xda, 0x61, 0x5c, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x95, 0x8d, 0xe4, 0x87, 0x68, 0x2e, 0x88, 0x16, 0xc4, 0xc3, 0x1c, 0x9a, 0x70, 0x1d, 0xc6, 0x65, 0xd8, 0x85, 0x5b, 0x3c, 0x58, 0x02, 0x4a, 0x7e, 0x88, 0xe6, 0x82, 0x68, 0xc1, 0x7c, 0x98, 0x43, 0x33, 0x9e, 0xc3, 0xb8, 0x0c, 0xbb, 0x70, 0x8b, 0x07, 0x6b, 0x64, 0xc9, 0x0f, 0xd1, 0x5c, 0x10, 0x2d, 0xa8, 0x1f, 0x66, 0x82, 0xf1, 0x3d, 0x8c, 0xcb, 0xb0, 0x0b, 0xb7, 0x78, 0xb0, 0x88, 0x98, 0xfc, 0x10, 0xcd, 0x05, 0xd1, 0x82, 0xfb, 0xc3, 0x4c, 0x50, 0x7e, 0x0f, 0xe3, 0x32, 0xec, 0xc2, 0x2d, 0x1e, 0xac, 0xb6, 0x26, 0x3f, 0x44, 0x73, 0x41, 0xb4, 0xe0, 0xff, 0x30, 0x13, 0xd4, 0xdf, 0xc3, 0xb8, 0x0c, 0xb2, 0x0d, 0xcd, 0xd7, 0x0f, 0xe3, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0xb0, 0x2a, 0x1f, 0x6b, 0x71, 0x10, 0x6c, 0x10, 0xb8, 0xfe, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xfc, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xb4, 0x00, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x74, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x64, 0x0d, 0x84, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x12, 0x72, 0x10, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x97, 0xe0, 0x7c, 0x9f, 0xe0, 0x7e, 0x3f, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x60, 0x55, 0x3e, 0xd6, 0xe2, 0x20, 0xd8, 0xe0, 0xf5, 0x60, 0x0d, 0x83, 0x60, 0x41, 0x32, 0xa0, 0x50, 0xef, 0x3b, 0x08, 0x78, 0xff, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0xec, 0x06, 0xc1, 0xf6, 0xbc, 0x21, 0x86, 0x83, 0x60, 0x83, 0x07, 0xe0, 0x54, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x09, 0x22, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x85, 0x87, 0x32, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0x41, 0x2b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x9c, 0xb8, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0xac, 0x69, 0x70, 0x68, 0x01, 0x74, 0x1c, 0x3a, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x07, 0x0d, 0x20, 0x73, 0x1f, 0xdf, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0xc3, 0x6e, 0x58, 0x0b, 0xdd, 0x10, 0xc3, 0x41, 0xb0, 0xc1, 0x03, 0x70, 0x2a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x04, 0x11, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc2, 0x43, 0x99, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd2, 0xa0, 0x15, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x50, 0x4e, 0x5c, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0xd6, 0x34, 0x38, 0xc4, 0xff, 0x38, 0x74, 0x48, 0x1d, 0x1c, 0x87, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x0f, 0xda, 0xe8, 0xe6, 0x3e, 0xbe, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x87, 0xdd, 0xa0, 0xf1, 0xf1, 0x98, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x3c, 0x00, 0xa7, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x4b, 0x10, 0x81, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x3c, 0x94, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x0d, 0x5a, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe5, 0xc4, 0xd5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x64, 0x4d, 0x83, 0x43, 0xd3, 0xa1, 0xe3, 0xd0, 0x21, 0x75, 0x70, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x3c, 0x68, 0x46, 0x9e, 0xfb, 0xf8, 0x76, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x76, 0x83, 0x45, 0x9e, 0xfe, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x78, 0x00, 0x4e, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x96, 0x20, 0x02, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x78, 0x28, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x1a, 0xb4, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xca, 0x89, 0xab, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xc9, 0x9a, 0x06, 0x07, 0xc9, 0x1a, 0x08, 0xc7, 0xa1, 0x43, 0xea, 0xe0, 0x38, 0x74, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x78, 0xd0, 0xd2, 0x41, 0xf7, 0xf1, 0xed, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe1, 0x41, 0xd2, 0x00, 0xc2, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x1e, 0x80, 0x53, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x25, 0x88, 0x40, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x16, 0x1e, 0xca, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x06, 0xad, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x72, 0xe2, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xb2, 0xa6, 0xc1, 0x41, 0x42, 0x0e, 0xc2, 0x71, 0xe8, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x1e, 0x34, 0xc6, 0xd1, 0x7d, 0x7c, 0x3b, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0x90, 0xb8, 0x37, 0xb3, 0x21, 0x86, 0x83, 0x60, 0x83, 0x07, 0xe0, 0x54, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x09, 0x22, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x85, 0x87, 0x32, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0x41, 0x2b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x9c, 0xb8, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0xac, 0x69, 0x70, 0xf0, 0xd8, 0x99, 0x8a, 0xe3, 0xd0, 0x21, 0x75, 0x70, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x3c, 0x68, 0x2f, 0xa6, 0xfb, 0xf8, 0x76, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x87, 0xdd, 0xa0, 0x7d, 0x6b, 0xa6, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x3c, 0x00, 0xa7, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x4b, 0x10, 0x81, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x3c, 0x94, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x0d, 0x5a, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe5, 0xc4, 0xd5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x64, 0x4d, 0x83, 0x83, 0x47, 0xd0, 0x54, 0x1c, 0x87, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0x41, 0x73, 0x46, 0xdd, 0xc7, 0xb7, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x33, 0x07, 0x0b, 0x31, 0xa8, 0x16, 0x07, 0xc1, 0xc2, 0x2f, 0x08, 0x16, 0x24, 0x03, 0x43, 0x75, 0x10, 0xf0, 0xfe, 0x07, 0x2b, 0xda, 0x88, 0x8e, 0x6f, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x8a, 0x9e, 0x84, 0x05, 0xd1, 0x42, 0x06, 0xc1, 0x06, 0xc3, 0x77, 0xf8, 0xa0, 0xac, 0x54, 0x38, 0x34, 0xfc, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x02, 0xf3, 0x3e, 0x08, 0x16, 0x04, 0x1b, 0x0c, 0x39, 0xeb, 0x41, 0x32, 0x30, 0x54, 0x83, 0x68, 0x61, 0x0f, 0x12, 0xbd, 0x15, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8a, 0xd0, 0x84, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0x28, 0xf6, 0x20, 0x36, 0xc4, 0x70, 0x43, 0x0c, 0x0f, 0xde, 0x54, 0x43, 0x31, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x4d, 0xe9, 0x37, 0x0d, 0x92, 0x81, 0xe2, 0x37, 0x88, 0x16, 0xf6, 0xa0, 0xf1, 0x2d, 0x91, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xe0, 0xe8, 0xc0, 0x7d, 0x1c, 0x1a, 0x76, 0x83, 0xd6, 0xf9, 0x00, 0x36, 0x58, 0x82, 0x41, 0x75, 0x10, 0x02, 0xe0, 0x0b, 0x82, 0x0d, 0x92, 0x38, 0x78, 0x0e, 0xc6, 0xe2, 0xfa, 0xc2, 0x6e, 0x30, 0x36, 0x39, 0x37, 0x08, 0xb2, 0xf8, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x6c, 0x30, 0xb8, 0xa7, 0x07, 0xc9, 0x40, 0xf1, 0x3b, 0x58, 0x9f, 0xfb, 0x73, 0xd0, 0x10, 0x99, 0xc0, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0xe2, 0x4a, 0xd4, 0x20, 0x19, 0x18, 0xaa, 0x43, 0xab, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x21, 0xe2, 0x3f, 0xfc, 0xc6, 0xf3, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x8e, 0xf6, 0x83, 0xe5, 0x88, 0x42, 0xc7, 0xa1, 0x61, 0x37, 0xac, 0xef, 0x6d, 0x30, 0x58, 0x63, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xc1, 0xe0, 0x9e, 0x1e, 0x24, 0x03, 0xc5, 0xef, 0xe0, 0x11, 0xb2, 0x0e, 0x87, 0x0e, 0x1a, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x8b, 0x2b, 0x51, 0x07, 0xc3, 0x83, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0xed, 0xf7, 0xe0, 0x15, 0xc3, 0x15, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5a, 0x70, 0xfd, 0xa0, 0xd8, 0x83, 0x18, 0x44, 0x0b, 0xbb, 0x21, 0x86, 0x07, 0x41, 0x12, 0x7d, 0x3c, 0x3e, 0xbe, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0x4b, 0x30, 0xa8, 0x16, 0x87, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0x25, 0x18, 0x54, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x3c, 0x26, 0xac, 0xe1, 0x90, 0x86, 0x1b, 0x04, 0x1b, 0x3c, 0x00, 0xa7, 0x62, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x2f, 0x08, 0x36, 0x78, 0x00, 0x4e, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x07, 0xcd, 0xf3, 0x77, 0x1f, 0xdf, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x18, 0x03, 0x3a, 0x6c, 0xd4, 0x1e, 0x87, 0x0e, 0x31, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0xcb, 0x76, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x6c, 0xd0, 0xfe, 0x3f, 0xd4, 0x41, 0xc0, 0xfb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x08, 0x4d, 0x0e, 0x92, 0x81, 0x70, 0x1d, 0xac, 0xed, 0xe4, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x1c, 0xd9, 0xbb, 0x38, 0x08, 0x36, 0x38, 0x6e, 0x5e, 0x1f, 0x9c, 0xe4, 0x97, 0x8f, 0xc7, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xa8, 0xf7, 0x1d, 0x0c, 0x43, 0x9f, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0xbd, 0x3f, 0x70, 0x48, 0xc3, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x07, 0xcd, 0xff, 0x77, 0x1f, 0xdf, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xed, 0x0e, 0x02, 0xde, 0xff, 0x60, 0x3d, 0xba, 0xd6, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x6f, 0x90, 0xa2, 0x7d, 0x7d, 0x88, 0xe1, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x96, 0xbe, 0xf7, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x74, 0xd9, 0xee, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x3c, 0x07, 0xbc, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x43, 0x68, 0x72, 0x90, 0x0c, 0x84, 0xeb, 0x60, 0x75, 0x2a, 0xff, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xe2, 0x06, 0xaf, 0x37, 0xad, 0x38, 0x78, 0xbd, 0x69, 0xc5, 0xe2, 0x20, 0xd8, 0xe0, 0xcc, 0x01, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x04, 0x1a, 0x88, 0x83, 0xe4, 0xf2, 0x81, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x12, 0x68, 0x20, 0x0e, 0x9d, 0x88, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xe2, 0xc1, 0xeb, 0x4d, 0x2b, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x04, 0x1a, 0x88, 0x43, 0x53, 0xa0, 0x41, 0xb0, 0xc1, 0x52, 0xa5, 0x8c, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0xbe, 0x20, 0xd8, 0x60, 0xa9, 0x52, 0xc6, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x07, 0xad, 0x92, 0x79, 0x1f, 0xdf, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xc2, 0xdf, 0xee, 0x60, 0xbc, 0xeb, 0x1c, 0x36, 0x6a, 0x8f, 0x43, 0x87, 0x18, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x2f, 0x08, 0x36, 0x58, 0xaa, 0x94, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0x41, 0xf3, 0x6d, 0xde, 0xc7, 0xb7, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0x69, 0x77, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x3c, 0x94, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x70, 0x4e, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe4, 0x39, 0xee, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xc9, 0x9a, 0x06, 0x87, 0xd4, 0xc1, 0x71, 0xe8, 0x20, 0x30, 0xb1, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x21, 0x86, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x0b, 0x82, 0x0d, 0x96, 0x2a, 0x65, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x78, 0xd0, 0x56, 0xa0, 0xf7, 0xf1, 0x6d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x50, 0xf6, 0x0e, 0x02, 0xde, 0xff, 0x60, 0x15, 0x27, 0xff, 0x71, 0xe8, 0x10, 0xc3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x61, 0x37, 0x68, 0x7c, 0x3c, 0x66, 0x43, 0x0c, 0x17, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x0f, 0x5a, 0x7a, 0xf4, 0x3e, 0xbe, 0x0d, 0x82, 0x05, 0xc9, 0x06, 0x83, 0xe4, 0xe5, 0x60, 0xf8, 0xc7, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xc1, 0x7f, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x0c, 0xee, 0xe9, 0x41, 0x32, 0x10, 0xae, 0x83, 0x63, 0x69, 0xfa, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe7, 0xc8, 0xde, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x7c, 0x39, 0x38, 0x66, 0x15, 0x1f, 0x9c, 0xe4, 0x97, 0x8f, 0xc7, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xa8, 0xf7, 0x1d, 0x9c, 0x84, 0x8e, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x78, 0xd0, 0x18, 0xab, 0xf7, 0xf1, 0x6d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x84, 0xbf, 0xdd, 0xc1, 0xf0, 0x8f, 0x3d, 0xa4, 0xe1, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x78, 0xa5, 0x7b, 0xc5, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xa7, 0xdd, 0xc1, 0xf0, 0x8f, 0x3d, 0x58, 0x8f, 0xae, 0x75, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x61, 0x37, 0x58, 0x3a, 0x4a, 0xb6, 0x21, 0x86, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x07, 0x4d, 0xdb, 0x7a, 0x1f, 0xdf, 0x06, 0xc1, 0x06, 0x4f, 0x8c, 0xb1, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x83, 0xff, 0x50, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xdc, 0xd3, 0x83, 0x64, 0x20, 0x5c, 0x83, 0x68, 0x61, 0x0f, 0x8d, 0x8e, 0x8e, 0x43, 0x07, 0xef, 0xbb, 0xb1, 0x38, 0x0e, 0x1d, 0x3c, 0x5c, 0xc7, 0xe2, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x6b, 0xec, 0x2b, 0x86, 0xdf, 0x78, 0x7e, 0x30, 0xf0, 0x43, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x36, 0x78, 0x39, 0x82, 0xc5, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x36, 0x18, 0x02, 0x90, 0x83, 0x64, 0xa0, 0xf8, 0x1d, 0xfa, 0x13, 0x1d, 0xd2, 0x70, 0x83, 0x68, 0x61, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x21, 0x34, 0x39, 0x48, 0x06, 0x86, 0xea, 0xe0, 0x58, 0x9a, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0x83, 0x57, 0x0c, 0x57, 0x1c, 0x87, 0x0e, 0xf9, 0xda, 0xe3, 0xf1, 0x0a, 0xbf, 0x20, 0xd8, 0xe0, 0x1c, 0xd9, 0xbb, 0x38, 0xec, 0xc2, 0x2e, 0xec, 0x06, 0xc1, 0xb0, 0xbf, 0x41, 0x71, 0x71, 0x78, 0x38, 0xda, 0x17, 0x76, 0x61, 0x37, 0x28, 0x7d, 0xc1, 0x0e, 0xeb, 0x9b, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x5f, 0xd8, 0x85, 0xdd, 0xa0, 0x91, 0x8d, 0x91, 0x85, 0x5d, 0xd8, 0x0d, 0xc6, 0x3a, 0xda, 0x61, 0x7d, 0xf3, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x6b, 0x88, 0xe1, 0x20, 0xd8, 0xa0, 0x55, 0x56, 0x95, 0x83, 0x93, 0xfc, 0xf2, 0xb0, 0x0b, 0xbb, 0xc1, 0xe8, 0xc5, 0x5a, 0xd8, 0x85, 0xdb, 0xd0, 0x4a, 0xfc, 0xd0, 0x48, 0x70, 0x61, 0x37, 0x48, 0xec, 0xfa, 0x59, 0xd8, 0x85, 0xdd, 0x60, 0x44, 0xf4, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0xb4, 0x9a, 0xe9, 0x74, 0x38, 0xda, 0x17, 0x76, 0x83, 0x01, 0xd9, 0xbb, 0x41, 0x83, 0xfb, 0x49, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0xd7, 0xd0, 0x4a, 0x7c, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0xb4, 0xca, 0xaa, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x5c, 0x98, 0x1d, 0x14, 0xe7, 0x5c, 0xc7, 0xa1, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0xb4, 0xca, 0xaa, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x5c, 0x98, 0x1d, 0x94, 0xd8, 0x83, 0xc7, 0xa1, 0x0d, 0x86, 0x3c, 0xfa, 0x21, 0xb1, 0x39, 0xec, 0xc2, 0x6e, 0x10, 0x0c, 0xfb, 0x0b, 0xbb, 0x41, 0xda, 0xd1, 0xcf, 0xc2, 0x6e, 0x50, 0xee, 0x1d, 0x2e, 0xec, 0x06, 0x0d, 0x3c, 0xab, 0x2c, 0xdc, 0x86, 0xa3, 0xfd, 0x60, 0x21, 0xcc, 0xfe, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0xaf, 0x41, 0x01, 0x00, 0xb5, 0xc1, 0xf8, 0xe9, 0x3a, 0x8c, 0xcb, 0xb0, 0x0b, 0xb7, 0xc1, 0x50, 0x44, 0x3a, 0x8c, 0xcb, 0x86, 0x68, 0x1e, 0x3c, 0xb8, 0xcf, 0xe2, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x37, 0x68, 0xfa, 0x1d, 0xed, 0x90, 0x5a, 0x3a, 0x1e, 0xaf, 0xf0, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xbf, 0x20, 0x58, 0x90, 0x0c, 0xac, 0xf4, 0x1d, 0x04, 0x39, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xc0, 0xd9, 0x5d, 0xee, 0xb0, 0x42, 0x7b, 0x1c, 0x3a, 0xbe, 0x0d, 0x82, 0xc5, 0x61, 0x37, 0x18, 0x9b, 0x9c, 0x0b, 0xbb, 0x61, 0x7d, 0x6f, 0x83, 0xf5, 0x0d, 0x46, 0xc3, 0x6e, 0xd0, 0x76, 0xbf, 0xc8, 0x86, 0x68, 0x6e, 0xb0, 0x94, 0x61, 0xea, 0x90, 0x3a, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x06, 0xa5, 0xf2, 0xd6, 0x20, 0x5a, 0xd8, 0x61, 0x17, 0x6e, 0x83, 0xf5, 0x0d, 0x46, 0x87, 0xf8, 0x6f, 0x48, 0x1d, 0x0c, 0xbb, 0xb0, 0x1b, 0x3c, 0xc8, 0x57, 0x60, 0xe1, 0x36, 0x58, 0xca, 0x30, 0x75, 0x30, 0x26, 0xac, 0x0e, 0x47, 0xfb, 0x82, 0x60, 0x41, 0xb0, 0x41, 0x8b, 0x20, 0x27, 0x83, 0x64, 0x20, 0x5c, 0x87, 0xf6, 0x2d, 0x07, 0xc5, 0x63, 0xca, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x22, 0xc8, 0xc9, 0x41, 0xc1, 0xe8, 0x70, 0xc8, 0x5e, 0x1c, 0x8f, 0x8f, 0x6f, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0xb8, 0xc1, 0x82, 0x86, 0xa9, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0x82, 0x60, 0x83, 0xa6, 0xd0, 0x97, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x3c, 0x68, 0xa3, 0xe1, 0x7f, 0xe1, 0x37, 0x9e, 0x8f, 0x07, 0x4d, 0x2d, 0xfc, 0x1f, 0x0c, 0xfc, 0x90, 0xe3, 0xd0, 0x0a, 0xbf, 0x20, 0xd8, 0xa0, 0xdd, 0x55, 0x80, 0xc5, 0x61, 0x17, 0x6e, 0x83, 0xf5, 0x0d, 0x46, 0x87, 0x71, 0xd9, 0x60, 0x7d, 0x83, 0xd1, 0x06, 0x0b, 0xe9, 0xa5, 0x0e, 0x89, 0xcd, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0xdc, 0x30, 0xf7, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0xc3, 0xd1, 0x3e, 0x08, 0x16, 0x87, 0xdd, 0x60, 0x10, 0x70, 0x6c, 0x88, 0xe1, 0xb0, 0x0b, 0xbb, 0xc1, 0x5a, 0x21, 0xb1, 0x85, 0xdd, 0x60, 0xd9, 0xfa, 0xff, 0xc2, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x9a, 0x0e, 0x6d, 0xf0, 0x0e, 0x7a, 0x87, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x82, 0x60, 0x83, 0x37, 0x23, 0x05, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x28, 0xba, 0xfa, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x64, 0xc7, 0xc1, 0x03, 0x10, 0x22, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0xb4, 0xb6, 0x5a, 0x5c, 0x10, 0x6c, 0xf0, 0x26, 0x9d, 0x89, 0x83, 0x04, 0xb9, 0xa2, 0xc3, 0xb8, 0x1c, 0x8f, 0x8f, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0x6b, 0x85, 0xc4, 0x16, 0x76, 0x83, 0x65, 0xeb, 0xff, 0x1b, 0xbc, 0xaa, 0xd5, 0xe2, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x05, 0xc1, 0x06, 0xef, 0x8d, 0xb5, 0x18, 0x76, 0x83, 0xd6, 0xf9, 0x00, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x06, 0x6d, 0x91, 0x05, 0x0c, 0xa2, 0x85, 0x1d, 0x04, 0x1b, 0xb4, 0x8d, 0x45, 0x72, 0xf0, 0x62, 0xa0, 0x89, 0xe3, 0xf9, 0x86, 0x18, 0x2e, 0x08, 0x36, 0x68, 0x1b, 0x8b, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6d, 0x63, 0x91, 0x1c, 0x3c, 0x66, 0x67, 0xe2, 0xd0, 0x48, 0xf0, 0x38, 0x74, 0x30, 0x58, 0x63, 0x87, 0x5d, 0xd8, 0x0d, 0xd6, 0x0a, 0x89, 0x2d, 0xec, 0x06, 0xcb, 0xd6, 0xff, 0x0f, 0xde, 0xe2, 0x6a, 0x71, 0x38, 0xda, 0x17, 0x04, 0x1b, 0xbc, 0x37, 0xd6, 0x62, 0xd8, 0x0d, 0x5a, 0xe7, 0x03, 0x58, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x34, 0xbe, 0x15, 0x70, 0xf0, 0xe6, 0x5e, 0x8b, 0x83, 0xf7, 0xfe, 0x5a, 0x0c, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x76, 0x83, 0xb5, 0x42, 0x62, 0x1b, 0x2c, 0x5b, 0xff, 0x3f, 0x1c, 0xed, 0x83, 0x60, 0x83, 0xf7, 0xc6, 0x5a, 0x0c, 0xbb, 0x41, 0xeb, 0x7c, 0x00, 0x0b, 0x82, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0x41, 0xe3, 0x5b, 0x01, 0x83, 0x68, 0x61, 0x07, 0xc1, 0x06, 0x6d, 0x63, 0x91, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x1e, 0x0c, 0xd9, 0xf3, 0xe3, 0xd0, 0xf1, 0x7c, 0xd8, 0x0d, 0x5a, 0xe7, 0x03, 0x58, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xda, 0x0f, 0x1a, 0xf6, 0x19, 0x19, 0x44, 0x0b, 0x3b, 0x08, 0x36, 0x78, 0x93, 0xce, 0xc4, 0x41, 0xeb, 0x34, 0x23, 0x87, 0xe4, 0xd2, 0x71, 0xe8, 0xe0, 0xbd, 0xbf, 0x16, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0xdc, 0xa0, 0x69, 0xf4, 0xbe, 0x43, 0x6a, 0xe9, 0x78, 0x3c, 0xfc, 0x82, 0x60, 0x71, 0xc3, 0x74, 0x1e, 0x2c, 0x49, 0x83, 0x5a, 0x1c, 0x76, 0xe1, 0x36, 0x58, 0xdf, 0x60, 0x74, 0x88, 0xe6, 0x06, 0xeb, 0x1b, 0x8c, 0x36, 0x58, 0xd3, 0x2d, 0x75, 0x48, 0x6c, 0x1e, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x86, 0x19, 0x3a, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0xa4, 0x47, 0xf9, 0x2c, 0x0e, 0xbb, 0x21, 0x8f, 0xb5, 0xb0, 0x1b, 0xf6, 0x0a, 0xd7, 0x60, 0xd1, 0x11, 0xd2, 0x61, 0x5c, 0x36, 0x58, 0xaa, 0x85, 0x74, 0x18, 0x97, 0x61, 0x37, 0x48, 0x8f, 0xf3, 0x59, 0xd8, 0x0d, 0x7b, 0x85, 0x6b, 0xb0, 0xe8, 0x08, 0xe9, 0xb0, 0x75, 0x30, 0xec, 0x06, 0x23, 0x16, 0x6b, 0x0d, 0x96, 0x6a, 0x21, 0x1d, 0xb6, 0x0e, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf4, 0xd0, 0x48, 0xf0, 0x78, 0x7c, 0x30, 0x62, 0x09, 0x06, 0xd9, 0x1a, 0xda, 0xaf, 0x1f, 0x2c, 0x4c, 0x1a, 0xd8, 0x60, 0x39, 0x8e, 0xd2, 0x20, 0xd8, 0xa0, 0xd5, 0x3c, 0xa6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x7c, 0xed, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe9, 0x51, 0x3e, 0x8b, 0x07, 0x29, 0x43, 0x09, 0xc7, 0xe3, 0xe3, 0xd0, 0xf1, 0xf8, 0x78, 0xbc, 0xc2, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0xab, 0x63, 0x55, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x48, 0x4c, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0xe7, 0x10, 0xee, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0xd0, 0x9f, 0x7c, 0x10, 0x6c, 0x70, 0x94, 0xdf, 0x3d, 0x18, 0xd8, 0xa2, 0x87, 0xbd, 0xc2, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0x20, 0xd8, 0x20, 0xf9, 0x3a, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x70, 0x90, 0x36, 0xed, 0x7c, 0x1c, 0x5a, 0xd8, 0x05, 0xc1, 0x06, 0x67, 0xb6, 0xec, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0x41, 0xd2, 0xba, 0xf3, 0x71, 0xe8, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x2b, 0x08, 0x36, 0x48, 0x75, 0xe4, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x1c, 0x24, 0xdc, 0x9e, 0x1c, 0x87, 0x06, 0xc1, 0x06, 0x25, 0x5d, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x6f, 0xe8, 0x4f, 0x3e, 0x08, 0x36, 0x38, 0x6a, 0x0f, 0x1f, 0x1a, 0xb5, 0x1c, 0x04, 0x26, 0xf6, 0x71, 0xe8, 0x60, 0x94, 0x72, 0x1e, 0x8f, 0x07, 0xc1, 0x0a, 0x82, 0x8d, 0x43, 0x87, 0x8d, 0xda, 0x41, 0xb0, 0x71, 0xe8, 0xb0, 0xc7, 0x3b, 0xec, 0xc2, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x14, 0x14, 0x45, 0x1b, 0x62, 0x38, 0xec, 0x06, 0x0b, 0xb5, 0xb8, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0x5d, 0xd8, 0x0d, 0x16, 0x6a, 0x71, 0x1d, 0xd6, 0x37, 0x17, 0x76, 0x41, 0xb0, 0x41, 0xc2, 0x3e, 0xf3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x23, 0xc1, 0x83, 0xf1, 0xd3, 0x75, 0x1c, 0x3a, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0x21, 0x9d, 0xbb, 0xb0, 0x0b, 0x82, 0xc5, 0x61, 0x37, 0x28, 0x7d, 0xc1, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0xc6, 0x3a, 0xda, 0x86, 0x18, 0x0e, 0xbb, 0xb0, 0x0b, 0xb7, 0x20, 0xd8, 0x20, 0x8d, 0xee, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x3a, 0x18, 0x17, 0x66, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0x1a, 0xdd, 0xc3, 0x41, 0xc9, 0x99, 0xb3, 0xb0, 0x0b, 0x92, 0x21, 0x83, 0x68, 0xc1, 0x76, 0x10, 0x6c, 0x70, 0x0e, 0xe1, 0x3e, 0x28, 0x39, 0x73, 0x06, 0xd1, 0x82, 0xe5, 0x20, 0xd8, 0xe0, 0x1c, 0xc2, 0x7d, 0xf0, 0xdc, 0x89, 0x8b, 0xe3, 0xf1, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x0f, 0xe9, 0xdc, 0xe3, 0xdb, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0x83, 0x56, 0x31, 0xaf, 0x0e, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x86, 0xa3, 0x7d, 0x10, 0x2c, 0x0e, 0xbb, 0xc1, 0x20, 0xe0, 0xd8, 0x10, 0xc3, 0x61, 0x37, 0x78, 0xeb, 0xaa, 0xc5, 0xc2, 0x6e, 0x50, 0x02, 0x27, 0xac, 0x21, 0x86, 0x1b, 0x52, 0x07, 0x07, 0xc5, 0x1e, 0xc4, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0x3a, 0x5c, 0x8b, 0x85, 0xdd, 0xa0, 0x04, 0x4e, 0x58, 0x43, 0x0c, 0x37, 0x78, 0x4c, 0xbe, 0xc3, 0x41, 0xb1, 0x07, 0x31, 0xec, 0x82, 0x60, 0x83, 0x42, 0x98, 0xe1, 0xa0, 0xec, 0x4b, 0xd8, 0x10, 0xc3, 0x41, 0x32, 0x64, 0x10, 0x6d, 0xd0, 0xca, 0x8f, 0xc0, 0xc1, 0xf3, 0xf8, 0x1d, 0x86, 0xdd, 0xe0, 0x99, 0xc4, 0x16, 0x0b, 0xbb, 0x41, 0x09, 0x9c, 0xb0, 0xc1, 0x33, 0x4c, 0x2e, 0x86, 0xdd, 0xe0, 0xa5, 0x27, 0x17, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x41, 0xfb, 0xa1, 0xe9, 0xd0, 0xc1, 0xf3, 0xf8, 0x1d, 0x0e, 0x31, 0x1c, 0x64, 0x1b, 0x3c, 0x5d, 0xd9, 0x62, 0xd8, 0x0d, 0x4a, 0xe0, 0x84, 0x0d, 0x9e, 0x61, 0x72, 0x31, 0xec, 0x06, 0x2f, 0x3d, 0xb9, 0x58, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x3c, 0xc4, 0xe5, 0x62, 0x10, 0x2d, 0xec, 0x20, 0xd8, 0x60, 0x75, 0x52, 0xca, 0xc1, 0x58, 0x3b, 0x3f, 0x1e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x83, 0x56, 0x7e, 0x04, 0x06, 0xd1, 0xc2, 0x0e, 0x82, 0x0d, 0x56, 0x27, 0xa5, 0x1c, 0x0c, 0x48, 0xf4, 0xe3, 0xf1, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x37, 0x68, 0x1b, 0x09, 0xf4, 0x90, 0x5a, 0x3a, 0x1e, 0x0f, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x76, 0xe1, 0x36, 0x18, 0xac, 0x28, 0x87, 0xd4, 0xc1, 0x86, 0x73, 0x7d, 0xd8, 0x85, 0xdb, 0x70, 0xae, 0x1f, 0x52, 0x07, 0x1b, 0x0c, 0x56, 0x94, 0x61, 0x37, 0x68, 0xe7, 0xbb, 0x65, 0x43, 0xea, 0x60, 0x83, 0xd1, 0x7c, 0xbe, 0x21, 0x75, 0x30, 0x1e, 0xd6, 0x37, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0x83, 0xb4, 0x90, 0xd8, 0x43, 0x6a, 0xe9, 0x78, 0x3c, 0xfc, 0x82, 0x60, 0x83, 0x73, 0x64, 0xef, 0xe2, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x2e, 0xec, 0x06, 0xc1, 0xb0, 0xbf, 0x41, 0x49, 0x74, 0x78, 0x38, 0xda, 0x17, 0x76, 0x83, 0xd1, 0x8b, 0xb5, 0xc1, 0x30, 0xe5, 0x3d, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0xaf, 0xe1, 0x68, 0x3f, 0x18, 0x98, 0x5d, 0x87, 0xc4, 0xe6, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x6e, 0xd0, 0xd0, 0x0c, 0xda, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbb, 0xc1, 0xd3, 0x5c, 0x1c, 0x36, 0x8c, 0xcb, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0x06, 0x6b, 0x58, 0xaf, 0x0e, 0x47, 0xfb, 0x06, 0x4b, 0xe7, 0x76, 0x06, 0xd9, 0x86, 0xe6, 0xeb, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x0d, 0xb9, 0xef, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0xf1, 0xa0, 0x29, 0xdd, 0xf0, 0xe3, 0xdb, 0xf1, 0xf8, 0x70, 0x8a, 0x1d, 0x8f, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x38, 0x87, 0x70, 0x1f, 0x8c, 0xe3, 0x90, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x1e, 0xa8, 0xbd, 0xb0, 0x38, 0xec, 0x82, 0x60, 0x83, 0xf1, 0xd3, 0x35, 0x08, 0x16, 0x87, 0xdd, 0xd0, 0xf4, 0x7c, 0xc3, 0xd1, 0x3e, 0xec, 0x82, 0x60, 0x41, 0xb0, 0x41, 0x8b, 0x2b, 0x51, 0x07, 0x6f, 0xb2, 0x49, 0x38, 0x34, 0x6a, 0xd9, 0x10, 0xc3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x20, 0xd8, 0xe0, 0x1c, 0xf0, 0x7d, 0x68, 0xd4, 0x72, 0x3c, 0x3e, 0xbe, 0x6d, 0x18, 0x97, 0xe1, 0x17, 0x44, 0x0b, 0xd2, 0x41, 0xb0, 0x20, 0xd9, 0x60, 0xed, 0x3a, 0xc5, 0xc1, 0x30, 0xf4, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x53, 0xfa, 0x4d, 0x83, 0x64, 0x20, 0x5c, 0x87, 0xbe, 0x1a, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0xab, 0xf0, 0x0b, 0x92, 0x0d, 0x96, 0x19, 0x1d, 0x1d, 0x0c, 0x43, 0x9f, 0xe3, 0xdb, 0xf0, 0x0b, 0x92, 0x01, 0xc1, 0x2f, 0x77, 0x10, 0xf0, 0xfe, 0xc7, 0xb7, 0xc3, 0xb8, 0x2c, 0x0e, 0xbb, 0x20, 0xd8, 0x60, 0x25, 0x93, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xa0, 0xf4, 0xdb, 0x38, 0x0e, 0x2d, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0xb8, 0x12, 0x75, 0xf0, 0xe6, 0x52, 0x84, 0x83, 0x64, 0x43, 0x83, 0xc3, 0xb8, 0x1c, 0x8f, 0x8f, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x19, 0x93, 0xfe, 0x20, 0xd9, 0xd0, 0x60, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0x0c, 0xee, 0xe9, 0x41, 0x32, 0x50, 0xfc, 0x0e, 0xdb, 0xbd, 0x07, 0x03, 0x5b, 0x74, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x82, 0x60, 0x41, 0xb0, 0x41, 0x8b, 0x2b, 0x51, 0x83, 0x64, 0x60, 0xa8, 0x0e, 0x9a, 0x27, 0x13, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xc2, 0x48, 0x1c, 0x8c, 0xc5, 0xce, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x0d, 0xde, 0xd7, 0x75, 0x31, 0xec, 0x82, 0x60, 0x41, 0x32, 0xf8, 0x72, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x94, 0x3a, 0x1d, 0xc7, 0xa1, 0x05, 0xc1, 0x82, 0x64, 0x40, 0x78, 0xf5, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xb1, 0xf3, 0x30, 0x2e, 0xc7, 0xa1, 0x41, 0xb0, 0xc1, 0x0b, 0xf6, 0x2e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xc6, 0xe5, 0x60, 0x2c, 0x76, 0x1e, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x16, 0x57, 0xa2, 0x06, 0xc9, 0x40, 0xf8, 0x0e, 0x9a, 0x27, 0x13, 0x38, 0x34, 0x6a, 0x39, 0x24, 0x97, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x04, 0x52, 0x86, 0x43, 0xc7, 0xf8, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x34, 0xd9, 0xff, 0x7e, 0x70, 0xc2, 0xba, 0x3e, 0x1e, 0x2f, 0x08, 0x16, 0x04, 0x1b, 0xac, 0x80, 0xe7, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x58, 0xfb, 0x3d, 0x58, 0xe5, 0x21, 0x75, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0x06, 0xed, 0xff, 0x43, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0x08, 0x72, 0x32, 0x48, 0x06, 0x42, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x21, 0x67, 0x3d, 0x48, 0x06, 0x82, 0x77, 0x30, 0x06, 0x23, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x83, 0x2f, 0x07, 0xc3, 0xd0, 0xe7, 0x38, 0x34, 0x08, 0x16, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0x41, 0x7b, 0xd9, 0x4a, 0x83, 0x60, 0x43, 0x34, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x41, 0x8b, 0x2b, 0x51, 0x83, 0x64, 0xa0, 0x7a, 0x1d, 0x8c, 0x1a, 0xa3, 0x83, 0x81, 0x2d, 0x3a, 0x08, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x86, 0x65, 0xdf, 0x43, 0x72, 0x69, 0x83, 0x23, 0x4f, 0xf1, 0x06, 0x63, 0xd9, 0xe7, 0x38, 0x74, 0x7c, 0x1b, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x81, 0x75, 0xfb, 0x20, 0xfd, 0x99, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x38, 0x4b, 0x66, 0x1f, 0x9c, 0x83, 0x80, 0x87, 0x5d, 0x10, 0x6c, 0xd0, 0x2a, 0x5c, 0xd4, 0xc1, 0x9b, 0x4d, 0x28, 0x36, 0x1c, 0xed, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xc2, 0xda, 0xc2, 0xc1, 0x9b, 0x4d, 0x28, 0x86, 0xdb, 0x90, 0xec, 0x18, 0x04, 0x0b, 0x92, 0x81, 0xf7, 0x9d, 0x0e, 0x4e, 0x42, 0xc7, 0x07, 0xa7, 0x74, 0xf0, 0xe3, 0xf1, 0xc1, 0x69, 0x05, 0xf7, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x37, 0x68, 0x58, 0xe9, 0xef, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x71, 0xc3, 0x29, 0x76, 0x70, 0x9a, 0xec, 0x5d, 0x1c, 0x76, 0xe1, 0x36, 0x18, 0xac, 0x28, 0x87, 0x68, 0x6e, 0x68, 0x24, 0x38, 0xec, 0xc2, 0x1d, 0x2c, 0xc3, 0xbb, 0xd9, 0x20, 0x28, 0xbd, 0x87, 0x5d, 0xb8, 0x0d, 0x89, 0xa9, 0x43, 0x34, 0x37, 0x44, 0x73, 0x83, 0xd1, 0x7c, 0xbe, 0x21, 0x9a, 0x07, 0x23, 0x3c, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x37, 0x68, 0x0c, 0x25, 0xed, 0x90, 0x5a, 0x3a, 0x1e, 0x0f, 0xbf, 0x20, 0xd8, 0xe0, 0x1c, 0xd9, 0xbb, 0x38, 0xec, 0xc2, 0x6e, 0x48, 0x67, 0x6e, 0x88, 0xe1, 0xb0, 0x1b, 0x3c, 0x00, 0xf5, 0x62, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0xe7, 0xfa, 0x61, 0x5c, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0x9e, 0xad, 0x7a, 0x71, 0x48, 0xe7, 0x6e, 0x88, 0xe6, 0xb0, 0x0b, 0xbb, 0xc1, 0x0b, 0x53, 0x2f, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0x60, 0xb0, 0xa2, 0x1c, 0xc6, 0x65, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x89, 0xa9, 0xc3, 0xb8, 0x1c, 0xd2, 0xb9, 0x1b, 0xc6, 0x65, 0x83, 0xd1, 0x7c, 0xbe, 0x21, 0x9a, 0x07, 0x8f, 0xb5, 0xbd, 0x38, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x0d, 0x5a, 0xb1, 0x11, 0x3b, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0x35, 0x4c, 0xe7, 0xc1, 0xaa, 0x05, 0xac, 0xc3, 0x74, 0x2e, 0x0e, 0xbb, 0xc1, 0xe3, 0x48, 0x2d, 0x36, 0x58, 0xdf, 0x60, 0x34, 0xec, 0xc2, 0x6d, 0xb0, 0xd0, 0xc4, 0xe8, 0x30, 0x2e, 0x1b, 0x2c, 0x34, 0x31, 0xda, 0x60, 0x69, 0xca, 0xd4, 0x21, 0xb1, 0x79, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x06, 0xed, 0x59, 0x00, 0x2c, 0x0e, 0xbb, 0xc1, 0xc3, 0xb7, 0x2d, 0x36, 0x58, 0xdf, 0x60, 0x34, 0xec, 0x06, 0x8f, 0x23, 0xb5, 0xd8, 0x60, 0x7d, 0x83, 0xd1, 0x41, 0xab, 0x54, 0x4c, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0xb8, 0x61, 0xe2, 0x0e, 0xa9, 0xa5, 0xe3, 0xf1, 0xf0, 0x0b, 0x82, 0x0d, 0xce, 0x91, 0xbd, 0x8b, 0xc3, 0x2e, 0xec, 0x86, 0x74, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0x0b, 0x53, 0x2f, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0x9e, 0x68, 0x7b, 0x71, 0xf0, 0xb4, 0xd9, 0x8b, 0x0d, 0xd1, 0x1c, 0x76, 0x61, 0x37, 0x78, 0x00, 0xea, 0xc5, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0x33, 0x65, 0x2f, 0x0e, 0x9e, 0x77, 0x7b, 0xb1, 0x61, 0x5c, 0x36, 0x18, 0xcd, 0xe7, 0x1b, 0xa2, 0xb9, 0x61, 0x5c, 0x0e, 0xe7, 0xfa, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x6e, 0xd0, 0x2a, 0x85, 0xd8, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0xd8, 0xa0, 0x4c, 0x9d, 0x3b, 0x78, 0x9e, 0x35, 0xc3, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xcb, 0x0a, 0xa3, 0x0e, 0xc6, 0x71, 0xc8, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x83, 0x32, 0x75, 0x6e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0xb2, 0xc2, 0xa8, 0x83, 0xa5, 0x7b, 0x53, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x83, 0x75, 0x7e, 0x51, 0x2b, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x0a, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x68, 0xd7, 0x7e, 0xe9, 0x90, 0x86, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0xda, 0xff, 0x1d, 0x8f, 0x0f, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0xd4, 0x7f, 0x8c, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x59, 0x61, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x14, 0x0c, 0x8f, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x36, 0x28, 0xa8, 0xc5, 0x16, 0x07, 0xc1, 0x0a, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x68, 0x61, 0x87, 0xe9, 0x90, 0x86, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0xb0, 0x7a, 0x13, 0xed, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x1b, 0xac, 0xa1, 0x91, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xf0, 0xbc, 0xbc, 0x84, 0xe1, 0x37, 0x9e, 0x1f, 0xbc, 0x84, 0xfb, 0xe2, 0x38, 0x74, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0xb2, 0xc2, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x87, 0x7a, 0xdb, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0xda, 0xf7, 0x1d, 0x56, 0x68, 0x0f, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0x0d, 0x92, 0xf8, 0x7b, 0x5a, 0x1c, 0x04, 0xab, 0xb0, 0x0b, 0xb7, 0xc1, 0xf8, 0xe9, 0x3a, 0xc4, 0xf0, 0xd0, 0x38, 0x6a, 0x85, 0x5d, 0xb8, 0x0d, 0xca, 0x0d, 0x9b, 0x43, 0x0c, 0x0f, 0x8d, 0xa3, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x01, 0x81, 0xdf, 0x77, 0x58, 0xa1, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x4e, 0x10, 0xe5, 0xe3, 0xd0, 0xb0, 0x1b, 0x3c, 0x82, 0x7b, 0xe1, 0xd0, 0x38, 0xea, 0x60, 0x68, 0xfe, 0x1e, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x28, 0x53, 0xe7, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x0d, 0xde, 0x38, 0x7e, 0x31, 0x08, 0x36, 0x78, 0xf1, 0x00, 0xc6, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x78, 0xf2, 0xf5, 0xc5, 0x41, 0x63, 0xbb, 0x51, 0x1b, 0x4e, 0x84, 0x0d, 0xa5, 0x68, 0x83, 0xc5, 0x6c, 0x50, 0xcb, 0x2c, 0x07, 0x8d, 0x83, 0x03, 0x1e, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0xd0, 0x38, 0x38, 0xe0, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0xf8, 0xcb, 0xe8, 0xd0, 0xca, 0xe4, 0xca, 0xea, 0xda, 0x0d, 0x33, 0xb4, 0x86, 0xb9, 0x5f, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0xbe, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x98, 0xa1, 0x35, 0xcc, 0xd0, 0x1a, 0x66, 0x68, 0x0d, 0x33, 0xb4, 0xc1, 0xd2, 0x3f, 0xfd, 0x0d, 0x27, 0xc2, 0x06, 0x4b, 0xff, 0xf4, 0xd7, 0x70, 0x8e, 0xac, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0xd7, 0x20, 0x3d, 0xcc, 0x7b, 0xc0, 0x0f, 0x93, 0xb3, 0x7b, 0x0f, 0x52, 0xd7, 0xbc, 0x17, 0x88, 0x5e, 0xc8, 0x06, 0xa2, 0x17, 0x7a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xa2, 0x17, 0x16, 0x03, 0xd1, 0x0b, 0xab, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x7a, 0x21, 0x3c, 0x78, 0x21, 0x09, 0xc6, 0x20, 0xd8, 0xa0, 0xa5, 0xac, 0xa6, 0x43, 0x1a, 0x6e, 0x90, 0x6d, 0xf0, 0x94, 0x0f, 0x8c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x7a, 0x61, 0x3b, 0x10, 0xbd, 0x50, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x44, 0x2f, 0xcc, 0x0e, 0x5e, 0xb5, 0x82, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x44, 0x2f, 0x8c, 0x07, 0xa2, 0x17, 0x0a, 0x0e, 0x96, 0x53, 0x05, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x44, 0x2f, 0x34, 0x0c, 0x44, 0x2f, 0xb4, 0x0c, 0x92, 0x81, 0xbe, 0x77, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x78, 0xd0, 0x54, 0x96, 0xeb, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x98, 0x83, 0xe8, 0xc0, 0x30, 0xc4, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0xab, 0xad, 0xe8, 0x0e, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x98, 0x83, 0xf8, 0x81, 0x39, 0x08, 0xa3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x39, 0x08, 0xc1, 0xc0, 0x1c, 0x84, 0x74, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xb7, 0xef, 0x60, 0x6c, 0xf0, 0xf6, 0x1d, 0x8c, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x45, 0x0f, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x30, 0x07, 0x61, 0x30, 0x30, 0x07, 0x61, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xcc, 0x41, 0x88, 0x0f, 0x5e, 0x69, 0x84, 0x71, 0xd0, 0x4a, 0x67, 0xd3, 0xb0, 0x0b, 0xb7, 0x78, 0xb0, 0x76, 0xb4, 0xfb, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x41, 0x88, 0x1f, 0x18, 0x84, 0x50, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x30, 0x08, 0x21, 0x18, 0x18, 0x84, 0x90, 0x0e, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0x3e, 0x25, 0x8c, 0x0d, 0xde, 0xa7, 0x84, 0x71, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x2f, 0x5d, 0xc2, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x06, 0x21, 0x0c, 0x06, 0x06, 0x21, 0x34, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x83, 0x10, 0xe2, 0x83, 0xa7, 0x54, 0x61, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x83, 0x10, 0x16, 0x03, 0x83, 0x10, 0x56, 0x07, 0xcb, 0xa9, 0x82, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x06, 0x21, 0xcc, 0x06, 0x06, 0x21, 0x14, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x41, 0x08, 0xbb, 0x81, 0x41, 0x08, 0xdb, 0x83, 0x92, 0x77, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x41, 0x08, 0xe3, 0x81, 0x41, 0x08, 0x05, 0x83, 0x64, 0xa0, 0x7d, 0xdf, 0x21, 0x5b, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x60, 0x10, 0x42, 0xc3, 0xc0, 0x20, 0x84, 0x9e, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x06, 0x21, 0x54, 0x0c, 0x0c, 0x42, 0xa8, 0x19, 0x24, 0x03, 0x61, 0x3a, 0x1e, 0x1f, 0xdf, 0x8e, 0x43, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xef, 0xd0, 0xca, 0xf2, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x26, 0x21, 0x7e, 0x60, 0x12, 0xc2, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x60, 0x12, 0x42, 0x30, 0x30, 0x09, 0x21, 0x1d, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x61, 0x6f, 0x18, 0x1b, 0x3c, 0xec, 0x0d, 0xe3, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0xde, 0x0a, 0x87, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x4c, 0x42, 0x88, 0x07, 0x26, 0x21, 0xe4, 0x07, 0x43, 0xf3, 0x77, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0xbb, 0x32, 0x39, 0xf1, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x51, 0x88, 0x1f, 0x18, 0x85, 0xb0, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x18, 0x85, 0x10, 0x0c, 0x8c, 0x42, 0x48, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0xde, 0x1e, 0xc6, 0x06, 0xcf, 0xdb, 0xc3, 0x38, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x17, 0xf3, 0x61, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xa3, 0x10, 0x06, 0x03, 0xa3, 0x10, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xc0, 0x28, 0x84, 0xf8, 0xe0, 0x45, 0x86, 0x18, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xc0, 0x28, 0x84, 0xc5, 0xc0, 0x28, 0x84, 0xd5, 0x20, 0x19, 0x18, 0xaa, 0x83, 0x20, 0xe7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x18, 0x85, 0x30, 0x1b, 0x18, 0x85, 0xb0, 0x3b, 0x28, 0x36, 0x08, 0x0f, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x60, 0x16, 0xe2, 0x07, 0x66, 0x21, 0x0c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x66, 0x21, 0x04, 0x03, 0xb3, 0x10, 0xd2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0xc7, 0x83, 0x55, 0x67, 0xe7, 0x1b, 0x3c, 0x2d, 0x13, 0xe3, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0xde, 0x41, 0x89, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xcc, 0x42, 0x88, 0x07, 0x66, 0x21, 0xe4, 0x07, 0x43, 0xf3, 0xf7, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x06, 0x23, 0x3a, 0x30, 0x1d, 0x71, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xa3, 0x11, 0xb2, 0x81, 0xd1, 0x08, 0x93, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x60, 0x34, 0xe2, 0x0f, 0x1e, 0x4a, 0x8a, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x8c, 0x46, 0x08, 0x07, 0x46, 0x23, 0xe4, 0x83, 0x64, 0x60, 0xa5, 0xef, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xd1, 0x08, 0x83, 0x81, 0xd1, 0x08, 0x8b, 0x43, 0x62, 0xf3, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0x6f, 0x04, 0xc5, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x98, 0x8d, 0x90, 0x0d, 0xcc, 0x46, 0xa8, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x66, 0x23, 0xfe, 0xe0, 0xcd, 0xb4, 0x18, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xc0, 0x6c, 0x84, 0x70, 0x60, 0x36, 0x42, 0x7e, 0xd0, 0x86, 0x78, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xb3, 0x11, 0x06, 0x03, 0xb3, 0x11, 0x0a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xc0, 0x6c, 0x84, 0xc5, 0xc0, 0x6c, 0x84, 0xd5, 0x41, 0xc9, 0x3b, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xc0, 0x6c, 0x84, 0xd9, 0xc0, 0x6c, 0x84, 0xe9, 0x20, 0x19, 0x70, 0x76, 0x97, 0x3b, 0x24, 0x97, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xcc, 0x46, 0xd8, 0x0e, 0xcc, 0x46, 0xd8, 0x0f, 0x92, 0x01, 0x81, 0x2e, 0x77, 0x48, 0x2e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xcc, 0x46, 0x68, 0x18, 0x98, 0x8d, 0xd0, 0x72, 0xf0, 0x1e, 0x63, 0x8c, 0xe3, 0xd0, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0xe0, 0x8d, 0xa0, 0x18, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xc0, 0x70, 0x84, 0x6c, 0x60, 0x38, 0x42, 0xe5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x30, 0x1c, 0xf1, 0x07, 0xcf, 0x91, 0xc6, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x86, 0x23, 0x84, 0x03, 0xc3, 0x11, 0xf2, 0x83, 0x36, 0xc4, 0x9b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x18, 0x8e, 0x30, 0x18, 0x18, 0x8e, 0x50, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x86, 0x23, 0x2c, 0x06, 0x86, 0x23, 0xac, 0x0e, 0x4a, 0xde, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x86, 0x23, 0xcc, 0x06, 0x86, 0x23, 0x4c, 0x0f, 0xde, 0x63, 0x8c, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x60, 0x38, 0xc2, 0x76, 0x60, 0x38, 0xc2, 0xfe, 0xe0, 0x2d, 0xca, 0x18, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xc3, 0x11, 0x1a, 0x06, 0x86, 0x23, 0x34, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xe1, 0x08, 0x15, 0x03, 0xc3, 0x11, 0x6a, 0x0e, 0x4a, 0xde, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x86, 0x23, 0xf4, 0x0c, 0x0c, 0x47, 0xe8, 0x3a, 0x78, 0x8f, 0x31, 0xc6, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xe1, 0x08, 0x65, 0x03, 0xc3, 0x11, 0x0a, 0x07, 0xc9, 0x80, 0xe0, 0x97, 0x3b, 0x24, 0x97, 0x8e, 0x43, 0xc7, 0xa1, 0x43, 0x0b, 0xb0, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x71, 0xc0, 0xbf, 0x43, 0x7b, 0x6b, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xf3, 0x11, 0x1d, 0x18, 0x91, 0xb8, 0x61, 0x17, 0x76, 0x83, 0x27, 0xed, 0x61, 0x6c, 0x88, 0xe1, 0xc1, 0x9b, 0x94, 0x30, 0x16, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xf3, 0x11, 0x96, 0x03, 0xf3, 0x11, 0xd6, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x60, 0x72, 0x3c, 0x3e, 0x34, 0x6a, 0x19, 0x76, 0x61, 0x17, 0x6e, 0x83, 0xe7, 0xed, 0x61, 0x1c, 0x84, 0x14, 0xf8, 0x86, 0x18, 0x0e, 0xb7, 0xc1, 0xfb, 0x94, 0x30, 0x0e, 0x42, 0x0a, 0xfc, 0x60, 0x2c, 0x8c, 0x0e, 0xbb, 0xb0, 0x0b, 0xb7, 0x78, 0xb0, 0x26, 0x7a, 0xee, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x6e, 0x31, 0xf0, 0xef, 0xf2, 0xe4, 0xc8, 0x43, 0x34, 0x17, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x03, 0x12, 0x96, 0x03, 0x03, 0x12, 0xd6, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0xc0, 0xed, 0x73, 0x3c, 0x3e, 0x34, 0x6a, 0x19, 0x76, 0x61, 0x17, 0x6e, 0x83, 0xf7, 0x16, 0x64, 0x1c, 0x84, 0x14, 0xf8, 0x86, 0x18, 0x0e, 0xb7, 0xc1, 0x43, 0x0e, 0x32, 0x0e, 0x42, 0x0a, 0xfc, 0x60, 0x2c, 0x8c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x13, 0x12, 0x3f, 0x30, 0x21, 0x61, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x30, 0x21, 0x21, 0x18, 0x98, 0x90, 0x90, 0x0e, 0xbb, 0x70, 0x1b, 0xa2, 0x39, 0x1e, 0x3c, 0x00, 0x1f, 0x63, 0x83, 0x57, 0x57, 0x64, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x13, 0x21, 0x32, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x09, 0x09, 0x83, 0x81, 0x09, 0x09, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x60, 0x42, 0x42, 0x7c, 0xf0, 0x10, 0x8d, 0x8c, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0xa0, 0xf9, 0xd2, 0xf1, 0xf8, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x83, 0x82, 0x5a, 0x6c, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xc4, 0x35, 0x64, 0x03, 0x71, 0x0d, 0x15, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x5c, 0x43, 0x38, 0x10, 0xd7, 0x30, 0x38, 0x28, 0x79, 0x67, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x88, 0x6b, 0x58, 0x0c, 0xc4, 0x35, 0xac, 0x06, 0xc9, 0x20, 0x38, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x88, 0x6b, 0x98, 0x0d, 0xc4, 0x35, 0x34, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xb8, 0x86, 0xdd, 0x40, 0x5c, 0xc3, 0xf6, 0x60, 0x39, 0x55, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x5c, 0xc3, 0x78, 0x20, 0xae, 0xa1, 0xe0, 0xe0, 0xb8, 0xd7, 0x7b, 0x1c, 0x3a, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0x06, 0xcf, 0x96, 0xa8, 0x58, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xf1, 0x8b, 0x0e, 0x04, 0x34, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x90, 0x21, 0x1b, 0x08, 0x64, 0x98, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x81, 0x8c, 0x3f, 0x78, 0x1c, 0x4f, 0xc6, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0xc8, 0x10, 0x0e, 0x04, 0x32, 0x0c, 0x0e, 0xde, 0xcb, 0x88, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0xc8, 0xb0, 0x18, 0x08, 0x64, 0x58, 0x1d, 0xbc, 0xbc, 0x23, 0xe3, 0x38, 0x74, 0x48, 0xc3, 0x0d, 0xb2, 0x0d, 0x9e, 0x86, 0x93, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0xc9, 0x90, 0x0d, 0x44, 0x32, 0x6c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x48, 0xc6, 0x1f, 0xbc, 0x59, 0x29, 0x63, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x88, 0x64, 0x08, 0x07, 0x22, 0x19, 0x06, 0x07, 0xef, 0x65, 0xc4, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x88, 0x64, 0x58, 0x0c, 0x44, 0x32, 0x4c, 0x06, 0xc1, 0x06, 0x8b, 0xc4, 0x82, 0x0e, 0xc6, 0x71, 0xc8, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x68, 0x0a, 0x34, 0xc8, 0x36, 0x78, 0x1a, 0x4e, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x28, 0x43, 0x36, 0x10, 0xca, 0x10, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xa1, 0x8c, 0x3f, 0x78, 0xd5, 0x56, 0xc6, 0xb0, 0x1b, 0xb4, 0x38, 0x05, 0xb3, 0x21, 0x86, 0xc3, 0x6e, 0xd0, 0xbc, 0x17, 0xcc, 0xa1, 0xcd, 0xe3, 0x20, 0xdb, 0xe0, 0x69, 0x38, 0x19, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xb1, 0x0c, 0xd9, 0x40, 0x2c, 0xc3, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x88, 0x65, 0xfc, 0xc1, 0x3b, 0xc6, 0x32, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x58, 0x86, 0x70, 0x20, 0x96, 0x61, 0x70, 0xf0, 0x5e, 0x46, 0x8c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x58, 0x86, 0xc5, 0x40, 0x2c, 0xc3, 0x6a, 0x90, 0x0c, 0xee, 0x1c, 0x8f, 0x8f, 0x43, 0x07, 0x4b, 0xf8, 0x7f, 0x06, 0xd9, 0x06, 0x4f, 0xc3, 0xc9, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x08, 0x66, 0xc8, 0x06, 0x82, 0x19, 0xf6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x30, 0xe3, 0x0f, 0x9e, 0x1c, 0x97, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x04, 0x33, 0x84, 0x03, 0xc1, 0x0c, 0x83, 0x83, 0xf7, 0x32, 0x62, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x04, 0x33, 0x2c, 0x06, 0x82, 0x19, 0xe6, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x98, 0x61, 0x32, 0x10, 0xcc, 0x30, 0x1b, 0x24, 0x03, 0xed, 0x97, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xc1, 0x0c, 0xbb, 0x81, 0x60, 0x86, 0xf5, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xc1, 0x0c, 0xc3, 0x81, 0x60, 0x86, 0xf1, 0xc1, 0x63, 0xda, 0x30, 0x8e, 0x6f, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0x69, 0x00, 0xe1, 0x38, 0x34, 0xc8, 0x36, 0x78, 0x1a, 0x4e, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x34, 0x43, 0x36, 0x10, 0xcd, 0xb0, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xa2, 0x19, 0x7f, 0xf0, 0xba, 0xc5, 0x8c, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x9a, 0x21, 0x1c, 0x88, 0x66, 0x18, 0x1c, 0xbc, 0x97, 0x11, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x9a, 0x61, 0x31, 0x10, 0xcd, 0x30, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xd1, 0x0c, 0x93, 0x81, 0x68, 0x86, 0xd9, 0xc1, 0x1a, 0x71, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x68, 0x86, 0xdd, 0x40, 0x34, 0xc3, 0x76, 0x90, 0x0c, 0x34, 0x97, 0x3b, 0x24, 0x97, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x41, 0xe2, 0xde, 0xcc, 0x71, 0x68, 0x90, 0x6d, 0xf0, 0x34, 0x9c, 0x8c, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x70, 0x86, 0x6c, 0x20, 0x9c, 0x61, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x84, 0x33, 0xfe, 0xe0, 0x59, 0xa2, 0x19, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x38, 0x43, 0x38, 0x10, 0xce, 0x30, 0x38, 0x78, 0x2f, 0x23, 0xc6, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x38, 0xc3, 0x62, 0x20, 0x9c, 0x61, 0x3c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xc2, 0x19, 0x26, 0x03, 0xe1, 0x0c, 0xb3, 0x83, 0x35, 0xe2, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xe1, 0x0c, 0xbb, 0x81, 0x70, 0x86, 0xed, 0xc1, 0x73, 0x39, 0x33, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x41, 0x4a, 0xe9, 0xcc, 0x71, 0x68, 0x90, 0x6d, 0xf0, 0x34, 0x9c, 0x8c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x9e, 0x21, 0x1b, 0x88, 0x67, 0x68, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xe2, 0x19, 0x7f, 0xf0, 0x68, 0xdc, 0x8c, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x9e, 0x21, 0x1c, 0x88, 0x67, 0xc8, 0x0f, 0xda, 0x10, 0x6f, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x9e, 0x61, 0x30, 0x10, 0xcf, 0x30, 0x3a, 0x68, 0x4b, 0xab, 0x69, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x3c, 0xc3, 0x6a, 0x20, 0x9e, 0xa1, 0x60, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xc4, 0x33, 0xcc, 0x06, 0xe2, 0x19, 0xa6, 0x07, 0x6b, 0xc4, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xe2, 0x19, 0xb6, 0x03, 0xf1, 0x0c, 0xfb, 0x83, 0xe7, 0x72, 0x66, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x64, 0xe7, 0x99, 0xe3, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0xb8, 0x61, 0x3a, 0x0f, 0x1a, 0xca, 0x89, 0x59, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xa1, 0x8f, 0x0e, 0x84, 0x3f, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0xf4, 0x21, 0x1b, 0x08, 0x7d, 0xc8, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xd0, 0xc7, 0x0f, 0x84, 0x3e, 0x54, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x78, 0x8f, 0x31, 0xc6, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x78, 0x9a, 0x74, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0xec, 0x43, 0x36, 0x10, 0xfb, 0x90, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xb1, 0x8f, 0x1f, 0x88, 0x7d, 0xa8, 0x18, 0x04, 0x1b, 0x3c, 0x31, 0x3b, 0xe3, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0xf0, 0x34, 0xe9, 0x8c, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xe0, 0x87, 0x6c, 0x20, 0xf8, 0x21, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x82, 0x1f, 0x3f, 0x10, 0xfc, 0x50, 0x31, 0x08, 0x36, 0x78, 0x62, 0x76, 0xc6, 0xa1, 0x13, 0xd1, 0x20, 0xdb, 0xe0, 0x69, 0xd2, 0x19, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0xf4, 0x43, 0x36, 0x10, 0xfd, 0x90, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xd1, 0x8f, 0x1f, 0x88, 0x7e, 0x68, 0x1a, 0x04, 0x1b, 0x3c, 0x31, 0x3b, 0xe3, 0xd0, 0xfd, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x60, 0x59, 0x18, 0xcc, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x88, 0x59, 0x74, 0x20, 0x78, 0x71, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x81, 0x0b, 0xd9, 0x40, 0xe0, 0xc2, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x08, 0x5c, 0xfc, 0xc1, 0x7b, 0xea, 0x33, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xc0, 0x85, 0x70, 0x20, 0x70, 0x61, 0x70, 0xb0, 0x9c, 0x2a, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x70, 0x61, 0x31, 0x10, 0xb8, 0xb0, 0x1a, 0x24, 0x03, 0xc5, 0xe6, 0x78, 0x7c, 0x1c, 0x3a, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0xaf, 0x89, 0xcf, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x88, 0x5c, 0xc8, 0x06, 0x22, 0x17, 0x66, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0xe4, 0xe2, 0x0f, 0x9e, 0x3c, 0xa0, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x44, 0x2e, 0x84, 0x03, 0x91, 0x0b, 0x83, 0x83, 0xe5, 0x54, 0x41, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x91, 0x0b, 0x8b, 0x81, 0xc8, 0x85, 0xd5, 0x20, 0x19, 0x58, 0xbd, 0x3b, 0x1e, 0x1f, 0x87, 0x0e, 0x4d, 0x81, 0x06, 0xd9, 0x06, 0xaf, 0x89, 0xcf, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x08, 0x5d, 0xc8, 0x06, 0x42, 0x17, 0x4a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xd0, 0xc5, 0x1f, 0x3c, 0x4d, 0x42, 0x63, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x08, 0x5d, 0x08, 0x07, 0x42, 0x17, 0x06, 0x07, 0xcb, 0xa9, 0x82, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x42, 0x17, 0x16, 0x03, 0xa1, 0x0b, 0x1d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x74, 0x61, 0x32, 0x10, 0xba, 0x30, 0x3b, 0x28, 0x79, 0x67, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x08, 0x5d, 0xd8, 0x0d, 0x84, 0x2e, 0x6c, 0x0f, 0x5e, 0x6a, 0x86, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x74, 0x61, 0x3c, 0x10, 0xba, 0x50, 0x31, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0xe8, 0xc2, 0x7a, 0x20, 0x74, 0xa1, 0xe1, 0xe0, 0x31, 0x6d, 0x18, 0xc7, 0xb7, 0xe3, 0xd0, 0x71, 0xe8, 0xd0, 0x89, 0x68, 0x90, 0x6d, 0xf0, 0x9a, 0xf8, 0x8c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x76, 0x21, 0x1b, 0x88, 0x5d, 0x28, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x62, 0x17, 0x7f, 0xf0, 0x08, 0x17, 0x8d, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x76, 0x21, 0x1c, 0x88, 0x5d, 0x18, 0x1c, 0x2c, 0xa7, 0x0a, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x88, 0x5d, 0x58, 0x0c, 0xc4, 0x2e, 0x74, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xd8, 0x85, 0xc9, 0x40, 0xec, 0xc2, 0xec, 0xa0, 0xe4, 0x9d, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x76, 0x61, 0x37, 0x10, 0xbb, 0xb0, 0x3d, 0x78, 0xa9, 0x19, 0xc6, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xd8, 0x85, 0xf1, 0x40, 0xec, 0x42, 0xc5, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xb1, 0x0b, 0xeb, 0x81, 0xd8, 0x85, 0x86, 0x83, 0xc7, 0xb4, 0x61, 0x1c, 0xdf, 0x8e, 0x43, 0xc7, 0xa1, 0x43, 0xf7, 0xa3, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0x58, 0x5c, 0x36, 0x48, 0x03, 0xc8, 0x68, 0xd6, 0x60, 0x8c, 0xa1, 0xb5, 0xe1, 0x14, 0xdb, 0x60, 0x4d, 0xc7, 0xd1, 0xc1, 0x4a, 0x59, 0xec, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0xd9, 0xe8, 0x40, 0xd8, 0xe3, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xc2, 0x1b, 0x3f, 0x10, 0xde, 0x90, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0xff, 0x2f, 0x1d, 0x8f, 0x0f, 0x69, 0xb8, 0x41, 0xb6, 0xc1, 0x73, 0x96, 0x34, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x02, 0x1c, 0x3f, 0x10, 0xe3, 0x90, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xf1, 0x8d, 0x3f, 0x78, 0x15, 0x95, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0xe2, 0x90, 0x0f, 0x84, 0x38, 0x0c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x10, 0x87, 0xec, 0xe0, 0x2d, 0x59, 0x1a, 0x07, 0xc3, 0x8b, 0x77, 0x90, 0x6d, 0xf0, 0x9c, 0x25, 0x8d, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x28, 0xc7, 0x0f, 0x84, 0x3a, 0x24, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x90, 0xe3, 0x0f, 0xde, 0xf4, 0xa5, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0xe8, 0x90, 0x0f, 0x04, 0x3a, 0x6c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x40, 0x87, 0xec, 0xe0, 0x2d, 0x64, 0x1a, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0x9e, 0xd9, 0x96, 0x71, 0xb0, 0xea, 0xfb, 0x67, 0x90, 0x6d, 0xf0, 0xd2, 0x2e, 0x8d, 0x41, 0xb6, 0xc1, 0x03, 0xc0, 0x34, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x48, 0x87, 0x7c, 0x20, 0xd2, 0x61, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x44, 0x3a, 0x64, 0x07, 0xcf, 0x63, 0xd3, 0x18, 0x7e, 0x43, 0x72, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x88, 0x74, 0x18, 0x1c, 0x3c, 0x8f, 0x4d, 0xe3, 0x70, 0xb4, 0x0f, 0xb2, 0x0d, 0x9e, 0xb3, 0xa4, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x04, 0x3b, 0x7e, 0x20, 0xea, 0x21, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x62, 0x1d, 0x7f, 0xf0, 0xbc, 0x3a, 0x8d, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x88, 0x87, 0x7c, 0x20, 0xe2, 0x61, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x44, 0x3c, 0x64, 0x07, 0xcf, 0xd2, 0xd3, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x22, 0x1e, 0x06, 0x03, 0x11, 0x0f, 0xa3, 0x83, 0xc7, 0xfb, 0x65, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x44, 0x3c, 0xac, 0x06, 0x22, 0x1e, 0xb6, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x44, 0x3c, 0xcc, 0x06, 0x22, 0x1e, 0xa6, 0x07, 0x8f, 0x69, 0xc3, 0x38, 0xbe, 0x1d, 0x87, 0x0e, 0x96, 0xf0, 0xff, 0x0c, 0xb2, 0x0d, 0x1e, 0x3d, 0xa7, 0x31, 0xc8, 0x36, 0x78, 0x8b, 0x9d, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0xc8, 0x43, 0x3e, 0x10, 0xf2, 0xb0, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x42, 0x1e, 0xb2, 0x83, 0x57, 0x32, 0x6a, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x78, 0x2e, 0x67, 0xc6, 0xc1, 0x7b, 0x0e, 0x33, 0x06, 0xd9, 0x06, 0x8f, 0x9e, 0xd3, 0x18, 0x64, 0x1b, 0xbc, 0xc5, 0x4e, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0xe6, 0x21, 0x1f, 0x88, 0x79, 0xd8, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x31, 0x0f, 0xd9, 0xc1, 0xe3, 0x29, 0x35, 0x06, 0xc1, 0x06, 0x4f, 0x7e, 0xd4, 0x38, 0x78, 0x88, 0x67, 0xc6, 0x20, 0xdb, 0xe0, 0xd1, 0x73, 0x1a, 0x83, 0x6c, 0x83, 0xb7, 0xd8, 0x69, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x41, 0x0f, 0xf9, 0x40, 0xd0, 0xc3, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x08, 0x7a, 0xc8, 0x0e, 0xde, 0xcb, 0xa9, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x04, 0x3d, 0x0c, 0x06, 0x82, 0x1e, 0x36, 0x07, 0x6d, 0x88, 0x37, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0xf4, 0x30, 0x1a, 0x08, 0x7a, 0x18, 0x1e, 0xb4, 0xa5, 0xd5, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0xe8, 0x61, 0x39, 0x10, 0xf4, 0xb0, 0x3e, 0x68, 0x80, 0x97, 0xe9, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x58, 0xe1, 0x93, 0x75, 0x1c, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0x28, 0xa8, 0xc5, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0xe0, 0x43, 0x36, 0x10, 0xf8, 0x50, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0xf8, 0x10, 0x0e, 0x04, 0x3e, 0xcc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x02, 0x1f, 0x16, 0x03, 0x81, 0x0f, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0xf0, 0x21, 0x3d, 0x78, 0x61, 0xad, 0xc6, 0x20, 0xd8, 0x60, 0x91, 0x58, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x55, 0x19, 0x34, 0x07, 0xc5, 0xa1, 0xc6, 0x71, 0x68, 0x90, 0x6d, 0xf0, 0xac, 0x58, 0x8d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0xf0, 0x61, 0x39, 0x10, 0xf8, 0xb0, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x02, 0x1f, 0x56, 0x07, 0xaf, 0xef, 0xd5, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0xf0, 0x52, 0x33, 0x8c, 0x83, 0x81, 0x5e, 0x36, 0xc8, 0x36, 0x78, 0xb8, 0xab, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0xf8, 0xd0, 0x31, 0x10, 0xf8, 0xd0, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x04, 0x3e, 0xec, 0x0f, 0x5e, 0x57, 0xac, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0xcc, 0xcf, 0xf1, 0xf8, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0x58, 0x1c, 0x08, 0xf6, 0x06, 0x45, 0xb5, 0xe0, 0xc1, 0xe3, 0x8f, 0x34, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x48, 0xa3, 0x03, 0x61, 0x8d, 0x1b, 0x76, 0xe1, 0x16, 0x03, 0xff, 0x4c, 0xae, 0x4e, 0x3c, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0xa4, 0xf1, 0x03, 0x41, 0x0d, 0xe9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x48, 0x43, 0x36, 0x10, 0xd2, 0x30, 0x18, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xb1, 0xcf, 0x1a, 0x1b, 0x3c, 0xf6, 0x59, 0xe3, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0xde, 0x0f, 0xad, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xc4, 0x34, 0x64, 0x03, 0x41, 0x0d, 0xc9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0xd3, 0x90, 0x0f, 0xc4, 0x34, 0x54, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xc4, 0x34, 0x0c, 0x06, 0x62, 0x1a, 0xba, 0x86, 0x5d, 0xb8, 0x0d, 0x12, 0x3b, 0x9c, 0x0f, 0x8d, 0x04, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x62, 0x1a, 0x26, 0x03, 0x31, 0x0d, 0xb3, 0x61, 0x17, 0x6e, 0x43, 0x23, 0xc1, 0x83, 0xc4, 0x0e, 0xe7, 0x0d, 0x12, 0x3b, 0x9c, 0x0f, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x41, 0x92, 0x37, 0xf6, 0xa1, 0x91, 0xe0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x4c, 0xc3, 0x6e, 0x20, 0xa6, 0x61, 0x3b, 0xec, 0xc2, 0x6d, 0x68, 0x24, 0x78, 0x90, 0xe4, 0x8d, 0xbd, 0x41, 0x92, 0x37, 0xf6, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x16, 0x83, 0x70, 0x1f, 0x1a, 0x09, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xc4, 0x34, 0x8c, 0x07, 0x62, 0x1a, 0x0a, 0x86, 0x5d, 0xb8, 0x0d, 0x8d, 0x04, 0x0f, 0x1e, 0xbd, 0xae, 0xb1, 0xc1, 0xa3, 0xd7, 0x35, 0x0e, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x18, 0x44, 0xfb, 0xd0, 0x48, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0xa6, 0xa1, 0x61, 0x20, 0xa6, 0xa1, 0x65, 0xd8, 0x85, 0xdb, 0xd0, 0x48, 0xf0, 0xe0, 0x9d, 0xf1, 0x1a, 0x1b, 0xbc, 0x33, 0x5e, 0xe3, 0x70, 0x8a, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x31, 0x0d, 0x35, 0x03, 0x31, 0x0d, 0x55, 0xc3, 0x2e, 0xdc, 0x86, 0x46, 0x82, 0x63, 0x10, 0xec, 0x0d, 0x5e, 0xa4, 0xaf, 0x71, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0xcf, 0xd8, 0xd6, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x62, 0x1a, 0xda, 0x06, 0x62, 0x1a, 0x1a, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x98, 0x86, 0xb2, 0x83, 0x27, 0xf9, 0x6b, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0xd5, 0xe6, 0x78, 0x7c, 0x68, 0x01, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x44, 0x35, 0x7e, 0x20, 0xaa, 0xa1, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0xaa, 0x21, 0x18, 0x88, 0x6a, 0xe8, 0x18, 0x76, 0xe1, 0x36, 0x48, 0xec, 0x70, 0x3e, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0xaa, 0x21, 0x1a, 0x88, 0x6a, 0x88, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x48, 0xec, 0x70, 0x3e, 0x78, 0x30, 0xb9, 0xc6, 0xb0, 0x0b, 0xb7, 0x41, 0x92, 0x37, 0xf6, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x51, 0x0d, 0xf9, 0x40, 0x54, 0xc3, 0x66, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x24, 0x6f, 0xec, 0x83, 0x57, 0xaa, 0x6b, 0x0c, 0xbb, 0x70, 0x1b, 0x3c, 0x7a, 0x5d, 0xe3, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xa8, 0x86, 0xd1, 0x40, 0x54, 0xc3, 0x70, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x47, 0xaf, 0x6b, 0x1c, 0xbc, 0x0a, 0x5e, 0x63, 0xd8, 0x85, 0xdb, 0xe0, 0x9d, 0xf1, 0x1a, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x44, 0x35, 0x2c, 0x07, 0xa2, 0x1a, 0xd6, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0x33, 0x5e, 0xe3, 0xe0, 0x25, 0xf6, 0x1a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x54, 0xc3, 0x7c, 0x20, 0xaa, 0xa1, 0x62, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x17, 0xe9, 0x6b, 0x1c, 0x3c, 0x54, 0x5f, 0x63, 0x90, 0x6d, 0xf0, 0xb8, 0x81, 0x8d, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xa8, 0x86, 0x96, 0x81, 0xa8, 0x86, 0xa6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0xaa, 0xa1, 0xe4, 0xe0, 0x81, 0x24, 0x1b, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0xc0, 0x79, 0x73, 0x3c, 0x3e, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0x3c, 0x6e, 0x60, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x88, 0x6a, 0xe8, 0x1a, 0x88, 0x6a, 0xe8, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xa2, 0x1a, 0xaa, 0x0e, 0x1e, 0xc3, 0xb2, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0xdc, 0x37, 0xc7, 0xe3, 0x43, 0x0b, 0xb0, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x0a, 0x82, 0xc5, 0x0d, 0xd6, 0x74, 0x1c, 0x1d, 0x04, 0xc0, 0xfd, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x88, 0x7b, 0xc8, 0x06, 0xe2, 0x1e, 0x86, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x71, 0x0f, 0xe9, 0x40, 0xdc, 0xc3, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x88, 0x7b, 0x08, 0x0f, 0xde, 0x7d, 0xb3, 0x31, 0x08, 0x36, 0x78, 0xf2, 0xa3, 0xc6, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x78, 0xed, 0xcc, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0xf7, 0xb0, 0x19, 0x88, 0x7b, 0xd8, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x71, 0x0f, 0x93, 0x83, 0xc7, 0xfa, 0x6c, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x83, 0x33, 0xc7, 0xe3, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x8c, 0x45, 0xc8, 0x06, 0xc6, 0x22, 0xac, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xc6, 0x22, 0x0c, 0x06, 0xc6, 0x22, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xb1, 0x08, 0xe1, 0xc1, 0x13, 0x93, 0x36, 0x06, 0xc1, 0x06, 0x8b, 0xc4, 0x82, 0x0e, 0xd6, 0x25, 0x46, 0x0d, 0xb2, 0x0d, 0x1e, 0x55, 0xb4, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x8c, 0x45, 0x58, 0x0e, 0x8c, 0x45, 0x18, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x63, 0x11, 0x56, 0x07, 0x6f, 0x84, 0xda, 0x38, 0x68, 0xa5, 0xb3, 0xe9, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x16, 0x37, 0x78, 0xce, 0x41, 0xc6, 0xc1, 0x18, 0x43, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x23, 0x11, 0x1d, 0x98, 0x8a, 0xb8, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xc7, 0xe4, 0xea, 0xc8, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x46, 0x22, 0x7e, 0x60, 0x24, 0xc2, 0x74, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x60, 0x24, 0x42, 0x30, 0x30, 0x12, 0x21, 0x1d, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x21, 0x59, 0x1b, 0x1b, 0x3c, 0x24, 0x6b, 0xe3, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0xde, 0xa6, 0xb5, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x30, 0x12, 0x21, 0x1f, 0x18, 0x89, 0xb0, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x46, 0x22, 0xc4, 0x07, 0x8f, 0x1f, 0xdb, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0x90, 0xf2, 0x71, 0x71, 0x68, 0x0a, 0x34, 0xc8, 0x36, 0x78, 0x9b, 0xd6, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x30, 0x12, 0x61, 0x35, 0x30, 0x12, 0x61, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x8c, 0x44, 0x18, 0x1d, 0xbc, 0x6a, 0x6d, 0x63, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0x7b, 0x1c, 0x34, 0x0e, 0x2d, 0xc0, 0x86, 0xdd, 0xe0, 0x8d, 0x05, 0x19, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x33, 0x11, 0x3f, 0x30, 0x13, 0x61, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x30, 0x13, 0x21, 0x18, 0x98, 0x89, 0x90, 0x0e, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0xde, 0x82, 0x8c, 0x0d, 0xde, 0x5b, 0x90, 0x71, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x4f, 0x88, 0xdb, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x66, 0x22, 0x0c, 0x06, 0x66, 0x22, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x99, 0x08, 0xf1, 0xc1, 0x13, 0xf5, 0x36, 0x06, 0xc1, 0x06, 0x8b, 0xc4, 0x82, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x0c, 0xbc, 0x3a, 0x3b, 0xe5, 0x90, 0xaf, 0x3d, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x43, 0x11, 0x3f, 0x30, 0x14, 0x61, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x30, 0x14, 0x21, 0x18, 0x18, 0x8a, 0x90, 0x0e, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0x90, 0x83, 0x8c, 0x0d, 0x1e, 0x72, 0x90, 0x71, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x4f, 0x07, 0xdc, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x86, 0x22, 0x0c, 0x06, 0x86, 0x22, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xa1, 0x08, 0xf1, 0xc1, 0xd3, 0x14, 0x37, 0x06, 0xc1, 0x06, 0x0f, 0x3b, 0xd3, 0x38, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x33, 0x12, 0xb2, 0x81, 0x19, 0x09, 0xb3, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x60, 0x46, 0x42, 0x38, 0x30, 0x23, 0x61, 0x70, 0xb0, 0x9c, 0x2a, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x60, 0x46, 0xc2, 0x62, 0x60, 0x46, 0xc2, 0x6a, 0x90, 0x0c, 0x9c, 0x3e, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x15, 0x04, 0x8b, 0x03, 0x5f, 0x67, 0xb7, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x3d, 0xd1, 0x41, 0x61, 0xdc, 0xb0, 0x1b, 0x14, 0x06, 0x8f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xb2, 0xf8, 0x41, 0x59, 0x98, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xca, 0x42, 0x30, 0x28, 0x0b, 0xd9, 0x41, 0x61, 0xf2, 0x38, 0xc8, 0x36, 0x78, 0x1a, 0xe8, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x28, 0x0b, 0xf1, 0xa0, 0x2c, 0x2c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x59, 0x08, 0x0f, 0xde, 0x7d, 0xba, 0x31, 0x08, 0x36, 0x58, 0x24, 0x16, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x61, 0xea, 0x17, 0x87, 0x7c, 0xed, 0x71, 0x68, 0xd8, 0x0d, 0xd6, 0xd2, 0x70, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xda, 0xe2, 0x07, 0x6d, 0x61, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x68, 0x0b, 0xc1, 0xa0, 0x2d, 0x84, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xa4, 0x85, 0x66, 0x6f, 0x90, 0x16, 0x9a, 0x7d, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x8f, 0x72, 0xdd, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x6d, 0x21, 0x1f, 0xb4, 0x85, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x68, 0x0b, 0xe9, 0xc1, 0xa3, 0x6e, 0x37, 0x06, 0xc1, 0x06, 0x8b, 0xc4, 0x82, 0x0e, 0x16, 0x56, 0x46, 0x0d, 0xbb, 0x41, 0xe1, 0x99, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0xa8, 0x8b, 0x1f, 0xd4, 0x85, 0xc9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xa0, 0x2e, 0x04, 0x83, 0xba, 0x90, 0x1d, 0x14, 0xbc, 0x89, 0x83, 0x6c, 0x83, 0x67, 0xf1, 0x6e, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xba, 0x10, 0x0f, 0xea, 0xc2, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xd4, 0x85, 0xf0, 0xe0, 0xcd, 0xc3, 0x1b, 0x07, 0xad, 0x74, 0x36, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xbe, 0xf8, 0x41, 0x5f, 0x98, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xfa, 0x42, 0x30, 0xe8, 0x0b, 0xd9, 0x41, 0x69, 0xb1, 0x38, 0xc8, 0x36, 0x78, 0xda, 0xf1, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0xe8, 0x0b, 0xf1, 0xa0, 0x2f, 0x2c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x5f, 0x08, 0x0f, 0xde, 0xed, 0xbc, 0x31, 0x08, 0x36, 0x58, 0x24, 0x16, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xb1, 0xb3, 0xcc, 0x21, 0x5f, 0x7b, 0x1c, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0xaf, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x77, 0xc8, 0x06, 0xdd, 0xa1, 0x60, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x74, 0x87, 0x70, 0xd0, 0x1d, 0x06, 0x83, 0x64, 0xa0, 0x54, 0x1d, 0x04, 0x39, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xee, 0xb0, 0x18, 0x74, 0x87, 0xd5, 0x20, 0x19, 0x30, 0xde, 0x97, 0x8e, 0xc7, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x74, 0x87, 0xd9, 0xa0, 0x3b, 0x4c, 0x0f, 0x5e, 0xde, 0x91, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0xd0, 0x1d, 0xb6, 0x83, 0xee, 0xb0, 0x3f, 0x78, 0xa9, 0x19, 0xc6, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x71, 0x99, 0x83, 0x17, 0x72, 0x6e, 0xb4, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x25, 0x21, 0x1b, 0x94, 0x84, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xa0, 0x24, 0x84, 0x83, 0x92, 0x30, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0xce, 0xa5, 0xe3, 0xf1, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x78, 0xa3, 0xfa, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x28, 0x09, 0x9b, 0x41, 0x49, 0xd8, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0x92, 0xb0, 0x38, 0x78, 0xe0, 0xfc, 0xc6, 0x20, 0xd8, 0xe0, 0x2d, 0xc1, 0x1a, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x14, 0x87, 0x6c, 0x50, 0x1c, 0x16, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x86, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x14, 0x87, 0x70, 0x50, 0x1c, 0x06, 0x07, 0x8f, 0x69, 0xc3, 0x38, 0xbe, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x6c, 0x43, 0x36, 0xd8, 0x86, 0xd9, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0xd8, 0x86, 0x70, 0xb0, 0x0d, 0x83, 0x41, 0x32, 0x90, 0x5e, 0x3a, 0x1e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xb6, 0x61, 0x31, 0xd8, 0x86, 0xd5, 0x20, 0xd8, 0x60, 0x91, 0x58, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x81, 0x57, 0x67, 0x97, 0x1c, 0x52, 0x35, 0xc7, 0xa1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0xa0, 0x41, 0x2e, 0x97, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x68, 0x0c, 0xd9, 0xa0, 0x31, 0xcc, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x63, 0x08, 0x07, 0x8d, 0x61, 0x70, 0xf0, 0x98, 0x36, 0x8c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x63, 0x58, 0x0c, 0x1a, 0xc3, 0xea, 0xe0, 0xb9, 0x9c, 0x19, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0xf1, 0xe0, 0x41, 0xe9, 0x1b, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0xd0, 0x11, 0xb2, 0x41, 0x47, 0x28, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x1d, 0x21, 0x1c, 0x74, 0x84, 0xc1, 0xc1, 0x4b, 0xb7, 0x37, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x74, 0x84, 0xc5, 0xa0, 0x23, 0xac, 0x0e, 0x5e, 0xde, 0x91, 0xb1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x47, 0x98, 0x0d, 0x3a, 0xc2, 0x74, 0x90, 0x0c, 0xbc, 0xbf, 0x74, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0xe8, 0x08, 0xdb, 0x41, 0x47, 0xd8, 0x0f, 0x92, 0x41, 0xd1, 0xf1, 0xf8, 0x38, 0x74, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x14, 0x44, 0x07, 0x0d, 0xa1, 0x64, 0x10, 0x6c, 0x68, 0x3b, 0xb3, 0x38, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xa0, 0x21, 0x7a, 0xf0, 0x84, 0x19, 0x8e, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x43, 0x08, 0x06, 0x0d, 0x61, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x1a, 0x62, 0x0e, 0x9e, 0x96, 0xc3, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x1a, 0x42, 0x32, 0x68, 0x08, 0xe9, 0x20, 0x19, 0x18, 0xaa, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x68, 0x08, 0xf1, 0xa0, 0x21, 0x4c, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x78, 0x58, 0x0d, 0xc7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x68, 0x08, 0xc3, 0x41, 0x43, 0xe8, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x0d, 0x61, 0x74, 0xf0, 0xc0, 0x23, 0x8e, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0xd0, 0x10, 0x96, 0x83, 0x86, 0x30, 0x1e, 0x24, 0x03, 0x6d, 0xfa, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x43, 0x58, 0x0f, 0x1a, 0x42, 0xc1, 0x20, 0xd8, 0xa0, 0x9d, 0x91, 0xfb, 0x83, 0xa5, 0x7b, 0x53, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0x86, 0xd0, 0x30, 0x68, 0x08, 0x15, 0x87, 0xfe, 0x54, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xa0, 0x3a, 0x64, 0x83, 0xea, 0x90, 0x0e, 0x82, 0x0d, 0x16, 0x89, 0x05, 0x1d, 0x3c, 0x24, 0xff, 0xe2, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xa0, 0x36, 0x64, 0x83, 0xda, 0x90, 0x0f, 0x82, 0x0d, 0x16, 0x89, 0x05, 0x1d, 0xac, 0xff, 0x8c, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x28, 0x0d, 0xd9, 0xa0, 0x34, 0x2c, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x69, 0x08, 0x07, 0xa5, 0x61, 0x70, 0x50, 0xf2, 0xce, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x28, 0x0d, 0x8b, 0x41, 0x69, 0xd8, 0x1c, 0xbc, 0xc9, 0x8b, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x50, 0x1a, 0x46, 0x83, 0xd2, 0x30, 0x3c, 0x68, 0x4b, 0xab, 0xe9, 0x38, 0x74, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x2c, 0xce, 0xc1, 0x73, 0xd2, 0x37, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xa0, 0x39, 0x64, 0x83, 0xe6, 0x30, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x34, 0x87, 0xc1, 0xa0, 0x39, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x73, 0x08, 0x0f, 0xde, 0xbd, 0xc7, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0xe4, 0xef, 0x8e, 0xc7, 0x87, 0x34, 0xdc, 0x20, 0xdb, 0xe0, 0xe1, 0x77, 0x1c, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xa0, 0x39, 0x2c, 0x07, 0xcd, 0x61, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x9a, 0xc3, 0xea, 0xe0, 0x49, 0x83, 0x1c, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x40, 0x51, 0x3a, 0x1e, 0x1f, 0x3a, 0x68, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xad, 0x21, 0x1b, 0xb4, 0x86, 0xf1, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x68, 0x0d, 0xe1, 0xa0, 0x35, 0x0c, 0x0e, 0xde, 0xcb, 0x88, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x68, 0x0d, 0x8b, 0x41, 0x6b, 0xd8, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x6b, 0x98, 0x0c, 0x5a, 0xc3, 0xea, 0xe0, 0x05, 0xab, 0x18, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xd6, 0x30, 0x1b, 0xb4, 0x86, 0xe9, 0xc1, 0xcb, 0x3b, 0x32, 0x8e, 0x43, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x68, 0x09, 0xd9, 0xa0, 0x25, 0xc4, 0x07, 0x6d, 0xa0, 0x37, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xeb, 0xe8, 0x60, 0x1e, 0x4a, 0x06, 0xc1, 0x86, 0xb6, 0x33, 0x8b, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xe6, 0xd1, 0x83, 0x77, 0x87, 0x72, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xe6, 0x21, 0x18, 0xcc, 0xc3, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xcc, 0x63, 0x0e, 0x1e, 0x83, 0xca, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xe6, 0x21, 0x19, 0xcc, 0x43, 0x7a, 0xf0, 0xbe, 0x1f, 0x8e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0x3c, 0xc4, 0x83, 0x79, 0x98, 0x1c, 0x52, 0x07, 0xc7, 0xa1, 0x43, 0x1a, 0x6e, 0x90, 0x6d, 0xf0, 0x18, 0x52, 0x8e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x30, 0x0f, 0xc3, 0xc1, 0x3c, 0x74, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0x79, 0x18, 0x1d, 0x3c, 0xb8, 0x96, 0x63, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xcc, 0xc3, 0x72, 0x30, 0x0f, 0xe3, 0x83, 0xc7, 0x36, 0x71, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x98, 0x87, 0xf5, 0x60, 0x1e, 0x0a, 0x0e, 0xde, 0x31, 0xc5, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x98, 0x87, 0x86, 0xc1, 0x3c, 0x54, 0x1c, 0xdf, 0x8e, 0x43, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xa0, 0x33, 0x64, 0x83, 0xce, 0x90, 0x1f, 0xbc, 0x6d, 0x8c, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x16, 0x0f, 0x9e, 0x7f, 0xa4, 0xb1, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xbd, 0x21, 0x1b, 0xf4, 0x86, 0x9a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x6f, 0x18, 0x0c, 0x7a, 0xc3, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xf4, 0x86, 0xf0, 0xe0, 0x2d, 0xd0, 0x1c, 0x83, 0x60, 0x83, 0x77, 0x75, 0x64, 0x1c, 0xd2, 0x70, 0x83, 0x6c, 0x83, 0xb7, 0x30, 0x73, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x7a, 0xc3, 0x72, 0xd0, 0x1b, 0xc6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xa0, 0x37, 0xac, 0x0e, 0x9e, 0x6d, 0xcd, 0x31, 0x08, 0x36, 0x58, 0x24, 0x16, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x61, 0xea, 0x17, 0x87, 0x1e, 0x42, 0xc7, 0xa1, 0x41, 0xb6, 0xc1, 0x5b, 0x98, 0x39, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x41, 0x6f, 0x68, 0x18, 0xf4, 0x86, 0x96, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0xd0, 0x1b, 0xd6, 0x07, 0x8f, 0xf8, 0xe6, 0x18, 0x04, 0x1b, 0x2c, 0x12, 0x0b, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xf0, 0x86, 0xbf, 0x8d, 0x43, 0xc7, 0xb0, 0xe3, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x50, 0x19, 0xb2, 0x41, 0x65, 0x68, 0x18, 0x04, 0x1b, 0xda, 0xce, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xca, 0x30, 0x3a, 0x78, 0xc8, 0x39, 0xc7, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x54, 0x86, 0xd5, 0xa0, 0x32, 0x2c, 0x0f, 0x1a, 0x49, 0xb2, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x50, 0x19, 0xa6, 0x83, 0xca, 0x30, 0x1f, 0x24, 0x03, 0x02, 0x7d, 0xe9, 0x90, 0x5c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0xa8, 0x0c, 0xfb, 0x41, 0x65, 0x28, 0x38, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0xd8, 0x90, 0x0d, 0x1b, 0xf2, 0x83, 0x17, 0xe9, 0x6b, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x4e, 0x44, 0x07, 0x2f, 0xc2, 0x60, 0x10, 0x6c, 0x68, 0x3b, 0xb3, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x5e, 0x44, 0x0f, 0x9e, 0xa6, 0xcf, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x2f, 0x62, 0x06, 0x2f, 0x42, 0x70, 0xd0, 0x48, 0x92, 0xfd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0x17, 0x21, 0x19, 0xbc, 0x08, 0xe9, 0x20, 0x19, 0x70, 0x76, 0x97, 0x3b, 0x64, 0x2b, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x5e, 0x84, 0x78, 0xf0, 0x22, 0xe4, 0x87, 0xd4, 0xc1, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0x1b, 0x21, 0x1b, 0xdc, 0x08, 0x8b, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x6e, 0x84, 0x70, 0x70, 0x23, 0x0c, 0x0e, 0x4a, 0xde, 0x99, 0xe3, 0xdb, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0x20, 0x97, 0xcb, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xfc, 0x08, 0xd9, 0xe0, 0x47, 0xd8, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0x1f, 0x21, 0x1c, 0xfc, 0x08, 0x83, 0x41, 0x32, 0x30, 0x57, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x47, 0x58, 0x0c, 0x7e, 0x84, 0xd5, 0xc1, 0x73, 0x39, 0x33, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x7e, 0x84, 0xd9, 0xe0, 0x47, 0x98, 0x1e, 0xba, 0x98, 0x1c, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xf3, 0x21, 0x1b, 0x9c, 0x0f, 0xf3, 0xe1, 0x57, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x9c, 0x0f, 0xf1, 0xe0, 0x7c, 0xc8, 0x0f, 0x89, 0xa9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x70, 0x3e, 0x0c, 0x06, 0xe7, 0xc3, 0x7a, 0xf8, 0x0d, 0xc9, 0xa5, 0xe1, 0x17, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xf3, 0x61, 0x31, 0x38, 0x1f, 0x56, 0x07, 0xef, 0x65, 0xc4, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x9c, 0x0f, 0xb3, 0xc1, 0xf9, 0x30, 0x1e, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x70, 0x3e, 0xec, 0x06, 0xe7, 0xc3, 0xf6, 0xe0, 0xbd, 0x8c, 0x18, 0xc7, 0xb7, 0xe3, 0xd0, 0xf1, 0xed, 0xd0, 0x13, 0xf5, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x61, 0x74, 0xf0, 0x32, 0x6e, 0x10, 0x6c, 0x68, 0x3b, 0xb3, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x17, 0xa3, 0x07, 0xcf, 0xbf, 0xe9, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x27, 0xe3, 0x07, 0x27, 0x43, 0x70, 0x68, 0x24, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x1b, 0xbc, 0x31, 0xa7, 0x63, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0xe1, 0x16, 0x0f, 0x96, 0x0f, 0xfe, 0x1e, 0xa2, 0x79, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x17, 0xe3, 0x07, 0x1f, 0x43, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x2e, 0x86, 0x6c, 0x70, 0x31, 0xcc, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x17, 0x43, 0x38, 0xb8, 0x18, 0x16, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0x0e, 0xa8, 0x63, 0x83, 0xc7, 0x01, 0x75, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x63, 0x88, 0x3a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xc5, 0x30, 0x1a, 0x5c, 0x0c, 0xab, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x70, 0x31, 0x4c, 0x0e, 0x1e, 0xd7, 0xd4, 0x71, 0x18, 0x97, 0x41, 0xb6, 0xc1, 0xdb, 0x77, 0x3a, 0x0e, 0xfd, 0x06, 0x0f, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xe3, 0x15, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xc2, 0x11, 0x1d, 0x08, 0x4f, 0xdc, 0x20, 0xd8, 0xd0, 0x05, 0x67, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x44, 0x25, 0x7a, 0xf0, 0x48, 0xaa, 0x8e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x3a, 0xf1, 0x03, 0xd1, 0x09, 0xa3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xe8, 0x84, 0x60, 0x20, 0x3a, 0x21, 0x1d, 0x03, 0xff, 0x2c, 0xcd, 0xae, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xa2, 0x13, 0xe2, 0x81, 0xe8, 0x84, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0x9d, 0x90, 0x1f, 0x3c, 0xfc, 0xab, 0xe3, 0xd0, 0x49, 0x6d, 0x71, 0x10, 0x2c, 0xc8, 0x36, 0x78, 0x8c, 0x55, 0xc7, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x68, 0x75, 0x72, 0xec, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xa1, 0x89, 0x1f, 0x08, 0x4d, 0xa8, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x08, 0x4d, 0x08, 0x06, 0x42, 0x13, 0xd2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xde, 0x4b, 0xd6, 0xb1, 0xc1, 0x7b, 0xc9, 0x3a, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x09, 0x66, 0x1d, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xa1, 0x09, 0xf9, 0x40, 0x68, 0xc2, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x08, 0x4d, 0x88, 0x0f, 0xde, 0xf7, 0xd6, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0xe0, 0xd0, 0x24, 0x7c, 0x68, 0x0a, 0x34, 0xc8, 0x36, 0x78, 0x82, 0x59, 0xc7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0x9a, 0xb0, 0x1c, 0x08, 0x4d, 0x68, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x42, 0x13, 0x46, 0x07, 0x8f, 0xb6, 0xeb, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x84, 0x26, 0x8c, 0x07, 0x42, 0x13, 0x0a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x68, 0x42, 0xdd, 0x40, 0x68, 0x42, 0xdf, 0xf0, 0x1b, 0xdf, 0x0e, 0xa9, 0x83, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x6d, 0xf0, 0xc0, 0xbe, 0x8e, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0xc7, 0xb7, 0x43, 0xa3, 0x96, 0x61, 0x17, 0x76, 0xe1, 0x36, 0x78, 0x4c, 0x57, 0xc7, 0x41, 0x48, 0x81, 0x6f, 0x88, 0xe1, 0x70, 0x8b, 0x07, 0x2d, 0x9c, 0x8e, 0x1f, 0x84, 0x14, 0xf8, 0xc1, 0x58, 0x18, 0x3d, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x5a, 0x80, 0x0d, 0xbb, 0x70, 0x1b, 0xbc, 0xa9, 0xb0, 0xe3, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0xd8, 0xc4, 0x0f, 0xc4, 0x26, 0x4c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x62, 0x13, 0x82, 0x81, 0xd8, 0x84, 0x74, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x37, 0x15, 0x76, 0x6c, 0xf0, 0xa6, 0xc2, 0x8e, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x51, 0x62, 0xc7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x6c, 0x42, 0x3e, 0x10, 0x9b, 0xb0, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x62, 0x13, 0xe2, 0x83, 0xd7, 0x4a, 0x76, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0xc9, 0xbb, 0x43, 0x72, 0xe9, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0xf0, 0xa2, 0xc4, 0x8e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x36, 0x61, 0x35, 0x10, 0x9b, 0xb0, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x62, 0x13, 0x46, 0x07, 0xaf, 0xd3, 0xec, 0x18, 0x04, 0x1b, 0xe2, 0x7f, 0x68, 0x01, 0x36, 0xec, 0xc2, 0x2d, 0x1e, 0x34, 0xec, 0x73, 0x79, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x70, 0xe2, 0x07, 0x82, 0x13, 0x46, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xc1, 0x09, 0xc1, 0x40, 0x70, 0x42, 0x3a, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x6b, 0x3d, 0x3b, 0x36, 0x78, 0xad, 0x67, 0xc7, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x3c, 0xfc, 0xb3, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x08, 0x4e, 0xc8, 0x07, 0x82, 0x13, 0x36, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x70, 0x42, 0x7c, 0xf0, 0xa4, 0xd4, 0x8e, 0x43, 0x03, 0xca, 0x41, 0xb6, 0xc1, 0x3b, 0xb1, 0x3a, 0x16, 0x64, 0x1b, 0xbc, 0x60, 0xab, 0x63, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xc7, 0x74, 0x75, 0x6c, 0xf0, 0x98, 0xae, 0x8e, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x27, 0x56, 0xc7, 0x20, 0xdb, 0xe0, 0x99, 0x60, 0x1d, 0x83, 0x6c, 0x83, 0xb7, 0x78, 0x75, 0x1c, 0x5a, 0xba, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xbf, 0xd1, 0xc1, 0xef, 0x90, 0x0d, 0x82, 0x0d, 0x6d, 0x67, 0x16, 0x07, 0xc1, 0xe2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x70, 0x58, 0x0c, 0x0e, 0x87, 0xc9, 0x21, 0x86, 0x87, 0x53, 0x6c, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x1e, 0x47, 0x0f, 0x1e, 0x5c, 0xdb, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x0e, 0x47, 0x0f, 0x1e, 0x5c, 0xdb, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x0e, 0xc7, 0x0f, 0x0e, 0x87, 0xd1, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xc3, 0x21, 0x1a, 0x1c, 0x0e, 0xd9, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x70, 0x08, 0x07, 0x87, 0xc3, 0x66, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xc1, 0x8b, 0x6e, 0x3b, 0x8e, 0xc7, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xee, 0x85, 0x6c, 0x70, 0x2f, 0x2c, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0xb8, 0x17, 0xc2, 0xc1, 0xbd, 0x30, 0x38, 0x78, 0x4c, 0x1b, 0xc6, 0xf1, 0xed, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x60, 0xf0, 0x1e, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xd1, 0x90, 0x0d, 0x8e, 0x86, 0xae, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0xf0, 0x33, 0x64, 0x07, 0x6f, 0xa2, 0xee, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x47, 0x43, 0x38, 0x38, 0x1a, 0x06, 0x07, 0x25, 0xef, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xa3, 0x61, 0x31, 0x38, 0x1a, 0x56, 0x83, 0x64, 0x40, 0xe1, 0xdf, 0x77, 0xc8, 0x56, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x1c, 0x0d, 0xb3, 0xc1, 0xd1, 0x50, 0x35, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x47, 0xc3, 0x6e, 0x70, 0x34, 0x6c, 0x0f, 0x1e, 0x82, 0xd1, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x68, 0x18, 0x0f, 0x8e, 0x86, 0xf5, 0x21, 0x75, 0x70, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x38, 0x1a, 0xe6, 0x83, 0xa3, 0xa1, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x8e, 0x86, 0xfd, 0xe0, 0x68, 0xe8, 0x38, 0x58, 0x4e, 0x15, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x38, 0x1a, 0x4a, 0x06, 0x47, 0x43, 0xd1, 0x20, 0x19, 0x48, 0xd7, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x92, 0xdb, 0x8e, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x78, 0x1b, 0xb2, 0xc1, 0xdb, 0xf0, 0x65, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xbc, 0x0d, 0xe1, 0xe0, 0x6d, 0x18, 0x0c, 0x92, 0x81, 0x52, 0x77, 0x3c, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xbc, 0x0d, 0x8b, 0xc1, 0xdb, 0xb0, 0x3a, 0x74, 0x31, 0x39, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x70, 0x33, 0x64, 0x83, 0x9b, 0x61, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0xb8, 0x19, 0x16, 0x83, 0x9b, 0x61, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x6e, 0x86, 0xf0, 0xe0, 0xa5, 0x08, 0x1e, 0x07, 0xef, 0x3b, 0xc1, 0x18, 0x64, 0x1b, 0xbc, 0x93, 0xc0, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xdc, 0x0c, 0xbb, 0xc1, 0xcd, 0xb0, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x37, 0xc3, 0xec, 0xe0, 0xc1, 0x0e, 0x1e, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x80, 0xe9, 0xfe, 0xdf, 0x77, 0xc8, 0x56, 0x1c, 0x3a, 0x68, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x8b, 0xb3, 0xc1, 0x93, 0xba, 0x3a, 0x0e, 0x9a, 0xe5, 0x72, 0x59, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xa7, 0x21, 0x1b, 0x3c, 0x0d, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xd3, 0x90, 0x0e, 0x9e, 0x86, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x78, 0x1a, 0xc2, 0x83, 0xb7, 0x6a, 0x78, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x78, 0x7b, 0x0d, 0xc6, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x78, 0xaa, 0x85, 0xc7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x78, 0x1a, 0x36, 0x83, 0xa7, 0x61, 0x37, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x9e, 0x86, 0xc9, 0xc1, 0xcb, 0x43, 0x3c, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x1d, 0xb4, 0xc3, 0xc2, 0x74, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x18, 0x21, 0x1b, 0x08, 0x46, 0xc8, 0x07, 0xc1, 0x06, 0x6f, 0x09, 0xd6, 0x38, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x70, 0x35, 0x64, 0x83, 0xab, 0x61, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0xb8, 0x1a, 0xd2, 0xc1, 0xd5, 0xb0, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x57, 0x43, 0x78, 0xf0, 0xc0, 0x18, 0x8f, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x20, 0x79, 0x77, 0x3c, 0x3e, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0xef, 0x6b, 0xf1, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x57, 0xc3, 0x66, 0x70, 0x35, 0xec, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xd5, 0x30, 0x39, 0x78, 0x3e, 0x8e, 0xc7, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0x93, 0x3c, 0xef, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0x4b, 0x6e, 0x3b, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x6c, 0xc8, 0x06, 0x67, 0xc3, 0x8d, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x70, 0x36, 0x84, 0x83, 0xb3, 0x61, 0x70, 0xf0, 0xc6, 0xfe, 0x8e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xd9, 0xb0, 0x18, 0x9c, 0x0d, 0xab, 0x83, 0xe7, 0x72, 0x66, 0x1c, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x5f, 0xc8, 0x06, 0xff, 0xc2, 0x6c, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xfc, 0x0b, 0xe1, 0xe0, 0x5f, 0x18, 0x1c, 0x2c, 0xa7, 0x0a, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xfc, 0x0b, 0x8b, 0xc1, 0xbf, 0xb0, 0x3a, 0x78, 0x49, 0x8d, 0xc7, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0x58, 0x3c, 0x78, 0x3d, 0x85, 0xc7, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xbc, 0x0b, 0xd9, 0xe0, 0x5d, 0x28, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xef, 0x42, 0x38, 0x78, 0x17, 0x06, 0x07, 0x6d, 0x6d, 0x30, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x9c, 0x83, 0x66, 0xb9, 0x5c, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x5d, 0x58, 0x0c, 0xde, 0x85, 0x9a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xbb, 0xb0, 0x1b, 0xbc, 0x0b, 0xdb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0xf0, 0x2e, 0x4c, 0x0e, 0x1e, 0x55, 0xe6, 0x71, 0xf0, 0xbe, 0x13, 0x8c, 0x41, 0xb6, 0xc1, 0x83, 0xc2, 0x3c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xbb, 0xd0, 0x30, 0x78, 0x17, 0x5a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xbb, 0x30, 0x3e, 0x78, 0xdd, 0x9a, 0xc7, 0x20, 0xd8, 0x60, 0x5d, 0x71, 0xd4, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x5d, 0xe8, 0x19, 0xbc, 0x0b, 0x5d, 0x07, 0xab, 0xa2, 0x91, 0x8e, 0x43, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0xf0, 0x3e, 0x64, 0x83, 0xf7, 0xe1, 0xc8, 0xb0, 0x1b, 0x3a, 0x8e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xde, 0x87, 0xcd, 0xe0, 0x7d, 0xa8, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xbc, 0x0f, 0xc3, 0xc1, 0xfb, 0x30, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xef, 0xc3, 0xe8, 0xe0, 0xc1, 0x7c, 0x1e, 0x07, 0xef, 0x3b, 0xc1, 0x18, 0x64, 0x1b, 0x3c, 0x16, 0xcf, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xbc, 0x0f, 0x0d, 0x83, 0xf7, 0xa1, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xbc, 0x0f, 0xeb, 0x83, 0x97, 0x0b, 0x7a, 0x1c, 0x34, 0x8d, 0xd5, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xde, 0x87, 0x78, 0xf0, 0x3e, 0x4c, 0x06, 0xc1, 0x06, 0x2d, 0x65, 0x35, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x02, 0x10, 0x1d, 0x88, 0x45, 0xdc, 0x20, 0xd8, 0xd0, 0x05, 0x67, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x04, 0x21, 0x7a, 0xf0, 0x28, 0x46, 0x8f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x14, 0xf1, 0x03, 0xa1, 0x08, 0x93, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x50, 0x84, 0x60, 0x20, 0x14, 0x21, 0x3d, 0x78, 0x4c, 0x57, 0xc7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0x8a, 0x10, 0x0f, 0x84, 0x22, 0x2c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0x81, 0x50, 0x84, 0xc1, 0xc1, 0xdb, 0x2e, 0x3d, 0x0e, 0x9d, 0xd4, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x83, 0xc7, 0x37, 0x7a, 0x0c, 0xbb, 0xc1, 0xfb, 0x0f, 0x3b, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x02, 0x11, 0x3f, 0x10, 0x88, 0xb0, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x08, 0x44, 0x08, 0x06, 0x02, 0x11, 0xd2, 0x83, 0x67, 0x37, 0x76, 0x0c, 0xb2, 0x0d, 0xde, 0xce, 0xe9, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0x88, 0x30, 0x18, 0x08, 0x44, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x81, 0x08, 0xf1, 0xc1, 0xa3, 0x49, 0x3d, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x81, 0xf6, 0x7d, 0x07, 0x01, 0xef, 0x7f, 0x68, 0x0a, 0x34, 0xc8, 0x36, 0x78, 0x3b, 0xa7, 0xc7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0x88, 0xb0, 0x1b, 0x08, 0x44, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0x81, 0x08, 0xab, 0x83, 0xc7, 0xb2, 0x7a, 0x1c, 0x3c, 0xae, 0xb3, 0x63, 0xd8, 0x0d, 0x5e, 0xe8, 0xd9, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x10, 0x89, 0xf8, 0x81, 0x48, 0x84, 0xc9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x24, 0x42, 0x30, 0x10, 0x89, 0x90, 0x1e, 0xbc, 0x8e, 0xb4, 0x63, 0x90, 0x6d, 0xf0, 0x9c, 0x58, 0x8f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x20, 0x12, 0x61, 0x30, 0x10, 0x89, 0xb0, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x22, 0x11, 0xe2, 0x83, 0x57, 0xe4, 0x7a, 0x1c, 0x1a, 0x50, 0x0e, 0xb2, 0x0d, 0xde, 0x05, 0xe9, 0xb1, 0x20, 0xdb, 0xe0, 0xc5, 0x92, 0x1e, 0x07, 0xcf, 0x71, 0xed, 0x18, 0x64, 0x1b, 0xbc, 0x0b, 0xd2, 0x63, 0x90, 0x6d, 0xf0, 0x12, 0x4c, 0x8f, 0x41, 0xb6, 0xc1, 0x73, 0x2b, 0x3d, 0x0e, 0x2d, 0xdd, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb0, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x78, 0x1e, 0x16, 0x83, 0xe7, 0x61, 0x72, 0x88, 0xe1, 0xe1, 0x14, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xeb, 0xd1, 0xc1, 0xf7, 0xb0, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xcf, 0xa3, 0x07, 0x0f, 0x3d, 0xf6, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xcf, 0xe3, 0x07, 0xcf, 0xc3, 0x68, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xf3, 0x10, 0x0d, 0x9e, 0x87, 0xec, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0xf0, 0x3c, 0x84, 0x83, 0xe7, 0x61, 0x33, 0x08, 0x36, 0xc4, 0x70, 0xf1, 0xe0, 0x7d, 0xc2, 0x1e, 0xc7, 0xe3, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x02, 0xf8, 0xa6, 0xb5, 0xc1, 0xb1, 0x95, 0xb5, 0x95, 0xb9, 0xd1, 0x85, 0xd1, 0xa5, 0xbd, 0xb9, 0xb3, 0x06, 0xad, 0x6f, 0x31, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x70, 0x64, 0x08, 0x3d, 0x68, 0x7d, 0x8b, 0xb9, 0x01, 0x78, 0xbe, 0x7b, 0x93, 0x5b, 0x63, 0x4b, 0x9b, 0xa3, 0x03, 0x99, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0x03, 0x09, 0x73, 0x23, 0x03, 0x11, 0x0b, 0x93, 0x03, 0x99, 0xa3, 0x0b, 0x1b, 0x5b, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x68, 0x7d, 0x8b, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf9, 0x03, 0x63, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x97, 0x60, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0xb7, 0x0b, 0x73, 0x2b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x46, 0x30, 0x0e, 0xd6, 0x6b, 0x3d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xcb, 0x82, 0xb1, 0xe1, 0xcf, 0xa5, 0x01, 0x5f, 0x2c, 0x4c, 0x6e, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x51, 0xc1, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x81, 0xc1, 0x38, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0x68, 0x30, 0x36, 0xfc, 0x3b, 0xbf, 0x80, 0x4f, 0x56, 0x37, 0x46, 0x57, 0xad, 0x80, 0x7f, 0x17, 0x96, 0x66, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x70, 0x64, 0x08, 0x3d, 0x78, 0xd1, 0xba, 0x47, 0x03, 0xf0, 0x17, 0x26, 0x67, 0xf7, 0x06, 0x42, 0x17, 0x36, 0xb7, 0xc6, 0x02, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0x12, 0xe6, 0x96, 0x77, 0x87, 0x56, 0x26, 0x57, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xa2, 0x75, 0x8f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0a, 0x1d, 0x8c, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xda, 0x1e, 0x8c, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x02, 0x84, 0xb1, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xd5, 0x56, 0x74, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x1f, 0x61, 0x6c, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xaf, 0x08, 0xe3, 0xa0, 0xcc, 0xd2, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x22, 0x26, 0x8c, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xeb, 0x84, 0xb1, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xb5, 0xa3, 0xdd, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x5a, 0x61, 0x6c, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x81, 0x0a, 0x63, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x41, 0x0b, 0xe3, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xf1, 0xc2, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x07, 0xc3, 0x38, 0x28, 0xbd, 0xe9, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x28, 0xc3, 0x38, 0x38, 0x23, 0xa1, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x8d, 0x86, 0xb1, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xb8, 0x86, 0xb1, 0xe1, 0x6d, 0x9d, 0x01, 0x7f, 0x2c, 0x6c, 0x6e, 0xad, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa6, 0x38, 0x8c, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x3b, 0x87, 0xb1, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xe7, 0xbd, 0x61, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x91, 0x87, 0x71, 0x10, 0x82, 0x0f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xd6, 0x87, 0xb1, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0xff, 0x30, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0xc8, 0x3d, 0x8c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x0f, 0x31, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x52, 0x88, 0xb1, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xb2, 0x88, 0x71, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x09, 0x89, 0x71, 0xf8, 0x60, 0xb5, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xa5, 0xc4, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0x97, 0x18, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0x75, 0x76, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x24, 0x27, 0xc6, 0x41, 0x08, 0x3e, 0xd4, 0x0a, 0xf8, 0x77, 0x6f, 0x72, 0xed, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xd7, 0x8f, 0x7c, 0x34, 0x80, 0xef, 0xd8, 0x5b, 0x1b, 0x5c, 0x1a, 0x5b, 0x99, 0x1c, 0xc8, 0x58, 0xd8, 0x18, 0x5a, 0xd9, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xeb, 0x47, 0x3e, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x42, 0x31, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7f, 0x29, 0xc6, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb7, 0xb2, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x71, 0x14, 0x63, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x2e, 0x15, 0xe3, 0xa0, 0x44, 0x7c, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xdc, 0x15, 0xe3, 0xa0, 0x48, 0xc5, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x16, 0x5b, 0x8c, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x70, 0x61, 0xf9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xed, 0x2c, 0xc6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x68, 0x2e, 0xc6, 0x41, 0x89, 0x58, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x72, 0x2f, 0xc6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x20, 0x30, 0xc6, 0x41, 0xe9, 0x4d, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x28, 0x31, 0xc6, 0xc1, 0xb2, 0x19, 0xe7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x91, 0x31, 0x0e, 0x16, 0x58, 0x38, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2c, 0x33, 0xc6, 0xc1, 0xb2, 0x19, 0xe7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x9c, 0xc6, 0xd8, 0xf0, 0xe7, 0xd2, 0x06, 0x29, 0x0b, 0x9d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x21, 0xd1, 0x18, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x0d, 0xd7, 0x18, 0x07, 0x25, 0x62, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x35, 0xdb, 0x18, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0xdd, 0x18, 0x07, 0xa5, 0x37, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x0d, 0xe2, 0x18, 0x07, 0xcb, 0x66, 0x9c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x2b, 0xc7, 0x38, 0x58, 0x60, 0xe1, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x29, 0xe9, 0x18, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe5, 0xeb, 0x18, 0x07, 0xa5, 0x37, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x0d, 0xf0, 0x18, 0x07, 0xcb, 0x66, 0x9c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x9c, 0xc7, 0x38, 0x58, 0xfb, 0xee, 0x5c, 0xcd, 0x1a, 0xb4, 0x37, 0x3e, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xa0, 0xbd, 0xf1, 0xd9, 0x06, 0xe0, 0x2d, 0x4c, 0xce, 0xee, 0x0d, 0x84, 0x2e, 0x6c, 0x6e, 0x8d, 0x05, 0x84, 0x2d, 0x4c, 0xce, 0x2e, 0x8c, 0x0d, 0x64, 0x8e, 0x2e, 0xec, 0xac, 0x6c, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xa0, 0xbd, 0xf1, 0xd9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf4, 0x7c, 0x8c, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x98, 0x8f, 0xf8, 0x81, 0xf9, 0x08, 0xf3, 0x0d, 0xd6, 0xab, 0x54, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xf3, 0x11, 0xa2, 0x81, 0xf9, 0x08, 0xc3, 0x0d, 0x82, 0xcd, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x98, 0x8f, 0x10, 0x0e, 0xcc, 0x47, 0x58, 0x1c, 0x3c, 0xc5, 0xe2, 0x63, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x98, 0x8f, 0x30, 0x19, 0x98, 0x8f, 0xb0, 0x3b, 0x78, 0x9d, 0xbf, 0x47, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x49, 0xfe, 0x18, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x17, 0xad, 0x7b, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x30, 0x20, 0xf1, 0x03, 0x03, 0x12, 0xe6, 0x1b, 0xac, 0x57, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x06, 0x24, 0x44, 0x03, 0x03, 0x12, 0x86, 0x1b, 0x04, 0x9b, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x30, 0x20, 0x21, 0x1c, 0x18, 0x90, 0xb0, 0xd8, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x9a, 0xe8, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x60, 0x40, 0xc2, 0x64, 0x60, 0x40, 0xc2, 0x6e, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xcf, 0x39, 0xc8, 0x68, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x29, 0x21, 0x63, 0xc3, 0xbf, 0xf3, 0x1b, 0x34, 0x11, 0x34, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x29, 0x11, 0x19, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x73, 0x22, 0x63, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x0f, 0xc0, 0xc7, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x6f, 0x23, 0x63, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x05, 0x19, 0x19, 0x07, 0x6d, 0x5b, 0x8f, 0xd7, 0x6a, 0x70, 0x64, 0x08, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0x70, 0x64, 0x08, 0x6d, 0x80, 0xff, 0xee, 0x4d, 0x6e, 0x8d, 0x2d, 0x6d, 0x8e, 0x6e, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xc8, 0x10, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x1b, 0x92, 0xb1, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x52, 0x92, 0x71, 0x50, 0x7a, 0xd3, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x93, 0x92, 0xb1, 0xe1, 0xdf, 0xf9, 0x35, 0x68, 0x7d, 0x8b, 0xb9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x65, 0xc9, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x7b, 0xc9, 0x38, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x67, 0x32, 0x36, 0xfc, 0x3b, 0xbf, 0x80, 0xdf, 0xf6, 0x66, 0x57, 0x56, 0xad, 0x06, 0x4f, 0x7e, 0xd6, 0xd8, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0xe4, 0x67, 0x8d, 0x06, 0xe0, 0x1b, 0xae, 0x4c, 0x6e, 0x2e, 0x6d, 0x8e, 0xae, 0xcc, 0x8d, 0x0e, 0x64, 0x8e, 0x2e, 0x8c, 0xae, 0x8c, 0x05, 0x84, 0x2d, 0x4c, 0xce, 0x2e, 0x8c, 0x0d, 0x64, 0x8e, 0x2e, 0xec, 0xac, 0x6c, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xc9, 0xcf, 0x1a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x09, 0x39, 0x19, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb9, 0x27, 0x63, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x1d, 0xda, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xb5, 0x93, 0xb1, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x13, 0x94, 0x71, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x55, 0x94, 0x71, 0xd0, 0xb6, 0xf5, 0x78, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x30, 0x65, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0x2b, 0x73, 0xcb, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x93, 0x32, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0x9f, 0x32, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0xa9, 0x32, 0x0e, 0x3f, 0xd4, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2a, 0x57, 0xc6, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb6, 0xb0, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x48, 0x2b, 0xe3, 0xf0, 0xc1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x75, 0x64, 0x19, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0x71, 0x67, 0xf6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x82, 0x58, 0xc6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf9, 0x59, 0xc6, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x01, 0x5b, 0xc6, 0x86, 0x7f, 0xe7, 0x17, 0xf0, 0xed, 0xca, 0xe4, 0xca, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x90, 0xb9, 0x8c, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x66, 0x61, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2d, 0x5c, 0xc6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa4, 0x5d, 0xc6, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xac, 0x5e, 0xc6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x57, 0x5f, 0xc6, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0x30, 0xbc, 0x30, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x03, 0x33, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x08, 0x33, 0x0e, 0x5e, 0xc7, 0xf0, 0x51, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xcc, 0x98, 0xb1, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0xad, 0x8e, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x53, 0xcc, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x81, 0xcc, 0x38, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xa2, 0xcc, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xb8, 0xcc, 0x38, 0x38, 0x0b, 0x29, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xb2, 0x99, 0x71, 0xd0, 0xec, 0x76, 0x54, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x3b, 0x9a, 0xb1, 0xe1, 0xcf, 0xa5, 0x01, 0x4f, 0xaf, 0x6e, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x0a, 0xcd, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x39, 0xcd, 0x38, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x5a, 0xcd, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x6f, 0xcd, 0x38, 0x38, 0x0b, 0x29, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x20, 0x9b, 0x71, 0xd0, 0xec, 0x76, 0x54, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xa2, 0x9b, 0xb1, 0xe1, 0xcf, 0xa5, 0x01, 0xcf, 0x2e, 0xcc, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xbd, 0xcd, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xec, 0xcd, 0x38, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x0d, 0xce, 0x38, 0x58, 0xaf, 0xf5, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x48, 0x71, 0xc6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf4, 0x71, 0xc6, 0xc1, 0x59, 0x48, 0x61, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf6, 0xe5, 0x8c, 0x83, 0x66, 0xb7, 0xa3, 0xaa, 0xc3, 0x29, 0xd6, 0x02, 0xbe, 0x5d, 0x1a, 0x5b, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0x4d, 0xe0, 0x1f, 0x0d, 0xc0, 0x8b, 0x5c, 0x99, 0x19, 0x5b, 0x19, 0x5e, 0x9a, 0x5d, 0x19, 0xc8, 0xd8, 0x9b, 0xdb, 0x1c, 0x5d, 0x98, 0x1b, 0xdd, 0xdc, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x9b, 0xc0, 0x3f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0xa6, 0x33, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf1, 0x75, 0xc6, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x5a, 0x2d, 0x3a, 0x21, 0x3e, 0x28, 0x2a, 0x74, 0x79, 0x70, 0x65, 0xa9, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xf8, 0x7c, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x57, 0x75, 0xc6, 0xc1, 0xb2, 0x19, 0xe7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0xbe, 0x33, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xd0, 0x6a, 0xd1, 0x09, 0xf1, 0x41, 0x51, 0x21, 0xab, 0x1b, 0xa3, 0x4b, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x23, 0xab, 0x1b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0xb9, 0x33, 0x0e, 0x96, 0xcd, 0x38, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x5c, 0x9e, 0xb1, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x56, 0x8b, 0x4e, 0x88, 0x0f, 0x8a, 0xca, 0x5d, 0x9a, 0x5c, 0x59, 0x6a, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x5d, 0x9a, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x36, 0x9e, 0x71, 0xb0, 0x6c, 0xc6, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x44, 0xf6, 0x8c, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xe8, 0x68, 0xd1, 0x09, 0xf1, 0x41, 0x51, 0x41, 0xa9, 0x73, 0x4b, 0xa3, 0x03, 0x39, 0x7b, 0x7b, 0x33, 0x4b, 0x49, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x23, 0xab, 0x23, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0xd4, 0x33, 0x0e, 0x96, 0xcd, 0x38, 0xb7, 0x02, 0x3e, 0x59, 0x99, 0x18, 0xbd, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0xcd, 0x02, 0x20, 0x0d, 0xe0, 0x5d, 0x06, 0x87, 0x56, 0xd6, 0x56, 0x26, 0x17, 0xc6, 0x06, 0x32, 0x47, 0x17, 0x46, 0x57, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x66, 0x01, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xea, 0xf8, 0x8c, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x69, 0x9f, 0xb1, 0xe1, 0xcf, 0xa5, 0x0d, 0x46, 0xe6, 0xd2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0a, 0x7d, 0xc6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x81, 0x7e, 0xc6, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xe1, 0x9f, 0xb1, 0xe1, 0xdf, 0xf9, 0x0d, 0xd6, 0x9d, 0x65, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x21, 0x05, 0x1a, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0x34, 0xcb, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x15, 0xd0, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x44, 0xd0, 0x38, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x19, 0x34, 0x36, 0xfc, 0x3b, 0xbf, 0x80, 0xff, 0x66, 0x57, 0xd7, 0x56, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x4f, 0x68, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x45, 0xfc, 0xb4, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x55, 0x11, 0x1a, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x35, 0x17, 0x1a, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd3, 0x86, 0xc6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7f, 0x87, 0xc6, 0x41, 0xe9, 0x4d, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x85, 0x88, 0xc6, 0xc1, 0x19, 0x09, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xbe, 0x12, 0x8d, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x10, 0x14, 0x8d, 0x83, 0xd7, 0x31, 0x7c, 0x54, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xbd, 0x68, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x91, 0xc0, 0xb0, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xcf, 0xa2, 0xb1, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x2d, 0xa3, 0x71, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xdb, 0x68, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xe6, 0x68, 0x1c, 0x94, 0xde, 0xf4, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xf6, 0x68, 0x1c, 0x9c, 0x91, 0x50, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x09, 0xd2, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x1e, 0xd2, 0x38, 0x78, 0x1d, 0xc3, 0x47, 0xd5, 0xe1, 0x14, 0x5b, 0xc0, 0x9f, 0x7b, 0xab, 0x63, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0xa8, 0x06, 0xa4, 0x01, 0xfc, 0xe1, 0xca, 0xe4, 0xe6, 0xd2, 0xe6, 0xe8, 0xca, 0xdc, 0xe8, 0x40, 0xe6, 0xe8, 0xc2, 0xe8, 0xca, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0x54, 0x03, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xbd, 0xa4, 0xb1, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x9c, 0x34, 0x36, 0xfc, 0x3b, 0xbf, 0x80, 0xdf, 0x96, 0x56, 0xe6, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa9, 0x55, 0x1a, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0xf9, 0xe4, 0xed, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd3, 0x94, 0xc6, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xd4, 0xd2, 0xd8, 0xf0, 0xe7, 0xd2, 0x80, 0xc7, 0x16, 0x36, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x60, 0x69, 0x1c, 0x3e, 0x58, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x50, 0x30, 0x8d, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x7a, 0x65, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x91, 0x97, 0xc6, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x2c, 0xd3, 0xd8, 0xf0, 0xe7, 0xd2, 0x06, 0x8b, 0x3b, 0xb3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0xc6, 0x34, 0x0e, 0xde, 0x11, 0xfb, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x74, 0x9b, 0xc6, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb6, 0xb0, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x6c, 0x4d, 0x63, 0x83, 0x00, 0x3a, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x86, 0xd3, 0x38, 0x28, 0x60, 0xf3, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd9, 0x4e, 0x63, 0xc3, 0x9f, 0x4b, 0x1b, 0x9a, 0x1f, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xd1, 0x69, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd8, 0x3d, 0x8d, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x66, 0x61, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x51, 0x9e, 0xc6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xcb, 0x9f, 0xc6, 0xc1, 0xfb, 0x74, 0x3f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x1a, 0xd4, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x2f, 0xd4, 0x38, 0x78, 0x1d, 0xc3, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xde, 0xa8, 0xb1, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0xad, 0x8e, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x5c, 0xd4, 0x38, 0x68, 0x76, 0x3b, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x24, 0x4b, 0x8d, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x7a, 0x75, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf7, 0xa4, 0xc6, 0x41, 0xb3, 0xdb, 0x51, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x78, 0x6a, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0xb3, 0x0b, 0x73, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x37, 0x35, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x43, 0x35, 0x0e, 0x4a, 0xc4, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x4b, 0x35, 0x0e, 0xd6, 0x6b, 0x3d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x91, 0xaa, 0xb1, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0x40, 0xb8, 0x47, 0x55, 0x87, 0x53, 0x6c, 0x0d, 0x9e, 0x19, 0xfb, 0xb1, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0x99, 0xb1, 0x1f, 0x0d, 0xe0, 0x2d, 0x57, 0xe7, 0x46, 0x97, 0xd6, 0x56, 0x06, 0x62, 0x57, 0x26, 0x37, 0x97, 0xf6, 0xe6, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xcc, 0xd8, 0x8f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc0, 0x57, 0x8d, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x1f, 0xab, 0xb1, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x6d, 0x35, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x0a, 0x41, 0xdb, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x36, 0x5a, 0x8d, 0x83, 0xa3, 0x36, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x4d, 0xbf, 0x1a, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0x00, 0x6d, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xf3, 0x6a, 0x1c, 0x9c, 0x91, 0x50, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xda, 0x58, 0x63, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0xe2, 0xa7, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x22, 0xd6, 0xd8, 0xf0, 0xef, 0xfc, 0x02, 0xfe, 0x5d, 0x9e, 0x9b, 0x5b, 0xad, 0x80, 0x8f, 0x56, 0x96, 0x26, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x70, 0x64, 0x08, 0x3d, 0x78, 0xa9, 0x21, 0x48, 0x03, 0xf0, 0x50, 0x07, 0x77, 0x26, 0x17, 0x46, 0x56, 0x16, 0x26, 0xc6, 0x56, 0x06, 0x32, 0x47, 0x17, 0x46, 0x57, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x52, 0x43, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf0, 0x66, 0x8d, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xce, 0x68, 0x8d, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x40, 0xad, 0xb1, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x27, 0x3f, 0x6b, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x95, 0xad, 0xb1, 0x41, 0xd0, 0xfe, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xbb, 0xad, 0xb1, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0xbc, 0x35, 0x36, 0x08, 0x36, 0xd3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0xc3, 0x35, 0x36, 0x64, 0xc0, 0x37, 0xd4, 0xfc, 0x20, 0xe0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x9f, 0x6b, 0x6c, 0xc8, 0x80, 0x1f, 0xac, 0x81, 0xa7, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xae, 0x5d, 0x63, 0x43, 0x06, 0x7c, 0x43, 0xcd, 0x0f, 0xc2, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xcf, 0xbc, 0xc6, 0x86, 0x0c, 0xf8, 0x86, 0x9a, 0x1f, 0x44, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf4, 0x7b, 0x8d, 0x0d, 0x19, 0xf0, 0x0d, 0x35, 0x3f, 0x08, 0x76, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xfe, 0x6b, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x27, 0x3f, 0x6b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xf4, 0x6b, 0x6c, 0xf8, 0x77, 0x7e, 0x0d, 0x9e, 0xfc, 0xac, 0x51, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x11, 0x04, 0x1b, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xcf, 0x60, 0x63, 0x83, 0x60, 0x33, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x43, 0x61, 0xe3, 0xe0, 0xc9, 0x98, 0x20, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x3d, 0x6c, 0x1c, 0xbc, 0x5d, 0x13, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x62, 0x8a, 0x8d, 0x83, 0xe7, 0x73, 0x82, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xa3, 0xb1, 0x71, 0xf0, 0x8e, 0x4f, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x3c, 0x36, 0x0e, 0x1e, 0x14, 0x0a, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0x25, 0x1b, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0xcd, 0x02, 0x20, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x65, 0x23, 0x1b, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x37, 0x0b, 0x80, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x8d, 0x2d, 0x1b, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x41, 0x35, 0x20, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x15, 0x2b, 0x1b, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x07, 0xd5, 0x80, 0x54, 0xad, 0x06, 0x0f, 0x08, 0xf7, 0xd8, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0x80, 0x70, 0x8f, 0x06, 0xf0, 0x5c, 0x2b, 0x93, 0x73, 0x2b, 0x63, 0x03, 0x69, 0x7b, 0x23, 0xab, 0x63, 0x2b, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x40, 0xb8, 0xc7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x15, 0xcd, 0xc6, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xc9, 0xd9, 0xd8, 0xf0, 0xe7, 0xd2, 0x06, 0x2b, 0x35, 0x9c, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x6d, 0x36, 0x0e, 0x9a, 0xdd, 0x8e, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x01, 0x68, 0x63, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x7e, 0xe4, 0x63, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb3, 0x67, 0x63, 0xc3, 0xbf, 0xf3, 0x6b, 0xf0, 0xfa, 0x91, 0x8f, 0x6a, 0x16, 0xf0, 0xef, 0xca, 0xcc, 0xe8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0xcf, 0x58, 0x06, 0x69, 0x00, 0xbe, 0xd7, 0xca, 0xd8, 0xec, 0xd2, 0xdc, 0x40, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0x58, 0x40, 0xe8, 0xc2, 0xce, 0x40, 0xc2, 0xdc, 0xc8, 0x40, 0xdc, 0xea, 0xda, 0xc4, 0xca, 0xe4, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x9e, 0xb1, 0x0c, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x5f, 0xb4, 0xb1, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0x95, 0x36, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xb1, 0x85, 0xb1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0x48, 0x1b, 0x07, 0xe7, 0xcd, 0xd3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0xa3, 0x36, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xa3, 0x7f, 0x84, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x71, 0x4f, 0x1b, 0x07, 0x65, 0x96, 0x6e, 0xb3, 0x06, 0x8d, 0x04, 0x0d, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x70, 0x64, 0x08, 0x3d, 0x68, 0x24, 0x68, 0xb8, 0x01, 0x78, 0x0b, 0x93, 0xb3, 0x7b, 0x03, 0xa1, 0x0b, 0x9b, 0x5b, 0x63, 0x01, 0x31, 0x93, 0x7b, 0x6b, 0x03, 0x79, 0xaa, 0xa3, 0x9b, 0x4b, 0x23, 0x2b, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x68, 0x24, 0x68, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xe9, 0x6a, 0x63, 0x83, 0xa0, 0xfd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x61, 0x6b, 0x63, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x75, 0x6d, 0x6c, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x39, 0x59, 0x1b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x95, 0x6d, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0x3f, 0x7b, 0x7b, 0x33, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0xc5, 0x36, 0x36, 0xfc, 0x3b, 0xbf, 0x06, 0x0f, 0x56, 0x07, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0xd9, 0x36, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xcb, 0x31, 0x40, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0xd4, 0x36, 0x0e, 0x9e, 0x86, 0x01, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa9, 0x71, 0x1b, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x83, 0x6e, 0xe3, 0xe0, 0x71, 0x70, 0x1f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xef, 0x6d, 0x6c, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x2d, 0x6f, 0x63, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0x78, 0xe0, 0xd5, 0xd9, 0x29, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x18, 0xb8, 0xb1, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0x07, 0x37, 0x0e, 0x9e, 0x3f, 0xf7, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf1, 0xe2, 0xc6, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0x12, 0x37, 0x0e, 0xde, 0x11, 0xfb, 0x51, 0x87, 0x53, 0x6c, 0x0d, 0xde, 0x5c, 0x08, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0xcd, 0x85, 0x20, 0x0d, 0xe0, 0xb7, 0x56, 0xc6, 0x66, 0x97, 0xe6, 0x06, 0x32, 0x47, 0x17, 0x36, 0xb6, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xe6, 0x42, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x74, 0xc8, 0x8d, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2e, 0xca, 0x8d, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x0f, 0x73, 0x63, 0xc3, 0xbf, 0xf3, 0x6b, 0xf0, 0x8c, 0x65, 0x90, 0xea, 0x70, 0x8a, 0xd5, 0x0a, 0xf0, 0x9d, 0xb1, 0xbd, 0x89, 0x85, 0xb1, 0xb3, 0x80, 0x3f, 0x16, 0x36, 0x57, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x70, 0x64, 0x08, 0x3d, 0x78, 0x41, 0x43, 0x48, 0x03, 0xf8, 0x9e, 0xb1, 0xbd, 0x89, 0x85, 0xb1, 0x81, 0xd8, 0x95, 0xc9, 0xcd, 0xa5, 0xbd, 0xb9, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0xa0, 0x21, 0x64, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xc5, 0x73, 0x63, 0x83, 0xa0, 0xfd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x21, 0x74, 0x63, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x8d, 0x6e, 0x1c, 0x9c, 0xd2, 0x5a, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x49, 0xdd, 0xd8, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb6, 0xe9, 0xc6, 0xc1, 0x91, 0xaf, 0xb5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0x5d, 0x37, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4e, 0xec, 0xc6, 0xc1, 0xfa, 0x88, 0xf4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x71, 0x37, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x64, 0xbb, 0x71, 0x70, 0xde, 0x3c, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7c, 0xde, 0x8d, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xf4, 0xbb, 0x71, 0x70, 0xe2, 0x5a, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xa2, 0x78, 0x63, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc9, 0xc2, 0x1b, 0x07, 0x65, 0x96, 0x6e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x20, 0x6f, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x28, 0xe5, 0x8d, 0x83, 0x63, 0xf3, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x25, 0xd0, 0x1b, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x6e, 0xde, 0x38, 0x38, 0x83, 0xaf, 0xd6, 0x6a, 0xb0, 0x6a, 0xb0, 0x7f, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0xaa, 0xc1, 0xfe, 0x06, 0xf0, 0x9b, 0xab, 0x13, 0x9b, 0x1b, 0x93, 0x4b, 0x83, 0xa3, 0x4b, 0x7b, 0x73, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x58, 0x35, 0xd8, 0xbf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x6e, 0xbd, 0xb1, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xa3, 0xbd, 0x71, 0x70, 0x2c, 0x1a, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd5, 0x7b, 0x63, 0xc3, 0xbf, 0xf3, 0x0b, 0xf8, 0x62, 0x6f, 0x6e, 0x65, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x25, 0xbe, 0x71, 0xd0, 0xb6, 0xf5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x9d, 0xe5, 0x1b, 0x07, 0x67, 0x24, 0xd4, 0x56, 0xc0, 0x17, 0x2b, 0x0b, 0x6b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0xc8, 0x27, 0xa4, 0x01, 0xbc, 0xce, 0xd8, 0xde, 0xc4, 0xc2, 0xd8, 0x40, 0xdc, 0xc2, 0xda, 0xca, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0xe4, 0x13, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xb2, 0xbe, 0xb1, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0xdb, 0x37, 0x36, 0xfc, 0x3b, 0xbf, 0x80, 0x2f, 0x56, 0x16, 0xb6, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc9, 0xf4, 0x1b, 0x1b, 0xfe, 0x5c, 0x1a, 0x7c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x93, 0xdf, 0x38, 0x38, 0x23, 0xa1, 0x36, 0x0b, 0xf8, 0x70, 0x61, 0x67, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xd7, 0x2d, 0x85, 0x34, 0x80, 0x5f, 0x9d, 0x1b, 0x5d, 0x1e, 0x5c, 0x19, 0x19, 0xc8, 0x58, 0xd8, 0x59, 0xd9, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xeb, 0x96, 0x42, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0xf3, 0x37, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0xfa, 0x37, 0x0e, 0x5e, 0xc7, 0xf0, 0xd1, 0x2c, 0xe0, 0x87, 0xc9, 0x8d, 0xa1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0xde, 0x4b, 0x15, 0xd2, 0x00, 0x9e, 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xef, 0xa5, 0x0a, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x11, 0xe0, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x2b, 0xe0, 0xd8, 0xf0, 0xb6, 0xce, 0x80, 0x1f, 0x86, 0x97, 0xc6, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa4, 0x02, 0xc7, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0xc0, 0xab, 0xb3, 0x4b, 0x3a, 0x9c, 0x62, 0x0b, 0xf8, 0x63, 0x61, 0x67, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xd7, 0x85, 0x85, 0x34, 0x80, 0x57, 0x5b, 0x98, 0xdc, 0x5a, 0x19, 0x19, 0x88, 0x5d, 0xd8, 0x5c, 0xd9, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xeb, 0xc2, 0x42, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0x25, 0x38, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x2c, 0x38, 0x0e, 0x5e, 0xc7, 0xf0, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x91, 0x06, 0xc7, 0x41, 0xb3, 0xdb, 0x51, 0xad, 0x06, 0x2f, 0x39, 0x0a, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0x92, 0xa3, 0x90, 0x06, 0xf0, 0x3d, 0x63, 0x7b, 0x13, 0x0b, 0x63, 0x03, 0x19, 0x7b, 0x73, 0xa3, 0x2b, 0xc3, 0xa3, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xc9, 0x51, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe7, 0x07, 0xc7, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xbb, 0x08, 0xc7, 0xc1, 0xb1, 0x68, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7a, 0x13, 0x8e, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x52, 0xe1, 0xd8, 0xf0, 0xef, 0xfc, 0x02, 0x3e, 0x59, 0xd9, 0xdc, 0x5a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xb7, 0x70, 0x6c, 0xf8, 0x77, 0x7e, 0x0d, 0x5e, 0xd0, 0x10, 0x52, 0x1d, 0x4e, 0xb1, 0x35, 0x78, 0x79, 0x57, 0xc8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x97, 0x77, 0x85, 0x34, 0x80, 0xbf, 0x59, 0x9d, 0x1b, 0x59, 0x58, 0x5b, 0x99, 0x1b, 0x5d, 0x18, 0x1b, 0x88, 0xdb, 0x1b, 0x59, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x85, 0x0c, 0xc7, 0x86, 0x87, 0xf3, 0x37, 0x08, 0x55, 0x84, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x00, 0x1b, 0x8e, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xab, 0xc3, 0xb1, 0xe1, 0xcf, 0xa5, 0x0d, 0x46, 0x02, 0xc3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x19, 0x0e, 0xc7, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x84, 0x0f, 0xc7, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x9e, 0x10, 0xc7, 0x41, 0x60, 0x43, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x33, 0x12, 0xc7, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb2, 0x34, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xcf, 0x88, 0x63, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x87, 0x89, 0xe3, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x34, 0x8a, 0xe3, 0xe0, 0xa8, 0x0d, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xca, 0x15, 0xc7, 0x41, 0x08, 0x3e, 0xd4, 0x6a, 0xd0, 0xf4, 0xf5, 0xf8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xa6, 0xaf, 0xc7, 0x3b, 0x68, 0x08, 0x7c, 0x7c, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xa0, 0xe9, 0xeb, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x70, 0x2e, 0x8e, 0x83, 0x63, 0xab, 0xeb, 0x6a, 0x70, 0x8a, 0x3c, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0x70, 0x8a, 0x3c, 0x6d, 0x00, 0x9e, 0xe6, 0xf2, 0xda, 0xc4, 0xde, 0xd8, 0xd2, 0xc6, 0x40, 0xc6, 0xde, 0xdc, 0xe8, 0xca, 0xdc, 0xe8, 0x40, 0xe8, 0xf2, 0xe0, 0xca, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x4e, 0x91, 0xa7, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x01, 0x62, 0x1c, 0x07, 0xe7, 0xcd, 0xd3, 0x59, 0xc0, 0x27, 0x7b, 0x1b, 0x5b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0x58, 0x34, 0xa4, 0x01, 0x7c, 0xdb, 0xca, 0xe6, 0xe6, 0xc2, 0xce, 0xca, 0x40, 0xe8, 0xc2, 0xe4, 0xce, 0xca, 0xe8, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0x2c, 0x1a, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x71, 0xc6, 0xb1, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xa6, 0xc6, 0x71, 0x50, 0x7a, 0xd3, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xf3, 0xc6, 0x71, 0x70, 0x6c, 0x75, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x63, 0x8e, 0xe3, 0x60, 0xbd, 0xd6, 0x73, 0x87, 0x53, 0x6c, 0x01, 0xff, 0xad, 0xad, 0xcc, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0xe4, 0xd7, 0x90, 0x06, 0xe0, 0xdb, 0xac, 0x8e, 0x8d, 0x2d, 0xaf, 0x25, 0xae, 0x2e, 0x8c, 0x2d, 0xcd, 0x2c, 0xad, 0x8c, 0x0c, 0xc4, 0x2d, 0xac, 0xad, 0x6c, 0x0e, 0x2e, 0x6c, 0xac, 0x0c, 0x04, 0x2e, 0x8c, 0x0e, 0x6d, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xc9, 0xaf, 0x21, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x81, 0x78, 0x1c, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xa4, 0x8f, 0x63, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0x2f, 0x82, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xd6, 0xe3, 0xd8, 0xf0, 0xef, 0xfc, 0x02, 0xbe, 0x5d, 0x5a, 0xd9, 0x5d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x12, 0x72, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0x13, 0x2b, 0x6b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x04, 0x39, 0x36, 0xfc, 0x3b, 0xbf, 0x06, 0x0f, 0xf2, 0x09, 0xa9, 0x66, 0x01, 0xff, 0x2c, 0xcc, 0xed, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0x34, 0xe1, 0x90, 0x06, 0xe0, 0x29, 0xcd, 0xcd, 0x2c, 0xcd, 0x2d, 0x8d, 0xae, 0x0c, 0x64, 0xae, 0x8c, 0x0e, 0xe4, 0xcd, 0x0c, 0x04, 0xae, 0xac, 0x4c, 0x6e, 0x6e, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x69, 0xc2, 0x21, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0x8a, 0x1c, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb9, 0x8d, 0x1c, 0x07, 0x65, 0x13, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb9, 0x91, 0x1c, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x94, 0x1c, 0x07, 0x25, 0xe2, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x49, 0x98, 0x1c, 0x07, 0x6d, 0x5b, 0x8f, 0xd7, 0x6a, 0xf0, 0x0a, 0x9d, 0x90, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0xaf, 0xd0, 0x09, 0x69, 0x00, 0x3e, 0xde, 0xe0, 0xc2, 0xe2, 0xea, 0xca, 0x40, 0xc8, 0xea, 0xc6, 0xe8, 0x40, 0xd0, 0xc2, 0xdc, 0xc8, 0xd8, 0xca, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x5e, 0xa1, 0x13, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xd7, 0xc9, 0x71, 0x50, 0x66, 0xe9, 0x1e, 0x4e, 0xb1, 0xd6, 0xe0, 0xf1, 0xba, 0x1f, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0x1e, 0xaf, 0xfb, 0xd1, 0x00, 0xe8, 0x60, 0x56, 0xe7, 0x46, 0x16, 0xd6, 0x56, 0xe6, 0x46, 0x17, 0xc6, 0x06, 0xe2, 0xf6, 0x46, 0x56, 0xc6, 0x02, 0x22, 0x57, 0x36, 0x56, 0x27, 0x37, 0x97, 0x66, 0x57, 0x06, 0x82, 0x42, 0x27, 0x97, 0x56, 0x96, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x07, 0xe5, 0xd8, 0xf0, 0x70, 0xfe, 0x06, 0xa1, 0x8a, 0xb0, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x4d, 0xca, 0xb1, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0x52, 0x39, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x48, 0x60, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x39, 0xe5, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x66, 0xe5, 0x38, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x86, 0xe5, 0x38, 0x08, 0x6c, 0x88, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xb8, 0xe5, 0xd8, 0xf0, 0xe7, 0xd2, 0x80, 0x47, 0x96, 0x26, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xd2, 0x72, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xe9, 0x72, 0x1c, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xfd, 0x72, 0x1c, 0x1c, 0xb5, 0x41, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x19, 0xe6, 0xd8, 0xf0, 0xef, 0xfc, 0xc1, 0x18, 0x43, 0xab, 0xd5, 0xe0, 0xcd, 0x78, 0x21, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0xde, 0x8c, 0x17, 0xd2, 0x00, 0xde, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x6f, 0xc6, 0x0b, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x41, 0xe6, 0x38, 0x38, 0x6f, 0x9e, 0x1e, 0x4e, 0xb1, 0x35, 0x78, 0xb1, 0x0f, 0xc8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x17, 0xfb, 0x80, 0x34, 0x80, 0xd7, 0x9b, 0x5c, 0x5a, 0x99, 0x1b, 0x5d, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x8b, 0x7d, 0x40, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0x99, 0x39, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5d, 0x34, 0xc7, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb7, 0x3a, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xe4, 0x99, 0xe3, 0xa0, 0x6d, 0xeb, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0xb0, 0x39, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0x02, 0xe1, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x74, 0x35, 0xc7, 0xc1, 0x91, 0xaf, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2e, 0x70, 0x8e, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x65, 0x6e, 0xf9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x81, 0x37, 0xc7, 0xc1, 0x73, 0xef, 0x41, 0x3a, 0x9c, 0x62, 0x6b, 0xf0, 0x74, 0x86, 0x8f, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa7, 0x33, 0x7c, 0x34, 0x00, 0x2f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0xe6, 0x1c, 0x1b, 0x1e, 0xce, 0xdf, 0xf0, 0xe0, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4a, 0x3a, 0xc7, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf5, 0x3a, 0xc7, 0x41, 0xe9, 0x4d, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf7, 0x3b, 0xc7, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x14, 0x79, 0x5a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xce, 0x73, 0x1c, 0x1c, 0x3a, 0x2d, 0x5b, 0x0d, 0x1e, 0x06, 0x82, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x6b, 0xcf, 0xb1, 0xe1, 0x8d, 0xbb, 0x83, 0x87, 0x86, 0x82, 0x1c, 0x4e, 0xb1, 0x56, 0xc0, 0x6f, 0x2b, 0xa3, 0x0b, 0x67, 0x01, 0x1f, 0x2d, 0x0f, 0xee, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x78, 0x8a, 0x88, 0x48, 0x03, 0xf0, 0x46, 0x97, 0x07, 0x57, 0xd6, 0x12, 0x36, 0x37, 0xf7, 0x36, 0x96, 0x16, 0x46, 0x57, 0x46, 0x06, 0x22, 0x56, 0x97, 0xc6, 0x46, 0x56, 0x26, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x97, 0xcf, 0xb1, 0xe1, 0xe1, 0xfc, 0x0d, 0x0f, 0xee, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xf1, 0x73, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0xfc, 0x73, 0x1c, 0x94, 0xde, 0xf4, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x0c, 0x74, 0x1c, 0x2c, 0x9b, 0x71, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xda, 0xa0, 0xe3, 0xe0, 0xd0, 0x69, 0xd9, 0x6a, 0xf0, 0xb0, 0x10, 0x91, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0x0f, 0x0b, 0x11, 0x69, 0x00, 0x8f, 0xb6, 0x32, 0xba, 0xb0, 0x16, 0xbb, 0xb0, 0xb9, 0xb2, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x87, 0x85, 0x88, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x2b, 0x74, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x38, 0x74, 0x1c, 0x94, 0xde, 0xf4, 0x1d, 0x4e, 0xb1, 0x05, 0xfc, 0xb6, 0x30, 0xbd, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0x23, 0x73, 0x44, 0x1a, 0x80, 0x0f, 0xbb, 0xb0, 0xb9, 0x32, 0x16, 0x90, 0x37, 0x39, 0x90, 0xb6, 0x32, 0xba, 0xb0, 0x16, 0xbb, 0xb0, 0xb9, 0xb2, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x47, 0xe6, 0x88, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x4d, 0x74, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x5a, 0x74, 0x1c, 0xac, 0x82, 0x4c, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x64, 0xa3, 0xe3, 0xa0, 0xd9, 0xed, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0x3c, 0x3a, 0x36, 0xfc, 0x3b, 0xbf, 0x06, 0x0f, 0x0b, 0x11, 0xa9, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x6b, 0x0d, 0xda, 0xf2, 0xa5, 0x9e, 0x05, 0x7c, 0xb9, 0xb7, 0x37, 0x7a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0xa3, 0x91, 0x44, 0x1a, 0xc0, 0x53, 0x2e, 0xec, 0x0e, 0xc4, 0x2d, 0xac, 0xad, 0x6c, 0x0e, 0x2e, 0x6c, 0xac, 0x6c, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xd1, 0x48, 0x22, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x49, 0x23, 0x1d, 0x1b, 0x84, 0xd3, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd5, 0x25, 0x1d, 0x07, 0x45, 0x2a, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1f, 0x4a, 0xc7, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf2, 0x4a, 0xc7, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf5, 0x4b, 0xc7, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x97, 0x4c, 0xc7, 0x41, 0xd9, 0x84, 0x59, 0x2b, 0xe0, 0xa3, 0xbd, 0x89, 0xbd, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xef, 0xc4, 0x12, 0x69, 0x00, 0x3e, 0x4a, 0xe6, 0xde, 0xcc, 0xe8, 0x40, 0xe8, 0xc2, 0xe6, 0xd6, 0x40, 0xc4, 0xea, 0xd2, 0xd8, 0xc8, 0xca, 0xe4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x6e, 0x3a, 0x36, 0x3c, 0x9c, 0xbf, 0xe1, 0xc1, 0x9d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x16, 0x9d, 0x8e, 0x0d, 0x82, 0xcd, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x46, 0xa1, 0x8e, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x68, 0xa2, 0x8e, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x72, 0xd4, 0xb1, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xe5, 0x83, 0xbf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x3a, 0x75, 0x6c, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x8c, 0xa9, 0xe3, 0x20, 0x4c, 0xc7, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x46, 0x9e, 0x8e, 0x83, 0x43, 0xa7, 0x65, 0x2b, 0xe0, 0xdf, 0xa5, 0xd1, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xef, 0x61, 0x13, 0x69, 0x00, 0x5e, 0xd7, 0xca, 0xe4, 0xdc, 0xca, 0xd8, 0x40, 0xc2, 0xc6, 0xe8, 0xd2, 0xde, 0xdc, 0x5e, 0xca, 0xe4, 0xe4, 0xde, 0xe4, 0x40, 0xc4, 0xea, 0xd2, 0xd8, 0xc8, 0xca, 0xe4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0xa7, 0x3a, 0x36, 0x3c, 0x9c, 0xbf, 0x86, 0xe7, 0x49, 0x06, 0xfc, 0xb3, 0x34, 0x33, 0xba, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x68, 0xab, 0x8e, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x54, 0xb3, 0x8e, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x91, 0xd6, 0xb1, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x57, 0x93, 0x75, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x0d, 0xd7, 0xb1, 0xe1, 0xcf, 0xa5, 0x0d, 0x1e, 0xac, 0x0e, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xe6, 0xd6, 0x71, 0xf0, 0x44, 0x76, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0xf0, 0x3a, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x7b, 0xd8, 0x44, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0xeb, 0x3a, 0x36, 0x58, 0x46, 0x60, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xb7, 0xd7, 0xb1, 0xe1, 0xa3, 0xf6, 0x0d, 0xd6, 0xab, 0x54, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0xf4, 0x07, 0xc6, 0x02, 0xa1, 0x09, 0xfb, 0x81, 0xd0, 0x84, 0xb6, 0x0d, 0x82, 0xcd, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x08, 0x4d, 0x68, 0x18, 0x08, 0x4d, 0xa8, 0xd9, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x0b, 0xa7, 0xe3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0x40, 0x68, 0x42, 0xcf, 0x40, 0x68, 0x42, 0xd9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x9e, 0xd4, 0xd5, 0xd1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x88, 0x5f, 0xc7, 0xc1, 0xe3, 0xe7, 0x43, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x3c, 0xb1, 0x63, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x31, 0x76, 0x1c, 0x3c, 0x32, 0x51, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x06, 0xca, 0x8e, 0x0d, 0x7f, 0x2e, 0x0d, 0xf8, 0x77, 0x69, 0x72, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x68, 0x64, 0xc7, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x15, 0x95, 0x22, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf3, 0x66, 0xc7, 0x86, 0x3f, 0x97, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x95, 0xd9, 0x71, 0xb0, 0xd4, 0xe0, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x41, 0x3b, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xba, 0x68, 0xc7, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x1a, 0xf6, 0xb9, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x54, 0xb5, 0x63, 0xc3, 0x9f, 0x4b, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x41, 0xed, 0x38, 0x58, 0x6a, 0xf0, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x3d, 0x59, 0x1d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x74, 0xab, 0xe3, 0xe0, 0x1d, 0x8d, 0x22, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x7b, 0x75, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x47, 0xd2, 0x89, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x84, 0x75, 0x6c, 0xf8, 0x77, 0x7e, 0x83, 0x27, 0xd2, 0x89, 0x54, 0x2b, 0xe0, 0xcb, 0xbd, 0xbd, 0xb5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xef, 0x58, 0x15, 0x69, 0x00, 0x1e, 0xce, 0xca, 0xdc, 0xca, 0xe4, 0xd2, 0xc6, 0x40, 0xdc, 0xc2, 0xda, 0xca, 0xe6, 0xe0, 0xc2, 0xc6, 0xca, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x83, 0x77, 0xb2, 0x8a, 0x0c, 0xe0, 0x5f, 0x96, 0x46, 0x87, 0x56, 0x26, 0x07, 0xe2, 0x16, 0xd6, 0x56, 0x36, 0x07, 0x17, 0x36, 0x56, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x4c, 0xdb, 0xb1, 0xe1, 0xe1, 0xfc, 0x0d, 0x0f, 0xee, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xf7, 0x76, 0x6c, 0x10, 0x6a, 0x88, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x00, 0x77, 0x6c, 0x50, 0x4a, 0x88, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x2a, 0xdc, 0x71, 0x50, 0x50, 0x64, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x15, 0x77, 0x6c, 0xb0, 0xb8, 0x30, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x1c, 0x0e, 0xf9, 0xe0, 0x70, 0x18, 0x1c, 0x84, 0xe9, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x08, 0x6e, 0xc7, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xb7, 0xdb, 0xb1, 0x41, 0x38, 0x8d, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xc7, 0xf1, 0x83, 0xd3, 0x21, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x78, 0x1c, 0xb2, 0xc1, 0xe3, 0x70, 0x62, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x97, 0xad, 0x2c, 0x6c, 0x6d, 0xae, 0x8c, 0x6e, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0x5b, 0xde, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xc7, 0x21, 0x1f, 0x3c, 0x0e, 0x9b, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0xd3, 0x84, 0x43, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x5c, 0x0e, 0xd9, 0xe0, 0x72, 0xf8, 0xb1, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x0f, 0x9c, 0xdc, 0x9b, 0x5d, 0x99, 0x5b, 0x98, 0xdb, 0x58, 0xd9, 0x86, 0x3f, 0x97, 0x36, 0x68, 0x72, 0x01, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0x97, 0x43, 0x3e, 0xb8, 0x1c, 0x36, 0x07, 0x67, 0x24, 0xd4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0xf0, 0x39, 0x64, 0x83, 0xcf, 0xe1, 0xce, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3c, 0xc0, 0x95, 0xc9, 0xcd, 0xc1, 0x95, 0x8d, 0xd1, 0xa5, 0xd9, 0x95, 0xb1, 0x80, 0xc0, 0x85, 0xd1, 0xa1, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0x9e, 0xfc, 0x1a, 0x52, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x75, 0xf4, 0xe0, 0xc1, 0xb5, 0x1d, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0x78, 0x1d, 0x3f, 0x78, 0x1d, 0x7e, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xe3, 0xa7, 0x03, 0x52, 0xe7, 0xb6, 0xe6, 0xf6, 0x76, 0xe7, 0x76, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xdb, 0xd1, 0x83, 0x07, 0xd7, 0x76, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x76, 0xfc, 0xe0, 0x76, 0x78, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x9f, 0x1f, 0x88, 0x9f, 0x0e, 0x48, 0x9a, 0x9b, 0x5d, 0x18, 0x5b, 0x1a, 0xd9, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x7e, 0x47, 0x0f, 0x1e, 0x5c, 0xdb, 0xb1, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0xdf, 0x31, 0x83, 0xdf, 0x21, 0x38, 0x78, 0x1d, 0xc3, 0xc7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0xf8, 0x1d, 0x92, 0xc1, 0xef, 0x10, 0x1d, 0x1c, 0x3a, 0x2d, 0xab, 0xc3, 0x29, 0xb6, 0x80, 0x3f, 0x16, 0x26, 0x47, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x70, 0x64, 0x08, 0x3d, 0x78, 0xb1, 0xbc, 0x48, 0x03, 0xf0, 0x44, 0x17, 0x76, 0x76, 0x56, 0x46, 0xc6, 0x02, 0x52, 0xe7, 0x46, 0x97, 0x07, 0x57, 0x46, 0x06, 0x52, 0x66, 0x57, 0xe6, 0x46, 0xb7, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x62, 0x79, 0x91, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x68, 0xe5, 0x8e, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0c, 0xe7, 0x8e, 0x83, 0xd7, 0x31, 0x7c, 0xb4, 0x02, 0x7e, 0x5b, 0xd8, 0xdc, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0x2d, 0xfd, 0x22, 0x0d, 0xe0, 0xd7, 0x56, 0xd6, 0xf6, 0x26, 0x97, 0x07, 0x52, 0x37, 0x17, 0x76, 0x56, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x96, 0x7e, 0x91, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xce, 0xea, 0x8e, 0x0d, 0x42, 0x0d, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0xfc, 0x0c, 0xf9, 0xe0, 0x67, 0x18, 0x6d, 0x90, 0x94, 0x16, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0xf4, 0x07, 0xc6, 0x82, 0x9f, 0x61, 0x71, 0xf0, 0x1e, 0x83, 0x91, 0x0d, 0x96, 0x39, 0xc9, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x67, 0xd8, 0x1c, 0xbc, 0xc7, 0x60, 0xe4, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x9a, 0xee, 0xd8, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xc8, 0xee, 0x38, 0x28, 0xbd, 0xe9, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xe8, 0xee, 0x38, 0x38, 0x01, 0x89, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x0d, 0xde, 0xb1, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x36, 0xde, 0x71, 0xb0, 0x0a, 0x32, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x30, 0xf4, 0x8e, 0x83, 0x30, 0x1d, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x83, 0xbd, 0x63, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd6, 0xbd, 0xe3, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x95, 0xef, 0xd8, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0xa5, 0x5f, 0xa4, 0xaa, 0xc3, 0x29, 0xb6, 0x80, 0x2f, 0xf7, 0xf6, 0xb6, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x70, 0x64, 0x08, 0x3d, 0x78, 0x11, 0xc7, 0x48, 0x03, 0xd0, 0xde, 0x56, 0x46, 0x17, 0xd6, 0xe2, 0x16, 0xd6, 0x56, 0x36, 0x07, 0x17, 0x36, 0x56, 0x06, 0x82, 0x32, 0x57, 0x07, 0x57, 0x26, 0x07, 0x12, 0x46, 0x66, 0x17, 0xe6, 0x36, 0x56, 0x46, 0x96, 0xda, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x11, 0xc7, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2e, 0x7e, 0xc7, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbe, 0x6d, 0x65, 0x74, 0x61, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x15, 0xfc, 0x1d, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0x1d, 0xab, 0x22, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x05, 0xe0, 0x71, 0xf0, 0x24, 0x23, 0x91, 0x0e, 0xa7, 0xd8, 0x1a, 0x3c, 0x58, 0x1d, 0x64, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0x83, 0xd5, 0x41, 0x1a, 0x00, 0x5f, 0xc7, 0xe4, 0xc2, 0xe6, 0xd0, 0x40, 0xd8, 0xc2, 0xc4, 0xca, 0xd8, 0x40, 0xc2, 0xdc, 0xc8, 0x40, 0xe8, 0xe4, 0xc2, 0xc6, 0xca, 0x40, 0xb0, 0xb0, 0x40, 0xcc, 0xc2, 0xd2, 0xd8, 0x5e, 0xe4, 0xea, 0xd2, 0xdc, 0x5e, 0xc6, 0xe4, 0xea, 0xc8, 0x5e, 0xcc, 0xd8, 0xc2, 0xee, 0x5e, 0xd8, 0xc2, 0xc6, 0xd6, 0x5e, 0xda, 0xd2, 0xe6, 0xe6, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0xac, 0x0e, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x53, 0xe0, 0xb1, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0x13, 0x3c, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xb7, 0xbd, 0xd1, 0x95, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x07, 0x1e, 0x07, 0xeb, 0xb5, 0x9e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x80, 0xf0, 0xd8, 0xf0, 0xe7, 0xd2, 0x06, 0x27, 0xca, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xda, 0x06, 0x8f, 0x83, 0x06, 0xc5, 0x03, 0x9b, 0x35, 0x78, 0xa1, 0xe3, 0xc7, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x17, 0x3a, 0x7e, 0x34, 0x80, 0xff, 0x58, 0x58, 0xdd, 0x5c, 0x19, 0x48, 0x98, 0x1b, 0x19, 0x48, 0xd8, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x0b, 0x1d, 0x3f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x2e, 0x3c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfe, 0x86, 0xc7, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x99, 0xba, 0xc7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x69, 0x86, 0xc7, 0xc1, 0xd3, 0xd3, 0x3d, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x19, 0xf1, 0xd8, 0xf0, 0xe7, 0xd2, 0x80, 0x2f, 0x16, 0xc6, 0xc6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x83, 0x78, 0x6c, 0xf8, 0x77, 0x7e, 0x0d, 0x5e, 0xee, 0x34, 0x52, 0xad, 0x06, 0xaf, 0xa8, 0x14, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0x8a, 0x4a, 0x91, 0x06, 0xf0, 0x2c, 0xb3, 0x2b, 0x73, 0xa3, 0x03, 0x81, 0x93, 0x2b, 0xa3, 0x2b, 0xc3, 0xa3, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x45, 0xa5, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x37, 0x8a, 0xc7, 0xc1, 0x19, 0x09, 0x75, 0x35, 0x78, 0x39, 0x06, 0xc8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x97, 0x63, 0x80, 0x34, 0x80, 0xf7, 0x58, 0x98, 0x1c, 0x19, 0xc8, 0x5d, 0x1a, 0x1d, 0x1a, 0xc8, 0x58, 0x58, 0xdd, 0x5c, 0xd9, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xcb, 0x31, 0x40, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x5c, 0x3c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb3, 0x8c, 0xc7, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x45, 0xa5, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1e, 0x8c, 0xc7, 0xc1, 0xbb, 0x2d, 0x45, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xd2, 0xf1, 0xd8, 0xf0, 0xe7, 0xd2, 0x06, 0x2f, 0x96, 0x17, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xbf, 0xf1, 0xd8, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0x58, 0x5e, 0xa4, 0x3a, 0x9c, 0x62, 0x0b, 0xf8, 0x72, 0x6f, 0x6f, 0xe6, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xd7, 0xa6, 0x8d, 0x74, 0xb0, 0x46, 0x8b, 0x7b, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xb5, 0x69, 0x23, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x21, 0x40, 0x1e, 0x1b, 0x9e, 0x78, 0xdf, 0x60, 0x21, 0x16, 0xf7, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xdf, 0x90, 0xc7, 0xc1, 0x4b, 0x54, 0x46, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x3c, 0xf2, 0x38, 0x68, 0x76, 0x3b, 0xaa, 0x59, 0x83, 0x97, 0xa9, 0x7b, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x70, 0x64, 0x08, 0x3d, 0x78, 0x99, 0xba, 0x47, 0x03, 0xf8, 0x8e, 0x85, 0xd5, 0xcd, 0x85, 0xb1, 0x81, 0xa0, 0xa5, 0xcd, 0xd1, 0xbd, 0xc9, 0xe5, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x4c, 0xdd, 0x63, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x90, 0xc9, 0x63, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xfa, 0xc9, 0xe3, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x9e, 0xf2, 0x38, 0x78, 0xb7, 0xa5, 0x48, 0x87, 0x53, 0x6c, 0x0d, 0x5e, 0xee, 0x34, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0xe5, 0x4e, 0x23, 0x0d, 0xc0, 0x13, 0x59, 0x9e, 0x5b, 0x58, 0x5b, 0xda, 0x18, 0xc8, 0x5a, 0x99, 0x9c, 0x5b, 0x19, 0x1b, 0x48, 0xd8, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xcb, 0x9d, 0x46, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0xb2, 0x3c, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0xb9, 0x3c, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0x7b, 0xd8, 0x44, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x3c, 0xcc, 0x63, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x9a, 0x79, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x07, 0x84, 0x7b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x91, 0x79, 0x1c, 0xac, 0xd7, 0x7a, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x98, 0xcd, 0x63, 0xc3, 0x9f, 0x4b, 0x03, 0x3e, 0x5d, 0xd8, 0xdc, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xa6, 0xe6, 0xb1, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0x64, 0x8e, 0x48, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x58, 0x9c, 0xc7, 0xc1, 0x2b, 0x26, 0x47, 0x9a, 0x35, 0x78, 0x4b, 0x6f, 0xc8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xb7, 0xf4, 0x86, 0x34, 0x00, 0x4f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x6f, 0xe9, 0x0d, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xb2, 0xf3, 0xd8, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x0b, 0xae, 0x4c, 0x6e, 0x0e, 0xae, 0x6c, 0x8c, 0x2e, 0xcd, 0xae, 0x6c, 0xc3, 0x07, 0xf3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x1c, 0x7a, 0x1c, 0xac, 0xd7, 0x7a, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xca, 0xf3, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x0d, 0x7e, 0x1e, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0x45, 0x1c, 0xab, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xda, 0x3d, 0x8f, 0x83, 0xf5, 0x5a, 0xcf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x10, 0x7a, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0x1b, 0x0b, 0x93, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0x03, 0x3d, 0x0e, 0xd6, 0x6b, 0x3d, 0x77, 0x38, 0xc5, 0x16, 0xf0, 0xef, 0xd2, 0xdc, 0xc8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe7, 0xb0, 0x8e, 0x34, 0x00, 0x4f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x4d, 0x8b, 0x1e, 0x1b, 0x1e, 0xce, 0xdf, 0x20, 0x61, 0x1a, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd2, 0xd1, 0x63, 0x83, 0xa0, 0xfd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb1, 0xd3, 0x63, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x7f, 0x7a, 0x1c, 0x3c, 0x32, 0x51, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x14, 0x53, 0x8f, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x8e, 0x7a, 0x1c, 0x9c, 0x91, 0x50, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x70, 0xf5, 0xd8, 0xf0, 0xe7, 0xd2, 0xe0, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe6, 0xaa, 0xc7, 0xc1, 0xa1, 0xd3, 0xb2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0x63, 0x3d, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x10, 0xad, 0xc7, 0xc1, 0xbb, 0x3c, 0x45, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xd3, 0xf5, 0xd8, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xff, 0xad, 0xc7, 0xc1, 0xa1, 0xd3, 0xb2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x21, 0x3d, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd9, 0xa4, 0xc7, 0xc1, 0x3b, 0x1a, 0x45, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xb2, 0xf4, 0xd8, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x31, 0xa6, 0xc7, 0x86, 0x7f, 0xe7, 0x37, 0x7c, 0x1e, 0x54, 0xcd, 0x02, 0xbe, 0xdc, 0xdb, 0x9b, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xf0, 0xd6, 0xe6, 0x91, 0x06, 0xe0, 0x01, 0x2e, 0x4c, 0x8e, 0x2e, 0x2d, 0x8c, 0x0d, 0xc4, 0x2d, 0xac, 0xad, 0x6c, 0x0e, 0x2e, 0x6c, 0xac, 0x6c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0x5b, 0x9b, 0x47, 0x3a, 0x78, 0x12, 0xf4, 0xc8, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x5b, 0x9b, 0x47, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x91, 0x3d, 0x36, 0x08, 0x35, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0x96, 0x3d, 0x36, 0x28, 0x25, 0xc4, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x6e, 0xf6, 0x38, 0x28, 0x28, 0x32, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xa0, 0x3d, 0x36, 0x58, 0x5c, 0x98, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0x9e, 0x87, 0x7c, 0xf0, 0x3c, 0x0c, 0x0e, 0xc2, 0x74, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6b, 0xd8, 0xe3, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x35, 0xf6, 0xd8, 0x20, 0x9c, 0xc6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xf5, 0xf8, 0xc1, 0xf5, 0x50, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x70, 0x3d, 0x04, 0x83, 0xeb, 0x61, 0xb0, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0x2d, 0x6f, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xf5, 0x10, 0x1e, 0xbc, 0xe0, 0x7c, 0xe4, 0xe0, 0xa1, 0xcb, 0x22, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x1e, 0xfd, 0x81, 0xb1, 0xe0, 0x7a, 0x58, 0x0c, 0xae, 0x87, 0xe5, 0x86, 0x3f, 0x97, 0x36, 0x68, 0x72, 0x01, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xd7, 0xc3, 0xea, 0xe0, 0xcd, 0xec, 0x23, 0x07, 0x67, 0x24, 0xd4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0x70, 0x3d, 0x4c, 0x07, 0xd7, 0x43, 0xc5, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb1, 0x30, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xe8, 0x0f, 0x8c, 0x05, 0xd7, 0xc3, 0xfc, 0xe0, 0x89, 0xf2, 0x23, 0x07, 0xeb, 0xb5, 0x9e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xf5, 0xd0, 0x31, 0xb8, 0x1e, 0xba, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0x89, 0x95, 0xb5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x47, 0x7f, 0x60, 0x2c, 0xb8, 0x1e, 0x7a, 0x0e, 0x5e, 0x85, 0x3f, 0x72, 0xf0, 0x94, 0xe0, 0x90, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0xf0, 0x3d, 0x7a, 0xf0, 0xd0, 0x63, 0x8f, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xa3, 0x3f, 0x30, 0x16, 0x7c, 0x8f, 0x19, 0x7c, 0x0f, 0xc1, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0xd1, 0x1f, 0x18, 0x0b, 0xbe, 0x87, 0x64, 0xf0, 0x3d, 0x8c, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x8f, 0xfe, 0xc0, 0x58, 0xf0, 0x3d, 0x44, 0x83, 0xef, 0x21, 0x3e, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0x3c, 0xfa, 0x03, 0x63, 0xc1, 0xf7, 0x90, 0x0f, 0xbe, 0x87, 0xcd, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x75, 0x61, 0x21, 0x55, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x6d, 0x38, 0x11, 0x36, 0x78, 0xf0, 0x06, 0xc6, 0x1a, 0xce, 0x91, 0x05, 0xc1, 0xe2, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0xac, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0xc1, 0xfb, 0x7e, 0x38, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x0a, 0xff, 0xbe, 0x83, 0x80, 0xf7, 0x3f, 0x0e, 0x1d, 0xd2, 0x70, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0x1e, 0xff, 0x40, 0x72, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xc1, 0x1a, 0xbc, 0xa7, 0x81, 0x64, 0x41, 0xb0, 0xc1, 0xf3, 0x1a, 0x48, 0x0e, 0x4d, 0x81, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x0d, 0x56, 0xf1, 0xef, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xff, 0x03, 0x07, 0x4f, 0x76, 0x20, 0x39, 0x0e, 0x1d, 0x5a, 0x80, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x83, 0xc7, 0x36, 0x71, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0x1b, 0x51, 0x3d, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0x06, 0xe3, 0x7f, 0xe0, 0xf8, 0x76, 0x1c, 0x3a, 0xa4, 0xe1, 0x06, 0xc1, 0x06, 0xef, 0xe8, 0x20, 0x39, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0xc5, 0x05, 0xc1, 0xe2, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x76, 0x61, 0x37, 0x74, 0x1c, 0x59, 0xd8, 0x0d, 0xda, 0xff, 0x74, 0x3f, 0x58, 0xbf, 0x0b, 0x75, 0x38, 0xda, 0x0f, 0x8a, 0x17, 0x86, 0xe3, 0xf1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x5c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0xf8, 0x05, 0xc9, 0x20, 0x3b, 0x08, 0x78, 0xff, 0xe3, 0xdb, 0x20, 0x58, 0x1c, 0x76, 0x83, 0xb1, 0xc9, 0xb9, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x10, 0xb6, 0x83, 0xe1, 0x1f, 0x3b, 0x48, 0x06, 0xbb, 0x83, 0x31, 0x3a, 0x79, 0x50, 0x44, 0x9d, 0x0c, 0xbf, 0x20, 0x5a, 0x10, 0x0f, 0xbb, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0x31, 0x1c, 0x76, 0x61, 0x17, 0x6e, 0x83, 0x10, 0x00, 0x3f, 0x18, 0x8b, 0x9d, 0x87, 0xf5, 0xcd, 0x43, 0x3a, 0x77, 0x61, 0x17, 0x76, 0x83, 0x47, 0xc8, 0x12, 0x2c, 0xdc, 0xe2, 0x41, 0x7a, 0x98, 0xf7, 0xc1, 0x72, 0xdb, 0x9d, 0xc3, 0xd1, 0xbe, 0x20, 0x5a, 0xc8, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xf6, 0xfa, 0x0e, 0xce, 0x79, 0xc7, 0x83, 0x64, 0x60, 0xa8, 0x0e, 0x7b, 0xb6, 0x07, 0x05, 0x53, 0xc9, 0x21, 0x55, 0x33, 0x88, 0x16, 0x3a, 0x08, 0x16, 0x04, 0x1b, 0xbc, 0xf6, 0x86, 0x64, 0x90, 0x0c, 0x0c, 0xd5, 0x61, 0xbb, 0xf7, 0xa0, 0x60, 0x2a, 0x39, 0xa4, 0x6a, 0x0e, 0xa9, 0x9a, 0xe3, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xcc, 0x0f, 0x89, 0x99, 0xe3, 0xf9, 0xf1, 0xed, 0x78, 0xbc, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0x1c, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0xa5, 0x82, 0x81, 0x41, 0x32, 0x50, 0xfc, 0x0e, 0x12, 0x13, 0x0d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x37, 0x48, 0x0f, 0xf3, 0x1e, 0xf0, 0xd9, 0xea, 0xd8, 0xd8, 0x8e, 0x43, 0xc3, 0x6e, 0xd0, 0x3a, 0x1f, 0xc0, 0x0a, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x07, 0xc1, 0x82, 0x64, 0x20, 0xfd, 0x73, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xc2, 0x73, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x04, 0x78, 0x86, 0x91, 0xbd, 0xc9, 0xb9, 0xb5, 0xb8, 0xbd, 0xb5, 0xb0, 0xd5, 0xb1, 0xb1, 0xc3, 0x6f, 0x3c, 0x1f, 0x0f, 0xde, 0xe2, 0x44, 0x72, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0xdd, 0x90, 0xaf, 0x5d, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x64, 0xc8, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x7c, 0x6e, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x79, 0x4a, 0xc9, 0x20, 0x19, 0xec, 0x0e, 0x06, 0x19, 0xe4, 0xc1, 0x53, 0x88, 0x48, 0x8e, 0x43, 0xc7, 0xa1, 0x43, 0x0c, 0x0f, 0x02, 0x13, 0x7b, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0xbc, 0x5c, 0x8a, 0xe4, 0x60, 0x44, 0xe1, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xcb, 0x53, 0x4a, 0x06, 0xc9, 0x60, 0x74, 0x30, 0xc8, 0x20, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xbc, 0x9c, 0x88, 0xe4, 0x30, 0x2e, 0xc7, 0xa1, 0xe1, 0x37, 0x18, 0xb6, 0x01, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x86, 0x5f, 0x10, 0x2d, 0x58, 0x0f, 0xbb, 0x21, 0x5f, 0xbb, 0x21, 0x86, 0xc3, 0x6e, 0x30, 0x3a, 0xd6, 0x0f, 0xe9, 0xdc, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x6d, 0xd8, 0x0a, 0x0c, 0x92, 0x81, 0xe2, 0x77, 0x50, 0x6c, 0x80, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x6e, 0x90, 0x1e, 0xe6, 0x3d, 0xe0, 0xeb, 0xd5, 0xcd, 0x95, 0x1d, 0x87, 0x86, 0xdd, 0xa0, 0x75, 0x3e, 0x80, 0x15, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x0e, 0x82, 0x0d, 0x1e, 0x48, 0x0b, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x41, 0xb2, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x37, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x4d, 0x80, 0x67, 0x18, 0xd9, 0x9b, 0x9c, 0x5b, 0x8b, 0xdb, 0x5b, 0x8b, 0x5e, 0xdd, 0x5c, 0x39, 0xfc, 0xc6, 0xf3, 0xf1, 0xe0, 0xfd, 0x6f, 0x24, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xd8, 0x0d, 0x6b, 0xbf, 0x6b, 0x88, 0xe1, 0x20, 0x58, 0x90, 0x0c, 0x39, 0x08, 0x78, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0xbc, 0x3b, 0x38, 0x9d, 0x21, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x71, 0x0b, 0xc9, 0xc1, 0xdb, 0xcd, 0x48, 0x8e, 0x43, 0xc7, 0xa1, 0x43, 0x0c, 0x0f, 0xc6, 0x9b, 0xce, 0x1a, 0x62, 0x38, 0x08, 0x36, 0x78, 0x2e, 0x1d, 0xc9, 0xc1, 0x88, 0xc2, 0x1d, 0x04, 0x0b, 0x82, 0x0d, 0x1e, 0xe0, 0x42, 0x32, 0x48, 0x06, 0xa3, 0x83, 0x31, 0x3a, 0x39, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0xa9, 0x67, 0x24, 0x87, 0x71, 0x39, 0x0e, 0x0d, 0xbf, 0x41, 0x43, 0x1e, 0x4f, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x86, 0x5f, 0x10, 0x2d, 0x68, 0x1f, 0x76, 0xc3, 0xda, 0xef, 0xc1, 0x2b, 0xc4, 0x48, 0x8e, 0xc7, 0x83, 0x60, 0xe1, 0x17, 0x04, 0x0b, 0x92, 0x81, 0x36, 0x7d, 0x07, 0xa7, 0x33, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x1b, 0xac, 0xb9, 0x40, 0x3a, 0x38, 0x9d, 0x21, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x28, 0xfc, 0xfb, 0x0e, 0x4e, 0x67, 0xc8, 0xc7, 0xa1, 0xe3, 0xdb, 0xf0, 0x0b, 0xa2, 0x85, 0x0c, 0xbb, 0x21, 0x31, 0xb3, 0x20, 0x58, 0x10, 0x6c, 0xf0, 0xda, 0x1b, 0x92, 0x41, 0x32, 0x30, 0x7a, 0x07, 0x63, 0x30, 0x72, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xc2, 0x56, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5e, 0x7b, 0x43, 0x32, 0x48, 0x06, 0xc2, 0x35, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x2f, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xb0, 0x1d, 0x0c, 0x47, 0xe9, 0x41, 0x32, 0xcc, 0xc1, 0x0a, 0xd8, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0x0d, 0xd2, 0xc3, 0xbc, 0x0f, 0x9e, 0x04, 0x07, 0x72, 0x1c, 0x3a, 0x9e, 0x1f, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x28, 0xc2, 0x18, 0x16, 0x37, 0x44, 0x73, 0x10, 0x2c, 0x48, 0x86, 0x1c, 0x0c, 0xff, 0xd8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0xbc, 0x3b, 0x38, 0x50, 0x24, 0x1f, 0x9a, 0x02, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x64, 0x83, 0x92, 0x94, 0xeb, 0xe0, 0x9c, 0x77, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xe0, 0xec, 0xde, 0x77, 0x70, 0xce, 0x3b, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x6b, 0x6f, 0x48, 0x06, 0xc9, 0x40, 0xb8, 0x0e, 0x56, 0x70, 0xf6, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbb, 0x41, 0x30, 0xec, 0x2f, 0xec, 0xc2, 0x6d, 0xf0, 0xb2, 0x1a, 0x92, 0x83, 0xf1, 0xd3, 0xb5, 0xb0, 0x1b, 0x94, 0x7b, 0x87, 0x0b, 0xbb, 0x70, 0x8b, 0x07, 0x0f, 0x08, 0xf7, 0x38, 0x34, 0xd4, 0x59, 0xd8, 0x0d, 0xd6, 0xbf, 0xec, 0x2f, 0xec, 0xc2, 0x2e, 0xf4, 0xe0, 0xc4, 0x72, 0x7f, 0x58, 0xdf, 0xdc, 0xe0, 0xa0, 0x12, 0x7f, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8f, 0x8f, 0x43, 0x1b, 0x0c, 0x44, 0xea, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x55, 0xf8, 0x05, 0xc9, 0x40, 0xfb, 0xbe, 0x83, 0x73, 0xde, 0xf1, 0xf1, 0x6d, 0xf8, 0x85, 0xdf, 0xa0, 0xa9, 0x25, 0xa7, 0xe3, 0xdb, 0xf1, 0xed, 0x60, 0xf0, 0x4e, 0x2e, 0x0e, 0xbb, 0xb0, 0x1b, 0xa4, 0x1d, 0xfd, 0x2c, 0xec, 0xc2, 0x6d, 0xf0, 0xb2, 0x1a, 0x92, 0x83, 0x36, 0x01, 0x02, 0x16, 0x76, 0x83, 0x55, 0x35, 0x41, 0x0b, 0xbb, 0x70, 0x1b, 0xbc, 0x6d, 0x95, 0xe4, 0xa0, 0x4d, 0x3a, 0x92, 0x85, 0x5d, 0xe8, 0x41, 0x83, 0x0a, 0x01, 0x0b, 0xbb, 0xb0, 0x0b, 0x3d, 0x68, 0x00, 0x94, 0xe4, 0xb0, 0xbe, 0xb9, 0x70, 0x1b, 0x62, 0x38, 0x41, 0x1c, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x85, 0xdf, 0x78, 0x3c, 0xec, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x68, 0xbf, 0x73, 0x70, 0xce, 0x3b, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x2c, 0x64, 0x8c, 0x3a, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x27, 0x18, 0xe3, 0xe3, 0xd0, 0x6a, 0xd0, 0x00, 0x28, 0xc9, 0x20, 0xd8, 0xe0, 0x15, 0x9a, 0x24, 0x07, 0x03, 0xbd, 0x6c, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x61, 0x3b, 0x38, 0x66, 0x15, 0x1f, 0x3c, 0xbf, 0xe6, 0xe0, 0xa0, 0xb4, 0x1e, 0x3b, 0x9c, 0x62, 0x87, 0x53, 0xec, 0x78, 0x7c, 0x1c, 0x1a, 0x7e, 0x41, 0xb4, 0xc0, 0xf8, 0x1f, 0x84, 0x00, 0xf8, 0xf1, 0x78, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x36, 0x68, 0xff, 0x1f, 0xea, 0xe0, 0x5c, 0x7f, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xb0, 0xd7, 0x77, 0x70, 0xae, 0x3f, 0x1e, 0x24, 0x03, 0xe1, 0x1a, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0x81, 0xcf, 0x24, 0x83, 0x64, 0x60, 0xf4, 0x0e, 0xed, 0x5b, 0x0e, 0x06, 0xb6, 0xe8, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x73, 0x64, 0xef, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0xca, 0x0e, 0x4e, 0x1b, 0xca, 0x07, 0x47, 0x15, 0xe7, 0xe3, 0xf1, 0x71, 0x68, 0x0d, 0x02, 0x13, 0x7b, 0xc3, 0x5e, 0xe1, 0x71, 0xe8, 0xa0, 0x70, 0x4b, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x52, 0xc1, 0xc0, 0x41, 0x63, 0xfc, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x8f, 0x1b, 0xa4, 0x87, 0x79, 0x1f, 0xa4, 0xae, 0x79, 0x1f, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x41, 0x1b, 0xb6, 0x02, 0x83, 0x64, 0xa0, 0xf8, 0x1d, 0xf6, 0x6c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x37, 0x48, 0x0f, 0xf3, 0xde, 0xe0, 0x61, 0x20, 0x18, 0x1d, 0x87, 0x86, 0xdd, 0xb0, 0xbe, 0xb7, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0x31, 0xdc, 0x10, 0xc3, 0x0d, 0x5e, 0xba, 0x47, 0xb2, 0x06, 0x8f, 0x0f, 0x27, 0x39, 0x08, 0x01, 0xf0, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0xc1, 0x03, 0x69, 0x01, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x48, 0x36, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x09, 0xe0, 0xa3, 0x6e, 0xae, 0x4e, 0x0e, 0xae, 0x05, 0xed, 0xed, 0xcd, 0xad, 0xc5, 0xed, 0xad, 0x25, 0x4c, 0xce, 0xee, 0x1d, 0x7e, 0xe3, 0xf9, 0x78, 0xf0, 0x78, 0x76, 0x92, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xb1, 0x3b, 0x38, 0x9d, 0x21, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x38, 0x08, 0x16, 0x24, 0x03, 0xe7, 0xdd, 0xc1, 0x39, 0xef, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0x6d, 0x93, 0x24, 0x83, 0x64, 0xb0, 0x3b, 0x58, 0x01, 0x5b, 0x72, 0xf0, 0x64, 0x70, 0x92, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0x74, 0x30, 0xb0, 0x45, 0x37, 0xc4, 0x70, 0x35, 0xc4, 0x70, 0x10, 0x6c, 0xf0, 0x9a, 0x1d, 0x88, 0xc3, 0x1e, 0xef, 0x20, 0xd8, 0xe0, 0x35, 0x3b, 0x10, 0x07, 0x03, 0x5b, 0x74, 0x0d, 0x1e, 0x1f, 0x4e, 0x72, 0x1c, 0x5a, 0x83, 0x37, 0x75, 0x93, 0x1c, 0xf2, 0xb5, 0x87, 0x18, 0x1e, 0x8f, 0x8f, 0xc7, 0x0b, 0xbf, 0x20, 0x58, 0xe1, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xfb, 0xeb, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x8a, 0xcd, 0x61, 0x85, 0xf6, 0x38, 0x74, 0x7c, 0x5b, 0xf8, 0x05, 0xc1, 0x06, 0x6f, 0x04, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0xac, 0xde, 0x1d, 0x56, 0x68, 0x8f, 0x43, 0xc7, 0xb7, 0x85, 0xdf, 0x60, 0xb0, 0x56, 0x1c, 0xdf, 0x16, 0x7e, 0x41, 0xb0, 0x20, 0x19, 0x18, 0xaa, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x18, 0xbb, 0xc3, 0x0a, 0xed, 0x71, 0xe8, 0xf8, 0x36, 0xfc, 0x82, 0x60, 0x83, 0xf7, 0x23, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0x85, 0x5f, 0xe1, 0x37, 0x24, 0x97, 0x86, 0xdf, 0xa0, 0x61, 0x4f, 0xa6, 0xe3, 0xdb, 0xf0, 0x1b, 0x92, 0x4b, 0xc3, 0x2f, 0x08, 0x16, 0x24, 0x03, 0xe3, 0x75, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x43, 0x62, 0xf3, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0xbe, 0x1d, 0x7a, 0xa2, 0x2e, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0xf0, 0x46, 0x80, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x60, 0xb8, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf5, 0xe8, 0x3e, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x83, 0x12, 0xc9, 0xe9, 0xf8, 0x76, 0x1c, 0x3a, 0x0e, 0x1d, 0x9a, 0x02, 0x0d, 0x82, 0x0d, 0x1e, 0x77, 0x51, 0x72, 0x68, 0x01, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0xdf, 0x06, 0xc1, 0xe2, 0x1a, 0xac, 0xe9, 0x38, 0x3a, 0x78, 0x3d, 0x74, 0xc6, 0x06, 0xcf, 0x3f, 0xd2, 0x98, 0x35, 0x18, 0x63, 0x68, 0x79, 0xf0, 0x9a, 0x24, 0x8d, 0xc5, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0x41, 0xc3, 0x22, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x3c, 0x59, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x02, 0xbc, 0xe0, 0xd8, 0xde, 0xee, 0x5a, 0xcc, 0xc2, 0xd2, 0xd8, 0xca, 0xc8, 0x83, 0x76, 0xbd, 0x2a, 0x86, 0xdf, 0x78, 0xbe, 0x78, 0xf0, 0xc4, 0x95, 0x92, 0x43, 0xea, 0xe0, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x83, 0x86, 0x45, 0x56, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x79, 0xb2, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x04, 0xf8, 0xb5, 0xa5, 0xcd, 0xcd, 0xa5, 0xb9, 0x9d, 0xb5, 0xd8, 0x85, 0xb9, 0x95, 0x07, 0xed, 0x7a, 0x55, 0x0c, 0xbf, 0xf1, 0x7c, 0xf1, 0xe0, 0xed, 0x35, 0x25, 0x87, 0xd4, 0xc1, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0x2a, 0x18, 0x18, 0x24, 0x03, 0xd5, 0x6b, 0x10, 0x2d, 0xec, 0x04, 0xfb, 0xf7, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x55, 0x56, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x37, 0x18, 0x8b, 0x9d, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x36, 0xcf, 0xa1, 0x0e, 0xde, 0xe9, 0x44, 0x70, 0x1c, 0x3a, 0x1e, 0xaf, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x1b, 0x34, 0x8f, 0x3f, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0xb2, 0x41, 0xfb, 0xff, 0x50, 0x07, 0xc3, 0x51, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2d, 0xae, 0x44, 0x0d, 0x92, 0x81, 0x70, 0x1d, 0xbc, 0xdb, 0x39, 0x63, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x73, 0x64, 0xef, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0xca, 0x0e, 0x8e, 0x59, 0xc5, 0x07, 0x47, 0x15, 0xe7, 0xe3, 0xf1, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x35, 0x18, 0x5e, 0x14, 0x1b, 0x62, 0xb8, 0x41, 0xc1, 0xf0, 0x78, 0xe8, 0xb1, 0x33, 0xce, 0x06, 0xcf, 0x7b, 0xc3, 0x68, 0x10, 0x2c, 0xce, 0xc1, 0x43, 0x64, 0x36, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xc1, 0x09, 0x13, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x52, 0xb5, 0x97, 0x0d, 0x06, 0x7e, 0xc8, 0xc2, 0x6f, 0x3c, 0xdf, 0x10, 0xcd, 0x83, 0x04, 0x49, 0xe8, 0xc3, 0x5e, 0xe1, 0x71, 0x68, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x86, 0x18, 0x0e, 0xbb, 0x41, 0x68, 0xb9, 0x6f, 0x88, 0xe1, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x6c, 0xf0, 0x40, 0x5a, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0d, 0x92, 0x0d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x37, 0x07, 0x6f, 0xe9, 0x17, 0x39, 0x68, 0xd7, 0xab, 0x62, 0xf8, 0x8d, 0xe7, 0x8b, 0x07, 0x6f, 0xe9, 0x17, 0x39, 0x64, 0xed, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xee, 0xaf, 0x83, 0x73, 0xde, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x20, 0x5d, 0x77, 0x30, 0x1c, 0xa5, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x41, 0x83, 0xa9, 0x49, 0x1b, 0xb2, 0x76, 0x1b, 0x8e, 0xf6, 0x41, 0xb0, 0xc1, 0x0a, 0xcf, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x90, 0xaf, 0x5d, 0xf1, 0x60, 0x61, 0x0c, 0xe9, 0x41, 0xb8, 0xb9, 0xaf, 0x78, 0xd0, 0xf8, 0x7c, 0xd4, 0xc1, 0x52, 0x58, 0x9f, 0x15, 0x03, 0x6f, 0x2e, 0x6c, 0xdc, 0x10, 0xc3, 0xe3, 0xf9, 0x21, 0x86, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0x68, 0xf1, 0xe0, 0x61, 0x20, 0x18, 0x1b, 0x8e, 0xf6, 0x35, 0x68, 0x8b, 0x09, 0x60, 0xc3, 0xd1, 0xbe, 0x06, 0xed, 0x85, 0xda, 0x6f, 0x88, 0xe1, 0xc1, 0x31, 0xab, 0x78, 0xc5, 0x83, 0x26, 0x87, 0xbc, 0x37, 0xc4, 0xf0, 0xe0, 0x24, 0x74, 0xbc, 0x62, 0xe0, 0xd1, 0xc9, 0xa5, 0x1b, 0x62, 0x78, 0x30, 0x1c, 0xa5, 0x57, 0x0c, 0xbc, 0xb8, 0xba, 0x70, 0x43, 0x0c, 0x0f, 0x86, 0x7f, 0xec, 0x8a, 0x81, 0x07, 0x57, 0xe6, 0x6e, 0x88, 0xe1, 0xc1, 0x30, 0xf4, 0x39, 0xc4, 0x70, 0xc5, 0x83, 0x95, 0x9c, 0xa1, 0x1b, 0x62, 0x78, 0x10, 0xf0, 0xfe, 0x2b, 0x1e, 0x6a, 0xc4, 0xc1, 0x2a, 0x90, 0xaf, 0x15, 0x0f, 0x9e, 0x5f, 0x44, 0xb2, 0xe1, 0x68, 0x1f, 0x7e, 0x83, 0xc4, 0xbd, 0x99, 0x35, 0x78, 0x80, 0x5a, 0xc9, 0xc1, 0xe3, 0xd9, 0x4a, 0xd6, 0xe0, 0x1d, 0x6b, 0x25, 0x07, 0xe3, 0x5f, 0xf2, 0x10, 0xc3, 0x15, 0x0f, 0xde, 0x8b, 0x46, 0xb2, 0xe1, 0x68, 0x1f, 0x7e, 0x83, 0x94, 0xd2, 0x99, 0x83, 0x87, 0xf0, 0x95, 0xac, 0xc1, 0xdb, 0x56, 0x49, 0x0e, 0x8a, 0x38, 0xa4, 0x43, 0x0c, 0x57, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0x73, 0xf0, 0x08, 0x30, 0x8f, 0xc5, 0x61, 0x37, 0x08, 0x12, 0xef, 0x05, 0xd9, 0x1a, 0xf2, 0xd8, 0x63, 0x00, 0x5f, 0x61, 0x72, 0x76, 0x6f, 0x3a, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x3a, 0x70, 0x69, 0x74, 0x68, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0xe4, 0x20, 0x58, 0xf8, 0x0d, 0xde, 0x25, 0x12, 0x71, 0x30, 0xee, 0xa0, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0xc8, 0x63, 0x8f, 0x01, 0xbe, 0x63, 0x61, 0x6c, 0x6c, 0x3a, 0x20, 0x62, 0x61, 0x64, 0x20, 0x77, 0x61, 0x69, 0xe6, 0x20, 0x58, 0x90, 0x0c, 0x26, 0x07, 0xc3, 0xd0, 0xe7, 0xa0, 0x08, 0x1e, 0x3c, 0x0e, 0x0d, 0xbf, 0x20, 0x5a, 0x30, 0x1d, 0x04, 0x0b, 0x92, 0x81, 0x73, 0xed, 0x60, 0xbc, 0xeb, 0x1c, 0x9a, 0x02, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0x85, 0x75, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x6f, 0x68, 0x24, 0xb8, 0x21, 0x9a, 0x07, 0x0d, 0xd7, 0x92, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0x38, 0x08, 0x36, 0x68, 0x58, 0x64, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x93, 0x27, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0x98, 0xfb, 0x01, 0x3c, 0xc4, 0xc2, 0xe4, 0x5a, 0xe6, 0xe8, 0xc2, 0xc6, 0xd6, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x30, 0x9d, 0x1b, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0xdf, 0x20, 0x5c, 0x11, 0x36, 0x14, 0xd3, 0x35, 0x78, 0xf0, 0x06, 0xc6, 0xc1, 0xc3, 0xea, 0x46, 0x36, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x1e, 0x3c, 0x78, 0x03, 0x63, 0xc3, 0x89, 0xb0, 0xc1, 0xcb, 0x41, 0x4b, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0x06, 0x0b, 0x95, 0xa9, 0x0e, 0xde, 0xa5, 0xee, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xc8, 0xe4, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0xdd, 0x9e, 0x0d, 0x9e, 0xbf, 0x37, 0xb2, 0x86, 0x8f, 0xda, 0x0f, 0x1e, 0xd9, 0x37, 0xd2, 0xc1, 0x31, 0xe6, 0xec, 0x60, 0x25, 0x9d, 0xfe, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x87, 0xf3, 0xf8, 0xa0, 0xd9, 0x4b, 0x88, 0x0d, 0x27, 0xc2, 0x06, 0xef, 0xe6, 0x2c, 0x39, 0x68, 0xd5, 0x15, 0xe2, 0xa0, 0x21, 0x58, 0x88, 0xe1, 0x37, 0x9e, 0x1f, 0xbc, 0x8e, 0xb2, 0xe4, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x85, 0x5f, 0x10, 0x2c, 0xfc, 0x82, 0x60, 0x83, 0x73, 0xf0, 0xf7, 0xa1, 0x29, 0xd0, 0x41, 0x39, 0x94, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0xdb, 0xe0, 0x01, 0x08, 0x11, 0x07, 0xe5, 0x91, 0xc1, 0x71, 0xe8, 0xa0, 0x64, 0x68, 0x3a, 0xb4, 0x00, 0x3b, 0x0e, 0x1d, 0x8f, 0x57, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0x1b, 0x4e, 0xb1, 0x0d, 0x5a, 0x61, 0x67, 0x3a, 0x08, 0x80, 0xfb, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x1b, 0xac, 0x8f, 0x74, 0x18, 0x24, 0x83, 0xdd, 0x20, 0x5a, 0xd8, 0x0d, 0x1d, 0xc3, 0x0e, 0xc6, 0x62, 0xe7, 0x71, 0xe8, 0x60, 0xb1, 0x16, 0xd3, 0xf0, 0x0b, 0xa2, 0x05, 0xdd, 0x07, 0x21, 0x00, 0x7e, 0x3c, 0x1e, 0x7e, 0x83, 0xc1, 0x0e, 0x30, 0xfc, 0x82, 0x68, 0x81, 0xfd, 0xfb, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x0d, 0x5b, 0x81, 0x41, 0x32, 0x30, 0x54, 0x83, 0x68, 0x61, 0x27, 0xe8, 0xbf, 0x7f, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x26, 0xac, 0x86, 0xdf, 0x78, 0xbe, 0xc1, 0xe0, 0x8f, 0x39, 0x74, 0x0c, 0x3b, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x82, 0x64, 0x60, 0xaa, 0x0e, 0x2b, 0xb4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x6f, 0xc8, 0xda, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0x50, 0x50, 0x8b, 0x2d, 0x0e, 0xa2, 0x05, 0xe3, 0x83, 0x84, 0xf8, 0xa1, 0x43, 0x72, 0xe9, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0xbb, 0xb0, 0x1b, 0xd6, 0x42, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0x1e, 0x94, 0xd8, 0x83, 0x87, 0x74, 0xee, 0x06, 0x8d, 0x74, 0xdb, 0x0f, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0xd0, 0xcc, 0x46, 0xc0, 0x82, 0x64, 0x20, 0x56, 0x07, 0x25, 0x42, 0xd6, 0xf0, 0x0b, 0xa2, 0x05, 0xc2, 0x7d, 0x88, 0xe1, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x82, 0xdb, 0x07, 0xed, 0x81, 0xde, 0x1f, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0x66, 0x23, 0x60, 0xf8, 0x05, 0xd1, 0x02, 0x11, 0x3f, 0x08, 0x01, 0xf0, 0xe3, 0xf1, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0xe1, 0x17, 0x04, 0x0b, 0x92, 0xc1, 0xaf, 0xe3, 0xf9, 0xc1, 0xc0, 0x16, 0x3d, 0x58, 0x92, 0x43, 0xb3, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x16, 0x06, 0xb3, 0x38, 0xfc, 0x82, 0x68, 0x81, 0xd0, 0x1f, 0x1a, 0x09, 0x0e, 0xa2, 0x05, 0xe7, 0x0f, 0xd1, 0x3c, 0x1e, 0x0f, 0xbf, 0x20, 0x5a, 0xf8, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0xde, 0x25, 0x12, 0x71, 0xb0, 0xba, 0x17, 0x66, 0x90, 0x0c, 0xb2, 0x43, 0x4f, 0xa4, 0x43, 0x27, 0xa2, 0xe3, 0xf1, 0x20, 0x58, 0xdc, 0xe0, 0x91, 0xe2, 0x24, 0x03, 0xbe, 0x5d, 0xd9, 0x59, 0xd8, 0xf0, 0x0b, 0xa2, 0x05, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0x0e, 0xce, 0xe8, 0x07, 0xef, 0x4d, 0x0b, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0xa5, 0xb0, 0x3e, 0x87, 0x71, 0x39, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0x2f, 0x34, 0x2e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x54, 0xed, 0x65, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x38, 0x38, 0xa3, 0x1f, 0x94, 0x0c, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xd1, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xc9, 0x93, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0xe6, 0xe0, 0x0d, 0xe3, 0x25, 0x07, 0x2d, 0xb6, 0x0d, 0x1c, 0x84, 0x00, 0xf8, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x37, 0x53, 0x78, 0x2c, 0x0e, 0x82, 0x85, 0x5d, 0xd8, 0x85, 0xdd, 0xd0, 0x74, 0xe8, 0xb0, 0xbe, 0xb9, 0xb0, 0x0b, 0x3d, 0x48, 0x73, 0xcf, 0x38, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0xe2, 0x1c, 0x3c, 0x58, 0x1d, 0xe4, 0x10, 0xc3, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xbf, 0xf1, 0x7c, 0xd8, 0x85, 0xdb, 0xe0, 0x4d, 0x85, 0x1d, 0x87, 0x46, 0x82, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xd8, 0x85, 0xdd, 0xe0, 0xa9, 0xf5, 0x25, 0x0b, 0xbb, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x07, 0x45, 0x27, 0xcc, 0x61, 0x7d, 0xf3, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x6b, 0x88, 0xe1, 0x82, 0x60, 0x41, 0x32, 0x68, 0x39, 0x18, 0x8e, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x20, 0x58, 0x90, 0x0c, 0x28, 0xd5, 0xfb, 0x0e, 0x8e, 0x59, 0xc5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x96, 0xd8, 0x9e, 0x8e, 0x43, 0x07, 0x69, 0xd5, 0xd1, 0x07, 0x6d, 0x97, 0xe8, 0x1f, 0x87, 0x36, 0x78, 0x53, 0x61, 0xc7, 0x1a, 0x14, 0x9d, 0x30, 0x87, 0x26, 0x5c, 0x0b, 0xbb, 0xb0, 0x0b, 0xb7, 0x78, 0xd0, 0x96, 0x28, 0xe0, 0xc1, 0x5b, 0x44, 0x2a, 0x36, 0xc4, 0x70, 0xb8, 0xc5, 0x00, 0x0f, 0xb2, 0xb2, 0x30, 0xb6, 0x96, 0xb3, 0x30, 0x36, 0xf6, 0xe0, 0x2d, 0x22, 0x15, 0xab, 0xc1, 0x5b, 0x44, 0x2a, 0x06, 0xc1, 0x82, 0x60, 0x71, 0x83, 0x00, 0xb8, 0x3f, 0x9c, 0x62, 0x8b, 0x83, 0x60, 0x15, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0x9a, 0x2f, 0x1d, 0x0c, 0x43, 0x9f, 0x83, 0x64, 0x43, 0x83, 0x05, 0xc1, 0x06, 0x6f, 0x80, 0x30, 0x39, 0x48, 0x2e, 0x1f, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0xda, 0xf7, 0x1d, 0x1c, 0xb3, 0x8a, 0x0f, 0x4e, 0xd6, 0xdd, 0x0b, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x1b, 0xac, 0xb9, 0x40, 0x3a, 0x38, 0x66, 0x15, 0x1f, 0x9a, 0x02, 0x0d, 0x82, 0x0d, 0x9e, 0x60, 0x61, 0x72, 0x68, 0x01, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0xce, 0xea, 0xe7, 0x1b, 0xf6, 0x0a, 0x37, 0x08, 0x4c, 0xec, 0x83, 0xf1, 0xa6, 0x73, 0x1c, 0x3a, 0x74, 0x52, 0x5b, 0x10, 0x2c, 0x48, 0x06, 0xee, 0xb7, 0x83, 0xf1, 0xae, 0x73, 0xf0, 0x50, 0xda, 0x8c, 0x43, 0x27, 0xb5, 0x43, 0x34, 0x0f, 0x31, 0x1c, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x47, 0xc5, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x5f, 0x83, 0xa2, 0x13, 0xe6, 0xd0, 0x49, 0xed, 0x10, 0xcd, 0x83, 0xc6, 0x22, 0x5b, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0xc3, 0x22, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x3c, 0x59, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xb8, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0xf0, 0xf0, 0x60, 0xf5, 0xa8, 0xfe, 0x86, 0xb9, 0x1f, 0x5c, 0x3c, 0x58, 0x3d, 0xaa, 0xbf, 0x61, 0xee, 0x07, 0x1f, 0x0f, 0x9a, 0xd8, 0x03, 0x39, 0xd4, 0xcc, 0x0d, 0x27, 0xc2, 0x06, 0x8f, 0x5c, 0x31, 0xd9, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0xc1, 0x0a, 0x42, 0xb7, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0x56, 0x10, 0xba, 0x6d, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0xcd, 0x41, 0x0b, 0xa7, 0xe3, 0x1b, 0x26, 0x6e, 0x0d, 0x13, 0xb7, 0x41, 0xbb, 0x5e, 0x15, 0x07, 0xed, 0x7a, 0x55, 0x6c, 0x98, 0xb8, 0x35, 0x58, 0xd0, 0x30, 0xb5, 0x86, 0x89, 0x5b, 0xc3, 0xc4, 0xad, 0xc1, 0x82, 0x86, 0xa9, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0xcd, 0x41, 0x5b, 0xa2, 0x80, 0xab, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x0e, 0x1e, 0xb8, 0x60, 0x72, 0x38, 0xc5, 0xda, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0xb9, 0x61, 0xee, 0x57, 0x0d, 0xde, 0x14, 0x39, 0x32, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0x4d, 0x91, 0x23, 0x1b, 0x9e, 0x27, 0xd9, 0xe0, 0xe5, 0x4e, 0x23, 0x07, 0xef, 0x73, 0xfc, 0x38, 0x9c, 0x62, 0x6d, 0x98, 0xfb, 0x55, 0x83, 0x07, 0x84, 0x7b, 0xcc, 0x86, 0xb7, 0x75, 0x36, 0x78, 0x40, 0xb8, 0xc7, 0xc1, 0x0b, 0x80, 0x4c, 0x0e, 0xa7, 0x58, 0x1b, 0xe6, 0x7e, 0xd5, 0xe0, 0x65, 0xea, 0x1e, 0xb3, 0xe1, 0x6d, 0x9d, 0x0d, 0x5e, 0xa6, 0xee, 0x71, 0xf0, 0x3e, 0xc7, 0x8f, 0xc3, 0x29, 0xd6, 0x86, 0xb9, 0x5f, 0x35, 0x78, 0x45, 0xa5, 0xc8, 0x6c, 0x78, 0x5b, 0x67, 0x83, 0x57, 0x54, 0x8a, 0x1c, 0x3c, 0x0e, 0xc8, 0xe4, 0x70, 0x8a, 0xb5, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0x0d, 0x5e, 0xe8, 0xf8, 0xb1, 0xa1, 0x98, 0xae, 0x86, 0x19, 0xda, 0xe0, 0xe5, 0xa0, 0x25, 0x1b, 0x4e, 0x84, 0x0d, 0x5e, 0x0e, 0x5a, 0xb2, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0x58, 0xa8, 0x4c, 0x75, 0xf0, 0x3e, 0xc7, 0x8f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa4, 0x0b, 0x8f, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0xcb, 0xd4, 0x3d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x33, 0x3c, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0x37, 0x3c, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0xbc, 0xad, 0x73, 0xf0, 0x2e, 0x75, 0x8f, 0x83, 0x73, 0xbd, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x78, 0x1a, 0x94, 0xc9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd2, 0x85, 0xc7, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0xb9, 0xd3, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x36, 0x88, 0xc7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xcc, 0x88, 0xc7, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0xb7, 0x75, 0x0e, 0x1e, 0x12, 0x35, 0x72, 0x70, 0x00, 0x4d, 0x3a, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xc1, 0xd3, 0xa0, 0x4c, 0x36, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0x97, 0xa9, 0x7b, 0x6c, 0xa8, 0x23, 0x1b, 0x3c, 0x11, 0xb4, 0xe4, 0xe0, 0xd5, 0xa3, 0x25, 0x1b, 0x8a, 0xe9, 0x06, 0xaf, 0x66, 0x32, 0xd9, 0x30, 0xf7, 0x1b, 0xbc, 0xdc, 0x69, 0x64, 0x43, 0x31, 0x5d, 0x0d, 0x33, 0xb4, 0xc1, 0xcb, 0x41, 0x4b, 0x36, 0x9c, 0x08, 0x1b, 0xbc, 0x1c, 0xb4, 0x64, 0x83, 0xc5, 0x6c, 0x50, 0xcb, 0x2c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xf3, 0x24, 0x6b, 0xb0, 0x50, 0x99, 0xea, 0xe0, 0x21, 0x51, 0x23, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x35, 0x59, 0x1e, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x29, 0x88, 0x23, 0x6b, 0xf8, 0xa8, 0xfd, 0xe0, 0x59, 0x8a, 0x23, 0x6b, 0xf8, 0xa8, 0xfd, 0xe0, 0x3d, 0x94, 0x23, 0x1d, 0x1c, 0x63, 0xce, 0x0e, 0x56, 0xd2, 0xe9, 0x1f, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0xf0, 0xb6, 0x35, 0x93, 0x0d, 0x13, 0xb7, 0xc1, 0x13, 0x68, 0x4c, 0x36, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0x57, 0x54, 0x8a, 0x6c, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x0d, 0x5e, 0x0e, 0x5a, 0xb2, 0xe1, 0x44, 0xd8, 0xe0, 0xe5, 0xa0, 0x25, 0x1b, 0x2c, 0x66, 0x83, 0x5a, 0x66, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x9e, 0x27, 0x59, 0x83, 0x85, 0xca, 0x54, 0x07, 0x8f, 0xba, 0x14, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x46, 0xf1, 0xd8, 0xf0, 0x6e, 0xcf, 0x06, 0x8d, 0x60, 0x63, 0x1c, 0x1c, 0x63, 0xce, 0x0e, 0x56, 0xd2, 0xe9, 0x1f, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0xf0, 0xc8, 0x3c, 0x93, 0x0d, 0x73, 0xbf, 0xe1, 0x79, 0x92, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0xdf, 0xe0, 0x01, 0xe1, 0x1e, 0x07, 0xed, 0x7a, 0x55, 0x6c, 0x98, 0xfb, 0x0d, 0xde, 0x14, 0x39, 0xb2, 0xa1, 0x98, 0xae, 0x86, 0x19, 0xda, 0xe0, 0xe5, 0xa0, 0x25, 0x1b, 0x4e, 0x84, 0x0d, 0x5e, 0x0e, 0x5a, 0xb2, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0x58, 0xa8, 0x4c, 0x75, 0xf0, 0xc4, 0xc9, 0x91, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xaa, 0x89, 0x8e, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0xef, 0xf6, 0x6c, 0xf0, 0xe6, 0x20, 0x91, 0x35, 0x7c, 0xd4, 0x7e, 0xf0, 0xbc, 0x21, 0x91, 0x35, 0x7c, 0xd4, 0x7e, 0xf0, 0x94, 0x22, 0x91, 0x0e, 0x8e, 0x31, 0x67, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x78, 0xd2, 0xa1, 0xc9, 0x06, 0x0b, 0x1a, 0xa6, 0xd6, 0x30, 0x71, 0x1b, 0xb4, 0xd1, 0xf0, 0xbf, 0x61, 0xee, 0x07, 0x87, 0x37, 0x14, 0xd3, 0xd5, 0x30, 0x43, 0x1b, 0x2a, 0xe1, 0x86, 0x13, 0x61, 0x43, 0x25, 0xdc, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x2b, 0x49, 0x9c, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x9b, 0x90, 0xe0, 0xe0, 0x5c, 0x6f, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x56, 0x92, 0x38, 0x1f, 0xac, 0x85, 0xd3, 0x3f, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xc1, 0x4a, 0x12, 0xe7, 0x0d, 0x13, 0xb7, 0x41, 0xb3, 0xd1, 0x1b, 0x1b, 0x8a, 0xe9, 0x06, 0x4f, 0x95, 0x34, 0xd9, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0x57, 0xe3, 0x98, 0x1c, 0xa6, 0x73, 0xd6, 0x30, 0x71, 0x1b, 0x34, 0xb5, 0xf0, 0xbf, 0x61, 0xee, 0x07, 0x87, 0x37, 0x14, 0xd3, 0xd5, 0x30, 0x43, 0x1b, 0xbc, 0x1c, 0xb4, 0x64, 0xc3, 0x89, 0xb0, 0xc1, 0xcb, 0x41, 0x4b, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0x06, 0x0b, 0x95, 0xa9, 0x0e, 0xde, 0x6b, 0x24, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xae, 0xd0, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0xdd, 0x9e, 0x83, 0x17, 0xde, 0x88, 0x1c, 0x1c, 0x63, 0xce, 0x0e, 0x56, 0xd2, 0xe9, 0x1f, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0xf0, 0x5e, 0x52, 0x93, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0x1f, 0x1c, 0xde, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x1b, 0xb4, 0xcb, 0x09, 0xb1, 0xe1, 0x44, 0x38, 0x68, 0x20, 0x14, 0xe2, 0xb0, 0x42, 0x7b, 0xf0, 0xb8, 0x4e, 0x93, 0xc3, 0x29, 0xb6, 0x61, 0xee, 0x57, 0x01, 0x6f, 0xee, 0x8d, 0x9d, 0x83, 0x73, 0x66, 0xd2, 0xe1, 0x14, 0x6b, 0xc3, 0xdc, 0xaf, 0x1a, 0x84, 0xa5, 0xcd, 0x1c, 0x24, 0xb6, 0x54, 0x1d, 0x4e, 0xb1, 0x36, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0x0d, 0x13, 0xb7, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x6f, 0xa8, 0x11, 0x1b, 0xea, 0xc8, 0x06, 0x8f, 0x95, 0x34, 0x39, 0x78, 0x37, 0xa5, 0xc9, 0x86, 0xb9, 0xdf, 0xa0, 0xcd, 0x3c, 0xb5, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0xc1, 0xcb, 0x41, 0x4b, 0x36, 0x9c, 0x08, 0x1b, 0xbc, 0x1c, 0xb4, 0x64, 0x83, 0xc5, 0x6c, 0x50, 0xcb, 0x2c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xf3, 0x24, 0x6b, 0xb0, 0x50, 0x99, 0x6a, 0x83, 0x37, 0x81, 0x7f, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x30, 0x9d, 0xb1, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0x7c, 0x3e, 0x6a, 0xc3, 0xf3, 0x24, 0x1b, 0x3c, 0x46, 0xfd, 0x63, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xab, 0x3a, 0x63, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf8, 0x3a, 0xe3, 0xe0, 0xfd, 0x96, 0x26, 0x1b, 0x9e, 0x27, 0xd9, 0xe0, 0x0d, 0xbc, 0x26, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x09, 0xd3, 0x19, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x23, 0xab, 0x1b, 0x37, 0x3c, 0x4f, 0xb2, 0xc1, 0xfb, 0xe0, 0x3f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0xb9, 0x33, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0xbe, 0x33, 0x0e, 0x9a, 0x1f, 0x24, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x6f, 0xe0, 0x35, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x98, 0xce, 0x58, 0xc3, 0xe7, 0x2e, 0x03, 0xde, 0x5d, 0x9a, 0xbc, 0xe1, 0x79, 0x92, 0x0d, 0x9e, 0x6c, 0xff, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x36, 0x9e, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x5c, 0x9e, 0xb1, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0x26, 0x24, 0x38, 0x68, 0xd7, 0xd2, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0xbc, 0x81, 0xd7, 0x64, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x61, 0x3a, 0x63, 0xc3, 0xe7, 0x2e, 0x03, 0x1e, 0x59, 0x1d, 0xb9, 0xe1, 0x79, 0x92, 0x0d, 0x5e, 0xd1, 0xff, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xa2, 0x9e, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xc8, 0x9e, 0xb1, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0x26, 0x24, 0x38, 0x68, 0xde, 0xd3, 0xe0, 0x60, 0x25, 0x9d, 0xfe, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0x2f, 0xd9, 0x35, 0xd9, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x1b, 0xbc, 0x1c, 0xb4, 0x64, 0xc3, 0x89, 0xb0, 0xc1, 0xcb, 0x41, 0x4b, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0x06, 0x0b, 0x95, 0xa9, 0x0e, 0x9e, 0xa9, 0x0b, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xbd, 0xa4, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8b, 0x93, 0xc6, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0xb7, 0x75, 0x0e, 0xde, 0xeb, 0x03, 0x72, 0x70, 0xae, 0x37, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xef, 0xfb, 0x36, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x5e, 0xd2, 0x58, 0xc3, 0xe7, 0x2e, 0x1b, 0x2c, 0x9f, 0xbc, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x9a, 0xd2, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xad, 0xd2, 0xd8, 0xf0, 0xb9, 0xcb, 0x80, 0xc7, 0x16, 0x36, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x60, 0x69, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x6a, 0x69, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0xd0, 0xc8, 0xf6, 0xc0, 0xa1, 0x91, 0xe0, 0x06, 0xab, 0xc0, 0x64, 0x37, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x06, 0xad, 0x8b, 0x15, 0x1c, 0x1a, 0x09, 0x1e, 0x2c, 0x73, 0x92, 0xdd, 0xf0, 0x3c, 0xc9, 0x06, 0xef, 0xfb, 0x36, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x5e, 0xd2, 0x58, 0xc3, 0xe7, 0x2e, 0x03, 0x9e, 0x5e, 0x99, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xe4, 0xa5, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x0a, 0xa6, 0xb1, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0xdc, 0x99, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x31, 0xa6, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x58, 0xa6, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0x6d, 0x9d, 0x83, 0x47, 0xc6, 0x7e, 0x6c, 0xd0, 0x6a, 0xa6, 0x53, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x5e, 0x1a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa1, 0x60, 0x1a, 0x1b, 0x3e, 0x77, 0x19, 0xf0, 0xd8, 0xc2, 0xce, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb2, 0x35, 0x8d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe8, 0x36, 0x8d, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x1f, 0x3c, 0x42, 0x0a, 0x64, 0xc3, 0xf3, 0x24, 0x1b, 0xbc, 0xef, 0xdb, 0x64, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x7b, 0x49, 0x63, 0xc3, 0xe7, 0x2e, 0x1b, 0x9a, 0x1f, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xd1, 0x69, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0xdb, 0x69, 0xac, 0xe1, 0x73, 0x97, 0x01, 0xcf, 0x2c, 0x8c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xca, 0xd3, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xdd, 0xd3, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0xef, 0xd7, 0x02, 0x59, 0xc3, 0x47, 0xed, 0x07, 0x8f, 0xe5, 0x02, 0xe9, 0xa0, 0x61, 0xe7, 0x83, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x38, 0x3a, 0x8d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x66, 0x3b, 0x8d, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xb1, 0xd5, 0xb1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x81, 0x8b, 0x1a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0x8d, 0x1a, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x1b, 0xde, 0xd6, 0x39, 0x68, 0x93, 0x3b, 0x6a, 0x43, 0x33, 0x9e, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0xe8, 0x34, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0xed, 0x34, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0xa7, 0x57, 0x37, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x4f, 0x6a, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x59, 0x6a, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xe7, 0x61, 0x9c, 0x6c, 0xf0, 0xcc, 0x8f, 0x8a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0xe8, 0x34, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0xed, 0x34, 0x36, 0x7c, 0xee, 0x32, 0xe0, 0xd9, 0x85, 0xb9, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa9, 0x9b, 0x1a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x15, 0x9e, 0x1a, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x69, 0x6b, 0x20, 0x6b, 0xf8, 0xa8, 0xfd, 0xe0, 0x09, 0x6d, 0x20, 0x6b, 0xf8, 0xa8, 0xfd, 0xe0, 0xb5, 0x6e, 0x20, 0x2d, 0xc1, 0xfc, 0x76, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0x57, 0x7a, 0x9b, 0x6c, 0x98, 0xb8, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0x91, 0xb9, 0xb4, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0x73, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0x84, 0x2b, 0xc2, 0x86, 0x62, 0xba, 0x06, 0x0f, 0xde, 0xc0, 0x38, 0x78, 0x09, 0xe0, 0xc7, 0x86, 0x19, 0xda, 0xe0, 0xe5, 0xa0, 0x25, 0x1b, 0x4e, 0x84, 0x0d, 0x5e, 0x0e, 0x5a, 0xb2, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0x58, 0xa8, 0x4c, 0x75, 0xb0, 0xee, 0x2c, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x36, 0x24, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0xbb, 0x3d, 0x1b, 0xbc, 0xba, 0xf0, 0x63, 0x0d, 0x1f, 0xb5, 0x1f, 0xbc, 0xee, 0xf0, 0x63, 0x0d, 0x1f, 0xb5, 0x1f, 0x3c, 0x36, 0xf1, 0xa3, 0x83, 0x63, 0xcc, 0xd9, 0xc1, 0x4a, 0x3a, 0xfd, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xe7, 0xf1, 0x41, 0xb3, 0x97, 0x10, 0x1b, 0x4e, 0x84, 0x0d, 0x1e, 0x07, 0x73, 0x72, 0xd0, 0xaa, 0x2b, 0xc4, 0x41, 0x43, 0xb0, 0x10, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0xbf, 0x41, 0x69, 0x96, 0xbd, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0x73, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0x84, 0x2b, 0xc2, 0x86, 0x62, 0xba, 0x06, 0x0f, 0xde, 0xc0, 0x38, 0x78, 0x9c, 0xd6, 0xc8, 0x86, 0x19, 0xda, 0xe0, 0xe5, 0xa0, 0x25, 0x1b, 0x4e, 0x84, 0x0d, 0x5e, 0x0e, 0x5a, 0xb2, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0x58, 0xa8, 0x4c, 0x75, 0xf0, 0x6e, 0x0c, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0e, 0x17, 0x8f, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x2b, 0x2a, 0x45, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0x60, 0x3c, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0x65, 0x3c, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0xbc, 0xad, 0x73, 0xf0, 0xa8, 0x4b, 0x91, 0x83, 0x73, 0xbd, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x78, 0x02, 0xd3, 0xc9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x87, 0x8b, 0xc7, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0xb1, 0xbc, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfb, 0x8d, 0xc7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x91, 0x8e, 0xc7, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0xb7, 0x75, 0x0e, 0x5e, 0x8a, 0x36, 0x72, 0x70, 0x00, 0x4d, 0x3a, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x3c, 0x3e, 0x68, 0xf6, 0x12, 0x62, 0xc3, 0x89, 0xb0, 0xc1, 0xa3, 0x89, 0x4e, 0x0e, 0x5a, 0x75, 0x85, 0x38, 0x68, 0x08, 0x16, 0x62, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0xbc, 0xb3, 0xb2, 0x76, 0x43, 0x1d, 0x59, 0xc3, 0x0c, 0x6d, 0xf0, 0x72, 0xd0, 0x92, 0x0d, 0x27, 0xc2, 0x06, 0x2f, 0x07, 0x2d, 0xd9, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0x2c, 0x54, 0xa6, 0x3a, 0x78, 0x42, 0xe2, 0xc7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf2, 0x07, 0xc6, 0x1a, 0x3e, 0x77, 0xd9, 0xe0, 0x01, 0xe1, 0x1e, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0x23, 0x18, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0x25, 0x18, 0x07, 0x0d, 0x89, 0x79, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x17, 0x98, 0x9d, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x7f, 0x60, 0x6c, 0xf8, 0xdc, 0x65, 0x83, 0xa7, 0x93, 0x7b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xa8, 0x60, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xb2, 0x60, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xc7, 0x9c, 0x7b, 0xac, 0xe1, 0xa3, 0xf6, 0x83, 0x27, 0xa3, 0x7b, 0x74, 0x70, 0x00, 0x4d, 0x3a, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xc1, 0x3b, 0xca, 0x4e, 0x36, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0xc0, 0x23, 0xab, 0x23, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0x70, 0x45, 0xd8, 0x50, 0x4c, 0xd7, 0xe0, 0xc1, 0x1b, 0x18, 0x07, 0x6f, 0x72, 0x19, 0xd9, 0x30, 0x43, 0x1b, 0xbc, 0x1c, 0xb4, 0x64, 0xc3, 0x89, 0xb0, 0xc1, 0xcb, 0x41, 0x4b, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0x06, 0x0b, 0x95, 0xa9, 0x0e, 0xde, 0xcf, 0x0e, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x53, 0xe0, 0xb1, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0xdf, 0xce, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe6, 0x81, 0xc7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7c, 0x82, 0xc7, 0x41, 0x43, 0x62, 0x1e, 0x1b, 0x9e, 0x27, 0xd9, 0xe0, 0x5d, 0x80, 0x27, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x3d, 0x05, 0x1e, 0x1b, 0x3e, 0x77, 0xd9, 0xe0, 0x44, 0x99, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xdb, 0xe0, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x00, 0xe1, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0x6d, 0x9d, 0x83, 0xd6, 0xc6, 0x03, 0x0f, 0x0e, 0xa0, 0x49, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0xc7, 0x07, 0x6d, 0x07, 0x5c, 0x6c, 0x38, 0x11, 0x36, 0x78, 0x49, 0xde, 0xc9, 0x41, 0x5b, 0x0c, 0x17, 0x07, 0xcd, 0x37, 0x5c, 0x6c, 0x98, 0xfb, 0x0d, 0x16, 0x88, 0x98, 0x6e, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x86, 0xe9, 0xdc, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xe1, 0x8a, 0xb0, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0x73, 0xc3, 0x0c, 0xad, 0x61, 0x86, 0xd6, 0x30, 0x43, 0x1b, 0x3c, 0x78, 0x03, 0x63, 0xc3, 0x89, 0xb0, 0xc1, 0x83, 0x37, 0x30, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0x1a, 0x2c, 0xc1, 0x24, 0xde, 0xa0, 0x94, 0x10, 0x5f, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0xc0, 0x9f, 0x2b, 0x2b, 0x23, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0x94, 0xf3, 0xa4, 0x01, 0xf8, 0x70, 0x2b, 0xc3, 0xa3, 0x03, 0x59, 0x2b, 0x93, 0x73, 0x2b, 0x63, 0x03, 0x99, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x28, 0xe7, 0xc9, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x87, 0x56, 0xe7, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x4d, 0x98, 0x07, 0x67, 0x0d, 0xd2, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0x85, 0xc9, 0xd9, 0x07, 0x27, 0x20, 0xd1, 0x66, 0x01, 0xff, 0x0d, 0xae, 0x8c, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0xe4, 0xd3, 0x93, 0x06, 0xf0, 0x6d, 0x7b, 0x23, 0xab, 0x63, 0x2b, 0x03, 0xa9, 0x83, 0x23, 0x0b, 0xa3, 0x2b, 0x9b, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xf2, 0xe9, 0xc9, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0xc7, 0x56, 0xc7, 0x1e, 0xbc, 0x95, 0xf4, 0x64, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x7a, 0x75, 0xf3, 0xc1, 0x5b, 0x49, 0x4f, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x67, 0x17, 0xe6, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0xaf, 0x63, 0xf8, 0x38, 0x38, 0x6b, 0x90, 0xd6, 0x2c, 0xe0, 0xbb, 0x95, 0xdd, 0xcd, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0xde, 0x51, 0x7b, 0xd2, 0x00, 0xfe, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xef, 0xa8, 0x3d, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x20, 0x3d, 0xcc, 0x7b, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0xac, 0xdf, 0xe0, 0x8c, 0x84, 0xba, 0x06, 0xa1, 0x5f, 0xb2, 0xc1, 0xeb, 0x18, 0x3e, 0x6a, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x75, 0x73, 0xe5, 0xc1, 0xb3, 0x79, 0x4f, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x83, 0xb2, 0x4b, 0x76, 0x83, 0x25, 0x98, 0xc4, 0x6b, 0xb8, 0xa4, 0xd6, 0x78, 0x7c, 0xb0, 0xa0, 0x95, 0xb8, 0xd9, 0xa0, 0x64, 0x61, 0x9f, 0x05, 0x78, 0xcb, 0xdc, 0xce, 0xd2, 0xdc, 0xca, 0xe6, 0x59, 0x80, 0x27, 0x8c, 0x2c, 0x0c, 0x8e, 0xde, 0xa0, 0x94, 0x10, 0x5f, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0xc0, 0x9f, 0x7b, 0x63, 0x2b, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0xde, 0xe5, 0x7b, 0xb2, 0xe1, 0x2f, 0x9a, 0x0d, 0x4e, 0x40, 0xa2, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x50, 0x4c, 0x62, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x5a, 0x89, 0xb6, 0x3c, 0x38, 0x3e, 0xb9, 0x1e, 0x1e, 0xdc, 0x39, 0x68, 0x71, 0x2e, 0xf5, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x0d, 0xca, 0x32, 0xec, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0x99, 0x85, 0xd1, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0xef, 0xd3, 0xfd, 0x38, 0x78, 0x95, 0xef, 0xc9, 0x2c, 0xb3, 0x00, 0xcf, 0x99, 0xdc, 0x5b, 0x1d, 0xbc, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x09, 0xf4, 0x6e, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0x0f, 0x1e, 0xdd, 0x7b, 0xd2, 0x06, 0xa5, 0xbd, 0xe5, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0xf0, 0x37, 0xd8, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0xa3, 0xf6, 0xa4, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0xeb, 0x97, 0x0d, 0x0e, 0x78, 0x56, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x9c, 0x48, 0xf0, 0x36, 0x38, 0xe0, 0x59, 0x6d, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0xf5, 0xe5, 0xe9, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0x78, 0xf0, 0xf4, 0xe0, 0x44, 0x82, 0xb7, 0xc1, 0x4a, 0x17, 0xa7, 0x0d, 0xca, 0xff, 0xe2, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0xf0, 0x5c, 0xef, 0x93, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xda, 0xbb, 0xcf, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xb8, 0x89, 0xae, 0xe1, 0x6d, 0x9d, 0x81, 0x7f, 0x33, 0x5b, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0x59, 0x18, 0x5d, 0x07, 0x4b, 0xc8, 0xd3, 0x37, 0x38, 0x8e, 0x4d, 0x6c, 0x70, 0x38, 0xbd, 0x58, 0xc3, 0xaf, 0x64, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0x10, 0x82, 0x0f, 0x07, 0xed, 0x2a, 0x68, 0xad, 0xe1, 0x6d, 0xd6, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0x76, 0x15, 0xb4, 0x0e, 0x4a, 0x3f, 0xe3, 0xd6, 0xf0, 0x41, 0xce, 0x1a, 0x14, 0x93, 0x98, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xa4, 0x87, 0x79, 0x1f, 0x1c, 0x62, 0x3a, 0x0e, 0xd6, 0x97, 0xa7, 0xaf, 0xe1, 0x92, 0xda, 0xe0, 0x70, 0x7a, 0xb1, 0x1a, 0xa4, 0x87, 0x79, 0xb7, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x28, 0x5b, 0x50, 0x37, 0x28, 0x9b, 0xea, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xe9, 0x61, 0xde, 0x07, 0x87, 0xd3, 0x8b, 0x36, 0x58, 0x44, 0x9e, 0x7e, 0x50, 0xf6, 0x19, 0xb7, 0xe1, 0x92, 0xda, 0xe0, 0x70, 0x7a, 0xb1, 0x02, 0x5e, 0xdd, 0x5c, 0xd9, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x6c, 0x41, 0xdd, 0xa0, 0x6c, 0xaa, 0x5f, 0xc3, 0xdb, 0x3a, 0x03, 0x5e, 0xdd, 0x5c, 0x79, 0x70, 0x38, 0xbd, 0xe8, 0xe0, 0x29, 0xf5, 0x27, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x70, 0x22, 0xc1, 0xdb, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0xc1, 0x89, 0x04, 0xaf, 0x15, 0xe0, 0x09, 0x23, 0x7b, 0x93, 0x73, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x9e, 0xe5, 0x7f, 0xd2, 0x00, 0xfc, 0x84, 0xd5, 0x9d, 0xb5, 0x95, 0xb9, 0xd1, 0x81, 0x8c, 0x85, 0xc1, 0x85, 0x89, 0xa5, 0xb1, 0xa5, 0xd1, 0xa5, 0x95, 0xcd, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xf0, 0x02, 0xec, 0x93, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0xa1, 0x21, 0x70, 0xf8, 0x60, 0xb5, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x7a, 0xd3, 0xaf, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0xf2, 0xe9, 0x49, 0xad, 0x41, 0x00, 0x9d, 0x1d, 0x3c, 0xa7, 0xfc, 0xa4, 0x0d, 0x8a, 0x0e, 0xda, 0x01, 0x8f, 0xad, 0x8e, 0xdd, 0xe0, 0xa5, 0xe5, 0x27, 0x6b, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xd0, 0xde, 0x7d, 0xd6, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x70, 0x13, 0x3d, 0x78, 0xca, 0xfc, 0xc9, 0x1a, 0x1c, 0x5d, 0x07, 0xd7, 0xf0, 0x23, 0xcc, 0xc1, 0x83, 0xdc, 0x4f, 0xd6, 0xf0, 0x23, 0xcc, 0x86, 0x97, 0xef, 0x0e, 0x9e, 0x5f, 0x44, 0x52, 0x1b, 0x14, 0x03, 0xb2, 0x1b, 0xbe, 0x9c, 0x5c, 0x83, 0xc2, 0x50, 0x75, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x3c, 0x00, 0xf9, 0xa4, 0x0d, 0x5e, 0xab, 0x7e, 0xd2, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x6c, 0x41, 0x3d, 0x78, 0x13, 0xf9, 0xc9, 0x06, 0x2f, 0x7c, 0x40, 0x39, 0x78, 0x80, 0x05, 0xca, 0x06, 0x4b, 0xaa, 0x93, 0x36, 0x78, 0x4e, 0xf9, 0xc9, 0x06, 0x4b, 0xea, 0x97, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0xde, 0xe2, 0x44, 0xb2, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x28, 0x34, 0x04, 0xda, 0xa0, 0xa0, 0xc8, 0xdc, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0xdd, 0x9e, 0x0d, 0x9e, 0x4f, 0x81, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x1b, 0xba, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xde, 0x34, 0x7e, 0x72, 0xf0, 0xbe, 0x07, 0x94, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0xe0, 0xc9, 0x1d, 0x28, 0x6b, 0xf8, 0x95, 0x6c, 0x83, 0x77, 0x75, 0xa0, 0xac, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x91, 0x8a, 0x39, 0xe0, 0xb1, 0xd5, 0xb1, 0xb5, 0x41, 0xd1, 0x41, 0x3b, 0xe0, 0xe9, 0xd5, 0xcd, 0x1b, 0xbc, 0xb4, 0xfc, 0x64, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0xda, 0xbb, 0xcf, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x8f, 0x6f, 0x40, 0x59, 0x83, 0xa3, 0xeb, 0xe0, 0x06, 0x8f, 0x80, 0x40, 0x59, 0xc3, 0x8f, 0x30, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x2f, 0x1a, 0x49, 0x6d, 0x50, 0x0c, 0xc8, 0x6e, 0xf8, 0x72, 0x72, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x1e, 0x40, 0x81, 0xb2, 0xe1, 0xdd, 0x9e, 0x0d, 0x1e, 0x71, 0x81, 0xb2, 0xc1, 0xb3, 0x55, 0x50, 0x0e, 0x1e, 0x60, 0x81, 0xb2, 0xc1, 0x92, 0xea, 0xa4, 0x0d, 0x9e, 0x53, 0x7e, 0xb2, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0xf7, 0xbf, 0x91, 0x6c, 0x50, 0xec, 0x68, 0x6e, 0xf0, 0xae, 0x0e, 0x94, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xf9, 0x14, 0x28, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb3, 0xa1, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x4d, 0xe3, 0x27, 0x07, 0x8f, 0x56, 0x41, 0xa9, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x9e, 0xdc, 0x81, 0xb2, 0x86, 0x5f, 0xc9, 0x36, 0x78, 0x57, 0x07, 0xca, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x14, 0xa9, 0x98, 0x03, 0x9e, 0x5e, 0xdd, 0x5c, 0x1b, 0x94, 0xf6, 0x96, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x73, 0x0b, 0xb3, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0xc4, 0xfa, 0x0d, 0xd6, 0x6b, 0x3d, 0x1f, 0x9c, 0x35, 0x48, 0x37, 0x38, 0x8e, 0x4d, 0x2c, 0xe0, 0xb9, 0x85, 0xd9, 0x6d, 0xf0, 0xae, 0x0e, 0x94, 0x35, 0x38, 0xb1, 0xdf, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xb9, 0xf3, 0xbe, 0x41, 0xd9, 0x54, 0xbf, 0x86, 0xb7, 0x75, 0x0e, 0x5e, 0x23, 0x84, 0xd2, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x25, 0x52, 0xf5, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x2c, 0x02, 0x19, 0xdd, 0xa0, 0x6c, 0xaa, 0x5f, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x23, 0x4b, 0x93, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x2c, 0xf5, 0x5e, 0x3d, 0x78, 0x13, 0xf9, 0xc9, 0x1a, 0x1c, 0x5d, 0x07, 0x37, 0x78, 0x04, 0x04, 0xca, 0x1a, 0x7e, 0x84, 0xd9, 0xf0, 0xf2, 0xdd, 0xc1, 0x03, 0xc2, 0x3d, 0xaa, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xe1, 0xfb, 0xf6, 0x83, 0xa3, 0x36, 0xe8, 0xc1, 0x9b, 0x12, 0x50, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0xaf, 0x5f, 0x36, 0x68, 0x46, 0x73, 0x60, 0xc3, 0xd7, 0x2f, 0x1b, 0x3e, 0x84, 0x39, 0x68, 0x09, 0x83, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xf0, 0x7c, 0x0a, 0x94, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xd9, 0xd0, 0x65, 0x83, 0xc4, 0x90, 0xac, 0x6a, 0x83, 0xa2, 0x83, 0x76, 0x83, 0x84, 0x0a, 0xb9, 0x0d, 0x5e, 0x5a, 0x7e, 0xb2, 0x06, 0xab, 0x7a, 0x95, 0x36, 0x38, 0x5b, 0x05, 0xae, 0x41, 0xd1, 0x69, 0xbc, 0x86, 0xb7, 0x75, 0x36, 0x28, 0xe6, 0xcb, 0x5a, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x07, 0x4f, 0x99, 0x3f, 0xd9, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x55, 0x24, 0xf8, 0xe0, 0x10, 0xd3, 0xb1, 0x41, 0x31, 0x89, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x78, 0x78, 0xfb, 0xc9, 0x1a, 0x32, 0xe0, 0x07, 0x8f, 0x71, 0x42, 0xd9, 0xe0, 0xbc, 0x79, 0x7a, 0x70, 0x5c, 0x3c, 0x39, 0x38, 0x78, 0x64, 0x6c, 0xf0, 0x9c, 0xf2, 0x93, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0xaa, 0x48, 0xf0, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3e, 0x78, 0x97, 0xef, 0x49, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x86, 0x83, 0xfb, 0x0e, 0x5e, 0x95, 0x80, 0xd2, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0x37, 0x78, 0xd9, 0xec, 0xc9, 0xc1, 0x9b, 0x12, 0x50, 0x36, 0x28, 0xf8, 0x30, 0x37, 0x78, 0xcd, 0x17, 0xca, 0x06, 0x2b, 0x5d, 0x9c, 0x36, 0x68, 0x04, 0x2d, 0x6b, 0x0d, 0x6f, 0xeb, 0x0c, 0x9e, 0x0e, 0x4e, 0x0f, 0x4e, 0x1f, 0x1c, 0x3c, 0x32, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x59, 0xe3, 0xdc, 0x06, 0xeb, 0xb2, 0xeb, 0x3a, 0x68, 0xe7, 0x2c, 0x6b, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x5f, 0xbf, 0x6c, 0xd0, 0x8c, 0xe6, 0xc0, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0x73, 0xd0, 0xd2, 0x59, 0xd6, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0xf9, 0x14, 0x28, 0x07, 0x87, 0x5e, 0xbe, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x2d, 0xa8, 0x1b, 0xbc, 0x8a, 0xfc, 0x64, 0x83, 0x86, 0xa6, 0xfb, 0x3a, 0x58, 0xbf, 0x88, 0xd7, 0x06, 0x0b, 0x30, 0x9b, 0x06, 0x3c, 0xbb, 0x30, 0x77, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0x73, 0xf0, 0x0a, 0x13, 0x94, 0x35, 0xbc, 0xad, 0x73, 0xf0, 0xc2, 0x1e, 0x94, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xd9, 0x85, 0xb9, 0x75, 0xf0, 0x98, 0xf2, 0x93, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x9a, 0x0b, 0x30, 0x5c, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x1b, 0x94, 0x4d, 0xf5, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd7, 0x0f, 0xa1, 0x6c, 0x90, 0x16, 0x21, 0x57, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x05, 0xd9, 0xa9, 0x07, 0x87, 0x98, 0x8e, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x0f, 0xce, 0x9b, 0xa7, 0x07, 0x87, 0x98, 0x8e, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x8b, 0x04, 0x86, 0x87, 0xdf, 0xcf, 0x0e, 0xa7, 0xd8, 0x02, 0x3c, 0x75, 0x73, 0x75, 0x72, 0xf0, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x5b, 0x14, 0x51, 0x1a, 0x80, 0xc7, 0xb1, 0x37, 0xb7, 0xb9, 0x34, 0xb2, 0x32, 0x39, 0x90, 0xb9, 0x32, 0x36, 0xb3, 0x16, 0xb9, 0x32, 0x38, 0xb6, 0xb0, 0xb1, 0xb2, 0xb6, 0x32, 0x37, 0xba, 0x0d, 0xbf, 0x28, 0x6d, 0xf0, 0x02, 0xec, 0x93, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0xae, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x7a, 0xd3, 0xaf, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0x28, 0xe7, 0x49, 0x6d, 0xf0, 0x7c, 0xea, 0x93, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xf0, 0xd0, 0xea, 0xdc, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xe3, 0x1b, 0x50, 0xd6, 0xe0, 0xe8, 0x3a, 0xb8, 0xc1, 0x23, 0x20, 0x50, 0xd6, 0xf0, 0x23, 0xcc, 0x41, 0xeb, 0xd1, 0x96, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xe0, 0x85, 0xc9, 0xd9, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc7, 0x37, 0xa0, 0xac, 0xc1, 0xd1, 0x75, 0x70, 0x83, 0x47, 0x40, 0xa0, 0xac, 0xe1, 0x47, 0x98, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0x0c, 0x04, 0xa3, 0x36, 0x28, 0xe1, 0x31, 0x17, 0xf0, 0xd0, 0xea, 0xdc, 0xd6, 0xa0, 0x84, 0xc7, 0x5c, 0xc0, 0x0b, 0x93, 0xb3, 0xdb, 0xa0, 0xa0, 0xc8, 0xdc, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0x38, 0x86, 0x1b, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xe7, 0x53, 0xa0, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0xe7, 0x80, 0xa2, 0xb4, 0x86, 0x5f, 0x5c, 0x36, 0x78, 0xfd, 0x26, 0xca, 0xc1, 0x9b, 0x47, 0x51, 0x0e, 0xca, 0x3a, 0xcf, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0x4f, 0x2e, 0xcc, 0x5e, 0x83, 0x25, 0xf5, 0x4b, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x07, 0x8f, 0x67, 0x27, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0xd9, 0x13, 0x5a, 0x83, 0xf3, 0x60, 0xc7, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x1b, 0xba, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xde, 0x34, 0x7e, 0x72, 0xf0, 0xf6, 0x4d, 0x94, 0x5a, 0xc3, 0xdb, 0x3a, 0x07, 0xcf, 0x01, 0x45, 0x69, 0x83, 0xb5, 0xe8, 0x4c, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x93, 0x0b, 0xb3, 0xdb, 0xe0, 0x9c, 0xbf, 0xb4, 0x41, 0x41, 0x91, 0xb9, 0x86, 0x5f, 0x5c, 0xd6, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0xdd, 0x9e, 0x0d, 0x9e, 0x4f, 0x81, 0xb2, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x1e, 0xf1, 0x89, 0xd2, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0xf9, 0x14, 0x28, 0x1b, 0xbc, 0x19, 0x16, 0xa5, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x78, 0xfd, 0x26, 0xca, 0xc1, 0x4b, 0x6e, 0x51, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x8f, 0xbd, 0x44, 0x39, 0x78, 0x35, 0x2d, 0xca, 0x41, 0x59, 0xe7, 0x79, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x0a, 0x3c, 0x5b, 0xb9, 0x41, 0xd9, 0x25, 0x3b, 0xf0, 0x6c, 0xe5, 0x1a, 0x2e, 0xa9, 0x35, 0x1e, 0x1f, 0x94, 0xff, 0xeb, 0xcd, 0x06, 0xa5, 0xbd, 0xe5, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x8c, 0xcc, 0xa5, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0xd9, 0xe0, 0xf5, 0x10, 0x20, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x4a, 0xb3, 0xec, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0xd9, 0xe0, 0x69, 0x18, 0x20, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0xef, 0xac, 0xac, 0x3d, 0x78, 0x25, 0xe2, 0xc7, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xc8, 0xea, 0xc8, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xb2, 0x09, 0x73, 0x83, 0x27, 0xb2, 0x83, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x20, 0x62, 0xba, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0xae, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x42, 0xf2, 0xdf, 0x0d, 0xc2, 0x69, 0x6c, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x4b, 0x0d, 0x41, 0x6a, 0x83, 0xd0, 0x2f, 0xd9, 0xe0, 0x2c, 0xa4, 0x70, 0x70, 0x3c, 0xc7, 0x58, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0xe2, 0xa7, 0x3d, 0x78, 0x3e, 0xf5, 0xc9, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0x24, 0x30, 0x1c, 0x3c, 0x9f, 0xfa, 0xa4, 0xda, 0xa0, 0x2c, 0xc3, 0x5e, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xa8, 0x11, 0x07, 0xcd, 0x6e, 0x47, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xda, 0xcc, 0x53, 0xdb, 0xf0, 0xef, 0xfc, 0x06, 0xcf, 0xe4, 0x35, 0xa9, 0x0d, 0x5e, 0xa2, 0x0b, 0xd2, 0x6a, 0x10, 0x96, 0x36, 0x07, 0x89, 0x2d, 0x55, 0x0b, 0x78, 0x73, 0x6f, 0xec, 0xc1, 0x39, 0x33, 0xa9, 0x65, 0x16, 0xf0, 0xe1, 0xd8, 0xde, 0xee, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x67, 0x6a, 0xa3, 0x34, 0x00, 0x7e, 0xbc, 0xc1, 0x95, 0xc9, 0x85, 0xd1, 0x95, 0x81, 0xbc, 0xb9, 0x81, 0x84, 0x81, 0xd8, 0x85, 0xb9, 0x95, 0xb1, 0x80, 0xa4, 0xb9, 0x81, 0xd0, 0xa5, 0xb5, 0x95, 0x81, 0x84, 0xb9, 0x91, 0x81, 0xcc, 0xc1, 0x85, 0x8d, 0x95, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x22, 0x8e, 0xd5, 0xc1, 0x7a, 0xad, 0xe7, 0x0d, 0x96, 0xd4, 0x2f, 0xad, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0x27, 0xae, 0x94, 0x6c, 0xd0, 0x60, 0x98, 0x55, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0xf8, 0xbe, 0x7d, 0x83, 0x07, 0x84, 0x7b, 0x6c, 0x50, 0x42, 0xc7, 0x6e, 0xf0, 0xea, 0x37, 0x90, 0x83, 0x30, 0x1d, 0x5b, 0x83, 0x25, 0xf5, 0x4b, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0xe0, 0xed, 0x35, 0x25, 0x07, 0x6f, 0x33, 0x47, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0xb4, 0xb7, 0x96, 0xb5, 0x41, 0xd9, 0x54, 0xbf, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xbb, 0x30, 0xf7, 0x20, 0x58, 0x6f, 0x3b, 0x78, 0x9b, 0x39, 0xca, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0x5f, 0x83, 0x67, 0x6a, 0xa3, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0xde, 0x2e, 0x6c, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xfe, 0xad, 0xda, 0x1a, 0xde, 0xd6, 0x39, 0x78, 0x12, 0x1c, 0x48, 0x6d, 0x90, 0xee, 0xba, 0xb9, 0x41, 0x13, 0xbd, 0x52, 0xad, 0x06, 0xcf, 0x7b, 0xc3, 0xd8, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x78, 0xde, 0x1b, 0x46, 0x03, 0xf0, 0xd3, 0x56, 0x16, 0x36, 0x57, 0x27, 0x57, 0x06, 0xd2, 0x56, 0xd6, 0xf6, 0x26, 0x97, 0x07, 0x52, 0x37, 0x17, 0x76, 0x56, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x1e, 0xab, 0x31, 0xb2, 0xc1, 0x02, 0xcc, 0xa6, 0x35, 0x7c, 0xdf, 0xbe, 0xc1, 0x2a, 0xf5, 0xdf, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x83, 0xc7, 0x6a, 0x8c, 0x74, 0x10, 0xa6, 0x63, 0x6b, 0x70, 0xce, 0x5f, 0x5a, 0xc3, 0x1b, 0x77, 0x07, 0x0f, 0xec, 0x44, 0xd9, 0x60, 0x99, 0x93, 0xec, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0x38, 0xe7, 0x2f, 0x6d, 0xd0, 0x62, 0xd3, 0xe5, 0x06, 0xcb, 0x9c, 0x64, 0x37, 0x38, 0xba, 0x0e, 0xae, 0x41, 0x6b, 0xa1, 0xa0, 0x1b, 0xac, 0x02, 0x93, 0xdd, 0x70, 0x49, 0xad, 0xf1, 0xf8, 0xf0, 0x1b, 0x7d, 0xab, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0x39, 0xe4, 0xbd, 0xc1, 0x2a, 0x30, 0xd9, 0x0d, 0x97, 0xd4, 0x1a, 0x8f, 0x0f, 0x0a, 0xab, 0xea, 0x56, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x0b, 0x3c, 0x3a, 0xb9, 0x74, 0x83, 0x55, 0x60, 0xb2, 0x1b, 0x2e, 0xa9, 0x35, 0x1e, 0x1f, 0xac, 0xaa, 0x72, 0x6d, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0xc0, 0x8b, 0xab, 0x0b, 0x37, 0x58, 0x05, 0x26, 0xbb, 0xe1, 0x92, 0x5a, 0xe3, 0xf1, 0xc1, 0x8a, 0xc7, 0xb9, 0x56, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x0b, 0x3c, 0xb8, 0x32, 0x77, 0x83, 0x55, 0x60, 0xb2, 0x1b, 0x2e, 0xa9, 0x35, 0x1e, 0x6f, 0xd0, 0x18, 0x11, 0x72, 0xb5, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0xc1, 0x4a, 0xce, 0xd0, 0x0d, 0x56, 0x81, 0xc9, 0x1e, 0xbc, 0x59, 0xf8, 0x64, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x43, 0x8d, 0xd8, 0x60, 0x15, 0x98, 0xec, 0x86, 0xb7, 0x75, 0x36, 0xd4, 0x88, 0x56, 0xc3, 0x1b, 0x77, 0x07, 0xef, 0x8b, 0x40, 0xd9, 0x60, 0x99, 0x93, 0xec, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0x8b, 0xcb, 0x6a, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x07, 0x0b, 0x63, 0x48, 0x37, 0x58, 0x05, 0x26, 0x7b, 0x70, 0x3a, 0x12, 0x59, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0xa0, 0xf1, 0xf9, 0xa8, 0x0d, 0x56, 0x81, 0xc9, 0x1e, 0x9c, 0x2e, 0x32, 0x0e, 0xca, 0x3a, 0xcf, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x6c, 0x75, 0xec, 0x41, 0xb0, 0xde, 0xae, 0x86, 0x37, 0xee, 0x0e, 0x5e, 0xc6, 0x82, 0xb2, 0xc1, 0x32, 0x27, 0xd9, 0x0d, 0x0f, 0x4a, 0x6e, 0xf0, 0x18, 0x8e, 0x94, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x7a, 0x75, 0xf3, 0x41, 0xb0, 0xde, 0xae, 0x86, 0x37, 0xee, 0x0e, 0x1e, 0xe3, 0x84, 0xb2, 0xc1, 0x32, 0x27, 0xd9, 0x83, 0x65, 0xf2, 0xc3, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x22, 0x55, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x0b, 0x30, 0x5c, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x07, 0xaf, 0x74, 0x47, 0xd9, 0xe0, 0xe5, 0x83, 0x28, 0x6d, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x01, 0x4f, 0xac, 0xac, 0xdd, 0xa0, 0x84, 0x8e, 0xdd, 0xe0, 0x29, 0xc1, 0x21, 0x07, 0x61, 0x3a, 0xb6, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xde, 0xea, 0xe4, 0x36, 0x48, 0x4a, 0x0b, 0x5e, 0x83, 0x15, 0x4e, 0xae, 0x07, 0xe9, 0xae, 0x9b, 0xad, 0xc1, 0xd1, 0x75, 0x70, 0x83, 0x66, 0x34, 0x07, 0xd6, 0xf0, 0x23, 0xcc, 0xc1, 0xab, 0x21, 0x3e, 0x6a, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0xd6, 0x88, 0xb2, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x0f, 0x08, 0xf7, 0x38, 0x78, 0xf5, 0x1b, 0x48, 0x1b, 0x2c, 0xc0, 0x6c, 0x5a, 0xc3, 0xf7, 0xed, 0x1b, 0xbe, 0xf6, 0x38, 0x78, 0xb0, 0x3f, 0xca, 0x1a, 0xb4, 0x74, 0x96, 0xb5, 0xc1, 0x32, 0x27, 0xd9, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xc8, 0x5a, 0xdc, 0x60, 0x41, 0x2f, 0xf2, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0x2f, 0x2e, 0x6b, 0xf0, 0x56, 0x8e, 0x94, 0x0d, 0x56, 0x81, 0xc9, 0x6e, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xa0, 0x4d, 0xee, 0xa8, 0x35, 0x78, 0xc8, 0x47, 0xca, 0x06, 0xab, 0xc0, 0x64, 0x37, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xd0, 0x26, 0x77, 0xd4, 0x6a, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x81, 0x37, 0x17, 0x36, 0x6e, 0xb0, 0x0a, 0x4c, 0x76, 0xc3, 0xdb, 0x3a, 0x07, 0x6f, 0x52, 0x06, 0x39, 0x28, 0xeb, 0x3c, 0x0f, 0x5e, 0x4a, 0x8f, 0xd2, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x83, 0xa9, 0x63, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xd1, 0x2b, 0xb5, 0xc1, 0x59, 0x56, 0x6a, 0x83, 0x95, 0x05, 0xde, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x96, 0xce, 0xb2, 0xd6, 0xf0, 0xc6, 0xdd, 0xc1, 0x6a, 0xdf, 0xc4, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x27, 0x56, 0xd6, 0xd6, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x2f, 0x27, 0x37, 0x28, 0x28, 0x32, 0x37, 0x28, 0xe1, 0x31, 0x17, 0xbc, 0x3e, 0x28, 0xa5, 0x7f, 0x37, 0x28, 0x28, 0x32, 0x37, 0x58, 0x52, 0xbf, 0xb4, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0xc1, 0x5b, 0xfa, 0x45, 0x0e, 0x5a, 0x3a, 0xcb, 0xda, 0x60, 0x8d, 0x54, 0xd3, 0x06, 0x4f, 0xfa, 0x47, 0xd9, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0xe0, 0xf1, 0xe0, 0xf5, 0xc1, 0xa3, 0xa0, 0x52, 0x56, 0x83, 0x65, 0xf7, 0x51, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xcb, 0xee, 0xa3, 0x1a, 0x80, 0x87, 0x30, 0x32, 0xbb, 0x30, 0xb7, 0xb1, 0x32, 0x10, 0xba, 0x37, 0x10, 0xba, 0x30, 0xb9, 0xb3, 0x32, 0xba, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0xcb, 0xd4, 0x3d, 0x0e, 0x9e, 0x9e, 0xee, 0xb1, 0xc1, 0x03, 0xc5, 0x51, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x6f, 0x8a, 0x1c, 0x39, 0x78, 0xc5, 0xe4, 0x48, 0x1b, 0xbe, 0x7e, 0x59, 0xc3, 0xdb, 0x3a, 0x07, 0x81, 0x29, 0xb4, 0xe1, 0x83, 0x9c, 0x35, 0x28, 0x26, 0x31, 0x37, 0x48, 0x19, 0x0c, 0x3e, 0x68, 0x4b, 0xcc, 0x6a, 0x0d, 0xce, 0x85, 0x0b, 0x6b, 0xc8, 0x63, 0x6f, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0xe0, 0x9d, 0x85, 0x25, 0x1b, 0x9c, 0xd8, 0x6f, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0xd9, 0x7d, 0x54, 0x07, 0x4b, 0x4e, 0xd3, 0x37, 0x38, 0x17, 0x2e, 0xac, 0x21, 0x8f, 0xbd, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0x97, 0x2f, 0x96, 0x6c, 0xb0, 0x46, 0xaa, 0x69, 0x83, 0x17, 0x9f, 0x7d, 0x6c, 0x78, 0x5b, 0x67, 0xf0, 0x78, 0x70, 0x78, 0x83, 0x37, 0x45, 0x8e, 0xb4, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x5b, 0x62, 0x56, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb6, 0x7d, 0xbc, 0x0e, 0xde, 0x66, 0x8e, 0xb2, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x23, 0xfc, 0xa4, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x06, 0xc3, 0xac, 0x36, 0x78, 0xda, 0x95, 0xc9, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0xe9, 0xe4, 0x1e, 0x03, 0xde, 0x59, 0x59, 0x5b, 0x1b, 0x2c, 0xa9, 0x5f, 0x5a, 0xc3, 0xe7, 0x2e, 0x1b, 0x3c, 0x59, 0xb3, 0x64, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x1a, 0xfe, 0x9d, 0x5f, 0x71, 0x9c, 0x83, 0x97, 0xa9, 0x7b, 0x54, 0x1b, 0x7e, 0x71, 0x39, 0x78, 0x82, 0x5c, 0xca, 0x06, 0xa7, 0x86, 0xa3, 0x35, 0xbc, 0xad, 0x73, 0xf0, 0x5c, 0xb6, 0x94, 0x0d, 0x0f, 0x4a, 0x6e, 0xf0, 0x82, 0xb3, 0x94, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x41, 0xc9, 0x0d, 0xce, 0x56, 0x81, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x07, 0xcf, 0x90, 0x47, 0x39, 0x78, 0x9b, 0x39, 0xca, 0x06, 0x4f, 0xbb, 0x32, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x5e, 0x99, 0x5b, 0xde, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xc8, 0xea, 0xc8, 0x5a, 0x0d, 0x5a, 0xe8, 0x27, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0x5a, 0x13, 0x28, 0x1d, 0x80, 0x57, 0xb3, 0x34, 0xb7, 0x30, 0xb6, 0x34, 0xbd, 0x32, 0x90, 0x30, 0x37, 0x90, 0x34, 0x37, 0xb2, 0x34, 0xbb, 0x34, 0xb2, 0xba, 0x30, 0x36, 0x90, 0x39, 0xba, 0x32, 0xb8, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x5b, 0xb3, 0x85, 0x07, 0xaf, 0x44, 0xfc, 0x58, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x26, 0xe6, 0x8e, 0x0f, 0x9a, 0xdd, 0x8e, 0x3a, 0x68, 0x60, 0x2f, 0x70, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x73, 0x61, 0xe3, 0xc1, 0xb3, 0x93, 0x41, 0xda, 0xf0, 0xf5, 0xcb, 0x06, 0xcf, 0x07, 0x4b, 0xd9, 0xa0, 0xe8, 0xa0, 0xdd, 0xa0, 0x5d, 0xa1, 0xe3, 0x05, 0xbc, 0xb9, 0xb0, 0xb1, 0x35, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x02, 0xf8, 0xc9, 0x95, 0x99, 0xa5, 0xb9, 0x95, 0xb5, 0xb4, 0xbd, 0xd9, 0x95, 0xcd, 0x6d, 0x90, 0xd0, 0x3b, 0xb8, 0x86, 0xb7, 0x75, 0x0e, 0x9e, 0x08, 0x99, 0x72, 0xd0, 0xfa, 0xad, 0xda, 0x1a, 0xde, 0xd6, 0x39, 0x68, 0x99, 0xef, 0xb8, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x9e, 0xf8, 0x8e, 0xb2, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x6c, 0x41, 0x3d, 0x78, 0xa5, 0x3b, 0xca, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0x01, 0xe1, 0x1e, 0x07, 0xcd, 0x0a, 0x17, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x92, 0x10, 0xdc, 0xe0, 0x7d, 0x94, 0x29, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0x97, 0xb5, 0xa5, 0xd1, 0xad, 0xe1, 0x2f, 0x9a, 0x0d, 0x5e, 0x0f, 0x01, 0xb2, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0x45, 0xb3, 0xc1, 0x2b, 0x11, 0x3f, 0x0e, 0xda, 0x0e, 0x2e, 0x5c, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x06, 0x4f, 0x70, 0xfc, 0xe8, 0xa0, 0x91, 0xa3, 0xe3, 0x5a, 0x0d, 0xde, 0xe3, 0x99, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xf0, 0x1e, 0xcf, 0x94, 0x06, 0xe0, 0xbb, 0xcc, 0x2d, 0xae, 0xae, 0xac, 0xae, 0x0c, 0x24, 0x0c, 0xe4, 0xee, 0x4d, 0x6e, 0x8d, 0x2d, 0x6d, 0x8e, 0x0e, 0xe4, 0x2e, 0x8d, 0x0e, 0x0d, 0x64, 0xee, 0xad, 0x4e, 0x6e, 0xac, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x83, 0x0b, 0x73, 0x0f, 0x5e, 0x0f, 0x01, 0xb2, 0xe1, 0x92, 0xda, 0x20, 0x30, 0x85, 0xd6, 0x20, 0x71, 0xa3, 0x76, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x83, 0x0b, 0x73, 0xdb, 0x20, 0x05, 0xa3, 0xb6, 0x0e, 0xa7, 0x58, 0x6b, 0xb0, 0x4c, 0x97, 0x6a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0x99, 0x2e, 0x55, 0x03, 0xf8, 0xd4, 0xb9, 0xd1, 0xa5, 0xb1, 0x81, 0x90, 0xbd, 0xb9, 0x95, 0x6d, 0xf8, 0xfa, 0x65, 0x83, 0x06, 0xac, 0xb7, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x5f, 0xc9, 0xd6, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0x04, 0x1f, 0x0e, 0x12, 0x37, 0x6a, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0xa0, 0x48, 0xc5, 0x3c, 0x58, 0x1e, 0x62, 0xda, 0x06, 0x0d, 0x58, 0x6f, 0x6f, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x50, 0x50, 0x64, 0x6e, 0x78, 0x5b, 0x67, 0xf0, 0x78, 0xf0, 0xf4, 0x20, 0x71, 0xa3, 0x76, 0x0d, 0x97, 0xd4, 0x1a, 0x2c, 0xd3, 0xa5, 0x6a, 0x0d, 0x12, 0x37, 0x6a, 0x37, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0x90, 0xb8, 0x51, 0xdb, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x8f, 0x0c, 0x4c, 0xd9, 0xa0, 0xa0, 0xc8, 0xdc, 0xa0, 0xe8, 0xd3, 0xdd, 0xe0, 0xa5, 0x73, 0x29, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0xe0, 0x99, 0xbc, 0x29, 0x1b, 0x14, 0x1d, 0xb4, 0x6b, 0xf8, 0xbe, 0x7d, 0xc0, 0x6b, 0x7b, 0xb3, 0x37, 0x28, 0xa1, 0x63, 0x37, 0x78, 0x82, 0xe3, 0xc7, 0x41, 0x98, 0x8e, 0x6d, 0xf0, 0x2c, 0xde, 0x94, 0x0d, 0xde, 0xbe, 0x9b, 0xb2, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0x73, 0xf0, 0xe2, 0xde, 0x94, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x44, 0xf9, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0xaf, 0xed, 0xcd, 0xae, 0xc3, 0x29, 0xb6, 0x06, 0xad, 0x58, 0xcd, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x66, 0x01, 0x90, 0x83, 0x17, 0xd7, 0x82, 0x6c, 0xf8, 0xfa, 0x65, 0x83, 0xe7, 0x83, 0xa5, 0x6c, 0xb0, 0x36, 0xae, 0x69, 0x35, 0x48, 0xdc, 0xa8, 0xdd, 0xf0, 0xb6, 0xce, 0x06, 0x23, 0x73, 0xe9, 0xe0, 0x39, 0xb6, 0x20, 0x6b, 0x50, 0x62, 0x6d, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0xd2, 0x2c, 0xfb, 0xe0, 0x39, 0xb6, 0x20, 0x6d, 0x50, 0xf4, 0xe9, 0xae, 0xf1, 0xf8, 0x20, 0x30, 0x85, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x0b, 0x78, 0x6c, 0x6f, 0x64, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x1c, 0xac, 0x1c, 0xed, 0x3e, 0x58, 0x72, 0x9a, 0xbe, 0x86, 0xb7, 0x75, 0x36, 0x18, 0x09, 0x0c, 0x07, 0xcf, 0xb1, 0x05, 0x69, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x88, 0x9f, 0xf6, 0xe0, 0x39, 0xb6, 0x20, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0xac, 0x61, 0xe2, 0x06, 0xbc, 0xbb, 0x34, 0x39, 0xf0, 0xc6, 0xc2, 0xe4, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xd1, 0x75, 0xf0, 0xe0, 0x0d, 0x9d, 0x28, 0xab, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0x61, 0xbc, 0xe4, 0xa0, 0xa0, 0xc8, 0x6c, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0xd7, 0x52, 0xa7, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x06, 0x7c, 0xbc, 0x32, 0xb7, 0xb7, 0x83, 0x25, 0xa7, 0xe9, 0x6b, 0x90, 0x94, 0x16, 0xbc, 0xe1, 0x6d, 0x9d, 0x01, 0xef, 0x2e, 0x4d, 0x6e, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x63, 0x61, 0x72, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x27, 0x77, 0xa6, 0xac, 0x41, 0x52, 0x5a, 0xf0, 0x41, 0x41, 0x91, 0xb9, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xe7, 0xe0, 0xc2, 0xda, 0x0e, 0x96, 0x9c, 0xa6, 0x6f, 0xf0, 0x0a, 0xf3, 0x94, 0x35, 0x58, 0x20, 0xf7, 0x74, 0xf0, 0x90, 0xf3, 0x94, 0x9a, 0x35, 0xbc, 0x75, 0xbf, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x78, 0xeb, 0xbe, 0x01, 0xf0, 0x2a, 0x8c, 0xcc, 0x2e, 0xcc, 0x6d, 0xac, 0x0c, 0x84, 0x0e, 0xad, 0x0c, 0x84, 0xed, 0xed, 0x0d, 0x0e, 0xe4, 0xcd, 0xad, 0x0c, 0x64, 0x8e, 0xae, 0x0c, 0x0e, 0x44, 0x2c, 0x0f, 0x44, 0xee, 0xad, 0x8e, 0x2e, 0xcd, 0xed, 0x0c, 0x24, 0x0c, 0xa4, 0xed, 0xcd, 0xae, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x17, 0x3a, 0x7e, 0x1c, 0x3c, 0xc1, 0xf1, 0x63, 0xc3, 0xd7, 0x2f, 0x1b, 0x3c, 0x1f, 0x2c, 0x65, 0x83, 0x65, 0xd6, 0x4c, 0xb3, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x36, 0xeb, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb6, 0xb0, 0xf1, 0x60, 0x5d, 0xf0, 0xed, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x14, 0xa9, 0x98, 0x07, 0x8f, 0x0c, 0x4c, 0x69, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0xe0, 0xc1, 0xea, 0x20, 0x1b, 0x04, 0xe9, 0xe9, 0x1a, 0x87, 0x0e, 0x1e, 0x07, 0x64, 0xb2, 0x06, 0x8f, 0x4c, 0x14, 0xd9, 0x60, 0xa5, 0x8b, 0xd3, 0x06, 0x8f, 0xba, 0x14, 0xd9, 0xe0, 0xed, 0x48, 0x26, 0x1b, 0xac, 0x74, 0x71, 0xda, 0xe0, 0x5d, 0xea, 0x1e, 0x1b, 0xbc, 0xbe, 0xc8, 0x64, 0x83, 0x95, 0x2e, 0x4e, 0x1b, 0x3c, 0x09, 0x0e, 0x64, 0x83, 0xf7, 0x0b, 0x99, 0x6c, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0xe7, 0xb2, 0xa5, 0x6c, 0xf0, 0x82, 0x1f, 0x93, 0x0d, 0x96, 0x59, 0x33, 0xcd, 0x1a, 0x1e, 0x61, 0xdd, 0xe0, 0xb1, 0xfa, 0x29, 0x6b, 0x78, 0x9b, 0x75, 0xc3, 0xbf, 0x39, 0x1b, 0x24, 0xa5, 0x05, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0x07, 0x84, 0x7b, 0x1c, 0xbc, 0x74, 0x2e, 0xa5, 0x35, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x0f, 0xe5, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0xe7, 0xe4, 0xc1, 0x3b, 0xe5, 0x52, 0x0e, 0x56, 0x1b, 0xce, 0x6e, 0xb0, 0x20, 0x88, 0xae, 0x0d, 0x16, 0x95, 0x27, 0xad, 0xe1, 0x8d, 0xbb, 0x83, 0xc7, 0x27, 0x8a, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0xde, 0xb6, 0xa0, 0x72, 0xf0, 0x4e, 0x7a, 0x94, 0x35, 0x7c, 0x90, 0xb3, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x04, 0x9b, 0xe9, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0x4b, 0x14, 0x70, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0x70, 0xc1, 0xa4, 0x0d, 0xa9, 0x9a, 0x83, 0xe7, 0xb2, 0xa5, 0xac, 0x41, 0x61, 0xa8, 0xba, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0x2e, 0xa9, 0x0d, 0x1e, 0x90, 0xa1, 0xd2, 0x06, 0x6b, 0xa4, 0x9a, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x6d, 0xeb, 0xf1, 0x0d, 0xda, 0xb6, 0x1e, 0x3f, 0x58, 0x50, 0x14, 0xbc, 0xc1, 0x7a, 0xad, 0xe7, 0x83, 0x25, 0x4f, 0xd0, 0x1b, 0x1e, 0x94, 0x5c, 0xc3, 0x2f, 0x2e, 0x1b, 0x9c, 0x9b, 0xd0, 0xd6, 0x70, 0x49, 0xad, 0x41, 0x60, 0x62, 0xd7, 0x1a, 0x2e, 0xa9, 0x35, 0x18, 0x6f, 0x3a, 0xd5, 0xc1, 0x53, 0xf4, 0x52, 0x0e, 0x9e, 0x30, 0x75, 0xb2, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0xb9, 0xbc, 0x36, 0xb8, 0x0d, 0x5e, 0xb0, 0xa1, 0xd2, 0x06, 0x4f, 0x98, 0x3a, 0xe9, 0xe0, 0x69, 0x57, 0x26, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x05, 0x67, 0x29, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0x6c, 0xf0, 0xb6, 0x05, 0x95, 0x83, 0xf7, 0x9c, 0xa8, 0x6c, 0xf0, 0xb4, 0x2b, 0x93, 0x36, 0x78, 0x29, 0x3d, 0xca, 0x06, 0x4f, 0xd1, 0x4b, 0x69, 0x0d, 0xde, 0xe5, 0x29, 0xb2, 0xc1, 0x4a, 0x17, 0xa7, 0x0d, 0xde, 0xa5, 0xee, 0xb1, 0xc1, 0xeb, 0x8b, 0x4c, 0x36, 0x58, 0xe9, 0xe2, 0xb4, 0xc1, 0x93, 0xe0, 0x40, 0x36, 0x78, 0xbf, 0x90, 0xc9, 0x06, 0x2b, 0x5d, 0x9c, 0x36, 0x78, 0x2e, 0x5b, 0xca, 0x06, 0x2f, 0xf8, 0x31, 0xd9, 0x60, 0x99, 0x35, 0xd3, 0x6c, 0xf0, 0x58, 0xfd, 0x94, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x78, 0x64, 0x83, 0xca, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xc6, 0xdd, 0xc1, 0x7b, 0x3d, 0x45, 0x36, 0x78, 0xcd, 0x84, 0xca, 0x06, 0x4f, 0x28, 0x51, 0x39, 0x78, 0xdb, 0x8a, 0xca, 0x86, 0x77, 0x7b, 0x36, 0x78, 0xc1, 0x59, 0xca, 0x06, 0x4f, 0xbb, 0x32, 0x39, 0x78, 0x02, 0x8b, 0xca, 0x1a, 0xbc, 0xa3, 0x51, 0x64, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x8a, 0x54, 0xcc, 0x83, 0x87, 0x19, 0x99, 0xac, 0xc1, 0xb9, 0x70, 0x61, 0x0d, 0x79, 0xec, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0xf8, 0x9d, 0xa5, 0xd9, 0x95, 0xb5, 0xb8, 0xbd, 0xb5, 0x90, 0xd5, 0x8d, 0xd1, 0x07, 0xe1, 0xa9, 0xba, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0x2b, 0x2a, 0x45, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0xc1, 0xc3, 0x8c, 0x4c, 0x36, 0x28, 0x48, 0x63, 0x37, 0x78, 0x99, 0xba, 0xc7, 0x1a, 0xde, 0xd6, 0x19, 0x9c, 0x3e, 0x78, 0x98, 0x91, 0xc9, 0x06, 0x2b, 0x5d, 0x9c, 0x36, 0x78, 0x22, 0x9d, 0xc8, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0x91, 0x74, 0x22, 0x07, 0x8f, 0x03, 0x32, 0xd9, 0xa0, 0xe8, 0xa0, 0x5d, 0xc3, 0xf7, 0xed, 0x1b, 0xb4, 0x88, 0x63, 0xb5, 0x41, 0x09, 0x1d, 0xbb, 0xc1, 0x7a, 0xad, 0xe7, 0x83, 0x30, 0x1d, 0xdb, 0xe0, 0x51, 0x97, 0x22, 0x6b, 0xb0, 0xa4, 0x7e, 0x69, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x83, 0xf7, 0x35, 0x8a, 0x6c, 0xf0, 0xfa, 0x22, 0x93, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xfb, 0x4a, 0x54, 0xd6, 0x70, 0x49, 0xad, 0x71, 0x68, 0xf0, 0x78, 0x70, 0xf8, 0xe0, 0x89, 0x74, 0x22, 0xd5, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x14, 0xa9, 0x98, 0x07, 0x8f, 0xba, 0x14, 0x39, 0x78, 0xc2, 0xd4, 0xc9, 0x06, 0xcb, 0xac, 0x99, 0x66, 0x0d, 0x8f, 0xb0, 0x6e, 0xf0, 0x58, 0xfd, 0x94, 0x35, 0xbc, 0xcd, 0xba, 0xe1, 0xdf, 0x9c, 0x0d, 0x92, 0xd2, 0x82, 0x0f, 0x1a, 0x0c, 0xb3, 0x5a, 0xc3, 0xaf, 0x64, 0x6b, 0x78, 0x9b, 0x75, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x81, 0x2f, 0xc6, 0x96, 0x46, 0x6f, 0xb8, 0xa4, 0xd6, 0x90, 0xaa, 0x39, 0x78, 0x22, 0x9d, 0x48, 0x6b, 0x78, 0x9b, 0x75, 0xc3, 0xbf, 0x39, 0x1b, 0xa4, 0x93, 0x32, 0x1d, 0xbc, 0x6d, 0x41, 0xa5, 0xd6, 0xa0, 0x30, 0x54, 0xdd, 0xe0, 0x91, 0x0d, 0x2a, 0x1b, 0x2c, 0x2a, 0x4f, 0xda, 0xe0, 0xf5, 0x4c, 0x2a, 0x1b, 0xbc, 0x6d, 0x41, 0x65, 0x0d, 0x1f, 0xe4, 0xac, 0x41, 0x31, 0x89, 0xb9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x02, 0xbf, 0xce, 0x8d, 0xee, 0x3d, 0x78, 0xb4, 0x96, 0xca, 0x1a, 0x7e, 0x71, 0xd9, 0xe0, 0x6d, 0x5a, 0x2a, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf7, 0x95, 0xa8, 0xac, 0xe1, 0x92, 0x5a, 0xc3, 0x5e, 0xe1, 0xc1, 0x13, 0xe9, 0x44, 0xaa, 0x0d, 0xef, 0xf6, 0x6c, 0xf0, 0xbe, 0x12, 0x95, 0x0d, 0xde, 0xa6, 0xa5, 0xd2, 0xc1, 0xeb, 0x8b, 0x4c, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xb3, 0x3a, 0x54, 0x1b, 0x3c, 0xed, 0xca, 0x64, 0x83, 0x27, 0x4c, 0x9d, 0x6c, 0xd0, 0x60, 0x98, 0xd5, 0x1a, 0xde, 0xd6, 0x39, 0x78, 0x22, 0x9d, 0x48, 0x6b, 0xf0, 0xca, 0x3c, 0x91, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x1e, 0x19, 0x98, 0xb2, 0xc1, 0x31, 0xdc, 0x60, 0xc3, 0xdb, 0x3a, 0x1b, 0x3c, 0x58, 0x1d, 0xe4, 0xe0, 0x71, 0x40, 0x26, 0x6b, 0xf0, 0x38, 0x20, 0x93, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x1e, 0x36, 0x91, 0x83, 0xc7, 0x01, 0x99, 0xd4, 0xe1, 0x14, 0x5b, 0x83, 0x56, 0x81, 0x5c, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x5a, 0x05, 0x72, 0x69, 0x00, 0xbe, 0xe5, 0xca, 0xc2, 0xc8, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xca, 0xdc, 0xe8, 0xd2, 0xe4, 0xca, 0x40, 0xdc, 0xc2, 0xda, 0xca, 0xe6, 0xe0, 0xc2, 0xc6, 0xca, 0x36, 0xfc, 0x45, 0xb3, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x45, 0x1c, 0x23, 0xb5, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb6, 0xbc, 0xf1, 0xe0, 0xa1, 0xcb, 0x22, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x26, 0x17, 0xc0, 0x0e, 0xce, 0x48, 0xa8, 0x1b, 0xbc, 0x45, 0x5b, 0xa4, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0xae, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0xae, 0x41, 0xe8, 0x97, 0x6c, 0xf0, 0x3a, 0x86, 0x8f, 0x0d, 0x9e, 0x64, 0x24, 0x52, 0x6d, 0x50, 0x90, 0xc6, 0xae, 0x41, 0x09, 0x1d, 0xbb, 0x86, 0xcf, 0x95, 0x36, 0x78, 0xa0, 0x38, 0xca, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xc6, 0xc2, 0xe4, 0x83, 0xf5, 0x5a, 0xcf, 0x1d, 0x84, 0xe9, 0xd8, 0x1a, 0x14, 0x03, 0xb2, 0x1b, 0xac, 0x98, 0x82, 0xdb, 0x60, 0x59, 0x14, 0xdc, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x20, 0x60, 0x59, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x51, 0xfc, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0xc1, 0xb2, 0x28, 0xb8, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0xa2, 0xe0, 0x0e, 0xd6, 0xee, 0xa9, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x64, 0xe2, 0x1e, 0xbc, 0x8e, 0x51, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xe2, 0xe3, 0x1e, 0xbc, 0x8e, 0x51, 0xa5, 0x0d, 0x1f, 0xe4, 0x6c, 0xf0, 0x24, 0xb1, 0x94, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0x37, 0x68, 0xa2, 0x57, 0xea, 0x60, 0xc9, 0x69, 0xfa, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xd8, 0xf2, 0xc6, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0xcb, 0x29, 0x60, 0x1b, 0x3c, 0xe4, 0x3c, 0xe5, 0xe0, 0x49, 0x4d, 0x29, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0xb4, 0x25, 0x66, 0xb5, 0xc1, 0xdb, 0xdc, 0x52, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xbb, 0x30, 0x77, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xb8, 0x89, 0x1e, 0xbc, 0xd2, 0x1d, 0xe5, 0xe0, 0x6d, 0xe6, 0x28, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xbe, 0x9c, 0xdc, 0xa0, 0xa0, 0xc8, 0xdc, 0xe0, 0xd4, 0x70, 0xb4, 0x86, 0x5f, 0x5c, 0x0e, 0xde, 0x57, 0xa9, 0xb2, 0xe1, 0x41, 0xc9, 0x0d, 0x9a, 0xe8, 0x95, 0xda, 0xf0, 0xa0, 0xe4, 0x06, 0x67, 0xab, 0xc0, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0xc1, 0x33, 0xe4, 0x51, 0x36, 0x78, 0xaf, 0x3c, 0xca, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xfd, 0x5b, 0xb5, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7d, 0xf0, 0x3a, 0x3f, 0x94, 0x3a, 0x78, 0x6b, 0x3d, 0xca, 0x0a, 0xf8, 0x70, 0x6f, 0x6b, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x6b, 0x50, 0x55, 0x1a, 0x00, 0x5f, 0xe0, 0xe4, 0xca, 0xe0, 0xc2, 0xe4, 0xca, 0x40, 0xc2, 0x40, 0xee, 0xde, 0xe4, 0xd6, 0xd8, 0xd2, 0xe6, 0xe8, 0x5a, 0xde, 0xcc, 0x5a, 0xde, 0xdc, 0xca, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x40, 0xde, 0xea, 0xe8, 0xe6, 0xd2, 0xc8, 0xca, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x39, 0x06, 0xc8, 0xc1, 0xd3, 0x30, 0x40, 0x36, 0x7c, 0xfd, 0xb2, 0xc1, 0xf3, 0xc1, 0x52, 0x36, 0x38, 0x17, 0x2e, 0xac, 0x21, 0x8f, 0xbd, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x00, 0x3e, 0xc2, 0xe4, 0xec, 0xde, 0x74, 0x40, 0xe0, 0xde, 0xd6, 0xca, 0x40, 0xc6, 0xe4, 0xc2, 0xe6, 0xd0, 0xca, 0xc8, 0x0d, 0x96, 0x59, 0x33, 0xcd, 0x06, 0x8f, 0xd5, 0x4f, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x08, 0xa2, 0x5b, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x0b, 0xfc, 0x3a, 0xb7, 0x34, 0x7c, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x6f, 0xf0, 0x62, 0x79, 0x91, 0x83, 0x77, 0x63, 0x80, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x5e, 0x51, 0x29, 0x72, 0xf0, 0x6e, 0x0c, 0x90, 0x83, 0x54, 0xd7, 0xcd, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x6b, 0x50, 0x55, 0x3a, 0x58, 0x72, 0x9a, 0xbe, 0x86, 0xb7, 0x75, 0x0e, 0xde, 0x8d, 0x01, 0xd2, 0xac, 0x41, 0x93, 0x58, 0xda, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0x60, 0x15, 0x64, 0xf2, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0xa5, 0x37, 0xfd, 0x06, 0x0f, 0x1c, 0x46, 0x39, 0x78, 0xe8, 0x35, 0xca, 0x06, 0xcf, 0x71, 0x46, 0x69, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xe5, 0x21, 0xa6, 0x6b, 0xf8, 0x8b, 0x66, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0xb0, 0x41, 0x1b, 0xbc, 0x88, 0x58, 0xa5, 0x0d, 0x56, 0x81, 0xc9, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x58, 0x2c, 0x1f, 0x14, 0x4a, 0xdb, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x9b, 0x7b, 0x63, 0x6b, 0x83, 0x65, 0x4e, 0xb2, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0x24, 0xff, 0x1d, 0xbc, 0x3e, 0x58, 0x1e, 0x62, 0xba, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0x23, 0xc5, 0x49, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x29, 0x18, 0xb5, 0x1b, 0x14, 0x4b, 0xdb, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x46, 0xde, 0xe5, 0xc1, 0xb3, 0xad, 0x50, 0x36, 0xbc, 0xad, 0x73, 0xf0, 0xb8, 0x67, 0x95, 0x0e, 0x5e, 0xc6, 0xac, 0xd2, 0xe1, 0x14, 0x5b, 0x83, 0xe3, 0xa1, 0xe9, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x06, 0xcf, 0x5c, 0x4f, 0xd9, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0xa2, 0x52, 0xe4, 0xe0, 0xdd, 0x96, 0x22, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x95, 0x1a, 0xce, 0x07, 0xcd, 0x6e, 0x47, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0xde, 0x26, 0x9a, 0xb2, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x89, 0x54, 0xbd, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcd, 0x05, 0x18, 0x6e, 0xf0, 0xcc, 0x95, 0x94, 0x83, 0x97, 0x0f, 0xa2, 0x6c, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xf0, 0x40, 0x71, 0x94, 0x83, 0x43, 0x4c, 0xc7, 0x86, 0xbf, 0x68, 0x36, 0x78, 0x82, 0xe3, 0xc7, 0x86, 0x5f, 0x5c, 0xd6, 0xa0, 0x10, 0x4c, 0x3d, 0x78, 0x7a, 0xba, 0xc7, 0x06, 0xaf, 0x91, 0x50, 0xd9, 0xe0, 0x09, 0x53, 0x27, 0x1b, 0x34, 0x18, 0x66, 0xb5, 0x86, 0xbf, 0x68, 0x36, 0x78, 0xc5, 0xe4, 0xc8, 0x06, 0xab, 0xc0, 0x64, 0x0f, 0x5e, 0x98, 0x71, 0xd2, 0x6a, 0xb0, 0xec, 0x3e, 0x6a, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x17, 0xad, 0x7b, 0x1c, 0xbc, 0xf8, 0xec, 0x63, 0xc3, 0xd7, 0x2f, 0x6b, 0xb8, 0xa4, 0xd6, 0x78, 0x7c, 0xb0, 0xa8, 0x2d, 0xbd, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0x1e, 0x19, 0x98, 0xb2, 0x06, 0xe7, 0xc2, 0x85, 0x35, 0xe4, 0xb1, 0x37, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xe0, 0x03, 0x97, 0x46, 0x87, 0xa6, 0x03, 0x72, 0xf6, 0xf6, 0x66, 0x1e, 0x84, 0xa7, 0xea, 0x06, 0x41, 0x7a, 0xba, 0xc6, 0xa1, 0x83, 0xe7, 0xa0, 0x7d, 0xac, 0xc1, 0xeb, 0xed, 0x3d, 0x36, 0x38, 0x8e, 0x4d, 0x6c, 0xf0, 0xc4, 0x77, 0x94, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0xc1, 0x9b, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x3c, 0x07, 0xed, 0x63, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xe2, 0x46, 0xed, 0xc1, 0x2b, 0xdd, 0x51, 0xd6, 0xf0, 0x8b, 0xd2, 0x06, 0x8f, 0xc0, 0x49, 0xd9, 0x70, 0x49, 0x6d, 0xf0, 0x24, 0x38, 0x90, 0x35, 0x78, 0x93, 0x32, 0xc8, 0x06, 0x85, 0x60, 0xea, 0xc1, 0xb3, 0x93, 0x41, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0x3c, 0xb9, 0x33, 0x65, 0x83, 0xd7, 0xa4, 0xa7, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x5e, 0xb2, 0x9e, 0xb2, 0xc1, 0xab, 0xbd, 0x53, 0xd6, 0x60, 0x81, 0xdc, 0xd3, 0x86, 0xb7, 0x75, 0x0e, 0x9e, 0x83, 0xf6, 0x51, 0x6b, 0xf0, 0x14, 0x8b, 0x8f, 0x0d, 0x97, 0xd4, 0x06, 0x8f, 0x67, 0x57, 0x59, 0x83, 0x27, 0xee, 0xa7, 0x6c, 0x50, 0xc2, 0x63, 0x6e, 0xf0, 0x56, 0x7b, 0x95, 0x0d, 0x1e, 0xab, 0x9f, 0xb2, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0xb7, 0xda, 0xab, 0xb4, 0x06, 0xaf, 0xf3, 0xf7, 0xd8, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0xf9, 0xbc, 0xcb, 0x0d, 0x1e, 0x78, 0x9d, 0xb2, 0xc1, 0x83, 0xec, 0x55, 0x5a, 0x83, 0xd7, 0x41, 0x7c, 0x6c, 0xb8, 0xa4, 0x36, 0x78, 0x3c, 0xbb, 0xca, 0x1a, 0x94, 0x58, 0xdb, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0x70, 0x74, 0x1d, 0xdc, 0xa0, 0x19, 0xcd, 0x81, 0x83, 0x37, 0x74, 0xa2, 0xac, 0xc1, 0x4b, 0xa4, 0x52, 0x36, 0xbc, 0xad, 0x73, 0xf0, 0x0e, 0xa8, 0x92, 0x0e, 0x0a, 0xa5, 0xed, 0xd6, 0xe0, 0xe5, 0x20, 0x1f, 0x1b, 0x2e, 0xa9, 0x0d, 0x1e, 0xcf, 0xae, 0xb2, 0x06, 0x4f, 0x7c, 0x47, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0xaf, 0xbf, 0x57, 0x59, 0xc3, 0x2f, 0x4a, 0x1b, 0xbc, 0xfa, 0x0d, 0x64, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x0c, 0xf0, 0xcd, 0x95, 0xd1, 0xd1, 0xb1, 0x95, 0x6d, 0x78, 0x50, 0x72, 0x83, 0xf7, 0xca, 0xa3, 0x6c, 0x78, 0x5b, 0xe7, 0x60, 0x41, 0x2b, 0xf1, 0x06, 0x2f, 0xcc, 0x38, 0xa9, 0x3a, 0x9c, 0x62, 0x6b, 0xd0, 0x2a, 0x90, 0xcb, 0x86, 0xbf, 0x68, 0xd6, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0xb5, 0x79, 0xa4, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x78, 0x27, 0x9f, 0xca, 0x06, 0x6f, 0xf1, 0x53, 0xd9, 0xe0, 0x85, 0x86, 0x2a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x13, 0x2b, 0x6b, 0x0f, 0x9e, 0x12, 0x1c, 0xd2, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0xd7, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0x37, 0x78, 0x2f, 0x02, 0x49, 0x6d, 0x50, 0xec, 0x68, 0xae, 0xe1, 0x11, 0xd6, 0x35, 0xfc, 0x9b, 0xb3, 0xc1, 0x8b, 0x63, 0x52, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xf0, 0xde, 0xa6, 0x94, 0x35, 0x28, 0x26, 0x31, 0x37, 0x48, 0x19, 0x0c, 0x1e, 0x3c, 0x3e, 0x78, 0x6f, 0x53, 0xca, 0x1a, 0xfe, 0xcd, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0x70, 0x72, 0x3d, 0x48, 0x75, 0xdd, 0xdc, 0xf0, 0xb6, 0xce, 0xe0, 0xf2, 0xc1, 0x7b, 0x9b, 0x52, 0xda, 0xa0, 0xa0, 0xc8, 0xdc, 0xe0, 0xe4, 0x20, 0xb7, 0xe0, 0xf3, 0xc1, 0x7b, 0x9b, 0x52, 0x36, 0x28, 0x28, 0x32, 0x57, 0xc3, 0xe7, 0x4a, 0x1b, 0xbc, 0x0e, 0xe2, 0xe3, 0xe0, 0xb8, 0x78, 0xb2, 0xc1, 0x31, 0xdc, 0x60, 0x83, 0x63, 0xb8, 0xc1, 0x06, 0x2f, 0x91, 0x4a, 0xd9, 0x60, 0x81, 0xdc, 0xd3, 0xc1, 0x53, 0x1e, 0x56, 0x56, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0xf9, 0xe4, 0xed, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0x3c, 0xb6, 0xb0, 0xf1, 0xe0, 0xb8, 0x78, 0xb2, 0xc1, 0x31, 0xdc, 0x60, 0x83, 0x63, 0xb8, 0xc1, 0x06, 0x4b, 0xec, 0xb7, 0x37, 0x58, 0x20, 0xf7, 0x74, 0xf0, 0x8e, 0xfd, 0x94, 0xd5, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0x3c, 0xbd, 0x32, 0x77, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x05, 0x1e, 0x5b, 0xd8, 0x79, 0x70, 0x5c, 0x3c, 0xd9, 0xe0, 0x18, 0x6e, 0xb0, 0xc1, 0x31, 0xdc, 0x60, 0x83, 0x25, 0xf6, 0xdb, 0x1b, 0x2c, 0x90, 0x7b, 0xda, 0xf0, 0xb6, 0xce, 0x80, 0xc7, 0x16, 0x76, 0x0e, 0x78, 0x7a, 0x65, 0x6e, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0x5e, 0x94, 0xb3, 0xb2, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x16, 0x77, 0x66, 0x1f, 0x1c, 0x17, 0x4f, 0x36, 0x38, 0x86, 0x1b, 0x6c, 0x70, 0x0c, 0x37, 0xd8, 0x60, 0x89, 0xfd, 0xf6, 0x06, 0x0b, 0xe4, 0x9e, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0xe2, 0xce, 0xec, 0x83, 0x37, 0xfe, 0xac, 0xac, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xa1, 0xf9, 0xc1, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0x3c, 0xb3, 0x30, 0xfa, 0xe0, 0x10, 0xd3, 0xb1, 0xc1, 0x31, 0xdc, 0x60, 0x83, 0x63, 0xb8, 0xc1, 0x06, 0x4b, 0xec, 0xb7, 0x37, 0x58, 0x20, 0xf7, 0xb4, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x58, 0xea, 0xbd, 0xba, 0xc1, 0xab, 0xc8, 0x4f, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x67, 0x16, 0x46, 0x1f, 0x04, 0xeb, 0x6d, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0x7a, 0x70, 0xfa, 0xe0, 0xdd, 0x2c, 0x2b, 0xb5, 0x02, 0xfe, 0x59, 0xd9, 0x1c, 0xbd, 0xe1, 0x17, 0xa5, 0x0d, 0xde, 0x05, 0xab, 0xb2, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0xaf, 0x52, 0xb5, 0xc1, 0x23, 0x13, 0x45, 0x0e, 0xde, 0x0a, 0x35, 0xb2, 0x41, 0xd1, 0x41, 0xbb, 0xc1, 0xb3, 0x91, 0x54, 0x36, 0x78, 0x40, 0xaf, 0xca, 0x06, 0xaf, 0xe4, 0x55, 0xd9, 0xa0, 0x20, 0x8d, 0x5d, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0xd4, 0x70, 0xde, 0xa0, 0x84, 0x8e, 0xdd, 0xa0, 0xd9, 0xed, 0xa8, 0x83, 0x30, 0x1d, 0x5b, 0x83, 0x20, 0x3d, 0xdd, 0xa0, 0x2d, 0x31, 0xab, 0x35, 0x48, 0x19, 0x0c, 0xde, 0x60, 0x89, 0xfd, 0xf6, 0x86, 0xb7, 0x75, 0x0e, 0xde, 0xb6, 0xab, 0xb2, 0x86, 0x1f, 0x6a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xad, 0x48, 0x56, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0x9a, 0xd4, 0xbc, 0xd8, 0x60, 0x5d, 0x76, 0xdd, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0x6f, 0xdc, 0x1d, 0xbc, 0xc2, 0x4c, 0xe4, 0xa0, 0x31, 0x07, 0xa9, 0x35, 0x78, 0x50, 0xd8, 0xca, 0xc1, 0x7b, 0xb9, 0x56, 0x6a, 0xc3, 0x2f, 0x2e, 0x1b, 0xbc, 0x46, 0x42, 0x65, 0x83, 0x57, 0xf2, 0xaa, 0x6c, 0xd0, 0x60, 0x98, 0xd5, 0x06, 0xef, 0x42, 0x57, 0x69, 0x35, 0x78, 0x0d, 0xaa, 0xca, 0x86, 0x5f, 0x94, 0x36, 0x78, 0x17, 0xac, 0xca, 0x86, 0xaf, 0x5f, 0x36, 0x78, 0x23, 0xbb, 0xca, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x0f, 0xe8, 0x55, 0x59, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xf2, 0xd8, 0x1b, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0xf0, 0x85, 0x4b, 0xa3, 0x43, 0xd3, 0x01, 0x11, 0x0b, 0x23, 0x03, 0xb9, 0x4b, 0x93, 0x2b, 0x0f, 0xc2, 0x53, 0x75, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x35, 0x08, 0x36, 0xd3, 0x0d, 0xde, 0x7c, 0x0e, 0xb2, 0xc1, 0xe3, 0xe0, 0x3e, 0x36, 0x78, 0xfe, 0xdc, 0x47, 0x07, 0x6f, 0xd9, 0x55, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x3c, 0xb9, 0x33, 0x65, 0x83, 0xd7, 0xa4, 0xa7, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x1e, 0x49, 0xae, 0xb2, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x6f, 0x8c, 0x5a, 0xe9, 0xe0, 0x15, 0xc1, 0x2a, 0x1d, 0x94, 0x75, 0x9e, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0xac, 0x0f, 0xde, 0x5c, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xf2, 0xd8, 0x1b, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0xf0, 0x85, 0x4b, 0xa3, 0x43, 0xd3, 0x01, 0x11, 0x0b, 0x23, 0x03, 0xb9, 0x0b, 0x9b, 0x83, 0x37, 0x58, 0x23, 0xd5, 0xb4, 0xc1, 0xf3, 0xec, 0x3e, 0x0e, 0xde, 0xcb, 0xb5, 0xb2, 0x41, 0x90, 0x9e, 0xae, 0x71, 0xe8, 0x60, 0xdd, 0x2e, 0xe7, 0x1a, 0xbc, 0xf9, 0x1c, 0x64, 0x83, 0xe3, 0xd8, 0xc4, 0x06, 0xef, 0xf7, 0x59, 0x59, 0xc3, 0x23, 0xac, 0x6b, 0x50, 0x4c, 0x62, 0xae, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc0, 0x2f, 0xc3, 0x4b, 0xa3, 0x37, 0x78, 0xdf, 0xce, 0xc8, 0x06, 0x0f, 0x56, 0x07, 0x39, 0x58, 0xb7, 0xcb, 0xb9, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x45, 0x2a, 0xe6, 0x06, 0x27, 0xca, 0xd4, 0x83, 0x77, 0x0f, 0xae, 0xac, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x8b, 0xc6, 0xc9, 0x83, 0xa7, 0x07, 0xef, 0x2f, 0x5c, 0x59, 0xc3, 0x27, 0x36, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe5, 0xc8, 0xc2, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0xe0, 0x25, 0x88, 0x2b, 0x6d, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0x52, 0x8c, 0xaa, 0x0d, 0x57, 0xd7, 0xc1, 0xf3, 0xe7, 0x3e, 0x0e, 0x5f, 0x4e, 0xb6, 0x06, 0xeb, 0x56, 0x99, 0x66, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0x2e, 0xe0, 0x65, 0x0b, 0x3b, 0x3b, 0x4b, 0x73, 0x3b, 0x0f, 0x8a, 0x9c, 0xd6, 0x0d, 0xef, 0xf6, 0x6c, 0xf0, 0xe4, 0xce, 0x94, 0x0d, 0x5e, 0x93, 0x9e, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x78, 0x24, 0xb9, 0xca, 0x6a, 0x78, 0xe3, 0xee, 0xe0, 0xf5, 0x79, 0x22, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x07, 0xef, 0x1e, 0x5c, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x3c, 0xae, 0x6e, 0x65, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x72, 0x0c, 0x90, 0x83, 0x75, 0xbb, 0x9c, 0xd5, 0x41, 0x59, 0xe7, 0xb9, 0x06, 0x8f, 0x83, 0xfb, 0xd8, 0x70, 0x49, 0x6d, 0xf0, 0x78, 0x76, 0x95, 0x35, 0x78, 0x21, 0x60, 0xca, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x4f, 0x8e, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf5, 0xb6, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x3c, 0x03, 0x30, 0xe5, 0xa0, 0x59, 0x92, 0xef, 0x5a, 0x83, 0xe7, 0xcf, 0x7d, 0x6c, 0x50, 0xec, 0x68, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0x3c, 0x28, 0xb9, 0xc1, 0xb2, 0xc6, 0xb9, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x9c, 0x83, 0x8c, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x8b, 0xf8, 0x69, 0x0f, 0x5a, 0xf0, 0xf8, 0x6e, 0x0d, 0xce, 0x85, 0x0b, 0x6b, 0xc8, 0x63, 0x6f, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0xc0, 0xef, 0x2e, 0x4f, 0x8e, 0x4c, 0x07, 0x24, 0xcd, 0x6d, 0x2e, 0xcc, 0xad, 0x3c, 0x08, 0x4f, 0xd5, 0x0d, 0x4e, 0xec, 0x37, 0x6b, 0x50, 0x74, 0x1a, 0xaf, 0xe1, 0x41, 0xc9, 0x0d, 0xce, 0x86, 0x2e, 0x07, 0x0f, 0x0d, 0x5d, 0xd9, 0xe0, 0xb1, 0xa2, 0x2b, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x51, 0x85, 0x20, 0x1b, 0x1c, 0x5d, 0x07, 0xd7, 0xa0, 0xc5, 0xa6, 0xcb, 0x83, 0x76, 0x95, 0xd0, 0xd6, 0xe0, 0xd9, 0x01, 0x29, 0x07, 0x8f, 0x85, 0x56, 0x59, 0x83, 0xe7, 0x68, 0xa4, 0x6c, 0xb0, 0x46, 0xaa, 0x69, 0x83, 0x32, 0x4b, 0x77, 0xc3, 0x83, 0x92, 0x1b, 0x9c, 0x8e, 0x44, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x53, 0x64, 0x96, 0x1b, 0x3c, 0x40, 0x24, 0x65, 0x0d, 0xda, 0x2b, 0x29, 0x38, 0x78, 0x8e, 0x46, 0x4a, 0x6b, 0xf0, 0xbe, 0x91, 0x94, 0x0d, 0xd6, 0x48, 0x35, 0x6d, 0x50, 0x66, 0xe9, 0x6e, 0x78, 0x50, 0x72, 0x83, 0xd3, 0x91, 0xc8, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x8a, 0xcc, 0x72, 0x83, 0x07, 0x98, 0xa4, 0xac, 0x41, 0x7b, 0x25, 0x05, 0x07, 0xef, 0x1b, 0x49, 0xa9, 0x0d, 0x8e, 0x63, 0x13, 0x1b, 0xbc, 0xdf, 0x67, 0x65, 0x0d, 0x6f, 0xb3, 0x6e, 0xf8, 0x37, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x30, 0x80, 0x36, 0x0e, 0x5e, 0x59, 0xb4, 0xb2, 0xe1, 0x6d, 0x9d, 0x0d, 0x06, 0xd0, 0xc6, 0x41, 0x0b, 0x1e, 0xdf, 0x6b, 0xb0, 0x6e, 0x95, 0x69, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x02, 0x3c, 0xea, 0xdc, 0xd8, 0xc2, 0xce, 0xce, 0xd2, 0xdc, 0xce, 0x83, 0x02, 0x36, 0x7f, 0xc3, 0x25, 0xb5, 0xc1, 0xe3, 0xd9, 0x55, 0xd6, 0xe0, 0x95, 0x45, 0x2b, 0x07, 0xcd, 0x74, 0x7c, 0xd7, 0xe1, 0x14, 0x6b, 0x0d, 0xd6, 0x8e, 0x76, 0x6f, 0x50, 0x96, 0x61, 0x6f, 0xf0, 0xa2, 0x68, 0x94, 0x59, 0x66, 0x0d, 0x16, 0xf1, 0xd3, 0x6e, 0xf8, 0xfa, 0x65, 0x83, 0x37, 0xb2, 0xab, 0x6c, 0x50, 0x90, 0xc6, 0x6e, 0x50, 0xf8, 0x1b, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0xd7, 0xe0, 0xc5, 0xd2, 0x27, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x1e, 0x5e, 0x7c, 0xd2, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xcc, 0xc2, 0xe8, 0x0d, 0xcd, 0x0f, 0x0e, 0x9e, 0xcd, 0xac, 0xd2, 0xc1, 0xb3, 0xad, 0x50, 0x36, 0x28, 0x48, 0x63, 0x37, 0x58, 0x55, 0x75, 0xba, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0x5f, 0x83, 0xb7, 0x28, 0xa2, 0x74, 0xf0, 0x36, 0xe5, 0x95, 0x0d, 0x0e, 0x78, 0x56, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0xb0, 0x7e, 0xee, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x76, 0xb7, 0x1b, 0x1c, 0xf0, 0xac, 0x0e, 0x52, 0x6d, 0xe1, 0x36, 0x28, 0x48, 0x63, 0x37, 0x58, 0x48, 0xfe, 0xbb, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x2f, 0xf6, 0xf6, 0x46, 0xb7, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xc4, 0x4f, 0x7b, 0xf0, 0xca, 0xa2, 0x95, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0x23, 0x3e, 0x51, 0x0e, 0x1e, 0xf3, 0x8a, 0xb2, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0xc1, 0xeb, 0x83, 0xf5, 0x73, 0xa7, 0x6d, 0xb8, 0xa4, 0x36, 0x78, 0x3c, 0xbb, 0xca, 0x1a, 0x2c, 0x0f, 0x31, 0xdd, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0xfe, 0xfd, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0x0f, 0xe1, 0x5e, 0x39, 0x78, 0xb6, 0x15, 0x4a, 0xab, 0xa1, 0xf9, 0xc1, 0x86, 0x5f, 0x94, 0x36, 0x78, 0x18, 0x01, 0xca, 0x86, 0xaf, 0x5f, 0x36, 0x78, 0x23, 0xbb, 0xca, 0x06, 0x45, 0x07, 0xed, 0x1a, 0xbe, 0x6f, 0x1f, 0xf0, 0xd4, 0xde, 0xc4, 0x0d, 0x4a, 0xe8, 0xd8, 0x0d, 0x5e, 0x83, 0x80, 0x72, 0x10, 0xa6, 0x63, 0x1b, 0x3c, 0x7e, 0x79, 0x65, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x06, 0xcf, 0xf2, 0x3f, 0xe9, 0xe0, 0x6d, 0xca, 0x2b, 0x1b, 0x1c, 0xf0, 0xac, 0x36, 0x78, 0x57, 0x07, 0x4a, 0x1b, 0x1c, 0xc7, 0x26, 0x16, 0xf0, 0xd8, 0xea, 0xd8, 0x83, 0x07, 0x32, 0xaf, 0xac, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x91, 0x8a, 0x39, 0xe0, 0xb1, 0xd5, 0xb1, 0x03, 0x9e, 0xda, 0x9b, 0xd8, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x9f, 0x6b, 0x4b, 0xa3, 0x3b, 0x78, 0xaf, 0x3c, 0xca, 0x1a, 0x9e, 0xc5, 0x1b, 0x9c, 0x1d, 0xbc, 0x1e, 0x9c, 0x3d, 0x18, 0xa4, 0x52, 0x1b, 0xbc, 0x2b, 0x23, 0x65, 0x0d, 0x8e, 0xae, 0x83, 0x1b, 0x3c, 0x02, 0x02, 0x65, 0x83, 0x47, 0x44, 0xa0, 0x1c, 0x3c, 0x19, 0x13, 0x65, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1f, 0xbc, 0xba, 0x7d, 0xa5, 0x0d, 0x8e, 0x63, 0x13, 0x0b, 0x78, 0x7a, 0x75, 0xf3, 0xc1, 0x03, 0x99, 0x57, 0xd6, 0xa0, 0x98, 0xc4, 0xdc, 0xa0, 0x48, 0xc5, 0x1c, 0xf0, 0xf4, 0xea, 0xe6, 0x83, 0x97, 0xb9, 0xaf, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x9e, 0xf7, 0xbe, 0xb2, 0x86, 0x67, 0xf1, 0x06, 0xd7, 0x07, 0xaf, 0x0f, 0x96, 0x7a, 0xfc, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0xc7, 0xae, 0xaf, 0xac, 0xc1, 0xd1, 0x75, 0x70, 0x83, 0x47, 0x40, 0xa0, 0x6c, 0xf0, 0xfc, 0x15, 0x94, 0x83, 0x27, 0x63, 0xa2, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0x47, 0xe8, 0xaf, 0xb4, 0xc1, 0x89, 0xfd, 0x66, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x5e, 0x91, 0xba, 0xb2, 0xc1, 0xfb, 0xae, 0x57, 0x36, 0x38, 0xba, 0x0e, 0xae, 0xc1, 0x73, 0x34, 0x52, 0x36, 0x58, 0x23, 0xd5, 0xb4, 0x41, 0x99, 0xa5, 0xbb, 0xe1, 0x41, 0xc9, 0x0d, 0x4e, 0x47, 0x22, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x29, 0x32, 0xcb, 0x0d, 0x5e, 0xdb, 0xbf, 0x72, 0xf0, 0x8c, 0xd9, 0x95, 0x35, 0x78, 0xdf, 0x48, 0xca, 0x06, 0x6b, 0xa4, 0x9a, 0x36, 0x28, 0xb3, 0x74, 0x37, 0x3c, 0x28, 0xb9, 0xc1, 0xe9, 0x48, 0x64, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x45, 0x66, 0xb9, 0x86, 0xb7, 0x75, 0x0e, 0xde, 0x7e, 0xbf, 0x72, 0xf0, 0x36, 0xdc, 0x95, 0x36, 0x5c, 0x52, 0x1b, 0x3c, 0x9e, 0x5d, 0x65, 0x0d, 0x9e, 0xf8, 0x8e, 0xb2, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x52, 0x49, 0xc2, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xd9, 0x85, 0xb9, 0x07, 0x2f, 0x73, 0x5f, 0xd9, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xb4, 0x46, 0x94, 0xb5, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x80, 0x7b, 0x7e, 0x70, 0x02, 0x12, 0x6d, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x76, 0x61, 0xee, 0x06, 0x01, 0x74, 0xb6, 0xe1, 0x6d, 0x9d, 0x01, 0xcf, 0x2e, 0xcc, 0x3d, 0x78, 0x20, 0xf3, 0x4a, 0x1b, 0xbe, 0x7e, 0xd9, 0xe0, 0x09, 0x7e, 0x28, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0xb4, 0x5d, 0xf6, 0xb9, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xe0, 0x1b, 0x93, 0x2b, 0x0b, 0xa3, 0x2b, 0x3b, 0x78, 0xaf, 0x3c, 0xca, 0x06, 0x2f, 0x8e, 0x49, 0xd9, 0xe0, 0x3d, 0x0d, 0x2c, 0x1b, 0xb4, 0x74, 0x96, 0xb5, 0x06, 0x47, 0xd7, 0xc1, 0x0d, 0x1e, 0x01, 0x81, 0xb2, 0xc1, 0x8b, 0x9b, 0x50, 0x36, 0x68, 0xe9, 0x2c, 0xeb, 0xe0, 0xc9, 0x98, 0x28, 0x07, 0x8b, 0xc0, 0xcf, 0x37, 0x28, 0x48, 0x63, 0x07, 0x3c, 0xb7, 0x30, 0x7b, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xe1, 0x26, 0xba, 0x41, 0xd9, 0x54, 0x7f, 0xf0, 0x00, 0x3f, 0x94, 0x83, 0x76, 0xce, 0xb2, 0x36, 0x38, 0x8e, 0x4d, 0x6c, 0xd0, 0xd8, 0xda, 0xe7, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x14, 0xa9, 0x98, 0x07, 0xaf, 0x11, 0x42, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x0c, 0xf0, 0xd5, 0xc1, 0x91, 0x85, 0xd1, 0x95, 0x1d, 0xbc, 0x57, 0x1e, 0x65, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x52, 0xc3, 0x79, 0xf0, 0xfa, 0xe0, 0x35, 0x42, 0x28, 0x07, 0xcd, 0x3e, 0xa0, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xca, 0x16, 0xd4, 0x83, 0xd7, 0x97, 0xb0, 0x6c, 0xd0, 0xd2, 0x59, 0xd6, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x1b, 0x3c, 0xb8, 0x62, 0xe5, 0xe0, 0xbd, 0xf2, 0x28, 0x07, 0xcd, 0x3e, 0xa0, 0xd6, 0x0a, 0x78, 0x6c, 0x6f, 0xe4, 0x86, 0x5f, 0x94, 0x36, 0x78, 0xee, 0x33, 0xca, 0x86, 0xaf, 0x5f, 0x36, 0x78, 0x23, 0xbb, 0xca, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x8f, 0x5f, 0x5e, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xee, 0xbc, 0x6f, 0xf0, 0x2a, 0xf2, 0x93, 0x83, 0xf7, 0x2d, 0xaf, 0x6c, 0xd0, 0x46, 0xde, 0x65, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x84, 0xdd, 0xed, 0x06, 0xaf, 0x46, 0x5e, 0xd9, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x7d, 0x6a, 0xed, 0x06, 0x6d, 0xe4, 0x5d, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0x17, 0x77, 0xa1, 0x6c, 0x50, 0x4c, 0x62, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x1e, 0xde, 0x7e, 0xb2, 0x06, 0xc1, 0x66, 0xba, 0x86, 0x0c, 0xf8, 0xc1, 0x03, 0x3b, 0x51, 0x36, 0x68, 0x25, 0xda, 0xb2, 0x83, 0x43, 0x4c, 0xc7, 0xc1, 0xc1, 0x23, 0xe3, 0x70, 0x8a, 0xd5, 0xe1, 0x14, 0x5b, 0x0d, 0x1e, 0x45, 0x9e, 0xb2, 0xe1, 0x17, 0xa5, 0x0d, 0xde, 0x05, 0xab, 0xb2, 0xe1, 0xeb, 0x97, 0x0d, 0xde, 0xc8, 0xae, 0xb2, 0xe1, 0x92, 0xda, 0xe0, 0xf1, 0xec, 0x2a, 0x6b, 0x50, 0x62, 0x6d, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0x77, 0x04, 0xab, 0x1c, 0x14, 0x4a, 0xdb, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0xac, 0x41, 0x9b, 0x3b, 0x54, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x6d, 0xee, 0x50, 0x35, 0x00, 0x7f, 0x72, 0x65, 0x74, 0x72, 0x65, 0x61, 0x74, 0x20, 0x61, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x3c, 0x99, 0x2b, 0x65, 0x83, 0x67, 0x67, 0xab, 0x6c, 0xf0, 0x40, 0x71, 0x94, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x23, 0xe9, 0x44, 0x0e, 0x5e, 0x31, 0x39, 0xd2, 0x86, 0xaf, 0x5f, 0x36, 0x78, 0x3e, 0x58, 0xca, 0x86, 0x0f, 0x72, 0x36, 0x78, 0x92, 0x58, 0xca, 0x1a, 0x14, 0x7c, 0x98, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0x10, 0x82, 0x0f, 0x07, 0xef, 0x52, 0xf7, 0xd8, 0xf0, 0x6e, 0xcf, 0x06, 0x4f, 0x1b, 0x4f, 0xd9, 0xe0, 0x09, 0x53, 0x27, 0x6b, 0xb0, 0x46, 0xaa, 0x69, 0x83, 0xc7, 0xa0, 0x8d, 0x6c, 0x78, 0x5b, 0xe7, 0xe0, 0x39, 0x50, 0x2a, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0xd0, 0x96, 0x98, 0xd5, 0x06, 0x6f, 0x73, 0x4b, 0xd9, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x11, 0x7e, 0xd2, 0x0d, 0xde, 0x10, 0x97, 0xb2, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x2b, 0x2a, 0x45, 0x0e, 0x9e, 0x30, 0x75, 0xb2, 0xc1, 0x92, 0xfa, 0xa5, 0x0d, 0x9e, 0x4d, 0x97, 0xb2, 0xc1, 0xa9, 0xe1, 0x68, 0x0d, 0xbf, 0xb8, 0x6c, 0xf0, 0x84, 0xa9, 0x93, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xdb, 0x16, 0x54, 0x0e, 0xde, 0xbf, 0xa6, 0xd2, 0x86, 0x07, 0x25, 0x37, 0x68, 0x56, 0x87, 0xea, 0xe0, 0x21, 0x7c, 0x29, 0x87, 0x53, 0xec, 0x70, 0x8a, 0xad, 0xc0, 0xb7, 0x95, 0x1b, 0x1e, 0x1f, 0x19, 0xf8, 0xb6, 0x72, 0x83, 0xb2, 0x0c, 0x7b, 0x0d, 0x9f, 0x2b, 0x6d, 0xf0, 0x70, 0xc6, 0x94, 0x83, 0x37, 0x56, 0xa3, 0xcc, 0x32, 0x0b, 0xe0, 0x25, 0x57, 0x66, 0x96, 0xe6, 0x56, 0xd6, 0xd2, 0xf6, 0x66, 0x57, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xbc, 0x96, 0x8d, 0xa5, 0x01, 0x7c, 0xdb, 0xde, 0xec, 0xca, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x40, 0xec, 0xc2, 0xe6, 0xca, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xbb, 0xd9, 0x51, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0xf4, 0xa6, 0xdf, 0xe0, 0x09, 0x8e, 0x1f, 0x1b, 0x3c, 0x3b, 0x19, 0xa4, 0x0d, 0xce, 0x85, 0x0b, 0x6b, 0xc8, 0x63, 0x6f, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0xe0, 0x17, 0x0b, 0x23, 0x6b, 0x69, 0x7b, 0xb3, 0x2b, 0x37, 0x28, 0x3a, 0x68, 0x07, 0x3c, 0xb4, 0x34, 0x78, 0x83, 0x27, 0x42, 0xa6, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x17, 0xf0, 0xdd, 0xca, 0xd8, 0xd8, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0xdf, 0x85, 0x1d, 0x3c, 0x96, 0x33, 0xe5, 0xa0, 0x4d, 0xf5, 0xa8, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xa1, 0xa5, 0xc1, 0xad, 0xc1, 0xb9, 0x70, 0x61, 0x0d, 0x79, 0xec, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0xfc, 0x6e, 0x6f, 0x74, 0x2d, 0x63, 0x65, 0x6c, 0xec, 0x41, 0x78, 0xaa, 0x6e, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x64, 0x75, 0xe3, 0x1a, 0x9c, 0x0b, 0x17, 0xd6, 0x90, 0xc7, 0xde, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0xc0, 0x2f, 0x16, 0x46, 0xd6, 0x42, 0x56, 0x37, 0x46, 0x6f, 0xb0, 0x46, 0xaa, 0x69, 0x83, 0xa7, 0xa7, 0x7b, 0x1c, 0x34, 0x04, 0x20, 0xb5, 0x41, 0xd1, 0x41, 0x3b, 0xe0, 0xe5, 0x85, 0xd1, 0x1b, 0x3c, 0x11, 0x32, 0x65, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0xc1, 0xba, 0xf8, 0xe0, 0x83, 0x27, 0xf0, 0xb1, 0x6c, 0x50, 0x54, 0x8a, 0x1f, 0x34, 0x23, 0x21, 0xb8, 0x41, 0xd1, 0x41, 0xbb, 0x41, 0xe1, 0x6f, 0xb0, 0xc1, 0x13, 0x21, 0x53, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xc0, 0x4b, 0xae, 0xcc, 0x2c, 0xcd, 0xad, 0xac, 0x45, 0x2c, 0x8c, 0x8d, 0x6d, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x79, 0x61, 0x74, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x8f, 0xac, 0x6e, 0xec, 0xe0, 0x41, 0xd1, 0x2b, 0x07, 0x8f, 0xe5, 0x4c, 0x59, 0x01, 0xbc, 0xe4, 0xca, 0xcc, 0xd2, 0xdc, 0xca, 0x5a, 0xc6, 0xc2, 0xe4, 0xc8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa7, 0x55, 0xb2, 0x34, 0x80, 0xef, 0x58, 0x98, 0x1c, 0x19, 0x88, 0x99, 0xdc, 0x5b, 0x1b, 0x88, 0x5d, 0xd8, 0x5c, 0xd9, 0x86, 0x5f, 0x94, 0x36, 0x68, 0x37, 0x3b, 0x6a, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0xde, 0xf4, 0x1b, 0xbc, 0x62, 0x72, 0xe4, 0xe0, 0x45, 0x75, 0x2c, 0x1b, 0x9c, 0x0b, 0x17, 0xd6, 0x90, 0xc7, 0xde, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0xc0, 0x2f, 0x16, 0x46, 0xd6, 0x32, 0x16, 0x26, 0x47, 0x6e, 0x50, 0x74, 0xd0, 0x0e, 0x78, 0x68, 0x69, 0xf0, 0x06, 0x4f, 0x84, 0x4c, 0xd9, 0xe0, 0x55, 0x7a, 0x2c, 0x1b, 0x14, 0x7c, 0x98, 0x1b, 0x3c, 0xd1, 0x8f, 0x65, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0xb0, 0x10, 0x91, 0x83, 0xa6, 0xe2, 0xa3, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x15, 0x98, 0xec, 0x41, 0x33, 0x12, 0x82, 0x07, 0x8f, 0xe5, 0x4c, 0xd9, 0xe0, 0x5c, 0xb8, 0xb0, 0x86, 0x3c, 0xf6, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x03, 0x7e, 0xb1, 0x30, 0xb2, 0x96, 0xb6, 0x32, 0xba, 0x70, 0x83, 0xa2, 0x83, 0x76, 0x83, 0x46, 0x3d, 0xfd, 0x36, 0x78, 0x22, 0x64, 0xca, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x96, 0x35, 0x2e, 0x0f, 0x9e, 0xc0, 0xc7, 0x72, 0xf0, 0x06, 0x46, 0x96, 0x0d, 0x8a, 0x0e, 0xda, 0x01, 0x0f, 0x2d, 0x0d, 0xde, 0xe0, 0x89, 0x90, 0x29, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x27, 0xeb, 0xb1, 0x6c, 0xd0, 0x3c, 0xab, 0x5f, 0x1b, 0x14, 0x7c, 0x98, 0x1b, 0x3c, 0xd1, 0x8f, 0x65, 0x83, 0xa2, 0x83, 0x76, 0x83, 0xc6, 0xe7, 0xa3, 0x36, 0x78, 0x22, 0x64, 0xca, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0xf9, 0xae, 0x2c, 0x1b, 0x04, 0x2c, 0xeb, 0x1a, 0xde, 0xd6, 0x39, 0x68, 0xc9, 0xd5, 0xaf, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x9e, 0x08, 0x99, 0xb2, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0x5f, 0xc0, 0x77, 0x2b, 0x0b, 0xa3, 0x3b, 0x78, 0x02, 0x1f, 0xcb, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xf1, 0xf9, 0xa8, 0x83, 0xa6, 0x71, 0xd5, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xab, 0xc0, 0x64, 0x0f, 0x5a, 0xc1, 0x07, 0x6b, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x9e, 0x64, 0x24, 0x72, 0xd0, 0xf4, 0xb8, 0xdf, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x9c, 0x64, 0x0f, 0x5a, 0x17, 0xf7, 0x3b, 0x78, 0x2c, 0x67, 0xca, 0x6a, 0xf0, 0xcc, 0x47, 0x96, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x67, 0x3e, 0xb2, 0x34, 0x80, 0xaf, 0x58, 0x18, 0x1b, 0x1b, 0x88, 0x99, 0xdc, 0x5b, 0x1b, 0x88, 0x5d, 0xd8, 0x5c, 0xd9, 0x86, 0x5f, 0x94, 0x36, 0x68, 0x37, 0x3b, 0x6a, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0xde, 0xf4, 0x1b, 0xbc, 0x15, 0x6a, 0xe4, 0xe0, 0x45, 0x75, 0x2c, 0x1b, 0x9c, 0x1c, 0xe4, 0x36, 0x68, 0x39, 0x3c, 0x6a, 0x0d, 0xce, 0x85, 0x0b, 0x6b, 0xc8, 0x63, 0x6f, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0xe0, 0x17, 0x0b, 0x23, 0x6b, 0x11, 0x0b, 0x63, 0x63, 0x37, 0xbc, 0x65, 0xb7, 0x41, 0x43, 0x0f, 0x82, 0x07, 0xe1, 0xa9, 0xba, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0x1d, 0x8d, 0x22, 0x1b, 0x3c, 0x06, 0x6d, 0xa4, 0x0d, 0x8a, 0x0e, 0xda, 0x0d, 0xd6, 0x7b, 0xea, 0x6d, 0xf0, 0x44, 0xc8, 0x94, 0x0d, 0x1e, 0xa0, 0xc8, 0xb2, 0x41, 0xd1, 0x41, 0xbb, 0x41, 0xfb, 0x6d, 0xc5, 0x1b, 0x3c, 0x11, 0x32, 0x65, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x9e, 0x56, 0xc9, 0xd2, 0x1a, 0xde, 0xd6, 0x39, 0x58, 0xf9, 0xb0, 0xd7, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xaf, 0x67, 0x52, 0xd9, 0xa0, 0x25, 0xbb, 0xe2, 0x0e, 0x1e, 0xcb, 0x99, 0xb2, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0x91, 0x89, 0x22, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x57, 0x54, 0x8a, 0x1c, 0x84, 0xe9, 0xd8, 0x1a, 0xfe, 0x5c, 0xda, 0xe0, 0x01, 0xe1, 0x1e, 0x07, 0xeb, 0xb5, 0x9e, 0x0f, 0x5e, 0x34, 0xcd, 0xb2, 0x41, 0x41, 0x1a, 0xbb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x45, 0xa5, 0xc8, 0x06, 0x25, 0x74, 0xec, 0x06, 0xef, 0xb6, 0x14, 0x39, 0x08, 0xd3, 0xb1, 0x35, 0x38, 0x17, 0x2e, 0xac, 0x21, 0x8f, 0xbd, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x80, 0x5f, 0x2c, 0x8c, 0xac, 0xe5, 0x2e, 0x4d, 0xae, 0xdc, 0x60, 0x8d, 0x54, 0xd3, 0x06, 0xef, 0xb6, 0x14, 0xd9, 0xf0, 0xb6, 0xce, 0x06, 0xaf, 0xa8, 0x14, 0x39, 0x68, 0x39, 0x3c, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x83, 0x07, 0x84, 0x7b, 0xac, 0xc1, 0xb9, 0x70, 0x61, 0x0d, 0x79, 0xec, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0xf8, 0x8a, 0x85, 0x91, 0xb5, 0xd8, 0x85, 0xb9, 0x95, 0xb5, 0xb0, 0x85, 0x89, 0x95, 0xb1, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x97, 0xbf, 0xa1, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x1e, 0x10, 0xee, 0x71, 0xd0, 0x72, 0x78, 0x54, 0x07, 0xaf, 0x81, 0x67, 0xd9, 0xa0, 0xe8, 0xa0, 0x1d, 0xf0, 0xf0, 0xc2, 0xec, 0x0d, 0x9e, 0x08, 0x99, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x78, 0x9d, 0x22, 0xcb, 0x06, 0xe7, 0x05, 0x9a, 0x83, 0x66, 0x24, 0x04, 0x37, 0x28, 0x3a, 0x68, 0x37, 0x58, 0xef, 0xa9, 0xb7, 0xc1, 0x13, 0x21, 0x53, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xaf, 0x53, 0x64, 0xd9, 0xa0, 0xa8, 0x14, 0x5f, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x5e, 0x98, 0x5d, 0x1b, 0x14, 0x1d, 0xb4, 0x1b, 0xb4, 0xdf, 0x56, 0xbc, 0xc1, 0x13, 0x21, 0x53, 0x36, 0x78, 0xf0, 0x35, 0xcb, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xaf, 0x91, 0x50, 0xd9, 0xe0, 0x09, 0x53, 0x27, 0x1b, 0xbc, 0x94, 0x1e, 0xe5, 0xe0, 0xb1, 0xdb, 0x2c, 0x07, 0x8f, 0xe5, 0x4c, 0x59, 0x0d, 0x9f, 0x2b, 0x6d, 0xf0, 0x2e, 0x4f, 0x91, 0x83, 0x77, 0x7d, 0xb3, 0x6c, 0x50, 0x90, 0xc6, 0x6e, 0xf0, 0x80, 0x70, 0x8f, 0x0d, 0x5e, 0xb1, 0xce, 0xb2, 0x41, 0xd1, 0x41, 0x3b, 0xe0, 0xe1, 0x85, 0xd9, 0x1b, 0x3c, 0x11, 0x32, 0x65, 0x83, 0x07, 0x28, 0xb2, 0x6c, 0x50, 0x74, 0xd0, 0x6e, 0xb0, 0xde, 0x53, 0x6f, 0x83, 0x27, 0x42, 0xa6, 0x6c, 0xf0, 0xd8, 0x7b, 0x96, 0x0d, 0x8a, 0x0e, 0xda, 0x0d, 0xda, 0x6f, 0x2b, 0xde, 0xe0, 0x89, 0x90, 0x29, 0x1b, 0x3c, 0xf8, 0x9a, 0x65, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xc7, 0xd6, 0xa8, 0x1c, 0xbc, 0xd0, 0x9f, 0xe5, 0xe0, 0xb1, 0x9c, 0x29, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0x5e, 0x99, 0x27, 0xb2, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xb0, 0x3a, 0xc8, 0x41, 0x91, 0x8a, 0xb9, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xb9, 0xd3, 0xc8, 0x41, 0x98, 0x8e, 0xb5, 0x41, 0x41, 0x1a, 0xbb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xb0, 0x3a, 0xc8, 0x06, 0x25, 0x74, 0xec, 0x06, 0x4f, 0x64, 0x07, 0x39, 0x08, 0xd3, 0xb1, 0x35, 0x28, 0x48, 0x63, 0x37, 0x78, 0xdf, 0xce, 0xc8, 0x1a, 0x2e, 0xa9, 0x35, 0x0e, 0x6d, 0xf0, 0x60, 0x75, 0x90, 0x83, 0x96, 0xc3, 0xa3, 0xda, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0x23, 0xac, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xf8, 0xa1, 0x66, 0x83, 0xf7, 0xed, 0x8c, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x78, 0xf9, 0x1b, 0xca, 0x1a, 0xde, 0xd6, 0x39, 0x78, 0x26, 0x46, 0x4b, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x17, 0x69, 0xb4, 0xac, 0xc1, 0x1a, 0xa9, 0xa6, 0x0d, 0x1a, 0x14, 0x0f, 0xdc, 0x70, 0x49, 0xad, 0xf1, 0xfc, 0xe0, 0x8d, 0x15, 0x2d, 0xb5, 0x41, 0xd1, 0x41, 0xbb, 0x41, 0x31, 0x9d, 0xb9, 0xc1, 0x13, 0x21, 0x53, 0xd6, 0xa0, 0xe8, 0xa0, 0x1d, 0xf0, 0xd8, 0xc2, 0xc4, 0x0d, 0x9e, 0x08, 0x99, 0xb2, 0xc1, 0xfb, 0xe7, 0x59, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0x49, 0x3c, 0x6a, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x5b, 0x98, 0x58, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x50, 0x4c, 0x62, 0xae, 0x41, 0xb0, 0x99, 0x6e, 0xf0, 0xc8, 0x44, 0x91, 0x0d, 0xde, 0xd1, 0x28, 0xd2, 0xc6, 0xa1, 0xc1, 0xe1, 0x83, 0x62, 0xd2, 0x73, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x37, 0x4f, 0xae, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0xf7, 0xb3, 0x83, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0x87, 0x9f, 0xb4, 0x74, 0xf0, 0x58, 0xce, 0x94, 0x0e, 0xa7, 0xd8, 0x1a, 0xbc, 0x45, 0x32, 0x65, 0xc3, 0x2f, 0x4a, 0x1b, 0xb4, 0x9b, 0x1d, 0xb5, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0x6f, 0xfa, 0x0d, 0xde, 0x26, 0x9a, 0x72, 0xf0, 0xa2, 0x3a, 0x96, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0a, 0x8a, 0xcc, 0x83, 0xe6, 0xc1, 0xa3, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x05, 0x45, 0xe6, 0xc1, 0x63, 0x39, 0x53, 0x36, 0x28, 0x3a, 0x68, 0x37, 0x58, 0xc9, 0x4b, 0xba, 0xc1, 0x13, 0x21, 0x53, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xcf, 0x77, 0x65, 0xd9, 0x20, 0x60, 0x59, 0x0f, 0x9a, 0x91, 0x10, 0xdc, 0xa0, 0xe8, 0xa0, 0xdd, 0xa0, 0x29, 0xa5, 0xad, 0x0d, 0x9e, 0x08, 0x99, 0xb2, 0xc1, 0x0b, 0x5d, 0x59, 0x36, 0x28, 0x3a, 0x68, 0x07, 0xbc, 0xb6, 0x37, 0x7b, 0x83, 0x27, 0x42, 0xa6, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x6b, 0xd9, 0x58, 0x3a, 0x58, 0xf6, 0x4e, 0xba, 0x41, 0xd1, 0x41, 0xbb, 0x41, 0xbb, 0x42, 0xc7, 0x1b, 0x3c, 0x11, 0x32, 0x65, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x5a, 0x12, 0x8f, 0x3a, 0x68, 0x62, 0x6c, 0xab, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x5e, 0xa9, 0x9c, 0x72, 0xd0, 0x00, 0xde, 0xf1, 0xc1, 0x63, 0x39, 0x53, 0x0e, 0xa7, 0x58, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x2d, 0xf0, 0x76, 0xe1, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x94, 0x5d, 0xb2, 0x03, 0x7c, 0x76, 0x61, 0x2d, 0x63, 0x74, 0xf8, 0x1a, 0x2e, 0xa9, 0x35, 0x1e, 0x1f, 0x3c, 0x65, 0x1e, 0xa5, 0xd9, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0xd6, 0xe0, 0xd9, 0x1c, 0x2c, 0x1b, 0x1e, 0x1f, 0xd9, 0xe0, 0xd9, 0x1c, 0x2c, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x7b, 0xab, 0x93, 0x0f, 0xda, 0xb6, 0x1e, 0x5f, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x5e, 0xdd, 0x7c, 0xd0, 0xec, 0x76, 0xd4, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xd8, 0xc2, 0xd8, 0x83, 0xf5, 0x5a, 0xcf, 0x1b, 0xac, 0x91, 0x4e, 0x5f, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0xc0, 0x3d, 0x3f, 0x38, 0xcf, 0x8e, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x9a, 0xdd, 0x8e, 0xda, 0xa0, 0x20, 0x8d, 0xdd, 0xd0, 0x07, 0x7f, 0x0d, 0xcf, 0xe2, 0x0d, 0x6e, 0x0f, 0x1e, 0x0e, 0xee, 0x0e, 0x5e, 0x0e, 0xaa, 0x07, 0x05, 0x83, 0x96, 0x65, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x65, 0xd8, 0x6f, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x63, 0x0b, 0x63, 0xab, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x57, 0xca, 0xb2, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xdb, 0xdf, 0x57, 0x36, 0x58, 0x04, 0x8b, 0xbc, 0xc1, 0x13, 0xfa, 0x50, 0x36, 0x58, 0x44, 0x9e, 0x7e, 0xb0, 0x08, 0xfc, 0x7c, 0x83, 0x17, 0xc7, 0xa4, 0xb4, 0x02, 0x78, 0xd9, 0x85, 0xb9, 0x95, 0xb5, 0xcc, 0x85, 0xb5, 0xc1, 0xb1, 0x95, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x6f, 0xf7, 0x6a, 0xd9, 0xf0, 0xb9, 0xd2, 0x06, 0x49, 0x3c, 0xa2, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x2b, 0x73, 0xcb, 0x0f, 0x9e, 0x7b, 0x0f, 0xb2, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb9, 0x37, 0xf3, 0xe0, 0x9d, 0x7a, 0x2a, 0x1d, 0x4e, 0xb1, 0x35, 0x78, 0xe5, 0x0a, 0xcb, 0x86, 0xc7, 0x47, 0x36, 0x78, 0xe5, 0x0a, 0xcb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xd8, 0xc2, 0xe6, 0x83, 0x66, 0xb7, 0xa3, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x6d, 0x97, 0x7d, 0x1e, 0x34, 0xbb, 0x1d, 0xd5, 0x86, 0xbf, 0x68, 0x36, 0x68, 0x76, 0x3b, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0x4a, 0xfd, 0xf7, 0xe0, 0x11, 0x59, 0x2b, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa6, 0xc8, 0x2c, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xef, 0xcf, 0x6a, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x5b, 0xd8, 0xdc, 0x1a, 0x14, 0x82, 0xa9, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0xb7, 0x7b, 0xb5, 0x54, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xf6, 0x4a, 0x0a, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x02, 0x7f, 0x8e, 0x2e, 0x2c, 0xaf, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0xbe, 0xc1, 0x42, 0xf2, 0xdf, 0x83, 0x47, 0x64, 0xad, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x22, 0xb3, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xbc, 0x3f, 0xab, 0x65, 0x83, 0x86, 0xd1, 0x4f, 0x0f, 0xde, 0x21, 0xd7, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0xaf, 0xa4, 0x60, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0x2e, 0xf0, 0xd9, 0xde, 0xc2, 0xc8, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x2d, 0x96, 0xc0, 0x0e, 0x5a, 0x62, 0xfe, 0x5b, 0x0d, 0x1e, 0x06, 0xbf, 0xb2, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0xf4, 0xc1, 0x3f, 0x38, 0xe9, 0x89, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0x2d, 0x3e, 0x0e, 0x9a, 0xdd, 0x8e, 0x3a, 0x78, 0x31, 0x54, 0xcb, 0x86, 0xbf, 0x68, 0x36, 0x68, 0x76, 0x3b, 0x6a, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0xe1, 0x17, 0x97, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x89, 0xbb, 0x0d, 0xcf, 0xe2, 0x2d, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x11, 0x2c, 0x72, 0x83, 0xea, 0x41, 0xc1, 0xb2, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x62, 0xc6, 0xe0, 0x35, 0x58, 0x68, 0xdc, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7e, 0xff, 0x83, 0x45, 0xe0, 0xe7, 0x55, 0x1b, 0x9c, 0x0b, 0x17, 0x06, 0x7c, 0xb1, 0xb7, 0x3a, 0x7a, 0x83, 0x13, 0xfb, 0xcd, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xe9, 0x18, 0xa9, 0x36, 0x38, 0x0f, 0x76, 0x6c, 0x78, 0xcb, 0x6e, 0x0d, 0x4f, 0xdc, 0x6d, 0x78, 0x16, 0x6f, 0x83, 0x57, 0x23, 0xb6, 0x0c, 0xaa, 0x07, 0x05, 0x83, 0x8b, 0x83, 0xd7, 0x83, 0xa7, 0x83, 0xb3, 0x83, 0x93, 0x83, 0x82, 0xc1, 0xcd, 0xc1, 0xc3, 0x83, 0x16, 0xf8, 0x90, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x53, 0x64, 0x96, 0x1b, 0x3e, 0x05, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0xc3, 0x88, 0x7c, 0xf0, 0x94, 0xae, 0x96, 0x0e, 0xa7, 0xd8, 0x1a, 0xbc, 0xc6, 0x62, 0x65, 0xc3, 0xe3, 0x23, 0x1b, 0xbc, 0xc6, 0x62, 0x65, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0xb3, 0x0b, 0x73, 0x0f, 0x9a, 0xdd, 0x8e, 0xda, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0xa5, 0x37, 0xfd, 0x06, 0xcd, 0x6e, 0x47, 0x1d, 0xbc, 0xa8, 0x8e, 0x65, 0x83, 0xd2, 0xde, 0x72, 0x83, 0x87, 0x33, 0xa6, 0x6c, 0x50, 0x74, 0xd0, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0x06, 0x0f, 0xca, 0xc1, 0x23, 0xb2, 0x56, 0x36, 0x78, 0x22, 0x64, 0xca, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xa7, 0x69, 0xb5, 0x1c, 0x3c, 0x81, 0x8f, 0x65, 0x83, 0x27, 0xf8, 0xa1, 0x1c, 0xbc, 0x43, 0xae, 0x65, 0x83, 0xa2, 0x83, 0x76, 0x83, 0xa7, 0xdb, 0xb5, 0x6c, 0xf0, 0x44, 0xc8, 0x94, 0x35, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xad, 0x94, 0x59, 0x1e, 0x3c, 0x81, 0x8f, 0x65, 0x83, 0x05, 0x9c, 0xf0, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xf6, 0x4a, 0x0a, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x16, 0xa4, 0x10, 0xd7, 0x06, 0x45, 0x07, 0xed, 0x1a, 0xbe, 0x6f, 0xdf, 0x20, 0x45, 0xd3, 0xf8, 0xe0, 0x11, 0x59, 0x2b, 0x1b, 0x3c, 0x11, 0x32, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0xf0, 0x4e, 0xd4, 0x96, 0x0d, 0xda, 0xfe, 0xfd, 0x3b, 0x68, 0x65, 0xcd, 0x72, 0xc3, 0x2f, 0x2e, 0x1b, 0x3c, 0xc1, 0x0f, 0x65, 0x0d, 0x0f, 0x4a, 0x6e, 0xb8, 0xa3, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xcd, 0x8f, 0x48, 0x1d, 0x3c, 0x81, 0x8f, 0x65, 0x83, 0x66, 0xdf, 0xc7, 0x36, 0x68, 0x65, 0x83, 0xb9, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0xa0, 0xec, 0x92, 0x1d, 0x78, 0xbb, 0x70, 0x83, 0x97, 0x1e, 0xb5, 0xcc, 0x06, 0x65, 0x19, 0xf6, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0x95, 0xd5, 0x28, 0x1b, 0xb4, 0x9b, 0x1d, 0x75, 0xf0, 0x6c, 0xc6, 0x94, 0x59, 0x66, 0x0d, 0x9e, 0xa9, 0x8d, 0xb2, 0xe1, 0xf1, 0x91, 0x0d, 0x9e, 0xa9, 0x8d, 0xb2, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x12, 0x8f, 0xe8, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xe4, 0xde, 0xd6, 0x83, 0x77, 0xea, 0xa9, 0xb4, 0x41, 0xd9, 0x25, 0x3b, 0x80, 0x07, 0x1c, 0xdb, 0xdb, 0x5d, 0xcb, 0xd8, 0x9b, 0x5c, 0xb9, 0xe1, 0x8e, 0x9a, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0x5a, 0x05, 0x72, 0xd9, 0xf0, 0xf8, 0xc8, 0x06, 0xad, 0x02, 0xb9, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x77, 0xea, 0xa9, 0x6c, 0xf8, 0x45, 0x69, 0x83, 0xa7, 0xf0, 0xa9, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0xd7, 0x02, 0xaa, 0x6c, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0x56, 0xa9, 0xff, 0x6e, 0x50, 0x42, 0xc7, 0x6e, 0xf0, 0x52, 0xb9, 0x96, 0x83, 0x30, 0x1d, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0xa4, 0xbb, 0x6e, 0xae, 0x41, 0x21, 0x98, 0x7a, 0xf0, 0xdc, 0x7b, 0x90, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xc9, 0xbd, 0xad, 0xb5, 0x41, 0xd1, 0x41, 0xbb, 0xc1, 0xe0, 0x41, 0xd9, 0xe0, 0x89, 0x90, 0x29, 0x6b, 0x70, 0x2e, 0x5c, 0x58, 0x43, 0x1e, 0x7b, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x01, 0xbc, 0xc1, 0x95, 0x95, 0xad, 0xe9, 0x80, 0x84, 0x8d, 0xd1, 0xa5, 0xd9, 0x85, 0xd1, 0xa5, 0xbd, 0xb9, 0x81, 0x98, 0x85, 0xa5, 0xb1, 0x95, 0x91, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xb9, 0xa3, 0x2d, 0x1b, 0x34, 0x24, 0x21, 0x78, 0xd0, 0x3c, 0xf1, 0xdf, 0x06, 0x45, 0x07, 0xed, 0x06, 0x0b, 0xc9, 0x7f, 0x37, 0x78, 0x22, 0x64, 0xca, 0x1a, 0x9c, 0x0b, 0x17, 0xd6, 0x90, 0xc7, 0xde, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0x00, 0x0f, 0x70, 0x65, 0x65, 0x6b, 0x3a, 0x20, 0x70, 0x75, 0x6c, 0x6c, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0xe4, 0xc1, 0x53, 0x50, 0x5b, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x86, 0xaf, 0x3d, 0x36, 0x28, 0xa1, 0x63, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0x0f, 0x5d, 0x16, 0xd9, 0xe0, 0x8c, 0x84, 0xba, 0xc1, 0x63, 0x79, 0x43, 0x36, 0x78, 0x4a, 0x70, 0x48, 0x07, 0x61, 0x3a, 0xb6, 0x86, 0x5f, 0x5c, 0x36, 0x78, 0x61, 0xa5, 0xca, 0x06, 0x8f, 0xb4, 0x54, 0xd9, 0x60, 0x59, 0x14, 0xdc, 0xc1, 0x93, 0x9a, 0x52, 0x36, 0x28, 0x3a, 0x68, 0x37, 0x48, 0xd1, 0x34, 0xde, 0xe0, 0x89, 0x90, 0x29, 0x6b, 0x70, 0x2e, 0x5c, 0x58, 0x43, 0x1e, 0x7b, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x01, 0x3c, 0xc0, 0x95, 0x95, 0xad, 0xe9, 0x80, 0x8c, 0x85, 0xb1, 0xb1, 0x81, 0x98, 0x85, 0xa5, 0xb1, 0x95, 0x91, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xb9, 0xa3, 0x2d, 0x1b, 0xb4, 0xfd, 0xfb, 0xb7, 0xc1, 0x82, 0x5e, 0xe4, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x7d, 0x7c, 0x6c, 0x83, 0x82, 0x22, 0x73, 0x83, 0x12, 0x1e, 0x73, 0x8d, 0xe7, 0x07, 0xad, 0x8f, 0x8f, 0x6d, 0x70, 0x96, 0x95, 0xda, 0xa0, 0xe8, 0xa0, 0xdd, 0xa0, 0xa8, 0x2d, 0xde, 0xe0, 0x89, 0x90, 0x29, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe7, 0xbb, 0xb2, 0x6c, 0x70, 0x5e, 0xa0, 0xd9, 0x20, 0xb1, 0xf0, 0xb8, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0x1c, 0xc3, 0x0d, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0x51, 0xfb, 0xc1, 0xfb, 0x36, 0x44, 0xd6, 0x70, 0x49, 0xad, 0x71, 0x68, 0xf0, 0xf8, 0xa0, 0xfc, 0x2f, 0xae, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x8f, 0xda, 0x0f, 0x8a, 0x54, 0xcc, 0x35, 0x5c, 0x52, 0x6b, 0x3c, 0x3f, 0x78, 0xce, 0x7d, 0x4b, 0x35, 0x6b, 0x50, 0xb0, 0xf1, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x0f, 0xad, 0xcc, 0x3d, 0x78, 0x7a, 0xba, 0xc7, 0x06, 0x6f, 0x17, 0x6b, 0xd9, 0xe0, 0xa5, 0xc6, 0x28, 0x6d, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0x87, 0x4e, 0xb2, 0xac, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0x91, 0xd5, 0x8d, 0x07, 0x4d, 0xe3, 0xaa, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0x0f, 0xad, 0xcc, 0xad, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0xd0, 0xb8, 0x0e, 0xe9, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x59, 0x1d, 0x79, 0xd0, 0x34, 0xae, 0xda, 0xc1, 0x3b, 0x02, 0x53, 0x36, 0x28, 0x48, 0x63, 0x37, 0x78, 0x35, 0x72, 0xcb, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0xdd, 0x75, 0x73, 0x83, 0x67, 0x00, 0xa6, 0x1c, 0x3c, 0xac, 0xb9, 0x65, 0x83, 0xa2, 0x83, 0x76, 0x83, 0xc1, 0x83, 0xb2, 0xc1, 0x13, 0x21, 0x53, 0xd6, 0xe0, 0x5c, 0xb8, 0xb0, 0x86, 0x3c, 0xf6, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x03, 0x78, 0x9b, 0x83, 0x4b, 0x73, 0xd3, 0x01, 0x09, 0x1b, 0xa3, 0x4b, 0xb3, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0x03, 0x31, 0x0b, 0x4b, 0x63, 0x2b, 0x23, 0x0f, 0x5e, 0x4c, 0xdd, 0xb2, 0x41, 0x29, 0x21, 0xbe, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x80, 0x3f, 0xc7, 0x96, 0x46, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xbc, 0x44, 0xc2, 0xa5, 0x01, 0x78, 0x1b, 0x7b, 0x73, 0x9b, 0x03, 0x09, 0x03, 0xb1, 0x0b, 0x9b, 0x2b, 0x03, 0x79, 0x73, 0xa3, 0x7b, 0x03, 0x09, 0x03, 0x69, 0x0b, 0xd3, 0x2b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x01, 0x8f, 0xc0, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x53, 0x4a, 0x5b, 0x07, 0xaf, 0x98, 0x1c, 0x69, 0xc3, 0x5f, 0x34, 0x1b, 0xbc, 0x62, 0x72, 0x64, 0x83, 0x20, 0x3d, 0x5d, 0xe3, 0xd0, 0x41, 0xeb, 0x63, 0x5b, 0x6b, 0x10, 0xb0, 0x41, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x15, 0x98, 0xec, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0x2f, 0x11, 0xd8, 0x06, 0x0b, 0xdf, 0x49, 0x0f, 0x1a, 0x8a, 0xf1, 0x6a, 0x0d, 0xc2, 0x08, 0x68, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x73, 0x92, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x22, 0x59, 0xb1, 0x41, 0xe3, 0x2e, 0x5e, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0xa0, 0x15, 0x19, 0xaf, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcd, 0xd7, 0x78, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x56, 0x64, 0xbc, 0xaa, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x58, 0x76, 0x1f, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0x1e, 0xef, 0x95, 0xb2, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0x6f, 0xfa, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0xb3, 0xdb, 0x51, 0x07, 0x8d, 0x25, 0x06, 0x1e, 0xbc, 0xa8, 0x8e, 0x65, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xf2, 0xd8, 0x1b, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0xf0, 0x1b, 0x0b, 0x63, 0x63, 0xd3, 0x01, 0x31, 0x0b, 0x4b, 0x63, 0x2b, 0x23, 0x37, 0x28, 0x3a, 0x68, 0x37, 0x58, 0x48, 0xfe, 0xbb, 0xc1, 0x13, 0x21, 0x53, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xef, 0x44, 0x6d, 0xd9, 0x60, 0x01, 0x27, 0xfc, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xbd, 0x92, 0x82, 0x0d, 0x1a, 0x5a, 0x6b, 0xad, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0xbe, 0xc1, 0x2a, 0xf5, 0xdf, 0x0d, 0x4a, 0xe8, 0xd8, 0x0d, 0x5e, 0x31, 0x39, 0x72, 0x10, 0xa6, 0x63, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x12, 0x09, 0x97, 0x36, 0x78, 0xcd, 0x24, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x21, 0x3a, 0x2e, 0x1b, 0xb4, 0xa0, 0x43, 0x7a, 0xf0, 0x4e, 0x16, 0x95, 0x36, 0x28, 0x3a, 0x68, 0x37, 0x48, 0xd1, 0x34, 0xde, 0xe0, 0x89, 0x90, 0x29, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x05, 0xfc, 0x39, 0xb6, 0x3a, 0xb9, 0x83, 0x27, 0xf0, 0xb1, 0x1c, 0xb4, 0xc4, 0xfc, 0xb7, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0xb6, 0x95, 0x3a, 0x78, 0xc4, 0x7c, 0xcb, 0xac, 0x41, 0x9b, 0x3b, 0x54, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x3c, 0x3b, 0x5b, 0x65, 0x0d, 0x7f, 0x2e, 0x0d, 0xf8, 0x66, 0x72, 0x6f, 0xed, 0xc1, 0x7a, 0xad, 0xe7, 0x83, 0x07, 0x4f, 0xb1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0xa7, 0xad, 0xb8, 0x6c, 0x70, 0x2e, 0x5c, 0x58, 0x43, 0x1e, 0x7b, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x01, 0x7e, 0x74, 0x61, 0x6b, 0x65, 0x3a, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0xe4, 0x06, 0x45, 0x07, 0xed, 0x06, 0x0b, 0xc9, 0x7f, 0x37, 0x78, 0x22, 0x64, 0xca, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x9d, 0xa8, 0x2d, 0x1b, 0x2c, 0xe0, 0x84, 0x5f, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x57, 0x52, 0xb0, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0xd0, 0xe6, 0x0e, 0x55, 0x6d, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0x5a, 0x1d, 0xfe, 0x3c, 0x78, 0x44, 0xd6, 0xca, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xa9, 0x79, 0xb1, 0xc1, 0xba, 0xec, 0xba, 0x35, 0x38, 0x86, 0x1b, 0x6c, 0x78, 0x5b, 0x67, 0x83, 0xd7, 0x19, 0xb9, 0xd4, 0x06, 0x6f, 0xb6, 0x72, 0x69, 0x83, 0x82, 0x34, 0x76, 0x83, 0xa7, 0xdc, 0xb8, 0xac, 0xc1, 0x4a, 0x17, 0xa7, 0x05, 0x3c, 0xba, 0xb2, 0xb0, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0xbb, 0x34, 0xf9, 0xa0, 0x69, 0x5c, 0xb5, 0x83, 0xf7, 0x9c, 0xa8, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x87, 0xe8, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0xa7, 0x68, 0xb9, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x1e, 0xa2, 0xe3, 0xb2, 0xc1, 0x6b, 0x26, 0x59, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0f, 0xd1, 0x71, 0xd9, 0xa0, 0x05, 0x1d, 0xd2, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x43, 0x74, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xad, 0x0e, 0x7f, 0x76, 0xf0, 0xfe, 0x35, 0x95, 0xea, 0xe0, 0xe9, 0x3d, 0x2e, 0xab, 0x41, 0x33, 0x28, 0x4c, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xa4, 0x68, 0x1a, 0x1f, 0x34, 0xbb, 0x1d, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x9e, 0xb6, 0xe2, 0xb2, 0x41, 0xd1, 0x41, 0xbb, 0x41, 0xbb, 0x42, 0xc7, 0x1b, 0x3c, 0x11, 0x32, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0xf0, 0x7c, 0x57, 0x96, 0x0d, 0x02, 0x96, 0xf5, 0xe0, 0x11, 0xf3, 0x2d, 0x1b, 0x14, 0x1d, 0xb4, 0x1b, 0xac, 0x0c, 0x5b, 0xdf, 0xe0, 0x89, 0x90, 0x29, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe7, 0xbb, 0xb2, 0x6c, 0x50, 0x54, 0x8a, 0x1f, 0x3c, 0x62, 0xbe, 0x65, 0x83, 0xa2, 0x4f, 0x77, 0x0d, 0xa9, 0x83, 0xc1, 0xe3, 0x83, 0xe5, 0x70, 0xeb, 0x1b, 0xbc, 0x44, 0xae, 0x65, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x46, 0x8e, 0x8e, 0x0f, 0xd6, 0xfa, 0xad, 0x1f, 0x3c, 0x96, 0x33, 0xe5, 0x70, 0x8a, 0x75, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x16, 0xf0, 0xcb, 0xc8, 0xca, 0xdc, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0x5e, 0x6c, 0xbd, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xf0, 0x62, 0xeb, 0x95, 0x06, 0xc0, 0x9b, 0x32, 0xbb, 0x32, 0x37, 0x3a, 0x10, 0x19, 0x1d, 0x10, 0xb1, 0xb7, 0x37, 0xba, 0x39, 0x3a, 0xb9, 0x30, 0x38, 0x90, 0x30, 0x90, 0xb5, 0x32, 0x39, 0xb7, 0x32, 0x36, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x90, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0x0d, 0x7f, 0xd1, 0x6c, 0x10, 0xa6, 0x63, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0x50, 0x08, 0xa6, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0x65, 0xfb, 0x82, 0x1b, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0xbe, 0x59, 0x18, 0x5d, 0x79, 0x10, 0xa6, 0x63, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x34, 0x33, 0xef, 0xc3, 0x0f, 0x35, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x87, 0x81, 0x60, 0x1c, 0x7e, 0xa8, 0x59, 0xc3, 0x9f, 0x4b, 0x03, 0x7e, 0x19, 0x5c, 0xda, 0x78, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x4c, 0xf4, 0x69, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0xe1, 0x17, 0x97, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x89, 0xbb, 0x0d, 0xcf, 0xe2, 0x0d, 0x1a, 0x07, 0x6d, 0x87, 0xcf, 0x83, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xc0, 0x73, 0xec, 0xad, 0x0d, 0x2e, 0x8d, 0xad, 0x4c, 0xae, 0xe5, 0x2c, 0x8c, 0xae, 0x5c, 0x83, 0x05, 0x21, 0x4b, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0xb6, 0xce, 0x06, 0x6f, 0x24, 0x74, 0x39, 0x58, 0x1f, 0x37, 0xb8, 0xc1, 0xb9, 0x70, 0x61, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0xc4, 0xdd, 0x86, 0x67, 0xf1, 0x06, 0x8d, 0x83, 0xb6, 0xc1, 0xc7, 0x41, 0xc1, 0xa0, 0x68, 0xf0, 0x71, 0xf0, 0x77, 0xf0, 0x76, 0x70, 0x78, 0xf0, 0x74, 0x70, 0x76, 0xf0, 0x74, 0x70, 0x77, 0xf0, 0x73, 0x50, 0x30, 0xf8, 0x38, 0xf8, 0x3b, 0x78, 0x3b, 0x38, 0x3c, 0x78, 0x3a, 0x38, 0x3b, 0x78, 0x39, 0xb8, 0x3c, 0x28, 0x1b, 0x14, 0x0c, 0x7e, 0x0f, 0x1e, 0x0e, 0x9e, 0x0e, 0x4e, 0x0f, 0x0a, 0x06, 0x0f, 0x07, 0x05, 0x83, 0x9b, 0x83, 0x97, 0x83, 0xdf, 0x83, 0x82, 0xc1, 0xdb, 0xc1, 0xd3, 0xc1, 0xdd, 0xc1, 0xeb, 0xc1, 0xe9, 0xc1, 0xcb, 0xc1, 0xe7, 0x83, 0xb6, 0x2f, 0x9f, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xc0, 0x73, 0xec, 0xad, 0x0d, 0x2e, 0x8d, 0xad, 0x4c, 0xae, 0x85, 0xee, 0xed, 0x8d, 0x5d, 0x83, 0x73, 0xe1, 0xc2, 0x06, 0x8f, 0x74, 0x6c, 0xd9, 0x60, 0x41, 0xc8, 0xd2, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x3c, 0xdb, 0xd1, 0xa5, 0x35, 0x58, 0x62, 0xbf, 0xbd, 0xe1, 0x6d, 0x9d, 0x0d, 0xd2, 0xcc, 0xbc, 0x0f, 0xd6, 0xc7, 0x0d, 0x76, 0xb0, 0x46, 0xfe, 0x77, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0xe1, 0x17, 0x97, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x89, 0xbb, 0x0d, 0xcf, 0xe2, 0x0d, 0x1a, 0x07, 0x6d, 0x07, 0x45, 0xbe, 0x6c, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0xbc, 0xc4, 0xd4, 0x65, 0x0d, 0xce, 0x85, 0x0b, 0x1b, 0x3c, 0xd2, 0xb1, 0x65, 0x83, 0x05, 0x21, 0x4b, 0x1b, 0x1e, 0xbc, 0xd9, 0x70, 0x49, 0xad, 0xf1, 0x7c, 0x83, 0xe7, 0x86, 0xba, 0xd4, 0x06, 0xe7, 0xc2, 0x85, 0x35, 0x68, 0x0b, 0x64, 0x65, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0x13, 0x77, 0x1b, 0x9e, 0xc5, 0x1b, 0x34, 0x0e, 0xda, 0x0e, 0x8a, 0x10, 0xe8, 0x36, 0x28, 0x48, 0x63, 0x07, 0xf0, 0x5a, 0x2b, 0x93, 0x73, 0x2b, 0x63, 0x6b, 0x99, 0x83, 0x0b, 0x73, 0xd7, 0xe0, 0x5c, 0xb8, 0xb0, 0xc1, 0x23, 0x1d, 0x5b, 0x36, 0x3c, 0x28, 0xb9, 0xe1, 0x99, 0xc9, 0x0d, 0x16, 0x84, 0x2c, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x9e, 0x5b, 0xea, 0xb2, 0x86, 0x4b, 0x6a, 0x8d, 0x43, 0x07, 0xcf, 0x87, 0x75, 0x69, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0xbd, 0xe2, 0x3b, 0x58, 0x23, 0xff, 0xbb, 0xc1, 0xb9, 0x70, 0x61, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0xc4, 0xdd, 0x86, 0x67, 0xf1, 0x06, 0x8d, 0x83, 0xb6, 0x83, 0x00, 0x0f, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x00, 0xaf, 0xb5, 0x32, 0x39, 0xb7, 0x32, 0xb6, 0x16, 0xba, 0xb7, 0x37, 0x76, 0x0d, 0xce, 0x85, 0x0b, 0x1b, 0x3c, 0xd2, 0xb1, 0x65, 0x83, 0x05, 0x21, 0x4b, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xe7, 0x96, 0xba, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x1e, 0x5f, 0xeb, 0xd2, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0x61, 0x20, 0x18, 0x07, 0xeb, 0xe3, 0x06, 0x3b, 0x58, 0x23, 0xff, 0xbb, 0xc1, 0xb9, 0x70, 0x61, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0xf0, 0x8b, 0xcb, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0xc4, 0xdd, 0x86, 0x67, 0xf1, 0x06, 0x8d, 0x83, 0xb6, 0x83, 0xa2, 0xa9, 0xb6, 0x0d, 0xce, 0x85, 0x0b, 0x1b, 0x3c, 0xd2, 0xb1, 0x65, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x20, 0x64, 0x69, 0x0d, 0x97, 0xd4, 0x1a, 0x92, 0x4b, 0x07, 0x2f, 0x31, 0x75, 0x69, 0xc3, 0x25, 0xb5, 0xc6, 0xf3, 0x0d, 0x1e, 0x24, 0xec, 0x52, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xb7, 0x23, 0xba, 0x1c, 0xac, 0x8f, 0x1b, 0x6c, 0x16, 0xf0, 0xc3, 0xca, 0xde, 0xdc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe7, 0x4f, 0xbb, 0x34, 0x00, 0x2f, 0x61, 0x72, 0x76, 0x6f, 0x20, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x20, 0x6c, 0x6f, 0x6f, 0xf0, 0x4a, 0x00, 0xfd, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x68, 0x69, 0x70, 0x27, 0x73, 0x20, 0x6c, 0x6f, 0x67, 0x6c, 0x09, 0xc0, 0xb7, 0xb1, 0xb7, 0x36, 0xb8, 0x3a, 0xba, 0x34, 0xb7, 0x33, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb3, 0x34, 0xb7, 0x30, 0x36, 0x90, 0x39, 0xba, 0x30, 0xba, 0x32, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb9, 0xb2, 0x39, 0x3a, 0x90, 0x37, 0x33, 0x10, 0xb6, 0xb7, 0x73, 0x09, 0xc0, 0xdf, 0x3b, 0xb4, 0x32, 0x37, 0x90, 0x34, 0x37, 0xbb, 0xb7, 0xb5, 0x32, 0x32, 0x10, 0xbb, 0xb4, 0x30, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb6, 0x34, 0xb3, 0xb2, 0xb1, 0xbc, 0x31, 0xb6, 0x32, 0x10, 0xb3, 0x37, 0xb9, 0xb6, 0x3a, 0xb6, 0x30, 0x1d, 0x90, 0xad, 0x12, 0x19, 0x90, 0xad, 0x12, 0x18, 0x90, 0x99, 0x2e, 0x90, 0x12, 0x18, 0x10, 0x99, 0xae, 0x95, 0x00, 0xb4, 0xa5, 0x43, 0x2b, 0x03, 0x31, 0x7b, 0x93, 0x6b, 0x0b, 0x63, 0x03, 0xa9, 0x93, 0x13, 0x4b, 0xa3, 0x03, 0x99, 0xa3, 0x0b, 0xa3, 0x2b, 0x03, 0x49, 0x9b, 0x03, 0x09, 0x63, 0xbb, 0x0b, 0xcb, 0x9b, 0x03, 0x51, 0xab, 0x9b, 0xa3, 0x03, 0x09, 0x03, 0x39, 0x0b, 0xa3, 0x2b, 0x03, 0x41, 0x31, 0xab, 0x73, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0x4b, 0x4b, 0x00, 0xba, 0xde, 0xa1, 0xa5, 0x8d, 0xa1, 0xb1, 0x80, 0xc0, 0x85, 0xcd, 0xcd, 0x95, 0x91, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0xb8, 0x95, 0xe1, 0xd1, 0x81, 0x94, 0xd9, 0x95, 0xb9, 0xd1, 0xb1, 0x80, 0xc0, 0xc9, 0xbd, 0x91, 0xd5, 0x8d, 0x95, 0xcd, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0xb8, 0x95, 0xe1, 0xd1, 0x81, 0xcc, 0xd1, 0x85, 0xd1, 0x95, 0xb9, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x61, 0x3a, 0xb6, 0x41, 0x29, 0x21, 0xbe, 0x06, 0x85, 0x60, 0xea, 0x86, 0x3f, 0x97, 0x36, 0x58, 0xb6, 0x2f, 0xb8, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x8b, 0xad, 0x57, 0x0e, 0xc2, 0x74, 0x6c, 0x0d, 0x7f, 0x2e, 0x0d, 0xf8, 0x74, 0x61, 0x6c, 0xe5, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0x32, 0xd1, 0xa7, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x35, 0x4c, 0xdc, 0x06, 0x0f, 0x03, 0xc1, 0x38, 0x78, 0x3b, 0xa2, 0xcb, 0x06, 0x0b, 0x42, 0x96, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xaf, 0xf6, 0x77, 0x39, 0x58, 0x1f, 0x37, 0xb8, 0xe1, 0x6d, 0x9d, 0x0d, 0x5e, 0x6c, 0xbd, 0x72, 0xb0, 0x3e, 0x6e, 0x70, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0x4c, 0xc7, 0x36, 0x28, 0x08, 0x66, 0xd7, 0xe0, 0xed, 0x88, 0x2e, 0x6d, 0xf0, 0x58, 0x68, 0x95, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x1e, 0x85, 0xf0, 0xb2, 0xe1, 0x92, 0x5a, 0xe3, 0xf9, 0xc1, 0xa3, 0x10, 0x5e, 0x5a, 0x83, 0x47, 0x8a, 0x93, 0x6c, 0xb0, 0x20, 0x64, 0x69, 0x0d, 0xbf, 0xb8, 0x6c, 0xf0, 0x58, 0x68, 0x95, 0x35, 0x5c, 0x52, 0x6b, 0x1c, 0x3a, 0x78, 0x14, 0xc2, 0x4b, 0x1d, 0xac, 0x91, 0xff, 0xed, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0x5b, 0x01, 0xdf, 0x2e, 0xed, 0x8d, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x78, 0x62, 0xc4, 0x4b, 0x03, 0xf8, 0xd8, 0x85, 0xb9, 0x95, 0x81, 0xd0, 0xbd, 0xbd, 0xb1, 0xcd, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x40, 0xc4, 0xf4, 0x60, 0xd9, 0x8c, 0xf3, 0x86, 0xbf, 0x68, 0x36, 0x78, 0xa4, 0x35, 0xca, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x4b, 0x32, 0x68, 0x37, 0xfc, 0xa2, 0xb4, 0xc1, 0x22, 0xed, 0xb8, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0x6c, 0xc6, 0x79, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0xc6, 0x7d, 0xd4, 0x06, 0x8d, 0xa3, 0x47, 0x1d, 0xac, 0x00, 0x31, 0x5d, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x76, 0x70, 0x90, 0x3b, 0x3c, 0xf4, 0xd3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x8d, 0xcf, 0x47, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xc6, 0x0b, 0x2e, 0xd7, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0xc0, 0x47, 0xa2, 0x43, 0x97, 0x07, 0x57, 0xb6, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb2, 0xba, 0x71, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x5e, 0x70, 0xb9, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x03, 0x3e, 0x12, 0x1d, 0xb2, 0xba, 0x31, 0xba, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xdd, 0xa5, 0xc9, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xf1, 0x82, 0xcb, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xf0, 0x91, 0xe8, 0xdc, 0xa5, 0xc9, 0x95, 0xad, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x17, 0x16, 0x16, 0x48, 0x5b, 0xda, 0x1c, 0x5c, 0x98, 0xdc, 0x5c, 0xd9, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb2, 0x3a, 0x72, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x5e, 0x70, 0xb9, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x03, 0x68, 0xe8, 0xe1, 0x41, 0x21, 0x01, 0x41, 0xa9, 0x73, 0x4b, 0xa3, 0x03, 0x39, 0x7b, 0x7b, 0x33, 0x4b, 0x49, 0xb5, 0x02, 0x7f, 0x17, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0x7f, 0x17, 0x36, 0x80, 0xef, 0x58, 0xd8, 0x18, 0x5a, 0x19, 0x19, 0xc8, 0xd8, 0x5b, 0x1b, 0x5c, 0x1a, 0x5b, 0xd9, 0x06, 0x65, 0x19, 0xf6, 0x06, 0xcf, 0x4e, 0x06, 0x99, 0x65, 0xd6, 0xa0, 0x89, 0xe7, 0xa8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xa0, 0x09, 0xe9, 0xa8, 0x01, 0xbc, 0xe7, 0xe0, 0xca, 0xc6, 0xd2, 0xc2, 0xd8, 0xd2, 0xf4, 0xca, 0x40, 0xec, 0xc2, 0xe6, 0xca, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xbb, 0xd9, 0x51, 0x1b, 0xfe, 0xa2, 0x59, 0xc3, 0xe7, 0x4a, 0x07, 0xef, 0xf3, 0x6c, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xa0, 0x79, 0x0a, 0xa9, 0x0d, 0x7f, 0xd1, 0x6c, 0xb0, 0xc0, 0xc2, 0x79, 0x83, 0x82, 0x60, 0x76, 0x83, 0x96, 0xc3, 0xa3, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xad, 0x2f, 0x3d, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x16, 0x50, 0x79, 0xaf, 0xe1, 0x17, 0x97, 0x83, 0xd6, 0x35, 0x9d, 0x5b, 0x83, 0xa3, 0xeb, 0xe0, 0x06, 0xad, 0x27, 0x81, 0xd5, 0x06, 0x05, 0xc1, 0xec, 0x06, 0x4d, 0xc5, 0x47, 0x6d, 0xd0, 0xd8, 0x7e, 0xd4, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x7d, 0xe9, 0x61, 0x83, 0x76, 0xc7, 0x34, 0x0f, 0x1e, 0x63, 0xf4, 0xb2, 0x41, 0xd1, 0x41, 0xbb, 0x41, 0xe3, 0xf3, 0x51, 0x6b, 0xd8, 0x2b, 0x3c, 0x9c, 0x62, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf6, 0x73, 0xa5, 0x36, 0x68, 0x55, 0x3d, 0x6a, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0xfe, 0xac, 0xc3, 0x06, 0x6d, 0x9d, 0x48, 0x1d, 0x34, 0x65, 0x20, 0xd5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x2d, 0x32, 0x67, 0x1d, 0xb4, 0x5e, 0x0a, 0xb8, 0x86, 0x4b, 0x6a, 0x83, 0xb7, 0x30, 0xbd, 0xd4, 0x6a, 0xd0, 0xf2, 0x83, 0xd4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xcb, 0x0f, 0x52, 0x0d, 0xe0, 0xbf, 0x32, 0xc7, 0x16, 0x06, 0xa7, 0x53, 0x47, 0xc7, 0x02, 0x32, 0x16, 0x36, 0x86, 0x56, 0x46, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0x1a, 0x90, 0x90, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xcf, 0xf5, 0x79, 0xd9, 0xa0, 0xe8, 0xa0, 0xdd, 0xa0, 0x75, 0x10, 0xa9, 0x0d, 0x0e, 0x54, 0x68, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x54, 0xa5, 0x36, 0x68, 0x55, 0x3d, 0xea, 0xa0, 0xa5, 0x13, 0xa9, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x5c, 0x8a, 0xd4, 0xc1, 0x2b, 0xa5, 0x5e, 0x56, 0xc0, 0x77, 0x2b, 0xa3, 0x9b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1e, 0xfc, 0xf5, 0xd2, 0x00, 0x9e, 0x74, 0x79, 0x70, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x6e, 0x65, 0x73, 0x74, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x26, 0xd4, 0xa5, 0x0e, 0xc2, 0x74, 0x6c, 0x83, 0x65, 0xf5, 0xc7, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0x9f, 0x2b, 0x6d, 0xf8, 0x60, 0xf5, 0xe0, 0x45, 0x75, 0x2c, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x70, 0xb4, 0xd6, 0xd8, 0xa0, 0x6c, 0x7a, 0x5f, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0x5b, 0xd9, 0x5c, 0x07, 0xad, 0xbf, 0x5f, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x8a, 0x9c, 0xd6, 0x83, 0x33, 0x9c, 0xda, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x0b, 0xc9, 0x7f, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0x43, 0xc1, 0x80, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x51, 0x63, 0xc0, 0x0d, 0x0a, 0xd8, 0xfc, 0xc3, 0x5b, 0x68, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x07, 0xab, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf6, 0xb6, 0x02, 0x37, 0x68, 0xfb, 0xf7, 0xef, 0xa0, 0xf5, 0xf7, 0xab, 0xd6, 0x60, 0xdd, 0x2a, 0xd3, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x05, 0x78, 0xb9, 0x95, 0xd1, 0xcd, 0xb5, 0x98, 0x85, 0xa5, 0xb1, 0x95, 0x91, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0xac, 0x1a, 0x08, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0x61, 0x3a, 0xb6, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0x82, 0xb0, 0x6c, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x33, 0x7b, 0x7b, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0xc2, 0xe4, 0xe0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x7b, 0x5b, 0x81, 0x1b, 0x2c, 0x2e, 0x09, 0x3e, 0x68, 0x6e, 0x82, 0xaa, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0xd6, 0xd8, 0xcd, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x85, 0xc9, 0xc1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf6, 0xb6, 0x02, 0x37, 0x58, 0x5c, 0x12, 0x7c, 0xd0, 0xac, 0x06, 0x55, 0x1b, 0xac, 0x5b, 0x65, 0x9a, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x00, 0x0f, 0xb7, 0x32, 0xba, 0xb9, 0x16, 0xb7, 0xb2, 0x32, 0x72, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0xe1, 0x17, 0x97, 0x0d, 0x0f, 0xde, 0x1c, 0xb4, 0x1f, 0x92, 0xb9, 0xc1, 0xba, 0x55, 0xa6, 0x59, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x0b, 0xf0, 0x70, 0x2b, 0xa3, 0x9b, 0x6b, 0x41, 0x0b, 0xb3, 0x2b, 0x37, 0x38, 0x17, 0x2e, 0xac, 0x41, 0x5b, 0x20, 0x2b, 0x1b, 0x7e, 0x71, 0xd9, 0xf0, 0xe0, 0xcd, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xcc, 0xde, 0xde, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0x05, 0x6c, 0xfe, 0xc1, 0x2b, 0xa5, 0x5e, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x91, 0xd3, 0xba, 0x86, 0x4b, 0x6a, 0x83, 0xb7, 0x30, 0xbd, 0xac, 0xc1, 0xcb, 0xd7, 0x5e, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x65, 0x0b, 0xea, 0xc1, 0xe3, 0xd5, 0x5e, 0x0e, 0x5a, 0x7f, 0xbf, 0xaa, 0x59, 0x83, 0x25, 0xc1, 0xd9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0x0b, 0xe2, 0xc8, 0x03, 0x78, 0x86, 0xcd, 0xcd, 0x95, 0xb5, 0x89, 0xb1, 0x95, 0x81, 0x90, 0xbd, 0xbd, 0xc9, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xd0, 0x6e, 0x76, 0xd4, 0x06, 0xad, 0x11, 0x65, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0xee, 0xad, 0xdd, 0x20, 0xf4, 0x4b, 0x36, 0x58, 0x05, 0x99, 0xbc, 0x41, 0xb3, 0xdb, 0x51, 0x07, 0xc7, 0x73, 0x8c, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x73, 0x7d, 0x5e, 0x36, 0x58, 0xe9, 0xe2, 0xb4, 0xc1, 0x71, 0xe0, 0x63, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x6c, 0x0e, 0xc2, 0x06, 0xad, 0x3d, 0x2e, 0xaf, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0xe2, 0x72, 0xd0, 0x72, 0x64, 0xf3, 0x41, 0x33, 0xf3, 0x69, 0x07, 0x65, 0x9d, 0xe7, 0x06, 0x45, 0x07, 0xed, 0x06, 0x63, 0xa1, 0x6c, 0x83, 0xb7, 0x30, 0xbd, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x22, 0xb3, 0xdc, 0xa0, 0x21, 0x09, 0xc1, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x7b, 0x25, 0x05, 0x07, 0xed, 0x9c, 0x65, 0xb5, 0x41, 0xd1, 0x41, 0xbb, 0xc1, 0x5a, 0x7a, 0xd0, 0x0d, 0xde, 0xc2, 0xf4, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x3e, 0xe3, 0x72, 0x83, 0xe3, 0xf2, 0xcc, 0x06, 0x45, 0xf5, 0x7f, 0x1b, 0x14, 0x1d, 0xb4, 0x03, 0x1e, 0x5a, 0x1a, 0xbc, 0xc1, 0x5b, 0x98, 0x5e, 0xd6, 0x20, 0x48, 0x4f, 0xd7, 0x38, 0x34, 0xe0, 0xcd, 0xbd, 0xb5, 0xad, 0x41, 0xc0, 0x06, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x16, 0x67, 0xa5, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xc1, 0x4a, 0x7a, 0xd0, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x3c, 0x38, 0x7c, 0xf0, 0xba, 0xd8, 0x97, 0xd6, 0x20, 0x8c, 0x80, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x78, 0xf0, 0xd7, 0x4b, 0x1b, 0x3c, 0x72, 0xf6, 0x65, 0x0d, 0x97, 0xd4, 0x1a, 0x87, 0x0e, 0x5e, 0x57, 0xfb, 0x52, 0x6d, 0x50, 0xf0, 0x61, 0x6e, 0xf0, 0x44, 0x3f, 0x96, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0x50, 0x8a, 0xff, 0xaf, 0xe1, 0x92, 0x5a, 0xf0, 0xf8, 0xa0, 0x14, 0xff, 0x5f, 0x83, 0x63, 0xcc, 0xd9, 0x86, 0x4b, 0x6a, 0x0d, 0xc9, 0xa5, 0x83, 0xd7, 0xc5, 0xbe, 0x54, 0x07, 0xaf, 0x94, 0x7a, 0x39, 0x9c, 0x62, 0x6b, 0xb0, 0xec, 0x3e, 0x6a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x78, 0x17, 0x56, 0xca, 0x00, 0x1e, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x67, 0x61, 0x74, 0x65, 0x1b, 0x7e, 0x51, 0xda, 0xe0, 0xe1, 0x9b, 0x2f, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xb9, 0x3e, 0x2f, 0x1b, 0x14, 0x1d, 0xb4, 0x03, 0x1e, 0x59, 0x9d, 0xb9, 0xc1, 0x5b, 0x98, 0x5e, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x6d, 0xce, 0x22, 0x6f, 0xd0, 0x90, 0x84, 0xe0, 0x06, 0x2d, 0x9d, 0x65, 0xad, 0xe1, 0x6d, 0x9d, 0x83, 0xd7, 0xc5, 0xbe, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x22, 0xb3, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x59, 0x9d, 0xd9, 0x41, 0x2b, 0x6b, 0x96, 0x87, 0x53, 0x6c, 0x0d, 0x1e, 0xbc, 0xcb, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xf0, 0xe0, 0x5d, 0x96, 0x06, 0xf0, 0xa6, 0xcb, 0x83, 0x2b, 0x03, 0x19, 0x7b, 0x6b, 0x83, 0x63, 0x4b, 0x0b, 0x73, 0x1b, 0x2b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x25, 0x79, 0xb0, 0x83, 0xb7, 0x75, 0xbe, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x67, 0x27, 0x83, 0x6c, 0x50, 0x74, 0xd0, 0x0e, 0x78, 0x68, 0x69, 0xf0, 0x06, 0x6f, 0x61, 0x7a, 0x59, 0x83, 0x20, 0x3d, 0xdd, 0xe0, 0x31, 0xb1, 0x2f, 0x6b, 0x10, 0xb0, 0x41, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc5, 0x59, 0xa9, 0x0d, 0x5a, 0x64, 0xce, 0x3a, 0x78, 0x30, 0xed, 0xcb, 0x1a, 0x84, 0x11, 0xd0, 0x86, 0x77, 0x7b, 0x36, 0x78, 0xcf, 0xed, 0xcb, 0x06, 0x2d, 0x32, 0x67, 0x1d, 0x3c, 0x1b, 0xf7, 0xa5, 0x0d, 0x0a, 0x3e, 0xcc, 0x0d, 0x9e, 0xe8, 0xc7, 0x72, 0xf0, 0x4e, 0xa9, 0x97, 0xd5, 0xa0, 0x81, 0xcb, 0xa6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x06, 0x2e, 0x9b, 0x1a, 0xc0, 0x77, 0x0e, 0xae, 0x8c, 0x0c, 0x84, 0x0e, 0xad, 0xcc, 0x0d, 0x64, 0x8e, 0xed, 0x8d, 0x6e, 0xc3, 0x2f, 0x4a, 0x1b, 0xb4, 0x75, 0x17, 0xb8, 0xe1, 0x2f, 0x9a, 0x0d, 0x9e, 0xeb, 0xf3, 0xb2, 0x41, 0xd1, 0x41, 0x3b, 0xe0, 0xe1, 0x85, 0xd9, 0x1b, 0x1c, 0xa8, 0xd0, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x89, 0xe7, 0xa8, 0x0e, 0x9a, 0x91, 0x10, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0xcd, 0x67, 0x5c, 0x6e, 0xd0, 0x4e, 0xd9, 0xd6, 0xc1, 0x63, 0xf2, 0x59, 0x56, 0x83, 0x06, 0x0b, 0x05, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1a, 0x2c, 0x14, 0x68, 0x00, 0x6f, 0xb7, 0xb2, 0x39, 0x3a, 0x9d, 0x3a, 0x3a, 0x16, 0x90, 0xb1, 0xb0, 0x31, 0xb4, 0x32, 0xb2, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x5a, 0x73, 0x14, 0x3c, 0x68, 0xa2, 0x84, 0x6a, 0xc3, 0x5f, 0x34, 0x1b, 0x3c, 0xf4, 0xec, 0x65, 0xc3, 0x07, 0x39, 0x1b, 0x3c, 0x2f, 0xed, 0x65, 0x83, 0x57, 0xb4, 0xbd, 0x6c, 0x50, 0xec, 0x68, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x68, 0x8c, 0x56, 0xea, 0xa0, 0xe1, 0x8a, 0xc2, 0x83, 0xe6, 0x24, 0xa8, 0xd6, 0x60, 0xdd, 0x2a, 0xd3, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x05, 0x78, 0xb9, 0x95, 0xcd, 0xd1, 0xb5, 0x98, 0x85, 0xa5, 0xb1, 0x95, 0x91, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x9e, 0xd9, 0xdb, 0xbb, 0xe1, 0xdd, 0x9e, 0x0d, 0x5e, 0xbb, 0xf7, 0x72, 0xd0, 0xdc, 0x04, 0xd5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x6b, 0xec, 0x66, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x6b, 0xf7, 0x5e, 0x0e, 0x9a, 0xd5, 0xa0, 0xda, 0x60, 0xdd, 0x2a, 0xd3, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x05, 0x78, 0xb8, 0x95, 0xcd, 0xd1, 0xb5, 0xb8, 0x95, 0x95, 0x91, 0x1b, 0x9c, 0x0b, 0x17, 0x36, 0x78, 0x49, 0xe2, 0xcb, 0x06, 0xeb, 0x56, 0x99, 0x66, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0x2e, 0xc0, 0xc3, 0xad, 0x6c, 0x8e, 0xae, 0x05, 0x2d, 0xcc, 0xae, 0x3c, 0x78, 0x7a, 0xe3, 0xcb, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x72, 0x5a, 0xd7, 0x70, 0x49, 0x6d, 0x70, 0xa0, 0x42, 0x3b, 0x78, 0x13, 0xe5, 0x4b, 0xab, 0x41, 0x22, 0x3e, 0xf0, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x22, 0x3e, 0x70, 0x03, 0xf8, 0xce, 0xb1, 0xbd, 0xd1, 0x81, 0xd0, 0xa1, 0x95, 0xb9, 0x81, 0xcc, 0xc1, 0x95, 0x91, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xb6, 0xee, 0x02, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x73, 0x7d, 0x5e, 0x36, 0x28, 0x3a, 0x68, 0x07, 0x3c, 0xbc, 0x30, 0x7b, 0x83, 0x03, 0x15, 0xda, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xf9, 0x8c, 0xcb, 0x0d, 0xda, 0x29, 0xdb, 0x3a, 0x68, 0x46, 0x42, 0x70, 0xc3, 0xbb, 0x3d, 0x1b, 0xbc, 0x08, 0xfd, 0xe5, 0xe0, 0x31, 0xf9, 0x2c, 0xab, 0x41, 0x5b, 0x2c, 0x81, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0x5b, 0x2f, 0x81, 0x03, 0xf8, 0xaf, 0xcc, 0xb1, 0x85, 0xb5, 0xe9, 0xd4, 0xd1, 0xb1, 0x80, 0x8c, 0x85, 0x8d, 0xa1, 0x95, 0x91, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x86, 0x6b, 0x02, 0x37, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x06, 0x4d, 0xa8, 0x4b, 0x6d, 0x50, 0x42, 0xc7, 0x6e, 0xb0, 0x6c, 0xc6, 0xf9, 0x20, 0x4c, 0xc7, 0x36, 0x68, 0x94, 0x28, 0x70, 0x83, 0x82, 0x34, 0x76, 0x83, 0x56, 0xaa, 0xb2, 0x36, 0x68, 0xd3, 0xf9, 0x6f, 0x83, 0xa2, 0x83, 0x76, 0x0d, 0xdf, 0xb7, 0x6f, 0x90, 0x50, 0x21, 0x77, 0xf0, 0xc6, 0x0e, 0x98, 0x0d, 0xde, 0xc2, 0xf4, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x3f, 0x57, 0x6a, 0x83, 0x06, 0xce, 0xa6, 0x0e, 0x5a, 0x3a, 0x91, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0x2d, 0x42, 0xee, 0xa0, 0x41, 0xad, 0xc0, 0x83, 0x57, 0x4a, 0xbd, 0x1c, 0x4e, 0xb1, 0x5a, 0x83, 0x47, 0x02, 0xb9, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x3c, 0x12, 0xc8, 0xa5, 0x01, 0x78, 0x9b, 0x63, 0x0b, 0x6b, 0x03, 0x09, 0x03, 0xb1, 0x0b, 0x9b, 0x2b, 0x03, 0xb9, 0x4b, 0xa3, 0x43, 0x03, 0x09, 0x03, 0x69, 0x0b, 0xd3, 0x2b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x55, 0x9b, 0xc0, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x2a, 0xf5, 0xdf, 0x83, 0x57, 0x4c, 0x8e, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0x9e, 0xeb, 0xf3, 0xb2, 0x41, 0xd1, 0x41, 0xbb, 0xc1, 0x22, 0xfa, 0xba, 0x0d, 0xde, 0xc2, 0xf4, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x3e, 0xe3, 0x72, 0x83, 0xe3, 0xf2, 0xcc, 0x41, 0xcb, 0xbf, 0x7f, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0xbc, 0x85, 0xe9, 0x65, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0xe7, 0xee, 0xb2, 0x6c, 0xd0, 0x7a, 0x4b, 0xe9, 0x41, 0xf3, 0xc4, 0x7f, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xfd, 0x59, 0x2d, 0x1b, 0xb4, 0xfd, 0xfb, 0xb7, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x9a, 0x4f, 0x0a, 0x6c, 0xd6, 0xe0, 0x59, 0x7b, 0x2c, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xb9, 0x95, 0xcd, 0xd1, 0x81, 0xa4, 0xb9, 0x81, 0x8c, 0x95, 0xb1, 0xb1, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x36, 0x19, 0xa8, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x8b, 0xb3, 0x52, 0x1b, 0x34, 0xb5, 0x20, 0x75, 0xd0, 0xdc, 0x04, 0xd5, 0x6a, 0xd0, 0xc2, 0xa2, 0xca, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x0b, 0x8b, 0x2a, 0x0d, 0xe0, 0xbf, 0x02, 0xc7, 0x16, 0x96, 0xa7, 0x53, 0x47, 0xc7, 0x02, 0x32, 0x16, 0x36, 0x86, 0x56, 0x46, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x6b, 0x8e, 0x82, 0x07, 0xed, 0x4f, 0x48, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x6c, 0xc6, 0xf9, 0xe0, 0x45, 0x75, 0x2c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x24, 0x23, 0xc5, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x0a, 0x37, 0xd1, 0x0d, 0xca, 0xa6, 0xfa, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xc1, 0x85, 0xe5, 0xb5, 0x86, 0x5f, 0x5c, 0x0e, 0x9e, 0x4d, 0x02, 0xd3, 0x06, 0xc5, 0x80, 0xec, 0x06, 0x89, 0x48, 0x71, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1f, 0x24, 0x22, 0xc5, 0x1d, 0xbc, 0x52, 0xea, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x84, 0x0a, 0xb9, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x1b, 0xf7, 0x51, 0x07, 0x0d, 0x57, 0x14, 0x1e, 0xb4, 0x74, 0x22, 0xb5, 0xe1, 0x17, 0x97, 0x0d, 0xd2, 0x22, 0xe4, 0xd6, 0x70, 0x49, 0x6d, 0xf0, 0x16, 0xa6, 0x97, 0x35, 0x78, 0xed, 0x13, 0xcc, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x6c, 0x41, 0x3d, 0x78, 0xb0, 0x13, 0xcc, 0x06, 0xef, 0x82, 0x82, 0x39, 0x78, 0xd3, 0x20, 0x4a, 0x1d, 0x4e, 0xb1, 0xd6, 0xa0, 0x5d, 0x29, 0xcb, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xa0, 0xdd, 0x2a, 0xcb, 0x01, 0xfc, 0x57, 0xe6, 0xd8, 0xf2, 0xda, 0x74, 0xea, 0xe8, 0x58, 0x40, 0xc6, 0xc2, 0xc6, 0xd0, 0xca, 0xc8, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x73, 0x5e, 0x96, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xb9, 0x3e, 0x2f, 0x07, 0xad, 0x8d, 0x59, 0xae, 0x06, 0xcd, 0xf4, 0x58, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0xcd, 0x00, 0x59, 0x0e, 0xe0, 0xbf, 0x32, 0xc7, 0xf6, 0x46, 0xa7, 0x53, 0x47, 0xc7, 0x02, 0x32, 0x16, 0x36, 0x86, 0x56, 0x46, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0xda, 0xba, 0x0b, 0xdc, 0xf0, 0x17, 0xcd, 0x06, 0xcf, 0xf5, 0x79, 0xd9, 0xa0, 0xe8, 0xa0, 0xdd, 0xa0, 0x75, 0x10, 0xa9, 0x0d, 0x0e, 0x54, 0x68, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x06, 0x54, 0xa5, 0x36, 0x68, 0x55, 0x3d, 0xea, 0xa0, 0xd5, 0xbb, 0xea, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x52, 0x91, 0x3a, 0x68, 0x9b, 0xc9, 0xf2, 0xe0, 0x95, 0x52, 0x2f, 0xb3, 0x06, 0xad, 0xd4, 0xc4, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xb4, 0x52, 0x13, 0xd3, 0x00, 0xfc, 0xad, 0xb4, 0xa5, 0xb9, 0xd1, 0xe9, 0xd4, 0xd1, 0x81, 0xd0, 0xbd, 0x81, 0xb8, 0xbd, 0xd5, 0xb9, 0xb1, 0x80, 0x8c, 0x85, 0x8d, 0xa1, 0x95, 0x91, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xa7, 0x21, 0xc1, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0x9f, 0x2b, 0x6d, 0xb0, 0x18, 0xbe, 0xfc, 0xe0, 0x45, 0x75, 0x2c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x24, 0x23, 0xc5, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x0a, 0x37, 0xd1, 0x0d, 0xca, 0xa6, 0xfa, 0x0d, 0x52, 0x3d, 0x3a, 0x3b, 0x78, 0x15, 0x14, 0xcc, 0x06, 0xc5, 0x80, 0xec, 0x06, 0x89, 0x48, 0x71, 0x1b, 0xbc, 0x4d, 0x0a, 0x66, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x84, 0x0a, 0xb9, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xf3, 0x23, 0x52, 0x07, 0x0d, 0x57, 0x14, 0x1e, 0x34, 0x63, 0x22, 0xb5, 0xe1, 0x17, 0x97, 0x0d, 0xd2, 0x22, 0xe4, 0xd6, 0x70, 0x49, 0x6d, 0xf0, 0x16, 0xa6, 0x97, 0x35, 0x48, 0x10, 0xe9, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x2d, 0xa8, 0x07, 0x0f, 0xed, 0x83, 0x39, 0x78, 0x47, 0x17, 0x4c, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0x0a, 0xf0, 0x92, 0x95, 0xb5, 0x88, 0x95, 0x85, 0xb5, 0x1b, 0x1e, 0x1f, 0xd9, 0xe0, 0xb5, 0x8a, 0x30, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x55, 0x24, 0x78, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x4d, 0x98, 0x07, 0x4f, 0x08, 0x6f, 0xd9, 0xa0, 0xd8, 0xd1, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x0d, 0x9f, 0x2b, 0x6d, 0xf8, 0xa1, 0x66, 0xc3, 0x0f, 0x35, 0x07, 0xa7, 0xae, 0x95, 0x83, 0x83, 0x47, 0xc6, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x77, 0x87, 0xf6, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x25, 0xdd, 0xea, 0x1b, 0x2c, 0x5f, 0x7b, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0xa7, 0x07, 0x07, 0x8f, 0x8c, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x39, 0xb9, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0x91, 0x95, 0xcd, 0x1b, 0x94, 0xf0, 0x98, 0x0b, 0x9e, 0x1e, 0xbc, 0xc5, 0x0d, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x96, 0x02, 0x3b, 0x58, 0xbb, 0xa7, 0xbe, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x74, 0xab, 0x6f, 0xb0, 0x2e, 0xbb, 0x6e, 0x0d, 0x6f, 0xeb, 0x1c, 0xbc, 0x61, 0x13, 0xa6, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x5f, 0x4e, 0x6e, 0x50, 0x50, 0x64, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x76, 0x65, 0xe4, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0x2f, 0x59, 0x59, 0xcb, 0x58, 0xd8, 0x5c, 0xd9, 0x06, 0x0f, 0x6a, 0x43, 0x69, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x97, 0x93, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x1c, 0xc3, 0x0d, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x17, 0xcd, 0x06, 0x6d, 0x5b, 0x8f, 0x6f, 0x78, 0x5b, 0x67, 0xf0, 0x7a, 0xc0, 0xbb, 0x43, 0x7b, 0x5b, 0xc3, 0x5f, 0x34, 0x1b, 0x3c, 0x0a, 0x2f, 0x64, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x03, 0x1e, 0x59, 0xd9, 0xdc, 0x1a, 0xde, 0xd6, 0x19, 0xbc, 0x1e, 0xf0, 0xec, 0xca, 0xc8, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0xd3, 0x07, 0x6f, 0x6f, 0x43, 0x69, 0x05, 0x78, 0xcb, 0xdc, 0x5a, 0xc4, 0xca, 0xc2, 0xda, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x83, 0xa7, 0x04, 0x87, 0x6c, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0x73, 0x3b, 0xdf, 0x06, 0x4b, 0x72, 0xd3, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x19, 0x09, 0x75, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc3, 0x39, 0xdf, 0x06, 0xcb, 0xd7, 0x5e, 0x0f, 0x5a, 0x1d, 0xe8, 0xdd, 0xa0, 0x6c, 0x17, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0xce, 0xf9, 0x36, 0x38, 0xcd, 0xde, 0x74, 0x90, 0x4a, 0xf9, 0x76, 0x38, 0xc5, 0xd6, 0xa0, 0x6d, 0x24, 0xd0, 0x0d, 0x8f, 0x8f, 0x6c, 0xd0, 0x36, 0x12, 0xe8, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xe4, 0xde, 0xcc, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x6b, 0xd3, 0x46, 0x6a, 0x83, 0x77, 0xf2, 0xa9, 0x6c, 0xf0, 0x16, 0x3f, 0x95, 0x36, 0xfc, 0x45, 0xb3, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0xd1, 0x48, 0x22, 0xb5, 0xe1, 0xf1, 0x91, 0x81, 0x4f, 0x73, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x56, 0x7f, 0xbc, 0x86, 0x3f, 0x97, 0x36, 0x48, 0x91, 0xed, 0x39, 0x08, 0xd3, 0xb1, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0x40, 0x9d, 0xbe, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x2b, 0x05, 0x1f, 0x24, 0x4b, 0x71, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0xf8, 0x72, 0x72, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xf5, 0xc6, 0xdd, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xbc, 0x64, 0x65, 0x2d, 0x6f, 0x6d, 0x65, 0x6e, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xfa, 0x60, 0x7d, 0x79, 0x7a, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xbe, 0x9c, 0xdc, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xa0, 0xa8, 0x2d, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xe4, 0xde, 0xcc, 0x36, 0x78, 0x61, 0xa5, 0xca, 0x06, 0x8f, 0xb4, 0x54, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0x2d, 0xfe, 0x70, 0xb7, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xcb, 0xc9, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x4a, 0x78, 0xcc, 0x05, 0xaf, 0x0f, 0xca, 0xff, 0xe2, 0x0d, 0xce, 0xb2, 0x52, 0x1b, 0xac, 0x74, 0x71, 0xda, 0xa0, 0x25, 0xf1, 0xa8, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x3c, 0x78, 0x7d, 0xf0, 0x54, 0x6b, 0x98, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x28, 0x25, 0xc4, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0xcd, 0xfd, 0xf1, 0xc1, 0xf2, 0x0c, 0xe4, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0xa3, 0xda, 0x51, 0x1b, 0x3e, 0x77, 0x19, 0x1c, 0x3e, 0x68, 0x55, 0x3d, 0x6a, 0x0d, 0x9f, 0xbb, 0x6c, 0xb8, 0x6c, 0x0e, 0xda, 0x55, 0x42, 0x5b, 0xc3, 0xe7, 0x2e, 0x03, 0x7f, 0x17, 0x1e, 0x3c, 0x82, 0x8f, 0x65, 0x0d, 0x9f, 0xbb, 0x6c, 0xf0, 0xfa, 0x91, 0x8f, 0x83, 0x67, 0x17, 0xa5, 0xb4, 0xc1, 0xb9, 0x70, 0x61, 0x0d, 0x91, 0xd9, 0xe0, 0xe8, 0x3a, 0xb8, 0xc1, 0x2b, 0x3a, 0x51, 0xd6, 0xf0, 0x23, 0xcc, 0x41, 0xd3, 0x86, 0xa5, 0x6d, 0x78, 0x84, 0x75, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x8a, 0x54, 0xcc, 0x83, 0x75, 0x17, 0xc8, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0x76, 0x95, 0xd0, 0x36, 0x5c, 0x52, 0x1b, 0x2c, 0xb3, 0x40, 0x6e, 0x0d, 0x0f, 0x4a, 0x6e, 0x78, 0x66, 0x72, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xf0, 0xd4, 0xdb, 0x97, 0x0d, 0x1e, 0xc1, 0xc7, 0xb2, 0xc1, 0x3b, 0xf8, 0x55, 0x5a, 0xc3, 0x25, 0xb5, 0xc6, 0xf3, 0x83, 0x75, 0x17, 0xc8, 0x1d, 0xb4, 0xa9, 0x1e, 0xd5, 0x1a, 0x9c, 0x0b, 0x17, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xf0, 0x66, 0x0d, 0x4f, 0xdc, 0x6d, 0x78, 0x16, 0x6f, 0xf0, 0x70, 0x70, 0x79, 0x70, 0x7b, 0xf0, 0x77, 0x50, 0x3d, 0x28, 0x18, 0x7c, 0x1e, 0x7c, 0x1c, 0x5c, 0x1e, 0x3c, 0x1f, 0xb4, 0x0d, 0xce, 0x0e, 0xfe, 0x0e, 0x3e, 0x1f, 0x1c, 0x68, 0xfa, 0x3a, 0x28, 0x28, 0x32, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0x41, 0x91, 0xb9, 0x41, 0x41, 0x91, 0x79, 0xd0, 0x7a, 0x29, 0xe0, 0x6a, 0xd0, 0xf0, 0x8f, 0xd7, 0x86, 0x5f, 0x94, 0x36, 0x78, 0xa0, 0x38, 0xca, 0x06, 0x27, 0x07, 0xb9, 0x0d, 0xda, 0x12, 0xb3, 0xda, 0xa0, 0xc1, 0x30, 0xab, 0x35, 0x48, 0xd9, 0x62, 0xda, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x02, 0x3f, 0xac, 0xad, 0x6c, 0x5e, 0x83, 0x95, 0xe2, 0x88, 0x1b, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0x5d, 0xe0, 0x8b, 0x95, 0xa1, 0xb9, 0x6b, 0xb0, 0x76, 0x66, 0x6f, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x0b, 0xfc, 0x31, 0xb6, 0xb0, 0x7c, 0x0d, 0xce, 0xb9, 0x29, 0x1b, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0x5d, 0xe0, 0x93, 0xa5, 0xb1, 0xb1, 0xab, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xf0, 0x72, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x0b, 0xfc, 0xb2, 0x3c, 0xb9, 0x72, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0x7e, 0x6e, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x81, 0x7f, 0x16, 0xc6, 0xc6, 0xae, 0xc1, 0x51, 0xeb, 0x64, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x0b, 0xfc, 0x34, 0xb9, 0xb4, 0x79, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0xae, 0x6e, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x81, 0xaf, 0x16, 0x56, 0xc6, 0xae, 0xc1, 0x1a, 0x1d, 0xf6, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0x2e, 0xf0, 0xd7, 0xd0, 0xc2, 0xdc, 0x35, 0x58, 0x73, 0xc7, 0xbe, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x05, 0x3e, 0x5b, 0xda, 0xd8, 0xda, 0x6a, 0xf0, 0xd6, 0x65, 0x98, 0x0d, 0x8f, 0x8f, 0x6c, 0xf0, 0xd6, 0x65, 0x98, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x46, 0x3a, 0x7d, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x4d, 0x98, 0x07, 0x2f, 0xfd, 0x53, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0x7d, 0x79, 0xfa, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x27, 0x56, 0xd6, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x5a, 0x45, 0x98, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0xc1, 0xfa, 0xf2, 0xf4, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x39, 0xb9, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xcb, 0xdf, 0x50, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0xc1, 0xfa, 0xf2, 0xf4, 0xd6, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0x17, 0x97, 0x0d, 0x1e, 0x05, 0x12, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0xde, 0xdb, 0x94, 0xd2, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0xdf, 0x60, 0x15, 0x38, 0xde, 0x06, 0x25, 0x74, 0xec, 0x06, 0xcb, 0x7b, 0xcf, 0x0f, 0xc2, 0x74, 0x6c, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xd6, 0x00, 0x76, 0x83, 0x47, 0x81, 0xc4, 0x1c, 0xb4, 0xaa, 0x9d, 0xb9, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x47, 0x58, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0xa0, 0x48, 0xc5, 0x3c, 0x58, 0x84, 0x98, 0xb7, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x05, 0x36, 0x78, 0x0d, 0x9f, 0x2b, 0x6d, 0x90, 0x32, 0x18, 0x7c, 0xd0, 0x12, 0x14, 0xf4, 0x06, 0x0f, 0x6c, 0x89, 0x39, 0x38, 0x2e, 0x9e, 0x0c, 0x5e, 0x1f, 0x2c, 0x42, 0xcc, 0x6b, 0x83, 0x82, 0x22, 0x73, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x83, 0xc3, 0x07, 0xc5, 0xee, 0xf9, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x1e, 0x1c, 0x1e, 0x3c, 0x3d, 0x38, 0xd0, 0xf4, 0xb5, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x37, 0xc0, 0xc4, 0x1c, 0xbc, 0x62, 0x24, 0xe6, 0x70, 0x8a, 0xd5, 0x02, 0xff, 0x66, 0x6e, 0x50, 0xda, 0x5b, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0xcf, 0x2c, 0x8c, 0xde, 0x20, 0xf4, 0x4b, 0x36, 0x78, 0x9f, 0xee, 0x47, 0x1b, 0x94, 0x79, 0x97, 0xb3, 0xcc, 0x1a, 0x2c, 0xf6, 0x5e, 0xdd, 0xf0, 0x8b, 0xd2, 0x06, 0x6b, 0xa4, 0xd3, 0x37, 0x7c, 0xfd, 0xb2, 0xc1, 0x73, 0xca, 0x4f, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x58, 0x5f, 0x9e, 0xbe, 0xc1, 0x73, 0xca, 0x4f, 0x36, 0x28, 0x48, 0x63, 0x07, 0xbc, 0xb5, 0x34, 0x72, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xe1, 0x26, 0xba, 0x41, 0xd9, 0x54, 0xbf, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb2, 0x34, 0xf9, 0xe0, 0xa5, 0xe5, 0x27, 0x1d, 0x3c, 0x09, 0x24, 0x66, 0x83, 0x12, 0x1e, 0x73, 0x01, 0x6f, 0x2d, 0x8d, 0x6c, 0x83, 0xb3, 0xac, 0xd4, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x2f, 0x2d, 0x3f, 0xd9, 0xf0, 0xb6, 0xce, 0xe0, 0xf5, 0xc1, 0x43, 0x8c, 0x62, 0xd6, 0x60, 0x7d, 0x79, 0xfa, 0xc1, 0x63, 0x38, 0x62, 0x5a, 0x0d, 0x46, 0x9a, 0xfb, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x3e, 0x57, 0xda, 0x60, 0x8d, 0x74, 0xfa, 0xc1, 0xb2, 0x83, 0xe0, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x5c, 0x52, 0x1b, 0x14, 0x35, 0xe2, 0x6b, 0x50, 0xfe, 0x17, 0x6f, 0xf8, 0x8b, 0x66, 0x0d, 0x02, 0xe8, 0x6c, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x8a, 0x54, 0xcc, 0x0d, 0x46, 0x02, 0xc3, 0xc1, 0x4b, 0xcb, 0x4f, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x7d, 0xf0, 0xf0, 0xa8, 0x98, 0x83, 0xd2, 0xcf, 0x78, 0x0d, 0xd6, 0x97, 0xa7, 0x6f, 0xf8, 0x8b, 0x66, 0x83, 0x33, 0x12, 0xea, 0xc1, 0x22, 0xf2, 0xf4, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0xeb, 0x97, 0x0d, 0x9e, 0x53, 0x7e, 0xb2, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0xfa, 0xf2, 0xf4, 0x35, 0x5c, 0x52, 0x1b, 0xbc, 0xb4, 0xfc, 0x64, 0x0d, 0xd2, 0x49, 0xb2, 0x36, 0x38, 0x86, 0x1b, 0x1c, 0x94, 0x7e, 0xc6, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x6b, 0x69, 0xe4, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x0d, 0x4e, 0x4c, 0x63, 0x1d, 0xbc, 0x5e, 0x28, 0x66, 0x83, 0x47, 0x81, 0xc4, 0xac, 0xe1, 0xeb, 0x97, 0x0d, 0x9e, 0x53, 0x7e, 0x72, 0x70, 0x96, 0x95, 0x6a, 0xc3, 0x25, 0xb5, 0xc1, 0x4b, 0xcb, 0x4f, 0xd6, 0xe0, 0xf9, 0x49, 0x28, 0x1b, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xb2, 0x05, 0xf5, 0xe0, 0xf5, 0x42, 0x31, 0x1b, 0x3c, 0x0a, 0x24, 0x66, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x5e, 0x5a, 0x7e, 0xb2, 0xe1, 0x6d, 0x9d, 0x83, 0x87, 0x18, 0xc5, 0x1c, 0x3c, 0x39, 0x29, 0xa6, 0x56, 0x83, 0x26, 0xb9, 0xb9, 0x36, 0xfc, 0xa2, 0xb4, 0xc1, 0x1a, 0xe9, 0xf4, 0x0d, 0x5f, 0xbf, 0x6c, 0xf0, 0x9c, 0xf2, 0x93, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xd6, 0x97, 0xa7, 0x6f, 0xf0, 0x9c, 0xf2, 0x93, 0x0d, 0x5f, 0xe1, 0x6c, 0x50, 0xc2, 0x63, 0x6e, 0xf0, 0x4e, 0x8e, 0x98, 0x35, 0x5c, 0x52, 0x1b, 0xbc, 0xb4, 0xfc, 0x64, 0x0d, 0x9e, 0x9f, 0x84, 0xb2, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x38, 0x9c, 0x5e, 0x1c, 0xbc, 0x5e, 0x28, 0xe6, 0xe0, 0x49, 0x20, 0x31, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x6b, 0x69, 0xe4, 0x06, 0x0f, 0x0c, 0x8a, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0xe0, 0x21, 0x46, 0x31, 0x1b, 0x3c, 0xa7, 0xfc, 0x64, 0xc3, 0x25, 0xb5, 0xc1, 0x4b, 0xcb, 0x4f, 0xd6, 0xe0, 0xf9, 0x49, 0x28, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xf9, 0x62, 0x31, 0x1b, 0x3c, 0x0a, 0x24, 0x66, 0x83, 0xf7, 0x1c, 0xc5, 0xd4, 0xe1, 0x14, 0x5b, 0x83, 0x22, 0x92, 0x60, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xd3, 0xc1, 0xe4, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x7a, 0xd3, 0x6f, 0x70, 0x46, 0x42, 0xdd, 0xe0, 0xe1, 0x4f, 0x31, 0xb5, 0xe1, 0xeb, 0x97, 0x0d, 0x9e, 0x53, 0x7e, 0xb2, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x19, 0x6a, 0x72, 0x83, 0xe7, 0x94, 0x9f, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xf0, 0xd2, 0xf2, 0x93, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x80, 0xa0, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x13, 0xd8, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3e, 0x38, 0x81, 0x4d, 0x76, 0x70, 0xe8, 0xa1, 0x5c, 0x0d, 0x4a, 0xd1, 0x81, 0x0d, 0x4a, 0x7b, 0xcb, 0x0d, 0xd6, 0x48, 0xa7, 0x6f, 0x50, 0xda, 0x5b, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0x4a, 0xb3, 0xec, 0x83, 0xf7, 0xec, 0xc5, 0x6c, 0xf8, 0x0a, 0x67, 0xc3, 0xd7, 0x2f, 0x1b, 0x14, 0x4b, 0xdb, 0x1b, 0x1c, 0xc7, 0x26, 0x36, 0x28, 0xb1, 0xb6, 0x37, 0x78, 0x38, 0x54, 0xcc, 0x1a, 0x2c, 0xa9, 0x4e, 0xda, 0xa0, 0x58, 0xda, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0x8b, 0xc8, 0xd3, 0x37, 0x78, 0xba, 0x54, 0x4c, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x1e, 0x59, 0x9a, 0xbc, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8b, 0x40, 0x46, 0x0f, 0x5e, 0x2f, 0x14, 0xb3, 0xe1, 0x2b, 0x9c, 0x0d, 0x5f, 0xbf, 0x6c, 0x50, 0x2c, 0x6d, 0x6f, 0x50, 0xc2, 0x63, 0x6e, 0xf0, 0xfc, 0x24, 0x94, 0x0d, 0x8a, 0xa5, 0xed, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x9e, 0x9f, 0x84, 0xb2, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x83, 0xe7, 0x27, 0xa1, 0xac, 0x41, 0x89, 0xb5, 0xbd, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xeb, 0xcb, 0xd3, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x89, 0xa0, 0x6d, 0x83, 0x45, 0xe4, 0xe9, 0x6b, 0x70, 0x74, 0x1d, 0x5c, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x83, 0xa7, 0x07, 0xcf, 0x4f, 0x42, 0xa9, 0x35, 0x78, 0x69, 0xf9, 0xc9, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x5e, 0xc2, 0x19, 0x53, 0x2b, 0xe0, 0x99, 0xa5, 0xd1, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0x8d, 0x74, 0xfa, 0x86, 0xaf, 0x5f, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x8b, 0xc8, 0xd3, 0xd7, 0xf0, 0xb6, 0xce, 0xc1, 0xc3, 0xa3, 0x62, 0xda, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0x7d, 0x79, 0xfa, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xa0, 0xc8, 0x3c, 0x78, 0x7a, 0x68, 0xcc, 0x06, 0x05, 0x69, 0xec, 0x80, 0xb7, 0x96, 0x46, 0x6e, 0xf0, 0xc0, 0xa0, 0x98, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x1e, 0x62, 0x14, 0xb3, 0xc1, 0xe3, 0x41, 0x63, 0x36, 0x28, 0x48, 0x63, 0x37, 0x58, 0x65, 0x18, 0xba, 0xc1, 0x7b, 0x8e, 0x62, 0x36, 0x28, 0xe1, 0x31, 0xd7, 0x78, 0x7e, 0xb0, 0xc6, 0x30, 0x74, 0x83, 0xc7, 0x83, 0xc6, 0x1c, 0x2c, 0x24, 0x0c, 0x5d, 0x0d, 0x56, 0x79, 0xce, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xca, 0x9d, 0xf7, 0x0d, 0xca, 0xa6, 0xfa, 0x35, 0x28, 0x04, 0x53, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0xc4, 0xfa, 0x83, 0xb7, 0xf4, 0xc5, 0x74, 0xb0, 0xce, 0x63, 0xf4, 0x70, 0x8a, 0xd5, 0x1a, 0x94, 0xdc, 0x0d, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0x8d, 0x74, 0xfa, 0x86, 0xb7, 0x59, 0x37, 0xfc, 0x9b, 0xb3, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0xce, 0x9d, 0x16, 0x07, 0x4b, 0xc8, 0xd3, 0x0f, 0xa7, 0xd8, 0x1a, 0x14, 0xfe, 0x06, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0x8d, 0x74, 0xfa, 0x86, 0xaf, 0x5f, 0x36, 0x78, 0x4e, 0xf9, 0xc9, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xeb, 0xcb, 0xd3, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x05, 0x45, 0xe6, 0xc1, 0xeb, 0x86, 0x62, 0x0e, 0xde, 0x1e, 0x17, 0xb3, 0x1a, 0x94, 0x08, 0x2d, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0x8d, 0x74, 0xfa, 0x86, 0x07, 0x25, 0x37, 0x48, 0x0c, 0xc9, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xeb, 0xb9, 0x57, 0x0f, 0x96, 0x90, 0xa7, 0x1f, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0x6a, 0xf0, 0xd2, 0x51, 0x98, 0x0d, 0x8f, 0x8f, 0x6c, 0xf0, 0xd2, 0x51, 0x98, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x0e, 0x0c, 0xa0, 0x07, 0x27, 0x02, 0xd0, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0x6e, 0xf0, 0x56, 0xbd, 0x90, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0xf4, 0x8f, 0x70, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xe9, 0x56, 0xdf, 0x20, 0x11, 0x2e, 0x78, 0x0d, 0x6f, 0xeb, 0x1c, 0x1c, 0x17, 0x40, 0xdb, 0xa0, 0x18, 0x90, 0xdd, 0xf0, 0xe5, 0xe4, 0x1a, 0x1c, 0xc3, 0x0d, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x22, 0x5c, 0xf0, 0x1a, 0xde, 0xd6, 0x19, 0xbc, 0x3e, 0x68, 0x9f, 0x92, 0xb0, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0xef, 0xae, 0xcc, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0xba, 0xd5, 0x37, 0x58, 0xe1, 0xe4, 0x7a, 0xf0, 0xdc, 0xe4, 0x98, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0x5f, 0x4e, 0xae, 0xc1, 0x31, 0xdc, 0x60, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0x70, 0x72, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x03, 0xde, 0x5d, 0x99, 0x5b, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x24, 0xb7, 0xa8, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x25, 0xdd, 0xea, 0x1b, 0x2c, 0x34, 0x6e, 0x3d, 0x78, 0x6e, 0x72, 0xcc, 0x06, 0xc5, 0x80, 0xec, 0x86, 0x2f, 0x27, 0xd7, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0x17, 0x97, 0x0d, 0x16, 0x1a, 0xb7, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0xe4, 0x40, 0xd5, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb6, 0x30, 0x71, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xe9, 0x56, 0xdf, 0x60, 0x5d, 0x76, 0xdd, 0xc1, 0x73, 0x93, 0x63, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x39, 0xb9, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0x31, 0xdc, 0x60, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0xcb, 0xae, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0x2f, 0x22, 0x69, 0xe9, 0x70, 0x8a, 0xad, 0xc1, 0x8b, 0xad, 0x57, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x8b, 0xf8, 0x69, 0x0f, 0x1e, 0x55, 0x08, 0xb2, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb4, 0x3a, 0x77, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0x3c, 0x38, 0x3e, 0xb9, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0xcf, 0x2e, 0xcc, 0x3d, 0x38, 0xcf, 0x8e, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x1e, 0xca, 0x8c, 0xb2, 0xc1, 0xb9, 0x70, 0x61, 0x0d, 0x79, 0xec, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0xf0, 0x13, 0x26, 0x67, 0xf7, 0xa6, 0x03, 0x52, 0x07, 0x77, 0x26, 0x17, 0x46, 0x56, 0x06, 0x62, 0x16, 0x96, 0xc6, 0x56, 0x46, 0x6e, 0x70, 0x2e, 0x5c, 0x58, 0x83, 0xb6, 0x40, 0x56, 0x36, 0xfc, 0xe2, 0xb2, 0xe1, 0xc1, 0x9b, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xc0, 0x5b, 0x98, 0x9c, 0xdd, 0x9b, 0x0e, 0x88, 0x58, 0xd9, 0x59, 0x9a, 0x9b, 0x5b, 0x9a, 0xdb, 0x19, 0x48, 0x1d, 0xdc, 0x99, 0x5c, 0x18, 0x59, 0xd9, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x8f, 0xf8, 0x44, 0x59, 0x83, 0x82, 0x34, 0x76, 0x83, 0x85, 0xe4, 0xbf, 0x6b, 0x70, 0x2e, 0x5c, 0x58, 0x83, 0xb6, 0x40, 0x56, 0x36, 0xfc, 0xe2, 0xb2, 0xe1, 0xc1, 0x9b, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xc0, 0x63, 0x98, 0x9c, 0xdd, 0x9b, 0x0e, 0xc8, 0xd8, 0x5b, 0x1b, 0x5c, 0x1a, 0x5b, 0x9a, 0xdb, 0x19, 0x88, 0x5b, 0x19, 0x1e, 0x1d, 0x48, 0x98, 0x9c, 0xdd, 0xdb, 0x06, 0xe7, 0xc2, 0x85, 0x0d, 0x1e, 0xe9, 0xd8, 0xb2, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x17, 0x3f, 0xb6, 0x6c, 0x70, 0x1e, 0xec, 0xd8, 0xf0, 0x6e, 0xcf, 0x06, 0x4d, 0x91, 0x59, 0xae, 0xc1, 0x02, 0xb9, 0xa7, 0x83, 0x17, 0x4f, 0xa4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x61, 0x44, 0x5e, 0x83, 0xa3, 0xeb, 0xe0, 0x06, 0x8f, 0x80, 0x40, 0xd9, 0xe0, 0x15, 0x9d, 0x28, 0x07, 0x4f, 0xc6, 0x44, 0x39, 0x78, 0x80, 0x1f, 0x4a, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x1e, 0xdb, 0x1b, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x8a, 0xcc, 0x72, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x7c, 0xc6, 0xe5, 0x06, 0xe7, 0x05, 0x9a, 0x83, 0x96, 0x7f, 0xff, 0x0e, 0x5e, 0xb9, 0xd7, 0xb2, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x4b, 0x0d, 0x41, 0x0e, 0x1e, 0xd2, 0x8c, 0xb2, 0xc1, 0x79, 0xb0, 0x63, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0xe1, 0x17, 0x97, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x00, 0xff, 0x30, 0x39, 0xbb, 0x37, 0x1d, 0x90, 0x15, 0xb6, 0xb7, 0x30, 0x32, 0x10, 0xb7, 0x32, 0x3c, 0xba, 0x0d, 0xd6, 0x48, 0x35, 0x6d, 0x50, 0xa4, 0x62, 0x6e, 0x78, 0x50, 0x72, 0x83, 0xd3, 0x91, 0xc8, 0x86, 0x77, 0x7b, 0x36, 0x78, 0xa9, 0x5f, 0xcb, 0x1a, 0xde, 0xd6, 0x39, 0x78, 0x9b, 0x75, 0xca, 0x1a, 0x2c, 0x90, 0x7b, 0xda, 0xf0, 0xb6, 0xce, 0xc1, 0x2b, 0x9b, 0x51, 0xda, 0xa0, 0x20, 0x8d, 0x5d, 0x83, 0x12, 0x3a, 0x76, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xda, 0x17, 0xa1, 0x3a, 0x08, 0xd3, 0xb1, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xa1, 0xbd, 0x8d, 0x07, 0x61, 0x3a, 0xb6, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb1, 0x37, 0xf8, 0x20, 0x4c, 0xc7, 0x3a, 0x08, 0xd3, 0xb1, 0x35, 0x28, 0x48, 0x63, 0x37, 0x48, 0x91, 0xed, 0x59, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0xe1, 0x17, 0x97, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x00, 0x7e, 0xc2, 0xe4, 0xec, 0xde, 0x74, 0x40, 0xc6, 0xde, 0xda, 0xe0, 0xd2, 0xd8, 0xd2, 0xdc, 0xce, 0x40, 0xd0, 0xde, 0xde, 0xdc, 0x36, 0x38, 0x17, 0x2e, 0x6c, 0xf0, 0x48, 0xc7, 0x96, 0x0d, 0xef, 0xf6, 0x6c, 0xf0, 0xe2, 0xc7, 0x96, 0x35, 0x38, 0x0f, 0x76, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x1c, 0xbc, 0x8d, 0x22, 0x65, 0x83, 0x25, 0xf6, 0xdb, 0x07, 0xaf, 0xa6, 0x45, 0x69, 0x83, 0x82, 0x34, 0x76, 0xc0, 0x1b, 0x7b, 0x83, 0xd7, 0x60, 0x41, 0xc8, 0xd2, 0x86, 0x07, 0x6f, 0x36, 0x5c, 0x52, 0x6b, 0x3c, 0x3f, 0x48, 0x2a, 0xe0, 0x6c, 0x83, 0x82, 0x34, 0x76, 0x83, 0xb6, 0xcb, 0x3e, 0xd7, 0x60, 0x8d, 0x54, 0xd3, 0x86, 0x1f, 0x6a, 0x36, 0x58, 0x10, 0xb2, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0xb1, 0x37, 0xb8, 0x0d, 0x0f, 0x4a, 0x6e, 0x70, 0x3a, 0x12, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x34, 0x3f, 0x22, 0xb5, 0x41, 0xe3, 0xe8, 0x51, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0x20, 0xa9, 0x80, 0xb3, 0x0d, 0x96, 0xd8, 0x6f, 0xaf, 0xe1, 0x17, 0x97, 0x0d, 0xda, 0x2b, 0x29, 0x58, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x5c, 0x36, 0xb5, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x5f, 0xc9, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x0d, 0xa3, 0x9f, 0x1e, 0xb4, 0xab, 0x84, 0xb6, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0x71, 0xd4, 0x41, 0xc3, 0xe8, 0xa7, 0x07, 0xed, 0x2a, 0xa1, 0xb5, 0x06, 0x2b, 0x5d, 0x9c, 0x36, 0xfc, 0x7e, 0xb3, 0x86, 0x5f, 0x94, 0x36, 0x7c, 0xb9, 0x74, 0xb0, 0xc0, 0x47, 0x78, 0xc3, 0x5b, 0x76, 0x6b, 0x78, 0xe2, 0x6e, 0xc3, 0xb3, 0x78, 0x83, 0x8f, 0x83, 0x87, 0x83, 0xbb, 0x83, 0xbb, 0x83, 0xbf, 0x83, 0xd3, 0x83, 0x82, 0xc1, 0xeb, 0xc1, 0xe1, 0xc1, 0xcf, 0xc1, 0xe5, 0xc1, 0xc3, 0xc1, 0xc9, 0xc1, 0xcb, 0x41, 0xc1, 0xe0, 0xf4, 0xe0, 0xef, 0xa0, 0x60, 0x70, 0x74, 0xf0, 0x77, 0xf0, 0x77, 0x70, 0x77, 0x50, 0x30, 0x68, 0x59, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xee, 0x24, 0x7c, 0xd0, 0xec, 0x03, 0x6a, 0x83, 0x82, 0xc1, 0xcd, 0xc1, 0xe5, 0xc1, 0xdf, 0xc1, 0xdb, 0x41, 0xc1, 0xa0, 0x65, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xb9, 0x93, 0xf0, 0x06, 0xed, 0x2a, 0xa1, 0x55, 0x07, 0xe1, 0xa9, 0xba, 0xc1, 0x89, 0xfd, 0x66, 0x0d, 0xef, 0xf6, 0x6c, 0xf0, 0x8a, 0xd4, 0x95, 0x0d, 0xda, 0xc8, 0xbb, 0x5c, 0xc3, 0x2f, 0x2e, 0x6b, 0xd0, 0x62, 0xd3, 0xe5, 0x41, 0xc3, 0xe8, 0xa7, 0x07, 0x65, 0x9d, 0x67, 0x1b, 0x14, 0x1d, 0xb4, 0x6b, 0xf8, 0xbe, 0x7d, 0xc0, 0x43, 0x7b, 0xa3, 0x37, 0x28, 0xa1, 0x63, 0x0f, 0x42, 0x74, 0x6c, 0x83, 0xa7, 0xc7, 0xc8, 0xac, 0xe1, 0x83, 0x9c, 0x0d, 0x1e, 0xa9, 0x23, 0xb3, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0x0f, 0xe0, 0xdc, 0xe0, 0x7d, 0x31, 0x32, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x68, 0x6f, 0xf4, 0x1a, 0x9c, 0x0b, 0x17, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xf0, 0x66, 0x0d, 0x4f, 0xdc, 0x6d, 0x78, 0x16, 0x6f, 0xf0, 0x70, 0x70, 0x79, 0x70, 0x7b, 0xf0, 0x77, 0x50, 0x3d, 0x28, 0x18, 0x5c, 0x1e, 0xbc, 0x1c, 0x7c, 0x1c, 0xfc, 0x1d, 0xbc, 0x1d, 0x1c, 0x1e, 0x3c, 0x1d, 0x9c, 0x1d, 0x3c, 0x1d, 0xdc, 0x1d, 0xfc, 0x1c, 0x14, 0x0c, 0x8e, 0x0e, 0xfe, 0x0e, 0xfe, 0x0e, 0xee, 0x0e, 0x0a, 0x06, 0x2d, 0xcb, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x8b, 0x19, 0x83, 0x37, 0x48, 0x84, 0x0b, 0x3e, 0x68, 0xf6, 0x01, 0xb5, 0xda, 0xe0, 0x5c, 0xb8, 0xb0, 0xc1, 0x23, 0x1d, 0x5b, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x8b, 0x1f, 0x5b, 0xd6, 0xe0, 0x3c, 0xd8, 0xb1, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0xdb, 0x0a, 0xdc, 0xe0, 0x7d, 0x31, 0x32, 0x6b, 0xf8, 0xc5, 0xe5, 0xe0, 0x79, 0x2a, 0x32, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xa1, 0xbd, 0xd1, 0xad, 0xc1, 0x82, 0x90, 0xa5, 0x0d, 0x0f, 0xde, 0x6c, 0xb8, 0xa4, 0xd6, 0x78, 0x7e, 0xf0, 0x4a, 0x35, 0x99, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xf0, 0xd0, 0xde, 0xc6, 0x35, 0x58, 0x10, 0xb2, 0xb4, 0xc1, 0xfb, 0x62, 0x64, 0x36, 0xfc, 0xe2, 0xb2, 0xc1, 0xb2, 0x00, 0xe0, 0x83, 0xd3, 0x02, 0xcd, 0x06, 0x05, 0x69, 0xec, 0x06, 0xed, 0x8b, 0x50, 0xad, 0xe1, 0x41, 0xc9, 0x0d, 0xcf, 0x4c, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xf6, 0xb6, 0x02, 0x37, 0x78, 0x5f, 0x8c, 0xcc, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x25, 0xb5, 0xc6, 0xa1, 0x83, 0x57, 0xaa, 0xc9, 0x74, 0xf0, 0x2c, 0x5e, 0x97, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0xe3, 0x2f, 0x54, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x43, 0x7b, 0x1b, 0x3b, 0x78, 0xd4, 0x95, 0xcc, 0x06, 0x05, 0x69, 0xec, 0x80, 0x27, 0x17, 0x66, 0xaf, 0xc1, 0xb9, 0x70, 0x61, 0x83, 0xe7, 0xe6, 0xc7, 0x6c, 0x70, 0x2e, 0x5c, 0xd8, 0xe0, 0x91, 0x8e, 0x2d, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xc5, 0x8f, 0x2d, 0x6b, 0x70, 0x1e, 0xec, 0xd8, 0xf0, 0x6e, 0xcf, 0x06, 0xed, 0x6d, 0x05, 0x6e, 0xf0, 0xbe, 0x18, 0x99, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xe3, 0x2f, 0x54, 0x07, 0x0f, 0xf0, 0x43, 0xa9, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0xcf, 0xee, 0x6d, 0x5c, 0x83, 0x05, 0x21, 0x4b, 0x1b, 0xbc, 0xfd, 0x4e, 0x66, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xfd, 0xd6, 0xb1, 0x86, 0x4b, 0x6a, 0x8d, 0xe7, 0x07, 0xcf, 0x89, 0x45, 0xe9, 0xe0, 0x15, 0x70, 0x32, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x1e, 0xdb, 0x1b, 0xb9, 0x06, 0x05, 0x69, 0xec, 0x80, 0x67, 0x97, 0x06, 0xaf, 0xe1, 0x41, 0xc9, 0x0d, 0xcf, 0x4c, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xf6, 0xb6, 0x02, 0x37, 0x78, 0x5f, 0x8c, 0xcc, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x25, 0xb5, 0xc6, 0xa1, 0x83, 0xe7, 0xc4, 0xa2, 0x74, 0xf0, 0x2c, 0x5e, 0x97, 0x36, 0x28, 0x48, 0x63, 0x37, 0x58, 0xd8, 0x34, 0xbc, 0x86, 0x07, 0x25, 0x37, 0xdc, 0x51, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xbd, 0xad, 0xc0, 0x0d, 0xde, 0x17, 0x23, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x67, 0x97, 0x06, 0xb7, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0x9e, 0xd7, 0xd7, 0x52, 0x1b, 0x2c, 0x08, 0x59, 0x5a, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0xdd, 0xdb, 0xd8, 0xc1, 0x82, 0xb6, 0xe1, 0x0d, 0xbf, 0x28, 0x6d, 0xf0, 0x84, 0x06, 0x99, 0x0d, 0xce, 0x83, 0x1d, 0x1b, 0x9c, 0x0b, 0x17, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0x4c, 0xe6, 0xe0, 0x0d, 0x11, 0x32, 0x1b, 0xac, 0x91, 0x6a, 0xda, 0xa0, 0x48, 0xc5, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0xed, 0x6d, 0x05, 0x6e, 0xf0, 0x82, 0x0b, 0x99, 0x0d, 0x1e, 0x89, 0x21, 0xd3, 0x6a, 0xf0, 0x9c, 0x83, 0x8c, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0x86, 0x5c, 0xdc, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0x70, 0xb8, 0x59, 0x18, 0xc0, 0x5b, 0xae, 0x2c, 0xae, 0x2e, 0x4d, 0xae, 0x0c, 0x64, 0xad, 0x8c, 0xcd, 0x2e, 0xcd, 0x6d, 0x6e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0x30, 0x32, 0x97, 0x0e, 0x1e, 0x55, 0x08, 0xb2, 0x86, 0x3f, 0x97, 0x36, 0x68, 0xef, 0x3e, 0xeb, 0xe0, 0x51, 0x85, 0x20, 0x6d, 0xb0, 0x00, 0xb3, 0x69, 0xc0, 0xbb, 0xcb, 0x93, 0xd7, 0xa0, 0x84, 0xc7, 0x5c, 0xc0, 0xbb, 0xcb, 0x93, 0xdb, 0xa0, 0x61, 0xf5, 0xc0, 0x0d, 0xd6, 0xad, 0x32, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xe0, 0x39, 0x07, 0x19, 0x1b, 0xde, 0xd6, 0x39, 0x78, 0xfe, 0xa9, 0xcc, 0x86, 0xb7, 0xec, 0xd6, 0xe0, 0x9c, 0xbf, 0xb4, 0xc1, 0xaa, 0x06, 0xe1, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x53, 0x3d, 0x84, 0x07, 0x65, 0x99, 0xe7, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0x7c, 0x62, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x07, 0xaf, 0x0f, 0x9e, 0x7f, 0x2a, 0xb3, 0xe1, 0x89, 0xbb, 0x0d, 0xcf, 0xe2, 0x0d, 0x5a, 0x36, 0x78, 0xba, 0x55, 0xcb, 0xa0, 0x60, 0xd0, 0xb2, 0x6c, 0xf8, 0xc5, 0xe5, 0xa0, 0x9d, 0x13, 0xef, 0x41, 0xc1, 0xe0, 0xf2, 0xe0, 0xe5, 0xe0, 0xf1, 0xe0, 0xf5, 0xe0, 0xe9, 0xe0, 0xf2, 0xe0, 0xe5, 0xe0, 0xe4, 0xa0, 0xbb, 0x35, 0x28, 0xe1, 0x31, 0x17, 0x3c, 0x3e, 0x78, 0x1a, 0xac, 0xcc, 0x1a, 0x9e, 0xb8, 0xdb, 0xf0, 0x2c, 0xde, 0xe0, 0xf2, 0xe0, 0xf5, 0xe0, 0xee, 0xe0, 0xf4, 0xe0, 0xe9, 0xe0, 0xed, 0xe0, 0xe5, 0xa0, 0x60, 0xf0, 0x76, 0xf0, 0x74, 0xf0, 0x79, 0xf0, 0x79, 0xf0, 0x74, 0x70, 0x77, 0xf0, 0x73, 0x50, 0x30, 0xf8, 0x3c, 0x78, 0x3d, 0x38, 0x3c, 0x38, 0x3c, 0xf8, 0x3b, 0xb8, 0x7c, 0x70, 0xa0, 0xe9, 0xdb, 0xf0, 0xc4, 0xdd, 0x86, 0x67, 0xf1, 0x06, 0x97, 0x07, 0xaf, 0x07, 0x77, 0x07, 0xa7, 0x07, 0x4f, 0x07, 0x6f, 0x07, 0x2f, 0x07, 0x05, 0x83, 0xbf, 0x83, 0xbb, 0x83, 0xb3, 0x83, 0xe7, 0x83, 0x82, 0xc1, 0xe7, 0xc1, 0xeb, 0xc1, 0xe1, 0xc1, 0xe1, 0xc1, 0xdf, 0xc1, 0xe5, 0xc1, 0xe9, 0xc1, 0xe7, 0x41, 0xc1, 0xa0, 0x65, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x31, 0x63, 0xf0, 0x06, 0x89, 0x70, 0xc1, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xfa, 0xe0, 0x71, 0xb7, 0x32, 0x55, 0x1b, 0x9c, 0x0b, 0x17, 0xd6, 0x90, 0xc7, 0xde, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0x00, 0x4f, 0x61, 0x72, 0x76, 0x6f, 0x3a, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0xe4, 0x06, 0xe7, 0xc2, 0x85, 0x35, 0xe4, 0xb1, 0x37, 0xfc, 0x08, 0x33, 0x38, 0x7d, 0xf0, 0x9c, 0x83, 0x8c, 0x83, 0xf0, 0x54, 0xdd, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0xd7, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0x37, 0x78, 0x96, 0x42, 0xc8, 0x06, 0xe7, 0x3b, 0xc2, 0xda, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0x5d, 0x05, 0xad, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xd6, 0x1b, 0xd9, 0xae, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0xb0, 0x0a, 0x32, 0x79, 0x83, 0x32, 0x4b, 0x77, 0x83, 0x67, 0x29, 0x84, 0xb4, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xe2, 0x46, 0xed, 0x1a, 0x2c, 0x73, 0x92, 0xdd, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0x41, 0xbb, 0x0a, 0x5a, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x63, 0x0b, 0x63, 0x0f, 0xde, 0xbb, 0x2d, 0xb3, 0xe1, 0x6d, 0x9d, 0x01, 0x8f, 0x2d, 0x8c, 0x3d, 0x78, 0x26, 0x6f, 0xca, 0x1a, 0xac, 0x02, 0x93, 0xdd, 0xf0, 0xb6, 0xce, 0x06, 0x8d, 0xfe, 0x11, 0x1e, 0x3c, 0x93, 0x37, 0x65, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x3b, 0x78, 0x96, 0x6f, 0xca, 0x06, 0x41, 0x7a, 0xba, 0xc1, 0xaa, 0x88, 0xdf, 0x35, 0x08, 0x23, 0xa0, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0x0b, 0xaf, 0x6c, 0x0f, 0xca, 0x3a, 0xcf, 0x35, 0x08, 0xd8, 0xa0, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xdf, 0x0d, 0x9e, 0x65, 0x2e, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xf4, 0x8f, 0xf0, 0xe0, 0xbd, 0xdb, 0x32, 0xad, 0xc1, 0x31, 0xdc, 0x60, 0xc3, 0x2f, 0x2e, 0x1b, 0x3c, 0x6a, 0x5b, 0x66, 0x0d, 0x8e, 0xe1, 0x06, 0x07, 0xcf, 0x32, 0x97, 0x69, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x76, 0x15, 0xb4, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0xd0, 0xae, 0x82, 0x56, 0xad, 0x06, 0x6b, 0x1e, 0xe7, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x83, 0xc5, 0xa6, 0x75, 0x03, 0xf0, 0xb8, 0x56, 0xc6, 0x66, 0x97, 0xe6, 0x06, 0x32, 0x47, 0x17, 0x36, 0xb6, 0x06, 0x62, 0xf6, 0x26, 0x07, 0x62, 0x17, 0xc6, 0x96, 0x46, 0x96, 0x46, 0x97, 0xb7, 0xe1, 0x17, 0xa5, 0x0d, 0x1e, 0x65, 0x1e, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x50, 0x50, 0x64, 0x1e, 0xb4, 0x91, 0x77, 0xb9, 0x41, 0x91, 0xd3, 0xba, 0x41, 0xd1, 0x41, 0xbb, 0x86, 0xef, 0xdb, 0x07, 0x3c, 0xb6, 0xb0, 0x79, 0x83, 0x12, 0x3a, 0x76, 0x83, 0x67, 0x29, 0x84, 0x1c, 0x84, 0xe9, 0xd8, 0x06, 0xcd, 0xe7, 0x5d, 0x6e, 0xd0, 0x46, 0xde, 0xe5, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x83, 0xd5, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x9a, 0xcf, 0xbb, 0xdc, 0xa0, 0xc8, 0x69, 0xdd, 0xf0, 0x08, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x0d, 0x5b, 0x69, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xe8, 0x1f, 0xe1, 0xc1, 0x0b, 0xe3, 0x5a, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x8d, 0xfe, 0x11, 0x0e, 0x9e, 0x1e, 0x34, 0x9f, 0x77, 0xd9, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xbc, 0x30, 0xae, 0x65, 0xc3, 0xdb, 0x3a, 0x07, 0x6f, 0x2f, 0x98, 0x59, 0x83, 0xe6, 0xf3, 0x2e, 0x37, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0xd0, 0x7c, 0xde, 0x65, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x83, 0xc7, 0x97, 0xa8, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x3c, 0xbe, 0x44, 0xa5, 0x01, 0xbc, 0xe7, 0xf2, 0xda, 0xc4, 0xde, 0xd8, 0x40, 0xde, 0xe4, 0x40, 0xca, 0xda, 0xe0, 0xe8, 0xf2, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x01, 0x8c, 0xbf, 0xe1, 0x2f, 0x9a, 0x0d, 0xce, 0x9b, 0xa7, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x78, 0x84, 0x75, 0x83, 0x72, 0x29, 0x7f, 0x0d, 0xef, 0xf6, 0x6c, 0xf0, 0xf2, 0x37, 0x94, 0xc3, 0x43, 0x3f, 0x6d, 0x90, 0x94, 0x16, 0x7c, 0x78, 0x5a, 0xe7, 0x70, 0x8a, 0x2d, 0xc0, 0x5b, 0xe6, 0xd6, 0xf2, 0xd6, 0x56, 0xe6, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0xb7, 0x68, 0x8b, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x33, 0x12, 0xea, 0x06, 0x4b, 0xaa, 0x93, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0x71, 0xaf, 0x30, 0x1d, 0x3c, 0xa9, 0x29, 0x65, 0x83, 0x82, 0x60, 0x76, 0x83, 0x15, 0x53, 0x70, 0x1b, 0x2c, 0x8b, 0x82, 0xdb, 0xa0, 0x2c, 0x79, 0xdf, 0x60, 0xc5, 0x9a, 0xde, 0x06, 0x0b, 0x4f, 0xcf, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x4b, 0xee, 0x56, 0xd7, 0x20, 0x29, 0x2d, 0x78, 0x83, 0x75, 0xd9, 0x75, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0x45, 0x1c, 0xab, 0x83, 0x15, 0x53, 0x70, 0x6b, 0x90, 0x94, 0x16, 0xbc, 0xc1, 0xba, 0xec, 0xba, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x63, 0x61, 0xf2, 0xc1, 0x8a, 0x29, 0xb8, 0x83, 0xb2, 0xce, 0xb3, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0xdb, 0x70, 0x22, 0x6c, 0xf0, 0x18, 0xcc, 0x93, 0x35, 0x9c, 0x23, 0x07, 0xef, 0x61, 0x20, 0x39, 0x78, 0x1a, 0xe7, 0xc9, 0x86, 0x13, 0x61, 0x83, 0x57, 0x5f, 0x9e, 0x6c, 0xb0, 0x98, 0x0d, 0xea, 0xe0, 0xa1, 0xc4, 0x27, 0x1b, 0x4e, 0x84, 0x0d, 0x1e, 0x6d, 0x79, 0xb2, 0x86, 0x73, 0xe4, 0xe0, 0x65, 0x0f, 0x25, 0xcb, 0x2c, 0x1b, 0x3e, 0xb1, 0x59, 0x0d, 0x9f, 0xbb, 0x6c, 0xb0, 0x90, 0xfc, 0x77, 0x83, 0x52, 0x42, 0x7c, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0x41, 0xc9, 0x0d, 0x96, 0x1f, 0x6f, 0x1f, 0x3c, 0x12, 0x43, 0x66, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x1b, 0x1e, 0x94, 0xdc, 0x60, 0xf9, 0xf1, 0xf6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x0b, 0x29, 0x6c, 0xf0, 0x3e, 0xfc, 0x96, 0x0e, 0x1e, 0x2d, 0x3c, 0xb1, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0xc4, 0x4f, 0xbb, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0xdd, 0x9e, 0x0d, 0x42, 0xca, 0x64, 0x0d, 0x1f, 0xb5, 0x1f, 0x3c, 0xbe, 0xfa, 0xa4, 0x83, 0xd6, 0x78, 0x08, 0x36, 0x7c, 0xee, 0xb2, 0xc1, 0x48, 0x60, 0xd8, 0xf0, 0x6e, 0xcf, 0x06, 0x4f, 0xbd, 0x99, 0x39, 0x68, 0x51, 0x88, 0xe0, 0x60, 0x25, 0x9d, 0xfe, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x87, 0xf3, 0xf8, 0xa0, 0xed, 0x80, 0x8b, 0x0d, 0x27, 0xc2, 0x06, 0x4f, 0xa2, 0x3c, 0x39, 0x68, 0x8b, 0xe1, 0xe2, 0xa0, 0xf9, 0x86, 0x8b, 0x83, 0xe7, 0x5d, 0x9e, 0x6c, 0x38, 0x11, 0x36, 0x78, 0x01, 0xad, 0xc9, 0x06, 0x8b, 0xd9, 0xa0, 0x96, 0x59, 0x83, 0x67, 0x6a, 0xa3, 0x6c, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0xc0, 0x14, 0xda, 0x20, 0xb1, 0xa5, 0x6a, 0x83, 0x95, 0x2e, 0x4e, 0x1b, 0x3c, 0x9b, 0x59, 0x65, 0x83, 0x73, 0x66, 0xd2, 0xc1, 0x83, 0xb6, 0x51, 0x56, 0x83, 0xe7, 0xbd, 0x61, 0x6c, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0xc0, 0x14, 0xda, 0x20, 0xb1, 0xa5, 0x6a, 0x83, 0x95, 0x2e, 0x4e, 0x1b, 0x3c, 0x9b, 0x59, 0x65, 0x83, 0x73, 0x66, 0xd2, 0xc1, 0xe3, 0xee, 0x51, 0x56, 0x83, 0x65, 0xf7, 0x51, 0x1b, 0xac, 0x74, 0x71, 0xda, 0x20, 0x30, 0x85, 0x36, 0x48, 0x6c, 0xa9, 0xda, 0x60, 0xa5, 0x8b, 0xd3, 0x06, 0xcf, 0x66, 0x56, 0xd9, 0xe0, 0x9c, 0x99, 0x74, 0xf0, 0xc2, 0xab, 0x94, 0xd5, 0xa0, 0x85, 0x7e, 0xd2, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0x10, 0x98, 0x42, 0x1b, 0x24, 0xb6, 0x54, 0x6d, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0x67, 0x33, 0xab, 0x6c, 0x70, 0xce, 0x4c, 0x3a, 0x78, 0xb4, 0x60, 0xca, 0x6a, 0xf0, 0x1e, 0xcf, 0x94, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0x10, 0x98, 0x42, 0x1b, 0x24, 0xb6, 0x54, 0x6d, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0x67, 0x33, 0xab, 0x6c, 0x70, 0xce, 0x4c, 0x3a, 0x78, 0x4d, 0x69, 0xca, 0xe1, 0x14, 0x6b, 0x0d, 0x96, 0xe9, 0x52, 0x6d, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0xc0, 0x14, 0xda, 0x20, 0xb1, 0xa5, 0x6a, 0x83, 0x95, 0x2e, 0x4e, 0x1b, 0x3c, 0x9b, 0x59, 0x65, 0x83, 0x73, 0x66, 0xd2, 0xc1, 0x33, 0x63, 0x53, 0x0e, 0xa7, 0xd8, 0x1a, 0xb4, 0x62, 0x35, 0xbb, 0xc1, 0x4a, 0x17, 0xa7, 0x0d, 0x02, 0x53, 0x68, 0x83, 0xc4, 0x96, 0xaa, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0xf0, 0x6c, 0x66, 0x95, 0x0d, 0xce, 0x99, 0x49, 0x07, 0x6f, 0x64, 0x4e, 0x99, 0x35, 0xbc, 0x75, 0xbf, 0xc1, 0x4a, 0x17, 0xa7, 0x0d, 0x02, 0x53, 0x68, 0x83, 0xc4, 0x96, 0xaa, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0xf0, 0x6c, 0x66, 0x95, 0x0d, 0xce, 0x99, 0x49, 0x07, 0xaf, 0x78, 0x4f, 0x39, 0x9c, 0x62, 0x6b, 0xd0, 0x2a, 0x90, 0xcb, 0x06, 0x2b, 0x5d, 0x9c, 0x36, 0x08, 0x4c, 0xa1, 0x0d, 0x12, 0x5b, 0xaa, 0x36, 0x58, 0xe9, 0xe2, 0xb4, 0xc1, 0xb3, 0x99, 0x55, 0x36, 0x38, 0x67, 0x26, 0x1d, 0x3c, 0x85, 0x4e, 0x65, 0x35, 0x78, 0x0d, 0xaa, 0xca, 0x06, 0x2b, 0x5d, 0x9c, 0x36, 0x08, 0x4c, 0xa1, 0x0d, 0x12, 0x5b, 0xaa, 0x36, 0x58, 0xe9, 0xe2, 0xb4, 0xc1, 0xb3, 0x99, 0x55, 0x36, 0x38, 0x67, 0x26, 0x1d, 0xbc, 0x1b, 0x55, 0x65, 0xd6, 0xa0, 0x49, 0x2c, 0xed, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0x10, 0x98, 0x42, 0x1b, 0x24, 0xb6, 0x54, 0x6d, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0x67, 0x33, 0xab, 0x6c, 0x70, 0xce, 0x4c, 0x3a, 0x78, 0xb1, 0xb0, 0xca, 0xe1, 0x14, 0x5b, 0x83, 0xe3, 0xa1, 0xe9, 0x06, 0x2b, 0x5d, 0x9c, 0x36, 0x08, 0x4c, 0xa1, 0x0d, 0x12, 0x5b, 0xaa, 0x36, 0x58, 0xe9, 0xe2, 0xb4, 0xc1, 0xb3, 0x99, 0x55, 0x36, 0x38, 0x67, 0x26, 0x1d, 0xbc, 0xf3, 0x5a, 0x65, 0xd6, 0xa0, 0xcd, 0x1d, 0xaa, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0x10, 0x98, 0x42, 0x1b, 0x24, 0xb6, 0x54, 0x6d, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0x67, 0x33, 0xab, 0x6c, 0x70, 0xce, 0x4c, 0x3a, 0x78, 0xf9, 0x12, 0xcb, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x1b, 0x4e, 0x84, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0x17, 0x3a, 0x7e, 0x6c, 0xa8, 0x23, 0x1b, 0xbc, 0x9b, 0xc9, 0xe4, 0xe0, 0x81, 0x4f, 0x26, 0x07, 0xaf, 0x7f, 0x35, 0xd9, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0xc1, 0x33, 0xf1, 0x53, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0x70, 0x22, 0x6c, 0xf0, 0xa6, 0x1e, 0x93, 0x35, 0x9c, 0x23, 0x07, 0x2f, 0x7c, 0x30, 0x59, 0x66, 0xd9, 0xf0, 0x89, 0xcd, 0xaa, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0x6d, 0x9d, 0x83, 0x86, 0xaf, 0xc7, 0x0f, 0x0e, 0x9a, 0x87, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x27, 0x1c, 0xce, 0x6c, 0x68, 0xa8, 0xd3, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x04, 0x1b, 0x63, 0x83, 0x85, 0x30, 0xfb, 0x6d, 0xd0, 0x40, 0x5c, 0xc1, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x6d, 0xa7, 0xe0, 0xa0, 0x45, 0x21, 0x82, 0x83, 0x95, 0x74, 0xfa, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x3c, 0xc2, 0x70, 0xe6, 0xe0, 0x8d, 0x76, 0x26, 0xab, 0x61, 0xe2, 0xd6, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0xe0, 0xe1, 0x61, 0x3a, 0x0f, 0x1e, 0x83, 0x79, 0xb2, 0xe1, 0x44, 0xd8, 0xe0, 0x0d, 0x92, 0x33, 0x1b, 0x2c, 0x66, 0x83, 0x5a, 0x66, 0x39, 0x78, 0x65, 0xc4, 0xcc, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0xaf, 0x8c, 0x98, 0x39, 0x78, 0xa3, 0x9d, 0xc9, 0xe1, 0x14, 0xeb, 0xe0, 0x2d, 0x64, 0x26, 0x07, 0x21, 0x00, 0x7e, 0x1c, 0x3a, 0x0e, 0x1d, 0xbc, 0x23, 0xc4, 0x64, 0xd8, 0x85, 0xdb, 0xe0, 0xb5, 0x9e, 0x1d, 0x87, 0x46, 0x82, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbb, 0xc1, 0x53, 0xeb, 0x4b, 0xd6, 0x10, 0xc3, 0x0d, 0x5e, 0x12, 0x60, 0xb2, 0xc1, 0x6b, 0x3d, 0x3b, 0x36, 0x78, 0xde, 0x88, 0xc9, 0x82, 0x60, 0x83, 0xd7, 0x77, 0x98, 0x1c, 0x3c, 0xc4, 0x33, 0xe3, 0x10, 0xcd, 0x43, 0x0c, 0x87, 0xdd, 0x60, 0xd4, 0x4b, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x51, 0xf1, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x6b, 0x77, 0x90, 0x80, 0x07, 0x72, 0x1c, 0x1a, 0x64, 0x6b, 0xd0, 0x16, 0xc8, 0xca, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x1a, 0x16, 0x59, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xe4, 0xc9, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0x26, 0x6e, 0x83, 0x57, 0xab, 0x98, 0x6c, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0xcd, 0x41, 0xc3, 0x3e, 0x97, 0x1b, 0x26, 0x6e, 0x83, 0x07, 0xd7, 0x98, 0x6c, 0x98, 0xb8, 0x0d, 0x1e, 0x15, 0x39, 0x73, 0xf0, 0x16, 0x32, 0x93, 0x83, 0x10, 0x00, 0x3f, 0x0e, 0x1d, 0x87, 0x0e, 0x5e, 0x27, 0x3a, 0x33, 0xec, 0xc2, 0x6d, 0xf0, 0x98, 0xae, 0x8e, 0x43, 0x23, 0xc1, 0x85, 0xdd, 0x20, 0x18, 0xf6, 0x17, 0x04, 0x1b, 0x8c, 0x9f, 0xae, 0x41, 0xb0, 0xc1, 0xb8, 0x30, 0x1b, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x0e, 0x82, 0x0d, 0x1e, 0x48, 0x0b, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x41, 0xb2, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0xe6, 0xe0, 0x49, 0x5d, 0x1d, 0x1b, 0x26, 0x6e, 0x0d, 0xc5, 0x74, 0x0d, 0x9e, 0x08, 0x5a, 0x72, 0xf0, 0x5e, 0xd2, 0x92, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0x1f, 0x3c, 0x3d, 0x78, 0xa3, 0x9d, 0xc9, 0x86, 0xb9, 0x1f, 0x9c, 0xde, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0xb9, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0xe0, 0x0d, 0x8c, 0x83, 0x97, 0x4b, 0x8d, 0x6c, 0x98, 0xfb, 0x0d, 0xc2, 0x15, 0xe1, 0xe0, 0xed, 0x76, 0x26, 0x87, 0xf3, 0xf8, 0xa0, 0xd9, 0x4b, 0x88, 0x0d, 0x27, 0xc2, 0x06, 0x6f, 0x07, 0x9e, 0x39, 0x68, 0xd5, 0x15, 0xe2, 0xa0, 0x21, 0x58, 0x88, 0x83, 0x47, 0x45, 0xce, 0x0c, 0xbf, 0xf1, 0x7c, 0x83, 0xc7, 0x74, 0x75, 0x6c, 0x88, 0xff, 0x20, 0x58, 0x90, 0x0c, 0xdc, 0x6f, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x34, 0x6e, 0x1a, 0x70, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc3, 0x6e, 0xe8, 0x38, 0x72, 0x68, 0xb8, 0x39, 0xfc, 0x06, 0x8d, 0x64, 0x3d, 0x0d, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x04, 0x0b, 0xbb, 0xb0, 0x0b, 0xbb, 0x41, 0xf1, 0x5b, 0x70, 0x58, 0xdf, 0x5c, 0xd8, 0x85, 0xdd, 0x60, 0xd4, 0x4b, 0x1e, 0xd6, 0x37, 0x17, 0x76, 0x61, 0x17, 0x76, 0xe1, 0x16, 0x0f, 0x5e, 0x9c, 0xa5, 0x72, 0x90, 0x18, 0x9f, 0x71, 0x58, 0xdf, 0xdc, 0x10, 0xc3, 0x61, 0x17, 0x76, 0xe1, 0x36, 0x18, 0xf8, 0xc6, 0x13, 0x2c, 0xfb, 0x1f, 0xd6, 0x37, 0x0f, 0xe9, 0xdc, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x35, 0xc4, 0x70, 0x41, 0xb0, 0x20, 0x19, 0xb4, 0x1c, 0x9c, 0xbd, 0x8c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xaa, 0xf7, 0x1d, 0x9c, 0xf3, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x13, 0x74, 0xfb, 0x3f, 0x0e, 0x1d, 0xa4, 0x55, 0x47, 0x1f, 0xb4, 0x5d, 0xa2, 0x7f, 0x1c, 0xda, 0xe0, 0x31, 0x5d, 0x1d, 0x1b, 0xbc, 0xbc, 0x7a, 0x66, 0x61, 0x17, 0x6e, 0xf1, 0xe0, 0x69, 0x62, 0x2a, 0x07, 0x89, 0xf1, 0x19, 0x6b, 0x90, 0x18, 0x9f, 0x31, 0x08, 0x16, 0x24, 0x03, 0xf7, 0xdb, 0xc1, 0x70, 0x94, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x4e, 0xb0, 0xbe, 0x7f, 0x1c, 0x1a, 0x04, 0x1b, 0x3c, 0x4a, 0x7c, 0xe6, 0xa0, 0x51, 0x68, 0x93, 0x43, 0xb2, 0xe3, 0x10, 0xc3, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xff, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0xb3, 0x61, 0xaf, 0x70, 0x43, 0xea, 0xe0, 0x60, 0x0c, 0x2c, 0x1c, 0x87, 0x06, 0xd9, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0x21, 0x86, 0x83, 0x60, 0x41, 0x32, 0x90, 0xfe, 0x39, 0x38, 0x7b, 0x19, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xe1, 0x39, 0x38, 0x7b, 0x19, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0x61, 0xe2, 0x36, 0x78, 0xb5, 0x8a, 0xc9, 0x86, 0x89, 0xdb, 0xe0, 0xe5, 0xba, 0x33, 0x1b, 0x26, 0x6e, 0x83, 0x76, 0xbd, 0x2a, 0x36, 0x4c, 0xdc, 0x1a, 0x2c, 0x68, 0x98, 0xda, 0xe0, 0x51, 0x91, 0x33, 0xab, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x37, 0x07, 0x4f, 0x13, 0x53, 0x39, 0x78, 0x54, 0xe4, 0xcc, 0xe1, 0x14, 0xeb, 0xe0, 0xa1, 0xbc, 0x33, 0x07, 0x21, 0x00, 0x7e, 0x1c, 0x3a, 0x0e, 0x1d, 0xbc, 0xe9, 0x7c, 0x66, 0x90, 0xad, 0x21, 0x8f, 0x3d, 0x1e, 0xbc, 0xd9, 0x47, 0xe5, 0x70, 0x8a, 0x0d, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x6e, 0x83, 0xf7, 0x92, 0x75, 0x1c, 0x1a, 0x09, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x81, 0x72, 0x7f, 0xb0, 0xd0, 0xfe, 0x66, 0x10, 0x2d, 0x48, 0x0f, 0x46, 0x66, 0xef, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x5b, 0x20, 0x2b, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x68, 0x58, 0x64, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x93, 0x27, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x0f, 0x7e, 0xc9, 0x41, 0x08, 0x80, 0x1f, 0x87, 0x8e, 0x43, 0x07, 0x6f, 0xce, 0x2f, 0x39, 0x1e, 0x2f, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0x99, 0x83, 0xb7, 0xda, 0x71, 0x2c, 0x0e, 0x82, 0x85, 0xdd, 0x60, 0x14, 0xf4, 0x2e, 0xec, 0xc2, 0x6d, 0x68, 0x25, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x6d, 0x9d, 0x0e, 0x8e, 0x59, 0xc5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xa1, 0x71, 0xd1, 0x71, 0x68, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0xaf, 0xd3, 0xc1, 0x31, 0xab, 0xf8, 0xe0, 0x45, 0x0d, 0x34, 0x83, 0x60, 0x41, 0x32, 0xf0, 0xbe, 0xd3, 0xc1, 0x31, 0xab, 0xf8, 0xe0, 0x45, 0x0d, 0x34, 0x1b, 0x3a, 0xa9, 0x1d, 0x62, 0x78, 0xe8, 0xa4, 0x36, 0xec, 0x06, 0x0b, 0x60, 0x7d, 0x16, 0x04, 0x0b, 0xbf, 0xc1, 0xc1, 0x19, 0xfd, 0xe0, 0xb4, 0x82, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0x0d, 0x2d, 0x80, 0x36, 0x8c, 0xcb, 0xa1, 0xd1, 0xd1, 0x71, 0x68, 0xf8, 0x05, 0xd1, 0xc2, 0x0c, 0x82, 0x05, 0xc9, 0xc0, 0xb9, 0x76, 0x30, 0x0c, 0x7d, 0x0e, 0x86, 0xb1, 0xc3, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0x61, 0x2b, 0x30, 0x48, 0x06, 0x8a, 0xdf, 0xc1, 0x8b, 0x84, 0x4b, 0x0e, 0x86, 0xb1, 0xc3, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0x31, 0x1c, 0x04, 0x0b, 0xbf, 0xf0, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x03, 0xb7, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x0d, 0x4a, 0x4e, 0x89, 0x83, 0x10, 0x00, 0x3f, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x82, 0x3b, 0x36, 0xfc, 0xc6, 0xf3, 0x83, 0xf6, 0xca, 0x44, 0x8e, 0x43, 0x07, 0xe5, 0x50, 0xd2, 0xc1, 0x39, 0xf8, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x83, 0x47, 0x5b, 0xd0, 0x1c, 0x87, 0x8e, 0xc7, 0x2b, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x3c, 0x78, 0x20, 0xad, 0xca, 0x20, 0x58, 0xd8, 0x0d, 0x9e, 0x5a, 0x5f, 0xb2, 0x86, 0x18, 0x6e, 0x90, 0xa2, 0x7d, 0xbd, 0x78, 0xf0, 0x08, 0x5d, 0x95, 0x0d, 0x8d, 0x04, 0x37, 0x44, 0xf3, 0xe0, 0x4d, 0x35, 0x14, 0x87, 0x18, 0x0e, 0xbb, 0xc1, 0xa8, 0x97, 0x5c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x78, 0x97, 0x48, 0xc4, 0x41, 0x23, 0xdd, 0xf6, 0x87, 0x46, 0x2d, 0x83, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0xc3, 0x22, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x3c, 0x59, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0xd6, 0x30, 0xf7, 0x83, 0xdb, 0x1b, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0xdf, 0xe0, 0xe5, 0x18, 0x20, 0x1b, 0xea, 0xc8, 0x06, 0xef, 0x43, 0x3a, 0x39, 0x78, 0xc8, 0xd2, 0xc9, 0xc1, 0xeb, 0x5f, 0x4d, 0x36, 0x9c, 0x08, 0x1b, 0x3c, 0x28, 0x87, 0x66, 0x83, 0xc5, 0x6c, 0x50, 0xcb, 0x2c, 0x07, 0x4f, 0x8f, 0x55, 0x39, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0xc3, 0x89, 0xb0, 0xc1, 0xa3, 0x70, 0x68, 0xd6, 0x70, 0x8e, 0x1c, 0x62, 0xb8, 0xcc, 0xb2, 0xe1, 0xeb, 0x97, 0x0d, 0xde, 0x08, 0xe5, 0x70, 0x50, 0x50, 0x64, 0x1e, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0xf0, 0xaa, 0x20, 0x9a, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x39, 0x78, 0x84, 0xae, 0xca, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0x59, 0xc3, 0x0c, 0x6d, 0xf0, 0x72, 0xd0, 0x92, 0x0d, 0x27, 0xc2, 0x06, 0x2f, 0x07, 0x2d, 0xd9, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0x2c, 0x54, 0xa6, 0x3a, 0x78, 0xfc, 0x86, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x80, 0x18, 0xc7, 0x41, 0x4b, 0x99, 0x03, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x78, 0x47, 0x12, 0xcd, 0x86, 0x89, 0xdb, 0xe0, 0x8d, 0x76, 0x26, 0x1b, 0xea, 0xf8, 0xc0, 0x93, 0x85, 0x1d, 0x84, 0x00, 0xf8, 0x71, 0xe8, 0x38, 0x74, 0xf0, 0xec, 0x17, 0x9a, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0xec, 0x06, 0x0b, 0x44, 0xfd, 0xd7, 0x10, 0xc3, 0x05, 0xc1, 0x06, 0x2f, 0x4f, 0x25, 0x38, 0x58, 0xc5, 0xc9, 0x7f, 0x18, 0x97, 0x0d, 0x47, 0xfb, 0x20, 0xd8, 0x20, 0x71, 0x6f, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x05, 0xc9, 0x40, 0x9c, 0x0e, 0x02, 0xde, 0x7f, 0x0d, 0x59, 0xbb, 0x0d, 0x3d, 0x84, 0x86, 0xdf, 0x20, 0xc1, 0x00, 0xe1, 0xa0, 0x99, 0x68, 0xa7, 0xc3, 0xb8, 0x1c, 0x87, 0x16, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x17, 0x17, 0x04, 0x1b, 0x34, 0xc8, 0xe5, 0xb2, 0x38, 0x08, 0x36, 0x48, 0x46, 0xfa, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd9, 0xa0, 0xfd, 0x7f, 0xa8, 0x83, 0xb3, 0x97, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xda, 0xb0, 0x15, 0x18, 0x24, 0x03, 0xe1, 0x3a, 0x78, 0x91, 0x70, 0xc9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe7, 0xc8, 0xde, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x94, 0x1d, 0x9c, 0xf3, 0x8e, 0x0f, 0x8e, 0x2a, 0xce, 0xc7, 0xe3, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x86, 0x18, 0x6e, 0xf0, 0xa6, 0xc2, 0x8e, 0x0d, 0xf1, 0xdf, 0x10, 0xcd, 0x83, 0xe1, 0xc0, 0x71, 0x3c, 0x3e, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0xbc, 0x07, 0x07, 0x63, 0x71, 0xd8, 0x85, 0x5d, 0xe8, 0x41, 0x79, 0x64, 0x70, 0x58, 0xdf, 0x5c, 0xd8, 0x0d, 0xde, 0xbb, 0x83, 0xb1, 0xf0, 0x0b, 0xa2, 0x05, 0xf6, 0xef, 0x87, 0xdd, 0xb0, 0x6b, 0xb0, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x86, 0xad, 0xc0, 0x20, 0x19, 0x28, 0x7f, 0x07, 0x2f, 0x12, 0x2e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x04, 0x99, 0x8d, 0xc5, 0x41, 0xb4, 0xd0, 0x83, 0x91, 0xff, 0x70, 0x48, 0x1d, 0x1c, 0x8f, 0x8f, 0x43, 0x07, 0xef, 0xe1, 0x29, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x5e, 0x68, 0x5c, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xa9, 0xda, 0xcb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe7, 0xe0, 0xef, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x0f, 0x1e, 0x29, 0x4e, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x93, 0x27, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0x28, 0xa6, 0xab, 0x61, 0x86, 0x36, 0x78, 0x39, 0x68, 0xc9, 0x86, 0x13, 0x61, 0x83, 0x97, 0x83, 0x96, 0x6c, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x16, 0x2a, 0x53, 0x1d, 0x3c, 0x07, 0xed, 0x63, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x42, 0x07, 0x63, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xed, 0xc1, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x04, 0x08, 0x63, 0xc3, 0x1b, 0x77, 0x07, 0xaf, 0xba, 0xf7, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x3f, 0xc2, 0xd8, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5e, 0x11, 0xc6, 0xe1, 0xc1, 0x9b, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0x3d, 0x18, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x00, 0x61, 0x6c, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0xac, 0xb6, 0xa2, 0x3b, 0x78, 0xd6, 0x21, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6d, 0x0f, 0xc6, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0x8a, 0x30, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0x8f, 0x30, 0x0e, 0x1a, 0xf3, 0xb2, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x98, 0x30, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x75, 0xc2, 0xd8, 0xf0, 0xc6, 0xdd, 0xc1, 0xab, 0xfd, 0x3d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0xad, 0x30, 0x36, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x40, 0x85, 0xb1, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0x0f, 0x4a, 0x6e, 0xb0, 0xfc, 0x78, 0x7b, 0xc3, 0xbb, 0x3d, 0x1b, 0x3c, 0x67, 0xe0, 0x63, 0x0d, 0x1f, 0xb5, 0x1f, 0x3c, 0x9a, 0xe0, 0xa3, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x4c, 0x18, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x3a, 0x61, 0x6c, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0xac, 0x1d, 0xed, 0x3e, 0x78, 0x74, 0x26, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x11, 0x13, 0xc6, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0xa8, 0x30, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0xad, 0x30, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x0f, 0x9e, 0xfb, 0x49, 0x73, 0x70, 0x00, 0x4d, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0xe2, 0x30, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x9d, 0xc3, 0xd8, 0xf0, 0xc6, 0xdd, 0xc1, 0xab, 0x21, 0x3e, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0xf2, 0x30, 0x0e, 0x8e, 0xe1, 0x06, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0xe2, 0x30, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x9d, 0xc3, 0xd8, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xa2, 0xb9, 0xe1, 0x8d, 0xbb, 0x39, 0x78, 0xde, 0x1b, 0xc6, 0xc1, 0xe3, 0x63, 0x69, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0xe2, 0x30, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0xf2, 0x30, 0x0e, 0x1a, 0xba, 0x83, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0xfa, 0x30, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xfe, 0xc3, 0xd8, 0xf0, 0xc6, 0xdd, 0xc1, 0x13, 0x2d, 0x3e, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x0f, 0x31, 0x36, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x52, 0x88, 0xb1, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0x0f, 0x4a, 0x6e, 0xb0, 0xfc, 0x78, 0x7b, 0xc3, 0xbb, 0x3d, 0x1b, 0xbc, 0x5e, 0xe3, 0x63, 0x0d, 0x1f, 0xb5, 0x1f, 0xbc, 0x92, 0xe3, 0xa3, 0x83, 0x73, 0xbd, 0xc1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x65, 0x7d, 0x18, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xff, 0x61, 0x6c, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0x1c, 0x3c, 0x72, 0x0f, 0xe3, 0xe0, 0xf1, 0xc0, 0x34, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x65, 0x7d, 0x18, 0x1b, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x29, 0xc4, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x3d, 0xc4, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x78, 0xb6, 0x31, 0xcd, 0xc1, 0x01, 0x34, 0x69, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x97, 0x12, 0x63, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x96, 0x4b, 0x8c, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x55, 0x67, 0xe7, 0x1b, 0xde, 0xb8, 0x3b, 0x78, 0x51, 0xc8, 0xc7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2f, 0x25, 0xc6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x24, 0x27, 0xc6, 0x41, 0x43, 0x77, 0x10, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x78, 0x48, 0x20, 0xcd, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x3b, 0x20, 0x69, 0x0e, 0x1a, 0xf0, 0xa7, 0x38, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xb0, 0x1b, 0x3c, 0x69, 0x0f, 0x63, 0x41, 0xb4, 0xa0, 0x76, 0xd8, 0x0d, 0xbb, 0x06, 0x0b, 0xbb, 0x41, 0x91, 0xab, 0x70, 0x58, 0xdf, 0x3c, 0x08, 0x4a, 0xef, 0xc3, 0x0a, 0xed, 0xb0, 0x1b, 0xbc, 0x49, 0x09, 0x63, 0x41, 0xb0, 0xc1, 0xbb, 0x44, 0x22, 0x0e, 0x96, 0xc4, 0x89, 0x0d, 0xbb, 0xc1, 0x63, 0xde, 0x30, 0x16, 0x44, 0x0b, 0xaa, 0x57, 0x9c, 0x83, 0x47, 0x8a, 0x93, 0x6c, 0xf0, 0xf6, 0xaf, 0x92, 0x83, 0xa3, 0x38, 0xfa, 0xc1, 0x18, 0x7b, 0x3a, 0xac, 0xd0, 0x0e, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x6e, 0x83, 0xa7, 0x65, 0x62, 0x1c, 0xa2, 0x39, 0x88, 0x16, 0xa8, 0xbf, 0x83, 0x60, 0x83, 0x67, 0xbd, 0xd1, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x82, 0xcc, 0xc6, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0x5e, 0x32, 0x06, 0x70, 0xd0, 0x0c, 0xa3, 0xd2, 0x21, 0x0d, 0x77, 0x3c, 0x3e, 0x0e, 0x1d, 0x56, 0x68, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0xe3, 0xc1, 0xeb, 0xe0, 0x55, 0x0e, 0xa7, 0xd8, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0xd3, 0x12, 0x68, 0x16, 0x87, 0x5d, 0xd8, 0x85, 0xdb, 0xa0, 0x08, 0x4d, 0x38, 0x18, 0xf0, 0xc8, 0x0b, 0xbb, 0x70, 0x1b, 0x62, 0x78, 0xd0, 0xf6, 0x9e, 0xd3, 0xc2, 0x2e, 0xdc, 0x1a, 0x14, 0x0c, 0x8f, 0x07, 0x6f, 0x37, 0x88, 0x38, 0x68, 0xe7, 0xd6, 0xe9, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x61, 0x17, 0x76, 0xa1, 0x07, 0x67, 0xf5, 0xf3, 0x85, 0x5d, 0xb8, 0x0d, 0x1e, 0xf6, 0x86, 0x71, 0x68, 0xc6, 0xb3, 0x70, 0x07, 0x4d, 0xb0, 0x0b, 0x1c, 0x8e, 0xf6, 0xc3, 0xd1, 0xbe, 0x86, 0x18, 0x6e, 0x88, 0xe1, 0x06, 0x6f, 0xff, 0x2a, 0x19, 0x04, 0x1b, 0x34, 0x79, 0xb2, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x3a, 0xb2, 0xc1, 0x53, 0x67, 0x4d, 0x0e, 0xde, 0x8c, 0x34, 0x73, 0x70, 0x14, 0x47, 0x3f, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x3c, 0x90, 0x9f, 0x66, 0x61, 0x17, 0x6e, 0xf1, 0x60, 0xf9, 0xe4, 0xed, 0xa1, 0x19, 0xcf, 0xc2, 0x6e, 0x30, 0x3c, 0x95, 0x17, 0x76, 0xe1, 0x16, 0x03, 0x8f, 0x2d, 0x6c, 0x3c, 0x78, 0xe6, 0x47, 0xc5, 0xc2, 0x6d, 0x88, 0xe1, 0xc1, 0x2b, 0x58, 0x4e, 0x0e, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x0d, 0x31, 0xdc, 0x10, 0xc3, 0x0d, 0x16, 0x9a, 0x18, 0x0d, 0x82, 0x0d, 0x9a, 0x3c, 0x59, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf1, 0xa0, 0x15, 0x85, 0xff, 0x83, 0x22, 0x57, 0xe1, 0x38, 0x34, 0xec, 0xc2, 0x6e, 0xf0, 0x40, 0x7e, 0x9a, 0x85, 0x5d, 0xb8, 0xc5, 0xc0, 0xd3, 0x2b, 0x73, 0x0f, 0xcd, 0x78, 0x16, 0x76, 0x83, 0xe1, 0xa9, 0xbc, 0xb0, 0x0b, 0xb7, 0x18, 0x78, 0x6c, 0x61, 0xe7, 0xc1, 0x33, 0x3f, 0x2a, 0x0e, 0xde, 0x9d, 0x50, 0x73, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x5f, 0x43, 0x0c, 0x37, 0xc4, 0x70, 0x83, 0x85, 0x26, 0x46, 0x83, 0x60, 0x83, 0x26, 0x4f, 0x56, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0xdf, 0xe0, 0x61, 0x0f, 0x35, 0x13, 0x5c, 0xf7, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0x83, 0x07, 0xf2, 0xd3, 0x2c, 0xec, 0x06, 0xcf, 0x8e, 0xa8, 0x59, 0xd8, 0x0d, 0x86, 0xa7, 0xf2, 0xc2, 0x2e, 0xdc, 0xe2, 0xc1, 0xe2, 0xce, 0xec, 0x83, 0x67, 0x7e, 0x54, 0x1c, 0xbc, 0x3b, 0xa1, 0xe6, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0xbe, 0x86, 0x18, 0x6e, 0x88, 0xe1, 0x06, 0x0b, 0x4d, 0x8c, 0x06, 0xc1, 0x06, 0x4d, 0x9e, 0xac, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0x36, 0x78, 0x39, 0x68, 0xc9, 0x86, 0x13, 0x61, 0x83, 0x97, 0x83, 0x96, 0x6c, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x16, 0x2a, 0x53, 0x1d, 0x3c, 0x32, 0xf6, 0x63, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf0, 0x55, 0x63, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfc, 0x58, 0x8d, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x0a, 0x41, 0xdb, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x36, 0x5a, 0x8d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6e, 0x5b, 0x8d, 0x0d, 0x5f, 0xbf, 0x6c, 0xb0, 0x36, 0x26, 0x6f, 0x83, 0x85, 0xb2, 0x4f, 0x1b, 0x34, 0xd3, 0x39, 0xb0, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x2d, 0x80, 0x0e, 0xac, 0xe1, 0x47, 0x98, 0x81, 0xa7, 0x0b, 0x83, 0xa7, 0x0b, 0x0f, 0xc6, 0x4f, 0xd7, 0x06, 0x05, 0xc1, 0xec, 0x06, 0x07, 0xcd, 0xc3, 0x0d, 0xc6, 0x4f, 0xd7, 0x41, 0x78, 0xaa, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xc7, 0x6a, 0x6c, 0xf8, 0xdc, 0x65, 0x83, 0x01, 0xb4, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xcd, 0xab, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xf4, 0xab, 0xb1, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0xc1, 0xc6, 0x38, 0x38, 0x7e, 0xff, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x07, 0x9f, 0xd4, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xbe, 0x6a, 0x6c, 0xf8, 0xdc, 0x65, 0x83, 0x45, 0xfc, 0xb4, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x59, 0xc4, 0x1a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0xc6, 0x1a, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x1b, 0xde, 0xd6, 0x39, 0x78, 0x71, 0x21, 0xc8, 0xc1, 0x01, 0x34, 0xe9, 0x60, 0x25, 0x9d, 0xfe, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0xcf, 0x36, 0xa9, 0x99, 0xe0, 0xb8, 0x3f, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x3c, 0x90, 0x9f, 0x66, 0x61, 0x17, 0x6e, 0xf1, 0xd0, 0xfc, 0xe0, 0xd0, 0x8c, 0x67, 0x61, 0x37, 0x18, 0x9e, 0xca, 0x0b, 0xb7, 0x18, 0x78, 0x66, 0x61, 0xf4, 0xc1, 0x33, 0x3f, 0x2a, 0x0e, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x6b, 0x88, 0xe1, 0x86, 0x18, 0x6e, 0xb0, 0xd0, 0xc4, 0x68, 0x10, 0x6c, 0xd0, 0xe4, 0xc9, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0xdf, 0x60, 0x01, 0x75, 0xfa, 0x41, 0x2b, 0x12, 0xff, 0x1b, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0x1f, 0xf0, 0xcc, 0xc2, 0xe8, 0x0d, 0x13, 0xb7, 0x06, 0x0b, 0x1a, 0xa6, 0xd6, 0x30, 0xf7, 0x1b, 0x8c, 0x04, 0x86, 0x83, 0x16, 0xdb, 0x06, 0x66, 0x0d, 0x73, 0xbf, 0xc1, 0x48, 0x60, 0xd8, 0x30, 0x71, 0x1b, 0xb4, 0xd8, 0x36, 0xb0, 0x61, 0xee, 0x07, 0xaf, 0x37, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x70, 0xf8, 0xe0, 0x19, 0x46, 0x34, 0x1b, 0xe6, 0x7e, 0xf0, 0xf8, 0xe0, 0x91, 0xac, 0x26, 0x87, 0x53, 0x6c, 0x83, 0x05, 0x0d, 0x53, 0x6b, 0x98, 0xfb, 0x01, 0x8f, 0x2c, 0x4d, 0x3e, 0x68, 0xb1, 0x6d, 0x60, 0x35, 0xcc, 0xfd, 0x80, 0x47, 0x96, 0x26, 0x6f, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0xe0, 0xee, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x0f, 0x0e, 0x6f, 0xa8, 0xe3, 0x07, 0xcb, 0x66, 0xf2, 0x36, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xe0, 0x7d, 0x52, 0x35, 0x1b, 0x2c, 0x68, 0x98, 0x5a, 0xc3, 0xdc, 0x0f, 0x78, 0x64, 0x69, 0xf2, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x0f, 0xee, 0x6e, 0x98, 0xb8, 0x0d, 0x9e, 0xdf, 0x55, 0xb3, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x06, 0xef, 0x93, 0xaa, 0xd9, 0x60, 0x41, 0xc3, 0xd4, 0x06, 0x6f, 0xd2, 0xaa, 0x59, 0x0d, 0x73, 0x3f, 0xe0, 0x91, 0xa5, 0xc9, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0x3f, 0xb8, 0xbb, 0x61, 0xe2, 0x36, 0x78, 0x7e, 0x57, 0xcd, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0xb9, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x28, 0xa6, 0xab, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xc1, 0xb2, 0xb4, 0xa1, 0x98, 0xae, 0xc1, 0x83, 0x37, 0x30, 0x0e, 0x5e, 0xb4, 0x19, 0x72, 0xf0, 0x3c, 0x23, 0x9a, 0x83, 0xe6, 0x42, 0x29, 0x0e, 0xe7, 0xf1, 0x41, 0x2b, 0x9c, 0x14, 0x07, 0x61, 0xc1, 0xb4, 0x61, 0xee, 0x37, 0x08, 0x57, 0x84, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x30, 0x9d, 0x07, 0xaf, 0x65, 0xab, 0xd9, 0x70, 0x22, 0x6c, 0xf0, 0xce, 0xb9, 0x9a, 0x83, 0xf6, 0x61, 0x29, 0x0e, 0x1e, 0xbc, 0x81, 0xb1, 0x41, 0xc3, 0x97, 0x10, 0x6b, 0x98, 0xb8, 0x0d, 0x5a, 0xd3, 0x84, 0x38, 0x78, 0xf0, 0x06, 0xc6, 0x06, 0x8b, 0xd9, 0xa0, 0x96, 0x59, 0x36, 0x7c, 0xd4, 0x7e, 0xf0, 0xaa, 0xf1, 0x90, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x36, 0x9c, 0x08, 0x1b, 0xbc, 0x5d, 0xad, 0x66, 0x83, 0xc5, 0x6c, 0x50, 0xcb, 0x2c, 0x1b, 0x3e, 0xb1, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x9a, 0x94, 0x63, 0x0d, 0x9f, 0xbb, 0x6c, 0x30, 0x12, 0x18, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0x4e, 0x39, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0x52, 0x39, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x23, 0xd1, 0x43, 0xd6, 0xf0, 0x51, 0xfb, 0xc1, 0x63, 0xd4, 0x43, 0x3a, 0x38, 0xd7, 0x1b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x93, 0x72, 0x6c, 0xf8, 0xdc, 0x65, 0xc0, 0x23, 0x4b, 0x93, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x69, 0x39, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0x6e, 0x39, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x1b, 0xdf, 0x43, 0xd6, 0xf0, 0x51, 0xfb, 0xc1, 0x5b, 0xe2, 0x43, 0xd6, 0xf0, 0x51, 0xfb, 0xc1, 0xa3, 0xe5, 0x43, 0x3a, 0x38, 0x80, 0x26, 0x1d, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0xe0, 0x05, 0x7d, 0x35, 0x1b, 0x26, 0x6e, 0x0d, 0x16, 0x34, 0x4c, 0x6d, 0xd0, 0x86, 0xdd, 0xc0, 0x6a, 0x98, 0xfb, 0xc1, 0xd9, 0x0d, 0x13, 0xb7, 0xc1, 0x43, 0xd0, 0x6a, 0x36, 0x4c, 0xdc, 0x1a, 0x2c, 0x68, 0x98, 0xda, 0xa0, 0x0d, 0xbb, 0x81, 0xd5, 0x30, 0xf7, 0x83, 0xb3, 0x1b, 0x26, 0x6e, 0x83, 0x87, 0xa0, 0xd5, 0x6c, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0xe0, 0xec, 0x86, 0x3a, 0xb2, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x6f, 0x10, 0xec, 0x6d, 0x1b, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x61, 0x3a, 0x37, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0xdf, 0x20, 0x58, 0x96, 0x36, 0xcc, 0xd0, 0x06, 0x6f, 0x57, 0xab, 0xd9, 0x70, 0x22, 0x6c, 0xf0, 0x76, 0xb5, 0x9a, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xac, 0x5f, 0x8e, 0x0d, 0x5f, 0xbf, 0x6c, 0xb0, 0x36, 0x26, 0x6f, 0x83, 0x85, 0xb2, 0x4f, 0x1b, 0x34, 0xd3, 0x39, 0xb0, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x2d, 0x80, 0x0e, 0x6c, 0xf0, 0xca, 0x98, 0x9a, 0x43, 0xea, 0xe0, 0xa0, 0xad, 0xd2, 0x81, 0x83, 0x95, 0x74, 0xfa, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x6d, 0x98, 0xfb, 0x0d, 0x82, 0x70, 0xe9, 0xe0, 0x91, 0x6a, 0x35, 0x87, 0xf3, 0xf8, 0xa0, 0x15, 0x4e, 0x8a, 0x0d, 0x27, 0xc2, 0x06, 0x0f, 0xd9, 0xac, 0x39, 0x68, 0x1f, 0x96, 0xe2, 0x70, 0x1e, 0x1f, 0xb4, 0xee, 0x0c, 0xb2, 0xe1, 0x44, 0xd8, 0xe0, 0x99, 0x98, 0x35, 0x07, 0x8d, 0x71, 0x83, 0x1c, 0xb4, 0xdf, 0x0d, 0xb2, 0x61, 0xee, 0x07, 0x97, 0x0f, 0xde, 0x7d, 0x59, 0x73, 0x38, 0xc5, 0xda, 0x60, 0x41, 0xc3, 0xd4, 0x06, 0x2d, 0xf8, 0x83, 0xac, 0x86, 0xb9, 0x1f, 0x5c, 0x3e, 0x78, 0x81, 0x65, 0xcd, 0xe1, 0x14, 0xeb, 0x70, 0x8a, 0xb5, 0xc1, 0x82, 0x86, 0xa9, 0x0d, 0x5a, 0xf0, 0x07, 0x99, 0x35, 0xcc, 0xfd, 0xe0, 0xf2, 0xc1, 0x03, 0x26, 0x6b, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x6b, 0xc3, 0xc4, 0xad, 0xc1, 0x82, 0x86, 0xa9, 0x0d, 0xda, 0xb0, 0x1b, 0x58, 0x0d, 0x73, 0x3f, 0x38, 0xbb, 0x61, 0xe2, 0x36, 0x78, 0xae, 0x58, 0xcd, 0x86, 0x89, 0x5b, 0x83, 0x05, 0x0d, 0x53, 0x1b, 0xb4, 0x61, 0x37, 0x30, 0x6b, 0x98, 0xfb, 0xc1, 0xd9, 0x0d, 0x13, 0xb7, 0xc1, 0x73, 0xc5, 0x6a, 0x36, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x70, 0x76, 0x43, 0x1d, 0x59, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x4c, 0xe7, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x37, 0x08, 0xf6, 0xb6, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x30, 0x9d, 0x1b, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x6f, 0x10, 0x2c, 0x4b, 0x1b, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x61, 0x3a, 0x37, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0x0d, 0x73, 0xbf, 0x41, 0xb8, 0x22, 0x6c, 0x28, 0xa6, 0x1b, 0xbc, 0x95, 0xad, 0xe6, 0xe0, 0x41, 0x73, 0x35, 0x07, 0x0f, 0xde, 0xc0, 0x38, 0x78, 0xb5, 0x5d, 0xcd, 0x86, 0x13, 0x61, 0x83, 0x87, 0x0b, 0xd7, 0x1c, 0x3c, 0xf0, 0xb3, 0xe6, 0xe0, 0xad, 0xa7, 0x35, 0x87, 0xf3, 0xf8, 0xa0, 0x15, 0x4e, 0x8a, 0x0d, 0x27, 0xc2, 0x06, 0xef, 0xff, 0xad, 0x39, 0x68, 0x1f, 0x96, 0xe2, 0x70, 0x1e, 0x1f, 0xb4, 0xee, 0x0c, 0xb2, 0xe1, 0x44, 0xd8, 0xe0, 0x75, 0xbd, 0x35, 0x07, 0x8d, 0x71, 0x83, 0x1c, 0xb4, 0xdf, 0x0d, 0xb2, 0x61, 0xee, 0x07, 0x97, 0x0f, 0x9e, 0xcb, 0x5b, 0x73, 0x38, 0xc5, 0x36, 0x58, 0xd0, 0x30, 0xb5, 0x41, 0x0b, 0xfe, 0x20, 0xb3, 0x86, 0xb9, 0x1f, 0x5c, 0x3e, 0x78, 0xb8, 0x6e, 0xcd, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x6d, 0xb0, 0xa0, 0x61, 0x6a, 0x83, 0x16, 0xfc, 0x41, 0x66, 0x0d, 0x73, 0x3f, 0xb8, 0x7c, 0xf0, 0xea, 0xdb, 0x9a, 0xc3, 0x29, 0x36, 0x1b, 0xbc, 0x49, 0xab, 0xe6, 0x70, 0x8a, 0x6d, 0x98, 0xb8, 0x35, 0x58, 0xd0, 0x30, 0xb5, 0x41, 0x1b, 0x76, 0x03, 0xb3, 0x86, 0xb9, 0x1f, 0x9c, 0xdd, 0x30, 0x71, 0x1b, 0x3c, 0xa1, 0xab, 0x66, 0xc3, 0xc4, 0xad, 0xc1, 0x82, 0x86, 0xa9, 0x0d, 0xda, 0xb0, 0x1b, 0x58, 0x0d, 0x73, 0x3f, 0x38, 0xbb, 0x61, 0xe2, 0x36, 0x78, 0x42, 0x57, 0xcd, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x0f, 0xce, 0x6e, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x86, 0xe9, 0xdc, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xc1, 0xde, 0xb6, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0x73, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0x0d, 0x82, 0x65, 0x69, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x4c, 0xe7, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x37, 0x08, 0x57, 0x84, 0x0d, 0x75, 0x64, 0x83, 0xd7, 0xb2, 0xd5, 0x1c, 0xb4, 0x65, 0x4a, 0x71, 0xf0, 0xe0, 0x0d, 0x8c, 0x83, 0x57, 0xdb, 0xd5, 0x6c, 0x38, 0x11, 0x36, 0x78, 0x05, 0x79, 0xcd, 0xc1, 0x03, 0x3f, 0x6b, 0x36, 0xcc, 0xfd, 0x06, 0x41, 0xb8, 0xb4, 0x61, 0x86, 0x36, 0x78, 0xb8, 0x70, 0xcd, 0x86, 0x13, 0x61, 0x83, 0x87, 0x0b, 0xd7, 0x1c, 0x3c, 0x87, 0xaf, 0xe6, 0x70, 0x1e, 0x1f, 0xb4, 0xc2, 0x49, 0xb1, 0xe1, 0x44, 0xd8, 0xe0, 0x31, 0xe1, 0x35, 0x07, 0xed, 0xc3, 0x52, 0x1c, 0xce, 0xe3, 0x83, 0xd6, 0x9d, 0x41, 0x36, 0x9c, 0x08, 0x1b, 0x3c, 0xd5, 0xbb, 0xe6, 0xa0, 0x31, 0x6e, 0x90, 0x83, 0xf6, 0xbb, 0x41, 0x36, 0xcc, 0xfd, 0xe0, 0xf2, 0xc1, 0xdb, 0xbb, 0x6b, 0x0e, 0xa7, 0x58, 0x1b, 0x2c, 0x68, 0x98, 0xda, 0xa0, 0x05, 0x7f, 0x90, 0x59, 0xc3, 0xdc, 0x0f, 0x2e, 0x1f, 0xbc, 0x82, 0xbb, 0xe6, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x0d, 0x16, 0x34, 0x4c, 0xad, 0x61, 0xee, 0x07, 0x97, 0x0f, 0x1e, 0x91, 0x5d, 0xb3, 0x06, 0x2d, 0xf8, 0x83, 0x1c, 0x4e, 0xb1, 0x0e, 0xa7, 0x58, 0x07, 0x8f, 0xc1, 0x3c, 0xd9, 0xa0, 0xe1, 0x4b, 0x88, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0xc0, 0x33, 0x0b, 0xa3, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x0d, 0xde, 0x76, 0x57, 0x73, 0xf0, 0x6a, 0xbb, 0x9a, 0x0d, 0x27, 0xc2, 0x06, 0x2f, 0xea, 0xaf, 0x39, 0x78, 0x0e, 0x5f, 0xcd, 0xc1, 0x0b, 0xfa, 0x6a, 0x0e, 0x1e, 0x83, 0x79, 0xb2, 0xc1, 0x62, 0x36, 0xa8, 0x83, 0x57, 0xf0, 0xc4, 0x6c, 0x38, 0x11, 0x36, 0x78, 0xb0, 0x53, 0xcd, 0x06, 0x8b, 0xd9, 0xa0, 0x96, 0x59, 0x0e, 0x9e, 0xdc, 0x13, 0x73, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xc1, 0x93, 0x7b, 0x62, 0x06, 0xc1, 0x82, 0x60, 0x83, 0xe5, 0x29, 0x25, 0x83, 0x64, 0x98, 0x83, 0xa6, 0xa2, 0x4d, 0x0e, 0x5e, 0xb7, 0xaa, 0x71, 0x1c, 0x3a, 0x68, 0x8b, 0x90, 0xe9, 0x10, 0xc3, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x86, 0x68, 0x0e, 0xbf, 0x20, 0xda, 0xa0, 0x28, 0xbd, 0x3b, 0x1e, 0x0f, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x04, 0x0b, 0xbb, 0xc1, 0xa8, 0x97, 0x5c, 0x83, 0x85, 0x26, 0x46, 0x87, 0x7c, 0xed, 0x20, 0x5b, 0x43, 0xfb, 0xf5, 0x83, 0xd6, 0xf9, 0x00, 0x16, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0xe6, 0x60, 0xf9, 0xe0, 0xef, 0x61, 0x3a, 0x37, 0x78, 0x1c, 0x50, 0xc7, 0x21, 0x5f, 0xbb, 0xc1, 0x9b, 0x0a, 0x3b, 0x36, 0xc4, 0x7f, 0x43, 0xea, 0xe0, 0x60, 0xfc, 0x4b, 0x1e, 0x8f, 0x07, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0xd8, 0x0d, 0x79, 0xac, 0x05, 0xd9, 0x1a, 0xf2, 0xd8, 0xe3, 0xc1, 0x23, 0xd8, 0x56, 0x0e, 0xa7, 0xd8, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0x3c, 0x24, 0x6b, 0xe3, 0xd0, 0x48, 0x70, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0xde, 0x5b, 0x90, 0x71, 0x68, 0x24, 0xb8, 0x21, 0x86, 0xc3, 0x6d, 0xf0, 0x90, 0x83, 0x8c, 0x43, 0x23, 0xc1, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x79, 0xec, 0xf1, 0xe0, 0x31, 0x7a, 0x2b, 0x83, 0x60, 0x41, 0x32, 0x70, 0xfb, 0x1c, 0x0c, 0xff, 0xd8, 0x43, 0x07, 0x8d, 0x61, 0x17, 0x6e, 0x83, 0x87, 0x64, 0x6d, 0x1c, 0x84, 0x14, 0xf8, 0xc2, 0x2f, 0x88, 0x16, 0xc8, 0xee, 0x0f, 0xbb, 0xb0, 0x0b, 0xb7, 0x78, 0xf0, 0x50, 0xc1, 0x95, 0x83, 0xb6, 0x47, 0x9c, 0x16, 0x76, 0xa1, 0x13, 0x56, 0x0b, 0xbb, 0xb0, 0x0b, 0x9d, 0x50, 0xb5, 0x70, 0x1b, 0x72, 0xdf, 0x13, 0x4e, 0x1d, 0x8e, 0xf6, 0x85, 0x5d, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x82, 0x77, 0xe7, 0xe0, 0x98, 0x55, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0x20, 0xaa, 0xc7, 0xa1, 0xe1, 0x36, 0x78, 0xc8, 0x41, 0xc6, 0x71, 0xe8, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x2f, 0xc8, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0xbc, 0x14, 0x89, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x2b, 0x96, 0x48, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0xd7, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x37, 0x07, 0xcf, 0x7c, 0x5c, 0x39, 0x78, 0xe6, 0xe3, 0xca, 0x71, 0xe8, 0x38, 0x74, 0x88, 0xe1, 0xc1, 0xa3, 0x72, 0x27, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0x32, 0x30, 0x55, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa5, 0x6a, 0x2f, 0x0b, 0xbf, 0xf1, 0x7c, 0x43, 0x0c, 0x37, 0x78, 0x2f, 0x59, 0xc7, 0x06, 0x41, 0x16, 0x3f, 0x08, 0x36, 0x38, 0x4e, 0xc7, 0x0f, 0x92, 0x21, 0x07, 0x8f, 0x90, 0x75, 0x38, 0x18, 0xf8, 0x21, 0xc7, 0xa1, 0x61, 0x37, 0x78, 0x4c, 0x43, 0xc6, 0x82, 0x68, 0xc1, 0xd7, 0x41, 0xb0, 0x20, 0x19, 0x48, 0xdf, 0x1d, 0x9c, 0xbd, 0x8c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0x30, 0x1d, 0x9c, 0xce, 0x90, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x25, 0xc8, 0xf5, 0x1f, 0xc6, 0xe5, 0x38, 0x74, 0x1c, 0x3a, 0x64, 0x2b, 0x06, 0xd9, 0x1a, 0xda, 0xaf, 0x1f, 0xbc, 0xd5, 0x21, 0x63, 0xd8, 0x05, 0xc1, 0xc2, 0x2f, 0x48, 0x06, 0xce, 0xb7, 0x83, 0xe1, 0x1f, 0x7b, 0x50, 0x0e, 0x25, 0x1d, 0xbc, 0x39, 0xc7, 0x66, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0x5e, 0x4d, 0x64, 0x73, 0x50, 0x32, 0x34, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x4a, 0xef, 0xe1, 0x37, 0x9e, 0xaf, 0x41, 0x5b, 0x4c, 0x00, 0x83, 0x64, 0xc8, 0xc1, 0xb9, 0xfe, 0x78, 0x0d, 0x1e, 0xe8, 0x56, 0x32, 0x48, 0x06, 0xe2, 0x74, 0x30, 0x1c, 0xa5, 0xd7, 0xe0, 0x71, 0x7a, 0x25, 0x83, 0x60, 0x83, 0x86, 0x36, 0x57, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x41, 0xb0, 0xc1, 0xe1, 0x4a, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xf2, 0x66, 0xcd, 0xf0, 0x1b, 0xcf, 0xc7, 0x0d, 0x56, 0x8b, 0x20, 0x1d, 0x3c, 0xbf, 0x88, 0xe4, 0x38, 0x74, 0x3c, 0x3f, 0x0e, 0xad, 0xc1, 0x63, 0xfd, 0x4a, 0x06, 0xc1, 0x06, 0x0d, 0x6d, 0xae, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0x82, 0x60, 0x83, 0xc3, 0x95, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x94, 0xe2, 0x9a, 0xe1, 0x37, 0x9e, 0x8f, 0x1b, 0xac, 0x16, 0x41, 0x3a, 0x78, 0x2f, 0x1a, 0xc9, 0x71, 0xe8, 0x78, 0x7e, 0x1c, 0x3a, 0xc4, 0xf0, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x0b, 0xa2, 0x05, 0xb2, 0xfb, 0xc3, 0x2e, 0xec, 0xc2, 0x2d, 0x41, 0xc7, 0xfd, 0x83, 0x97, 0x92, 0xd8, 0x1c, 0xd6, 0x37, 0x17, 0x64, 0x6b, 0xd0, 0x16, 0xc8, 0xca, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x5e, 0x8a, 0x44, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x15, 0x4b, 0x24, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x8f, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x9b, 0x83, 0x27, 0x00, 0xaf, 0x1c, 0x3c, 0x01, 0x78, 0xe5, 0x38, 0x74, 0x1c, 0x3a, 0x1c, 0xed, 0x07, 0x8f, 0xca, 0x9d, 0x38, 0x1e, 0x0f, 0xa2, 0x05, 0x82, 0x7b, 0x10, 0x02, 0xe0, 0x87, 0x6c, 0xc5, 0x71, 0x68, 0x90, 0xad, 0x21, 0x8f, 0x3d, 0x1e, 0x3c, 0xbb, 0x74, 0xe5, 0x70, 0x8a, 0x0d, 0x82, 0x0d, 0x5e, 0x68, 0x5c, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xa9, 0xda, 0xcb, 0xc2, 0x6f, 0x3c, 0xdf, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0x42, 0x0c, 0xc0, 0xa1, 0x51, 0xcb, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x36, 0x18, 0xc1, 0xa7, 0x07, 0x2f, 0x3c, 0xb0, 0x39, 0x34, 0x6a, 0x19, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x98, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x06, 0xd9, 0x41, 0x0a, 0x6f, 0xcd, 0xc1, 0xc0, 0x16, 0x1d, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x20, 0xd8, 0x60, 0x24, 0xe0, 0x1c, 0x24, 0xae, 0x49, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0xbc, 0x1d, 0x0c, 0x47, 0xe9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x12, 0x7c, 0xee, 0x3f, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x08, 0xb2, 0xf8, 0x83, 0xe5, 0xb8, 0x24, 0xc7, 0xa1, 0x41, 0xb4, 0x40, 0xbc, 0x37, 0xc4, 0x70, 0xe3, 0xd0, 0x06, 0x41, 0xe9, 0x7d, 0x10, 0x98, 0xd8, 0x07, 0x01, 0xef, 0xbf, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0x1c, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x0b, 0x25, 0x01, 0x06, 0xc9, 0x20, 0x1a, 0x44, 0x0b, 0x7b, 0x90, 0x98, 0x68, 0x73, 0x1c, 0x3a, 0x24, 0x5a, 0x87, 0x5f, 0x10, 0x2d, 0xd0, 0xde, 0xff, 0x20, 0x04, 0xc0, 0x8f, 0xc7, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x86, 0x5f, 0x10, 0x2d, 0xf0, 0xbe, 0xff, 0xb0, 0x1b, 0xa4, 0xb6, 0x5a, 0x2f, 0x08, 0x16, 0x7e, 0x83, 0xb6, 0xb1, 0x48, 0x0e, 0x06, 0xe7, 0xe3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x07, 0x8f, 0x90, 0x5f, 0x39, 0xbe, 0x2d, 0x41, 0xe2, 0x7f, 0xe1, 0x37, 0x9e, 0x8f, 0x1b, 0xa4, 0x87, 0x79, 0x6f, 0xf0, 0xfc, 0x22, 0x92, 0x83, 0xd4, 0x35, 0xef, 0x83, 0xa1, 0xd9, 0x75, 0x1c, 0x3a, 0x48, 0x69, 0xb4, 0x39, 0x1e, 0x0f, 0xbf, 0x20, 0x5a, 0x40, 0xf0, 0xfb, 0x0f, 0xbb, 0x41, 0x3b, 0x21, 0x4e, 0x0b, 0x82, 0x0d, 0x1e, 0x75, 0x68, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xc1, 0x53, 0xf9, 0x57, 0x8e, 0x6f, 0x4b, 0x20, 0xf8, 0xfe, 0x17, 0x7e, 0xe3, 0xf9, 0xb8, 0x41, 0x7a, 0x98, 0xf7, 0x06, 0xef, 0x45, 0x23, 0x39, 0x48, 0x5d, 0xf3, 0x3e, 0x18, 0xa6, 0x13, 0xc7, 0xa1, 0x83, 0x54, 0x48, 0x9b, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x82, 0x64, 0xe0, 0x7c, 0x3b, 0x38, 0x09, 0x1d, 0x1f, 0x94, 0x0c, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x25, 0x10, 0x72, 0xff, 0xc3, 0x6f, 0x3c, 0x5f, 0x83, 0xc7, 0xe9, 0x95, 0x0c, 0x82, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x40, 0xf8, 0xee, 0x1c, 0x9c, 0xeb, 0x8f, 0x0f, 0x16, 0x26, 0xff, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x41, 0xb0, 0xc1, 0x89, 0xcf, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x1b, 0x29, 0x6d, 0x0e, 0xde, 0x1d, 0x65, 0x73, 0x1c, 0x3a, 0x9e, 0x1f, 0x87, 0xd6, 0xe0, 0xb1, 0x7e, 0x25, 0x83, 0x60, 0x83, 0x27, 0x75, 0xda, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0x82, 0x60, 0x83, 0x13, 0x9f, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x09, 0x0c, 0xbf, 0xff, 0x83, 0x87, 0x63, 0xd9, 0x1c, 0x87, 0x8e, 0xe7, 0xc7, 0xa1, 0x43, 0x0c, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xa2, 0x05, 0xea, 0xef, 0x20, 0x58, 0x90, 0x6c, 0xb0, 0x76, 0x9d, 0xe2, 0xe0, 0x5c, 0x7f, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x28, 0xbd, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x56, 0xe1, 0x17, 0x24, 0x1b, 0xac, 0xb9, 0x40, 0x3a, 0x38, 0xd7, 0x1f, 0x1f, 0xdf, 0x86, 0x5f, 0x90, 0x0c, 0x28, 0xfc, 0xfb, 0x0e, 0xce, 0xf5, 0xc7, 0xc7, 0xb7, 0x09, 0x84, 0xbf, 0xff, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x06, 0xed, 0x2f, 0xa3, 0x1c, 0x9c, 0x83, 0xbf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x4b, 0xf0, 0xf4, 0xff, 0x12, 0x38, 0x7e, 0xff, 0x6f, 0x50, 0x1c, 0x6a, 0x2c, 0xfc, 0xc6, 0xf3, 0x0d, 0x5e, 0x56, 0x43, 0xb2, 0xc1, 0xdb, 0x56, 0x49, 0x36, 0x18, 0x3f, 0x5d, 0x07, 0x2f, 0x5e, 0x71, 0x38, 0x18, 0x17, 0x66, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xf6, 0xfa, 0x0e, 0x8e, 0x19, 0xcb, 0x07, 0x0f, 0x85, 0xbb, 0x38, 0x28, 0x20, 0x40, 0x86, 0x5f, 0x10, 0x2d, 0xec, 0xb0, 0x1b, 0x8c, 0x8e, 0xf5, 0x05, 0xc1, 0xc2, 0x6f, 0xd0, 0xe6, 0xd4, 0xc8, 0x41, 0xfa, 0x97, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x23, 0xc1, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x48, 0x1d, 0x1c, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0x32, 0xb0, 0xd7, 0x77, 0x90, 0x16, 0x34, 0x72, 0xf0, 0xd2, 0xb9, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x25, 0x8c, 0xc4, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0xd0, 0xe6, 0xd4, 0xc8, 0x41, 0x33, 0x8c, 0x4a, 0x87, 0x46, 0x2d, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0xe8, 0x20, 0xe0, 0xfd, 0x8f, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x2f, 0x88, 0x16, 0x58, 0xef, 0x1f, 0x04, 0x0b, 0x82, 0x0d, 0xde, 0x36, 0x49, 0x32, 0x48, 0x06, 0xb7, 0x0e, 0x1e, 0x1f, 0x68, 0x73, 0x68, 0xd4, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0x8c, 0x04, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x82, 0x0d, 0x5e, 0x28, 0x09, 0x30, 0x48, 0x86, 0x39, 0x78, 0x7c, 0xa0, 0xcd, 0xc1, 0xf8, 0x30, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x28, 0xde, 0xfb, 0x0e, 0xce, 0x79, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x61, 0x37, 0x08, 0x86, 0xfd, 0x85, 0xdd, 0xe0, 0x25, 0xa9, 0x24, 0x0b, 0xbb, 0x41, 0xb9, 0x77, 0xb8, 0xb0, 0x0b, 0xb7, 0xc1, 0x03, 0xdd, 0x4a, 0x0e, 0x0d, 0x75, 0x36, 0xc4, 0x70, 0xb8, 0x0d, 0xda, 0x62, 0x02, 0x38, 0x34, 0xd4, 0x39, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf1, 0x78, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xd1, 0x82, 0xea, 0x83, 0x64, 0x81, 0x85, 0xc3, 0x0a, 0xed, 0xf1, 0xf8, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0x39, 0x78, 0xe1, 0x60, 0xc9, 0xe2, 0xb0, 0x1b, 0xb4, 0x38, 0x05, 0xb3, 0xb0, 0x1b, 0xf2, 0x58, 0x0b, 0x82, 0x85, 0xdf, 0xe0, 0x5d, 0x22, 0x11, 0x07, 0xef, 0x4d, 0x0b, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xe8, 0x21, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xeb, 0x0e, 0x86, 0xa1, 0xcf, 0x41, 0xa3, 0x13, 0x4a, 0xc7, 0xa1, 0xc3, 0x29, 0x36, 0xfc, 0x82, 0x68, 0x41, 0xed, 0x20, 0xd8, 0xe0, 0x8d, 0x90, 0x25, 0x87, 0x4e, 0x44, 0xc7, 0xe3, 0x41, 0xb0, 0x41, 0x61, 0x1d, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0x3a, 0xa9, 0x1d, 0xbc, 0x8e, 0xb2, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0x41, 0xc3, 0x22, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x3c, 0x59, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf1, 0xe0, 0xa5, 0x75, 0x26, 0x87, 0x1e, 0x42, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0x6d, 0xf0, 0xfa, 0xca, 0x92, 0x41, 0xb0, 0xf0, 0x0b, 0x82, 0x85, 0x5f, 0x10, 0x6c, 0x70, 0x0e, 0xfe, 0x3e, 0x74, 0x22, 0x3a, 0x28, 0x87, 0x92, 0x0e, 0x5e, 0x31, 0x5b, 0x72, 0x30, 0xee, 0xa0, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0xdf, 0xd0, 0x48, 0x70, 0x83, 0xa2, 0x13, 0xe6, 0x60, 0x64, 0xf6, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0x78, 0xb6, 0xf2, 0x60, 0x34, 0x0b, 0x1c, 0x8f, 0x17, 0x7e, 0x41, 0xb0, 0xb8, 0x41, 0x00, 0xdc, 0x1f, 0xbc, 0x1e, 0x3a, 0x63, 0x71, 0x41, 0xb0, 0xc1, 0x6a, 0x8e, 0xa3, 0xc5, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0x78, 0xf0, 0xbc, 0x3b, 0x96, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0xd6, 0x7e, 0x32, 0x48, 0x06, 0xca, 0xdd, 0x21, 0xa7, 0x71, 0x48, 0xc3, 0x0d, 0xbf, 0x20, 0x5a, 0x70, 0xfe, 0x20, 0x04, 0xc0, 0x8f, 0xc7, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x86, 0xdd, 0x38, 0xb4, 0x20, 0x58, 0x90, 0xad, 0x21, 0x8f, 0x3d, 0x1e, 0xbc, 0xaf, 0x90, 0x65, 0x10, 0x2c, 0x48, 0x06, 0xfa, 0xde, 0x1d, 0x0c, 0x43, 0x9f, 0x83, 0x55, 0x9c, 0xfc, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x36, 0x58, 0x63, 0x99, 0x30, 0x48, 0x06, 0x4a, 0xdd, 0x41, 0x99, 0xee, 0x70, 0x90, 0xcc, 0xf7, 0x30, 0xfc, 0x82, 0x68, 0x81, 0xe1, 0x3f, 0x08, 0x01, 0xf0, 0xe3, 0xf1, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x1f, 0xe9, 0x70, 0x30, 0xb0, 0x45, 0x87, 0x5f, 0x10, 0x2d, 0x50, 0xfc, 0x0f, 0x42, 0x00, 0xfc, 0x78, 0x3c, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0x43, 0x57, 0x98, 0x83, 0x92, 0xa0, 0x61, 0x90, 0xad, 0x21, 0x8f, 0x3d, 0x1e, 0xbc, 0x25, 0x90, 0xe5, 0x70, 0x8a, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0xac, 0xe6, 0x38, 0x5a, 0x1c, 0x64, 0x6b, 0xc8, 0x63, 0x8f, 0x07, 0xef, 0x00, 0x65, 0x19, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0x29, 0x03, 0x37, 0xc3, 0x6f, 0xf0, 0xfe, 0x82, 0x9b, 0xe1, 0x37, 0x18, 0xec, 0x00, 0xc3, 0x6e, 0x1c, 0x5a, 0xd8, 0x85, 0x5b, 0x3c, 0x78, 0x58, 0x88, 0xc8, 0xa1, 0x87, 0xd0, 0x82, 0x6c, 0x0d, 0x79, 0xec, 0xf1, 0xe0, 0xa9, 0xab, 0x2c, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x36, 0x78, 0xfd, 0x78, 0xc1, 0x20, 0x19, 0x08, 0xdf, 0x41, 0xc8, 0xe1, 0x1f, 0xa4, 0xc3, 0x41, 0x0c, 0xbf, 0x41, 0x81, 0x3b, 0x32, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x6b, 0x2c, 0x13, 0x06, 0xc9, 0x40, 0xb9, 0x3b, 0x28, 0xd3, 0x1d, 0x0e, 0x86, 0xb1, 0xc3, 0xf0, 0x1b, 0xbc, 0xe8, 0xe1, 0x66, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0xb0, 0x1b, 0x87, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xc3, 0x08, 0x51, 0x83, 0x64, 0x20, 0x7c, 0x07, 0x6d, 0x69, 0xb4, 0x1c, 0x24, 0xde, 0x04, 0x0d, 0xbf, 0xc1, 0x33, 0x27, 0x6e, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xbf, 0x20, 0x5a, 0xa0, 0xf8, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x50, 0x76, 0x30, 0x1c, 0xa5, 0x07, 0xc9, 0x60, 0x36, 0x88, 0x16, 0xf6, 0xe0, 0xcc, 0xb8, 0x7c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x70, 0xa2, 0x88, 0x3e, 0x38, 0x46, 0xeb, 0x1e, 0x87, 0x8e, 0xc7, 0xc3, 0x6e, 0xb0, 0x6c, 0x30, 0x68, 0x35, 0x1c, 0xed, 0x87, 0x7c, 0xed, 0x41, 0x49, 0xd0, 0x70, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x06, 0x01, 0xc9, 0x7c, 0x48, 0x76, 0x1c, 0x4e, 0xb1, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0xd5, 0x1c, 0x47, 0x8b, 0xc3, 0x2e, 0xec, 0x06, 0xa3, 0x17, 0x6b, 0x61, 0x37, 0x78, 0x49, 0xec, 0xcc, 0xc2, 0x6e, 0x90, 0xd8, 0xf5, 0xb3, 0xc1, 0x28, 0xe8, 0x3d, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x2f, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x83, 0xd6, 0xda, 0x4f, 0x06, 0xc9, 0x40, 0xa9, 0x3b, 0xe4, 0x34, 0x0e, 0x52, 0xfc, 0x1c, 0x86, 0xdf, 0xe0, 0xfd, 0x05, 0x37, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x20, 0x7d, 0x9c, 0xe8, 0x60, 0x60, 0x8b, 0x0e, 0xbf, 0x41, 0x81, 0x3b, 0x32, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0x0d, 0x1e, 0xd3, 0xd5, 0x71, 0x1c, 0x3a, 0x08, 0x52, 0xfc, 0x61, 0x17, 0x76, 0x83, 0xd1, 0x8b, 0xb5, 0xb0, 0x1b, 0x3c, 0x4d, 0xbf, 0x64, 0x61, 0x37, 0x48, 0xec, 0xfa, 0x59, 0xd8, 0x0d, 0x06, 0x64, 0xef, 0xc2, 0x6e, 0x50, 0xc4, 0x0d, 0x2e, 0xec, 0x06, 0x0f, 0xe4, 0xa7, 0x59, 0xd8, 0x0d, 0xd6, 0x2a, 0xf8, 0x1f, 0xd6, 0x37, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x79, 0xec, 0xf1, 0xe0, 0x21, 0xe6, 0x2c, 0x83, 0x60, 0x41, 0x32, 0x90, 0xbc, 0x3b, 0x18, 0xef, 0x3a, 0x87, 0x4e, 0x44, 0x83, 0x60, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0x78, 0xf0, 0x56, 0x76, 0x96, 0x61, 0x17, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0xfb, 0x9d, 0x83, 0xe1, 0x28, 0x7d, 0xf0, 0x08, 0x61, 0x92, 0x83, 0x25, 0x55, 0xfd, 0x1b, 0x84, 0x3d, 0xf5, 0xe1, 0x14, 0x1b, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x57, 0x33, 0xdc, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xd7, 0xe8, 0x07, 0x81, 0x89, 0x7d, 0x1c, 0x1a, 0x7e, 0x83, 0x17, 0x3d, 0xdc, 0x0c, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xc3, 0x08, 0x51, 0x83, 0x64, 0xa0, 0xd4, 0x1d, 0xb4, 0xa5, 0xd1, 0x72, 0x90, 0x66, 0xbe, 0x3d, 0xfc, 0x06, 0xcf, 0x9c, 0xb8, 0x19, 0x7e, 0x83, 0xc1, 0x0e, 0x30, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x64, 0x10, 0x1d, 0x04, 0xbc, 0xff, 0xc1, 0xc0, 0x16, 0x1d, 0x7e, 0x41, 0xb4, 0xc0, 0xf1, 0x7f, 0x10, 0x02, 0xe0, 0xc7, 0xe3, 0xe1, 0x37, 0x18, 0xec, 0x00, 0x6b, 0xf0, 0xa6, 0xc2, 0x8e, 0x83, 0x87, 0x5f, 0x93, 0x1c, 0x9c, 0x19, 0x97, 0x87, 0x5d, 0xd8, 0x0d, 0x46, 0x2f, 0xd6, 0xc2, 0x6e, 0xf0, 0x34, 0xcd, 0x99, 0x85, 0xdd, 0x20, 0xb1, 0xeb, 0x67, 0x61, 0x37, 0x18, 0x05, 0xbd, 0x0b, 0xbb, 0xc1, 0x80, 0xec, 0xdd, 0xa0, 0x88, 0x1b, 0x3c, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x90, 0x6d, 0xf0, 0x3e, 0xa9, 0x9b, 0x61, 0x17, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0xfb, 0x9d, 0x83, 0xe1, 0x1f, 0x7b, 0xf0, 0x08, 0x61, 0x92, 0x43, 0x27, 0xa2, 0x83, 0x91, 0xd4, 0x3b, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x83, 0xd7, 0x8f, 0x17, 0x0c, 0x92, 0x81, 0x52, 0x77, 0x10, 0x72, 0xf8, 0x07, 0xe9, 0x70, 0x10, 0xc3, 0x6f, 0x50, 0xe0, 0x8e, 0x0c, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x57, 0x33, 0xdc, 0x1c, 0xa4, 0x99, 0x6f, 0x0f, 0xbf, 0xc1, 0x8b, 0x1e, 0x6e, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x3a, 0x52, 0x8d, 0x83, 0x81, 0x2d, 0x3a, 0xfc, 0x06, 0xcf, 0x9c, 0xb8, 0x19, 0x7e, 0x83, 0xc1, 0x0e, 0xb0, 0x06, 0xaf, 0xf5, 0xec, 0x38, 0x78, 0x16, 0x36, 0xc9, 0x41, 0x49, 0xd0, 0x30, 0xec, 0xc2, 0x6e, 0x30, 0x7a, 0xb1, 0x16, 0x76, 0x83, 0x47, 0xf2, 0xcf, 0x2c, 0xec, 0x06, 0x89, 0x5d, 0x3f, 0x1b, 0x8c, 0x88, 0xde, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x82, 0x60, 0x41, 0xb0, 0x41, 0xab, 0x99, 0x4e, 0xc3, 0x2e, 0xec, 0x06, 0xad, 0xf3, 0x01, 0x2c, 0xec, 0x82, 0x60, 0x83, 0xb7, 0x4f, 0xdd, 0x1c, 0x0c, 0x6c, 0xd1, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0xaf, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x36, 0x78, 0xa9, 0x84, 0xc7, 0xc1, 0x31, 0xab, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x50, 0x58, 0xa9, 0x1d, 0x87, 0x0e, 0xa7, 0xd8, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x17, 0xcb, 0xdd, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xd7, 0xe8, 0x87, 0xbd, 0xc2, 0xe3, 0xd0, 0xf0, 0x1b, 0x14, 0xb8, 0x23, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x06, 0xc9, 0x90, 0x83, 0x34, 0xd2, 0x86, 0xe1, 0x37, 0x28, 0x70, 0x47, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xbb, 0xc1, 0xe3, 0x06, 0x3b, 0x56, 0x83, 0xf7, 0x92, 0x75, 0x1c, 0x0c, 0x15, 0x81, 0x83, 0x20, 0xc5, 0x3f, 0x9c, 0x62, 0x83, 0x6c, 0x43, 0xf3, 0xf5, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0x78, 0xf0, 0xcc, 0x67, 0x96, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0xd4, 0x97, 0x83, 0xe1, 0x1f, 0x7b, 0x30, 0xcc, 0xc2, 0x8f, 0xc7, 0x87, 0x53, 0xec, 0x78, 0x3c, 0x08, 0x36, 0x58, 0xcd, 0x71, 0xb4, 0x38, 0xec, 0x86, 0x5d, 0x83, 0x0d, 0x29, 0x81, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0xd6, 0x7e, 0x32, 0x48, 0x06, 0xc2, 0x77, 0xc8, 0x69, 0x1c, 0x24, 0xde, 0x04, 0x0d, 0xbf, 0xc1, 0xfb, 0x0b, 0x6e, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x56, 0x90, 0x9b, 0xe1, 0x37, 0x28, 0x70, 0x47, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0xf7, 0x75, 0x5d, 0x0c, 0xbf, 0xc1, 0x8b, 0x1e, 0x6e, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x30, 0x22, 0xa8, 0x0e, 0x2b, 0xb4, 0xc3, 0x6f, 0xf0, 0xcc, 0x89, 0x9b, 0xe1, 0x37, 0x18, 0xec, 0x00, 0x1b, 0x0c, 0x15, 0x81, 0x83, 0x92, 0xa0, 0xe1, 0x78, 0x7c, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xdf, 0x56, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0x85, 0x5f, 0x10, 0x2c, 0x2e, 0xfc, 0x82, 0x60, 0x83, 0xd7, 0x43, 0x95, 0x2c, 0x0e, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x37, 0x48, 0xf0, 0x78, 0xde, 0xe0, 0x1c, 0xb9, 0xbb, 0xc1, 0x90, 0xfa, 0xdd, 0x60, 0xfd, 0xe3, 0xcb, 0x06, 0x09, 0x29, 0xf7, 0x1b, 0x24, 0x94, 0x9d, 0x6c, 0x90, 0xe8, 0x07, 0x3d, 0x08, 0x56, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x16, 0x9f, 0x9e, 0x0e, 0x9d, 0x88, 0x0e, 0x31, 0x3c, 0x58, 0xcd, 0x00, 0x74, 0x7c, 0x1b, 0x04, 0x0b, 0x92, 0x81, 0xfd, 0x9f, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xa7, 0x2a, 0x51, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x36, 0xb4, 0x00, 0x3a, 0x68, 0x56, 0xb6, 0xe4, 0x38, 0x74, 0x88, 0xff, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x37, 0x78, 0x36, 0x07, 0xcb, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x10, 0x2c, 0x6e, 0x90, 0x06, 0x90, 0x31, 0x07, 0xef, 0xb9, 0xed, 0x58, 0x1c, 0x04, 0x2b, 0x08, 0x36, 0x68, 0xe5, 0xba, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc3, 0xd4, 0x2f, 0x0e, 0x59, 0xbb, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0x56, 0xae, 0xcb, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xbc, 0xe1, 0x6f, 0xe3, 0xd0, 0x43, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0xe4, 0xeb, 0x0e, 0xd9, 0x8a, 0x43, 0x0b, 0xb0, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x68, 0x7f, 0x9d, 0x69, 0x71, 0x10, 0x2c, 0x08, 0x36, 0x18, 0x59, 0xaf, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xfb, 0x3f, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x6b, 0x37, 0xfc, 0xc6, 0xf3, 0x83, 0xd7, 0xfc, 0xde, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x6e, 0xb0, 0x5a, 0x04, 0xe9, 0xe0, 0xa9, 0x75, 0x2d, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0xc4, 0xb6, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x0d, 0xb7, 0x37, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x6b, 0xbf, 0x07, 0xaf, 0x73, 0xbe, 0x39, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0xdc, 0x60, 0xb5, 0x08, 0xd2, 0xc1, 0xf3, 0xfa, 0x5a, 0x8e, 0x43, 0x83, 0x60, 0x41, 0x32, 0xb0, 0xeb, 0x73, 0x30, 0xfc, 0x63, 0x0f, 0xde, 0x6c, 0x42, 0x71, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x1b, 0xbc, 0x72, 0x85, 0xe5, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0x08, 0x16, 0x67, 0x83, 0x35, 0x1d, 0x47, 0x87, 0x53, 0x6c, 0x71, 0x90, 0xad, 0x41, 0x5b, 0x20, 0x2b, 0x1b, 0x62, 0xb8, 0x21, 0xf7, 0x3d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x08, 0xd6, 0x90, 0xb5, 0xdb, 0x20, 0x21, 0xe5, 0x7e, 0x83, 0x84, 0xb2, 0x93, 0x41, 0xb0, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0x2c, 0xfe, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x83, 0x92, 0x5f, 0x71, 0x10, 0x2c, 0x48, 0x06, 0x3a, 0xf7, 0x1d, 0x0c, 0x47, 0xe9, 0x43, 0xf7, 0xa3, 0xe3, 0xd0, 0x21, 0x86, 0x07, 0xab, 0x19, 0x80, 0x0e, 0x56, 0x33, 0x00, 0x1d, 0xdf, 0x06, 0xd9, 0x06, 0x8f, 0x74, 0x6c, 0x19, 0x04, 0x0b, 0x92, 0xc1, 0x95, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x43, 0xee, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x10, 0xac, 0x21, 0xd9, 0x31, 0x1e, 0xbc, 0x65, 0xb2, 0xe5, 0x60, 0x35, 0x03, 0xd0, 0xf1, 0xed, 0x78, 0x3c, 0x08, 0x36, 0x18, 0xb1, 0xad, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x2d, 0x80, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x83, 0x5b, 0x07, 0xc3, 0xd0, 0x67, 0x90, 0x0c, 0x39, 0x68, 0x48, 0xdc, 0xe5, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x6c, 0xb0, 0x9a, 0xe3, 0x68, 0x71, 0x10, 0x2c, 0xfc, 0x82, 0x64, 0x70, 0xe6, 0x20, 0xe0, 0xfd, 0x8f, 0x6f, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x36, 0x68, 0xad, 0xfd, 0xe4, 0x60, 0x60, 0x4a, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x1e, 0xbc, 0xce, 0xf9, 0xe6, 0x38, 0x34, 0xfc, 0x82, 0x68, 0x83, 0xd2, 0xbd, 0xe3, 0x78, 0x3c, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0xaf, 0x1f, 0x2f, 0x18, 0x24, 0x83, 0xd1, 0xa1, 0x7d, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0x60, 0xf8, 0x8d, 0xe7, 0xe3, 0x06, 0xab, 0x45, 0x90, 0x0e, 0x16, 0xa4, 0x10, 0x1f, 0x87, 0x86, 0xdf, 0xa0, 0x91, 0xac, 0xa7, 0xe1, 0x37, 0x18, 0xec, 0x00, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x36, 0x58, 0x63, 0x99, 0x30, 0x48, 0x06, 0xa3, 0x83, 0xb1, 0xbe, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x38, 0x68, 0x29, 0xca, 0xfd, 0x38, 0x34, 0xfc, 0x06, 0x03, 0x13, 0x60, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0x06, 0xe3, 0x4d, 0x67, 0xf8, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x86, 0x11, 0xa2, 0x06, 0xc9, 0x40, 0xfc, 0x0e, 0x46, 0x8d, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x34, 0x0f, 0x12, 0x6d, 0x63, 0x8e, 0x43, 0xc7, 0xf3, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0xdc, 0xe0, 0x35, 0x16, 0x2b, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x6e, 0xf0, 0x56, 0xa3, 0x96, 0xc3, 0xd5, 0x75, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0xb8, 0xc1, 0xeb, 0xa1, 0x33, 0x0e, 0x1e, 0x22, 0xb3, 0xb1, 0x38, 0xfc, 0x82, 0x60, 0x71, 0x83, 0x34, 0x80, 0x8c, 0x83, 0xf7, 0xdc, 0x76, 0x2c, 0x0e, 0x82, 0xc5, 0x85, 0x5f, 0x10, 0x6c, 0xf0, 0xb4, 0x04, 0x9a, 0xc5, 0x41, 0xb0, 0x86, 0x64, 0xc7, 0xc1, 0x88, 0x64, 0x1a, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xf1, 0xe0, 0xa5, 0xd1, 0x2d, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x94, 0x1d, 0x9c, 0x84, 0x8e, 0x07, 0xc9, 0xe0, 0xde, 0x20, 0x5a, 0xd8, 0x83, 0x45, 0x1b, 0x63, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x27, 0x8a, 0xe8, 0x43, 0xea, 0xe0, 0x38, 0x34, 0xfc, 0x82, 0x68, 0x81, 0xdc, 0xff, 0x41, 0x08, 0x80, 0x1f, 0x8f, 0x87, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0x78, 0xf0, 0x0e, 0xed, 0x96, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0xb9, 0x4b, 0x25, 0x83, 0x64, 0x30, 0x1a, 0x44, 0x1b, 0xb4, 0x77, 0xaf, 0x74, 0x1c, 0x3a, 0x78, 0x07, 0x00, 0xce, 0xf0, 0x0b, 0xa2, 0x05, 0x76, 0xff, 0x0f, 0x42, 0x00, 0xfc, 0x78, 0x3c, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0x10, 0xac, 0x21, 0xd9, 0xb1, 0x41, 0xc8, 0x67, 0x1f, 0x3c, 0xd4, 0x67, 0x62, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0xe4, 0xb1, 0xc7, 0x83, 0x17, 0xa0, 0xb7, 0x0c, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x50, 0x76, 0x70, 0x3a, 0x43, 0x1e, 0x24, 0x83, 0x7b, 0x83, 0x68, 0x61, 0x0f, 0x8a, 0x5d, 0x9e, 0xe3, 0xd0, 0xc1, 0xe0, 0xf4, 0x19, 0x7e, 0x41, 0xb4, 0xc0, 0xef, 0xff, 0x07, 0x21, 0x00, 0x7e, 0x3c, 0x1e, 0x7e, 0x83, 0xc1, 0x0e, 0x30, 0xec, 0x06, 0xa1, 0xe5, 0xbe, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0xc1, 0xb2, 0x15, 0xa2, 0x0d, 0x89, 0xa9, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x1b, 0xbc, 0x9f, 0x8c, 0x66, 0x90, 0x0c, 0x84, 0x6f, 0x10, 0x2d, 0xec, 0x41, 0x39, 0xf9, 0x73, 0x1c, 0x3a, 0x48, 0x93, 0x33, 0x19, 0x7e, 0x41, 0xb4, 0x80, 0xb0, 0xff, 0x3f, 0x08, 0x01, 0xf0, 0xe3, 0xf1, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x0d, 0x31, 0xdc, 0x10, 0xc3, 0x05, 0xc1, 0x82, 0x64, 0x40, 0xa0, 0x2f, 0x1d, 0x1c, 0x28, 0x92, 0x0f, 0x56, 0xe2, 0xfe, 0x0c, 0x82, 0x0d, 0x1e, 0x47, 0x51, 0x72, 0xf0, 0xe6, 0x1c, 0x9b, 0xe3, 0xf1, 0x41, 0x33, 0x3f, 0x2e, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x35, 0x24, 0x3b, 0x36, 0x34, 0x12, 0x3c, 0x24, 0x66, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x3c, 0x78, 0x4a, 0x83, 0xcb, 0xc1, 0xcb, 0x36, 0x70, 0x86, 0xdf, 0xe0, 0x65, 0x20, 0x38, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x06, 0xc1, 0xe2, 0x20, 0x58, 0xdc, 0x60, 0x4d, 0xc7, 0xd1, 0x41, 0xb3, 0x5c, 0x2e, 0x8b, 0xc3, 0x6e, 0x10, 0x24, 0xde, 0x6b, 0x88, 0xe1, 0x20, 0x58, 0x90, 0x0c, 0xac, 0xfa, 0x1c, 0x1c, 0x28, 0x92, 0x0f, 0x46, 0x7d, 0xc6, 0x20, 0xdb, 0xe0, 0x99, 0xdf, 0x08, 0x1b, 0x8e, 0xf6, 0x35, 0x58, 0x38, 0x63, 0xb4, 0xc1, 0xf8, 0xe9, 0x3a, 0x74, 0x52, 0xdb, 0x60, 0x68, 0x76, 0x1d, 0x8c, 0xcc, 0xde, 0xe3, 0xf1, 0xe2, 0x82, 0x60, 0x83, 0x06, 0xb9, 0x5c, 0x16, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0xe3, 0xc1, 0x23, 0x60, 0x5c, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x65, 0x07, 0xe7, 0xfa, 0xe3, 0x41, 0x32, 0x18, 0x0d, 0xa2, 0x85, 0x9d, 0xc0, 0xd8, 0xff, 0x3f, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x6f, 0x3a, 0xc3, 0x6f, 0x3c, 0x1f, 0x37, 0x58, 0x2d, 0x82, 0x74, 0xb0, 0xec, 0x3e, 0xea, 0x38, 0x34, 0xfc, 0x82, 0x68, 0x01, 0x63, 0xff, 0xff, 0x20, 0x04, 0xc0, 0x8f, 0xc7, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0xe4, 0x90, 0xad, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x18, 0xef, 0x3a, 0x1b, 0x34, 0xc8, 0x52, 0x74, 0x88, 0xe6, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0f, 0xe0, 0xc2, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x18, 0xef, 0x3a, 0x1b, 0xb4, 0x16, 0xd2, 0x7e, 0x10, 0x94, 0xde, 0x87, 0xbd, 0xc2, 0xe3, 0xd0, 0x71, 0x68, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0xcf, 0xaf, 0x26, 0x19, 0x24, 0x03, 0x63, 0x37, 0x88, 0x16, 0xf6, 0xa0, 0xfc, 0x4d, 0x3a, 0x0e, 0x1d, 0x0c, 0x4e, 0x9f, 0xe1, 0x17, 0x44, 0x6b, 0x50, 0x06, 0x27, 0x1d, 0x84, 0x00, 0xf8, 0xf1, 0x78, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0x20, 0x58, 0x90, 0x0c, 0xb2, 0x83, 0x20, 0xe7, 0x3f, 0x18, 0xd8, 0xa2, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x6f, 0x1b, 0x2c, 0x59, 0x1c, 0x64, 0x6b, 0xc8, 0x63, 0x8f, 0x07, 0x2f, 0x56, 0x72, 0x19, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x67, 0x4e, 0xe1, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x6f, 0x3a, 0xc3, 0x6f, 0x3c, 0x1f, 0x37, 0x58, 0x2d, 0x82, 0x74, 0xd0, 0xe6, 0x0e, 0xd5, 0x71, 0x68, 0xf8, 0x0d, 0x5e, 0x98, 0x85, 0x33, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0x10, 0xac, 0x06, 0x0b, 0x2f, 0x8c, 0x36, 0x48, 0x0b, 0xcd, 0x3e, 0x08, 0xc0, 0xe7, 0x43, 0x0f, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x2f, 0x97, 0x22, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x2f, 0x81, 0x64, 0xfe, 0xff, 0x43, 0xfc, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0xb9, 0x14, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xc1, 0x30, 0xf4, 0x39, 0x78, 0xa1, 0x17, 0xce, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2f, 0x97, 0x22, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x18, 0x86, 0x3e, 0x07, 0x2f, 0x13, 0xc3, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xe5, 0x52, 0x24, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x83, 0x83, 0xe0, 0xe1, 0x3e, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x41, 0xd9, 0xc1, 0x31, 0x63, 0x79, 0x90, 0x0c, 0x8c, 0xdd, 0x20, 0x5a, 0xd8, 0x09, 0xa4, 0xfd, 0xff, 0x1f, 0x87, 0x0e, 0x8a, 0xd1, 0x9f, 0xe1, 0x17, 0x44, 0x0b, 0x48, 0xfb, 0xff, 0x3f, 0x08, 0x01, 0xf0, 0xe3, 0xf1, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x41, 0xb0, 0xc1, 0x13, 0x54, 0x48, 0x0e, 0x06, 0xb6, 0xe8, 0xf1, 0x78, 0x10, 0x6c, 0xb0, 0x9a, 0xe3, 0x68, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0xaf, 0x9e, 0xc2, 0x19, 0x24, 0x03, 0xe1, 0x3b, 0x78, 0x4b, 0x15, 0xce, 0x41, 0xe2, 0x4d, 0xd0, 0xf0, 0x1b, 0xbc, 0x30, 0x0b, 0x67, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xa0, 0xec, 0xe0, 0x40, 0x91, 0x3c, 0x48, 0x06, 0xc2, 0x37, 0x88, 0x16, 0x76, 0x02, 0x65, 0xff, 0xff, 0x71, 0xe8, 0x20, 0x1d, 0x0e, 0x62, 0xf8, 0x05, 0xd1, 0x02, 0xca, 0xfe, 0xff, 0x83, 0x10, 0x00, 0x3f, 0x1e, 0x0f, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x7e, 0x41, 0xb4, 0x60, 0x76, 0xf0, 0x9a, 0xdf, 0x9b, 0xe3, 0xf1, 0x06, 0x43, 0x45, 0xe0, 0xe0, 0x59, 0x97, 0x38, 0xc7, 0xe3, 0xe3, 0xf1, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x6e, 0xf0, 0x9e, 0xe0, 0x96, 0xc3, 0xd5, 0x75, 0x3c, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x0d, 0x9e, 0xa9, 0x8d, 0x72, 0x48, 0x2d, 0x1d, 0x8f, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xe0, 0xed, 0xc2, 0x83, 0xd1, 0x2c, 0x70, 0x3c, 0x5e, 0x5c, 0xf8, 0x0d, 0x96, 0x85, 0xc1, 0x8c, 0x83, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0x10, 0xc3, 0x0d, 0xb9, 0xef, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0xf1, 0xe0, 0x6d, 0x8d, 0x2e, 0xc7, 0xb7, 0x41, 0xb0, 0x90, 0x83, 0xf1, 0x2f, 0x39, 0xc8, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0x31, 0xdc, 0x90, 0xfb, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x0f, 0x9e, 0x60, 0xe9, 0x72, 0x7c, 0x1b, 0x04, 0x0b, 0xb2, 0x0d, 0x1e, 0xe9, 0xd8, 0x32, 0x64, 0x8d, 0x43, 0x07, 0x8b, 0xad, 0xf8, 0x0f, 0x96, 0x09, 0xfa, 0x0c, 0xb2, 0x35, 0x68, 0x0b, 0x64, 0x65, 0x43, 0x0c, 0x37, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0x83, 0xb7, 0xb0, 0xba, 0x1c, 0xdf, 0x86, 0x5f, 0x10, 0x2d, 0xec, 0x20, 0xdb, 0xe0, 0x91, 0x8e, 0x2d, 0x43, 0x0e, 0xc2, 0xcd, 0xfd, 0x78, 0x3c, 0xc8, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0x31, 0xdc, 0x90, 0xfb, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x0f, 0x1e, 0x47, 0xeb, 0x72, 0x7c, 0x1b, 0x04, 0x0b, 0xb2, 0x0d, 0x1e, 0xe9, 0xd8, 0x32, 0xfc, 0x42, 0xd6, 0x90, 0x3a, 0xd8, 0x20, 0xa4, 0xc0, 0xc7, 0xa0, 0x57, 0xfc, 0xc1, 0x32, 0x41, 0x9f, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0xb6, 0x40, 0x56, 0x36, 0xc4, 0x70, 0x43, 0xee, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x3c, 0x78, 0x32, 0xb0, 0xcb, 0xf1, 0x6d, 0x10, 0x2c, 0xc8, 0x36, 0x78, 0xa4, 0x63, 0xcb, 0x90, 0x35, 0xa4, 0x6a, 0x36, 0x0e, 0x1d, 0x8c, 0x37, 0x9d, 0x83, 0x65, 0x82, 0x3e, 0x83, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0x10, 0xc3, 0x0d, 0xb9, 0xef, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0xf1, 0xe0, 0x89, 0xcc, 0x2e, 0xc7, 0xb7, 0x41, 0xb6, 0xc1, 0x23, 0x1d, 0x5b, 0x16, 0xb2, 0xa1, 0xe1, 0xd7, 0x41, 0x08, 0x80, 0x1f, 0x8c, 0x77, 0x9d, 0xe1, 0x37, 0x24, 0xa6, 0xc6, 0x41, 0xb0, 0x20, 0x58, 0xc8, 0xc6, 0xf3, 0xe3, 0xd0, 0xc1, 0x48, 0xd3, 0x1a, 0x04, 0x8b, 0xc3, 0x6e, 0x30, 0x62, 0xb1, 0x36, 0x44, 0x73, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x90, 0x0d, 0x06, 0x0d, 0xc6, 0xc1, 0x32, 0x41, 0x9f, 0x83, 0xa0, 0xf4, 0x3e, 0x1e, 0x1f, 0xdf, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0x83, 0x25, 0x98, 0xc4, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0x42, 0x13, 0xa3, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x25, 0xd1, 0x99, 0x41, 0x32, 0x90, 0xbe, 0x3b, 0x18, 0x35, 0x46, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x88, 0xfd, 0x1c, 0x1a, 0xb5, 0x1c, 0x87, 0x8e, 0xc7, 0x0b, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x8f, 0x07, 0xef, 0x1c, 0x79, 0x39, 0x0e, 0x2d, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x1e, 0x3c, 0xe9, 0xe4, 0xe5, 0x38, 0xb4, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x78, 0xf0, 0x7a, 0x95, 0x97, 0xe3, 0xd0, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x78, 0xf0, 0x94, 0x98, 0x97, 0xe3, 0xd0, 0xf1, 0x78, 0x05, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x41, 0xb0, 0xc1, 0x6a, 0x8e, 0xa3, 0xc5, 0x41, 0xb0, 0xb0, 0x1b, 0x8c, 0x58, 0xac, 0xc5, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x3f, 0xd4, 0x1c, 0x14, 0x35, 0xe2, 0xc3, 0x6e, 0x50, 0x84, 0x0c, 0x6e, 0xb0, 0x16, 0x57, 0x7f, 0xdc, 0xa0, 0x98, 0xc4, 0xdc, 0xa0, 0x48, 0xc5, 0x3c, 0x28, 0x6a, 0xc4, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0xa4, 0x66, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0xe1, 0x37, 0x9e, 0x6f, 0xb0, 0x64, 0xdb, 0x69, 0xe3, 0xd0, 0xc1, 0x50, 0x44, 0x3a, 0x0e, 0x0d, 0xbf, 0x41, 0x43, 0x1e, 0x4f, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x36, 0x68, 0xdd, 0x1f, 0xe6, 0x60, 0xbc, 0xe9, 0x1c, 0x8f, 0x57, 0x10, 0x6c, 0xb0, 0x9c, 0x5a, 0x7f, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x5e, 0x8e, 0x11, 0x71, 0x50, 0xf2, 0x8c, 0x0d, 0xbf, 0xc1, 0xb0, 0x0d, 0x18, 0x7e, 0x83, 0xc1, 0x0e, 0xb0, 0xc1, 0x2a, 0x76, 0xfd, 0x83, 0xc0, 0xc4, 0x3e, 0x1e, 0xaf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x76, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x51, 0xf7, 0x98, 0x41, 0x32, 0x30, 0x7d, 0x87, 0x9c, 0xc6, 0x41, 0x8b, 0x1c, 0x2d, 0x1b, 0x8c, 0x52, 0xce, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x3d, 0x0b, 0x80, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0xb5, 0xaa, 0xa0, 0x83, 0xf6, 0x71, 0x99, 0x0e, 0x56, 0xff, 0xe8, 0x1c, 0x8f, 0x87, 0x5d, 0x10, 0x6c, 0x50, 0xfc, 0x0f, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xc7, 0xd7, 0xc1, 0x30, 0xf4, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x1c, 0x0c, 0x99, 0xa7, 0xe3, 0xd0, 0x71, 0x68, 0x0d, 0x31, 0x1c, 0x44, 0x0b, 0x19, 0x04, 0x0b, 0x82, 0x0d, 0x56, 0xd9, 0xfd, 0x0f, 0x92, 0xc1, 0xa9, 0x83, 0x90, 0xc3, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x0c, 0x99, 0xa7, 0xe3, 0xd0, 0x41, 0x60, 0x62, 0x0f, 0xb2, 0x35, 0x68, 0x0b, 0x64, 0x65, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x64, 0x20, 0xfd, 0x73, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x50, 0x98, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xb8, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x39, 0x78, 0xf3, 0xdd, 0xcb, 0xc1, 0x9b, 0xef, 0x5e, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x19, 0x38, 0x7f, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x04, 0x7f, 0xdf, 0xc1, 0x49, 0xe8, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xbe, 0x0e, 0x86, 0x7f, 0xec, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0xe0, 0x90, 0x98, 0x39, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x26, 0xb5, 0xcd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xe3, 0xeb, 0x60, 0x38, 0x4a, 0x1f, 0xbc, 0xfe, 0x2b, 0xe2, 0x38, 0x34, 0xc8, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0x34, 0x2c, 0xb2, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xc9, 0x93, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0xcd, 0xc1, 0x83, 0x0e, 0x5f, 0x0e, 0x1e, 0x74, 0xf8, 0x72, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x68, 0x0b, 0x64, 0xe5, 0x60, 0xfc, 0x4b, 0x0e, 0xb2, 0x35, 0x68, 0x0b, 0x64, 0x65, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0x0d, 0x8b, 0xac, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xf2, 0x64, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x71, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x73, 0xf0, 0x48, 0xc6, 0x97, 0x83, 0x47, 0x32, 0xbe, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0x39, 0x2c, 0xf2, 0x6d, 0x38, 0xda, 0x0f, 0x06, 0x22, 0xf5, 0xf1, 0x78, 0x10, 0x2c, 0x6e, 0xb0, 0xa6, 0xe3, 0xe8, 0xe0, 0x11, 0x60, 0x1e, 0x8b, 0xc3, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x65, 0xf0, 0x02, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x59, 0xbb, 0xe1, 0x37, 0x9e, 0x6f, 0xb0, 0x4e, 0x04, 0xe9, 0xd0, 0x48, 0xf0, 0x38, 0x34, 0xfc, 0x06, 0xc3, 0x36, 0x60, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x81, 0xf0, 0x1d, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xd9, 0xf3, 0x43, 0xea, 0xe0, 0x38, 0x34, 0xfc, 0x06, 0x0d, 0x79, 0x3c, 0x0d, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6e, 0xf0, 0xaa, 0x56, 0x8b, 0x05, 0xc1, 0x82, 0x64, 0x60, 0xe8, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x68, 0x1e, 0xa4, 0xb9, 0x67, 0x1c, 0x87, 0x06, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0x77, 0xd0, 0xce, 0x1e, 0xcc, 0x20, 0x58, 0x90, 0x0c, 0x4e, 0x1d, 0xb2, 0x15, 0x07, 0x0f, 0xcc, 0xc9, 0x19, 0x7e, 0x41, 0xb4, 0x40, 0xf8, 0x0f, 0x42, 0x00, 0xfc, 0x78, 0x3c, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0xd8, 0x8d, 0x43, 0xab, 0x21, 0x6b, 0x37, 0x88, 0x36, 0x78, 0xe0, 0x6b, 0xc5, 0x21, 0x5f, 0x7b, 0x30, 0x78, 0x27, 0x0f, 0xa7, 0xd8, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0xda, 0x94, 0x9c, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x78, 0xf9, 0xbe, 0xc4, 0xc1, 0x61, 0xad, 0x76, 0xf8, 0x0d, 0x86, 0x6d, 0xc0, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x41, 0xb0, 0xc1, 0x51, 0x1c, 0xfd, 0xe0, 0x55, 0x07, 0x38, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x86, 0xe9, 0x3c, 0x68, 0x96, 0xcb, 0x65, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbb, 0x41, 0x90, 0x78, 0x2f, 0x08, 0x16, 0x24, 0x03, 0x43, 0x77, 0x48, 0x2e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x64, 0xed, 0x0e, 0x8d, 0x8b, 0x8e, 0x43, 0x83, 0x6c, 0x83, 0x67, 0x7e, 0x23, 0x0c, 0x82, 0x0d, 0x8e, 0x8a, 0xff, 0x07, 0x6f, 0x6b, 0xca, 0x19, 0x7e, 0x83, 0x61, 0x1b, 0x30, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0xd8, 0x8d, 0x43, 0x1b, 0x04, 0x26, 0xf6, 0xe1, 0x14, 0x3b, 0x1e, 0xaf, 0x20, 0xd8, 0xa0, 0x41, 0x2e, 0x97, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x38, 0x07, 0x7f, 0x1f, 0x3a, 0x68, 0x0c, 0xbf, 0xc1, 0xb0, 0x0d, 0x18, 0x7e, 0x83, 0xc1, 0x0e, 0x30, 0x08, 0x36, 0x78, 0xa3, 0x4c, 0xce, 0x20, 0x19, 0x32, 0x88, 0x36, 0x28, 0xac, 0xc4, 0x8e, 0x43, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0xb4, 0x67, 0x01, 0xb0, 0x38, 0xec, 0x06, 0x0f, 0x9e, 0xc7, 0xd9, 0x60, 0x94, 0x72, 0x0e, 0xbb, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x92, 0xe8, 0xcc, 0x41, 0xfb, 0xb8, 0x4c, 0x07, 0xab, 0x7f, 0x74, 0xd6, 0x10, 0xc3, 0x41, 0xb4, 0x90, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x51, 0xf7, 0x98, 0x41, 0x32, 0x38, 0x75, 0xc8, 0x69, 0x1c, 0xb4, 0xc8, 0xd1, 0x72, 0xd8, 0x2b, 0x1c, 0x64, 0x6b, 0xd0, 0x16, 0xc8, 0xca, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x5a, 0xff, 0x8c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x04, 0x0a, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xe3, 0x1a, 0xea, 0xf8, 0x86, 0x97, 0xef, 0xe6, 0xe0, 0xcd, 0xf9, 0x2f, 0x07, 0x6f, 0xce, 0x7f, 0x39, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x70, 0xfe, 0x1c, 0x04, 0xbc, 0xff, 0xa1, 0x83, 0xc6, 0x20, 0x58, 0x10, 0x6c, 0xf0, 0xfe, 0x85, 0x9c, 0xc3, 0x46, 0xed, 0x20, 0x5b, 0x83, 0xb6, 0x40, 0x56, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0xd0, 0xdc, 0x24, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x86, 0x30, 0x81, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0xd7, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x37, 0x07, 0x6f, 0x16, 0x80, 0x39, 0x78, 0xb3, 0x00, 0xcc, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0x36, 0x78, 0xb2, 0x47, 0xce, 0x20, 0x5b, 0x83, 0xb6, 0x40, 0x56, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0xd0, 0xdc, 0x24, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x86, 0x30, 0x81, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0xd7, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x37, 0x07, 0xcf, 0x35, 0x80, 0x39, 0x78, 0xae, 0x01, 0xcc, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0x36, 0x78, 0xe0, 0x49, 0xce, 0x86, 0xa3, 0xfd, 0x60, 0xbc, 0xe9, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x34, 0xc8, 0xe5, 0xb2, 0x38, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x0f, 0x92, 0x96, 0x84, 0x86, 0xdf, 0x60, 0xd8, 0x06, 0x0c, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x04, 0x1b, 0x0c, 0xee, 0xca, 0x83, 0x81, 0x2d, 0x7a, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0xbf, 0xce, 0xb4, 0x38, 0x08, 0x36, 0x68, 0xd3, 0x9d, 0x69, 0x10, 0x6c, 0xd0, 0x4e, 0x16, 0xd3, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x81, 0x7a, 0x77, 0xc8, 0x56, 0x1c, 0x0c, 0x4e, 0x9f, 0xe1, 0x37, 0x78, 0x98, 0x4f, 0xce, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x35, 0x0e, 0x0d, 0x82, 0x0d, 0xde, 0x54, 0x91, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0xe4, 0x94, 0x38, 0x18, 0x03, 0x0b, 0xc7, 0xa1, 0x83, 0xc1, 0x3b, 0x79, 0x3c, 0x5e, 0x10, 0x6c, 0xf0, 0x1c, 0x24, 0x9c, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x28, 0x51, 0x43, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xd9, 0xf3, 0x43, 0xd6, 0xee, 0x38, 0x34, 0xfc, 0x06, 0xc3, 0x36, 0x60, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0xf0, 0x0b, 0xa2, 0x05, 0xf5, 0x83, 0x60, 0x83, 0x13, 0x26, 0xfa, 0xc1, 0xd8, 0x20, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x0e, 0xce, 0xe8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xf1, 0x3f, 0x34, 0x3a, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x2c, 0x34, 0x31, 0x5a, 0x1c, 0x04, 0x1b, 0x3c, 0x92, 0x29, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x62, 0x65, 0xfd, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0x63, 0xaa, 0xb2, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x06, 0xf7, 0xf4, 0x20, 0x19, 0x28, 0x7e, 0x07, 0xa9, 0x48, 0x17, 0x07, 0x2d, 0x72, 0xb4, 0x0c, 0xbb, 0x41, 0xeb, 0x7c, 0x00, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0xa6, 0xd8, 0x75, 0x06, 0xc9, 0x40, 0xfa, 0xee, 0xb0, 0x67, 0x7b, 0xd8, 0xe3, 0xdd, 0x38, 0x34, 0x88, 0x16, 0x76, 0x10, 0x2c, 0x08, 0x36, 0x68, 0x12, 0x60, 0x60, 0x90, 0x0c, 0x0c, 0xd5, 0x20, 0x5a, 0xd8, 0x83, 0x92, 0xa6, 0xe1, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x03, 0x2a, 0xec, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x8c, 0x37, 0x9d, 0x0d, 0x42, 0x00, 0xfc, 0x20, 0x30, 0xb1, 0x8f, 0xc7, 0x0b, 0x82, 0x0d, 0x5a, 0x51, 0x72, 0x5f, 0x1c, 0x04, 0x1b, 0x2c, 0x83, 0x17, 0x38, 0x68, 0x9c, 0xc9, 0xfd, 0x78, 0xbc, 0x20, 0xd8, 0xa0, 0x41, 0x2e, 0x97, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x78, 0x39, 0x46, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x0f, 0xa1, 0x83, 0x31, 0x7f, 0x77, 0x1c, 0x1a, 0x7e, 0x83, 0x61, 0x1b, 0x30, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0x0d, 0x42, 0x0a, 0x7c, 0xc8, 0x86, 0x8e, 0x61, 0x87, 0x05, 0xd1, 0x83, 0xc0, 0xc4, 0x3e, 0x1e, 0x0f, 0x82, 0x0d, 0xda, 0x31, 0x55, 0x59, 0x1c, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x83, 0x7b, 0x7a, 0x90, 0x0c, 0x14, 0xbf, 0x83, 0xe6, 0x97, 0x04, 0x0e, 0x5a, 0xe4, 0x68, 0x19, 0x76, 0x83, 0xd6, 0xf9, 0x00, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x4d, 0xb1, 0xeb, 0x1c, 0xbc, 0xc6, 0xc3, 0xe1, 0xa0, 0x21, 0x4c, 0x95, 0x8d, 0x43, 0x83, 0x68, 0xe1, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x26, 0x01, 0x06, 0x06, 0xc9, 0xc0, 0x50, 0x0d, 0xa2, 0x85, 0x3d, 0x28, 0xc7, 0x1a, 0x8e, 0x43, 0x07, 0xaf, 0x32, 0xcd, 0x39, 0x18, 0x6f, 0x3a, 0x07, 0x0f, 0x48, 0xcd, 0x39, 0x1e, 0x1f, 0x8f, 0x57, 0xf8, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x2c, 0xec, 0x06, 0x41, 0xaf, 0xbf, 0xb0, 0x1b, 0x8c, 0x5e, 0xac, 0x85, 0xdd, 0xa0, 0x08, 0x19, 0x3c, 0x78, 0xdf, 0xce, 0xcd, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xac, 0xdb, 0x1d, 0x04, 0x39, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x43, 0xbd, 0xed, 0x21, 0x6b, 0x77, 0x1c, 0x1a, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x21, 0x86, 0x83, 0x60, 0x61, 0x37, 0x08, 0xb6, 0xe7, 0x05, 0xc1, 0x06, 0x8d, 0xda, 0xc4, 0x1f, 0xa4, 0x28, 0x3f, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0xba, 0xdd, 0x41, 0xc0, 0xfb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0xc8, 0x18, 0x75, 0x68, 0x01, 0x74, 0x1c, 0x1a, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x21, 0x86, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x18, 0xb7, 0x43, 0xb6, 0xe2, 0xa0, 0xed, 0xd5, 0x97, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x62, 0xb8, 0x21, 0x86, 0x6b, 0xc8, 0xd7, 0x1e, 0x94, 0x9f, 0x24, 0x07, 0xa5, 0xcc, 0xce, 0x21, 0x86, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0xb8, 0xc1, 0x6b, 0x15, 0x61, 0x0e, 0xa9, 0xa5, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x87, 0xa4, 0x6f, 0x2c, 0x0e, 0xbf, 0xf1, 0x78, 0x41, 0xb0, 0x41, 0x52, 0x59, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x43, 0xbd, 0xed, 0x41, 0x71, 0xa8, 0x71, 0x1c, 0xda, 0xd0, 0x50, 0x67, 0x41, 0xb0, 0x41, 0x52, 0x59, 0xc1, 0xc1, 0xc9, 0xba, 0xfb, 0x30, 0x2e, 0xc7, 0xe3, 0x85, 0x5f, 0x10, 0x2c, 0x6e, 0xf0, 0x9e, 0xdb, 0x8e, 0xc3, 0x29, 0xb6, 0x38, 0xfc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0x34, 0x74, 0xed, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x68, 0xdf, 0x77, 0x30, 0xfc, 0x63, 0x8f, 0x43, 0x87, 0x0e, 0x1a, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x37, 0xc4, 0x70, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xf7, 0xda, 0x41, 0x90, 0xf3, 0x1f, 0x8c, 0x28, 0xdc, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x04, 0x29, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x92, 0xa6, 0x61, 0x83, 0x72, 0xac, 0xe1, 0x30, 0x2e, 0xc7, 0xa1, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x62, 0x38, 0xec, 0x06, 0xa1, 0xe5, 0xbe, 0x21, 0x31, 0x35, 0xfc, 0xc6, 0xe3, 0x61, 0x17, 0x7e, 0x0d, 0xc9, 0x8e, 0x0d, 0xd6, 0xee, 0x20, 0x2c, 0x48, 0x86, 0x1c, 0x9c, 0xce, 0x90, 0x37, 0x78, 0xfd, 0x78, 0xc1, 0x20, 0x19, 0x9c, 0x39, 0x18, 0x86, 0x3e, 0x83, 0x6c, 0x0d, 0x91, 0x19, 0x37, 0x78, 0x18, 0x08, 0xc6, 0x41, 0x4b, 0xa4, 0xa4, 0xc3, 0x6e, 0x30, 0x3a, 0xd6, 0x17, 0x76, 0xe1, 0x36, 0xa4, 0x6a, 0x0e, 0x42, 0x0a, 0x7c, 0x61, 0x17, 0x7e, 0x41, 0xb0, 0x20, 0xd8, 0xb0, 0x57, 0x38, 0x48, 0x06, 0xa7, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0xd9, 0x8a, 0xe3, 0xdb, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0x5c, 0x0e, 0xa9, 0x9a, 0xe3, 0xd0, 0x71, 0xe8, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x0d, 0x31, 0x3c, 0x58, 0x61, 0xd6, 0x33, 0xc8, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0x31, 0xdc, 0x90, 0xfb, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x0f, 0x9e, 0x33, 0x0f, 0x73, 0x7c, 0x3b, 0xc4, 0xf0, 0x78, 0x7c, 0x50, 0x38, 0x43, 0x1c, 0x8f, 0x0f, 0x5e, 0x8b, 0x73, 0xb1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x17, 0x6e, 0x83, 0x73, 0xe4, 0xee, 0x21, 0x75, 0xb0, 0x78, 0xf0, 0x24, 0x7f, 0x98, 0x61, 0x17, 0x6e, 0x83, 0xb4, 0x05, 0xea, 0x43, 0xea, 0x60, 0xf1, 0xe0, 0x5d, 0x00, 0x31, 0xc3, 0x2e, 0xdc, 0x06, 0x4b, 0x6d, 0x0a, 0x0e, 0xa9, 0x83, 0xc5, 0x83, 0xc7, 0x09, 0xc4, 0x0c, 0xbb, 0x70, 0x1b, 0x0c, 0x7c, 0xe3, 0x43, 0xea, 0x60, 0xf1, 0xe0, 0x7d, 0x04, 0x31, 0xc3, 0x2e, 0xdc, 0x06, 0xeb, 0x1f, 0x5f, 0x0e, 0xa9, 0x83, 0xc5, 0x83, 0x47, 0x1c, 0xc4, 0x0c, 0xbb, 0x70, 0x1b, 0xb4, 0xc1, 0x35, 0x70, 0x48, 0x1d, 0x2c, 0x1e, 0xbc, 0x34, 0x21, 0x66, 0xd8, 0x85, 0xdb, 0x60, 0x34, 0xf8, 0x1e, 0x52, 0x07, 0x8b, 0x07, 0x8f, 0x5d, 0x88, 0x19, 0x76, 0xe1, 0x16, 0xc3, 0xd5, 0x43, 0xea, 0x60, 0xf1, 0xe0, 0x45, 0x0e, 0x31, 0xc3, 0x2e, 0xdc, 0x06, 0x8b, 0x57, 0x80, 0x0e, 0xa9, 0x83, 0xc5, 0x83, 0x67, 0x41, 0xc4, 0x0c, 0xbb, 0x70, 0x1b, 0xac, 0x63, 0x06, 0x3b, 0xa4, 0x0e, 0x16, 0x0f, 0xde, 0x26, 0x11, 0x73, 0xb0, 0xf8, 0xce, 0xff, 0x78, 0x3c, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0x21, 0x86, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x1a, 0xc6, 0xc5, 0xa1, 0x83, 0xc6, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0x31, 0x1c, 0x76, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xb4, 0xdf, 0x39, 0x08, 0x78, 0xff, 0x83, 0x47, 0x08, 0x93, 0x1c, 0x36, 0x6a, 0xd7, 0x10, 0xc3, 0x0d, 0x59, 0xbb, 0x83, 0x10, 0x00, 0x1f, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0xa9, 0x75, 0x10, 0xf0, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xf1, 0x1f, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0x41, 0x32, 0x10, 0xab, 0x83, 0x80, 0xf7, 0x3f, 0x18, 0x77, 0x50, 0x07, 0xef, 0x16, 0x3a, 0x38, 0x0e, 0x0d, 0xbb, 0xb0, 0x1b, 0x8c, 0x8e, 0xf5, 0x85, 0x5d, 0xd8, 0x0d, 0xd6, 0x0c, 0xa5, 0x2c, 0xec, 0xc2, 0x6d, 0x90, 0x42, 0xe9, 0x73, 0x10, 0x64, 0xf1, 0x0b, 0xbb, 0xc1, 0x82, 0x2f, 0xae, 0x85, 0x5d, 0xd8, 0x0d, 0x16, 0x8c, 0x71, 0x2d, 0xec, 0xc2, 0x6d, 0x88, 0xe1, 0x41, 0x2b, 0x2a, 0x4e, 0x0b, 0xbb, 0x41, 0x23, 0x2b, 0x4e, 0x0b, 0xbb, 0x70, 0x1b, 0xa4, 0x85, 0x66, 0x4f, 0xb8, 0xb6, 0xb0, 0x1b, 0x34, 0xc6, 0xe2, 0x74, 0x58, 0xdf, 0x3c, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x85, 0xdd, 0x60, 0xe9, 0x19, 0xd7, 0xc2, 0x2e, 0xec, 0x06, 0x2d, 0x78, 0x39, 0x2d, 0xec, 0xc2, 0x6d, 0x88, 0xe1, 0x41, 0x33, 0x61, 0x4e, 0x0b, 0xbb, 0x41, 0x33, 0x62, 0x4e, 0x0b, 0xbb, 0x70, 0x1b, 0xa4, 0x85, 0x66, 0x4f, 0x10, 0xba, 0x85, 0xdd, 0xa0, 0xbd, 0x31, 0xa7, 0xc3, 0xfa, 0xe6, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0xb4, 0x93, 0xe6, 0x74, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x6b, 0x88, 0xe1, 0xc2, 0x6f, 0x30, 0x58, 0x63, 0x37, 0x18, 0xac, 0xb1, 0x07, 0x41, 0xe9, 0x7d, 0x18, 0x97, 0x43, 0x0c, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0x83, 0xb7, 0x2e, 0xc3, 0x1c, 0x52, 0x4b, 0xc7, 0xe3, 0x05, 0xc1, 0xc2, 0x2f, 0xfc, 0x82, 0x64, 0xa0, 0xfd, 0xd2, 0xf1, 0xfc, 0xf8, 0x76, 0x7c, 0x5b, 0x5c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xd6, 0xf7, 0x36, 0xec, 0x15, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0xc1, 0x3d, 0x3d, 0x48, 0x06, 0x8a, 0xdf, 0x41, 0xf3, 0x64, 0x02, 0x87, 0x34, 0xdc, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0x89, 0xa9, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x30, 0x4e, 0x01, 0x0e, 0x06, 0x5d, 0xc0, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xf0, 0x1b, 0x8c, 0xb0, 0xaa, 0x41, 0xb0, 0x38, 0xec, 0x86, 0xb5, 0xd0, 0x05, 0xd1, 0x42, 0x0e, 0xcb, 0xa8, 0x07, 0x81, 0x89, 0x3d, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0x5c, 0x89, 0x1a, 0x24, 0x03, 0xb7, 0xdf, 0x41, 0x9b, 0xfa, 0x21, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x84, 0xd5, 0xc1, 0x52, 0xb5, 0x97, 0xe3, 0xd0, 0x20, 0x5a, 0xe8, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x24, 0xc0, 0xc0, 0x20, 0x19, 0x18, 0xaa, 0x83, 0x45, 0x9f, 0x62, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x4a, 0x18, 0x89, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x41, 0xfd, 0x71, 0xe8, 0xa0, 0xa0, 0x60, 0x3b, 0x0e, 0x1d, 0x8c, 0x37, 0x9d, 0xe3, 0xdb, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0xb0, 0x57, 0x38, 0x08, 0x16, 0x87, 0xdd, 0xb0, 0x82, 0xba, 0x20, 0x5a, 0xe8, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0xe2, 0x4a, 0xd4, 0x20, 0x19, 0x08, 0xdf, 0x41, 0x9b, 0xfa, 0x21, 0x87, 0x8d, 0xda, 0x83, 0xc0, 0xc4, 0x1e, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x2d, 0xae, 0x44, 0x0d, 0x92, 0x81, 0xe2, 0x77, 0xd0, 0xa6, 0x7e, 0xc8, 0x61, 0xa3, 0x76, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x06, 0xe3, 0x4d, 0x67, 0x10, 0x2d, 0x74, 0x10, 0x6c, 0xf0, 0x9c, 0x26, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x64, 0xc7, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xc1, 0x28, 0x0e, 0x38, 0x68, 0x46, 0x27, 0xe5, 0x38, 0x74, 0x30, 0xde, 0x74, 0x8e, 0x6f, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0xc3, 0x5e, 0xe1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xcc, 0x07, 0xc1, 0x06, 0xcb, 0xe0, 0x05, 0x0e, 0x4a, 0xeb, 0xb1, 0x83, 0xa2, 0xe6, 0xec, 0x78, 0xbc, 0x82, 0x60, 0xe1, 0x37, 0x58, 0xaa, 0xee, 0x73, 0x7c, 0x1b, 0x04, 0x0b, 0xbf, 0x20, 0xd8, 0xa0, 0xd9, 0x81, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x60, 0xb8, 0x0e, 0x86, 0x7f, 0xec, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xf6, 0x7d, 0x07, 0xc3, 0xd0, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0xbb, 0xc1, 0x62, 0x2c, 0xaf, 0x0d, 0xc6, 0x85, 0xd9, 0xe1, 0x14, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xb7, 0x41, 0xb0, 0x38, 0xfc, 0x82, 0x68, 0x61, 0x87, 0xdd, 0xa0, 0x0d, 0x11, 0x9a, 0xd5, 0x90, 0xaa, 0x39, 0x18, 0x8b, 0x9d, 0x87, 0xd4, 0xc1, 0x21, 0x75, 0x70, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0x5c, 0x89, 0x1a, 0x24, 0x03, 0xe1, 0x3a, 0x68, 0x53, 0x3f, 0x64, 0x10, 0x2c, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0xc3, 0x5e, 0xe1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xcc, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0xfe, 0x60, 0x68, 0x76, 0x0d, 0xa2, 0x05, 0xf1, 0x20, 0xd8, 0x60, 0xe1, 0xab, 0xd7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf1, 0xa6, 0x33, 0xfc, 0xc6, 0xf3, 0x83, 0x57, 0x03, 0x60, 0x1c, 0x87, 0x0e, 0xc9, 0xa5, 0x83, 0xa2, 0xe6, 0xec, 0xf8, 0x76, 0x7c, 0x5b, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xd6, 0xf7, 0x36, 0xa4, 0x04, 0x06, 0xc1, 0x06, 0x4f, 0xfe, 0xd1, 0x19, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0xc1, 0x30, 0x4f, 0x1f, 0x04, 0x1b, 0x3c, 0x64, 0x48, 0x67, 0xd8, 0x0d, 0x42, 0xcb, 0x7d, 0x83, 0xe1, 0x55, 0x7e, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x43, 0xce, 0xfa, 0x60, 0x50, 0x5e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0xb0, 0xb0, 0xc2, 0xec, 0x38, 0x34, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x83, 0x84, 0xf6, 0x9d, 0xc3, 0xfa, 0xe6, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x60, 0x38, 0x70, 0x0c, 0x82, 0x0d, 0x9e, 0xfc, 0xa3, 0x33, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x83, 0xc0, 0xc4, 0x1e, 0x44, 0x0b, 0x1d, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0x5c, 0x89, 0x1a, 0x24, 0x03, 0x43, 0x75, 0xd0, 0xa6, 0x7e, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xfc, 0x87, 0xdf, 0x78, 0x7e, 0xf0, 0x90, 0x21, 0x9d, 0xe3, 0xd0, 0x41, 0x60, 0x62, 0x1f, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbf, 0x20, 0xd8, 0xe0, 0x1c, 0xfc, 0x7d, 0x68, 0xd4, 0x72, 0x1c, 0x3a, 0x1e, 0x1f, 0x8f, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x73, 0x8c, 0x73, 0x0e, 0x16, 0x26, 0xff, 0x0c, 0xbb, 0x41, 0xeb, 0x7c, 0x00, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x4f, 0x63, 0xce, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xf0, 0x30, 0xf5, 0x8b, 0xc3, 0x5e, 0xe1, 0x71, 0x68, 0xd8, 0x0d, 0x5a, 0xe7, 0x03, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xeb, 0x76, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x62, 0x67, 0x99, 0x83, 0xc0, 0xc4, 0x3e, 0x0e, 0x0d, 0xbb, 0x41, 0xeb, 0x7c, 0x00, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x60, 0xdd, 0xee, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0xc8, 0x18, 0x75, 0x30, 0xde, 0x74, 0x8e, 0x43, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x37, 0xc4, 0x70, 0x43, 0x0c, 0x0f, 0xde, 0x10, 0xf2, 0xb0, 0x21, 0x86, 0x1b, 0x94, 0xfc, 0x8a, 0x07, 0x21, 0x00, 0xbe, 0x21, 0x86, 0x1b, 0x14, 0x0c, 0x8f, 0x07, 0x21, 0x00, 0xbe, 0x21, 0x86, 0x1b, 0x14, 0xa4, 0x89, 0x07, 0x21, 0x00, 0x7e, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x1b, 0xbc, 0x74, 0x14, 0xe6, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xf1, 0xe0, 0x6d, 0xee, 0x31, 0x83, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0x19, 0xe7, 0xe0, 0xd5, 0xf3, 0x31, 0xc3, 0x6e, 0x10, 0x24, 0xde, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0xb4, 0x05, 0xb2, 0x32, 0xce, 0xc1, 0xab, 0xf7, 0x63, 0x06, 0xd9, 0x06, 0x8f, 0x74, 0x6c, 0x19, 0x04, 0x0b, 0x92, 0xc1, 0x95, 0x43, 0xb6, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x41, 0xb0, 0xc1, 0x30, 0xa3, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xa3, 0xa5, 0x1b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0x3c, 0x58, 0xfa, 0xa7, 0x7f, 0x10, 0xe4, 0xfc, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xce, 0xbd, 0xd6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x1e, 0x3c, 0xfa, 0x03, 0xe3, 0xd0, 0xf0, 0xeb, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x1f, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x61, 0x46, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xd0, 0xfd, 0xe7, 0x20, 0xc8, 0xf9, 0x0f, 0xd2, 0xe4, 0x4c, 0x0e, 0xde, 0x64, 0x7d, 0x73, 0x1c, 0x1a, 0x04, 0x8b, 0x03, 0xc1, 0xde, 0xa0, 0xa8, 0x16, 0x3c, 0x78, 0x8f, 0x48, 0xc9, 0xe2, 0xe2, 0x20, 0x5b, 0x83, 0xb6, 0x40, 0x56, 0xc6, 0x39, 0x78, 0x70, 0x84, 0xcc, 0x20, 0xd8, 0xe0, 0x71, 0x14, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x20, 0xd8, 0xe0, 0x61, 0xd8, 0x37, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x02, 0x13, 0x7b, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe6, 0xb7, 0x57, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0xdc, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x1b, 0xbc, 0x1c, 0xb4, 0x64, 0xc3, 0x89, 0xb0, 0xc1, 0xcb, 0x41, 0x4b, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0x06, 0x0b, 0x95, 0xa9, 0x0e, 0x5e, 0xd9, 0x8c, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xde, 0xac, 0xb1, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x0e, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x46, 0x6b, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x40, 0xad, 0xb1, 0xe1, 0x8d, 0xbb, 0x83, 0x57, 0x47, 0x82, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0x5f, 0xbf, 0x6c, 0xd0, 0xb8, 0x6e, 0xc1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x54, 0xb6, 0xc6, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0xb7, 0x35, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xf1, 0xd6, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xbf, 0xd7, 0x38, 0x78, 0xfd, 0x87, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe9, 0xbf, 0xc6, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0xf2, 0xb3, 0xc6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4b, 0xbf, 0xc6, 0x86, 0x07, 0x25, 0x37, 0xa4, 0x0e, 0x36, 0xbc, 0xad, 0x73, 0xf0, 0x00, 0x53, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa8, 0x6c, 0x8d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xdc, 0x6d, 0x8d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0xbc, 0x35, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x0f, 0xd7, 0xd8, 0xf0, 0xc6, 0xdd, 0xc1, 0x53, 0x32, 0x41, 0x0e, 0x12, 0xd2, 0xbb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x0f, 0xd7, 0xd8, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0x84, 0x14, 0xf8, 0x86, 0x37, 0xee, 0x0e, 0xd6, 0x85, 0xd1, 0x1c, 0x3c, 0x72, 0x5d, 0x67, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe0, 0x73, 0x8d, 0x0d, 0x6f, 0xdc, 0x1d, 0xac, 0x81, 0xa7, 0x3b, 0x48, 0x48, 0xef, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf8, 0x5c, 0x63, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x10, 0x52, 0xe0, 0x1b, 0xde, 0xb8, 0x3b, 0x28, 0xb1, 0x07, 0x0f, 0x1e, 0x34, 0xaf, 0xb3, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x00, 0x7d, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5c, 0xbb, 0xc6, 0x86, 0x37, 0xee, 0x0e, 0x9e, 0xd5, 0x09, 0x72, 0x90, 0x90, 0xde, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5c, 0xbb, 0xc6, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x20, 0xa4, 0xc0, 0x37, 0xbc, 0x71, 0x77, 0x10, 0xf6, 0xd4, 0x07, 0xef, 0xd6, 0xd7, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x67, 0x5e, 0x63, 0xc3, 0x1b, 0x77, 0x07, 0xef, 0xfb, 0x04, 0x39, 0x48, 0x48, 0xef, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x67, 0x5e, 0x63, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x10, 0x52, 0xe0, 0x1b, 0xde, 0xb8, 0x3b, 0x28, 0xce, 0xb9, 0x0e, 0x9e, 0x27, 0xb0, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x7e, 0xaf, 0xb1, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x08, 0x29, 0xf0, 0x0d, 0x6f, 0xdc, 0x1d, 0x2c, 0x12, 0xff, 0x39, 0x78, 0xfd, 0x87, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xee, 0xb6, 0xc6, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0xf2, 0xb3, 0xc6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4b, 0xbf, 0xc6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe9, 0xbf, 0xc6, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0xa0, 0xdd, 0xe2, 0x82, 0x83, 0x27, 0x94, 0xeb, 0x1c, 0x24, 0x5e, 0x77, 0x1f, 0x9c, 0xeb, 0x0d, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x8c, 0xd6, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x80, 0x5a, 0x63, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0xe6, 0xe0, 0xc9, 0xcf, 0x1a, 0x07, 0xaf, 0xc3, 0xd6, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x8c, 0xd6, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xca, 0xd6, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xdd, 0xd6, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xc6, 0x5b, 0x63, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x83, 0xc7, 0xa9, 0xeb, 0x1c, 0xb4, 0xc6, 0x43, 0xb0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7b, 0xb8, 0xc6, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0xd0, 0x48, 0xf0, 0xe0, 0x9d, 0xef, 0x3a, 0x07, 0x8f, 0x5c, 0xd7, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0xda, 0xe0, 0x21, 0xf2, 0x3a, 0x07, 0xad, 0xf1, 0x10, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x7c, 0xae, 0xb1, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x34, 0x12, 0x3c, 0x78, 0xd1, 0xbd, 0xce, 0xc1, 0x83, 0xe6, 0x75, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0x36, 0x78, 0x6f, 0xbe, 0xce, 0x41, 0x6b, 0x3c, 0x04, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xb5, 0x6b, 0x6c, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0x8d, 0x04, 0x0f, 0x9e, 0xee, 0xaf, 0x73, 0xf0, 0x6e, 0x7d, 0x9d, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x0d, 0x9e, 0x15, 0xb0, 0x73, 0xd0, 0x1a, 0x0f, 0xc1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x3d, 0xf3, 0x1a, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x23, 0xc1, 0x83, 0x17, 0x1a, 0xec, 0x1c, 0x3c, 0x4f, 0x60, 0x67, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xfd, 0x5e, 0x63, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x68, 0x24, 0x78, 0xf0, 0x40, 0x85, 0x9d, 0x83, 0xd7, 0x7f, 0x88, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x6e, 0x6b, 0x6c, 0xf8, 0xdc, 0x65, 0x83, 0x27, 0x3f, 0x6b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xf4, 0x6b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xfe, 0x6b, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x1f, 0x3c, 0xa1, 0x5c, 0xe7, 0xa0, 0x45, 0x21, 0x82, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x08, 0x82, 0x8d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x0c, 0x36, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x50, 0xd8, 0x38, 0x78, 0xe4, 0xba, 0xce, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0e, 0x85, 0x8d, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x21, 0x9a, 0x07, 0xef, 0x7c, 0xd7, 0x39, 0x78, 0xe4, 0xba, 0xce, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x0f, 0x1b, 0x07, 0x0f, 0x9a, 0xd7, 0x39, 0x38, 0xd7, 0x1b, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xf6, 0xb0, 0xb1, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0xf3, 0xe0, 0x45, 0xf7, 0x3a, 0x07, 0x0f, 0x9a, 0xd7, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x98, 0x62, 0xe3, 0xe0, 0xdd, 0xfa, 0x3a, 0x07, 0xe7, 0x7a, 0x83, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x29, 0x36, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x1e, 0x3c, 0xdd, 0x5f, 0xe7, 0xe0, 0xdd, 0xfa, 0x3a, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x68, 0x6c, 0x1c, 0x3c, 0x4f, 0x60, 0xe7, 0xe0, 0x5c, 0x6f, 0xb0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8c, 0xc6, 0xc6, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x83, 0x17, 0x1a, 0xec, 0x1c, 0x3c, 0x4f, 0x60, 0x67, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xcc, 0x63, 0x63, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0xc1, 0x03, 0x15, 0x76, 0x0e, 0x5e, 0xff, 0x21, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x41, 0xb0, 0xb1, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0xb3, 0x00, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd9, 0xc8, 0xc6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x77, 0xc9, 0xc6, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0xb7, 0x75, 0x0e, 0x9e, 0x63, 0x0b, 0x72, 0xd0, 0x1a, 0x0f, 0xc1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x04, 0xc1, 0xc6, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0x50, 0x0d, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc5, 0xca, 0xc6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x63, 0xcb, 0xc6, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0xb7, 0x75, 0x0e, 0x9e, 0xa9, 0x0b, 0x72, 0xd0, 0xa2, 0x10, 0xc1, 0xc1, 0x4a, 0x3a, 0xfd, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0x5e, 0x15, 0xad, 0x73, 0x48, 0xd5, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xf3, 0xe3, 0xd0, 0xf1, 0xf8, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0xb2, 0x35, 0x68, 0x0b, 0x64, 0x65, 0x9c, 0x83, 0x87, 0x8e, 0xc8, 0x0c, 0xb2, 0x0d, 0x1e, 0xe9, 0xd8, 0x32, 0x08, 0x36, 0x78, 0x0b, 0xad, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x50, 0xbe, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x22, 0x73, 0xfd, 0x83, 0x62, 0x0f, 0xe2, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x0d, 0x82, 0x0d, 0x5e, 0x2e, 0x8b, 0x33, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0x1a, 0x7b, 0x17, 0x39, 0x18, 0xc7, 0x21, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0x6c, 0x1c, 0x1a, 0x7e, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x25, 0xd1, 0x99, 0x41, 0x32, 0x20, 0xec, 0xfe, 0x0e, 0xc9, 0xb9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8b, 0xcc, 0xf5, 0x87, 0xdf, 0x78, 0x3e, 0x6e, 0xb0, 0x5a, 0x04, 0xe9, 0x70, 0xd9, 0x1c, 0x87, 0x8e, 0xe7, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0xe1, 0x36, 0x0e, 0x1d, 0xb4, 0x1c, 0xef, 0xb2, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x06, 0xa3, 0xfc, 0xe4, 0xa0, 0xe5, 0x78, 0x97, 0x43, 0x3a, 0x77, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x05, 0xc9, 0xc0, 0xf9, 0x76, 0x10, 0xe4, 0xfc, 0x07, 0x25, 0x43, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x20, 0xc5, 0x1f, 0x7e, 0xe3, 0xf9, 0x1a, 0xb4, 0xc5, 0x04, 0x70, 0x1c, 0x3a, 0xc4, 0xf0, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x76, 0x83, 0x07, 0x15, 0xee, 0x6c, 0x30, 0x96, 0x7d, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0x10, 0xc3, 0x0d, 0xb9, 0xef, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0x0d, 0xce, 0x91, 0xbb, 0x1b, 0xac, 0x49, 0x4b, 0xd8, 0x20, 0xc1, 0xe3, 0x79, 0x83, 0x35, 0x28, 0x40, 0x1b, 0x24, 0xa4, 0xdc, 0x6f, 0x90, 0x50, 0x76, 0xb2, 0xc1, 0x9a, 0xb4, 0x84, 0x0d, 0xd6, 0x3f, 0xbe, 0x6c, 0xb0, 0xd4, 0xa6, 0x60, 0x83, 0x35, 0x28, 0x40, 0x1b, 0xac, 0xea, 0x5e, 0xd8, 0xa0, 0x14, 0x91, 0xdc, 0x60, 0x34, 0xf8, 0x6e, 0xb0, 0x8e, 0x19, 0x6c, 0x83, 0xd1, 0xe0, 0xbb, 0xc1, 0x90, 0xfa, 0xdd, 0xa0, 0x0d, 0xae, 0x81, 0x0d, 0x12, 0xca, 0x4e, 0x36, 0x58, 0x80, 0xc6, 0xb0, 0xc1, 0x1a, 0x14, 0xa0, 0x0d, 0xd6, 0xa0, 0x00, 0x6d, 0x30, 0xa4, 0x7e, 0x37, 0x48, 0x28, 0x3b, 0xd9, 0x20, 0xd1, 0x0f, 0x7a, 0x10, 0xac, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0b, 0x8b, 0x7f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x3c, 0x94, 0x39, 0xa4, 0x0e, 0x8e, 0x43, 0x87, 0x18, 0x1e, 0xac, 0x66, 0x00, 0x3a, 0xbe, 0x0d, 0xb2, 0x0d, 0x1e, 0xe9, 0xd8, 0x32, 0x08, 0x36, 0x78, 0x3b, 0xfa, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x83, 0x60, 0x83, 0xf7, 0x3f, 0xe4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x0e, 0xbf, 0xf1, 0x7c, 0x83, 0x85, 0x26, 0x46, 0x07, 0x67, 0x80, 0xec, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0xb4, 0x71, 0xe8, 0xe0, 0xe5, 0xb2, 0x38, 0xc3, 0x6f, 0xd0, 0x48, 0xd6, 0xd3, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x41, 0xb0, 0x90, 0x0d, 0xa9, 0x9a, 0x83, 0xf4, 0xdc, 0x98, 0x41, 0xb0, 0xf0, 0x0b, 0x82, 0x0d, 0xde, 0x54, 0x91, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x30, 0xb1, 0x87, 0xdf, 0x78, 0xbe, 0x21, 0x9a, 0x07, 0x4f, 0xc8, 0xc5, 0x39, 0x0e, 0x1d, 0x87, 0x36, 0x0e, 0x1d, 0x24, 0xc2, 0x35, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0xc7, 0x5e, 0xdc, 0x90, 0xfb, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xdc, 0x60, 0xa9, 0x4d, 0xc1, 0x06, 0xe7, 0xc8, 0xdd, 0x0d, 0x86, 0xd4, 0xef, 0x06, 0x43, 0xea, 0x77, 0x83, 0x35, 0x28, 0x40, 0x1b, 0x94, 0x40, 0x91, 0x1b, 0x24, 0x94, 0x9d, 0x6c, 0x70, 0xd2, 0xdb, 0xdd, 0xa0, 0x14, 0x91, 0xdc, 0xa0, 0x0d, 0xae, 0x81, 0x0d, 0xd6, 0xa4, 0x25, 0x6c, 0x70, 0x8e, 0xdc, 0xdd, 0x60, 0xe0, 0x1b, 0x6f, 0xb0, 0xfe, 0xf1, 0x65, 0x83, 0x84, 0xb2, 0x93, 0x0d, 0x4a, 0xa0, 0xc8, 0x0d, 0xd6, 0xa0, 0x00, 0x6d, 0x90, 0x50, 0x76, 0xb2, 0xc1, 0x02, 0x34, 0x86, 0x0d, 0xd6, 0xa0, 0x00, 0x6d, 0xb0, 0x06, 0x05, 0x68, 0x83, 0x21, 0xf5, 0xbb, 0x41, 0x42, 0xd9, 0xc9, 0x06, 0x89, 0x7e, 0xd0, 0x83, 0x60, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xed, 0x0e, 0x86, 0xa3, 0xf4, 0xc1, 0xc2, 0xe4, 0x9f, 0xe3, 0xf1, 0xa1, 0x51, 0xcb, 0x06, 0x09, 0x65, 0x27, 0x1b, 0x8c, 0xdb, 0xdd, 0x0d, 0xd6, 0xa4, 0x25, 0x6c, 0xb0, 0x06, 0x05, 0x68, 0x83, 0x55, 0xdd, 0x0b, 0x1b, 0x24, 0x94, 0x9d, 0x6c, 0x90, 0xe8, 0x07, 0x3d, 0x08, 0x56, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x47, 0x0e, 0xef, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x48, 0x86, 0x1c, 0x9c, 0xbd, 0x8c, 0x8f, 0x43, 0x87, 0x18, 0x1e, 0xac, 0x66, 0x00, 0x3a, 0x58, 0xcd, 0x00, 0x74, 0x7c, 0x3b, 0x1e, 0x1f, 0x4e, 0xb1, 0x41, 0xb0, 0x20, 0xdb, 0xe0, 0xe5, 0xb1, 0x3a, 0x83, 0x6c, 0x83, 0x47, 0x3a, 0xb6, 0x0c, 0x82, 0x05, 0xc9, 0xe0, 0xca, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x38, 0x08, 0x16, 0x24, 0x03, 0xc7, 0xd7, 0xc1, 0x78, 0xd7, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xe8, 0x18, 0x36, 0xfc, 0xc6, 0xf3, 0x0d, 0xd1, 0x3c, 0x34, 0xfc, 0x3a, 0x0e, 0x1d, 0x8f, 0x8f, 0x43, 0x83, 0x60, 0x21, 0x1b, 0x1a, 0x09, 0x6e, 0x30, 0xe4, 0xd1, 0x37, 0x08, 0x01, 0xf0, 0x83, 0xf4, 0xdc, 0x98, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x05, 0xc1, 0x06, 0x8f, 0xe2, 0xc7, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0xf8, 0x75, 0xf0, 0x84, 0xd8, 0x9d, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0x82, 0x60, 0x83, 0xf7, 0x3f, 0xe4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x1e, 0xee, 0xe1, 0x37, 0x9e, 0x6f, 0x1c, 0x1a, 0x0f, 0x9e, 0xd7, 0xd7, 0x72, 0x1c, 0x3a, 0x9e, 0x0f, 0x39, 0x74, 0x85, 0x19, 0x04, 0x1b, 0xbc, 0x91, 0x58, 0x67, 0x71, 0x71, 0x90, 0xad, 0x41, 0x5b, 0x20, 0x2b, 0xe3, 0x78, 0xf0, 0xe0, 0x08, 0x99, 0x41, 0xb0, 0xc1, 0xe3, 0x28, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xe3, 0xeb, 0xe0, 0x98, 0x55, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0x0a, 0x7e, 0xba, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x7c, 0x3c, 0x3e, 0x1e, 0xaf, 0xb8, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0x82, 0xc5, 0x61, 0x37, 0xac, 0xa0, 0x6e, 0x88, 0xe1, 0x20, 0x58, 0x10, 0x2c, 0x0e, 0xbb, 0x21, 0x11, 0xb0, 0x86, 0xa3, 0xfd, 0xd0, 0x02, 0x68, 0xd8, 0x85, 0xdb, 0x20, 0x48, 0xa2, 0x0f, 0xd6, 0x85, 0xd1, 0xac, 0x21, 0x86, 0x13, 0x44, 0xfc, 0x60, 0x94, 0x58, 0x1d, 0xdf, 0x86, 0xdd, 0x60, 0x91, 0x47, 0xd0, 0x1a, 0x62, 0x78, 0xd0, 0xae, 0x15, 0xd4, 0x20, 0xdb, 0x60, 0x1d, 0x6d, 0xff, 0xb0, 0x0b, 0x82, 0x0d, 0x5a, 0x85, 0x8b, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x18, 0x97, 0x83, 0xb3, 0xd1, 0xf3, 0x71, 0x68, 0x83, 0x27, 0xc6, 0x3d, 0x6c, 0x88, 0xe1, 0x86, 0x16, 0x40, 0x07, 0xe1, 0xe6, 0x7e, 0x7c, 0x1b, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x20, 0x19, 0x30, 0x5c, 0xfb, 0x0e, 0x86, 0x7f, 0xec, 0x20, 0x5b, 0x83, 0xb6, 0x40, 0x56, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0xd0, 0xfa, 0x67, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x26, 0x50, 0xa0, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0xdc, 0x30, 0xf7, 0x1b, 0x3c, 0xe7, 0x20, 0x63, 0xc3, 0xc4, 0x6d, 0xd0, 0x62, 0xdb, 0xc0, 0x86, 0xb9, 0x1f, 0xbc, 0xde, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0xb9, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xc1, 0xb2, 0xb4, 0xa1, 0x98, 0xae, 0xc1, 0x83, 0x37, 0x30, 0x0e, 0x5e, 0xc3, 0x0c, 0xb2, 0x61, 0x86, 0x36, 0x78, 0x39, 0x68, 0xc9, 0x86, 0x13, 0x61, 0x83, 0x97, 0x83, 0x96, 0x6c, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x16, 0x2a, 0x53, 0x1d, 0xbc, 0x59, 0x21, 0x64, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xbe, 0x68, 0x63, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x6c, 0x61, 0xec, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1b, 0xd2, 0xc6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb9, 0xd2, 0xc6, 0x86, 0xaf, 0x5f, 0x36, 0x68, 0x46, 0x73, 0x60, 0x83, 0x85, 0xb2, 0x4f, 0x1b, 0x34, 0xd3, 0x39, 0xb0, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x2d, 0x80, 0x0e, 0x6c, 0xd0, 0x8e, 0xe8, 0xc0, 0x21, 0x9a, 0x07, 0x4d, 0x2b, 0xf7, 0x6f, 0x78, 0x9e, 0x64, 0x83, 0x87, 0x2b, 0xf0, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x17, 0x6d, 0x6c, 0xf8, 0xdc, 0x65, 0x83, 0x46, 0xff, 0x08, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0x9e, 0x36, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0xa3, 0x36, 0x0e, 0x1a, 0xf3, 0xb2, 0x38, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x86, 0xb9, 0xdf, 0x20, 0x08, 0x97, 0x36, 0x14, 0xd3, 0xd5, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xe1, 0x8a, 0xb0, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0x73, 0xc3, 0x0c, 0xad, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0x23, 0x73, 0x69, 0x43, 0x1d, 0x59, 0xc3, 0x0c, 0x6d, 0xf0, 0x72, 0xd0, 0x92, 0x0d, 0x27, 0xc2, 0x06, 0x2f, 0x07, 0x2d, 0xd9, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0x2c, 0x54, 0xa6, 0x3a, 0x78, 0x71, 0x21, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3a, 0xe4, 0xc6, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x77, 0x7b, 0x36, 0x78, 0xe8, 0x41, 0xc8, 0x1a, 0x3e, 0x6a, 0x3f, 0x78, 0x4e, 0x42, 0x48, 0x07, 0xc7, 0x98, 0xb3, 0x83, 0x95, 0x74, 0xfa, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0xbc, 0x9f, 0x84, 0x67, 0xc3, 0xdc, 0x6f, 0xd0, 0xde, 0x7d, 0xd6, 0xc1, 0xf3, 0x43, 0x78, 0x36, 0xcc, 0xd0, 0x06, 0x8f, 0xc1, 0x3c, 0xd9, 0x70, 0x22, 0x6c, 0xf0, 0x18, 0xcc, 0x93, 0x0d, 0x16, 0xb3, 0x41, 0x1d, 0x3c, 0xc6, 0x53, 0x66, 0xc3, 0x89, 0xb0, 0xc1, 0xe3, 0x40, 0x78, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0x72, 0xf0, 0x26, 0x53, 0x99, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x36, 0x9c, 0x08, 0x1b, 0xbc, 0x02, 0x84, 0x67, 0x0d, 0xe7, 0xc8, 0xc1, 0xc3, 0xd9, 0x77, 0x96, 0x59, 0x0e, 0xde, 0x07, 0x2d, 0x73, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x86, 0x13, 0x61, 0x83, 0x47, 0x7c, 0xf0, 0x6c, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xfa, 0x65, 0xc3, 0x83, 0x37, 0x1b, 0x2c, 0x94, 0x7d, 0xda, 0xa0, 0x99, 0xce, 0x81, 0x35, 0x28, 0x3a, 0x8d, 0x37, 0x68, 0x01, 0x74, 0x60, 0x83, 0x76, 0x56, 0x17, 0x0e, 0xa9, 0x83, 0x83, 0xb6, 0x4a, 0x07, 0x0e, 0x56, 0xd2, 0xe9, 0x1f, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x38, 0x8f, 0x0f, 0xda, 0x0e, 0xb8, 0x38, 0x08, 0xa0, 0x84, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x30, 0x9d, 0x07, 0x8f, 0xe9, 0xe0, 0xd9, 0x70, 0x22, 0x6c, 0xf0, 0xfe, 0x20, 0x9e, 0x83, 0xb6, 0x18, 0x2e, 0x0e, 0xe7, 0xf1, 0x41, 0x2b, 0x9c, 0x14, 0x1b, 0x4e, 0x84, 0x0d, 0xde, 0x34, 0xc0, 0x73, 0xd0, 0x3e, 0x2c, 0xc5, 0x41, 0x93, 0xb2, 0x14, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0xb8, 0x41, 0xb9, 0x0f, 0xb8, 0x06, 0xed, 0x27, 0x3e, 0x1d, 0x12, 0x53, 0x0b, 0x82, 0x0d, 0x8d, 0x04, 0x37, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x37, 0x48, 0xf4, 0x83, 0x1e, 0x04, 0x2b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x0a, 0x86, 0x88, 0x83, 0x61, 0xec, 0xb0, 0x41, 0x42, 0xd9, 0xc9, 0x06, 0x89, 0x7e, 0xd0, 0x83, 0x60, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x24, 0x92, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x85, 0x87, 0x32, 0x87, 0x71, 0x39, 0x0e, 0x8d, 0x07, 0x0f, 0xa3, 0x95, 0x39, 0x58, 0xcd, 0x00, 0x74, 0xb0, 0x9a, 0x01, 0xe8, 0xf8, 0xb6, 0xb0, 0x1b, 0x8c, 0x75, 0xb4, 0x35, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0x83, 0x77, 0xe4, 0xca, 0x1c, 0xdf, 0x36, 0xe4, 0xbe, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x37, 0x58, 0x93, 0x96, 0xb0, 0xc1, 0x49, 0x6f, 0x77, 0x83, 0x21, 0xf5, 0xbb, 0x41, 0x09, 0x14, 0xb9, 0xc1, 0x68, 0xf0, 0xdd, 0x60, 0x55, 0xf7, 0xc2, 0x06, 0xeb, 0x1f, 0x5f, 0x36, 0x48, 0x28, 0x3b, 0xd9, 0x60, 0x0d, 0x0a, 0xd0, 0x06, 0x43, 0xea, 0x77, 0x83, 0x75, 0xcc, 0x60, 0x1b, 0xac, 0x45, 0x6d, 0xd8, 0x20, 0xa1, 0xec, 0x64, 0x83, 0x35, 0xda, 0x0a, 0x1b, 0x9c, 0xf4, 0x76, 0x37, 0x28, 0x45, 0x24, 0x37, 0x28, 0x45, 0x24, 0x37, 0x58, 0x83, 0x02, 0xb4, 0xc1, 0x9a, 0xb4, 0x84, 0x0d, 0x4a, 0xa0, 0xc8, 0x0d, 0xd6, 0x68, 0x2b, 0x6c, 0x90, 0x50, 0x76, 0xb2, 0x41, 0xa2, 0x1f, 0xf4, 0x20, 0x58, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x16, 0x16, 0xff, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x78, 0x28, 0x73, 0x68, 0x96, 0x74, 0x1c, 0x3a, 0xc4, 0xf0, 0x60, 0x35, 0x03, 0xd0, 0xf1, 0xed, 0x10, 0xc3, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x3c, 0x78, 0xa7, 0xb2, 0xcc, 0x20, 0x5b, 0x43, 0x1e, 0xfb, 0xe0, 0x21, 0x07, 0x19, 0x87, 0x53, 0xec, 0x78, 0x3c, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x62, 0x38, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x21, 0x75, 0x30, 0xfc, 0x06, 0x8d, 0x64, 0x3d, 0x0d, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x04, 0x8b, 0xc3, 0x6e, 0x30, 0x36, 0x39, 0x37, 0xc4, 0x70, 0xd8, 0x05, 0xc1, 0x06, 0x2b, 0xf2, 0xbc, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0x85, 0x01, 0xc6, 0x71, 0x68, 0x61, 0x17, 0x24, 0x43, 0x06, 0xd1, 0x06, 0xa5, 0xf2, 0xd6, 0x20, 0xda, 0xb0, 0x76, 0x7b, 0x3c, 0x3e, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0xf1, 0xed, 0x78, 0x7c, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0xc2, 0x6e, 0xe8, 0x9a, 0xb9, 0xb0, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0xfd, 0xce, 0x41, 0x90, 0xf3, 0x1f, 0x3c, 0x42, 0x98, 0xe4, 0xd0, 0xa8, 0xe5, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x07, 0xc5, 0x22, 0xd9, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x4a, 0x3b, 0x8e, 0xc5, 0x85, 0xdd, 0x20, 0xe8, 0xf5, 0x37, 0x44, 0x73, 0x10, 0x6c, 0xd0, 0xce, 0xad, 0xf9, 0x20, 0x19, 0x44, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x41, 0x0a, 0xa5, 0xcf, 0x1a, 0x62, 0x78, 0xd0, 0x04, 0x9c, 0xfb, 0x1a, 0x62, 0xb8, 0x41, 0x5a, 0x68, 0xf6, 0xc1, 0xd0, 0xec, 0x3a, 0xc4, 0xf0, 0x38, 0x34, 0x08, 0x16, 0x24, 0x03, 0xa3, 0x76, 0x48, 0x2e, 0x1d, 0x3a, 0x68, 0x1c, 0x8f, 0x0f, 0x5e, 0xa9, 0x79, 0xb2, 0xe1, 0x44, 0xd8, 0xe0, 0x65, 0x1b, 0x18, 0x6b, 0x38, 0x47, 0x16, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0a, 0x40, 0xc8, 0x06, 0x0a, 0x40, 0x38, 0x73, 0xd0, 0xb0, 0xc8, 0xfd, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2a, 0x10, 0xb2, 0x81, 0x2a, 0x10, 0xbe, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x55, 0x20, 0x84, 0x03, 0x55, 0x20, 0x0c, 0x0e, 0x56, 0xf1, 0xef, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0x81, 0xb0, 0x18, 0xa8, 0x02, 0xa1, 0x66, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0x81, 0x30, 0x19, 0xa8, 0x02, 0x61, 0x76, 0xd0, 0x48, 0x92, 0xfd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x55, 0x20, 0xec, 0x06, 0xaa, 0x40, 0xd8, 0x0e, 0x92, 0x01, 0xe3, 0xbf, 0xef, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x0a, 0x84, 0xf1, 0x40, 0x15, 0x08, 0x2d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x0a, 0x84, 0xf5, 0x40, 0x15, 0x08, 0x0d, 0x07, 0xab, 0xf8, 0x77, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x40, 0xa8, 0x18, 0xa8, 0x02, 0xa1, 0x64, 0x10, 0x6c, 0xd0, 0xce, 0xc8, 0xfd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x65, 0x5a, 0x33, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0xc1, 0xc5, 0x01, 0xff, 0x2e, 0x6c, 0xad, 0x6c, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x5a, 0x44, 0x07, 0x96, 0x2e, 0xe2, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3d, 0x8b, 0xe8, 0xc1, 0x13, 0x65, 0x79, 0x86, 0x5d, 0xb8, 0x0d, 0xce, 0x91, 0xbb, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x5a, 0xc4, 0x0f, 0x2c, 0x5a, 0x84, 0xd5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa2, 0x45, 0x08, 0x06, 0x16, 0x2d, 0x42, 0x34, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x39, 0x72, 0x77, 0x83, 0x73, 0xe4, 0xee, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x3c, 0xde, 0x96, 0x67, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0xb4, 0x08, 0xd9, 0xc0, 0xa2, 0x45, 0x18, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x7e, 0x83, 0xf6, 0x25, 0x98, 0x06, 0xc9, 0x80, 0xe2, 0xef, 0xeb, 0x78, 0x7c, 0xe8, 0xa0, 0x31, 0xec, 0xc2, 0x6d, 0x90, 0xb6, 0x40, 0x7d, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa6, 0x45, 0xfc, 0xc0, 0xa6, 0x45, 0x58, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x5a, 0x84, 0x60, 0x60, 0xd3, 0x22, 0x44, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xa4, 0x2d, 0x50, 0x6f, 0x90, 0xb6, 0x40, 0x7d, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x0f, 0x2b, 0xe6, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x2d, 0x42, 0x36, 0xb0, 0x69, 0x11, 0x46, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x86, 0xdf, 0x60, 0xf5, 0x26, 0xda, 0x41, 0x39, 0x94, 0x74, 0xe8, 0xa0, 0x31, 0xec, 0x06, 0xcb, 0x6b, 0x0a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x2d, 0xe2, 0x07, 0x56, 0x2d, 0xc2, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xd5, 0x22, 0x04, 0x03, 0xab, 0x16, 0x21, 0x1a, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0xa9, 0x4d, 0xc1, 0x06, 0x4b, 0x6d, 0x0a, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0xed, 0xd2, 0x3c, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xaa, 0x45, 0xc8, 0x06, 0x56, 0x2d, 0xc2, 0x68, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xf0, 0x1b, 0x1c, 0xf7, 0x7a, 0x07, 0xc9, 0x80, 0xe4, 0xbd, 0xbe, 0xe3, 0xf1, 0xa1, 0x83, 0xc6, 0xb0, 0x1b, 0x0c, 0x76, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5d, 0x8b, 0xf8, 0x81, 0x5d, 0x8b, 0xb0, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0xb5, 0x08, 0xc1, 0xc0, 0xae, 0x45, 0x88, 0x0e, 0x86, 0xc8, 0xf1, 0x20, 0xdb, 0xe0, 0xe5, 0xe0, 0x3c, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xae, 0x45, 0xc8, 0x06, 0x76, 0x2d, 0xc2, 0x68, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xf0, 0x0b, 0x92, 0x81, 0xf6, 0x77, 0xc7, 0xe3, 0x83, 0x11, 0x12, 0x75, 0xe8, 0xa0, 0x31, 0xec, 0xc2, 0x6d, 0xb0, 0xfe, 0xf1, 0xe5, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x65, 0x8b, 0xf8, 0x81, 0x65, 0x8b, 0xb0, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0xb6, 0x08, 0xc1, 0xc0, 0xb2, 0x45, 0x88, 0x86, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0xff, 0xf8, 0xb2, 0xc1, 0xfa, 0xc7, 0x97, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x69, 0x3b, 0xcf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x6c, 0x11, 0xb2, 0x81, 0x65, 0x8b, 0x30, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0xfc, 0x06, 0x2d, 0xe7, 0x2f, 0x1d, 0x34, 0x46, 0xc0, 0x74, 0xe8, 0xa0, 0x31, 0xec, 0xc2, 0x6d, 0xd0, 0x06, 0xd7, 0xc0, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xdb, 0x16, 0xf1, 0x03, 0xdb, 0x16, 0x61, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x6d, 0x11, 0x82, 0x81, 0x6d, 0x8b, 0x10, 0x0d, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xd0, 0x06, 0xd7, 0xc0, 0x06, 0x6d, 0x70, 0x0d, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x93, 0xf7, 0x79, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6d, 0x8b, 0x90, 0x0d, 0x6c, 0x5b, 0x84, 0xd1, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0xe1, 0x17, 0x24, 0x03, 0x67, 0xdf, 0xf1, 0xf8, 0xa0, 0x29, 0xee, 0xa5, 0x43, 0x07, 0x8d, 0x61, 0x37, 0x18, 0x01, 0xbe, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xeb, 0x16, 0xf1, 0x03, 0xeb, 0x16, 0x61, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x6e, 0x11, 0x82, 0x81, 0x75, 0x8b, 0x10, 0x1d, 0x8c, 0x1b, 0xdf, 0x41, 0xb6, 0xc1, 0x53, 0x13, 0x7a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x75, 0x8b, 0x90, 0x0d, 0xac, 0x5b, 0x84, 0xd1, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0xe1, 0x37, 0x74, 0x31, 0x39, 0x58, 0xdd, 0x0b, 0x73, 0xe8, 0xa0, 0x31, 0xec, 0xc2, 0x6d, 0xf0, 0x68, 0x07, 0x9d, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x2d, 0xe2, 0x07, 0xf6, 0x2d, 0xc2, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xdf, 0x22, 0x04, 0x03, 0xfb, 0x16, 0x21, 0x1a, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xd1, 0x0e, 0x3a, 0x1b, 0x3c, 0xda, 0x41, 0xe7, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0xde, 0x60, 0xd1, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x5b, 0x84, 0x6c, 0x60, 0xdf, 0x22, 0x8c, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0xbf, 0xc1, 0x93, 0xf5, 0x06, 0x0e, 0x4e, 0x61, 0xb8, 0x87, 0x0e, 0x1a, 0xc3, 0x2e, 0xdc, 0x06, 0x8b, 0x57, 0x80, 0x0e, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0xb8, 0x88, 0x1f, 0x58, 0xb8, 0x08, 0xab, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x85, 0x8b, 0x10, 0x0c, 0x2c, 0x5c, 0x84, 0x68, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xc5, 0x2b, 0x40, 0x1b, 0x2c, 0x5e, 0x01, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0xd7, 0x90, 0xf4, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x0b, 0x17, 0x21, 0x1b, 0x58, 0xb8, 0x08, 0xa3, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0xc3, 0x2f, 0x48, 0x06, 0xae, 0xbf, 0xe3, 0xf1, 0xc1, 0x51, 0x4b, 0xf7, 0xd0, 0x41, 0x63, 0xd8, 0x85, 0xdb, 0x60, 0x1d, 0x33, 0xd8, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x1b, 0x17, 0xf1, 0x03, 0x1b, 0x17, 0x61, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x71, 0x11, 0x82, 0x81, 0x8d, 0x8b, 0x10, 0x0d, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xb0, 0x8e, 0x19, 0x6c, 0x83, 0x75, 0xcc, 0x60, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x44, 0x99, 0x9e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xe3, 0x22, 0x64, 0x03, 0x1b, 0x17, 0x61, 0x34, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0xf8, 0x0d, 0x1a, 0x78, 0x61, 0x3a, 0x58, 0xcb, 0x27, 0x70, 0xe8, 0xa0, 0x31, 0xec, 0x86, 0x3c, 0xd6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xca, 0x45, 0xfc, 0xc0, 0xca, 0x45, 0xd8, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x5c, 0x84, 0x60, 0x60, 0xe5, 0x22, 0x44, 0x87, 0x66, 0x91, 0x83, 0x6c, 0x83, 0x07, 0x00, 0xf5, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x5c, 0x84, 0x6c, 0x60, 0xe5, 0x22, 0x0c, 0x86, 0x5d, 0xb8, 0x0d, 0x8d, 0x04, 0x0f, 0x9e, 0x96, 0x89, 0x71, 0xf0, 0x02, 0x4d, 0x8c, 0x41, 0xb6, 0xc1, 0x03, 0x80, 0x7a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x95, 0x8b, 0xb0, 0x18, 0x58, 0xb9, 0x08, 0x93, 0x61, 0x37, 0x18, 0xeb, 0x68, 0x87, 0xc6, 0x51, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xce, 0x45, 0xfc, 0xc0, 0xce, 0x45, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x5c, 0x84, 0x60, 0x60, 0xe7, 0x22, 0x84, 0x83, 0x60, 0x83, 0x76, 0x46, 0xee, 0x0f, 0xd6, 0x25, 0x46, 0x0d, 0xb2, 0x0d, 0x1e, 0xf2, 0xd4, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x73, 0x11, 0xd2, 0x81, 0x9d, 0x8b, 0x30, 0x19, 0x76, 0xe1, 0x36, 0x34, 0x12, 0x3c, 0x78, 0x6e, 0xc7, 0xcd, 0x06, 0xcf, 0xed, 0xb8, 0x39, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x87, 0x3c, 0xf5, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x3b, 0x17, 0x61, 0x33, 0xb0, 0x73, 0x11, 0x76, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x40, 0x73, 0xb9, 0x43, 0xb6, 0xe2, 0xd0, 0x02, 0xec, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x06, 0x0f, 0xd9, 0x40, 0xae, 0x3d, 0x6e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x83, 0x47, 0x0f, 0xde, 0x2f, 0xd6, 0xb3, 0xb8, 0x20, 0x58, 0x1c, 0xc0, 0x13, 0x8d, 0x8e, 0x0e, 0xae, 0x45, 0xae, 0x6c, 0x0e, 0xee, 0xcd, 0x6d, 0xae, 0x1c, 0xe0, 0x1b, 0x0b, 0x73, 0x1b, 0x2b, 0x63, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xf0, 0xb8, 0x81, 0xbc, 0x78, 0xfc, 0xb0, 0x0b, 0xb7, 0x18, 0xf0, 0xca, 0x95, 0xc5, 0xd5, 0x95, 0xcd, 0xd1, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xc3, 0x43, 0x32, 0x90, 0x10, 0x0f, 0x7d, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xf1, 0x10, 0x0d, 0x24, 0xc4, 0xc3, 0x64, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xf7, 0xb1, 0xf5, 0x6c, 0xf0, 0x3e, 0xb6, 0x9e, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x8c, 0x5b, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x3c, 0xcc, 0x06, 0x12, 0xe2, 0x61, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xc4, 0xc3, 0xe6, 0xe0, 0x09, 0x78, 0x3d, 0x83, 0x60, 0x41, 0x32, 0x20, 0x7c, 0x77, 0x0e, 0xc6, 0xbb, 0xce, 0xc1, 0x62, 0x5d, 0xa6, 0x41, 0xb6, 0xc1, 0x63, 0xdc, 0x7a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x78, 0xa8, 0x18, 0x48, 0x88, 0x87, 0xba, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x21, 0x1e, 0xa6, 0x07, 0x8f, 0xfe, 0xeb, 0x19, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0xfc, 0x82, 0x64, 0x40, 0xb1, 0x7f, 0x77, 0x3c, 0x1f, 0x24, 0x03, 0xe3, 0x76, 0x3c, 0x3e, 0xb4, 0x00, 0x1b, 0x76, 0xe1, 0x16, 0x03, 0x7c, 0xc7, 0xc2, 0xdc, 0xc6, 0xca, 0xd8, 0x5a, 0xe4, 0xca, 0xe2, 0xea, 0xca, 0xe6, 0xe8, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xe2, 0x21, 0x19, 0xc8, 0x89, 0x87, 0x86, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x78, 0x88, 0x06, 0x72, 0xe2, 0x61, 0x39, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xa3, 0x0c, 0x7b, 0x36, 0x78, 0x94, 0x61, 0xcf, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0x1d, 0xb1, 0x67, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x89, 0x87, 0xf5, 0x40, 0x4e, 0x3c, 0x14, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xf1, 0x30, 0x3d, 0x78, 0xaf, 0x64, 0xcf, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x07, 0xeb, 0xd1, 0xb5, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x78, 0x48, 0x06, 0xd2, 0xe2, 0xa1, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x1e, 0xa2, 0x81, 0xb4, 0x78, 0x18, 0x0e, 0xbb, 0x70, 0x1b, 0xa2, 0x39, 0x1e, 0x3c, 0xcf, 0xac, 0x67, 0x83, 0xd7, 0x73, 0xf6, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0xcb, 0x2e, 0x7b, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x78, 0x98, 0x0e, 0xa4, 0xc5, 0x43, 0xd3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x16, 0x0f, 0xcb, 0x83, 0x37, 0x85, 0xf6, 0x1c, 0x2c, 0xac, 0x8b, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9d, 0x1e, 0x37, 0x90, 0x4e, 0x0f, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x7a, 0xc8, 0x06, 0xd2, 0xe9, 0x21, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xe9, 0xb1, 0x07, 0x4f, 0x59, 0xed, 0x19, 0x04, 0x1b, 0x3c, 0x6c, 0xaf, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xd2, 0x00, 0x9a, 0x43, 0xd6, 0xee, 0x38, 0x34, 0xc8, 0x36, 0x78, 0xb7, 0x69, 0xcf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4e, 0x0f, 0x9b, 0x81, 0x74, 0x7a, 0xd8, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xf4, 0x10, 0x1f, 0x3c, 0x74, 0xb6, 0x67, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x58, 0xbf, 0x3b, 0x9e, 0x1f, 0x3a, 0x68, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa5, 0x1e, 0x37, 0x90, 0x60, 0x8f, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xac, 0x87, 0xcd, 0x40, 0x62, 0x3d, 0xac, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x7a, 0x48, 0x0e, 0xde, 0xeb, 0xdb, 0x33, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x58, 0x0f, 0xa3, 0x83, 0xf7, 0xfa, 0xf6, 0x1c, 0x14, 0x76, 0x38, 0x83, 0x6c, 0x83, 0xf7, 0xe9, 0xf6, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xf5, 0xb0, 0x18, 0xc8, 0xaf, 0x87, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5b, 0x0f, 0xc9, 0xc1, 0x63, 0x90, 0x7b, 0x86, 0xdf, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xeb, 0x61, 0x72, 0xf0, 0x18, 0xe4, 0x9e, 0x43, 0x7f, 0xf2, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0xf1, 0xe0, 0x51, 0x68, 0x3d, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x63, 0x1e, 0x37, 0x90, 0x4a, 0x8f, 0x1f, 0x76, 0xe1, 0x16, 0x03, 0x7e, 0x38, 0xb9, 0xb7, 0x33, 0xb9, 0xb2, 0xb9, 0xf9, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x79, 0x48, 0x06, 0x72, 0xe8, 0x21, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x99, 0x87, 0x74, 0x20, 0x67, 0x1e, 0x66, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0x6e, 0xba, 0x67, 0x83, 0xc7, 0x4d, 0xf7, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x8b, 0xaa, 0x7b, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xe7, 0x21, 0x1e, 0xc8, 0x9c, 0x87, 0x8a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6d, 0x1e, 0xd2, 0x83, 0x47, 0x7c, 0xf7, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x7e, 0x83, 0x97, 0x0f, 0xf6, 0x1c, 0x8c, 0x90, 0xa8, 0x43, 0x53, 0xa0, 0x41, 0xb6, 0xc1, 0x8b, 0xaa, 0x7b, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xe7, 0x61, 0x38, 0x90, 0x3c, 0x0f, 0xdb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x79, 0x1e, 0xd2, 0x83, 0x57, 0x9d, 0xf7, 0x0c, 0x82, 0x0d, 0x1e, 0xb6, 0xd7, 0x73, 0xb0, 0xa2, 0x21, 0x6b, 0x90, 0x6d, 0xf0, 0xa2, 0xea, 0x9e, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x79, 0xd8, 0x0e, 0xe4, 0xcf, 0x43, 0xcb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3f, 0x0f, 0xe9, 0xc1, 0x1b, 0xdd, 0x7b, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x79, 0x18, 0x0f, 0xe4, 0xcf, 0x43, 0xc1, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xe7, 0xa1, 0x61, 0x20, 0x7f, 0x1e, 0x4a, 0x06, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x39, 0x58, 0x98, 0xfc, 0x73, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x2c, 0xe1, 0xff, 0x19, 0x64, 0x1b, 0xbc, 0xa8, 0xba, 0x67, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xa1, 0x87, 0xe5, 0x40, 0x0a, 0x3d, 0x94, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xf4, 0x90, 0x1e, 0xbc, 0xfb, 0xbf, 0x67, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xa1, 0x87, 0xe9, 0x40, 0x0a, 0x3d, 0xcc, 0x0f, 0xde, 0x8f, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x42, 0x0f, 0xfb, 0x81, 0x14, 0x7a, 0xe8, 0x38, 0x78, 0xdf, 0x6d, 0xcf, 0x71, 0xe8, 0xa0, 0x08, 0x1e, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x7e, 0xb3, 0x34, 0xb7, 0xb4, 0x39, 0xb4, 0x32, 0xf2, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x7a, 0x48, 0x06, 0xd2, 0xe8, 0xe1, 0xc5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1a, 0x3d, 0x44, 0x03, 0x69, 0xf4, 0xb0, 0x19, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x71, 0x0c, 0x3e, 0x1b, 0x3c, 0x8e, 0xc1, 0xe7, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x5e, 0xe4, 0xe0, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x46, 0x0f, 0xab, 0x81, 0x34, 0x7a, 0x68, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xe8, 0x61, 0x74, 0xf0, 0x10, 0x0c, 0x9f, 0x83, 0xb7, 0x88, 0xf7, 0x0c, 0xb2, 0x0d, 0x5e, 0xe4, 0xe0, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xd1, 0x43, 0xe9, 0x40, 0x1a, 0x3d, 0x9c, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xe8, 0xa1, 0xea, 0xe0, 0x9d, 0x1e, 0x3e, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1a, 0x3d, 0xb4, 0x0e, 0xa4, 0xd1, 0x43, 0xf3, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xe8, 0xa1, 0x7a, 0x20, 0x8d, 0x1e, 0x3e, 0x1c, 0x8c, 0x3b, 0xa8, 0xe3, 0xd0, 0xa1, 0x05, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x49, 0x0f, 0xc9, 0x40, 0x26, 0x3d, 0x8c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xe9, 0x21, 0x1a, 0xc8, 0xa4, 0x87, 0xc5, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0xe3, 0xc1, 0xb3, 0xd0, 0x7a, 0x36, 0x78, 0x21, 0x8c, 0xcf, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x3c, 0x5f, 0xc5, 0x67, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xa4, 0x87, 0xc9, 0x40, 0x26, 0x3d, 0x6c, 0x0e, 0x86, 0xe6, 0xef, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x78, 0xf0, 0x82, 0xf1, 0x92, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1b, 0x8f, 0x1b, 0xc8, 0x96, 0xc7, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xf1, 0xb8, 0x83, 0xc7, 0xe6, 0xf8, 0x0c, 0xbb, 0x70, 0x8b, 0x81, 0x2f, 0xf6, 0x26, 0xe7, 0x1e, 0xa2, 0xb9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x8e, 0x87, 0xc9, 0x40, 0x76, 0x3c, 0x6c, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x01, 0x43, 0xbd, 0xef, 0x78, 0x7e, 0x68, 0xd4, 0x32, 0xec, 0xc2, 0x6d, 0xf0, 0x86, 0x1e, 0x9f, 0x83, 0x90, 0x02, 0x3f, 0x18, 0x0b, 0xa3, 0xc3, 0x6e, 0xf0, 0xde, 0x1d, 0x8c, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x82, 0x3c, 0x4c, 0x06, 0x12, 0xe4, 0x61, 0x7b, 0xf0, 0x74, 0x20, 0x9f, 0x61, 0x17, 0x6e, 0x83, 0xb7, 0xef, 0x60, 0x1c, 0x84, 0x14, 0xf8, 0xc1, 0x58, 0x18, 0x1d, 0x76, 0xe1, 0x16, 0x0f, 0xde, 0x30, 0x5e, 0x72, 0x88, 0xe6, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x47, 0x1e, 0x26, 0x03, 0x39, 0xf2, 0xb0, 0x3d, 0x78, 0x3a, 0x90, 0xcf, 0xb0, 0x0b, 0xb7, 0xc1, 0x23, 0x96, 0x7c, 0x0e, 0x42, 0x0a, 0xfc, 0x60, 0x2c, 0x8c, 0x0e, 0xbb, 0xc1, 0x9b, 0xd8, 0x7a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xe4, 0x21, 0x19, 0x48, 0x93, 0x87, 0xca, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x79, 0x88, 0x06, 0xd2, 0xe4, 0x61, 0x72, 0xf0, 0x8c, 0xb9, 0x9e, 0x41, 0xb6, 0xc1, 0x5b, 0xa4, 0x7c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xe4, 0x61, 0x34, 0x90, 0x26, 0x0f, 0x05, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9a, 0x3c, 0x6c, 0x0e, 0x5e, 0xa7, 0xe5, 0x33, 0x08, 0x36, 0x78, 0xcb, 0x60, 0xcf, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0xe0, 0x2d, 0x52, 0x3e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9a, 0x3c, 0x54, 0x0c, 0xa4, 0xc9, 0x43, 0xe3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x26, 0x0f, 0x0d, 0x07, 0x6f, 0x0c, 0xf3, 0x19, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0x70, 0x5a, 0xc1, 0x3d, 0xb4, 0x00, 0x1b, 0x76, 0x83, 0x87, 0x18, 0xf6, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xca, 0x43, 0x32, 0x90, 0x29, 0x0f, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x79, 0x88, 0x06, 0x32, 0xe5, 0x61, 0x79, 0xf0, 0xea, 0xc6, 0x9e, 0x41, 0xb6, 0xc1, 0xa3, 0xce, 0x7c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x79, 0x98, 0x0e, 0x64, 0xca, 0xc3, 0xf6, 0x60, 0x68, 0xfe, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xf2, 0x90, 0x0c, 0x24, 0xcb, 0x43, 0xd7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x3c, 0x44, 0x03, 0xc9, 0xf2, 0x30, 0x19, 0x76, 0xe1, 0x36, 0x44, 0x73, 0x0c, 0x78, 0xe5, 0xca, 0xc6, 0xca, 0xd2, 0xec, 0xca, 0x0d, 0x9e, 0x65, 0xe7, 0x73, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x4f, 0x86, 0xf3, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x96, 0x87, 0xd9, 0x40, 0xb2, 0x3c, 0x2c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x79, 0xd8, 0x1c, 0xbc, 0x67, 0xcf, 0xe7, 0xe0, 0x25, 0x7b, 0x3d, 0x83, 0x6c, 0x83, 0x27, 0xc3, 0xf9, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xf2, 0xb0, 0x1d, 0x48, 0x96, 0x87, 0xaa, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x59, 0x1e, 0xa6, 0x07, 0x8f, 0x0d, 0xf4, 0x19, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0xfc, 0x06, 0x2f, 0x1f, 0xec, 0x39, 0x78, 0x6f, 0x5a, 0xc0, 0xa1, 0x05, 0xd8, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb2, 0xc7, 0x0d, 0xa4, 0xda, 0x43, 0xdb, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xec, 0x71, 0x07, 0x6f, 0x4e, 0xf4, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xec, 0x71, 0x07, 0x6f, 0x4e, 0xf4, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xf6, 0xf8, 0x81, 0x44, 0x7b, 0x28, 0x1a, 0x76, 0xc3, 0xae, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa2, 0x3d, 0x8c, 0x06, 0x12, 0xed, 0x61, 0x75, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x68, 0x0f, 0xb3, 0x81, 0x44, 0x7b, 0xe8, 0xd9, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd1, 0x1e, 0x76, 0x07, 0x0f, 0xc3, 0xf4, 0x39, 0x18, 0x99, 0xbd, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xaa, 0x3d, 0xee, 0xe0, 0xcd, 0x89, 0x3e, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xf6, 0xd8, 0x81, 0x54, 0x7b, 0x18, 0x1e, 0x14, 0x87, 0x1a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xf6, 0xb0, 0x1c, 0x48, 0xb5, 0x87, 0x9e, 0x83, 0x71, 0x61, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xda, 0x43, 0xd1, 0x40, 0xaa, 0x3d, 0x94, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0x20, 0xf9, 0xc6, 0x79, 0x30, 0x8b, 0x1b, 0x04, 0x1b, 0xda, 0xce, 0x2c, 0x0e, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x6c, 0xa2, 0x07, 0xcf, 0x50, 0xf5, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x6c, 0x42, 0x3a, 0xd8, 0x84, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xd8, 0xc4, 0x1f, 0xbc, 0x0e, 0xd6, 0x67, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x6c, 0x42, 0x3c, 0xd8, 0x84, 0xc5, 0x20, 0x19, 0x78, 0xa7, 0xef, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x36, 0x61, 0x32, 0xd8, 0x84, 0xed, 0x21, 0x75, 0x70, 0x1c, 0x3a, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0xaf, 0x63, 0xf5, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x8c, 0x42, 0x38, 0x18, 0x85, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x8c, 0xe2, 0x0f, 0x5e, 0xe9, 0xeb, 0x33, 0x08, 0x36, 0x68, 0xe5, 0xba, 0xfc, 0x60, 0xb1, 0x2e, 0xd3, 0x20, 0xdb, 0xe0, 0x75, 0xac, 0x3e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x60, 0x15, 0x06, 0x83, 0x55, 0xd8, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x55, 0xfc, 0xc1, 0x8b, 0x8a, 0x7d, 0x86, 0xdf, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xab, 0xb0, 0x38, 0x78, 0x51, 0xb1, 0xcf, 0x41, 0x3a, 0x94, 0xc7, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x78, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xe8, 0x8a, 0x0e, 0x7e, 0xc5, 0x0d, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xe8, 0x8a, 0x1f, 0x74, 0x86, 0x64, 0x71, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb4, 0x85, 0x64, 0x50, 0x19, 0xfa, 0x87, 0xdd, 0xd0, 0x71, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x50, 0x17, 0x92, 0x83, 0x67, 0x4f, 0xfb, 0x0c, 0xbb, 0x41, 0x30, 0xec, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xea, 0x42, 0x3a, 0x68, 0x0c, 0xf9, 0xb0, 0x0b, 0xbb, 0x41, 0x30, 0xec, 0x2f, 0xec, 0xc2, 0x6d, 0xb0, 0xd4, 0xa6, 0xe0, 0x60, 0xfc, 0x74, 0x1d, 0xb4, 0xbe, 0xe6, 0x7e, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x0d, 0xde, 0x3c, 0xbc, 0x31, 0xa8, 0x0b, 0x17, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x0d, 0x1e, 0xdf, 0xbb, 0x31, 0xa8, 0x0b, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x41, 0x5d, 0xd8, 0x0c, 0xea, 0xc2, 0x6a, 0xd8, 0x85, 0xdb, 0x60, 0xfc, 0x74, 0x1d, 0x2c, 0xb5, 0x29, 0x38, 0x78, 0x3f, 0x36, 0xcf, 0x20, 0xdb, 0xe0, 0x0d, 0xe0, 0x3e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xa0, 0x2e, 0xcc, 0x06, 0x75, 0x61, 0x37, 0xec, 0x06, 0xa5, 0x2f, 0xd8, 0xa1, 0x71, 0xd4, 0x20, 0xdb, 0xe0, 0x8d, 0xdd, 0x3e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xa0, 0x2e, 0x2c, 0x07, 0x75, 0xa1, 0x72, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd4, 0x85, 0xe9, 0xa0, 0x2e, 0xcc, 0x0f, 0x5e, 0xa2, 0x51, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xa0, 0x2e, 0xec, 0x07, 0x75, 0xa1, 0x6f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xea, 0x42, 0xc1, 0xa0, 0x2e, 0x94, 0x1c, 0xbc, 0x44, 0xa3, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x41, 0x5d, 0x68, 0x19, 0xd4, 0x85, 0xa6, 0x41, 0x32, 0x50, 0xbb, 0x0e, 0x86, 0xa1, 0xcf, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x41, 0x5d, 0xa8, 0x1a, 0xd4, 0x85, 0xba, 0x83, 0x07, 0xef, 0xfb, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xea, 0x42, 0xe1, 0xa0, 0x2e, 0x34, 0x0e, 0x82, 0x0d, 0x1e, 0xb6, 0xd7, 0x73, 0x30, 0x8e, 0x43, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x61, 0x17, 0x76, 0x83, 0x60, 0xd8, 0x5f, 0xd8, 0x85, 0xdb, 0x60, 0x55, 0xf7, 0xc2, 0xc1, 0xf8, 0xe9, 0x3a, 0x68, 0x7d, 0xcd, 0xfd, 0x70, 0xb4, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x1b, 0xbc, 0xdb, 0x79, 0x63, 0xd0, 0x17, 0x6e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x1b, 0x3c, 0x20, 0x79, 0x63, 0xd0, 0x17, 0x86, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0xbe, 0xb0, 0x19, 0xf4, 0x85, 0xd5, 0xb0, 0x0b, 0xb7, 0xc1, 0xf8, 0xe9, 0x3a, 0x58, 0xd5, 0xbd, 0xb0, 0xc1, 0xaa, 0xee, 0x85, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x0c, 0xc3, 0xcf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xe8, 0x0b, 0xb3, 0x41, 0x5f, 0xd8, 0x1d, 0xbc, 0x32, 0xdd, 0x67, 0x90, 0x6d, 0xf0, 0xd8, 0x84, 0x9f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xd0, 0x17, 0x96, 0x83, 0xbe, 0x50, 0x39, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xfa, 0xc2, 0x74, 0xd0, 0x17, 0xe6, 0x07, 0x2f, 0xd1, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xd0, 0x17, 0xf6, 0x83, 0xbe, 0xd0, 0x37, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x7d, 0xa1, 0x60, 0xd0, 0x17, 0x4a, 0x0e, 0x5e, 0xa2, 0x51, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xa0, 0x2f, 0xb4, 0x0c, 0xfa, 0x42, 0xd3, 0xc1, 0x83, 0xf7, 0x7d, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xfa, 0x42, 0xd5, 0xa0, 0x2f, 0xd4, 0x1d, 0x3c, 0x78, 0xdf, 0xe7, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xd0, 0x17, 0x0a, 0x07, 0x7d, 0xa1, 0xf1, 0xe0, 0xed, 0x03, 0x3f, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x28, 0x0c, 0x8b, 0x41, 0x61, 0x78, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x28, 0x0c, 0x93, 0x41, 0x61, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0a, 0xc3, 0x66, 0x50, 0x18, 0x56, 0xc3, 0x2e, 0xdc, 0x06, 0xe3, 0xa7, 0xeb, 0x60, 0x8d, 0xb6, 0xc2, 0x06, 0x6b, 0xb4, 0x15, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0xd9, 0x33, 0x3f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xa0, 0x30, 0xcc, 0x06, 0x85, 0x61, 0x77, 0xf0, 0xca, 0x74, 0x9f, 0x41, 0xb6, 0xc1, 0xf3, 0x62, 0x7e, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x41, 0x61, 0xd8, 0x0e, 0x0a, 0xc3, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x14, 0x86, 0xe5, 0xc1, 0x9b, 0x81, 0x7e, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x1d, 0x24, 0x10, 0x9e, 0x1c, 0x3a, 0x68, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0xca, 0x90, 0x1c, 0x3c, 0x7b, 0xda, 0x67, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x54, 0x86, 0x68, 0x50, 0x19, 0xe2, 0x83, 0x97, 0x68, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xa8, 0x0c, 0xf9, 0xa0, 0x32, 0x6c, 0x0e, 0x1e, 0xbc, 0xef, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0xe0, 0xc5, 0xe9, 0x1c, 0x07, 0x8f, 0x63, 0xe7, 0x38, 0x78, 0xfb, 0xc0, 0xcf, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x68, 0xd4, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x1b, 0xbc, 0x26, 0x77, 0x63, 0xd0, 0x16, 0x5e, 0x1c, 0xbc, 0x7d, 0xe0, 0xe7, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa5, 0xd1, 0x83, 0xb7, 0x38, 0xfb, 0x0c, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x68, 0x8d, 0x1e, 0xbc, 0xc5, 0xd9, 0x67, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x41, 0x6d, 0xf4, 0xe0, 0x2d, 0xce, 0x3e, 0x8b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0xe2, 0xb8, 0x41, 0x73, 0xb8, 0x30, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0xc2, 0x6e, 0x10, 0x0c, 0xfb, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0xe2, 0x90, 0x0c, 0x8a, 0xc3, 0x89, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x83, 0x47, 0xf7, 0x6f, 0x0c, 0x8a, 0x43, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8a, 0x43, 0x74, 0xf0, 0x76, 0xb4, 0x9f, 0x41, 0xb0, 0xc1, 0xca, 0xda, 0xa8, 0x43, 0x1a, 0x6e, 0x90, 0x6d, 0xf0, 0x64, 0xb2, 0x9f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0xe0, 0x39, 0xfe, 0x1b, 0x07, 0xcf, 0xd7, 0xdf, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc5, 0x21, 0x3e, 0x78, 0xbe, 0xfe, 0xc6, 0xc1, 0x52, 0xda, 0xa8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xd0, 0x1c, 0x77, 0xf0, 0x40, 0xb1, 0x9f, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x41, 0x73, 0x08, 0x0e, 0x1e, 0xdc, 0xc7, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9a, 0x63, 0x0f, 0x1e, 0xdc, 0xc7, 0x31, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x6e, 0x1d, 0x0c, 0xff, 0xd8, 0x43, 0x1a, 0x6e, 0x90, 0x6d, 0xf0, 0xae, 0xb9, 0x9f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xd0, 0x1c, 0xf2, 0x41, 0x73, 0x98, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0xe6, 0x90, 0x1e, 0x3c, 0xe0, 0xef, 0x67, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x0e, 0x9e, 0xb6, 0xc7, 0x71, 0xd0, 0xec, 0xc0, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc1, 0x5b, 0x0a, 0x39, 0x0e, 0xde, 0x2d, 0xc8, 0x71, 0xb0, 0x8c, 0xcb, 0xeb, 0x38, 0x74, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xbc, 0x8a, 0x1b, 0xdc, 0x0a, 0x45, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6e, 0xc5, 0x1d, 0x3c, 0x96, 0xf1, 0x67, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x5b, 0x21, 0x1c, 0xdc, 0x0a, 0x3d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x56, 0x98, 0x1f, 0x3c, 0x4a, 0xf2, 0x67, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0xad, 0x50, 0x70, 0xf0, 0x28, 0xc9, 0x9f, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb8, 0x15, 0x1a, 0x06, 0xb7, 0x42, 0xc9, 0xc1, 0xba, 0xb6, 0xb1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0xad, 0xd0, 0x32, 0xb8, 0x15, 0x6a, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0xf1, 0xfc, 0x78, 0x7c, 0x30, 0x3a, 0x3a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x41, 0x79, 0xdc, 0xe0, 0x52, 0xfc, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0xf6, 0xb8, 0x83, 0x77, 0x87, 0xfe, 0x0c, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x50, 0x1f, 0x77, 0xf0, 0xee, 0xd0, 0x9f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xd0, 0x1f, 0x77, 0xf0, 0xee, 0xd0, 0x9f, 0x61, 0x37, 0x08, 0x7a, 0xfd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x8b, 0xb8, 0x83, 0x77, 0x87, 0xfe, 0x0c, 0xbb, 0x61, 0xd7, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0xe0, 0x6d, 0x07, 0x1d, 0x83, 0x17, 0x61, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x6c, 0xf0, 0xec, 0x83, 0x8e, 0x83, 0xa7, 0xe9, 0x73, 0x1c, 0x62, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x78, 0x11, 0x16, 0x83, 0x17, 0x61, 0x74, 0x88, 0xe6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x78, 0x11, 0x56, 0x83, 0x17, 0x61, 0x76, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb8, 0x11, 0x77, 0xf0, 0xee, 0xd0, 0x9f, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb8, 0x12, 0x77, 0xf0, 0xee, 0xd0, 0x9f, 0x61, 0x37, 0x28, 0x42, 0x06, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x5f, 0xe2, 0x07, 0x5f, 0xc2, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xf0, 0x25, 0x04, 0x83, 0x2f, 0x21, 0x3d, 0x34, 0x12, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x5f, 0x42, 0x3c, 0xf8, 0x12, 0xe6, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xf0, 0x25, 0xe4, 0x83, 0x2f, 0x61, 0x73, 0xb0, 0xea, 0x0b, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x97, 0x30, 0x1a, 0x7c, 0x09, 0xbb, 0x43, 0x34, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xbe, 0x84, 0xe1, 0xe0, 0x4b, 0x58, 0x1f, 0x1a, 0x09, 0x1e, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x99, 0xb8, 0x83, 0x77, 0x87, 0xfe, 0x0c, 0xbb, 0xb0, 0x0b, 0x3d, 0x18, 0x5e, 0x14, 0x87, 0xf5, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x9b, 0x90, 0x0f, 0xde, 0x84, 0xd2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x9b, 0x30, 0x18, 0xbc, 0x09, 0x5d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xf0, 0x26, 0x2c, 0x06, 0x6f, 0xc2, 0xe8, 0xa0, 0xb9, 0xc3, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6f, 0xc2, 0x6a, 0xf0, 0x26, 0x54, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xde, 0x84, 0xd9, 0xe0, 0x4d, 0x58, 0x1e, 0xa2, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xde, 0x84, 0xe9, 0xe0, 0x4d, 0x68, 0x38, 0x18, 0x5e, 0x14, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6f, 0x42, 0xc7, 0xe0, 0x4d, 0xa8, 0x3a, 0x18, 0xa6, 0x13, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xf0, 0x26, 0x94, 0x0d, 0xde, 0x84, 0xce, 0x83, 0xe1, 0x45, 0x31, 0xec, 0xc2, 0x6e, 0xf0, 0x46, 0xe9, 0x9f, 0x85, 0x5d, 0xb8, 0x0d, 0x96, 0xda, 0x14, 0x4c, 0x38, 0xba, 0x70, 0x1b, 0x62, 0x38, 0xe1, 0xe9, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x3b, 0x21, 0x1f, 0xdc, 0x09, 0x85, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x3b, 0x61, 0x30, 0xb8, 0x13, 0x5a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x4e, 0x58, 0x0c, 0xee, 0x84, 0xd1, 0xc1, 0x5a, 0x43, 0xaf, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x77, 0xc2, 0x6a, 0x70, 0x27, 0x0c, 0x0f, 0xd1, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb8, 0x13, 0x96, 0x83, 0x3b, 0xa1, 0x64, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x9d, 0xb0, 0x3f, 0x78, 0x11, 0xff, 0xcf, 0xa1, 0x91, 0xe0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x4e, 0x98, 0x0e, 0xee, 0x84, 0xed, 0x21, 0x75, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xee, 0x84, 0xf1, 0xe0, 0x4e, 0x58, 0x1f, 0x92, 0x4b, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x27, 0xd4, 0x0c, 0xee, 0x84, 0xbe, 0x83, 0xc7, 0xa5, 0xd8, 0x0c, 0xbb, 0xb0, 0x1b, 0xbc, 0x51, 0xfa, 0x67, 0x61, 0x17, 0x6e, 0x83, 0x55, 0xdd, 0x0b, 0x07, 0x6f, 0x64, 0xff, 0x39, 0x78, 0x35, 0xfb, 0xcf, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xfc, 0x09, 0xf9, 0xe0, 0x4f, 0x68, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x3f, 0x61, 0x32, 0xf8, 0x13, 0x7a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x4f, 0xd8, 0x0c, 0xfe, 0x84, 0xd9, 0xc1, 0x5a, 0x43, 0xaf, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x7f, 0xc2, 0x6e, 0xf0, 0x27, 0x4c, 0x0f, 0xd1, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xf8, 0x13, 0xb6, 0x83, 0x3f, 0xa1, 0x66, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x9f, 0xd0, 0x70, 0xf0, 0xe2, 0x0c, 0xa0, 0x43, 0x23, 0xc1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x9f, 0x30, 0x1e, 0xfc, 0x09, 0xeb, 0x43, 0xea, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xfc, 0x09, 0xf3, 0xc1, 0x9f, 0xb0, 0x3f, 0x24, 0x97, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x4f, 0x28, 0x1a, 0xfc, 0x09, 0xc5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x3f, 0xa1, 0x69, 0xf0, 0x27, 0x54, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x9f, 0xd0, 0x35, 0xf8, 0x13, 0x7a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x4f, 0x28, 0x1b, 0xfc, 0x09, 0x85, 0x07, 0xab, 0x0b, 0x23, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xfc, 0x09, 0x8d, 0x83, 0x3f, 0xa1, 0xf4, 0x90, 0xb5, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xf8, 0x13, 0x5a, 0x07, 0x7f, 0x42, 0xed, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0xd0, 0x7e, 0x7d, 0xd8, 0x0d, 0xde, 0x28, 0xfd, 0xb3, 0xb0, 0x0b, 0xb7, 0xc1, 0x1a, 0x6d, 0x85, 0x83, 0x37, 0xb2, 0xff, 0x1c, 0xbc, 0x9a, 0xfd, 0xe7, 0x70, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x43, 0x21, 0x1f, 0x3c, 0x0a, 0x15, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x28, 0xcc, 0x06, 0x87, 0x42, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x1c, 0x0a, 0xd3, 0xc1, 0xa1, 0xd0, 0x70, 0x30, 0x4c, 0x27, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x51, 0xc8, 0x0f, 0x1e, 0xa3, 0x03, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x78, 0x14, 0x06, 0x83, 0x47, 0x61, 0x73, 0x10, 0x52, 0xe0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x51, 0x18, 0x0d, 0x1e, 0x85, 0x86, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x78, 0x14, 0x56, 0x83, 0x47, 0x61, 0x38, 0x48, 0x06, 0xba, 0x3b, 0x1d, 0x9c, 0x84, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x3c, 0x0a, 0xcb, 0xc1, 0xa3, 0x30, 0x3e, 0x08, 0x01, 0xf0, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x47, 0x61, 0x3d, 0x78, 0x14, 0x0a, 0x0e, 0x59, 0xbb, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xf8, 0x11, 0x3f, 0x38, 0x12, 0x8a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x47, 0x88, 0x0f, 0xde, 0xf7, 0xd1, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xf8, 0x11, 0x46, 0x83, 0x1f, 0x61, 0x79, 0xe8, 0x18, 0x76, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x47, 0xe2, 0x0f, 0x5e, 0x57, 0x05, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x38, 0x12, 0x82, 0xc1, 0x91, 0xd0, 0x32, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x47, 0x42, 0x32, 0x38, 0x12, 0xc2, 0x83, 0x13, 0x9f, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x23, 0x21, 0x1d, 0x1c, 0x09, 0x83, 0x43, 0x34, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8e, 0x84, 0xc5, 0xe0, 0x48, 0x28, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x23, 0x61, 0x32, 0x38, 0x12, 0x56, 0x83, 0x64, 0xa0, 0x2e, 0x1d, 0x1c, 0xb3, 0x8a, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x1c, 0x09, 0xb3, 0xc1, 0x91, 0xb0, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x1c, 0x09, 0xbb, 0xc1, 0x91, 0x30, 0x3d, 0xc4, 0x7f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x1c, 0x09, 0xdb, 0xc1, 0x91, 0x30, 0x3f, 0x8c, 0xcb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x91, 0x50, 0x30, 0x38, 0x12, 0x3a, 0x0e, 0x42, 0x0a, 0xfc, 0x38, 0x74, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x1c, 0x09, 0x35, 0x83, 0x23, 0xa1, 0xe9, 0x10, 0xff, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x24, 0x54, 0x0d, 0x8e, 0x84, 0xde, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x38, 0x12, 0xba, 0x06, 0x47, 0x42, 0xdd, 0xc1, 0x89, 0xcf, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x91, 0xd0, 0x37, 0x38, 0x12, 0x2a, 0x0f, 0xe3, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x24, 0x74, 0x0e, 0x8e, 0x84, 0xda, 0x83, 0xc1, 0x1a, 0x7b, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x07, 0xe2, 0x07, 0x1f, 0x42, 0xe9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x1c, 0x08, 0xf1, 0xe0, 0x40, 0x98, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x81, 0x30, 0x19, 0x1c, 0x08, 0xab, 0x43, 0x34, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x41, 0xfc, 0xc1, 0x53, 0x18, 0x81, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x41, 0x88, 0x07, 0x0f, 0xc2, 0x6c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1e, 0x84, 0xc9, 0xe0, 0x41, 0x58, 0x1d, 0xf2, 0xb5, 0xc7, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x21, 0xfe, 0xe0, 0x29, 0x8c, 0x40, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x21, 0xc4, 0x83, 0x0b, 0x61, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x17, 0x42, 0x3e, 0xb8, 0x10, 0x26, 0x83, 0x64, 0xa0, 0xbb, 0xd3, 0xc1, 0x31, 0xab, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x85, 0xb0, 0x19, 0x5c, 0x08, 0xb3, 0xc3, 0xb8, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x5c, 0x08, 0xbb, 0xc1, 0x85, 0x30, 0x3d, 0x08, 0xb2, 0xf8, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xf8, 0x10, 0x7f, 0xf0, 0x14, 0x46, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x87, 0x10, 0x0c, 0x3e, 0x84, 0x8e, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xf8, 0x10, 0x92, 0xc1, 0x87, 0x10, 0x1e, 0x34, 0x96, 0x08, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x43, 0x48, 0x07, 0x1f, 0xc2, 0xe0, 0x90, 0xb5, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xf8, 0x10, 0x16, 0x83, 0x0f, 0xa1, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x3e, 0x84, 0xc9, 0xe0, 0x43, 0x58, 0x0d, 0x92, 0x81, 0xba, 0x74, 0x70, 0xf6, 0x32, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xf0, 0x21, 0xcc, 0x06, 0x1f, 0xc2, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xf0, 0x21, 0xec, 0x06, 0x1f, 0xc2, 0xf4, 0xd0, 0x48, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x7c, 0x08, 0xdb, 0xc1, 0x87, 0x30, 0x3e, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x7c, 0x08, 0xf3, 0xc1, 0x87, 0xd0, 0x70, 0x88, 0xe6, 0x71, 0xe8, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xf8, 0x10, 0x4a, 0x06, 0x1f, 0x42, 0xcf, 0xa1, 0x91, 0xe0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xf8, 0x10, 0x8a, 0x06, 0x1f, 0x42, 0xe7, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x7c, 0x08, 0x4d, 0x83, 0x0f, 0xa1, 0xec, 0xa0, 0xb1, 0x44, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x1f, 0x42, 0xdb, 0xe0, 0x43, 0x28, 0x3c, 0x08, 0x4a, 0xef, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x0f, 0xa1, 0x71, 0xf0, 0x21, 0x54, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0x99, 0x85, 0xe1, 0x87, 0xd4, 0xd2, 0xf1, 0xf8, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x37, 0x68, 0xdb, 0xb1, 0x69, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xd0, 0x1a, 0xe2, 0x41, 0x6b, 0x18, 0x1d, 0x92, 0x4b, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x41, 0x69, 0xfc, 0xa0, 0x34, 0x04, 0x07, 0x25, 0x43, 0xd3, 0x0a, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x97, 0x61, 0x32, 0x78, 0x19, 0x46, 0x83, 0x64, 0xe0, 0xfd, 0xbe, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0xf7, 0xda, 0xf8, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdd, 0x8a, 0xe8, 0xc0, 0x96, 0x45, 0xdc, 0xb0, 0x0b, 0xbb, 0x70, 0x8b, 0x81, 0x0f, 0xc7, 0x56, 0x16, 0x1e, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0xa3, 0x95, 0x95, 0xc9, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x1b, 0xbc, 0x77, 0x07, 0x63, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x1e, 0x1d, 0xbe, 0x73, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x07, 0xab, 0xb6, 0xc9, 0x0f, 0xd1, 0xdc, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0xf1, 0x60, 0xf9, 0x6e, 0xcf, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0xfe, 0x9c, 0x5b, 0x9d, 0x78, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0xc3, 0x95, 0x7c, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0xfc, 0xb6, 0xb7, 0xb5, 0xf2, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x3f, 0xcd, 0x2d, 0x8d, 0x3e, 0x44, 0x73, 0x43, 0x0c, 0x87, 0xdd, 0xa0, 0xd5, 0x86, 0xfb, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x0f, 0x4e, 0x57, 0x65, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x6d, 0x65, 0x65, 0xeb, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0x3e, 0x9c, 0xdc, 0x1b, 0x79, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0x3f, 0xf6, 0xe6, 0x76, 0x1e, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0xe2, 0x41, 0x33, 0xf8, 0x56, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x77, 0x68, 0x61, 0xed, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x1e, 0xac, 0xd6, 0x2c, 0x3a, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0xc6, 0xd3, 0xdc, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0xfe, 0x5a, 0x59, 0x99, 0x7b, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x07, 0xad, 0xc3, 0x97, 0x1e, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0xe2, 0x41, 0x32, 0xcc, 0xe7, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0xfe, 0x5c, 0x9a, 0x19, 0x7d, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0xdf, 0x56, 0x36, 0x37, 0x1f, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0x6e, 0x1e, 0x9f, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x7f, 0x4d, 0xee, 0x6d, 0x3c, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0x83, 0x05, 0xbc, 0xd3, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x78, 0xd0, 0x70, 0x26, 0xd9, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0x3e, 0x5a, 0x59, 0x98, 0x7c, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0x4f, 0x17, 0xd6, 0x56, 0x1e, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0xe2, 0xc1, 0x9a, 0x2c, 0x9e, 0x43, 0x34, 0x37, 0xc4, 0x70, 0xb8, 0xc5, 0xc0, 0x9f, 0x83, 0x2b, 0xbb, 0x0f, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0xad, 0x88, 0x1f, 0xd8, 0xad, 0x08, 0x83, 0x41, 0xb0, 0xc1, 0xd3, 0x82, 0x79, 0x0e, 0x8d, 0x5a, 0x86, 0x5d, 0xd8, 0x0d, 0xde, 0x9b, 0x0e, 0xb4, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0xde, 0x1d, 0x8c, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x9f, 0x2c, 0x4d, 0x6e, 0x3d, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0xc0, 0x87, 0x2b, 0x93, 0x6b, 0x0f, 0xd1, 0xdc, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xe9, 0xd2, 0xe4, 0xca, 0x43, 0x34, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0xfc, 0xbb, 0x30, 0x39, 0xf8, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x7f, 0x4c, 0xae, 0xec, 0x3e, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0xc0, 0x17, 0x7b, 0x0b, 0xa3, 0x0f, 0xd1, 0xdc, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xf5, 0xca, 0xc2, 0xd8, 0x43, 0x34, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0xfc, 0xb6, 0x32, 0xb9, 0xf3, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0x87, 0x2b, 0xf9, 0x6c, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x78, 0xb0, 0xe6, 0x59, 0xee, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0x87, 0xdd, 0x03, 0x6d, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x78, 0xd0, 0x0c, 0x1b, 0xca, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0x3e, 0x9c, 0x5c, 0x19, 0x7c, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0x3f, 0x26, 0x57, 0x46, 0x1e, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0xe2, 0xc1, 0xe9, 0x51, 0xe1, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0xbf, 0xed, 0xcd, 0x8d, 0x3e, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0xc0, 0x87, 0x7b, 0x93, 0x5b, 0x0f, 0xd1, 0xdc, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xe9, 0xde, 0xda, 0xc4, 0x43, 0x34, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0xfc, 0x34, 0x37, 0xb3, 0xf7, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x1f, 0x2e, 0x4c, 0x6e, 0x3d, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0xc0, 0xbf, 0x2b, 0x93, 0x83, 0x0f, 0xd1, 0xdc, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xdf, 0xce, 0xe4, 0xca, 0x43, 0x34, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0xb9, 0xb2, 0x34, 0xf7, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x5f, 0xaf, 0x6c, 0x8e, 0x3e, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0x83, 0x12, 0xd4, 0xeb, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x7f, 0x4c, 0xee, 0xed, 0x3e, 0x44, 0x73, 0x43, 0x0c, 0x0f, 0x5e, 0x8d, 0x11, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x5c, 0x11, 0x3f, 0xb0, 0x5c, 0x11, 0x06, 0x83, 0x60, 0x83, 0xd7, 0x75, 0xf3, 0x1c, 0x1a, 0xb5, 0x0c, 0xbb, 0xb0, 0x1b, 0xbc, 0x77, 0x07, 0x63, 0x43, 0x0c, 0x87, 0xdd, 0xe0, 0xe1, 0x4a, 0x3e, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x1e, 0x3c, 0xf1, 0x95, 0xe7, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x9f, 0x4c, 0x2e, 0x0d, 0x3e, 0x44, 0x73, 0x43, 0x0c, 0x87, 0xdd, 0xe0, 0xdd, 0x3c, 0x3e, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0x3e, 0x5a, 0xdd, 0xd8, 0x7a, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x1b, 0x2c, 0x42, 0xb5, 0x3a, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5b, 0x3c, 0x68, 0xfc, 0xa8, 0xe5, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xed, 0x8a, 0xf8, 0x81, 0xed, 0x8a, 0x30, 0x18, 0x04, 0x1b, 0x3c, 0xfc, 0x99, 0xe7, 0xd0, 0xa8, 0x65, 0xd8, 0x85, 0xdd, 0xe0, 0xbd, 0x3b, 0x18, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x1e, 0x2c, 0x09, 0xce, 0x3e, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0xc0, 0x9f, 0x43, 0xab, 0xa3, 0x0f, 0xd1, 0xdc, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0xf1, 0xe0, 0xd8, 0x1b, 0x72, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0x6f, 0xc6, 0xf6, 0x76, 0x1e, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0xa4, 0x3d, 0x8c, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0xc7, 0x63, 0x6d, 0x6c, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x73, 0x65, 0x61, 0xf4, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0x7e, 0x5b, 0x19, 0x1b, 0x79, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0x1f, 0x57, 0x17, 0x36, 0x1e, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0x70, 0x25, 0x9f, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x78, 0xfb, 0x57, 0xc9, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0x3e, 0xdb, 0xdb, 0xd9, 0x7c, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0x2f, 0xc6, 0x56, 0x76, 0x1f, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0x9b, 0xb1, 0x95, 0x95, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x68, 0x65, 0x66, 0xf4, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0x06, 0xed, 0xec, 0xdb, 0x6f, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x74, 0x61, 0x6c, 0xeb, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0x06, 0x0f, 0xbb, 0x07, 0xda, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xe7, 0xd0, 0xde, 0xe8, 0x43, 0x34, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0x5b, 0x3c, 0x78, 0xb1, 0xf5, 0xca, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x1e, 0x34, 0xac, 0x44, 0x72, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0xbb, 0x79, 0x7c, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0xfc, 0x35, 0xb7, 0x37, 0xf1, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x1f, 0x2d, 0x2c, 0x8d, 0x3d, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0x83, 0xb7, 0xf4, 0x86, 0x1c, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2d, 0x06, 0xbe, 0x58, 0x19, 0x1b, 0x7d, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x7a, 0x45, 0xfc, 0xc0, 0x7a, 0x45, 0x18, 0x0c, 0x82, 0x0d, 0x5e, 0x9d, 0xce, 0x73, 0x68, 0xd4, 0x32, 0xec, 0xc2, 0x6e, 0xf0, 0xde, 0x74, 0xa0, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0xf7, 0xee, 0x60, 0x6c, 0x88, 0xe1, 0xb0, 0x1b, 0xbc, 0x89, 0xad, 0x67, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0x00, 0x4f, 0xb9, 0x32, 0xb5, 0xb2, 0x31, 0xba, 0x96, 0x37, 0xb9, 0xb4, 0xb3, 0x34, 0xf7, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x7c, 0xca, 0xc2, 0xea, 0xe8, 0xd0, 0x5a, 0xd0, 0xde, 0xe6, 0xe8, 0x43, 0x34, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0x78, 0xe6, 0xca, 0xe4, 0xec, 0xca, 0x43, 0x34, 0x37, 0xc4, 0x70, 0xd8, 0x0d, 0x1e, 0xae, 0xe4, 0xb3, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0x10, 0xc3, 0x9e, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x3c, 0xe5, 0xca, 0xe2, 0xea, 0xca, 0xe6, 0xe8, 0x5a, 0xd8, 0xde, 0xc6, 0xc2, 0xd8, 0x43, 0x34, 0x37, 0xc4, 0x70, 0xd8, 0x0d, 0x1e, 0x76, 0x0f, 0xb4, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x62, 0x80, 0x6f, 0x18, 0x1c, 0x9c, 0xdc, 0x9b, 0x5d, 0x59, 0xcb, 0x9b, 0x5c, 0xda, 0x59, 0x9a, 0x7b, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x01, 0x7e, 0x73, 0x65, 0x74, 0x2d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0xe5, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0xf8, 0x90, 0xa5, 0xcd, 0x8d, 0xbd, 0xb9, 0xb9, 0x95, 0x8d, 0xd1, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x1b, 0xbc, 0x9b, 0xc7, 0x67, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0x80, 0x77, 0xec, 0xcd, 0xcd, 0xad, 0x6c, 0x8c, 0x3e, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x1e, 0xcd, 0xf3, 0x70, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x1b, 0x34, 0x85, 0x6a, 0x7f, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x01, 0x7e, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0xe4, 0x21, 0x9a, 0x07, 0x4f, 0xcf, 0x08, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0xaf, 0x88, 0x1f, 0xd8, 0xaf, 0x08, 0x83, 0x41, 0xb0, 0xc1, 0x5b, 0xf0, 0x79, 0x0e, 0x8d, 0x5a, 0x86, 0x5d, 0xd8, 0x0d, 0xde, 0x9b, 0x0e, 0xb4, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0xde, 0x1d, 0x8c, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x5f, 0xed, 0x8d, 0x8d, 0x3e, 0x44, 0x73, 0x43, 0x0c, 0x87, 0xdd, 0xe0, 0x39, 0xee, 0x40, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x1e, 0xac, 0xbf, 0x63, 0x3d, 0x44, 0x73, 0x43, 0x0c, 0x87, 0xdd, 0xe0, 0xe1, 0x4a, 0x3e, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0xf0, 0xde, 0x04, 0x93, 0x43, 0x34, 0x37, 0xc4, 0x70, 0xd8, 0x0d, 0x1e, 0x76, 0x0f, 0xb4, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0xa7, 0x91, 0xb1, 0x95, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x78, 0xd0, 0x66, 0x2d, 0xf2, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0xfe, 0x18, 0xdb, 0xdb, 0x79, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0x0b, 0x18, 0x82, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0xb2, 0x37, 0x33, 0xf3, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0xdf, 0xad, 0x6e, 0xad, 0x3c, 0x44, 0xf3, 0xe0, 0xe9, 0x19, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x0b, 0x16, 0xf1, 0x03, 0x0b, 0x16, 0x61, 0x30, 0x08, 0x36, 0x78, 0x96, 0x41, 0xcf, 0xa1, 0x51, 0xcb, 0xb0, 0x0b, 0xbb, 0xc1, 0x7b, 0x77, 0x30, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0xde, 0xc4, 0xd6, 0xb3, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0x70, 0x25, 0x9f, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0x87, 0x18, 0xf6, 0x6c, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0xc1, 0xb3, 0xec, 0x7c, 0x0e, 0xd1, 0xdc, 0x10, 0xc3, 0x83, 0x77, 0xf3, 0xf8, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x58, 0xc4, 0x0f, 0x6c, 0x58, 0x84, 0xc1, 0x20, 0xd8, 0xe0, 0x99, 0x12, 0x3d, 0x87, 0x46, 0x2d, 0xc3, 0x2e, 0xec, 0xc2, 0x2d, 0x06, 0xf8, 0xc1, 0xc9, 0xa5, 0xd9, 0x85, 0xd1, 0x95, 0xb5, 0xac, 0x95, 0xe5, 0xcd, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x1b, 0xbc, 0x37, 0x1d, 0x68, 0x43, 0x0c, 0x87, 0xdd, 0xe0, 0xbd, 0x3b, 0x18, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x1e, 0x24, 0xe7, 0xc2, 0x1e, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x62, 0xc0, 0x23, 0x57, 0xb6, 0x56, 0x96, 0x1f, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0x70, 0x25, 0x9f, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x9f, 0x2c, 0xec, 0xce, 0x3d, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0x00, 0x2f, 0xb8, 0x3a, 0x31, 0xb6, 0xb4, 0xb1, 0x96, 0xb5, 0xb2, 0xbc, 0xf9, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x0f, 0x6f, 0xdd, 0x1f, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0x9b, 0x85, 0xad, 0x95, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xf0, 0xb1, 0xa5, 0xcd, 0xd1, 0x95, 0xb9, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x6d, 0x6f, 0x6f, 0xee, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0x7c, 0x72, 0x65, 0x73, 0x65, 0x6e, 0xe4, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0xbe, 0x5c, 0x5d, 0x9a, 0x7b, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0x4f, 0x57, 0x27, 0x67, 0x1e, 0xa2, 0xb9, 0x21, 0x86, 0x07, 0x0f, 0x1c, 0x0e, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0xb1, 0x88, 0x1f, 0x58, 0xb1, 0x08, 0x83, 0x41, 0xb0, 0xc1, 0x4b, 0x41, 0x7a, 0x0e, 0x8d, 0x5a, 0x86, 0x5d, 0xd8, 0x0d, 0xde, 0xbb, 0x83, 0xb1, 0x21, 0x86, 0xc3, 0x6e, 0xb0, 0xc4, 0xd2, 0x6a, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0xc0, 0x67, 0x0b, 0x93, 0x23, 0x0f, 0xd1, 0xdc, 0x10, 0xc3, 0x61, 0x37, 0x78, 0xb8, 0x92, 0xcf, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0x6f, 0x16, 0x26, 0x47, 0x1e, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0x9b, 0xe5, 0xc9, 0x91, 0x87, 0x68, 0x1e, 0x3c, 0xd2, 0x39, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xc7, 0x22, 0x7e, 0x60, 0xc7, 0x22, 0x0c, 0x06, 0xc1, 0x06, 0xef, 0x75, 0xe9, 0x39, 0x34, 0x6a, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x2c, 0xe2, 0x07, 0x96, 0x2c, 0xc2, 0x60, 0x10, 0x6c, 0xf0, 0x88, 0x9e, 0x9e, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xf0, 0x21, 0x1b, 0x3e, 0xe4, 0x63, 0x30, 0x42, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x94, 0x90, 0x0d, 0x24, 0xce, 0xe2, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x4a, 0xf4, 0xe0, 0xed, 0x06, 0x42, 0x8b, 0x0b, 0x82, 0xc5, 0xc1, 0xf5, 0x0d, 0x5e, 0xc8, 0xb9, 0x71, 0x38, 0xc5, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x28, 0xa4, 0x03, 0x39, 0xa1, 0x70, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x27, 0x14, 0x06, 0x03, 0x39, 0xa1, 0x30, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x42, 0x21, 0x3e, 0x78, 0x21, 0x84, 0xd0, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0xb0, 0x76, 0x75, 0x3c, 0x3e, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0x0f, 0x61, 0x10, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x09, 0x85, 0xdd, 0x40, 0x4e, 0x28, 0x6c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x50, 0x58, 0x1d, 0xbc, 0x0b, 0x43, 0x68, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x14, 0x1d, 0x56, 0x68, 0x0f, 0x4d, 0x81, 0x06, 0xd9, 0x06, 0x0f, 0x61, 0x10, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x09, 0x85, 0xf9, 0x40, 0x4e, 0x28, 0x54, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xa1, 0x30, 0x3e, 0x78, 0x0f, 0x88, 0xd0, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x16, 0x32, 0x46, 0x1d, 0x1a, 0x17, 0x1d, 0x87, 0x06, 0xd9, 0x06, 0x0f, 0x61, 0x10, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x42, 0xa1, 0x65, 0x20, 0x27, 0x14, 0x9a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x50, 0xe8, 0x38, 0x78, 0x36, 0x8a, 0xd0, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0xa5, 0xea, 0x3e, 0x87, 0xee, 0x47, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x83, 0xeb, 0x1b, 0xbc, 0x90, 0x73, 0xa3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xda, 0x09, 0xe9, 0x40, 0x6a, 0x27, 0x9c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xed, 0x84, 0x7c, 0x20, 0xb5, 0x13, 0x36, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6a, 0x27, 0xc4, 0x07, 0xcf, 0xa3, 0x11, 0x3a, 0x78, 0xe7, 0x84, 0xd0, 0x20, 0xdb, 0xe0, 0x19, 0x30, 0x42, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0x9d, 0xb0, 0x1a, 0x48, 0xed, 0x84, 0xe5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xda, 0x09, 0xa3, 0x83, 0xc7, 0xeb, 0x08, 0x1d, 0x3c, 0x6f, 0x43, 0x68, 0x90, 0x6d, 0xf0, 0x0c, 0x18, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb5, 0x13, 0xb6, 0x03, 0xa9, 0x9d, 0xb0, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x3b, 0x61, 0x7a, 0xf0, 0xb2, 0x20, 0xa1, 0x41, 0xb0, 0xc1, 0x73, 0x58, 0x84, 0x0e, 0x2d, 0xc0, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x81, 0x42, 0x3a, 0x90, 0x06, 0x0a, 0x67, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x50, 0x88, 0x07, 0xd2, 0x40, 0x61, 0x31, 0x48, 0x06, 0xda, 0xf4, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x40, 0x61, 0x32, 0x90, 0x06, 0x0a, 0xb3, 0x83, 0xa5, 0xea, 0x3e, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x40, 0x61, 0x37, 0x90, 0x06, 0x0a, 0xdb, 0x41, 0x32, 0xd0, 0xea, 0xea, 0x78, 0x7c, 0x1c, 0x3a, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0xaf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf6, 0x8a, 0x1b, 0x48, 0x81, 0xc5, 0x0f, 0x82, 0x0d, 0x5d, 0x70, 0x16, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x57, 0xdc, 0xc1, 0x63, 0xb3, 0x84, 0x86, 0xdf, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x5f, 0x71, 0x07, 0x8f, 0xcd, 0x12, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x5f, 0x71, 0x07, 0x8f, 0xcd, 0x12, 0x5a, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x7d, 0x85, 0x7c, 0x20, 0xf5, 0x15, 0x9a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x2b, 0x4c, 0x06, 0x52, 0x5f, 0xa1, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf5, 0x15, 0x36, 0x03, 0xa9, 0xaf, 0x30, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x5f, 0x61, 0x77, 0xf0, 0xb2, 0x35, 0xa1, 0xe1, 0x37, 0x64, 0xed, 0x8e, 0x6f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x2b, 0x6c, 0x07, 0x52, 0x5f, 0xa1, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x7d, 0x85, 0xfd, 0xc1, 0x93, 0xe2, 0x84, 0x0e, 0x1e, 0xe8, 0x26, 0xb4, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xbe, 0x42, 0xc9, 0x40, 0xea, 0x2b, 0x14, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xaf, 0xd0, 0x72, 0xf0, 0x8e, 0x3b, 0xa1, 0x83, 0x92, 0xeb, 0xe6, 0x78, 0xbc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfa, 0x2b, 0x7e, 0x20, 0xff, 0x15, 0x26, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xfd, 0x15, 0xb2, 0x81, 0xf4, 0x57, 0x28, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x7f, 0x85, 0x70, 0x20, 0xfd, 0x15, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfa, 0x2b, 0xc4, 0x07, 0xcf, 0x12, 0x14, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x7f, 0x85, 0x7c, 0x20, 0xfd, 0x15, 0x36, 0xc3, 0x2f, 0x48, 0x06, 0x9a, 0x2f, 0x1d, 0x04, 0xbc, 0xff, 0xf1, 0x6d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xfd, 0x15, 0x46, 0x03, 0xe9, 0xaf, 0x30, 0x1c, 0x7e, 0x41, 0x32, 0xf0, 0xfe, 0xd2, 0x41, 0xc0, 0xfb, 0x1f, 0xdf, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x57, 0x58, 0x0e, 0xa4, 0xbf, 0xc2, 0x78, 0xf8, 0x0d, 0xf9, 0xda, 0xe3, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfe, 0x0a, 0xf3, 0x81, 0xf4, 0x57, 0xe8, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x5f, 0xa1, 0xe0, 0xe0, 0xe1, 0x92, 0x42, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xaf, 0xd0, 0x30, 0x90, 0xfe, 0x0a, 0x2d, 0x07, 0x2f, 0x40, 0x14, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x7f, 0x85, 0x9a, 0x81, 0xf4, 0x57, 0xa8, 0x3a, 0x78, 0x04, 0xa3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfe, 0x0a, 0x5d, 0x03, 0xe9, 0xaf, 0x50, 0x77, 0xf0, 0x0c, 0x48, 0xa1, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xff, 0x15, 0x7f, 0xf0, 0x7c, 0x3e, 0xa1, 0x43, 0x0c, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x2b, 0xe4, 0x03, 0xb9, 0xaf, 0x30, 0x3a, 0xc4, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x01, 0x16, 0xf2, 0x81, 0x04, 0x58, 0x68, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xb0, 0x30, 0x19, 0x48, 0x80, 0x85, 0xed, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x02, 0x2c, 0x6c, 0x06, 0x12, 0x60, 0x61, 0x76, 0xf0, 0x40, 0x37, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x01, 0x16, 0x76, 0x03, 0x09, 0xb0, 0x30, 0x3d, 0x78, 0x06, 0xa4, 0xd0, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x00, 0x0b, 0xe3, 0x81, 0x04, 0x58, 0x28, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x60, 0x61, 0x7d, 0xf0, 0xa0, 0x59, 0xa1, 0xe1, 0x37, 0x24, 0x3b, 0x8e, 0x6f, 0xc7, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x58, 0xc8, 0x07, 0x32, 0x60, 0x61, 0x3c, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x80, 0x85, 0xdd, 0x40, 0x06, 0x2c, 0x6c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x58, 0x18, 0x1e, 0xbc, 0x93, 0x57, 0xe8, 0xe0, 0x61, 0xb6, 0x42, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf9, 0x15, 0xf2, 0x81, 0xe4, 0x57, 0xe8, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xaf, 0x30, 0x19, 0x48, 0x7e, 0x85, 0xfd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf2, 0x2b, 0x6c, 0x06, 0x92, 0x5f, 0x61, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xbf, 0xc2, 0xea, 0xe0, 0xe9, 0xc7, 0x42, 0x07, 0xcf, 0x80, 0x14, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x5f, 0x61, 0x39, 0x90, 0xfc, 0x0a, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf9, 0x15, 0xb6, 0x07, 0xaf, 0x6c, 0x16, 0x3a, 0x78, 0x06, 0xa4, 0xd0, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfc, 0x0a, 0x05, 0x03, 0xc9, 0xaf, 0x50, 0x79, 0x88, 0xe1, 0xf1, 0xf8, 0x78, 0x7c, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x1e, 0xaf, 0x20, 0xd8, 0xe0, 0x21, 0xe9, 0x1b, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0b, 0x13, 0xd2, 0x81, 0x2c, 0x4c, 0x38, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x85, 0x09, 0xf1, 0x40, 0x16, 0x26, 0x94, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x61, 0xc2, 0x62, 0x20, 0x0b, 0x13, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x16, 0x26, 0xe4, 0x07, 0xcf, 0xef, 0x16, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0x9a, 0x2f, 0x1d, 0x56, 0x68, 0x0f, 0x92, 0x0d, 0x0d, 0x06, 0xd9, 0x06, 0xcf, 0xcc, 0x16, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc2, 0x84, 0xe1, 0x40, 0x16, 0x26, 0x8c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x4c, 0x98, 0x1d, 0xbc, 0xc3, 0x5c, 0x68, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x78, 0x7f, 0xe9, 0xb0, 0x42, 0x7b, 0x90, 0x5c, 0x3e, 0x30, 0xc8, 0x36, 0x78, 0x66, 0xb6, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x85, 0x09, 0xfb, 0x81, 0x2c, 0x4c, 0xe8, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x30, 0x61, 0x7d, 0xf0, 0x20, 0x77, 0xa1, 0x41, 0xb0, 0xc1, 0x6b, 0x37, 0x84, 0x0e, 0x4e, 0xd6, 0xdd, 0x83, 0x6c, 0x83, 0xf7, 0x5b, 0x0b, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x98, 0xd0, 0x33, 0x90, 0x85, 0x09, 0x5d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x16, 0x26, 0xb4, 0x1c, 0xbc, 0xae, 0x5e, 0x68, 0x10, 0x6c, 0xf0, 0x1c, 0x16, 0xa1, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x71, 0x66, 0xc3, 0x29, 0x36, 0x33, 0xb3, 0xe1, 0x14, 0x9b, 0x0d, 0xa7, 0xd8, 0x0c, 0xf8, 0x64, 0x65, 0x61, 0x64, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x29, 0x14, 0xd2, 0x81, 0xa4, 0x50, 0x38, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x14, 0x0a, 0x83, 0x81, 0xa4, 0x50, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xa1, 0x10, 0x1f, 0x3c, 0x40, 0x60, 0x68, 0x10, 0x6c, 0xf0, 0xa6, 0x70, 0xa1, 0x43, 0x1a, 0x6e, 0x90, 0x6d, 0xf0, 0xce, 0x7e, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x50, 0xd8, 0x0d, 0x24, 0x85, 0xc2, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0a, 0x85, 0xd5, 0xc1, 0x1b, 0x12, 0x86, 0x06, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x90, 0x31, 0xea, 0xd0, 0x43, 0xe8, 0x38, 0x34, 0xc8, 0x36, 0x78, 0x67, 0xbf, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x28, 0xcc, 0x07, 0x92, 0x42, 0xa1, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0a, 0x85, 0xf1, 0xc1, 0x53, 0x23, 0x86, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x81, 0xff, 0xfa, 0x8e, 0xc7, 0x87, 0x4e, 0x44, 0x83, 0x6c, 0x83, 0x77, 0xf6, 0x0b, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xa1, 0xd0, 0x32, 0x90, 0x14, 0x0a, 0x4d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x28, 0x74, 0x1c, 0xbc, 0x32, 0x63, 0x68, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x48, 0xf5, 0x1d, 0x8f, 0x0f, 0xdd, 0x8f, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x27, 0xa4, 0x03, 0x59, 0x9e, 0x70, 0x64, 0xf8, 0x15, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x3c, 0x61, 0x30, 0x90, 0xe5, 0x09, 0xa3, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0x1e, 0x6e, 0xa6, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x79, 0xc2, 0x6a, 0x20, 0xcb, 0x13, 0x96, 0xc3, 0x6f, 0x48, 0x2e, 0x0d, 0xbf, 0x20, 0x19, 0x68, 0x2e, 0x77, 0x10, 0xe4, 0xfc, 0xc7, 0xb7, 0x43, 0x4f, 0xd4, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x46, 0x28, 0xa4, 0x03, 0x19, 0xa1, 0x70, 0x67, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x08, 0x85, 0x78, 0x20, 0x23, 0x14, 0x26, 0x07, 0xef, 0x47, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x08, 0x85, 0xcd, 0x40, 0x46, 0x28, 0xec, 0x06, 0xc9, 0x80, 0xe0, 0xba, 0x3a, 0x1e, 0x1f, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9a, 0x27, 0xa4, 0x03, 0x69, 0x9e, 0x70, 0x67, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x38, 0x95, 0x0e, 0x2b, 0xb4, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x31, 0x15, 0x37, 0x90, 0x9c, 0x0a, 0xf1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x53, 0x71, 0x07, 0xaf, 0x0d, 0x1a, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x53, 0x71, 0x07, 0xaf, 0x0d, 0x1a, 0x1a, 0x76, 0x83, 0xa0, 0xd7, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x4e, 0xc5, 0x1d, 0xbc, 0x36, 0x68, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x39, 0x15, 0x3b, 0x90, 0x9c, 0x0a, 0xc9, 0x21, 0x75, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9c, 0x0a, 0xd1, 0x40, 0x72, 0x2a, 0x64, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xa9, 0x10, 0x0e, 0x24, 0xa7, 0x42, 0x7a, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9b, 0x8a, 0x1f, 0xc8, 0x4d, 0x85, 0xf0, 0x30, 0x2e, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x80, 0x7f, 0x27, 0x97, 0x36, 0x6f, 0xd0, 0x08, 0x0b, 0x76, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x97, 0x12, 0x37, 0x90, 0x58, 0x89, 0x1f, 0x76, 0xe1, 0x16, 0x03, 0x5f, 0xec, 0xed, 0xcd, 0x3d, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x97, 0x12, 0x92, 0x81, 0x5c, 0x4a, 0xb8, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4b, 0x09, 0xd1, 0x40, 0x2e, 0x25, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0x6e, 0x6b, 0x68, 0x83, 0xc7, 0x6d, 0x0d, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x7b, 0xb9, 0x86, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x4a, 0x18, 0x0e, 0xe4, 0x52, 0xc2, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xa5, 0x84, 0xc1, 0xc1, 0x1b, 0xcd, 0x86, 0x0e, 0xe3, 0x32, 0xec, 0xc2, 0x2d, 0x06, 0xfe, 0x98, 0xdc, 0x9b, 0x7e, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x25, 0x24, 0x03, 0xc9, 0x94, 0x70, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x99, 0x12, 0xa2, 0x81, 0x64, 0x4a, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x95, 0xda, 0xd0, 0x06, 0xaf, 0x52, 0x1b, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x87, 0xae, 0x0d, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x94, 0x30, 0x1a, 0x48, 0xa6, 0x84, 0xba, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x99, 0x12, 0x06, 0x07, 0x8f, 0xab, 0x1b, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x29, 0x61, 0x35, 0x90, 0x4c, 0x09, 0xc3, 0x83, 0x57, 0x35, 0x09, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4c, 0x09, 0xcb, 0x81, 0x64, 0x4a, 0x58, 0x1f, 0xbc, 0x3f, 0x5d, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x53, 0xc2, 0x7c, 0x20, 0x99, 0x12, 0xda, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x29, 0xa1, 0x61, 0x20, 0x99, 0x12, 0x5a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x4a, 0xd8, 0x1f, 0x3c, 0xdf, 0x70, 0x68, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0xb9, 0x8f, 0xf6, 0x90, 0x86, 0x1b, 0x64, 0x1b, 0x3c, 0x52, 0x70, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xa6, 0x84, 0xa2, 0x81, 0x64, 0x4a, 0x28, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x29, 0xa1, 0xe6, 0xe0, 0x81, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x57, 0x29, 0x0e, 0x1d, 0x3a, 0x68, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0x87, 0x0e, 0x1a, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0x8f, 0xc9, 0xd5, 0xe9, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x53, 0x42, 0x32, 0x90, 0x4d, 0x09, 0x77, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x29, 0x21, 0x1a, 0xc8, 0xa6, 0x84, 0x7c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x97, 0x51, 0x0e, 0x6d, 0xf0, 0x32, 0xca, 0xa1, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x6c, 0xe5, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4d, 0x09, 0xa3, 0x81, 0x6c, 0x4a, 0xa8, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x29, 0x61, 0x70, 0xf0, 0xc0, 0xcf, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9b, 0x12, 0x56, 0x03, 0xd9, 0x94, 0x30, 0x3c, 0x78, 0x55, 0x93, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x94, 0xb0, 0x1c, 0xc8, 0xa6, 0x84, 0xf1, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x07, 0x4b, 0xf7, 0xa6, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x29, 0x61, 0x3d, 0x90, 0x4d, 0x09, 0x0d, 0x07, 0x4d, 0xa1, 0x2f, 0x1d, 0x87, 0x0e, 0x1d, 0x34, 0x86, 0xdd, 0xe0, 0xa1, 0x21, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x94, 0x90, 0x0c, 0xa4, 0x53, 0xc2, 0x9b, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x4a, 0x88, 0x06, 0xd2, 0x29, 0x21, 0x1f, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xd1, 0x21, 0x41, 0x1b, 0x3c, 0x3a, 0x24, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0x26, 0x3b, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x53, 0xc2, 0x64, 0x20, 0x9d, 0x12, 0x66, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3a, 0x25, 0x0c, 0x0e, 0x9e, 0xc3, 0x3b, 0x34, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0xc1, 0xc2, 0xca, 0xa8, 0x61, 0x17, 0x6e, 0xf1, 0xa0, 0x41, 0x17, 0xab, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x29, 0x21, 0x19, 0xc8, 0xa7, 0x84, 0x2f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x94, 0x10, 0x0d, 0xe4, 0x53, 0x42, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x03, 0x82, 0x87, 0x36, 0x78, 0x40, 0xf0, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0x45, 0x78, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9f, 0x12, 0x26, 0x03, 0xf9, 0x94, 0x30, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x29, 0x61, 0x70, 0xf0, 0x02, 0xe6, 0xa1, 0x83, 0xa7, 0x30, 0x0c, 0x0d, 0xb2, 0x0d, 0xde, 0x22, 0x3c, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x53, 0xc2, 0x72, 0x20, 0x9f, 0x12, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x25, 0xec, 0x0e, 0x9e, 0x27, 0x3d, 0x34, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0xe0, 0xc0, 0x60, 0x7b, 0x68, 0x01, 0x36, 0xec, 0xc2, 0x2d, 0x06, 0x3e, 0x5a, 0x1a, 0x1b, 0x7b, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x25, 0x24, 0x03, 0x09, 0x95, 0xf0, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa1, 0x12, 0xa2, 0x81, 0x84, 0x4a, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0xe5, 0xf5, 0xd0, 0x06, 0xaf, 0xbc, 0x1e, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x87, 0x63, 0x0f, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0x95, 0x30, 0x19, 0x48, 0xa8, 0x84, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x50, 0x09, 0x83, 0x83, 0xc7, 0x8a, 0x0f, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0x95, 0xb0, 0x19, 0x48, 0xa8, 0x84, 0xdd, 0xc1, 0x1b, 0x01, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x2a, 0x61, 0x38, 0x90, 0x50, 0x09, 0xe3, 0x41, 0xb0, 0xc1, 0xc3, 0xf6, 0x7a, 0x0e, 0xd6, 0x7f, 0x46, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0x87, 0x0e, 0x1a, 0xc3, 0x6e, 0xb0, 0xc4, 0xd2, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa3, 0x12, 0x92, 0x81, 0x8c, 0x4a, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x51, 0x09, 0xd1, 0x40, 0x46, 0x25, 0xe4, 0x07, 0x8b, 0x36, 0xad, 0x06, 0xd9, 0x06, 0xef, 0x8f, 0x1f, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x2a, 0x61, 0x36, 0x90, 0x51, 0x09, 0x3d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x46, 0x25, 0x0c, 0x0e, 0x5e, 0xa3, 0x3f, 0x34, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x54, 0xc2, 0x6e, 0x20, 0xa3, 0x12, 0xb6, 0x07, 0xef, 0x47, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xa8, 0x84, 0xf1, 0x40, 0x46, 0x25, 0xd4, 0x0c, 0xbf, 0x20, 0x19, 0x18, 0xbe, 0xe3, 0xf9, 0x20, 0x19, 0x78, 0xea, 0xeb, 0x78, 0x7c, 0x1c, 0x3a, 0x74, 0xd0, 0x18, 0x76, 0xe1, 0x16, 0x03, 0xbf, 0xad, 0x4c, 0xae, 0x3c, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa5, 0x12, 0x92, 0x81, 0x94, 0x4a, 0x78, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x52, 0x09, 0xd1, 0x40, 0x4a, 0x25, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0xfe, 0x80, 0x68, 0x83, 0xc7, 0x1f, 0x10, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x7b, 0x12, 0x88, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x4a, 0x98, 0x0c, 0xa4, 0x54, 0x42, 0xe9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x52, 0x09, 0x83, 0x83, 0x37, 0x4c, 0x10, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x95, 0xb0, 0x19, 0x48, 0xa9, 0x84, 0xdd, 0x20, 0x19, 0x98, 0xab, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x25, 0x0c, 0x07, 0x52, 0x2a, 0xa1, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x54, 0xc2, 0x72, 0x20, 0xa5, 0x12, 0xc6, 0x83, 0x64, 0x60, 0xa5, 0xef, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x54, 0xc2, 0x7a, 0x20, 0xa5, 0x12, 0x1a, 0x0e, 0x96, 0xaa, 0xfb, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x54, 0x42, 0xc7, 0x40, 0x4a, 0x25, 0x74, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x4a, 0x28, 0x19, 0x48, 0xa9, 0x84, 0xa2, 0x83, 0x97, 0x68, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x52, 0x09, 0x4d, 0x03, 0x29, 0x95, 0xd0, 0x36, 0x48, 0x36, 0x58, 0x73, 0x81, 0x74, 0x30, 0xde, 0x75, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x54, 0x42, 0xdd, 0x40, 0x4a, 0x25, 0x54, 0x0e, 0x92, 0x0d, 0x5e, 0x2a, 0xe1, 0x71, 0x30, 0xde, 0x75, 0x8e, 0x43, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x61, 0x37, 0x78, 0xfc, 0x50, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x25, 0x24, 0x03, 0x39, 0x95, 0xf0, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa7, 0x12, 0xa2, 0x81, 0x9c, 0x4a, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x08, 0x51, 0xd0, 0x06, 0x0f, 0x21, 0x0a, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x07, 0xe1, 0x10, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x95, 0x30, 0x19, 0xc8, 0xa9, 0x84, 0xd9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x53, 0x09, 0x83, 0x83, 0x47, 0x08, 0x11, 0x1d, 0xbc, 0xea, 0x77, 0x68, 0xd8, 0x0d, 0xde, 0x93, 0x1a, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x54, 0x09, 0xc9, 0x40, 0x52, 0x25, 0x3c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xaa, 0x84, 0x68, 0x20, 0xa9, 0x12, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x9a, 0x42, 0xb5, 0x3f, 0x68, 0x92, 0xd5, 0x7e, 0x90, 0x6d, 0xf0, 0x5c, 0x23, 0xa2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x4a, 0x18, 0x0d, 0x24, 0x55, 0xc2, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xaa, 0x84, 0xc1, 0xc1, 0x5b, 0xa0, 0x88, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x81, 0x7c, 0xdf, 0xf1, 0xf8, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0xf0, 0x5c, 0x23, 0xa2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa9, 0x12, 0xd6, 0x03, 0x49, 0x95, 0xd0, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x55, 0xc2, 0xf2, 0xe0, 0x05, 0x58, 0x44, 0x83, 0x60, 0x83, 0x17, 0x4e, 0x11, 0x1d, 0x5a, 0x80, 0x0d, 0xbb, 0xc1, 0x23, 0x4a, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x2a, 0x21, 0x19, 0xc8, 0xaa, 0x84, 0x1b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x95, 0x10, 0x0d, 0x64, 0x55, 0x42, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x83, 0x4a, 0x82, 0x36, 0x78, 0x50, 0x49, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0xa9, 0x8b, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xaa, 0x84, 0xc9, 0x40, 0x56, 0x25, 0x94, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x95, 0x30, 0x38, 0x78, 0xc7, 0x19, 0xd1, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x55, 0x09, 0x9b, 0x81, 0xac, 0x4a, 0xd8, 0x1d, 0xbc, 0x37, 0x83, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x4a, 0x18, 0x0e, 0x64, 0x55, 0x42, 0xc3, 0xf0, 0x1b, 0x1c, 0xb5, 0x74, 0x0f, 0x4a, 0x86, 0xa6, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x95, 0x50, 0x31, 0x90, 0x55, 0x09, 0x5d, 0xc3, 0x6f, 0x70, 0xd4, 0xd2, 0x3d, 0x18, 0x77, 0x50, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xef, 0xe4, 0xd2, 0xe8, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x2a, 0x21, 0x19, 0x48, 0xab, 0x84, 0x17, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x95, 0x10, 0x0d, 0xa4, 0x55, 0x42, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xc3, 0xf0, 0x88, 0x36, 0x78, 0x18, 0x1e, 0xd1, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0x35, 0x8f, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xab, 0x84, 0xc9, 0x40, 0x5a, 0x25, 0xcc, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x4a, 0x18, 0x1c, 0xbc, 0x6f, 0x90, 0x68, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x41, 0x02, 0xd0, 0xc1, 0xa1, 0x83, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x57, 0x09, 0xc9, 0x40, 0x5e, 0x25, 0x3c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xab, 0x84, 0x68, 0x20, 0xaf, 0x12, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0xc7, 0x83, 0x17, 0x5c, 0x0d, 0x6d, 0xf0, 0x04, 0x47, 0xa2, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x1e, 0x22, 0xd1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5e, 0x25, 0x4c, 0x06, 0xf2, 0x2a, 0x61, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x55, 0xc2, 0xe0, 0xe0, 0x69, 0x92, 0x44, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x95, 0xb0, 0x19, 0xc8, 0xab, 0x84, 0xd9, 0xb0, 0x0b, 0xb7, 0xc1, 0xf0, 0xa2, 0x38, 0x28, 0x18, 0x1e, 0x0f, 0x0a, 0xa5, 0xc7, 0x41, 0xb6, 0xc1, 0x43, 0x21, 0x89, 0x06, 0xd9, 0x06, 0x8f, 0x99, 0x24, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x2a, 0x61, 0x39, 0x90, 0x57, 0x09, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xaf, 0x12, 0x76, 0x07, 0xaf, 0xeb, 0x24, 0x1a, 0x04, 0x1b, 0x3c, 0x6c, 0xaf, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc3, 0xd4, 0x2f, 0x0e, 0x06, 0x7f, 0xcc, 0x71, 0x68, 0x90, 0x6d, 0xf0, 0x3c, 0x44, 0xa2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xaf, 0x12, 0x0a, 0x06, 0xf2, 0x2a, 0xa1, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xab, 0x84, 0xf9, 0xc1, 0x53, 0x4c, 0x89, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x4a, 0x68, 0x18, 0xc8, 0xab, 0x84, 0x92, 0x83, 0x17, 0x85, 0x10, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x55, 0x42, 0xcb, 0x40, 0x5e, 0x25, 0xb4, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x4a, 0xa8, 0x19, 0xc8, 0xab, 0x84, 0xaa, 0x83, 0x97, 0x68, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x57, 0x09, 0x5d, 0x03, 0x79, 0x95, 0xd0, 0x77, 0xf0, 0x30, 0x0a, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x95, 0x50, 0x38, 0x90, 0x57, 0x09, 0xa5, 0x07, 0x4b, 0xd5, 0x7d, 0x8e, 0x43, 0xc7, 0xa1, 0x43, 0x0b, 0xb0, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x86, 0x28, 0x6e, 0x20, 0x49, 0x14, 0x3f, 0x08, 0x36, 0x18, 0x59, 0x66, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8a, 0x28, 0xee, 0xe0, 0xd9, 0xbf, 0x44, 0x83, 0x60, 0x83, 0xe3, 0x7e, 0xc7, 0xe2, 0x20, 0x58, 0xd8, 0x0d, 0x79, 0xac, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x51, 0x48, 0x06, 0x52, 0x44, 0xe1, 0xc7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8a, 0x28, 0x44, 0x03, 0x29, 0xa2, 0x10, 0x1e, 0x9a, 0x45, 0x0e, 0xb2, 0x0d, 0x5e, 0x58, 0x4c, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x88, 0x42, 0x3e, 0x90, 0x22, 0x0a, 0x93, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x45, 0x14, 0xd2, 0x83, 0x57, 0x36, 0x13, 0x0d, 0x82, 0x0d, 0x1a, 0x7b, 0x17, 0x39, 0x58, 0x8f, 0xae, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x88, 0x42, 0x32, 0x90, 0x23, 0x0a, 0x57, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x44, 0x21, 0x1a, 0xc8, 0x11, 0x85, 0xf0, 0xd0, 0xa7, 0x71, 0x90, 0x6d, 0xf0, 0x18, 0x69, 0xa2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x51, 0xc8, 0x07, 0x72, 0x44, 0x61, 0x37, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x88, 0x42, 0x7a, 0xf0, 0x24, 0x6d, 0xa2, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x47, 0x14, 0x06, 0x03, 0x39, 0xa2, 0x30, 0x3a, 0x68, 0x82, 0x5c, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x47, 0x14, 0x56, 0x03, 0x39, 0xa2, 0x30, 0x3b, 0xa4, 0x0e, 0x8e, 0x43, 0x87, 0xa6, 0x40, 0x83, 0x6c, 0x83, 0xc7, 0x48, 0x13, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xa2, 0x30, 0x1d, 0xc8, 0x11, 0x85, 0x8a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x47, 0x14, 0x86, 0x07, 0x8f, 0x47, 0x27, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x44, 0x61, 0x3b, 0x90, 0x23, 0x0a, 0xfb, 0x83, 0x26, 0xc8, 0x45, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x44, 0xa1, 0x60, 0x20, 0x47, 0x14, 0x1a, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0xa1, 0x05, 0xd8, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x78, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x25, 0x0a, 0xe9, 0x40, 0x96, 0x28, 0x1c, 0x19, 0x04, 0x1b, 0x8c, 0x2c, 0xb3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4b, 0x14, 0x76, 0x03, 0x59, 0xa2, 0x50, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x44, 0x61, 0x38, 0x90, 0x25, 0x0a, 0xe3, 0x83, 0x26, 0xc8, 0x45, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x44, 0x61, 0x3d, 0x90, 0x25, 0x0a, 0x2d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4b, 0x14, 0xe6, 0x03, 0x59, 0xa2, 0x50, 0x31, 0x48, 0x06, 0xda, 0x57, 0x1d, 0x92, 0x4b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xa2, 0xd0, 0x31, 0x90, 0x25, 0x0a, 0x25, 0x87, 0xd4, 0xc1, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x70, 0xdc, 0xef, 0x58, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x9d, 0xb8, 0x81, 0xfc, 0x4e, 0xfc, 0xb0, 0x1b, 0xf2, 0x58, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x9d, 0x90, 0x0c, 0x64, 0x77, 0xc2, 0x85, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x4e, 0x88, 0x06, 0xb2, 0x3b, 0x21, 0x3c, 0x34, 0x8b, 0x1c, 0x64, 0x1b, 0x3c, 0xf5, 0xa1, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xee, 0x84, 0x7c, 0x20, 0xbb, 0x13, 0x36, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x76, 0x27, 0xa4, 0x07, 0xcf, 0xbd, 0x28, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0x70, 0xb8, 0xae, 0x3d, 0x74, 0xd0, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x3b, 0x21, 0x19, 0x48, 0xef, 0x84, 0x0b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x9d, 0x10, 0x0d, 0xa4, 0x77, 0x42, 0x78, 0xe8, 0xd3, 0x38, 0xc8, 0x36, 0x78, 0x2b, 0x47, 0xd1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x27, 0xe4, 0x03, 0xe9, 0x9d, 0xb0, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x3b, 0x21, 0x3d, 0x78, 0x31, 0x49, 0xd1, 0xc1, 0x53, 0x18, 0x86, 0x06, 0xd9, 0x06, 0x6f, 0xe5, 0x28, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x3b, 0x61, 0x36, 0x90, 0xde, 0x09, 0x0d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x27, 0x8c, 0x0e, 0x5e, 0xb3, 0x52, 0x34, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x77, 0xc2, 0x6e, 0x20, 0xbd, 0x13, 0xb6, 0x07, 0xef, 0x47, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xef, 0x84, 0xf1, 0x40, 0x7a, 0x27, 0x14, 0x0c, 0x92, 0x01, 0xe5, 0x5a, 0xdf, 0xf1, 0xf8, 0x38, 0x74, 0x68, 0x01, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0xf0, 0xe0, 0x0e, 0x8e, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x86, 0x09, 0xe9, 0x40, 0x1a, 0x26, 0x1c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc3, 0x84, 0xc1, 0x40, 0x1a, 0x26, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x4c, 0x88, 0x0f, 0xde, 0xe1, 0x53, 0x74, 0xf0, 0x8c, 0x82, 0xa1, 0x41, 0xb6, 0xc1, 0x73, 0x73, 0x8a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x30, 0x61, 0x37, 0x90, 0x86, 0x09, 0xdb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0d, 0x13, 0x56, 0x07, 0xaf, 0x24, 0x2a, 0x1a, 0x04, 0x1b, 0xbc, 0x2e, 0x5d, 0xe8, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0xf0, 0xdc, 0x9c, 0xa2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0d, 0x13, 0xe6, 0x03, 0x69, 0x98, 0x50, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x61, 0xc2, 0xf8, 0xe0, 0xa5, 0x4b, 0x45, 0x83, 0x60, 0x83, 0xd7, 0x6e, 0x08, 0x1d, 0x5a, 0x80, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x60, 0x71, 0x03, 0x09, 0xb1, 0xf8, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x58, 0x48, 0x0e, 0x5e, 0x36, 0x55, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xc1, 0xe2, 0x0e, 0x5e, 0x36, 0x55, 0x34, 0x08, 0x36, 0x58, 0xcd, 0x71, 0xb4, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x08, 0x0b, 0xf9, 0x40, 0x22, 0x2c, 0x34, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x58, 0x98, 0x0c, 0x24, 0xc2, 0xc2, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x84, 0x85, 0xd9, 0xc1, 0x5b, 0xbe, 0x8a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x58, 0xd8, 0x1d, 0xbc, 0xe5, 0xab, 0xe8, 0x90, 0x3a, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x61, 0x61, 0x3b, 0x90, 0x08, 0x0b, 0x05, 0x07, 0xab, 0x39, 0x8e, 0x8e, 0xc7, 0x2b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xc3, 0xe2, 0x07, 0xb2, 0x61, 0x61, 0x33, 0x08, 0x16, 0x37, 0x78, 0x04, 0x98, 0xc7, 0xc1, 0x23, 0xc0, 0x3c, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x58, 0xfc, 0xc1, 0x53, 0xd5, 0x8a, 0x0e, 0x31, 0x3c, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xb0, 0x90, 0x0f, 0x64, 0xc2, 0xc2, 0xe8, 0x10, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x58, 0xc8, 0x07, 0xd2, 0x61, 0xa1, 0x60, 0x10, 0x6c, 0xb0, 0x9a, 0xe3, 0x68, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x87, 0x85, 0xf1, 0x40, 0x3a, 0x2c, 0xec, 0x0f, 0x7b, 0x85, 0xc7, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x58, 0xc8, 0x07, 0xf2, 0x61, 0x61, 0x3b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x87, 0x85, 0xdd, 0x40, 0x3e, 0x2c, 0x4c, 0x0f, 0x7b, 0x85, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x15, 0x16, 0xf2, 0x81, 0x54, 0x58, 0xa8, 0x1d, 0x04, 0x1b, 0xb4, 0xbf, 0xce, 0xb4, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xc2, 0x42, 0xc5, 0x40, 0x2a, 0x2c, 0xb4, 0x1e, 0x62, 0x78, 0x3c, 0x3e, 0x1e, 0x1f, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0xe2, 0x00, 0xcf, 0x1d, 0x5a, 0x1a, 0x5d, 0x79, 0x38, 0xc5, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0e, 0x28, 0x6e, 0x20, 0x0b, 0x14, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x03, 0x0a, 0xe9, 0x40, 0x0e, 0x28, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x50, 0x48, 0x0e, 0xde, 0xd5, 0x58, 0x34, 0xec, 0xc2, 0x2d, 0x06, 0x3c, 0x62, 0x6c, 0x61, 0x63, 0xeb, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xa0, 0x90, 0x0f, 0xe4, 0x80, 0xc2, 0x6a, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x57, 0x43, 0x16, 0x6d, 0xf0, 0x6a, 0xc8, 0xa2, 0xc3, 0x29, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x80, 0xc2, 0x6c, 0x20, 0x07, 0x14, 0xc6, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x8e, 0x07, 0x2f, 0x3b, 0x2c, 0xda, 0xe0, 0xed, 0x99, 0x45, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x90, 0xc4, 0xa2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x09, 0x14, 0xd2, 0x81, 0x24, 0x50, 0x68, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x40, 0x21, 0x39, 0x78, 0x90, 0x67, 0xd1, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x04, 0x0a, 0xf1, 0x40, 0x12, 0x28, 0x4c, 0x0e, 0x5e, 0xa2, 0x51, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x28, 0x6c, 0x06, 0x92, 0x40, 0x61, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x40, 0x61, 0x34, 0x90, 0x04, 0x0a, 0xbb, 0x83, 0x17, 0x85, 0x10, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x81, 0xc2, 0x70, 0x20, 0x09, 0x14, 0xc6, 0x07, 0xaf, 0x0e, 0x17, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x02, 0x85, 0xf9, 0x40, 0x12, 0x28, 0x94, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x50, 0xd8, 0x0f, 0x24, 0x81, 0x42, 0xc5, 0xc1, 0xab, 0x9a, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x02, 0x85, 0x8e, 0x81, 0x24, 0x50, 0xa8, 0x39, 0x78, 0xd7, 0xea, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x28, 0xf4, 0x0c, 0x24, 0x81, 0x42, 0xd7, 0x41, 0x53, 0xe8, 0x4b, 0xc7, 0xa1, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x9b, 0xb8, 0x81, 0xe4, 0x4d, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe6, 0x26, 0xa4, 0x03, 0x99, 0x9b, 0x30, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x37, 0x21, 0x19, 0xc8, 0xdc, 0x84, 0x0f, 0x83, 0x60, 0x83, 0x87, 0xed, 0xf5, 0x1c, 0xac, 0x02, 0xc8, 0x1a, 0x64, 0x1b, 0x3c, 0x71, 0xb8, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x75, 0x13, 0xd2, 0x81, 0xd4, 0x4d, 0xd8, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0x9b, 0x90, 0x0c, 0xa4, 0x6e, 0xc2, 0x95, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x75, 0x13, 0xe2, 0x81, 0xd4, 0x4d, 0x58, 0x1c, 0xbc, 0xaa, 0x49, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x4d, 0x98, 0x0c, 0xa4, 0x6e, 0xc2, 0xea, 0xe0, 0x69, 0xfa, 0x3d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0x9b, 0x30, 0x1b, 0x48, 0xdd, 0x84, 0xe9, 0x20, 0x19, 0xd8, 0xbb, 0x3a, 0x1e, 0x1f, 0x87, 0x0e, 0x4d, 0x81, 0x06, 0xd9, 0x06, 0x4f, 0x1c, 0x2e, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x37, 0x21, 0x1d, 0xc8, 0xdd, 0x84, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbb, 0x09, 0xc9, 0x40, 0xee, 0x26, 0x7c, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x37, 0x21, 0x1e, 0xc8, 0xdd, 0x84, 0xc5, 0xc1, 0xab, 0x9a, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xdd, 0x84, 0xc9, 0x40, 0xee, 0x26, 0xcc, 0x0e, 0x1e, 0xe8, 0x3e, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbb, 0x09, 0xbb, 0x81, 0xdc, 0x4d, 0x98, 0x1e, 0x3c, 0x4d, 0xbf, 0xe7, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0xb4, 0x00, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0xaf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xa0, 0x90, 0x0e, 0x24, 0x82, 0xc2, 0x97, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x50, 0x18, 0x0c, 0x24, 0x82, 0xc2, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x04, 0x85, 0xf8, 0xe0, 0x0d, 0xfc, 0x45, 0x83, 0x60, 0x83, 0xd7, 0xa5, 0x0b, 0x1d, 0xd2, 0x70, 0x83, 0x6c, 0x83, 0xa7, 0xde, 0x17, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xa0, 0xb0, 0x1b, 0x48, 0x04, 0x85, 0x8a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x11, 0x14, 0x56, 0x07, 0x8f, 0x18, 0x30, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x41, 0x61, 0x38, 0x90, 0x08, 0x0a, 0xe3, 0x83, 0xf7, 0x23, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x82, 0xc2, 0x7a, 0x20, 0x11, 0x14, 0x1a, 0x06, 0xc9, 0xc0, 0x7a, 0xdd, 0xf1, 0xf8, 0x38, 0x74, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0x38, 0xe0, 0xd3, 0xd5, 0x89, 0x95, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x50, 0xdc, 0x40, 0x6e, 0x28, 0x7e, 0xd8, 0x85, 0x5b, 0x3c, 0x78, 0x5d, 0x58, 0xc8, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xa1, 0x90, 0x0c, 0xa4, 0x85, 0xc2, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x14, 0xa2, 0x81, 0xb4, 0x50, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x16, 0x85, 0xd1, 0x06, 0xcf, 0xa2, 0x30, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x27, 0x56, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xa1, 0xb0, 0x18, 0x48, 0x0b, 0x85, 0xd5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x16, 0x0a, 0x83, 0x83, 0x47, 0x7d, 0x18, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x38, 0xb5, 0x36, 0x1f, 0x3a, 0x68, 0x0c, 0xbb, 0x70, 0x8b, 0x07, 0x2b, 0x35, 0x9c, 0x0f, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x0b, 0x85, 0x64, 0x20, 0x2f, 0x14, 0x66, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xa1, 0x10, 0x0d, 0xe4, 0x85, 0x42, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xdb, 0x48, 0x8c, 0x36, 0x78, 0x1b, 0x89, 0xd1, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0xb2, 0xc4, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x0b, 0x85, 0xc5, 0x40, 0x5e, 0x28, 0xac, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x50, 0x18, 0x1c, 0xbc, 0xeb, 0xc5, 0x68, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0xbb, 0x53, 0x86, 0x0e, 0x1d, 0x34, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0xf7, 0x52, 0x85, 0x1c, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x18, 0x0a, 0xc9, 0x40, 0x62, 0x28, 0x74, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x86, 0x42, 0x34, 0x90, 0x18, 0x0a, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x4f, 0xa4, 0x31, 0xda, 0xe0, 0x89, 0x34, 0x46, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0xdc, 0x1a, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x31, 0x14, 0x46, 0x03, 0x89, 0xa1, 0x50, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x86, 0xc2, 0xe0, 0xe0, 0x85, 0x3f, 0x46, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x62, 0x28, 0xac, 0x06, 0x12, 0x43, 0x61, 0x78, 0xf0, 0xaa, 0x26, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x43, 0x61, 0x39, 0x90, 0x18, 0x0a, 0xe3, 0x83, 0x77, 0xad, 0x0e, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x86, 0xc2, 0x7a, 0x20, 0x31, 0x14, 0x1a, 0x0e, 0xde, 0x9d, 0x32, 0x74, 0x1c, 0x3a, 0x74, 0xd0, 0x18, 0x76, 0xe1, 0x16, 0x03, 0x9f, 0x2c, 0x2c, 0x6d, 0x3e, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x33, 0x14, 0x92, 0x81, 0xcc, 0x50, 0x98, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x86, 0x42, 0x34, 0x90, 0x19, 0x0a, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x8f, 0x88, 0x32, 0xda, 0xe0, 0x11, 0x51, 0x46, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x2e, 0x29, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x33, 0x14, 0x16, 0x03, 0x99, 0xa1, 0xb0, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x43, 0x61, 0x70, 0xf0, 0x12, 0x2e, 0xa3, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x40, 0xf1, 0x5f, 0x75, 0x3c, 0x3e, 0x74, 0xd0, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x43, 0x21, 0x19, 0x48, 0x0d, 0x85, 0xd9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6a, 0x28, 0x44, 0x03, 0xa9, 0xa1, 0x90, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x39, 0x1e, 0xbc, 0x0f, 0xc2, 0x68, 0x83, 0x57, 0x9c, 0x19, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x1b, 0xc3, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x50, 0x58, 0x0c, 0xa4, 0x86, 0xc2, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0d, 0x85, 0xc1, 0xc1, 0xdb, 0xd6, 0x8c, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x81, 0xbb, 0xeb, 0x78, 0x7c, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x2c, 0x6e, 0xf0, 0xb2, 0xc3, 0xa2, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x28, 0xa4, 0x03, 0x29, 0xa1, 0x70, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x25, 0x14, 0x26, 0x03, 0x29, 0xa1, 0x50, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x84, 0x42, 0x7c, 0xf0, 0x82, 0x3b, 0xa3, 0x61, 0x37, 0x78, 0x29, 0x64, 0xd1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x28, 0x8c, 0x06, 0x52, 0x42, 0x61, 0x7a, 0xf0, 0x4c, 0xca, 0xa2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x25, 0x14, 0xb6, 0x03, 0x29, 0xa1, 0xd0, 0x70, 0xf0, 0xa2, 0xcc, 0xa2, 0x41, 0xb6, 0xc1, 0x43, 0xe5, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x50, 0xe8, 0x19, 0x48, 0x09, 0x85, 0xc6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x25, 0x14, 0x3a, 0x0e, 0x1e, 0x3f, 0x68, 0x34, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x84, 0x42, 0xd1, 0x40, 0x4a, 0x28, 0x74, 0x1d, 0xbc, 0x28, 0x84, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x25, 0x14, 0xca, 0x06, 0x52, 0x42, 0xa1, 0xf0, 0xe0, 0xe8, 0x55, 0x7b, 0x1c, 0x3a, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x16, 0x07, 0xfc, 0xb9, 0xb2, 0xb2, 0xf5, 0xe0, 0x41, 0xe9, 0x1b, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x13, 0x37, 0x90, 0x9c, 0x89, 0x1f, 0x76, 0xe1, 0x16, 0x03, 0x9f, 0xed, 0x4d, 0xac, 0x3c, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x13, 0x92, 0x81, 0xb4, 0x4c, 0xb8, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x96, 0x09, 0xd1, 0x40, 0x5a, 0x26, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0xae, 0xd2, 0x68, 0x83, 0xc7, 0x55, 0x1a, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x7b, 0x2d, 0x8d, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x4c, 0x58, 0x0c, 0xa4, 0x65, 0xc2, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xcb, 0x84, 0xc1, 0xc1, 0x1b, 0x41, 0x8d, 0x06, 0xc1, 0x06, 0x6f, 0x39, 0xdb, 0x38, 0x74, 0xd0, 0x18, 0x76, 0xe1, 0x16, 0x0f, 0x0a, 0x0d, 0x81, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x32, 0x21, 0x19, 0xc8, 0xcb, 0x84, 0x37, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x99, 0x10, 0x0d, 0xe4, 0x65, 0x42, 0x3c, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x63, 0x4a, 0x8d, 0x36, 0x78, 0x4c, 0xa9, 0xd1, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0xc9, 0xd4, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xcb, 0x84, 0x7c, 0x20, 0x2f, 0x13, 0x06, 0x07, 0x43, 0xf3, 0x77, 0xd8, 0x85, 0x5b, 0x3c, 0x58, 0x9a, 0x73, 0x7b, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x62, 0x26, 0x24, 0x03, 0x89, 0x99, 0x70, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x31, 0x13, 0xa2, 0x81, 0xc4, 0x4c, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x5e, 0xac, 0xd1, 0x06, 0xcf, 0x8b, 0x35, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x87, 0xca, 0x1a, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x99, 0x30, 0x18, 0x48, 0xcc, 0x84, 0xc5, 0xc1, 0xd0, 0xfc, 0x1d, 0x76, 0xe1, 0x16, 0x0f, 0x1a, 0x8b, 0xc1, 0x3c, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x33, 0x13, 0x92, 0x81, 0xcc, 0x4c, 0x78, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x99, 0x09, 0xd1, 0x40, 0x66, 0x26, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0xba, 0xd7, 0x68, 0x83, 0x47, 0xf7, 0x1a, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0xfb, 0x7d, 0x8d, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x33, 0x61, 0x31, 0x90, 0x99, 0x09, 0xab, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x33, 0x13, 0x06, 0x07, 0xaf, 0x46, 0x36, 0x1a, 0x04, 0x1b, 0xbc, 0x29, 0x5c, 0xe8, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0xf0, 0x7e, 0x5f, 0xa3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x4c, 0xd8, 0x0d, 0x64, 0x66, 0xc2, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xcc, 0x84, 0xd9, 0xc1, 0xdb, 0x9f, 0x8d, 0x06, 0xc1, 0x06, 0xaf, 0x4b, 0x17, 0x3a, 0x74, 0x22, 0x1a, 0x64, 0x1b, 0xbc, 0xdf, 0xd7, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xcc, 0x84, 0xf5, 0x40, 0x66, 0x26, 0x34, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x99, 0x30, 0x3e, 0x78, 0xbf, 0xb5, 0xd1, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0x20, 0xdc, 0xfa, 0x8e, 0xc7, 0x87, 0xee, 0x47, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0xdf, 0xbd, 0xc9, 0xb9, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x66, 0x42, 0x32, 0x90, 0x9a, 0x09, 0x67, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x33, 0x21, 0x1a, 0x48, 0xcd, 0x84, 0x7c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x17, 0x72, 0x1b, 0x6d, 0xf0, 0x42, 0x6e, 0xa3, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x74, 0xb7, 0xd1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6a, 0x26, 0x2c, 0x06, 0x52, 0x33, 0x61, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x66, 0xc2, 0xe0, 0xe0, 0xa9, 0xe7, 0x46, 0x07, 0x8f, 0x5f, 0x36, 0x1a, 0x64, 0x1b, 0x3c, 0xba, 0xdb, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x35, 0x13, 0x76, 0x03, 0xa9, 0x99, 0xb0, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x33, 0x61, 0x76, 0xf0, 0x12, 0x77, 0xa3, 0x83, 0x27, 0x4c, 0x1b, 0x0d, 0xb2, 0x0d, 0x1e, 0xdd, 0x6d, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9a, 0x09, 0xeb, 0x81, 0xd4, 0x4c, 0x68, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x33, 0x61, 0x7c, 0xf0, 0x50, 0x7a, 0xa3, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0xef, 0xf7, 0x2e, 0x3a, 0x58, 0xc2, 0xff, 0x33, 0xc8, 0x36, 0x78, 0x74, 0xb7, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9a, 0x09, 0x1d, 0x03, 0xa9, 0x99, 0xd0, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x66, 0x42, 0xc5, 0xc1, 0xcb, 0xf8, 0x8d, 0x06, 0xc1, 0x06, 0xcf, 0xd2, 0x36, 0x3a, 0x28, 0x82, 0x07, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x4c, 0x48, 0x06, 0x72, 0x33, 0xe1, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6e, 0x26, 0x44, 0x03, 0xb9, 0x99, 0x90, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x39, 0x1e, 0x3c, 0x22, 0xd2, 0x68, 0x83, 0x57, 0x1a, 0x1c, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x0b, 0x02, 0x8e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x33, 0x61, 0x31, 0x90, 0x9b, 0x09, 0xab, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x37, 0x13, 0x06, 0x07, 0xaf, 0x57, 0x38, 0x3a, 0x78, 0xfc, 0xb2, 0xd1, 0x20, 0xdb, 0xe0, 0x05, 0x01, 0x47, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0x99, 0xb0, 0x1b, 0xc8, 0xcd, 0x84, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9b, 0x09, 0xb3, 0x83, 0xc7, 0x45, 0x1c, 0x1d, 0x3c, 0x61, 0xda, 0x68, 0x90, 0x6d, 0xf0, 0x82, 0x80, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x37, 0x13, 0xd6, 0x03, 0xb9, 0x99, 0xd0, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x66, 0xc2, 0xf8, 0xe0, 0xe5, 0x17, 0x47, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0x96, 0x6c, 0xcb, 0x1c, 0xba, 0x1f, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x8b, 0x1b, 0xbc, 0xd4, 0x45, 0xe8, 0xe0, 0x11, 0x60, 0x1e, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf1, 0x13, 0x37, 0x90, 0xfb, 0x89, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xfc, 0x84, 0x6c, 0x20, 0xf1, 0x13, 0x1a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x4f, 0x48, 0x06, 0x12, 0x3f, 0xe1, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe2, 0x27, 0xc4, 0x03, 0x89, 0x9f, 0x30, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x3f, 0x21, 0x3c, 0x78, 0x31, 0xca, 0xd1, 0x20, 0xd8, 0xe0, 0xd9, 0x13, 0x42, 0x07, 0xc9, 0x86, 0x06, 0x83, 0x6c, 0x83, 0x57, 0x87, 0x1c, 0x0d, 0xb2, 0x0d, 0x5e, 0x46, 0x72, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf8, 0x09, 0xab, 0x81, 0xc4, 0x4f, 0x58, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x9f, 0xb0, 0x39, 0x78, 0x30, 0xcc, 0xd1, 0x20, 0xd8, 0xe0, 0xb5, 0x1b, 0x42, 0x07, 0xc9, 0xe5, 0x03, 0x83, 0x6c, 0x83, 0x57, 0x87, 0x1c, 0x0d, 0xb2, 0x0d, 0x5e, 0x46, 0x72, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x7e, 0xc2, 0x78, 0x20, 0xf1, 0x13, 0x0a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x4f, 0x98, 0x1e, 0x3c, 0x17, 0xe7, 0x68, 0x10, 0x6c, 0xf0, 0xba, 0x74, 0xa1, 0x83, 0x93, 0x75, 0xf7, 0x20, 0xdb, 0xe0, 0x5d, 0x1f, 0x47, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x9f, 0x90, 0x0d, 0x64, 0x7e, 0x42, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x7e, 0x42, 0x32, 0x90, 0xf9, 0x09, 0x0f, 0x06, 0xc1, 0x06, 0xcf, 0x61, 0x11, 0x3a, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0xbc, 0xeb, 0xe3, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xfd, 0x84, 0x6c, 0x20, 0xf5, 0x13, 0xf2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf5, 0x13, 0x92, 0x81, 0xd4, 0x4f, 0x78, 0x30, 0x08, 0x36, 0x78, 0xaa, 0x88, 0xd1, 0xa1, 0x05, 0xd8, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x38, 0x33, 0x07, 0x69, 0x00, 0x19, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x61, 0x14, 0x37, 0x90, 0x34, 0x8a, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x18, 0x85, 0x6c, 0x20, 0x61, 0x14, 0x66, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x28, 0x24, 0x03, 0x09, 0xa3, 0x70, 0x62, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x18, 0x85, 0x70, 0x20, 0x61, 0x14, 0x06, 0x07, 0x6f, 0x04, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x18, 0x85, 0xc5, 0x40, 0xc2, 0x28, 0xac, 0x0e, 0xde, 0xef, 0x5d, 0x74, 0x1c, 0x3a, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0xef, 0x6b, 0x3a, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x18, 0x85, 0x6c, 0x20, 0x63, 0x14, 0xa6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x28, 0x24, 0x03, 0x19, 0xa3, 0x70, 0x63, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x18, 0x85, 0x70, 0x20, 0x63, 0x14, 0xf2, 0x83, 0x57, 0x35, 0x09, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x31, 0x0a, 0x83, 0x81, 0x8c, 0x51, 0x18, 0x1d, 0x2c, 0x55, 0xf7, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x31, 0x0a, 0xab, 0x81, 0x8c, 0x51, 0x58, 0x1e, 0xa4, 0x7c, 0x5c, 0x1c, 0x87, 0x0e, 0x4d, 0x81, 0x06, 0xd9, 0x06, 0xef, 0x6b, 0x3a, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x19, 0x85, 0x6c, 0x20, 0x65, 0x14, 0xf2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x65, 0x14, 0x92, 0x81, 0x94, 0x51, 0xf8, 0x32, 0x08, 0x36, 0x78, 0xff, 0xbd, 0xd1, 0xa1, 0x13, 0xd1, 0x20, 0xdb, 0xe0, 0x7d, 0x4d, 0x47, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x28, 0x64, 0x03, 0x39, 0xa3, 0x10, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xa3, 0x90, 0x0c, 0xe4, 0x8c, 0xc2, 0x83, 0x41, 0xb0, 0xc1, 0xc3, 0xf6, 0x7a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0x4c, 0xfd, 0xe2, 0xd0, 0x2c, 0xe9, 0x38, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2a, 0x0a, 0xe9, 0x40, 0xaa, 0x28, 0x7c, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x45, 0x21, 0x1e, 0x48, 0x15, 0x85, 0xc9, 0xc1, 0x7b, 0x33, 0x88, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x15, 0x85, 0xcd, 0x40, 0xaa, 0x28, 0xec, 0x06, 0xc9, 0x80, 0xc3, 0x5e, 0xdf, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xaa, 0x28, 0x0c, 0x07, 0x52, 0x45, 0x61, 0x3c, 0x48, 0x06, 0x0c, 0xaf, 0xab, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0xe0, 0xcc, 0x3b, 0xbb, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x31, 0x71, 0x03, 0xf9, 0x98, 0xf8, 0x61, 0x37, 0x78, 0x5c, 0x80, 0xce, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x26, 0x24, 0x03, 0xc9, 0x98, 0x90, 0x0d, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0xe7, 0xc8, 0xdd, 0x83, 0xe7, 0xf3, 0xf2, 0x0c, 0xbb, 0xc1, 0xa3, 0x06, 0x74, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x31, 0x21, 0x1d, 0x48, 0xc6, 0x84, 0x7c, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x48, 0x5b, 0xa0, 0x3e, 0x78, 0xdb, 0x32, 0xcf, 0xb0, 0x1b, 0xbc, 0xa6, 0x40, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x19, 0x13, 0x16, 0x03, 0xc9, 0x98, 0xb0, 0x19, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0x96, 0xda, 0x14, 0x1c, 0xbc, 0x1f, 0x9b, 0x67, 0xd8, 0x0d, 0xde, 0x71, 0xa0, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8c, 0x09, 0xab, 0x81, 0x64, 0x4c, 0xd8, 0x0d, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0x03, 0xdf, 0xf8, 0x60, 0xa4, 0x1d, 0x0f, 0xbb, 0xc1, 0xeb, 0x11, 0x74, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x31, 0x61, 0x39, 0x90, 0x8c, 0x09, 0xdb, 0x61, 0x17, 0x6e, 0x43, 0xea, 0xe0, 0x60, 0xfd, 0xe3, 0xcb, 0xc1, 0x6b, 0xe7, 0x79, 0x86, 0x5d, 0xb8, 0x0d, 0xc6, 0xed, 0xee, 0x21, 0x75, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8c, 0x09, 0xeb, 0x81, 0x64, 0x4c, 0xd8, 0x0f, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0xe3, 0x76, 0xf7, 0x60, 0xa0, 0xf0, 0x0e, 0xbb, 0x70, 0x1b, 0x94, 0x22, 0x92, 0x87, 0xd4, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x36, 0x26, 0x24, 0x03, 0xd9, 0x98, 0x90, 0x0d, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0xa5, 0x88, 0xe4, 0x41, 0xb9, 0x25, 0x39, 0xec, 0xc2, 0x6d, 0x50, 0x44, 0x4a, 0x1e, 0x52, 0x07, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x98, 0x90, 0x0e, 0x64, 0x63, 0x42, 0x3e, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x14, 0x91, 0x92, 0x07, 0x85, 0xb2, 0xe4, 0xb0, 0x0b, 0xb7, 0xc1, 0x9a, 0xb4, 0x84, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1b, 0x13, 0x16, 0x03, 0xd9, 0x98, 0xb0, 0x19, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0xd6, 0xa4, 0x25, 0x6c, 0xb0, 0x26, 0x2d, 0xe1, 0x70, 0x8a, 0x0d, 0xbb, 0x70, 0x1b, 0xac, 0xd1, 0x56, 0x38, 0xa4, 0x0e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x31, 0x61, 0x35, 0x90, 0x8d, 0x09, 0xbb, 0x61, 0x17, 0x6e, 0x43, 0xea, 0xe0, 0x60, 0x8d, 0xb6, 0xc2, 0xc1, 0x3b, 0x73, 0x7e, 0x86, 0x5d, 0xb8, 0x0d, 0x4a, 0xa0, 0xc8, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1b, 0x13, 0x96, 0x03, 0xd9, 0x98, 0xb0, 0x1d, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0x4a, 0xa0, 0xc8, 0x83, 0x32, 0x2f, 0x72, 0xd8, 0x85, 0xdb, 0xe0, 0xa4, 0xb7, 0x7b, 0x48, 0x1d, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x63, 0xc2, 0x7a, 0x20, 0x1b, 0x13, 0xf6, 0xc3, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0xc1, 0x49, 0x6f, 0x77, 0x83, 0x93, 0xde, 0xee, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x36, 0x48, 0xf0, 0x78, 0x3e, 0xa4, 0x0e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x31, 0x21, 0x19, 0x48, 0xc7, 0x84, 0x6c, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x48, 0xf0, 0x78, 0xde, 0x20, 0xc1, 0xe3, 0xf9, 0x70, 0x8a, 0x0d, 0xbb, 0x70, 0x1b, 0xac, 0x11, 0xea, 0x38, 0xa4, 0x0e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x31, 0x21, 0x1d, 0x48, 0xc7, 0x84, 0x7c, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x58, 0x23, 0xd4, 0xb1, 0xc1, 0x1a, 0xa1, 0x8e, 0xc3, 0x29, 0x36, 0xec, 0xc2, 0x6d, 0x90, 0x20, 0x09, 0x7d, 0x48, 0x1d, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x63, 0xc2, 0x62, 0x20, 0x1d, 0x13, 0x36, 0xc3, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0x41, 0x82, 0x24, 0xf4, 0x06, 0x09, 0x92, 0xd0, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0xdb, 0x60, 0x2d, 0x6a, 0xc3, 0x21, 0x75, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8e, 0x09, 0xab, 0x81, 0x74, 0x4c, 0xd8, 0x0d, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0x6b, 0x51, 0x1b, 0x36, 0x58, 0x8b, 0xda, 0x70, 0x38, 0xc5, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x4c, 0x58, 0x0e, 0xa4, 0x63, 0xc2, 0x76, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x38, 0xf3, 0xce, 0x6e, 0x70, 0xe6, 0x9d, 0x3d, 0x9c, 0x62, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3d, 0x14, 0xd2, 0x81, 0xf4, 0x50, 0x78, 0x31, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0xc1, 0x7b, 0x19, 0x38, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x29, 0x0a, 0xe9, 0x40, 0xa6, 0x28, 0xfc, 0x19, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x45, 0x21, 0x1e, 0xc8, 0x14, 0x85, 0xc9, 0xc1, 0x7b, 0x33, 0x88, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x14, 0x85, 0xcd, 0x40, 0xa6, 0x28, 0xec, 0x0e, 0x5e, 0x1d, 0x2e, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x53, 0x14, 0x86, 0x03, 0x99, 0xa2, 0xb0, 0x3d, 0x78, 0xd7, 0xea, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0e, 0x85, 0x74, 0x20, 0x39, 0x14, 0x2e, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xa1, 0x10, 0x0f, 0x24, 0x87, 0xc2, 0xe4, 0xe0, 0x8d, 0x00, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0xc5, 0xd9, 0xa0, 0xd5, 0x88, 0xec, 0x83, 0x66, 0xb9, 0x5c, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x72, 0x28, 0x6c, 0x06, 0x92, 0x43, 0xa1, 0x62, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x39, 0x14, 0x66, 0x03, 0xc9, 0xa1, 0x30, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x43, 0x61, 0x74, 0xf0, 0xb2, 0x0c, 0xa4, 0x41, 0xb0, 0xc1, 0x73, 0x58, 0x84, 0x0e, 0x69, 0xb8, 0x41, 0xb6, 0xc1, 0x03, 0x2a, 0x90, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x50, 0x58, 0x0f, 0x24, 0x87, 0x42, 0xc3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1c, 0x0a, 0xdb, 0x83, 0xb7, 0x81, 0x20, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x18, 0x48, 0x50, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x4e, 0x48, 0x07, 0x32, 0x3b, 0xe1, 0xcb, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd9, 0x09, 0xf1, 0x40, 0x66, 0x27, 0x4c, 0x0e, 0xde, 0x08, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x9d, 0xb0, 0x19, 0xc8, 0xec, 0x84, 0x96, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x4e, 0x18, 0x0d, 0x64, 0x76, 0xc2, 0xf0, 0xe0, 0x81, 0x1c, 0x48, 0x83, 0x6c, 0x83, 0xa7, 0xc3, 0x20, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x9d, 0xb0, 0x1c, 0xc8, 0xec, 0x84, 0x92, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb3, 0x13, 0xa6, 0x03, 0x99, 0x9d, 0x30, 0x3f, 0x78, 0x3f, 0x42, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x66, 0x27, 0xec, 0x07, 0x32, 0x3b, 0xa1, 0x63, 0x90, 0x0c, 0xe4, 0xff, 0x8e, 0xe7, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbe, 0x0a, 0xe9, 0x40, 0xfa, 0x2a, 0x14, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xab, 0x10, 0x0f, 0xa4, 0xaf, 0xc2, 0xe2, 0xe0, 0x55, 0x4d, 0x42, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xaf, 0xc2, 0x64, 0x20, 0x7d, 0x15, 0x66, 0x83, 0x64, 0x60, 0xff, 0xea, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x38, 0x07, 0xaf, 0x83, 0x30, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xab, 0xb0, 0x1b, 0x48, 0x5f, 0x85, 0x9e, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x55, 0x58, 0x0f, 0xa4, 0xaf, 0x42, 0xc1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbe, 0x0a, 0xc3, 0x83, 0x37, 0x5d, 0x21, 0x1d, 0xbc, 0x5c, 0xb9, 0x68, 0x90, 0x6d, 0xf0, 0x74, 0x29, 0xa4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7d, 0x15, 0x2a, 0x06, 0xd2, 0x57, 0xa1, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x5f, 0x85, 0x86, 0x83, 0x27, 0x77, 0x21, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0x4b, 0x57, 0xc7, 0xe3, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x16, 0x0f, 0x5e, 0xee, 0x22, 0xb4, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x3b, 0x21, 0x1d, 0xc8, 0xed, 0x84, 0x37, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0x9d, 0x90, 0x0f, 0xe4, 0x76, 0xc2, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xed, 0x84, 0xf8, 0xe0, 0x8d, 0x6a, 0x48, 0x83, 0x60, 0x83, 0xd7, 0x6e, 0x08, 0x1d, 0xd2, 0x70, 0x83, 0x6c, 0x83, 0xb7, 0x98, 0x21, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0x9d, 0x30, 0x1d, 0xc8, 0xed, 0x84, 0xc2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb7, 0x13, 0x46, 0x07, 0x8f, 0x8c, 0x43, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x3b, 0x61, 0x3b, 0x90, 0xdb, 0x09, 0xf3, 0x83, 0x17, 0x85, 0x10, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x76, 0xc2, 0x7e, 0x20, 0xb7, 0x13, 0xfa, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6e, 0x27, 0x14, 0x0c, 0xe4, 0x76, 0x42, 0xc9, 0xc1, 0x4b, 0x34, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xed, 0x84, 0x96, 0x81, 0xdc, 0x4e, 0x68, 0x3a, 0x78, 0x18, 0x85, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x4e, 0xa8, 0x1a, 0xc8, 0xed, 0x84, 0xba, 0x83, 0xa5, 0xea, 0x3e, 0xc7, 0xa1, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x2c, 0xae, 0xc1, 0x7b, 0xa9, 0x42, 0x0e, 0xa7, 0x58, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x5f, 0x15, 0x37, 0x90, 0xb1, 0x8a, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x55, 0x71, 0x07, 0xaf, 0x66, 0x44, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x57, 0x85, 0x68, 0x20, 0x5f, 0x15, 0xe2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x5f, 0x15, 0x92, 0x83, 0x67, 0x47, 0x22, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x78, 0x63, 0x7f, 0xc7, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x78, 0xc7, 0x22, 0xd2, 0x20, 0xdb, 0xe0, 0x8d, 0x8d, 0x48, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x2a, 0xc4, 0x03, 0x09, 0xab, 0x30, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x56, 0x21, 0x39, 0x78, 0x89, 0x26, 0xd2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb0, 0x0a, 0xf9, 0x40, 0xc2, 0x2a, 0x4c, 0x0e, 0x5e, 0x14, 0x42, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb0, 0x0a, 0x9b, 0x81, 0x84, 0x55, 0xd8, 0x1d, 0xbc, 0x04, 0x0a, 0xe9, 0x38, 0x74, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x57, 0x48, 0x07, 0x72, 0x5e, 0x61, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf3, 0x0a, 0x83, 0x81, 0x9c, 0x57, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xaf, 0x10, 0x1f, 0x3c, 0x8c, 0x15, 0x69, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x10, 0xe8, 0x4b, 0x87, 0x15, 0xda, 0x43, 0x1a, 0x6e, 0x90, 0x6d, 0xf0, 0x02, 0x54, 0xa4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe7, 0x15, 0x76, 0x03, 0x39, 0xaf, 0xb0, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x5e, 0x61, 0x75, 0xf0, 0x32, 0x5a, 0xa4, 0x41, 0xb0, 0xc1, 0x6b, 0x5f, 0x91, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x58, 0x0e, 0x67, 0xb4, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x43, 0x21, 0x1d, 0xc8, 0x0f, 0x85, 0x2f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xa1, 0x30, 0x18, 0xc8, 0x0f, 0x85, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1f, 0x0a, 0xf1, 0xc1, 0x23, 0x7e, 0x91, 0x06, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x39, 0x58, 0x64, 0x16, 0x34, 0xc8, 0x36, 0x78, 0xab, 0x2e, 0xd2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1f, 0x0a, 0xb3, 0x81, 0xfc, 0x50, 0x98, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xa1, 0x30, 0x3a, 0x78, 0x90, 0x31, 0xd2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0x20, 0xf8, 0xab, 0x8e, 0xc7, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x50, 0x48, 0x07, 0xb2, 0x43, 0xe1, 0xc2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1d, 0x0a, 0xf1, 0x40, 0x76, 0x28, 0x4c, 0x0e, 0xde, 0x08, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x9c, 0x0d, 0xca, 0x9c, 0x80, 0x83, 0x47, 0x80, 0x79, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x50, 0xd8, 0x0c, 0x64, 0x87, 0x42, 0xc5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x76, 0x28, 0xcc, 0x06, 0xb2, 0x43, 0x61, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x87, 0xc2, 0xe8, 0xe0, 0x29, 0xdb, 0x48, 0x07, 0x0f, 0xe4, 0x40, 0x1a, 0x64, 0x1b, 0xbc, 0xd8, 0x1a, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x0e, 0x85, 0xf5, 0x40, 0x76, 0x28, 0x34, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xa1, 0xb0, 0x3d, 0x78, 0x67, 0x38, 0xd2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0xe0, 0xb4, 0xd7, 0x77, 0x3c, 0x3e, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x96, 0x85, 0xc1, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x4e, 0x48, 0x07, 0xd2, 0x3a, 0xe1, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x27, 0x0c, 0x06, 0xd2, 0x3a, 0x61, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x75, 0x42, 0x7c, 0xf0, 0x34, 0x77, 0xa4, 0x41, 0xb0, 0xc1, 0xc3, 0xf6, 0x7a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xe0, 0xa4, 0xb7, 0x7b, 0xc8, 0xda, 0x1d, 0x87, 0x06, 0xd9, 0x06, 0x2f, 0x50, 0x47, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xeb, 0x84, 0xd5, 0x40, 0x5a, 0x27, 0x74, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x9d, 0xb0, 0x39, 0x78, 0xd7, 0x3d, 0xd2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd6, 0x09, 0xb3, 0x81, 0xb4, 0x4e, 0x58, 0x1e, 0xbc, 0xaa, 0x49, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x4e, 0x98, 0x0e, 0xa4, 0x75, 0xc2, 0xfa, 0xe0, 0x69, 0xfa, 0x3d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x9d, 0x30, 0x1f, 0x48, 0xeb, 0x84, 0x8a, 0x83, 0xf7, 0x7b, 0x17, 0x1d, 0x87, 0x0e, 0x4d, 0x81, 0x06, 0xd9, 0x06, 0x2f, 0x50, 0x47, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x3a, 0xa1, 0x66, 0x20, 0xad, 0x13, 0xaa, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x4e, 0x28, 0x39, 0x78, 0xd6, 0x42, 0xd2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0xb6, 0x36, 0x98, 0x0e, 0x2d, 0xc0, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd2, 0x2b, 0xa4, 0x03, 0x49, 0xaf, 0x30, 0x1d, 0x7e, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x57, 0x18, 0x0c, 0x24, 0xbd, 0xc2, 0xe8, 0xe0, 0x25, 0x29, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd2, 0x2b, 0xac, 0x06, 0x92, 0x5e, 0x61, 0x79, 0xf0, 0x92, 0x94, 0xa1, 0x43, 0x4f, 0xd4, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0x58, 0x3c, 0x78, 0xd4, 0x04, 0xd2, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xe6, 0xc4, 0x0d, 0x24, 0x74, 0xe2, 0x87, 0x5d, 0xb8, 0xc5, 0x83, 0xc2, 0xdf, 0xe0, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x4e, 0x48, 0x06, 0x92, 0x39, 0xe1, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x27, 0x44, 0x03, 0xc9, 0x9c, 0x10, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0xd4, 0x8f, 0xa4, 0x0d, 0x9e, 0xfa, 0x91, 0x74, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x2f, 0x06, 0x49, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x39, 0x21, 0x1f, 0x48, 0xe6, 0x84, 0xc1, 0xc1, 0xd0, 0xfc, 0x1d, 0x76, 0xe1, 0x16, 0x0f, 0x16, 0x60, 0xb9, 0x1c, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xcd, 0x09, 0xc9, 0x40, 0x36, 0x27, 0x7c, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xe6, 0x84, 0x68, 0x20, 0x9b, 0x13, 0xe2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x1e, 0xbf, 0x92, 0xb4, 0xc1, 0xe3, 0x57, 0x92, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x19, 0x2d, 0x49, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x36, 0x27, 0x2c, 0x06, 0xb2, 0x39, 0x61, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x73, 0x42, 0x7e, 0xf0, 0x74, 0x9b, 0xa4, 0x83, 0xb7, 0x89, 0x18, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0x65, 0x4e, 0xc0, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x9c, 0x90, 0x0c, 0xa4, 0x73, 0xc2, 0x9b, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x4e, 0x88, 0x06, 0xd2, 0x39, 0x21, 0x1e, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xed, 0x3a, 0x49, 0x1b, 0xbc, 0x5d, 0x27, 0xe9, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0xc0, 0x93, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x73, 0xc2, 0x62, 0x20, 0x9d, 0x13, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3a, 0x27, 0xe4, 0x07, 0xcf, 0x2e, 0x4a, 0x3a, 0x78, 0x9b, 0x88, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xcf, 0x09, 0xc9, 0x40, 0x3e, 0x27, 0x9c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xe7, 0x84, 0x68, 0x20, 0x9f, 0x13, 0xe2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0xc7, 0x83, 0x56, 0x23, 0xb2, 0x37, 0x78, 0xd2, 0x53, 0xd2, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x3c, 0x37, 0x29, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xe7, 0x84, 0xc5, 0x40, 0x3e, 0x27, 0xac, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x4e, 0xc8, 0x0f, 0xde, 0x39, 0x95, 0x74, 0xf0, 0x36, 0x11, 0xa3, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xb2, 0x42, 0x3a, 0x90, 0xca, 0x0a, 0xf5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xac, 0x30, 0x1a, 0x48, 0x65, 0x85, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xca, 0x0a, 0xf1, 0xc1, 0xe3, 0xba, 0x92, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x56, 0x58, 0x0d, 0xa4, 0xb2, 0xc2, 0xf0, 0xe0, 0x45, 0x21, 0x44, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xac, 0xb0, 0x1c, 0x48, 0x65, 0x85, 0xf5, 0xc1, 0x4b, 0xa0, 0x90, 0x8e, 0x43, 0x87, 0x34, 0xdc, 0x20, 0xdb, 0xe0, 0x11, 0x59, 0x49, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2a, 0x2b, 0xb4, 0x0c, 0xa4, 0xb2, 0x42, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xca, 0x0a, 0xfb, 0x83, 0x37, 0xb1, 0x25, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xac, 0x50, 0x33, 0x90, 0xca, 0x0a, 0x4d, 0x07, 0xaf, 0x6a, 0x12, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x95, 0x15, 0xaa, 0x06, 0x52, 0x59, 0xa1, 0x6e, 0x90, 0x0c, 0x18, 0x6a, 0x7d, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0xc5, 0x0d, 0xde, 0x98, 0x88, 0x74, 0xf0, 0x3a, 0x08, 0xa3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xca, 0x0a, 0x7d, 0x03, 0xa9, 0xac, 0x50, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xca, 0x0a, 0x8d, 0x03, 0xa9, 0xac, 0xd0, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xb2, 0x42, 0xe1, 0xc1, 0x4b, 0xfe, 0x92, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x1d, 0xbc, 0x04, 0x0a, 0xe9, 0x90, 0x86, 0x1b, 0x64, 0x1b, 0x3c, 0x57, 0x2f, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x65, 0x85, 0xde, 0x81, 0x54, 0x56, 0xe8, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x59, 0xa1, 0xf6, 0xe0, 0xc1, 0x86, 0x49, 0x07, 0x6f, 0x07, 0x43, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x16, 0x07, 0x5e, 0xee, 0x3e, 0x9c, 0x62, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1b, 0x14, 0x37, 0x90, 0x10, 0x8a, 0x1f, 0x76, 0x83, 0xc5, 0x09, 0x17, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xa0, 0x90, 0x0c, 0x64, 0x83, 0xc2, 0x8b, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x50, 0x88, 0x06, 0xb2, 0x41, 0x21, 0x1c, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x4d, 0x5a, 0xc2, 0xc1, 0x1b, 0x88, 0x8f, 0x06, 0xd9, 0x06, 0x4f, 0x89, 0x4c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x41, 0x61, 0x31, 0x90, 0x0d, 0x0a, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1b, 0x14, 0xd2, 0x83, 0x57, 0x6a, 0x26, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xa0, 0x30, 0x19, 0xc8, 0x06, 0x85, 0xd9, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x41, 0x61, 0x37, 0x90, 0x0d, 0x0a, 0xdb, 0x83, 0x87, 0x56, 0x09, 0x1d, 0x87, 0x0e, 0x1d, 0x34, 0x86, 0x5d, 0xb8, 0x0d, 0xd6, 0x08, 0x75, 0x1c, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0e, 0x0a, 0xc9, 0x40, 0x3a, 0x28, 0xdc, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x07, 0x85, 0x68, 0x20, 0x1d, 0x14, 0xc2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xd6, 0x08, 0x75, 0x1c, 0xbc, 0x16, 0xfc, 0x68, 0x90, 0x6d, 0xf0, 0x0c, 0xd4, 0xa4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1d, 0x14, 0x16, 0x03, 0xe9, 0xa0, 0x30, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x41, 0x21, 0x3d, 0x78, 0x61, 0x6c, 0xd2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0e, 0x0a, 0x93, 0x81, 0x74, 0x50, 0x98, 0x1d, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1d, 0x14, 0x76, 0x03, 0xe9, 0xa0, 0xb0, 0x3d, 0x78, 0x68, 0x95, 0xd0, 0x71, 0xe8, 0xd0, 0x41, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x07, 0x85, 0x64, 0x20, 0x1f, 0x14, 0xfe, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x83, 0x42, 0x34, 0x90, 0x0f, 0x0a, 0xe9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x63, 0xf0, 0x72, 0xf7, 0x06, 0x2f, 0x1b, 0x4e, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x57, 0xf7, 0x26, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x83, 0xc2, 0x64, 0x20, 0x1f, 0x14, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x28, 0xc4, 0x07, 0xcf, 0x3c, 0x4e, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x41, 0x61, 0x33, 0x90, 0x0f, 0x0a, 0xbb, 0x83, 0xf7, 0x23, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x83, 0xc2, 0x70, 0x20, 0x1f, 0x14, 0xc6, 0x07, 0x0f, 0xad, 0x12, 0x3a, 0x0e, 0x1d, 0x9a, 0x02, 0x0d, 0xb2, 0x0d, 0x5e, 0xdd, 0x9b, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x83, 0x42, 0xc5, 0x40, 0x3e, 0x28, 0xb4, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xa0, 0x30, 0x3f, 0x78, 0x9f, 0x75, 0xd2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0f, 0x0a, 0x1d, 0x03, 0xf9, 0xa0, 0xd0, 0x73, 0xf0, 0x7e, 0x84, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x50, 0x28, 0x1a, 0xc8, 0x07, 0x85, 0xb2, 0x83, 0x87, 0x56, 0x09, 0x1d, 0x87, 0x0e, 0x2d, 0xc0, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd2, 0x27, 0x6e, 0x20, 0xed, 0x13, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x7c, 0xe2, 0x0e, 0x9e, 0x63, 0x9e, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf4, 0x09, 0xe9, 0x40, 0xd2, 0x27, 0x8c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x4f, 0x48, 0x06, 0x92, 0x3e, 0xe1, 0xc4, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf4, 0x09, 0xf1, 0x40, 0xd2, 0x27, 0x2c, 0x0e, 0x5e, 0xd5, 0x24, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd2, 0x27, 0x4c, 0x06, 0x92, 0x3e, 0x61, 0x76, 0xf0, 0x7e, 0xef, 0xa2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x9f, 0xb0, 0x1b, 0x48, 0xfa, 0x84, 0xed, 0xc1, 0xab, 0x1f, 0x8f, 0x8e, 0x43, 0x87, 0x34, 0xdc, 0x20, 0xdb, 0xe0, 0x81, 0xe4, 0x49, 0x83, 0x6c, 0x83, 0xc7, 0x9b, 0x27, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x9f, 0x90, 0x0e, 0x64, 0x7d, 0xc2, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xfa, 0x84, 0x64, 0x20, 0xeb, 0x13, 0x1e, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x9f, 0x10, 0x0f, 0x64, 0x7d, 0xc2, 0xe2, 0xe0, 0x55, 0x4d, 0x42, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x7d, 0xc2, 0x64, 0x20, 0xeb, 0x13, 0x66, 0x07, 0x29, 0x1f, 0x17, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x3e, 0x61, 0x37, 0x90, 0xf5, 0x09, 0xdb, 0x83, 0x67, 0x78, 0x07, 0x1c, 0x87, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0x83, 0x57, 0x26, 0x22, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x4f, 0xdc, 0x40, 0xc6, 0x27, 0x7e, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0xb3, 0x34, 0xb6, 0xf2, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x4f, 0x48, 0x06, 0x12, 0x3d, 0x61, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe8, 0x09, 0xd1, 0x40, 0xa2, 0x27, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0x57, 0x42, 0x69, 0x83, 0xe7, 0x4a, 0x28, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x0b, 0x28, 0x94, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x4f, 0x58, 0x0c, 0x24, 0x7a, 0xc2, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf4, 0x84, 0xc1, 0xc1, 0x9b, 0x3b, 0x94, 0x0e, 0x9e, 0x89, 0x2f, 0x34, 0xec, 0xc2, 0x2d, 0x06, 0xbe, 0x5b, 0x98, 0x5d, 0x79, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa6, 0x27, 0x24, 0x03, 0x99, 0x9e, 0x30, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf4, 0x84, 0x68, 0x20, 0xd3, 0x13, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x5e, 0x1d, 0xa2, 0xb4, 0xc1, 0xab, 0x43, 0x94, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x21, 0x23, 0x4a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa6, 0x27, 0x2c, 0x06, 0x32, 0x3d, 0x61, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x7a, 0xc2, 0xe0, 0xe0, 0xe9, 0x2c, 0x4a, 0x07, 0x0f, 0xbc, 0x45, 0x1a, 0x76, 0x83, 0x87, 0x43, 0x19, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x7a, 0x42, 0x32, 0x90, 0xea, 0x09, 0xb3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x4f, 0x88, 0x06, 0x52, 0x3d, 0x21, 0x3f, 0x78, 0xcf, 0x95, 0xd1, 0x20, 0xdb, 0xe0, 0x91, 0x31, 0x4a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xaa, 0x27, 0x2c, 0x06, 0x52, 0x3d, 0x61, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x7a, 0xc2, 0xe0, 0xe0, 0xc9, 0x39, 0x4a, 0x07, 0x0f, 0xbc, 0x45, 0x1a, 0x76, 0xe1, 0x16, 0x03, 0x7f, 0x2c, 0x6c, 0x8e, 0x3e, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd7, 0x13, 0x92, 0x81, 0x5c, 0x4f, 0x98, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x7a, 0x42, 0x34, 0x90, 0xeb, 0x09, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x8f, 0xee, 0x51, 0xda, 0xe0, 0xd1, 0x3d, 0x4a, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x8e, 0x1f, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd7, 0x13, 0x16, 0x03, 0xb9, 0x9e, 0xb0, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x3d, 0x61, 0x70, 0xf0, 0x72, 0x24, 0xa5, 0x41, 0xb0, 0xa1, 0x47, 0xc9, 0xa1, 0x83, 0xc6, 0xb0, 0x0b, 0xb7, 0xc1, 0x2b, 0xce, 0x8c, 0x0e, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf6, 0x84, 0x64, 0x20, 0xd9, 0x13, 0x66, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x9e, 0x10, 0x0d, 0x24, 0x7b, 0x42, 0x7e, 0xf0, 0x36, 0x33, 0xa3, 0x41, 0xb6, 0xc1, 0xeb, 0x9c, 0x94, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x4f, 0x58, 0x0c, 0x24, 0x7b, 0xc2, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf6, 0x84, 0xc1, 0xc1, 0x5b, 0xad, 0x94, 0x0e, 0x1e, 0xc0, 0xa4, 0x34, 0xec, 0xc2, 0x2d, 0x06, 0xbe, 0x5d, 0x18, 0x5b, 0x79, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xbe, 0x27, 0x24, 0x03, 0xf9, 0x9e, 0x30, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf7, 0x84, 0x68, 0x20, 0xdf, 0x13, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x5e, 0xab, 0xa5, 0xb4, 0xc1, 0x6b, 0xb5, 0x94, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x01, 0x5c, 0x4a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x9e, 0xb0, 0x18, 0xc8, 0xf7, 0x84, 0xd5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xef, 0x09, 0x83, 0x83, 0x47, 0x97, 0x29, 0x1d, 0x3c, 0x61, 0xe8, 0x68, 0x90, 0x6d, 0xf0, 0x00, 0x2e, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdf, 0x13, 0x76, 0x03, 0xf9, 0x9e, 0xb0, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x3d, 0x61, 0x76, 0xf0, 0x22, 0x36, 0xa5, 0x41, 0xb0, 0xc1, 0x5b, 0xce, 0x36, 0x0e, 0x2d, 0xc0, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x4f, 0x48, 0x06, 0x12, 0x3e, 0xa1, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe1, 0x13, 0xa2, 0x81, 0x84, 0x4f, 0xc8, 0x0f, 0xde, 0xa9, 0x63, 0x34, 0xc8, 0x36, 0x78, 0x31, 0x9c, 0xd2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x27, 0x2c, 0x06, 0x12, 0x3e, 0x61, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x7c, 0xc2, 0xe0, 0xe0, 0x09, 0x79, 0x4a, 0x07, 0x4f, 0x18, 0x3a, 0x1a, 0x64, 0x1b, 0xbc, 0x18, 0x4e, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf8, 0x84, 0xdd, 0x40, 0xc2, 0x27, 0xd4, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0x9f, 0x30, 0x3b, 0x78, 0xdf, 0x9f, 0xd2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf0, 0x09, 0xc3, 0x81, 0x84, 0x4f, 0xd8, 0x1e, 0xbc, 0xaa, 0x49, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x4f, 0x18, 0x0f, 0x24, 0x7c, 0x42, 0xc1, 0xc1, 0x52, 0x75, 0x9f, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0x9f, 0xd0, 0x30, 0x90, 0xf0, 0x09, 0x2d, 0x07, 0x29, 0x1f, 0x17, 0xc7, 0xa1, 0x43, 0x0b, 0xb0, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x62, 0xe2, 0x06, 0x52, 0x31, 0xf1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x98, 0x10, 0x0f, 0x24, 0x62, 0xc2, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc4, 0x84, 0xe4, 0xe0, 0x2d, 0x95, 0x4a, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x26, 0xe4, 0x03, 0x89, 0x98, 0xb0, 0x39, 0x78, 0x3f, 0x42, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x26, 0x8c, 0x06, 0x12, 0x31, 0x61, 0x78, 0xf0, 0x7a, 0x18, 0xa2, 0xe3, 0xd0, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x78, 0x3c, 0xa4, 0xd2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x89, 0x09, 0x9b, 0x81, 0x4c, 0x4c, 0xd8, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x98, 0x90, 0x1c, 0x3c, 0x80, 0x54, 0x69, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0xeb, 0x61, 0x88, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0x0d, 0x5e, 0xc8, 0xb9, 0x71, 0xf0, 0x72, 0x17, 0xa1, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd8, 0x09, 0xe9, 0x40, 0x62, 0x27, 0x3c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xec, 0x84, 0xcd, 0x40, 0x62, 0x27, 0xec, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x4e, 0x88, 0x0f, 0xde, 0xfd, 0xaa, 0x74, 0xf0, 0xd2, 0x36, 0xa4, 0x41, 0xb6, 0xc1, 0xf3, 0x56, 0x95, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x3b, 0x61, 0x3b, 0x90, 0xd8, 0x09, 0xfb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb1, 0x13, 0x86, 0x07, 0xaf, 0xb2, 0x55, 0x3a, 0x78, 0xde, 0x86, 0xd0, 0x20, 0xdb, 0xe0, 0x79, 0xab, 0x4a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x62, 0x27, 0x34, 0x0c, 0x24, 0x76, 0x42, 0xcb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd8, 0x09, 0x05, 0x07, 0x6f, 0xe6, 0x55, 0x3a, 0x78, 0x20, 0x91, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0xb8, 0x41, 0x3a, 0xa5, 0xcf, 0x1c, 0x3c, 0x38, 0x55, 0x69, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x7f, 0xe2, 0x06, 0x32, 0x40, 0xf1, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0xcf, 0xa5, 0xb9, 0x9d, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x7f, 0x42, 0x32, 0x90, 0xfd, 0x09, 0x5f, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x3f, 0x21, 0x1a, 0xc8, 0xfe, 0x84, 0x7c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x17, 0x17, 0x2b, 0x6d, 0xf0, 0xe2, 0x62, 0xa5, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0xc4, 0xb1, 0xd2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfd, 0x09, 0x8b, 0x81, 0xec, 0x4f, 0x58, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x9f, 0x30, 0x38, 0x78, 0x38, 0xb4, 0xd2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0xf3, 0x13, 0xed, 0xa1, 0x83, 0xc6, 0xb0, 0x0b, 0xb7, 0x78, 0xb0, 0x7e, 0xb8, 0xf6, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x4f, 0x48, 0x06, 0xd2, 0x3f, 0xe1, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfa, 0x27, 0x44, 0x03, 0xe9, 0x9f, 0x90, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0xfe, 0x6a, 0xa5, 0x0d, 0xde, 0x5f, 0xad, 0x74, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x2f, 0xb9, 0x56, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x3f, 0x61, 0x31, 0x90, 0xfe, 0x09, 0xab, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xfd, 0x13, 0x06, 0x07, 0xaf, 0x07, 0x57, 0x3a, 0x78, 0xff, 0xb4, 0xd2, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x6d, 0x75, 0x6c, 0xf4, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x9f, 0x90, 0x0c, 0xe4, 0x7f, 0xc2, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x4f, 0x88, 0x06, 0xf2, 0x3f, 0x21, 0x1f, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xfd, 0xe4, 0x4a, 0x1b, 0xbc, 0x9f, 0x5c, 0xe9, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0x64, 0xae, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x7f, 0xc2, 0x62, 0x20, 0xff, 0x13, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfe, 0x27, 0x0c, 0x0e, 0x9e, 0x01, 0xaf, 0x34, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0x20, 0x1d, 0xcd, 0xe0, 0xd0, 0x41, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x00, 0x85, 0x64, 0x20, 0x01, 0x14, 0x8e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x80, 0x42, 0x34, 0x90, 0x00, 0x0a, 0xf9, 0x41, 0xba, 0xa3, 0xcf, 0x20, 0xdb, 0xe0, 0x15, 0xf5, 0x4a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xa0, 0x30, 0x1b, 0x48, 0x00, 0x85, 0xdd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x00, 0x0a, 0x83, 0x83, 0x47, 0xf5, 0x2b, 0x1d, 0x0c, 0x2f, 0xde, 0x41, 0xb6, 0xc1, 0x2b, 0xea, 0x95, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x50, 0x58, 0x0e, 0x24, 0x80, 0xc2, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x00, 0x85, 0xe1, 0xc1, 0x5b, 0x07, 0x96, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x1d, 0xbc, 0x87, 0xbe, 0xe3, 0xd0, 0x02, 0xec, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xa8, 0xe2, 0x06, 0xd2, 0x54, 0x61, 0x30, 0x08, 0x16, 0x0f, 0x5e, 0xc4, 0x74, 0xb4, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xa8, 0xe2, 0x0e, 0x9e, 0xb0, 0xb0, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xa8, 0xe2, 0x0e, 0x9e, 0xb0, 0xb0, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x54, 0x21, 0x19, 0xc8, 0x52, 0x85, 0xa2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x49, 0x15, 0x92, 0x83, 0x47, 0x4f, 0x2c, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x55, 0x48, 0x07, 0x92, 0x54, 0x61, 0x30, 0x48, 0x06, 0xc2, 0x74, 0x30, 0xfc, 0x63, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x52, 0x85, 0xc9, 0x40, 0x92, 0x2a, 0x6c, 0x0e, 0x86, 0x3c, 0xfa, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x54, 0x61, 0x35, 0x90, 0xa4, 0x0a, 0xa5, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x49, 0x15, 0x66, 0x03, 0x49, 0xaa, 0x30, 0x3d, 0x68, 0x70, 0x02, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x49, 0x15, 0xb6, 0x03, 0x49, 0xaa, 0xd0, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa4, 0x0a, 0xe3, 0x81, 0x24, 0x55, 0x68, 0x18, 0x03, 0x3f, 0x2f, 0x6c, 0x2d, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x52, 0x85, 0x8a, 0x81, 0x24, 0x55, 0xa8, 0x1b, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xaa, 0xd0, 0x31, 0x90, 0xa4, 0x0a, 0x3d, 0x07, 0x8b, 0xd5, 0x29, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x52, 0x85, 0xa2, 0x81, 0x24, 0x55, 0x68, 0x3a, 0x44, 0x73, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x92, 0x2a, 0x54, 0x0d, 0x24, 0xa9, 0x42, 0xdb, 0xc1, 0x90, 0x93, 0x3e, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xa9, 0x42, 0xdf, 0x40, 0x92, 0x2a, 0x14, 0x1e, 0x1a, 0x09, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xaa, 0xd0, 0x38, 0x90, 0xa4, 0x0a, 0x95, 0x07, 0x41, 0xe9, 0x7d, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa5, 0x0a, 0xc9, 0xc1, 0xa3, 0x27, 0x96, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x2a, 0x44, 0x03, 0x59, 0xaa, 0x10, 0x1f, 0x34, 0x38, 0x01, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa5, 0x0a, 0xf9, 0x40, 0x96, 0x2a, 0xf4, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xa9, 0xc2, 0x60, 0x20, 0x4b, 0x15, 0x56, 0x63, 0xe0, 0xd3, 0x85, 0xad, 0xbd, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xaa, 0x30, 0x1b, 0xc8, 0x52, 0x85, 0x8a, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa5, 0x0a, 0xbb, 0x81, 0x2c, 0x55, 0xd8, 0x1e, 0x2c, 0x56, 0xa7, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4b, 0x15, 0xc6, 0x03, 0x59, 0xaa, 0xb0, 0x3e, 0x44, 0x73, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x2a, 0xcc, 0x07, 0xb2, 0x54, 0xa1, 0xe1, 0x60, 0xc8, 0x49, 0x1f, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x54, 0xa1, 0x63, 0x20, 0x4b, 0x15, 0x4a, 0x0e, 0x8d, 0x04, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x55, 0x68, 0x19, 0xc8, 0x52, 0x85, 0x9a, 0x83, 0xa0, 0xf4, 0x3e, 0x0e, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x55, 0xdc, 0xc1, 0x13, 0x16, 0x96, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x54, 0xb1, 0x03, 0x69, 0xaa, 0xf8, 0x43, 0xd6, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4d, 0x15, 0x82, 0x81, 0x34, 0x55, 0x48, 0x0e, 0x3d, 0x84, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x54, 0x21, 0x1a, 0x48, 0x53, 0x85, 0xf4, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xa9, 0x42, 0x3c, 0x90, 0xa6, 0x0a, 0xf9, 0xa1, 0x63, 0xd8, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x95, 0x13, 0xd2, 0x81, 0x54, 0x4e, 0x78, 0x71, 0xf0, 0x0a, 0xfb, 0xa3, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x76, 0x26, 0xa4, 0x03, 0xd9, 0x99, 0x70, 0x61, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xce, 0x84, 0x78, 0x20, 0x3b, 0x13, 0x16, 0x07, 0xaf, 0x6a, 0x12, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x33, 0x61, 0x32, 0x90, 0x9d, 0x09, 0xeb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x4c, 0xd8, 0x0c, 0x64, 0x67, 0xc2, 0xee, 0xe0, 0x19, 0x05, 0x43, 0x83, 0x6c, 0x83, 0x37, 0xfa, 0x2d, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x99, 0x30, 0x1c, 0xc8, 0xce, 0x84, 0xf1, 0x20, 0xd8, 0xe0, 0x75, 0xe9, 0x42, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x99, 0x30, 0x1f, 0xc8, 0xce, 0x84, 0x8a, 0x83, 0xf7, 0x75, 0x0c, 0x1d, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0xb7, 0x71, 0x6e, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x4c, 0xdc, 0x40, 0x4e, 0x26, 0x7e, 0xd8, 0x85, 0xdb, 0xe0, 0xe5, 0x4c, 0x4b, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x64, 0x42, 0x32, 0x90, 0x91, 0x09, 0xbb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x4c, 0x88, 0x06, 0x32, 0x32, 0x21, 0x1f, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xe5, 0x4c, 0x4b, 0x1b, 0xbc, 0x9c, 0x69, 0xe9, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x1e, 0x2f, 0xb9, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x64, 0xc2, 0x64, 0x20, 0x23, 0x13, 0x66, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x46, 0x26, 0x0c, 0x0e, 0x9e, 0xcb, 0xb9, 0x34, 0x08, 0x36, 0x78, 0xff, 0xbd, 0xd1, 0xa1, 0x83, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x92, 0x09, 0xc9, 0x40, 0x4a, 0x26, 0xa4, 0x83, 0x60, 0x83, 0xd7, 0x6e, 0x08, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x8b, 0x01, 0x1e, 0x6d, 0x65, 0x65, 0x74, 0x2d, 0x74, 0x68, 0x61, 0xf4, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xdf, 0xc4, 0x0d, 0x64, 0x72, 0xe2, 0x87, 0x5d, 0xb8, 0x0d, 0x1e, 0x79, 0x0f, 0x74, 0x48, 0x1d, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x6f, 0x42, 0x32, 0x90, 0xbe, 0x09, 0x2f, 0x86, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0x47, 0xde, 0x03, 0x6d, 0xf0, 0xc8, 0x7b, 0xa0, 0xc3, 0x29, 0x36, 0xec, 0xc2, 0x2d, 0x1e, 0xb4, 0x93, 0x1f, 0x73, 0x48, 0x1d, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x6f, 0x42, 0x32, 0x90, 0xbf, 0x09, 0x4f, 0x86, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0xd7, 0xc0, 0x2e, 0x6d, 0xf0, 0x1a, 0xd8, 0xa5, 0xc3, 0x29, 0x36, 0xec, 0xc2, 0x6d, 0xf0, 0x4a, 0xec, 0xa0, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x81, 0x13, 0x92, 0x81, 0x04, 0x4e, 0x78, 0x33, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0xbc, 0x12, 0x3b, 0x68, 0x83, 0x57, 0x62, 0x07, 0x1d, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0x83, 0xf1, 0x34, 0x77, 0x48, 0x1d, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x70, 0x42, 0x32, 0x90, 0xc1, 0x09, 0x7f, 0x86, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0xf1, 0x34, 0xb7, 0xc1, 0x78, 0x9a, 0x3b, 0x9c, 0x62, 0xc3, 0x2e, 0xdc, 0x06, 0xaf, 0x58, 0x0b, 0x3a, 0xa4, 0x0e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x38, 0x21, 0x19, 0x48, 0xe1, 0x84, 0x23, 0xc3, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0xc1, 0x2b, 0xd6, 0x82, 0x36, 0x78, 0xc5, 0x5a, 0xd0, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x16, 0x03, 0x3c, 0xde, 0xdc, 0xd8, 0xf2, 0x5a, 0xe8, 0xd0, 0xd2, 0xe6, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x87, 0x13, 0x92, 0x81, 0x1c, 0x4e, 0xb8, 0x33, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x3c, 0x06, 0x79, 0x69, 0x83, 0xc7, 0x20, 0x2f, 0x1d, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0x31, 0xc0, 0xe3, 0xcd, 0x8d, 0x2d, 0xaf, 0x85, 0x0e, 0x2d, 0x8c, 0x3e, 0xa4, 0x0e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x38, 0x21, 0x19, 0x48, 0xe2, 0x84, 0x3b, 0xc3, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0xc1, 0x43, 0x9e, 0x97, 0x36, 0x78, 0xc8, 0xf3, 0xd2, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x16, 0x03, 0x3c, 0xe8, 0xc2, 0xd6, 0xca, 0x5a, 0xe8, 0xd0, 0xd2, 0xe6, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8b, 0x13, 0x92, 0x81, 0x2c, 0x4e, 0xf8, 0x33, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x3c, 0xc2, 0x7a, 0x69, 0x83, 0x47, 0x58, 0x2f, 0x1d, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0x31, 0xc0, 0x83, 0x2e, 0x6c, 0xad, 0xac, 0x85, 0x0e, 0x2d, 0x8c, 0x3e, 0xa4, 0x0e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x38, 0x21, 0x19, 0x48, 0xe3, 0x84, 0x3f, 0xc3, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0xc1, 0x03, 0xba, 0x97, 0x36, 0x78, 0x40, 0xf7, 0xd2, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x16, 0x03, 0x3c, 0xda, 0xca, 0xca, 0xe8, 0x5a, 0xe8, 0xd0, 0xd2, 0xe6, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8f, 0x13, 0x92, 0x81, 0x3c, 0x4e, 0x78, 0x33, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x3c, 0x7e, 0x7c, 0x69, 0x83, 0xc7, 0x8f, 0x2f, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x91, 0x13, 0x92, 0x81, 0x44, 0x4e, 0x78, 0x33, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0xbc, 0xb1, 0x74, 0x69, 0x83, 0x37, 0x96, 0x2e, 0x1d, 0x4e, 0xb1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x0a, 0x82, 0xc5, 0x83, 0x57, 0x31, 0x1d, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x4c, 0x48, 0x07, 0x92, 0x32, 0xe1, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x26, 0x2c, 0x06, 0x92, 0x32, 0x61, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x65, 0x42, 0x7c, 0xf0, 0xe4, 0xfa, 0xa5, 0x83, 0x97, 0x2b, 0x17, 0x0d, 0xb2, 0x0d, 0x5e, 0x16, 0xbf, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x65, 0xc2, 0x70, 0x20, 0x29, 0x13, 0xb6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x26, 0xac, 0x0e, 0x9e, 0xc3, 0xbf, 0x34, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0xc1, 0xeb, 0x56, 0x37, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x6d, 0x42, 0x3a, 0x90, 0xb6, 0x09, 0x77, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x4d, 0x88, 0x07, 0xd2, 0x36, 0x61, 0x71, 0xf0, 0xa2, 0x10, 0xa2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x4d, 0x98, 0x0c, 0xa4, 0x6d, 0xc2, 0xec, 0xe0, 0xd5, 0xe1, 0x42, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0xf1, 0xe0, 0x35, 0xfb, 0x42, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x57, 0x13, 0x37, 0x90, 0xb5, 0x89, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xd5, 0x84, 0x74, 0x20, 0x57, 0x13, 0x16, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xae, 0x26, 0x24, 0x03, 0xb9, 0x9a, 0xf0, 0x61, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0x5b, 0x6c, 0x8a, 0x0e, 0x69, 0xb8, 0x41, 0xb6, 0xc1, 0xbb, 0x1f, 0x98, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x35, 0x21, 0x1d, 0x48, 0xd6, 0x84, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xac, 0x09, 0xc9, 0x40, 0xb2, 0x26, 0x7c, 0x19, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x35, 0x21, 0x1e, 0x48, 0xd6, 0x84, 0xc5, 0xc1, 0xab, 0x9a, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xd6, 0x84, 0xc9, 0x40, 0xb2, 0x26, 0xcc, 0x0e, 0xde, 0x62, 0x53, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x59, 0x13, 0x76, 0x03, 0xc9, 0x9a, 0xb0, 0x3d, 0x78, 0xbf, 0x77, 0xd1, 0x71, 0xe8, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0xf0, 0xee, 0x07, 0xa6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x4d, 0x48, 0x07, 0xb2, 0x35, 0x61, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x6b, 0x42, 0x32, 0x90, 0xad, 0x09, 0x1f, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x4d, 0x88, 0x07, 0xb2, 0x35, 0x61, 0x71, 0xf0, 0xaa, 0x26, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x35, 0x61, 0x32, 0x90, 0xad, 0x09, 0xb3, 0x83, 0x07, 0xba, 0x0f, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x6b, 0xc2, 0x6e, 0x20, 0x5b, 0x13, 0xb6, 0x07, 0x6f, 0xb1, 0x29, 0x3a, 0x0e, 0x1d, 0x3a, 0x11, 0x0d, 0xb2, 0x0d, 0xde, 0xfd, 0xc0, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xae, 0x09, 0xe9, 0x40, 0xba, 0x26, 0x8c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x4d, 0x48, 0x06, 0xd2, 0x35, 0xe1, 0xca, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xae, 0x09, 0xf1, 0x40, 0xba, 0x26, 0x2c, 0x0e, 0x5e, 0xd5, 0x24, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xba, 0x26, 0x4c, 0x06, 0xd2, 0x35, 0x61, 0x76, 0xf0, 0x7e, 0xef, 0xa2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x9a, 0xb0, 0x1b, 0x48, 0xd7, 0x84, 0xed, 0xc1, 0xc3, 0xb5, 0x8d, 0x8e, 0x43, 0x07, 0x4b, 0xf8, 0x7f, 0x06, 0xd9, 0x06, 0xef, 0x7e, 0x60, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xd7, 0x84, 0x74, 0x20, 0x5f, 0x13, 0x16, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xbe, 0x26, 0x24, 0x03, 0xf9, 0x9a, 0xf0, 0x65, 0x10, 0x6c, 0xf0, 0x2c, 0x6d, 0xa3, 0x83, 0xf7, 0x1c, 0x66, 0x0c, 0xb2, 0x0d, 0xde, 0xfd, 0xc0, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb0, 0x09, 0xe9, 0x40, 0xc2, 0x26, 0x8c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x4d, 0x48, 0x06, 0x12, 0x36, 0xe1, 0xc7, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb0, 0x09, 0xf1, 0x40, 0xc2, 0x26, 0x2c, 0x0e, 0x5e, 0xd5, 0x24, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x26, 0x4c, 0x06, 0x12, 0x36, 0x61, 0x76, 0xb0, 0x54, 0xdd, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x26, 0xec, 0x06, 0x12, 0x36, 0x61, 0x7b, 0xf0, 0xcc, 0x20, 0xa4, 0xe3, 0xd0, 0xc1, 0x43, 0x3c, 0x33, 0x06, 0xd9, 0x06, 0xef, 0x7e, 0x60, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xd8, 0x84, 0x74, 0x20, 0x63, 0x13, 0x16, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x26, 0x24, 0x03, 0x19, 0x9b, 0xf0, 0x63, 0x10, 0x6c, 0xf0, 0x76, 0x32, 0x9f, 0x83, 0x87, 0xd2, 0x66, 0x0c, 0xb2, 0x0d, 0xde, 0xfd, 0xc0, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb2, 0x09, 0xe9, 0x40, 0xca, 0x26, 0x8c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x4d, 0x48, 0x06, 0x52, 0x36, 0xe1, 0xce, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb2, 0x09, 0xf1, 0x40, 0xca, 0x26, 0x2c, 0x0e, 0x5e, 0xd5, 0x24, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xca, 0x26, 0x4c, 0x06, 0x52, 0x36, 0x61, 0x36, 0x48, 0x06, 0x4e, 0x9f, 0xc3, 0x0a, 0xed, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x4d, 0xd8, 0x0d, 0xa4, 0x6c, 0xc2, 0x76, 0x90, 0x0c, 0x18, 0x5f, 0x57, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xa0, 0x51, 0x71, 0xa6, 0xe3, 0xd0, 0x20, 0xdb, 0xe0, 0xdd, 0x0f, 0x4c, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x9b, 0x90, 0x0e, 0xe4, 0x6c, 0xc2, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xd9, 0x84, 0x64, 0x20, 0x67, 0x13, 0xbe, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0xcd, 0xfa, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x09, 0xd6, 0xbf, 0x8f, 0x43, 0x83, 0x6c, 0x83, 0x77, 0x3f, 0x30, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x9b, 0x90, 0x0e, 0x24, 0x6d, 0xc2, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xda, 0x84, 0x64, 0x20, 0x69, 0x13, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0x02, 0xad, 0xef, 0x78, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0x60, 0xff, 0xfb, 0x38, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0x78, 0xf0, 0x2a, 0x7e, 0xa1, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x35, 0x0a, 0xb3, 0x81, 0xac, 0x51, 0xa8, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x46, 0x21, 0x1d, 0xc8, 0x1a, 0x85, 0x17, 0xc3, 0x2e, 0xdc, 0x06, 0xef, 0xd0, 0x64, 0x3a, 0xa4, 0x0e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x46, 0x61, 0x38, 0x90, 0x35, 0x0a, 0xeb, 0x61, 0x17, 0x6e, 0x43, 0xea, 0xe0, 0xe0, 0x1d, 0x9a, 0x4c, 0x1b, 0xbc, 0x43, 0x93, 0xe9, 0x70, 0x8a, 0x0d, 0xbb, 0x70, 0x1b, 0x3c, 0x9a, 0xe7, 0xe1, 0x90, 0x3a, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1a, 0x85, 0xf9, 0x40, 0xd6, 0x28, 0x74, 0x0c, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0x8f, 0xe6, 0x79, 0xd8, 0xe0, 0xd1, 0x3c, 0x0f, 0x87, 0x53, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1a, 0x85, 0x92, 0x81, 0xac, 0x51, 0x68, 0x1a, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0xc6, 0xc0, 0x47, 0x2b, 0x63, 0x23, 0x37, 0x78, 0xea, 0x2b, 0xd3, 0xe1, 0x14, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0xaf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x07, 0x0a, 0xe9, 0x40, 0x1e, 0x28, 0xfc, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x40, 0x21, 0x1e, 0xc8, 0x03, 0x85, 0xc5, 0xc1, 0xab, 0x9a, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x03, 0x85, 0xc9, 0x40, 0x1e, 0x28, 0x6c, 0x87, 0x5f, 0x90, 0x0c, 0x9c, 0x7d, 0xc7, 0xf3, 0x83, 0x81, 0x04, 0x35, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0f, 0x14, 0xc6, 0x03, 0x79, 0xa0, 0xb0, 0x3e, 0x28, 0x36, 0x08, 0x0f, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x71, 0x83, 0xf7, 0x52, 0x85, 0xb4, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x59, 0x71, 0x03, 0x69, 0xad, 0xf8, 0x61, 0x37, 0x78, 0xa2, 0x84, 0xd2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x2b, 0x24, 0x03, 0xf9, 0xac, 0x30, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x67, 0x85, 0x68, 0x20, 0x9f, 0x15, 0xf2, 0x83, 0x97, 0x63, 0x28, 0x0d, 0xb2, 0x0d, 0x1e, 0x9a, 0xcc, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xb3, 0xc2, 0x62, 0x20, 0x9f, 0x15, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x2b, 0x0c, 0x0e, 0x9e, 0x1d, 0xcd, 0x74, 0xf0, 0x4c, 0x7c, 0xa1, 0x61, 0x37, 0x78, 0x69, 0x88, 0xd2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x2b, 0x24, 0x03, 0x09, 0xad, 0x30, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x68, 0x85, 0x68, 0x20, 0xa1, 0x15, 0xf2, 0x83, 0x07, 0xa0, 0x28, 0x0d, 0xb2, 0x0d, 0x1e, 0x68, 0xcd, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xb4, 0xc2, 0x62, 0x20, 0xa1, 0x15, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x2b, 0x0c, 0x0e, 0x9e, 0xeb, 0xcd, 0x74, 0xf0, 0xc0, 0x5b, 0xa4, 0x61, 0x37, 0x78, 0x38, 0x94, 0xd1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x46, 0x2b, 0x24, 0x03, 0x19, 0xad, 0x30, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x68, 0x85, 0x68, 0x20, 0xa3, 0x15, 0xf2, 0x83, 0xf7, 0x5c, 0x19, 0x0d, 0xb2, 0x0d, 0x1e, 0x36, 0xce, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xb4, 0xc2, 0x62, 0x20, 0xa3, 0x15, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x46, 0x2b, 0x0c, 0x0e, 0x9e, 0xb9, 0xce, 0x74, 0xf0, 0xc0, 0x5b, 0xa4, 0x61, 0x37, 0x78, 0x68, 0x8f, 0xd2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x2b, 0x24, 0x03, 0x29, 0xad, 0x30, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x69, 0x85, 0x68, 0x20, 0xa5, 0x15, 0xf2, 0x83, 0xf7, 0x0f, 0x29, 0x0d, 0xb2, 0x0d, 0x1e, 0x04, 0xcf, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xb4, 0xc2, 0x62, 0x20, 0xa5, 0x15, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x2b, 0x0c, 0x0e, 0x9e, 0x87, 0xcf, 0x74, 0xf0, 0x00, 0x26, 0xa5, 0x61, 0x37, 0x78, 0x4b, 0x93, 0xd2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x2b, 0x24, 0x03, 0x39, 0xad, 0x30, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x69, 0x85, 0x68, 0x20, 0xa7, 0x15, 0xf2, 0x83, 0xb7, 0x99, 0x19, 0x0d, 0xb2, 0x0d, 0x1e, 0xd2, 0xcf, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xb4, 0xc2, 0x62, 0x20, 0xa7, 0x15, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x2b, 0x0c, 0x0e, 0x9e, 0x55, 0xd0, 0x74, 0xf0, 0x00, 0x26, 0xa5, 0x61, 0x37, 0x78, 0xa1, 0x96, 0xd2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x2b, 0x24, 0x03, 0x49, 0xad, 0x30, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x6a, 0x85, 0x68, 0x20, 0xa9, 0x15, 0xf2, 0x83, 0x87, 0x83, 0x29, 0x0d, 0xb2, 0x0d, 0x1e, 0xa0, 0xd0, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xb5, 0xc2, 0x62, 0x20, 0xa9, 0x15, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x2b, 0x0c, 0x0e, 0x9e, 0x23, 0xd1, 0x74, 0xf0, 0x4c, 0x7c, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xab, 0x15, 0x92, 0x81, 0xac, 0x56, 0x98, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xb5, 0x42, 0x34, 0x90, 0xd5, 0x0a, 0xf9, 0xc1, 0x3b, 0x75, 0x8c, 0x06, 0xd9, 0x06, 0xef, 0xb0, 0x68, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x5a, 0x61, 0x31, 0x90, 0xd5, 0x0a, 0xab, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xab, 0x15, 0x06, 0x07, 0xaf, 0xf2, 0x68, 0x3a, 0x78, 0x26, 0xbe, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x15, 0x15, 0x56, 0x03, 0xa9, 0xa8, 0xd0, 0x36, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x54, 0x58, 0x0f, 0xa4, 0xa2, 0x42, 0xd9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x45, 0x85, 0xf9, 0x40, 0x2a, 0x2a, 0x54, 0x0c, 0x92, 0x81, 0xf6, 0x77, 0x07, 0xc3, 0xd0, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x15, 0x15, 0x3a, 0x06, 0x52, 0x51, 0xa1, 0x6b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xa2, 0x42, 0xc9, 0x40, 0x2a, 0x2a, 0xf4, 0x1c, 0x34, 0x9b, 0x74, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8a, 0x0a, 0x45, 0x03, 0xa9, 0xa8, 0x50, 0x75, 0x48, 0x1d, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x09, 0x13, 0xd2, 0x81, 0x24, 0x4c, 0xf8, 0x72, 0xf0, 0x34, 0xfd, 0x9e, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa2, 0x2c, 0x6e, 0x20, 0x6f, 0x16, 0xea, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xb2, 0xb8, 0x83, 0x67, 0xfb, 0x34, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xb2, 0xb8, 0x83, 0x67, 0xfb, 0x34, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x59, 0xfc, 0x40, 0xae, 0x2c, 0xfc, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xb2, 0x10, 0x0c, 0xe4, 0xca, 0x42, 0x78, 0xf0, 0x10, 0x16, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x65, 0x21, 0x1d, 0xc8, 0x95, 0x85, 0xc1, 0x41, 0xbb, 0x0a, 0xfc, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x65, 0x61, 0x31, 0x90, 0x2b, 0x0b, 0x77, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xae, 0x2c, 0x4c, 0x06, 0x72, 0x65, 0x61, 0x76, 0xd0, 0xba, 0xac, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xb2, 0xb0, 0x1b, 0xc8, 0x95, 0x85, 0xed, 0x20, 0x19, 0x10, 0xbc, 0x3b, 0x07, 0xe3, 0x5d, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xae, 0x2c, 0x8c, 0x07, 0x72, 0x65, 0xe1, 0xcd, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x65, 0xa1, 0x75, 0x20, 0x57, 0x16, 0xce, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x59, 0xa8, 0x1d, 0xc8, 0x95, 0x85, 0xea, 0x83, 0xd6, 0xfe, 0xf7, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x65, 0xa1, 0x7b, 0x20, 0x57, 0x16, 0xbe, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x57, 0x16, 0x7e, 0x0c, 0xe4, 0xca, 0xc2, 0x95, 0x83, 0x96, 0x28, 0xf8, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x65, 0xe1, 0xc3, 0x40, 0xae, 0x2c, 0xdc, 0x38, 0x68, 0xf0, 0x81, 0x7f, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x59, 0xa8, 0x1f, 0xc8, 0x95, 0x85, 0x0b, 0x07, 0x4d, 0x5c, 0xeb, 0x1f, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x1f, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x65, 0xa1, 0x64, 0x20, 0x57, 0x16, 0x4a, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2b, 0x0b, 0x85, 0x03, 0xb9, 0xb2, 0xd0, 0x79, 0xd0, 0x12, 0x05, 0xff, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xae, 0x2c, 0x94, 0x0d, 0xe4, 0xca, 0x42, 0xdf, 0x41, 0x83, 0x0f, 0xfc, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xca, 0x42, 0xcf, 0x40, 0xae, 0x2c, 0x74, 0x1d, 0x34, 0x71, 0xad, 0x7f, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0x3c, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xae, 0x2c, 0xec, 0x07, 0x72, 0x65, 0xa1, 0xe3, 0x60, 0xe1, 0x3b, 0xc9, 0xc1, 0x4a, 0x7c, 0x91, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xcb, 0xe2, 0x0e, 0x9e, 0xed, 0xd3, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x65, 0x61, 0x3b, 0x90, 0x2c, 0x0b, 0x07, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x2c, 0x8c, 0x07, 0x92, 0x65, 0xa1, 0x60, 0x90, 0x0c, 0xe4, 0xef, 0x0e, 0x86, 0xa3, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xb2, 0xd0, 0x30, 0x90, 0x2c, 0x0b, 0xad, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x59, 0x16, 0x2a, 0x06, 0x92, 0x65, 0xa1, 0x66, 0x90, 0x0c, 0x9c, 0x5a, 0x07, 0xc3, 0xd0, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x59, 0xe8, 0x19, 0x48, 0x96, 0x85, 0xb6, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x2c, 0xd4, 0x0d, 0x24, 0xcb, 0x42, 0xe9, 0x71, 0xe8, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x59, 0x16, 0x6a, 0x07, 0x92, 0x65, 0xa1, 0x7f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x59, 0x16, 0x8a, 0x07, 0x92, 0x65, 0xa1, 0xfe, 0x90, 0xaa, 0x39, 0xc4, 0xf0, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xcb, 0xe2, 0x0e, 0x9e, 0xed, 0xd3, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x65, 0x21, 0x19, 0xc8, 0x96, 0x85, 0x74, 0x90, 0x6c, 0x30, 0xc4, 0x3f, 0x0e, 0x4e, 0x42, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xb2, 0xb8, 0x83, 0x67, 0xfb, 0x34, 0x0d, 0x82, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x5d, 0x16, 0x92, 0x83, 0x67, 0xfb, 0x34, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xb2, 0xb8, 0x83, 0x67, 0xfb, 0x34, 0x0d, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2f, 0x0b, 0xc9, 0x40, 0xbe, 0x2c, 0x6c, 0x0e, 0xeb, 0x7b, 0x1b, 0x4e, 0xb1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x61, 0x16, 0x77, 0xf0, 0x6c, 0x9f, 0xa6, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x66, 0x21, 0x19, 0x48, 0x98, 0x85, 0xdd, 0xb0, 0x1b, 0x3a, 0x8e, 0x2c, 0xec, 0x06, 0x41, 0xaf, 0x7f, 0xb0, 0x3c, 0xbf, 0xeb, 0x70, 0xb4, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xcc, 0xe2, 0x07, 0x32, 0x66, 0x21, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x98, 0x85, 0x64, 0x20, 0x63, 0x16, 0xd2, 0x43, 0xea, 0xe0, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x65, 0x16, 0x77, 0xf0, 0x6c, 0x9f, 0xa6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x32, 0x0b, 0xc9, 0x40, 0xca, 0x2c, 0xa4, 0x83, 0x64, 0xc0, 0xd2, 0xf7, 0xbe, 0x83, 0x63, 0x56, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x2c, 0xee, 0xe0, 0xd9, 0x3e, 0x4d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x67, 0x16, 0x92, 0x81, 0x9c, 0x59, 0x48, 0x0f, 0xda, 0x64, 0x63, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x67, 0x16, 0xf2, 0x81, 0x9c, 0x59, 0x58, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x59, 0x98, 0x0d, 0xe4, 0xcc, 0xc2, 0xf8, 0x30, 0x2e, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xb3, 0xb8, 0x83, 0x67, 0xfb, 0x34, 0x0d, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x66, 0x71, 0x07, 0xcf, 0xf6, 0x69, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x66, 0x71, 0x07, 0xcf, 0xf6, 0x69, 0x1a, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6d, 0x16, 0x92, 0x81, 0xb4, 0x59, 0x18, 0x1c, 0x3a, 0x8e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xcd, 0xe2, 0x0e, 0x9e, 0xed, 0xd3, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x37, 0x8b, 0x1f, 0xc8, 0x9b, 0x85, 0xc5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xde, 0x2c, 0x04, 0x03, 0x79, 0xb3, 0x10, 0x1f, 0xe2, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xcd, 0x42, 0x3e, 0x90, 0x37, 0x0b, 0x83, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6f, 0x16, 0x26, 0x03, 0x79, 0xb3, 0xd0, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x37, 0x0b, 0x9b, 0x81, 0xbc, 0x59, 0x28, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xb3, 0x30, 0x1a, 0xc8, 0x9b, 0x85, 0xe1, 0xc1, 0x23, 0x4f, 0x6c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x66, 0x61, 0x39, 0x90, 0x37, 0x0b, 0xbd, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0x83, 0x60, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xcd, 0xc2, 0x76, 0x20, 0x6f, 0x16, 0x8a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xde, 0x2c, 0x8c, 0x07, 0xf2, 0x66, 0xa1, 0xe0, 0x60, 0xa1, 0x6a, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xde, 0x2c, 0x34, 0x0c, 0xe4, 0xcd, 0x42, 0xcf, 0x21, 0xfe, 0xc7, 0xa1, 0x0d, 0xd2, 0x9f, 0x9e, 0x07, 0xc1, 0x0a, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x9b, 0x85, 0xae, 0x81, 0xbc, 0x59, 0x68, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xb3, 0x50, 0x36, 0x90, 0x37, 0x0b, 0x85, 0x07, 0x0b, 0x55, 0x4b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x66, 0xa1, 0x71, 0x20, 0x6f, 0x16, 0x4a, 0x0f, 0xd1, 0x3c, 0x0e, 0x1d, 0x62, 0x78, 0xb0, 0x9a, 0x01, 0xe8, 0x60, 0x35, 0x03, 0xd0, 0xf1, 0xed, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xcd, 0x42, 0xf3, 0x40, 0xde, 0x2c, 0x94, 0x1f, 0xc6, 0xe5, 0x10, 0xc3, 0xc3, 0x29, 0x76, 0x3c, 0x3e, 0x0e, 0x1d, 0x87, 0x8e, 0x6f, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x9e, 0x90, 0x0e, 0x24, 0x79, 0xc2, 0x9b, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc9, 0x13, 0xe2, 0x81, 0x24, 0x4f, 0x98, 0x0c, 0x92, 0x81, 0xf6, 0x4b, 0x87, 0x15, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x4f, 0xd8, 0x0c, 0x24, 0x79, 0xc2, 0xe8, 0xa0, 0xd8, 0x20, 0x3c, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x27, 0x8a, 0x1b, 0x48, 0x14, 0x85, 0x64, 0xd8, 0x0d, 0x82, 0x61, 0x7f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4f, 0x14, 0x92, 0x81, 0x3c, 0x51, 0x98, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x89, 0x42, 0x34, 0x90, 0x27, 0x0a, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x51, 0xc8, 0x06, 0xf2, 0x44, 0x21, 0x1d, 0x76, 0xe1, 0x36, 0x18, 0x3f, 0x5d, 0x87, 0xa3, 0xfd, 0xd0, 0xe6, 0x71, 0x90, 0x6d, 0xf0, 0x68, 0x1b, 0xa7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4f, 0x14, 0xe2, 0x81, 0x3c, 0x51, 0xc8, 0x0f, 0x5e, 0x99, 0xee, 0x33, 0xc8, 0x36, 0x78, 0x0f, 0x8d, 0xd3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x27, 0x0a, 0x9b, 0x81, 0x3c, 0x51, 0x58, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xa2, 0xb0, 0x38, 0x78, 0xf8, 0x90, 0xd3, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x27, 0x0a, 0xa3, 0x81, 0x3c, 0x51, 0xd8, 0x1d, 0xbc, 0x28, 0x84, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4f, 0x14, 0x86, 0x03, 0x79, 0xa2, 0x30, 0x3e, 0x78, 0x35, 0x20, 0xd3, 0x71, 0xe8, 0xd0, 0x41, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x14, 0xc5, 0x1d, 0x3c, 0x5a, 0xc6, 0x69, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0xab, 0x01, 0x99, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xba, 0x2b, 0xa4, 0x03, 0xe9, 0xae, 0x50, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xee, 0x0a, 0x9b, 0x81, 0x74, 0x57, 0x98, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xae, 0x10, 0x1f, 0x3c, 0x4c, 0xcb, 0x69, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x77, 0x85, 0xd1, 0x40, 0xba, 0x2b, 0x0c, 0x0f, 0xde, 0x8f, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xee, 0x0a, 0xcb, 0x81, 0x74, 0x57, 0x58, 0x1f, 0xbc, 0x1e, 0x86, 0xe8, 0x38, 0x74, 0x48, 0xc3, 0x0d, 0xb2, 0x0d, 0x1e, 0x60, 0xe5, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xbb, 0x42, 0xc7, 0x40, 0xba, 0x2b, 0xf4, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xae, 0xb0, 0x3f, 0x78, 0x4f, 0x9a, 0xd3, 0xc1, 0x33, 0x4e, 0x95, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0x99, 0x99, 0x39, 0x78, 0xf8, 0x94, 0xc1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x71, 0xc5, 0x0d, 0xe4, 0xba, 0xe2, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x5c, 0x21, 0x1d, 0xc8, 0x71, 0x85, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe3, 0x0a, 0xc9, 0xc1, 0x23, 0xe7, 0x9c, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x57, 0x88, 0x07, 0x72, 0x5c, 0x61, 0x72, 0xf0, 0x46, 0x80, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x57, 0xd8, 0x0c, 0xe4, 0xb8, 0xc2, 0x6e, 0x90, 0x0c, 0x08, 0xbc, 0xbe, 0xe3, 0xf1, 0x71, 0xe8, 0x90, 0x86, 0x1b, 0x64, 0x1b, 0xbc, 0xea, 0xcd, 0x69, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc9, 0x15, 0xd2, 0x81, 0x24, 0x57, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xae, 0x90, 0x1c, 0x3c, 0x58, 0xd0, 0x69, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x72, 0x85, 0x78, 0x20, 0xc9, 0x15, 0x26, 0x07, 0x6f, 0x04, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x72, 0x85, 0xcd, 0x40, 0x92, 0x2b, 0xec, 0x0e, 0x9e, 0xe7, 0xe7, 0x74, 0x1c, 0x3a, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0xbc, 0xea, 0xcd, 0x69, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcb, 0x15, 0xd2, 0x81, 0x2c, 0x57, 0x68, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x5c, 0x21, 0x39, 0x78, 0x68, 0xa4, 0xd3, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe5, 0x0a, 0xf1, 0x40, 0x96, 0x2b, 0x4c, 0x0e, 0xde, 0x08, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xae, 0xb0, 0x19, 0xc8, 0x72, 0x85, 0x92, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x57, 0x58, 0x0e, 0x64, 0xb9, 0xc2, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x72, 0x85, 0xd1, 0xc1, 0x1b, 0x3f, 0x9d, 0x06, 0xc1, 0x06, 0xaf, 0x3a, 0x55, 0x3a, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0x4f, 0xd9, 0x74, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x5c, 0x61, 0x3f, 0x90, 0xe5, 0x0a, 0x1d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x2b, 0xcc, 0x0f, 0x5e, 0x69, 0xea, 0x74, 0xf0, 0x4c, 0x7c, 0xa1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0x89, 0x68, 0x90, 0x6d, 0xf0, 0xaa, 0x37, 0xa7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x57, 0x48, 0x07, 0xd2, 0x5c, 0xa1, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x73, 0x85, 0xe4, 0xe0, 0x49, 0xae, 0x4e, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9a, 0x2b, 0xc4, 0x03, 0x69, 0xae, 0x30, 0x39, 0x78, 0x23, 0x40, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe7, 0x52, 0x35, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x57, 0xd8, 0x0c, 0xa4, 0xb9, 0x42, 0xd5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9a, 0x2b, 0x2c, 0x07, 0xd2, 0x5c, 0x61, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xb9, 0xc2, 0xe8, 0xe0, 0x69, 0xbc, 0x4e, 0x07, 0x4f, 0x15, 0x75, 0x1a, 0x64, 0x1b, 0xbc, 0x00, 0xd7, 0x69, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcd, 0x15, 0xf6, 0x03, 0x69, 0xae, 0xd0, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xb9, 0xc2, 0xfc, 0xe0, 0xe5, 0xc2, 0x4e, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x06, 0x8b, 0xeb, 0x91, 0x0e, 0x82, 0x9c, 0xff, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0xf0, 0x02, 0x5c, 0xa7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcd, 0x15, 0x5a, 0x06, 0xd2, 0x5c, 0xa1, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x73, 0x85, 0x92, 0x83, 0xa7, 0x2c, 0x3b, 0x1d, 0x3c, 0x90, 0x48, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x58, 0xc2, 0xff, 0x33, 0xc8, 0x36, 0x78, 0xd5, 0x9b, 0xd3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9e, 0x2b, 0xa4, 0x03, 0x79, 0xae, 0xd0, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xb9, 0x42, 0x72, 0xf0, 0x82, 0x69, 0xa7, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcf, 0x15, 0xe2, 0x81, 0x3c, 0x57, 0x98, 0x1c, 0xbc, 0x11, 0xa0, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x5c, 0x61, 0x33, 0x90, 0xe7, 0x0a, 0x25, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xae, 0xb0, 0x1c, 0xc8, 0x73, 0x85, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe7, 0x0a, 0xa3, 0x83, 0xc7, 0x83, 0x3b, 0x1d, 0x3c, 0x55, 0xd4, 0x69, 0x90, 0x6d, 0xf0, 0x46, 0x6e, 0xa7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcf, 0x15, 0xf6, 0x03, 0x79, 0xae, 0xd0, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xb9, 0xc2, 0xfc, 0xe0, 0x65, 0xe7, 0x4e, 0x07, 0x0f, 0xbc, 0x45, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0xde, 0x73, 0x98, 0x31, 0xc8, 0x36, 0x78, 0xd5, 0x9b, 0xd3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa2, 0x2b, 0xa4, 0x03, 0x89, 0xae, 0xd0, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xba, 0x42, 0x72, 0xf0, 0xa2, 0x77, 0xa7, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd1, 0x15, 0xe2, 0x81, 0x44, 0x57, 0x98, 0x1c, 0xbc, 0x11, 0xa0, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xae, 0xb0, 0x19, 0x48, 0x74, 0x85, 0x92, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x57, 0x58, 0x0e, 0x24, 0xba, 0xc2, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x74, 0x85, 0xd1, 0xc1, 0x9b, 0xfa, 0x9d, 0x0e, 0x9e, 0x2a, 0xea, 0x34, 0xc8, 0x36, 0x78, 0x3a, 0xbe, 0xd3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe8, 0x0a, 0xfb, 0x81, 0x44, 0x57, 0xe8, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x5d, 0x61, 0x7e, 0xf0, 0xe0, 0x81, 0xa7, 0x83, 0x07, 0x30, 0x29, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0x07, 0x0f, 0xf1, 0xcc, 0x18, 0x64, 0x1b, 0xbc, 0xea, 0xcd, 0x69, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd3, 0x15, 0xd2, 0x81, 0x4c, 0x57, 0xe8, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x5d, 0x21, 0x39, 0x78, 0xe8, 0xc2, 0xd3, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe9, 0x0a, 0xf1, 0x40, 0xa6, 0x2b, 0x4c, 0x0e, 0xde, 0x08, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x57, 0xd8, 0x0c, 0x64, 0xba, 0x42, 0xd5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa6, 0x2b, 0x2c, 0x07, 0x32, 0x5d, 0x61, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xba, 0xc2, 0xe8, 0xe0, 0xa9, 0x19, 0x4f, 0x07, 0x4f, 0x15, 0x75, 0x1a, 0x64, 0x1b, 0xbc, 0xa8, 0xe2, 0x69, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd3, 0x15, 0xf6, 0x03, 0x99, 0xae, 0xd0, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xba, 0xc2, 0xfc, 0xe0, 0x25, 0x20, 0x4f, 0x83, 0x60, 0x83, 0xd7, 0xbe, 0x22, 0x1d, 0x9a, 0x02, 0x0d, 0xb2, 0x0d, 0x5e, 0x54, 0xf1, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xba, 0x42, 0xcb, 0x40, 0xa6, 0x2b, 0x34, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xae, 0x50, 0x72, 0xf0, 0x9e, 0x93, 0xa7, 0x83, 0x07, 0x12, 0x09, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0x07, 0x0f, 0xa5, 0xcd, 0x18, 0x64, 0x1b, 0xbc, 0xea, 0xcd, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x75, 0x85, 0x68, 0x20, 0xd5, 0x15, 0xe2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd5, 0x15, 0x92, 0x83, 0x67, 0xbc, 0x3c, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0x02, 0x5d, 0xee, 0x20, 0xc8, 0xf9, 0x0f, 0x5e, 0xe8, 0x9c, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x45, 0x71, 0x03, 0xe9, 0xa2, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x51, 0xc8, 0x06, 0x92, 0x45, 0x61, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x8b, 0x42, 0x32, 0x90, 0x2c, 0x0a, 0x27, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x51, 0x08, 0x07, 0x92, 0x45, 0x61, 0x70, 0xf0, 0x46, 0x80, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x51, 0x58, 0x0c, 0x24, 0x8b, 0xc2, 0xea, 0xe0, 0xfd, 0xde, 0x45, 0xc7, 0xa1, 0x43, 0x1a, 0x6e, 0x90, 0x6d, 0xf0, 0x36, 0x9b, 0xa7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x5b, 0x14, 0xb2, 0x81, 0x6c, 0x51, 0xa8, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x45, 0x21, 0x19, 0xc8, 0x16, 0x85, 0x1b, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb6, 0x28, 0x84, 0x03, 0xd9, 0xa2, 0x90, 0x1f, 0xbc, 0xaa, 0x49, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x51, 0x18, 0x0c, 0x64, 0x8b, 0xc2, 0xe8, 0x60, 0xa9, 0xba, 0xcf, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x51, 0x58, 0x0d, 0x64, 0x8b, 0x42, 0xcb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x16, 0x85, 0xd9, 0x40, 0xb6, 0x28, 0x4c, 0x0f, 0xde, 0x9b, 0x41, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb6, 0x28, 0x6c, 0x07, 0xb2, 0x45, 0x61, 0x7f, 0xf0, 0x0c, 0xef, 0x80, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xa2, 0x50, 0x30, 0x90, 0x2d, 0x0a, 0x25, 0x07, 0x29, 0x1f, 0x17, 0xc7, 0xa1, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x2c, 0x1e, 0x3c, 0xa4, 0x1a, 0x69, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x74, 0xe2, 0x06, 0xb2, 0x3a, 0xf1, 0xc3, 0x6e, 0xf0, 0xbc, 0x8f, 0xa4, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x4e, 0x48, 0x06, 0x52, 0x3a, 0xe1, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x27, 0x44, 0x03, 0x29, 0x9d, 0x10, 0x1f, 0xbc, 0xb5, 0x24, 0x69, 0x90, 0x6d, 0xf0, 0xa2, 0xb4, 0xa7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa5, 0x13, 0xf2, 0x81, 0x94, 0x4e, 0x18, 0x1c, 0x0c, 0xcd, 0xdf, 0x61, 0x37, 0x78, 0xf0, 0x4a, 0xd2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x27, 0x24, 0x03, 0x39, 0x9d, 0xf0, 0x61, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa7, 0x13, 0xa2, 0x81, 0x9c, 0x4e, 0x88, 0x0f, 0x1e, 0x20, 0x93, 0x34, 0xc8, 0x36, 0x78, 0xe0, 0xdc, 0xd3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd3, 0x09, 0x8b, 0x81, 0x9c, 0x4e, 0x58, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x9d, 0x90, 0x1f, 0x3c, 0x78, 0xef, 0xe9, 0xe0, 0x6d, 0x22, 0x46, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x27, 0x24, 0x03, 0x49, 0x9d, 0xf0, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa9, 0x13, 0xa2, 0x81, 0xa4, 0x4e, 0x88, 0x0f, 0x1e, 0x0f, 0x94, 0x34, 0xc8, 0x36, 0x78, 0xe8, 0xdf, 0xd3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x27, 0x2c, 0x06, 0x92, 0x3a, 0x61, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x75, 0x42, 0x7e, 0xf0, 0xf4, 0xc3, 0xa7, 0x83, 0xc7, 0x9b, 0x6d, 0x0c, 0xb2, 0x0d, 0x1e, 0xfa, 0xf7, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x75, 0xc2, 0x70, 0x20, 0xa9, 0x13, 0xc6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x27, 0xcc, 0x0e, 0x9e, 0xe5, 0xf8, 0x74, 0xf0, 0x0a, 0xa5, 0xa3, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x36, 0x2a, 0x6e, 0x20, 0x2b, 0x15, 0x86, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x54, 0xdc, 0xc1, 0x33, 0x29, 0x9f, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x54, 0xdc, 0xc1, 0x33, 0x29, 0x9f, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x2a, 0x7e, 0x20, 0x25, 0x15, 0x1a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x2a, 0x64, 0x03, 0x09, 0xa9, 0x90, 0x1f, 0x3c, 0x31, 0xc6, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x54, 0x58, 0x0c, 0x24, 0xa4, 0x42, 0xfd, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x48, 0x85, 0xc9, 0x40, 0x42, 0x2a, 0xcc, 0x06, 0xc9, 0xc0, 0xad, 0x75, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x48, 0x85, 0xdd, 0x40, 0x42, 0x2a, 0x6c, 0x0f, 0xa9, 0x83, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xa9, 0x30, 0x1e, 0x48, 0x48, 0x85, 0xf6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x90, 0x0a, 0xeb, 0x81, 0x84, 0x54, 0x68, 0x38, 0x68, 0xed, 0x7f, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x21, 0x15, 0x2a, 0x06, 0x12, 0x52, 0xa1, 0x7c, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xa4, 0x42, 0xc7, 0x40, 0x42, 0x2a, 0xf4, 0x1c, 0xb4, 0x69, 0xba, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x2a, 0x14, 0x0d, 0x24, 0xa4, 0x42, 0xe3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x2a, 0x34, 0x0d, 0x24, 0xa4, 0x42, 0xd9, 0x20, 0xd9, 0x60, 0x8d, 0x1e, 0xc9, 0xc1, 0x78, 0xd7, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x52, 0xa1, 0x6d, 0x20, 0x21, 0x15, 0x0a, 0x0f, 0xde, 0x05, 0xfc, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x21, 0x15, 0x2a, 0x07, 0x12, 0x52, 0xa1, 0x7b, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x54, 0xe8, 0x3d, 0x78, 0xca, 0xf1, 0xd3, 0x20, 0x19, 0x8c, 0x0e, 0x02, 0xde, 0xff, 0xa0, 0x7d, 0xe2, 0xf7, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x23, 0x15, 0x7f, 0xf0, 0x7c, 0xce, 0xa7, 0x41, 0xb0, 0xc1, 0x9a, 0x96, 0xa3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x25, 0x15, 0x7f, 0xf0, 0x7c, 0xce, 0xa7, 0x61, 0x17, 0x04, 0x0b, 0x92, 0xc1, 0x9d, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x2f, 0x08, 0x36, 0x68, 0x08, 0x13, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x71, 0x0d, 0x75, 0x64, 0x83, 0x57, 0x1d, 0xf0, 0x1c, 0x3c, 0x3f, 0x81, 0xe7, 0x70, 0x8a, 0x1d, 0x87, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x25, 0x15, 0xf2, 0x81, 0x94, 0x54, 0x28, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xa9, 0x30, 0x18, 0x48, 0x49, 0x85, 0xd1, 0xc1, 0x88, 0x6d, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x25, 0x15, 0x56, 0x03, 0x29, 0xa9, 0x30, 0x1d, 0x04, 0x1b, 0x34, 0x84, 0x09, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x41, 0x8b, 0x6d, 0x03, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x2a, 0x0c, 0x07, 0x52, 0x52, 0x61, 0x79, 0x88, 0xe1, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x2a, 0x6c, 0x07, 0x52, 0x52, 0x61, 0x7f, 0x48, 0x1d, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x85, 0xdf, 0xe0, 0x81, 0xda, 0x4f, 0xc7, 0xf3, 0xc3, 0x29, 0x76, 0x3c, 0x3e, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xa9, 0xb8, 0x83, 0x67, 0x52, 0x3e, 0x0d, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x93, 0x0a, 0xc9, 0x40, 0x4e, 0x2a, 0x0c, 0x87, 0xdd, 0x60, 0x74, 0xac, 0x1f, 0x3c, 0xa5, 0x0c, 0x62, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x29, 0x15, 0x3f, 0x90, 0x94, 0x0a, 0xf1, 0x41, 0x48, 0x81, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xa9, 0xb8, 0x83, 0x67, 0x52, 0x3e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xa5, 0x62, 0x07, 0xb2, 0x52, 0x21, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4a, 0xc5, 0x0f, 0x64, 0xa5, 0x42, 0x72, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x54, 0x88, 0x06, 0xb2, 0x52, 0x21, 0x3b, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4a, 0x85, 0x74, 0x20, 0x2b, 0x15, 0x76, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2b, 0x15, 0xe2, 0x81, 0xac, 0x54, 0x18, 0x0c, 0x92, 0x41, 0xd5, 0xc1, 0x70, 0x94, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4a, 0x85, 0xc5, 0x40, 0x56, 0x2a, 0xcc, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0xf7, 0xda, 0xf8, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x4a, 0xdc, 0x40, 0x02, 0x26, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xad, 0xc4, 0x1d, 0xbc, 0x2b, 0x02, 0x6a, 0xd8, 0x0d, 0x9e, 0xa3, 0x12, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5b, 0x09, 0xc9, 0x40, 0x6e, 0x25, 0x5c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xad, 0x84, 0x68, 0x20, 0xb7, 0x12, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x9e, 0xa6, 0x12, 0xb4, 0xc1, 0xd3, 0x54, 0x82, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x59, 0x15, 0x50, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6e, 0x25, 0x0c, 0x06, 0x72, 0x2b, 0x61, 0x71, 0x30, 0x34, 0x7f, 0x87, 0xdd, 0xe0, 0x5d, 0x36, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x95, 0x90, 0x0c, 0x24, 0x57, 0xc2, 0xa3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x4a, 0x88, 0x06, 0x92, 0x2b, 0x21, 0x1f, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x8d, 0x36, 0x41, 0x1b, 0xbc, 0xd1, 0x26, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0x12, 0x02, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5c, 0x09, 0xa3, 0x81, 0xe4, 0x4a, 0xd8, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x95, 0x30, 0x38, 0x78, 0xc0, 0x0a, 0xd4, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x56, 0x65, 0xd0, 0x1c, 0x7a, 0x08, 0x1d, 0x87, 0x06, 0xd9, 0x06, 0x4f, 0x09, 0x81, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x2b, 0x61, 0x3c, 0x90, 0x5c, 0x09, 0x05, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x72, 0x25, 0x0c, 0x0f, 0x5e, 0x39, 0x03, 0x35, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0xa0, 0x29, 0xf4, 0xa5, 0x43, 0x0b, 0xb0, 0x61, 0x37, 0x78, 0x20, 0x4a, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x76, 0x25, 0x24, 0x03, 0xd9, 0x95, 0x70, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xbb, 0x12, 0xa2, 0x81, 0xec, 0x4a, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x2c, 0x4a, 0xd0, 0x06, 0x8f, 0x45, 0x09, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x87, 0xe5, 0x40, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x95, 0x30, 0x18, 0xc8, 0xae, 0x84, 0xc5, 0xc1, 0xd0, 0xfc, 0x1d, 0x76, 0x83, 0x87, 0x2a, 0x05, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x57, 0x42, 0x32, 0x90, 0x5e, 0x09, 0x47, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x2b, 0x21, 0x1a, 0x48, 0xaf, 0x84, 0x7c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x47, 0x2b, 0x05, 0x6d, 0xf0, 0x68, 0xa5, 0xa0, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x4c, 0x11, 0xd4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5e, 0x09, 0xa3, 0x81, 0xf4, 0x4a, 0xd8, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x95, 0x30, 0x38, 0x78, 0xc0, 0x13, 0xd4, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x56, 0x65, 0xd0, 0x1c, 0xf2, 0xb5, 0xc7, 0xa1, 0x61, 0x37, 0x78, 0x05, 0x4e, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7e, 0x25, 0x24, 0x03, 0xf9, 0x95, 0xf0, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xbf, 0x12, 0xa2, 0x81, 0xfc, 0x4a, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x11, 0x4e, 0xd0, 0x06, 0x2f, 0xc2, 0x09, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x07, 0x57, 0x41, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x95, 0x30, 0x1a, 0xc8, 0xaf, 0x84, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5f, 0x09, 0x83, 0x83, 0x47, 0x7e, 0x41, 0x1d, 0xbc, 0xeb, 0x70, 0x69, 0xd8, 0x0d, 0x9e, 0xec, 0x13, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x60, 0x09, 0xc9, 0x40, 0x82, 0x25, 0x5c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb0, 0x84, 0x68, 0x20, 0xc1, 0x12, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x9e, 0xef, 0x13, 0xb4, 0xc1, 0xf3, 0x7d, 0x82, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x39, 0x64, 0x50, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0x96, 0x30, 0x1a, 0x48, 0xb0, 0x84, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x60, 0x09, 0x83, 0x83, 0x47, 0xb8, 0x41, 0x1d, 0x3c, 0xf6, 0xa8, 0x68, 0x90, 0x6d, 0xf0, 0x1c, 0x32, 0xa8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc1, 0x12, 0xd6, 0x03, 0x09, 0x96, 0xd0, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x58, 0xc2, 0xf2, 0xe0, 0x85, 0x74, 0x50, 0x83, 0x60, 0x83, 0x67, 0x26, 0x23, 0x1d, 0x5a, 0x80, 0x0d, 0xbb, 0xc1, 0xc3, 0xee, 0x81, 0x16, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0x96, 0x30, 0x19, 0xc8, 0xb0, 0x84, 0xed, 0xc1, 0xd3, 0x81, 0x7c, 0x86, 0x5d, 0xb8, 0x0d, 0x1e, 0x79, 0x0f, 0x74, 0x10, 0x52, 0xe0, 0x07, 0x63, 0x61, 0x74, 0xd8, 0x0d, 0x9e, 0x91, 0x14, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x62, 0x09, 0xc9, 0x40, 0x8a, 0x25, 0x5c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb1, 0x84, 0x68, 0x20, 0xc5, 0x12, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x9e, 0x94, 0x14, 0xb4, 0xc1, 0x93, 0x92, 0x82, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0xb9, 0x7f, 0x50, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x96, 0x30, 0x1a, 0x48, 0xb1, 0x84, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x62, 0x09, 0x83, 0x83, 0x47, 0x26, 0x42, 0x1d, 0x3c, 0xf6, 0xa8, 0x68, 0x90, 0x6d, 0xf0, 0xdc, 0x3f, 0xa8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x4b, 0x58, 0x0f, 0xa4, 0x58, 0xc2, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb1, 0x84, 0xe5, 0xc1, 0x1b, 0x20, 0xa1, 0x0e, 0xde, 0xe3, 0x95, 0x31, 0xc8, 0x36, 0x78, 0xee, 0x1f, 0xd4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x62, 0x09, 0x1d, 0x03, 0x29, 0x96, 0xd0, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x58, 0xc2, 0xfe, 0xe0, 0x85, 0x96, 0x50, 0x83, 0x60, 0x83, 0x47, 0x57, 0x0f, 0x1d, 0xba, 0x1f, 0x0d, 0xbb, 0xc1, 0x53, 0x5b, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x2c, 0x21, 0x19, 0xc8, 0xb3, 0x84, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc7, 0x12, 0xd2, 0x81, 0x1c, 0x4b, 0x38, 0x32, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xb3, 0x5b, 0x82, 0x36, 0x78, 0x76, 0x4b, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0x79, 0x13, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc9, 0x12, 0x16, 0x03, 0x49, 0x96, 0xb0, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x2c, 0x21, 0x1d, 0x48, 0xb2, 0x84, 0x0f, 0x07, 0x8f, 0x3d, 0x2a, 0x1a, 0x64, 0x1b, 0xbc, 0x79, 0x13, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcb, 0x12, 0x16, 0x03, 0x59, 0x96, 0xb0, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x2c, 0x21, 0x3d, 0x78, 0x09, 0x2b, 0xd4, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x0e, 0xf5, 0xb6, 0x87, 0xc6, 0x45, 0xc7, 0xa1, 0x41, 0xb6, 0xc1, 0x9b, 0x37, 0xa1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x2c, 0x61, 0x39, 0x90, 0x65, 0x09, 0xeb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcb, 0x12, 0x56, 0x07, 0xaf, 0xa5, 0x85, 0x1a, 0x04, 0x1b, 0xbc, 0x2e, 0x5d, 0xe8, 0x60, 0x09, 0xff, 0xcf, 0x20, 0xdb, 0xe0, 0xcd, 0x9b, 0x50, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x96, 0xd0, 0x31, 0x90, 0x65, 0x09, 0x3d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x25, 0xec, 0x07, 0xb2, 0x2c, 0xe1, 0xc3, 0x20, 0xd8, 0xe0, 0xb5, 0x1b, 0x42, 0x07, 0xef, 0x39, 0xcc, 0x18, 0x64, 0x1b, 0xbc, 0x79, 0x13, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb3, 0x84, 0xc5, 0x40, 0x9a, 0x25, 0xac, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x4b, 0x48, 0x07, 0xd2, 0x2c, 0xe1, 0xc3, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0xd5, 0xbd, 0x30, 0x07, 0x8d, 0x4e, 0x28, 0x0d, 0xbb, 0xc1, 0x1b, 0x66, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x2d, 0x21, 0x19, 0x48, 0xb6, 0x84, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd1, 0x12, 0xd2, 0x81, 0x44, 0x4b, 0xf8, 0x31, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x7b, 0x66, 0x82, 0x36, 0x78, 0xcf, 0x4c, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0x25, 0x19, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd3, 0x12, 0x16, 0x03, 0x99, 0x96, 0xb0, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x2d, 0x21, 0x1d, 0xc8, 0xb4, 0x84, 0x23, 0x07, 0x8f, 0x3d, 0x2a, 0x1a, 0x64, 0x1b, 0xbc, 0x25, 0x19, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd5, 0x12, 0x16, 0x03, 0xa9, 0x96, 0xb0, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x2d, 0x21, 0x1d, 0x48, 0xb5, 0x84, 0x1b, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x80, 0xe1, 0x5f, 0x75, 0x3c, 0x3e, 0x74, 0x22, 0x1a, 0x64, 0x1b, 0xbc, 0x25, 0x19, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xb5, 0x84, 0xc5, 0x40, 0xae, 0x25, 0x74, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0x96, 0x90, 0x0e, 0xe4, 0x5a, 0xc2, 0x87, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd7, 0x12, 0x26, 0x03, 0xb9, 0x96, 0x30, 0x3b, 0x78, 0x23, 0x40, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x71, 0x83, 0x07, 0xa5, 0x6f, 0x1c, 0xbc, 0xb4, 0x74, 0x69, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x5a, 0xc2, 0x6e, 0x20, 0xd7, 0x12, 0x2a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x2d, 0x61, 0x38, 0x90, 0x6b, 0x09, 0xe3, 0x41, 0xb0, 0xc1, 0xc3, 0xb9, 0xa1, 0x0e, 0x69, 0xb8, 0x41, 0xb6, 0xc1, 0xe3, 0xd7, 0xa1, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x4b, 0x58, 0x0f, 0xe4, 0x5a, 0x42, 0xc3, 0x20, 0xd8, 0xe0, 0x99, 0xc6, 0x50, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0xfb, 0xd1, 0xb0, 0x1b, 0x3c, 0x34, 0x27, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdb, 0x12, 0x92, 0x81, 0x6c, 0x4b, 0xb8, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6d, 0x09, 0xd1, 0x40, 0xb6, 0x25, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0x3a, 0x27, 0x68, 0x83, 0x47, 0xe7, 0x04, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x7b, 0xf1, 0xa1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x2d, 0x61, 0x34, 0x90, 0x6d, 0x09, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdb, 0x12, 0x06, 0x07, 0xaf, 0x14, 0x88, 0x1a, 0x04, 0x1b, 0xbc, 0xea, 0x54, 0xe9, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0xf0, 0x5e, 0x7c, 0xa8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdb, 0x12, 0xd6, 0x03, 0xd9, 0x96, 0xd0, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x5b, 0xc2, 0xf2, 0xe0, 0xa5, 0x09, 0x51, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0x9e, 0x18, 0xbb, 0x70, 0x68, 0x01, 0x36, 0xec, 0x06, 0x0f, 0x0d, 0x09, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb7, 0x84, 0x64, 0x20, 0xdd, 0x12, 0xde, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x5b, 0x42, 0x34, 0x90, 0x6e, 0x09, 0xf9, 0xc1, 0xa3, 0x6e, 0x87, 0x06, 0xd9, 0x06, 0xaf, 0x7b, 0x88, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x2d, 0x61, 0x34, 0x90, 0x6e, 0x09, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdd, 0x12, 0x06, 0x07, 0xaf, 0xbd, 0x88, 0x3a, 0x78, 0xc6, 0xa9, 0xd2, 0xb0, 0x1b, 0x3c, 0x7e, 0x28, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdf, 0x12, 0x92, 0x81, 0x7c, 0x4b, 0xf8, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6f, 0x09, 0xd1, 0x40, 0xbe, 0x25, 0xe4, 0x07, 0x4f, 0xe9, 0x21, 0x1a, 0x64, 0x1b, 0xbc, 0x8b, 0x23, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xb7, 0x84, 0xd1, 0x40, 0xbe, 0x25, 0x34, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x96, 0x30, 0x38, 0x78, 0x27, 0x49, 0xd4, 0xb0, 0x1b, 0x8c, 0x5e, 0xac, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x4b, 0x18, 0x0f, 0xe4, 0x5b, 0x42, 0xc1, 0x20, 0xd8, 0xe0, 0x01, 0x0d, 0x51, 0x87, 0x0e, 0x1a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xbe, 0x25, 0xec, 0x06, 0xf2, 0x2d, 0x61, 0x7b, 0xf0, 0x8c, 0x53, 0xa5, 0x61, 0x37, 0x78, 0x20, 0x50, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x25, 0x24, 0x03, 0x09, 0x97, 0xf0, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe1, 0x12, 0xa2, 0x81, 0x84, 0x4b, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x2c, 0x50, 0xd0, 0x06, 0x8f, 0x05, 0x0a, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x07, 0xc1, 0x44, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x5c, 0xc2, 0x68, 0x20, 0xe1, 0x12, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x25, 0x0c, 0x0e, 0x9e, 0xa1, 0x13, 0x75, 0xf0, 0xd8, 0xa3, 0xa2, 0x41, 0xb6, 0xc1, 0x83, 0x60, 0xa2, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x2e, 0x61, 0x3d, 0x90, 0x70, 0x09, 0x0d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x25, 0x2c, 0x0f, 0x5e, 0x09, 0x14, 0x35, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0xe0, 0xb9, 0x84, 0x4c, 0x87, 0x4e, 0x44, 0x83, 0x6c, 0x83, 0x07, 0xc1, 0x44, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0x97, 0x50, 0x33, 0x90, 0x70, 0x09, 0x55, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x25, 0x54, 0x1c, 0xbc, 0x06, 0x29, 0x6a, 0x10, 0x6c, 0xf0, 0x5c, 0x87, 0xa4, 0x43, 0xf7, 0xa3, 0x61, 0x37, 0x78, 0xd6, 0x48, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x25, 0x24, 0x03, 0x19, 0x97, 0xf0, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe3, 0x12, 0xa2, 0x81, 0x8c, 0x4b, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0xe2, 0x48, 0xd0, 0x06, 0x4f, 0x1c, 0x09, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x07, 0x36, 0x45, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x5c, 0xc2, 0x68, 0x20, 0xe3, 0x12, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x25, 0x0c, 0x0e, 0x9e, 0x75, 0x15, 0x75, 0xf0, 0xd8, 0xa3, 0xa2, 0x41, 0xb6, 0xc1, 0x03, 0x9b, 0xa2, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x2e, 0x61, 0x3d, 0x90, 0x71, 0x09, 0x0d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x25, 0x2c, 0x0f, 0x5e, 0xdd, 0x15, 0x35, 0x08, 0x36, 0x78, 0x0e, 0x8b, 0xd0, 0xa1, 0x13, 0xd1, 0x20, 0xdb, 0xe0, 0x81, 0x4d, 0x51, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x25, 0xd4, 0x0c, 0x64, 0x5c, 0x42, 0xd5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x71, 0x09, 0x15, 0x07, 0x6f, 0x27, 0x8b, 0x1a, 0x04, 0x1b, 0x34, 0xd6, 0x72, 0x7f, 0xe8, 0x7e, 0x34, 0xec, 0x06, 0xcf, 0xda, 0x09, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb9, 0x84, 0x64, 0x20, 0xe5, 0x12, 0xae, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x5c, 0x42, 0x34, 0x90, 0x72, 0x09, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x4f, 0xdc, 0x09, 0xda, 0xe0, 0x89, 0x3b, 0x41, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x1a, 0xb5, 0xa8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe5, 0x12, 0x06, 0x03, 0x29, 0x97, 0xb0, 0x38, 0x18, 0x9a, 0xbf, 0xc3, 0x6e, 0xf0, 0x52, 0x9a, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x4b, 0x48, 0x06, 0x72, 0x2e, 0xe1, 0xcd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x25, 0x44, 0x03, 0x39, 0x97, 0x90, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0x6a, 0x9a, 0xa0, 0x0d, 0x5e, 0x4d, 0x13, 0x74, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x2f, 0xb0, 0x8b, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x2e, 0x61, 0x34, 0x90, 0x73, 0x09, 0x1d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x25, 0x0c, 0x0e, 0x5e, 0xfd, 0x17, 0x35, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x5c, 0xc2, 0x6a, 0x20, 0xe7, 0x12, 0x86, 0x07, 0xaf, 0x6a, 0x12, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe7, 0x12, 0x96, 0x03, 0x39, 0x97, 0xb0, 0x3e, 0x48, 0xf9, 0xb8, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x73, 0x09, 0xf3, 0x81, 0x9c, 0x4b, 0xa8, 0x38, 0x78, 0x86, 0x77, 0xc0, 0x71, 0xe8, 0xd0, 0x41, 0x63, 0xd8, 0x0d, 0x9e, 0x5a, 0x14, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x74, 0x09, 0xc9, 0x40, 0xd2, 0x25, 0xfc, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xba, 0x84, 0x68, 0x20, 0xe9, 0x12, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x9e, 0x5d, 0x14, 0xb4, 0xc1, 0xb3, 0x8b, 0x82, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x79, 0x90, 0x51, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x97, 0x30, 0x1a, 0x48, 0xba, 0x84, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x74, 0x09, 0x83, 0x83, 0x47, 0x69, 0x46, 0x1d, 0x3c, 0xf6, 0xa8, 0x68, 0x90, 0x6d, 0xf0, 0x3c, 0xc8, 0xa8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe9, 0x12, 0xd6, 0x03, 0x49, 0x97, 0xd0, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x5d, 0xc2, 0xf2, 0xe0, 0xc5, 0xa0, 0x51, 0x83, 0x60, 0x83, 0xa7, 0x59, 0x32, 0x1d, 0x5a, 0x80, 0x0d, 0xbb, 0xc1, 0xab, 0x31, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x2e, 0x21, 0x19, 0xc8, 0xba, 0x84, 0x0b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x97, 0x10, 0x0d, 0x64, 0x5d, 0x42, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x0b, 0x32, 0x82, 0x36, 0x78, 0x41, 0x46, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0xc1, 0x34, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xba, 0x84, 0xd1, 0x40, 0xd6, 0x25, 0xac, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x4b, 0x18, 0x1c, 0xbc, 0xfb, 0x35, 0xea, 0x30, 0x2e, 0xc3, 0x6e, 0xf0, 0x88, 0x92, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x4b, 0x48, 0x06, 0xd2, 0x2e, 0xe1, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xda, 0x25, 0x44, 0x03, 0x69, 0x97, 0x90, 0x1f, 0xbc, 0x46, 0x8c, 0x68, 0x90, 0x6d, 0xf0, 0x22, 0xda, 0xa8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xed, 0x12, 0x26, 0x03, 0x69, 0x97, 0x30, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x2e, 0x61, 0x70, 0xf0, 0x42, 0xde, 0xa8, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xed, 0x12, 0x36, 0x03, 0x69, 0x97, 0xb0, 0x3b, 0x78, 0x3f, 0x42, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xda, 0x25, 0x0c, 0x07, 0xd2, 0x2e, 0x61, 0x79, 0xe8, 0x4f, 0x75, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x3a, 0x68, 0x0c, 0xbb, 0xc1, 0x23, 0x7a, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x2e, 0x21, 0x19, 0xc8, 0xbb, 0x84, 0x3f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x97, 0x10, 0x0d, 0xe4, 0x5d, 0x42, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x83, 0x7a, 0x82, 0x36, 0x78, 0x50, 0x4f, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0x5d, 0x39, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xbb, 0x84, 0xc5, 0x40, 0xde, 0x25, 0xac, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x4b, 0x18, 0x1c, 0xbc, 0x97, 0x3a, 0x6a, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x78, 0xeb, 0xea, 0x78, 0x7c, 0xe8, 0xa0, 0x31, 0xec, 0x06, 0xef, 0xdd, 0xc1, 0x58, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x5e, 0xc2, 0x64, 0x20, 0xf1, 0x12, 0xb6, 0x07, 0x4f, 0x07, 0xf2, 0x39, 0x78, 0x38, 0x92, 0xcf, 0xb0, 0x1b, 0x3c, 0x5c, 0xc9, 0x67, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x79, 0x09, 0x93, 0x81, 0xcc, 0x4b, 0xd8, 0x1e, 0x3c, 0x1d, 0xc8, 0xe7, 0xe0, 0x5d, 0x4f, 0x3e, 0xc3, 0x6e, 0xf0, 0x64, 0x93, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x4b, 0x48, 0x06, 0x52, 0x2f, 0xe1, 0xce, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x25, 0x44, 0x03, 0xa9, 0x97, 0x90, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0x7c, 0x93, 0xa0, 0x0d, 0x9e, 0x6f, 0x12, 0x74, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x2f, 0x21, 0x8f, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbd, 0x84, 0xd1, 0x40, 0xea, 0x25, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x4b, 0x18, 0x1c, 0xbc, 0xbf, 0x3d, 0xea, 0xe0, 0xf1, 0xcb, 0x46, 0x83, 0x6c, 0x83, 0x97, 0x90, 0x47, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0x97, 0xb0, 0x1e, 0x48, 0xbd, 0x84, 0x86, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf5, 0x12, 0x96, 0x07, 0x8f, 0xa3, 0x8f, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0xf0, 0x6c, 0xc5, 0x85, 0x43, 0x0b, 0xb0, 0x61, 0x37, 0x78, 0x8e, 0x50, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x25, 0x24, 0x03, 0xb9, 0x97, 0x70, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf7, 0x12, 0xa2, 0x81, 0xdc, 0x4b, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x9a, 0x50, 0xd0, 0x06, 0x4f, 0x13, 0x0a, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x07, 0xe9, 0x47, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x5e, 0xc2, 0x68, 0x20, 0xf7, 0x12, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x25, 0x0c, 0x0e, 0x9e, 0x41, 0x20, 0x75, 0xf0, 0xf8, 0x65, 0xa3, 0x41, 0xb6, 0xc1, 0x83, 0xf4, 0xa3, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x2f, 0x61, 0x3d, 0x90, 0x7b, 0x09, 0x0d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x25, 0x2c, 0x0f, 0x5e, 0xa9, 0x20, 0x35, 0x08, 0x36, 0x78, 0x53, 0xb8, 0xd0, 0xa1, 0x13, 0xd1, 0x20, 0xdb, 0xe0, 0x41, 0xfa, 0x51, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x25, 0xd4, 0x0c, 0xe4, 0x5e, 0x42, 0xdd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7b, 0x09, 0x15, 0x07, 0x6f, 0x8d, 0x90, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0xd2, 0x7d, 0xc7, 0xe3, 0x43, 0xf7, 0xa3, 0x61, 0x37, 0x78, 0x1b, 0x4c, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf2, 0x25, 0x24, 0x03, 0xc9, 0x97, 0x70, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf9, 0x12, 0xa2, 0x81, 0xe4, 0x4b, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x27, 0x4c, 0xd0, 0x06, 0xef, 0x84, 0x09, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x07, 0x5f, 0x48, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x97, 0x30, 0x18, 0x48, 0xbe, 0x84, 0xc5, 0xc1, 0xd0, 0xfc, 0x1d, 0x76, 0x83, 0xc7, 0xaf, 0x04, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x5f, 0x42, 0x32, 0x90, 0x7d, 0x09, 0x3f, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x2f, 0x21, 0x1a, 0xc8, 0xbe, 0x84, 0x7c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x87, 0xb0, 0x04, 0x6d, 0xf0, 0x10, 0x96, 0xa0, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0xe4, 0x88, 0xd4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7d, 0x09, 0xa3, 0x81, 0xec, 0x4b, 0x28, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x2f, 0x61, 0x70, 0xf0, 0xb0, 0x16, 0xa9, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xfb, 0x12, 0x56, 0x03, 0xd9, 0x97, 0xb0, 0x3c, 0x78, 0x23, 0x40, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x71, 0x0e, 0x5e, 0xc5, 0x2f, 0xb4, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x2f, 0x61, 0x3a, 0x90, 0x7d, 0x09, 0x3d, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x97, 0x30, 0x1e, 0xc8, 0xbe, 0x84, 0x82, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xfb, 0x12, 0xb6, 0x07, 0x8f, 0xdd, 0x91, 0x3a, 0x78, 0xc9, 0x7f, 0xd1, 0x20, 0xdb, 0xe0, 0x4d, 0x37, 0x52, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf6, 0x25, 0x54, 0x0c, 0x64, 0x5f, 0x42, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7d, 0x09, 0x0d, 0x07, 0x6f, 0x11, 0x92, 0x1a, 0x04, 0x1b, 0x3c, 0xb1, 0x91, 0xe9, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x74, 0xd0, 0x18, 0x76, 0x83, 0x87, 0x1d, 0x05, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x5f, 0x42, 0x32, 0x90, 0x7e, 0x09, 0x0f, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x2f, 0x21, 0x1a, 0x48, 0xbf, 0x84, 0x7c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x47, 0x1e, 0x05, 0x6d, 0xf0, 0xc8, 0xa3, 0xa0, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x2c, 0x92, 0xd4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfa, 0x25, 0x8c, 0x06, 0xd2, 0x2f, 0x61, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x5f, 0xc2, 0xe0, 0xe0, 0x89, 0x52, 0x52, 0x07, 0x8f, 0x3d, 0x2a, 0x1a, 0x64, 0x1b, 0x3c, 0x16, 0x49, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbf, 0x84, 0xf5, 0x40, 0xfa, 0x25, 0x34, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x97, 0xb0, 0x3c, 0x78, 0x3f, 0x96, 0xd4, 0x20, 0xd8, 0xe0, 0x89, 0x8d, 0x4c, 0x87, 0x16, 0x60, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xff, 0x12, 0x26, 0x03, 0xf9, 0x97, 0xb0, 0x3d, 0x78, 0x3a, 0x90, 0xcf, 0xb0, 0x0b, 0xb7, 0xc1, 0xdb, 0xd3, 0x81, 0x0e, 0x42, 0x0a, 0xfc, 0x60, 0x2c, 0x8c, 0x1e, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x58, 0xdc, 0x40, 0x76, 0x2c, 0x2c, 0x06, 0xc1, 0xe2, 0x06, 0x0f, 0x4a, 0xdf, 0x38, 0x9c, 0x62, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x2c, 0xee, 0xe0, 0xfd, 0x64, 0x52, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x56, 0x2c, 0xee, 0xe0, 0xfd, 0x64, 0x52, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2b, 0x16, 0xe2, 0x81, 0xac, 0x58, 0x18, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x58, 0xc8, 0x07, 0xb2, 0x62, 0x61, 0x37, 0x48, 0x06, 0x04, 0x5b, 0xdf, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x15, 0x0b, 0xc3, 0x81, 0xac, 0x58, 0xd8, 0x1e, 0x04, 0xa5, 0xf7, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x8b, 0xc5, 0x1d, 0xbc, 0x9f, 0x4c, 0x6a, 0x10, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xb1, 0x90, 0x1c, 0xbc, 0x9f, 0x4c, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x8b, 0xc5, 0x1d, 0xbc, 0x9f, 0x4c, 0x6a, 0xd8, 0x0d, 0xeb, 0x7b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xb1, 0xf8, 0x81, 0xc4, 0x58, 0x08, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x63, 0x71, 0x07, 0xef, 0x27, 0x93, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xb1, 0xb0, 0x19, 0xc8, 0x8c, 0x85, 0xc6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x19, 0x0b, 0xa3, 0x81, 0xcc, 0x58, 0x18, 0x0e, 0x92, 0x01, 0xcb, 0xd7, 0xfb, 0x0e, 0x4e, 0x42, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xc6, 0xc2, 0x72, 0x20, 0x33, 0x16, 0xaa, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x58, 0xd8, 0x1f, 0x3c, 0xd3, 0x51, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x33, 0x16, 0x0a, 0x06, 0x32, 0x63, 0xa1, 0xe3, 0xd0, 0x02, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x8c, 0x85, 0x92, 0x81, 0xcc, 0x58, 0x68, 0x3a, 0x44, 0x73, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x66, 0x2c, 0x74, 0x0d, 0x64, 0xc6, 0x42, 0xe1, 0x41, 0x5b, 0x4c, 0x00, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x35, 0x16, 0x77, 0xf0, 0x7e, 0x32, 0xa9, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1a, 0x0b, 0xc9, 0x40, 0x6a, 0x2c, 0xd4, 0x0f, 0xc2, 0xc5, 0x81, 0x48, 0x6c, 0x98, 0xfb, 0x0d, 0xde, 0x4b, 0x15, 0xb2, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0x36, 0x78, 0x39, 0x68, 0xc9, 0x86, 0x13, 0x61, 0x83, 0x97, 0x83, 0x96, 0x6c, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x16, 0x2a, 0x53, 0x1d, 0x3c, 0xa7, 0x98, 0x69, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x46, 0x80, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0xbb, 0x3d, 0x1b, 0x3c, 0x8a, 0x2b, 0x64, 0x0d, 0x1f, 0xb5, 0x1f, 0xbc, 0xd3, 0x2b, 0xa4, 0x83, 0x63, 0xcc, 0xd9, 0xc1, 0x4a, 0x3a, 0xfd, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0x9e, 0x53, 0x2a, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xc6, 0xc2, 0x64, 0x20, 0x35, 0x16, 0xda, 0x17, 0x83, 0x1f, 0xcb, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x58, 0x58, 0x1d, 0x3c, 0x03, 0x56, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x35, 0x16, 0x66, 0x03, 0xa9, 0xb1, 0xd0, 0x32, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x63, 0x61, 0x37, 0x90, 0x1a, 0x0b, 0xdb, 0x41, 0x32, 0x10, 0xba, 0x83, 0xe1, 0x28, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6a, 0x2c, 0x8c, 0x07, 0x52, 0x63, 0x61, 0x7e, 0x50, 0x8a, 0x48, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x8d, 0x85, 0xfd, 0x40, 0x6a, 0x2c, 0x94, 0x1c, 0x94, 0x30, 0x12, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x58, 0xa8, 0x19, 0x48, 0x8d, 0x85, 0xae, 0x83, 0x04, 0x6c, 0x81, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x58, 0x28, 0x1b, 0x48, 0x8d, 0x85, 0xe2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1a, 0x0b, 0x6d, 0x03, 0xa9, 0xb1, 0xd0, 0x78, 0xf0, 0x90, 0x5c, 0xa9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x58, 0xa8, 0x1c, 0x48, 0x8d, 0x85, 0xde, 0x83, 0x11, 0xe4, 0x79, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x63, 0xa1, 0x79, 0x20, 0x35, 0x16, 0xca, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6e, 0x2c, 0xee, 0xe0, 0xfd, 0x64, 0x52, 0xc3, 0x6e, 0x90, 0xc2, 0x6a, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1d, 0x8b, 0x3b, 0x78, 0x3f, 0x99, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x8e, 0x85, 0x6c, 0x20, 0x3b, 0x16, 0x06, 0x87, 0xb5, 0xdf, 0x43, 0x72, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x8e, 0xc5, 0x0f, 0x24, 0xc7, 0x42, 0xb6, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x72, 0x2c, 0x04, 0x07, 0x6f, 0xf0, 0x96, 0x3a, 0xa4, 0x0e, 0x8e, 0x6f, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x3a, 0x21, 0x1d, 0xc8, 0xeb, 0x84, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x9d, 0x30, 0x18, 0xc8, 0xeb, 0x84, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd7, 0x09, 0xf1, 0xc1, 0xa3, 0xcf, 0xa5, 0x0e, 0x5e, 0xae, 0x5c, 0x34, 0xc8, 0x36, 0x78, 0xdb, 0xb8, 0xd4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd7, 0x09, 0xb3, 0x81, 0xbc, 0x4e, 0x58, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x9d, 0x30, 0x3a, 0x78, 0x90, 0xbb, 0xd4, 0xc1, 0xbb, 0x2b, 0x7b, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x06, 0x2b, 0xca, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf0, 0xc4, 0x0d, 0xe4, 0x78, 0xe2, 0x87, 0xdd, 0x90, 0xc7, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf0, 0x84, 0x64, 0x20, 0xc3, 0x13, 0x2e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x78, 0x42, 0x34, 0x90, 0xe1, 0x09, 0xe1, 0xa1, 0x59, 0xe4, 0x20, 0xdb, 0xe0, 0xd5, 0xf6, 0x52, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x86, 0x27, 0xe4, 0x03, 0x19, 0x9e, 0xb0, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x3c, 0x21, 0x3d, 0x78, 0xb9, 0xbf, 0xd4, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0x47, 0x3a, 0x26, 0x1c, 0x3a, 0x68, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x9e, 0x90, 0x0c, 0xa4, 0x78, 0xc2, 0x85, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x4f, 0x88, 0x06, 0x52, 0x3c, 0x21, 0x3c, 0xf4, 0x69, 0x1c, 0x64, 0x1b, 0x3c, 0x7d, 0x60, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf1, 0x84, 0x7c, 0x20, 0xc5, 0x13, 0x36, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8a, 0x27, 0xa4, 0x07, 0xcf, 0x5f, 0x98, 0x3a, 0x78, 0xd5, 0xef, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0x71, 0xbf, 0x63, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x82, 0xe2, 0x06, 0x72, 0x41, 0xf1, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2a, 0x28, 0x24, 0x03, 0xa9, 0xa0, 0xb0, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x05, 0x85, 0x68, 0x20, 0x15, 0x14, 0xc2, 0x43, 0x9f, 0xc6, 0x41, 0xb6, 0xc1, 0x03, 0x28, 0xa6, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x50, 0x88, 0x07, 0x52, 0x41, 0x61, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x82, 0x42, 0x7a, 0xf0, 0x04, 0x8e, 0xa9, 0x41, 0xb0, 0xc1, 0x9b, 0xef, 0xa3, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x71, 0x0e, 0xde, 0x75, 0x58, 0xb4, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x36, 0x21, 0x1d, 0xc8, 0xdb, 0x84, 0x47, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x9b, 0x30, 0x19, 0xc8, 0xdb, 0x84, 0xd9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb7, 0x09, 0xf1, 0xc1, 0xa3, 0x4d, 0xa6, 0x0e, 0x1e, 0xc8, 0x81, 0x34, 0xc8, 0x36, 0x78, 0x9b, 0xc8, 0xd4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb7, 0x09, 0xdb, 0x81, 0xbc, 0x4d, 0xd8, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x9b, 0xb0, 0x3b, 0x78, 0x50, 0xcb, 0xd4, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0xa0, 0xfc, 0xaf, 0x3a, 0x1e, 0x1f, 0x3a, 0x68, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x51, 0xdc, 0x40, 0x1a, 0x2a, 0x7e, 0x71, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x73, 0x14, 0xf2, 0x81, 0xcc, 0x51, 0x28, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x47, 0x61, 0x30, 0x90, 0x39, 0x0a, 0x9b, 0x41, 0x32, 0xd0, 0xa6, 0xef, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x39, 0x0a, 0xa3, 0x81, 0xcc, 0x51, 0x18, 0x0e, 0x92, 0x81, 0xf7, 0x97, 0x0e, 0xd9, 0x8a, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0xc5, 0x83, 0x37, 0xf1, 0x0b, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x51, 0x58, 0x0e, 0x64, 0x8e, 0x42, 0xdf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe6, 0x28, 0x6c, 0x07, 0x32, 0x47, 0x61, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x8e, 0xc2, 0xf4, 0xe0, 0xa9, 0x48, 0x53, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x40, 0xb3, 0xbe, 0xe3, 0xf9, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x78, 0x11, 0xd1, 0xd4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x39, 0x0a, 0x25, 0x03, 0x99, 0xa3, 0x50, 0x37, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x8e, 0x42, 0xc1, 0xc1, 0x0b, 0xa1, 0xa6, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x51, 0x68, 0x19, 0xc8, 0x1c, 0x85, 0xa2, 0x83, 0x85, 0xf7, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xa3, 0xd0, 0x34, 0x90, 0x39, 0x0a, 0x6d, 0x83, 0x64, 0xe0, 0xf4, 0x39, 0x64, 0x2b, 0x8e, 0x43, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0xb8, 0xc1, 0x53, 0x8f, 0x82, 0x0e, 0x9e, 0x61, 0x23, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x47, 0xf1, 0x03, 0xe9, 0xa3, 0x90, 0x0c, 0xbb, 0xc1, 0xfb, 0xb1, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x47, 0x21, 0x1b, 0xc8, 0x1d, 0x85, 0x13, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xa3, 0x10, 0x0e, 0xe4, 0x8e, 0xc2, 0xe2, 0x60, 0x69, 0xa9, 0xd5, 0x20, 0xdb, 0xe0, 0x2d, 0x64, 0x53, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xa3, 0xb0, 0x19, 0xc8, 0x1d, 0x85, 0xdd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3b, 0x0a, 0x93, 0x83, 0xc7, 0xb1, 0x4d, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x78, 0x5b, 0xd0, 0xd4, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0xe0, 0x2d, 0x64, 0x53, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x28, 0x2c, 0x07, 0x72, 0x47, 0x61, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x8e, 0xc2, 0xf0, 0xe0, 0x09, 0x74, 0x53, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0x5e, 0xb8, 0x35, 0x75, 0x68, 0x01, 0x36, 0xec, 0x06, 0x4f, 0x36, 0x09, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x1e, 0x85, 0x6c, 0x20, 0x79, 0x14, 0x6e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x8f, 0x42, 0x38, 0x90, 0x3c, 0x0a, 0x8b, 0x83, 0x37, 0xa4, 0x47, 0x0d, 0xb2, 0x0d, 0x5e, 0x9d, 0x37, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3c, 0x0a, 0x9b, 0x81, 0xe4, 0x51, 0xd8, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xa3, 0x30, 0x39, 0x78, 0x88, 0xe0, 0xd4, 0xc1, 0x1b, 0xdf, 0xa6, 0x06, 0xd9, 0x06, 0xaf, 0xce, 0x9b, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x47, 0x61, 0x39, 0x90, 0x3c, 0x0a, 0xeb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x79, 0x14, 0x86, 0x07, 0xaf, 0x44, 0x9c, 0x3a, 0x78, 0xc9, 0xdd, 0xd4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3d, 0x0a, 0xd9, 0x40, 0xf6, 0x28, 0x9c, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1e, 0x85, 0x70, 0x20, 0x7b, 0x14, 0x16, 0x07, 0xcf, 0x6c, 0x92, 0x1a, 0x64, 0x1b, 0x3c, 0x8f, 0x71, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7b, 0x14, 0x36, 0x03, 0xd9, 0xa3, 0xb0, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x47, 0x61, 0x72, 0xf0, 0x62, 0xca, 0xa9, 0x83, 0x37, 0xbe, 0x4d, 0x0d, 0xb2, 0x0d, 0x9e, 0xc7, 0x38, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x8f, 0xc2, 0x72, 0x20, 0x7b, 0x14, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf6, 0x28, 0x0c, 0x0f, 0x9e, 0xb3, 0x39, 0x35, 0x08, 0x36, 0x78, 0x00, 0xd3, 0xd4, 0xa1, 0x05, 0xd8, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xaf, 0x14, 0x3f, 0x90, 0x85, 0x0a, 0xc9, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x4b, 0xf1, 0x07, 0xaf, 0x10, 0x9d, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x4b, 0xf1, 0x07, 0xaf, 0x10, 0x9d, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xa5, 0xb0, 0x18, 0xc8, 0x2c, 0x85, 0x82, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x59, 0x0a, 0x93, 0x81, 0xcc, 0x52, 0x58, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x52, 0x18, 0x0e, 0x64, 0x96, 0xc2, 0xf4, 0xa0, 0xc5, 0x95, 0xa8, 0x41, 0x32, 0x50, 0xaf, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x2c, 0x85, 0xed, 0x40, 0x66, 0x29, 0x8c, 0x0f, 0xe3, 0x72, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x2c, 0x85, 0xf9, 0x40, 0x66, 0x29, 0xec, 0x0f, 0xd1, 0x3c, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xa5, 0xf8, 0x83, 0x57, 0x88, 0x4e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x52, 0x58, 0x0c, 0xa4, 0x96, 0x42, 0xc1, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x2d, 0x85, 0xc9, 0x40, 0x6a, 0x29, 0xac, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6a, 0x29, 0x0c, 0x07, 0x52, 0x4b, 0x61, 0x7a, 0xd0, 0x24, 0xc0, 0xc0, 0x20, 0x19, 0xa8, 0x57, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x96, 0xc2, 0x76, 0x20, 0xb5, 0x14, 0xc6, 0x87, 0xac, 0xdd, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb5, 0x14, 0xe6, 0x03, 0xa9, 0xa5, 0xb0, 0x3f, 0xe4, 0x6b, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6e, 0x29, 0xfe, 0xe0, 0x15, 0xa2, 0x53, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb7, 0x14, 0x16, 0x03, 0xb9, 0xa5, 0x50, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x4b, 0x61, 0x32, 0x90, 0x5b, 0x0a, 0xeb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5b, 0x0a, 0xc3, 0x81, 0xdc, 0x52, 0x98, 0x1e, 0xb4, 0x54, 0x30, 0x30, 0x48, 0x06, 0xa6, 0x6a, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x52, 0xd8, 0x0e, 0xe4, 0x96, 0xc2, 0xf8, 0x10, 0xff, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6e, 0x29, 0xcc, 0x07, 0x72, 0x4b, 0x61, 0x7f, 0x58, 0xfb, 0x3d, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xa5, 0xf8, 0x83, 0x57, 0x88, 0x4e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x52, 0xc8, 0x06, 0x92, 0x4b, 0x21, 0x1f, 0x24, 0x03, 0x0a, 0xf5, 0xbe, 0x83, 0xb3, 0x97, 0xf1, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x4b, 0x21, 0x19, 0xc8, 0x32, 0x85, 0xe9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5e, 0x0a, 0xc9, 0xc1, 0xa3, 0xd9, 0xa7, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x29, 0xa4, 0x03, 0xe9, 0xa5, 0xb0, 0x18, 0x24, 0x03, 0x96, 0xbe, 0xf7, 0x1d, 0x9c, 0xbd, 0x8c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x4b, 0x21, 0x39, 0x78, 0x34, 0xfb, 0xd4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x2f, 0x85, 0x74, 0x20, 0xbf, 0x14, 0x16, 0x07, 0xc9, 0x48, 0x1f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x97, 0xc2, 0x66, 0x20, 0xbf, 0x14, 0x1a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7e, 0x29, 0x2c, 0x07, 0xf2, 0x4b, 0x61, 0x7b, 0xd0, 0x86, 0xad, 0xc0, 0x20, 0x19, 0x08, 0xd7, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xa5, 0x30, 0x1e, 0xc8, 0x2f, 0x85, 0x82, 0x43, 0xaa, 0xe6, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc1, 0x14, 0x92, 0x83, 0x47, 0xb3, 0x4f, 0x0d, 0x82, 0xc5, 0x83, 0xf7, 0xf0, 0x0b, 0x2d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xa6, 0x90, 0x1c, 0x3c, 0x9a, 0x7d, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x31, 0x85, 0xe4, 0xe0, 0xd1, 0xec, 0x53, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xa6, 0x90, 0x0e, 0xa4, 0x98, 0xc2, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc5, 0x14, 0xe2, 0x81, 0x14, 0x53, 0xd8, 0x1c, 0x3c, 0xf2, 0x28, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc5, 0x14, 0x46, 0x03, 0x29, 0xa6, 0x30, 0x3c, 0x44, 0x73, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x31, 0x85, 0xe5, 0x40, 0x8a, 0x29, 0xac, 0x0f, 0x8d, 0x04, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x53, 0x48, 0x0e, 0x1e, 0xcd, 0x3e, 0x35, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x4c, 0x21, 0x1d, 0xc8, 0x31, 0x85, 0xc5, 0x41, 0xc2, 0x56, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xa6, 0xb0, 0x19, 0xc8, 0x31, 0x85, 0x82, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x63, 0x0a, 0xcb, 0x81, 0x1c, 0x53, 0xd8, 0x1e, 0x34, 0xce, 0xca, 0x32, 0x48, 0x06, 0x42, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8e, 0x29, 0x8c, 0x07, 0x72, 0x4c, 0x61, 0x7f, 0x10, 0x94, 0xde, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xa6, 0x90, 0x1c, 0x3c, 0x9a, 0x7d, 0x6a, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xa6, 0x90, 0x1c, 0x3c, 0x9a, 0x7d, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcb, 0x14, 0xa2, 0x81, 0x2c, 0x53, 0xc8, 0x0f, 0x16, 0xa1, 0x5a, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x99, 0xc2, 0x60, 0x20, 0xcb, 0x14, 0x46, 0x87, 0xf8, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xa6, 0xb0, 0x1a, 0xc8, 0x32, 0x85, 0xe5, 0x21, 0x75, 0x70, 0x3c, 0x3e, 0x0e, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcf, 0x14, 0x92, 0x81, 0x5c, 0x53, 0xd8, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xa6, 0x90, 0x1c, 0x3c, 0x28, 0x88, 0x6a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x9a, 0x42, 0x3a, 0x90, 0x68, 0x0a, 0x8b, 0x83, 0x64, 0xa4, 0x8f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x4d, 0x61, 0x33, 0x90, 0x68, 0x0a, 0x0d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd1, 0x14, 0x96, 0x03, 0x89, 0xa6, 0xb0, 0x3d, 0x68, 0xc3, 0x56, 0x60, 0x90, 0x0c, 0x84, 0x6b, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x53, 0x18, 0x0f, 0x24, 0x9a, 0x42, 0xc1, 0x21, 0x75, 0x70, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x69, 0x0a, 0xc9, 0xc1, 0x83, 0x82, 0xa8, 0x06, 0xc1, 0x06, 0x4f, 0x4d, 0xa0, 0x5a, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x4d, 0x21, 0x39, 0x78, 0x50, 0x10, 0xd5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6b, 0x0a, 0xc9, 0xc1, 0x83, 0x82, 0xa8, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x4d, 0x21, 0x1a, 0xc8, 0x35, 0x85, 0xfc, 0xe0, 0x91, 0x47, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xa6, 0x30, 0x18, 0xc8, 0x35, 0x85, 0xd1, 0x21, 0x9a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xae, 0x29, 0xac, 0x06, 0x72, 0x4d, 0x61, 0x7a, 0xf0, 0x0e, 0x4d, 0xa6, 0xe3, 0xf1, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x4d, 0x21, 0x19, 0x48, 0x42, 0x85, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x37, 0x85, 0xe4, 0xe0, 0x91, 0x68, 0x54, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdd, 0x14, 0xd2, 0x81, 0x74, 0x53, 0x58, 0x1c, 0x3c, 0x56, 0x7e, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdf, 0x14, 0x92, 0x83, 0x47, 0xa2, 0x51, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x53, 0x48, 0x07, 0xf2, 0x4d, 0x61, 0x71, 0x90, 0x8c, 0xf4, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xbe, 0x29, 0x6c, 0x06, 0xf2, 0x4d, 0xa1, 0x61, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x9b, 0xc2, 0x72, 0x20, 0xdf, 0x14, 0xb6, 0x07, 0x6d, 0xd8, 0x0a, 0x0c, 0x92, 0x81, 0x70, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6f, 0x0a, 0xe3, 0x81, 0x7c, 0x53, 0x28, 0x38, 0x0e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x9c, 0x42, 0x72, 0xf0, 0x48, 0x34, 0xaa, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x4e, 0x21, 0x39, 0x78, 0x24, 0x1a, 0xd5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x72, 0x0a, 0xc9, 0xc1, 0x23, 0xd1, 0xa8, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xca, 0x29, 0x2c, 0x06, 0x52, 0x4e, 0xa1, 0x63, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x9c, 0xc2, 0x64, 0x20, 0xe5, 0x14, 0xd6, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe5, 0x14, 0x86, 0x03, 0x29, 0xa7, 0x30, 0x3d, 0x78, 0xed, 0x0d, 0xc9, 0x20, 0x19, 0xa8, 0x5e, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x9c, 0xc2, 0x76, 0x20, 0xe5, 0x14, 0xc6, 0x07, 0xa3, 0xd5, 0xfc, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x72, 0x0a, 0xf3, 0x81, 0x94, 0x53, 0xa8, 0x38, 0x44, 0xf3, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x9c, 0x42, 0x72, 0xf0, 0x48, 0x34, 0xaa, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x73, 0x0a, 0x8b, 0x81, 0x9c, 0x53, 0xe8, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xa7, 0x30, 0x19, 0xc8, 0x39, 0x85, 0xf5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x39, 0x85, 0xe1, 0x40, 0xce, 0x29, 0x4c, 0x0f, 0x1e, 0xf8, 0x4c, 0x32, 0x48, 0x06, 0xaa, 0xd7, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xa7, 0xb0, 0x1d, 0xc8, 0x39, 0x85, 0xf1, 0xc1, 0x3a, 0x95, 0x86, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x29, 0xcc, 0x07, 0x72, 0x4e, 0xa1, 0xe2, 0x90, 0xb5, 0x3b, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xa7, 0x90, 0x1c, 0x3c, 0x12, 0x8d, 0x6a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x9d, 0xc2, 0x68, 0x20, 0xe9, 0x14, 0xda, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd2, 0x29, 0xac, 0x06, 0x92, 0x4e, 0xa1, 0x65, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x9d, 0xc2, 0x76, 0x20, 0xe9, 0x14, 0xd6, 0x83, 0x64, 0x60, 0xad, 0xef, 0xe0, 0x40, 0x91, 0x3c, 0x48, 0x06, 0xe2, 0x35, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd2, 0x29, 0xcc, 0x07, 0x92, 0x4e, 0xa1, 0xe4, 0x20, 0x04, 0xc0, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xa7, 0x50, 0x33, 0x90, 0x74, 0x0a, 0x65, 0x87, 0x71, 0x39, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xa7, 0x90, 0x1c, 0x3c, 0x12, 0x8d, 0x6a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x9d, 0xc2, 0x68, 0x20, 0xeb, 0x14, 0xda, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x29, 0xac, 0x06, 0xb2, 0x4e, 0xa1, 0x65, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x9d, 0xc2, 0x76, 0x20, 0xeb, 0x14, 0xd6, 0x07, 0xad, 0x7a, 0xb3, 0x0c, 0x92, 0x81, 0x78, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x75, 0x0a, 0xf3, 0x81, 0xac, 0x53, 0x28, 0x39, 0xe4, 0x6b, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xa7, 0x50, 0x33, 0x90, 0x75, 0x0a, 0x65, 0x87, 0x71, 0x39, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xa7, 0x90, 0x1c, 0x3c, 0x12, 0x8d, 0x6a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x9d, 0x42, 0x3a, 0x90, 0x76, 0x0a, 0x8b, 0x41, 0x32, 0xa0, 0x50, 0xef, 0x3b, 0x38, 0x66, 0x2c, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xef, 0x14, 0xb2, 0x81, 0xcc, 0x53, 0x28, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xef, 0x14, 0xf2, 0x81, 0xbc, 0x53, 0x68, 0x18, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xef, 0x14, 0x16, 0x03, 0x79, 0xa7, 0x30, 0x3c, 0xc4, 0x7f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x3b, 0x85, 0xe5, 0x40, 0xde, 0x29, 0x14, 0x1c, 0xb2, 0x76, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xa7, 0x90, 0x0e, 0x24, 0x9e, 0x42, 0x7c, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x79, 0x0a, 0xd9, 0xc1, 0x83, 0xc8, 0xa9, 0x56, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x3c, 0x85, 0x70, 0x20, 0xf3, 0x14, 0x16, 0x07, 0x8f, 0x3c, 0x0a, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x3c, 0x85, 0xc9, 0x40, 0xe6, 0x29, 0xcc, 0x0e, 0x82, 0x14, 0x7f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x3c, 0x85, 0xdd, 0x40, 0xe6, 0x29, 0xcc, 0x0f, 0x59, 0xbb, 0x43, 0x0c, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x53, 0xc8, 0x06, 0xd2, 0x4f, 0x61, 0x3c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x4f, 0x21, 0x1f, 0xc8, 0x3d, 0x85, 0xcd, 0x20, 0xd9, 0x60, 0x90, 0xbc, 0x1c, 0x1c, 0x33, 0x96, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x3d, 0x85, 0xd5, 0x40, 0xee, 0x29, 0x94, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x53, 0xd8, 0x0e, 0xe4, 0x9e, 0xc2, 0xfa, 0xe0, 0xb5, 0xbc, 0x36, 0x83, 0x64, 0x20, 0x5c, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x9e, 0xc2, 0x7c, 0x20, 0xf7, 0x14, 0x3a, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x53, 0xc8, 0x0e, 0x9e, 0x0c, 0x50, 0x35, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x53, 0xc8, 0x0e, 0x9e, 0x0c, 0x50, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x9f, 0x42, 0x76, 0xf0, 0x64, 0x80, 0xaa, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x53, 0x08, 0x07, 0xd2, 0x4f, 0x61, 0x71, 0xb0, 0x08, 0xd5, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xfd, 0x14, 0x26, 0x03, 0xe9, 0xa7, 0x30, 0x3b, 0x28, 0x09, 0x1a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x53, 0xd8, 0x0d, 0xa4, 0x9f, 0xc2, 0xf6, 0x90, 0x3a, 0x38, 0x1e, 0x1f, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x01, 0x15, 0xb2, 0x81, 0x1c, 0x54, 0x18, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x54, 0xc8, 0x07, 0x12, 0x50, 0x61, 0x73, 0xf0, 0x0e, 0x82, 0xaa, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x50, 0x61, 0x35, 0x90, 0x80, 0x0a, 0x25, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x01, 0x15, 0xb6, 0x03, 0x09, 0xa8, 0xb0, 0x3e, 0x78, 0x2d, 0xaf, 0xcd, 0x20, 0x19, 0x08, 0xd7, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xa8, 0x30, 0x1f, 0x48, 0x40, 0x85, 0x8e, 0xe3, 0xd0, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x06, 0x2a, 0x64, 0x07, 0x0f, 0x30, 0xa9, 0x1a, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0a, 0x2a, 0x64, 0x07, 0x0f, 0x30, 0xa9, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x50, 0x21, 0x3b, 0x78, 0x80, 0x49, 0xd5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0e, 0x2a, 0x84, 0x03, 0x39, 0xa8, 0xb0, 0x38, 0x78, 0xbe, 0x49, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0e, 0x2a, 0x4c, 0x06, 0x72, 0x50, 0x61, 0x76, 0x50, 0x12, 0x34, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xa8, 0xb0, 0x1b, 0xc8, 0x41, 0x85, 0xed, 0x21, 0x75, 0x70, 0x3c, 0x3e, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xa4, 0xf8, 0x81, 0xa4, 0x52, 0x48, 0x06, 0xc1, 0xe2, 0x1c, 0xbc, 0xe6, 0x6b, 0x6a, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x21, 0xc5, 0x1f, 0x3c, 0x70, 0xa9, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x21, 0xc5, 0x1f, 0x3c, 0x70, 0xa9, 0x6a, 0xd8, 0x85, 0xdb, 0x60, 0x11, 0xaa, 0xd5, 0xa1, 0x91, 0xe0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x16, 0x29, 0x24, 0x03, 0x79, 0xa4, 0x70, 0x65, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x91, 0x42, 0x36, 0x90, 0x46, 0x0a, 0x6d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8d, 0x14, 0xc2, 0x81, 0x34, 0x52, 0x98, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x52, 0x98, 0x0c, 0xa4, 0x91, 0xc2, 0xe8, 0xa0, 0xc5, 0x95, 0xa8, 0x41, 0x32, 0x70, 0xfb, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x46, 0x0a, 0xab, 0x81, 0x34, 0x52, 0x58, 0x1e, 0xa2, 0x79, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8d, 0x14, 0xb6, 0x03, 0x69, 0xa4, 0x50, 0x72, 0xe8, 0xa4, 0xb6, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x52, 0x68, 0x19, 0x48, 0x23, 0x85, 0xaa, 0x83, 0x77, 0x68, 0x32, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x23, 0x85, 0xae, 0x81, 0x34, 0x52, 0x28, 0x3b, 0xc4, 0xf0, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x91, 0x42, 0x72, 0xf0, 0xb2, 0xaa, 0xaa, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x47, 0x0a, 0xd1, 0x40, 0x1e, 0x29, 0x0c, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1e, 0x29, 0x0c, 0x06, 0xf2, 0x48, 0x61, 0x72, 0xd0, 0x24, 0xc0, 0xc0, 0x20, 0x19, 0x18, 0xaa, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x48, 0x61, 0x33, 0x90, 0x47, 0x0a, 0xbb, 0x43, 0xd6, 0xee, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1e, 0x29, 0x2c, 0x07, 0xf2, 0x48, 0xa1, 0xe2, 0xd0, 0xb8, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1e, 0x29, 0x74, 0x0c, 0xe4, 0x91, 0xc2, 0x93, 0x41, 0xb4, 0xd0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8f, 0x14, 0xba, 0x06, 0xf2, 0x48, 0xe1, 0xc8, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x23, 0x85, 0xb2, 0x81, 0x3c, 0x52, 0x68, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xa4, 0x50, 0x39, 0x90, 0x47, 0x0a, 0xa5, 0x07, 0x0b, 0x6a, 0xf7, 0x07, 0xc9, 0xe0, 0xd4, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xa4, 0xd0, 0x3a, 0x90, 0x47, 0x0a, 0xe5, 0x07, 0x21, 0x00, 0x7e, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x23, 0x85, 0xfa, 0x81, 0x3c, 0x52, 0xf8, 0x71, 0x68, 0x96, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x86, 0x5d, 0xb8, 0x0d, 0x9e, 0x6f, 0x12, 0x74, 0x68, 0x24, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4a, 0x0a, 0xc9, 0x40, 0x32, 0x29, 0x34, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x52, 0x48, 0x07, 0x52, 0x49, 0x61, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x49, 0x61, 0x33, 0x90, 0x4a, 0x0a, 0xab, 0x83, 0x16, 0x57, 0xa2, 0x06, 0xc9, 0x40, 0xf9, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x95, 0x14, 0x66, 0x03, 0xa9, 0xa4, 0x30, 0x3d, 0x44, 0xf3, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4b, 0x0a, 0xc9, 0xc1, 0x7b, 0x31, 0xab, 0x06, 0xc1, 0x06, 0x4f, 0x18, 0x9a, 0x5a, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x49, 0x21, 0x39, 0x78, 0x2f, 0x66, 0xd5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x29, 0x44, 0x03, 0xc9, 0xa4, 0x10, 0x1f, 0xa2, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x93, 0x42, 0x3e, 0x90, 0x4c, 0x0a, 0x45, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x99, 0x14, 0x06, 0x03, 0xc9, 0xa4, 0xb0, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xa4, 0x30, 0x1b, 0x48, 0x26, 0x85, 0xe1, 0x41, 0xa3, 0xcb, 0x21, 0x83, 0x64, 0x70, 0x6f, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x52, 0x58, 0x0e, 0x24, 0x93, 0xc2, 0xf8, 0x30, 0x2e, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x52, 0x98, 0x0f, 0x24, 0x93, 0x42, 0xcf, 0xa1, 0xd1, 0xd1, 0x71, 0xe8, 0x78, 0x7c, 0x1c, 0x1a, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xdc, 0x06, 0x8f, 0x3c, 0x0a, 0x3a, 0x34, 0x12, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x49, 0x21, 0x19, 0xc8, 0x29, 0x85, 0xde, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x49, 0x21, 0x1d, 0xc8, 0x27, 0x85, 0x82, 0xe1, 0x36, 0x78, 0x87, 0x26, 0xd3, 0xc1, 0xc8, 0xec, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x28, 0x85, 0x6c, 0x20, 0xa1, 0x14, 0x5a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x29, 0x84, 0x03, 0x09, 0xa5, 0x30, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xa5, 0x30, 0x19, 0x48, 0x28, 0x85, 0xd1, 0x41, 0x8b, 0x2b, 0x51, 0x83, 0x64, 0x20, 0x7c, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x94, 0xc2, 0x6a, 0x20, 0xa1, 0x14, 0x96, 0x87, 0x68, 0x1e, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x4a, 0x61, 0x3b, 0x90, 0x50, 0x0a, 0x25, 0x87, 0x4e, 0x6a, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa3, 0x14, 0x92, 0x83, 0xc7, 0x0d, 0x57, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x52, 0xc8, 0x06, 0x52, 0x4a, 0xa1, 0x6d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x94, 0x42, 0x38, 0x90, 0x52, 0x0a, 0xd3, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x52, 0x0a, 0x93, 0x81, 0x94, 0x52, 0x18, 0x1d, 0xb4, 0xb8, 0x12, 0x35, 0x48, 0x06, 0x6e, 0xbf, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x4a, 0x61, 0x35, 0x90, 0x52, 0x0a, 0xcb, 0x43, 0x34, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x94, 0xc2, 0x76, 0x20, 0xa5, 0x14, 0x4a, 0x0e, 0x9d, 0xd4, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x52, 0x0a, 0x2d, 0x03, 0x29, 0xa5, 0x50, 0x75, 0xf0, 0x0e, 0x4d, 0xa6, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xa5, 0xd0, 0x35, 0x90, 0x52, 0x0a, 0x65, 0x87, 0x18, 0x1e, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x52, 0x48, 0x0e, 0x1e, 0x37, 0x5c, 0x35, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x4a, 0x21, 0x1a, 0xc8, 0x29, 0x85, 0xe1, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x29, 0x85, 0xc1, 0x40, 0x4e, 0x29, 0x4c, 0x0e, 0x9a, 0x04, 0x18, 0x18, 0x24, 0x03, 0x43, 0x35, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x29, 0x6c, 0x06, 0x72, 0x4a, 0x61, 0x77, 0xc8, 0xda, 0x1d, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x29, 0x85, 0xe5, 0x40, 0x4e, 0x29, 0x54, 0x1c, 0x1a, 0x17, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x29, 0x85, 0x8e, 0x81, 0x9c, 0x52, 0xa8, 0x1d, 0x44, 0x0b, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x4a, 0xa1, 0x6c, 0x20, 0xa7, 0x14, 0x5a, 0x0f, 0xcd, 0x92, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf1, 0xf8, 0x78, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xad, 0x0b, 0xd9, 0x40, 0x9e, 0x38, 0x6e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xd7, 0x45, 0x0f, 0xde, 0xf5, 0x60, 0xb5, 0xb8, 0x20, 0x58, 0x1c, 0xd0, 0xd3, 0xe0, 0xec, 0x6c, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc3, 0x1a, 0x37, 0x90, 0x64, 0x8d, 0x1f, 0x76, 0xe1, 0x16, 0x03, 0x3d, 0x0d, 0xce, 0x8e, 0x1e, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x61, 0x0d, 0xc9, 0x40, 0x86, 0x35, 0x8c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xac, 0x21, 0x1a, 0xc8, 0xb0, 0x86, 0x7c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xc7, 0x5a, 0x58, 0x6d, 0xf0, 0x58, 0x0b, 0xab, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0xfe, 0x85, 0xd5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x61, 0x0d, 0x83, 0x81, 0x0c, 0x6b, 0xd8, 0x0c, 0x82, 0x0d, 0x1e, 0xb6, 0xd7, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x5d, 0xb8, 0xcd, 0x21, 0x5f, 0x7b, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xac, 0x21, 0x19, 0x48, 0xb1, 0x86, 0xd1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8a, 0x35, 0x44, 0x03, 0x29, 0xd6, 0x90, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x39, 0x1e, 0x3c, 0x5b, 0xc2, 0x6a, 0x83, 0xd7, 0xaa, 0x58, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x5b, 0x4a, 0xac, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x6b, 0x18, 0x0c, 0xa4, 0x58, 0xc3, 0x66, 0x10, 0x6c, 0xf0, 0xb0, 0xbd, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x6b, 0xee, 0x6d, 0x0e, 0xf9, 0xda, 0xe3, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0x62, 0xe0, 0xd3, 0xc9, 0x85, 0x8d, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x29, 0x1b, 0x37, 0x90, 0x9c, 0x8d, 0x1f, 0x76, 0xe1, 0x16, 0x03, 0x7f, 0xec, 0xcd, 0xcd, 0x3d, 0xa4, 0x0e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xb2, 0x21, 0x19, 0x48, 0xca, 0x86, 0x13, 0xc3, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0xc1, 0x23, 0x6e, 0xac, 0x36, 0x78, 0xc4, 0x8d, 0xd5, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x16, 0x03, 0x9f, 0xac, 0x8c, 0x8d, 0x3e, 0xa4, 0x0e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xb2, 0x21, 0x19, 0xc8, 0xca, 0x86, 0x0f, 0xc3, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0xc1, 0xa3, 0x7a, 0xac, 0x36, 0x78, 0x54, 0x8f, 0xd5, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x16, 0x0f, 0x4a, 0x84, 0x96, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x1b, 0x92, 0x81, 0xb4, 0x6c, 0x38, 0x30, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x3c, 0x72, 0xc8, 0x6a, 0x83, 0x47, 0x0e, 0x59, 0x1d, 0x4e, 0xb1, 0x61, 0x37, 0x68, 0x42, 0xe8, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2f, 0x1b, 0x92, 0x81, 0xbc, 0x6c, 0x78, 0x70, 0xd0, 0xb0, 0x9f, 0xfd, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x6f, 0x70, 0x74, 0xf3, 0x21, 0x75, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x98, 0x0d, 0xc9, 0x40, 0x62, 0x36, 0x9c, 0x18, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0xde, 0xd7, 0x64, 0xb5, 0xc1, 0xfb, 0x9a, 0xac, 0x0e, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x70, 0x6f, 0x73, 0xf4, 0x21, 0x75, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x99, 0x0d, 0xc9, 0x40, 0x66, 0x36, 0x3c, 0x18, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0xde, 0x3b, 0x65, 0xb5, 0xc1, 0x7b, 0xa7, 0xac, 0x0e, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x78, 0x30, 0xd2, 0xdc, 0x0f, 0xa9, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x6c, 0x48, 0x06, 0x52, 0xb3, 0xe1, 0xc0, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0xf0, 0xfe, 0x2c, 0xab, 0x0d, 0xde, 0x9f, 0x65, 0x75, 0x38, 0xc5, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x6c, 0x48, 0x06, 0x72, 0xb3, 0xe1, 0xc2, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0xf0, 0x92, 0x19, 0xab, 0x0d, 0x5e, 0x32, 0x63, 0x75, 0x38, 0xc5, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x18, 0x37, 0x90, 0x19, 0x8c, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0b, 0x86, 0xc9, 0x40, 0x5a, 0x30, 0xcc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x60, 0x48, 0x0e, 0xde, 0xa9, 0x66, 0x35, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x05, 0xc3, 0x66, 0x20, 0x2d, 0x18, 0x66, 0x07, 0x2f, 0x0a, 0x21, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0b, 0x86, 0xdd, 0x40, 0x5a, 0x30, 0xac, 0x0f, 0x5e, 0x35, 0x09, 0x70, 0x1c, 0x3a, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0xef, 0x32, 0xb3, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x0b, 0x86, 0xc9, 0x40, 0x5e, 0x30, 0xcc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x60, 0x48, 0x0e, 0xde, 0x97, 0x67, 0x35, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x05, 0xc3, 0x66, 0x20, 0x2f, 0x18, 0x66, 0x07, 0x2f, 0x0a, 0x21, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x0b, 0x86, 0xdd, 0x40, 0x5e, 0x30, 0xac, 0x0f, 0x5e, 0x35, 0x09, 0x70, 0x1c, 0x3a, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0xbc, 0xcb, 0xcc, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0c, 0x86, 0xc9, 0x40, 0x62, 0x30, 0xcc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x60, 0x48, 0x0e, 0xde, 0x85, 0x68, 0x35, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x06, 0xc3, 0x66, 0x20, 0x31, 0x18, 0x66, 0x07, 0x2f, 0x0a, 0x21, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0c, 0x86, 0xdd, 0x40, 0x62, 0x30, 0xac, 0x0f, 0x5e, 0x35, 0x09, 0x70, 0x1c, 0x3a, 0xb4, 0x00, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xaa, 0x31, 0x6e, 0x20, 0xe3, 0x18, 0xb2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x63, 0x88, 0x07, 0x52, 0x8d, 0x61, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x1a, 0x43, 0x72, 0xf0, 0x44, 0x4d, 0xab, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd5, 0x18, 0xf2, 0x81, 0x54, 0x63, 0xd8, 0x1c, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd5, 0x18, 0x46, 0x03, 0xa9, 0xc6, 0x30, 0x1c, 0x24, 0x03, 0x7d, 0xef, 0x0e, 0x2b, 0xb4, 0xc7, 0xa1, 0x43, 0x1a, 0x6e, 0x90, 0x6d, 0xf0, 0x20, 0x4b, 0xab, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd7, 0x18, 0x37, 0x90, 0x71, 0x8c, 0x1f, 0x76, 0x83, 0xd1, 0x8b, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6c, 0x8c, 0x3b, 0x78, 0x6d, 0xaa, 0xd5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x31, 0xc4, 0x03, 0xc9, 0xc6, 0x50, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x1b, 0x43, 0x72, 0xf0, 0xb2, 0x57, 0xab, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd9, 0x18, 0xf2, 0x81, 0x64, 0x63, 0xd8, 0x1c, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x53, 0xe0, 0x97, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x31, 0x8c, 0x06, 0x92, 0x8d, 0xa1, 0x69, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd9, 0x18, 0xa6, 0x03, 0xc9, 0xc6, 0x30, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x8d, 0x61, 0x75, 0xf0, 0xc2, 0x5e, 0xab, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0x8f, 0x2b, 0xb5, 0x3a, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0x0f, 0xc9, 0xb5, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x8d, 0xa1, 0x64, 0x20, 0xd9, 0x18, 0x8a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x63, 0xd8, 0x1f, 0x3c, 0xa3, 0xd8, 0x6a, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0xf8, 0xee, 0xef, 0x90, 0xad, 0x38, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x4d, 0x81, 0x06, 0xd9, 0x06, 0xcf, 0x58, 0xb5, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x36, 0x86, 0x78, 0x20, 0xdb, 0x18, 0x26, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb6, 0x31, 0x24, 0x07, 0xcf, 0x72, 0xb6, 0x3a, 0x78, 0x6d, 0x83, 0xd4, 0x20, 0xdb, 0xe0, 0x19, 0xab, 0x56, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xc6, 0x10, 0x0f, 0xa4, 0x1b, 0xc3, 0x6e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x37, 0x86, 0xe4, 0xe0, 0xcd, 0xd4, 0x56, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xba, 0x31, 0xe4, 0x03, 0xe9, 0xc6, 0xb0, 0x39, 0x78, 0x3f, 0x42, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xba, 0x31, 0x8c, 0x06, 0xd2, 0x8d, 0x61, 0x36, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa5, 0x01, 0x34, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x58, 0xc2, 0xff, 0x33, 0xc8, 0x36, 0x78, 0xc6, 0xaa, 0xd5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xbe, 0x31, 0xc4, 0x03, 0xf9, 0xc6, 0x30, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x8d, 0x21, 0x39, 0x78, 0xd9, 0xb9, 0xd5, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x96, 0x06, 0xd0, 0x1c, 0x24, 0x0d, 0x20, 0x1c, 0x87, 0x06, 0xd9, 0x06, 0xcf, 0x58, 0xb5, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x8e, 0x21, 0x1e, 0x48, 0x38, 0x86, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x70, 0x0c, 0xc9, 0xc1, 0x23, 0xe0, 0xad, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x63, 0xc8, 0x07, 0x12, 0x8e, 0x61, 0x73, 0xf0, 0x7e, 0x84, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x63, 0x18, 0x0d, 0x24, 0x1c, 0xc3, 0x6e, 0x10, 0x6c, 0xf0, 0xb0, 0xbd, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x8b, 0x9d, 0x65, 0x0e, 0xa9, 0x9a, 0xe3, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0xd0, 0xe8, 0x84, 0xd2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6b, 0x0c, 0xf1, 0x40, 0xae, 0x31, 0x2c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x63, 0x48, 0x0e, 0xde, 0x1d, 0x70, 0x35, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0xc1, 0xeb, 0xa4, 0x37, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x16, 0x07, 0x7c, 0xb3, 0xb0, 0x31, 0xfa, 0x20, 0x00, 0xee, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xde, 0x32, 0x6e, 0x20, 0x77, 0x19, 0x3f, 0xec, 0xc2, 0x2d, 0x06, 0xfc, 0x70, 0x6f, 0x6b, 0x65, 0x2d, 0x61, 0x63, 0xeb, 0x21, 0x9a, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x65, 0x98, 0x0d, 0xe4, 0x2d, 0x43, 0xcb, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0xe1, 0x17, 0x7e, 0x83, 0xe7, 0xf5, 0x32, 0x1d, 0xbc, 0x42, 0x2b, 0xe1, 0x60, 0x24, 0xe0, 0x1c, 0x1a, 0xb5, 0x0c, 0xbb, 0x70, 0x1b, 0xbc, 0x72, 0xe1, 0xea, 0x20, 0xa4, 0xc0, 0x0f, 0xc6, 0xc2, 0xe8, 0xb0, 0x0b, 0xb7, 0x18, 0xe0, 0x71, 0x17, 0x46, 0x37, 0x86, 0xd6, 0x12, 0x36, 0xb6, 0x1e, 0xa2, 0xb9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x5c, 0x86, 0xdd, 0x40, 0xe2, 0x32, 0xd4, 0x1c, 0xbc, 0xff, 0xe1, 0x6a, 0xd8, 0x85, 0xdb, 0xe0, 0x3d, 0x15, 0x57, 0x07, 0x21, 0x05, 0x7e, 0x30, 0x16, 0x46, 0x87, 0x5d, 0xb8, 0xc5, 0xc0, 0x5f, 0x4b, 0x1b, 0x5b, 0x0f, 0xd1, 0x5c, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x2e, 0xc3, 0x64, 0x20, 0x73, 0x19, 0x1a, 0x0e, 0xde, 0xff, 0x70, 0x35, 0xec, 0xc2, 0x6d, 0xf0, 0x44, 0x8e, 0xab, 0x83, 0x90, 0x02, 0x3f, 0x18, 0x0b, 0xa3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x32, 0x24, 0x03, 0xa9, 0xcb, 0x50, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xba, 0x0c, 0xd1, 0x40, 0xea, 0x32, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x8e, 0x07, 0x8f, 0x3a, 0xb8, 0xda, 0xe0, 0x8d, 0x28, 0x57, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x80, 0x91, 0xab, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x65, 0x58, 0x0c, 0xa4, 0x2e, 0xc3, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x5d, 0x86, 0xc1, 0xc1, 0xdb, 0x59, 0xae, 0x0e, 0x1e, 0x7b, 0x54, 0x34, 0xc8, 0x36, 0x78, 0xc0, 0xc8, 0xd5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x32, 0xec, 0x06, 0x52, 0x97, 0x61, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x2e, 0xc3, 0xec, 0xe0, 0x69, 0x33, 0x57, 0x83, 0x60, 0x83, 0xd7, 0xbe, 0x22, 0x1d, 0x3a, 0x11, 0x0d, 0xb2, 0x0d, 0x1e, 0x30, 0x72, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x2e, 0xc3, 0x7a, 0x20, 0x75, 0x19, 0x1a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x65, 0x18, 0x1f, 0x3c, 0x4f, 0xe7, 0x6a, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0xd9, 0x60, 0xf1, 0x12, 0xd4, 0xc1, 0x78, 0xd7, 0x39, 0x74, 0x3f, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x52, 0xff, 0x31, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x02, 0x32, 0x6e, 0x20, 0x07, 0x19, 0x3f, 0xec, 0x86, 0x8e, 0x23, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xc8, 0xb8, 0x83, 0x67, 0x0e, 0x5d, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x20, 0x43, 0x3c, 0x90, 0x81, 0x0c, 0xcb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x03, 0x19, 0x92, 0x81, 0x0c, 0x64, 0x68, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x90, 0x21, 0x1f, 0xc8, 0x40, 0x86, 0xcd, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x90, 0x61, 0x34, 0x90, 0x81, 0x0c, 0xc3, 0x83, 0xc7, 0x95, 0x5a, 0x1d, 0x87, 0x0e, 0x69, 0xb8, 0x41, 0xb6, 0xc1, 0xd3, 0x89, 0xae, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x64, 0x88, 0x07, 0x52, 0x90, 0x61, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x20, 0x43, 0x32, 0x90, 0x82, 0x0c, 0x55, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0a, 0x32, 0xe4, 0x03, 0x29, 0xc8, 0xb0, 0x39, 0x78, 0x3f, 0x42, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0a, 0x32, 0x8c, 0x06, 0x52, 0x90, 0x61, 0x77, 0xf0, 0xec, 0x7d, 0xab, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0x41, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x40, 0x86, 0x78, 0x20, 0x01, 0x19, 0x16, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x02, 0x32, 0x24, 0x03, 0x09, 0xc8, 0xd0, 0x34, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0xc1, 0x3b, 0xd3, 0x2f, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x36, 0xa4, 0x03, 0x29, 0xd9, 0xf0, 0x66, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc9, 0x86, 0x78, 0x20, 0x25, 0x1b, 0x26, 0x07, 0x6f, 0x04, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x6c, 0xd8, 0x0c, 0xa4, 0x64, 0xc3, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x25, 0x1b, 0x66, 0x03, 0x29, 0xd9, 0x30, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xb2, 0x61, 0x74, 0xf0, 0x72, 0xbd, 0xab, 0x83, 0xc7, 0xb8, 0xf6, 0x0c, 0xb2, 0x0d, 0x5e, 0x68, 0x77, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x64, 0xc3, 0x76, 0x20, 0x25, 0x1b, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x36, 0x2c, 0x0f, 0x9e, 0x15, 0x78, 0x35, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa5, 0x01, 0x34, 0x87, 0x7c, 0xed, 0x71, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x16, 0xd7, 0xa0, 0xa8, 0x16, 0x3c, 0x18, 0x63, 0x68, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x6d, 0x48, 0x07, 0x12, 0xb6, 0xe1, 0xce, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb0, 0x0d, 0xf1, 0x40, 0xc2, 0x36, 0x4c, 0x0e, 0x5e, 0xa2, 0x51, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x36, 0x6c, 0x06, 0x12, 0xb6, 0x61, 0x77, 0xd0, 0x14, 0xf7, 0xd2, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x6d, 0x18, 0x0e, 0x24, 0x6c, 0x43, 0xc3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xd8, 0x86, 0xe5, 0x40, 0xc2, 0x36, 0xac, 0x0f, 0xde, 0x8f, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb0, 0x0d, 0xf3, 0x81, 0x84, 0x6d, 0x28, 0x38, 0x78, 0x25, 0xb8, 0xd5, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x1c, 0x3a, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0xaf, 0x20, 0x58, 0x9c, 0x0d, 0x1e, 0x26, 0x16, 0xd4, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x43, 0xc6, 0x0d, 0x64, 0x23, 0x43, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x87, 0x0c, 0xc9, 0x40, 0x1e, 0x32, 0x64, 0x87, 0x66, 0x91, 0x83, 0x6c, 0x83, 0x57, 0x93, 0x5e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xc8, 0xb8, 0x81, 0x6c, 0x64, 0xfc, 0xb0, 0x0b, 0xb7, 0xc1, 0x6b, 0xc1, 0x82, 0x0e, 0x8d, 0x04, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x91, 0x21, 0x19, 0xc8, 0x45, 0x86, 0xae, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x64, 0x88, 0x06, 0x72, 0x91, 0x21, 0x1f, 0x76, 0xe1, 0x36, 0x34, 0x12, 0x3c, 0x78, 0x2d, 0x58, 0xd0, 0x06, 0xaf, 0x05, 0x0b, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x37, 0xbb, 0x5e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x22, 0xc3, 0x6c, 0x20, 0x17, 0x19, 0x96, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2e, 0x32, 0x0c, 0x0e, 0x9e, 0x8b, 0x7b, 0x35, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc5, 0xce, 0x32, 0x87, 0xc6, 0x45, 0xc7, 0xa1, 0x41, 0xb6, 0xc1, 0x9b, 0x5d, 0xaf, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x64, 0x28, 0x18, 0xc8, 0x45, 0x86, 0xaa, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x17, 0x19, 0xa6, 0x07, 0x8f, 0x0a, 0xbe, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x91, 0xa1, 0x61, 0x20, 0x17, 0x19, 0x5a, 0x0e, 0xde, 0x8f, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8b, 0x0c, 0x35, 0x03, 0xb9, 0xc8, 0xd0, 0x74, 0xf0, 0xec, 0x7d, 0xab, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0xfd, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x46, 0x86, 0x64, 0x20, 0x19, 0x19, 0xa6, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xc8, 0x10, 0x0d, 0x24, 0x23, 0x43, 0x3e, 0xec, 0xc2, 0x6d, 0x68, 0x24, 0x78, 0xf0, 0x24, 0xb1, 0xa0, 0x0d, 0x9e, 0x24, 0x16, 0x74, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0xaf, 0x79, 0xbe, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x91, 0x61, 0x36, 0x90, 0x8c, 0x0c, 0xcb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x19, 0x19, 0x06, 0x07, 0xaf, 0xc8, 0xbe, 0x1a, 0x04, 0x1b, 0x3c, 0x6c, 0xaf, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x62, 0x67, 0x99, 0x43, 0xc7, 0xb0, 0xe3, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0xe2, 0x41, 0xb3, 0x3f, 0x5e, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6b, 0x17, 0x37, 0x90, 0xcd, 0x8b, 0x1f, 0x76, 0x61, 0x37, 0x58, 0x62, 0x69, 0xb5, 0x21, 0x86, 0x07, 0x0f, 0xda, 0x1a, 0x5a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xed, 0xc2, 0x76, 0x20, 0x6f, 0x17, 0x4a, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0xbf, 0xc1, 0xbb, 0x0a, 0x88, 0x06, 0xc9, 0xc0, 0xd3, 0x55, 0xc7, 0xe3, 0x43, 0xa3, 0x96, 0x61, 0x17, 0x76, 0xe1, 0x36, 0x58, 0x6e, 0x69, 0x75, 0x10, 0x52, 0xe0, 0x1b, 0x62, 0x38, 0xdc, 0x06, 0x8f, 0xdb, 0x1a, 0x3a, 0x08, 0x29, 0xf0, 0x83, 0xb1, 0x30, 0x3a, 0xec, 0xc2, 0x2d, 0x06, 0xf8, 0xcc, 0x95, 0xd1, 0xb5, 0x8c, 0xbd, 0xb9, 0x99, 0xa5, 0x9d, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xee, 0x42, 0x32, 0x90, 0xbd, 0x0b, 0x1d, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xbb, 0x10, 0x0d, 0x64, 0xef, 0xc2, 0x6a, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x57, 0xb9, 0x5f, 0x6d, 0xf0, 0x2a, 0xf7, 0xab, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x1c, 0xfc, 0xd5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbd, 0x0b, 0xbb, 0x81, 0xec, 0x5d, 0xa8, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x77, 0x61, 0x76, 0xf0, 0x20, 0xfd, 0xab, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x60, 0xab, 0xeb, 0x78, 0x7c, 0xe8, 0xa0, 0x31, 0xec, 0xc2, 0x2d, 0x06, 0xfc, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0xf3, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xbc, 0x90, 0x0c, 0x24, 0xf0, 0x42, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x02, 0x2f, 0x44, 0x03, 0x09, 0xbc, 0xb0, 0x19, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xb5, 0xff, 0x57, 0x1b, 0xbc, 0xf6, 0xff, 0xea, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0x18, 0x80, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xf0, 0xc2, 0x70, 0x20, 0x81, 0x17, 0x0a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x5e, 0x18, 0x1d, 0x3c, 0x6b, 0x01, 0x6b, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xe0, 0x85, 0xe5, 0x40, 0x02, 0x2f, 0x8c, 0x0f, 0x5e, 0x14, 0x42, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc0, 0x0b, 0xeb, 0x81, 0x04, 0x5e, 0xd8, 0x1f, 0xbc, 0x12, 0xdc, 0xea, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x74, 0xd0, 0x18, 0x76, 0xe1, 0x16, 0x03, 0x7e, 0xb9, 0xb2, 0x39, 0xb8, 0x37, 0xb7, 0xb9, 0xf2, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x5e, 0x48, 0x06, 0x72, 0x78, 0xa1, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x87, 0x17, 0xa2, 0x81, 0x1c, 0x5e, 0xd8, 0x0c, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0xa8, 0x0c, 0xac, 0x0d, 0x1e, 0x95, 0x81, 0x75, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x2f, 0xd9, 0xc0, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x78, 0x61, 0x35, 0x90, 0xc3, 0x0b, 0x25, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0e, 0x2f, 0x8c, 0x0e, 0x5e, 0x4f, 0x82, 0x35, 0x08, 0x36, 0x78, 0x43, 0xa1, 0xcf, 0xa1, 0x83, 0xc6, 0xb0, 0x0b, 0xb7, 0x18, 0xf0, 0x88, 0xbd, 0xd5, 0xb9, 0x91, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xf1, 0x42, 0x32, 0x90, 0xc9, 0x0b, 0x2d, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xbc, 0x10, 0x0d, 0x64, 0xf2, 0xc2, 0x60, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x77, 0xa6, 0x60, 0x6d, 0xf0, 0xce, 0x14, 0xac, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0xc4, 0x0a, 0xd6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x26, 0x2f, 0x4c, 0x07, 0x32, 0x79, 0x61, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xf2, 0xc2, 0xe2, 0xe0, 0xe9, 0x34, 0x58, 0x07, 0xc3, 0x8b, 0x77, 0x90, 0x6d, 0xf0, 0x88, 0x15, 0xac, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x93, 0x17, 0xd6, 0x03, 0x99, 0xbc, 0x50, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xf2, 0xc2, 0xf8, 0xe0, 0x45, 0x3b, 0x58, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0x96, 0xa8, 0x77, 0x1d, 0x5a, 0x80, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xbc, 0x90, 0x0c, 0x24, 0xf3, 0xc2, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x99, 0x17, 0xa2, 0x81, 0x64, 0x5e, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x1c, 0x0f, 0x1a, 0xfe, 0xf1, 0xda, 0xe0, 0xd1, 0x45, 0x58, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x24, 0x20, 0xac, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x99, 0x17, 0x16, 0x03, 0xc9, 0xbc, 0xb0, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x79, 0x61, 0x70, 0xf0, 0x12, 0x25, 0xac, 0x83, 0x67, 0xe2, 0x0b, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x57, 0x10, 0x2c, 0xce, 0x1c, 0xbc, 0x86, 0xe9, 0x68, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x0e, 0xe3, 0x06, 0x12, 0x89, 0xf1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xc3, 0x30, 0x19, 0xc8, 0x1d, 0x86, 0x8e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x77, 0x18, 0x92, 0x83, 0x47, 0x51, 0x61, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xc3, 0xb0, 0x19, 0xc8, 0x1d, 0x86, 0xd9, 0xc1, 0xab, 0x9a, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1d, 0x86, 0xdd, 0x40, 0xee, 0x30, 0x4c, 0x0f, 0x9e, 0xbd, 0x6f, 0x75, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3b, 0x0c, 0xdb, 0x81, 0xdc, 0x61, 0xa8, 0x18, 0x24, 0x03, 0x4b, 0x77, 0xc7, 0xe3, 0xe3, 0xd0, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x78, 0x04, 0x14, 0xd6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfa, 0x30, 0x4c, 0x06, 0xd2, 0x87, 0xa1, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x1f, 0x86, 0xe4, 0xe0, 0x89, 0x68, 0x58, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfa, 0x30, 0x6c, 0x06, 0xd2, 0x87, 0x61, 0x76, 0xf0, 0xaa, 0x26, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x87, 0x61, 0x37, 0x90, 0x3e, 0x0c, 0xd3, 0x83, 0x67, 0xef, 0x5b, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x0f, 0xc3, 0x76, 0x20, 0x7d, 0x18, 0x2a, 0x0e, 0x4e, 0xbb, 0xb4, 0xc7, 0xa1, 0x43, 0x53, 0xa0, 0x41, 0xb6, 0xc1, 0x23, 0xa0, 0xb0, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x88, 0x61, 0x32, 0x90, 0x41, 0x0c, 0x25, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x06, 0x31, 0x24, 0x07, 0xaf, 0xe3, 0xc3, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x88, 0x61, 0x33, 0x90, 0x41, 0x0c, 0xb3, 0x83, 0x57, 0x35, 0x09, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x41, 0x0c, 0xbb, 0x81, 0x0c, 0x62, 0xd8, 0x1e, 0xbc, 0x3a, 0x5c, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x06, 0x31, 0x8c, 0x07, 0x32, 0x88, 0xa1, 0x63, 0x90, 0x0c, 0x08, 0xba, 0xae, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0x89, 0x68, 0x90, 0x6d, 0xf0, 0x08, 0x28, 0xac, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8f, 0x18, 0x26, 0x03, 0x79, 0xc4, 0xd0, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x11, 0x43, 0x72, 0xf0, 0xa2, 0x47, 0xac, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x62, 0x18, 0x0e, 0xe4, 0x11, 0x43, 0xc3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x47, 0x0c, 0x9b, 0x83, 0xb7, 0x51, 0x62, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xc4, 0xb0, 0x1c, 0xc8, 0x23, 0x86, 0xf5, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x88, 0x61, 0x3e, 0x90, 0x47, 0x0c, 0x05, 0x07, 0xaf, 0x04, 0xb7, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x96, 0xf0, 0xff, 0x0c, 0xb2, 0x0d, 0xde, 0xd7, 0x88, 0x35, 0xc8, 0x36, 0x78, 0x04, 0x24, 0xd6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1e, 0x31, 0xf4, 0x0c, 0xe4, 0x11, 0x43, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x47, 0x0c, 0x15, 0x07, 0x6f, 0x2e, 0xc5, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x88, 0xa1, 0x68, 0x20, 0x8f, 0x18, 0xca, 0x0e, 0xde, 0x8f, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x47, 0x0c, 0x6d, 0x03, 0x79, 0xc4, 0xd0, 0x77, 0xf0, 0x4a, 0x70, 0xab, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xe0, 0x3d, 0x87, 0x19, 0x83, 0x6c, 0x83, 0xf7, 0x35, 0x62, 0x0d, 0xb2, 0x0d, 0x1e, 0x01, 0x89, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x11, 0x43, 0xe5, 0x40, 0x1e, 0x31, 0xd4, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xc4, 0xd0, 0x78, 0xf0, 0x9e, 0x5b, 0xac, 0x41, 0xb0, 0xc1, 0xeb, 0x90, 0xad, 0x0e, 0x1a, 0x9d, 0x50, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x96, 0x85, 0xc1, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x6a, 0xdc, 0x40, 0x4e, 0x35, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8f, 0x1a, 0x06, 0x03, 0x79, 0xd4, 0xd0, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x51, 0x43, 0x72, 0xf0, 0xf2, 0x60, 0xac, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8f, 0x1a, 0x16, 0x03, 0x79, 0xd4, 0xb0, 0x3a, 0x78, 0x3f, 0x42, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x51, 0xc3, 0x6c, 0x20, 0x8f, 0x1a, 0xaa, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xa8, 0x61, 0x3b, 0x90, 0x47, 0x0d, 0xfb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8f, 0x1a, 0x76, 0x07, 0xaf, 0x7e, 0xc6, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0x94, 0xfe, 0x7d, 0x07, 0xe3, 0x5d, 0xe7, 0x90, 0x86, 0x1b, 0x64, 0x1b, 0x3c, 0x6e, 0x19, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xa3, 0x86, 0x96, 0x81, 0x3c, 0x6a, 0x68, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xa8, 0xa1, 0xe0, 0xe0, 0x01, 0xd8, 0x58, 0x83, 0x60, 0x83, 0xb7, 0x4c, 0x63, 0x1d, 0x3a, 0x68, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0x87, 0x34, 0xdc, 0x20, 0xdb, 0xe0, 0xa5, 0xbd, 0x58, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xd4, 0x90, 0x0f, 0xa4, 0x52, 0xc3, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xa5, 0x86, 0xe4, 0xe0, 0x4d, 0xe0, 0x58, 0xc3, 0x6f, 0x48, 0x2e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xd4, 0x30, 0x38, 0x78, 0x13, 0x38, 0xd6, 0xe1, 0x68, 0x1f, 0x64, 0x1b, 0xbc, 0xb4, 0x17, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9b, 0x1a, 0xd2, 0x81, 0x6c, 0x6a, 0x88, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x6a, 0x48, 0x0e, 0x1e, 0x9a, 0x8e, 0x75, 0xf0, 0x1e, 0xaf, 0x8c, 0x41, 0xb6, 0xc1, 0x4b, 0x7b, 0xb1, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x6a, 0x98, 0x0c, 0xa4, 0x54, 0xc3, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xa9, 0x86, 0xe4, 0xe0, 0x0d, 0xf0, 0x58, 0xc3, 0x6e, 0x70, 0x3c, 0x5e, 0xdf, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0xc3, 0xd1, 0x7e, 0x30, 0x32, 0x7b, 0x0f, 0x6d, 0x1e, 0x0f, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0xd9, 0xa0, 0x09, 0xed, 0xeb, 0x83, 0x31, 0x86, 0xb6, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x76, 0x71, 0x03, 0x39, 0xbb, 0x90, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xec, 0x42, 0x3c, 0x90, 0xb0, 0x0b, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb0, 0x0b, 0xc9, 0xc1, 0x2b, 0xf9, 0xb1, 0x86, 0xdd, 0x90, 0xc7, 0xda, 0x10, 0xc3, 0x61, 0x37, 0x34, 0x5c, 0x3c, 0xb4, 0x79, 0x1c, 0x64, 0x1b, 0xbc, 0x09, 0x1f, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xd9, 0xc5, 0x0d, 0xe4, 0xec, 0xe2, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x5d, 0xdc, 0xc1, 0x5b, 0x08, 0xb2, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x5d, 0x48, 0x06, 0x52, 0x76, 0xa1, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x65, 0x17, 0xa2, 0x81, 0x94, 0x5d, 0x98, 0x0c, 0xbb, 0x70, 0x1b, 0x1a, 0x09, 0x8e, 0x07, 0x4d, 0x68, 0x5f, 0x6f, 0xf0, 0x86, 0x86, 0xac, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0xd9, 0x41, 0xd6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb2, 0x0b, 0xa3, 0x81, 0x94, 0x5d, 0xe8, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x76, 0x61, 0x73, 0xf0, 0xb0, 0x88, 0xac, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0xc3, 0x6f, 0xf0, 0xf2, 0xc1, 0x9e, 0x83, 0x25, 0x66, 0x29, 0x87, 0x16, 0x60, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x07, 0x05, 0xb5, 0xd8, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xda, 0xc6, 0x0d, 0xe4, 0x6d, 0xe3, 0x87, 0xdd, 0x90, 0xc7, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xda, 0x86, 0x64, 0x20, 0x6b, 0x1b, 0x5e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x6d, 0x43, 0x34, 0x90, 0xb5, 0x0d, 0xe1, 0xa1, 0x59, 0xe4, 0x20, 0xdb, 0xe0, 0xf5, 0x1b, 0x59, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x36, 0xe4, 0x03, 0x59, 0xdb, 0xb0, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xb6, 0x21, 0x3d, 0x78, 0x01, 0x49, 0xd6, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0xa6, 0xb8, 0x97, 0x0e, 0x1d, 0x34, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x6d, 0x48, 0x06, 0xd2, 0xb6, 0xe1, 0xc5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xda, 0x36, 0x44, 0x03, 0x69, 0xdb, 0x10, 0x1e, 0xfa, 0x34, 0x0e, 0xb2, 0x0d, 0x5e, 0x90, 0x92, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb6, 0x0d, 0xf9, 0x40, 0xda, 0x36, 0x6c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x6d, 0x48, 0x0f, 0xde, 0x11, 0x93, 0x35, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x08, 0xbe, 0xae, 0xe3, 0xf1, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0xe0, 0x05, 0x29, 0x59, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xda, 0x36, 0xcc, 0x06, 0xd2, 0xb6, 0x61, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x6d, 0xc3, 0xe8, 0xe0, 0x09, 0x39, 0x59, 0x83, 0x60, 0x83, 0x17, 0x94, 0x78, 0x1c, 0x5a, 0x80, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xef, 0x18, 0x06, 0x03, 0x79, 0xc7, 0xd0, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x77, 0x0c, 0x93, 0x81, 0xbc, 0x63, 0xd8, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xc7, 0xb0, 0x38, 0x78, 0xe0, 0x50, 0xd6, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x77, 0x0c, 0x9b, 0x81, 0xbc, 0x63, 0x98, 0x0d, 0x92, 0x81, 0x77, 0xfa, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xde, 0x31, 0xec, 0x06, 0xf2, 0x8e, 0x61, 0x7a, 0xf0, 0xec, 0x7d, 0xab, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0x90, 0x86, 0x1b, 0x64, 0x1b, 0xbc, 0xe3, 0x27, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x3b, 0x86, 0xf5, 0x40, 0xde, 0x31, 0xd4, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xc7, 0x30, 0x3e, 0x78, 0x17, 0x55, 0xd6, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x77, 0x0c, 0xf3, 0x81, 0xbc, 0x63, 0x68, 0x38, 0x78, 0x55, 0x93, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xc7, 0x50, 0x31, 0x90, 0x77, 0x0c, 0x2d, 0x07, 0xcf, 0xde, 0xb7, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x3b, 0x86, 0x9a, 0x81, 0xbc, 0x63, 0x68, 0x1b, 0x24, 0x03, 0xd5, 0xea, 0x78, 0x7c, 0x1c, 0x3a, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x16, 0x37, 0x78, 0xcf, 0x8c, 0xd5, 0xe1, 0x14, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xd9, 0x90, 0x0e, 0x64, 0x67, 0xc3, 0x97, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x6c, 0x18, 0x0c, 0x64, 0x67, 0xc3, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xce, 0x86, 0xf8, 0xe0, 0xad, 0x6c, 0x59, 0x83, 0x60, 0x83, 0xe7, 0x50, 0x2b, 0x1d, 0xd2, 0x70, 0x83, 0x6c, 0x83, 0x27, 0xa1, 0x65, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x67, 0xc3, 0x6e, 0x20, 0x3b, 0x1b, 0xb6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x76, 0x36, 0xac, 0x0e, 0x9e, 0x3b, 0x97, 0x35, 0x08, 0x36, 0x78, 0xa6, 0x31, 0xd4, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0xe0, 0x49, 0x68, 0x59, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x76, 0x36, 0xcc, 0x07, 0xb2, 0xb3, 0xa1, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xce, 0x86, 0xf1, 0xc1, 0x93, 0xf5, 0xb2, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x6c, 0xd8, 0x0f, 0x64, 0x67, 0x43, 0xc7, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xb3, 0xa1, 0x64, 0x20, 0x3b, 0x1b, 0x8a, 0x0e, 0xde, 0x77, 0xdb, 0x73, 0x1c, 0x3a, 0xb4, 0x00, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xe1, 0x90, 0x0e, 0xe4, 0x86, 0xc3, 0x8b, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x40, 0xe8, 0xf7, 0x1d, 0x8c, 0x77, 0x9d, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x71, 0xc0, 0x7f, 0xab, 0x93, 0x9b, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xc9, 0xb8, 0x81, 0xfc, 0x64, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9b, 0x8c, 0x3b, 0x78, 0x50, 0x64, 0xd6, 0xb0, 0x0b, 0xb7, 0x78, 0xf0, 0x20, 0xc7, 0xac, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x93, 0x21, 0x19, 0x48, 0x4e, 0x86, 0x23, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xc9, 0x10, 0x0d, 0x24, 0x27, 0x43, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x3b, 0x29, 0xb3, 0x36, 0x78, 0x27, 0x65, 0xd6, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0xb9, 0x32, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x4e, 0x86, 0xc1, 0x40, 0x72, 0x32, 0x2c, 0x0e, 0x86, 0xe6, 0xef, 0xb0, 0x1b, 0xbc, 0x56, 0x3c, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3b, 0x19, 0x92, 0x81, 0xec, 0x64, 0x78, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9d, 0x0c, 0xd1, 0x40, 0x76, 0x32, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0x5c, 0x3c, 0x68, 0x83, 0x97, 0x8b, 0x07, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x3b, 0x43, 0xb3, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x64, 0x18, 0x0d, 0x64, 0x27, 0xc3, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4e, 0x86, 0xc1, 0xc1, 0xdb, 0x56, 0xb3, 0x06, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x70, 0xa8, 0xb7, 0x3d, 0xe4, 0x6b, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x32, 0x24, 0x03, 0xe9, 0xc9, 0x70, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3d, 0x19, 0xa2, 0x81, 0xf4, 0x64, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x1c, 0x03, 0x5f, 0xae, 0x2c, 0x8c, 0xdd, 0xe0, 0xf1, 0xb6, 0x59, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0xb0, 0xd8, 0xac, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3d, 0x19, 0x46, 0x03, 0xe9, 0xc9, 0x30, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x93, 0x61, 0x70, 0xf0, 0xb2, 0xdd, 0xac, 0x83, 0x27, 0xba, 0x66, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3f, 0x1b, 0xd2, 0x81, 0xfc, 0x6c, 0x78, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9f, 0x0d, 0x83, 0x81, 0xfc, 0x6c, 0x98, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xd9, 0x10, 0x1f, 0x3c, 0xa8, 0x38, 0x6b, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xcf, 0x86, 0xc5, 0x40, 0x7e, 0x36, 0xac, 0x0e, 0xde, 0x8f, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9f, 0x0d, 0xb3, 0x81, 0xfc, 0x6c, 0x58, 0x1e, 0xbc, 0x6b, 0x75, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0xef, 0x06, 0xce, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xb3, 0x61, 0x3d, 0x90, 0x9f, 0x0d, 0x35, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7e, 0x36, 0x6c, 0x0f, 0x5e, 0x59, 0x9d, 0x35, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x67, 0xc3, 0x7c, 0x20, 0x3f, 0x1b, 0x2a, 0x0e, 0xde, 0x08, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9f, 0x0d, 0x1d, 0x03, 0xf9, 0xd9, 0xd0, 0x72, 0xf0, 0x4a, 0x70, 0xab, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x7b, 0xe3, 0x06, 0xd2, 0xbd, 0xa1, 0x6f, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xde, 0x30, 0x1f, 0x48, 0xf7, 0x86, 0xba, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xee, 0x0d, 0xfb, 0x81, 0x74, 0x6f, 0xe8, 0x38, 0x68, 0xa0, 0xe2, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x6f, 0x28, 0x19, 0x48, 0xf7, 0x86, 0xa6, 0x83, 0xd7, 0xaa, 0x58, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf7, 0x86, 0xaa, 0x81, 0x74, 0x6f, 0x68, 0x3b, 0x38, 0xff, 0x84, 0x1f, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xbd, 0x21, 0x1d, 0x48, 0xf7, 0x86, 0xf5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf7, 0x86, 0x78, 0x20, 0xdd, 0x1b, 0x26, 0x07, 0x0d, 0x54, 0xbc, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xee, 0x0d, 0x9b, 0x81, 0x74, 0x6f, 0x18, 0x1e, 0x3c, 0xd6, 0xc2, 0x6a, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xba, 0x37, 0x2c, 0x07, 0xd2, 0xbd, 0x61, 0x7c, 0xb0, 0x7a, 0x13, 0xed, 0x38, 0x34, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xba, 0x37, 0x04, 0x03, 0xe9, 0xde, 0x10, 0x1e, 0xb4, 0xc1, 0xf0, 0x7e, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x12, 0x0c, 0xf9, 0x40, 0x4a, 0x30, 0xec, 0x06, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x31, 0xe0, 0xa5, 0x7b, 0x93, 0x4b, 0x3b, 0x4b, 0x73, 0x0f, 0xa9, 0x9a, 0xe3, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x9f, 0x71, 0x03, 0x79, 0xd0, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x68, 0x88, 0x07, 0x32, 0xa0, 0x61, 0x37, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x3f, 0x43, 0x72, 0xf0, 0x44, 0x0b, 0xad, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x03, 0x1a, 0xf2, 0x81, 0x0c, 0x68, 0xd8, 0x1c, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x03, 0x1a, 0x46, 0x03, 0x19, 0xd0, 0x30, 0x3b, 0x78, 0x25, 0xb8, 0xd5, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x48, 0xc3, 0x0d, 0xb2, 0x0d, 0xde, 0x24, 0xa1, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x41, 0x43, 0x3c, 0x90, 0x06, 0x0d, 0xbb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x09, 0x1a, 0x92, 0x83, 0x57, 0x9b, 0x68, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xd0, 0x90, 0x0f, 0xa4, 0x41, 0xc3, 0xe6, 0xe0, 0x8d, 0x00, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xd0, 0x30, 0x1a, 0x48, 0x83, 0x86, 0xd9, 0xc1, 0x2b, 0xc1, 0xad, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x71, 0x83, 0x47, 0x25, 0x5e, 0xcd, 0xc1, 0x93, 0xcd, 0xb2, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x16, 0x36, 0xa4, 0x03, 0x59, 0xd8, 0x70, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0b, 0x1b, 0x06, 0x03, 0x59, 0xd8, 0x30, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xb0, 0x21, 0x3e, 0x78, 0xe1, 0x8e, 0xd6, 0x20, 0xd8, 0xe0, 0x59, 0x27, 0x59, 0x87, 0x34, 0xdc, 0x20, 0xdb, 0xe0, 0x21, 0x37, 0x5a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xd8, 0xb0, 0x1b, 0xc8, 0xc2, 0x86, 0xe5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x85, 0x0d, 0xab, 0x83, 0x47, 0x0a, 0x69, 0x0d, 0x82, 0x0d, 0x1e, 0xb6, 0xd7, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x50, 0x6f, 0x7b, 0xe8, 0x21, 0x74, 0x1c, 0x1a, 0x64, 0x1b, 0x3c, 0xe4, 0x46, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc2, 0x86, 0xf1, 0x40, 0x16, 0x36, 0x14, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xd8, 0x30, 0x3d, 0x78, 0xc7, 0x92, 0xd6, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0x60, 0xd8, 0x75, 0x1d, 0x8f, 0x0f, 0x2d, 0xc0, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x58, 0x16, 0x06, 0xb3, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xc3, 0x21, 0x1d, 0x48, 0x0d, 0x87, 0x37, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xe1, 0x30, 0x18, 0x48, 0x0d, 0x87, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1a, 0x0e, 0xf1, 0xc1, 0x63, 0xad, 0xb4, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x70, 0x58, 0x0c, 0xa4, 0x86, 0xc3, 0xea, 0xe0, 0x8d, 0x00, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xe1, 0x30, 0x1b, 0x48, 0x0d, 0x87, 0xe9, 0xc1, 0x40, 0x82, 0x3a, 0x0e, 0x1d, 0xd2, 0x70, 0x83, 0x6c, 0x83, 0x37, 0x49, 0x69, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x86, 0xc3, 0x7c, 0x20, 0x35, 0x1c, 0x2a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x70, 0x18, 0x1f, 0x3c, 0xaf, 0x4c, 0xeb, 0xe0, 0x09, 0x43, 0x47, 0x83, 0x6c, 0x83, 0x37, 0x49, 0x69, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x86, 0x43, 0xcb, 0x40, 0x6a, 0x38, 0x34, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xe1, 0xd0, 0x71, 0xf0, 0xfe, 0x35, 0xad, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0xa0, 0x7f, 0xd7, 0xf1, 0xf8, 0xd0, 0x89, 0x68, 0x90, 0x6d, 0xf0, 0x26, 0x29, 0xad, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x35, 0x1c, 0xca, 0x06, 0x52, 0xc3, 0xa1, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0d, 0x87, 0xaa, 0x83, 0xa7, 0xcf, 0x69, 0x1d, 0xbc, 0x7f, 0x45, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0x58, 0xdc, 0xe0, 0x25, 0xec, 0x41, 0x07, 0x87, 0xd3, 0x8b, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x57, 0x8d, 0x1b, 0xc8, 0xae, 0xc6, 0x0f, 0xbb, 0x70, 0x8b, 0x81, 0x3f, 0x56, 0x26, 0x47, 0x1f, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x59, 0x0d, 0xc9, 0x40, 0x66, 0x35, 0x34, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x56, 0x43, 0x34, 0x90, 0x59, 0x0d, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x6f, 0xe6, 0xd3, 0xda, 0xe0, 0xcd, 0x7c, 0x5a, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x0c, 0x3f, 0xad, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb3, 0x1a, 0x56, 0x03, 0x99, 0xd5, 0x50, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x56, 0xc3, 0xe0, 0xe0, 0xe5, 0x87, 0x5a, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x66, 0x35, 0xcc, 0x06, 0x32, 0xab, 0x61, 0x7a, 0xf0, 0x7e, 0x84, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xac, 0x86, 0xed, 0x40, 0x66, 0x35, 0xf4, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x56, 0x43, 0xc1, 0x40, 0x66, 0x35, 0x94, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xd5, 0x30, 0x3e, 0x78, 0x77, 0xa5, 0xd6, 0xc1, 0xe3, 0xa5, 0xb1, 0x06, 0xd9, 0x06, 0xaf, 0x8b, 0xd4, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xab, 0xa1, 0x6a, 0x20, 0xb3, 0x1a, 0xea, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x6a, 0x68, 0x39, 0x78, 0x16, 0xa7, 0xd6, 0xc1, 0x4b, 0xb6, 0xb1, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb9, 0x1a, 0x92, 0x81, 0xe4, 0x6a, 0xa8, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xae, 0x86, 0x68, 0x20, 0xb9, 0x1a, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xde, 0xc0, 0x1e, 0xb4, 0xc1, 0x1b, 0xd8, 0x83, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x7d, 0xa1, 0x5a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xd5, 0xb0, 0x1b, 0x48, 0xae, 0x86, 0x8e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb9, 0x1a, 0x06, 0x07, 0x8f, 0x5a, 0xd5, 0x1a, 0x76, 0xe1, 0x36, 0x78, 0x7f, 0x96, 0xd5, 0xa1, 0x91, 0xe0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x72, 0x35, 0x2c, 0x07, 0x92, 0xab, 0x61, 0x3d, 0xec, 0xc2, 0x6d, 0x68, 0x24, 0x78, 0xf0, 0xfe, 0x2c, 0xab, 0x83, 0x07, 0x7b, 0x59, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xd5, 0x30, 0x1f, 0x48, 0xae, 0x86, 0x8a, 0x61, 0x17, 0x6e, 0x43, 0x23, 0xc1, 0x83, 0xa7, 0x7e, 0x24, 0x1d, 0x3c, 0xdc, 0x24, 0x69, 0x90, 0x6d, 0xf0, 0xbe, 0x50, 0xad, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb9, 0x1a, 0x5a, 0x06, 0x92, 0xab, 0xa1, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xae, 0x86, 0x92, 0x83, 0xa7, 0xed, 0x6a, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0xa5, 0xef, 0x78, 0x7e, 0x68, 0x01, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x2c, 0xce, 0x00, 0x1e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x11, 0x1b, 0xd2, 0x81, 0x4c, 0x6c, 0x68, 0x19, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xb1, 0x61, 0x31, 0x90, 0x88, 0x0d, 0xab, 0x83, 0xf7, 0x66, 0x10, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x3c, 0x78, 0x5f, 0xb0, 0xd6, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc4, 0x86, 0xdd, 0x40, 0x22, 0x36, 0xfc, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc4, 0x86, 0xe1, 0x40, 0x22, 0x36, 0x54, 0x0c, 0xbb, 0x70, 0x1b, 0xa2, 0x39, 0x1e, 0xbc, 0x30, 0x58, 0x6b, 0x83, 0xd7, 0x48, 0x6b, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x2b, 0x99, 0xb5, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x6c, 0xe8, 0x18, 0x48, 0xc4, 0x86, 0x92, 0x83, 0xa1, 0xf9, 0x7b, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x0c, 0xfc, 0x00, 0x00, 0x80, 0x7f, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x62, 0x43, 0x7a, 0xf0, 0xa0, 0x62, 0xad, 0x61, 0x37, 0xac, 0xef, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x62, 0x43, 0x3e, 0x90, 0x89, 0x0d, 0xc3, 0x83, 0xa5, 0xa7, 0x46, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x26, 0x36, 0x2c, 0x07, 0x32, 0xb1, 0xa1, 0x64, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x78, 0x36, 0xb6, 0xd6, 0x06, 0xcf, 0xc6, 0xd6, 0x3a, 0x9c, 0x62, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9a, 0x36, 0x6e, 0x20, 0x5f, 0x1b, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa8, 0x0d, 0xe9, 0x40, 0xa2, 0x36, 0x0c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x6d, 0x48, 0x0e, 0xde, 0xc3, 0xae, 0x75, 0xf0, 0x72, 0xe5, 0xa2, 0x41, 0xb6, 0xc1, 0x03, 0xd0, 0xb5, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xb5, 0x21, 0x1d, 0xc8, 0xd5, 0x86, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xd5, 0x86, 0xe4, 0xe0, 0xb1, 0xf2, 0x5a, 0x07, 0xc3, 0x8b, 0x77, 0x90, 0x6d, 0xf0, 0x00, 0x74, 0xad, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x5d, 0x1b, 0xd2, 0x81, 0x74, 0x6d, 0x58, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xda, 0x90, 0x1c, 0x3c, 0x20, 0x5f, 0x6b, 0x10, 0x6c, 0xf0, 0xb0, 0xbd, 0x9e, 0x83, 0xc7, 0x8a, 0x73, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x6c, 0x48, 0x07, 0xd2, 0xb3, 0xe1, 0xc8, 0xc1, 0x2b, 0xc1, 0xad, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x61, 0x43, 0x3a, 0x90, 0x87, 0x0d, 0x37, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x6c, 0x88, 0x07, 0xf2, 0xb0, 0x61, 0x72, 0xf0, 0xde, 0x0c, 0xa2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xb0, 0x61, 0x33, 0x90, 0x87, 0x0d, 0xbb, 0x83, 0x47, 0xfd, 0x6a, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc3, 0x86, 0xe1, 0x40, 0x1e, 0x36, 0x6c, 0x07, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x2e, 0xdc, 0xe6, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0xcf, 0x1b, 0xbd, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xc9, 0xb8, 0x81, 0xbc, 0x64, 0xc8, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x92, 0x21, 0x19, 0xc8, 0x48, 0x86, 0xec, 0xd0, 0x2c, 0x72, 0x90, 0x6d, 0xf0, 0x24, 0x8c, 0xad, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x25, 0x19, 0x37, 0x90, 0x97, 0x8c, 0x1f, 0x76, 0xe1, 0x16, 0x03, 0xff, 0x6d, 0x2d, 0x2c, 0x3f, 0x34, 0x12, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4a, 0x86, 0x64, 0x20, 0x2b, 0x19, 0x1a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x92, 0x21, 0x1a, 0xc8, 0x4a, 0x86, 0x7c, 0xd8, 0x85, 0xdb, 0xd0, 0x48, 0xf0, 0xe0, 0x11, 0x21, 0x5b, 0x1b, 0x3c, 0x22, 0x64, 0xeb, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x5e, 0x27, 0xb2, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x95, 0x0c, 0xb3, 0x81, 0xac, 0x64, 0x58, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xc9, 0x30, 0x38, 0x78, 0x18, 0xcb, 0xd6, 0xc1, 0xab, 0x77, 0xaf, 0x06, 0xd9, 0x06, 0xaf, 0x13, 0xd9, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x92, 0x61, 0x3e, 0x90, 0x95, 0x0c, 0x05, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x56, 0x32, 0x4c, 0x0f, 0x5e, 0x2d, 0xb3, 0x35, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa5, 0x01, 0x34, 0x87, 0x66, 0x49, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x19, 0x92, 0x81, 0xb4, 0x64, 0x98, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x25, 0x43, 0x34, 0x90, 0x96, 0x0c, 0xf9, 0xc1, 0x2b, 0xa8, 0xaf, 0x06, 0xd9, 0x06, 0xef, 0xc6, 0xd9, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x92, 0x61, 0x36, 0x90, 0x96, 0x0c, 0xcb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x19, 0x06, 0x07, 0xaf, 0x08, 0xda, 0x3a, 0x78, 0x0c, 0xf7, 0xd5, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0xe2, 0xac, 0x41, 0x51, 0x2d, 0x38, 0x73, 0x90, 0xc4, 0xdf, 0x73, 0xf0, 0x9c, 0xf4, 0x8d, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7f, 0x8d, 0x1b, 0x48, 0xc1, 0xc6, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x5f, 0x43, 0x3a, 0x90, 0x7f, 0x0d, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xff, 0x1a, 0x92, 0x81, 0xfc, 0x6b, 0xb8, 0x30, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x5f, 0x43, 0x3c, 0x90, 0x7f, 0x0d, 0x8b, 0x83, 0x57, 0x35, 0x09, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7f, 0x0d, 0x93, 0x81, 0xfc, 0x6b, 0x18, 0x1d, 0xbc, 0x12, 0xdc, 0xea, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xff, 0x1a, 0x56, 0x03, 0xf9, 0xd7, 0xb0, 0x3b, 0x78, 0x25, 0xb8, 0xd5, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x48, 0xc3, 0x0d, 0xb2, 0x0d, 0x9e, 0x81, 0xb4, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x80, 0x0d, 0xe9, 0x40, 0x02, 0x36, 0x2c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x6c, 0x48, 0x06, 0x12, 0xb0, 0xe1, 0xcf, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0xa5, 0x46, 0x65, 0x87, 0xa6, 0x40, 0x83, 0x6c, 0x83, 0x67, 0x20, 0x6d, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xd8, 0x90, 0x0e, 0x64, 0x60, 0xc3, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc0, 0x86, 0x64, 0x20, 0x03, 0x1b, 0xae, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0x45, 0xe9, 0xb0, 0x42, 0x7b, 0x68, 0x01, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0x78, 0xf0, 0x04, 0x24, 0x8d, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xad, 0x8c, 0x1b, 0xc8, 0x59, 0xc6, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x2b, 0x43, 0x3c, 0x90, 0xaf, 0x0c, 0x8b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x5f, 0x19, 0x92, 0x83, 0x57, 0xd3, 0x6d, 0x0d, 0x82, 0x0d, 0x1e, 0xb6, 0xd7, 0x73, 0xf0, 0xcc, 0xe0, 0x9b, 0x41, 0xb6, 0xc1, 0x33, 0xe1, 0xb6, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x65, 0x88, 0x06, 0x52, 0x96, 0x21, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x96, 0x21, 0x39, 0x78, 0x02, 0xdf, 0xd6, 0x20, 0xd8, 0xe0, 0xdd, 0xc0, 0x56, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x90, 0x0d, 0xe9, 0x40, 0x42, 0x36, 0xdc, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc8, 0x86, 0xc1, 0x40, 0x42, 0x36, 0x6c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x6c, 0x88, 0x0f, 0xde, 0x69, 0xb8, 0x75, 0xf0, 0x72, 0xe5, 0xa2, 0x41, 0xb6, 0xc1, 0x73, 0x04, 0xb7, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xb2, 0x61, 0x36, 0x90, 0x90, 0x0d, 0xd3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x21, 0x1b, 0x46, 0x07, 0xaf, 0x68, 0xdc, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0xf0, 0x0a, 0x86, 0x80, 0x43, 0x53, 0xa0, 0x41, 0xb6, 0xc1, 0x73, 0x04, 0xb7, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x6c, 0x58, 0x0f, 0x24, 0x64, 0x43, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x90, 0x0d, 0xdb, 0x83, 0xb7, 0x52, 0x6e, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xd9, 0x30, 0x1f, 0x48, 0xc8, 0x86, 0x8a, 0x83, 0xf7, 0x23, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x64, 0x43, 0xc7, 0x40, 0x42, 0x36, 0xf4, 0x1c, 0xbc, 0xef, 0xb6, 0xe7, 0x38, 0x74, 0x68, 0x01, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x38, 0x8d, 0x1b, 0xc8, 0xa0, 0xc6, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x4e, 0x43, 0x34, 0x90, 0x3a, 0x0d, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3a, 0x0d, 0xc9, 0xc1, 0xeb, 0x4d, 0xb7, 0x0e, 0x5e, 0xf2, 0x5f, 0x34, 0xc8, 0x36, 0x78, 0xae, 0xe8, 0xd6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf6, 0x34, 0xc4, 0x03, 0xd9, 0xd3, 0xb0, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xa7, 0x21, 0x39, 0x78, 0x59, 0xeb, 0xd6, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3d, 0x0d, 0xf9, 0x40, 0xf6, 0x34, 0x6c, 0x0e, 0xde, 0x08, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3d, 0x0d, 0xa3, 0x81, 0xec, 0x69, 0x98, 0x1d, 0xbc, 0x12, 0xdc, 0xea, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0x3c, 0x57, 0x74, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xa0, 0x86, 0x78, 0x20, 0x81, 0x1a, 0xf2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x81, 0x1a, 0x92, 0x83, 0xe7, 0xf6, 0x6e, 0x1d, 0x04, 0xa5, 0xf7, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x94, 0x71, 0x03, 0x99, 0xca, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x65, 0x58, 0x0c, 0x64, 0x29, 0x43, 0xc3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa5, 0x0c, 0xc9, 0xc1, 0x9b, 0x8e, 0xb7, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x65, 0x98, 0x0c, 0x64, 0x29, 0xc3, 0xea, 0xe0, 0x55, 0x4d, 0x42, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x29, 0xc3, 0x6c, 0x20, 0x4b, 0x19, 0x86, 0x07, 0xaf, 0x04, 0xb7, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x52, 0x86, 0xe5, 0x40, 0x96, 0x32, 0x14, 0x0c, 0x92, 0x01, 0xe1, 0x7e, 0x77, 0x3c, 0x3e, 0x0e, 0x1d, 0xd2, 0x70, 0x83, 0x6c, 0x83, 0x37, 0x0c, 0x6f, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xca, 0xb0, 0x1a, 0x48, 0x54, 0x86, 0x8a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x51, 0x19, 0x92, 0x83, 0x47, 0x6e, 0x6f, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xca, 0x30, 0x1b, 0x48, 0x54, 0x86, 0xe5, 0xc1, 0xab, 0x9a, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x54, 0x86, 0xe9, 0x40, 0xa2, 0x32, 0xcc, 0x0f, 0x1e, 0x57, 0x6a, 0x35, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x51, 0x19, 0xf6, 0x03, 0x89, 0xca, 0xd0, 0x70, 0xf0, 0x4a, 0x70, 0xab, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x16, 0x07, 0xf0, 0x33, 0x7b, 0xab, 0x93, 0x6b, 0x79, 0x43, 0x6b, 0x31, 0x7b, 0xab, 0x93, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xd0, 0xb8, 0x81, 0x84, 0x69, 0xfc, 0xb0, 0x0b, 0xb7, 0x78, 0xd0, 0x3c, 0x85, 0xd4, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xd0, 0x90, 0x0c, 0x64, 0x43, 0xc3, 0x74, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1b, 0x1a, 0xa2, 0x81, 0x6c, 0x68, 0x88, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0xa7, 0xfc, 0xd6, 0x06, 0xef, 0x94, 0xdf, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x27, 0xcf, 0x6f, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xd0, 0x30, 0x18, 0xc8, 0x86, 0x86, 0xe5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0d, 0x0d, 0xf9, 0xc1, 0x23, 0xfb, 0xb7, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x81, 0xab, 0xee, 0x78, 0x7c, 0xe8, 0xa0, 0x31, 0xec, 0xc2, 0x2d, 0x06, 0x5e, 0x18, 0x1c, 0x7c, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x34, 0x24, 0x03, 0x09, 0xd1, 0x30, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x88, 0x86, 0x68, 0x20, 0x21, 0x1a, 0xe2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x5e, 0x2f, 0xc0, 0xb5, 0xc1, 0xeb, 0x05, 0xb8, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x21, 0x04, 0x5c, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x34, 0x6c, 0x06, 0x12, 0xa2, 0x61, 0x37, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x44, 0x43, 0x7e, 0xf0, 0xf4, 0x06, 0xae, 0x83, 0x67, 0x9c, 0x2a, 0x0d, 0xbb, 0x70, 0x8b, 0x01, 0xbe, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0xee, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xd1, 0x90, 0x0c, 0xe4, 0x44, 0xc3, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x27, 0x1a, 0xa2, 0x81, 0x9c, 0x68, 0x58, 0x0e, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0xf6, 0x08, 0xae, 0x0d, 0xde, 0x1e, 0xc1, 0x75, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x4f, 0xa4, 0xe0, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xa2, 0x61, 0x3a, 0x90, 0x13, 0x0d, 0xdb, 0x83, 0xa1, 0xf9, 0x3b, 0xec, 0xc2, 0x2d, 0x06, 0x3c, 0x65, 0x61, 0x75, 0x74, 0xe8, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xd1, 0x90, 0x0c, 0xa4, 0x45, 0xc3, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x1a, 0xa2, 0x81, 0xb4, 0x68, 0x18, 0x0c, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0xda, 0x0f, 0xae, 0x0d, 0x5e, 0xfb, 0xc1, 0x75, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x4f, 0x09, 0xe1, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xa2, 0x61, 0x31, 0x90, 0x16, 0x0d, 0x93, 0x83, 0xa1, 0xf9, 0x3b, 0xec, 0xc2, 0x2d, 0x06, 0x7c, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0xf4, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xd1, 0x90, 0x0c, 0x64, 0x46, 0xc3, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x33, 0x1a, 0xa2, 0x81, 0xcc, 0x68, 0x58, 0x0c, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0x2a, 0x16, 0xae, 0x0d, 0x5e, 0xc5, 0xc2, 0x75, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x4f, 0x6f, 0xe1, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xa3, 0x61, 0x32, 0x90, 0x19, 0x0d, 0x9b, 0x83, 0xa1, 0xf9, 0x3b, 0xec, 0xc2, 0x2d, 0x06, 0xbc, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0xec, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xd1, 0x90, 0x0c, 0x24, 0x47, 0xc3, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x39, 0x1a, 0xa2, 0x81, 0xe4, 0x68, 0x98, 0x0c, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0x8a, 0x1c, 0xae, 0x0d, 0x5e, 0x91, 0xc3, 0x75, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x4f, 0xd6, 0xe1, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xa3, 0x61, 0x33, 0x90, 0x1c, 0x0d, 0xa3, 0x83, 0xa1, 0xf9, 0x3b, 0xec, 0xc2, 0x2d, 0x1e, 0x2c, 0x48, 0x21, 0x3e, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3f, 0x1a, 0x92, 0x81, 0xfc, 0x68, 0x98, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x47, 0x43, 0x34, 0x90, 0x1f, 0x0d, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xaf, 0x2f, 0xe2, 0xda, 0xe0, 0xf5, 0x45, 0x5c, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x8e, 0x23, 0xae, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3f, 0x1a, 0x06, 0x03, 0xf9, 0xd1, 0xb0, 0x38, 0x18, 0x9a, 0xbf, 0xc3, 0x6e, 0xb0, 0xc8, 0xa0, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x45, 0x1a, 0x92, 0x81, 0x14, 0x69, 0x98, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x48, 0x43, 0x34, 0x90, 0x22, 0x0d, 0xf9, 0xc1, 0x2a, 0x85, 0xaa, 0x41, 0xb6, 0xc1, 0xbb, 0xa5, 0xb8, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x69, 0x18, 0x0c, 0xa4, 0x48, 0xc3, 0xe2, 0x60, 0x68, 0xfe, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0x8f, 0xf6, 0x36, 0x47, 0x1f, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x25, 0x0d, 0xc9, 0x40, 0x96, 0x34, 0x4c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xa4, 0x21, 0x1a, 0xc8, 0x92, 0x86, 0x7c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xb7, 0x71, 0x71, 0x6d, 0xf0, 0x36, 0x2e, 0xae, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x6e, 0x17, 0xd7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x25, 0x0d, 0x83, 0x81, 0x2c, 0x69, 0x58, 0x1c, 0x0c, 0xcd, 0xdf, 0x61, 0x37, 0x78, 0x52, 0x5f, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa6, 0x34, 0x24, 0x03, 0x99, 0xd2, 0x30, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x94, 0x86, 0x68, 0x20, 0x53, 0x1a, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x9e, 0xd7, 0x17, 0xb4, 0xc1, 0xf3, 0xfa, 0x82, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x81, 0x69, 0x5c, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa6, 0x34, 0x0c, 0x06, 0x32, 0xa5, 0x61, 0x71, 0x30, 0x34, 0x7f, 0x87, 0x5d, 0xb8, 0xc5, 0x80, 0x77, 0x0e, 0xee, 0xcd, 0x6d, 0xee, 0x4d, 0x3e, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x59, 0x1a, 0x92, 0x81, 0x64, 0x69, 0x58, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x4b, 0x43, 0x34, 0x90, 0x2c, 0x0d, 0x93, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x9e, 0x4a, 0xc7, 0xb5, 0xc1, 0x53, 0xe9, 0xb8, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x5d, 0x76, 0x5c, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x34, 0x6c, 0x06, 0x92, 0xa5, 0x61, 0x74, 0x30, 0x34, 0x7f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x69, 0x48, 0x06, 0xf2, 0xa5, 0x61, 0xba, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2f, 0x0d, 0xd1, 0x40, 0xbe, 0x34, 0xec, 0x86, 0x5d, 0xb8, 0x0d, 0xd1, 0x1c, 0x0f, 0x1e, 0xdb, 0xbe, 0xb5, 0xc1, 0xe3, 0x0d, 0xb9, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x65, 0x81, 0x5c, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xbe, 0x34, 0x0c, 0x07, 0xf2, 0xa5, 0x61, 0x79, 0x30, 0x34, 0x7f, 0x0f, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0x0d, 0x9e, 0xda, 0xbe, 0xb5, 0xcc, 0x06, 0x8f, 0x96, 0xb0, 0x1a, 0xe0, 0xa1, 0x92, 0x0a, 0x1a, 0x2a, 0x0e, 0x02, 0xe0, 0x7e, 0x39, 0x78, 0x8e, 0x63, 0xd6, 0xe1, 0x14, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xc2, 0xb8, 0x81, 0xac, 0x61, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8e, 0x30, 0x44, 0x03, 0x39, 0xc2, 0x30, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x84, 0x21, 0x39, 0x78, 0x69, 0x25, 0xd7, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0x70, 0xd7, 0x1d, 0x8f, 0x0f, 0x69, 0xb8, 0x41, 0xb6, 0xc1, 0xd3, 0x22, 0xb9, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x84, 0x21, 0x1a, 0x48, 0x13, 0x86, 0xe5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x26, 0x0c, 0xc9, 0xc1, 0xe3, 0x3a, 0xb9, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x81, 0xad, 0xbb, 0xe3, 0xf1, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0xe0, 0x69, 0x91, 0x5c, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xc2, 0x90, 0x0c, 0xa4, 0x0b, 0x43, 0xc7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xba, 0x30, 0xac, 0x06, 0xd2, 0x85, 0x61, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x0b, 0x43, 0x74, 0xf0, 0xf4, 0x53, 0xae, 0x41, 0xb0, 0xc1, 0xc3, 0xf6, 0x7a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x76, 0x96, 0x39, 0x58, 0x24, 0xfe, 0x73, 0x1c, 0x1a, 0x64, 0x1b, 0x3c, 0x71, 0x94, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x17, 0x86, 0xe9, 0x40, 0xba, 0x30, 0x54, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xc2, 0xb0, 0x3c, 0x78, 0x27, 0x2c, 0xd7, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0xf0, 0x5e, 0xd7, 0xf1, 0xf8, 0x60, 0xd1, 0xfa, 0xcf, 0x20, 0xdb, 0xe0, 0x69, 0x91, 0x5c, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xc3, 0xb0, 0x1c, 0xc8, 0x18, 0x86, 0xd2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x63, 0x18, 0x92, 0x83, 0xc7, 0xe2, 0x72, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xc3, 0x30, 0x1d, 0xc8, 0x18, 0x86, 0xf9, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x86, 0x61, 0x3f, 0x90, 0x31, 0x0c, 0x9d, 0x07, 0x8f, 0x17, 0xef, 0x39, 0x0e, 0x1d, 0x2c, 0xe1, 0xff, 0x19, 0x64, 0x1b, 0x3c, 0x2d, 0x92, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x1a, 0x86, 0xd1, 0x40, 0xd2, 0x30, 0xec, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x61, 0x48, 0x0e, 0xde, 0x7b, 0xcc, 0x35, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x85, 0x87, 0x32, 0x07, 0x25, 0xf6, 0xe0, 0x71, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x83, 0x87, 0x72, 0x45, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x71, 0xdc, 0x40, 0x9a, 0x38, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x41, 0x1c, 0x92, 0x81, 0x04, 0x71, 0xc8, 0x0e, 0x7d, 0x1a, 0x07, 0xd9, 0x06, 0x2f, 0x7d, 0xe6, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x10, 0x87, 0xc5, 0x40, 0x86, 0x38, 0xac, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x71, 0x48, 0x0e, 0xde, 0x79, 0xcd, 0x75, 0xf0, 0xf8, 0x65, 0xa3, 0x41, 0xb6, 0xc1, 0x4b, 0x9f, 0xb9, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xc4, 0x21, 0x1a, 0x48, 0x11, 0x87, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x11, 0x87, 0xe4, 0xe0, 0x11, 0xde, 0x5c, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0x12, 0x5b, 0x4e, 0x0e, 0x9d, 0x88, 0x06, 0xd9, 0x06, 0x2f, 0x7d, 0xe6, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x11, 0x87, 0x68, 0x20, 0x47, 0x1c, 0xe2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x47, 0x1c, 0x92, 0x83, 0x67, 0x96, 0x73, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0xc2, 0xff, 0xee, 0x78, 0x7e, 0xb0, 0x84, 0xff, 0x67, 0x90, 0x6d, 0xf0, 0xd2, 0x67, 0xae, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x71, 0x88, 0x07, 0x92, 0xc4, 0x61, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x89, 0x43, 0x72, 0xf0, 0xd4, 0x76, 0xae, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x49, 0x1c, 0xf2, 0x81, 0x24, 0x71, 0xd8, 0x1c, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x49, 0x1c, 0x46, 0x03, 0x49, 0xe2, 0xb0, 0x1d, 0x04, 0x1b, 0x3c, 0x6c, 0xaf, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x80, 0xaf, 0x8e, 0x4c, 0xec, 0xcd, 0xad, 0x3c, 0xa4, 0x6a, 0x8e, 0x43, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xc1, 0x7b, 0x0e, 0x33, 0x06, 0xd9, 0x06, 0x2f, 0x7d, 0xe6, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xc4, 0x61, 0x34, 0x90, 0x25, 0x0e, 0x45, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x38, 0x24, 0x07, 0xaf, 0x09, 0xe8, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xc4, 0x61, 0x35, 0x90, 0x25, 0x0e, 0xcb, 0x83, 0xf7, 0x23, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x89, 0xc3, 0x74, 0x20, 0x4b, 0x1c, 0x7a, 0x06, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x31, 0xc0, 0xaf, 0x8e, 0xac, 0xad, 0x6c, 0x6e, 0x2e, 0xec, 0xac, 0xcc, 0xad, 0xae, 0x3d, 0xa4, 0x6a, 0x8e, 0x43, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0x41, 0xa3, 0x13, 0x4a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x1b, 0x3c, 0xc7, 0x31, 0xeb, 0xe0, 0x09, 0x48, 0x1a, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x99, 0x18, 0x37, 0x90, 0x5c, 0x8c, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x27, 0x86, 0x68, 0x20, 0x9d, 0x18, 0x26, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3a, 0x31, 0x24, 0x07, 0xcf, 0xcd, 0xe8, 0x1a, 0x04, 0x1b, 0x3c, 0x7f, 0x96, 0xeb, 0x90, 0x86, 0x1b, 0x64, 0x1b, 0xbc, 0xaf, 0xa2, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa9, 0x18, 0x56, 0x03, 0x49, 0xc5, 0x30, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x8a, 0x21, 0x39, 0x78, 0x31, 0x48, 0xd7, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x07, 0xaf, 0xd3, 0xe6, 0x18, 0x64, 0x1b, 0xbc, 0xaf, 0xa2, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x2b, 0x86, 0xc9, 0x40, 0x5e, 0x31, 0x4c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x62, 0x48, 0x0e, 0xde, 0x7f, 0xd2, 0x35, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x15, 0xc3, 0x66, 0x20, 0xaf, 0x18, 0x66, 0x07, 0x2f, 0x0a, 0x21, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x2b, 0x86, 0xdd, 0x40, 0x5e, 0x31, 0x2c, 0x0f, 0x5e, 0x09, 0x6e, 0x75, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x5a, 0x80, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0xe2, 0xc1, 0xbb, 0x1b, 0xb9, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa2, 0x35, 0x6e, 0x20, 0xe9, 0x1a, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6a, 0x0d, 0xbb, 0x81, 0x54, 0x6b, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xd6, 0x90, 0x1c, 0x3c, 0x7c, 0xa7, 0xeb, 0xe0, 0xa9, 0xff, 0x58, 0x83, 0x6c, 0x83, 0x87, 0xde, 0x74, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x5b, 0xc3, 0x60, 0x20, 0xdb, 0x1a, 0x16, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb6, 0x35, 0x24, 0x07, 0xcf, 0x12, 0xea, 0x3a, 0x18, 0x5e, 0xbc, 0x83, 0x6c, 0x83, 0x87, 0xde, 0x74, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x5c, 0x43, 0x34, 0x90, 0x70, 0x0d, 0x8b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe1, 0x1a, 0x92, 0x83, 0xd7, 0x22, 0x75, 0x0d, 0x82, 0x0d, 0x56, 0xd6, 0x46, 0x1d, 0x3a, 0x11, 0x0d, 0xb2, 0x0d, 0x1e, 0x7a, 0xd3, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x5c, 0x43, 0x34, 0x90, 0x73, 0x0d, 0xb3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe7, 0x1a, 0x92, 0x83, 0xd7, 0x3e, 0x75, 0x0d, 0x82, 0x0d, 0xde, 0x32, 0xd8, 0x73, 0xe8, 0x7e, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0xf0, 0x5e, 0x1b, 0x9f, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd1, 0x8b, 0x1b, 0xc8, 0x07, 0xc6, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xbd, 0xb8, 0x83, 0xc7, 0x5e, 0x75, 0x0d, 0xbb, 0xc1, 0xc3, 0xee, 0x81, 0x16, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xbd, 0x30, 0x19, 0xc8, 0xe9, 0x85, 0xed, 0xc1, 0xd3, 0x81, 0x7c, 0x0e, 0x9e, 0xce, 0x07, 0x35, 0xec, 0x06, 0xef, 0xe6, 0xf1, 0x59, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xf5, 0xc2, 0x64, 0x20, 0xad, 0x17, 0xb6, 0x07, 0x4f, 0x07, 0xf2, 0x39, 0x78, 0xbd, 0x90, 0xcf, 0xb0, 0x1b, 0xbc, 0x37, 0x1d, 0x68, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd9, 0x0b, 0x93, 0x81, 0xcc, 0x5e, 0xd8, 0x1e, 0x3c, 0x1d, 0xc8, 0xe7, 0xe0, 0x9d, 0x60, 0x52, 0xc3, 0x6e, 0xf0, 0xde, 0x1d, 0x8c, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x72, 0x2f, 0x4c, 0x06, 0x92, 0x7b, 0x61, 0x7b, 0xf0, 0x74, 0x20, 0x9f, 0x83, 0x87, 0x23, 0xf9, 0x0c, 0xbb, 0xc1, 0xc3, 0x95, 0x7c, 0x16, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xbd, 0x30, 0x19, 0xc8, 0xef, 0x85, 0xed, 0xc1, 0xd3, 0x81, 0x7c, 0x0e, 0xde, 0xf5, 0xe4, 0x33, 0xec, 0x06, 0xcf, 0x3d, 0x0d, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf1, 0x85, 0x64, 0x20, 0xc5, 0x17, 0xfa, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x7c, 0x21, 0x1a, 0x48, 0xf1, 0x85, 0x7c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x47, 0xf3, 0x3c, 0x1c, 0x3c, 0x6e, 0x95, 0x69, 0x90, 0x6d, 0xf0, 0x7a, 0xb9, 0xae, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x5f, 0x58, 0x0e, 0xa4, 0xf8, 0xc2, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf1, 0x85, 0xc1, 0xc1, 0xdb, 0xf8, 0xba, 0x0e, 0x5e, 0xb2, 0xd7, 0x33, 0xc8, 0x36, 0x78, 0xbd, 0x5c, 0xd7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe2, 0x0b, 0x25, 0x03, 0x29, 0xbe, 0x50, 0x37, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xf8, 0xc2, 0xfa, 0xe0, 0xe5, 0x82, 0x5d, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8a, 0x2f, 0xb4, 0x0c, 0xa4, 0xf8, 0x42, 0xd3, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x7c, 0xa1, 0x6a, 0x20, 0xc5, 0x17, 0xda, 0x0e, 0x9e, 0xa6, 0xdf, 0x73, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x5a, 0x80, 0x0d, 0xbb, 0xc1, 0x7b, 0x52, 0x83, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x7c, 0x21, 0x19, 0xc8, 0xf2, 0x85, 0xed, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x2f, 0x44, 0x03, 0x59, 0xbe, 0x90, 0x1f, 0x3c, 0x74, 0x89, 0x68, 0x90, 0x6d, 0xf0, 0xc6, 0xc8, 0xae, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcb, 0x17, 0x16, 0x03, 0x59, 0xbe, 0x30, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x7c, 0x61, 0x70, 0xf0, 0xe2, 0xcc, 0xae, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x40, 0xd0, 0x77, 0x1d, 0x8f, 0x0f, 0x1d, 0x34, 0x86, 0xdd, 0xe0, 0xc1, 0x91, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xbe, 0x90, 0x0c, 0xa4, 0xfa, 0x42, 0xcb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xaa, 0x2f, 0x44, 0x03, 0xa9, 0xbe, 0xb0, 0x1a, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xf1, 0x91, 0x41, 0x1b, 0x3c, 0x3e, 0x32, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0xfe, 0xd9, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xfa, 0xc2, 0x76, 0x20, 0xd5, 0x17, 0x4a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x5f, 0x98, 0x1d, 0x3c, 0x37, 0xb5, 0x6b, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf5, 0x85, 0xf1, 0x40, 0xaa, 0x2f, 0x14, 0x1c, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd5, 0x17, 0x1a, 0x06, 0x52, 0x7d, 0xa1, 0xe3, 0xe0, 0x95, 0xe0, 0x56, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xb0, 0x1b, 0xbc, 0x89, 0xad, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdb, 0x17, 0x92, 0x81, 0x6c, 0x5f, 0xe8, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf6, 0x85, 0x68, 0x20, 0xdb, 0x17, 0x26, 0x07, 0xcf, 0x98, 0xeb, 0x19, 0x64, 0x1b, 0xbc, 0x0b, 0xb7, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdb, 0x17, 0xa6, 0x03, 0xd9, 0xbe, 0xb0, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x7d, 0x61, 0x73, 0xf0, 0x52, 0xe0, 0xae, 0x83, 0xe1, 0xc5, 0x3b, 0xc8, 0x36, 0x78, 0x17, 0x6e, 0xd7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb6, 0x2f, 0xac, 0x07, 0xb2, 0x7d, 0xa1, 0x64, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf6, 0x85, 0xf1, 0xc1, 0x13, 0x8e, 0xbb, 0x0e, 0xde, 0xbc, 0xd4, 0x35, 0xc8, 0x36, 0x78, 0x17, 0x6e, 0xd7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xed, 0x0b, 0x35, 0x03, 0xd9, 0xbe, 0x50, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xfb, 0x42, 0xcb, 0xc1, 0x0b, 0x9b, 0xbb, 0x0e, 0xde, 0x2c, 0xd5, 0x35, 0xec, 0x06, 0x0f, 0xc2, 0x0c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf8, 0x85, 0x64, 0x20, 0xe1, 0x17, 0x9a, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x7e, 0x21, 0x1a, 0x48, 0xf8, 0x85, 0xe1, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x8f, 0xc3, 0x0c, 0xda, 0xe0, 0x71, 0x98, 0x41, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x1a, 0xe9, 0xae, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x5f, 0x28, 0x18, 0x48, 0xf8, 0x85, 0x86, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe1, 0x17, 0x96, 0x07, 0x8f, 0xe0, 0xee, 0x3a, 0x18, 0x5e, 0xbc, 0x83, 0x6c, 0x83, 0xd7, 0x48, 0x77, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xfc, 0x42, 0xc7, 0x40, 0xc2, 0x2f, 0x54, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xbf, 0x50, 0x71, 0xf0, 0x3e, 0xf1, 0xae, 0x83, 0x37, 0x2f, 0x75, 0x0d, 0xb2, 0x0d, 0x5e, 0x23, 0xdd, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xfc, 0x42, 0xd9, 0x40, 0xc2, 0x2f, 0x14, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xbf, 0xd0, 0x75, 0xf0, 0x7e, 0xf4, 0xae, 0x83, 0x37, 0x4b, 0x75, 0x0d, 0xbb, 0xc1, 0x43, 0x0c, 0x7b, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x7e, 0x21, 0x19, 0xc8, 0xf9, 0x85, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x2f, 0x44, 0x03, 0x39, 0xbf, 0xb0, 0x3c, 0x78, 0x75, 0x63, 0xcf, 0x20, 0xdb, 0xe0, 0xad, 0xed, 0x5d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x2f, 0x4c, 0x07, 0x72, 0x7e, 0x61, 0x7b, 0x30, 0x34, 0x7f, 0x87, 0xdd, 0xe0, 0x99, 0xa5, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xbf, 0x90, 0x0c, 0xa4, 0xfd, 0x42, 0xcb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xda, 0x2f, 0x44, 0x03, 0x69, 0xbf, 0x30, 0x19, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xc9, 0xa5, 0x41, 0x1b, 0x3c, 0xb9, 0x34, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0x7e, 0xdf, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf6, 0x0b, 0xa3, 0x81, 0xb4, 0x5f, 0xd8, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xbf, 0xb0, 0x39, 0x78, 0x70, 0x80, 0xd7, 0x20, 0xd8, 0xe0, 0xa1, 0x3e, 0x58, 0x87, 0xa6, 0x40, 0x83, 0x6c, 0x83, 0xa7, 0xdf, 0x77, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xbf, 0x50, 0x30, 0x90, 0xf6, 0x0b, 0x25, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xda, 0x2f, 0x8c, 0x0f, 0x5e, 0x8d, 0xe0, 0x35, 0x08, 0x36, 0x78, 0xd5, 0xa9, 0xd2, 0xa1, 0x05, 0xd8, 0xb0, 0x1b, 0x3c, 0x89, 0x32, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf3, 0x17, 0x92, 0x81, 0xcc, 0x5f, 0x68, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xfc, 0x85, 0x68, 0x20, 0xf3, 0x17, 0x06, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0x8f, 0x32, 0x68, 0x83, 0xe7, 0x51, 0x06, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x3b, 0x1c, 0xbc, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x7f, 0x61, 0x32, 0x90, 0xf9, 0x0b, 0xcb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf3, 0x17, 0x16, 0x07, 0xaf, 0xbf, 0xf0, 0x3a, 0x78, 0x37, 0x81, 0xd7, 0x20, 0xdb, 0xe0, 0x1d, 0x0e, 0x5e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe6, 0x2f, 0x6c, 0x07, 0x32, 0x7f, 0xa1, 0x64, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xfc, 0x85, 0xe9, 0xc1, 0xd3, 0x3c, 0xbc, 0x06, 0xc1, 0x06, 0x2f, 0x07, 0xe0, 0x3a, 0xb4, 0x00, 0x1b, 0x76, 0x83, 0x17, 0x88, 0x06, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xff, 0x42, 0x32, 0x90, 0xff, 0x0b, 0xfb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x5f, 0x88, 0x06, 0xf2, 0x7f, 0x61, 0x35, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x6b, 0x44, 0x83, 0x36, 0x78, 0x8d, 0x68, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x3c, 0x76, 0xc4, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xff, 0x85, 0xdd, 0x40, 0xfe, 0x2f, 0xcc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x5f, 0x98, 0x1d, 0xbc, 0xaf, 0xc5, 0x6b, 0x10, 0x6c, 0xf0, 0x50, 0x1f, 0xac, 0x43, 0x07, 0x8d, 0x61, 0x37, 0x78, 0xaf, 0x6a, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0a, 0x30, 0x24, 0x03, 0x29, 0xc0, 0x30, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x01, 0x86, 0x68, 0x20, 0x05, 0x18, 0x76, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0x5d, 0x35, 0x68, 0x83, 0xb7, 0xab, 0x06, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x83, 0x65, 0xbc, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x60, 0x18, 0x0e, 0xa4, 0x00, 0xc3, 0xf2, 0x60, 0x68, 0xfe, 0x0e, 0xbb, 0xc1, 0x6b, 0x38, 0x83, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x80, 0x21, 0x19, 0xc8, 0x02, 0x86, 0x8a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x60, 0x88, 0x06, 0xb2, 0x80, 0x61, 0x39, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xcb, 0x38, 0x83, 0x36, 0x78, 0x19, 0x67, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0xd1, 0xc7, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x02, 0x86, 0xed, 0x40, 0x16, 0x30, 0x34, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xc0, 0x30, 0x3d, 0x78, 0x17, 0x92, 0xd7, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0x57, 0x4d, 0x02, 0x1c, 0x3a, 0x68, 0x0c, 0xbb, 0xc1, 0xb3, 0x1d, 0x83, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x81, 0x21, 0x19, 0x48, 0x04, 0x86, 0x86, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x60, 0x88, 0x06, 0x12, 0x81, 0x61, 0x38, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x13, 0x1e, 0x83, 0x36, 0x78, 0xc2, 0x63, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0xc5, 0xc9, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x04, 0x86, 0xe9, 0x40, 0x22, 0x30, 0x14, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xc0, 0xb0, 0x3c, 0x78, 0xff, 0x95, 0xd7, 0xc1, 0xfb, 0x96, 0xbc, 0x86, 0xdd, 0xe0, 0x39, 0x1a, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xc0, 0x90, 0x0c, 0xe4, 0x02, 0xc3, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x17, 0x18, 0xa2, 0x81, 0x5c, 0x60, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x9a, 0x46, 0xd0, 0x06, 0x4f, 0xd3, 0x08, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0xa7, 0x72, 0x79, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xc0, 0x30, 0x1a, 0xc8, 0x05, 0x86, 0xd5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0b, 0x0c, 0x83, 0x83, 0xc7, 0x99, 0x79, 0x0d, 0x82, 0x0d, 0x1e, 0xb6, 0xd7, 0x73, 0x30, 0xaa, 0xb0, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x60, 0x48, 0x06, 0xd2, 0x81, 0xa1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1d, 0x18, 0xa2, 0x81, 0x74, 0x60, 0xd8, 0x0d, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0xb6, 0xcf, 0xa0, 0x0d, 0xde, 0xf6, 0x19, 0x74, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x2f, 0x58, 0xf3, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x07, 0x86, 0xf1, 0x40, 0x3a, 0x30, 0xcc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x60, 0x18, 0x1e, 0xbc, 0x9b, 0xce, 0x6b, 0x10, 0x6c, 0xf0, 0xb0, 0xbd, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x4b, 0x03, 0x68, 0x0e, 0x3d, 0x84, 0x8e, 0x43, 0x83, 0x6c, 0x83, 0x17, 0xac, 0x79, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xc0, 0xd0, 0x32, 0x90, 0x0e, 0x0c, 0xbd, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3a, 0x30, 0xec, 0x0f, 0x5e, 0xd7, 0xe7, 0x35, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x03, 0x43, 0xcd, 0x40, 0x3a, 0x30, 0x54, 0x1d, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1d, 0x18, 0xba, 0x06, 0xd2, 0x81, 0xa1, 0x76, 0x90, 0x0c, 0xac, 0x75, 0x1d, 0x8f, 0x8f, 0x43, 0x87, 0x16, 0x60, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x77, 0x1b, 0x37, 0x90, 0xea, 0x8d, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x6f, 0xe3, 0x0e, 0x5e, 0xc7, 0xe8, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x6f, 0xe3, 0x0e, 0x5e, 0xc7, 0xe8, 0x35, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xb7, 0x21, 0x1c, 0xc8, 0xde, 0x86, 0xf1, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xde, 0x86, 0x74, 0x20, 0x7b, 0x1b, 0x16, 0x83, 0x64, 0x83, 0x21, 0xfe, 0x71, 0x30, 0xfc, 0x63, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xb7, 0x61, 0x32, 0x90, 0xbd, 0x0d, 0xdb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbd, 0x0d, 0x9b, 0x81, 0xec, 0x6d, 0x98, 0x1d, 0x2c, 0x6f, 0x2c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7b, 0x1b, 0x76, 0x03, 0xd9, 0xdb, 0x30, 0x3c, 0xf4, 0x27, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbd, 0x0d, 0xcb, 0x81, 0xec, 0x6d, 0x98, 0x1e, 0x52, 0x07, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc0, 0x8d, 0x3b, 0x78, 0x1d, 0xa3, 0xd7, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xdc, 0x90, 0x0c, 0x24, 0x70, 0xc3, 0x74, 0xd8, 0x0d, 0x46, 0xc7, 0xfa, 0xc2, 0x6e, 0x90, 0xc2, 0x6a, 0xbd, 0xb0, 0x1b, 0xac, 0x19, 0x4a, 0x59, 0xd8, 0x0d, 0x1a, 0xfb, 0xeb, 0x5f, 0xd8, 0x0d, 0x16, 0x7c, 0x71, 0x2d, 0xec, 0x06, 0x8b, 0xc4, 0xb8, 0x16, 0x76, 0x83, 0xa5, 0x67, 0x5c, 0x0b, 0xbb, 0xb0, 0x1b, 0xb4, 0xe0, 0xe5, 0x74, 0x58, 0xdf, 0x3c, 0x68, 0x27, 0xcd, 0xe9, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xdc, 0xb8, 0x83, 0xd7, 0x31, 0x7a, 0x0d, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc3, 0x0d, 0xc9, 0x40, 0x0e, 0x37, 0x4c, 0x86, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xe1, 0x86, 0x6c, 0x20, 0x87, 0x1b, 0xd2, 0x83, 0x23, 0x4f, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc3, 0x0d, 0xf1, 0x40, 0x0e, 0x37, 0x2c, 0x0e, 0x42, 0x0a, 0x7c, 0x43, 0x0c, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xe3, 0x86, 0x64, 0x20, 0x8d, 0x1b, 0x5a, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xe3, 0x86, 0x6c, 0x20, 0x8d, 0x1b, 0x56, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x71, 0x43, 0x3a, 0x90, 0xc6, 0x0d, 0x83, 0x83, 0x81, 0x6f, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x71, 0xc3, 0x62, 0x20, 0x8d, 0x1b, 0x46, 0x07, 0x21, 0x05, 0xbe, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xdc, 0x30, 0x1b, 0x48, 0xe3, 0x86, 0x92, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc6, 0x0d, 0xbb, 0x81, 0x34, 0x6e, 0x98, 0x1e, 0xac, 0xc8, 0xf3, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8d, 0x1b, 0xb6, 0x03, 0x69, 0xdc, 0x50, 0x70, 0x10, 0x64, 0xf1, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xb8, 0xa1, 0x61, 0x20, 0x8d, 0x1b, 0x3a, 0x0e, 0xd2, 0xa1, 0x3c, 0x8e, 0x43, 0x0b, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc6, 0x0d, 0x2d, 0x03, 0x69, 0xdc, 0x50, 0x3a, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xb8, 0xa1, 0x66, 0x20, 0x8d, 0x1b, 0x9a, 0x0e, 0x5a, 0x85, 0x8b, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8d, 0x1b, 0xaa, 0x06, 0xd2, 0xb8, 0xa1, 0xef, 0x20, 0xc8, 0xe2, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x71, 0x43, 0xe1, 0x40, 0x1a, 0x37, 0x74, 0x1e, 0xa4, 0x3b, 0x34, 0x1f, 0x87, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x37, 0xc4, 0x70, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x6e, 0x48, 0x06, 0x32, 0xb9, 0x61, 0x33, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x26, 0x37, 0x64, 0x03, 0x99, 0xdc, 0x10, 0x1f, 0xa4, 0x3b, 0x34, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xdc, 0x90, 0x0f, 0x64, 0x72, 0xc3, 0xe4, 0x20, 0xa4, 0xc0, 0x37, 0xc4, 0x70, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x6e, 0x48, 0x06, 0x92, 0xb9, 0xa1, 0x63, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x6e, 0xc8, 0x06, 0x92, 0xb9, 0x61, 0x35, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x37, 0xa4, 0x03, 0xc9, 0xdc, 0x30, 0x18, 0x83, 0x48, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xdc, 0xb0, 0x18, 0x48, 0xe6, 0x86, 0xd1, 0x41, 0x48, 0x81, 0x2f, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x37, 0xcc, 0x06, 0x92, 0xb9, 0xa1, 0x62, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x6e, 0x18, 0x0e, 0x24, 0x73, 0xc3, 0xf6, 0xe0, 0x4c, 0xc6, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x73, 0xc3, 0x78, 0x20, 0x99, 0x1b, 0x1a, 0x0e, 0x82, 0x2c, 0xfe, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x1b, 0x62, 0x38, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x37, 0x24, 0x03, 0xf9, 0xdc, 0x50, 0x3a, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x37, 0x64, 0x03, 0xf9, 0xdc, 0xb0, 0x1a, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9f, 0x1b, 0xd2, 0x81, 0x7c, 0x6e, 0x18, 0x8c, 0x41, 0xb0, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x6e, 0x58, 0x0c, 0xe4, 0x73, 0xc3, 0xe8, 0x20, 0xa4, 0xc0, 0x17, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9f, 0x1b, 0x66, 0x03, 0xf9, 0xdc, 0x50, 0x32, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xb9, 0x61, 0x37, 0x90, 0xcf, 0x0d, 0xd3, 0x83, 0x15, 0x79, 0x5e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x73, 0xc3, 0x76, 0x20, 0x9f, 0x1b, 0x0a, 0x0e, 0x82, 0x2c, 0x7e, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x37, 0x34, 0x0c, 0xe4, 0x73, 0x43, 0xc7, 0x41, 0xa2, 0xdc, 0xc7, 0x71, 0x68, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xb9, 0xa1, 0x65, 0x20, 0x9f, 0x1b, 0x3a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x37, 0xd4, 0x0c, 0xe4, 0x73, 0x43, 0xd3, 0x41, 0xab, 0x70, 0x51, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x73, 0x43, 0xd5, 0x40, 0x3e, 0x37, 0xf4, 0x1d, 0x04, 0x59, 0xfc, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x6e, 0x28, 0x1c, 0xc8, 0xe7, 0x86, 0xca, 0x31, 0xec, 0x8f, 0x43, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x1b, 0x62, 0x38, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x37, 0x24, 0x03, 0x29, 0xdd, 0x50, 0x37, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x37, 0x64, 0x03, 0x29, 0xdd, 0xb0, 0x1a, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa5, 0x1b, 0xd2, 0x81, 0x94, 0x6e, 0x18, 0x1c, 0xa4, 0xfd, 0x34, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xdd, 0xb0, 0x18, 0x48, 0xe9, 0x86, 0xd1, 0x41, 0x48, 0x81, 0x2f, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x37, 0xcc, 0x06, 0x52, 0xba, 0xa1, 0x60, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x6e, 0x18, 0x0e, 0xa4, 0x74, 0xc3, 0xf2, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa5, 0x1b, 0xa6, 0x03, 0x29, 0xdd, 0xb0, 0x3f, 0x08, 0xb2, 0xf8, 0x85, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xe9, 0x86, 0x86, 0x81, 0x94, 0x6e, 0x68, 0x1b, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa5, 0x1b, 0x3a, 0x06, 0x52, 0xba, 0xa1, 0xe4, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa5, 0x1b, 0x5a, 0x06, 0x52, 0xba, 0xa1, 0xec, 0x20, 0x70, 0xe3, 0x0f, 0xe9, 0xdc, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x37, 0xc4, 0x70, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x6e, 0x48, 0x06, 0xb2, 0xba, 0xa1, 0x6e, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x6e, 0xc8, 0x06, 0xb2, 0xba, 0x61, 0x35, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x56, 0x37, 0xa4, 0x03, 0x59, 0xdd, 0x30, 0x38, 0x48, 0xfb, 0x69, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xba, 0x61, 0x31, 0x90, 0xd5, 0x0d, 0xa3, 0x83, 0x90, 0x02, 0x5f, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x6e, 0x98, 0x0d, 0x64, 0x75, 0x43, 0xc1, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xdd, 0x30, 0x1c, 0xc8, 0xea, 0x86, 0xe5, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x56, 0x37, 0x4c, 0x07, 0xb2, 0xba, 0x61, 0x7f, 0x10, 0x64, 0xf1, 0x0b, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd5, 0x0d, 0x0d, 0x03, 0x59, 0xdd, 0xd0, 0x36, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x56, 0x37, 0x74, 0x0c, 0x64, 0x75, 0x43, 0xc9, 0xa1, 0x95, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd5, 0x0d, 0x2d, 0x03, 0x59, 0xdd, 0x50, 0x76, 0x10, 0xb8, 0xf1, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x1b, 0x62, 0x38, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x62, 0x37, 0x24, 0x03, 0x89, 0xdd, 0xd0, 0x38, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x62, 0x37, 0x64, 0x03, 0x89, 0xdd, 0xb0, 0x1a, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb1, 0x1b, 0xd2, 0x81, 0xc4, 0x6e, 0x18, 0x1c, 0xa4, 0xfd, 0x34, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xdd, 0xb0, 0x18, 0x48, 0xec, 0x86, 0xd1, 0x41, 0x48, 0x81, 0x2f, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x62, 0x37, 0xcc, 0x06, 0x12, 0xbb, 0xa1, 0x70, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x6e, 0x18, 0x0e, 0x24, 0x76, 0x43, 0xc7, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xdd, 0x30, 0x1d, 0x48, 0xec, 0x86, 0xf1, 0x41, 0x4a, 0x52, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd8, 0x0d, 0xeb, 0x81, 0xc4, 0x6e, 0xa8, 0x38, 0x08, 0xb2, 0xf8, 0x0d, 0x31, 0x1c, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb1, 0x1b, 0x4a, 0x06, 0x12, 0xbb, 0xa1, 0x6f, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x6e, 0xa8, 0x19, 0x48, 0xec, 0x86, 0xa2, 0x83, 0xf4, 0xb6, 0x91, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb1, 0x1b, 0x9a, 0x06, 0x12, 0xbb, 0xa1, 0xee, 0x20, 0xc8, 0xe2, 0x0f, 0xe9, 0xdc, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x6f, 0x88, 0xe1, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xdd, 0x90, 0x0c, 0xe4, 0x76, 0x43, 0xe3, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xdd, 0x90, 0x0d, 0xe4, 0x76, 0xc3, 0x6a, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x6e, 0x48, 0x07, 0x72, 0xbb, 0x61, 0x70, 0x90, 0xf6, 0xd3, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x76, 0xc3, 0x62, 0x20, 0xb7, 0x1b, 0x46, 0x07, 0x21, 0x05, 0xbe, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xdd, 0x30, 0x1b, 0xc8, 0xed, 0x86, 0x86, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xbb, 0x61, 0x38, 0x90, 0xdb, 0x0d, 0xd3, 0x31, 0x74, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xdd, 0xb0, 0x1d, 0xc8, 0xed, 0x86, 0x82, 0x83, 0x20, 0x8b, 0x5f, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x6e, 0xa8, 0x18, 0xc8, 0xed, 0x86, 0xc2, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xbb, 0xa1, 0x64, 0x20, 0xb7, 0x1b, 0x7a, 0x0e, 0x06, 0xbe, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xdb, 0x0d, 0x45, 0x03, 0xb9, 0xdd, 0xd0, 0x77, 0x10, 0xb8, 0xf1, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x1b, 0x62, 0x38, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x37, 0x24, 0x03, 0xe9, 0xdd, 0x50, 0x38, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x37, 0x64, 0x03, 0xe9, 0xdd, 0xb0, 0x1a, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xbd, 0x1b, 0xd2, 0x81, 0xf4, 0x6e, 0x18, 0x1c, 0xa4, 0xfd, 0x34, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xdd, 0xb0, 0x18, 0x48, 0xef, 0x86, 0xd1, 0x41, 0x48, 0x81, 0x2f, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x37, 0xcc, 0x06, 0xd2, 0xbb, 0xa1, 0x61, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x6e, 0x18, 0x0e, 0xa4, 0x77, 0xc3, 0x74, 0x0c, 0xc7, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x6e, 0xd8, 0x0e, 0xa4, 0x77, 0x43, 0xc1, 0x41, 0x90, 0xc5, 0x2f, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x37, 0x54, 0x0c, 0xa4, 0x77, 0x43, 0xdf, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xdd, 0x50, 0x32, 0x90, 0xde, 0x0d, 0x35, 0x07, 0x4b, 0x6d, 0x0a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x6e, 0xe8, 0x19, 0x48, 0xef, 0x86, 0xba, 0x83, 0xc0, 0x8d, 0x3f, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0xdf, 0x10, 0xc3, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xbc, 0x21, 0x19, 0xc8, 0xf0, 0x86, 0x8e, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xbc, 0x21, 0x1b, 0xc8, 0xf0, 0x86, 0xd5, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xde, 0x90, 0x0e, 0x64, 0x78, 0xc3, 0xe0, 0x20, 0xed, 0xa7, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf0, 0x86, 0xc5, 0x40, 0x86, 0x37, 0x8c, 0x0e, 0x42, 0x0a, 0x7c, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xbc, 0x61, 0x36, 0x90, 0xe1, 0x0d, 0x15, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x78, 0xc3, 0x70, 0x20, 0xc3, 0x1b, 0xb6, 0x63, 0x10, 0xa8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc3, 0x1b, 0xc6, 0x03, 0x19, 0xde, 0xd0, 0x70, 0x10, 0x64, 0xf1, 0x87, 0x74, 0xee, 0xe1, 0x68, 0xdf, 0x10, 0xc3, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xbc, 0x21, 0x19, 0x48, 0xf2, 0x86, 0xc2, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xbc, 0x21, 0x1b, 0x48, 0xf2, 0x86, 0xd5, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xde, 0x90, 0x0e, 0x24, 0x79, 0xc3, 0x60, 0x0c, 0x62, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x79, 0xc3, 0x62, 0x20, 0xc9, 0x1b, 0x46, 0x07, 0x21, 0x05, 0xbe, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xde, 0x30, 0x1b, 0x48, 0xf2, 0x86, 0x82, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xbc, 0x61, 0x38, 0x90, 0xe4, 0x0d, 0xcb, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x6f, 0x98, 0x0e, 0x24, 0x79, 0xc3, 0xfe, 0x20, 0xc8, 0xe2, 0x17, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc9, 0x1b, 0x1a, 0x06, 0x92, 0xbc, 0xa1, 0x6f, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x6f, 0xe8, 0x18, 0x48, 0xf2, 0x86, 0x9a, 0x83, 0x22, 0x52, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf2, 0x86, 0x9e, 0x81, 0x24, 0x6f, 0xa8, 0x3b, 0x08, 0xdc, 0xf8, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x0d, 0x31, 0x1c, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd3, 0x1b, 0x92, 0x81, 0x4c, 0x6f, 0x98, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x6f, 0x88, 0x06, 0x32, 0xbd, 0x21, 0x3d, 0x58, 0x91, 0xe7, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa6, 0x37, 0xc4, 0x03, 0x99, 0xde, 0xb0, 0x38, 0x08, 0x29, 0xf0, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xde, 0x30, 0x19, 0xc8, 0xf4, 0x86, 0xd5, 0x41, 0xba, 0x6d, 0xf3, 0x71, 0xe8, 0x90, 0xce, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xb8, 0x61, 0x3c, 0x90, 0xc0, 0x0d, 0xeb, 0x43, 0x0c, 0x8f, 0xc7, 0x0b, 0x82, 0xc5, 0x0d, 0x1e, 0x95, 0x78, 0x75, 0xf0, 0x64, 0xb3, 0xac, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x86, 0x0d, 0xe9, 0x40, 0x1a, 0x36, 0xbc, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc3, 0x86, 0xc1, 0x40, 0x1a, 0x36, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x6c, 0x88, 0x0f, 0xde, 0xd7, 0x01, 0x76, 0xf0, 0x4e, 0x1f, 0xad, 0x41, 0xb6, 0xc1, 0x33, 0x32, 0xc0, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x6c, 0xd8, 0x0d, 0xa4, 0x61, 0xc3, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc3, 0x86, 0xd5, 0xc1, 0xdb, 0x47, 0xc0, 0x06, 0xc1, 0x06, 0xcf, 0x73, 0xd2, 0x3a, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x6c, 0x43, 0x3a, 0x90, 0xb2, 0x0d, 0x6f, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x6d, 0x88, 0x07, 0x52, 0xb6, 0x61, 0x72, 0xf0, 0x46, 0x80, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xd9, 0x86, 0xcd, 0x40, 0xca, 0x36, 0xcc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xb6, 0x61, 0x36, 0x90, 0xb2, 0x0d, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x65, 0x1b, 0x46, 0x07, 0xaf, 0xb8, 0x01, 0x3b, 0x78, 0x8c, 0x6b, 0xcf, 0x20, 0xdb, 0xe0, 0xb5, 0x32, 0x60, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xca, 0x36, 0x6c, 0x07, 0x52, 0xb6, 0x61, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x6c, 0xc3, 0xf2, 0xe0, 0x89, 0x3d, 0x60, 0x07, 0xaf, 0x23, 0xbc, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x16, 0x37, 0x78, 0xcf, 0x8c, 0xd5, 0x41, 0x00, 0xdc, 0x2f, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x6c, 0xdc, 0x40, 0x3e, 0x36, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x17, 0x1b, 0xb2, 0x81, 0x5c, 0x6c, 0xc8, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x6c, 0x48, 0x06, 0x72, 0xb1, 0xe1, 0xc3, 0xc1, 0x8b, 0xdf, 0xb2, 0x06, 0xd9, 0x06, 0x2f, 0x28, 0x02, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc6, 0x86, 0x6c, 0x20, 0x19, 0x1b, 0xd2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x19, 0x1b, 0x92, 0x81, 0x64, 0x6c, 0x78, 0x72, 0xf0, 0xfc, 0x3b, 0xaf, 0x41, 0xb6, 0xc1, 0x0b, 0x8a, 0xc0, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xb1, 0x21, 0x1b, 0xc8, 0xc6, 0x86, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8d, 0x0d, 0xc9, 0x40, 0x36, 0x36, 0x9c, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xb1, 0x21, 0x1c, 0xc8, 0xc6, 0x86, 0xc1, 0xc1, 0x1b, 0x01, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1b, 0x1b, 0x16, 0x03, 0xd9, 0xd8, 0x30, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc6, 0x86, 0xd1, 0x40, 0x36, 0x36, 0xcc, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x6c, 0x98, 0x1c, 0xbc, 0x83, 0x0c, 0xec, 0xe0, 0x31, 0xae, 0x3d, 0x83, 0x6c, 0x83, 0xf7, 0x7e, 0x81, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xd8, 0xb0, 0x1c, 0xc8, 0xc6, 0x86, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8d, 0x0d, 0xbb, 0x83, 0x47, 0xaa, 0x81, 0x1d, 0xbc, 0x8e, 0xf0, 0xea, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x74, 0x22, 0x1a, 0x64, 0x1b, 0xbc, 0xa0, 0x08, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc7, 0x86, 0x6c, 0x20, 0x1d, 0x1b, 0x66, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3a, 0x36, 0x24, 0x03, 0xe9, 0xd8, 0xf0, 0x60, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc7, 0x86, 0x70, 0x20, 0x1d, 0x1b, 0x06, 0x07, 0xef, 0x47, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc7, 0x86, 0xc5, 0x40, 0x3a, 0x36, 0xac, 0x0e, 0xde, 0x77, 0xdb, 0x73, 0x1c, 0x3a, 0x74, 0x3f, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x6c, 0x43, 0x3a, 0x90, 0xb3, 0x0d, 0x3f, 0x06, 0xc1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb3, 0x0d, 0x83, 0x81, 0x9c, 0x6d, 0x68, 0x19, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x76, 0x43, 0xc7, 0x91, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x6d, 0x58, 0x0d, 0xe4, 0x6c, 0x43, 0xc9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x36, 0x0c, 0x07, 0x72, 0xb6, 0x61, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x6c, 0xc3, 0xec, 0xe0, 0x89, 0x8a, 0x60, 0x83, 0x60, 0x83, 0x56, 0xae, 0xcb, 0x0f, 0x9e, 0xef, 0xda, 0x33, 0xc8, 0x36, 0x78, 0x89, 0x21, 0xd8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x36, 0xac, 0x07, 0x72, 0xb6, 0x61, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x6c, 0xc3, 0xf6, 0xe0, 0xc9, 0x91, 0x60, 0x83, 0x60, 0x83, 0x56, 0xae, 0xcb, 0x0f, 0x1e, 0x8c, 0xe7, 0x35, 0xc8, 0x36, 0x78, 0x89, 0x21, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb3, 0x0d, 0x15, 0x03, 0x39, 0xdb, 0xd0, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x6c, 0x43, 0xc1, 0xc1, 0x0b, 0x32, 0xc1, 0x06, 0xc1, 0x06, 0xef, 0x10, 0xec, 0x38, 0xb4, 0x00, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xb6, 0x61, 0x33, 0x90, 0xb3, 0x0d, 0xa3, 0x43, 0x7f, 0xaa, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf1, 0x6d, 0x41, 0xb0, 0xc1, 0xb2, 0x30, 0x98, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x84, 0x0d, 0xe9, 0x40, 0x12, 0x36, 0xfc, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc2, 0x86, 0xc1, 0x40, 0x12, 0x36, 0x2c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x6c, 0x88, 0x0f, 0xde, 0x6d, 0x0a, 0x76, 0xf0, 0xd4, 0x7f, 0xac, 0x41, 0xb6, 0xc1, 0xf3, 0x44, 0xc1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xb0, 0x61, 0x34, 0x90, 0x84, 0x0d, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x09, 0x1b, 0x26, 0x07, 0xaf, 0x6a, 0x05, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xb0, 0x61, 0x35, 0x90, 0x84, 0x0d, 0xcb, 0x83, 0xf7, 0x23, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x61, 0xc3, 0x74, 0x20, 0x09, 0x1b, 0xd6, 0x07, 0x4f, 0xd3, 0xef, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x4d, 0x81, 0x06, 0xd9, 0x06, 0xcf, 0x13, 0x05, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xb0, 0xa1, 0x61, 0x20, 0x09, 0x1b, 0x5a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x6c, 0xd8, 0x1f, 0x3c, 0xb7, 0x17, 0x6c, 0x10, 0x6c, 0xf0, 0xe4, 0x11, 0xa4, 0x43, 0x0b, 0xb0, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0x58, 0xdc, 0x60, 0x58, 0xec, 0x6e, 0xf0, 0x1c, 0xc7, 0xac, 0x0d, 0x9e, 0x7f, 0xa4, 0x31, 0x1b, 0xa4, 0x01, 0x64, 0x1c, 0x14, 0xd5, 0x82, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x95, 0x19, 0x37, 0x90, 0xf4, 0x8c, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x65, 0x86, 0x78, 0x20, 0x95, 0x19, 0xb6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2a, 0x33, 0x24, 0x07, 0xcf, 0x53, 0x06, 0x1b, 0x76, 0xe1, 0x16, 0x03, 0x5f, 0x6d, 0xee, 0xcd, 0x3d, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x95, 0x19, 0x06, 0x03, 0xa9, 0xcc, 0xb0, 0x1a, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xf1, 0xcd, 0x60, 0x1b, 0x3c, 0xbe, 0x19, 0xec, 0x70, 0x8a, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xcc, 0x30, 0x1b, 0x48, 0x65, 0x86, 0xe9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0xe3, 0xc1, 0xb0, 0xd8, 0xdd, 0xe0, 0xe5, 0xd6, 0x60, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x1e, 0x63, 0xb0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x66, 0x88, 0x06, 0x72, 0x99, 0x61, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x32, 0x43, 0x72, 0xf0, 0x94, 0x6d, 0xb0, 0x41, 0xb0, 0xc1, 0xf3, 0x67, 0xb9, 0x0e, 0x4d, 0x81, 0x06, 0xd9, 0x06, 0xef, 0x31, 0x06, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x6a, 0x86, 0x7c, 0x20, 0xa9, 0x19, 0x0a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x66, 0x48, 0x0e, 0x9e, 0x23, 0x0e, 0x36, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x35, 0xc3, 0x60, 0x20, 0xa9, 0x19, 0x46, 0x07, 0xef, 0xcd, 0x20, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa9, 0x19, 0x56, 0x03, 0x49, 0xcd, 0x30, 0x3d, 0x68, 0x6b, 0x83, 0x69, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x33, 0x6c, 0x07, 0x92, 0x9a, 0x61, 0x7f, 0xf0, 0xb8, 0x52, 0xab, 0xe3, 0xd0, 0xa1, 0x13, 0xd1, 0x20, 0xdb, 0xe0, 0x3d, 0xc6, 0x60, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xcd, 0xb0, 0x18, 0xc8, 0x6b, 0x86, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd7, 0x0c, 0xc9, 0xc1, 0x63, 0xe9, 0xc1, 0x06, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x39, 0x58, 0x7c, 0x91, 0x35, 0xc8, 0x36, 0x78, 0x8f, 0x31, 0xd8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x72, 0x33, 0x4c, 0x06, 0x92, 0x9b, 0x61, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x36, 0x43, 0x72, 0xf0, 0xf4, 0x7d, 0xb0, 0x41, 0xb0, 0xc1, 0xc3, 0xf6, 0x7a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0x4c, 0xfd, 0xe2, 0x20, 0x69, 0x00, 0xe1, 0x38, 0x34, 0xc8, 0x36, 0x78, 0x8f, 0x31, 0xd8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x33, 0x0c, 0x06, 0xb2, 0x9c, 0xa1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x6f, 0x86, 0xe4, 0xe0, 0xa9, 0x04, 0x61, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x33, 0x2c, 0x06, 0xb2, 0x9c, 0x61, 0x74, 0xf0, 0x16, 0xa5, 0xac, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xe2, 0xcc, 0xc1, 0x93, 0x0e, 0xae, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x33, 0xac, 0x06, 0xb2, 0x9c, 0xa1, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcb, 0x19, 0x96, 0x03, 0x59, 0xce, 0x30, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x9c, 0x61, 0x76, 0xf0, 0x82, 0x89, 0xb0, 0x83, 0x97, 0x2b, 0x17, 0x0d, 0xb2, 0x0d, 0x1e, 0xea, 0x10, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe5, 0x0c, 0x45, 0x03, 0x59, 0xce, 0xd0, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x39, 0xc3, 0xfa, 0xe0, 0x85, 0x19, 0x61, 0x07, 0x2f, 0xd9, 0xeb, 0x19, 0x64, 0x1b, 0x3c, 0xd4, 0x21, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x72, 0x86, 0xb6, 0x81, 0x2c, 0x67, 0xa8, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x9c, 0xa1, 0xec, 0xe0, 0x01, 0x20, 0x61, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x40, 0xb1, 0x3a, 0x1e, 0x1f, 0x5a, 0x80, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0x07, 0x0f, 0xf1, 0xcc, 0x18, 0x64, 0x1b, 0xbc, 0xc7, 0x18, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd5, 0x19, 0x16, 0x03, 0xa9, 0xce, 0x30, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x9d, 0x21, 0x39, 0x78, 0x51, 0x4a, 0xd8, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xea, 0x0c, 0x93, 0x81, 0x54, 0x67, 0x58, 0x1d, 0xbc, 0xaa, 0x49, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x67, 0x98, 0x0d, 0xa4, 0x3a, 0xc3, 0xf2, 0xe0, 0x69, 0xfa, 0x3d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xce, 0x30, 0x1d, 0x48, 0x75, 0x86, 0xf5, 0xc1, 0xd3, 0xf4, 0x7b, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x83, 0x87, 0xd2, 0x66, 0x0c, 0xb2, 0x0d, 0xde, 0x63, 0x0c, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf0, 0x0c, 0xbb, 0x81, 0x84, 0x67, 0xb8, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x3b, 0x43, 0x72, 0xf0, 0x70, 0x9f, 0xb0, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe1, 0x19, 0x86, 0x03, 0x09, 0xcf, 0xb0, 0x3d, 0x78, 0x55, 0x93, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xcf, 0x30, 0x1e, 0x48, 0x78, 0x86, 0xfd, 0xc1, 0xd3, 0xf4, 0x7b, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0x0b, 0x83, 0x59, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xcf, 0x50, 0x30, 0x90, 0xf0, 0x0c, 0x0f, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x9e, 0xa1, 0x66, 0x20, 0xe1, 0x19, 0x8a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x67, 0x68, 0x38, 0x78, 0x86, 0x54, 0xd8, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x07, 0xef, 0x39, 0xce, 0x19, 0x64, 0x1b, 0x3c, 0xb5, 0x29, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe1, 0x19, 0xda, 0x06, 0x12, 0x9e, 0xa1, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x78, 0x86, 0xa6, 0x83, 0xa7, 0x65, 0x85, 0x1d, 0x3c, 0xb6, 0x20, 0x6a, 0x90, 0x6d, 0xf0, 0xd4, 0xa6, 0xb0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x67, 0xe8, 0x1c, 0x48, 0x78, 0x86, 0xde, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe1, 0x19, 0x2a, 0x0f, 0x1e, 0xff, 0x15, 0x76, 0xf0, 0x7a, 0xb0, 0xa8, 0x41, 0xb6, 0xc1, 0x53, 0x9b, 0xc2, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x67, 0x28, 0x1f, 0x48, 0x78, 0x86, 0x03, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x33, 0x14, 0x1f, 0x3c, 0xce, 0x2c, 0x6c, 0x10, 0x6c, 0xf0, 0x6e, 0x60, 0xab, 0x43, 0xf7, 0xa3, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xe0, 0xdd, 0x85, 0x4c, 0x83, 0x6c, 0x83, 0xf7, 0x18, 0x83, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xcf, 0xb0, 0x19, 0xc8, 0x79, 0x86, 0xfd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf3, 0x0c, 0xc9, 0xc1, 0xe3, 0xdd, 0xc2, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x67, 0x18, 0x0d, 0xe4, 0x3c, 0xc3, 0xf0, 0xe0, 0xfd, 0x08, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xcf, 0xb0, 0x1c, 0xc8, 0x79, 0x86, 0xf9, 0x41, 0x5b, 0x1b, 0x4c, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x41, 0xb3, 0xe6, 0x4c, 0xc7, 0xa1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0x58, 0x3c, 0x78, 0x54, 0xe2, 0xd5, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xd8, 0x86, 0x74, 0x20, 0x63, 0x1b, 0x7e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x6c, 0xc3, 0x60, 0x20, 0x63, 0x1b, 0x46, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x36, 0xc4, 0x07, 0xcf, 0x14, 0x0c, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0x04, 0xfb, 0xdd, 0xf1, 0xf8, 0x90, 0x86, 0x1b, 0x64, 0x1b, 0xbc, 0xc6, 0x2f, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x63, 0x1b, 0x76, 0x03, 0x19, 0xdb, 0xb0, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xb6, 0x61, 0x75, 0xf0, 0x42, 0xc5, 0xb0, 0x83, 0xd7, 0xd0, 0x64, 0x0d, 0xb2, 0x0d, 0x5e, 0xe3, 0x17, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x6c, 0xc3, 0x7c, 0x20, 0x63, 0x1b, 0x2a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x6d, 0x18, 0x1f, 0x3c, 0x1f, 0x32, 0xec, 0xe0, 0x25, 0x3c, 0x59, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x6c, 0x48, 0x07, 0x32, 0xb2, 0xe1, 0xcf, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x91, 0x0d, 0xf1, 0x40, 0x46, 0x36, 0x2c, 0x0e, 0x5e, 0xd5, 0x24, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x46, 0x36, 0x4c, 0x06, 0x32, 0xb2, 0x61, 0x74, 0xf0, 0x4a, 0x70, 0xab, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x6c, 0x58, 0x0d, 0x64, 0x64, 0xc3, 0x7c, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x64, 0xc3, 0x6c, 0x20, 0x23, 0x1b, 0xa6, 0x07, 0x6f, 0x04, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc8, 0x86, 0xed, 0x40, 0x46, 0x36, 0xac, 0x0f, 0x5e, 0x09, 0x6e, 0x75, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xdf, 0xb8, 0x81, 0xc4, 0x70, 0xfc, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xfb, 0x86, 0x64, 0x20, 0xef, 0x1b, 0xd2, 0x41, 0x32, 0x20, 0xf0, 0xbb, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x6f, 0xc8, 0x07, 0xf2, 0xbe, 0x61, 0x77, 0x90, 0x1a, 0x86, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf1, 0x1b, 0x77, 0xf0, 0x10, 0xd9, 0xb0, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf8, 0x0d, 0xc9, 0x40, 0xe2, 0x37, 0xa4, 0x83, 0x64, 0x20, 0xdd, 0x75, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x7e, 0xe3, 0x07, 0x72, 0xc1, 0xa1, 0x64, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfa, 0x8d, 0x3f, 0x78, 0x22, 0x71, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfd, 0x8d, 0x3f, 0x78, 0x22, 0x71, 0xd8, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xff, 0x86, 0x64, 0x20, 0x05, 0x1c, 0xb2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfe, 0x0d, 0xe9, 0x40, 0xfa, 0x37, 0x6c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x6f, 0xc8, 0x0f, 0xde, 0xfb, 0x1c, 0x36, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xbf, 0x61, 0x30, 0x90, 0xfe, 0x0d, 0xa3, 0x83, 0xe5, 0xb5, 0x62, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xdf, 0xb0, 0x1a, 0x48, 0xff, 0x86, 0xe9, 0x21, 0x75, 0x70, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xbf, 0x21, 0x39, 0x78, 0x3e, 0x73, 0xd8, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xff, 0x86, 0x74, 0x20, 0xff, 0x1b, 0x7a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x6f, 0xc8, 0x0f, 0x9e, 0xf3, 0x1d, 0x36, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xff, 0x86, 0xd9, 0x40, 0xfe, 0x37, 0xd4, 0x0c, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x6e, 0xc8, 0x63, 0x2d, 0xdc, 0x62, 0xc0, 0xa3, 0x57, 0x26, 0xf7, 0x36, 0x1f, 0xc6, 0xe5, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x00, 0x0e, 0xc9, 0xc1, 0xf3, 0x99, 0xc3, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x00, 0x87, 0x74, 0x20, 0x01, 0x1c, 0x2a, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x00, 0x87, 0x7c, 0x20, 0x01, 0x1c, 0x86, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x01, 0x1c, 0x06, 0x03, 0x09, 0xe0, 0xb0, 0x39, 0x38, 0x42, 0x15, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x00, 0x0e, 0xa3, 0x81, 0x04, 0x70, 0x58, 0x1d, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xc0, 0x61, 0x36, 0x90, 0x00, 0x0e, 0xbb, 0x83, 0x02, 0x00, 0xea, 0x38, 0xb4, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xe0, 0xb0, 0x1c, 0x48, 0x00, 0x87, 0xc6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x00, 0x0e, 0x15, 0x03, 0x09, 0xe0, 0x50, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xc0, 0xa1, 0x63, 0x20, 0x01, 0x1c, 0x7a, 0x06, 0xc9, 0x80, 0xb3, 0x7b, 0xdf, 0xc1, 0x49, 0xe8, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x70, 0x28, 0x1a, 0x48, 0x00, 0x87, 0xb6, 0xc3, 0x5e, 0xe1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x70, 0xa8, 0x1b, 0x48, 0x00, 0x87, 0xbe, 0xe3, 0xd0, 0x71, 0xe8, 0xe0, 0xc9, 0xf4, 0x4f, 0x87, 0x74, 0xee, 0xe1, 0x68, 0xdf, 0x10, 0xc3, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xc0, 0x21, 0x1d, 0xc8, 0x00, 0x87, 0x9a, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xc0, 0x21, 0x1f, 0xc8, 0x00, 0x87, 0xd5, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xe0, 0xb0, 0x18, 0xc8, 0x00, 0x87, 0xc9, 0x41, 0x01, 0x00, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x80, 0xc3, 0x66, 0x20, 0x03, 0x1c, 0x46, 0x87, 0xd4, 0xc1, 0xc2, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x80, 0xc3, 0x6c, 0x20, 0x03, 0x1c, 0x5a, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x00, 0x87, 0xdd, 0xc1, 0x73, 0x39, 0xc4, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x06, 0x38, 0x0c, 0x07, 0x32, 0xc0, 0x61, 0x7c, 0xd0, 0x80, 0x73, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xe0, 0xb0, 0x1e, 0xc8, 0x00, 0x87, 0x8a, 0xc3, 0x5e, 0xe1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x70, 0xe8, 0x18, 0xc8, 0x00, 0x87, 0x92, 0xe3, 0xd0, 0x71, 0xe8, 0xb0, 0xbe, 0x79, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0x43, 0x3a, 0x77, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x01, 0xc7, 0x1f, 0x3c, 0x91, 0x38, 0x6c, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x70, 0xc8, 0x06, 0x72, 0xc0, 0x61, 0x70, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x02, 0xc7, 0x1f, 0x3c, 0x91, 0x38, 0x6c, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x81, 0x43, 0x36, 0x90, 0x04, 0x0e, 0xf9, 0x41, 0xab, 0xb6, 0x49, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xe0, 0xf8, 0x83, 0x27, 0x12, 0x87, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x70, 0xc8, 0x06, 0xf2, 0xc0, 0x21, 0x1f, 0x24, 0x03, 0x96, 0xbe, 0xf7, 0x1d, 0x0c, 0x47, 0xe9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x70, 0xfc, 0xc1, 0x13, 0x89, 0xc3, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x38, 0x64, 0x03, 0x89, 0xe0, 0x90, 0x1f, 0x34, 0x8f, 0x3f, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x38, 0x2c, 0x06, 0x12, 0xc1, 0x61, 0x76, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x04, 0xc7, 0x1f, 0x3c, 0x91, 0x38, 0x6c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0a, 0x8e, 0x3f, 0x78, 0x22, 0x71, 0xd8, 0xb0, 0x1b, 0xba, 0x66, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x82, 0xc3, 0x62, 0x20, 0x15, 0x1c, 0x86, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xe0, 0x30, 0x19, 0x48, 0x05, 0x87, 0xd9, 0x21, 0x75, 0x70, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0b, 0x8e, 0x3f, 0x78, 0x22, 0x71, 0xd8, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x05, 0x87, 0x60, 0x20, 0x17, 0x1c, 0xc2, 0x41, 0xb2, 0x41, 0x39, 0xab, 0x73, 0x70, 0xcc, 0x2a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x17, 0x1c, 0xd2, 0x81, 0x5c, 0x70, 0x68, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xe0, 0x10, 0x0f, 0xe4, 0x82, 0xc3, 0xe2, 0xe0, 0xfc, 0x5d, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2e, 0x38, 0x4c, 0x06, 0x72, 0xc1, 0x61, 0x73, 0x70, 0x6e, 0x29, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0b, 0x0e, 0xa3, 0x81, 0x5c, 0x70, 0x28, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xe0, 0xb0, 0x1a, 0xc8, 0x05, 0x87, 0xe5, 0xc1, 0x73, 0x07, 0x4c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xc1, 0x61, 0x3a, 0x90, 0x0b, 0x0e, 0xfb, 0x83, 0xc0, 0xc4, 0x3e, 0x0e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x82, 0x43, 0xc5, 0x40, 0x2e, 0x38, 0x74, 0x1c, 0x62, 0x78, 0x1c, 0x3a, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x07, 0x1c, 0x26, 0x03, 0x39, 0xe0, 0xb0, 0x39, 0xc4, 0xf0, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1d, 0x1c, 0x77, 0xf0, 0x10, 0xd9, 0xb0, 0x41, 0xb0, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x17, 0x0e, 0xf1, 0x40, 0x5e, 0x38, 0x74, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x70, 0xc8, 0x07, 0xf2, 0xc2, 0x61, 0x33, 0x48, 0x06, 0x04, 0x7e, 0xd7, 0x41, 0xc0, 0xfb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x17, 0x0e, 0xa3, 0x81, 0xbc, 0x70, 0x98, 0x1d, 0x24, 0xca, 0x7d, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x0b, 0x87, 0xdd, 0x40, 0x5e, 0x38, 0x54, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x70, 0x18, 0x0e, 0xe4, 0x85, 0xc3, 0xf8, 0xa0, 0x05, 0xd8, 0xfc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xc2, 0x61, 0x3d, 0x90, 0x17, 0x0e, 0x15, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xe1, 0x30, 0x1f, 0xc8, 0x0b, 0x87, 0xfd, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xc2, 0xa1, 0x60, 0x20, 0x2f, 0x1c, 0x1a, 0x0e, 0xca, 0xb8, 0x9d, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xe1, 0xd0, 0x31, 0x90, 0x17, 0x0e, 0x4d, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x85, 0x43, 0xcf, 0xc1, 0xeb, 0x36, 0xc5, 0x06, 0xc9, 0x40, 0xfd, 0x3b, 0x08, 0x78, 0xff, 0x83, 0xd5, 0x9b, 0x68, 0xc7, 0xa1, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x38, 0xc4, 0x03, 0x69, 0xe1, 0xd0, 0x36, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xc2, 0x21, 0x1f, 0x48, 0x0b, 0x87, 0xcd, 0x41, 0x33, 0xcf, 0xf8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x85, 0xc3, 0x68, 0x20, 0x2d, 0x1c, 0xb6, 0x1b, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x85, 0xc3, 0xea, 0xe0, 0xd9, 0xa9, 0x62, 0x07, 0x2f, 0x37, 0x0f, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x16, 0x0e, 0xe3, 0x81, 0xb4, 0x70, 0x28, 0x1b, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x38, 0x14, 0x0d, 0xa4, 0x85, 0x43, 0xd7, 0xc1, 0xbb, 0x96, 0x0e, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xc2, 0xa1, 0x64, 0x20, 0x2d, 0x1c, 0x7a, 0x0e, 0xde, 0xb5, 0x74, 0x30, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x38, 0xec, 0x07, 0xd2, 0xc2, 0xa1, 0xe3, 0xa0, 0x71, 0xb1, 0xfb, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0e, 0x0e, 0xc9, 0x40, 0x56, 0x38, 0x64, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1d, 0x1c, 0xd2, 0x81, 0x74, 0x70, 0x58, 0x1c, 0xb4, 0xba, 0x74, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x38, 0x64, 0x03, 0x09, 0xe1, 0x30, 0x1c, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x21, 0x1c, 0xb2, 0x83, 0x17, 0x1e, 0x8b, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x70, 0x48, 0x07, 0x12, 0xc2, 0x61, 0x31, 0x48, 0x06, 0x14, 0xea, 0x7d, 0x07, 0xc3, 0x51, 0x7a, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xe1, 0x30, 0x19, 0x48, 0x08, 0x87, 0xcd, 0x21, 0x9a, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x38, 0x8c, 0x06, 0x12, 0xc2, 0x61, 0x75, 0x68, 0x24, 0x38, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xe1, 0x30, 0x1b, 0x48, 0x08, 0x87, 0xdd, 0x41, 0x50, 0x7a, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xe1, 0x90, 0x1c, 0xbc, 0x0f, 0x58, 0x6c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x70, 0xc8, 0x06, 0x92, 0xc2, 0x61, 0x39, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xc2, 0x21, 0x1c, 0x48, 0x0a, 0x87, 0xc1, 0xc1, 0xf3, 0x40, 0x1a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0a, 0x87, 0xc5, 0x40, 0x52, 0x38, 0x8c, 0x0e, 0xde, 0xb5, 0x74, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x29, 0x1c, 0x56, 0x03, 0x49, 0xe1, 0x30, 0x3c, 0x28, 0x19, 0x9a, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xe1, 0x90, 0x0d, 0xe4, 0x84, 0xc3, 0x76, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x84, 0x43, 0x38, 0x90, 0x13, 0x0e, 0x83, 0x83, 0x16, 0x60, 0xf3, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x09, 0x87, 0xc5, 0x40, 0x4e, 0x38, 0xcc, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xc2, 0x61, 0x32, 0x90, 0x13, 0x0e, 0x9b, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x70, 0x18, 0x0d, 0xe4, 0x84, 0xc3, 0xea, 0x70, 0xb4, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x09, 0x87, 0xdd, 0x40, 0x4e, 0x38, 0x4c, 0x0f, 0xc6, 0x1d, 0xd4, 0x71, 0x68, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x70, 0x48, 0x07, 0x32, 0xc2, 0x61, 0x71, 0xd0, 0xb8, 0xd8, 0xfd, 0xc1, 0x4a, 0x7c, 0x91, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x38, 0x64, 0x03, 0x29, 0xe1, 0xb0, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xe1, 0x10, 0x0e, 0xa4, 0x84, 0xc3, 0xe0, 0xe0, 0x79, 0x20, 0x0d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x84, 0xc3, 0x62, 0x20, 0x25, 0x1c, 0x46, 0x07, 0xef, 0x5a, 0x3a, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x12, 0x0e, 0xab, 0x81, 0x94, 0x70, 0x18, 0x1e, 0x94, 0x0c, 0x4d, 0xc7, 0xa1, 0x83, 0x67, 0x10, 0x8c, 0x1d, 0x87, 0x0e, 0xd6, 0xf2, 0x09, 0x1c, 0x87, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xdf, 0xb8, 0x81, 0x9c, 0x6f, 0xa8, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xdf, 0x90, 0x0c, 0xa4, 0x7c, 0xc3, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf9, 0x86, 0xf4, 0xe0, 0x8d, 0x1e, 0x63, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe5, 0x1b, 0xe2, 0x81, 0x94, 0x6f, 0x18, 0x0d, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf2, 0x0d, 0x93, 0x83, 0x87, 0x8f, 0x8c, 0x1d, 0x9c, 0x02, 0x7c, 0x0f, 0x4a, 0x86, 0xa6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x6f, 0x58, 0x0d, 0xa4, 0x7c, 0xc3, 0x76, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x6f, 0x58, 0x1e, 0xbc, 0x69, 0x65, 0x6c, 0x90, 0x0c, 0xd4, 0xbf, 0x83, 0x20, 0xe7, 0x3f, 0x58, 0x50, 0x6d, 0x76, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xbe, 0x71, 0x07, 0x0f, 0xde, 0x18, 0x1b, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xdf, 0xd8, 0x81, 0x9c, 0x6f, 0x88, 0x0e, 0x5e, 0x39, 0x28, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x37, 0x64, 0x03, 0x39, 0xdf, 0x10, 0x1f, 0x24, 0xa5, 0xf5, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf9, 0x86, 0x7c, 0x20, 0xe7, 0x1b, 0x9a, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf3, 0x0d, 0xdb, 0x81, 0x9c, 0x6f, 0x28, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xdf, 0x30, 0x1e, 0xc8, 0xf9, 0x86, 0x82, 0x83, 0x16, 0x60, 0xf3, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf9, 0x86, 0x86, 0x81, 0x9c, 0x6f, 0xa8, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf9, 0x86, 0x8a, 0x81, 0x9c, 0x6f, 0xe8, 0x38, 0xf4, 0x27, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xbe, 0xa1, 0x64, 0x20, 0xe7, 0x1b, 0x5a, 0x0e, 0xfd, 0xc9, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x7c, 0x43, 0xcf, 0x40, 0xce, 0x37, 0xf4, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe7, 0x1b, 0x3a, 0x07, 0x72, 0xbe, 0xa1, 0xf6, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf3, 0x0d, 0x7d, 0x03, 0x39, 0xdf, 0x50, 0x79, 0xf0, 0xc2, 0xa1, 0x83, 0x41, 0xb0, 0x41, 0x90, 0xc5, 0x2f, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0xad, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xbe, 0xa1, 0x6a, 0x20, 0xe7, 0x1b, 0xea, 0x0e, 0x52, 0x63, 0x2c, 0x0e, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x8f, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xdf, 0xb0, 0x1b, 0xc8, 0xf9, 0x86, 0xe9, 0x71, 0x68, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x6f, 0x98, 0x0c, 0xe4, 0x7c, 0xc3, 0xec, 0xa0, 0x71, 0xb1, 0xfb, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0x58, 0x3c, 0x78, 0x75, 0xd1, 0xd6, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xbb, 0xc6, 0x0d, 0x64, 0x5f, 0xe3, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xae, 0x21, 0x1d, 0xc8, 0xbb, 0x86, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x77, 0x0d, 0xc9, 0x40, 0xde, 0x35, 0x1c, 0x39, 0x78, 0x6c, 0x61, 0xd8, 0x20, 0xdb, 0xe0, 0xf5, 0x68, 0x63, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xd7, 0x90, 0x0e, 0x24, 0x5e, 0xc3, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbc, 0x86, 0x64, 0x20, 0xf1, 0x1a, 0xee, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xd7, 0x10, 0x0f, 0x24, 0x5e, 0xc3, 0x62, 0x90, 0x0c, 0xfc, 0xd3, 0x77, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbc, 0x86, 0xc9, 0x40, 0xe2, 0x35, 0xcc, 0x0e, 0x1e, 0xe8, 0x3e, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x78, 0x0d, 0xbb, 0x81, 0xc4, 0x6b, 0x58, 0x1e, 0xbc, 0x12, 0xdc, 0xea, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0xbc, 0x1e, 0x6d, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf3, 0x1a, 0xd2, 0x81, 0xcc, 0x6b, 0x58, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xd7, 0x90, 0x0c, 0x64, 0x5e, 0xc3, 0x91, 0x83, 0x87, 0xbc, 0x69, 0x0d, 0xb2, 0x0d, 0x5e, 0x8f, 0x36, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7a, 0x0d, 0xe9, 0x40, 0xea, 0x35, 0xcc, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x6b, 0x48, 0x06, 0x52, 0xaf, 0xe1, 0xcc, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7a, 0x0d, 0xf1, 0x40, 0xea, 0x35, 0x4c, 0x0e, 0xde, 0x8f, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7a, 0x0d, 0x9b, 0x81, 0xd4, 0x6b, 0x58, 0x1d, 0xbc, 0x12, 0xdc, 0xea, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x58, 0xc2, 0xff, 0x33, 0xc8, 0x36, 0x78, 0x3d, 0xda, 0xd8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x35, 0xa4, 0x03, 0xb9, 0xd7, 0xb0, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xaf, 0x21, 0x19, 0xc8, 0xbd, 0x86, 0x1b, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x35, 0xc4, 0x03, 0xb9, 0xd7, 0x30, 0x39, 0x78, 0x6f, 0x06, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xd7, 0xb0, 0x19, 0xc8, 0xbd, 0x86, 0xd9, 0xc1, 0xd3, 0x24, 0xb6, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xaf, 0x61, 0x37, 0x90, 0x7b, 0x0d, 0xd3, 0x41, 0xb0, 0xc1, 0xc3, 0xf6, 0x7a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0xb9, 0xb7, 0x39, 0xa4, 0x6a, 0x8e, 0x43, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xc1, 0x7b, 0x0e, 0x33, 0x06, 0xd9, 0x06, 0xaf, 0x47, 0x1b, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xaf, 0x21, 0x1d, 0x48, 0xbe, 0x86, 0xe5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7c, 0x0d, 0xc9, 0x40, 0xf2, 0x35, 0x1c, 0x19, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xaf, 0x21, 0x1e, 0x48, 0xbe, 0x86, 0xc5, 0xc1, 0xab, 0x9a, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbe, 0x86, 0xc9, 0x40, 0xf2, 0x35, 0xcc, 0x0e, 0x1e, 0xe8, 0x3e, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7c, 0x0d, 0xbb, 0x81, 0xe4, 0x6b, 0x18, 0x1e, 0x52, 0x07, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0x41, 0xa3, 0x13, 0x4a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x29, 0x08, 0xd9, 0x40, 0x2d, 0x08, 0x6f, 0x86, 0xdd, 0xd0, 0x71, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x16, 0x84, 0xec, 0xe0, 0x9d, 0xce, 0x63, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x20, 0xc4, 0x03, 0xb5, 0x20, 0x4c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5a, 0x10, 0xc2, 0x83, 0x17, 0x51, 0x8f, 0x0d, 0x82, 0x0d, 0xda, 0x19, 0xb9, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x31, 0xf0, 0xea, 0xf0, 0x88, 0x43, 0xd6, 0xee, 0x38, 0x34, 0xc8, 0x36, 0x78, 0xff, 0xf3, 0xd8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2d, 0x08, 0xab, 0x81, 0x5a, 0x10, 0x96, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2d, 0x08, 0x9b, 0x83, 0x07, 0x75, 0x8f, 0x0d, 0x82, 0x0d, 0xda, 0x19, 0xb9, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xf0, 0x6a, 0xec, 0xb1, 0x43, 0x0f, 0xa1, 0xe3, 0xd0, 0x20, 0xdb, 0xe0, 0xfd, 0xcf, 0x63, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2d, 0x08, 0xe3, 0x81, 0x5a, 0x10, 0x0a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5a, 0x10, 0xa6, 0x07, 0x0f, 0x2e, 0x1f, 0x1b, 0x04, 0x1b, 0xb4, 0x33, 0x72, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0xd5, 0xd8, 0x63, 0x87, 0x8e, 0x61, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x14, 0x84, 0x7c, 0xa0, 0x14, 0x84, 0x1f, 0xc3, 0x6e, 0xf0, 0x96, 0xdf, 0xa3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x52, 0x10, 0x16, 0x03, 0xa5, 0x20, 0x6c, 0x0e, 0x1e, 0x2d, 0x7c, 0x34, 0xec, 0x06, 0xef, 0x56, 0xd0, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x05, 0x61, 0x34, 0x50, 0x0a, 0xc2, 0x6c, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x68, 0x83, 0x6b, 0xe0, 0xe0, 0xdd, 0x01, 0x3d, 0xc3, 0x6e, 0xf0, 0xa8, 0x01, 0x9d, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x52, 0x10, 0x76, 0x03, 0xa5, 0x20, 0x2c, 0x0f, 0x9e, 0xdd, 0x79, 0x34, 0xec, 0x06, 0xaf, 0x29, 0xd0, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x05, 0x61, 0x3a, 0x50, 0x0a, 0xc2, 0xf8, 0xe0, 0xf1, 0xa2, 0x47, 0xc3, 0x2e, 0xdc, 0x06, 0xab, 0xba, 0x17, 0x0e, 0xa9, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x52, 0x10, 0xd6, 0x03, 0xa5, 0x20, 0xec, 0x87, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0x55, 0xdd, 0x0b, 0x07, 0xaf, 0x90, 0xf8, 0x19, 0x76, 0x83, 0xa7, 0x9e, 0x1f, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0x82, 0x50, 0x30, 0x50, 0x0a, 0x42, 0xc5, 0xc1, 0x9b, 0xd6, 0x8f, 0x86, 0xdd, 0xe0, 0x55, 0x10, 0x3a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa5, 0x20, 0x74, 0x0c, 0x94, 0x82, 0xd0, 0x32, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x2c, 0x5e, 0x01, 0x3a, 0x78, 0x91, 0x4a, 0xcf, 0xb0, 0x1b, 0xbc, 0x7b, 0xfb, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x14, 0x84, 0x9a, 0x81, 0x52, 0x10, 0x8a, 0x0e, 0x9e, 0xf7, 0x7d, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0x82, 0xd0, 0x34, 0x50, 0x0a, 0x42, 0xd7, 0xc1, 0xd2, 0x53, 0xa3, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0x80, 0x90, 0x0d, 0x94, 0x80, 0xf0, 0x64, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x01, 0x21, 0x1c, 0x28, 0x01, 0x61, 0x70, 0xd0, 0x48, 0x92, 0xfd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x25, 0x20, 0x2c, 0x06, 0x4a, 0x40, 0x18, 0x1d, 0x34, 0x2c, 0x72, 0x7f, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x02, 0xc2, 0x6a, 0xa0, 0x04, 0x84, 0xd9, 0x20, 0xd8, 0xa0, 0x9d, 0x91, 0xfb, 0x83, 0x71, 0x1c, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x67, 0x21, 0x1b, 0xc8, 0xd4, 0xc5, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xb3, 0xe8, 0xc1, 0x23, 0x55, 0xc8, 0x16, 0x17, 0x04, 0x8b, 0x1b, 0x3c, 0x72, 0x0f, 0xa3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x99, 0x8b, 0x1b, 0x48, 0xd0, 0xc5, 0x0f, 0xbb, 0xc1, 0xcb, 0xfd, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x73, 0x21, 0x19, 0xc8, 0xcc, 0x85, 0x3b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xb9, 0x10, 0x0d, 0x64, 0xe6, 0x42, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x2b, 0xfe, 0x82, 0x36, 0x78, 0xc5, 0x5f, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0x4d, 0x86, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xcc, 0x85, 0xc9, 0x40, 0x66, 0x2e, 0xac, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x5c, 0x18, 0x1c, 0xbc, 0x87, 0x87, 0xec, 0xe0, 0xdd, 0x95, 0x3d, 0xc3, 0x6e, 0xf0, 0x78, 0xac, 0x8d, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6a, 0x2e, 0x4c, 0x06, 0x52, 0x73, 0x61, 0x36, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0xa4, 0xd7, 0x8e, 0xc7, 0x87, 0x46, 0x2d, 0xc3, 0x6e, 0xf0, 0x48, 0x10, 0x9b, 0x83, 0xb1, 0x30, 0x3a, 0xec, 0x06, 0x6f, 0xb0, 0x0b, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xcd, 0x85, 0x64, 0x20, 0x37, 0x17, 0x26, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xb9, 0x10, 0x0d, 0xe4, 0xe6, 0x42, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x7b, 0xec, 0x82, 0x36, 0x78, 0x8f, 0x5d, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0xf2, 0x88, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xcd, 0x85, 0xc1, 0x40, 0x6e, 0x2e, 0x2c, 0x0e, 0x86, 0xe6, 0xef, 0xb0, 0x1b, 0xbc, 0x5c, 0x2d, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x39, 0x17, 0x92, 0x81, 0xe4, 0x5c, 0x78, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9c, 0x0b, 0xd1, 0x40, 0x72, 0x2e, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0x62, 0x2d, 0xe8, 0xe0, 0xe9, 0xc6, 0x4b, 0x83, 0x6c, 0x83, 0x77, 0x4d, 0x91, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xb9, 0x30, 0x18, 0x48, 0xce, 0x85, 0xc5, 0xc1, 0xd0, 0xfc, 0x1d, 0x76, 0x83, 0x47, 0x8f, 0x05, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xe7, 0x42, 0x32, 0x90, 0x9d, 0x0b, 0x5f, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x73, 0x21, 0x1a, 0xc8, 0xce, 0x85, 0x7c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x07, 0x90, 0x05, 0x6d, 0xf0, 0x00, 0xb2, 0xa0, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0xb4, 0x17, 0xd9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9d, 0x0b, 0x83, 0x81, 0xec, 0x5c, 0x58, 0x1c, 0x0c, 0xcd, 0xdf, 0x61, 0x37, 0x68, 0x67, 0xdf, 0x7e, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9e, 0x0b, 0x93, 0x81, 0xf4, 0x5c, 0x98, 0x1d, 0xbc, 0x6e, 0x88, 0x6c, 0xd8, 0x85, 0xdb, 0xa0, 0xa5, 0x64, 0xfb, 0x83, 0x90, 0x02, 0x3f, 0x18, 0x0b, 0xa3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7e, 0x2e, 0x24, 0x03, 0xf9, 0xb9, 0xf0, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3f, 0x17, 0xa2, 0x81, 0xfc, 0x5c, 0xc8, 0x0f, 0x9e, 0x16, 0x88, 0x31, 0xc8, 0x36, 0x78, 0xf0, 0x1b, 0xd9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9f, 0x0b, 0x83, 0x81, 0xfc, 0x5c, 0x58, 0x1c, 0x0c, 0xcd, 0xdf, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0xf1, 0x60, 0x81, 0x2d, 0xe9, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xca, 0xc5, 0x0d, 0xe4, 0xe5, 0xe2, 0x87, 0x5d, 0xd8, 0x85, 0x5b, 0x0c, 0xbc, 0x31, 0x36, 0xf9, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x6f, 0x2e, 0xec, 0x3c, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0x83, 0xb1, 0x20, 0x76, 0x88, 0xe6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0x27, 0x56, 0xc6, 0x1e, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0xcd, 0x85, 0xd9, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0x78, 0x6e, 0x65, 0xec, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0xf0, 0xfe, 0x2c, 0xab, 0x43, 0x34, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0x5b, 0x0c, 0xbc, 0x3a, 0x39, 0xf6, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x16, 0x03, 0x0f, 0xed, 0x0d, 0x3e, 0x44, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0xc5, 0xc0, 0x5b, 0x63, 0x93, 0x0f, 0xd1, 0xdc, 0x10, 0xc3, 0xe1, 0x16, 0x0f, 0xda, 0x54, 0xe8, 0x3d, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2b, 0x17, 0x92, 0x81, 0xac, 0x5c, 0xb8, 0x32, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0x60, 0x89, 0x59, 0xca, 0xa1, 0x51, 0xcb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x96, 0x0b, 0xc9, 0x40, 0x5a, 0x2e, 0x5c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xcb, 0x85, 0x68, 0x20, 0x2d, 0x17, 0xe2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0xc7, 0x83, 0x65, 0xb0, 0xa0, 0x1b, 0x3c, 0x0d, 0x93, 0xec, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0x2d, 0x49, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xe5, 0x42, 0x3e, 0x90, 0x96, 0x0b, 0x83, 0x83, 0xa1, 0xf9, 0x7b, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0x78, 0xd0, 0x40, 0x4d, 0xef, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc0, 0xc5, 0x0d, 0x24, 0xe3, 0xe2, 0x87, 0xdd, 0xe0, 0x5d, 0x82, 0x64, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xb8, 0x90, 0x0c, 0x64, 0xe0, 0xc2, 0x93, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x5c, 0x88, 0x06, 0x32, 0x70, 0x21, 0x1e, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x8d, 0x82, 0x64, 0x1b, 0xbc, 0x51, 0x90, 0xec, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0x30, 0x4a, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xe0, 0x42, 0x3e, 0x90, 0x81, 0x0b, 0x83, 0x83, 0xa1, 0xf9, 0x3b, 0xec, 0x06, 0x4f, 0xed, 0x23, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc1, 0x85, 0x64, 0x20, 0x05, 0x17, 0xde, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xe0, 0x42, 0x34, 0x90, 0x82, 0x0b, 0xf1, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xcf, 0xee, 0x23, 0xdb, 0xe0, 0xd9, 0x7d, 0x64, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x6a, 0x57, 0xb2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x05, 0x17, 0xf2, 0x81, 0x14, 0x5c, 0x18, 0x1c, 0x0c, 0xcd, 0xdf, 0x61, 0x37, 0x78, 0x90, 0x22, 0xd9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0e, 0x2e, 0x24, 0x03, 0x39, 0xb8, 0xf0, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x07, 0x17, 0xa2, 0x81, 0x1c, 0x5c, 0x88, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x9c, 0x22, 0xd9, 0x06, 0x8f, 0x53, 0x24, 0x3b, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x87, 0xea, 0x92, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xb8, 0xb0, 0x18, 0xc8, 0xc1, 0x85, 0x9a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x07, 0x17, 0xf2, 0x83, 0xc7, 0x11, 0x93, 0x0d, 0xbb, 0xc1, 0xe8, 0xc5, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc1, 0x85, 0xe1, 0x40, 0x0e, 0x2e, 0xb4, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xe0, 0xc2, 0x76, 0x20, 0x07, 0x17, 0xe6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0e, 0x2e, 0x2c, 0x0f, 0x9e, 0xcd, 0x4c, 0x76, 0xf0, 0x92, 0xbd, 0x9e, 0x41, 0xb6, 0xc1, 0xeb, 0x90, 0xc9, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x5c, 0x68, 0x18, 0xc8, 0xc1, 0x85, 0x92, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x07, 0x17, 0xf6, 0x07, 0x8f, 0x9a, 0x26, 0x1b, 0x04, 0x1b, 0x3c, 0x6c, 0xaf, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc2, 0x43, 0x99, 0x43, 0xc7, 0xb0, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x83, 0x0b, 0xa3, 0x81, 0x1c, 0x5c, 0xd8, 0x1d, 0xbc, 0xbb, 0xb2, 0x67, 0xd8, 0x0d, 0x9e, 0xbd, 0x48, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x84, 0x0b, 0xc9, 0x40, 0x12, 0x2e, 0xfc, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc2, 0x85, 0x68, 0x20, 0x09, 0x17, 0xe2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x9e, 0xc0, 0x48, 0xb6, 0xc1, 0x13, 0x18, 0xc9, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x39, 0xdd, 0x64, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x2e, 0x2c, 0x06, 0x92, 0x70, 0x61, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xe1, 0x42, 0x7e, 0xf0, 0x84, 0x73, 0xb2, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0x6d, 0xc6, 0xf9, 0x1f, 0x3a, 0x68, 0x0c, 0xbb, 0xc1, 0xb3, 0x01, 0xc9, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x70, 0x21, 0x19, 0xc8, 0xc2, 0x85, 0x2f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xb8, 0x10, 0x0d, 0x64, 0xe1, 0x42, 0x3c, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x13, 0x02, 0xc9, 0x36, 0x78, 0x42, 0x20, 0xd9, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0x99, 0x9d, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc2, 0x85, 0xc5, 0x40, 0x16, 0x2e, 0x8c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x5c, 0xc8, 0x0f, 0xde, 0x69, 0x4f, 0x36, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xe1, 0xc2, 0x64, 0x20, 0x0b, 0x17, 0x66, 0x07, 0x6f, 0x04, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc2, 0x85, 0xdd, 0x40, 0x16, 0x2e, 0x6c, 0x0f, 0x96, 0x98, 0xa5, 0x1c, 0x87, 0x0e, 0x1d, 0x34, 0x86, 0xdd, 0xe0, 0x8d, 0x85, 0x64, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xb8, 0x90, 0x0c, 0xa4, 0xe1, 0xc2, 0x89, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x5c, 0x88, 0x06, 0xd2, 0x70, 0x21, 0x1e, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xbd, 0x85, 0x64, 0x1b, 0xbc, 0xb7, 0x90, 0xec, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0x3a, 0x50, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xe1, 0x42, 0x3e, 0x90, 0x86, 0x0b, 0x83, 0x83, 0xa1, 0xf9, 0x3b, 0xec, 0x06, 0x2f, 0x39, 0x24, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc3, 0x85, 0x64, 0x20, 0x0f, 0x17, 0xfe, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xe1, 0x42, 0x34, 0x90, 0x87, 0x0b, 0xf1, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xef, 0xcf, 0xb2, 0x3a, 0x78, 0xb0, 0x97, 0xd5, 0x20, 0xdb, 0xe0, 0x75, 0x0f, 0x65, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1e, 0x2e, 0x2c, 0x06, 0xf2, 0x70, 0x61, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xe1, 0x42, 0x7e, 0xf0, 0x74, 0x8c, 0xb2, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0f, 0x17, 0x26, 0x03, 0x79, 0xb8, 0x30, 0x3b, 0x78, 0x23, 0x40, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1e, 0x2e, 0xec, 0x06, 0xf2, 0x70, 0x61, 0x39, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0xc1, 0x7b, 0x55, 0x79, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x61, 0x37, 0x78, 0xd0, 0x1f, 0xd9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x2e, 0x24, 0x03, 0x89, 0xb8, 0x70, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x11, 0x17, 0xa2, 0x81, 0x44, 0x5c, 0x88, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0xdc, 0x1f, 0xd9, 0x06, 0x8f, 0xfb, 0x23, 0x3b, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x07, 0xa1, 0x94, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xe2, 0xc2, 0x62, 0x20, 0x11, 0x17, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x2e, 0xe4, 0x07, 0xcf, 0x90, 0x29, 0x3b, 0x78, 0xc2, 0xd0, 0xd1, 0x20, 0xdb, 0xe0, 0x41, 0x28, 0x65, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x2e, 0x0c, 0x07, 0x12, 0x71, 0x61, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xe2, 0xc2, 0xec, 0xe0, 0x89, 0x38, 0x65, 0x07, 0x41, 0xe9, 0x3d, 0xec, 0x06, 0xaf, 0x1f, 0x24, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc4, 0x85, 0x64, 0x20, 0x13, 0x17, 0x9e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xe2, 0x42, 0x34, 0x90, 0x89, 0x0b, 0xf1, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x2f, 0x21, 0x24, 0xdb, 0xe0, 0x25, 0x84, 0x64, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x8a, 0x9e, 0xb2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x5c, 0x58, 0x0c, 0x64, 0xe2, 0xc2, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc4, 0x85, 0xfc, 0xe0, 0xed, 0x46, 0x65, 0x07, 0x4f, 0x18, 0x3a, 0x1a, 0x64, 0x1b, 0xbc, 0xa2, 0xa7, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc4, 0x85, 0xe1, 0x40, 0x26, 0x2e, 0x2c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x5c, 0x98, 0x1d, 0xbc, 0xab, 0xa9, 0x6c, 0x10, 0x6c, 0xf0, 0xb0, 0xbd, 0x9e, 0x83, 0x63, 0x76, 0xef, 0xb0, 0x1b, 0x3c, 0x15, 0x91, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x15, 0x17, 0x92, 0x81, 0x54, 0x5c, 0x78, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8a, 0x0b, 0xd1, 0x40, 0x2a, 0x2e, 0xc4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0x1b, 0x91, 0x6c, 0x83, 0x67, 0x23, 0x92, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x7b, 0xa5, 0xca, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x5c, 0x58, 0x0c, 0xa4, 0xe2, 0xc2, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc5, 0x85, 0xfc, 0xe0, 0x8d, 0x5c, 0x65, 0x07, 0xaf, 0x23, 0xbc, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x71, 0x21, 0x19, 0xc8, 0xc5, 0x85, 0x37, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xb8, 0x10, 0x0d, 0xe4, 0xe2, 0x42, 0x3c, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xe3, 0x1a, 0xc9, 0x36, 0x78, 0x5c, 0x23, 0xd9, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xbc, 0x0d, 0xac, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc5, 0x85, 0x7c, 0x20, 0x17, 0x17, 0x06, 0x07, 0x43, 0xf3, 0xf7, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xdc, 0x42, 0x3a, 0x90, 0x71, 0x0b, 0x4f, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x6e, 0x61, 0x30, 0x90, 0x71, 0x0b, 0x9b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe3, 0x16, 0xe2, 0x83, 0xd7, 0xc5, 0x95, 0x1d, 0xbc, 0x5c, 0xb9, 0x68, 0x90, 0x6d, 0xf0, 0x88, 0xb6, 0xb2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe3, 0x16, 0x66, 0x03, 0x19, 0xb7, 0xb0, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x6e, 0x61, 0x74, 0xf0, 0xf2, 0xbb, 0xb2, 0x83, 0x77, 0x57, 0xf6, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x6f, 0x71, 0x03, 0xf9, 0xb7, 0xf8, 0x61, 0x37, 0x74, 0x1c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbd, 0xc5, 0x1d, 0xbc, 0xe0, 0xaf, 0x6c, 0xd8, 0x85, 0x5b, 0x0c, 0xbc, 0x30, 0xb9, 0xf7, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x5b, 0x48, 0x06, 0x52, 0x6f, 0xe1, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x2d, 0x44, 0x03, 0xa9, 0xb7, 0x10, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0x7c, 0xc1, 0xb2, 0x0d, 0x9e, 0x2f, 0x58, 0x76, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x2f, 0x21, 0x2c, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x6f, 0x61, 0x31, 0x90, 0x7a, 0x0b, 0xfb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf5, 0x16, 0xf2, 0x83, 0xd7, 0x37, 0x96, 0x0d, 0xbb, 0xc1, 0x52, 0x8c, 0x8b, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x5b, 0xd8, 0x0c, 0xa4, 0xde, 0xc2, 0x6a, 0xd8, 0x85, 0xdb, 0x30, 0x2e, 0x07, 0x03, 0xdf, 0xf8, 0x60, 0xa4, 0x1d, 0x0f, 0xbb, 0x70, 0x1b, 0xac, 0x63, 0x06, 0x3b, 0x8c, 0xcb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x2d, 0xcc, 0x06, 0x52, 0x6f, 0x61, 0x38, 0xec, 0xc2, 0x6d, 0x18, 0x97, 0x83, 0x75, 0xcc, 0x60, 0x07, 0xcf, 0xc4, 0xe9, 0x19, 0x76, 0x83, 0x75, 0x68, 0x09, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xb7, 0xb0, 0x1c, 0x48, 0xbd, 0x85, 0xed, 0xb0, 0x0b, 0xb7, 0x61, 0x5c, 0x0e, 0xd6, 0xa4, 0x25, 0x1c, 0xbc, 0x81, 0xf8, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbd, 0x85, 0xf1, 0x40, 0xea, 0x2d, 0xcc, 0x87, 0x5d, 0xb8, 0x0d, 0xe3, 0x72, 0x70, 0xd2, 0xdb, 0x3d, 0x78, 0x3e, 0xf5, 0xd1, 0xb0, 0x0b, 0xb7, 0x18, 0x78, 0x62, 0x61, 0xe3, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xb7, 0x90, 0x0c, 0xe4, 0xde, 0xc2, 0x97, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x5b, 0x88, 0x06, 0x72, 0x6f, 0x21, 0x1e, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x1d, 0xa5, 0x65, 0x1b, 0xbc, 0xa3, 0xb4, 0xec, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0x64, 0x5a, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xde, 0x42, 0x3e, 0x90, 0x7b, 0x0b, 0x83, 0x83, 0xa1, 0xf9, 0x3b, 0xec, 0x06, 0xcf, 0xfb, 0x48, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbe, 0x85, 0x64, 0x20, 0xf9, 0x16, 0x8e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xdf, 0x42, 0x34, 0x90, 0x7c, 0x0b, 0xf1, 0xc1, 0x5b, 0x4b, 0x92, 0x06, 0xd9, 0x06, 0xaf, 0x90, 0x2d, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x6f, 0x21, 0x1f, 0x48, 0xbe, 0x85, 0xc1, 0xc1, 0xd0, 0xfc, 0x1d, 0x76, 0xe1, 0x16, 0x0f, 0x96, 0xf7, 0x86, 0x1e, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7d, 0x0b, 0xc9, 0x40, 0xf6, 0x2d, 0x1c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xbe, 0x85, 0x68, 0x20, 0xfb, 0x16, 0xe2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x1e, 0xbb, 0x5b, 0xb6, 0xc1, 0x63, 0x77, 0xcb, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0xd9, 0xbc, 0x65, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xb7, 0xb0, 0x18, 0xc8, 0xbe, 0x85, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7d, 0x0b, 0xf9, 0xc1, 0x63, 0x8d, 0xcb, 0x0e, 0x5e, 0xb2, 0xd7, 0x33, 0xc8, 0x36, 0x78, 0x36, 0x6f, 0xd9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7d, 0x0b, 0xbb, 0x81, 0xec, 0x5b, 0x98, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xb7, 0xb0, 0x3a, 0x78, 0x48, 0x73, 0xd9, 0xc1, 0xe3, 0xac, 0xc9, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x5b, 0x48, 0x06, 0xd2, 0x6f, 0xe1, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfa, 0x2d, 0x44, 0x03, 0xe9, 0xb7, 0x10, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x39, 0x06, 0x9e, 0x5c, 0x19, 0xbd, 0xc1, 0x2b, 0xad, 0xcb, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x05, 0xd1, 0x65, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfa, 0x2d, 0xe4, 0x03, 0xe9, 0xb7, 0x30, 0x38, 0x18, 0x9a, 0xbf, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe6, 0x2d, 0x24, 0x03, 0x99, 0xb7, 0xf0, 0xe6, 0xe0, 0xb5, 0x24, 0x65, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x06, 0x2f, 0x67, 0x0b, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xcf, 0xe2, 0x06, 0xf2, 0x68, 0xf1, 0xc3, 0x2e, 0xdc, 0x06, 0x8f, 0x98, 0x9e, 0x39, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7f, 0x16, 0x92, 0x81, 0xfc, 0x59, 0x38, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3f, 0x0b, 0xd1, 0x40, 0xfe, 0x2c, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0x62, 0x7a, 0x66, 0x83, 0x47, 0x4c, 0xcf, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0xbb, 0xc9, 0xcb, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x59, 0x98, 0x0c, 0xe4, 0xcf, 0xc2, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x9f, 0x85, 0xc1, 0xc1, 0x5b, 0xdd, 0xcb, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x59, 0xd8, 0x0c, 0xe4, 0xcf, 0xc2, 0xee, 0xe0, 0x8d, 0x00, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xb3, 0x30, 0x1c, 0xc8, 0x9f, 0x85, 0xf1, 0xc1, 0x12, 0xb3, 0x94, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x6c, 0x6f, 0x67, 0xef, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xb4, 0x90, 0x0c, 0x24, 0xd0, 0xc2, 0x87, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x5a, 0x88, 0x06, 0x12, 0x68, 0x21, 0x1f, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x1d, 0xfb, 0x65, 0x1b, 0xbc, 0x63, 0xbf, 0xec, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0xc6, 0x5f, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xd0, 0xc2, 0x60, 0x20, 0x81, 0x16, 0x16, 0x07, 0x43, 0xf3, 0x77, 0xd8, 0x0d, 0x5e, 0xae, 0x16, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x41, 0x0b, 0xc9, 0x40, 0x06, 0x2d, 0x3c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xa0, 0x85, 0x68, 0x20, 0x83, 0x16, 0xf2, 0x83, 0x17, 0x61, 0x91, 0x0d, 0xb2, 0x0d, 0x9e, 0x83, 0x60, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xd0, 0xc2, 0x60, 0x20, 0x83, 0x16, 0x16, 0x07, 0x43, 0xf3, 0x77, 0xd8, 0x0d, 0x1e, 0x3d, 0x16, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x42, 0x0b, 0xc9, 0x40, 0x0a, 0x2d, 0x7c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xa1, 0x85, 0x68, 0x20, 0x85, 0x16, 0xf2, 0x83, 0xe7, 0x8e, 0x91, 0x0d, 0xb2, 0x0d, 0x9e, 0x27, 0x61, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xd0, 0xc2, 0x60, 0x20, 0x85, 0x16, 0x16, 0x07, 0x43, 0xf3, 0x77, 0xd8, 0x0d, 0xde, 0xbb, 0x83, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x43, 0x0b, 0xc9, 0x40, 0x0e, 0x2d, 0xdc, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xa1, 0x85, 0x68, 0x20, 0x87, 0x16, 0xf2, 0x83, 0xe7, 0x06, 0x61, 0x0c, 0xb2, 0x0d, 0x9e, 0xcb, 0x61, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xd0, 0xc2, 0x64, 0x20, 0x87, 0x16, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0e, 0x2d, 0x0c, 0x0e, 0x9e, 0x4f, 0x62, 0x76, 0xf0, 0xee, 0xca, 0x9e, 0x61, 0x37, 0x78, 0x39, 0x5c, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x2d, 0x24, 0x03, 0x49, 0xb4, 0x70, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x89, 0x16, 0xa2, 0x81, 0x24, 0x5a, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x45, 0x5c, 0xd0, 0x06, 0xaf, 0x88, 0x0b, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x87, 0xa6, 0x98, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xb4, 0xb0, 0x18, 0x48, 0xa2, 0x85, 0xd5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x44, 0x0b, 0x83, 0x83, 0xc7, 0xcd, 0x98, 0x0d, 0x82, 0x0d, 0x1e, 0x3b, 0x44, 0x76, 0xe8, 0xa0, 0x31, 0xec, 0xc2, 0x2d, 0x06, 0x7e, 0x5b, 0x59, 0x5b, 0x79, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x16, 0x2d, 0x24, 0x03, 0x59, 0xb4, 0x70, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8b, 0x16, 0xa2, 0x81, 0x2c, 0x5a, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x05, 0x8e, 0xd9, 0x06, 0xaf, 0xc0, 0x31, 0x3b, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x87, 0xe5, 0x98, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xb4, 0x30, 0x19, 0xc8, 0xa2, 0x85, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x45, 0x0b, 0x83, 0x83, 0xc7, 0x0c, 0x99, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xb4, 0xb0, 0x19, 0xc8, 0xa2, 0x85, 0xdd, 0xc1, 0x1b, 0x01, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x68, 0x61, 0x38, 0x90, 0x45, 0x0b, 0xe3, 0x41, 0x32, 0x90, 0x5f, 0x3b, 0x1e, 0x1f, 0x87, 0x0e, 0x1d, 0x34, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x5a, 0x48, 0x06, 0xd2, 0x68, 0xe1, 0xcb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1a, 0x2d, 0x44, 0x03, 0x69, 0xb4, 0x90, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0x66, 0xb6, 0xa0, 0x0d, 0xde, 0xcc, 0x16, 0x74, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x2f, 0x7e, 0x32, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x68, 0x61, 0x30, 0x90, 0x46, 0x0b, 0x8b, 0x83, 0xa1, 0xf9, 0x7b, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x2c, 0x0e, 0x78, 0x79, 0x6f, 0xf7, 0xe1, 0x14, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xb8, 0xb8, 0x81, 0x9c, 0x5c, 0xfc, 0xb0, 0x0b, 0xbb, 0xc1, 0x93, 0x05, 0xcb, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0xde, 0x4e, 0x5a, 0xb6, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0xc0, 0xdd, 0xb2, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x78, 0xa5, 0x75, 0xd9, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0x06, 0xcf, 0xfb, 0x48, 0xda, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x83, 0x87, 0x1b, 0xd5, 0x1c, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2d, 0x1e, 0x2c, 0xc0, 0x3d, 0x3f, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1d, 0x17, 0x92, 0x81, 0x74, 0x5c, 0x78, 0x32, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0x60, 0x2c, 0x43, 0x1d, 0x1a, 0xb5, 0x0c, 0xbb, 0x70, 0x8b, 0x81, 0x37, 0x26, 0x57, 0x1f, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8f, 0x0b, 0xc9, 0x40, 0x3e, 0x2e, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc7, 0x85, 0x68, 0x20, 0x1f, 0x17, 0xe2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xde, 0xc4, 0x66, 0xb6, 0xc1, 0x9b, 0xd8, 0xcc, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x79, 0x6d, 0x66, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xb8, 0xb0, 0x18, 0xc8, 0xc7, 0x85, 0xd5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8f, 0x0b, 0xf9, 0xc1, 0xa3, 0xee, 0xcc, 0x0e, 0x9e, 0xc2, 0x30, 0x34, 0xc8, 0x36, 0x78, 0x5e, 0x9b, 0xd9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8f, 0x0b, 0xc3, 0x81, 0x7c, 0x5c, 0xe8, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x71, 0x61, 0x76, 0xf0, 0xe0, 0x3e, 0xb3, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1f, 0x17, 0x96, 0x03, 0xf9, 0xb8, 0xb0, 0x3e, 0x78, 0x23, 0x40, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x2e, 0xcc, 0x07, 0xf2, 0x71, 0xa1, 0x62, 0x90, 0x0c, 0x08, 0xfe, 0xbe, 0x83, 0xf1, 0xae, 0x73, 0x1c, 0x3a, 0xb4, 0x00, 0x1b, 0x76, 0xe1, 0x16, 0x0f, 0xda, 0x67, 0x31, 0x3c, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x21, 0x17, 0x92, 0x81, 0x84, 0x5c, 0x38, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x90, 0x0b, 0xd1, 0x40, 0x42, 0x2e, 0xc4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0x5a, 0xd1, 0x6c, 0x83, 0x47, 0x2b, 0x9a, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0xfb, 0x17, 0xcd, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x5c, 0xc8, 0x07, 0x12, 0x72, 0x61, 0x70, 0x30, 0x34, 0x7f, 0x87, 0x5d, 0xb8, 0xc5, 0xc0, 0x93, 0x2b, 0xd3, 0x0f, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc8, 0x85, 0x64, 0x20, 0x23, 0x17, 0xfe, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xe4, 0x42, 0x34, 0x90, 0x91, 0x0b, 0xf1, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x4f, 0xb9, 0x34, 0xdb, 0xe0, 0x29, 0x97, 0x66, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x2a, 0x4c, 0xb3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x5c, 0x58, 0x0c, 0x64, 0xe4, 0xc2, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc8, 0x85, 0xfc, 0xe0, 0x2d, 0xa2, 0x66, 0x07, 0x2f, 0xd9, 0xeb, 0x19, 0x64, 0x1b, 0xbc, 0x0a, 0xd3, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc8, 0x85, 0xdd, 0x40, 0x46, 0x2e, 0x4c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x5c, 0x58, 0x1d, 0xbc, 0x13, 0xd5, 0xec, 0xe0, 0x71, 0xd6, 0x64, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x2e, 0x24, 0x03, 0x29, 0xb9, 0xf0, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x25, 0x17, 0xa2, 0x81, 0x94, 0x5c, 0x88, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x1c, 0x03, 0x2f, 0xef, 0xed, 0xde, 0xe0, 0x11, 0xb2, 0x66, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x40, 0x56, 0xb3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x25, 0x17, 0x16, 0x03, 0x29, 0xb9, 0x30, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x72, 0x21, 0x3f, 0x78, 0x99, 0xad, 0xd9, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0xe1, 0x37, 0x78, 0x5e, 0x2f, 0xd3, 0xc1, 0x4b, 0x6a, 0x3c, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0x83, 0x06, 0xd6, 0x02, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xaa, 0x2d, 0x6e, 0x20, 0xdb, 0x16, 0x3f, 0xec, 0x06, 0x8f, 0xc7, 0xda, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb5, 0x85, 0x64, 0x20, 0xd5, 0x16, 0x2e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xda, 0x42, 0x34, 0x90, 0x6a, 0x0b, 0xf9, 0xc1, 0x23, 0xbe, 0x36, 0x06, 0xd9, 0x06, 0xaf, 0x09, 0x36, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb5, 0x85, 0xc9, 0x40, 0xaa, 0x2d, 0xcc, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x5b, 0x18, 0x1c, 0xbc, 0x2f, 0xd9, 0xec, 0xe0, 0x29, 0x0c, 0x43, 0x83, 0x6c, 0x83, 0xd7, 0x04, 0x9b, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xb6, 0xb0, 0x1c, 0x48, 0xb5, 0x85, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6a, 0x0b, 0xbb, 0x83, 0xc7, 0x3f, 0x9b, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x78, 0x4b, 0x0d, 0xd1, 0xa1, 0x05, 0xd8, 0xb0, 0x1b, 0xbc, 0x19, 0x2f, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd7, 0x16, 0x92, 0x81, 0x5c, 0x5b, 0x78, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6b, 0x0b, 0xd1, 0x40, 0xae, 0x2d, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0x1f, 0x2f, 0x68, 0x83, 0xf7, 0xe3, 0x05, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x7b, 0xab, 0xcd, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x5b, 0x98, 0x0c, 0xe4, 0xda, 0xc2, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xb5, 0x85, 0xc1, 0xc1, 0x1b, 0xbf, 0xcd, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x5b, 0xd8, 0x0c, 0xe4, 0xda, 0xc2, 0xee, 0xe0, 0x8d, 0x00, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xb6, 0x30, 0x1c, 0xc8, 0xb5, 0x85, 0xf1, 0xc1, 0x73, 0x11, 0xcd, 0x8e, 0x43, 0x87, 0x0e, 0x1a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x2d, 0x24, 0x03, 0xc9, 0xb6, 0xf0, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd9, 0x16, 0xa2, 0x81, 0x64, 0x5b, 0xc8, 0x0f, 0xda, 0xea, 0xb7, 0x1f, 0x64, 0x1b, 0x3c, 0x7c, 0xdd, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb6, 0x85, 0xc9, 0x40, 0xb2, 0x2d, 0xcc, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x5b, 0x18, 0x1c, 0xbc, 0x83, 0xde, 0x6c, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x10, 0xf8, 0x7d, 0x07, 0xe3, 0x5d, 0xe7, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x51, 0x17, 0x37, 0x90, 0xa8, 0x0b, 0x4d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9e, 0x2e, 0xee, 0xe0, 0x15, 0xfd, 0x66, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xba, 0x90, 0x0d, 0x24, 0xea, 0x42, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xea, 0x62, 0x0f, 0xde, 0x22, 0x70, 0x76, 0xf0, 0x18, 0xd7, 0x9e, 0x41, 0xb6, 0xc1, 0xbb, 0xf6, 0xcd, 0x06, 0xd9, 0x06, 0x0f, 0xef, 0x37, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xd4, 0x85, 0xcd, 0x40, 0xa2, 0x2e, 0xcc, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x5d, 0x88, 0x0f, 0xde, 0x95, 0x70, 0x76, 0xf0, 0x92, 0xbd, 0x9e, 0x41, 0xb6, 0xc1, 0xbb, 0xf6, 0xcd, 0x06, 0xd9, 0x06, 0x0f, 0xef, 0x37, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x75, 0x61, 0x3d, 0x90, 0xa8, 0x0b, 0x45, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa2, 0x2e, 0xec, 0x0e, 0x5e, 0x09, 0x71, 0x36, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xea, 0xc2, 0x7c, 0x20, 0x51, 0x17, 0x2a, 0x0e, 0xde, 0x08, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa8, 0x0b, 0x1d, 0x03, 0x89, 0xba, 0xd0, 0x73, 0xf0, 0x10, 0x27, 0xb3, 0xe3, 0xd0, 0xa1, 0x05, 0xd8, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x38, 0x07, 0x6f, 0xdc, 0x32, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xba, 0xb8, 0x81, 0x2c, 0x5d, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8e, 0x2e, 0xa4, 0x03, 0x39, 0xba, 0xb0, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x74, 0x21, 0x19, 0xc8, 0xd1, 0x85, 0x2f, 0x83, 0x60, 0x83, 0x87, 0xed, 0xf5, 0x1c, 0xac, 0x4b, 0x8c, 0x1a, 0x64, 0x1b, 0x3c, 0xdd, 0xe3, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xd2, 0x85, 0x64, 0x20, 0x49, 0x17, 0x2e, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0xe7, 0xda, 0xf1, 0xf8, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x16, 0x0f, 0x5e, 0xd2, 0x1b, 0xb2, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x6c, 0x71, 0x03, 0x79, 0xb6, 0xf8, 0x61, 0x37, 0x78, 0x99, 0x61, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x82, 0x2d, 0x24, 0x03, 0x09, 0xb6, 0xf0, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc1, 0x16, 0xa2, 0x81, 0x04, 0x5b, 0xc8, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0xa5, 0x61, 0xd0, 0x06, 0xaf, 0x34, 0x0c, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x87, 0xc8, 0x9c, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xb6, 0x30, 0x19, 0x48, 0xb0, 0x85, 0xd9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x60, 0x0b, 0x83, 0x83, 0xc7, 0xef, 0x9c, 0x0d, 0x82, 0x0d, 0x1e, 0xa9, 0x66, 0x76, 0xe8, 0xa0, 0x31, 0xec, 0x06, 0xef, 0x94, 0x0b, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xb0, 0x85, 0x64, 0x20, 0xc3, 0x16, 0xce, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xd8, 0x42, 0x34, 0x90, 0x61, 0x0b, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x6f, 0x96, 0x0b, 0xda, 0xe0, 0xcd, 0x72, 0x41, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x9a, 0xa0, 0xb3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc3, 0x16, 0x26, 0x03, 0x19, 0xb6, 0x30, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x6c, 0x61, 0x70, 0xf0, 0x82, 0xa5, 0xb3, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0xcb, 0x34, 0x46, 0x0e, 0x1d, 0x34, 0x86, 0xdd, 0xe0, 0x55, 0x74, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xb6, 0x90, 0x0c, 0xa4, 0xd8, 0xc2, 0x99, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x5b, 0x88, 0x06, 0x52, 0x6c, 0x21, 0x1f, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x85, 0x74, 0x41, 0x1b, 0xbc, 0x90, 0x2e, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0x0c, 0x75, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xd8, 0xc2, 0x60, 0x20, 0xc5, 0x16, 0x16, 0x07, 0x43, 0xf3, 0x77, 0xd8, 0x0d, 0x1e, 0x34, 0x18, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x63, 0x0b, 0xc9, 0x40, 0x8e, 0x2d, 0xbc, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xb1, 0x85, 0x68, 0x20, 0xc7, 0x16, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x1e, 0x37, 0x18, 0xb4, 0xc1, 0xe3, 0x06, 0x83, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x99, 0x5c, 0x67, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8e, 0x2d, 0x0c, 0x06, 0x72, 0x6c, 0x61, 0x71, 0x30, 0x34, 0x7f, 0x87, 0xdd, 0xe0, 0x85, 0x60, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xb6, 0x90, 0x0c, 0x24, 0xd9, 0xc2, 0x95, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x5b, 0x88, 0x06, 0x92, 0x6c, 0x21, 0x1f, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xb5, 0x60, 0x41, 0x07, 0xef, 0xa7, 0xbd, 0x1a, 0x64, 0x1b, 0x3c, 0x0d, 0xed, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc9, 0x16, 0x26, 0x03, 0x49, 0xb6, 0xb0, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x6c, 0x61, 0x70, 0xf0, 0xf2, 0xb8, 0xb3, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0x4f, 0xea, 0x65, 0x3a, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0x3c, 0x0d, 0xed, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb2, 0x85, 0xf9, 0x40, 0x92, 0x2d, 0xd4, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xb6, 0x30, 0x3e, 0x78, 0x5f, 0xde, 0xd9, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x64, 0x0b, 0xfb, 0x81, 0x24, 0x5b, 0xe8, 0x38, 0x78, 0x23, 0x40, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x92, 0x2d, 0x94, 0x0c, 0x24, 0xd9, 0x42, 0xdb, 0xc1, 0x83, 0x74, 0xcd, 0x8e, 0x43, 0x87, 0x16, 0x60, 0xc3, 0x6e, 0xf0, 0x0c, 0xb1, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x5b, 0x48, 0x06, 0xb2, 0x6c, 0xe1, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x2d, 0x44, 0x03, 0x59, 0xb6, 0x90, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0x24, 0xb1, 0xa0, 0x83, 0x87, 0x55, 0x5f, 0x0d, 0xb2, 0x0d, 0x5e, 0x6a, 0x78, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xd9, 0xc2, 0x60, 0x20, 0xcb, 0x16, 0x16, 0x07, 0x43, 0xf3, 0x77, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb3, 0x85, 0x64, 0x20, 0xcd, 0x16, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xd9, 0x42, 0x34, 0x90, 0x66, 0x0b, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x4f, 0x29, 0x0c, 0xda, 0xe0, 0x29, 0x85, 0x41, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0xaa, 0xc8, 0xb3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcd, 0x16, 0x06, 0x03, 0x69, 0xb6, 0xb0, 0x38, 0x18, 0x9a, 0xbf, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0xef, 0xb5, 0xf1, 0x59, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xb4, 0xb8, 0x81, 0xec, 0x5a, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x49, 0x8b, 0x3b, 0x78, 0xf8, 0xe7, 0xd9, 0xb0, 0x1b, 0xbc, 0x9b, 0xc7, 0x67, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4a, 0x0b, 0x93, 0x81, 0x54, 0x5a, 0xd8, 0x1e, 0x3c, 0x1d, 0xc8, 0xe7, 0xe0, 0xf5, 0x42, 0x3e, 0xc3, 0x6e, 0xf0, 0xa4, 0xbe, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x5a, 0x48, 0x06, 0x72, 0x69, 0xe1, 0xcd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2e, 0x2d, 0x44, 0x03, 0xb9, 0xb4, 0x90, 0x1f, 0x3c, 0xcc, 0x8d, 0x6b, 0x90, 0x6d, 0xf0, 0x42, 0xd4, 0xb3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x5a, 0x18, 0x0d, 0xe4, 0xd2, 0xc2, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xa5, 0x85, 0xc1, 0xc1, 0x9b, 0x61, 0xcf, 0x0e, 0x86, 0x17, 0xef, 0x20, 0xdb, 0xe0, 0x85, 0xa8, 0x67, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2e, 0x2d, 0x0c, 0x07, 0x72, 0x69, 0x61, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xd2, 0xc2, 0xec, 0xe0, 0x29, 0xb7, 0x67, 0x07, 0x41, 0xe9, 0x3d, 0xec, 0x06, 0x2f, 0xf7, 0x0b, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xa6, 0x85, 0x64, 0x20, 0x99, 0x16, 0xee, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xd3, 0x42, 0x34, 0x90, 0x4c, 0x0b, 0xf9, 0xc1, 0xab, 0x6e, 0xc8, 0x06, 0xd9, 0x06, 0xaf, 0xdd, 0x3d, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x69, 0x61, 0x32, 0x90, 0x4c, 0x0b, 0xab, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x99, 0x16, 0x06, 0x07, 0xaf, 0x1f, 0x3e, 0x3b, 0x78, 0x77, 0x65, 0xcf, 0xb0, 0x1b, 0xbc, 0xab, 0x2c, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9b, 0x16, 0x92, 0x81, 0x6c, 0x5a, 0xb8, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4d, 0x0b, 0xd1, 0x40, 0x36, 0x2d, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0xb1, 0x2c, 0x68, 0x83, 0x37, 0x96, 0x05, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x3b, 0x91, 0xcf, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x5a, 0x98, 0x0c, 0x64, 0xd3, 0xc2, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xa6, 0x85, 0xc1, 0xc1, 0xdb, 0xa4, 0xcf, 0x0e, 0x96, 0xd2, 0x46, 0x0d, 0xbb, 0xc1, 0x1b, 0xec, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x69, 0x21, 0x19, 0x48, 0xa7, 0x85, 0x2b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xb4, 0x10, 0x0d, 0xa4, 0xd3, 0x42, 0x7e, 0xf0, 0x3a, 0x26, 0xb2, 0x41, 0xb6, 0xc1, 0x1b, 0xae, 0xcf, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x5a, 0x18, 0x0c, 0xa4, 0xd3, 0xc2, 0xe2, 0x60, 0x68, 0xfe, 0x0e, 0xbb, 0xc1, 0xc3, 0xee, 0x81, 0x16, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xb4, 0x30, 0x19, 0xc8, 0xa7, 0x85, 0xed, 0xc1, 0xd3, 0x81, 0x7c, 0x0e, 0x9e, 0xce, 0x07, 0x35, 0xec, 0x06, 0x2f, 0x87, 0x0b, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xa8, 0x85, 0x64, 0x20, 0xa1, 0x16, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xd4, 0x42, 0x34, 0x90, 0x50, 0x0b, 0xf9, 0xc1, 0x13, 0x5d, 0xcc, 0x06, 0xd9, 0x06, 0xaf, 0x2f, 0x3f, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x6a, 0x61, 0x32, 0x90, 0x50, 0x0b, 0xd3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa1, 0x16, 0x06, 0x07, 0xaf, 0x71, 0x3f, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x6a, 0x61, 0x33, 0x90, 0x50, 0x0b, 0xbb, 0x83, 0xf7, 0x23, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xd4, 0xc2, 0x70, 0x20, 0xa1, 0x16, 0x96, 0x87, 0xfe, 0x54, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xb0, 0x1b, 0x3c, 0xec, 0x2d, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa3, 0x16, 0x92, 0x81, 0x8c, 0x5a, 0xb8, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x51, 0x0b, 0xd1, 0x40, 0x46, 0x2d, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0xfd, 0xab, 0x64, 0x83, 0xb7, 0x7f, 0x95, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x3b, 0xf9, 0xcf, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x5a, 0x18, 0x0c, 0x64, 0xd4, 0xc2, 0xe2, 0x60, 0x68, 0xfe, 0x0e, 0xbb, 0xc1, 0x3b, 0xd9, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x6a, 0x21, 0x19, 0x48, 0xa9, 0x85, 0x2f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xb5, 0x10, 0x0d, 0xa4, 0xd4, 0x42, 0x7e, 0xf0, 0x56, 0x2a, 0xb3, 0x41, 0xb6, 0xc1, 0xdb, 0x10, 0xd0, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x5a, 0x98, 0x0c, 0xa4, 0xd4, 0xc2, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xa9, 0x85, 0xc1, 0xc1, 0x5b, 0x21, 0xd0, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x5a, 0xd8, 0x0c, 0xa4, 0xd4, 0xc2, 0xee, 0xe0, 0x8d, 0x00, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xb5, 0x30, 0x1c, 0x48, 0xa9, 0x85, 0xf1, 0xc1, 0x43, 0x9c, 0xcc, 0x8e, 0x43, 0x87, 0x0e, 0x1a, 0xc3, 0x6e, 0xf0, 0x72, 0xb5, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x5a, 0x48, 0x06, 0x72, 0x6a, 0xe1, 0xc9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x2d, 0x44, 0x03, 0x39, 0xb5, 0x90, 0x1f, 0xbc, 0x08, 0x8b, 0x6c, 0x90, 0x6d, 0xf0, 0xe2, 0x0e, 0xb4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa7, 0x16, 0x06, 0x03, 0x39, 0xb5, 0xb0, 0x38, 0x18, 0x9a, 0xbf, 0xc3, 0x6e, 0xf0, 0xe8, 0xb1, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x5a, 0x48, 0x06, 0x92, 0x6a, 0xe1, 0xcb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x2d, 0x44, 0x03, 0x49, 0xb5, 0x90, 0x1f, 0x3c, 0x77, 0x8c, 0x6c, 0x90, 0x6d, 0xf0, 0x02, 0x14, 0xb4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa9, 0x16, 0x06, 0x03, 0x49, 0xb5, 0xb0, 0x38, 0x18, 0x9a, 0xbf, 0xc3, 0x6e, 0xf0, 0x96, 0xb4, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x5a, 0x48, 0x06, 0xb2, 0x6a, 0xe1, 0xc9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x56, 0x2d, 0x44, 0x03, 0x59, 0xb5, 0x90, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0xae, 0xb4, 0xa0, 0x0d, 0xde, 0x95, 0x16, 0x74, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x2f, 0x92, 0x41, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x6a, 0x61, 0x31, 0x90, 0x55, 0x0b, 0xab, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xab, 0x16, 0x06, 0x07, 0xaf, 0xe0, 0x41, 0x3b, 0x78, 0xd7, 0xe1, 0xd2, 0xb0, 0x1b, 0x3c, 0x72, 0x2f, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xad, 0x16, 0x92, 0x81, 0xb4, 0x5a, 0x78, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x56, 0x0b, 0xd1, 0x40, 0x5a, 0x2d, 0xe4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0x78, 0x2f, 0x68, 0x83, 0x07, 0xef, 0x05, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x7b, 0x81, 0xd0, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x6a, 0x61, 0x34, 0x90, 0x56, 0x0b, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xad, 0x16, 0x06, 0x07, 0xaf, 0x54, 0x42, 0x3b, 0x78, 0x0a, 0xc3, 0xd0, 0x20, 0xdb, 0xe0, 0xbd, 0x40, 0x68, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x2d, 0xcc, 0x07, 0xd2, 0x6a, 0xa1, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xab, 0x85, 0xe5, 0xc1, 0x13, 0xa2, 0xd0, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x81, 0xb8, 0x1d, 0x8f, 0x0f, 0x2d, 0xc0, 0x86, 0xdd, 0xe0, 0xbd, 0x3b, 0x18, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x5a, 0x98, 0x0c, 0xe4, 0xd5, 0xc2, 0xf6, 0xe0, 0xe9, 0x40, 0x3e, 0x07, 0x0f, 0x47, 0xf2, 0x19, 0x76, 0x83, 0x87, 0x2b, 0xf9, 0x2c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x6b, 0x61, 0x32, 0x90, 0x58, 0x0b, 0xdb, 0x83, 0xa7, 0x03, 0xf9, 0x1c, 0xbc, 0xeb, 0xc9, 0x67, 0xd8, 0x0d, 0x9e, 0xb4, 0x87, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x59, 0x0b, 0xc9, 0x40, 0x66, 0x2d, 0x3c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xac, 0x85, 0x68, 0x20, 0xb3, 0x16, 0xf2, 0x83, 0xa7, 0x05, 0x62, 0x0c, 0xb2, 0x0d, 0x9e, 0x05, 0x86, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xd6, 0xc2, 0x60, 0x20, 0xb3, 0x16, 0x16, 0x07, 0x43, 0xf3, 0x77, 0xd8, 0x0d, 0x9e, 0x18, 0x18, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5a, 0x0b, 0xc9, 0x40, 0x6a, 0x2d, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xad, 0x85, 0x68, 0x20, 0xb5, 0x16, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x9e, 0x1b, 0x18, 0xb4, 0xc1, 0x73, 0x03, 0x83, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x99, 0x6a, 0x68, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xb5, 0x30, 0x1a, 0x48, 0xad, 0x85, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5a, 0x0b, 0x83, 0x83, 0xc7, 0xd1, 0xa1, 0x1d, 0x3c, 0xb6, 0x20, 0x6a, 0x90, 0x6d, 0xf0, 0x4c, 0x35, 0xb4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb5, 0x16, 0xf6, 0x03, 0xa9, 0xb5, 0xd0, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xd6, 0xc2, 0xf2, 0xe0, 0xe5, 0x7a, 0x68, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0xa3, 0xd5, 0xcd, 0xa1, 0x07, 0x41, 0xe9, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5a, 0x0b, 0x0d, 0x03, 0xa9, 0xb5, 0x50, 0x33, 0xec, 0xc2, 0x6d, 0x10, 0x94, 0xde, 0x07, 0x2f, 0xf3, 0x43, 0xdb, 0xe0, 0x65, 0x7e, 0x68, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0xdb, 0xe0, 0x71, 0x40, 0x1d, 0x07, 0x41, 0xe9, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5a, 0x0b, 0x3d, 0x03, 0xa9, 0xb5, 0x50, 0x36, 0xec, 0xc2, 0x6d, 0x10, 0x94, 0xde, 0x07, 0x8f, 0x03, 0xea, 0x38, 0x78, 0x76, 0x52, 0xc7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5a, 0x0b, 0x6d, 0x03, 0xa9, 0xb5, 0x50, 0x39, 0xec, 0xc2, 0x6d, 0x10, 0x94, 0xde, 0x63, 0xe0, 0xb3, 0xbd, 0xd5, 0x91, 0x1b, 0xbc, 0xb8, 0x11, 0xed, 0x70, 0x8a, 0x0d, 0xbb, 0xb0, 0x1b, 0xbc, 0x10, 0x2c, 0x68, 0x43, 0x0c, 0x87, 0xdd, 0xe0, 0x19, 0x62, 0x41, 0x1b, 0x62, 0x38, 0xec, 0x06, 0xef, 0x94, 0x0b, 0xda, 0x10, 0xc3, 0x61, 0x37, 0x78, 0x15, 0x5d, 0xd0, 0xc1, 0x83, 0x05, 0x83, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x6b, 0x21, 0x19, 0xc8, 0xad, 0x85, 0x43, 0x83, 0x60, 0x83, 0x97, 0x51, 0xa1, 0x1d, 0x1a, 0xb5, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xb5, 0x90, 0x0c, 0x24, 0xd7, 0xc2, 0x95, 0x83, 0xd7, 0x0d, 0x91, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0xe2, 0xc1, 0x0a, 0xf1, 0xf3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x73, 0x8b, 0x1b, 0xc8, 0xbb, 0xc5, 0x0f, 0xbb, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x6e, 0xf0, 0xc0, 0xdd, 0xb2, 0x83, 0x95, 0xcf, 0x50, 0x87, 0xa3, 0x7d, 0x43, 0x0c, 0x87, 0xdd, 0xd0, 0x35, 0x73, 0x43, 0x0c, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x16, 0x76, 0x83, 0x07, 0x8b, 0x99, 0x1d, 0x2c, 0xcf, 0xef, 0x3a, 0x1c, 0xed, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x6e, 0xe8, 0x38, 0xb2, 0xb0, 0x1b, 0xbc, 0x9d, 0xb4, 0xec, 0x60, 0x79, 0x7e, 0xd7, 0xe1, 0x68, 0xdf, 0x10, 0xc3, 0x61, 0x17, 0x76, 0x43, 0xc7, 0x91, 0x85, 0xdd, 0xe0, 0xc9, 0x82, 0x65, 0x0b, 0xbb, 0xc1, 0x52, 0x8c, 0x8b, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0x75, 0x68, 0x09, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0x70, 0xd2, 0xdb, 0x3d, 0x8c, 0xcb, 0x86, 0x18, 0x1e, 0xbc, 0xc3, 0xb2, 0xec, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x0d, 0x31, 0x1c, 0x76, 0x43, 0xc7, 0x91, 0x85, 0xdd, 0xe0, 0x79, 0x1f, 0x49, 0x07, 0xcb, 0xf3, 0xbb, 0x0e, 0x47, 0xfb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x2d, 0x24, 0x03, 0x39, 0xb7, 0xf0, 0x64, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x18, 0xb5, 0xe3, 0xf1, 0xa1, 0x51, 0xcb, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x6e, 0xf0, 0xa8, 0x32, 0xb3, 0x85, 0xdd, 0x60, 0xf4, 0x62, 0x2d, 0xec, 0xc2, 0x2e, 0xdc, 0xe2, 0xc1, 0x60, 0xea, 0x38, 0x34, 0x12, 0xdc, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0xf1, 0xa0, 0x7d, 0x11, 0xaa, 0x43, 0x23, 0xc1, 0x0d, 0x31, 0x1c, 0x6e, 0x31, 0xf0, 0xc6, 0xe8, 0xd8, 0x43, 0x23, 0xc1, 0x85, 0x5d, 0xd8, 0x0d, 0x12, 0xbb, 0x7e, 0x16, 0x76, 0xe1, 0x36, 0x78, 0xec, 0x6e, 0xd9, 0xa1, 0x93, 0xda, 0xc2, 0x6e, 0x30, 0x20, 0x7b, 0x17, 0x76, 0x83, 0x22, 0x6e, 0x70, 0x61, 0x37, 0x78, 0x20, 0x3f, 0xcd, 0x61, 0x7d, 0xf3, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x37, 0xc4, 0x70, 0xd8, 0x0d, 0x12, 0xb8, 0x7e, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0xdd, 0x20, 0xb1, 0xeb, 0x67, 0x61, 0x17, 0x6e, 0x83, 0x57, 0x5a, 0x97, 0x1d, 0x3a, 0xa9, 0x1d, 0x3c, 0xe4, 0xee, 0xe1, 0x70, 0xb4, 0x6f, 0x88, 0xe1, 0xb0, 0x0b, 0xbb, 0x41, 0x62, 0xd7, 0xcf, 0xc2, 0x2e, 0xdc, 0x06, 0xef, 0x28, 0x2d, 0x3b, 0x74, 0x52, 0x3b, 0x78, 0xc8, 0xdd, 0xc3, 0xe1, 0x68, 0xdf, 0x10, 0xc3, 0x61, 0x17, 0x76, 0x83, 0xc4, 0xae, 0x9f, 0x85, 0x5d, 0xb8, 0x0d, 0x9e, 0x2f, 0x58, 0x76, 0xe8, 0xa4, 0xb6, 0xb0, 0x0b, 0xb7, 0xc1, 0xc0, 0x37, 0x3e, 0x18, 0x99, 0xbd, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0xb0, 0x26, 0x2d, 0xe1, 0x60, 0x64, 0xf6, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0xc1, 0x49, 0x6f, 0xf7, 0x60, 0x64, 0xf6, 0x6e, 0x88, 0xe1, 0x70, 0x1b, 0xac, 0x63, 0x06, 0x3b, 0x18, 0x99, 0xbd, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x6f, 0x88, 0xe1, 0xb0, 0x1b, 0x24, 0x76, 0xfd, 0x2c, 0xec, 0xc2, 0x6d, 0xf0, 0xd4, 0x8f, 0xa4, 0x43, 0x27, 0xb5, 0x83, 0x87, 0xdc, 0x3d, 0x1c, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xba, 0x85, 0x64, 0x20, 0xe9, 0x16, 0x8e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xdd, 0x42, 0x34, 0x90, 0x74, 0x0b, 0xf1, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x0f, 0x37, 0xaa, 0xd9, 0xe0, 0xe1, 0x46, 0x35, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x1a, 0x6c, 0xb4, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x5b, 0xd8, 0x0c, 0x24, 0xdd, 0x42, 0xc9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x74, 0x0b, 0xf9, 0xc1, 0x1b, 0xc4, 0xd1, 0x86, 0xdd, 0xe0, 0x31, 0xbb, 0x68, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xb7, 0xb0, 0x1a, 0x48, 0xba, 0x85, 0xe5, 0xb0, 0x0b, 0xb7, 0xa1, 0x91, 0xe0, 0xc1, 0xc3, 0x76, 0xd1, 0x36, 0x78, 0xd8, 0x2e, 0xda, 0xe1, 0x14, 0x1b, 0x76, 0x83, 0x57, 0xe0, 0xa2, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xdd, 0xc2, 0x74, 0x20, 0xe9, 0x16, 0xe6, 0xc3, 0x2e, 0xdc, 0x86, 0x46, 0x82, 0x07, 0x2f, 0xc2, 0x45, 0xdb, 0xe0, 0x45, 0xb8, 0x68, 0x87, 0x53, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xba, 0x85, 0xfd, 0x40, 0xd2, 0x2d, 0x74, 0x0c, 0xbb, 0x70, 0x1b, 0x1a, 0x09, 0x1e, 0x3c, 0x3c, 0x17, 0x6d, 0x83, 0x87, 0xe7, 0xa2, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0xc1, 0x6b, 0xb0, 0xd1, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x5b, 0x68, 0x1a, 0x48, 0xba, 0x85, 0xb6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe9, 0x16, 0x5a, 0x0e, 0x1e, 0x7d, 0x8f, 0x36, 0x08, 0x36, 0x78, 0xf5, 0x2c, 0xda, 0xa1, 0x05, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x75, 0x0b, 0xc9, 0x40, 0xd6, 0x2d, 0xfc, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xba, 0x85, 0x68, 0x20, 0xeb, 0x16, 0xe2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x5e, 0x6d, 0x66, 0xb6, 0xc1, 0xab, 0xcd, 0xcc, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x59, 0xfc, 0x68, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x2d, 0x2c, 0x06, 0xb2, 0x6e, 0x61, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xdd, 0x42, 0x7e, 0xf0, 0x14, 0x83, 0xb4, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xeb, 0x16, 0x26, 0x03, 0x59, 0xb7, 0x30, 0x3b, 0x78, 0x23, 0x40, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x2d, 0xec, 0x06, 0xb2, 0x6e, 0x61, 0x79, 0xf0, 0x5a, 0x92, 0xb2, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x3c, 0x5e, 0x41, 0xb0, 0x18, 0x7c, 0x9d, 0xbb, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc6, 0x3e, 0x64, 0x03, 0x63, 0x1f, 0xce, 0x0c, 0xbb, 0x61, 0x7d, 0x6f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xec, 0x43, 0x3a, 0x30, 0xf6, 0x21, 0x3e, 0xf4, 0xa7, 0x1a, 0x76, 0xe1, 0x16, 0x83, 0x17, 0x63, 0x0f, 0xa9, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb1, 0x0f, 0xf9, 0xc0, 0xd8, 0x87, 0xc9, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0xf0, 0xf8, 0x8d, 0xb4, 0x0d, 0x1e, 0xbf, 0x91, 0x76, 0x38, 0xc5, 0x86, 0x5d, 0xb8, 0xc5, 0xe0, 0xc5, 0xe4, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xec, 0xc3, 0x66, 0x60, 0xec, 0xc3, 0x6c, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x78, 0x72, 0x48, 0xda, 0x06, 0x4f, 0x0e, 0x49, 0x3b, 0x9c, 0x62, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd8, 0x87, 0xdd, 0xc0, 0xd8, 0x87, 0xe9, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0xf0, 0x6e, 0x8a, 0xb4, 0x0d, 0xde, 0x4d, 0x91, 0x76, 0x38, 0xc5, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf5, 0x21, 0x3a, 0x50, 0x54, 0xe2, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x02, 0x11, 0x3d, 0x78, 0x9d, 0x4b, 0xda, 0xe2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x89, 0x88, 0x1b, 0xa8, 0x1e, 0xf1, 0x83, 0x60, 0x71, 0x83, 0xa2, 0x5a, 0xf0, 0x70, 0x8a, 0x2d, 0x0e, 0x82, 0x15, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x44, 0x48, 0x06, 0x2a, 0x45, 0xc8, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x22, 0x11, 0x92, 0x83, 0xa7, 0xdd, 0xa4, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0x89, 0xb0, 0x19, 0xa8, 0x12, 0x61, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0x89, 0x90, 0x1e, 0x3c, 0x8e, 0x27, 0x6d, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xf0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x0f, 0xf1, 0x03, 0xf5, 0x21, 0xac, 0x06, 0xc9, 0xc0, 0xef, 0x7d, 0xc7, 0xe3, 0x83, 0x92, 0xa1, 0xe9, 0x20, 0xd9, 0xd0, 0x60, 0x90, 0x6d, 0xf0, 0xd6, 0x9a, 0xb4, 0x41, 0xb6, 0xc1, 0x4b, 0x70, 0xd2, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xca, 0x44, 0x98, 0x0f, 0x94, 0x89, 0xd0, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0x89, 0x90, 0x1e, 0xbc, 0x15, 0x29, 0x6d, 0x10, 0x6c, 0xf0, 0xda, 0x9f, 0xb4, 0x83, 0xe4, 0xf2, 0x81, 0x41, 0xb6, 0xc1, 0x5b, 0x6b, 0xd2, 0x06, 0xd9, 0x06, 0x2f, 0xc1, 0x49, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x13, 0x61, 0x3a, 0x50, 0x27, 0x42, 0xc3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x27, 0x42, 0x7a, 0xf0, 0x4a, 0xa8, 0xb4, 0x41, 0xb0, 0xc1, 0x6b, 0x7f, 0xd2, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xc7, 0xc8, 0xe9, 0xe3, 0xd0, 0x20, 0xdb, 0xe0, 0xad, 0x35, 0x69, 0x83, 0x6c, 0x83, 0x97, 0xe0, 0xa4, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x85, 0x22, 0x8c, 0x07, 0x0a, 0x45, 0xe8, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0a, 0x45, 0x48, 0x0f, 0x9e, 0x96, 0x95, 0x36, 0x08, 0x36, 0x78, 0xed, 0x4f, 0xda, 0xc1, 0xf2, 0x55, 0xa2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x72, 0x11, 0x92, 0x81, 0xa2, 0x11, 0xb2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x5a, 0x84, 0xe4, 0xe0, 0xc1, 0x5f, 0x69, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb9, 0x08, 0xe9, 0x40, 0xb9, 0x08, 0x8b, 0xe1, 0x37, 0x78, 0x1b, 0x50, 0xda, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0x07, 0xaf, 0x32, 0xda, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf5, 0x22, 0x24, 0x07, 0x0f, 0xfe, 0x4a, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x17, 0x21, 0x1e, 0xa8, 0x17, 0x61, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0x8b, 0x90, 0x1e, 0x3c, 0xce, 0x2d, 0x6d, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xf0, 0x1b, 0xbc, 0x0d, 0x28, 0xed, 0xe0, 0x71, 0xe9, 0x5c, 0x87, 0x34, 0xdc, 0x20, 0xdb, 0xe0, 0x29, 0x6a, 0x69, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x05, 0x23, 0xc4, 0x03, 0x05, 0x23, 0x4c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x82, 0x11, 0xd2, 0x83, 0x97, 0xda, 0xa5, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x7e, 0x83, 0xb7, 0x01, 0xa5, 0x1d, 0x34, 0x03, 0x9c, 0x74, 0x68, 0x0a, 0x34, 0xc8, 0x36, 0x78, 0x8a, 0x5a, 0xda, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc5, 0x08, 0xfb, 0x81, 0x8a, 0x11, 0x2a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8a, 0x11, 0xd2, 0x83, 0x87, 0xfb, 0xa5, 0x0d, 0x82, 0x85, 0x5f, 0xf8, 0x0d, 0x2b, 0xb4, 0x07, 0xcf, 0x06, 0x4a, 0x3b, 0x58, 0x97, 0x0a, 0x76, 0xb0, 0xa2, 0x21, 0x6b, 0x90, 0x6d, 0xf0, 0x14, 0xb5, 0xb4, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x92, 0x11, 0x56, 0x03, 0x25, 0x23, 0x74, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x25, 0x23, 0xa4, 0x07, 0x2f, 0x3a, 0x4c, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x19, 0x61, 0x3a, 0x50, 0x32, 0xc2, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x19, 0x61, 0x76, 0xf0, 0x2a, 0xc6, 0xb4, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0x06, 0x3c, 0xf2, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x1b, 0x8e, 0xf6, 0x83, 0x01, 0x8f, 0x7c, 0x68, 0xf3, 0x38, 0xc8, 0x36, 0x78, 0x61, 0x61, 0xda, 0x20, 0xdb, 0xe0, 0x09, 0x88, 0x69, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc9, 0x08, 0x05, 0x03, 0x25, 0x23, 0x54, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x25, 0x23, 0x8c, 0x0f, 0x5e, 0x5e, 0x99, 0x36, 0x08, 0x36, 0x78, 0x8a, 0x60, 0xda, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x43, 0xbd, 0xed, 0xc1, 0xf2, 0xc6, 0x92, 0xe3, 0xd0, 0x20, 0xdb, 0xe0, 0x29, 0x6a, 0x69, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xcd, 0x08, 0xa3, 0x81, 0x9a, 0x11, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xcd, 0x08, 0xe9, 0xc1, 0x03, 0x3d, 0xd3, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9a, 0x11, 0x56, 0x03, 0x35, 0x23, 0x2c, 0x0f, 0x1e, 0x64, 0x96, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x33, 0xc2, 0x74, 0xa0, 0x66, 0x84, 0xf1, 0x20, 0xd8, 0xe0, 0x29, 0x82, 0x69, 0x07, 0x0f, 0xc9, 0xbf, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x8a, 0xe0, 0xc1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0x14, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x1c, 0x21, 0x19, 0x28, 0x1e, 0x21, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0a, 0x47, 0x48, 0x0e, 0x1e, 0xff, 0x9a, 0x36, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0x8e, 0x90, 0x0e, 0x54, 0x8e, 0xb0, 0x38, 0x78, 0x90, 0x59, 0xda, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0x8e, 0x90, 0x1c, 0x3c, 0xfe, 0x35, 0x6d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x74, 0x84, 0xe5, 0x40, 0xe9, 0x08, 0x05, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe9, 0x08, 0xe9, 0xc1, 0x3b, 0x7b, 0xd3, 0x06, 0xc1, 0x06, 0xaf, 0xfd, 0x49, 0x3b, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0x8f, 0xca, 0x4d, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x47, 0x58, 0x0d, 0xd4, 0x8e, 0xb0, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x47, 0x48, 0x0f, 0xde, 0x48, 0x9c, 0x36, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0x8e, 0x30, 0x1b, 0xa8, 0x1d, 0x61, 0x39, 0xfc, 0x06, 0x6f, 0x03, 0x4a, 0x3b, 0x78, 0x51, 0x08, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xed, 0x08, 0xd3, 0x81, 0xda, 0x11, 0xc6, 0x07, 0xef, 0x50, 0x4d, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x0b, 0xb0, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x09, 0x89, 0x1b, 0x28, 0x22, 0xf1, 0x83, 0x60, 0x71, 0xc0, 0x23, 0x73, 0x9b, 0x0f, 0x02, 0xe0, 0x7e, 0x71, 0x10, 0x2c, 0xec, 0xc2, 0x2d, 0x06, 0x3c, 0x70, 0x6f, 0x69, 0x6e, 0xf4, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x25, 0x24, 0x24, 0x03, 0x25, 0x24, 0xf4, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0x90, 0x10, 0x0d, 0x94, 0x90, 0x30, 0x18, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xf5, 0xd8, 0x69, 0x1b, 0xbc, 0x1e, 0x3b, 0xed, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x9e, 0xa6, 0x9d, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x42, 0xc2, 0x6a, 0xa0, 0x84, 0x84, 0xdd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x42, 0xc2, 0xe2, 0xe0, 0x19, 0xe4, 0x69, 0x83, 0x60, 0x83, 0xa7, 0x08, 0xa6, 0x1d, 0xbc, 0xce, 0x48, 0x6b, 0x90, 0x6d, 0xf0, 0x34, 0xed, 0xb4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x84, 0x84, 0xf1, 0x40, 0x09, 0x09, 0x35, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x09, 0x09, 0xc3, 0x83, 0xf7, 0xac, 0xa7, 0x1d, 0x3c, 0x96, 0xcc, 0x67, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x21, 0x21, 0x19, 0xa8, 0x21, 0x61, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x43, 0x42, 0x34, 0x50, 0x43, 0x42, 0x3c, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x18, 0x78, 0x64, 0x6e, 0xf3, 0x06, 0xef, 0xa3, 0x4f, 0x3b, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x57, 0xbc, 0xa7, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x35, 0x24, 0xe4, 0x03, 0x35, 0x24, 0x8c, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x1d, 0xa4, 0x5b, 0x4a, 0x1f, 0x3a, 0x68, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xea, 0x48, 0xdc, 0x40, 0x4d, 0x89, 0x1f, 0x04, 0x8b, 0x03, 0xf8, 0xd2, 0xc9, 0x85, 0xb9, 0xcd, 0x99, 0x95, 0xc9, 0xb5, 0xc0, 0xc9, 0xbd, 0xe1, 0xe5, 0x2d, 0x0e, 0x82, 0x85, 0xdd, 0x60, 0x09, 0xea, 0xd4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1d, 0x09, 0xc9, 0x40, 0x1d, 0x09, 0xd3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3a, 0x12, 0xa2, 0x81, 0x3a, 0x12, 0xf2, 0x83, 0xf5, 0xab, 0x53, 0x83, 0x6c, 0x83, 0x87, 0x06, 0xa8, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x75, 0x24, 0x8c, 0x06, 0xea, 0x48, 0x58, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x75, 0x24, 0x0c, 0x0e, 0x9e, 0x9a, 0xa0, 0x76, 0xb0, 0x94, 0x36, 0x6a, 0xd8, 0x85, 0x5b, 0x0c, 0x78, 0xde, 0xee, 0xdc, 0xca, 0xe4, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0a, 0x49, 0x48, 0x06, 0x0a, 0x49, 0x78, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x48, 0x42, 0x34, 0x50, 0x48, 0xc2, 0x60, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x67, 0x36, 0xa8, 0x6d, 0xf0, 0xcc, 0x06, 0xb5, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0xc3, 0x83, 0xda, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x48, 0xc2, 0x6a, 0xa0, 0x90, 0x84, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x48, 0xc2, 0xe2, 0xe0, 0xb9, 0x18, 0x6a, 0x83, 0x60, 0x83, 0xd7, 0xfe, 0xa4, 0x1d, 0x3a, 0x68, 0x0c, 0xbb, 0x70, 0x8b, 0x01, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0xe4, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x24, 0x24, 0x03, 0x95, 0x24, 0x5c, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x24, 0x21, 0x1a, 0xa8, 0x24, 0x61, 0x34, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x9b, 0x3a, 0xd4, 0x36, 0x78, 0x53, 0x87, 0xda, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x3c, 0xe9, 0x43, 0x6d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x24, 0x61, 0x39, 0x50, 0x49, 0xc2, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x24, 0x61, 0x75, 0xf0, 0x7a, 0x14, 0xb5, 0x41, 0xb0, 0xc1, 0x53, 0x04, 0xd3, 0x0e, 0x1e, 0xf5, 0x9a, 0x35, 0xec, 0xc2, 0x2d, 0x06, 0xbc, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x65, 0xe4, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa5, 0x24, 0x24, 0x03, 0xa5, 0x24, 0x1c, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x25, 0x21, 0x1a, 0x28, 0x25, 0x61, 0x32, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x6b, 0x5b, 0xd4, 0x36, 0x78, 0x6d, 0x8b, 0xda, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x3c, 0xed, 0x45, 0x6d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x25, 0x61, 0x37, 0x50, 0x4a, 0xc2, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x25, 0x61, 0x73, 0xf0, 0x8a, 0x1c, 0xb5, 0x83, 0x07, 0xb0, 0xa8, 0x0d, 0xbb, 0x70, 0x8b, 0x81, 0xbf, 0x56, 0x96, 0x37, 0x1f, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x4b, 0x42, 0x32, 0x50, 0x4b, 0xc2, 0x89, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5a, 0x12, 0xa2, 0x81, 0x5a, 0x12, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xde, 0xd0, 0xa3, 0xb6, 0xc1, 0x1b, 0x7a, 0xd4, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x59, 0x3e, 0x6a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x24, 0x2c, 0x06, 0x6a, 0x49, 0x58, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x24, 0x0c, 0x0e, 0x9e, 0x80, 0xa4, 0x36, 0x08, 0x36, 0x78, 0x6d, 0x5c, 0xda, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0xe0, 0x59, 0x3e, 0x6a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2d, 0x09, 0xbb, 0x81, 0x5a, 0x12, 0xb6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2d, 0x09, 0xb3, 0x83, 0x07, 0x3c, 0xa9, 0x0d, 0x82, 0x0d, 0x9e, 0x9e, 0x97, 0x76, 0x68, 0x01, 0x36, 0xec, 0xc2, 0x2d, 0x06, 0xf8, 0x8c, 0xbd, 0xb9, 0xd1, 0xa5, 0xb9, 0xd5, 0xa5, 0xd1, 0xe5, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0x93, 0x90, 0x0c, 0x14, 0x93, 0x70, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x98, 0x84, 0x68, 0xa0, 0x98, 0x84, 0xd5, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xaf, 0x9c, 0x52, 0xdb, 0xe0, 0x95, 0x53, 0x6a, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0xd8, 0x2a, 0xb5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x98, 0x84, 0xe9, 0x40, 0x31, 0x09, 0xeb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x98, 0x84, 0xd9, 0xc1, 0xbb, 0xbe, 0xd4, 0x06, 0xc1, 0x06, 0x4f, 0x11, 0x4c, 0x3b, 0x58, 0x8f, 0xae, 0x35, 0xec, 0x06, 0xcf, 0xa3, 0xe3, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x26, 0x21, 0x19, 0xa8, 0x26, 0xe1, 0xcc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x35, 0x09, 0xd1, 0x40, 0x35, 0x09, 0x93, 0x83, 0x07, 0xed, 0x71, 0x0d, 0xb2, 0x0d, 0x5e, 0x4b, 0xa6, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0x93, 0xb0, 0x1b, 0xa8, 0x26, 0xa1, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x26, 0x61, 0x73, 0xf0, 0x68, 0x36, 0xb5, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6a, 0x12, 0xc6, 0x03, 0xd5, 0x24, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6a, 0x12, 0x86, 0x07, 0x2f, 0x8f, 0x53, 0x3b, 0x18, 0x5e, 0xbc, 0x83, 0x6c, 0x83, 0x47, 0xac, 0xa9, 0x0d, 0xb2, 0x0d, 0x5e, 0xd9, 0xa6, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0x93, 0x50, 0x31, 0x50, 0x4d, 0x42, 0xc9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x4d, 0xc2, 0xfc, 0xe0, 0xf5, 0x78, 0x6a, 0x83, 0x60, 0x83, 0xa7, 0x08, 0xa6, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0xd4, 0xdb, 0x1e, 0x3a, 0x86, 0x1d, 0x87, 0x86, 0x5d, 0xb8, 0xc5, 0x80, 0xaf, 0x6c, 0x6e, 0x2c, 0x0c, 0xae, 0x3c, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x9c, 0x84, 0x64, 0xa0, 0x9c, 0x84, 0x1b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe5, 0x24, 0x44, 0x03, 0xe5, 0x24, 0x2c, 0x86, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0xc2, 0x9f, 0xda, 0x06, 0x4f, 0xf8, 0x53, 0x3b, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x77, 0x02, 0xaa, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe5, 0x24, 0xcc, 0x06, 0xca, 0x49, 0xd8, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe5, 0x24, 0x4c, 0x0e, 0x9e, 0xa4, 0xa8, 0x36, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0x93, 0xb0, 0x1b, 0x28, 0x27, 0x61, 0x7b, 0xf0, 0x20, 0xb3, 0xb4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x72, 0x12, 0xc6, 0x03, 0xe5, 0x24, 0xcc, 0x0f, 0xde, 0xa1, 0x9a, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x3a, 0x68, 0x0c, 0xbb, 0x70, 0x8b, 0x01, 0xfe, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2d, 0x70, 0x72, 0x6f, 0x78, 0xf9, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf5, 0x24, 0x24, 0x03, 0xf5, 0x24, 0xbc, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x27, 0x21, 0x1a, 0xa8, 0x27, 0x61, 0x3b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x1b, 0x30, 0xd5, 0x36, 0x78, 0x03, 0xa6, 0xda, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x3c, 0x5d, 0x53, 0x6d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x27, 0xa1, 0x60, 0xa0, 0x9e, 0x84, 0x9e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x9e, 0x84, 0xf1, 0xc1, 0x33, 0x49, 0xd5, 0x0e, 0x5e, 0xbc, 0xa1, 0x36, 0xec, 0xc2, 0x2d, 0x06, 0xf8, 0xd9, 0xbd, 0xd1, 0xa5, 0xb9, 0x9d, 0xb5, 0xc0, 0xc9, 0xbd, 0xe1, 0xe5, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0x94, 0x90, 0x0c, 0x14, 0x94, 0xf0, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xa0, 0x84, 0x68, 0xa0, 0xa0, 0x84, 0xdd, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xaf, 0x44, 0x55, 0xdb, 0xe0, 0x95, 0xa8, 0x6a, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x78, 0x55, 0xb5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xa0, 0x84, 0xf1, 0x40, 0x41, 0x09, 0x1d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x41, 0x09, 0xc3, 0x83, 0x77, 0xd2, 0xaa, 0x1d, 0xbc, 0x78, 0x43, 0x6d, 0xd8, 0x85, 0x5b, 0x0c, 0xf0, 0x9a, 0x83, 0x0b, 0xbb, 0x73, 0x6b, 0x81, 0x93, 0x7b, 0xc3, 0xcb, 0x0f, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x28, 0x21, 0x19, 0xa8, 0x28, 0xe1, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x45, 0x09, 0xd1, 0x40, 0x45, 0x09, 0xb3, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x9e, 0x89, 0xab, 0xb6, 0xc1, 0x33, 0x71, 0xd5, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0xd5, 0xba, 0x6a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x45, 0x09, 0xdb, 0x81, 0x8a, 0x12, 0x2a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8a, 0x12, 0x76, 0x07, 0x0f, 0x24, 0x56, 0x3b, 0x78, 0xf1, 0x86, 0xda, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x52, 0x42, 0x32, 0x50, 0x52, 0xc2, 0x9b, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x92, 0x12, 0xa2, 0x81, 0x92, 0x12, 0x96, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x8e, 0x07, 0x6f, 0xf2, 0x4f, 0xdb, 0xe0, 0xcd, 0xcd, 0x6a, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0xf0, 0x2c, 0x64, 0xb5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xa4, 0x84, 0xf9, 0x40, 0x49, 0x09, 0x2d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x49, 0x09, 0xd3, 0x83, 0x77, 0x48, 0xab, 0x1d, 0xbc, 0x78, 0x43, 0xed, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x7e, 0x84, 0x78, 0xa0, 0x7e, 0x84, 0x92, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfa, 0x11, 0x36, 0x03, 0xf5, 0x23, 0xac, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfa, 0x11, 0xf2, 0x83, 0x97, 0x6f, 0xab, 0x0d, 0x82, 0x0d, 0x9e, 0x22, 0x98, 0x76, 0xf0, 0x7c, 0xd7, 0x9e, 0x41, 0xb6, 0xc1, 0x3b, 0xaf, 0xd5, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xea, 0x47, 0x98, 0x0e, 0xd4, 0x8f, 0x30, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xea, 0x47, 0x98, 0x1d, 0xbc, 0x61, 0x5c, 0x6d, 0x10, 0x6c, 0xf0, 0x14, 0xc1, 0xb4, 0x83, 0x07, 0xe3, 0x79, 0x0d, 0xb2, 0x0d, 0xde, 0x79, 0xad, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0x8f, 0xd0, 0x30, 0x50, 0x3f, 0x42, 0xc7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x3f, 0xc2, 0xfa, 0xe0, 0x35, 0xea, 0x6a, 0x83, 0x60, 0x83, 0xa7, 0x08, 0xa6, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x1a, 0x40, 0x73, 0xe8, 0x18, 0x76, 0x1c, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0a, 0x4e, 0xc8, 0x06, 0xca, 0x64, 0xdc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x71, 0xa2, 0x07, 0x4f, 0x96, 0x57, 0x5b, 0x5c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x3a, 0x71, 0x03, 0x55, 0x27, 0xac, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xaa, 0x13, 0x3b, 0x50, 0x75, 0x42, 0x74, 0xf0, 0x46, 0x80, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x3a, 0x21, 0x1b, 0xa8, 0x3a, 0x61, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x75, 0xc2, 0x60, 0xa0, 0xea, 0x84, 0xc9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x75, 0x42, 0x78, 0xf0, 0xdc, 0x81, 0xb5, 0x83, 0xc7, 0xb8, 0xf6, 0x0c, 0xb2, 0x0d, 0x5e, 0xf7, 0xaf, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0x9d, 0xb0, 0x1c, 0xa8, 0x3a, 0x61, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0x9d, 0xb0, 0x39, 0x78, 0x84, 0xc2, 0xda, 0xc1, 0xeb, 0x08, 0xaf, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe1, 0x8b, 0x1b, 0xa8, 0x8d, 0xf1, 0x83, 0x60, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x10, 0xc6, 0x0f, 0x14, 0xc2, 0xd0, 0x31, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x42, 0x18, 0x56, 0x03, 0x85, 0x30, 0x54, 0x1c, 0x8c, 0x3b, 0xa8, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x42, 0x18, 0xf2, 0x81, 0x42, 0x18, 0x46, 0x07, 0xab, 0x7b, 0x61, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x84, 0x21, 0x1a, 0x28, 0x84, 0x21, 0x3e, 0x68, 0x6c, 0x1c, 0xff, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x28, 0xc6, 0x0f, 0x94, 0xc6, 0x90, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa2, 0x18, 0xb2, 0x81, 0xa2, 0x18, 0xf2, 0x83, 0x56, 0x97, 0xee, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x8a, 0x61, 0x31, 0x50, 0x14, 0xc3, 0x6a, 0x90, 0x0c, 0x08, 0xde, 0x9d, 0x83, 0x80, 0xf7, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x15, 0xe3, 0x0f, 0xde, 0x3a, 0xb2, 0x36, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x62, 0xc8, 0x06, 0xaa, 0x62, 0xc8, 0x0f, 0x5e, 0x41, 0x41, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x55, 0x0c, 0x8b, 0x81, 0xaa, 0x18, 0x0a, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x8a, 0x61, 0x77, 0xf0, 0xc0, 0x9a, 0xb5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xc5, 0x50, 0x36, 0x50, 0x15, 0x43, 0xdf, 0x20, 0x19, 0x50, 0xea, 0x72, 0x1d, 0x04, 0xbc, 0xff, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x55, 0x0c, 0xfb, 0x81, 0xaa, 0x18, 0xba, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x55, 0x0c, 0x05, 0x03, 0x55, 0x31, 0x94, 0x1c, 0x3c, 0xd7, 0x7d, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x2a, 0x86, 0x96, 0x81, 0xaa, 0x18, 0xaa, 0xc6, 0xa0, 0xb9, 0xc4, 0x71, 0x68, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xaa, 0x18, 0xa6, 0x03, 0x55, 0x31, 0xcc, 0x0f, 0x1e, 0x66, 0xc8, 0x70, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x15, 0xc3, 0x64, 0xa0, 0x2a, 0x86, 0xcd, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x8a, 0x61, 0x34, 0x50, 0x15, 0xc3, 0xea, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x2c, 0xc6, 0x1f, 0xbc, 0x75, 0x64, 0x6d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xc5, 0x90, 0x0d, 0x94, 0xc5, 0x90, 0x1f, 0xb4, 0x41, 0x75, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x17, 0xe3, 0x0f, 0xde, 0x3a, 0xb2, 0x36, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xca, 0x18, 0x92, 0x81, 0xca, 0x18, 0xbe, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x32, 0x86, 0xf9, 0x40, 0x65, 0x0c, 0x57, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x19, 0x43, 0xf3, 0x40, 0x65, 0x0c, 0x4f, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x65, 0x0c, 0xd5, 0x03, 0x95, 0x31, 0xd4, 0x0f, 0x92, 0x01, 0xc1, 0xdf, 0x75, 0x10, 0xf0, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xc6, 0xd0, 0x3f, 0x50, 0x19, 0xc3, 0x87, 0x83, 0x84, 0xb2, 0x93, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x31, 0x9c, 0x18, 0xa8, 0x8c, 0xe1, 0xc8, 0x41, 0x92, 0x82, 0xc3, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x32, 0x86, 0x9a, 0x81, 0xca, 0x18, 0x8a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x65, 0x0c, 0x3d, 0x03, 0x95, 0x31, 0x74, 0x0d, 0x92, 0x81, 0x64, 0xd7, 0x41, 0xc0, 0xfb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xc6, 0x50, 0x36, 0x50, 0x19, 0x43, 0xef, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x38, 0xa8, 0x18, 0x9c, 0x1b, 0xfc, 0xef, 0xf8, 0x76, 0x1c, 0x1a, 0x04, 0x1b, 0x04, 0x59, 0xfc, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xd9, 0x8a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x32, 0x86, 0x86, 0x81, 0xca, 0x18, 0x5a, 0x0e, 0x1e, 0x66, 0xc8, 0x70, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x19, 0xc3, 0x62, 0xa0, 0x32, 0x86, 0xf5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x8c, 0x61, 0x32, 0x50, 0x19, 0xc3, 0xec, 0x60, 0x2d, 0x35, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x65, 0x0c, 0xbb, 0x81, 0xca, 0x18, 0xc6, 0x07, 0xe7, 0x96, 0xe2, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x31, 0x84, 0x03, 0x95, 0x31, 0x0c, 0x0e, 0x1a, 0x1b, 0xc7, 0x3f, 0x58, 0x89, 0x2f, 0x72, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x8c, 0x21, 0x19, 0x28, 0x8c, 0xa1, 0x73, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x85, 0x31, 0xac, 0x06, 0x0a, 0x63, 0xa8, 0x1c, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x30, 0x86, 0xba, 0x81, 0xc2, 0x18, 0x1a, 0x07, 0xc9, 0x80, 0xe3, 0x3a, 0xd5, 0x41, 0xc0, 0xfb, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xc6, 0x50, 0x35, 0x50, 0x18, 0x43, 0xdb, 0x41, 0xf3, 0xd8, 0xf8, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xc6, 0x30, 0x1c, 0x28, 0x8c, 0x61, 0x7c, 0xd0, 0xd8, 0x38, 0xfe, 0xc1, 0x4a, 0x7c, 0x91, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x61, 0x0c, 0xeb, 0x81, 0xc2, 0x18, 0x9a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x61, 0x0c, 0xf3, 0x81, 0xc2, 0x18, 0x2a, 0x0e, 0xd6, 0x52, 0x93, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xc6, 0xd0, 0x31, 0x50, 0x18, 0x43, 0xd1, 0xc1, 0xb9, 0xa5, 0xf8, 0x38, 0x74, 0xf0, 0xa2, 0xd2, 0xb5, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc2, 0x18, 0x16, 0x03, 0x85, 0x31, 0x8c, 0x06, 0xc9, 0x80, 0xe0, 0xe5, 0x3a, 0x08, 0x78, 0xff, 0x41, 0xb0, 0x41, 0x90, 0xc5, 0x2f, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0xad, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0a, 0x63, 0x08, 0x07, 0x0a, 0x63, 0x18, 0x1c, 0xa4, 0xc6, 0x58, 0x1c, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x17, 0x43, 0x36, 0x50, 0x17, 0x43, 0x7e, 0xd0, 0xd8, 0x38, 0xfe, 0xc1, 0x4a, 0x7c, 0x91, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x81, 0xf1, 0x03, 0x55, 0x30, 0x74, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x12, 0x18, 0xb2, 0x81, 0x12, 0x18, 0xf2, 0x83, 0x56, 0x97, 0xee, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x81, 0x21, 0x19, 0xa8, 0x81, 0x61, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x60, 0xc8, 0x07, 0x6a, 0x60, 0x58, 0x1c, 0x34, 0xa5, 0xdf, 0x34, 0x48, 0x06, 0x46, 0x6f, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1a, 0x18, 0x26, 0x03, 0x35, 0x30, 0xcc, 0x0f, 0x31, 0x3c, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x82, 0xf1, 0x07, 0x2f, 0x3c, 0x5e, 0x1b, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x30, 0x64, 0x03, 0x45, 0x30, 0xe4, 0x07, 0x0f, 0x88, 0x31, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x08, 0x86, 0xc5, 0x40, 0x11, 0x0c, 0x65, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x08, 0x86, 0xc9, 0x40, 0x11, 0x0c, 0xb3, 0x83, 0x57, 0x50, 0x10, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x04, 0xc3, 0x6e, 0xa0, 0x08, 0x86, 0x9e, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8a, 0x60, 0x58, 0x1f, 0x3c, 0xdb, 0x7c, 0x6d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xc1, 0x30, 0x1f, 0x28, 0x82, 0xa1, 0xe2, 0xa0, 0x0d, 0xaa, 0xfb, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x22, 0x18, 0x3a, 0x06, 0x8a, 0x60, 0xa8, 0x39, 0x68, 0x1e, 0x1b, 0xff, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x04, 0xc3, 0x70, 0xa0, 0x08, 0x86, 0xe5, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x82, 0x61, 0x3a, 0x50, 0x04, 0xc3, 0xf6, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x08, 0x86, 0xa2, 0x81, 0x22, 0x18, 0xba, 0x0e, 0x9a, 0x2f, 0xc9, 0x3f, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x82, 0xf1, 0x07, 0x2f, 0x3c, 0x5e, 0x1b, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x15, 0x0c, 0xab, 0x81, 0x2a, 0x18, 0xaa, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x05, 0x43, 0xe1, 0x40, 0x15, 0x0c, 0xcd, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x0a, 0x86, 0xc6, 0x81, 0x2a, 0x18, 0x5a, 0x0f, 0x1a, 0x3b, 0xc6, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x82, 0xa1, 0x76, 0xa0, 0x0a, 0x86, 0xe2, 0x43, 0x0c, 0x8f, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x55, 0x30, 0xac, 0x07, 0xaa, 0x60, 0xe8, 0x1b, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x15, 0x0c, 0x4d, 0x03, 0x55, 0x30, 0xd4, 0x1d, 0x94, 0x0c, 0x4d, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x55, 0x30, 0xb4, 0x0c, 0x54, 0xc1, 0x50, 0x74, 0xf0, 0x80, 0x0a, 0x83, 0x41, 0xb0, 0x41, 0x90, 0xc5, 0x2f, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0xad, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x60, 0x28, 0x18, 0xa8, 0x82, 0xa1, 0xe4, 0x20, 0x35, 0xc6, 0xe2, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0x78, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2a, 0x18, 0x86, 0x03, 0x55, 0x30, 0x8c, 0x0f, 0x1a, 0x1b, 0xc7, 0x3f, 0x58, 0x89, 0x2f, 0x72, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x82, 0x21, 0x1f, 0xa8, 0x82, 0x61, 0x74, 0xb0, 0xba, 0x17, 0x66, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2a, 0x18, 0xa2, 0x81, 0x2a, 0x18, 0xe2, 0x83, 0xc6, 0xc5, 0xee, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc2, 0x17, 0x92, 0x81, 0xd2, 0x17, 0xaa, 0x06, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x2f, 0x24, 0x07, 0x0f, 0x6e, 0x61, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4a, 0x5f, 0x48, 0x0e, 0x1e, 0xdc, 0xc2, 0x36, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4a, 0x5f, 0x88, 0x06, 0x4a, 0x5f, 0x88, 0x07, 0xc9, 0x40, 0xb0, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa5, 0x2f, 0xe4, 0x03, 0xa5, 0x2f, 0x54, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd2, 0x17, 0x06, 0x03, 0xa5, 0x2f, 0x8c, 0x06, 0xc9, 0xa0, 0xe6, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xbe, 0xb0, 0x1a, 0x28, 0x7d, 0xa1, 0x61, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xbe, 0x30, 0x1b, 0x28, 0x7d, 0x61, 0x7a, 0xd0, 0xe2, 0xd3, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe9, 0x0b, 0xdb, 0x81, 0xd2, 0x17, 0x0a, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe9, 0x0b, 0x1d, 0x03, 0xa5, 0x2f, 0x34, 0x1d, 0x24, 0xb5, 0x1f, 0x1c, 0x87, 0x8e, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x30, 0x7e, 0xa0, 0x22, 0x86, 0x64, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xc2, 0x90, 0x0d, 0xd4, 0xc2, 0x90, 0x1f, 0xb4, 0xba, 0x74, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2d, 0x0c, 0x8b, 0x81, 0x5a, 0x18, 0x56, 0x07, 0xcf, 0x58, 0x59, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x0d, 0xe3, 0x0f, 0x9e, 0x03, 0xc5, 0x36, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x61, 0xc8, 0x06, 0xaa, 0x61, 0xc8, 0x0f, 0x1a, 0x42, 0xd4, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x87, 0xf1, 0x07, 0xcf, 0x81, 0x62, 0x1b, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x05, 0x31, 0xf4, 0x0c, 0x14, 0xc4, 0x50, 0x75, 0xf0, 0xb4, 0xbb, 0x84, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x82, 0x18, 0x2a, 0x06, 0x0a, 0x62, 0x68, 0x39, 0x78, 0x2f, 0x64, 0xc2, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe5, 0x30, 0x64, 0x03, 0xe5, 0x30, 0xe4, 0x07, 0x8d, 0x8d, 0xe3, 0x1f, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xc4, 0xb0, 0x1e, 0x28, 0x88, 0xa1, 0xe0, 0xa0, 0xad, 0xae, 0xfb, 0x83, 0x77, 0xb4, 0xb1, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xc4, 0x30, 0x1c, 0x28, 0x88, 0x61, 0x7b, 0xf0, 0xc8, 0xa8, 0x84, 0x83, 0x77, 0xb4, 0xb1, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xc4, 0xb0, 0x19, 0x28, 0x88, 0x61, 0x76, 0xf0, 0xa0, 0xb8, 0x84, 0x83, 0x77, 0xb4, 0xb1, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xc4, 0x10, 0x0f, 0x14, 0xc4, 0xb0, 0x38, 0x78, 0xe1, 0xd0, 0xc1, 0xc1, 0x3b, 0xda, 0xd8, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0a, 0x62, 0x48, 0x06, 0x0a, 0x62, 0x08, 0x0f, 0x9a, 0x1d, 0xc8, 0x3f, 0x78, 0x47, 0x1b, 0xdb, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3d, 0x0c, 0x8d, 0x03, 0xf5, 0x30, 0x94, 0x1e, 0xb4, 0x2d, 0x8f, 0x7f, 0xf0, 0x8e, 0x36, 0xb6, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7a, 0x18, 0xca, 0x06, 0xea, 0x61, 0xe8, 0x3b, 0x78, 0x45, 0x5f, 0xc2, 0xc1, 0x3b, 0xda, 0xd8, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xea, 0x61, 0xe8, 0x19, 0xa8, 0x87, 0xa1, 0x6a, 0x90, 0x0c, 0x18, 0xae, 0x5c, 0x07, 0x01, 0xef, 0x7f, 0xf0, 0x8e, 0x36, 0xb6, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7a, 0x18, 0x2a, 0x06, 0xea, 0x61, 0x68, 0x39, 0x78, 0x54, 0x73, 0xc2, 0xc1, 0x3b, 0xda, 0xd8, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xea, 0x61, 0x58, 0x0f, 0xd4, 0xc3, 0x50, 0x70, 0xf0, 0x4e, 0xab, 0x83, 0x83, 0x77, 0xb4, 0xb1, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xc3, 0x30, 0x1c, 0xa8, 0x87, 0x61, 0x7b, 0xf0, 0x12, 0xc6, 0x84, 0x83, 0x77, 0xb4, 0xb1, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xc3, 0xb0, 0x19, 0xa8, 0x87, 0x61, 0x76, 0xd0, 0x18, 0x46, 0xfe, 0xc1, 0x3b, 0xda, 0xd8, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xea, 0x61, 0x88, 0x07, 0xea, 0x61, 0x58, 0x1c, 0x3c, 0xdc, 0x5a, 0xe1, 0xe0, 0x1d, 0x6d, 0x6c, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf5, 0x30, 0x24, 0x03, 0xf5, 0x30, 0x84, 0x83, 0x64, 0x83, 0xd5, 0x2b, 0x24, 0x07, 0x01, 0xef, 0x7f, 0xf0, 0x8e, 0x36, 0xb6, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x7e, 0xf1, 0x03, 0xf5, 0x2f, 0x84, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xfa, 0x85, 0x6c, 0xa0, 0xfa, 0x85, 0xfc, 0xe0, 0x79, 0x20, 0x0d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xbf, 0x90, 0x0c, 0x94, 0xbf, 0x50, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xca, 0x5f, 0x88, 0x06, 0xca, 0x5f, 0x88, 0x0f, 0x5e, 0x41, 0x41, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf9, 0x0b, 0xf9, 0x40, 0xf9, 0x0b, 0xad, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xbf, 0xb0, 0x3a, 0x78, 0xd7, 0x2f, 0xdb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x7f, 0x61, 0x36, 0x50, 0xfe, 0xc2, 0xf4, 0xa0, 0x0d, 0xaa, 0xfb, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf2, 0x17, 0xb6, 0x03, 0xe5, 0x2f, 0x94, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xfc, 0x85, 0x9e, 0x81, 0xf2, 0x17, 0x3a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf9, 0x0b, 0x45, 0x03, 0xe5, 0x2f, 0x94, 0x1d, 0xac, 0xa5, 0x26, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x7f, 0xa1, 0x6d, 0xa0, 0xfc, 0x85, 0xca, 0x83, 0x73, 0x4b, 0xf1, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xfc, 0x85, 0x8e, 0x81, 0xf2, 0x17, 0x6a, 0x0e, 0x9a, 0xc7, 0xc6, 0x1f, 0x04, 0x1b, 0x04, 0x59, 0xfc, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xd9, 0x8a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xfc, 0x85, 0xf9, 0x40, 0xf9, 0x0b, 0x15, 0x07, 0x8d, 0x8d, 0xe3, 0x1f, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x1f, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xca, 0x5f, 0x18, 0x0c, 0x94, 0xbf, 0xb0, 0x38, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe5, 0x2f, 0x4c, 0x06, 0xca, 0x5f, 0xd8, 0x1c, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xbf, 0x50, 0x3b, 0x50, 0xfe, 0x42, 0xf3, 0xc1, 0x43, 0x1b, 0x0c, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xea, 0x5f, 0xfc, 0xc1, 0x0b, 0x63, 0xd9, 0x0e, 0x4e, 0x2b, 0xb8, 0xc7, 0xa1, 0x83, 0x11, 0x12, 0xb5, 0x82, 0x60, 0x83, 0x82, 0x5a, 0x6c, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xc7, 0xb8, 0x81, 0x2a, 0x19, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x21, 0x43, 0x34, 0x50, 0x21, 0xc3, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x90, 0x21, 0x39, 0x78, 0x3d, 0x3c, 0xdb, 0x20, 0xd8, 0x60, 0x9d, 0x5d, 0xd4, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x78, 0x34, 0x3b, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x24, 0x43, 0x3c, 0x50, 0x24, 0xc3, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x92, 0x21, 0x39, 0x78, 0xf5, 0x3d, 0xdb, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x24, 0x43, 0x3e, 0x50, 0x24, 0xc3, 0xe6, 0xe0, 0xfd, 0x08, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x32, 0x8c, 0x06, 0x8a, 0x64, 0x18, 0x1e, 0xbc, 0xef, 0xb6, 0xe7, 0x38, 0x74, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x2c, 0x1e, 0x3c, 0xd3, 0x91, 0x6b, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0x9e, 0xb8, 0x81, 0x12, 0x14, 0x3f, 0xec, 0xc2, 0x2d, 0x06, 0xbc, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0xd4, 0x21, 0x75, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x79, 0x42, 0x32, 0x50, 0x79, 0xc2, 0x66, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x78, 0x15, 0x42, 0xdb, 0x06, 0xaf, 0x42, 0x68, 0x3b, 0x9c, 0x62, 0xc3, 0x2e, 0xdc, 0x62, 0xc0, 0x47, 0x54, 0xc4, 0x54, 0x44, 0x55, 0x1c, 0x52, 0x07, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa5, 0x27, 0x24, 0x03, 0xa5, 0x27, 0x4c, 0x86, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0x97, 0x3b, 0xb4, 0x6d, 0xf0, 0x72, 0x87, 0xb6, 0xc3, 0x29, 0x36, 0xec, 0xc2, 0x2d, 0x06, 0xde, 0x51, 0x11, 0x75, 0x48, 0x1d, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0x9e, 0x90, 0x0c, 0xd4, 0x9e, 0x90, 0x0f, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0xaf, 0xaa, 0x68, 0xdb, 0xe0, 0x55, 0x15, 0x6d, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0x5b, 0x0c, 0x7c, 0xa4, 0xa2, 0x20, 0xe2, 0x90, 0x3a, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x3e, 0x21, 0x19, 0x28, 0x3e, 0x61, 0x30, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x3c, 0x6b, 0xa3, 0x6d, 0x83, 0x67, 0x6d, 0xb4, 0x1d, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0x31, 0xe0, 0x7d, 0x82, 0xa2, 0x4a, 0x7a, 0x72, 0x9a, 0x0e, 0xa9, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xea, 0x13, 0x92, 0x81, 0xea, 0x13, 0x36, 0xc3, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0xc1, 0x03, 0x43, 0xda, 0x36, 0x78, 0x60, 0x48, 0xdb, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x16, 0x03, 0x1e, 0xa8, 0x20, 0xaa, 0x21, 0xe4, 0x90, 0x3a, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x3f, 0x21, 0x19, 0x28, 0x3f, 0x61, 0x31, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x3c, 0x02, 0xa5, 0x6d, 0x83, 0x47, 0xa0, 0xb4, 0x1d, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xa1, 0x9e, 0xa6, 0xa8, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xfe, 0x84, 0x64, 0xa0, 0xfe, 0x84, 0xc1, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0xf0, 0x30, 0x97, 0xb6, 0x0d, 0x1e, 0xe6, 0xd2, 0x76, 0x38, 0xc5, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0x83, 0xaa, 0xa2, 0x0e, 0xa9, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x02, 0x14, 0x92, 0x81, 0x02, 0x14, 0xf2, 0x61, 0x17, 0x6e, 0x43, 0xea, 0xe0, 0xe0, 0x89, 0x34, 0x6d, 0x1b, 0x3c, 0x91, 0xa6, 0xed, 0x70, 0x8a, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x15, 0x28, 0x24, 0x03, 0x15, 0x28, 0x2c, 0x86, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0x57, 0x12, 0xb4, 0x6d, 0xf0, 0x4a, 0x82, 0xb6, 0xc3, 0x29, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x6d, 0x71, 0x03, 0x65, 0x2e, 0x34, 0x0e, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xdc, 0xe2, 0x0e, 0x5e, 0x16, 0xd4, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xb7, 0xb8, 0x83, 0x97, 0x05, 0xb5, 0x0d, 0xbb, 0xc1, 0x58, 0x47, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x70, 0xf1, 0x03, 0x15, 0x2e, 0x2c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x5c, 0x08, 0x06, 0x2a, 0x5c, 0x98, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xb8, 0x90, 0x0c, 0x54, 0xb8, 0x90, 0x1f, 0xa2, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xb8, 0x30, 0x18, 0xa8, 0x70, 0x61, 0x75, 0x68, 0x24, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xb8, 0xb0, 0x1b, 0xa8, 0x70, 0x61, 0x78, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xe3, 0xe2, 0x0e, 0x5e, 0x16, 0xd4, 0x36, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8d, 0x0b, 0xc9, 0x40, 0x8d, 0x0b, 0x25, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xb8, 0x90, 0x0d, 0xd4, 0xb8, 0x30, 0x3e, 0x68, 0x35, 0xd3, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x71, 0x61, 0x3d, 0x50, 0xe3, 0x42, 0xc7, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x2e, 0x7e, 0xa0, 0xc8, 0x85, 0x96, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x22, 0x17, 0x82, 0x81, 0x22, 0x17, 0x66, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x2e, 0x24, 0x03, 0x45, 0x2e, 0xe4, 0x87, 0x68, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x2e, 0x0c, 0x06, 0x8a, 0x5c, 0x58, 0x1d, 0x1a, 0x09, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x2e, 0xec, 0x06, 0x8a, 0x5c, 0x28, 0x39, 0x18, 0x99, 0xbd, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x99, 0x8b, 0x3b, 0x78, 0x59, 0x50, 0xdb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x99, 0x8b, 0x1d, 0x28, 0x73, 0x61, 0x73, 0xe8, 0xa4, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xb9, 0x30, 0x1a, 0x28, 0x73, 0xa1, 0x70, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xb6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x99, 0x0b, 0x15, 0x03, 0x65, 0x2e, 0xf4, 0x1d, 0x8c, 0xcc, 0xde, 0xe3, 0xf1, 0xf1, 0x78, 0x41, 0xb0, 0x78, 0xf0, 0x48, 0x47, 0xae, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x86, 0xe2, 0x06, 0x8a, 0x52, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x21, 0x0a, 0x83, 0x81, 0x42, 0x14, 0x66, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x21, 0x0a, 0xc9, 0xc1, 0x83, 0x00, 0xdb, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0xc1, 0xb5, 0xe3, 0xf1, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x78, 0x06, 0x5f, 0xdb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x35, 0x0a, 0xe9, 0x40, 0x35, 0x0a, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x8b, 0x42, 0x72, 0xf0, 0xee, 0xc3, 0xb6, 0x83, 0xe7, 0xdf, 0x79, 0x0d, 0xb2, 0x0d, 0x9e, 0xc1, 0xd7, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x90, 0x42, 0x34, 0x50, 0x90, 0xc2, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x48, 0x21, 0x39, 0x78, 0x8d, 0x63, 0xdb, 0xc1, 0x9b, 0x97, 0xba, 0x06, 0xd9, 0x06, 0xcf, 0xe0, 0x6b, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x52, 0x88, 0x07, 0x6a, 0x52, 0x58, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x35, 0x29, 0x24, 0x07, 0x4f, 0xa4, 0x6c, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x52, 0xc8, 0x07, 0x6a, 0x52, 0xd8, 0x1c, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x26, 0x85, 0xd1, 0x40, 0x4d, 0x0a, 0xc3, 0x83, 0xf7, 0xdd, 0xf6, 0x1c, 0x87, 0x0e, 0xdd, 0x8f, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa9, 0x8b, 0x1b, 0x28, 0x7a, 0xa1, 0x71, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x2e, 0xee, 0xe0, 0xf1, 0xa2, 0x6d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb5, 0x8b, 0x3b, 0x78, 0xbc, 0x68, 0xdb, 0xb0, 0x1b, 0x76, 0x0d, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xca, 0x5d, 0xfc, 0x40, 0xb9, 0x0b, 0xc1, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc5, 0x8b, 0x3b, 0x78, 0xbc, 0x68, 0xdb, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x15, 0x2f, 0x24, 0x03, 0x15, 0x2f, 0x94, 0x0c, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xf1, 0x42, 0x36, 0x50, 0xf1, 0xc2, 0xf8, 0x60, 0x78, 0x51, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x15, 0x2f, 0xac, 0x07, 0x2a, 0x5e, 0xe8, 0x38, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xe4, 0xc5, 0x0f, 0x94, 0xbc, 0x30, 0x3a, 0x08, 0x4a, 0xef, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xe8, 0xc5, 0x1d, 0x3c, 0x5e, 0xb4, 0x6d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xe8, 0xc5, 0x0e, 0x14, 0xbd, 0xb0, 0x39, 0x34, 0x12, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8a, 0x5e, 0x18, 0x0d, 0x14, 0xbd, 0x50, 0x38, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xf4, 0x42, 0xc5, 0x40, 0xd1, 0x0b, 0x7d, 0x07, 0x41, 0xe9, 0x7d, 0x3c, 0x3e, 0x1e, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6d, 0x8a, 0x1b, 0xa8, 0x50, 0xf1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd5, 0x29, 0xac, 0x06, 0xaa, 0x53, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd5, 0x29, 0x24, 0x07, 0x4f, 0x5e, 0x6e, 0x3b, 0x78, 0xb9, 0x72, 0xd1, 0x20, 0xdb, 0xe0, 0xa1, 0xc7, 0x6d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x81, 0x0a, 0x8b, 0x81, 0x02, 0x15, 0xc6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x81, 0x0a, 0xc9, 0xc1, 0x43, 0xa4, 0xdb, 0x0e, 0x96, 0xd2, 0x46, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8a, 0x59, 0xdc, 0x40, 0x55, 0x0b, 0x0d, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x66, 0x71, 0x07, 0xef, 0xc1, 0x6e, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xea, 0x59, 0xdc, 0xc1, 0x7b, 0xb0, 0xdb, 0x86, 0xdd, 0xb0, 0x6b, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xd0, 0xe2, 0x07, 0x0a, 0x5a, 0x08, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4a, 0x5a, 0xdc, 0xc1, 0x7b, 0xb0, 0xdb, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x69, 0x21, 0x19, 0x28, 0x69, 0xa1, 0x64, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x92, 0x16, 0xb2, 0x81, 0x92, 0x16, 0xc6, 0x07, 0xc3, 0x8b, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x69, 0x61, 0x3d, 0x50, 0xd2, 0x42, 0xc7, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x35, 0x2d, 0x7e, 0xa0, 0xa6, 0x85, 0xed, 0x86, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x35, 0x2d, 0x04, 0x07, 0xcf, 0x75, 0x6f, 0x3b, 0x18, 0xa6, 0x13, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x55, 0x8b, 0x3b, 0x78, 0x0f, 0x76, 0xdb, 0x20, 0x19, 0x32, 0x88, 0x16, 0xa4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x55, 0x0b, 0x9b, 0x81, 0xaa, 0x16, 0x0a, 0x0e, 0x82, 0xd2, 0xfb, 0x78, 0x7c, 0x3c, 0x1e, 0x04, 0x1b, 0x3c, 0xf4, 0xb9, 0x67, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xab, 0xb8, 0x81, 0x42, 0x16, 0x3f, 0xec, 0xc2, 0x2d, 0x06, 0x3c, 0x73, 0x74, 0x61, 0x72, 0xf4, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x05, 0x2b, 0x24, 0x03, 0xa5, 0x2b, 0x64, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x05, 0x2b, 0xa4, 0x03, 0x05, 0x2b, 0x6c, 0x86, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x45, 0x7f, 0xdb, 0x06, 0xaf, 0xe8, 0x6f, 0x3b, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x27, 0xfa, 0xb7, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xac, 0x10, 0x0f, 0xd4, 0xac, 0xb0, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x56, 0x48, 0x0f, 0xde, 0x82, 0xe0, 0x36, 0x08, 0x36, 0x58, 0x67, 0x17, 0x75, 0x68, 0x0a, 0x34, 0xc8, 0x36, 0x78, 0xa2, 0x7f, 0xdb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd9, 0x0a, 0x93, 0x81, 0xb2, 0x15, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd9, 0x0a, 0xe9, 0xc1, 0x43, 0x1e, 0xdc, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb2, 0x15, 0x36, 0x03, 0x65, 0x2b, 0xec, 0x0e, 0xde, 0x8f, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xb6, 0xc2, 0x70, 0xa0, 0x6c, 0x85, 0xf1, 0xc1, 0xfb, 0x6e, 0x7b, 0x8e, 0x43, 0x87, 0x4e, 0x44, 0x83, 0x6c, 0x83, 0x27, 0xfa, 0xb7, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x2b, 0xcc, 0x06, 0x2a, 0x57, 0xd8, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x2b, 0xa4, 0x07, 0x4f, 0xee, 0x70, 0x3b, 0x78, 0xc9, 0x3c, 0xd6, 0xb0, 0x0b, 0xb7, 0x18, 0xf0, 0x8f, 0xbd, 0xb9, 0xd1, 0xa5, 0xb9, 0xd5, 0x95, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xaf, 0x90, 0x0c, 0x14, 0xb1, 0x90, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xaf, 0x90, 0x0e, 0x54, 0xaf, 0x30, 0x1b, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xbd, 0x21, 0x6e, 0x1b, 0xbc, 0x37, 0xc4, 0xed, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x1e, 0x39, 0xe2, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xc0, 0xc2, 0x64, 0xa0, 0x80, 0x85, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xc0, 0x42, 0x7a, 0xf0, 0x9c, 0x16, 0xb7, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x80, 0x85, 0xcd, 0x40, 0x01, 0x0b, 0xbb, 0x83, 0xf7, 0x23, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xb0, 0x30, 0x1c, 0x28, 0x60, 0x61, 0x7c, 0xf0, 0xbe, 0xdb, 0x9e, 0xe3, 0xd0, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0xe0, 0x91, 0x23, 0x6e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0d, 0x0b, 0xb3, 0x81, 0x1a, 0x16, 0x76, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0d, 0x0b, 0xe9, 0xc1, 0xc3, 0x77, 0xdc, 0x86, 0xdd, 0x60, 0xac, 0xa3, 0x6d, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0xe1, 0x68, 0x3f, 0x08, 0x4a, 0xef, 0x43, 0x9b, 0xc7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x8e, 0x85, 0x64, 0xa0, 0x8e, 0x85, 0xd1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1d, 0x0b, 0xd1, 0x40, 0x1d, 0x0b, 0x8b, 0x83, 0x77, 0xbf, 0xf8, 0x0c, 0xb2, 0x0d, 0xde, 0x19, 0xe4, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xb1, 0x30, 0x19, 0xa8, 0x63, 0x61, 0x73, 0x30, 0x34, 0x7f, 0x0f, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb0, 0xb8, 0xc1, 0xdb, 0x24, 0x62, 0x06, 0xfc, 0xb9, 0xb7, 0xb0, 0xf5, 0x20, 0x00, 0xee, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe2, 0x45, 0x74, 0x60, 0x13, 0x23, 0x6e, 0xd8, 0x85, 0xdb, 0xe0, 0x7d, 0x02, 0x3a, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x5e, 0xc4, 0x0f, 0x2c, 0x5e, 0x84, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe2, 0x45, 0x08, 0x06, 0x16, 0x2f, 0x42, 0x3a, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xfb, 0x04, 0x74, 0x36, 0x78, 0x9f, 0x80, 0xce, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x3c, 0x3a, 0xca, 0x6d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0xbc, 0x08, 0xf1, 0xc0, 0xe2, 0x45, 0xd8, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x7e, 0x83, 0xf6, 0x25, 0x98, 0x0e, 0x9e, 0x94, 0x7e, 0x75, 0xe8, 0xa0, 0x31, 0xec, 0xc2, 0x6d, 0xf0, 0x30, 0x02, 0x9d, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x2f, 0xe2, 0x07, 0x16, 0x30, 0x42, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x79, 0x11, 0xb2, 0x81, 0xcd, 0x8b, 0x30, 0x18, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x61, 0x04, 0x3a, 0x1b, 0x3c, 0x8c, 0x40, 0xe7, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0xde, 0x00, 0xe6, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x5e, 0x84, 0x6c, 0x60, 0xff, 0x22, 0xa4, 0xc3, 0x2e, 0xec, 0xc2, 0x6d, 0xf0, 0x8a, 0xa9, 0xa0, 0x43, 0x23, 0xc1, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x78, 0x6e, 0xc7, 0xcd, 0xa1, 0x91, 0xe0, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x81, 0x8f, 0x56, 0x36, 0xb6, 0x1e, 0x1a, 0x09, 0x6e, 0x88, 0xe1, 0x70, 0x8b, 0x81, 0x4f, 0xf6, 0xa6, 0x57, 0x1e, 0x1a, 0x09, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x5e, 0x84, 0x7c, 0x60, 0xf5, 0x22, 0x0c, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0xbf, 0xc1, 0xea, 0x4d, 0xb4, 0x83, 0x92, 0xa1, 0xe9, 0xd0, 0x41, 0x63, 0xd8, 0x85, 0xdb, 0xe0, 0x09, 0x8e, 0x44, 0x87, 0x46, 0x82, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdd, 0x8b, 0x30, 0x1c, 0xd8, 0xbd, 0x08, 0x0d, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x86, 0xdf, 0xe0, 0xb8, 0xd7, 0x7b, 0xf0, 0xea, 0x45, 0x81, 0x43, 0x07, 0x8d, 0x61, 0x17, 0x6e, 0x83, 0x27, 0x38, 0x12, 0x1d, 0x84, 0x14, 0xf8, 0xc1, 0x58, 0x18, 0x1d, 0x76, 0xe1, 0x36, 0x78, 0x18, 0x1e, 0xd1, 0xa1, 0x91, 0xe0, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xf9, 0x22, 0x0c, 0x07, 0x96, 0x2f, 0x42, 0xc3, 0xc1, 0x0b, 0xf4, 0xdc, 0x86, 0x5d, 0xb8, 0x0d, 0x1e, 0x86, 0x47, 0x74, 0x10, 0x52, 0xe0, 0x07, 0x63, 0x61, 0x74, 0xd8, 0x85, 0xdb, 0xe0, 0xf1, 0x07, 0x44, 0x87, 0x46, 0x82, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xed, 0x8b, 0x30, 0x1c, 0xd8, 0xbe, 0x08, 0x0d, 0x07, 0x2f, 0xd0, 0x73, 0x1b, 0x76, 0xe1, 0x36, 0x78, 0xfc, 0x01, 0xd1, 0x41, 0x48, 0x81, 0x1f, 0x8c, 0x85, 0xd1, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x7e, 0x11, 0x86, 0x03, 0xeb, 0x17, 0xa1, 0x61, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xf0, 0x1b, 0x3c, 0xe2, 0xa0, 0xe7, 0xe0, 0x89, 0xb1, 0x0b, 0x87, 0x0e, 0x1a, 0xc3, 0x2e, 0xdc, 0x06, 0x0f, 0x03, 0x9f, 0x39, 0x08, 0x29, 0xf0, 0x83, 0xb1, 0x30, 0x3a, 0xec, 0xc2, 0x6d, 0xf0, 0x24, 0x03, 0x9d, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x30, 0xe2, 0x07, 0x36, 0x30, 0xc2, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x03, 0x23, 0x04, 0x03, 0x1b, 0x18, 0x21, 0x1d, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x49, 0x06, 0x3a, 0x1b, 0x3c, 0xc9, 0x40, 0xe7, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0xde, 0x3c, 0xe9, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x60, 0x84, 0x78, 0x60, 0x03, 0x23, 0xec, 0x0e, 0x5e, 0xa0, 0xe7, 0x36, 0xec, 0xc2, 0x6d, 0xf0, 0x10, 0x04, 0x9d, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x30, 0xe2, 0x07, 0x56, 0x30, 0xc2, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x05, 0x23, 0x04, 0x03, 0x2b, 0x18, 0x21, 0x1d, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x21, 0x08, 0x3a, 0x1b, 0x3c, 0x04, 0x41, 0xe7, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0xde, 0x02, 0xea, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x60, 0x84, 0x78, 0x60, 0x05, 0x23, 0xec, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0xbf, 0xc1, 0x1b, 0xd5, 0x79, 0x06, 0xc9, 0x40, 0x59, 0x3b, 0x1e, 0x1f, 0x3a, 0x68, 0x0c, 0xbb, 0x70, 0x1b, 0x3c, 0x41, 0x41, 0xe7, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1d, 0x8c, 0xf8, 0x81, 0x1d, 0x8c, 0x30, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0xc1, 0x08, 0xc1, 0xc0, 0x0e, 0x46, 0x48, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x82, 0x82, 0xce, 0x06, 0x4f, 0x50, 0xd0, 0x39, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x97, 0xba, 0xba, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x3b, 0x18, 0x21, 0x1e, 0xd8, 0xc1, 0x08, 0xbb, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0xc3, 0x6f, 0xd0, 0x72, 0xfe, 0xd2, 0x20, 0x19, 0x38, 0xba, 0x8e, 0xc7, 0x87, 0x0e, 0x1a, 0xc3, 0x2e, 0xdc, 0x06, 0xaf, 0x5f, 0xd0, 0x39, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x09, 0x23, 0x7e, 0x60, 0x09, 0x23, 0x0c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x30, 0x42, 0x30, 0xb0, 0x84, 0x11, 0xd2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x5e, 0xbf, 0xa0, 0xb3, 0xc1, 0xeb, 0x17, 0x74, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x1d, 0xbd, 0x6e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x12, 0x46, 0x88, 0x07, 0x96, 0x30, 0xc2, 0xee, 0xe0, 0x19, 0x8e, 0x6e, 0xc3, 0x2e, 0xdc, 0x06, 0x6f, 0x6e, 0xd0, 0x39, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x0b, 0x23, 0x7e, 0x60, 0x0b, 0x23, 0x0c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x30, 0x42, 0x30, 0xb0, 0x85, 0x11, 0xd2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xde, 0xdc, 0xa0, 0xb3, 0xc1, 0x9b, 0x1b, 0x74, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x7d, 0xc9, 0x6e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x16, 0x46, 0x88, 0x07, 0xb6, 0x30, 0xc2, 0x6e, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xf0, 0x1b, 0xba, 0x98, 0x1c, 0x94, 0x0c, 0x4d, 0x87, 0x0e, 0x1a, 0xc3, 0x2e, 0xdc, 0x06, 0x0f, 0x7c, 0xd0, 0x39, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x0d, 0x23, 0x7e, 0x60, 0x0d, 0x23, 0x0c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd6, 0x30, 0x42, 0x30, 0xb0, 0x86, 0x11, 0xd2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x1e, 0xf8, 0xa0, 0xb3, 0xc1, 0x03, 0x1f, 0x74, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x7d, 0xd7, 0x6e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1a, 0x46, 0x88, 0x07, 0xd6, 0x30, 0xc2, 0x6e, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xf0, 0x1b, 0x3c, 0x59, 0x6f, 0xe0, 0xe0, 0xfc, 0x44, 0x7b, 0xe8, 0xa0, 0x31, 0xec, 0xc2, 0x6d, 0xf0, 0xb4, 0x08, 0x9d, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x30, 0xe2, 0x07, 0xf6, 0x30, 0xc2, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x0f, 0x23, 0x04, 0x03, 0x7b, 0x18, 0x21, 0x1d, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x69, 0x11, 0x3a, 0x1b, 0x3c, 0x2d, 0x42, 0xe7, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0xde, 0x5a, 0xee, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x61, 0x84, 0x78, 0x60, 0x0f, 0x23, 0xec, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0xbf, 0xc1, 0xeb, 0x5e, 0x7a, 0x0e, 0x4a, 0x86, 0xa6, 0x43, 0x07, 0x8d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x11, 0x23, 0x7e, 0x60, 0x11, 0x23, 0x0c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x16, 0x31, 0x42, 0x30, 0xb0, 0x88, 0x11, 0xd2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x1e, 0x35, 0xa1, 0xb3, 0xc1, 0xa3, 0x26, 0x74, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0xe0, 0x9d, 0xf2, 0x6e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x22, 0x46, 0x88, 0x07, 0x16, 0x31, 0xc2, 0x6e, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xf0, 0x1b, 0x34, 0xf0, 0xc2, 0x74, 0x50, 0x32, 0x34, 0x1d, 0x3a, 0x68, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x8b, 0x1b, 0xbc, 0xfc, 0xcd, 0xad, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x4f, 0x11, 0x1d, 0xd8, 0xac, 0x88, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd6, 0x29, 0xa2, 0x07, 0x8f, 0x19, 0x78, 0x1b, 0x76, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xe7, 0xc2, 0xf0, 0xde, 0x43, 0x34, 0x37, 0xc4, 0x70, 0xd8, 0x0d, 0x96, 0x58, 0x5a, 0x6d, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x6e, 0x65, 0x61, 0xf2, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0x06, 0x0f, 0xda, 0x1a, 0xda, 0x10, 0xc3, 0x61, 0x37, 0x78, 0x48, 0x06, 0xd6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x8b, 0x01, 0x9e, 0x6d, 0x65, 0x73, 0x73, 0x2d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0xe5, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0x06, 0xcb, 0x6c, 0x90, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0x96, 0x01, 0x22, 0x6d, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x73, 0x74, 0x75, 0xe2, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x1e, 0x24, 0xc5, 0x03, 0x1f, 0xa2, 0xb9, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0xe2, 0x41, 0x0b, 0xfd, 0xa4, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x6e, 0x6f, 0x6f, 0xee, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x2d, 0x06, 0xfe, 0x5c, 0x99, 0x1b, 0x79, 0x88, 0xe6, 0x86, 0x18, 0x1e, 0xbc, 0x7b, 0x3d, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x9f, 0x22, 0x7e, 0x60, 0x9f, 0x22, 0x0c, 0x06, 0xc1, 0x06, 0x4f, 0xe3, 0x72, 0x3b, 0x34, 0x6a, 0x19, 0x76, 0x61, 0x37, 0x78, 0xb9, 0x54, 0xd0, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x1b, 0x3c, 0xb7, 0xe3, 0xe6, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x78, 0x8b, 0x9b, 0xdb, 0x21, 0x9a, 0x1b, 0x62, 0x38, 0xdc, 0x06, 0x6f, 0x7e, 0x73, 0x3b, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xa1, 0x22, 0x7e, 0x60, 0xa1, 0x22, 0x0c, 0x06, 0xc1, 0x06, 0x2f, 0x9e, 0x73, 0x3b, 0x34, 0x6a, 0x19, 0x76, 0x61, 0x37, 0x78, 0x89, 0xda, 0xd0, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0x43, 0x43, 0x82, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0x1e, 0x51, 0x12, 0xb4, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0x1a, 0xca, 0xa1, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0x25, 0x96, 0x56, 0x1b, 0x62, 0x38, 0xec, 0x06, 0x0f, 0xda, 0x1a, 0xda, 0x10, 0xc3, 0x61, 0x37, 0x78, 0xd9, 0xf5, 0xd0, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0xa3, 0x81, 0x87, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0x1e, 0x83, 0x47, 0xb4, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0xf8, 0xa1, 0xa0, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0xf7, 0xa4, 0x06, 0x6d, 0x88, 0xe1, 0xb0, 0x1b, 0x3c, 0xf8, 0x80, 0x68, 0x43, 0x0c, 0x87, 0xdb, 0xe0, 0x09, 0x8e, 0x44, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x54, 0xc4, 0x0f, 0x6c, 0x54, 0x84, 0xc1, 0x20, 0xd8, 0xe0, 0x41, 0x7a, 0x6e, 0x87, 0x46, 0x2d, 0xc3, 0x2e, 0xec, 0x06, 0xef, 0xdd, 0xc1, 0xd8, 0x10, 0xc3, 0x61, 0x37, 0x78, 0xf4, 0x58, 0xd0, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0xcb, 0xd5, 0x82, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0xde, 0xc9, 0x16, 0xb4, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0x72, 0xb8, 0xa0, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0xb7, 0xeb, 0x97, 0x6d, 0x88, 0xe1, 0xb0, 0x1b, 0xbc, 0xfc, 0xc6, 0x6c, 0x43, 0x0c, 0x0f, 0x5e, 0x39, 0x5e, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x52, 0x11, 0x3f, 0xb0, 0x52, 0x11, 0x06, 0x83, 0x60, 0x83, 0x17, 0xab, 0xba, 0x1d, 0x1a, 0xb5, 0x0c, 0xbb, 0xb0, 0x1b, 0x2c, 0xb1, 0xb4, 0xda, 0x10, 0xc3, 0x61, 0x37, 0x78, 0xd0, 0xd6, 0xd0, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0x43, 0x32, 0xb0, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0xe0, 0xd1, 0x45, 0x58, 0x87, 0x68, 0x6e, 0x88, 0xe1, 0xb0, 0x1b, 0xbc, 0x2d, 0x05, 0x6b, 0x43, 0x0c, 0x87, 0xdd, 0xe0, 0x85, 0xff, 0x57, 0x1b, 0x62, 0x78, 0xf0, 0x12, 0xf7, 0xab, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9d, 0x8a, 0xf8, 0x81, 0x9d, 0x8a, 0x30, 0x18, 0x04, 0x1b, 0xbc, 0x27, 0xd7, 0xed, 0xd0, 0xa8, 0x65, 0xd8, 0x85, 0xdd, 0x60, 0x89, 0xa5, 0xd5, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x1b, 0x3c, 0x0c, 0x7c, 0xe6, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0x07, 0x6d, 0x0d, 0x6d, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x66, 0x6c, 0x75, 0xe2, 0x21, 0x9a, 0x1b, 0x62, 0x78, 0xf0, 0x76, 0x8b, 0xb7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa5, 0x8a, 0xf8, 0x81, 0xa5, 0x8a, 0x30, 0x18, 0x04, 0x1b, 0xbc, 0xca, 0xd1, 0xed, 0xd0, 0xa8, 0x65, 0xd8, 0x85, 0xdd, 0xe0, 0x4d, 0x6c, 0x3d, 0x1b, 0x62, 0x38, 0xec, 0x06, 0x0f, 0x31, 0xec, 0xd9, 0x10, 0xc3, 0xe1, 0x36, 0x78, 0x3d, 0x67, 0xcf, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x5b, 0x15, 0xf1, 0x03, 0x5b, 0x15, 0x61, 0x30, 0x08, 0x36, 0x78, 0x05, 0xb5, 0xdb, 0xa1, 0x51, 0xcb, 0xb0, 0x0b, 0xbb, 0xc1, 0x0b, 0xa7, 0x83, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0x96, 0x58, 0x5a, 0x6d, 0x88, 0xe1, 0xb0, 0x1b, 0x3c, 0x68, 0x6b, 0x68, 0x43, 0x0c, 0x87, 0xdd, 0xe0, 0x99, 0xde, 0x41, 0x07, 0xef, 0xce, 0x78, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0xab, 0x88, 0x1f, 0x58, 0xab, 0x08, 0x83, 0x41, 0xb0, 0xc1, 0x2b, 0xc4, 0xdd, 0x0e, 0x8d, 0x5a, 0x86, 0x5d, 0xd8, 0x85, 0x5b, 0x0c, 0xfc, 0x30, 0xb9, 0xb7, 0xfb, 0x10, 0xcd, 0x0d, 0x31, 0x1c, 0x6e, 0x31, 0xf0, 0xc3, 0xec, 0xde, 0xee, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x2a, 0xe2, 0x07, 0xf6, 0x2a, 0xc2, 0x60, 0x10, 0x6c, 0xf0, 0x22, 0x78, 0xb7, 0x43, 0xa3, 0x96, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xb1, 0x22, 0x7e, 0x60, 0xb1, 0x22, 0x0c, 0x06, 0xc1, 0x06, 0xaf, 0xe9, 0x77, 0x3b, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf3, 0x1f, 0xb2, 0x81, 0xf9, 0x0f, 0x77, 0x0e, 0x1a, 0x16, 0xb9, 0x3f, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x22, 0x44, 0x07, 0x76, 0x29, 0xe2, 0x16, 0x17, 0x04, 0x8b, 0x33, 0x33, 0x33, 0xb3, 0x41, 0x1a, 0x40, 0xc6, 0xc1, 0x83, 0xd2, 0x37, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x62, 0x42, 0xdc, 0xc0, 0x86, 0x42, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x97, 0x10, 0x77, 0xf0, 0xae, 0xbf, 0xb7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc5, 0x84, 0x90, 0x0e, 0x2c, 0x26, 0x84, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x98, 0x10, 0x92, 0x83, 0xb7, 0x11, 0xbe, 0x1d, 0x3c, 0xa3, 0x60, 0x68, 0x90, 0x6d, 0xf0, 0xd0, 0xbe, 0xb7, 0x41, 0xb6, 0xc1, 0x33, 0x00, 0xdf, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x13, 0x42, 0x3a, 0xb0, 0x99, 0x10, 0x16, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x66, 0x42, 0x48, 0x0e, 0x5e, 0xbb, 0xf8, 0x76, 0xf0, 0xf8, 0x65, 0xa3, 0x41, 0xb6, 0xc1, 0x43, 0xfb, 0xde, 0x06, 0xd9, 0x06, 0xcf, 0x00, 0x7c, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x4d, 0x08, 0xe9, 0xc0, 0x6a, 0x42, 0x18, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xab, 0x09, 0x21, 0x39, 0x78, 0xbf, 0xe4, 0xdb, 0x20, 0xd8, 0xe0, 0x39, 0xd4, 0x4a, 0x87, 0x4e, 0x44, 0x83, 0x6c, 0x83, 0x87, 0xf6, 0xbd, 0x0d, 0xb2, 0x0d, 0x9e, 0x01, 0xf8, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x9b, 0x10, 0xd2, 0x81, 0xdd, 0x84, 0xb0, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x76, 0x13, 0x42, 0x72, 0xf0, 0x70, 0xcd, 0xb7, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x37, 0x21, 0xc4, 0x03, 0xbb, 0x09, 0x61, 0x72, 0xf0, 0x7e, 0x84, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdd, 0x84, 0xb0, 0x19, 0xd8, 0x4d, 0x08, 0xb3, 0x83, 0xf3, 0x13, 0xed, 0x71, 0xe8, 0x60, 0x09, 0xff, 0xcf, 0x20, 0xdb, 0xe0, 0xa1, 0x7d, 0x6f, 0x83, 0x6c, 0x83, 0x67, 0x00, 0xbe, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x27, 0x84, 0x74, 0x60, 0x39, 0x21, 0xcc, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe5, 0x84, 0x90, 0x1c, 0x3c, 0x57, 0xf5, 0x6d, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xf0, 0x1b, 0x3c, 0xaf, 0x97, 0xe9, 0x60, 0x2c, 0x43, 0x1d, 0xbc, 0xe7, 0x30, 0x63, 0x90, 0x6d, 0xf0, 0xd0, 0xbe, 0xb7, 0x41, 0xb6, 0xc1, 0x33, 0x00, 0xdf, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x13, 0x42, 0x3a, 0xb0, 0x9d, 0x10, 0x66, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x76, 0x42, 0x48, 0x0e, 0x5e, 0x3f, 0xfb, 0x36, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0xf8, 0x0d, 0x9e, 0xd7, 0xcb, 0x74, 0xb0, 0x24, 0x87, 0xe6, 0xe0, 0x21, 0x9e, 0x19, 0x83, 0x6c, 0x83, 0x87, 0xf6, 0xbd, 0x0d, 0xb2, 0x0d, 0x9e, 0x01, 0xf8, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x9e, 0x10, 0xd2, 0x81, 0xf5, 0x84, 0xb0, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd6, 0x13, 0x42, 0x72, 0xf0, 0xa0, 0xde, 0xb7, 0x41, 0xb0, 0xc1, 0xc3, 0xf6, 0x7a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xbc, 0xe1, 0x6f, 0xe3, 0x20, 0xa5, 0x74, 0xe6, 0x38, 0x34, 0xc8, 0x36, 0x78, 0x68, 0xdf, 0xdb, 0x20, 0xdb, 0xe0, 0x19, 0x80, 0x6f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xfb, 0x09, 0x21, 0x1d, 0xd8, 0x4f, 0x08, 0x83, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x3f, 0x21, 0x24, 0x07, 0x8f, 0x36, 0x7e, 0x1b, 0x04, 0x1b, 0x3c, 0x6c, 0xaf, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc3, 0xd4, 0x2f, 0x0e, 0x1a, 0x15, 0x67, 0x3a, 0x0e, 0x0d, 0xb2, 0x0d, 0x1e, 0xda, 0xf7, 0x36, 0xc8, 0x36, 0x78, 0x06, 0xe0, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xa0, 0x10, 0xd2, 0x81, 0x05, 0x85, 0xb0, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x16, 0x14, 0x42, 0x72, 0xf0, 0x30, 0xe8, 0xb7, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0xe0, 0x5c, 0x3a, 0xac, 0xd0, 0x1e, 0x3c, 0x54, 0x2f, 0xec, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x56, 0x42, 0x48, 0x07, 0xb6, 0x12, 0xc2, 0x66, 0x10, 0x6c, 0xf0, 0xb0, 0xbd, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x03, 0x1e, 0xba, 0x30, 0xba, 0x34, 0xf2, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x8b, 0x1b, 0x3c, 0xa9, 0xab, 0x63, 0x83, 0xb7, 0x2e, 0x5c, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x11, 0x42, 0x3a, 0xb0, 0x89, 0x10, 0xc6, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x86, 0xdf, 0xe0, 0xf1, 0x10, 0x57, 0x07, 0xe9, 0x5f, 0x0a, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x8f, 0x21, 0x6e, 0x60, 0x93, 0x21, 0x8c, 0x06, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xc8, 0x10, 0x77, 0xf0, 0xac, 0xf3, 0xb7, 0x41, 0xb0, 0xb8, 0xc1, 0x0b, 0xf7, 0xde, 0x5a, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x19, 0xe2, 0x0e, 0x9e, 0x75, 0xfe, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xc9, 0x10, 0x3b, 0xb0, 0xc9, 0x10, 0x7f, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x26, 0x43, 0x08, 0x06, 0x36, 0x19, 0x42, 0x3a, 0x1e, 0xac, 0x09, 0xad, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x19, 0x42, 0x3c, 0xb0, 0xc9, 0x10, 0x36, 0x87, 0xbd, 0xc2, 0xe3, 0xf1, 0xf1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x81, 0x21, 0x6e, 0x60, 0x85, 0x21, 0x74, 0x0d, 0x82, 0x0d, 0x46, 0x96, 0xd9, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xc1, 0x10, 0x77, 0xf0, 0x0c, 0xfd, 0xb7, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x85, 0x21, 0xee, 0xe0, 0x19, 0xfa, 0x6f, 0xc3, 0xaf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xc2, 0x10, 0x82, 0x81, 0x15, 0x86, 0x30, 0x1a, 0x7e, 0x43, 0x72, 0x69, 0xf8, 0x0d, 0x52, 0x54, 0x09, 0x8e, 0x6f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x0a, 0x43, 0x58, 0x0d, 0xac, 0x30, 0x84, 0xaa, 0xe1, 0x37, 0x24, 0x97, 0x86, 0x5f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x30, 0x84, 0xd9, 0xc0, 0x0a, 0x43, 0xe8, 0x19, 0x24, 0x03, 0xb1, 0x3b, 0x24, 0x97, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x18, 0x42, 0xd1, 0xc0, 0x0a, 0x43, 0x68, 0x3a, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xb7, 0x43, 0x4f, 0xd4, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x48, 0x08, 0xf1, 0xc0, 0x46, 0x42, 0xe8, 0x19, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x12, 0x42, 0x3e, 0xb0, 0x91, 0x10, 0x36, 0x07, 0x2f, 0xd1, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x23, 0x21, 0x8c, 0x06, 0x36, 0x12, 0xc2, 0xf0, 0xe0, 0xf5, 0x30, 0x44, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x12, 0x42, 0xc3, 0xc0, 0x46, 0x42, 0x68, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x12, 0xc2, 0x72, 0x60, 0x23, 0x21, 0xd4, 0x0c, 0x82, 0x0d, 0x9e, 0x34, 0x6d, 0x76, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0xbc, 0x6b, 0xfd, 0x6d, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x25, 0xc4, 0x0d, 0x2c, 0x25, 0x84, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x93, 0x10, 0x77, 0xf0, 0x96, 0x15, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa5, 0x84, 0xf8, 0x81, 0xa5, 0x84, 0x90, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x4b, 0x09, 0xb1, 0x07, 0x0f, 0x82, 0x81, 0x3b, 0x78, 0xf0, 0xda, 0xcf, 0x20, 0xdb, 0xe0, 0x71, 0x29, 0x70, 0x83, 0x6c, 0x83, 0xe7, 0xaf, 0xc0, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x4b, 0x09, 0x21, 0x1f, 0x58, 0x4a, 0x08, 0xdb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x29, 0x21, 0x84, 0x07, 0x8f, 0xbb, 0x81, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x12, 0xc2, 0x60, 0x60, 0x29, 0x21, 0x8c, 0x0e, 0xde, 0x8f, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x94, 0x10, 0x56, 0x03, 0x4b, 0x09, 0x61, 0x7a, 0xf0, 0xde, 0xb4, 0x80, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x59, 0x88, 0x1b, 0xd8, 0x5e, 0x88, 0x1f, 0x04, 0x1b, 0x8c, 0x2c, 0xb3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x67, 0x21, 0xee, 0xe0, 0x31, 0x46, 0x70, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x69, 0x21, 0xee, 0xe0, 0x31, 0x46, 0x70, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd2, 0x42, 0x48, 0x06, 0x96, 0x16, 0xc2, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x69, 0x21, 0x44, 0x03, 0x4b, 0x0b, 0x21, 0x3b, 0xc4, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x69, 0x21, 0x84, 0x03, 0x4b, 0x0b, 0x61, 0x71, 0xb0, 0xdc, 0xd2, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x5a, 0x08, 0x93, 0x81, 0xa5, 0x85, 0x30, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x16, 0xc2, 0xe6, 0xe0, 0x61, 0x57, 0x70, 0x07, 0x2d, 0x48, 0x34, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xad, 0x85, 0xb8, 0x83, 0xc7, 0x18, 0xc1, 0x0d, 0xb2, 0x0d, 0xde, 0xa7, 0x04, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xb5, 0x10, 0xf2, 0x81, 0xad, 0x85, 0x30, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x16, 0x42, 0x72, 0xf0, 0x60, 0x30, 0xb8, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x6b, 0x21, 0x0c, 0x06, 0xb6, 0x16, 0xc2, 0xe8, 0xa0, 0x09, 0x72, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xad, 0x85, 0xb0, 0x1a, 0xd8, 0x5a, 0x08, 0xcb, 0x41, 0x32, 0xa8, 0x3a, 0x24, 0x97, 0x8e, 0x43, 0x87, 0x34, 0xdc, 0x20, 0xdb, 0xe0, 0xa5, 0x5b, 0x70, 0x83, 0x6c, 0x83, 0xf7, 0x29, 0xc1, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x7b, 0x0b, 0x21, 0x19, 0x58, 0x5e, 0x08, 0xd9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xb6, 0x10, 0x92, 0x83, 0xc7, 0xc2, 0xc1, 0x0d, 0xbb, 0xc1, 0x93, 0xa4, 0xaa, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x16, 0x42, 0x3a, 0xb0, 0xb7, 0x10, 0x66, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x7b, 0x0b, 0x21, 0x1e, 0xd8, 0x5b, 0x08, 0x9b, 0x61, 0x17, 0x6e, 0x43, 0x23, 0xc1, 0x83, 0x45, 0xa8, 0x56, 0x07, 0x6b, 0x55, 0xad, 0x06, 0xd9, 0x06, 0x6f, 0xa6, 0x83, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x16, 0xc2, 0x68, 0x60, 0x6f, 0x21, 0xac, 0x0e, 0x1e, 0xde, 0xd4, 0x33, 0xec, 0xc2, 0x2d, 0x1e, 0x94, 0xf7, 0x71, 0x87, 0x46, 0x82, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x8b, 0x0b, 0x21, 0x1d, 0x58, 0x5c, 0x08, 0xb3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc5, 0x85, 0x10, 0x0f, 0x2c, 0x2e, 0x84, 0xcd, 0xb0, 0x0b, 0xb7, 0xa1, 0x91, 0xe0, 0xc1, 0xab, 0xff, 0xe0, 0x36, 0x78, 0xf5, 0x1f, 0xdc, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x3c, 0x21, 0x10, 0x6e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x5c, 0x08, 0xa3, 0x81, 0xc5, 0x85, 0xb0, 0x3a, 0x78, 0x78, 0x53, 0xcf, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x63, 0x6f, 0x6e, 0xf4, 0xa1, 0x91, 0xe0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe6, 0x42, 0x48, 0x07, 0x36, 0x17, 0x42, 0xdb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe6, 0x42, 0x88, 0x07, 0x36, 0x17, 0xc2, 0x66, 0xd8, 0x85, 0xdb, 0xd0, 0x48, 0xf0, 0xe0, 0x7d, 0x8c, 0x70, 0x1b, 0xbc, 0x8f, 0x11, 0xee, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x1e, 0xde, 0x08, 0x37, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x2e, 0x84, 0xe5, 0xc0, 0xe6, 0x42, 0x28, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x17, 0xc2, 0xe8, 0xe0, 0xdd, 0x97, 0x70, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe6, 0x42, 0x98, 0x0e, 0x6c, 0x2e, 0x84, 0xa6, 0x83, 0xf4, 0x2f, 0x85, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcd, 0x85, 0x50, 0x35, 0xb0, 0xb9, 0x10, 0xba, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0xa1, 0x05, 0xd8, 0xb0, 0x0b, 0xb7, 0xc1, 0x2b, 0xe8, 0xdf, 0x0e, 0x8d, 0x04, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x17, 0x42, 0x3a, 0xb0, 0xba, 0x10, 0xe6, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xab, 0x0b, 0x21, 0x1e, 0x58, 0x5d, 0x08, 0x9b, 0x61, 0x17, 0x6e, 0x43, 0x23, 0xc1, 0x83, 0x57, 0xd0, 0xbf, 0x6d, 0xf0, 0x0a, 0xfa, 0xb7, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x78, 0x5b, 0x29, 0xdc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xba, 0x10, 0x86, 0x03, 0xab, 0x0b, 0x61, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x2e, 0x84, 0xd1, 0xc1, 0xcb, 0x5e, 0xe1, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x1d, 0x24, 0xc4, 0x00, 0x1c, 0x5a, 0x80, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xbb, 0x0b, 0x21, 0x1d, 0xd8, 0x5d, 0x08, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdd, 0x85, 0x10, 0x0f, 0xec, 0x2e, 0x84, 0xcd, 0xb0, 0x0b, 0xb7, 0xa1, 0x91, 0xe0, 0xc1, 0x72, 0x4b, 0xab, 0x83, 0xf5, 0x9f, 0x56, 0x83, 0x6c, 0x83, 0xa7, 0xd1, 0xc2, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xbb, 0x0b, 0x61, 0x3a, 0xb0, 0xbb, 0x10, 0xb6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xee, 0x42, 0x18, 0x1d, 0xbc, 0xbe, 0x17, 0x6e, 0x10, 0x6c, 0xd8, 0x2b, 0x3c, 0xb4, 0x00, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x1a, 0xe2, 0x06, 0x56, 0x29, 0xe2, 0x07, 0xc1, 0x06, 0x23, 0xcb, 0x6c, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x6a, 0x88, 0x3b, 0x78, 0x3a, 0x31, 0xdc, 0xe2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5a, 0x43, 0x58, 0x0c, 0xac, 0x35, 0x84, 0xc6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xd6, 0x10, 0xb6, 0x03, 0x6b, 0x0d, 0xa1, 0x70, 0xf8, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5a, 0x43, 0x18, 0x0f, 0xac, 0x35, 0x84, 0xb6, 0x41, 0x32, 0x10, 0xbb, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5a, 0x43, 0xa8, 0x1b, 0x58, 0x6b, 0x08, 0x7d, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x90, 0x3a, 0x58, 0x1c, 0x04, 0x0b, 0xb2, 0x0d, 0x9e, 0xbf, 0x0c, 0x37, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0xe0, 0x89, 0xce, 0x70, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x1b, 0x42, 0x3e, 0xb0, 0xda, 0x10, 0xba, 0x06, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd5, 0x86, 0xb0, 0x1b, 0x58, 0x6d, 0x08, 0x55, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x6a, 0x43, 0x18, 0x0e, 0xac, 0x36, 0x84, 0x9e, 0x83, 0x13, 0x26, 0xfa, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x6a, 0x43, 0x28, 0x1a, 0x58, 0x6d, 0x08, 0x4d, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x37, 0xc4, 0x0f, 0xac, 0x38, 0x84, 0xd1, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x6f, 0x08, 0xd9, 0xc0, 0x7e, 0x43, 0x18, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xfb, 0x0d, 0x21, 0x3f, 0x78, 0xaf, 0x3b, 0xdc, 0xa1, 0x5f, 0xed, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xe0, 0x10, 0x7f, 0xf0, 0xf6, 0x75, 0xb8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xc3, 0x21, 0xfe, 0xe0, 0xed, 0xeb, 0x70, 0x83, 0x60, 0x83, 0x77, 0xad, 0xbf, 0x2d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x2b, 0x0e, 0xf1, 0x07, 0x6f, 0x5f, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x71, 0x08, 0xc1, 0xc0, 0x8a, 0x43, 0x48, 0x0e, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x71, 0x08, 0xd1, 0xc0, 0x8a, 0x43, 0xc8, 0x0f, 0x96, 0x5b, 0x5a, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x2b, 0x0e, 0x61, 0x30, 0xb0, 0xe2, 0x10, 0x36, 0x87, 0xbd, 0xc2, 0xe3, 0xf1, 0xf1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xcf, 0x21, 0x7e, 0x60, 0xeb, 0x21, 0x24, 0x83, 0x60, 0x83, 0x91, 0x65, 0xb6, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x3a, 0xc4, 0x1f, 0x3c, 0xc7, 0x20, 0x6e, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x3a, 0x84, 0x6c, 0x60, 0xd1, 0x21, 0x74, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x3a, 0x84, 0x70, 0x60, 0xd1, 0x21, 0x74, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x8b, 0x0e, 0x61, 0x70, 0xf0, 0x7c, 0x87, 0xb8, 0xe1, 0x17, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x8b, 0x0e, 0x61, 0x31, 0xb0, 0xe8, 0x10, 0x0a, 0x0e, 0xd6, 0x47, 0x3a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x3a, 0x84, 0x86, 0x81, 0x45, 0x87, 0x50, 0x71, 0x48, 0x1d, 0x1c, 0x87, 0x8e, 0x6f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa2, 0x43, 0x28, 0x19, 0x58, 0x74, 0x08, 0x95, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa2, 0x43, 0x28, 0x3a, 0x78, 0x14, 0x47, 0xdc, 0xf0, 0x2b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x3a, 0x84, 0xae, 0x81, 0x45, 0x87, 0x50, 0x76, 0xd0, 0x82, 0x44, 0xd3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xe8, 0x10, 0xda, 0x06, 0x16, 0x1d, 0x42, 0xe3, 0xf0, 0x1b, 0x2c, 0x83, 0x17, 0x38, 0xbe, 0x1d, 0x7a, 0xa2, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x9b, 0x0e, 0xf1, 0x07, 0xcf, 0x31, 0x88, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x1d, 0xe2, 0x0f, 0x9e, 0x63, 0x10, 0x37, 0x08, 0x36, 0x78, 0xd7, 0xfa, 0xdb, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xeb, 0x10, 0x7f, 0xf0, 0x1c, 0x83, 0xb8, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xec, 0x10, 0x92, 0x81, 0x65, 0x87, 0x30, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xcb, 0x0e, 0x21, 0x1a, 0x58, 0x76, 0x08, 0xe9, 0x21, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xcb, 0x0e, 0x21, 0x1e, 0x58, 0x76, 0x08, 0x9b, 0x43, 0xea, 0xe0, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x3b, 0xc4, 0x1f, 0x3c, 0xc7, 0x20, 0x6e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x77, 0x88, 0x3f, 0x78, 0x8e, 0x41, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xba, 0x43, 0xc8, 0x06, 0xd6, 0x1d, 0xc2, 0xec, 0x20, 0xa4, 0xc0, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7d, 0x87, 0xf8, 0x83, 0xe7, 0x18, 0xc4, 0x0d, 0xbb, 0x41, 0xf3, 0xb7, 0x2a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x0b, 0x0f, 0x61, 0x30, 0xb0, 0xf0, 0x10, 0x96, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x0b, 0x0f, 0x61, 0x31, 0xb0, 0xf0, 0x10, 0x66, 0x07, 0x8b, 0x50, 0xad, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x85, 0x87, 0xb0, 0x1b, 0x58, 0x78, 0x08, 0xc3, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x5e, 0xfd, 0x07, 0x77, 0x10, 0x64, 0xf1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x1b, 0x0f, 0x61, 0x30, 0xb0, 0xf1, 0x10, 0x96, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x1b, 0x0f, 0x61, 0x31, 0xb0, 0xf1, 0x10, 0x66, 0x07, 0xaf, 0xfe, 0x83, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x1e, 0xc2, 0x6e, 0x60, 0xe3, 0x21, 0x0c, 0x0f, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x78, 0x1f, 0x23, 0xdc, 0x41, 0x90, 0xc5, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x3c, 0x84, 0xc1, 0xc0, 0xca, 0x43, 0x28, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x79, 0x08, 0x8b, 0x81, 0x95, 0x87, 0x30, 0x3b, 0x78, 0x1f, 0x23, 0xdc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xf2, 0x10, 0x76, 0x03, 0x2b, 0x0f, 0xa1, 0x6f, 0x10, 0x2d, 0x28, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x1e, 0xc2, 0x7e, 0x60, 0xe5, 0x21, 0xd4, 0x1d, 0x0c, 0xd6, 0xd8, 0xe3, 0xf9, 0xb0, 0x0b, 0xb7, 0xc1, 0x2b, 0xe8, 0xdf, 0x0e, 0x82, 0x2c, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xe7, 0x21, 0x0c, 0x06, 0x76, 0x1e, 0x42, 0xcd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xce, 0x43, 0x58, 0x0c, 0xec, 0x3c, 0x84, 0xd9, 0xc1, 0x2b, 0xe8, 0xdf, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9d, 0x87, 0xb0, 0x1b, 0xd8, 0x79, 0x08, 0x2d, 0x07, 0x83, 0x35, 0x76, 0x90, 0xad, 0xa1, 0xfd, 0xfa, 0x70, 0x1b, 0x2c, 0xb7, 0xb4, 0x3a, 0x08, 0xb2, 0xf8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xe9, 0x21, 0x0c, 0x06, 0x96, 0x1e, 0x42, 0xdd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd2, 0x43, 0x58, 0x0c, 0x2c, 0x3d, 0x84, 0xd9, 0xc1, 0xfb, 0x18, 0xe1, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa5, 0x87, 0xb0, 0x1b, 0x58, 0x7a, 0x08, 0x6d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xe9, 0x21, 0x0c, 0x07, 0x96, 0x1e, 0xc2, 0xf6, 0x90, 0x98, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x7a, 0x08, 0xe3, 0x81, 0xa5, 0x87, 0x50, 0x76, 0x30, 0x58, 0x63, 0x8f, 0x43, 0xc7, 0xe3, 0xe3, 0xf1, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x7d, 0x88, 0x1f, 0xd8, 0xa4, 0x08, 0xc9, 0xe2, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x19, 0x22, 0x24, 0x03, 0xfb, 0x10, 0x21, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd6, 0x21, 0x42, 0x3a, 0xb0, 0x0e, 0x11, 0xc6, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xeb, 0x10, 0x21, 0x1e, 0x58, 0x87, 0x08, 0x9b, 0x83, 0xe5, 0x96, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x3a, 0x44, 0x18, 0x0d, 0xac, 0x43, 0x84, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x0e, 0x11, 0xa6, 0x07, 0x6f, 0x78, 0x8c, 0x3b, 0xb4, 0x00, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x0d, 0xde, 0x4f, 0x18, 0x37, 0xec, 0x06, 0x6f, 0xae, 0x56, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x86, 0x08, 0xe9, 0xc0, 0x32, 0x44, 0x98, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x43, 0x84, 0x78, 0x60, 0x19, 0x22, 0x6c, 0x0e, 0xde, 0xc0, 0xad, 0x34, 0xc8, 0x36, 0x78, 0x2d, 0x65, 0xdc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x0c, 0x11, 0x46, 0x03, 0xcb, 0x10, 0x61, 0x75, 0x30, 0x34, 0x7f, 0x87, 0x5d, 0xb8, 0x0d, 0x5e, 0x41, 0xff, 0x76, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x36, 0x44, 0x48, 0x07, 0xb6, 0x21, 0x42, 0xd3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x36, 0x44, 0x88, 0x07, 0xb6, 0x21, 0xc2, 0x66, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x57, 0xd0, 0xbf, 0x1d, 0xbc, 0x75, 0x15, 0x6e, 0x90, 0x6d, 0xf0, 0xc0, 0xcf, 0xb8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x1b, 0x22, 0x0c, 0x07, 0xb6, 0x21, 0x42, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x0d, 0x11, 0x46, 0x07, 0x4f, 0x48, 0x8d, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x21, 0xc2, 0x72, 0x60, 0x1b, 0x22, 0xac, 0x07, 0xc9, 0xc0, 0x70, 0x1d, 0x1c, 0xb3, 0x8a, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x86, 0x08, 0xf3, 0x81, 0x6d, 0x88, 0x50, 0x31, 0x48, 0x36, 0x58, 0x73, 0x81, 0x74, 0x70, 0x12, 0x3a, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x0d, 0x11, 0x3a, 0x06, 0xb6, 0x21, 0x42, 0xcf, 0x20, 0xd9, 0xe0, 0xa5, 0x12, 0x1e, 0x07, 0x27, 0xa1, 0xe3, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0x20, 0xdb, 0xe0, 0x8d, 0x87, 0x71, 0x0b, 0xb2, 0x0d, 0x9e, 0xa2, 0x18, 0x77, 0xb0, 0x68, 0xd3, 0x6a, 0x90, 0x6d, 0xf0, 0xc6, 0xc3, 0xb8, 0x41, 0xb6, 0xc1, 0xb3, 0x1f, 0xe3, 0x06, 0xd9, 0x06, 0x0f, 0x6a, 0x8c, 0x1b, 0x04, 0x1b, 0x8c, 0x37, 0x9d, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xfe, 0x43, 0x48, 0x06, 0x16, 0x20, 0x42, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x3f, 0x84, 0x78, 0x60, 0xff, 0x21, 0x4c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfd, 0x87, 0x90, 0x1e, 0x3c, 0xcb, 0x38, 0x6e, 0x10, 0x6c, 0xf0, 0x2e, 0x75, 0xb2, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x8a, 0x44, 0x48, 0x06, 0x16, 0x29, 0x42, 0x36, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x24, 0x42, 0x3a, 0xb0, 0x22, 0x11, 0xe6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x8a, 0x44, 0xd8, 0x1c, 0xbc, 0x02, 0x3a, 0x6e, 0xf8, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x8a, 0x44, 0x18, 0x0d, 0xac, 0x48, 0x84, 0xe1, 0xc1, 0xab, 0x57, 0x05, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x24, 0xc2, 0x72, 0x60, 0x45, 0x22, 0xac, 0x07, 0xc9, 0xa0, 0xea, 0x90, 0xad, 0x38, 0x0e, 0x1d, 0xdf, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1d, 0x89, 0x90, 0x1c, 0x3c, 0xa9, 0x39, 0x6e, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x48, 0x84, 0x74, 0x60, 0x47, 0x22, 0xf4, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x48, 0x84, 0x78, 0x60, 0x47, 0x22, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1d, 0x89, 0x90, 0x1f, 0x3c, 0x67, 0x3c, 0x6e, 0xf8, 0x0d, 0xd2, 0xa7, 0x4f, 0x8e, 0x6f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x8e, 0x44, 0x58, 0x0e, 0xec, 0x48, 0x84, 0x9a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x47, 0x22, 0x4c, 0x0f, 0xde, 0x94, 0x1e, 0x37, 0xfc, 0x06, 0x49, 0x65, 0x05, 0xc7, 0xb7, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x49, 0x22, 0x24, 0x07, 0x4f, 0x6a, 0x8e, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x24, 0x42, 0x72, 0xf0, 0xa4, 0xe6, 0xb8, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x6b, 0x12, 0x21, 0x39, 0x78, 0x52, 0x73, 0xdc, 0xf0, 0x0b, 0xa2, 0x05, 0xdb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x4f, 0x22, 0x64, 0x03, 0xfb, 0x12, 0xe1, 0xcc, 0xb0, 0x1b, 0x8c, 0x75, 0xb4, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3d, 0x89, 0x50, 0x30, 0xb0, 0x27, 0x11, 0x1a, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x16, 0x25, 0x42, 0x76, 0xf0, 0x22, 0xfc, 0xb8, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x28, 0x11, 0x36, 0x03, 0x8b, 0x12, 0xa1, 0xe4, 0x60, 0x64, 0xf6, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x9b, 0x12, 0x21, 0x3b, 0x78, 0x11, 0x7e, 0xdc, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x9b, 0x12, 0x21, 0x1f, 0xd8, 0x94, 0x08, 0xf3, 0xe1, 0x16, 0x03, 0x9e, 0xb0, 0xb3, 0x32, 0x37, 0xfa, 0x20, 0xa4, 0xc0, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x25, 0x42, 0x76, 0xf0, 0x22, 0xfc, 0xb8, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x25, 0x42, 0x3e, 0xb0, 0x2a, 0x11, 0x2a, 0x86, 0xdb, 0xe0, 0x8d, 0x28, 0x57, 0x07, 0x81, 0x1b, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x2b, 0x11, 0xb2, 0x83, 0x17, 0xe1, 0xc7, 0x0d, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x2b, 0x11, 0xf2, 0x81, 0x5d, 0x89, 0x50, 0x37, 0xdc, 0x62, 0x80, 0x17, 0x1d, 0x9a, 0x5c, 0x59, 0x18, 0x59, 0x0b, 0xd9, 0x9b, 0x5b, 0x79, 0xb0, 0x76, 0x07, 0x61, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x57, 0x22, 0x14, 0x0e, 0xec, 0x4a, 0x84, 0xce, 0x0d, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x76, 0x25, 0x42, 0xe3, 0xc1, 0x1b, 0x33, 0xe4, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb6, 0x44, 0xc8, 0x0e, 0x5e, 0x84, 0x1f, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x2d, 0x11, 0xf2, 0x81, 0x6d, 0x89, 0x30, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x97, 0x08, 0xd9, 0xc1, 0x8b, 0xf0, 0xe3, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd6, 0x25, 0x42, 0x3e, 0xb0, 0x2e, 0x11, 0x56, 0x07, 0x8f, 0x3e, 0x90, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x97, 0x08, 0xbb, 0x81, 0x75, 0x89, 0x30, 0x3f, 0x08, 0xb2, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x75, 0x89, 0x50, 0x30, 0xb0, 0x2e, 0x11, 0x5a, 0x0e, 0xde, 0x88, 0x72, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x4b, 0x84, 0xec, 0xe0, 0x45, 0xf8, 0x71, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x5f, 0x22, 0x84, 0x03, 0xfb, 0x12, 0x61, 0x39, 0x48, 0x06, 0x75, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xfb, 0x12, 0x61, 0x3a, 0xb0, 0x2f, 0x11, 0xaa, 0x0e, 0x96, 0x22, 0xa8, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x5f, 0x22, 0x74, 0x0d, 0xec, 0x4b, 0x84, 0xe6, 0x83, 0xb5, 0x3b, 0x08, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x25, 0x42, 0xf5, 0xc0, 0xbe, 0x44, 0xf8, 0x72, 0xe8, 0x21, 0x74, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x25, 0x42, 0xe1, 0xc0, 0xaa, 0x44, 0xe8, 0xdc, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x55, 0x22, 0x34, 0x1e, 0xbc, 0x4f, 0x48, 0xee, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x4a, 0x84, 0xc2, 0x81, 0x4d, 0x89, 0xd0, 0xb9, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa6, 0x44, 0x68, 0x3c, 0x78, 0x10, 0x92, 0xdc, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x4c, 0x84, 0xe4, 0xe0, 0x49, 0xcd, 0x71, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x65, 0x22, 0xcc, 0x06, 0x56, 0x26, 0x42, 0xe7, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x99, 0x08, 0xbb, 0x81, 0x95, 0x89, 0xd0, 0x72, 0x88, 0xe6, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xca, 0x44, 0xa8, 0x19, 0x58, 0x99, 0x08, 0x95, 0x87, 0x71, 0x39, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x5b, 0x13, 0x21, 0x39, 0x78, 0x52, 0x73, 0xdc, 0xf0, 0x0b, 0xa2, 0x05, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x6d, 0x22, 0x64, 0x03, 0x9b, 0x13, 0x61, 0x37, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd6, 0x26, 0x42, 0x3e, 0xb0, 0x36, 0x11, 0x36, 0x83, 0x64, 0x40, 0xa1, 0xde, 0x77, 0x70, 0xce, 0x3b, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x6f, 0x22, 0xa4, 0x03, 0x7b, 0x13, 0x61, 0x72, 0xd8, 0x2b, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x39, 0x11, 0xb2, 0x83, 0x17, 0x79, 0xc9, 0x1d, 0x84, 0x14, 0xf8, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x4f, 0x84, 0xe4, 0xe0, 0x49, 0xcd, 0x71, 0xc3, 0x6e, 0xd0, 0xfc, 0xad, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf6, 0x44, 0x18, 0x0d, 0x6c, 0x4f, 0x84, 0xbe, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xed, 0x89, 0xb0, 0x1a, 0xd8, 0x9e, 0x08, 0x25, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xdb, 0x13, 0x61, 0x36, 0xb0, 0x3d, 0x11, 0xb6, 0x87, 0xbd, 0xc2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xed, 0x89, 0x30, 0x1e, 0xd8, 0x9e, 0x08, 0x0d, 0x07, 0xef, 0xaf, 0x56, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x27, 0x42, 0xc5, 0xc0, 0xf6, 0x44, 0xe8, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x9e, 0x08, 0x2d, 0x03, 0xdb, 0x13, 0xa1, 0xee, 0x90, 0xb5, 0x1b, 0x76, 0x83, 0xe7, 0x36, 0xc5, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x4f, 0x84, 0xd1, 0xc0, 0xfa, 0x44, 0xe8, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x9f, 0x08, 0xab, 0x81, 0xf5, 0x89, 0x50, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x3e, 0x11, 0x66, 0x03, 0xeb, 0x13, 0x61, 0x7b, 0xd8, 0x2b, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x9f, 0x08, 0xe3, 0x81, 0xf5, 0x89, 0xd0, 0x70, 0xf0, 0xfe, 0x6a, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x7d, 0x22, 0x54, 0x0c, 0xac, 0x4f, 0x84, 0x8e, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf5, 0x89, 0xd0, 0x32, 0xb0, 0x3e, 0x11, 0xea, 0x0e, 0x59, 0xbb, 0x61, 0x37, 0x78, 0x53, 0x59, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xfe, 0x44, 0x18, 0x0d, 0xec, 0x4f, 0x84, 0xf6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfd, 0x89, 0xb0, 0x1a, 0xd8, 0x9f, 0x08, 0x95, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xfb, 0x13, 0x61, 0x36, 0xb0, 0x3f, 0x11, 0xb6, 0x87, 0xbd, 0xc2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfd, 0x89, 0x30, 0x1e, 0xd8, 0x9f, 0x08, 0x0d, 0x07, 0xaf, 0xa0, 0x7f, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x27, 0x42, 0xc5, 0xc0, 0xfe, 0x44, 0x68, 0x3c, 0x18, 0xac, 0xb1, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xfe, 0x44, 0xe8, 0x1c, 0xd8, 0x9f, 0x08, 0xe5, 0x87, 0xac, 0xdd, 0xb0, 0x1b, 0xbc, 0xff, 0x2d, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x81, 0x22, 0x8c, 0x06, 0x16, 0x28, 0x42, 0xff, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x02, 0x45, 0x58, 0x0d, 0x2c, 0x50, 0x84, 0xd2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x05, 0x8a, 0x30, 0x1b, 0x58, 0xa0, 0x08, 0xdb, 0xc3, 0x5e, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x02, 0x45, 0x18, 0x0f, 0x2c, 0x50, 0x84, 0x86, 0x83, 0xe5, 0x96, 0x56, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x02, 0x45, 0xa8, 0x18, 0x58, 0xa0, 0x08, 0x9d, 0x07, 0x83, 0x35, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0xa0, 0x08, 0xad, 0x03, 0x0b, 0x14, 0xa1, 0xfe, 0x90, 0xb5, 0x1b, 0x64, 0x6b, 0x68, 0xbf, 0x7e, 0xf0, 0xe0, 0xab, 0xb8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x89, 0x22, 0x64, 0x03, 0x7b, 0x14, 0x21, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x51, 0x84, 0xf5, 0xc0, 0x16, 0x45, 0x68, 0x3b, 0x18, 0xac, 0xb1, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1a, 0x45, 0x58, 0x0f, 0xac, 0x51, 0x84, 0xca, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x35, 0x8a, 0x30, 0x1f, 0x58, 0xa3, 0x08, 0x7d, 0x87, 0x1e, 0x42, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1a, 0x45, 0x28, 0x1c, 0x58, 0xa3, 0x08, 0x8d, 0x87, 0x18, 0x1e, 0xcf, 0x8f, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x2b, 0x11, 0x21, 0x19, 0xd8, 0x8d, 0x08, 0xab, 0x41, 0xb0, 0x38, 0x73, 0xf0, 0xc2, 0xbd, 0xb7, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x27, 0x22, 0x24, 0x07, 0x8f, 0x44, 0x96, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x22, 0x42, 0x72, 0xf0, 0x48, 0x64, 0xb9, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x14, 0x11, 0xd2, 0x81, 0xb5, 0x88, 0x90, 0x0f, 0xc2, 0xc5, 0x81, 0x48, 0x6c, 0x98, 0xfb, 0x0d, 0x9e, 0x12, 0x65, 0xb4, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0x73, 0xc3, 0x0c, 0xad, 0x61, 0x86, 0x36, 0x78, 0xd9, 0x06, 0xc6, 0x86, 0x13, 0x61, 0x83, 0x97, 0x6d, 0x60, 0xac, 0x06, 0xeb, 0x0d, 0xa7, 0xc6, 0x0d, 0x5a, 0xe3, 0x1b, 0x99, 0x15, 0xb8, 0xff, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x01, 0xbf, 0x2d, 0xad, 0xad, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0a, 0x10, 0xb2, 0x81, 0x0a, 0x10, 0xbe, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xdb, 0x96, 0xd6, 0x56, 0x46, 0x97, 0x07, 0x57, 0x46, 0x06, 0x42, 0x16, 0x46, 0x17, 0xb6, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x15, 0x20, 0x84, 0x03, 0x15, 0x20, 0x0c, 0x0e, 0x4a, 0x6f, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x02, 0x84, 0xc5, 0x40, 0x05, 0x08, 0xab, 0x83, 0x56, 0xcc, 0x49, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0a, 0x10, 0x66, 0x03, 0x15, 0x20, 0x4c, 0x37, 0xfc, 0x3b, 0xbf, 0x80, 0xff, 0x36, 0x46, 0x37, 0x57, 0x2b, 0x60, 0xd8, 0xbf, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xc6, 0xab, 0x6d, 0x90, 0x7a, 0x51, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x41, 0xaf, 0xb6, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0x2c, 0x80, 0x17, 0x5a, 0x59, 0x18, 0x59, 0x99, 0x5c, 0x0b, 0x5b, 0xda, 0x1c, 0xbd, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xf0, 0x9e, 0x76, 0xb9, 0x06, 0xe0, 0x3d, 0xcc, 0x0d, 0xe4, 0x4d, 0x8e, 0xac, 0x4c, 0xae, 0x8c, 0x0c, 0x84, 0x2d, 0x6d, 0x8e, 0x0e, 0xe4, 0xcd, 0x0c, 0x04, 0x8d, 0x8e, 0x0e, 0x0e, 0x04, 0xad, 0x2c, 0x8c, 0xac, 0x4c, 0x6e, 0x6e, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x3d, 0xed, 0x72, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x95, 0xf7, 0x6a, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x05, 0xfb, 0x6a, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x05, 0xc0, 0xda, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x28, 0x58, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x45, 0xeb, 0xc9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa6, 0xc0, 0xda, 0xc1, 0x79, 0x76, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb8, 0x85, 0xb5, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0xa2, 0xf5, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x47, 0x58, 0x3b, 0x38, 0xcf, 0x8e, 0xd6, 0x0a, 0xe0, 0x59, 0xe7, 0x06, 0x17, 0x36, 0xb6, 0xd6, 0x82, 0x56, 0x16, 0x46, 0x56, 0x26, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xbc, 0x56, 0x60, 0xae, 0x01, 0x78, 0x84, 0x0b, 0x93, 0x9b, 0x2b, 0x03, 0x41, 0x2b, 0x0b, 0x23, 0x2b, 0x93, 0x03, 0x31, 0x4b, 0x2b, 0x63, 0x23, 0x03, 0xb1, 0x0b, 0x63, 0xab, 0x2b, 0x9b, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x83, 0x58, 0xdb, 0xe0, 0x80, 0x45, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x29, 0x0b, 0xdb, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc2, 0x17, 0xd2, 0x81, 0xc2, 0x17, 0x56, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x44, 0xeb, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x85, 0x2f, 0x6c, 0x0e, 0x1e, 0xee, 0x30, 0x77, 0x70, 0x9e, 0x1d, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x7e, 0x61, 0xdb, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xf9, 0x42, 0x3a, 0x50, 0xf9, 0x42, 0xcd, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xbe, 0x10, 0x0f, 0x54, 0xbe, 0x30, 0x39, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xca, 0x17, 0x36, 0x03, 0x95, 0x2f, 0xb4, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe5, 0x0b, 0xa3, 0x81, 0xca, 0x17, 0x86, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xbe, 0xb0, 0x1c, 0xa8, 0x7c, 0xa1, 0x64, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x5f, 0x98, 0x0e, 0x54, 0xbe, 0xb0, 0x3e, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xca, 0x17, 0xe6, 0x03, 0x95, 0x2f, 0x14, 0x1c, 0x9c, 0x67, 0x47, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xca, 0x17, 0x1a, 0x06, 0x2a, 0x5f, 0xe8, 0x38, 0x38, 0xcf, 0x8e, 0x56, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x4d, 0x32, 0x6c, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xa1, 0x86, 0xed, 0x60, 0xe5, 0x81, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa9, 0x39, 0x6c, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x8c, 0x87, 0x6d, 0xc3, 0xdb, 0x3a, 0x1b, 0x2c, 0x83, 0x74, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x78, 0x20, 0xb6, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x3b, 0xc4, 0x76, 0xb0, 0x0c, 0xfb, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf0, 0x23, 0xb6, 0x83, 0x75, 0x0b, 0xc7, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe8, 0x12, 0xdb, 0x86, 0xb7, 0x75, 0x06, 0xf8, 0xec, 0xc2, 0xd8, 0xea, 0xca, 0xe6, 0x5a, 0x66, 0x0d, 0x4e, 0xb4, 0x1e, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0x13, 0x6b, 0x1b, 0xac, 0x10, 0x6a, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xda, 0x63, 0xed, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x1a, 0x6b, 0x1b, 0xde, 0xd6, 0x19, 0xe0, 0xa1, 0x7b, 0x5b, 0x2b, 0x73, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd4, 0x62, 0x6d, 0xc3, 0xdb, 0x3a, 0x03, 0x78, 0xc6, 0xd5, 0xbd, 0xd1, 0x95, 0x91, 0xb5, 0xcc, 0xd1, 0xc9, 0xa5, 0xb9, 0x9d, 0xb5, 0x1a, 0xbc, 0x25, 0x68, 0x6e, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0x2d, 0x41, 0x73, 0x0d, 0xc0, 0xc7, 0x8d, 0xcc, 0x0c, 0x0c, 0x48, 0x5c, 0xdd, 0x1b, 0x5d, 0x19, 0x19, 0xc8, 0x1c, 0x9d, 0x5c, 0x9a, 0xdb, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa7, 0xc8, 0xda, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x25, 0x6b, 0x07, 0xcb, 0x2a, 0x41, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x4b, 0x59, 0x3b, 0x58, 0x8e, 0x2c, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xd7, 0xb2, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0b, 0xcc, 0xda, 0xc1, 0x42, 0x4d, 0xd2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x68, 0xd6, 0x36, 0x3c, 0x28, 0xb9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x74, 0x5a, 0x3b, 0x48, 0x6c, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x2a, 0x6a, 0xed, 0x20, 0xb1, 0xa5, 0xaa, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8a, 0x9b, 0xb5, 0x0d, 0x56, 0x08, 0x35, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xac, 0xb4, 0x76, 0xb0, 0xec, 0x18, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x80, 0x9f, 0xb5, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x1c, 0xb4, 0x76, 0xb0, 0xf0, 0x61, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfe, 0xa2, 0xb5, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0xcd, 0x25, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x56, 0x67, 0xed, 0xa0, 0xed, 0x2b, 0xd1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0xa8, 0xd6, 0x36, 0x38, 0xb1, 0xdf, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x73, 0xb5, 0x76, 0xb0, 0x50, 0x31, 0x74, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6b, 0x6b, 0x6d, 0x83, 0x15, 0x42, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x07, 0xaf, 0x1d, 0xac, 0x07, 0x06, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xea, 0x72, 0x6d, 0x83, 0x15, 0x42, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xf2, 0xae, 0x1d, 0xac, 0x1d, 0x07, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf0, 0x76, 0xed, 0x60, 0x2d, 0x0e, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe9, 0x9a, 0x6b, 0x1b, 0xac, 0x10, 0x6a, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf6, 0x74, 0xed, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x21, 0xac, 0x6b, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xdc, 0x75, 0xed, 0x60, 0xc1, 0x46, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x11, 0xb3, 0x6b, 0x1b, 0x7e, 0x84, 0x39, 0x78, 0xe9, 0xb0, 0x48, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x8c, 0xae, 0x1d, 0xac, 0x71, 0x26, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd7, 0x73, 0xed, 0x60, 0x9d, 0x34, 0x68, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xee, 0xb5, 0xb6, 0xc1, 0x0a, 0xa1, 0xa6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x25, 0xd7, 0x0e, 0xd6, 0x03, 0x83, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x73, 0xb8, 0xb6, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0x13, 0xd7, 0x0e, 0x16, 0x6c, 0x84, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xe2, 0xb8, 0x76, 0xf0, 0xf2, 0xb9, 0xb9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x13, 0x5b, 0xdb, 0x60, 0x85, 0x50, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0x82, 0x6b, 0x07, 0xcb, 0x8e, 0x41, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xa8, 0x5b, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe1, 0x77, 0x6b, 0x07, 0xab, 0xa0, 0x43, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xe4, 0x5b, 0xdb, 0xf0, 0x2c, 0xde, 0xc1, 0x2b, 0xfe, 0xd6, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xc3, 0x6c, 0x6d, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xa3, 0xad, 0x1d, 0xac, 0x2f, 0x05, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb6, 0x6d, 0x6d, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x87, 0x82, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0xe2, 0xd6, 0x0e, 0x16, 0xea, 0xa1, 0x56, 0x1d, 0x4e, 0xb1, 0x05, 0x78, 0xe0, 0xc2, 0xd2, 0xe4, 0xe6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3a, 0xe3, 0xb5, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x92, 0xd7, 0x0e, 0x96, 0x55, 0x82, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xd5, 0xbc, 0xb6, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xb9, 0xf3, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x03, 0xf4, 0xda, 0x41, 0xd9, 0x54, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x19, 0xf5, 0xda, 0x06, 0x85, 0x60, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xc0, 0xb0, 0x39, 0x78, 0x61, 0xf5, 0xda, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xc0, 0x30, 0x1a, 0xa8, 0x81, 0x61, 0x77, 0x50, 0x22, 0xd6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x35, 0x30, 0x0c, 0x07, 0x6a, 0x60, 0x98, 0x1e, 0x9c, 0x67, 0x47, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1a, 0x18, 0xb6, 0x03, 0x35, 0x30, 0xac, 0x0f, 0xce, 0xb3, 0xa3, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x7d, 0xbd, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa2, 0xf6, 0xda, 0xc1, 0x9a, 0xd9, 0xd0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0xbd, 0xd7, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5f, 0xf8, 0xda, 0xc1, 0x42, 0x4d, 0xd2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0xcb, 0xd7, 0x36, 0x3c, 0x28, 0xb9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x95, 0x5f, 0x3b, 0x48, 0x6c, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xae, 0x7e, 0xed, 0x20, 0xb1, 0xa5, 0xaa, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x36, 0xf4, 0xb5, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xb3, 0xbe, 0x76, 0xb0, 0x50, 0x31, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb2, 0xf7, 0xb5, 0x83, 0x35, 0xce, 0xa4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x89, 0xbf, 0x76, 0xd0, 0x00, 0x31, 0x68, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x55, 0xfc, 0x6b, 0x1b, 0xac, 0x10, 0x6a, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x0c, 0x85, 0xed, 0x60, 0x45, 0x45, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd5, 0x23, 0x6c, 0x07, 0x2f, 0xf2, 0x99, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xfc, 0x7f, 0x6d, 0x83, 0x15, 0x42, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x7d, 0xb0, 0x1d, 0xac, 0x07, 0x06, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xc5, 0x81, 0x6d, 0x83, 0x15, 0x42, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x68, 0xb0, 0x1d, 0xac, 0x1d, 0x07, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xad, 0x82, 0xed, 0x60, 0x31, 0xff, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc1, 0x11, 0x6c, 0x07, 0xeb, 0x16, 0x8e, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6f, 0x80, 0x6d, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x18, 0xb0, 0x1d, 0xac, 0x40, 0x29, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x4e, 0x81, 0xed, 0x60, 0xad, 0x42, 0x5d, 0x35, 0x6b, 0xf0, 0x5c, 0x9f, 0xb9, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe7, 0xfa, 0xcc, 0x35, 0x80, 0xcf, 0x8d, 0xcc, 0x0c, 0x0c, 0x08, 0xdd, 0xdb, 0x5a, 0x99, 0xdb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xca, 0x13, 0xdb, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0x51, 0x6c, 0x07, 0xcb, 0x2a, 0x41, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xb0, 0x62, 0x3b, 0x58, 0x8e, 0x2c, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x97, 0xc5, 0xb6, 0xc1, 0x89, 0xfd, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x16, 0x2e, 0xb6, 0x83, 0x85, 0xc9, 0xa4, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x55, 0x60, 0x6c, 0x1b, 0xac, 0x10, 0x6a, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf1, 0x8d, 0xed, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc9, 0xab, 0x6c, 0x07, 0xab, 0x10, 0x44, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x3c, 0x65, 0x3b, 0x68, 0x15, 0x15, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa8, 0x51, 0xb6, 0x83, 0x34, 0x3f, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x3e, 0xd9, 0x0e, 0x56, 0xf8, 0xa9, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xac, 0xc9, 0x76, 0xd0, 0x12, 0x3c, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x85, 0x96, 0x6c, 0x07, 0x8d, 0xcd, 0x5f, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x1a, 0xc9, 0x76, 0xb0, 0xc8, 0x19, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb2, 0x46, 0xb6, 0x83, 0x06, 0xe0, 0x32, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x49, 0x64, 0x3b, 0x58, 0x06, 0x60, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3b, 0x21, 0xdb, 0xc1, 0x62, 0xa1, 0xd0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0x01, 0xd9, 0x0e, 0xd6, 0xbe, 0x90, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xc7, 0xc7, 0x76, 0xd0, 0x1e, 0xf7, 0xe5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x31, 0x78, 0x6c, 0x07, 0x0b, 0x19, 0x44, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x9f, 0x63, 0x3b, 0x68, 0x8c, 0x4d, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x72, 0x35, 0xb6, 0x83, 0x36, 0x04, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x39, 0x63, 0x3b, 0x48, 0xa3, 0x3d, 0x6a, 0xd6, 0xe0, 0x11, 0x38, 0x73, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x75, 0xb0, 0x6c, 0x1b, 0x14, 0x9d, 0xc6, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xcc, 0xb2, 0x1d, 0xac, 0x6b, 0x25, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xea, 0x96, 0x6d, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0xe8, 0xb2, 0x1d, 0x2c, 0xd4, 0x24, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xc8, 0x97, 0x6d, 0xc3, 0x83, 0x92, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x86, 0x6f, 0xb6, 0x83, 0xc4, 0x96, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0xc3, 0xd9, 0x0e, 0x12, 0x5b, 0xaa, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x07, 0x66, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0xc3, 0x6c, 0x07, 0x0b, 0x15, 0x43, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x3f, 0x66, 0xdb, 0x60, 0x85, 0x50, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0xda, 0x6c, 0x07, 0xeb, 0x81, 0x41, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xb2, 0x66, 0x3b, 0x58, 0xe3, 0x4c, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xdf, 0x32, 0xdb, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x72, 0x66, 0x3b, 0x58, 0xb0, 0x11, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x9d, 0x34, 0xdb, 0xc1, 0xcb, 0xe7, 0xe6, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0xc9, 0xd9, 0x0e, 0x9a, 0x3e, 0xbe, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x15, 0x9d, 0x6d, 0xc3, 0xdb, 0x3a, 0x1b, 0x3c, 0x22, 0x72, 0xae, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0x00, 0xdf, 0xb9, 0xb4, 0x36, 0x38, 0xb6, 0xb2, 0x16, 0xb8, 0xb0, 0x3c, 0xb6, 0xb7, 0x30, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0x81, 0x15, 0x74, 0x0d, 0x80, 0x7f, 0x61, 0x20, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x0f, 0xac, 0xa0, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x6b, 0x67, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x55, 0xf2, 0x6c, 0x1b, 0xfe, 0x5c, 0x1a, 0xc0, 0x5b, 0xae, 0x6c, 0x0e, 0xee, 0xcd, 0x6d, 0xae, 0xac, 0x05, 0xad, 0x2c, 0x8c, 0xac, 0x4c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x7e, 0x67, 0xdb, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0x8b, 0x84, 0xae, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xc9, 0x67, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x07, 0x79, 0xb6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5c, 0x7b, 0xb6, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5c, 0x7e, 0xb6, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x74, 0x80, 0xb6, 0x83, 0xa7, 0x9f, 0xcb, 0xd5, 0x0a, 0xf0, 0xb5, 0x95, 0xd1, 0xa1, 0xbd, 0x91, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xaf, 0x7e, 0xa1, 0x6b, 0x00, 0x9e, 0xcb, 0xf0, 0xd0, 0xc2, 0xea, 0xe6, 0xe8, 0xd2, 0xec, 0xca, 0x40, 0xd8, 0xd2, 0xe6, 0xe8, 0x40, 0xde, 0xcc, 0x40, 0xd0, 0xe8, 0xe8, 0xe0, 0x40, 0xec, 0xca, 0xe4, 0xc4, 0xe6, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x5e, 0xfd, 0x42, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x67, 0xd0, 0xb6, 0x41, 0xb0, 0x99, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xab, 0xd0, 0xb6, 0x21, 0x03, 0x3e, 0x38, 0x7d, 0xf0, 0x36, 0x84, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x22, 0xda, 0x36, 0x64, 0xc0, 0x07, 0xa7, 0x0f, 0xde, 0xef, 0xd0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xcc, 0x45, 0xdb, 0x86, 0x0c, 0xf8, 0xe0, 0x74, 0xe0, 0x1d, 0x15, 0x51, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x75, 0xb4, 0x6d, 0xc8, 0x80, 0x0f, 0x4e, 0x1f, 0x3c, 0x6e, 0xa3, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf2, 0x91, 0xb6, 0x0d, 0x19, 0xf0, 0xc1, 0xe9, 0x83, 0x67, 0x86, 0xb4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xa3, 0xd2, 0xb6, 0x21, 0x03, 0x3e, 0x38, 0x7d, 0xf0, 0x14, 0x94, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x60, 0xda, 0x36, 0x64, 0xc0, 0x07, 0xa7, 0x0f, 0x9e, 0xe7, 0xd2, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x99, 0x4d, 0xdb, 0x86, 0x0c, 0xf8, 0xe0, 0x74, 0xe0, 0x41, 0x55, 0x51, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xec, 0xb4, 0x6d, 0xc8, 0x80, 0x0f, 0x4e, 0x1f, 0x3c, 0xd3, 0x91, 0xab, 0x15, 0xc0, 0x67, 0xae, 0x8c, 0xae, 0x05, 0xad, 0x2c, 0x8c, 0xac, 0x4c, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x78, 0xae, 0x13, 0x5d, 0x03, 0xe0, 0xd7, 0x5c, 0x19, 0xdd, 0x1c, 0x08, 0x1d, 0x5a, 0x19, 0x88, 0x5d, 0x18, 0x5b, 0x5d, 0x19, 0xc8, 0x9b, 0x19, 0x48, 0x98, 0x1b, 0x48, 0x1a, 0x5d, 0x59, 0x1b, 0x48, 0x9a, 0x1b, 0x08, 0x1d, 0x5a, 0x19, 0x08, 0x5a, 0x59, 0x18, 0x59, 0x99, 0x1c, 0x08, 0x5b, 0xda, 0x1c, 0xbd, 0x12, 0x80, 0x46, 0x54, 0x68, 0x69, 0x73, 0x20, 0x61, 0x64, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0xae, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0x80, 0xda, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xb6, 0x90, 0x0c, 0xd4, 0xb6, 0x50, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xb6, 0x85, 0x68, 0xa0, 0xb6, 0x85, 0xcd, 0x86, 0x3f, 0x97, 0x06, 0xf8, 0xd0, 0xca, 0xc2, 0xc8, 0xca, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x6d, 0x61, 0x71, 0xf0, 0xbc, 0x31, 0xba, 0x83, 0xf3, 0xec, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xdb, 0xc2, 0x68, 0xa0, 0xb6, 0x85, 0xf1, 0x86, 0x3f, 0x97, 0x36, 0x38, 0xd1, 0x7a, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6d, 0x0b, 0xd3, 0x83, 0x67, 0xa7, 0xd1, 0x1d, 0x9c, 0x67, 0x47, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xda, 0x16, 0xd6, 0x03, 0xb5, 0x2d, 0x34, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xf7, 0xb4, 0xcb, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6d, 0x0b, 0xf3, 0x83, 0x17, 0xbf, 0xd1, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0xde, 0xd3, 0x2e, 0x57, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x0e, 0xb5, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x6e, 0x21, 0x19, 0x28, 0x6e, 0x61, 0xb5, 0xe1, 0xdf, 0xf9, 0x15, 0xc7, 0x39, 0x78, 0x4f, 0xbb, 0x5c, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x18, 0xb5, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0xf0, 0x00, 0x3a, 0xba, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0x92, 0xda, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xeb, 0x52, 0xdb, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x71, 0x6a, 0xdb, 0xf0, 0xb6, 0xce, 0x06, 0x8f, 0x23, 0xa3, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x78, 0xa8, 0xb6, 0x83, 0x75, 0x0b, 0xc7, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x3d, 0xd5, 0x76, 0x50, 0x50, 0x64, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x69, 0xd5, 0xb6, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0xb2, 0xda, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfc, 0x56, 0xdb, 0x86, 0xb7, 0x75, 0x36, 0x28, 0x5a, 0x4f, 0x06, 0x4f, 0x0f, 0x1e, 0x40, 0x47, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xef, 0xd5, 0x76, 0xf0, 0x28, 0x40, 0xba, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0xc3, 0xda, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x11, 0x59, 0xdb, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x36, 0x6b, 0x3b, 0x78, 0x14, 0x20, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x89, 0x69, 0x6d, 0x07, 0xeb, 0x16, 0x8e, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x8d, 0xad, 0x6d, 0xc3, 0xdb, 0x3a, 0x83, 0xd3, 0x07, 0x0f, 0xa0, 0xa3, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xec, 0xad, 0x6d, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xc7, 0xb5, 0x6d, 0x78, 0x5b, 0xe7, 0xe0, 0xe9, 0x89, 0x74, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xd2, 0xb5, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xf0, 0x00, 0x3a, 0xba, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x00, 0xbc, 0xb6, 0x83, 0x67, 0x50, 0xd2, 0xd5, 0xe1, 0x14, 0x5b, 0x83, 0x57, 0xb2, 0xf5, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xbc, 0x92, 0xad, 0xa7, 0x01, 0x78, 0x0a, 0x03, 0x99, 0x4b, 0x73, 0x3b, 0x63, 0x2b, 0x03, 0x41, 0xa3, 0xa3, 0x83, 0x03, 0x91, 0x2b, 0x8b, 0xab, 0x2b, 0x9b, 0xa3, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x25, 0x5b, 0xcf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2e, 0x5f, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x0d, 0x6c, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0xaf, 0x7e, 0xa1, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xf9, 0x6b, 0xdb, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0xfa, 0x85, 0xae, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x49, 0x6c, 0xdb, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x00, 0xad, 0xa8, 0xd0, 0xca, 0x40, 0xea, 0xe4, 0xd8, 0x40, 0xd2, 0xe6, 0x40, 0xdc, 0xde, 0xe8, 0x40, 0xca, 0xe6, 0xc6, 0xc2, 0xe0, 0xca, 0xc8, 0x5c, 0x40, 0xa8, 0xd0, 0xca, 0xe4, 0xca, 0x40, 0xd2, 0xe6, 0x40, 0xdc, 0xde, 0x40, 0xca, 0xe6, 0xc6, 0xc2, 0xe0, 0xca, 0x5c, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xea, 0xe4, 0xd8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x60, 0xc3, 0xb6, 0x83, 0xf3, 0xec, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x95, 0x8f, 0x6d, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x3d, 0xed, 0x72, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x19, 0x8d, 0x6d, 0x07, 0x6f, 0x9c, 0xa3, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xbd, 0xb2, 0x6d, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0x9b, 0x82, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x9b, 0x6c, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xcb, 0x6c, 0x3b, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xec, 0x6c, 0x3b, 0x78, 0xfa, 0xb9, 0x5c, 0xad, 0x00, 0x9e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0xf2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x8b, 0x7f, 0xe9, 0x1a, 0x00, 0x3f, 0xe5, 0xca, 0xda, 0xde, 0xec, 0xca, 0xe6, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xcc, 0xd2, 0xe4, 0xe6, 0xe8, 0x40, 0xd2, 0xdc, 0xe6, 0xe8, 0xc2, 0xdc, 0xc6, 0xca, 0x40, 0xde, 0xcc, 0x40, 0xc2, 0x40, 0xd0, 0xca, 0xc2, 0xc8, 0xca, 0xe4, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xd8, 0xd2, 0xe6, 0xe8, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x43, 0xdb, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xba, 0x90, 0x0c, 0x94, 0xba, 0xd0, 0xb0, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xd4, 0x85, 0x68, 0xa0, 0xd4, 0x85, 0xcd, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x1c, 0x19, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xba, 0xb0, 0x38, 0x78, 0x16, 0x34, 0xdd, 0xc1, 0x79, 0x76, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x75, 0x61, 0x34, 0x50, 0xea, 0x42, 0xc1, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x4f, 0xbb, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xba, 0xb0, 0x3a, 0x78, 0x95, 0x35, 0xdd, 0xc1, 0x1b, 0xe7, 0xe8, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x28, 0x6d, 0xdb, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xeb, 0x42, 0x32, 0x50, 0xeb, 0xc2, 0xea, 0xe0, 0x75, 0x78, 0x74, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x81, 0xa7, 0x6d, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x3c, 0x80, 0x8e, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x46, 0xd5, 0xb6, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xa8, 0xb5, 0x6d, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xbf, 0xb6, 0x6d, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4c, 0xd9, 0xb6, 0x83, 0xf7, 0x23, 0xd2, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xd6, 0xb6, 0x1d, 0x3c, 0x0a, 0x90, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2e, 0xdc, 0xb6, 0x83, 0x67, 0x50, 0xd2, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xec, 0xb6, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xde, 0xde, 0xb6, 0x83, 0x37, 0x60, 0xd2, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x08, 0xdc, 0xb6, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0x03, 0xe8, 0xe8, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0x87, 0xdb, 0x0e, 0x9e, 0x41, 0x49, 0x57, 0x87, 0x53, 0xac, 0xd6, 0xe0, 0x59, 0x24, 0x74, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xcf, 0x22, 0xa1, 0x6b, 0x00, 0x7c, 0xa4, 0x43, 0x2b, 0x03, 0x99, 0xa3, 0x0b, 0xa3, 0xab, 0x9b, 0x03, 0x19, 0x7b, 0x23, 0x2b, 0x03, 0x09, 0x73, 0x23, 0x03, 0x41, 0x2b, 0x0b, 0x23, 0x2b, 0x93, 0x03, 0x61, 0x4b, 0x9b, 0xa3, 0x03, 0x79, 0x73, 0x03, 0x09, 0x73, 0x03, 0x41, 0xa3, 0xa3, 0x83, 0x03, 0x91, 0x2b, 0x8b, 0xab, 0x2b, 0x9b, 0xa3, 0x57, 0x02, 0xe0, 0x89, 0xab, 0x32, 0x90, 0xb9, 0x32, 0xb8, 0x30, 0xb9, 0x30, 0xba, 0x32, 0x10, 0x3a, 0xb4, 0xb2, 0xb9, 0x32, 0x90, 0xb0, 0xbb, 0xb0, 0x3c, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb1, 0x37, 0xb2, 0x3c, 0x10, 0xb2, 0x30, 0xba, 0x30, 0x10, 0xb1, 0xb2, 0xb1, 0xb0, 0xba, 0xb9, 0x32, 0x90, 0xbb, 0x32, 0x90, 0xb6, 0xb0, 0x3c, 0x10, 0xb7, 0x37, 0x3a, 0x90, 0xbb, 0xb0, 0x34, 0x3a, 0x10, 0xb3, 0x37, 0x79, 0x09, 0x40, 0x63, 0x3a, 0xb4, 0x32, 0x90, 0x32, 0x37, 0xba, 0x34, 0xb9, 0x32, 0x10, 0xb1, 0x37, 0xb2, 0x3c, 0x10, 0xb1, 0x32, 0xb3, 0x37, 0xb9, 0x32, 0x90, 0xbb, 0x32, 0x90, 0xb9, 0x32, 0x37, 0x32, 0x90, 0x30, 0x90, 0x12, 0x38, 0xb9, 0xb7, 0x33, 0xb9, 0xb2, 0xb9, 0x39, 0x10, 0xba, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0xb1, 0x30, 0x36, 0xb6, 0x32, 0x39, 0x57, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xcf, 0x22, 0xa1, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x42, 0x6e, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x29, 0xcd, 0x6d, 0x1b, 0xfe, 0x5c, 0x1a, 0xc0, 0x6b, 0x8e, 0x2e, 0x8c, 0xae, 0x6e, 0xae, 0x65, 0xec, 0x8d, 0xac, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x55, 0x6e, 0x3b, 0x28, 0xb3, 0x74, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x9c, 0x6e, 0xdb, 0xf0, 0xe7, 0xd2, 0x00, 0x2f, 0x5a, 0x59, 0x18, 0x59, 0x99, 0xdc, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x10, 0xdd, 0x76, 0xf0, 0xc6, 0x39, 0xba, 0x66, 0x01, 0x7c, 0xce, 0xca, 0xe8, 0x5a, 0xd0, 0xca, 0xc2, 0xc8, 0xca, 0xe4, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa7, 0x63, 0xd4, 0x35, 0x00, 0x5e, 0xcb, 0x95, 0xd1, 0xd5, 0xc9, 0xb9, 0xcd, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0xd8, 0x85, 0xb1, 0xd5, 0x95, 0x81, 0x98, 0xbd, 0xc9, 0x81, 0xe8, 0xa0, 0x95, 0x85, 0x91, 0x95, 0xc9, 0xb1, 0x80, 0xa4, 0x99, 0x81, 0xa4, 0xd1, 0x81, 0x94, 0xe1, 0xa5, 0xcd, 0xd1, 0xcd, 0x81, 0xa4, 0xb9, 0x81, 0xe8, 0xa0, 0x95, 0x85, 0x91, 0x95, 0xc9, 0xb5, 0xb0, 0xa5, 0xcd, 0xd1, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x5c, 0xb7, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x66, 0x21, 0x19, 0x28, 0x66, 0xa1, 0x61, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x31, 0x0b, 0xd1, 0x40, 0x31, 0x0b, 0x9b, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x38, 0x32, 0xba, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x66, 0x61, 0x71, 0xf0, 0xfe, 0x94, 0xba, 0x83, 0xf3, 0xec, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xcc, 0xc2, 0x68, 0xa0, 0x98, 0x85, 0x82, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x9e, 0x76, 0xb9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x66, 0x61, 0x75, 0xf0, 0xfc, 0x97, 0xba, 0x83, 0x37, 0xce, 0xd1, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xa5, 0xdd, 0xb6, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x9a, 0x85, 0x64, 0xa0, 0x9a, 0x85, 0xc9, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xb3, 0x10, 0x0d, 0x54, 0xb3, 0x10, 0x1f, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x35, 0x0b, 0xf9, 0x40, 0x35, 0x0b, 0x8b, 0x83, 0xf3, 0xec, 0x68, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xcd, 0xdc, 0x6d, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x3c, 0x80, 0x8e, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xec, 0xef, 0xb6, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x51, 0xbc, 0x6d, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x94, 0xb7, 0x6d, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf2, 0xf3, 0xb6, 0x83, 0xf7, 0x23, 0xd2, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xab, 0xb7, 0x1d, 0x3c, 0x0a, 0x90, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd4, 0xf6, 0xb6, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0xf0, 0x6d, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0x44, 0xeb, 0x71, 0xf0, 0xf4, 0x44, 0xba, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb0, 0xf9, 0xb6, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x1e, 0x40, 0x47, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x6a, 0xdf, 0x76, 0xf0, 0x0c, 0x4a, 0xba, 0x66, 0x01, 0x7c, 0xd0, 0xe8, 0xe8, 0xe0, 0x5a, 0xca, 0xec, 0xca, 0xdc, 0xe8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa7, 0x43, 0xd5, 0x35, 0x80, 0x37, 0x5c, 0xd8, 0xd8, 0x5a, 0x19, 0x5d, 0x9a, 0x5e, 0x19, 0x19, 0x08, 0x1a, 0x1d, 0x1d, 0xbc, 0x12, 0x80, 0xff, 0x55, 0x72, 0x62, 0x69, 0x74, 0x20, 0x74, 0x72, 0x65, 0x61, 0x74, 0x73, 0x20, 0x45, 0x61, 0x72, 0x74, 0x68, 0x27, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x20, 0x61, 0x73, 0x20, 0x70, 0x69, 0x70, 0x65, 0x73, 0x2c, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x55, 0x72, 0x62, 0x69, 0x74, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x73, 0x20, 0x6f, 0xf2, 0x12, 0x00, 0x5f, 0xc8, 0x95, 0x8d, 0x95, 0xa5, 0xd9, 0x95, 0xcd, 0x81, 0xbc, 0xb9, 0x95, 0x81, 0xbc, 0xc9, 0x81, 0xb4, 0xbd, 0xc9, 0x95, 0x81, 0x94, 0xa0, 0xd1, 0xd1, 0xc1, 0xb5, 0x94, 0xd9, 0x95, 0xb9, 0xd1, 0xcd, 0xb9, 0x80, 0x50, 0xa1, 0x95, 0x81, 0x98, 0xa5, 0xc9, 0xcd, 0xd1, 0x81, 0xbc, 0x99, 0x81, 0xd0, 0xa1, 0x95, 0xcd, 0x95, 0x81, 0xdc, 0xa5, 0xb1, 0xb1, 0x81, 0x84, 0xb1, 0xdd, 0x85, 0xe5, 0xcd, 0x81, 0x88, 0x95, 0x81, 0x84, 0x4b, 0x00, 0x3c, 0x51, 0x32, 0x47, 0x17, 0x26, 0x47, 0x07, 0xf2, 0x26, 0x07, 0x12, 0xe6, 0x06, 0x52, 0x52, 0x26, 0x27, 0xf7, 0x26, 0xc7, 0x02, 0x12, 0xe6, 0x46, 0x06, 0x42, 0x87, 0x56, 0x06, 0xc2, 0x16, 0x36, 0x47, 0x07, 0x72, 0x97, 0xc6, 0xc6, 0x06, 0x12, 0xc6, 0x76, 0x17, 0x96, 0x37, 0x07, 0x22, 0x56, 0x06, 0x52, 0x32, 0x16, 0xe6, 0x36, 0x56, 0xc6, 0x06, 0xf2, 0x26, 0x07, 0x72, 0x97, 0xc6, 0xc6, 0x06, 0x82, 0x16, 0x66, 0x57, 0x2e, 0x01, 0xe8, 0xa6, 0x33, 0xf6, 0xd6, 0x06, 0xc7, 0x56, 0x46, 0x57, 0x06, 0x32, 0x57, 0x46, 0x07, 0x42, 0xf7, 0x06, 0x52, 0xe2, 0x92, 0x07, 0x42, 0xf7, 0x06, 0x62, 0x96, 0xe6, 0x96, 0x36, 0x87, 0x06, 0x42, 0x87, 0x56, 0x06, 0x32, 0xf6, 0xe6, 0xe6, 0x56, 0x36, 0x46, 0x97, 0xf6, 0xe6, 0xe6, 0x5a, 0x09, 0xc0, 0xe7, 0xa1, 0x30, 0xb6, 0xb1, 0x3a, 0xb6, 0x30, 0xba, 0xb4, 0x37, 0x37, 0x90, 0x37, 0x33, 0x90, 0xb1, 0x37, 0x37, 0x3a, 0xb9, 0x37, 0x36, 0x10, 0xb4, 0xb2, 0x30, 0xb2, 0x32, 0xb9, 0x39, 0x90, 0xb9, 0xba, 0x31, 0x34, 0x90, 0xb0, 0x39, 0x90, 0x93, 0xa1, 0x37, 0x37, 0xba, 0x32, 0x37, 0xba, 0x16, 0xa6, 0x32, 0xb7, 0x33, 0x3a, 0xb4, 0x13, 0x90, 0x37, 0x79, 0x09, 0x80, 0x47, 0x4e, 0xa8, 0xe4, 0xc2, 0xdc, 0xe6, 0xcc, 0xca, 0xe4, 0x5a, 0x8a, 0xdc, 0xc6, 0xde, 0xc8, 0xd2, 0xdc, 0xce, 0x4e, 0x40, 0xe6, 0xd0, 0xde, 0xea, 0xd8, 0xc8, 0x40, 0xc4, 0xca, 0x40, 0xe0, 0xca, 0xe4, 0xcc, 0xde, 0xe4, 0xda, 0xca, 0xc8, 0x40, 0xc2, 0xe8, 0x40, 0xc2, 0x40, 0xd0, 0xd2, 0xce, 0xd0, 0xca, 0xe4, 0x40, 0xd8, 0xca, 0xec, 0xca, 0xd8, 0x76, 0x40, 0xe8, 0xd0, 0xd2, 0xe6, 0x40, 0xe6, 0xe8, 0xe4, 0xea, 0xc6, 0xe8, 0xea, 0xe4, 0xca, 0x25, 0x00, 0x6d, 0xd3, 0xe6, 0x40, 0xda, 0xca, 0xe4, 0xca, 0xd8, 0xf2, 0x40, 0xcc, 0xde, 0xe4, 0x40, 0xee, 0xd0, 0xc2, 0xe8, 0x40, 0xce, 0xca, 0xe8, 0xe6, 0x40, 0xe6, 0xca, 0xdc, 0xe8, 0x40, 0xe8, 0xde, 0x40, 0xde, 0xe4, 0x40, 0xe4, 0xca, 0xc6, 0xca, 0xd2, 0xec, 0xca, 0xc8, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x40, 0x8a, 0xc2, 0xe4, 0xe8, 0xd0, 0x5c, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x3c, 0x1d, 0xaa, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x66, 0xbf, 0x6d, 0x83, 0xa0, 0xfd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xe5, 0xbf, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x06, 0xb8, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x2d, 0xfd, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x26, 0xb8, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x67, 0x91, 0xd0, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x1c, 0xb8, 0x1d, 0x3c, 0xf2, 0x84, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x40, 0x08, 0xb7, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x90, 0x67, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x70, 0x70, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xa0, 0x70, 0x3b, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xc1, 0x70, 0x3b, 0x78, 0xfa, 0xb9, 0x5c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x7c, 0xb8, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x56, 0x77, 0xb3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x39, 0xdc, 0x0e, 0x1f, 0xac, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0c, 0x89, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x35, 0x71, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xab, 0x43, 0xdc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x74, 0x71, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x07, 0x79, 0xb6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0c, 0x16, 0xb7, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0e, 0x19, 0xb7, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x28, 0x1b, 0xb7, 0x83, 0xa7, 0x9f, 0xcb, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x50, 0x8f, 0xdb, 0x86, 0x3f, 0x97, 0x36, 0x68, 0x75, 0x37, 0x7b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x58, 0xc7, 0xed, 0xf0, 0xc1, 0x6a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x08, 0xb9, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x60, 0x22, 0xb7, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0x0b, 0xad, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x48, 0x24, 0xb7, 0x83, 0x10, 0x7c, 0xa8, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0x9b, 0x05, 0x8c, 0xfb, 0xf7, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x01, 0x1e, 0x73, 0x69, 0x67, 0x6e, 0x2d, 0x61, 0x72, 0x76, 0x6f, 0x03, 0x68, 0xa6, 0xb9, 0x81, 0xc8, 0x95, 0xcd, 0xd5, 0xb1, 0xd1, 0x81, 0x90, 0xf0, 0xb4, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x5e, 0xc8, 0x5b, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xec, 0xe4, 0xb6, 0x41, 0xd0, 0xfe, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x27, 0xe5, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0xaa, 0xdc, 0x36, 0x64, 0xc0, 0x0f, 0xde, 0xdd, 0x0f, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x9d, 0x96, 0xdb, 0x86, 0x7f, 0xe7, 0x37, 0x78, 0x22, 0x9d, 0xc8, 0x1a, 0x3c, 0xc9, 0x1f, 0xa6, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x15, 0xcc, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x8c, 0xb9, 0x6d, 0xc8, 0x80, 0x1f, 0x3c, 0xfe, 0x1f, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x58, 0x34, 0xb7, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe8, 0x38, 0xb7, 0x0d, 0xff, 0xce, 0x6f, 0xf0, 0x44, 0x3a, 0x91, 0x35, 0x78, 0x17, 0x40, 0x4c, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xbb, 0x17, 0x21, 0x1f, 0xd8, 0xbd, 0x08, 0x15, 0x1b, 0xac, 0x57, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x76, 0x2f, 0xc2, 0x64, 0x60, 0xf7, 0x22, 0xec, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x82, 0xab, 0xa1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x22, 0x3c, 0xb7, 0x0d, 0xff, 0xce, 0x6f, 0xf0, 0x44, 0x3a, 0x91, 0x35, 0x78, 0x9c, 0x40, 0x4c, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xcb, 0x17, 0x21, 0x1f, 0x58, 0xbe, 0x08, 0x15, 0x1b, 0xac, 0x57, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x2f, 0xc2, 0x64, 0x60, 0xf9, 0x22, 0xec, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x3c, 0x3c, 0xa2, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4e, 0x40, 0xb7, 0x83, 0x87, 0x64, 0xd7, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xdb, 0x17, 0x21, 0x1f, 0xd8, 0xbe, 0x08, 0x15, 0x1b, 0xac, 0x57, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x2f, 0xc2, 0x64, 0x60, 0xfb, 0x22, 0xec, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x04, 0x04, 0xa2, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x92, 0x43, 0xb7, 0x83, 0x87, 0x64, 0xd7, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xeb, 0x17, 0x21, 0x1f, 0x58, 0xbf, 0x08, 0x15, 0x1b, 0xac, 0x57, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd6, 0x2f, 0xc2, 0x64, 0x60, 0xfd, 0x22, 0xec, 0x0e, 0xde, 0x19, 0xa6, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xc5, 0xe8, 0xb6, 0xe1, 0xdf, 0xf9, 0x0d, 0x9e, 0x48, 0x27, 0xb2, 0x06, 0x2f, 0x4d, 0x88, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x8d, 0xd2, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x5b, 0xba, 0x6d, 0xc8, 0x80, 0x1f, 0xbc, 0x40, 0x20, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x38, 0x4e, 0xb7, 0x83, 0x87, 0x64, 0xd7, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x33, 0xa8, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x1a, 0x75, 0xdb, 0x90, 0x01, 0x3f, 0x78, 0x04, 0x41, 0xcc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0xa8, 0x6e, 0x1b, 0xfe, 0x9d, 0xdf, 0xe0, 0x89, 0x74, 0x22, 0x6b, 0xf0, 0x3e, 0x82, 0x98, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa2, 0x57, 0xb7, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x1d, 0xeb, 0xb6, 0x21, 0x03, 0x7e, 0xf0, 0x52, 0x83, 0x98, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x6e, 0xdd, 0x36, 0xfc, 0x3b, 0xbf, 0xc1, 0x13, 0xe9, 0x44, 0xd6, 0xe0, 0x11, 0x07, 0x31, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0xbd, 0x6e, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x09, 0xd8, 0x6d, 0x43, 0x06, 0xfc, 0xe0, 0x39, 0x09, 0x31, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x17, 0xbb, 0x1d, 0xbc, 0x46, 0xbe, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x94, 0xdd, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2b, 0xb3, 0xdb, 0x86, 0x0c, 0xf8, 0xc1, 0x8b, 0x16, 0x62, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x91, 0x76, 0xdb, 0xf0, 0xef, 0xfc, 0x06, 0x4f, 0xa4, 0x13, 0x59, 0x83, 0xc7, 0x2e, 0xc4, 0x54, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x60, 0xbb, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x56, 0x6d, 0xb7, 0x0d, 0x19, 0xf0, 0x83, 0x67, 0x37, 0xc4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x02, 0xee, 0xb6, 0xe1, 0xdf, 0xf9, 0x0d, 0x9e, 0x48, 0x27, 0xb2, 0x06, 0x2f, 0x72, 0x88, 0xa9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x32, 0x77, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0xe8, 0x6e, 0x1b, 0x32, 0xe0, 0x07, 0x6f, 0x7f, 0x88, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xca, 0xdd, 0x6d, 0xc3, 0xbf, 0xf3, 0x1b, 0x3c, 0x91, 0x4e, 0x64, 0x0d, 0x9e, 0x05, 0x11, 0x53, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x33, 0xef, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0xeb, 0xdd, 0x36, 0x64, 0xc0, 0x0f, 0x1e, 0x20, 0x11, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd0, 0xbe, 0xdb, 0x86, 0x7f, 0xe7, 0x37, 0x78, 0x22, 0x9d, 0xc8, 0x1a, 0xbc, 0x4d, 0x22, 0xa6, 0x6a, 0x05, 0x9e, 0x7f, 0xdf, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x07, 0x7c, 0xb2, 0xb2, 0xb1, 0x77, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd1, 0x22, 0x6d, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x6f, 0xba, 0x32, 0x3c, 0x3a, 0x10, 0xb2, 0xb2, 0xb1, 0x37, 0xb9, 0x30, 0xba, 0xb4, 0x37, 0xb7, 0x0d, 0x82, 0xcd, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xce, 0x8c, 0xb4, 0x83, 0x10, 0x7c, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb4, 0x23, 0x6d, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0xc1, 0x8b, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x8d, 0xa4, 0x6d, 0xc8, 0x80, 0x1f, 0xb4, 0xa6, 0x22, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x08, 0x4a, 0xda, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x82, 0xaf, 0x73, 0x9b, 0x05, 0xfe, 0x7f, 0xdf, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x07, 0x7c, 0xb6, 0x34, 0xb3, 0x72, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb9, 0xee, 0x6d, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xe6, 0xd0, 0xd2, 0xe0, 0x40, 0xd6, 0xca, 0xf2, 0x40, 0xe4, 0xca, 0xec, 0xd2, 0xe6, 0xd2, 0xde, 0xdc, 0x0e, 0xca, 0x2c, 0xdd, 0x15, 0xa8, 0xfe, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x54, 0x10, 0xb2, 0x81, 0x6d, 0x83, 0xb8, 0x0d, 0x52, 0x2f, 0x8a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xab, 0x20, 0x7a, 0xf0, 0xf0, 0x1e, 0xbb, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0x1e, 0x49, 0x27, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0x91, 0x74, 0x22, 0x0d, 0xa0, 0xfb, 0x56, 0x47, 0x07, 0x22, 0x57, 0x36, 0x57, 0xc7, 0x46, 0x07, 0xc2, 0xd3, 0x42, 0xda, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x24, 0x9d, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x15, 0xc4, 0x0d, 0x6c, 0x16, 0xc4, 0x6f, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5e, 0x41, 0x48, 0x06, 0xf6, 0x0a, 0xc2, 0x97, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xd3, 0xdc, 0x5a, 0xc2, 0xe4, 0xec, 0xde, 0x40, 0xe4, 0xca, 0xe6, 0xea, 0xd8, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x15, 0x84, 0x68, 0x60, 0xaf, 0x20, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x64, 0xda, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x57, 0x10, 0x06, 0x03, 0x7b, 0x05, 0x61, 0xbd, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x2b, 0x08, 0x93, 0x83, 0x97, 0x56, 0xd9, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5e, 0x41, 0xd8, 0x0c, 0xec, 0x15, 0x84, 0xdd, 0x86, 0xb7, 0x75, 0x36, 0x78, 0xc6, 0xda, 0x5b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5e, 0x41, 0x18, 0x0e, 0xec, 0x15, 0x84, 0xf1, 0xc1, 0x7b, 0x11, 0x48, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x2c, 0x08, 0xc9, 0xc0, 0x62, 0x41, 0x38, 0xb3, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x77, 0x19, 0x1e, 0x5d, 0x99, 0x9c, 0x5b, 0x18, 0x1b, 0x88, 0x5c, 0xd9, 0x5c, 0x1d, 0x1b, 0xdd, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc5, 0x82, 0x10, 0x0d, 0x2c, 0x16, 0x84, 0x7c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xcf, 0x58, 0x7b, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x16, 0x0b, 0xc2, 0x60, 0x60, 0xb1, 0x20, 0xac, 0x37, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x8b, 0x05, 0x61, 0x72, 0xf0, 0x9c, 0x35, 0xbb, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x2c, 0x08, 0x9b, 0x81, 0xc5, 0x82, 0xb0, 0x3b, 0x78, 0xff, 0x96, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x58, 0x10, 0x86, 0x03, 0x8b, 0x05, 0x61, 0xbc, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0xdd, 0x52, 0x48, 0x55, 0x2b, 0xe0, 0x8b, 0x95, 0x85, 0xc9, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xef, 0xad, 0xb3, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x45, 0x83, 0x90, 0x0e, 0x2c, 0x1a, 0x84, 0x2b, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xc2, 0x85, 0xc9, 0xd1, 0xa5, 0x85, 0xb1, 0x81, 0x90, 0x88, 0x95, 0x85, 0xad, 0x6d, 0xf8, 0x60, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x34, 0x08, 0x83, 0x81, 0x45, 0x83, 0x30, 0x3a, 0x78, 0x14, 0x5e, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x1a, 0x84, 0xd5, 0xc0, 0xa2, 0x41, 0x58, 0x1e, 0x3c, 0xd5, 0x28, 0xe4, 0x70, 0x8a, 0xad, 0xc1, 0xbb, 0xf1, 0x83, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xd5, 0x20, 0xa4, 0x03, 0xab, 0x06, 0xe1, 0xcf, 0x86, 0x87, 0xf3, 0x37, 0x3c, 0xb8, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xab, 0x06, 0x61, 0x76, 0xf0, 0xe2, 0x42, 0xbb, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0xa0, 0x43, 0x93, 0x2b, 0x0b, 0x23, 0x03, 0x91, 0xab, 0x73, 0x03, 0x91, 0x2b, 0x8b, 0xab, 0x2b, 0x9b, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x6a, 0x10, 0x76, 0x03, 0xab, 0x06, 0x61, 0xbc, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0x5b, 0x67, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xab, 0x06, 0x61, 0x78, 0xf0, 0x92, 0x47, 0xbb, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x7b, 0xeb, 0xec, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x35, 0x08, 0xeb, 0x81, 0x55, 0x83, 0x50, 0xb3, 0xe1, 0xcf, 0xa5, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xaa, 0x41, 0xa8, 0x38, 0x78, 0x78, 0xa5, 0xdd, 0xc1, 0x7a, 0xad, 0xe7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xd5, 0x20, 0xf4, 0x0c, 0xac, 0x1a, 0x84, 0xb6, 0x0d, 0x7f, 0x2e, 0x0d, 0xf8, 0x61, 0x72, 0x67, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x1a, 0x84, 0xb2, 0x83, 0xb7, 0x6f, 0xda, 0x1d, 0x1c, 0x3a, 0x2d, 0x9b, 0x35, 0x78, 0x7a, 0x8f, 0xd2, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xd3, 0x7b, 0x94, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xd3, 0x20, 0xa4, 0x03, 0x9b, 0x06, 0xe1, 0xd0, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbc, 0xbc, 0xd5, 0xd1, 0xc1, 0xd5, 0xd1, 0x81, 0xb4, 0x85, 0xc9, 0xad, 0x81, 0xac, 0x80, 0xa4, 0xb9, 0xc1, 0xd5, 0xd1, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa6, 0x41, 0x88, 0x07, 0x36, 0x0d, 0xc2, 0xe4, 0xa0, 0xf4, 0xa6, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x0d, 0xc2, 0x66, 0x60, 0xd3, 0x20, 0xec, 0x0e, 0xde, 0xb7, 0x21, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x1a, 0x84, 0xe1, 0xc0, 0xa6, 0x41, 0x18, 0x1f, 0xbc, 0x8e, 0xce, 0xae, 0x15, 0xf0, 0xe7, 0xd0, 0xca, 0xc8, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x67, 0xc6, 0xda, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb2, 0x41, 0x48, 0x07, 0x96, 0x0d, 0xc2, 0x93, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xc6, 0xde, 0xda, 0xe0, 0xea, 0xe8, 0xca, 0x40, 0xec, 0xc2, 0xe6, 0xca, 0x36, 0x08, 0xa0, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x36, 0x08, 0xf1, 0xc0, 0xb2, 0x41, 0xe8, 0xd9, 0xf0, 0xa0, 0xe4, 0x1a, 0x14, 0x82, 0xa9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x6c, 0x10, 0xf2, 0x81, 0x65, 0x83, 0xb0, 0xd9, 0xf0, 0xef, 0xfc, 0x02, 0xbe, 0xd9, 0x9b, 0x5c, 0x5b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x6c, 0x10, 0x46, 0x07, 0xef, 0xd6, 0xb5, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x6c, 0x10, 0x56, 0x03, 0xcb, 0x06, 0xa1, 0x60, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0x80, 0x6f, 0x8e, 0x4e, 0x2e, 0xcc, 0x8d, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x0d, 0xc2, 0xf8, 0xe0, 0x65, 0xc4, 0x76, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xe5, 0xc2, 0xdc, 0xc8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x65, 0x83, 0xd0, 0x30, 0xb0, 0x6c, 0x10, 0x6a, 0x36, 0x7c, 0xd4, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xcb, 0x06, 0xa1, 0xe2, 0xe0, 0x15, 0xcc, 0x76, 0x07, 0xcd, 0x6e, 0x47, 0x75, 0x38, 0xc5, 0xd6, 0xe0, 0x19, 0x6b, 0x6f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x67, 0x10, 0xd2, 0x81, 0x3d, 0x83, 0xf0, 0x64, 0xc3, 0xc3, 0xf9, 0x1b, 0x1e, 0xdc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3d, 0x83, 0x30, 0x3b, 0x78, 0xa8, 0xb4, 0xdd, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7e, 0x24, 0x66, 0x79, 0x72, 0x64, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x67, 0x10, 0x76, 0x03, 0x7b, 0x06, 0x61, 0x7b, 0xb0, 0x0a, 0x32, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x33, 0x08, 0xe3, 0x81, 0x3d, 0x83, 0xb0, 0x3e, 0x38, 0x74, 0x5a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x7b, 0x06, 0x61, 0x3e, 0xb0, 0x67, 0x10, 0x2a, 0x0e, 0x9e, 0xc8, 0x0e, 0xd2, 0x6a, 0xf0, 0xa6, 0xc8, 0x91, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0x6f, 0x8a, 0x1c, 0x69, 0x00, 0xdd, 0x34, 0x37, 0x10, 0xb9, 0xb2, 0xb8, 0xba, 0xb2, 0x39, 0x3a, 0x90, 0x16, 0x1f, 0xd2, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x9b, 0x22, 0x47, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xb7, 0x20, 0x6e, 0x60, 0xcb, 0x20, 0x7e, 0x83, 0x50, 0x43, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x76, 0x0b, 0x42, 0x32, 0xb0, 0x5b, 0x10, 0x26, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x76, 0x0b, 0x42, 0x34, 0xb0, 0x5b, 0x10, 0xf2, 0x83, 0xd7, 0x7f, 0xa7, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xbb, 0x05, 0x61, 0x30, 0xb0, 0x5b, 0x10, 0x16, 0x07, 0x05, 0x45, 0x66, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x5c, 0x10, 0x77, 0xf0, 0xec, 0x74, 0xbb, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x2e, 0x08, 0xc9, 0xc0, 0x72, 0x41, 0x78, 0xb3, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xbf, 0x5b, 0xd9, 0x1d, 0x48, 0x9d, 0x5b, 0x1a, 0x1e, 0x08, 0x9c, 0xdc, 0xdb, 0x58, 0xd9, 0xdc, 0xdc, 0x06, 0xeb, 0x55, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe5, 0x82, 0x10, 0x0e, 0x2c, 0x17, 0x84, 0xc5, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x5e, 0xd2, 0xe3, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xcb, 0x05, 0x61, 0x32, 0xb0, 0x5c, 0x10, 0xb6, 0x1b, 0xfe, 0x9d, 0x5f, 0x00, 0x0f, 0xbb, 0x30, 0xb7, 0xb2, 0x16, 0xba, 0xb0, 0xb9, 0xb5, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xed, 0x82, 0x90, 0x0c, 0x6c, 0x17, 0x84, 0x2b, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xce, 0xbd, 0x8d, 0xad, 0x95, 0xd1, 0x81, 0x8c, 0xb1, 0xbd, 0xcd, 0x95, 0x91, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x2e, 0x08, 0xd1, 0xc0, 0x76, 0x41, 0xc8, 0x0f, 0x56, 0xa1, 0x84, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xdb, 0x05, 0x61, 0x30, 0xb0, 0x5d, 0x10, 0x16, 0x07, 0x21, 0xf8, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x60, 0x10, 0x92, 0x81, 0x05, 0x83, 0xf0, 0x65, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xdf, 0x34, 0xb7, 0x96, 0x30, 0x39, 0xbb, 0x37, 0x10, 0x3a, 0x34, 0xb9, 0xb2, 0x30, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x0b, 0x06, 0x21, 0x1a, 0x58, 0x30, 0x08, 0xf9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x5e, 0x72, 0x1f, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x18, 0x84, 0xc1, 0xc0, 0x82, 0x41, 0x58, 0x6f, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x16, 0x0c, 0xc2, 0xe4, 0xe0, 0x3d, 0x1a, 0x77, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x60, 0x10, 0x36, 0x03, 0x0b, 0x06, 0x61, 0xb7, 0xe1, 0x6d, 0x9d, 0x0d, 0xde, 0x8d, 0x1f, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x60, 0x10, 0x86, 0x03, 0x0b, 0x06, 0x61, 0x7c, 0xf0, 0x5e, 0x04, 0x92, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x0c, 0x42, 0x32, 0xb0, 0x61, 0x10, 0xce, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x5d, 0x86, 0x47, 0x57, 0x26, 0xe7, 0x16, 0xc6, 0x06, 0x42, 0x87, 0x26, 0x57, 0x16, 0x46, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xc3, 0x20, 0x44, 0x03, 0x1b, 0x06, 0x21, 0xdf, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xbb, 0xf1, 0x83, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0d, 0x83, 0x30, 0x18, 0xd8, 0x30, 0x08, 0xeb, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x86, 0x41, 0x98, 0x1c, 0x3c, 0xfa, 0xe5, 0x6e, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x0c, 0xc2, 0x66, 0x60, 0xc3, 0x20, 0xec, 0x0e, 0x5e, 0x09, 0x72, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x18, 0x84, 0xe1, 0xc0, 0x86, 0x41, 0x18, 0x6f, 0xf8, 0x77, 0x7e, 0x0d, 0x9e, 0xde, 0xa3, 0x54, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x18, 0x84, 0x64, 0x60, 0xc5, 0x20, 0x5c, 0xd9, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x33, 0xcd, 0x8d, 0x2d, 0xcd, 0xad, 0x0c, 0x84, 0x0e, 0x4d, 0xae, 0x2c, 0x8c, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x8a, 0x41, 0x88, 0x06, 0x56, 0x0c, 0x42, 0xbe, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x87, 0xd1, 0x07, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x2b, 0x06, 0x61, 0x30, 0xb0, 0x62, 0x10, 0x56, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0xbd, 0x75, 0x76, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x62, 0x10, 0x16, 0x07, 0xaf, 0x29, 0xba, 0x3b, 0x78, 0xc0, 0xa4, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x62, 0x10, 0x66, 0x03, 0x2b, 0x06, 0x61, 0xbb, 0xe1, 0xcf, 0xa5, 0x0d, 0x9e, 0x19, 0x6b, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x2b, 0x06, 0x61, 0x77, 0xf0, 0xb2, 0xa5, 0xbb, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x33, 0x63, 0xed, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xc7, 0x20, 0x24, 0x03, 0x3b, 0x06, 0xe1, 0xc7, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3e, 0x74, 0x72, 0x69, 0x6d, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x1b, 0xac, 0x57, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x76, 0x0c, 0x42, 0x38, 0xb0, 0x63, 0x10, 0x16, 0x07, 0xaf, 0xb7, 0xf7, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1d, 0x83, 0x30, 0x19, 0xd8, 0x31, 0x08, 0xdb, 0x83, 0x17, 0x08, 0xdc, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x4b, 0x06, 0x21, 0x19, 0x58, 0x32, 0x08, 0x5f, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x95, 0x2b, 0x83, 0x7b, 0x93, 0xa3, 0x03, 0xa9, 0x83, 0x3b, 0x93, 0x0b, 0x23, 0x2b, 0xdb, 0x60, 0xbd, 0x4a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x64, 0x10, 0xc2, 0x81, 0x25, 0x83, 0xb0, 0xd8, 0x90, 0x01, 0x3f, 0x78, 0x18, 0x78, 0xca, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x19, 0x84, 0xc9, 0xc0, 0x92, 0x41, 0xd8, 0x1e, 0xbc, 0x40, 0xe0, 0xae, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0x5b, 0x01, 0xe1, 0xbf, 0xbf, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x0f, 0xf8, 0x73, 0x74, 0x79, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0x81, 0x90, 0x0d, 0x94, 0x81, 0x70, 0x64, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x2f, 0xb2, 0xb2, 0xb1, 0xb7, 0xb9, 0x17, 0xb1, 0xb3, 0x17, 0xb3, 0xb3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x03, 0x21, 0x1c, 0x28, 0x03, 0x61, 0x70, 0x50, 0x7a, 0xd3, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x65, 0x20, 0x2c, 0x06, 0xca, 0x40, 0xd8, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x19, 0x08, 0x93, 0x81, 0x32, 0x10, 0x56, 0x07, 0x25, 0xe2, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x06, 0xc2, 0x6c, 0xa0, 0x0c, 0x84, 0xe9, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x31, 0x27, 0x76, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x06, 0xc2, 0x78, 0xa0, 0x0c, 0x84, 0xb2, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x03, 0x61, 0x3d, 0x50, 0x06, 0x42, 0xc3, 0x41, 0xe9, 0x4d, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0x81, 0x50, 0x31, 0x50, 0x06, 0x42, 0xcd, 0x86, 0x7f, 0xe7, 0x17, 0xf0, 0xe9, 0xd2, 0xdc, 0xe8, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xca, 0x40, 0xe8, 0x19, 0x28, 0x03, 0xa1, 0xeb, 0xe0, 0x9d, 0x82, 0x77, 0x75, 0x38, 0xc5, 0x6a, 0x81, 0x71, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x2e, 0x10, 0xda, 0x20, 0xf5, 0xa2, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x08, 0x41, 0x68, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x56, 0x2d, 0x2d, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x5a, 0xb5, 0xb4, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x66, 0x10, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x53, 0xae, 0x8c, 0x2d, 0x8c, 0x2e, 0xcd, 0xae, 0x0c, 0x04, 0x2e, 0x8c, 0x0e, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x47, 0x08, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xeb, 0x41, 0x68, 0xc3, 0xbf, 0xf3, 0x0b, 0xf8, 0x63, 0x61, 0x72, 0x65, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x9c, 0x21, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xe3, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9a, 0x0b, 0xa1, 0x83, 0xb7, 0xea, 0x85, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x1a, 0x22, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xe5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8a, 0x0f, 0xa1, 0x83, 0xf3, 0xe6, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x2a, 0x42, 0x1b, 0xfe, 0x5c, 0x1a, 0x7c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x3d, 0x11, 0x3a, 0x38, 0x23, 0xa1, 0xb6, 0x02, 0x7e, 0xdb, 0xdb, 0x1b, 0xb9, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xf6, 0xcf, 0xbb, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5c, 0x18, 0xa1, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0xe5, 0xca, 0xe2, 0xea, 0xca, 0xe6, 0xe8, 0x40, 0xd2, 0xdc, 0x40, 0xc8, 0xca, 0xe6, 0xd6, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x78, 0x8d, 0xd0, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x2d, 0xe5, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd5, 0x8c, 0xd0, 0xc1, 0x73, 0x28, 0xef, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xe2, 0x11, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x2f, 0x68, 0x08, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xce, 0x11, 0x3a, 0x78, 0xab, 0x5e, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xcd, 0x42, 0x42, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x60, 0xfa, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x03, 0x24, 0x74, 0x70, 0x46, 0x42, 0x6d, 0x05, 0x7c, 0xb9, 0xb2, 0xb3, 0x79, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x11, 0xb2, 0x77, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x11, 0x48, 0x42, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xcb, 0xd5, 0xb1, 0x95, 0xcd, 0x81, 0x98, 0xbd, 0xc9, 0x81, 0xc0, 0x85, 0xd1, 0xa1, 0xcd, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x2e, 0x09, 0x1d, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x41, 0x09, 0x1d, 0x9c, 0x91, 0x50, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x9f, 0x12, 0x3a, 0x58, 0x9a, 0x2a, 0xda, 0x6a, 0xf0, 0xf6, 0x10, 0xa5, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0x6f, 0x0f, 0x51, 0x6a, 0x00, 0x6f, 0xba, 0x3c, 0xb8, 0x32, 0x32, 0x90, 0xb6, 0x30, 0xb9, 0x35, 0x90, 0xb1, 0x37, 0xb9, 0xb2, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4c, 0x2c, 0xa1, 0x0d, 0x0f, 0xe7, 0xaf, 0x41, 0xe3, 0xf3, 0x51, 0x07, 0x49, 0xec, 0x50, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa5, 0x5c, 0x42, 0x1b, 0x04, 0xd0, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xeb, 0x97, 0xd0, 0x06, 0xa9, 0x17, 0xc5, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0x62, 0x42, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0x3e, 0x59, 0x9a, 0x99, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x4d, 0x26, 0xb4, 0xc1, 0xe2, 0xc2, 0xa4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0xcf, 0x84, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8f, 0x9a, 0xd0, 0x86, 0x3f, 0x97, 0x36, 0x48, 0x46, 0x8a, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x66, 0x13, 0xda, 0xf0, 0xef, 0xfc, 0x06, 0x8d, 0x35, 0x67, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x08, 0x9c, 0xd0, 0x86, 0x3f, 0x97, 0x36, 0x48, 0xa8, 0x90, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x95, 0x13, 0x3a, 0x78, 0x5c, 0xf4, 0x5d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf1, 0x75, 0x42, 0x1b, 0x14, 0x82, 0xa9, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x89, 0x78, 0x42, 0x1b, 0xfe, 0x9d, 0xdf, 0x20, 0x89, 0x1d, 0xaa, 0xd5, 0x20, 0xad, 0x8c, 0x65, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x7c, 0x4f, 0x68, 0x83, 0xc5, 0x85, 0x49, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xfa, 0x09, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9a, 0x40, 0xa1, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x0f, 0x0a, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2a, 0x43, 0xa1, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x52, 0x14, 0x3a, 0x78, 0x14, 0x5e, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x65, 0x8e, 0x42, 0x07, 0x2f, 0xc8, 0xbe, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xdc, 0x48, 0xa1, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x51, 0x0a, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x74, 0x4b, 0xa1, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xd0, 0x14, 0x3a, 0x78, 0x14, 0x5e, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0x9d, 0x42, 0x07, 0x2f, 0xc8, 0xbe, 0xab, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3e, 0x50, 0xa1, 0x0d, 0x0a, 0xc1, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x7f, 0x85, 0xe0, 0xe0, 0xf9, 0x7c, 0x42, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xff, 0x0a, 0xc9, 0x40, 0xfe, 0x2b, 0xa4, 0x07, 0x65, 0x13, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xff, 0x0a, 0xf1, 0x40, 0xfe, 0x2b, 0x2c, 0x0e, 0x5e, 0x90, 0x7d, 0xd7, 0xac, 0xc1, 0x5b, 0x7e, 0xed, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x47, 0x85, 0x36, 0x28, 0x04, 0x53, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf7, 0x15, 0x06, 0x07, 0x2f, 0x25, 0x15, 0x3a, 0x78, 0xdf, 0x86, 0xc8, 0xe1, 0x14, 0x5b, 0xc0, 0x87, 0x0b, 0x1b, 0xa3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x4c, 0x85, 0x36, 0x58, 0x5c, 0x98, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4a, 0xaa, 0xd0, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x5e, 0x15, 0x3a, 0x78, 0x5c, 0xf4, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0xae, 0x42, 0x07, 0x2f, 0xc8, 0xbe, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x43, 0x56, 0x68, 0x83, 0x42, 0x30, 0x75, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x95, 0x56, 0xe8, 0xe0, 0x71, 0xd1, 0x77, 0xab, 0xc1, 0x9b, 0xb5, 0x94, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x70, 0x85, 0x36, 0x58, 0x5c, 0x98, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xc0, 0xc2, 0x64, 0x20, 0x03, 0x16, 0x66, 0x07, 0xcb, 0x61, 0xb1, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0x76, 0x85, 0x36, 0x28, 0x04, 0x53, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0b, 0x7c, 0x85, 0x0e, 0x1e, 0x17, 0x7d, 0x37, 0x6b, 0x70, 0x86, 0x91, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x0a, 0x16, 0xda, 0x60, 0x71, 0x61, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x29, 0xc4, 0x42, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd8, 0x58, 0x68, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x51, 0xc9, 0x42, 0x07, 0x2f, 0xc8, 0xbe, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x8d, 0x59, 0x68, 0xc3, 0x9f, 0x4b, 0x83, 0x8b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0xce, 0x42, 0x07, 0x2f, 0xc8, 0xbe, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x47, 0x5a, 0x68, 0x83, 0x42, 0x30, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x5f, 0xa1, 0xe1, 0xe0, 0x65, 0xd3, 0x42, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfc, 0x0a, 0x15, 0x03, 0xc9, 0xaf, 0x50, 0x73, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xaf, 0xd0, 0x33, 0x90, 0xfc, 0x0a, 0x8d, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfc, 0x0a, 0x45, 0x03, 0xc9, 0xaf, 0x50, 0x76, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xaf, 0xd0, 0x36, 0x90, 0xfc, 0x0a, 0x85, 0x07, 0x2f, 0xc8, 0xbe, 0xab, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0x5b, 0x0d, 0x1e, 0xe4, 0x13, 0xb2, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x20, 0x9f, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xce, 0x6b, 0xa1, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x83, 0x87, 0x03, 0x85, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x1c, 0x6d, 0xa1, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xf6, 0x2d, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x68, 0x6e, 0xa1, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x3c, 0x17, 0xda, 0xf0, 0xe7, 0xd2, 0xe0, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3d, 0xb9, 0xd0, 0xc1, 0xa3, 0xf0, 0x42, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x7d, 0x17, 0xda, 0xf0, 0xe7, 0xd2, 0xe0, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x46, 0xbb, 0xd0, 0xc1, 0x5b, 0xf5, 0x42, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xdc, 0x5e, 0x68, 0xc3, 0x9f, 0x4b, 0x83, 0xcf, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x49, 0xf4, 0x42, 0x07, 0x67, 0x24, 0xd4, 0x66, 0x01, 0x7f, 0x2e, 0x4c, 0x2c, 0xdc, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x62, 0x10, 0xde, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8f, 0xbf, 0xd0, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x5e, 0x70, 0x61, 0x74, 0x63, 0x68, 0x2b, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6d, 0x60, 0x68, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd9, 0x00, 0x43, 0x07, 0x6d, 0x5b, 0x8f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xa7, 0x30, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xe3, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf2, 0x83, 0xa1, 0x83, 0xf3, 0xe6, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x15, 0x13, 0x43, 0x1b, 0xfe, 0x5c, 0x1a, 0x5c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x84, 0x18, 0xda, 0xf0, 0xef, 0xfc, 0x02, 0x7e, 0xdb, 0x5b, 0x98, 0x5c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x6c, 0x0c, 0x6d, 0xf8, 0x73, 0x69, 0xf0, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x0d, 0x63, 0x68, 0xc3, 0xbf, 0xf3, 0x0b, 0xf8, 0x64, 0x6f, 0x6d, 0x65, 0x35, 0x6b, 0xb0, 0x24, 0x38, 0x7b, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x60, 0x49, 0x70, 0xf6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x40, 0xc8, 0xd0, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x5e, 0x67, 0x65, 0x74, 0x20, 0x70, 0x72, 0x65, 0x6c, 0x75, 0x64, 0x65, 0x1b, 0x84, 0xd3, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xcd, 0x23, 0x43, 0x07, 0x67, 0x24, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb8, 0x93, 0xa1, 0x83, 0x66, 0xb7, 0xa3, 0x0e, 0xa7, 0xd8, 0x02, 0xbe, 0x5c, 0xda, 0x1b, 0xbd, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x66, 0x30, 0xbc, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf0, 0x96, 0xa1, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x90, 0x2b, 0x9b, 0x83, 0x7b, 0x73, 0x9b, 0x2b, 0x5b, 0x19, 0x7b, 0x6b, 0x83, 0x63, 0x2b, 0xa3, 0x2b, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x8b, 0x19, 0x3a, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xad, 0x19, 0xda, 0xf0, 0xef, 0xfc, 0x06, 0x6d, 0x4e, 0xb8, 0xd6, 0x6a, 0xf0, 0xba, 0xa5, 0x90, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xd7, 0x2d, 0x85, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xed, 0x0c, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x43, 0x19, 0x1e, 0xdc, 0x9b, 0x1c, 0x1d, 0x88, 0xd9, 0x9b, 0x1c, 0xc8, 0xd8, 0x5b, 0x1b, 0x5c, 0x18, 0xdd, 0x86, 0x7f, 0xe7, 0x57, 0x1c, 0xe7, 0xe0, 0x75, 0x4b, 0x21, 0x35, 0x0b, 0xe0, 0x79, 0x17, 0x66, 0x46, 0xd7, 0x42, 0xf7, 0xd6, 0x72, 0x57, 0x66, 0x46, 0x37, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x02, 0x0d, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x4c, 0x85, 0x64, 0x20, 0x31, 0x15, 0x16, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xd6, 0xc2, 0xd8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x4c, 0x85, 0xf4, 0xe0, 0xb9, 0x78, 0x78, 0x1b, 0xfe, 0x9d, 0x5f, 0xc0, 0xbf, 0x0b, 0x33, 0xa3, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x79, 0x68, 0x68, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x66, 0x2a, 0x24, 0x03, 0x99, 0xa9, 0xb0, 0xd9, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x54, 0x88, 0x06, 0x32, 0x53, 0x21, 0x3d, 0x28, 0x11, 0xdf, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x54, 0x88, 0x07, 0x32, 0x53, 0x61, 0x72, 0xf0, 0x2c, 0x85, 0x90, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0x8c, 0x86, 0x36, 0x28, 0x06, 0x64, 0xd7, 0x38, 0x34, 0xe0, 0xad, 0x85, 0xb1, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x47, 0x35, 0xb4, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x57, 0x26, 0xe2, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x25, 0x0d, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfe, 0xa5, 0xa1, 0x0d, 0x6f, 0xeb, 0x1c, 0xbc, 0x32, 0x11, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6c, 0xa7, 0xa1, 0x83, 0x82, 0x22, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd4, 0xa8, 0xa1, 0x83, 0x82, 0x22, 0xb3, 0xc3, 0x29, 0xb6, 0x06, 0x8f, 0xa4, 0x13, 0xd9, 0xf0, 0x3c, 0xc9, 0x06, 0x4f, 0x17, 0xb2, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x24, 0x9d, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5f, 0xd6, 0xd0, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x57, 0xd7, 0xd0, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x9e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xff, 0x6b, 0x68, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x4f, 0xdc, 0x1a, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xfe, 0x6c, 0x68, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0xa1, 0x7d, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x56, 0x36, 0x74, 0x10, 0xa6, 0x63, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xc4, 0x36, 0xb4, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xb7, 0x5c, 0x1d, 0x5b, 0xd9, 0x1c, 0x88, 0xd9, 0x9b, 0x1c, 0xc8, 0x99, 0xdc, 0x5b, 0x1d, 0xdc, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x76, 0x1b, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xdb, 0xd4, 0x86, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xb6, 0x1b, 0xda, 0xf0, 0xe7, 0xd2, 0x80, 0x27, 0x57, 0x37, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xd1, 0x0d, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xe9, 0x0d, 0x1d, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xfa, 0x0d, 0x1d, 0x3c, 0x0a, 0x2f, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x98, 0xc1, 0xa1, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x86, 0x38, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xe5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe6, 0xc2, 0xa1, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x23, 0x64, 0xef, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf6, 0xc7, 0xa1, 0x0d, 0x7f, 0x2e, 0x0d, 0x7e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x35, 0x0e, 0x1d, 0x3c, 0xb8, 0x16, 0xaf, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xca, 0x72, 0x68, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xe0, 0xca, 0xe4, 0xda, 0xd2, 0xe6, 0xe6, 0xd2, 0xde, 0xdc, 0x40, 0xce, 0xe4, 0xde, 0xea, 0xe0, 0xe6, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3b, 0xe6, 0xd0, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xde, 0x47, 0x39, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3b, 0xe8, 0xd0, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb1, 0x32, 0x7d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xcb, 0x73, 0x68, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x8f, 0x74, 0xe8, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x35, 0x75, 0xe8, 0xe0, 0xa8, 0x0d, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa3, 0xeb, 0xd0, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0xc9, 0x28, 0x41, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xcc, 0x0e, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xdf, 0x16, 0x26, 0xb7, 0x06, 0xd2, 0xf6, 0x56, 0xe7, 0x46, 0x07, 0x42, 0x96, 0x26, 0x47, 0x97, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x6b, 0x87, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0xf4, 0x90, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x7b, 0x87, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xb1, 0x3b, 0x74, 0x70, 0xde, 0x3c, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x66, 0xe1, 0xa1, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xed, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0x40, 0xea, 0xe0, 0xc8, 0xc2, 0xe8, 0xca, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5a, 0xf1, 0xd0, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x1a, 0x74, 0xb1, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xad, 0x79, 0x68, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0xca, 0x43, 0x07, 0xe7, 0xcd, 0xd3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0xa7, 0x87, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x15, 0x3d, 0xb4, 0xe1, 0xdf, 0xf9, 0x05, 0xfc, 0xb6, 0x37, 0xb2, 0xb2, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x30, 0x7b, 0x68, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xbf, 0xb6, 0xb7, 0x3a, 0x37, 0x3a, 0x10, 0xb8, 0xb7, 0x34, 0x37, 0xba, 0xb9, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xc1, 0x3d, 0xb4, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xb7, 0x5e, 0x0f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x41, 0x3e, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc4, 0xf0, 0xa1, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd4, 0xf3, 0xa1, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x99, 0x7d, 0xe8, 0xe0, 0xbc, 0x79, 0x5a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xca, 0x0f, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x4b, 0x58, 0x5b, 0xd9, 0x1c, 0x48, 0x5b, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0x19, 0x08, 0x8a, 0x5b, 0x4a, 0xd8, 0xd8, 0xda, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xa9, 0x1f, 0x3a, 0x58, 0x85, 0x12, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe8, 0xfe, 0xd0, 0x86, 0x3f, 0x97, 0x06, 0x78, 0xca, 0xe4, 0xe4, 0xde, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x86, 0xfc, 0xa1, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x98, 0xff, 0xa1, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xba, 0x01, 0xa2, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0xa3, 0xf4, 0xf1, 0x3a, 0x78, 0x27, 0x72, 0x5d, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x9d, 0x40, 0xb4, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x5f, 0x5b, 0x99, 0xdc, 0x59, 0x19, 0x88, 0x5c, 0xd9, 0x5c, 0x1d, 0x1b, 0xdd, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x63, 0x20, 0x3a, 0x78, 0x12, 0x7a, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x79, 0x14, 0x44, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x8f, 0x20, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xc0, 0x20, 0x3a, 0x58, 0x05, 0x99, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x30, 0x07, 0xd1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe4, 0x07, 0xd1, 0x41, 0x89, 0xf8, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x14, 0x09, 0xd1, 0xc1, 0x19, 0x09, 0xb5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x50, 0x88, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0x55, 0x88, 0x0e, 0x4a, 0x6f, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x5e, 0x88, 0x0e, 0xd6, 0x6b, 0x3d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x37, 0x43, 0x74, 0xd0, 0xa0, 0x78, 0x60, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x38, 0x0e, 0xd1, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7c, 0x90, 0x95, 0xb1, 0x95, 0xd1, 0x95, 0x81, 0xb4, 0xbd, 0xd5, 0xb9, 0xd1, 0x81, 0xc0, 0xbd, 0xa5, 0xb9, 0xd1, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xbe, 0x1d, 0xa2, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0x87, 0x28, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xbc, 0x21, 0xa2, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x03, 0x11, 0x1d, 0x9c, 0x37, 0x4f, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xeb, 0x88, 0x68, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x7e, 0xdc, 0xde, 0xc8, 0xca, 0x40, 0xe4, 0x56, 0xee, 0x40, 0xe0, 0xca, 0xe4, 0xda, 0xd2, 0xe6, 0xe6, 0xd2, 0xde, 0xdc, 0xe6, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7d, 0x12, 0xd1, 0x41, 0x1b, 0x22, 0x9d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x46, 0x11, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x93, 0x2b, 0x23, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0b, 0x9e, 0x88, 0x36, 0xfc, 0x3b, 0xbf, 0x80, 0x4f, 0x96, 0x36, 0x46, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x71, 0x59, 0x44, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xb9, 0x6f, 0xdc, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6e, 0x2b, 0xa2, 0x83, 0x27, 0xb4, 0xe4, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7b, 0x17, 0xd1, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x1e, 0x61, 0x70, 0x70, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x11, 0x8c, 0x68, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xcf, 0x2a, 0x09, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x11, 0x8d, 0x68, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf5, 0x65, 0x44, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x19, 0x6c, 0x44, 0x07, 0xab, 0x20, 0x93, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x83, 0x23, 0xda, 0xf0, 0xef, 0xfc, 0x1a, 0xde, 0xb8, 0x6b, 0x0d, 0x9e, 0x55, 0x12, 0x54, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xd2, 0x11, 0x6d, 0xf8, 0x77, 0x7e, 0x01, 0xff, 0x2e, 0xcc, 0xae, 0xec, 0xe0, 0x99, 0x3f, 0x79, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x93, 0x1e, 0xd1, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x06, 0x4f, 0xcb, 0xc0, 0x6a, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xf3, 0x11, 0x1d, 0x3c, 0x01, 0xbc, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x72, 0x42, 0xa2, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x09, 0x12, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0xde, 0x0c, 0x86, 0x57, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x91, 0x48, 0xb4, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x5f, 0x5b, 0x98, 0x5b, 0x1e, 0xc8, 0x18, 0x5a, 0x98, 0xdb, 0x59, 0xd9, 0xdc, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x5d, 0x24, 0x3a, 0x78, 0xaa, 0x75, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0x93, 0x44, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x8a, 0x24, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x96, 0x44, 0x07, 0xa7, 0xb4, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x3d, 0x89, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xc4, 0x49, 0x74, 0x70, 0xe4, 0x6b, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xca, 0x53, 0xa2, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x93, 0x12, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xac, 0x12, 0x1d, 0x94, 0x88, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xbd, 0x12, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0xc9, 0x12, 0x1d, 0x94, 0xde, 0xf4, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xda, 0x12, 0x1d, 0x3c, 0x87, 0xf2, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x14, 0x5d, 0xa2, 0x83, 0x33, 0x12, 0x6a, 0xd5, 0x0a, 0xf8, 0x75, 0x6e, 0x63, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xab, 0xcc, 0xf2, 0x1a, 0xc0, 0x6b, 0x0c, 0x2d, 0xcc, 0xed, 0xac, 0x0c, 0x04, 0x2e, 0x4c, 0x8e, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd8, 0x97, 0x68, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x10, 0x85, 0x64, 0x20, 0x43, 0x14, 0xf2, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x86, 0x28, 0x64, 0x07, 0xcf, 0x6f, 0xcb, 0x3b, 0x38, 0xb6, 0x0e, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x08, 0x13, 0x6d, 0xf8, 0xa8, 0x7d, 0x83, 0xa0, 0xfd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xc4, 0x98, 0x68, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x9f, 0xb9, 0xb5, 0x34, 0xb8, 0xad, 0xb1, 0x37, 0xb8, 0xbc, 0xae, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x8c, 0x4c, 0x74, 0x10, 0xb0, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x3b, 0x13, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x8e, 0x99, 0xe8, 0xa0, 0xcc, 0xd2, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x68, 0x69, 0xa2, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xe1, 0x40, 0x5a, 0x7c, 0x40, 0xe2, 0xb6, 0xc6, 0xd0, 0xea, 0xdc, 0xd6, 0xba, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5b, 0x35, 0xd1, 0x41, 0x18, 0x01, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xbb, 0x4d, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x92, 0x6c, 0xa2, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9e, 0x6f, 0xa2, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x6f, 0x9c, 0xe8, 0xe0, 0xd0, 0x69, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0xea, 0x44, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x3e, 0x27, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x6f, 0x27, 0x3a, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0xe4, 0x89, 0x0e, 0x0e, 0x9d, 0x96, 0xd5, 0xe1, 0x14, 0x5b, 0xc0, 0xaf, 0x93, 0x3b, 0x2b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0xed, 0x89, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x62, 0x4b, 0x9b, 0xa3, 0x03, 0x19, 0x43, 0x0b, 0x73, 0x3b, 0x2b, 0xdb, 0xa0, 0x50, 0xee, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x44, 0x61, 0x30, 0x90, 0x25, 0x0a, 0xb3, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x28, 0x4c, 0x0e, 0x5e, 0x75, 0x99, 0x77, 0x70, 0x6c, 0x1d, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xcf, 0x27, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xcd, 0xfc, 0x44, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x43, 0x40, 0xd1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x1e, 0x28, 0xda, 0xf0, 0xb6, 0xce, 0x06, 0xaf, 0x32, 0xcb, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x44, 0x84, 0xa2, 0xc3, 0xd3, 0x3a, 0x35, 0x0b, 0xf8, 0x6e, 0x6f, 0x72, 0xe9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xd7, 0x8f, 0xe6, 0x35, 0x00, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xaf, 0x1f, 0xcd, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x6a, 0x28, 0xda, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x82, 0x28, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x21, 0x2b, 0x63, 0xa3, 0x0b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe5, 0x12, 0x45, 0x07, 0x01, 0x1b, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x48, 0x46, 0xd1, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0x2d, 0x8a, 0x36, 0xfc, 0x3b, 0xbf, 0x80, 0x3f, 0xf7, 0x26, 0x16, 0x56, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x75, 0x14, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0xb0, 0x85, 0x89, 0x95, 0xb1, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf4, 0x8f, 0xa2, 0x83, 0x30, 0x02, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xc5, 0xa4, 0x68, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa1, 0x23, 0x45, 0x07, 0xe7, 0xcd, 0xd3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x59, 0x8a, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xa0, 0x52, 0xb4, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x03, 0x53, 0x74, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x47, 0x53, 0xb4, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0xfe, 0xb4, 0x4b, 0x55, 0xab, 0xc1, 0x4b, 0x8e, 0x42, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x5e, 0x72, 0x14, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xa5, 0x53, 0xb4, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x17, 0x5c, 0x18, 0x1d, 0x1a, 0x08, 0x9c, 0x5c, 0x99, 0x59, 0x1a, 0xde, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xfc, 0x29, 0xda, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3d, 0x4f, 0xd1, 0x41, 0xdb, 0xd6, 0xe3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x17, 0x15, 0x6d, 0xf8, 0x73, 0x69, 0xf0, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x6d, 0xa8, 0xe8, 0xe0, 0x51, 0x78, 0x21, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x34, 0x15, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x4f, 0xa9, 0xe8, 0xe0, 0xad, 0x7a, 0x21, 0xcd, 0x1a, 0x3c, 0x25, 0xca, 0x68, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0x53, 0xa2, 0x8c, 0x1a, 0x80, 0x17, 0x38, 0xb9, 0xb7, 0xb1, 0xb2, 0xb9, 0xb9, 0x32, 0x32, 0x90, 0xb6, 0x30, 0xb9, 0x35, 0x90, 0xb1, 0x37, 0xb9, 0xb2, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xa7, 0x44, 0x19, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x49, 0x15, 0x6d, 0x10, 0x40, 0x67, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x55, 0x45, 0x1b, 0x24, 0x2d, 0x18, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x5f, 0x15, 0x6d, 0x50, 0x96, 0x61, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xb0, 0x90, 0x0c, 0xe4, 0xc1, 0xc2, 0x62, 0xc3, 0x9f, 0x4b, 0x1b, 0xac, 0x52, 0xff, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x58, 0x48, 0x0f, 0xde, 0x2e, 0x9e, 0x77, 0xd0, 0xec, 0x76, 0xd4, 0x2c, 0xb3, 0x06, 0x6f, 0x52, 0xbe, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xd9, 0x2a, 0xda, 0x60, 0x71, 0x61, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x05, 0x5e, 0x45, 0x1b, 0xfe, 0x5c, 0xda, 0x20, 0xa1, 0x42, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x12, 0xac, 0x68, 0x83, 0x00, 0x3a, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x19, 0x2b, 0x3a, 0x58, 0x26, 0x3f, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x62, 0x56, 0xb4, 0x41, 0x21, 0x98, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xb0, 0x30, 0x3e, 0x78, 0xd5, 0x59, 0xd1, 0x41, 0xb3, 0xdb, 0x51, 0xab, 0x41, 0x5a, 0x19, 0xcb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x64, 0x5a, 0xd1, 0x06, 0x8b, 0x0b, 0x93, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x58, 0xc8, 0x06, 0x92, 0x61, 0xa1, 0x7c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x2c, 0x84, 0x03, 0xc9, 0xb0, 0xd0, 0xb1, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x86, 0x85, 0xf8, 0xe0, 0x45, 0xfa, 0x79, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x61, 0x21, 0x1f, 0x48, 0x86, 0x85, 0xcd, 0x41, 0xdb, 0xd6, 0xe3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x2c, 0x8c, 0x06, 0x92, 0x61, 0x61, 0x78, 0xf0, 0x28, 0xbc, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x19, 0x16, 0x96, 0x03, 0xc9, 0xb0, 0x50, 0xb1, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0xa4, 0x7c, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xb0, 0x30, 0x3f, 0x78, 0x69, 0x81, 0xde, 0x41, 0xb3, 0xdb, 0x51, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xb0, 0x50, 0x32, 0x90, 0x0c, 0x0b, 0xdd, 0x1b, 0xfe, 0x5c, 0x1a, 0x5c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x58, 0xa8, 0x39, 0x78, 0xf5, 0x82, 0xde, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x58, 0xe8, 0x19, 0x48, 0x86, 0x85, 0xae, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x58, 0x28, 0x1b, 0x48, 0x86, 0x85, 0xc2, 0x83, 0x47, 0xe1, 0x85, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xb0, 0xd0, 0x38, 0x90, 0x0c, 0x0b, 0xd5, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x4d, 0xca, 0x77, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0c, 0x0b, 0xb5, 0x07, 0xaf, 0xba, 0xd0, 0x3b, 0x68, 0x76, 0x3b, 0xaa, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0xdb, 0x8a, 0x36, 0x28, 0x04, 0x53, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1b, 0x16, 0x82, 0x83, 0xa7, 0xaa, 0x15, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x36, 0x2c, 0x24, 0x03, 0xd9, 0xb0, 0x90, 0x1e, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x36, 0x2c, 0xc4, 0x03, 0xd9, 0xb0, 0x30, 0x39, 0x68, 0x76, 0x3b, 0xaa, 0x59, 0x83, 0xb7, 0xfc, 0xda, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xc2, 0x15, 0x6d, 0x50, 0x08, 0xa6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x26, 0x2c, 0x0c, 0x0e, 0xde, 0x1c, 0x57, 0x74, 0xf0, 0xbe, 0x0d, 0x91, 0xc3, 0x29, 0xb6, 0x06, 0x0f, 0xf3, 0xbf, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x9c, 0x2b, 0xda, 0x60, 0x71, 0x61, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0e, 0x0b, 0x93, 0x81, 0x74, 0x58, 0xd8, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0x37, 0x29, 0xdf, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3a, 0x2c, 0xec, 0x0e, 0x1e, 0xf4, 0xa2, 0x77, 0xd0, 0xec, 0x76, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xbd, 0x5d, 0xd1, 0xc1, 0x32, 0xf9, 0xe1, 0xd5, 0xe0, 0xcd, 0x5a, 0x4a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x25, 0x7a, 0x45, 0x1b, 0x2c, 0x2e, 0x4c, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x61, 0x61, 0x32, 0x90, 0x0f, 0x0b, 0xb3, 0x83, 0xe5, 0xb0, 0xd8, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x55, 0x7d, 0x45, 0x07, 0xcb, 0xe4, 0x87, 0x67, 0x0d, 0xce, 0x30, 0x92, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0x80, 0x45, 0x1b, 0x2c, 0x2e, 0x4c, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x61, 0x61, 0x32, 0x90, 0x0a, 0x0b, 0x0d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x61, 0x61, 0x33, 0x90, 0x0a, 0x0b, 0xcb, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2a, 0x2c, 0xac, 0x0e, 0x5e, 0x2d, 0xa4, 0x77, 0xd0, 0xec, 0x76, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0a, 0x0b, 0xd3, 0x81, 0x54, 0x58, 0x28, 0xd8, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xc2, 0xc2, 0xf8, 0xe0, 0xa1, 0x48, 0x7a, 0x07, 0xcd, 0x6e, 0x47, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x3f, 0x58, 0xb4, 0x41, 0x21, 0x98, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xb0, 0xd0, 0x71, 0xf0, 0x8e, 0xc2, 0xa2, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x85, 0x85, 0x92, 0x81, 0x54, 0x58, 0x28, 0x3a, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x58, 0x68, 0x1a, 0x48, 0x85, 0x85, 0xd2, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x85, 0x85, 0xaa, 0x81, 0x54, 0x58, 0xa8, 0x3b, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x58, 0xe8, 0x1b, 0x48, 0x85, 0x85, 0xce, 0x83, 0x66, 0xb7, 0xa3, 0xea, 0x70, 0x8a, 0x75, 0x38, 0xc5, 0x66, 0x0d, 0x9e, 0x70, 0x9b, 0xb5, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0x09, 0xb7, 0x59, 0x0d, 0xc0, 0x8f, 0x5c, 0xd9, 0xdc, 0x1b, 0x9b, 0x5d, 0x19, 0x19, 0x08, 0x5c, 0x99, 0x5c, 0x5b, 0xda, 0xdc, 0x5c, 0xda, 0x9b, 0xdb, 0xdc, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x13, 0x6e, 0xb3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x13, 0x8b, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb1, 0x63, 0xd1, 0x86, 0x3f, 0x97, 0x36, 0x34, 0x3f, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x61, 0x2c, 0xda, 0x20, 0xd8, 0x4c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x97, 0x2c, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xdb, 0x21, 0x8b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xbc, 0x2c, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xcb, 0x0e, 0x8b, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf5, 0xb3, 0x68, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x1d, 0xda, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xd1, 0x59, 0xb4, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x33, 0x5a, 0x74, 0x50, 0x7a, 0xd3, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x78, 0x5a, 0xb4, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xa4, 0x5a, 0x74, 0x50, 0x22, 0xbe, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xe9, 0x5a, 0x74, 0xd0, 0xb6, 0xf5, 0x78, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xc9, 0x16, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xd4, 0x16, 0x1d, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xe9, 0x16, 0x1d, 0x1c, 0xb5, 0x41, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xf4, 0x2d, 0x3a, 0x78, 0x7f, 0x32, 0x5e, 0x75, 0x38, 0xc5, 0x5a, 0xc0, 0x27, 0x7b, 0x6b, 0x7b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0xf4, 0x4f, 0xaf, 0x01, 0x3c, 0xe1, 0xe4, 0xde, 0xd4, 0xca, 0xc6, 0xe8, 0x40, 0xe6, 0xe8, 0xc2, 0xe8, 0xca, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0xfa, 0xa7, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x42, 0x5c, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x92, 0x8b, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf8, 0xe8, 0xde, 0xe0, 0x40, 0xd2, 0xc8, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xb1, 0x95, 0xd1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa1, 0xc6, 0x45, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0xd0, 0x45, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0x8e, 0xa1, 0x85, 0xb9, 0x9d, 0x95, 0xcd, 0x81, 0x88, 0xe5, 0x81, 0xa4, 0x91, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xe5, 0xbd, 0xa1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0xcd, 0x45, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0xd3, 0x45, 0x07, 0x25, 0x62, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x25, 0xd9, 0x45, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x49, 0xdd, 0x45, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0xf7, 0x33, 0x2d, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x92, 0x17, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0xb1, 0x85, 0x89, 0x95, 0xb1, 0xcd, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x63, 0x0b, 0x13, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0xc4, 0x8b, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0xd0, 0x8b, 0x0e, 0x4a, 0xc4, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0xda, 0x8b, 0x0e, 0xce, 0x9b, 0xa7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xc9, 0x17, 0x1d, 0x94, 0x59, 0xba, 0xb5, 0x02, 0xbe, 0x5c, 0x9a, 0x99, 0xb9, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xb6, 0x51, 0xbd, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x24, 0xfc, 0xa2, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xe5, 0xca, 0xe2, 0xea, 0xca, 0xe6, 0xe8, 0x56, 0xc8, 0xca, 0xe6, 0xd2, 0xe6, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5d, 0x7f, 0xd1, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0xf5, 0x8b, 0x0e, 0x1e, 0x85, 0x17, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1f, 0x81, 0xd1, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x03, 0x8c, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x10, 0x8c, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0x18, 0x8c, 0x36, 0xfc, 0x3b, 0xbf, 0x80, 0x2f, 0x17, 0x66, 0x57, 0x56, 0xad, 0x06, 0x8f, 0x63, 0x72, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0x38, 0x26, 0xb7, 0x06, 0xf0, 0x32, 0x7b, 0x93, 0x23, 0x03, 0x91, 0x2b, 0x9b, 0xab, 0x63, 0xa3, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x1c, 0x93, 0xdb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x99, 0x84, 0xd1, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8a, 0x85, 0xd1, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xc5, 0x30, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xeb, 0xc2, 0x42, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x05, 0x31, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0xaf, 0x0b, 0x0b, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xf1, 0x30, 0x3a, 0x78, 0x2f, 0x02, 0x49, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x98, 0x18, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x64, 0x14, 0xa3, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xac, 0xd4, 0x70, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x18, 0xc6, 0x68, 0xc3, 0x9f, 0x4b, 0x1b, 0xac, 0xd4, 0x70, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x71, 0x31, 0x3a, 0x68, 0x76, 0x3b, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0x6c, 0x8c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3c, 0x8e, 0xd1, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xde, 0x4b, 0x15, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3c, 0x90, 0xd1, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb2, 0x34, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xcb, 0xc7, 0x68, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x90, 0xc8, 0xe8, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x35, 0xc9, 0xe8, 0xe0, 0xa8, 0x0d, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x74, 0x93, 0xd1, 0x41, 0xb3, 0xdb, 0x51, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xbf, 0x94, 0xd1, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xac, 0x32, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x53, 0xa2, 0x8c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xec, 0x32, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x4f, 0x89, 0x32, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xd7, 0x32, 0xda, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0x25, 0xca, 0xa8, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x45, 0xcc, 0x68, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x93, 0x19, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x7d, 0x10, 0x46, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xb3, 0x19, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xf7, 0x41, 0x18, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0xa9, 0x19, 0x6d, 0xf8, 0x77, 0x7e, 0x83, 0xd7, 0x41, 0x18, 0x55, 0xb3, 0x06, 0xc9, 0x43, 0xc2, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xc9, 0x43, 0xc2, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x41, 0x73, 0x46, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xbb, 0xbd, 0x91, 0x95, 0x81, 0xc0, 0x95, 0xc9, 0xb5, 0xa5, 0xcd, 0xcd, 0xa5, 0xbd, 0xb9, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x38, 0x3c, 0xa3, 0x0d, 0x7f, 0x2e, 0x6d, 0x68, 0x7e, 0xb0, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x5d, 0x67, 0xb4, 0x41, 0xb0, 0x99, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xbc, 0x67, 0x74, 0xf0, 0x28, 0x35, 0xbd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xfd, 0x8c, 0x0e, 0x1e, 0xcd, 0xa6, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0x85, 0x46, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xee, 0xd0, 0xde, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x62, 0x41, 0xa3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x78, 0x44, 0xa3, 0x83, 0x12, 0xf1, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9e, 0x46, 0xa3, 0x0d, 0xff, 0xce, 0x6f, 0xf0, 0xfc, 0x7b, 0x8c, 0x6a, 0x35, 0x58, 0x61, 0x78, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0x60, 0x85, 0xe1, 0x71, 0x03, 0x78, 0xb6, 0xd5, 0xc9, 0x91, 0x95, 0xc9, 0x81, 0xdc, 0x95, 0x85, 0xc1, 0xbd, 0xb9, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0x30, 0x3c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x9b, 0x34, 0xda, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xba, 0x34, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x73, 0x0e, 0xae, 0x6c, 0x2c, 0xcd, 0x2c, 0x6d, 0x0c, 0x84, 0xed, 0x4d, 0xac, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x67, 0x1a, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x89, 0x95, 0x46, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x87, 0x1a, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x27, 0x56, 0x1a, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x7d, 0x1a, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0x9e, 0x58, 0x69, 0x54, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x6e, 0x6a, 0xb4, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x7f, 0x18, 0x1b, 0x1b, 0xc8, 0x5c, 0x98, 0x59, 0x19, 0x08, 0x5d, 0x98, 0xdc, 0x59, 0x19, 0xdd, 0xdc, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x4c, 0x35, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xa1, 0x21, 0xb0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xbd, 0xab, 0xd1, 0x41, 0x08, 0x3e, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd0, 0xac, 0xd1, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xde, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xbb, 0xd6, 0x68, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x4b, 0x73, 0x6e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xda, 0x35, 0x3a, 0x08, 0xc1, 0x87, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xfc, 0x35, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x7f, 0xae, 0x8c, 0x0e, 0x84, 0xac, 0xcc, 0x2c, 0xac, 0x8e, 0x8d, 0x0e, 0xc4, 0xed, 0x4d, 0xae, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x08, 0x1b, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0xb1, 0x18, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x94, 0x8d, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xd3, 0xd7, 0xe3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xad, 0xc7, 0x46, 0x07, 0x6d, 0x5b, 0x8f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x15, 0x6d, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0x8c, 0x17, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xec, 0x6c, 0x74, 0xf0, 0x28, 0xbc, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0xb0, 0x8d, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0x63, 0x31, 0x98, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd5, 0xd5, 0x46, 0x1b, 0xfe, 0x9d, 0xdf, 0xa0, 0xa9, 0x18, 0xcc, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xce, 0xdb, 0x68, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xef, 0xb9, 0x32, 0x3a, 0x90, 0xb1, 0xb7, 0xb6, 0xb6, 0x34, 0x3a, 0x10, 0xb7, 0x37, 0xb9, 0xb6, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x10, 0x6e, 0xb4, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x77, 0x72, 0x1b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x91, 0x6e, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0x9a, 0xbe, 0x1e, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x34, 0x37, 0x3a, 0x68, 0xdb, 0x7a, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc6, 0x77, 0xa3, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x66, 0xbc, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7e, 0x76, 0xa3, 0x83, 0x47, 0xe1, 0x85, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x60, 0x6f, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0xcf, 0xb4, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x37, 0x6f, 0x74, 0xf0, 0xd2, 0x4b, 0xbd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0xfb, 0x8d, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0x63, 0x31, 0x98, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0xfb, 0x46, 0x07, 0x2f, 0xaa, 0xd9, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd2, 0x80, 0xa3, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x30, 0x2b, 0xa3, 0x1b, 0x43, 0x03, 0x99, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0x03, 0x11, 0x63, 0x7b, 0x13, 0x9b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x41, 0x04, 0x47, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x44, 0xa4, 0xd1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0x0c, 0x47, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xe9, 0xeb, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe6, 0x84, 0xa3, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x96, 0x38, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x6f, 0xc6, 0x0b, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x82, 0x38, 0x3a, 0x78, 0x14, 0x5e, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x51, 0x19, 0x47, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0x3d, 0xdb, 0xd0, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5e, 0x8b, 0xa3, 0x0d, 0xff, 0xce, 0x6f, 0xd0, 0xd2, 0x8f, 0x68, 0xb5, 0x1a, 0xb4, 0x3a, 0xe1, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xa0, 0xd5, 0x09, 0xd7, 0x06, 0xe0, 0x45, 0xae, 0x6c, 0x0e, 0xee, 0xcd, 0x6d, 0xae, 0x0c, 0x84, 0xee, 0x0d, 0x44, 0xae, 0x2c, 0xae, 0xae, 0x6c, 0x8e, 0x6e, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xa0, 0xd5, 0x09, 0xd7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfe, 0x8f, 0xa3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x50, 0x72, 0xb4, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1f, 0x63, 0x6c, 0x61, 0x64, 0x65, 0x20, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x62, 0x6f, 0x6f, 0x6b, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x13, 0x39, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0x2a, 0x47, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x3d, 0x39, 0x3a, 0x78, 0x0e, 0xe5, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x29, 0x32, 0x47, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x7c, 0x39, 0x3a, 0x78, 0xab, 0x5e, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x25, 0x3a, 0x47, 0x1b, 0xfe, 0x5c, 0x1a, 0x5c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xbc, 0x39, 0x3a, 0x78, 0x14, 0x5e, 0x48, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x05, 0x1d, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x6c, 0xd0, 0x7e, 0xf9, 0x78, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xf6, 0x39, 0x3a, 0x38, 0x23, 0xa1, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x85, 0x74, 0xb4, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x73, 0x70, 0x2c, 0x8d, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x75, 0xd1, 0xd1, 0xc1, 0x7b, 0x11, 0x48, 0x9a, 0x35, 0x78, 0xea, 0xca, 0xd2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xa7, 0xae, 0x2c, 0x35, 0xc0, 0x37, 0xf6, 0xd6, 0xd6, 0x96, 0x46, 0xb7, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xd4, 0x95, 0xa5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0e, 0xa7, 0xa3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x32, 0x75, 0xb4, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xc0, 0x0b, 0x17, 0x26, 0x57, 0xe6, 0x46, 0x37, 0xb7, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4a, 0xa8, 0xa3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5a, 0xab, 0xa3, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x5e, 0xeb, 0xe8, 0xe0, 0xa5, 0x97, 0x7a, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x20, 0x76, 0xb4, 0xe1, 0x89, 0xf7, 0x0d, 0x16, 0x62, 0x71, 0x6f, 0xf8, 0x73, 0x69, 0xf0, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xee, 0xeb, 0x68, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb2, 0xec, 0xe8, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x3b, 0xed, 0xe8, 0xe0, 0x8c, 0x84, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x56, 0xdb, 0xd1, 0xc1, 0x1b, 0x21, 0xf6, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x8b, 0xee, 0x68, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xdf, 0xb9, 0x32, 0x36, 0xb3, 0x16, 0xb9, 0x32, 0xb3, 0x32, 0xb9, 0x32, 0xb7, 0xb1, 0xb2, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xc7, 0x1d, 0x1d, 0xbc, 0xf4, 0x52, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb4, 0xbd, 0xa3, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x83, 0x84, 0x27, 0xd1, 0x0d, 0x7f, 0x2e, 0x0d, 0x4e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xe3, 0x1d, 0x1d, 0x1c, 0xf9, 0x5a, 0x5b, 0x01, 0x3f, 0xef, 0x6d, 0x2d, 0xdd, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xea, 0xe9, 0xde, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x96, 0xe0, 0xd1, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0xc1, 0x6b, 0x0c, 0xf7, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x0b, 0x8f, 0x0e, 0x56, 0x41, 0x26, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xa3, 0x78, 0xb4, 0xe1, 0xdf, 0xf9, 0x05, 0xfc, 0xbc, 0xba, 0xb5, 0xb4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x71, 0x3c, 0xda, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0x75, 0x65, 0xa9, 0x3a, 0x9c, 0x62, 0xd5, 0x1a, 0xbc, 0x96, 0xf2, 0x6e, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0x6b, 0x29, 0xef, 0x1a, 0xc0, 0x6f, 0x8c, 0x2d, 0x2c, 0x0f, 0x64, 0xae, 0x4e, 0xac, 0xed, 0x8d, 0xac, 0x6c, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xb5, 0x94, 0x77, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0x93, 0x47, 0x1b, 0x04, 0x9b, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x21, 0x97, 0x47, 0x07, 0x29, 0x5b, 0x4c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x70, 0x1e, 0x1d, 0xac, 0x14, 0x47, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x27, 0xf4, 0xe8, 0x60, 0xed, 0xcc, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x59, 0xa6, 0x47, 0x07, 0xe7, 0xdc, 0x94, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0x56, 0x8f, 0x0e, 0x5e, 0x53, 0x10, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x36, 0xec, 0xd1, 0xc1, 0x51, 0xdf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x20, 0xdb, 0xa3, 0x83, 0x33, 0xa7, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa9, 0xbb, 0x47, 0x07, 0xc7, 0x62, 0xd7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x82, 0x8f, 0x0e, 0x16, 0x26, 0xf7, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x70, 0x7c, 0x74, 0xb0, 0x24, 0x26, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4e, 0xe6, 0xa3, 0x83, 0xd3, 0x8f, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x11, 0xd2, 0x47, 0x07, 0x09, 0x61, 0x46, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x5f, 0x1f, 0x1d, 0xac, 0x4b, 0x52, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb9, 0xfb, 0xe8, 0x60, 0x69, 0xb5, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb1, 0xe3, 0x47, 0x07, 0xab, 0x7a, 0x13, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x4c, 0x3f, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0x78, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x91, 0xfb, 0xd1, 0x41, 0x62, 0x9b, 0x51, 0xb3, 0x06, 0xef, 0x67, 0x5a, 0xda, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x3f, 0xd3, 0xd2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x17, 0xfd, 0xd1, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7f, 0x5e, 0xd8, 0x5a, 0x1a, 0x88, 0x5c, 0x99, 0xd9, 0xc1, 0x7b, 0xbf, 0x42, 0x0e, 0xa7, 0xd8, 0x1a, 0x3c, 0x00, 0x1f, 0x63, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x01, 0xf8, 0x18, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd9, 0xf9, 0x47, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x31, 0x87, 0x96, 0x06, 0x07, 0xf2, 0x26, 0x07, 0xe2, 0x16, 0xd6, 0x56, 0x46, 0x06, 0x32, 0x26, 0x57, 0x76, 0xb7, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xd6, 0x7f, 0x74, 0xb0, 0x0a, 0x32, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xda, 0x00, 0xa4, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x30, 0x40, 0x3a, 0x38, 0x6a, 0x83, 0x36, 0x6b, 0xf0, 0x32, 0xda, 0xbc, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x97, 0xd1, 0xe6, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x2f, 0x20, 0x6d, 0x78, 0xe2, 0x7d, 0x83, 0x97, 0xb6, 0xe6, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x3e, 0x20, 0x1d, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa1, 0x15, 0x48, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x59, 0x03, 0x69, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x3d, 0x18, 0x48, 0x07, 0x67, 0x24, 0xd4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0x43, 0x90, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xf4, 0x81, 0xb4, 0xe1, 0xdf, 0xf9, 0x05, 0xfc, 0xb6, 0xb4, 0xb9, 0xb7, 0x6a, 0x35, 0x78, 0xec, 0x38, 0xde, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x63, 0xc7, 0xf1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x51, 0x90, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x2d, 0xc3, 0xa3, 0x2b, 0x93, 0x73, 0x0b, 0x63, 0x03, 0x31, 0x4b, 0x63, 0x2b, 0x9b, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x62, 0x41, 0x3a, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0x63, 0x90, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x09, 0x0d, 0xd2, 0xc1, 0x19, 0x09, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x04, 0x1c, 0xa4, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xce, 0x1d, 0xa4, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf0, 0x1f, 0xa4, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0xd3, 0xb3, 0xe5, 0xaa, 0x9a, 0x05, 0x7c, 0x33, 0xb6, 0xb7, 0x7b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0x23, 0x15, 0xf8, 0x1a, 0x80, 0x87, 0x33, 0xb6, 0x37, 0xb1, 0x30, 0x36, 0x10, 0xb3, 0x37, 0x39, 0x32, 0x90, 0xb1, 0xb0, 0x31, 0xb4, 0x72, 0x25, 0x00, 0xef, 0xa5, 0xca, 0xcc, 0xc6, 0xde, 0xea, 0xdc, 0xe8, 0x40, 0xd2, 0xdc, 0xc6, 0xd8, 0xea, 0xc8, 0xca, 0xe6, 0x40, 0xe4, 0xca, 0xcc, 0xca, 0xe4, 0xca, 0xdc, 0xc6, 0xca, 0xe6, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x40, 0xde, 0xe8, 0xd0, 0xca, 0xe4, 0x40, 0xd2, 0xe8, 0xca, 0xda, 0xe6, 0x40, 0xd2, 0xdc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xc6, 0xc2, 0xc6, 0xd0, 0xca, 0x58, 0x40, 0xc2, 0xdc, 0xc8, 0x25, 0x80, 0x3f, 0x33, 0xb9, 0xb7, 0x36, 0x90, 0x39, 0xb8, 0x34, 0x36, 0xb6, 0x39, 0x90, 0x34, 0x37, 0x90, 0xb2, 0xb0, 0x31, 0x34, 0x10, 0xb2, 0xb2, 0xb9, 0xb5, 0x95, 0x00, 0xf8, 0x80, 0x0a, 0x2d, 0x6d, 0x0e, 0x24, 0x6d, 0x0e, 0xe4, 0x0d, 0x8e, 0x2e, 0xad, 0x2d, 0x4d, 0xaf, 0x8c, 0x0c, 0xc4, 0xec, 0x4d, 0x0e, 0xa4, 0x2d, 0xcd, 0x2d, 0xad, 0x2d, 0x4d, 0x2f, 0xcd, 0xed, 0x0c, 0x84, 0x0e, 0xad, 0x0c, 0xc4, 0xad, 0xae, 0x4d, 0xac, 0x4c, 0x0e, 0xe4, 0xcd, 0x0c, 0x44, 0xae, 0x4c, 0xac, 0x2e, 0x8d, 0x8d, 0x6c, 0x8e, 0x05, 0x24, 0xcc, 0x8d, 0x0c, 0xe4, 0x2c, 0xcd, 0xae, 0xcc, 0x5d, 0x02, 0xe0, 0x03, 0x3a, 0xb4, 0x30, 0x3a, 0x16, 0x90, 0xb6, 0x34, 0xb7, 0xb4, 0xb6, 0x34, 0xbd, 0x34, 0xb7, 0x33, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0xb0, 0xb6, 0xb7, 0x3a, 0x37, 0x3a, 0x90, 0x37, 0x33, 0x90, 0xb6, 0xb2, 0xb6, 0x37, 0xb9, 0x3c, 0x90, 0xba, 0xb9, 0x32, 0x32, 0x17, 0x10, 0x90, 0x24, 0x3a, 0x90, 0xb4, 0x39, 0x10, 0xb9, 0x32, 0xb6, 0x30, 0xba, 0x34, 0xbb, 0x32, 0xb6, 0x3c, 0x90, 0x39, 0xb6, 0xb7, 0x7b, 0x09, 0x80, 0x07, 0xe8, 0xde, 0x40, 0xd8, 0xde, 0xde, 0xd6, 0xea, 0xe0, 0x58, 0x40, 0xc4, 0xca, 0xc6, 0xc2, 0xea, 0xe6, 0xca, 0x40, 0xce, 0xca, 0xdc, 0xca, 0xe4, 0xc2, 0xe8, 0xd2, 0xdc, 0xce, 0x40, 0xc2, 0x40, 0xc6, 0xc2, 0xc6, 0xd0, 0xca, 0x40, 0xd6, 0xca, 0xf2, 0x40, 0xc6, 0xc2, 0xdc, 0x40, 0xc4, 0xca, 0x40, 0xcc, 0xc2, 0xd2, 0xe4, 0xd8, 0xf2, 0x40, 0xe6, 0xd8, 0xde, 0xee, 0x40, 0x50, 0xcc, 0xde, 0xe4, 0x25, 0x00, 0xff, 0xcd, 0xd2, 0xd8, 0xca, 0xe6, 0x58, 0x40, 0xd2, 0xe8, 0x40, 0xe4, 0xca, 0xe2, 0xea, 0xd2, 0xe4, 0xca, 0xe6, 0x40, 0xe0, 0xc2, 0xe4, 0xe6, 0xd2, 0xdc, 0xce, 0x76, 0x40, 0xcc, 0xde, 0xe4, 0x40, 0xe8, 0xea, 0xc4, 0xca, 0xe6, 0x58, 0x40, 0xd2, 0xe8, 0x40, 0xca, 0xec, 0xca, 0xdc, 0x40, 0xe4, 0xca, 0xe2, 0xea, 0xd2, 0xe4, 0xca, 0xe6, 0x40, 0xc4, 0xea, 0xd2, 0xd8, 0xc8, 0xd2, 0xdc, 0xce, 0x25, 0x40, 0x8b, 0x0e, 0xad, 0x0c, 0xa4, 0x2d, 0x4c, 0x6e, 0x6d, 0x2e, 0xc5, 0xd5, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x23, 0x15, 0xf8, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x8d, 0x90, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x94, 0x90, 0x0e, 0x4a, 0xc4, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0x9c, 0x90, 0x36, 0xfc, 0x3b, 0xbf, 0x80, 0xcf, 0x56, 0x16, 0xb6, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x89, 0x53, 0x48, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x17, 0x0b, 0x69, 0xc3, 0x9f, 0x4b, 0x03, 0xbe, 0x5c, 0x99, 0xd9, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x62, 0x85, 0x74, 0x50, 0x66, 0xe9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xf3, 0x85, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0x1e, 0xc7, 0xe4, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xc9, 0x85, 0xb4, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0x1c, 0x93, 0x5b, 0xd5, 0x2c, 0xe0, 0xb7, 0xbd, 0xbd, 0xb1, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xef, 0x81, 0xe2, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x36, 0x43, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x5f, 0xae, 0x2c, 0xae, 0xae, 0x6c, 0x8e, 0x6e, 0x0e, 0x24, 0xcd, 0x0d, 0x84, 0xac, 0x6c, 0x6e, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xaf, 0x21, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x17, 0x34, 0x84, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xa5, 0x21, 0x1d, 0xbc, 0x55, 0x2f, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7e, 0x39, 0xa4, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0xc0, 0x85, 0xd1, 0xa1, 0xcd, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x70, 0x48, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x8d, 0x76, 0x48, 0x07, 0x25, 0xe2, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0x7a, 0x48, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa1, 0x7d, 0x48, 0x07, 0xa5, 0x37, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf5, 0x81, 0x48, 0x07, 0xcf, 0xa1, 0xbc, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb0, 0x10, 0xe9, 0xe0, 0x8c, 0x84, 0x5a, 0x1d, 0x4e, 0xb1, 0x35, 0x78, 0x61, 0x11, 0xdf, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x17, 0x16, 0xf1, 0x35, 0x80, 0xaf, 0xd9, 0x9b, 0x1c, 0x19, 0xc8, 0x58, 0xd8, 0x18, 0x5a, 0x19, 0xc8, 0x5a, 0x59, 0xbe, 0x12, 0x00, 0x1d, 0x50, 0xa1, 0xa5, 0xcd, 0x81, 0xa4, 0xb9, 0x8d, 0xb1, 0xd5, 0x91, 0x95, 0xcd, 0x81, 0x84, 0xb1, 0xb1, 0x81, 0x88, 0xd5, 0xa5, 0xb1, 0x91, 0x81, 0xa4, 0xb9, 0xc1, 0xd5, 0xd1, 0xcd, 0xb1, 0x80, 0xa4, 0xb9, 0x8d, 0xb1, 0xd5, 0x91, 0xa5, 0xb9, 0x9d, 0x81, 0xd0, 0xc9, 0x85, 0xb9, 0xcd, 0xa5, 0xd1, 0xa5, 0xd9, 0x95, 0x81, 0x90, 0x95, 0xc1, 0x95, 0xb9, 0x91, 0x95, 0xb9, 0x8d, 0xa5, 0x95, 0xcd, 0xb1, 0x25, 0x40, 0x4f, 0xae, 0x6c, 0xac, 0x4e, 0x6e, 0x2e, 0xcd, 0xae, 0x8c, 0x2d, 0xcf, 0xd5, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x0b, 0x8b, 0xf8, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x1c, 0x91, 0x36, 0x08, 0x35, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x5d, 0x15, 0x92, 0x81, 0x74, 0x55, 0x98, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x57, 0x85, 0x68, 0x20, 0x5d, 0x15, 0xf2, 0x0d, 0x0a, 0xc1, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x57, 0x85, 0xec, 0xe0, 0x19, 0x7e, 0x7c, 0x1b, 0xfe, 0x9d, 0x5f, 0xc0, 0x87, 0x7b, 0xab, 0x93, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x57, 0x85, 0xc1, 0x40, 0xba, 0x2a, 0x2c, 0x0e, 0x0a, 0x8a, 0xcc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x17, 0x91, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xcf, 0x24, 0xd2, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x78, 0x20, 0xdf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2d, 0x24, 0xd2, 0xc1, 0xcb, 0x02, 0xf9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xdc, 0x44, 0xda, 0xf0, 0xe7, 0xd2, 0x80, 0x4f, 0x56, 0x06, 0x37, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x64, 0x22, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x7c, 0x22, 0x1d, 0x94, 0x88, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x8d, 0x22, 0x1d, 0x3c, 0xa1, 0x88, 0xaf, 0x0e, 0xa7, 0xd8, 0x1a, 0xb4, 0x30, 0x3f, 0xbe, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xa0, 0x85, 0xf9, 0xf1, 0x06, 0xe0, 0xad, 0x2d, 0x4c, 0x6e, 0x0d, 0x64, 0xec, 0xcd, 0xcd, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x0d, 0x44, 0xae, 0x2c, 0xae, 0xae, 0x6c, 0x8e, 0x6e, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xa0, 0x85, 0xf9, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x52, 0x54, 0xa4, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xdc, 0x8a, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9c, 0x55, 0xa4, 0x83, 0xf7, 0x6d, 0x88, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x5c, 0x8b, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9e, 0x59, 0xa4, 0x83, 0xf7, 0x6d, 0x88, 0xb4, 0x02, 0x3e, 0xdd, 0x9b, 0xdc, 0xbb, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x16, 0x51, 0xbe, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa6, 0x5d, 0xa4, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xcf, 0xca, 0xdc, 0xca, 0xe4, 0xc2, 0xd8, 0x40, 0xc6, 0xd0, 0xc2, 0xdc, 0xce, 0xca, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1e, 0x30, 0xd2, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x7b, 0x91, 0x0e, 0x8e, 0xda, 0xa0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x1e, 0x23, 0x6d, 0xf8, 0x73, 0x69, 0xf0, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xa3, 0x18, 0x69, 0xc3, 0xbf, 0xf3, 0x6b, 0xf0, 0xfa, 0xd1, 0xbc, 0x6a, 0x05, 0xfc, 0xb9, 0x3a, 0xb1, 0x70, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x51, 0xb0, 0x7c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc5, 0xcd, 0x48, 0x1b, 0x9e, 0x78, 0xdf, 0xe0, 0xa5, 0xad, 0x79, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x59, 0xd1, 0x48, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd9, 0x35, 0xd2, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xe4, 0x46, 0xda, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x80, 0x36, 0xd2, 0xc1, 0x19, 0x09, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x84, 0x71, 0xa4, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x81, 0x23, 0x6d, 0xf8, 0x77, 0x7e, 0x01, 0xbf, 0x2d, 0x6d, 0xae, 0xae, 0x3a, 0x9c, 0x62, 0x0b, 0xf8, 0x6d, 0x69, 0x7a, 0xf5, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x6b, 0x80, 0xf9, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0xd5, 0x91, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x70, 0x2b, 0xbb, 0x03, 0x99, 0xa3, 0x0b, 0xa3, 0x2b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0xef, 0x48, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x6a, 0x47, 0x3a, 0x38, 0x0a, 0x9d, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x8c, 0x8f, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xe3, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x1a, 0x7b, 0xa4, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2c, 0x7e, 0xa4, 0x83, 0x12, 0xb1, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc2, 0x80, 0xa4, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd4, 0x82, 0xa4, 0x83, 0x97, 0x5e, 0xea, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x31, 0x43, 0xd2, 0x86, 0x3f, 0x97, 0x06, 0x97, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x14, 0x92, 0x36, 0xfc, 0x3b, 0xbf, 0x80, 0x2f, 0x17, 0xe6, 0x76, 0x56, 0xb3, 0x06, 0xef, 0x83, 0x30, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0x3e, 0x08, 0xa3, 0x06, 0xe0, 0xa7, 0x2d, 0x4c, 0x6e, 0x0d, 0x64, 0xec, 0xcd, 0xcd, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x0d, 0xe4, 0x2c, 0x8c, 0xae, 0x6c, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x7d, 0x10, 0x46, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x81, 0x12, 0x49, 0x1b, 0x84, 0xd3, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x15, 0x49, 0x07, 0xcd, 0x6e, 0x47, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x61, 0x24, 0x1d, 0x34, 0xbb, 0x1d, 0x75, 0x38, 0xc5, 0xd6, 0xe0, 0xb1, 0xf8, 0x7b, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0x1e, 0x8b, 0xbf, 0xd7, 0x00, 0x3e, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x8f, 0xc5, 0xdf, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xed, 0x48, 0xda, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x0b, 0x49, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x23, 0x2b, 0x63, 0x2b, 0xa3, 0x2b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x01, 0x24, 0x49, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x28, 0xfc, 0x0d, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x4b, 0x49, 0x3a, 0x08, 0xc1, 0x87, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x6d, 0x49, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x39, 0x68, 0x80, 0x3a, 0x7c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xc1, 0x24, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0x01, 0x96, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x51, 0x38, 0x49, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xae, 0x49, 0x3a, 0x78, 0x2f, 0x02, 0x49, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xf2, 0x24, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xdf, 0x56, 0x47, 0x17, 0x46, 0x57, 0x06, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0x42, 0x96, 0x66, 0x66, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x7e, 0x92, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x50, 0xe6, 0x04, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x74, 0x94, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x58, 0xa2, 0xa4, 0x83, 0xf7, 0x22, 0x90, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x96, 0x52, 0xd2, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xde, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x65, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x72, 0x61, 0x77, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x9e, 0x29, 0x69, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xad, 0x46, 0x64, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x50, 0x95, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3a, 0xa9, 0xa4, 0x83, 0xf7, 0x22, 0x90, 0xd4, 0xe1, 0x14, 0x5b, 0xc0, 0x37, 0x63, 0xab, 0x2b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xa0, 0xff, 0xec, 0x2d, 0x8c, 0x0d, 0x24, 0x6d, 0x0e, 0x84, 0xee, 0x0d, 0xa4, 0x2d, 0x6c, 0xad, 0x0c, 0x64, 0x2c, 0x6c, 0x0c, 0xad, 0x0c, 0x04, 0x2d, 0x8d, 0x6e, 0x0e, 0xc4, 0x2c, 0x6c, 0x8e, 0xce, 0xb5, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xd0, 0x87, 0xbe, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd8, 0xac, 0xa4, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xed, 0x95, 0xb4, 0xe1, 0xcf, 0xa5, 0x01, 0x9e, 0x39, 0xb8, 0x34, 0x36, 0x76, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x89, 0x2b, 0x69, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x4c, 0x2c, 0xe9, 0xa0, 0x44, 0x7c, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd5, 0x2c, 0xe9, 0xe0, 0x09, 0x45, 0x7c, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xdb, 0x96, 0xb4, 0xe1, 0xcf, 0xa5, 0x01, 0x9e, 0x39, 0x38, 0xb9, 0xb4, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x64, 0x2d, 0x69, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x29, 0x2e, 0xe9, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb3, 0x2e, 0x69, 0xc3, 0xbf, 0xf3, 0x0b, 0xf8, 0x6d, 0x69, 0x73, 0x74, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xb5, 0x97, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x01, 0x93, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x0b, 0x8b, 0xf8, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xfb, 0x92, 0x0e, 0x9e, 0x50, 0xc4, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0b, 0x62, 0xd2, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x1c, 0x93, 0xdb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x65, 0x61, 0xd2, 0xc1, 0xeb, 0x9d, 0xf8, 0xaa, 0xd5, 0x60, 0xe5, 0xb5, 0xd1, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x95, 0xd7, 0x46, 0x0d, 0xe0, 0xed, 0x56, 0x76, 0x07, 0x02, 0x57, 0x26, 0xd7, 0x96, 0x36, 0x37, 0x97, 0xf6, 0xe6, 0x36, 0xb7, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0xf2, 0xda, 0x68, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd3, 0x31, 0x69, 0x83, 0xa0, 0xfd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x39, 0x32, 0x69, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0xdf, 0xec, 0x4d, 0x0e, 0x44, 0xae, 0x2c, 0x8c, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x51, 0x26, 0x1d, 0x2c, 0x4c, 0xee, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x7f, 0x33, 0x69, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x5c, 0x19, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x96, 0x99, 0xb4, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xf8, 0x99, 0x74, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x3c, 0x9a, 0x74, 0xb0, 0x34, 0x55, 0xb4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x45, 0x4d, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xc3, 0xec, 0x4d, 0x0e, 0xe4, 0x4e, 0x2e, 0x8d, 0xae, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xad, 0x26, 0x1d, 0x2c, 0xad, 0x56, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x5d, 0x36, 0x69, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0xf7, 0x8d, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x05, 0x9b, 0xb4, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x67, 0x9b, 0x74, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xab, 0x9b, 0x74, 0xb0, 0x34, 0x55, 0xb4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xf3, 0x4d, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x0f, 0xb3, 0x37, 0x39, 0x10, 0xb9, 0xb2, 0x30, 0x32, 0x90, 0x30, 0x37, 0x32, 0x90, 0x3b, 0xb9, 0x34, 0xba, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x11, 0x9c, 0xb4, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xe0, 0xe5, 0xee, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x92, 0x93, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xc9, 0x95, 0x91, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x71, 0xc6, 0x49, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x8d, 0xcc, 0x49, 0x07, 0x65, 0x13, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0xd0, 0x49, 0x07, 0x4b, 0x53, 0x45, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xfd, 0x3a, 0x69, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0xf7, 0x8d, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x55, 0x9d, 0xb4, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xb7, 0x9d, 0x74, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xfc, 0x9d, 0x74, 0xb0, 0x34, 0x55, 0xb4, 0x5a, 0x0d, 0x5e, 0x56, 0xcd, 0xb7, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0x65, 0xd5, 0x7c, 0x0d, 0xe0, 0x23, 0x57, 0x06, 0xf7, 0x36, 0x97, 0x46, 0xf7, 0x26, 0x97, 0xb7, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xb2, 0x6a, 0xbe, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc8, 0xf3, 0xa4, 0x0d, 0x0e, 0x10, 0xa2, 0x1b, 0xbc, 0xac, 0x9a, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xa4, 0x3c, 0x69, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xb2, 0x27, 0x6d, 0x78, 0xe2, 0x7d, 0x83, 0xe5, 0x29, 0xd9, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xd0, 0xea, 0xe8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0c, 0xf5, 0xa4, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x1c, 0xf8, 0xa4, 0x83, 0x12, 0xb1, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x40, 0xfa, 0xa4, 0x83, 0x97, 0x5e, 0xea, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x80, 0x9f, 0x74, 0xf0, 0xf8, 0xd8, 0xbd, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xfe, 0x4f, 0xda, 0xf0, 0xc4, 0xfb, 0x06, 0x4f, 0x02, 0xdc, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x8d, 0xb5, 0x9b, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xf5, 0x27, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x0d, 0x28, 0x1d, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x1e, 0x28, 0x1d, 0xbc, 0x11, 0x62, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x96, 0x05, 0xa5, 0x83, 0xd7, 0xd1, 0xd9, 0xd5, 0xac, 0xc1, 0xc3, 0x03, 0xf9, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0x3c, 0x90, 0xaf, 0x01, 0xf8, 0x31, 0x7b, 0x93, 0x23, 0x03, 0x11, 0xab, 0x4b, 0x63, 0x23, 0x03, 0xb9, 0x7b, 0x19, 0x7b, 0x73, 0xa3, 0x2b, 0x73, 0xa3, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x78, 0x20, 0xdf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x31, 0x84, 0xd2, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x29, 0x85, 0xd2, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xb9, 0x50, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xa3, 0x25, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xf9, 0x50, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x07, 0xd3, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x52, 0x0e, 0xa5, 0x83, 0x33, 0x12, 0x6a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x8f, 0x28, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2a, 0x13, 0xa5, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0x3d, 0x44, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x28, 0x17, 0xa5, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x8a, 0x3c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x5e, 0x51, 0x3a, 0x78, 0xdf, 0x86, 0x48, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xc8, 0x28, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x62, 0x1a, 0xa5, 0x83, 0x47, 0x6e, 0xeb, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xb3, 0xa3, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0x4e, 0x91, 0xa7, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa1, 0x38, 0x4a, 0x07, 0xef, 0xdb, 0x10, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xde, 0x1f, 0xa5, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x25, 0xa4, 0xb4, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xa7, 0xf7, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xa4, 0xa4, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0x5a, 0x98, 0x1f, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x3d, 0x52, 0xda, 0xf0, 0xef, 0xfc, 0x1a, 0xb4, 0x30, 0x3f, 0x5e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xf1, 0xa4, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0xa3, 0x94, 0x0e, 0xde, 0x40, 0xae, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x05, 0x96, 0xd2, 0x86, 0x3f, 0x97, 0x36, 0x68, 0x61, 0x7e, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb0, 0x4a, 0xe9, 0xe0, 0xf1, 0xaa, 0x7d, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xca, 0xa5, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0xbe, 0x94, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x66, 0x2d, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0xce, 0x94, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xc1, 0xf4, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x95, 0x4c, 0xe9, 0xe0, 0x8c, 0x84, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6b, 0x9b, 0xd2, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x62, 0xa5, 0xd1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc7, 0x9a, 0xd2, 0xc1, 0x1b, 0x21, 0xf6, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x2c, 0x4e, 0x69, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xcf, 0x29, 0x1d, 0xbc, 0xd7, 0x59, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x38, 0x3d, 0xa5, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x30, 0xfd, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xbf, 0x53, 0x3a, 0x38, 0x23, 0xa1, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x0e, 0xa8, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0x8a, 0xcb, 0xfa, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2a, 0x3f, 0xa5, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3c, 0x42, 0xa5, 0x83, 0x12, 0xb1, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x62, 0x44, 0xa5, 0x83, 0x33, 0x12, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x49, 0x8c, 0x4a, 0x07, 0x6f, 0x84, 0xd8, 0xab, 0x56, 0x80, 0x67, 0x2c, 0x4c, 0x8c, 0xad, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0x50, 0xe7, 0xbe, 0x06, 0xf0, 0x67, 0x4b, 0x13, 0x7b, 0x99, 0xab, 0x93, 0x7b, 0x69, 0x0b, 0x93, 0x5b, 0x03, 0x91, 0x2b, 0x33, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xa8, 0x73, 0xdf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x64, 0xa4, 0xd2, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xb4, 0x54, 0xda, 0xf0, 0xe7, 0xd2, 0x86, 0xb9, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xa0, 0x54, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xd1, 0x54, 0x3a, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xf3, 0x54, 0x3a, 0x58, 0xaf, 0xf5, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0xa5, 0x4a, 0x1b, 0xfe, 0x5c, 0x1a, 0xc0, 0xc3, 0x2c, 0x8d, 0xad, 0xac, 0x05, 0x2e, 0x8c, 0x0e, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x16, 0x55, 0x3a, 0x58, 0xaf, 0xf5, 0xdc, 0xe1, 0x14, 0x5b, 0xc0, 0x6f, 0x7b, 0x0b, 0xa3, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0x28, 0xde, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xc1, 0xaa, 0xb4, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xdf, 0x18, 0x5a, 0x98, 0xdb, 0x59, 0x19, 0x88, 0x5c, 0x98, 0xdb, 0x59, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x8a, 0x55, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0xaf, 0x33, 0x72, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x75, 0x55, 0x3a, 0x78, 0xab, 0x5e, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0xb7, 0x4a, 0x1b, 0xfe, 0x5c, 0x1a, 0x78, 0xba, 0x77, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xa5, 0x56, 0xe9, 0xe0, 0xad, 0x7a, 0x21, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xf8, 0x2a, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x83, 0xe9, 0xe7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe8, 0xae, 0xd2, 0xc1, 0x19, 0x09, 0xb5, 0xd5, 0xe0, 0x25, 0xb4, 0x7a, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0x5e, 0x42, 0xab, 0xd7, 0x00, 0xde, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x2f, 0xa1, 0xd5, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x1e, 0x56, 0xda, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x3d, 0x56, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x77, 0x2e, 0xcd, 0xed, 0x8c, 0xad, 0x0c, 0x44, 0xae, 0x2c, 0xae, 0xae, 0x6c, 0x8e, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x29, 0x2b, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0xdd, 0xc5, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x49, 0x2b, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xb7, 0x7f, 0xde, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x3e, 0x2b, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0xde, 0xfe, 0x79, 0x57, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x7c, 0xad, 0xb4, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1f, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x4c, 0x5b, 0x69, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xeb, 0x87, 0x6b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x12, 0x57, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x6f, 0xff, 0xbc, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xfe, 0x56, 0x3a, 0x78, 0x83, 0x81, 0x5f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x9b, 0x2b, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x8b, 0x5b, 0x19, 0x1e, 0x1d, 0x88, 0x5d, 0x99, 0xdc, 0x5c, 0xda, 0x9b, 0x1b, 0xc8, 0x9b, 0x19, 0x48, 0x98, 0x5b, 0xde, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x4c, 0x57, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x2b, 0xca, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x8c, 0x57, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0xef, 0x81, 0xe2, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x77, 0x57, 0xda, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0x07, 0x8a, 0xaf, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb6, 0x5e, 0x69, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x2f, 0x3a, 0xb9, 0xb0, 0xb1, 0x35, 0x10, 0xb9, 0x30, 0xb7, 0xb3, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x85, 0xaf, 0x74, 0x90, 0x02, 0x1b, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xae, 0xbf, 0xd2, 0x86, 0x3f, 0x97, 0x06, 0x78, 0xe8, 0xe4, 0xc2, 0xc6, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x14, 0x7e, 0xa5, 0xc3, 0x07, 0xab, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x14, 0x2c, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x07, 0x8a, 0xf7, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x0a, 0x2c, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0x1e, 0x28, 0xde, 0x57, 0xb5, 0x02, 0x78, 0xb4, 0x85, 0xad, 0x95, 0xb5, 0xe4, 0x85, 0xad, 0xa5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x6f, 0x66, 0xf1, 0x6b, 0x00, 0xf4, 0x6d, 0x0b, 0x5b, 0x2b, 0x03, 0x19, 0x7b, 0x6b, 0x6b, 0x4b, 0xa3, 0x03, 0x79, 0xab, 0xa3, 0x03, 0x79, 0x33, 0x03, 0x09, 0x03, 0x61, 0x4b, 0x9b, 0xa3, 0x03, 0x79, 0x33, 0x03, 0x81, 0x0b, 0x93, 0x2b, 0x73, 0xa3, 0x9b, 0x63, 0x01, 0x19, 0x7b, 0x73, 0xa3, 0x2b, 0x73, 0xa3, 0x63, 0x01, 0x09, 0x73, 0x23, 0x03, 0x21, 0x0b, 0xa3, 0x2b, 0x73, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x27, 0x2c, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x50, 0x85, 0x64, 0x20, 0x43, 0x15, 0x0a, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xa8, 0x42, 0x34, 0x90, 0xa1, 0x0a, 0xbb, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x86, 0x2a, 0x84, 0x07, 0xaf, 0xeb, 0xf1, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x55, 0x48, 0x07, 0x32, 0x54, 0x61, 0x71, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x86, 0x2a, 0x4c, 0x06, 0x32, 0x54, 0x61, 0x76, 0xf0, 0xd2, 0x4b, 0xbd, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x55, 0x18, 0x0e, 0x64, 0xa8, 0x42, 0xd3, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x43, 0x15, 0xa6, 0x07, 0x6f, 0x46, 0xf2, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x55, 0xd8, 0x0e, 0x64, 0xa8, 0xc2, 0xfc, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x54, 0x61, 0x3f, 0x90, 0xa1, 0x0a, 0x1d, 0x07, 0x67, 0x24, 0xd4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x43, 0x15, 0x4a, 0x06, 0x32, 0x54, 0xa1, 0xe8, 0xe0, 0x8d, 0x10, 0x7b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xaa, 0x50, 0x35, 0x90, 0xa1, 0x0a, 0x7d, 0x1b, 0xfe, 0x5c, 0x1a, 0x9c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x55, 0x28, 0x3b, 0x78, 0xc5, 0x95, 0xdf, 0xc1, 0x91, 0xaf, 0xb5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb8, 0x86, 0xa5, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xaa, 0x90, 0x0c, 0xa4, 0xa8, 0x42, 0x7a, 0xf0, 0xf8, 0xd8, 0xbd, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf8, 0x87, 0xa5, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x2a, 0xb1, 0xb4, 0xe1, 0x73, 0x97, 0x0d, 0x4a, 0xee, 0x86, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9e, 0x8a, 0xa5, 0x0d, 0x56, 0xf5, 0x2a, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x80, 0xb1, 0x74, 0x50, 0xd6, 0xdb, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xcb, 0xb1, 0x74, 0x70, 0x5e, 0xa0, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x05, 0x64, 0x69, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x8b, 0x2c, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0xb4, 0x3f, 0x96, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x39, 0x59, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd9, 0x29, 0x4b, 0x1b, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0xc1, 0x53, 0x57, 0x96, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x69, 0x59, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x09, 0x30, 0x4b, 0x07, 0x4b, 0x25, 0x09, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xa2, 0x59, 0x3a, 0x38, 0x5d, 0x64, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x7a, 0xb3, 0x74, 0xf8, 0x13, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0x75, 0x96, 0x0e, 0x4e, 0x47, 0x22, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xf7, 0x2c, 0x1d, 0x9c, 0x5a, 0xfa, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x33, 0x68, 0x69, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x11, 0x2d, 0x1d, 0xbc, 0x59, 0xcd, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4c, 0xa4, 0xa5, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xb3, 0xb4, 0xb4, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0x9f, 0x69, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x44, 0xa7, 0xa5, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x15, 0xb5, 0x74, 0xb0, 0x54, 0x92, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xce, 0xaa, 0xa5, 0x83, 0xd3, 0x45, 0xc6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe1, 0x58, 0x4b, 0x87, 0x3f, 0x81, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x85, 0x6b, 0xe9, 0xe0, 0x74, 0x24, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc9, 0xd7, 0xd2, 0xc1, 0xa9, 0xa5, 0xaf, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0xc5, 0x96, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4b, 0xd9, 0xd2, 0xc1, 0xe9, 0x22, 0x63, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfe, 0xb3, 0xa5, 0x83, 0xd3, 0x91, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0x6a, 0x4b, 0x1b, 0xde, 0xd6, 0x39, 0x38, 0x5a, 0x6b, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xdb, 0xb6, 0x74, 0x70, 0x6a, 0xe9, 0xeb, 0x70, 0x8a, 0xd5, 0x1a, 0x3c, 0xb1, 0xd2, 0x68, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x89, 0x95, 0x46, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0x71, 0x4b, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xfc, 0x62, 0x6c, 0x6f, 0x62, 0x20, 0x72, 0x65, 0x66, 0x07, 0xef, 0xfd, 0x0a, 0x59, 0x0d, 0x56, 0xf4, 0x65, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0xe8, 0xcb, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xb3, 0x5b, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x21, 0x7b, 0x6b, 0x2b, 0x9b, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xcf, 0x5b, 0x3a, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xf9, 0x5b, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc5, 0x81, 0x4b, 0x07, 0x6d, 0x5b, 0x8f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x5a, 0xb8, 0x74, 0xf0, 0x28, 0xbc, 0x90, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x53, 0x5c, 0x3a, 0x78, 0x6e, 0x15, 0x5e, 0xab, 0x41, 0x7b, 0xb6, 0xa1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0xda, 0xb3, 0x0d, 0x6d, 0x00, 0xbf, 0xb1, 0xb0, 0xb9, 0x32, 0x90, 0x37, 0x39, 0x10, 0xba, 0xb0, 0xb5, 0xb7, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xf6, 0x6c, 0x43, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0x1f, 0x97, 0x36, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x27, 0x97, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x89, 0xe5, 0xd2, 0x86, 0x0c, 0xf8, 0xc1, 0x43, 0x00, 0xfd, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xf1, 0x5c, 0xda, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe4, 0xe6, 0xd2, 0xc1, 0x4b, 0x2f, 0xf5, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x3b, 0x74, 0xe9, 0xe0, 0xad, 0x7a, 0x21, 0x1d, 0x4e, 0xb1, 0x5a, 0x83, 0xd6, 0xb7, 0x98, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x83, 0x97, 0x5d, 0x7b, 0x0c, 0xe0, 0xd5, 0x56, 0x26, 0x77, 0x56, 0x06, 0x32, 0x47, 0x97, 0xc7, 0x56, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xd0, 0xfa, 0x16, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0d, 0xea, 0xd2, 0x06, 0xc1, 0x66, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfc, 0xea, 0xd2, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbf, 0x5b, 0xd9, 0x1d, 0x08, 0x59, 0xd9, 0xdc, 0xda, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x9e, 0x7a, 0x0f, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x84, 0xec, 0xd2, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7e, 0x66, 0x61, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0x27, 0x3f, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0e, 0xdc, 0xa5, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xdf, 0xe4, 0xe8, 0xd0, 0xde, 0xce, 0xde, 0xdc, 0xc2, 0xd8, 0x40, 0xcc, 0xd2, 0xd8, 0xca, 0xe6, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x90, 0x9c, 0x0b, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x84, 0xef, 0xd2, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7c, 0xbc, 0xc9, 0xd1, 0xa1, 0xbd, 0x9d, 0xbd, 0xb9, 0x85, 0xb1, 0x81, 0x8c, 0xa1, 0x85, 0xb9, 0x9d, 0x95, 0xcd, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0x54, 0xcd, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x3e, 0xbc, 0xb4, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x97, 0xd9, 0x9b, 0xdc, 0x58, 0x19, 0x48, 0x5b, 0x99, 0xdc, 0x59, 0xd9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xde, 0xb2, 0x16, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb7, 0xf2, 0xd2, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3c, 0xbc, 0xd5, 0xc9, 0xcd, 0x81, 0xdc, 0xa5, 0xd1, 0xa1, 0x81, 0xc0, 0x85, 0xc9, 0x95, 0xb9, 0xd1, 0xcd, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x49, 0xc8, 0x4b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x47, 0x2f, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x03, 0x5a, 0x99, 0xdc, 0x1c, 0xc8, 0x5d, 0x1a, 0x1d, 0x1a, 0x08, 0x5c, 0x98, 0x5c, 0x99, 0x1b, 0xdd, 0xdc, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x9e, 0xf3, 0xbc, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2f, 0xf6, 0xd2, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7c, 0xbc, 0xd5, 0xc9, 0xcd, 0x81, 0xd4, 0xb9, 0xb1, 0x95, 0xcd, 0xcd, 0x81, 0x84, 0x89, 0xcd, 0x95, 0xb9, 0xd1, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x29, 0xd6, 0x4b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x7e, 0x2f, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x07, 0x5a, 0x99, 0xdc, 0x1c, 0x48, 0x9d, 0x1b, 0x5b, 0xd9, 0xdc, 0x1c, 0x48, 0x98, 0xd8, 0x5c, 0x99, 0x1b, 0xdd, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x9e, 0xd1, 0xbd, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa7, 0xf9, 0xd2, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xfe, 0x6f, 0x75, 0x72, 0x73, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x02, 0xf9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0xeb, 0x4b, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xa3, 0x95, 0xc9, 0xcd, 0x81, 0xa4, 0x99, 0x81, 0x8c, 0xbd, 0xb9, 0x99, 0xb1, 0xa5, 0x8d, 0xd1, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0xa5, 0xa5, 0x4b, 0xad, 0x06, 0xcb, 0x20, 0xdd, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x96, 0x41, 0xba, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0xc8, 0x2f, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xc7, 0x58, 0xd8, 0x5c, 0xd9, 0x1c, 0x88, 0xd9, 0x9b, 0x1c, 0x88, 0x5c, 0x99, 0x5d, 0xda, 0x5c, 0xda, 0x9b, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xb9, 0x5f, 0xda, 0xf0, 0xe7, 0xd2, 0x86, 0x9a, 0xbf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x4a, 0xbf, 0x74, 0x50, 0x66, 0xe9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xda, 0xbf, 0xb4, 0xe1, 0xcf, 0xa5, 0x81, 0x27, 0x0b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0xf6, 0x97, 0x0e, 0x8e, 0x7c, 0xad, 0xad, 0x06, 0x4f, 0x46, 0x09, 0xda, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x32, 0x4a, 0xd0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc4, 0x00, 0xd3, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3c, 0xc0, 0x95, 0xc9, 0xb5, 0xa5, 0xcd, 0xcd, 0xa5, 0xbd, 0xb9, 0xcd, 0x81, 0x9c, 0xc9, 0xbd, 0xd5, 0xc1, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x1a, 0x30, 0x1d, 0x94, 0x88, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x2b, 0x30, 0x1d, 0xb4, 0x6d, 0x3d, 0xde, 0x6a, 0xf0, 0x1a, 0x2b, 0xbc, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xd7, 0x58, 0xe1, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x41, 0x30, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc0, 0x0a, 0xa6, 0x0d, 0x4f, 0xbc, 0x6f, 0xf0, 0x5e, 0x44, 0xbd, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6c, 0x65, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xbd, 0x04, 0xd3, 0xc1, 0x6b, 0x87, 0xf3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xe8, 0x60, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xd7, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd, 0x6d, 0x0e, 0x44, 0x2c, 0x0f, 0x24, 0x8d, 0x6c, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0xef, 0x0d, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xd4, 0x60, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x05, 0x61, 0x3a, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x27, 0x61, 0x3a, 0x78, 0xed, 0x70, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0x28, 0x4c, 0x07, 0x2f, 0xbd, 0xd4, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc8, 0x17, 0xa6, 0x0d, 0x4f, 0xbc, 0x6f, 0xf0, 0x30, 0x4d, 0xbd, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6c, 0x61, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x41, 0x0b, 0xd3, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc9, 0x0c, 0xd3, 0x41, 0x89, 0x58, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x13, 0x0e, 0xd3, 0xc1, 0x79, 0xf3, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x38, 0x1e, 0xa6, 0x83, 0xd7, 0x0e, 0xe7, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe1, 0x10, 0xd3, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x9e, 0x74, 0x6f, 0x6d, 0x62, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xe8, 0xde, 0xda, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7c, 0x20, 0xa6, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8c, 0x23, 0xa6, 0x83, 0x12, 0xb1, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb0, 0x25, 0xa6, 0x83, 0x97, 0x5e, 0xea, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xee, 0xc4, 0x74, 0xf0, 0xa2, 0x9a, 0xbd, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xb1, 0x62, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x97, 0xac, 0xcc, 0x2c, 0xac, 0x8e, 0x8d, 0x0e, 0x04, 0xee, 0x8d, 0x2d, 0x6d, 0x2c, 0x6f, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0x52, 0xf5, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x39, 0xc5, 0x74, 0xf0, 0xa2, 0x9a, 0xbd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0xba, 0x98, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x69, 0x4b, 0x6b, 0x2b, 0x03, 0x19, 0x0b, 0x1b, 0x43, 0x2b, 0xdb, 0xf0, 0xe7, 0xd2, 0x80, 0xd7, 0x96, 0xd6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x6b, 0x31, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x83, 0x31, 0x1d, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x95, 0x31, 0x1d, 0x9c, 0x91, 0x50, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x46, 0x63, 0x3a, 0x78, 0x50, 0x02, 0x5f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xc0, 0x31, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x63, 0xf6, 0x26, 0x47, 0x06, 0x32, 0x16, 0x36, 0x86, 0x56, 0xb6, 0xe1, 0xcf, 0xa5, 0x01, 0xcf, 0xec, 0x8d, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x6b, 0x63, 0xda, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0xf4, 0xa1, 0xaf, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xba, 0x63, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x87, 0xb1, 0xb7, 0xb6, 0xb6, 0x34, 0xba, 0x96, 0x34, 0xb7, 0x96, 0xbb, 0xb0, 0x34, 0xba, 0x34, 0xb7, 0xb3, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x77, 0x69, 0xe3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2e, 0x1d, 0xd3, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb6, 0x1e, 0xd3, 0x41, 0x89, 0x58, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc8, 0x1f, 0xd3, 0xc1, 0xb3, 0x14, 0x42, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x18, 0x64, 0xda, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0xf5, 0x74, 0xaf, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x72, 0x91, 0x69, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5f, 0xb9, 0x3a, 0x37, 0xb7, 0x34, 0xb7, 0x33, 0x90, 0xb0, 0xb3, 0x32, 0x37, 0xba, 0xb9, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6c, 0x69, 0xf6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x42, 0x22, 0xd3, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0xa9, 0x47, 0x41, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1d, 0x25, 0xd3, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbc, 0x98, 0xbd, 0xc9, 0x8d, 0x95, 0x81, 0x84, 0x9d, 0x95, 0xb9, 0xd1, 0xcd, 0x81, 0xbc, 0xb9, 0xbd, 0xbc, 0x99, 0x99, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x93, 0x2b, 0x73, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x23, 0x99, 0x36, 0xfc, 0x3b, 0xbf, 0x06, 0x8f, 0x2f, 0x0a, 0xaa, 0x56, 0x83, 0xa7, 0x1e, 0x05, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x3c, 0xf5, 0x28, 0x68, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd1, 0x93, 0x69, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x1f, 0xed, 0xed, 0x0e, 0x84, 0x2d, 0xcd, 0xae, 0x6c, 0x83, 0x50, 0x43, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x46, 0x61, 0x30, 0x90, 0x35, 0x0a, 0xab, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0xe0, 0x55, 0xfc, 0x42, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf9, 0x9b, 0x4c, 0x1b, 0x04, 0x9b, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0xa2, 0x4c, 0x1b, 0x32, 0xe0, 0x07, 0x6f, 0xd5, 0xfb, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x0e, 0x95, 0x69, 0x43, 0x06, 0xfc, 0xa0, 0x99, 0x18, 0xe6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0x5a, 0x99, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0xe0, 0x57, 0xa6, 0x56, 0x83, 0xc7, 0x17, 0x05, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x3c, 0xbe, 0x28, 0x68, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x77, 0x96, 0x69, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x9f, 0x32, 0x3c, 0x3a, 0xb9, 0x30, 0x90, 0x30, 0x38, 0xb8, 0xb9, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa6, 0x5b, 0xa6, 0x83, 0x12, 0xb1, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xca, 0x5d, 0xa6, 0x0d, 0xff, 0xce, 0x2f, 0xe0, 0x93, 0xd5, 0x91, 0x95, 0x1d, 0xbc, 0x66, 0xbe, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6e, 0x60, 0xa6, 0xc3, 0x07, 0xab, 0xad, 0x06, 0xaf, 0x38, 0xe9, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xc5, 0x49, 0xdf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc3, 0x31, 0xd3, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x90, 0x32, 0xd3, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x66, 0x66, 0x3a, 0x78, 0xe4, 0x63, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x41, 0xd3, 0x4c, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x60, 0xfa, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x0b, 0xcd, 0x74, 0x70, 0x46, 0x42, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x90, 0x6b, 0xa6, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x9b, 0xcd, 0x74, 0xf0, 0xb0, 0xcb, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0xc0, 0x99, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x29, 0xf2, 0x74, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb2, 0x9b, 0xe9, 0xe0, 0x7d, 0x1b, 0x22, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x40, 0xce, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0xcd, 0x99, 0x0e, 0x1e, 0xb9, 0xad, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x40, 0x3b, 0xd3, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x45, 0x9e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xa9, 0x33, 0x1d, 0xbc, 0x6f, 0x43, 0xa4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0xe1, 0x99, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xdd, 0x3c, 0xd3, 0xc1, 0xab, 0x4c, 0xfb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xcf, 0x67, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x2d, 0xcc, 0x8f, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xdd, 0x33, 0x1d, 0x3c, 0x5e, 0xb5, 0xaf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0xfb, 0x99, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x15, 0x40, 0xd3, 0xc1, 0x1b, 0xc8, 0xf5, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x36, 0x68, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x2d, 0xcc, 0x8f, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x10, 0x34, 0x1d, 0x3c, 0x5e, 0xb5, 0xaf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x15, 0x9a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4d, 0x43, 0xd3, 0xc1, 0xd3, 0x6b, 0xfb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x9d, 0x68, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x07, 0xd3, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x88, 0x88, 0xa6, 0x83, 0x33, 0x12, 0x6a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x5a, 0x34, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa8, 0x8c, 0xa6, 0x83, 0xf7, 0x3a, 0xeb, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xfb, 0xd1, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0x0e, 0xa6, 0x9f, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0x1d, 0x4d, 0x07, 0x67, 0x24, 0xd4, 0x5a, 0x01, 0xfc, 0xe0, 0xc2, 0xce, 0xca, 0x5a, 0xe8, 0xde, 0x5a, 0xd8, 0xde, 0xc4, 0xca, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x27, 0x15, 0xff, 0x35, 0x00, 0x9d, 0x68, 0x61, 0x73, 0x68, 0x20, 0x61, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x62, 0x65, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xbe, 0x91, 0xa6, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xa8, 0x30, 0x1c, 0x48, 0x45, 0x85, 0xf1, 0xc1, 0xeb, 0xe8, 0xec, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x4d, 0x9a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x65, 0x4a, 0xd3, 0x41, 0x2a, 0xad, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0x2e, 0x4d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x26, 0xa6, 0xe9, 0x20, 0xbd, 0x69, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xbc, 0x9a, 0xa6, 0x83, 0xd3, 0xca, 0x59, 0x1d, 0x4e, 0xb1, 0x35, 0x78, 0xfe, 0xb4, 0xcb, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xf3, 0xa7, 0x5d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x73, 0x9a, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xb5, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x71, 0xab, 0x6b, 0x13, 0x2b, 0x93, 0x3b, 0x28, 0xb3, 0x74, 0x0f, 0xa7, 0x58, 0x0b, 0xf0, 0xcf, 0x95, 0x9d, 0xb5, 0x95, 0xb9, 0xd1, 0xcd, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xaf, 0x02, 0xff, 0x6b, 0x00, 0xfc, 0x1f, 0x7b, 0x6b, 0x83, 0xab, 0xa3, 0x2b, 0x03, 0x09, 0x63, 0x63, 0x03, 0x81, 0x0b, 0xa3, 0x43, 0x9b, 0x03, 0x31, 0x93, 0x7b, 0x6b, 0x03, 0xd1, 0x81, 0x0b, 0xa3, 0x43, 0x6b, 0x81, 0x0b, 0x93, 0xa3, 0x63, 0x01, 0x91, 0x2b, 0x83, 0x63, 0x0b, 0x1b, 0x4b, 0x73, 0x3b, 0x03, 0x99, 0x7b, 0x6b, 0x2b, 0x03, 0x01, 0x7b, 0x01, 0x9b, 0x03, 0xb9, 0x4b, 0xa3, 0x43, 0x03, 0x01, 0x6b, 0x01, 0x9b, 0x57, 0x02, 0xd0, 0xd6, 0xe8, 0x4d, 0x0e, 0xa4, 0x0c, 0x2f, 0xac, 0x0d, 0x8e, 0xad, 0x8c, 0x05, 0xe4, 0x0e, 0xad, 0xcc, 0x0d, 0x04, 0x2e, 0x6c, 0x6e, 0xae, 0x8c, 0x0c, 0x24, 0x0c, 0x44, 0x07, 0x2e, 0x8c, 0x0e, 0xad, 0x05, 0x2e, 0x4c, 0x8e, 0x0e, 0xe4, 0xcd, 0x0c, 0xe4, 0xc4, 0xec, 0xed, 0xad, 0x45, 0x2c, 0x4c, 0xae, 0x45, 0x2c, 0x4c, 0xef, 0x84, 0x2d, 0x01, 0x34, 0xd2, 0xa1, 0x95, 0x81, 0xc0, 0xc9, 0xbd, 0x91, 0xd5, 0x8d, 0xd1, 0x81, 0xdc, 0xa5, 0xb1, 0xb1, 0x81, 0x8c, 0xbd, 0xb9, 0xd1, 0x85, 0xa5, 0xb9, 0xe9, 0x25, 0xf0, 0xc0, 0xc0, 0xc0, 0x25, 0x80, 0x6e, 0xb2, 0x37, 0xb5, 0x37, 0x1f, 0x10, 0x94, 0xb9, 0xb2, 0xb3, 0xb6, 0x32, 0x37, 0xba, 0x39, 0x90, 0x13, 0xb3, 0xb7, 0xb7, 0x16, 0xb1, 0x30, 0xb9, 0x16, 0xb1, 0x30, 0xbd, 0x93, 0xb4, 0x04, 0xe0, 0xab, 0xdf, 0xd6, 0x8b, 0xd9, 0xdb, 0x5b, 0x8b, 0x58, 0x98, 0x5c, 0x8b, 0x58, 0x98, 0x1e, 0xc8, 0x8b, 0xd9, 0xdb, 0x5b, 0x8b, 0x58, 0x98, 0xdc, 0x8b, 0x58, 0x98, 0x1e, 0xc8, 0x8b, 0xd9, 0xdb, 0xdb, 0x8b, 0x58, 0x98, 0x5c, 0x8b, 0x58, 0x98, 0x1e, 0xc8, 0x8b, 0xd9, 0xdb, 0xdb, 0x8b, 0x58, 0x98, 0xdc, 0x8b, 0x58, 0x98, 0x5e, 0xb7, 0xc1, 0x13, 0xed, 0xff, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb8, 0xa7, 0x69, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa2, 0x2c, 0x24, 0x03, 0x89, 0xb2, 0x30, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x27, 0x3d, 0xc1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x94, 0x85, 0xc1, 0xc1, 0x8b, 0x0c, 0x00, 0x0f, 0xce, 0x9b, 0xa7, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe9, 0x40, 0x4d, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x65, 0x21, 0x19, 0xc8, 0x94, 0x85, 0xd1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xca, 0x42, 0x34, 0x90, 0x29, 0x0b, 0xf1, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xb2, 0x90, 0x0f, 0x64, 0xca, 0xc2, 0xe6, 0xe0, 0x8c, 0x84, 0xda, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xda, 0x50, 0xd3, 0x06, 0x05, 0x69, 0xec, 0x06, 0xcd, 0xbd, 0x59, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x62, 0xd4, 0xb4, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x91, 0x9a, 0x0e, 0xd6, 0xcc, 0x86, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xd2, 0xd4, 0x74, 0xb0, 0x58, 0x28, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x56, 0xa8, 0xa6, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x38, 0xd5, 0x74, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe4, 0xab, 0xa6, 0x83, 0xe5, 0xc8, 0xc2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x6f, 0x35, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa0, 0xc4, 0xa6, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xde, 0x35, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe8, 0xc1, 0xa6, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xfc, 0x35, 0x1d, 0x2c, 0x24, 0x0c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6b, 0xaf, 0xe9, 0x60, 0xed, 0x64, 0x68, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x7e, 0x35, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x32, 0xb1, 0xa6, 0x83, 0x85, 0x8a, 0xa1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x9a, 0x35, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x72, 0xb9, 0xa6, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xb8, 0x35, 0x1d, 0x2c, 0x24, 0x0c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x4b, 0xad, 0xe9, 0x60, 0xed, 0x64, 0x68, 0x55, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x91, 0x8d, 0x4d, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0xf8, 0xbe, 0x7d, 0xc0, 0xa7, 0x7b, 0x93, 0x73, 0x37, 0x28, 0xa1, 0x63, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x59, 0x88, 0x07, 0x92, 0x65, 0x61, 0xb9, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xb2, 0x90, 0x0f, 0x24, 0xcb, 0xc2, 0xe6, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x59, 0x18, 0x0d, 0x24, 0xcb, 0xc2, 0xf0, 0xe0, 0xbc, 0x79, 0xda, 0x41, 0x98, 0x8e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x04, 0xd9, 0xb4, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x26, 0x9b, 0x0e, 0x8e, 0xb1, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x5f, 0x36, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5e, 0xcd, 0xa6, 0x83, 0xb5, 0x06, 0xb0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x7e, 0x36, 0x6d, 0x78, 0x5b, 0xe7, 0xe0, 0x9c, 0x27, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb8, 0x68, 0xd3, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xee, 0xcd, 0xb2, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x32, 0x6d, 0xda, 0xe0, 0xe8, 0x3a, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3f, 0x6a, 0xd3, 0xc1, 0x9b, 0x90, 0x00, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x8e, 0xb5, 0x69, 0x83, 0x13, 0xfb, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0xaf, 0x4d, 0x07, 0x85, 0xc5, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x02, 0x6d, 0xd3, 0x86, 0xaf, 0x70, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x6d, 0x9b, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xcb, 0x42, 0x3a, 0x90, 0x2e, 0x0b, 0xfb, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x97, 0x85, 0x78, 0x20, 0x5d, 0x16, 0x26, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xcb, 0xc2, 0x66, 0x20, 0x5d, 0x16, 0xe6, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2e, 0x0b, 0xa3, 0x81, 0x74, 0x59, 0x18, 0x1e, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2e, 0x0b, 0xcb, 0x81, 0x74, 0x59, 0x58, 0x1f, 0x9c, 0x37, 0x4f, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x2d, 0xb7, 0x69, 0xc3, 0xbb, 0x79, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xf0, 0x36, 0x6d, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xb2, 0x10, 0x0e, 0xe4, 0xcb, 0x42, 0x7a, 0x10, 0x82, 0x0f, 0x1b, 0x3c, 0xd8, 0x06, 0xb0, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xae, 0xdf, 0xa6, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x20, 0xdc, 0xb4, 0x41, 0x31, 0x89, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xcc, 0x42, 0x38, 0x90, 0x30, 0x0b, 0x8b, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xb3, 0x90, 0x0e, 0x24, 0xcc, 0x42, 0x7c, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x98, 0x85, 0x7c, 0x20, 0x61, 0x16, 0x06, 0x07, 0x21, 0xf8, 0xd0, 0xc1, 0x0b, 0xd2, 0x00, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x35, 0x6e, 0xda, 0xe0, 0xe8, 0x3a, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4d, 0x72, 0xd3, 0x86, 0xb7, 0x75, 0x0e, 0x5e, 0x90, 0x06, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x17, 0x73, 0xd3, 0x06, 0x27, 0xf6, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x9e, 0x9b, 0x0e, 0x1a, 0x95, 0xff, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xa0, 0x6e, 0xda, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd7, 0xba, 0xe9, 0xa0, 0x44, 0xaa, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x5f, 0xbb, 0x69, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x17, 0xa4, 0x01, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x79, 0x37, 0x6d, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xe0, 0x05, 0x69, 0x80, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x87, 0x37, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x9a, 0x85, 0x64, 0x20, 0x69, 0x16, 0x66, 0x1b, 0xfe, 0x5c, 0x1a, 0x7c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x59, 0xc8, 0x0e, 0x9e, 0x81, 0x08, 0xb8, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xb3, 0x10, 0x0e, 0x24, 0xcd, 0xc2, 0xe0, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x59, 0x58, 0x0c, 0x24, 0xcd, 0xc2, 0xea, 0xe0, 0xbc, 0x79, 0xda, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3b, 0x79, 0xd3, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x59, 0x48, 0x06, 0xb2, 0x66, 0x61, 0xbb, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xb3, 0x10, 0x0d, 0x64, 0xcd, 0x42, 0x7c, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x2c, 0xe4, 0x03, 0x59, 0xb3, 0x30, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x59, 0x18, 0x0c, 0x64, 0xcd, 0xc2, 0xe8, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x59, 0x58, 0x0d, 0x64, 0xcd, 0xc2, 0xf2, 0xe0, 0xbc, 0x79, 0x5a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0xe7, 0x4d, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xa8, 0x37, 0x6d, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xb3, 0x10, 0x0e, 0xa4, 0xcd, 0x42, 0x7a, 0x50, 0xa4, 0x62, 0x1e, 0x9c, 0xdb, 0xf9, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0xda, 0x9b, 0x36, 0x38, 0xba, 0x0e, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xf9, 0xde, 0xb4, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0xe4, 0x9b, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0xf0, 0x82, 0x34, 0xc0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0xe9, 0x9b, 0x0e, 0x0e, 0xe7, 0x7c, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x7d, 0xdf, 0xb4, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xf4, 0x9b, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x52, 0x7f, 0xd3, 0xc1, 0x72, 0x64, 0xe1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x03, 0x9c, 0x36, 0x3c, 0x8b, 0xb7, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc8, 0x02, 0xa7, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x86, 0xe0, 0x74, 0xb0, 0x0c, 0xfb, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x50, 0x06, 0xa7, 0x83, 0xa7, 0xaf, 0x02, 0xd6, 0xa0, 0x6d, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf5, 0x10, 0x4e, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x79, 0xc2, 0xe9, 0x60, 0x19, 0xf6, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x0d, 0x18, 0x4e, 0x1b, 0xde, 0xd6, 0x19, 0x3c, 0x3d, 0x38, 0xb7, 0xf3, 0x55, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xcf, 0xe1, 0xb4, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x83, 0x73, 0x3b, 0x5f, 0xcd, 0x1a, 0x34, 0x16, 0x83, 0xb9, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xd0, 0x58, 0x0c, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb2, 0x88, 0xd3, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xfe, 0x74, 0x6f, 0x6d, 0x62, 0x73, 0x74, 0x6f, 0x6e, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0x26, 0x4e, 0x07, 0xef, 0xd3, 0xfd, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x7c, 0xc5, 0xe9, 0xf0, 0xc1, 0x6a, 0x87, 0x53, 0x6c, 0x0d, 0x1e, 0xd0, 0x87, 0xb7, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0x01, 0x7d, 0x78, 0x0d, 0xe0, 0xb7, 0x56, 0xc6, 0x66, 0x97, 0xe6, 0x06, 0x22, 0x17, 0xe6, 0x76, 0x56, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x80, 0x3e, 0xbc, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xdc, 0x18, 0xa7, 0x0d, 0x96, 0x2e, 0x57, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x4d, 0xe3, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0x6e, 0x9c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x81, 0x8e, 0xd3, 0x41, 0xe0, 0xa8, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xed, 0xe3, 0x74, 0x10, 0x82, 0x0f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x54, 0xe4, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5c, 0x21, 0xa7, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6c, 0x24, 0xa7, 0x83, 0x12, 0xf1, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8e, 0x26, 0xa7, 0x83, 0x67, 0x29, 0x84, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x35, 0x94, 0xd3, 0xc1, 0xb3, 0x14, 0x42, 0x56, 0xc0, 0xa7, 0x0b, 0xab, 0xa3, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0x8c, 0x1c, 0xb0, 0x01, 0x78, 0x36, 0x4b, 0x63, 0x2b, 0x03, 0x49, 0x6b, 0x83, 0x7b, 0x93, 0xa3, 0x03, 0x31, 0x93, 0x7b, 0x6b, 0x03, 0x79, 0x61, 0x4b, 0x13, 0x03, 0x79, 0x93, 0x03, 0x79, 0x99, 0xab, 0x93, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x18, 0x39, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa8, 0x95, 0xd3, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xde, 0x72, 0xda, 0xf0, 0xe7, 0xd2, 0x86, 0xb9, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xc9, 0x72, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xfa, 0x72, 0x3a, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x1c, 0x73, 0x3a, 0x58, 0xaf, 0xf5, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa9, 0x6a, 0x4e, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0x01, 0x75, 0xfa, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x04, 0x9a, 0xd3, 0xc1, 0x7a, 0xad, 0xe7, 0x56, 0xc0, 0x87, 0x4b, 0x63, 0x2b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0x14, 0x1f, 0xb0, 0x01, 0x78, 0x86, 0x93, 0x2b, 0x83, 0x93, 0x7b, 0x1b, 0x2b, 0x9b, 0x9b, 0x2b, 0x23, 0x03, 0x41, 0x7b, 0x7b, 0x73, 0x03, 0x99, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0x03, 0x31, 0x4b, 0x63, 0x2b, 0x57, 0x02, 0xf0, 0xf4, 0xa5, 0x05, 0x04, 0x64, 0xae, 0x4e, 0xae, 0xc5, 0x2c, 0x8d, 0xad, 0x0c, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x44, 0x47, 0x07, 0x04, 0x64, 0xae, 0x4e, 0xce, 0x2c, 0x6c, 0xac, 0x0c, 0x24, 0xad, 0x0d, 0xee, 0x4d, 0x8e, 0x6e, 0x0e, 0xc4, 0x4c, 0xee, 0xad, 0x0d, 0xe4, 0x65, 0xae, 0x4e, 0x5e, 0x02, 0xf0, 0xf4, 0x65, 0x05, 0x04, 0x84, 0x2d, 0x4d, 0xac, 0xc5, 0x2c, 0x8d, 0xad, 0x0c, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x44, 0x47, 0x07, 0x04, 0x84, 0x2d, 0x4d, 0x4c, 0x2e, 0x4c, 0x2e, 0x0f, 0x24, 0xad, 0x0d, 0xee, 0x4d, 0x8e, 0x6e, 0x0e, 0xc4, 0x4c, 0xee, 0xad, 0x0d, 0xe4, 0x85, 0x2d, 0x4d, 0x5c, 0x02, 0xf0, 0xfa, 0xa5, 0x07, 0x04, 0xc4, 0x2c, 0x6c, 0xac, 0x0c, 0x04, 0xe4, 0x05, 0x2e, 0x8c, 0x0e, 0x0d, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x44, 0x47, 0x07, 0x04, 0x24, 0xad, 0x0d, 0xee, 0x4d, 0x8e, 0x6e, 0x0e, 0x44, 0xac, 0x2e, 0x8d, 0x8d, 0x0e, 0x04, 0xed, 0xed, 0xcd, 0x0d, 0xc4, 0x2c, 0x8d, 0xad, 0x0c, 0x24, 0x8c, 0x0e, 0x04, 0x2e, 0x8c, 0x0e, 0x5d, 0x02, 0xe0, 0x85, 0x17, 0x3f, 0x10, 0x10, 0xb3, 0xb0, 0xb1, 0x32, 0x10, 0x10, 0xba, 0x3c, 0xb8, 0x32, 0x10, 0x10, 0x90, 0x17, 0xb8, 0x30, 0x3a, 0x34, 0x10, 0x10, 0x1d, 0x1d, 0x10, 0x90, 0xb4, 0x36, 0xb8, 0x37, 0x39, 0xba, 0x39, 0x10, 0xb1, 0xba, 0x34, 0x36, 0x3a, 0x10, 0xb4, 0xb7, 0x37, 0x37, 0x10, 0xb3, 0x34, 0xb6, 0xb2, 0x39, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x10, 0xb2, 0x34, 0xb9, 0xb2, 0x31, 0xba, 0x37, 0xb9, 0x7c, 0x09, 0xc0, 0xf3, 0x97, 0x12, 0x10, 0x10, 0xb3, 0xb0, 0xb1, 0x32, 0x10, 0x90, 0x92, 0xb6, 0x30, 0xb9, 0x35, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1d, 0x1d, 0x10, 0x90, 0xb4, 0x36, 0xb8, 0x37, 0x39, 0xba, 0x39, 0x90, 0xb6, 0x30, 0xb9, 0x35, 0x10, 0xb2, 0x32, 0xb3, 0x34, 0xb7, 0x34, 0xba, 0xb4, 0x37, 0x37, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x90, 0x97, 0xb6, 0x30, 0x79, 0x09, 0xc0, 0xef, 0x17, 0x12, 0x10, 0x10, 0xb3, 0xb0, 0xb1, 0x32, 0x10, 0x90, 0x12, 0x33, 0xb9, 0xb7, 0x36, 0x10, 0x90, 0x12, 0xba, 0x37, 0x10, 0x10, 0x10, 0x10, 0x1d, 0x1d, 0x10, 0x90, 0xb4, 0x36, 0xb8, 0x37, 0x39, 0xba, 0x39, 0x90, 0xb6, 0x30, 0xb9, 0x35, 0x90, 0xb1, 0x37, 0x37, 0xbb, 0x32, 0x39, 0xba, 0x32, 0x39, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x90, 0x97, 0xb6, 0x30, 0x79, 0x09, 0xc0, 0xe3, 0x17, 0x15, 0x10, 0x10, 0xb3, 0xb0, 0xb1, 0x32, 0x10, 0x90, 0x92, 0xb6, 0x30, 0xb9, 0x35, 0x10, 0x90, 0x17, 0xb8, 0x30, 0x3a, 0x34, 0x10, 0x10, 0x1d, 0x1d, 0x10, 0x90, 0x3a, 0x37, 0xb1, 0xba, 0x34, 0x36, 0x3a, 0x10, 0xb3, 0x34, 0xb6, 0x32, 0x90, 0xb4, 0x36, 0xb8, 0x37, 0x39, 0xba, 0x39, 0x16, 0x90, 0xb0, 0x39, 0x90, 0xb6, 0x30, 0xb9, 0xb5, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0x8a, 0x0f, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xff, 0xe6, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xe9, 0x9c, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xcd, 0xd5, 0xc9, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0x72, 0x4e, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x85, 0x78, 0x4e, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x31, 0x9f, 0xd3, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x61, 0xe4, 0x80, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x29, 0x84, 0x4e, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xd8, 0xd2, 0xc4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xce, 0x40, 0xa7, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xda, 0x43, 0xa7, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x7e, 0xd1, 0xe9, 0xe0, 0x9d, 0x3e, 0x81, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x30, 0xe9, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0x52, 0x64, 0x7b, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x20, 0x9d, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x2d, 0x9d, 0x0e, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe4, 0x4d, 0xa7, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x0f, 0xea, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0x73, 0xbf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xe6, 0xe9, 0x74, 0xb0, 0x5e, 0xeb, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x00, 0x54, 0xa7, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x30, 0xfd, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x2b, 0x75, 0x3a, 0x38, 0x23, 0xa1, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0xaf, 0x4e, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xe4, 0xc2, 0xf4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x92, 0x56, 0xa7, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa0, 0x59, 0xa7, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x14, 0xd7, 0x69, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xf7, 0x3a, 0x6d, 0xf8, 0x73, 0x69, 0xc3, 0xdc, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xed, 0x3a, 0x1d, 0xac, 0xd7, 0x7a, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x8a, 0xd8, 0x69, 0xc3, 0x9f, 0x4b, 0x1b, 0x94, 0xd0, 0xb1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0xc1, 0x4e, 0x07, 0x0b, 0xac, 0xa0, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x64, 0x76, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x07, 0xd3, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfe, 0x64, 0xa7, 0x83, 0x33, 0x12, 0x6a, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x47, 0xed, 0xb4, 0xe1, 0xcf, 0xa5, 0x01, 0xaf, 0x2d, 0x4c, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x8f, 0x76, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xbf, 0x76, 0x3a, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0xba, 0x9d, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x96, 0xb8, 0xd3, 0x86, 0x3f, 0x97, 0x36, 0xcc, 0xfd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf2, 0xb7, 0xd3, 0xc1, 0x7a, 0xad, 0xe7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0xd1, 0x9d, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x29, 0xf2, 0x74, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xc7, 0xdc, 0xe9, 0xe0, 0x7d, 0x1b, 0x22, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2c, 0xbc, 0xd3, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb1, 0x30, 0x7d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xc4, 0xdd, 0x69, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x87, 0xde, 0xe9, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xcc, 0x77, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0xfe, 0x4e, 0x1b, 0xfe, 0x5c, 0xda, 0x30, 0xf7, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x25, 0xfc, 0x4e, 0x07, 0xeb, 0xb5, 0x9e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x29, 0x78, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x2d, 0xcc, 0x8f, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x0a, 0x3c, 0x1d, 0x3c, 0x5e, 0xb5, 0xaf, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x68, 0x78, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x6b, 0xec, 0x66, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x14, 0x9e, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x21, 0x9e, 0x0e, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf2, 0x8a, 0xa7, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xb1, 0xf1, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0x73, 0xbf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x88, 0xf1, 0x74, 0xb0, 0x5e, 0xeb, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc8, 0x90, 0xa7, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x8a, 0x3c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xf7, 0x78, 0x3a, 0x78, 0xdf, 0x86, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa9, 0x28, 0x4f, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x60, 0xfa, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x61, 0xf2, 0x74, 0x70, 0x46, 0x42, 0xad, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x60, 0x9e, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0x9a, 0x99, 0xf7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7d, 0xcb, 0xd3, 0xc1, 0x02, 0x0b, 0xe7, 0x56, 0x83, 0x47, 0xc0, 0xee, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x70, 0x64, 0x08, 0x3d, 0x78, 0x04, 0xec, 0x5e, 0x03, 0xf8, 0xc1, 0xc9, 0xbd, 0xd1, 0xbd, 0xb5, 0x8c, 0xbd, 0xb5, 0xb5, 0xa5, 0xd1, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x3c, 0x02, 0x76, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xe1, 0xe6, 0x69, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xf0, 0x3c, 0x6d, 0x78, 0xe2, 0x7d, 0x83, 0x27, 0x2f, 0xee, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x30, 0xe7, 0x69, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf4, 0xe7, 0xe9, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x1f, 0x7a, 0x3a, 0x78, 0xe9, 0xa5, 0x5e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x2b, 0x3d, 0x6d, 0x78, 0xe2, 0x7d, 0x83, 0x85, 0x58, 0xdc, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x42, 0x7a, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x74, 0x7a, 0x3a, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x96, 0x7a, 0x3a, 0x38, 0x23, 0xa1, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x64, 0xf5, 0xb4, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x91, 0xf5, 0x74, 0xb0, 0x0a, 0x32, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb0, 0xae, 0xa7, 0x83, 0xd7, 0xd1, 0xd9, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x0e, 0xf6, 0x74, 0xf0, 0x46, 0x88, 0xbd, 0x6a, 0x35, 0x78, 0xc2, 0x2f, 0xdf, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x27, 0xfc, 0xf2, 0x35, 0x80, 0xef, 0xd8, 0x5b, 0x1b, 0x5c, 0x1d, 0x5d, 0x19, 0x19, 0x08, 0x59, 0x19, 0x1b, 0x5d, 0xd8, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x13, 0x7e, 0xf9, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0xcd, 0x9e, 0x36, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0xd3, 0x9e, 0x36, 0x3c, 0xf1, 0xbe, 0xc1, 0x0b, 0xd6, 0xf9, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x20, 0xdb, 0xd3, 0xc1, 0x0b, 0xdc, 0xf9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x82, 0x7b, 0x3a, 0x08, 0xc1, 0x87, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xa1, 0x7b, 0xda, 0xf0, 0xc4, 0xfb, 0x06, 0x2f, 0x94, 0xe7, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0x76, 0x4f, 0x07, 0x6f, 0xa8, 0xe7, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xa5, 0xef, 0x69, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x7a, 0x4f, 0x07, 0xef, 0x45, 0x20, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x20, 0xc0, 0xa7, 0x0d, 0x4f, 0xbc, 0x6f, 0xf0, 0xc0, 0x7d, 0xbe, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x2d, 0xf8, 0x74, 0xf0, 0xe4, 0x7f, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0x12, 0x9f, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x6c, 0xf8, 0x74, 0xf0, 0x46, 0x88, 0xbd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x1f, 0x9f, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xd3, 0xf8, 0x74, 0xf0, 0x5e, 0x04, 0x92, 0x3a, 0x9c, 0x62, 0x2d, 0x80, 0xdf, 0xd8, 0x9b, 0x1c, 0x59, 0x0b, 0xdd, 0x5b, 0xcb, 0x5d, 0x98, 0x19, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x38, 0xf9, 0xb4, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1b, 0x15, 0x92, 0x81, 0x6c, 0x54, 0x88, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x01, 0x49, 0x74, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x51, 0x21, 0x3a, 0x78, 0x40, 0x77, 0xe0, 0xc1, 0x09, 0x48, 0x74, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd4, 0xf2, 0x69, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3a, 0x2a, 0x24, 0x03, 0xe9, 0xa8, 0x90, 0x1e, 0xbc, 0x90, 0x0f, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x24, 0xf3, 0x69, 0x83, 0x82, 0x34, 0x76, 0x0d, 0xdf, 0xb7, 0x0f, 0xf0, 0xdc, 0x95, 0x99, 0xd1, 0xcd, 0x1b, 0x94, 0xd0, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x2a, 0xe4, 0x03, 0xf9, 0xa8, 0x30, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x54, 0x18, 0x0c, 0xe4, 0xa3, 0xc2, 0xe8, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x54, 0x58, 0x0d, 0xe4, 0xa3, 0xc2, 0xf2, 0xe0, 0x59, 0x0a, 0x21, 0x1d, 0x84, 0xe9, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe1, 0x9b, 0x4f, 0x1b, 0x14, 0x9d, 0xc6, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x7a, 0x3e, 0x1d, 0x94, 0x48, 0xd5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x8b, 0x3e, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xda, 0xd2, 0xa7, 0x83, 0x05, 0x3b, 0xe8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xa9, 0x3e, 0x6d, 0x78, 0x5b, 0xe7, 0xe0, 0x78, 0x24, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x72, 0xeb, 0xd3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x84, 0x7d, 0x3a, 0x58, 0xa8, 0x18, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x37, 0xed, 0xd3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xbd, 0x7d, 0x3a, 0x58, 0xa8, 0x49, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x00, 0xef, 0xd3, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xf5, 0x7d, 0x3a, 0x58, 0x70, 0x27, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x9b, 0xf0, 0xd3, 0xc1, 0x82, 0x3b, 0xd1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x2f, 0x7e, 0xda, 0xf0, 0xa0, 0xe4, 0x06, 0x0d, 0x8c, 0x5e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x23, 0x3f, 0x1d, 0x34, 0x17, 0x7c, 0x5c, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x37, 0x3f, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x48, 0x85, 0x6c, 0x20, 0x23, 0x15, 0x06, 0x1b, 0xfe, 0x5c, 0xda, 0x20, 0xcd, 0xcc, 0x7b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x52, 0x21, 0x3c, 0x78, 0x46, 0x83, 0xe0, 0xc1, 0x02, 0x0b, 0xe7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9e, 0xe8, 0xa7, 0x0d, 0x96, 0x08, 0x3e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xa9, 0x10, 0x0d, 0xa4, 0xa4, 0x42, 0x7c, 0xf0, 0x2c, 0x85, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xae, 0xed, 0xa7, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xe2, 0xfd, 0x74, 0xd0, 0x14, 0x99, 0xe5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0xe2, 0x4f, 0x1b, 0x2c, 0x90, 0x7b, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x3c, 0x7f, 0x3a, 0x28, 0x28, 0x32, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x58, 0x7f, 0x3a, 0x68, 0x34, 0x78, 0xa0, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x34, 0xf8, 0xa7, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x31, 0xff, 0xb4, 0x41, 0x31, 0x89, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xa4, 0x42, 0x38, 0x90, 0x93, 0x0a, 0x8b, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xa9, 0x90, 0x0e, 0xe4, 0xa4, 0x42, 0x7c, 0x10, 0xa6, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x2a, 0xe4, 0x03, 0x39, 0xa9, 0x30, 0x38, 0x08, 0xc1, 0x87, 0x36, 0x78, 0xed, 0x79, 0x60, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xdb, 0x3f, 0x6d, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0xe0, 0x89, 0x29, 0x82, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc9, 0xf9, 0x4f, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x8a, 0xff, 0x69, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xfb, 0x3f, 0x1d, 0x2c, 0x9f, 0x42, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x34, 0x00, 0xea, 0xa0, 0xa0, 0xc8, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3a, 0x02, 0xa8, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x73, 0x00, 0xb5, 0xe1, 0x6d, 0x9d, 0x81, 0x9f, 0xcb, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x7a, 0x01, 0x6a, 0xc3, 0xdb, 0x3a, 0x07, 0x4f, 0x4c, 0x11, 0xac, 0xd5, 0xe0, 0x4d, 0x91, 0x23, 0x1b, 0x9e, 0x27, 0xd9, 0xe0, 0x35, 0xe3, 0x76, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x6f, 0x8a, 0x1c, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x95, 0x80, 0xda, 0x20, 0xd4, 0x10, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x4a, 0x48, 0x06, 0x52, 0x2b, 0x61, 0xb2, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb5, 0x12, 0xa2, 0x81, 0xd4, 0x4a, 0xc8, 0x0f, 0x5e, 0xff, 0x9d, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x56, 0xc2, 0x60, 0x20, 0xb5, 0x12, 0x16, 0x07, 0x05, 0x45, 0x66, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x10, 0x50, 0x1b, 0x04, 0xed, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf9, 0x15, 0x50, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xc2, 0xa5, 0x95, 0xc9, 0x81, 0xc8, 0x95, 0x89, 0xbd, 0xbd, 0xd1, 0x95, 0x91, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4a, 0x0c, 0xa8, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0x50, 0x25, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x00, 0x0f, 0xa8, 0x83, 0x10, 0x7c, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe4, 0x10, 0xa8, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x99, 0x2b, 0xa3, 0x03, 0x81, 0x2b, 0x93, 0x6b, 0x4b, 0x9b, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x39, 0x93, 0x7b, 0xab, 0x83, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x65, 0x24, 0x50, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xa9, 0x4d, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x2c, 0x50, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0x45, 0xd2, 0xde, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xec, 0x14, 0xa8, 0x83, 0xa3, 0x36, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x01, 0x35, 0x50, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xc6, 0xca, 0xee, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x36, 0x19, 0xa8, 0x83, 0xf7, 0x27, 0xe3, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x80, 0x0e, 0xd4, 0x86, 0x27, 0xde, 0x37, 0x78, 0x03, 0x2f, 0xde, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xe4, 0x81, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x93, 0x51, 0x82, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x10, 0x82, 0x3a, 0x08, 0xc1, 0x87, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x2e, 0x82, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xeb, 0x4c, 0xee, 0xad, 0x0e, 0x0e, 0xa4, 0x6e, 0x2e, 0xec, 0xac, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x21, 0x41, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0xe9, 0x4a, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x41, 0x41, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x16, 0x49, 0x7b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0x9b, 0xa0, 0x0e, 0x8e, 0xda, 0xa0, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x66, 0x05, 0xb5, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x3f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x20, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x1f, 0x0b, 0x6a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xa7, 0x47, 0x85, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xc1, 0xa0, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0x91, 0x95, 0xcd, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x5e, 0x50, 0x07, 0x8f, 0xc2, 0x0b, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6c, 0x32, 0xa8, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xd3, 0xdc, 0xe8, 0xca, 0xe4, 0xdc, 0xc2, 0xd8, 0x40, 0xca, 0xc8, 0xd2, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xdd, 0x19, 0xd4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x1e, 0xf1, 0x13, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xde, 0x1b, 0xd4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb2, 0xb2, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x9d, 0x0d, 0xea, 0xe0, 0x51, 0x78, 0x21, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xd7, 0x41, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xd5, 0x04, 0xa4, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0x73, 0x50, 0x07, 0xcf, 0x78, 0xe5, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xb0, 0x84, 0x64, 0x20, 0xc3, 0x12, 0xbe, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x2b, 0x57, 0x06, 0xf7, 0x26, 0x47, 0x07, 0x92, 0xe6, 0x36, 0x47, 0x17, 0xc6, 0xc6, 0xb6, 0xc1, 0x7a, 0x95, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc3, 0x12, 0xc2, 0x81, 0x0c, 0x4b, 0x58, 0x1c, 0xbc, 0x3f, 0xd8, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x55, 0x0f, 0xea, 0xe0, 0x05, 0x02, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x01, 0x42, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x59, 0x86, 0x47, 0x57, 0x26, 0xe7, 0x16, 0xc6, 0x06, 0x52, 0x46, 0x96, 0x46, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0x05, 0xa1, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x50, 0x82, 0x7a, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xaf, 0x08, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0xac, 0x6c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x43, 0x84, 0x3a, 0x78, 0x14, 0x5e, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x75, 0x91, 0x50, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xd0, 0x10, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x77, 0x84, 0x3a, 0x7c, 0xb0, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfc, 0x25, 0xd4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb3, 0xb4, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xab, 0x12, 0xea, 0xe0, 0x35, 0xe3, 0x78, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xc6, 0x09, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x3d, 0xa1, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x6a, 0x2b, 0x93, 0x3b, 0x2b, 0x03, 0x21, 0x2b, 0x9b, 0x5b, 0x9b, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xe3, 0x5b, 0x82, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x38, 0x85, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x39, 0x58, 0xcd, 0x6e, 0xbc, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0xac, 0x6c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x23, 0x85, 0x3a, 0x78, 0x14, 0x5e, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x8d, 0xad, 0x50, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xd0, 0xca, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7e, 0x55, 0xa8, 0x83, 0x63, 0xab, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0xb6, 0x50, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0x85, 0xa5, 0xe9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe3, 0x2c, 0xd4, 0xc1, 0xa3, 0xf0, 0x42, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xeb, 0x85, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x9b, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0xdb, 0xf0, 0xe7, 0xd2, 0x80, 0x37, 0x16, 0x36, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xeb, 0x42, 0x1d, 0xbc, 0x55, 0x2f, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x52, 0x62, 0xa8, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x83, 0x17, 0xa7, 0xd2, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xe6, 0x22, 0xbb, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0x84, 0xa1, 0x0e, 0x5e, 0x89, 0xf8, 0xd1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xcd, 0xc9, 0x50, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x8b, 0x19, 0x6a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x9f, 0xb6, 0x32, 0xb9, 0xb3, 0x32, 0x90, 0xb6, 0x30, 0xb7, 0xbc, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0xc3, 0x86, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1b, 0x35, 0xd4, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x5e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x64, 0x65, 0x73, 0x6b, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xc8, 0xca, 0xe6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xee, 0x68, 0xa8, 0x83, 0x47, 0xe1, 0x85, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xae, 0x0d, 0xb5, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x87, 0x58, 0xd8, 0x5c, 0x19, 0x08, 0x59, 0xd9, 0xdc, 0xda, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x31, 0x70, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x85, 0x0d, 0x75, 0xf0, 0x54, 0xa3, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0xc5, 0xa1, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf8, 0xda, 0xca, 0xe4, 0xce, 0xca, 0xe6, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x28, 0xe9, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x02, 0x87, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x33, 0x87, 0x3a, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0xd9, 0xa1, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xcb, 0x3b, 0xd4, 0xc1, 0x53, 0x8d, 0x42, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x9d, 0x87, 0x3a, 0x78, 0x25, 0xe2, 0x47, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x57, 0x3e, 0xd4, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x9e, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x6e, 0x69, 0x78, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x7f, 0x1f, 0x6a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x4f, 0xcf, 0x09, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x7f, 0x20, 0x6a, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0xdc, 0x1b, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x16, 0x10, 0x75, 0xb0, 0x5e, 0xeb, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x88, 0x85, 0xa8, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x62, 0x65, 0xed, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1f, 0x42, 0xd4, 0xc1, 0x53, 0x82, 0x43, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x02, 0x22, 0x6a, 0xc3, 0x13, 0xef, 0x1b, 0x3c, 0x98, 0x19, 0x6f, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x4a, 0x44, 0x1d, 0x3c, 0x21, 0x1a, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8e, 0x8c, 0xa8, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x70, 0x6f, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa3, 0x45, 0xd4, 0xc1, 0x7a, 0xad, 0xe7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xe7, 0x88, 0xda, 0xf0, 0xc4, 0xfb, 0x06, 0x8f, 0xcb, 0xc8, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x1f, 0x51, 0x07, 0x0f, 0xf0, 0xc8, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xc1, 0x24, 0x6a, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0xdc, 0x1b, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x37, 0x12, 0xb5, 0xe1, 0x83, 0xf9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x5a, 0xa2, 0x0e, 0xd6, 0x6b, 0x3d, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0xa5, 0x44, 0x1d, 0x3c, 0x25, 0x38, 0xa4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x61, 0xa2, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x63, 0x2e, 0xcf, 0x6d, 0x0c, 0x4d, 0xee, 0xcd, 0xed, 0xad, 0x6e, 0x0e, 0x64, 0xec, 0xad, 0xad, 0x2d, 0x8d, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xcd, 0x44, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0xc9, 0x40, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xee, 0x44, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x23, 0x2b, 0x9b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0x71, 0xa2, 0x0e, 0x1e, 0x85, 0x17, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x80, 0x50, 0xd4, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xbc, 0xb7, 0x75, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xed, 0x27, 0xea, 0xe0, 0xd1, 0x61, 0x7f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x26, 0x45, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x86, 0x2d, 0xbf, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0x8e, 0xa2, 0x0e, 0x9e, 0x4e, 0xcd, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x21, 0x4e, 0x51, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x31, 0x86, 0x16, 0xe6, 0x76, 0x56, 0x06, 0x02, 0x57, 0x26, 0xd7, 0x96, 0x36, 0x37, 0x97, 0xf6, 0xe6, 0x36, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0xa1, 0xa2, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0xd0, 0x91, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0xb1, 0xa2, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0x91, 0x95, 0xcd, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x31, 0x56, 0x51, 0x07, 0x8f, 0xc2, 0x0b, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xe8, 0x2b, 0x6a, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0xa0, 0x4e, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xe5, 0x8a, 0x3a, 0x38, 0x23, 0xa1, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x65, 0x16, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0x4f, 0x2e, 0x8d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x1e, 0x8b, 0xda, 0xf0, 0xef, 0xfc, 0x1a, 0xac, 0xbc, 0x36, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x56, 0x8b, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x53, 0xae, 0x6c, 0xae, 0xae, 0xad, 0x0c, 0x64, 0xec, 0xad, 0xad, 0x2d, 0x8d, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xb5, 0x45, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0xa1, 0x3b, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xcb, 0x45, 0x1d, 0x84, 0xe0, 0x43, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xda, 0x45, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x0f, 0x27, 0x97, 0xd6, 0x56, 0x06, 0x32, 0xc6, 0x16, 0x96, 0x07, 0x32, 0x47, 0xf7, 0x26, 0x57, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0xf2, 0xa2, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x76, 0x9a, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x02, 0xa3, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0x63, 0xed, 0x66, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xad, 0x7e, 0x51, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0x84, 0x51, 0x07, 0x25, 0x62, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0x89, 0x51, 0x07, 0x6f, 0x84, 0xd8, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x93, 0x31, 0xea, 0xe0, 0x75, 0x74, 0x76, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x46, 0x64, 0xd4, 0x86, 0x27, 0xde, 0x37, 0x78, 0xe3, 0xe1, 0xdf, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x9d, 0x8c, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xe3, 0x8b, 0x82, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xdd, 0x8c, 0xda, 0xf0, 0xe7, 0xd2, 0x80, 0x47, 0x56, 0x36, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x64, 0x46, 0x1d, 0x3c, 0x0a, 0x2f, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x18, 0xd1, 0xa8, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x72, 0x65, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe7, 0x67, 0xd4, 0xc1, 0x13, 0xe2, 0xfe, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd5, 0x34, 0x6a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x83, 0xc6, 0x04, 0x4b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x49, 0xa9, 0x51, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0x93, 0xc5, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x51, 0x6c, 0xd4, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x52, 0x5a, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xba, 0x46, 0x1d, 0x84, 0xe9, 0x58, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xd3, 0x46, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x4b, 0x18, 0x1c, 0x1c, 0xc8, 0x1c, 0x5d, 0x18, 0x5d, 0x19, 0xc8, 0x5c, 0x9d, 0xd8, 0xdc, 0x98, 0x5c, 0x9a, 0x58, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xbc, 0x8d, 0x3a, 0x78, 0xc6, 0x4d, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0xbd, 0x51, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xda, 0x8d, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x0b, 0x8e, 0x3a, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x35, 0x8e, 0x3a, 0x08, 0xc1, 0x87, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x71, 0x39, 0x6a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3e, 0xe8, 0xde, 0xda, 0xc4, 0xe6, 0xe8, 0xde, 0xdc, 0xca, 0x40, 0xe6, 0xe0, 0xca, 0xc6, 0xd2, 0xcc, 0xd2, 0xc6, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8a, 0x73, 0xd4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x9e, 0xd5, 0x13, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x89, 0x75, 0xd4, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x61, 0x78, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x39, 0x1d, 0xb5, 0xe1, 0xdf, 0xf9, 0x0d, 0x16, 0x8d, 0x1e, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x78, 0x09, 0xc9, 0x40, 0xe2, 0x25, 0xfc, 0xd8, 0xf0, 0xc4, 0xfb, 0x06, 0x8f, 0x99, 0xba, 0xdb, 0x60, 0xbd, 0x4a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x78, 0x09, 0xe1, 0x40, 0xe2, 0x25, 0x2c, 0x0e, 0x5e, 0x6f, 0xef, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xbb, 0x1d, 0x75, 0xf0, 0x02, 0x81, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf3, 0x12, 0x92, 0x81, 0xcc, 0x4b, 0xf8, 0xb2, 0xe1, 0x89, 0xf7, 0x0d, 0xde, 0xe3, 0x75, 0xb7, 0xc1, 0x7a, 0x95, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf3, 0x12, 0xc2, 0x81, 0xcc, 0x4b, 0x58, 0x1c, 0x3c, 0x72, 0xec, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x0b, 0x3c, 0xea, 0xe0, 0x05, 0x02, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x93, 0x47, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x43, 0x9a, 0x1b, 0x5d, 0x99, 0x9c, 0x5b, 0x18, 0x1b, 0x88, 0x59, 0x1a, 0x5b, 0x19, 0x88, 0x5c, 0x59, 0xdc, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x3b, 0x8f, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x23, 0x4e, 0x82, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x7b, 0x8f, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x2d, 0x12, 0x5a, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xb3, 0x47, 0x1d, 0xb4, 0x6d, 0x3d, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x77, 0x7d, 0xd4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb9, 0x34, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x69, 0x3e, 0x6a, 0xc3, 0xbf, 0xf3, 0x6b, 0xf0, 0xb6, 0x51, 0xbd, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x70, 0xfd, 0xa8, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x28, 0xc3, 0xa3, 0x2b, 0x93, 0x73, 0x0b, 0x63, 0x03, 0x31, 0x4b, 0x63, 0x2b, 0x03, 0x91, 0x2b, 0x8b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0xfd, 0x51, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xa0, 0x50, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x81, 0x05, 0x52, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xee, 0xd0, 0xde, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x78, 0x01, 0xa9, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x60, 0x90, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x2d, 0x12, 0x5a, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x25, 0x48, 0x1d, 0xb4, 0x6d, 0x3d, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc6, 0x84, 0xd4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb9, 0x34, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x10, 0x42, 0x6a, 0xc3, 0xbf, 0xf3, 0x0b, 0xf0, 0xcb, 0xa5, 0x99, 0x99, 0xb5, 0x84, 0xb9, 0xe5, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x61, 0x18, 0x52, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xd1, 0xc9, 0xe5, 0x81, 0xd4, 0xc1, 0x9d, 0xc9, 0x85, 0x91, 0x95, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7e, 0x0d, 0xa9, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xac, 0x79, 0x96, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x0d, 0x44, 0xea, 0x20, 0x04, 0x1f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x86, 0x44, 0x6a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1f, 0xb1, 0x30, 0xba, 0x31, 0x34, 0x10, 0xbd, 0xb2, 0x39, 0xba, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x6c, 0x22, 0xb5, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xe7, 0xb0, 0x04, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xec, 0x22, 0xb5, 0xe1, 0xcf, 0xa5, 0x0d, 0x4e, 0x07, 0x93, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0x2c, 0x52, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0x32, 0x52, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfb, 0x8d, 0xd4, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xe8, 0x91, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x6f, 0xc6, 0x0b, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xd4, 0x91, 0x3a, 0x78, 0x14, 0x5e, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x43, 0x52, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0xa9, 0x47, 0x41, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x01, 0x41, 0x52, 0x07, 0xef, 0x48, 0xfb, 0xab, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x4a, 0x92, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0xd9, 0xa0, 0x05, 0x19, 0xe6, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfb, 0x92, 0xd4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x9e, 0x7a, 0x14, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfc, 0x94, 0xd4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb2, 0xb2, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x2c, 0x4a, 0xea, 0xe0, 0x51, 0x78, 0x21, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x69, 0x49, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x63, 0x4b, 0xb3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0xaf, 0xa4, 0x0e, 0xde, 0x91, 0xf6, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7f, 0x09, 0xc9, 0x40, 0xfe, 0x25, 0x3c, 0xd9, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x2f, 0xac, 0xad, 0x6c, 0x0e, 0x44, 0xae, 0x2c, 0xae, 0xae, 0x6c, 0x8e, 0x6e, 0x83, 0xf5, 0x2a, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfe, 0x25, 0x84, 0x03, 0xf9, 0x97, 0xb0, 0xd8, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x0b, 0xd4, 0x81, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xbc, 0xa4, 0x0e, 0x5e, 0x20, 0x70, 0xd7, 0x0a, 0xf0, 0x9e, 0x95, 0xd1, 0xb5, 0x98, 0xa5, 0xd1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe5, 0x63, 0x52, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x62, 0x21, 0x19, 0xc8, 0x89, 0x85, 0x96, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xb1, 0x10, 0x0d, 0xe4, 0xc4, 0xc2, 0x64, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x58, 0xd9, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xb1, 0x10, 0x1f, 0xbc, 0xa5, 0x7c, 0xf0, 0xe0, 0xa9, 0x46, 0x21, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x2c, 0x6c, 0x06, 0x72, 0x62, 0x61, 0xbb, 0xe1, 0xcf, 0xa5, 0x0d, 0xd6, 0x35, 0xf9, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x2c, 0xec, 0x0e, 0x9e, 0xb4, 0x3e, 0x78, 0x70, 0xde, 0x3c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x62, 0x61, 0x3c, 0x90, 0x13, 0x0b, 0x25, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0x01, 0x75, 0xfa, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xc4, 0x42, 0xc1, 0xc1, 0xab, 0xe2, 0x07, 0x0f, 0xce, 0x9b, 0xa7, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x9f, 0x49, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x8a, 0x85, 0x64, 0x20, 0x29, 0x16, 0x46, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x14, 0x0b, 0xd1, 0x40, 0x52, 0x2c, 0xc4, 0x07, 0x65, 0x13, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x14, 0x0b, 0xf9, 0x40, 0x52, 0x2c, 0x6c, 0x0e, 0xce, 0x48, 0xa8, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xa9, 0x49, 0x6d, 0x50, 0x90, 0xc6, 0x6e, 0xd0, 0xe8, 0xd9, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0x6c, 0x52, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf8, 0x4d, 0x6a, 0xc3, 0xdb, 0x3a, 0x1b, 0xbc, 0x0a, 0xfc, 0xaf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xe8, 0xa4, 0x0e, 0x16, 0x91, 0xa7, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x7b, 0x27, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x44, 0x3d, 0xa9, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xb1, 0x90, 0x0e, 0xa4, 0xc5, 0xc2, 0x70, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x62, 0x21, 0x1e, 0x48, 0x8b, 0x85, 0xc9, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xc5, 0xc2, 0x66, 0x20, 0x2d, 0x16, 0x76, 0x07, 0x67, 0x24, 0xd4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0xfa, 0xa4, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x68, 0xca, 0xee, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x14, 0x40, 0xa9, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x5d, 0x50, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x0d, 0xdf, 0xb7, 0x0f, 0x78, 0x70, 0x75, 0xfa, 0x06, 0x25, 0x74, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x19, 0x0b, 0xe9, 0x40, 0x66, 0x2c, 0x2c, 0x0e, 0xce, 0x48, 0xa8, 0x07, 0x61, 0x3a, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6a, 0xa1, 0xd4, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x43, 0x94, 0x3a, 0x68, 0x8a, 0x84, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb8, 0x46, 0xa9, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xb1, 0x30, 0x1d, 0xc8, 0x8c, 0x85, 0xf9, 0xc1, 0x19, 0x09, 0x75, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x00, 0x52, 0x6a, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x4a, 0x4a, 0x1d, 0x2c, 0x0c, 0xf3, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb2, 0x52, 0xea, 0xa0, 0x2d, 0xbc, 0xee, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xc7, 0x94, 0x3a, 0x68, 0xb1, 0xe9, 0xb2, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x1e, 0x4e, 0xa9, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xef, 0x29, 0xb5, 0xc1, 0xea, 0x80, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x35, 0x16, 0xc2, 0x81, 0xd4, 0x58, 0x58, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0xf7, 0x52, 0x85, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6a, 0x2c, 0xa4, 0x07, 0x0f, 0x81, 0x21, 0xdc, 0xf0, 0xef, 0xfc, 0x06, 0xcf, 0x29, 0x66, 0x6a, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xbb, 0x4a, 0xad, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x05, 0x3f, 0x96, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0xc8, 0x4a, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4e, 0x5a, 0xa9, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x76, 0x2b, 0x75, 0xb0, 0x24, 0x37, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x10, 0x5e, 0xa9, 0x83, 0xe5, 0x6b, 0xaf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xfe, 0x4a, 0x6d, 0x78, 0x5b, 0x67, 0x70, 0x78, 0xc0, 0x13, 0x2b, 0x5b, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x72, 0x61, 0xa9, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x3c, 0x03, 0x88, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x02, 0x63, 0xa9, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x8d, 0x2c, 0x75, 0xb0, 0x24, 0x37, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x92, 0x66, 0xa9, 0x0d, 0x6f, 0xeb, 0x0c, 0x2e, 0x1f, 0x3c, 0x03, 0x88, 0xb0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0xa0, 0xa5, 0x36, 0xbc, 0xad, 0x33, 0xe0, 0xc1, 0xd5, 0xe9, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd0, 0xb4, 0xd4, 0x06, 0xc5, 0x80, 0xec, 0x1a, 0x8c, 0x04, 0x86, 0x83, 0xe7, 0x14, 0x33, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xcf, 0x2d, 0xb5, 0xc1, 0x31, 0xdc, 0x60, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf8, 0x5b, 0xea, 0xe0, 0xe9, 0x49, 0x84, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x79, 0xd6, 0x52, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x34, 0x65, 0x77, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x9b, 0x2d, 0x75, 0xd0, 0xe6, 0x5c, 0x77, 0x87, 0x53, 0xac, 0x5a, 0x83, 0x37, 0x48, 0xe1, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x41, 0x0a, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x81, 0x5c, 0x6a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5e, 0xdc, 0xde, 0xe4, 0xda, 0xc2, 0xd8, 0x40, 0xc6, 0xd0, 0xc2, 0xdc, 0xce, 0xca, 0x40, 0xe4, 0xc2, 0xdc, 0xce, 0xca, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4e, 0xba, 0xd4, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0xcd, 0xa5, 0x0e, 0xca, 0x2c, 0xdd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0xdf, 0xa5, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xd1, 0x2e, 0x75, 0x50, 0x66, 0xe9, 0x76, 0x38, 0xc5, 0x5a, 0xc0, 0x77, 0xab, 0x93, 0x4b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0x80, 0x8c, 0xb0, 0x83, 0x57, 0x9a, 0xe6, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x3c, 0x80, 0x8c, 0x70, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x8e, 0x5e, 0x6a, 0x83, 0xa0, 0xfd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xee, 0x5e, 0x6a, 0xc3, 0x13, 0xef, 0x1b, 0xbc, 0xb4, 0x35, 0x6f, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xe8, 0x4b, 0x1d, 0x04, 0x6c, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x4d, 0x00, 0x53, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xee, 0x97, 0xda, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0x0a, 0x96, 0xaf, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x91, 0x60, 0x6a, 0xc3, 0x13, 0xef, 0x1b, 0x3c, 0xd8, 0x36, 0x6f, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x1c, 0x4c, 0x1d, 0x84, 0x11, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x61, 0x0d, 0x53, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x56, 0x98, 0x3a, 0x38, 0x6f, 0x9e, 0xd6, 0x6a, 0xf0, 0xaa, 0xd3, 0xc1, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x57, 0x9d, 0x0e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x48, 0x4c, 0x6d, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x52, 0x4c, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9a, 0x8b, 0xa9, 0x83, 0xc0, 0x51, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xae, 0x63, 0x6a, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x6d, 0x54, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x5c, 0x63, 0xea, 0xe0, 0x79, 0x93, 0x83, 0x35, 0x6b, 0xf0, 0xc2, 0x96, 0xbc, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x17, 0xb6, 0xe4, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x8c, 0x4c, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x4f, 0x99, 0x99, 0x59, 0xd9, 0x18, 0x5d, 0x9a, 0x5d, 0x19, 0x08, 0x5c, 0x99, 0x5c, 0x5b, 0xda, 0xdc, 0x5c, 0xda, 0x9b, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x41, 0x99, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0xad, 0x0e, 0x7f, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x96, 0x4c, 0x1d, 0x9c, 0x91, 0x50, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x75, 0x99, 0xda, 0xf0, 0xe7, 0xd2, 0x80, 0x27, 0x57, 0xc7, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xb0, 0x4c, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0x9e, 0x70, 0x9b, 0x55, 0x1d, 0x4e, 0xb1, 0xd6, 0xe0, 0x59, 0x25, 0x41, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xcf, 0x2a, 0x09, 0xea, 0xe0, 0x1d, 0x34, 0x79, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe5, 0x33, 0x53, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0xbc, 0x71, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x75, 0x33, 0xb5, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xae, 0x33, 0x75, 0x50, 0x22, 0xd6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xfb, 0x33, 0x75, 0xf0, 0x28, 0xbc, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0x89, 0xa6, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x84, 0xd2, 0xd4, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xea, 0x51, 0xd0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe0, 0xd1, 0xd4, 0xc1, 0x3b, 0xd2, 0xfe, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x8f, 0x9a, 0xda, 0xf0, 0xe7, 0xd2, 0x80, 0x77, 0x97, 0x36, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x3d, 0x4d, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x56, 0x4d, 0x1d, 0x94, 0x88, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x67, 0x4d, 0x1d, 0x3c, 0x4b, 0x21, 0xa4, 0x5a, 0x0d, 0x9e, 0x1e, 0x94, 0xb7, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xf4, 0xa0, 0xbc, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc6, 0xb0, 0xa9, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x66, 0xb2, 0xa9, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x5e, 0x31, 0xb6, 0xb7, 0xb1, 0xb5, 0x32, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x76, 0x36, 0x75, 0xb0, 0x90, 0x26, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xec, 0xb6, 0xa9, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x66, 0xbc, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa4, 0xb5, 0xa9, 0x83, 0x47, 0xe1, 0x85, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x57, 0x37, 0xb5, 0xe1, 0xcf, 0xa5, 0x0d, 0x9e, 0xb1, 0x0c, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x2e, 0x37, 0x75, 0xf0, 0x2c, 0x85, 0x90, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xd3, 0x9b, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xa3, 0xce, 0x4d, 0x8c, 0xed, 0x6d, 0x6c, 0xad, 0x8c, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xf4, 0x4d, 0x1d, 0x3c, 0x62, 0x71, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc4, 0xc1, 0xa9, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x66, 0xbc, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7c, 0xc0, 0xa9, 0x83, 0x47, 0xe1, 0x85, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x9f, 0x38, 0xb5, 0xe1, 0xcf, 0xa5, 0x0d, 0x9e, 0xb1, 0x0c, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x76, 0x38, 0x75, 0xf0, 0x2c, 0x85, 0x90, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x68, 0x9c, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x95, 0xab, 0x73, 0x73, 0x4b, 0x73, 0x3b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0x8f, 0x53, 0x07, 0xef, 0x50, 0x1e, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xc5, 0x72, 0x6a, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x19, 0x2f, 0x64, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x73, 0x72, 0xea, 0xe0, 0x51, 0x78, 0x21, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x72, 0x4e, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xa7, 0x1e, 0x05, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x68, 0x4e, 0x1d, 0xbc, 0x23, 0xed, 0xaf, 0x0e, 0xa7, 0xd8, 0x02, 0xfe, 0x5d, 0x18, 0xdb, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xf0, 0x06, 0x6c, 0xc2, 0x36, 0x78, 0x93, 0xf2, 0x5d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0xa0, 0x53, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x4a, 0x21, 0x1b, 0xc8, 0x2b, 0x85, 0xe9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x52, 0x08, 0x07, 0xf2, 0x4a, 0x61, 0xb2, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x2b, 0x85, 0xf8, 0xe0, 0x49, 0xe1, 0x84, 0x1b, 0xfe, 0x9d, 0xdf, 0xe0, 0x25, 0x3f, 0x79, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xa5, 0xb0, 0x19, 0xc8, 0x2b, 0x85, 0xe5, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xaf, 0x14, 0x56, 0x07, 0x8f, 0x3c, 0x27, 0x3c, 0x78, 0x31, 0x39, 0x61, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0xa4, 0x53, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x4b, 0x21, 0x1b, 0x48, 0x2c, 0x85, 0xd9, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x96, 0x42, 0x38, 0x90, 0x58, 0x0a, 0x83, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x4b, 0x61, 0x31, 0x90, 0x58, 0x0a, 0xab, 0x0d, 0xff, 0xce, 0x6f, 0xf0, 0xf0, 0xa0, 0xbc, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x35, 0x9d, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xf0, 0xc3, 0xc8, 0xc8, 0xe6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x52, 0xa7, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0e, 0xeb, 0xd4, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x49, 0xec, 0x50, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0xbc, 0x4e, 0x1d, 0x94, 0x4d, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xcd, 0x4e, 0x1d, 0xde, 0x0b, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xda, 0xdb, 0xa9, 0xc3, 0xd3, 0x3a, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xeb, 0x4e, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0xf8, 0x64, 0x65, 0x6c, 0xf3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x85, 0xbd, 0x53, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x0a, 0x78, 0x6a, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x24, 0x76, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x86, 0xa7, 0x0e, 0xca, 0xa6, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x8f, 0xa7, 0x0e, 0x4f, 0xeb, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf7, 0xf2, 0xd4, 0xe1, 0xbd, 0xa0, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x9e, 0xa7, 0x36, 0x28, 0x48, 0x63, 0x07, 0x7c, 0xb1, 0x37, 0xba, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xde, 0xe8, 0xa9, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x48, 0x3d, 0xb5, 0x41, 0x59, 0xf2, 0xbe, 0xc1, 0xaa, 0x8b, 0xcf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0xae, 0xa7, 0x0e, 0xca, 0xa6, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0xb7, 0xa7, 0x0e, 0x4f, 0xeb, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x00, 0xf8, 0xd4, 0xe1, 0xbd, 0xa0, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0xc6, 0xa7, 0x36, 0x48, 0x32, 0x20, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xbc, 0x7c, 0xea, 0xe0, 0x90, 0xb5, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xeb, 0xfa, 0xd4, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x52, 0x48, 0x07, 0xb2, 0x4b, 0x61, 0xb8, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xa5, 0x10, 0x0f, 0x64, 0x97, 0xc2, 0xe4, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x52, 0xd8, 0x0c, 0x64, 0x97, 0xc2, 0xee, 0xe0, 0x01, 0xf5, 0x84, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xb8, 0x4f, 0x6d, 0x70, 0x62, 0xbf, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x20, 0x7e, 0xea, 0xa0, 0x51, 0xf9, 0xbf, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf6, 0xfa, 0xa9, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0xf1, 0xa7, 0x0e, 0x4a, 0xa4, 0xea, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0xf9, 0xa7, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x58, 0x04, 0x32, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf0, 0xff, 0xd4, 0x41, 0xd9, 0x54, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0a, 0x01, 0xd5, 0x86, 0xb7, 0x75, 0x36, 0x78, 0xee, 0x3d, 0x61, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x1e, 0x50, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x30, 0x85, 0x74, 0x20, 0xc1, 0x14, 0x9a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x98, 0x42, 0x3c, 0x90, 0x60, 0x0a, 0x9b, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x66, 0xbc, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x30, 0x85, 0xfc, 0xe0, 0x95, 0x36, 0x85, 0x07, 0x8f, 0xc2, 0x0b, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x4c, 0x61, 0x34, 0x90, 0x60, 0x0a, 0xcb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xd4, 0xa3, 0xa0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x30, 0x85, 0xd5, 0xc1, 0x6b, 0x79, 0x0a, 0x0f, 0xde, 0x91, 0xf6, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x98, 0xc2, 0x74, 0x20, 0xc1, 0x14, 0x8a, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xdd, 0xa5, 0x8d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x60, 0x0a, 0xf3, 0x83, 0x67, 0x0b, 0x15, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x82, 0x29, 0xec, 0x07, 0x12, 0x4c, 0xa1, 0xe2, 0xa0, 0x44, 0x7c, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x4c, 0xa1, 0x63, 0x20, 0xc1, 0x14, 0x7a, 0x0e, 0x9e, 0xa5, 0x10, 0x52, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x49, 0x0b, 0x54, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x4c, 0x21, 0x1d, 0xc8, 0x30, 0x85, 0xe1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x98, 0x42, 0x3c, 0x90, 0x61, 0x0a, 0x93, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x4c, 0x61, 0x33, 0x90, 0x61, 0x0a, 0xbb, 0x83, 0x07, 0xd4, 0x13, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xdd, 0x40, 0xb5, 0x41, 0x61, 0xa8, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1a, 0x04, 0xd5, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x97, 0xa0, 0xda, 0xf0, 0xc6, 0xdd, 0xc1, 0xfb, 0x94, 0x07, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xb0, 0xa0, 0xda, 0xf0, 0xb6, 0xce, 0xc1, 0x8b, 0xf1, 0x42, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xc7, 0xa0, 0xda, 0xf0, 0xb6, 0xce, 0xc1, 0x23, 0xd3, 0xfe, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xdf, 0xa0, 0xda, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd5, 0x83, 0xea, 0xa0, 0x44, 0xaa, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x5d, 0x84, 0x6a, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x96, 0x50, 0x1d, 0x94, 0x4d, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xa8, 0x50, 0x6d, 0x78, 0x5b, 0x67, 0xc0, 0xbb, 0x4b, 0x1b, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb9, 0x85, 0x6a, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x92, 0x29, 0xa4, 0x03, 0x49, 0xa6, 0x30, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0xcf, 0x58, 0x06, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x53, 0x88, 0x0f, 0x5e, 0xd0, 0x56, 0x78, 0xf0, 0x2c, 0x85, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x84, 0x18, 0xaa, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x39, 0x43, 0x75, 0xd0, 0xcc, 0x9e, 0xf6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb1, 0x36, 0x54, 0x07, 0x8f, 0xea, 0x2a, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x31, 0x87, 0x6a, 0xc3, 0xdb, 0x3a, 0x07, 0x6f, 0x56, 0x08, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0e, 0x20, 0xaa, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xa6, 0x90, 0x0e, 0xe4, 0x99, 0xc2, 0x70, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x4c, 0x21, 0x1e, 0xc8, 0x33, 0x85, 0xc9, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xa6, 0xb0, 0x19, 0xc8, 0x33, 0x85, 0xdd, 0xc1, 0x03, 0xea, 0x09, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x15, 0xa2, 0xda, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xae, 0x88, 0xea, 0xa0, 0x44, 0xaa, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x35, 0x89, 0x6a, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x31, 0x51, 0x1d, 0x94, 0x4d, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x43, 0x51, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0x57, 0x0a, 0x14, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1e, 0x15, 0xd5, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x53, 0x48, 0x07, 0x32, 0x4d, 0xa1, 0x69, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa6, 0x29, 0xc4, 0x03, 0x99, 0xa6, 0xb0, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0x6f, 0xc6, 0x0b, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x53, 0xc8, 0x0f, 0x5e, 0x1c, 0x59, 0x78, 0xf0, 0x28, 0xbc, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd3, 0x14, 0x46, 0x03, 0x99, 0xa6, 0xb0, 0xdc, 0xf0, 0xe7, 0xd2, 0x06, 0x4f, 0x3d, 0x0a, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x53, 0x58, 0x1d, 0xbc, 0xfc, 0xb2, 0xf0, 0xe0, 0x1d, 0x69, 0x7f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa6, 0x29, 0x4c, 0x07, 0x32, 0x4d, 0xa1, 0x68, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x5d, 0xda, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xa6, 0x30, 0x3f, 0x78, 0x82, 0x67, 0xe1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x9a, 0xc2, 0x7e, 0x20, 0xd3, 0x14, 0x2a, 0x0e, 0x4a, 0xc4, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd3, 0x14, 0x3a, 0x06, 0x32, 0x4d, 0xa1, 0xe7, 0xe0, 0x59, 0x0a, 0x21, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x7e, 0x45, 0xb5, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd5, 0x14, 0xd2, 0x81, 0x54, 0x53, 0x58, 0x1c, 0x3c, 0xa0, 0x9e, 0x70, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x4f, 0x8b, 0x6a, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x74, 0x51, 0x1d, 0x3c, 0x66, 0xab, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x14, 0x30, 0xaa, 0x83, 0x47, 0x75, 0x15, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x30, 0x46, 0x75, 0xf0, 0x20, 0xbd, 0xbf, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x3b, 0xa3, 0xda, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6d, 0x0a, 0xe9, 0x40, 0xb6, 0x29, 0x0c, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdb, 0x14, 0xe2, 0x81, 0x6c, 0x53, 0x98, 0x1c, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6d, 0x0a, 0x9b, 0x81, 0x6c, 0x53, 0xd8, 0x1d, 0x3c, 0xa0, 0x9e, 0xb0, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfa, 0x34, 0xaa, 0x0d, 0x4e, 0xec, 0x37, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xb2, 0x51, 0x1d, 0x34, 0x2a, 0xff, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x0f, 0x47, 0xb5, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf1, 0x1c, 0xd5, 0x41, 0x89, 0x54, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x00, 0x1e, 0xd5, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8b, 0x40, 0x46, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xd6, 0xa3, 0x3a, 0x28, 0x9b, 0xea, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xf9, 0xa3, 0xda, 0xf0, 0xb6, 0xce, 0x06, 0x8f, 0x6b, 0x28, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x58, 0x41, 0xaa, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xa7, 0x90, 0x0e, 0x24, 0x9c, 0xc2, 0x70, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x29, 0xc4, 0x03, 0x09, 0xa7, 0xb0, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0x6f, 0xc6, 0x0b, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x53, 0xc8, 0x0f, 0x5e, 0xfc, 0x5c, 0x78, 0xf0, 0x28, 0xbc, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe1, 0x14, 0x46, 0x03, 0x09, 0xa7, 0xb0, 0x3a, 0x08, 0xd3, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe1, 0x14, 0x66, 0x03, 0x09, 0xa7, 0xb0, 0x3b, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x0c, 0xa9, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x9c, 0x42, 0x3a, 0x90, 0x71, 0x0a, 0xc3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x38, 0x85, 0x78, 0x20, 0xe3, 0x14, 0x26, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x9c, 0xc2, 0x66, 0x20, 0xe3, 0x14, 0x76, 0x07, 0x0f, 0xa8, 0x27, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x13, 0x91, 0x6a, 0x83, 0x82, 0x34, 0x76, 0xe0, 0xc3, 0xc2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x16, 0xa9, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8c, 0x23, 0xd5, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xed, 0xad, 0x65, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x0f, 0x49, 0x75, 0x50, 0x36, 0xd5, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x57, 0x49, 0x75, 0x78, 0x5a, 0xa7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0x33, 0xa9, 0x0e, 0x1e, 0xd5, 0x55, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3c, 0x27, 0xd5, 0x06, 0x05, 0x69, 0xec, 0xc0, 0x8b, 0x89, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x7e, 0x52, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x44, 0x51, 0xaa, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xda, 0x5b, 0xcb, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xaa, 0x94, 0xea, 0xa0, 0x6c, 0xaa, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x39, 0x95, 0xea, 0xf0, 0x5e, 0x50, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xb9, 0x52, 0x1d, 0x3c, 0xaa, 0xab, 0xb0, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb4, 0x58, 0xaa, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0x9e, 0xbb, 0x30, 0x32, 0xb2, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x18, 0x5a, 0xaa, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x70, 0x4b, 0xb5, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x12, 0x3b, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0xb9, 0x54, 0x07, 0x65, 0xd3, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc1, 0xbe, 0x54, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xee, 0xd2, 0xc6, 0x81, 0x17, 0x13, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x94, 0x61, 0xaa, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x77, 0x69, 0xe3, 0xc0, 0x87, 0x85, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x64, 0x4c, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xc0, 0x73, 0x47, 0x56, 0xc6, 0x36, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x91, 0x4c, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x97, 0xa9, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x48, 0x62, 0x87, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd6, 0x99, 0xea, 0xa0, 0x6c, 0x7a, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x63, 0x9a, 0xea, 0xe0, 0xc1, 0x04, 0x86, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x76, 0x4d, 0x75, 0xf0, 0x12, 0x01, 0xc3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0xb5, 0xa9, 0x36, 0x48, 0x32, 0x20, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xaa, 0x9b, 0xea, 0xe0, 0x90, 0xb5, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc7, 0x38, 0xd5, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x2e, 0xa7, 0xda, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x9d, 0xe8, 0x54, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0xa9, 0x47, 0x41, 0x07, 0xef, 0x2d, 0x30, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x5b, 0xa7, 0xda, 0xf0, 0xb6, 0xce, 0x06, 0x4f, 0x3d, 0x0a, 0x3a, 0x78, 0xc8, 0x80, 0xe1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0xee, 0x54, 0x07, 0x05, 0x45, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4e, 0x3c, 0xd5, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf5, 0x3c, 0xd5, 0xc1, 0x63, 0xb6, 0x0a, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xb7, 0xa7, 0x3a, 0x78, 0x54, 0x57, 0xe1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf5, 0xf9, 0x54, 0x07, 0x8f, 0xde, 0x30, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0xff, 0xa9, 0x36, 0x28, 0x3a, 0x8d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x13, 0xa8, 0x3a, 0x28, 0x91, 0xaa, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x3a, 0xa8, 0xda, 0xa0, 0x2c, 0x79, 0xdf, 0x60, 0x11, 0xc8, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x25, 0x0a, 0x55, 0x07, 0x65, 0x53, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x91, 0x0e, 0x55, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0xc9, 0xfa, 0x85, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x22, 0x51, 0xb5, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf9, 0x14, 0xf2, 0x81, 0xe4, 0x53, 0x18, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x67, 0x2c, 0x83, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf2, 0x29, 0x0c, 0x0e, 0x1e, 0x2e, 0x63, 0x78, 0xf0, 0x2c, 0x85, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb2, 0x8a, 0xaa, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xa7, 0x90, 0x0f, 0x64, 0x9f, 0xc2, 0xe6, 0xe0, 0x01, 0xf5, 0x84, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf1, 0x17, 0x55, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x50, 0xa3, 0xea, 0xa0, 0x99, 0x3d, 0xed, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x3b, 0xaa, 0x0e, 0x1e, 0xd5, 0x55, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x29, 0x48, 0xd5, 0xc1, 0xf3, 0xee, 0x0a, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x9b, 0xa4, 0x6a, 0x83, 0xa2, 0xd3, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd2, 0x93, 0xaa, 0x83, 0x12, 0xa9, 0x7a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf6, 0x95, 0xaa, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x16, 0x81, 0x8c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xeb, 0x52, 0x75, 0x50, 0x36, 0xd5, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x32, 0x53, 0xb5, 0xe1, 0x6d, 0x9d, 0x0d, 0xde, 0x7d, 0x60, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa1, 0x36, 0x55, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x50, 0x21, 0x1f, 0xc8, 0x40, 0x85, 0xd1, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xc6, 0x32, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xa0, 0xc2, 0xe0, 0xe0, 0xf1, 0x4e, 0x86, 0x07, 0xcf, 0x52, 0x08, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xcf, 0xa9, 0xda, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x82, 0x0a, 0xf9, 0x40, 0x0a, 0x2a, 0x6c, 0x0e, 0x1e, 0x50, 0x4f, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xc6, 0x53, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x7e, 0xaa, 0x36, 0xbc, 0x71, 0x77, 0xf0, 0xb8, 0xc5, 0xc1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x84, 0xaa, 0x0e, 0x1e, 0xd5, 0x55, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4a, 0x51, 0xd5, 0xc1, 0xf3, 0xee, 0x0a, 0xab, 0x59, 0x83, 0xd5, 0xdf, 0x5a, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0xc1, 0x2a, 0xf7, 0xf7, 0x01, 0x1e, 0xb8, 0x30, 0xba, 0x31, 0xb4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x34, 0xa5, 0xaa, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xa4, 0x90, 0x0d, 0x64, 0x90, 0xc2, 0x70, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x06, 0x29, 0x84, 0x03, 0x19, 0xa4, 0xb0, 0xd8, 0xf0, 0xe7, 0xd2, 0x86, 0x37, 0xee, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x83, 0x14, 0xd2, 0x83, 0x17, 0x9f, 0x19, 0x1e, 0xbc, 0x98, 0x9c, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x20, 0x85, 0xc9, 0x40, 0x06, 0x29, 0xec, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xd3, 0x83, 0xf2, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x83, 0x14, 0x36, 0x07, 0xef, 0x6d, 0x33, 0x3c, 0x78, 0x40, 0x3d, 0x61, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf5, 0x4d, 0x55, 0x1b, 0xbe, 0x7e, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x48, 0x21, 0x1b, 0x48, 0x21, 0x85, 0x7c, 0xc3, 0xdb, 0x3a, 0x07, 0x2f, 0xf9, 0xc9, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x83, 0xaa, 0xda, 0x20, 0x48, 0x4f, 0xd7, 0x38, 0x74, 0xf0, 0xf0, 0xa0, 0xbc, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x52, 0xc8, 0x06, 0x92, 0x48, 0x61, 0x70, 0xb0, 0x90, 0x26, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x88, 0xaa, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x0d, 0xdf, 0xb7, 0x6f, 0x70, 0x5c, 0xb5, 0xda, 0xa0, 0x84, 0x8e, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x48, 0x61, 0x31, 0x90, 0x45, 0x0a, 0x3d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x48, 0x61, 0x32, 0x90, 0x45, 0x0a, 0xbb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xd4, 0xa3, 0xa0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x22, 0x85, 0xcd, 0xc1, 0xab, 0x07, 0x0d, 0x0f, 0xde, 0x91, 0xf6, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x91, 0xc2, 0x70, 0x20, 0x8b, 0x14, 0x6a, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xdd, 0xa5, 0x8d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x45, 0x0a, 0xe3, 0x83, 0xe7, 0x27, 0x1a, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x16, 0x29, 0xac, 0x07, 0xb2, 0x48, 0xa1, 0xe0, 0xa0, 0x44, 0x7c, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x48, 0xa1, 0x61, 0x20, 0x8b, 0x14, 0x5a, 0x0e, 0x9e, 0xa5, 0x10, 0x52, 0x07, 0x61, 0x3a, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc4, 0x55, 0xd5, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xce, 0xaa, 0xda, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0xc1, 0x5d, 0x31, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x72, 0x55, 0x1d, 0x94, 0x4d, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x84, 0x55, 0x1d, 0x3c, 0xbf, 0xce, 0xb0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xca, 0xaa, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0x9b, 0xf1, 0x42, 0x0e, 0x1e, 0x1e, 0x94, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x31, 0x5a, 0xd5, 0x06, 0x85, 0x60, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x91, 0x42, 0xcd, 0xc1, 0xe3, 0xd3, 0xaa, 0x0e, 0xde, 0x91, 0xf6, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x15, 0x5b, 0xd5, 0x41, 0x41, 0x91, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xdc, 0x5b, 0xd5, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x91, 0xab, 0xda, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x6c, 0x41, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xa0, 0xae, 0xea, 0xa0, 0x6c, 0xaa, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x2d, 0xaf, 0xea, 0xe0, 0xf9, 0x75, 0x86, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xdc, 0x57, 0x75, 0xf0, 0x64, 0x4e, 0xc3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x02, 0xab, 0x36, 0x5c, 0x52, 0x1b, 0xb4, 0xb7, 0x96, 0xb5, 0x06, 0xcf, 0x48, 0x2b, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x20, 0xac, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf5, 0x86, 0x55, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x2d, 0xa8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x27, 0x56, 0x1d, 0x94, 0x4d, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x38, 0x56, 0x6d, 0x78, 0x5b, 0x67, 0xc0, 0xbb, 0x4b, 0x1b, 0x0f, 0xda, 0x5b, 0xcb, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4a, 0xc9, 0xaa, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x8c, 0x65, 0x90, 0x83, 0x87, 0x07, 0xe5, 0x55, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xa4, 0x90, 0x0d, 0x64, 0x92, 0xc2, 0xe0, 0xe0, 0x11, 0x8b, 0x83, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x97, 0x55, 0x1b, 0x9c, 0xd8, 0x6f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xd3, 0xac, 0xda, 0xa0, 0x2c, 0x79, 0xdf, 0x20, 0x71, 0xa3, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x96, 0xce, 0xaa, 0x83, 0xb2, 0xa9, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xce, 0xd0, 0xaa, 0x83, 0xe7, 0xd7, 0x19, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x5d, 0x5a, 0xb5, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x97, 0x14, 0xd2, 0x81, 0x5c, 0x52, 0xe8, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4b, 0x0a, 0xf1, 0x40, 0x2e, 0x29, 0x6c, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x53, 0x8f, 0x82, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x97, 0x14, 0xf2, 0x83, 0x77, 0x2b, 0x1b, 0x1e, 0xbc, 0x23, 0xed, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x25, 0x85, 0xd1, 0x40, 0x2e, 0x29, 0x54, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0xbb, 0x4b, 0x1b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x97, 0x14, 0x86, 0x07, 0xef, 0x87, 0x36, 0xdc, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x52, 0x58, 0x0e, 0xe4, 0x92, 0xc2, 0xf8, 0xa0, 0x44, 0x7c, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x49, 0x61, 0x3d, 0x90, 0x4b, 0x0a, 0x0d, 0x07, 0xcf, 0x52, 0x08, 0xa9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa6, 0xd4, 0xaa, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xbe, 0x5a, 0x75, 0xf0, 0xb8, 0xaf, 0xc2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0x5d, 0xab, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5f, 0x6c, 0xd5, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x87, 0xd3, 0x8b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x68, 0xab, 0x0e, 0xca, 0xa6, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x71, 0xab, 0x0e, 0xde, 0x8a, 0x56, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe5, 0xbc, 0x55, 0x07, 0x0f, 0xc9, 0x35, 0xac, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x52, 0xc8, 0x06, 0xd2, 0x49, 0x61, 0x70, 0xf0, 0x0e, 0xe5, 0xc1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x26, 0xe1, 0xaa, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x50, 0x5c, 0xb5, 0x41, 0x31, 0x89, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x93, 0xc2, 0x60, 0x20, 0x9f, 0x14, 0x56, 0x07, 0x2f, 0xf3, 0xfb, 0xdb, 0xe0, 0xa9, 0x47, 0x41, 0x07, 0x0f, 0x0f, 0xca, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x1a, 0xb9, 0x6a, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x2e, 0x57, 0x6d, 0x50, 0x96, 0xbc, 0x6f, 0x70, 0x38, 0xbd, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xcd, 0xb9, 0xea, 0xa0, 0x6c, 0xaa, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x5a, 0xba, 0xea, 0xe0, 0xf9, 0x75, 0x86, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x70, 0x5d, 0x75, 0xf0, 0x64, 0x4e, 0xc3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0xb4, 0xab, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x06, 0xc7, 0x55, 0xab, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa3, 0x14, 0x16, 0x03, 0x19, 0xa5, 0xd0, 0xb3, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa3, 0x14, 0x26, 0x03, 0x19, 0xa5, 0xb0, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x4f, 0x3d, 0x0a, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x52, 0xd8, 0x1c, 0xbc, 0x34, 0xe0, 0xf0, 0xe0, 0x1d, 0x69, 0x7f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x46, 0x29, 0x0c, 0x07, 0x32, 0x4a, 0xa1, 0x66, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x5d, 0xda, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xa5, 0x30, 0x3e, 0x78, 0xf2, 0xc1, 0xe1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x94, 0xc2, 0x7a, 0x20, 0xa3, 0x14, 0x0a, 0x0e, 0x4a, 0xc4, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa3, 0x14, 0x1a, 0x06, 0x32, 0x4a, 0xa1, 0xe5, 0xe0, 0x59, 0x0a, 0x21, 0x75, 0x10, 0xa6, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x74, 0x57, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe8, 0xef, 0xaa, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x1e, 0xdc, 0x15, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa6, 0x78, 0xd5, 0x41, 0xd9, 0x54, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc3, 0x79, 0xd5, 0xc1, 0xf3, 0xeb, 0x0c, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6a, 0xbd, 0xea, 0xe0, 0xc9, 0x9c, 0x86, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xba, 0x57, 0x6d, 0x50, 0x08, 0xa6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x29, 0xd4, 0x1c, 0xbc, 0xfc, 0xbd, 0xea, 0xe0, 0x1d, 0x69, 0x7f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xc9, 0x57, 0x1d, 0x14, 0x14, 0x99, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xd5, 0x57, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x16, 0xfc, 0xaa, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xca, 0x16, 0xd4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0xf5, 0xab, 0x0e, 0xca, 0xa6, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0xfe, 0xab, 0x0e, 0x9e, 0x5f, 0x67, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0x03, 0x56, 0x07, 0x4f, 0xe6, 0x34, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xe2, 0xc0, 0x6a, 0xc3, 0x25, 0xb5, 0x41, 0x7b, 0x6b, 0x59, 0x6b, 0xf0, 0xc8, 0xb4, 0xbf, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x06, 0x05, 0xab, 0x0d, 0x6f, 0xeb, 0x1c, 0x3c, 0x02, 0xde, 0xb0, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x80, 0xb0, 0xde, 0xdf, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x07, 0xfc, 0xb9, 0xb7, 0xb1, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x40, 0xc8, 0x06, 0x6a, 0x40, 0x38, 0xb4, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x2f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x20, 0x5b, 0x73, 0x72, 0x63, 0x20, 0x64, 0x65, 0x73, 0x74, 0x5d, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x03, 0x42, 0x38, 0x50, 0x03, 0xc2, 0xe0, 0xa0, 0xf4, 0xa6, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x40, 0x58, 0x0c, 0xd4, 0x80, 0xb0, 0x3a, 0x68, 0xdb, 0x7a, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x01, 0x61, 0x36, 0x50, 0x03, 0xc2, 0xf4, 0xa0, 0x6d, 0xeb, 0xf1, 0x56, 0x20, 0xfc, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x31, 0x09, 0xd9, 0x40, 0x12, 0x25, 0x6e, 0x83, 0xd4, 0x8b, 0xe2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x99, 0x44, 0x0f, 0xde, 0x33, 0x74, 0xb8, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0xc1, 0x23, 0xe9, 0x44, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0xd3, 0x85, 0xec, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0x49, 0x27, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x93, 0xb8, 0x81, 0xc4, 0x49, 0xfc, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x4d, 0x42, 0x32, 0x90, 0x34, 0x09, 0x3f, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x71, 0x2b, 0xc3, 0xa3, 0x03, 0x09, 0x63, 0x0b, 0x93, 0x6b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x34, 0x09, 0xd1, 0x40, 0xd2, 0x24, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xf9, 0x9b, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x34, 0x09, 0x83, 0x81, 0xa4, 0x49, 0x18, 0x6f, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x26, 0x61, 0x72, 0xf0, 0xb0, 0xab, 0xc3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x9a, 0x84, 0xcd, 0x40, 0xd2, 0x24, 0xec, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x69, 0x12, 0x86, 0x03, 0x49, 0x93, 0xb0, 0x3d, 0x38, 0xf2, 0xb5, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x35, 0x09, 0xc9, 0x40, 0xd6, 0x24, 0xbc, 0xd9, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xff, 0x2e, 0x6c, 0xad, 0xac, 0x0e, 0x0e, 0xe4, 0x4d, 0x0e, 0xc4, 0x2c, 0x2c, 0x8d, 0xad, 0x8c, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x24, 0x44, 0x03, 0x59, 0x93, 0x90, 0x6f, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x89, 0xaf, 0x3c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x24, 0x0c, 0x06, 0xb2, 0x26, 0xa1, 0x61, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0x4a, 0x1f, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x26, 0x61, 0x76, 0xf0, 0x24, 0xb6, 0xc3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x9a, 0x84, 0xdd, 0x40, 0xd6, 0x24, 0x6c, 0x0f, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6b, 0x12, 0xc6, 0x03, 0x59, 0x93, 0x50, 0x70, 0xd0, 0xa0, 0x78, 0x60, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x93, 0x90, 0x0c, 0xa4, 0x4d, 0xc2, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xda, 0x24, 0x44, 0x03, 0x69, 0x93, 0x90, 0x1f, 0x3c, 0xb5, 0x94, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x9b, 0x84, 0xc1, 0x40, 0xda, 0x24, 0xcc, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x93, 0x30, 0x39, 0x78, 0x67, 0xdf, 0xe1, 0x41, 0xb3, 0xdb, 0x51, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x93, 0x90, 0x0c, 0xe4, 0x4d, 0xc2, 0x9d, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x90, 0x2b, 0x9b, 0x83, 0x7b, 0x73, 0x9b, 0x2b, 0x03, 0xa1, 0x7b, 0x03, 0x29, 0x41, 0xab, 0x1b, 0x5b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x37, 0x09, 0xd1, 0x40, 0xde, 0x24, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x91, 0x9b, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x37, 0x09, 0x83, 0x81, 0xbc, 0x49, 0x58, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0x14, 0x9d, 0xa8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x9b, 0x84, 0xd1, 0xc1, 0x43, 0x1a, 0x0f, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0x2f, 0xe4, 0xad, 0xab, 0x9a, 0x35, 0x78, 0x53, 0xe4, 0xc8, 0x86, 0xe7, 0x49, 0x36, 0x78, 0xcd, 0xb8, 0xdd, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x9b, 0x22, 0x47, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x75, 0x12, 0x37, 0x90, 0x43, 0x89, 0xdf, 0x20, 0xd4, 0x10, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x49, 0x48, 0x06, 0x52, 0x27, 0x61, 0xb2, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x75, 0x12, 0xa2, 0x81, 0xd4, 0x49, 0xc8, 0x0f, 0x5e, 0xff, 0x9d, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x4e, 0xc2, 0x60, 0x20, 0x75, 0x12, 0x16, 0x07, 0x05, 0x45, 0x66, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3b, 0x89, 0x3b, 0x78, 0xb5, 0xe5, 0xe1, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x4e, 0x42, 0x32, 0x90, 0x3b, 0x09, 0x6f, 0x36, 0x3c, 0xf1, 0xbe, 0xc1, 0x93, 0xf1, 0xed, 0x36, 0x58, 0xaf, 0x52, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x4e, 0x42, 0x38, 0x90, 0x3b, 0x09, 0x8b, 0x83, 0x77, 0xf9, 0xdb, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x24, 0x4c, 0x06, 0x72, 0x27, 0x61, 0x7b, 0xf0, 0x02, 0x81, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x79, 0x12, 0x92, 0x81, 0xe4, 0x49, 0x78, 0xb2, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xdf, 0x58, 0x98, 0xdb, 0x58, 0x19, 0x1b, 0x48, 0x18, 0x5b, 0x98, 0x5c, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x49, 0x88, 0x06, 0x92, 0x27, 0x21, 0xdf, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xe3, 0x47, 0x2d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf2, 0x24, 0x0c, 0x06, 0x92, 0x27, 0x61, 0xb5, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x9e, 0x84, 0xc9, 0xc1, 0x53, 0x6e, 0x0f, 0x0f, 0x8e, 0x7c, 0xad, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x93, 0x90, 0x0c, 0x64, 0x4f, 0xc2, 0x9f, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x38, 0x4b, 0xb3, 0x2b, 0x03, 0x49, 0x73, 0x03, 0x71, 0x2b, 0xc3, 0xa3, 0x03, 0x29, 0xb3, 0x2b, 0x73, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3d, 0x09, 0xd1, 0x40, 0xf6, 0x24, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x32, 0x55, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3d, 0x09, 0x83, 0x81, 0xec, 0x49, 0x98, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x27, 0x61, 0x72, 0xf0, 0x60, 0xe3, 0xc3, 0x83, 0x66, 0xb7, 0xa3, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x27, 0x21, 0x19, 0x48, 0x9f, 0x84, 0x1b, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0x9c, 0xa5, 0xd9, 0x95, 0x81, 0x88, 0x85, 0x8d, 0xad, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x9f, 0x84, 0x68, 0x20, 0x7d, 0x12, 0xf2, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0xf1, 0x2a, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x9f, 0x84, 0xc1, 0x40, 0xfa, 0x24, 0xac, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0x8a, 0x4e, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x4f, 0xc2, 0xe8, 0xe0, 0x3d, 0xd5, 0x87, 0x07, 0x4f, 0x87, 0x3c, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x9f, 0x84, 0x64, 0x20, 0x7f, 0x12, 0x7e, 0x6c, 0x78, 0xe2, 0x7d, 0x83, 0xc7, 0x4c, 0xdd, 0x6d, 0xb0, 0x5e, 0xa5, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x9f, 0x84, 0x70, 0x20, 0x7f, 0x12, 0x16, 0x07, 0xaf, 0xb7, 0xf7, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x49, 0x98, 0x0c, 0xe4, 0x4f, 0xc2, 0xf6, 0xe0, 0x05, 0x02, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x02, 0x25, 0x24, 0x03, 0x09, 0x94, 0xf0, 0x65, 0xc3, 0x13, 0xef, 0x1b, 0xbc, 0xc7, 0xeb, 0x6e, 0x83, 0xf5, 0x2a, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x02, 0x25, 0x84, 0x03, 0x09, 0x94, 0xb0, 0x38, 0x78, 0xe4, 0xd8, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x50, 0xc2, 0x64, 0x20, 0x81, 0x12, 0xb6, 0x07, 0x2f, 0x10, 0xb8, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x28, 0x21, 0x19, 0xc8, 0xa0, 0x84, 0x1b, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xcc, 0x95, 0xd1, 0x81, 0x84, 0xb1, 0x85, 0xc9, 0xb5, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xa0, 0x84, 0x68, 0x20, 0x83, 0x12, 0xf2, 0x83, 0x85, 0x34, 0xe1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x06, 0x25, 0x0c, 0x06, 0x32, 0x28, 0x61, 0xb5, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xa0, 0x84, 0xc9, 0xc1, 0x93, 0xec, 0x0f, 0x0f, 0x8e, 0x7c, 0xad, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x94, 0x90, 0x0c, 0xa4, 0x50, 0xc2, 0x97, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xe9, 0xd2, 0xda, 0xca, 0xe4, 0x40, 0xc2, 0xc6, 0xe8, 0xd2, 0xec, 0xc2, 0xe8, 0xca, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x50, 0x42, 0x34, 0x90, 0x42, 0x09, 0xf9, 0xc1, 0x5b, 0xd2, 0x0e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x4a, 0x18, 0x0c, 0xa4, 0x50, 0xc2, 0xe2, 0x20, 0x04, 0x1f, 0xea, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x59, 0x30, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x1a, 0xe0, 0xe1, 0xf6, 0x46, 0x57, 0xd6, 0x12, 0x26, 0x67, 0xf7, 0x36, 0x80, 0xf6, 0x5b, 0x1d, 0x1d, 0x88, 0x5c, 0x59, 0x5c, 0x5d, 0xd9, 0x1c, 0x1d, 0x08, 0x49, 0x8b, 0x6f, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xf5, 0x07, 0x88, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe5, 0xb3, 0x3c, 0x1b, 0x84, 0x1a, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x67, 0x11, 0x3f, 0xb0, 0x67, 0x11, 0x36, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x2c, 0x42, 0x30, 0xb0, 0x67, 0x11, 0xa2, 0x83, 0xe6, 0xf0, 0x3e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3d, 0x8b, 0x90, 0x0d, 0xec, 0x59, 0x84, 0xc1, 0x86, 0x37, 0xee, 0x0e, 0xde, 0x98, 0x76, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x59, 0x84, 0xc5, 0xc0, 0x9e, 0x45, 0x98, 0x1c, 0x14, 0x14, 0x99, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xc5, 0xf2, 0x6c, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xde, 0xf2, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x10, 0x5d, 0x9e, 0x83, 0x94, 0x2d, 0xa6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0x7e, 0x79, 0x36, 0xfc, 0x3b, 0xbf, 0xc1, 0x73, 0xd9, 0x52, 0x0e, 0xde, 0x89, 0x5c, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x01, 0xc6, 0x3c, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x12, 0x99, 0xe7, 0x60, 0xa5, 0x38, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0xcd, 0x3c, 0x1b, 0xfe, 0x9d, 0xdf, 0xe0, 0xb9, 0x6c, 0x29, 0x07, 0x0f, 0x86, 0xae, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc6, 0x69, 0x9e, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x61, 0xcd, 0x73, 0xb0, 0x76, 0x66, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc0, 0x6d, 0x9e, 0x0d, 0xff, 0xce, 0x6f, 0xf0, 0x5c, 0xb6, 0x94, 0x83, 0x87, 0x68, 0xd7, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x61, 0x38, 0xcf, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x20, 0xe7, 0x39, 0x38, 0xe7, 0xa6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x7e, 0xce, 0xb3, 0xe1, 0xdf, 0xf9, 0x0d, 0x9e, 0xcb, 0x96, 0x72, 0xf0, 0x92, 0xff, 0xba, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x72, 0xe7, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd5, 0xf0, 0x3c, 0x07, 0xaf, 0x29, 0x88, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xc7, 0x9e, 0x67, 0xc3, 0xbf, 0xf3, 0x1b, 0x3c, 0x97, 0x2d, 0xe5, 0xe0, 0xa9, 0x05, 0x76, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xc6, 0xcf, 0xb3, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xfd, 0x79, 0x0e, 0x9e, 0x7c, 0x10, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x19, 0x41, 0xcf, 0x86, 0x7f, 0xe7, 0x37, 0x78, 0x2e, 0x5b, 0xca, 0xc1, 0x6b, 0xe6, 0xeb, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x49, 0xa1, 0x67, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x33, 0xf4, 0x1c, 0x1c, 0xb5, 0x4e, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x85, 0xe8, 0xd9, 0xf0, 0xef, 0xfc, 0x06, 0xcf, 0x65, 0x4b, 0x39, 0x78, 0x64, 0x84, 0x5d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x5a, 0xf4, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9e, 0x8c, 0x9e, 0x83, 0xa7, 0x31, 0xc4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xeb, 0xd1, 0xb3, 0xe1, 0xdf, 0xf9, 0x0d, 0x9e, 0xcb, 0x96, 0x72, 0xf0, 0x0a, 0x0c, 0xbb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x26, 0xe9, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x65, 0x27, 0x3d, 0x07, 0x6b, 0x74, 0xd8, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x66, 0xe9, 0xd9, 0xf0, 0xef, 0xfc, 0x06, 0xcf, 0x65, 0x4b, 0x39, 0x78, 0xa6, 0x87, 0x5d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xcc, 0xf4, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xdc, 0x9a, 0x9e, 0x83, 0x35, 0x77, 0xec, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xec, 0xf4, 0x6c, 0xf8, 0x77, 0x7e, 0x83, 0xe7, 0xb2, 0xa5, 0x1c, 0xbc, 0xa3, 0xc4, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x81, 0x7a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xcc, 0x50, 0xcf, 0x41, 0xca, 0x60, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf1, 0x46, 0x3d, 0x07, 0x2f, 0x07, 0xf9, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x84, 0xa9, 0xe7, 0x20, 0x04, 0x1f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf8, 0xa9, 0x67, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x49, 0xf5, 0x1c, 0x9c, 0x37, 0x4f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xb7, 0xea, 0x39, 0x78, 0x6a, 0x29, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x89, 0x5c, 0x3d, 0x07, 0xcd, 0x6e, 0x47, 0xd5, 0x2c, 0xa8, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x0e, 0xeb, 0xd9, 0x20, 0xf5, 0xa2, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x8a, 0xac, 0x67, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x47, 0xd2, 0x89, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x3c, 0x92, 0x4e, 0xa4, 0x01, 0x78, 0x2d, 0x33, 0x33, 0x2b, 0x1b, 0xa3, 0x9b, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x19, 0x63, 0x4b, 0x2b, 0x73, 0xa3, 0x03, 0x19, 0x0b, 0x73, 0x03, 0x29, 0x6b, 0x4b, 0xa3, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x24, 0x9d, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa2, 0x5a, 0xcf, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb4, 0x5b, 0xcf, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xe8, 0x2b, 0x56, 0x06, 0x52, 0xe6, 0xf6, 0x56, 0x77, 0x86, 0x06, 0x42, 0xf7, 0x06, 0x92, 0x46, 0x56, 0xe6, 0x46, 0x97, 0x66, 0x96, 0x07, 0x72, 0x87, 0x96, 0x36, 0x86, 0x06, 0x22, 0x57, 0x16, 0x57, 0x57, 0x36, 0x47, 0x07, 0x72, 0x57, 0x76, 0x22, 0x57, 0x06, 0x42, 0x17, 0xc6, 0xb6, 0x96, 0xe6, 0x76, 0x06, 0x12, 0x26, 0xf6, 0x56, 0x47, 0xf7, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x71, 0x3d, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x25, 0x5b, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x71, 0x79, 0x3d, 0x1b, 0xfe, 0x5c, 0x1a, 0xf8, 0x34, 0x72, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xdc, 0xae, 0xe7, 0xa0, 0xcc, 0xd2, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x27, 0xb0, 0x67, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x92, 0xad, 0x67, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd4, 0xaf, 0x67, 0xc3, 0xbf, 0xf3, 0x6b, 0xf0, 0x4a, 0xb6, 0x9e, 0x16, 0xf0, 0xd1, 0xe8, 0xe8, 0xe0, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc6, 0xc4, 0x9e, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xc2, 0xd8, 0xb3, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xa7, 0x19, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x42, 0xd9, 0xb3, 0xe1, 0xcf, 0xa5, 0x81, 0x4f, 0x23, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0x23, 0x7b, 0x0e, 0xca, 0x2c, 0xdd, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xc0, 0xec, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x9d, 0x9a, 0x3d, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x9e, 0x59, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb9, 0xa2, 0x3d, 0x1b, 0xfe, 0x5c, 0x1a, 0xc0, 0x7b, 0x8c, 0x2d, 0xad, 0xcc, 0x8d, 0xae, 0x45, 0xae, 0x6c, 0x0e, 0xee, 0xcd, 0x6d, 0xae, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x01, 0xed, 0xd9, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0x8b, 0x12, 0xb1, 0x6a, 0x05, 0xf0, 0x68, 0x4b, 0x6b, 0x2b, 0x6b, 0x21, 0x0b, 0xa3, 0x0b, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0x8d, 0x89, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x77, 0xda, 0xb3, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x59, 0x7b, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xc9, 0x07, 0x75, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x40, 0xb5, 0xe7, 0xe0, 0x3c, 0x3b, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x42, 0x6d, 0xcf, 0x86, 0x3f, 0x97, 0x36, 0x38, 0xc8, 0xb3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xc9, 0xf6, 0x1c, 0x3c, 0xfd, 0x5c, 0xae, 0xc3, 0x29, 0xb6, 0x00, 0xde, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0xe7, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x0b, 0x4a, 0x11, 0x1b, 0x00, 0x7f, 0xc6, 0xde, 0xdc, 0xcc, 0xd2, 0xce, 0xea, 0xe4, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x40, 0xcc, 0xde, 0xe4, 0x40, 0xde, 0xea, 0xe8, 0xc4, 0xde, 0xea, 0xdc, 0xc8, 0x40, 0xd0, 0xe8, 0xe8, 0xe0, 0x40, 0xe4, 0xca, 0xe2, 0xea, 0xca, 0xe6, 0xe8, 0xe6, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x5e, 0x50, 0x8a, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xb1, 0xdb, 0xb3, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x80, 0x7b, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0x40, 0x0b, 0xb9, 0xb2, 0xb8, 0xba, 0xb2, 0x39, 0xba, 0x32, 0x39, 0x10, 0xb2, 0xb2, 0x30, 0x36, 0x90, 0xbb, 0x34, 0x3a, 0x34, 0x90, 0x19, 0x18, 0x18, 0x10, 0xb9, 0x32, 0xb2, 0x34, 0xb9, 0xb2, 0x31, 0xba, 0xb9, 0x14, 0xd7, 0x86, 0x3f, 0x97, 0x06, 0xf0, 0x90, 0x2b, 0x23, 0x4b, 0x93, 0x2b, 0x1b, 0xa3, 0x9b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0x7b, 0x7b, 0x36, 0x08, 0xa0, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9c, 0xe1, 0x9e, 0x83, 0xc3, 0x02, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0xc9, 0x3d, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xa0, 0xdd, 0x49, 0xd0, 0xd8, 0x58, 0x19, 0x1c, 0x5d, 0x8b, 0x54, 0x98, 0xdb, 0x59, 0x99, 0x0e, 0x88, 0x58, 0x1e, 0x5d, 0xd9, 0xdc, 0x09, 0x48, 0x9a, 0x1b, 0x08, 0x1d, 0x5a, 0x19, 0xc8, 0x9b, 0x5c, 0xda, 0x59, 0x9a, 0x5b, 0x18, 0x1b, 0x88, 0x5c, 0xd9, 0x1c, 0xdc, 0x9b, 0xdb, 0x5c, 0x99, 0x6b, 0xc3, 0x9f, 0x4b, 0x03, 0xbc, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc2, 0x71, 0xcf, 0x06, 0x01, 0x74, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xca, 0xdc, 0x73, 0x50, 0x54, 0x8a, 0xb7, 0x1a, 0x3c, 0x8b, 0x12, 0x71, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0x59, 0x94, 0x88, 0x0d, 0x80, 0x7f, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xcf, 0xa2, 0x44, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x8b, 0xee, 0xd9, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xaf, 0xee, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x75, 0xd8, 0x3d, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xe2, 0x74, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0xe0, 0x3d, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x68, 0x9b, 0xa5, 0xb9, 0x85, 0xb1, 0x81, 0xc8, 0x95, 0x91, 0xa5, 0xc9, 0x95, 0x8d, 0xd1, 0xb9, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xb3, 0x48, 0xe8, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0xbb, 0x7b, 0x36, 0xfc, 0x3b, 0xbf, 0xc1, 0x0b, 0x50, 0xe8, 0x0e, 0x9e, 0x62, 0x88, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2f, 0x7a, 0xcf, 0x86, 0x3f, 0x97, 0x06, 0xf0, 0x11, 0xcb, 0xa3, 0x2b, 0x9b, 0x6b, 0x91, 0x2b, 0x0b, 0x23, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0xcc, 0x7b, 0x0e, 0xca, 0x2c, 0xdd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xdf, 0x7b, 0x36, 0xfc, 0xb9, 0x34, 0x80, 0x67, 0x19, 0x1e, 0x5c, 0xd9, 0x18, 0x5d, 0x19, 0x59, 0xcb, 0x5c, 0x9a, 0x5e, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xd6, 0xde, 0xb3, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x38, 0xdf, 0x73, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x8a, 0xdf, 0x73, 0x50, 0x66, 0xe9, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x52, 0x80, 0xcf, 0x86, 0x3f, 0x97, 0x06, 0xf0, 0x4a, 0x73, 0x1b, 0x93, 0x2b, 0x6b, 0x2b, 0x73, 0xa3, 0x0b, 0x63, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0xfd, 0x7b, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0x09, 0x7c, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x12, 0x7c, 0x0e, 0x9e, 0x7e, 0x2e, 0x57, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x3b, 0xf8, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc0, 0x08, 0x9f, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0x91, 0xc1, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc6, 0x0c, 0x9f, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x2c, 0x12, 0xba, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7c, 0x0b, 0x9f, 0x83, 0xa7, 0x81, 0x23, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x00, 0xe2, 0xb3, 0xe1, 0xcf, 0xa5, 0x01, 0x3c, 0xcc, 0xea, 0xd8, 0xd8, 0x5a, 0xcc, 0xd2, 0xd8, 0xca, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb8, 0x0e, 0x9f, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd0, 0x11, 0x9f, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf6, 0x13, 0x9f, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0xa3, 0x31, 0x11, 0xab, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x5c, 0xf1, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0x2e, 0x3e, 0x07, 0x0f, 0xb7, 0xad, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x76, 0xc6, 0xe7, 0x20, 0x04, 0x1f, 0xea, 0x70, 0x8a, 0xad, 0xc1, 0x9b, 0x22, 0x47, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0xde, 0x14, 0x39, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xb0, 0xe3, 0xb3, 0x41, 0xa8, 0x21, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xf1, 0x90, 0x0c, 0xa4, 0xc6, 0xc3, 0x64, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6a, 0x3c, 0x44, 0x03, 0xa9, 0xf1, 0x90, 0x1f, 0xbc, 0xfe, 0x3b, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x8d, 0x87, 0xc1, 0x40, 0x6a, 0x3c, 0x2c, 0x0e, 0x0a, 0x8a, 0xcc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x71, 0x7c, 0x36, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3b, 0x1e, 0x92, 0x81, 0xec, 0x78, 0x18, 0x6f, 0xb0, 0x5e, 0xa5, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x8e, 0x87, 0x70, 0x20, 0x3b, 0x1e, 0x16, 0x07, 0xef, 0xf2, 0xb7, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xf9, 0xf1, 0x39, 0x78, 0x81, 0xc0, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x20, 0x0f, 0xc9, 0x40, 0x82, 0x3c, 0x8c, 0x37, 0x58, 0xaf, 0x52, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xc8, 0x43, 0x38, 0x90, 0x20, 0x0f, 0x8b, 0x83, 0xd7, 0xdb, 0x7b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x1a, 0xf9, 0x1c, 0xbc, 0x40, 0xe0, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x91, 0x87, 0x64, 0x20, 0x47, 0x1e, 0xc6, 0x1b, 0xac, 0x57, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xe4, 0x21, 0x1c, 0xc8, 0x91, 0x87, 0xc5, 0xc1, 0x23, 0xc7, 0xee, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x9a, 0x7c, 0x0e, 0x5e, 0x20, 0x70, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb3, 0x94, 0xcf, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xab, 0xf2, 0x39, 0x78, 0x39, 0x1f, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe1, 0x5b, 0x3e, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x95, 0x6c, 0x3d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x4d, 0x59, 0x3e, 0x07, 0xcf, 0x28, 0x44, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x5f, 0xcc, 0x67, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0xa0, 0x14, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x0c, 0xcc, 0x67, 0xc3, 0xbf, 0xf3, 0x6b, 0xf0, 0x82, 0x52, 0xc4, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf8, 0x33, 0x9f, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xa8, 0xe6, 0x73, 0xf0, 0xda, 0x44, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0xdc, 0x7c, 0x0e, 0x42, 0xf0, 0xa1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0xe2, 0x7c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x00, 0x9d, 0xcf, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x1e, 0x67, 0xe7, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x29, 0x9f, 0xcf, 0x86, 0x3f, 0x97, 0x06, 0x3e, 0x8d, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xd0, 0xf3, 0x39, 0x28, 0xb3, 0x74, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x18, 0xf4, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0x4f, 0x87, 0xaa, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x04, 0xf4, 0xd9, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0x1d, 0xaa, 0xae, 0x83, 0xa7, 0x18, 0x22, 0xd6, 0x0a, 0xf0, 0xd2, 0xbd, 0xb5, 0xa0, 0xd1, 0xd1, 0xc9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xaf, 0x6c, 0x4a, 0x6c, 0x00, 0x7e, 0xc3, 0xc8, 0xc2, 0xe0, 0xe8, 0xe6, 0x40, 0xe8, 0xde, 0x40, 0xde, 0xd8, 0xc8, 0x40, 0xca, 0xf2, 0xe4, 0xca, 0x40, 0xd2, 0xdc, 0xe8, 0xca, 0xe4, 0xcc, 0xc2, 0xc6, 0xca, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0x11, 0x7d, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xd9, 0x43, 0x32, 0x90, 0x64, 0x0f, 0x0f, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xd9, 0x43, 0x34, 0x90, 0x64, 0x0f, 0x2d, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x71, 0x64, 0x74, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x64, 0x0f, 0x8b, 0x83, 0xd7, 0x69, 0x25, 0x1e, 0x3c, 0x0d, 0x1c, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb2, 0x87, 0x9a, 0x81, 0x24, 0x7b, 0x38, 0xb0, 0xe1, 0xcf, 0xa5, 0x0d, 0x9e, 0x0a, 0x90, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xf6, 0x50, 0x78, 0xf0, 0x50, 0xb0, 0xc4, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb2, 0x87, 0xc6, 0x81, 0x24, 0x7b, 0x68, 0x3d, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x7b, 0xa8, 0x1d, 0x48, 0xb2, 0x87, 0xfe, 0x83, 0x87, 0x19, 0x24, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x03, 0xa3, 0xcf, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x7b, 0x48, 0x06, 0xb2, 0xec, 0x61, 0xb2, 0xe1, 0xdf, 0xf9, 0x05, 0x7c, 0x34, 0x3a, 0x3a, 0xb9, 0x83, 0xa7, 0x16, 0xd8, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x3a, 0xfa, 0x6c, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0x0e, 0xf2, 0x6c, 0x1b, 0x94, 0xd0, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9e, 0x3d, 0xc4, 0x03, 0x79, 0xf6, 0xb0, 0xdc, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x7b, 0xc8, 0x07, 0xf2, 0xec, 0x61, 0x73, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xf6, 0x30, 0x1a, 0xc8, 0xb3, 0x87, 0xe1, 0xc1, 0xd3, 0xcf, 0xe5, 0x3a, 0x08, 0xd3, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x22, 0x7d, 0x36, 0x28, 0xe1, 0x31, 0xd7, 0xe0, 0xa9, 0x00, 0x89, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x46, 0xe9, 0x73, 0x50, 0x50, 0x64, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x5c, 0xfa, 0x6c, 0x70, 0x0c, 0x37, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xd0, 0xf4, 0xd9, 0xf0, 0xb6, 0xce, 0x06, 0x07, 0x79, 0xb6, 0xc1, 0xeb, 0x83, 0xc7, 0xf7, 0x25, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x74, 0xfa, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd4, 0x4f, 0x9f, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x9c, 0x88, 0xba, 0x83, 0xf7, 0x02, 0xd2, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x2a, 0xea, 0xb3, 0xe1, 0x6d, 0x9d, 0x0d, 0x5e, 0x60, 0x51, 0x77, 0xf0, 0x5e, 0x40, 0xba, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0x4b, 0x7d, 0x0e, 0xce, 0x9e, 0x71, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0xa0, 0xbc, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x38, 0x58, 0x6d, 0x90, 0x7a, 0x51, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x0b, 0x61, 0xb5, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0x2c, 0xc0, 0x1b, 0x46, 0x46, 0x26, 0x57, 0x36, 0x37, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xbc, 0x47, 0x32, 0xb1, 0x01, 0x78, 0x18, 0x63, 0x4b, 0x2b, 0x73, 0xa3, 0x03, 0x49, 0x82, 0x02, 0x09, 0x23, 0x23, 0x93, 0x2b, 0x9b, 0x9b, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x8f, 0x64, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2f, 0x85, 0xd5, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x26, 0x86, 0xd5, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xd9, 0xb0, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x93, 0x2d, 0xac, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x04, 0xb1, 0x3a, 0x38, 0xdc, 0xb7, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x73, 0x89, 0xd5, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x43, 0xb1, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xb3, 0x25, 0xac, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x6f, 0xb1, 0x3a, 0x38, 0x93, 0xb8, 0xd6, 0x0a, 0xf8, 0x6d, 0x65, 0x74, 0xe8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x57, 0x99, 0x26, 0x36, 0x80, 0x1f, 0x1a, 0x1d, 0x1d, 0x1c, 0x48, 0x5b, 0x19, 0x1d, 0xda, 0x1b, 0xd9, 0xdc, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xab, 0x4c, 0x13, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x6a, 0xac, 0x36, 0x08, 0x36, 0xd3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x72, 0xac, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x36, 0x78, 0x1b, 0x42, 0x5b, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xca, 0x8d, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x4d, 0x3f, 0x56, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x1b, 0xbc, 0xdf, 0xa1, 0xad, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0xad, 0xc7, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xae, 0x22, 0xab, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xef, 0xa8, 0x88, 0x6a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x25, 0x42, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0x4a, 0x56, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x1b, 0x3c, 0x6e, 0xa3, 0xad, 0x83, 0xc6, 0xc4, 0x39, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x7b, 0xb2, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0xd9, 0xe0, 0x99, 0x21, 0x6d, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x95, 0x4d, 0x56, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x56, 0x59, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x6c, 0xf0, 0x3c, 0x97, 0xb6, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0xea, 0x29, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0xb7, 0xac, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0x3c, 0xa8, 0x2a, 0xaa, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x8c, 0x34, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0b, 0xc1, 0xac, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x36, 0x78, 0xa6, 0x23, 0x57, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xcf, 0x8c, 0x55, 0x2b, 0x80, 0xe7, 0xd8, 0x9b, 0xdc, 0x5c, 0x8b, 0x5c, 0xd9, 0x59, 0xda, 0x1c, 0x9d, 0x5c, 0xbe, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xf0, 0x5e, 0xe6, 0xc4, 0x06, 0xc0, 0x97, 0x37, 0xb9, 0xb4, 0xb3, 0x34, 0xb7, 0x39, 0x90, 0xb1, 0x30, 0xba, 0xb2, 0xb3, 0x37, 0xb9, 0x34, 0xbd, 0x32, 0x32, 0x10, 0xb1, 0x3c, 0x90, 0x30, 0x38, 0x38, 0xb9, 0x37, 0xbb, 0x30, 0x36, 0x90, 0x39, 0xba, 0x30, 0xba, 0xba, 0xb9, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xf7, 0x32, 0x27, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x9b, 0x59, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x02, 0x36, 0xab, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0xcb, 0x95, 0xc5, 0xd5, 0x95, 0xcd, 0xd1, 0xcd, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x75, 0x69, 0x56, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x91, 0x6f, 0x56, 0x07, 0x25, 0xe2, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd5, 0x73, 0x56, 0x1b, 0xfe, 0x9d, 0x5f, 0x80, 0xef, 0x4d, 0x2e, 0xed, 0x2c, 0xcd, 0xad, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xd7, 0xb3, 0xda, 0xf0, 0xe7, 0xd2, 0x00, 0x7f, 0x18, 0x1c, 0x9c, 0xdc, 0x9b, 0x5d, 0x19, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x85, 0x67, 0xb5, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xe7, 0x67, 0x75, 0x50, 0x22, 0xbe, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x2b, 0x68, 0x75, 0xf0, 0xe2, 0xef, 0xc4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x4e, 0xb4, 0xda, 0xf0, 0xe7, 0xd2, 0x00, 0xbf, 0x5c, 0x99, 0x5a, 0xd9, 0x18, 0x5d, 0x19, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x73, 0x68, 0xb5, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xd5, 0x68, 0x75, 0x50, 0x22, 0xbe, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x19, 0x69, 0x75, 0xf0, 0xe2, 0xef, 0xc4, 0x5a, 0x01, 0x5e, 0xbb, 0xb4, 0xb9, 0x34, 0xba, 0x37, 0x79, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0xe9, 0xf0, 0x89, 0x0d, 0x80, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x2d, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x20, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x20, 0x65, 0x61, 0x75, 0x74, 0x68, 0x20, 0x66, 0x6c, 0x6f, 0xf7, 0x4a, 0x80, 0x37, 0x59, 0xdd, 0x18, 0x9d, 0x0e, 0x88, 0xd8, 0xdb, 0x9b, 0x1b, 0x08, 0x59, 0xdd, 0x18, 0xbd, 0x18, 0x78, 0x61, 0x6e, 0xe4, 0x12, 0x80, 0x27, 0x73, 0x65, 0x73, 0x68, 0x3a, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2c, 0x20, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0xf3, 0x62, 0xf0, 0x6f, 0xf2, 0x12, 0x00, 0x6f, 0xc0, 0x95, 0xb9, 0x91, 0xe9, 0x80, 0x84, 0xdd, 0x85, 0xa5, 0xd1, 0xa5, 0xb9, 0x9d, 0x81, 0x94, 0xd0, 0xd5, 0xb9, 0x95, 0x81, 0x98, 0xbd, 0xc9, 0x81, 0x94, 0xac, 0x95, 0x95, 0xb9, 0x81, 0xcc, 0x95, 0xb9, 0xd1, 0x81, 0x84, 0xd1, 0x81, 0xd0, 0xa5, 0xb5, 0x95, 0xb1, 0x80, 0x98, 0xbd, 0xc9, 0x81, 0xa4, 0xb9, 0xa5, 0xd1, 0xa5, 0x85, 0xb1, 0x81, 0x94, 0x85, 0xd5, 0xd1, 0xa1, 0x81, 0xa0, 0xd1, 0xd1, 0xc1, 0x81, 0xc8, 0x95, 0xc5, 0x4b, 0x00, 0x1e, 0xcc, 0xa1, 0xa5, 0xc1, 0xe9, 0x80, 0xd0, 0xa1, 0x95, 0x81, 0x00, 0xc1, 0x81, 0x84, 0xd1, 0xd1, 0x95, 0xb5, 0xc1, 0xd1, 0xa5, 0xb9, 0x9d, 0x81, 0xd0, 0xbd, 0x81, 0xb0, 0xbd, 0x9d, 0x81, 0xa4, 0xb9, 0x4b, 0x00, 0x7e, 0x8b, 0x85, 0xcd, 0x95, 0xe9, 0x80, 0xb0, 0xbd, 0x8d, 0x85, 0xb1, 0x81, 0xc0, 0xc9, 0xbd, 0xd1, 0xbd, 0x8d, 0xbd, 0xb1, 0xad, 0xa0, 0xbd, 0xcd, 0xd1, 0xb9, 0x85, 0xb5, 0x95, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0x84, 0xd1, 0xd1, 0x95, 0xb5, 0xc1, 0xd1, 0x81, 0xcc, 0xd1, 0x85, 0xc9, 0xd1, 0x95, 0x91, 0x81, 0xbc, 0xb9, 0xb1, 0x80, 0xa4, 0x99, 0x81, 0x84, 0xb9, 0xe5, 0x4b, 0x00, 0x1e, 0xb1, 0x85, 0xcd, 0xd1, 0xe9, 0x80, 0xd0, 0xa1, 0x95, 0x81, 0xd4, 0xc9, 0xb1, 0x81, 0xd0, 0xbd, 0x81, 0xc8, 0x95, 0x91, 0xa5, 0xc9, 0x95, 0x8d, 0xd1, 0x81, 0xd0, 0xbd, 0x81, 0x84, 0x99, 0xd1, 0x95, 0xc9, 0x81, 0xb0, 0xbd, 0x9d, 0xb5, 0xa4, 0xb9, 0x4b, 0x00, 0xfc, 0x40, 0xf7, 0xb6, 0x56, 0xa6, 0x03, 0x12, 0x56, 0x47, 0x87, 0x56, 0xe6, 0x46, 0x97, 0x36, 0x16, 0x46, 0x97, 0xf6, 0xe6, 0x06, 0x32, 0x57, 0x36, 0x26, 0x57, 0x46, 0x07, 0x22, 0x57, 0x36, 0x56, 0x96, 0x66, 0x57, 0x46, 0x06, 0xf2, 0x66, 0x57, 0x26, 0x07, 0x12, 0xd6, 0x56, 0x36, 0x07, 0xf2, 0x26, 0x07, 0xf2, 0x66, 0x66, 0x56, 0x26, 0x57, 0x46, 0x06, 0x22, 0x96, 0x07, 0x62, 0x97, 0x36, 0x97, 0x46, 0xf7, 0x26, 0xd7, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xd3, 0xe1, 0x13, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x2d, 0xad, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfc, 0xa6, 0xd5, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x99, 0xba, 0xc7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x59, 0xa6, 0xd5, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xdf, 0xa7, 0xd5, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xef, 0xa8, 0xd5, 0xc1, 0xd3, 0xd3, 0x3d, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x13, 0xd5, 0x6a, 0xc3, 0x07, 0xf3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x0d, 0x5c, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x9f, 0x2b, 0x9b, 0x43, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x01, 0xae, 0x0e, 0xce, 0xe0, 0xab, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb9, 0xab, 0x56, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x1a, 0xd6, 0x6a, 0xc3, 0x9f, 0x4b, 0x03, 0x3e, 0x5c, 0x99, 0x1b, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xe4, 0x6a, 0xb5, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x45, 0x6b, 0x75, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x9c, 0x6b, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x7d, 0xad, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x73, 0x0c, 0x11, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x78, 0xad, 0x0e, 0x9e, 0x9e, 0xee, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa1, 0xb1, 0xd5, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xdb, 0x41, 0xd0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfb, 0xb0, 0xd5, 0x86, 0x7f, 0xe7, 0xd7, 0xa0, 0xcd, 0xde, 0xf1, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x9f, 0xad, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xd3, 0xd7, 0xe3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x35, 0xcd, 0x56, 0x07, 0x6d, 0x5b, 0x8f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x63, 0x6d, 0xb5, 0xe1, 0xcf, 0xa5, 0x0d, 0x5f, 0xd4, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x4e, 0x5b, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x67, 0x5b, 0x1d, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x7b, 0x5b, 0x1d, 0x9c, 0x67, 0x47, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x19, 0xdd, 0x6a, 0xc3, 0x9f, 0x4b, 0x1b, 0xac, 0x17, 0x01, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x32, 0xb7, 0x3a, 0x38, 0xcf, 0x8e, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x17, 0x6f, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0x9f, 0xee, 0x6d, 0xad, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x77, 0xb7, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xa8, 0xb7, 0x3a, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xd1, 0xb7, 0x3a, 0x38, 0x83, 0xaf, 0x56, 0x2b, 0x80, 0xe7, 0x18, 0x5a, 0x98, 0x9b, 0x5b, 0x19, 0x5b, 0x4b, 0x99, 0x5d, 0x99, 0x1b, 0xbd, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x2e, 0x2e, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd0, 0x84, 0xab, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x5b, 0x86, 0x64, 0x20, 0x6f, 0x19, 0x6a, 0x36, 0x58, 0xaf, 0x52, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x2d, 0x43, 0x38, 0x90, 0xb7, 0x0c, 0xab, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0x75, 0xe1, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xc8, 0xe1, 0x6a, 0xc3, 0xbf, 0xf3, 0x0b, 0xf8, 0x73, 0x69, 0x67, 0x6e, 0x6b, 0xf0, 0xf4, 0x03, 0xb9, 0x0e, 0x5e, 0x33, 0x5f, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x2e, 0x43, 0x32, 0x90, 0xb8, 0x0c, 0x3d, 0x1b, 0xac, 0x57, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x97, 0x21, 0x1c, 0x48, 0x5c, 0x86, 0xd9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x5e, 0x55, 0x71, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x81, 0x71, 0x75, 0xf0, 0x6c, 0x34, 0xc5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x73, 0x19, 0x92, 0x81, 0xcc, 0x65, 0xa8, 0xd8, 0x60, 0xbd, 0x4a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb9, 0x0c, 0xe1, 0x40, 0xe6, 0x32, 0x2c, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x50, 0x8e, 0xab, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x58, 0x8f, 0xab, 0x83, 0x67, 0xa3, 0x29, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x3a, 0x72, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x4c, 0xae, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0xa8, 0x83, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0x5c, 0xae, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x9b, 0xf1, 0x42, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x57, 0xae, 0x0e, 0x1e, 0x85, 0x17, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x34, 0xcd, 0xd5, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x45, 0x9e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xc9, 0x5c, 0x1d, 0xbc, 0x6f, 0x43, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf2, 0x9d, 0xab, 0x0d, 0x7f, 0x2e, 0x6d, 0x98, 0xce, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa8, 0x9c, 0xab, 0x83, 0xe5, 0xb0, 0xd8, 0xb5, 0x02, 0xbc, 0x70, 0x6f, 0x72, 0x74, 0x6b, 0x65, 0xf9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xdb, 0x15, 0x15, 0x1b, 0x00, 0xbf, 0xc6, 0xde, 0xda, 0xe0, 0xd8, 0xca, 0xe8, 0xca, 0xc8, 0x40, 0xde, 0xe4, 0x40, 0xd2, 0xdc, 0x5a, 0xe0, 0xe4, 0xde, 0xce, 0xe4, 0xca, 0xe6, 0xe6, 0x40, 0xde, 0xea, 0xe8, 0xce, 0xde, 0xd2, 0xdc, 0xce, 0x40, 0xca, 0xc2, 0xea, 0xe8, 0xd0, 0x40, 0xcc, 0xd8, 0xde, 0xee, 0x95, 0x00, 0xff, 0xb6, 0x30, 0xb2, 0x32, 0x1d, 0x10, 0xb6, 0x34, 0xbb, 0x32, 0x90, 0xb9, 0x34, 0xb7, 0xb1, 0x72, 0x83, 0x97, 0x06, 0x28, 0x2e, 0x01, 0x78, 0x43, 0x56, 0x37, 0x46, 0xa7, 0x03, 0x32, 0xf6, 0xe6, 0x66, 0x96, 0x26, 0xd7, 0x06, 0x22, 0x57, 0x16, 0x57, 0x57, 0x36, 0x47, 0x07, 0x12, 0x76, 0x17, 0x96, 0x46, 0x97, 0xe6, 0x76, 0x06, 0x22, 0x57, 0x46, 0x96, 0x26, 0x57, 0x36, 0x46, 0x2f, 0x01, 0xf8, 0x49, 0xf7, 0xb6, 0x56, 0xa6, 0x03, 0x32, 0x57, 0x36, 0x26, 0x57, 0x46, 0x07, 0x42, 0xf7, 0x06, 0x92, 0xe6, 0x36, 0xc6, 0x56, 0x47, 0x56, 0x06, 0x92, 0xe6, 0x06, 0x22, 0x57, 0x46, 0x96, 0x26, 0x57, 0x36, 0x46, 0xc7, 0x02, 0x52, 0xe7, 0xc6, 0x56, 0x36, 0x37, 0x07, 0x12, 0x26, 0xf6, 0x26, 0x47, 0x97, 0xe6, 0x76, 0xd6, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xdb, 0x15, 0x15, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x85, 0xae, 0x36, 0x7c, 0x30, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x40, 0xda, 0xd5, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3e, 0x6c, 0x69, 0x76, 0x65, 0x20, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0xa1, 0x32, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x9d, 0xd9, 0xd5, 0xc1, 0x91, 0xaf, 0x75, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb1, 0xe8, 0x6a, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x2a, 0x5d, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xfb, 0x26, 0x07, 0x12, 0x76, 0x17, 0x96, 0x46, 0x07, 0x22, 0x57, 0x46, 0x96, 0x26, 0xb7, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0x8e, 0xa3, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x81, 0x74, 0xb5, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xe2, 0x74, 0x75, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x26, 0x75, 0x75, 0xf0, 0xf4, 0x74, 0x8f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xcb, 0xba, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xeb, 0x2e, 0x8d, 0x0e, 0x0d, 0x64, 0xae, 0x6c, 0x4c, 0xae, 0x8c, 0x6e, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0xd5, 0x4a, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xdc, 0xea, 0x6a, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xa0, 0xeb, 0xea, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x44, 0xec, 0xea, 0xe0, 0x0c, 0xbe, 0x5a, 0x87, 0x53, 0xac, 0x35, 0x78, 0x81, 0x43, 0xd0, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x0b, 0x1c, 0x82, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0xdc, 0xae, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x97, 0x0b, 0xbb, 0x03, 0x41, 0xa3, 0xa3, 0x83, 0x03, 0x41, 0x2b, 0x0b, 0x23, 0x2b, 0x93, 0x9b, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x8f, 0xbb, 0x3a, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0xee, 0xae, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x13, 0xdf, 0xd5, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0xf3, 0xae, 0x0e, 0xce, 0xb3, 0xa3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x0b, 0x5e, 0x6d, 0xf8, 0x73, 0x69, 0xf0, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x06, 0xf0, 0xea, 0xe0, 0x3c, 0x3b, 0x5a, 0x87, 0x53, 0xac, 0x05, 0x7c, 0xb8, 0x3a, 0x39, 0x73, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xd1, 0xd2, 0x8a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x85, 0x8b, 0x57, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x50, 0x27, 0xc7, 0x06, 0x72, 0x97, 0x46, 0x87, 0x06, 0x62, 0x26, 0x17, 0x76, 0xd6, 0x56, 0xe6, 0x46, 0xb7, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xf1, 0x78, 0x75, 0x50, 0x7a, 0xd3, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x36, 0x79, 0xb5, 0xe1, 0xdf, 0xf9, 0x05, 0x7c, 0xb8, 0x3a, 0x39, 0xb6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xb7, 0xbc, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xcd, 0xbc, 0x3a, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xf6, 0xbc, 0x3a, 0x38, 0xcf, 0x8e, 0xd6, 0x0a, 0xe0, 0x53, 0x16, 0x56, 0x47, 0x87, 0xd6, 0x02, 0xc7, 0x56, 0x16, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xbc, 0x5a, 0x5c, 0xb1, 0x01, 0xf8, 0x1a, 0x63, 0x4b, 0x2b, 0x73, 0xa3, 0x03, 0xa1, 0x0b, 0x63, 0x5b, 0x4b, 0x73, 0x3b, 0x03, 0xa1, 0x7b, 0x03, 0x41, 0x7b, 0x9b, 0xa3, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xb5, 0xb8, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5d, 0xe9, 0xd5, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x3f, 0xbd, 0x3a, 0x08, 0xe9, 0xd4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x57, 0xaf, 0x36, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x5e, 0xaf, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x81, 0xec, 0xd5, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x96, 0x04, 0x67, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xa2, 0x7b, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0x1e, 0xb7, 0x37, 0xb7, 0xb1, 0x72, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf2, 0xf6, 0xea, 0xe0, 0x0c, 0xbe, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xaf, 0xf0, 0xd5, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xae, 0xcf, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x09, 0xf0, 0xd5, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x93, 0xf1, 0xd5, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xde, 0xf2, 0xd5, 0xc1, 0x19, 0x7c, 0xb5, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x7e, 0xbe, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0xd2, 0x57, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x98, 0x58, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0xda, 0x57, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x29, 0xf5, 0x8a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0xd7, 0x57, 0x07, 0x67, 0xf0, 0xd5, 0x6a, 0x35, 0x78, 0x24, 0x9d, 0xc8, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x23, 0xe9, 0x44, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0xc3, 0xaf, 0x36, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6f, 0x17, 0x92, 0x81, 0xbc, 0x5d, 0x68, 0xd9, 0x60, 0xbd, 0x4a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb7, 0x0b, 0xe1, 0x40, 0xde, 0x2e, 0x4c, 0x37, 0x08, 0x36, 0xd3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6f, 0x17, 0xe2, 0x81, 0xbc, 0x5d, 0xd8, 0x1c, 0x3c, 0xbf, 0x13, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xdb, 0x85, 0xd1, 0x40, 0xde, 0x2e, 0x2c, 0x0f, 0x56, 0xa1, 0x84, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x61, 0x7e, 0x75, 0xf0, 0xce, 0xe3, 0xba, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0xe2, 0xaf, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xc0, 0xc7, 0xb9, 0x37, 0x90, 0xbb, 0x32, 0x90, 0xb1, 0x30, 0x37, 0x90, 0x30, 0x38, 0x38, 0xb6, 0x3c, 0x90, 0xb1, 0x37, 0x37, 0xb3, 0xb4, 0xb3, 0x3a, 0xb9, 0x30, 0xba, 0xb4, 0x37, 0xb7, 0x39, 0x90, 0x37, 0x37, 0x90, 0x30, 0x10, 0xb8, 0x32, 0xb9, 0x96, 0xb9, 0x34, 0xba, 0x32, 0x10, 0xb1, 0xb0, 0xb9, 0xb4, 0xb9, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x3a, 0x7f, 0xb5, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xb7, 0xb9, 0x5f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xba, 0x7f, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0xbc, 0xd0, 0xe8, 0xe8, 0xe0, 0x5a, 0xc6, 0xde, 0xdc, 0xcc, 0xd2, 0xce, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8c, 0xfc, 0xab, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0xd3, 0x48, 0x16, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x04, 0xb0, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x30, 0x01, 0xd6, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xde, 0xfc, 0x7f, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x31, 0x03, 0xd6, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb9, 0xb2, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x46, 0x01, 0x6b, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x0a, 0x02, 0xeb, 0xa0, 0x44, 0x7c, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xaf, 0x02, 0xeb, 0xe0, 0x3c, 0x3b, 0x5a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x6f, 0x60, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2e, 0x0f, 0xac, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0x2d, 0x03, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x30, 0x13, 0xac, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x74, 0xa8, 0xba, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe6, 0x11, 0xac, 0x83, 0x47, 0x2f, 0x25, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xec, 0x0a, 0xd6, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7a, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0xae, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xe4, 0x82, 0xb5, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xd7, 0xa6, 0x60, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x65, 0x83, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0xfe, 0xb0, 0xb1, 0xb1, 0x32, 0x38, 0xba, 0x32, 0x72, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x78, 0x06, 0xeb, 0xf0, 0xc1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb1, 0x3c, 0x58, 0x1b, 0xfe, 0x5c, 0x1a, 0xe0, 0x15, 0x4b, 0x73, 0x23, 0x4b, 0x73, 0x3b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x74, 0xb0, 0x36, 0xfc, 0x3b, 0xbf, 0x06, 0xcf, 0x3f, 0x5a, 0xac, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x07, 0xc2, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0x43, 0x58, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xf8, 0xc7, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc6, 0x25, 0xac, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x30, 0xfd, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x47, 0xc2, 0x3a, 0x38, 0x23, 0xa1, 0xd6, 0x0a, 0xc0, 0x4f, 0x58, 0x1d, 0x1d, 0x5a, 0x99, 0x1b, 0x5d, 0xda, 0x58, 0x18, 0x5d, 0xda, 0x9b, 0x5b, 0xcb, 0x1c, 0x5d, 0x18, 0x5d, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xf0, 0x9a, 0xa9, 0xc5, 0x06, 0xe0, 0x7b, 0x8e, 0x2e, 0x8c, 0xae, 0x0c, 0xa4, 0x6e, 0xae, 0x8c, 0x0c, 0x24, 0xcd, 0x0d, 0x84, 0x0e, 0xad, 0x0c, 0x84, 0xed, 0xed, 0x2c, 0xcd, 0x0d, 0x64, 0x2e, 0x6f, 0x8e, 0xae, 0xac, 0x6d, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x35, 0x53, 0x8b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb1, 0x50, 0x58, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb7, 0x0a, 0x6b, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0xf9, 0xff, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x65, 0x0a, 0x6b, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x29, 0x0b, 0xeb, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xce, 0x0b, 0xeb, 0xe0, 0x0c, 0xbe, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa6, 0x18, 0xd6, 0x86, 0x7f, 0xe7, 0x17, 0xe0, 0x9d, 0x2b, 0x9b, 0x9b, 0x4b, 0x7b, 0x73, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0xd3, 0xb0, 0x36, 0xfc, 0xb9, 0x34, 0xc0, 0x6f, 0x97, 0x36, 0x97, 0x46, 0xf7, 0x26, 0x37, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x9d, 0x61, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xb6, 0x61, 0x1d, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xca, 0x61, 0x1d, 0x9c, 0xc1, 0x57, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xb6, 0xc3, 0xda, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0x1d, 0x3e, 0xb1, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xbc, 0x0f, 0x6b, 0xc3, 0x9f, 0x4b, 0x03, 0xfc, 0x76, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6e, 0xe7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd3, 0x1e, 0xd6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5b, 0x20, 0xd6, 0x41, 0x89, 0x58, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6e, 0x21, 0xd6, 0x41, 0xdb, 0xd6, 0xe3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x25, 0x62, 0x6d, 0xf8, 0x77, 0x7e, 0x01, 0x5e, 0xb6, 0xb7, 0x33, 0xb1, 0xb7, 0xb7, 0xb5, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x16, 0x12, 0x6b, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xba, 0xc5, 0xde, 0xe8, 0xd0, 0x40, 0xe6, 0xd0, 0xc2, 0xe0, 0xca, 0xc8, 0x40, 0xd8, 0xd2, 0xd6, 0xca, 0x40, 0x4e, 0xe0, 0xe4, 0xde, 0xe8, 0x74, 0x5e, 0x5e, 0xd0, 0xde, 0xe6, 0xe8, 0x4e, 0x1b, 0xfe, 0x5c, 0x1a, 0xe0, 0x2f, 0x73, 0x23, 0x83, 0x7b, 0x4b, 0x73, 0xa3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x1c, 0xb1, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x76, 0x25, 0xd6, 0x86, 0x3f, 0x97, 0x06, 0xfc, 0xba, 0xb9, 0x32, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x68, 0x12, 0x6b, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x2d, 0x13, 0xeb, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd1, 0x13, 0xeb, 0xe0, 0x3c, 0x3b, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0xa7, 0x58, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x5c, 0x7f, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x4a, 0x8a, 0xb5, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xac, 0x8a, 0x75, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xff, 0x8a, 0x75, 0x70, 0x9e, 0x1d, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x54, 0x5c, 0xac, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x66, 0xef, 0xf8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x84, 0x2d, 0xd6, 0xc1, 0xfb, 0x8a, 0x14, 0x6b, 0xd6, 0xe0, 0x69, 0x24, 0x8b, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x4f, 0x23, 0x59, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xf2, 0xc5, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x51, 0xc3, 0x58, 0x1b, 0xfe, 0x5c, 0x1a, 0xe0, 0x9b, 0x2b, 0x1b, 0xab, 0x93, 0x2b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x81, 0xb1, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x8d, 0xb1, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x98, 0xb1, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4f, 0x34, 0xd6, 0x86, 0x3f, 0x97, 0x36, 0x28, 0x5a, 0x4f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x9d, 0xb1, 0x36, 0xfc, 0x3b, 0xbf, 0x06, 0x87, 0xe2, 0xd1, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x2d, 0x1b, 0x6b, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x9c, 0x4f, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xda, 0x1a, 0xeb, 0xe0, 0xa9, 0xa6, 0x8b, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6d, 0x38, 0xd6, 0x86, 0x3f, 0x97, 0x06, 0x78, 0xe0, 0xe4, 0xde, 0xf0, 0xf2, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x94, 0x6f, 0xac, 0x0d, 0x02, 0xe8, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x99, 0x1c, 0xeb, 0xa0, 0x80, 0xcd, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x60, 0x1d, 0x6b, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0xdb, 0x17, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x43, 0xc7, 0x3a, 0x7c, 0xb0, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5d, 0x3c, 0xd6, 0x86, 0x3f, 0x97, 0x06, 0xf8, 0xe5, 0xca, 0xc8, 0xd2, 0xe4, 0xca, 0xc6, 0xe8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x72, 0x77, 0xac, 0xc3, 0x07, 0xab, 0x1d, 0x4e, 0xb1, 0x05, 0xf0, 0x1a, 0x0b, 0x1b, 0x43, 0x2b, 0x6b, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0x99, 0xbb, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x8e, 0x8f, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xfb, 0xb1, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xb9, 0xfe, 0x74, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6e, 0x1f, 0xeb, 0xf0, 0xc1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x85, 0x05, 0x59, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0xd9, 0x14, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc5, 0x40, 0xd6, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x01, 0x42, 0xd6, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x54, 0xc8, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x13, 0xda, 0xd7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x4b, 0x64, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x07, 0x56, 0xd0, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x40, 0x64, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0x1e, 0x58, 0x41, 0xd7, 0xc1, 0x53, 0x0c, 0x11, 0xab, 0x15, 0xf0, 0xe3, 0xea, 0xe4, 0xd2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0xcf, 0x74, 0x5e, 0x6c, 0x00, 0x2f, 0xb9, 0xb2, 0xb8, 0xba, 0xb2, 0x39, 0xba, 0x96, 0x3a, 0xb9, 0xb4, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x67, 0x3a, 0x2f, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x66, 0x64, 0x6d, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x72, 0x64, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x87, 0x89, 0xcd, 0xbd, 0xb1, 0xd5, 0xd1, 0x95, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x98, 0x8f, 0xac, 0x83, 0x80, 0x0d, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xad, 0x24, 0x6b, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe1, 0x22, 0x59, 0x07, 0xaf, 0xe4, 0x56, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd2, 0x94, 0xac, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x83, 0xd6, 0x3e, 0xa8, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x10, 0x4b, 0xd6, 0x41, 0x18, 0x01, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x28, 0x93, 0xb5, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfc, 0x97, 0xac, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x43, 0x77, 0x82, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x38, 0x9d, 0xac, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xdf, 0x64, 0x6d, 0xf8, 0x77, 0x7e, 0x01, 0x3f, 0xae, 0x2e, 0x2c, 0xaf, 0x5a, 0x0d, 0x9e, 0xc0, 0xb7, 0xb8, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xf0, 0x04, 0xbe, 0xc5, 0x06, 0xc0, 0x17, 0xb9, 0xb2, 0xb1, 0x37, 0x39, 0x32, 0x90, 0x37, 0x33, 0x90, 0xb7, 0x3a, 0xba, 0xb3, 0xb7, 0x34, 0xb7, 0x33, 0x90, 0xb2, 0xb0, 0x3a, 0x3a, 0x34, 0x90, 0xb1, 0xb7, 0xb6, 0xb6, 0x39, 0x10, 0x13, 0x90, 0x39, 0xba, 0x30, 0xba, 0x72, 0x25, 0x00, 0xdf, 0xe2, 0xca, 0xea, 0x74, 0x40, 0xc2, 0x40, 0xe2, 0xea, 0xca, 0xea, 0xca, 0x40, 0xde, 0xcc, 0x40, 0xdc, 0xde, 0xdc, 0xc6, 0xca, 0xe6, 0x40, 0xcc, 0xde, 0xe4, 0x40, 0xe8, 0xde, 0x5a, 0xc4, 0xca, 0x5a, 0xdc, 0x5e, 0xc2, 0xc6, 0xd6, 0xca, 0xc8, 0x40, 0xe0, 0xd8, 0xca, 0xc2, 0xe6, 0x25, 0x00, 0x1f, 0xdb, 0xc2, 0xe0, 0x74, 0x40, 0xe0, 0xca, 0xe4, 0x40, 0xdc, 0xde, 0xdc, 0xc6, 0xca, 0x58, 0x40, 0xc6, 0xde, 0xda, 0xe0, 0xd8, 0xca, 0xe8, 0xca, 0xc8, 0x40, 0xde, 0xe4, 0x40, 0xe0, 0xca, 0xdc, 0xc8, 0xd2, 0xdc, 0xce, 0x40, 0xca, 0xc2, 0xea, 0xe8, 0xd0, 0x40, 0xe6, 0xca, 0xe6, 0xe6, 0xd2, 0xde, 0xdc, 0xda, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x02, 0xdf, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xef, 0x4f, 0xd6, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x27, 0xca, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x07, 0x33, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2c, 0xa1, 0xac, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3c, 0xa4, 0xac, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x30, 0x03, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x10, 0xa7, 0xac, 0x83, 0x33, 0xf8, 0x6a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x57, 0x65, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xe2, 0xb2, 0x7e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x66, 0x2a, 0x6b, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x2b, 0x2b, 0xeb, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd1, 0x2b, 0xeb, 0xe0, 0x0c, 0xbe, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xad, 0x58, 0xd6, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0xed, 0x8a, 0x8a, 0x55, 0x2b, 0xe0, 0xb7, 0xbd, 0xd1, 0xa1, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xef, 0x9e, 0x60, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x47, 0xcb, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x17, 0x8d, 0x8e, 0x0e, 0x0e, 0xe4, 0x0d, 0xae, 0x4c, 0x2e, 0x8c, 0x2e, 0xed, 0xcd, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xb8, 0x65, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x70, 0x2d, 0x6b, 0xc3, 0xbf, 0xf3, 0x6b, 0xf0, 0x2a, 0xd3, 0xc4, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xa4, 0x2e, 0x6b, 0xc3, 0x9f, 0x4b, 0x83, 0xc7, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x91, 0x72, 0x59, 0x1b, 0xfe, 0x9d, 0x5f, 0xc3, 0x03, 0x20, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0d, 0x5f, 0xd6, 0x86, 0x3f, 0x97, 0x06, 0x97, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0xf3, 0xb2, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0xff, 0xb2, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x08, 0xb3, 0x0e, 0x9e, 0x7e, 0x2e, 0x57, 0xab, 0xc1, 0x23, 0x10, 0x17, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0x81, 0xb8, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x94, 0x98, 0xb5, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xc0, 0x5f, 0x37, 0x57, 0x26, 0xe7, 0x16, 0xd6, 0x56, 0x76, 0x70, 0x22, 0x00, 0x3d, 0x9c, 0x62, 0xd5, 0x1a, 0x9c, 0x10, 0xce, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x9c, 0x10, 0xce, 0x1a, 0x80, 0xcf, 0xb0, 0x3a, 0x3a, 0xb4, 0x32, 0x37, 0xba, 0xb4, 0xb1, 0x30, 0xba, 0xb4, 0x37, 0x37, 0x90, 0xb6, 0x32, 0x3a, 0xb4, 0x37, 0x32, 0x10, 0x13, 0x10, 0x20, 0xb8, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x13, 0xc2, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa6, 0x64, 0xd6, 0x06, 0xa1, 0x86, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x26, 0x43, 0x32, 0x90, 0x9b, 0x0c, 0x93, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xc9, 0x10, 0x0d, 0xe4, 0x26, 0x43, 0xbe, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0xc8, 0x31, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4d, 0x86, 0xc1, 0x40, 0x6e, 0x32, 0x2c, 0x0e, 0x0a, 0x8a, 0xcc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x20, 0xb3, 0x36, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x2c, 0xb3, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x62, 0x7b, 0x1b, 0x0b, 0x63, 0x63, 0x01, 0x91, 0x7b, 0x7b, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x09, 0x99, 0x59, 0x1b, 0x32, 0xe0, 0x07, 0x0f, 0xee, 0x61, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xce, 0x33, 0xeb, 0x20, 0x04, 0x1f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x47, 0x34, 0x6b, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0xff, 0xac, 0xae, 0x6c, 0x8e, 0x0e, 0x24, 0x8d, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x93, 0x66, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0xfd, 0xe2, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xb3, 0x66, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0xbb, 0x43, 0x7b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x54, 0xb3, 0x0e, 0x8e, 0xad, 0xae, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x20, 0x9b, 0xb5, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x0f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x64, 0x20, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x2d, 0x73, 0x68, 0x69, 0x70, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x93, 0x36, 0x6b, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x4f, 0xb8, 0xcd, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x99, 0x37, 0x6b, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x1d, 0xda, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xa3, 0x9b, 0x75, 0x70, 0x6c, 0x75, 0xad, 0xd5, 0xe0, 0xa1, 0x3b, 0x41, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x0f, 0xdd, 0x09, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x0b, 0xce, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xdf, 0xac, 0x8e, 0x8d, 0x2d, 0x0f, 0x04, 0x2e, 0x4c, 0x6e, 0xae, 0x8c, 0x0c, 0xa4, 0x4e, 0x8e, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x1a, 0x67, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x83, 0x38, 0x6b, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x46, 0x39, 0xeb, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xeb, 0x39, 0xeb, 0xe0, 0xa8, 0x0d, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x01, 0xd7, 0x59, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xa3, 0xce, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xd4, 0xce, 0x3a, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0xbf, 0xb3, 0x0e, 0xce, 0xb3, 0xa3, 0x75, 0x38, 0xc5, 0x16, 0xf0, 0xd2, 0xe0, 0xc2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xc0, 0x4b, 0x83, 0x0b, 0x1b, 0xc0, 0x1f, 0x2e, 0x4c, 0x6e, 0xae, 0x0c, 0x24, 0x0d, 0x0e, 0x24, 0x8c, 0x8c, 0x4c, 0xae, 0x6c, 0x6e, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x96, 0x3c, 0x6b, 0x83, 0x15, 0x42, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x19, 0x68, 0x1d, 0xac, 0x07, 0x06, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xdd, 0x3e, 0x6b, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xe6, 0x67, 0x1d, 0xac, 0x40, 0x5b, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xbf, 0x3f, 0x6b, 0xc3, 0x1b, 0x77, 0x07, 0x8f, 0xee, 0x4c, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x30, 0x40, 0x6b, 0xc3, 0xdb, 0x3a, 0x03, 0x5a, 0x1a, 0x1c, 0xad, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0xd0, 0xb3, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc6, 0x7a, 0xd6, 0xc1, 0x0a, 0xb4, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0xde, 0xb3, 0x36, 0xbc, 0x71, 0x77, 0xf0, 0xc8, 0xd1, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0xe5, 0xb3, 0x36, 0xbc, 0xad, 0x33, 0xa0, 0xa5, 0xc1, 0xd9, 0xea, 0x70, 0x8a, 0xad, 0xc1, 0x83, 0xc0, 0x13, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1e, 0x04, 0x9e, 0xd8, 0x00, 0x78, 0x27, 0x57, 0x16, 0x57, 0x57, 0x36, 0x47, 0x07, 0xf2, 0x26, 0x97, 0x76, 0x96, 0xe6, 0x06, 0x12, 0x36, 0x07, 0x32, 0x07, 0x57, 0x36, 0x96, 0x66, 0x96, 0x56, 0x46, 0x06, 0x92, 0xe6, 0x06, 0x12, 0xe6, 0x06, 0xf2, 0x24, 0x97, 0x76, 0x96, 0xe6, 0x06, 0x82, 0x56, 0x16, 0x46, 0x56, 0x26, 0xb7, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x20, 0xf0, 0xc4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8c, 0x05, 0xad, 0x0d, 0x5f, 0xd4, 0x6c, 0xa8, 0xe3, 0x07, 0xcf, 0x76, 0xd0, 0x5a, 0x0d, 0x9e, 0x7f, 0xb4, 0xb8, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xf0, 0xfc, 0xa3, 0xc5, 0x06, 0xa0, 0x2d, 0x08, 0x44, 0xae, 0x8e, 0xad, 0x0c, 0x84, 0xee, 0x0d, 0xa4, 0x2d, 0x8c, 0x6e, 0x0c, 0x0d, 0x24, 0x0c, 0x04, 0x2e, 0x8c, 0x0e, 0xcd, 0xad, 0x04, 0xc0, 0x13, 0x41, 0x20, 0x2b, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x20, 0x41, 0x20, 0x2b, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0xe7, 0x12, 0x00, 0x3d, 0xb4, 0xd5, 0xcd, 0xd1, 0x81, 0x88, 0x95, 0x81, 0xcc, 0xe5, 0xcd, 0xd1, 0x95, 0xb5, 0x81, 0xd4, 0xb9, 0xa5, 0xc5, 0xd5, 0x95, 0x81, 0x88, 0x95, 0x8d, 0x85, 0xd5, 0xcd, 0x95, 0x81, 0xdc, 0x95, 0x81, 0x90, 0xbd, 0xb9, 0x9d, 0xd0, 0x81, 0xdc, 0x85, 0xb9, 0xd1, 0x81, 0xd0, 0xdd, 0xbd, 0x81, 0xa0, 0x85, 0xb9, 0x91, 0xb1, 0x95, 0xc9, 0xcd, 0x81, 0x98, 0xbd, 0xc9, 0x81, 0x84, 0x81, 0xc0, 0x85, 0xd1, 0xa1, 0xed, 0x25, 0x00, 0x9d, 0xef, 0xd0, 0xc2, 0xe8, 0x40, 0xd0, 0xc2, 0xe0, 0xe0, 0xca, 0xdc, 0xe6, 0x40, 0xd2, 0xcc, 0x40, 0xe8, 0xd0, 0xca, 0xe4, 0xca, 0x40, 0xc2, 0xe4, 0xca, 0x40, 0xe8, 0xee, 0xde, 0x40, 0xc8, 0xd2, 0xcc, 0xcc, 0xca, 0xe4, 0xca, 0xdc, 0xe8, 0x40, 0xc2, 0xc6, 0xe8, 0xd2, 0xde, 0xdc, 0xe6, 0x40, 0xcc, 0xde, 0xe4, 0x40, 0xb6, 0xfc, 0x40, 0x5e, 0xba, 0x7e, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x3c, 0xff, 0x68, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x5d, 0x42, 0x6b, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x5f, 0x68, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0x80, 0x3e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0xae, 0x0d, 0x7f, 0x2e, 0x0d, 0xf8, 0x73, 0x69, 0x74, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x59, 0x85, 0xd6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xdf, 0x86, 0xd6, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x27, 0x88, 0xd6, 0xc1, 0x79, 0x76, 0xb4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x50, 0xb4, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xc0, 0xc3, 0x17, 0xbf, 0xb6, 0xbc, 0x30, 0x38, 0x38, 0x90, 0xbb, 0x34, 0x36, 0x36, 0x90, 0xb6, 0x30, 0xba, 0x31, 0x34, 0x90, 0x17, 0xbf, 0xb6, 0xbc, 0x30, 0x38, 0x38, 0x90, 0x37, 0x39, 0x90, 0x17, 0xbf, 0xb6, 0xbc, 0x30, 0x38, 0xb8, 0x17, 0xb6, 0x37, 0xb7, 0xb3, 0x32, 0xb9, 0x17, 0xb8, 0x30, 0x3a, 0xb4, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x30, 0xfd, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x2d, 0xd1, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x5e, 0xd1, 0x3a, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x61, 0xb4, 0x0e, 0xce, 0xb3, 0xa3, 0x75, 0x38, 0xc5, 0x16, 0xf0, 0xd1, 0xc2, 0xe8, 0xca, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x67, 0x5d, 0x33, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xdf, 0x68, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xcb, 0x5c, 0x59, 0x5b, 0x5a, 0xcb, 0xd8, 0xdb, 0xdb, 0x5a, 0x19, 0x19, 0x88, 0x5c, 0x59, 0x5c, 0x5d, 0xd9, 0x1c, 0xdd, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xe7, 0xd1, 0xda, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x97, 0x8e, 0xd6, 0xc1, 0x2b, 0xb9, 0x15, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x1f, 0xd2, 0xda, 0xf0, 0xe7, 0xd2, 0xe0, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5a, 0x90, 0xd6, 0xc1, 0xb1, 0xd5, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x44, 0x26, 0xad, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x27, 0x69, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0xde, 0x3d, 0xc1, 0x58, 0xad, 0x80, 0x2f, 0xf7, 0x56, 0x47, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x34, 0x9d, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x5d, 0x4a, 0x6b, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x7d, 0x34, 0x3a, 0x3a, 0x38, 0x10, 0xb9, 0xb7, 0x3a, 0xba, 0x32, 0x10, 0x14, 0xb7, 0xb2, 0xbb, 0xd4, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xc0, 0xd2, 0xda, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x62, 0x95, 0xd6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe9, 0x96, 0xd6, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xfe, 0xa5, 0xb5, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0x21, 0x17, 0x57, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb9, 0x99, 0xd6, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0xc8, 0xb4, 0x0e, 0xce, 0x48, 0xa8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xb5, 0x69, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x5a, 0x4d, 0x6b, 0xc3, 0xbf, 0xf3, 0x0b, 0xf8, 0x6f, 0x72, 0x79, 0x78, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x55, 0xa7, 0xb5, 0xe1, 0xcf, 0xa5, 0xc1, 0xe7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5e, 0x39, 0xad, 0x83, 0x33, 0x12, 0x6a, 0xb3, 0x00, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x2d, 0x72, 0x75, 0x6c, 0xe5, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xcb, 0x05, 0x1a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0xf5, 0xb4, 0x36, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0xfd, 0xb4, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x54, 0xa0, 0xd6, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x5e, 0xce, 0xa7, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x54, 0xa2, 0xd6, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x39, 0x9f, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xaf, 0xa1, 0xd6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x38, 0xa3, 0xd6, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x85, 0xa4, 0xd6, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xba, 0xd4, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x45, 0xeb, 0xc9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2c, 0xa5, 0xd6, 0xc1, 0x53, 0x4d, 0x17, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xee, 0xd4, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x2f, 0xe7, 0xd3, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xd9, 0xd4, 0x3a, 0x78, 0xaa, 0xe9, 0x62, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x87, 0xa8, 0xd6, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x25, 0xd5, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x4b, 0xd8, 0x83, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x65, 0xd5, 0xda, 0xf0, 0xe7, 0xd2, 0x00, 0x5f, 0xd8, 0x18, 0x5d, 0xda, 0x9b, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xa2, 0xaa, 0xb5, 0x41, 0xb0, 0x99, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x0a, 0xab, 0x75, 0xf0, 0xb0, 0xe3, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0x6a, 0xb5, 0x0e, 0x5e, 0xe0, 0xce, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd5, 0xbc, 0x5a, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x25, 0xec, 0x41, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x3d, 0xba, 0x5a, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x97, 0xb0, 0x07, 0x55, 0xad, 0x80, 0x8f, 0xf6, 0xb6, 0x56, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x44, 0xa5, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x83, 0x58, 0x6b, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf5, 0x58, 0xeb, 0x60, 0x15, 0x64, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x35, 0xcd, 0x5a, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xb0, 0xbd, 0x8d, 0x85, 0xb1, 0x81, 0xa0, 0xbd, 0xcd, 0xd1, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xea, 0x67, 0xad, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0x30, 0x58, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb2, 0x6a, 0xad, 0x83, 0x10, 0x7c, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x68, 0x6d, 0xad, 0x0d, 0x82, 0xcd, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf8, 0x6e, 0xad, 0x0d, 0x19, 0xf0, 0x81, 0x4f, 0x33, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x20, 0x5c, 0x6b, 0x43, 0x06, 0x7c, 0xe0, 0xd3, 0xcc, 0x83, 0xc7, 0x63, 0x6b, 0xd5, 0x2c, 0xe0, 0xc3, 0xc9, 0xbd, 0xe1, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xef, 0xee, 0x69, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x45, 0xd7, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa5, 0xed, 0x5a, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xe0, 0xde, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8c, 0x75, 0xad, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0a, 0x7a, 0xad, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x73, 0x65, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x63, 0xbc, 0xd6, 0xe1, 0x83, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0xf4, 0xb5, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x0a, 0x41, 0xdb, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xee, 0x7b, 0xad, 0x83, 0xe7, 0xde, 0x83, 0x74, 0x38, 0xc5, 0x5a, 0x83, 0x57, 0xfa, 0x33, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0xd2, 0x9f, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf8, 0x5f, 0x6b, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xaf, 0xa1, 0x29, 0x29, 0x23, 0x90, 0xb9, 0xb2, 0x31, 0xb9, 0x32, 0xba, 0x83, 0xf3, 0xec, 0xe8, 0xe1, 0x14, 0x5b, 0x83, 0x17, 0x72, 0x71, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x90, 0x8b, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x8e, 0x60, 0x6b, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x0f, 0x34, 0x3a, 0x3a, 0x38, 0x10, 0xb4, 0xb7, 0x39, 0xba, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x02, 0x84, 0xad, 0x83, 0x55, 0x90, 0xc9, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x31, 0x6c, 0x1d, 0xbc, 0x1c, 0xa5, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5a, 0x88, 0xad, 0x83, 0xc3, 0x7d, 0x6b, 0x87, 0x53, 0x6c, 0x01, 0x7c, 0xca, 0xc2, 0xea, 0xe8, 0xd0, 0x5a, 0xc4, 0xde, 0xde, 0xdc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa7, 0x7b, 0x35, 0x36, 0x00, 0x8f, 0x68, 0x6f, 0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x4f, 0xf7, 0x6a, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xc7, 0xd8, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0x1b, 0x5b, 0x07, 0x21, 0x9d, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc7, 0xc7, 0xd6, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc5, 0xc8, 0xd6, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x2d, 0xd9, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x53, 0x42, 0xb6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x6e, 0xd9, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x4f, 0xa9, 0x57, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x59, 0xd9, 0x3a, 0x38, 0x83, 0xaf, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x44, 0xb3, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0xaf, 0x4e, 0x8e, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x8d, 0xd9, 0x3a, 0x38, 0xcf, 0x8e, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5f, 0xce, 0xd6, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xe0, 0xd9, 0x3a, 0x78, 0x59, 0xc0, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0x42, 0x5b, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x29, 0xf5, 0x8a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0x3f, 0x5b, 0x07, 0x67, 0xf0, 0xd5, 0x6a, 0x35, 0x78, 0x3b, 0xa2, 0xcb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xb7, 0x23, 0xba, 0x34, 0x80, 0xb7, 0xd1, 0xd0, 0x51, 0x12, 0x08, 0x5c, 0x98, 0x5c, 0x58, 0x5b, 0x19, 0x5d, 0x99, 0xdc, 0xdc, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xdb, 0x11, 0x5d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x91, 0xb6, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6f, 0xd3, 0xd6, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x4f, 0x5c, 0x5d, 0x99, 0x5c, 0xde, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x21, 0xc2, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xb3, 0xb4, 0xb5, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x15, 0xb5, 0x75, 0x50, 0x22, 0xd6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x67, 0xb5, 0x75, 0x70, 0x9e, 0x1d, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x6f, 0x6b, 0xeb, 0xe0, 0x3c, 0x3b, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x25, 0x63, 0x5b, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x31, 0xc6, 0x96, 0x56, 0xe6, 0x46, 0x07, 0x32, 0x26, 0x57, 0x46, 0x56, 0xe6, 0x46, 0x97, 0x16, 0xc6, 0x36, 0xb7, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0xac, 0x8c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x04, 0xdb, 0xda, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0xd4, 0x26, 0xa8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x55, 0xdb, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xf3, 0x4d, 0x2e, 0xed, 0x2c, 0xcd, 0x2d, 0x8c, 0x0d, 0x04, 0x2e, 0x8c, 0x0e, 0x6d, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x58, 0x59, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x82, 0xb6, 0x75, 0xf0, 0x94, 0xe0, 0x90, 0x56, 0x80, 0x87, 0x2e, 0xad, 0xad, 0x4c, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x78, 0xd8, 0x67, 0x63, 0x03, 0xa0, 0x69, 0x18, 0x88, 0x5c, 0x99, 0x59, 0x99, 0x5c, 0x99, 0xdb, 0x58, 0x19, 0x08, 0xdd, 0x1b, 0x48, 0x18, 0x08, 0x5d, 0x5a, 0x5b, 0x99, 0x1c, 0xc8, 0xdc, 0x1b, 0xc8, 0x5d, 0x19, 0xc8, 0x58, 0x98, 0x1b, 0xc8, 0x58, 0x98, 0xdb, 0x58, 0x19, 0x1b, 0xc8, 0x9b, 0x1c, 0x48, 0x1d, 0x1c, 0x59, 0x18, 0x5d, 0x19, 0x48, 0x1a, 0x9d, 0x6b, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x61, 0x9f, 0x8d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0x71, 0x5b, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xc7, 0x6e, 0x6b, 0xc3, 0x9f, 0x4b, 0x1b, 0x9c, 0x45, 0x51, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0xe7, 0xb6, 0x0e, 0x8e, 0x7c, 0xad, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xf5, 0x6d, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x97, 0xa9, 0x7b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xeb, 0x6d, 0x1d, 0x3c, 0x3d, 0xdd, 0xa3, 0xd5, 0xe0, 0x11, 0x6f, 0x89, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x8f, 0x78, 0x4b, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x16, 0xdc, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x07, 0xb9, 0xb0, 0x3b, 0x10, 0x34, 0x3a, 0x3a, 0x38, 0x10, 0xb9, 0xb2, 0x39, 0xb8, 0x37, 0xb7, 0xb9, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x80, 0xb8, 0xb5, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xba, 0xc2, 0xad, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3e, 0xc7, 0xad, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x2f, 0x6e, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0x5e, 0xe0, 0x10, 0x54, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x58, 0x6e, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x70, 0x72, 0x6b, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x35, 0x73, 0xeb, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xbe, 0x73, 0xeb, 0xe0, 0xe9, 0xe7, 0x72, 0x35, 0x0b, 0xe0, 0x71, 0x56, 0xe6, 0x56, 0x26, 0x17, 0x46, 0xf7, 0x26, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xbc, 0x1e, 0xb9, 0xb1, 0x01, 0xf0, 0x32, 0x0c, 0xe4, 0xac, 0xcc, 0xad, 0x4c, 0x2e, 0x8c, 0xee, 0x4d, 0x0e, 0xe4, 0xcd, 0x0d, 0x84, 0x0e, 0xad, 0x0c, 0x84, 0xed, 0x6d, 0x2c, 0x8c, 0x0d, 0x64, 0x0e, 0x2d, 0x0d, 0x0e, 0x84, 0x0e, 0x2d, 0x8c, 0x0e, 0x04, 0x2d, 0xcc, 0x8d, 0x8c, 0xad, 0x6c, 0x0e, 0x44, 0xae, 0x2c, 0xae, 0xae, 0x6c, 0x8e, 0x6e, 0x5e, 0x09, 0xc0, 0x7b, 0x2a, 0xb4, 0xb4, 0x39, 0x10, 0xb9, 0x32, 0xb3, 0x32, 0xb9, 0x39, 0x10, 0xba, 0x37, 0x90, 0x30, 0x90, 0xb3, 0x32, 0xb7, 0x32, 0xb9, 0x30, 0xba, 0x37, 0x39, 0x90, 0x37, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb6, 0xb7, 0xb1, 0x30, 0x36, 0x90, 0x39, 0xb4, 0x34, 0x38, 0x16, 0x10, 0xb9, 0x3a, 0x37, 0x90, 0xbb, 0x34, 0x3a, 0x34, 0x90, 0x30, 0x90, 0xb9, 0x32, 0x3a, 0x90, 0x37, 0x73, 0x09, 0x80, 0x2f, 0xc2, 0xe4, 0xce, 0xea, 0xda, 0xca, 0xdc, 0xe8, 0xe6, 0x5c, 0x40, 0xa6, 0xd2, 0xdc, 0xc6, 0xca, 0x40, 0xd0, 0xe8, 0xe8, 0xe0, 0x40, 0xe4, 0xca, 0xe2, 0xea, 0xca, 0xe6, 0xe8, 0xe6, 0x40, 0xc2, 0xe4, 0xca, 0x40, 0xe8, 0xd2, 0xda, 0xca, 0x40, 0xe6, 0xca, 0xdc, 0xe6, 0xd2, 0xe8, 0xd2, 0xec, 0xca, 0x58, 0x40, 0xee, 0xca, 0x40, 0xe4, 0xca, 0xe2, 0xea, 0xd2, 0xe4, 0xca, 0x40, 0xe8, 0xd0, 0xc2, 0xe8, 0x40, 0xe8, 0xd0, 0xca, 0x25, 0x00, 0x0d, 0xce, 0xca, 0xdc, 0xca, 0xe4, 0xc2, 0xe8, 0xde, 0xe4, 0x40, 0xc4, 0xca, 0x40, 0xde, 0xdc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xc6, 0xea, 0xe4, 0xe4, 0xca, 0xdc, 0xe8, 0x40, 0xe6, 0xd0, 0xd2, 0xe0, 0x5c, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x1e, 0xb9, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6b, 0x74, 0x6b, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xa1, 0x6e, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x37, 0xe3, 0x85, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x97, 0x6e, 0x1d, 0x3c, 0x0a, 0x2f, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x66, 0xd7, 0xad, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x30, 0xfd, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x62, 0xdd, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x92, 0xdd, 0x3a, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0x6e, 0xb7, 0x0e, 0xce, 0xb3, 0xa3, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xf1, 0xbb, 0xb5, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0xcf, 0x69, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xc9, 0xbb, 0x75, 0x10, 0xa6, 0x63, 0x1d, 0x4e, 0xb1, 0x05, 0xf0, 0x1c, 0x43, 0x0b, 0x73, 0x73, 0x2b, 0x63, 0x6b, 0x99, 0xa3, 0x0b, 0xa3, 0x2b, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0xad, 0xdf, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x3a, 0xbc, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x91, 0xb7, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x33, 0xcf, 0x16, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x8c, 0xb7, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x98, 0xb7, 0x0e, 0x4a, 0xc4, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0xa2, 0xb7, 0x0e, 0xce, 0xb3, 0xa3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x56, 0x6f, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0xde, 0x92, 0xc3, 0x55, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xcf, 0xbd, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0xbc, 0xc8, 0xea, 0xc6, 0xe8, 0x5a, 0xe8, 0xde, 0x5a, 0xd6, 0xca, 0xf2, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x34, 0xed, 0xad, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x44, 0xf0, 0xad, 0x83, 0x12, 0xb1, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6a, 0xf2, 0xad, 0x83, 0xa7, 0xa7, 0x7b, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x93, 0xbe, 0x75, 0x70, 0x9e, 0x1d, 0xad, 0xd5, 0xe0, 0xa5, 0x1f, 0x8d, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x2f, 0xfd, 0x68, 0x6c, 0x00, 0x3c, 0xa7, 0x43, 0x2b, 0x03, 0x09, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0x03, 0xa1, 0x7b, 0x03, 0xa1, 0x0b, 0x5b, 0x2b, 0x03, 0xb9, 0x43, 0x2b, 0x73, 0x03, 0x09, 0x03, 0x11, 0x4b, 0x73, 0x23, 0x4b, 0x73, 0x3b, 0x03, 0x69, 0x0b, 0xa3, 0x1b, 0x43, 0x2b, 0x9b, 0x03, 0x09, 0x73, 0x03, 0x49, 0x73, 0x1b, 0x7b, 0x6b, 0x4b, 0x73, 0x3b, 0x03, 0x91, 0x2b, 0x8b, 0xab, 0x2b, 0x9b, 0xa3, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xe9, 0x47, 0xe3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2a, 0xfc, 0xd6, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1a, 0xfd, 0xd6, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xb7, 0xdf, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xf3, 0x14, 0x52, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xfb, 0x6f, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xd7, 0x23, 0x37, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xf1, 0x6f, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0x5e, 0x8f, 0xdc, 0x58, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x4c, 0xc0, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0x0e, 0xb8, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0x78, 0x61, 0x70, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x51, 0x0f, 0x5c, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xc2, 0xe0, 0xe0, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x60, 0x06, 0xae, 0x83, 0xf5, 0x5a, 0xcf, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x52, 0xc1, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x2f, 0xb8, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x02, 0x09, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x3a, 0xb8, 0x0e, 0x42, 0xf0, 0xa1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x43, 0xb8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x17, 0x09, 0xd7, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xde, 0xfc, 0xc1, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x73, 0x0a, 0xd7, 0x41, 0x08, 0x3e, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa2, 0x0b, 0xd7, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x88, 0xe1, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xdb, 0x58, 0xb8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xb4, 0xe1, 0x3a, 0x08, 0xc1, 0x87, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xdb, 0xe1, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0x3d, 0x5c, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x4b, 0x0e, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0x43, 0x5c, 0x07, 0x21, 0xf8, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0x47, 0x5c, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x4a, 0x89, 0x6b, 0x43, 0x06, 0xfc, 0xe0, 0x3d, 0xac, 0x2d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x3e, 0x71, 0x1d, 0x84, 0xe0, 0x43, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x4d, 0x71, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x08, 0x2b, 0xae, 0x83, 0xe5, 0x32, 0xdf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x67, 0x71, 0x1d, 0x84, 0xe0, 0x43, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x79, 0x71, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x76, 0x30, 0xae, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0x90, 0x8b, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2c, 0x33, 0xae, 0x83, 0x10, 0x7c, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x10, 0x35, 0xae, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xcb, 0xc6, 0xb5, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x17, 0x5b, 0xaf, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x22, 0xc7, 0x75, 0x10, 0x82, 0x0f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x6f, 0xc7, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0xf3, 0xb8, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x60, 0x3a, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0xfe, 0xb8, 0x0e, 0x42, 0xf0, 0xa1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0b, 0x04, 0xb9, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x26, 0x21, 0xd7, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x1e, 0xdb, 0xbe, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x88, 0x22, 0xd7, 0x41, 0x08, 0x3e, 0xd4, 0xe1, 0x14, 0x6b, 0x01, 0xf8, 0x7a, 0xab, 0xa3, 0x9b, 0xa3, 0x0b, 0x73, 0x23, 0x4b, 0x73, 0x3b, 0x6b, 0x19, 0x7b, 0x73, 0x73, 0x2b, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x9e, 0x8e, 0xe6, 0xd8, 0x00, 0x68, 0xf4, 0x06, 0x57, 0xe6, 0x06, 0x82, 0x46, 0x47, 0x07, 0x07, 0x32, 0xf6, 0xe6, 0xe6, 0x56, 0x36, 0x46, 0x97, 0xf6, 0xe6, 0x36, 0x07, 0xe2, 0xf6, 0x46, 0x07, 0x62, 0x56, 0xc7, 0xc6, 0x96, 0x07, 0x32, 0xf6, 0xd6, 0x06, 0xc7, 0x56, 0x46, 0x57, 0xa6, 0x57, 0x02, 0xf0, 0x9d, 0x0a, 0x2d, 0x6d, 0x0e, 0x44, 0xae, 0xcc, 0xac, 0x4c, 0x6e, 0x0e, 0x84, 0xee, 0x0d, 0xe4, 0xad, 0x8e, 0x6e, 0x8e, 0x2e, 0xcc, 0x8d, 0x2c, 0xcd, 0xed, 0x0c, 0x64, 0xec, 0xcd, 0xcd, 0xad, 0x6c, 0x8c, 0x2e, 0xed, 0xcd, 0x6d, 0x0e, 0xe4, 0x0e, 0xad, 0x4c, 0xae, 0x0c, 0x84, 0x0e, 0xad, 0x0c, 0x64, 0xec, 0xcd, 0xcd, 0xad, 0x6c, 0x8c, 0x2e, 0xed, 0xcd, 0x0d, 0x84, 0xee, 0x5d, 0x02, 0xf0, 0xfa, 0xad, 0x8e, 0x6e, 0x2e, 0x8d, 0xac, 0x0c, 0x24, 0x6d, 0x0e, 0xe4, 0x0d, 0xae, 0xcc, 0xad, 0x8c, 0x0c, 0x24, 0xcc, 0x8d, 0x0c, 0xe4, 0xae, 0x0c, 0x24, 0x4c, 0xae, 0x0c, 0x64, 0xac, 0x4e, 0x4e, 0xae, 0xcc, 0x8d, 0x8e, 0x2d, 0x0f, 0xe4, 0x2e, 0x2c, 0x8d, 0x2e, 0xcd, 0xed, 0x0c, 0xe4, 0xcd, 0x0d, 0x24, 0xcc, 0x0d, 0x24, 0x0c, 0x0e, 0x0e, 0x84, 0xee, 0x5d, 0x02, 0xe8, 0x81, 0x93, 0x7b, 0x23, 0xab, 0x1b, 0x2b, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x91, 0x2b, 0x9b, 0xab, 0x63, 0xa3, 0x9b, 0x73, 0xb5, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x74, 0x34, 0xc7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x04, 0x49, 0xae, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x70, 0xc9, 0xb5, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0xfa, 0xd1, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x48, 0xc9, 0xb5, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0xe9, 0x47, 0x63, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xed, 0xc9, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0xbc, 0xd3, 0xdc, 0xc4, 0xde, 0xea, 0xdc, 0xc8, 0x5a, 0xe4, 0xca, 0xe2, 0xea, 0xca, 0xe6, 0xe8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x26, 0x4e, 0xae, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x13, 0x1e, 0x1d, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x14, 0x52, 0xae, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x95, 0xca, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0x7c, 0xe6, 0xca, 0xe6, 0xe6, 0xd2, 0xde, 0xdc, 0x5a, 0xd2, 0xc8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x60, 0x53, 0xae, 0x83, 0x33, 0xf8, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x09, 0xb2, 0x5c, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x84, 0x70, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xf7, 0xca, 0xb5, 0xe1, 0xdf, 0xf9, 0x0d, 0xce, 0x07, 0x67, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x87, 0x2e, 0xd7, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x16, 0x09, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe2, 0x2d, 0xd7, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6a, 0x2f, 0xd7, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7b, 0x30, 0xd7, 0xc1, 0xd3, 0xc0, 0x11, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x24, 0x99, 0x6b, 0xc3, 0x9f, 0x4b, 0x03, 0xf8, 0x88, 0xe5, 0xd1, 0x95, 0xcd, 0xb5, 0xcc, 0x95, 0xb9, 0xd1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x95, 0xc6, 0x5c, 0x07, 0x65, 0x96, 0x6e, 0xab, 0xc1, 0x8b, 0xad, 0x57, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x5e, 0x6c, 0xbd, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x04, 0xcd, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0xa5, 0xb9, 0x0e, 0x02, 0x47, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x82, 0x6c, 0xae, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x60, 0x3a, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3a, 0x6b, 0xae, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xfb, 0xe6, 0xda, 0xf0, 0xe7, 0xd2, 0x80, 0x2f, 0x97, 0x66, 0x46, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x73, 0x73, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0x5e, 0x44, 0xeb, 0x58, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x9b, 0x73, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xc7, 0xd8, 0xd8, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x91, 0x73, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0x1e, 0x63, 0x63, 0x57, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xbc, 0x73, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x57, 0xe8, 0x84, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0xb2, 0x73, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xca, 0x73, 0x1d, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xde, 0x73, 0x6d, 0xf8, 0xa2, 0x66, 0x43, 0x1d, 0x3f, 0x78, 0xe0, 0x3e, 0x57, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x0a, 0x74, 0x6d, 0xf8, 0x73, 0x69, 0x00, 0x1f, 0xb6, 0xb0, 0x39, 0xba, 0x96, 0xb0, 0xb1, 0xb5, 0x32, 0x72, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x01, 0xa0, 0x6b, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xc5, 0xa0, 0xeb, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6a, 0xa1, 0x6b, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0xf8, 0xc1, 0x33, 0x1e, 0xba, 0x6a, 0x35, 0x78, 0xe6, 0xd9, 0xe2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x33, 0xcf, 0x16, 0x1b, 0x80, 0xff, 0xb9, 0x32, 0x39, 0xbb, 0x32, 0x39, 0x90, 0xb9, 0x34, 0xb2, 0x32, 0x10, 0xb2, 0x30, 0xba, 0x30, 0x90, 0x30, 0xb1, 0xb7, 0x3a, 0x3a, 0x90, 0x30, 0x90, 0xb9, 0xb2, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x67, 0x9e, 0x2d, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x58, 0x74, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x90, 0x8d, 0xae, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x42, 0x38, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xc4, 0xe8, 0x3a, 0x78, 0x35, 0xa7, 0xe3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0x22, 0x5d, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xa0, 0x39, 0xdd, 0x1b, 0x08, 0x9c, 0xdc, 0x1b, 0x5c, 0x99, 0x1c, 0x5b, 0x1e, 0x08, 0x5a, 0x98, 0x1b, 0x19, 0x5b, 0x19, 0xc8, 0xd8, 0xdb, 0xdb, 0x5a, 0x5a, 0x19, 0x48, 0x19, 0x1e, 0x5c, 0x9a, 0x5c, 0x18, 0x5d, 0xda, 0x9b, 0x1b, 0x48, 0xd8, 0x1c, 0x48, 0x18, 0xc8, 0x5c, 0xd9, 0x58, 0x9d, 0x5c, 0x1a, 0x5d, 0x1e, 0x48, 0x5b, 0xd9, 0x18, 0x5a, 0x98, 0x5b, 0xda, 0x5c, 0x9b, 0x6b, 0xc3, 0x9f, 0x4b, 0x03, 0x78, 0x95, 0xe1, 0xc1, 0xa5, 0xc9, 0xe5, 0xb5, 0xd0, 0xa5, 0xb5, 0x95, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x9d, 0x1f, 0x5d, 0x07, 0x47, 0xbe, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0x52, 0xba, 0x36, 0xfc, 0xb9, 0x34, 0xc0, 0x3f, 0x86, 0x16, 0xe6, 0xe6, 0x56, 0xc6, 0x36, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x9b, 0x74, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xb3, 0x74, 0x1d, 0x94, 0x88, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xc8, 0x74, 0x1d, 0x9c, 0x67, 0x47, 0x6b, 0x35, 0x78, 0xc2, 0xa3, 0xe3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x13, 0x1e, 0x1d, 0x1b, 0x80, 0xcf, 0x15, 0x34, 0x3a, 0x3a, 0xb8, 0x16, 0xb9, 0xb2, 0xb8, 0xba, 0xb2, 0x39, 0x3a, 0x90, 0x30, 0x37, 0x32, 0x90, 0xb6, 0x32, 0xba, 0x30, 0xb2, 0x30, 0xba, 0xb0, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x27, 0x3c, 0x3a, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xe1, 0x74, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa4, 0x9e, 0xae, 0x0d, 0x7f, 0x2e, 0x0d, 0xe0, 0x19, 0x56, 0x47, 0x87, 0x56, 0xe6, 0x46, 0x97, 0x36, 0x16, 0x46, 0x57, 0x46, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xea, 0x74, 0x1d, 0x3e, 0x58, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x78, 0xa8, 0x6b, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0xb7, 0x73, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x26, 0xa8, 0xeb, 0xf0, 0xc1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0x4a, 0x5d, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x3d, 0x92, 0x89, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x91, 0x47, 0x5d, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0xf7, 0x48, 0x26, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0x51, 0x5d, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x95, 0x6c, 0x3d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x91, 0x4e, 0x5d, 0x07, 0xcf, 0x28, 0x44, 0xec, 0x70, 0x8a, 0xb5, 0x06, 0x6f, 0x8a, 0x1c, 0xd9, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x53, 0xe4, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x42, 0x56, 0xd7, 0x06, 0xa1, 0x86, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xf4, 0x42, 0x32, 0x90, 0xd0, 0x0b, 0x93, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xbd, 0x10, 0x0d, 0x24, 0xf4, 0x42, 0x7e, 0xf0, 0xfa, 0xef, 0x94, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa1, 0x17, 0x06, 0x03, 0x09, 0xbd, 0xb0, 0x38, 0x28, 0x28, 0x32, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xb4, 0xea, 0xda, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x5e, 0x48, 0x06, 0x72, 0x7a, 0x61, 0xbc, 0xc1, 0x7a, 0x95, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa7, 0x17, 0xc2, 0x81, 0x9c, 0x5e, 0x58, 0x1c, 0xbc, 0x3f, 0xd8, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x91, 0xab, 0xeb, 0xe0, 0x05, 0x02, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x2f, 0x24, 0x03, 0x69, 0xbd, 0x30, 0xde, 0x60, 0xbd, 0x4a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd6, 0x0b, 0xe1, 0x40, 0x5a, 0x2f, 0x2c, 0x0e, 0xde, 0xe5, 0x6f, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x13, 0xd6, 0x75, 0xf0, 0x02, 0x81, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb3, 0x17, 0x92, 0x81, 0xcc, 0x5e, 0x18, 0x6f, 0xb0, 0x5e, 0xa5, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xec, 0x85, 0x70, 0x20, 0xb3, 0x17, 0x16, 0x07, 0x8f, 0xd7, 0x1e, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x2e, 0xeb, 0x3a, 0x78, 0x81, 0xc0, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xdc, 0x0b, 0xc9, 0x40, 0x72, 0x2f, 0x8c, 0x37, 0x58, 0xaf, 0x52, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xf7, 0x42, 0x38, 0x90, 0xdc, 0x0b, 0x8b, 0x83, 0xd7, 0xdb, 0x7b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xaa, 0x75, 0x1d, 0xbc, 0x40, 0xe0, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xef, 0x85, 0x64, 0x20, 0xbf, 0x17, 0xc6, 0x1b, 0xac, 0x57, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x7b, 0x21, 0x1c, 0xc8, 0xef, 0x85, 0xc5, 0xc1, 0x23, 0xc7, 0xee, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0xde, 0xba, 0x0e, 0x5e, 0x20, 0x70, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe5, 0x5c, 0xd7, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xb1, 0xeb, 0x3a, 0x78, 0x1e, 0xe0, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd5, 0x7d, 0x5d, 0x1b, 0xfe, 0x5c, 0x1a, 0xe0, 0x4f, 0x73, 0x9b, 0x2b, 0x1b, 0xab, 0x93, 0x2b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0xf6, 0xba, 0x0e, 0xca, 0x2c, 0xdd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0x08, 0xbb, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x73, 0x3b, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x03, 0xbb, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x0f, 0xbb, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x1a, 0xbb, 0x0e, 0xca, 0x2c, 0xdd, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x45, 0xb2, 0x6b, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x53, 0x76, 0x1d, 0xb4, 0x21, 0xd2, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xcb, 0x66, 0xd7, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xb9, 0x40, 0xe3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x27, 0x66, 0xd7, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0xe5, 0x02, 0x8d, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x89, 0xa0, 0x5d, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xc0, 0x03, 0x65, 0x79, 0x72, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x20, 0x2f, 0x7e, 0x2f, 0x65, 0x61, 0x75, 0x74, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x65, 0x61, 0x75, 0x74, 0x68, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x64, 0xb4, 0x6b, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x4f, 0x90, 0x0c, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x64, 0xb5, 0x6b, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x90, 0x8b, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x12, 0xb5, 0x6b, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd6, 0xb5, 0xeb, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x7b, 0xb6, 0xeb, 0xe0, 0x3c, 0x3b, 0x5a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xe3, 0x76, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xca, 0xdd, 0xae, 0x83, 0x97, 0xf3, 0x21, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x20, 0xdc, 0xb5, 0xe1, 0xcf, 0xa5, 0x0d, 0x9e, 0xdb, 0xb9, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xf7, 0xdb, 0x75, 0xf8, 0x60, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3a, 0xe4, 0xae, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x1e, 0xc9, 0xc4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf0, 0xe2, 0xae, 0x83, 0x17, 0x11, 0x3c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xef, 0xdc, 0xb5, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0xc9, 0xd6, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xc5, 0xdc, 0x75, 0xf0, 0x8c, 0x42, 0xc4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x96, 0xee, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0xd5, 0x5d, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x22, 0x66, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0xdd, 0x5d, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0xb9, 0x9d, 0x8b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe5, 0xda, 0x5d, 0x87, 0x0f, 0x56, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x1f, 0xef, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0xef, 0x91, 0x4c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x0a, 0xef, 0x3a, 0x78, 0x11, 0xc1, 0xe3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0xea, 0x5d, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x95, 0x6c, 0x3d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0xe7, 0x5d, 0x07, 0xcf, 0x28, 0x44, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x26, 0xf7, 0xae, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x0e, 0xdf, 0x75, 0xf0, 0xda, 0x44, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0xe9, 0xbb, 0x0e, 0x42, 0xf0, 0xa1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0xf1, 0xbb, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc8, 0x7e, 0xd7, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x1e, 0x5e, 0x1a, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xca, 0x80, 0xd7, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xfe, 0xd1, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x26, 0x80, 0xd7, 0xc1, 0x53, 0x94, 0x16, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x52, 0xf0, 0xda, 0xf0, 0xe7, 0xd2, 0x80, 0x17, 0x06, 0x07, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x1e, 0x78, 0x1d, 0xac, 0xd7, 0x7a, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5e, 0x07, 0xaf, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x15, 0xe1, 0xb5, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x47, 0x52, 0x06, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x95, 0xe1, 0xb5, 0xe1, 0xcf, 0xa5, 0x0d, 0x9e, 0x7f, 0xb4, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x6c, 0xe1, 0x75, 0xf0, 0x14, 0xa5, 0xc5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0x3f, 0xbc, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xeb, 0x91, 0x1b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x3a, 0xbc, 0x0e, 0xde, 0x7a, 0xe2, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x51, 0x24, 0x5e, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xe8, 0xd3, 0xa1, 0x95, 0x81, 0x98, 0xa5, 0xc9, 0xcd, 0xd1, 0x81, 0xc0, 0xb1, 0x85, 0x8d, 0x95, 0xb9, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb9, 0x89, 0xd7, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xde, 0x24, 0x1a, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb9, 0x8b, 0xd7, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xfe, 0xd1, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x15, 0x8b, 0xd7, 0xc1, 0x53, 0x94, 0x16, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6c, 0xc6, 0x6b, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xd7, 0x78, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x05, 0xab, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xed, 0x78, 0x1d, 0x84, 0xe0, 0x43, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xfc, 0x78, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe2, 0x20, 0xaf, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0x8f, 0x33, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe4, 0x24, 0xaf, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x20, 0xf0, 0xc4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9a, 0x23, 0xaf, 0x83, 0x17, 0x7f, 0x27, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb3, 0x93, 0xd7, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x8b, 0xf2, 0xda, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x43, 0x1e, 0x83, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xcb, 0xf2, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x0f, 0x02, 0x4f, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xb6, 0xf2, 0x3a, 0x78, 0xf1, 0x77, 0x62, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x75, 0x79, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xee, 0x2f, 0xaf, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0x50, 0x23, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xec, 0x33, 0xaf, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x76, 0x65, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x52, 0x99, 0xd7, 0xe1, 0x87, 0x9a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x5d, 0xf3, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x3d, 0x6e, 0x5e, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xe1, 0x67, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x76, 0x5e, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xea, 0xe4, 0xd8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xda, 0x39, 0xaf, 0x83, 0xf3, 0xec, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe1, 0x7e, 0x5e, 0x1b, 0xfe, 0x5c, 0x1a, 0xe0, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0xf8, 0xbc, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0x04, 0xbd, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x0d, 0xbd, 0x36, 0xfc, 0x3b, 0xbf, 0x06, 0x8f, 0xcc, 0x5d, 0xac, 0x6a, 0x05, 0xf8, 0xe5, 0xca, 0xe6, 0xca, 0xe4, 0xec, 0xca, 0xc8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xc7, 0x66, 0x3f, 0x36, 0x00, 0xde, 0x8d, 0xa1, 0x95, 0x8d, 0xad, 0x81, 0xa4, 0x99, 0x81, 0x84, 0xb9, 0x81, 0xa4, 0xc1, 0xd9, 0xd1, 0x80, 0x84, 0x91, 0x91, 0xc9, 0x95, 0xcd, 0xcd, 0x81, 0xa4, 0xcd, 0x81, 0xa4, 0xb9, 0x81, 0x84, 0x81, 0xc8, 0x95, 0xcd, 0x95, 0xc9, 0xd9, 0x95, 0x91, 0x81, 0xc8, 0x85, 0xb9, 0x9d, 0x95, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x2d, 0x7a, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xdd, 0x86, 0x64, 0x20, 0x77, 0x1b, 0xe2, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x36, 0x64, 0x07, 0xcf, 0x32, 0x7f, 0x3c, 0x38, 0xdc, 0xb7, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x39, 0x7a, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xde, 0x86, 0x64, 0x20, 0x79, 0x1b, 0xa2, 0xc3, 0x07, 0xab, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf1, 0x90, 0x5e, 0x1b, 0x14, 0xa4, 0xb1, 0x83, 0x8b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x4e, 0x7a, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3a, 0x4b, 0xaf, 0x83, 0xc2, 0x62, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa6, 0x4d, 0xaf, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xe1, 0xe9, 0x75, 0x50, 0x10, 0x2d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x25, 0xea, 0x75, 0x50, 0x54, 0x8a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x5b, 0xea, 0x75, 0x78, 0x5a, 0xa7, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x52, 0xbd, 0x36, 0x28, 0x76, 0x34, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x5e, 0xf5, 0xda, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xb8, 0x21, 0x1c, 0x48, 0xe0, 0x86, 0xdd, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x6e, 0x48, 0x07, 0x12, 0xb8, 0x21, 0x3e, 0xfc, 0x50, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x70, 0x43, 0x3e, 0x90, 0xc0, 0x0d, 0x83, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x02, 0x37, 0x2c, 0x06, 0x12, 0xb8, 0x61, 0x72, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xe0, 0x86, 0xcd, 0x40, 0x02, 0x37, 0x8c, 0x0e, 0x3f, 0xd4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xdc, 0xb0, 0x1a, 0x48, 0xe0, 0x86, 0xd9, 0x41, 0x08, 0x3e, 0x74, 0xf8, 0x3c, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x66, 0x0a, 0xb0, 0x83, 0x22, 0xa7, 0x75, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf1, 0xd6, 0x6b, 0xc3, 0xaf, 0x64, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xe8, 0x7a, 0x6d, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7a, 0x5e, 0xaf, 0x83, 0x94, 0xd7, 0xaa, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfc, 0x5f, 0xaf, 0x83, 0xe2, 0x07, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xba, 0x61, 0xaf, 0x0d, 0x8f, 0xb0, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x63, 0xec, 0xb5, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0x91, 0xbd, 0x0e, 0xd2, 0x0c, 0x42, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0x97, 0xbd, 0x0e, 0x8a, 0x1f, 0xd4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x9e, 0xbd, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7e, 0xb4, 0xd7, 0x41, 0x1a, 0xb6, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x3d, 0xd6, 0x5e, 0x1b, 0xde, 0xd6, 0x39, 0x58, 0x2d, 0x34, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6b, 0xb6, 0xd7, 0x41, 0x0a, 0x74, 0x6a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x74, 0x7b, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x06, 0x70, 0xaf, 0xc3, 0x17, 0xbf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x91, 0x7b, 0x1d, 0xbc, 0x18, 0x04, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe8, 0x73, 0xaf, 0x83, 0xa5, 0xd4, 0x74, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x29, 0xbb, 0xd7, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x7b, 0xf7, 0x3a, 0x58, 0x4a, 0x4d, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x26, 0xef, 0x75, 0x50, 0xfc, 0xa0, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x5e, 0xef, 0xb5, 0xe1, 0x11, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0xf1, 0xbd, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd8, 0xbe, 0xd7, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0x20, 0x52, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x49, 0xfe, 0x5e, 0x07, 0xc5, 0x0f, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x81, 0x01, 0x5f, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x88, 0xe0, 0x6b, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x10, 0xfe, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa8, 0x83, 0xaf, 0x83, 0x17, 0x83, 0x40, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe0, 0xc2, 0xd7, 0x86, 0x47, 0x58, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x72, 0xf8, 0xda, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0x10, 0x5f, 0x1b, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x83, 0x60, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x4f, 0x7c, 0x1d, 0x14, 0x3f, 0xa8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x5c, 0x7c, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf6, 0x8c, 0xaf, 0x83, 0x34, 0x6c, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0x3c, 0xbe, 0x0e, 0x5e, 0x0c, 0x02, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x68, 0xc8, 0xd7, 0xc1, 0xe1, 0x55, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x4a, 0xbe, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x00, 0xca, 0xd7, 0xe1, 0x8b, 0xdf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0x58, 0xbe, 0x0e, 0x5e, 0x0c, 0x02, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf1, 0xcb, 0xd7, 0xc1, 0xd9, 0x1b, 0xaf, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xa3, 0xf9, 0xda, 0xf0, 0x08, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x21, 0x37, 0x5f, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x3b, 0xe7, 0x6b, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x10, 0xc0, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x74, 0x9e, 0xaf, 0x83, 0xe2, 0x07, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x10, 0xa0, 0xaf, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x2e, 0xf4, 0x75, 0x78, 0xf0, 0x66, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb7, 0xe8, 0xeb, 0xe0, 0xc5, 0x20, 0x90, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x23, 0x7d, 0x6d, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xde, 0xa5, 0xaf, 0xc3, 0x83, 0x37, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x9d, 0x4e, 0x5f, 0x1b, 0xde, 0xd6, 0x19, 0x3c, 0x3d, 0x58, 0xe6, 0x34, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x25, 0x53, 0x5f, 0x1b, 0x1e, 0x61, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xbc, 0xea, 0x6b, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x62, 0x7d, 0x1d, 0x3c, 0x73, 0x0a, 0x72, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x75, 0xeb, 0xeb, 0xa0, 0xf8, 0x41, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xdc, 0xeb, 0x6b, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x86, 0x7d, 0x1d, 0x1e, 0xbc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x24, 0xfb, 0x3a, 0x78, 0x31, 0x08, 0xe4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb9, 0x67, 0x5f, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x50, 0xed, 0xeb, 0x20, 0x60, 0x59, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xda, 0xbe, 0x0e, 0x5e, 0xf4, 0x05, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x01, 0x72, 0x5f, 0x1b, 0x1e, 0x61, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x98, 0xee, 0x6b, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xdd, 0x7d, 0x1d, 0x3c, 0x73, 0x0a, 0x72, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x51, 0xef, 0xeb, 0xa0, 0xf8, 0x41, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb8, 0xef, 0x6b, 0xc3, 0xaf, 0x64, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x02, 0x7e, 0x6d, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa4, 0xc1, 0xaf, 0x83, 0x54, 0x5d, 0xdc, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2c, 0xc3, 0xaf, 0x83, 0x17, 0x83, 0x40, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x9d, 0xf8, 0xb5, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x19, 0xbf, 0x0e, 0x92, 0x89, 0x5b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x1f, 0xbf, 0x0e, 0x5e, 0x0c, 0x02, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x51, 0x7e, 0x6d, 0x78, 0x84, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x84, 0xcb, 0xaf, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x9c, 0xf9, 0x75, 0xf0, 0xcc, 0x29, 0xc8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x68, 0xce, 0xaf, 0x83, 0xe2, 0x07, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x04, 0xd0, 0xaf, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x2c, 0xfa, 0xb5, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0x74, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x96, 0x7e, 0x1d, 0xbc, 0x18, 0x04, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x72, 0xd4, 0xaf, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xba, 0xfa, 0x75, 0x90, 0x66, 0x10, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xeb, 0xfa, 0x75, 0xf0, 0xa2, 0x2f, 0xc8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x9a, 0xfd, 0xda, 0xf0, 0x08, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x01, 0xb6, 0x5f, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x17, 0xf7, 0xeb, 0xe0, 0x99, 0x53, 0x90, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc9, 0xbb, 0x5f, 0x07, 0xc5, 0x0f, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x01, 0xbf, 0x5f, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x38, 0xf8, 0x6b, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x38, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x4a, 0xfc, 0x75, 0xf0, 0x62, 0x10, 0xc8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x8f, 0xbf, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xaa, 0xf2, 0xd7, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0xf0, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb8, 0xf9, 0xeb, 0xe0, 0x45, 0x5f, 0x90, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x24, 0xfd, 0xb5, 0xe1, 0x11, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0xaa, 0xbf, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf2, 0xf5, 0xd7, 0xc1, 0x33, 0xa7, 0x20, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0xb5, 0xbf, 0x0e, 0x8a, 0x1f, 0xd4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0xbc, 0xbf, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x34, 0xf8, 0xd7, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0x20, 0x50, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0xe3, 0x5f, 0x07, 0x2f, 0x06, 0x81, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf6, 0xf3, 0xaf, 0x0d, 0x8f, 0xb0, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xaa, 0xfe, 0xb5, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0xda, 0xbf, 0x36, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0xb1, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x82, 0xff, 0x3a, 0x28, 0x7e, 0x50, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x9c, 0xff, 0xda, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x4d, 0xf6, 0x5f, 0x87, 0x07, 0x6f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0xf2, 0xbf, 0x0e, 0x5e, 0x0c, 0x02, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x17, 0xff, 0xd7, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xf9, 0xff, 0x3a, 0x48, 0x26, 0x64, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x11, 0x00, 0x3b, 0x78, 0xd1, 0x17, 0x64, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x1a, 0x80, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc2, 0x04, 0xb0, 0x83, 0x34, 0x6c, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x1b, 0xc0, 0x0e, 0x8a, 0x1f, 0xd4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x22, 0xc0, 0x36, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0x01, 0xae, 0xc3, 0x29, 0xd6, 0x02, 0x3e, 0x5a, 0xda, 0xdc, 0xbc, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x56, 0x64, 0xc8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xdc, 0x0c, 0xb0, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xdf, 0xea, 0xe8, 0xc4, 0xde, 0xea, 0xdc, 0xc8, 0x40, 0xe4, 0xca, 0xe2, 0xea, 0xca, 0xe6, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb9, 0x07, 0xd8, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0x38, 0xc0, 0x0e, 0x5e, 0xc9, 0xad, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x55, 0x09, 0xd8, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x45, 0xc0, 0x0e, 0xde, 0x86, 0xce, 0xd8, 0xac, 0xc1, 0x93, 0xd5, 0x17, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x9e, 0xac, 0xbe, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xa9, 0x02, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x3f, 0x5c, 0x98, 0xdc, 0x5c, 0x19, 0x19, 0x48, 0x9d, 0x1c, 0x1b, 0x48, 0x5c, 0x5d, 0x99, 0x5c, 0xde, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x89, 0x0b, 0xd8, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x35, 0x03, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x70, 0xc0, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x5e, 0x03, 0x76, 0x70, 0x9e, 0x1d, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xde, 0x07, 0x6c, 0xc3, 0x9f, 0x4b, 0x83, 0xc7, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x61, 0x3c, 0x60, 0x07, 0xe7, 0xd9, 0xd1, 0x5a, 0x01, 0x1f, 0x8d, 0x8e, 0x2e, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0xc4, 0x73, 0xc8, 0x06, 0xf0, 0x97, 0x0b, 0xbb, 0x03, 0x41, 0xa3, 0xa3, 0x83, 0x03, 0x91, 0x2b, 0x8b, 0xab, 0x2b, 0x9b, 0xa3, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xe2, 0x39, 0xe4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x69, 0x11, 0xd8, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x55, 0x02, 0xdb, 0xf0, 0xc4, 0xfb, 0x06, 0xaf, 0x0a, 0x16, 0xdc, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x07, 0x12, 0xd8, 0xc1, 0xb3, 0x3a, 0x18, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x88, 0x02, 0xdb, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xaf, 0xce, 0x0d, 0x2e, 0x4c, 0x6e, 0xae, 0x8c, 0x0c, 0xa4, 0x4e, 0x8e, 0x6d, 0xc3, 0x9f, 0x4b, 0x83, 0xc7, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x95, 0x4e, 0x60, 0x07, 0xe7, 0xd9, 0xd1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0xaf, 0xc0, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x36, 0x78, 0x81, 0x45, 0x5d, 0x1b, 0xfe, 0x5c, 0x1a, 0x5c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xa8, 0x02, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xd9, 0x02, 0x3b, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xc0, 0xc0, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x61, 0x19, 0xd8, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0xc5, 0xc0, 0x0e, 0xce, 0xb3, 0xa3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xaf, 0x81, 0x6d, 0xf8, 0x73, 0x69, 0xf0, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x2d, 0x0d, 0xec, 0xe0, 0x3c, 0x3b, 0x5a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xce, 0x81, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x6c, 0xb0, 0x6c, 0x0a, 0xba, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xc4, 0x81, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xdc, 0x81, 0x1d, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xed, 0x81, 0x1d, 0x3c, 0xfd, 0x5c, 0xae, 0x56, 0xc0, 0x8f, 0xab, 0x2b, 0x93, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0xff, 0xc0, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x89, 0xab, 0x2b, 0x93, 0xcb, 0x03, 0xa1, 0x93, 0x2b, 0x2b, 0xdb, 0xf0, 0x15, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xae, 0x20, 0xd8, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0x30, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8b, 0x27, 0xd8, 0x41, 0x08, 0x3e, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x1b, 0x82, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf8, 0x45, 0xb0, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x25, 0x82, 0x1d, 0x9c, 0x67, 0x47, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x99, 0x04, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x28, 0x24, 0xd8, 0xc1, 0x79, 0x76, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x38, 0x4d, 0xb0, 0x0d, 0x7f, 0x2e, 0x0d, 0x4e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x5f, 0x82, 0x1d, 0x3c, 0x7e, 0x3e, 0xa4, 0xc3, 0x29, 0xb6, 0x80, 0x8f, 0x16, 0x26, 0x47, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0xbc, 0x24, 0x72, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x63, 0x14, 0x6c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3e, 0xd0, 0xe8, 0xe8, 0xe0, 0x40, 0xe6, 0xca, 0xc6, 0x56, 0xe0, 0xde, 0xe4, 0xe8, 0x56, 0xd0, 0xde, 0xe6, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x11, 0x2a, 0xd8, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0x4b, 0xc1, 0x0e, 0x1f, 0xac, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xeb, 0x0a, 0xb6, 0xe1, 0xcf, 0xa5, 0xc1, 0xe3, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x16, 0x56, 0xb0, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x26, 0x59, 0xb0, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb8, 0x5b, 0xb0, 0x83, 0x32, 0x4b, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x7e, 0xc1, 0x36, 0xfc, 0xb9, 0x34, 0xb8, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xc8, 0x0b, 0x76, 0xf0, 0x4a, 0x7b, 0xc6, 0x56, 0x83, 0xb7, 0xe4, 0x70, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x40, 0x47, 0x99, 0x5d, 0x99, 0x1b, 0xdd, 0x1c, 0xc8, 0x5c, 0x9a, 0xdb, 0x58, 0x19, 0x08, 0x1d, 0x5a, 0x99, 0x9b, 0x6b, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x2d, 0x39, 0x5c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0xc6, 0x60, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x7c, 0x19, 0x6c, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0x76, 0x1c, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x2a, 0x19, 0x6c, 0x83, 0x60, 0x33, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xfb, 0x19, 0x6c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x4f, 0x70, 0x06, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x91, 0x1a, 0x6c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xc3, 0x62, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0xb9, 0xc1, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x09, 0xe1, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x40, 0x1b, 0xec, 0xe0, 0xd5, 0x9c, 0x8e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x8e, 0x83, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x25, 0x56, 0x36, 0x16, 0x56, 0x37, 0x57, 0x06, 0x42, 0x87, 0x56, 0xb6, 0xe1, 0xcf, 0xa5, 0x0d, 0xc2, 0x38, 0x63, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x22, 0x1c, 0x6c, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xe6, 0x1c, 0xec, 0x60, 0x15, 0x64, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0xeb, 0x60, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x87, 0x7d, 0x36, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x01, 0xef, 0x60, 0x07, 0x4f, 0x4f, 0xf7, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0c, 0x7b, 0xb0, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0xba, 0x95, 0xe1, 0xd1, 0xb5, 0xa4, 0x91, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x89, 0xf3, 0x60, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x51, 0xfd, 0x60, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xe0, 0x6f, 0xdd, 0x5c, 0x19, 0x19, 0x88, 0xd9, 0x9b, 0x1c, 0xc8, 0x18, 0xdb, 0xdb, 0x19, 0xc8, 0x58, 0x18, 0xdb, 0x58, 0x1d, 0x5b, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x1c, 0x0b, 0x48, 0x9a, 0x1b, 0xc8, 0xd8, 0x5b, 0x9b, 0x58, 0x9a, 0x5b, 0x18, 0x5d, 0xda, 0x9b, 0x1b, 0xc8, 0x5d, 0x1a, 0x1d, 0x1a, 0x88, 0x4e, 0x9d, 0x5b, 0xd8, 0xd8, 0x5a, 0x19, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0xf8, 0xd9, 0xc2, 0xe6, 0xe8, 0x5a, 0xc2, 0xc6, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x60, 0x7d, 0xb0, 0x83, 0x23, 0x5f, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x15, 0x06, 0x61, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xa0, 0xf7, 0x58, 0x98, 0xdb, 0x09, 0x1d, 0x48, 0xd8, 0xdc, 0x5c, 0x5d, 0x5b, 0x19, 0x48, 0x1a, 0x1d, 0xc8, 0xd9, 0x1b, 0x1d, 0x88, 0x5c, 0xd9, 0x58, 0x59, 0x9a, 0x5d, 0x19, 0x19, 0x48, 0x9d, 0x1b, 0x5d, 0x1a, 0x1b, 0xc8, 0x5d, 0x19, 0xc8, 0x59, 0x19, 0x1d, 0x48, 0x98, 0x1b, 0x48, 0xd8, 0xd8, 0x9a, 0xdb, 0xdb, 0x1d, 0x5b, 0x19, 0xd9, 0x59, 0x5b, 0x99, 0x1b, 0x9d, 0x6b, 0xc3, 0x9f, 0x4b, 0x03, 0x7c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe0, 0x40, 0xd8, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x68, 0x42, 0xd8, 0xc1, 0xc3, 0x0f, 0x18, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x7a, 0x08, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0x14, 0x61, 0x1b, 0xfe, 0x5c, 0x1a, 0xf8, 0x34, 0x72, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x3b, 0x22, 0xec, 0xa0, 0xcc, 0xd2, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x5e, 0x23, 0x6c, 0xc3, 0x9f, 0x4b, 0x03, 0xf8, 0xc8, 0x95, 0xc5, 0xd5, 0x95, 0xcd, 0xd1, 0xb5, 0xa4, 0x91, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x59, 0x18, 0x61, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0x21, 0x61, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x5d, 0x5c, 0x8a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd5, 0x1e, 0x61, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x77, 0x71, 0x29, 0x56, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xaa, 0x12, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x1e, 0xd7, 0xcd, 0x95, 0x91, 0x81, 0x98, 0xbd, 0xc9, 0x81, 0x8c, 0xb1, 0xbd, 0x9d, 0x81, 0x8c, 0x85, 0xb1, 0x8d, 0xd5, 0xb1, 0x85, 0xd1, 0xa5, 0xbd, 0xb9, 0xcd, 0xb1, 0x80, 0xa4, 0xb9, 0x81, 0x8c, 0xbd, 0xb5, 0x89, 0xa5, 0xb9, 0x85, 0xd1, 0xa5, 0xbd, 0xb9, 0x81, 0xdc, 0xa5, 0xd1, 0xa1, 0x81, 0xe8, 0xb0, 0x85, 0xcd, 0xd1, 0xb5, 0x84, 0x8d, 0xad, 0x6d, 0xf8, 0x73, 0x69, 0x80, 0xb7, 0xce, 0x2d, 0x6c, 0x6c, 0xad, 0x8c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x40, 0x09, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x71, 0x09, 0x3b, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x9b, 0x09, 0x3b, 0x28, 0xb3, 0x74, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xc3, 0x09, 0x3b, 0x28, 0xb3, 0x74, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x0a, 0x28, 0x6c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xf4, 0x1a, 0x0b, 0x73, 0x03, 0x19, 0x0b, 0x73, 0x1b, 0x2b, 0x63, 0x03, 0x09, 0x63, 0x63, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x99, 0xab, 0x13, 0x9b, 0x1b, 0x93, 0x4b, 0x83, 0xa3, 0x4b, 0x7b, 0x73, 0x9b, 0x03, 0xb9, 0x2b, 0x3b, 0xb1, 0x2b, 0x03, 0x69, 0x0b, 0x23, 0x2b, 0x73, 0x6d, 0xf8, 0x73, 0x69, 0x00, 0xcf, 0xb9, 0x3a, 0xb1, 0xb9, 0x31, 0xb9, 0x34, 0x38, 0xba, 0xb4, 0x37, 0xb7, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb7, 0x27, 0x6c, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x7b, 0x28, 0xec, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x21, 0x29, 0xec, 0xa0, 0xcc, 0xd2, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xc9, 0x29, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x4e, 0x85, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xa6, 0xaf, 0xc7, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0xa1, 0xc2, 0x0e, 0x8e, 0xad, 0xae, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x6b, 0x85, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x0b, 0x83, 0x83, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0xb0, 0xc2, 0x0e, 0xd6, 0x6b, 0x3d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x15, 0x16, 0xb6, 0xe1, 0xcf, 0xa5, 0x0d, 0x0e, 0xa6, 0x9f, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc5, 0x5e, 0x61, 0x07, 0x67, 0x24, 0xd4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0xcf, 0xc2, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0x91, 0xd5, 0x8d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x65, 0x61, 0x07, 0x4f, 0x4f, 0xf7, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0xe0, 0xc2, 0x36, 0xfc, 0xb9, 0x34, 0x80, 0x07, 0x5a, 0x59, 0x98, 0x1c, 0x9d, 0x58, 0x59, 0x18, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xdc, 0x16, 0xb6, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x3e, 0x17, 0x76, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x82, 0x17, 0x76, 0xf0, 0x82, 0xab, 0xc8, 0x3a, 0x9c, 0x62, 0xad, 0xc1, 0x23, 0xba, 0x15, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0xd1, 0xad, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xed, 0x17, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x0f, 0x5c, 0x98, 0xdc, 0x5c, 0x19, 0x19, 0x48, 0x9d, 0x1c, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x20, 0x0c, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5c, 0x60, 0xd8, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0xe5, 0x25, 0x91, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfb, 0x62, 0xd8, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x12, 0xc3, 0x0e, 0x1e, 0x64, 0xbe, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x99, 0x64, 0xd8, 0x86, 0x3f, 0x97, 0x06, 0x97, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0x1f, 0xc3, 0x0e, 0xde, 0xa4, 0xbe, 0xd8, 0xe1, 0x14, 0x5b, 0xc3, 0x03, 0x20, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x86, 0x07, 0x40, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0b, 0x2e, 0xc3, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x63, 0xae, 0xac, 0x2d, 0x0d, 0x2e, 0x4c, 0x6e, 0xae, 0x8c, 0x0c, 0x04, 0xad, 0x2c, 0x8c, 0xac, 0x4c, 0x6e, 0x6e, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x53, 0x33, 0xec, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf8, 0x33, 0xec, 0xe0, 0x3c, 0x3b, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf9, 0x68, 0xd8, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xac, 0x69, 0xd8, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xbd, 0x1a, 0x76, 0x70, 0x9e, 0x1d, 0xad, 0x15, 0xd0, 0xd2, 0xe0, 0xec, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xa0, 0xa5, 0xc1, 0xd9, 0x06, 0xe0, 0x03, 0x2e, 0x4c, 0x6e, 0xae, 0x0c, 0x24, 0x0d, 0xce, 0xce, 0x06, 0x24, 0x8c, 0x8c, 0x4c, 0xae, 0x6c, 0x6e, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x21, 0x36, 0x6c, 0x83, 0xa2, 0xd3, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xda, 0xd9, 0xb0, 0x83, 0xa5, 0xaa, 0xa1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0xe2, 0x86, 0x1d, 0x24, 0xe3, 0x37, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xef, 0x86, 0x6d, 0x50, 0x74, 0x1a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xeb, 0x1b, 0x76, 0xb0, 0xc4, 0x8e, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb8, 0xe1, 0xb0, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xdf, 0x90, 0x0d, 0x64, 0x7e, 0x43, 0xd1, 0x86, 0x3f, 0x97, 0x06, 0x78, 0xd0, 0xca, 0xf0, 0xe8, 0xe6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xfc, 0x86, 0xc5, 0xc1, 0x1b, 0xe4, 0x23, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf3, 0x1b, 0x26, 0x03, 0x99, 0xdf, 0x30, 0x3b, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf3, 0x1b, 0x76, 0x03, 0x99, 0xdf, 0xd0, 0xb3, 0xe1, 0x83, 0xf9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf3, 0x1b, 0xa6, 0x03, 0x99, 0xdf, 0xb0, 0x3d, 0xfc, 0x50, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xdf, 0x30, 0x1e, 0xc8, 0xfc, 0x86, 0x9a, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xdf, 0xb0, 0x1e, 0xc8, 0xfc, 0x86, 0xf9, 0x41, 0x08, 0x3e, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xdf, 0xb0, 0x1f, 0xc8, 0xfc, 0x86, 0x96, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0xdf, 0x3c, 0xac, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x8d, 0xc3, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x7e, 0x43, 0x36, 0x90, 0xfa, 0x0d, 0xd3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xfd, 0x86, 0x70, 0x20, 0xf5, 0x1b, 0x06, 0x07, 0x65, 0x13, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfa, 0x0d, 0x8b, 0x81, 0xd4, 0x6f, 0x58, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x37, 0x4c, 0x06, 0x52, 0xbf, 0x61, 0x76, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x37, 0xec, 0x06, 0x52, 0xbf, 0x61, 0x78, 0xf8, 0xa1, 0xa6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x92, 0xc3, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x00, 0x0f, 0x5b, 0xd9, 0x59, 0x1a, 0xbd, 0x41, 0x09, 0x1d, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x7f, 0xc3, 0x62, 0x20, 0xfb, 0x1b, 0x26, 0x87, 0x0f, 0x56, 0x0f, 0xc2, 0x74, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xea, 0xe5, 0xb0, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xe9, 0x1c, 0xb6, 0xe1, 0x73, 0x97, 0xc1, 0xd9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x92, 0xe8, 0xb0, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x3e, 0x1d, 0x76, 0xb0, 0xd0, 0x73, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x14, 0xec, 0xb0, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x88, 0xf9, 0xc8, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xda, 0x0e, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x15, 0xde, 0x61, 0x1b, 0x3e, 0x77, 0x19, 0x7c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x05, 0x0f, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xff, 0x0d, 0x93, 0x81, 0xfc, 0x6f, 0x58, 0x6d, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xbf, 0x61, 0x74, 0xf0, 0xc0, 0x16, 0xc9, 0x83, 0x30, 0x1d, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x1e, 0x0f, 0xdb, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xbf, 0x61, 0x39, 0x90, 0xff, 0x0d, 0x1d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xbf, 0x61, 0x3a, 0x90, 0xff, 0x0d, 0xdb, 0x83, 0x10, 0x7c, 0x58, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xbf, 0x61, 0x3c, 0x90, 0xff, 0x0d, 0x15, 0x07, 0x0f, 0x35, 0x90, 0xec, 0xf0, 0xe0, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x76, 0x7a, 0xd8, 0x86, 0x5f, 0xc9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x64, 0x0f, 0xdb, 0xf0, 0x08, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x55, 0xef, 0x61, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x43, 0x3e, 0xec, 0xf0, 0xc5, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x59, 0xf6, 0x61, 0x07, 0x29, 0x6f, 0x57, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xe6, 0x87, 0x1d, 0x1c, 0x56, 0xe6, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xa5, 0x3f, 0x6c, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xff, 0x87, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x66, 0x01, 0xb1, 0x83, 0xf7, 0x6a, 0xa1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x7c, 0x20, 0x76, 0xf0, 0xe0, 0x12, 0xc9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x16, 0xc4, 0x0e, 0x4f, 0xef, 0xb4, 0x41, 0x31, 0x89, 0xb9, 0x06, 0x4b, 0x31, 0xaa, 0x36, 0x5c, 0x5d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x00, 0x0e, 0xe3, 0x81, 0x04, 0x70, 0x68, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x00, 0x0e, 0xeb, 0x81, 0x04, 0x70, 0x98, 0x1f, 0x84, 0xe9, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x00, 0x0e, 0xfb, 0x81, 0x04, 0x70, 0x28, 0x38, 0x08, 0xc1, 0x87, 0x0e, 0x5f, 0x4e, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfb, 0x83, 0xd8, 0x86, 0x47, 0x58, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x95, 0x10, 0xdb, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x15, 0x62, 0x07, 0x87, 0x95, 0xb9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x38, 0x0c, 0xb1, 0x83, 0x94, 0xb7, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x37, 0xc4, 0x36, 0xbc, 0xcd, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xe5, 0x21, 0xb6, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x42, 0xc4, 0x0e, 0xd6, 0xa7, 0xd6, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x56, 0x22, 0x76, 0xf0, 0xe0, 0x12, 0xc9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x51, 0xc4, 0x0e, 0x4f, 0xef, 0x54, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x35, 0x2d, 0x62, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xbf, 0x88, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0x17, 0x66, 0x48, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2f, 0x9e, 0xd8, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x2b, 0x23, 0xb6, 0xc1, 0x89, 0xfd, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb8, 0x1a, 0xb1, 0x83, 0xb3, 0x14, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6a, 0x8e, 0xd8, 0x06, 0x27, 0xf6, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0x78, 0xc4, 0x0e, 0x1a, 0x95, 0xff, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x0a, 0x12, 0xdb, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x80, 0x48, 0xec, 0xa0, 0x44, 0xaa, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x08, 0x49, 0xec, 0xe0, 0xc1, 0x25, 0x92, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x95, 0x4b, 0x62, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xc1, 0x21, 0x1b, 0xc8, 0x04, 0x87, 0x82, 0x0d, 0x7f, 0x2e, 0x0d, 0xf8, 0x68, 0x65, 0x78, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x82, 0xc3, 0xe0, 0xe0, 0x91, 0x7a, 0x92, 0x1b, 0x3e, 0x98, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xc1, 0x61, 0x33, 0x90, 0x09, 0x0e, 0xa3, 0xc3, 0x0f, 0x35, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x09, 0x0e, 0xab, 0x81, 0x4c, 0x70, 0xd8, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x04, 0x87, 0xd9, 0x40, 0x26, 0x38, 0xec, 0x0e, 0x42, 0xf0, 0x61, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x04, 0x87, 0xe1, 0x40, 0x26, 0x38, 0xcc, 0x0f, 0x1e, 0x6a, 0x20, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xae, 0x93, 0xd8, 0x06, 0x05, 0xc1, 0xec, 0x1a, 0xbc, 0x72, 0x4f, 0xb2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0xa3, 0xc4, 0x36, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0xa8, 0xc4, 0x36, 0xbc, 0xad, 0x73, 0xf0, 0xd2, 0x45, 0xc9, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xbc, 0x12, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x55, 0x5a, 0x62, 0x07, 0x27, 0x99, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0xbe, 0xc4, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x82, 0x98, 0xd8, 0xe1, 0x53, 0xc0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0xcc, 0xc4, 0x0e, 0x52, 0x4e, 0xab, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x4d, 0x13, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x89, 0x6c, 0x62, 0x07, 0x0b, 0x3d, 0x27, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x86, 0x13, 0x3b, 0x78, 0x70, 0x89, 0x64, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x4b, 0x27, 0x76, 0x78, 0xf0, 0xa6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x1e, 0x3e, 0xb1, 0x0d, 0x0e, 0x58, 0x74, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xfd, 0x8a, 0x6d, 0x50, 0x74, 0x1a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x21, 0x2c, 0x76, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x30, 0x63, 0xb1, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xe0, 0x90, 0x0f, 0xe4, 0x83, 0x43, 0xf5, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x70, 0x18, 0x0c, 0xe4, 0x83, 0xc3, 0x74, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0f, 0x0e, 0x93, 0x83, 0xb7, 0xa8, 0x4a, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x38, 0x6c, 0x06, 0xf2, 0xc1, 0x61, 0x77, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x38, 0x0c, 0x07, 0xf2, 0xc1, 0x61, 0x79, 0xf8, 0xa1, 0xa6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1f, 0x1c, 0xb6, 0x03, 0xf9, 0xe0, 0x50, 0xb7, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x07, 0x87, 0xf5, 0xc1, 0xcb, 0x6a, 0x25, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1f, 0x1c, 0xe6, 0x03, 0xf9, 0xe0, 0x50, 0x71, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x38, 0x74, 0x0c, 0xe4, 0x83, 0x43, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x70, 0x28, 0x19, 0xc8, 0x07, 0x87, 0x96, 0x83, 0x10, 0x7c, 0x58, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xc1, 0xa1, 0x66, 0x20, 0x1f, 0x1c, 0xca, 0x0e, 0x1e, 0x6a, 0x20, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x38, 0xf4, 0x0d, 0xe4, 0x83, 0x43, 0xf3, 0x86, 0x3f, 0x97, 0x06, 0x1f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1f, 0x1c, 0x1a, 0x0f, 0xde, 0x66, 0x2c, 0xb9, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xe0, 0x50, 0x39, 0x90, 0x0f, 0x0e, 0xb5, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x83, 0x43, 0xef, 0x40, 0x3e, 0x38, 0x14, 0x1f, 0x7e, 0xa8, 0xa9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xde, 0x64, 0xb1, 0x0d, 0x92, 0x0c, 0x08, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x64, 0x16, 0x3b, 0x38, 0x64, 0x2d, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x24, 0x2d, 0x76, 0x78, 0x5a, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd0, 0x6b, 0xb1, 0xc3, 0x7b, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x6d, 0x8b, 0x1d, 0x9e, 0xde, 0x69, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf1, 0x5b, 0x6c, 0x83, 0x15, 0x42, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x1a, 0x8c, 0x1d, 0xac, 0xa8, 0x08, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x60, 0x61, 0x6c, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x37, 0x8c, 0x1d, 0xac, 0x6b, 0x25, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x42, 0x62, 0xec, 0x60, 0x21, 0x1c, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x15, 0x63, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xd0, 0xca, 0xe8, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x3d, 0x5e, 0x6c, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xd2, 0x8b, 0x1d, 0xac, 0xa2, 0xa1, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x1e, 0x5f, 0x6c, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0xee, 0x8b, 0x1d, 0x1e, 0xbc, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xcc, 0x5f, 0xec, 0xf0, 0x98, 0x4c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x06, 0x8c, 0x6d, 0x78, 0x5b, 0x67, 0xc0, 0x1b, 0x2b, 0x63, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb2, 0x71, 0xb1, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x62, 0x2e, 0x76, 0xb0, 0xae, 0x95, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3a, 0x75, 0xb1, 0x83, 0x85, 0x70, 0xa4, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xb7, 0x8b, 0x1d, 0xbc, 0x2c, 0x5c, 0xb2, 0x96, 0x59, 0xc0, 0x43, 0x2b, 0xa3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0xfe, 0xc4, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x79, 0xa0, 0xd8, 0xc1, 0x52, 0xd5, 0xd0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x0d, 0xc5, 0x0e, 0x0e, 0xaf, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x28, 0x8a, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x82, 0x46, 0xb1, 0x83, 0x55, 0x34, 0xf4, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x45, 0x8a, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf4, 0x49, 0xb1, 0xc3, 0x63, 0x32, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x5b, 0x8a, 0x1d, 0x9c, 0x9a, 0xdb, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x49, 0x53, 0x6c, 0xc3, 0x83, 0x92, 0x1b, 0x2c, 0x75, 0xb8, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xe8, 0x14, 0x3b, 0x58, 0x03, 0xab, 0x5a, 0x2b, 0xe0, 0x8d, 0x95, 0xb1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa1, 0xa1, 0x62, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x8d, 0x54, 0xec, 0x60, 0x09, 0x4e, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb1, 0xa8, 0x62, 0x1b, 0x1c, 0xc3, 0x0d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x57, 0xc5, 0x36, 0xbc, 0x71, 0x77, 0xf0, 0x80, 0x03, 0xc9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x5e, 0xc5, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd0, 0xae, 0xd8, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x6d, 0xc5, 0x0e, 0x16, 0xc2, 0x91, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x2c, 0x2b, 0x76, 0xb0, 0x10, 0x8e, 0xb4, 0x0e, 0xa7, 0x58, 0x87, 0x53, 0x6c, 0x16, 0xd0, 0xd2, 0xe0, 0xe8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xa0, 0xa5, 0xc1, 0xd1, 0x06, 0xe0, 0x03, 0x2e, 0x4c, 0x6e, 0xae, 0x0c, 0x24, 0x0d, 0xce, 0x8e, 0x06, 0x24, 0x8c, 0x8c, 0x4c, 0xae, 0x6c, 0x6e, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x55, 0x63, 0x6c, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x75, 0x8c, 0x6d, 0xf8, 0xdc, 0x65, 0xc0, 0x13, 0xcb, 0xa3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0x3f, 0xc6, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xaf, 0xc8, 0xd8, 0x86, 0x07, 0x25, 0x37, 0x58, 0x9a, 0x3a, 0xbf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x57, 0x32, 0x76, 0xb0, 0x02, 0x5c, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x12, 0x95, 0xb1, 0x0d, 0x0f, 0x4a, 0x6e, 0xb0, 0x58, 0xa7, 0x7e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x9c, 0x65, 0xec, 0x60, 0x0d, 0xac, 0x6a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0x31, 0x63, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x7d, 0x66, 0xec, 0x60, 0xa9, 0x6a, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x21, 0x38, 0x63, 0x07, 0xa9, 0xd8, 0xbf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xee, 0x8c, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x22, 0xb2, 0xb1, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x7f, 0x8d, 0x6d, 0x78, 0x5b, 0x67, 0xc0, 0x13, 0xcb, 0xa3, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xe7, 0x67, 0x6c, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x08, 0x8d, 0x1d, 0xac, 0xa2, 0xa1, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xca, 0x68, 0x6c, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x23, 0x8d, 0x1d, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x2f, 0x8d, 0x1d, 0x14, 0x95, 0xe2, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xf5, 0x34, 0xb6, 0xc1, 0x0a, 0xa1, 0xa6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0xb6, 0xc6, 0x0e, 0xd6, 0x8e, 0x83, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x67, 0x35, 0x76, 0xb0, 0xf6, 0x85, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7e, 0xa9, 0xb1, 0x83, 0xb7, 0xbc, 0x4c, 0x56, 0xcd, 0x1a, 0xbc, 0xd4, 0x26, 0x68, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0x4b, 0x6d, 0x82, 0x1a, 0xc0, 0x67, 0x4c, 0xae, 0x8c, 0xac, 0xcc, 0x8d, 0x2e, 0x2d, 0x8c, 0x6d, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xa5, 0x36, 0x41, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x95, 0x69, 0x63, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd3, 0x6d, 0x6c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xaf, 0x31, 0xb6, 0xb4, 0x32, 0x37, 0x3a, 0x10, 0xb4, 0xb7, 0x39, 0xba, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x68, 0x75, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x03, 0xdb, 0xd8, 0xc1, 0xfb, 0x93, 0x23, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xa8, 0x1b, 0xdb, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x87, 0x31, 0xb6, 0xb4, 0x32, 0x37, 0x3a, 0x90, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x34, 0xba, 0xb4, 0xb2, 0xb9, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x61, 0x75, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa2, 0xdc, 0xd8, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2a, 0xde, 0xd8, 0x86, 0xb7, 0x75, 0x36, 0x38, 0x65, 0x83, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x95, 0xdf, 0xd8, 0xc1, 0x79, 0xf3, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xac, 0xc1, 0xb1, 0x83, 0xf3, 0xec, 0x68, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x2c, 0x8e, 0x6d, 0x78, 0xe2, 0x7d, 0x83, 0xb7, 0x42, 0x35, 0x6e, 0xf8, 0x73, 0x69, 0xc0, 0x7b, 0x93, 0xc3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x10, 0xc7, 0x0e, 0x9e, 0xe1, 0xcf, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x61, 0xe4, 0xd8, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xde, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xc2, 0xc6, 0xd8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7c, 0xc7, 0xb1, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8c, 0xca, 0xb1, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x1c, 0xcd, 0xb1, 0x83, 0xf3, 0xec, 0x68, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x88, 0x8e, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x31, 0xc6, 0x96, 0x56, 0xe6, 0x46, 0x07, 0x92, 0x04, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0x2c, 0x0d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xfc, 0x1c, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x2d, 0x1d, 0x3b, 0x58, 0x05, 0x99, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb2, 0xea, 0xd8, 0xc1, 0xe1, 0xbe, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe6, 0xd7, 0xb1, 0x83, 0x33, 0x89, 0x6b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xe6, 0x8e, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x35, 0x56, 0x37, 0x47, 0xf7, 0xd6, 0x06, 0x42, 0x96, 0x26, 0x47, 0xb7, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0xac, 0xae, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xb9, 0x1d, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xea, 0x1d, 0x3b, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x13, 0x1e, 0x3b, 0x38, 0x6f, 0x9e, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x77, 0x3c, 0x76, 0x10, 0xa6, 0x63, 0x75, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0x2b, 0x28, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x1b, 0x07, 0xda, 0xf0, 0xb6, 0xce, 0xc0, 0xbf, 0xb9, 0xad, 0xc0, 0xfa, 0xfe, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xe0, 0xb5, 0xbd, 0xc1, 0x0d, 0x80, 0xce, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x20, 0x6d, 0x61, 0x70, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x6b, 0x65, 0x79, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xbc, 0x8b, 0x0e, 0x2e, 0xc6, 0x6c, 0x50, 0x28, 0x77, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x77, 0xf1, 0x07, 0x0f, 0x6b, 0xf3, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x78, 0x17, 0x82, 0x83, 0x57, 0x76, 0x79, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0xa2, 0xf5, 0x64, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x83, 0x87, 0x74, 0x79, 0x1c, 0x1c, 0x5b, 0x07, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x83, 0xf7, 0x89, 0x79, 0x1c, 0x3c, 0xaa, 0xcc, 0x63, 0xc3, 0x9f, 0x4b, 0x1b, 0x9c, 0x68, 0x3d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x39, 0x78, 0x36, 0x99, 0xc7, 0xc1, 0xb1, 0x75, 0xa0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xdc, 0x8b, 0x1e, 0xbc, 0x95, 0x71, 0x72, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x5e, 0xfc, 0xe0, 0x5e, 0x98, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0x33, 0x24, 0xc1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x1b, 0xbc, 0x6d, 0xb9, 0xe3, 0xe0, 0xfd, 0x9e, 0x93, 0x1b, 0x84, 0xd3, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb8, 0x17, 0xe2, 0xc1, 0xbd, 0xb0, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb8, 0x17, 0xf2, 0xc1, 0xbd, 0x30, 0x39, 0x38, 0xf1, 0x7b, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x7b, 0x61, 0x33, 0xb8, 0x17, 0x66, 0x07, 0x27, 0x7e, 0x8f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x2f, 0x0c, 0x07, 0xf7, 0xc2, 0xf2, 0xf0, 0xc1, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xfe, 0x45, 0x0f, 0xde, 0xca, 0x38, 0xb9, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xf0, 0x2f, 0x7e, 0xf0, 0x2f, 0x44, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0xbf, 0x90, 0x1c, 0x3c, 0x2b, 0x76, 0xf2, 0x20, 0x4c, 0xc7, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x30, 0x7a, 0xf0, 0x56, 0xc6, 0xc9, 0x0d, 0x0a, 0xd2, 0xd8, 0xc1, 0xc5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x30, 0x44, 0x83, 0x83, 0xa1, 0x6a, 0x83, 0x35, 0x52, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x60, 0x48, 0x07, 0x07, 0x43, 0xcf, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0e, 0x86, 0x78, 0x70, 0x30, 0x4c, 0x0e, 0x02, 0x47, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x1c, 0x0c, 0x9b, 0xc1, 0xc1, 0x50, 0xb3, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x30, 0x8c, 0x06, 0x07, 0xc3, 0x76, 0xc3, 0x9f, 0x4b, 0x1b, 0x14, 0xad, 0x27, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x38, 0x18, 0x86, 0x07, 0x4f, 0x1e, 0x9e, 0x3c, 0x38, 0xf1, 0x7b, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x83, 0x61, 0x3c, 0x38, 0x18, 0x5a, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xd9, 0xe4, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x07, 0x43, 0xc1, 0xc1, 0xeb, 0x92, 0x27, 0x0f, 0x8e, 0x1c, 0x1f, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x83, 0xa1, 0x68, 0x70, 0x30, 0x34, 0x1d, 0x9e, 0xd6, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x83, 0x77, 0xde, 0x74, 0x1c, 0xbc, 0x95, 0x71, 0x72, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x3c, 0x8c, 0x1f, 0x3c, 0x0c, 0x1d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0f, 0x43, 0x30, 0x78, 0x18, 0x0a, 0x36, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x0e, 0x4e, 0xa1, 0x1f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x78, 0x18, 0xc2, 0x83, 0xd7, 0x5b, 0x4f, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x3c, 0x0c, 0xe9, 0xe0, 0x61, 0xd8, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x3c, 0x0c, 0xf1, 0xe0, 0x61, 0x18, 0x1c, 0x3c, 0x0a, 0x70, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x3c, 0x0c, 0x8b, 0xc1, 0xc3, 0x30, 0x3a, 0x38, 0xb4, 0x76, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x87, 0x61, 0x35, 0x78, 0x18, 0xa6, 0x07, 0xeb, 0x16, 0x8e, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0f, 0xc3, 0x78, 0xf0, 0x30, 0xec, 0x0f, 0xce, 0x70, 0x05, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x87, 0xa1, 0x61, 0xf0, 0x30, 0x54, 0x1c, 0xde, 0x0b, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x0d, 0x9e, 0xac, 0xd3, 0x71, 0xf0, 0x56, 0xc6, 0xc9, 0xc3, 0x7b, 0x41, 0x2b, 0xf0, 0xfe, 0xfb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x00, 0x8f, 0xb3, 0x34, 0x33, 0xba, 0x96, 0x30, 0x39, 0xbb, 0xb7, 0x83, 0xb7, 0x11, 0xd9, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x3c, 0xec, 0x7d, 0x72, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x91, 0xe0, 0x6d, 0x83, 0x50, 0x43, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd6, 0x29, 0xe2, 0x07, 0xd6, 0x29, 0xc2, 0x60, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x3a, 0x45, 0x08, 0x06, 0xd6, 0x29, 0x42, 0xba, 0xe1, 0x8d, 0xbb, 0x83, 0x97, 0x52, 0x1d, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xeb, 0x14, 0x21, 0x1e, 0x58, 0xa7, 0x08, 0xf9, 0x41, 0x41, 0x91, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x86, 0xc0, 0xdb, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe7, 0xc6, 0xdb, 0xc1, 0x3b, 0x8f, 0xeb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x24, 0x79, 0x3b, 0x78, 0xf0, 0x73, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x11, 0x36, 0x6f, 0x07, 0x0f, 0xc9, 0xae, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x3b, 0xe8, 0xed, 0xe0, 0x25, 0xfe, 0x75, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x34, 0xbd, 0x1d, 0x3c, 0x95, 0xc0, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x62, 0xab, 0xb7, 0x83, 0xd7, 0xc8, 0xd7, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xdc, 0xf5, 0x76, 0xf0, 0x48, 0x08, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0xcc, 0xde, 0x0e, 0x5e, 0x71, 0x61, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3b, 0xdb, 0xdb, 0xc1, 0x33, 0x3b, 0xec, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x84, 0x7b, 0x3b, 0x78, 0x07, 0x89, 0x5d, 0x2b, 0x50, 0xfc, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xe3, 0x20, 0x64, 0x03, 0x5b, 0x08, 0x71, 0x1b, 0xa4, 0x5e, 0x14, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xca, 0x41, 0xf4, 0xe0, 0xe5, 0x11, 0x94, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0x3c, 0x92, 0x4e, 0x64, 0xc3, 0xf3, 0x24, 0x1b, 0x3c, 0x5d, 0xc8, 0x6e, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x91, 0x74, 0x22, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x74, 0x10, 0x37, 0xb0, 0x78, 0x10, 0xbf, 0x41, 0xd0, 0xfe, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x4b, 0x07, 0x21, 0x19, 0x58, 0x3a, 0x08, 0x6f, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x7f, 0x83, 0x2b, 0x73, 0x03, 0x09, 0x73, 0x03, 0x49, 0x82, 0x1a, 0x02, 0x81, 0x7b, 0x93, 0xa3, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x74, 0x10, 0xa2, 0x81, 0xa5, 0x83, 0x90, 0x6f, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x60, 0xe3, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x0e, 0xc2, 0x60, 0x60, 0xe9, 0x20, 0xac, 0x36, 0xfc, 0xb9, 0xb4, 0xe1, 0xfb, 0xf6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x3a, 0x08, 0x8b, 0x83, 0x67, 0x9b, 0x50, 0x6e, 0xf8, 0x77, 0x7e, 0x83, 0x76, 0x0f, 0x38, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x3a, 0x08, 0xc9, 0xc0, 0xd6, 0x41, 0xb8, 0xb3, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x0f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x49, 0x50, 0x43, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x0e, 0x42, 0x34, 0xb0, 0x75, 0x10, 0xf2, 0x83, 0x97, 0x05, 0x2c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x5b, 0x07, 0x61, 0x30, 0xb0, 0x75, 0x10, 0x56, 0x1b, 0xfe, 0x5c, 0xda, 0xf0, 0x7d, 0xfb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x1d, 0x84, 0xc5, 0xc1, 0xab, 0x6c, 0x28, 0x0f, 0xde, 0xa8, 0x42, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x76, 0x10, 0x92, 0x81, 0xb5, 0x83, 0x70, 0x6c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5e, 0xe7, 0xe0, 0xd2, 0xe8, 0x40, 0xc2, 0x40, 0xdc, 0xde, 0xea, 0xdc, 0x40, 0xe8, 0xde, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0x92, 0xa0, 0x86, 0x40, 0xe0, 0xde, 0xe4, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x1d, 0x84, 0x68, 0x60, 0xed, 0x20, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xcd, 0xdf, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x3b, 0x08, 0x83, 0x81, 0xb5, 0x83, 0xb0, 0xda, 0xf0, 0xe7, 0xd2, 0x86, 0xef, 0xdb, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xed, 0x20, 0x2c, 0x0e, 0x1e, 0x76, 0x44, 0x79, 0xf0, 0x46, 0x15, 0xca, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xed, 0x20, 0xcc, 0x06, 0xd6, 0x0e, 0xc2, 0x76, 0xc3, 0x9f, 0x4b, 0x1b, 0x9c, 0x22, 0x4f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xed, 0x20, 0xec, 0x0e, 0x9e, 0xd6, 0x44, 0x79, 0xf0, 0xbe, 0x0d, 0x91, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xed, 0x20, 0x8c, 0x07, 0xd6, 0x0e, 0x42, 0xc3, 0x86, 0x3f, 0x97, 0x36, 0x4c, 0xe7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x1d, 0x84, 0xf5, 0xc1, 0x13, 0xa7, 0x28, 0x0f, 0x96, 0xc3, 0x62, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x1d, 0x84, 0x64, 0x60, 0xef, 0x20, 0x5c, 0xdb, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0xe7, 0xb9, 0xb7, 0xb0, 0x35, 0x90, 0x30, 0x10, 0xb7, 0xb7, 0x3a, 0x37, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0x24, 0xa8, 0x21, 0x10, 0xb8, 0x37, 0x39, 0xba, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x7b, 0x07, 0x21, 0x1a, 0xd8, 0x3b, 0x08, 0xf9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x1e, 0xc7, 0xe4, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x1d, 0x84, 0xc1, 0xc0, 0xde, 0x41, 0x58, 0x6d, 0xf8, 0x73, 0x69, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x77, 0x10, 0x16, 0x07, 0xef, 0x25, 0xa3, 0x3c, 0x78, 0xa3, 0x0a, 0xe5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x77, 0x10, 0x66, 0x03, 0x7b, 0x07, 0x61, 0xbb, 0xe1, 0xcf, 0xa5, 0x0d, 0x4e, 0x91, 0xa7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x77, 0x10, 0x76, 0x07, 0x2f, 0x56, 0xa3, 0x3c, 0x78, 0xdf, 0x86, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x77, 0x10, 0xc6, 0x03, 0x7b, 0x07, 0xa1, 0x61, 0xc3, 0x9f, 0x4b, 0x1b, 0xa6, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x0e, 0xc2, 0xfa, 0xe0, 0xe5, 0x70, 0x94, 0x07, 0xcb, 0x61, 0xb1, 0x6b, 0xd6, 0xf0, 0x7d, 0xfb, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x42, 0x08, 0xe9, 0xc0, 0x12, 0x42, 0x58, 0x1c, 0x9c, 0x91, 0x50, 0x57, 0x83, 0x37, 0x45, 0x8e, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xd7, 0x8c, 0xdb, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x29, 0x72, 0x64, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x0f, 0xe2, 0x06, 0x56, 0x10, 0xe2, 0x37, 0x08, 0x35, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xf5, 0x20, 0x24, 0x03, 0xab, 0x07, 0x61, 0xb2, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xf5, 0x20, 0x44, 0x03, 0xab, 0x07, 0x21, 0x3f, 0x78, 0xfd, 0x77, 0xca, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x7a, 0x10, 0x06, 0x03, 0xab, 0x07, 0x61, 0x71, 0x50, 0x50, 0x64, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xbb, 0x07, 0x71, 0x07, 0x4f, 0xf3, 0xa3, 0xdc, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdd, 0x83, 0x90, 0x0c, 0xec, 0x1e, 0x84, 0x37, 0x1b, 0x9e, 0x78, 0xdf, 0xe0, 0xc9, 0xf8, 0x76, 0x1b, 0xac, 0x57, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x76, 0x0f, 0x42, 0x38, 0xb0, 0x7b, 0x10, 0x16, 0x07, 0xef, 0xf2, 0xb7, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdd, 0x83, 0x30, 0x19, 0xd8, 0x3d, 0x08, 0xdb, 0x83, 0x17, 0x08, 0xdc, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xcb, 0x07, 0x21, 0x19, 0x58, 0x3e, 0x08, 0x3f, 0x36, 0x3c, 0xf1, 0xbe, 0xc1, 0x63, 0xa6, 0xee, 0x36, 0x58, 0xaf, 0x52, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x1f, 0x84, 0x70, 0x60, 0xf9, 0x20, 0x2c, 0x0e, 0x5e, 0x6f, 0xef, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xcb, 0x07, 0x61, 0x32, 0xb0, 0x7c, 0x10, 0xb6, 0x07, 0x2f, 0x10, 0xb8, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x0f, 0x42, 0x32, 0xb0, 0x7d, 0x10, 0xbe, 0x6c, 0x78, 0xe2, 0x7d, 0x83, 0xf7, 0x78, 0xdd, 0x6d, 0xb0, 0x5e, 0xa5, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x3e, 0x08, 0xe1, 0xc0, 0xf6, 0x41, 0x58, 0x1c, 0x3c, 0x72, 0xec, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x0f, 0xc2, 0x64, 0x60, 0xfb, 0x20, 0x6c, 0x0f, 0x5e, 0x20, 0x70, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x1f, 0x84, 0x64, 0x60, 0xfd, 0x20, 0xbc, 0xd9, 0xf0, 0xc4, 0xfb, 0x06, 0xef, 0xf2, 0xa0, 0xdc, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x7e, 0x10, 0xa2, 0x81, 0xf5, 0x83, 0x90, 0x1f, 0xbc, 0x79, 0x84, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x3f, 0x08, 0x83, 0x81, 0xf5, 0x83, 0xb0, 0xda, 0xf0, 0xe7, 0xd2, 0x86, 0xef, 0xdb, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xfd, 0x20, 0x2c, 0x0e, 0x1e, 0xfe, 0x4a, 0x79, 0xf0, 0x46, 0x15, 0xca, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfd, 0x83, 0x90, 0x0c, 0xec, 0x1f, 0x84, 0x3b, 0x1b, 0x9e, 0x78, 0xdf, 0xe0, 0x69, 0x2e, 0x94, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x0f, 0x42, 0x34, 0xb0, 0x7f, 0x10, 0xf2, 0x83, 0x97, 0x05, 0x2c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xfb, 0x07, 0x61, 0x30, 0xb0, 0x7f, 0x10, 0x56, 0x1b, 0xfe, 0x5c, 0xda, 0xf0, 0x7d, 0xfb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x1f, 0x84, 0xc5, 0xc1, 0x2b, 0x79, 0x29, 0x0f, 0xde, 0xa8, 0x42, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x80, 0x10, 0x92, 0x81, 0x05, 0x84, 0x70, 0x6c, 0xc3, 0x13, 0xef, 0x1b, 0xbc, 0xad, 0x87, 0x72, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x02, 0x42, 0x88, 0x06, 0x16, 0x10, 0x42, 0x7e, 0xf0, 0x22, 0x22, 0xca, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x01, 0x21, 0x0c, 0x06, 0x16, 0x10, 0xc2, 0x6a, 0xc3, 0x9f, 0x4b, 0x1b, 0xbe, 0x6f, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x05, 0x84, 0xb0, 0x38, 0x78, 0x52, 0x32, 0xe5, 0xc1, 0x1b, 0x55, 0x28, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x05, 0x84, 0x30, 0x1b, 0x58, 0x40, 0x08, 0xdb, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x8a, 0x3c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x05, 0x84, 0xb0, 0x3b, 0x78, 0xd4, 0x33, 0xe5, 0xc1, 0xfb, 0x36, 0x44, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x05, 0x84, 0x30, 0x1e, 0x58, 0x40, 0x08, 0x0d, 0x1b, 0xfe, 0x5c, 0xda, 0x30, 0x9d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x80, 0x10, 0xd6, 0x07, 0x8f, 0xab, 0xa6, 0x3c, 0x58, 0x0e, 0x8b, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x81, 0x10, 0x92, 0x81, 0x0d, 0x84, 0x70, 0x6d, 0xc3, 0x13, 0xef, 0x1b, 0xbc, 0x50, 0x8b, 0x72, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x06, 0x42, 0x88, 0x06, 0x36, 0x10, 0x42, 0x7e, 0xf0, 0xce, 0x30, 0xca, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x03, 0x21, 0x0c, 0x06, 0x36, 0x10, 0xc2, 0x6a, 0xc3, 0x9f, 0x4b, 0x1b, 0xbe, 0x6f, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0d, 0x84, 0xb0, 0x38, 0x78, 0x82, 0x38, 0xe5, 0xc1, 0x1b, 0x55, 0x28, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0d, 0x84, 0x30, 0x1b, 0xd8, 0x40, 0x08, 0xdb, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x8a, 0x3c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0d, 0x84, 0xb0, 0x3b, 0x78, 0x04, 0x3a, 0xe5, 0xc1, 0xfb, 0x36, 0x44, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0d, 0x84, 0x30, 0x1e, 0xd8, 0x40, 0x08, 0x0d, 0x1b, 0xfe, 0x5c, 0xda, 0x30, 0x9d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x81, 0x10, 0xd6, 0x07, 0x8f, 0x71, 0xa7, 0x3c, 0x58, 0x0e, 0x8b, 0x5d, 0x87, 0x53, 0xac, 0xc3, 0x29, 0x36, 0x0b, 0x9c, 0xfb, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x01, 0xcf, 0x18, 0xdb, 0xdb, 0xd8, 0xda, 0x00, 0xf0, 0x02, 0xdc, 0x1b, 0x5b, 0x5e, 0xdb, 0x9b, 0x1c, 0x1c, 0x5a, 0xda, 0x18, 0xc8, 0x58, 0xd8, 0x18, 0x5a, 0x19, 0x08, 0x5d, 0x1e, 0x5c, 0x19, 0x88, 0xd9, 0x9b, 0x1c, 0x48, 0xdd, 0x5c, 0x19, 0xc8, 0x5d, 0x1a, 0x1d, 0x1a, 0x08, 0x1d, 0x5a, 0x19, 0xc8, 0x18, 0xdb, 0xdb, 0xd8, 0x1a, 0x88, 0x5c, 0x19, 0x1c, 0x5b, 0xd8, 0x58, 0x59, 0x5b, 0x99, 0x1b, 0x1d, 0x48, 0x18, 0xdb, 0xd9, 0x9b, 0x5c, 0x1a, 0x1d, 0x5a, 0xdb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x1b, 0x3c, 0x31, 0x94, 0x63, 0x50, 0x13, 0xb7, 0xe1, 0xe1, 0xfc, 0x05, 0xf8, 0xd7, 0xca, 0xf2, 0x5a, 0xe8, 0xf2, 0xe0, 0xca, 0x01, 0x7e, 0xbb, 0x30, 0xb6, 0x16, 0xba, 0x3c, 0xb8, 0xb2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x36, 0x78, 0xa7, 0x0d, 0xc7, 0xc1, 0x73, 0x00, 0x2a, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1a, 0xe2, 0x07, 0x0d, 0xa1, 0x75, 0xc3, 0x9f, 0x4b, 0x03, 0x7c, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x1b, 0xbc, 0x62, 0x88, 0xe3, 0xe0, 0xc9, 0x07, 0x95, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x68, 0x08, 0xf9, 0xc1, 0xfb, 0x86, 0x38, 0x0e, 0x4a, 0xc4, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0xe0, 0x69, 0x39, 0x1c, 0x83, 0x86, 0xb0, 0xdd, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0x22, 0xa0, 0xb2, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x83, 0x17, 0x35, 0x71, 0x0c, 0x1a, 0x42, 0xe9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x83, 0x07, 0x49, 0x71, 0x0c, 0x1a, 0x42, 0xd3, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x9b, 0x5c, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc1, 0x8b, 0xaf, 0x38, 0x0e, 0xde, 0x6a, 0x51, 0xb9, 0xe1, 0xdf, 0xf9, 0x0d, 0x1e, 0x24, 0x50, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x68, 0x08, 0x55, 0x83, 0x86, 0xd0, 0xb9, 0xe1, 0xcf, 0xa5, 0x01, 0x1e, 0x33, 0xb9, 0xb2, 0x39, 0x74, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0d, 0xa1, 0xf0, 0xe0, 0x05, 0x1d, 0x95, 0x07, 0x65, 0x96, 0x6e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x8a, 0xf8, 0x41, 0x45, 0xd8, 0x6e, 0xf8, 0x73, 0x69, 0x80, 0x27, 0xae, 0xae, 0xac, 0xae, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x41, 0x45, 0x48, 0x0f, 0x1e, 0x30, 0x52, 0xb9, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x8a, 0x10, 0x0f, 0x2a, 0xc2, 0xe2, 0xe0, 0xe1, 0x07, 0x8c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xa0, 0x22, 0x4c, 0x06, 0x15, 0x61, 0x7a, 0xf0, 0x98, 0x88, 0xca, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x41, 0x47, 0xfc, 0xa0, 0x23, 0xe4, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xe7, 0xd2, 0xf4, 0xca, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x36, 0x78, 0xe2, 0x08, 0xc7, 0xc1, 0x3b, 0x5c, 0x2a, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x50, 0x12, 0x3f, 0x28, 0x09, 0xb3, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0xb7, 0x85, 0xe1, 0xb5, 0xcc, 0xa5, 0xe9, 0x95, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x6c, 0xf0, 0x42, 0xf7, 0x8d, 0x83, 0xd7, 0xcf, 0x54, 0x6e, 0x10, 0x40, 0x67, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x6c, 0xf0, 0xb2, 0xfa, 0x8d, 0x83, 0xd7, 0xcf, 0x54, 0x6e, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0x12, 0x00, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xa0, 0x25, 0x7e, 0xd0, 0x12, 0xf2, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x2e, 0xec, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2d, 0x21, 0x3d, 0x78, 0x6e, 0x4f, 0xe5, 0x06, 0x01, 0x74, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x06, 0xef, 0xf3, 0xe4, 0x38, 0x78, 0x6e, 0x4f, 0xe5, 0xe1, 0x31, 0x99, 0x56, 0xa0, 0xfc, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x03, 0xfe, 0x1c, 0x5d, 0x1e, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x20, 0x64, 0x03, 0x95, 0x20, 0x1c, 0xd9, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x6b, 0x8e, 0x2e, 0x8f, 0xad, 0x8c, 0x0c, 0x84, 0xae, 0x0c, 0x8f, 0x6e, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x41, 0x08, 0x07, 0x2a, 0x41, 0x18, 0x1c, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x09, 0xc2, 0x62, 0xa0, 0x12, 0x84, 0xa2, 0x0d, 0x1f, 0xcc, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x20, 0x8c, 0x06, 0x2a, 0x41, 0x98, 0x1d, 0x9c, 0x67, 0x47, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x12, 0x84, 0xdd, 0x40, 0x25, 0x08, 0x3d, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x09, 0xc2, 0x70, 0xa0, 0x12, 0x84, 0xf1, 0x41, 0xe9, 0x4d, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0x82, 0xb0, 0x1e, 0xa8, 0x04, 0xa1, 0x61, 0xc3, 0xbf, 0xf3, 0x0b, 0xf8, 0x73, 0x74, 0x79, 0x6c, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x20, 0x54, 0x0c, 0x54, 0x82, 0x50, 0xb3, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0x6b, 0x51, 0x65, 0xd5, 0x2c, 0xb8, 0xbe, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0x34, 0xc0, 0x83, 0x2e, 0x6c, 0x6e, 0xad, 0x25, 0x4c, 0xce, 0xee, 0xed, 0xe0, 0xb9, 0xe4, 0x76, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xcf, 0x0d, 0xab, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x3e, 0x07, 0xda, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xe2, 0x08, 0x3a, 0x78, 0x0a, 0x08, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x4d, 0x41, 0x07, 0x0f, 0x61, 0x41, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x88, 0x2b, 0xe8, 0xe0, 0x25, 0x26, 0x88, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x22, 0x06, 0x1d, 0xbc, 0x42, 0x06, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3a, 0xd7, 0xa0, 0x83, 0x67, 0xe0, 0x20, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x62, 0x1c, 0x74, 0xf0, 0x0e, 0x1f, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0xa0, 0x83, 0x0e, 0x1e, 0x41, 0x84, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb5, 0x7b, 0xd0, 0xc1, 0x2b, 0x94, 0x10, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xd9, 0x0f, 0x3a, 0x78, 0x04, 0x14, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0xfe, 0x41, 0x07, 0x6f, 0xb0, 0x42, 0xec, 0x70, 0x8a, 0x2d, 0x70, 0xbe, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x3c, 0x63, 0xf0, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb0, 0x79, 0x6c, 0xc3, 0x07, 0xf3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xb1, 0x8f, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x43, 0x57, 0x86, 0x47, 0x07, 0x32, 0xf6, 0xc6, 0xf6, 0x26, 0xb7, 0x41, 0xb0, 0x99, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xfa, 0x3e, 0x76, 0xb0, 0x30, 0xb9, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xba, 0xf9, 0xb1, 0x83, 0x27, 0x1f, 0xc4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x88, 0x3f, 0x76, 0xb0, 0x52, 0x1c, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2a, 0xfe, 0xb1, 0x83, 0xb5, 0x33, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x02, 0x90, 0x1d, 0x2c, 0xca, 0x73, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb6, 0x80, 0xec, 0xe0, 0xf1, 0xd4, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x26, 0x90, 0x1d, 0xac, 0xd1, 0x61, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd3, 0x81, 0xec, 0x60, 0x69, 0xb5, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb1, 0x11, 0x64, 0x1b, 0x32, 0xe0, 0x07, 0xc3, 0x6e, 0xb7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4e, 0xe8, 0xb1, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0x65, 0x68, 0xc4, 0xd2, 0xe8, 0x40, 0xe8, 0xe4, 0xea, 0xca, 0x40, 0xc6, 0xde, 0xd8, 0xde, 0xe4, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x69, 0xf5, 0xd8, 0x86, 0x3f, 0x97, 0x06, 0x97, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0xa6, 0xc7, 0x36, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x07, 0x5e, 0x1d, 0x1e, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa8, 0xf7, 0xd8, 0x86, 0x3f, 0x97, 0x06, 0x3f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0xb8, 0xc7, 0x0e, 0x9e, 0x68, 0x59, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc9, 0xf9, 0xd8, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0xc9, 0xc7, 0x0e, 0x9e, 0x68, 0x59, 0xd9, 0x0a, 0xea, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x9e, 0x99, 0x6c, 0xd7, 0x00, 0x5e, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x71, 0x79, 0x6f, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0xbe, 0xd8, 0xdb, 0x1d, 0xbb, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x56, 0xd2, 0xca, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5c, 0xc0, 0xb7, 0x0d, 0x0e, 0x10, 0xa2, 0x03, 0x78, 0xcd, 0xd1, 0xc9, 0x85, 0xb9, 0x91, 0xb5, 0x88, 0xbd, 0xdd, 0xb1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x41, 0x7e, 0x6f, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xbb, 0xf0, 0x6d, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x5b, 0x9d, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x34, 0xf8, 0x76, 0xd0, 0xb6, 0xf5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x21, 0x8d, 0x6f, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xd5, 0xe1, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x46, 0xc5, 0xb7, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xa3, 0x7c, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x4b, 0x0c, 0xeb, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0x23, 0xdf, 0x36, 0xfc, 0x3b, 0xbf, 0xc1, 0x02, 0xc3, 0xfa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xe2, 0x7c, 0xdb, 0xf0, 0xe7, 0xd2, 0x80, 0xd7, 0xf6, 0xd6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x66, 0xbe, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x7f, 0xbe, 0x1d, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x90, 0xbe, 0x1d, 0x3c, 0xcd, 0xb6, 0xb2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x58, 0xdf, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xdd, 0x95, 0xe1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x91, 0xa9, 0x6f, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x07, 0xaa, 0x04, 0x75, 0xf0, 0x9a, 0xf9, 0xba, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x6a, 0xdf, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xcd, 0xd5, 0xc1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xcd, 0xb2, 0x6f, 0x1b, 0xfe, 0x9d, 0x5f, 0xc0, 0x17, 0x4b, 0xa3, 0xa3, 0x3b, 0x78, 0xcd, 0x7c, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xad, 0xbe, 0x6f, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xca, 0xdc, 0xf2, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0c, 0xde, 0xb7, 0x83, 0xe7, 0xde, 0x83, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x83, 0xfc, 0xb6, 0xe1, 0xcf, 0xa5, 0x0d, 0x12, 0x08, 0x37, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x8b, 0xdf, 0x0e, 0x8e, 0x7c, 0xad, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x47, 0xbf, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x13, 0xcb, 0x5b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x9e, 0xdf, 0x0e, 0x9e, 0x6a, 0x14, 0xd2, 0x6a, 0xb0, 0xc4, 0xb0, 0x7e, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x60, 0x89, 0x61, 0xfd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x08, 0xf6, 0xdb, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0x83, 0xa7, 0x6f, 0xbf, 0xad, 0x06, 0x2f, 0x96, 0x17, 0xd9, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xb1, 0xbc, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2b, 0xf8, 0xdb, 0x86, 0x7f, 0xe7, 0x37, 0x78, 0x29, 0xda, 0xc8, 0xc1, 0x0b, 0xd4, 0x14, 0x67, 0x01, 0xbc, 0xe6, 0xe8, 0xe4, 0xc2, 0xdc, 0xc8, 0x5a, 0xcc, 0xc2, 0xd2, 0xd8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x1e, 0xf3, 0xb7, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x7b, 0x0c, 0x21, 0x19, 0xd8, 0x63, 0x08, 0xf9, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x94, 0x3e, 0xde, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x31, 0x84, 0xe8, 0xe0, 0xf1, 0xe1, 0x95, 0x1b, 0xfe, 0x9d, 0xdf, 0xe0, 0xf5, 0xff, 0x78, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xa5, 0xbf, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x64, 0x08, 0xc9, 0xc0, 0x22, 0x43, 0x58, 0x6d, 0xf8, 0x77, 0x7e, 0x01, 0xfc, 0xe6, 0xe8, 0xe4, 0xc2, 0xdc, 0xc8, 0x5a, 0xd2, 0xdc, 0xe0, 0xea, 0xe8, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x68, 0x7f, 0xdb, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0xef, 0x6f, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x61, 0xf2, 0x6f, 0x1b, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0xc1, 0x9a, 0xd0, 0xda, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0xeb, 0xdf, 0x36, 0xbc, 0xad, 0x73, 0xf0, 0xfa, 0x7f, 0xbc, 0x0e, 0xa7, 0x58, 0x0b, 0xe0, 0x3d, 0x47, 0x27, 0x17, 0xe6, 0x46, 0xd6, 0x62, 0xf6, 0x26, 0xd7, 0xd6, 0x22, 0x17, 0x76, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xe3, 0xbf, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x0b, 0x0c, 0x21, 0x19, 0x58, 0x60, 0x08, 0xf9, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x81, 0x21, 0x64, 0x07, 0x8f, 0xd5, 0xaf, 0x3c, 0x38, 0xb6, 0x0e, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xf1, 0xbf, 0x6d, 0xf8, 0xa8, 0x7d, 0x83, 0x03, 0x84, 0xe8, 0x06, 0xaf, 0xa9, 0xaf, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xfd, 0x7f, 0xdb, 0x20, 0x9c, 0xc6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x13, 0x80, 0x3b, 0x78, 0xab, 0x7a, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa0, 0x01, 0xdc, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x84, 0x02, 0xdc, 0x86, 0xb7, 0x75, 0x06, 0xe0, 0x61, 0x8e, 0x4e, 0x2e, 0xcc, 0x8d, 0xac, 0xe5, 0xad, 0x8e, 0x0e, 0xae, 0x8e, 0xae, 0x45, 0x2e, 0xec, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x56, 0x07, 0xb8, 0x83, 0x43, 0xa7, 0x65, 0xab, 0xc1, 0xa3, 0xf4, 0xf1, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0xa5, 0x8f, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x45, 0x01, 0xb7, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x7e, 0x01, 0x77, 0x50, 0x7a, 0xd3, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xc3, 0x01, 0x77, 0xb0, 0x5e, 0xeb, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa6, 0x11, 0xb8, 0x0d, 0x0e, 0x10, 0xa2, 0x1b, 0x9c, 0x28, 0x53, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x41, 0xe0, 0x0e, 0x1a, 0x14, 0x0f, 0x6c, 0x35, 0x78, 0xca, 0x7a, 0xe5, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x53, 0xd6, 0x2b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x59, 0xe0, 0x36, 0x38, 0x40, 0x88, 0x6e, 0xf0, 0x94, 0xf5, 0xca, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x08, 0x15, 0xb8, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x1a, 0x03, 0xb7, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0x4a, 0x5a, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xf2, 0x02, 0xb7, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0x2b, 0x69, 0x65, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x8d, 0x03, 0xb7, 0xe1, 0xcf, 0xa5, 0x81, 0x4f, 0x73, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x6c, 0xe0, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x78, 0xe0, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x81, 0xe0, 0x36, 0xfc, 0x3b, 0xbf, 0x00, 0x4f, 0x9a, 0x1b, 0x5c, 0x1d, 0x5d, 0x75, 0x38, 0xc5, 0xd6, 0xe0, 0xd1, 0x07, 0x96, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x15, 0x45, 0x70, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xca, 0x42, 0x48, 0x06, 0x56, 0x16, 0x42, 0xbe, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x59, 0x08, 0xd9, 0xc1, 0x13, 0x5a, 0x2c, 0x0f, 0x8e, 0xad, 0x03, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0x48, 0x70, 0x1b, 0x3e, 0x6a, 0xdf, 0xe0, 0x00, 0x21, 0xba, 0xc1, 0xa3, 0x0f, 0x2c, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x96, 0xe0, 0x36, 0x08, 0x35, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x9b, 0xe0, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0f, 0x14, 0xdc, 0x41, 0x41, 0x91, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc7, 0x14, 0xdc, 0x41, 0xcb, 0x8b, 0xa0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x58, 0xc1, 0x6d, 0x50, 0x08, 0xa6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x63, 0xc1, 0x1d, 0x1c, 0x3a, 0x2d, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xe2, 0x82, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0x62, 0x70, 0x1b, 0xfe, 0x5c, 0x1a, 0xe0, 0x19, 0x0b, 0x93, 0x23, 0x9b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0xbf, 0xe0, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0xcb, 0xe0, 0x0e, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x02, 0x35, 0xb8, 0x83, 0xc7, 0xa0, 0x8d, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x86, 0x1c, 0xdc, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x3f, 0x5c, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xf8, 0x06, 0xb7, 0x41, 0xd0, 0xfe, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x56, 0x07, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0xf0, 0xe0, 0x0e, 0x16, 0xd2, 0x84, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xd2, 0x07, 0x77, 0x10, 0x82, 0x0f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x1a, 0x08, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x08, 0xe1, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0x50, 0xde, 0xc7, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x9d, 0x08, 0x77, 0x10, 0x82, 0x0f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xe8, 0x08, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x22, 0xe1, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x4a, 0x46, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0x32, 0xe1, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xcf, 0x95, 0xb1, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb1, 0x96, 0x70, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe1, 0x9c, 0x70, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0x35, 0xf5, 0x95, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x12, 0x0a, 0x77, 0x70, 0xe8, 0xb4, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x4c, 0xe1, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2a, 0x2a, 0xdc, 0x86, 0x0c, 0xf8, 0xc1, 0x63, 0xe3, 0x2b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x86, 0x85, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x4d, 0x98, 0x8f, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xb8, 0xc2, 0x1d, 0xbc, 0xb8, 0xbc, 0xb2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0x6a, 0xe1, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe9, 0x2d, 0xdc, 0xc1, 0x2a, 0x94, 0xf0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x7e, 0xe1, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x89, 0xd6, 0x63, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x99, 0x17, 0xee, 0xe0, 0xd0, 0x69, 0x59, 0x1d, 0x4e, 0xb1, 0x35, 0x78, 0x78, 0xb1, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf3, 0x30, 0xdc, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xd4, 0x10, 0x92, 0x81, 0xa5, 0x86, 0x90, 0x6f, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x1a, 0x42, 0x76, 0xf0, 0xa0, 0x39, 0xcb, 0x83, 0x63, 0xeb, 0xc0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc5, 0x31, 0xdc, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x06, 0x6b, 0x2e, 0xc2, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x93, 0xe1, 0x36, 0x7c, 0xd4, 0xbe, 0xc1, 0x01, 0x42, 0x74, 0x83, 0x35, 0x17, 0xe1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0xcc, 0x70, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa1, 0xcf, 0x70, 0x07, 0xef, 0x3a, 0xb0, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x88, 0x1a, 0xee, 0xe0, 0xd0, 0x69, 0xd9, 0x6a, 0xf0, 0x96, 0x5f, 0xbb, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa6, 0x6d, 0xb8, 0x0d, 0x1f, 0xb5, 0x6f, 0x70, 0x80, 0x10, 0xdd, 0xe0, 0x2d, 0xbf, 0x76, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc5, 0xde, 0x70, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x61, 0xe2, 0x70, 0x07, 0x2f, 0xed, 0xb2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd4, 0x1c, 0xee, 0xe0, 0xd0, 0x69, 0xd9, 0x0a, 0xf8, 0x70, 0x75, 0x72, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb4, 0x3a, 0xdc, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x6c, 0x87, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x47, 0x4a, 0xcb, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x14, 0x78, 0xb8, 0x83, 0x43, 0xa7, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xce, 0x3c, 0xdc, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x05, 0x87, 0x90, 0x0d, 0x2c, 0x38, 0x84, 0xfc, 0xe0, 0xb1, 0xbe, 0x76, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0xf5, 0x70, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x1c, 0x42, 0x36, 0xb0, 0xe1, 0x10, 0x76, 0x07, 0x6f, 0x55, 0xaf, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xc9, 0x87, 0xdb, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0xfb, 0x70, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x95, 0xfe, 0x70, 0x07, 0x2d, 0x2f, 0x82, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x1a, 0x10, 0x77, 0x70, 0xd2, 0xb5, 0xec, 0x70, 0x8a, 0xb5, 0x06, 0x67, 0x03, 0x82, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8e, 0x82, 0xb8, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xcf, 0x21, 0x64, 0x03, 0x7b, 0x0e, 0x61, 0xb1, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x73, 0x08, 0xe9, 0xc1, 0x4b, 0x46, 0x2d, 0x0f, 0x8e, 0xad, 0x03, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x71, 0x08, 0x71, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x66, 0x21, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x37, 0xc4, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x6b, 0x6b, 0x11, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x20, 0xe2, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x26, 0xe2, 0x0e, 0x5e, 0xda, 0x65, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xec, 0x45, 0xdc, 0xc1, 0x3b, 0x99, 0x47, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x64, 0x23, 0x6e, 0xc3, 0x9f, 0x4b, 0x1b, 0x8c, 0x55, 0x81, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe0, 0x8e, 0xb8, 0x0d, 0xc2, 0x69, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x48, 0x90, 0xb8, 0x83, 0x77, 0x32, 0x8f, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x8e, 0xc4, 0x1d, 0x3c, 0xd6, 0xd7, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe4, 0x93, 0xb8, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x9b, 0x0e, 0x21, 0x1b, 0xd8, 0x74, 0x08, 0xf9, 0xc1, 0x63, 0x7d, 0xed, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0x54, 0xe2, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x3a, 0x84, 0x6c, 0x60, 0xd5, 0x21, 0xac, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x8b, 0x4f, 0x2c, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xd5, 0x21, 0x2c, 0x0e, 0x9e, 0x03, 0x6c, 0x79, 0xf0, 0x56, 0xf5, 0xca, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xdc, 0x96, 0xb8, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0x3e, 0xc0, 0x23, 0xd6, 0x22, 0x57, 0x36, 0x6f, 0x50, 0x42, 0xc7, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xbb, 0x0e, 0x61, 0x31, 0xb0, 0xeb, 0x10, 0x6a, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xd7, 0x21, 0x4c, 0x06, 0x76, 0x1d, 0x42, 0xc7, 0xc1, 0xbb, 0x0e, 0x2c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5d, 0x87, 0x50, 0x32, 0xb0, 0xeb, 0x10, 0x5a, 0x0e, 0xde, 0xc9, 0x3c, 0xd2, 0x41, 0x98, 0x8e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x07, 0x13, 0xb7, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x66, 0xe2, 0x36, 0xbc, 0xad, 0x33, 0xe0, 0xb5, 0xb5, 0x88, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x74, 0x13, 0xb7, 0xe1, 0x6d, 0x9d, 0x83, 0xf7, 0x9e, 0x58, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xa7, 0x13, 0xb7, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xdb, 0x21, 0x64, 0x03, 0xdb, 0x0e, 0x61, 0x71, 0xd0, 0x36, 0x99, 0xf6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3d, 0x4f, 0xdc, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x81, 0x3f, 0x71, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0x99, 0x40, 0x96, 0x1b, 0xbc, 0xd7, 0xd8, 0xb2, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x42, 0xa1, 0xb8, 0x0d, 0x82, 0xf4, 0x74, 0x8d, 0x43, 0x1b, 0xac, 0x1f, 0xae, 0x3d, 0x78, 0xd1, 0xb7, 0xe5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc2, 0x43, 0x48, 0x06, 0x16, 0x1e, 0x42, 0x7c, 0xb0, 0x90, 0x26, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb9, 0x28, 0x6e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x21, 0xc5, 0x1d, 0x34, 0xb3, 0xa7, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe1, 0x52, 0xdc, 0x41, 0x41, 0x91, 0xd9, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc6, 0x43, 0x48, 0x06, 0x36, 0x1e, 0x42, 0x7c, 0xf0, 0xd4, 0x28, 0xcb, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe4, 0xa7, 0xb8, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x26, 0x15, 0xb7, 0xe1, 0x8d, 0xbb, 0x83, 0x27, 0x48, 0x59, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x58, 0x15, 0x77, 0x50, 0x50, 0x64, 0xb6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xf2, 0x10, 0x92, 0x81, 0x95, 0x87, 0x10, 0x1f, 0x3c, 0xe9, 0xca, 0x72, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x3a, 0x2b, 0x6e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x71, 0xc5, 0x6d, 0x78, 0xe3, 0xee, 0xe0, 0xa9, 0x57, 0x96, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x7e, 0xc5, 0x6d, 0xb8, 0xa4, 0x36, 0x68, 0xad, 0xd6, 0x6a, 0x0d, 0x5e, 0x45, 0x6d, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x2a, 0x16, 0xb7, 0xe1, 0x6d, 0x9d, 0x0d, 0xde, 0xa3, 0x65, 0x79, 0xf0, 0xe2, 0x70, 0xcb, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x79, 0x08, 0xc9, 0xc0, 0xce, 0x43, 0x88, 0x0f, 0xde, 0x31, 0x66, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x75, 0x16, 0xb7, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0xd4, 0xe2, 0x0e, 0x5e, 0x14, 0x5f, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x49, 0x5b, 0xdc, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xc2, 0x7c, 0xf4, 0xe0, 0xc5, 0xe1, 0x96, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x3d, 0x84, 0x64, 0x60, 0xe9, 0x21, 0xc4, 0x07, 0xab, 0x50, 0xc2, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0xe3, 0xe2, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x28, 0x5d, 0xdc, 0xc1, 0xdb, 0xf0, 0x2d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xbe, 0x8b, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x9d, 0x7a, 0x71, 0x07, 0xe7, 0xf1, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0xfd, 0xe2, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0x89, 0xd6, 0xe3, 0xe0, 0xc5, 0xe1, 0x96, 0xd5, 0x2c, 0xe0, 0x97, 0xd9, 0x85, 0xb1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0x82, 0x71, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0x78, 0x95, 0xd9, 0x85, 0xb1, 0xb5, 0xc8, 0x95, 0xcd, 0xd5, 0xb1, 0xd1, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x6f, 0xb3, 0xb8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x2c, 0x8c, 0xdb, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xaa, 0x8c, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf1, 0x97, 0x71, 0x07, 0xcf, 0x6a, 0xf0, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x7b, 0x33, 0xee, 0x20, 0x04, 0x1f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x04, 0x34, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x8b, 0xc6, 0x1d, 0xbc, 0x63, 0xcc, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3c, 0xd5, 0xb8, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x84, 0xf9, 0xe8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf7, 0x69, 0xdc, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x83, 0x6b, 0xdc, 0x41, 0xe9, 0x4d, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb5, 0x6c, 0xdc, 0xc1, 0x7a, 0xad, 0xe7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x6e, 0xe3, 0x0e, 0x1a, 0x14, 0x0f, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x10, 0xe3, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb2, 0x62, 0xdc, 0xc1, 0x2a, 0x94, 0xf0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x1b, 0xe3, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x89, 0xd6, 0x63, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x0f, 0x32, 0xee, 0xe0, 0xd0, 0x69, 0x59, 0x2b, 0x80, 0x47, 0x99, 0x5d, 0x18, 0x5b, 0x8b, 0xd9, 0x9b, 0x5c, 0xbb, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x8e, 0x99, 0xcb, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x50, 0xe1, 0xb8, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x7c, 0x1c, 0xb7, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0xf2, 0x6b, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x53, 0x1c, 0x77, 0xf0, 0x58, 0x5f, 0xbb, 0x0e, 0xa7, 0xd8, 0x1a, 0xb4, 0xb9, 0x43, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xc2, 0x1c, 0xb7, 0x41, 0x69, 0x6f, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xbb, 0x73, 0xdc, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x26, 0x90, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x60, 0x74, 0xdc, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x20, 0x75, 0xdc, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x8c, 0x1d, 0x77, 0xf0, 0x18, 0xb4, 0x91, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0xb9, 0xe3, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xdc, 0x77, 0xdc, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x10, 0x8f, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0xef, 0x98, 0xb9, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x25, 0x8f, 0xdb, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0x63, 0xe6, 0xb2, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x41, 0x8f, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x4f, 0x59, 0xaf, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x55, 0x8f, 0x3b, 0x78, 0xab, 0x7a, 0x65, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0xee, 0x71, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x24, 0x42, 0x3a, 0xb0, 0x24, 0x11, 0x4a, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x49, 0x84, 0x78, 0x60, 0x49, 0x22, 0x14, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x92, 0x08, 0xf9, 0xc0, 0x92, 0x44, 0x98, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x92, 0x44, 0x18, 0x0c, 0x2c, 0x49, 0x84, 0xd1, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x4b, 0x12, 0x61, 0x35, 0xb0, 0x24, 0x11, 0x96, 0x07, 0x8f, 0x41, 0x1b, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x92, 0x08, 0xdb, 0x81, 0x25, 0x89, 0xd0, 0xb3, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0x66, 0x71, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x4b, 0x12, 0x61, 0x7c, 0xf0, 0xd0, 0xb0, 0xcb, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0xdb, 0x2c, 0x2e, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x49, 0x22, 0x34, 0x0d, 0x2c, 0x49, 0x84, 0xce, 0x0d, 0x02, 0xe8, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x24, 0x42, 0xd5, 0xc1, 0xdb, 0xd0, 0x2e, 0x37, 0xbc, 0xad, 0x73, 0xf0, 0xe2, 0xa5, 0xcb, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0xe1, 0xe3, 0x36, 0x58, 0xe9, 0xe2, 0xb4, 0x00, 0x1e, 0x74, 0x61, 0x6b, 0x65, 0x2d, 0x6c, 0x6f, 0x6f, 0x70, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x96, 0x44, 0x18, 0x0e, 0x6c, 0x49, 0x84, 0xe5, 0x41, 0x00, 0xb2, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xcf, 0xc7, 0x6d, 0x50, 0xf4, 0xe9, 0x2e, 0xf0, 0x69, 0xee, 0xc1, 0x43, 0xd6, 0x2b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xb8, 0x8f, 0xdb, 0xa0, 0x84, 0xc7, 0xdc, 0xe0, 0x55, 0x74, 0x97, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xe9, 0xc7, 0x1d, 0x14, 0x14, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x4d, 0xfd, 0x71, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x9f, 0xe6, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x01, 0x20, 0xb7, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0x57, 0xd1, 0x5d, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x0c, 0xc8, 0x6d, 0x50, 0xec, 0x68, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x5e, 0x20, 0xb7, 0x41, 0x31, 0x89, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x4a, 0x84, 0xc9, 0xc0, 0xa6, 0x44, 0x18, 0x6e, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0xe9, 0x07, 0x72, 0x1b, 0x87, 0x0e, 0x8a, 0xad, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x8e, 0xe4, 0x36, 0x38, 0x86, 0x1b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x28, 0xc9, 0x1d, 0x94, 0x4d, 0xef, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x0d, 0x0a, 0x72, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x33, 0xc8, 0x6d, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xab, 0x12, 0x61, 0x32, 0xb0, 0x2a, 0x11, 0x76, 0x07, 0x4f, 0xf2, 0x53, 0xdc, 0x38, 0xb4, 0xc1, 0xab, 0xd2, 0x14, 0x0f, 0x8a, 0xad, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0x82, 0xe4, 0x36, 0x38, 0x86, 0x1b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x10, 0xc9, 0x1d, 0x94, 0x4d, 0xef, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x10, 0x72, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6b, 0x42, 0x6e, 0x83, 0x62, 0x12, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x95, 0x08, 0x93, 0x81, 0x5d, 0x89, 0x30, 0xdf, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xbb, 0x2a, 0xe4, 0x06, 0x87, 0x37, 0x78, 0x5d, 0x58, 0xc8, 0xc1, 0xeb, 0x1d, 0x2f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xc2, 0x90, 0xdb, 0xe0, 0x18, 0x6e, 0xb0, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xb4, 0x21, 0x77, 0x50, 0x36, 0xbd, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x78, 0xc8, 0x6d, 0x50, 0x18, 0xaa, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x0b, 0x22, 0x77, 0x50, 0x50, 0x64, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x8e, 0xc8, 0x6d, 0xb0, 0xa8, 0x3c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x16, 0x13, 0xb9, 0x0d, 0x6f, 0xdc, 0x1d, 0xbc, 0x71, 0xf0, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xaa, 0x14, 0xb9, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x8a, 0x4a, 0x91, 0x83, 0x62, 0xeb, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x32, 0x16, 0xb9, 0x0d, 0x6f, 0xdc, 0x1d, 0x3c, 0xd5, 0x4f, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf2, 0x45, 0x6e, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xc9, 0xc8, 0x6d, 0x78, 0x5b, 0x67, 0x00, 0x4f, 0xbb, 0x30, 0xb6, 0x34, 0xb2, 0x30, 0xba, 0xb2, 0x96, 0xb6, 0x30, 0xb9, 0xb5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x6d, 0xe4, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x3c, 0x78, 0x7c, 0xf0, 0x34, 0xcd, 0xcb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x74, 0xe4, 0x36, 0xbc, 0xad, 0x73, 0xf0, 0x14, 0xcd, 0xcb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x7c, 0xe4, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0x5b, 0x49, 0x2b, 0x0f, 0x1e, 0xb2, 0x5e, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x44, 0x93, 0xdc, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0xdf, 0x60, 0xcd, 0x45, 0xf8, 0x06, 0x25, 0x74, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x32, 0x11, 0xe2, 0x81, 0x95, 0x89, 0x30, 0x3a, 0x68, 0x9b, 0x4c, 0xfb, 0x20, 0x4c, 0xc7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x7e, 0x92, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0x52, 0x72, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0x2d, 0xbf, 0x76, 0x07, 0x2f, 0x5e, 0xba, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd8, 0x4a, 0x6e, 0xc3, 0xdb, 0x3a, 0x07, 0x0f, 0x59, 0xaf, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x3d, 0x4b, 0x6e, 0x83, 0xa2, 0x4f, 0x77, 0x0d, 0x9e, 0x09, 0x64, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0x5d, 0x72, 0x1b, 0x14, 0x9d, 0xc6, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x7f, 0xc9, 0x1d, 0x1c, 0xb2, 0x16, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x26, 0x93, 0xdb, 0xf0, 0xb6, 0xce, 0xc1, 0x43, 0x8b, 0x2f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0xd0, 0xe4, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0x33, 0x81, 0x2c, 0x0f, 0x1a, 0x2e, 0xd3, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x5d, 0x93, 0xdb, 0x20, 0x48, 0x4f, 0xd7, 0x38, 0xb4, 0xc1, 0xfa, 0xe1, 0xda, 0x83, 0x86, 0xcb, 0xb4, 0x57, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x27, 0x42, 0x3a, 0xb0, 0x3d, 0x11, 0x26, 0x07, 0x0b, 0x69, 0xc2, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0xde, 0xe4, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x69, 0x9c, 0xdc, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xa2, 0x93, 0x3b, 0x78, 0xac, 0xf2, 0xe5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x77, 0x72, 0x1b, 0xde, 0xb8, 0x3b, 0x78, 0x6e, 0x83, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0x7a, 0x72, 0x07, 0x05, 0x45, 0x66, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xf5, 0xc9, 0x1d, 0x3c, 0x79, 0xed, 0xb2, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf5, 0x89, 0x90, 0x0e, 0xac, 0x4f, 0x84, 0xc9, 0xc1, 0x53, 0xa3, 0x2c, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x02, 0xe5, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xed, 0xa0, 0xdc, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x32, 0x94, 0x3b, 0x78, 0xac, 0xf2, 0xe5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x55, 0x89, 0x72, 0x07, 0x2f, 0xd1, 0xbe, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x8f, 0x51, 0xee, 0xa0, 0xa0, 0xc8, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb2, 0x47, 0xb9, 0x83, 0x27, 0xaf, 0x5d, 0xb6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x3f, 0x11, 0xd2, 0x81, 0xfd, 0x89, 0x30, 0x39, 0x78, 0xc7, 0x98, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc8, 0xa4, 0xdc, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xae, 0x94, 0xdb, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x98, 0x72, 0x07, 0x8f, 0x55, 0xbe, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x6c, 0x53, 0xee, 0xe0, 0x45, 0xf1, 0x95, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x7a, 0xca, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0x26, 0xcc, 0x47, 0x0f, 0x5e, 0x03, 0x7d, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa1, 0xa1, 0x72, 0x07, 0x4f, 0x5e, 0xbb, 0x6c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x81, 0x22, 0xa4, 0x03, 0x0b, 0x14, 0x61, 0x72, 0xb0, 0x0a, 0x25, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xab, 0x54, 0x6e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xa0, 0xca, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x52, 0x55, 0xb9, 0x83, 0xc7, 0x2a, 0x5f, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xda, 0x2a, 0x77, 0xd0, 0xf2, 0x22, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc1, 0xb0, 0x72, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0x44, 0xeb, 0x71, 0xf0, 0x1a, 0xe8, 0xcb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x9e, 0x95, 0x3b, 0x78, 0xf2, 0xda, 0x65, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x1b, 0x14, 0x21, 0x1d, 0xd8, 0xa0, 0x08, 0x93, 0x83, 0x27, 0x5d, 0x59, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xdf, 0xca, 0x6d, 0xb0, 0x0a, 0x49, 0x69, 0x83, 0xf7, 0xb9, 0x5d, 0xae, 0xc1, 0x63, 0x81, 0x2f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0x76, 0xe5, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0x7b, 0xb4, 0x2c, 0x0f, 0x5e, 0x03, 0x7d, 0xb9, 0x06, 0x0f, 0x59, 0xaf, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xf3, 0x95, 0xdb, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x05, 0xc1, 0x72, 0x07, 0x4f, 0xac, 0xbd, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x80, 0x58, 0xee, 0xa0, 0xa0, 0xc8, 0xac, 0x66, 0x0d, 0x1e, 0xdc, 0x7a, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x76, 0x2c, 0xb7, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x25, 0x22, 0xa4, 0x03, 0x2b, 0x11, 0x61, 0xbf, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x25, 0x22, 0xc4, 0x03, 0x2b, 0x11, 0x61, 0xb2, 0xe1, 0xcf, 0xa5, 0x81, 0x4f, 0x73, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x25, 0x22, 0x2c, 0x0e, 0x5e, 0xbc, 0x81, 0x79, 0x10, 0xa6, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4a, 0x44, 0xd8, 0x0c, 0xac, 0x44, 0x84, 0xe1, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x45, 0x9e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4a, 0x44, 0x18, 0x1d, 0xbc, 0x35, 0x04, 0xf3, 0xe0, 0x7d, 0x1b, 0x22, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4a, 0x44, 0x58, 0x0e, 0xac, 0x44, 0x84, 0xf9, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x2b, 0x69, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x44, 0x84, 0xe9, 0xc1, 0x9b, 0x4f, 0x30, 0x0f, 0x5e, 0xfd, 0x61, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc7, 0xb2, 0xdc, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9d, 0x88, 0x90, 0x0e, 0xec, 0x44, 0x84, 0xc5, 0xc1, 0x7b, 0x11, 0x48, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x9b, 0xe5, 0x36, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1e, 0xb4, 0xdc, 0x06, 0xab, 0x03, 0x96, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa5, 0x88, 0xb0, 0x18, 0x58, 0x8a, 0x08, 0xdb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x94, 0x28, 0xa3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x8a, 0x08, 0x93, 0x83, 0xc7, 0xd6, 0x60, 0x6e, 0xf8, 0x77, 0x7e, 0x83, 0x97, 0x82, 0xeb, 0x1d, 0x3c, 0x44, 0xbb, 0x6e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x52, 0x44, 0x58, 0x0f, 0x2c, 0x45, 0x84, 0x82, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0x2e, 0xf8, 0x31, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x8a, 0x08, 0x8b, 0x81, 0xad, 0x88, 0x70, 0x66, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x22, 0xc2, 0x66, 0x60, 0x2b, 0x22, 0xec, 0x0e, 0x96, 0xe4, 0xa6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x5b, 0x11, 0x61, 0x38, 0xb0, 0x15, 0x11, 0xa6, 0x07, 0xcb, 0xd7, 0x5e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xad, 0x88, 0xb0, 0x1d, 0xd8, 0x8a, 0x08, 0x1d, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xde, 0xea, 0xe4, 0x83, 0x27, 0x81, 0x58, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x45, 0x84, 0x9a, 0x81, 0xad, 0x88, 0x50, 0xb8, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x01, 0x4f, 0x2c, 0x6f, 0x3d, 0x78, 0x12, 0x88, 0xe5, 0x1a, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x22, 0x42, 0xe7, 0xc0, 0x56, 0x44, 0xe8, 0x3d, 0x58, 0x92, 0x9b, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x45, 0x84, 0xe2, 0x81, 0xad, 0x88, 0xd0, 0x7d, 0xb0, 0xc2, 0xc9, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x8a, 0x08, 0xe5, 0x03, 0x5b, 0x11, 0xe1, 0xc4, 0x86, 0xb7, 0x75, 0x36, 0x48, 0x20, 0xdc, 0x3c, 0x78, 0x12, 0x88, 0x65, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x56, 0x44, 0xf8, 0x31, 0xb0, 0x15, 0x11, 0xbe, 0x6c, 0x78, 0x5b, 0xe7, 0xe0, 0xf1, 0x1b, 0x22, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x7b, 0x11, 0x21, 0x39, 0x78, 0x24, 0xb2, 0xdc, 0x06, 0x05, 0x69, 0xec, 0x06, 0xc7, 0x0c, 0xcf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x2f, 0x22, 0x4c, 0x06, 0xf6, 0x22, 0x42, 0xd7, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbd, 0x88, 0xb0, 0x19, 0xd8, 0x8b, 0x08, 0xbb, 0x83, 0x26, 0x7f, 0xa4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbd, 0x88, 0x30, 0x1c, 0xd8, 0x8b, 0x08, 0x55, 0x1b, 0x9c, 0x07, 0x3b, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x2f, 0x22, 0x6c, 0x07, 0xf6, 0x22, 0x42, 0xd3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbd, 0x88, 0x30, 0x1e, 0xd8, 0x8b, 0x08, 0x2d, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0xcd, 0x5a, 0x4a, 0x07, 0x2f, 0x05, 0xd7, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x22, 0x42, 0xcd, 0xc0, 0x5e, 0x44, 0x28, 0x3a, 0x28, 0x9b, 0xde, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x16, 0x23, 0x42, 0x72, 0xf0, 0x48, 0x64, 0xb9, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x8b, 0x11, 0x21, 0x1d, 0x58, 0x8c, 0x08, 0xcb, 0x0d, 0x8a, 0x49, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x31, 0x22, 0x0c, 0x06, 0x16, 0x23, 0xc2, 0xe4, 0x20, 0x8c, 0x80, 0x0e, 0xd6, 0x06, 0x8f, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x9b, 0x11, 0x21, 0x1b, 0x58, 0x8d, 0x08, 0xf5, 0x1b, 0x2c, 0xa9, 0x5f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x23, 0x42, 0x3e, 0xb0, 0x19, 0x11, 0x0a, 0x36, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x00, 0xff, 0x39, 0xb8, 0x34, 0xb2, 0x32, 0xb9, 0x96, 0xb6, 0x30, 0xb9, 0xb5, 0x16, 0xb3, 0xb0, 0x34, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x23, 0x42, 0x76, 0xf0, 0xe8, 0x3e, 0xcc, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xab, 0x11, 0x21, 0x1c, 0x58, 0x8d, 0x08, 0x83, 0x83, 0x96, 0x93, 0xa4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd5, 0x88, 0xb0, 0x18, 0x58, 0x8d, 0x08, 0xbd, 0x1b, 0x9e, 0xb8, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd5, 0x88, 0x30, 0x3b, 0x78, 0xec, 0x22, 0xe6, 0x86, 0x67, 0xf1, 0x06, 0x9f, 0x07, 0x87, 0x07, 0x4f, 0x07, 0x27, 0x07, 0x2f, 0x07, 0x97, 0x07, 0xd5, 0x83, 0x82, 0xc1, 0xc3, 0xc1, 0xdb, 0xc1, 0xcb, 0xc1, 0xe7, 0x41, 0xc1, 0xe0, 0xf6, 0xe0, 0xe1, 0xe0, 0xec, 0xe0, 0xe5, 0xa0, 0x60, 0x70, 0x73, 0xf0, 0x70, 0xf0, 0x74, 0x70, 0x76, 0x50, 0xb0, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x8d, 0x08, 0x7d, 0x03, 0xab, 0x11, 0xa1, 0x75, 0x83, 0x15, 0x6a, 0x48, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x6a, 0x44, 0x28, 0x1c, 0x58, 0x8d, 0x08, 0xa5, 0x07, 0x6f, 0xe6, 0xc2, 0xac, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd5, 0x88, 0x50, 0x3c, 0xb0, 0x1a, 0x11, 0xda, 0x0f, 0x9a, 0x2c, 0x92, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x76, 0x23, 0x42, 0x72, 0xf0, 0x48, 0x64, 0xb9, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xbb, 0x11, 0x21, 0x1a, 0xd8, 0x8d, 0x08, 0xf1, 0xc1, 0x9b, 0xb9, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdd, 0x88, 0x90, 0x0f, 0xec, 0x46, 0x84, 0xd1, 0x41, 0x93, 0x45, 0x52, 0xad, 0x00, 0x1e, 0x66, 0x72, 0x6f, 0x6d, 0x2d, 0x66, 0x6f, 0x72, 0xed, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x41, 0x84, 0x64, 0x60, 0x0f, 0x22, 0xa4, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x20, 0x42, 0x3a, 0xb0, 0x05, 0x11, 0x26, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x2d, 0xbf, 0x76, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x05, 0x11, 0xe2, 0x83, 0x57, 0xb3, 0x62, 0x1e, 0x3c, 0xd6, 0xd7, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd6, 0x20, 0x42, 0x72, 0xf0, 0x0c, 0x55, 0xcc, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x6b, 0x10, 0x21, 0x1d, 0x58, 0x83, 0x08, 0xb3, 0x83, 0x47, 0x2d, 0x5d, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1e, 0x44, 0x48, 0x0e, 0x9e, 0xa1, 0x8a, 0xb9, 0xe1, 0x6d, 0x9d, 0x83, 0x97, 0xfc, 0xda, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0xb3, 0x06, 0x2f, 0x3e, 0xb1, 0xdc, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xf1, 0x89, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x22, 0xc4, 0x0d, 0x2c, 0x24, 0xc4, 0x6f, 0x70, 0x80, 0x10, 0xdd, 0xe0, 0xc5, 0x27, 0x96, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x8c, 0x10, 0x77, 0xf0, 0x96, 0x5f, 0xcc, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x46, 0x08, 0xc9, 0xc0, 0x32, 0x42, 0x98, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x46, 0x08, 0xd1, 0xc0, 0x32, 0x42, 0xc8, 0x37, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x1a, 0x54, 0x95, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x19, 0x21, 0x0c, 0x06, 0x96, 0x11, 0xc2, 0x6a, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x2e, 0x2c, 0x64, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x11, 0xc2, 0xe2, 0xe0, 0xa9, 0xcb, 0x98, 0x07, 0xef, 0x45, 0x20, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x46, 0x08, 0xc9, 0xc0, 0x36, 0x42, 0x68, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x8d, 0x10, 0xa2, 0x81, 0x6d, 0x84, 0x90, 0x6f, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x55, 0x69, 0x8a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x36, 0x42, 0x18, 0x0c, 0x6c, 0x23, 0x84, 0xd5, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x45, 0xa5, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x23, 0x84, 0xc5, 0xc1, 0x9b, 0xb0, 0x31, 0x0f, 0xde, 0x6d, 0x29, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x23, 0x84, 0xd9, 0xc0, 0x36, 0x42, 0x28, 0xd8, 0xf0, 0xe7, 0xd2, 0x06, 0x2f, 0xe4, 0xad, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6d, 0x84, 0xb0, 0x3b, 0x78, 0x9f, 0x37, 0xe6, 0xc1, 0xd3, 0x21, 0x0f, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd6, 0x11, 0x42, 0x32, 0xb0, 0x8e, 0x10, 0x8a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x23, 0x84, 0x68, 0x60, 0x1d, 0x21, 0x0c, 0x0e, 0xde, 0x32, 0x78, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x23, 0x84, 0xc5, 0xc0, 0x3a, 0x42, 0x98, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x57, 0x54, 0x8a, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x3a, 0x42, 0x98, 0x1c, 0xbc, 0x4b, 0x1d, 0xf3, 0xe0, 0xdd, 0x96, 0x22, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x3a, 0x42, 0xd8, 0x0d, 0xac, 0x23, 0x84, 0x9e, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xaa, 0x34, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x47, 0x08, 0xc3, 0x83, 0x37, 0xc2, 0x63, 0x1e, 0x3c, 0x1b, 0x4d, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x1f, 0x21, 0x24, 0x03, 0xfb, 0x08, 0x61, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x1f, 0x21, 0x44, 0x03, 0xfb, 0x08, 0x61, 0xb0, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x80, 0xe7, 0x2e, 0x8c, 0x6e, 0x0c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x11, 0xc2, 0x62, 0x60, 0x1f, 0x21, 0xcc, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xc1, 0xf4, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x11, 0xc2, 0xe4, 0xe0, 0x79, 0xfd, 0x98, 0x07, 0x67, 0x24, 0xd4, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x05, 0xd2, 0xef, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x2f, 0x43, 0x97, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xb2, 0x20, 0xdb, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xef, 0x6d, 0x8c, 0xae, 0x8c, 0xae, 0x65, 0x8e, 0x4e, 0xae, 0x2c, 0xac, 0x6d, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x3a, 0x83, 0xec, 0xa0, 0xf4, 0xa6, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xdd, 0x83, 0xec, 0xa0, 0xcc, 0xd2, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x7b, 0x84, 0xec, 0xf0, 0x43, 0x4d, 0x87, 0x53, 0x6c, 0x01, 0x41, 0xff, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xd6, 0x92, 0xb6, 0xc1, 0x2a, 0x2c, 0xa7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0x83, 0xd2, 0x0e, 0x1e, 0x83, 0x81, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xfc, 0x92, 0xb6, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0xc1, 0x1b, 0xb2, 0xd3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x64, 0xd2, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x71, 0xd2, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xbd, 0xdd, 0xb9, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x4d, 0x36, 0x69, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xba, 0x27, 0x6d, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0xb6, 0x41, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6a, 0x27, 0xed, 0xe0, 0x45, 0x04, 0x8f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x28, 0xa5, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x97, 0x60, 0xaa, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x1e, 0xa5, 0x1d, 0xbc, 0x88, 0xe0, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfc, 0xa8, 0xb4, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x56, 0x54, 0xb5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xba, 0xa7, 0xb4, 0x83, 0x17, 0x11, 0x3c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xac, 0x95, 0xb6, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0xe4, 0x9f, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x84, 0x95, 0x76, 0xf0, 0x22, 0x82, 0xc7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x08, 0x4b, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x25, 0x55, 0xf8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa9, 0x57, 0xda, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x28, 0x59, 0xda, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb2, 0x5a, 0xda, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x7e, 0x4b, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x8f, 0xb1, 0xb1, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x6a, 0x4b, 0x3b, 0x78, 0x9b, 0xae, 0xe3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x05, 0x78, 0x69, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0x85, 0xd3, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc4, 0xba, 0xb4, 0x0d, 0xff, 0xce, 0xaf, 0x41, 0x0b, 0xa7, 0xe3, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x11, 0x60, 0xda, 0x86, 0x3f, 0x97, 0x06, 0xe0, 0x61, 0xec, 0xcd, 0x8d, 0x2e, 0xcd, 0xad, 0x2e, 0x8d, 0x2e, 0xaf, 0xc5, 0xad, 0xae, 0x4d, 0xac, 0x4c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xee, 0x4b, 0x3b, 0x28, 0xb3, 0x74, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x45, 0x4c, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x0f, 0xa6, 0xe3, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x31, 0x4c, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0x8d, 0x69, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xe4, 0x6e, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x59, 0x4c, 0x3b, 0x7c, 0xb0, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd2, 0x65, 0xda, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0x3b, 0xb4, 0x77, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x98, 0x32, 0xed, 0xe0, 0xd8, 0xea, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe1, 0x9f, 0x69, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x21, 0x7f, 0x6a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x61, 0x9d, 0x69, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x65, 0xa3, 0x69, 0x07, 0x65, 0x13, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x79, 0xa8, 0x69, 0x07, 0xc7, 0x56, 0xd7, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa6, 0xd8, 0xb4, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6b, 0x69, 0xe4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb5, 0x6b, 0xda, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x34, 0x6d, 0xda, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7c, 0x6e, 0xda, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xf8, 0x4d, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x8f, 0xc5, 0x55, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xe3, 0x4d, 0x3b, 0x78, 0x11, 0xc1, 0xe3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0xc5, 0x69, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0xcd, 0x2d, 0x6a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0xc3, 0x69, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x71, 0xc9, 0x69, 0x07, 0x25, 0xe2, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x41, 0xcf, 0x69, 0x07, 0xc7, 0x56, 0xd7, 0xaa, 0x15, 0xc0, 0x8f, 0x2c, 0xcd, 0xcc, 0xac, 0x25, 0x4c, 0x2f, 0xad, 0xad, 0x8e, 0x0e, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xab, 0x4e, 0xdb, 0xf0, 0x51, 0xfb, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc2, 0x76, 0xda, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xec, 0x4e, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x1b, 0xb2, 0xd3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x2b, 0x4f, 0xdb, 0xf0, 0xe7, 0xd2, 0x80, 0x77, 0x87, 0xf6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x8b, 0xa7, 0x1d, 0x1c, 0x5b, 0x5d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x65, 0x4f, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x65, 0x4e, 0xc0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x87, 0x7a, 0xda, 0x86, 0x7f, 0xe7, 0x17, 0xc0, 0x87, 0x2c, 0xcd, 0xcc, 0xac, 0x05, 0xee, 0x2d, 0xcd, 0x8d, 0xae, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x7d, 0x4f, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0xf2, 0x69, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0x3c, 0x32, 0xb7, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd4, 0xfb, 0xb4, 0x0d, 0xff, 0xce, 0x2f, 0xc0, 0x43, 0xe6, 0x36, 0x57, 0x36, 0x57, 0xad, 0x06, 0xcf, 0x88, 0xcb, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xe3, 0x4f, 0xdb, 0xf0, 0x51, 0xfb, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x90, 0x80, 0xda, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x26, 0x50, 0x3b, 0x58, 0xab, 0xd3, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc2, 0x82, 0xda, 0x86, 0x3f, 0x97, 0x36, 0x48, 0xa8, 0x90, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x44, 0x50, 0xdb, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0x21, 0x3b, 0xad, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf5, 0x41, 0x6d, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xbf, 0xa7, 0x3b, 0xb7, 0x32, 0xb9, 0x21, 0xb4, 0x30, 0xb7, 0xb3, 0x32, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x23, 0xa1, 0xb6, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xc7, 0x36, 0xa8, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xa1, 0xa1, 0xb6, 0xe1, 0xcf, 0xa5, 0x0d, 0x12, 0x2a, 0xe4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x2f, 0xd4, 0x0e, 0x5e, 0x44, 0xf0, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe9, 0x1f, 0x6a, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0x04, 0x8d, 0xd1, 0xa5, 0xd9, 0x85, 0xd1, 0x95, 0x91, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3a, 0x11, 0xb5, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0xac, 0x43, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2a, 0x15, 0xb5, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x77, 0x68, 0xef, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf5, 0x89, 0xda, 0xc1, 0xb1, 0xd5, 0xb5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0x60, 0xd4, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0x78, 0xa7, 0xe0, 0xc2, 0xee, 0xdc, 0xca, 0xc8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa5, 0x8c, 0xda, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xde, 0xdc, 0xa2, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x9d, 0x8e, 0xda, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0x3b, 0xb4, 0x77, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xfe, 0x46, 0xed, 0xe0, 0xd8, 0xea, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf9, 0x3e, 0x6a, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0x0d, 0xa1, 0x85, 0xb9, 0x9d, 0x95, 0x91, 0x2d, 0x95, 0xe5, 0xcd, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc2, 0x20, 0xb5, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0xa4, 0x47, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb4, 0x24, 0xb5, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x18, 0x1b, 0xbb, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x74, 0x23, 0xb5, 0x83, 0xb7, 0xe9, 0x3a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x06, 0xa5, 0xb6, 0xe1, 0xcf, 0xa5, 0x0d, 0x5a, 0x38, 0x1d, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x6f, 0x52, 0x3b, 0x78, 0xc0, 0x4d, 0x66, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x59, 0xa9, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x2d, 0x24, 0xf7, 0xb6, 0x56, 0x36, 0xf4, 0xe6, 0x46, 0x97, 0xe6, 0x56, 0x97, 0x46, 0x97, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xb1, 0xd4, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0xd6, 0x29, 0xb5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0xc1, 0xd4, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0x42, 0x85, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8f, 0x97, 0xda, 0x41, 0x99, 0xa5, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x55, 0x65, 0x6a, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x52, 0x34, 0x37, 0x16, 0x06, 0x57, 0x16, 0x34, 0x36, 0xf6, 0xc2, 0xf4, 0x36, 0x47, 0x37, 0x05, 0xf7, 0xe6, 0x36, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0xcf, 0xd4, 0x0e, 0x9e, 0xfc, 0xe5, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8d, 0x9b, 0xda, 0x86, 0x3f, 0x97, 0x36, 0x48, 0xa8, 0x90, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x5d, 0x53, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x45, 0x73, 0x6a, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xe4, 0x6e, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x86, 0x53, 0x3b, 0x7c, 0xb0, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x96, 0x9e, 0xda, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0x3b, 0xb4, 0x77, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xfa, 0x4e, 0xed, 0xe0, 0xd8, 0xea, 0x5a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x04, 0xaa, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x59, 0x34, 0x37, 0x16, 0x06, 0x57, 0x26, 0x55, 0x16, 0xf7, 0x32, 0x14, 0xe6, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x07, 0xd5, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x90, 0x3f, 0xb5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x17, 0xd5, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0x42, 0x85, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4a, 0xa2, 0xda, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xcc, 0xa3, 0xda, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x11, 0xa5, 0xda, 0xc1, 0xb1, 0xd5, 0xb5, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xdc, 0x54, 0xdb, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x9f, 0x21, 0xb4, 0x30, 0xb7, 0xb3, 0x32, 0xb2, 0xa6, 0x30, 0xb7, 0xb0, 0xb3, 0xb2, 0xb6, 0x32, 0x37, 0x3a, 0x28, 0xb9, 0xb7, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xe1, 0xa9, 0xb6, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x97, 0x60, 0xaa, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x5f, 0xaa, 0xb6, 0xe1, 0xcf, 0xa5, 0x0d, 0x12, 0x2a, 0xe4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0x46, 0xd5, 0x0e, 0x5e, 0x44, 0xf0, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x91, 0xab, 0x6a, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x31, 0x84, 0x16, 0xe6, 0x76, 0x56, 0x46, 0x66, 0xf5, 0x46, 0x97, 0xe6, 0x76, 0x06, 0x25, 0xf7, 0x86, 0x97, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x5c, 0xd5, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x56, 0x54, 0xb5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x6c, 0xd5, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0x42, 0x85, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xdf, 0xac, 0xda, 0xc1, 0x8b, 0x08, 0x1e, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x6e, 0x57, 0x6d, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0x86, 0xd0, 0xc2, 0xdc, 0xce, 0xca, 0xc8, 0xa6, 0xe0, 0xc2, 0xee, 0xdc, 0xa0, 0xe4, 0xde, 0xf0, 0xf2, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x80, 0xaf, 0xda, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x1e, 0x8b, 0xab, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x79, 0xb1, 0xda, 0x86, 0x3f, 0x97, 0x36, 0x48, 0xa8, 0x90, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x1b, 0x56, 0x3b, 0x78, 0x11, 0xc1, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x23, 0xab, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xcf, 0x10, 0x5a, 0x98, 0xdb, 0x59, 0x19, 0x19, 0x95, 0x5c, 0x98, 0xdb, 0x9c, 0x59, 0x99, 0x1c, 0x94, 0xdc, 0x1b, 0x5e, 0xde, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x5c, 0x56, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x9b, 0xfc, 0xd3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x9c, 0x56, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x09, 0x15, 0x72, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0xd0, 0x6a, 0x07, 0x2f, 0x22, 0x78, 0xac, 0xc3, 0x29, 0xb6, 0x06, 0xef, 0xc2, 0xcb, 0xdc, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x17, 0x5e, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0f, 0xb6, 0xda, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xea, 0x56, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0xad, 0x79, 0x07, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x6b, 0xab, 0x1d, 0x9c, 0x67, 0x47, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x23, 0x57, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0xe9, 0x9e, 0x9b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0xe1, 0x6a, 0x07, 0xe7, 0xd9, 0xd1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0xd7, 0xd5, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xd1, 0x95, 0xc9, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x11, 0xe9, 0x6a, 0x07, 0xe7, 0xd9, 0xd1, 0x0e, 0xa7, 0x58, 0x87, 0x53, 0xec, 0x70, 0x8a, 0xb5, 0xa0, 0x77, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xc0, 0x6f, 0x2c, 0x0c, 0x0e, 0xae, 0x8c, 0xac, 0x25, 0xae, 0xae, 0xac, 0xae, 0x6c, 0x00, 0xbc, 0x09, 0x03, 0x59, 0x89, 0x2b, 0xab, 0x03, 0xb9, 0x4b, 0xa3, 0x43, 0x03, 0x09, 0x03, 0x69, 0x0b, 0xc3, 0x4b, 0x6b, 0xab, 0x6b, 0x03, 0x71, 0xab, 0x6b, 0x13, 0x2b, 0x93, 0x03, 0x79, 0x33, 0x03, 0x29, 0x73, 0xa3, 0x93, 0x4b, 0x2b, 0x9b, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x47, 0xf5, 0xd9, 0xf0, 0x70, 0xfe, 0x02, 0x78, 0xa4, 0xd1, 0x95, 0xb5, 0xb5, 0xd0, 0xe5, 0xc1, 0x95, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xb4, 0xfa, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xdc, 0x58, 0x9f, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xf0, 0x91, 0xca, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xba, 0x57, 0x9f, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8a, 0x5a, 0x9f, 0x83, 0x87, 0x1f, 0x30, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x99, 0xeb, 0xb3, 0xe1, 0xdf, 0xf9, 0x0d, 0x5e, 0x32, 0xa2, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xff, 0xfa, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0xe7, 0xbb, 0x54, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xf6, 0xfa, 0x1c, 0x94, 0x59, 0xba, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x1a, 0xfb, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x57, 0xd3, 0x54, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x11, 0xfb, 0x6c, 0x10, 0x40, 0x67, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0xc9, 0x3e, 0x07, 0x29, 0xd0, 0xa9, 0xad, 0xc0, 0xd3, 0xfb, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x03, 0x3c, 0xea, 0xdc, 0xd2, 0xf0, 0x5a, 0xe8, 0xc2, 0xe6, 0xd6, 0x06, 0xf0, 0x4e, 0x73, 0x83, 0xab, 0xa3, 0x03, 0x31, 0x93, 0x7b, 0x6b, 0x03, 0xa9, 0x73, 0x4b, 0xc3, 0xdb, 0xf0, 0x3c, 0xc9, 0x06, 0xcf, 0xbe, 0xd1, 0xdc, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x32, 0x8e, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x63, 0x44, 0x07, 0x16, 0x38, 0xe2, 0x36, 0x08, 0x35, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x1b, 0x23, 0x7e, 0x60, 0x1b, 0x23, 0x0c, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x63, 0x84, 0x60, 0x60, 0x1b, 0x23, 0xa4, 0x07, 0xef, 0xb2, 0x40, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x31, 0x42, 0x3c, 0xb0, 0x8d, 0x11, 0xf2, 0x83, 0x82, 0x22, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0xc7, 0x88, 0x1e, 0x3c, 0x0d, 0x48, 0x73, 0x83, 0xa0, 0xfd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x16, 0x32, 0xe2, 0x07, 0x16, 0x32, 0xc2, 0x74, 0x83, 0xf5, 0x2a, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x42, 0x46, 0x88, 0x06, 0x16, 0x32, 0x42, 0xbe, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xb7, 0x1a, 0x06, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x42, 0x46, 0x18, 0x0c, 0x2c, 0x64, 0x84, 0xe5, 0xc1, 0x2b, 0x64, 0x10, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9d, 0x8c, 0xf8, 0x81, 0x9d, 0x8c, 0x30, 0xdd, 0x60, 0xbd, 0x4a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x93, 0x11, 0xa2, 0x81, 0x9d, 0x8c, 0x90, 0x6f, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0xe5, 0x72, 0x41, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x93, 0x11, 0x06, 0x03, 0x3b, 0x19, 0x61, 0x79, 0xf0, 0x0a, 0x19, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x2d, 0x23, 0x7e, 0x60, 0x2d, 0x23, 0x4c, 0x37, 0x58, 0xaf, 0x52, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x65, 0x84, 0x68, 0x60, 0x2d, 0x23, 0xe4, 0x07, 0x0f, 0x67, 0x12, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb5, 0x8c, 0x30, 0x18, 0x58, 0xcb, 0x08, 0xcb, 0x83, 0x87, 0xb0, 0x20, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x9b, 0x19, 0xf1, 0x03, 0x9b, 0x19, 0x61, 0xba, 0xc1, 0x7a, 0x95, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x33, 0x23, 0x44, 0x03, 0x9b, 0x19, 0x21, 0x3f, 0x78, 0x97, 0xbf, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x66, 0x84, 0xc1, 0xc0, 0x66, 0x46, 0x58, 0x1e, 0xbc, 0x40, 0xe0, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0xce, 0x88, 0x1f, 0x58, 0xce, 0x08, 0xd3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xcb, 0x19, 0x21, 0x18, 0x58, 0xce, 0x08, 0xbb, 0x83, 0xd7, 0x26, 0x22, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xcb, 0x19, 0x61, 0x38, 0xb0, 0x9c, 0x11, 0x96, 0x07, 0x21, 0xf8, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x9f, 0x11, 0x3f, 0xb0, 0x9f, 0x11, 0xa6, 0x1b, 0xac, 0x57, 0xa9, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x33, 0x42, 0x34, 0xb0, 0x9f, 0x11, 0xf2, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0x71, 0x30, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x33, 0xc2, 0x60, 0x60, 0x3f, 0x23, 0x2c, 0x0f, 0x5e, 0x21, 0x83, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x68, 0xc4, 0x0f, 0xac, 0x68, 0x84, 0xe9, 0x06, 0xeb, 0x55, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x15, 0x8d, 0x10, 0x0d, 0xac, 0x68, 0x84, 0x7c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x6f, 0xad, 0x08, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x15, 0x8d, 0x30, 0x18, 0x58, 0xd1, 0x08, 0xcb, 0x83, 0xa7, 0x80, 0x20, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x5b, 0x1a, 0xf1, 0x03, 0x5b, 0x1a, 0x61, 0xba, 0xc1, 0x7a, 0x95, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x4b, 0x23, 0x44, 0x03, 0x5b, 0x1a, 0x21, 0x3f, 0x78, 0x8a, 0xa6, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x69, 0x84, 0xc1, 0xc0, 0x96, 0x46, 0x58, 0x1e, 0x3c, 0x84, 0x05, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0xd4, 0x88, 0x1f, 0x58, 0xd5, 0x08, 0xd3, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xd0, 0x84, 0xea, 0x89, 0xe8, 0x49, 0x07, 0xa4, 0x2d, 0x6c, 0xad, 0x0c, 0x84, 0x24, 0xaf, 0x6e, 0x2d, 0x0d, 0x24, 0xcc, 0x0d, 0xe4, 0x0d, 0x8e, 0x2e, 0xed, 0xcd, 0x0d, 0xc4, 0xec, 0x4d, 0x0e, 0xa4, 0x24, 0xcd, 0x8d, 0xee, 0xed, 0xb7, 0xc1, 0x7a, 0x95, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x55, 0x23, 0x44, 0x03, 0xab, 0x1a, 0x21, 0x3f, 0x78, 0x0b, 0xc3, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x6a, 0x84, 0xc1, 0xc0, 0xaa, 0x46, 0x58, 0x1e, 0x3c, 0x84, 0x05, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0xd6, 0x88, 0x1f, 0xd8, 0xd6, 0x08, 0xd3, 0x0d, 0xd6, 0xab, 0x54, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xdb, 0x1a, 0x21, 0x1a, 0xd8, 0xd6, 0x08, 0xf9, 0xc1, 0x93, 0x75, 0x06, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x5b, 0x23, 0x0c, 0x06, 0xb6, 0x35, 0xc2, 0xf2, 0xe0, 0x21, 0x2c, 0x88, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc2, 0x46, 0xfc, 0xc0, 0xc2, 0x46, 0x98, 0x6e, 0xb0, 0x5e, 0xa5, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0xd8, 0x08, 0xd1, 0xc0, 0xc2, 0x46, 0xc8, 0x0f, 0x9e, 0x07, 0xf8, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x0b, 0x1b, 0x61, 0x30, 0xb0, 0xb0, 0x11, 0x96, 0x07, 0xcf, 0xc0, 0x41, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x76, 0x36, 0xe2, 0x07, 0x76, 0x36, 0xc2, 0x7a, 0x83, 0xf5, 0x2a, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xce, 0x46, 0x88, 0x06, 0x76, 0x36, 0xc2, 0xe4, 0xe0, 0x9d, 0x43, 0x89, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xb3, 0x11, 0x36, 0x03, 0x3b, 0x1b, 0x61, 0x7c, 0xf0, 0x08, 0x22, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x6d, 0x23, 0x7e, 0x60, 0x6d, 0x23, 0xac, 0x37, 0x58, 0xaf, 0x52, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x6d, 0x84, 0x68, 0x60, 0x6d, 0x23, 0x4c, 0x0e, 0x5e, 0xce, 0x87, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x6b, 0x1b, 0x61, 0x33, 0xb0, 0xb6, 0x11, 0xc6, 0x07, 0xcf, 0xc0, 0x41, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x37, 0xe2, 0x07, 0x36, 0x37, 0x42, 0xc7, 0x06, 0xeb, 0x55, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcd, 0x8d, 0x10, 0x0d, 0x6c, 0x6e, 0x84, 0xe1, 0xc1, 0x8b, 0xf0, 0x1e, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x73, 0x23, 0x2c, 0x07, 0x36, 0x37, 0x42, 0xc5, 0xc1, 0x33, 0x70, 0x10, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe5, 0x8d, 0xf8, 0x81, 0xe5, 0x8d, 0x30, 0xdd, 0x60, 0xbd, 0x4a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xbc, 0x11, 0xa2, 0x81, 0xe5, 0x8d, 0x90, 0x1f, 0xbc, 0x2c, 0x60, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x37, 0xc2, 0x60, 0x60, 0x79, 0x23, 0x2c, 0x0f, 0x5e, 0x21, 0x83, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x6f, 0xc4, 0x0f, 0xec, 0x6f, 0x84, 0xe9, 0x06, 0xeb, 0x55, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfd, 0x8d, 0x10, 0x0d, 0xec, 0x6f, 0x84, 0xfc, 0xe0, 0x2d, 0x69, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0xbf, 0x11, 0x06, 0x03, 0xfb, 0x1b, 0x61, 0x79, 0xf0, 0x12, 0x13, 0xc4, 0x56, 0xe0, 0xfd, 0xfd, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0x4f, 0x70, 0x06, 0x6b, 0x00, 0x1e, 0xdc, 0xde, 0xe4, 0xda, 0xc2, 0xd8, 0x40, 0xd4, 0xe6, 0xde, 0xdc, 0x40, 0xec, 0xc2, 0xd8, 0xea, 0xca, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x9e, 0xe0, 0x0c, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x83, 0x1f, 0x1d, 0x18, 0xff, 0xb8, 0x0d, 0x1f, 0xcc, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x83, 0x1f, 0x3f, 0x30, 0xf8, 0xe1, 0xc1, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x06, 0x81, 0xfb, 0xd0, 0x41, 0x08, 0x3e, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe4, 0x47, 0x0f, 0x1e, 0x61, 0xae, 0xb9, 0x41, 0xd0, 0xfe, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x93, 0x1f, 0x3f, 0x30, 0xf9, 0xe1, 0xc2, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x4f, 0x98, 0x9c, 0x5c, 0x58, 0xde, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc9, 0x0f, 0xc1, 0xc0, 0xe4, 0x87, 0xe8, 0x20, 0x65, 0x8b, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xfc, 0x90, 0x0d, 0x4c, 0x7e, 0x18, 0x6e, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x3f, 0xa4, 0x07, 0x6f, 0xb2, 0xd7, 0xdc, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc9, 0x0f, 0xf1, 0xc0, 0xe4, 0x87, 0xc9, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x93, 0x1f, 0x36, 0x03, 0x93, 0x1f, 0x76, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x27, 0x38, 0x83, 0x55, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa3, 0x1f, 0x3f, 0x30, 0xfa, 0xe1, 0xc4, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xaf, 0xd8, 0xdb, 0x1b, 0x5b, 0x59, 0x98, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd1, 0x0f, 0xc1, 0xc0, 0xe8, 0x87, 0xe8, 0x60, 0xa5, 0x38, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xfa, 0x21, 0x1b, 0x18, 0xfd, 0x10, 0x6f, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x46, 0x3f, 0xa4, 0x07, 0x8f, 0x49, 0xd8, 0x3c, 0x7c, 0xb0, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xfb, 0xf1, 0x03, 0xb3, 0x1f, 0x3e, 0x6c, 0x78, 0xe2, 0x7d, 0x83, 0x55, 0x41, 0xdc, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x66, 0x3f, 0x04, 0x03, 0xb3, 0x1f, 0xa2, 0x83, 0x65, 0x8a, 0xec, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xec, 0x87, 0x6c, 0x60, 0xf6, 0xc3, 0x74, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xfb, 0x21, 0x3d, 0x78, 0x3e, 0xc5, 0xe6, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x7e, 0x88, 0x07, 0x66, 0x3f, 0x2c, 0x0e, 0x4a, 0xc4, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xf6, 0xc3, 0x64, 0x60, 0xf6, 0xc3, 0xe8, 0xe0, 0x3c, 0x3b, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x7e, 0x58, 0x0d, 0xcc, 0x7e, 0x58, 0x1e, 0xbc, 0xe0, 0x5f, 0xb3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe1, 0x8f, 0x1f, 0x18, 0xfe, 0xf0, 0x61, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0xcf, 0xad, 0xae, 0x4d, 0xac, 0x4c, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf0, 0x87, 0x60, 0x60, 0xf8, 0x43, 0x74, 0x70, 0xda, 0x3b, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x86, 0x3f, 0x64, 0x03, 0xc3, 0x1f, 0x06, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe1, 0x0f, 0xe9, 0xc1, 0xcb, 0x53, 0x36, 0x0f, 0x8e, 0xda, 0xa0, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x1f, 0x3f, 0x30, 0xfd, 0xe1, 0xc3, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xdf, 0x1c, 0x9d, 0x5c, 0x9a, 0xdb, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe9, 0x0f, 0xc1, 0xc0, 0xf4, 0x87, 0xe8, 0x60, 0x49, 0x4c, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xfd, 0x21, 0x1b, 0x98, 0xfe, 0x90, 0x6f, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x3f, 0xa4, 0x07, 0x8f, 0xb5, 0xd9, 0x3c, 0x38, 0xcf, 0x8e, 0xd6, 0x2c, 0x70, 0xfe, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xbe, 0x3d, 0x64, 0x03, 0x0b, 0x05, 0x21, 0xdf, 0x20, 0xf5, 0xa2, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xee, 0xd1, 0x83, 0x17, 0xf3, 0x6c, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x1c, 0xbc, 0x03, 0xc3, 0x6e, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x37, 0x64, 0xa7, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x3f, 0x6e, 0x60, 0x47, 0x20, 0x7e, 0xc3, 0x83, 0x92, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x3f, 0x24, 0x03, 0x49, 0xfc, 0x10, 0x6f, 0x78, 0x5b, 0xe7, 0xe0, 0xe5, 0x82, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc5, 0x8f, 0x3b, 0x78, 0x1e, 0xd1, 0xe6, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x06, 0x6f, 0x52, 0xbe, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x93, 0xf2, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xf4, 0xe3, 0x07, 0xd2, 0xfa, 0x21, 0xd9, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x7e, 0xc8, 0x06, 0x72, 0xfa, 0xa1, 0x64, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x3f, 0x84, 0x03, 0x39, 0xfd, 0xb0, 0xd8, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x8b, 0x68, 0x1d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x7e, 0x98, 0x0c, 0xe4, 0xf4, 0xc3, 0x76, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0xce, 0xc8, 0x65, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xfa, 0x61, 0x77, 0xf0, 0x36, 0xac, 0xcd, 0x83, 0x37, 0xd8, 0x3a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xfd, 0x30, 0x1e, 0xc8, 0xe9, 0x87, 0x8e, 0x0d, 0x7f, 0x2e, 0x0d, 0x3c, 0xdd, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xfd, 0xb0, 0x3f, 0x78, 0xa4, 0xd7, 0xe6, 0xc1, 0x1b, 0x6c, 0x1d, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xfa, 0x21, 0x1b, 0x48, 0xea, 0x87, 0xc2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xfd, 0x10, 0x0e, 0x24, 0xf5, 0xc3, 0xe2, 0xe0, 0x61, 0xa7, 0x99, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x3f, 0x4c, 0x06, 0x92, 0xfa, 0xa1, 0x61, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0xce, 0xc8, 0x65, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xfa, 0x61, 0x77, 0xf0, 0x14, 0xb5, 0xcd, 0x0d, 0xff, 0xce, 0x2f, 0x80, 0xcf, 0x5a, 0x59, 0x5e, 0x4b, 0x1d, 0x1c, 0x59, 0x18, 0x5d, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x3f, 0x54, 0x0c, 0x24, 0xf5, 0x43, 0xdf, 0x86, 0x3f, 0x97, 0x06, 0x9e, 0xee, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x7e, 0x68, 0x39, 0x78, 0x73, 0xdc, 0xe6, 0xc1, 0x03, 0xdc, 0x36, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xfa, 0x21, 0x1b, 0xc8, 0xea, 0x87, 0xba, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xfd, 0x10, 0x0e, 0x64, 0xf5, 0xc3, 0x62, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x81, 0x3f, 0x07, 0xf7, 0xe6, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xfd, 0x30, 0x19, 0xc8, 0xea, 0x87, 0x82, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x3a, 0x23, 0x97, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xea, 0x87, 0xdd, 0xc1, 0xa3, 0xfc, 0x36, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xab, 0x1f, 0x86, 0x03, 0x59, 0xfd, 0x30, 0x3e, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x7e, 0x58, 0x0f, 0x64, 0xf5, 0xc3, 0xfe, 0xe0, 0xd8, 0xea, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd5, 0x0f, 0x0d, 0x03, 0x59, 0xfd, 0xd0, 0xb6, 0xe1, 0xcf, 0xa5, 0x81, 0xa7, 0x7b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xab, 0x1f, 0x4a, 0x0e, 0x5e, 0xa0, 0xb8, 0xb9, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xfd, 0xd0, 0x32, 0x90, 0xd5, 0x0f, 0x4d, 0x07, 0x65, 0x13, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd5, 0x0f, 0x55, 0x03, 0x59, 0xfd, 0x50, 0x76, 0x70, 0x6c, 0x75, 0xad, 0x56, 0x80, 0x87, 0x2c, 0xcd, 0xcc, 0x6c, 0xde, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x00, 0xe5, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xf4, 0xc3, 0x60, 0x20, 0xa3, 0x1f, 0xb6, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd1, 0x0f, 0x8b, 0x81, 0x8c, 0x7e, 0x58, 0x1d, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd1, 0x0f, 0xb3, 0x81, 0x8c, 0x7e, 0x98, 0x6e, 0xf8, 0x77, 0x7e, 0x83, 0xa7, 0x6a, 0x13, 0xd6, 0xe1, 0x14, 0x5b, 0x83, 0x37, 0x64, 0xa7, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x21, 0x3b, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xf8, 0xf1, 0x03, 0xb9, 0xfc, 0x90, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xe3, 0x87, 0x6c, 0x20, 0x8f, 0x1f, 0x06, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x45, 0xb4, 0x8e, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc7, 0x0f, 0xe1, 0xc1, 0xb3, 0x4b, 0x37, 0x0f, 0xde, 0x60, 0xeb, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xf2, 0x43, 0x36, 0x90, 0xc8, 0x0f, 0x83, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x18, 0x1b, 0xbb, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xe4, 0x87, 0xf0, 0xe0, 0xf5, 0xab, 0x9b, 0x07, 0x6f, 0xd3, 0x75, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xf9, 0x21, 0x1b, 0xc8, 0xe4, 0x87, 0xce, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x92, 0x1e, 0xb5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xe4, 0x87, 0xc1, 0xc1, 0x23, 0x64, 0x37, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x93, 0x1f, 0x16, 0x03, 0x99, 0xfc, 0x30, 0x3a, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x7e, 0x58, 0x0d, 0x64, 0xf2, 0xc3, 0xf2, 0xe0, 0x6d, 0xba, 0x8e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x26, 0x3f, 0x4c, 0x07, 0x32, 0xf9, 0xa1, 0x72, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x26, 0x3f, 0x6c, 0x07, 0x32, 0xf9, 0xa1, 0x6b, 0xc3, 0x9f, 0x4b, 0x03, 0xf8, 0x8d, 0xc9, 0xe5, 0xc1, 0xd1, 0xbd, 0xb5, 0xcc, 0xd5, 0xa5, 0xd1, 0x95, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc9, 0x0f, 0x45, 0x07, 0x4f, 0x04, 0xde, 0x3c, 0x28, 0xb3, 0x74, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x7e, 0x28, 0x1b, 0xc8, 0xe4, 0x87, 0xc6, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xc2, 0xe9, 0xf8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xf2, 0x43, 0xdb, 0xc1, 0xa3, 0x8f, 0x37, 0x0f, 0x1e, 0x70, 0x93, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2a, 0x3f, 0x64, 0x03, 0xa9, 0xfc, 0x30, 0xde, 0xf0, 0xe7, 0xd2, 0x06, 0x0f, 0xa6, 0xe3, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x7e, 0xd8, 0x1c, 0xbc, 0xc0, 0x79, 0x73, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xf9, 0x61, 0x34, 0x90, 0xca, 0x0f, 0xc3, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xe5, 0x87, 0xe5, 0x40, 0x2a, 0x3f, 0x6c, 0x0f, 0x8e, 0xad, 0xae, 0xb5, 0x02, 0x3c, 0x75, 0x64, 0x69, 0x66, 0xe6, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x1b, 0xb0, 0x37, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb9, 0x1f, 0x3f, 0x90, 0xe1, 0x0f, 0xe9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x7e, 0xc8, 0x06, 0x92, 0xfb, 0x61, 0xb4, 0xe1, 0xcf, 0xa5, 0x81, 0x4f, 0x23, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb9, 0x1f, 0xc2, 0x83, 0xa7, 0x7a, 0x6f, 0x6e, 0xf8, 0x77, 0x7e, 0x83, 0x56, 0x72, 0x42, 0x0f, 0x16, 0x23, 0x75, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xfd, 0xf8, 0x81, 0x0c, 0x7f, 0x48, 0x36, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xbb, 0x1f, 0xb2, 0x81, 0xec, 0x7e, 0xd8, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xee, 0x87, 0x70, 0x20, 0xbb, 0x1f, 0x16, 0x07, 0x8f, 0xaa, 0xda, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xfb, 0x61, 0x32, 0x90, 0xdd, 0x0f, 0xbb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x22, 0x5a, 0xc7, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xee, 0x87, 0xcd, 0xc1, 0xab, 0xdb, 0x37, 0x0f, 0xde, 0x60, 0xeb, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xf7, 0xc3, 0x70, 0x20, 0xbb, 0x1f, 0xe6, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0xc5, 0xd6, 0x2b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xdd, 0x0f, 0xeb, 0x83, 0xe7, 0xcf, 0x6f, 0x1e, 0x3e, 0x58, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xef, 0x87, 0x6c, 0x20, 0xbd, 0x1f, 0x4a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xf7, 0x43, 0x38, 0x90, 0xde, 0x0f, 0x8b, 0x83, 0x87, 0x9d, 0x66, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xfd, 0x30, 0x19, 0x48, 0xef, 0x87, 0xf1, 0xc1, 0x03, 0xdc, 0x36, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x7e, 0x58, 0x0f, 0xa4, 0xf7, 0x43, 0xc7, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xb1, 0xf5, 0xca, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xf7, 0x43, 0xc5, 0xc1, 0xdb, 0x04, 0x38, 0x0f, 0x1f, 0xac, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xf7, 0x43, 0x36, 0x90, 0xdf, 0x0f, 0x25, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xfb, 0x21, 0x1c, 0xc8, 0xef, 0x87, 0xc5, 0xc1, 0x33, 0xf6, 0x36, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x7e, 0x98, 0x0c, 0xe4, 0xf7, 0x43, 0xc7, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x30, 0x1d, 0xd7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xf7, 0xc3, 0xf4, 0xe0, 0x0d, 0x0e, 0x9c, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xdf, 0x0f, 0xdb, 0x81, 0xfc, 0x7e, 0xd8, 0x1f, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7e, 0x3f, 0x14, 0x0c, 0xe4, 0xf7, 0x43, 0xc5, 0xc1, 0xb1, 0xd5, 0xb5, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x7f, 0xc8, 0x06, 0x12, 0xfc, 0x61, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc1, 0x1f, 0xc2, 0x81, 0x04, 0x7f, 0x18, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xe0, 0x25, 0x4b, 0x9b, 0x0b, 0xb3, 0x7b, 0xbb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x7f, 0x58, 0x0d, 0x24, 0xf8, 0xc3, 0xec, 0x20, 0x04, 0x1f, 0xaa, 0xd5, 0xe0, 0x7d, 0x6e, 0x9b, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xef, 0x73, 0xdb, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x7e, 0x58, 0x0d, 0x64, 0xf3, 0x43, 0xe7, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x7e, 0x98, 0x0d, 0x64, 0xf3, 0xc3, 0x76, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0xc6, 0xc6, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xf9, 0x61, 0x77, 0xf0, 0x26, 0x14, 0xce, 0x83, 0xb7, 0xe9, 0x3a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xfc, 0x30, 0x1e, 0xc8, 0xe6, 0x87, 0xb2, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xc6, 0xe0, 0xcd, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xe6, 0x87, 0xa6, 0x83, 0xc7, 0xb9, 0x70, 0x1e, 0x94, 0x59, 0xba, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x36, 0x3f, 0xb4, 0x0d, 0x64, 0xf3, 0x43, 0xe5, 0x86, 0x3f, 0x97, 0x36, 0x68, 0xe1, 0x74, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xf9, 0xa1, 0xee, 0xe0, 0x8d, 0x34, 0x9c, 0x07, 0x0f, 0xb8, 0xc9, 0xec, 0x70, 0x8a, 0x2d, 0x80, 0x4f, 0x18, 0x1c, 0x1c, 0x5b, 0x5e, 0x0b, 0x59, 0x9a, 0x99, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xfb, 0x00, 0xf1, 0x03, 0x2b, 0x02, 0x21, 0xd9, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x0f, 0x10, 0xb2, 0x81, 0x7d, 0x80, 0x30, 0xd9, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x03, 0x84, 0xf4, 0xe0, 0x41, 0x3f, 0x9c, 0x07, 0x8f, 0x13, 0xcc, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x85, 0x80, 0xf8, 0x83, 0x17, 0xf2, 0x70, 0x6e, 0xf8, 0xae, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x08, 0x08, 0xd9, 0xc0, 0x42, 0x40, 0x58, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x08, 0x08, 0xe1, 0xc0, 0x42, 0x40, 0x98, 0x6c, 0x50, 0x08, 0xa6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x42, 0x40, 0x48, 0x0f, 0xde, 0xa7, 0xc4, 0xb9, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0xa4, 0x7c, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x0b, 0x01, 0x21, 0x3e, 0x78, 0x9f, 0x12, 0xe7, 0xc1, 0x1b, 0x3c, 0x37, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x85, 0x80, 0xb0, 0x19, 0x58, 0x08, 0x08, 0xe3, 0x0d, 0x9f, 0xbb, 0x0c, 0xf0, 0x86, 0xb5, 0xc0, 0xbd, 0xa5, 0xb9, 0xd1, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x10, 0x10, 0xb6, 0x07, 0x8f, 0x9b, 0xe2, 0x3c, 0x3c, 0xad, 0xd3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x04, 0xc4, 0x1f, 0xbc, 0x90, 0x87, 0x73, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x46, 0x40, 0xc8, 0x06, 0x36, 0x02, 0xc2, 0xe0, 0xe0, 0x71, 0x82, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x12, 0x10, 0x7f, 0xf0, 0x42, 0x1e, 0xce, 0x0d, 0x82, 0xf4, 0x74, 0x8d, 0x43, 0x07, 0x4f, 0xd5, 0x26, 0x5c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x09, 0x08, 0xd9, 0xc0, 0x4e, 0x40, 0x18, 0x1c, 0x3c, 0xaa, 0x6a, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x02, 0x42, 0x32, 0xb0, 0x15, 0x10, 0xe6, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x52, 0x40, 0x48, 0x07, 0x96, 0x02, 0x42, 0xcd, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa5, 0x80, 0x90, 0x0f, 0x2c, 0x05, 0x84, 0xed, 0x86, 0xb7, 0x75, 0x36, 0x78, 0x11, 0xad, 0xe3, 0x06, 0xaf, 0xa3, 0xe2, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x02, 0xc2, 0x78, 0x60, 0x29, 0x20, 0xb4, 0x6c, 0x78, 0x5b, 0x67, 0x83, 0xd7, 0x19, 0xb9, 0x1c, 0x3c, 0x55, 0x9b, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x02, 0x42, 0x72, 0xf0, 0xfa, 0x32, 0xce, 0x0d, 0x97, 0xd4, 0x06, 0xef, 0x68, 0xe3, 0x5c, 0x83, 0x07, 0xda, 0x3a, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x56, 0x40, 0x98, 0x0d, 0x6c, 0x05, 0x84, 0xf5, 0x86, 0xb7, 0x75, 0x06, 0x9e, 0xee, 0x3d, 0x78, 0xaa, 0x36, 0x61, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x7b, 0x01, 0x21, 0x1b, 0xd8, 0x0b, 0x08, 0x83, 0x83, 0x87, 0x9d, 0x66, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x62, 0x40, 0x48, 0x06, 0xb6, 0x03, 0x42, 0xb6, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x06, 0x84, 0x74, 0x60, 0x31, 0x20, 0x74, 0x6d, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x0c, 0x08, 0xf9, 0xc0, 0x62, 0x40, 0xd8, 0x6e, 0x78, 0x5b, 0x67, 0x83, 0xc7, 0xd8, 0xd8, 0x1d, 0xbc, 0xa3, 0x8d, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x16, 0x03, 0xc2, 0x78, 0x60, 0x31, 0x20, 0x54, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0xc7, 0xd8, 0xd8, 0x1d, 0x3c, 0x0f, 0x8e, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x36, 0x03, 0x42, 0x72, 0xf0, 0xe4, 0x3e, 0xce, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x33, 0x20, 0xa4, 0x03, 0x9b, 0x01, 0xe1, 0xc2, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcd, 0x80, 0x90, 0x0f, 0x6c, 0x06, 0x84, 0xd2, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x9b, 0x01, 0x61, 0x30, 0xb0, 0x19, 0x10, 0x6a, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x28, 0xdc, 0x44, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcd, 0x80, 0x30, 0x1b, 0xd8, 0x0c, 0x08, 0xc3, 0x83, 0xb2, 0xa9, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x0c, 0x08, 0xcb, 0x81, 0xcd, 0x80, 0xd0, 0xb2, 0xe1, 0x6d, 0x9d, 0x0d, 0x5e, 0xd2, 0xa3, 0x76, 0xf0, 0x8e, 0x36, 0xce, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcd, 0x80, 0xd0, 0x33, 0xb0, 0x19, 0x10, 0x3a, 0x0f, 0xde, 0x3e, 0xc8, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x06, 0x84, 0xd6, 0x81, 0xcd, 0x80, 0xf0, 0x60, 0x83, 0x63, 0xb8, 0xc1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x06, 0x84, 0xda, 0x83, 0x07, 0x82, 0x72, 0x6e, 0xb8, 0xa4, 0xd6, 0x78, 0x7e, 0xf0, 0x3c, 0x38, 0xce, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x35, 0x20, 0x24, 0x07, 0x4f, 0xee, 0xe3, 0xdc, 0x60, 0x15, 0x92, 0xd2, 0x06, 0xef, 0x68, 0xe3, 0x5c, 0x83, 0x87, 0xeb, 0x3a, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x6e, 0x40, 0x58, 0x0c, 0xec, 0x06, 0x84, 0xf5, 0x86, 0xb7, 0x75, 0x36, 0x78, 0x8c, 0x8d, 0xdd, 0xc1, 0x53, 0xf0, 0x38, 0x57, 0x83, 0x97, 0xf4, 0xa8, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xcb, 0x01, 0x61, 0x31, 0xb0, 0x1c, 0x10, 0x0e, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x0e, 0x08, 0x93, 0x81, 0xe5, 0x80, 0x50, 0xb4, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x07, 0x84, 0xe1, 0xc0, 0x72, 0x40, 0x98, 0x1e, 0x94, 0x4d, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x72, 0x40, 0xd8, 0x0e, 0x2c, 0x07, 0x84, 0x9e, 0x83, 0xd7, 0x68, 0x72, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x07, 0x84, 0xa6, 0x81, 0xe5, 0x80, 0xd0, 0x7a, 0xf0, 0xbe, 0x55, 0xce, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x39, 0x20, 0xd4, 0x0e, 0x2c, 0x07, 0x84, 0xfe, 0x0d, 0x97, 0xd4, 0x1a, 0xcf, 0x0f, 0x9e, 0x82, 0xc7, 0x59, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x07, 0x84, 0x6c, 0x60, 0x3f, 0x20, 0x0c, 0x0e, 0x9e, 0xb1, 0xb7, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x0b, 0x02, 0x21, 0x19, 0xd8, 0x10, 0x08, 0x0d, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x82, 0x40, 0x48, 0x07, 0x16, 0x04, 0x42, 0xd3, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x05, 0x81, 0x90, 0x0f, 0x2c, 0x08, 0x84, 0xf9, 0x86, 0xb7, 0x75, 0x36, 0x78, 0x30, 0x1d, 0xd7, 0xc1, 0x3b, 0xda, 0x38, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x41, 0x20, 0xec, 0x07, 0x16, 0x04, 0x42, 0xd1, 0xc1, 0x1b, 0xe0, 0x38, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x43, 0x20, 0x24, 0x07, 0x8f, 0x26, 0xe6, 0xdc, 0x70, 0x49, 0x6d, 0xf0, 0x8e, 0x36, 0xce, 0xd5, 0xe0, 0xc1, 0x74, 0x5c, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x86, 0x40, 0x58, 0x0e, 0x6c, 0x08, 0x84, 0x82, 0x83, 0xf7, 0xde, 0x71, 0xd6, 0x6a, 0x50, 0x54, 0x6b, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x3f, 0x7e, 0x60, 0x0b, 0x20, 0x24, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xff, 0x21, 0x1b, 0xc8, 0xfd, 0x87, 0xf1, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x00, 0xe5, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xfe, 0xc3, 0xe2, 0xe0, 0x31, 0xdb, 0x9c, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfb, 0x0f, 0x93, 0x81, 0xdc, 0x7f, 0x98, 0x1d, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfb, 0x0f, 0xbb, 0x81, 0xdc, 0x7f, 0xd8, 0x1e, 0xbc, 0xc1, 0x73, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xfe, 0xc7, 0x1f, 0x3c, 0x0f, 0x9b, 0x73, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf2, 0x3f, 0x64, 0x03, 0xc9, 0xff, 0x30, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x7f, 0x08, 0x07, 0x92, 0xff, 0x61, 0x70, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf2, 0x3f, 0x2c, 0x06, 0x92, 0xff, 0x61, 0x75, 0xf0, 0x06, 0xcf, 0xcd, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xfb, 0x1f, 0x7f, 0xf0, 0x3c, 0x6c, 0xce, 0x0d, 0x4e, 0xec, 0x37, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf6, 0x3f, 0x64, 0x03, 0xd9, 0xff, 0x90, 0x1f, 0x14, 0x16, 0xcb, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfe, 0x8f, 0x3f, 0x78, 0x1e, 0x36, 0xe7, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfe, 0x0f, 0xd9, 0x40, 0xfa, 0x3f, 0xe4, 0x07, 0x25, 0x52, 0xf5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfe, 0x0f, 0x8b, 0x81, 0xf4, 0x7f, 0x98, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0x07, 0x50, 0x6e, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xff, 0xf8, 0x83, 0xe7, 0x61, 0x73, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xff, 0x87, 0x6c, 0x20, 0xff, 0x1f, 0x06, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x4d, 0xca, 0x77, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xff, 0x0f, 0xe1, 0xc1, 0xb3, 0x05, 0x3a, 0x0f, 0xde, 0xe0, 0xb9, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x0b, 0x00, 0xf1, 0x07, 0xcf, 0xc3, 0xe6, 0xdc, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x00, 0x10, 0xb2, 0x81, 0x05, 0x80, 0x30, 0xd8, 0xf0, 0xef, 0xfc, 0x8a, 0xe3, 0x1c, 0xbc, 0x49, 0xf9, 0xae, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x03, 0x20, 0xfe, 0xe0, 0x79, 0xd8, 0x9c, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0x0f, 0x04, 0xe3, 0x5c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x01, 0x08, 0xc9, 0xc0, 0x0a, 0x40, 0x88, 0x0f, 0x1e, 0x55, 0xb5, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x2b, 0x00, 0x61, 0x30, 0xb0, 0x02, 0x10, 0x4a, 0x36, 0x3c, 0x28, 0xb9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x15, 0x80, 0xb0, 0x18, 0x58, 0x01, 0x08, 0xb3, 0x0d, 0x6f, 0xdc, 0x1d, 0x3c, 0xb6, 0x6a, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x01, 0x08, 0xbb, 0x81, 0x15, 0x80, 0xb0, 0x3c, 0x38, 0x0f, 0x83, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x2b, 0x00, 0x61, 0x3a, 0xb0, 0x02, 0x10, 0xe6, 0x07, 0x6f, 0xb6, 0x72, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x00, 0x42, 0xc1, 0xc1, 0xeb, 0x2a, 0x3a, 0x37, 0xbc, 0xad, 0x73, 0xf0, 0x54, 0x6d, 0xc2, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1d, 0x80, 0x90, 0x0c, 0xec, 0x00, 0x84, 0xf8, 0xe0, 0x61, 0xa7, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x03, 0x10, 0x06, 0x03, 0x3b, 0x00, 0xa1, 0x64, 0xc3, 0x83, 0x92, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x01, 0x08, 0x8b, 0x81, 0x1d, 0x80, 0x30, 0xdb, 0xf0, 0xc6, 0xdd, 0xc1, 0x83, 0x4f, 0x33, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1d, 0x80, 0xb0, 0x1b, 0xd8, 0x01, 0x08, 0xcb, 0x83, 0xf3, 0x30, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x03, 0x10, 0xa6, 0x03, 0x3b, 0x00, 0x61, 0x7e, 0xf0, 0x66, 0x2b, 0x97, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x07, 0x20, 0x14, 0x1c, 0xbc, 0xfc, 0xa4, 0xf3, 0xe0, 0x49, 0x22, 0x9d, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x4b, 0x00, 0x21, 0x19, 0x58, 0x02, 0x08, 0xf1, 0xc1, 0x33, 0xf6, 0x36, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x09, 0x20, 0x0c, 0x06, 0x96, 0x00, 0x42, 0xc9, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x04, 0x10, 0x16, 0x03, 0x4b, 0x00, 0x61, 0xb6, 0xe1, 0x8d, 0xbb, 0x83, 0xe7, 0xed, 0x6d, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x4b, 0x00, 0x61, 0x37, 0xb0, 0x04, 0x10, 0x96, 0x07, 0xe7, 0x61, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x09, 0x20, 0x4c, 0x07, 0x96, 0x00, 0xc2, 0xfc, 0xe0, 0xcd, 0x56, 0x2e, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x12, 0x40, 0x28, 0x38, 0x78, 0x7a, 0x4e, 0xe7, 0xc1, 0x93, 0x44, 0x3a, 0x3b, 0x9c, 0x62, 0xad, 0xc1, 0x61, 0x53, 0x60, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x76, 0x01, 0xe2, 0x07, 0x96, 0x01, 0x42, 0xd1, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5d, 0x80, 0x90, 0x0d, 0xec, 0x02, 0x84, 0x9e, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xbb, 0x00, 0x21, 0x1c, 0xd8, 0x05, 0x08, 0xeb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x00, 0xca, 0xcd, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x05, 0x08, 0x93, 0x83, 0xc7, 0x3d, 0x75, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x2e, 0x40, 0xd8, 0x0c, 0xec, 0x02, 0x84, 0xdd, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xbb, 0x00, 0x61, 0x38, 0xb0, 0x0b, 0x10, 0xc6, 0x07, 0x6f, 0xf0, 0xdc, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x05, 0x08, 0xf3, 0x81, 0x5d, 0x80, 0x50, 0xb3, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0x47, 0xc5, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xbb, 0x00, 0xa1, 0xe1, 0xe0, 0x41, 0x5b, 0x9d, 0x07, 0x8f, 0x13, 0xcc, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x96, 0x01, 0xe2, 0x0f, 0x9e, 0x9e, 0xd4, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x19, 0x20, 0x04, 0x03, 0xcb, 0x00, 0x21, 0x3c, 0x58, 0x2a, 0x49, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x03, 0x84, 0x74, 0x60, 0x19, 0x20, 0x4c, 0x0e, 0xde, 0xd6, 0xcf, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x03, 0x84, 0xcd, 0xc0, 0x32, 0x40, 0xe8, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x0c, 0x10, 0x46, 0x03, 0xcb, 0x00, 0x61, 0xbe, 0xe1, 0x6d, 0x9d, 0x0d, 0xde, 0x95, 0xc3, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x0c, 0x10, 0xf6, 0x03, 0xcb, 0x00, 0xa1, 0x66, 0xc3, 0xdb, 0x3a, 0x07, 0xef, 0x68, 0xe3, 0xac, 0x15, 0xe0, 0xab, 0x23, 0x4b, 0x33, 0x33, 0x9b, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x9e, 0x1b, 0xd7, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xfd, 0xb0, 0x18, 0x48, 0xed, 0x87, 0x9a, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xed, 0x87, 0xc9, 0x40, 0x6a, 0x3f, 0xcc, 0x0e, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xed, 0x87, 0xdd, 0x40, 0x6a, 0x3f, 0xb4, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xed, 0x87, 0xe1, 0x40, 0x6a, 0x3f, 0xac, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0xd3, 0xd7, 0xe3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xda, 0x0f, 0xcb, 0x83, 0x77, 0xf8, 0x75, 0x1e, 0xb4, 0x6d, 0x3d, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xf6, 0xc3, 0x7c, 0x20, 0xb5, 0x1f, 0x4a, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x1b, 0xb0, 0x37, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb5, 0x1f, 0xf6, 0x07, 0xcf, 0x21, 0xec, 0xdc, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0x01, 0x7b, 0xb3, 0x6a, 0xd6, 0xe0, 0xe4, 0x67, 0xb0, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x8b, 0x00, 0xf1, 0x03, 0x8b, 0x00, 0xa1, 0x6d, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x22, 0x40, 0x08, 0x06, 0x16, 0x01, 0x42, 0x78, 0xd0, 0x32, 0x34, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x08, 0x10, 0xd2, 0x81, 0x45, 0x80, 0xb0, 0x38, 0x38, 0x11, 0xb4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x8b, 0x00, 0x61, 0x32, 0xb0, 0x08, 0x10, 0xca, 0x36, 0x7c, 0xd4, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x8b, 0x00, 0x61, 0x73, 0xf0, 0xfa, 0xc9, 0xce, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x8b, 0x00, 0x61, 0x34, 0xb0, 0x08, 0x10, 0xf6, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x08, 0x10, 0x56, 0x03, 0x8b, 0x00, 0x61, 0x79, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x22, 0x40, 0x98, 0x0e, 0x2c, 0x02, 0x84, 0xf9, 0xc1, 0x1b, 0x3c, 0x37, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x16, 0x01, 0x42, 0xc1, 0xc0, 0x22, 0x40, 0xe8, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x45, 0x80, 0xd0, 0x30, 0xb0, 0x08, 0x10, 0x5a, 0x0e, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x04, 0x08, 0x35, 0x03, 0x8b, 0x00, 0xa1, 0xea, 0xe0, 0x0d, 0x9e, 0x9b, 0xd5, 0xe1, 0x14, 0x5b, 0x00, 0xcf, 0x3a, 0xb2, 0x34, 0x33, 0xb3, 0x16, 0xba, 0xb7, 0x16, 0xb2, 0x34, 0x33, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xfc, 0xf1, 0x03, 0x89, 0xff, 0x90, 0x6c, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf2, 0x87, 0x6c, 0x20, 0xc9, 0x1f, 0xe6, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xfc, 0x21, 0x1c, 0x48, 0xf2, 0x87, 0xd1, 0x86, 0x3f, 0x97, 0x06, 0x78, 0xc3, 0x5a, 0xea, 0xc8, 0xd2, 0xcc, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf2, 0x87, 0xfc, 0xe0, 0x31, 0xb2, 0x9d, 0x07, 0x8f, 0x40, 0xec, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xfc, 0x61, 0x35, 0x90, 0xe4, 0x0f, 0xeb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x3a, 0x2a, 0xce, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf2, 0x87, 0xe1, 0xc1, 0xab, 0x71, 0x3b, 0x0f, 0x1e, 0x27, 0x98, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xf9, 0xe3, 0x0f, 0x5e, 0xcc, 0xda, 0xb9, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcb, 0x1f, 0xb2, 0x81, 0x2c, 0x7f, 0x98, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x3f, 0x84, 0x03, 0x59, 0xfe, 0x30, 0x38, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x7f, 0x58, 0x0c, 0x64, 0xf9, 0xc3, 0xea, 0xe0, 0x0d, 0x9e, 0x9b, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9a, 0x3f, 0xfe, 0xe0, 0xc5, 0xac, 0x9d, 0x1b, 0x04, 0xe9, 0xe9, 0x1a, 0x52, 0x07, 0x1b, 0x3c, 0x66, 0xb6, 0xb3, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x7f, 0xc8, 0x06, 0xf2, 0xfc, 0x61, 0x73, 0xf0, 0x86, 0x0e, 0xce, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf3, 0x87, 0xd5, 0x40, 0x9e, 0x3f, 0x54, 0x6e, 0xb0, 0xa4, 0x7e, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf3, 0x87, 0xe1, 0x40, 0x9e, 0x3f, 0xd4, 0x6d, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x01, 0x3c, 0xd5, 0x91, 0xa5, 0x99, 0x99, 0xb5, 0xd0, 0xbd, 0xb5, 0x90, 0xa5, 0x99, 0x99, 0xb5, 0x90, 0xa5, 0xcd, 0x85, 0xd9, 0xbd, 0xdd, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe7, 0x0f, 0x7d, 0x03, 0x79, 0xfe, 0xd0, 0x78, 0x10, 0x9e, 0xaa, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xfe, 0x90, 0x0d, 0x24, 0xfa, 0xc3, 0xe0, 0xe0, 0x19, 0x7b, 0x9b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe8, 0x0f, 0xab, 0x81, 0x44, 0x7f, 0x68, 0xdf, 0xe0, 0x18, 0x6e, 0xb0, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xfe, 0x30, 0x3b, 0x78, 0xc8, 0x77, 0xe7, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x7f, 0xd8, 0x0d, 0x24, 0xfa, 0xc3, 0xf8, 0xe0, 0xb5, 0x3d, 0x9d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa2, 0x3f, 0xac, 0x07, 0x12, 0xfd, 0xa1, 0xec, 0xe0, 0xfd, 0xca, 0x9c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa2, 0x3f, 0xb4, 0x0d, 0x24, 0xfa, 0x43, 0xf9, 0x86, 0xb7, 0x75, 0x36, 0x78, 0x30, 0x1d, 0xd7, 0xc1, 0xcb, 0x96, 0x3b, 0x5b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xf4, 0x87, 0x6c, 0x20, 0xd3, 0x1f, 0x06, 0x07, 0x8f, 0xaa, 0xda, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x7f, 0x48, 0x06, 0xd2, 0xfd, 0xa1, 0x6b, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf5, 0x87, 0x74, 0x20, 0xd5, 0x1f, 0xca, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xfa, 0x43, 0x3c, 0x90, 0xea, 0x0f, 0x8b, 0xc3, 0x37, 0x8a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xaa, 0x3f, 0x4c, 0x06, 0x52, 0xfd, 0x61, 0xbe, 0xe1, 0x6d, 0x9d, 0x0d, 0x5e, 0x44, 0xeb, 0x78, 0xf0, 0xb2, 0xe5, 0xce, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd5, 0x1f, 0xf6, 0x03, 0xa9, 0xfe, 0xd0, 0x75, 0xf0, 0x0e, 0x36, 0xce, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x7f, 0xc8, 0x06, 0x72, 0xfd, 0x21, 0x3c, 0x28, 0x28, 0x32, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd9, 0x1f, 0x92, 0x83, 0xa7, 0xc4, 0x77, 0x6e, 0xb0, 0xcc, 0x9a, 0x69, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x7f, 0x48, 0x07, 0x92, 0xfd, 0xa1, 0x7e, 0xc3, 0x23, 0xac, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x3f, 0xe4, 0x03, 0xc9, 0xfe, 0xd0, 0xb7, 0xe1, 0x6d, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf6, 0x87, 0xc1, 0xc1, 0x0b, 0x11, 0x3c, 0x37, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xfb, 0xc3, 0x64, 0x20, 0xd9, 0x1f, 0xe6, 0x07, 0xaf, 0xcf, 0xef, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x7f, 0xd8, 0x0f, 0x24, 0xfb, 0x43, 0xdd, 0x86, 0x8f, 0xa3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd9, 0x1f, 0x1a, 0x06, 0x92, 0xfd, 0xa1, 0xed, 0xe0, 0x1d, 0x6c, 0x9c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x3f, 0x14, 0x0e, 0x24, 0xfb, 0x43, 0xfb, 0x86, 0xb7, 0x59, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd9, 0x1f, 0x1a, 0x0f, 0xde, 0x66, 0xe1, 0xb9, 0xe1, 0x6d, 0x9d, 0x0d, 0x5e, 0x6c, 0xbd, 0x72, 0xf0, 0xb2, 0xe5, 0xce, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x7f, 0xc8, 0x06, 0xb2, 0xfd, 0xa1, 0x78, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb6, 0x3f, 0x84, 0x03, 0xd9, 0xfe, 0xd0, 0xb3, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x05, 0xf0, 0x59, 0x47, 0x96, 0x66, 0x66, 0xd6, 0x42, 0xf7, 0xd6, 0x42, 0x96, 0x66, 0x66, 0xd6, 0x32, 0xb7, 0x96, 0x06, 0x07, 0x57, 0x46, 0xd6, 0x22, 0x97, 0x66, 0x46, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xfe, 0x50, 0x34, 0x90, 0xed, 0x0f, 0x7d, 0x1b, 0xde, 0xd6, 0x39, 0x78, 0xd9, 0x72, 0xe7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xed, 0x0f, 0x85, 0x03, 0xd9, 0xfe, 0xd0, 0x7b, 0xf0, 0x4c, 0xb8, 0xce, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdd, 0x1f, 0x92, 0x83, 0xa7, 0xc4, 0x77, 0x6e, 0x70, 0x0c, 0x37, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x7f, 0x88, 0x0e, 0x9e, 0x12, 0xdf, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdd, 0x1f, 0xb2, 0x81, 0x74, 0x7f, 0x18, 0x1c, 0x3c, 0x28, 0xa3, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xf7, 0x87, 0xc5, 0x40, 0xba, 0x3f, 0xac, 0x0f, 0xde, 0xc1, 0xc6, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xfb, 0xc3, 0x7c, 0x20, 0xdd, 0x1f, 0xaa, 0x0e, 0x5e, 0x9f, 0xdf, 0xd9, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x3f, 0x64, 0x03, 0x09, 0xff, 0x30, 0x38, 0x78, 0xd8, 0x69, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xfc, 0x43, 0x32, 0x90, 0xf7, 0x0f, 0x4d, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x3f, 0xa4, 0x03, 0x19, 0xff, 0x50, 0xb6, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe3, 0x1f, 0xe2, 0x81, 0x8c, 0x7f, 0x58, 0x1c, 0xbe, 0x51, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xfe, 0x61, 0x32, 0x90, 0xf1, 0x0f, 0xf3, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x18, 0x1b, 0xbb, 0x83, 0x97, 0x2d, 0x77, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xff, 0xb0, 0x1f, 0xc8, 0xf8, 0x87, 0xae, 0x83, 0xb7, 0x0f, 0x72, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xfc, 0x43, 0x36, 0x90, 0xf2, 0x0f, 0xe1, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xff, 0x90, 0x1c, 0xbc, 0xb2, 0xc7, 0x73, 0x83, 0x65, 0xd6, 0x4c, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xfc, 0x43, 0x3a, 0x90, 0xf3, 0x0f, 0xf5, 0x1b, 0x1e, 0x61, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xfe, 0x21, 0x1f, 0xc8, 0xf9, 0x87, 0xbe, 0x0d, 0x6f, 0xb3, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x3f, 0x0c, 0x0e, 0x1e, 0x4f, 0xe5, 0xb9, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe7, 0x1f, 0x26, 0x03, 0x39, 0xff, 0x30, 0x3f, 0x78, 0x98, 0x91, 0xe7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xfc, 0xc3, 0x7e, 0x20, 0xe7, 0x1f, 0xea, 0x36, 0x7c, 0x1c, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xff, 0xd0, 0x30, 0x90, 0xf3, 0x0f, 0x6d, 0x07, 0x6f, 0x1f, 0xe4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xfe, 0xa1, 0x70, 0x20, 0xe7, 0x1f, 0xda, 0x37, 0xbc, 0xcd, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xff, 0xd0, 0x78, 0xf0, 0x6c, 0x31, 0xcf, 0x83, 0xd7, 0x66, 0x78, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xfd, 0x43, 0x36, 0x90, 0xf4, 0x0f, 0xc5, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xfe, 0x21, 0x1c, 0x48, 0xfa, 0x87, 0x9e, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0x2e, 0x80, 0xcf, 0x3a, 0xb2, 0x34, 0x33, 0xb3, 0x16, 0xba, 0xb7, 0x16, 0xb2, 0x34, 0x33, 0xb3, 0x96, 0xb9, 0xb5, 0x34, 0x38, 0xb8, 0x32, 0xb2, 0x16, 0xb6, 0x34, 0xb3, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xfa, 0x87, 0xa2, 0x81, 0xa4, 0x7f, 0xe8, 0x3b, 0x78, 0xc1, 0x89, 0xe7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf4, 0x0f, 0x85, 0x03, 0x49, 0xff, 0xd0, 0x7b, 0xf0, 0x4c, 0xb8, 0xce, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xeb, 0x1f, 0x92, 0x83, 0x57, 0xf6, 0x78, 0x6e, 0xb0, 0xa8, 0x3c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xfa, 0x87, 0x74, 0x20, 0xeb, 0x1f, 0xe2, 0x83, 0x82, 0x22, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xfa, 0x87, 0xc1, 0x40, 0xd6, 0x3f, 0xac, 0x0e, 0x1e, 0xbb, 0xd2, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xfd, 0x43, 0x36, 0x90, 0xf6, 0x0f, 0x5f, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xfd, 0x43, 0x38, 0x90, 0xf6, 0x0f, 0xc3, 0x83, 0xb7, 0x0f, 0x72, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xff, 0xb0, 0x1c, 0x48, 0xfb, 0x87, 0x2b, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xfe, 0x61, 0x3a, 0x90, 0xf6, 0x0f, 0x85, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x3c, 0xb8, 0x2b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xfb, 0x87, 0x82, 0x81, 0xb4, 0x7f, 0xa8, 0x38, 0x28, 0x9b, 0xea, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x7f, 0xe8, 0x18, 0x48, 0xfb, 0x87, 0xbe, 0x83, 0xd7, 0x68, 0x72, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xfd, 0x43, 0xe3, 0x40, 0xda, 0x3f, 0xb4, 0x1f, 0xbc, 0x7d, 0x90, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xfb, 0x87, 0xfa, 0x81, 0xb4, 0x7f, 0x78, 0xb2, 0x41, 0x21, 0x98, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xff, 0xd0, 0x7f, 0xf0, 0x40, 0x4a, 0xcf, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xff, 0x70, 0x60, 0x20, 0xed, 0x1f, 0x3e, 0x1c, 0x94, 0x59, 0xba, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xda, 0x3f, 0x9c, 0x18, 0x48, 0xfb, 0x87, 0x23, 0x07, 0x0f, 0xb8, 0xc9, 0xac, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xef, 0x1f, 0x92, 0x83, 0x57, 0xf6, 0x78, 0x6e, 0x78, 0x50, 0x72, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xff, 0x10, 0x0d, 0xe4, 0xfd, 0x43, 0xbc, 0xe1, 0x6d, 0x9d, 0x83, 0x87, 0xeb, 0x3a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xff, 0x90, 0x0f, 0xe4, 0xfd, 0xc3, 0x76, 0xc3, 0xdb, 0x3a, 0x1b, 0xbc, 0x31, 0x78, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xef, 0x1f, 0xc6, 0x03, 0x79, 0xff, 0x50, 0xb0, 0xe1, 0x6d, 0x9d, 0x83, 0xd7, 0xdd, 0x64, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xff, 0x50, 0x71, 0xf0, 0xca, 0x1e, 0xcf, 0x83, 0x17, 0x9c, 0x78, 0x76, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x6a, 0xf0, 0x48, 0x3a, 0x91, 0x0d, 0xcf, 0x93, 0x6c, 0xf0, 0x74, 0x21, 0xbb, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x47, 0xd2, 0x89, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe2, 0x3d, 0x6e, 0x20, 0xfb, 0x1e, 0xbf, 0x41, 0xd0, 0xfe, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xf7, 0x90, 0x0c, 0x24, 0xde, 0xc3, 0x9d, 0x0d, 0x4f, 0xbc, 0x6f, 0xf0, 0xc0, 0x79, 0xbc, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xf7, 0x10, 0x0d, 0x24, 0xde, 0x43, 0x7e, 0xb0, 0x0a, 0x25, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbc, 0x87, 0xc1, 0x40, 0xe2, 0x3d, 0xf4, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x47, 0xe9, 0xe3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe2, 0x3d, 0xcc, 0x0e, 0xde, 0xcb, 0xeb, 0xb9, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xf7, 0xb0, 0x1b, 0x48, 0xbc, 0x87, 0xed, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xde, 0xc3, 0x78, 0x20, 0xf1, 0x1e, 0x6a, 0x0e, 0x1e, 0xf8, 0x8f, 0x57, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe6, 0x3d, 0x24, 0x03, 0x99, 0xf7, 0x70, 0x64, 0xc3, 0x13, 0xef, 0x1b, 0x3c, 0x42, 0x13, 0x6f, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe6, 0x3d, 0x44, 0x03, 0x99, 0xf7, 0x90, 0x1f, 0x3c, 0xbf, 0x13, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xbc, 0x87, 0xc1, 0x40, 0xe6, 0x3d, 0x2c, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0x13, 0xda, 0xd7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x79, 0x0f, 0xc3, 0x83, 0x77, 0x3c, 0x7b, 0x1e, 0x84, 0xe9, 0x58, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x3d, 0x24, 0x03, 0xa9, 0xf7, 0xf0, 0x63, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3f, 0x38, 0xb9, 0x34, 0xbb, 0x30, 0xba, 0x32, 0x90, 0xb5, 0xb2, 0xbc, 0xb9, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xf7, 0x10, 0x0d, 0xa4, 0xde, 0xc3, 0x6e, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x6f, 0x9e, 0x0e, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xef, 0x61, 0x38, 0x90, 0x7a, 0x0f, 0xeb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x18, 0x1b, 0xbb, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbd, 0x87, 0xe5, 0xc1, 0x6b, 0xbc, 0x3d, 0x0f, 0xde, 0xa6, 0xeb, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xde, 0xc3, 0x7c, 0x20, 0xf5, 0x1e, 0x2a, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0xda, 0xb4, 0xe6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbd, 0x87, 0x8e, 0x83, 0x67, 0x91, 0x7b, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x3d, 0x94, 0x0c, 0xa4, 0xde, 0x43, 0xcf, 0x41, 0x89, 0x58, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xde, 0x43, 0xd1, 0x40, 0xea, 0x3d, 0x94, 0x1d, 0xbc, 0x4d, 0xd7, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbd, 0x87, 0xb6, 0x81, 0xd4, 0x7b, 0x68, 0xdc, 0xf0, 0xef, 0xfc, 0x1a, 0xb4, 0xd2, 0x41, 0x5e, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xde, 0x43, 0x32, 0x90, 0x7b, 0x0f, 0x5f, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x2f, 0xa3, 0x43, 0x2b, 0x93, 0x2b, 0xab, 0x6b, 0x03, 0x19, 0x43, 0x0b, 0x73, 0x3b, 0x2b, 0x9b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7b, 0x0f, 0xd1, 0x40, 0xee, 0x3d, 0xcc, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x70, 0xef, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf7, 0x1e, 0x76, 0x03, 0xb9, 0xf7, 0x50, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0xf8, 0x80, 0xab, 0x13, 0x63, 0x4b, 0x1b, 0x6b, 0x59, 0x2b, 0xcb, 0x9b, 0x6b, 0x91, 0x2b, 0x9b, 0xab, 0x63, 0xa3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf7, 0x1e, 0x86, 0x07, 0x2f, 0xe9, 0xf7, 0xdc, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0xc5, 0xdf, 0xb3, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xef, 0x21, 0x19, 0x48, 0xbe, 0x87, 0x0b, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xbc, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xef, 0x21, 0x1a, 0x48, 0xbe, 0x87, 0xfc, 0xe0, 0xb1, 0x1c, 0x8d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf2, 0x3d, 0x0c, 0x06, 0x92, 0xef, 0xa1, 0x60, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x84, 0x3d, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xef, 0x61, 0x75, 0xf0, 0xb4, 0x86, 0xcf, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbe, 0x87, 0xd9, 0x40, 0xf2, 0x3d, 0x4c, 0x0f, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xbe, 0x87, 0xed, 0x40, 0xf2, 0x3d, 0xec, 0x0f, 0x5e, 0x8e, 0xd2, 0x58, 0xad, 0x06, 0x49, 0x0b, 0xc2, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa5, 0x8f, 0x1b, 0xc8, 0xd5, 0xc7, 0x6f, 0x78, 0x50, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xd2, 0x87, 0x64, 0x20, 0x4b, 0x1f, 0xe2, 0x0d, 0x6f, 0xeb, 0x1c, 0x24, 0x2c, 0x08, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9a, 0x3e, 0xee, 0xe0, 0xb1, 0x19, 0x9f, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0x3e, 0x5a, 0xd8, 0x1c, 0xba, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x66, 0x90, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xd3, 0x87, 0xc5, 0x40, 0x9e, 0x3e, 0xac, 0x37, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x07, 0x78, 0xd5, 0xe1, 0x89, 0xb1, 0xbd, 0x8d, 0xad, 0xa1, 0x85, 0xcd, 0xa1, 0xab, 0x41, 0xd2, 0x82, 0xf0, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0x41, 0xd2, 0x82, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xea, 0xc3, 0x62, 0x20, 0x55, 0x1f, 0x3a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xea, 0xc3, 0x64, 0x20, 0x55, 0x1f, 0x56, 0x1b, 0xfe, 0x5c, 0x1a, 0xf8, 0x34, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xf5, 0x61, 0x73, 0xf0, 0xfc, 0x96, 0xcf, 0x0d, 0xff, 0xce, 0x6f, 0xd0, 0x4a, 0x4e, 0x68, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xaa, 0x3e, 0xcc, 0x06, 0x52, 0xf5, 0xa1, 0x62, 0xc3, 0x9f, 0x4b, 0x03, 0x78, 0xc1, 0x85, 0xc9, 0x95, 0xb9, 0xd1, 0xb5, 0xa0, 0x85, 0xcd, 0xa1, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xaa, 0x0f, 0xf3, 0x83, 0xa7, 0xd1, 0x7c, 0x6e, 0xf8, 0x77, 0x7e, 0x0d, 0xde, 0x0c, 0xf2, 0x59, 0x1d, 0x4e, 0xb1, 0x35, 0x78, 0x08, 0xc9, 0xe6, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x43, 0x48, 0x36, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x51, 0x1f, 0x16, 0x03, 0x89, 0xfa, 0xb0, 0xdf, 0xf0, 0x45, 0xcd, 0x86, 0x3a, 0x1e, 0xe0, 0x59, 0x47, 0x26, 0xc6, 0xf6, 0x36, 0xb6, 0xe6, 0x56, 0xd7, 0x26, 0x56, 0x26, 0xaf, 0xc0, 0xa7, 0x91, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0xc0, 0xa7, 0x91, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa9, 0x0f, 0x8b, 0x81, 0x4c, 0x7d, 0x28, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa9, 0x0f, 0x93, 0x81, 0x4c, 0x7d, 0xd8, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x37, 0x83, 0x7c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa6, 0x3e, 0x6c, 0x0e, 0x1e, 0x7e, 0xf4, 0x79, 0xf0, 0xa6, 0x9c, 0xcf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x53, 0x1f, 0x86, 0x03, 0x99, 0xfa, 0xb0, 0xdf, 0xf0, 0xe7, 0xd2, 0x06, 0x0f, 0x21, 0xd9, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x7d, 0x58, 0x1e, 0xbc, 0xc0, 0xe9, 0x73, 0xc3, 0xbf, 0xf3, 0x1b, 0x3c, 0x83, 0x64, 0xb3, 0x0e, 0xa7, 0x58, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x2d, 0x80, 0xc7, 0xdc, 0x5b, 0x9d, 0xdc, 0x58, 0x59, 0x4b, 0x1a, 0xb9, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xfe, 0xa9, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x14, 0x08, 0x93, 0x81, 0x45, 0x81, 0xb0, 0xde, 0xf0, 0x45, 0xcd, 0x86, 0x3a, 0x1e, 0xe0, 0x53, 0x47, 0x36, 0xf7, 0x56, 0x27, 0x37, 0x56, 0x96, 0x46, 0xce, 0x02, 0x1e, 0xdc, 0x5a, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x7b, 0x03, 0x21, 0x1c, 0xd8, 0x27, 0x08, 0x83, 0x0d, 0x52, 0x2f, 0x8a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x71, 0x20, 0xee, 0xe0, 0xb1, 0x5d, 0x9f, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x1e, 0xdc, 0x5a, 0xda, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x80, 0xdf, 0x96, 0xe6, 0x46, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x68, 0xec, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x08, 0x42, 0x3e, 0xb0, 0x47, 0x10, 0xbe, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xbb, 0x56, 0x96, 0x07, 0x92, 0x46, 0x56, 0xe6, 0x46, 0x97, 0x66, 0x96, 0x56, 0x26, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x8f, 0x20, 0x0c, 0x06, 0xf6, 0x08, 0xc2, 0x70, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x1d, 0xda, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x7b, 0x04, 0x61, 0x74, 0xf0, 0x64, 0xb6, 0xcf, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3d, 0x82, 0xb0, 0x1c, 0xd8, 0x23, 0x08, 0x0d, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xd8, 0xf2, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x23, 0x08, 0xeb, 0x83, 0xc7, 0xcb, 0x7d, 0x1e, 0xbc, 0x4d, 0xd7, 0xb1, 0x15, 0xf0, 0xdf, 0xc2, 0xe8, 0xd0, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xe7, 0xdd, 0x7d, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x26, 0x41, 0xc8, 0x07, 0x36, 0x09, 0xc2, 0x8d, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xe6, 0xd2, 0xce, 0xdc, 0xc2, 0xe8, 0xea, 0xe4, 0xca, 0x0e, 0x3f, 0xd4, 0xcc, 0x1a, 0xac, 0x22, 0xf9, 0xd9, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x58, 0x45, 0xf2, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x6b, 0x04, 0x21, 0x1f, 0x58, 0x23, 0x08, 0x4f, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x8b, 0x91, 0xc1, 0x69, 0x11, 0x4b, 0xa3, 0x03, 0x41, 0x0b, 0x9b, 0x43, 0x3b, 0x48, 0xf7, 0x97, 0x9d, 0x35, 0x78, 0xb5, 0xbf, 0xcb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xab, 0xfd, 0x5d, 0x1a, 0x40, 0xb7, 0x4e, 0x4e, 0x2c, 0x8d, 0xae, 0x65, 0x2e, 0xed, 0xcc, 0xad, 0x8c, 0x0c, 0x44, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xbb, 0x04, 0xf1, 0x03, 0xeb, 0x04, 0x21, 0xd9, 0xf0, 0x70, 0xfe, 0x06, 0x8d, 0x35, 0x67, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x32, 0x41, 0xfc, 0xc1, 0xcb, 0x18, 0x3f, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x13, 0x84, 0x6c, 0x60, 0x99, 0x20, 0x3c, 0xd8, 0xf0, 0xc4, 0xfb, 0x06, 0x4f, 0x02, 0xdc, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x45, 0x6d, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x2c, 0x13, 0x84, 0x7c, 0x60, 0x99, 0x20, 0x4c, 0x0e, 0x1e, 0x17, 0x7d, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x6c, 0x13, 0x84, 0x6c, 0x60, 0x9b, 0x20, 0xfc, 0xd8, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x67, 0x2e, 0xed, 0xcc, 0x2d, 0x8c, 0xae, 0x4e, 0xae, 0x6c, 0x6e, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x5c, 0xde, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xdb, 0x04, 0x21, 0x1f, 0xd8, 0x26, 0x08, 0x55, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x4d, 0x10, 0x06, 0x03, 0xdb, 0x04, 0x61, 0x73, 0x50, 0x22, 0xd6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xdb, 0x04, 0x61, 0x34, 0xb0, 0x4d, 0x10, 0x86, 0x07, 0x6d, 0x5b, 0x8f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xdb, 0x04, 0x61, 0x39, 0xb0, 0x4d, 0x10, 0x9a, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x9b, 0x20, 0x4c, 0x07, 0xb6, 0x09, 0xc2, 0xfc, 0xa0, 0xf4, 0xa6, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb6, 0x09, 0xc2, 0x7e, 0x60, 0x9b, 0x20, 0x74, 0x1c, 0xbc, 0x4d, 0xd7, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x26, 0x08, 0x25, 0x03, 0xdb, 0x04, 0xa1, 0x68, 0xc3, 0xbf, 0xf3, 0x6b, 0xf0, 0xbc, 0xbb, 0xcf, 0xaa, 0x0e, 0xa7, 0xd8, 0x1a, 0xbe, 0x6f, 0xdf, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x8b, 0x04, 0x21, 0x1f, 0x58, 0x24, 0x08, 0x67, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x0e, 0x9b, 0x1b, 0x4b, 0x4b, 0x03, 0x79, 0x01, 0xa9, 0x73, 0x4b, 0x1b, 0x7b, 0x23, 0x2b, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x45, 0x82, 0x30, 0x18, 0x58, 0x24, 0x08, 0xa3, 0x83, 0xd2, 0x9b, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x58, 0x24, 0x08, 0xab, 0x81, 0x45, 0x82, 0x30, 0x3c, 0x38, 0x6a, 0x83, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x8b, 0x04, 0x61, 0x39, 0xb0, 0x48, 0x10, 0xb6, 0x07, 0xe7, 0xd9, 0xd1, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x9b, 0x05, 0x7c, 0xb3, 0xb2, 0x32, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0x31, 0xc3, 0x9f, 0x0d, 0xc0, 0x23, 0xdc, 0x1b, 0x5d, 0x99, 0x1b, 0x5d, 0x5a, 0x18, 0x1b, 0x88, 0xd8, 0xdb, 0x1b, 0x1d, 0x08, 0x5c, 0x98, 0x5c, 0x58, 0x5b, 0x19, 0x5d, 0x99, 0xdc, 0xdc, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x63, 0x86, 0x3f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x03, 0x1f, 0x37, 0x90, 0x84, 0x0f, 0xad, 0x1b, 0x2c, 0x5d, 0xae, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xf0, 0x21, 0x19, 0xc8, 0xc1, 0x87, 0x6c, 0x83, 0xa0, 0xfd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xf0, 0x21, 0x1d, 0xc8, 0xc0, 0x87, 0xf6, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xf8, 0x10, 0x0f, 0x64, 0xe0, 0xc3, 0x68, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x06, 0x3e, 0xe4, 0x03, 0x19, 0xf8, 0xb0, 0x38, 0x08, 0x1c, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x03, 0x1f, 0x26, 0x03, 0x19, 0xf8, 0xb0, 0x39, 0x08, 0xc1, 0x87, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x7c, 0x58, 0x0d, 0x64, 0xe0, 0xc3, 0x7a, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x1d, 0xda, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xf8, 0xb0, 0x3c, 0x78, 0x3b, 0xf7, 0xe7, 0x41, 0xdb, 0xd6, 0xe3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x06, 0x3e, 0xcc, 0x07, 0x32, 0xf0, 0xa1, 0x7c, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x5a, 0x9e, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xf8, 0x50, 0x71, 0xf0, 0x84, 0xf1, 0xcf, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc0, 0x87, 0x8e, 0x81, 0x0c, 0x7c, 0xe8, 0x39, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x03, 0x1f, 0x8a, 0x06, 0x32, 0xf0, 0xa1, 0x7b, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x06, 0x3e, 0x34, 0x0d, 0x64, 0xe0, 0x43, 0xe3, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb6, 0x3c, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xf0, 0xa1, 0xed, 0xe0, 0xad, 0xee, 0x9f, 0x07, 0x6f, 0xd3, 0x75, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xf0, 0xa1, 0x72, 0x20, 0x03, 0x1f, 0xaa, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0xd1, 0x7a, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xf8, 0x50, 0x7b, 0xf0, 0x6c, 0xfa, 0xcf, 0x83, 0xc7, 0xc2, 0x7b, 0x56, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0a, 0x3e, 0xa4, 0x03, 0x29, 0xf8, 0x70, 0x63, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0a, 0x3e, 0xc4, 0x03, 0x29, 0xf8, 0x30, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x82, 0x0f, 0xf9, 0x40, 0x0a, 0x3e, 0x2c, 0x0e, 0x82, 0xd8, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc1, 0x87, 0xc9, 0x40, 0x0a, 0x3e, 0x6c, 0x0e, 0x42, 0xf0, 0xa1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x05, 0x1f, 0x56, 0x03, 0x29, 0xf8, 0xb0, 0xde, 0xf0, 0xe7, 0xd2, 0x80, 0x77, 0x87, 0xf6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0a, 0x3e, 0x2c, 0x0f, 0x5e, 0x60, 0x00, 0x7a, 0xd0, 0xb6, 0xf5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x82, 0x0f, 0xf3, 0x81, 0x14, 0x7c, 0xa8, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0x0d, 0x67, 0x6b, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0a, 0x3e, 0x54, 0x1c, 0x3c, 0x84, 0x01, 0xf4, 0xe0, 0x0d, 0xb6, 0x8e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0a, 0x3e, 0xf4, 0x0c, 0xa4, 0xe0, 0xc3, 0x8b, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6b, 0x79, 0xfa, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xe0, 0x43, 0xd7, 0xc1, 0x9b, 0x24, 0x40, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x05, 0x1f, 0xca, 0x06, 0x52, 0xf0, 0xa1, 0xf0, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x7c, 0x68, 0x1c, 0x48, 0xc1, 0x87, 0x13, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xf0, 0xa1, 0x72, 0x20, 0x05, 0x1f, 0xaa, 0x37, 0xfc, 0xb9, 0x34, 0xe0, 0xb1, 0xe5, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x82, 0x0f, 0xb5, 0x07, 0xcf, 0xef, 0x00, 0x3d, 0x78, 0x9b, 0xae, 0xe3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x82, 0x0f, 0xdd, 0x03, 0x29, 0xf8, 0xf0, 0x61, 0xc3, 0x9f, 0x4b, 0x1b, 0x14, 0xad, 0x27, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x82, 0x0f, 0xfd, 0x07, 0x2f, 0x21, 0x01, 0x3d, 0x78, 0x2c, 0xbc, 0x67, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xe1, 0xe3, 0x0e, 0x5e, 0xc5, 0xfc, 0xb9, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x09, 0x1f, 0x3b, 0x90, 0x84, 0x0f, 0xf1, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0x3b, 0xb4, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xf0, 0x21, 0x3a, 0x78, 0x3d, 0x0b, 0xe8, 0x41, 0xdb, 0xd6, 0xe3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x3e, 0xe4, 0x03, 0x49, 0xf8, 0xb0, 0xdb, 0xf0, 0xe7, 0xd2, 0x80, 0xc7, 0x96, 0x67, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x3e, 0x6c, 0x0e, 0x5e, 0x30, 0x03, 0x7a, 0xf0, 0x36, 0x5d, 0xc7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x09, 0x1f, 0x86, 0x03, 0x49, 0xf8, 0x50, 0xb0, 0xe1, 0xcf, 0xa5, 0x0d, 0x8a, 0xd6, 0x93, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc2, 0x87, 0xf1, 0xc1, 0x4b, 0x72, 0x40, 0x0f, 0x1e, 0x0b, 0xef, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xe1, 0x43, 0xc3, 0x40, 0x12, 0x3e, 0x94, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0xc4, 0xc4, 0xa3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc2, 0x87, 0x96, 0x83, 0xf7, 0xfc, 0x80, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x3e, 0xd4, 0x0c, 0x24, 0xe1, 0x43, 0xd5, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xe1, 0x43, 0xd7, 0x40, 0x12, 0x3e, 0x74, 0x6e, 0xf8, 0x77, 0x7e, 0x83, 0x37, 0xc5, 0x7e, 0x6e, 0xf0, 0xf2, 0xb0, 0xcf, 0xea, 0x70, 0x8a, 0x2d, 0x80, 0x0f, 0x59, 0xd8, 0x9d, 0x5b, 0x4b, 0x99, 0x5d, 0x99, 0x1b, 0xbd, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x5e, 0x25, 0xd0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xce, 0xc7, 0x0d, 0xa4, 0xe8, 0xe3, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xe7, 0x43, 0x32, 0x90, 0x9c, 0x0f, 0xf1, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xcc, 0xf0, 0xe7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xe7, 0x43, 0x74, 0xf0, 0xfa, 0x28, 0xd0, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x63, 0x86, 0x3f, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xce, 0x87, 0x64, 0x20, 0x3b, 0x1f, 0x0a, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0xcb, 0xf7, 0x36, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3b, 0x1f, 0xe2, 0x83, 0x67, 0x62, 0x81, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x76, 0x3e, 0xe4, 0x03, 0xd9, 0xf9, 0xb0, 0x39, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3b, 0x1f, 0x46, 0x03, 0xd9, 0xf9, 0xd0, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3b, 0x1f, 0x56, 0x03, 0xd9, 0xf9, 0x30, 0xdd, 0xf0, 0xe7, 0xd2, 0x06, 0x4d, 0x5f, 0x8f, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x76, 0x3e, 0xcc, 0x0e, 0x5e, 0x42, 0x06, 0x7a, 0xd0, 0xb6, 0xf5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9d, 0x0f, 0xdb, 0x81, 0xec, 0x7c, 0xa8, 0xdb, 0xf0, 0xef, 0xfc, 0x06, 0x2f, 0x17, 0xcc, 0x5c, 0x00, 0xcf, 0x30, 0xbd, 0xb4, 0xb6, 0x3a, 0x3a, 0xb4, 0x16, 0xba, 0x3c, 0xb8, 0xb2, 0xb9, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xcf, 0x87, 0x64, 0x20, 0x3d, 0x1f, 0xca, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0x8f, 0xe9, 0x85, 0xc9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9e, 0x0f, 0xf1, 0xc1, 0x33, 0xdf, 0x40, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3d, 0x1f, 0xf2, 0x81, 0xf4, 0x7c, 0x98, 0x1c, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x3e, 0x6c, 0x06, 0xd2, 0xf3, 0x61, 0x77, 0xd0, 0xb6, 0xf5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9e, 0x0f, 0xc3, 0x81, 0xf4, 0x7c, 0xe8, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9e, 0x0f, 0xcb, 0x81, 0xf4, 0x7c, 0x98, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0x17, 0xd1, 0x3a, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x3e, 0x4c, 0x0f, 0x1e, 0xe2, 0x07, 0x7a, 0xf0, 0x06, 0x5b, 0xc7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3d, 0x1f, 0xf6, 0x03, 0xe9, 0xf9, 0x50, 0xb2, 0xe1, 0xcf, 0xa5, 0x0d, 0x1e, 0x63, 0x63, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xf9, 0x50, 0x70, 0xf0, 0x22, 0x42, 0xd0, 0x83, 0xb7, 0xe9, 0x3a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xf9, 0xd0, 0x32, 0x90, 0x9e, 0x0f, 0x55, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0x85, 0xd3, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xcf, 0x87, 0x9a, 0x83, 0xd7, 0x29, 0x82, 0x1e, 0x3c, 0xe0, 0x26, 0xb3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x7c, 0x48, 0x06, 0xf2, 0xf3, 0x61, 0xb9, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0xc2, 0x1e, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xf9, 0x10, 0x1f, 0x3c, 0x15, 0x12, 0x74, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xf3, 0x21, 0x1f, 0xc8, 0xcf, 0x87, 0xcd, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xf9, 0x30, 0x1a, 0xc8, 0xcf, 0x87, 0xe1, 0xc1, 0xcb, 0x51, 0x1a, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xf4, 0x21, 0x19, 0x48, 0xd0, 0x87, 0xc5, 0x86, 0x3f, 0x97, 0x36, 0x7c, 0x47, 0xbf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xfa, 0x10, 0x1f, 0x3c, 0x8a, 0x13, 0xf4, 0xa0, 0xcc, 0xd2, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xf4, 0x21, 0x19, 0xc8, 0xd0, 0x87, 0xf9, 0x86, 0x3f, 0x97, 0x36, 0x08, 0xf6, 0xb6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xd0, 0x87, 0xf8, 0xe0, 0x31, 0xa2, 0xa0, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa1, 0x0f, 0xf9, 0x40, 0x86, 0x3e, 0x6c, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x43, 0x1f, 0x46, 0x03, 0x19, 0xfa, 0xb0, 0xde, 0xf0, 0xef, 0xfc, 0x06, 0x4f, 0xe8, 0x56, 0x3c, 0x78, 0x6a, 0x81, 0x5d, 0xad, 0x06, 0x6f, 0x8a, 0x1c, 0xd9, 0xf0, 0x3c, 0xc9, 0x06, 0xaf, 0x19, 0xb7, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x53, 0xe4, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xe1, 0xe3, 0x06, 0x32, 0xf3, 0xf1, 0x1b, 0x84, 0x1a, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x87, 0x0f, 0xc9, 0x40, 0x1e, 0x3e, 0x4c, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xe1, 0x43, 0x34, 0x90, 0x87, 0x0f, 0xf9, 0xc1, 0xeb, 0xbf, 0x53, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x7c, 0x18, 0x0c, 0xe4, 0xe1, 0xc3, 0xe2, 0xa0, 0xa0, 0xc8, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xf1, 0x71, 0x07, 0x4f, 0x8e, 0x05, 0xdd, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x7c, 0x48, 0x06, 0x12, 0xf1, 0xe1, 0xc9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbe, 0x62, 0x6f, 0x6f, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xf1, 0x21, 0x1a, 0x48, 0xc4, 0x87, 0x7c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x4f, 0xe9, 0x0e, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xf1, 0x61, 0x30, 0x90, 0x88, 0x0f, 0xd3, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x7b, 0x95, 0x40, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x13, 0x1f, 0x92, 0x81, 0x4c, 0x7c, 0x38, 0xb1, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x87, 0x59, 0xd8, 0x5a, 0x19, 0x88, 0xd8, 0xdb, 0x1b, 0xdd, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x7c, 0x88, 0x06, 0x32, 0xf1, 0x21, 0x3f, 0x78, 0xf3, 0x13, 0xe3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x89, 0x0f, 0x83, 0x81, 0x4c, 0x7c, 0x58, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xa6, 0xaf, 0xc7, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x13, 0x1f, 0x16, 0x07, 0x0f, 0xa1, 0x06, 0x3d, 0x68, 0xdb, 0x7a, 0xbc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x15, 0x1f, 0x92, 0x81, 0x54, 0x7c, 0xb8, 0xb3, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x2f, 0x73, 0x65, 0x74, 0x20, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xf1, 0x21, 0x1a, 0x48, 0xc5, 0x87, 0xc5, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x5e, 0x4b, 0x1e, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xe2, 0xc3, 0x64, 0x20, 0x15, 0x1f, 0x1a, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xdf, 0xa1, 0xbd, 0xcd, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8a, 0x0f, 0xbb, 0x83, 0xe7, 0x90, 0x83, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2a, 0x3e, 0x0c, 0x07, 0x52, 0xf1, 0x61, 0x7b, 0x50, 0x22, 0xbe, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xf8, 0x30, 0x1e, 0x48, 0xc5, 0x87, 0x82, 0x83, 0xb6, 0xad, 0xc7, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xf1, 0xa1, 0x62, 0x20, 0x15, 0x1f, 0x9a, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x33, 0x78, 0x05, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x15, 0x1f, 0x3a, 0x0e, 0x9e, 0x01, 0x0f, 0xba, 0xe1, 0xdf, 0xf9, 0x0d, 0x1e, 0xc1, 0x2b, 0x58, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x3e, 0x24, 0x03, 0xc9, 0xf8, 0xf0, 0x65, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xff, 0xb6, 0x32, 0x3a, 0x90, 0x30, 0x33, 0xba, 0x32, 0x39, 0x10, 0x31, 0xb9, 0xb2, 0xb0, 0x31, 0xb4, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xf8, 0x10, 0x0d, 0x24, 0xe3, 0x43, 0x7e, 0xf0, 0x64, 0x66, 0xbf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x19, 0x1f, 0x06, 0x03, 0xc9, 0xf8, 0xb0, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x4d, 0x5f, 0x8f, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x3e, 0x2c, 0x0e, 0x5e, 0xf8, 0x0f, 0x7a, 0xd0, 0xb6, 0xf5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8c, 0x0f, 0xb3, 0x81, 0x64, 0x7c, 0xd8, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0xc7, 0xd8, 0xd8, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x3e, 0xec, 0x0e, 0x1e, 0x5a, 0x10, 0x7a, 0xf0, 0x36, 0x5d, 0xc7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x19, 0x1f, 0xc6, 0x03, 0xc9, 0xf8, 0xd0, 0xb0, 0xe1, 0xcf, 0xa5, 0x0d, 0x5a, 0x38, 0x1d, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x7c, 0x58, 0x1f, 0xbc, 0x78, 0x21, 0xf4, 0xe0, 0x01, 0x37, 0x99, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xf8, 0x90, 0x0c, 0x64, 0xe3, 0xc3, 0x9b, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x90, 0x2b, 0x3b, 0x4b, 0x9b, 0xa3, 0x2b, 0x93, 0x03, 0x69, 0x7b, 0x7b, 0x73, 0x03, 0x59, 0x2b, 0xcb, 0x9b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8d, 0x0f, 0xd1, 0x40, 0x36, 0x3e, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xad, 0x79, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8d, 0x0f, 0x83, 0x81, 0x6c, 0x7c, 0x58, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xa6, 0xaf, 0xc7, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1b, 0x1f, 0x16, 0x07, 0x0f, 0xde, 0x08, 0x3d, 0x68, 0xdb, 0x7a, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc6, 0x87, 0xd9, 0x40, 0x36, 0x3e, 0x54, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x37, 0x60, 0x6f, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x36, 0x3e, 0xec, 0x0e, 0xde, 0x1d, 0x12, 0xba, 0xe1, 0xdf, 0xf9, 0x0d, 0x5e, 0x88, 0xd8, 0x79, 0xf0, 0x6e, 0xc1, 0xcc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x7c, 0x48, 0x06, 0xd2, 0xf1, 0xe1, 0xce, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbc, 0x8c, 0x85, 0xb9, 0x8d, 0x95, 0xb1, 0x81, 0xd0, 0xc9, 0x85, 0x8d, 0xad, 0x95, 0xc9, 0x81, 0x98, 0xc9, 0xbd, 0xb5, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc7, 0x87, 0x68, 0x20, 0x1d, 0x1f, 0xf2, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0x79, 0x38, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc7, 0x87, 0xc1, 0x40, 0x3a, 0x3e, 0xec, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x7b, 0xca, 0x41, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1d, 0x1f, 0x56, 0x07, 0xef, 0x97, 0x09, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x7c, 0x98, 0x0d, 0xa4, 0xe3, 0xc3, 0xf2, 0xa0, 0x44, 0x7c, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xf1, 0x61, 0x3a, 0x90, 0x8e, 0x0f, 0xf3, 0x83, 0xb6, 0xad, 0xc7, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc7, 0x87, 0x64, 0x20, 0x1f, 0x1f, 0xae, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x3d, 0x57, 0x27, 0x06, 0x42, 0xf7, 0x06, 0x02, 0x27, 0x97, 0x66, 0x17, 0x46, 0x57, 0x36, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1f, 0x1f, 0xa2, 0x81, 0x7c, 0x7c, 0xd8, 0x1d, 0x3c, 0x63, 0xdb, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc7, 0x87, 0xe1, 0x40, 0x3e, 0x3e, 0x2c, 0x0f, 0x42, 0xf0, 0xa1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x21, 0x1f, 0x92, 0x81, 0x84, 0x7c, 0x78, 0xb2, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xef, 0x5c, 0x9d, 0x18, 0x08, 0xdd, 0x1b, 0x08, 0x5c, 0x9d, 0x18, 0x5b, 0xda, 0xd8, 0xdc, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x7c, 0x88, 0x06, 0x12, 0xf2, 0x61, 0x76, 0xf0, 0x04, 0x7d, 0xcf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x21, 0x1f, 0x76, 0x03, 0x09, 0xf9, 0xd0, 0xb3, 0xe1, 0xcf, 0xa5, 0x01, 0x9e, 0x39, 0xb4, 0x34, 0xb8, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xf2, 0x61, 0x7d, 0xf0, 0x52, 0xa9, 0xd0, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xc8, 0x87, 0xf9, 0x40, 0x42, 0x3e, 0x34, 0x1c, 0x94, 0x88, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x3e, 0x54, 0x0c, 0x24, 0xe4, 0x43, 0xcd, 0x41, 0xdb, 0xd6, 0xe3, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xe4, 0x43, 0x32, 0x90, 0x91, 0x0f, 0x77, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xa5, 0x0e, 0x8e, 0x2c, 0x8c, 0xae, 0x0c, 0x04, 0x4e, 0x2e, 0xcd, 0x2e, 0x8c, 0xae, 0x0c, 0x64, 0xad, 0x2c, 0x6f, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x46, 0x3e, 0x44, 0x03, 0x19, 0xf9, 0x30, 0xd8, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x7b, 0xb4, 0x83, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x7c, 0x58, 0x0c, 0x64, 0xe4, 0xc3, 0x6c, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0xc6, 0xc6, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xf2, 0x61, 0x72, 0xf0, 0x56, 0xb4, 0xd0, 0x83, 0xb7, 0xe9, 0x3a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xf9, 0xb0, 0x1b, 0xc8, 0xc8, 0x87, 0xf1, 0x86, 0x3f, 0x97, 0x36, 0x68, 0xa5, 0x83, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xf2, 0x61, 0x78, 0xf0, 0x68, 0xb7, 0xd0, 0x83, 0xc7, 0xc2, 0x7b, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xe4, 0x43, 0x32, 0x90, 0x92, 0x0f, 0x6f, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x43, 0xae, 0x6c, 0xae, 0xcc, 0x8d, 0x0c, 0x04, 0x4e, 0x2e, 0xcd, 0x2e, 0x8c, 0xae, 0x0c, 0x64, 0xad, 0x2c, 0x6f, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x3e, 0x44, 0x03, 0x29, 0xf9, 0xb0, 0xd8, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xdb, 0xd0, 0x83, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x7c, 0x98, 0x0c, 0xa4, 0xe4, 0xc3, 0xe6, 0x20, 0x04, 0x1f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xf2, 0x21, 0x19, 0xc8, 0xc9, 0x87, 0x27, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xc2, 0xc9, 0x95, 0xd1, 0x95, 0xb9, 0x91, 0x81, 0x88, 0xc9, 0x95, 0x85, 0x8d, 0xa1, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc9, 0x87, 0x68, 0x20, 0x27, 0x1f, 0xf2, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0x4d, 0x3d, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xc9, 0x87, 0xc1, 0x40, 0x4e, 0x3e, 0x14, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0xa7, 0x4e, 0x85, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x3e, 0xcc, 0x0e, 0xde, 0xad, 0x18, 0xba, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xf9, 0xb0, 0x1b, 0xc8, 0xc9, 0x87, 0xe9, 0x41, 0x89, 0xf8, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xe4, 0xc3, 0x76, 0x20, 0x27, 0x1f, 0xf6, 0x07, 0x6d, 0x5b, 0x8f, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x94, 0x0f, 0xc9, 0x40, 0x52, 0x3e, 0xbc, 0xd8, 0xf0, 0xc4, 0xfb, 0x06, 0x8f, 0x99, 0xba, 0xdb, 0x60, 0xbd, 0x4a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x94, 0x0f, 0xe1, 0x40, 0x52, 0x3e, 0x2c, 0x0e, 0x5e, 0x6f, 0xef, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xf9, 0x30, 0x19, 0x48, 0xca, 0x87, 0xed, 0xc1, 0x0b, 0x04, 0xee, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x7c, 0x48, 0x06, 0xb2, 0xf2, 0xe1, 0xc7, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7e, 0x76, 0x69, 0x65, 0x77, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xf2, 0x21, 0x1a, 0xc8, 0xca, 0x87, 0xfc, 0xe0, 0xb1, 0x1c, 0x8d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x56, 0x3e, 0x0c, 0x06, 0xb2, 0xf2, 0x61, 0x71, 0x10, 0x82, 0x0f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xf9, 0x90, 0x0c, 0xa4, 0xe5, 0xc3, 0x93, 0x0d, 0x4f, 0xbc, 0x6f, 0xf0, 0x1e, 0xaf, 0xbb, 0x0d, 0xd6, 0xab, 0x54, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xf9, 0x10, 0x0e, 0xa4, 0xe5, 0xc3, 0xe2, 0xe0, 0x91, 0x63, 0x77, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x96, 0x0f, 0x93, 0x81, 0xb4, 0x7c, 0xd8, 0x1e, 0xbc, 0x40, 0xe0, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xcb, 0x87, 0x64, 0x20, 0x2f, 0x1f, 0x7e, 0x6c, 0x78, 0xe2, 0x7d, 0x83, 0x97, 0x57, 0x0f, 0x6e, 0xb0, 0x5e, 0xa5, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xcb, 0x87, 0x70, 0x20, 0x2f, 0x1f, 0x16, 0x07, 0x8f, 0xd7, 0x1e, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x7c, 0x98, 0x0c, 0xe4, 0xe5, 0xc3, 0xf6, 0xe0, 0x05, 0x02, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x62, 0x3e, 0x24, 0x03, 0x89, 0xf9, 0xf0, 0x67, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x7e, 0xe4, 0xca, 0xe6, 0xca, 0xe8, 0x40, 0xee, 0xca, 0xc4, 0x40, 0xd8, 0xde, 0xce, 0xd2, 0xdc, 0x40, 0xc6, 0xde, 0xc8, 0xca, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xe6, 0x43, 0x34, 0x90, 0x98, 0x0f, 0xf9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x6f, 0xdd, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xf9, 0x30, 0x18, 0x48, 0xcc, 0x87, 0xc5, 0x41, 0x08, 0x3e, 0xd4, 0xac, 0xc1, 0x33, 0x78, 0x05, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x9e, 0xc1, 0x2b, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x7b, 0x02, 0x21, 0x1f, 0xd8, 0x13, 0x08, 0xfb, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd8, 0x13, 0x08, 0x83, 0x81, 0x3d, 0x81, 0x30, 0x3a, 0x58, 0x05, 0x99, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x09, 0x84, 0xd5, 0xc0, 0x9e, 0x40, 0x58, 0x1e, 0xb4, 0x6d, 0x3d, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x09, 0x84, 0xe9, 0xc0, 0x9e, 0x40, 0x98, 0x1f, 0xac, 0xd7, 0x7a, 0x6e, 0x05, 0xf0, 0x9d, 0xa3, 0x0b, 0xa3, 0x2b, 0x6b, 0x29, 0xa3, 0x43, 0x6b, 0x71, 0x7b, 0x23, 0x2b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1e, 0x6d, 0x1d, 0xda, 0x00, 0x78, 0x34, 0x47, 0x17, 0x46, 0x57, 0x06, 0xf2, 0x66, 0x06, 0x12, 0x06, 0x32, 0xf6, 0xe6, 0xe6, 0x56, 0x36, 0x46, 0x97, 0xf6, 0xe6, 0x06, 0x42, 0xf7, 0x06, 0x12, 0xe6, 0x06, 0x52, 0x46, 0x87, 0x56, 0x26, 0x57, 0x56, 0xd7, 0x06, 0xe2, 0xf6, 0x46, 0x56, 0xb6, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0xd1, 0xd6, 0xa1, 0x0d, 0xc0, 0x87, 0xdb, 0x1b, 0x59, 0x19, 0xc8, 0xd8, 0x9b, 0x9b, 0x59, 0xda, 0x19, 0xc8, 0x0a, 0x48, 0x5b, 0x19, 0x5d, 0xd8, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xa3, 0xad, 0x43, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x5b, 0x20, 0x6e, 0x60, 0x67, 0x20, 0x7e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb6, 0x40, 0x48, 0x06, 0xb6, 0x05, 0x42, 0xc1, 0x86, 0x3f, 0x97, 0x06, 0xf0, 0xa4, 0x7b, 0x83, 0x6b, 0x99, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0x6b, 0x49, 0x23, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x5b, 0x20, 0xec, 0x0e, 0x9e, 0xa8, 0x1e, 0xba, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0xff, 0xd4, 0x67, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xeb, 0x02, 0x21, 0x19, 0x58, 0x17, 0x08, 0x3d, 0x1b, 0xfe, 0x5c, 0x1a, 0xe0, 0x9d, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0x9b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x5d, 0x20, 0x2c, 0x0e, 0x1e, 0x29, 0x1f, 0xba, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xeb, 0x02, 0x61, 0x32, 0xb0, 0x2e, 0x10, 0x56, 0x07, 0x25, 0x62, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x2e, 0x10, 0x66, 0x03, 0xeb, 0x02, 0x61, 0x7f, 0xf0, 0xda, 0xf7, 0xd0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x5d, 0x20, 0x14, 0x0c, 0xac, 0x0b, 0x84, 0x9a, 0x83, 0xd7, 0xcf, 0x83, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x0b, 0x84, 0x64, 0x60, 0x5f, 0x20, 0xf4, 0x6d, 0xf8, 0x73, 0x69, 0x00, 0xef, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x16, 0xb9, 0x32, 0xbb, 0x32, 0xb9, 0xb9, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf6, 0x05, 0xc2, 0xf2, 0xe0, 0xd9, 0x01, 0xa2, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x2f, 0x10, 0xa6, 0x03, 0xfb, 0x02, 0x61, 0x7d, 0x50, 0x22, 0xd6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xfb, 0x02, 0x61, 0x3e, 0xb0, 0x2f, 0x10, 0x4a, 0x0e, 0x5e, 0x3f, 0x0f, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xec, 0x0b, 0x84, 0x96, 0x81, 0x7d, 0x81, 0x50, 0x77, 0xf0, 0xda, 0xf7, 0xd0, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x85, 0x81, 0x90, 0x0c, 0x2c, 0x0c, 0x84, 0x86, 0x0d, 0x7f, 0x2e, 0x0d, 0xe0, 0x4b, 0x56, 0x66, 0x16, 0x56, 0xc7, 0x46, 0xd7, 0x32, 0xf7, 0x56, 0x27, 0x37, 0x56, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc2, 0x40, 0x18, 0x1e, 0xbc, 0x45, 0x42, 0xf4, 0xe0, 0xb5, 0xef, 0xa1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc6, 0x40, 0x48, 0x06, 0x36, 0x06, 0x42, 0xd5, 0x86, 0x3f, 0x97, 0x06, 0xf0, 0x9b, 0x43, 0x4b, 0x83, 0x6b, 0x99, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0x9b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x63, 0x20, 0xcc, 0x0e, 0x9e, 0x9c, 0x21, 0xba, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x1b, 0x03, 0x61, 0x37, 0xb0, 0x31, 0x10, 0xa6, 0x07, 0x25, 0x62, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x31, 0x10, 0xb6, 0x03, 0x1b, 0x03, 0x61, 0x7f, 0xd0, 0xb6, 0xf5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb0, 0x31, 0x10, 0x0a, 0x06, 0x36, 0x06, 0x42, 0xd3, 0xc1, 0x6b, 0xdf, 0x43, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x56, 0x06, 0x42, 0x32, 0xb0, 0x32, 0x10, 0x2a, 0x37, 0xfc, 0xb9, 0x34, 0x00, 0x3f, 0x73, 0x68, 0x69, 0x70, 0x2d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2d, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x0c, 0x84, 0xf9, 0xc1, 0x6b, 0x53, 0x44, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x65, 0x20, 0xec, 0x07, 0x56, 0x06, 0x42, 0xc5, 0xc1, 0xbb, 0xa9, 0x26, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x95, 0x81, 0xd0, 0x31, 0xb0, 0x32, 0x10, 0xca, 0x0e, 0x5e, 0xfb, 0x1e, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xac, 0x0c, 0x84, 0xb6, 0x81, 0x95, 0x81, 0xd0, 0x78, 0xd0, 0xb6, 0xf5, 0x78, 0x1d, 0x4e, 0xb1, 0xd6, 0xe0, 0x29, 0xfe, 0x9e, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x4f, 0xf1, 0xf7, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x7b, 0xdc, 0x40, 0xd6, 0x3d, 0x7e, 0x83, 0xa0, 0xfd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xee, 0x21, 0x19, 0x48, 0xb9, 0x87, 0xa2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xf7, 0x10, 0x0d, 0xa4, 0xdc, 0x43, 0x7e, 0xb0, 0x56, 0xa7, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb9, 0x87, 0xc1, 0x40, 0xca, 0x3d, 0xf4, 0x6c, 0xf8, 0x73, 0x69, 0x80, 0x0f, 0xee, 0x2d, 0xcd, 0x8d, 0x6e, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x7b, 0xd8, 0x1d, 0xbc, 0xab, 0x48, 0x74, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xee, 0x61, 0x38, 0x90, 0x72, 0x0f, 0xdb, 0x83, 0x12, 0xb1, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0xb9, 0x87, 0xf1, 0x40, 0xca, 0x3d, 0x14, 0x1c, 0xb4, 0x6d, 0x3d, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xdc, 0x43, 0xc3, 0x40, 0xca, 0x3d, 0xd4, 0x1c, 0x3c, 0x4e, 0x30, 0xb3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x7b, 0x48, 0x06, 0x72, 0xee, 0xa1, 0x65, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x3d, 0x44, 0x03, 0x39, 0xf7, 0x90, 0x6f, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x4d, 0xca, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x3d, 0x0c, 0x06, 0x72, 0xee, 0x61, 0xb8, 0xe1, 0xcf, 0xa5, 0x01, 0xef, 0x0e, 0xed, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x7b, 0x18, 0x1d, 0x3c, 0x59, 0x4b, 0xf4, 0xa0, 0x6d, 0xeb, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe7, 0x1e, 0x96, 0x03, 0x39, 0xf7, 0x50, 0xb2, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0xa4, 0x7c, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xf7, 0x30, 0x3d, 0x78, 0x39, 0x98, 0xe8, 0x86, 0x7f, 0xe7, 0x37, 0x78, 0xaa, 0x36, 0xe1, 0xc1, 0xbb, 0x05, 0x33, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xee, 0x21, 0x19, 0x48, 0xba, 0x87, 0xed, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x7b, 0x88, 0x06, 0x92, 0xee, 0x61, 0xb1, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x80, 0x4f, 0x4c, 0xae, 0x2c, 0x6c, 0x0c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xee, 0x61, 0x32, 0x90, 0x74, 0x0f, 0xd3, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x77, 0x68, 0xef, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xdd, 0xc3, 0xec, 0xe0, 0xd5, 0x6e, 0xa2, 0x07, 0x6d, 0x5b, 0x8f, 0xd7, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x01, 0xc1, 0xbf, 0xbf, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x0f, 0xf8, 0x73, 0x61, 0x63, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0x81, 0x90, 0x0d, 0x14, 0x81, 0x70, 0x68, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5e, 0x48, 0xe6, 0xde, 0xc6, 0xd6, 0x40, 0x5e, 0xee, 0x40, 0xe0, 0xe4, 0xde, 0xec, 0xca, 0xdc, 0xc2, 0xdc, 0xc6, 0xca, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x08, 0x84, 0x70, 0xa0, 0x08, 0x84, 0xc1, 0xc1, 0xb1, 0x68, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x02, 0x61, 0x31, 0x50, 0x04, 0xc2, 0xea, 0xa0, 0x6d, 0xeb, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x08, 0x84, 0xd9, 0x40, 0x11, 0x08, 0xd3, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x22, 0x10, 0xb6, 0x03, 0x45, 0x20, 0xec, 0x0f, 0xce, 0x48, 0xa8, 0xad, 0x80, 0xa0, 0xde, 0xdf, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x78, 0xa0, 0xc0, 0x5d, 0x03, 0xe0, 0xc1, 0x59, 0x99, 0x5b, 0x99, 0x5c, 0x18, 0x1b, 0x08, 0x5d, 0xd8, 0xdc, 0xda, 0x1c, 0xc8, 0x1c, 0x5a, 0x98, 0x5c, 0x19, 0x19, 0x48, 0xd8, 0x98, 0xdc, 0xdb, 0xdc, 0x1c, 0x88, 0x5d, 0x98, 0x5b, 0xd9, 0xdc, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x03, 0x05, 0xee, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xb0, 0x44, 0x07, 0x4a, 0x4d, 0xdc, 0x06, 0xa1, 0x86, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0x96, 0xf8, 0x81, 0xc2, 0x12, 0x06, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0a, 0x4b, 0x08, 0x06, 0x0a, 0x4b, 0x48, 0x37, 0xbc, 0x71, 0x77, 0xf0, 0x5e, 0x7f, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xb0, 0x84, 0x78, 0xa0, 0xb0, 0x84, 0xfc, 0xa0, 0xa0, 0xc8, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x4b, 0xf4, 0xe0, 0x89, 0x91, 0xa2, 0x1b, 0x04, 0xed, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x5b, 0xe2, 0x07, 0x6a, 0x4b, 0x18, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x2d, 0x21, 0x18, 0xa8, 0x2d, 0x21, 0x3d, 0x78, 0x97, 0xbf, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x5b, 0x42, 0x3c, 0x50, 0x5b, 0x42, 0x7e, 0x10, 0x82, 0x0f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe5, 0x25, 0x7e, 0xa0, 0xbc, 0x84, 0xc1, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf2, 0x12, 0x82, 0x81, 0xf2, 0x12, 0xd2, 0x83, 0xf7, 0x07, 0xfb, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe5, 0x25, 0xc4, 0x03, 0xe5, 0x25, 0xe4, 0x07, 0x21, 0xf8, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x61, 0xe2, 0x07, 0x2a, 0x4c, 0x18, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x30, 0x21, 0x18, 0xa8, 0x30, 0x21, 0x3d, 0x78, 0xbd, 0xbd, 0xc7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x61, 0x42, 0x3c, 0x50, 0x61, 0xc2, 0x66, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x61, 0xc2, 0xe0, 0xe0, 0xd5, 0xb4, 0xa2, 0x07, 0x65, 0x96, 0x6e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x91, 0x89, 0x1f, 0x28, 0x32, 0x61, 0xb0, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xc8, 0x84, 0x60, 0xa0, 0xc8, 0x84, 0xf4, 0xe0, 0x91, 0x63, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x91, 0x09, 0xf1, 0x40, 0x91, 0x09, 0xf9, 0x41, 0x08, 0x3e, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0x99, 0xf8, 0x81, 0x4a, 0x13, 0xf6, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xe0, 0x05, 0xd5, 0x13, 0xd1, 0x93, 0x0e, 0x48, 0xdb, 0x9b, 0x5d, 0x19, 0x88, 0x8b, 0x5d, 0x98, 0x5b, 0x19, 0x88, 0x99, 0xdc, 0x5b, 0x1b, 0x08, 0x09, 0x1c, 0x5b, 0x59, 0x18, 0x08, 0xdd, 0x1b, 0x08, 0x5a, 0x99, 0x5c, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4a, 0x13, 0x82, 0x81, 0x4a, 0x13, 0xd2, 0x83, 0xc7, 0x6b, 0x0f, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x26, 0xc4, 0x03, 0x95, 0x26, 0x6c, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xd3, 0xd7, 0xe3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x69, 0x42, 0x7e, 0xf0, 0xc2, 0x66, 0xd1, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4a, 0x13, 0x46, 0x03, 0x95, 0x26, 0xcc, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x0b, 0xd4, 0x81, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xd2, 0x84, 0xd5, 0xc1, 0x0b, 0xa7, 0x45, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0x2f, 0x50, 0x07, 0xea, 0xe0, 0x9d, 0xc8, 0x75, 0x75, 0x38, 0xc5, 0xaa, 0x05, 0x46, 0x7f, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x25, 0xec, 0x41, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x0c, 0x42, 0x36, 0x50, 0x0c, 0xc2, 0x9d, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x20, 0x7b, 0x6b, 0x0b, 0x4b, 0x73, 0x63, 0x01, 0xa1, 0x63, 0x23, 0x03, 0x31, 0x4b, 0x93, 0x9b, 0xa3, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x62, 0x10, 0xc2, 0x81, 0x62, 0x10, 0x06, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0x83, 0xb0, 0x18, 0x28, 0x06, 0x61, 0x73, 0x70, 0x9e, 0x1d, 0x6d, 0x16, 0x08, 0xfb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd0, 0x80, 0xd0, 0x86, 0x37, 0xee, 0x36, 0xd4, 0xfc, 0x60, 0x84, 0x66, 0x41, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xa0, 0x6d, 0xc7, 0xa6, 0x06, 0xe0, 0x6f, 0xec, 0xad, 0x0d, 0xee, 0x6d, 0x2e, 0x4c, 0x8c, 0xad, 0x0c, 0x64, 0xae, 0x4c, 0x2e, 0x2d, 0x8c, 0x2d, 0x4d, 0x2f, 0x8c, 0x2e, 0xed, 0xcd, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xa7, 0xd9, 0x67, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xcc, 0x67, 0x9f, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x01, 0x1f, 0x8e, 0x2d, 0x8c, 0xde, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x92, 0xbc, 0xe8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb5, 0xb4, 0xcf, 0x86, 0x0f, 0xe6, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xb0, 0xfa, 0xd9, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0xaf, 0xad, 0x2c, 0x6c, 0xae, 0x4e, 0xae, 0x0c, 0x24, 0x8c, 0xee, 0xad, 0xed, 0xf0, 0x43, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6f, 0xb5, 0xcf, 0x06, 0x4b, 0x97, 0xab, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xc6, 0xf6, 0xd9, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xf1, 0xf6, 0xd9, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x63, 0xac, 0x8e, 0x0e, 0x64, 0x8e, 0x2d, 0x6d, 0xac, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x82, 0xfb, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x92, 0x71, 0x9f, 0x83, 0xb5, 0x33, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xa0, 0xfb, 0x1c, 0x84, 0xe0, 0x43, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xb1, 0xfb, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xbe, 0xfb, 0x1c, 0x94, 0xde, 0xf4, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xce, 0xfb, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xd8, 0xfb, 0x1c, 0x94, 0xde, 0xf4, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0xe9, 0xfb, 0x1c, 0x1e, 0xc0, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xc0, 0xdf, 0xe7, 0xf0, 0x00, 0x7e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x09, 0xfc, 0x1c, 0x7e, 0xa8, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0x14, 0x7e, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x6c, 0x2b, 0x0b, 0x9b, 0xab, 0x93, 0x2b, 0x03, 0x99, 0x63, 0x4b, 0x1b, 0x2b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0x0c, 0x3f, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xe9, 0xe1, 0xe7, 0x60, 0x51, 0x9e, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x14, 0x3f, 0x07, 0x21, 0xf8, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x3d, 0x18, 0x3f, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x91, 0x1b, 0x3f, 0x07, 0xa5, 0x37, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x9d, 0x1f, 0x3f, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0x22, 0x3f, 0x07, 0xa5, 0x37, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x41, 0x26, 0x3f, 0x87, 0x07, 0xf0, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x4c, 0xf9, 0x39, 0x3c, 0x80, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0x2d, 0x3f, 0x87, 0x1f, 0x6a, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0c, 0x99, 0x9f, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfe, 0xb9, 0x3a, 0xb1, 0x39, 0xb6, 0xb4, 0xb1, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x47, 0xf3, 0xb3, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0x6d, 0x7e, 0x0e, 0x96, 0xc4, 0x04, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xc2, 0xf3, 0x73, 0x10, 0x82, 0x0f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x21, 0xf4, 0xb3, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe2, 0x9f, 0x9f, 0x0d, 0xff, 0xce, 0xaf, 0x41, 0xdb, 0x8e, 0x4d, 0x55, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x29, 0x46, 0x3f, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x07, 0x87, 0x1c, 0xc8, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xca, 0xa4, 0x9f, 0x83, 0xd2, 0x9b, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xcc, 0xa6, 0x9f, 0xc3, 0x03, 0xf8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x46, 0xfd, 0x1c, 0x7e, 0xa8, 0xe9, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf6, 0xac, 0x9f, 0x0d, 0x0f, 0x4a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x0a, 0x0e, 0x74, 0x10, 0x80, 0x6c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x79, 0x5c, 0x3f, 0x1b, 0x94, 0x5d, 0xb2, 0x1b, 0xb4, 0xed, 0xd8, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6f, 0x37, 0xd0, 0x86, 0x4b, 0x6a, 0x8d, 0xc7, 0x07, 0xaf, 0x8e, 0x19, 0x6d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0b, 0xbe, 0x7e, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x65, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x31, 0xec, 0x67, 0xc3, 0x47, 0xed, 0x1b, 0x2c, 0x5d, 0xae, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xad, 0xec, 0x67, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0xe6, 0xa0, 0x2c, 0xf6, 0xdd, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x31, 0x6a, 0x3f, 0x1b, 0xfe, 0x5c, 0x1a, 0x9c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x3e, 0xfb, 0x39, 0x78, 0xfc, 0x7c, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x0d, 0x71, 0x3f, 0x1b, 0xfe, 0x5c, 0x1a, 0x5c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x73, 0xfb, 0x39, 0x78, 0xfc, 0x7c, 0x48, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0x73, 0x3f, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xcc, 0x95, 0xc9, 0xa5, 0x85, 0xb1, 0xa5, 0xe9, 0x95, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x68, 0xbc, 0x9f, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xd9, 0xfd, 0x1c, 0xbe, 0x9d, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x09, 0xf0, 0x67, 0xc3, 0x9f, 0x4b, 0x83, 0x8b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0x7d, 0x3f, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0x83, 0x3f, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd8, 0xe1, 0xcf, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x49, 0xf2, 0xa2, 0x55, 0xab, 0xc1, 0x60, 0xea, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xe5, 0xe9, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xed, 0xe2, 0xcf, 0x86, 0xc7, 0x47, 0x36, 0x18, 0x4c, 0x1d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x31, 0x8e, 0x3f, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb7, 0x42, 0x30, 0xb8, 0x15, 0xb2, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x56, 0x88, 0x0e, 0x5e, 0x5d, 0x36, 0x7a, 0xf0, 0xf8, 0xf9, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa4, 0xc8, 0x9f, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x5b, 0x21, 0x1d, 0xdc, 0x0a, 0xeb, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xdc, 0x0a, 0xf1, 0xe0, 0x56, 0x98, 0x1c, 0x94, 0xde, 0xf4, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x56, 0xd8, 0x0c, 0x6e, 0x85, 0xdd, 0xe1, 0xdb, 0xf9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x2b, 0x0c, 0x07, 0xb7, 0xc2, 0xf8, 0xf0, 0x00, 0x7e, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa1, 0x93, 0x3f, 0x1b, 0x1e, 0x94, 0xdc, 0x70, 0x47, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x59, 0xfe, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7c, 0xcc, 0x9f, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x66, 0x61, 0x78, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x74, 0xfe, 0x1c, 0x9c, 0x2e, 0x32, 0x9a, 0x05, 0x3c, 0xb3, 0x30, 0x7c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf0, 0xcc, 0xc2, 0xf0, 0x06, 0xf8, 0xca, 0xdc, 0xc6, 0xde, 0xc8, 0xca, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0x41, 0x7f, 0x36, 0x3c, 0x3e, 0x32, 0xe0, 0x99, 0x85, 0xe1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x49, 0xa3, 0x3f, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xed, 0x21, 0x19, 0xb4, 0x87, 0x70, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x68, 0x0f, 0xd9, 0xc1, 0xe3, 0x0a, 0x47, 0x0f, 0x1e, 0x3f, 0x1f, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x65, 0xfa, 0xb3, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x50, 0x1f, 0x92, 0x41, 0x7d, 0xd8, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xa0, 0x3e, 0x44, 0x83, 0xfa, 0x10, 0x1f, 0x1c, 0x8b, 0x46, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x41, 0x7d, 0xc8, 0x07, 0xf5, 0x61, 0x70, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xd4, 0x87, 0xc5, 0xa0, 0x3e, 0xac, 0x0e, 0xdf, 0xce, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0xfa, 0x30, 0x1b, 0xd4, 0x87, 0xe9, 0xe1, 0x01, 0xfc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x51, 0x7f, 0x36, 0x28, 0x06, 0x64, 0xd7, 0x38, 0x74, 0x70, 0xf0, 0xc8, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x65, 0x11, 0x68, 0x83, 0x82, 0x34, 0x76, 0x70, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xda, 0x46, 0xa0, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x0e, 0x1e, 0x19, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc5, 0x90, 0x40, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3d, 0x38, 0x78, 0x64, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x3a, 0x09, 0xb4, 0x41, 0x41, 0x1a, 0x3b, 0xb8, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x90, 0x25, 0xd0, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x07, 0x8f, 0x8c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa8, 0x4c, 0xa0, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0x89, 0x33, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0f, 0x27, 0xd0, 0x06, 0x05, 0x69, 0xec, 0xe0, 0xf3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0x9e, 0x40, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x2d, 0x14, 0xe8, 0x60, 0x01, 0x27, 0xfc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x05, 0xa6, 0x40, 0x1b, 0x2e, 0xa9, 0x35, 0x9e, 0x1f, 0x0c, 0x52, 0xa9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x48, 0x05, 0x3a, 0x58, 0x7f, 0x27, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x06, 0x2b, 0xd0, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x74, 0x05, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x19, 0xb1, 0x40, 0x87, 0x3f, 0x81, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xa9, 0x05, 0x3a, 0x58, 0x24, 0x25, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0e, 0x2e, 0xd0, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xd6, 0x05, 0x3a, 0x28, 0x0d, 0x78, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xfa, 0x05, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0xc1, 0x40, 0x07, 0xeb, 0xef, 0x84, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x23, 0x06, 0x3a, 0x38, 0x9c, 0xf3, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xdd, 0x31, 0xd0, 0xc1, 0x02, 0x36, 0xe1, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x53, 0x19, 0xe8, 0x60, 0xfd, 0x9d, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x59, 0xcd, 0x40, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xfe, 0x19, 0xe8, 0xf0, 0x27, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x0d, 0xd4, 0x40, 0x1b, 0xde, 0xd6, 0x19, 0x5c, 0x3e, 0x28, 0x78, 0x36, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xba, 0x06, 0x3a, 0x38, 0x9c, 0xf3, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf1, 0xea, 0xcf, 0x06, 0x25, 0x3c, 0xe6, 0x82, 0x8b, 0x07, 0x07, 0x8f, 0x8c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x5d, 0x7f, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4e, 0xec, 0xcf, 0xe1, 0xc1, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x68, 0x7f, 0x36, 0xbc, 0xad, 0x73, 0xd0, 0x48, 0x8e, 0xcc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb9, 0xb6, 0x3f, 0x87, 0x07, 0x6f, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xca, 0xfd, 0xd9, 0x60, 0x01, 0x66, 0xd3, 0x1a, 0xbe, 0x6f, 0x1f, 0x7c, 0xdc, 0xa0, 0x84, 0x8e, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x0d, 0x5e, 0xb8, 0xd0, 0x31, 0xb8, 0x11, 0x86, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x1c, 0xbc, 0xd8, 0xa1, 0xe3, 0xa0, 0xf4, 0xa6, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x0d, 0x1e, 0xbf, 0xd0, 0x31, 0xb8, 0x11, 0x26, 0x87, 0x1f, 0x6a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0x8d, 0xb0, 0x19, 0xdc, 0x08, 0xbb, 0xc3, 0x03, 0xf8, 0x1d, 0x84, 0xe9, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x79, 0x54, 0x40, 0x1b, 0x14, 0xa4, 0xb1, 0x83, 0x93, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x5c, 0x01, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xf0, 0x32, 0xe5, 0xd1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x1c, 0x2d, 0xa0, 0x0d, 0x6f, 0xeb, 0x0c, 0x4e, 0x1f, 0xbc, 0x4c, 0x79, 0xb4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x96, 0x2e, 0xa0, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xf9, 0x05, 0xb4, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0xc4, 0x80, 0x0e, 0x7f, 0x02, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x62, 0x06, 0x74, 0x70, 0x1a, 0x62, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x26, 0x0d, 0x68, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xaf, 0x01, 0x1d, 0x94, 0x06, 0xbc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xc1, 0x01, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5a, 0x39, 0xa0, 0x83, 0xa7, 0x3d, 0x8f, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x55, 0x07, 0x74, 0x70, 0xa6, 0x62, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x32, 0x3c, 0xa0, 0x83, 0x23, 0xde, 0x48, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xbb, 0x07, 0x74, 0xf0, 0xb4, 0xe7, 0xd1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xfc, 0x80, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3e, 0x20, 0xd0, 0xe1, 0x4f, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0b, 0x0a, 0x81, 0x0e, 0xce, 0x54, 0x2c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x20, 0x02, 0x1d, 0x1c, 0xda, 0x48, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x7f, 0xf7, 0x67, 0x83, 0x82, 0x60, 0x76, 0xc1, 0xd3, 0x83, 0x97, 0x29, 0x8f, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xf0, 0xfb, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x82, 0x7f, 0x36, 0xbc, 0xad, 0x73, 0xf0, 0x00, 0x00, 0xd2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x88, 0x7f, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa7, 0xf1, 0xcf, 0x86, 0xb7, 0x75, 0x16, 0xc7, 0x39, 0x18, 0x4c, 0x1d, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xaa, 0xfc, 0x73, 0xf0, 0xb4, 0xe7, 0xd1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0x9b, 0x7f, 0x0e, 0x9e, 0x38, 0x40, 0x5a, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa5, 0xd0, 0x3f, 0x1b, 0x04, 0xe9, 0xe9, 0x1a, 0x87, 0x0e, 0x1e, 0x00, 0x40, 0xba, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x78, 0x13, 0x3f, 0x78, 0x13, 0x82, 0xc3, 0x0f, 0x35, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x65, 0xd4, 0x3f, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd8, 0xfa, 0x67, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x65, 0xff, 0x1c, 0x14, 0x99, 0xb8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x75, 0xff, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe8, 0xef, 0x9f, 0x83, 0xa7, 0x3d, 0x8f, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x27, 0xfe, 0xb3, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x07, 0x00, 0x90, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6b, 0xf9, 0xcf, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x1e, 0x00, 0x40, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0xe8, 0x3f, 0x07, 0xaf, 0xcf, 0x20, 0x6d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x27, 0x7e, 0x70, 0x27, 0xa4, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x77, 0x42, 0x30, 0xb8, 0x13, 0xa2, 0x83, 0xb5, 0x33, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x4e, 0xc8, 0x06, 0x77, 0x42, 0x78, 0x10, 0x82, 0x0f, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xbc, 0xff, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc4, 0xf8, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x42, 0xff, 0x73, 0x50, 0x12, 0xcd, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x82, 0xff, 0x73, 0xf0, 0xb4, 0xe7, 0xd1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0xf6, 0x7f, 0x36, 0x3c, 0x28, 0xb9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x05, 0x00, 0x3a, 0x38, 0x5d, 0x64, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x35, 0x00, 0x74, 0x70, 0x3a, 0x12, 0x69, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb8, 0xff, 0xe7, 0xe0, 0x89, 0x03, 0xa4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x63, 0x00, 0xb4, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x87, 0x69, 0x90, 0xb6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xf8, 0x13, 0x3f, 0xf8, 0x13, 0xd2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0x3f, 0x21, 0x18, 0xfc, 0x09, 0xd1, 0xc1, 0xa2, 0x3c, 0xd7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xf0, 0x27, 0x64, 0x83, 0x3f, 0x21, 0x3c, 0x08, 0xc1, 0x87, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0x18, 0x80, 0x36, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc2, 0x03, 0xd0, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x8d, 0x00, 0x3a, 0x28, 0x89, 0x66, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xad, 0x00, 0x3a, 0x78, 0xda, 0xf3, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb9, 0x18, 0x40, 0x1b, 0x1e, 0x94, 0x5c, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x78, 0x00, 0x1d, 0x9c, 0x2e, 0x32, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x06, 0x01, 0x3a, 0x38, 0x1d, 0x89, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xb4, 0x01, 0x74, 0xf0, 0xc4, 0x01, 0xd2, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x47, 0x80, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8a, 0x09, 0xd0, 0xe1, 0x99, 0xc9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x51, 0x80, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd8, 0x0a, 0xd0, 0xc1, 0x7b, 0x0e, 0x48, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x7b, 0x01, 0x3a, 0x78, 0xda, 0xf3, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x32, 0x40, 0x87, 0x67, 0x26, 0x6b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x28, 0x7e, 0x70, 0x28, 0xa4, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x87, 0x42, 0x30, 0x38, 0x14, 0xa2, 0x83, 0x25, 0x31, 0x81, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x50, 0xc8, 0x06, 0x87, 0x42, 0x78, 0x10, 0x82, 0x0f, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xe4, 0x00, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x5e, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xbb, 0x03, 0xb4, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xc1, 0x23, 0x63, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xda, 0x07, 0xe8, 0xe0, 0xf5, 0x19, 0xa4, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x07, 0x01, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2c, 0x22, 0xa0, 0x83, 0xb3, 0x2c, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x21, 0x47, 0x40, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x37, 0x09, 0xe8, 0x60, 0x01, 0x27, 0xfc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x55, 0x4e, 0x40, 0x07, 0xc7, 0xdd, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0xa3, 0x80, 0x0e, 0x9e, 0xf6, 0x3c, 0x5a, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0xa0, 0xfd, 0xfe, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xf0, 0x6f, 0x6e, 0x03, 0xe0, 0x2d, 0x9d, 0x5c, 0x59, 0x18, 0x1c, 0xc8, 0x5d, 0x1a, 0x1d, 0x1a, 0x48, 0xdd, 0x5c, 0x99, 0x5c, 0xcb, 0x1c, 0x5c, 0xd9, 0x58, 0x9a, 0x59, 0x5a, 0x19, 0x19, 0x08, 0xda, 0x9b, 0x5c, 0x9a, 0xde, 0x9b, 0x1b, 0x5d, 0x18, 0x1b, 0xc8, 0x9b, 0x1c, 0x59, 0x99, 0x1c, 0x0b, 0xc8, 0x9b, 0x1c, 0x59, 0x99, 0x5c, 0x19, 0x59, 0x4b, 0x5b, 0x18, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xce, 0x46, 0x07, 0x86, 0x3e, 0x6e, 0x83, 0xb2, 0x4b, 0x76, 0xe0, 0xdf, 0xdc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0xe0, 0x19, 0x44, 0x1e, 0x83, 0xb3, 0x61, 0x72, 0xf0, 0x66, 0xe1, 0x93, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0xdb, 0xe8, 0xc1, 0x13, 0xf2, 0x48, 0x37, 0x28, 0x94, 0x3b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0xdb, 0xf8, 0xc1, 0xdb, 0x30, 0xdd, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x78, 0x1b, 0x82, 0x83, 0x77, 0xf4, 0x77, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0xa2, 0xf5, 0x64, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x83, 0xa7, 0xf2, 0x77, 0x1c, 0x1c, 0x5b, 0x07, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x83, 0xc7, 0x03, 0x78, 0x0c, 0xde, 0x86, 0xe5, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x9b, 0x5c, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc1, 0xc3, 0x02, 0x3c, 0x0e, 0xde, 0x94, 0x48, 0x7a, 0x70, 0x6c, 0x1d, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x77, 0xa3, 0x07, 0x4f, 0xc8, 0x23, 0xdd, 0xa0, 0x94, 0x10, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x77, 0xe3, 0x07, 0x87, 0x43, 0xb2, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0x41, 0xb8, 0x22, 0x6c, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x84, 0x2b, 0xc2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xfe, 0x86, 0xc5, 0xe0, 0x6f, 0xa8, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xf8, 0x1b, 0x26, 0x83, 0xbf, 0x61, 0xb9, 0xe1, 0xcf, 0xa5, 0x0d, 0x8a, 0xd6, 0x93, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xfc, 0x0d, 0xb3, 0x83, 0x17, 0x63, 0x92, 0x1e, 0x9c, 0xf8, 0x3d, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0xdf, 0x30, 0x1d, 0xfc, 0x0d, 0x0d, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x6c, 0x72, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0xbf, 0x61, 0x7e, 0xf0, 0x38, 0x4f, 0xd2, 0x0d, 0xff, 0xce, 0x6f, 0xb0, 0xa8, 0x93, 0xb0, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x83, 0x37, 0xf0, 0x76, 0x1c, 0x3c, 0x21, 0x8f, 0x74, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xc5, 0x16, 0xb9, 0x01, 0xf0, 0x23, 0x8d, 0xae, 0xac, 0x0d, 0x64, 0xec, 0xad, 0x0d, 0x2e, 0x4c, 0x2e, 0x8c, 0xee, 0x4d, 0x0e, 0xc4, 0xec, 0x4d, 0x0e, 0x04, 0xed, 0x4d, 0x2e, 0x4d, 0xef, 0xcd, 0x8d, 0x2e, 0x8c, 0x0d, 0xe4, 0x4d, 0x8e, 0xac, 0x4c, 0x6e, 0x83, 0xb2, 0x4b, 0x76, 0x83, 0x45, 0xd8, 0x44, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x73, 0x88, 0x07, 0x9f, 0xc3, 0xe2, 0xa0, 0x18, 0x94, 0x9d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x9c, 0x8e, 0x1e, 0x3c, 0x21, 0x8f, 0x74, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x74, 0xfc, 0xe0, 0x74, 0x98, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0x14, 0x5b, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x9c, 0x0e, 0xf9, 0xc1, 0xfb, 0x68, 0x49, 0x37, 0x08, 0xa7, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x70, 0x3a, 0x4c, 0x06, 0xa7, 0xc3, 0x76, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x74, 0xd8, 0x0c, 0x4e, 0x87, 0xd9, 0xc1, 0x89, 0xdf, 0x63, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x9c, 0x0e, 0xbb, 0xc1, 0xe9, 0x30, 0x3d, 0x38, 0xf1, 0x7b, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0xd3, 0x61, 0x3c, 0x38, 0x1d, 0xd6, 0x87, 0x0f, 0x56, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0xe0, 0x7d, 0xdc, 0x22, 0x07, 0x4f, 0xc8, 0x23, 0xdd, 0xa0, 0xec, 0x92, 0xdd, 0x30, 0x43, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x75, 0x18, 0x0c, 0x5e, 0x87, 0xc5, 0xe1, 0x8e, 0x9a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x36, 0x78, 0x01, 0xb9, 0xc8, 0xc1, 0x13, 0xf2, 0x48, 0x37, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x58, 0xec, 0xbd, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0xd8, 0x7b, 0xb5, 0x01, 0xf0, 0x61, 0x8e, 0x2e, 0x8c, 0xae, 0xcc, 0xac, 0x8e, 0x0d, 0x04, 0x2e, 0x4c, 0x8e, 0x2e, 0x2d, 0x8c, 0x0d, 0x24, 0xcd, 0xed, 0x4d, 0x8e, 0xac, 0x4c, 0x0e, 0x84, 0x4e, 0x2e, 0xcc, 0xae, 0x4c, 0x6e, 0x2e, 0x8c, 0x5d, 0x09, 0xc0, 0xf7, 0xa6, 0x3a, 0xba, 0x30, 0xba, 0xb2, 0x39, 0x10, 0x97, 0x39, 0xba, 0x30, 0xba, 0x32, 0x90, 0x37, 0x37, 0x90, 0xb2, 0xb0, 0x31, 0x34, 0x10, 0xb9, 0x3a, 0x37, 0x90, 0x37, 0x33, 0x10, 0x17, 0x33, 0x17, 0x10, 0x90, 0x29, 0xba, 0x30, 0x39, 0xba, 0x39, 0x90, 0x30, 0x3a, 0x10, 0x97, 0x39, 0xba, 0x30, 0x39, 0x3a, 0x90, 0xb5, 0xb2, 0x3c, 0x16, 0x90, 0x37, 0x39, 0x90, 0x34, 0x73, 0x09, 0x80, 0x16, 0x5c, 0xe6, 0xe8, 0xc2, 0xe4, 0xe8, 0x40, 0xd2, 0xe6, 0x40, 0xfc, 0x58, 0x40, 0xe6, 0xe8, 0xc2, 0xe4, 0xe8, 0xe6, 0x40, 0xc2, 0xe8, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xd0, 0xca, 0xc2, 0xc8, 0x5c, 0x40, 0x40, 0xa6, 0xe8, 0xde, 0xe0, 0xe6, 0x40, 0xee, 0xd0, 0xca, 0xdc, 0x40, 0x5c, 0xcc, 0x40, 0xe0, 0xe4, 0xde, 0xc8, 0xea, 0xc6, 0xca, 0xe6, 0x40, 0x5c, 0xe6, 0xe8, 0xde, 0xe0, 0x7a, 0x4a, 0x5c, 0xf2, 0xdc, 0x12, 0x80, 0x0e, 0x54, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x6e, 0x09, 0x40, 0xf7, 0xa2, 0xb0, 0x31, 0x34, 0x10, 0xb9, 0x3a, 0x37, 0x90, 0x37, 0x33, 0x10, 0x17, 0x33, 0x90, 0xb1, 0x30, 0x37, 0x10, 0xb9, 0x32, 0x38, 0xb6, 0xb0, 0xb1, 0x32, 0x90, 0x30, 0x37, 0x90, 0x34, 0xba, 0xb2, 0xb6, 0x93, 0x39, 0x10, 0xbb, 0x30, 0xb6, 0xba, 0x32, 0x90, 0x37, 0x39, 0x10, 0xb2, 0x32, 0xb6, 0x32, 0xba, 0x32, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0x34, 0xba, 0xb2, 0x36, 0x57, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xcb, 0xb8, 0x81, 0x29, 0x88, 0xdf, 0xf0, 0xf8, 0xc8, 0x06, 0x8b, 0xbd, 0x57, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x98, 0x71, 0x07, 0x0f, 0x8d, 0x27, 0xdd, 0xa0, 0x50, 0xee, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x82, 0x19, 0x92, 0x81, 0x60, 0x86, 0xcd, 0x86, 0x3f, 0x97, 0x36, 0x08, 0xe3, 0x8c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x66, 0xc8, 0x0f, 0x1e, 0x76, 0x4f, 0x7a, 0x70, 0x6c, 0x1d, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x68, 0xc6, 0x1d, 0x3c, 0x34, 0x9e, 0x74, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x34, 0x43, 0x32, 0x10, 0xd0, 0x90, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x66, 0x48, 0x07, 0xa2, 0x19, 0xa6, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x68, 0x86, 0xfc, 0xe0, 0x49, 0x02, 0xa5, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x6c, 0xf0, 0xa8, 0xc8, 0x8c, 0x81, 0x68, 0x86, 0xd1, 0x41, 0xe0, 0xe8, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd1, 0x0c, 0xab, 0x81, 0x68, 0x86, 0xe5, 0x41, 0x60, 0x43, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x84, 0x33, 0xa4, 0x03, 0xe1, 0x0c, 0x9b, 0x0d, 0x7f, 0x2e, 0x6d, 0x10, 0xc6, 0x19, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xce, 0x10, 0x1f, 0xbc, 0xa4, 0xa1, 0xf4, 0x20, 0x50, 0x4e, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x78, 0x86, 0x74, 0x20, 0x9e, 0xa1, 0x74, 0xc3, 0x9f, 0x4b, 0x83, 0x9b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x6c, 0xf0, 0x58, 0xdf, 0x8c, 0x83, 0x67, 0x4b, 0x94, 0x6e, 0x10, 0x4e, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3c, 0xc3, 0x64, 0x20, 0x9e, 0x61, 0xbe, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9e, 0x61, 0x33, 0x10, 0xcf, 0x30, 0x3c, 0x08, 0x94, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9e, 0x61, 0x39, 0x10, 0xcf, 0xb0, 0x3e, 0x08, 0x6c, 0x88, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0xe0, 0x05, 0xcd, 0x19, 0x03, 0xf1, 0x0c, 0x9d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x0d, 0x9e, 0x63, 0x9c, 0x31, 0x10, 0xcf, 0x50, 0xb5, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x06, 0x8f, 0xc6, 0xcd, 0x18, 0x88, 0x67, 0x68, 0x39, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x78, 0x86, 0x9a, 0x81, 0x78, 0x86, 0xa6, 0x83, 0x07, 0x88, 0x92, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xc4, 0x33, 0x74, 0x0d, 0xc4, 0x33, 0x94, 0x1d, 0x3e, 0x58, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe2, 0x19, 0xda, 0x06, 0xe2, 0x19, 0x2a, 0x0f, 0x02, 0xe5, 0xa4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa2, 0x71, 0x07, 0x0f, 0x8d, 0x27, 0xdd, 0xf0, 0xf5, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xd1, 0x90, 0x0c, 0x44, 0x34, 0x4c, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x44, 0x34, 0x44, 0x03, 0x11, 0x0d, 0xf9, 0x86, 0xb7, 0x75, 0x0e, 0x42, 0x38, 0x63, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x68, 0x18, 0x0c, 0x44, 0x34, 0x2c, 0x0e, 0x4f, 0xeb, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x41, 0x8d, 0x3b, 0x78, 0x68, 0x3c, 0xe9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x0b, 0x2f, 0xb3, 0x0e, 0xc2, 0x38, 0xa3, 0x01, 0xf0, 0x94, 0x0e, 0x4d, 0xae, 0x2c, 0x8c, 0xac, 0x8c, 0x0c, 0x84, 0x0e, 0x4d, 0xee, 0xad, 0xee, 0x0c, 0x0d, 0xa4, 0x2c, 0x6c, 0x0c, 0x0d, 0x44, 0xae, 0xce, 0x0d, 0xe4, 0xcd, 0x0c, 0xc4, 0xc5, 0x0c, 0x24, 0xcc, 0x8d, 0x0c, 0x04, 0x4e, 0xee, 0x8d, 0xac, 0x6e, 0xac, 0x8c, 0x0c, 0x44, 0x2c, 0x0f, 0x64, 0x25, 0x4c, 0xac, 0x8c, 0x6e, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x85, 0x97, 0x59, 0x07, 0x0d, 0x5c, 0x36, 0x35, 0x00, 0x9e, 0xcc, 0x95, 0xd1, 0x81, 0xd0, 0xbd, 0x81, 0x94, 0xb8, 0xe4, 0x81, 0x88, 0xe5, 0x81, 0xb8, 0x98, 0x81, 0xdc, 0xa1, 0x95, 0xb9, 0x81, 0x90, 0xbd, 0xb9, 0x95, 0x81, 0xd0, 0xc9, 0x85, 0xd9, 0x95, 0xc9, 0xcd, 0xa5, 0xb9, 0x9d, 0x6d, 0x50, 0x90, 0xc6, 0x6e, 0x70, 0x42, 0xeb, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe2, 0x1a, 0xe2, 0x81, 0xb8, 0x86, 0x9e, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x71, 0x0d, 0xf9, 0x40, 0x5c, 0xc3, 0x74, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0x70, 0xd9, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x71, 0x0d, 0xa3, 0x83, 0xf7, 0x43, 0x95, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x36, 0x78, 0x93, 0x4a, 0xc6, 0xc1, 0xa3, 0x5a, 0x32, 0x0e, 0x1f, 0xac, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc1, 0x03, 0x60, 0x32, 0x0e, 0xde, 0x0f, 0x55, 0x7a, 0xb0, 0xcc, 0x49, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x36, 0x78, 0x1f, 0x4c, 0xc6, 0x40, 0x5c, 0x43, 0xcd, 0x86, 0xcf, 0x5d, 0x36, 0x08, 0xe3, 0x8c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x36, 0x78, 0x73, 0x4b, 0xc6, 0xc1, 0xbb, 0xb8, 0x4a, 0x0f, 0xde, 0x63, 0x53, 0xda, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x04, 0x36, 0xee, 0xe0, 0xa1, 0xf1, 0xa4, 0x1b, 0x1e, 0x94, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x02, 0x1b, 0x92, 0x81, 0xc0, 0x86, 0xf4, 0xa0, 0x01, 0xeb, 0xed, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x6c, 0xc8, 0x0f, 0x1e, 0x1a, 0x4f, 0xba, 0xe1, 0x41, 0xc9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb0, 0x61, 0x33, 0x10, 0xd8, 0xb0, 0x3b, 0x68, 0x69, 0xc9, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x22, 0x1b, 0x77, 0xf0, 0xd0, 0x78, 0xd2, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0x9a, 0x61, 0xf2, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x68, 0x86, 0xc9, 0xaf, 0x01, 0xf0, 0xb8, 0x2d, 0x2c, 0xcd, 0x0d, 0x44, 0xae, 0x6c, 0xac, 0x4e, 0x6e, 0x2e, 0xcd, 0xae, 0x0c, 0x84, 0xed, 0xed, 0x0d, 0x6e, 0x07, 0x04, 0xae, 0x4c, 0xce, 0xec, 0x4d, 0xae, 0x6d, 0x0e, 0x24, 0x0c, 0x04, 0x2e, 0x4c, 0x8e, 0x2e, 0x2d, 0x8c, 0x0d, 0x24, 0xcd, 0xed, 0x4d, 0x8e, 0xac, 0x4c, 0x0e, 0x84, 0x4e, 0x2e, 0xcc, 0xae, 0x4c, 0x6e, 0x2e, 0x8c, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x0d, 0x5e, 0x64, 0xa5, 0x31, 0x10, 0xeb, 0x90, 0x6d, 0xf8, 0xfa, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x6f, 0xc8, 0x06, 0xe2, 0x1b, 0xf2, 0x83, 0xe7, 0x83, 0xa5, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x88, 0xe3, 0x0f, 0x5e, 0x9d, 0x57, 0xba, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0xe0, 0x21, 0x5b, 0x1a, 0x03, 0x21, 0x0e, 0x8b, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x21, 0x0e, 0xe9, 0x40, 0x88, 0x43, 0x7c, 0x50, 0x50, 0x64, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0x73, 0xf0, 0x56, 0x2c, 0x8d, 0xc3, 0xd3, 0x3a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x88, 0xc3, 0x66, 0x20, 0xc4, 0x61, 0x77, 0xf0, 0x7c, 0xb0, 0x94, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x71, 0xfc, 0xc1, 0xab, 0xf3, 0x4a, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xc4, 0x38, 0x64, 0x03, 0x31, 0x0e, 0x9b, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xc0, 0x65, 0xd3, 0xc1, 0x89, 0xb9, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x71, 0x58, 0x0d, 0xc4, 0x38, 0x2c, 0x0f, 0x9e, 0x0f, 0x96, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x61, 0x8e, 0x3f, 0x78, 0x75, 0x5e, 0xe9, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x81, 0x29, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x84, 0x39, 0x2c, 0x06, 0xc2, 0x1c, 0x56, 0x1b, 0xde, 0xd6, 0xd9, 0x60, 0xed, 0x4a, 0x77, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xe7, 0xf8, 0x83, 0x57, 0xe7, 0x95, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x73, 0xc8, 0x06, 0xe2, 0x1c, 0x36, 0x07, 0x0f, 0x77, 0x2c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe2, 0x1c, 0x56, 0x03, 0x71, 0x0e, 0xcb, 0x83, 0xe7, 0x83, 0xa5, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa0, 0xe3, 0x0f, 0x5e, 0x9d, 0x57, 0xba, 0x41, 0xd1, 0x41, 0xbb, 0x41, 0xe1, 0x6f, 0xb0, 0x41, 0x60, 0x0a, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x81, 0x0e, 0xb3, 0x81, 0x40, 0x87, 0xe9, 0x41, 0x53, 0xe5, 0x20, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xe9, 0xf8, 0x83, 0x57, 0xe7, 0x95, 0x6e, 0x70, 0x1c, 0x9b, 0xd8, 0x20, 0x30, 0x85, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x83, 0xe7, 0xb1, 0x69, 0x0c, 0x44, 0x3a, 0x4c, 0x37, 0xbc, 0xcd, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x91, 0x0e, 0x93, 0x83, 0xb7, 0xb2, 0x96, 0x1e, 0x3c, 0xdc, 0xb1, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x74, 0x18, 0x0f, 0x44, 0x3a, 0x34, 0x6c, 0x78, 0x5b, 0x67, 0x80, 0x47, 0x2e, 0xed, 0x0c, 0x8d, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x42, 0x1d, 0x7f, 0xf0, 0xea, 0xbc, 0xd2, 0x0d, 0x8e, 0x63, 0x13, 0x1b, 0x1e, 0xdc, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x42, 0x1d, 0xe2, 0x81, 0x50, 0x87, 0xc5, 0xc1, 0x01, 0xcf, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x75, 0xd8, 0x0c, 0x84, 0x3a, 0x4c, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x84, 0x3a, 0x8c, 0x06, 0x42, 0x1d, 0x76, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0xf0, 0x18, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x75, 0x18, 0x0e, 0x84, 0x3a, 0x2c, 0x0f, 0x4f, 0xeb, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x06, 0x4f, 0xbb, 0xd3, 0x38, 0x78, 0x75, 0x5e, 0xe9, 0xc1, 0xf3, 0xc1, 0x52, 0x56, 0x83, 0xb5, 0x2b, 0xdd, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x6b, 0x57, 0xba, 0x1b, 0x00, 0x5f, 0xe5, 0xca, 0xc6, 0xea, 0xe4, 0xe6, 0xca, 0x40, 0xde, 0xdc, 0x40, 0xd8, 0xca, 0xcc, 0xe8, 0x40, 0xe6, 0xea, 0xc4, 0xe8, 0xe4, 0xca, 0xca, 0x58, 0x40, 0xc6, 0xde, 0xe0, 0xf2, 0xd2, 0xdc, 0xce, 0x40, 0xda, 0xea, 0xe8, 0xc2, 0xdc, 0xe8, 0x40, 0xc4, 0xc2, 0xc6, 0xd6, 0x40, 0xd2, 0xdc, 0xe8, 0xde, 0x40, 0x5c, 0xd8, 0x5c, 0xc2, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0xe0, 0x61, 0xd8, 0x19, 0x03, 0xd1, 0x0f, 0xc3, 0x0d, 0x5f, 0xbf, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0xc1, 0xe3, 0xab, 0x33, 0x0e, 0x9e, 0x0f, 0x96, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x06, 0x2f, 0xfd, 0xce, 0x38, 0x78, 0x09, 0x74, 0xe9, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd8, 0x87, 0x78, 0x20, 0xf6, 0x61, 0x72, 0xf0, 0x7c, 0xb0, 0x94, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x36, 0x78, 0x9a, 0x79, 0xc6, 0xc1, 0x4b, 0xa0, 0x4b, 0x37, 0x28, 0x48, 0x63, 0x37, 0x58, 0xb5, 0xae, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x04, 0x3f, 0x0c, 0x06, 0x82, 0x1f, 0xb6, 0x1b, 0x2e, 0xa9, 0x0d, 0x1a, 0x61, 0xf2, 0x5b, 0xc3, 0x83, 0x3b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xfc, 0xb0, 0x1b, 0x08, 0x7e, 0x98, 0x1e, 0x94, 0xda, 0x9e, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc1, 0x4b, 0xda, 0x33, 0x0e, 0x5e, 0x02, 0x5d, 0xba, 0xe1, 0x92, 0xda, 0x60, 0x8d, 0xc2, 0xee, 0x1a, 0x1e, 0xdc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe8, 0x87, 0x74, 0x20, 0xfa, 0x61, 0xb7, 0xe1, 0x92, 0xda, 0xf0, 0xe0, 0xce, 0x1a, 0x0c, 0x52, 0xa9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x7e, 0x58, 0x0c, 0x44, 0x3f, 0xcc, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x78, 0xb0, 0x46, 0x61, 0xb7, 0x56, 0x83, 0x07, 0xcc, 0x96, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x3c, 0x60, 0xb6, 0xb4, 0x01, 0xf0, 0x56, 0xae, 0x6c, 0xac, 0x4e, 0x6e, 0xae, 0x0c, 0xe4, 0xcd, 0x0d, 0x44, 0x2e, 0xed, 0x0c, 0x8d, 0x0e, 0x64, 0xae, 0x4e, 0x8c, 0x4e, 0xae, 0xac, 0x8c, 0x05, 0x64, 0xec, 0x0d, 0x2e, 0x2f, 0xcd, 0xed, 0x0c, 0xa4, 0xad, 0x8e, 0x2e, 0xcc, 0x8d, 0x0e, 0x44, 0x2c, 0x6c, 0x6c, 0x0d, 0x24, 0xcd, 0x8d, 0xee, 0x0d, 0xc4, 0x45, 0xce, 0x25, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x20, 0x7e, 0x60, 0x08, 0xc2, 0x70, 0xc3, 0xd7, 0x2f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x04, 0x84, 0x6c, 0x60, 0x02, 0x42, 0x7e, 0xf0, 0x7c, 0xb0, 0x94, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0x81, 0xf8, 0x83, 0xe7, 0xe2, 0x97, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0x81, 0x10, 0x0f, 0x8c, 0x40, 0x98, 0x1c, 0x3c, 0x1f, 0x2c, 0x65, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x66, 0x20, 0xfe, 0xe0, 0xb9, 0xf8, 0xa5, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0x0c, 0x1e, 0x94, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x06, 0xc2, 0x60, 0x60, 0x06, 0xc2, 0x76, 0xc3, 0x25, 0xb5, 0x41, 0x23, 0x4c, 0x7e, 0x6b, 0x78, 0x70, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x66, 0x20, 0xec, 0x06, 0x66, 0x20, 0x4c, 0x0f, 0x4a, 0xd9, 0xcc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x08, 0xe2, 0x0f, 0x9e, 0x8b, 0x5f, 0xba, 0xe1, 0x92, 0xda, 0x60, 0x6d, 0x27, 0xfc, 0x1a, 0x1e, 0xdc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x21, 0x08, 0xe9, 0xc0, 0x10, 0x84, 0xdd, 0x86, 0x4b, 0x6a, 0xc3, 0x83, 0x3b, 0x6b, 0x50, 0xf0, 0x6c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x10, 0x84, 0xc5, 0xc0, 0x10, 0x84, 0xd9, 0x86, 0xb7, 0x75, 0x06, 0x0f, 0x0f, 0xd6, 0x76, 0xc2, 0xd7, 0xe1, 0x14, 0x6b, 0x0d, 0x9a, 0xc4, 0xd2, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd8, 0x86, 0x7c, 0x20, 0xb6, 0x61, 0xbc, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb6, 0x61, 0x30, 0x10, 0xdb, 0xb0, 0xdc, 0xf0, 0xb6, 0xce, 0x06, 0x61, 0x9c, 0x71, 0x70, 0x62, 0xee, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x62, 0x1b, 0xa6, 0x03, 0xb1, 0x0d, 0xdb, 0xc3, 0xd3, 0x3a, 0xcd, 0x1a, 0x84, 0xa5, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x84, 0x36, 0xe4, 0x03, 0xa1, 0x0d, 0x83, 0x83, 0xc4, 0x96, 0xaa, 0x59, 0x83, 0x60, 0x6f, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x08, 0xf6, 0xb6, 0x06, 0xc0, 0x37, 0xb9, 0x3a, 0x37, 0x10, 0x17, 0x33, 0x90, 0x37, 0x37, 0x10, 0x17, 0x37, 0x97, 0x30, 0x16, 0x90, 0x3a, 0x38, 0xb2, 0x30, 0xba, 0x34, 0xb7, 0x33, 0x10, 0x97, 0x30, 0x16, 0x10, 0x97, 0x39, 0xba, 0x30, 0xba, 0x32, 0x16, 0x90, 0x30, 0x37, 0x32, 0x10, 0x97, 0x39, 0xba, 0x37, 0xb8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x77, 0xfc, 0x40, 0xd8, 0x43, 0xc5, 0x86, 0xaf, 0x5f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x78, 0x87, 0x6c, 0x20, 0xde, 0x61, 0xb8, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xde, 0x21, 0x1c, 0x88, 0x77, 0x98, 0x6c, 0xf8, 0xdc, 0x65, 0x83, 0xc2, 0xdf, 0x60, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe2, 0x1d, 0x06, 0x07, 0x8f, 0x92, 0x31, 0xdd, 0xa0, 0x10, 0x4c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x78, 0x87, 0xc5, 0xc1, 0xa3, 0x64, 0x4c, 0x0f, 0x1f, 0xac, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf1, 0x0e, 0x9b, 0x81, 0x78, 0x87, 0xdd, 0xc1, 0xf3, 0xc1, 0x52, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x90, 0xc7, 0x1f, 0xbc, 0xa3, 0xc5, 0x74, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x36, 0x78, 0xa2, 0xa3, 0xc6, 0x40, 0xc8, 0xc3, 0x64, 0x83, 0x62, 0x12, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x79, 0x88, 0x0f, 0xde, 0xc1, 0xa8, 0x71, 0x50, 0xa4, 0x62, 0x1e, 0x1e, 0xdc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x98, 0xc7, 0x1f, 0xbc, 0xa3, 0xc5, 0x74, 0x83, 0xa2, 0x83, 0x76, 0x83, 0x63, 0x86, 0xe7, 0x06, 0x27, 0xe6, 0xce, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe6, 0x61, 0x35, 0x10, 0xf3, 0x50, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe6, 0x61, 0x36, 0x10, 0xf3, 0xb0, 0x3b, 0x28, 0x46, 0x6a, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x98, 0x87, 0xe1, 0x40, 0xcc, 0x43, 0xc3, 0xc1, 0xa3, 0x37, 0x4c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x98, 0x87, 0x8a, 0x81, 0x98, 0x87, 0x96, 0x83, 0x92, 0x19, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x7a, 0xfc, 0xc1, 0x3b, 0x5a, 0x4c, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x38, 0x83, 0x79, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x06, 0xcf, 0xab, 0xd3, 0x18, 0x88, 0x7a, 0x58, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x7a, 0x88, 0x06, 0xa2, 0x1e, 0xf2, 0x0d, 0x9f, 0xbb, 0x6c, 0x50, 0xf8, 0x1b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd4, 0x43, 0x7c, 0xf0, 0x24, 0x2d, 0xd3, 0x83, 0x22, 0xa7, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x7a, 0x18, 0x0c, 0x44, 0x3d, 0x8c, 0x0e, 0x9e, 0x0f, 0x96, 0xd2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x84, 0x3d, 0xfe, 0xe0, 0x1d, 0x2d, 0xa6, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc2, 0x1e, 0x82, 0x81, 0xb0, 0x87, 0x74, 0xc3, 0xe7, 0x2e, 0x1b, 0x14, 0xfe, 0x06, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xf6, 0x10, 0x1e, 0x3c, 0xac, 0xcc, 0xf4, 0xa0, 0x80, 0xcd, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc2, 0x1e, 0xe2, 0x81, 0xb0, 0x87, 0x86, 0x0d, 0x97, 0xd4, 0x06, 0x81, 0x29, 0xb4, 0x1a, 0x9c, 0x4d, 0xae, 0x0e, 0x0a, 0x6d, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x7b, 0xd8, 0x0e, 0x84, 0x3d, 0x14, 0x6c, 0x78, 0x5b, 0x67, 0xf0, 0xfa, 0xe0, 0x0c, 0xe6, 0x59, 0x87, 0x53, 0xec, 0x70, 0x8a, 0xad, 0x06, 0x03, 0x88, 0x7c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x38, 0x6f, 0xc7, 0x0c, 0x80, 0x57, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x4f, 0x52, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6f, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0x84, 0xb8, 0x81, 0x48, 0x84, 0x8a, 0x0d, 0x8f, 0x8f, 0x6c, 0x30, 0x80, 0xc8, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0a, 0x71, 0x07, 0x0f, 0xd6, 0x33, 0xdd, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0x85, 0x90, 0x0c, 0x44, 0x21, 0xb4, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x42, 0x88, 0x06, 0xa2, 0x10, 0x76, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x28, 0x84, 0xf0, 0xe0, 0x09, 0x83, 0xa6, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0x85, 0x90, 0x0e, 0x44, 0x21, 0x2c, 0x0e, 0x02, 0x47, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x42, 0x98, 0x0c, 0x44, 0x21, 0xcc, 0x0e, 0x02, 0x1b, 0xa2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0a, 0x61, 0x38, 0x10, 0x85, 0x50, 0xb2, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x42, 0x98, 0x1e, 0xbc, 0xba, 0xd1, 0x74, 0x83, 0x70, 0x1a, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa2, 0x10, 0xd6, 0x03, 0x51, 0x08, 0x0d, 0x07, 0x81, 0x0d, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x51, 0x08, 0x15, 0x03, 0x51, 0x08, 0x1d, 0x87, 0x0f, 0x56, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x30, 0xc4, 0x1d, 0x3c, 0x58, 0xcf, 0x74, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0x86, 0x90, 0x1c, 0x3c, 0x58, 0xcf, 0x74, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x18, 0x42, 0x3a, 0x10, 0x86, 0x10, 0x1f, 0x3e, 0x58, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x38, 0xc4, 0x1d, 0x3c, 0x58, 0xcf, 0x74, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc1, 0x53, 0x3c, 0x3d, 0x0e, 0x1e, 0x09, 0xea, 0x71, 0x50, 0xc0, 0xe6, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x24, 0xe2, 0x0e, 0x1e, 0xac, 0x67, 0xba, 0xe1, 0x57, 0xb2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0xe0, 0xdd, 0xb4, 0x1e, 0x03, 0x91, 0x08, 0xf9, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x48, 0x84, 0x64, 0x20, 0x12, 0x21, 0x3a, 0xbc, 0x17, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x44, 0x22, 0x64, 0x07, 0x4f, 0xd8, 0xf5, 0x38, 0x28, 0x99, 0x31, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x0d, 0x9e, 0x89, 0xeb, 0x31, 0x10, 0x89, 0x30, 0xdc, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xf0, 0xe0, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x44, 0x22, 0x8c, 0x06, 0x22, 0x11, 0x76, 0x07, 0xa5, 0xb6, 0x67, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x24, 0xc2, 0x72, 0x20, 0x12, 0xa1, 0x61, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0x83, 0x3b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0x89, 0xb0, 0x1e, 0x88, 0x44, 0x28, 0x38, 0x28, 0x65, 0x33, 0x6b, 0x05, 0x3c, 0xb8, 0x37, 0x78, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf0, 0xe0, 0xde, 0xe0, 0x06, 0xc0, 0x63, 0x38, 0xb9, 0x37, 0xb2, 0xba, 0xb1, 0x32, 0x10, 0x17, 0xb4, 0xb2, 0x30, 0x32, 0x10, 0x14, 0xb6, 0x32, 0x33, 0xba, 0xb6, 0xb7, 0x39, 0x3a, 0x90, 0x34, 0xba, 0xb2, 0xb6, 0x14, 0x90, 0x30, 0x37, 0x32, 0x10, 0x17, 0xb9, 0xb2, 0x39, 0x3a, 0x90, 0x37, 0x39, 0x90, 0x31, 0xb9, 0xb0, 0x39, 0x34, 0x90, 0x34, 0x33, 0x90, 0xb2, 0x36, 0x38, 0xba, 0xbc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xb6, 0xb8, 0x81, 0xb9, 0x0b, 0xe3, 0x0d, 0x8f, 0x8f, 0x0c, 0x78, 0x70, 0x6f, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x5b, 0xdc, 0xc1, 0xc3, 0x8d, 0x4d, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x5b, 0x48, 0x06, 0xa6, 0x2d, 0xcc, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x16, 0xb2, 0x83, 0xa7, 0x32, 0x9b, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb4, 0x85, 0x70, 0x60, 0xda, 0xc2, 0xe0, 0x20, 0x70, 0xf4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x69, 0x0b, 0x8b, 0x81, 0x69, 0x0b, 0xab, 0x83, 0xc0, 0x86, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc6, 0x2d, 0xee, 0xe0, 0xe1, 0xc6, 0xa6, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc6, 0x2d, 0x24, 0x03, 0xe3, 0x16, 0x5a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x5b, 0x88, 0x06, 0xc6, 0x2d, 0x6c, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xb0, 0x2c, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb8, 0x85, 0xfc, 0xe0, 0xc9, 0xdc, 0xa6, 0x07, 0x81, 0x0d, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x5b, 0x18, 0x0d, 0x8c, 0x5b, 0x28, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0x8d, 0x1f, 0xb5, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb8, 0x85, 0xe5, 0xc1, 0x1b, 0xc5, 0x4d, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xdc, 0xc2, 0x74, 0x60, 0xdc, 0xc2, 0xfc, 0x20, 0x70, 0xf4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x71, 0x0b, 0xfb, 0x81, 0x71, 0x0b, 0x1d, 0x07, 0x81, 0x0d, 0x51, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x6f, 0x71, 0x07, 0x0f, 0x37, 0x36, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x6f, 0x21, 0x1e, 0x98, 0xb7, 0x30, 0x38, 0x08, 0x4f, 0xd5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xb8, 0xb8, 0x83, 0x87, 0x1b, 0x9b, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0x50, 0xfa, 0x69, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x03, 0x17, 0xe2, 0x81, 0x81, 0x0b, 0xbb, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x03, 0x17, 0xf2, 0x81, 0x81, 0x0b, 0x93, 0x83, 0x92, 0x19, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xb8, 0xb0, 0x19, 0x18, 0xb8, 0x30, 0x3b, 0x28, 0x65, 0x33, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x89, 0x8b, 0x3b, 0x78, 0xb8, 0xb1, 0xe9, 0x06, 0x05, 0x69, 0xec, 0xe0, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x71, 0x21, 0x1c, 0x98, 0xb8, 0x30, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xf0, 0xe0, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x5c, 0x18, 0x0c, 0x4c, 0x5c, 0xd8, 0x1c, 0x94, 0xda, 0x9e, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc8, 0xc5, 0x1d, 0x3c, 0xdc, 0xd8, 0x74, 0x83, 0xc2, 0x50, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xb9, 0x90, 0x0c, 0x8c, 0x5c, 0xc8, 0x37, 0xbc, 0xad, 0xb3, 0x41, 0xb0, 0x2c, 0x1d, 0x0c, 0x52, 0xa9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xba, 0xb8, 0x83, 0x87, 0x1b, 0x9b, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xba, 0x90, 0x0c, 0x4c, 0x5d, 0xe8, 0xdc, 0xf0, 0x2b, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x75, 0x21, 0x1b, 0x98, 0xba, 0xb0, 0xdb, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x2e, 0xc4, 0x03, 0x53, 0x17, 0xf2, 0x83, 0x10, 0x7c, 0xd8, 0xa0, 0xf1, 0xa3, 0x96, 0x83, 0x41, 0x2a, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x5d, 0x18, 0x0e, 0x4c, 0x5d, 0xa8, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x75, 0x61, 0x39, 0x30, 0x75, 0x61, 0x7c, 0x50, 0x8a, 0x6a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x53, 0x17, 0xd6, 0x03, 0x53, 0x17, 0x4a, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0xd1, 0x7a, 0x72, 0x50, 0x68, 0x63, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x53, 0x17, 0x5a, 0x06, 0xa6, 0x2e, 0x34, 0x6e, 0x78, 0x5b, 0x67, 0x83, 0xa2, 0xf5, 0x64, 0x70, 0xf7, 0xe0, 0xd1, 0x16, 0xa7, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x5d, 0xfc, 0xc0, 0xd8, 0x85, 0xc9, 0x86, 0x4b, 0x6a, 0xc3, 0x83, 0x3b, 0x6b, 0x30, 0x48, 0xa5, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xec, 0x42, 0x36, 0x30, 0x76, 0x61, 0xb1, 0xe1, 0x6d, 0x9d, 0x83, 0x47, 0x5b, 0x9c, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x73, 0x17, 0x77, 0xf0, 0x70, 0x63, 0xd3, 0x0d, 0x97, 0xd4, 0x06, 0x8f, 0xb6, 0x38, 0x5d, 0x83, 0x82, 0x67, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe6, 0x2e, 0xc4, 0x03, 0x73, 0x17, 0xb6, 0x1b, 0x2e, 0xa9, 0x0d, 0x0f, 0xee, 0xac, 0x41, 0xc1, 0xb3, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x73, 0x17, 0x26, 0x03, 0x73, 0x17, 0xa6, 0x1b, 0xde, 0xd6, 0x19, 0x5c, 0x3e, 0x78, 0xb4, 0xc5, 0x69, 0xad, 0x06, 0x23, 0xcd, 0x7d, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x28, 0xc7, 0x3a, 0x07, 0xe0, 0xe5, 0x4d, 0x8e, 0xac, 0x4c, 0xae, 0x8c, 0x0c, 0x24, 0x8d, 0xae, 0xac, 0x0d, 0x24, 0xcd, 0x6d, 0xae, 0x4c, 0x8e, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x30, 0x6e, 0x60, 0x38, 0xc3, 0x64, 0xc3, 0xe3, 0x23, 0x1b, 0x8c, 0x34, 0xf7, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xc3, 0xb8, 0x83, 0xe7, 0xf0, 0x9c, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xc3, 0x90, 0x0c, 0x8c, 0x61, 0xa8, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x86, 0x21, 0x1a, 0x18, 0xc3, 0xb0, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x61, 0x08, 0x0f, 0x1e, 0x49, 0x74, 0xba, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x63, 0x18, 0xd2, 0x81, 0x31, 0x0c, 0x8b, 0x83, 0xc0, 0xd1, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc6, 0x30, 0x4c, 0x06, 0xc6, 0x30, 0xcc, 0x0e, 0x02, 0x1b, 0xa2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x0c, 0xc3, 0x70, 0x60, 0x0c, 0xc3, 0x78, 0xc3, 0x9f, 0x4b, 0x1b, 0x14, 0xad, 0x27, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x86, 0x61, 0x79, 0xf0, 0xbc, 0xa7, 0xd3, 0x83, 0x13, 0xbf, 0xc7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x86, 0x61, 0x3d, 0x30, 0x86, 0xa1, 0x61, 0xc3, 0x9f, 0x4b, 0x1b, 0x9c, 0x4d, 0xae, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x0c, 0xc3, 0xfc, 0xe0, 0x55, 0x55, 0xa7, 0x07, 0x0f, 0x10, 0x25, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe6, 0x30, 0xee, 0xe0, 0x39, 0x3c, 0xa7, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe6, 0x30, 0x24, 0x03, 0x73, 0x18, 0x46, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x87, 0x21, 0x1a, 0x98, 0xc3, 0x10, 0x1f, 0x04, 0x8e, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x87, 0x21, 0x1f, 0x98, 0xc3, 0xb0, 0x39, 0x08, 0x6c, 0x88, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x14, 0xe3, 0x0e, 0x9e, 0xc3, 0x73, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x14, 0x43, 0x38, 0x30, 0x8a, 0xa1, 0x61, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x28, 0x86, 0x74, 0x60, 0x14, 0xc3, 0x70, 0xc3, 0xe7, 0x2e, 0x83, 0xbb, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x8a, 0x21, 0x3f, 0x78, 0xe6, 0xda, 0xe9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x51, 0x0c, 0x83, 0x81, 0x51, 0x0c, 0x9b, 0x83, 0x43, 0x6b, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x8a, 0x61, 0x34, 0x30, 0x8a, 0x61, 0x77, 0xb0, 0x2c, 0x98, 0xb0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x14, 0xc3, 0x72, 0x60, 0x14, 0xc3, 0x78, 0xc3, 0xe7, 0x2e, 0x83, 0xb3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x8a, 0x61, 0x7b, 0xf0, 0x4c, 0xbb, 0xd3, 0x83, 0x82, 0x22, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xc5, 0xb0, 0x1e, 0x18, 0xc5, 0x50, 0xb0, 0xe1, 0x73, 0x97, 0xc1, 0xe5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xc5, 0xb0, 0x3f, 0x78, 0x0c, 0xdf, 0xe9, 0x41, 0x41, 0x91, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x63, 0xdc, 0xc1, 0x73, 0x78, 0x4e, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x63, 0x48, 0x06, 0xa6, 0x31, 0xec, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x63, 0xc8, 0x06, 0xa6, 0x31, 0x4c, 0x0e, 0x9e, 0xf6, 0x71, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x18, 0x36, 0x03, 0xd3, 0x18, 0x66, 0x07, 0x87, 0xd6, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x1a, 0xc3, 0x72, 0x60, 0x1a, 0x43, 0xcb, 0x86, 0x4b, 0x6a, 0xc3, 0x83, 0x3b, 0xab, 0xc1, 0xd9, 0xe4, 0xea, 0x60, 0xd8, 0xed, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x34, 0x86, 0x86, 0x81, 0x69, 0x0c, 0x25, 0x07, 0xcb, 0x82, 0x09, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x81, 0x8c, 0x3b, 0x78, 0x0e, 0xcf, 0xe9, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x81, 0x0c, 0xc9, 0xc0, 0x40, 0x86, 0xf9, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x81, 0x0c, 0xd1, 0xc0, 0x40, 0x86, 0xc5, 0x86, 0xb7, 0x75, 0x0e, 0xd2, 0x6b, 0x91, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x81, 0x0c, 0x93, 0x81, 0x81, 0x0c, 0xab, 0x83, 0x43, 0x6b, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x90, 0x61, 0x36, 0x30, 0x90, 0x61, 0x7d, 0xf0, 0xb4, 0x8f, 0xd3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x89, 0x8c, 0x1f, 0x98, 0xca, 0x30, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0x9c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x32, 0xc4, 0x03, 0x13, 0x19, 0x66, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1e, 0xdc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x89, 0x0c, 0x93, 0x81, 0x89, 0x0c, 0xab, 0x83, 0x52, 0xdb, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xc9, 0xf8, 0x83, 0x47, 0x84, 0x9e, 0x6e, 0x50, 0xf0, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x23, 0x19, 0xb2, 0x81, 0x91, 0x0c, 0x93, 0x0d, 0x8a, 0x49, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x24, 0x43, 0x3c, 0x30, 0x92, 0x21, 0x3f, 0x28, 0x52, 0x31, 0x0f, 0x06, 0xa9, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x64, 0xfc, 0xc1, 0x23, 0x42, 0x4f, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x64, 0xc8, 0x06, 0x66, 0x32, 0x14, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xc9, 0x10, 0x0e, 0xcc, 0x64, 0xc8, 0x0f, 0x4a, 0x51, 0xcd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x26, 0xc3, 0x60, 0x60, 0x26, 0xc3, 0xee, 0xe0, 0x69, 0x1f, 0xa7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4c, 0x86, 0xe1, 0xc0, 0x4c, 0x86, 0xfd, 0x86, 0xb7, 0x75, 0x36, 0x28, 0x5a, 0x4f, 0x06, 0x77, 0x0f, 0x06, 0xa9, 0x54, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x50, 0x86, 0x64, 0x60, 0x28, 0x43, 0xbe, 0xe1, 0x92, 0xda, 0xf0, 0xe0, 0xce, 0x1a, 0x0c, 0x52, 0xa9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xca, 0x90, 0x0e, 0x0c, 0x65, 0x88, 0x0f, 0x52, 0xde, 0xae, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa9, 0x8c, 0x3f, 0x78, 0x44, 0xe8, 0xe9, 0x86, 0x4b, 0x6a, 0x83, 0x41, 0x2a, 0xb5, 0x06, 0x05, 0xcf, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x65, 0xc8, 0x06, 0xa6, 0x32, 0x6c, 0x36, 0x5c, 0x52, 0x1b, 0x1e, 0xdc, 0x59, 0x83, 0x41, 0x2a, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x53, 0x19, 0xf2, 0x81, 0xa9, 0x0c, 0x93, 0x0d, 0x6f, 0xeb, 0x0c, 0x2e, 0x1f, 0x0c, 0x52, 0xa9, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc1, 0x8c, 0x3b, 0x78, 0x0e, 0xcf, 0xe9, 0x06, 0x05, 0x69, 0xec, 0xe0, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x98, 0x21, 0x1c, 0x18, 0xcc, 0x30, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xf0, 0xe0, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0c, 0x66, 0x18, 0x0c, 0x0c, 0x66, 0xd8, 0x1c, 0x94, 0xb2, 0x99, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x64, 0xc6, 0x1d, 0x3c, 0x87, 0xe7, 0x74, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xcc, 0x90, 0x0c, 0x4c, 0x66, 0x18, 0x6c, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x93, 0x19, 0xc2, 0x81, 0xc9, 0x0c, 0xe9, 0x41, 0x91, 0x8a, 0x79, 0x50, 0xf0, 0x6c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x68, 0xc6, 0x1d, 0x3c, 0x87, 0xe7, 0x74, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x68, 0x86, 0x64, 0x60, 0x34, 0xc3, 0x7c, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x68, 0x86, 0x68, 0x60, 0x34, 0x43, 0x7a, 0x50, 0x8a, 0x6a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa3, 0x19, 0xe2, 0x81, 0xd1, 0x0c, 0xab, 0x83, 0xa7, 0x7d, 0x9c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa3, 0x19, 0x66, 0x03, 0xa3, 0x19, 0xd6, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0x68, 0x3d, 0x19, 0xdc, 0x3d, 0x28, 0x78, 0x36, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x66, 0x33, 0x7e, 0x60, 0x36, 0x43, 0xba, 0xe1, 0x92, 0xda, 0xf0, 0xe0, 0xce, 0x1a, 0x14, 0x3c, 0x9b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x9b, 0x21, 0x1b, 0x98, 0xcd, 0x10, 0x1e, 0x1c, 0x3f, 0xf9, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe1, 0x8c, 0x3b, 0x78, 0x0e, 0xcf, 0xe9, 0x86, 0x4b, 0x6a, 0x83, 0x82, 0x67, 0x73, 0x0d, 0x06, 0xa9, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0c, 0x67, 0x48, 0x06, 0x86, 0x33, 0x2c, 0x36, 0x5c, 0x52, 0x1b, 0x1e, 0xdc, 0x59, 0x83, 0x82, 0x67, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x86, 0x33, 0xa4, 0x03, 0xc3, 0x19, 0x06, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3d, 0x28, 0x78, 0x36, 0x6b, 0xd6, 0x60, 0x5c, 0xf6, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0xe7, 0xfa, 0x9c, 0x01, 0xf8, 0xaa, 0x73, 0x4b, 0x33, 0xcb, 0x03, 0xa1, 0xbb, 0x7b, 0x03, 0x79, 0x93, 0x23, 0x2b, 0x93, 0x2b, 0x23, 0x03, 0x69, 0x0b, 0x83, 0x9b, 0x57, 0x02, 0xd0, 0xcb, 0x45, 0x0c, 0x84, 0x2e, 0x6c, 0xad, 0x6c, 0x0e, 0x04, 0x4e, 0xae, 0x6c, 0xac, 0x8c, 0xac, 0xcc, 0x6d, 0xac, 0x0c, 0xe4, 0xcd, 0xae, 0x4c, 0x0e, 0xc4, 0x25, 0x0c, 0x24, 0xcd, 0x0c, 0x64, 0xad, 0x2c, 0x6f, 0x0e, 0xe4, 0xcd, 0xae, 0x4c, 0x8e, 0x2d, 0x0c, 0xce, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x77, 0xdc, 0xc0, 0xb0, 0x87, 0x8a, 0x0d, 0x8f, 0x8f, 0x6c, 0x30, 0x2e, 0xfb, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xc0, 0xe3, 0x0e, 0xde, 0xcf, 0x80, 0xba, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xc0, 0x43, 0x32, 0x30, 0xe0, 0xa1, 0x66, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x80, 0x87, 0x68, 0x60, 0xc0, 0xc3, 0x6e, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xe0, 0x21, 0x3c, 0x78, 0x56, 0x05, 0xea, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0c, 0x78, 0x48, 0x07, 0x06, 0x3c, 0x2c, 0x0e, 0x02, 0x47, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xf0, 0x30, 0x19, 0x18, 0xf0, 0x30, 0x3b, 0x08, 0x6c, 0x88, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x01, 0x0f, 0xc3, 0x81, 0x01, 0x0f, 0x2d, 0x1b, 0xfe, 0x5c, 0x1a, 0x5c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x01, 0x0f, 0xd3, 0x83, 0x07, 0x81, 0xa0, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x80, 0x87, 0xed, 0xc0, 0x80, 0x87, 0xfd, 0x41, 0xe0, 0xe8, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x03, 0x1e, 0x0a, 0x06, 0x06, 0x3c, 0x94, 0x1c, 0x04, 0x36, 0x44, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x84, 0xc7, 0x1d, 0xbc, 0x9f, 0x01, 0x75, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x84, 0x87, 0x64, 0x60, 0xc2, 0xc3, 0x68, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x3c, 0x44, 0x03, 0x13, 0x1e, 0xe2, 0x83, 0xc0, 0xd1, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x3c, 0xe4, 0x03, 0x13, 0x1e, 0x36, 0x07, 0x81, 0x0d, 0xd1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x78, 0xdc, 0xc1, 0xfb, 0x19, 0x50, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x1e, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x78, 0x08, 0x07, 0x46, 0x3c, 0xa4, 0x87, 0xa7, 0x75, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xc6, 0xe3, 0x0e, 0xde, 0xcf, 0x80, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xc6, 0x43, 0x38, 0x30, 0xe3, 0x21, 0x3d, 0xbc, 0x17, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x43, 0x1e, 0x77, 0xf0, 0x7e, 0x06, 0xd4, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x43, 0x1e, 0x92, 0x81, 0x21, 0x0f, 0xdb, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x43, 0x1e, 0xb2, 0x81, 0x21, 0x0f, 0x93, 0x83, 0xa7, 0x7d, 0x9c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x90, 0x87, 0xcd, 0xc0, 0x90, 0x87, 0xe9, 0x86, 0xb7, 0x75, 0x36, 0x28, 0x5a, 0x4f, 0x0e, 0x8e, 0xfe, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x94, 0xc7, 0x0f, 0x4c, 0x79, 0xa8, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xe5, 0x21, 0x18, 0x98, 0xf2, 0x90, 0x6e, 0xf8, 0xdc, 0x65, 0x70, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x3c, 0x44, 0x07, 0x8f, 0x7a, 0x42, 0x3d, 0x38, 0xdf, 0xdb, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x53, 0x1e, 0xe2, 0x81, 0x29, 0x0f, 0xfb, 0x0d, 0x9f, 0xbb, 0x0c, 0xce, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x94, 0x87, 0xc1, 0xc1, 0xc3, 0xa9, 0x50, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x3c, 0xb8, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x53, 0x1e, 0x46, 0x03, 0x53, 0x1e, 0x76, 0x07, 0xa5, 0xb6, 0xe7, 0x1a, 0x3e, 0x0f, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x29, 0x0f, 0xdb, 0x81, 0x29, 0x0f, 0xf3, 0x83, 0xa3, 0xdf, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x94, 0x87, 0x82, 0x81, 0x29, 0x0f, 0x8d, 0x1b, 0x3e, 0x77, 0x19, 0x5c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x29, 0x0f, 0x15, 0x07, 0x0f, 0x08, 0x43, 0xdd, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xf0, 0xe0, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x79, 0xa8, 0x19, 0x98, 0xf2, 0xd0, 0x74, 0x50, 0xca, 0x66, 0xae, 0xe1, 0xf3, 0xa0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xf2, 0xd0, 0x36, 0x30, 0xe5, 0xa1, 0xf0, 0xe0, 0x34, 0x7b, 0x53, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xe6, 0x71, 0x07, 0xef, 0x67, 0x40, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xe6, 0x21, 0x19, 0x18, 0xf3, 0x30, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xe6, 0x21, 0x1a, 0x18, 0xf3, 0x90, 0x1e, 0x94, 0xa2, 0x9a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x98, 0x87, 0x78, 0x60, 0xcc, 0xc3, 0xea, 0xe0, 0x69, 0x1f, 0xa7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x98, 0x87, 0xd9, 0xc0, 0x98, 0x87, 0xf5, 0xc1, 0x3b, 0x93, 0x50, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe6, 0x3c, 0x7e, 0x60, 0xd2, 0x43, 0xc9, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x39, 0x0f, 0xd9, 0xc0, 0x9c, 0x87, 0x92, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x73, 0x1e, 0xc2, 0x81, 0x39, 0x0f, 0x9b, 0x83, 0xf7, 0x63, 0x9e, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x73, 0x1e, 0x46, 0x03, 0x73, 0x1e, 0xb6, 0x07, 0xef, 0x4c, 0x42, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe6, 0x3c, 0x8c, 0x07, 0xe6, 0x3c, 0x74, 0x1c, 0x3c, 0xed, 0xe3, 0xb4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xd0, 0x43, 0x32, 0x30, 0xe8, 0xa1, 0x66, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xd2, 0x4f, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x06, 0x3d, 0xe4, 0x03, 0x83, 0x1e, 0xe6, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1e, 0xdc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x41, 0x0f, 0x9b, 0x81, 0x41, 0x0f, 0xb3, 0x83, 0x52, 0xdb, 0x73, 0x0d, 0x0e, 0xba, 0x37, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xe8, 0x61, 0x3c, 0x30, 0xe8, 0x61, 0x7d, 0x50, 0x50, 0x64, 0xb6, 0x86, 0xcf, 0x83, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xd0, 0x43, 0xc5, 0xc0, 0xa0, 0x87, 0x96, 0x83, 0xd3, 0xec, 0x4d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xe9, 0xf1, 0x07, 0xcf, 0xd4, 0x43, 0xdd, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0x48, 0xca, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x49, 0x0f, 0xe9, 0xc0, 0xa4, 0x87, 0xf1, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0x07, 0x77, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xd2, 0xc3, 0x62, 0x60, 0xd2, 0xc3, 0xe8, 0xa0, 0x94, 0xcd, 0x5c, 0x83, 0x53, 0xe1, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x7a, 0x98, 0x0e, 0x4c, 0x7a, 0xd8, 0x1e, 0x14, 0x14, 0x99, 0xad, 0xe1, 0xf3, 0xa0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xf4, 0x50, 0x30, 0x30, 0xe9, 0xa1, 0xe3, 0xe0, 0xe8, 0x77, 0xd3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x7a, 0xdc, 0xc1, 0xfb, 0x19, 0x50, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x7a, 0x48, 0x06, 0x46, 0x3d, 0x54, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xf5, 0x10, 0x0d, 0x8c, 0x7a, 0x58, 0x1c, 0xbc, 0x1f, 0xf3, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xf5, 0x30, 0x19, 0x18, 0xf5, 0xb0, 0x3c, 0x78, 0xda, 0xc7, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xea, 0x61, 0x3a, 0x30, 0xea, 0xa1, 0xe1, 0xe0, 0x9d, 0x49, 0xa8, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb3, 0x1e, 0x3f, 0x30, 0xeb, 0xa1, 0x64, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x53, 0xe1, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x7a, 0x48, 0x07, 0x66, 0x3d, 0x8c, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x7c, 0x1e, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb3, 0x1e, 0x16, 0x03, 0xb3, 0x1e, 0x46, 0x07, 0x47, 0xbf, 0x9b, 0x35, 0x28, 0x92, 0x32, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xd6, 0xc3, 0x74, 0x60, 0xd6, 0xc3, 0xf6, 0xa0, 0xa0, 0xc8, 0x6c, 0x0d, 0x0f, 0xee, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xac, 0x87, 0x82, 0x81, 0x59, 0x0f, 0x1d, 0x07, 0xa5, 0x6c, 0x66, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xec, 0x71, 0x07, 0xef, 0x67, 0x40, 0xdd, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xe0, 0xa0, 0x7b, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc3, 0x1e, 0xb2, 0x81, 0x61, 0x0f, 0xd3, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x9f, 0x07, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb0, 0x87, 0x7c, 0x60, 0xd8, 0xc3, 0xe4, 0xe0, 0x34, 0x7b, 0xb3, 0x06, 0xa5, 0x9f, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0c, 0x7b, 0x18, 0x0e, 0x0c, 0x7b, 0x58, 0x1e, 0x14, 0x14, 0x99, 0xad, 0xe1, 0xc1, 0x9d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xf6, 0x30, 0x1f, 0x18, 0xf6, 0xd0, 0x70, 0x50, 0x6a, 0x7b, 0x76, 0x38, 0xc5, 0x5a, 0x83, 0x42, 0x43, 0x60, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x38, 0x88, 0xf7, 0x0c, 0x80, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x41, 0x4e, 0x44, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6f, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0xb8, 0x1e, 0x37, 0x10, 0x80, 0x50, 0xb1, 0xe1, 0xf1, 0x91, 0x0d, 0x0a, 0x0d, 0x81, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x7c, 0x8f, 0x3b, 0x78, 0x45, 0x37, 0xea, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x83, 0x37, 0x0b, 0x90, 0x0c, 0xbe, 0x87, 0x96, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x06, 0xcf, 0x2a, 0x20, 0x19, 0x7c, 0x0f, 0xbb, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x7b, 0x08, 0x0f, 0x1e, 0x57, 0x8e, 0xba, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0xef, 0x21, 0x1d, 0x7c, 0x0f, 0x8b, 0x83, 0xc0, 0xd1, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xdf, 0xc3, 0x64, 0xf0, 0x3d, 0xcc, 0x0e, 0x02, 0x1b, 0xa2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xf0, 0x3d, 0x0c, 0x07, 0xdf, 0x43, 0xc9, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xf0, 0x3d, 0x4c, 0x0f, 0x9e, 0xfe, 0x8e, 0xba, 0x41, 0x38, 0x8d, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x82, 0xef, 0x61, 0x3d, 0xf8, 0x1e, 0x1a, 0x0e, 0x02, 0x1b, 0x62, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xdf, 0x43, 0xc5, 0xe0, 0x7b, 0xe8, 0x38, 0x7c, 0xb0, 0xda, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xce, 0xc7, 0x1d, 0xbc, 0xa2, 0x1b, 0x75, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xe0, 0x7c, 0x48, 0x06, 0xe7, 0x43, 0x74, 0xf8, 0x60, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xef, 0xe3, 0x0e, 0x5e, 0xd1, 0x8d, 0xba, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xdc, 0x8f, 0x3b, 0x78, 0x45, 0x37, 0xea, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0xc1, 0xff, 0xf8, 0xc1, 0xff, 0x10, 0x1c, 0x14, 0x39, 0xad, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0x80, 0xb8, 0x83, 0x57, 0x74, 0xa3, 0x6e, 0x78, 0x84, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x40, 0x08, 0x06, 0x02, 0x10, 0xf2, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x01, 0x08, 0xc9, 0x40, 0x00, 0x42, 0x74, 0x78, 0x2f, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x40, 0xc8, 0x06, 0x02, 0x10, 0xe2, 0x83, 0x92, 0x19, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x00, 0x61, 0x30, 0x10, 0x80, 0x30, 0xdc, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xf0, 0xe0, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x04, 0x20, 0x8c, 0x06, 0x02, 0x10, 0x76, 0x07, 0xa5, 0xb6, 0x67, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x00, 0xc2, 0x72, 0x20, 0x00, 0xa1, 0x61, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0x83, 0x3b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0x80, 0xb0, 0x1e, 0x08, 0x40, 0x28, 0x38, 0x28, 0x65, 0x33, 0x6b, 0x05, 0x3c, 0x38, 0xb9, 0x7c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf0, 0xe0, 0xe4, 0xf2, 0x06, 0xc0, 0x0f, 0x38, 0xb9, 0x37, 0xb2, 0xba, 0xb1, 0x32, 0x10, 0xb4, 0xb2, 0x30, 0x32, 0x10, 0x14, 0xb6, 0x32, 0x33, 0xba, 0xb6, 0xb7, 0x39, 0x3a, 0x90, 0x34, 0xba, 0xb2, 0xb6, 0x14, 0x90, 0x37, 0x39, 0x10, 0xb7, 0x3a, 0x36, 0xb6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xbd, 0xb8, 0x81, 0x09, 0x0c, 0xe9, 0x86, 0xc7, 0x47, 0x06, 0x3c, 0x38, 0xb9, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x86, 0x2f, 0xee, 0xe0, 0x41, 0x25, 0xa9, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x86, 0x2f, 0x24, 0x03, 0xc3, 0x17, 0x66, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe1, 0x0b, 0xd9, 0xc1, 0x0b, 0x56, 0x52, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xf8, 0x42, 0x38, 0x30, 0x7c, 0x61, 0x70, 0x10, 0x38, 0x7a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf0, 0x85, 0xc5, 0xc0, 0xf0, 0x85, 0xd5, 0x41, 0x60, 0x43, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x17, 0x77, 0xf0, 0xa0, 0x92, 0xd4, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x17, 0x92, 0x81, 0xe9, 0x0b, 0xa3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xbe, 0x10, 0x0d, 0x4c, 0x5f, 0x88, 0x0f, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xfa, 0x42, 0x3e, 0x30, 0x7d, 0x61, 0x73, 0x10, 0xd8, 0x10, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf8, 0xc5, 0x1d, 0x3c, 0xa8, 0x24, 0x75, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf8, 0x85, 0x78, 0x60, 0xfc, 0x42, 0x7e, 0x50, 0x50, 0x64, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xfc, 0xc5, 0x1d, 0x3c, 0xa8, 0x24, 0x75, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x80, 0x71, 0x07, 0x0f, 0x2a, 0x49, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0xf4, 0xd3, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x06, 0x30, 0xc4, 0x03, 0x03, 0x18, 0x26, 0x1b, 0x1c, 0xc3, 0x0d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x00, 0x43, 0x7e, 0xf0, 0x02, 0xa6, 0xd4, 0x83, 0x92, 0x19, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x30, 0xee, 0xe0, 0x41, 0x25, 0xa9, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1e, 0xdc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x09, 0x0c, 0xc9, 0xc0, 0x04, 0x86, 0xf0, 0xa0, 0xd4, 0xf6, 0x6c, 0x35, 0x28, 0x3c, 0x46, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x83, 0x42, 0x69, 0x74, 0x00, 0x9e, 0xe5, 0xca, 0xda, 0xde, 0xec, 0xca, 0x40, 0xe4, 0xde, 0xde, 0xe8, 0x76, 0x40, 0xcc, 0xde, 0xe4, 0x40, 0xd2, 0xdc, 0xe8, 0xca, 0xe4, 0xdc, 0xc2, 0xd8, 0x40, 0xea, 0xe6, 0xca, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xb8, 0xe2, 0x06, 0xe6, 0x2c, 0x0c, 0x37, 0x3c, 0x3e, 0xb2, 0x41, 0xe1, 0x31, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x15, 0x77, 0xf0, 0x94, 0xae, 0xd4, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x15, 0x92, 0x81, 0xe9, 0x0a, 0xb3, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x74, 0x85, 0xec, 0xe0, 0xe1, 0x62, 0xa9, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x5d, 0x21, 0x1c, 0x98, 0xae, 0x30, 0x38, 0x08, 0x1c, 0xbd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xba, 0xc2, 0x62, 0x60, 0xba, 0xc2, 0xea, 0x20, 0xb0, 0x21, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf1, 0x8a, 0x3b, 0x78, 0x4a, 0x57, 0xea, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf1, 0x0a, 0xc9, 0xc0, 0x78, 0x85, 0xd1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x57, 0x88, 0x06, 0xc6, 0x2b, 0xc4, 0x07, 0x81, 0xa3, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x57, 0xc8, 0x07, 0xc6, 0x2b, 0x6c, 0x0e, 0x02, 0x1b, 0xa2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xaf, 0xb8, 0x83, 0xa7, 0x74, 0xa5, 0x6e, 0x50, 0xf0, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf3, 0x15, 0x92, 0x81, 0xf9, 0x0a, 0x83, 0x0d, 0x8a, 0x49, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xbe, 0x42, 0x38, 0x30, 0x5f, 0x21, 0x3d, 0x28, 0x52, 0x31, 0x0f, 0x0f, 0xee, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x88, 0xc5, 0x1d, 0x3c, 0xa5, 0x2b, 0x75, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x62, 0x21, 0x39, 0x78, 0x4a, 0x57, 0xea, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x11, 0x0b, 0xe9, 0xc0, 0x88, 0x85, 0xe1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x58, 0x88, 0x07, 0x46, 0x2c, 0x4c, 0x0e, 0x02, 0x47, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xb1, 0xb0, 0x19, 0x18, 0xb1, 0xb0, 0x3b, 0x08, 0x6c, 0x88, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xc6, 0xe2, 0x0e, 0x9e, 0xd2, 0x95, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xe9, 0xa7, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x58, 0x88, 0x07, 0x66, 0x2c, 0x2c, 0x0e, 0x4a, 0xd9, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xb2, 0xb8, 0x83, 0xa7, 0x74, 0xa5, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0x50, 0x24, 0x65, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x43, 0x16, 0xe2, 0x81, 0x21, 0x0b, 0x8b, 0x83, 0x52, 0xdb, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x2c, 0xee, 0xe0, 0x29, 0x5d, 0xa9, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x2c, 0x24, 0x03, 0x53, 0x16, 0x2a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x59, 0x88, 0x06, 0xa6, 0x2c, 0xa4, 0x07, 0xa5, 0xa8, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x65, 0x21, 0x1e, 0x98, 0xb2, 0xb0, 0xdb, 0xf0, 0xb6, 0xce, 0x06, 0x45, 0xeb, 0xc9, 0x41, 0xf1, 0xad, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x59, 0x18, 0x0e, 0x4c, 0x59, 0x68, 0xd8, 0xf0, 0xb6, 0xce, 0x06, 0x45, 0xeb, 0xc9, 0x41, 0x71, 0xc4, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x66, 0xf1, 0x03, 0x63, 0x16, 0xa6, 0x1b, 0x2e, 0xa9, 0x0d, 0x4a, 0x3f, 0xcd, 0x35, 0x28, 0x78, 0x36, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xcc, 0x42, 0x3a, 0x30, 0x66, 0x61, 0xb9, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0xe9, 0xa7, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x63, 0x16, 0x36, 0x03, 0x63, 0x16, 0x86, 0x07, 0x05, 0xe5, 0x66, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x9c, 0xc5, 0x1d, 0x3c, 0xa5, 0x2b, 0x75, 0xc3, 0x25, 0xb5, 0x41, 0x91, 0x94, 0xb9, 0x06, 0x83, 0x54, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe6, 0x2c, 0x64, 0x03, 0x73, 0x16, 0x76, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x14, 0x49, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x67, 0x61, 0x31, 0x30, 0x67, 0x61, 0x76, 0x50, 0x08, 0x74, 0xd6, 0x6a, 0xb0, 0xa4, 0x00, 0x7e, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x60, 0x49, 0x01, 0x7c, 0x03, 0xe0, 0x33, 0x5d, 0x98, 0x58, 0x1d, 0x5b, 0x18, 0x5d, 0x19, 0x48, 0x18, 0xc8, 0x5c, 0x9d, 0xd8, 0x5c, 0x19, 0x1d, 0x48, 0x19, 0xde, 0x18, 0x5b, 0x1d, 0x59, 0x9a, 0xdb, 0x19, 0xc8, 0x1c, 0x5d, 0x98, 0x1c, 0x1d, 0x48, 0x19, 0x5b, 0x59, 0x5b, 0x99, 0x1b, 0x1d, 0xc8, 0x5d, 0x1a, 0x1d, 0x1a, 0x48, 0x18, 0x48, 0x5b, 0x18, 0x1e, 0xc8, 0xd8, 0x5b, 0x9d, 0x1b, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x6c, 0xdc, 0xc0, 0x3c, 0xc7, 0x6f, 0x78, 0x7c, 0x64, 0x83, 0x25, 0x05, 0xf0, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xb3, 0x71, 0x07, 0xef, 0x31, 0x4e, 0xdd, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xb3, 0x21, 0x19, 0x98, 0xd9, 0xd0, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x66, 0x43, 0x34, 0x30, 0xb3, 0x61, 0xb7, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xd9, 0x10, 0x1e, 0xbc, 0xd2, 0x39, 0x75, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x66, 0x36, 0xa4, 0x03, 0x33, 0x1b, 0x16, 0x07, 0x81, 0xa3, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x6c, 0x98, 0x0c, 0xcc, 0x6c, 0x98, 0x1d, 0x04, 0x36, 0x44, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xcc, 0x86, 0xe1, 0xc0, 0xcc, 0x86, 0x92, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xcc, 0x86, 0xe9, 0xc1, 0xfb, 0xb2, 0x53, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x66, 0xc3, 0x76, 0x60, 0x66, 0xc3, 0xfe, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x66, 0x36, 0x14, 0x0c, 0xcc, 0x6c, 0xe8, 0x38, 0x38, 0xf1, 0x7b, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x6c, 0x68, 0x19, 0x98, 0xd9, 0x50, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xc7, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xd9, 0xd0, 0x73, 0xf0, 0x48, 0xf2, 0xd4, 0xc3, 0x0f, 0x35, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd0, 0xc6, 0x1d, 0xbc, 0xc7, 0x38, 0x75, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd0, 0x86, 0x64, 0x60, 0x68, 0xc3, 0x68, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x86, 0x36, 0x44, 0x03, 0x43, 0x1b, 0xe2, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x86, 0x36, 0xe4, 0x03, 0x43, 0x1b, 0x36, 0x07, 0x81, 0x0d, 0xd1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x6d, 0xdc, 0xc1, 0x7b, 0x8c, 0x53, 0x37, 0x38, 0x60, 0xd1, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x63, 0x1b, 0x37, 0x30, 0xb6, 0xa1, 0x6b, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd8, 0xc6, 0x0e, 0x8c, 0x6d, 0x88, 0x0e, 0x0a, 0x8b, 0xe5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x6c, 0x43, 0x36, 0x30, 0xb6, 0xa1, 0x6a, 0xc3, 0x83, 0x92, 0x1b, 0x94, 0x13, 0xd0, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xb6, 0x21, 0x3d, 0x78, 0x25, 0x7f, 0xea, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb1, 0x0d, 0xf1, 0xc0, 0xd8, 0x86, 0xd9, 0x86, 0xb7, 0x75, 0x06, 0xf8, 0xe9, 0xc2, 0xc4, 0xea, 0xd8, 0xc2, 0xe8, 0xca, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb1, 0x0d, 0xbb, 0x81, 0xb1, 0x0d, 0x2d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc6, 0x36, 0x0c, 0x07, 0xc6, 0x36, 0x14, 0x6c, 0x78, 0x5b, 0x67, 0x80, 0x9f, 0xac, 0x8c, 0xad, 0x65, 0x0e, 0x2e, 0xcc, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xdb, 0xd0, 0x30, 0x30, 0xb6, 0xa1, 0xe2, 0xf0, 0xb4, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xb6, 0xa1, 0x63, 0x60, 0x6c, 0x43, 0xc9, 0xe1, 0xbd, 0xa0, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb1, 0x0d, 0x35, 0x03, 0x63, 0x1b, 0x7a, 0x0e, 0xef, 0x05, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x63, 0x1b, 0x8a, 0x06, 0xc6, 0x36, 0x34, 0x1d, 0x9e, 0xde, 0xa9, 0x65, 0xd6, 0xe0, 0xe1, 0x09, 0xaa, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xc6, 0xf1, 0x03, 0xe3, 0x1c, 0x46, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc6, 0x38, 0x64, 0x03, 0x63, 0x1c, 0x7a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x71, 0x08, 0x07, 0xc6, 0x38, 0x2c, 0x37, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x63, 0x1c, 0xe2, 0x83, 0xa7, 0x75, 0xa8, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x18, 0x87, 0x7c, 0x60, 0x8c, 0xc3, 0xe6, 0x20, 0x70, 0xf4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x31, 0x0e, 0xa3, 0x81, 0x31, 0x0e, 0xc3, 0x83, 0xc0, 0x86, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xe3, 0x30, 0x1d, 0x18, 0xe3, 0x50, 0xb3, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xe3, 0x30, 0x3e, 0x78, 0x14, 0x8a, 0xea, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x71, 0x58, 0x0f, 0x8c, 0x71, 0x68, 0x38, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x31, 0x0e, 0x15, 0x03, 0x63, 0x1c, 0x5a, 0x0e, 0x4e, 0xfc, 0x1e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x73, 0x1c, 0x7f, 0xf0, 0x12, 0x0c, 0xd5, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x73, 0x1c, 0xb2, 0x81, 0x39, 0x0e, 0xb3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xe3, 0x10, 0x0e, 0xcc, 0x71, 0x18, 0x1c, 0x04, 0x8e, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xc7, 0x61, 0x31, 0x30, 0xc7, 0x61, 0x75, 0x10, 0xd8, 0x10, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x20, 0xc7, 0x1f, 0xbc, 0x04, 0x43, 0x75, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x20, 0x87, 0x78, 0x60, 0x90, 0x43, 0x7e, 0x78, 0x5a, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x39, 0xfe, 0xe0, 0x25, 0x18, 0xaa, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x3e, 0x0f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x39, 0xc4, 0x03, 0x93, 0x1c, 0xf2, 0xc3, 0xd3, 0x3a, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xca, 0xf1, 0x07, 0x2f, 0xc1, 0x50, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xca, 0x21, 0x1b, 0x18, 0xe5, 0xb0, 0xdc, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xca, 0x21, 0x1d, 0x18, 0xe5, 0x30, 0x3a, 0x78, 0xda, 0xc7, 0xe9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x72, 0x58, 0x0d, 0x8c, 0x72, 0x18, 0x1e, 0x9c, 0x4a, 0x0a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x59, 0x0e, 0xc9, 0xc0, 0x2c, 0x87, 0xf0, 0xa0, 0x94, 0xcd, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x61, 0x8e, 0x3f, 0x78, 0x09, 0x86, 0xea, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x61, 0x0e, 0xd9, 0xc0, 0x30, 0x87, 0x82, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc3, 0x1c, 0xc2, 0x81, 0x61, 0x0e, 0x9b, 0x83, 0xf7, 0x63, 0x9e, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc3, 0x1c, 0x46, 0x03, 0xc3, 0x1c, 0xb6, 0x07, 0x4f, 0xfb, 0x38, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x86, 0x39, 0x8c, 0x07, 0x86, 0x39, 0xec, 0x0f, 0x4e, 0x25, 0x05, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x1c, 0x92, 0x81, 0x69, 0x0e, 0x8b, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x0f, 0xee, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x34, 0x87, 0x74, 0x60, 0x9a, 0xc3, 0xe0, 0xa0, 0x94, 0xcd, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc6, 0x39, 0xfe, 0xe0, 0x25, 0x18, 0xaa, 0x1b, 0x2e, 0xa9, 0x0d, 0x0f, 0xee, 0xac, 0xc1, 0x20, 0x95, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x71, 0x0e, 0xd9, 0xc0, 0x38, 0x87, 0xcd, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0x07, 0x77, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x9c, 0x43, 0x3e, 0x30, 0xce, 0x61, 0x72, 0x50, 0x6a, 0x7b, 0xd6, 0x6a, 0xf0, 0xa8, 0x01, 0xd5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xdc, 0xf8, 0x81, 0x19, 0x0e, 0xf3, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x93, 0x1b, 0xb2, 0x81, 0xc9, 0x0d, 0x5d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x37, 0x84, 0x03, 0x93, 0x1b, 0x96, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc9, 0x0d, 0xf1, 0xc1, 0x0b, 0xf3, 0x54, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x72, 0x43, 0x3e, 0x30, 0xb9, 0x61, 0x73, 0x10, 0x38, 0x7a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe4, 0x86, 0xd1, 0xc0, 0xe4, 0x86, 0xe1, 0x41, 0x60, 0x43, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x6e, 0x98, 0x0e, 0x4c, 0x6e, 0xa8, 0xd9, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x6e, 0x18, 0x1f, 0xbc, 0x8d, 0x50, 0x75, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x37, 0xac, 0x07, 0x26, 0x37, 0x34, 0x1c, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe4, 0x86, 0x8a, 0x81, 0xc9, 0x0d, 0x2d, 0x07, 0x27, 0x7e, 0x8f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc9, 0x0d, 0x3d, 0x03, 0x93, 0x1b, 0xaa, 0x36, 0xfc, 0xb9, 0x34, 0xf8, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x93, 0x1b, 0x9a, 0x0e, 0x5e, 0xf8, 0xa8, 0x7a, 0xf8, 0xa1, 0xa6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xdd, 0xf8, 0x83, 0x07, 0xd1, 0xa9, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xdd, 0x90, 0x0d, 0x8c, 0x6e, 0x98, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xdd, 0x10, 0x0e, 0x8c, 0x6e, 0xc8, 0x37, 0xfc, 0xb9, 0x34, 0x38, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa3, 0x1b, 0xe2, 0x83, 0x37, 0x69, 0xaa, 0x1e, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x46, 0x37, 0x0c, 0x06, 0x46, 0x37, 0xac, 0x37, 0xfc, 0xb9, 0x34, 0x78, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa3, 0x1b, 0x26, 0x07, 0x4f, 0xfe, 0x54, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd1, 0x0d, 0x9b, 0x81, 0xd1, 0x0d, 0xbb, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x46, 0x37, 0x0c, 0x07, 0x46, 0x37, 0x8c, 0x0f, 0x02, 0x1b, 0xa2, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x76, 0xe3, 0x0f, 0x1e, 0x44, 0xa7, 0xba, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x76, 0x43, 0x36, 0x30, 0xbb, 0x61, 0xbd, 0xe1, 0x11, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x76, 0x43, 0x3c, 0x30, 0xbb, 0x61, 0xb5, 0x41, 0x31, 0x89, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x6e, 0x58, 0x0c, 0xcc, 0x6e, 0x98, 0x1c, 0x84, 0xe0, 0xc3, 0xe1, 0xf3, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x76, 0xc3, 0x6c, 0x60, 0x76, 0xc3, 0x78, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xec, 0x86, 0xe1, 0xc0, 0xec, 0x86, 0xe5, 0xe1, 0xe9, 0x9d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xdd, 0x30, 0x1d, 0x98, 0xdd, 0xb0, 0x3d, 0x3c, 0x78, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xbc, 0x21, 0x19, 0x18, 0xde, 0x10, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xde, 0x10, 0x0d, 0x0c, 0x6f, 0xc8, 0x0e, 0x0f, 0xde, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc3, 0x1b, 0xc2, 0x81, 0xe1, 0x0d, 0xe9, 0x41, 0x41, 0x91, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x6f, 0xfc, 0xc1, 0x83, 0xe8, 0x54, 0x37, 0x28, 0xed, 0x2d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe9, 0x0d, 0xd9, 0xc0, 0xf4, 0x86, 0x82, 0x0d, 0x7f, 0x2e, 0x0d, 0x6e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf4, 0x86, 0xf4, 0xe0, 0x1d, 0xc8, 0xaa, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x37, 0xc4, 0x03, 0xd3, 0x1b, 0x16, 0x1b, 0xfe, 0x5c, 0x1a, 0x9c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe9, 0x0d, 0x83, 0x83, 0x97, 0x36, 0xab, 0x1e, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x37, 0x4c, 0x06, 0xa6, 0x37, 0xec, 0x37, 0xfc, 0xb9, 0x34, 0x78, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x1b, 0x46, 0x07, 0x4f, 0x99, 0x56, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe9, 0x0d, 0xab, 0x81, 0xe9, 0x0d, 0xcb, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x37, 0x4c, 0x07, 0xa6, 0x37, 0xcc, 0x0f, 0x02, 0x1b, 0xa2, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x7c, 0xe3, 0x0f, 0x1e, 0x44, 0xa7, 0xba, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xdf, 0x90, 0x1d, 0x3c, 0x88, 0x4e, 0x75, 0xc3, 0xd7, 0x2f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf8, 0x86, 0x7c, 0x60, 0x7c, 0xc3, 0xe0, 0xa0, 0x18, 0xa9, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf9, 0x8d, 0x3f, 0x78, 0x10, 0x9d, 0xea, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf9, 0x0d, 0xd9, 0xc0, 0xfc, 0x86, 0xfd, 0x86, 0x5f, 0xc9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf9, 0x0d, 0xf1, 0xc0, 0xfc, 0x86, 0xd5, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xbf, 0x61, 0x31, 0x30, 0xbf, 0x61, 0x72, 0x10, 0x82, 0x0f, 0x87, 0x07, 0x77, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf9, 0x0d, 0xb3, 0x81, 0xf9, 0x0d, 0xf3, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf3, 0x1b, 0x86, 0x03, 0xf3, 0x1b, 0xb6, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3c, 0x08, 0xf0, 0xa0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xdf, 0x30, 0x1e, 0x98, 0xdf, 0xb0, 0x3e, 0x3c, 0xbd, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xbf, 0xa1, 0x61, 0x60, 0x7e, 0x43, 0xc5, 0x41, 0x31, 0x52, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x03, 0x1c, 0x7f, 0xf0, 0x20, 0x3a, 0xd5, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x02, 0x3c, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xe0, 0x10, 0x0f, 0x0c, 0x70, 0x98, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x78, 0x70, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x06, 0x38, 0x4c, 0x06, 0x06, 0x38, 0xac, 0x0e, 0x4a, 0x6d, 0xcf, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x82, 0xe3, 0x0f, 0x1e, 0x44, 0xa7, 0xba, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x82, 0x43, 0x36, 0x30, 0xc1, 0x61, 0xb3, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x82, 0x43, 0x3a, 0x30, 0xc1, 0x61, 0x70, 0xf0, 0x12, 0x7a, 0xd5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xe0, 0xb0, 0x18, 0x98, 0xe0, 0x30, 0x39, 0x3c, 0xbd, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x70, 0x58, 0x0d, 0x4c, 0x70, 0x98, 0x1d, 0x14, 0x23, 0xb5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xc2, 0xf1, 0x07, 0x0f, 0xa2, 0x53, 0xdd, 0xa0, 0xe8, 0xd3, 0xdd, 0x20, 0xc0, 0x83, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x11, 0x0e, 0xf1, 0xc0, 0x08, 0x87, 0x82, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x23, 0x1c, 0xf2, 0x81, 0x11, 0x0e, 0xab, 0x0d, 0x1f, 0x47, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x08, 0x87, 0xc5, 0xc0, 0x08, 0x87, 0xd1, 0xc1, 0x4b, 0xe8, 0x55, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x11, 0x0e, 0xb3, 0x81, 0x11, 0x0e, 0xfb, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x23, 0x1c, 0x76, 0x03, 0x23, 0x1c, 0xa6, 0x07, 0x25, 0x33, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xc2, 0x61, 0x3b, 0x30, 0xc2, 0x61, 0xbe, 0xe1, 0x6d, 0x9d, 0xc1, 0xcb, 0x83, 0x00, 0x0f, 0xaa, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xe1, 0xf8, 0x83, 0x07, 0xd1, 0xa9, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xe1, 0x10, 0x0d, 0xcc, 0x70, 0x98, 0x6c, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xe1, 0x10, 0x0e, 0xcc, 0x70, 0xc8, 0x0f, 0x5e, 0x42, 0xaf, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x33, 0x1c, 0x06, 0x03, 0x33, 0x1c, 0x16, 0x87, 0xa7, 0x77, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x19, 0x0e, 0x9b, 0x81, 0x19, 0x0e, 0xa3, 0x83, 0x62, 0xa4, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x66, 0x38, 0xac, 0x06, 0x66, 0x38, 0xac, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x3c, 0xb8, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x33, 0x1c, 0x96, 0x03, 0x33, 0x1c, 0xc6, 0x07, 0xa5, 0x6c, 0x66, 0x87, 0x53, 0xac, 0xc3, 0x29, 0xb6, 0x1a, 0x94, 0xa2, 0x03, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0xf9, 0xf2, 0x39, 0x00, 0xdf, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xd3, 0x71, 0x03, 0x93, 0x1d, 0xf6, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0x14, 0x1d, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa1, 0x8e, 0x3b, 0x78, 0x19, 0xd0, 0xea, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa1, 0x0e, 0xc9, 0xc0, 0x50, 0x87, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xa8, 0x43, 0x76, 0xf0, 0x0e, 0xa3, 0xd5, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xea, 0x10, 0x0e, 0x0c, 0x75, 0x18, 0x1c, 0x04, 0x8e, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xd4, 0x61, 0x31, 0x30, 0xd4, 0x61, 0x75, 0x10, 0xd8, 0x10, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x54, 0xc7, 0x1d, 0xbc, 0x0c, 0x68, 0x75, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x54, 0x87, 0x64, 0x60, 0xaa, 0xc3, 0x68, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x3a, 0x44, 0x03, 0x53, 0x1d, 0xe2, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x3a, 0xe4, 0x03, 0x53, 0x1d, 0x36, 0x07, 0x81, 0x0d, 0xd1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x75, 0xdc, 0xc1, 0xcb, 0x80, 0x56, 0x37, 0x28, 0xed, 0x2d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb1, 0x0e, 0xc9, 0xc0, 0x58, 0x87, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xac, 0x43, 0x76, 0xf0, 0x1e, 0xaf, 0xd5, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xeb, 0x10, 0x0e, 0x8c, 0x75, 0x18, 0x1c, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xd6, 0x61, 0x31, 0x30, 0xd6, 0x61, 0x75, 0x10, 0xd8, 0x10, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5c, 0xc7, 0x1d, 0xbc, 0x0c, 0x68, 0x75, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xd7, 0x21, 0x39, 0x78, 0x19, 0xd0, 0xea, 0x86, 0xaf, 0x5f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb9, 0x0e, 0xe9, 0xc0, 0x5c, 0x87, 0xf8, 0xf0, 0x5e, 0xd0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0c, 0x76, 0xdc, 0xc1, 0xcb, 0x80, 0x56, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x3c, 0xb8, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0c, 0x76, 0x08, 0x07, 0x06, 0x3b, 0xa4, 0x87, 0xf7, 0x82, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xb2, 0xe3, 0x0e, 0x5e, 0x06, 0xb4, 0xba, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xe1, 0xc1, 0x9d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xec, 0x90, 0x0c, 0x4c, 0x76, 0x08, 0x0f, 0x4a, 0x6d, 0xcf, 0x35, 0x7c, 0x1e, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x93, 0x1d, 0x06, 0x03, 0x93, 0x1d, 0xe6, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x3b, 0x2c, 0x06, 0x26, 0x3b, 0x8c, 0x0e, 0x4a, 0x66, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xb2, 0xc3, 0x6a, 0x60, 0xb2, 0xc3, 0x7a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0x83, 0x3b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xd9, 0x61, 0x39, 0x30, 0xd9, 0x61, 0x7c, 0x50, 0xca, 0x66, 0x56, 0x2b, 0xe0, 0x89, 0x85, 0xc1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x81, 0x27, 0x16, 0x06, 0x37, 0x00, 0xdf, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x2c, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xaa, 0xb8, 0x81, 0x80, 0x85, 0xfd, 0x86, 0xc7, 0x47, 0x06, 0x3c, 0xb1, 0x30, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x62, 0x15, 0x77, 0xf0, 0x80, 0xc7, 0xd5, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb1, 0x0a, 0xc9, 0x40, 0xac, 0xc2, 0x6c, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xab, 0x90, 0x1d, 0xbc, 0x97, 0x72, 0x75, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x62, 0x15, 0xc2, 0x81, 0x58, 0x85, 0xc1, 0x41, 0xe0, 0xe8, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb1, 0x0a, 0x8b, 0x81, 0x58, 0x85, 0xd5, 0x41, 0x60, 0x43, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc1, 0x8a, 0x3b, 0x78, 0xc0, 0xe3, 0xea, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x60, 0x85, 0x64, 0x20, 0x58, 0x61, 0xb4, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc1, 0x0a, 0xd1, 0x40, 0xb0, 0x42, 0x7c, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb0, 0x42, 0x3e, 0x10, 0xac, 0xb0, 0x39, 0x08, 0x6c, 0x88, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x5a, 0x71, 0x07, 0x0f, 0x78, 0x5c, 0xdd, 0xa0, 0xb4, 0xb7, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa2, 0x15, 0x92, 0x81, 0x68, 0x85, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x5a, 0x21, 0x3b, 0x78, 0x28, 0xeb, 0xea, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x44, 0x2b, 0x84, 0x03, 0xd1, 0x0a, 0x83, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa2, 0x15, 0x16, 0x03, 0xd1, 0x0a, 0xab, 0x83, 0xc0, 0x86, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc2, 0x15, 0x77, 0xf0, 0x80, 0xc7, 0xd5, 0x0d, 0x5f, 0xe1, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb8, 0x42, 0x72, 0xf0, 0x80, 0xc7, 0xd5, 0x0d, 0x5f, 0xbf, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe1, 0x0a, 0xe9, 0x40, 0xb8, 0x42, 0x7c, 0x78, 0x2f, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe2, 0x15, 0x77, 0xf0, 0x80, 0xc7, 0xd5, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf1, 0x0a, 0xe1, 0x40, 0xbc, 0x42, 0x7a, 0x78, 0x2f, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x02, 0x16, 0x77, 0xf0, 0x80, 0xc7, 0xd5, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x0f, 0xee, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc0, 0x42, 0x32, 0x10, 0xb0, 0x10, 0x1e, 0x94, 0xb2, 0x99, 0x6b, 0xf8, 0x3c, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x02, 0x16, 0x06, 0x03, 0x01, 0x0b, 0xf3, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x01, 0x0b, 0x8b, 0x81, 0x80, 0x85, 0xd1, 0x41, 0xc9, 0x8c, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x04, 0x2c, 0xac, 0x06, 0x02, 0x16, 0xd6, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1e, 0xdc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x80, 0x85, 0xe5, 0x40, 0xc0, 0xc2, 0xf8, 0xa0, 0xd4, 0xf6, 0xac, 0x56, 0x83, 0x55, 0xda, 0xe9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xab, 0xb4, 0xd3, 0x1b, 0x00, 0x4f, 0xe0, 0xe4, 0xde, 0xc8, 0xea, 0xc6, 0xca, 0x40, 0xe8, 0xc2, 0xd2, 0xd8, 0x40, 0x50, 0xe4, 0xd2, 0xce, 0xd0, 0xe8, 0xda, 0xde, 0xe6, 0xe8, 0x40, 0xd2, 0xe8, 0xca, 0xda, 0x52, 0x40, 0xde, 0xe4, 0x40, 0xdc, 0xea, 0xd8, 0xd8, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x40, 0xe3, 0x06, 0xc6, 0x34, 0xa4, 0x1b, 0x1e, 0x1f, 0xd9, 0x60, 0x95, 0x76, 0xfa, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x68, 0xdc, 0xc1, 0xd3, 0xbb, 0x57, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x68, 0x48, 0x06, 0x26, 0x34, 0xcc, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x13, 0x1a, 0xb2, 0x83, 0xa7, 0x8e, 0xaf, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x84, 0x86, 0x70, 0x60, 0x42, 0xc3, 0xe0, 0x20, 0x70, 0xf4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x09, 0x0d, 0x8b, 0x81, 0x09, 0x0d, 0xab, 0x83, 0xc0, 0x86, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x46, 0x34, 0xee, 0xe0, 0xe9, 0xdd, 0xab, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x46, 0x34, 0x24, 0x03, 0x23, 0x1a, 0x46, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xa2, 0x21, 0x1a, 0x18, 0xd1, 0x10, 0x1f, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x88, 0x86, 0x7c, 0x60, 0x44, 0xc3, 0xe6, 0x20, 0xb0, 0x21, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x19, 0x8d, 0x3b, 0x78, 0x7a, 0xf7, 0xea, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x19, 0x0d, 0xf1, 0xc0, 0x8c, 0x86, 0xfc, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x21, 0x8d, 0x3b, 0x78, 0x7a, 0xf7, 0xea, 0x86, 0xaf, 0x70, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x4a, 0xe3, 0x0e, 0x9e, 0xde, 0xbd, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x91, 0x94, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x69, 0x88, 0x07, 0xa6, 0x34, 0x4c, 0x36, 0x38, 0x86, 0x1b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x94, 0x86, 0xfc, 0xe0, 0xa9, 0x04, 0xac, 0x07, 0x25, 0x33, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x69, 0xdc, 0xc1, 0xd3, 0xbb, 0x57, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x3c, 0xb8, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x63, 0x1a, 0x92, 0x81, 0x31, 0x0d, 0xe1, 0x41, 0x29, 0x9b, 0xd9, 0x6a, 0x70, 0x5c, 0xb5, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0x8e, 0xc1, 0x56, 0x03, 0xf0, 0xe0, 0x56, 0x56, 0x46, 0x06, 0x62, 0x17, 0xc6, 0x56, 0x57, 0x06, 0x12, 0x46, 0x07, 0xb2, 0x56, 0x96, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x06, 0xaf, 0x11, 0xc5, 0x18, 0x98, 0x8f, 0xb0, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x1d, 0x21, 0x19, 0x98, 0x8e, 0x30, 0xdf, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x1d, 0x21, 0x1a, 0x98, 0x8e, 0xb0, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x47, 0x08, 0x0f, 0x1e, 0x9b, 0xc1, 0xba, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x11, 0xd2, 0x81, 0xe9, 0x08, 0x8b, 0x83, 0xc0, 0xd1, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x23, 0x4c, 0x06, 0xa6, 0x23, 0xcc, 0x0e, 0x02, 0x1b, 0xa2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x3a, 0xc2, 0x70, 0x60, 0x3a, 0xc2, 0x7a, 0xc3, 0x9f, 0x4b, 0x83, 0x8b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x1d, 0x61, 0x7a, 0xf0, 0x4c, 0x12, 0xd6, 0x83, 0x13, 0xbf, 0x47, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x1e, 0x71, 0x07, 0x8f, 0xa3, 0x60, 0xdd, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x1e, 0x21, 0x19, 0x18, 0x8f, 0x10, 0x1e, 0x3c, 0x40, 0x94, 0x74, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe6, 0x23, 0xee, 0xe0, 0x71, 0x14, 0xac, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe6, 0x23, 0xf6, 0xe0, 0xa5, 0x5f, 0x1f, 0x07, 0x67, 0x43, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x3e, 0x42, 0x36, 0x30, 0x1f, 0x61, 0xb4, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0xe0, 0x51, 0x62, 0x1f, 0x03, 0xf3, 0x11, 0xf2, 0x83, 0x73, 0xa7, 0xc5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x1f, 0x61, 0x70, 0xf0, 0x66, 0xb1, 0x8f, 0xc3, 0xd3, 0x3a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc1, 0x23, 0xca, 0x3e, 0x06, 0xe6, 0x23, 0x6c, 0x0e, 0xef, 0x05, 0xd5, 0xe1, 0x14, 0xab, 0xd6, 0xa0, 0x58, 0x15, 0xd8, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0x0e, 0x7c, 0x3e, 0x03, 0xf8, 0xb5, 0x95, 0x85, 0xcd, 0xd5, 0xc9, 0x95, 0x81, 0xcc, 0xa5, 0xe9, 0x95, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc0, 0xc7, 0x0d, 0xcc, 0x7c, 0xe8, 0xd9, 0xf0, 0xf8, 0xc8, 0x06, 0xc5, 0xaa, 0xc0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x7c, 0xdc, 0xc1, 0x1b, 0x87, 0x58, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x7c, 0x48, 0x06, 0x26, 0x3e, 0xcc, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x13, 0x1f, 0xb2, 0x83, 0x27, 0x25, 0xb1, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc4, 0x87, 0x70, 0x60, 0xe2, 0xc3, 0xe0, 0x20, 0x70, 0xf4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x89, 0x0f, 0x8b, 0x81, 0x89, 0x0f, 0xab, 0x83, 0xc0, 0x86, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x46, 0x3e, 0xee, 0xe0, 0x8d, 0x43, 0xac, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x46, 0x3e, 0x24, 0x03, 0x23, 0x1f, 0xc2, 0x83, 0x32, 0x4b, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x66, 0x3e, 0xee, 0xe0, 0x8d, 0x43, 0xac, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x1e, 0xdc, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x66, 0x3e, 0x44, 0x03, 0x33, 0x1f, 0xb2, 0xc3, 0x83, 0x37, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xf3, 0x21, 0x1c, 0x98, 0xf9, 0x50, 0xb3, 0xe1, 0xe3, 0xa8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xf9, 0x10, 0x0f, 0xcc, 0x7c, 0x68, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xf3, 0x21, 0x1f, 0x98, 0xf9, 0x30, 0x39, 0xfc, 0x09, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x7c, 0xd8, 0x0c, 0xcc, 0x7c, 0xd8, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x78, 0x70, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x66, 0x3e, 0xec, 0x06, 0x66, 0x3e, 0x4c, 0x0f, 0x4a, 0x6d, 0xcf, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x99, 0x0f, 0xe3, 0x81, 0x99, 0x0f, 0x25, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1e, 0xdc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x99, 0x0f, 0x05, 0x03, 0x33, 0x1f, 0x3a, 0x0e, 0x4a, 0xd9, 0xcc, 0x9a, 0x35, 0x58, 0x05, 0x8e, 0xb7, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xb0, 0x0a, 0x1c, 0xaf, 0x01, 0xf0, 0x9e, 0x2e, 0x6c, 0xad, 0x0c, 0x24, 0x0c, 0x64, 0xae, 0x4e, 0x6c, 0xae, 0x8c, 0x0e, 0x44, 0x2e, 0xcc, 0xed, 0xac, 0x0c, 0xa4, 0x0c, 0x6f, 0x8c, 0xad, 0x8e, 0x2c, 0xcd, 0xed, 0x0c, 0x64, 0x8e, 0x2e, 0x4c, 0x8e, 0x0e, 0x24, 0xcc, 0x8d, 0xec, 0xe5, 0x4d, 0x0e, 0xa4, 0xcc, 0x8d, 0x0c, 0x24, 0xcc, 0x8d, 0x0c, 0x24, 0x8c, 0x8d, 0x0d, 0xa4, 0x8c, 0xad, 0xac, 0xad, 0xcc, 0x8d, 0x6e, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x66, 0x25, 0x6e, 0x60, 0xb0, 0xe2, 0x37, 0x3c, 0x3e, 0xb2, 0xc1, 0x2a, 0x70, 0xbc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0x96, 0xb8, 0x83, 0x67, 0xf7, 0xb1, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0x96, 0x90, 0x0c, 0xcc, 0x4b, 0xc8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0c, 0x4b, 0x48, 0x07, 0x86, 0x25, 0x8c, 0x37, 0xfc, 0xb9, 0x34, 0xe0, 0xd1, 0xc9, 0x95, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x2c, 0x61, 0x71, 0xf0, 0x14, 0x43, 0xd6, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0x96, 0x30, 0x19, 0x18, 0x96, 0x30, 0x3b, 0x08, 0x1c, 0xbd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x58, 0xc2, 0x6e, 0x60, 0x58, 0xc2, 0xf6, 0x20, 0xb0, 0x21, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x25, 0xa4, 0x03, 0xd3, 0x12, 0xd6, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x2d, 0xfd, 0x6d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x2d, 0x61, 0x73, 0xf0, 0xb2, 0x48, 0xd6, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x96, 0x30, 0x1a, 0x98, 0x96, 0x30, 0x3c, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x69, 0x09, 0xcb, 0x81, 0x69, 0x09, 0xe3, 0x83, 0x13, 0xbf, 0x47, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb8, 0x84, 0x74, 0x60, 0x5c, 0xc2, 0x76, 0xc3, 0x9f, 0x4b, 0x1b, 0x0c, 0x4c, 0x8f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0x97, 0xb0, 0x38, 0x78, 0x2e, 0x27, 0xeb, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x4b, 0x98, 0x0c, 0x8c, 0x4b, 0x98, 0x1d, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb8, 0x84, 0xdd, 0xc0, 0xb8, 0x84, 0xe9, 0xc1, 0x89, 0xdf, 0xa3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x60, 0xe2, 0x0e, 0x9e, 0xdd, 0xc7, 0xba, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x60, 0x42, 0x32, 0x30, 0x30, 0x61, 0xb4, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x03, 0x13, 0xa2, 0x81, 0x81, 0x09, 0xf1, 0x41, 0xe0, 0xe8, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x03, 0x13, 0xf2, 0x81, 0x81, 0x09, 0x9b, 0x83, 0xc0, 0x86, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x26, 0xee, 0xe0, 0xd9, 0x7d, 0xac, 0x1b, 0x1c, 0xb0, 0xe8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x91, 0x89, 0x1b, 0x18, 0x9d, 0x30, 0xde, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x32, 0x21, 0x19, 0x18, 0x99, 0x50, 0xb1, 0xe1, 0x11, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x64, 0x42, 0x38, 0x30, 0x32, 0x61, 0xb7, 0x41, 0x31, 0x89, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x4c, 0xc8, 0x07, 0x46, 0x26, 0x0c, 0x0e, 0x42, 0xf0, 0x61, 0x83, 0xb7, 0xf4, 0xb7, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x4c, 0x18, 0x0e, 0x8c, 0x4c, 0x68, 0xd8, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x46, 0x26, 0x6c, 0x07, 0x46, 0x26, 0x8c, 0x0f, 0x42, 0xf0, 0xe1, 0xa0, 0x34, 0xc5, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x99, 0xf8, 0x81, 0x99, 0x09, 0xd1, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0x3a, 0xb9, 0xb2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0x9a, 0xb8, 0x83, 0xc7, 0xd4, 0xb2, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0xf0, 0x0c, 0x5f, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x6a, 0xe2, 0x07, 0xa6, 0x26, 0xcc, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x4d, 0x08, 0x06, 0xa6, 0x26, 0x0c, 0x0e, 0xde, 0x96, 0xa0, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x4d, 0x58, 0x0c, 0x4c, 0x4d, 0x18, 0x1d, 0xbc, 0xd7, 0x98, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x9a, 0xb0, 0x1a, 0x98, 0x9a, 0xb0, 0x3c, 0x68, 0x3a, 0x11, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x9a, 0x30, 0x1d, 0x98, 0x9a, 0xb0, 0x3e, 0x28, 0x32, 0x71, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb1, 0x89, 0x3b, 0x78, 0x4c, 0x2d, 0xeb, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xa5, 0x29, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x37, 0xf1, 0x03, 0x73, 0x13, 0x2a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x4d, 0x08, 0x06, 0xe6, 0x26, 0x0c, 0x0e, 0xde, 0x96, 0xa0, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x4d, 0x58, 0x0c, 0xcc, 0x4d, 0x18, 0x1d, 0xbc, 0xd7, 0x98, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x9b, 0xb0, 0x1a, 0x98, 0x9b, 0xb0, 0xdd, 0xf0, 0xc6, 0xdd, 0xc1, 0x9b, 0x2b, 0xeb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb9, 0x09, 0xe3, 0x81, 0xb9, 0x09, 0x0d, 0x1b, 0xde, 0xd6, 0x39, 0x78, 0x86, 0x2f, 0x6b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x38, 0x71, 0x07, 0x8f, 0xa9, 0x65, 0xdd, 0xa0, 0xe0, 0xc3, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x06, 0x27, 0x24, 0x03, 0x83, 0x13, 0x0a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0c, 0x4e, 0x88, 0x06, 0x06, 0x27, 0x2c, 0x0e, 0xde, 0x8f, 0x79, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0c, 0x4e, 0x98, 0x0c, 0x0c, 0x4e, 0x58, 0x6e, 0x78, 0x5b, 0x67, 0xf0, 0xfa, 0xe0, 0x19, 0xbe, 0xac, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe0, 0x84, 0xe9, 0xc0, 0xe0, 0x84, 0xfd, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x4a, 0x53, 0xdc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x72, 0xe2, 0x0e, 0x1e, 0x53, 0xcb, 0xba, 0x41, 0xd1, 0xa7, 0xbb, 0xc1, 0x53, 0x8e, 0x59, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc9, 0x09, 0xf1, 0xc0, 0xe4, 0x84, 0xa6, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x93, 0x13, 0xf2, 0x81, 0xc9, 0x09, 0xbb, 0x83, 0xb7, 0x25, 0xa8, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x93, 0x13, 0x86, 0x03, 0x93, 0x13, 0xb6, 0x07, 0xef, 0x35, 0x66, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x27, 0x8c, 0x07, 0x26, 0x27, 0x54, 0x1c, 0x3c, 0xc2, 0x9c, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x9c, 0xd0, 0x31, 0x30, 0x39, 0xa1, 0xe8, 0xe0, 0x45, 0xe9, 0xac, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe8, 0xc4, 0x1d, 0x3c, 0xa6, 0x96, 0x75, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe8, 0xc4, 0x0e, 0x8c, 0x4e, 0x88, 0x0f, 0xde, 0x96, 0xa0, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x4e, 0xc8, 0x07, 0x46, 0x27, 0x4c, 0x0e, 0xde, 0x6b, 0xcc, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x4e, 0xd8, 0x0c, 0x8c, 0x4e, 0xd8, 0x1d, 0x34, 0x9d, 0x08, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x4e, 0x18, 0x0e, 0x8c, 0x4e, 0xd8, 0x1e, 0x14, 0x99, 0xb8, 0x2d, 0xb3, 0x06, 0x0f, 0x4f, 0x50, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe9, 0x89, 0x1f, 0x98, 0xab, 0x90, 0x6c, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x9e, 0x90, 0x0d, 0x4c, 0x4f, 0x28, 0xde, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x3d, 0x21, 0x1c, 0x98, 0x9e, 0xb0, 0xdc, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x4f, 0x88, 0x0f, 0x1e, 0xf5, 0xd1, 0xba, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x13, 0xf2, 0x81, 0xe9, 0x09, 0x9b, 0x83, 0xc0, 0xd1, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x27, 0x8c, 0x06, 0xa6, 0x27, 0x0c, 0x0f, 0x02, 0x1b, 0xa2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x7a, 0xc2, 0x74, 0x60, 0x7a, 0x42, 0xd5, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x7a, 0xc2, 0xf8, 0xe0, 0x39, 0x2a, 0xad, 0x1b, 0x04, 0x9b, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x3d, 0x61, 0x3e, 0x30, 0x3d, 0xa1, 0xe4, 0xe0, 0x6d, 0x95, 0x75, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf4, 0x84, 0x96, 0x81, 0xe9, 0x09, 0x4d, 0x07, 0x2d, 0x09, 0x74, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x4f, 0xe8, 0x1a, 0x98, 0x9e, 0xd0, 0xbb, 0xe1, 0xcf, 0xa5, 0xc1, 0xc7, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x9e, 0xd0, 0x76, 0xf0, 0xb8, 0x9a, 0xd6, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x9e, 0x50, 0x37, 0x30, 0x3d, 0xa1, 0xf2, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x27, 0x74, 0x0e, 0x4c, 0x4f, 0xa8, 0x3d, 0x38, 0xf1, 0x7b, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x4f, 0xfc, 0xc1, 0x23, 0x34, 0x5a, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x4f, 0xc8, 0x06, 0xc6, 0x27, 0xcc, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x7c, 0x42, 0x38, 0x30, 0x3e, 0x61, 0x70, 0x10, 0x38, 0x7a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf8, 0x84, 0xc5, 0xc0, 0xf8, 0x84, 0xd5, 0x41, 0x60, 0x43, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf3, 0x13, 0x7f, 0xf0, 0x08, 0x8d, 0xd6, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf3, 0x13, 0xe2, 0x81, 0xf9, 0x09, 0xf9, 0xe1, 0x69, 0x9d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xa0, 0xf8, 0x83, 0x47, 0x68, 0xb4, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0xf8, 0x87, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xa0, 0x10, 0x0f, 0x0c, 0x50, 0xc8, 0x0f, 0x4f, 0xeb, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x04, 0xc5, 0x1f, 0x3c, 0x42, 0xa3, 0x75, 0x83, 0x20, 0x3d, 0xdd, 0xf0, 0x79, 0xd0, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x08, 0x85, 0x6c, 0x60, 0x84, 0xc2, 0xe2, 0xe0, 0x6d, 0x95, 0x75, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x44, 0x21, 0x19, 0x98, 0xa5, 0x30, 0xdb, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x44, 0x21, 0x1d, 0x18, 0xa2, 0xb0, 0xdd, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x44, 0x21, 0x1f, 0x18, 0xa2, 0x30, 0x3b, 0x78, 0xda, 0xc7, 0xe9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0c, 0x51, 0xd8, 0x0d, 0x0c, 0x51, 0x98, 0x1e, 0x1c, 0x9d, 0x34, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x29, 0x0a, 0xd9, 0xc0, 0x14, 0x85, 0xdd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x29, 0x0a, 0xe1, 0xc0, 0x14, 0x85, 0xfc, 0xe0, 0x65, 0xbe, 0xa5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x14, 0x85, 0xc1, 0xc0, 0x14, 0x85, 0xd9, 0x86, 0x4b, 0x6a, 0xc3, 0x83, 0x3b, 0x6b, 0x30, 0x48, 0xa5, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x8a, 0xc2, 0x68, 0x60, 0x8a, 0xc2, 0xea, 0xa0, 0xa0, 0xc8, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xa3, 0x90, 0x1c, 0x3c, 0x8a, 0xab, 0x75, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1c, 0x85, 0x74, 0x60, 0x8e, 0x42, 0xc5, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x39, 0x0a, 0xf1, 0xc0, 0x1c, 0x85, 0xd5, 0xc1, 0xfb, 0x31, 0x4f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x39, 0x0a, 0xb3, 0x81, 0x39, 0x0a, 0xeb, 0x83, 0xa7, 0x7d, 0x9c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x73, 0x14, 0xe6, 0x03, 0x73, 0x14, 0x1a, 0x0e, 0x8e, 0x4e, 0x1a, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x93, 0x14, 0xb2, 0x81, 0x49, 0x0a, 0xe3, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x0f, 0xee, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x24, 0x85, 0x7c, 0x60, 0x92, 0xc2, 0x76, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x24, 0x85, 0xc1, 0xc0, 0x24, 0x85, 0xcd, 0xc1, 0xcb, 0x7c, 0x4b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x49, 0x0a, 0xa3, 0x81, 0x49, 0x0a, 0xd3, 0x0d, 0x97, 0xd4, 0x86, 0x07, 0x77, 0xd6, 0x60, 0x90, 0x4a, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x24, 0x85, 0xe1, 0xc0, 0x24, 0x85, 0xe5, 0x41, 0x41, 0x91, 0x59, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x2c, 0x85, 0xe4, 0xe0, 0x51, 0x5c, 0xad, 0x1b, 0x2e, 0xa9, 0x0d, 0x0f, 0xee, 0xac, 0xc1, 0x20, 0x95, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x59, 0x0a, 0xe9, 0xc0, 0x2c, 0x85, 0xd5, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0x07, 0x77, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x96, 0xc2, 0x62, 0x60, 0x96, 0xc2, 0xe8, 0xa0, 0xd4, 0xf6, 0xac, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x69, 0x0a, 0xd9, 0xc0, 0x34, 0x85, 0xfc, 0xa0, 0x25, 0x81, 0xce, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xa7, 0x90, 0x0c, 0x8c, 0x55, 0x98, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xa7, 0x90, 0x0e, 0xcc, 0x53, 0xd8, 0x6e, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xa7, 0x90, 0x0f, 0xcc, 0x53, 0x98, 0x1c, 0x1c, 0x9d, 0x34, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x9e, 0xc2, 0x66, 0x60, 0x9e, 0xc2, 0xf4, 0xe0, 0x69, 0x1f, 0xa7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x40, 0x85, 0x6c, 0x60, 0xa0, 0xc2, 0x6e, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x40, 0x85, 0x70, 0x60, 0xa0, 0x42, 0x7e, 0xf0, 0x32, 0xdf, 0xd2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xa0, 0xc2, 0x60, 0x60, 0xa0, 0xc2, 0x6c, 0xc3, 0x25, 0xb5, 0xe1, 0xc1, 0x9d, 0x35, 0x28, 0x78, 0x36, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xa0, 0xc2, 0x68, 0x60, 0xa0, 0xc2, 0xea, 0xa0, 0xa0, 0xc8, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xa9, 0x90, 0x1c, 0xbc, 0x6d, 0xb3, 0x75, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x48, 0x85, 0x74, 0x60, 0xa4, 0x42, 0xc5, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x91, 0x0a, 0xf1, 0xc0, 0x48, 0x85, 0xd5, 0xc1, 0xfb, 0x31, 0x4f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x91, 0x0a, 0xb3, 0x81, 0x91, 0x0a, 0xeb, 0x83, 0xa7, 0x7d, 0x9c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x23, 0x15, 0xe6, 0x03, 0x23, 0x15, 0x1a, 0x0e, 0x8e, 0x4e, 0x1a, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x43, 0x15, 0xb2, 0x81, 0xa1, 0x0a, 0xc3, 0x0d, 0x97, 0xd4, 0x86, 0x07, 0x77, 0xd6, 0xa0, 0xe0, 0xd9, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa1, 0x0a, 0xf9, 0xc0, 0x50, 0x85, 0xdd, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0x07, 0x77, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0xa8, 0xc2, 0x66, 0x60, 0xa8, 0xc2, 0xec, 0xa0, 0x94, 0xcd, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xab, 0x90, 0x1c, 0xbc, 0x6d, 0xb3, 0x75, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0x83, 0x3b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x56, 0x21, 0x1d, 0x18, 0xab, 0xb0, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x56, 0x21, 0x1e, 0x18, 0xab, 0xb0, 0x38, 0x78, 0x99, 0x6f, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x56, 0x61, 0x32, 0x30, 0x56, 0x61, 0xb8, 0xe1, 0x92, 0xda, 0xf0, 0xe0, 0xce, 0x1a, 0x14, 0x3c, 0x9b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x56, 0x61, 0x36, 0x30, 0x56, 0x61, 0x77, 0x50, 0x50, 0x64, 0x56, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x5a, 0x83, 0x22, 0x92, 0x60, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x28, 0x84, 0x4d, 0x07, 0xe0, 0x05, 0xae, 0x8e, 0x0e, 0x24, 0x0c, 0x84, 0x2d, 0x6d, 0x8e, 0x0e, 0xe4, 0xcd, 0x0c, 0x24, 0x8d, 0xae, 0xac, 0x6d, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x21, 0x6e, 0x60, 0x1a, 0xc2, 0x78, 0xc3, 0xe3, 0x23, 0x1b, 0x14, 0x91, 0x04, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x0a, 0x71, 0x07, 0xcf, 0xea, 0x6e, 0xdd, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x0a, 0x21, 0x19, 0x18, 0x85, 0x50, 0xb3, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x14, 0x42, 0x74, 0xf0, 0xd8, 0x48, 0x8c, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x28, 0x84, 0xf0, 0xe0, 0xb1, 0x91, 0x18, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x6c, 0xf0, 0x76, 0x40, 0x8c, 0x83, 0xf7, 0x2e, 0x62, 0x1c, 0x04, 0x8e, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x0a, 0x61, 0x72, 0xf0, 0x98, 0x48, 0x8c, 0x83, 0xc0, 0x86, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x36, 0x78, 0x91, 0x21, 0xc6, 0xc0, 0x28, 0x84, 0x96, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x28, 0x84, 0xe9, 0xc1, 0xbb, 0xe1, 0x5b, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x14, 0xc2, 0x76, 0x60, 0x14, 0xc2, 0xfe, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x51, 0x08, 0x05, 0x03, 0xa3, 0x10, 0x4a, 0x0e, 0x02, 0x1b, 0xa2, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x16, 0xe2, 0x0e, 0x9e, 0xd5, 0xdd, 0xba, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x16, 0x42, 0x32, 0x30, 0x0b, 0x61, 0xb4, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb3, 0x10, 0xa2, 0x83, 0xb7, 0x74, 0x62, 0x1c, 0x04, 0x8e, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x6c, 0xf0, 0xd4, 0x4e, 0x8c, 0x81, 0x59, 0x08, 0x9b, 0x83, 0xc0, 0x86, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x0d, 0xde, 0xb1, 0x83, 0x71, 0xf0, 0xac, 0xee, 0xd6, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x9f, 0x07, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc3, 0x10, 0xc2, 0x81, 0x61, 0x08, 0xe9, 0xe1, 0x69, 0x9d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x86, 0xb8, 0x83, 0x67, 0x75, 0xb7, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xf8, 0x3c, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x21, 0x24, 0x03, 0xd3, 0x10, 0xc2, 0x83, 0x22, 0xfc, 0x74, 0x0d, 0x0f, 0xee, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x34, 0x84, 0xc1, 0xc0, 0x34, 0x84, 0xed, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x69, 0x08, 0x8b, 0x81, 0x69, 0x08, 0xa3, 0x83, 0x02, 0x04, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x86, 0xb0, 0x1a, 0x98, 0x86, 0x30, 0x3b, 0x3c, 0xad, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x4c, 0x43, 0xd8, 0x0d, 0x4c, 0x43, 0x98, 0x1e, 0x14, 0x3f, 0xa8, 0x75, 0x38, 0xc5, 0xd6, 0xa0, 0xe4, 0x6e, 0xd8, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0x0e, 0x76, 0x1a, 0x03, 0xf0, 0x36, 0x86, 0x56, 0x36, 0xb6, 0x06, 0x62, 0xf6, 0x26, 0x07, 0xb2, 0x56, 0x96, 0x07, 0x52, 0x86, 0x97, 0x36, 0x47, 0x57, 0xe6, 0x36, 0x56, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x33, 0x12, 0x37, 0x30, 0x26, 0x61, 0xb4, 0xe1, 0xf1, 0x91, 0x0d, 0x4a, 0xee, 0x86, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0x92, 0xb8, 0x83, 0xd7, 0x8a, 0xb8, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0x92, 0x90, 0x0c, 0x0c, 0x49, 0x98, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0x92, 0x10, 0x0d, 0x0c, 0x49, 0xd8, 0x6d, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x86, 0x24, 0x84, 0x07, 0x6f, 0x58, 0x71, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x21, 0x09, 0xe9, 0xc0, 0x90, 0x84, 0xc5, 0x41, 0xe0, 0xe8, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x43, 0x12, 0x26, 0x03, 0x43, 0x12, 0x66, 0x07, 0x81, 0x0d, 0xd1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x24, 0x61, 0x38, 0x30, 0x24, 0x61, 0xbd, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0x92, 0x30, 0x3d, 0x78, 0x7d, 0x8d, 0xeb, 0xc1, 0x89, 0xdf, 0xa3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x92, 0xb8, 0x83, 0xd7, 0x8a, 0xb8, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x92, 0x90, 0x0c, 0x4c, 0x49, 0x88, 0x0e, 0x1f, 0xac, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x98, 0xc4, 0x1d, 0xbc, 0x56, 0xc4, 0x75, 0xc3, 0xdb, 0xac, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x26, 0xb1, 0x07, 0xaf, 0x15, 0x71, 0xdd, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x26, 0x21, 0x18, 0x18, 0x93, 0x90, 0x1c, 0x14, 0x14, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x26, 0x21, 0x1a, 0x18, 0x93, 0xb0, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x26, 0x21, 0x1b, 0x18, 0x93, 0x10, 0x1f, 0x9c, 0x3b, 0x2d, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x31, 0x09, 0xf9, 0xc0, 0x98, 0x84, 0xc1, 0xe1, 0x69, 0x9d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x4c, 0xc2, 0x62, 0x60, 0x4c, 0xc2, 0xe4, 0xf0, 0x5e, 0x50, 0x87, 0x53, 0x6c, 0x0d, 0x0a, 0x7f, 0x83, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xe0, 0x38, 0x72, 0x31, 0x00, 0x9e, 0x93, 0x95, 0xb1, 0x95, 0xd1, 0x95, 0x81, 0xb8, 0xac, 0x95, 0xe5, 0x81, 0x98, 0xc9, 0xbd, 0xb5, 0x81, 0xb8, 0x84, 0x81, 0xa4, 0x99, 0x81, 0xa4, 0xd1, 0x81, 0x94, 0xe1, 0xa5, 0xcd, 0xd1, 0xcd, 0xb1, 0x80, 0xc0, 0xc9, 0xbd, 0x91, 0xd5, 0x8d, 0xa5, 0xb9, 0x9d, 0x81, 0xd8, 0x85, 0xb1, 0xd5, 0x95, 0x81, 0xa4, 0x99, 0x99, 0x81, 0x90, 0x95, 0xb1, 0x95, 0xd1, 0x95, 0x91, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd0, 0xe2, 0x06, 0x42, 0x18, 0x56, 0x1b, 0x1e, 0x1f, 0xd9, 0xa0, 0xf0, 0x37, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa8, 0xc5, 0x1d, 0x3c, 0xa5, 0xcb, 0x75, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd4, 0x42, 0x32, 0x10, 0xb5, 0xb0, 0xde, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xb5, 0x10, 0x0d, 0x44, 0x2d, 0xec, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x51, 0x0b, 0xe1, 0xc1, 0xdb, 0xca, 0x5c, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6a, 0x21, 0x1d, 0x88, 0x5a, 0x58, 0x1c, 0x04, 0x8e, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xb5, 0x30, 0x19, 0x88, 0x5a, 0x98, 0x1d, 0x04, 0x36, 0x44, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd4, 0xc2, 0x70, 0x20, 0x6a, 0x61, 0xbc, 0xe1, 0xcf, 0xa5, 0x0d, 0x8a, 0xd6, 0x93, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x5a, 0x58, 0x1e, 0x3c, 0x07, 0xce, 0xf5, 0xe0, 0xc4, 0xef, 0xd1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x84, 0x2d, 0xee, 0xe0, 0x29, 0x5d, 0xae, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc2, 0x16, 0x92, 0x81, 0xb0, 0x85, 0x86, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x61, 0x0b, 0xd1, 0x40, 0xd8, 0xc2, 0x68, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc2, 0x16, 0xb2, 0x81, 0xb0, 0x85, 0xfc, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc2, 0x16, 0x06, 0x03, 0x61, 0x0b, 0x9b, 0x83, 0x07, 0x88, 0x92, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x84, 0x2d, 0xac, 0x06, 0xc2, 0x16, 0x0a, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6c, 0x61, 0x36, 0x10, 0xb6, 0x30, 0x3d, 0x08, 0x1c, 0xbd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6c, 0x61, 0x3b, 0x10, 0xb6, 0xb0, 0x3f, 0x08, 0x6c, 0x88, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb8, 0xc5, 0x1d, 0x3c, 0xa5, 0xcb, 0x75, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xdc, 0x42, 0x38, 0x10, 0xb7, 0xb0, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xb7, 0x90, 0x0e, 0xc4, 0x2d, 0xc4, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xb7, 0x90, 0x0f, 0xc4, 0x2d, 0x0c, 0x0e, 0x0a, 0x8a, 0xcc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x74, 0x71, 0x07, 0x4f, 0xe9, 0x72, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xba, 0x90, 0x1c, 0x3c, 0x56, 0x44, 0x63, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc1, 0xe3, 0x23, 0x34, 0x06, 0x42, 0x17, 0xe2, 0x83, 0x43, 0x6b, 0xd7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x84, 0x2e, 0xe4, 0x07, 0xaf, 0xf8, 0xd0, 0x38, 0x78, 0xda, 0xc7, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x6c, 0xf0, 0x04, 0x18, 0x8d, 0x81, 0xd8, 0x85, 0xe5, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd8, 0x85, 0xe0, 0xe0, 0xf1, 0x33, 0x1a, 0x1b, 0x1c, 0xc3, 0x0d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x76, 0x21, 0x39, 0x78, 0xfc, 0x8c, 0xc6, 0x86, 0xb7, 0x75, 0x0e, 0x5e, 0xc8, 0x66, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x1b, 0x3c, 0xf2, 0x46, 0x63, 0x20, 0x76, 0x61, 0xb8, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0xd9, 0xe0, 0x41, 0x3a, 0x1a, 0x03, 0xb1, 0x0b, 0xab, 0x83, 0x97, 0xf9, 0x96, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x06, 0xef, 0xd5, 0xd1, 0x38, 0x78, 0x96, 0x8f, 0xc6, 0xe1, 0x69, 0x9d, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf0, 0xc5, 0x1d, 0x3c, 0xa5, 0xcb, 0x75, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf8, 0x42, 0x32, 0x10, 0xbe, 0x30, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xbe, 0x10, 0x0d, 0x84, 0x2f, 0x2c, 0x0e, 0xde, 0x8f, 0x79, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x84, 0x2f, 0x4c, 0x06, 0xc2, 0x17, 0x56, 0x07, 0x87, 0xd6, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7c, 0x61, 0x36, 0x10, 0xbe, 0xb0, 0x3e, 0x78, 0xda, 0xc7, 0x69, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfc, 0xe2, 0x07, 0x02, 0x18, 0x76, 0x1b, 0x3e, 0xb1, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe2, 0x17, 0xb2, 0x81, 0xf8, 0x85, 0xfd, 0x86, 0xcf, 0x5d, 0xd6, 0x30, 0x71, 0x03, 0x3c, 0x66, 0x6f, 0x75, 0x6e, 0xe4, 0xc1, 0xaa, 0x75, 0xdd, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x5f, 0xd8, 0x1d, 0x3c, 0x34, 0xd8, 0x75, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0x83, 0x3b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xbf, 0xb0, 0x1d, 0x88, 0x5f, 0x98, 0x1f, 0x94, 0xda, 0x9e, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x00, 0xe3, 0x0f, 0x9e, 0xf0, 0xeb, 0xba, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x80, 0x21, 0x18, 0x08, 0x60, 0x48, 0x37, 0xbc, 0xad, 0xb3, 0xc1, 0xdb, 0x85, 0x5d, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x02, 0x18, 0xe2, 0x81, 0x00, 0x86, 0xd9, 0x86, 0x4b, 0x6a, 0xc3, 0x83, 0x3b, 0x6b, 0x30, 0x48, 0xa5, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x80, 0x61, 0x32, 0x10, 0xc0, 0xb0, 0x3a, 0x58, 0x88, 0xb0, 0x5b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xc1, 0xb8, 0x83, 0xa7, 0x74, 0xb9, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x60, 0x48, 0x06, 0x22, 0x18, 0xd6, 0x1b, 0x3e, 0x77, 0x59, 0xc3, 0xc4, 0x6d, 0xf0, 0x76, 0x61, 0xd7, 0x83, 0xc1, 0x83, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x11, 0x0c, 0xab, 0x83, 0x27, 0x6a, 0xbb, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x78, 0x70, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x22, 0x18, 0x96, 0x03, 0x11, 0x0c, 0xe3, 0x83, 0x52, 0x36, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x61, 0xdc, 0xc1, 0x53, 0xba, 0x5c, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x84, 0x30, 0x76, 0x20, 0x84, 0x21, 0x3b, 0x78, 0xc2, 0xb3, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xc2, 0x10, 0x0e, 0x84, 0x30, 0x8c, 0x36, 0x5c, 0x52, 0x1b, 0x1e, 0xdc, 0x59, 0x83, 0x82, 0x67, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x42, 0x18, 0x06, 0x03, 0x21, 0x0c, 0x9b, 0x83, 0x05, 0x9c, 0xf0, 0xb5, 0x1a, 0x94, 0x08, 0x2d, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0x99, 0x89, 0x3a, 0x00, 0x9f, 0x67, 0x65, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x20, 0x61, 0x74, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7e, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x11, 0x71, 0x03, 0x93, 0x11, 0xd2, 0x0d, 0x8f, 0x8f, 0x6c, 0x50, 0x22, 0xb4, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x48, 0xc4, 0x1d, 0xbc, 0xac, 0xde, 0x75, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x48, 0x84, 0x64, 0x60, 0x24, 0xc2, 0x7c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x48, 0x84, 0x68, 0x60, 0x24, 0xc2, 0x6e, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x12, 0x21, 0x3c, 0x78, 0x6e, 0xbf, 0xeb, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x1b, 0xbc, 0xd2, 0x6b, 0x63, 0x60, 0x24, 0xc2, 0xe2, 0x20, 0x70, 0xf4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x91, 0x08, 0x93, 0x81, 0x91, 0x08, 0xb3, 0x83, 0xc0, 0x86, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0x89, 0x30, 0x1c, 0x18, 0x89, 0xb0, 0xde, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x1b, 0x3c, 0x83, 0x6b, 0xe3, 0xe0, 0xb1, 0x08, 0xaf, 0x07, 0x27, 0x7e, 0x8f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x26, 0xe2, 0x0e, 0x5e, 0x56, 0xef, 0xba, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x26, 0x42, 0x32, 0x30, 0x13, 0x61, 0xb3, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x33, 0x11, 0xa2, 0x83, 0x07, 0xf2, 0x6d, 0x1c, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4c, 0x84, 0x7c, 0x60, 0x26, 0xc2, 0xe4, 0xe0, 0x01, 0xa2, 0xa4, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x50, 0xc4, 0x1d, 0xbc, 0xac, 0xde, 0x75, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x50, 0x84, 0xf0, 0xe0, 0x11, 0x85, 0x1b, 0x07, 0x05, 0x45, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x1b, 0x3c, 0x0a, 0x6b, 0xe3, 0xe0, 0x65, 0xf5, 0xae, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x22, 0x24, 0x03, 0x53, 0x11, 0x56, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa6, 0x22, 0x64, 0x03, 0x53, 0x11, 0xc2, 0xc3, 0x7b, 0x41, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x15, 0x21, 0x1d, 0x98, 0x8a, 0x30, 0x3a, 0x78, 0xda, 0xc7, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x16, 0xf1, 0x03, 0x63, 0x11, 0xf2, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x16, 0x21, 0x38, 0x78, 0x61, 0xca, 0xeb, 0xc1, 0xbb, 0x4d, 0x5d, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x2e, 0xe2, 0x0e, 0x5e, 0x56, 0xef, 0xba, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x2e, 0x42, 0x32, 0x30, 0x17, 0x61, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x2e, 0x42, 0x34, 0x30, 0x17, 0x61, 0x71, 0xf0, 0x7e, 0xcc, 0xd3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x2e, 0xc2, 0x64, 0x60, 0x2e, 0xc2, 0xe6, 0xf0, 0x5e, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0x17, 0x61, 0x34, 0x30, 0x17, 0x61, 0x7b, 0xf0, 0xb4, 0x8f, 0xd3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc1, 0x88, 0x1f, 0x18, 0x8c, 0x90, 0x6f, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x78, 0x70, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x06, 0x23, 0x64, 0x03, 0x83, 0x11, 0xe2, 0x83, 0x52, 0xdb, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0x8c, 0xb8, 0x83, 0x97, 0xd5, 0xbb, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x78, 0x70, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x26, 0x23, 0x24, 0x03, 0x93, 0x11, 0xc2, 0x83, 0x52, 0x36, 0xb3, 0xd5, 0xa0, 0x48, 0x5d, 0xd8, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0x8a, 0x41, 0xd6, 0x01, 0xf0, 0xc7, 0xae, 0x4c, 0x2e, 0xcd, 0x2c, 0x0f, 0x04, 0xed, 0x4d, 0x2e, 0x4d, 0xef, 0xcd, 0x8d, 0x2e, 0x8c, 0x0d, 0x24, 0xcc, 0x8d, 0x0c, 0xc4, 0xae, 0x4c, 0x8e, 0x2e, 0x6d, 0x2c, 0x8c, 0x0d, 0xe4, 0x4d, 0x8e, 0xac, 0x4c, 0x2e, 0xcd, 0xed, 0x6c, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa2, 0x11, 0x37, 0x10, 0xa6, 0xf8, 0x0d, 0x8f, 0x8f, 0x6c, 0x50, 0xa4, 0x2e, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x38, 0xe2, 0x0e, 0x5e, 0xf7, 0xf4, 0xba, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1c, 0x21, 0x19, 0x08, 0x47, 0x98, 0x6d, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc2, 0x11, 0xb2, 0x83, 0x47, 0x54, 0xbd, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x38, 0x42, 0x38, 0x10, 0x8e, 0x30, 0x38, 0x08, 0x1c, 0xbd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1c, 0x61, 0x31, 0x10, 0x8e, 0xb0, 0x3a, 0x08, 0x6c, 0x88, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1e, 0x71, 0x07, 0xaf, 0x7b, 0x7a, 0xdd, 0xa0, 0xb4, 0xb7, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe2, 0x11, 0x92, 0x81, 0x78, 0x84, 0x92, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf1, 0x08, 0xd1, 0x40, 0x3c, 0xc2, 0x6c, 0xc3, 0x9f, 0x4b, 0x83, 0xb3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0x8f, 0x10, 0x1e, 0xbc, 0xa3, 0xec, 0x75, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xe2, 0x11, 0xd2, 0x81, 0x78, 0x84, 0xc5, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xc4, 0x23, 0x4c, 0x06, 0xe2, 0x11, 0x56, 0x07, 0x27, 0x7e, 0x8f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x78, 0x84, 0xdd, 0x40, 0x3c, 0x42, 0xc7, 0x86, 0x3f, 0x97, 0x06, 0x97, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1e, 0x61, 0x79, 0xf0, 0xfe, 0xb7, 0xd7, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x47, 0x98, 0x0e, 0xc4, 0x23, 0xcc, 0x0f, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1e, 0x61, 0x3f, 0x10, 0x8f, 0x50, 0x71, 0x70, 0xe2, 0xf7, 0xa8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x48, 0xdc, 0xc1, 0xeb, 0x9e, 0x5e, 0x37, 0x7c, 0x85, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x01, 0x09, 0xc9, 0xc1, 0xeb, 0x9e, 0x5e, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x04, 0x24, 0xa4, 0x03, 0x01, 0x09, 0xf1, 0xe1, 0x83, 0xd5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x49, 0xdc, 0xc1, 0xeb, 0x9e, 0x5e, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x3c, 0xb8, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xc4, 0x24, 0x84, 0x03, 0x31, 0x09, 0xf9, 0xc1, 0x2a, 0x30, 0xd9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x4b, 0xdc, 0xc1, 0xeb, 0x9e, 0x5e, 0x37, 0x3c, 0xc2, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x04, 0x26, 0x24, 0x03, 0x81, 0x09, 0x45, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x0c, 0x52, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x30, 0x21, 0x1e, 0x08, 0x4c, 0x58, 0x1c, 0xac, 0x02, 0x93, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc0, 0x84, 0xc9, 0x40, 0x60, 0x42, 0xcf, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc0, 0x84, 0xcd, 0x40, 0x60, 0xc2, 0xf4, 0xe0, 0xfd, 0x98, 0xa7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x60, 0xc2, 0x76, 0x20, 0x30, 0xa1, 0xe2, 0xe0, 0x69, 0x1f, 0xa7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x60, 0x42, 0xc7, 0x40, 0x60, 0x42, 0xcd, 0xc1, 0x59, 0x35, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x36, 0x21, 0x19, 0x88, 0x4d, 0x28, 0xda, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0xe0, 0xd9, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x0d, 0x9e, 0x4a, 0xd9, 0x31, 0x10, 0x9b, 0xb0, 0x38, 0x58, 0x05, 0x26, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb1, 0x09, 0x93, 0x81, 0xd8, 0x84, 0x9e, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x06, 0xaf, 0x95, 0xec, 0x38, 0x78, 0xbb, 0x62, 0xc7, 0xc1, 0xfb, 0x31, 0x4f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd8, 0x84, 0xed, 0x40, 0x6c, 0xc2, 0xfc, 0xe0, 0xac, 0x20, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xc4, 0x26, 0xec, 0x07, 0x62, 0x13, 0x6a, 0x0e, 0x9e, 0xf6, 0x71, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xa0, 0x90, 0x0c, 0x04, 0x28, 0x9c, 0xd8, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0xf4, 0xd3, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x02, 0x14, 0x06, 0x03, 0x01, 0x0a, 0x9b, 0x83, 0x55, 0x60, 0xb2, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xa0, 0x30, 0x1a, 0x08, 0x50, 0xf8, 0xb0, 0xe1, 0x11, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x40, 0x61, 0x36, 0x10, 0xa0, 0xd0, 0xb6, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x40, 0x61, 0x37, 0x10, 0xa0, 0x30, 0x3d, 0x28, 0x45, 0x35, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x00, 0x85, 0xed, 0x40, 0x80, 0x42, 0xc5, 0xc1, 0xd3, 0x3e, 0x4e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x00, 0x85, 0x8e, 0x81, 0x00, 0x85, 0xb2, 0x83, 0x47, 0x88, 0xa6, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x04, 0x28, 0xd4, 0x0d, 0x04, 0x28, 0x5c, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xf0, 0xe0, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x04, 0x28, 0x54, 0x0e, 0x04, 0x28, 0xb4, 0x1e, 0x94, 0xda, 0x9e, 0x6b, 0x30, 0x48, 0xa5, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x40, 0xa1, 0x79, 0x20, 0x40, 0xe1, 0xc1, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x08, 0x50, 0xa8, 0x3e, 0x78, 0x9e, 0xf1, 0xeb, 0xc1, 0xd3, 0x3e, 0x4e, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x52, 0x48, 0x06, 0xa2, 0x14, 0x4e, 0x6c, 0x50, 0xc2, 0x63, 0x6e, 0x50, 0x24, 0x65, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x51, 0x0a, 0x83, 0x81, 0x28, 0x85, 0xcd, 0xc1, 0x2a, 0x30, 0xd9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x52, 0x18, 0x0d, 0x44, 0x29, 0x7c, 0xd8, 0xf0, 0x08, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xa5, 0x30, 0x1b, 0x88, 0x52, 0x68, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x10, 0xa5, 0xb0, 0x1b, 0x88, 0x52, 0x98, 0x1e, 0x94, 0xa2, 0x9a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x94, 0xc2, 0x76, 0x20, 0x4a, 0xa1, 0xe2, 0xe0, 0x69, 0x1f, 0xa7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x94, 0x42, 0xc7, 0x40, 0x94, 0x42, 0xd9, 0xc1, 0x63, 0x4b, 0x53, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa2, 0x14, 0xea, 0x06, 0xa2, 0x14, 0x2e, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x78, 0x70, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xa2, 0x14, 0x2a, 0x07, 0xa2, 0x14, 0x5a, 0x0f, 0x4a, 0xd9, 0xcc, 0x35, 0x28, 0x78, 0x36, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4a, 0xa1, 0x79, 0x20, 0x4a, 0xe1, 0xc1, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x88, 0x52, 0xa8, 0x3e, 0x78, 0x7e, 0xf9, 0xeb, 0xc1, 0xd3, 0x3e, 0x4e, 0xab, 0xc3, 0x29, 0xd6, 0x1a, 0x8c, 0xcc, 0xa5, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xa0, 0xa0, 0x72, 0x1d, 0x00, 0xaf, 0xc2, 0xe0, 0xe0, 0xd8, 0xf2, 0x40, 0xce, 0xc2, 0xe8, 0xca, 0x40, 0xe8, 0xde, 0x40, 0xe8, 0xe4, 0xc2, 0xdc, 0xe6, 0xcc, 0xde, 0xe4, 0xda, 0x40, 0xc2, 0xd8, 0xd8, 0x40, 0xec, 0xc2, 0xd8, 0xea, 0xca, 0xe6, 0x40, 0xd2, 0xdc, 0x40, 0xe0, 0xd8, 0xc2, 0xc6, 0xca, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x54, 0xe3, 0x06, 0xc6, 0x35, 0x94, 0x6e, 0x78, 0x7c, 0x64, 0x83, 0x91, 0xb9, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb3, 0x1a, 0x77, 0xf0, 0xb4, 0xf9, 0xd7, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x56, 0x43, 0x32, 0x30, 0xab, 0xa1, 0x64, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xac, 0x86, 0x68, 0x60, 0x56, 0xc3, 0x6e, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x30, 0xab, 0x21, 0x3c, 0x78, 0xf6, 0xfe, 0xeb, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xcc, 0x6a, 0x48, 0x07, 0x66, 0x35, 0x2c, 0x0e, 0x02, 0x47, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x98, 0xd5, 0x30, 0x19, 0x98, 0xd5, 0x30, 0x3b, 0x08, 0x6c, 0x88, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x59, 0x0d, 0xc3, 0x81, 0x59, 0x0d, 0x1d, 0x1b, 0xfe, 0x5c, 0x1a, 0x5c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x59, 0x0d, 0xd3, 0x83, 0x07, 0x1b, 0xc0, 0x6e, 0x10, 0x4e, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xac, 0x86, 0xf5, 0xc0, 0xac, 0x86, 0x82, 0x83, 0x07, 0x88, 0x92, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xac, 0x86, 0x86, 0x81, 0x59, 0x0d, 0x15, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x0c, 0x6b, 0xdc, 0xc1, 0xd3, 0xe6, 0x5f, 0x37, 0x7c, 0x85, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x1a, 0x77, 0xf0, 0xb4, 0xf9, 0xd7, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0f, 0xee, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd3, 0x1a, 0xc2, 0x81, 0x69, 0x0d, 0xe9, 0xe1, 0x69, 0x9d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xd7, 0xb8, 0x83, 0xa7, 0xcd, 0xbf, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x18, 0xd7, 0xd8, 0x81, 0x71, 0x0d, 0xeb, 0x0d, 0x9f, 0xbb, 0x0c, 0xee, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb8, 0x86, 0xe0, 0xe0, 0xa1, 0x1c, 0xb0, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc6, 0x35, 0x24, 0x03, 0xe3, 0x1a, 0x06, 0x07, 0x4f, 0xfb, 0x38, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc6, 0x35, 0x2c, 0x06, 0xc6, 0x35, 0x8c, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x6b, 0x98, 0x0c, 0x8c, 0x6b, 0xd8, 0x1c, 0xde, 0x0b, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc6, 0x35, 0x8c, 0x06, 0xc6, 0x35, 0x6c, 0x0f, 0xde, 0x6d, 0xea, 0x5a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb8, 0x86, 0xf9, 0xc0, 0xb8, 0x86, 0xa2, 0x0d, 0x9f, 0xbb, 0x0c, 0xce, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb8, 0x86, 0x82, 0x83, 0xf7, 0xb3, 0xc0, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x78, 0x70, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc6, 0x35, 0x94, 0x0c, 0x8c, 0x6b, 0xe8, 0x39, 0x28, 0xb5, 0x3d, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xc6, 0x35, 0x34, 0x0d, 0x8c, 0x6b, 0xe8, 0xdc, 0xf0, 0xb9, 0xcb, 0xe0, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x8c, 0x6b, 0xe8, 0x3a, 0x78, 0x83, 0x0d, 0xec, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0x07, 0x77, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x60, 0x5c, 0x43, 0xdf, 0xc0, 0xb8, 0x86, 0xca, 0x83, 0x52, 0x36, 0xb3, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x41, 0xb8, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x2a, 0x89, 0xb7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x02, 0x47, 0x9e, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xe7, 0xe8, 0xf2, 0xd8, 0xca, 0xc8, 0x40, 0xea, 0xdc, 0xd2, 0xc6, 0xde, 0xc8, 0xca, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0x23, 0x79, 0x0e, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd8, 0x4a, 0x9e, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x38, 0x4c, 0x9e, 0x83, 0xd2, 0x9b, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x54, 0x4e, 0x9e, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0xeb, 0xd2, 0xee, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3e, 0x50, 0x9e, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9e, 0x51, 0x9e, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x09, 0x95, 0xe7, 0xe0, 0x38, 0x00, 0x5b, 0xad, 0x40, 0xd9, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x71, 0xc8, 0x06, 0x72, 0xe0, 0x71, 0x1b, 0xa4, 0x5e, 0x14, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x38, 0x7a, 0xf0, 0x34, 0x29, 0xd8, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0xda, 0x76, 0x6c, 0xda, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x68, 0xdb, 0xb1, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xc9, 0x71, 0x03, 0xe9, 0xe4, 0xf8, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xe4, 0x90, 0x0c, 0x24, 0x93, 0xc3, 0x6e, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0xd8, 0x9b, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xe4, 0x90, 0x1e, 0xbc, 0x95, 0x0b, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xc9, 0x21, 0x1e, 0x48, 0x26, 0x87, 0xc9, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x93, 0xc3, 0x66, 0x20, 0x99, 0x1c, 0x66, 0x07, 0x65, 0x96, 0x6e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x36, 0x39, 0x24, 0x03, 0xd9, 0xe4, 0xb0, 0xd8, 0xf0, 0xe7, 0xd2, 0x06, 0x49, 0xbe, 0x9b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4d, 0x0e, 0xe9, 0xc1, 0x8b, 0xd0, 0x60, 0x37, 0xfc, 0x3b, 0xbf, 0x80, 0x6f, 0x16, 0xe6, 0x36, 0x57, 0xab, 0xc1, 0x5b, 0x49, 0x2b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0xbc, 0x95, 0xb4, 0xb2, 0x01, 0xf8, 0x98, 0xa3, 0x0b, 0x73, 0x23, 0x0b, 0x93, 0x23, 0x03, 0x09, 0x83, 0x83, 0x03, 0x99, 0xa3, 0x0b, 0xa3, 0x2b, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x2b, 0x69, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xa1, 0xe3, 0x06, 0x52, 0xd2, 0x21, 0xdb, 0xe0, 0x00, 0x21, 0x3a, 0x80, 0xf7, 0x59, 0x18, 0x1b, 0x5b, 0x4b, 0xd8, 0x59, 0x99, 0x1b, 0x5d, 0x8b, 0xd8, 0xdb, 0x1d, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xe8, 0xb8, 0x83, 0x27, 0xd6, 0xc1, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x42, 0x87, 0x64, 0x20, 0x13, 0x1d, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xe8, 0x90, 0x0e, 0x64, 0xa1, 0xc3, 0x83, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x83, 0x27, 0xdc, 0x33, 0x6e, 0xf8, 0x73, 0x69, 0xc0, 0x7b, 0xab, 0x93, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0b, 0x1d, 0x16, 0x03, 0x59, 0xe8, 0xb0, 0x3a, 0x68, 0xdb, 0x7a, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x43, 0x87, 0x74, 0x20, 0x0d, 0x1d, 0x2e, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x9c, 0xd5, 0x95, 0xcd, 0xd1, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x56, 0x87, 0x3f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0d, 0x1d, 0x16, 0x03, 0x69, 0xe8, 0xb0, 0x3a, 0x68, 0xdb, 0x7a, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x43, 0x87, 0x74, 0x20, 0x0f, 0x1d, 0x2e, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x1c, 0xbc, 0x41, 0x4d, 0x71, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0x59, 0x18, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xe8, 0xb0, 0x18, 0xc8, 0x43, 0x87, 0xd5, 0xc1, 0x7a, 0xad, 0xe7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x11, 0x1d, 0xd2, 0x81, 0x44, 0x74, 0xf8, 0xb1, 0xe1, 0x89, 0xf7, 0x0d, 0x9e, 0xf4, 0x2c, 0xb2, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0x2e, 0x0c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x74, 0x58, 0x0c, 0x24, 0xa2, 0xc3, 0xea, 0xe0, 0x8c, 0x84, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8a, 0x0e, 0xc9, 0x40, 0x36, 0x3a, 0x64, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xd1, 0x21, 0x1d, 0x48, 0x45, 0x87, 0x2b, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xbe, 0xd5, 0xd1, 0x9d, 0xbd, 0xa5, 0xb9, 0x9d, 0x81, 0xcc, 0xd5, 0x89, 0xcd, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0xbb, 0x2b, 0xc3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x15, 0x1d, 0x16, 0x03, 0xa9, 0xe8, 0xb0, 0xda, 0xf0, 0xef, 0xfc, 0x06, 0xcf, 0x11, 0xae, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x45, 0x87, 0x74, 0x20, 0x17, 0x1d, 0xae, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x99, 0xe6, 0x36, 0xf6, 0xd6, 0x96, 0xe6, 0x76, 0x06, 0x32, 0x57, 0x27, 0x36, 0xb7, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0xae, 0x0e, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x74, 0x58, 0x0c, 0xe4, 0xa2, 0xc3, 0x6a, 0xc3, 0xbf, 0xf3, 0x1b, 0x3c, 0xe3, 0xb8, 0xb2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x19, 0x1d, 0xd2, 0x81, 0x64, 0x74, 0xb8, 0xb2, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xe7, 0xdc, 0x98, 0x5c, 0x1e, 0x88, 0x58, 0x9a, 0x1b, 0x59, 0x9a, 0xdb, 0xd9, 0xdc, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb9, 0xb5, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xd1, 0x61, 0x31, 0x90, 0x8c, 0x0e, 0x05, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8c, 0x0e, 0x93, 0x81, 0x64, 0x74, 0x58, 0x1d, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x3a, 0xcc, 0x06, 0x92, 0xd1, 0x61, 0x7a, 0x70, 0x46, 0x42, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xd1, 0x61, 0x3b, 0x90, 0x8c, 0x0e, 0xfb, 0x83, 0x27, 0xb0, 0xc1, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8e, 0x0e, 0xc9, 0x40, 0x4a, 0x3a, 0x7e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3a, 0x3a, 0xa4, 0x03, 0xe9, 0xe8, 0x70, 0x65, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xcf, 0x31, 0xb4, 0x30, 0xb7, 0xb3, 0x32, 0x10, 0xb7, 0xba, 0x36, 0xb1, 0x32, 0xb9, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x61, 0x63, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xa3, 0xc3, 0x62, 0x20, 0x1d, 0x1d, 0x46, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8f, 0x0e, 0xe9, 0x40, 0x3e, 0x3a, 0x9c, 0xd8, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xe0, 0x2d, 0x73, 0xa3, 0x93, 0x7b, 0x83, 0xcb, 0xdb, 0xf0, 0xe7, 0xd2, 0x80, 0x57, 0xe6, 0x96, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x3a, 0x2c, 0x06, 0xf2, 0xd1, 0x61, 0x75, 0xf0, 0xdc, 0x7b, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x21, 0x1d, 0xd2, 0x81, 0x84, 0x74, 0x78, 0xb2, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xdf, 0x58, 0x9d, 0x9c, 0x5c, 0x99, 0x1b, 0x1d, 0x08, 0x5d, 0x5a, 0x5b, 0xd9, 0x86, 0x3f, 0x97, 0x36, 0x48, 0x20, 0xdc, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x74, 0x58, 0x0c, 0x24, 0xa4, 0xc3, 0xe8, 0xe0, 0xc8, 0xd7, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xa4, 0x43, 0x3a, 0x90, 0x91, 0x0e, 0x47, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x62, 0x7b, 0x0b, 0x23, 0x03, 0x99, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0xdb, 0xf0, 0xe7, 0xd2, 0x80, 0x27, 0x96, 0xb7, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x46, 0x3a, 0x2c, 0x06, 0x32, 0xd2, 0x61, 0x75, 0xf0, 0x54, 0xa3, 0x90, 0x5a, 0x01, 0xdf, 0x2c, 0x4c, 0xae, 0xdd, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x0a, 0x3a, 0xec, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x95, 0xe3, 0x06, 0x72, 0xcb, 0xf1, 0x1b, 0x1c, 0x20, 0x44, 0x37, 0x78, 0x0a, 0x3a, 0xec, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x96, 0xe3, 0x0e, 0x9e, 0xbe, 0x0e, 0xbb, 0x41, 0xa8, 0x21, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xe5, 0x90, 0x0c, 0x24, 0x96, 0xc3, 0x68, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x62, 0x39, 0x44, 0x03, 0x89, 0xe5, 0x90, 0x1f, 0xb4, 0x9a, 0x54, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x96, 0xc3, 0x60, 0x20, 0xb1, 0x1c, 0x16, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x58, 0x0e, 0x93, 0x81, 0xc4, 0x72, 0xd8, 0x1c, 0x14, 0x14, 0x99, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x66, 0x39, 0xee, 0xe0, 0xe9, 0xeb, 0xb0, 0x1b, 0x04, 0xed, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x59, 0x0e, 0xc9, 0x40, 0x66, 0x39, 0x54, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x2c, 0x87, 0x68, 0x20, 0xb3, 0x1c, 0xf2, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x05, 0xfe, 0xd8, 0xdb, 0x1b, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x96, 0xc3, 0x60, 0x20, 0xb3, 0x1c, 0x76, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x72, 0x98, 0x1c, 0x3c, 0xc7, 0x20, 0x76, 0xc3, 0xbf, 0xf3, 0x0b, 0xf0, 0xa0, 0xd5, 0xd1, 0x8d, 0xa1, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x96, 0xc3, 0x70, 0x20, 0xb3, 0x1c, 0x9a, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xe5, 0x30, 0x3d, 0x78, 0x36, 0x43, 0xec, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x96, 0xc3, 0x76, 0x20, 0xb3, 0x1c, 0xe6, 0x07, 0x25, 0x62, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x59, 0x0e, 0xfb, 0x81, 0xcc, 0x72, 0xe8, 0x38, 0x38, 0x23, 0xa1, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xe5, 0x50, 0x32, 0x90, 0x59, 0x0e, 0x45, 0x07, 0x0f, 0x8b, 0x19, 0xad, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb5, 0x1c, 0x92, 0x81, 0xd4, 0x72, 0xe8, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5a, 0x0e, 0xd1, 0x40, 0x6a, 0x39, 0xe4, 0x07, 0xad, 0xaa, 0x09, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xe5, 0x30, 0x18, 0x48, 0x2d, 0x87, 0xf5, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb5, 0x1c, 0x26, 0x07, 0x8f, 0x05, 0x89, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x72, 0xd8, 0x0c, 0xa4, 0x96, 0xc3, 0xee, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xcb, 0x61, 0x38, 0x90, 0x5a, 0x0e, 0xe3, 0x83, 0x87, 0xc5, 0x8c, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x96, 0xc3, 0x7c, 0x20, 0xb5, 0x1c, 0xea, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xe5, 0x50, 0x70, 0xf0, 0x0c, 0x96, 0xd8, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x2d, 0x87, 0x86, 0x81, 0xd4, 0x72, 0x28, 0x39, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x72, 0x68, 0x19, 0x48, 0x2d, 0x87, 0xa2, 0x83, 0xa3, 0x36, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5a, 0x0e, 0x4d, 0x03, 0xa9, 0xe5, 0xd0, 0xb6, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0x0a, 0x3a, 0x6c, 0x55, 0x2b, 0xe0, 0xdf, 0x95, 0xb1, 0xb1, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xef, 0xca, 0x89, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x74, 0x48, 0x07, 0x92, 0xd3, 0x61, 0xbd, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xe9, 0x10, 0x0f, 0x24, 0xa7, 0xc3, 0xe4, 0xa0, 0xf4, 0xa6, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xd3, 0x61, 0x33, 0x90, 0x9c, 0x0e, 0xbb, 0x83, 0x47, 0xe1, 0x85, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xe9, 0x30, 0x1c, 0x48, 0x4e, 0x87, 0xf1, 0xc1, 0x7a, 0xad, 0xe7, 0x56, 0x83, 0x47, 0xd2, 0x89, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0x6f, 0x1a, 0xb2, 0x1b, 0xc0, 0xfb, 0xad, 0x8e, 0xee, 0xec, 0x2d, 0xcd, 0xed, 0x0c, 0x44, 0xae, 0x6c, 0xae, 0x8e, 0x8d, 0x6e, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x91, 0x74, 0x22, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2e, 0x8e, 0x1b, 0xc8, 0x19, 0xc7, 0x6f, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xba, 0x38, 0x24, 0x03, 0xe9, 0xe2, 0x70, 0x65, 0xc3, 0x13, 0xef, 0x1b, 0x3c, 0x42, 0x13, 0x6f, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xba, 0x38, 0x44, 0x03, 0xe9, 0xe2, 0x90, 0x1f, 0x3c, 0xbf, 0x13, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x17, 0x87, 0xc1, 0x40, 0xba, 0x38, 0x2c, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0x13, 0xda, 0xd7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2e, 0x0e, 0xc3, 0x83, 0xf7, 0x5c, 0xc5, 0x1e, 0x84, 0xe9, 0x58, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xbe, 0x38, 0x24, 0x03, 0xf9, 0xe2, 0xb0, 0xdf, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2f, 0x0e, 0xd1, 0x40, 0xbe, 0x38, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xcd, 0xc5, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2f, 0x0e, 0x83, 0x81, 0x7c, 0x71, 0x18, 0x6d, 0xf8, 0x73, 0x69, 0xe0, 0xd3, 0xc8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x17, 0x87, 0xcd, 0xc1, 0x43, 0xc7, 0x62, 0x0f, 0xc2, 0x74, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x17, 0x87, 0xd5, 0x40, 0xbe, 0x38, 0xcc, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0x13, 0xda, 0xd7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2f, 0x0e, 0xeb, 0x83, 0xf7, 0xa5, 0xc5, 0x1e, 0x84, 0xe9, 0x58, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x38, 0x24, 0x03, 0x09, 0xe3, 0x70, 0x68, 0xc3, 0x13, 0xef, 0x1b, 0x3c, 0x70, 0x1e, 0x6f, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x38, 0x44, 0x03, 0x09, 0xe3, 0x90, 0x1f, 0xac, 0x42, 0x09, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xc6, 0x61, 0x30, 0x90, 0x30, 0x0e, 0x3d, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x51, 0xfa, 0x78, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x30, 0x0e, 0xb3, 0x83, 0x57, 0xd8, 0xc5, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x38, 0xec, 0x06, 0x12, 0xc6, 0x61, 0x7b, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xe3, 0x30, 0x1e, 0x48, 0x18, 0x87, 0x9a, 0x83, 0x07, 0xfe, 0xe3, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x31, 0x0e, 0xc9, 0x40, 0xc6, 0x38, 0xbc, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x3f, 0xb7, 0x37, 0x3a, 0x10, 0xb9, 0xb2, 0x30, 0xb2, 0x3c, 0x10, 0xba, 0x37, 0x10, 0xb4, 0x30, 0x37, 0x32, 0xb6, 0x32, 0x10, 0x38, 0xb6, 0xb2, 0xb0, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xe3, 0x10, 0x0d, 0x64, 0x8c, 0x43, 0xbe, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x57, 0x50, 0xbd, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0xe3, 0x30, 0x18, 0xc8, 0x18, 0x87, 0xc5, 0x41, 0x08, 0x3e, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x8c, 0x43, 0x32, 0x90, 0x32, 0x0e, 0xbb, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xe3, 0x10, 0x0d, 0xa4, 0x8c, 0x43, 0x7e, 0xf0, 0xce, 0x30, 0x95, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x65, 0x1c, 0x06, 0x03, 0x29, 0xe3, 0x30, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x8c, 0xc3, 0xe4, 0xe0, 0xc5, 0x94, 0xb1, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0xa7, 0x89, 0xa9, 0x54, 0xad, 0x00, 0x6f, 0xd9, 0xd9, 0x59, 0x4b, 0x98, 0x5b, 0xbe, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xc2, 0xcc, 0xd8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x38, 0x87, 0xc1, 0x40, 0xc2, 0x39, 0x54, 0x6d, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x39, 0x6c, 0x06, 0x12, 0xce, 0x61, 0xbf, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe1, 0x1c, 0x46, 0x03, 0x09, 0xe7, 0xb0, 0xdb, 0x90, 0x01, 0x3f, 0x38, 0xf8, 0xbf, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xe7, 0x30, 0x1c, 0x48, 0x38, 0x87, 0xf9, 0x86, 0x7f, 0xe7, 0x17, 0xa0, 0x2b, 0x3b, 0x3b, 0x6b, 0x89, 0xa9, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x70, 0x0e, 0x05, 0x03, 0x09, 0xe7, 0xd0, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe1, 0x1c, 0x1a, 0x06, 0x12, 0xce, 0xa1, 0x64, 0x43, 0x06, 0xfc, 0xe0, 0x5c, 0x2b, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x9c, 0x43, 0xcb, 0x40, 0xc2, 0x39, 0x14, 0x6d, 0xf8, 0x77, 0x7e, 0x01, 0xaf, 0xec, 0xec, 0xac, 0x3a, 0x9c, 0x62, 0x6b, 0xf0, 0xf4, 0x03, 0xb9, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa7, 0x1f, 0xc8, 0x35, 0xc0, 0x1f, 0x06, 0x07, 0x07, 0x32, 0xf6, 0x26, 0x57, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xea, 0xb8, 0x81, 0x14, 0x78, 0xfc, 0x86, 0x07, 0x25, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x75, 0x48, 0x06, 0xb2, 0xd5, 0x21, 0x3d, 0x78, 0x45, 0x2e, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xab, 0xe3, 0x0e, 0x1e, 0x7c, 0x1b, 0xbb, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0xc1, 0x23, 0xe9, 0x44, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0x49, 0x27, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xec, 0xf8, 0x81, 0x8c, 0x76, 0x48, 0x36, 0x38, 0x40, 0x88, 0x0e, 0xe0, 0x7d, 0x16, 0xc6, 0xc6, 0xd6, 0x12, 0x76, 0x56, 0xe6, 0x46, 0xd7, 0x72, 0x96, 0x66, 0x46, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x36, 0x3b, 0xfe, 0xe0, 0x21, 0xc2, 0xb1, 0x1b, 0x04, 0xed, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xcd, 0x0e, 0xd9, 0x40, 0x36, 0x3b, 0x54, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x66, 0x87, 0x70, 0x20, 0x9b, 0x1d, 0x16, 0x07, 0x4f, 0xf2, 0x53, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xd9, 0x61, 0x32, 0x90, 0xcd, 0x0e, 0x1d, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x75, 0x5c, 0x7c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xcd, 0x0e, 0xc3, 0x83, 0x57, 0x3d, 0xc7, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x36, 0x3b, 0x2c, 0x07, 0xb2, 0xd9, 0x61, 0x7d, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x36, 0x3b, 0xcc, 0x07, 0xb2, 0xd9, 0xa1, 0xe2, 0xe0, 0x8c, 0x84, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xcd, 0x0e, 0x25, 0x03, 0xd9, 0xec, 0xd0, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0x17, 0x16, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xec, 0xd0, 0x72, 0xf0, 0x82, 0xed, 0xd8, 0x83, 0xf7, 0x22, 0x90, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xb3, 0x43, 0x36, 0x90, 0xce, 0x0e, 0xad, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xd9, 0x21, 0x1c, 0x48, 0x67, 0x87, 0xc5, 0xc1, 0x13, 0xf1, 0x14, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x76, 0x98, 0x0c, 0xa4, 0xb3, 0x43, 0xc7, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x1d, 0x17, 0xdf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xb3, 0xc3, 0xf0, 0xe0, 0xcd, 0xe6, 0xb1, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xce, 0x0e, 0xcb, 0x81, 0x74, 0x76, 0x58, 0x1f, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xce, 0x0e, 0xf3, 0x81, 0x74, 0x76, 0xa8, 0x38, 0x38, 0x23, 0xa1, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xb3, 0x43, 0xc9, 0x40, 0x3a, 0x3b, 0x94, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0xa6, 0xaf, 0xc7, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9d, 0x1d, 0x9a, 0x0e, 0xde, 0x27, 0x1f, 0xbb, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xec, 0x50, 0x35, 0x90, 0xce, 0x0e, 0x75, 0x07, 0x65, 0x13, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xce, 0x0e, 0x7d, 0x03, 0xe9, 0xec, 0xd0, 0x79, 0xd0, 0xb6, 0xf5, 0x78, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xec, 0x90, 0x0d, 0xe4, 0xb3, 0x43, 0xcb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x76, 0x08, 0x07, 0xf2, 0xd9, 0x61, 0x76, 0xf0, 0x2e, 0x38, 0xc5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9f, 0x1d, 0x76, 0x03, 0xf9, 0xec, 0x50, 0xb2, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x67, 0x87, 0xe5, 0xc1, 0xcb, 0x07, 0x64, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9f, 0x1d, 0xa6, 0x03, 0xf9, 0xec, 0x30, 0x3f, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x76, 0xd8, 0x0f, 0xe4, 0xb3, 0x43, 0xc7, 0x41, 0x83, 0xe2, 0x81, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xb4, 0x43, 0x36, 0x90, 0xd0, 0x0e, 0x25, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xda, 0x21, 0x1c, 0x48, 0x68, 0x87, 0xd5, 0xc1, 0xc3, 0xcc, 0x14, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x76, 0x98, 0x0d, 0x24, 0xb4, 0x43, 0xc7, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa1, 0x1d, 0x86, 0x07, 0x6f, 0xa7, 0x90, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x76, 0x58, 0x0e, 0x24, 0xb4, 0xc3, 0xfa, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xda, 0x61, 0x3e, 0x90, 0xd0, 0x0e, 0x15, 0x07, 0x0d, 0x8a, 0x07, 0x56, 0xab, 0xc1, 0xab, 0xd2, 0x14, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x5e, 0x95, 0xa6, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xed, 0xf8, 0x81, 0xc4, 0x76, 0x48, 0x36, 0x38, 0x40, 0x88, 0x0e, 0xe0, 0x7d, 0x16, 0xc6, 0xc6, 0xd6, 0x12, 0x76, 0x56, 0xe6, 0x46, 0xd7, 0x32, 0x97, 0x76, 0xe6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x3b, 0xfe, 0xe0, 0x61, 0x22, 0xb2, 0x1b, 0x04, 0xed, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd4, 0x0e, 0xd9, 0x40, 0x52, 0x3b, 0x94, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x6a, 0x87, 0x70, 0x20, 0xa9, 0x1d, 0x56, 0x07, 0x0f, 0x33, 0x53, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xda, 0x61, 0x36, 0x90, 0xd4, 0x0e, 0x1d, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x76, 0x18, 0x1e, 0xbc, 0xf2, 0x45, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xda, 0x61, 0x39, 0x90, 0xd4, 0x0e, 0xeb, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x6a, 0x87, 0xf9, 0x40, 0x52, 0x3b, 0x54, 0x1c, 0x34, 0x28, 0x1e, 0x58, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x56, 0x3b, 0x64, 0x03, 0x59, 0xed, 0xd0, 0xb2, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xab, 0x1d, 0xc2, 0x81, 0xac, 0x76, 0x98, 0x1d, 0xbc, 0x0b, 0x4e, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x6a, 0x87, 0xdd, 0x40, 0x56, 0x3b, 0x94, 0x6c, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xda, 0x61, 0x79, 0xf0, 0x4e, 0x20, 0xd9, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x6a, 0x87, 0xe9, 0x40, 0x56, 0x3b, 0xcc, 0x0f, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xab, 0x1d, 0xf6, 0x03, 0x59, 0xed, 0xd0, 0x71, 0xd0, 0xa0, 0x78, 0x60, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xed, 0x90, 0x0d, 0xa4, 0xb5, 0xc3, 0x70, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x3b, 0x84, 0x03, 0x69, 0xed, 0xb0, 0x38, 0x78, 0x92, 0x9f, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd6, 0x0e, 0x93, 0x81, 0xb4, 0x76, 0xd8, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xd7, 0x85, 0x85, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x3b, 0x6c, 0x0e, 0x1e, 0x1a, 0x25, 0x7b, 0xf0, 0x5e, 0x04, 0x92, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x76, 0xc8, 0x06, 0xf2, 0xda, 0x61, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xaf, 0x1d, 0xc2, 0x81, 0xbc, 0x76, 0x58, 0x1c, 0x3c, 0x11, 0x4f, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x6b, 0x87, 0xc9, 0x40, 0x5e, 0x3b, 0x6c, 0x0e, 0x42, 0xf0, 0xa1, 0x0e, 0xa7, 0xd8, 0x1a, 0xbc, 0x58, 0x5e, 0x64, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xc5, 0xf2, 0x22, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb1, 0x8e, 0x1f, 0x48, 0x59, 0x87, 0xdd, 0x06, 0x07, 0x08, 0xd1, 0x01, 0xbc, 0xcf, 0xc2, 0xd8, 0xd8, 0x5a, 0xc2, 0xce, 0xca, 0xdc, 0xe8, 0x5a, 0xc6, 0xc2, 0xe4, 0xc8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x59, 0xc7, 0x1f, 0x3c, 0x4e, 0x4c, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xd6, 0x21, 0x18, 0x48, 0x59, 0x87, 0x70, 0xc3, 0xdb, 0x3a, 0x1b, 0x3c, 0x87, 0x75, 0xa4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x65, 0x1d, 0xd2, 0x81, 0x94, 0x75, 0x58, 0x1c, 0x2c, 0x35, 0x78, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xd6, 0x61, 0x32, 0x90, 0xb2, 0x0e, 0xb3, 0x83, 0xb7, 0xa7, 0x8a, 0x34, 0x6b, 0x78, 0x9e, 0x64, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xf0, 0x3c, 0xc9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xad, 0xe3, 0x07, 0x52, 0xd8, 0x21, 0xd9, 0xe0, 0x00, 0x21, 0x3a, 0x80, 0xf7, 0x59, 0x18, 0x1b, 0x5b, 0x4b, 0xd8, 0x59, 0x99, 0x1b, 0x5d, 0x8b, 0xdb, 0x1b, 0x5d, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xeb, 0xf8, 0x83, 0x27, 0xd3, 0xc9, 0x6e, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x3a, 0x64, 0x03, 0x59, 0xeb, 0xd0, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6b, 0x1d, 0xc2, 0x81, 0xac, 0x75, 0x98, 0x1c, 0xbc, 0x65, 0xf0, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x5a, 0x87, 0xcd, 0x40, 0xd6, 0x3a, 0x94, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x5a, 0x87, 0xd1, 0x40, 0xd6, 0x3a, 0x2c, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0xd3, 0xd7, 0xe3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb5, 0x0e, 0xab, 0x83, 0xf7, 0x12, 0xca, 0x1e, 0xb4, 0x6d, 0x3d, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xad, 0xc3, 0x74, 0x20, 0x6b, 0x1d, 0x3a, 0x36, 0xfc, 0xb9, 0xb4, 0xe1, 0xfb, 0xf6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x5a, 0x87, 0xfd, 0xc1, 0xb3, 0x15, 0x65, 0x0f, 0xd6, 0x6b, 0x3d, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xad, 0x43, 0xcb, 0x40, 0xd6, 0x3a, 0x54, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x37, 0x45, 0x8e, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x3a, 0xd4, 0x1c, 0xbc, 0x1b, 0x52, 0x76, 0xc3, 0xbf, 0xf3, 0x1b, 0x3c, 0x97, 0x2d, 0xa5, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x75, 0xc8, 0x06, 0xd2, 0xd6, 0x61, 0xbc, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6d, 0x1d, 0xc2, 0x81, 0xb4, 0x75, 0x58, 0x1c, 0xbc, 0x37, 0x88, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x5b, 0x87, 0xc9, 0x40, 0xda, 0x3a, 0x6c, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0xaf, 0x3f, 0x40, 0xac, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x75, 0xc8, 0x06, 0xf2, 0xd6, 0x61, 0xb8, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6f, 0x1d, 0xc2, 0x81, 0xbc, 0x75, 0x58, 0x6c, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xf0, 0xe1, 0xf2, 0xe4, 0xca, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6f, 0x1d, 0x26, 0x03, 0x79, 0xeb, 0xb0, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x27, 0xca, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x5b, 0x87, 0xcd, 0xc1, 0x0b, 0x4e, 0x65, 0x0f, 0x1a, 0x14, 0x0f, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x5c, 0x87, 0x6c, 0x20, 0x73, 0x1d, 0xe6, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xd7, 0x21, 0x1c, 0xc8, 0x5c, 0x87, 0xc5, 0xc1, 0x0b, 0x9c, 0x16, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x75, 0x98, 0x0c, 0x64, 0xae, 0xc3, 0x6e, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0x5f, 0x3e, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xeb, 0xb0, 0x39, 0x78, 0xab, 0xac, 0xec, 0x86, 0x7f, 0xe7, 0x37, 0x78, 0xf3, 0xde, 0x5e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe6, 0x3a, 0x0c, 0x07, 0x32, 0xd7, 0x61, 0xbd, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0xb7, 0x14, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xeb, 0xb0, 0x3c, 0x78, 0x52, 0xae, 0xec, 0xc1, 0xeb, 0xe8, 0xec, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xd7, 0x21, 0x1b, 0x48, 0x5d, 0x87, 0xf9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x75, 0x08, 0x07, 0x52, 0xd7, 0x61, 0x71, 0xf0, 0x4e, 0xb7, 0xc1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x75, 0x1d, 0x26, 0x03, 0xa9, 0xeb, 0xb0, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x2f, 0x68, 0x08, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x75, 0xd8, 0x1c, 0xbc, 0xa0, 0x58, 0xf6, 0xe0, 0xad, 0x7a, 0x21, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x3a, 0x0c, 0x07, 0x52, 0xd7, 0x61, 0xbd, 0xe1, 0xcf, 0xa5, 0x0d, 0xda, 0x2f, 0x1f, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x75, 0x58, 0x1e, 0x3c, 0x65, 0x59, 0xf6, 0xe0, 0x7d, 0xb6, 0xb2, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xeb, 0x90, 0x0d, 0xe4, 0xae, 0xc3, 0x7c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x3a, 0x84, 0x03, 0xb9, 0xeb, 0xb0, 0xd8, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xe0, 0x8f, 0xd5, 0xb1, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xee, 0x3a, 0x4c, 0x06, 0x72, 0xd7, 0x61, 0xb7, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0xd0, 0x10, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xeb, 0xb0, 0x39, 0x78, 0xf2, 0xb5, 0xec, 0xc1, 0x5b, 0xf5, 0x42, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x75, 0x18, 0x0e, 0xe4, 0xae, 0xc3, 0x7a, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0x5f, 0x3e, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xeb, 0xb0, 0x3c, 0x78, 0x7b, 0xb7, 0xec, 0xc1, 0xfb, 0x6c, 0x65, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xd7, 0x21, 0x1b, 0xc8, 0x5e, 0x87, 0x92, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xeb, 0x10, 0x0e, 0x64, 0xaf, 0xc3, 0x62, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x2d, 0x98, 0x72, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xeb, 0x30, 0x19, 0xc8, 0x5e, 0x87, 0xdd, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xf3, 0x40, 0xec, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xaf, 0xc3, 0xe6, 0xe0, 0x71, 0xea, 0xb2, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x37, 0x0f, 0xc4, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbd, 0x0e, 0xc3, 0x81, 0xec, 0x75, 0x58, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0x83, 0xe9, 0xe7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xaf, 0xc3, 0xf2, 0xe0, 0x21, 0xf1, 0xb2, 0x07, 0x67, 0x24, 0xd4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7b, 0x1d, 0xe6, 0x03, 0xd9, 0xeb, 0xd0, 0xb1, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0xb7, 0x14, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xeb, 0xb0, 0x3f, 0x78, 0xc9, 0xbd, 0xec, 0xc1, 0xeb, 0xe8, 0xec, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xd7, 0x21, 0x1b, 0x48, 0x5f, 0x87, 0xe1, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x75, 0x08, 0x07, 0xd2, 0xd7, 0x61, 0xb1, 0x21, 0x03, 0x7e, 0xd0, 0xc4, 0x16, 0xf3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbe, 0x0e, 0x93, 0x81, 0xf4, 0x75, 0xd8, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x37, 0x0f, 0xc4, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfa, 0x3a, 0x6c, 0x0e, 0x1e, 0x34, 0x30, 0x7b, 0xf0, 0x22, 0x77, 0xd9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x75, 0xc8, 0x06, 0xf2, 0xd7, 0x61, 0xb8, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7f, 0x1d, 0xc2, 0x81, 0xfc, 0x75, 0x58, 0x6c, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x98, 0xe8, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xd7, 0x61, 0x32, 0x90, 0xbf, 0x0e, 0xbb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xe6, 0x81, 0xd8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x5f, 0x87, 0xcd, 0xc1, 0x6b, 0x1f, 0x66, 0x0f, 0x5e, 0xe4, 0x2e, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc1, 0x0e, 0xd9, 0x40, 0x06, 0x3b, 0xb4, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x60, 0x87, 0x70, 0x20, 0x83, 0x1d, 0x16, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xdb, 0x41, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc1, 0x0e, 0x93, 0x81, 0x0c, 0x76, 0x98, 0x6e, 0xf8, 0x73, 0x69, 0x80, 0x6f, 0xae, 0x6c, 0x4c, 0xae, 0x8c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x76, 0x58, 0x1e, 0x3c, 0x88, 0x63, 0xf6, 0xf0, 0xc1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc1, 0x0e, 0xdb, 0x81, 0x0c, 0x76, 0x28, 0xd9, 0xf0, 0xef, 0xfc, 0x02, 0xfe, 0x1c, 0x5c, 0x98, 0xdc, 0xc1, 0x3b, 0x91, 0xeb, 0x6a, 0x35, 0x78, 0xcb, 0xaf, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xb6, 0xe3, 0x07, 0x32, 0xe0, 0x21, 0xd9, 0xf0, 0x51, 0xfb, 0x06, 0x01, 0x74, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xed, 0x90, 0x1d, 0x3c, 0xe9, 0x64, 0x76, 0x83, 0xa4, 0x05, 0xa3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x6d, 0xc7, 0x1f, 0x3c, 0xe9, 0x64, 0x76, 0x83, 0xb2, 0x0c, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x6d, 0x87, 0x6c, 0x20, 0xb7, 0x1d, 0xf2, 0x83, 0x57, 0x7f, 0x58, 0xce, 0x32, 0x0b, 0xf0, 0xbf, 0xb9, 0xb5, 0xb0, 0x95, 0x85, 0xd9, 0x95, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xef, 0x0e, 0xc9, 0x40, 0xc2, 0x3b, 0x94, 0x6c, 0xb0, 0xb8, 0x30, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x77, 0x87, 0x74, 0x20, 0xdf, 0x1d, 0x16, 0x07, 0x67, 0x24, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x78, 0x87, 0xe4, 0xe0, 0x3d, 0x34, 0xb3, 0x1b, 0x14, 0x82, 0xa9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf0, 0x0e, 0xd1, 0xc1, 0x7b, 0x68, 0x66, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe1, 0x1d, 0xb2, 0x81, 0x84, 0x77, 0xc8, 0x37, 0xbc, 0xad, 0xb3, 0x41, 0xe0, 0x63, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xbc, 0xc3, 0x60, 0x20, 0xe1, 0x1d, 0x46, 0x07, 0x8f, 0x41, 0x1b, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xde, 0x61, 0x35, 0x90, 0xf0, 0x0e, 0x1d, 0x1b, 0x04, 0xd0, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xbc, 0xc3, 0xec, 0xe0, 0x75, 0x45, 0xb3, 0x1b, 0x24, 0x2d, 0x18, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x3b, 0x2c, 0x07, 0x12, 0xde, 0xa1, 0x62, 0xc3, 0x25, 0xb5, 0xc6, 0xe3, 0x01, 0xde, 0x37, 0xb7, 0x96, 0x34, 0xb7, 0x34, 0xba, 0x5a, 0x01, 0xde, 0x37, 0xb7, 0x16, 0xb3, 0xb0, 0x34, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xdf, 0x21, 0x19, 0x48, 0x80, 0x87, 0x92, 0x0d, 0x16, 0x17, 0x26, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xef, 0x90, 0x0e, 0xe4, 0xbf, 0xc3, 0x70, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfe, 0x3b, 0xc4, 0x03, 0xf9, 0xef, 0x30, 0x39, 0x58, 0xaf, 0xf5, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xbf, 0xc3, 0x66, 0x20, 0xff, 0x1d, 0x76, 0x07, 0x0d, 0x8a, 0x07, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xf0, 0x90, 0x1c, 0x3c, 0x0a, 0x6a, 0x76, 0x83, 0x42, 0x30, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xe0, 0x21, 0x3a, 0x78, 0x14, 0xd4, 0xec, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xc0, 0x43, 0x36, 0x90, 0x00, 0x0f, 0xf9, 0xc1, 0xd3, 0x7f, 0x66, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x78, 0x18, 0x0c, 0x24, 0xc0, 0xc3, 0xe8, 0xe0, 0x31, 0x68, 0x23, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x02, 0x3c, 0xac, 0x06, 0x12, 0xe0, 0xa1, 0x63, 0x83, 0x00, 0x3a, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x78, 0x98, 0x1d, 0x3c, 0xd9, 0x6c, 0x76, 0x83, 0xa4, 0x05, 0xa3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x80, 0x87, 0xe5, 0x40, 0x02, 0x3c, 0x54, 0x1c, 0x3c, 0x73, 0x69, 0xb6, 0x15, 0xe0, 0x7d, 0x73, 0x6b, 0x09, 0x93, 0xb3, 0x7b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf7, 0x1d, 0x92, 0x81, 0xe4, 0x77, 0x28, 0xd9, 0x60, 0x71, 0x61, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfb, 0x0e, 0xe9, 0x40, 0xee, 0x3b, 0xac, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xbe, 0x43, 0x3c, 0x90, 0xfb, 0x0e, 0x93, 0x83, 0x77, 0x5b, 0x8a, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xef, 0xb0, 0x19, 0xc8, 0x7d, 0x87, 0xf1, 0xc1, 0xd3, 0x21, 0x0f, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x77, 0x48, 0x0e, 0x1e, 0x06, 0x37, 0xbb, 0x41, 0x21, 0x98, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xef, 0x10, 0x1d, 0x3c, 0x0c, 0x6e, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xdf, 0x21, 0x1b, 0x48, 0x7e, 0x87, 0xfc, 0xe0, 0xe9, 0x3f, 0xb3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf2, 0x3b, 0x0c, 0x06, 0x92, 0xdf, 0x61, 0x74, 0xf0, 0x18, 0xb4, 0x91, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf9, 0x1d, 0x56, 0x03, 0xc9, 0xef, 0xd0, 0xb1, 0x41, 0x00, 0x9d, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf2, 0x3b, 0xcc, 0x0e, 0x5e, 0x6e, 0x38, 0xbb, 0x41, 0xd2, 0x82, 0xd1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xbf, 0xc3, 0x72, 0x20, 0xf9, 0x1d, 0x2a, 0x0e, 0x9e, 0xb9, 0x34, 0xdb, 0xe1, 0x14, 0x5b, 0x83, 0x27, 0x31, 0xcd, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x76, 0x3b, 0x24, 0x03, 0xd9, 0xed, 0x50, 0xb2, 0x41, 0x21, 0x98, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xed, 0x10, 0x1d, 0xbc, 0x08, 0x72, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xdb, 0x21, 0x1b, 0xc8, 0x6e, 0x87, 0xfc, 0xe0, 0xe9, 0x3f, 0xb3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x76, 0x3b, 0x0c, 0x06, 0xb2, 0xdb, 0x61, 0x74, 0xf0, 0x18, 0xb4, 0x91, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xbb, 0x1d, 0x56, 0x03, 0xd9, 0xed, 0xd0, 0xb1, 0x41, 0x00, 0x9d, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x76, 0x3b, 0xcc, 0x0e, 0x5e, 0xb8, 0x39, 0xbb, 0x41, 0xd2, 0x82, 0xd1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xb7, 0xc3, 0x72, 0x20, 0xbb, 0x1d, 0x2a, 0x0e, 0x9e, 0xb9, 0x34, 0xdb, 0xe1, 0x14, 0x5b, 0x80, 0xf7, 0xcd, 0xad, 0x05, 0xae, 0xac, 0x6c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x77, 0x48, 0x06, 0x92, 0xde, 0x61, 0xbc, 0xc1, 0xe2, 0xc2, 0xa4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe7, 0x1d, 0xd2, 0x81, 0x9c, 0x77, 0x58, 0x1c, 0x9c, 0x91, 0x50, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe9, 0x1d, 0x92, 0x83, 0xa7, 0x95, 0xce, 0x6e, 0x50, 0x08, 0xa6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd2, 0x3b, 0x44, 0x07, 0x4f, 0x2b, 0x9d, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x77, 0xc8, 0x06, 0x92, 0xde, 0x21, 0x3f, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x77, 0x18, 0x0c, 0x24, 0xbd, 0xc3, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xde, 0x61, 0x31, 0x90, 0xf4, 0x0e, 0xab, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x7a, 0x87, 0xd9, 0x40, 0xd2, 0x3b, 0x4c, 0x0f, 0xde, 0x8b, 0x40, 0x52, 0x2b, 0xc0, 0xff, 0xe6, 0xd6, 0x12, 0x76, 0x56, 0xe6, 0x46, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xde, 0x3b, 0x24, 0x03, 0x89, 0xef, 0x50, 0xb2, 0xc1, 0xe2, 0xc2, 0xa4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xef, 0x1d, 0xd2, 0x81, 0xbc, 0x77, 0x18, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x7b, 0x87, 0x78, 0x20, 0xef, 0x1d, 0x26, 0x07, 0xef, 0xb6, 0x14, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xde, 0x61, 0x33, 0x90, 0xf7, 0x0e, 0xbb, 0x0d, 0xff, 0xce, 0x6f, 0xf0, 0xa6, 0x34, 0xc5, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x77, 0x48, 0x0e, 0x5e, 0xd0, 0x3b, 0xbb, 0x41, 0x21, 0x98, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xef, 0x10, 0x1d, 0xbc, 0xa0, 0x77, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xdf, 0x21, 0x1b, 0x48, 0x7c, 0x87, 0xfc, 0xe0, 0xe9, 0x3f, 0xb3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe2, 0x3b, 0x0c, 0x06, 0x12, 0xdf, 0x61, 0x74, 0xf0, 0x18, 0xb4, 0x91, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf1, 0x1d, 0x56, 0x03, 0x89, 0xef, 0xd0, 0xb1, 0x41, 0x00, 0x9d, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe2, 0x3b, 0xcc, 0x0e, 0x5e, 0x40, 0x3d, 0xbb, 0x41, 0xd2, 0x82, 0xd1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xbe, 0xc3, 0x72, 0x20, 0xf1, 0x1d, 0x2a, 0x0e, 0x9e, 0xb9, 0x34, 0xdb, 0x0a, 0xf0, 0xbe, 0xb9, 0xb5, 0xc0, 0xbd, 0xad, 0x95, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe7, 0x0e, 0xc9, 0x40, 0xa2, 0x3b, 0x94, 0x6c, 0xb0, 0xb8, 0x30, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x73, 0x87, 0x74, 0x20, 0xcf, 0x1d, 0x86, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xdc, 0x21, 0x1e, 0xc8, 0x73, 0x87, 0xc9, 0xc1, 0xfb, 0x36, 0x44, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x77, 0xd8, 0x0c, 0xe4, 0xb9, 0xc3, 0xee, 0xa0, 0xd9, 0xed, 0xa8, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd1, 0x1d, 0x92, 0x83, 0x77, 0x76, 0xcf, 0x6e, 0x50, 0x08, 0xa6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa2, 0x3b, 0x44, 0x07, 0xef, 0xec, 0x9e, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x77, 0xc8, 0x06, 0x12, 0xdd, 0x21, 0x3f, 0x78, 0xfa, 0xcf, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe8, 0x0e, 0x83, 0x81, 0x44, 0x77, 0x18, 0x1d, 0x3c, 0x06, 0x6d, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x74, 0x87, 0xd5, 0x40, 0xa2, 0x3b, 0x74, 0x6c, 0x10, 0x40, 0x67, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe8, 0x0e, 0xb3, 0x83, 0x77, 0xd0, 0xcf, 0x6e, 0x90, 0xb4, 0x60, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xee, 0xb0, 0x1c, 0x48, 0x74, 0x87, 0x8a, 0x83, 0x67, 0x2e, 0xcd, 0x76, 0x38, 0xc5, 0x16, 0xe0, 0x7d, 0x73, 0x6b, 0x61, 0x7b, 0x0b, 0x23, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc7, 0x1d, 0x92, 0x81, 0x24, 0x77, 0x28, 0xd9, 0x60, 0x71, 0x61, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe3, 0x0e, 0xe9, 0x40, 0x8e, 0x3b, 0x6c, 0x37, 0xfc, 0xb9, 0x34, 0x80, 0xc7, 0x1b, 0x1b, 0x59, 0xcb, 0x1c, 0x5d, 0x18, 0x5d, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0xee, 0xb0, 0x3b, 0x78, 0x37, 0x00, 0xed, 0x41, 0xb3, 0xdb, 0x51, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe4, 0x0e, 0xc9, 0xc1, 0x03, 0xfc, 0x67, 0x37, 0x28, 0x04, 0x53, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc9, 0x1d, 0xa2, 0x83, 0x07, 0xf8, 0xcf, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x92, 0x3b, 0x64, 0x03, 0x49, 0xee, 0x90, 0x1f, 0x3c, 0xfd, 0x67, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x72, 0x87, 0xc1, 0x40, 0x92, 0x3b, 0x8c, 0x0e, 0x1e, 0x83, 0x36, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xb9, 0xc3, 0x6a, 0x20, 0xc9, 0x1d, 0x3a, 0x36, 0x08, 0xa0, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x72, 0x87, 0xd9, 0xc1, 0xf3, 0x25, 0x68, 0x37, 0x48, 0x5a, 0x30, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x77, 0x58, 0x0e, 0x24, 0xb9, 0x43, 0xc5, 0xc1, 0x33, 0x97, 0x66, 0x5b, 0x01, 0xfe, 0x37, 0xb7, 0x96, 0xbb, 0x30, 0xba, 0x31, 0x74, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xdd, 0x21, 0x19, 0x48, 0x76, 0x87, 0x92, 0x0d, 0x16, 0x17, 0x26, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xee, 0x90, 0x0e, 0xe4, 0xba, 0xc3, 0xe2, 0xe0, 0x8c, 0x84, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xee, 0x90, 0x1c, 0x3c, 0x96, 0x83, 0x76, 0x83, 0x42, 0x30, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xdd, 0x21, 0x3a, 0x78, 0x2c, 0x07, 0xed, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xbb, 0x43, 0x36, 0x90, 0xec, 0x0e, 0xf9, 0xc1, 0xd3, 0x7f, 0x66, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x77, 0x18, 0x0c, 0x24, 0xbb, 0xc3, 0xe8, 0xe0, 0x31, 0x68, 0x23, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x3b, 0xac, 0x06, 0x92, 0xdd, 0xa1, 0x63, 0x83, 0x00, 0x3a, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x77, 0x98, 0x1d, 0x3c, 0xb1, 0x85, 0x76, 0x83, 0xa4, 0x05, 0xa3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x76, 0x87, 0xe5, 0x40, 0xb2, 0x3b, 0x54, 0x1c, 0x3c, 0x73, 0x69, 0xb6, 0xc3, 0x29, 0xb6, 0x00, 0xef, 0x9b, 0x5b, 0xcb, 0x5c, 0x98, 0x5d, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xee, 0x90, 0x0c, 0x24, 0xb8, 0x43, 0xbc, 0x41, 0x21, 0x98, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xee, 0x10, 0x1d, 0xbc, 0xed, 0x86, 0xf6, 0xa0, 0xd9, 0xed, 0xa8, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0x9b, 0x35, 0xbc, 0x75, 0xbf, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0x78, 0xeb, 0x7e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xd5, 0x21, 0x1f, 0xc8, 0x57, 0x87, 0xfd, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xab, 0xc3, 0x60, 0x20, 0x5f, 0x1d, 0x46, 0x07, 0x4f, 0xff, 0x99, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xd5, 0x61, 0x35, 0x90, 0xaf, 0x0e, 0xcb, 0x83, 0xc7, 0xa0, 0x8d, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xea, 0x30, 0x1d, 0xc8, 0x57, 0x87, 0xf9, 0xc1, 0x63, 0x7d, 0xed, 0x3a, 0x9c, 0x62, 0x6b, 0xf0, 0xa6, 0xc8, 0x91, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x37, 0x45, 0x8e, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x3b, 0x7e, 0x20, 0x95, 0x1d, 0x92, 0x0d, 0x0e, 0x10, 0xa2, 0x03, 0x78, 0x9f, 0x85, 0xb1, 0xb1, 0xb5, 0x84, 0x9d, 0x95, 0xb9, 0xd1, 0xb5, 0xd0, 0x85, 0xcd, 0xad, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc5, 0x8e, 0x3f, 0x78, 0x46, 0x13, 0xed, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xb1, 0x43, 0x36, 0x90, 0xc5, 0x0e, 0xcb, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0xec, 0x10, 0x0e, 0x64, 0xb1, 0xc3, 0xe4, 0xe0, 0x15, 0xfa, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x16, 0x3b, 0x6c, 0x06, 0xb2, 0xd8, 0x61, 0xb8, 0xe1, 0xcf, 0xa5, 0x0d, 0x0e, 0xa6, 0x9f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc5, 0x0e, 0xa3, 0x83, 0x27, 0x69, 0xd1, 0x1e, 0x9c, 0x91, 0x50, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xd8, 0x21, 0x1b, 0x48, 0x63, 0x87, 0x8a, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xec, 0x10, 0x0e, 0xa4, 0xb1, 0xc3, 0x6a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x01, 0xff, 0x5d, 0x18, 0xdd, 0x18, 0x5a, 0x4b, 0xd8, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xb1, 0xc3, 0x6c, 0x20, 0x8d, 0x1d, 0xb6, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x14, 0x79, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xec, 0xb0, 0x3b, 0x78, 0xd6, 0x19, 0xed, 0xc1, 0xfb, 0x36, 0x44, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x76, 0x18, 0x0f, 0xa4, 0xb1, 0x43, 0xc3, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x98, 0x7e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1a, 0x3b, 0xac, 0x0f, 0xde, 0xd6, 0x46, 0x7b, 0x70, 0x46, 0x42, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x63, 0x87, 0x6c, 0x20, 0x8f, 0x1d, 0x56, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xd8, 0x21, 0x1c, 0xc8, 0x63, 0x87, 0xc9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x02, 0x1e, 0xb6, 0xb2, 0x30, 0xbb, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x63, 0x87, 0xcd, 0x40, 0x1e, 0x3b, 0x8c, 0x0e, 0x42, 0xf0, 0xa1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x91, 0x1d, 0xb2, 0x81, 0x44, 0x76, 0x18, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x64, 0x87, 0x70, 0x20, 0x91, 0x1d, 0x16, 0x07, 0x4f, 0x44, 0xc6, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xd9, 0x61, 0x32, 0x90, 0xc8, 0x0e, 0xbb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xba, 0xb0, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x64, 0x87, 0xcd, 0xc1, 0xeb, 0x04, 0x69, 0x0f, 0xde, 0x8b, 0x40, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc9, 0x0e, 0xd9, 0x40, 0x26, 0x3b, 0x34, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x64, 0x87, 0x70, 0x20, 0x93, 0x1d, 0x46, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0x78, 0xe1, 0xde, 0xd6, 0xca, 0x5a, 0xc2, 0xe6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x93, 0x1d, 0x56, 0x03, 0x99, 0xec, 0x30, 0xdd, 0xf0, 0xe7, 0xd2, 0x06, 0xa7, 0xc8, 0xd3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x64, 0x87, 0xd9, 0xc1, 0x0b, 0x1f, 0x69, 0x0f, 0xde, 0xb7, 0x21, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xb2, 0xc3, 0x76, 0x20, 0x93, 0x1d, 0x0a, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xeb, 0xc2, 0x42, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x93, 0x1d, 0xc6, 0x07, 0xcf, 0xac, 0xa4, 0x3d, 0x78, 0x2f, 0x02, 0x49, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0xd6, 0xe0, 0xcd, 0x03, 0xb1, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x6f, 0x1e, 0x88, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x75, 0x48, 0x07, 0x12, 0xd5, 0x61, 0x71, 0xf0, 0x3e, 0x5b, 0xd9, 0xc3, 0x29, 0xb6, 0x06, 0x0f, 0x39, 0xae, 0xdc, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xc8, 0x71, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x91, 0x43, 0x3a, 0x90, 0x46, 0x0e, 0x57, 0x36, 0x3c, 0xf1, 0xbe, 0xc1, 0x03, 0x56, 0x61, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8d, 0x1c, 0xe2, 0x81, 0x34, 0x72, 0x58, 0x1c, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1a, 0x39, 0x4c, 0x06, 0xd2, 0xc8, 0x61, 0x76, 0xf0, 0xf4, 0x74, 0x8f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8d, 0x1c, 0x76, 0x03, 0x69, 0xe4, 0xd0, 0xb3, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xe4, 0x30, 0x1c, 0x48, 0x23, 0x87, 0xf1, 0x41, 0xe9, 0x4d, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x91, 0xc3, 0x7a, 0x20, 0x8d, 0x1c, 0x1a, 0x0e, 0xda, 0xb6, 0x1e, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xc8, 0xa1, 0x62, 0x20, 0x8d, 0x1c, 0x6a, 0x0e, 0xce, 0x48, 0xa8, 0x75, 0x38, 0xc5, 0xd6, 0xe0, 0x79, 0x7d, 0x2d, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xcf, 0xeb, 0x6b, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x74, 0x48, 0x07, 0xb2, 0xd2, 0xe1, 0xc4, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x2f, 0xdb, 0x5b, 0x18, 0xd9, 0x5b, 0x1d, 0xdd, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xa5, 0x43, 0x3c, 0x90, 0x95, 0x0e, 0x93, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xd2, 0x61, 0x33, 0x90, 0x95, 0x0e, 0x3d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xd2, 0x61, 0x34, 0x90, 0x95, 0x0e, 0xcb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x9e, 0xc6, 0xbf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4a, 0x87, 0xd5, 0xc1, 0xab, 0x8a, 0x69, 0x37, 0xfc, 0x3b, 0xbf, 0xc1, 0x6b, 0x1a, 0xff, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xd2, 0x61, 0x3a, 0x90, 0x95, 0x0e, 0xfb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x92, 0xa3, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4a, 0x87, 0xed, 0xc1, 0xeb, 0x97, 0x69, 0x0f, 0x9e, 0x6a, 0x14, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xa5, 0x43, 0xc1, 0x40, 0x56, 0x3a, 0xd4, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0xa7, 0x1f, 0xc8, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x56, 0x3a, 0x34, 0x1c, 0xbc, 0x43, 0x9a, 0x76, 0xc3, 0xbf, 0xf3, 0x1b, 0xbc, 0x41, 0x4d, 0xb1, 0x5a, 0x0d, 0x1e, 0xb9, 0x87, 0xb1, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xc8, 0x3d, 0x8c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x53, 0x87, 0x74, 0x20, 0x4f, 0x1d, 0x46, 0x1b, 0x04, 0x9b, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa7, 0x0e, 0xf9, 0x40, 0x9e, 0x3a, 0x6c, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0x78, 0x6f, 0x64, 0x64, 0x2b, 0xe0, 0xcf, 0x8d, 0x85, 0xc9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0xde, 0xf9, 0x4d, 0xdb, 0x00, 0x5e, 0x6f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x20, 0x64, 0x75, 0x63, 0x74, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xef, 0xfc, 0xa6, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x74, 0xdc, 0x40, 0x6a, 0x3a, 0x7e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5e, 0x3a, 0x24, 0x03, 0x79, 0xe9, 0x70, 0x65, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x4f, 0xb1, 0x37, 0xb7, 0x32, 0x90, 0xb9, 0xb2, 0xb8, 0xba, 0x32, 0xb7, 0xb1, 0xb2, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5e, 0x3a, 0x64, 0x03, 0x79, 0xe9, 0x10, 0x1f, 0x94, 0x59, 0xba, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x62, 0x3a, 0x24, 0x03, 0x89, 0xe9, 0x70, 0x62, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x57, 0x2c, 0x0f, 0x84, 0xac, 0x6e, 0x8c, 0x6e, 0xc3, 0x9f, 0x4b, 0x83, 0xc7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x98, 0x0e, 0xd9, 0x40, 0x62, 0x3a, 0x4c, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x31, 0x1d, 0xc2, 0x81, 0xc4, 0x74, 0xc8, 0x0f, 0x4a, 0xc4, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x31, 0x1d, 0x06, 0x03, 0x89, 0xe9, 0x30, 0x3a, 0x78, 0x7a, 0xba, 0xc7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x98, 0x0e, 0xab, 0x81, 0xc4, 0x74, 0x58, 0x1e, 0x3c, 0x33, 0x27, 0xa4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x33, 0x1d, 0x92, 0x81, 0xcc, 0x74, 0x38, 0xb1, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xc0, 0x2b, 0x96, 0x07, 0x22, 0xf6, 0xe6, 0x56, 0xb6, 0xe1, 0xcf, 0xa5, 0xc1, 0xe5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4c, 0x87, 0x6c, 0x20, 0x33, 0x1d, 0xa6, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x99, 0x0e, 0xe1, 0x40, 0x66, 0x3a, 0xe4, 0x07, 0x25, 0x62, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x99, 0x0e, 0x83, 0x81, 0xcc, 0x74, 0x18, 0x1d, 0x3c, 0x33, 0x27, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4c, 0x87, 0xd5, 0x40, 0x66, 0x3a, 0x2c, 0x0f, 0x9e, 0x9e, 0xee, 0x51, 0x87, 0x53, 0xac, 0x35, 0x78, 0x4f, 0xe3, 0xdf, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x7b, 0x1a, 0xff, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x27, 0x1d, 0xd2, 0x81, 0x9c, 0x74, 0x38, 0xb3, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xf7, 0x5c, 0x99, 0x9c, 0x5d, 0x99, 0x1c, 0x48, 0x1a, 0x59, 0x99, 0x1b, 0x5d, 0x1a, 0x5d, 0xde, 0xc1, 0x7a, 0xad, 0xe7, 0xc3, 0x29, 0xb6, 0x06, 0x4f, 0x13, 0x53, 0xd9, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x9a, 0x98, 0xca, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xa8, 0xe3, 0x06, 0x92, 0xd4, 0xf1, 0x1b, 0x04, 0xed, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa2, 0x0e, 0xc9, 0x40, 0x8a, 0x3a, 0x14, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x51, 0x87, 0x68, 0x20, 0x45, 0x1d, 0x36, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0xf8, 0xe5, 0xc2, 0xee, 0x5a, 0xcc, 0xc2, 0xc6, 0xe8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x45, 0x1d, 0x46, 0x03, 0x29, 0xea, 0xb0, 0xdc, 0xf0, 0xe7, 0xd2, 0x06, 0xa7, 0xc8, 0xd3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x51, 0x87, 0xd5, 0xc1, 0xcb, 0x4d, 0x6a, 0x0f, 0xde, 0xb7, 0x21, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xa8, 0xc3, 0x74, 0x20, 0x45, 0x1d, 0xf6, 0x1b, 0xfe, 0x5c, 0xda, 0x30, 0x9d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa2, 0x0e, 0xdb, 0x83, 0xe7, 0xb3, 0xd4, 0x1e, 0x2c, 0x87, 0xc5, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x51, 0x87, 0x64, 0x20, 0x47, 0x1d, 0x36, 0x1b, 0xfe, 0x9d, 0xdf, 0xe0, 0x4d, 0x69, 0x8a, 0x07, 0x2f, 0xb3, 0xa6, 0x6d, 0x35, 0x78, 0x8d, 0x42, 0xec, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x6b, 0x14, 0x62, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa9, 0x1c, 0xe2, 0x81, 0xa4, 0x72, 0x68, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x54, 0x0e, 0xf9, 0x40, 0x52, 0x39, 0xcc, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x00, 0xda, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x72, 0xd8, 0x1c, 0xbc, 0x6f, 0xa7, 0xf6, 0xa0, 0xcc, 0xd2, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xca, 0x61, 0x37, 0x90, 0x54, 0x0e, 0xf3, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x69, 0x64, 0xf8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x95, 0xc3, 0xf6, 0xe0, 0x75, 0x41, 0xb5, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x54, 0x0e, 0xfb, 0x81, 0xa4, 0x72, 0x28, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0x45, 0xeb, 0xc9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x95, 0x43, 0xc7, 0xc1, 0x03, 0x8f, 0x6a, 0x0f, 0x3f, 0xd4, 0xb4, 0x02, 0xfe, 0x5c, 0xdd, 0xdc, 0xbc, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xe6, 0xa5, 0xda, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4d, 0x87, 0x74, 0x20, 0x37, 0x1d, 0xae, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x39, 0xf6, 0xe6, 0x66, 0x96, 0x76, 0x06, 0x22, 0x57, 0x06, 0xf7, 0x26, 0x47, 0xb7, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xe9, 0x10, 0x0f, 0xe4, 0xa6, 0xc3, 0xe4, 0xe0, 0x58, 0x34, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0xa6, 0xc3, 0x66, 0x20, 0x37, 0x1d, 0x76, 0x07, 0x4f, 0x49, 0xa6, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xd3, 0x61, 0x38, 0x90, 0x9b, 0x0e, 0xe3, 0x83, 0xf3, 0xe6, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9b, 0x0e, 0xeb, 0x81, 0xdc, 0x74, 0x28, 0x38, 0x38, 0xf2, 0xb5, 0x76, 0x38, 0xc5, 0x16, 0xf0, 0xc5, 0xde, 0xc2, 0xe4, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x67, 0x7c, 0xd5, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x39, 0xa4, 0x03, 0x89, 0xe4, 0xf0, 0x66, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xff, 0x30, 0x37, 0x32, 0x10, 0x3a, 0xb4, 0xb2, 0x34, 0x39, 0x10, 0xb7, 0x37, 0xb7, 0xb1, 0xb2, 0xb9, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x24, 0x87, 0x78, 0x20, 0x91, 0x1c, 0x16, 0x07, 0x25, 0x62, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x48, 0x0e, 0x93, 0x81, 0x44, 0x72, 0x68, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x48, 0x0e, 0x9b, 0x81, 0x44, 0x72, 0x18, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0x57, 0x54, 0x8a, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x39, 0x8c, 0x0e, 0x1e, 0xe6, 0x56, 0x7b, 0xf0, 0x6e, 0x4b, 0x91, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x91, 0x1c, 0x96, 0x03, 0x89, 0xe4, 0x30, 0xdf, 0xf0, 0xe7, 0xd2, 0x06, 0x4d, 0x5f, 0x8f, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x39, 0x4c, 0x0f, 0x5e, 0x48, 0x57, 0x7b, 0xd0, 0xb6, 0xf5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x48, 0x0e, 0xfb, 0x81, 0x44, 0x72, 0x28, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0x27, 0xa0, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x24, 0x87, 0x82, 0x83, 0x87, 0xea, 0xd5, 0x1e, 0xac, 0xd7, 0x7a, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x24, 0x87, 0x9a, 0x81, 0x44, 0x72, 0x68, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x4f, 0xa9, 0x57, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x72, 0x28, 0x3b, 0x78, 0x30, 0x60, 0xed, 0xe1, 0x87, 0x9a, 0x56, 0x83, 0xe7, 0x9d, 0xc6, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x3c, 0xef, 0x34, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xce, 0x71, 0x03, 0x19, 0xe8, 0x90, 0x6d, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xca, 0x39, 0x24, 0x03, 0x29, 0xe7, 0xd0, 0xb1, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe5, 0x1c, 0xa2, 0x81, 0x94, 0x73, 0xc8, 0x0f, 0x1e, 0xfe, 0x12, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x9c, 0xc3, 0x60, 0x20, 0xe5, 0x1c, 0x2a, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xcd, 0xad, 0xe5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x72, 0x0e, 0xa3, 0x83, 0x67, 0x44, 0xd6, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xca, 0x39, 0xac, 0x06, 0x52, 0xce, 0x61, 0x78, 0x50, 0x22, 0xd6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0xe7, 0xb0, 0x1c, 0x48, 0x39, 0x87, 0xf5, 0xc1, 0xfb, 0x6c, 0x65, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x73, 0x98, 0x0f, 0xa4, 0x9c, 0x43, 0xc3, 0x41, 0x99, 0xa5, 0x5b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xce, 0x39, 0x6e, 0x20, 0x03, 0x1d, 0xbf, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe7, 0x1c, 0x92, 0x81, 0x9c, 0x73, 0x88, 0x0f, 0x9e, 0x07, 0xf8, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x9d, 0x43, 0x32, 0x90, 0x74, 0x0e, 0xd3, 0x0d, 0x7f, 0x2e, 0x0d, 0xe0, 0x37, 0xf6, 0xe6, 0x46, 0x27, 0xf7, 0xc6, 0xd6, 0x42, 0x56, 0x37, 0x46, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd2, 0x39, 0xcc, 0x0e, 0x5e, 0x51, 0x5a, 0x7b, 0xf0, 0xf4, 0x74, 0x8f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xeb, 0x1c, 0x92, 0x81, 0xac, 0x73, 0x58, 0x6d, 0xf8, 0x73, 0x69, 0x00, 0x0f, 0xb9, 0x3a, 0xb7, 0x16, 0xb7, 0x37, 0xb7, 0xb1, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xce, 0x61, 0x73, 0xf0, 0x30, 0xd6, 0xda, 0x83, 0xf3, 0xec, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x76, 0x0e, 0xc9, 0x40, 0xda, 0x39, 0x8c, 0x36, 0xfc, 0xb9, 0x34, 0x80, 0xc7, 0x5c, 0x9d, 0x58, 0x8b, 0xdb, 0x9b, 0xdb, 0x58, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xe7, 0xb0, 0x39, 0x78, 0xcf, 0x6c, 0xed, 0xe1, 0x87, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xef, 0x1c, 0x92, 0x81, 0xbc, 0x73, 0xc8, 0x37, 0xfc, 0xb9, 0x34, 0xc0, 0x33, 0x47, 0x17, 0x46, 0x37, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xde, 0x39, 0x44, 0x07, 0x0f, 0xd0, 0xad, 0xdd, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0x5f, 0xb7, 0xb6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x73, 0x48, 0x06, 0x12, 0xcf, 0x21, 0xde, 0xf0, 0xe7, 0xd2, 0x06, 0x0f, 0x39, 0xae, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x73, 0x88, 0x0e, 0x9e, 0x0e, 0x5c, 0x7b, 0xf0, 0x4c, 0x58, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf3, 0x1c, 0x92, 0x81, 0xcc, 0x73, 0x88, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x03, 0x55, 0x82, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf3, 0x1c, 0xa2, 0x83, 0x07, 0x1c, 0xd7, 0x1e, 0x3c, 0xe6, 0x14, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x3d, 0x87, 0x64, 0x20, 0xf5, 0x1c, 0xe2, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x8c, 0xaf, 0xda, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x3d, 0x87, 0xe8, 0xe0, 0x19, 0xcd, 0xb5, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x67, 0x7c, 0xd5, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7b, 0x0e, 0xc9, 0x40, 0xee, 0x39, 0xe4, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xe1, 0xc2, 0xce, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x3d, 0x87, 0xf8, 0xe0, 0xbd, 0xd3, 0xb5, 0x07, 0x21, 0xf8, 0xb0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x9f, 0x43, 0x32, 0x90, 0x7c, 0x0e, 0xe3, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xee, 0x00, 0xda, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x3e, 0x87, 0xcd, 0xc1, 0x6b, 0xb3, 0x6b, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x9f, 0xc3, 0x68, 0x20, 0xf9, 0x1c, 0x66, 0x07, 0x61, 0x04, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x9f, 0xc3, 0x6e, 0x20, 0xf9, 0x1c, 0xb6, 0x07, 0xcd, 0x6e, 0x47, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x9f, 0x43, 0x32, 0x90, 0x7d, 0x0e, 0xf1, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xc9, 0x51, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x9f, 0x43, 0x74, 0xf0, 0xaa, 0xf2, 0xda, 0x83, 0xa7, 0x1a, 0x85, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xe7, 0x90, 0x0c, 0xa4, 0x9f, 0xc3, 0x7c, 0xc3, 0x9f, 0x4b, 0x03, 0x3c, 0x6d, 0x61, 0x72, 0x6b, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x9f, 0x43, 0x7e, 0xf0, 0xb6, 0xf5, 0xda, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x3f, 0x87, 0xc1, 0x40, 0xfa, 0x39, 0x6c, 0x0e, 0x4a, 0xc4, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xfd, 0x1c, 0x46, 0x03, 0xe9, 0xe7, 0x30, 0x3c, 0x78, 0x7a, 0xba, 0xc7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7e, 0x0e, 0xcb, 0x81, 0xf4, 0x73, 0x58, 0x1f, 0xbc, 0x6f, 0x43, 0xa4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xff, 0x1c, 0x92, 0x81, 0xfc, 0x73, 0x18, 0x6f, 0xf8, 0x73, 0x69, 0xc0, 0x9b, 0x5b, 0xcb, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xff, 0x1c, 0xd2, 0x83, 0x07, 0xe9, 0xd7, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfe, 0x39, 0xc4, 0x03, 0xf9, 0xe7, 0xb0, 0x38, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x73, 0x98, 0x0c, 0xe4, 0x9f, 0xc3, 0xec, 0xe0, 0x7d, 0xb6, 0xb2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfe, 0x39, 0xec, 0x06, 0xf2, 0xcf, 0x61, 0x7b, 0xf0, 0xb0, 0x98, 0xd1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x74, 0x48, 0x06, 0x12, 0xd0, 0xa1, 0x61, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x5a, 0x99, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0xe8, 0x90, 0x1e, 0x3c, 0x19, 0xc1, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xd0, 0x21, 0x1e, 0x48, 0x40, 0x87, 0xc5, 0xc1, 0xbb, 0xa9, 0x26, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x74, 0x98, 0x0c, 0x24, 0xa0, 0xc3, 0xf6, 0xe0, 0x31, 0x23, 0xb3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x02, 0x3a, 0x8c, 0x07, 0x12, 0xd0, 0xa1, 0xe0, 0xe0, 0xdd, 0x96, 0x22, 0xd5, 0x0a, 0xf8, 0x67, 0x69, 0x6c, 0xec, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xab, 0x2b, 0x6c, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x29, 0x1d, 0xd2, 0x81, 0xa4, 0x74, 0x38, 0xb3, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xf7, 0x59, 0x99, 0x5b, 0x99, 0x5c, 0x18, 0x1b, 0xc8, 0xd8, 0x9b, 0x1b, 0x5d, 0xd8, 0x18, 0xdd, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0xa5, 0x43, 0x3c, 0x90, 0x94, 0x0e, 0x93, 0x83, 0xd2, 0x9b, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x4a, 0x87, 0xcd, 0x40, 0x52, 0x3a, 0xec, 0x0e, 0xda, 0xb6, 0x1e, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xd2, 0x61, 0x38, 0x90, 0x94, 0x0e, 0xe3, 0x83, 0xf5, 0x5a, 0xcf, 0xad, 0x06, 0x6d, 0x89, 0x02, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xb4, 0x25, 0x0a, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xe9, 0xb8, 0x81, 0x04, 0x75, 0xfc, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xa7, 0x43, 0x32, 0x90, 0x9e, 0x0e, 0x05, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xd3, 0x21, 0x1a, 0x48, 0x4f, 0x87, 0xcd, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x02, 0x7e, 0xb9, 0xb0, 0xbb, 0x16, 0xb8, 0xb7, 0xb5, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x4f, 0x87, 0xd1, 0x40, 0x7a, 0x3a, 0x2c, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x29, 0xf2, 0x74, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xd3, 0x61, 0x75, 0xf0, 0xce, 0x19, 0xdb, 0x83, 0xf7, 0x6d, 0x88, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xe9, 0x30, 0x1d, 0x48, 0x4f, 0x87, 0xfd, 0x86, 0x3f, 0x97, 0x36, 0x4c, 0xe7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xa7, 0xc3, 0xf6, 0xe0, 0xb1, 0x39, 0xb6, 0x07, 0xcb, 0x61, 0xb1, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xd3, 0x21, 0x19, 0xc8, 0x4f, 0x87, 0xcd, 0x86, 0x7f, 0xe7, 0x37, 0x78, 0x2e, 0x5b, 0xca, 0xc1, 0xcb, 0xac, 0x69, 0x5b, 0x0d, 0xde, 0xaf, 0x5b, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0xfd, 0xba, 0xb5, 0x0d, 0xe0, 0x33, 0x47, 0x17, 0x46, 0x97, 0x36, 0x47, 0x97, 0x36, 0x36, 0xb7, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x7e, 0xdd, 0xda, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x28, 0xc7, 0x0d, 0xe4, 0x94, 0xe3, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x94, 0x43, 0x32, 0x90, 0x50, 0x0e, 0x8f, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x07, 0x4e, 0xee, 0x6d, 0xac, 0x6c, 0x6e, 0xae, 0x8c, 0x0c, 0xa4, 0xed, 0xcd, 0xae, 0x0c, 0x64, 0xec, 0xad, 0xce, 0x8d, 0x6e, 0xc3, 0x9f, 0x4b, 0x03, 0x7c, 0x63, 0x68, 0x61, 0x6e, 0x67, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x94, 0xc3, 0x60, 0x20, 0xa1, 0x1c, 0x36, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x51, 0x0e, 0xc9, 0x40, 0x46, 0x39, 0x9c, 0xd8, 0xf0, 0xc4, 0xfb, 0x06, 0x2f, 0x8a, 0x86, 0xdd, 0xf0, 0xe7, 0xd2, 0x80, 0x57, 0xe6, 0x96, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x46, 0x39, 0xa4, 0x03, 0x19, 0xe5, 0xb0, 0x38, 0x78, 0xee, 0x3d, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x52, 0x0e, 0xc9, 0x40, 0x4a, 0x39, 0xfc, 0xd9, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x8f, 0xb1, 0x3a, 0x39, 0xb9, 0x32, 0x37, 0x3a, 0x90, 0x32, 0xbb, 0x32, 0x37, 0x3a, 0x10, 0xba, 0xb4, 0xb6, 0xb2, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x66, 0xef, 0xf8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x94, 0x43, 0x3c, 0x90, 0x52, 0x0e, 0x8b, 0x83, 0x23, 0x5f, 0x6b, 0x87, 0x53, 0xac, 0xd6, 0xe0, 0x85, 0x6c, 0xb0, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x2f, 0x64, 0x83, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x72, 0x48, 0x07, 0x52, 0xc9, 0xa1, 0x78, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0xc9, 0x21, 0x1e, 0x48, 0x25, 0x87, 0xce, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xe4, 0x90, 0x0f, 0xa4, 0x92, 0xc3, 0x64, 0xc3, 0xdb, 0x3a, 0x03, 0x5e, 0xdb, 0x1b, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4a, 0x0e, 0x9b, 0x81, 0x54, 0x72, 0x98, 0x1d, 0x94, 0x59, 0xba, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2a, 0x39, 0xec, 0x06, 0x52, 0xc9, 0xa1, 0x72, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2a, 0x39, 0x0c, 0x07, 0x52, 0xc9, 0x61, 0x7c, 0x50, 0x7a, 0xd3, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xe4, 0xb0, 0x1e, 0x48, 0x25, 0x87, 0x82, 0x83, 0x23, 0x5f, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4a, 0x0e, 0x0d, 0x03, 0xa9, 0xe4, 0xd0, 0xb8, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x95, 0x1c, 0x2a, 0x06, 0x52, 0xc9, 0xa1, 0xe6, 0x60, 0x15, 0x64, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4a, 0x0e, 0x3d, 0x03, 0xa9, 0xe4, 0xd0, 0xb5, 0xe1, 0x6d, 0x9d, 0x83, 0xa7, 0xd3, 0xd9, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xe4, 0x50, 0x36, 0x90, 0x4a, 0x0e, 0x85, 0x07, 0xef, 0xfd, 0x0a, 0xa9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x72, 0x28, 0x1d, 0x48, 0x25, 0x87, 0xde, 0x0d, 0xff, 0xce, 0x6f, 0x78, 0xf0, 0xb7, 0x66, 0x01, 0xaf, 0xec, 0xec, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x1a, 0x78, 0x65, 0x67, 0x67, 0x03, 0xf0, 0xd4, 0x96, 0x76, 0x26, 0x17, 0x46, 0xf7, 0x26, 0x97, 0x07, 0x12, 0x76, 0x56, 0xe6, 0x46, 0x07, 0x32, 0x47, 0x17, 0x46, 0x57, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x0f, 0x78, 0x65, 0x67, 0xe7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x97, 0xe3, 0x06, 0xf2, 0xcd, 0x21, 0xdb, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x72, 0x48, 0x06, 0xd2, 0xcb, 0xe1, 0xd0, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbc, 0xcc, 0x95, 0x95, 0x81, 0xbc, 0xcc, 0xe5, 0xcd, 0xbd, 0x9c, 0x85, 0xb1, 0xb1, 0x81, 0x90, 0xe4, 0xbd, 0xad, 0x95, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x2f, 0x87, 0x68, 0x20, 0xbd, 0x1c, 0xf2, 0x83, 0x87, 0xbf, 0x84, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xe5, 0x30, 0x18, 0x48, 0x2f, 0x87, 0x8a, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x73, 0x6b, 0xf9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x97, 0xc3, 0xe8, 0xe0, 0xb1, 0x9e, 0xb6, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5e, 0x0e, 0xab, 0x81, 0xf4, 0x72, 0x18, 0x1e, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x39, 0x2c, 0x07, 0xd2, 0xcb, 0x61, 0x7d, 0xf0, 0x3e, 0x5b, 0xd9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xbd, 0x1c, 0xe6, 0x03, 0xe9, 0xe5, 0xd0, 0x70, 0x50, 0x66, 0xe9, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x97, 0x43, 0xc7, 0x40, 0x7a, 0x39, 0xf4, 0x6e, 0xf8, 0x73, 0x69, 0xc0, 0x1b, 0x7b, 0x83, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xbd, 0x1c, 0x7a, 0x0e, 0xde, 0xd3, 0x6a, 0xbb, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xe5, 0x50, 0x34, 0x90, 0x5e, 0x0e, 0x5d, 0x07, 0x25, 0x62, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5e, 0x0e, 0x65, 0x03, 0xe9, 0xe5, 0x50, 0x78, 0xf0, 0x22, 0x77, 0xd9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xbd, 0x1c, 0x1a, 0x07, 0xd2, 0xcb, 0xa1, 0xf6, 0xe0, 0xb9, 0x09, 0xb1, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x97, 0x43, 0x32, 0x90, 0x6f, 0x8e, 0xdf, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5f, 0x0e, 0xe9, 0x40, 0x7e, 0x39, 0x4c, 0x0e, 0x9e, 0x07, 0xf8, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x98, 0x43, 0x3a, 0x90, 0x60, 0x0e, 0xf3, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x0a, 0xd3, 0xda, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x30, 0x87, 0xe9, 0xc1, 0xeb, 0x82, 0x6d, 0x0f, 0x9e, 0x9e, 0xee, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x98, 0x43, 0x3a, 0x90, 0x61, 0x0e, 0xcb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xb0, 0xd6, 0xda, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x30, 0x87, 0xdd, 0xc1, 0x2b, 0x8f, 0x6d, 0x0f, 0xce, 0xb3, 0xa3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8a, 0x39, 0xa4, 0x03, 0x29, 0xe6, 0x30, 0xdc, 0xf0, 0xe7, 0xd2, 0x06, 0xef, 0xa1, 0xad, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x73, 0xd8, 0x1d, 0xbc, 0xb4, 0xd9, 0xf6, 0xf0, 0x43, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x63, 0x0e, 0xe9, 0x40, 0x8e, 0x39, 0x6c, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xfb, 0x75, 0x6b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc7, 0x1c, 0xe2, 0x83, 0x77, 0x4e, 0xdb, 0x1e, 0x3c, 0xc2, 0xb7, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x32, 0x87, 0x74, 0x20, 0xc9, 0x1c, 0x26, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x21, 0xc7, 0x95, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x64, 0x0e, 0xf1, 0xc1, 0x73, 0xb3, 0x6d, 0x0f, 0x9e, 0x09, 0x0b, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x99, 0x43, 0x3a, 0x90, 0x65, 0x0e, 0x93, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x40, 0x95, 0xa0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x32, 0x87, 0xf8, 0xe0, 0xd5, 0xdf, 0xb6, 0x07, 0x8f, 0x39, 0x85, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xcc, 0x21, 0x1d, 0x48, 0x33, 0x87, 0xc9, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xc6, 0x57, 0xed, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x99, 0x43, 0x7c, 0xf0, 0xf8, 0x72, 0xdb, 0x83, 0x97, 0x43, 0xd7, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xe6, 0x90, 0x0e, 0xe4, 0x99, 0xc3, 0x66, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0x5c, 0xd8, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xe6, 0x30, 0x39, 0x78, 0x03, 0xbb, 0xed, 0x41, 0x08, 0x3e, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0xe6, 0x90, 0x0e, 0x24, 0x9a, 0x43, 0xc1, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x77, 0x00, 0xed, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x9a, 0xc3, 0xee, 0xe0, 0x0d, 0xf2, 0xb6, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xcd, 0x61, 0x38, 0x90, 0x68, 0x0e, 0xd3, 0x83, 0x30, 0x02, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0xcd, 0x61, 0x3b, 0x90, 0x68, 0x0e, 0xfb, 0x83, 0x66, 0xb7, 0xa3, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xcd, 0x21, 0x1d, 0xc8, 0x34, 0x87, 0xc9, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xc9, 0x51, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x9a, 0x43, 0x7c, 0xf0, 0xd8, 0x7e, 0xdb, 0x83, 0xa7, 0x1a, 0x85, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xe6, 0x90, 0x0e, 0xa4, 0x9a, 0x43, 0xc5, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x1b, 0x7b, 0xed, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x9a, 0xc3, 0xe6, 0xe0, 0xcd, 0x03, 0xb7, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6a, 0x0e, 0xa3, 0x81, 0x54, 0x73, 0xd8, 0x1d, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xaa, 0x39, 0x0c, 0x07, 0x52, 0xcd, 0x61, 0x7c, 0xf0, 0xf4, 0x74, 0x8f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd5, 0x1c, 0xd6, 0x03, 0xa9, 0xe6, 0xd0, 0x70, 0xf0, 0xbe, 0x0d, 0x91, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x73, 0x48, 0x07, 0x72, 0xcd, 0x61, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0x6e, 0x2d, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x73, 0x58, 0x1c, 0x3c, 0x4d, 0xe2, 0xf6, 0xe0, 0x15, 0x38, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x39, 0xa4, 0x03, 0xc9, 0xe6, 0xd0, 0xb2, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0xad, 0xcc, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x73, 0x58, 0x1c, 0xbc, 0x10, 0xe3, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0xcd, 0x61, 0x32, 0x90, 0x6c, 0x0e, 0xab, 0x83, 0x77, 0x53, 0x4d, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xe6, 0x30, 0x1b, 0x48, 0x36, 0x87, 0xfd, 0xc1, 0x63, 0x46, 0x66, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x73, 0x28, 0x18, 0x48, 0x36, 0x87, 0x92, 0x83, 0x77, 0x5b, 0x8a, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x9b, 0x43, 0x3a, 0x90, 0x6d, 0x0e, 0x2d, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xe0, 0xca, 0xdc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x36, 0x87, 0xc5, 0xc1, 0x6b, 0x4e, 0x6e, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdb, 0x1c, 0x26, 0x03, 0xd9, 0xe6, 0xb0, 0x3a, 0x78, 0x37, 0xd5, 0xe4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6d, 0x0e, 0xb3, 0x81, 0x6c, 0x73, 0xd8, 0x1f, 0x3c, 0x66, 0x64, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x36, 0x87, 0x82, 0x81, 0x6c, 0x73, 0x28, 0x39, 0x78, 0xb7, 0xa5, 0x48, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xba, 0x39, 0xa4, 0x03, 0xe9, 0xe6, 0xd0, 0xb3, 0xe1, 0xcf, 0xa5, 0x01, 0xef, 0xac, 0xac, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x73, 0x58, 0x1c, 0xbc, 0xbc, 0xe6, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xcd, 0x61, 0x32, 0x90, 0x6e, 0x0e, 0xab, 0x83, 0x77, 0x53, 0x4d, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xe6, 0x30, 0x1b, 0x48, 0x37, 0x87, 0xe9, 0xc1, 0x8b, 0xdc, 0x65, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x73, 0xd8, 0x0e, 0xa4, 0x9b, 0x43, 0xcd, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x73, 0x18, 0x0f, 0xa4, 0x9b, 0x43, 0xc1, 0xc1, 0x19, 0x09, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x37, 0x87, 0x86, 0x81, 0x74, 0x73, 0x68, 0x39, 0x78, 0x1d, 0x9d, 0x5d, 0xd5, 0x6a, 0xf0, 0xa6, 0xc8, 0x91, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xe0, 0x99, 0xe3, 0x76, 0x03, 0xf8, 0xa7, 0xb9, 0x8d, 0xbd, 0xb5, 0xa5, 0xb9, 0x9d, 0x81, 0xc8, 0x95, 0xc5, 0xd5, 0x95, 0xcd, 0xd1, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x29, 0x72, 0x64, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xc6, 0x71, 0x03, 0x59, 0xe4, 0xf8, 0x0d, 0x42, 0x0d, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1a, 0x87, 0x64, 0x20, 0x6b, 0x1c, 0x26, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xc6, 0x21, 0x1a, 0xc8, 0x1a, 0x87, 0xfc, 0xe0, 0xf5, 0xdf, 0x29, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x38, 0x0c, 0x06, 0xb2, 0xc6, 0x61, 0x71, 0x50, 0x50, 0x64, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0xe3, 0xb8, 0x83, 0x97, 0x3f, 0xdd, 0x6e, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xda, 0x38, 0x24, 0x03, 0x69, 0xe3, 0x70, 0x67, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xc6, 0xd8, 0xde, 0xce, 0x40, 0xdc, 0xde, 0xe8, 0xd2, 0xcc, 0xd2, 0xc6, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x8d, 0x43, 0x34, 0x90, 0x36, 0x0e, 0xf9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xde, 0xf4, 0x1b, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x8d, 0xc3, 0x60, 0x20, 0x6d, 0x1c, 0x46, 0x1b, 0xfe, 0x5c, 0x1a, 0xf8, 0x34, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0xc6, 0x61, 0x73, 0xf0, 0xac, 0xb3, 0xdb, 0x83, 0x30, 0x1d, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1b, 0x87, 0x64, 0x20, 0x6f, 0x1c, 0xee, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x83, 0x59, 0x1d, 0x1b, 0x1b, 0x08, 0x9d, 0x5c, 0x98, 0xdb, 0x5c, 0x5b, 0xda, 0xdc, 0x5c, 0xda, 0x9b, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x71, 0x88, 0x06, 0xf2, 0xc6, 0x21, 0x3f, 0x78, 0x91, 0x85, 0xca, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x37, 0x0e, 0x83, 0x81, 0xbc, 0x71, 0x98, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xc6, 0x61, 0x72, 0xf0, 0x10, 0xbb, 0xdb, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x2b, 0xeb, 0x44, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1b, 0x87, 0xdd, 0x40, 0xde, 0x38, 0xac, 0x37, 0xfc, 0xb9, 0x34, 0x78, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xe3, 0xb0, 0x3c, 0x78, 0x1f, 0xdf, 0xed, 0xc1, 0x7a, 0xad, 0xe7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6f, 0x1c, 0xe6, 0x03, 0x79, 0xe3, 0x50, 0xb2, 0xe1, 0xcf, 0xa5, 0xc1, 0xe5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1b, 0x87, 0x82, 0x83, 0x17, 0x09, 0xde, 0x6e, 0xf8, 0x77, 0x7e, 0x83, 0x96, 0x44, 0x01, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x1c, 0x87, 0x64, 0x20, 0x71, 0x1c, 0x1e, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xcf, 0x18, 0x5b, 0x59, 0x98, 0x1c, 0x08, 0x5c, 0x99, 0x1b, 0x59, 0x9a, 0xdb, 0x19, 0x48, 0x5c, 0x5d, 0x59, 0x5d, 0xd9, 0xdc, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x71, 0x88, 0x06, 0x12, 0xc7, 0x21, 0xdf, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xfa, 0x3b, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x71, 0x1c, 0x06, 0x03, 0x89, 0xe3, 0xb0, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x4d, 0x5f, 0x8f, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe2, 0x38, 0x2c, 0x0e, 0x5e, 0x2a, 0x79, 0x7b, 0xd0, 0xb6, 0xf5, 0x78, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe6, 0x38, 0x24, 0x03, 0x99, 0xe3, 0x70, 0x66, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x6f, 0x14, 0xb9, 0xb2, 0x94, 0x39, 0xba, 0x30, 0x39, 0x3a, 0x90, 0xb0, 0xb3, 0x32, 0x37, 0xba, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xe3, 0x10, 0x0d, 0x64, 0x8e, 0x43, 0xbe, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x27, 0xd0, 0x06, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xe3, 0x30, 0x18, 0xc8, 0x1c, 0x87, 0xd5, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x33, 0x5e, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x8e, 0xc3, 0xe2, 0xe0, 0x31, 0xa2, 0xb7, 0x07, 0x8f, 0xc2, 0x0b, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0xc7, 0x61, 0x36, 0x90, 0x39, 0x0e, 0xdb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x9e, 0xc6, 0xbf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1c, 0x87, 0xdd, 0xc1, 0xab, 0x50, 0x6f, 0x0f, 0x9e, 0x92, 0x4c, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3a, 0x0e, 0xc9, 0x40, 0xea, 0x38, 0x5c, 0xd9, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x73, 0xae, 0x6e, 0x0e, 0xae, 0xcc, 0x8d, 0x0c, 0x24, 0xec, 0xac, 0xcc, 0x8d, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x38, 0x44, 0x03, 0xa9, 0xe3, 0x90, 0x6f, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0xfd, 0xbb, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x38, 0x0c, 0x06, 0x52, 0xc7, 0x61, 0xb5, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0xd3, 0xf8, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0xe3, 0xb0, 0x38, 0x78, 0xea, 0xed, 0xed, 0xc1, 0x53, 0x92, 0x69, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xc7, 0x21, 0x19, 0xc8, 0x1d, 0x87, 0x1f, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xb0, 0xbd, 0x85, 0x91, 0x81, 0x84, 0x9d, 0x95, 0xb9, 0xd1, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1d, 0x87, 0x68, 0x20, 0x77, 0x1c, 0xf2, 0x0d, 0x19, 0xf0, 0x83, 0x37, 0xf4, 0xb5, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0xe3, 0x30, 0x18, 0xc8, 0x1d, 0x87, 0xd5, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x5e, 0x5f, 0xcb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x8e, 0xc3, 0xe2, 0xe0, 0x31, 0xc6, 0xb7, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0xe7, 0xf5, 0xb5, 0x54, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf2, 0x38, 0x24, 0x03, 0xc9, 0xe3, 0xf0, 0x64, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3f, 0xb2, 0x32, 0xb6, 0x32, 0xba, 0x32, 0x90, 0xb0, 0xb3, 0x32, 0x37, 0xba, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0xe3, 0x10, 0x0d, 0x24, 0x8f, 0x43, 0x7e, 0xf0, 0xf0, 0x97, 0xd0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x79, 0x1c, 0x06, 0x03, 0xc9, 0xe3, 0xb0, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0xef, 0x69, 0xfc, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x71, 0x58, 0x1c, 0xbc, 0xa4, 0xfa, 0xf6, 0xe0, 0x29, 0xc9, 0xb4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0xe3, 0x90, 0x0c, 0x64, 0x8f, 0xc3, 0x9f, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x58, 0x4b, 0x63, 0x63, 0x03, 0x99, 0xab, 0x13, 0x9b, 0x1b, 0x93, 0x4b, 0x83, 0xa3, 0x4b, 0x7b, 0x73, 0x9b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3d, 0x0e, 0xd1, 0x40, 0xf6, 0x38, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x84, 0x70, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3d, 0x0e, 0x83, 0x81, 0xec, 0x71, 0x28, 0xd8, 0xf0, 0xe7, 0xd2, 0x06, 0xef, 0x69, 0xfc, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x71, 0x58, 0x1d, 0x3c, 0xa4, 0xfc, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0xc7, 0x61, 0x36, 0x90, 0x3d, 0x0e, 0xd3, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1e, 0x87, 0xed, 0x40, 0xf6, 0x38, 0xec, 0x0f, 0x9e, 0x92, 0x4c, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3d, 0x0e, 0x0d, 0x03, 0xd9, 0xe3, 0xd0, 0xb8, 0xe1, 0xcf, 0xa5, 0x0d, 0x9a, 0xbe, 0x1e, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x71, 0xa8, 0x39, 0x78, 0x39, 0xfc, 0xed, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x8f, 0x43, 0xcf, 0x40, 0xf6, 0x38, 0x74, 0x1d, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf6, 0x38, 0x94, 0x0d, 0x64, 0x8f, 0x43, 0xe1, 0x41, 0xdb, 0xd6, 0xe3, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x8f, 0x43, 0x32, 0x90, 0x3e, 0x0e, 0x6f, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x97, 0x2b, 0x1b, 0x63, 0x0b, 0x4b, 0x6b, 0x03, 0x79, 0x63, 0x23, 0x03, 0x99, 0xab, 0x13, 0x9b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3e, 0x0e, 0xd1, 0x40, 0xfa, 0x38, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0xb3, 0x16, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x1f, 0x87, 0xc1, 0x40, 0xfa, 0x38, 0x14, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0xf7, 0x34, 0xfe, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfa, 0x38, 0xac, 0x0e, 0xde, 0x63, 0x80, 0xbb, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0xe3, 0x30, 0x1b, 0x48, 0x1f, 0x87, 0xe9, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x8f, 0xc3, 0x76, 0x20, 0x7d, 0x1c, 0xf6, 0x07, 0x4f, 0x49, 0xa6, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x1f, 0x87, 0x86, 0x81, 0xf4, 0x71, 0xa8, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0x85, 0x86, 0xc0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x8f, 0x43, 0xcb, 0xc1, 0x03, 0x24, 0x70, 0x0f, 0x1f, 0xac, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x8f, 0x43, 0x32, 0x90, 0x3f, 0x0e, 0x37, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x98, 0x2b, 0xa3, 0x03, 0x79, 0xbb, 0x73, 0x2b, 0x93, 0xdb, 0x60, 0xbd, 0x4a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3f, 0x0e, 0xe1, 0x40, 0xfe, 0x38, 0x2c, 0x0e, 0xde, 0x1f, 0xec, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0xe3, 0x30, 0x19, 0xc8, 0x1f, 0x87, 0xed, 0xc1, 0x0b, 0x04, 0xee, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x72, 0x48, 0x06, 0x12, 0xc8, 0xe1, 0xc7, 0x86, 0x27, 0xde, 0x37, 0x78, 0xcc, 0xd4, 0xdd, 0x06, 0xeb, 0x55, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x72, 0x08, 0x07, 0x12, 0xc8, 0x61, 0x71, 0xf0, 0x7a, 0x7b, 0x8f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x20, 0x87, 0xc9, 0x40, 0x02, 0x39, 0x6c, 0x0f, 0x5e, 0x20, 0x70, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x90, 0x43, 0x32, 0x90, 0x41, 0x0e, 0x5f, 0x36, 0x3c, 0xf1, 0xbe, 0xc1, 0x7b, 0xbc, 0xee, 0x36, 0x58, 0xaf, 0x52, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x90, 0x43, 0x38, 0x90, 0x41, 0x0e, 0x8b, 0x83, 0x47, 0x8e, 0xdd, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x06, 0x39, 0x4c, 0x06, 0x32, 0xc8, 0x61, 0x7b, 0xf0, 0x02, 0x81, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x85, 0x1c, 0x92, 0x81, 0x14, 0x72, 0x38, 0xb3, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xb7, 0x5b, 0x19, 0xdd, 0xdd, 0x9b, 0xdc, 0x1a, 0x88, 0x5c, 0x59, 0x5c, 0x5d, 0xd9, 0x1c, 0xdd, 0x06, 0xeb, 0x55, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x72, 0x08, 0x07, 0x52, 0xc8, 0x61, 0x71, 0xf0, 0x78, 0xed, 0xc1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x21, 0x87, 0xc9, 0x40, 0x0a, 0x39, 0x6c, 0x0f, 0x5e, 0x20, 0x70, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x90, 0x43, 0x32, 0x90, 0x43, 0x0e, 0x57, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x9c, 0x2b, 0xa3, 0x03, 0xb1, 0x2b, 0x93, 0x13, 0x7b, 0x9b, 0x4b, 0xa3, 0xcb, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x43, 0x0e, 0xd1, 0x40, 0x0e, 0x39, 0xe4, 0x07, 0x0f, 0x26, 0x7e, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0xc8, 0x61, 0x30, 0x90, 0x43, 0x0e, 0xfb, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x76, 0x65, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x90, 0xc3, 0xe8, 0xe0, 0xd5, 0x49, 0xb8, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x43, 0x0e, 0xab, 0x81, 0x1c, 0x72, 0x58, 0x1e, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x43, 0x0e, 0xd3, 0x81, 0x1c, 0x72, 0x98, 0x6f, 0xf8, 0x77, 0x7e, 0x83, 0x17, 0xb8, 0x90, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x39, 0x24, 0x03, 0x49, 0xe4, 0x70, 0x63, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x0f, 0xb8, 0x32, 0x39, 0x90, 0xb0, 0xb3, 0x32, 0x37, 0xba, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xe4, 0x10, 0x0d, 0x24, 0x91, 0x43, 0xbe, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x37, 0x31, 0x04, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0xe4, 0x30, 0x18, 0x48, 0x22, 0x87, 0x86, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0x90, 0xd5, 0x91, 0x95, 0xcd, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x44, 0x0e, 0xb3, 0x83, 0xc7, 0x7a, 0xe1, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x39, 0xec, 0x06, 0x92, 0xc8, 0x61, 0x7b, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x39, 0x8c, 0x07, 0x92, 0xc8, 0xa1, 0xe0, 0xe0, 0x29, 0xc9, 0xb4, 0xd5, 0xe1, 0x14, 0xab, 0x35, 0x78, 0xa0, 0x4a, 0xd0, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x03, 0x55, 0x82, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8f, 0x1c, 0xd2, 0x81, 0x3c, 0x72, 0xb8, 0xb2, 0xe1, 0x89, 0xf7, 0x0d, 0x9e, 0x19, 0x0a, 0xbb, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xe4, 0x10, 0x0f, 0xe4, 0x91, 0xc3, 0xe2, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xc8, 0x61, 0x32, 0x90, 0x47, 0x0e, 0x2d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xc8, 0x61, 0x33, 0x90, 0x47, 0x0e, 0xc3, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x8a, 0x4a, 0x91, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x23, 0x87, 0xd1, 0xc1, 0xeb, 0xec, 0x70, 0x0f, 0xde, 0x6d, 0x29, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x91, 0xc3, 0x72, 0x20, 0x8f, 0x1c, 0xe6, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xe9, 0xeb, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x23, 0x87, 0xe9, 0xc1, 0x33, 0xf9, 0x70, 0x0f, 0xda, 0xb6, 0x1e, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xc8, 0x61, 0x3f, 0x90, 0x47, 0x0e, 0x25, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x04, 0x94, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xe4, 0x50, 0x70, 0xf0, 0x5a, 0x41, 0xdc, 0x83, 0xf5, 0x5a, 0xcf, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xe4, 0x50, 0x33, 0x90, 0x47, 0x0e, 0xad, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0xc8, 0xa1, 0x67, 0x20, 0x8f, 0x1c, 0xea, 0x36, 0xfc, 0xb9, 0x34, 0xc0, 0x13, 0x36, 0xb6, 0x56, 0x46, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1e, 0x39, 0xb4, 0x1d, 0x3c, 0x73, 0x11, 0xf7, 0xf0, 0xc1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x47, 0x0e, 0x7d, 0x03, 0x79, 0xe4, 0x50, 0xba, 0xe1, 0xcf, 0xa5, 0x0d, 0x0e, 0xa6, 0x9f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x47, 0x0e, 0x85, 0x07, 0x2f, 0x8f, 0xc4, 0x3d, 0x38, 0x23, 0xa1, 0xd6, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x2b, 0xb0, 0xfe, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x96, 0x42, 0xb6, 0x41, 0xea, 0x45, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfa, 0x0a, 0xd9, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x06, 0x2f, 0x2d, 0x0b, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0xd2, 0xb2, 0xa0, 0x06, 0xf0, 0x9c, 0x2b, 0x73, 0xa3, 0x03, 0xa1, 0x7b, 0x03, 0x29, 0x21, 0x4b, 0x63, 0x63, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x69, 0x59, 0xd0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf6, 0x0b, 0xd9, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc3, 0x0c, 0xd9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3c, 0xd0, 0xc9, 0xa5, 0xb5, 0x81, 0xac, 0x95, 0xc9, 0xb9, 0x95, 0xb1, 0x81, 0xcc, 0xd1, 0x85, 0xd1, 0x95, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd4, 0x1a, 0xb2, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0xac, 0x44, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x69, 0x0f, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0x76, 0xc8, 0x0e, 0xca, 0x2c, 0xdd, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x5c, 0x48, 0x06, 0x52, 0x73, 0x61, 0xb7, 0xc1, 0x7a, 0x95, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x35, 0x17, 0xc2, 0x81, 0xd4, 0x5c, 0x58, 0x1c, 0xbc, 0xf9, 0x1c, 0x64, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x38, 0x88, 0x6c, 0xc3, 0xbf, 0xf3, 0x0b, 0xf8, 0x74, 0x6f, 0x6c, 0x64, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x83, 0x44, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x95, 0xc8, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x2a, 0xbb, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0xa0, 0xc8, 0x0e, 0x42, 0xf0, 0xa1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0xa7, 0xc8, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xab, 0x73, 0x4b, 0x33, 0xcb, 0x03, 0x69, 0x2b, 0x6b, 0x7b, 0x93, 0xcb, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x56, 0x64, 0x07, 0xef, 0xbc, 0xf6, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x75, 0x8b, 0xec, 0x20, 0x04, 0x1f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xee, 0x8b, 0x6c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xdf, 0xb1, 0xb7, 0x36, 0xb8, 0xb0, 0x31, 0x3a, 0x90, 0xb6, 0xb2, 0xb6, 0x37, 0xb9, 0xbc, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x20, 0x46, 0xb6, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x63, 0x6f, 0xc8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x79, 0x67, 0x64, 0x07, 0x21, 0xf8, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x9e, 0x0b, 0xc9, 0x40, 0x7a, 0x2e, 0xec, 0x36, 0x58, 0xaf, 0x52, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0xe7, 0x42, 0x38, 0x90, 0x9e, 0x0b, 0x8b, 0x83, 0x46, 0x9b, 0x3a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xd6, 0xc8, 0x0e, 0x9e, 0x3f, 0x8b, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x18, 0x1c, 0xd9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7e, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x5f, 0x8e, 0xec, 0xe0, 0x29, 0x16, 0x1f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xdb, 0x91, 0x1d, 0x84, 0xe0, 0x43, 0xad, 0x00, 0x1e, 0x64, 0x69, 0x6c, 0x6c, 0x2d, 0x62, 0x6c, 0x69, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x17, 0x68, 0xe3, 0x36, 0x80, 0x57, 0x98, 0x9c, 0xdd, 0x1b, 0xc8, 0x5b, 0x1d, 0x1d, 0x5c, 0x1d, 0xdd, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x0b, 0xb4, 0x71, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0xf7, 0xc8, 0x36, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x1e, 0xc9, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x1c, 0x63, 0x4b, 0x2b, 0x73, 0xa3, 0x03, 0x79, 0xab, 0xa3, 0x83, 0xab, 0xa3, 0xdb, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0x38, 0x4b, 0xa5, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x9b, 0x24, 0xdb, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x73, 0x8c, 0xed, 0x6d, 0xae, 0x0c, 0x64, 0xec, 0xcd, 0x6d, 0xee, 0x8d, 0xad, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x58, 0x92, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0x19, 0x2c, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x91, 0x9b, 0x64, 0x07, 0x21, 0xf8, 0x50, 0xab, 0xc1, 0x8b, 0xb3, 0x54, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0xbc, 0x38, 0x4b, 0xa5, 0x83, 0x27, 0x90, 0xe3, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x38, 0x4b, 0x65, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x0e, 0x94, 0x6c, 0x83, 0xa0, 0xfd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x75, 0x94, 0x6c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xbf, 0xb6, 0xb0, 0xb5, 0x32, 0x90, 0x30, 0x10, 0xb7, 0xb7, 0xb4, 0xb9, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x64, 0x4a, 0xb6, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc0, 0x13, 0x2b, 0x63, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x5d, 0x25, 0x3b, 0x08, 0xc1, 0x87, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x7b, 0x25, 0xdb, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x7f, 0x8c, 0xad, 0x2c, 0x4c, 0x0e, 0x84, 0x0e, 0xad, 0x0c, 0x64, 0x6e, 0x4c, 0xae, 0xac, 0xcc, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xc8, 0x92, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xf0, 0xc6, 0xd8, 0xe4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x6e, 0xc9, 0x0e, 0x42, 0xf0, 0xa1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x76, 0xc9, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x63, 0xae, 0x8c, 0x0e, 0x64, 0xac, 0x4e, 0x6e, 0xee, 0x4d, 0x0e, 0x64, 0xec, 0x8d, 0xed, 0x05, 0xee, 0x6d, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xf7, 0x92, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xf0, 0xd0, 0xde, 0xe0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x8b, 0xc9, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x34, 0x4c, 0xb6, 0xe1, 0x83, 0xf9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xb3, 0xc9, 0x0e, 0xca, 0x2c, 0xdd, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8a, 0x64, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xe4, 0x4c, 0xb6, 0xe1, 0xcf, 0xa5, 0xc1, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd8, 0x65, 0xb2, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5e, 0x6a, 0xb2, 0x0d, 0x7f, 0x2e, 0x0d, 0x9e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x48, 0x93, 0x1d, 0x94, 0x59, 0xba, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x76, 0x37, 0xd9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x3e, 0x70, 0x75, 0x74, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x64, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x0e, 0x9c, 0x6c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x81, 0xb7, 0xc6, 0x26, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x87, 0x4e, 0xb6, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf0, 0x72, 0xb2, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0xab, 0x24, 0xde, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0xda, 0xc9, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x6d, 0xab, 0x63, 0xa3, 0x4b, 0x83, 0x63, 0x2b, 0x03, 0x11, 0x63, 0x4b, 0xa3, 0x9b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x09, 0xf0, 0x64, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x18, 0x0b, 0x62, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0xe0, 0x93, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xae, 0x9e, 0x6c, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x72, 0x9f, 0xec, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xfe, 0x27, 0x3b, 0x78, 0x7c, 0x39, 0x6e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x44, 0x50, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xc0, 0xeb, 0x56, 0x76, 0xc7, 0x96, 0xe6, 0x56, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0x0d, 0xca, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0x78, 0x6e, 0x65, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x51, 0x0c, 0x65, 0x07, 0x21, 0xf8, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x15, 0x10, 0x65, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf0, 0x01, 0x57, 0x47, 0x07, 0x42, 0x57, 0x86, 0x47, 0x07, 0x12, 0x46, 0x07, 0x32, 0x56, 0x27, 0x37, 0xf7, 0x26, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0x25, 0xca, 0x0e, 0x1e, 0x76, 0x9c, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x94, 0x46, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x2f, 0xca, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x3b, 0xca, 0x0e, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x80, 0x91, 0xb2, 0x83, 0xe3, 0x00, 0x6c, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x8e, 0x52, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xf7, 0x5c, 0x98, 0x5d, 0x19, 0x08, 0xdd, 0x1b, 0x88, 0x5a, 0x58, 0x9b, 0x59, 0x1a, 0x5b, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x5b, 0x29, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xe0, 0xcd, 0x85, 0x9d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xce, 0x94, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x1e, 0xa6, 0xec, 0xe0, 0x8c, 0x84, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7c, 0x4e, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x6e, 0xca, 0x0e, 0xc2, 0x74, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0x7b, 0xca, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x9b, 0x0b, 0xb3, 0x2b, 0x03, 0xa1, 0x7b, 0x03, 0x31, 0x4b, 0x63, 0x2b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x51, 0x40, 0x65, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0xbc, 0xb9, 0x30, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2a, 0xa4, 0xb2, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x17, 0x95, 0x1d, 0x9c, 0x91, 0x50, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x76, 0x2a, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0d, 0x53, 0xd9, 0xe1, 0x87, 0x9a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x9a, 0x2a, 0xdb, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x2f, 0x6c, 0x8c, 0x2e, 0xcd, 0x2e, 0x8c, 0xae, 0x0c, 0xa4, 0x4e, 0x8e, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x57, 0x95, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xf0, 0xea, 0xe4, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0xbb, 0xca, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xb6, 0x55, 0x76, 0x70, 0x9e, 0x1d, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x86, 0xb0, 0xb2, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xef, 0xd2, 0xe0, 0xca, 0x40, 0xc6, 0xea, 0xe4, 0xe6, 0xde, 0xe4, 0x40, 0xd8, 0xd2, 0xdc, 0xca, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xea, 0x58, 0xd9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xda, 0x54, 0xe8, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x22, 0xad, 0xec, 0x20, 0x04, 0x1f, 0x6a, 0x35, 0x78, 0xb9, 0x5c, 0xd0, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xcb, 0xe5, 0x82, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0xdb, 0xca, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x1b, 0x7b, 0x63, 0xab, 0x6b, 0x73, 0x9b, 0x03, 0x91, 0x7b, 0xbb, 0x9b, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0x72, 0x65, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x82, 0x2b, 0x3b, 0x28, 0xb3, 0x74, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xca, 0x2b, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xaf, 0x5d, 0xd9, 0x41, 0x99, 0xa5, 0xdb, 0x0a, 0xf8, 0x62, 0x6f, 0x6c, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xd7, 0x13, 0xe6, 0x36, 0x80, 0xdf, 0x5c, 0x5a, 0x1b, 0x1c, 0x5b, 0x19, 0x48, 0x9a, 0x1b, 0x5c, 0x1d, 0xdd, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xeb, 0x09, 0x73, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0xfb, 0xca, 0x36, 0x7c, 0x30, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x30, 0x77, 0xd9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xfe, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x07, 0xc7, 0x01, 0xd8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7a, 0xc0, 0xb2, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x62, 0xc2, 0xb2, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xc2, 0xe4, 0xe4, 0xde, 0xee, 0x40, 0xd6, 0xca, 0xf2, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd8, 0x61, 0xd9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x02, 0x2f, 0x4c, 0xee, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xeb, 0xb1, 0x6c, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xcd, 0x8c, 0x65, 0x1b, 0x04, 0x9b, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa5, 0x92, 0x65, 0x07, 0xe7, 0xdc, 0x94, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x30, 0xcb, 0x0e, 0xd6, 0xdc, 0xb1, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xd0, 0x59, 0x76, 0xb0, 0x30, 0xb9, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xaa, 0xd0, 0xb2, 0x83, 0x84, 0x30, 0xa3, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xdd, 0xb4, 0x6c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x5f, 0x3a, 0xb9, 0xba, 0x32, 0x10, 0xb1, 0xb0, 0xb1, 0xb5, 0x39, 0xb8, 0xb0, 0xb1, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x98, 0x5a, 0xb6, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc0, 0x13, 0x0b, 0x1b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x77, 0x2d, 0x3b, 0x08, 0xc1, 0x87, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x95, 0x2d, 0xdb, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x8b, 0x4e, 0xae, 0xae, 0x0c, 0x84, 0xac, 0x8c, 0xad, 0x8c, 0xae, 0x6c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xd5, 0x96, 0x1d, 0xbc, 0xc0, 0x9d, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x96, 0xdc, 0xb2, 0x83, 0x10, 0x7c, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xbc, 0xde, 0xb2, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0xda, 0xde, 0xea, 0xe6, 0xca, 0x40, 0xc6, 0xd8, 0xd2, 0xc6, 0xd6, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x05, 0x70, 0xd9, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x96, 0xf7, 0x86, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x81, 0x5c, 0xb6, 0xe1, 0xcf, 0xa5, 0xc1, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc4, 0xe2, 0xb2, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x44, 0xe7, 0xb2, 0x0d, 0x7f, 0x2e, 0x0d, 0x9e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x2f, 0x97, 0x1d, 0x94, 0x59, 0xba, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x1a, 0x5d, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0xc0, 0x27, 0x57, 0x46, 0x57, 0x27, 0xe7, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0xa8, 0xcb, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0x78, 0x72, 0x65, 0xf4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc1, 0xd9, 0x65, 0x07, 0x21, 0xf8, 0x50, 0x87, 0x53, 0x6c, 0x0d, 0x1e, 0x49, 0x27, 0xb2, 0xe1, 0x79, 0x92, 0x0d, 0x9e, 0x2e, 0x64, 0xb7, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x48, 0x3a, 0x91, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe8, 0xf0, 0xb2, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xbe, 0xf2, 0xb2, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0xe9, 0xca, 0xe4, 0xda, 0xd2, 0xdc, 0xc2, 0xd8, 0x40, 0xde, 0xea, 0xe8, 0xe0, 0xea, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x06, 0x7a, 0xd9, 0x86, 0x0c, 0xf8, 0xc1, 0xb3, 0xb2, 0x54, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x80, 0x2f, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x61, 0x7b, 0xd9, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe9, 0x7c, 0xd9, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x7e, 0x5f, 0x76, 0xf0, 0xf8, 0x72, 0xdc, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xa1, 0xbf, 0x6c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x83, 0xb7, 0xb1, 0x70, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0xff, 0xcb, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x9a, 0xfd, 0xb2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x0a, 0xcc, 0x0e, 0x42, 0xf0, 0xa1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0x11, 0xcc, 0x36, 0x3c, 0xf1, 0xbe, 0xc1, 0xfb, 0x78, 0x71, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xdd, 0x82, 0xd9, 0xc1, 0x3b, 0xaf, 0xfd, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x7a, 0x30, 0x3b, 0x08, 0xc1, 0x87, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x98, 0x30, 0xdb, 0xf0, 0xc4, 0xfb, 0x06, 0x6f, 0x20, 0xc6, 0xdd, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0x15, 0x66, 0x07, 0xaf, 0x40, 0xc6, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x32, 0xc3, 0xec, 0x20, 0x04, 0x1f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xab, 0xc3, 0x6c, 0xc3, 0x13, 0xef, 0x1b, 0x3c, 0x7e, 0x14, 0x77, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x7f, 0x98, 0x1d, 0xbc, 0xde, 0xde, 0x63, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x30, 0x13, 0xb3, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x8f, 0x98, 0x1d, 0x94, 0x59, 0xba, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xa4, 0x62, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xe7, 0x5c, 0xde, 0x1c, 0x5d, 0x59, 0x1b, 0xc8, 0x5b, 0x1d, 0x1d, 0x5c, 0x1d, 0xdd, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x66, 0x31, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x5b, 0xe2, 0x82, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xa6, 0x31, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0xaf, 0xa3, 0xc5, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x92, 0x31, 0x3b, 0x78, 0xfe, 0x2c, 0x6e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xe8, 0x98, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xd9, 0x56, 0xd6, 0xf6, 0x26, 0x97, 0x07, 0x22, 0x57, 0x06, 0xf7, 0x26, 0x47, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x79, 0xcc, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x16, 0x1c, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x89, 0xcc, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x20, 0x64, 0xb6, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x82, 0x64, 0x76, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x31, 0x99, 0x6d, 0xf8, 0x77, 0x7e, 0x83, 0xf7, 0x7f, 0x97, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x41, 0x99, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xdb, 0x56, 0xd6, 0xf6, 0x26, 0x97, 0x07, 0x22, 0x57, 0xe7, 0x46, 0x97, 0xd6, 0x56, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0xa6, 0xcc, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x72, 0xb6, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0xb0, 0xcc, 0x0e, 0x42, 0xf0, 0xa1, 0x66, 0x01, 0x3c, 0xc8, 0xd2, 0xd8, 0xd8, 0x5a, 0xc4, 0xca, 0xd8, 0xe8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0x4f, 0xb8, 0xd0, 0x6d, 0x00, 0x9f, 0x30, 0x39, 0xbb, 0x37, 0x90, 0x34, 0x37, 0xb8, 0x3a, 0xba, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x27, 0x5c, 0xe8, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x76, 0x99, 0x6d, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xa2, 0x99, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x37, 0xc6, 0x96, 0x56, 0xe6, 0x46, 0x07, 0x92, 0xe6, 0x06, 0x57, 0x47, 0xb7, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0xab, 0x61, 0x50, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xe1, 0x66, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x2d, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x20, 0x28, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0xa9, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x0b, 0x67, 0xb6, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0xc0, 0x1b, 0x93, 0xab, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xc5, 0x33, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8a, 0x9d, 0xd9, 0xc1, 0x79, 0xf3, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x96, 0x3f, 0xb3, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xf2, 0x99, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x0a, 0x9a, 0x1d, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x01, 0x87, 0x66, 0x07, 0x67, 0x82, 0xd1, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x93, 0xd1, 0x6c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x80, 0x57, 0xae, 0xcc, 0x4c, 0xae, 0x6c, 0x0e, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x3c, 0x9a, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xa0, 0x7d, 0x16, 0xc3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x29, 0xcd, 0x0e, 0x42, 0xf0, 0xa1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0x31, 0xcd, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x43, 0xae, 0x6c, 0x2e, 0x4d, 0xaf, 0x8c, 0x05, 0x64, 0xec, 0x8d, 0x6d, 0x8e, 0x05, 0x44, 0xee, 0xed, 0x6e, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0x6e, 0x9a, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xf0, 0xe4, 0xca, 0xf4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0x47, 0xcd, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x10, 0x6a, 0x76, 0x50, 0x66, 0xe9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xa0, 0x6a, 0xb6, 0xe1, 0xcf, 0xa5, 0xc1, 0xe3, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xba, 0x53, 0xb3, 0x83, 0x32, 0x4b, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x5a, 0xcd, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x1d, 0x7b, 0x73, 0x73, 0x2b, 0x1b, 0xa3, 0x03, 0xa1, 0x7b, 0x03, 0x09, 0x83, 0x83, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0xaf, 0x66, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0xbc, 0xbc, 0xb7, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe6, 0x5b, 0xb3, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xd4, 0x9a, 0x6d, 0xf8, 0x77, 0x7e, 0x0d, 0x5e, 0x5d, 0x61, 0xdb, 0xc1, 0x6b, 0xe6, 0xeb, 0x6a, 0x35, 0x78, 0x1d, 0x2d, 0xee, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xd7, 0xd1, 0xe2, 0x76, 0xf0, 0xba, 0xfb, 0xdc, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xd7, 0xd1, 0xe2, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xfa, 0x9a, 0x6d, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x07, 0x9b, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x1c, 0xbc, 0xfe, 0x1f, 0x6f, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x11, 0x9b, 0x1d, 0xbc, 0xf9, 0x1c, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x72, 0x65, 0xb3, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x21, 0x9b, 0x1d, 0x9c, 0x37, 0x4f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x8a, 0x36, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb2, 0xb3, 0xd9, 0x41, 0x83, 0xe2, 0x81, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x65, 0x6d, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x3e, 0x5d, 0x98, 0xdb, 0xda, 0x1c, 0x08, 0x4a, 0x9a, 0x1b, 0xc8, 0x9b, 0x1c, 0x59, 0x99, 0x5c, 0x6a, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x63, 0x9b, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x15, 0x79, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x83, 0x9b, 0x6d, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xcc, 0xdb, 0x6c, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x90, 0xdc, 0xec, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x46, 0x37, 0x3b, 0x38, 0x13, 0x8c, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x81, 0xec, 0x66, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x07, 0xc7, 0x40, 0xd1, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xf1, 0x6e, 0x76, 0xd0, 0x68, 0x53, 0xe7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x85, 0xf5, 0x66, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x97, 0x37, 0x3b, 0x38, 0xe9, 0x89, 0xd6, 0x6a, 0xf0, 0x72, 0xb6, 0xa0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0x2f, 0x67, 0x0b, 0xea, 0xe0, 0x2d, 0x02, 0xba, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x2f, 0x67, 0x0b, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xf4, 0x37, 0xdb, 0x20, 0xd4, 0x10, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x5d, 0x48, 0x06, 0xf2, 0x74, 0x61, 0xb1, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4f, 0x17, 0xa2, 0x81, 0x3c, 0x5d, 0x08, 0x0f, 0xd6, 0x2a, 0xd4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0xba, 0x90, 0x0e, 0xe4, 0xe9, 0x42, 0x7c, 0x78, 0xf0, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xd3, 0x85, 0x7c, 0x20, 0x4f, 0x17, 0x06, 0x07, 0x05, 0x45, 0x66, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0xfb, 0x66, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x72, 0xe0, 0x6c, 0xc3, 0x9f, 0x4b, 0x1b, 0xbe, 0x6f, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x08, 0x38, 0x3b, 0x38, 0xcf, 0x8e, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xac, 0x70, 0xb6, 0xe1, 0xcf, 0xa5, 0x0d, 0x9e, 0xef, 0x52, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x83, 0x70, 0x76, 0x50, 0x66, 0xe9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x20, 0x71, 0xb6, 0xe1, 0xcf, 0xa5, 0x01, 0x9e, 0xb8, 0xba, 0xb0, 0xb1, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xed, 0xe1, 0x6c, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb2, 0xe2, 0xec, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xce, 0x38, 0x3b, 0x78, 0x4b, 0x83, 0x6e, 0x1d, 0x4e, 0xb1, 0x5a, 0x83, 0xd7, 0xa0, 0xaa, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x70, 0x64, 0x08, 0x3d, 0x78, 0x0d, 0xaa, 0x4a, 0x03, 0xf0, 0x40, 0x96, 0xc6, 0xc6, 0x06, 0x42, 0xf7, 0x06, 0x52, 0x37, 0x57, 0x26, 0x37, 0x07, 0x17, 0x36, 0x56, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x1a, 0x54, 0x95, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc4, 0x8f, 0xb3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x48, 0x72, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x2f, 0x5d, 0x98, 0xdc, 0x59, 0x19, 0x1d, 0xc8, 0x5c, 0xd9, 0xdc, 0x5c, 0xda, 0x9b, 0xdb, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb9, 0xb2, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x40, 0xe4, 0xec, 0xe0, 0xbc, 0x79, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4d, 0xca, 0xd9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0xc1, 0x7b, 0x4f, 0x2c, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0x4f, 0xb8, 0xd0, 0xad, 0x66, 0x01, 0xfc, 0xe6, 0xca, 0xe6, 0xe6, 0xd2, 0xde, 0xdc, 0x5a, 0xe8, 0xc2, 0xe6, 0xd6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0x4f, 0x9b, 0xd5, 0x6d, 0x00, 0xef, 0xb9, 0xb2, 0xb9, 0xb9, 0xb4, 0x37, 0x37, 0x10, 0xb9, 0xb2, 0xb8, 0xba, 0xb2, 0x39, 0xba, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xa7, 0xcd, 0xea, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0xbe, 0x9c, 0x6d, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xcb, 0x9c, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x4b, 0x57, 0x26, 0xd7, 0x96, 0xe6, 0x16, 0xc6, 0x06, 0x92, 0xe6, 0x06, 0x57, 0x47, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x6a, 0xce, 0x0e, 0x5e, 0x19, 0xa5, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x56, 0xcf, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x75, 0xce, 0x0e, 0x5e, 0x2b, 0xa2, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd5, 0x41, 0x67, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xd3, 0x95, 0xc9, 0xb5, 0xa5, 0xb9, 0x85, 0xb1, 0x81, 0x8c, 0xbd, 0xb9, 0x99, 0xa5, 0x9d, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x38, 0xa2, 0xb3, 0x83, 0xb7, 0x6b, 0x69, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xc6, 0x74, 0xb6, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xee, 0xa4, 0xb3, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0xcb, 0xe5, 0x82, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0xa2, 0xce, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xae, 0x73, 0xbb, 0x0b, 0xa3, 0x1b, 0x43, 0x03, 0x99, 0x2b, 0x9b, 0x9b, 0x4b, 0x7b, 0x73, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x05, 0x54, 0x67, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x27, 0x5d, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x71, 0x59, 0x67, 0x07, 0x21, 0xf8, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0x5d, 0x67, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xf8, 0xd3, 0x95, 0xc9, 0xb5, 0xa5, 0xb9, 0x85, 0xb1, 0x81, 0xc8, 0x95, 0x99, 0xc9, 0x95, 0xcd, 0xa1, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xea, 0xaf, 0xb3, 0x83, 0x07, 0xf7, 0x69, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x54, 0x76, 0x76, 0x10, 0x82, 0x0f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x90, 0x76, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xe7, 0x5c, 0x19, 0x5d, 0x1d, 0x1c, 0xc8, 0x5c, 0xd9, 0xdc, 0x5c, 0xda, 0x9b, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x5d, 0x3b, 0x3b, 0x78, 0x8f, 0xbc, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x4d, 0x73, 0x67, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x85, 0x3b, 0x3b, 0x78, 0x30, 0xe3, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe9, 0x7a, 0x67, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xc2, 0x3b, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xf3, 0x3b, 0x3b, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x05, 0xcf, 0x0e, 0xde, 0x58, 0xa5, 0x5b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x1d, 0x9e, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x39, 0xc6, 0xf6, 0x36, 0x57, 0x06, 0x32, 0x57, 0x36, 0x37, 0x97, 0xf6, 0xe6, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x13, 0xcf, 0x0e, 0x5e, 0x16, 0xb0, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xbc, 0xe3, 0xd9, 0x41, 0x08, 0x3e, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7d, 0xe4, 0xd9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbc, 0xdc, 0x85, 0xd1, 0x8d, 0xa1, 0x81, 0xcc, 0x95, 0xcd, 0xcd, 0xa5, 0xbd, 0xb9, 0x81, 0x88, 0xb1, 0xa5, 0xd1, 0xcd, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x48, 0xca, 0xb3, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xbc, 0xa5, 0x37, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfe, 0xcc, 0xb3, 0x83, 0x10, 0x7c, 0xa8, 0xc3, 0x29, 0xb6, 0x06, 0x6f, 0x8a, 0x1c, 0xd9, 0xf0, 0x3c, 0xc9, 0x06, 0xaf, 0x19, 0xb7, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x53, 0xe4, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4e, 0xe8, 0xd9, 0x06, 0xa1, 0x86, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0xd2, 0x42, 0x32, 0x90, 0x49, 0x0b, 0x93, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0xb4, 0x10, 0x0d, 0x64, 0xd2, 0x42, 0x7e, 0xf0, 0xfa, 0xef, 0x94, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x93, 0x16, 0x06, 0x03, 0x99, 0xb4, 0xb0, 0x38, 0x28, 0x28, 0x32, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xf6, 0x3c, 0xdb, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x5a, 0x48, 0x06, 0x52, 0x69, 0xe1, 0xcd, 0x86, 0x27, 0xde, 0x37, 0x78, 0x32, 0xbe, 0xdd, 0x06, 0xeb, 0x55, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x54, 0x5a, 0x08, 0x07, 0x52, 0x69, 0x61, 0x71, 0xf0, 0x2e, 0x7f, 0xbb, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5c, 0xd2, 0xb3, 0x83, 0x17, 0x08, 0xdc, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x92, 0x7a, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xff, 0x5d, 0x59, 0x9a, 0x1c, 0x19, 0x48, 0x09, 0x59, 0x1a, 0x1b, 0x1b, 0x88, 0xd8, 0xdb, 0x1b, 0xdd, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x5e, 0x3d, 0x3b, 0x78, 0x85, 0x96, 0xe3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x35, 0xb2, 0x67, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x74, 0x30, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xfa, 0x7a, 0x76, 0xf8, 0x60, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x48, 0xdc, 0xb3, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xd8, 0x9e, 0x1d, 0x84, 0xe9, 0x58, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xf1, 0x9e, 0x6d, 0x78, 0xe2, 0x7d, 0x83, 0xc7, 0x8f, 0xe2, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x78, 0xdf, 0xb3, 0x83, 0x87, 0xa1, 0xe2, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x55, 0x7c, 0xb6, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x66, 0xe1, 0xb3, 0x83, 0x32, 0x4b, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x92, 0xcf, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xbc, 0x93, 0x0b, 0x83, 0x83, 0x2b, 0x23, 0x03, 0x29, 0x93, 0x93, 0x7b, 0x93, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd9, 0xcb, 0x67, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x69, 0x59, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd5, 0xd3, 0x67, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x8a, 0x3e, 0xdb, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0xb4, 0x2c, 0xa8, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf5, 0xfa, 0x6c, 0xc3, 0x13, 0xef, 0x1b, 0x3c, 0x38, 0x40, 0x77, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x69, 0x9f, 0x1d, 0x3c, 0xfd, 0x16, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x12, 0xef, 0xb3, 0x83, 0x10, 0x7c, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0xa7, 0x85, 0x64, 0x20, 0x9f, 0x16, 0xde, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x1f, 0x66, 0x46, 0x57, 0x26, 0x07, 0x72, 0x16, 0xc6, 0xc6, 0x06, 0x22, 0x57, 0x16, 0x46, 0x96, 0xb7, 0xc1, 0x7a, 0x95, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9f, 0x16, 0xc2, 0x81, 0x7c, 0x5a, 0x58, 0x1c, 0xbc, 0x3f, 0xd8, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x45, 0xfc, 0xec, 0xe0, 0x05, 0x02, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x9a, 0x9f, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xcb, 0x5d, 0x18, 0xdd, 0x18, 0x1a, 0xc8, 0x5c, 0xde, 0x1c, 0x5d, 0x59, 0x1b, 0xc8, 0x5b, 0x1d, 0x1d, 0x5c, 0x1d, 0xdd, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x49, 0x3f, 0x3b, 0x78, 0xbc, 0x7e, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x9d, 0xef, 0x67, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x68, 0x3f, 0xdb, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x99, 0x3f, 0x3b, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xc2, 0x3f, 0x3b, 0x08, 0xc1, 0x87, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xa7, 0xff, 0x6c, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xe4, 0xea, 0xdc, 0x40, 0xda, 0xca, 0xda, 0xde, 0xe4, 0xf2, 0x40, 0xe4, 0xca, 0xe0, 0xde, 0xe4, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf6, 0xff, 0xd9, 0x86, 0x0c, 0xf8, 0xc1, 0x23, 0xa5, 0x52, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x2a, 0x40, 0x3b, 0x08, 0xc1, 0x87, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x48, 0x40, 0xdb, 0xf0, 0xc4, 0xfb, 0x06, 0x0f, 0x7f, 0xd0, 0xdd, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa9, 0x0b, 0x68, 0x07, 0x4f, 0x9f, 0xd0, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x42, 0x02, 0x6d, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x85, 0x0f, 0x68, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa5, 0x15, 0x68, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7a, 0x06, 0xda, 0xc1, 0x5b, 0x1a, 0x74, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x32, 0x0f, 0xb4, 0x0d, 0x4f, 0xbc, 0x6f, 0xf0, 0x3e, 0x5e, 0xdc, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x10, 0x82, 0x76, 0xf0, 0xce, 0x6b, 0xbf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x49, 0xd0, 0x0e, 0x42, 0xf0, 0xa1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x51, 0xd0, 0x36, 0x3c, 0xf1, 0xbe, 0xc1, 0x1b, 0x88, 0x71, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd0, 0x0a, 0xda, 0xc1, 0x2b, 0x90, 0x71, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x78, 0x41, 0x3b, 0x08, 0xc1, 0x87, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x97, 0x41, 0xdb, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x2f, 0xcd, 0x6d, 0x8e, 0x2e, 0x8c, 0x8d, 0x0d, 0x84, 0xac, 0x6c, 0x6e, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xd6, 0xa0, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x75, 0x69, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xf5, 0xa0, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x37, 0xe3, 0x85, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xeb, 0xa0, 0x1d, 0x3c, 0x0a, 0x2f, 0xa4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x82, 0xd0, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xa7, 0x0b, 0x9b, 0x5b, 0x03, 0x31, 0x7b, 0x93, 0x03, 0x99, 0x2b, 0x9b, 0x9b, 0x4b, 0x7b, 0x73, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf9, 0x43, 0x68, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xf6, 0x5e, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0x4b, 0x68, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xe6, 0xca, 0xe6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb6, 0x24, 0xb4, 0x83, 0xf3, 0xe6, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x75, 0x52, 0x68, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x4d, 0x91, 0x23, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe1, 0x4f, 0x68, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0xa7, 0xcd, 0xea, 0x56, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5e, 0x2d, 0x24, 0x03, 0x79, 0xb5, 0xf0, 0x63, 0xc3, 0x13, 0xef, 0x1b, 0x3c, 0x66, 0xea, 0x6e, 0x83, 0xf5, 0x2a, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5e, 0x2d, 0x84, 0x03, 0x79, 0xb5, 0xb0, 0x38, 0x78, 0xbd, 0xbd, 0xc7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf9, 0x15, 0xda, 0xc1, 0x0b, 0x04, 0xee, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x5a, 0x48, 0x06, 0x12, 0x6b, 0xe1, 0xcb, 0x86, 0x27, 0xde, 0x37, 0x78, 0x8f, 0xd7, 0xdd, 0x06, 0xeb, 0x55, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x5a, 0x08, 0x07, 0x12, 0x6b, 0x61, 0x71, 0xf0, 0xc8, 0xb1, 0xbb, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x46, 0x2e, 0xb4, 0x83, 0x17, 0x08, 0xdc, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x0f, 0x86, 0xb6, 0xe1, 0x89, 0xf7, 0x0d, 0x1e, 0x3f, 0x8d, 0xbb, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0xc7, 0xd0, 0x0e, 0x9e, 0x62, 0xf1, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xdc, 0x19, 0xda, 0x41, 0x08, 0x3e, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xce, 0x1a, 0xda, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbc, 0x90, 0x95, 0xc1, 0xc9, 0x95, 0x8d, 0x85, 0xd1, 0x95, 0x91, 0x81, 0xc8, 0x95, 0xb5, 0xbd, 0xd9, 0x95, 0xb5, 0x95, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xea, 0x36, 0xb4, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0x3a, 0x30, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xec, 0x3a, 0xb4, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x6a, 0x20, 0x78, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x69, 0x0e, 0xed, 0x60, 0xbd, 0xd6, 0xf3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x51, 0x7c, 0x68, 0x1b, 0xfe, 0x5c, 0x1a, 0xe0, 0x61, 0x2b, 0xb3, 0x2b, 0x63, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0xf3, 0xd0, 0x36, 0x08, 0x36, 0xd3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0x00, 0xd1, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x3e, 0x3f, 0xb4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x0d, 0xd1, 0x0e, 0x5e, 0x5b, 0x26, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xce, 0x22, 0xda, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xde, 0xdd, 0x88, 0x56, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x53, 0xa2, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x8b, 0xd9, 0x9b, 0x1c, 0x08, 0x59, 0x99, 0x59, 0x58, 0x1d, 0x1b, 0x1d, 0xc8, 0x5c, 0xd9, 0xdc, 0x5c, 0xda, 0x9b, 0xdb, 0xc1, 0x8b, 0x20, 0x77, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xc5, 0x44, 0xdb, 0xf0, 0xc4, 0xfb, 0x06, 0x4f, 0xb8, 0xcf, 0x3d, 0x78, 0xfe, 0x2c, 0x6e, 0xb3, 0x06, 0x6f, 0x35, 0x0c, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0x56, 0xc3, 0xa0, 0x0e, 0xde, 0x0e, 0xa2, 0xbb, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x56, 0xc3, 0xa0, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xcc, 0x4e, 0xb4, 0x0d, 0x82, 0xcd, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf0, 0x58, 0xb4, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x83, 0x57, 0x1e, 0xe6, 0x6e, 0xf8, 0x77, 0x7e, 0x0d, 0x5e, 0x4f, 0x98, 0x5b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x63, 0xa3, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x75, 0xf7, 0x02, 0xd2, 0xf6, 0x46, 0x96, 0x66, 0x96, 0x56, 0x26, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0xb6, 0xd1, 0x0e, 0x1e, 0x73, 0xb4, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xde, 0x38, 0xda, 0x86, 0x3f, 0x97, 0x36, 0x34, 0x3f, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x07, 0x47, 0xdb, 0x20, 0xd8, 0x4c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x36, 0x47, 0xdb, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xe0, 0x8d, 0xd1, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xb1, 0xa3, 0x6d, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x60, 0x30, 0x75, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x11, 0x8f, 0xb6, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xf6, 0x45, 0xa8, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x27, 0x1f, 0x6d, 0xc3, 0x9f, 0x4b, 0x1b, 0x14, 0xad, 0x27, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa5, 0xf6, 0x68, 0x07, 0x6f, 0x78, 0xde, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7c, 0x7e, 0xb4, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xea, 0xe8, 0xcc, 0x66, 0x64, 0x40, 0xe8, 0xca, 0xf0, 0xe8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe5, 0x3f, 0xda, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x16, 0xe0, 0x9e, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x79, 0x90, 0xb6, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x80, 0x82, 0xb4, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8e, 0x85, 0xb4, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x08, 0x22, 0xed, 0xe0, 0x38, 0x00, 0x5b, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0xa0, 0xf7, 0xfe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0x84, 0xe8, 0x40, 0x69, 0x88, 0xdb, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0xd6, 0xe0, 0x3d, 0x92, 0x89, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x14, 0xc2, 0x60, 0xa0, 0x28, 0x84, 0xcd, 0xc1, 0xb1, 0xa5, 0x74, 0x05, 0xf8, 0xcb, 0xec, 0xca, 0xdc, 0xe8, 0x5a, 0xd2, 0xc8, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x47, 0xe6, 0xef, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5d, 0x08, 0x8b, 0x81, 0xba, 0x10, 0x4a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0x85, 0x30, 0x19, 0xa8, 0x0b, 0x61, 0xbb, 0xe1, 0xcf, 0xa5, 0x0d, 0x92, 0x16, 0x84, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x2e, 0x84, 0xe1, 0xc1, 0x23, 0x01, 0x78, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x2e, 0x84, 0xf1, 0x40, 0x5d, 0x08, 0x1d, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0xd9, 0xbe, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0x85, 0x50, 0x70, 0xf0, 0x3e, 0x03, 0xde, 0x83, 0x32, 0x4b, 0xb7, 0xc3, 0x29, 0xb6, 0x06, 0x6f, 0xa8, 0x8b, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xca, 0x10, 0xf2, 0x81, 0xca, 0x10, 0xd6, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x43, 0x18, 0x0c, 0x54, 0x86, 0xb0, 0x39, 0x28, 0x11, 0xdf, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xca, 0x10, 0x46, 0x03, 0x95, 0x21, 0x8c, 0x37, 0xbc, 0xad, 0xb3, 0xc1, 0x23, 0xf3, 0x77, 0xeb, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x59, 0x20, 0xf8, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x2a, 0x43, 0x36, 0x90, 0x2d, 0x89, 0xdb, 0x20, 0xf5, 0xa2, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x65, 0xf4, 0xe0, 0x15, 0x17, 0xbc, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0x3c, 0x73, 0x70, 0x61, 0x63, 0xe5, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x1b, 0x36, 0x78, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x84, 0x8c, 0x1b, 0xb8, 0x22, 0xe3, 0x37, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x84, 0x0c, 0xc9, 0xc0, 0x09, 0x19, 0x66, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xc8, 0x10, 0x0d, 0x9c, 0x90, 0x21, 0xdf, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xe0, 0xc3, 0xd5, 0x89, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x09, 0x19, 0x06, 0x03, 0x27, 0x64, 0x58, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xc7, 0xd8, 0xd8, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x09, 0x19, 0x16, 0x07, 0x2f, 0x40, 0xe1, 0x3d, 0x78, 0x9b, 0xae, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x0d, 0x19, 0x92, 0x81, 0x1b, 0x32, 0x74, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x21, 0x43, 0x34, 0x70, 0x43, 0x86, 0x7c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x0b, 0x78, 0xa7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1b, 0x32, 0x0c, 0x06, 0x6e, 0xc8, 0xb0, 0xdc, 0xf0, 0xe7, 0xd2, 0x00, 0xff, 0x5b, 0x9d, 0x5c, 0x0b, 0x5b, 0x9a, 0x59, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x64, 0x58, 0x1d, 0x3c, 0x8d, 0x86, 0xf7, 0xe0, 0x6d, 0xba, 0x8e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x0d, 0x19, 0xa6, 0x03, 0x37, 0x64, 0xa8, 0xd8, 0xf0, 0xe7, 0xd2, 0x80, 0x87, 0x56, 0x26, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x0d, 0x19, 0xe6, 0x07, 0x2f, 0xd9, 0xe1, 0x3d, 0x68, 0xdb, 0x7a, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x21, 0x43, 0xc7, 0xc0, 0x0d, 0x19, 0xca, 0x36, 0xfc, 0xb9, 0x34, 0xc0, 0x8f, 0x56, 0x26, 0xd7, 0xc2, 0x96, 0x66, 0x56, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x0d, 0x19, 0x8a, 0x0e, 0xde, 0x13, 0xc4, 0x7b, 0xf0, 0x36, 0x5d, 0xc7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x86, 0x0c, 0x6d, 0x03, 0x37, 0x64, 0xa8, 0xdc, 0xf0, 0xe7, 0xd2, 0x06, 0x45, 0xeb, 0xc9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x90, 0xa1, 0xf1, 0xe0, 0x05, 0x48, 0xbc, 0x87, 0x1f, 0x6a, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xc8, 0x90, 0x0c, 0x1c, 0x91, 0x61, 0xbf, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x88, 0x0c, 0xd1, 0xc0, 0x11, 0x19, 0xf2, 0x83, 0x97, 0x05, 0x2c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x47, 0x64, 0x18, 0x0c, 0x1c, 0x91, 0x61, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0x2d, 0x8d, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x23, 0x32, 0x8c, 0x0e, 0xde, 0x36, 0xc5, 0x7b, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x22, 0xc3, 0x6c, 0xe0, 0x88, 0x0c, 0xf3, 0x0d, 0x7f, 0x2e, 0x6d, 0x50, 0xb4, 0x9e, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x11, 0x19, 0xa6, 0x07, 0xcf, 0xca, 0xe2, 0xdd, 0xf0, 0x45, 0xcd, 0x86, 0x3a, 0x1e, 0x78, 0x75, 0x78, 0x49, 0xad, 0x00, 0x1e, 0x73, 0x69, 0x66, 0x74, 0x2d, 0x73, 0x68, 0x6f, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x0b, 0xbd, 0x78, 0x1b, 0x00, 0xaf, 0xc8, 0xca, 0xe6, 0xca, 0xe4, 0xd2, 0xc2, 0xd8, 0xd2, 0xf4, 0xca, 0x40, 0xe0, 0xc2, 0xc6, 0xd6, 0xca, 0xe8, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x40, 0xc4, 0xf2, 0xe8, 0xca, 0xe6, 0xe8, 0xe4, 0xca, 0xc2, 0xda, 0x40, 0xde, 0xe4, 0x40, 0xc6, 0xe4, 0xc2, 0xe6, 0xd0, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x3e, 0x8b, 0x1b, 0xb8, 0xeb, 0x42, 0xfb, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfb, 0x2c, 0x24, 0x03, 0xf7, 0x59, 0x88, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0x0a, 0x9d, 0xcf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x67, 0x21, 0x3a, 0x78, 0xf9, 0x1a, 0xef, 0x86, 0x7f, 0xe7, 0xd7, 0x20, 0x85, 0xce, 0xa7, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x40, 0x8b, 0x3b, 0x78, 0x4c, 0x1a, 0xef, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x03, 0x2d, 0x24, 0x03, 0x07, 0x5a, 0x48, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0xcf, 0xde, 0x0b, 0xaa, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xd0, 0xe2, 0x0e, 0x1e, 0x93, 0xc6, 0xbb, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x42, 0x0b, 0xc9, 0xc0, 0x85, 0x16, 0x86, 0x1b, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0x5d, 0x80, 0xef, 0x5c, 0x9a, 0x19, 0x5d, 0xcb, 0x1c, 0xda, 0x1b, 0x5d, 0x8b, 0x59, 0x58, 0x1a, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x47, 0x5a, 0xdc, 0xc1, 0x63, 0xd2, 0x78, 0x37, 0x28, 0x48, 0x63, 0x37, 0x78, 0x1c, 0x19, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xa4, 0x85, 0xc5, 0xc0, 0x91, 0x16, 0xd6, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xb4, 0x30, 0x19, 0x38, 0xd2, 0xc2, 0xea, 0xa0, 0xc8, 0xc4, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xb4, 0x30, 0x1b, 0x38, 0xd2, 0xc2, 0xee, 0xe0, 0xb0, 0xc0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x69, 0x61, 0x38, 0x70, 0xa4, 0x85, 0xf1, 0x86, 0xb7, 0x75, 0x0e, 0x1e, 0x01, 0xc7, 0xdb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x69, 0x71, 0x07, 0x8f, 0x49, 0xe3, 0xdd, 0xa0, 0x20, 0x8d, 0xdd, 0x60, 0xd9, 0x14, 0xf4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xa5, 0x85, 0xc5, 0xc0, 0x95, 0x16, 0xd6, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xb4, 0x30, 0x19, 0xb8, 0xd2, 0xc2, 0xea, 0xa0, 0xc4, 0xc7, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xb4, 0x30, 0x1b, 0xb8, 0xd2, 0xc2, 0xee, 0xe0, 0xb0, 0xc0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x69, 0x61, 0x38, 0x70, 0xa5, 0x85, 0xf1, 0xc1, 0x7b, 0x18, 0x79, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x2d, 0xee, 0xe0, 0x31, 0x69, 0xbc, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x9e, 0x5c, 0x59, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x6a, 0x21, 0x1e, 0x38, 0xd4, 0x42, 0xcf, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x2d, 0x0c, 0x06, 0x0e, 0xb5, 0xb0, 0x38, 0x28, 0x72, 0x5a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x50, 0x0b, 0x93, 0x81, 0x43, 0x2d, 0xd4, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd4, 0xc2, 0x66, 0xe0, 0x50, 0x0b, 0xb3, 0x83, 0x92, 0x68, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd4, 0xc2, 0x6e, 0xe0, 0x50, 0x0b, 0xc3, 0xc3, 0x83, 0x37, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa1, 0x16, 0x96, 0x03, 0x87, 0x5a, 0x98, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd4, 0xc2, 0x74, 0xe0, 0x50, 0x0b, 0xdb, 0x83, 0x80, 0x65, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xb5, 0x30, 0x1e, 0x38, 0xd4, 0xc2, 0xfa, 0xf0, 0x98, 0x4c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa1, 0x16, 0xf6, 0x03, 0x87, 0x5a, 0x68, 0x39, 0x78, 0x14, 0x20, 0x5d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xa9, 0xc5, 0x1d, 0x3c, 0x26, 0x8d, 0x77, 0x83, 0x82, 0x34, 0x76, 0x83, 0x55, 0xea, 0xbf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa5, 0x16, 0xe2, 0x81, 0x4b, 0x2d, 0xf4, 0x6c, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xd4, 0xc2, 0x60, 0xe0, 0x52, 0x0b, 0x8b, 0x83, 0x22, 0xa7, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xb5, 0x30, 0x19, 0xb8, 0xd4, 0x42, 0xcd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x2d, 0x6c, 0x06, 0x2e, 0xb5, 0x30, 0x3b, 0x28, 0x89, 0x66, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x2d, 0xec, 0x06, 0x2e, 0xb5, 0x30, 0x3c, 0x3c, 0x78, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x6a, 0x61, 0x39, 0x70, 0xa9, 0x85, 0xf9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x2d, 0x4c, 0x07, 0x2e, 0xb5, 0xb0, 0x3d, 0x28, 0x2a, 0xc5, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x2d, 0x8c, 0x07, 0x2e, 0xb5, 0xb0, 0x3e, 0x3c, 0x26, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xa9, 0x85, 0xfd, 0xc0, 0xa5, 0x16, 0x5a, 0x0e, 0x1e, 0x05, 0x48, 0xd7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x6a, 0x71, 0x07, 0x8f, 0x49, 0xe3, 0xdd, 0xa0, 0x20, 0x8d, 0x1d, 0xe0, 0xb5, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5b, 0x2d, 0x4c, 0x06, 0x6e, 0xb5, 0x50, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x56, 0x0b, 0x9b, 0x81, 0x5b, 0x2d, 0xcc, 0x0e, 0x4a, 0xa2, 0xd9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x56, 0x0b, 0xbb, 0x81, 0x5b, 0x2d, 0x0c, 0x0f, 0x0f, 0xde, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb7, 0x5a, 0x58, 0x0e, 0xdc, 0x6a, 0x61, 0xbe, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x56, 0x0b, 0xd3, 0x81, 0x5b, 0x2d, 0x6c, 0x0f, 0x4e, 0xcd, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xad, 0x16, 0xc6, 0x03, 0xb7, 0x5a, 0x58, 0x1f, 0x14, 0x95, 0xe2, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb7, 0x5a, 0xd8, 0x0f, 0xdc, 0x6a, 0xa1, 0xe5, 0xe0, 0x51, 0x80, 0x74, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb1, 0x16, 0x77, 0xf0, 0x98, 0x34, 0xde, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x58, 0x0b, 0xc9, 0xc0, 0xb1, 0x16, 0x4a, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x6b, 0x21, 0x1b, 0x38, 0xd6, 0xc2, 0x76, 0xc3, 0xdb, 0x3a, 0x03, 0xf8, 0xc3, 0xc9, 0xbd, 0xd1, 0xbd, 0x8d, 0xbd, 0xb1, 0xb5, 0xd8, 0x95, 0xc9, 0xcd, 0xa5, 0xbd, 0xb9, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb1, 0x16, 0xc6, 0x03, 0xc7, 0x5a, 0xe8, 0xd8, 0xf0, 0xb6, 0xce, 0x06, 0xcf, 0xaf, 0xe6, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xd6, 0xe2, 0x07, 0xce, 0xb5, 0x50, 0xb6, 0xc1, 0xba, 0x55, 0xa6, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xb5, 0x90, 0x0d, 0x5c, 0x6b, 0xa1, 0x7c, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb5, 0x16, 0xc2, 0x81, 0x6b, 0x2d, 0x54, 0x6c, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x01, 0x3c, 0x85, 0xb5, 0x95, 0xcd, 0xb5, 0xc0, 0xc9, 0xbd, 0xd1, 0xbd, 0x8d, 0xbd, 0xb1, 0xb5, 0xd8, 0x95, 0xc9, 0xcd, 0xa5, 0xbd, 0xb9, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb5, 0x16, 0x3a, 0x06, 0xae, 0xb5, 0xd0, 0x79, 0xf0, 0xfc, 0x78, 0xde, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x5a, 0x0b, 0xa5, 0x03, 0xd7, 0x5a, 0xe8, 0x3e, 0x78, 0xbc, 0x3d, 0x6f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xae, 0xc5, 0x1f, 0x3c, 0x35, 0x9f, 0x77, 0x83, 0x25, 0xf5, 0x4b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb9, 0x16, 0xb2, 0x81, 0x73, 0x2d, 0x14, 0x6d, 0xf0, 0xe6, 0x7f, 0xde, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd7, 0x42, 0xc3, 0xc1, 0x83, 0x1b, 0x7a, 0x0f, 0x1e, 0x6f, 0xcf, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x5a, 0xa8, 0x3a, 0x78, 0x6a, 0x3e, 0xef, 0x41, 0x78, 0xaa, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc1, 0x16, 0x77, 0xf0, 0x98, 0x34, 0xde, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0x3c, 0xe6, 0xdc, 0xc8, 0xe4, 0x5a, 0xe6, 0xd2, 0xf4, 0xca, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x60, 0x0b, 0xa3, 0x81, 0x83, 0x2d, 0x34, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd8, 0xc2, 0x6a, 0xe0, 0x60, 0x0b, 0x1d, 0x1b, 0xde, 0xd6, 0x19, 0xc0, 0x77, 0x2e, 0xcd, 0x8c, 0xae, 0x65, 0x0e, 0x2d, 0x0d, 0xae, 0x65, 0x2e, 0x4d, 0xaf, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd8, 0x42, 0xc9, 0xc0, 0xc1, 0x16, 0x8a, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x6c, 0xa1, 0x65, 0xe0, 0x60, 0x0b, 0x45, 0x07, 0x25, 0xd1, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb0, 0x85, 0xa6, 0x81, 0x83, 0x2d, 0x54, 0x1d, 0x1e, 0xbc, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xb6, 0xd0, 0x35, 0x70, 0xb0, 0x85, 0xc2, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x5b, 0x28, 0x1b, 0x38, 0xd8, 0x42, 0xdb, 0xc1, 0x79, 0x81, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd8, 0x42, 0xdd, 0xc0, 0xc1, 0x16, 0xfa, 0x0e, 0x02, 0x96, 0xb5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x60, 0x0b, 0x8d, 0x03, 0x07, 0x5b, 0xe8, 0x3d, 0x78, 0x14, 0x20, 0x5d, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc5, 0x16, 0x77, 0xf0, 0x98, 0x34, 0xde, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0x3c, 0xe4, 0xc6, 0xec, 0xe4, 0x5a, 0xe6, 0xd2, 0xf4, 0xca, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x62, 0x0b, 0xa3, 0x81, 0x8b, 0x2d, 0x34, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xd8, 0xc2, 0x6a, 0xe0, 0x62, 0x0b, 0x1d, 0x07, 0x2f, 0xec, 0xe8, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xb6, 0x50, 0x32, 0x70, 0xb1, 0x85, 0xe2, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x5b, 0x68, 0x19, 0xb8, 0xd8, 0x42, 0xd1, 0x41, 0x49, 0x34, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x6c, 0xa1, 0x69, 0xe0, 0x62, 0x0b, 0x55, 0x87, 0x07, 0x6f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8b, 0x2d, 0x74, 0x0d, 0x5c, 0x6c, 0xa1, 0x70, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc5, 0x16, 0xca, 0x06, 0x2e, 0xb6, 0xd0, 0x76, 0x90, 0x72, 0x5a, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x6c, 0xa1, 0x6e, 0xe0, 0x62, 0x0b, 0x7d, 0x07, 0x01, 0xcb, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb1, 0x85, 0xc6, 0x81, 0x8b, 0x2d, 0xf4, 0x1e, 0x3c, 0x0a, 0x90, 0xae, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x64, 0x8b, 0x3b, 0x78, 0x4c, 0x1a, 0xef, 0x06, 0x05, 0x69, 0xec, 0x00, 0xff, 0x18, 0x5a, 0xd9, 0xd8, 0xda, 0x5c, 0x5d, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x6c, 0x61, 0x34, 0x70, 0xb2, 0x85, 0xaa, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x5b, 0x58, 0x0d, 0x9c, 0x6c, 0x61, 0x78, 0x50, 0x12, 0xcd, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x5b, 0x58, 0x0e, 0x9c, 0x6c, 0x61, 0x7a, 0x78, 0xf0, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd9, 0xc2, 0x76, 0xe0, 0x64, 0x0b, 0x15, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xb6, 0x30, 0x1e, 0x38, 0xd9, 0xc2, 0xfc, 0x20, 0x9d, 0xd9, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd9, 0xc2, 0x7e, 0xe0, 0x64, 0x0b, 0x0d, 0x07, 0x69, 0x2a, 0xae, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x5b, 0xe8, 0x18, 0x38, 0xd9, 0x42, 0xd3, 0xc1, 0xa3, 0x00, 0xe9, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x2d, 0xee, 0xe0, 0x31, 0x69, 0xbc, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0xbc, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0xe4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb3, 0x85, 0xd1, 0xc0, 0xcd, 0x16, 0x9a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x6c, 0x61, 0x35, 0x70, 0xb3, 0x85, 0xe1, 0x41, 0x49, 0x34, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x6c, 0x61, 0x39, 0x70, 0xb3, 0x85, 0xe9, 0xe1, 0xc1, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x66, 0x0b, 0xdb, 0x81, 0x9b, 0x2d, 0x34, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xd9, 0xc2, 0x78, 0xe0, 0x66, 0x0b, 0xf3, 0x83, 0xb3, 0x37, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb3, 0x85, 0xfd, 0xc0, 0xcd, 0x16, 0x0a, 0x0e, 0x8f, 0xc9, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x6c, 0xa1, 0x62, 0xe0, 0x66, 0x0b, 0x45, 0x07, 0x8f, 0x02, 0xa4, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xb6, 0xb8, 0x83, 0xc7, 0xa4, 0xf1, 0x6e, 0x50, 0x74, 0xd0, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0x04, 0x9e, 0xb8, 0x41, 0x09, 0x1d, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x6d, 0x61, 0x30, 0x70, 0xb6, 0x85, 0xe1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x6d, 0x61, 0x31, 0x70, 0xb6, 0x85, 0xd5, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x6d, 0x61, 0x36, 0x70, 0xb6, 0x85, 0xdd, 0xe1, 0x87, 0x9a, 0x0e, 0xc2, 0x74, 0x6c, 0x83, 0x37, 0x2c, 0x44, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x5b, 0xfc, 0xc0, 0xe9, 0x16, 0xba, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x6d, 0x21, 0x1b, 0xb8, 0xdb, 0xc2, 0x6e, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xdd, 0x16, 0xd2, 0x81, 0xbb, 0x2d, 0xc4, 0x07, 0x05, 0x6c, 0xfe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x6d, 0x21, 0x1f, 0xb8, 0xdb, 0xc2, 0x6c, 0xc3, 0xdb, 0x3a, 0x1b, 0xbc, 0x51, 0xad, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x70, 0x0b, 0xc9, 0xc0, 0xe1, 0x16, 0x16, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xb7, 0x10, 0x0d, 0x1c, 0x6e, 0x21, 0x3b, 0x28, 0x28, 0x32, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc3, 0x2d, 0x84, 0x03, 0x87, 0x5b, 0x18, 0x6c, 0x78, 0x5b, 0xe7, 0xe0, 0x0d, 0x0b, 0x91, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe5, 0x16, 0x7f, 0xf0, 0xfe, 0xc6, 0xde, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xca, 0xc2, 0xe2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x72, 0x0b, 0x83, 0x81, 0xcb, 0x2d, 0x94, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xdc, 0xc2, 0x62, 0xe0, 0x72, 0x0b, 0xa3, 0xc3, 0xa7, 0x80, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe5, 0x16, 0x56, 0x03, 0x97, 0x5b, 0x68, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb9, 0x85, 0xd9, 0xc0, 0xe5, 0x16, 0x96, 0x07, 0x45, 0xf1, 0xef, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb9, 0x85, 0xe9, 0xc0, 0xe5, 0x16, 0xb6, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb9, 0x85, 0xf1, 0xc0, 0xe5, 0x16, 0x0a, 0x0e, 0xde, 0xf4, 0xd9, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb9, 0x85, 0x8a, 0x81, 0xcb, 0x2d, 0x74, 0x1c, 0x1c, 0x97, 0x67, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x2d, 0xfe, 0xe0, 0xfd, 0x8d, 0xbd, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xb7, 0x10, 0x0c, 0x9c, 0x6e, 0x61, 0xb9, 0xc1, 0x31, 0xdc, 0x60, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xb7, 0x90, 0x1c, 0xbc, 0x65, 0xb7, 0x77, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe9, 0x16, 0xa2, 0x81, 0xd3, 0x2d, 0xa4, 0x07, 0x45, 0x26, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xba, 0x85, 0x78, 0xe0, 0x74, 0x0b, 0x9b, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x5b, 0xc8, 0x07, 0x4e, 0xb7, 0x30, 0x38, 0x28, 0x2a, 0xc5, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x2d, 0x2c, 0x06, 0x4e, 0xb7, 0x30, 0x39, 0x38, 0x2e, 0xcf, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x6e, 0x61, 0x34, 0x70, 0xba, 0x85, 0xe1, 0xc1, 0x9b, 0x3e, 0x7b, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xb7, 0x30, 0x1d, 0x38, 0xdd, 0x42, 0xd5, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x2d, 0x6c, 0x07, 0x4e, 0xb7, 0x30, 0x3f, 0x28, 0xf1, 0x71, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x2d, 0xec, 0x07, 0x4e, 0xb7, 0x50, 0xb2, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x74, 0x0b, 0x05, 0x03, 0xa7, 0x5b, 0x68, 0x38, 0x28, 0x2a, 0xc5, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x2d, 0x54, 0x0c, 0x9c, 0x6e, 0xa1, 0xe3, 0xe0, 0xb8, 0x3c, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xba, 0x85, 0x96, 0x81, 0xd3, 0x2d, 0x34, 0x1d, 0xbc, 0xe9, 0xb3, 0xb7, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7a, 0x8b, 0x3b, 0x78, 0x4c, 0x1a, 0xef, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xbd, 0x85, 0x64, 0xe0, 0x7a, 0x0b, 0x65, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xb7, 0x90, 0x0d, 0x5c, 0x6f, 0x61, 0xb3, 0xe1, 0x6d, 0x9d, 0x0d, 0x5e, 0x34, 0xd5, 0xdb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x6f, 0x61, 0x34, 0x70, 0xbd, 0x85, 0xae, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x5b, 0x58, 0x0d, 0x5c, 0x6f, 0x61, 0x78, 0x50, 0x64, 0xe2, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x5b, 0x58, 0x0e, 0x5c, 0x6f, 0x61, 0xbf, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7a, 0x0b, 0xd3, 0x81, 0xeb, 0x2d, 0x6c, 0x0f, 0x0f, 0xde, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x5b, 0x18, 0x0f, 0x5c, 0x6f, 0x61, 0x7e, 0x90, 0xa6, 0xe2, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xbd, 0x85, 0x82, 0x81, 0xeb, 0x2d, 0x54, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xde, 0x42, 0xc3, 0xc0, 0xf5, 0x16, 0x4a, 0x0e, 0x4a, 0x7e, 0xff, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7a, 0x0b, 0x2d, 0x03, 0xd7, 0x5b, 0x68, 0x3a, 0x78, 0xd3, 0x67, 0x6f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x5b, 0xfc, 0xc0, 0xfd, 0x16, 0xd6, 0x1b, 0xac, 0x5b, 0x65, 0x1a, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x6f, 0x61, 0x30, 0x70, 0xbe, 0x85, 0xf9, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0xe0, 0x19, 0xd6, 0x56, 0x36, 0xd7, 0x32, 0x86, 0x56, 0x36, 0xb6, 0x36, 0x57, 0xd7, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xfd, 0x16, 0x7f, 0xf0, 0xee, 0xfe, 0xde, 0x0d, 0x96, 0xd4, 0x2f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf7, 0x5b, 0xc8, 0x06, 0xee, 0xb7, 0xb0, 0x3c, 0x78, 0x57, 0x80, 0xef, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x6f, 0x61, 0x7b, 0xf0, 0xee, 0xfe, 0xde, 0x83, 0xf0, 0x54, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x2e, 0xee, 0xe0, 0x31, 0x69, 0xbc, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0xd0, 0xf6, 0x26, 0x07, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0x42, 0x87, 0x56, 0x06, 0x72, 0x27, 0xf7, 0xe6, 0x76, 0x06, 0xc2, 0x96, 0x66, 0x56, 0xe6, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xc0, 0x63, 0xce, 0x8d, 0x4c, 0xae, 0x85, 0x2e, 0x6d, 0x6c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xb8, 0x30, 0x1a, 0x38, 0xe3, 0x42, 0xcd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x33, 0x2e, 0xac, 0x06, 0xce, 0xb8, 0x30, 0x3c, 0x28, 0x89, 0x66, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x33, 0x2e, 0x2c, 0x07, 0xce, 0xb8, 0x30, 0x3d, 0x3c, 0x78, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x71, 0x61, 0x3b, 0x70, 0xc6, 0x85, 0x82, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x5c, 0x18, 0x0f, 0x9c, 0x71, 0x61, 0x7d, 0x78, 0xf0, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xe3, 0xc2, 0x7c, 0xe0, 0x8c, 0x0b, 0xfb, 0x83, 0x53, 0x73, 0x5b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x19, 0x17, 0x1a, 0x06, 0xce, 0xb8, 0xd0, 0x72, 0xf0, 0xa6, 0xcf, 0xde, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x8e, 0x8b, 0x3b, 0x78, 0x4c, 0x1a, 0xef, 0x06, 0x05, 0x69, 0xec, 0x00, 0x1e, 0x72, 0x63, 0x76, 0x72, 0x2d, 0x74, 0x69, 0x63, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xc7, 0x85, 0xd1, 0xc0, 0x1d, 0x17, 0x6a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x71, 0x61, 0x35, 0x70, 0xc7, 0x85, 0xe1, 0x41, 0x49, 0x34, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x71, 0x61, 0x39, 0x70, 0xc7, 0x85, 0xe9, 0xe1, 0xc1, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x8e, 0x0b, 0xdb, 0x81, 0x3b, 0x2e, 0x14, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xe3, 0xc2, 0x78, 0xe0, 0x8e, 0x0b, 0xeb, 0x83, 0x53, 0x73, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xc7, 0x85, 0xf9, 0xc0, 0x1d, 0x17, 0xf6, 0x07, 0xa7, 0xe6, 0xb6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3b, 0x2e, 0x34, 0x0c, 0xdc, 0x71, 0xa1, 0xe5, 0xe0, 0x4d, 0x9f, 0xbd, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x29, 0x17, 0x77, 0xf0, 0x98, 0x34, 0xde, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0xef, 0xcd, 0xcc, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xb9, 0x90, 0x0f, 0x9c, 0x72, 0x61, 0x70, 0x78, 0x4c, 0x66, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xb9, 0xb8, 0x83, 0xc7, 0xa4, 0xf1, 0x6e, 0x50, 0x74, 0xd0, 0x0e, 0xf8, 0x73, 0x6e, 0x64, 0xf2, 0x02, 0xde, 0x9b, 0x99, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xcb, 0x85, 0xd1, 0xc0, 0x2d, 0x17, 0x6e, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xe5, 0xc2, 0x6a, 0xe0, 0x96, 0x0b, 0x8d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xb9, 0x30, 0x1b, 0xb8, 0xe5, 0xc2, 0xf2, 0xa0, 0x24, 0x9a, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xb9, 0x30, 0x1d, 0xb8, 0xe5, 0xc2, 0xf6, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xb9, 0x30, 0x1e, 0xb8, 0xe5, 0x42, 0xd7, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5b, 0x2e, 0xac, 0x07, 0x6e, 0xb9, 0x50, 0xb0, 0xe1, 0x6d, 0x9d, 0x83, 0x97, 0x21, 0xf9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb7, 0x5c, 0x68, 0x18, 0xb8, 0xe5, 0x42, 0xd5, 0x86, 0xb7, 0x75, 0x36, 0x78, 0xca, 0x45, 0x6f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb7, 0x5c, 0x28, 0x1b, 0xb8, 0xe5, 0x42, 0xe1, 0xc1, 0x9b, 0x3e, 0x7b, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xb9, 0x50, 0x39, 0x70, 0xcb, 0x85, 0x17, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xb9, 0xd0, 0x39, 0x70, 0xcb, 0x85, 0xda, 0xc3, 0x9f, 0x40, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x2d, 0x17, 0x7a, 0x07, 0x6e, 0xb9, 0x50, 0x7d, 0xf0, 0x7a, 0x2c, 0xdf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x96, 0x0b, 0xdd, 0x03, 0xb7, 0x5c, 0x38, 0x71, 0xf0, 0x1e, 0x2e, 0xdf, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x63, 0x2e, 0xee, 0xe0, 0x31, 0x69, 0xbc, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x31, 0x17, 0x92, 0x81, 0x63, 0x2e, 0xf4, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xe6, 0x42, 0x34, 0x70, 0xcc, 0x85, 0xdd, 0x86, 0xb7, 0x75, 0x06, 0xf0, 0x4c, 0x9b, 0x6b, 0xb1, 0x0b, 0x63, 0x4b, 0x23, 0x6b, 0x91, 0x0b, 0x73, 0x5b, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xb9, 0x30, 0x1c, 0x38, 0xe6, 0xc2, 0x78, 0xc3, 0xdb, 0x3a, 0x1b, 0xbc, 0xf6, 0xc8, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x98, 0x0b, 0xeb, 0x81, 0x63, 0x2e, 0xd4, 0x1c, 0xbc, 0x87, 0xcb, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x9a, 0x8b, 0x1f, 0x38, 0xe7, 0x42, 0xe9, 0x06, 0xeb, 0x56, 0x99, 0x86, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x5c, 0x18, 0x0c, 0x5c, 0x73, 0xa1, 0x76, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x35, 0x17, 0x16, 0x03, 0xd7, 0x5c, 0xa8, 0xd9, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x02, 0xf8, 0x09, 0x6b, 0x2b, 0x9b, 0x6b, 0x99, 0x2b, 0x73, 0x23, 0x2b, 0x93, 0x6b, 0x49, 0x6b, 0x83, 0x7b, 0x9b, 0xa3, 0x2b, 0x93, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6b, 0x2e, 0xf4, 0x0c, 0x5c, 0x73, 0xa1, 0xeb, 0xe0, 0xb9, 0x77, 0xbe, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x35, 0x17, 0xca, 0x06, 0xae, 0xb9, 0xd0, 0x7a, 0xf0, 0x1e, 0x2e, 0xdf, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x9c, 0x8b, 0x3f, 0x78, 0x54, 0x9f, 0xef, 0x06, 0x4b, 0xea, 0x97, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x73, 0x2e, 0x64, 0x03, 0xe7, 0x5c, 0x28, 0x5c, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x0b, 0xe0, 0x27, 0xac, 0xad, 0x6c, 0xae, 0x65, 0xae, 0xcc, 0x8d, 0xac, 0x4c, 0xae, 0x25, 0xad, 0x0d, 0xee, 0x6d, 0x8e, 0xee, 0x4d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x73, 0x2e, 0x14, 0x1c, 0xbc, 0x2c, 0xd2, 0x77, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x39, 0x17, 0x1a, 0x06, 0xce, 0xb9, 0xd0, 0x72, 0xf0, 0xdc, 0x3b, 0xdf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x9c, 0x0b, 0x35, 0x03, 0xe7, 0x5c, 0xe8, 0x3b, 0x78, 0x0f, 0x97, 0x6f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xce, 0x85, 0xca, 0x83, 0x47, 0xf5, 0xf9, 0x1e, 0x84, 0xa7, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x74, 0x71, 0x07, 0x8f, 0x49, 0xe3, 0xdd, 0xa0, 0xe8, 0xa0, 0x1d, 0xf0, 0xe5, 0xc6, 0xec, 0xe4, 0x0d, 0x5e, 0x86, 0xe4, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x74, 0x61, 0x34, 0x70, 0xd0, 0x85, 0x1b, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xba, 0xb0, 0x1a, 0x38, 0xe8, 0x42, 0xe3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x2e, 0xcc, 0x06, 0x0e, 0xba, 0xb0, 0x3c, 0x28, 0x89, 0x66, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x2e, 0x4c, 0x07, 0x0e, 0xba, 0xb0, 0x3d, 0x28, 0x2a, 0xc5, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x2e, 0x8c, 0x07, 0x0e, 0xba, 0xd0, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa0, 0x0b, 0xeb, 0x81, 0x83, 0x2e, 0x14, 0x1c, 0xbc, 0x1e, 0xcb, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xe8, 0x42, 0xc3, 0xc0, 0x41, 0x17, 0xaa, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0x53, 0x6c, 0x7a, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xe8, 0x42, 0xd9, 0xc0, 0x41, 0x17, 0x0a, 0x0f, 0xde, 0xf4, 0xd9, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd0, 0x85, 0xca, 0x81, 0x83, 0x2e, 0xbc, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd0, 0x85, 0xce, 0x81, 0x83, 0x2e, 0xd4, 0x1e, 0xfe, 0x04, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xba, 0xd0, 0x3b, 0x70, 0xd0, 0x85, 0xea, 0x83, 0xd7, 0x63, 0xf9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x5d, 0xe8, 0x1e, 0x38, 0xe8, 0xc2, 0x89, 0x83, 0x27, 0xde, 0xfa, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x74, 0x71, 0x07, 0x8f, 0x49, 0xe3, 0xdd, 0xa0, 0xd8, 0xd1, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xba, 0x90, 0x0c, 0x5c, 0x74, 0xa1, 0x67, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x45, 0x17, 0xa2, 0x81, 0x8b, 0x2e, 0xec, 0x0e, 0xde, 0x31, 0xe7, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x74, 0x61, 0x38, 0x70, 0xd1, 0x85, 0xf1, 0x86, 0xb7, 0x75, 0x36, 0x78, 0xde, 0xa8, 0x6f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x45, 0x17, 0xd6, 0x03, 0x17, 0x5d, 0xa8, 0x39, 0x78, 0xe2, 0xad, 0x6f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x49, 0x17, 0x3f, 0x70, 0xd3, 0x85, 0xda, 0x0d, 0xd6, 0xad, 0x32, 0x0d, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xba, 0x30, 0x18, 0x38, 0xe9, 0x42, 0xf1, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x2e, 0x2c, 0x06, 0x4e, 0xba, 0x50, 0xb4, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x05, 0xf0, 0x15, 0xd6, 0x56, 0x36, 0xd7, 0x22, 0x57, 0x36, 0x56, 0x96, 0x66, 0x57, 0x26, 0xd7, 0x92, 0xd6, 0x06, 0xf7, 0x36, 0x47, 0x57, 0x26, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x5d, 0x68, 0x1a, 0x38, 0xe9, 0x42, 0xdb, 0xc1, 0x7b, 0xa2, 0x7d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x2e, 0xd4, 0x0d, 0x9c, 0x74, 0xa1, 0xf7, 0xe0, 0x89, 0xb7, 0xbe, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4d, 0x17, 0x7f, 0xf0, 0x6a, 0x6b, 0xdf, 0x0d, 0x96, 0xd4, 0x2f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x5d, 0xc8, 0x06, 0x6e, 0xba, 0x50, 0xb9, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0xc0, 0x57, 0x58, 0x5b, 0xd9, 0x5c, 0x8b, 0x5c, 0xd9, 0x58, 0x59, 0x9a, 0x5d, 0x99, 0x5c, 0x4b, 0x5a, 0x1b, 0xdc, 0xdb, 0x1c, 0xdd, 0x9b, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x5d, 0xa8, 0x38, 0x78, 0xca, 0xba, 0xef, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x2e, 0x74, 0x0c, 0xdc, 0x74, 0xa1, 0xe7, 0xe0, 0x3d, 0xd1, 0xbe, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4d, 0x17, 0x8a, 0x06, 0x6e, 0xba, 0xd0, 0x78, 0xf0, 0xc4, 0x5b, 0xdf, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa6, 0x0b, 0xa5, 0x07, 0xaf, 0xb6, 0xf6, 0x3d, 0x08, 0x4f, 0xd5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xeb, 0xe2, 0x0e, 0x1e, 0x93, 0xc6, 0xbb, 0x41, 0x41, 0x1a, 0x3b, 0xc0, 0x3b, 0xf6, 0xe6, 0x46, 0x57, 0xe6, 0x46, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x5d, 0x98, 0x0c, 0x9c, 0x75, 0xa1, 0x7b, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x59, 0x17, 0x36, 0x03, 0x67, 0x5d, 0x98, 0x1d, 0x94, 0x44, 0xb3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x59, 0x17, 0x76, 0x03, 0x67, 0x5d, 0x18, 0x1e, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x59, 0x17, 0x96, 0x03, 0x67, 0x5d, 0x68, 0xdd, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd6, 0x85, 0xe9, 0xc0, 0x59, 0x17, 0xd6, 0x07, 0xaf, 0xc7, 0xf2, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xba, 0x30, 0x1f, 0x38, 0xeb, 0x42, 0xe9, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb3, 0x2e, 0xec, 0x07, 0xce, 0xba, 0x50, 0x71, 0xf8, 0x14, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xeb, 0x42, 0xc7, 0xc0, 0x59, 0x17, 0xfa, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x75, 0xa1, 0x64, 0xe0, 0xac, 0x0b, 0x3d, 0x07, 0x45, 0xf1, 0xef, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd6, 0x85, 0xa2, 0x81, 0xb3, 0x2e, 0x34, 0x1d, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x59, 0x17, 0xaa, 0x06, 0xce, 0xba, 0x50, 0x77, 0xf0, 0xa6, 0xcf, 0xde, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb3, 0x2e, 0x14, 0x0e, 0x9c, 0x75, 0xa1, 0xf3, 0xe0, 0xf5, 0x58, 0xbe, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x75, 0xa1, 0x76, 0xe0, 0xac, 0x0b, 0xd5, 0x07, 0x6f, 0xfa, 0xec, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xba, 0xb8, 0x83, 0xc7, 0xa4, 0xf1, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xeb, 0x62, 0x07, 0xee, 0xba, 0xb0, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd7, 0xc5, 0x0f, 0xdc, 0x75, 0x21, 0x3b, 0x78, 0xee, 0x9d, 0xef, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd7, 0x85, 0x70, 0xe0, 0xae, 0x0b, 0x83, 0x83, 0xf7, 0x44, 0xfb, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x75, 0x61, 0x32, 0x70, 0xd7, 0x85, 0xd5, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb9, 0xb2, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xae, 0x0b, 0xb3, 0x81, 0xbb, 0x2e, 0x2c, 0x0f, 0x96, 0xc9, 0x0f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x5d, 0x98, 0x0e, 0xdc, 0x75, 0xa1, 0x63, 0xc3, 0xdb, 0x3a, 0x1b, 0x3c, 0x63, 0xc2, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xae, 0x0b, 0x25, 0x03, 0x77, 0x5d, 0x68, 0xdb, 0xf0, 0xb6, 0xce, 0x06, 0x2f, 0x53, 0xf1, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xeb, 0x42, 0xdd, 0xc0, 0x5d, 0x17, 0x4a, 0x37, 0xbc, 0xad, 0x73, 0xf0, 0x1c, 0xf0, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xae, 0x0b, 0xad, 0x03, 0x77, 0x5d, 0x28, 0xdf, 0xf0, 0xb6, 0xce, 0x06, 0xef, 0xeb, 0xf7, 0xad, 0xd5, 0xe0, 0x3d, 0x92, 0x89, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0xde, 0x23, 0x99, 0xd8, 0x00, 0x78, 0xf7, 0x06, 0x17, 0x16, 0x57, 0x57, 0x06, 0x12, 0x46, 0xf7, 0xd6, 0x96, 0x36, 0x06, 0x42, 0x27, 0x17, 0xe6, 0x36, 0x07, 0xf7, 0x26, 0x47, 0x07, 0x12, 0x46, 0x46, 0x26, 0x57, 0x36, 0x37, 0x07, 0x42, 0xf7, 0x06, 0xf2, 0x26, 0x07, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0x52, 0xe7, 0x96, 0x86, 0xb7, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x1e, 0xc9, 0xc4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xe4, 0x61, 0x30, 0x50, 0xc8, 0xc3, 0x74, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0x78, 0x80, 0x47, 0x1d, 0x5e, 0x18, 0x19, 0x99, 0x5c, 0xd9, 0xdc, 0xbc, 0x1a, 0x3c, 0xbf, 0xa3, 0x77, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0xf9, 0x1d, 0xbd, 0x0d, 0x80, 0x9f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x61, 0x20, 0x32, 0x2d, 0x62, 0x69, 0x74, 0x20, 0x73, 0x68, 0x69, 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0xe8, 0x4a, 0x00, 0x1e, 0x50, 0xe5, 0xc1, 0x95, 0x81, 0xc0, 0xe8, 0x80, 0x9c, 0x85, 0xb1, 0x85, 0xe1, 0xe5, 0x81, 0xbc, 0xc9, 0x81, 0xcc, 0xd1, 0x85, 0xc9, 0x81, 0xb4, 0xb4, 0x80, 0xc8, 0x80, 0x88, 0xe5, 0xd1, 0x95, 0xcd, 0x4b, 0x00, 0x1e, 0x50, 0xe5, 0xc1, 0x95, 0x81, 0xc4, 0xe8, 0x80, 0xc0, 0xb1, 0x85, 0xb9, 0x95, 0xd1, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb4, 0xb4, 0x80, 0xd0, 0x80, 0x88, 0xe5, 0xd1, 0x95, 0xcd, 0x4b, 0x00, 0x1e, 0x50, 0xe5, 0xc1, 0x95, 0x81, 0xc8, 0xe8, 0x80, 0xb4, 0xbd, 0xbd, 0xb9, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb4, 0xb4, 0x80, 0xe0, 0x80, 0x88, 0xe5, 0xd1, 0x95, 0xcd, 0x4b, 0x00, 0x3e, 0x50, 0xe5, 0xc1, 0x95, 0x81, 0xcc, 0xe8, 0x80, 0x8c, 0xbd, 0xb5, 0x95, 0xd1, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb4, 0xb4, 0x80, 0xc4, 0xd8, 0x80, 0x88, 0xe5, 0xd1, 0x95, 0xcd, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x58, 0xdc, 0xc0, 0x3d, 0x16, 0xbf, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x0e, 0x0b, 0xc9, 0xc0, 0x1d, 0x16, 0x26, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xe5, 0xc2, 0xdc, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xc3, 0x42, 0x7c, 0xf0, 0xbe, 0xb7, 0xdf, 0x0d, 0x5f, 0xd4, 0x6c, 0xa8, 0xe3, 0x81, 0x57, 0x27, 0x36, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x21, 0x16, 0x77, 0xf0, 0x6e, 0xb6, 0xdf, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x58, 0x48, 0x06, 0x0e, 0xb1, 0x10, 0x1d, 0x7e, 0xa8, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x53, 0x2c, 0xee, 0xe0, 0xdd, 0x6c, 0xbf, 0x1b, 0x9c, 0x1c, 0xe4, 0xd6, 0xe0, 0x79, 0x70, 0xbf, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x58, 0xc8, 0x07, 0x4e, 0xb1, 0xb0, 0x38, 0x08, 0x4f, 0xd5, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5b, 0x2c, 0x7e, 0xe0, 0x16, 0x0b, 0xd9, 0x86, 0x0c, 0xf8, 0xc0, 0xd7, 0x89, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x2d, 0x16, 0xe2, 0x81, 0x5b, 0x2c, 0xe4, 0x07, 0x01, 0xcb, 0xba, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x8c, 0xc5, 0x0f, 0x1c, 0x63, 0x21, 0xdb, 0x90, 0x01, 0x1f, 0xf8, 0x3a, 0x31, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x18, 0x0b, 0xf1, 0xc0, 0x31, 0x16, 0xf2, 0x83, 0x53, 0x73, 0xdb, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x35, 0x16, 0x3f, 0x70, 0x8d, 0x85, 0x70, 0x43, 0x06, 0x7c, 0xe0, 0xeb, 0xc4, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x63, 0x21, 0x1e, 0xb8, 0xc6, 0x42, 0x7e, 0x70, 0x58, 0x99, 0x5b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xc7, 0xe2, 0x07, 0xce, 0xb1, 0x10, 0x6e, 0xc8, 0x80, 0x0f, 0x7c, 0x9d, 0x18, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x73, 0x2c, 0xc4, 0x03, 0xe7, 0x58, 0x18, 0x1c, 0x1c, 0x5e, 0xe5, 0x5a, 0x0d, 0x1e, 0x39, 0xe7, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xf0, 0xc8, 0x39, 0xdf, 0x06, 0x40, 0x07, 0xb2, 0xb7, 0xb2, 0x39, 0x10, 0x97, 0x39, 0xb4, 0x34, 0x38, 0x90, 0xb6, 0x30, 0xba, 0x31, 0x34, 0x90, 0x34, 0xba, 0x39, 0x90, 0x39, 0xba, 0x30, 0xba, 0x32, 0x32, 0x10, 0x97, 0xb9, 0x34, 0xbd, 0xb2, 0xdf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x64, 0x71, 0x03, 0xb7, 0x59, 0x58, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xc9, 0x42, 0x32, 0x70, 0x93, 0x85, 0xe9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x2c, 0x44, 0x03, 0x37, 0x59, 0xc8, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0xd3, 0xd7, 0xe3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x93, 0x85, 0xec, 0xe0, 0x65, 0xa5, 0xbf, 0x07, 0x6d, 0x5b, 0x8f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x59, 0x18, 0x0c, 0xdc, 0x64, 0x61, 0xb9, 0xe1, 0xcf, 0xa5, 0x0d, 0x9e, 0xef, 0x52, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x59, 0x58, 0x1d, 0xbc, 0x6d, 0xf5, 0xf7, 0xe0, 0x61, 0x73, 0xbf, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x51, 0x16, 0x77, 0xf0, 0x02, 0xd0, 0xdf, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x47, 0x59, 0x48, 0x06, 0x8e, 0xb2, 0x10, 0x1d, 0x3e, 0x58, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xab, 0x2c, 0xee, 0xe0, 0x05, 0xa0, 0xbf, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xb2, 0x90, 0x0c, 0x5c, 0x65, 0x21, 0xdd, 0xf0, 0xb6, 0xce, 0x06, 0xcf, 0x77, 0xa9, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xb2, 0xb8, 0x83, 0x17, 0x80, 0xfe, 0x6e, 0x50, 0x90, 0xc6, 0x6e, 0x70, 0x16, 0x32, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xb2, 0x10, 0x0f, 0x9c, 0x65, 0x61, 0xba, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x2c, 0x0b, 0xf9, 0xc0, 0x59, 0x16, 0x26, 0x07, 0x45, 0xf1, 0xef, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x96, 0x85, 0xcd, 0xc0, 0x59, 0x16, 0x46, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x96, 0x85, 0xd5, 0xc0, 0x59, 0x16, 0x96, 0x07, 0xaf, 0x40, 0x9c, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xb2, 0xb8, 0x83, 0x17, 0x80, 0xfe, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xcb, 0x42, 0x32, 0x70, 0x97, 0x85, 0xd1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x2c, 0x44, 0x03, 0x77, 0x59, 0x48, 0x0f, 0x5f, 0xfc, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x59, 0x88, 0x07, 0xee, 0xb2, 0xb0, 0x38, 0x48, 0xcd, 0x84, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xb2, 0x30, 0x19, 0xb8, 0xcb, 0xc2, 0xe6, 0xf0, 0x98, 0x4c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5d, 0x16, 0x76, 0x03, 0x77, 0x59, 0x18, 0x1e, 0x04, 0x2c, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x66, 0x71, 0x07, 0x2f, 0x00, 0xfd, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x98, 0x85, 0x64, 0xe0, 0x30, 0x0b, 0x8b, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x59, 0xc8, 0x06, 0x0e, 0xb3, 0x10, 0x1e, 0x04, 0x2c, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x66, 0x21, 0x1d, 0x38, 0xcc, 0xc2, 0xe0, 0x20, 0x35, 0x13, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xcc, 0xc2, 0x6e, 0xe0, 0x30, 0x0b, 0xc3, 0x83, 0x80, 0x65, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x2c, 0xee, 0xe0, 0x05, 0xa0, 0xbf, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xb3, 0x90, 0x0c, 0x5c, 0x66, 0x61, 0xb4, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x32, 0x0b, 0xd1, 0xc0, 0x65, 0x16, 0xd2, 0xc3, 0x17, 0xbf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x65, 0x16, 0xe2, 0x81, 0xcb, 0x2c, 0x2c, 0x0e, 0x52, 0x33, 0x61, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x2c, 0x4c, 0x06, 0x2e, 0xb3, 0xb0, 0x39, 0x38, 0x35, 0xb7, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x66, 0x61, 0x37, 0x70, 0x99, 0x85, 0xe1, 0xc1, 0xa9, 0xb9, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xb3, 0xb8, 0x83, 0x17, 0x80, 0xfe, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xcd, 0x42, 0x32, 0x70, 0x9a, 0x85, 0xd1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x2c, 0x44, 0x03, 0xa7, 0x59, 0x48, 0x0f, 0x5f, 0xfc, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x59, 0x88, 0x07, 0x4e, 0xb3, 0xb0, 0x38, 0x48, 0xcd, 0x84, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xb3, 0x30, 0x19, 0x38, 0xcd, 0xc2, 0xe6, 0xe0, 0xb0, 0x32, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x9a, 0x85, 0xdd, 0xc0, 0x69, 0x16, 0x86, 0x07, 0x87, 0x95, 0xb9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xcd, 0xe2, 0x0e, 0x5e, 0x00, 0xfa, 0xbb, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x66, 0x21, 0x19, 0xb8, 0xcd, 0xc2, 0x6a, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x6d, 0x16, 0xa2, 0x81, 0xdb, 0x2c, 0xa4, 0x87, 0x2f, 0x7e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdb, 0x2c, 0xc4, 0x03, 0xb7, 0x59, 0x58, 0x1c, 0xa4, 0x66, 0xc2, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb7, 0x59, 0x98, 0x0c, 0xdc, 0x66, 0x61, 0x74, 0x70, 0x78, 0x95, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xb3, 0xb0, 0x3b, 0x78, 0x01, 0xe8, 0xef, 0xc1, 0xe1, 0x55, 0x6e, 0x05, 0x7c, 0xb6, 0xb7, 0xb1, 0x75, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0xa3, 0x2f, 0x80, 0x1b, 0x80, 0x9f, 0xb5, 0xb2, 0xbc, 0x39, 0x10, 0xb3, 0x37, 0x39, 0x10, 0xb9, 0xb2, 0xb6, 0x37, 0xba, 0x32, 0x90, 0xb9, 0x31, 0xb9, 0xbc, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x47, 0x5f, 0x00, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa5, 0x10, 0x66, 0x03, 0x97, 0x42, 0xe8, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x29, 0x84, 0xdd, 0xc0, 0xa5, 0x10, 0xc6, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xd2, 0xc8, 0xf0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x14, 0xc2, 0xf6, 0xe0, 0x1d, 0x23, 0xc0, 0x87, 0x1f, 0x6a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x21, 0xac, 0x07, 0x2e, 0x85, 0x50, 0xb1, 0xe1, 0xcf, 0xa5, 0x0d, 0x8a, 0xd6, 0x93, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x14, 0x42, 0xc3, 0xc1, 0x13, 0x52, 0x80, 0x0f, 0x3f, 0xd4, 0x74, 0x38, 0xc5, 0x16, 0xc0, 0x0f, 0x2e, 0x6c, 0x6c, 0xad, 0x8c, 0xae, 0x65, 0x8e, 0x2e, 0x8c, 0xae, 0xdc, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x66, 0x0b, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x55, 0x71, 0x03, 0xa7, 0x55, 0xfc, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x2a, 0x24, 0x03, 0x77, 0x55, 0x98, 0x6d, 0xf8, 0x73, 0x69, 0x00, 0x0f, 0xb6, 0xb0, 0x39, 0xba, 0x96, 0xb9, 0x32, 0x37, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xaa, 0xb0, 0x39, 0x78, 0x41, 0x0d, 0xf0, 0xc1, 0x91, 0xaf, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xac, 0x42, 0x32, 0x70, 0x58, 0x85, 0xc5, 0x86, 0x3f, 0x97, 0x06, 0x78, 0xe8, 0xe4, 0xd2, 0xca, 0xe6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xac, 0x42, 0x7e, 0xf0, 0xea, 0x1d, 0xe0, 0x0d, 0x02, 0xe8, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xab, 0x30, 0x38, 0x78, 0xf5, 0x0e, 0xf0, 0xe1, 0x31, 0x99, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb2, 0x0a, 0xc9, 0xc0, 0x65, 0x15, 0x26, 0x1b, 0xfe, 0x5c, 0x1a, 0xe0, 0x99, 0x5b, 0x4b, 0x83, 0x9b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb2, 0x0a, 0xf9, 0xc1, 0x7b, 0x89, 0x80, 0x0f, 0xca, 0x2c, 0xdd, 0x56, 0x80, 0x67, 0x0c, 0x2d, 0x2c, 0xcd, 0xdd, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x58, 0x12, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x18, 0x21, 0x1e, 0xb8, 0x31, 0x42, 0xd7, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x18, 0x21, 0x1f, 0xb8, 0x31, 0x42, 0xcd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1b, 0x23, 0x0c, 0x06, 0x6e, 0x8c, 0xb0, 0x39, 0x78, 0xb6, 0x9b, 0xed, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x63, 0x84, 0xd1, 0xc0, 0x8d, 0x11, 0x66, 0x1b, 0x3e, 0x6a, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1b, 0x23, 0xac, 0x0e, 0xde, 0x59, 0x05, 0x7c, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x31, 0xc2, 0x6e, 0xe0, 0xc6, 0x08, 0x2d, 0x1b, 0x3e, 0x6a, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1b, 0x23, 0x0c, 0x0f, 0x9e, 0xaf, 0x05, 0xbc, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc6, 0x08, 0xcb, 0x81, 0x1b, 0x23, 0xcc, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0xd1, 0x7a, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x46, 0x58, 0x1f, 0x3c, 0x0c, 0x0c, 0xf8, 0xf0, 0x43, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x63, 0x84, 0xfd, 0xc0, 0x8d, 0x11, 0x4a, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xc1, 0xf4, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0x8c, 0x50, 0x70, 0xf0, 0x1e, 0x33, 0xe0, 0x83, 0x33, 0x12, 0x6a, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x46, 0xe8, 0x19, 0xb8, 0x31, 0x42, 0xd5, 0xc1, 0x83, 0x12, 0x6d, 0x9b, 0x05, 0xf0, 0x9c, 0xcb, 0x6b, 0x6b, 0x2b, 0xa3, 0x93, 0x4b, 0x1b, 0x6b, 0x59, 0x2b, 0xcb, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0xd9, 0x06, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf7, 0x41, 0x98, 0x0d, 0xdc, 0x07, 0xa1, 0x65, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0x78, 0x80, 0x6f, 0xdd, 0xdd, 0x5c, 0x5e, 0x5b, 0x5b, 0x19, 0x9d, 0x5c, 0xda, 0xd8, 0x5a, 0x59, 0x7e, 0x38, 0xc5, 0xd6, 0xe0, 0x05, 0x0e, 0x41, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x09, 0xc7, 0x0d, 0x5c, 0xc4, 0xf1, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x25, 0x1c, 0x92, 0x81, 0x6b, 0x38, 0x64, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0xfe, 0x5c, 0xd8, 0x59, 0xb9, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x36, 0x3e, 0xe0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x86, 0xc3, 0x66, 0xe0, 0x18, 0x0e, 0x65, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x0c, 0x87, 0xd1, 0xc0, 0x31, 0x1c, 0x86, 0x07, 0xa5, 0x37, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x0c, 0x87, 0xe5, 0xc0, 0x31, 0x1c, 0x6a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xc3, 0x61, 0x3a, 0x70, 0x0c, 0x87, 0xfd, 0x86, 0x3f, 0x97, 0x36, 0x68, 0xfa, 0x7a, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xe1, 0xb0, 0x3d, 0x78, 0x1d, 0x22, 0xf0, 0x41, 0xdb, 0xd6, 0xe3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x31, 0x1c, 0x0a, 0x06, 0x8e, 0xe1, 0xd0, 0xb2, 0xe1, 0xcf, 0xa5, 0x0d, 0x0e, 0xa6, 0x9f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x0c, 0x87, 0x86, 0x83, 0x27, 0x3a, 0x02, 0x1f, 0x9c, 0x91, 0x50, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xe1, 0xd0, 0x33, 0x70, 0x0c, 0x87, 0xae, 0x0d, 0xff, 0xce, 0x2f, 0xe0, 0x9f, 0x85, 0x9d, 0x95, 0xd5, 0xac, 0xc1, 0xb9, 0xfe, 0x74, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x5c, 0x7f, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x70, 0xd8, 0x0c, 0x9c, 0xc2, 0xa1, 0x63, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xe1, 0x30, 0x1a, 0x38, 0x85, 0xc3, 0xf0, 0x60, 0x15, 0x64, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x0a, 0x87, 0xe5, 0xc0, 0x29, 0x1c, 0xd6, 0x1b, 0xbe, 0xa8, 0xd9, 0x50, 0xc7, 0x03, 0xaf, 0x0e, 0x4f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xe1, 0x30, 0x1f, 0x38, 0x85, 0x43, 0xc5, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0xc0, 0xab, 0xc3, 0x43, 0x9a, 0x35, 0x78, 0x67, 0x25, 0xf0, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x3b, 0x2b, 0x81, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x16, 0x0e, 0x9b, 0x81, 0x5b, 0x38, 0xac, 0x37, 0x7c, 0x30, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xc2, 0x61, 0x36, 0x70, 0x0b, 0x87, 0xdd, 0x41, 0x08, 0x3e, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x2d, 0x1c, 0x86, 0x03, 0xb7, 0x70, 0x18, 0x1f, 0xbc, 0x8e, 0xce, 0xee, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x87, 0xe3, 0x0e, 0xde, 0x86, 0x07, 0xbc, 0xe1, 0xa3, 0xf6, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x87, 0x43, 0x32, 0x70, 0x0e, 0x87, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x70, 0x88, 0x06, 0xce, 0xe1, 0x90, 0x6f, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x75, 0x4b, 0x21, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x39, 0x1c, 0x06, 0x03, 0xe7, 0x70, 0xe8, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x73, 0x38, 0x2c, 0x06, 0xce, 0xe1, 0xb0, 0x3a, 0x38, 0x16, 0x8d, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x70, 0x98, 0x0d, 0x9c, 0xc3, 0xa1, 0x63, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x39, 0x1c, 0x76, 0x03, 0xe7, 0x70, 0x18, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0xa6, 0xaf, 0xc7, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x1c, 0x0e, 0xc3, 0x83, 0x97, 0x0d, 0x03, 0x1f, 0xb4, 0x6d, 0x3d, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xc3, 0x61, 0x3d, 0x70, 0x0e, 0x87, 0x8a, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x30, 0xfd, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x73, 0x38, 0xcc, 0x0f, 0x5e, 0x97, 0x0c, 0x7c, 0x70, 0x46, 0x42, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x87, 0x43, 0xc9, 0xc0, 0x39, 0x1c, 0x8a, 0x36, 0xfc, 0x3b, 0xbf, 0x06, 0xe7, 0xfa, 0xd3, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xe1, 0xd0, 0x34, 0x70, 0x0e, 0x87, 0xaa, 0xc3, 0x0f, 0x35, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xc3, 0x21, 0x19, 0xb8, 0x87, 0x43, 0xc1, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7b, 0x38, 0x44, 0x03, 0xf7, 0x70, 0xc8, 0x37, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0x2a, 0x90, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x0f, 0x87, 0xc1, 0xc0, 0x3d, 0x1c, 0xf6, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7b, 0x38, 0x4c, 0x0e, 0xde, 0xbd, 0x0d, 0xbc, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x1e, 0x0e, 0x9b, 0x81, 0x7b, 0x38, 0x0c, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0xd3, 0xd7, 0xe3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x0f, 0x87, 0xd1, 0xc1, 0x03, 0xc3, 0x81, 0x0f, 0xda, 0xb6, 0x1e, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xe1, 0xb0, 0x1c, 0xb8, 0x87, 0xc3, 0x7c, 0xc3, 0x9f, 0x4b, 0x1b, 0x1c, 0x4c, 0x3f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x1e, 0x0e, 0xd3, 0x83, 0x47, 0x9e, 0x03, 0x1f, 0x9c, 0x91, 0x50, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x88, 0x43, 0x32, 0x70, 0x10, 0x87, 0x9e, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x71, 0x88, 0x06, 0x0e, 0xe2, 0x90, 0x1f, 0x3c, 0x11, 0x19, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x88, 0xc3, 0x60, 0xe0, 0x20, 0x0e, 0xfb, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x41, 0x1c, 0x26, 0x07, 0xcf, 0x98, 0x07, 0xde, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x10, 0x87, 0xcd, 0xc0, 0x41, 0x1c, 0x86, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xe9, 0xeb, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x88, 0xc3, 0xe8, 0xe0, 0xbd, 0xf8, 0xc0, 0x07, 0x6d, 0x5b, 0x8f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x71, 0x58, 0x0e, 0x1c, 0xc4, 0x61, 0xbe, 0xe1, 0xcf, 0xa5, 0x0d, 0x0e, 0xa6, 0x9f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x10, 0x87, 0xe9, 0xc1, 0x9b, 0xfd, 0x81, 0x0f, 0xce, 0x48, 0xa8, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x71, 0x28, 0x18, 0x38, 0x88, 0x43, 0xcd, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x20, 0x0e, 0x15, 0x07, 0x8f, 0x26, 0x08, 0xde, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0x8d, 0x0f, 0xb8, 0x6a, 0x05, 0xf0, 0x98, 0x43, 0x4b, 0x83, 0x6b, 0x69, 0x2b, 0xa3, 0x0b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x1e, 0x99, 0x10, 0xdc, 0x00, 0xf8, 0x08, 0x27, 0xf7, 0x46, 0x56, 0x37, 0x56, 0x06, 0x32, 0x97, 0xa6, 0x57, 0x06, 0x82, 0x92, 0xe6, 0x06, 0x22, 0x96, 0x47, 0x57, 0x36, 0x97, 0x02, 0x12, 0xe6, 0x46, 0x06, 0x12, 0x46, 0x46, 0x26, 0x57, 0x36, 0x37, 0x07, 0x22, 0x17, 0xe6, 0xb6, 0x06, 0x62, 0xf6, 0x26, 0x07, 0xe2, 0x32, 0x87, 0x96, 0x06, 0xaf, 0x04, 0xf0, 0x00, 0xa3, 0x03, 0x72, 0x16, 0xc6, 0x16, 0x86, 0x97, 0x07, 0xf2, 0x26, 0x07, 0x32, 0x47, 0x17, 0x26, 0x2f, 0x01, 0x1e, 0x31, 0x3a, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0xf4, 0x12, 0xf0, 0xca, 0xe8, 0x80, 0xb4, 0xbd, 0xbd, 0xb9, 0x4b, 0xc0, 0x3f, 0xa3, 0x03, 0x32, 0xf6, 0xd6, 0x56, 0x46, 0xd7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x87, 0x71, 0x03, 0x77, 0x62, 0xc8, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x87, 0x21, 0x19, 0xb8, 0x0f, 0x43, 0xbc, 0xe1, 0xcf, 0xa5, 0x0d, 0x9a, 0xbe, 0x1e, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfb, 0x30, 0x44, 0x07, 0x8f, 0xf1, 0x08, 0x3e, 0x68, 0xdb, 0x7a, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xc4, 0xb8, 0x83, 0x17, 0x6e, 0x04, 0x6f, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x10, 0x43, 0x32, 0x70, 0x20, 0x86, 0xdd, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x03, 0x31, 0x44, 0x03, 0x07, 0x62, 0x18, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0xe7, 0xbb, 0x54, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x81, 0x18, 0xf2, 0x83, 0x17, 0xa6, 0x04, 0x1f, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xc4, 0xb0, 0x18, 0x38, 0x10, 0xc3, 0x6c, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0x0f, 0xee, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xc4, 0x30, 0x39, 0x78, 0xdc, 0x4b, 0xf0, 0x86, 0x7f, 0xe7, 0x37, 0x78, 0x2c, 0xdf, 0x6f, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x89, 0x18, 0x77, 0xf0, 0xc2, 0x8d, 0xe0, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0xbe, 0xc1, 0xf3, 0x5d, 0x2a, 0x37, 0x28, 0xa1, 0x63, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x31, 0xc4, 0x03, 0x27, 0x62, 0xc8, 0x0f, 0x3f, 0xd4, 0x1c, 0x84, 0xe9, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x22, 0x86, 0xc5, 0xc0, 0x89, 0x18, 0xd6, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xc4, 0x30, 0x19, 0x38, 0x11, 0xc3, 0xea, 0xa0, 0x28, 0xfe, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xc4, 0x30, 0x1b, 0x38, 0x11, 0xc3, 0xee, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xc4, 0x30, 0x1c, 0x38, 0x11, 0xc3, 0xf8, 0xe0, 0x15, 0x88, 0x33, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x91, 0x18, 0x77, 0xf0, 0xc2, 0x8d, 0xe0, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x47, 0x62, 0x48, 0x06, 0x8e, 0xc4, 0xb0, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x24, 0x86, 0x68, 0xe0, 0x48, 0x0c, 0xe9, 0xe1, 0x8b, 0xdf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x48, 0x0c, 0xf1, 0xc0, 0x91, 0x18, 0x26, 0x07, 0x8f, 0xcf, 0xfd, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xc4, 0xb0, 0x19, 0x38, 0x12, 0xc3, 0xe8, 0x20, 0x60, 0x59, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xc4, 0xb0, 0x1b, 0x38, 0x12, 0xc3, 0x7e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x91, 0x18, 0x86, 0x03, 0x47, 0x62, 0x58, 0x1e, 0x04, 0x2c, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x24, 0x86, 0xe9, 0xc0, 0x91, 0x18, 0xe6, 0x1b, 0xde, 0xb8, 0x3b, 0x78, 0xa7, 0xe0, 0x6f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x25, 0xc6, 0x1d, 0xbc, 0x70, 0x23, 0x78, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x95, 0x18, 0x92, 0x81, 0x2b, 0x31, 0xac, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x89, 0x21, 0x1a, 0xb8, 0x12, 0x43, 0x7a, 0xf8, 0xe2, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x12, 0x43, 0x3c, 0x70, 0x25, 0x86, 0xc9, 0xc1, 0xe3, 0x73, 0x7f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2b, 0x31, 0x6c, 0x06, 0xae, 0xc4, 0x30, 0x3a, 0x38, 0x35, 0xb7, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x89, 0x61, 0x37, 0x70, 0x25, 0x86, 0xfd, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2b, 0x31, 0x0c, 0x07, 0xae, 0xc4, 0xb0, 0x3c, 0x38, 0x35, 0xb7, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x62, 0x98, 0x0e, 0x5c, 0x89, 0x61, 0xbe, 0xe1, 0x8d, 0xbb, 0x83, 0x47, 0x21, 0xfe, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x62, 0xdc, 0xc1, 0x0b, 0x37, 0x82, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x89, 0x21, 0x19, 0x38, 0x13, 0xc3, 0x6a, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x99, 0x18, 0xa2, 0x81, 0x33, 0x31, 0xa4, 0x87, 0x2f, 0x7e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x33, 0x31, 0xc4, 0x03, 0x67, 0x62, 0x98, 0x1c, 0x3c, 0x3e, 0xf7, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x13, 0xc3, 0x66, 0xe0, 0x4c, 0x0c, 0xa3, 0x83, 0xc3, 0xca, 0x5c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x99, 0x18, 0x76, 0x03, 0x67, 0x62, 0x28, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x26, 0x86, 0xe1, 0xc0, 0x99, 0x18, 0x96, 0x07, 0x87, 0x95, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x4c, 0x0c, 0xd3, 0x81, 0x33, 0x31, 0xec, 0x37, 0xbc, 0x71, 0x77, 0xf0, 0x0c, 0xc7, 0xdf, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x4e, 0x8c, 0x3b, 0x78, 0xe1, 0x46, 0xf0, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3b, 0x31, 0x76, 0xe0, 0x4e, 0x0c, 0xc1, 0xc1, 0xe1, 0x55, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x13, 0x43, 0x32, 0x70, 0x27, 0x86, 0x78, 0xc3, 0x1b, 0x77, 0x07, 0x6f, 0x9f, 0xfc, 0x6d, 0xd6, 0xe0, 0x50, 0x5d, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x90, 0xb8, 0x81, 0x5c, 0x49, 0xfc, 0x06, 0x65, 0x19, 0xf6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0d, 0x09, 0xc9, 0x40, 0x36, 0x24, 0x6c, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x43, 0x42, 0x34, 0x90, 0x0d, 0x09, 0x93, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x65, 0x6e, 0xf9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x43, 0x42, 0x7c, 0xf0, 0xea, 0xcc, 0xe0, 0x83, 0xe7, 0xde, 0x83, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x90, 0xb0, 0x19, 0xc8, 0x86, 0x84, 0xe9, 0x86, 0x3f, 0x97, 0x36, 0x28, 0x0b, 0x8b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1b, 0x12, 0x76, 0x07, 0x8f, 0xff, 0x0c, 0x3e, 0x28, 0xb3, 0x74, 0x9b, 0x65, 0xd6, 0xa0, 0xd0, 0x10, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x49, 0xfc, 0x40, 0xaa, 0x24, 0x0c, 0x36, 0x28, 0xed, 0x2d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x49, 0xc8, 0x06, 0x72, 0x24, 0x61, 0xb0, 0xe1, 0xcf, 0xa5, 0xc1, 0xd3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x91, 0x84, 0xf4, 0xe0, 0x69, 0xa9, 0xc1, 0x07, 0x65, 0x96, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x49, 0xe2, 0x0f, 0xde, 0x69, 0x1a, 0xbc, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x92, 0x84, 0xec, 0xe0, 0x9d, 0xa6, 0xc1, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x24, 0x21, 0x1f, 0x48, 0x92, 0x84, 0xc1, 0xe1, 0x83, 0xd5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x92, 0xc4, 0x1f, 0xbc, 0xd3, 0x34, 0x78, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x24, 0x64, 0x03, 0x59, 0x92, 0xb0, 0xd9, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x25, 0x09, 0xe9, 0x40, 0x96, 0x24, 0xc4, 0x07, 0x65, 0xf4, 0xf9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x49, 0x42, 0x3e, 0x90, 0x25, 0x09, 0x93, 0x83, 0xc2, 0xcb, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x92, 0x84, 0xd5, 0x40, 0x96, 0x24, 0xcc, 0x0e, 0x8a, 0x9c, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x93, 0xc4, 0x1f, 0xbc, 0xd3, 0x34, 0x78, 0x83, 0x82, 0x34, 0x76, 0x83, 0x64, 0xa4, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4d, 0x12, 0x06, 0x03, 0x69, 0x92, 0xb0, 0x39, 0x78, 0x06, 0x60, 0xca, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x49, 0xe2, 0x0f, 0xde, 0x69, 0x1a, 0xbc, 0x41, 0xd1, 0x41, 0xbb, 0x41, 0x1b, 0x33, 0xe0, 0x1b, 0xbc, 0x10, 0x30, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x93, 0x84, 0xd5, 0x40, 0x9e, 0x24, 0x54, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x93, 0x84, 0xd9, 0x40, 0x9e, 0x24, 0xb4, 0x6c, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x0c, 0xf0, 0xc0, 0x85, 0x8d, 0xd1, 0xd1, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9e, 0x24, 0x8c, 0x0f, 0xde, 0x17, 0x1d, 0xbc, 0xe1, 0x6d, 0x9d, 0x83, 0x87, 0xa0, 0x38, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x92, 0x50, 0x33, 0x90, 0x27, 0x09, 0x4d, 0x07, 0xcf, 0x00, 0x4c, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x25, 0xf1, 0x07, 0xef, 0x34, 0x0d, 0xde, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xe4, 0xde, 0xdc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x94, 0x84, 0x7c, 0x20, 0x51, 0x12, 0x0a, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x4a, 0xc2, 0x60, 0x20, 0x51, 0x12, 0x96, 0x1b, 0xde, 0xd6, 0x19, 0xc0, 0x43, 0xee, 0xad, 0xce, 0x8d, 0x8c, 0x4e, 0x2e, 0x0d, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x94, 0x84, 0xe9, 0x40, 0xa2, 0x24, 0xac, 0x0f, 0xda, 0xe7, 0x01, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x25, 0x61, 0x3e, 0x90, 0x28, 0x09, 0x2d, 0x1b, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0x5f, 0xe6, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x92, 0xd0, 0x70, 0xf0, 0x8a, 0xf4, 0xe0, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x30, 0xff, 0xbb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x49, 0xa8, 0x19, 0x48, 0x94, 0x84, 0xbe, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0x80, 0x6c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x28, 0x09, 0x45, 0x07, 0x8f, 0x80, 0x0f, 0xde, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0x78, 0xb2, 0xb2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x94, 0x84, 0xae, 0x83, 0x47, 0xc0, 0x07, 0x1f, 0x3c, 0xa8, 0x3d, 0xb8, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0x5f, 0x4e, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x92, 0x90, 0x0c, 0x64, 0x4a, 0x42, 0xcd, 0x06, 0xeb, 0x56, 0x99, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x94, 0x84, 0x70, 0x20, 0x53, 0x12, 0x3a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x4a, 0x42, 0x3a, 0x90, 0x29, 0x09, 0x83, 0x0d, 0x9f, 0xbb, 0x0c, 0x9e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa6, 0x24, 0xe4, 0x07, 0xaf, 0x02, 0x10, 0x3e, 0x28, 0xa3, 0xcf, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x49, 0x58, 0x0c, 0x64, 0x4a, 0xc2, 0x70, 0xc3, 0xe7, 0x2e, 0x03, 0x5e, 0x99, 0x5b, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x92, 0xb0, 0x3a, 0x78, 0x83, 0x81, 0xf0, 0x41, 0x4a, 0x51, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x29, 0x09, 0xcb, 0x81, 0x4c, 0x49, 0x18, 0x1f, 0xb4, 0xcf, 0x03, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x4a, 0xc2, 0x7a, 0x20, 0x53, 0x12, 0x2a, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x3d, 0xe0, 0xc9, 0xbd, 0xb9, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x92, 0x50, 0x32, 0x90, 0x29, 0x09, 0x2d, 0x07, 0x05, 0x6c, 0xfe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x4a, 0xe2, 0x0f, 0xde, 0x69, 0x1a, 0xbc, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0xb1, 0x7b, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0x92, 0x90, 0x0d, 0xa4, 0x4a, 0x42, 0xbe, 0xe1, 0xe3, 0xa8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x95, 0x84, 0x74, 0x20, 0x55, 0x12, 0xe2, 0x83, 0x32, 0xfa, 0xbc, 0xd5, 0xe0, 0x20, 0xcf, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x91, 0xf8, 0x81, 0x04, 0x49, 0x18, 0x6c, 0x50, 0xda, 0x5b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x91, 0x90, 0x0d, 0x64, 0x46, 0xc2, 0x60, 0xc3, 0x9f, 0x4b, 0x83, 0xa7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x19, 0x09, 0xe9, 0xc1, 0x1b, 0x43, 0x84, 0x0f, 0xca, 0x2c, 0xdd, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x8d, 0xc4, 0x1f, 0x3c, 0xd8, 0x43, 0x78, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1a, 0x09, 0xd9, 0xc1, 0x83, 0x3d, 0x84, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x46, 0x42, 0x3e, 0x90, 0x1a, 0x09, 0x83, 0xc3, 0x07, 0xab, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1b, 0x89, 0x3f, 0x78, 0xb0, 0x87, 0xf0, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x48, 0xc8, 0x06, 0x72, 0x23, 0x61, 0xb3, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x37, 0x12, 0xd2, 0x81, 0xdc, 0x48, 0x88, 0x0f, 0xca, 0xe8, 0xf3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x8d, 0x84, 0x7c, 0x20, 0x37, 0x12, 0x26, 0x07, 0x85, 0x97, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1b, 0x09, 0xab, 0x81, 0xdc, 0x48, 0x98, 0x1d, 0x14, 0x39, 0xad, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1c, 0x89, 0x3f, 0x78, 0xb0, 0x87, 0xf0, 0x06, 0x05, 0x69, 0xec, 0x06, 0xc9, 0x48, 0x71, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x72, 0x24, 0x0c, 0x06, 0x92, 0x23, 0x61, 0x73, 0xf0, 0x0c, 0xc0, 0x94, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x8e, 0xc4, 0x1f, 0x3c, 0xd8, 0x43, 0x78, 0x83, 0xa2, 0x83, 0x76, 0x83, 0xa2, 0xb6, 0x78, 0x83, 0x17, 0x02, 0xa6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x91, 0xb0, 0x1a, 0xc8, 0x8e, 0x84, 0xa6, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x91, 0x30, 0x1b, 0xc8, 0x8e, 0x84, 0x92, 0x0d, 0x0f, 0x4a, 0x6e, 0x70, 0xf6, 0x8c, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x48, 0xd8, 0x1e, 0x3c, 0x32, 0x49, 0xf8, 0xe0, 0x15, 0xd6, 0xc1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x76, 0x24, 0xb4, 0x0c, 0x64, 0x47, 0x42, 0xd1, 0xc1, 0x33, 0x00, 0x53, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x48, 0xfc, 0xc1, 0x83, 0x3d, 0x84, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb9, 0x37, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x23, 0x21, 0x1f, 0x48, 0x8f, 0x84, 0xca, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x91, 0x30, 0x18, 0x48, 0x8f, 0x84, 0xe5, 0xc1, 0x4b, 0xc5, 0x83, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x48, 0x98, 0x0e, 0xa4, 0x47, 0xc2, 0xfa, 0xa0, 0xf4, 0x33, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x23, 0x61, 0x3e, 0x90, 0x1e, 0x09, 0x35, 0x1b, 0x1e, 0x94, 0xdc, 0xe0, 0x19, 0xea, 0xc1, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1e, 0x09, 0x0d, 0x07, 0xaf, 0xf4, 0x12, 0xde, 0xf0, 0xb6, 0xce, 0xe2, 0x38, 0x07, 0x07, 0x79, 0xb6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x48, 0xe8, 0x19, 0x48, 0x8f, 0x84, 0xc6, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0x80, 0x6c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1e, 0x09, 0x4d, 0x07, 0x8f, 0x2b, 0x13, 0xde, 0xf0, 0xa0, 0xe4, 0x06, 0x2f, 0xa2, 0x0f, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x48, 0x28, 0x3b, 0x78, 0x5c, 0x99, 0xf0, 0xc1, 0xe3, 0xc4, 0x84, 0xdb, 0xa0, 0x18, 0x90, 0xdd, 0xf0, 0xe5, 0xe4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1f, 0x09, 0xc9, 0x40, 0x7e, 0x24, 0xd4, 0x6c, 0xb0, 0x6e, 0x95, 0x69, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x48, 0x08, 0x07, 0xf2, 0x23, 0xa1, 0x63, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7e, 0x24, 0xa4, 0x03, 0xf9, 0x91, 0x30, 0xd8, 0xf0, 0xb9, 0xcb, 0xe0, 0xe9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x47, 0x42, 0x7e, 0xf0, 0xb2, 0x3a, 0xe1, 0x83, 0x32, 0xfa, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x8f, 0x84, 0xc5, 0x40, 0x7e, 0x24, 0x0c, 0x37, 0x7c, 0xee, 0x32, 0xe0, 0x95, 0xb9, 0xe5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1f, 0x09, 0xab, 0x83, 0x77, 0xec, 0x09, 0x1f, 0xa4, 0x14, 0xc5, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x91, 0xb0, 0x1c, 0xc8, 0x8f, 0x84, 0xf1, 0x41, 0xe9, 0x67, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x47, 0xc2, 0x7a, 0x20, 0x3f, 0x12, 0x2a, 0x0e, 0x9e, 0xf8, 0x20, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x47, 0x42, 0xc9, 0x40, 0x7e, 0x24, 0xb4, 0x1c, 0x14, 0xb0, 0xf9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x20, 0x89, 0x3f, 0x78, 0xb0, 0x87, 0xf0, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xc5, 0xee, 0xf9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x48, 0x42, 0x36, 0x90, 0x20, 0x09, 0xf9, 0x86, 0x8f, 0xa3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x41, 0x12, 0xd2, 0x81, 0x04, 0x49, 0x88, 0x0f, 0xca, 0xe8, 0xf3, 0x66, 0x0d, 0xdf, 0xb7, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x24, 0x7e, 0x20, 0x2d, 0x12, 0x06, 0x1b, 0x94, 0xf6, 0x96, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x24, 0x64, 0x03, 0xf9, 0x90, 0x30, 0xd8, 0xf0, 0xe7, 0xd2, 0xe0, 0xe9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x43, 0x42, 0x7a, 0xf0, 0xe2, 0x4a, 0xe1, 0x83, 0x32, 0x4b, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x22, 0xf1, 0x07, 0xcf, 0x97, 0x14, 0xde, 0xf0, 0x15, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x44, 0x42, 0x76, 0xf0, 0x7c, 0x49, 0xe1, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0x91, 0x90, 0x0f, 0x24, 0x44, 0xc2, 0xe0, 0xf0, 0xc1, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x44, 0xe2, 0x0f, 0x9e, 0x2f, 0x29, 0xbc, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x23, 0x12, 0xb2, 0x81, 0x8c, 0x48, 0xd8, 0x6c, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x88, 0x84, 0x74, 0x20, 0x23, 0x12, 0xe2, 0x83, 0x32, 0xfa, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x22, 0x21, 0x1f, 0xc8, 0x88, 0x84, 0xc9, 0x41, 0xe1, 0x65, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x44, 0xc2, 0x6a, 0x20, 0x23, 0x12, 0x66, 0x07, 0x45, 0x4e, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x44, 0xe2, 0x0f, 0x9e, 0x2f, 0x29, 0xbc, 0x41, 0x41, 0x1a, 0xbb, 0x41, 0x32, 0x52, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x12, 0x09, 0x83, 0x81, 0x94, 0x48, 0xd8, 0x1c, 0x3c, 0x03, 0x30, 0x65, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x22, 0xf1, 0x07, 0xcf, 0x97, 0x14, 0xde, 0xa0, 0xe8, 0xa0, 0xdd, 0xa0, 0xa9, 0xa2, 0xac, 0x0d, 0x5e, 0x08, 0x98, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x44, 0xc2, 0x6a, 0x20, 0x27, 0x12, 0x9a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x44, 0xc2, 0x6c, 0x20, 0x27, 0x12, 0x4a, 0x36, 0x3c, 0x28, 0xb9, 0x41, 0x4b, 0x18, 0x9c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x13, 0x09, 0xdb, 0x83, 0x67, 0xf7, 0x0a, 0x1f, 0xbc, 0xc2, 0x3a, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x89, 0x84, 0x96, 0x81, 0x9c, 0x48, 0x28, 0x3a, 0x78, 0x06, 0x60, 0x4a, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x14, 0x89, 0x3f, 0x78, 0xbe, 0xa4, 0xf0, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x27, 0xf7, 0xe6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x24, 0xe4, 0x03, 0x49, 0x91, 0x50, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x29, 0x12, 0x06, 0x03, 0x49, 0x91, 0xb0, 0x3c, 0x78, 0xa9, 0x78, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x14, 0x09, 0xd3, 0x81, 0xa4, 0x48, 0x58, 0x1f, 0xb4, 0x74, 0x96, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x45, 0xc2, 0x7c, 0x20, 0x29, 0x12, 0x6a, 0x36, 0x3c, 0x28, 0xb9, 0xc1, 0x33, 0xd4, 0x83, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x29, 0x12, 0x1a, 0x0e, 0x9e, 0x2f, 0x2d, 0xbc, 0xe1, 0x6d, 0x9d, 0xc5, 0xf1, 0xa0, 0x99, 0xee, 0x88, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x48, 0xe8, 0x19, 0x48, 0x8a, 0x84, 0xc6, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0x80, 0x6c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x14, 0x09, 0x4d, 0x07, 0x8f, 0xce, 0x16, 0xde, 0xf0, 0xa0, 0xe4, 0x06, 0x2f, 0xa2, 0x0f, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x48, 0x28, 0x3b, 0x78, 0x74, 0xb6, 0xf0, 0xc1, 0xab, 0xad, 0x85, 0xdb, 0xa0, 0x18, 0x90, 0xdd, 0xf0, 0xe5, 0xe4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x15, 0x09, 0xc9, 0x40, 0x56, 0x24, 0xd4, 0x6c, 0xb0, 0x6e, 0x95, 0x69, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x48, 0x08, 0x07, 0xb2, 0x22, 0xa1, 0x63, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x56, 0x24, 0xa4, 0x03, 0x59, 0x91, 0x30, 0xd8, 0xf0, 0xb9, 0xcb, 0xe0, 0xe9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x45, 0x42, 0x7e, 0xf0, 0xe2, 0x74, 0xe1, 0x83, 0x32, 0xfa, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x8a, 0x84, 0xc5, 0x40, 0x56, 0x24, 0x0c, 0x37, 0x7c, 0xee, 0x32, 0xe0, 0x95, 0xb9, 0xe5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x15, 0x09, 0xab, 0x83, 0xf7, 0xbd, 0x0b, 0x1f, 0xa4, 0x14, 0xc5, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x91, 0xb0, 0x1c, 0xc8, 0x8a, 0x84, 0xf1, 0x41, 0x4b, 0x67, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x56, 0x24, 0xac, 0x07, 0xb2, 0x22, 0xa1, 0xe2, 0xe0, 0x89, 0x0f, 0xc2, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x56, 0x24, 0x94, 0x0c, 0x64, 0x45, 0x42, 0xcb, 0x41, 0x01, 0x9b, 0xbf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x91, 0xf8, 0x83, 0xe7, 0x4b, 0x0a, 0x6f, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x50, 0xec, 0x9e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x24, 0x64, 0x03, 0x69, 0x91, 0x90, 0x6f, 0xf8, 0x38, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x22, 0x21, 0x1d, 0x48, 0x8b, 0x84, 0xf8, 0xa0, 0x8c, 0x3e, 0xef, 0x70, 0x8a, 0x75, 0x38, 0xc5, 0x56, 0x00, 0x1f, 0xb8, 0xb2, 0x32, 0xb9, 0x96, 0x39, 0xba, 0x30, 0xba, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0x03, 0x0c, 0x86, 0x1b, 0x00, 0x8f, 0xe6, 0xe8, 0xc2, 0xe8, 0xca, 0x40, 0xcc, 0xde, 0xe4, 0x40, 0xc2, 0x40, 0xe0, 0xca, 0xca, 0xe4, 0x40, 0xee, 0xd2, 0xe8, 0xd0, 0x40, 0xd6, 0xdc, 0xde, 0xee, 0xdc, 0x40, 0xd8, 0xd2, 0xcc, 0xca, 0x40, 0xc2, 0xdc, 0xc8, 0x40, 0xd6, 0xca, 0xf2, 0xe6, 0x95, 0x00, 0x7c, 0x95, 0x7b, 0xab, 0xa3, 0x2b, 0xd3, 0x01, 0xa1, 0x93, 0x0b, 0x73, 0x9b, 0x83, 0x7b, 0x93, 0xa3, 0x6b, 0x61, 0x0b, 0xcb, 0x2b, 0x93, 0x03, 0x21, 0x2b, 0x9b, 0xa3, 0x4b, 0x73, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0x03, 0x31, 0x7b, 0x93, 0x03, 0x81, 0x0b, 0x1b, 0x5b, 0x2b, 0xa3, 0x9b, 0x03, 0xa1, 0x7b, 0x03, 0x81, 0x2b, 0x2b, 0x93, 0x97, 0x00, 0x7c, 0x8c, 0x7b, 0x9b, 0xd3, 0x01, 0x89, 0xab, 0x0b, 0x63, 0x4b, 0xa3, 0xcb, 0x03, 0x79, 0x33, 0x03, 0x99, 0x2b, 0x93, 0xb3, 0x4b, 0x1b, 0x2b, 0xdb, 0x01, 0x19, 0x7b, 0x73, 0x73, 0x2b, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0xa3, 0x0b, 0xa3, 0xab, 0x9b, 0x03, 0xa1, 0x7b, 0x03, 0x81, 0x2b, 0x2b, 0x93, 0x97, 0x00, 0x5e, 0xdf, 0xe6, 0xe6, 0xea, 0xc2, 0xe4, 0xf2, 0x74, 0x40, 0xc4, 0xde, 0xdc, 0xca, 0x78, 0x5a, 0x7c, 0xc8, 0xea, 0xc6, 0xe8, 0x40, 0xda, 0xc2, 0xe0, 0xe0, 0xca, 0xe4, 0x25, 0x00, 0x8f, 0xe7, 0xdc, 0xc8, 0x74, 0x40, 0xe0, 0xca, 0xe4, 0x5a, 0xc4, 0xde, 0xdc, 0xca, 0x40, 0xda, 0xca, 0xe6, 0xe6, 0xc2, 0xce, 0xca, 0x40, 0xe0, 0xea, 0xda, 0xe0, 0xe6, 0x40, 0xe8, 0xde, 0x40, 0xe6, 0xca, 0xdc, 0xc8, 0x40, 0xda, 0xca, 0xe6, 0xe6, 0xc2, 0xce, 0xca, 0xe6, 0x40, 0xc2, 0xe6, 0x40, 0xcc, 0xe4, 0xc2, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0xe6, 0x25, 0x00, 0xef, 0xe5, 0xc6, 0xec, 0x74, 0x40, 0xe0, 0xca, 0xe4, 0x5a, 0xc4, 0xde, 0xdc, 0xca, 0x40, 0xda, 0xca, 0xe6, 0xe6, 0xc2, 0xce, 0xca, 0x40, 0xe6, 0xd2, 0xdc, 0xd6, 0xe6, 0x40, 0xe8, 0xde, 0x40, 0xc2, 0xe6, 0xe6, 0xca, 0xda, 0xc4, 0xd8, 0xca, 0x40, 0xda, 0xca, 0xe6, 0xe6, 0xc2, 0xce, 0xca, 0xe6, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x40, 0xcc, 0xe4, 0xc2, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0xe6, 0x25, 0x00, 0x0d, 0xdd, 0xc2, 0xf0, 0x74, 0x40, 0xea, 0xdc, 0xe0, 0xe4, 0xde, 0xc6, 0xca, 0xe6, 0xe6, 0xca, 0xc8, 0x40, 0xdc, 0xc2, 0xc6, 0xd6, 0xe6, 0x40, 0x50, 0xdc, 0xca, 0xce, 0xc2, 0xe8, 0xd2, 0xec, 0xca, 0x40, 0xc2, 0xc6, 0xd6, 0xdc, 0xde, 0xee, 0xd8, 0xca, 0xc8, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0xe6, 0x52, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x80, 0x87, 0x63, 0x6f, 0x72, 0x6b, 0x65, 0x64, 0x3a, 0x20, 0x20, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x62, 0x6f, 0x74, 0x68, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x0f, 0x30, 0x18, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x23, 0x6e, 0xe0, 0x14, 0x89, 0xdf, 0xe0, 0x00, 0x21, 0xba, 0xc1, 0x03, 0x0c, 0x86, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xf4, 0x88, 0x3b, 0x78, 0x46, 0xd0, 0xf0, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x23, 0x24, 0x03, 0xf7, 0x47, 0xc8, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x1e, 0x21, 0x1d, 0x38, 0x3d, 0xc2, 0x76, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0xb2, 0x0d, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0x8f, 0x10, 0x1f, 0x3c, 0x36, 0x69, 0x78, 0xc3, 0xbf, 0xf3, 0x6b, 0xf0, 0xc8, 0x36, 0xe0, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0x8f, 0x90, 0x0e, 0xdc, 0x1e, 0x61, 0xb2, 0xe1, 0xcf, 0xa5, 0x0d, 0x1e, 0x63, 0x63, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb7, 0x47, 0x88, 0x0f, 0xde, 0x04, 0x35, 0x7c, 0xf0, 0x36, 0x5d, 0xc7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xf8, 0x08, 0xe9, 0xc0, 0xf1, 0x11, 0x26, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x45, 0xb4, 0x8e, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x7c, 0x84, 0xf8, 0xe0, 0x5d, 0x56, 0xc3, 0x07, 0x6f, 0xb0, 0x75, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0x8f, 0x90, 0x0e, 0x5c, 0x1f, 0x61, 0xb8, 0xe1, 0xcf, 0xa5, 0x01, 0x7c, 0xe0, 0xea, 0xc4, 0xd8, 0xd2, 0xc6, 0x5a, 0xd6, 0xca, 0xf2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x3e, 0x42, 0x7c, 0xf0, 0x36, 0xae, 0xe1, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0xd3, 0xba, 0x86, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x3f, 0x42, 0x3a, 0x70, 0x7e, 0x84, 0xe5, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x30, 0x1d, 0xd7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x1f, 0x61, 0x75, 0xf0, 0xfa, 0xb1, 0xe1, 0x83, 0xb6, 0xad, 0xc7, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0x90, 0x90, 0x0c, 0x1c, 0x20, 0xa1, 0x75, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x0d, 0x2c, 0x2c, 0x10, 0x14, 0xb6, 0xb4, 0x39, 0xba, 0xd4, 0x86, 0x3f, 0x97, 0x06, 0x78, 0xe4, 0xde, 0xea, 0xe8, 0xca, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x40, 0x42, 0x3e, 0x70, 0x80, 0x84, 0x9a, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x40, 0xc2, 0x60, 0xe0, 0x00, 0x09, 0xa3, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x40, 0xc2, 0x6a, 0xe0, 0x00, 0x09, 0x2d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0x90, 0x30, 0x1b, 0x38, 0x40, 0xc2, 0x7c, 0xc3, 0x9f, 0x4b, 0x03, 0x7c, 0x64, 0x69, 0x72, 0x65, 0x63, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x20, 0x61, 0x7d, 0xf0, 0x08, 0xbc, 0xe1, 0xc3, 0x07, 0xab, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x01, 0x12, 0xf6, 0x03, 0x07, 0x48, 0x28, 0xd9, 0xf0, 0xe7, 0xd2, 0x80, 0xcf, 0x16, 0xe6, 0x56, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x01, 0x12, 0x0a, 0x0e, 0x5e, 0xe6, 0x37, 0xbc, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0xd9, 0xdf, 0x70, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x81, 0x84, 0x64, 0xe0, 0x02, 0x09, 0xe9, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb8, 0xb7, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0x90, 0x10, 0x1d, 0x3c, 0xa7, 0x70, 0x78, 0xc3, 0xbf, 0xf3, 0x0b, 0x78, 0x71, 0x6f, 0x73, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x48, 0x48, 0x06, 0x4e, 0x90, 0xb0, 0xd8, 0xf0, 0xe7, 0xd2, 0x00, 0xef, 0xdb, 0xdc, 0x5c, 0x5d, 0x98, 0x5c, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x48, 0x88, 0x0e, 0x9e, 0xbc, 0x38, 0xbc, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0x31, 0xe3, 0x70, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x48, 0x48, 0x06, 0x6e, 0x90, 0x50, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0xce, 0x8d, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1b, 0x24, 0xa4, 0x07, 0x4f, 0x97, 0x1c, 0xde, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1b, 0x24, 0xc4, 0x03, 0x37, 0x48, 0x58, 0x1c, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x0d, 0x12, 0x26, 0x03, 0x37, 0x48, 0x98, 0x1d, 0x3c, 0x33, 0x27, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x41, 0xc2, 0x6e, 0xe0, 0x06, 0x09, 0x4d, 0x1b, 0xfe, 0x9d, 0x5f, 0x00, 0x3e, 0xda, 0xca, 0xe6, 0xe6, 0xc2, 0xce, 0xca, 0x5a, 0xe0, 0xea, 0xda, 0xe0, 0x5a, 0xe6, 0xe8, 0xc2, 0xe8, 0xca, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x42, 0x42, 0x32, 0x70, 0x84, 0x84, 0xaa, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x72, 0x63, 0xf6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x21, 0x21, 0x3d, 0x78, 0xf5, 0xe8, 0xf0, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x21, 0x21, 0x1e, 0x38, 0x42, 0xc2, 0xe2, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0x90, 0x30, 0x19, 0x38, 0x42, 0xc2, 0xec, 0xe0, 0x99, 0x39, 0x21, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x11, 0x12, 0x76, 0x03, 0x47, 0x48, 0x68, 0xda, 0xf0, 0xef, 0xfc, 0x02, 0xf0, 0xd1, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0xd6, 0x32, 0x97, 0xe6, 0xb6, 0xd6, 0x32, 0x47, 0x17, 0x46, 0x57, 0x56, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x15, 0x12, 0x92, 0x81, 0x2b, 0x24, 0xf4, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0xa6, 0x0f, 0xbb, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x0a, 0x09, 0xe9, 0xc1, 0x83, 0x69, 0x87, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x0a, 0x09, 0xf1, 0xc0, 0x15, 0x12, 0x16, 0x07, 0x25, 0xe2, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x85, 0x84, 0xc9, 0xc0, 0x15, 0x12, 0x6a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x21, 0x61, 0x33, 0x70, 0x85, 0x84, 0xe1, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x85, 0x4e, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x21, 0x61, 0x74, 0xf0, 0x1a, 0xe0, 0xe1, 0x83, 0x67, 0xe6, 0x84, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x48, 0x58, 0x0e, 0x5c, 0x21, 0xa1, 0x65, 0xc3, 0x9f, 0x4b, 0x03, 0x78, 0xb5, 0x95, 0xcd, 0xcd, 0x85, 0x9d, 0x95, 0xb5, 0xb8, 0xd5, 0xb5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x85, 0x84, 0xe9, 0xc1, 0x9b, 0x8c, 0x87, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0x6f, 0x3a, 0x1e, 0xae, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0x90, 0x90, 0x0c, 0x9c, 0x21, 0x61, 0xbb, 0xe1, 0xcf, 0xa5, 0x01, 0xde, 0x31, 0xb6, 0xb7, 0xb9, 0x34, 0xb7, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0x90, 0xb0, 0x38, 0x78, 0x83, 0xf3, 0xf0, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x21, 0x61, 0x32, 0x70, 0x86, 0x84, 0xd5, 0x41, 0x89, 0xf8, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x21, 0x61, 0x36, 0x70, 0x86, 0x84, 0xe9, 0xc1, 0x33, 0x73, 0x42, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0x90, 0x90, 0x0c, 0xdc, 0x21, 0x61, 0xba, 0xe1, 0xcf, 0xa5, 0x01, 0xbe, 0xb1, 0x37, 0xb9, 0xb5, 0x32, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0x90, 0x30, 0x38, 0x78, 0x8b, 0xf6, 0xf0, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x21, 0x61, 0x31, 0x70, 0x87, 0x84, 0xd1, 0x41, 0x89, 0xf8, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x21, 0x61, 0x35, 0x70, 0x87, 0x84, 0xe5, 0xc1, 0x33, 0x73, 0x42, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0x91, 0x90, 0x0c, 0x1c, 0x22, 0xa1, 0x64, 0xc3, 0x9f, 0x4b, 0x03, 0x3c, 0x6b, 0x65, 0x65, 0x6e, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x22, 0x21, 0x3f, 0x78, 0x8b, 0xf9, 0xf0, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x22, 0x61, 0x30, 0x70, 0x88, 0x84, 0xcd, 0x41, 0x89, 0x58, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x22, 0x61, 0x34, 0x70, 0x88, 0x84, 0xe1, 0xc1, 0x19, 0x09, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x44, 0xc2, 0x72, 0xe0, 0x10, 0x09, 0x1d, 0x1b, 0xfe, 0x9d, 0x5f, 0x00, 0x9f, 0xb5, 0xb2, 0x32, 0xb7, 0x96, 0x39, 0xba, 0x30, 0xba, 0xb2, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0x91, 0x90, 0x0c, 0x5c, 0x22, 0x21, 0xdf, 0xf0, 0xe7, 0xd2, 0x06, 0x0f, 0x4b, 0x02, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x24, 0x44, 0x07, 0x6f, 0xb2, 0x1f, 0xde, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0x2c, 0x09, 0xb8, 0x3a, 0x9c, 0x62, 0xb5, 0x06, 0xcb, 0x69, 0xa0, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x2c, 0xa7, 0x81, 0x6e, 0x00, 0xbe, 0xe4, 0xca, 0xe2, 0xea, 0xca, 0xe6, 0xe8, 0x40, 0xe0, 0xc2, 0xc6, 0xd6, 0xca, 0xe8, 0x40, 0xe0, 0xc2, 0xf2, 0xd8, 0xde, 0xc2, 0xc8, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x96, 0xd3, 0x40, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x99, 0x10, 0x66, 0x03, 0x67, 0x42, 0x58, 0x6f, 0xf8, 0xa2, 0x66, 0x43, 0x1d, 0x0f, 0xf8, 0xea, 0xf0, 0xd0, 0xde, 0xde, 0xe8, 0x15, 0xf0, 0xe1, 0xca, 0xca, 0xe0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0xcf, 0x34, 0x20, 0x6e, 0x00, 0x7f, 0x33, 0xb9, 0xb0, 0xb3, 0xb6, 0x32, 0x37, 0x3a, 0x10, 0xb9, 0xb2, 0xb8, 0xba, 0xb2, 0x39, 0xba, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x67, 0x1a, 0x10, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x9d, 0x12, 0x37, 0x70, 0xa9, 0xc4, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x53, 0x42, 0x32, 0x70, 0xa7, 0x84, 0x78, 0xc3, 0x9f, 0x4b, 0x1b, 0x1c, 0x4c, 0x3f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x4e, 0x09, 0xd1, 0xc1, 0x6b, 0x22, 0x88, 0x0f, 0xce, 0x48, 0xa8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa1, 0x12, 0x92, 0x81, 0x43, 0x25, 0x0c, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xa3, 0x7f, 0x84, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xa8, 0x84, 0xf4, 0xe0, 0x21, 0x17, 0xc4, 0x07, 0x65, 0x96, 0x6e, 0xab, 0xc1, 0x23, 0xe9, 0x44, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x83, 0x37, 0x0d, 0xd9, 0x0d, 0xe0, 0x5f, 0x66, 0x66, 0x56, 0x36, 0x46, 0x07, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0x12, 0xd6, 0x56, 0x36, 0xaf, 0x04, 0x78, 0x37, 0x95, 0xcd, 0xcd, 0x85, 0x9d, 0xa5, 0xb9, 0x9d, 0x81, 0x1c, 0xa5, 0x99, 0xd1, 0xcd, 0xad, 0x04, 0xe0, 0x4f, 0x89, 0xd8, 0xdb, 0x9b, 0x9b, 0x0e, 0x88, 0x5c, 0xd9, 0x1c, 0xdc, 0x9b, 0xdb, 0x5c, 0x19, 0x48, 0x5b, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0x19, 0x88, 0x99, 0xdc, 0x5b, 0x1b, 0x88, 0x5c, 0x59, 0xdb, 0x1b, 0x5d, 0x19, 0xc8, 0x1c, 0x5a, 0x1a, 0xbc, 0x04, 0xe0, 0x4d, 0x89, 0xdb, 0xdb, 0x9b, 0x9b, 0x0e, 0x88, 0xd8, 0xdb, 0x9b, 0x1b, 0xc8, 0x5d, 0x1a, 0x1d, 0x1a, 0x08, 0x59, 0xdd, 0x18, 0x1d, 0x88, 0xd9, 0x9b, 0x1c, 0xc8, 0x18, 0xdb, 0xdb, 0x19, 0x08, 0x9d, 0x5c, 0xd8, 0xd8, 0x5a, 0x9a, 0xdb, 0xb9, 0x04, 0xe0, 0x7b, 0xc9, 0x18, 0xdb, 0xdb, 0x99, 0x0e, 0x88, 0xdb, 0x1b, 0x5d, 0x9a, 0x59, 0x1e, 0x88, 0x5d, 0x98, 0x5b, 0x19, 0x08, 0x1d, 0x5a, 0x18, 0x1d, 0x48, 0x89, 0xd8, 0xdb, 0x9b, 0xdb, 0xc9, 0x1c, 0x08, 0xdd, 0x1b, 0x08, 0x5c, 0x59, 0x99, 0x1c, 0x48, 0x98, 0x5c, 0x19, 0x88, 0x58, 0xd8, 0xd8, 0x5a, 0x9a, 0xdb, 0x19, 0x48, 0x1d, 0x1c, 0x08, 0xdb, 0xdb, 0x58, 0x18, 0x1b, 0x5b, 0xbe, 0x04, 0xe0, 0x61, 0x09, 0xd9, 0x9b, 0x5b, 0x99, 0x0e, 0x88, 0xdb, 0x1b, 0x5d, 0x9a, 0x59, 0x1e, 0x88, 0x5d, 0x98, 0x5b, 0x19, 0x08, 0x1d, 0x5a, 0x18, 0x1d, 0x08, 0x5c, 0x59, 0x99, 0x1c, 0x08, 0x8a, 0x5b, 0x4a, 0xd8, 0xd8, 0x5a, 0x19, 0x19, 0xc8, 0x5b, 0x9d, 0x1c, 0x48, 0x5b, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0xb9, 0x04, 0xe0, 0x55, 0x09, 0xdb, 0xdb, 0x1c, 0x9d, 0x0e, 0x88, 0xdb, 0x1b, 0x5d, 0x9a, 0x59, 0x1e, 0x88, 0x5d, 0x98, 0x5b, 0x19, 0x08, 0x1d, 0x5a, 0x18, 0x1d, 0xc8, 0x5d, 0x19, 0xc8, 0x98, 0x5c, 0xd8, 0x1c, 0x5a, 0x19, 0x19, 0xc8, 0x9b, 0x1b, 0x48, 0x89, 0xd8, 0xdb, 0x9b, 0xbb, 0x04, 0xf0, 0x54, 0x32, 0x57, 0xe6, 0x46, 0xa6, 0x03, 0x02, 0x17, 0x36, 0xb6, 0x56, 0x46, 0x07, 0x42, 0xf7, 0x06, 0x52, 0xe7, 0x96, 0x86, 0x2f, 0x01, 0xfc, 0x94, 0xb8, 0x85, 0xa5, 0xb1, 0xe9, 0x80, 0xb0, 0x85, 0xb9, 0x95, 0xcd, 0x81, 0xd0, 0xbd, 0x81, 0xd4, 0xb9, 0xa5, 0xe1, 0xad, 0x04, 0xf0, 0x20, 0x55, 0xd6, 0xf6, 0x46, 0x57, 0x06, 0x32, 0x35, 0x26, 0x97, 0x07, 0x72, 0x94, 0x66, 0x46, 0x37, 0xb7, 0x12, 0xc0, 0x47, 0x09, 0x5d, 0x9d, 0x5b, 0x99, 0x0e, 0x08, 0x5c, 0x59, 0xd9, 0x1a, 0x88, 0x5c, 0xd9, 0x5c, 0x1d, 0x1b, 0xdd, 0x4a, 0x00, 0x9f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x20, 0x47, 0x69, 0x66, 0x74, 0x73, 0x2b, 0x01, 0x78, 0x53, 0x42, 0x57, 0x27, 0x67, 0xa6, 0x03, 0x42, 0xf6, 0xd6, 0x16, 0x96, 0xe6, 0x06, 0x22, 0x57, 0x06, 0xf7, 0x26, 0x47, 0xc7, 0x02, 0x22, 0x57, 0xc6, 0x16, 0x96, 0x57, 0x46, 0x06, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0xa2, 0x16, 0x56, 0xc6, 0x2e, 0x01, 0x7c, 0x97, 0xcc, 0x85, 0xe1, 0xbd, 0xe9, 0x80, 0xbc, 0xd5, 0xc9, 0x81, 0xcc, 0xc1, 0xbd, 0xb9, 0xcd, 0xbd, 0xc9, 0x81, 0xb0, 0xa5, 0xcd, 0xd1, 0x81, 0xc8, 0x95, 0xc1, 0xbd, 0xc9, 0xd1, 0xb5, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x48, 0x3a, 0x91, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xca, 0x71, 0x03, 0x65, 0x3a, 0x7e, 0x83, 0x50, 0x43, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8a, 0x72, 0x48, 0x06, 0x8a, 0x72, 0xc8, 0x37, 0x68, 0x9f, 0xa8, 0x60, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8a, 0x72, 0x88, 0x0f, 0x9e, 0xec, 0x45, 0x7c, 0x50, 0x50, 0x64, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x55, 0x8e, 0x3b, 0x78, 0x09, 0x17, 0xf1, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xe5, 0x90, 0x0c, 0x54, 0xe5, 0x30, 0xdd, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x95, 0x43, 0x34, 0x50, 0x95, 0x43, 0x7e, 0xf0, 0xfc, 0x4e, 0xbc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x2a, 0x87, 0xc1, 0x40, 0x55, 0x0e, 0xcb, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x84, 0xf6, 0xf5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xe5, 0x30, 0x3c, 0x78, 0x17, 0x1b, 0xf1, 0x41, 0x98, 0x8e, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xe5, 0x90, 0x0c, 0x94, 0xe5, 0xb0, 0xdf, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x96, 0x43, 0x34, 0x50, 0x96, 0x43, 0x7e, 0xf0, 0x42, 0xb0, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x2c, 0x87, 0xc1, 0x40, 0x59, 0x0e, 0xa3, 0x0d, 0x7f, 0x2e, 0x0d, 0x7c, 0x1a, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x65, 0x39, 0x6c, 0x0e, 0xde, 0x7b, 0x47, 0x7c, 0x10, 0xa6, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x59, 0x0e, 0xab, 0x81, 0xb2, 0x1c, 0xe6, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0x09, 0xed, 0xeb, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xcb, 0x61, 0x7d, 0xf0, 0xc0, 0x3e, 0xe2, 0x83, 0x30, 0x1d, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xcb, 0x21, 0x19, 0xa8, 0xcb, 0xa1, 0x63, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5d, 0x0e, 0xd1, 0x40, 0x5d, 0x0e, 0xf9, 0xc1, 0x2a, 0x94, 0xf0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x2e, 0x87, 0xc1, 0x40, 0x5d, 0x0e, 0x15, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x51, 0xfa, 0x78, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x97, 0xc3, 0xec, 0xe0, 0xdd, 0x88, 0xc4, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x97, 0xc3, 0x6e, 0xa0, 0x2e, 0x87, 0xed, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xe5, 0x30, 0x1e, 0xa8, 0xcb, 0xa1, 0xe1, 0xe0, 0xc5, 0xe5, 0x95, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xe6, 0x90, 0x0c, 0x14, 0xe6, 0x30, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x98, 0x43, 0x34, 0x50, 0x98, 0x43, 0x7e, 0xb0, 0x8e, 0xf0, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xcc, 0x61, 0x30, 0x50, 0x98, 0xc3, 0xe2, 0x20, 0x04, 0x1f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x73, 0x48, 0x06, 0x2a, 0x73, 0x18, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xcc, 0x21, 0x1a, 0xa8, 0xcc, 0x21, 0xdf, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xdb, 0x31, 0xde, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xca, 0x1c, 0x06, 0x03, 0x95, 0x39, 0xac, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xcb, 0xfe, 0x86, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x32, 0x87, 0xc5, 0xc1, 0x8b, 0x45, 0x89, 0x0f, 0x5e, 0x25, 0x38, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xe6, 0x30, 0x1b, 0xa8, 0xcc, 0x61, 0xbb, 0xe1, 0xcf, 0xa5, 0x0d, 0x52, 0xe8, 0x7c, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x32, 0x87, 0xdd, 0xc1, 0xa3, 0x51, 0x89, 0x0f, 0xde, 0xf9, 0xc6, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x9a, 0x43, 0x32, 0x50, 0x9a, 0x43, 0xd1, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd2, 0x1c, 0xa2, 0x81, 0xd2, 0x1c, 0xf2, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x24, 0xc5, 0x03, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa5, 0x39, 0x0c, 0x06, 0x4a, 0x73, 0x58, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xa6, 0xaf, 0xc7, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x34, 0x87, 0xc5, 0xc1, 0x13, 0x6a, 0x89, 0x0f, 0xda, 0xb6, 0x1e, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4a, 0x73, 0x98, 0x0d, 0x94, 0xe6, 0xd0, 0xb3, 0xe1, 0xcf, 0xa5, 0x01, 0x1e, 0xb6, 0x30, 0xb7, 0xb2, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4a, 0x73, 0x18, 0x1f, 0xbc, 0x61, 0x97, 0x78, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4a, 0x73, 0x58, 0x0f, 0x94, 0xe6, 0xd0, 0x70, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x69, 0x0e, 0x15, 0x03, 0xa5, 0x39, 0xd4, 0x1c, 0xbc, 0x4a, 0x70, 0xb8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe2, 0x1c, 0x92, 0x81, 0xe2, 0x1c, 0xe6, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8a, 0x73, 0x88, 0x06, 0x8a, 0x73, 0xc8, 0x37, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x2a, 0x89, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x38, 0x87, 0xc1, 0x40, 0x71, 0x0e, 0xbb, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xe8, 0x1f, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xe7, 0x30, 0x3a, 0x78, 0x47, 0x33, 0xf1, 0x41, 0x99, 0xa5, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xe7, 0x30, 0x1c, 0x28, 0xce, 0x61, 0xbd, 0xe1, 0xcf, 0xa5, 0x0d, 0x8a, 0xd6, 0x93, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xce, 0x61, 0x7c, 0xf0, 0x88, 0x69, 0xe2, 0xc3, 0x0f, 0x35, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd5, 0x39, 0x24, 0x03, 0xd5, 0x39, 0x94, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xce, 0x21, 0x1a, 0xa8, 0xce, 0x21, 0xdf, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x2b, 0x13, 0xde, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xea, 0x1c, 0x06, 0x03, 0xd5, 0x39, 0x8c, 0x36, 0xfc, 0x3b, 0xbf, 0xc1, 0x4b, 0x47, 0x66, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x73, 0x58, 0x0d, 0x54, 0xe7, 0xd0, 0xb5, 0xe1, 0xcf, 0xa5, 0x0d, 0x8a, 0xda, 0xe2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xce, 0x61, 0x79, 0xf0, 0x36, 0x71, 0xe2, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xce, 0x61, 0x3a, 0x50, 0x9d, 0xc3, 0xfc, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x73, 0xd8, 0x0f, 0x54, 0xe7, 0x50, 0xb5, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd5, 0x39, 0x14, 0x0c, 0x54, 0xe7, 0x50, 0x72, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd5, 0x39, 0xb4, 0x0c, 0x54, 0xe7, 0xd0, 0x74, 0xf0, 0x3a, 0x3a, 0xbb, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xcf, 0x21, 0x19, 0x28, 0xcf, 0xa1, 0x66, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x79, 0x0e, 0xd1, 0x40, 0x79, 0x0e, 0xf9, 0xc1, 0xfa, 0xef, 0xe7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x3c, 0x87, 0xc1, 0x40, 0x79, 0x0e, 0xa3, 0x83, 0xa7, 0x7e, 0x13, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe5, 0x39, 0xac, 0x06, 0xca, 0x73, 0x68, 0xd9, 0xf0, 0xe7, 0xd2, 0x80, 0x2f, 0xf7, 0x16, 0x26, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x79, 0x0e, 0xd3, 0x83, 0xa7, 0xee, 0x13, 0x6f, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x79, 0x0e, 0xdb, 0x81, 0xf2, 0x1c, 0xf6, 0x07, 0x65, 0x13, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x9e, 0x43, 0xc1, 0x40, 0x79, 0x0e, 0x25, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x97, 0xf2, 0x13, 0x57, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x05, 0x3a, 0x24, 0x03, 0x05, 0x3a, 0x54, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xd0, 0x21, 0x1a, 0x28, 0xd0, 0x21, 0x3f, 0x78, 0x2c, 0x47, 0xe3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xa0, 0xc3, 0x60, 0xa0, 0x40, 0x87, 0x86, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0xd0, 0xd5, 0xc9, 0x99, 0xcd, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xa0, 0xc3, 0xec, 0xe0, 0x59, 0x0d, 0xc5, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xa0, 0xc3, 0x6e, 0xa0, 0x40, 0x87, 0xed, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x05, 0x3a, 0x8c, 0x07, 0x0a, 0x74, 0x28, 0x38, 0x78, 0x39, 0x4a, 0x63, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x15, 0x3a, 0x24, 0x03, 0x15, 0x3a, 0xb4, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xd0, 0x21, 0x1a, 0xa8, 0xd0, 0x21, 0xdf, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xb3, 0x0d, 0xde, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0a, 0x1d, 0x06, 0x03, 0x15, 0x3a, 0x94, 0x6c, 0xf8, 0x73, 0x69, 0x80, 0x7f, 0x0e, 0xee, 0xcd, 0x6d, 0xee, 0x4d, 0x6e, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0a, 0x1d, 0x96, 0x07, 0x2f, 0xfb, 0x28, 0xde, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0a, 0x1d, 0xa6, 0x03, 0x15, 0x3a, 0xcc, 0x0f, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xd0, 0x61, 0x3f, 0x50, 0xa1, 0x43, 0xc7, 0x41, 0xdb, 0xd6, 0xe3, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xe8, 0x90, 0x0c, 0xd4, 0xe8, 0xd0, 0xb3, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x46, 0x87, 0x68, 0xa0, 0x46, 0x87, 0x7c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x2d, 0xf4, 0x93, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x35, 0x3a, 0x0c, 0x06, 0x6a, 0x74, 0xa8, 0xd8, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xe8, 0x30, 0x39, 0x78, 0x72, 0x4c, 0xf1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xe8, 0xb0, 0x19, 0xa8, 0xd1, 0x61, 0x77, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8d, 0x0e, 0xc3, 0x81, 0x1a, 0x1d, 0x1a, 0x36, 0xfc, 0x3b, 0xbf, 0xc1, 0x93, 0x05, 0x87, 0x37, 0x78, 0x6b, 0x7b, 0x70, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x35, 0x3a, 0x74, 0x0c, 0xd4, 0xe8, 0x50, 0xb3, 0xe1, 0xcf, 0xa5, 0xc1, 0xe3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xd1, 0xa1, 0xe5, 0xe0, 0x0d, 0x3e, 0xc5, 0x87, 0x1f, 0x6a, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8a, 0x74, 0x48, 0x06, 0x8a, 0x74, 0x28, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xa4, 0x43, 0x34, 0x50, 0xa4, 0xc3, 0x70, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x2f, 0x6b, 0x78, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8a, 0x74, 0x58, 0x0e, 0x14, 0xe9, 0xd0, 0xb1, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0xc6, 0x07, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x3a, 0x4c, 0x0f, 0xde, 0x9e, 0x54, 0xbc, 0xe1, 0xdf, 0xf9, 0x0d, 0x5e, 0x8c, 0x10, 0x7c, 0xf0, 0xac, 0xe0, 0xc6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2a, 0x1d, 0x92, 0x81, 0x2a, 0x1d, 0x8a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xe9, 0x10, 0x0d, 0x54, 0xe9, 0xb0, 0x39, 0x78, 0x88, 0xcd, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xa5, 0xc3, 0x68, 0xa0, 0x4a, 0x87, 0x9e, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xbc, 0xbe, 0x96, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xd2, 0x61, 0x79, 0xf0, 0x3c, 0xab, 0xe2, 0x0d, 0xd6, 0xab, 0x54, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x55, 0x3a, 0x8c, 0x07, 0xaa, 0x74, 0x68, 0x38, 0x78, 0x03, 0x2e, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xe9, 0x50, 0x31, 0x50, 0xa5, 0x43, 0xcd, 0xc1, 0xdb, 0x81, 0x1b, 0x6b, 0x05, 0xf8, 0xea, 0xdc, 0xe4, 0xde, 0xd8, 0xd8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x7e, 0xe3, 0x06, 0x8e, 0xe0, 0xd0, 0xb8, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xf8, 0x0d, 0xc9, 0xc0, 0xf1, 0x1b, 0xc2, 0x0d, 0x7f, 0x2e, 0x0d, 0x4e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf1, 0x1b, 0xb2, 0x83, 0x77, 0x97, 0x15, 0x1f, 0x84, 0xe9, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xbf, 0x71, 0x07, 0x4f, 0x19, 0x2b, 0xde, 0xa0, 0xb4, 0xb7, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xdf, 0x90, 0x0c, 0x5c, 0xbf, 0x61, 0xbd, 0xe1, 0xcf, 0xa5, 0xc1, 0xe7, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x7e, 0x43, 0x76, 0xf0, 0x16, 0xb7, 0xe2, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x7e, 0x43, 0x38, 0x70, 0xfd, 0x86, 0xc1, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x6f, 0x58, 0x0c, 0x5c, 0xbf, 0x61, 0xbc, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xfa, 0x0d, 0x93, 0x81, 0xeb, 0x37, 0xec, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0x13, 0x59, 0x5b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xfd, 0x86, 0xd9, 0xc1, 0x83, 0xf2, 0x8a, 0x0f, 0x3f, 0xd4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x6f, 0x18, 0x0e, 0x5c, 0xbf, 0x61, 0xbb, 0xe1, 0xcf, 0xa5, 0xc1, 0xc9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x7e, 0xc3, 0xf4, 0xe0, 0x2d, 0x7f, 0xc5, 0x07, 0x61, 0x3a, 0x56, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xfe, 0xc6, 0x1d, 0x3c, 0x65, 0xac, 0x78, 0x83, 0x82, 0x34, 0x76, 0xf0, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x7f, 0x43, 0x38, 0x70, 0xfe, 0x86, 0xf4, 0xf0, 0x98, 0xcc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xbf, 0x71, 0x07, 0x4f, 0x19, 0x2b, 0xde, 0xf0, 0x15, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xbf, 0x21, 0x39, 0x78, 0xca, 0x58, 0xf1, 0x86, 0xaf, 0x5f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfb, 0x37, 0xa4, 0x03, 0xf7, 0x6f, 0x88, 0x0f, 0x0e, 0xe7, 0x7c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x00, 0xc7, 0x1d, 0x3c, 0x65, 0xac, 0x78, 0x83, 0x82, 0x60, 0x76, 0x83, 0x22, 0x5f, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x80, 0xe3, 0x07, 0x4e, 0xe0, 0xd0, 0xb1, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0xb9, 0x9d, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x80, 0x43, 0x3c, 0x70, 0x01, 0x87, 0xfc, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x38, 0xfe, 0xe0, 0xa9, 0x95, 0xc5, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x14, 0xf9, 0xb2, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x02, 0x87, 0x6c, 0xe0, 0x04, 0x0e, 0x83, 0x0d, 0x6f, 0xeb, 0x0c, 0x4e, 0x1e, 0x3c, 0x0a, 0x18, 0x70, 0x0d, 0x0f, 0xee, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x09, 0x1c, 0x46, 0x03, 0x27, 0x70, 0xd8, 0x6e, 0x78, 0x5b, 0x67, 0x83, 0x26, 0xb2, 0xb6, 0x0e, 0x1e, 0x05, 0x0c, 0xb8, 0x06, 0xe7, 0x76, 0xbe, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x81, 0xc3, 0x7e, 0xe0, 0x04, 0x0e, 0x15, 0x07, 0xaf, 0x12, 0x06, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xe0, 0xb8, 0x83, 0xa7, 0x8c, 0x15, 0x6f, 0x50, 0x18, 0xaa, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x70, 0x48, 0x06, 0x6e, 0xe0, 0x10, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x81, 0x43, 0x34, 0x70, 0x03, 0x87, 0xec, 0xf0, 0xb4, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x03, 0x87, 0x70, 0xe0, 0x06, 0x0e, 0xe9, 0x41, 0xb9, 0x2e, 0xdb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xc1, 0x71, 0x07, 0x4f, 0x19, 0x2b, 0xde, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xc8, 0x97, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x23, 0x38, 0x24, 0x03, 0x47, 0x70, 0x08, 0x0f, 0x4e, 0x3a, 0x59, 0x6b, 0x78, 0x70, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xe0, 0x30, 0x18, 0x38, 0x82, 0xc3, 0x72, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x11, 0x1c, 0x16, 0x03, 0x47, 0x70, 0x18, 0x1d, 0x9c, 0xb1, 0x66, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x23, 0x38, 0xac, 0x06, 0x8e, 0xe0, 0x30, 0x3b, 0x3c, 0xad, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xc1, 0x61, 0x37, 0x70, 0x04, 0x87, 0xe1, 0x41, 0xc0, 0xb2, 0xb6, 0x06, 0xe7, 0x76, 0xbe, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x82, 0xc3, 0x7a, 0xe0, 0x08, 0x0e, 0x85, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xe0, 0x30, 0x1f, 0x38, 0x82, 0x43, 0xdb, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x23, 0x38, 0xec, 0x07, 0x8e, 0xe0, 0x50, 0xb4, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x08, 0x0e, 0x05, 0x03, 0x47, 0x70, 0xe8, 0x38, 0x38, 0x63, 0xcd, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x47, 0x70, 0x28, 0x19, 0x38, 0x82, 0x43, 0xcb, 0xe1, 0x69, 0x9d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x08, 0x0e, 0x35, 0x03, 0x47, 0x70, 0xe8, 0x39, 0x28, 0x2a, 0xc5, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xe0, 0xd0, 0x34, 0x70, 0x04, 0x87, 0xb2, 0x83, 0xc3, 0x3e, 0x56, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x11, 0x1c, 0xea, 0x06, 0x8e, 0xe0, 0xd0, 0x77, 0x70, 0x38, 0xe7, 0xab, 0x59, 0x00, 0x9f, 0x39, 0xb4, 0x34, 0xb8, 0x96, 0x39, 0xba, 0x30, 0xba, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0x03, 0xb7, 0x8b, 0x1b, 0x80, 0xbf, 0x30, 0x36, 0x36, 0x90, 0xbb, 0x32, 0x90, 0x35, 0xb7, 0xb7, 0x3b, 0x90, 0x30, 0xb1, 0xb7, 0x3a, 0x3a, 0x90, 0x30, 0x10, 0xb8, 0xb2, 0x32, 0x79, 0x25, 0x00, 0x5e, 0x28, 0x09, 0x63, 0x4b, 0x2b, 0x73, 0xd3, 0x01, 0x71, 0x7b, 0x03, 0x81, 0x5a, 0x4a, 0x02, 0x21, 0x0b, 0xa3, 0x0b, 0x63, 0x01, 0x99, 0x7b, 0x03, 0x29, 0x73, 0x8b, 0xab, 0x2b, 0xab, 0x2b, 0x03, 0x09, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0x9b, 0x03, 0xa1, 0x7b, 0x03, 0x81, 0x2b, 0x93, 0x33, 0x7b, 0x93, 0x6b, 0x03, 0x79, 0x73, 0x1b, 0x2b, 0x03, 0xb9, 0x2b, 0x03, 0x61, 0x2b, 0x0b, 0x93, 0x73, 0x03, 0x49, 0xa3, 0x97, 0x00, 0xfc, 0x2f, 0x59, 0x73, 0x7b, 0xbb, 0x73, 0xd3, 0x01, 0xb9, 0x2b, 0x03, 0x59, 0x73, 0x7b, 0xbb, 0x03, 0xa1, 0x43, 0x2b, 0x4b, 0x93, 0x03, 0x61, 0x4b, 0x33, 0x2b, 0x03, 0x09, 0x73, 0x23, 0x03, 0x81, 0xab, 0x13, 0x63, 0x4b, 0x1b, 0x03, 0x59, 0x2b, 0xcb, 0x9b, 0x63, 0x01, 0x99, 0x7b, 0x03, 0xb9, 0x2b, 0x03, 0x41, 0x0b, 0xb3, 0x2b, 0x03, 0x09, 0x03, 0x19, 0x43, 0x0b, 0x73, 0x73, 0x2b, 0x63, 0x6b, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x81, 0xdb, 0xc5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x53, 0xc4, 0x0d, 0x9c, 0x15, 0xf1, 0x1b, 0x1c, 0x20, 0x44, 0x37, 0x78, 0xe0, 0x76, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x15, 0x71, 0x07, 0x6f, 0xb4, 0x2f, 0xde, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x22, 0x24, 0x03, 0x47, 0x45, 0x98, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x2a, 0x42, 0x34, 0x70, 0x54, 0x84, 0xc1, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x02, 0x9e, 0x30, 0xb6, 0xb4, 0x32, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x2a, 0xc2, 0x62, 0xe0, 0xa8, 0x08, 0xeb, 0x0d, 0xff, 0xce, 0x2f, 0x80, 0x5f, 0x18, 0x5b, 0x5a, 0x99, 0x5b, 0x4b, 0xd8, 0x59, 0x99, 0x1b, 0x59, 0x58, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x45, 0x48, 0x06, 0xae, 0x8a, 0x30, 0xde, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x55, 0x84, 0x68, 0xe0, 0xaa, 0x08, 0x83, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x05, 0x3c, 0x6b, 0x6e, 0x6f, 0x77, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x55, 0x84, 0xc5, 0xc0, 0x55, 0x11, 0xb6, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x07, 0x18, 0x0c, 0x57, 0xcd, 0x1a, 0x3c, 0xf0, 0x73, 0x78, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0x03, 0x3f, 0x87, 0x1b, 0x00, 0x1f, 0xe0, 0xca, 0xe4, 0xe6, 0xd2, 0xe6, 0xe8, 0xca, 0xdc, 0xe8, 0x40, 0xe6, 0xe8, 0xc2, 0xe8, 0xca, 0x40, 0xcc, 0xde, 0xe4, 0x40, 0xf8, 0xda, 0xca, 0xe6, 0xe6, 0xc2, 0xce, 0xca, 0x5a, 0xe0, 0xea, 0xda, 0xe0, 0x95, 0x00, 0xfc, 0x6f, 0x2a, 0x9b, 0x9b, 0x0b, 0x3b, 0x2b, 0x9b, 0x03, 0x89, 0xab, 0x2b, 0xab, 0x2b, 0x03, 0xa9, 0x83, 0x03, 0x49, 0x73, 0x03, 0xe1, 0x6b, 0x2b, 0x9b, 0x9b, 0x0b, 0x3b, 0x2b, 0x6b, 0x81, 0xab, 0x6b, 0x83, 0x3b, 0x99, 0x03, 0x71, 0xa9, 0x73, 0x9b, 0x2b, 0x73, 0xa3, 0x6b, 0x69, 0x2b, 0x9b, 0x9b, 0x0b, 0x3b, 0x2b, 0x9b, 0x03, 0xa9, 0x73, 0xa3, 0x4b, 0x63, 0x03, 0xa1, 0x43, 0x2b, 0xcb, 0x97, 0x00, 0x78, 0x60, 0x2c, 0xcc, 0x0d, 0x44, 0xac, 0x0c, 0x04, 0x2e, 0x6c, 0x6c, 0xad, 0x8c, 0x2e, 0x4d, 0xaf, 0x8c, 0x0c, 0x24, 0xcc, 0x8d, 0x0c, 0xc4, 0xac, 0x8c, 0x0c, 0x24, 0xcd, 0x8d, 0xee, 0x0d, 0x84, 0x0f, 0x2e, 0x6c, 0x6c, 0xad, 0x8c, 0xae, 0x05, 0xae, 0xae, 0x0d, 0x0e, 0xc4, 0xec, 0x4d, 0x0e, 0x64, 0xae, 0xcc, 0x8d, 0x2c, 0xcd, 0xed, 0xcc, 0x05, 0x04, 0xe4, 0x0a, 0xad, 0xcc, 0x0d, 0xe4, 0xae, 0x5c, 0x02, 0xf0, 0x1f, 0xee, 0x0d, 0x0e, 0x24, 0x0c, 0xa4, 0xad, 0x6c, 0x6e, 0x2e, 0xec, 0xac, 0x0c, 0xe4, 0xcd, 0xcc, 0x0c, 0xc4, 0xa5, 0xce, 0x6d, 0xae, 0xcc, 0x8d, 0xae, 0xa5, 0xad, 0x6c, 0x6e, 0x2e, 0xec, 0xac, 0x6c, 0x8e, 0x05, 0xe4, 0xae, 0x0c, 0x04, 0xae, 0x6e, 0x0e, 0x0d, 0x24, 0x6c, 0x0e, 0xa4, 0x2d, 0xcc, 0x2d, 0x0f, 0xc4, 0x4c, 0x2e, 0xec, 0xac, 0xad, 0xcc, 0x8d, 0x6e, 0x0e, 0x24, 0x6c, 0x5e, 0x02, 0xd0, 0xfa, 0xae, 0x0c, 0x64, 0x2c, 0xcc, 0x0d, 0x24, 0xcd, 0x8d, 0xee, 0x0d, 0x84, 0x0f, 0x2e, 0x6c, 0x6c, 0xad, 0x8c, 0xae, 0x05, 0xae, 0xae, 0x0d, 0x8e, 0x05, 0xe4, 0x0e, 0x2d, 0x6d, 0x0c, 0x0d, 0x64, 0xae, 0xcc, 0x8d, 0x6c, 0x0e, 0xa4, 0xcc, 0xae, 0x4c, 0x2e, 0x0f, 0x04, 0x2e, 0x6c, 0x6c, 0xad, 0x8c, 0x0e, 0x24, 0x8d, 0x0e, 0xa4, 0x2c, 0x8c, 0x6e, 0xce, 0x2d, 0x01, 0xd0, 0x00, 0x54, 0xd8, 0xd8, 0x5a, 0x19, 0xdd, 0x1c, 0x88, 0x5c, 0x99, 0x5a, 0xd9, 0x18, 0x5d, 0x19, 0x19, 0x88, 0x58, 0x1e, 0x08, 0x1f, 0x5c, 0xd8, 0xd8, 0x5a, 0x19, 0x5d, 0x0b, 0x5c, 0x5d, 0x1b, 0x1c, 0x48, 0x98, 0x5c, 0x19, 0x08, 0x1c, 0x5b, 0xd8, 0x58, 0x19, 0x19, 0x48, 0x9a, 0x1b, 0x88, 0x4b, 0x9d, 0xdb, 0x5c, 0x99, 0x1b, 0x5d, 0x8b, 0x99, 0x5c, 0xd8, 0x59, 0x5b, 0x99, 0x1b, 0xdd, 0x9c, 0x6b, 0x25, 0x00, 0xaf, 0xaf, 0xd0, 0xca, 0xdc, 0x40, 0xee, 0xca, 0x40, 0xd0, 0xca, 0xc2, 0xe4, 0x40, 0xc2, 0x40, 0xe0, 0xc2, 0xc6, 0xd6, 0xca, 0xe8, 0x40, 0xc2, 0xc6, 0xd6, 0x58, 0x40, 0xee, 0xca, 0x40, 0xe6, 0xca, 0xdc, 0xc8, 0x40, 0xd2, 0xe8, 0x40, 0xe8, 0xde, 0x40, 0xf8, 0xe0, 0xc2, 0xc6, 0xd6, 0xca, 0xe8, 0x5a, 0xe0, 0xea, 0xda, 0xe0, 0x40, 0xe8, 0xde, 0x40, 0xc4, 0xca, 0x25, 0x00, 0x9d, 0xe4, 0xca, 0xda, 0xde, 0xec, 0xca, 0xc8, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x40, 0xd2, 0xe8, 0xe6, 0x40, 0xe2, 0xea, 0xca, 0xea, 0xca, 0x40, 0xde, 0xcc, 0x40, 0xea, 0xdc, 0xc2, 0xc6, 0xd6, 0xca, 0xc8, 0x40, 0xe0, 0xc2, 0xc6, 0xd6, 0xca, 0xe8, 0xe6, 0x5c, 0x2b, 0x01, 0xf8, 0x7f, 0x85, 0x56, 0xe6, 0x06, 0x72, 0x57, 0x06, 0x82, 0x56, 0x16, 0x26, 0x07, 0x12, 0x06, 0xd2, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0x06, 0x12, 0x36, 0xb6, 0x06, 0x82, 0x02, 0xf7, 0x36, 0x97, 0x46, 0x97, 0x66, 0x57, 0x06, 0xf2, 0x26, 0x07, 0xe2, 0x56, 0x76, 0x16, 0x46, 0x97, 0x66, 0x57, 0x96, 0xc2, 0x02, 0x72, 0x57, 0x06, 0x42, 0x27, 0x57, 0x16, 0x46, 0x07, 0x42, 0x87, 0x16, 0x46, 0x2f, 0x01, 0xf8, 0x1f, 0x36, 0x07, 0x42, 0x87, 0xf6, 0x56, 0x77, 0x86, 0x06, 0x12, 0xc6, 0xc6, 0x06, 0x62, 0x26, 0x17, 0x76, 0xd6, 0x56, 0xe6, 0x46, 0x37, 0x07, 0x82, 0x16, 0x66, 0x57, 0x06, 0x22, 0x56, 0x56, 0xe6, 0x06, 0x12, 0x36, 0xb6, 0x56, 0x46, 0xe6, 0x02, 0x02, 0x92, 0x64, 0x06, 0x42, 0x87, 0x96, 0x36, 0x07, 0xd2, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0x06, 0x92, 0x36, 0x07, 0xe2, 0xf6, 0x46, 0x2f, 0x01, 0xf8, 0xef, 0x32, 0x56, 0x27, 0x27, 0x57, 0xe6, 0x46, 0xc7, 0x02, 0x42, 0x87, 0x56, 0xe6, 0x06, 0x42, 0x87, 0x96, 0x36, 0x07, 0x12, 0x36, 0xb6, 0x06, 0x92, 0x36, 0x07, 0x62, 0xf6, 0x26, 0x07, 0x12, 0x06, 0x62, 0x56, 0x47, 0x57, 0x27, 0x57, 0x06, 0xd2, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0x06, 0x12, 0xe6, 0x46, 0x06, 0xe2, 0x32, 0x56, 0x27, 0x27, 0x57, 0xe6, 0x46, 0x07, 0x82, 0x16, 0x36, 0x2f, 0x01, 0xe8, 0xef, 0xf6, 0x46, 0x07, 0x92, 0x57, 0x46, 0x07, 0x22, 0x56, 0x56, 0xe6, 0x06, 0x12, 0x36, 0xb6, 0x56, 0x46, 0xc6, 0x02, 0x32, 0xf7, 0x06, 0x72, 0x57, 0x06, 0x02, 0xc7, 0x16, 0x36, 0x56, 0x06, 0x42, 0x87, 0x56, 0x06, 0x12, 0x36, 0xb6, 0x06, 0x92, 0xe6, 0x06, 0xe2, 0x12, 0x57, 0x57, 0x56, 0x57, 0x46, 0xd6, 0xd2, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0xd6, 0x12, 0x36, 0xb6, 0x36, 0xe7, 0x5a, 0x09, 0xc0, 0xff, 0x24, 0x33, 0x90, 0xbb, 0x32, 0x10, 0xb4, 0xb2, 0x30, 0x39, 0x90, 0x30, 0x90, 0xb6, 0xb2, 0xb9, 0xb9, 0xb0, 0xb3, 0x32, 0x90, 0xb0, 0xb1, 0x35, 0x10, 0xb1, 0x32, 0xb3, 0x37, 0xb9, 0x32, 0x90, 0xbb, 0xb2, 0x13, 0xbb, 0x32, 0x90, 0xb9, 0x32, 0x37, 0x3a, 0x90, 0x30, 0x36, 0x36, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0x33, 0xb9, 0xb0, 0xb3, 0xb6, 0x32, 0x37, 0xba, 0x39, 0x10, 0xb3, 0x37, 0x79, 0x09, 0x80, 0x0f, 0xe8, 0xd0, 0xc2, 0xe8, 0x40, 0xda, 0xca, 0xe6, 0xe6, 0xc2, 0xce, 0xca, 0x58, 0x40, 0xc6, 0xd8, 0xca, 0xc2, 0xe4, 0x40, 0x5c, 0xea, 0xdc, 0xe6, 0xca, 0xdc, 0xe8, 0x5a, 0xcc, 0xe4, 0xc2, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0xe6, 0x40, 0xc2, 0xdc, 0xc8, 0x40, 0xd0, 0xc2, 0xec, 0xca, 0x40, 0xf8, 0xe0, 0xc2, 0xc6, 0xd6, 0xca, 0xe8, 0x5a, 0xe0, 0xea, 0xda, 0xe0, 0x40, 0xc8, 0xca, 0xd8, 0xca, 0xe8, 0xca, 0x25, 0x00, 0x3e, 0x08, 0x63, 0x63, 0x03, 0x99, 0x2b, 0x73, 0xa3, 0x03, 0x31, 0x93, 0x0b, 0x3b, 0x6b, 0x2b, 0x73, 0xa3, 0x9b, 0x03, 0x31, 0x93, 0x7b, 0x6b, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x69, 0x2b, 0x9b, 0x9b, 0x0b, 0x3b, 0x2b, 0x73, 0x01, 0x49, 0x32, 0x03, 0xa1, 0x43, 0x4b, 0x9b, 0x03, 0x29, 0x0b, 0x93, 0x63, 0xcb, 0x03, 0x69, 0x2b, 0x9b, 0x9b, 0x0b, 0x3b, 0x2b, 0x03, 0x09, 0x1b, 0x5b, 0x03, 0xb9, 0x0b, 0x9b, 0x97, 0x00, 0xbc, 0x86, 0x7b, 0x9b, 0x4b, 0xa3, 0x4b, 0xb3, 0x2b, 0x63, 0x01, 0x81, 0x93, 0x4b, 0x73, 0xa3, 0x03, 0x49, 0xa3, 0x03, 0x79, 0xab, 0xa3, 0x03, 0x11, 0x2b, 0x1b, 0x0b, 0xab, 0x9b, 0x2b, 0x03, 0x49, 0xa3, 0x03, 0x49, 0x73, 0x23, 0x4b, 0x1b, 0x0b, 0xa3, 0x2b, 0x9b, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x81, 0x2b, 0x2b, 0x93, 0x03, 0x49, 0x9b, 0x03, 0x71, 0x7b, 0xa3, 0x97, 0x00, 0x3a, 0xc4, 0xca, 0xd0, 0xc2, 0xec, 0xd2, 0xdc, 0xce, 0x40, 0xe0, 0xe4, 0xde, 0xe0, 0xca, 0xe4, 0xd8, 0xf2, 0x5c, 0x2b, 0x01, 0x78, 0x9f, 0x64, 0x06, 0x42, 0x87, 0x56, 0x06, 0x12, 0x36, 0xb6, 0x06, 0x92, 0x36, 0x07, 0x62, 0xf6, 0x26, 0x07, 0x42, 0x87, 0x56, 0x06, 0x32, 0x56, 0x27, 0x27, 0x57, 0xe6, 0x46, 0x07, 0xd2, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0xc6, 0x02, 0x82, 0x16, 0x66, 0x57, 0x06, 0xc2, 0x07, 0x17, 0x36, 0xb6, 0x56, 0x46, 0xd7, 0x02, 0x57, 0xd7, 0x06, 0x07, 0x42, 0x56, 0xc6, 0x56, 0x46, 0x57, 0x2e, 0x01, 0x78, 0x1b, 0xc6, 0xc6, 0x06, 0x02, 0x17, 0x36, 0xb6, 0x56, 0x46, 0x37, 0x07, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0x42, 0x87, 0x56, 0x06, 0xd2, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0xc6, 0x02, 0x72, 0x96, 0x66, 0x57, 0x06, 0x42, 0x87, 0x56, 0x06, 0xd2, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0x06, 0x12, 0x36, 0xb6, 0x06, 0x22, 0x16, 0x36, 0xb6, 0x2e, 0x01, 0xf8, 0x4e, 0xf7, 0x06, 0x42, 0x87, 0x56, 0x06, 0x32, 0xc6, 0x96, 0x56, 0xe6, 0x46, 0x07, 0x62, 0x17, 0xe6, 0x56, 0xc6, 0x02, 0x92, 0xe6, 0x36, 0x26, 0x57, 0xd6, 0x56, 0xe6, 0x46, 0x07, 0xe2, 0x32, 0x56, 0x27, 0x27, 0x57, 0xe6, 0x46, 0xc7, 0x02, 0x12, 0xe6, 0x46, 0x06, 0x32, 0x86, 0x56, 0x36, 0xb6, 0x06, 0x92, 0x66, 0x06, 0x42, 0x87, 0x96, 0x36, 0x07, 0xe2, 0x56, 0x86, 0x47, 0x2f, 0x01, 0x78, 0xdf, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0x06, 0x92, 0x36, 0x07, 0x92, 0xe6, 0x06, 0xe2, 0x12, 0x57, 0x57, 0x56, 0x57, 0x46, 0xd6, 0xd2, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0xd6, 0x12, 0x36, 0xb6, 0x36, 0xe7, 0x02, 0x02, 0x92, 0x64, 0x06, 0x92, 0x46, 0x07, 0x92, 0x36, 0xc7, 0x02, 0x52, 0xd6, 0x96, 0x46, 0x07, 0x42, 0x87, 0x56, 0x06, 0xd2, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0x2e, 0x01, 0x78, 0x8f, 0xe2, 0x96, 0x12, 0x36, 0xb6, 0xc6, 0x02, 0x92, 0xe6, 0x36, 0x26, 0x57, 0xd6, 0x56, 0xe6, 0x46, 0x07, 0xe2, 0x32, 0x56, 0x27, 0x27, 0x57, 0xe6, 0x46, 0xc7, 0x02, 0x12, 0xe6, 0x46, 0x06, 0x32, 0x86, 0x56, 0x36, 0xb6, 0x06, 0x42, 0x87, 0x56, 0x06, 0xe2, 0x56, 0x86, 0x47, 0x07, 0xd2, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0xe6, 0x02, 0x02, 0x22, 0x55, 0x06, 0x57, 0x16, 0x46, 0x2f, 0x01, 0xe8, 0x50, 0xe7, 0x46, 0x97, 0xc6, 0x06, 0xe2, 0x32, 0x56, 0x27, 0x27, 0x57, 0xe6, 0x46, 0x07, 0x92, 0x36, 0x07, 0xe2, 0xf6, 0x46, 0x07, 0x62, 0x56, 0xc7, 0xc6, 0x96, 0x07, 0x12, 0x36, 0xb6, 0x56, 0x46, 0xe6, 0x5a, 0x09, 0x40, 0x17, 0x2a, 0xb4, 0x32, 0x10, 0xb3, 0x37, 0x36, 0xb6, 0xb7, 0xbb, 0x34, 0xb7, 0x33, 0x90, 0xb2, 0xb8, 0xba, 0x30, 0xba, 0xb4, 0x37, 0x37, 0x90, 0xb4, 0x39, 0x90, 0x30, 0xb6, 0xbb, 0xb0, 0xbc, 0x39, 0x10, 0x3a, 0xb9, 0xba, 0x32, 0xbd, 0x04, 0xe0, 0x9f, 0x8b, 0x5b, 0x19, 0x1e, 0x1d, 0x48, 0x0b, 0x88, 0xcb, 0x58, 0x9d, 0x9c, 0x5c, 0x99, 0x1b, 0x1d, 0x48, 0x4f, 0x0f, 0x88, 0x5b, 0x5d, 0x9b, 0x58, 0x99, 0x1c, 0xc8, 0x9b, 0x19, 0x48, 0x5b, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0xd9, 0x1c, 0x48, 0x9a, 0x1b, 0x88, 0x19, 0x5b, 0xda, 0x19, 0x1a, 0xdd, 0x4a, 0x00, 0x1e, 0x07, 0xd1, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0x94, 0xb9, 0x91, 0x81, 0xbc, 0x99, 0x81, 0x84, 0x81, 0xd0, 0x85, 0xcd, 0xad, 0xb1, 0x80, 0xf0, 0xb5, 0x95, 0xcd, 0xcd, 0x85, 0x9d, 0x95, 0xb5, 0xc0, 0xd5, 0xb5, 0xc1, 0x81, 0xcc, 0x95, 0xb9, 0x91, 0xcd, 0x81, 0x84, 0x81, 0x94, 0xa0, 0x85, 0xb1, 0xd1, 0x81, 0xd0, 0x85, 0xcd, 0xad, 0x81, 0xd0, 0xbd, 0x4b, 0x00, 0x7c, 0xc0, 0x07, 0x17, 0x36, 0xb6, 0x56, 0x46, 0xd7, 0x02, 0x57, 0xd7, 0x06, 0xc7, 0x02, 0x72, 0x87, 0x96, 0x36, 0x86, 0x06, 0x32, 0x16, 0xe6, 0x06, 0x42, 0x27, 0x97, 0x76, 0x76, 0x56, 0x26, 0x07, 0x12, 0x06, 0x42, 0x97, 0xd6, 0x56, 0x26, 0x07, 0x42, 0xf7, 0x06, 0x22, 0x56, 0x06, 0x32, 0x57, 0x46, 0x07, 0xf2, 0x26, 0x07, 0x32, 0xc6, 0x56, 0x16, 0x26, 0x57, 0x46, 0x06, 0x22, 0x16, 0x36, 0x57, 0x46, 0x2e, 0x01, 0xf0, 0xc0, 0x9b, 0x1b, 0xc8, 0xd8, 0x9b, 0xdb, 0x59, 0xd9, 0x1c, 0x5d, 0xda, 0x9b, 0x1b, 0xc8, 0xd8, 0x9b, 0x1b, 0x9d, 0xdc, 0x1b, 0x1b, 0xc8, 0x58, 0x18, 0xdb, 0x58, 0x1d, 0x5b, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x9c, 0x0b, 0xc8, 0x15, 0x5a, 0x99, 0x1b, 0x08, 0x1d, 0x5a, 0x19, 0x08, 0x5d, 0x5a, 0x5b, 0x99, 0x1c, 0x88, 0x59, 0x9a, 0x5c, 0xd9, 0x1c, 0x0b, 0x48, 0x1a, 0x1d, 0xc8, 0x5d, 0x1a, 0x1b, 0xbb, 0x04, 0xa0, 0xcd, 0x59, 0x99, 0x5b, 0x99, 0x5c, 0x18, 0x1b, 0x5b, 0x1e, 0xc8, 0x58, 0x58, 0xdd, 0x5c, 0x19, 0x48, 0x18, 0x08, 0x5c, 0xd8, 0xd8, 0x5a, 0x19, 0x1d, 0x08, 0xdd, 0x1b, 0x88, 0x58, 0x19, 0x88, 0x5c, 0x59, 0xcb, 0x5c, 0x99, 0x1b, 0x9d, 0x6b, 0x25, 0x00, 0x3e, 0x68, 0x2a, 0x9b, 0x9b, 0x0b, 0x3b, 0x2b, 0x03, 0x99, 0x2b, 0x8b, 0xab, 0x2b, 0x73, 0x1b, 0x2b, 0x03, 0x71, 0xab, 0x6b, 0x13, 0x2b, 0x93, 0x9b, 0x03, 0x99, 0xa3, 0x0b, 0x93, 0xa3, 0x03, 0x09, 0xa3, 0x03, 0x89, 0x01, 0x99, 0x7b, 0x03, 0xa1, 0x43, 0x0b, 0xa3, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x31, 0x4b, 0x93, 0x9b, 0xa3, 0x03, 0x69, 0x2b, 0x9b, 0x9b, 0x0b, 0x3b, 0x2b, 0x03, 0xb9, 0x4b, 0x63, 0x63, 0x97, 0x00, 0xb4, 0x17, 0x2b, 0x03, 0x39, 0x93, 0x2b, 0x0b, 0xa3, 0x2b, 0x93, 0x03, 0xa1, 0x43, 0x0b, 0x73, 0x03, 0x71, 0x61, 0x0b, 0x9b, 0xa3, 0x6b, 0x09, 0x1b, 0x5b, 0x2b, 0x23, 0x73, 0x69, 0x2b, 0x9b, 0x9b, 0x0b, 0x3b, 0x2b, 0x6b, 0x99, 0x4b, 0x73, 0x5b, 0x6b, 0x99, 0xa3, 0x0b, 0xa3, 0x2b, 0x03, 0x79, 0x73, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x91, 0x2b, 0x1b, 0x2b, 0x4b, 0xb3, 0x2b, 0x93, 0x73, 0xad, 0x04, 0xe0, 0xfd, 0x58, 0x9d, 0x9c, 0x5c, 0x99, 0x1b, 0x9d, 0x0e, 0xc8, 0x5c, 0x59, 0x5c, 0x5d, 0x99, 0xdb, 0x58, 0x19, 0x88, 0x5b, 0x5d, 0x9b, 0x58, 0x99, 0x1c, 0xc8, 0x9b, 0x19, 0x48, 0x59, 0x98, 0x1c, 0x5b, 0x5a, 0xd9, 0x1c, 0x1d, 0x48, 0x5b, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0x19, 0xc8, 0x5c, 0x99, 0x1b, 0x1d, 0xc8, 0x9b, 0x1c, 0x88, 0x58, 0x59, 0x9a, 0xdb, 0x19, 0xc8, 0x5c, 0x99, 0x1b, 0xbd, 0x04, 0xe0, 0x99, 0x5b, 0x19, 0x1e, 0x9d, 0x0e, 0xc8, 0x5c, 0x59, 0x5c, 0x5d, 0x99, 0xdb, 0x58, 0x19, 0x88, 0x5b, 0x5d, 0x9b, 0x58, 0x99, 0x1c, 0xc8, 0x9b, 0x19, 0x88, 0x5b, 0x19, 0x1e, 0x1d, 0x48, 0x5b, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0x19, 0x08, 0xdd, 0x1b, 0xc8, 0x5c, 0x99, 0x1b, 0xb9, 0x04, 0xe0, 0x73, 0x9d, 0xdb, 0x5c, 0x99, 0x1b, 0x5d, 0x4b, 0x5b, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0xd9, 0x9c, 0x0e, 0x48, 0x5b, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0xd9, 0x1c, 0x08, 0xdd, 0x1b, 0x88, 0x58, 0x19, 0xc8, 0x5c, 0x99, 0x1b, 0x1d, 0x48, 0x98, 0x19, 0x5d, 0x99, 0x1c, 0xc8, 0x58, 0x9d, 0x9c, 0x5c, 0x99, 0x1b, 0x1d, 0x48, 0x5b, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0xb9, 0x04, 0xc0, 0x07, 0x75, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x2d, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0xe7, 0x12, 0x00, 0x3f, 0xc4, 0xd5, 0x95, 0xd5, 0x95, 0x91, 0xb5, 0xb4, 0x95, 0xcd, 0xcd, 0x85, 0x9d, 0x95, 0xb5, 0x84, 0x8d, 0xad, 0xcd, 0xe9, 0x80, 0x98, 0xd5, 0xd1, 0xd5, 0xc9, 0x95, 0x81, 0xb4, 0x95, 0xcd, 0xcd, 0x85, 0x9d, 0x95, 0x81, 0x84, 0x8d, 0xad, 0xcd, 0x81, 0xd0, 0xbd, 0x81, 0x88, 0x95, 0x81, 0x84, 0xc1, 0xc1, 0xb1, 0xa5, 0x95, 0x91, 0x81, 0x84, 0x99, 0xd1, 0x95, 0xc9, 0x81, 0x8c, 0xd5, 0xc9, 0xc9, 0x95, 0xb9, 0xd1, 0x4b, 0x00, 0xbe, 0xc2, 0x85, 0x8d, 0xad, 0x95, 0xd1, 0xb5, 0xc0, 0xd5, 0xb5, 0xc1, 0xb5, 0xcc, 0xd1, 0x85, 0xd1, 0x95, 0xe9, 0x80, 0xcc, 0xd1, 0x85, 0xd1, 0x95, 0x81, 0xbc, 0x99, 0x81, 0x8c, 0xbd, 0xc9, 0xc9, 0x95, 0xcd, 0xc1, 0xbd, 0xb9, 0x91, 0xa5, 0xb9, 0x9d, 0x81, 0xf0, 0xc1, 0x85, 0x8d, 0xad, 0x95, 0xd1, 0xb5, 0xc0, 0xd5, 0xb5, 0xc1, 0xb5, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xc0, 0xcf, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x81, 0xe2, 0x06, 0x4e, 0xa1, 0xf8, 0x0d, 0x0e, 0x10, 0xa2, 0x1b, 0x3c, 0xf0, 0x73, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xa0, 0xb8, 0x83, 0x27, 0xb3, 0x1c, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x82, 0x42, 0x32, 0x70, 0x04, 0x85, 0x82, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0x8e, 0xd5, 0xc9, 0xc9, 0x95, 0xb9, 0xd1, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x04, 0x85, 0xc5, 0xc1, 0x6b, 0x65, 0x8e, 0x37, 0x08, 0xa0, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x82, 0xc2, 0xe4, 0xe0, 0xb5, 0x32, 0xc7, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xa0, 0xb0, 0x19, 0x38, 0x82, 0xc2, 0xfc, 0xe0, 0x29, 0xcb, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x04, 0x85, 0xfd, 0xc1, 0x6b, 0x65, 0x8e, 0x0f, 0x8f, 0xc9, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x50, 0x48, 0x06, 0xae, 0xa0, 0xb0, 0xde, 0xf0, 0xe7, 0xd2, 0x06, 0xeb, 0x87, 0x6b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x0a, 0x0a, 0xf1, 0xc1, 0xd3, 0x82, 0x8e, 0x37, 0x08, 0xa0, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x82, 0x42, 0x7e, 0xf0, 0xb4, 0xa0, 0xe3, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x50, 0x18, 0x0c, 0x5c, 0x41, 0x61, 0x7b, 0xf0, 0x94, 0xe5, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x82, 0xc2, 0xf8, 0xe0, 0x69, 0x41, 0xc7, 0x87, 0xc7, 0x64, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x33, 0x28, 0x24, 0x03, 0x67, 0x50, 0xa8, 0xd9, 0xf0, 0xe7, 0xd2, 0x00, 0xde, 0x75, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x2d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x41, 0x61, 0x79, 0xf0, 0xc2, 0xa7, 0xe3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x83, 0xc2, 0x74, 0xe0, 0x0c, 0x0a, 0xeb, 0x83, 0x87, 0x1f, 0x30, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x50, 0x98, 0x0f, 0x9c, 0x41, 0xa1, 0x65, 0xc3, 0xbf, 0xf3, 0x0b, 0xf0, 0xb6, 0x95, 0xcd, 0xcd, 0x85, 0x9d, 0x95, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x07, 0x85, 0x64, 0xe0, 0x0e, 0x0a, 0x85, 0x1b, 0xfe, 0x5c, 0x1a, 0xc0, 0xbf, 0xce, 0x6d, 0xae, 0xcc, 0x8d, 0xae, 0xc5, 0x4c, 0x2e, 0xec, 0xac, 0xad, 0xcc, 0x8d, 0x6e, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3b, 0x28, 0x4c, 0x0f, 0x9e, 0xdd, 0x75, 0xbc, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x50, 0xd8, 0x0e, 0xdc, 0x41, 0x61, 0x7f, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1d, 0x14, 0x0a, 0x06, 0xee, 0xa0, 0xd0, 0xb7, 0xe1, 0xdf, 0xf9, 0x05, 0xf0, 0x9e, 0xa3, 0x0b, 0xa3, 0x4b, 0x1b, 0x6b, 0x31, 0x93, 0x0b, 0x3b, 0x6b, 0x2b, 0x73, 0xa3, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x10, 0x0a, 0xc9, 0xc0, 0x21, 0x14, 0x2a, 0x37, 0xfc, 0xb9, 0x34, 0x00, 0x2f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x2d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2d, 0x61, 0x63, 0x6b, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x42, 0x61, 0x7d, 0xf0, 0x9e, 0xb6, 0xe3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x84, 0xc2, 0x7c, 0xe0, 0x10, 0x0a, 0x0d, 0x07, 0x25, 0x62, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x08, 0x85, 0x8a, 0x81, 0x43, 0x28, 0xb4, 0x1d, 0x3c, 0x65, 0x79, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x84, 0x42, 0xdd, 0xc0, 0x21, 0x14, 0x1a, 0x37, 0xfc, 0x3b, 0xbf, 0x80, 0x17, 0x36, 0xb6, 0x56, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x25, 0x14, 0x92, 0x81, 0x4b, 0x28, 0x6c, 0x37, 0xfc, 0xb9, 0x34, 0x00, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2d, 0x70, 0x75, 0x6d, 0x70, 0x2d, 0x73, 0x74, 0x61, 0x74, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x42, 0x21, 0x3a, 0x78, 0x98, 0xdf, 0xf1, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x5d, 0x7f, 0xc7, 0xd5, 0xe1, 0x14, 0x5b, 0x00, 0x9f, 0x31, 0xb4, 0xba, 0xb6, 0x96, 0x39, 0xba, 0x30, 0xba, 0x72, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x81, 0x85, 0xc7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x52, 0xc6, 0x0d, 0x5c, 0x95, 0xf1, 0x1b, 0x1c, 0x20, 0x44, 0x37, 0x78, 0x60, 0xe1, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x94, 0x71, 0x07, 0x6f, 0x50, 0x3c, 0xde, 0x20, 0x68, 0x7f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x32, 0x24, 0x03, 0x37, 0x65, 0x18, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x29, 0x43, 0x34, 0x70, 0x53, 0x86, 0xc1, 0xc1, 0xc3, 0x15, 0x8c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x32, 0x2c, 0x06, 0x6e, 0xca, 0xb0, 0xdd, 0xf0, 0xef, 0xfc, 0x02, 0xf8, 0x98, 0xc9, 0x95, 0xb9, 0xb5, 0xcc, 0xd1, 0x85, 0xd1, 0x95, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x54, 0x86, 0x64, 0xe0, 0xa8, 0x0c, 0xe3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x47, 0x65, 0x88, 0x06, 0x8e, 0xca, 0x30, 0x38, 0x78, 0xef, 0x7f, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x54, 0x86, 0xc5, 0xc0, 0x51, 0x19, 0xb6, 0x1b, 0xfe, 0x9d, 0x5f, 0x00, 0x9f, 0x37, 0x3b, 0xb7, 0xb4, 0x96, 0x39, 0xba, 0x30, 0xba, 0xb2, 0x6a, 0x05, 0xfc, 0xbb, 0xb0, 0x34, 0x76, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x23, 0x43, 0xe8, 0xc1, 0x23, 0x44, 0x8f, 0x1b, 0x80, 0x37, 0xba, 0xb0, 0xb3, 0xb3, 0x32, 0x32, 0x10, 0xb9, 0xb2, 0xb8, 0xba, 0xb2, 0x39, 0x3a, 0x10, 0x33, 0xb9, 0xb0, 0xb3, 0xb6, 0x32, 0x37, 0xba, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x47, 0x88, 0x1e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb1, 0x12, 0x37, 0x70, 0xad, 0xc4, 0x6f, 0x10, 0xb4, 0x3f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb1, 0x12, 0x92, 0x81, 0x63, 0x25, 0x4c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x2b, 0x21, 0x1a, 0x38, 0x56, 0x42, 0x78, 0x10, 0xd2, 0xa9, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb1, 0x12, 0xd2, 0x81, 0x63, 0x25, 0x2c, 0x36, 0xfc, 0x3b, 0xbf, 0x06, 0xcf, 0x34, 0x20, 0xae, 0x3a, 0x9c, 0x62, 0x6b, 0x90, 0x42, 0xe7, 0xb3, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0x20, 0x85, 0xce, 0xa7, 0x01, 0xf0, 0x4e, 0x2e, 0xec, 0x0e, 0x24, 0x8c, 0xee, 0xad, 0x0d, 0x84, 0xee, 0x0d, 0xe4, 0x4d, 0x0e, 0xc4, 0x4c, 0xee, 0xad, 0x0d, 0xa4, 0xce, 0x2d, 0x0d, 0x8f, 0x05, 0x44, 0xae, 0x0c, 0x4e, 0xae, 0x6c, 0xae, 0xcc, 0x8d, 0x2e, 0xcd, 0xed, 0x0c, 0x24, 0x0c, 0x04, 0x2e, 0x6c, 0x6c, 0xad, 0x8c, 0x6e, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x20, 0x85, 0xce, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xca, 0x7c, 0x48, 0x07, 0xca, 0x7c, 0x18, 0x6d, 0xf8, 0xa2, 0x66, 0x43, 0x1d, 0x0f, 0xf8, 0xea, 0xf0, 0xc4, 0xd8, 0xde, 0xc4, 0xc3, 0x29, 0xb6, 0x00, 0x3e, 0x64, 0x65, 0x61, 0x64, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xf2, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xcb, 0x86, 0x8f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7e, 0x0c, 0x9b, 0x81, 0xfb, 0x31, 0x34, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x1f, 0xc3, 0x68, 0xe0, 0x7e, 0x0c, 0xcb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x32, 0x75, 0x8f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x1f, 0xc3, 0xea, 0xe0, 0xb9, 0xca, 0xc7, 0x07, 0x4f, 0x4f, 0xf7, 0x58, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xc7, 0x30, 0x1d, 0xb8, 0x1f, 0xc3, 0x7e, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0xa2, 0x52, 0x64, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xc7, 0xb0, 0x3d, 0x78, 0x34, 0xf4, 0xf1, 0xc1, 0xbb, 0x2d, 0x45, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfb, 0x31, 0x14, 0x0c, 0xdc, 0x8f, 0xa1, 0x68, 0xc3, 0x9f, 0x4b, 0x1b, 0x9c, 0x45, 0x51, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7e, 0x0c, 0x2d, 0x07, 0x6f, 0xb7, 0x3e, 0x3e, 0x38, 0xf2, 0xb5, 0x76, 0x38, 0xc5, 0xd6, 0x60, 0x19, 0x55, 0xf7, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x32, 0xaa, 0xee, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x0c, 0xc2, 0x6c, 0xe0, 0x32, 0x08, 0x0d, 0x1b, 0xbe, 0xa8, 0xd9, 0x50, 0xc7, 0x03, 0x7c, 0xea, 0xee, 0xcc, 0xe4, 0xc2, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0xd5, 0xe0, 0xf5, 0x5a, 0xc7, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xaf, 0xd7, 0x3a, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xca, 0x1f, 0x37, 0x50, 0xfc, 0xe3, 0x37, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xf2, 0x87, 0x64, 0xa0, 0xf2, 0x87, 0xd5, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xca, 0x1f, 0xa2, 0x81, 0xca, 0x1f, 0xf2, 0x83, 0xc7, 0x6b, 0x0f, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x3f, 0x0c, 0x06, 0x2a, 0x7f, 0x18, 0x6d, 0xf8, 0x77, 0x7e, 0x83, 0xf7, 0x5e, 0x8b, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xfa, 0x43, 0x32, 0x50, 0xfa, 0xc3, 0x74, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe9, 0x0f, 0xd1, 0x40, 0xe9, 0x0f, 0xf9, 0xc1, 0xf3, 0x3b, 0xf1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd2, 0x1f, 0x06, 0x03, 0xa5, 0x3f, 0x2c, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0x13, 0xda, 0xd7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xfa, 0xc3, 0xf0, 0xe0, 0x85, 0xf6, 0xc7, 0x07, 0x61, 0x3a, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xfb, 0x43, 0x32, 0x50, 0xfb, 0x43, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xda, 0x1f, 0xa2, 0x81, 0xda, 0x1f, 0x76, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0xf0, 0x73, 0x0b, 0xc3, 0x83, 0x63, 0x0b, 0x73, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xda, 0x1f, 0x86, 0x03, 0xb5, 0x3f, 0x94, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x37, 0x1d, 0x0f, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xed, 0x0f, 0xcb, 0x83, 0x97, 0x0f, 0x20, 0x1f, 0x3c, 0x65, 0x79, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xfd, 0xa1, 0x65, 0xa0, 0xf6, 0x87, 0xae, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x28, 0x7d, 0xbc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xfd, 0xa1, 0xe6, 0xe0, 0xf9, 0x09, 0xc8, 0x07, 0x2f, 0x2e, 0xaf, 0xac, 0xd5, 0xe0, 0x5d, 0x7f, 0xc7, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0xde, 0xf5, 0x77, 0xdc, 0x00, 0x78, 0x00, 0x57, 0x26, 0x37, 0x97, 0x36, 0x47, 0x57, 0xe6, 0x46, 0x07, 0x32, 0x47, 0x17, 0x46, 0x57, 0x06, 0x62, 0xf6, 0x26, 0x07, 0xc2, 0x07, 0x17, 0x36, 0xb6, 0x56, 0x46, 0xd7, 0x02, 0x57, 0xd7, 0x06, 0xaf, 0x04, 0xe0, 0x8f, 0x5b, 0x19, 0x1e, 0x5d, 0xcb, 0x5d, 0xd8, 0x5a, 0x99, 0x0e, 0x08, 0x5b, 0xd8, 0x1c, 0x1d, 0x08, 0x5d, 0x5a, 0x5b, 0x99, 0x1c, 0xc8, 0x5d, 0xd9, 0x89, 0x5d, 0x19, 0xc8, 0x5c, 0x19, 0x1d, 0x0b, 0xc8, 0x9b, 0x1c, 0x88, 0x5b, 0x1d, 0x1b, 0xbb, 0x04, 0xe0, 0x1d, 0x5b, 0x9a, 0x5d, 0x99, 0x0e, 0x08, 0x5c, 0xd8, 0xd8, 0x5a, 0x19, 0xdd, 0x1c, 0x48, 0x9a, 0x1b, 0x88, 0x19, 0x5b, 0xda, 0x19, 0x1a, 0xdd, 0x0e, 0xc8, 0x5c, 0x99, 0x1b, 0x1d, 0x88, 0x58, 0x1d, 0x1d, 0x88, 0xdb, 0x1b, 0x1d, 0x48, 0x5e, 0x19, 0x1d, 0x48, 0xd8, 0xd8, 0x5a, 0x19, 0xb9, 0x04, 0xe0, 0x4d, 0x5b, 0x19, 0x9d, 0x5c, 0xda, 0xd8, 0x9c, 0x0e, 0xc8, 0xd8, 0x9b, 0xdb, 0x59, 0xd9, 0x1c, 0x5d, 0xda, 0x9b, 0x1b, 0xc8, 0xd8, 0x9b, 0x1b, 0x9d, 0xdc, 0x1b, 0x1b, 0x48, 0x9a, 0x9b, 0xd9, 0x9b, 0x5c, 0x5b, 0x18, 0x5d, 0xda, 0x9b, 0x5b, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0xef, 0xfa, 0x3b, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc3, 0x28, 0x6e, 0xe0, 0x38, 0x8a, 0xdf, 0xe0, 0x00, 0x21, 0xba, 0xc1, 0xbb, 0xfe, 0x8e, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x32, 0x8a, 0x3b, 0x78, 0x5e, 0x0a, 0xf2, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x28, 0x24, 0x03, 0x97, 0x51, 0x58, 0x6f, 0xf8, 0x73, 0x69, 0x00, 0x0f, 0xb7, 0x32, 0x3c, 0xba, 0x96, 0xbb, 0xb0, 0xb5, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xa3, 0xb0, 0x39, 0x78, 0xd9, 0x0b, 0xf2, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x46, 0x61, 0x34, 0x70, 0x19, 0x85, 0xe1, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x46, 0x61, 0x39, 0x70, 0x19, 0x85, 0xf1, 0xc1, 0x91, 0xaf, 0xb5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x34, 0x0a, 0xc9, 0xc0, 0x69, 0x14, 0x1e, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x16, 0x64, 0x98, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x34, 0x0a, 0xf1, 0xc1, 0x7b, 0x77, 0x90, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x34, 0x0a, 0xf9, 0xc0, 0x69, 0x14, 0x4a, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x46, 0x61, 0x30, 0x70, 0x1a, 0x85, 0xcd, 0xc1, 0xb3, 0xdd, 0x6c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x28, 0x8c, 0x06, 0x4e, 0xa3, 0xd0, 0xb1, 0xe1, 0x6d, 0x9d, 0x01, 0xbc, 0xd9, 0xd2, 0xec, 0xca, 0x5a, 0xe0, 0xc2, 0xc6, 0xd6, 0xca, 0xe8, 0x5a, 0xd6, 0xca, 0xf2, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x28, 0x94, 0x0c, 0x9c, 0x46, 0xa1, 0x73, 0xc3, 0xdb, 0x3a, 0x03, 0x78, 0xb3, 0xa5, 0xd9, 0x95, 0xb5, 0xc0, 0x85, 0x8d, 0xad, 0x95, 0xd1, 0xb5, 0xd8, 0x85, 0xb1, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x46, 0xa1, 0x75, 0xe0, 0x34, 0x0a, 0x07, 0x36, 0xfc, 0x3b, 0xbf, 0x00, 0x5e, 0x6c, 0x74, 0x65, 0x2d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x46, 0x21, 0x19, 0xb8, 0x8d, 0xc2, 0x7a, 0xc3, 0x9f, 0x4b, 0x03, 0xbc, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x46, 0x61, 0x71, 0xf0, 0xc8, 0x2a, 0xe4, 0x0d, 0xff, 0xce, 0x2f, 0x80, 0x1f, 0x5c, 0x5d, 0x1b, 0x5c, 0x4b, 0x5b, 0x19, 0x9d, 0x5c, 0xda, 0xd8, 0x5c, 0x1d, 0x4e, 0xb1, 0x05, 0x3c, 0xb1, 0xb0, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xdd, 0xb8, 0x81, 0xcb, 0x37, 0x4c, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xba, 0x21, 0x19, 0x38, 0x75, 0x43, 0xbc, 0xe1, 0xcf, 0xa5, 0xc1, 0xdd, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x75, 0x43, 0x76, 0xf0, 0xb8, 0x30, 0xe4, 0x83, 0x32, 0x4b, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xdd, 0xb8, 0x83, 0x07, 0x7b, 0x21, 0x6f, 0x50, 0xda, 0x5b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb7, 0x6e, 0x48, 0x06, 0x6e, 0xdd, 0x10, 0x6f, 0xf8, 0x73, 0x69, 0xf0, 0x74, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xdd, 0x90, 0x1d, 0x3c, 0x39, 0x0d, 0xf9, 0xa0, 0xcc, 0xd2, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x63, 0x37, 0xee, 0xe0, 0xc1, 0x5e, 0xc8, 0x1b, 0x94, 0xf6, 0x96, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb1, 0x1b, 0x92, 0x81, 0x63, 0x37, 0x2c, 0x36, 0xfc, 0xb9, 0x34, 0xf8, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x6e, 0xc8, 0x0e, 0x1e, 0x22, 0x87, 0xbc, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x6e, 0x08, 0x07, 0x8e, 0xdd, 0x30, 0x38, 0x08, 0x29, 0x93, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xda, 0x8d, 0x3b, 0x78, 0xb0, 0x17, 0xf2, 0x86, 0xaf, 0x70, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xda, 0x0d, 0xc9, 0xc1, 0x83, 0xbd, 0x90, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xbb, 0x21, 0x1d, 0xb8, 0x76, 0x43, 0x7c, 0x10, 0xa6, 0x63, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xee, 0xc6, 0x1d, 0x3c, 0xd8, 0x0b, 0x79, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb9, 0x1b, 0x92, 0x81, 0x73, 0x37, 0xe4, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xdd, 0x90, 0x0d, 0x9c, 0xbb, 0x21, 0x3c, 0x28, 0xa3, 0xcf, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xdc, 0x0d, 0xe9, 0xc0, 0xb9, 0x1b, 0xe2, 0x83, 0x62, 0x68, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x77, 0xe3, 0x07, 0x0e, 0xde, 0x50, 0xb3, 0x41, 0xd1, 0x41, 0x3b, 0x38, 0xb9, 0xc1, 0xb9, 0x9d, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x77, 0xc3, 0x62, 0xe0, 0xde, 0x0d, 0x93, 0x83, 0xc3, 0x39, 0xdf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xbc, 0xf1, 0x07, 0x4f, 0x69, 0x44, 0xde, 0xf0, 0x15, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xbc, 0x21, 0x1a, 0x38, 0x78, 0x43, 0xcb, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xe7, 0x76, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe0, 0x0d, 0xf9, 0xc0, 0xc1, 0x1b, 0x06, 0x07, 0xe5, 0xba, 0xec, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xbc, 0x61, 0x31, 0x70, 0xf0, 0x86, 0x92, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x8a, 0x7c, 0xd9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x78, 0xc3, 0x6a, 0xe0, 0xe0, 0x0d, 0xe3, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x6f, 0x98, 0x0d, 0x1c, 0xbc, 0x61, 0x79, 0xf0, 0xf2, 0x5f, 0xc0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe0, 0x0d, 0xd3, 0x81, 0x83, 0x37, 0x6c, 0x0f, 0xca, 0x75, 0xd9, 0xd6, 0xe0, 0xdc, 0xce, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x6f, 0x28, 0x18, 0x38, 0x78, 0x43, 0xc7, 0xc1, 0xab, 0x84, 0x01, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x37, 0xee, 0xe0, 0xc1, 0x5e, 0xc8, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0xf8, 0xbe, 0x7d, 0x70, 0x72, 0x83, 0x12, 0x3a, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x79, 0x43, 0x36, 0x70, 0xf2, 0x86, 0xf0, 0x20, 0x4c, 0xc7, 0x0e, 0xc2, 0x74, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x79, 0x43, 0x3c, 0x70, 0xf2, 0x86, 0xfc, 0xa0, 0x8c, 0x3e, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x37, 0xee, 0xe0, 0xc1, 0x5e, 0xc8, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x14, 0xbb, 0xe7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xcd, 0x1b, 0xc2, 0x81, 0x9b, 0x37, 0x0c, 0x36, 0x7c, 0x1c, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x6f, 0x88, 0x07, 0x6e, 0xde, 0x90, 0x1f, 0x94, 0xd1, 0xe7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf4, 0xc6, 0x1d, 0x3c, 0xd8, 0x0b, 0x79, 0x83, 0x82, 0x34, 0x76, 0x70, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x7a, 0x43, 0x38, 0x70, 0xf4, 0x86, 0xcd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x37, 0xa4, 0x03, 0x47, 0x6f, 0x18, 0x6c, 0x78, 0x5b, 0x67, 0x83, 0x31, 0xd6, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf4, 0x86, 0xc5, 0xc0, 0xd1, 0x1b, 0x26, 0x07, 0x65, 0xf4, 0x79, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf5, 0xc6, 0x1d, 0x3c, 0xd8, 0x0b, 0x79, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf5, 0x86, 0xe4, 0xe0, 0xc1, 0x5e, 0xc8, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xde, 0x90, 0x0e, 0x5c, 0xbd, 0x21, 0x3e, 0x08, 0xd3, 0xb1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x7b, 0xe3, 0x0e, 0x1e, 0xec, 0x85, 0xbc, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xec, 0x0d, 0xc9, 0xc0, 0xd9, 0x1b, 0xf2, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x6f, 0xc8, 0x06, 0xce, 0xde, 0x10, 0x1e, 0x1e, 0xbc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb3, 0x37, 0xa4, 0x03, 0x67, 0x6f, 0x88, 0x0f, 0x52, 0x98, 0xa3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x37, 0x7e, 0xe0, 0xee, 0x0d, 0x93, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x35, 0x38, 0xb7, 0xf3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xdd, 0x1b, 0xc2, 0x81, 0xbb, 0x37, 0x2c, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xbd, 0x21, 0x1d, 0xb8, 0x7b, 0x43, 0x7c, 0x50, 0xae, 0xcb, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x6f, 0xc8, 0x07, 0xee, 0xde, 0x30, 0x38, 0x38, 0x9c, 0xf3, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xbe, 0x71, 0x07, 0x0f, 0xf6, 0x42, 0xde, 0xa0, 0xe8, 0xa0, 0x1d, 0xbc, 0xdc, 0xe0, 0xdc, 0xce, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xbe, 0x21, 0x1f, 0x38, 0x7c, 0xc3, 0xe0, 0xe0, 0x70, 0xce, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x6f, 0xdc, 0xc1, 0x83, 0xbd, 0x90, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x28, 0xf2, 0x65, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xf2, 0x0d, 0xc9, 0xc0, 0xe5, 0x1b, 0xe2, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x6f, 0x88, 0x06, 0x2e, 0xdf, 0x90, 0x1d, 0x94, 0x13, 0xd0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe5, 0x1b, 0xc2, 0x81, 0xcb, 0x37, 0xa4, 0x07, 0xe5, 0xba, 0x6c, 0x6b, 0x90, 0xf8, 0x1c, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x6f, 0x98, 0x0c, 0x5c, 0xbe, 0x61, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xf2, 0x0d, 0x9b, 0x81, 0xcb, 0x37, 0xcc, 0x0e, 0xaf, 0xf9, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x6f, 0xd8, 0x0d, 0x5c, 0xbe, 0x61, 0x78, 0x90, 0xc2, 0x1c, 0x55, 0xb3, 0x80, 0x1f, 0x86, 0xc7, 0x56, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x14, 0x20, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xc5, 0xb8, 0x81, 0xeb, 0x31, 0x7e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa9, 0x18, 0x92, 0x81, 0x53, 0x31, 0x94, 0x6c, 0xf8, 0x73, 0x69, 0x80, 0x07, 0xae, 0xac, 0x4c, 0x6e, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x53, 0x31, 0xe4, 0x07, 0x0f, 0x38, 0x48, 0xde, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x53, 0x31, 0x0c, 0x06, 0x4e, 0xc5, 0xb0, 0x39, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x53, 0x31, 0x8c, 0x06, 0x4e, 0xc5, 0x30, 0x3c, 0x68, 0xdb, 0x7a, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x15, 0xc3, 0x72, 0xe0, 0x54, 0x0c, 0x1d, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x07, 0x6e, 0x17, 0x57, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xad, 0x18, 0x92, 0x81, 0x5b, 0x31, 0xf4, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xbb, 0xf5, 0xf2, 0x12, 0xd6, 0x56, 0x36, 0xf7, 0x02, 0x63, 0x07, 0x03, 0xe2, 0xd7, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0x3c, 0xea, 0xdc, 0xd2, 0xf0, 0x5a, 0xc8, 0xea, 0xc6, 0xe8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x15, 0x43, 0x3e, 0x70, 0x2b, 0x86, 0xcd, 0xc1, 0xd3, 0xd3, 0x3d, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x63, 0x31, 0x24, 0x03, 0xc7, 0x62, 0x88, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x63, 0x6c, 0xec, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x58, 0x0c, 0xd1, 0xc1, 0x0b, 0x40, 0x92, 0x0f, 0xde, 0xa6, 0xeb, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x8b, 0x21, 0x19, 0xb8, 0x16, 0x43, 0xbc, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0x44, 0xeb, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x62, 0x88, 0x0e, 0x1e, 0x61, 0x92, 0x7c, 0xf0, 0x06, 0x5b, 0xc7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x5c, 0x0c, 0xc9, 0xc0, 0xb9, 0x18, 0xd2, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x5e, 0xa0, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x8b, 0x21, 0x3a, 0x78, 0x07, 0x4b, 0xf2, 0x86, 0x7f, 0xe7, 0x37, 0x68, 0x45, 0x29, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x5e, 0x0c, 0xc9, 0xc0, 0xbd, 0x18, 0x5a, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x5b, 0xe6, 0x81, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x5e, 0x0c, 0xf1, 0xc1, 0x3b, 0x65, 0x92, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x8b, 0x21, 0x1f, 0xb8, 0x17, 0x43, 0xc7, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xcb, 0xaf, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x8b, 0x61, 0x74, 0xf0, 0x48, 0x9c, 0xe4, 0x0d, 0x82, 0xcd, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x17, 0xc3, 0x6c, 0xe0, 0x5e, 0x0c, 0xe3, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x05, 0x3c, 0x61, 0x6c, 0x6c, 0x6f, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x2f, 0x86, 0xf5, 0xc0, 0xbd, 0x18, 0x2a, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0xf8, 0x64, 0x65, 0x6e, 0x79, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xbd, 0x18, 0x4a, 0x06, 0xee, 0xc5, 0x50, 0xba, 0xe1, 0xcf, 0xa5, 0x0d, 0x9e, 0x3a, 0x15, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf7, 0x62, 0xa8, 0x3a, 0x78, 0x92, 0x51, 0xf2, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x8b, 0xa1, 0x6b, 0xe0, 0x5e, 0x0c, 0x75, 0x07, 0x25, 0xe2, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x2f, 0x86, 0xbe, 0x81, 0x7b, 0x31, 0x74, 0x1e, 0xb4, 0x6d, 0x3d, 0x5e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc1, 0x18, 0x92, 0x81, 0x83, 0x31, 0x74, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x97, 0xfd, 0x03, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc1, 0x18, 0xe2, 0x83, 0x07, 0x48, 0x25, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x18, 0x43, 0x3e, 0x70, 0x30, 0x86, 0xd5, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb6, 0xb9, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xc6, 0xb0, 0x39, 0x78, 0xfd, 0x55, 0xf2, 0x06, 0x01, 0x74, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x63, 0x18, 0x1d, 0xbc, 0xfe, 0x2a, 0xf9, 0xe0, 0xb0, 0xc0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x8c, 0x61, 0x36, 0x70, 0x30, 0x86, 0x8a, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6d, 0x65, 0xed, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x8c, 0x61, 0x7a, 0xf0, 0x5a, 0xb0, 0xe4, 0x0d, 0x02, 0xe8, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xc6, 0xb0, 0x3d, 0x78, 0x2d, 0x58, 0xf2, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0xc0, 0x00, 0x35, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x18, 0x43, 0x32, 0x70, 0x35, 0x86, 0x6c, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x8a, 0x5f, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xc6, 0x90, 0x1c, 0xbc, 0x46, 0x2d, 0x79, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc9, 0x18, 0xd2, 0x81, 0x93, 0x31, 0xd4, 0x6f, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0xe9, 0xe2, 0xe2, 0x02, 0x62, 0xf6, 0x26, 0x07, 0xc2, 0x17, 0xd6, 0x56, 0x36, 0xb7, 0xe1, 0xcf, 0xa5, 0x0d, 0x1e, 0xa9, 0xc0, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x63, 0x98, 0x0c, 0x9c, 0x8c, 0xa1, 0x6b, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc9, 0x18, 0x36, 0x03, 0x27, 0x63, 0x18, 0x6e, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x91, 0x0a, 0x7c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc9, 0x18, 0x96, 0x03, 0x27, 0x63, 0xa8, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x31, 0x4c, 0x07, 0x4e, 0xc6, 0x30, 0x3f, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x31, 0xec, 0x07, 0x4e, 0xc6, 0xd0, 0xb4, 0xe1, 0xdf, 0xf9, 0x35, 0x78, 0xd9, 0xf0, 0x71, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x33, 0x86, 0x74, 0xe0, 0x66, 0x0c, 0xf5, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0xba, 0xb8, 0xb8, 0x80, 0x98, 0xbd, 0xc9, 0x81, 0xf0, 0xb5, 0x95, 0xcd, 0x85, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x05, 0xbc, 0xd3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x33, 0x86, 0xc9, 0xc0, 0xcd, 0x18, 0xba, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x8c, 0x61, 0x33, 0x70, 0x33, 0x86, 0xe1, 0xc1, 0xb3, 0x62, 0x78, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x31, 0x2c, 0x07, 0x6e, 0xc6, 0x50, 0xb5, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x63, 0x98, 0x0e, 0xdc, 0x8c, 0x61, 0x7e, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x63, 0xd8, 0x0f, 0xdc, 0x8c, 0xa1, 0xe9, 0xe0, 0x95, 0x82, 0xc9, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x8d, 0x21, 0x1d, 0x38, 0x1a, 0xc3, 0x8d, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x72, 0x71, 0x71, 0x01, 0x31, 0x7b, 0x93, 0x03, 0x29, 0x71, 0x0b, 0x1b, 0x5b, 0x2b, 0x23, 0x03, 0x19, 0x7b, 0x93, 0x5b, 0x9b, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0xa7, 0xab, 0xb2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x1a, 0xc3, 0x64, 0xe0, 0x68, 0x0c, 0x5d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xc6, 0xb0, 0x19, 0x38, 0x1a, 0xc3, 0x70, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xa7, 0xab, 0xb2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x68, 0x0c, 0xcb, 0x81, 0xa3, 0x31, 0x54, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd1, 0x18, 0xa6, 0x03, 0x47, 0x63, 0x98, 0x1f, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd1, 0x18, 0xf6, 0x03, 0x47, 0x63, 0x68, 0x3a, 0x78, 0xa5, 0x60, 0x72, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x8d, 0x21, 0x19, 0xb8, 0x1b, 0xc3, 0x97, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x34, 0x7b, 0x93, 0x03, 0x99, 0x2b, 0x93, 0xb3, 0x4b, 0x73, 0x3b, 0x03, 0x29, 0x99, 0x43, 0xab, 0xa3, 0x03, 0x91, 0x2b, 0x8b, 0xab, 0x2b, 0x9b, 0xa3, 0x9b, 0xdb, 0xf0, 0xe7, 0xd2, 0x00, 0x7e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, 0x63, 0x68, 0x61, 0x69, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x8d, 0x61, 0x31, 0x70, 0x37, 0x86, 0xd9, 0xc1, 0x23, 0xf4, 0x87, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc3, 0x31, 0x24, 0x03, 0x87, 0x63, 0x58, 0x6e, 0xf8, 0x73, 0x69, 0xc0, 0x87, 0x93, 0x4b, 0xb3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x70, 0x0c, 0xf1, 0xc1, 0xcb, 0x75, 0x93, 0x37, 0xfc, 0x3b, 0xbf, 0x00, 0x5e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2d, 0x6b, 0x65, 0x79, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x63, 0x48, 0x06, 0x2e, 0xc7, 0x70, 0x61, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xb0, 0xb0, 0x40, 0xda, 0xd2, 0xce, 0xe4, 0xc2, 0xe8, 0xca, 0xc8, 0x40, 0xe0, 0xca, 0xca, 0xe4, 0xe6, 0x36, 0xfc, 0xb9, 0x34, 0xc0, 0x33, 0x86, 0x56, 0xd7, 0x36, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe5, 0x18, 0xf2, 0x81, 0xcb, 0x31, 0x94, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe5, 0x18, 0x06, 0x03, 0x97, 0x63, 0xd8, 0x1c, 0x94, 0x88, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe5, 0x18, 0x46, 0x03, 0x97, 0x63, 0x18, 0x1e, 0xb4, 0x6d, 0x3d, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x8e, 0x61, 0x39, 0x70, 0x39, 0x86, 0x8e, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0x03, 0x0b, 0x8f, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x74, 0x0c, 0xc9, 0xc0, 0xe9, 0x18, 0x0e, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x3b, 0x16, 0x16, 0x48, 0xdd, 0x5c, 0x19, 0x48, 0x5b, 0xda, 0x99, 0x5c, 0x18, 0x5d, 0x19, 0x19, 0xc8, 0xd8, 0x9b, 0x5c, 0x19, 0x88, 0x58, 0x1e, 0x08, 0x59, 0x99, 0x59, 0x58, 0x1d, 0x1b, 0xdd, 0x86, 0x3f, 0x97, 0x36, 0xcc, 0xd0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x8e, 0x21, 0x1e, 0x38, 0x1d, 0x43, 0xc9, 0x06, 0x01, 0x74, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x63, 0xc8, 0x0f, 0x1e, 0xd5, 0x9d, 0xbc, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x74, 0x0c, 0x83, 0x81, 0xd3, 0x31, 0xcc, 0x37, 0x08, 0x36, 0xd3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x74, 0x0c, 0x93, 0x81, 0xd3, 0x31, 0xec, 0x0e, 0x9e, 0x58, 0x5c, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x8e, 0x61, 0x38, 0x70, 0x3a, 0x86, 0xf5, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x02, 0xbf, 0xad, 0x6c, 0x2e, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xc7, 0xb0, 0x3f, 0x78, 0x54, 0x77, 0xf2, 0xc1, 0xe3, 0xfa, 0x61, 0x5a, 0x01, 0x78, 0x81, 0x0b, 0x93, 0xa3, 0x4b, 0x0b, 0x63, 0x6b, 0x91, 0x1b, 0xb3, 0x6b, 0x69, 0x2b, 0x9b, 0x9b, 0x0b, 0x3b, 0x2b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0xa9, 0x3d, 0xb9, 0x01, 0xf0, 0xae, 0xad, 0x6c, 0x6e, 0x2e, 0xec, 0xac, 0x0c, 0xc4, 0xec, 0x4d, 0x0e, 0xe4, 0x0e, 0x2d, 0x6d, 0x0c, 0x0d, 0xe4, 0xae, 0xec, 0xc4, 0xae, 0x0c, 0x44, 0xae, 0x6c, 0xac, 0x2c, 0xcd, 0xae, 0x8c, 0x0c, 0x64, 0xee, 0xad, 0xad, 0x0c, 0xc4, 0x4c, 0x2e, 0xec, 0xac, 0xad, 0xcc, 0x8d, 0x6e, 0x5e, 0x09, 0xc0, 0x5f, 0xb7, 0xba, 0xb6, 0x16, 0x33, 0xb9, 0xb0, 0xb3, 0xb6, 0x32, 0x37, 0xba, 0x39, 0x1d, 0x10, 0xba, 0x37, 0xba, 0x30, 0x36, 0x10, 0xb7, 0xba, 0x36, 0xb1, 0x32, 0x39, 0x90, 0x37, 0x33, 0x10, 0x33, 0xb9, 0xb0, 0xb3, 0xb6, 0x32, 0x37, 0xba, 0x39, 0x90, 0x34, 0x37, 0x10, 0x3a, 0xb4, 0xb4, 0x39, 0x90, 0xb6, 0xb2, 0xb9, 0xb9, 0xb0, 0xb3, 0x72, 0x09, 0xc0, 0x57, 0xb7, 0xba, 0xb6, 0x16, 0xb9, 0xb2, 0xb1, 0xb2, 0x34, 0xbb, 0x32, 0x32, 0x1d, 0x10, 0xb4, 0xb7, 0x3b, 0x90, 0xb6, 0x30, 0xb7, 0x3c, 0x10, 0x33, 0xb9, 0xb0, 0xb3, 0xb6, 0x32, 0x37, 0xba, 0x39, 0x90, 0xbb, 0xb2, 0x13, 0xbb, 0x32, 0x10, 0xb9, 0xb2, 0xb1, 0xb2, 0x34, 0xbb, 0x32, 0x32, 0x90, 0xb9, 0x37, 0x10, 0xb3, 0x30, 0x79, 0x09, 0x80, 0x1f, 0xcc, 0xe4, 0xc2, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0xe6, 0x74, 0x40, 0xcc, 0xe4, 0xc2, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0xe6, 0x40, 0xee, 0xca, 0x4e, 0xec, 0xca, 0x40, 0xe4, 0xca, 0xc6, 0xca, 0xd2, 0xec, 0xca, 0xc8, 0x58, 0x40, 0xca, 0xec, 0xca, 0xdc, 0xe8, 0xea, 0xc2, 0xd8, 0xd8, 0xf2, 0x40, 0xe0, 0xe4, 0xde, 0xc8, 0xea, 0xc6, 0xd2, 0xdc, 0xce, 0x40, 0xc2, 0x40, 0x48, 0xda, 0xca, 0xe6, 0xe6, 0xc2, 0xce, 0xca, 0xda, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x52, 0x7b, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x5c, 0x71, 0x03, 0x47, 0x57, 0xfc, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8b, 0x2b, 0x24, 0x03, 0x17, 0x57, 0xe8, 0xd8, 0xf0, 0xe7, 0xd2, 0x00, 0x9e, 0x6e, 0x75, 0x6d, 0x2d, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x5c, 0x61, 0x77, 0xf0, 0xa2, 0x0a, 0xe5, 0x0d, 0xff, 0xce, 0x2f, 0x80, 0x9f, 0x99, 0x5c, 0xd8, 0x59, 0x5b, 0x99, 0x1b, 0x5d, 0x8b, 0x5b, 0x5d, 0x5b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc9, 0x15, 0x92, 0x81, 0x93, 0x2b, 0x54, 0x6c, 0xf8, 0x73, 0x69, 0x00, 0x3f, 0xb7, 0xba, 0xb6, 0x16, 0xb9, 0xb2, 0xb1, 0xb2, 0x34, 0xbb, 0x32, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xae, 0x30, 0x3b, 0x78, 0x98, 0x87, 0xf2, 0xc1, 0xc3, 0x34, 0x94, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x2b, 0x24, 0x03, 0x37, 0x57, 0xa8, 0xdb, 0xf0, 0xe7, 0xd2, 0x00, 0x1e, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x5c, 0x61, 0x73, 0xf0, 0xd2, 0x12, 0xe5, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xb9, 0xc2, 0x68, 0xe0, 0xe6, 0x0a, 0xbb, 0x83, 0x12, 0xb1, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xb9, 0xc2, 0x70, 0xe0, 0xe6, 0x0a, 0x25, 0x07, 0x0f, 0xd3, 0x50, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xae, 0xd0, 0x32, 0x70, 0x73, 0x85, 0xb6, 0x0d, 0xff, 0xce, 0x6f, 0xd0, 0x2a, 0x38, 0x76, 0x35, 0x0b, 0xf8, 0x61, 0x63, 0x72, 0xf5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xea, 0x90, 0x0e, 0x94, 0xf0, 0xf8, 0x0d, 0x1f, 0xb5, 0x6f, 0x10, 0x40, 0x67, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xaa, 0xc3, 0xe2, 0xe0, 0x2d, 0x36, 0xca, 0x1b, 0xa4, 0x5e, 0x14, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xad, 0x8e, 0x3b, 0x78, 0x8b, 0x8d, 0xf2, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0xc0, 0x97, 0xe1, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xb7, 0x43, 0x3a, 0x50, 0xbc, 0x43, 0xb2, 0x41, 0xea, 0x45, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xee, 0xf8, 0x83, 0x57, 0xfd, 0x28, 0x6f, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x6b, 0x90, 0xee, 0xb9, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x3b, 0x8c, 0x06, 0x6a, 0x77, 0x38, 0xb2, 0xe1, 0x79, 0x92, 0x0d, 0x9a, 0x11, 0x21, 0xdf, 0xa0, 0x10, 0x4c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xda, 0x1d, 0x56, 0x03, 0xb5, 0x3b, 0x2c, 0x0f, 0x1e, 0x0b, 0xef, 0xb9, 0x02, 0x1e, 0x5c, 0x9d, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa5, 0x3b, 0x8c, 0x06, 0x4a, 0x77, 0xf8, 0xb1, 0xe1, 0x79, 0x92, 0x0d, 0x9a, 0x60, 0x1d, 0xdf, 0xa0, 0x10, 0x4c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd2, 0x1d, 0x56, 0x03, 0xa5, 0x3b, 0x2c, 0x0f, 0x1e, 0x70, 0x93, 0x39, 0x6b, 0xd0, 0xc6, 0x0c, 0xf8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xee, 0x30, 0x1a, 0xa8, 0xdc, 0xe1, 0xcd, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xfe, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x1b, 0x14, 0x82, 0xa9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xb9, 0xc3, 0x6a, 0xa0, 0x72, 0x87, 0xe5, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0xc0, 0xab, 0xb3, 0x3b, 0x56, 0x83, 0xd6, 0xee, 0xb5, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x70, 0x87, 0xd1, 0x40, 0xe1, 0x0e, 0x47, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x32, 0x4b, 0x73, 0x3b, 0x2b, 0x93, 0x83, 0x93, 0x4b, 0x73, 0xa3, 0xdb, 0xa0, 0x10, 0x4c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc2, 0x1d, 0x56, 0x03, 0x85, 0x3b, 0x2c, 0x0f, 0xd2, 0xfd, 0x65, 0x0f, 0xa7, 0x58, 0x1d, 0x4e, 0xb1, 0x15, 0x78, 0xb7, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x77, 0x48, 0x07, 0x2a, 0x78, 0x48, 0x36, 0x48, 0xbd, 0x28, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf2, 0x1d, 0x7f, 0xf0, 0x84, 0x33, 0xe5, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0xd6, 0x41, 0xcd, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x01, 0x0f, 0xa3, 0x81, 0x02, 0x1e, 0x6e, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x61, 0x26, 0xf7, 0xd6, 0x06, 0x02, 0x17, 0x36, 0x37, 0xb7, 0xc1, 0xe2, 0xc2, 0xa4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x80, 0x87, 0xdd, 0x40, 0x01, 0x0f, 0xeb, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x01, 0x0f, 0xcb, 0x83, 0x77, 0xc9, 0x29, 0x1f, 0x3c, 0xe0, 0x26, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0a, 0x78, 0x98, 0x0f, 0x14, 0xf0, 0x50, 0xb3, 0x41, 0xea, 0x45, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xf0, 0xd0, 0x30, 0x50, 0xc0, 0x43, 0xcb, 0x86, 0x4b, 0x6a, 0x8d, 0xc7, 0x03, 0xef, 0x56, 0xd7, 0x0a, 0x78, 0x6e, 0x6f, 0xec, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xef, 0x30, 0x1a, 0xa8, 0xdf, 0xe1, 0xc6, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x1e, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x72, 0x69, 0x6e, 0x67, 0x1b, 0x2c, 0x2e, 0x4c, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xea, 0x77, 0xd8, 0x0d, 0xd4, 0xef, 0xb0, 0xde, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xef, 0xb0, 0x3c, 0x78, 0xfb, 0xa0, 0xf2, 0xc1, 0x63, 0xe1, 0x3d, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x7e, 0x87, 0xf9, 0x40, 0xfd, 0x0e, 0x35, 0x1b, 0xa4, 0x5e, 0x14, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfd, 0x0e, 0x0d, 0x03, 0xf5, 0x3b, 0xb4, 0x1c, 0xbc, 0x6b, 0x4f, 0xf9, 0x70, 0x8a, 0xad, 0xa1, 0x46, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf9, 0x0e, 0xa3, 0x81, 0xf2, 0x1d, 0xee, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x83, 0x99, 0xdc, 0x5b, 0x1b, 0xc8, 0xd6, 0x5d, 0x1a, 0x19, 0x1d, 0x1a, 0xc8, 0x5c, 0x59, 0x19, 0x59, 0xd7, 0x06, 0x8b, 0x0b, 0x93, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf2, 0x1d, 0x76, 0x03, 0xe5, 0x3b, 0x14, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xdf, 0x61, 0x38, 0x50, 0xbe, 0xc3, 0x76, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xbe, 0xc3, 0xf4, 0xe0, 0xb5, 0x98, 0xca, 0x87, 0x1f, 0x6a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf2, 0x1d, 0xc6, 0x03, 0xe5, 0x3b, 0xec, 0x37, 0xfc, 0xb9, 0x34, 0xb8, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe5, 0x3b, 0xcc, 0x0f, 0x5e, 0xe4, 0xa9, 0x7c, 0xf8, 0xa1, 0xa6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xdf, 0xa1, 0x61, 0xa0, 0x7c, 0x87, 0xa6, 0x0d, 0x52, 0x2f, 0x8a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x7c, 0x87, 0x92, 0x81, 0xf2, 0x1d, 0x8a, 0x0e, 0xde, 0xb5, 0xa7, 0x7c, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x0a, 0x3c, 0x59, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x3b, 0xa4, 0x03, 0x45, 0x3b, 0xfc, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x8f, 0xb9, 0xbc, 0xb6, 0xb6, 0x32, 0x3a, 0xb9, 0xb4, 0x31, 0x10, 0xb2, 0x32, 0x16, 0x90, 0xb9, 0x37, 0x33, 0xba, 0x0d, 0x16, 0x17, 0x26, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x3b, 0x0c, 0x06, 0x8a, 0x76, 0x58, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xda, 0x61, 0x31, 0x50, 0xb4, 0xc3, 0x68, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xb4, 0xc3, 0xe6, 0xe0, 0x75, 0xb3, 0xca, 0x87, 0x1f, 0x6a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa2, 0x1d, 0x56, 0x03, 0x45, 0x3b, 0x0c, 0x37, 0xfc, 0xb9, 0x34, 0xb8, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x3b, 0xec, 0x0e, 0x5e, 0x90, 0xab, 0x7c, 0xf8, 0xa1, 0xa6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xda, 0x61, 0x3a, 0x50, 0xb4, 0x43, 0xc7, 0x06, 0x85, 0x60, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xed, 0xb0, 0x3d, 0x78, 0xa5, 0xaf, 0xf2, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xed, 0x30, 0x1e, 0x28, 0xda, 0xa1, 0xe0, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8a, 0x76, 0x68, 0x18, 0x28, 0xda, 0xa1, 0xe2, 0xf0, 0x43, 0x4d, 0xb3, 0xc0, 0x97, 0xb9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xb6, 0x43, 0x3a, 0x50, 0xb6, 0xc3, 0x93, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xe6, 0xf2, 0xda, 0xda, 0xca, 0xe8, 0xe4, 0xd2, 0xc6, 0x40, 0xca, 0xdc, 0x36, 0x58, 0x5c, 0x98, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xed, 0x30, 0x18, 0x28, 0xdb, 0x61, 0xb9, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x6c, 0x87, 0xc5, 0x40, 0xd9, 0x0e, 0xa3, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd9, 0x0e, 0x9b, 0x83, 0x77, 0x48, 0x2b, 0x1f, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xca, 0x76, 0x58, 0x0d, 0x94, 0xed, 0x30, 0xdc, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xed, 0xb0, 0x3b, 0x78, 0xeb, 0xb5, 0xf2, 0xe1, 0x87, 0x9a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x6c, 0x87, 0xe9, 0x40, 0xd9, 0x0e, 0xe3, 0x0d, 0x0a, 0xc1, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xdb, 0x61, 0x7b, 0xf0, 0x9e, 0x6e, 0xe5, 0xc3, 0x0f, 0x35, 0x87, 0x53, 0xac, 0x05, 0x3e, 0x6c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x62, 0x1d, 0xd2, 0x81, 0x9a, 0x1d, 0x92, 0x0d, 0x52, 0x2f, 0x8a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x5a, 0xc7, 0x1f, 0x3c, 0x6c, 0x5c, 0x79, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0xc0, 0x9f, 0xab, 0x93, 0x2b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x60, 0x87, 0xd5, 0x40, 0xc1, 0x0e, 0x8f, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x27, 0xac, 0x8e, 0x0e, 0xad, 0xcc, 0x8d, 0x2e, 0x6d, 0x2c, 0x8c, 0xae, 0x0c, 0xc4, 0x4c, 0xee, 0xad, 0x0d, 0xa4, 0x6e, 0x6e, 0x83, 0xc5, 0x85, 0x49, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc1, 0x0e, 0xc3, 0x81, 0x82, 0x1d, 0xb6, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x82, 0x1d, 0xa6, 0x07, 0x0f, 0x82, 0x57, 0x3e, 0xfc, 0x50, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x05, 0x3b, 0x8c, 0x07, 0x0a, 0x76, 0x68, 0xd9, 0xa0, 0x10, 0x4c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x82, 0x1d, 0xd6, 0x07, 0x4f, 0xae, 0x57, 0xde, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x82, 0x1d, 0xe6, 0x03, 0x05, 0x3b, 0x54, 0x1c, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc1, 0x0e, 0x1d, 0x03, 0x05, 0x3b, 0x94, 0x1c, 0x7e, 0xa8, 0x69, 0x05, 0xfc, 0xb9, 0xb2, 0x30, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x75, 0x58, 0x0d, 0x54, 0xeb, 0xf0, 0x64, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xbf, 0x32, 0xb7, 0x31, 0xb9, 0x3c, 0x38, 0x3a, 0x10, 0xba, 0x37, 0x90, 0xb0, 0x0d, 0x16, 0x17, 0x26, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd5, 0x3a, 0x0c, 0x07, 0xaa, 0x75, 0x28, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xad, 0xc3, 0x72, 0xa0, 0x5a, 0x87, 0xfd, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x5a, 0x87, 0xed, 0xc1, 0x33, 0x13, 0x96, 0x0f, 0x1e, 0x70, 0x93, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xeb, 0x50, 0x30, 0x50, 0xad, 0x43, 0xc7, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x5a, 0x87, 0x8a, 0x83, 0x57, 0x3d, 0x2c, 0x1f, 0x7e, 0xa8, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x75, 0x68, 0x19, 0xa8, 0xd6, 0xa1, 0x67, 0x83, 0x42, 0x30, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x75, 0xa8, 0x39, 0x78, 0x3c, 0xc5, 0xf2, 0xe1, 0x87, 0x9a, 0xd5, 0xe0, 0x55, 0x69, 0x8a, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xae, 0xc3, 0x6a, 0xa0, 0x5c, 0x87, 0x2b, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0x8e, 0x95, 0xc9, 0xd1, 0xa5, 0x99, 0xe5, 0x81, 0x84, 0xcd, 0x81, 0xd4, 0xcd, 0x6d, 0xb0, 0xb8, 0x30, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xd7, 0x61, 0x38, 0x50, 0xae, 0xc3, 0x76, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xae, 0xc3, 0xf4, 0xe0, 0x95, 0x20, 0xcb, 0x87, 0x1f, 0x6a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x5c, 0x87, 0xf1, 0x40, 0xb9, 0x0e, 0xf3, 0x0d, 0x0a, 0xc1, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xd7, 0x61, 0x7d, 0xf0, 0x0e, 0x93, 0xe5, 0xc3, 0x0f, 0x35, 0xb3, 0x80, 0x4f, 0x57, 0x16, 0x26, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc9, 0x0e, 0xab, 0x81, 0x92, 0x1d, 0xae, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x19, 0x36, 0x36, 0x56, 0x06, 0x47, 0x07, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0x12, 0xb6, 0xc1, 0xe2, 0xc2, 0xa4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x64, 0x87, 0xe1, 0x40, 0xc9, 0x0e, 0x25, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4a, 0x76, 0x58, 0x0e, 0x94, 0xec, 0xb0, 0xdf, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xec, 0xb0, 0x3d, 0x78, 0x23, 0xcd, 0xf2, 0xc1, 0x03, 0x6e, 0x32, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x92, 0x1d, 0x0a, 0x06, 0x4a, 0x76, 0xe8, 0xd8, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xec, 0x50, 0x71, 0xf0, 0x24, 0x9d, 0xe5, 0xc3, 0x0f, 0x35, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc9, 0x0e, 0x2d, 0x03, 0x25, 0x3b, 0xd4, 0x6d, 0x50, 0x08, 0xa6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc9, 0x0e, 0x35, 0x07, 0x2f, 0xff, 0x59, 0xde, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x92, 0x1d, 0x7a, 0x06, 0x4a, 0x76, 0xe8, 0x3a, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x92, 0x1d, 0xca, 0x06, 0x4a, 0x76, 0x68, 0x3b, 0xfc, 0x50, 0xd3, 0x0a, 0xf8, 0x73, 0x69, 0x67, 0xe8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xeb, 0xb0, 0x1a, 0xa8, 0xd7, 0xe1, 0xcf, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x7c, 0x8c, 0x95, 0xc9, 0xd1, 0xa5, 0x99, 0xa5, 0x8d, 0x85, 0xd1, 0xa5, 0xbd, 0xb9, 0x81, 0xbc, 0xb9, 0xb1, 0xe5, 0x6d, 0xb0, 0xb8, 0x30, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xd7, 0x61, 0x38, 0x50, 0xaf, 0xc3, 0x76, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xaf, 0xc3, 0xf4, 0xe0, 0xd5, 0x51, 0xcb, 0x87, 0x1f, 0x6a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x5e, 0x87, 0xf1, 0x40, 0xbd, 0x0e, 0xf3, 0x0d, 0x0a, 0xc1, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xd7, 0x61, 0x7d, 0xf0, 0xae, 0xab, 0xe5, 0xc3, 0x0f, 0x35, 0x87, 0x53, 0xac, 0x16, 0xf0, 0xe7, 0xc2, 0xcc, 0xca, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xd8, 0x61, 0x35, 0x50, 0xb1, 0xc3, 0xa1, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x09, 0xab, 0xa3, 0x43, 0x2b, 0x73, 0xa3, 0x4b, 0x1b, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0x03, 0x79, 0x73, 0x63, 0xcb, 0xdb, 0x60, 0x71, 0x61, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xb1, 0xc3, 0x70, 0xa0, 0x62, 0x87, 0x86, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x15, 0x3b, 0x2c, 0x07, 0x2a, 0x76, 0x18, 0x6f, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x76, 0xd8, 0x1e, 0x3c, 0xdd, 0x6c, 0xf9, 0xf0, 0x43, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xb1, 0xc3, 0x7a, 0xa0, 0x62, 0x87, 0x82, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc5, 0x0e, 0xfb, 0x83, 0xe7, 0xb1, 0x2d, 0x1f, 0x7e, 0xa8, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x76, 0xa8, 0x18, 0xa8, 0xd8, 0xa1, 0x64, 0x83, 0x42, 0x30, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x76, 0xe8, 0x38, 0x78, 0x84, 0xdc, 0xf2, 0xe1, 0x83, 0xd5, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0xe0, 0xc9, 0xf2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xda, 0x21, 0x1d, 0xa8, 0xda, 0xe1, 0xcf, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x7c, 0xcc, 0xe5, 0xb5, 0xb5, 0x95, 0xd1, 0xc9, 0xa5, 0x8d, 0x81, 0x90, 0x95, 0xb1, 0x80, 0xa0, 0x85, 0xc9, 0x91, 0x6d, 0xb0, 0xb8, 0x30, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xda, 0x61, 0x30, 0x50, 0xb5, 0xc3, 0x72, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd5, 0x0e, 0x8b, 0x81, 0xaa, 0x1d, 0x46, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xaa, 0x1d, 0x36, 0x07, 0x0f, 0x0c, 0x5c, 0x3e, 0xfc, 0x50, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xed, 0xb0, 0x1a, 0xa8, 0xda, 0x61, 0xb8, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xda, 0x61, 0x77, 0xf0, 0x88, 0xc3, 0xe5, 0xc3, 0x0f, 0x35, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd5, 0x0e, 0xd3, 0x81, 0xaa, 0x1d, 0xc6, 0x1b, 0x14, 0x82, 0xa9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xb5, 0xc3, 0xf6, 0xe0, 0xa1, 0x8c, 0xcb, 0x87, 0x1f, 0x6a, 0x0e, 0xa7, 0x58, 0x87, 0x53, 0x6c, 0x35, 0x78, 0x29, 0x3f, 0xf1, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x97, 0xf2, 0x13, 0x37, 0x80, 0xbf, 0x5c, 0xd9, 0x1c, 0xdc, 0x9b, 0xdb, 0x5c, 0x19, 0x48, 0x5b, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0xd9, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x4b, 0xf9, 0x89, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x60, 0x89, 0x1b, 0x38, 0x58, 0x42, 0xdd, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x2c, 0xb1, 0x03, 0x07, 0x4b, 0xd8, 0x6c, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x6a, 0x7f, 0x97, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x60, 0x09, 0xd9, 0xc1, 0x4b, 0x37, 0x97, 0x37, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x0e, 0x5e, 0x1e, 0xf6, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x4b, 0xc8, 0x0f, 0x5e, 0xba, 0xb9, 0xbc, 0xe1, 0x6d, 0x9d, 0x83, 0x77, 0x60, 0xd8, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x4b, 0x18, 0x0d, 0x1c, 0x2c, 0xa1, 0x6d, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0x96, 0xb0, 0x1a, 0x38, 0x58, 0xc2, 0xf2, 0xa0, 0xf4, 0xa6, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0x96, 0x30, 0x1d, 0x38, 0x58, 0xc2, 0xfc, 0xe0, 0x8c, 0x84, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x2c, 0x61, 0x3f, 0x70, 0xb0, 0x84, 0xb2, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x58, 0x42, 0xc1, 0xc0, 0xc1, 0x12, 0x4a, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x60, 0x09, 0x2d, 0x03, 0x07, 0x4b, 0xe8, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x25, 0xd4, 0x0c, 0x1c, 0x2c, 0xa1, 0xea, 0xe0, 0x75, 0x0c, 0x1f, 0x55, 0x87, 0x53, 0x6c, 0x0d, 0xde, 0x06, 0x3b, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0x6d, 0xb0, 0xc3, 0x0d, 0x80, 0x57, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x7c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2d, 0x73, 0x69, 0x6e, 0x6b, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0xf3, 0x4a, 0x00, 0x1e, 0xb3, 0x85, 0xcd, 0xd1, 0xb5, 0x84, 0x8d, 0xad, 0x95, 0x91, 0xe9, 0x80, 0xa0, 0xa5, 0x9d, 0xa1, 0x95, 0xcd, 0xd1, 0x81, 0x90, 0xb4, 0x95, 0xcd, 0xcd, 0x85, 0x9d, 0x95, 0xb5, 0xb8, 0xd5, 0xb5, 0x81, 0xdc, 0x95, 0x9d, 0xd8, 0x95, 0x81, 0x98, 0xd5, 0xb1, 0xb1, 0xe5, 0x81, 0x84, 0x8d, 0xad, 0xb9, 0xbd, 0xdd, 0xb1, 0x95, 0x91, 0x9d, 0x95, 0x91, 0x4b, 0x00, 0x9e, 0xb3, 0x85, 0xcd, 0xd1, 0xb5, 0xa0, 0x95, 0x85, 0xc9, 0x91, 0xe9, 0x80, 0xa0, 0xa5, 0x9d, 0xa1, 0x95, 0xcd, 0xd1, 0x81, 0x90, 0xb4, 0x95, 0xcd, 0xcd, 0x85, 0x9d, 0x95, 0xb5, 0xb8, 0xd5, 0xb5, 0x81, 0xdc, 0x95, 0x9d, 0xd8, 0x95, 0x81, 0xa0, 0x95, 0x85, 0xc9, 0x91, 0x81, 0x84, 0xb1, 0xb1, 0x81, 0x98, 0xc9, 0x85, 0x9d, 0xb5, 0x95, 0xb9, 0xd1, 0xcd, 0x81, 0xbc, 0xb9, 0x4b, 0x00, 0xde, 0xc2, 0x95, 0xb9, 0x91, 0xa5, 0xb9, 0x9d, 0xb5, 0xd8, 0x85, 0xb9, 0x95, 0xb5, 0x84, 0x8d, 0xad, 0xe9, 0x80, 0xa0, 0x95, 0x85, 0xc9, 0x91, 0x81, 0x88, 0xd5, 0xd1, 0x81, 0xb8, 0xbd, 0xd1, 0x81, 0xc0, 0xc9, 0xbd, 0x8d, 0x95, 0xcd, 0xcd, 0x95, 0x91, 0x81, 0x88, 0xe5, 0x81, 0xb0, 0xbd, 0x8d, 0x85, 0xb1, 0x81, 0xd8, 0x85, 0xb9, 0x95, 0x4b, 0x00, 0x3e, 0xb1, 0xa5, 0xd9, 0x95, 0xb5, 0xb4, 0x95, 0xcd, 0xcd, 0x85, 0x9d, 0x95, 0xcd, 0xe9, 0x80, 0xc0, 0x85, 0xc9, 0xd1, 0xa5, 0x85, 0xb1, 0xb1, 0xe5, 0x81, 0xc8, 0x95, 0x8d, 0x95, 0xa5, 0xd9, 0x95, 0x91, 0x81, 0xb4, 0x95, 0xcd, 0xcd, 0x85, 0x9d, 0x95, 0xcd, 0xb5, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x36, 0xd8, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xb1, 0xe2, 0x06, 0x2e, 0xad, 0xf8, 0x0d, 0x0e, 0x10, 0xa2, 0x1b, 0xbc, 0x0d, 0x76, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xac, 0xb8, 0x83, 0x27, 0x81, 0x2f, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xb2, 0x42, 0x32, 0x70, 0x64, 0x85, 0xfd, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x40, 0xb1, 0xe3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x59, 0x61, 0x74, 0xf0, 0x1a, 0xf3, 0xe5, 0x83, 0xa7, 0x2c, 0x0f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x56, 0x48, 0x06, 0xae, 0xac, 0xb0, 0xdf, 0xf0, 0xe7, 0xd2, 0x00, 0x3e, 0x6c, 0x61, 0x73, 0x74, 0x2d, 0x68, 0x65, 0x61, 0x72, 0xe4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x59, 0x61, 0x74, 0xf0, 0x24, 0xf6, 0xe5, 0x83, 0xa7, 0x2c, 0x0f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x56, 0x48, 0x06, 0xce, 0xac, 0x50, 0xbc, 0xe1, 0xcf, 0xa5, 0x01, 0xfc, 0xe1, 0xca, 0xdc, 0xc8, 0xd2, 0xdc, 0xce, 0x5a, 0xec, 0xc2, 0xdc, 0xca, 0x5a, 0xc2, 0xc6, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xb3, 0xc2, 0xf4, 0xe0, 0x49, 0xf3, 0xcb, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x66, 0x85, 0xed, 0xc0, 0x99, 0x15, 0xe6, 0x07, 0x0f, 0x3f, 0x60, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xac, 0xb0, 0x1f, 0x38, 0xb3, 0x42, 0xef, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x33, 0x2b, 0x14, 0x0c, 0x9c, 0x59, 0xa1, 0x6c, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0xe9, 0x78, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xac, 0xd0, 0x70, 0xf0, 0x46, 0x00, 0xe6, 0x83, 0xa7, 0x2c, 0x0f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x56, 0x68, 0x1b, 0x38, 0xb3, 0x42, 0xed, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xbd, 0xd6, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x59, 0xa1, 0xf5, 0xe0, 0xb1, 0x06, 0xcc, 0x07, 0x61, 0x3a, 0x56, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x9d, 0x15, 0x92, 0x81, 0x3b, 0x2b, 0x94, 0x6f, 0xf8, 0x73, 0x69, 0x00, 0x4f, 0xb6, 0x34, 0xbb, 0xb2, 0x96, 0xb6, 0xb2, 0xb9, 0xb9, 0xb0, 0xb3, 0xb2, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xac, 0xb0, 0x3b, 0x78, 0x30, 0x03, 0xf3, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x59, 0x61, 0x38, 0x70, 0x67, 0x85, 0xed, 0x41, 0x89, 0x58, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x59, 0x61, 0x3c, 0x70, 0x67, 0x85, 0x9e, 0x83, 0xa7, 0x2c, 0x0f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x56, 0x28, 0x1a, 0xb8, 0xb3, 0x42, 0xf7, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x49, 0xed, 0xc9, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x68, 0x85, 0x64, 0xe0, 0xd0, 0x0a, 0xf3, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xf4, 0x61, 0xf7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x5a, 0x21, 0x3d, 0x78, 0x46, 0x07, 0xf3, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x5a, 0x21, 0x1e, 0x38, 0xb4, 0xc2, 0xe2, 0xa0, 0x44, 0x7c, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xad, 0x30, 0x19, 0x38, 0xb4, 0xc2, 0xfa, 0xe0, 0x29, 0xcb, 0xc3, 0x75, 0x38, 0xc5, 0x5a, 0x83, 0x27, 0x21, 0x21, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x3c, 0x09, 0x09, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xa9, 0xb8, 0x81, 0x83, 0x2a, 0x7e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x39, 0x15, 0x92, 0x81, 0x73, 0x2a, 0xac, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x9b, 0x8e, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x9c, 0x0a, 0xd1, 0xc1, 0x43, 0x5b, 0x98, 0x0f, 0x9e, 0xb2, 0x3c, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x53, 0x21, 0x19, 0xb8, 0xa7, 0xc2, 0x6c, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x5b, 0x43, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xa9, 0x10, 0x1d, 0x3c, 0x76, 0x86, 0xf9, 0xe0, 0x61, 0x1a, 0xca, 0xad, 0x00, 0x7e, 0x6e, 0x61, 0x6d, 0x65, 0x2d, 0x74, 0x6f, 0x2d, 0x62, 0x65, 0x61, 0xed, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x11, 0xe2, 0x06, 0x72, 0x09, 0xf1, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x08, 0x21, 0x19, 0x48, 0x22, 0x84, 0xc9, 0x86, 0x7f, 0xe7, 0x37, 0x68, 0xf7, 0x80, 0xf3, 0xe0, 0xa9, 0x3b, 0xc5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x45, 0x88, 0x3b, 0x78, 0xe2, 0x0e, 0xf3, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x42, 0x48, 0x06, 0xb2, 0x08, 0x21, 0x3d, 0x78, 0x4a, 0x70, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x11, 0xe2, 0x0e, 0x9e, 0xb8, 0xc3, 0xbc, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8d, 0x10, 0x92, 0x81, 0x34, 0x42, 0x98, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x23, 0x84, 0x68, 0x20, 0x8d, 0x10, 0xd2, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x68, 0x65, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1a, 0x21, 0xc4, 0x03, 0x69, 0x84, 0x30, 0x38, 0x48, 0x4a, 0x0b, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x08, 0x61, 0x31, 0x90, 0x46, 0x08, 0xab, 0x0d, 0x12, 0xe1, 0x82, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8d, 0x10, 0x46, 0x07, 0xaf, 0x97, 0x62, 0x3e, 0x3c, 0x26, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x47, 0x08, 0xc9, 0x40, 0x1e, 0x21, 0xc4, 0x1b, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0xc1, 0x0b, 0x1c, 0x82, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x42, 0x18, 0x0c, 0xe4, 0x11, 0xc2, 0x7c, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1e, 0x21, 0x2c, 0x06, 0xf2, 0x08, 0x61, 0x75, 0xb0, 0x24, 0x37, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x23, 0x84, 0xd9, 0x40, 0x1e, 0x21, 0x2c, 0x0f, 0x12, 0xe1, 0x82, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x42, 0x98, 0x0e, 0xe4, 0x11, 0xc2, 0x7a, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0x5c, 0x9a, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x21, 0x24, 0x03, 0x89, 0x84, 0x10, 0x6f, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x07, 0x0f, 0xf3, 0xbf, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x09, 0x61, 0x30, 0x90, 0x48, 0x08, 0xf3, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x84, 0xb0, 0x18, 0x48, 0x24, 0x84, 0xd5, 0xc1, 0x92, 0xdc, 0xf4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x91, 0x10, 0x66, 0x03, 0x89, 0x84, 0xb0, 0x3c, 0x48, 0x84, 0x0b, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x09, 0x61, 0x3a, 0x90, 0x48, 0x08, 0xeb, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x62, 0x6f, 0x71, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x84, 0x50, 0x30, 0x90, 0x48, 0x08, 0x2d, 0x1b, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0x5d, 0xe0, 0x97, 0xd1, 0x8d, 0xa1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x26, 0x21, 0x24, 0x03, 0xa9, 0x84, 0xd0, 0xb4, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x4a, 0xa6, 0xdc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x93, 0x10, 0x26, 0x03, 0x99, 0x84, 0xb0, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x49, 0x08, 0x9b, 0x81, 0x4c, 0x42, 0x18, 0x6e, 0x78, 0xe3, 0xee, 0xe0, 0x5d, 0xc2, 0x7e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x26, 0x21, 0x2c, 0x07, 0x32, 0x09, 0x61, 0x7c, 0xd0, 0x76, 0x5f, 0x66, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x4a, 0x08, 0xc9, 0xc1, 0x4b, 0xf6, 0x98, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x12, 0x42, 0x34, 0x90, 0x4a, 0x08, 0x8b, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xf8, 0x7c, 0xd4, 0xc1, 0x4a, 0xa6, 0xdc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x95, 0x10, 0x26, 0x03, 0xa9, 0x84, 0x50, 0xb2, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x95, 0x10, 0x36, 0x03, 0xa9, 0x84, 0xb0, 0x3b, 0x58, 0x92, 0x9b, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x12, 0xc2, 0x70, 0x20, 0x95, 0x10, 0xb6, 0x07, 0x89, 0x70, 0xc1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2a, 0x21, 0x8c, 0x07, 0x52, 0x09, 0xa1, 0x63, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0x59, 0xd8, 0x79, 0xb0, 0x92, 0x29, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x95, 0x10, 0x5a, 0x06, 0x52, 0x09, 0xa1, 0xe8, 0xa0, 0xed, 0xbe, 0xcc, 0x5a, 0x0d, 0xde, 0xd2, 0x84, 0xbc, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x96, 0x26, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xa9, 0xe2, 0x06, 0xae, 0xaa, 0xf8, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x55, 0x48, 0x06, 0x4e, 0xaa, 0xb0, 0xda, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0xb3, 0x05, 0xb8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x2a, 0x24, 0x03, 0x37, 0x55, 0xe8, 0xd8, 0xf0, 0xe7, 0xd2, 0x06, 0x2f, 0xb2, 0x50, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x2a, 0xec, 0x0e, 0x5e, 0x50, 0xca, 0x7c, 0xf0, 0x30, 0x0d, 0xe5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa8, 0x0a, 0xc9, 0xc0, 0x51, 0x15, 0x26, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0x19, 0x55, 0xf7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x55, 0x21, 0x3a, 0x78, 0xc7, 0x2a, 0xf3, 0xc1, 0x43, 0x65, 0x94, 0x3b, 0x9c, 0x62, 0xad, 0xc1, 0xb3, 0xf7, 0x82, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0x7b, 0x2f, 0xa8, 0x01, 0xf0, 0xcd, 0xed, 0xad, 0xce, 0x0d, 0x44, 0xae, 0x0c, 0x4e, 0xae, 0x6c, 0xae, 0xcc, 0x8d, 0x2e, 0x8c, 0x2e, 0xed, 0xcd, 0x0d, 0xe4, 0xcd, 0x0c, 0x24, 0xcc, 0x0d, 0x24, 0xac, 0xad, 0x6c, 0x0e, 0x84, 0x2c, 0x8c, 0x2e, 0xec, 0x4c, 0x2e, 0xac, 0x0d, 0x04, 0x2e, 0x6c, 0x6c, 0xad, 0x8c, 0x5e, 0x09, 0x40, 0x63, 0xa9, 0xb7, 0x3a, 0x37, 0x32, 0x3a, 0xb9, 0x34, 0xb8, 0x39, 0x10, 0xb6, 0xb7, 0xb9, 0x39, 0xb6, 0xb2, 0xb9, 0x39, 0xb6, 0x3c, 0x10, 0x3a, 0x34, 0xb9, 0xb7, 0xba, 0x33, 0x34, 0x90, 0x30, 0xba, 0xb7, 0x36, 0x90, 0x32, 0xb7, 0xb1, 0x37, 0xb2, 0x34, 0xb7, 0x33, 0x90, 0x30, 0x37, 0x32, 0x10, 0xb2, 0xb2, 0xb1, 0x37, 0xb2, 0x34, 0xb7, 0x33, 0xd7, 0x4a, 0x00, 0xda, 0xbb, 0xbc, 0xc9, 0xa5, 0x9d, 0xa5, 0xb9, 0x81, 0xa4, 0xcd, 0x81, 0xf8, 0x81, 0xd4, 0xb9, 0xb1, 0x95, 0xcd, 0xcd, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0xc0, 0x85, 0x8d, 0xad, 0x95, 0xd1, 0x81, 0xa4, 0xcd, 0x81, 0x88, 0x95, 0xa5, 0xb9, 0x9d, 0x81, 0x98, 0xbd, 0xc9, 0xdd, 0x85, 0xc9, 0x91, 0x95, 0x91, 0xb9, 0x80, 0x80, 0x24, 0x99, 0x81, 0xc0, 0xc9, 0x95, 0xcd, 0x95, 0xb9, 0xd1, 0xb1, 0x25, 0x00, 0x3a, 0x48, 0xa3, 0x3b, 0x99, 0x03, 0x09, 0x73, 0x03, 0x09, 0xa3, 0x7b, 0x6b, 0x03, 0xa1, 0x43, 0x0b, 0xa3, 0x03, 0x29, 0x73, 0x1b, 0x7b, 0x23, 0x2b, 0x9b, 0x03, 0x09, 0x03, 0x91, 0x7b, 0xab, 0xa3, 0x2b, 0x03, 0xa1, 0x7b, 0x03, 0x09, 0x73, 0x7b, 0xa3, 0x43, 0x2b, 0x93, 0x03, 0x99, 0x43, 0x4b, 0x83, 0x63, 0x01, 0x99, 0xab, 0x1b, 0x43, 0x03, 0x09, 0x9b, 0x03, 0x09, 0x73, 0x03, 0x49, 0x82, 0xb2, 0xa3, 0x4b, 0x00, 0xfe, 0x87, 0x91, 0x91, 0xc9, 0x95, 0xcd, 0xcd, 0xb9, 0x80, 0x80, 0x48, 0xbd, 0xd5, 0xd1, 0x95, 0xcd, 0x81, 0x84, 0xc9, 0x95, 0x81, 0xbc, 0xc1, 0x85, 0xc5, 0xd5, 0x95, 0x81, 0xd0, 0xbd, 0x81, 0x04, 0xc9, 0xd9, 0xbd, 0x81, 0x84, 0xb9, 0x91, 0x81, 0xbc, 0xb9, 0xb1, 0xe5, 0x81, 0xa0, 0x85, 0xd9, 0x95, 0x81, 0xb4, 0x95, 0x85, 0xb9, 0xa5, 0xb9, 0x9d, 0x81, 0xa4, 0xb9, 0x81, 0xd0, 0xa1, 0x95, 0x4b, 0x00, 0x5a, 0xa7, 0xb9, 0xd1, 0x95, 0xc9, 0xc1, 0xc9, 0x95, 0xd1, 0x95, 0xc9, 0xb9, 0x80, 0x50, 0xa1, 0xa5, 0xcd, 0x81, 0x94, 0xb9, 0x99, 0xbd, 0xc9, 0x8d, 0x95, 0xcd, 0x81, 0xd0, 0xa1, 0x85, 0xd1, 0x81, 0x04, 0xb5, 0x95, 0xcd, 0x81, 0xa4, 0xcd, 0x81, 0xd0, 0xc9, 0x85, 0xb9, 0xcd, 0xc1, 0xbd, 0xc9, 0xd1, 0xb5, 0x84, 0x9d, 0xb9, 0xbd, 0xcd, 0xd1, 0xa5, 0x8d, 0xb9, 0x56, 0x02, 0x78, 0x90, 0x2b, 0x8b, 0xd3, 0x01, 0x49, 0x9b, 0x03, 0x09, 0x03, 0x91, 0x2b, 0x8b, 0xab, 0x2b, 0x9b, 0xa3, 0x97, 0x00, 0x74, 0x9f, 0x0b, 0x6b, 0xd3, 0x01, 0x49, 0x9b, 0x03, 0xa9, 0x9b, 0x4b, 0x73, 0x3b, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x09, 0x6b, 0x2b, 0x9b, 0x03, 0x81, 0x93, 0x7b, 0xa3, 0x7b, 0x1b, 0x7b, 0x63, 0x03, 0x41, 0x71, 0x7b, 0xa3, 0x03, 0x31, 0x4b, 0x73, 0x2b, 0x03, 0x79, 0x93, 0x03, 0x09, 0x73, 0x7b, 0xa3, 0x43, 0x2b, 0x93, 0x03, 0x81, 0x93, 0x7b, 0xa3, 0x7b, 0x1b, 0x7b, 0x63, 0x4b, 0xb5, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xec, 0xbd, 0xa0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x1e, 0xe2, 0x06, 0x6e, 0x88, 0xf8, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x43, 0x48, 0x06, 0x8e, 0x87, 0x90, 0x6e, 0xf8, 0x77, 0x7e, 0x01, 0x9f, 0x2c, 0x2f, 0x8c, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7a, 0x08, 0xc9, 0xc0, 0xf5, 0x10, 0xe2, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x72, 0x65, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x0f, 0x21, 0x3d, 0x78, 0x37, 0x3d, 0xf3, 0xe1, 0x83, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7c, 0x08, 0xc9, 0xc0, 0xf9, 0x10, 0xe2, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x4a, 0xfd, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0x87, 0x90, 0x1e, 0xbc, 0x57, 0x9f, 0xf9, 0xf0, 0xc1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x3f, 0x84, 0x64, 0xe0, 0x7e, 0x08, 0xbb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x8c, 0x09, 0xdf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x1f, 0xc2, 0xe6, 0xe0, 0x99, 0x00, 0xcd, 0x07, 0x0f, 0x9b, 0xfb, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0x88, 0x90, 0x0c, 0x1c, 0x10, 0x61, 0xb7, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0xa6, 0xe2, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x44, 0xd8, 0x1c, 0xbc, 0xd5, 0xa0, 0xf9, 0xe0, 0x61, 0x73, 0xbf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x05, 0x11, 0x92, 0x81, 0x0b, 0x22, 0x34, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x07, 0x81, 0x27, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x05, 0x11, 0x06, 0x07, 0x0f, 0x66, 0x68, 0xde, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0b, 0x22, 0x2c, 0x06, 0x2e, 0x88, 0xb0, 0x3a, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0b, 0x22, 0xcc, 0x06, 0x2e, 0x88, 0x50, 0x70, 0xf0, 0xbc, 0xa6, 0xdf, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x22, 0x24, 0x03, 0x27, 0x44, 0xd8, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0xf7, 0xf5, 0xfb, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x09, 0x11, 0x16, 0x07, 0x2f, 0xc3, 0x68, 0xde, 0xf0, 0x45, 0xcd, 0x86, 0x3a, 0x1e, 0xe0, 0x51, 0x87, 0x37, 0xf6, 0xe6, 0x46, 0x57, 0xe6, 0x46, 0xb7, 0x1a, 0xb4, 0x17, 0x68, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xa0, 0xbd, 0x40, 0xcb, 0x06, 0xe0, 0x97, 0xac, 0x4c, 0xac, 0xee, 0x0c, 0x04, 0x4e, 0x2e, 0xcd, 0x8d, 0x2e, 0xcd, 0xed, 0x0c, 0x64, 0xec, 0xcd, 0xcd, 0x2c, 0xed, 0xac, 0x4e, 0x2e, 0x8c, 0x2e, 0xed, 0xcd, 0x5d, 0x09, 0xe0, 0xcb, 0xae, 0x4c, 0x4c, 0x07, 0xc4, 0xae, 0x4c, 0x4e, 0xec, 0x6d, 0x2e, 0x8d, 0x2e, 0x0f, 0x84, 0xee, 0xed, 0xec, 0x8c, 0xad, 0x6c, 0x5e, 0x02, 0xf0, 0x6a, 0x0e, 0x2d, 0x0d, 0x6e, 0x4e, 0x07, 0x24, 0x8d, 0xac, 0xcc, 0x8d, 0x2e, 0x8d, 0x2e, 0x0f, 0xc4, 0x2c, 0x8d, 0x8d, 0xae, 0x4c, 0x6e, 0x07, 0x24, 0xcd, 0x0c, 0xc4, 0x8f, 0x05, 0x04, 0x4e, 0x2e, 0xcd, 0x8d, 0x0e, 0xc4, 0xec, 0x4d, 0x0e, 0x24, 0x8c, 0x8d, 0xad, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xf6, 0x02, 0x2d, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xc2, 0xc7, 0x0d, 0xd4, 0xf8, 0xf8, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x15, 0x3e, 0x24, 0x03, 0x15, 0x3e, 0x0c, 0x37, 0xfc, 0xb9, 0x34, 0xe0, 0xd9, 0x95, 0x89, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xe1, 0x43, 0x7a, 0xf0, 0xa2, 0x99, 0xe6, 0x0d, 0xff, 0xce, 0x2f, 0x80, 0x97, 0x5d, 0x99, 0x58, 0x4b, 0x18, 0x1b, 0x5b, 0xcb, 0x9b, 0x99, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x89, 0x0f, 0xc9, 0x40, 0x89, 0x0f, 0xcb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xd4, 0xa9, 0xd0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xf1, 0x21, 0x3f, 0x78, 0xb7, 0x4e, 0xf3, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xf8, 0x30, 0x18, 0x28, 0xf1, 0x61, 0x73, 0x50, 0x22, 0xbe, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x25, 0x3e, 0x8c, 0x06, 0x4a, 0x7c, 0x18, 0x1e, 0xb4, 0x6d, 0x3d, 0x5e, 0x2b, 0x80, 0xa7, 0x5c, 0x59, 0x5c, 0x5d, 0xd9, 0x1c, 0x5d, 0xcb, 0x1c, 0x5d, 0x18, 0x5d, 0xb9, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x5e, 0xa2, 0xe6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x39, 0xe3, 0x06, 0xae, 0xce, 0xf8, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x67, 0x48, 0x06, 0x4e, 0xce, 0xb0, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x0b, 0xb9, 0xe1, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe4, 0x0c, 0xe9, 0xc1, 0x93, 0x98, 0x9a, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe4, 0x0c, 0xf1, 0xc0, 0xc9, 0x19, 0x16, 0x07, 0x25, 0xe2, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x72, 0x86, 0xc9, 0xc0, 0xc9, 0x19, 0x66, 0x07, 0x4f, 0x4f, 0xf7, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x39, 0x43, 0x32, 0x70, 0x73, 0x86, 0xe1, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb8, 0xb0, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xce, 0x90, 0x1e, 0xbc, 0xfa, 0xaa, 0x79, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xce, 0x10, 0x0f, 0xdc, 0x9c, 0x61, 0x72, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x67, 0xd8, 0x0c, 0xdc, 0x9c, 0x61, 0x77, 0x70, 0x46, 0x42, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x3a, 0x43, 0x32, 0x70, 0x74, 0x86, 0xf5, 0x86, 0x3f, 0x97, 0x06, 0x1e, 0x6e, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x33, 0x84, 0x07, 0xaf, 0x1a, 0x6b, 0xde, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x33, 0xa4, 0x03, 0x47, 0x67, 0x58, 0x1c, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd1, 0x19, 0x26, 0x03, 0x47, 0x67, 0x18, 0x6f, 0xf8, 0x77, 0x7e, 0x01, 0x7c, 0xe0, 0xc2, 0xc6, 0xe8, 0x5a, 0xe6, 0xe8, 0xc2, 0xe8, 0xca, 0xaa, 0xc3, 0x29, 0xb6, 0x00, 0x1e, 0x65, 0x74, 0x63, 0x68, 0x2d, 0x73, 0x68, 0x6f, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xcb, 0xdd, 0x9a, 0x1b, 0x00, 0x3f, 0xe6, 0xca, 0xe4, 0xd2, 0xc2, 0xd8, 0xd2, 0xf4, 0xca, 0x40, 0xc2, 0x40, 0xe0, 0xc2, 0xc6, 0xd6, 0xca, 0xe8, 0x40, 0xd2, 0xdc, 0xe8, 0xde, 0x40, 0xc2, 0x40, 0xc4, 0xf2, 0xe8, 0xca, 0xe6, 0xe8, 0xe4, 0xca, 0xc2, 0xda, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xf2, 0x8b, 0x1b, 0xb8, 0x0a, 0xc3, 0x7c, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe5, 0x17, 0x92, 0x81, 0xcb, 0x2f, 0xa4, 0x07, 0x4f, 0xac, 0xe3, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x2f, 0xee, 0xe0, 0xb1, 0x78, 0xcd, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xbf, 0x90, 0x0c, 0x9c, 0x7e, 0x21, 0x3d, 0x78, 0xe7, 0x1b, 0xef, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x7f, 0x71, 0x07, 0x8f, 0xc5, 0x6b, 0xde, 0xa0, 0x20, 0x8d, 0x1d, 0xc0, 0x63, 0xce, 0x8d, 0x4c, 0xae, 0xa5, 0xad, 0x8c, 0x2e, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xbf, 0x30, 0x1a, 0x38, 0xfe, 0x42, 0xc9, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe3, 0x2f, 0xac, 0x06, 0x8e, 0xbf, 0x30, 0xdf, 0xf0, 0xb6, 0xce, 0x06, 0x8f, 0x4c, 0x08, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xfe, 0xc2, 0x7e, 0xe0, 0xf8, 0x0b, 0x1d, 0x07, 0xcf, 0xbd, 0xf3, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xbf, 0xb8, 0x83, 0xc7, 0xe2, 0x35, 0x6f, 0x50, 0x90, 0xc6, 0x0e, 0xe0, 0x21, 0x37, 0x66, 0x27, 0xd7, 0xd2, 0x56, 0x46, 0x17, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x5f, 0x18, 0x0d, 0x5c, 0x7f, 0xa1, 0x64, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf5, 0x17, 0x56, 0x03, 0xd7, 0x5f, 0x98, 0x1f, 0x3c, 0x5e, 0xb1, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xfe, 0xc2, 0x7e, 0xe0, 0xfa, 0x0b, 0x1d, 0x07, 0xef, 0x89, 0xf6, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xbf, 0xb8, 0x83, 0xc7, 0xe2, 0x35, 0x6f, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0x96, 0x4d, 0x41, 0x6f, 0x50, 0x42, 0xc7, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf7, 0x5f, 0x88, 0x07, 0xee, 0xbf, 0x90, 0x1f, 0x7e, 0xa8, 0x39, 0x08, 0xd3, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x00, 0x8c, 0x1f, 0x38, 0x03, 0x43, 0xb2, 0x41, 0x92, 0x01, 0xe1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x00, 0x86, 0x6c, 0xe0, 0x00, 0x0c, 0xf1, 0xc1, 0x21, 0x06, 0x62, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x00, 0x43, 0x32, 0x70, 0x01, 0x86, 0xc9, 0xc1, 0xf3, 0x6b, 0x7e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x30, 0x24, 0x03, 0x27, 0x60, 0x98, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x01, 0x43, 0x34, 0x70, 0x02, 0x86, 0xf4, 0xa0, 0x34, 0xe0, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xc0, 0x10, 0x0f, 0x9c, 0x80, 0x21, 0x3f, 0x08, 0x58, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x04, 0x0c, 0x83, 0x81, 0x13, 0x30, 0x2c, 0x0f, 0x1e, 0x95, 0xf3, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x03, 0x86, 0x64, 0xe0, 0x06, 0x0c, 0xab, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x60, 0x88, 0x06, 0x6e, 0xc0, 0x90, 0x1e, 0x94, 0x06, 0xbc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x0d, 0x18, 0xe2, 0x81, 0x1b, 0x30, 0xe4, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x03, 0x86, 0xc1, 0xc0, 0x0d, 0x18, 0x46, 0x07, 0xcf, 0xbd, 0xf3, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x02, 0x43, 0x32, 0x70, 0x04, 0x86, 0xa6, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x47, 0x60, 0x88, 0x06, 0x8e, 0xc0, 0x90, 0x1e, 0x94, 0x06, 0xbc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x11, 0x18, 0xe2, 0x81, 0x23, 0x30, 0x74, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x02, 0x43, 0x3e, 0x70, 0x04, 0x86, 0xc1, 0x41, 0x51, 0x29, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x81, 0x61, 0x31, 0x70, 0x04, 0x86, 0x8a, 0x0d, 0x1f, 0x47, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x11, 0x18, 0x36, 0x03, 0x47, 0x60, 0x68, 0xd8, 0xf0, 0xb6, 0xce, 0x06, 0xcf, 0x77, 0xa9, 0xdc, 0xe0, 0x99, 0x84, 0xcd, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x81, 0xa1, 0x64, 0xe0, 0x08, 0x0c, 0x45, 0x07, 0xef, 0x89, 0xf6, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x02, 0x43, 0x32, 0x70, 0x05, 0x86, 0x07, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xc0, 0x10, 0x0d, 0x5c, 0x81, 0x21, 0x3d, 0x28, 0x0d, 0x78, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2b, 0x30, 0xc4, 0x03, 0x57, 0x60, 0x28, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x05, 0x86, 0x7c, 0xe0, 0x0a, 0x0c, 0x83, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x02, 0xc3, 0x62, 0xe0, 0x0a, 0x0c, 0xbd, 0x1b, 0x3e, 0x8e, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2b, 0x30, 0x6c, 0x06, 0xae, 0xc0, 0x50, 0xbb, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x0a, 0x0c, 0xa3, 0x81, 0x2b, 0x30, 0xec, 0x0e, 0x7f, 0x02, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x60, 0x18, 0x0e, 0x5c, 0x81, 0xa1, 0xe6, 0xe0, 0xb1, 0xd0, 0xcd, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x15, 0x18, 0x7a, 0x06, 0xae, 0xc0, 0xd0, 0xba, 0xe1, 0x6d, 0x9d, 0x0d, 0x9e, 0xef, 0x52, 0xb9, 0xc1, 0x2b, 0x23, 0x9b, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x0a, 0x0c, 0xcd, 0x03, 0x57, 0x60, 0x38, 0x70, 0xf0, 0xf8, 0x9f, 0xdf, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3b, 0x30, 0xee, 0xe0, 0xb1, 0x78, 0xcd, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0xbc, 0x68, 0xaa, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x03, 0xc3, 0x66, 0xe0, 0x0e, 0x0c, 0x55, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xc0, 0x30, 0x1a, 0xb8, 0x03, 0xc3, 0xee, 0xa0, 0xc8, 0xc4, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xc0, 0x30, 0x1c, 0xb8, 0x03, 0xc3, 0x7c, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1d, 0x18, 0x96, 0x03, 0x77, 0x60, 0x98, 0x1e, 0x1e, 0xbc, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xc0, 0xb0, 0x1d, 0xb8, 0x03, 0xc3, 0xfa, 0x20, 0x4d, 0xc5, 0xb5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x0e, 0x0c, 0xfb, 0x81, 0x3b, 0x30, 0x34, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x03, 0x43, 0xc1, 0xc0, 0x1d, 0x18, 0x3a, 0x0e, 0x4a, 0x7e, 0xff, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x0e, 0x0c, 0x25, 0x03, 0x77, 0x60, 0x28, 0x3a, 0x78, 0xd3, 0x67, 0x6f, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x21, 0x18, 0x77, 0xf0, 0x58, 0xbc, 0xe6, 0x0d, 0x8e, 0x63, 0x13, 0x1b, 0xbc, 0x61, 0x21, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x04, 0x43, 0x3e, 0x70, 0x08, 0x86, 0xed, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x08, 0x86, 0xc9, 0xc0, 0x21, 0x18, 0x36, 0x07, 0x45, 0x2a, 0xe6, 0xc1, 0x73, 0xc0, 0x13, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x30, 0xac, 0x07, 0x0e, 0xc1, 0x50, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x10, 0x0c, 0xf3, 0x81, 0x43, 0x30, 0x34, 0x1c, 0x1c, 0x62, 0x20, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x30, 0x54, 0x0c, 0x1c, 0x82, 0xa1, 0x6a, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0xcf, 0x01, 0x4f, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xc1, 0xd0, 0x35, 0x70, 0x08, 0x86, 0xee, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x60, 0x28, 0x1b, 0x38, 0x04, 0x43, 0xdf, 0x41, 0x69, 0xc0, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x82, 0xa1, 0x70, 0xe0, 0x10, 0x0c, 0xad, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xc1, 0xd0, 0x38, 0x70, 0x08, 0x86, 0xca, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x04, 0x43, 0xe7, 0xc0, 0x21, 0x18, 0x4a, 0x0f, 0x8e, 0xcb, 0x33, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x60, 0xa8, 0x1d, 0x38, 0x04, 0x43, 0xf5, 0xc1, 0x9b, 0x3e, 0x7b, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xc1, 0xb8, 0x83, 0xc7, 0xe2, 0x35, 0x6f, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0x47, 0x46, 0xb7, 0x41, 0x09, 0x1d, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x82, 0x61, 0x30, 0x70, 0x0a, 0x86, 0xc5, 0xe1, 0x87, 0x9a, 0x83, 0x30, 0x1d, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xc1, 0xf8, 0x81, 0xa3, 0x30, 0x24, 0x1b, 0x14, 0x9d, 0xc6, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x2d, 0x18, 0xb2, 0x81, 0x5b, 0x30, 0xc4, 0x07, 0x65, 0x71, 0xf4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x0b, 0x86, 0xc1, 0xc0, 0x2d, 0x18, 0x16, 0x87, 0x07, 0x6f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x18, 0x8c, 0x3f, 0x78, 0xe0, 0x8d, 0xf3, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x18, 0x0c, 0xd9, 0xc0, 0x31, 0x18, 0x96, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xc1, 0x10, 0x0e, 0x1c, 0x83, 0x21, 0x3d, 0x08, 0x58, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x18, 0x0c, 0xf1, 0xc0, 0x31, 0x18, 0x86, 0x1b, 0x3e, 0x77, 0xd9, 0xe0, 0xb1, 0xd9, 0x8f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x0c, 0x86, 0xdd, 0xc1, 0x7b, 0x8f, 0x9c, 0x0f, 0x0f, 0xde, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x83, 0x21, 0x1b, 0xb8, 0x06, 0xc3, 0x64, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x35, 0x18, 0xc2, 0x81, 0x6b, 0x30, 0xa4, 0x87, 0xc7, 0x64, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6b, 0x30, 0xc4, 0x03, 0xd7, 0x60, 0x58, 0x1c, 0xbc, 0xfb, 0xe5, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x1c, 0x0c, 0xd9, 0xc0, 0x39, 0x18, 0x26, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xc1, 0x10, 0x0e, 0x9c, 0x83, 0x21, 0x3d, 0x3c, 0x26, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x83, 0x21, 0x1e, 0x38, 0x07, 0xc3, 0xe2, 0x60, 0x99, 0xfc, 0x70, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x3d, 0x18, 0xb2, 0x81, 0x7b, 0x30, 0xec, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x83, 0x21, 0x1c, 0xb8, 0x07, 0x43, 0x7a, 0x50, 0x54, 0x8a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf7, 0x60, 0x88, 0x07, 0xee, 0xc1, 0x30, 0x3f, 0x78, 0x7e, 0x3c, 0x6f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x41, 0x18, 0xb2, 0x81, 0x83, 0x30, 0xac, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x84, 0x21, 0x1c, 0x38, 0x08, 0x43, 0x7a, 0x10, 0xb0, 0xac, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x41, 0x18, 0xe2, 0x81, 0x83, 0x30, 0x8c, 0x37, 0xbc, 0xad, 0xb3, 0xc1, 0xf3, 0xe0, 0x7e, 0x0f, 0x1e, 0x1b, 0xdd, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x11, 0x86, 0x6c, 0xe0, 0x22, 0x0c, 0xeb, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x61, 0x08, 0x07, 0x2e, 0xc2, 0x90, 0x1e, 0x04, 0x2c, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x11, 0x86, 0x78, 0xe0, 0x22, 0x0c, 0xe3, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x3c, 0xb8, 0xdf, 0x83, 0x57, 0xb9, 0x37, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x84, 0x21, 0x1b, 0x38, 0x09, 0xc3, 0x70, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x49, 0x18, 0xc2, 0x81, 0x93, 0x30, 0xc4, 0x07, 0x69, 0x2a, 0xae, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x49, 0x18, 0xf2, 0x81, 0x93, 0x30, 0xec, 0x0e, 0x5e, 0x51, 0xde, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x13, 0x86, 0x6c, 0xe0, 0x26, 0x0c, 0x0d, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xc2, 0x10, 0x0e, 0xdc, 0x84, 0x21, 0x3d, 0x3c, 0x26, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x84, 0x21, 0x1e, 0xb8, 0x09, 0x43, 0xc1, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0xa3, 0x5a, 0xef, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x84, 0x61, 0x76, 0xf0, 0x28, 0x43, 0xe7, 0x0d, 0xd6, 0x00, 0x2d, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4d, 0x18, 0x96, 0x03, 0x37, 0x61, 0xd8, 0x1f, 0x3c, 0x95, 0xe7, 0xb7, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x2a, 0x8c, 0x3b, 0x78, 0x2c, 0x5e, 0xf3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xab, 0x30, 0x76, 0xe0, 0x2a, 0x0c, 0xc9, 0xc1, 0x21, 0x06, 0x62, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x0a, 0x43, 0x34, 0x70, 0x15, 0x86, 0xc1, 0xc1, 0xa3, 0x00, 0xe9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xab, 0x30, 0x2c, 0x06, 0xae, 0xc2, 0xb0, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x15, 0x86, 0xc9, 0xc0, 0x55, 0x18, 0x56, 0x07, 0xa5, 0x01, 0xef, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x15, 0x86, 0xd9, 0xc0, 0x55, 0x18, 0x76, 0x07, 0x87, 0x05, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x2a, 0x0c, 0xc3, 0x81, 0xab, 0x30, 0x8c, 0x0f, 0xde, 0xf4, 0xd9, 0x5b, 0xb3, 0x06, 0x6f, 0x93, 0xe7, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x78, 0x9b, 0x3c, 0x6f, 0x03, 0xe0, 0xd1, 0x58, 0x9d, 0x9c, 0x5c, 0x99, 0x1b, 0x1d, 0x88, 0x5d, 0x99, 0xdc, 0x5c, 0xda, 0x9b, 0x1b, 0xc8, 0x9b, 0x19, 0x08, 0x1d, 0x5a, 0x19, 0x48, 0x58, 0x5b, 0xd9, 0x1c, 0xc8, 0x5d, 0x9a, 0x5c, 0x19, 0x08, 0x9c, 0xdc, 0x1b, 0xdd, 0xdb, 0xd8, 0x1b, 0xdb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xf1, 0xb0, 0x1c, 0xa8, 0xe2, 0xa1, 0x77, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x15, 0x0f, 0xd3, 0x81, 0x2a, 0x1e, 0x4a, 0x37, 0x08, 0x36, 0xd3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x8a, 0x87, 0xf1, 0x40, 0x15, 0x0f, 0xf3, 0x83, 0x90, 0x4e, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x78, 0xd8, 0x0f, 0x54, 0xf1, 0xd0, 0x70, 0x10, 0x38, 0xaa, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x15, 0x0f, 0x15, 0x03, 0x55, 0x3c, 0x94, 0x1c, 0x04, 0xb1, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xc5, 0x43, 0xcb, 0x40, 0x15, 0x0f, 0x3d, 0x07, 0x21, 0x73, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xf1, 0x50, 0x34, 0x50, 0xc5, 0x43, 0xd5, 0xc1, 0x1a, 0x34, 0xbc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x8a, 0x87, 0xae, 0x81, 0x2a, 0x1e, 0xda, 0x0e, 0x56, 0xe1, 0x15, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x55, 0x3c, 0xd4, 0x0d, 0x54, 0xf1, 0x50, 0x78, 0xb0, 0xac, 0xb7, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xe2, 0xa1, 0x71, 0xa0, 0x8a, 0x87, 0xce, 0x83, 0x65, 0x14, 0xc6, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x15, 0x0f, 0xad, 0x07, 0x8f, 0x54, 0x75, 0x3e, 0x58, 0x16, 0x00, 0x7c, 0x38, 0xc5, 0xd6, 0xe0, 0x51, 0x69, 0xc7, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x8f, 0x4a, 0x3b, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x63, 0x28, 0x6e, 0xe0, 0x20, 0x8a, 0xdf, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x0c, 0x85, 0x64, 0xe0, 0x18, 0x0a, 0xab, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xa6, 0xe3, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x86, 0x42, 0x74, 0xf0, 0xdc, 0x66, 0xe7, 0x83, 0xa7, 0x2c, 0x0f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x50, 0x48, 0x06, 0xae, 0xa1, 0xd0, 0xb1, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0x64, 0xa1, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x50, 0xd8, 0x1d, 0x3c, 0x79, 0xda, 0xf9, 0xe0, 0x61, 0x1a, 0xca, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x39, 0x14, 0x92, 0x81, 0x73, 0x28, 0xcc, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xbb, 0x35, 0x94, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x1c, 0x0a, 0xd1, 0xc1, 0xc3, 0xb3, 0x9d, 0x0f, 0x1e, 0xa6, 0xa1, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x43, 0x21, 0x19, 0xb8, 0x87, 0xc2, 0x64, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0xa3, 0xea, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7b, 0x28, 0x44, 0x07, 0x8f, 0xff, 0x76, 0x3e, 0x78, 0xa8, 0x8c, 0x72, 0x87, 0x53, 0x6c, 0x0d, 0x1e, 0xb9, 0x87, 0xb1, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0x91, 0x7b, 0x18, 0x0d, 0xc0, 0x9b, 0x5d, 0x99, 0x9c, 0xd8, 0xdb, 0x5c, 0x1a, 0x5d, 0x1e, 0x88, 0x19, 0x5b, 0xd8, 0x19, 0x88, 0xd9, 0x9b, 0x1c, 0x48, 0x58, 0x5b, 0xd9, 0xdc, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x23, 0xf7, 0x30, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x96, 0x87, 0x74, 0xa0, 0x96, 0x87, 0x07, 0x1b, 0x04, 0x9b, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xcb, 0x43, 0x3e, 0x50, 0xcb, 0xc3, 0x66, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x81, 0x37, 0xe7, 0x46, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x3c, 0x8c, 0x06, 0x6a, 0x79, 0x18, 0x6e, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xf0, 0xe4, 0xc6, 0xec, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x96, 0x87, 0xe5, 0x40, 0x2d, 0x0f, 0xeb, 0x83, 0xa7, 0x78, 0xd3, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x3c, 0xcc, 0x07, 0x6a, 0x79, 0xa8, 0xd8, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xe0, 0xb5, 0xcd, 0x9d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x2d, 0x0f, 0x1d, 0x03, 0xb5, 0x3c, 0xf4, 0x6c, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xf0, 0xce, 0xca, 0xe6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x96, 0x87, 0xa2, 0x81, 0x5a, 0x1e, 0xca, 0x36, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0x90, 0x1b, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xe5, 0xa1, 0x6d, 0xa0, 0x96, 0x87, 0xc6, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0x79, 0x28, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xf2, 0x50, 0x39, 0x50, 0xcb, 0x43, 0xed, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x02, 0x6f, 0x2d, 0x2c, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x79, 0xe8, 0x1d, 0xa8, 0xe5, 0xa1, 0x7b, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x2d, 0x6d, 0x96, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x3c, 0x94, 0x0f, 0xd4, 0xf2, 0x70, 0x60, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0x29, 0xc4, 0x47, 0xcd, 0x1a, 0xbc, 0x42, 0x27, 0x64, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x15, 0x3a, 0x21, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x18, 0x84, 0xd9, 0xc0, 0x61, 0x10, 0xd6, 0x07, 0x6f, 0x10, 0x76, 0x5c, 0x01, 0x2f, 0xee, 0x6d, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x1a, 0x78, 0x71, 0x6f, 0x73, 0x03, 0xa0, 0x73, 0x5c, 0x5d, 0x18, 0x5b, 0x1a, 0x5d, 0x1e, 0xc8, 0x9b, 0x19, 0xc8, 0x5c, 0x99, 0x9c, 0x5d, 0xda, 0x58, 0xd9, 0x0e, 0x08, 0xda, 0xdb, 0x1d, 0x48, 0xda, 0x1c, 0xc8, 0x5b, 0x9d, 0x1c, 0xc8, 0xd8, 0x9b, 0x9b, 0x5b, 0xd9, 0x18, 0x5d, 0xda, 0x9b, 0x1b, 0x08, 0xdd, 0x1b, 0x48, 0x18, 0x08, 0x5c, 0x59, 0x99, 0x1c, 0x08, 0xd9, 0x5b, 0x9a, 0xdb, 0xd9, 0x5f, 0x09, 0xc0, 0x7f, 0x17, 0xb6, 0xb0, 0x39, 0xba, 0x96, 0xb1, 0x37, 0x37, 0xba, 0xb0, 0x31, 0x3a, 0x1d, 0x10, 0xb6, 0xb0, 0x39, 0x3a, 0x10, 0xba, 0xb4, 0xb6, 0x32, 0x90, 0xbb, 0x32, 0x10, 0xb4, 0xb2, 0x30, 0x39, 0x32, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x10, 0xb8, 0xb2, 0x32, 0x39, 0x16, 0x90, 0x37, 0x39, 0x90, 0x34, 0x33, 0x90, 0x92, 0x3a, 0x37, 0xb1, 0x37, 0x39, 0x37, 0x16, 0x90, 0x3b, 0xb4, 0x32, 0x77, 0x09, 0xe0, 0xfb, 0xae, 0x0c, 0xc4, 0x2c, 0x4d, 0x6e, 0x8e, 0x0e, 0x64, 0x8e, 0x2e, 0x4c, 0x8e, 0xae, 0x8c, 0x0c, 0x84, 0x4e, 0x2e, 0x6c, 0x6c, 0x2d, 0xcd, 0xed, 0x0c, 0x84, 0x2e, 0xad, 0xad, 0xac, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0xc0, 0x8b, 0x7b, 0x9b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7a, 0x89, 0x1b, 0x38, 0x5f, 0x42, 0xdd, 0x06, 0xa1, 0x86, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x2f, 0x21, 0x19, 0xb8, 0x5e, 0xc2, 0x6e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf5, 0x12, 0xa2, 0x81, 0xeb, 0x25, 0x2c, 0x36, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x80, 0xaf, 0xce, 0x4d, 0xec, 0x4d, 0xce, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0x97, 0x30, 0x19, 0xb8, 0x5e, 0xc2, 0x6c, 0x83, 0x42, 0x30, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0x97, 0xb0, 0x39, 0x78, 0x74, 0xce, 0xf3, 0xc1, 0x91, 0xaf, 0xb5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x5f, 0xe2, 0x0e, 0x1e, 0x05, 0xf3, 0xbc, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7c, 0x89, 0x1d, 0x38, 0x5f, 0xc2, 0x78, 0x83, 0x60, 0x33, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0x97, 0x10, 0x0c, 0x9c, 0x2f, 0x21, 0x3d, 0x78, 0x1e, 0xe0, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xbe, 0x84, 0x78, 0xe0, 0x7c, 0x09, 0x9b, 0x83, 0x97, 0xf9, 0xfd, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x4b, 0x18, 0x0d, 0x9c, 0x2f, 0x61, 0xbb, 0x21, 0x03, 0x7e, 0xf0, 0x5a, 0x9b, 0xe7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf3, 0x25, 0xac, 0x07, 0xce, 0x97, 0xd0, 0xb6, 0xe1, 0xcf, 0xa5, 0x01, 0xfc, 0xd8, 0xc2, 0xe6, 0xe8, 0x5a, 0xc6, 0xde, 0xdc, 0xe8, 0xc2, 0xc6, 0xe8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x5f, 0x42, 0xd5, 0xc1, 0x13, 0x9b, 0x9e, 0x0f, 0x8e, 0x7c, 0xad, 0x1d, 0x4e, 0xb1, 0xd6, 0xe0, 0x79, 0x7d, 0x2d, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xcf, 0xeb, 0x6b, 0x69, 0x00, 0x3c, 0x80, 0x0b, 0xcb, 0x63, 0x7b, 0x0b, 0x23, 0x9b, 0x03, 0x11, 0x7b, 0xab, 0x73, 0x23, 0x2b, 0x23, 0x03, 0x49, 0x73, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x71, 0x0b, 0x6b, 0x2b, 0x9b, 0x83, 0x0b, 0x1b, 0x2b, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0x5e, 0x5f, 0xcb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x92, 0x61, 0x36, 0x70, 0x4b, 0x86, 0x0f, 0x1b, 0x04, 0x9b, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x4b, 0x86, 0xe1, 0xc0, 0x2d, 0x19, 0xd6, 0x07, 0x8f, 0xd7, 0x1e, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xc9, 0x30, 0x1f, 0xb8, 0x25, 0x43, 0xc7, 0xc1, 0xf3, 0x3b, 0xf1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5b, 0x32, 0x94, 0x0c, 0xdc, 0x92, 0xa1, 0x6d, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x01, 0x7f, 0xd8, 0xd8, 0x5a, 0x0b, 0x1c, 0x5b, 0x59, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x92, 0xa1, 0x6e, 0xe0, 0x96, 0x0c, 0xbd, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0xf8, 0xc3, 0xc6, 0xd6, 0x5a, 0xc4, 0xde, 0xde, 0xdc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x96, 0x0c, 0xc5, 0x03, 0xb7, 0x64, 0x28, 0xdf, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0xd3, 0x87, 0xdd, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x2d, 0x19, 0xda, 0x07, 0x6e, 0xc9, 0x70, 0xe1, 0xe0, 0xb9, 0xa3, 0xc9, 0xad, 0x80, 0xe7, 0x16, 0x36, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0x9e, 0x5b, 0xd8, 0xd8, 0x00, 0x7e, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x2b, 0x63, 0x61, 0x6e, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd2, 0xc6, 0x0d, 0x5c, 0xb5, 0x61, 0xbf, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa4, 0x0d, 0xc9, 0xc0, 0x49, 0x1b, 0xfa, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xb4, 0x21, 0x1a, 0x38, 0x69, 0xc3, 0x60, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd2, 0x86, 0xf0, 0xe0, 0xd1, 0x7e, 0xcf, 0x87, 0x6f, 0xe7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x36, 0x2c, 0x06, 0x4e, 0xda, 0x50, 0xb5, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x69, 0xc3, 0xe6, 0xe0, 0x69, 0x84, 0xcf, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd2, 0x86, 0xd1, 0xc0, 0x49, 0x1b, 0x86, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xb4, 0x61, 0x39, 0x70, 0xd2, 0x86, 0xa6, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x69, 0xc3, 0x74, 0xe0, 0xa4, 0x0d, 0xf3, 0x83, 0xd2, 0x9b, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x69, 0xc3, 0x7e, 0xe0, 0xa4, 0x0d, 0x1d, 0x87, 0x07, 0xf0, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x36, 0x94, 0x0c, 0x9c, 0xb4, 0xa1, 0xe8, 0xf0, 0x00, 0x7e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x6d, 0xe8, 0x1a, 0x38, 0x69, 0x43, 0xdd, 0x86, 0x3f, 0x97, 0x06, 0x1f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa4, 0x0d, 0x6d, 0x07, 0x8f, 0xbe, 0x7c, 0x3e, 0xfc, 0x50, 0xd3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xb4, 0x71, 0x07, 0x6f, 0xcb, 0x7b, 0xde, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd3, 0x86, 0x64, 0xe0, 0xa6, 0x0d, 0x8b, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x69, 0x43, 0x34, 0x70, 0xd3, 0x86, 0xf8, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x36, 0xe4, 0x03, 0x37, 0x6d, 0x18, 0x1c, 0x7e, 0xa8, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xda, 0xb8, 0x83, 0xb7, 0xe5, 0x3d, 0x6f, 0x50, 0xc2, 0x63, 0x6e, 0xf8, 0x3c, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x6a, 0x43, 0x38, 0x70, 0xd4, 0x86, 0xf4, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xab, 0x36, 0xee, 0xe0, 0x6d, 0x79, 0xcf, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xda, 0xd8, 0x81, 0xab, 0x36, 0xac, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xb5, 0xf1, 0x03, 0x57, 0x6d, 0x88, 0x0e, 0x4a, 0xa2, 0xd9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xaa, 0x0d, 0xd9, 0xc0, 0x55, 0x1b, 0xc2, 0xc3, 0xd3, 0x3a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x55, 0x1b, 0xd2, 0x81, 0xab, 0x36, 0x4c, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xb5, 0x21, 0x1e, 0xb8, 0x6a, 0xc3, 0xe2, 0xa0, 0xf8, 0x41, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x6a, 0xc3, 0x66, 0xe0, 0xaa, 0x0d, 0xa3, 0xc3, 0xd3, 0x3b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x6d, 0x98, 0x0d, 0x5c, 0xb5, 0x61, 0xbe, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xe1, 0xf3, 0xa0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x6a, 0xc3, 0x74, 0xe0, 0xaa, 0x0d, 0xeb, 0x83, 0x22, 0xfc, 0xb4, 0x56, 0x83, 0xd7, 0x23, 0x37, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x86, 0x21, 0x6e, 0x20, 0x15, 0x12, 0xbf, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0x41, 0x3a, 0xa5, 0xcf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x22, 0xe2, 0x07, 0x72, 0x12, 0x61, 0xbd, 0x41, 0xa1, 0xdc, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x22, 0x42, 0x36, 0x90, 0x8b, 0x08, 0x1d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x11, 0x21, 0x1c, 0xc8, 0x45, 0x84, 0xf5, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x44, 0x48, 0x07, 0x72, 0x11, 0x61, 0xb4, 0xe1, 0xcf, 0xa5, 0x0d, 0xdd, 0x00, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x17, 0x11, 0x16, 0x07, 0x4f, 0x9a, 0x7e, 0x3e, 0x28, 0xb3, 0x74, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x44, 0x58, 0x0d, 0xe4, 0x22, 0xc2, 0x78, 0xc3, 0x9f, 0x4b, 0x1b, 0x56, 0x86, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x17, 0x11, 0x96, 0x07, 0x6f, 0xc9, 0x7e, 0x3e, 0x28, 0xb3, 0x74, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x11, 0x61, 0x3e, 0x90, 0x8b, 0x08, 0x15, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0x79, 0x0a, 0xa9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x45, 0x84, 0xfd, 0xc1, 0x2b, 0xbe, 0x9f, 0x37, 0xfc, 0x3b, 0xbf, 0x41, 0x33, 0x28, 0x52, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x88, 0xf8, 0x83, 0x27, 0x2c, 0x3f, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x46, 0x84, 0x6c, 0x20, 0x19, 0x11, 0x36, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xca, 0xdc, 0xf2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x46, 0x84, 0xfc, 0xe0, 0x59, 0xe8, 0xcf, 0x07, 0xcf, 0xbd, 0x07, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x44, 0xfc, 0xc1, 0x13, 0x96, 0x9f, 0x37, 0x28, 0x3a, 0x68, 0x07, 0x0f, 0x37, 0x78, 0x21, 0x60, 0xca, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8d, 0x08, 0x9b, 0x81, 0x6c, 0x44, 0xe8, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8d, 0x08, 0xa3, 0x81, 0x6c, 0x44, 0x98, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x46, 0x84, 0xd5, 0x40, 0x36, 0x22, 0x2c, 0x0f, 0x5e, 0x92, 0x6c, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x23, 0xc2, 0x74, 0x20, 0x1b, 0x11, 0xd6, 0x07, 0x45, 0x96, 0x69, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x36, 0x22, 0xec, 0x07, 0xb2, 0x11, 0xa1, 0xe2, 0xe0, 0x19, 0x80, 0x29, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3a, 0x22, 0xfe, 0xe0, 0x09, 0xcb, 0xcf, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x11, 0x21, 0x1b, 0x48, 0x47, 0x84, 0xd9, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x44, 0x08, 0x07, 0xd2, 0x11, 0x21, 0x3f, 0x7c, 0x71, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x23, 0xc2, 0x60, 0x20, 0x1d, 0x11, 0x16, 0x87, 0xa7, 0x75, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x44, 0x98, 0x0c, 0xa4, 0x23, 0xc2, 0xea, 0x20, 0x5d, 0x62, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1d, 0x11, 0x86, 0x03, 0xe9, 0x88, 0xb0, 0x3c, 0x08, 0x40, 0xb6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x47, 0xc4, 0x1f, 0x3c, 0x61, 0xf9, 0x79, 0x83, 0xd2, 0xde, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x47, 0x84, 0x6c, 0x20, 0x1f, 0x11, 0x6a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x23, 0x42, 0x38, 0x90, 0x8f, 0x08, 0x8b, 0x0d, 0x7f, 0x2e, 0x0d, 0x9e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x22, 0xc4, 0x07, 0xaf, 0xae, 0x80, 0x3e, 0x28, 0xb3, 0x74, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x44, 0x98, 0x0c, 0xe4, 0x23, 0x42, 0xcb, 0x86, 0x3f, 0x97, 0x36, 0x38, 0x1d, 0x4c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x22, 0xcc, 0x0e, 0xde, 0xb8, 0x01, 0xbd, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x88, 0xb0, 0x1b, 0xc8, 0x47, 0x84, 0xed, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x88, 0x30, 0x1e, 0xc8, 0x47, 0x84, 0x92, 0x0d, 0x02, 0xe8, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x11, 0x61, 0x7d, 0xf0, 0x28, 0x12, 0xe8, 0x0d, 0x0f, 0x4a, 0x6e, 0x78, 0x66, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x11, 0x61, 0x7f, 0xf0, 0x28, 0x12, 0xe8, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0x80, 0x6c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x8f, 0x08, 0x0d, 0x07, 0x8f, 0x22, 0x81, 0x3e, 0x68, 0xeb, 0x44, 0xaa, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x21, 0x11, 0x7f, 0xf0, 0x84, 0xe5, 0xe7, 0x0d, 0x5f, 0xe1, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x22, 0x64, 0x07, 0x4f, 0x58, 0x7e, 0xde, 0xf0, 0xf5, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x90, 0x08, 0xf9, 0x40, 0x42, 0x22, 0x0c, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x24, 0xc2, 0x60, 0x20, 0x21, 0x11, 0x36, 0x07, 0x4b, 0x40, 0xe2, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x44, 0x18, 0x0d, 0x24, 0x24, 0xc2, 0xee, 0xe0, 0x19, 0x80, 0x29, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x46, 0x22, 0xfe, 0xe0, 0x09, 0xcb, 0xcf, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x12, 0x21, 0x1b, 0xc8, 0x48, 0x84, 0xc5, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x44, 0x48, 0x07, 0x32, 0x12, 0x21, 0x3e, 0x28, 0xa3, 0xcf, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x23, 0x11, 0xf2, 0x81, 0x8c, 0x44, 0x18, 0x1c, 0x9e, 0xd6, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x12, 0x61, 0x33, 0x90, 0x91, 0x08, 0xe3, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0x89, 0x30, 0x1a, 0xc8, 0x48, 0x84, 0xdd, 0xc1, 0x12, 0x90, 0xf8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x23, 0x11, 0x86, 0x03, 0x19, 0x89, 0xb0, 0x3d, 0x78, 0x06, 0x60, 0x4a, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x92, 0x88, 0x3f, 0x78, 0xc2, 0xf2, 0xf3, 0x06, 0x45, 0x07, 0xed, 0xe0, 0xe2, 0x06, 0x2f, 0x04, 0x4c, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x12, 0x61, 0x33, 0x90, 0x92, 0x08, 0xe3, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x89, 0x30, 0x1a, 0x48, 0x49, 0x84, 0xdd, 0x41, 0x5b, 0x27, 0x52, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x22, 0x0c, 0x07, 0x52, 0x12, 0x61, 0x7b, 0xf0, 0x0c, 0xc0, 0x94, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x27, 0x11, 0x7f, 0xf0, 0x84, 0xe5, 0xe7, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xce, 0x50, 0x93, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x93, 0x08, 0xe9, 0x40, 0x4e, 0x22, 0x8c, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x24, 0x42, 0x3c, 0x90, 0x93, 0x08, 0xf9, 0xe1, 0xbd, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x27, 0x11, 0x06, 0x03, 0x39, 0x89, 0xb0, 0x39, 0x58, 0x02, 0x12, 0xdf, 0x1a, 0x14, 0xbb, 0xe7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x93, 0x08, 0xc3, 0x81, 0x9c, 0x44, 0x18, 0x6f, 0xf8, 0x38, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x12, 0x61, 0x3a, 0x90, 0x93, 0x08, 0xdb, 0x83, 0x32, 0xfa, 0xbc, 0xd5, 0x60, 0x19, 0x4e, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x28, 0xe2, 0x07, 0x32, 0x1b, 0x21, 0xd9, 0xa0, 0xb4, 0xb7, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x14, 0x21, 0x1b, 0xc8, 0x51, 0x84, 0xc1, 0x86, 0x3f, 0x97, 0x36, 0x48, 0x9a, 0xed, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x45, 0xc8, 0x0f, 0x1e, 0x25, 0x07, 0x7d, 0xf8, 0x60, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x14, 0xf1, 0x07, 0x4f, 0x7c, 0x83, 0xde, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa4, 0x08, 0xd9, 0x40, 0x92, 0x22, 0x2c, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0x43, 0x15, 0x61, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa4, 0x08, 0xf9, 0xc1, 0xbb, 0xf5, 0xa0, 0x0f, 0xce, 0xb3, 0xa3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa5, 0x88, 0x3f, 0x78, 0xe2, 0x1b, 0xf4, 0x06, 0xcb, 0x21, 0x99, 0x66, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x14, 0xf1, 0x07, 0x4f, 0x7c, 0x83, 0xde, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa6, 0x08, 0xd9, 0x40, 0x9a, 0x22, 0x8c, 0x37, 0x08, 0xa7, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4d, 0x11, 0xe2, 0x81, 0x34, 0x45, 0x98, 0x1c, 0x3c, 0xf7, 0x1e, 0x64, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x14, 0x61, 0x33, 0x90, 0xa6, 0x08, 0xdb, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x8a, 0x30, 0x1a, 0x48, 0x53, 0x84, 0xd5, 0xe1, 0x87, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4d, 0x11, 0x66, 0x03, 0x69, 0x8a, 0x30, 0x3d, 0x78, 0xee, 0x3d, 0x48, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa7, 0x88, 0x3f, 0x78, 0xe2, 0x1b, 0xf4, 0x06, 0x05, 0x69, 0xec, 0x1a, 0x94, 0xd0, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9e, 0x22, 0x64, 0x03, 0x79, 0x8a, 0x30, 0xde, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa7, 0x08, 0xe1, 0x40, 0x9e, 0x22, 0x6c, 0x36, 0xfc, 0xb9, 0xb4, 0x61, 0x65, 0x68, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x14, 0x61, 0x70, 0xf0, 0x1e, 0x4d, 0xe8, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x53, 0x84, 0xd1, 0x40, 0x9e, 0x22, 0x6c, 0x37, 0xfc, 0xb9, 0x34, 0xe0, 0x85, 0xd5, 0xc9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa7, 0x08, 0xc3, 0x83, 0x77, 0x80, 0x42, 0x1f, 0x1c, 0xb5, 0x41, 0x3b, 0x08, 0xd3, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x51, 0x11, 0x92, 0x81, 0x7c, 0x45, 0xa8, 0xda, 0xa0, 0x20, 0x8d, 0xdd, 0xa0, 0x2c, 0x2c, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x15, 0x61, 0x32, 0x90, 0xa8, 0x08, 0xeb, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x8a, 0xb0, 0x19, 0x48, 0x54, 0x84, 0xd9, 0x41, 0x51, 0xfc, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x2a, 0xc2, 0x6e, 0x20, 0x51, 0x11, 0x86, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xa8, 0x08, 0xcb, 0x81, 0x44, 0x45, 0x18, 0x1f, 0xb4, 0xe4, 0x0c, 0xde, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x2a, 0x42, 0x72, 0xf0, 0x50, 0x53, 0xe8, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x8a, 0x90, 0x0e, 0x64, 0x2a, 0xc2, 0x6a, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa6, 0x22, 0xe4, 0x03, 0x99, 0x8a, 0x30, 0x38, 0x3c, 0x78, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x8a, 0xb0, 0x18, 0xc8, 0x54, 0x84, 0xd1, 0x41, 0xe1, 0x65, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x2a, 0x42, 0x36, 0x90, 0xaa, 0x08, 0x8b, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0x8a, 0x10, 0x0e, 0xa4, 0x2a, 0x42, 0x7a, 0x78, 0xf0, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x55, 0x84, 0x78, 0x20, 0x55, 0x11, 0x06, 0x07, 0x49, 0x69, 0xc1, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xae, 0x22, 0x24, 0x07, 0x0f, 0x35, 0x85, 0xde, 0xa0, 0xe8, 0xd3, 0xdd, 0xa0, 0x5c, 0x33, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x15, 0x61, 0x32, 0x90, 0xab, 0x08, 0xdb, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0x8a, 0xb0, 0x19, 0xc8, 0x55, 0x84, 0xd9, 0xe1, 0x35, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x57, 0x11, 0x76, 0x03, 0xb9, 0x8a, 0x30, 0x3d, 0x28, 0xbc, 0x8c, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x45, 0x48, 0x0e, 0x1e, 0x6a, 0x0a, 0xbd, 0x41, 0x41, 0x1a, 0xbb, 0x41, 0x43, 0xab, 0xe0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x22, 0x4c, 0x06, 0x92, 0x15, 0xa1, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x22, 0x6c, 0x06, 0x92, 0x15, 0x61, 0x76, 0x50, 0xe2, 0xe3, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x8a, 0xb0, 0x1b, 0x48, 0x56, 0x84, 0xf9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x64, 0x45, 0x18, 0x0e, 0x24, 0x2b, 0xc2, 0xf2, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x15, 0x61, 0x3a, 0x90, 0xac, 0x08, 0xeb, 0x83, 0xc2, 0xcb, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x59, 0x11, 0xf6, 0x03, 0xc9, 0x8a, 0x50, 0x71, 0xd0, 0x92, 0x33, 0x78, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xad, 0x08, 0xc9, 0xc1, 0x43, 0x4d, 0xa1, 0x37, 0x28, 0x76, 0x34, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x45, 0x48, 0x07, 0xb2, 0x15, 0xa1, 0x6b, 0xc3, 0x23, 0xac, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb6, 0x22, 0xe4, 0x03, 0xd9, 0x8a, 0x30, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xad, 0x08, 0x83, 0x81, 0x6c, 0x45, 0xd8, 0x1c, 0xa4, 0x61, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x8a, 0x30, 0x1a, 0xc8, 0x56, 0x84, 0xdd, 0x41, 0xfb, 0xb5, 0xe0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb6, 0x22, 0x0c, 0x07, 0xb2, 0x15, 0x61, 0x7b, 0xb0, 0x92, 0xd7, 0xad, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x5b, 0x11, 0xd6, 0x03, 0xd9, 0x8a, 0x50, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x5b, 0x11, 0xe6, 0x03, 0xd9, 0x8a, 0xd0, 0x70, 0xf8, 0xe2, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x56, 0x84, 0x8a, 0x81, 0x6c, 0x45, 0x68, 0x39, 0x68, 0xbf, 0x16, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x56, 0x84, 0x9a, 0x81, 0x6c, 0x45, 0x68, 0x3a, 0x58, 0x59, 0xec, 0x56, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xba, 0x22, 0x64, 0x03, 0xe9, 0x8a, 0x30, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xae, 0x08, 0xe1, 0x40, 0xba, 0x22, 0xa4, 0x87, 0x07, 0x6f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x45, 0x88, 0x07, 0xd2, 0x15, 0x61, 0x71, 0xd0, 0x92, 0x33, 0x78, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xaf, 0x08, 0xc9, 0xc1, 0x43, 0x4d, 0xa1, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x2b, 0x42, 0x34, 0x90, 0xaf, 0x08, 0xbb, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x8a, 0x90, 0x0d, 0xe4, 0x2b, 0x42, 0x7c, 0xf8, 0x14, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x57, 0x84, 0x7c, 0x20, 0x5f, 0x11, 0x26, 0x07, 0xed, 0xd7, 0x82, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x8a, 0xb0, 0x19, 0xc8, 0x57, 0x84, 0xd9, 0xc1, 0x4a, 0x5e, 0xb7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x45, 0x18, 0x0e, 0xe4, 0x2b, 0x42, 0xd3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7c, 0x45, 0x58, 0x0e, 0xe4, 0x2b, 0xc2, 0xf8, 0xa0, 0xc8, 0xc4, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x15, 0x61, 0x3d, 0x90, 0xaf, 0x08, 0x25, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x15, 0x61, 0x3e, 0x90, 0xaf, 0x08, 0xfb, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x57, 0x84, 0x82, 0x81, 0x7c, 0x45, 0xe8, 0x38, 0x28, 0xbc, 0x8c, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x15, 0xa1, 0x65, 0x20, 0x5f, 0x11, 0x8a, 0x0e, 0x5a, 0x72, 0x06, 0xaf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x58, 0xc4, 0x1f, 0x3c, 0xf1, 0x0d, 0x7a, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb1, 0x08, 0xd9, 0x40, 0xce, 0x22, 0xf4, 0x6d, 0x50, 0x10, 0xcc, 0x6e, 0xf8, 0x72, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x58, 0x84, 0xc9, 0x40, 0xc6, 0x22, 0x4c, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x2c, 0xc2, 0x66, 0x20, 0x63, 0x11, 0x76, 0x07, 0x0b, 0x36, 0x42, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x45, 0x18, 0x0e, 0x64, 0x2c, 0xc2, 0xf2, 0xf0, 0xcc, 0x64, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb2, 0x08, 0xd9, 0xc1, 0xbb, 0x5a, 0xa2, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x2c, 0x42, 0x3e, 0x90, 0xb2, 0x08, 0xc3, 0x0d, 0x8a, 0x49, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x65, 0x11, 0x26, 0x03, 0x29, 0x8b, 0x30, 0x3a, 0x08, 0x23, 0xa0, 0x83, 0x84, 0xf4, 0xee, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x65, 0x11, 0xa6, 0x03, 0x29, 0x8b, 0x30, 0x3e, 0x68, 0x67, 0x18, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x16, 0x21, 0x3b, 0x78, 0x57, 0x4b, 0xf4, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x45, 0x08, 0x07, 0x72, 0x16, 0x61, 0xb0, 0xe1, 0x6d, 0x9d, 0x01, 0x5f, 0x2c, 0x8d, 0x6e, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x59, 0x84, 0xc5, 0x40, 0xce, 0x22, 0x8c, 0x0e, 0x52, 0x5f, 0xbb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x45, 0x58, 0x0d, 0xe4, 0x2c, 0x42, 0xdd, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x45, 0x18, 0x0e, 0xe4, 0x2c, 0x42, 0xc1, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x45, 0x98, 0x0e, 0xe4, 0x2c, 0xc2, 0xf6, 0xf0, 0xe0, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x2c, 0xc2, 0x78, 0x20, 0x67, 0x11, 0xf6, 0x07, 0x45, 0x96, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb3, 0x08, 0x0d, 0x03, 0x39, 0x8b, 0xd0, 0x71, 0xd0, 0xce, 0x30, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x2c, 0x42, 0xc9, 0x40, 0xce, 0x22, 0xb4, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x59, 0x84, 0x96, 0x81, 0x9c, 0x45, 0x28, 0x3a, 0x28, 0xb4, 0x7b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x45, 0x68, 0x1a, 0xc8, 0x59, 0x84, 0xb2, 0x83, 0x22, 0xcb, 0xb4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6b, 0x11, 0x7f, 0xf0, 0xc4, 0x37, 0xe8, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x8b, 0x90, 0x0d, 0x64, 0x2d, 0xc2, 0x74, 0xc3, 0xe7, 0x2e, 0x1b, 0xac, 0xf7, 0xd4, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x45, 0xc8, 0x0f, 0xde, 0x64, 0x16, 0xbd, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6b, 0x11, 0x06, 0x03, 0x59, 0x8b, 0xb0, 0x39, 0x28, 0x88, 0x96, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x45, 0x18, 0x0d, 0x64, 0x2d, 0xc2, 0xea, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x16, 0x61, 0x36, 0x90, 0xb5, 0x08, 0xcb, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x61, 0x75, 0x72, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xda, 0x22, 0xfe, 0xe0, 0x89, 0x6f, 0xd0, 0x1b, 0x9c, 0x1c, 0xe4, 0x36, 0x58, 0xf9, 0xb0, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x2d, 0xc2, 0x60, 0x20, 0x6d, 0x11, 0x56, 0x1b, 0xac, 0x02, 0x93, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x45, 0x98, 0x1c, 0x3c, 0x0f, 0x2f, 0xfa, 0x20, 0x15, 0xfb, 0x77, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6f, 0x11, 0x92, 0x81, 0xbc, 0x45, 0xc8, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x2d, 0x42, 0x34, 0x90, 0xb7, 0x08, 0xe1, 0xc1, 0xda, 0x99, 0xbd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6f, 0x11, 0xd2, 0x81, 0xbc, 0x45, 0x88, 0x0f, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x5b, 0x84, 0xe9, 0x40, 0xe6, 0x22, 0x14, 0x6f, 0x50, 0x18, 0xaa, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x8b, 0x30, 0x1f, 0xc8, 0x5b, 0x84, 0x82, 0x83, 0x65, 0x4e, 0xb2, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb8, 0x08, 0xcb, 0x83, 0x77, 0x19, 0x46, 0x6f, 0x50, 0x74, 0x1a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x8b, 0xb0, 0x1e, 0x48, 0x5c, 0x84, 0x86, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe2, 0x22, 0x74, 0x0c, 0x24, 0x2e, 0x42, 0xdf, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x45, 0x28, 0x19, 0x48, 0x5c, 0x84, 0xa2, 0x83, 0x34, 0xa7, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x71, 0x11, 0x9a, 0x06, 0x12, 0x17, 0xa1, 0xec, 0xa0, 0xd8, 0x56, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x17, 0xa1, 0x6d, 0x20, 0x71, 0x11, 0xea, 0x0e, 0x0e, 0x0b, 0x6c, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe6, 0x22, 0x2c, 0x0f, 0xde, 0x65, 0x18, 0xbd, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x73, 0x11, 0xa6, 0x03, 0x99, 0x8b, 0x30, 0x3f, 0x68, 0x99, 0x89, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x5c, 0x84, 0xfd, 0x40, 0xe6, 0x22, 0xd4, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x5c, 0x84, 0x82, 0x81, 0xcc, 0x45, 0x68, 0x38, 0x3c, 0x78, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x2e, 0x42, 0xc5, 0x40, 0xe6, 0x22, 0xb4, 0x1c, 0xa4, 0x62, 0xff, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x2e, 0x42, 0xcf, 0x40, 0xe6, 0x22, 0xf4, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x5c, 0x84, 0xa2, 0x81, 0xcc, 0x45, 0x28, 0x3b, 0x78, 0x49, 0xb2, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xb9, 0x08, 0x6d, 0x03, 0x99, 0x8b, 0x50, 0xbb, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x03, 0x0b, 0x00, 0x20, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x77, 0x11, 0x92, 0x81, 0xdc, 0x45, 0x18, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x5d, 0x84, 0x68, 0x20, 0x77, 0x11, 0xc2, 0x83, 0x73, 0x6e, 0xca, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbb, 0x08, 0xe9, 0x40, 0xee, 0x22, 0xac, 0x36, 0x08, 0x36, 0xd3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x77, 0x11, 0xf2, 0x81, 0xdc, 0x45, 0x58, 0x1c, 0xa4, 0x6c, 0x31, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0x8b, 0x30, 0x19, 0xc8, 0x5d, 0x84, 0xd1, 0xc1, 0xc2, 0xe4, 0xbe, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x45, 0x98, 0x0d, 0xe4, 0x2e, 0xc2, 0xee, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x45, 0x98, 0x0e, 0xe4, 0x2e, 0xc2, 0x7e, 0x83, 0x55, 0x60, 0xb2, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbb, 0x08, 0xe3, 0x83, 0xb7, 0x13, 0x47, 0x1f, 0x24, 0x04, 0xa6, 0xae, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x2f, 0x42, 0x32, 0x90, 0xbc, 0x08, 0xf9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x45, 0x88, 0x06, 0x92, 0x17, 0x21, 0x3c, 0x38, 0xea, 0x9b, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x8b, 0x90, 0x0e, 0x24, 0x2f, 0x42, 0x7c, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf2, 0x22, 0x4c, 0x07, 0x92, 0x17, 0x61, 0xbd, 0xc1, 0x2a, 0x30, 0xd9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x5e, 0x84, 0xf1, 0xc1, 0x93, 0xa5, 0xa3, 0x0f, 0x8f, 0xc9, 0xac, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x2f, 0x42, 0x32, 0x90, 0xbd, 0x08, 0xf9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x45, 0x88, 0x06, 0xb2, 0x17, 0x21, 0x3c, 0x38, 0xed, 0x9d, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x8b, 0x90, 0x0e, 0x64, 0x2f, 0x42, 0x7c, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf6, 0x22, 0x4c, 0x07, 0xb2, 0x17, 0x61, 0xbe, 0xe1, 0xeb, 0x97, 0x0d, 0x1f, 0xc2, 0x6c, 0xf8, 0xfa, 0x65, 0xc3, 0x87, 0x30, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbd, 0x08, 0xeb, 0x83, 0x27, 0x82, 0x47, 0x1f, 0x1e, 0xbc, 0x59, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x5f, 0x84, 0x64, 0x20, 0x7d, 0x11, 0x26, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x17, 0x21, 0x1a, 0x48, 0x5f, 0x84, 0xf0, 0xe0, 0xa8, 0x75, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x2f, 0x42, 0x3a, 0x90, 0xbe, 0x08, 0xf9, 0xc1, 0x51, 0xdf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x5f, 0x84, 0xc1, 0x40, 0xfa, 0x22, 0x2c, 0x0e, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x5f, 0x84, 0xe9, 0x40, 0xfa, 0x22, 0xcc, 0x37, 0x58, 0x05, 0x26, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x8b, 0x30, 0x3e, 0x78, 0x8f, 0x7c, 0xf4, 0x41, 0xea, 0x69, 0xec, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfe, 0x22, 0x24, 0x03, 0xf9, 0x8b, 0x30, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xbf, 0x08, 0xd1, 0x40, 0xfe, 0x22, 0x84, 0x07, 0x47, 0xad, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7f, 0x11, 0xd2, 0x81, 0xfc, 0x45, 0xc8, 0x0f, 0x96, 0xc4, 0x04, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x8b, 0x30, 0x18, 0xc8, 0x5f, 0x84, 0xc5, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x8b, 0x30, 0x1d, 0xc8, 0x5f, 0x84, 0xfd, 0x06, 0xab, 0xc0, 0x64, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7f, 0x11, 0xc6, 0x07, 0x8f, 0x17, 0x90, 0x3e, 0x48, 0x08, 0x4c, 0x5d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x60, 0x84, 0x64, 0x20, 0x81, 0x11, 0x56, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x18, 0x21, 0x1a, 0x48, 0x60, 0x84, 0xc9, 0x06, 0xc1, 0x66, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x30, 0x42, 0x38, 0x90, 0xc0, 0x08, 0xf1, 0xc1, 0x99, 0xd3, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x60, 0x84, 0x7c, 0x20, 0x81, 0x11, 0x16, 0x07, 0xc7, 0x62, 0xd7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x46, 0xd8, 0x0c, 0x24, 0x30, 0xc2, 0xe8, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x46, 0x98, 0x0e, 0x24, 0x30, 0xc2, 0x7e, 0x83, 0x55, 0x60, 0xb2, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc0, 0x08, 0xe3, 0x83, 0xb7, 0x59, 0x48, 0x1f, 0x24, 0x04, 0xa6, 0xae, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x30, 0x42, 0x32, 0x90, 0xc1, 0x08, 0x93, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0x8c, 0x10, 0x0d, 0x64, 0x30, 0x42, 0x78, 0xb0, 0x30, 0xb9, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x60, 0x84, 0x74, 0x20, 0x83, 0x11, 0xf2, 0x83, 0xa5, 0x5c, 0x86, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x06, 0x23, 0x0c, 0x06, 0x32, 0x18, 0x61, 0x71, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x06, 0x23, 0x4c, 0x07, 0x32, 0x18, 0x61, 0xbe, 0xc1, 0x2a, 0x30, 0xd9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x60, 0x84, 0xf1, 0xc1, 0x53, 0x4e, 0xa4, 0x0f, 0x0e, 0xaf, 0x72, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x8c, 0x90, 0x0c, 0xa4, 0x30, 0xc2, 0x64, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0a, 0x23, 0x44, 0x03, 0x29, 0x8c, 0x10, 0x1e, 0x2c, 0x4c, 0xee, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x18, 0x21, 0x1d, 0x48, 0x61, 0x84, 0xfc, 0x60, 0x49, 0x4c, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc2, 0x08, 0x83, 0x81, 0x14, 0x46, 0x58, 0x1c, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc2, 0x08, 0xd3, 0x81, 0x14, 0x46, 0x98, 0x6f, 0xb0, 0x0a, 0x4c, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x18, 0x61, 0x7c, 0xf0, 0xf0, 0x1b, 0xe9, 0x83, 0xd4, 0xd3, 0xd8, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x46, 0x48, 0x06, 0x72, 0x18, 0x61, 0xb2, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x87, 0x11, 0xa2, 0x81, 0x1c, 0x46, 0x08, 0x0f, 0x16, 0x26, 0xf7, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x8c, 0x90, 0x0e, 0xe4, 0x30, 0x42, 0x7e, 0x70, 0xce, 0x4d, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x18, 0x61, 0x30, 0x90, 0xc3, 0x08, 0x8b, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x18, 0x61, 0x3a, 0x90, 0xc3, 0x08, 0xf3, 0x0d, 0x56, 0x81, 0xc9, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0e, 0x23, 0x8c, 0x0f, 0x5e, 0x89, 0x24, 0x7d, 0x90, 0x02, 0x9d, 0xba, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc4, 0x08, 0xc9, 0x40, 0x12, 0x23, 0x4c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x31, 0x42, 0x34, 0x90, 0xc4, 0x08, 0xe1, 0xc1, 0xc2, 0xe4, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x89, 0x11, 0xd2, 0x81, 0x24, 0x46, 0xc8, 0x0f, 0x8e, 0xc5, 0xae, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x23, 0x0c, 0x06, 0x92, 0x18, 0x61, 0x71, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x12, 0x23, 0x4c, 0x07, 0x92, 0x18, 0x61, 0xbf, 0xc1, 0x2a, 0x30, 0xd9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x62, 0x84, 0xf1, 0xc1, 0x93, 0xb2, 0xa4, 0x0f, 0x12, 0x02, 0x53, 0x57, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x18, 0x21, 0x19, 0x48, 0x63, 0x84, 0xc9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x46, 0x88, 0x06, 0xd2, 0x18, 0x21, 0x3c, 0x48, 0x08, 0x33, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x18, 0x21, 0x1d, 0x48, 0x63, 0x84, 0xfc, 0x60, 0xed, 0xcc, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc6, 0x08, 0x83, 0x81, 0x34, 0x46, 0x58, 0x1c, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xc6, 0x08, 0xd3, 0x81, 0x34, 0x46, 0xa8, 0xdd, 0x60, 0x99, 0x93, 0xec, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x31, 0xc2, 0xf8, 0xe0, 0x01, 0x6a, 0xd2, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x18, 0x61, 0x3d, 0x90, 0xc6, 0x08, 0x0d, 0x07, 0xcb, 0x2a, 0x41, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x46, 0xa8, 0x18, 0x48, 0x63, 0x84, 0xa2, 0x0d, 0x0f, 0x4a, 0x6e, 0xb0, 0x22, 0xf7, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x18, 0xa1, 0xe6, 0xe0, 0x71, 0x72, 0xd2, 0x07, 0x2b, 0x16, 0x0f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x46, 0x68, 0x1a, 0x48, 0x63, 0x84, 0xd6, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x8c, 0x50, 0x35, 0x90, 0xc6, 0x08, 0x75, 0x07, 0xaf, 0x3d, 0x8a, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x18, 0xa1, 0x6f, 0x20, 0x8d, 0x11, 0x0a, 0x0f, 0x8a, 0x9c, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x8d, 0x11, 0x1a, 0x07, 0xd2, 0x18, 0xa1, 0xf4, 0x20, 0x15, 0xfb, 0xb7, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x19, 0x21, 0x19, 0x48, 0x64, 0x84, 0xd5, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x46, 0x88, 0x06, 0x12, 0x19, 0x21, 0x3c, 0x38, 0xfd, 0xb8, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x8c, 0x90, 0x0e, 0x24, 0x32, 0x42, 0x7e, 0x90, 0xb2, 0xc5, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x32, 0xc2, 0x60, 0x20, 0x91, 0x11, 0x26, 0x07, 0x4b, 0x62, 0x02, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x46, 0xd8, 0x0c, 0x24, 0x32, 0xc2, 0xe8, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x46, 0x98, 0x0e, 0xa4, 0x33, 0xc2, 0x9d, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x91, 0x11, 0xe6, 0x03, 0x89, 0x8c, 0x50, 0x70, 0xb0, 0xcc, 0x49, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x19, 0x61, 0x79, 0xf0, 0xe6, 0x48, 0xe9, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x93, 0x11, 0xd6, 0x03, 0x99, 0x8c, 0xd0, 0x70, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x64, 0x84, 0x8e, 0x81, 0x4c, 0x46, 0xe8, 0x39, 0x58, 0x8e, 0x2c, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0x8c, 0xb0, 0x3c, 0x78, 0x73, 0xa4, 0xf4, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xca, 0x08, 0xeb, 0x81, 0x54, 0x46, 0x68, 0x38, 0x68, 0x3f, 0x3d, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x65, 0x84, 0xed, 0x40, 0x2e, 0x23, 0xb4, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x65, 0x84, 0xf1, 0x40, 0x2e, 0x23, 0x14, 0x6c, 0x78, 0x5b, 0xe7, 0x60, 0x35, 0xfc, 0xe7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xcb, 0x08, 0x0d, 0x03, 0xb9, 0x8c, 0x50, 0x71, 0x50, 0x54, 0x8a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0x8c, 0xd0, 0x31, 0x90, 0xcb, 0x08, 0xe5, 0x1b, 0x2c, 0xec, 0x5c, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x46, 0xa8, 0x19, 0xc8, 0x65, 0x84, 0xee, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0x8c, 0xd0, 0x33, 0x90, 0xcb, 0x08, 0x5d, 0x07, 0xcb, 0x91, 0x85, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x46, 0x28, 0x1b, 0xc8, 0x65, 0x84, 0xea, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0x8c, 0xd0, 0x36, 0x90, 0xcb, 0x08, 0x8d, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0x94, 0x16, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xcb, 0x08, 0x95, 0x03, 0xb9, 0x8c, 0xd0, 0x7a, 0xb0, 0xae, 0x0b, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x65, 0x84, 0xda, 0x81, 0x5c, 0x46, 0x68, 0x3e, 0x58, 0x6f, 0x06, 0x57, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x23, 0x2c, 0x0f, 0xde, 0x1c, 0x29, 0xbd, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x33, 0xc2, 0x7a, 0x20, 0x99, 0x11, 0x1a, 0x0e, 0x5a, 0x66, 0x22, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x19, 0xa1, 0x63, 0x20, 0x99, 0x11, 0x9a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x33, 0x42, 0xc9, 0x40, 0x32, 0x23, 0xb4, 0x1c, 0x1e, 0xbc, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x19, 0xa1, 0x66, 0x20, 0x99, 0x11, 0x8a, 0x0e, 0x52, 0x4f, 0x63, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x46, 0x58, 0x1e, 0xbc, 0x39, 0x52, 0x7a, 0x83, 0xa2, 0xd3, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x66, 0x84, 0xf5, 0x40, 0x36, 0x23, 0x34, 0x1c, 0xbc, 0x1d, 0x55, 0x7a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x66, 0x84, 0x8e, 0x81, 0x6c, 0x46, 0x28, 0x39, 0x28, 0x2a, 0xc5, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9d, 0x11, 0x96, 0x07, 0x6f, 0x8e, 0x94, 0xde, 0x60, 0x61, 0xe7, 0xd2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x33, 0xc2, 0x78, 0x20, 0x9d, 0x11, 0xde, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x67, 0x84, 0xf5, 0x40, 0x3a, 0x23, 0x34, 0x1c, 0x2c, 0x47, 0x16, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x19, 0xa1, 0x62, 0x20, 0x9d, 0x11, 0xce, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x67, 0x84, 0x8e, 0x81, 0x74, 0x46, 0xe8, 0x39, 0x38, 0x11, 0xb4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x8c, 0x50, 0x34, 0x90, 0xce, 0x08, 0xb5, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x19, 0xa1, 0x69, 0x20, 0x9d, 0x11, 0xda, 0x0e, 0x5e, 0xa4, 0x2b, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x33, 0x42, 0xdd, 0x40, 0x3a, 0x23, 0x34, 0x1e, 0x2c, 0x82, 0x77, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x19, 0xa1, 0x72, 0x20, 0x9d, 0x11, 0x5a, 0x0f, 0x56, 0x1c, 0xc9, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x33, 0x42, 0xef, 0x40, 0x3a, 0x23, 0x7c, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xce, 0x08, 0xc5, 0x03, 0xe9, 0x8c, 0xd0, 0x7d, 0xb0, 0x66, 0xe3, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x67, 0x84, 0xf2, 0x81, 0x74, 0x46, 0xb8, 0xb2, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x9d, 0x11, 0xda, 0x07, 0xd2, 0x19, 0xe1, 0xc1, 0xc1, 0x8b, 0x74, 0xa5, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x46, 0xb8, 0x30, 0x90, 0xce, 0x08, 0x2f, 0x0e, 0xd6, 0x75, 0xc1, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x8c, 0x70, 0x63, 0x20, 0x9d, 0x11, 0x9e, 0x1c, 0xac, 0x37, 0x83, 0xab, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x68, 0x84, 0x64, 0x20, 0xa1, 0x11, 0x26, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x1a, 0x21, 0x1a, 0x48, 0x68, 0x84, 0xf0, 0xe0, 0xf4, 0xe3, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x34, 0x42, 0x3a, 0x90, 0xd0, 0x08, 0xf9, 0x41, 0xca, 0x16, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd0, 0x08, 0x83, 0x81, 0x84, 0x46, 0x58, 0x1c, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd0, 0x08, 0xd3, 0x81, 0xa4, 0x46, 0x38, 0xb4, 0x41, 0x61, 0xa8, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x34, 0xc2, 0x7c, 0x20, 0xa1, 0x11, 0x0a, 0x0e, 0x96, 0x39, 0xc9, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x46, 0x23, 0x2c, 0x0f, 0x1e, 0xf0, 0x30, 0xbd, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x34, 0xc2, 0x7a, 0x20, 0xa3, 0x11, 0x1a, 0x0e, 0x96, 0x55, 0x82, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0x8d, 0xd0, 0x31, 0x90, 0xd1, 0x08, 0x3d, 0x07, 0xcb, 0x91, 0x85, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa5, 0x11, 0x96, 0x07, 0x0f, 0x78, 0x98, 0xde, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x1a, 0x61, 0x3d, 0x90, 0xd2, 0x08, 0x0d, 0x07, 0x2d, 0x33, 0x11, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x8d, 0xd0, 0x31, 0x90, 0xd2, 0x08, 0x4d, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x1a, 0xa1, 0x64, 0x20, 0xa5, 0x11, 0x5a, 0x0e, 0x0f, 0xde, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x8d, 0x50, 0x33, 0x90, 0xd2, 0x08, 0x45, 0x07, 0x29, 0xd0, 0xa9, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x23, 0x2c, 0x0f, 0x1e, 0xf0, 0x30, 0xbd, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x34, 0xc2, 0x7a, 0x20, 0xa7, 0x11, 0x1a, 0x0e, 0xde, 0x8e, 0x2a, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x34, 0x42, 0xc7, 0x40, 0x4e, 0x23, 0x94, 0x1c, 0x14, 0x95, 0xe2, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd4, 0x08, 0xcb, 0x83, 0x07, 0x3c, 0x4c, 0x6f, 0xb0, 0xb0, 0x73, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x1a, 0x61, 0x3c, 0x90, 0xd4, 0x08, 0x7f, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x35, 0xc2, 0x7a, 0x20, 0xa9, 0x11, 0x1a, 0x0e, 0x96, 0x23, 0x0b, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x8d, 0x50, 0x31, 0x90, 0xd4, 0x08, 0x77, 0x36, 0x48, 0x32, 0x20, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x1a, 0xa1, 0x64, 0x20, 0xa9, 0x11, 0x8a, 0x0e, 0x4e, 0x04, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x23, 0x34, 0x0d, 0x24, 0x35, 0x42, 0xdf, 0x86, 0x67, 0xf1, 0x06, 0x6d, 0x83, 0xfb, 0x83, 0x7f, 0x07, 0xeb, 0x09, 0xbe, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x46, 0x28, 0x1c, 0x48, 0x6a, 0x84, 0xfa, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x8d, 0xd0, 0x38, 0x90, 0xd4, 0x08, 0xad, 0x07, 0x2f, 0xd2, 0x95, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x1a, 0xa1, 0x76, 0x20, 0xa9, 0x11, 0x9a, 0x0f, 0x16, 0xc1, 0xbb, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x8d, 0x50, 0x3d, 0x90, 0xd4, 0x08, 0xed, 0x07, 0x2b, 0x8e, 0xe4, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x1a, 0xa1, 0x7f, 0x20, 0xa9, 0x11, 0xde, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x6a, 0x84, 0x03, 0x03, 0x49, 0x8d, 0x70, 0xe2, 0xe0, 0x45, 0xba, 0xd2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x23, 0xbc, 0x18, 0x48, 0x6a, 0x84, 0x23, 0x07, 0xeb, 0xba, 0xe0, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x46, 0x78, 0x32, 0x90, 0xd4, 0x08, 0x67, 0x0e, 0xd6, 0x9b, 0xc1, 0x55, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x8d, 0x90, 0x0c, 0xa4, 0x35, 0x42, 0xbe, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xad, 0x11, 0xa2, 0x81, 0xb4, 0x46, 0x08, 0x0f, 0x4e, 0x3f, 0xae, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x23, 0xa4, 0x03, 0x69, 0x8d, 0x10, 0x1f, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd6, 0x08, 0xd3, 0x81, 0xc4, 0x46, 0x28, 0xde, 0xa0, 0x30, 0x54, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x1a, 0x61, 0x3e, 0x90, 0xd6, 0x08, 0x05, 0x07, 0xcb, 0x9c, 0x64, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xaf, 0x11, 0x96, 0x07, 0x0f, 0x28, 0x9b, 0xde, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x1a, 0x61, 0x3d, 0x90, 0xd7, 0x08, 0x0d, 0x07, 0xcb, 0x2a, 0x41, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x46, 0xe8, 0x18, 0xc8, 0x6b, 0x84, 0xee, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x8d, 0x50, 0x32, 0x90, 0xd7, 0x08, 0x45, 0x07, 0xe7, 0xdc, 0xb2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xaf, 0x11, 0x9a, 0x06, 0xf2, 0x1a, 0xa1, 0xed, 0x60, 0x95, 0x13, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd7, 0x08, 0x75, 0x03, 0x79, 0x8d, 0x50, 0xbd, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xaf, 0x11, 0xfa, 0x06, 0xf2, 0x1a, 0xa1, 0xf3, 0x20, 0xcd, 0x29, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x6b, 0x84, 0xd2, 0x81, 0xbc, 0x46, 0xe8, 0x3d, 0x28, 0xb6, 0x95, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x46, 0x28, 0x1e, 0xc8, 0x6b, 0x84, 0xe6, 0x83, 0xc3, 0x02, 0x5b, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x62, 0x23, 0x2c, 0x0f, 0x1e, 0x50, 0x36, 0xbd, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb1, 0x11, 0xa6, 0x03, 0x89, 0x8d, 0x30, 0x3f, 0x68, 0x99, 0x89, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x6c, 0x84, 0xfd, 0x40, 0x62, 0x23, 0xd4, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x6c, 0x84, 0x82, 0x81, 0xc4, 0x46, 0x68, 0x38, 0x3c, 0x78, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x36, 0x42, 0xc5, 0x40, 0x62, 0x23, 0xb4, 0x1c, 0xa4, 0x62, 0xff, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x36, 0x42, 0xcf, 0x40, 0x62, 0x23, 0xf4, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x6c, 0x84, 0xa2, 0x81, 0xc4, 0x46, 0x28, 0x3b, 0x78, 0x49, 0xb2, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xd8, 0x08, 0x6d, 0x03, 0x89, 0x8d, 0x50, 0x7b, 0xf0, 0x8a, 0xd8, 0xe8, 0x6a, 0x35, 0x78, 0x0a, 0x52, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x1e, 0xe2, 0x07, 0x12, 0x10, 0x21, 0xdf, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7a, 0x08, 0xd9, 0x40, 0xea, 0x21, 0x4c, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x1e, 0x42, 0x38, 0x90, 0x7a, 0x08, 0x8b, 0x0d, 0x7f, 0x2e, 0x6d, 0x90, 0x34, 0xdb, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0x87, 0x30, 0x38, 0x78, 0x25, 0xe8, 0xf4, 0xe1, 0x83, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf5, 0x10, 0x26, 0x03, 0xa9, 0x87, 0xb0, 0xdc, 0xf0, 0xe7, 0xd2, 0x06, 0xe5, 0xe5, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x1e, 0xc2, 0xec, 0xe0, 0x85, 0xa6, 0xd3, 0x07, 0x65, 0x96, 0x6e, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7b, 0x88, 0x3f, 0x78, 0xca, 0xe6, 0xf4, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x43, 0xc8, 0x06, 0x72, 0x0f, 0x61, 0xb3, 0xe1, 0xcf, 0xa5, 0x01, 0xaf, 0xcc, 0x2d, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdc, 0x43, 0xc8, 0x0f, 0x9e, 0xf2, 0x3a, 0x7d, 0xf0, 0xdc, 0x7b, 0x90, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x3e, 0xc4, 0x1f, 0x3c, 0x65, 0x73, 0x7a, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf2, 0x21, 0x64, 0x03, 0xc9, 0x87, 0xb0, 0xd9, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7c, 0x08, 0xe1, 0x40, 0xf2, 0x21, 0xa4, 0x87, 0x1f, 0x6a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x43, 0x88, 0x07, 0x92, 0x0f, 0x61, 0x72, 0xf0, 0xdc, 0x7b, 0x90, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xfb, 0x10, 0x7f, 0xf0, 0x94, 0xcd, 0xe9, 0x0d, 0x8a, 0x0e, 0xda, 0xc1, 0xc3, 0x0d, 0x5e, 0x08, 0x98, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x1f, 0xc2, 0x66, 0x20, 0xfb, 0x10, 0x3a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x1f, 0xc2, 0x68, 0x20, 0xfb, 0x10, 0xe6, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x0f, 0x61, 0x35, 0x90, 0x7d, 0x08, 0xcb, 0x83, 0x97, 0x24, 0xdb, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x87, 0x30, 0x1d, 0xc8, 0x3e, 0x84, 0xf5, 0xc1, 0x9a, 0x2c, 0xcd, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x43, 0xd8, 0x0f, 0x64, 0x1f, 0x42, 0xc5, 0xc1, 0x33, 0x00, 0x53, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x43, 0xfc, 0xc1, 0x53, 0x36, 0xa7, 0x37, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x1f, 0x42, 0x36, 0x90, 0x7e, 0x08, 0x25, 0x1b, 0x3e, 0x77, 0x59, 0xc3, 0xc4, 0x0d, 0x2e, 0x06, 0xff, 0x76, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfa, 0x21, 0x4c, 0x0e, 0x5e, 0x47, 0x3d, 0xbd, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xfd, 0x10, 0x36, 0x03, 0xe9, 0x87, 0xd0, 0xb0, 0x41, 0x59, 0xf2, 0xbe, 0x06, 0x89, 0xd5, 0xbd, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x87, 0x30, 0x1d, 0x48, 0x3f, 0x84, 0xf1, 0x41, 0xda, 0xdf, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7e, 0x08, 0xeb, 0x81, 0xf4, 0x43, 0x28, 0x38, 0x78, 0x06, 0x60, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfa, 0x21, 0x54, 0x0c, 0xa4, 0x1f, 0x42, 0xc7, 0xe1, 0x69, 0x9d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xff, 0x10, 0x7f, 0xf0, 0x94, 0xcd, 0xe9, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x87, 0x90, 0x0d, 0xe4, 0x1f, 0xc2, 0x72, 0xc3, 0x23, 0xac, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfe, 0x21, 0xa4, 0x03, 0xf9, 0x87, 0xb0, 0xd8, 0xf0, 0x36, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x1f, 0x42, 0x7c, 0xf0, 0x12, 0xf6, 0xe9, 0x83, 0xd4, 0xd7, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xff, 0x10, 0x26, 0x03, 0xf9, 0x87, 0x30, 0xdc, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x7f, 0x08, 0xa3, 0x81, 0xfc, 0x43, 0x58, 0x1d, 0x1e, 0xbc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x43, 0x98, 0x0d, 0xe4, 0x1f, 0xc2, 0xee, 0xf0, 0x5e, 0x50, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfe, 0x21, 0x6c, 0x07, 0xf2, 0x0f, 0x61, 0x7c, 0x10, 0x80, 0x6c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x80, 0x88, 0x3f, 0x78, 0xca, 0xe6, 0xf4, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x04, 0x44, 0x08, 0x06, 0x12, 0x10, 0x21, 0x39, 0xbc, 0x17, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x20, 0x42, 0x34, 0x90, 0x80, 0x08, 0xf1, 0x86, 0xb7, 0x75, 0x06, 0x0f, 0x0f, 0x92, 0x05, 0x5f, 0x5b, 0x0d, 0x5e, 0x2f, 0x1d, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x90, 0xf8, 0x81, 0x4c, 0x48, 0x48, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x40, 0x42, 0x36, 0x90, 0x03, 0x09, 0x25, 0x1b, 0x84, 0xd3, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x03, 0x09, 0xf1, 0x40, 0x0e, 0x24, 0x4c, 0x0e, 0x9e, 0x7b, 0x0f, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x90, 0xb0, 0x19, 0xc8, 0x81, 0x84, 0x8e, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x90, 0x30, 0x1a, 0xc8, 0x81, 0x84, 0xf5, 0x86, 0x7f, 0xe7, 0x37, 0x78, 0x6b, 0x7b, 0xf0, 0xc1, 0x53, 0x77, 0x8a, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x48, 0x98, 0x0f, 0xe4, 0x40, 0x42, 0xc5, 0xc1, 0x73, 0xef, 0x41, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x48, 0xfc, 0xc1, 0xc3, 0x0b, 0xa8, 0x37, 0x28, 0x48, 0x63, 0x07, 0x3c, 0xb4, 0x37, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x82, 0x84, 0xc1, 0x40, 0x12, 0x24, 0x0c, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x41, 0xc2, 0x62, 0x20, 0x09, 0x12, 0x56, 0x07, 0x2f, 0x49, 0xb6, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x20, 0x61, 0x36, 0x90, 0x04, 0x09, 0xbb, 0x83, 0xf3, 0x02, 0x4d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x05, 0x89, 0x3f, 0x78, 0x78, 0x01, 0xf5, 0x06, 0x49, 0x06, 0x84, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x16, 0x24, 0x64, 0x03, 0x59, 0x90, 0x90, 0x1f, 0xb4, 0x41, 0x01, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x41, 0x42, 0x32, 0x90, 0x06, 0x09, 0x35, 0x1b, 0x24, 0x19, 0x10, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x90, 0x90, 0x0d, 0xa4, 0x41, 0x42, 0x7e, 0xd0, 0x7e, 0x7a, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x06, 0x09, 0x83, 0x81, 0x34, 0x48, 0xd8, 0x6c, 0x78, 0x5b, 0x67, 0xc0, 0x43, 0x7b, 0x83, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x20, 0x61, 0x34, 0x90, 0x06, 0x09, 0x05, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x20, 0x61, 0x35, 0x90, 0x06, 0x09, 0xcb, 0x83, 0x05, 0x1b, 0xa1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1a, 0x24, 0x4c, 0x07, 0xd2, 0x20, 0x61, 0xbf, 0xe1, 0x8d, 0xbb, 0x83, 0xa7, 0x64, 0x03, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x41, 0x42, 0xc3, 0x40, 0x1a, 0x24, 0xb4, 0x1c, 0xb4, 0x84, 0xc1, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x07, 0x09, 0xc9, 0x40, 0x1e, 0x24, 0xb4, 0x6f, 0x90, 0x64, 0x40, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x41, 0x42, 0x36, 0x90, 0x07, 0x09, 0xf9, 0x41, 0xfb, 0xe9, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1e, 0x24, 0x0c, 0x06, 0xf2, 0x20, 0x61, 0x73, 0xf0, 0x96, 0x17, 0xea, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0f, 0x12, 0x46, 0x03, 0x79, 0x90, 0x50, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0f, 0x12, 0x56, 0x03, 0x79, 0x90, 0xb0, 0x3c, 0x58, 0xb0, 0x11, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x41, 0xc2, 0x74, 0x20, 0x0f, 0x12, 0xf6, 0x1b, 0xde, 0xb8, 0x3b, 0x78, 0x1b, 0x2e, 0x70, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1e, 0x24, 0x34, 0x0c, 0xe4, 0x41, 0x42, 0xcb, 0x41, 0x4b, 0x18, 0x9c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1e, 0x24, 0xd4, 0x0c, 0xe4, 0x41, 0x42, 0xd5, 0xc1, 0xd9, 0x33, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x83, 0x84, 0xae, 0x81, 0x3c, 0x48, 0x28, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x07, 0x09, 0x65, 0x03, 0x79, 0x90, 0x50, 0x78, 0xd0, 0x32, 0x13, 0xe1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x07, 0x09, 0x8d, 0x03, 0x79, 0x90, 0x50, 0xbb, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0f, 0x12, 0x2a, 0x07, 0xf2, 0x20, 0xa1, 0xf3, 0xf0, 0xe0, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x07, 0x09, 0xa5, 0x03, 0x79, 0x90, 0xd0, 0x7a, 0x10, 0xb0, 0xac, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x90, 0xd0, 0x3b, 0x90, 0x07, 0x09, 0xdd, 0x1b, 0xde, 0xd6, 0x39, 0x78, 0xb2, 0xe0, 0x70, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x90, 0x90, 0x0c, 0x24, 0x42, 0x42, 0xe1, 0x06, 0x49, 0x06, 0x84, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x24, 0x64, 0x03, 0x89, 0x90, 0x90, 0x1f, 0xb4, 0x9f, 0x1e, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x42, 0xc2, 0x60, 0x20, 0x11, 0x12, 0x36, 0x07, 0x6f, 0x79, 0xa1, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x21, 0x61, 0x34, 0x90, 0x08, 0x09, 0x05, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x21, 0x61, 0x35, 0x90, 0x08, 0x09, 0xcb, 0x83, 0x05, 0x1b, 0xa1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x24, 0x4c, 0x07, 0x12, 0x21, 0x61, 0xbf, 0xe1, 0x8d, 0xbb, 0x83, 0xa7, 0x23, 0x63, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x42, 0x42, 0xc3, 0x40, 0x22, 0x24, 0xb4, 0x1c, 0xb4, 0x84, 0xc1, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x42, 0x42, 0xcd, 0x40, 0x22, 0x24, 0x54, 0x1d, 0xb4, 0x84, 0xc1, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x42, 0x42, 0xd7, 0x40, 0x22, 0x24, 0xf4, 0x1d, 0x9c, 0x3d, 0xe3, 0xea, 0x70, 0x8a, 0xad, 0xc1, 0xd2, 0x9c, 0xdb, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4e, 0xc4, 0x0f, 0x24, 0x28, 0xc2, 0x6c, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4e, 0x84, 0x6c, 0x20, 0x3b, 0x11, 0x86, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x13, 0x21, 0x1c, 0xc8, 0x4e, 0x84, 0xc5, 0x86, 0x3f, 0x97, 0x06, 0x67, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3b, 0x11, 0xe2, 0x83, 0x47, 0x1a, 0x52, 0x1f, 0x3c, 0x5d, 0xfc, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4e, 0x84, 0xc9, 0x40, 0x76, 0x22, 0xec, 0x36, 0xfc, 0xb9, 0x34, 0xb8, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x89, 0x30, 0x3a, 0x78, 0x17, 0x23, 0xf5, 0xc1, 0xd3, 0xc5, 0x9f, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x44, 0xfc, 0xc1, 0x1b, 0x02, 0xa9, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x27, 0x42, 0x36, 0x90, 0x9e, 0x08, 0x9b, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x65, 0x6e, 0xf9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x27, 0x42, 0x7e, 0xf0, 0x6a, 0x4a, 0xea, 0x83, 0xe7, 0xde, 0x83, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7e, 0x22, 0xfe, 0xe0, 0x0d, 0x81, 0xd4, 0x1b, 0x14, 0x1d, 0xb4, 0x83, 0x87, 0x1b, 0xbc, 0x10, 0x30, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4f, 0x84, 0xcd, 0x40, 0x7e, 0x22, 0xac, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x27, 0xc2, 0x68, 0x20, 0x3f, 0x11, 0x86, 0x1b, 0xde, 0xd6, 0xd9, 0xf0, 0xdc, 0x6a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7e, 0x22, 0x2c, 0x07, 0xf2, 0x13, 0x61, 0x7c, 0xf0, 0x0c, 0xc0, 0x94, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x41, 0x11, 0x7f, 0xf0, 0x86, 0x40, 0xea, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0x8a, 0x10, 0x0c, 0x24, 0x28, 0xc2, 0x62, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x82, 0x22, 0x64, 0x03, 0x09, 0x8a, 0x10, 0x1e, 0x9e, 0xd6, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x14, 0x21, 0x1d, 0x48, 0x50, 0x84, 0xf8, 0x20, 0xe5, 0xed, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x14, 0x21, 0x1f, 0x48, 0x50, 0x84, 0xc1, 0xc1, 0xf1, 0x93, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x50, 0x84, 0xc9, 0x40, 0x82, 0x22, 0xac, 0x0e, 0x9e, 0x01, 0x98, 0xd2, 0xe1, 0x14, 0x5b, 0x83, 0x93, 0x0a, 0xe9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x20, 0xe2, 0x07, 0x12, 0x11, 0xa1, 0x60, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x0e, 0x22, 0x64, 0x03, 0x39, 0x88, 0xb0, 0xdd, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x83, 0x08, 0xe1, 0x40, 0x0e, 0x22, 0x8c, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0x89, 0xbd, 0xc5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x83, 0x08, 0x83, 0x83, 0xf7, 0xf7, 0x52, 0x1f, 0xbe, 0x9d, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x10, 0x61, 0x35, 0x90, 0x83, 0x08, 0xd3, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xea, 0xf0, 0xe7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x20, 0xc2, 0xf2, 0xe0, 0xf5, 0xc3, 0xd4, 0x87, 0x1f, 0x6a, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x44, 0xfc, 0xc1, 0x13, 0x71, 0xa9, 0x37, 0x28, 0x48, 0x63, 0x37, 0x38, 0x23, 0xdf, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x88, 0x30, 0x18, 0x48, 0x42, 0x84, 0xf5, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x44, 0x58, 0x0c, 0x24, 0x21, 0xc2, 0xe8, 0xa0, 0x28, 0xfe, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x10, 0x61, 0x35, 0x90, 0x84, 0x08, 0xc3, 0x83, 0x07, 0xd2, 0x31, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x88, 0xb0, 0x1c, 0x48, 0x42, 0x84, 0xf1, 0xc1, 0x23, 0xc7, 0x5c, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x44, 0xfc, 0xc1, 0x13, 0x71, 0xa9, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x21, 0x42, 0x36, 0x90, 0x85, 0x08, 0x9b, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x65, 0x6e, 0xf9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x21, 0x42, 0x7e, 0xf0, 0x8a, 0x6d, 0xea, 0x83, 0xe7, 0xde, 0x83, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1a, 0x22, 0xfe, 0xe0, 0x89, 0xb8, 0xd4, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x10, 0x21, 0x1b, 0x48, 0x43, 0x84, 0xcd, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x44, 0x08, 0x07, 0xd2, 0x10, 0x21, 0x3d, 0xfc, 0x50, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x21, 0x42, 0x3c, 0x90, 0x86, 0x08, 0x93, 0x83, 0xe7, 0xde, 0x83, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x88, 0xf8, 0x83, 0x27, 0xe2, 0x52, 0x6f, 0x50, 0x74, 0xd0, 0x0e, 0x1e, 0x6e, 0xf0, 0x42, 0xc0, 0x94, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0f, 0x11, 0x36, 0x03, 0x79, 0x88, 0xd0, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x0f, 0x11, 0x46, 0x03, 0x79, 0x88, 0x30, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x87, 0x08, 0xab, 0x81, 0x3c, 0x44, 0x58, 0x1e, 0xbc, 0x24, 0xd9, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x43, 0x84, 0xe9, 0x40, 0x1e, 0x22, 0xac, 0x0f, 0x8e, 0x7b, 0x78, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x88, 0xb0, 0x1f, 0xc8, 0x43, 0x84, 0x8a, 0x83, 0x67, 0x00, 0xa6, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x88, 0xf8, 0x83, 0x27, 0xe2, 0x52, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x44, 0x84, 0x60, 0x20, 0x11, 0x11, 0xb6, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x11, 0x21, 0x19, 0x48, 0x44, 0x84, 0xf0, 0xa0, 0x24, 0x9a, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x11, 0x21, 0x1d, 0x48, 0x44, 0x84, 0xc1, 0xc1, 0x03, 0xe9, 0x98, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x44, 0x58, 0x0c, 0x24, 0x22, 0xc2, 0x6c, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x22, 0x22, 0x4c, 0x06, 0x12, 0x11, 0x61, 0x73, 0x78, 0x5a, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x44, 0x84, 0xd1, 0x40, 0x22, 0x22, 0xac, 0x0e, 0x8f, 0xc9, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x22, 0xc2, 0x6e, 0x20, 0x11, 0x11, 0xa6, 0x07, 0x8f, 0x1c, 0x73, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x44, 0x84, 0xf1, 0x40, 0x22, 0x22, 0xec, 0x0f, 0x9e, 0x01, 0x98, 0xd2, 0x6a, 0x70, 0x2e, 0x3a, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x44, 0xfc, 0x40, 0x6a, 0x22, 0x4c, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x44, 0xc8, 0x06, 0xd2, 0x12, 0x61, 0xb8, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x11, 0xc2, 0x81, 0xb4, 0x44, 0x58, 0x6c, 0xf8, 0x73, 0x69, 0x70, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x12, 0x21, 0x3e, 0x78, 0x28, 0x47, 0xf5, 0xc1, 0xd3, 0xc5, 0x9f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x44, 0x98, 0x0c, 0xa4, 0x25, 0xc2, 0x6e, 0xc3, 0x9f, 0x4b, 0x83, 0xcb, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x96, 0x08, 0xa3, 0x83, 0xb7, 0x89, 0x54, 0x1f, 0x3c, 0x5d, 0xfc, 0xb9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x4b, 0xc4, 0x1f, 0xbc, 0xe3, 0xa2, 0x7a, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5e, 0x22, 0x64, 0x03, 0x79, 0x89, 0xb0, 0xd9, 0xf0, 0xe7, 0xd2, 0x80, 0x57, 0xe6, 0x96, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5e, 0x22, 0xe4, 0x07, 0x2f, 0x57, 0xa9, 0x3e, 0x78, 0xee, 0x3d, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x26, 0xe2, 0x0f, 0xde, 0x71, 0x51, 0xbd, 0x41, 0xd1, 0x41, 0x3b, 0x78, 0xb8, 0xc1, 0x0b, 0x01, 0x53, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x44, 0xd8, 0x0c, 0x24, 0x26, 0xc2, 0x74, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x62, 0x22, 0x8c, 0x06, 0x12, 0x13, 0x61, 0x75, 0x90, 0xf2, 0x76, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x26, 0xc2, 0x6c, 0x20, 0x31, 0x11, 0x96, 0x07, 0xcf, 0x00, 0x4c, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x13, 0xf1, 0x07, 0xef, 0xb8, 0xa8, 0xde, 0xa0, 0xe8, 0xa0, 0x1d, 0x5c, 0xdc, 0xe0, 0x85, 0x80, 0x29, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x66, 0x22, 0x6c, 0x06, 0x32, 0x13, 0x61, 0xba, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x33, 0x11, 0x46, 0x03, 0x99, 0x89, 0xb0, 0x3a, 0x38, 0x7e, 0xf2, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x99, 0x89, 0x30, 0x1b, 0xc8, 0x4c, 0x84, 0xe5, 0xc1, 0x33, 0x00, 0x53, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x44, 0xfc, 0xc1, 0x3b, 0x2e, 0xaa, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x26, 0x42, 0x30, 0x90, 0x9a, 0x08, 0xe9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x44, 0x48, 0x06, 0x52, 0x13, 0x21, 0x3a, 0x3c, 0xad, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x26, 0x42, 0x36, 0x90, 0x9a, 0x08, 0xe1, 0xe1, 0xbd, 0xa0, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x44, 0x88, 0x07, 0x52, 0x13, 0x61, 0x71, 0xf0, 0x0c, 0xc0, 0x94, 0x56, 0x83, 0xe6, 0x29, 0xa4, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x9a, 0xa7, 0x90, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x43, 0x88, 0x07, 0x52, 0x0c, 0x61, 0xbf, 0x41, 0x38, 0x8d, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x86, 0xb0, 0x18, 0x48, 0x31, 0x84, 0xd5, 0xc1, 0x73, 0xef, 0x41, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc5, 0x10, 0x66, 0x03, 0x29, 0x86, 0x30, 0xdf, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x62, 0x08, 0xbb, 0x81, 0x14, 0x43, 0x18, 0x1e, 0x84, 0xe9, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x62, 0x08, 0xcb, 0x81, 0x14, 0x43, 0x58, 0x1f, 0x3c, 0xf7, 0x1e, 0xa4, 0xc3, 0x29, 0xb6, 0x86, 0xe7, 0x56, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xd9, 0x10, 0x3f, 0x90, 0x6e, 0x08, 0xa3, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x86, 0x90, 0x0d, 0x24, 0x1b, 0xc2, 0x66, 0xc3, 0x9f, 0x4b, 0x03, 0x5e, 0x99, 0x5b, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x86, 0x90, 0x1f, 0xbc, 0x3d, 0xad, 0xfa, 0xe0, 0xb9, 0xf7, 0x20, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x6d, 0x88, 0x3f, 0x78, 0xcd, 0x59, 0xf5, 0x86, 0x4f, 0x6c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6c, 0x43, 0xc8, 0x06, 0xb2, 0x0d, 0xa1, 0x64, 0xc3, 0xe7, 0x2e, 0x1b, 0x3c, 0xaf, 0x7a, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x0d, 0x61, 0x72, 0xf0, 0x54, 0xb9, 0xea, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x86, 0xb0, 0x19, 0xc8, 0x36, 0x84, 0x86, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xde, 0xbf, 0x3d, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x1b, 0xc2, 0x74, 0x20, 0xdb, 0x10, 0xc6, 0x07, 0x69, 0x7f, 0xaf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb6, 0x21, 0xac, 0x07, 0xb2, 0x0d, 0xa1, 0xe0, 0xe0, 0x19, 0x80, 0x29, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x86, 0x50, 0x31, 0x90, 0x6d, 0x08, 0x1d, 0x87, 0xc7, 0x64, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x43, 0xfc, 0xc1, 0x6b, 0xce, 0xaa, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x1b, 0x42, 0x30, 0x90, 0x6e, 0x08, 0xf1, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x43, 0x88, 0x06, 0xd2, 0x0d, 0x21, 0x3b, 0xbc, 0x17, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x86, 0x10, 0x0e, 0xa4, 0x1b, 0x42, 0x7a, 0x78, 0xf0, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x37, 0x84, 0x7c, 0x20, 0xdd, 0x10, 0x36, 0x07, 0xef, 0x12, 0xa0, 0x6e, 0xd6, 0xe0, 0x20, 0xcf, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0x8e, 0xf8, 0x81, 0xb4, 0x47, 0xa8, 0xdb, 0xa0, 0x94, 0x10, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x1d, 0x21, 0x1b, 0x48, 0x7a, 0x84, 0x74, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x37, 0x83, 0x7c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x23, 0xac, 0x06, 0x92, 0x1d, 0xa1, 0x61, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xb2, 0x23, 0xcc, 0x06, 0x92, 0x1d, 0x61, 0x7a, 0xd0, 0xca, 0x73, 0xc5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xec, 0x08, 0xdb, 0x81, 0x64, 0x47, 0x28, 0xd8, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0xe0, 0xd5, 0xe1, 0x25, 0xcd, 0x1a, 0x2c, 0xbc, 0xcc, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x47, 0x58, 0x0d, 0xe4, 0x3a, 0x42, 0xdd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x47, 0x98, 0x0d, 0xe4, 0x3a, 0x42, 0xcf, 0x86, 0x4f, 0x6c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5c, 0x47, 0x58, 0x0e, 0xe4, 0x3a, 0xc2, 0xfa, 0xa0, 0x95, 0xe7, 0x8a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x75, 0x84, 0xf9, 0x40, 0xae, 0x23, 0xd4, 0x6c, 0xb8, 0xa4, 0x36, 0x7c, 0x39, 0xb9, 0x06, 0x09, 0xb3, 0x5d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xeb, 0x08, 0x25, 0x03, 0xb9, 0x8e, 0xd0, 0x72, 0x50, 0xc0, 0xe6, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x3a, 0x42, 0xd1, 0x40, 0xae, 0x23, 0xb4, 0x6d, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0xf0, 0xea, 0xc8, 0x8c, 0x56, 0x83, 0x73, 0xfd, 0xe9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x3c, 0x42, 0x3a, 0x90, 0xf3, 0x08, 0xf9, 0x06, 0x49, 0x06, 0x84, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc2, 0x23, 0x2c, 0x06, 0x12, 0x1e, 0x61, 0x75, 0xd0, 0x06, 0x05, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf1, 0x08, 0xf9, 0x40, 0xc6, 0x23, 0x7c, 0xd9, 0x20, 0xc9, 0x80, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x78, 0x84, 0xc5, 0x40, 0xc6, 0x23, 0xac, 0x0e, 0xda, 0x4f, 0x8f, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x1e, 0x61, 0x36, 0x90, 0xf1, 0x08, 0xfb, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0x8f, 0xb0, 0x1b, 0xc8, 0x78, 0x84, 0xed, 0xc1, 0x82, 0x8d, 0xd0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe3, 0x11, 0xc6, 0x03, 0x19, 0x8f, 0x30, 0x3f, 0x58, 0xe6, 0x24, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf1, 0x08, 0x05, 0x03, 0x19, 0x8f, 0x70, 0x65, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x23, 0x34, 0x0c, 0x64, 0x3c, 0x42, 0xcb, 0x41, 0x1b, 0x14, 0xb0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x23, 0xd4, 0x0c, 0x64, 0x3c, 0x42, 0xdd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8c, 0x47, 0xe8, 0x19, 0xc8, 0x78, 0x84, 0xae, 0x83, 0x05, 0x1b, 0xa1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x23, 0x94, 0x0d, 0x64, 0x3c, 0x42, 0xdb, 0x41, 0x41, 0x91, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf1, 0x08, 0x7d, 0x03, 0x19, 0x8f, 0xf0, 0x64, 0x83, 0x24, 0x03, 0xc2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe3, 0x11, 0x1a, 0x07, 0x32, 0x1e, 0xa1, 0xf5, 0xa0, 0xfd, 0xf4, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe3, 0x11, 0x6a, 0x07, 0x32, 0x1e, 0xa1, 0x7e, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x23, 0xf4, 0x0e, 0x64, 0x3c, 0x42, 0xf7, 0xc1, 0x82, 0x8d, 0xd0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe3, 0x11, 0xca, 0x07, 0x32, 0x1e, 0xa1, 0xfd, 0xa0, 0xa0, 0xc8, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x78, 0x84, 0xfe, 0x81, 0x8c, 0x47, 0xf8, 0xb0, 0xe1, 0x6d, 0x9d, 0x83, 0x07, 0xe7, 0x7c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0x8f, 0x70, 0x62, 0x20, 0xe3, 0x11, 0x8e, 0x1c, 0xbc, 0xce, 0xbc, 0xba, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x1e, 0x21, 0x1f, 0x48, 0x79, 0x84, 0xaa, 0x0d, 0x92, 0x0c, 0x08, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x94, 0x47, 0x58, 0x0c, 0xa4, 0x3c, 0xc2, 0xea, 0xa0, 0xfd, 0xf4, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe5, 0x11, 0x66, 0x03, 0x29, 0x8f, 0xb0, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf2, 0x08, 0xbb, 0x81, 0x94, 0x47, 0xd8, 0x1e, 0x2c, 0xd8, 0x08, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x1e, 0x61, 0x3c, 0x90, 0xf2, 0x08, 0xf3, 0x83, 0x55, 0x60, 0xb2, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x8f, 0x50, 0x30, 0x90, 0xf2, 0x08, 0x4d, 0x1b, 0xde, 0xd6, 0x19, 0xc0, 0xa3, 0xad, 0x6c, 0x6e, 0xae, 0x25, 0xac, 0x8e, 0x0e, 0xad, 0x66, 0x0d, 0x9e, 0xb5, 0x5f, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x8e, 0x90, 0x0e, 0xa4, 0x3b, 0xc2, 0x8f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x8e, 0x10, 0x0f, 0xa4, 0x3b, 0xc2, 0xe4, 0xa0, 0x0d, 0x0a, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdd, 0x11, 0x36, 0x03, 0xe9, 0x8e, 0x50, 0xb8, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xdd, 0x11, 0x46, 0x03, 0xe9, 0x8e, 0x30, 0x3c, 0x68, 0x3f, 0x3d, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x77, 0x84, 0xe5, 0x40, 0xba, 0x23, 0x54, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x77, 0x84, 0xe9, 0x40, 0xba, 0x23, 0xcc, 0x0f, 0x16, 0x6c, 0x84, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x8e, 0xb0, 0x1f, 0x48, 0x77, 0x84, 0x86, 0x83, 0x55, 0x60, 0xb2, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x8e, 0xd0, 0x31, 0x90, 0xee, 0x08, 0x7d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x1d, 0xa1, 0x64, 0x20, 0xdd, 0x11, 0x8a, 0x0e, 0x5a, 0x79, 0xae, 0x58, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x1d, 0xa1, 0x69, 0x20, 0xdd, 0x11, 0xea, 0x36, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0x78, 0x75, 0x78, 0x4a, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x8e, 0xd0, 0x38, 0x90, 0xee, 0x08, 0x37, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x3b, 0x42, 0xe5, 0x40, 0xba, 0x23, 0xd4, 0x1e, 0xb4, 0x9f, 0x1e, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x3b, 0x42, 0xef, 0x40, 0xba, 0x23, 0x1c, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xee, 0x08, 0xc5, 0x03, 0xe9, 0x8e, 0x50, 0x7e, 0xb0, 0x60, 0x23, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x77, 0x84, 0xf6, 0x81, 0x74, 0x47, 0xe8, 0x3f, 0x58, 0xe6, 0x24, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xee, 0x08, 0x0f, 0x06, 0xd2, 0x1d, 0xe1, 0xc5, 0xc1, 0xeb, 0xcc, 0xab, 0xeb, 0x70, 0x8a, 0x75, 0x38, 0xc5, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xeb, 0x11, 0x7f, 0xf0, 0x50, 0xc9, 0xea, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x8f, 0x90, 0x0d, 0x64, 0x3d, 0x42, 0xc9, 0x06, 0xe1, 0x34, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x3d, 0x42, 0x3c, 0x90, 0xf5, 0x08, 0x93, 0x83, 0xe7, 0xde, 0x83, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x23, 0x6c, 0x06, 0xb2, 0x1e, 0xa1, 0x63, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x23, 0x8c, 0x06, 0xb2, 0x1e, 0x61, 0xbd, 0xe1, 0xdf, 0xf9, 0x0d, 0x8e, 0xa5, 0x71, 0x07, 0x4f, 0xdd, 0x29, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x1e, 0x61, 0x3e, 0x90, 0xf5, 0x08, 0x15, 0x07, 0xcf, 0xbd, 0x07, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x1e, 0xf1, 0x07, 0x0f, 0x95, 0xac, 0xde, 0x20, 0xc9, 0x80, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x7b, 0x84, 0x64, 0x20, 0xed, 0x11, 0xd2, 0x83, 0xf6, 0xd3, 0x63, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x47, 0x88, 0x07, 0xd2, 0x1e, 0x61, 0x72, 0xb0, 0x96, 0x93, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x7b, 0x84, 0xcd, 0x40, 0xda, 0x23, 0xec, 0x36, 0xbc, 0xad, 0x73, 0xf0, 0x3e, 0x68, 0xe0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xed, 0x11, 0x86, 0x03, 0x69, 0x8f, 0xd0, 0xb6, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xed, 0x11, 0x96, 0x03, 0x69, 0x8f, 0xb0, 0x3e, 0x78, 0xed, 0x51, 0xf4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xf6, 0x08, 0xf3, 0x81, 0xb4, 0x47, 0xd8, 0x1f, 0x14, 0x39, 0xad, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xda, 0x23, 0x14, 0x0c, 0xa4, 0x3d, 0x42, 0xd9, 0x06, 0x0b, 0x3b, 0x97, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xed, 0x11, 0x3a, 0x06, 0xd2, 0x1e, 0xa1, 0x6b, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xda, 0x23, 0x94, 0x0c, 0xa4, 0x3d, 0x42, 0xcf, 0x41, 0xa1, 0xdd, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x3d, 0x42, 0xd1, 0x40, 0xda, 0x23, 0x54, 0x1d, 0x1c, 0x5e, 0xe5, 0xaa, 0xc3, 0x29, 0xd6, 0x1a, 0x3c, 0x33, 0xd9, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x0e, 0xf1, 0x03, 0x79, 0x87, 0xd0, 0xb0, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe3, 0x10, 0xb2, 0x81, 0x8c, 0x43, 0x58, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0xf2, 0xf2, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x0e, 0x21, 0x3f, 0x78, 0xa8, 0x98, 0xf5, 0xc1, 0x51, 0xe8, 0x64, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x0e, 0xf1, 0x07, 0x2f, 0xff, 0xb2, 0xde, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x72, 0x08, 0xd9, 0x40, 0xca, 0x21, 0x6c, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0x95, 0xb9, 0xe5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x72, 0x08, 0xf9, 0xc1, 0x7b, 0xd6, 0xac, 0x0f, 0x9e, 0x7b, 0x0f, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x87, 0xf8, 0x83, 0x97, 0x7f, 0x59, 0x6f, 0x50, 0x90, 0xc6, 0x0e, 0xfc, 0xdb, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x1c, 0x42, 0x3e, 0x90, 0x73, 0x08, 0xd3, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x8a, 0x1a, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe7, 0x10, 0x36, 0x03, 0x39, 0x87, 0xb0, 0x3a, 0x48, 0xfb, 0x7b, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x0e, 0x61, 0x36, 0x90, 0x73, 0x08, 0xcb, 0x83, 0x67, 0x00, 0xa6, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x87, 0xf8, 0x83, 0x97, 0x7f, 0x59, 0x6f, 0xf8, 0x0a, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x0e, 0x21, 0x3b, 0x78, 0xf9, 0x97, 0xf5, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x43, 0xc8, 0x07, 0x92, 0x0e, 0x61, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xe9, 0x10, 0x06, 0x03, 0x49, 0x87, 0xb0, 0x38, 0xfc, 0x50, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x1d, 0xc2, 0x64, 0x20, 0xe9, 0x10, 0x66, 0x07, 0xcf, 0xbd, 0x07, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x0e, 0xf1, 0x07, 0x2f, 0xff, 0xb2, 0xde, 0xa0, 0xe8, 0xa0, 0x1d, 0x3c, 0xdc, 0x20, 0x59, 0xf0, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x3a, 0x84, 0xc9, 0x40, 0xd6, 0x21, 0xf4, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x3a, 0x84, 0xcd, 0x40, 0xd6, 0x21, 0x4c, 0x37, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x48, 0xaf, 0xf6, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x0e, 0x61, 0x78, 0xf0, 0xae, 0x48, 0xeb, 0x83, 0xb4, 0xbf, 0xd7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xeb, 0x10, 0xb6, 0x03, 0x59, 0x87, 0x50, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xeb, 0x10, 0xc6, 0x03, 0x59, 0x87, 0xb0, 0x3f, 0x28, 0x8a, 0x7f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x43, 0x28, 0x18, 0xc8, 0x3a, 0x84, 0x86, 0xc3, 0x83, 0x37, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x21, 0x54, 0x0c, 0x64, 0x1d, 0x42, 0xcb, 0xc1, 0x9a, 0x2c, 0xcd, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x43, 0xfc, 0xc1, 0xcb, 0xbf, 0xac, 0x37, 0x28, 0x3a, 0x68, 0x07, 0x17, 0x37, 0x48, 0x16, 0x7c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x0e, 0x61, 0x32, 0x90, 0x76, 0x08, 0xeb, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x87, 0xb0, 0x19, 0x48, 0x3b, 0x84, 0xe9, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0xc1, 0xfb, 0xb7, 0xa7, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xed, 0x10, 0x86, 0x07, 0x8f, 0x4a, 0xb5, 0x3e, 0x48, 0xfb, 0x7b, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x0e, 0x61, 0x3b, 0x90, 0x76, 0x08, 0xe3, 0xc3, 0xd3, 0x3a, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xde, 0x21, 0xfe, 0xe0, 0xe5, 0x5f, 0xd6, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x0e, 0x21, 0x1a, 0xc8, 0x3b, 0x84, 0xd5, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x43, 0xc8, 0x06, 0xf2, 0x0e, 0x21, 0x3e, 0x48, 0xc3, 0x56, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x0e, 0x21, 0x1f, 0xc8, 0x3b, 0x84, 0xc1, 0xe1, 0xbd, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xef, 0x10, 0x16, 0x03, 0x79, 0x87, 0x30, 0x3a, 0x58, 0x93, 0xa5, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x77, 0x08, 0xb3, 0x81, 0xbc, 0x43, 0xd8, 0x1d, 0x04, 0x20, 0xdb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x1d, 0xc2, 0x70, 0x20, 0xef, 0x10, 0x0a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x1d, 0xc2, 0x72, 0x20, 0xef, 0x10, 0xa6, 0x87, 0xf7, 0x82, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x43, 0xd8, 0x0e, 0xe4, 0x1d, 0xc2, 0xfe, 0xe0, 0x5d, 0x02, 0xd4, 0xad, 0x06, 0x2f, 0xfb, 0x1b, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcc, 0x47, 0xfc, 0x40, 0x02, 0x24, 0x24, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe6, 0x23, 0x64, 0x03, 0xb9, 0x8f, 0x90, 0x6e, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x6b, 0xb0, 0x6c, 0xba, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x1f, 0x61, 0x35, 0x90, 0xfa, 0x08, 0x0d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x1f, 0x61, 0x36, 0x90, 0xfa, 0x08, 0xd3, 0x83, 0x56, 0x9e, 0x2b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x47, 0xd8, 0x0e, 0xa4, 0x3e, 0x42, 0xc1, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x03, 0xaf, 0x8e, 0xac, 0xe8, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x7e, 0xc4, 0x1f, 0xbc, 0x7b, 0xd9, 0x7a, 0x83, 0x24, 0x03, 0xc2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xf9, 0x11, 0xb2, 0x81, 0xe4, 0x47, 0xc8, 0x0f, 0xda, 0xa0, 0x80, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x1f, 0x21, 0x19, 0xc8, 0x7e, 0x84, 0xd5, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xec, 0x47, 0x88, 0x06, 0xb2, 0x1f, 0x21, 0x3e, 0x78, 0xed, 0x51, 0xf4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfd, 0x08, 0xf9, 0x40, 0xf6, 0x23, 0x0c, 0x0e, 0x8a, 0x9c, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xfb, 0x11, 0x16, 0x03, 0xd9, 0x8f, 0x30, 0x3a, 0x48, 0xc5, 0xfe, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x7f, 0x84, 0x64, 0x20, 0xfd, 0x11, 0xda, 0x36, 0x48, 0x32, 0x20, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x1f, 0x21, 0x1b, 0x48, 0x7f, 0x84, 0xfc, 0xa0, 0xfd, 0xf4, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xfd, 0x11, 0x06, 0x03, 0xe9, 0x8f, 0x30, 0xdd, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfe, 0x08, 0x8b, 0x81, 0xf4, 0x47, 0x58, 0x1d, 0x2c, 0xd8, 0x08, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x1f, 0x61, 0x36, 0x90, 0xfe, 0x08, 0xcb, 0x83, 0x95, 0xbd, 0xb0, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x8f, 0xb0, 0x1d, 0x48, 0x7f, 0x84, 0x9e, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x8f, 0x30, 0x1e, 0x48, 0x7f, 0x84, 0x82, 0x83, 0x56, 0x9e, 0x2b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x47, 0x68, 0x18, 0x48, 0x7f, 0x84, 0x9a, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0x5e, 0x9a, 0x99, 0xd1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xfe, 0x08, 0x45, 0x03, 0xe9, 0x8f, 0x50, 0xb6, 0xe1, 0x6d, 0x9d, 0x83, 0x76, 0x7d, 0xac, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x1f, 0x21, 0x19, 0xc8, 0x7f, 0x84, 0xb6, 0x0d, 0x92, 0x0c, 0x08, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x47, 0xc8, 0x06, 0xf2, 0x1f, 0x21, 0x3f, 0x68, 0x3f, 0x3d, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x7f, 0x84, 0xc1, 0x40, 0xfe, 0x23, 0x4c, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x3f, 0xc2, 0x62, 0x20, 0xff, 0x11, 0x56, 0x07, 0x0b, 0x36, 0x42, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x47, 0x98, 0x0d, 0xe4, 0x3f, 0xc2, 0xf2, 0x60, 0x69, 0x2b, 0x6c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfe, 0x23, 0x6c, 0x07, 0xf2, 0x1f, 0xa1, 0x67, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfe, 0x23, 0x8c, 0x07, 0xf2, 0x1f, 0xa1, 0xe0, 0xa0, 0x95, 0xe7, 0x8a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xff, 0x11, 0x1a, 0x06, 0xf2, 0x1f, 0xa1, 0x66, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x81, 0x97, 0x36, 0x87, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x3f, 0x42, 0xd1, 0x40, 0xfe, 0x23, 0x94, 0x1d, 0xbc, 0x92, 0xe0, 0xba, 0x56, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xdc, 0x88, 0x1f, 0xc8, 0x73, 0x84, 0x8e, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb9, 0x11, 0xb2, 0x81, 0x24, 0x47, 0x48, 0x37, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x58, 0x78, 0x99, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x09, 0x8e, 0xb0, 0x1a, 0x48, 0x70, 0x84, 0xe5, 0x86, 0xb7, 0x75, 0x0e, 0x1e, 0x68, 0xeb, 0xb8, 0x1a, 0xbc, 0x88, 0xd6, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x1b, 0x61, 0x35, 0x90, 0xde, 0x08, 0x0d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x1b, 0x61, 0x36, 0x90, 0xde, 0x08, 0xd3, 0x83, 0x56, 0x9e, 0x2b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x46, 0xd8, 0x0e, 0xa4, 0x37, 0x42, 0xc1, 0xc1, 0x5b, 0x64, 0xab, 0x9b, 0x35, 0x38, 0x98, 0x7e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8e, 0x23, 0xac, 0x06, 0x72, 0x1c, 0xa1, 0x6d, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8e, 0x23, 0xcc, 0x06, 0x72, 0x1c, 0x61, 0x7a, 0xd0, 0x32, 0x13, 0xe1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe3, 0x08, 0xdb, 0x81, 0x1c, 0x47, 0x68, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe3, 0x08, 0xe3, 0x81, 0x1c, 0x47, 0x58, 0x1f, 0x1e, 0x93, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x1c, 0x61, 0x3e, 0x90, 0xe3, 0x08, 0x05, 0x07, 0x29, 0xaf, 0x55, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x8e, 0x50, 0x31, 0x90, 0xe3, 0x08, 0x65, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x1c, 0xa1, 0x63, 0x20, 0xc7, 0x11, 0x7a, 0x0e, 0x5a, 0x79, 0xae, 0x58, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x1c, 0xa1, 0x68, 0x20, 0xc7, 0x11, 0xba, 0x0e, 0xd6, 0x52, 0xd9, 0xd5, 0x2c, 0xe0, 0xdf, 0x85, 0xb9, 0xd1, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe1, 0x08, 0xab, 0x81, 0x14, 0x47, 0x78, 0xb0, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x38, 0xc2, 0x72, 0x20, 0xc3, 0x11, 0xd6, 0x07, 0x6d, 0x50, 0xc0, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0x8e, 0xb0, 0x1f, 0xc8, 0x70, 0x84, 0x9e, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0x8e, 0x50, 0x30, 0x90, 0xe1, 0x08, 0x25, 0x07, 0x0b, 0x36, 0x42, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0c, 0x47, 0x68, 0x19, 0xc8, 0x70, 0x84, 0x9a, 0x83, 0x82, 0x22, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x71, 0x84, 0xd5, 0xc1, 0x03, 0x99, 0xae, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x38, 0xc2, 0x6c, 0x20, 0xc5, 0x11, 0xa6, 0x07, 0xed, 0xa7, 0xc7, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x8e, 0xb0, 0x1d, 0x48, 0x71, 0x84, 0xee, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x8e, 0x30, 0x1e, 0x48, 0x71, 0x84, 0x82, 0x83, 0x36, 0x28, 0x60, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x47, 0x68, 0x18, 0x48, 0x71, 0x84, 0xb6, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x29, 0x8e, 0x50, 0x31, 0x90, 0xe2, 0x08, 0x35, 0x07, 0x0b, 0x36, 0x42, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x47, 0xe8, 0x19, 0x48, 0x71, 0x84, 0xb2, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0xe0, 0x5c, 0x7f, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe2, 0x08, 0x75, 0x03, 0x29, 0x8e, 0x50, 0xbd, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc5, 0x11, 0xfa, 0x06, 0x52, 0x1c, 0xa1, 0xf3, 0x60, 0xc1, 0x46, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe2, 0x08, 0xa5, 0x03, 0x29, 0x8e, 0xd0, 0xbc, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0x1c, 0xe4, 0xd9, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x71, 0x84, 0xf2, 0x81, 0x14, 0x47, 0x38, 0x70, 0xb0, 0x96, 0x93, 0xb8, 0xd5, 0xf0, 0x1d, 0xfd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x37, 0xc2, 0x6a, 0x20, 0xbf, 0x11, 0x1a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x37, 0xc2, 0x6c, 0x20, 0xbf, 0x11, 0xa6, 0x07, 0xad, 0x3c, 0x57, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x8d, 0xb0, 0x1d, 0xc8, 0x6f, 0x84, 0x82, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0x5e, 0x1d, 0x19, 0xd1, 0x6a, 0xd0, 0xf4, 0xf5, 0xf8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x37, 0xc2, 0x6a, 0x20, 0xbb, 0x11, 0x0a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x37, 0xc2, 0x6c, 0x20, 0xbb, 0x11, 0xa6, 0x07, 0xad, 0x3c, 0x57, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x8d, 0xb0, 0x1d, 0xc8, 0x6e, 0x84, 0xfd, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x83, 0x87, 0x43, 0x3a, 0x9c, 0x62, 0xd5, 0xe1, 0x14, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x47, 0xfc, 0xc1, 0xe3, 0x43, 0xae, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x39, 0x42, 0x36, 0x90, 0xe5, 0x08, 0x25, 0x1b, 0x84, 0xd3, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe5, 0x08, 0xf1, 0x40, 0x96, 0x23, 0x4c, 0x0e, 0x9e, 0x7b, 0x0f, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x8e, 0xb0, 0x19, 0xc8, 0x72, 0x84, 0x8e, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x8e, 0x30, 0x1a, 0xc8, 0x72, 0x84, 0xf5, 0xc1, 0x7b, 0x7d, 0x98, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x2c, 0x47, 0x98, 0x0f, 0x64, 0x39, 0x42, 0xc5, 0xc1, 0x73, 0xef, 0x41, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x47, 0xfc, 0xc1, 0xe3, 0x43, 0xae, 0x37, 0x28, 0x3a, 0x8d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x34, 0x47, 0xc8, 0x06, 0xd2, 0x1c, 0x21, 0x3f, 0x68, 0x3f, 0x3d, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x73, 0x84, 0xc5, 0x40, 0x9a, 0x23, 0x34, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x73, 0x84, 0xc9, 0x40, 0x9a, 0x23, 0xcc, 0x0e, 0xda, 0x4f, 0x8f, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x1c, 0x61, 0x37, 0x90, 0xe6, 0x08, 0xdb, 0x83, 0x57, 0x20, 0xce, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x8e, 0x30, 0x1e, 0x48, 0x73, 0x84, 0x82, 0x83, 0x77, 0xa3, 0x5c, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x8e, 0xf8, 0x83, 0xc7, 0x87, 0x5c, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x73, 0x84, 0x60, 0x20, 0xcf, 0x11, 0xc2, 0x83, 0xf6, 0xd3, 0x63, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3c, 0x47, 0x48, 0x07, 0xf2, 0x1c, 0x61, 0xbd, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcf, 0x11, 0xe2, 0x81, 0x3c, 0x47, 0x98, 0x1c, 0xb4, 0x9f, 0x1e, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x39, 0xc2, 0x66, 0x20, 0xcf, 0x11, 0x76, 0x07, 0x45, 0x8d, 0xef, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe7, 0x08, 0xc3, 0x81, 0x3c, 0x47, 0x18, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0x77, 0x28, 0x5d, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0xe7, 0x08, 0xf3, 0x81, 0x3c, 0x47, 0xa8, 0x38, 0x58, 0x0d, 0x15, 0xdc, 0xac, 0xc1, 0x5a, 0x14, 0x9f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x33, 0xc4, 0x0f, 0x64, 0x1a, 0xc2, 0x64, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x33, 0x84, 0x6c, 0x20, 0xcd, 0x10, 0xc6, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x0c, 0x21, 0x1c, 0x48, 0x33, 0x84, 0xd5, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xcd, 0x10, 0xe2, 0x83, 0x47, 0x2c, 0x5f, 0x6f, 0x10, 0x4e, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9a, 0x21, 0x2c, 0x06, 0xd2, 0x0c, 0x61, 0x72, 0x10, 0xa6, 0x63, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x66, 0x08, 0x9b, 0x81, 0x34, 0x43, 0x18, 0x1d, 0x84, 0xe9, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x66, 0x08, 0xb3, 0x81, 0x34, 0x43, 0xd8, 0x6e, 0xf8, 0x73, 0x69, 0x70, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x0c, 0x61, 0x78, 0xf0, 0x20, 0xeb, 0xeb, 0x83, 0xa7, 0x8b, 0x3f, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x86, 0xf8, 0x83, 0x37, 0x16, 0x5f, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x33, 0x84, 0x6c, 0x20, 0xcf, 0x10, 0x36, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xca, 0xdc, 0xf2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x33, 0x84, 0xfc, 0xe0, 0xb9, 0xde, 0xd7, 0x07, 0xcf, 0xbd, 0x07, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x43, 0xfc, 0xc1, 0x1b, 0x8b, 0xaf, 0x37, 0x28, 0x3a, 0x68, 0x07, 0x1f, 0x37, 0x78, 0x21, 0x60, 0xca, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x68, 0x08, 0x9b, 0x81, 0x44, 0x43, 0x98, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x34, 0x84, 0xd1, 0x40, 0xa2, 0x21, 0xac, 0x0e, 0xef, 0x05, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x86, 0x30, 0x1b, 0x48, 0x34, 0x84, 0xe5, 0xc1, 0x33, 0x00, 0x53, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x43, 0xfc, 0xc1, 0x1b, 0x8b, 0xaf, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x1a, 0x42, 0x30, 0x90, 0x69, 0x08, 0xe9, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x43, 0x48, 0x06, 0x32, 0x0d, 0x21, 0x3a, 0x3c, 0xad, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x1a, 0x42, 0x36, 0x90, 0x69, 0x08, 0xe1, 0xe1, 0xe9, 0x9d, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4c, 0x43, 0x88, 0x07, 0x32, 0x0d, 0x61, 0x71, 0xf0, 0x0c, 0xc0, 0x94, 0x0e, 0xa7, 0x58, 0x6b, 0xb0, 0xf8, 0xcb, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x0c, 0x21, 0x1f, 0xc8, 0x31, 0x84, 0xca, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xc7, 0x10, 0x26, 0x03, 0x39, 0x86, 0xb0, 0xda, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x18, 0xc2, 0xe8, 0xe0, 0x05, 0x02, 0xd8, 0x07, 0x61, 0x3a, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x86, 0x30, 0x1b, 0xc8, 0x31, 0x84, 0xc6, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x86, 0xb0, 0x1c, 0xc8, 0x31, 0x84, 0x86, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x65, 0x6e, 0xf9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x18, 0xc2, 0xfa, 0xe0, 0x71, 0x0a, 0xd8, 0x07, 0xcf, 0xbd, 0x07, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x43, 0xa8, 0x18, 0xc8, 0x31, 0x84, 0xc2, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x86, 0xd0, 0x31, 0x90, 0x63, 0x08, 0x25, 0x87, 0xa7, 0x75, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x43, 0x68, 0x19, 0xc8, 0x31, 0x84, 0xbe, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x86, 0x50, 0x33, 0x90, 0x63, 0x08, 0x55, 0x07, 0xe9, 0xc9, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8e, 0x21, 0x74, 0x0d, 0xe4, 0x18, 0x42, 0xdd, 0xc1, 0x33, 0x00, 0x53, 0xea, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x59, 0x83, 0x67, 0x8c, 0x07, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x42, 0x21, 0x6e, 0x20, 0xbd, 0x10, 0xbb, 0x41, 0xa1, 0xdc, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x14, 0x42, 0x32, 0x90, 0x50, 0x08, 0xbd, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x0a, 0x21, 0x1a, 0x48, 0x28, 0x84, 0x7c, 0xc3, 0x9f, 0x4b, 0x1b, 0x14, 0xb5, 0xc5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x50, 0x08, 0xf1, 0xc1, 0xa3, 0x4a, 0xb0, 0x0f, 0xc2, 0x74, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x28, 0x84, 0xc1, 0x40, 0x42, 0x21, 0xac, 0x37, 0xfc, 0xb9, 0x34, 0xf0, 0x65, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x14, 0xc2, 0xe6, 0xe0, 0x3d, 0x2b, 0xd8, 0x1b, 0x84, 0xd3, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x50, 0x08, 0xb3, 0x81, 0x84, 0x42, 0xd8, 0x1d, 0x84, 0xe9, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x14, 0xc2, 0x70, 0x20, 0xa1, 0x10, 0xc6, 0x07, 0x0f, 0x8b, 0x19, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x0a, 0x61, 0x3e, 0x90, 0x50, 0x08, 0xb5, 0x1b, 0xfe, 0x5c, 0x1a, 0x78, 0xb2, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x0a, 0xa1, 0xe1, 0xe0, 0xb5, 0x36, 0xd8, 0x1b, 0x84, 0xd3, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x50, 0x08, 0x25, 0x03, 0x09, 0x85, 0xd0, 0x72, 0xf8, 0xa1, 0x66, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x0a, 0xa1, 0x66, 0x20, 0xa1, 0x10, 0x5a, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x14, 0x42, 0xcf, 0x40, 0x42, 0x21, 0x14, 0x1d, 0x84, 0xe9, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x50, 0x08, 0x4d, 0x03, 0x09, 0x85, 0x50, 0xb7, 0xe1, 0xcf, 0xa5, 0x01, 0x4f, 0xec, 0x2d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x42, 0x68, 0x3b, 0x78, 0x39, 0x11, 0xf6, 0xe1, 0x87, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa1, 0x10, 0xfa, 0x06, 0x12, 0x0a, 0xa1, 0x74, 0xc3, 0x9f, 0x4b, 0x1b, 0x1c, 0xe0, 0x25, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa1, 0x10, 0x3a, 0x0f, 0x9e, 0xae, 0x84, 0x7d, 0xf8, 0xa1, 0xa6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa3, 0x10, 0x77, 0xf0, 0xec, 0x0f, 0xec, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0x85, 0x90, 0x0c, 0x64, 0x14, 0xc2, 0x68, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x0a, 0x21, 0x1a, 0xc8, 0x28, 0x84, 0xf8, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x0a, 0x21, 0x1f, 0xc8, 0x28, 0x84, 0xcd, 0x06, 0x01, 0x74, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0x85, 0x30, 0x38, 0x78, 0x44, 0x16, 0xf6, 0x41, 0xe9, 0x67, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x14, 0xe2, 0x0e, 0x9e, 0xfd, 0x81, 0xbd, 0x41, 0x41, 0x1a, 0xbb, 0x41, 0x2b, 0x20, 0x54, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4a, 0x21, 0xc4, 0x03, 0x29, 0x85, 0x30, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x52, 0x08, 0xf9, 0x40, 0x4a, 0x21, 0x2c, 0x0e, 0x9e, 0xa1, 0x1e, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x14, 0xc2, 0x64, 0x20, 0xa5, 0x10, 0x56, 0x07, 0xa5, 0x9f, 0x71, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x53, 0x88, 0x3b, 0x78, 0xf6, 0x07, 0xf6, 0x06, 0x05, 0x69, 0xec, 0x06, 0x0b, 0x13, 0x67, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x42, 0x88, 0x07, 0x72, 0x0a, 0x61, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xa7, 0x10, 0xf2, 0x81, 0x9c, 0x42, 0xd8, 0x6d, 0x78, 0x50, 0x72, 0x83, 0x87, 0xe7, 0x8d, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x21, 0x6c, 0x0e, 0x1e, 0x04, 0x87, 0xbd, 0xe1, 0x6d, 0x9d, 0x83, 0x57, 0xc7, 0x8c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x85, 0x30, 0x1c, 0xc8, 0x29, 0x84, 0xed, 0x41, 0x23, 0x44, 0x54, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x21, 0xee, 0xe0, 0xd9, 0x1f, 0xd8, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x9e, 0xdc, 0x9b, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x15, 0x42, 0x3c, 0x90, 0x54, 0x08, 0xc3, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x85, 0x90, 0x0f, 0x24, 0x15, 0xc2, 0xe2, 0xe0, 0x45, 0xf4, 0xc1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x21, 0x4c, 0x06, 0x92, 0x0a, 0x61, 0xb7, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x46, 0x2d, 0x2e, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x42, 0xdc, 0xc1, 0xb3, 0x3f, 0xb0, 0x37, 0x28, 0x76, 0x34, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x42, 0x48, 0x06, 0xb2, 0x0a, 0x61, 0xb5, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xab, 0x10, 0xb2, 0x81, 0xac, 0x42, 0x88, 0x0f, 0x4a, 0x3f, 0xe3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x2a, 0x84, 0x7c, 0x20, 0xab, 0x10, 0x46, 0x1b, 0x2e, 0xa9, 0x35, 0x0e, 0x1d, 0xbc, 0x06, 0x42, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xad, 0x10, 0x3f, 0x90, 0x57, 0x08, 0xe9, 0x06, 0xeb, 0x56, 0x99, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x2b, 0x84, 0x6c, 0x20, 0xad, 0x10, 0xc6, 0x1b, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0x5d, 0x80, 0xbf, 0xdc, 0x5b, 0x9d, 0x1b, 0x19, 0x9d, 0x5c, 0x1a, 0x5c, 0x8b, 0x59, 0x58, 0x1a, 0x5b, 0x4b, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x85, 0xf8, 0x83, 0xd7, 0x46, 0x62, 0x6f, 0x70, 0x0c, 0x37, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x42, 0x08, 0x0e, 0x5e, 0x1b, 0x89, 0x7d, 0xf0, 0x62, 0x47, 0xec, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x2c, 0xc4, 0x1d, 0x3c, 0xfb, 0x03, 0x7b, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x2c, 0x84, 0x64, 0x20, 0xb1, 0x10, 0x96, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x0b, 0x21, 0x1b, 0x48, 0x2c, 0x84, 0xc1, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x1a, 0xb5, 0xb8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x42, 0x58, 0x0c, 0x24, 0x16, 0xc2, 0x70, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0xd8, 0x5b, 0x7c, 0xf0, 0x1a, 0x08, 0xe1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb3, 0x10, 0x3f, 0x90, 0x5a, 0x08, 0xe9, 0x06, 0xeb, 0x56, 0x99, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x2c, 0x84, 0x6c, 0x20, 0xb3, 0x10, 0xca, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x16, 0x42, 0x38, 0x90, 0x59, 0x08, 0xeb, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0x2e, 0xc0, 0x5f, 0xee, 0xad, 0xce, 0x8d, 0x8c, 0x4e, 0x2e, 0x0d, 0xae, 0xc5, 0x2c, 0x2c, 0x8d, 0xad, 0x45, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x0b, 0x61, 0x3e, 0x90, 0x59, 0x08, 0x1d, 0x07, 0xef, 0x2b, 0xc5, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x0b, 0xa1, 0x64, 0x20, 0xb3, 0x10, 0xba, 0x0e, 0x9e, 0x8f, 0x8a, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x16, 0xe2, 0x0f, 0x5e, 0xc3, 0x8a, 0xbd, 0xc1, 0x31, 0xdc, 0x60, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x0b, 0x21, 0x38, 0x78, 0x0d, 0x2b, 0xf6, 0xc1, 0x8b, 0x1d, 0xb1, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb7, 0x10, 0x77, 0xf0, 0xec, 0x0f, 0xec, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0xb7, 0x10, 0x92, 0x81, 0xdc, 0x42, 0x58, 0x6e, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x2d, 0x84, 0x6c, 0x20, 0xb7, 0x10, 0x06, 0x1b, 0xde, 0xd6, 0x19, 0x5c, 0x3e, 0x68, 0xd4, 0xe2, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x0b, 0x61, 0x31, 0x90, 0x5b, 0x08, 0xc3, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x80, 0x97, 0x3c, 0x78, 0x0d, 0x84, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5c, 0x88, 0x1f, 0xc8, 0x2e, 0x84, 0x74, 0x83, 0x75, 0xab, 0x4c, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x17, 0x42, 0x36, 0x90, 0x5c, 0x08, 0x65, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x0b, 0x21, 0x1c, 0x48, 0x2e, 0x84, 0xf5, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0xe0, 0x2f, 0xf7, 0x56, 0xe7, 0x46, 0x46, 0x27, 0x97, 0x06, 0xd7, 0x62, 0x16, 0x96, 0xc6, 0xd6, 0x32, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x85, 0x30, 0x1f, 0x48, 0x2e, 0x84, 0x8e, 0x83, 0x17, 0x22, 0x63, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x85, 0x50, 0x32, 0x90, 0x5c, 0x08, 0x5d, 0x07, 0x0f, 0x60, 0xc6, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x0b, 0xf1, 0x07, 0x8f, 0x79, 0xc6, 0xde, 0xe0, 0x18, 0x6e, 0xb0, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd9, 0x85, 0x10, 0x1c, 0x3c, 0xe6, 0x19, 0xfb, 0xe0, 0xc5, 0x8e, 0xd8, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x5e, 0x88, 0x3b, 0x78, 0xf6, 0x07, 0xf6, 0x41, 0x41, 0x91, 0x79, 0x38, 0xc5, 0x5a, 0x83, 0x77, 0x28, 0x5d, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x43, 0xe9, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0x92, 0xb8, 0x81, 0xd3, 0x24, 0x7e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5d, 0x12, 0x92, 0x81, 0xbb, 0x24, 0x0c, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xa2, 0x1a, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x25, 0x21, 0x3d, 0x78, 0x48, 0x3b, 0xf6, 0x41, 0x99, 0xa5, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x26, 0x21, 0x19, 0x38, 0x4c, 0x42, 0xbc, 0xe1, 0xcf, 0xa5, 0x0d, 0x96, 0xd3, 0x40, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x61, 0x12, 0xa2, 0x83, 0x47, 0xcc, 0x63, 0x6f, 0xf8, 0x77, 0xfe, 0x60, 0x29, 0x0d, 0xf4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x99, 0x84, 0x64, 0xe0, 0x32, 0x09, 0xab, 0x83, 0xc7, 0x88, 0x32, 0xb7, 0x02, 0x3e, 0x5c, 0x9d, 0x9c, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0xc1, 0x91, 0x21, 0xf4, 0xe0, 0xad, 0xfa, 0xd8, 0x0d, 0xc0, 0x9b, 0x5c, 0xd9, 0x1c, 0xdc, 0x9b, 0xdb, 0x5c, 0x19, 0x08, 0x5c, 0xd8, 0xd8, 0x5a, 0x19, 0x1d, 0x08, 0x5c, 0x58, 0x1e, 0xdb, 0x5b, 0x18, 0xd9, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x5b, 0xf5, 0xb1, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x66, 0x89, 0x1b, 0xb8, 0x5a, 0xe2, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x2c, 0x21, 0x19, 0xb8, 0x59, 0x42, 0x7a, 0xf0, 0xc4, 0xd9, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x68, 0x09, 0xc9, 0xc0, 0xd1, 0x12, 0xd2, 0x0d, 0xff, 0xce, 0x2f, 0xe0, 0xb7, 0x95, 0xbd, 0xdd, 0xd5, 0x6a, 0xf0, 0xd6, 0x91, 0xd9, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0x6f, 0x1d, 0x99, 0x6d, 0x00, 0xfe, 0x40, 0xe0, 0xc2, 0xd2, 0xe4, 0x40, 0xde, 0xcc, 0x40, 0x48, 0xe6, 0xd0, 0xd2, 0xe0, 0x40, 0xc2, 0xdc, 0xc8, 0x40, 0x48, 0xe0, 0xc2, 0xe8, 0xd0, 0x95, 0x00, 0x3c, 0x4f, 0x72, 0x9b, 0xa3, 0x2b, 0x0b, 0x23, 0x03, 0x79, 0x33, 0x03, 0x31, 0xab, 0x63, 0x63, 0xcb, 0x03, 0x89, 0xab, 0x0b, 0x63, 0x4b, 0x33, 0xcb, 0x4b, 0x73, 0x3b, 0x03, 0x09, 0x03, 0x99, 0x1b, 0x93, 0xcb, 0x03, 0x81, 0x0b, 0xa3, 0x43, 0x63, 0x01, 0x09, 0x6b, 0x2b, 0x9b, 0x03, 0x49, 0x73, 0x33, 0x2b, 0x93, 0x9b, 0x03, 0x91, 0x4b, 0x33, 0xa3, 0x03, 0x09, 0x73, 0x23, 0x97, 0x00, 0xda, 0xd8, 0xd2, 0xcc, 0xca, 0x40, 0xc4, 0xc2, 0xe6, 0xca, 0xc8, 0x40, 0xde, 0xdc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xe6, 0xd0, 0xd2, 0xe0, 0x5c, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x75, 0x64, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0x80, 0x90, 0x0e, 0x9c, 0x00, 0x61, 0xba, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x04, 0x08, 0xf1, 0xc0, 0x09, 0x10, 0x36, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xe9, 0xeb, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x01, 0x42, 0x7e, 0xf0, 0xde, 0x90, 0xec, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x20, 0x8c, 0x06, 0x4e, 0x80, 0xb0, 0xdc, 0xf0, 0xe7, 0xd2, 0x06, 0x07, 0xd3, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x01, 0xc2, 0xea, 0xe0, 0xc9, 0x27, 0xd9, 0x07, 0x67, 0x24, 0xd4, 0x56, 0x83, 0x47, 0xe9, 0xe3, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x70, 0x64, 0x08, 0x3d, 0x78, 0x94, 0x3e, 0x5e, 0x03, 0xf0, 0x46, 0x17, 0x76, 0x76, 0x56, 0x46, 0x06, 0x42, 0x96, 0x16, 0x76, 0xe6, 0xf6, 0x36, 0x47, 0x97, 0x36, 0x06, 0x42, 0x27, 0x17, 0x36, 0x56, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x28, 0x7d, 0xbc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xf4, 0x21, 0x1e, 0xa8, 0xf4, 0x61, 0xbe, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xd2, 0x87, 0x7c, 0xa0, 0xd2, 0x87, 0xdd, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x35, 0x10, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x3e, 0x6c, 0x0e, 0x9e, 0x79, 0x93, 0x7d, 0x70, 0xde, 0x3c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x7d, 0x18, 0x0e, 0x54, 0xfa, 0xb0, 0xde, 0xf0, 0xe7, 0xd2, 0x06, 0x27, 0xca, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xf4, 0x61, 0x79, 0xf0, 0xc6, 0x9e, 0xec, 0x83, 0x06, 0xc5, 0x03, 0x9b, 0x35, 0x58, 0x3f, 0x5c, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x78, 0xdc, 0xc0, 0xed, 0x1e, 0xbf, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0x2c, 0xf0, 0x64, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xe5, 0xf1, 0x03, 0xa7, 0x7b, 0x48, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xe5, 0x21, 0x1b, 0x38, 0xcb, 0xc3, 0x70, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x59, 0x1e, 0xc2, 0x81, 0xb3, 0x3c, 0x4c, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x79, 0x88, 0x0f, 0x1e, 0xcc, 0x94, 0x7d, 0x50, 0x84, 0xc5, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x79, 0xd8, 0x0c, 0x9c, 0xe5, 0x61, 0xb7, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xcb, 0xc3, 0xea, 0xe0, 0x6d, 0x52, 0xd9, 0x1b, 0xbe, 0xa8, 0xd9, 0x50, 0xc7, 0xc3, 0x85, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x2e, 0x8f, 0x3f, 0x78, 0xd9, 0x51, 0xf6, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0x7c, 0xdc, 0xa0, 0x84, 0x8e, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xf2, 0x90, 0x0e, 0xdc, 0xe5, 0x61, 0xb8, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x2e, 0x0f, 0xf1, 0xc0, 0x5d, 0x1e, 0x26, 0x87, 0x6f, 0xe7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x3c, 0x6c, 0x06, 0xee, 0xf2, 0xb0, 0x3b, 0x3c, 0x80, 0xdf, 0x41, 0x98, 0x8e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x79, 0x98, 0x0e, 0xdc, 0xe5, 0xa1, 0x67, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5d, 0x1e, 0xb6, 0x03, 0x77, 0x79, 0x18, 0x1f, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5d, 0x1e, 0xd6, 0x03, 0x77, 0x79, 0xa8, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x97, 0x87, 0xf9, 0xc0, 0x5d, 0x1e, 0x1a, 0x0e, 0x16, 0x70, 0xc2, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x79, 0xa8, 0x18, 0xb8, 0xcb, 0x43, 0xc7, 0xe1, 0x69, 0x9d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x2e, 0x0f, 0x25, 0x03, 0x77, 0x79, 0x68, 0x39, 0x28, 0x2a, 0xc5, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xf3, 0xf8, 0x83, 0x97, 0x1d, 0x65, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xcc, 0x43, 0x36, 0x70, 0x98, 0x87, 0xc1, 0x86, 0x3f, 0x97, 0x36, 0x28, 0x6a, 0x8b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x30, 0x0f, 0xf9, 0xc1, 0x6b, 0xf0, 0xb2, 0x0f, 0x3f, 0xd4, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x65, 0x1e, 0x7f, 0xf0, 0xb2, 0xa3, 0xec, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x79, 0xc8, 0x06, 0x2e, 0xf3, 0x50, 0xb0, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x32, 0x0f, 0xe1, 0xc0, 0x65, 0x1e, 0x56, 0x1b, 0xfe, 0x9d, 0xdf, 0x60, 0xf5, 0x70, 0xed, 0xc1, 0x53, 0x77, 0x8a, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x3c, 0xcc, 0x06, 0x2e, 0xf3, 0x30, 0x3d, 0x7c, 0x3b, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xe6, 0x61, 0x3b, 0x70, 0x99, 0x87, 0xfd, 0xe1, 0x01, 0xfc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x34, 0x8f, 0x3f, 0x78, 0xd9, 0x51, 0xf6, 0x86, 0x07, 0x25, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x3c, 0x64, 0x03, 0x87, 0x7a, 0x48, 0x37, 0x38, 0x39, 0xc8, 0x6d, 0xf8, 0x3c, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xcd, 0xc3, 0x64, 0xe0, 0x34, 0x0f, 0xa3, 0x83, 0xf0, 0x54, 0x5d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xcd, 0x43, 0x3a, 0x70, 0x9b, 0x87, 0xc5, 0xc1, 0x7b, 0x04, 0x7f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x36, 0x0f, 0xa3, 0x81, 0xdb, 0x3c, 0x2c, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xe6, 0x61, 0x35, 0x70, 0x9b, 0x87, 0xd9, 0x41, 0x41, 0x91, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xe6, 0x61, 0x37, 0x70, 0x9b, 0x87, 0xe1, 0xe1, 0xe9, 0x9d, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xf3, 0x90, 0x0e, 0x5c, 0xe7, 0x61, 0x71, 0xf0, 0xf8, 0xc3, 0xdf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xce, 0xc3, 0x68, 0xe0, 0x3c, 0x0f, 0x05, 0x1b, 0x14, 0x1d, 0xb4, 0x6b, 0xf8, 0xbe, 0x7d, 0xe0, 0xd3, 0xcc, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x3a, 0x0f, 0xdb, 0x81, 0xeb, 0x3c, 0x14, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xce, 0xc3, 0x78, 0xe0, 0x3a, 0x0f, 0xeb, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x75, 0x1e, 0xe6, 0x03, 0xd7, 0x79, 0xd8, 0x1f, 0x7e, 0xa8, 0xe9, 0x20, 0x4c, 0xc7, 0x36, 0xfc, 0xc3, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xe7, 0xa1, 0x65, 0xe0, 0x3a, 0x0f, 0xb5, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xf3, 0x50, 0x33, 0x70, 0x9d, 0x87, 0xc6, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x79, 0xe8, 0x19, 0xb8, 0xce, 0x43, 0xd5, 0x86, 0xb7, 0x75, 0x36, 0x18, 0x35, 0x03, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x79, 0xe8, 0x1a, 0xb8, 0xce, 0x43, 0xd9, 0xe1, 0xe9, 0x9d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x3a, 0x0f, 0x6d, 0x03, 0xd7, 0x79, 0x28, 0x3c, 0x28, 0xfd, 0x8c, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xf3, 0x50, 0x39, 0x70, 0x9d, 0x87, 0xce, 0x83, 0x53, 0x73, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x9d, 0x87, 0xd2, 0x81, 0xeb, 0x3c, 0xb4, 0x1e, 0x04, 0x2c, 0x6b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x9e, 0x87, 0xcd, 0xc1, 0xb3, 0x45, 0xb3, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xe7, 0x61, 0x34, 0x70, 0x9e, 0x87, 0xf5, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf3, 0x3c, 0xac, 0x06, 0xce, 0xf3, 0x30, 0xdd, 0x60, 0x65, 0x2f, 0xec, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xe7, 0x61, 0x78, 0xf0, 0x94, 0xe4, 0xec, 0x0d, 0x6f, 0xeb, 0x1c, 0x3c, 0x58, 0xa7, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xcf, 0xc3, 0x76, 0xe0, 0x3c, 0x0f, 0xe3, 0x83, 0x82, 0x22, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x3c, 0x0f, 0xf3, 0x81, 0xf3, 0x3c, 0xec, 0x0f, 0x4f, 0xef, 0xb4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xa0, 0x87, 0x74, 0xe0, 0x40, 0x0f, 0x93, 0x83, 0xe7, 0x36, 0xfe, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x81, 0x1e, 0x46, 0x03, 0x17, 0x7a, 0x58, 0x6f, 0x50, 0x74, 0xd0, 0x0e, 0x3c, 0x5b, 0xb8, 0xe1, 0x1f, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x40, 0x0f, 0xfb, 0x81, 0x03, 0x3d, 0x34, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd0, 0x43, 0xc1, 0xc0, 0x81, 0x1e, 0x4a, 0x0e, 0xce, 0x86, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x81, 0x1e, 0x5a, 0x06, 0x0e, 0xf4, 0x50, 0x74, 0xd0, 0x18, 0x9b, 0x70, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xa1, 0x87, 0xcd, 0xc1, 0x0b, 0xaf, 0xb3, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xe8, 0x61, 0x34, 0x70, 0xa1, 0x87, 0xe9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0b, 0x3d, 0xac, 0x06, 0x2e, 0xf4, 0xb0, 0xdb, 0xf0, 0xb6, 0xce, 0xc0, 0xb3, 0x85, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x7a, 0x18, 0x0e, 0x5c, 0xe8, 0x61, 0x79, 0x50, 0x50, 0x64, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xe8, 0x61, 0x3b, 0x70, 0xa1, 0x87, 0xf1, 0xe1, 0xe9, 0x9d, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xf4, 0x90, 0x0e, 0xdc, 0xe8, 0x61, 0x72, 0xf0, 0xc6, 0xc9, 0xdf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xd1, 0xc3, 0x68, 0xe0, 0x4e, 0x0f, 0x75, 0x1b, 0x94, 0xf6, 0x96, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x8d, 0x1e, 0x86, 0x03, 0x37, 0x7a, 0x68, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0x6d, 0x97, 0x7d, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x8d, 0x1e, 0xc6, 0x07, 0x2f, 0xb9, 0xcf, 0x3e, 0x78, 0xf9, 0x60, 0xf6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xe9, 0x61, 0x73, 0xf0, 0x2c, 0xfa, 0xec, 0x0d, 0x5f, 0xe1, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x91, 0x1e, 0x76, 0x07, 0xcf, 0xa2, 0xcf, 0xde, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xa4, 0x87, 0xed, 0xc0, 0x91, 0x1e, 0x0a, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xe9, 0x61, 0x3c, 0x70, 0xa4, 0x87, 0x96, 0x83, 0x97, 0x0f, 0x66, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x47, 0x7a, 0xa8, 0x19, 0x38, 0xd2, 0x43, 0xd5, 0xe1, 0xdb, 0xf9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x48, 0x0f, 0x5d, 0x03, 0x47, 0x7a, 0xe8, 0x3b, 0x3c, 0x80, 0xdf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xe9, 0x61, 0x73, 0xf0, 0x2c, 0xfa, 0xec, 0x0d, 0x0a, 0xd2, 0xd8, 0xc1, 0xc3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x4a, 0x0f, 0xd3, 0x81, 0x2b, 0x3d, 0xac, 0x0f, 0x1a, 0x63, 0x13, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x33, 0x3d, 0x6c, 0x0e, 0x9e, 0x45, 0x9f, 0xbd, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xc1, 0x9d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x4c, 0x0f, 0xd3, 0x81, 0x33, 0x3d, 0x14, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd3, 0xc3, 0x76, 0xe0, 0x4c, 0x0f, 0x2d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xf4, 0x30, 0x1e, 0x38, 0xd3, 0x43, 0xc1, 0x41, 0x61, 0xb1, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xe9, 0xa1, 0x61, 0xe0, 0x4c, 0x0f, 0x25, 0x07, 0x0d, 0xa3, 0x9f, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xe9, 0xa1, 0x66, 0xe0, 0x4c, 0x0f, 0x3d, 0x87, 0xa7, 0x77, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3b, 0x3d, 0x6c, 0x0e, 0x9e, 0x45, 0x9f, 0xbd, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x63, 0x6b, 0x9f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xa7, 0x87, 0xe5, 0xc0, 0x9d, 0x1e, 0x4a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xe9, 0x61, 0x3a, 0x70, 0xa7, 0x87, 0xfd, 0x86, 0x4b, 0x6a, 0x8d, 0x43, 0x07, 0x87, 0x90, 0x81, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3b, 0x3d, 0x14, 0x0c, 0xdc, 0xe9, 0xa1, 0xe3, 0xa0, 0x61, 0xf4, 0xd3, 0xd6, 0xf0, 0x0f, 0xcf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xe9, 0xa1, 0x68, 0xe0, 0x4e, 0x0f, 0x6d, 0x1b, 0x2e, 0xa9, 0x35, 0x9e, 0x1f, 0x1c, 0x42, 0x06, 0xaa, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xd4, 0xe3, 0x0f, 0x5e, 0x76, 0x94, 0xbd, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0x41, 0xfb, 0x1f, 0x9d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xab, 0x87, 0x64, 0xe0, 0x72, 0x0f, 0xd9, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5b, 0x3d, 0xa4, 0x03, 0xb7, 0x7a, 0x68, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5b, 0x3d, 0xc4, 0x03, 0xb7, 0x7a, 0x98, 0x1c, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xad, 0x1e, 0x36, 0x03, 0xb7, 0x7a, 0x28, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xab, 0x87, 0xd1, 0xc0, 0xad, 0x1e, 0xd6, 0x07, 0x4f, 0xd5, 0x29, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xf5, 0x30, 0x1f, 0xb8, 0xd5, 0x43, 0xc5, 0xe1, 0xdb, 0xf9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x56, 0x0f, 0x1d, 0x03, 0xb7, 0x7a, 0xe8, 0x39, 0x3c, 0x80, 0x5f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xac, 0x87, 0xe4, 0xe0, 0x79, 0x38, 0xda, 0x1b, 0x14, 0x1d, 0xb4, 0x1b, 0xa4, 0xc8, 0xf6, 0x6c, 0xf8, 0x87, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd6, 0xc3, 0x6a, 0xe0, 0x58, 0x0f, 0x35, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xf5, 0x30, 0x1b, 0x38, 0xd6, 0x43, 0xc3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x63, 0x3d, 0xec, 0x06, 0x8e, 0xf5, 0x30, 0x3d, 0x78, 0x7f, 0x6d, 0xf6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xac, 0x87, 0xed, 0xc0, 0xb1, 0x1e, 0xc6, 0x87, 0xa7, 0x77, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x63, 0x3d, 0xac, 0x07, 0x8e, 0xf5, 0x50, 0x70, 0x50, 0xfa, 0x19, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xeb, 0xa1, 0x62, 0xe0, 0x58, 0x0f, 0x1d, 0x87, 0xc7, 0x64, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x63, 0x3d, 0x94, 0x0c, 0x1c, 0xeb, 0xa1, 0xe5, 0xf0, 0x98, 0x4c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xad, 0x87, 0xe4, 0xe0, 0x79, 0x38, 0xda, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xf5, 0x90, 0x0e, 0x5c, 0xeb, 0x61, 0xb7, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x5a, 0x0f, 0xf9, 0xc0, 0xb5, 0x1e, 0x06, 0x87, 0x07, 0x6f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x5a, 0x0f, 0x8b, 0x81, 0x6b, 0x3d, 0xcc, 0x36, 0x5c, 0x52, 0x6b, 0x1c, 0x3a, 0x48, 0x2a, 0xe0, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xd6, 0xc3, 0x72, 0xe0, 0x5a, 0x0f, 0xd3, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xf5, 0x90, 0x1c, 0x3c, 0x0f, 0x47, 0x7b, 0x83, 0x93, 0x83, 0xdc, 0x06, 0x6f, 0x70, 0x91, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xf5, 0x30, 0x1a, 0x38, 0xd7, 0xc3, 0xec, 0x20, 0x3c, 0x55, 0x57, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xf5, 0x90, 0x0d, 0xdc, 0xeb, 0x21, 0x3d, 0x08, 0xe9, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xd7, 0x43, 0x3e, 0x70, 0xb1, 0x87, 0xe5, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xaf, 0x87, 0xcd, 0xc0, 0xbd, 0x1e, 0xd6, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xf5, 0xb0, 0x1a, 0xb8, 0xd7, 0xc3, 0xec, 0xe0, 0xbc, 0x40, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf7, 0x7a, 0xd8, 0x0d, 0xdc, 0xeb, 0x61, 0x7c, 0xf0, 0x84, 0x35, 0xed, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xd8, 0x43, 0x7e, 0xf0, 0xba, 0x3c, 0xed, 0x0d, 0x8a, 0x0e, 0xda, 0x35, 0x7c, 0xdf, 0x3e, 0xf0, 0x69, 0xe6, 0x06, 0x25, 0x74, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb0, 0x87, 0xd9, 0xc0, 0xc1, 0x1e, 0xb6, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xf6, 0xb0, 0x1b, 0x38, 0xd8, 0xc3, 0xf0, 0xf0, 0x43, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb0, 0x87, 0xe5, 0xc0, 0xc1, 0x1e, 0xa6, 0x87, 0x1f, 0x6a, 0x3a, 0x08, 0xd3, 0xb1, 0x0d, 0xff, 0xf0, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x7b, 0x28, 0x18, 0x38, 0xd8, 0x43, 0xe3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x3d, 0x34, 0x0c, 0x1c, 0xec, 0xa1, 0x6c, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc1, 0x1e, 0x2a, 0x06, 0x0e, 0xf6, 0xd0, 0x72, 0xf0, 0xfe, 0xda, 0xec, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x60, 0x0f, 0x35, 0x03, 0x07, 0x7b, 0xe8, 0x39, 0x3c, 0xbd, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xec, 0xa1, 0x68, 0xe0, 0x60, 0x0f, 0x5d, 0x07, 0xa5, 0x9f, 0x71, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc1, 0x1e, 0xda, 0x06, 0x0e, 0xf6, 0x50, 0x77, 0x70, 0x6a, 0x6e, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xf6, 0xd0, 0x37, 0x70, 0xb0, 0x87, 0xc2, 0x83, 0x80, 0x65, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xf6, 0x90, 0x1f, 0xbc, 0x2e, 0x4f, 0x7b, 0x83, 0x63, 0xb8, 0xc1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xec, 0x61, 0x70, 0xf0, 0xba, 0x3c, 0xed, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x7b, 0x58, 0x0c, 0x5c, 0xec, 0x61, 0xb6, 0xc1, 0xca, 0x5e, 0xd8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xd8, 0xc3, 0xe8, 0xe0, 0x6d, 0xaa, 0xda, 0x07, 0x0f, 0x64, 0xce, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xf6, 0xb0, 0x1b, 0xb8, 0xd8, 0xc3, 0xf0, 0xf0, 0xf4, 0x4e, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x7b, 0xc8, 0x06, 0x6e, 0xf6, 0x90, 0x1e, 0x04, 0x8e, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xec, 0x21, 0x1f, 0xb8, 0xda, 0xc3, 0x72, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xd9, 0xc3, 0x66, 0xe0, 0x66, 0x0f, 0x05, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xf6, 0x30, 0x1a, 0xb8, 0xd9, 0xc3, 0xee, 0x20, 0x0d, 0x5b, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xd9, 0xc3, 0x70, 0xe0, 0x66, 0x0f, 0xeb, 0x83, 0x27, 0xac, 0x69, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x7b, 0x98, 0x0f, 0xdc, 0xec, 0x61, 0x7f, 0x50, 0x54, 0x8a, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x47, 0x7b, 0xc8, 0x0f, 0x1e, 0x57, 0xab, 0xbd, 0x41, 0xd1, 0x41, 0xbb, 0x86, 0xef, 0xdb, 0x07, 0x3e, 0x6d, 0xde, 0xa0, 0x84, 0x8e, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xf6, 0x30, 0x1b, 0x38, 0xda, 0xc3, 0x76, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd1, 0x1e, 0x76, 0x03, 0x47, 0x7b, 0x18, 0x1e, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xf6, 0xb0, 0x1c, 0x38, 0xda, 0xc3, 0xf4, 0xf0, 0x43, 0x4d, 0x07, 0x61, 0x3a, 0xb6, 0xe1, 0x1f, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x68, 0x0f, 0x05, 0x03, 0x47, 0x7b, 0x68, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb4, 0x87, 0x86, 0x81, 0xa3, 0x3d, 0x94, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xda, 0x43, 0xc5, 0xc0, 0xd1, 0x1e, 0x5a, 0x0e, 0xde, 0x5f, 0x9b, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xed, 0xa1, 0x66, 0xe0, 0x68, 0x0f, 0x3d, 0x87, 0xa7, 0x77, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x3d, 0x14, 0x0d, 0x1c, 0xed, 0xa1, 0xeb, 0xa0, 0xf4, 0x33, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xda, 0x43, 0xdb, 0xc0, 0xd1, 0x1e, 0xaa, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xed, 0xa1, 0x6e, 0xe0, 0x68, 0x0f, 0x8d, 0x87, 0x4f, 0x01, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x3d, 0x54, 0x0e, 0x1c, 0xed, 0xa1, 0xf7, 0xe0, 0x09, 0x6b, 0xda, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd1, 0x1e, 0x8a, 0x07, 0x8e, 0xf6, 0xd0, 0x7c, 0x50, 0x54, 0x8a, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xed, 0xa1, 0x7b, 0xe0, 0x68, 0x0f, 0xe5, 0x07, 0x01, 0xcb, 0xda, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xed, 0x21, 0x3f, 0x78, 0x5c, 0xad, 0xf6, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xda, 0xc3, 0xe0, 0xe0, 0x71, 0xb5, 0xda, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xf6, 0xb0, 0x18, 0xb8, 0xda, 0xc3, 0x6c, 0x83, 0xa5, 0xad, 0xb0, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb5, 0x87, 0xd1, 0xc1, 0x23, 0xe3, 0xb5, 0x37, 0xbc, 0xad, 0x33, 0xf0, 0x69, 0x73, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd5, 0x1e, 0x76, 0x03, 0x57, 0x7b, 0x18, 0x1e, 0x9e, 0xde, 0x69, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x6e, 0x0f, 0xd9, 0xc0, 0xdd, 0x1e, 0xd2, 0x83, 0x20, 0x36, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x3d, 0xe4, 0x03, 0x87, 0x7b, 0x98, 0x6d, 0x50, 0x74, 0xd0, 0x0e, 0x3c, 0x5b, 0xb8, 0xe1, 0x1f, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x6e, 0x0f, 0xd3, 0x81, 0xbb, 0x3d, 0x74, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xdb, 0xc3, 0x76, 0xe0, 0x6e, 0x0f, 0x35, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xf6, 0x30, 0x1e, 0xb8, 0xdb, 0xc3, 0xfe, 0xe0, 0xfd, 0xb5, 0xd9, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xdd, 0x1e, 0x0a, 0x06, 0xee, 0xf6, 0xd0, 0x70, 0x78, 0x7a, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xdb, 0x43, 0xc5, 0xc0, 0xdd, 0x1e, 0x5a, 0x0e, 0x4a, 0x3f, 0xe3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x3d, 0xf4, 0x0c, 0xdc, 0xed, 0xa1, 0x72, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xdd, 0x1e, 0x8a, 0x06, 0xee, 0xf6, 0xd0, 0x75, 0x78, 0xcd, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xdb, 0x43, 0xd9, 0xc0, 0xdd, 0x1e, 0x1a, 0x0f, 0x9e, 0xb0, 0xa6, 0x5d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb8, 0x87, 0xfc, 0xe0, 0xe5, 0xfc, 0xda, 0x1b, 0x1c, 0xc3, 0x0d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x70, 0x0f, 0x83, 0x83, 0x97, 0xf3, 0x6b, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xdc, 0xc3, 0x62, 0xe0, 0x70, 0x0f, 0x9b, 0x83, 0xc7, 0xa5, 0x67, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x7b, 0x18, 0x0d, 0x1c, 0xee, 0x61, 0x75, 0x78, 0x7a, 0xa7, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x9b, 0x05, 0xbe, 0xcc, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x3c, 0x7e, 0xe0, 0x26, 0x0f, 0xc9, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x3c, 0x64, 0x03, 0x27, 0x78, 0x18, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0xb6, 0xcb, 0x3e, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x04, 0x0f, 0xf9, 0xc1, 0xcb, 0x4a, 0xb6, 0x0f, 0x5e, 0x3e, 0x98, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x78, 0xfc, 0xc1, 0x73, 0x45, 0xb6, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xe0, 0x21, 0x1b, 0xb8, 0xc1, 0x43, 0x7e, 0xf0, 0xb0, 0x98, 0xd1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xc2, 0xe3, 0x0f, 0x9e, 0x2b, 0xb2, 0xbd, 0x41, 0x61, 0xa8, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xe1, 0x21, 0x1b, 0x38, 0xc2, 0xc3, 0x62, 0xc3, 0xe7, 0x2e, 0x1b, 0xbe, 0xa3, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x23, 0x3c, 0x0c, 0x0e, 0x1e, 0x39, 0xb3, 0x7d, 0x50, 0x54, 0x8a, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x15, 0x1e, 0x7f, 0xf0, 0x5c, 0x91, 0xed, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x1a, 0x5b, 0xfb, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xf0, 0x30, 0x18, 0xb8, 0xc2, 0xc3, 0xe2, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x33, 0x3c, 0xfe, 0xe0, 0xb9, 0x22, 0xdb, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xf0, 0x90, 0x0d, 0x9c, 0xe1, 0x61, 0xbe, 0x41, 0x31, 0x89, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xe1, 0x21, 0x1e, 0x38, 0xc3, 0xc3, 0x72, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x19, 0x1e, 0xf2, 0x81, 0x33, 0x3c, 0xcc, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xe1, 0x61, 0x30, 0x70, 0x86, 0x87, 0xcd, 0xc1, 0x79, 0xbc, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xc3, 0xc3, 0x68, 0xe0, 0x0c, 0x0f, 0xab, 0x83, 0x30, 0x1d, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xc3, 0xc3, 0x6e, 0xe0, 0x0c, 0x0f, 0xc3, 0x83, 0x10, 0x7c, 0xe8, 0xa0, 0xb1, 0xb5, 0xcf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x0e, 0x0f, 0xc9, 0xc0, 0x1d, 0x1e, 0xe6, 0x1b, 0x1e, 0x94, 0x5c, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1d, 0x1e, 0xa2, 0x81, 0x3b, 0x3c, 0xe4, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xf0, 0x90, 0x0d, 0xdc, 0xe1, 0x21, 0x3c, 0x38, 0x35, 0xb7, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x78, 0x48, 0x07, 0xee, 0xf0, 0x10, 0x1f, 0x9c, 0x2e, 0x32, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xf0, 0x30, 0x18, 0xb8, 0xc3, 0xc3, 0x6a, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1d, 0x1e, 0x16, 0x03, 0x77, 0x78, 0x98, 0x1c, 0x04, 0x2c, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x87, 0x87, 0xcd, 0xc0, 0x1d, 0x1e, 0x46, 0x07, 0xa7, 0x23, 0x91, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3b, 0x3c, 0xcc, 0x06, 0xee, 0xf0, 0xb0, 0x3b, 0x28, 0x28, 0x32, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3b, 0x3c, 0x2c, 0x0f, 0xde, 0x2f, 0xb5, 0xbd, 0xe1, 0x6d, 0x9d, 0xc1, 0xd3, 0x83, 0xc6, 0xd6, 0x3e, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x10, 0x8f, 0x3f, 0x78, 0xae, 0xc8, 0xf6, 0x86, 0xaf, 0x70, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x10, 0x0f, 0xd9, 0xc1, 0x73, 0x45, 0xb6, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xe2, 0x21, 0x1f, 0x38, 0xc4, 0xc3, 0x7e, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xf1, 0x30, 0x18, 0x38, 0xc4, 0xc3, 0xe8, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x3c, 0xac, 0x06, 0x0e, 0xf1, 0x30, 0xdf, 0xf0, 0xef, 0xfc, 0x06, 0x8f, 0xf3, 0x1a, 0x3d, 0x78, 0x73, 0xcc, 0x68, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x89, 0xc7, 0x1f, 0x3c, 0x57, 0x64, 0x7b, 0x83, 0x05, 0x98, 0x4d, 0x6b, 0xf8, 0xbe, 0x7d, 0x83, 0xf6, 0x3f, 0x3a, 0x37, 0x28, 0xa1, 0x63, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x3c, 0xe4, 0x03, 0x97, 0x78, 0xd8, 0x6f, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x25, 0x1e, 0x06, 0x03, 0x97, 0x78, 0x18, 0x1d, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x89, 0x87, 0xd5, 0xc0, 0x25, 0x1e, 0xe6, 0x07, 0x8f, 0xc0, 0xdb, 0xee, 0x20, 0x4c, 0xc7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x53, 0x3c, 0x24, 0x03, 0xa7, 0x78, 0xa8, 0xdb, 0xa0, 0x84, 0xc7, 0x5c, 0x70, 0xfa, 0xa0, 0xb1, 0xb5, 0xcf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x14, 0x0f, 0x93, 0x81, 0x53, 0x3c, 0xac, 0x0e, 0x1a, 0x63, 0x13, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x53, 0x3c, 0xcc, 0x06, 0x4e, 0xf1, 0xd0, 0xb6, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x14, 0x0f, 0xbb, 0x81, 0x53, 0x3c, 0x6c, 0x0f, 0x4e, 0x04, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x29, 0x1e, 0xc6, 0x03, 0xa7, 0x78, 0xd8, 0x1f, 0x34, 0xc6, 0x26, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xe2, 0xa1, 0x60, 0xe0, 0x14, 0x0f, 0x65, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x34, 0xb6, 0xf6, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x78, 0xa8, 0x19, 0x38, 0xc5, 0x43, 0xd7, 0x86, 0xb7, 0x75, 0x0e, 0x9e, 0x97, 0xb8, 0x5d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x8b, 0xc7, 0x1f, 0x3c, 0x57, 0x64, 0x7b, 0x83, 0x20, 0x3d, 0xdd, 0xe0, 0x41, 0x6a, 0xdb, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x78, 0x48, 0x06, 0x8e, 0xf1, 0x10, 0x1d, 0x7e, 0xa8, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x63, 0x3c, 0x4c, 0x06, 0xce, 0xf1, 0xd0, 0xb6, 0x41, 0x41, 0x1a, 0x3b, 0x38, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xe3, 0x61, 0x39, 0x70, 0x8c, 0x87, 0x9a, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x78, 0x98, 0x0e, 0x1c, 0xe3, 0x61, 0x7d, 0x50, 0x14, 0xff, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x78, 0x98, 0x0f, 0x1c, 0xe3, 0x61, 0x7f, 0x50, 0x54, 0x8a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x78, 0x28, 0x18, 0x38, 0xc6, 0x43, 0xcb, 0xc1, 0xab, 0xd3, 0xb6, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6b, 0x3c, 0x2c, 0x0e, 0x9e, 0x3e, 0xba, 0xbd, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xe3, 0x61, 0x35, 0x70, 0x8d, 0x87, 0x82, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x78, 0x98, 0x0d, 0x5c, 0xe3, 0x61, 0x79, 0xf8, 0xe2, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xc6, 0xc3, 0x74, 0xe0, 0x1a, 0x0f, 0xdb, 0x83, 0x94, 0xb7, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x1a, 0x0f, 0xe3, 0x81, 0x6b, 0x3c, 0xec, 0x0f, 0x92, 0xf6, 0x2d, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x73, 0x3c, 0x2c, 0x0e, 0x9e, 0x3e, 0xba, 0xbd, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x1c, 0x0f, 0x93, 0x81, 0x73, 0x3c, 0x4c, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xe3, 0x61, 0x33, 0x70, 0x8e, 0x87, 0xd1, 0xe1, 0x31, 0x99, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x1c, 0x0f, 0xab, 0x81, 0x73, 0x3c, 0x2c, 0x37, 0x7c, 0x1c, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x78, 0xd8, 0x0d, 0x9c, 0xe3, 0x61, 0x78, 0x90, 0xf2, 0x76, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x8e, 0x87, 0xed, 0xc0, 0x39, 0x1e, 0x0a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xe3, 0x61, 0x3c, 0x70, 0x8e, 0x87, 0xf5, 0xe1, 0x31, 0x99, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x1c, 0x0f, 0xf3, 0x81, 0x73, 0x3c, 0xec, 0x0f, 0x02, 0x96, 0xb5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x1c, 0x0f, 0x0d, 0x03, 0xe7, 0x78, 0xa8, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x8e, 0x87, 0x8a, 0x81, 0x73, 0x3c, 0x74, 0x1c, 0xa4, 0xbc, 0x5d, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x78, 0x28, 0x19, 0x38, 0xc7, 0x43, 0xd3, 0xc1, 0xab, 0xd3, 0xb6, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xf1, 0xd0, 0x35, 0x70, 0x8e, 0x87, 0xb2, 0x83, 0x82, 0x22, 0xb3, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7b, 0x3c, 0x24, 0x03, 0xf7, 0x78, 0x18, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xc7, 0x43, 0x34, 0x70, 0x8f, 0x87, 0xf4, 0xe0, 0x3c, 0xde, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xe3, 0x21, 0x1e, 0xb8, 0xc7, 0x43, 0x7e, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x3d, 0x1e, 0x26, 0x03, 0xf7, 0x78, 0xe8, 0xdc, 0xf0, 0xa0, 0xe4, 0x1a, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xf1, 0xb0, 0x19, 0xb8, 0xc7, 0xc3, 0x70, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x3d, 0x1e, 0x46, 0x03, 0xf7, 0x78, 0x58, 0x1d, 0x1e, 0x93, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xf1, 0x30, 0x1b, 0xb8, 0xc7, 0xc3, 0xee, 0xe0, 0xbc, 0x40, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x8f, 0x87, 0xe5, 0xc0, 0x3d, 0x1e, 0xe6, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xf1, 0x30, 0x1d, 0xb8, 0xc7, 0xc3, 0xf6, 0xf0, 0x98, 0xcc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x8f, 0x87, 0xf1, 0xc0, 0x3d, 0x1e, 0xd6, 0x87, 0x07, 0x6f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xf1, 0xb0, 0x1f, 0xb8, 0xc7, 0x43, 0xc9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7b, 0x3c, 0x14, 0x0c, 0xdc, 0xe3, 0xa1, 0xe1, 0xe0, 0xd4, 0xdc, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xe3, 0xa1, 0x62, 0xe0, 0x1e, 0x0f, 0x1d, 0x07, 0xa7, 0x8b, 0x8c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7b, 0x3c, 0xb4, 0x0c, 0xdc, 0xe3, 0xa1, 0x6a, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x3d, 0x1e, 0x6a, 0x06, 0xee, 0xf1, 0xd0, 0x73, 0x10, 0xb0, 0xac, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x3d, 0x1e, 0x8a, 0x06, 0xee, 0xf1, 0xd0, 0x74, 0x70, 0x3a, 0x12, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xc7, 0x43, 0xd7, 0xc0, 0x3d, 0x1e, 0xca, 0x0e, 0x0a, 0x8a, 0xcc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x1e, 0x0f, 0x75, 0x07, 0x2f, 0x47, 0xdf, 0x3e, 0x78, 0x75, 0xda, 0xf6, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x41, 0x1e, 0x92, 0x81, 0x83, 0x3c, 0x0c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xe4, 0x21, 0x1a, 0x38, 0xc8, 0x43, 0x7a, 0x70, 0x8c, 0x70, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xf2, 0x10, 0x0f, 0x1c, 0xe4, 0x21, 0x3f, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x20, 0x0f, 0x93, 0x81, 0x93, 0x3c, 0x1c, 0xd8, 0xa0, 0x20, 0x8d, 0x1d, 0x9c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xf2, 0xb0, 0x1c, 0x38, 0xc8, 0x43, 0xd1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x3c, 0x4c, 0x07, 0x0e, 0xf2, 0xb0, 0x3e, 0x28, 0x8a, 0x7f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x3c, 0xcc, 0x07, 0x0e, 0xf2, 0xb0, 0x3f, 0x28, 0x2a, 0xc5, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x3c, 0x14, 0x0c, 0x1c, 0xe4, 0xa1, 0x67, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0x0f, 0x52, 0xdb, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xf2, 0xb0, 0x38, 0x78, 0xb0, 0x06, 0xf7, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x91, 0x87, 0xd5, 0xc0, 0x45, 0x1e, 0x0a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xe4, 0x61, 0x36, 0x70, 0x91, 0x87, 0xe5, 0xe1, 0x8b, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x22, 0x0f, 0xd3, 0x81, 0x8b, 0x3c, 0x6c, 0x0f, 0x52, 0xde, 0xae, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8b, 0x3c, 0x8c, 0x07, 0x2e, 0xf2, 0xb0, 0xdf, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x44, 0xbf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xc9, 0xc3, 0xe2, 0xe0, 0xc1, 0x1a, 0xdc, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xf2, 0x30, 0x19, 0x38, 0xc9, 0xc3, 0x7e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x49, 0x1e, 0x36, 0x03, 0x27, 0x79, 0x18, 0x1d, 0x1e, 0x93, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xf2, 0xb0, 0x1a, 0x38, 0xc9, 0xc3, 0x7c, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x49, 0x1e, 0x66, 0x03, 0x27, 0x79, 0x58, 0x1e, 0xfe, 0x04, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xf2, 0x30, 0x1d, 0x38, 0xc9, 0xc3, 0xf6, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xf2, 0x30, 0x1e, 0x38, 0xc9, 0xc3, 0xfa, 0x20, 0xe5, 0xed, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x3c, 0x14, 0x0c, 0x9c, 0xe4, 0xa1, 0x65, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x49, 0x1e, 0x1a, 0x06, 0x4e, 0xf2, 0x50, 0x71, 0x78, 0x4c, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xc9, 0x43, 0xc7, 0xc0, 0x49, 0x1e, 0x4a, 0x0e, 0x8f, 0xc9, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xe4, 0xa1, 0x66, 0xe0, 0x24, 0x0f, 0x8d, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xf2, 0xd0, 0x33, 0x70, 0x92, 0x87, 0xa2, 0x83, 0x94, 0xb7, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x24, 0x0f, 0x4d, 0x03, 0x27, 0x79, 0x28, 0x3c, 0x78, 0xa6, 0x09, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x49, 0x1e, 0x2a, 0x07, 0x4e, 0xf2, 0xd0, 0xbe, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x24, 0x0f, 0x9d, 0x03, 0x27, 0x79, 0x28, 0x3d, 0x08, 0x58, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x24, 0x0f, 0xad, 0x03, 0x27, 0x79, 0x28, 0xdf, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0xc1, 0x83, 0xd4, 0xb6, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xf2, 0x50, 0x3f, 0x70, 0x92, 0x87, 0xfe, 0x83, 0x82, 0x22, 0xb3, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x0b, 0xf8, 0x79, 0x6f, 0x77, 0xec, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0xd7, 0x9a, 0x71, 0x37, 0x00, 0x3e, 0xcc, 0x95, 0xc9, 0xa5, 0x85, 0xb1, 0xa5, 0xe9, 0x95, 0x91, 0x81, 0xc8, 0x95, 0xcd, 0xc1, 0xbd, 0xb9, 0xcd, 0x95, 0x81, 0xc0, 0x85, 0x8d, 0xad, 0x95, 0xd1, 0x81, 0xc0, 0x85, 0xe5, 0xb1, 0xbd, 0x85, 0x91, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0xd6, 0x8c, 0x7b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0x84, 0x30, 0x1b, 0xb8, 0x13, 0xc2, 0x7a, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0x78, 0xc0, 0x57, 0x87, 0x97, 0xf7, 0x76, 0xc7, 0x1e, 0x4e, 0xb1, 0x35, 0x78, 0xa3, 0xe5, 0xf1, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x1b, 0x2d, 0x8f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xbe, 0x8c, 0x1b, 0xb8, 0x37, 0xe3, 0x37, 0x38, 0x40, 0x88, 0x6e, 0xf0, 0x46, 0xcb, 0xe3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x30, 0xe3, 0x0e, 0x1e, 0x75, 0xc7, 0xbd, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc0, 0x0c, 0xc9, 0xc0, 0x81, 0x19, 0x66, 0x1b, 0xfe, 0x9d, 0x5f, 0x00, 0xcf, 0x30, 0xbd, 0xb4, 0xb6, 0x3a, 0x3a, 0xb4, 0x96, 0x39, 0xba, 0x30, 0xba, 0xb2, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0b, 0x33, 0x24, 0x03, 0x17, 0x66, 0x98, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0x97, 0xfd, 0x0d, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x85, 0x19, 0xe2, 0x83, 0x97, 0x07, 0x72, 0x6f, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x85, 0x19, 0xf2, 0x81, 0x0b, 0x33, 0x6c, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc2, 0x0c, 0xa3, 0x81, 0x0b, 0x33, 0xac, 0x0f, 0x9e, 0xaa, 0x53, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x62, 0x86, 0x64, 0xe0, 0xc4, 0x0c, 0xe9, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb8, 0xb7, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xcc, 0x10, 0x1d, 0x3c, 0xaf, 0x91, 0xfb, 0xe0, 0xf9, 0x88, 0xc3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x8d, 0x19, 0x92, 0x81, 0x1b, 0x33, 0xf4, 0x6f, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xfb, 0x58, 0x98, 0x1b, 0x88, 0x58, 0x19, 0xc8, 0x0a, 0x5c, 0x59, 0xd9, 0x5a, 0x19, 0x19, 0x48, 0x9a, 0x1b, 0x08, 0x1d, 0x5a, 0x19, 0x88, 0x5b, 0x58, 0x5b, 0xd9, 0x1c, 0x5c, 0xd8, 0x58, 0xd9, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xca, 0xf6, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x98, 0x61, 0x30, 0x70, 0x63, 0x86, 0xe9, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x98, 0x61, 0x31, 0x70, 0x63, 0x86, 0xd1, 0x41, 0x89, 0xf8, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x98, 0x61, 0x35, 0x70, 0x63, 0x86, 0xe5, 0x86, 0x7f, 0xe7, 0x17, 0xf0, 0xe7, 0xd2, 0xc8, 0xca, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x32, 0x43, 0x32, 0x70, 0x65, 0x86, 0x13, 0x1b, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xe0, 0x11, 0x16, 0x16, 0x88, 0x5c, 0x19, 0x59, 0x99, 0x59, 0x9a, 0x5b, 0x19, 0xc8, 0xdb, 0xdc, 0x5c, 0x5d, 0x98, 0x5c, 0x1e, 0x48, 0x9a, 0x1b, 0x08, 0x5d, 0x99, 0x5c, 0xdb, 0x1c, 0xc8, 0x9b, 0x19, 0x88, 0xd8, 0x9b, 0x5b, 0x99, 0xd7, 0x5c, 0x1a, 0x59, 0xd9, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x31, 0xe3, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x99, 0x21, 0x1a, 0xb8, 0x32, 0xc3, 0xe2, 0xe0, 0x15, 0x90, 0xc3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x99, 0x19, 0x92, 0x81, 0x33, 0x33, 0x94, 0x6c, 0xf8, 0x73, 0x69, 0x80, 0xc7, 0x8c, 0xed, 0xed, 0x6e, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x33, 0x33, 0xe4, 0x07, 0x0f, 0x8a, 0xe5, 0xde, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x33, 0x33, 0x0c, 0x06, 0xce, 0xcc, 0xb0, 0x39, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x33, 0x33, 0x8c, 0x06, 0xce, 0xcc, 0x30, 0x3c, 0x78, 0x77, 0x28, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x66, 0x86, 0xe5, 0xc0, 0x99, 0x19, 0x3a, 0x36, 0xfc, 0x3b, 0xbf, 0x00, 0x3e, 0x66, 0x6c, 0x6f, 0x77, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x65, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x9b, 0x21, 0x19, 0x38, 0x36, 0x43, 0xcb, 0x86, 0x3f, 0x97, 0x36, 0xd4, 0x88, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x36, 0x43, 0x7a, 0xf0, 0xb8, 0x60, 0xee, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x36, 0x43, 0x3c, 0x70, 0x6c, 0x86, 0xc5, 0x41, 0x89, 0x58, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x9b, 0x61, 0x32, 0x70, 0x6c, 0x86, 0xd9, 0xc1, 0x19, 0x09, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x36, 0xc3, 0x6e, 0xe0, 0xd8, 0x0c, 0x25, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0xf7, 0x12, 0x35, 0x57, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb5, 0x19, 0x92, 0x81, 0x6b, 0x33, 0x3c, 0xde, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x00, 0x5e, 0x29, 0x0b, 0x1b, 0x43, 0x03, 0xb9, 0x4b, 0x93, 0x2b, 0x03, 0x91, 0x2b, 0x83, 0x93, 0x2b, 0x9b, 0x2b, 0x73, 0xa3, 0x9b, 0x03, 0x09, 0x03, 0x31, 0x63, 0x7b, 0xbb, 0x63, 0x01, 0xa1, 0x43, 0x2b, 0x03, 0xb1, 0x0b, 0x63, 0xab, 0x2b, 0x03, 0x49, 0x9b, 0x03, 0x49, 0xa3, 0x9b, 0x03, 0x09, 0x9b, 0x9b, 0x7b, 0x1b, 0x4b, 0x0b, 0xa3, 0x2b, 0x23, 0x03, 0x81, 0x2b, 0x2b, 0x5b, 0x9b, 0x03, 0x31, 0x7b, 0x93, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x09, 0x1b, 0x5b, 0x9b, 0xdb, 0xf0, 0xe7, 0xd2, 0x80, 0x07, 0xf7, 0x46, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb5, 0x19, 0xd2, 0x81, 0x6b, 0x33, 0x8c, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xda, 0x0c, 0xf1, 0xc0, 0xb5, 0x19, 0x16, 0x07, 0xef, 0xa6, 0x9a, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xcd, 0x30, 0x19, 0xb8, 0x36, 0xc3, 0xec, 0xe0, 0xdd, 0x96, 0x22, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb5, 0x19, 0x76, 0x03, 0xd7, 0x66, 0xd8, 0x1e, 0x9c, 0x91, 0x50, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xcd, 0x90, 0x0c, 0x9c, 0x9b, 0xe1, 0xc4, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0x7c, 0xcf, 0xd1, 0xbd, 0xc9, 0x95, 0xcd, 0x81, 0xac, 0x95, 0xe5, 0xcd, 0x81, 0x98, 0xbd, 0xc9, 0x81, 0x94, 0xcc, 0xa1, 0xd5, 0xd1, 0x81, 0xc8, 0x95, 0xc5, 0xd5, 0x95, 0xcd, 0xd1, 0xcd, 0x6d, 0xf8, 0x73, 0x69, 0x00, 0xbf, 0x31, 0xb6, 0xb4, 0x32, 0x37, 0xba, 0x96, 0x31, 0xb4, 0xb0, 0x34, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xcd, 0xb0, 0x18, 0x38, 0x37, 0xc3, 0xec, 0xe0, 0x11, 0xfa, 0xc3, 0xad, 0x80, 0x47, 0x56, 0x76, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0x1e, 0x59, 0xd9, 0xdd, 0x00, 0x3f, 0x99, 0x5c, 0x1e, 0xc8, 0x0a, 0x5a, 0xd9, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xb6, 0x71, 0x03, 0x37, 0x6e, 0x88, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xb6, 0x21, 0x19, 0x38, 0x6d, 0xc3, 0x72, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x69, 0x1b, 0xa2, 0x81, 0xd3, 0x36, 0x0c, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x6d, 0x08, 0x0f, 0x1e, 0xe8, 0xcf, 0x7d, 0x50, 0x84, 0xc5, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x6d, 0x58, 0x0c, 0x9c, 0xb6, 0x61, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x6d, 0xc3, 0xe6, 0xe0, 0x2d, 0x04, 0xdd, 0x07, 0x61, 0x3a, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xb6, 0x61, 0x35, 0x70, 0xda, 0x86, 0xe1, 0x86, 0x3f, 0x97, 0x06, 0x1f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb4, 0x0d, 0xbb, 0x83, 0x57, 0x27, 0x74, 0x1f, 0x7e, 0xa8, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xdb, 0xb8, 0x83, 0x97, 0xe4, 0x73, 0x6f, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x6d, 0x43, 0x32, 0x70, 0xdb, 0x86, 0xe8, 0x20, 0x4c, 0xc7, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb8, 0x8d, 0x3b, 0x78, 0x49, 0x3e, 0xf7, 0x86, 0x07, 0x25, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe3, 0x36, 0x24, 0x03, 0xc7, 0x6d, 0x88, 0x0e, 0xcf, 0x4c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x75, 0x1b, 0x77, 0xf0, 0x92, 0x7c, 0xee, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x28, 0xa1, 0x63, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xeb, 0x36, 0x24, 0x03, 0xd7, 0x6d, 0x18, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x6e, 0x43, 0x34, 0x70, 0xdd, 0x86, 0xc1, 0x86, 0x3f, 0x97, 0x06, 0x27, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xba, 0x0d, 0xe1, 0xc1, 0xeb, 0x3f, 0xba, 0x0f, 0xdf, 0xce, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x6d, 0x58, 0x0c, 0x5c, 0xb7, 0x61, 0xb7, 0xe1, 0xcf, 0xa5, 0xc1, 0xcb, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x6e, 0xc3, 0xe6, 0xe0, 0x8d, 0x25, 0xdd, 0x87, 0x07, 0xf0, 0x3b, 0x08, 0xd3, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xba, 0x0d, 0xd3, 0x81, 0xeb, 0x36, 0xf4, 0x6c, 0x50, 0x0c, 0xc8, 0x6e, 0x78, 0x70, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x6e, 0xc3, 0x7e, 0xe0, 0xba, 0x0d, 0x05, 0x87, 0xa7, 0x75, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xba, 0x0d, 0x0d, 0x03, 0xd7, 0x6d, 0xa8, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xdd, 0x86, 0x8a, 0x81, 0xeb, 0x36, 0x74, 0x1c, 0x9e, 0xd6, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xdb, 0x50, 0x32, 0x70, 0xdd, 0x86, 0x96, 0xc3, 0x83, 0x37, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x79, 0x1b, 0x77, 0xf0, 0x92, 0x7c, 0xee, 0x0d, 0x5f, 0xe1, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x79, 0x1b, 0x92, 0x83, 0x97, 0xe4, 0x73, 0x6f, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x6f, 0x43, 0x3a, 0x70, 0xde, 0x86, 0xe9, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xb7, 0x21, 0x1e, 0x38, 0x6f, 0xc3, 0xe4, 0xa0, 0xf4, 0xa6, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xdb, 0xb0, 0x19, 0x38, 0x6f, 0xc3, 0xe8, 0x20, 0x4c, 0xc7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf3, 0x36, 0xac, 0x06, 0xce, 0xdb, 0xb0, 0x3c, 0x3c, 0x80, 0xdf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xb7, 0x71, 0x07, 0x2f, 0xc9, 0xe7, 0xde, 0xa0, 0x20, 0x98, 0xdd, 0xf0, 0x79, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe0, 0xc6, 0x0f, 0x1c, 0xb8, 0xa1, 0x62, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x81, 0x1b, 0x82, 0x81, 0x03, 0x37, 0xec, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xb8, 0x21, 0x19, 0x38, 0x70, 0x43, 0x78, 0x50, 0x12, 0xcd, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x6e, 0x48, 0x07, 0x0e, 0xdc, 0x10, 0x1f, 0x94, 0xeb, 0xb2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x81, 0x1b, 0xf2, 0x81, 0x03, 0x37, 0x8c, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xb8, 0x61, 0x30, 0x70, 0xe0, 0x86, 0xc5, 0x41, 0x39, 0x01, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xb8, 0x61, 0x32, 0x70, 0xe0, 0x86, 0xcd, 0xe1, 0xbd, 0xa0, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x03, 0x37, 0xac, 0x06, 0x0e, 0xdc, 0x30, 0x3b, 0x3c, 0xbd, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe0, 0x86, 0xe1, 0xc0, 0x81, 0x1b, 0x1a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xb8, 0x61, 0x39, 0x70, 0xe0, 0x86, 0xf1, 0xe1, 0x4f, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc0, 0x0d, 0xeb, 0x81, 0x03, 0x37, 0xcc, 0x0f, 0xca, 0x09, 0xe8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc0, 0x0d, 0xfb, 0x81, 0x03, 0x37, 0x14, 0x1c, 0xde, 0x0b, 0xaa, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x70, 0xe3, 0x0e, 0x5e, 0x92, 0xcf, 0xbd, 0x41, 0xd1, 0x41, 0x3b, 0xb8, 0xb9, 0x41, 0x11, 0x02, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xb8, 0x21, 0x1f, 0xb8, 0x70, 0xc3, 0x6e, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0xc3, 0xe7, 0x41, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe1, 0x86, 0xcd, 0xc0, 0x85, 0x1b, 0x66, 0x07, 0x25, 0x1c, 0x6d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe2, 0xc6, 0x1d, 0xbc, 0x24, 0x9f, 0x7b, 0x83, 0xa2, 0x83, 0x76, 0xf0, 0x73, 0x83, 0x22, 0x04, 0x7a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x71, 0x43, 0x3e, 0x70, 0xe2, 0x86, 0xdd, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0xcf, 0x83, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc4, 0x0d, 0x9b, 0x81, 0x13, 0x37, 0xcc, 0x0e, 0x4a, 0x71, 0xda, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc6, 0x8d, 0x3b, 0x78, 0x49, 0x3e, 0xf7, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1b, 0x37, 0x76, 0xe0, 0xc6, 0x0d, 0xd9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1b, 0x37, 0x7e, 0xe0, 0xc6, 0x0d, 0xc1, 0x41, 0x31, 0x52, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xb8, 0x21, 0x19, 0xb8, 0x71, 0x43, 0x74, 0x50, 0xfe, 0xd4, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xb8, 0x21, 0x1c, 0xb8, 0x71, 0x43, 0x7a, 0x50, 0x4e, 0x40, 0x37, 0x0b, 0xe0, 0x31, 0x97, 0x66, 0x46, 0xd7, 0x02, 0x57, 0x27, 0x27, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x81, 0x17, 0x37, 0x70, 0xe3, 0x85, 0xaa, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x5e, 0x48, 0x06, 0x0e, 0xbc, 0x10, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0xe5, 0x34, 0xd0, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe0, 0x85, 0xe8, 0xe0, 0x49, 0x92, 0xdd, 0x07, 0x6f, 0xb6, 0xc7, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0b, 0x2f, 0xee, 0xe0, 0x95, 0x8f, 0xdd, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xbc, 0x90, 0x0c, 0x5c, 0x78, 0x21, 0xdd, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0x55, 0x1f, 0xbb, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc4, 0x8b, 0x3b, 0x78, 0xe5, 0x63, 0xf7, 0x86, 0x4f, 0x6c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x2f, 0x24, 0x03, 0x27, 0x5e, 0x28, 0xd9, 0xf0, 0xb9, 0xcb, 0x1a, 0x26, 0x6e, 0x83, 0xb3, 0x90, 0xe9, 0xc1, 0x33, 0x0d, 0x88, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc4, 0x0b, 0xa3, 0x83, 0x97, 0x83, 0x76, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xf1, 0xc2, 0x6a, 0xe0, 0xc4, 0x0b, 0xf3, 0x0d, 0x6f, 0xeb, 0x0c, 0xe0, 0x31, 0x97, 0x66, 0x46, 0xd7, 0x02, 0x57, 0x56, 0x06, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x78, 0x61, 0x3f, 0x70, 0xe2, 0x85, 0x8e, 0x83, 0xd6, 0x3e, 0x0c, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1b, 0x2f, 0xee, 0xe0, 0x95, 0x8f, 0xdd, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xbc, 0xd8, 0x81, 0x1b, 0x2f, 0x44, 0x1b, 0xde, 0xd6, 0x39, 0x78, 0xff, 0xec, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe3, 0x85, 0x6c, 0xe0, 0xc6, 0x0b, 0x4d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xbc, 0x10, 0x0e, 0xdc, 0x78, 0x61, 0xb5, 0xe1, 0x6d, 0x9d, 0x01, 0x3c, 0xe6, 0xd2, 0xcc, 0xe8, 0x5a, 0xda, 0xca, 0xde, 0xee, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1b, 0x2f, 0xcc, 0x06, 0x6e, 0xbc, 0x50, 0xb4, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc6, 0x0b, 0xbb, 0x81, 0x1b, 0x2f, 0x4c, 0x0f, 0x4a, 0x7c, 0xdc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc6, 0x0b, 0xdb, 0x81, 0x1b, 0x2f, 0x54, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf1, 0xc2, 0x78, 0xe0, 0xc6, 0x0b, 0xeb, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf1, 0xc2, 0x7c, 0xe0, 0xc6, 0x0b, 0x0d, 0x07, 0xa9, 0x99, 0xb0, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x5e, 0xe8, 0x18, 0xb8, 0xf1, 0x42, 0xcf, 0x41, 0x6b, 0x1f, 0x06, 0xd5, 0x6a, 0xd0, 0x38, 0x84, 0xc0, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0x41, 0xe3, 0x10, 0x02, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x9c, 0xc4, 0x0d, 0x9c, 0x27, 0xf1, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0x93, 0x90, 0x0c, 0x1c, 0x27, 0x61, 0xb0, 0xe1, 0xcf, 0xa5, 0x0d, 0x12, 0xd5, 0xc8, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x38, 0x09, 0xe9, 0xc1, 0x1b, 0xa1, 0xbb, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x3a, 0x09, 0xc9, 0xc0, 0x75, 0x12, 0xd2, 0x83, 0x07, 0x26, 0x64, 0xb7, 0x1a, 0xbc, 0x5b, 0x43, 0x79, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xdd, 0x1a, 0xca, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x1a, 0x84, 0xd9, 0xc0, 0x69, 0x10, 0x4a, 0x36, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x07, 0x78, 0xd6, 0x91, 0x99, 0xc9, 0x85, 0x9d, 0xb5, 0x95, 0xb9, 0xd1, 0xb9, 0xd5, 0xb5, 0xab, 0xc1, 0x41, 0x9e, 0x6d, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0x20, 0xcf, 0xd6, 0x00, 0x9e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x34, 0x31, 0x2e, 0x31, 0x35, 0xb9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x05, 0xc4, 0x0d, 0x64, 0x10, 0xe2, 0x37, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0x9e, 0xac, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x14, 0x41, 0xfc, 0x40, 0x02, 0x21, 0x4c, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x08, 0x42, 0x36, 0x90, 0x22, 0x08, 0x8b, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8a, 0x20, 0xa4, 0x07, 0xaf, 0x62, 0xef, 0x3e, 0x28, 0xc2, 0x62, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x47, 0x10, 0x7f, 0xf0, 0xce, 0xf4, 0xee, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0x3e, 0xb8, 0xb8, 0x41, 0x09, 0x1d, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x08, 0x42, 0x3a, 0x90, 0x23, 0x08, 0x05, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x04, 0x21, 0x1e, 0xc8, 0x11, 0x84, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb1, 0xb7, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x04, 0x61, 0x72, 0xf0, 0x58, 0xfc, 0xee, 0xc3, 0xb7, 0xf3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8e, 0x20, 0xec, 0x06, 0x72, 0x04, 0x61, 0xbf, 0xe1, 0xcf, 0xa5, 0x0d, 0x0e, 0xf0, 0x92, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x23, 0x08, 0xdb, 0x83, 0xa7, 0xfa, 0x77, 0x1f, 0x1e, 0xc0, 0xef, 0x20, 0x4c, 0xc7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x41, 0xa8, 0x18, 0xc8, 0x11, 0x84, 0xbe, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x82, 0xd0, 0x31, 0x90, 0x23, 0x08, 0x25, 0x87, 0x07, 0x6f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x41, 0x68, 0x19, 0xc8, 0x11, 0x84, 0xba, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x39, 0x82, 0x50, 0x33, 0x90, 0x23, 0x08, 0x4d, 0x07, 0x0b, 0x38, 0xe1, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1c, 0x41, 0xa8, 0x1a, 0xc8, 0x11, 0x84, 0xae, 0xc3, 0xd3, 0x3a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x8e, 0x20, 0x94, 0x0d, 0xe4, 0x08, 0x42, 0xdb, 0xe1, 0xc1, 0x9b, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x24, 0x41, 0xfc, 0xc1, 0x3b, 0xd3, 0xbb, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x09, 0x42, 0x36, 0x90, 0x24, 0x08, 0x83, 0x0d, 0x7f, 0x2e, 0x6d, 0x50, 0xd4, 0x16, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x92, 0x20, 0xe4, 0x07, 0xaf, 0xc2, 0xf0, 0x3e, 0xfc, 0x50, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x82, 0xf8, 0x83, 0x77, 0xa6, 0x77, 0x6f, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x12, 0x84, 0x6c, 0x20, 0x4b, 0x10, 0x8a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x09, 0x42, 0x38, 0x90, 0x25, 0x08, 0xab, 0x83, 0xd7, 0xe5, 0x58, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x59, 0x82, 0x30, 0x1b, 0xc8, 0x12, 0x84, 0xf9, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb1, 0xb7, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x04, 0x61, 0x7a, 0xf0, 0x38, 0x13, 0xef, 0xc3, 0xb7, 0xf3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x96, 0x20, 0xec, 0x07, 0xb2, 0x04, 0xa1, 0x67, 0xc3, 0x9f, 0x4b, 0x1b, 0x1c, 0xe0, 0x25, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4b, 0x10, 0x3a, 0x0e, 0x9e, 0xc6, 0xe2, 0x7d, 0x78, 0x00, 0xbf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x13, 0xc4, 0x1f, 0xbc, 0x33, 0xbd, 0x7b, 0x83, 0xa2, 0x83, 0x76, 0xf0, 0x71, 0xc3, 0xe7, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9e, 0x20, 0x24, 0x03, 0x79, 0x82, 0x50, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x4f, 0x10, 0xa2, 0x81, 0x3c, 0x41, 0x58, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x13, 0x84, 0x6c, 0x20, 0x4f, 0x10, 0xe2, 0x83, 0xf7, 0xd7, 0x66, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x82, 0x90, 0x0f, 0xe4, 0x09, 0xc2, 0xe0, 0xf0, 0x5e, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x27, 0x08, 0x8b, 0x81, 0x3c, 0x41, 0x18, 0x1d, 0x94, 0x7e, 0xc6, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x82, 0x30, 0x1b, 0xc8, 0x13, 0x84, 0xc6, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x82, 0xb0, 0x1b, 0xc8, 0x13, 0x84, 0xf1, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0x05, 0x8e, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x82, 0xb0, 0x3d, 0x78, 0x94, 0x91, 0xf7, 0x41, 0xc0, 0xb2, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x82, 0xb0, 0x1e, 0xc8, 0x13, 0x84, 0xaa, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x79, 0x82, 0x30, 0x1f, 0xc8, 0x13, 0x84, 0x8e, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x61, 0x75, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x09, 0x42, 0xc5, 0xc1, 0x23, 0x9e, 0xbc, 0x0f, 0x02, 0x96, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x13, 0x84, 0x92, 0x81, 0x3c, 0x41, 0x68, 0xda, 0xf0, 0xb9, 0xcb, 0x80, 0xe7, 0x96, 0xc6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x9e, 0x20, 0x14, 0x1d, 0x3c, 0xa4, 0xca, 0xfb, 0x20, 0x60, 0x59, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x04, 0xa1, 0x6b, 0x20, 0x4f, 0x10, 0x0a, 0x37, 0x7c, 0xee, 0xb2, 0x41, 0xbb, 0x90, 0x67, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x27, 0x08, 0x7d, 0x07, 0xcf, 0xd9, 0xf2, 0x3e, 0x08, 0x58, 0xd6, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x44, 0x41, 0xfc, 0xc1, 0x3b, 0xd3, 0xbb, 0x37, 0x28, 0xfa, 0x74, 0x37, 0x7c, 0x1e, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x0a, 0x42, 0x3c, 0x90, 0x28, 0x08, 0xdb, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x82, 0x90, 0x0f, 0x24, 0x0a, 0xc2, 0xe0, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x05, 0x61, 0x31, 0x90, 0x28, 0x08, 0xd3, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x82, 0x30, 0x19, 0x48, 0x14, 0x84, 0xd5, 0xc1, 0x02, 0x4e, 0xf8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x51, 0x10, 0x66, 0x03, 0x89, 0x82, 0xb0, 0x3b, 0xbc, 0x17, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x0a, 0xc2, 0x70, 0x20, 0x51, 0x10, 0x96, 0x07, 0x45, 0xa5, 0x78, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xa6, 0x20, 0xfe, 0xe0, 0x9d, 0xe9, 0xdd, 0x1b, 0x14, 0x1d, 0xb4, 0x83, 0x93, 0x1b, 0x3e, 0x0f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x05, 0x21, 0x19, 0xc8, 0x19, 0x84, 0xfd, 0x06, 0x27, 0xf6, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x55, 0x10, 0xd2, 0x81, 0x54, 0x41, 0x18, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x15, 0x84, 0x78, 0x20, 0x55, 0x10, 0x16, 0x07, 0xef, 0xaf, 0xcd, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x05, 0x61, 0x32, 0x90, 0x2a, 0x08, 0x9b, 0xc3, 0x7b, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xaa, 0x20, 0x8c, 0x06, 0x52, 0x05, 0x61, 0x77, 0x50, 0xfa, 0x19, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0x82, 0x90, 0x1c, 0x3c, 0x0e, 0xcf, 0x7b, 0x83, 0x73, 0xfe, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2b, 0x08, 0xe9, 0x40, 0xae, 0x20, 0x8c, 0x37, 0x7c, 0xee, 0x32, 0xe0, 0xd1, 0xbd, 0x89, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2b, 0x08, 0x8b, 0x83, 0x77, 0x24, 0x7a, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x15, 0x84, 0xc9, 0x40, 0xae, 0x20, 0xac, 0x0e, 0x0a, 0xed, 0xde, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x57, 0x10, 0x66, 0x03, 0xb9, 0x82, 0xb0, 0xdd, 0xf0, 0xb6, 0xce, 0x06, 0xab, 0xc0, 0xf1, 0x0e, 0xff, 0xf0, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x0b, 0x42, 0x36, 0x90, 0x32, 0x08, 0xe9, 0x86, 0xcf, 0x5d, 0x06, 0xbc, 0xb0, 0x3a, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x05, 0x21, 0x3b, 0x78, 0x65, 0xa5, 0xf7, 0x06, 0x27, 0x07, 0xb9, 0x05, 0xbc, 0xb0, 0x3a, 0xf1, 0xf0, 0x0f, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x2d, 0x08, 0xb3, 0x81, 0x6c, 0x41, 0x18, 0x1e, 0x84, 0xa7, 0xea, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xba, 0x20, 0xa4, 0x03, 0xe9, 0x82, 0xb0, 0x38, 0x78, 0x8f, 0xe0, 0xef, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x0b, 0xc2, 0x68, 0x20, 0x5d, 0x10, 0x96, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x21, 0xcc, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x82, 0xb0, 0x3b, 0x78, 0x8e, 0xa8, 0xf7, 0x41, 0x0a, 0x74, 0xea, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xbe, 0x20, 0xa4, 0x03, 0xf9, 0x82, 0x30, 0x39, 0x78, 0x6e, 0xe3, 0xef, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x0b, 0xc2, 0x68, 0x20, 0x5f, 0x10, 0x96, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x21, 0xcc, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x82, 0xb0, 0x3b, 0x78, 0xf6, 0xaa, 0xf7, 0xc1, 0xe1, 0x55, 0x6e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x61, 0x10, 0xd2, 0x81, 0x84, 0x41, 0x58, 0x1c, 0x3c, 0xfe, 0xf0, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x06, 0x61, 0x34, 0x90, 0x30, 0x08, 0xc3, 0x0d, 0x5f, 0xbf, 0x6c, 0xf8, 0x10, 0x66, 0xc3, 0xd7, 0x2f, 0x1b, 0x3e, 0x84, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x84, 0x41, 0xd8, 0x1d, 0xbc, 0xae, 0xd6, 0xfb, 0xf0, 0xe0, 0xcd, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xc6, 0x20, 0xa4, 0x03, 0x19, 0x83, 0x30, 0x39, 0x78, 0xe3, 0xe4, 0xef, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x0c, 0xc2, 0x68, 0x20, 0x63, 0x10, 0x1a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x0c, 0xc2, 0x6a, 0x20, 0x63, 0x10, 0xa6, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x21, 0xcc, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x19, 0x83, 0x30, 0x3c, 0x78, 0x6e, 0xb0, 0xf7, 0x41, 0xea, 0x69, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x31, 0x08, 0xdb, 0x81, 0x8c, 0x41, 0x28, 0xd8, 0xf0, 0xf5, 0xcb, 0x86, 0x0f, 0x61, 0x36, 0x7c, 0xfd, 0xb2, 0xe1, 0x43, 0x98, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x18, 0x84, 0xf9, 0xc1, 0x03, 0x91, 0xbd, 0x0f, 0x52, 0x4f, 0x63, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x06, 0x21, 0x39, 0x78, 0x1c, 0x9e, 0xf7, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb7, 0x32, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x06, 0x21, 0x3d, 0x78, 0x1c, 0x9e, 0xf7, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x33, 0x08, 0x83, 0x81, 0x9c, 0x41, 0x98, 0x6e, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x19, 0x84, 0xc9, 0x40, 0xce, 0x20, 0x6c, 0x0e, 0x8a, 0x4a, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x19, 0x84, 0xd1, 0x40, 0xce, 0x20, 0x2c, 0x37, 0xbc, 0xad, 0xb3, 0x41, 0xbb, 0x90, 0x67, 0x87, 0x7f, 0x78, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x41, 0xd8, 0x0e, 0xe4, 0x0c, 0xc2, 0xf8, 0xf0, 0xe0, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x0c, 0xc2, 0x7a, 0x20, 0x67, 0x10, 0xe6, 0x87, 0xc7, 0x64, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6b, 0x10, 0x7f, 0xf0, 0xce, 0xf4, 0xee, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0x3e, 0xe0, 0x85, 0xd5, 0xd1, 0x1b, 0x94, 0xd0, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd6, 0x20, 0xe4, 0x03, 0x59, 0x83, 0x30, 0xdc, 0xf0, 0xef, 0xfc, 0x06, 0xef, 0x83, 0x06, 0x3e, 0x78, 0xea, 0x4e, 0xf1, 0x41, 0x98, 0x8e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x83, 0x90, 0x0c, 0xe4, 0x0e, 0x42, 0xb6, 0xc1, 0xc9, 0x41, 0x6e, 0x83, 0xa7, 0x67, 0x7a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x83, 0x30, 0x1a, 0x48, 0x1b, 0x84, 0xd9, 0x41, 0x78, 0xaa, 0xae, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x0d, 0x42, 0x36, 0x90, 0x37, 0x08, 0xf9, 0xc1, 0x7b, 0x04, 0x7f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6f, 0x10, 0x26, 0x03, 0x79, 0x83, 0xd0, 0xb7, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x6f, 0x10, 0x36, 0x03, 0x79, 0x83, 0xb0, 0x3a, 0x58, 0x05, 0x26, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x0d, 0xc2, 0x6c, 0x20, 0x6f, 0x10, 0x86, 0x07, 0xab, 0xc0, 0x64, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x41, 0x58, 0x0e, 0xe4, 0x0d, 0x42, 0xdd, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x37, 0x08, 0xe3, 0x81, 0xbc, 0x41, 0xe8, 0xd9, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x06, 0x61, 0x3f, 0x90, 0x37, 0x08, 0x05, 0x87, 0x1f, 0x6a, 0x06, 0xbc, 0xb0, 0x3a, 0xf1, 0xa0, 0xc8, 0x97, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbc, 0x41, 0x28, 0x1a, 0xc8, 0x1b, 0x84, 0xb6, 0x0d, 0x6f, 0xeb, 0x1c, 0x3c, 0x8d, 0xe0, 0xbb, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x41, 0xc8, 0x06, 0x12, 0x07, 0x61, 0x70, 0xf0, 0xdc, 0xc6, 0xdf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x1c, 0x84, 0xc9, 0x40, 0xe2, 0x20, 0xf4, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x1c, 0x84, 0xcd, 0x40, 0xe2, 0x20, 0xac, 0x0e, 0x56, 0x81, 0xc9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x89, 0x83, 0x30, 0x1b, 0x48, 0x1c, 0x84, 0xe1, 0xc1, 0x32, 0x27, 0xd9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x71, 0x10, 0x96, 0x03, 0x89, 0x83, 0x50, 0xb7, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x0e, 0xc2, 0x78, 0x20, 0x71, 0x10, 0x7a, 0x36, 0x28, 0x26, 0x31, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc4, 0x41, 0xd8, 0x0f, 0x24, 0x0e, 0x42, 0xc1, 0xe1, 0x87, 0x9a, 0x83, 0xa7, 0x11, 0x7c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe2, 0x20, 0x14, 0x0d, 0x24, 0x0e, 0x42, 0xdb, 0xc1, 0x83, 0x0f, 0xbe, 0x5b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1c, 0x84, 0x6c, 0x20, 0x73, 0x10, 0xf2, 0x83, 0xc7, 0x1f, 0xfe, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe6, 0x20, 0x4c, 0x06, 0x32, 0x07, 0x61, 0xb8, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x73, 0x10, 0x36, 0x03, 0x99, 0x83, 0xb0, 0x3a, 0x58, 0xe6, 0x24, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x0e, 0xc2, 0x6c, 0x20, 0x73, 0x10, 0x76, 0x07, 0x05, 0x45, 0x66, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa9, 0x83, 0x90, 0x0d, 0xa4, 0x0e, 0xc2, 0xe0, 0xe0, 0x8d, 0x93, 0xbf, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3a, 0x08, 0x93, 0x81, 0xd4, 0x41, 0x68, 0xdb, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3a, 0x08, 0x9b, 0x81, 0xd4, 0x41, 0x58, 0x1d, 0x2c, 0x73, 0x92, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x52, 0x07, 0x61, 0x36, 0x90, 0x3a, 0x08, 0x65, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x20, 0x2c, 0x07, 0x52, 0x07, 0xa1, 0x64, 0x83, 0x62, 0x12, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x1d, 0x84, 0xf1, 0x40, 0xea, 0x20, 0xac, 0x0f, 0x8a, 0x54, 0xcc, 0x83, 0xa7, 0x11, 0x7c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xea, 0x20, 0xb4, 0x0c, 0xa4, 0x0e, 0x42, 0xd7, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x1d, 0x84, 0x9a, 0x83, 0xb7, 0xf8, 0x7c, 0x1f, 0x3c, 0xf8, 0xe0, 0xbb, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7b, 0x10, 0x7f, 0xf0, 0xce, 0xf4, 0xee, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0xcf, 0xad, 0x8c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x07, 0x61, 0x30, 0x90, 0x3d, 0x08, 0x55, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xf6, 0x20, 0x6c, 0x06, 0xb2, 0x07, 0x61, 0xbd, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7b, 0x10, 0x56, 0x03, 0xd9, 0x83, 0x30, 0x3b, 0x28, 0x2a, 0xc5, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7b, 0x10, 0x76, 0x03, 0xd9, 0x83, 0x30, 0x3e, 0x78, 0xda, 0xb6, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3d, 0x08, 0xf3, 0x81, 0xec, 0x41, 0xe8, 0x38, 0x78, 0xda, 0xb6, 0xf7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x0f, 0x42, 0xc9, 0x40, 0xf6, 0x20, 0x34, 0x6d, 0x78, 0x5b, 0x67, 0xc0, 0x73, 0x2b, 0x63, 0x0f, 0x8a, 0x7c, 0xd9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x1f, 0xc4, 0x1f, 0xbc, 0x33, 0xbd, 0x7b, 0x83, 0xa2, 0x83, 0x76, 0x83, 0xb2, 0xb0, 0x78, 0x0d, 0x0e, 0xf0, 0x92, 0x87, 0xcf, 0x83, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x41, 0xd8, 0x0d, 0xa4, 0x0f, 0xc2, 0x81, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x83, 0x30, 0x1c, 0x48, 0x1f, 0x84, 0xbe, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x83, 0xb0, 0x1c, 0x48, 0x1f, 0x84, 0xf1, 0x41, 0x49, 0x34, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x0f, 0xc2, 0x7a, 0x20, 0x7d, 0x10, 0xe6, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3e, 0x08, 0xfb, 0x81, 0xf4, 0x41, 0xa8, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3e, 0x08, 0x05, 0x03, 0xe9, 0x83, 0xd0, 0xb2, 0xe1, 0x6d, 0x9d, 0x83, 0x07, 0x6a, 0x7d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x83, 0x50, 0x33, 0x90, 0x3e, 0x08, 0x4d, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xdc, 0xca, 0xd8, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x07, 0xa1, 0x6b, 0x20, 0x7d, 0x10, 0xea, 0x0e, 0x4a, 0x3f, 0xe3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x41, 0x28, 0x1c, 0x48, 0x1f, 0x84, 0xfe, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x83, 0xd0, 0x38, 0x90, 0x3e, 0x08, 0xa5, 0x87, 0x3f, 0x81, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x41, 0x68, 0x1d, 0x48, 0x1f, 0x84, 0xea, 0x83, 0x57, 0xae, 0x7d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x83, 0xd0, 0x3d, 0x90, 0x3e, 0x08, 0xf5, 0x07, 0x2f, 0x77, 0xfb, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1f, 0xc4, 0x1f, 0xbc, 0x33, 0xbd, 0x7b, 0x83, 0xa2, 0x83, 0x76, 0x83, 0xa2, 0xb6, 0x78, 0x83, 0x07, 0x6a, 0x7d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x83, 0xb0, 0x1b, 0xc8, 0x1f, 0x84, 0x03, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x07, 0x61, 0x38, 0x90, 0x3f, 0x08, 0x7d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x07, 0x61, 0x39, 0x90, 0x3f, 0x08, 0xe3, 0x83, 0x92, 0x68, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1f, 0x84, 0xf5, 0x40, 0xfe, 0x20, 0xcc, 0x0f, 0x8a, 0x4a, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7f, 0x10, 0xf6, 0x03, 0xf9, 0x83, 0x50, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x7f, 0x10, 0x0a, 0x06, 0xf2, 0x07, 0xa1, 0xe5, 0xe0, 0x95, 0x6b, 0xdf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xfe, 0x20, 0xd4, 0x0c, 0xe4, 0x0f, 0x42, 0xd3, 0x41, 0xe1, 0x65, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x3f, 0x08, 0x5d, 0x03, 0xf9, 0x83, 0x50, 0x77, 0x50, 0xfa, 0x19, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x0f, 0x42, 0xe1, 0x40, 0xfe, 0x20, 0xf4, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1f, 0x84, 0xc6, 0x81, 0xfc, 0x41, 0x28, 0x3d, 0xfc, 0x09, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x0f, 0x42, 0xeb, 0x40, 0xfe, 0x20, 0x54, 0x1f, 0xbc, 0x72, 0xed, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x1f, 0x84, 0xee, 0x81, 0xfc, 0x41, 0xa8, 0x3f, 0x28, 0xbc, 0x8c, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x08, 0xf1, 0x07, 0xef, 0x4c, 0xef, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x40, 0x08, 0xc1, 0x40, 0x02, 0x21, 0xec, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x10, 0x42, 0x32, 0x90, 0x40, 0x08, 0xf1, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xba, 0x37, 0xf1, 0xa0, 0xc8, 0x97, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x08, 0x21, 0x1f, 0x48, 0x20, 0x84, 0xc9, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0xb0, 0x3a, 0xba, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x81, 0x10, 0x36, 0x03, 0x09, 0x84, 0x30, 0x3b, 0x28, 0xfd, 0x8c, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x12, 0x08, 0x61, 0x38, 0x90, 0x40, 0x08, 0xcb, 0xc3, 0x7b, 0x41, 0xcd, 0x02, 0x5f, 0xe6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x32, 0x20, 0x7e, 0x20, 0x3f, 0x10, 0xea, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x03, 0x42, 0x36, 0x90, 0x0c, 0x08, 0x45, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x01, 0x21, 0x1c, 0x48, 0x06, 0x84, 0xcd, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xba, 0x37, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x01, 0x61, 0x70, 0xf0, 0x98, 0xde, 0xef, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x06, 0x84, 0xd1, 0x40, 0x32, 0x20, 0x34, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0x0b, 0xab, 0xa3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x19, 0x10, 0x86, 0x07, 0xef, 0x19, 0xfe, 0x3e, 0x78, 0x2c, 0xba, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0c, 0x08, 0x15, 0x03, 0xc9, 0x80, 0xd0, 0xb3, 0xe1, 0xcf, 0xa5, 0x0d, 0x8a, 0xda, 0xe2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x06, 0x84, 0x9a, 0x83, 0x97, 0x25, 0x7f, 0x1f, 0x7e, 0xa8, 0x69, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x01, 0xf1, 0x07, 0xcf, 0xbd, 0xfd, 0xde, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x0d, 0x08, 0xd9, 0x40, 0x36, 0x20, 0xe4, 0x07, 0x0f, 0x8b, 0x19, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x40, 0xfc, 0xc1, 0x73, 0x6f, 0xbf, 0x37, 0x28, 0x48, 0x63, 0x37, 0x58, 0x05, 0x8e, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x03, 0xc2, 0x60, 0x20, 0x1d, 0x10, 0x9a, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x03, 0xc2, 0x62, 0x20, 0x1d, 0x10, 0x46, 0x87, 0xd7, 0x7c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x40, 0x58, 0x0d, 0xa4, 0x03, 0x42, 0xd1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x74, 0x40, 0x98, 0x0d, 0xa4, 0x03, 0xc2, 0xf2, 0xa0, 0x28, 0xfe, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x01, 0x61, 0x3a, 0x90, 0x0e, 0x08, 0xdb, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x07, 0x84, 0xf1, 0x40, 0x3a, 0x20, 0xf4, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x07, 0x84, 0xf5, 0x40, 0x3a, 0x20, 0x14, 0x1c, 0x14, 0x59, 0xa6, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3a, 0x20, 0x34, 0x0c, 0xa4, 0x03, 0x42, 0xc5, 0xe1, 0x31, 0x99, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x1d, 0x10, 0x3a, 0x06, 0xd2, 0x01, 0xa1, 0x66, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0xdd, 0x9b, 0x58, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x80, 0xf8, 0x83, 0xe7, 0xde, 0x7e, 0x6f, 0x50, 0xf0, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf9, 0x80, 0x90, 0x0d, 0xe4, 0x03, 0xc2, 0x6c, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x3e, 0x20, 0x84, 0x03, 0xf9, 0x80, 0x90, 0x1f, 0xbe, 0xf8, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x01, 0x61, 0x30, 0x90, 0x0f, 0x08, 0x9b, 0x0d, 0x6f, 0xeb, 0x1c, 0x2c, 0x42, 0xcc, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x01, 0x61, 0x34, 0x90, 0x0f, 0x08, 0xab, 0x83, 0xa2, 0x52, 0xbc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x08, 0xc4, 0x1f, 0x3c, 0xf7, 0xf6, 0x7b, 0x83, 0x82, 0x34, 0x76, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x23, 0x10, 0xb2, 0x81, 0x8c, 0x40, 0xe8, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x11, 0x08, 0xe1, 0x40, 0x46, 0x20, 0x8c, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0x85, 0xd5, 0x89, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x11, 0x08, 0x83, 0x83, 0xf7, 0x16, 0x80, 0x6f, 0xf8, 0xa2, 0x66, 0x43, 0x1d, 0x0f, 0xbc, 0x3a, 0x31, 0x61, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x08, 0x84, 0xd5, 0x40, 0x46, 0x20, 0x54, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0x0b, 0xab, 0x6b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x23, 0x10, 0x96, 0x07, 0xef, 0x64, 0x00, 0x3f, 0x78, 0x04, 0xde, 0x76, 0x07, 0x61, 0x3a, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x04, 0x42, 0x32, 0x90, 0x17, 0x08, 0xd9, 0x06, 0x41, 0x7a, 0xba, 0xc1, 0xd3, 0x5e, 0xbf, 0x57, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x02, 0x21, 0x1b, 0xc8, 0x09, 0x84, 0xd1, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9c, 0x40, 0x08, 0x07, 0x72, 0x02, 0x21, 0x3e, 0x08, 0xd8, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x27, 0x10, 0xf2, 0x81, 0x9c, 0x40, 0x58, 0x1c, 0x04, 0x6c, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x13, 0x08, 0x93, 0x81, 0x9c, 0x40, 0xd8, 0x1c, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x13, 0x08, 0xbb, 0x81, 0x9c, 0x40, 0xe8, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x13, 0x08, 0xc3, 0x81, 0x9c, 0x40, 0xd8, 0x6e, 0xf8, 0x11, 0xe6, 0xe0, 0x9d, 0x82, 0xbf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x4e, 0x20, 0x8c, 0x07, 0x72, 0x02, 0x61, 0x7e, 0x90, 0x02, 0x9d, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x04, 0xc2, 0x7e, 0x20, 0x27, 0x10, 0x6a, 0x36, 0x5c, 0x52, 0x6b, 0x3c, 0x1f, 0x1c, 0x3e, 0x78, 0xda, 0xeb, 0x77, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x05, 0x42, 0x36, 0x90, 0x14, 0x08, 0xa3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x49, 0x81, 0x10, 0x0e, 0x24, 0x05, 0x42, 0x7c, 0x10, 0xb0, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x52, 0x20, 0xe4, 0x03, 0x49, 0x81, 0xb0, 0x38, 0x08, 0x23, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x29, 0x10, 0x26, 0x03, 0x49, 0x81, 0xb0, 0x39, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x29, 0x10, 0x76, 0x03, 0x49, 0x81, 0x50, 0xb4, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x29, 0x10, 0x86, 0x03, 0x49, 0x81, 0x30, 0xde, 0xf0, 0x23, 0xcc, 0xc1, 0x33, 0x1c, 0x7f, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa4, 0x40, 0x58, 0x0f, 0x24, 0x05, 0xc2, 0xfe, 0xe0, 0xf0, 0x2a, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x24, 0x05, 0x42, 0xc1, 0x40, 0x52, 0x20, 0xf4, 0x1c, 0x3c, 0x5d, 0x05, 0xbc, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xac, 0x40, 0xc8, 0x06, 0xb2, 0x02, 0x61, 0xb1, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2b, 0x10, 0xc2, 0x81, 0xac, 0x40, 0x88, 0x0f, 0xc2, 0x08, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x0a, 0x84, 0x7c, 0x20, 0x2b, 0x10, 0x06, 0x07, 0x21, 0xf8, 0xd0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x05, 0xc2, 0x6e, 0x20, 0x2b, 0x10, 0xe6, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xb2, 0x02, 0x61, 0x38, 0x90, 0x15, 0x08, 0xdb, 0x0d, 0x3f, 0xc2, 0x1c, 0x3c, 0x0a, 0xf1, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x0a, 0x84, 0xf1, 0x40, 0x56, 0x20, 0xac, 0x0f, 0x0f, 0xde, 0xb4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x16, 0x08, 0xd9, 0x40, 0x5a, 0x20, 0x2c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x05, 0x42, 0x38, 0x90, 0x16, 0x08, 0xf1, 0x41, 0x18, 0x01, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x81, 0x90, 0x0f, 0xa4, 0x05, 0xc2, 0xe0, 0xa0, 0x48, 0xc5, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x02, 0x61, 0x37, 0x90, 0x16, 0x08, 0xcd, 0x1b, 0x1e, 0x94, 0x5c, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x20, 0x0c, 0x07, 0xd2, 0x02, 0x61, 0xbc, 0xe1, 0x47, 0x98, 0x83, 0xb7, 0x4f, 0xfe, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x81, 0xb0, 0x1e, 0x48, 0x0b, 0x84, 0x82, 0x0d, 0x96, 0x7e, 0xbd, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x20, 0xec, 0x0f, 0x1e, 0x49, 0x06, 0x7e, 0x50, 0x50, 0x64, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x69, 0x81, 0xd0, 0x30, 0x90, 0x16, 0x08, 0x15, 0x07, 0x87, 0x95, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x10, 0x3a, 0x06, 0xd2, 0x02, 0xa1, 0x68, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5a, 0x20, 0x94, 0x0c, 0xa4, 0x05, 0x42, 0xcb, 0xe1, 0x31, 0x99, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x10, 0x6a, 0x06, 0xd2, 0x02, 0xa1, 0xe7, 0xe0, 0x74, 0x91, 0xd1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x16, 0x08, 0x4d, 0x03, 0x69, 0x81, 0x50, 0xb7, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x2d, 0x10, 0xaa, 0x06, 0xd2, 0x02, 0xa1, 0xeb, 0xf0, 0x98, 0xcc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x16, 0x08, 0x65, 0x03, 0x69, 0x81, 0xd0, 0x76, 0x70, 0x3a, 0x12, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0b, 0x84, 0xbe, 0x81, 0xb4, 0x40, 0x28, 0x3c, 0x28, 0x28, 0x32, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb4, 0x40, 0xa8, 0x3c, 0x78, 0x85, 0x17, 0xf8, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x1e, 0xb9, 0x02, 0xde, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x06, 0xe2, 0x0f, 0x9e, 0x7b, 0xfb, 0xbd, 0x41, 0x41, 0x1a, 0xbb, 0x41, 0x59, 0x58, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x64, 0x06, 0xc2, 0x60, 0x20, 0x33, 0x10, 0xb6, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x32, 0x03, 0x61, 0x31, 0x90, 0x19, 0x08, 0xa3, 0x83, 0xa2, 0xf8, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x0c, 0x84, 0xd5, 0x40, 0x66, 0x20, 0xcc, 0x0e, 0x8a, 0x4a, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x33, 0x10, 0x76, 0x03, 0x99, 0x81, 0x30, 0x3d, 0x28, 0xfd, 0x8c, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd4, 0x40, 0xfc, 0xc1, 0x73, 0x6f, 0xbf, 0x37, 0x28, 0x48, 0x63, 0x07, 0x3c, 0xb7, 0x32, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0d, 0x84, 0xc1, 0x40, 0x6a, 0x20, 0x6c, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x06, 0xc2, 0x62, 0x20, 0x35, 0x10, 0x46, 0x07, 0x45, 0xf1, 0xef, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1a, 0x08, 0xab, 0x81, 0xd4, 0x40, 0x98, 0x1d, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6a, 0x20, 0xec, 0x06, 0x52, 0x03, 0x61, 0x7a, 0x50, 0x78, 0x19, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb9, 0x81, 0xf8, 0x83, 0xe7, 0xde, 0x7e, 0x6f, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0xda, 0x85, 0x3c, 0xdb, 0xa0, 0x84, 0x8e, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x72, 0x03, 0x21, 0x1f, 0xc8, 0x0d, 0x84, 0xed, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x06, 0xc2, 0x60, 0x20, 0x37, 0x10, 0x46, 0x07, 0xa5, 0x37, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1b, 0x08, 0xab, 0x81, 0xdc, 0x40, 0xd8, 0x1d, 0xbc, 0xbc, 0x2a, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x0d, 0x84, 0xe1, 0x40, 0x6e, 0x20, 0x4c, 0x37, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x87, 0x07, 0x1d, 0x84, 0xe9, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1c, 0x08, 0xc9, 0x40, 0x72, 0x20, 0x34, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0e, 0x84, 0x70, 0x20, 0x39, 0x10, 0x76, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x92, 0x03, 0x21, 0x1d, 0x48, 0x0e, 0x84, 0xc1, 0xe1, 0x8b, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x39, 0x10, 0x16, 0x03, 0xc9, 0x81, 0x30, 0x3a, 0x78, 0xb9, 0xdb, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1c, 0x08, 0xab, 0x81, 0xe4, 0x40, 0x98, 0x1d, 0x14, 0x95, 0xe2, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc9, 0x81, 0x30, 0x1c, 0x48, 0x0e, 0x84, 0xfd, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe4, 0x40, 0x58, 0x0e, 0x24, 0x07, 0xc2, 0xf8, 0xe0, 0xe5, 0x6e, 0xdf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x72, 0x20, 0xac, 0x07, 0x92, 0x03, 0x61, 0x7e, 0x78, 0xf0, 0xa6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0e, 0x84, 0x82, 0x81, 0xe4, 0x40, 0x28, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1c, 0x08, 0x0d, 0x03, 0xc9, 0x81, 0xd0, 0x72, 0xf0, 0xea, 0x30, 0xf0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x39, 0x10, 0x6a, 0x06, 0x92, 0x03, 0xa1, 0xe7, 0xf0, 0x98, 0x4c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1d, 0x88, 0x3f, 0x78, 0xee, 0xed, 0xf7, 0x06, 0xe7, 0xfc, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3b, 0x10, 0xb2, 0x81, 0xec, 0x40, 0x58, 0x6c, 0xf8, 0xdc, 0x65, 0xc3, 0x77, 0xf4, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1d, 0x08, 0x83, 0x83, 0x07, 0x4a, 0x83, 0x1f, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x20, 0x24, 0x03, 0xe9, 0x81, 0x50, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3d, 0x10, 0xa2, 0x81, 0xf4, 0x40, 0x48, 0x37, 0x58, 0xfa, 0xf5, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe9, 0x81, 0x10, 0x1e, 0x3c, 0x64, 0x1b, 0xfc, 0xa0, 0xa0, 0xc8, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x03, 0x21, 0x1e, 0x48, 0x0f, 0x84, 0xfc, 0xf0, 0xe0, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1e, 0x08, 0x83, 0x81, 0xf4, 0x40, 0xd8, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0f, 0x84, 0xc5, 0x40, 0x7a, 0x20, 0x4c, 0x0e, 0x02, 0x96, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0f, 0x84, 0xcd, 0x40, 0x7a, 0x20, 0xcc, 0x0e, 0x1e, 0xa4, 0xff, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1e, 0x08, 0xc3, 0x81, 0xf4, 0x40, 0xd8, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0f, 0x84, 0xe5, 0x40, 0x7a, 0x20, 0x4c, 0x0f, 0x02, 0x96, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0f, 0x84, 0xed, 0x40, 0x7a, 0x20, 0xcc, 0x37, 0xbc, 0xad, 0x33, 0xe0, 0x85, 0xd5, 0x89, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xa4, 0x07, 0x42, 0xc1, 0x40, 0x7a, 0x20, 0xb4, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x48, 0x0f, 0x84, 0x86, 0x81, 0xf4, 0x40, 0xa8, 0x38, 0x08, 0x58, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3d, 0x10, 0x3a, 0x06, 0xd2, 0x03, 0xa1, 0xe4, 0xf0, 0xe0, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x20, 0xd4, 0x0c, 0xa4, 0x07, 0x42, 0xdf, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf4, 0x40, 0xe8, 0x19, 0x48, 0x0f, 0x84, 0xa2, 0x83, 0x80, 0x65, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xd2, 0x03, 0xa1, 0x69, 0x20, 0x3d, 0x10, 0xea, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xd0, 0x9e, 0xea, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7a, 0x20, 0x14, 0x0e, 0xa4, 0x07, 0x42, 0xe3, 0x41, 0x41, 0x91, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x07, 0xe2, 0x0f, 0x9e, 0x7b, 0xfb, 0xbd, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3f, 0x10, 0x82, 0x81, 0xfc, 0x40, 0xd8, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xc8, 0x0f, 0x84, 0x64, 0x20, 0x3f, 0x10, 0x26, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x03, 0x21, 0x1a, 0xc8, 0x0f, 0x84, 0xf4, 0xa0, 0xd0, 0xee, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x03, 0x21, 0x1e, 0xc8, 0x0f, 0x84, 0xc5, 0xc1, 0x83, 0xf4, 0xbf, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x03, 0x61, 0x33, 0x90, 0x1f, 0x08, 0xb3, 0x83, 0xe7, 0xba, 0x7f, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xe4, 0x07, 0xc2, 0x70, 0x20, 0x3f, 0x10, 0xb6, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xc2, 0xea, 0xda, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x40, 0x18, 0x0f, 0xe4, 0x07, 0x42, 0xcf, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x40, 0x58, 0x0f, 0xe4, 0x07, 0x42, 0xc5, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0xda, 0x53, 0x3d, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x03, 0xa1, 0x63, 0x20, 0x3f, 0x10, 0x6a, 0x0e, 0x5e, 0xee, 0xf6, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1f, 0x08, 0x45, 0x03, 0xf9, 0x81, 0xd0, 0xb8, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3f, 0x10, 0x9a, 0x06, 0xf2, 0x03, 0xa1, 0xec, 0xe0, 0xe5, 0x6e, 0xdf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7e, 0x20, 0xb4, 0x0d, 0xe4, 0x07, 0x42, 0xe1, 0x41, 0xe1, 0x65, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x90, 0x1f, 0x08, 0x95, 0x03, 0xf9, 0x81, 0xd0, 0xbd, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x20, 0x3f, 0x10, 0x3a, 0x07, 0xf2, 0x03, 0xa1, 0xf6, 0xa0, 0xf0, 0x32, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xf2, 0x03, 0xa1, 0x77, 0x20, 0x3f, 0x10, 0xaa, 0x0f, 0x4a, 0x3f, 0xe3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfc, 0x40, 0x28, 0x1f, 0xc8, 0x0f, 0x84, 0xf6, 0x83, 0x82, 0x22, 0xb3, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0xc0, 0x0b, 0x1b, 0x5b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x06, 0x5e, 0xd8, 0xd8, 0xda, 0x00, 0xf8, 0x03, 0xf7, 0x36, 0x97, 0x46, 0x97, 0x66, 0x57, 0x06, 0x12, 0x36, 0xb6, 0xc6, 0x02, 0xe2, 0x16, 0x36, 0xb6, 0x06, 0x02, 0x17, 0x36, 0xb6, 0x56, 0x46, 0xc7, 0x02, 0xf2, 0x26, 0x07, 0xe2, 0x16, 0x36, 0xb6, 0x06, 0x42, 0x27, 0x17, 0x36, 0x56, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x0f, 0x78, 0x61, 0x63, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x11, 0x71, 0x03, 0xa7, 0x44, 0xfc, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x11, 0x21, 0x19, 0xb8, 0x23, 0xc2, 0x60, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1d, 0x11, 0xa2, 0x81, 0x3b, 0x22, 0xa4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0xfe, 0x6d, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0x88, 0x10, 0x0f, 0xdc, 0x11, 0x21, 0x3f, 0x08, 0xc1, 0x87, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x22, 0x24, 0x03, 0x87, 0x44, 0x98, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x24, 0x42, 0x34, 0x70, 0x48, 0x84, 0x7c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x81, 0xef, 0x16, 0x36, 0xb6, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x44, 0x18, 0x0c, 0x1c, 0x12, 0x61, 0x71, 0x10, 0x82, 0x0f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x44, 0x48, 0x06, 0x2e, 0x89, 0xb0, 0xdf, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x49, 0x84, 0x68, 0xe0, 0x92, 0x08, 0xbb, 0x83, 0x97, 0xfe, 0x1f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x44, 0x18, 0x0e, 0x5c, 0x12, 0x61, 0xbe, 0xe1, 0xcf, 0xa5, 0x0d, 0x1e, 0xa5, 0x8f, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x44, 0x58, 0x1e, 0xbc, 0xb9, 0x2b, 0xfc, 0xe0, 0xc5, 0xe5, 0x95, 0xb5, 0x1a, 0xac, 0x48, 0xf6, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xb0, 0x22, 0xd9, 0xa7, 0x01, 0xf8, 0x0c, 0x03, 0x99, 0x63, 0x4b, 0x1b, 0x2b, 0x03, 0x79, 0x33, 0x03, 0x21, 0xc9, 0x7b, 0xbb, 0x63, 0x03, 0x31, 0x93, 0x0b, 0x3b, 0x6b, 0x2b, 0x73, 0xa3, 0x9b, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x58, 0x91, 0xec, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x42, 0x98, 0x0d, 0x1c, 0x0a, 0xa1, 0x63, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa1, 0x10, 0x76, 0x03, 0x87, 0x42, 0x18, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0x26, 0xb9, 0xb9, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x50, 0x08, 0xdb, 0x83, 0x97, 0xb8, 0x85, 0x1f, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0x85, 0xb0, 0x1e, 0x38, 0x14, 0x42, 0xc5, 0x86, 0x3f, 0x97, 0x36, 0x28, 0x0b, 0x8b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x50, 0x08, 0x0d, 0x07, 0x8f, 0xa0, 0x0b, 0x3f, 0xfc, 0x50, 0xd3, 0xac, 0xc1, 0x03, 0xe6, 0x87, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0x30, 0x3f, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x48, 0xdc, 0xc0, 0x55, 0x12, 0xbf, 0xc1, 0x01, 0x42, 0x74, 0x83, 0x07, 0xcc, 0x0f, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x35, 0x12, 0x77, 0xf0, 0xfe, 0xbd, 0xf0, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x48, 0x48, 0x06, 0xae, 0x91, 0x50, 0xbe, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x4f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2c, 0x20, 0x73, 0x65, 0x6e, 0x74, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0x65, 0x50, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x23, 0x21, 0x1d, 0xb8, 0x46, 0x42, 0xc3, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x23, 0x21, 0x1e, 0xb8, 0x46, 0xc2, 0x78, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x35, 0x12, 0xf2, 0x81, 0x6b, 0x24, 0x4c, 0x0e, 0x9e, 0xed, 0x66, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x23, 0x61, 0x33, 0x70, 0x8d, 0x84, 0xd9, 0x41, 0x99, 0xa5, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x23, 0x61, 0x37, 0x70, 0x8d, 0x84, 0xed, 0xc1, 0x9b, 0x7e, 0xaf, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0x91, 0xb0, 0x1e, 0xb8, 0x46, 0x42, 0xc1, 0xc1, 0x83, 0x12, 0x6d, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0x91, 0x90, 0x0c, 0x9c, 0x23, 0xa1, 0x7e, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xde, 0xe4, 0xca, 0xe2, 0xea, 0xca, 0xe6, 0xe8, 0x40, 0xe0, 0xc2, 0xc6, 0xd6, 0xca, 0xe8, 0xe6, 0x58, 0x40, 0xea, 0xdc, 0xe6, 0xca, 0xdc, 0xe8, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xdb, 0x65, 0x9f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x8e, 0x84, 0x74, 0xe0, 0x1c, 0x09, 0xc3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x47, 0x42, 0x3c, 0x70, 0x8e, 0x84, 0xc9, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x48, 0xd8, 0x0c, 0x9c, 0x23, 0x61, 0xb7, 0xe1, 0xdf, 0xf9, 0x0d, 0x9e, 0xfb, 0x7b, 0x5d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x3d, 0x12, 0x92, 0x81, 0x7b, 0x24, 0x3c, 0xd8, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x4f, 0xb9, 0xb2, 0x39, 0xb8, 0x37, 0xb7, 0xb9, 0x32, 0x10, 0xb8, 0xb0, 0xb1, 0xb5, 0x32, 0xba, 0x39, 0x16, 0x10, 0xb1, 0xb0, 0xb1, 0xb5, 0xbb, 0x30, 0x39, 0xb2, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xde, 0x7d, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x23, 0x21, 0x1d, 0xb8, 0x47, 0xc2, 0x70, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0x91, 0x10, 0x0f, 0xdc, 0x23, 0x61, 0x72, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x3d, 0x12, 0x36, 0x03, 0xf7, 0x48, 0xd8, 0x6d, 0xf8, 0x77, 0x7e, 0x83, 0xc6, 0xc3, 0xb4, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x48, 0x42, 0x32, 0x70, 0x90, 0x84, 0xe9, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x91, 0x85, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x24, 0x61, 0x77, 0xf0, 0x1a, 0xdd, 0xf0, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x48, 0x42, 0x32, 0x70, 0x91, 0x84, 0xe5, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xd8, 0x87, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x24, 0x61, 0x76, 0xf0, 0x1a, 0xe0, 0xf0, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x49, 0x42, 0x32, 0x70, 0x92, 0x84, 0xf5, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x18, 0x0c, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x24, 0x61, 0x73, 0xf0, 0x1a, 0xe3, 0xf0, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x49, 0xc2, 0x68, 0xe0, 0x24, 0x09, 0xc3, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x49, 0xc2, 0x72, 0xe0, 0x24, 0x09, 0xe3, 0x83, 0x23, 0x5f, 0x6b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4d, 0x12, 0x92, 0x81, 0x9b, 0x24, 0xac, 0x37, 0xfc, 0xb9, 0x34, 0x80, 0x07, 0x5b, 0xda, 0x1c, 0x5d, 0x99, 0x5b, 0x99, 0xdc, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x49, 0xd8, 0x1c, 0x3c, 0x38, 0x3a, 0x7c, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0x92, 0x30, 0x1a, 0xb8, 0x49, 0xc2, 0xee, 0xa0, 0x44, 0x7c, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0x92, 0x30, 0x1c, 0xb8, 0x49, 0xc2, 0xf8, 0xe0, 0xe9, 0xe9, 0x1e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x47, 0x49, 0x48, 0x06, 0x8e, 0x92, 0xb0, 0xde, 0xf0, 0xe7, 0xd2, 0x06, 0x6f, 0xb4, 0x42, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x24, 0x2c, 0x0e, 0x9e, 0xe2, 0x1d, 0x7e, 0xf0, 0xf0, 0x2c, 0xe4, 0x0e, 0xa7, 0x58, 0x6b, 0xf0, 0x62, 0xc6, 0xe1, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x8e, 0x0c, 0xa1, 0x07, 0x2f, 0x66, 0x1c, 0x6e, 0x00, 0x3c, 0x15, 0x7b, 0x73, 0x2b, 0xe3, 0x69, 0xf1, 0x21, 0xab, 0x1b, 0xa3, 0x03, 0x11, 0x4b, 0x53, 0x2b, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0x03, 0x09, 0x73, 0x23, 0x03, 0x71, 0x71, 0x2b, 0xc3, 0xa3, 0x6b, 0x11, 0x7b, 0x73, 0x2b, 0x03, 0xa1, 0x7b, 0x03, 0x69, 0x0b, 0x83, 0x03, 0xa1, 0x7b, 0x03, 0x09, 0x03, 0x21, 0xab, 0x1b, 0xa3, 0x57, 0x02, 0xe0, 0x03, 0x2a, 0xb4, 0x32, 0x10, 0xb3, 0x34, 0xb9, 0x39, 0x3a, 0x10, 0xb1, 0x37, 0xb7, 0x32, 0x90, 0xb4, 0x39, 0x10, 0x18, 0x17, 0x10, 0x2a, 0xb4, 0xb2, 0x3c, 0x90, 0x34, 0xb7, 0x31, 0xb9, 0xb2, 0xb6, 0x32, 0x37, 0x3a, 0x10, 0xb1, 0x3c, 0x10, 0x1a, 0x16, 0x90, 0xb9, 0x34, 0xb7, 0xb1, 0x32, 0x90, 0xb2, 0xb0, 0x31, 0x34, 0x10, 0x33, 0xb6, 0xb7, 0x3b, 0x90, 0x34, 0xb7, 0x31, 0xb6, 0x3a, 0xb2, 0xb2, 0x79, 0x09, 0xc0, 0xf3, 0x30, 0x10, 0xb1, 0x34, 0x3a, 0x10, 0xb3, 0x37, 0x39, 0x90, 0xb2, 0xb0, 0x31, 0x34, 0x90, 0xb6, 0xb2, 0xb9, 0xb9, 0xb0, 0xb3, 0x32, 0x10, 0xb2, 0x32, 0xba, 0x32, 0xb9, 0xb6, 0x34, 0xb7, 0x34, 0xb7, 0x33, 0x10, 0xb3, 0x37, 0xb9, 0xbb, 0x30, 0x39, 0x32, 0x10, 0xbb, 0x39, 0x17, 0x10, 0xb1, 0xb0, 0xb1, 0xb5, 0xbb, 0x30, 0x39, 0x32, 0x90, 0x30, 0x37, 0x32, 0x90, 0x70, 0x09, 0xc0, 0xfb, 0xb9, 0xb2, 0xb1, 0x37, 0x37, 0x32, 0x10, 0xb1, 0x34, 0x3a, 0x10, 0xb3, 0x37, 0x39, 0x90, 0x3b, 0xb4, 0x32, 0x3a, 0xb4, 0x32, 0x39, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0xb6, 0xb2, 0xb9, 0xb9, 0xb0, 0xb3, 0x32, 0x90, 0xb4, 0x39, 0x90, 0x37, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb7, 0x37, 0xb9, 0xb6, 0x30, 0x36, 0x10, 0x33, 0xb6, 0xb7, 0x3b, 0x90, 0x37, 0x39, 0x10, 0x3a, 0xb4, 0x72, 0x09, 0x40, 0xbb, 0xb0, 0xb9, 0xb9, 0xb7, 0xb1, 0xb4, 0x30, 0xba, 0x32, 0x32, 0x10, 0xb2, 0xb4, 0xb0, 0x33, 0xb7, 0xb7, 0x39, 0xba, 0xb4, 0x31, 0x10, 0x33, 0xb6, 0xb7, 0x3b, 0x10, 0x14, 0xb3, 0x37, 0x39, 0x10, 0xb7, 0x30, 0x3c, 0x38, 0xb6, 0x30, 0xb7, 0x30, 0xba, 0xb4, 0x37, 0xb7, 0xb9, 0x14, 0xd7, 0x4a, 0x00, 0xfa, 0x50, 0xa1, 0x95, 0x81, 0xb0, 0x95, 0x85, 0xcd, 0xd1, 0x81, 0xcc, 0xa5, 0x9d, 0xb9, 0xa5, 0x99, 0xa5, 0x8d, 0x85, 0xb9, 0xd1, 0x81, 0x88, 0xa5, 0xd1, 0x81, 0xbc, 0x99, 0x81, 0x84, 0x81, 0x90, 0x88, 0xbd, 0xb9, 0x95, 0x81, 0xa4, 0xcd, 0xe9, 0x25, 0x00, 0x4f, 0x63, 0x40, 0xd2, 0xcc, 0x40, 0x44, 0xcc, 0xde, 0xe4, 0xee, 0xc2, 0xe4, 0xc8, 0x44, 0x58, 0x40, 0xd2, 0x5c, 0xca, 0x5c, 0x40, 0xee, 0xca, 0x40, 0xe6, 0xca, 0xdc, 0xc8, 0x40, 0x4a, 0xe0, 0xd8, 0xca, 0xc2, 0x4e, 0xe6, 0x40, 0xde, 0xdc, 0x40, 0xe8, 0xd0, 0xd2, 0xe6, 0x40, 0xcc, 0xd8, 0xde, 0xee, 0x58, 0x40, 0xde, 0xe4, 0x25, 0x00, 0x5d, 0x61, 0x40, 0xd2, 0xcc, 0x40, 0x44, 0xc4, 0xc2, 0xc6, 0xd6, 0xee, 0xc2, 0xe4, 0xc8, 0x44, 0x58, 0x40, 0xd2, 0x5c, 0xca, 0x5c, 0x40, 0xee, 0xca, 0x40, 0xe4, 0xca, 0xc6, 0xca, 0xd2, 0xec, 0xca, 0x40, 0x4a, 0xe0, 0xd8, 0xca, 0xc2, 0x4e, 0xe6, 0x40, 0xde, 0xdc, 0x40, 0xe8, 0xd0, 0xd2, 0xe6, 0x40, 0xcc, 0xd8, 0xde, 0xee, 0x5c, 0x2b, 0x01, 0xf8, 0x4a, 0x85, 0x56, 0x06, 0x32, 0x57, 0x36, 0xf6, 0xe6, 0x46, 0xd6, 0xc2, 0x56, 0x16, 0x36, 0x47, 0x07, 0x32, 0x97, 0x76, 0xe6, 0x96, 0x66, 0x96, 0x36, 0x16, 0xe6, 0x46, 0x07, 0x22, 0x96, 0x46, 0x07, 0x92, 0x36, 0x07, 0x12, 0x03, 0x92, 0x66, 0x06, 0x42, 0x87, 0x56, 0x06, 0x22, 0xf6, 0xe6, 0x56, 0x06, 0x92, 0x36, 0x07, 0x12, 0x2e, 0x01, 0xf8, 0xea, 0x16, 0x86, 0x07, 0xc7, 0x16, 0xe6, 0x16, 0x46, 0x97, 0xf6, 0xe6, 0x06, 0x22, 0xf6, 0xe6, 0x56, 0xc6, 0x02, 0x12, 0xe6, 0x46, 0x06, 0x02, 0x03, 0xf2, 0x46, 0x87, 0x56, 0x26, 0x77, 0x97, 0x36, 0x57, 0xe6, 0x02, 0x02, 0xf2, 0xe4, 0xc6, 0x96, 0x07, 0xe2, 0x16, 0x86, 0x07, 0xc7, 0x16, 0xe6, 0x16, 0x46, 0x97, 0xf6, 0xe6, 0x2e, 0x01, 0xe8, 0xdb, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0x36, 0x07, 0x32, 0x16, 0xe6, 0x06, 0x22, 0x56, 0x06, 0x32, 0x57, 0xe6, 0x46, 0x07, 0xf2, 0xe6, 0x06, 0x12, 0x06, 0xe2, 0x16, 0x86, 0x07, 0xc7, 0x16, 0xe6, 0x16, 0x46, 0x97, 0xf6, 0xe6, 0x06, 0x22, 0xf6, 0xe6, 0x56, 0xc6, 0x02, 0x12, 0x36, 0x07, 0x52, 0x22, 0xf6, 0xf6, 0xe6, 0x76, 0x32, 0xe7, 0x6a, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xc5, 0x8c, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xcf, 0xc4, 0x0d, 0x9c, 0x34, 0xf1, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0x99, 0x90, 0x0c, 0xdc, 0x33, 0x61, 0xb3, 0xe1, 0xcf, 0xa5, 0x01, 0x3c, 0xdc, 0xca, 0xf0, 0xe8, 0x5a, 0xc4, 0xde, 0xdc, 0xca, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x67, 0x42, 0x7e, 0xf0, 0x46, 0x1d, 0xf1, 0x83, 0x67, 0xe6, 0x84, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x4d, 0x48, 0x06, 0x0e, 0x9a, 0x50, 0xb0, 0xe1, 0xcf, 0xa5, 0x01, 0x5e, 0xb1, 0xbc, 0x16, 0xb2, 0xba, 0x31, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0x9a, 0xb0, 0x38, 0x78, 0x5a, 0x90, 0xf8, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x34, 0x61, 0x32, 0x70, 0xd0, 0x84, 0xd5, 0x41, 0x89, 0x58, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x34, 0x61, 0x36, 0x70, 0xd0, 0x84, 0xe9, 0xc1, 0xd3, 0xd3, 0x3d, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x26, 0x6c, 0x07, 0x0e, 0x9a, 0xb0, 0x3f, 0x78, 0x66, 0x4e, 0x48, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x45, 0x13, 0x92, 0x81, 0x8b, 0x26, 0x14, 0x6c, 0xf8, 0x73, 0x69, 0x80, 0x57, 0x2c, 0xaf, 0x45, 0xec, 0xcd, 0xad, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8b, 0x26, 0x2c, 0x0e, 0x1e, 0x06, 0x25, 0xbe, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x4d, 0x98, 0x0c, 0x5c, 0x34, 0x61, 0x75, 0x50, 0x22, 0xd6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x4d, 0x98, 0x0d, 0x5c, 0x34, 0x61, 0x7a, 0xf0, 0xcc, 0x9c, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa2, 0x09, 0xdb, 0x81, 0x8b, 0x26, 0xec, 0x0f, 0x9e, 0x9e, 0xee, 0x51, 0xb3, 0x06, 0xef, 0x4f, 0xc8, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0xfe, 0x84, 0xec, 0x06, 0xe0, 0x41, 0xae, 0x6c, 0x0e, 0xee, 0xcd, 0x6d, 0xae, 0x0c, 0xc4, 0x4c, 0x2e, 0xec, 0xac, 0xad, 0xcc, 0x8d, 0x6e, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0xfd, 0x09, 0xd9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xa1, 0xc4, 0x0d, 0x1c, 0x29, 0xf1, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0x94, 0x90, 0x0c, 0x5c, 0x28, 0x61, 0xbf, 0xe1, 0x89, 0xf7, 0x0d, 0x5e, 0xc5, 0xf7, 0xb9, 0xe1, 0xcf, 0xa5, 0x0d, 0x12, 0x13, 0x8f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x42, 0x09, 0xe9, 0xc0, 0x85, 0x12, 0x06, 0x07, 0xc7, 0x96, 0xd2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x44, 0x09, 0xc9, 0xc0, 0x89, 0x12, 0x9a, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xc5, 0xad, 0xae, 0x4d, 0xac, 0x4c, 0x0e, 0xe4, 0xcd, 0x0c, 0xc4, 0x4c, 0x2e, 0xec, 0xac, 0xad, 0xcc, 0x8d, 0x6e, 0x6e, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0xfa, 0x47, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x4a, 0x48, 0x07, 0x4e, 0x94, 0x30, 0x38, 0x28, 0xb3, 0x74, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1b, 0x25, 0x24, 0x03, 0x37, 0x4a, 0x98, 0x6f, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x8f, 0xbd, 0xb9, 0xd1, 0x95, 0xb9, 0xd1, 0xcd, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xa2, 0xb6, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0x94, 0x90, 0x0e, 0xdc, 0x28, 0x61, 0x70, 0x70, 0x6c, 0x29, 0x6d, 0x35, 0x78, 0x81, 0x3a, 0xd0, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0x47, 0x86, 0xd0, 0x83, 0x17, 0xa8, 0x03, 0x35, 0x00, 0x9e, 0x84, 0xc1, 0xc1, 0xb1, 0xa5, 0x8d, 0x85, 0xd1, 0xa5, 0xbd, 0xb9, 0xb5, 0xb0, 0x95, 0xd9, 0x95, 0xb1, 0x81, 0xb4, 0x95, 0xcd, 0xcd, 0x85, 0x9d, 0x95, 0xb1, 0x80, 0x84, 0xcd, 0x81, 0x84, 0x81, 0x94, 0xc0, 0x85, 0xcd, 0xcd, 0x2b, 0x01, 0x78, 0x62, 0x17, 0xe6, 0x56, 0xa6, 0x03, 0x42, 0x56, 0x36, 0x47, 0x97, 0xe6, 0x16, 0x46, 0x97, 0xf6, 0xe6, 0x06, 0x62, 0x17, 0xe6, 0x56, 0x06, 0xf2, 0xe6, 0x06, 0x22, 0x57, 0xd6, 0xf6, 0x46, 0x57, 0x06, 0x32, 0x87, 0x96, 0x06, 0x2f, 0x01, 0xf8, 0x04, 0x17, 0x46, 0x87, 0xa6, 0x03, 0x92, 0xe6, 0x46, 0x57, 0x26, 0xe7, 0x16, 0xc6, 0x06, 0x22, 0xf7, 0x56, 0x47, 0x57, 0x06, 0xf2, 0xe6, 0x06, 0x42, 0x87, 0x56, 0x06, 0x22, 0x57, 0x36, 0x56, 0x96, 0x66, 0x97, 0xe6, 0x76, 0x06, 0x32, 0x87, 0x96, 0x06, 0x2f, 0x01, 0xf8, 0x00, 0x17, 0x96, 0xc7, 0xf6, 0x16, 0x46, 0xa6, 0x03, 0x32, 0x57, 0xd6, 0x16, 0xe6, 0x46, 0x97, 0x36, 0x06, 0xd2, 0x56, 0x36, 0x37, 0x17, 0x76, 0x56, 0x06, 0x32, 0xf6, 0xe6, 0x46, 0x57, 0xe6, 0x46, 0x37, 0xd7, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0x0b, 0xd4, 0x81, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xec, 0x87, 0x74, 0xa0, 0xec, 0x87, 0xa2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x65, 0x3f, 0xc4, 0x03, 0x65, 0x3f, 0xec, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x03, 0xc2, 0x3d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xec, 0x87, 0xcd, 0xc1, 0xcb, 0x37, 0xc5, 0x0f, 0xce, 0x9b, 0xa7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xd9, 0x0f, 0xc3, 0x81, 0xb2, 0x1f, 0xd6, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x60, 0xfa, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x65, 0x3f, 0x2c, 0x0f, 0x1e, 0x1e, 0x2a, 0x7e, 0x70, 0x46, 0x42, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xca, 0x7e, 0x98, 0x0f, 0x94, 0xfd, 0xd0, 0xb3, 0xe1, 0xcf, 0xa5, 0x0d, 0x9a, 0xd0, 0xbe, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb2, 0x1f, 0x6a, 0x0e, 0xde, 0x7c, 0x2a, 0x7e, 0x10, 0xa6, 0x63, 0x1d, 0x4e, 0xb1, 0xd6, 0x20, 0x58, 0x96, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xce, 0x8e, 0x1b, 0xb8, 0xbe, 0xe3, 0x37, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0x9e, 0xac, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x3b, 0x7e, 0xe0, 0xf8, 0x0e, 0x15, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xee, 0x90, 0x0d, 0x9c, 0xdc, 0x61, 0xb1, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xb9, 0x43, 0x7a, 0xf0, 0x46, 0x5a, 0xf1, 0x83, 0x22, 0x2c, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xee, 0xf8, 0x83, 0x67, 0xc7, 0x8a, 0x6f, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0xc1, 0xc5, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe6, 0x0e, 0xe9, 0xc0, 0xcd, 0x1d, 0x86, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xee, 0x10, 0x0f, 0xdc, 0xdc, 0x61, 0x72, 0xf8, 0x76, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xb9, 0xc3, 0x66, 0xe0, 0xe6, 0x0e, 0xbb, 0xc3, 0x03, 0xf8, 0x1d, 0x84, 0xe9, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x73, 0x87, 0xe9, 0xc0, 0xcd, 0x1d, 0x7a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xdc, 0x61, 0x3b, 0x70, 0x73, 0x87, 0xf1, 0xe1, 0xc1, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe6, 0x0e, 0xeb, 0x81, 0x9b, 0x3b, 0xd4, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xb9, 0xc3, 0x7c, 0xe0, 0xe6, 0x0e, 0x0d, 0x07, 0x0b, 0x38, 0xe1, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x3b, 0x54, 0x0c, 0xdc, 0xdc, 0xa1, 0xe3, 0xf0, 0xb4, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x73, 0x87, 0x92, 0x81, 0x9b, 0x3b, 0xb4, 0x1c, 0x1e, 0xbc, 0xa9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xba, 0xe3, 0x0f, 0x9e, 0x1d, 0x2b, 0xbe, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe8, 0x0e, 0xd9, 0xc0, 0xd1, 0x1d, 0x06, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xa8, 0x2d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x3b, 0xe4, 0x07, 0xef, 0xcc, 0x16, 0x3f, 0xfc, 0x50, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x77, 0xfc, 0xc1, 0xb3, 0x63, 0xc5, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xdd, 0x21, 0x1b, 0xb8, 0xba, 0xc3, 0x8b, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x77, 0x08, 0x07, 0xae, 0xee, 0x50, 0xbd, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xea, 0x0e, 0xe9, 0xc0, 0xd5, 0x1d, 0x36, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xed, 0xb2, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xba, 0xc3, 0xe2, 0xe0, 0x7d, 0xe7, 0xe2, 0x07, 0x2f, 0xaf, 0xca, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xee, 0x30, 0x1a, 0xb8, 0xba, 0x43, 0xd9, 0x86, 0x3f, 0x97, 0x36, 0x68, 0x7c, 0x3e, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xee, 0x30, 0x3c, 0x78, 0x64, 0xbb, 0xf8, 0x06, 0xc1, 0x66, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xdd, 0x61, 0x3a, 0x70, 0x75, 0x87, 0xfd, 0xc1, 0x1b, 0x70, 0x81, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xab, 0x3b, 0x14, 0x0c, 0x5c, 0xdd, 0xa1, 0xe5, 0xe0, 0xc9, 0xd8, 0xc0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd5, 0x1d, 0x6a, 0x06, 0xae, 0xee, 0xd0, 0x75, 0xf0, 0x44, 0x64, 0xcc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xab, 0x3b, 0xb4, 0x0d, 0x5c, 0xdd, 0xa1, 0x72, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0xda, 0x1b, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x77, 0x68, 0x3c, 0x78, 0x0b, 0xbf, 0xf8, 0xe1, 0x87, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xea, 0x0e, 0x9d, 0x03, 0x57, 0x77, 0x68, 0xde, 0xf0, 0xe7, 0xd2, 0x06, 0x6d, 0xcd, 0x16, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd5, 0x1d, 0x7a, 0x0f, 0x5e, 0x22, 0x30, 0x7e, 0x70, 0x46, 0xbd, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xba, 0x43, 0xf7, 0xc0, 0xd5, 0x1d, 0xfa, 0x0f, 0xdf, 0xce, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x77, 0x38, 0x30, 0x70, 0x75, 0x87, 0x13, 0x87, 0x07, 0xf0, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb3, 0x3b, 0xfe, 0xe0, 0xd9, 0xb1, 0xe2, 0x1b, 0x14, 0x1d, 0xb4, 0x83, 0x8f, 0x1b, 0x3e, 0x0f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xee, 0x90, 0x0c, 0xdc, 0xdd, 0xe1, 0xc4, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x3b, 0x44, 0x03, 0x77, 0x77, 0x58, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xbb, 0x43, 0x36, 0x70, 0x77, 0x87, 0xf8, 0xe0, 0xfd, 0xb5, 0xd9, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xdd, 0x1d, 0xf2, 0x81, 0xbb, 0x3b, 0x0c, 0x0e, 0xef, 0x05, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x77, 0x58, 0x0c, 0xdc, 0xdd, 0x61, 0x74, 0x50, 0xfa, 0x19, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xdd, 0x61, 0x36, 0x70, 0x77, 0x87, 0x0f, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xee, 0xb0, 0x1b, 0xb8, 0xbb, 0xc3, 0x78, 0xc3, 0xe7, 0x2e, 0x1b, 0x1c, 0x33, 0x3c, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xee, 0x0e, 0xdb, 0x83, 0xc7, 0x85, 0x8c, 0x1f, 0x04, 0x2c, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x77, 0x87, 0xf5, 0xc0, 0xdd, 0x1d, 0x2a, 0x36, 0x7c, 0xee, 0xb2, 0x41, 0xdb, 0x65, 0x9f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x77, 0x87, 0x86, 0x83, 0x77, 0x9d, 0x8c, 0x1f, 0x04, 0x2c, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x77, 0x87, 0x8e, 0x81, 0xbb, 0x3b, 0x14, 0x6d, 0xf8, 0xdc, 0x65, 0x83, 0xc5, 0x9d, 0xd9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x77, 0x87, 0x9e, 0x83, 0x87, 0xb5, 0x8c, 0x1f, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xdd, 0x1d, 0x9a, 0x06, 0xee, 0xee, 0x50, 0xb7, 0xe1, 0x73, 0x97, 0x0d, 0x56, 0x87, 0xdc, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xdd, 0x1d, 0xda, 0x0e, 0x9e, 0x36, 0x33, 0x7e, 0x10, 0xb0, 0xac, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xdd, 0x1d, 0xfa, 0x06, 0xee, 0xee, 0x50, 0xba, 0xe1, 0x73, 0x97, 0x01, 0x0f, 0xed, 0x0d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x3b, 0x74, 0x1e, 0x3c, 0x2d, 0x67, 0xfc, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xee, 0xd0, 0x3a, 0x70, 0x77, 0x87, 0xee, 0x0d, 0x9f, 0xbb, 0x6c, 0xd0, 0xd6, 0x6c, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xdd, 0xa1, 0xf9, 0xe0, 0x75, 0x3f, 0xe3, 0x07, 0x69, 0x2a, 0xae, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xdd, 0x1d, 0xca, 0x07, 0xee, 0xee, 0x70, 0x61, 0xc3, 0xe7, 0x2e, 0x1b, 0xac, 0x63, 0x46, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x3b, 0x1c, 0x38, 0x78, 0x62, 0xd1, 0xf8, 0x41, 0xea, 0x69, 0x6c, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe1, 0x1d, 0x7f, 0xf0, 0xec, 0x58, 0xf1, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xf0, 0x0e, 0xd9, 0xc0, 0xe1, 0x1d, 0x56, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xef, 0x90, 0x0e, 0x1c, 0xde, 0x21, 0x3e, 0x3c, 0x78, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x77, 0xc8, 0x07, 0x0e, 0xef, 0x30, 0xda, 0xf0, 0xb6, 0xce, 0x06, 0xc7, 0x0c, 0xcf, 0xc3, 0x3f, 0x3c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x79, 0xc7, 0x1f, 0x3c, 0x3b, 0x56, 0x7c, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xbc, 0x43, 0x36, 0x70, 0x79, 0x87, 0xd5, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x3b, 0xa4, 0x03, 0x97, 0x77, 0x88, 0x0f, 0x8f, 0xc9, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe5, 0x1d, 0xf2, 0x81, 0xcb, 0x3b, 0x8c, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0xe2, 0xce, 0xec, 0xc3, 0x3f, 0x3c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x7a, 0xc7, 0x1f, 0x3c, 0x3b, 0x56, 0x7c, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xbd, 0x43, 0x36, 0x70, 0x7a, 0x87, 0xfd, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x3b, 0xa4, 0x03, 0xa7, 0x77, 0x18, 0x6e, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0xc0, 0x07, 0x10, 0x00, 0x3f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xf4, 0x0e, 0xcb, 0x81, 0xd3, 0x3b, 0xcc, 0x37, 0xbc, 0xad, 0xb3, 0xc1, 0x3a, 0x66, 0xd4, 0xc3, 0x3f, 0x3c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x7b, 0xc7, 0x1f, 0x3c, 0x3b, 0x56, 0x7c, 0x83, 0x82, 0x34, 0x76, 0x83, 0xc6, 0xe7, 0xa3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdb, 0x3b, 0x0c, 0x06, 0x6e, 0xef, 0xf0, 0x60, 0x83, 0x93, 0x83, 0xdc, 0x1a, 0xac, 0x0e, 0xb9, 0x3f, 0xfc, 0xc3, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xde, 0x61, 0x39, 0x70, 0x7b, 0x87, 0xed, 0x41, 0x78, 0xaa, 0xae, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xde, 0x61, 0x3c, 0x70, 0x7b, 0x87, 0x82, 0x83, 0xc7, 0x1f, 0xfe, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xed, 0x1d, 0x1a, 0x06, 0x6e, 0xef, 0x50, 0x73, 0xf0, 0x32, 0x26, 0xea, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdb, 0x3b, 0x14, 0x0d, 0xdc, 0xde, 0xa1, 0xed, 0xe0, 0xb9, 0x8d, 0xbf, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x7b, 0x87, 0xba, 0x81, 0xdb, 0x3b, 0x74, 0x1e, 0xbc, 0x02, 0x87, 0x7a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xf6, 0x0e, 0xad, 0x03, 0xb7, 0x77, 0xa8, 0x3e, 0x78, 0xe3, 0xe4, 0xef, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xde, 0xa1, 0x7b, 0xe0, 0xf6, 0x0e, 0x07, 0x0e, 0x5e, 0x4d, 0x47, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xdf, 0xf1, 0x07, 0xcf, 0x8e, 0x15, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x7c, 0x87, 0x60, 0xe0, 0xf8, 0x0e, 0xfb, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x77, 0x48, 0x06, 0x8e, 0xef, 0x10, 0x6f, 0x78, 0x5b, 0x67, 0x83, 0xb6, 0xcb, 0x3e, 0x0f, 0xff, 0xf0, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x77, 0xc8, 0x07, 0x8e, 0xef, 0x30, 0x39, 0x68, 0x91, 0x39, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xbe, 0xc3, 0x66, 0xe0, 0xf8, 0x0e, 0xc3, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x68, 0x6f, 0xf0, 0xe1, 0x1f, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xf8, 0x0e, 0xcb, 0x81, 0xe3, 0x3b, 0xcc, 0x37, 0xbc, 0xad, 0xb3, 0x41, 0x5b, 0xb3, 0x85, 0x87, 0x7f, 0x78, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xef, 0x50, 0x30, 0x70, 0x7c, 0x87, 0x86, 0xc3, 0x7b, 0x41, 0xcd, 0x02, 0x5f, 0xe6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa5, 0x1d, 0x3f, 0x70, 0x6f, 0x87, 0xfe, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x76, 0xc8, 0x06, 0x2e, 0xed, 0xd0, 0xbc, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd2, 0x0e, 0xe1, 0xc0, 0xa5, 0x1d, 0x26, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xed, 0xb2, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xb4, 0xc3, 0xe0, 0xe0, 0x3d, 0xa6, 0xe3, 0x07, 0x2f, 0xaf, 0xca, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xed, 0xb0, 0x19, 0xb8, 0xb4, 0x43, 0xd7, 0x86, 0x3f, 0x97, 0x36, 0x68, 0x7c, 0x3e, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xed, 0xb0, 0x3b, 0x78, 0x14, 0xeb, 0xf8, 0x06, 0xc1, 0x66, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xda, 0x61, 0x39, 0x70, 0x69, 0x87, 0xf9, 0xc1, 0x1b, 0x70, 0x81, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x3b, 0xec, 0x07, 0x2e, 0xed, 0x50, 0x72, 0xf0, 0x64, 0x6c, 0xe0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd2, 0x0e, 0x2d, 0x03, 0x97, 0x76, 0xa8, 0x3a, 0x78, 0x22, 0x32, 0x66, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa5, 0x1d, 0xca, 0x06, 0x2e, 0xed, 0xd0, 0xb8, 0xe1, 0xcf, 0xa5, 0x01, 0x0f, 0xed, 0x0d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x3b, 0x14, 0x1e, 0x3c, 0x5d, 0x77, 0xfc, 0xf0, 0x43, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x69, 0x87, 0xca, 0x81, 0x4b, 0x3b, 0x14, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0xb6, 0x66, 0x0b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd2, 0x0e, 0xb5, 0x07, 0x0f, 0x07, 0x1e, 0x3f, 0x38, 0xa3, 0xde, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x76, 0xfc, 0xc1, 0xab, 0x41, 0xc7, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xda, 0x21, 0x1b, 0x38, 0xb5, 0x43, 0x7e, 0xf0, 0xb0, 0x98, 0xd1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xb5, 0xe3, 0x0f, 0x5e, 0x0d, 0x3a, 0xbe, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0xea, 0x90, 0xfb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd6, 0x0e, 0x83, 0x81, 0x5b, 0x3b, 0x34, 0x6f, 0x10, 0xa4, 0xa7, 0x1b, 0x34, 0xd6, 0x9c, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x6b, 0x87, 0xdd, 0xc0, 0xad, 0x1d, 0xc6, 0x07, 0x6f, 0xc0, 0x05, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5b, 0x3b, 0xac, 0x07, 0x6e, 0xed, 0x50, 0x70, 0xf0, 0x30, 0x28, 0xf0, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5b, 0x3b, 0x54, 0x0c, 0xdc, 0xda, 0xa1, 0xe7, 0xe0, 0xc9, 0xd8, 0xc0, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x6b, 0x87, 0xa2, 0x81, 0x5b, 0x3b, 0x94, 0x1d, 0x3c, 0x8e, 0x07, 0x7c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd6, 0x0e, 0x75, 0x03, 0xb7, 0x76, 0xe8, 0x3c, 0x78, 0x22, 0x32, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xda, 0xa1, 0x74, 0xe0, 0xd6, 0x0e, 0xc5, 0x07, 0xaf, 0x0e, 0x03, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xed, 0xf8, 0x83, 0x57, 0x83, 0x8e, 0x6f, 0x50, 0xf4, 0xe9, 0x6e, 0xf0, 0xcc, 0x17, 0xea, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd8, 0x0e, 0x83, 0x81, 0x63, 0x3b, 0x6c, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xdb, 0x61, 0x31, 0x70, 0x6c, 0x87, 0xd1, 0x41, 0xba, 0xc4, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x6c, 0x87, 0xd5, 0xc0, 0xb1, 0x1d, 0x66, 0x07, 0xe7, 0x05, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd8, 0x0e, 0xbb, 0x81, 0x63, 0x3b, 0x4c, 0x0f, 0xde, 0xf2, 0x42, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xdb, 0xf1, 0x07, 0xaf, 0x06, 0x1d, 0xdf, 0x60, 0xa5, 0x8b, 0xd3, 0x06, 0xab, 0x98, 0x51, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6b, 0x3b, 0x0c, 0x06, 0xae, 0xed, 0x50, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xda, 0x0e, 0x8b, 0x81, 0x6b, 0x3b, 0x6c, 0x0e, 0x52, 0x4f, 0x63, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6b, 0x3b, 0x8c, 0x06, 0xae, 0xed, 0xb0, 0x3f, 0x78, 0x33, 0xda, 0x78, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x6e, 0xc7, 0x1f, 0xbc, 0x1a, 0x74, 0x7c, 0x83, 0xc2, 0x50, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xb7, 0x43, 0x36, 0x70, 0x6e, 0x87, 0xc5, 0x86, 0xcf, 0x5d, 0x36, 0x7c, 0x47, 0xbf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x76, 0x18, 0x1c, 0xbc, 0x1a, 0x80, 0xfc, 0xf0, 0xe0, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xdb, 0xf1, 0x07, 0xaf, 0x06, 0x1d, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x6f, 0x87, 0x60, 0xe0, 0xde, 0x0e, 0xe9, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7b, 0x3b, 0x24, 0x03, 0xf7, 0x76, 0x88, 0x0e, 0x02, 0x96, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xb7, 0x43, 0x36, 0x70, 0x6f, 0x87, 0xf0, 0xf0, 0xe0, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xbd, 0x1d, 0xe2, 0x81, 0x7b, 0x3b, 0xac, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xdb, 0x21, 0x1f, 0xb8, 0xb7, 0xc3, 0xe0, 0x20, 0x60, 0x59, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7b, 0x3b, 0x2c, 0x06, 0xee, 0xed, 0x30, 0x3a, 0x68, 0x18, 0xfd, 0xb4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xde, 0x0e, 0xb3, 0x81, 0x7b, 0x3b, 0xec, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xdb, 0x61, 0x37, 0x70, 0x6f, 0x87, 0xe1, 0x41, 0x51, 0x29, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xdb, 0x61, 0x39, 0x70, 0x6f, 0x87, 0xf9, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0xdc, 0x99, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf7, 0x76, 0x58, 0x1f, 0xbc, 0xde, 0x83, 0xfc, 0xf0, 0x98, 0x4c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xbd, 0x1d, 0x0a, 0x06, 0xee, 0xed, 0xd0, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xde, 0x0e, 0x0d, 0x03, 0xf7, 0x76, 0xa8, 0x38, 0x08, 0x58, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xde, 0x0e, 0x1d, 0x03, 0xf7, 0x76, 0xa8, 0x39, 0x58, 0x00, 0x72, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x6f, 0x87, 0xa2, 0x81, 0x7b, 0x3b, 0xf4, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xb7, 0x43, 0xd3, 0xc0, 0xbd, 0x1d, 0xaa, 0x0e, 0x8a, 0x4a, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xde, 0x0e, 0x5d, 0x03, 0xf7, 0x76, 0xa8, 0x3b, 0x78, 0xcb, 0x0b, 0x75, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xbd, 0x1d, 0x0a, 0x07, 0xee, 0xed, 0x50, 0xbc, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xde, 0x0e, 0x8d, 0x03, 0xf7, 0x76, 0xe8, 0x3c, 0x48, 0x53, 0x71, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xed, 0x50, 0x3a, 0x70, 0x6f, 0x87, 0xde, 0x83, 0xb6, 0x83, 0x0b, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xed, 0xd0, 0x3c, 0x70, 0x6f, 0x87, 0xf2, 0x83, 0xa5, 0xca, 0xa8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xbd, 0x1d, 0xda, 0x07, 0xee, 0xed, 0x50, 0x7f, 0x50, 0x50, 0x64, 0x76, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x00, 0xbf, 0xb6, 0xb2, 0xb9, 0xb0, 0x96, 0xb6, 0xb2, 0xb9, 0xb9, 0xb0, 0xb3, 0x72, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x01, 0x43, 0xe4, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x8c, 0xc6, 0x0d, 0x5c, 0xa3, 0x61, 0xbf, 0x41, 0xa8, 0x21, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x68, 0x48, 0x06, 0x8e, 0xd1, 0x30, 0xdb, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x8c, 0x86, 0x68, 0xe0, 0x18, 0x0d, 0xf9, 0x86, 0x37, 0xee, 0x0e, 0x1e, 0xb5, 0x3d, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xa3, 0x61, 0x30, 0x70, 0x8c, 0x86, 0xd5, 0x06, 0x85, 0x60, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xa3, 0x61, 0x71, 0xf0, 0x3a, 0x28, 0xf2, 0x83, 0x37, 0xb9, 0x1f, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x68, 0xdc, 0xc1, 0x9b, 0x8f, 0xc8, 0x37, 0x58, 0xaf, 0x52, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xa3, 0x21, 0x18, 0xb8, 0x46, 0xc3, 0x6c, 0x83, 0x60, 0x33, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xd1, 0x10, 0x0d, 0x5c, 0xa3, 0x21, 0x3f, 0x78, 0xbc, 0xf6, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x8d, 0x86, 0xc1, 0xc0, 0x35, 0x1a, 0x56, 0x07, 0xcf, 0xef, 0xc4, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xd1, 0xb0, 0x1b, 0xb8, 0x46, 0xc3, 0xfc, 0xe0, 0x79, 0x5a, 0xc7, 0xab, 0xc1, 0xd3, 0xe4, 0x99, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0x4d, 0x9e, 0xb9, 0x01, 0xf0, 0x00, 0x2e, 0x2c, 0x4d, 0x0e, 0xe4, 0xcd, 0x0c, 0x64, 0xae, 0xcc, 0x8d, 0xac, 0x4c, 0x0e, 0x24, 0xcc, 0x8d, 0x0c, 0x44, 0xae, 0x6c, 0xac, 0x2c, 0xcd, 0xae, 0x4c, 0x0e, 0x64, 0x0e, 0x2d, 0x0d, 0x6e, 0x6e, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x69, 0xf2, 0xcc, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x2e, 0x84, 0x74, 0xe0, 0x5c, 0x08, 0x15, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0x85, 0x10, 0x0f, 0x9c, 0x0b, 0x61, 0xb7, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0x7b, 0xe4, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x42, 0xd8, 0x1c, 0xbc, 0xe5, 0x8d, 0xfc, 0xa0, 0x6d, 0xeb, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x5c, 0x08, 0xc3, 0x81, 0x73, 0x21, 0x34, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0xe7, 0x8d, 0xfa, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb9, 0x10, 0xd6, 0x07, 0x0f, 0xaa, 0x23, 0x3f, 0x68, 0xdb, 0x7a, 0xbc, 0xc3, 0x29, 0xd6, 0x1a, 0xbc, 0x44, 0x0a, 0x79, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0x25, 0x52, 0xc8, 0x0d, 0xc0, 0x4f, 0x5e, 0xd9, 0x1c, 0x48, 0x9a, 0x19, 0x48, 0x18, 0x48, 0xda, 0x1c, 0x88, 0x58, 0x99, 0xd9, 0x9b, 0x5c, 0x19, 0x88, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x48, 0x71, 0x03, 0x77, 0x52, 0x28, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x20, 0x85, 0x64, 0xe0, 0x40, 0x0a, 0x75, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xa4, 0x10, 0x0d, 0x1c, 0x48, 0x61, 0xbb, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x90, 0x42, 0x78, 0xf0, 0x36, 0x43, 0xf2, 0x0d, 0xff, 0xce, 0x6f, 0xf0, 0x20, 0x24, 0xe4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x03, 0x29, 0x8c, 0x07, 0x0e, 0xa4, 0xd0, 0xb6, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x90, 0xc2, 0xfc, 0xe0, 0xa9, 0x8c, 0xe4, 0x07, 0x0f, 0x4f, 0x24, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xa4, 0xb8, 0x83, 0x17, 0x04, 0x92, 0x6f, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x90, 0x42, 0x32, 0x70, 0x21, 0x85, 0xe8, 0xf0, 0xc1, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x48, 0x71, 0x07, 0x2f, 0x08, 0x24, 0xdf, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x23, 0x85, 0x64, 0xe0, 0x46, 0x0a, 0x55, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xa4, 0x10, 0x0d, 0xdc, 0x48, 0x21, 0x3d, 0x7c, 0x71, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x48, 0x21, 0x1e, 0xb8, 0x91, 0xc2, 0x76, 0xc3, 0xdb, 0x3a, 0x1b, 0xbc, 0xe9, 0x78, 0xf8, 0xf0, 0xe0, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x23, 0x85, 0xf1, 0xc0, 0x8d, 0x14, 0x9a, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0x9b, 0x8e, 0x87, 0x0f, 0x9f, 0x07, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x49, 0xf1, 0x03, 0x47, 0x52, 0x88, 0x0e, 0x56, 0x81, 0xc9, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x95, 0x14, 0x77, 0xf0, 0x82, 0x40, 0xf2, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x52, 0x48, 0x06, 0xae, 0xa4, 0x50, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x4a, 0x0a, 0xd1, 0xc0, 0x95, 0x14, 0xd2, 0xc3, 0x37, 0x8a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x95, 0x14, 0xe2, 0x81, 0x2b, 0x29, 0x6c, 0x0f, 0x9e, 0x03, 0x4a, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x49, 0x61, 0x3c, 0x70, 0x25, 0x85, 0xa6, 0x83, 0xa7, 0x8f, 0x92, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x49, 0xf1, 0x03, 0x67, 0x52, 0x88, 0x0e, 0x96, 0x39, 0xc9, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x9d, 0x14, 0x77, 0xf0, 0x82, 0x40, 0xf2, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x52, 0xec, 0xc0, 0x9d, 0x14, 0x92, 0xc3, 0x17, 0xbf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x9d, 0x14, 0xa2, 0x81, 0x3b, 0x29, 0x0c, 0x37, 0xbc, 0xad, 0xb3, 0xc1, 0xbb, 0x35, 0x94, 0x0f, 0x0f, 0xee, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x52, 0x58, 0x0e, 0xdc, 0x49, 0xa1, 0x67, 0xc3, 0xdb, 0x3a, 0x1b, 0xbc, 0x5b, 0x43, 0xf9, 0xf0, 0x79, 0x50, 0xab, 0xc1, 0x6b, 0x51, 0xbb, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xcc, 0x8b, 0x1b, 0x38, 0xf7, 0xc2, 0x97, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x5e, 0x48, 0x06, 0xce, 0xbc, 0x10, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0xe5, 0x34, 0xd0, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe6, 0x85, 0xe8, 0xe0, 0x09, 0xca, 0xe4, 0x07, 0x6f, 0xb6, 0xc7, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3b, 0x2f, 0xee, 0xe0, 0x51, 0xc7, 0xe4, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xbc, 0x90, 0x0c, 0xdc, 0x79, 0x61, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xce, 0x0b, 0xd1, 0xc0, 0x9d, 0x17, 0xf2, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x16, 0x32, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3b, 0x2f, 0xc4, 0x07, 0xef, 0xaa, 0x26, 0x3f, 0xfc, 0x50, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x79, 0x61, 0x30, 0x70, 0xe7, 0x85, 0xd5, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xa6, 0x01, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x79, 0x61, 0x71, 0xf0, 0x9a, 0x6d, 0xf2, 0x83, 0x27, 0xce, 0x1e, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x5e, 0xdc, 0xc1, 0xa3, 0x8e, 0xc9, 0x37, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x7a, 0x21, 0x19, 0x38, 0xf4, 0xc2, 0x7e, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0xfa, 0x47, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x5e, 0x48, 0x0f, 0x1e, 0x3f, 0x4e, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd0, 0x0b, 0xf1, 0xc0, 0xa1, 0x17, 0x16, 0x07, 0x25, 0xd1, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe8, 0x85, 0xc9, 0xc0, 0xa1, 0x17, 0x36, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe8, 0x85, 0xd1, 0xc0, 0xa1, 0x17, 0x96, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xbd, 0xb0, 0x1a, 0x38, 0xf4, 0xc2, 0xec, 0xf0, 0xe0, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe8, 0x85, 0xdd, 0xc0, 0xa1, 0x17, 0x86, 0x07, 0xa7, 0xe6, 0xb6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x2f, 0x4c, 0x07, 0x0e, 0xbd, 0x30, 0x3f, 0x68, 0xed, 0xc3, 0xa0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf4, 0xe2, 0x0e, 0x1e, 0x75, 0x4c, 0xbe, 0xe1, 0x13, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd2, 0x0b, 0xc9, 0xc0, 0xa5, 0x17, 0xf6, 0x1b, 0x3e, 0x77, 0xd9, 0xa0, 0x2c, 0x2c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x2f, 0xa4, 0x07, 0xef, 0xe7, 0x27, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe9, 0x85, 0x78, 0xe0, 0xd2, 0x0b, 0x8b, 0x83, 0x92, 0x68, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf4, 0xc2, 0x64, 0xe0, 0xd2, 0x0b, 0x9b, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf4, 0xc2, 0x68, 0xe0, 0xd2, 0x0b, 0xcb, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x5e, 0x58, 0x0d, 0x5c, 0x7a, 0x61, 0x76, 0x70, 0x6a, 0x6e, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xbd, 0xb0, 0x1b, 0xb8, 0xf4, 0xc2, 0xf0, 0x20, 0x60, 0x59, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xbd, 0x30, 0x1d, 0xb8, 0xf4, 0xc2, 0xfc, 0xa0, 0xb5, 0x0f, 0x83, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd4, 0x8b, 0x3b, 0x78, 0xd4, 0x31, 0xf9, 0x86, 0x4f, 0x6c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x53, 0x2f, 0x24, 0x03, 0xa7, 0x5e, 0x68, 0xd8, 0xf0, 0xb9, 0xcb, 0x06, 0x8b, 0x84, 0x67, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd4, 0x0b, 0xe9, 0xc1, 0x0b, 0x2c, 0xca, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x7a, 0x21, 0x1e, 0x38, 0xf5, 0xc2, 0xe2, 0xa0, 0x24, 0x9a, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xbd, 0x30, 0x19, 0x38, 0xf5, 0xc2, 0xe6, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xbd, 0x30, 0x1a, 0x38, 0xf5, 0xc2, 0x76, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa9, 0x17, 0x56, 0x03, 0xa7, 0x5e, 0x98, 0x1d, 0x1c, 0x97, 0x67, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x53, 0x2f, 0xec, 0x06, 0x4e, 0xbd, 0x30, 0x3d, 0x28, 0xbc, 0x8c, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xbd, 0x30, 0x1e, 0x38, 0xf5, 0x42, 0xc1, 0x41, 0x6b, 0x1f, 0x06, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xad, 0x17, 0x77, 0xf0, 0xa8, 0x63, 0xf2, 0x0d, 0x96, 0xd4, 0x2f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb7, 0x5e, 0x48, 0x06, 0x6e, 0xbd, 0x30, 0xd8, 0xf0, 0xb9, 0xcb, 0x06, 0x8b, 0x84, 0x67, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd6, 0x0b, 0xe9, 0xc1, 0x93, 0x5e, 0xca, 0x0f, 0xda, 0xee, 0xcb, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x63, 0x2f, 0xee, 0xe0, 0x51, 0xc7, 0xe4, 0x1b, 0x14, 0x86, 0xaa, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb1, 0x17, 0x92, 0x81, 0x63, 0x2f, 0x8c, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x7b, 0x21, 0x1a, 0x38, 0xf6, 0x42, 0x7a, 0xf8, 0x13, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xf6, 0x42, 0x3c, 0x70, 0xec, 0x85, 0xfc, 0xe0, 0xb8, 0x3c, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x7b, 0x61, 0x30, 0x70, 0xec, 0x85, 0xcd, 0x41, 0xe1, 0x65, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x7b, 0x71, 0x07, 0x8f, 0x3a, 0x26, 0xdf, 0x60, 0x49, 0x75, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xed, 0x85, 0x64, 0xe0, 0xda, 0x0b, 0xe1, 0x41, 0x23, 0x94, 0x84, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xee, 0xc5, 0x1d, 0x3c, 0xea, 0x98, 0x7c, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb9, 0x17, 0x3b, 0x70, 0xee, 0x85, 0xe8, 0x60, 0xc1, 0x0e, 0xfa, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xee, 0x85, 0x6c, 0xe0, 0xdc, 0x0b, 0xf1, 0x41, 0xdb, 0x7d, 0x99, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb9, 0x17, 0xf2, 0x81, 0x73, 0x2f, 0x5c, 0xd9, 0x60, 0x85, 0x50, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xee, 0x85, 0xc9, 0xc0, 0xb9, 0x17, 0x66, 0x07, 0x6b, 0xc7, 0x41, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x73, 0x2f, 0xec, 0x06, 0xce, 0xbd, 0x30, 0x3d, 0x58, 0x60, 0x67, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x7b, 0x61, 0x3b, 0x70, 0xee, 0x85, 0x27, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xbd, 0x30, 0x1e, 0x38, 0xf7, 0x42, 0xc1, 0xc1, 0x9a, 0xd9, 0xd0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xdc, 0x0b, 0x0d, 0x03, 0xe7, 0x5e, 0x28, 0x39, 0x58, 0x60, 0x67, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x7b, 0xa1, 0x65, 0xe0, 0xdc, 0x0b, 0x47, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x7b, 0xa1, 0x66, 0xe0, 0xdc, 0x0b, 0x55, 0x07, 0xcb, 0x2a, 0x41, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x73, 0x2f, 0x74, 0x0d, 0x9c, 0x7b, 0xa1, 0xef, 0x60, 0x39, 0xb2, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xee, 0x85, 0xc2, 0x81, 0x73, 0x2f, 0xfc, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xee, 0x85, 0xc6, 0x81, 0x73, 0x2f, 0xb4, 0x1e, 0x2c, 0x54, 0x0c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xbd, 0x50, 0x3b, 0x70, 0xee, 0x85, 0x1b, 0x1b, 0xac, 0x10, 0x6a, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xbd, 0xd0, 0x3c, 0x70, 0xee, 0x85, 0xf6, 0x83, 0x65, 0xc7, 0xa0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb9, 0x17, 0xea, 0x07, 0xce, 0xbd, 0xf0, 0xe0, 0x60, 0x81, 0x9d, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xee, 0x85, 0x0b, 0x03, 0xe7, 0x5e, 0x78, 0x71, 0xb0, 0x4e, 0x1a, 0xb4, 0xaa, 0x56, 0x83, 0x66, 0xf0, 0xad, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x34, 0x83, 0x6f, 0xd5, 0x00, 0xf8, 0x4b, 0x56, 0x66, 0x56, 0x26, 0x27, 0x57, 0x46, 0x06, 0x52, 0x12, 0xd6, 0x56, 0x36, 0x07, 0x32, 0x16, 0xc6, 0xc6, 0xc6, 0x02, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0x32, 0x57, 0xc6, 0x66, 0xc6, 0x02, 0x42, 0xf7, 0x06, 0xb2, 0x56, 0x56, 0x06, 0x07, 0xb2, 0x12, 0x26, 0x56, 0x46, 0x07, 0x32, 0xf6, 0x26, 0x57, 0x36, 0x07, 0x02, 0x57, 0x27, 0x57, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xd0, 0x0c, 0xbe, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x01, 0x71, 0x03, 0xc7, 0x40, 0xfc, 0x06, 0x41, 0xfb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x01, 0x21, 0x19, 0x38, 0x03, 0x42, 0xd5, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x33, 0x20, 0x44, 0x03, 0x67, 0x40, 0xc8, 0x0f, 0x9e, 0x25, 0x15, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x01, 0x61, 0x30, 0x70, 0x06, 0x84, 0xd5, 0x86, 0x3f, 0x97, 0x36, 0x68, 0xfa, 0x7a, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0x80, 0xb0, 0x38, 0x78, 0x95, 0x63, 0xf9, 0x41, 0xdb, 0xd6, 0xe3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x19, 0x10, 0x66, 0x03, 0x67, 0x40, 0x28, 0xd8, 0xf0, 0xe7, 0xd2, 0x00, 0x1e, 0x6e, 0x61, 0x63, 0x6b, 0x2d, 0x62, 0x6f, 0x6e, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x01, 0x61, 0x7c, 0xf0, 0x32, 0xca, 0xf2, 0x83, 0x67, 0xe6, 0x84, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x40, 0x68, 0x18, 0x38, 0x03, 0x42, 0xd3, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xbd, 0xd6, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x01, 0xa1, 0xe2, 0xe0, 0x51, 0x9b, 0xe5, 0x07, 0xcf, 0xd3, 0x3a, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x03, 0x42, 0x32, 0x70, 0x07, 0x84, 0x1b, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0x80, 0x10, 0x0d, 0xdc, 0x01, 0x21, 0xdf, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xaa, 0xc1, 0xfe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x0e, 0x08, 0x83, 0x81, 0x3b, 0x20, 0xac, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xd3, 0xd7, 0xe3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x07, 0x84, 0xc5, 0xc1, 0x83, 0x4f, 0xcb, 0x0f, 0xda, 0xb6, 0x1e, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0x80, 0x30, 0x1b, 0xb8, 0x03, 0x42, 0xc5, 0x86, 0x3f, 0x97, 0x06, 0xf0, 0xa2, 0x0b, 0x93, 0x3b, 0x2b, 0xa3, 0x6b, 0x11, 0x7b, 0x73, 0x2b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x0e, 0x08, 0xf3, 0x83, 0x47, 0xb7, 0x96, 0x1f, 0x3c, 0x33, 0x27, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x03, 0x42, 0xc7, 0xc0, 0x1d, 0x10, 0x5e, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0xc7, 0x01, 0x20, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1d, 0x10, 0x0a, 0x0f, 0xde, 0x4f, 0x5b, 0xbe, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x0e, 0x08, 0x8d, 0x03, 0x77, 0x40, 0x68, 0xdf, 0xf0, 0xe7, 0xd2, 0x06, 0x6f, 0x3a, 0x1e, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x3b, 0x20, 0x54, 0x1e, 0xbc, 0x60, 0xb7, 0xfc, 0xe0, 0x29, 0xcb, 0xc3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1d, 0x10, 0xea, 0x07, 0xee, 0x80, 0x70, 0x62, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0x4a, 0x1f, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0x80, 0xd0, 0x7f, 0xf0, 0x94, 0xe0, 0xf2, 0x83, 0x17, 0x97, 0x57, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x08, 0x84, 0x64, 0xe0, 0x10, 0x08, 0x75, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0x81, 0x10, 0x0d, 0x1c, 0x02, 0x21, 0x3f, 0x78, 0xae, 0x9d, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x08, 0x84, 0xc1, 0xc0, 0x21, 0x10, 0x56, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xe9, 0xeb, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x04, 0xc2, 0xe2, 0xe0, 0xdd, 0xcc, 0xe5, 0x07, 0x6d, 0x5b, 0x8f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x40, 0x98, 0x0d, 0x1c, 0x02, 0xa1, 0x60, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0xac, 0xb2, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0x81, 0x30, 0x3e, 0x78, 0xbb, 0x74, 0xf9, 0xc1, 0x33, 0x73, 0x42, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x20, 0x34, 0x0c, 0x1c, 0x02, 0xa1, 0x6d, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0xe9, 0x78, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0x81, 0x50, 0x71, 0xf0, 0x86, 0xec, 0xf2, 0x83, 0xa7, 0x2c, 0x0f, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x02, 0x21, 0x19, 0xb8, 0x04, 0xc2, 0x78, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x25, 0x10, 0xa2, 0x81, 0x4b, 0x20, 0xe4, 0x07, 0xcf, 0x1d, 0x4d, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0x81, 0x30, 0x18, 0xb8, 0x04, 0xc2, 0x6a, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0x7d, 0x3d, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x40, 0x58, 0x1c, 0x3c, 0x96, 0xbc, 0xfc, 0xa0, 0x6d, 0xeb, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x12, 0x08, 0xb3, 0x81, 0x4b, 0x20, 0x6c, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x2b, 0x74, 0x42, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x12, 0x08, 0xbb, 0x83, 0x07, 0xab, 0x97, 0x1f, 0x3c, 0x33, 0x27, 0xa4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x14, 0x08, 0xc9, 0xc0, 0x29, 0x10, 0xc6, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0x81, 0x10, 0x0d, 0x9c, 0x02, 0x21, 0xdf, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0xe0, 0xaf, 0xa5, 0xb1, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x29, 0x10, 0x06, 0x03, 0xa7, 0x40, 0x58, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xa6, 0xaf, 0xc7, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x14, 0x08, 0x8b, 0x83, 0x17, 0xdd, 0x97, 0x1f, 0xb4, 0x6d, 0x3d, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x02, 0x61, 0x36, 0x70, 0x0a, 0x84, 0xed, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x85, 0x4e, 0xc8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x02, 0x61, 0x77, 0xf0, 0xaa, 0xfe, 0xf2, 0x83, 0x67, 0xe6, 0x84, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x02, 0x21, 0x19, 0xb8, 0x05, 0xc2, 0x78, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x2d, 0x10, 0xa2, 0x81, 0x5b, 0x20, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0xfc, 0x30, 0xb4, 0xb7, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x05, 0xc2, 0x60, 0xe0, 0x16, 0x08, 0xab, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xf4, 0xf5, 0xf8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x02, 0x61, 0x71, 0xf0, 0xec, 0x04, 0xf3, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5b, 0x20, 0xcc, 0x06, 0x6e, 0x81, 0xb0, 0xdd, 0xf0, 0xe7, 0xd2, 0x06, 0xaf, 0xd0, 0x09, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5b, 0x20, 0xec, 0x0e, 0x9e, 0xfe, 0x60, 0x7e, 0xf0, 0xcc, 0x9c, 0x90, 0x3a, 0x9c, 0x62, 0x2d, 0xe0, 0x93, 0xa5, 0xc9, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xef, 0xa5, 0x30, 0x6f, 0x00, 0x34, 0x9e, 0x4b, 0x23, 0x2b, 0x03, 0x79, 0x33, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x31, 0x63, 0x7b, 0xbb, 0x03, 0x41, 0x29, 0x11, 0x0b, 0x5b, 0xd3, 0x01, 0x29, 0x11, 0x7b, 0x7b, 0x73, 0x03, 0x99, 0x2b, 0x73, 0x23, 0x2b, 0x93, 0xdb, 0x01, 0x29, 0x31, 0x7b, 0x93, 0xd3, 0x01, 0x29, 0x81, 0x63, 0x2b, 0x0b, 0x03, 0x99, 0x2b, 0x73, 0x23, 0x2b, 0x93, 0x4b, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0x97, 0xc2, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xc9, 0x30, 0x1b, 0x38, 0x27, 0x43, 0xc5, 0x06, 0xc1, 0x66, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x93, 0x61, 0x38, 0x70, 0x4e, 0x86, 0xf1, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x02, 0x4f, 0x2c, 0x6c, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xc9, 0xb0, 0x1e, 0x38, 0x27, 0x43, 0xc3, 0xc1, 0xd3, 0x03, 0x9e, 0x3b, 0x9c, 0x62, 0x6b, 0xf0, 0x30, 0xd0, 0xe3, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x87, 0x81, 0x1e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x61, 0x19, 0x37, 0x70, 0x5c, 0xc6, 0x6f, 0x70, 0x80, 0x10, 0xdd, 0xe0, 0x61, 0xa0, 0xc7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x59, 0xc6, 0x1d, 0xbc, 0xae, 0xc5, 0x7c, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x65, 0x19, 0x92, 0x81, 0xcb, 0x32, 0x54, 0x6e, 0xf8, 0x73, 0x69, 0x80, 0x07, 0xee, 0x6d, 0xad, 0x6c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x32, 0xe4, 0x07, 0x0f, 0x9b, 0x31, 0xdf, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x32, 0x0c, 0x06, 0x2e, 0xcb, 0x30, 0x3a, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb2, 0x0c, 0xab, 0x81, 0xcb, 0x32, 0x34, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x2c, 0xc3, 0x6c, 0xe0, 0xb2, 0x0c, 0xdb, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x32, 0x75, 0x8f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x2c, 0xc3, 0xee, 0xe0, 0x19, 0x3f, 0xe6, 0x07, 0x4f, 0x4f, 0xf7, 0x58, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xcb, 0x30, 0x1e, 0xb8, 0x2c, 0x43, 0xe1, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xbd, 0xd6, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x96, 0xa1, 0xe4, 0xe0, 0x31, 0x45, 0xe6, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x07, 0x0c, 0x91, 0x57, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x65, 0x48, 0x06, 0x4e, 0xcb, 0x30, 0xdf, 0xf0, 0xe7, 0xd2, 0x00, 0x0f, 0x5c, 0x59, 0xd9, 0xda, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x65, 0xc8, 0x0f, 0x9e, 0xbe, 0x64, 0xbe, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x65, 0x18, 0x0c, 0x9c, 0x96, 0x61, 0x73, 0xf0, 0x6e, 0xaa, 0xc9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb4, 0x0c, 0xa3, 0x81, 0xd3, 0x32, 0x0c, 0x0f, 0xce, 0x48, 0xa8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x69, 0x19, 0x96, 0x03, 0xa7, 0x65, 0x58, 0x1f, 0x3c, 0x3d, 0xdd, 0xa3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb6, 0x0c, 0xc9, 0xc0, 0x6d, 0x19, 0xe6, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0xfd, 0xc6, 0xc9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x5b, 0x86, 0xfc, 0xe0, 0x9d, 0x5a, 0xe6, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x5b, 0x86, 0xc1, 0xc0, 0x6d, 0x19, 0x36, 0x07, 0xef, 0xa6, 0x9a, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xcb, 0x30, 0x1a, 0xb8, 0x2d, 0xc3, 0xf0, 0xe0, 0x8c, 0x84, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x96, 0x61, 0x39, 0x70, 0x5b, 0x86, 0xf5, 0xc1, 0xd3, 0xd3, 0x3d, 0x6a, 0x16, 0xc0, 0xaf, 0xad, 0x6c, 0x6e, 0x2e, 0xec, 0xac, 0xac, 0x45, 0x8c, 0xed, 0x4d, 0xdc, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x78, 0xde, 0x99, 0xf9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x06, 0x61, 0x36, 0x70, 0x1b, 0x84, 0x92, 0x0d, 0x5f, 0xd4, 0x6c, 0xa8, 0xe3, 0x01, 0x9e, 0x75, 0x64, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x62, 0x6c, 0x6f, 0xe2, 0x2c, 0x80, 0x17, 0x5b, 0x9a, 0x5d, 0x59, 0x0b, 0x5c, 0xd8, 0xd8, 0x5a, 0x19, 0xbd, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0xce, 0x37, 0xf3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xa5, 0xe2, 0x06, 0x8e, 0xa9, 0xf8, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x54, 0x48, 0x06, 0x4e, 0xa9, 0x30, 0xde, 0xf0, 0xe7, 0xd2, 0x06, 0x45, 0xeb, 0xc9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x52, 0x21, 0x3d, 0x78, 0xba, 0x9d, 0xf9, 0xc1, 0xc3, 0x13, 0xc9, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x5b, 0x2a, 0x24, 0x03, 0xb7, 0x54, 0x18, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0xb3, 0xc9, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x52, 0x21, 0x3d, 0x78, 0x39, 0x9f, 0xf9, 0x86, 0x7f, 0xe7, 0x37, 0x78, 0x49, 0x13, 0x72, 0xcd, 0x1a, 0xbc, 0x29, 0x72, 0x64, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x78, 0xe6, 0xb8, 0xdd, 0x00, 0x7e, 0x6a, 0x6f, 0x62, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6d, 0x65, 0xf3, 0x4a, 0x80, 0x77, 0x53, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0x9a, 0xdb, 0x19, 0x08, 0x55, 0xd8, 0xdc, 0xda, 0xdc, 0x4a, 0x00, 0x6f, 0x25, 0x68, 0x65, 0x61, 0x72, 0x3a, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x75, 0x6e, 0x69, 0xf8, 0x12, 0xc0, 0x53, 0x09, 0x59, 0x59, 0x98, 0x9c, 0x0e, 0x08, 0x5b, 0x98, 0x5b, 0x19, 0x88, 0x99, 0xdc, 0x5b, 0x1b, 0x48, 0x9d, 0x5b, 0x1a, 0xbe, 0x04, 0xe0, 0x49, 0xc9, 0xd8, 0x9b, 0xdc, 0x9a, 0x0e, 0x88, 0x5c, 0x59, 0x5c, 0x5d, 0xd9, 0x1c, 0x1d, 0x08, 0xdd, 0x1b, 0x08, 0x59, 0x19, 0x5b, 0x19, 0x5d, 0x19, 0x48, 0x5b, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0x19, 0x88, 0x19, 0xdb, 0xdb, 0xbd, 0x04, 0xe0, 0x4d, 0x09, 0x5d, 0x58, 0x5b, 0x99, 0x0e, 0x88, 0x5c, 0x59, 0x5c, 0x5d, 0xd9, 0x1c, 0x1d, 0x08, 0xdd, 0x1b, 0x08, 0x59, 0x19, 0x5b, 0x19, 0x5d, 0x19, 0x88, 0xdc, 0x5b, 0x1d, 0x5d, 0x19, 0x88, 0xd9, 0x9b, 0x1c, 0xc8, 0x1c, 0x5a, 0x1a, 0xbc, 0x04, 0xc0, 0x03, 0x25, 0x6b, 0x72, 0x6f, 0x63, 0x3a, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x2c, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x62, 0x6f, 0x6e, 0x65, 0xf3, 0x12, 0xc0, 0x77, 0x09, 0x1c, 0x5b, 0x59, 0x98, 0x0e, 0x88, 0x5c, 0x59, 0x5c, 0x5d, 0xd9, 0x1c, 0x1d, 0x08, 0xdd, 0x1b, 0xc8, 0x5c, 0x99, 0x1b, 0x19, 0x48, 0x5b, 0xd9, 0xdc, 0x5c, 0xd8, 0x59, 0xb9, 0x04, 0xe0, 0x55, 0x09, 0x59, 0x59, 0x19, 0x9c, 0x0e, 0x08, 0x59, 0x99, 0x59, 0x99, 0x9c, 0x5c, 0x19, 0x19, 0xc8, 0x58, 0x18, 0x1b, 0xdb, 0x1c, 0x08, 0xdd, 0x1b, 0x48, 0x49, 0x58, 0x5b, 0xd9, 0x1c, 0x0b, 0x88, 0x99, 0xdc, 0x5b, 0x1b, 0x48, 0x1a, 0xdd, 0x5c, 0x19, 0x9b, 0xb9, 0x04, 0xe0, 0x57, 0xc9, 0x1c, 0x5d, 0x9d, 0x9b, 0x0e, 0xc8, 0x14, 0x55, 0x95, 0x13, 0x88, 0x5c, 0xd9, 0x1c, 0xdc, 0x9b, 0xdb, 0x5c, 0x19, 0x08, 0xca, 0x9b, 0x1c, 0x88, 0x59, 0x58, 0x1a, 0x5b, 0x9d, 0x5c, 0x59, 0x0a, 0x0b, 0x88, 0x99, 0xdc, 0x5b, 0x1b, 0x48, 0x9d, 0x5b, 0x1a, 0xde, 0x4a, 0x00, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20, 0x53, 0x63, 0x72, 0x79, 0x20, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x2b, 0x01, 0xf8, 0x53, 0xb2, 0x56, 0x56, 0xe6, 0xa6, 0x03, 0x02, 0x57, 0x56, 0xb6, 0xa6, 0x03, 0xb2, 0x35, 0x87, 0x96, 0x06, 0x07, 0xf2, 0x62, 0x17, 0xe6, 0x56, 0xf6, 0x32, 0x16, 0x26, 0x57, 0xf6, 0x32, 0x16, 0x36, 0x57, 0xf6, 0x32, 0x07, 0x57, 0x27, 0xd7, 0x2d, 0x01, 0xbc, 0x97, 0xe4, 0x85, 0xdd, 0xb9, 0xe9, 0x80, 0x8c, 0x85, 0xb9, 0x8d, 0x95, 0xb1, 0x81, 0xc8, 0x95, 0xc5, 0xd5, 0x95, 0xcd, 0xd1, 0x81, 0x98, 0xc9, 0xbd, 0xb5, 0x81, 0x84, 0xc9, 0xd9, 0xbd, 0x4b, 0x00, 0x9e, 0x95, 0xdc, 0xa1, 0x85, 0xb5, 0xe9, 0x80, 0x8c, 0x85, 0xb9, 0x8d, 0x95, 0xb1, 0xcd, 0x81, 0x84, 0xb1, 0xb1, 0x81, 0xcc, 0x8d, 0xc9, 0xe5, 0x81, 0xc8, 0x95, 0xc5, 0xd5, 0x95, 0xcd, 0xd1, 0x81, 0x98, 0xc9, 0xbd, 0xb5, 0x81, 0x84, 0xb9, 0xe5, 0x81, 0xd8, 0x85, 0xb9, 0x95, 0xad, 0x04, 0xf0, 0x39, 0x95, 0x37, 0x47, 0x57, 0xd6, 0x06, 0x12, 0xe6, 0x46, 0x06, 0xc2, 0x94, 0x66, 0x56, 0x36, 0x96, 0x37, 0xc6, 0x56, 0x06, 0x42, 0x15, 0x36, 0xb7, 0x36, 0xb7, 0x12, 0x80, 0x17, 0x25, 0x62, 0x6f, 0x72, 0x6e, 0x3a, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0xee, 0x12, 0xe0, 0x5f, 0x92, 0xe6, 0x96, 0x46, 0xa7, 0x03, 0x62, 0x17, 0xe6, 0x56, 0x06, 0x22, 0xf6, 0xf6, 0x46, 0x2f, 0x01, 0x78, 0x5e, 0x02, 0x27, 0xf7, 0x46, 0xa6, 0x03, 0x22, 0x57, 0xd6, 0x32, 0x57, 0xe6, 0x46, 0x06, 0x12, 0x06, 0x02, 0x17, 0x36, 0xb6, 0x56, 0x46, 0x07, 0x02, 0x57, 0x26, 0x07, 0x62, 0xc6, 0xf6, 0x76, 0xc7, 0x02, 0x42, 0xf7, 0x06, 0x12, 0xc6, 0xc6, 0x06, 0x02, 0x57, 0x56, 0x26, 0x37, 0x07, 0x92, 0x66, 0x06, 0xe2, 0x32, 0x87, 0x96, 0x06, 0x37, 0x07, 0x92, 0x36, 0x07, 0xe2, 0x2f, 0x01, 0xfc, 0x97, 0xcc, 0xa5, 0x99, 0xd1, 0xe9, 0x80, 0xb0, 0xa5, 0xb5, 0xa5, 0xd1, 0x81, 0xd8, 0x95, 0xc9, 0x89, 0xbd, 0xcd, 0xa5, 0xd1, 0xe5, 0x81, 0xd0, 0xbd, 0x81, 0xb8, 0xcc, 0xa1, 0xa5, 0xc1, 0xcd, 0x4b, 0x00, 0x9e, 0x94, 0xcc, 0xb9, 0xd5, 0x89, 0xe9, 0x80, 0xcc, 0x95, 0xd1, 0x81, 0xc0, 0x85, 0x8d, 0xad, 0x95, 0xd1, 0x81, 0x88, 0xb1, 0xbd, 0x8d, 0xad, 0xb1, 0xa5, 0xcd, 0xd1, 0x81, 0xd0, 0xbd, 0x81, 0xb8, 0xcc, 0xa1, 0xa5, 0xc1, 0xcd, 0x4b, 0x00, 0xbf, 0x25, 0x73, 0x70, 0x65, 0x77, 0x3a, 0x20, 0x73, 0x65, 0x74, 0x20, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, 0x74, 0x79, 0x20, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0xf3, 0x12, 0x80, 0x57, 0x25, 0x63, 0x6f, 0x6e, 0x67, 0x3a, 0x20, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0xf3, 0x12, 0x80, 0xdf, 0x25, 0x73, 0x74, 0x69, 0x72, 0x3a, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x64, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0xf3, 0x12, 0xc0, 0x53, 0x09, 0x9d, 0x5c, 0x5a, 0x9b, 0x0e, 0x88, 0x5c, 0x19, 0x5b, 0x59, 0xd8, 0x5c, 0x19, 0x48, 0x5b, 0x59, 0xdb, 0x9b, 0x5c, 0xbe, 0x04, 0xe0, 0x41, 0x89, 0x5d, 0xd9, 0x59, 0x98, 0x0e, 0xc8, 0x5a, 0x99, 0x9c, 0x5b, 0x19, 0x1b, 0x88, 0x5c, 0x19, 0xdb, 0x5b, 0x18, 0x19, 0x88, 0xdb, 0x1b, 0x5d, 0x9a, 0x59, 0xda, 0x58, 0x18, 0x5d, 0xda, 0x9b, 0x5b, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x6f, 0x8a, 0x1c, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6a, 0x1a, 0x37, 0x50, 0x7c, 0xe3, 0x37, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x9a, 0x86, 0x64, 0xa0, 0x9a, 0x86, 0xf1, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6a, 0x1a, 0xa2, 0x81, 0x6a, 0x1a, 0xf2, 0x83, 0x67, 0x1c, 0x6a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd5, 0x34, 0x0c, 0x06, 0xaa, 0x69, 0x58, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x97, 0xfd, 0x0d, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x35, 0x0d, 0x8b, 0x83, 0xa7, 0x0b, 0x9c, 0x1f, 0xbc, 0x4a, 0x70, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xa6, 0x61, 0x36, 0x50, 0x4d, 0xc3, 0x76, 0xc3, 0x9f, 0x4b, 0x1b, 0xa4, 0xd0, 0xf9, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x35, 0x0d, 0xbb, 0x83, 0xd7, 0x23, 0x9c, 0x1f, 0xbc, 0xf3, 0x8d, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x9c, 0x86, 0x64, 0xa0, 0x9c, 0x86, 0x86, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe5, 0x34, 0x44, 0x03, 0xe5, 0x34, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0x38, 0x93, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xa7, 0x61, 0x30, 0x50, 0x4e, 0xc3, 0x6a, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0x7d, 0x3d, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe5, 0x34, 0x2c, 0x0e, 0x5e, 0x53, 0x71, 0x7e, 0xd0, 0xb6, 0xf5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x4e, 0xc3, 0x6c, 0xa0, 0x9c, 0x86, 0x82, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xb2, 0xbf, 0xe1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xa7, 0x61, 0x77, 0xf0, 0x9c, 0x8d, 0xf3, 0x83, 0xa7, 0xea, 0x14, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xd3, 0x90, 0x0c, 0xd4, 0xd3, 0x30, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x4f, 0x43, 0x34, 0x50, 0x4f, 0x43, 0x7e, 0xf0, 0xdc, 0xd1, 0xe4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x9e, 0x86, 0xc1, 0x40, 0x3d, 0x0d, 0xab, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xf4, 0xf5, 0xf8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xd3, 0xb0, 0x38, 0x78, 0xaf, 0xc9, 0xf9, 0x41, 0xdb, 0xd6, 0xe3, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x05, 0x35, 0x24, 0x03, 0x05, 0x35, 0xcc, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xd4, 0x10, 0x0d, 0x14, 0xd4, 0x90, 0x6f, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0x65, 0x17, 0x41, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x41, 0x0d, 0x83, 0x81, 0x82, 0x1a, 0x56, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xe9, 0xeb, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xa8, 0x61, 0x71, 0xf0, 0x80, 0x99, 0xf3, 0x83, 0xb6, 0xad, 0xc7, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x6a, 0x48, 0x06, 0x2a, 0x6a, 0x68, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x51, 0x43, 0x34, 0x50, 0x51, 0x43, 0xbe, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x27, 0x43, 0x04, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x15, 0x35, 0x0c, 0x06, 0x2a, 0x6a, 0x28, 0xda, 0xf0, 0xe7, 0xd2, 0x00, 0x8f, 0xd8, 0x9b, 0x5b, 0xd9, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x15, 0x35, 0xcc, 0x0e, 0x9e, 0xf4, 0x73, 0xbe, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x15, 0x35, 0xec, 0x06, 0x2a, 0x6a, 0xd8, 0x1e, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x51, 0xc3, 0x78, 0xa0, 0xa2, 0x86, 0x9e, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x15, 0x35, 0xac, 0x07, 0x2a, 0x6a, 0x68, 0x38, 0x68, 0xdb, 0x7a, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xa8, 0xa1, 0x62, 0xa0, 0xa2, 0x86, 0x9a, 0x83, 0x67, 0xe6, 0x84, 0x54, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x49, 0x0d, 0xc9, 0x40, 0x49, 0x0d, 0xe3, 0x0d, 0xd6, 0xab, 0x54, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x25, 0x35, 0x84, 0x03, 0x25, 0x35, 0x2c, 0x0e, 0x1e, 0xaf, 0x3d, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x25, 0x35, 0x4c, 0x06, 0x4a, 0x6a, 0xd8, 0x1e, 0xbc, 0x40, 0xe0, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xa9, 0x21, 0x19, 0xa8, 0xa9, 0x61, 0xb6, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xa6, 0x86, 0x68, 0xa0, 0xa6, 0x86, 0x7c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xcd, 0xe0, 0x5b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x35, 0x35, 0x0c, 0x06, 0x6a, 0x6a, 0x58, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x66, 0xf0, 0xad, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xa6, 0x86, 0xc5, 0xc1, 0x53, 0xbe, 0xce, 0x37, 0xfc, 0x3b, 0xbf, 0x41, 0x2b, 0xf8, 0x57, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xd5, 0x90, 0x0c, 0x14, 0xd5, 0x30, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x54, 0x43, 0x34, 0x50, 0x54, 0x43, 0xbe, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xe5, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x51, 0x0d, 0x83, 0x81, 0xa2, 0x1a, 0x56, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0xf9, 0x6e, 0xcf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xd5, 0xb0, 0x38, 0x78, 0xf8, 0xda, 0xf9, 0x86, 0x7f, 0xe7, 0x37, 0x58, 0x60, 0x43, 0x5f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x59, 0x0d, 0xc9, 0x40, 0x59, 0x0d, 0x75, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xca, 0x6a, 0x88, 0x06, 0xca, 0x6a, 0xc8, 0x0f, 0x5e, 0x92, 0x31, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xd5, 0x30, 0x18, 0x28, 0xab, 0xa1, 0x68, 0xc3, 0x9f, 0x4b, 0x1b, 0xa4, 0x7b, 0x6e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x59, 0x0d, 0xa3, 0x83, 0x47, 0xdf, 0x9d, 0x6f, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x59, 0x0d, 0xab, 0x81, 0xb2, 0x1a, 0x96, 0x07, 0x65, 0x13, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x56, 0xc3, 0x74, 0xa0, 0xac, 0x86, 0x9e, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x65, 0x35, 0x6c, 0x07, 0xca, 0x6a, 0x28, 0xd8, 0xf0, 0xe7, 0xd2, 0x80, 0x97, 0x46, 0x86, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x59, 0x0d, 0xfb, 0x83, 0xa7, 0x0c, 0x9e, 0x1f, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xca, 0x6a, 0x68, 0x18, 0x28, 0xab, 0xa1, 0x66, 0xc3, 0x9f, 0x4b, 0x1b, 0x14, 0xad, 0x27, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x56, 0x43, 0xcb, 0xc1, 0x23, 0x12, 0xcf, 0x0f, 0x3f, 0xd4, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x56, 0x43, 0xd3, 0x40, 0x59, 0x0d, 0x6d, 0x07, 0x4f, 0xfd, 0x26, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xab, 0x21, 0x19, 0xa8, 0xab, 0x61, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xae, 0x86, 0x68, 0xa0, 0xae, 0x86, 0xfc, 0xe0, 0x59, 0x31, 0xbc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x5d, 0x0d, 0x83, 0x81, 0xba, 0x1a, 0x46, 0x07, 0x4f, 0xfd, 0x26, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xac, 0x21, 0x19, 0x28, 0xac, 0x61, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xb0, 0x86, 0x68, 0xa0, 0xb0, 0x86, 0x7c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xc9, 0x30, 0x9f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x61, 0x0d, 0x83, 0x81, 0xc2, 0x1a, 0x46, 0x07, 0x4f, 0xfd, 0x26, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xac, 0x21, 0x19, 0xa8, 0xac, 0x61, 0xb5, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xb2, 0x86, 0x68, 0xa0, 0xb2, 0x86, 0x7c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xaf, 0x15, 0x08, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x6b, 0x18, 0x0c, 0x54, 0xd6, 0x30, 0x3a, 0x78, 0xea, 0x37, 0x71, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x69, 0x0d, 0xc9, 0x40, 0x69, 0x0d, 0xb3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa5, 0x35, 0x44, 0x03, 0xa5, 0x35, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0xad, 0x59, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xd6, 0x30, 0x18, 0x28, 0xad, 0x61, 0xb5, 0xe1, 0xcf, 0xa5, 0x0d, 0x0e, 0xa6, 0x9f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x5a, 0xc3, 0xe2, 0xe0, 0x51, 0xb2, 0xe7, 0x07, 0x67, 0x24, 0xd4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xda, 0x1a, 0x92, 0x81, 0xda, 0x1a, 0xd6, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x6b, 0x88, 0x06, 0x6a, 0x6b, 0xc8, 0x37, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xb0, 0x6a, 0x9b, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xad, 0x61, 0x30, 0x50, 0x5b, 0xc3, 0x6e, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0xd8, 0x5b, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x35, 0x8c, 0x0e, 0x5e, 0xe7, 0x7b, 0x7e, 0x50, 0x66, 0xe9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x35, 0x0c, 0x07, 0x6a, 0x6b, 0x18, 0x1f, 0x3c, 0xf5, 0x9b, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xba, 0x86, 0x64, 0xa0, 0xba, 0x86, 0xf1, 0x06, 0xeb, 0x55, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xea, 0x1a, 0xc2, 0x81, 0xea, 0x1a, 0x16, 0x07, 0xef, 0xf2, 0xb7, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xea, 0x1a, 0x26, 0x03, 0xd5, 0x35, 0x6c, 0x0f, 0x5e, 0x20, 0x70, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xd7, 0x90, 0x0c, 0x94, 0xd7, 0x30, 0xde, 0x60, 0xbd, 0x4a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x5e, 0x43, 0x38, 0x50, 0x5e, 0xc3, 0xe2, 0xe0, 0xfd, 0xc1, 0x7e, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x5e, 0xc3, 0x64, 0xa0, 0xbc, 0x86, 0xed, 0xc1, 0x0b, 0x04, 0xee, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfa, 0x1a, 0x92, 0x81, 0xfa, 0x1a, 0x2a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xd7, 0x10, 0x0d, 0xd4, 0xd7, 0x90, 0x6f, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0xe0, 0xad, 0xfd, 0x40, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x7d, 0x0d, 0x83, 0x81, 0xfa, 0x1a, 0x1a, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x53, 0xa7, 0x42, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xbe, 0x86, 0xd9, 0xc1, 0x43, 0xbc, 0xcf, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xbe, 0x86, 0xdd, 0x40, 0x7d, 0x0d, 0xdb, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xea, 0x6b, 0x18, 0x0f, 0xd4, 0xd7, 0x50, 0x70, 0xd0, 0xb6, 0xf5, 0x78, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x05, 0x36, 0x24, 0x03, 0x05, 0x36, 0x54, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xb0, 0x21, 0x1a, 0x28, 0xb0, 0x21, 0x3f, 0x78, 0xe5, 0x16, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x60, 0xc3, 0x60, 0xa0, 0xc0, 0x86, 0x86, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xd4, 0xa9, 0xd0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xb0, 0x61, 0x76, 0xf0, 0x8c, 0xf7, 0xf3, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xb0, 0x61, 0x37, 0x50, 0x60, 0xc3, 0xf6, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x02, 0x1b, 0xc6, 0x03, 0x05, 0x36, 0x14, 0x1c, 0xb4, 0x6d, 0x3d, 0x5e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x85, 0x0d, 0xc9, 0x40, 0x85, 0x0d, 0xbd, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x6c, 0x88, 0x06, 0x2a, 0x6c, 0xc8, 0x37, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xf0, 0x96, 0x79, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xc2, 0x86, 0xc1, 0x40, 0x85, 0x0d, 0x25, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x2d, 0xbf, 0x76, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x61, 0xc3, 0xea, 0xe0, 0xdd, 0x00, 0xe8, 0x1b, 0x04, 0x9b, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x61, 0xc3, 0x6e, 0xa0, 0xc2, 0x86, 0xf5, 0xc1, 0x43, 0x7e, 0x92, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0a, 0x1b, 0xe6, 0x03, 0x15, 0x36, 0x74, 0x1c, 0x3c, 0x61, 0x28, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xc2, 0x86, 0x96, 0x81, 0x0a, 0x1b, 0x6a, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x53, 0xa7, 0x42, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xc2, 0x86, 0xae, 0x83, 0x07, 0x32, 0xa0, 0x6f, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x85, 0x0d, 0x65, 0x03, 0x15, 0x36, 0x14, 0x1e, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x61, 0x43, 0xe3, 0x40, 0x85, 0x0d, 0xad, 0x07, 0x6d, 0x5b, 0x8f, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x62, 0x43, 0x32, 0x50, 0x62, 0x43, 0xc1, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x12, 0x1b, 0xa2, 0x81, 0x12, 0x1b, 0xf2, 0x83, 0x07, 0x13, 0x3f, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x25, 0x36, 0x0c, 0x06, 0x4a, 0x6c, 0xd8, 0x6f, 0xf8, 0x73, 0x69, 0xc0, 0xb3, 0x2b, 0x13, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xc4, 0x86, 0xd1, 0xc1, 0x13, 0x3b, 0xd0, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xc4, 0x86, 0xd5, 0x40, 0x89, 0x0d, 0xcb, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4a, 0x6c, 0x98, 0x0e, 0x94, 0xd8, 0x30, 0x3f, 0x78, 0xcb, 0x14, 0x6e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x35, 0x36, 0x24, 0x03, 0x35, 0x36, 0x14, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xb1, 0x21, 0x1a, 0xa8, 0xb1, 0x21, 0xdf, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0xcb, 0xfe, 0x81, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x1a, 0x1b, 0x06, 0x03, 0x35, 0x36, 0xec, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xb5, 0xcd, 0x9d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x63, 0xc3, 0xe8, 0xe0, 0x45, 0x2f, 0xe8, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x63, 0xc3, 0x70, 0xa0, 0xc6, 0x86, 0xfd, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb6, 0xb2, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x6c, 0x18, 0x1f, 0x3c, 0xa7, 0x06, 0xfd, 0xa0, 0xcc, 0xd2, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xb2, 0x21, 0x19, 0x28, 0xb2, 0x61, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xc8, 0x86, 0x68, 0xa0, 0xc8, 0x86, 0xfc, 0xe0, 0xe5, 0x55, 0x83, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x91, 0x0d, 0x83, 0x81, 0x22, 0x1b, 0x66, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x48, 0x69, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x36, 0x8c, 0x0e, 0x1e, 0x0a, 0x84, 0x7e, 0x70, 0x9e, 0x1d, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xb2, 0x21, 0x19, 0xa8, 0xb2, 0x61, 0xbc, 0xc1, 0x7a, 0x95, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xca, 0x86, 0x70, 0xa0, 0xca, 0x86, 0xc5, 0xc1, 0xeb, 0xed, 0x3d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xca, 0x86, 0xc9, 0x40, 0x95, 0x0d, 0xdb, 0x83, 0x17, 0x08, 0xdc, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x65, 0x36, 0x24, 0x03, 0x65, 0x36, 0x8c, 0x37, 0x58, 0xaf, 0x52, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xd9, 0x10, 0x0e, 0x94, 0xd9, 0xb0, 0x38, 0x78, 0xe4, 0xd8, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xd9, 0x30, 0x19, 0x28, 0xb3, 0x61, 0x7b, 0xf0, 0x02, 0x81, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xe6, 0x86, 0x64, 0xa0, 0xe6, 0x86, 0xfe, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xf8, 0x80, 0x2b, 0x93, 0x6b, 0x81, 0x2b, 0x2b, 0x93, 0x03, 0x69, 0x4b, 0x3b, 0x93, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x73, 0x43, 0x34, 0x50, 0x73, 0x43, 0x7e, 0xf0, 0x56, 0x69, 0xbf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xe6, 0x86, 0xc1, 0x40, 0xcd, 0x0d, 0xdb, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xb9, 0x61, 0x31, 0x50, 0x73, 0xc3, 0xea, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x6e, 0x98, 0x0d, 0xd4, 0xdc, 0x30, 0x3d, 0x68, 0xdb, 0x7a, 0xbc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa2, 0x1b, 0x92, 0x81, 0xa2, 0x1b, 0x6e, 0x6e, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0x80, 0xc6, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x63, 0x6f, 0x72, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x70, 0x65, 0x65, 0x72, 0x73, 0x3b, 0x20, 0x58, 0x58, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x69, 0x74, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x6c, 0x65, 0x78, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0xbf, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x37, 0x44, 0x03, 0x45, 0x37, 0xe4, 0x07, 0x0f, 0x1c, 0xbe, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8a, 0x6e, 0x18, 0x0c, 0x14, 0xdd, 0x30, 0xdf, 0x20, 0xd8, 0x4c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa2, 0x1b, 0x26, 0x03, 0x45, 0x37, 0xec, 0x0e, 0xde, 0x8d, 0x9e, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xdd, 0x30, 0x1c, 0x28, 0xba, 0x61, 0x7d, 0xf0, 0xc4, 0xe2, 0xba, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x6e, 0x48, 0x06, 0xaa, 0x6e, 0x38, 0xb0, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x2f, 0x70, 0x65, 0x72, 0x2d, 0x70, 0x65, 0x65, 0x72, 0x20, 0x72, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xaa, 0x6e, 0x88, 0x06, 0xaa, 0x6e, 0xc8, 0x37, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x77, 0xd0, 0x3a, 0x7c, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x75, 0xc3, 0x60, 0xa0, 0xea, 0x86, 0xed, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xdd, 0xb0, 0x18, 0xa8, 0xba, 0x61, 0x75, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x55, 0x37, 0xcc, 0x06, 0xaa, 0x6e, 0x98, 0x1e, 0xb4, 0x6d, 0x3d, 0x5e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xdd, 0x0d, 0xc9, 0x40, 0xdd, 0x0d, 0xfb, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x75, 0x37, 0x44, 0x03, 0x75, 0x37, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xef, 0x3a, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x77, 0xc3, 0x60, 0xa0, 0xee, 0x86, 0xe9, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xd9, 0xdf, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xdd, 0xb0, 0x38, 0x78, 0xb6, 0x25, 0xfa, 0xc1, 0x53, 0x75, 0x8a, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xba, 0x1b, 0xb6, 0x03, 0x75, 0x37, 0xcc, 0x37, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x75, 0x37, 0xac, 0x0f, 0x5e, 0xce, 0x89, 0x7e, 0xf8, 0xa1, 0xa6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xf0, 0x86, 0x64, 0xa0, 0xf0, 0x86, 0xd9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc2, 0x1b, 0xa2, 0x81, 0xc2, 0x1b, 0xf2, 0x0d, 0x19, 0xf0, 0x83, 0xc7, 0x65, 0x31, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x85, 0x37, 0x0c, 0x06, 0x0a, 0x6f, 0x58, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x17, 0x38, 0x04, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xe1, 0x0d, 0x8b, 0x83, 0x27, 0xa1, 0xa2, 0x1f, 0xbc, 0x1d, 0xb8, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xf2, 0x86, 0x64, 0xa0, 0xf2, 0x86, 0x8e, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x37, 0x44, 0x03, 0x95, 0x37, 0xe4, 0x1b, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x7c, 0x3d, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x79, 0xc3, 0x60, 0xa0, 0xf2, 0x86, 0xd9, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xc3, 0x06, 0xef, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xde, 0xb0, 0x38, 0x78, 0x26, 0x2d, 0xfa, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x0d, 0x1b, 0xbc, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x54, 0xde, 0xb0, 0x1b, 0xa8, 0xbc, 0x61, 0xbc, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0x3a, 0x32, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x37, 0x0c, 0x0f, 0x1e, 0xb3, 0x8b, 0x7e, 0xf0, 0xd4, 0x6f, 0xe2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xf2, 0x86, 0xf5, 0x40, 0xe5, 0x0d, 0x15, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x60, 0xfa, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x37, 0xcc, 0x0f, 0xde, 0x13, 0x8c, 0x7e, 0x70, 0x46, 0x42, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xbd, 0x21, 0x19, 0x28, 0xbd, 0x61, 0xbd, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xf4, 0x86, 0x68, 0xa0, 0xf4, 0x86, 0x7c, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xaf, 0xdf, 0x07, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4a, 0x6f, 0x18, 0x0c, 0x94, 0xde, 0x30, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x6f, 0xd8, 0xe0, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd2, 0x1b, 0x16, 0x07, 0x6f, 0x6b, 0x46, 0x3f, 0x78, 0x17, 0x2e, 0xfa, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x7a, 0xc3, 0x6e, 0xa0, 0xf4, 0x86, 0xf1, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xeb, 0xc8, 0xec, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xde, 0x30, 0x3c, 0x78, 0xde, 0x34, 0xfa, 0xc1, 0x53, 0xbf, 0x89, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x6f, 0x48, 0x06, 0x6a, 0x6f, 0x58, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xbd, 0x21, 0x1a, 0xa8, 0xbd, 0x21, 0x3f, 0x68, 0xa7, 0xb3, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xbd, 0x61, 0x30, 0x50, 0x7b, 0xc3, 0x6c, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x61, 0x83, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x6f, 0x58, 0x1c, 0xbc, 0xde, 0x1b, 0xfd, 0xe0, 0x5d, 0xb8, 0xe8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0xed, 0x0d, 0xbb, 0x81, 0xda, 0x1b, 0xc6, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0xad, 0x23, 0xb3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x7b, 0xc3, 0xf0, 0xe0, 0x01, 0xe5, 0xe8, 0x07, 0x4f, 0xfd, 0x26, 0xae, 0xd5, 0xe0, 0x69, 0x5d, 0xc3, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x4f, 0xeb, 0x1a, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xeb, 0x20, 0xcc, 0x06, 0xae, 0x83, 0x50, 0xb1, 0xe1, 0x8b, 0x9a, 0x0d, 0x75, 0x3c, 0xc0, 0xab, 0xee, 0x0e, 0xae, 0x4e, 0x8c, 0x2d, 0x6d, 0x6c, 0xad, 0x2c, 0x3f, 0x9c, 0x62, 0xad, 0xc1, 0xf3, 0xe0, 0x7e, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x3c, 0x0f, 0xee, 0xb7, 0x01, 0xf0, 0xe4, 0x0e, 0x2d, 0x6d, 0x0c, 0x0d, 0x64, 0x2d, 0xcd, 0x8d, 0x0c, 0xe4, 0xcd, 0x0c, 0x64, 0x0e, 0x2d, 0x0d, 0x0e, 0x24, 0x8c, 0x8c, 0x4c, 0xae, 0x6c, 0x6e, 0x8e, 0x05, 0x44, 0x2c, 0x0f, 0x84, 0xad, 0xcc, 0xed, 0x8c, 0x0e, 0x5d, 0x09, 0xe0, 0x1d, 0x46, 0x0c, 0x46, 0x07, 0xe4, 0x2c, 0x8c, 0x2d, 0x0c, 0x2f, 0x0f, 0xe4, 0x4d, 0x0e, 0x64, 0x8e, 0x2e, 0x4c, 0x0e, 0xa4, 0xa5, 0x05, 0x44, 0x06, 0x04, 0x44, 0x2c, 0x8f, 0xae, 0x6c, 0x5e, 0x02, 0x78, 0x87, 0x11, 0x8b, 0xd1, 0x01, 0x81, 0x63, 0x0b, 0x73, 0x2b, 0xa3, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x69, 0x69, 0x01, 0xa1, 0x01, 0x01, 0x11, 0xcb, 0xa3, 0x2b, 0x9b, 0x97, 0x00, 0xfe, 0x61, 0xc4, 0x62, 0x60, 0x74, 0x40, 0xda, 0xde, 0xde, 0xdc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x5a, 0x5a, 0x40, 0x70, 0x40, 0x40, 0xc4, 0xf2, 0xe8, 0xca, 0xe6, 0x25, 0x80, 0x7f, 0x18, 0xb1, 0x98, 0x18, 0x1d, 0x90, 0xb1, 0xb7, 0xb6, 0x32, 0x3a, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x90, 0x96, 0x16, 0x90, 0x18, 0x1b, 0x10, 0xb1, 0x3c, 0xba, 0xb2, 0xb9, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x9e, 0x07, 0xf7, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x57, 0x48, 0x07, 0x8e, 0xaf, 0xd0, 0xb2, 0x41, 0xb0, 0x99, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x57, 0xc8, 0x07, 0x8e, 0xaf, 0xb0, 0x39, 0x78, 0x8f, 0xe0, 0xef, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x7c, 0x85, 0xd1, 0xc0, 0xf1, 0x15, 0x86, 0x07, 0x8f, 0x3f, 0xfc, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xaf, 0xb0, 0x1c, 0x38, 0xbe, 0xc2, 0xfc, 0xe0, 0xb9, 0x8d, 0xbf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf1, 0x15, 0xf6, 0x03, 0xc7, 0x57, 0x28, 0x39, 0x78, 0xe3, 0xe4, 0x6f, 0xab, 0xc1, 0x4b, 0x7c, 0xb9, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x5e, 0xe2, 0xcb, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x69, 0xdc, 0xc0, 0x31, 0x1b, 0xb2, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x69, 0x48, 0x06, 0x0e, 0xd3, 0xb0, 0xdd, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x00, 0x2f, 0x5b, 0x40, 0xc4, 0xc2, 0xc6, 0xd6, 0xee, 0xc2, 0xe4, 0xc8, 0x74, 0x40, 0xc2, 0x40, 0x4a, 0xc6, 0xde, 0xe4, 0xd6, 0x40, 0x4a, 0xe0, 0xd8, 0xca, 0xc2, 0x40, 0x4a, 0xe0, 0xde, 0xd6, 0xca, 0x40, 0xe4, 0xca, 0xe2, 0xea, 0xca, 0xe6, 0xe8, 0x40, 0xd2, 0xe6, 0x40, 0xe4, 0xca, 0xc6, 0xca, 0xd2, 0xec, 0xca, 0xc8, 0x95, 0x00, 0xf8, 0x80, 0x0e, 0xad, 0x0c, 0xc4, 0x8c, 0xed, 0xed, 0x0e, 0x24, 0x6d, 0x0e, 0x84, 0xac, 0x8c, 0xad, 0x8c, 0xae, 0x8c, 0x0c, 0xc4, 0x2c, 0x4d, 0x6e, 0x8e, 0x0e, 0xe4, 0xcd, 0x0d, 0x84, 0x0e, 0xad, 0x0c, 0xc4, 0xec, 0x4d, 0xee, 0x2e, 0x4c, 0x8e, 0x0c, 0x64, 0x2e, 0x8d, 0xac, 0x0c, 0xe4, 0x0e, 0xad, 0xcc, 0x0d, 0x24, 0x8d, 0x0e, 0x64, 0x2c, 0xcc, 0x0d, 0x44, 0xae, 0x2c, 0x8c, 0x0c, 0x84, 0x0e, 0xad, 0x5c, 0x02, 0xe0, 0x85, 0x92, 0xb0, 0xb1, 0x35, 0x10, 0xb3, 0x37, 0x39, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0x92, 0xb1, 0x37, 0xb9, 0x35, 0x16, 0x90, 0x30, 0x37, 0x32, 0x10, 0x3a, 0xb4, 0x32, 0x37, 0x90, 0x37, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb1, 0xb0, 0xb1, 0xb5, 0xbb, 0x30, 0x39, 0x32, 0x90, 0xb9, 0x34, 0xb2, 0x32, 0x90, 0x3b, 0xb4, 0x32, 0x37, 0x90, 0x34, 0x3a, 0x90, 0xb1, 0x30, 0x37, 0x90, 0x15, 0xb8, 0xb2, 0xb2, 0x75, 0x09, 0xc0, 0x27, 0x3a, 0xb4, 0x32, 0x90, 0xb1, 0x37, 0xb9, 0xb5, 0x32, 0x32, 0x10, 0x33, 0xb6, 0xb7, 0x3b, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb3, 0x37, 0xb9, 0xbb, 0x30, 0x39, 0x32, 0x10, 0xb7, 0xb0, 0xb6, 0xb2, 0x39, 0xb8, 0xb0, 0xb1, 0xb2, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x13, 0x9e, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x30, 0x0d, 0x8b, 0x83, 0x27, 0x7c, 0xa4, 0x6f, 0x10, 0x6c, 0xa6, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x61, 0x1a, 0x36, 0x03, 0x87, 0x69, 0x98, 0x1d, 0x04, 0x6c, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x98, 0x86, 0xdd, 0xc0, 0x61, 0x1a, 0xa6, 0x07, 0x61, 0x04, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x9b, 0x86, 0x64, 0xe0, 0x36, 0x0d, 0x8b, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x1c, 0x5b, 0xe9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xa6, 0x21, 0x3e, 0x78, 0x4e, 0x52, 0xfa, 0x41, 0x99, 0xa5, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xa7, 0x21, 0x19, 0x38, 0x5c, 0x43, 0xb6, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0xce, 0x8d, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x03, 0x35, 0x24, 0x07, 0x8f, 0x79, 0x4a, 0xdf, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xa0, 0x86, 0x74, 0xe0, 0x40, 0x0d, 0xb3, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x05, 0xfc, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0xe4, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xaf, 0x86, 0x6c, 0xe0, 0x5e, 0x0d, 0x75, 0x1b, 0xfe, 0x5c, 0x1a, 0xe0, 0x61, 0x7b, 0x0b, 0x23, 0x9b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x5e, 0x0d, 0x8b, 0x83, 0x67, 0x65, 0xa5, 0x6f, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xbd, 0x1a, 0x26, 0x03, 0xf7, 0x6a, 0x68, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xaf, 0x86, 0xcd, 0xc0, 0xbd, 0x1a, 0x66, 0x07, 0xcf, 0x76, 0xb3, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xd5, 0xb0, 0x1b, 0xb8, 0x57, 0xc3, 0x76, 0xc3, 0x47, 0xed, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xaf, 0x86, 0xe1, 0xc1, 0x63, 0xca, 0xd2, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x5e, 0x0d, 0xe3, 0x81, 0x7b, 0x35, 0x14, 0x6d, 0x78, 0x5b, 0xe7, 0xe0, 0x79, 0x49, 0xe6, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf7, 0x6a, 0xa8, 0x1a, 0xb8, 0x57, 0x43, 0xdb, 0xc1, 0x83, 0x12, 0x6d, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xd6, 0x90, 0x0d, 0x1c, 0xac, 0x61, 0xb7, 0xe1, 0xcf, 0xa5, 0x01, 0x3c, 0xdc, 0xca, 0xf0, 0xe8, 0x5a, 0xd8, 0xde, 0xc2, 0xc8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x58, 0xc3, 0xea, 0xe0, 0xcd, 0x70, 0xe9, 0x1b, 0x04, 0xd0, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xac, 0x61, 0x76, 0xf0, 0x66, 0xb8, 0xf4, 0xc3, 0x63, 0x32, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd5, 0x1a, 0xb2, 0x81, 0xab, 0x35, 0xac, 0x37, 0xfc, 0xb9, 0x34, 0x80, 0xf7, 0x5c, 0x99, 0x1b, 0x59, 0xcb, 0x5d, 0x9a, 0x1b, 0xd9, 0xdb, 0x5d, 0x4b, 0x5b, 0x18, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x6b, 0xd8, 0x1e, 0x3c, 0x48, 0x2f, 0x7d, 0x83, 0x00, 0x3a, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xab, 0x35, 0x8c, 0x0f, 0x1e, 0xa4, 0x97, 0x7e, 0x78, 0x4c, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x5b, 0x43, 0x36, 0x70, 0xb6, 0x86, 0xe5, 0x86, 0x3f, 0x97, 0x06, 0xf0, 0x9a, 0x2b, 0x73, 0x23, 0x6b, 0xb9, 0x4b, 0x73, 0x23, 0x7b, 0xbb, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x6c, 0x0d, 0xbb, 0x83, 0xd7, 0x11, 0xa6, 0x6f, 0x10, 0x40, 0x67, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xb6, 0x86, 0xe1, 0xc1, 0xeb, 0x08, 0xd3, 0x0f, 0x8f, 0xc9, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xae, 0x21, 0x19, 0x38, 0x66, 0xe3, 0x37, 0xfc, 0xb9, 0x34, 0xe0, 0xc9, 0x8d, 0xd9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xbc, 0x86, 0xe4, 0xe0, 0x31, 0x8e, 0xe9, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xd7, 0x90, 0x0e, 0x1c, 0xaf, 0x61, 0xb6, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x80, 0x3f, 0xcd, 0x6d, 0xec, 0xad, 0x2d, 0xcd, 0xed, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xd7, 0x90, 0x0d, 0x5c, 0xb0, 0x61, 0xb9, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x00, 0xf4, 0x53, 0xe6, 0x72, 0xe6, 0x02, 0xf2, 0x62, 0xc6, 0xf6, 0x76, 0xf7, 0x22, 0xf6, 0xe6, 0x56, 0xd6, 0x03, 0xf3, 0xe2, 0xe7, 0x56, 0x36, 0xf6, 0x12, 0x36, 0xb6, 0xf6, 0xe2, 0xa7, 0xf7, 0x46, 0xf6, 0x22, 0x16, 0xb6, 0xf6, 0x12, 0x36, 0xb6, 0xd6, 0x13, 0x03, 0x82, 0x12, 0x36, 0x07, 0x32, 0x47, 0xf7, 0x26, 0x57, 0x46, 0x06, 0x92, 0xe6, 0x06, 0x42, 0x87, 0x56, 0x06, 0x02, 0x27, 0xf7, 0x46, 0x56, 0x37, 0x56, 0x26, 0x07, 0xf2, 0x66, 0x06, 0x42, 0x87, 0x56, 0x06, 0x12, 0x36, 0xb6, 0x96, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x0f, 0x28, 0x76, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0b, 0x36, 0xcc, 0x0e, 0xde, 0x84, 0x99, 0x7e, 0x50, 0x66, 0xe9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x6c, 0xc8, 0x06, 0xce, 0xd8, 0x30, 0xdf, 0xf0, 0xe7, 0xd2, 0x00, 0x5e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x61, 0x63, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xb1, 0x61, 0x77, 0xf0, 0xc4, 0xd4, 0xf4, 0x0d, 0x02, 0xe8, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xd8, 0x30, 0x3c, 0x78, 0x62, 0x6a, 0xfa, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x33, 0x36, 0x2c, 0x07, 0xce, 0xd8, 0x30, 0x3d, 0x7c, 0xb0, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x6c, 0xd8, 0x1e, 0x3c, 0x31, 0x35, 0xfd, 0x60, 0x99, 0x93, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xca, 0x86, 0x6c, 0xe0, 0x94, 0x0d, 0x15, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xe9, 0xc3, 0xee, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x65, 0x43, 0x7e, 0xf0, 0x5c, 0xdc, 0xf4, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x65, 0xc3, 0x60, 0xe0, 0x94, 0x0d, 0x9b, 0x83, 0x12, 0xb1, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x65, 0xc3, 0x68, 0xe0, 0x94, 0x0d, 0xdb, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x73, 0x65, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xb2, 0x61, 0x78, 0xf0, 0xbc, 0xe0, 0xf4, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x65, 0xc3, 0x78, 0xe0, 0x94, 0x0d, 0x0d, 0x07, 0x2f, 0x2e, 0xaf, 0xac, 0x0e, 0xa7, 0xd8, 0x1a, 0xbc, 0xe8, 0x37, 0x79, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x45, 0xbf, 0xc9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x1e, 0x84, 0xd9, 0xc0, 0x79, 0x10, 0x3a, 0x36, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x07, 0xf8, 0xd5, 0xdd, 0xc1, 0xc9, 0xa5, 0xd9, 0x85, 0xd1, 0x95, 0xad, 0x95, 0xe5, 0xab, 0xe1, 0xfb, 0xf6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xc3, 0xf7, 0xed, 0x0d, 0xe0, 0x57, 0xe6, 0x36, 0xf6, 0x46, 0x56, 0x46, 0xd6, 0x02, 0x17, 0x46, 0x87, 0xb6, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0xa0, 0xc5, 0xc8, 0xd0, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x9a, 0x8f, 0x1b, 0x38, 0xfd, 0xe3, 0x37, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0x9e, 0xac, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x03, 0x3f, 0x7e, 0xe0, 0xf2, 0x0f, 0x15, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xfc, 0x90, 0x0d, 0x1c, 0xf8, 0x61, 0xb1, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xf0, 0x43, 0x7a, 0xf0, 0x76, 0xee, 0xf4, 0x83, 0x22, 0x2c, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xfc, 0xf8, 0x83, 0xe7, 0x68, 0xa7, 0x6f, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0xc1, 0xc5, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc2, 0x0f, 0xe9, 0xc0, 0x85, 0x1f, 0x0a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf8, 0x21, 0x1e, 0xb8, 0xf0, 0xc3, 0x6c, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0xd8, 0x5b, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x7e, 0x98, 0x1c, 0x3c, 0x26, 0x3d, 0xfd, 0xf0, 0xed, 0xfc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe1, 0x87, 0xdd, 0xc0, 0x85, 0x1f, 0xf6, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x00, 0x2f, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x7e, 0xd8, 0x1e, 0xbc, 0xe3, 0x3d, 0xfd, 0xf0, 0x00, 0x7e, 0x07, 0x61, 0x3a, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf8, 0xa1, 0x62, 0xe0, 0xc2, 0x0f, 0x7d, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xfc, 0xd0, 0x31, 0x70, 0xe1, 0x87, 0x92, 0xc3, 0x83, 0x37, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x85, 0x1f, 0x5a, 0x06, 0x2e, 0xfc, 0x50, 0xb7, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc2, 0x0f, 0x35, 0x03, 0x17, 0x7e, 0x68, 0x3a, 0x58, 0xc0, 0x09, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf8, 0xa1, 0x6a, 0xe0, 0xc2, 0x0f, 0x5d, 0x87, 0xa7, 0x75, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0b, 0x3f, 0x94, 0x0d, 0x5c, 0xf8, 0xa1, 0xed, 0xf0, 0xe0, 0x4d, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x89, 0x1f, 0x7f, 0xf0, 0x1c, 0xed, 0xf4, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x7e, 0xc8, 0x06, 0x4e, 0xfc, 0x30, 0xd8, 0xf0, 0xe7, 0xd2, 0x06, 0x8b, 0x84, 0x67, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc4, 0x0f, 0xf9, 0xc1, 0x13, 0x11, 0xd4, 0x0f, 0x3f, 0xd4, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x8d, 0x1f, 0x7f, 0xf0, 0x1c, 0xed, 0xf4, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x7e, 0xc8, 0x06, 0x6e, 0xfc, 0xb0, 0xdc, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe3, 0x87, 0x70, 0xe0, 0xc6, 0x0f, 0xab, 0x83, 0xf7, 0xfa, 0x30, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x7e, 0x98, 0x0d, 0xdc, 0xf8, 0x61, 0xb8, 0x41, 0x00, 0x9d, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x8d, 0x1f, 0x76, 0x07, 0x6f, 0xb4, 0x50, 0x3f, 0xbc, 0x17, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xf9, 0xf1, 0x07, 0xcf, 0xd1, 0x4e, 0xdf, 0xa0, 0xe8, 0xa0, 0x1d, 0x7c, 0xdc, 0xf0, 0x79, 0xd0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe5, 0x87, 0x64, 0xe0, 0xca, 0x0f, 0xb5, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xfc, 0x10, 0x0d, 0x5c, 0xf9, 0x61, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xca, 0x0f, 0xd9, 0xc0, 0x95, 0x1f, 0xe2, 0x83, 0xf7, 0xd7, 0x66, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x7e, 0xc8, 0x07, 0xae, 0xfc, 0x30, 0x38, 0xbc, 0x17, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf9, 0x61, 0x31, 0x70, 0xe5, 0x87, 0xd1, 0x41, 0xdb, 0x7d, 0x99, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x7e, 0x98, 0x0d, 0x5c, 0xf9, 0xa1, 0x75, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x95, 0x1f, 0x76, 0x03, 0x57, 0x7e, 0x18, 0x6f, 0xf8, 0xdc, 0x65, 0x83, 0x86, 0x2d, 0xbf, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xca, 0x0f, 0xdb, 0x83, 0x17, 0xbf, 0xa8, 0x1f, 0x04, 0x2c, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe5, 0x87, 0xf5, 0xc0, 0x95, 0x1f, 0x2a, 0x36, 0x7c, 0xee, 0xb2, 0x41, 0xc3, 0xd9, 0xda, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe5, 0x87, 0x86, 0x83, 0xf7, 0xd6, 0xa8, 0x1f, 0x04, 0x2c, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe5, 0x87, 0x8e, 0x81, 0x2b, 0x3f, 0x14, 0x6d, 0xf8, 0xdc, 0x65, 0xc0, 0x73, 0x4b, 0xa3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xca, 0x0f, 0x3d, 0x07, 0x0f, 0xde, 0x51, 0x3f, 0x3c, 0x26, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf9, 0xa1, 0x69, 0xe0, 0xca, 0x0f, 0x75, 0x1b, 0x3e, 0x77, 0x19, 0xf0, 0xe8, 0xc2, 0xea, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf2, 0x43, 0xdb, 0xc1, 0x73, 0x83, 0xd4, 0x0f, 0x8f, 0xc9, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x7e, 0xe8, 0x1b, 0xb8, 0xf2, 0x43, 0xe9, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0x74, 0xeb, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xfc, 0xd0, 0x79, 0xf0, 0xd8, 0x23, 0xf5, 0x83, 0x80, 0x65, 0xad, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf3, 0xe3, 0x0f, 0x9e, 0xa3, 0x9d, 0xbe, 0x41, 0xd1, 0xa7, 0xbb, 0xe1, 0xf3, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xce, 0x0f, 0xf1, 0xc0, 0x9d, 0x1f, 0xb6, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xfc, 0x90, 0x0f, 0xdc, 0xf9, 0x61, 0x70, 0x50, 0x54, 0x8a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x7e, 0x58, 0x0c, 0xdc, 0xf9, 0x61, 0xba, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xce, 0x0f, 0x93, 0x81, 0x3b, 0x3f, 0xac, 0x0e, 0x16, 0x70, 0xc2, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x7e, 0x98, 0x0d, 0xdc, 0xf9, 0x61, 0x77, 0x78, 0x2f, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf3, 0xc3, 0x70, 0xe0, 0xce, 0x0f, 0xcb, 0x83, 0xa2, 0x52, 0xbc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd0, 0x8f, 0x3f, 0x78, 0x8e, 0x76, 0xfa, 0x06, 0x45, 0x07, 0xed, 0xe0, 0xe4, 0x86, 0xcf, 0x83, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x3f, 0x24, 0x03, 0xd7, 0x7e, 0x88, 0x37, 0x38, 0xb1, 0xdf, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x7e, 0x48, 0x07, 0x2e, 0xfd, 0x30, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xe9, 0x87, 0x78, 0xe0, 0xd2, 0x0f, 0x8b, 0x83, 0xf7, 0xd7, 0x66, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x7e, 0x98, 0x0c, 0x5c, 0xfa, 0x61, 0x73, 0x78, 0x2f, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf4, 0xc3, 0x68, 0xe0, 0xd2, 0x0f, 0xbb, 0x83, 0xb6, 0xfb, 0x32, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x53, 0x3f, 0x24, 0x07, 0x2f, 0x25, 0x53, 0xdf, 0x60, 0x51, 0x79, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xea, 0x87, 0x7c, 0xe0, 0xd4, 0x0f, 0xa5, 0x1b, 0x3e, 0x77, 0x19, 0xf0, 0xee, 0xd0, 0xde, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xf5, 0xc3, 0xe6, 0xe0, 0x39, 0x75, 0xea, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xfd, 0x30, 0x1a, 0x38, 0xf5, 0x43, 0xcd, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb4, 0x32, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xfd, 0x30, 0x3c, 0x78, 0xcc, 0x9e, 0xfa, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x53, 0x3f, 0x2c, 0x07, 0x4e, 0xfd, 0x30, 0x3e, 0x28, 0xb4, 0x7b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x53, 0x3f, 0xac, 0x07, 0x4e, 0xfd, 0xd0, 0xb2, 0xe1, 0xe3, 0xa8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xf5, 0xc3, 0x7e, 0xe0, 0xd4, 0x0f, 0x25, 0x1b, 0xde, 0xd6, 0xd9, 0xa0, 0x61, 0xcb, 0xaf, 0xc3, 0x3f, 0x3c, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x7e, 0xe8, 0x19, 0x38, 0xf5, 0x43, 0xe7, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb9, 0x34, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xfd, 0xd0, 0x75, 0xf0, 0x28, 0x45, 0xf5, 0x0d, 0x1f, 0x47, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa9, 0x1f, 0xda, 0x06, 0x4e, 0xfd, 0x50, 0xb9, 0xe1, 0x6d, 0x9d, 0x0d, 0x1a, 0xce, 0xd6, 0x3e, 0xfc, 0xc3, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xeb, 0x87, 0x74, 0xe0, 0xd6, 0x0f, 0x93, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x62, 0x6f, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xfa, 0x61, 0x71, 0xf0, 0xfc, 0x49, 0xf5, 0xc3, 0x63, 0x32, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb1, 0x1f, 0xb2, 0x81, 0x63, 0x3f, 0xb4, 0x6d, 0xf8, 0xdc, 0x65, 0xc0, 0x33, 0x0b, 0x3b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd8, 0x0f, 0xf9, 0xc1, 0xc3, 0x33, 0xd5, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xfb, 0x61, 0x32, 0x70, 0xec, 0x87, 0xf9, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x63, 0x3f, 0x8c, 0x06, 0x8e, 0xfd, 0xb0, 0x3b, 0x78, 0x18, 0x14, 0xf8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xfb, 0x61, 0x38, 0x70, 0xec, 0x87, 0xf5, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb7, 0x34, 0xfa, 0xf0, 0x0f, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xec, 0x87, 0xfd, 0xc0, 0xb1, 0x1f, 0x0a, 0x0e, 0x0f, 0xde, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb1, 0x1f, 0x1a, 0x06, 0x8e, 0xfd, 0x50, 0xb6, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xd8, 0x0f, 0x15, 0x03, 0xc7, 0x7e, 0x68, 0x39, 0x28, 0xb4, 0x7b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x63, 0x3f, 0xd4, 0x0c, 0x1c, 0xfb, 0xa1, 0x6b, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0xba, 0xf5, 0x79, 0xf8, 0x87, 0xa7, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf6, 0x43, 0x72, 0xf0, 0x52, 0x32, 0xf5, 0x0d, 0x9f, 0xbb, 0x6c, 0x50, 0x8a, 0x0e, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb5, 0x1f, 0xd2, 0x83, 0x97, 0x92, 0xa9, 0x1f, 0x04, 0x2c, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xfc, 0xf1, 0x07, 0xcf, 0xd1, 0x4e, 0xdf, 0xa0, 0x20, 0x8d, 0xdd, 0x60, 0x91, 0xf0, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf1, 0x87, 0x64, 0xe0, 0xe4, 0x0f, 0xbd, 0x1b, 0x14, 0x9d, 0xc6, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc5, 0x1f, 0xd2, 0x81, 0x8b, 0x3f, 0x2c, 0x0e, 0x16, 0xec, 0xa0, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x7f, 0xd8, 0x0c, 0x5c, 0xfc, 0xa1, 0x70, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc5, 0x1f, 0x46, 0x03, 0x17, 0x7f, 0xd8, 0x1d, 0x94, 0x44, 0xb3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc5, 0x1f, 0x86, 0x03, 0x17, 0x7f, 0x58, 0x6f, 0x78, 0x5b, 0x67, 0xc0, 0x13, 0x7b, 0x8b, 0x0f, 0x9f, 0x07, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x7f, 0x98, 0x0f, 0x5c, 0xfc, 0xa1, 0x6b, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc5, 0x1f, 0xf6, 0x03, 0x17, 0x7f, 0x28, 0x39, 0x78, 0xe5, 0xda, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf1, 0x87, 0x96, 0x81, 0x8b, 0x3f, 0x54, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0x52, 0x74, 0xe0, 0xa0, 0xc8, 0x97, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf8, 0x43, 0xd9, 0xc0, 0xc5, 0x1f, 0xfa, 0x0e, 0xda, 0xee, 0xcb, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xfe, 0x90, 0x1c, 0x3c, 0xbf, 0x57, 0x7d, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc9, 0x1f, 0xa2, 0x81, 0x93, 0x3f, 0xc4, 0x07, 0xeb, 0x5a, 0x49, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x3f, 0xe4, 0x03, 0x27, 0x7f, 0x98, 0x1c, 0x2c, 0xb0, 0x33, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xfe, 0xb0, 0x19, 0x38, 0xf9, 0x43, 0xed, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x3f, 0x8c, 0x06, 0x4e, 0xfe, 0x30, 0x3c, 0x58, 0x56, 0x09, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xfc, 0x61, 0x39, 0x70, 0xf2, 0x87, 0xf5, 0xc1, 0x72, 0x64, 0xe1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe4, 0x0f, 0xf3, 0x81, 0x93, 0x3f, 0xb4, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xf9, 0xc3, 0x7e, 0xe0, 0xe4, 0x0f, 0x1d, 0x07, 0x0b, 0x15, 0x43, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x3f, 0x94, 0x0c, 0x9c, 0xfc, 0xa1, 0x74, 0x83, 0x15, 0x42, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc9, 0x1f, 0x7a, 0x06, 0x4e, 0xfe, 0xd0, 0x75, 0xb0, 0xec, 0x18, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xf9, 0x43, 0xd9, 0xc0, 0xc9, 0x1f, 0xfa, 0x0e, 0x16, 0xd8, 0x99, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x7f, 0x28, 0x1c, 0x38, 0xf9, 0x43, 0xe7, 0xc1, 0x3a, 0x69, 0xd0, 0xaa, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf9, 0xe3, 0x0f, 0x9e, 0xa3, 0x9d, 0xbe, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0xca, 0xa0, 0xdc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe8, 0x0f, 0xc9, 0xc0, 0xd9, 0x1f, 0x7a, 0x36, 0x28, 0x76, 0x34, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x3f, 0xa4, 0x03, 0x47, 0x7f, 0x58, 0x6e, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xfa, 0x43, 0x3e, 0x70, 0xf4, 0x87, 0xc9, 0xc1, 0xc3, 0xa0, 0xc0, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe8, 0x0f, 0x9b, 0x81, 0xa3, 0x3f, 0x0c, 0x0f, 0xde, 0x5d, 0xaa, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xfd, 0x21, 0x1b, 0xb8, 0xfa, 0x43, 0xdb, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xab, 0x3f, 0x84, 0x03, 0x57, 0x7f, 0xa8, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf5, 0x87, 0x7c, 0xe0, 0xea, 0x0f, 0xcb, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x7f, 0x58, 0x0c, 0x5c, 0xfd, 0x61, 0x72, 0x78, 0x4c, 0x66, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xfe, 0xb0, 0x19, 0xb8, 0xfa, 0xc3, 0x70, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x5d, 0x58, 0x7d, 0xf8, 0x87, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xfa, 0xc3, 0x74, 0xe0, 0xea, 0x0f, 0xfb, 0x83, 0x07, 0xb0, 0x5d, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd5, 0x1f, 0x0a, 0x06, 0xae, 0xfe, 0xd0, 0x72, 0xf0, 0xaa, 0xba, 0xeb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xea, 0x0f, 0x3d, 0x03, 0x57, 0x7f, 0x28, 0xdb, 0xf0, 0xb6, 0xce, 0x80, 0x67, 0x16, 0x76, 0x1e, 0x14, 0xf9, 0xb2, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd9, 0x1f, 0x92, 0x83, 0x77, 0xf6, 0xab, 0x6f, 0x50, 0xf0, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x67, 0x7f, 0x08, 0x07, 0xce, 0xfe, 0x50, 0xb2, 0xe1, 0x11, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xec, 0x0f, 0xf1, 0xc0, 0xd9, 0x1f, 0x86, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xfe, 0x30, 0x18, 0x38, 0xfb, 0xc3, 0xe2, 0xf0, 0xe0, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xfd, 0x61, 0x32, 0x70, 0xf6, 0x87, 0xdd, 0xc1, 0xf3, 0x27, 0xd6, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb3, 0x3f, 0x2c, 0x07, 0xce, 0xfe, 0xd0, 0xb1, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xec, 0x0f, 0xdb, 0x81, 0xb3, 0x3f, 0x8c, 0x0f, 0x0f, 0xde, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xd9, 0x1f, 0xd6, 0x03, 0x67, 0x7f, 0xa8, 0x38, 0x78, 0x54, 0xc7, 0x7a, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf6, 0x87, 0x96, 0x81, 0xb3, 0x3f, 0xd4, 0x1c, 0x14, 0x14, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf8, 0xc7, 0x1f, 0x3c, 0x47, 0x3b, 0x7d, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x07, 0x6a, 0x7d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x7f, 0x98, 0x0c, 0x1c, 0xfe, 0xa1, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe1, 0x1f, 0x36, 0x03, 0x87, 0x7f, 0x98, 0x1d, 0xfe, 0x04, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xff, 0xb0, 0x1b, 0x38, 0xfc, 0xc3, 0xf8, 0xe0, 0x95, 0x6b, 0xdf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe1, 0x1f, 0xd6, 0x03, 0x87, 0x7f, 0xa8, 0x38, 0x78, 0xb3, 0xb4, 0x7a, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf9, 0xc7, 0x1f, 0x3c, 0x47, 0x3b, 0x7d, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe5, 0x1f, 0x82, 0x81, 0xcb, 0x3f, 0xec, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xfe, 0x21, 0x19, 0xb8, 0xfc, 0x43, 0xbc, 0xe1, 0x6d, 0x9d, 0x01, 0xef, 0x0e, 0xed, 0x3d, 0x28, 0xf2, 0x65, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x3f, 0xe4, 0x03, 0x97, 0x7f, 0x98, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xfc, 0xc3, 0x60, 0xe0, 0xf2, 0x0f, 0xab, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x62, 0x6f, 0xf1, 0x41, 0x91, 0x2f, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xfe, 0x61, 0x36, 0x70, 0xf9, 0x87, 0xe5, 0xc1, 0x32, 0xab, 0xdc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x3f, 0x6c, 0x07, 0x2e, 0xff, 0x30, 0x3f, 0x68, 0xbb, 0x2f, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xf2, 0x0f, 0x05, 0x03, 0x97, 0x7f, 0x68, 0x38, 0xbc, 0x17, 0xd4, 0x2c, 0xf0, 0x65, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xf3, 0xf1, 0x03, 0xd7, 0x7d, 0xb8, 0xb2, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x9e, 0x0f, 0xd9, 0xc0, 0x3d, 0x1f, 0x46, 0x07, 0xef, 0xf5, 0x61, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x3e, 0xfe, 0xe0, 0xc5, 0x5f, 0xeb, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xfa, 0x90, 0x0d, 0x1c, 0xf4, 0x21, 0x3f, 0x78, 0x58, 0xcc, 0xe8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf4, 0xf1, 0x07, 0x2f, 0xfe, 0x5a, 0xdf, 0xa0, 0x20, 0x8d, 0xdd, 0xa0, 0x61, 0xcb, 0xaf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa2, 0x0f, 0x83, 0x81, 0x8b, 0x3e, 0x34, 0x6f, 0x50, 0xc2, 0x63, 0x6e, 0xf0, 0xe6, 0x26, 0xe6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa2, 0x0f, 0xbb, 0x81, 0x8b, 0x3e, 0x0c, 0x0f, 0x0f, 0xde, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x45, 0x1f, 0x96, 0x03, 0x17, 0x7d, 0x28, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd1, 0x87, 0xe9, 0xc0, 0x45, 0x1f, 0xd6, 0x07, 0xa7, 0x03, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa2, 0x0f, 0xf3, 0x81, 0x8b, 0x3e, 0xf4, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xe8, 0xc3, 0x7e, 0xe0, 0xa2, 0x0f, 0x15, 0x87, 0xd7, 0x7c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8b, 0x3e, 0x74, 0x0c, 0x5c, 0xf4, 0xa1, 0x76, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x45, 0x1f, 0x4a, 0x06, 0x2e, 0xfa, 0xd0, 0x73, 0x50, 0x14, 0xff, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x7d, 0x28, 0x1a, 0xb8, 0xe8, 0x43, 0xd3, 0xc1, 0xa9, 0xb9, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xe8, 0x43, 0xd5, 0xc0, 0x45, 0x1f, 0x5a, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf4, 0xa1, 0x6b, 0xe0, 0xa2, 0x0f, 0x75, 0x07, 0x45, 0x26, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd1, 0x87, 0xbe, 0x81, 0x8b, 0x3e, 0x14, 0x1e, 0x9c, 0x17, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8b, 0x3e, 0x34, 0x0e, 0x5c, 0xf4, 0xa1, 0xf4, 0xe0, 0x61, 0x4d, 0xcc, 0x55, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd2, 0xc7, 0x1f, 0xbc, 0xf8, 0x6b, 0x7d, 0x83, 0x82, 0x34, 0x76, 0x83, 0x86, 0xb3, 0xb5, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x3e, 0x0c, 0x06, 0x4e, 0xfa, 0xd0, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x0b, 0xcb, 0x98, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x3e, 0xec, 0x06, 0x4e, 0xfa, 0x30, 0x3c, 0x3c, 0x78, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x7d, 0x58, 0x0e, 0x9c, 0xf4, 0xa1, 0x6a, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x49, 0x1f, 0xa6, 0x03, 0x27, 0x7d, 0x58, 0x1f, 0x5e, 0xf3, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xfa, 0x30, 0x1f, 0x38, 0xe9, 0x43, 0xd3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x3e, 0xec, 0x07, 0x4e, 0xfa, 0x50, 0x71, 0x50, 0x14, 0xff, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x7d, 0xe8, 0x18, 0x38, 0xe9, 0x43, 0xc9, 0x41, 0x51, 0x29, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xf4, 0xa1, 0x65, 0xe0, 0xa4, 0x0f, 0x45, 0x07, 0xcf, 0x28, 0x63, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xe9, 0xe3, 0x0f, 0x5e, 0xfc, 0xb5, 0xbe, 0x41, 0x41, 0x1a, 0xbb, 0x06, 0x25, 0x74, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd3, 0x87, 0x6c, 0xe0, 0xa6, 0x0f, 0x55, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xfa, 0x10, 0x0e, 0xdc, 0xf4, 0x61, 0xb1, 0xe1, 0xcf, 0xa5, 0x01, 0xcf, 0x2d, 0x8d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x3e, 0x0c, 0x0e, 0xde, 0x24, 0xbb, 0x7e, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xe9, 0xc3, 0x64, 0xe0, 0xa6, 0x0f, 0xbb, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x74, 0x61, 0xf5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xf4, 0x61, 0x76, 0xf0, 0x1c, 0xdc, 0xf5, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4d, 0x1f, 0x86, 0x03, 0x37, 0x7d, 0x58, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0x46, 0xb7, 0x3e, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa6, 0x0f, 0xe3, 0x83, 0x97, 0xf8, 0xae, 0x1f, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xfa, 0x30, 0x1f, 0xb8, 0xe9, 0x43, 0xc7, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb3, 0x3c, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xfa, 0x50, 0x71, 0xf0, 0x08, 0xe2, 0xf5, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4d, 0x1f, 0x4a, 0x06, 0x6e, 0xfa, 0xd0, 0xb4, 0xe1, 0xcf, 0xa5, 0x01, 0xcf, 0x2c, 0xec, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x3e, 0x14, 0x1d, 0x3c, 0x41, 0x79, 0xfd, 0xf0, 0x43, 0x4d, 0x07, 0x61, 0x3a, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xf5, 0x21, 0x19, 0xb8, 0xeb, 0xc3, 0x85, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x56, 0x32, 0xe5, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x57, 0x7d, 0xc8, 0x06, 0xae, 0xfa, 0x30, 0xde, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd5, 0x87, 0x70, 0xe0, 0xaa, 0x0f, 0xf9, 0xc1, 0xc3, 0xa0, 0xc0, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xab, 0x3e, 0x0c, 0x06, 0xae, 0xfa, 0xb0, 0x39, 0x78, 0x33, 0x09, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd5, 0x87, 0xd1, 0xc0, 0x55, 0x1f, 0x76, 0x07, 0x6f, 0x26, 0x01, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xfa, 0x30, 0x1c, 0xb8, 0xea, 0xc3, 0xf2, 0xf0, 0xe0, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd5, 0x87, 0xe9, 0xc0, 0x55, 0x1f, 0xb6, 0x87, 0x07, 0x6f, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb3, 0x3e, 0x24, 0x07, 0x8f, 0x83, 0x5e, 0xdf, 0xa0, 0x20, 0x8d, 0xdd, 0xa0, 0xd1, 0xad, 0xcf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xac, 0x0f, 0x93, 0x81, 0xb3, 0x3e, 0xb4, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xeb, 0xc3, 0x66, 0xe0, 0xac, 0x0f, 0xb3, 0xc3, 0x6b, 0x3e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x59, 0x1f, 0x76, 0x03, 0x67, 0x7d, 0x28, 0xdd, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd6, 0x87, 0xe1, 0xc0, 0x59, 0x1f, 0xb6, 0x07, 0xa7, 0x03, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xac, 0x0f, 0xe3, 0x81, 0xb3, 0x3e, 0x74, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xeb, 0xc3, 0x7a, 0xe0, 0xac, 0x0f, 0x05, 0x07, 0x45, 0xf1, 0xef, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd6, 0x87, 0x86, 0x81, 0xb3, 0x3e, 0x54, 0x1c, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x59, 0x1f, 0x3a, 0x06, 0xce, 0xfa, 0x50, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xac, 0x0f, 0x25, 0x03, 0x67, 0x7d, 0xe8, 0x39, 0x28, 0xb2, 0x4c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb3, 0x3e, 0x14, 0x0d, 0x9c, 0xf5, 0xa1, 0xe9, 0xf0, 0x98, 0xcc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd6, 0x87, 0xaa, 0x81, 0xb3, 0x3e, 0x34, 0x1e, 0x3c, 0xdb, 0x92, 0xb9, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xfa, 0x90, 0x1c, 0x3c, 0x0e, 0x7a, 0x7d, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5d, 0x1f, 0xa2, 0x81, 0xbb, 0x3e, 0xa4, 0x07, 0x6f, 0x26, 0x01, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xfa, 0x10, 0x0f, 0xdc, 0xf5, 0xa1, 0x6b, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5d, 0x1f, 0x16, 0x03, 0x77, 0x7d, 0xa8, 0xd8, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xfa, 0x30, 0x1a, 0xb8, 0xeb, 0xc3, 0x72, 0x43, 0x06, 0xfc, 0xe0, 0x6d, 0x6c, 0xd7, 0x07, 0x6f, 0x58, 0x64, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xfa, 0xd0, 0x31, 0x70, 0xd7, 0x87, 0x9a, 0x83, 0x87, 0x41, 0x81, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5d, 0x1f, 0x7a, 0x06, 0xee, 0xfa, 0x50, 0x75, 0xf0, 0x66, 0x12, 0xf0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xae, 0x0f, 0x65, 0x03, 0x77, 0x7d, 0xe8, 0xdb, 0xf0, 0xb6, 0xce, 0x41, 0x33, 0x7d, 0x9f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x5d, 0x1f, 0x0a, 0x07, 0xee, 0xfa, 0xd0, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xae, 0x0f, 0x8d, 0x03, 0x77, 0x7d, 0x28, 0x3d, 0x28, 0xb4, 0x7b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x3e, 0xb4, 0x0e, 0xdc, 0xf5, 0xa1, 0xf8, 0xe0, 0xf1, 0x1a, 0xec, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x7d, 0xa8, 0x1e, 0xb8, 0xeb, 0xc3, 0x83, 0x83, 0x67, 0x5b, 0x32, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x7d, 0xfc, 0xc1, 0x8b, 0xbf, 0xd6, 0x37, 0x28, 0x48, 0x63, 0x37, 0x28, 0x45, 0x07, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x3e, 0x0c, 0x06, 0x2e, 0xfb, 0x70, 0x60, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd9, 0x87, 0xcd, 0xc0, 0x65, 0x1f, 0x4a, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf6, 0x61, 0x34, 0x70, 0xd9, 0x87, 0xfd, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb2, 0x0f, 0xb3, 0x83, 0xd7, 0xc6, 0xb0, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xec, 0xc3, 0x6e, 0xe0, 0xb2, 0x0f, 0xd3, 0x83, 0xa2, 0xf8, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xec, 0xc3, 0x76, 0xe0, 0xb2, 0x0f, 0xe3, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xec, 0xc3, 0x7a, 0xe0, 0xb2, 0x0f, 0xf3, 0xc3, 0x33, 0x93, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x7d, 0x28, 0x18, 0xb8, 0xec, 0x43, 0xc7, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb2, 0x0f, 0x15, 0x07, 0x8f, 0xfc, 0x61, 0x3f, 0x3c, 0x33, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf6, 0xa1, 0x65, 0xe0, 0xb2, 0x0f, 0xfd, 0x1b, 0xbe, 0x7e, 0xd9, 0x60, 0xad, 0x42, 0xdd, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x7d, 0x68, 0x3a, 0x78, 0x4e, 0x11, 0xfb, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x3e, 0x54, 0x0d, 0x5c, 0xf6, 0xa1, 0xed, 0x60, 0xad, 0x63, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd9, 0x87, 0xba, 0x81, 0xcb, 0x3e, 0xf4, 0x1d, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x65, 0x1f, 0x0a, 0x07, 0x2e, 0xfb, 0x50, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb2, 0x0f, 0x8d, 0x03, 0x97, 0x7d, 0x68, 0xdd, 0xf0, 0xb6, 0xce, 0x06, 0x67, 0x18, 0xc9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xcb, 0x3e, 0xd4, 0x0e, 0x5c, 0xf6, 0xa1, 0xf9, 0x60, 0x75, 0x58, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xd9, 0x87, 0xea, 0x81, 0xcb, 0x3e, 0xb4, 0x1f, 0xb4, 0xdd, 0x97, 0x59, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xda, 0xc7, 0x1f, 0xbc, 0xf8, 0x6b, 0x7d, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xed, 0x43, 0x36, 0x70, 0xda, 0x87, 0xc2, 0x0d, 0x8f, 0xb0, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x7d, 0x48, 0x07, 0x4e, 0xfb, 0x30, 0xdb, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xfb, 0x30, 0x18, 0x38, 0xed, 0xc3, 0xe2, 0xa0, 0x48, 0xc5, 0x3c, 0x68, 0xd6, 0x2f, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xed, 0xc3, 0x6e, 0xe0, 0xb4, 0x0f, 0x7d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xfb, 0x30, 0x1c, 0x38, 0xed, 0xc3, 0xf6, 0xf0, 0xc5, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xda, 0x87, 0xf1, 0xc0, 0x69, 0x1f, 0x1a, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xb0, 0x08, 0x64, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xed, 0x43, 0xc5, 0xc0, 0x69, 0x1f, 0xea, 0x36, 0x58, 0xd8, 0xb9, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x7d, 0x68, 0x19, 0x38, 0xed, 0x43, 0xdb, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd3, 0x3e, 0xd4, 0x0c, 0x9c, 0xf6, 0xa1, 0xe9, 0xa0, 0xd0, 0xee, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xfb, 0x50, 0x35, 0x70, 0xda, 0x87, 0xb2, 0x83, 0xc3, 0xab, 0x5c, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb7, 0x7d, 0xfc, 0xc1, 0x8b, 0xbf, 0xd6, 0x37, 0x38, 0xe7, 0x2f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb7, 0x7d, 0xc8, 0x06, 0x6e, 0xfb, 0xb0, 0xd8, 0xf0, 0xb9, 0xcb, 0x86, 0xef, 0xe8, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb6, 0x0f, 0x83, 0x83, 0xa7, 0xfe, 0xb1, 0x1f, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x71, 0x1f, 0x92, 0x81, 0xe3, 0x3e, 0x54, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xee, 0x43, 0x34, 0x70, 0xdc, 0x87, 0x74, 0x83, 0xa5, 0x5f, 0xaf, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xdc, 0x87, 0xf0, 0xe0, 0x35, 0x88, 0xec, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xdc, 0x87, 0x78, 0xe0, 0xb8, 0x0f, 0xf9, 0xe1, 0xc1, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb8, 0x0f, 0x83, 0x81, 0xe3, 0x3e, 0xec, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xf7, 0x61, 0x31, 0x70, 0xdc, 0x87, 0xc9, 0x41, 0xc0, 0xb2, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x7d, 0xd8, 0x0c, 0x1c, 0xf7, 0x61, 0xb6, 0xe1, 0x6d, 0x9d, 0x83, 0xe6, 0xb4, 0xbf, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xfb, 0x30, 0x1c, 0x38, 0xee, 0xc3, 0x7e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x71, 0x1f, 0x96, 0x03, 0xc7, 0x7d, 0x98, 0x1e, 0x04, 0x2c, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xdc, 0x87, 0xed, 0xc0, 0x71, 0x1f, 0xe6, 0x07, 0xad, 0xa3, 0x6b, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xf7, 0xa1, 0x60, 0xe0, 0xb8, 0x0f, 0x3d, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xfb, 0xd0, 0x30, 0x70, 0xdc, 0x87, 0x8a, 0xc3, 0x63, 0x32, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x71, 0x1f, 0x3a, 0x06, 0x8e, 0xfb, 0x50, 0xb3, 0xe1, 0x6d, 0x9d, 0x01, 0xcf, 0x2d, 0x8d, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb8, 0x0f, 0x45, 0x03, 0xc7, 0x7d, 0xe8, 0xdb, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xdc, 0x87, 0xa6, 0x81, 0xe3, 0x3e, 0x54, 0x1d, 0x1e, 0x93, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xfb, 0xd0, 0x35, 0x70, 0xdc, 0x87, 0xba, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x74, 0x61, 0x75, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x7d, 0x28, 0x1c, 0x38, 0xee, 0x43, 0xef, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe3, 0x3e, 0x34, 0x0e, 0x1c, 0xf7, 0xa1, 0xf2, 0x20, 0x60, 0x59, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe3, 0x3e, 0x74, 0x0e, 0x1c, 0xf7, 0xa1, 0xf6, 0xe0, 0xf1, 0x1a, 0xec, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x7d, 0x28, 0x1e, 0x38, 0xee, 0x43, 0xf3, 0x41, 0x41, 0x91, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf7, 0xf1, 0x07, 0x2f, 0xfe, 0x5a, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xdd, 0x87, 0x60, 0xe0, 0xba, 0x0f, 0xd3, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x7d, 0x48, 0x06, 0xae, 0xfb, 0xb0, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xdd, 0x87, 0x68, 0xe0, 0xba, 0x0f, 0xe9, 0x41, 0xa1, 0xdd, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf7, 0x21, 0x1e, 0xb8, 0xee, 0xc3, 0x68, 0xc3, 0xc7, 0x51, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xdd, 0x87, 0xc1, 0xc0, 0x75, 0x1f, 0x36, 0x07, 0xaf, 0xb2, 0x64, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xee, 0xc3, 0x6c, 0xe0, 0xba, 0x0f, 0xcb, 0x83, 0x87, 0x35, 0x31, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf7, 0x61, 0x3b, 0x70, 0xdd, 0x87, 0x9e, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x7d, 0x18, 0x0f, 0x5c, 0xf7, 0xa1, 0x62, 0xc3, 0xc7, 0x51, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xdd, 0x87, 0xf9, 0xc0, 0x75, 0x1f, 0x1a, 0x0e, 0x5a, 0x47, 0xd7, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xfb, 0xd0, 0x31, 0x70, 0xdd, 0x87, 0x9a, 0x83, 0x67, 0x94, 0x31, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf7, 0xa1, 0x68, 0xe0, 0xba, 0x0f, 0x7d, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xae, 0xfb, 0xd0, 0x34, 0x70, 0xdd, 0x87, 0xaa, 0xc3, 0x63, 0x32, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x75, 0x1f, 0xba, 0x06, 0xae, 0xfb, 0x50, 0x77, 0xf0, 0x40, 0x3a, 0xe6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xeb, 0x3e, 0x14, 0x0e, 0x5c, 0xf7, 0xa1, 0x79, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x75, 0x1f, 0x1a, 0x07, 0xae, 0xfb, 0x50, 0xba, 0xe1, 0x6d, 0x9d, 0x01, 0xef, 0x2c, 0xcf, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xee, 0x43, 0xeb, 0xc0, 0x75, 0x1f, 0x8a, 0x37, 0xbc, 0xad, 0x33, 0xe0, 0x99, 0x85, 0x9d, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf7, 0xa1, 0x7a, 0xe0, 0xba, 0x0f, 0x1f, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf7, 0xa1, 0x7b, 0xe0, 0xba, 0x0f, 0xe5, 0x07, 0x01, 0xcb, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xf7, 0xa1, 0x7d, 0xe0, 0xba, 0x0f, 0x17, 0x0e, 0x9e, 0xec, 0xc6, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xdd, 0x87, 0x13, 0x03, 0xd7, 0x7d, 0xf8, 0x71, 0xb0, 0xd2, 0x63, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xee, 0xc3, 0x91, 0x81, 0xeb, 0x3e, 0x3c, 0x39, 0x28, 0x28, 0x32, 0x3b, 0x9c, 0x62, 0x87, 0x53, 0xec, 0x70, 0x8a, 0xb5, 0x06, 0xcb, 0x77, 0x7b, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0x2c, 0xdf, 0xed, 0x69, 0x00, 0x9e, 0xa7, 0xa8, 0xaa, 0x9c, 0x40, 0xdc, 0xde, 0xe8, 0xd2, 0xcc, 0xd2, 0xc6, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0xe6, 0x58, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x40, 0xea, 0xdc, 0xd2, 0xf0, 0x95, 0x00, 0xf8, 0xc3, 0x85, 0x2d, 0xcc, 0xad, 0x0c, 0x24, 0x6d, 0x0e, 0x84, 0x0e, 0xad, 0x0c, 0x84, 0x2d, 0x8c, 0xae, 0x6c, 0x8e, 0x0e, 0x64, 0x2c, 0x6c, 0x0c, 0xad, 0x8c, 0x0c, 0x84, 0x2d, 0xcc, 0xad, 0x0c, 0x24, 0xcd, 0x0d, 0xc4, 0xae, 0x4c, 0xae, 0x8c, 0x05, 0xc4, 0x4c, 0xee, 0xad, 0x0d, 0x84, 0x0e, 0xad, 0x0c, 0x04, 0xee, 0x2d, 0xcd, 0x8d, 0x0e, 0xe4, 0xcd, 0x0c, 0xc4, 0x2e, 0xad, 0xec, 0x0e, 0xe4, 0xcd, 0x0c, 0xc4, 0x65, 0x0e, 0x2d, 0x0d, 0xae, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xe5, 0xbb, 0x3d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x12, 0xc4, 0x0d, 0x5c, 0x05, 0xf1, 0x1b, 0x04, 0xed, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x12, 0x84, 0x64, 0xe0, 0x24, 0x08, 0xe3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x41, 0x88, 0x06, 0x4e, 0x82, 0x90, 0x1f, 0xb4, 0xf5, 0x26, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x04, 0x61, 0x30, 0x70, 0x12, 0x84, 0xd5, 0x86, 0x3f, 0x97, 0x36, 0x68, 0xfa, 0x7a, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0x82, 0xb0, 0x38, 0x78, 0xa5, 0x45, 0xfb, 0x41, 0xdb, 0xd6, 0xe3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x49, 0x10, 0x66, 0x03, 0x27, 0x41, 0xd8, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0x97, 0xfd, 0x0d, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x49, 0x10, 0x76, 0x07, 0x2f, 0xe5, 0x68, 0x3f, 0x78, 0x95, 0xe0, 0x70, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4d, 0x10, 0x92, 0x81, 0x9b, 0x20, 0x8c, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x04, 0x21, 0x1a, 0xb8, 0x09, 0x42, 0x7e, 0xf0, 0x8e, 0x31, 0xcb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x26, 0x08, 0x83, 0x81, 0x9b, 0x20, 0xac, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xd3, 0xd7, 0xe3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x13, 0x84, 0xc5, 0xc1, 0x83, 0x50, 0xda, 0x0f, 0xda, 0xb6, 0x1e, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0x82, 0x30, 0x1b, 0xb8, 0x09, 0xc2, 0x76, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0xec, 0x6f, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0x82, 0xb0, 0x3b, 0x78, 0x94, 0x4b, 0xfb, 0xc1, 0xab, 0x04, 0x87, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0x82, 0x90, 0x0c, 0x1c, 0x05, 0x61, 0xbc, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x28, 0x08, 0xd1, 0xc0, 0x51, 0x10, 0xf2, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x05, 0xfe, 0x9b, 0xdb, 0x58, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x05, 0x61, 0x30, 0x70, 0x14, 0x84, 0xd5, 0x86, 0x3f, 0x97, 0x36, 0x68, 0xfa, 0x7a, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0x82, 0xb0, 0x38, 0x78, 0xb5, 0x4e, 0xfb, 0x41, 0xdb, 0xd6, 0xe3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x51, 0x10, 0x66, 0x03, 0x47, 0x41, 0xd8, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0x97, 0xfd, 0x0d, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x51, 0x10, 0x76, 0x07, 0x2f, 0x07, 0x6a, 0x3f, 0x78, 0x95, 0xe0, 0x70, 0xad, 0x06, 0x4f, 0xc1, 0xed, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x8b, 0x2f, 0x6e, 0xe0, 0xea, 0x8b, 0xdf, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf1, 0x85, 0x64, 0xe0, 0xe2, 0x0b, 0xf1, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xad, 0x19, 0xf7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x7c, 0x21, 0x3a, 0x78, 0x8e, 0x52, 0xfb, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0xb5, 0x66, 0xdc, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x5f, 0xdc, 0xc1, 0x33, 0x8f, 0xda, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x7c, 0x21, 0x19, 0x38, 0xf9, 0x42, 0xc1, 0x86, 0xcf, 0x5d, 0x36, 0x48, 0x4c, 0x3c, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x2f, 0xa4, 0x07, 0x8f, 0x9b, 0x6a, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf2, 0x85, 0x78, 0xe0, 0xe4, 0x0b, 0x8b, 0x83, 0x92, 0x68, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xf9, 0xc2, 0x64, 0xe0, 0xe4, 0x0b, 0x9b, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xf9, 0xc2, 0x68, 0xe0, 0xe4, 0x0b, 0xd3, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x5f, 0x58, 0x0d, 0x9c, 0x7c, 0x61, 0x76, 0x78, 0xf0, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xf9, 0xc2, 0x6e, 0xe0, 0xe4, 0x0b, 0xcb, 0x83, 0x14, 0xe8, 0xd4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x2f, 0x6c, 0x07, 0x4e, 0xbe, 0xb0, 0xdf, 0xf0, 0xb6, 0xce, 0xc1, 0xe3, 0x9c, 0xda, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xbe, 0x90, 0x0c, 0xdc, 0x7c, 0xa1, 0x60, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0xfa, 0x47, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x5f, 0x48, 0x0f, 0xde, 0xa4, 0xd6, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe6, 0x0b, 0xf1, 0xc0, 0xcd, 0x17, 0x16, 0x07, 0x25, 0xd1, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf3, 0x85, 0xc9, 0xc0, 0xcd, 0x17, 0x36, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf3, 0x85, 0xd1, 0xc0, 0xcd, 0x17, 0xa6, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xbe, 0xb0, 0x1a, 0xb8, 0xf9, 0xc2, 0xee, 0x20, 0x05, 0x3a, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xf9, 0xc2, 0x70, 0xe0, 0xe6, 0x0b, 0xcb, 0x83, 0x53, 0x73, 0x5b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xcd, 0x17, 0xb6, 0x03, 0x37, 0x5f, 0xd8, 0x1f, 0x3c, 0xf2, 0xac, 0xbd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe8, 0x0b, 0xc9, 0xc0, 0xd1, 0x17, 0xc6, 0x1b, 0x3e, 0x77, 0xd9, 0xa0, 0xa8, 0x2d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x2f, 0xa4, 0x07, 0xef, 0x06, 0x6c, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xf4, 0x85, 0x78, 0xe0, 0xe8, 0x0b, 0x8b, 0x83, 0x12, 0x1f, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xfa, 0xc2, 0x64, 0xe0, 0xe8, 0x0b, 0xb3, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xfa, 0xc2, 0xe8, 0xe0, 0x79, 0x89, 0xed, 0x1b, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0xc3, 0x89, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xe8, 0x0b, 0xbb, 0x81, 0xa3, 0x2f, 0x6c, 0x0f, 0x1e, 0x79, 0xd6, 0x5e, 0xab, 0xc1, 0x3b, 0x08, 0x8c, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x38, 0x32, 0x84, 0x1e, 0xbc, 0x83, 0xc0, 0xb8, 0x01, 0xf0, 0xee, 0x0e, 0x2d, 0x8c, 0x0e, 0x84, 0xee, 0x0d, 0x84, 0xec, 0x0d, 0xe4, 0x0e, 0xad, 0xcc, 0x0d, 0xe4, 0xae, 0x0c, 0x84, 0xad, 0x2c, 0x4c, 0xce, 0x0d, 0x24, 0x0c, 0x04, 0xae, 0xac, 0x4c, 0xee, 0x64, 0x0e, 0x84, 0x2d, 0xcd, 0xac, 0x0c, 0x24, 0xcc, 0x8d, 0x0c, 0x64, 0xad, 0x2c, 0x6f, 0x5e, 0x09, 0xc0, 0xc3, 0xb6, 0xb2, 0xb9, 0xb9, 0xb0, 0xb3, 0xb2, 0x39, 0x1d, 0x10, 0x38, 0xb6, 0xb2, 0xb0, 0x39, 0x10, 0xb6, 0xb7, 0xb1, 0x30, 0x36, 0x10, 0xbb, 0x30, 0xb7, 0xb2, 0x39, 0x10, 0xb4, 0x30, 0xbb, 0x32, 0x90, 0xb0, 0xb9, 0xb5, 0x32, 0x32, 0x90, 0xba, 0x39, 0x10, 0xba, 0x37, 0x90, 0xb9, 0x32, 0x37, 0x72, 0x09, 0xc0, 0x0f, 0xb8, 0xb0, 0xb1, 0xb5, 0x32, 0xba, 0x39, 0x1d, 0x10, 0xb8, 0xb0, 0xb1, 0xb5, 0x32, 0xba, 0x39, 0x90, 0xbb, 0xb2, 0x13, 0xbb, 0x32, 0x10, 0x3a, 0xb9, 0xb4, 0x32, 0x32, 0x10, 0xba, 0x37, 0x90, 0xb9, 0x32, 0x37, 0xb2, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0xde, 0x41, 0x60, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x45, 0xdc, 0xc0, 0x89, 0x11, 0xbf, 0xc1, 0x01, 0x42, 0x74, 0x83, 0x77, 0x10, 0x18, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x79, 0x11, 0x77, 0xf0, 0xfe, 0xd3, 0xf6, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x45, 0x48, 0x06, 0xce, 0x8b, 0x50, 0xb3, 0xe1, 0xcf, 0xa5, 0x01, 0xfe, 0xb6, 0xb2, 0xb9, 0xb9, 0xb0, 0xb3, 0xb2, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0x8b, 0x30, 0x39, 0x78, 0x7a, 0x6b, 0xfb, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x17, 0x61, 0x33, 0x70, 0x5e, 0x84, 0xdd, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x45, 0x18, 0x0e, 0x9c, 0x17, 0xa1, 0x65, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x79, 0x11, 0x96, 0x03, 0xe7, 0x45, 0x98, 0x6f, 0xf8, 0x73, 0x69, 0x83, 0x97, 0xa9, 0x7b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x79, 0x11, 0xa6, 0x07, 0x2f, 0xd0, 0x6d, 0x3f, 0x78, 0x7a, 0xba, 0xc7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x5e, 0x84, 0xfd, 0xc0, 0x79, 0x11, 0x4a, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x0b, 0xd4, 0x81, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xbc, 0x08, 0x05, 0x07, 0xef, 0x00, 0x6e, 0x3f, 0x78, 0x93, 0xfb, 0x71, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf7, 0x45, 0x48, 0x06, 0xee, 0x8b, 0x30, 0xde, 0xf0, 0xe7, 0xd2, 0x00, 0x2f, 0x5c, 0xd8, 0xd8, 0x5a, 0x19, 0xdd, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf7, 0x45, 0x58, 0x1c, 0x3c, 0xc9, 0xb8, 0x7d, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0x8b, 0x30, 0x19, 0xb8, 0x2f, 0xc2, 0xea, 0xa0, 0x44, 0x7c, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0x8b, 0x30, 0x1b, 0xb8, 0x2f, 0xc2, 0x76, 0xc3, 0x9f, 0x4b, 0x1b, 0xa4, 0xd0, 0xf9, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x7d, 0x11, 0x76, 0x07, 0x8f, 0x7c, 0x6e, 0x3f, 0x78, 0xe7, 0x1b, 0x6f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x81, 0x11, 0x92, 0x81, 0x03, 0x23, 0xcc, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x5b, 0xce, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc0, 0x08, 0xf9, 0xc1, 0x43, 0xab, 0xdb, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xc0, 0x08, 0x83, 0x81, 0x03, 0x23, 0x6c, 0x0e, 0xde, 0x4d, 0x35, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x18, 0x61, 0x34, 0x70, 0x60, 0x84, 0xe1, 0xc1, 0x19, 0x09, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x30, 0xc2, 0x72, 0xe0, 0xc0, 0x08, 0xeb, 0x83, 0xa7, 0xa7, 0x7b, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0x18, 0x21, 0x19, 0xb8, 0x30, 0xc2, 0x7c, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0xdf, 0x38, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0x8c, 0x90, 0x1f, 0x3c, 0x82, 0xbc, 0x7d, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0x8c, 0x30, 0x18, 0xb8, 0x30, 0xc2, 0xe6, 0xe0, 0xdd, 0x54, 0x93, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x85, 0x11, 0x46, 0x03, 0x17, 0x46, 0x18, 0x1e, 0x9c, 0x91, 0x50, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0b, 0x23, 0x2c, 0x07, 0x2e, 0x8c, 0xb0, 0x3e, 0x78, 0x7a, 0xba, 0x47, 0xad, 0x06, 0xef, 0xd2, 0x42, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xe0, 0xc8, 0x10, 0x7a, 0xf0, 0x2e, 0x2d, 0xe4, 0x06, 0xc0, 0xab, 0xb1, 0x37, 0xb7, 0xb3, 0xb2, 0x39, 0xba, 0xb4, 0x37, 0x37, 0x90, 0xb1, 0x37, 0x37, 0x3a, 0xb9, 0x37, 0x36, 0x90, 0x39, 0xba, 0x30, 0xba, 0x32, 0x10, 0xb3, 0x37, 0x39, 0x90, 0x30, 0x10, 0x3e, 0xb8, 0xb0, 0xb1, 0xb5, 0x32, 0xba, 0x16, 0xb8, 0xba, 0x36, 0x78, 0x25, 0x00, 0xaf, 0xa9, 0xd0, 0xd2, 0xe6, 0x40, 0xd2, 0xe6, 0x40, 0xc2, 0xdc, 0x40, 0x82, 0xda, 0xca, 0xe6, 0x40, 0xc2, 0xc8, 0xc2, 0xe0, 0xe8, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x40, 0xde, 0xcc, 0x40, 0xa8, 0x86, 0xa0, 0x4e, 0xe6, 0x40, 0xa4, 0xca, 0xdc, 0xde, 0x40, 0xc6, 0xde, 0xdc, 0xce, 0xca, 0xe6, 0xe8, 0xd2, 0xde, 0xdc, 0x40, 0xc6, 0xde, 0xdc, 0xe8, 0xe4, 0xde, 0xd8, 0x25, 0x00, 0xaf, 0xc3, 0xd8, 0xce, 0xde, 0xe4, 0xd2, 0xe8, 0xd0, 0xda, 0x5c, 0x40, 0x40, 0xa8, 0xd0, 0xca, 0x40, 0xd2, 0xdc, 0xcc, 0xde, 0xe4, 0xda, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x40, 0xe6, 0xd2, 0xce, 0xdc, 0xc2, 0xd8, 0xe6, 0x40, 0xc2, 0xdc, 0xc8, 0x40, 0xe8, 0xd0, 0xca, 0xd2, 0xe4, 0x40, 0xe4, 0xca, 0xe6, 0xe0, 0xde, 0xdc, 0xe6, 0xca, 0xe6, 0x40, 0xc2, 0xe4, 0xca, 0x25, 0x00, 0x7f, 0xd3, 0xc8, 0xca, 0xdc, 0xe8, 0xd2, 0xc6, 0xc2, 0xd8, 0x40, 0xe8, 0xde, 0x40, 0xe8, 0xd0, 0xde, 0xe6, 0xca, 0x40, 0xde, 0xcc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0x44, 0x9c, 0xca, 0xee, 0xa4, 0xca, 0xdc, 0xde, 0x44, 0x40, 0xec, 0xc2, 0xe4, 0xd2, 0xc2, 0xdc, 0xe8, 0x40, 0xde, 0xcc, 0x40, 0xa4, 0xca, 0xdc, 0xde, 0x76, 0x40, 0xe8, 0xd0, 0xca, 0x25, 0x00, 0xef, 0xd3, 0xda, 0xe0, 0xd8, 0xca, 0xda, 0xca, 0xdc, 0xe8, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x40, 0xc8, 0xd2, 0xcc, 0xcc, 0xca, 0xe4, 0xe6, 0x40, 0xc4, 0xca, 0xc6, 0xc2, 0xea, 0xe6, 0xca, 0x40, 0x82, 0xda, 0xca, 0xe6, 0x40, 0xc2, 0xc6, 0xd6, 0xdc, 0xde, 0xee, 0xd8, 0xca, 0xc8, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0xe6, 0x40, 0xc8, 0xd2, 0xcc, 0xcc, 0xca, 0xe4, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x25, 0x00, 0xcf, 0xa9, 0x86, 0xa0, 0x4e, 0xe6, 0x58, 0x40, 0xc4, 0xca, 0xc6, 0xc2, 0xea, 0xe6, 0xca, 0x40, 0xe8, 0xd0, 0xd2, 0xe6, 0x40, 0xc6, 0xde, 0xc8, 0xca, 0x40, 0xea, 0xe6, 0xca, 0xe6, 0x40, 0xcc, 0xea, 0xdc, 0xc6, 0xe8, 0xd2, 0xde, 0xdc, 0xc2, 0xd8, 0x40, 0xc8, 0xc2, 0xe8, 0xc2, 0x40, 0xe6, 0xe8, 0xe4, 0xea, 0xc6, 0xe8, 0xea, 0xe4, 0xca, 0xe6, 0x58, 0x40, 0xc2, 0xdc, 0xc8, 0x25, 0x00, 0x7f, 0xc5, 0xca, 0xc6, 0xc2, 0xea, 0xe6, 0xca, 0x40, 0xa8, 0x86, 0xa0, 0x4e, 0xe6, 0x40, 0xe6, 0xca, 0xe2, 0xea, 0xca, 0xdc, 0xc6, 0xca, 0x40, 0xdc, 0xea, 0xda, 0xc4, 0xca, 0xe4, 0xe6, 0x40, 0xe4, 0xca, 0xe6, 0xca, 0xe8, 0x40, 0xee, 0xd0, 0xca, 0xdc, 0x40, 0xc2, 0x40, 0xe0, 0xca, 0xca, 0xe4, 0x40, 0xc4, 0xca, 0xc6, 0xde, 0xda, 0xca, 0xe6, 0x25, 0x00, 0xdf, 0xeb, 0xdc, 0xe4, 0xca, 0xe6, 0xe0, 0xde, 0xdc, 0xe6, 0xd2, 0xec, 0xca, 0x58, 0x40, 0xee, 0xd0, 0xca, 0xe4, 0xca, 0xc2, 0xe6, 0x40, 0x82, 0xda, 0xca, 0xe6, 0x40, 0xe6, 0xca, 0xe2, 0xea, 0xca, 0xdc, 0xc6, 0xca, 0x40, 0xdc, 0xea, 0xda, 0xc4, 0xca, 0xe4, 0xe6, 0x40, 0xde, 0xdc, 0xd8, 0xf2, 0x40, 0xc6, 0xd0, 0xc2, 0xdc, 0xce, 0xca, 0x40, 0xee, 0xd0, 0xca, 0xdc, 0x40, 0xc2, 0x25, 0x40, 0x77, 0x0e, 0x2d, 0x0d, 0x0e, 0x44, 0x4c, 0xae, 0x2c, 0x6c, 0x0c, 0xad, 0x6c, 0xce, 0xb5, 0x12, 0x80, 0xf7, 0x41, 0x20, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x52, 0x65, 0x6e, 0x6f, 0x20, 0x69, 0x73, 0x20, 0x2b, 0x66, 0x61, 0x73, 0x74, 0x2d, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x64, 0x2d, 0x61, 0x66, 0x74, 0x65, 0x72, 0x2d, 0x61, 0x63, 0x6b, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x72, 0x65, 0x2d, 0x73, 0x65, 0x6e, 0x64, 0xf3, 0x12, 0x80, 0xe7, 0x74, 0x69, 0x6d, 0x65, 0x64, 0x2d, 0x6f, 0x75, 0x74, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x70, 0x65, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0xe1, 0x12, 0x40, 0x2b, 0x5c, 0x99, 0x5c, 0xda, 0x1b, 0x19, 0xc8, 0x9b, 0x19, 0x48, 0x9d, 0x9b, 0x5c, 0xd9, 0x1c, 0xdc, 0x9b, 0xdb, 0x5c, 0x9a, 0x5d, 0x99, 0x5b, 0xd9, 0xdc, 0x9c, 0x6b, 0x25, 0x00, 0x9f, 0x93, 0xcc, 0x40, 0x5c, 0xe6, 0xd6, 0xd2, 0xe0, 0xe6, 0x40, 0xe4, 0xca, 0xc2, 0xc6, 0xd0, 0xca, 0xe6, 0x40, 0x66, 0x58, 0x40, 0xee, 0xca, 0x40, 0xe0, 0xca, 0xe4, 0xcc, 0xde, 0xe4, 0xda, 0x40, 0xc2, 0x40, 0xcc, 0xc2, 0xe6, 0xe8, 0x40, 0xe4, 0xca, 0xe8, 0xe4, 0xc2, 0xdc, 0xe6, 0xda, 0xd2, 0xe8, 0x40, 0xc2, 0xdc, 0xc8, 0x40, 0xcc, 0xc2, 0xe6, 0xe8, 0x25, 0x00, 0x3e, 0x90, 0x2b, 0x1b, 0x7b, 0xb3, 0x2b, 0x93, 0xcb, 0x73, 0x01, 0x01, 0xa1, 0x42, 0x4b, 0x9b, 0x03, 0x19, 0x7b, 0x93, 0x93, 0x2b, 0x9b, 0x83, 0x7b, 0x73, 0x23, 0x9b, 0x03, 0xa1, 0x7b, 0x03, 0x91, 0x2a, 0x73, 0x7b, 0x3b, 0x99, 0x03, 0x41, 0x0b, 0x73, 0x23, 0x63, 0x4b, 0x73, 0x3b, 0x03, 0x79, 0x33, 0x03, 0x11, 0xa1, 0x43, 0x93, 0x2b, 0x2b, 0x03, 0x21, 0xab, 0x83, 0x63, 0x4b, 0x1b, 0x0b, 0xa3, 0x2b, 0x97, 0x80, 0x2e, 0x6c, 0x6c, 0x6d, 0x4e, 0xc4, 0xb5, 0x12, 0xc0, 0xab, 0x1c, 0xdd, 0x9b, 0x0e, 0x88, 0x5c, 0x19, 0x9d, 0x5c, 0x98, 0xdb, 0x5c, 0x5b, 0xda, 0xdc, 0x5c, 0xda, 0x9b, 0x1b, 0x08, 0x5d, 0x5a, 0x5b, 0xd9, 0x5b, 0x1d, 0xbd, 0x04, 0xe0, 0xa5, 0x1c, 0x1d, 0x9d, 0x0e, 0x88, 0xdc, 0x5b, 0x9d, 0x1b, 0x19, 0x9d, 0x5c, 0x1a, 0x1c, 0x08, 0x5d, 0x5a, 0x5b, 0x19, 0x48, 0xd9, 0x1c, 0x5d, 0x5a, 0x5b, 0x18, 0x5d, 0x19, 0x0b, 0x08, 0xdb, 0xdb, 0x5d, 0x0b, 0x5c, 0xd8, 0xdc, 0x5c, 0x19, 0x19, 0x48, 0xdd, 0x5c, 0x9a, 0xdb, 0x19, 0x48, 0xd1, 0x55, 0x53, 0xb0, 0x04, 0xe0, 0xb1, 0x1c, 0x1d, 0x9d, 0x5d, 0x98, 0x9c, 0x0e, 0x48, 0x5b, 0x59, 0x98, 0x1b, 0x08, 0x59, 0x99, 0x5d, 0x5a, 0x18, 0x5d, 0xda, 0x9b, 0x1b, 0xc8, 0x9b, 0x19, 0x88, 0x8b, 0x1c, 0x1d, 0x1d, 0x0b, 0x48, 0x18, 0xdb, 0xdc, 0x1b, 0x08, 0xdb, 0xdb, 0x5d, 0x0b, 0x5c, 0xd8, 0xdc, 0x5c, 0x19, 0x19, 0xc8, 0x5d, 0x1a, 0x1d, 0x1a, 0x48, 0xd1, 0x55, 0x53, 0xb0, 0x04, 0xf0, 0x3d, 0x37, 0x47, 0x87, 0x26, 0x57, 0x36, 0x87, 0xa6, 0x03, 0x32, 0xc7, 0xf6, 0x76, 0xd7, 0x32, 0x47, 0x17, 0x26, 0x47, 0x07, 0x42, 0x87, 0x26, 0x57, 0x36, 0x87, 0xf6, 0xc6, 0x46, 0x2e, 0x01, 0xf8, 0x35, 0x76, 0xe7, 0x46, 0xa6, 0x03, 0x32, 0xf6, 0xe6, 0x76, 0x56, 0x36, 0x47, 0x97, 0xf6, 0xe6, 0x06, 0x72, 0x97, 0xe6, 0x46, 0xf6, 0x76, 0xb7, 0x03, 0xd2, 0x16, 0x86, 0x07, 0x52, 0xe7, 0x16, 0x36, 0xb6, 0x56, 0x46, 0x06, 0x02, 0x17, 0x36, 0xb6, 0x56, 0x46, 0x37, 0xd7, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xbb, 0xb4, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x84, 0x8a, 0x1b, 0x38, 0xa4, 0xe2, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x50, 0x21, 0x19, 0x38, 0xa1, 0xc2, 0x62, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x1c, 0xdd, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x54, 0x48, 0x0f, 0x1e, 0x8f, 0xe7, 0xbe, 0x41, 0x00, 0x9d, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x09, 0x15, 0xe2, 0x83, 0xc7, 0xe3, 0xb9, 0x6f, 0xf8, 0x11, 0x66, 0xe0, 0xc9, 0xe4, 0x83, 0xc5, 0xfb, 0x65, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x0d, 0x15, 0x92, 0x81, 0x1b, 0x2a, 0x2c, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xc9, 0xd1, 0xd1, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x43, 0x85, 0xf4, 0xe0, 0x81, 0x82, 0xee, 0x1b, 0x04, 0xd0, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0x50, 0x21, 0x3e, 0x78, 0xa0, 0xa0, 0xfb, 0xc1, 0xdb, 0xfe, 0xdc, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x23, 0x2a, 0x24, 0x03, 0x47, 0x54, 0x18, 0x6d, 0xf8, 0x73, 0x69, 0x80, 0x4f, 0x8e, 0x8e, 0xce, 0x2e, 0x4c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x23, 0x2a, 0x0c, 0x0e, 0x5e, 0xb4, 0xe8, 0xbe, 0x41, 0x00, 0x9d, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x11, 0x15, 0x16, 0x07, 0x2f, 0x5a, 0x74, 0x3f, 0x78, 0xdb, 0x9f, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x45, 0x85, 0x64, 0xe0, 0x8a, 0x0a, 0xcb, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0xcf, 0xcd, 0xd1, 0xa1, 0xc9, 0x95, 0xcd, 0xa1, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x45, 0x85, 0xc9, 0xc1, 0xf3, 0x28, 0xdd, 0x37, 0x08, 0xa0, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xa2, 0xc2, 0xe6, 0xe0, 0x79, 0x94, 0xee, 0x1b, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x83, 0x86, 0x38, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x19, 0x15, 0x92, 0x81, 0x33, 0x2a, 0x0c, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0x8f, 0xdd, 0xb9, 0x91, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x46, 0x85, 0xf8, 0xe0, 0x81, 0x9e, 0xee, 0x1b, 0x04, 0xd0, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x51, 0x21, 0x3f, 0x78, 0xa0, 0xa7, 0xfb, 0xe1, 0x31, 0x99, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x8e, 0x0a, 0xc9, 0xc0, 0x1d, 0x15, 0x46, 0x1b, 0xfe, 0x5c, 0x1a, 0xe0, 0x1d, 0x7b, 0xab, 0x73, 0xa3, 0x2b, 0x93, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x8e, 0x0a, 0x8b, 0x83, 0xf7, 0x9c, 0xba, 0x1f, 0x94, 0x59, 0xba, 0x1d, 0x4e, 0xb1, 0xd6, 0xe0, 0x65, 0x7f, 0xc3, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x1c, 0x19, 0x42, 0x0f, 0x5e, 0xf6, 0x37, 0xdc, 0x00, 0xf8, 0x3b, 0x87, 0x96, 0x06, 0x07, 0x42, 0x27, 0x17, 0xe6, 0x36, 0x07, 0xf7, 0x26, 0x47, 0x07, 0x12, 0x46, 0x46, 0x26, 0x57, 0x36, 0x37, 0xb7, 0x03, 0x52, 0x96, 0x46, 0x87, 0x56, 0x26, 0x07, 0xf2, 0x06, 0x17, 0x16, 0x57, 0x57, 0x06, 0x42, 0x12, 0x46, 0x46, 0x26, 0x57, 0x36, 0x37, 0x07, 0xf2, 0x26, 0x07, 0x72, 0x16, 0xc6, 0x16, 0x86, 0x97, 0xaf, 0x04, 0xe0, 0x3b, 0x15, 0x5a, 0x19, 0x88, 0x5c, 0x9d, 0x1b, 0x5d, 0x5a, 0x5b, 0x19, 0xc8, 0x9a, 0xdb, 0xdb, 0xdd, 0x1c, 0x08, 0xda, 0xdb, 0x1d, 0x08, 0xdd, 0x1b, 0x08, 0xdb, 0xdb, 0xdb, 0x1a, 0x48, 0x1d, 0x1c, 0xc8, 0x59, 0x18, 0x5b, 0x18, 0x5e, 0x5a, 0xd9, 0x1c, 0x0b, 0xc8, 0xdc, 0x1b, 0xc8, 0x5d, 0x19, 0x08, 0xd9, 0x9b, 0xdb, 0x09, 0x1d, 0x88, 0x5b, 0x59, 0x19, 0x19, 0x08, 0xdd, 0xbb, 0x04, 0xd0, 0xbe, 0xe6, 0xf6, 0x76, 0x07, 0x42, 0x87, 0x56, 0x96, 0x26, 0x07, 0x42, 0x27, 0x17, 0xe6, 0x36, 0x07, 0xf7, 0x26, 0x47, 0x07, 0x12, 0x46, 0x46, 0x26, 0x57, 0x36, 0x37, 0x57, 0x36, 0xe7, 0x6a, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x65, 0x7f, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xef, 0x43, 0x3a, 0x50, 0xef, 0xc3, 0x7e, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xea, 0x7d, 0x88, 0x07, 0xea, 0x7d, 0x98, 0x1c, 0xac, 0x82, 0x4c, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xea, 0x7d, 0xd8, 0x0c, 0xd4, 0xfb, 0x30, 0xdb, 0xf0, 0x45, 0xcd, 0x86, 0x3a, 0x1e, 0x3c, 0xdc, 0xb0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xd4, 0xfb, 0xb0, 0x1b, 0xa8, 0xf7, 0x61, 0x7e, 0xf0, 0x22, 0x82, 0xc7, 0x56, 0x83, 0x37, 0x1d, 0x0f, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xbc, 0xe9, 0x78, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0x83, 0x30, 0x1b, 0x38, 0x0e, 0x42, 0xc7, 0xc1, 0xb3, 0x95, 0x1d, 0x0f, 0xa7, 0xd8, 0x02, 0x78, 0xcc, 0xa5, 0x99, 0xd1, 0xb5, 0xdc, 0x85, 0xa5, 0xb1, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xda, 0xc5, 0x0d, 0x5c, 0x77, 0xa1, 0x64, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x69, 0x17, 0x92, 0x81, 0xd3, 0x2e, 0xc4, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0x39, 0x0d, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0x76, 0x21, 0x3a, 0x78, 0xb0, 0xb6, 0xfb, 0xc1, 0x9b, 0xed, 0xb1, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb6, 0x8b, 0x3b, 0x78, 0x03, 0xb6, 0xfb, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xdb, 0x2e, 0x24, 0x03, 0xb7, 0x5d, 0x48, 0x37, 0xfc, 0x3b, 0xbf, 0x06, 0x8f, 0x10, 0x3d, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xee, 0xe2, 0x0e, 0xde, 0x80, 0xed, 0xbe, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x77, 0x21, 0x19, 0x38, 0xee, 0xc2, 0x74, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x71, 0x17, 0xb2, 0x81, 0xe3, 0x2e, 0x84, 0x87, 0x07, 0x6f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb8, 0x0b, 0xe9, 0xc0, 0x71, 0x17, 0x96, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xbb, 0x10, 0x0f, 0x1c, 0x77, 0x61, 0x71, 0x50, 0x64, 0xe2, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x5d, 0x98, 0x0c, 0x1c, 0x77, 0x61, 0x73, 0x50, 0x54, 0x8a, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x5d, 0x18, 0x0d, 0x1c, 0x77, 0x61, 0x78, 0xd0, 0xda, 0x87, 0x41, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xdd, 0xc5, 0x1d, 0xbc, 0x01, 0xdb, 0x7d, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x75, 0x17, 0x3b, 0x70, 0xdd, 0x85, 0xe0, 0x60, 0x59, 0x00, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0xdd, 0x85, 0x64, 0xe0, 0xba, 0x0b, 0x1d, 0x1b, 0x1e, 0x94, 0xdc, 0x70, 0x47, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x75, 0x17, 0xb2, 0x83, 0x67, 0xfc, 0xbb, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xee, 0x42, 0x38, 0x70, 0xdd, 0x85, 0xd5, 0xc1, 0x83, 0x50, 0xbb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xeb, 0x2e, 0xcc, 0x06, 0xae, 0xbb, 0x50, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xba, 0x0b, 0xbb, 0x81, 0xeb, 0x2e, 0x4c, 0x0f, 0x4a, 0x7c, 0xdc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xba, 0x0b, 0xdb, 0x81, 0xeb, 0x2e, 0x8c, 0x0f, 0x8a, 0x4a, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xba, 0x0b, 0xeb, 0x81, 0xeb, 0x2e, 0x34, 0x1c, 0xb4, 0xf6, 0x61, 0x50, 0x1d, 0x4e, 0xb1, 0x35, 0x78, 0x98, 0xff, 0xdd, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x4d, 0x8c, 0x0b, 0xcd, 0x8d, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xe3, 0xb8, 0x81, 0x23, 0x3b, 0x7e, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x8d, 0x43, 0x32, 0x70, 0x35, 0x87, 0x6c, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x85, 0x97, 0x59, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x0b, 0x2f, 0xb3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x38, 0x0e, 0x9b, 0x81, 0xe3, 0x38, 0xec, 0x36, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x07, 0x5e, 0x1d, 0xd9, 0xb1, 0x1a, 0xbc, 0x88, 0xd6, 0x71, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0xe0, 0x45, 0xb4, 0x8e, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x1e, 0x87, 0xcd, 0xc0, 0x79, 0x1c, 0x76, 0x1b, 0xbe, 0xa8, 0xd9, 0x50, 0xc7, 0x03, 0xaf, 0x8e, 0xcc, 0x98, 0x35, 0x7c, 0x47, 0xbf, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf8, 0x8e, 0x7e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xe3, 0xb0, 0x19, 0xb8, 0x8f, 0xc3, 0xea, 0x20, 0x1d, 0x43, 0x73, 0x35, 0x38, 0xd7, 0x9f, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x9c, 0xeb, 0x4f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x52, 0x0e, 0xd9, 0xc0, 0xa5, 0x1c, 0x3a, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x52, 0x0e, 0xe1, 0xc0, 0xa5, 0x1c, 0x06, 0x07, 0xab, 0x20, 0x93, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x39, 0x2c, 0x06, 0x2e, 0xe5, 0x30, 0xdd, 0xf0, 0xef, 0xfc, 0x06, 0xef, 0x83, 0x06, 0x3e, 0x78, 0x56, 0x70, 0xe3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x29, 0x87, 0xed, 0xc0, 0xa5, 0x1c, 0x2a, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x52, 0x0e, 0xe3, 0x81, 0x4b, 0x39, 0x14, 0x1c, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xa5, 0x1c, 0x1a, 0x06, 0x2e, 0xe5, 0xd0, 0xb8, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x72, 0xa8, 0x18, 0xb8, 0x94, 0x43, 0xcd, 0x41, 0xe9, 0x4d, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xca, 0xa1, 0x67, 0xe0, 0x52, 0x0e, 0x5d, 0x07, 0x8f, 0xe8, 0xe2, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xe5, 0x50, 0x36, 0x70, 0x29, 0x87, 0xc2, 0x83, 0x47, 0x74, 0xf1, 0x56, 0xb3, 0x06, 0x4d, 0x5f, 0x8f, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x34, 0x7d, 0x3d, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x71, 0xd8, 0x0c, 0x5c, 0xc7, 0x61, 0xb6, 0xe1, 0x8b, 0x9a, 0x0d, 0x75, 0x3c, 0x78, 0x38, 0xe4, 0x70, 0x8a, 0xad, 0xc1, 0xcb, 0xfe, 0x86, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x5e, 0xf6, 0x37, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb7, 0x72, 0xd8, 0x0c, 0x9c, 0xcb, 0x61, 0xb5, 0xe1, 0x83, 0xf9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x56, 0x0e, 0xbb, 0x81, 0x5b, 0x39, 0x4c, 0x0f, 0x8e, 0x2d, 0xa5, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x2c, 0x87, 0xcd, 0xc1, 0x5b, 0x9d, 0xde, 0x37, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x58, 0x0e, 0xbb, 0x81, 0x63, 0x39, 0x54, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x96, 0xc3, 0x70, 0xe0, 0x58, 0x0e, 0xdb, 0x83, 0xf3, 0x78, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x2c, 0x87, 0xf1, 0xc0, 0xb1, 0x1c, 0x2a, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x72, 0x98, 0x1f, 0xbc, 0x8b, 0xeb, 0x7d, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0x78, 0xe0, 0xa5, 0x99, 0x19, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xb1, 0x1c, 0x3a, 0x06, 0x8e, 0xe5, 0xd0, 0xb4, 0xe1, 0xcf, 0xa5, 0xc1, 0xe3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x96, 0x43, 0xcb, 0xc1, 0xd3, 0xc5, 0xde, 0x37, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x07, 0x5e, 0x1d, 0x59, 0xd1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x2d, 0x87, 0xdd, 0xc0, 0xb5, 0x1c, 0xaa, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xcb, 0x61, 0x38, 0x70, 0x2d, 0x87, 0xed, 0xc1, 0x31, 0xc2, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x96, 0xc3, 0x78, 0xe0, 0x5a, 0x0e, 0x15, 0x1b, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x6b, 0x39, 0xcc, 0x0f, 0x9e, 0xef, 0xf6, 0xbe, 0xe1, 0x8b, 0x9a, 0x0d, 0x75, 0x3c, 0xf0, 0xd2, 0xe6, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x5a, 0x0e, 0x1d, 0x03, 0xd7, 0x72, 0x68, 0xda, 0xf0, 0xe7, 0xd2, 0xe0, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xcb, 0xa1, 0xe5, 0xe0, 0x85, 0x75, 0xef, 0x07, 0x4f, 0x33, 0x7b, 0xaf, 0xd5, 0xe0, 0x20, 0xcf, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0x70, 0x90, 0x67, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x53, 0x39, 0x6c, 0x06, 0x4e, 0xe5, 0x50, 0xb8, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x54, 0x0e, 0xa3, 0x81, 0x53, 0x39, 0x6c, 0x37, 0xfc, 0xb9, 0x34, 0xe0, 0xd1, 0xbd, 0x89, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x2a, 0x87, 0xe1, 0xc1, 0x03, 0x00, 0xdf, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x54, 0x0e, 0xe3, 0x81, 0x53, 0x39, 0x34, 0x6d, 0xf8, 0x73, 0x69, 0xc0, 0x0b, 0xab, 0xa3, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x54, 0x0e, 0x05, 0x07, 0x0f, 0x30, 0x7c, 0x3f, 0x78, 0x2c, 0xba, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x2a, 0x87, 0xaa, 0x81, 0x53, 0x39, 0xf4, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0xa2, 0xb6, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xe5, 0x50, 0x77, 0xf0, 0x10, 0xc6, 0xf7, 0xc3, 0x0f, 0x35, 0xad, 0x06, 0xeb, 0x87, 0x6b, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0xd6, 0x0f, 0xd7, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xbd, 0x1c, 0x36, 0x03, 0xf7, 0x72, 0x98, 0x6f, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xbd, 0x1c, 0x46, 0x03, 0xf7, 0x72, 0x18, 0x1e, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x2f, 0x87, 0xe5, 0xc0, 0xbd, 0x1c, 0xd6, 0x07, 0xaf, 0x12, 0x1c, 0xee, 0x70, 0x8a, 0xad, 0xe1, 0xfb, 0xf6, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x21, 0x87, 0x6c, 0xe0, 0x48, 0x0e, 0xe9, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x0b, 0x39, 0xe4, 0x03, 0x17, 0x72, 0xa8, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x21, 0x87, 0xc1, 0xc0, 0x85, 0x1c, 0x86, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xd0, 0xca, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x90, 0xc3, 0xe8, 0xe0, 0xbd, 0xa3, 0xef, 0x07, 0x6d, 0x5b, 0x8f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x72, 0x58, 0x0e, 0x5c, 0xc8, 0xa1, 0x61, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x5c, 0x9a, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x72, 0x58, 0x1f, 0xbc, 0x39, 0xf5, 0xfd, 0xe0, 0x0d, 0xb6, 0x8e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x72, 0xc8, 0x07, 0x4e, 0xe4, 0xf0, 0x60, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x89, 0x1c, 0x06, 0x03, 0x27, 0x72, 0x18, 0x6e, 0xf8, 0x73, 0x69, 0xc0, 0x13, 0x7b, 0x8b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x44, 0x0e, 0xa3, 0x83, 0x97, 0xca, 0xbe, 0x1f, 0xbe, 0x9d, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xe4, 0xb0, 0x1c, 0x38, 0x91, 0xc3, 0x81, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x32, 0x28, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xe4, 0xb0, 0x3e, 0x78, 0x24, 0xee, 0xfb, 0x86, 0x0f, 0xe6, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x39, 0x14, 0x0c, 0x9c, 0xc8, 0xa1, 0xe1, 0x20, 0x04, 0x1f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x44, 0x0e, 0x15, 0x03, 0x27, 0x72, 0xe8, 0xdf, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x22, 0x87, 0x8e, 0x81, 0x13, 0x39, 0xb4, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0xc6, 0xe7, 0xa3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x44, 0x0e, 0x3d, 0x07, 0x0f, 0x20, 0x7e, 0xdf, 0x20, 0xd8, 0x4c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x39, 0x34, 0x0d, 0x9c, 0xc8, 0xa1, 0xee, 0xe0, 0x79, 0x11, 0xec, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x89, 0x1c, 0xfa, 0x06, 0x4e, 0xe4, 0x50, 0xba, 0x21, 0x03, 0x7e, 0xf0, 0xe0, 0xba, 0xeb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x39, 0xd4, 0x0e, 0x9c, 0xc8, 0xa1, 0x7e, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x59, 0xd8, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x72, 0xa8, 0x3e, 0x78, 0x0b, 0xf4, 0xfb, 0x86, 0x7f, 0xe7, 0x37, 0x58, 0xe6, 0x49, 0x5c, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x72, 0xc8, 0x07, 0x6e, 0xe4, 0xb0, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0x8b, 0x84, 0x67, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x46, 0x0e, 0x9b, 0x83, 0x27, 0x5b, 0xbf, 0x1f, 0x9c, 0x91, 0x50, 0x3b, 0x9c, 0x62, 0xad, 0xc1, 0xc3, 0xfc, 0xef, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x1e, 0xe6, 0x7f, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x73, 0xd8, 0x0c, 0x1c, 0xcd, 0x61, 0xb9, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x60, 0x0e, 0xbb, 0x81, 0x83, 0x39, 0xcc, 0x37, 0xfc, 0xb9, 0x34, 0xe0, 0xa1, 0xbd, 0xc1, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x30, 0x87, 0xed, 0xc1, 0xc3, 0xc3, 0xdf, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x62, 0x0e, 0xbb, 0x81, 0xa3, 0x39, 0xac, 0x36, 0x08, 0xda, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x62, 0x0e, 0xdb, 0x81, 0x8b, 0x39, 0xf4, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x98, 0xc3, 0x78, 0xe0, 0x62, 0x0e, 0x0d, 0x07, 0x6f, 0xc0, 0x05, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xe6, 0x50, 0x31, 0x70, 0x31, 0x87, 0xa2, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xc5, 0x1c, 0x4a, 0x0e, 0x5e, 0x03, 0xff, 0x7e, 0xf0, 0x46, 0x15, 0xca, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x62, 0x0e, 0x4d, 0x03, 0x17, 0x73, 0xe8, 0xdb, 0xf0, 0xe7, 0xd2, 0xe0, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xcc, 0xa1, 0xeb, 0xe0, 0x05, 0xf6, 0xef, 0x1b, 0xfe, 0x9d, 0xdf, 0xe0, 0x58, 0x1a, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x31, 0x87, 0xc2, 0x81, 0x8b, 0x39, 0xd4, 0x6e, 0xf8, 0x73, 0x69, 0x70, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xe6, 0x50, 0x79, 0xf0, 0x20, 0xfe, 0xf7, 0x0d, 0xff, 0xce, 0x6f, 0xb0, 0x7a, 0xb8, 0xb6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x39, 0x6c, 0x07, 0x4e, 0xe6, 0xd0, 0xbb, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x64, 0x0e, 0xe3, 0x81, 0x93, 0x39, 0x34, 0x1c, 0x3c, 0x11, 0x19, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x99, 0x43, 0xc5, 0xc0, 0xc9, 0x1c, 0x8a, 0x36, 0xfc, 0xb9, 0x34, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x73, 0x28, 0x39, 0x78, 0x07, 0x02, 0xfc, 0xc1, 0x1b, 0x55, 0x28, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x93, 0x39, 0x34, 0x0d, 0x9c, 0xcc, 0xa1, 0x6f, 0xc3, 0x9f, 0x4b, 0x83, 0xc7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x32, 0x87, 0xae, 0x83, 0xb7, 0x37, 0xc0, 0x1f, 0xbc, 0x51, 0x85, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x99, 0x43, 0xe1, 0xc0, 0xc9, 0x1c, 0x6a, 0x37, 0xfc, 0xb9, 0x34, 0xb8, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x73, 0xa8, 0x3c, 0x78, 0xef, 0x04, 0xfc, 0xc1, 0x0b, 0xf3, 0xdf, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xe6, 0xb0, 0x1d, 0xb8, 0x99, 0x43, 0xd3, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x39, 0x8c, 0x07, 0x6e, 0xe6, 0xd0, 0x70, 0xf0, 0x64, 0x6c, 0xe0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x66, 0x0e, 0x15, 0x03, 0x37, 0x73, 0x28, 0xda, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xcc, 0xa1, 0xe4, 0xe0, 0x25, 0x1f, 0xf0, 0x07, 0x6f, 0x54, 0xa1, 0xac, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x39, 0xee, 0xe0, 0x61, 0x15, 0xef, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0x4f, 0x56, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x31, 0x1d, 0x3f, 0x70, 0x63, 0x87, 0x78, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x31, 0x1d, 0xb2, 0x81, 0x63, 0x3a, 0x2c, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc7, 0x74, 0x48, 0x0f, 0x1e, 0xba, 0x02, 0x7f, 0x50, 0x84, 0xc5, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x35, 0x1d, 0x7f, 0xf0, 0x7a, 0x14, 0xf8, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x74, 0xc8, 0x06, 0xae, 0xe9, 0x30, 0xd8, 0xf0, 0xe7, 0xd2, 0x06, 0x45, 0x6d, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xd3, 0x21, 0x3f, 0x78, 0xfa, 0x0c, 0xfc, 0xe1, 0x87, 0x9a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xa7, 0xe3, 0x0f, 0x5e, 0x8f, 0x02, 0xbf, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x9c, 0x0e, 0xd9, 0xc0, 0x39, 0x1d, 0x3a, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xd3, 0x21, 0x1c, 0x38, 0xa7, 0xc3, 0x60, 0xc3, 0xbf, 0xf3, 0x07, 0x4f, 0xdd, 0x29, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xe9, 0xb0, 0x18, 0x38, 0xa7, 0xc3, 0x72, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0xd8, 0x5b, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x74, 0x58, 0x1d, 0x3c, 0x4a, 0x08, 0xfe, 0xf0, 0xed, 0xfc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x4e, 0x87, 0xe9, 0xc0, 0x39, 0x1d, 0x2a, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0x01, 0x5e, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xe9, 0x30, 0x3f, 0x78, 0x0f, 0x12, 0xfc, 0xe1, 0x01, 0xfc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x9e, 0x8e, 0x3f, 0x78, 0x3d, 0x0a, 0xfc, 0x86, 0x4f, 0x6c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7b, 0x3a, 0x64, 0x03, 0xf7, 0x74, 0x68, 0xda, 0xf0, 0xb9, 0xcb, 0x1a, 0x26, 0x6e, 0x83, 0x95, 0xbc, 0xa4, 0xe1, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xd3, 0x61, 0x78, 0xf0, 0x62, 0x28, 0xf8, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf7, 0x74, 0x58, 0x0e, 0xdc, 0xd3, 0xa1, 0x64, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x3d, 0x1d, 0xa6, 0x03, 0xf7, 0x74, 0x68, 0xd8, 0xf0, 0xa0, 0xe4, 0x06, 0x2f, 0xa2, 0x0f, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7b, 0x3a, 0xac, 0x0f, 0x5e, 0xa0, 0x05, 0x7f, 0xb0, 0x2a, 0x8c, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xa7, 0x43, 0xc5, 0xc0, 0x3d, 0x1d, 0x3a, 0x0e, 0x4f, 0xeb, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xd3, 0xa1, 0x65, 0xe0, 0x9e, 0x0e, 0x45, 0x07, 0xa5, 0x9f, 0x71, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x50, 0xc7, 0x1f, 0xbc, 0x1e, 0x05, 0x7e, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x41, 0x1d, 0xb2, 0x81, 0xf3, 0x3a, 0x64, 0x1b, 0x3e, 0x77, 0x59, 0xc3, 0xc4, 0x6d, 0xd0, 0xc6, 0x0c, 0x78, 0xf8, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x17, 0x75, 0x48, 0x0e, 0x1e, 0x84, 0x06, 0xbf, 0x41, 0x90, 0x9e, 0xae, 0x41, 0xe3, 0xf3, 0x51, 0x07, 0x6b, 0xe2, 0x49, 0x57, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xea, 0x90, 0x0d, 0x9c, 0xd4, 0x61, 0x70, 0xf0, 0x06, 0x5c, 0xe0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xa9, 0xc3, 0x64, 0xe0, 0xaa, 0x0e, 0xad, 0x1b, 0x14, 0x1d, 0xb4, 0x1b, 0x34, 0x55, 0x94, 0xb5, 0xe1, 0xf3, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa4, 0x0e, 0xf3, 0x81, 0x93, 0x3a, 0x14, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xa9, 0xc3, 0x7e, 0xe0, 0xa4, 0x0e, 0x5d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xea, 0x50, 0x30, 0x70, 0x52, 0x87, 0xa2, 0x0d, 0x0f, 0x4a, 0x6e, 0xf0, 0x22, 0xfa, 0xe0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xa9, 0x43, 0xc7, 0xc1, 0xeb, 0xf7, 0xe0, 0x0f, 0x5e, 0x6d, 0x2d, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xd4, 0xa1, 0x69, 0xe0, 0xa4, 0x0e, 0x55, 0x87, 0xf7, 0x82, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xea, 0x50, 0x36, 0x70, 0x52, 0x87, 0xbe, 0x83, 0xd2, 0xcf, 0xb8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xa9, 0xc3, 0xe4, 0xe0, 0xb9, 0x72, 0xf0, 0x1b, 0x14, 0x1d, 0xb4, 0x1b, 0x14, 0xb5, 0xc5, 0x1b, 0x3e, 0x0f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xea, 0x30, 0x1f, 0xb8, 0xa9, 0x43, 0xe1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x3a, 0xec, 0x07, 0x6e, 0xea, 0xd0, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa6, 0x0e, 0x05, 0x03, 0x37, 0x75, 0x28, 0xda, 0xf0, 0xa0, 0xe4, 0x06, 0x2f, 0xa2, 0x0f, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x9b, 0x3a, 0x74, 0x1c, 0xbc, 0x18, 0x12, 0xfe, 0xe0, 0x71, 0x62, 0xc2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x4d, 0x1d, 0x9a, 0x06, 0x6e, 0xea, 0x50, 0x75, 0x78, 0x2f, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa6, 0x0e, 0x65, 0x03, 0x37, 0x75, 0xe8, 0x3b, 0x28, 0xfd, 0x8c, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x3a, 0x4c, 0x0e, 0x9e, 0x2b, 0x07, 0xbf, 0x41, 0xd1, 0x41, 0xbb, 0x41, 0xdb, 0x65, 0x9f, 0x1b, 0x3e, 0x0f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xea, 0x30, 0x1f, 0x38, 0xaa, 0x43, 0xf3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x3a, 0xec, 0x07, 0x8e, 0xea, 0xd0, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa8, 0x0e, 0x05, 0x03, 0x47, 0x75, 0x28, 0xda, 0xf0, 0xa0, 0xe4, 0x06, 0x2f, 0xa2, 0x0f, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa3, 0x3a, 0x74, 0x1c, 0xbc, 0xb4, 0x14, 0x7e, 0xc3, 0xdb, 0x3a, 0x8b, 0xe3, 0x1c, 0xac, 0x1f, 0xae, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xaa, 0x43, 0xd3, 0xc0, 0x51, 0x1d, 0xaa, 0x0e, 0xef, 0x05, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x47, 0x75, 0xe8, 0x1a, 0x38, 0xaa, 0x43, 0xe5, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xbb, 0xec, 0xf3, 0x60, 0x4d, 0x3c, 0x69, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x51, 0x1d, 0x4a, 0x07, 0x8e, 0xea, 0x50, 0xbc, 0xe1, 0x6d, 0x9d, 0xc5, 0x71, 0x0e, 0x8a, 0xda, 0xe2, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xab, 0x3a, 0x4c, 0x0e, 0x9e, 0x2b, 0x07, 0xbf, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xaa, 0x0e, 0x9b, 0x81, 0xab, 0x3a, 0x54, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xaa, 0xc3, 0x68, 0xe0, 0xaa, 0x0e, 0xdb, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x68, 0x6f, 0xf0, 0xc1, 0x9a, 0x78, 0xd2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xaa, 0x0e, 0xe3, 0x81, 0xab, 0x3a, 0x34, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xaa, 0xc3, 0x7a, 0xe0, 0xaa, 0x0e, 0x25, 0x1b, 0xde, 0xd6, 0x39, 0x78, 0x45, 0x1b, 0xfc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x55, 0x87, 0x96, 0x81, 0xab, 0x3a, 0x14, 0x1d, 0xb4, 0x74, 0x96, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xd5, 0xa1, 0x69, 0xe0, 0xaa, 0x0e, 0x65, 0x07, 0xa5, 0x9f, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x55, 0x87, 0xb6, 0x81, 0xab, 0x3a, 0x14, 0x1e, 0x34, 0x8c, 0x7e, 0x5a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x55, 0x1d, 0x3a, 0x07, 0xae, 0xea, 0x50, 0x7a, 0x78, 0x2f, 0xa8, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x3a, 0x64, 0x03, 0x77, 0x75, 0x18, 0x1c, 0x3c, 0x19, 0x1b, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xea, 0x30, 0x19, 0x38, 0xac, 0x43, 0xdb, 0x06, 0x45, 0x07, 0xed, 0x06, 0x4d, 0x15, 0x65, 0x6d, 0xf8, 0x3c, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xab, 0xc3, 0x7c, 0xe0, 0xae, 0x0e, 0x85, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xea, 0xb0, 0x1f, 0xb8, 0xab, 0x43, 0xd7, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x3a, 0x14, 0x0c, 0xdc, 0xd5, 0xa1, 0x68, 0xc3, 0x83, 0x92, 0x1b, 0xbc, 0x88, 0x3e, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xea, 0xd0, 0x71, 0xf0, 0x86, 0x6e, 0xf8, 0x83, 0x57, 0x5b, 0x0b, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x75, 0x68, 0x1a, 0xb8, 0xab, 0x43, 0xd5, 0xe1, 0xbd, 0xa0, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xbb, 0x3a, 0x94, 0x0d, 0xdc, 0xd5, 0xa1, 0xef, 0xa0, 0xf4, 0x33, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xeb, 0x30, 0x39, 0x78, 0xf4, 0x34, 0xfc, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xc3, 0x3a, 0x6c, 0x06, 0x0e, 0xeb, 0x50, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb0, 0x0e, 0xa3, 0x81, 0xc3, 0x3a, 0x6c, 0x0f, 0x1e, 0xc8, 0x0b, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xd6, 0x61, 0x3c, 0x70, 0x58, 0x87, 0xa6, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x75, 0x58, 0x0f, 0x1c, 0xd6, 0xa1, 0xe4, 0xe0, 0x05, 0xc3, 0xf0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x61, 0x1d, 0x5a, 0x06, 0x0e, 0xeb, 0x50, 0x74, 0xd0, 0xd2, 0x59, 0x56, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x75, 0xe8, 0x1a, 0x38, 0xac, 0x43, 0xd9, 0xe1, 0xbd, 0xa0, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xeb, 0x90, 0x0d, 0x9c, 0xd6, 0x61, 0x70, 0xf0, 0x44, 0x64, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xad, 0xc3, 0x64, 0xe0, 0xba, 0x0e, 0xad, 0x1b, 0x14, 0x1d, 0xb4, 0x1b, 0x34, 0x55, 0x94, 0xb5, 0xe1, 0xf3, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb4, 0x0e, 0xf3, 0x81, 0xd3, 0x3a, 0x14, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xad, 0xc3, 0x7e, 0xe0, 0xb4, 0x0e, 0x5d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xeb, 0x50, 0x30, 0x70, 0x5a, 0x87, 0xa2, 0x0d, 0x0f, 0x4a, 0x6e, 0xf0, 0x22, 0xfa, 0xe0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xad, 0x43, 0xc7, 0xc1, 0x6b, 0x10, 0xe2, 0x0f, 0x5e, 0x6d, 0x2d, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xd6, 0xa1, 0x69, 0xe0, 0xb4, 0x0e, 0x55, 0x87, 0xf7, 0x82, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xeb, 0x50, 0x36, 0x70, 0x5a, 0x87, 0xbe, 0x83, 0xd2, 0xcf, 0xb8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xad, 0xc3, 0xe4, 0xe0, 0xf9, 0xfe, 0xf0, 0x1b, 0x14, 0x1d, 0xb4, 0x03, 0x1e, 0x59, 0x58, 0xbb, 0xe1, 0xf3, 0xa0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb6, 0x0e, 0xf3, 0x81, 0xdb, 0x3a, 0x14, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xad, 0xc3, 0x7e, 0xe0, 0xb6, 0x0e, 0x5d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xeb, 0x50, 0x30, 0x70, 0x5b, 0x87, 0xa2, 0x0d, 0x0f, 0x4a, 0x6e, 0xf0, 0x22, 0xfa, 0xe0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xad, 0x43, 0xc7, 0xc1, 0x2b, 0x3a, 0xe2, 0x0f, 0x5e, 0x6d, 0x2d, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0xdc, 0xd6, 0xa1, 0x69, 0xe0, 0xb6, 0x0e, 0x55, 0x87, 0xf7, 0x82, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xeb, 0x50, 0x36, 0x70, 0x5b, 0x87, 0xbe, 0x83, 0xd2, 0xcf, 0xb8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xae, 0xc3, 0xe4, 0xe0, 0xf9, 0xfe, 0xf0, 0x1b, 0x14, 0x1d, 0xb4, 0x1b, 0x14, 0xb5, 0xc5, 0x1b, 0x3e, 0x0f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8e, 0xeb, 0x30, 0x1f, 0x38, 0xae, 0x43, 0xe1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe3, 0x3a, 0xec, 0x07, 0x8e, 0xeb, 0xd0, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb8, 0x0e, 0x05, 0x03, 0xc7, 0x75, 0x28, 0xda, 0xf0, 0xa0, 0xe4, 0x06, 0x2f, 0xa2, 0x0f, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe3, 0x3a, 0x74, 0x1c, 0xbc, 0x3c, 0x26, 0xfe, 0xe0, 0x71, 0x62, 0xc2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x71, 0x1d, 0x9a, 0x06, 0x8e, 0xeb, 0x50, 0x75, 0x78, 0x2f, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xb8, 0x0e, 0x65, 0x03, 0xc7, 0x75, 0xe8, 0x3b, 0x28, 0xfd, 0x8c, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xeb, 0x3a, 0x4c, 0x0e, 0x9e, 0xef, 0x0f, 0xbf, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xba, 0x0e, 0x9b, 0x81, 0xeb, 0x3a, 0x54, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xae, 0xc3, 0x68, 0xe0, 0xba, 0x0e, 0xdb, 0x83, 0x07, 0xf2, 0xc2, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd7, 0x75, 0x18, 0x0f, 0x5c, 0xd7, 0xa1, 0x71, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x75, 0x1d, 0xd6, 0x03, 0xd7, 0x75, 0x28, 0x39, 0x78, 0xc1, 0x30, 0xfc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x5d, 0x87, 0x96, 0x81, 0xeb, 0x3a, 0x14, 0x1d, 0xb4, 0x74, 0x96, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xd7, 0xa1, 0x69, 0xe0, 0xba, 0x0e, 0x65, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xc8, 0xc2, 0xda, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xeb, 0x3a, 0xb4, 0x0d, 0x5c, 0xd7, 0xa1, 0xf0, 0xa0, 0xf4, 0x33, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xba, 0x0e, 0x9d, 0x03, 0xd7, 0x75, 0x28, 0x3d, 0xbc, 0x17, 0x54, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x5f, 0xc7, 0x1f, 0xbc, 0x1e, 0x05, 0x7e, 0x83, 0x82, 0x34, 0x76, 0x83, 0xb6, 0x66, 0x0b, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x03, 0x3b, 0x24, 0x03, 0x07, 0x76, 0xe8, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x60, 0x87, 0x68, 0xe0, 0xc0, 0x0e, 0xe9, 0x41, 0x91, 0x89, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xd8, 0x21, 0x1e, 0x38, 0xb0, 0xc3, 0x68, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x81, 0x1d, 0xf2, 0x81, 0x03, 0x3b, 0x0c, 0x0e, 0x0f, 0xde, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x76, 0x58, 0x0c, 0x1c, 0xd8, 0x61, 0x73, 0x90, 0xa6, 0xe2, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x60, 0x87, 0xd5, 0xc0, 0x81, 0x1d, 0xaa, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xd8, 0x61, 0x36, 0x70, 0x60, 0x87, 0xe5, 0x41, 0xc9, 0xef, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xd8, 0x61, 0x3a, 0x70, 0x60, 0x87, 0xe6, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x76, 0xd8, 0x0e, 0x1c, 0xd8, 0x61, 0x7e, 0x50, 0x12, 0xcd, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x76, 0xd8, 0x0f, 0x1c, 0xd8, 0xa1, 0xe2, 0x20, 0x59, 0xae, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xb0, 0x43, 0xc7, 0xc0, 0x81, 0x1d, 0x4a, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xd8, 0xa1, 0x64, 0xe0, 0xc0, 0x0e, 0x7d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xec, 0xd0, 0x32, 0x70, 0x60, 0x87, 0xa2, 0x83, 0x05, 0x9c, 0xf0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x81, 0x1d, 0x9a, 0x06, 0x0e, 0xec, 0x50, 0x75, 0x78, 0x2f, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xb0, 0x43, 0xd7, 0xc0, 0x81, 0x1d, 0xea, 0x0e, 0x92, 0xe5, 0x8a, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xec, 0x50, 0x38, 0x70, 0x60, 0x87, 0xce, 0x83, 0x13, 0xfd, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x81, 0x1d, 0x5a, 0x07, 0x0e, 0xec, 0x50, 0x7c, 0x50, 0xfa, 0x19, 0x57, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x63, 0xc7, 0x1f, 0xbc, 0x1e, 0x05, 0x7e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x8d, 0x1d, 0x82, 0x81, 0x1b, 0x3b, 0x64, 0x07, 0xed, 0xf3, 0x80, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x37, 0x76, 0x08, 0x07, 0x6e, 0xec, 0x90, 0x1e, 0x9e, 0xde, 0x69, 0x16, 0xf8, 0x32, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xe7, 0xf8, 0x81, 0x4b, 0x3a, 0x0c, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xce, 0x21, 0x1b, 0xb8, 0x9c, 0xc3, 0x66, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0x5c, 0xd8, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x97, 0x73, 0xc8, 0x0f, 0x1e, 0x47, 0x19, 0x7f, 0xf0, 0xcc, 0x1f, 0xf8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x9d, 0xe3, 0x0f, 0x1e, 0x1c, 0x19, 0xbf, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x74, 0x0e, 0xd9, 0xc0, 0xe9, 0x1c, 0xf2, 0x83, 0x87, 0xc5, 0x8c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xed, 0x1c, 0x7f, 0xf0, 0xe0, 0xc8, 0xf8, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0xd0, 0x58, 0x73, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x3b, 0x87, 0xc1, 0xc0, 0xed, 0x1c, 0x66, 0x1b, 0x2e, 0xa9, 0x35, 0xa4, 0x0e, 0x06, 0x3c, 0xb8, 0xb0, 0xb5, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x78, 0x8e, 0x3f, 0x78, 0x70, 0x64, 0xfc, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0xf0, 0xc4, 0xde, 0xc8, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x78, 0x0e, 0xf9, 0xc0, 0xf1, 0x1c, 0x36, 0x07, 0x0f, 0x8b, 0x19, 0x3d, 0x08, 0xd3, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7a, 0x0e, 0xc9, 0xc0, 0x05, 0x1d, 0xb2, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0xc6, 0x9a, 0xb3, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xe7, 0x90, 0x0d, 0x9c, 0xcf, 0x61, 0x70, 0xf0, 0x06, 0x5c, 0xe0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x9f, 0xc3, 0x64, 0xe0, 0x7c, 0x0e, 0x37, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xcf, 0x61, 0x33, 0x70, 0x3e, 0x87, 0x8e, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x73, 0x18, 0x0d, 0x9c, 0xcf, 0x61, 0xbc, 0xe1, 0x41, 0xc9, 0x0d, 0x9e, 0xa1, 0x1e, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x73, 0xd8, 0x1d, 0xbc, 0x3d, 0x37, 0xfe, 0xe0, 0xd5, 0xd6, 0xc2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf9, 0x1c, 0xd6, 0x03, 0xe7, 0x73, 0xa8, 0xd8, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xc1, 0x13, 0x49, 0xe3, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xe7, 0x50, 0x32, 0x70, 0x3e, 0x87, 0xd2, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xe7, 0x73, 0x68, 0x19, 0x38, 0x9f, 0x43, 0xdb, 0x86, 0x07, 0x25, 0x37, 0x78, 0x86, 0x7a, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xcf, 0xa1, 0xe8, 0xe0, 0x51, 0xc6, 0xf1, 0x07, 0x8f, 0x13, 0x13, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xce, 0xe7, 0x50, 0x37, 0x70, 0x3e, 0x87, 0xce, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x3c, 0x91, 0x34, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7c, 0x0e, 0xad, 0x03, 0xe7, 0x73, 0x78, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7c, 0x0e, 0xb5, 0x03, 0xe7, 0x73, 0xa8, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0xcf, 0x50, 0x0f, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xf3, 0x39, 0x34, 0x1f, 0xbc, 0x58, 0x3a, 0xfe, 0xe0, 0x79, 0xa9, 0xf0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf9, 0x1c, 0xfa, 0x07, 0xce, 0xe7, 0x70, 0x62, 0xc3, 0xdb, 0x3a, 0x83, 0xcb, 0x07, 0x4f, 0x24, 0x8d, 0xaf, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfb, 0x39, 0x64, 0x03, 0xf7, 0x73, 0x18, 0x1c, 0x3c, 0x19, 0x1b, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xe7, 0x30, 0x19, 0xb8, 0x9f, 0x43, 0xc5, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfb, 0x39, 0x6c, 0x06, 0xee, 0xe7, 0xb0, 0xdd, 0xf0, 0xa0, 0xe4, 0x06, 0xcf, 0x50, 0x0f, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xfb, 0x39, 0xcc, 0x0e, 0x9e, 0x20, 0x1e, 0x7f, 0xf0, 0x6a, 0x6b, 0xe1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x7e, 0x0e, 0xe3, 0x81, 0xfb, 0x39, 0x34, 0x1c, 0x3c, 0x12, 0x38, 0xbe, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x03, 0x3a, 0x64, 0x03, 0x07, 0x74, 0x18, 0x1c, 0x3c, 0x11, 0x19, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xe8, 0x30, 0x19, 0x38, 0xa0, 0xc3, 0x8d, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x74, 0xd8, 0x0c, 0x1c, 0xd0, 0xa1, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x01, 0x1d, 0x46, 0x03, 0x07, 0x74, 0x18, 0x6f, 0x78, 0x50, 0x72, 0x83, 0x67, 0xa8, 0x07, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x01, 0x1d, 0x76, 0x07, 0x2f, 0x9a, 0x8f, 0x3f, 0x78, 0xb5, 0xb5, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x40, 0x87, 0xf5, 0xc0, 0x01, 0x1d, 0x2a, 0x0e, 0x1e, 0x09, 0x1c, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x40, 0x87, 0x92, 0x81, 0x03, 0x3a, 0x94, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xa0, 0x43, 0xcb, 0xc0, 0x01, 0x1d, 0xda, 0x36, 0x3c, 0x28, 0xb9, 0xc1, 0x33, 0xd4, 0x83, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x80, 0x0e, 0x45, 0x07, 0xef, 0xf7, 0x8f, 0x3f, 0x78, 0xb5, 0xb5, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x40, 0x87, 0xba, 0x81, 0x03, 0x3a, 0x74, 0x1e, 0x3c, 0xa0, 0x39, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x80, 0x0e, 0xad, 0x03, 0x07, 0x74, 0x78, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x80, 0x0e, 0xb5, 0x03, 0x07, 0x74, 0xa8, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0xcf, 0x50, 0x0f, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x03, 0x3a, 0x34, 0x1f, 0xbc, 0x58, 0x41, 0xfe, 0xe0, 0x71, 0x62, 0xc2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x01, 0x1d, 0xfa, 0x07, 0x0e, 0xe8, 0x70, 0xe2, 0xe0, 0x79, 0xd9, 0xf1, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x9c, 0xd0, 0xf1, 0x07, 0x0f, 0x8e, 0x8c, 0xdf, 0xa0, 0x20, 0x8d, 0x5d, 0xc3, 0xf7, 0xed, 0x1b, 0xac, 0xe4, 0x25, 0xdd, 0xa0, 0x84, 0x8e, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4e, 0xe8, 0x90, 0x0f, 0x9c, 0xd0, 0x61, 0x73, 0xf0, 0xb0, 0x98, 0xd1, 0x83, 0x30, 0x1d, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6e, 0xe8, 0x90, 0x0c, 0x1c, 0xd2, 0xa1, 0x79, 0x83, 0x82, 0x34, 0x76, 0x0d, 0xdf, 0xb7, 0x6f, 0xd0, 0x76, 0xd9, 0xe7, 0x06, 0x25, 0x74, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x43, 0x87, 0xc5, 0xc0, 0x0d, 0x1d, 0x36, 0x07, 0x2f, 0xaf, 0xca, 0x3e, 0x08, 0xd3, 0xb1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x88, 0x0e, 0xd9, 0xc0, 0x1d, 0x1d, 0xba, 0x36, 0x28, 0x76, 0x34, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x23, 0x3a, 0xe4, 0x03, 0x47, 0x74, 0x18, 0x6f, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x47, 0x74, 0x98, 0x0c, 0x1c, 0xd1, 0x61, 0x77, 0xf0, 0x06, 0x5c, 0xe0, 0x83, 0xc6, 0x9a, 0xb3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x23, 0x3a, 0xcc, 0x07, 0x8e, 0xe8, 0xd0, 0x70, 0xf0, 0x66, 0x12, 0xf0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0xa2, 0x43, 0x76, 0xf0, 0x6e, 0x11, 0xf9, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x5e, 0x9e, 0x1d, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xd1, 0x61, 0x3e, 0x70, 0x45, 0x87, 0x86, 0x83, 0x37, 0x93, 0x80, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x19, 0x1d, 0xb2, 0x83, 0x77, 0x8b, 0xc8, 0x6f, 0x50, 0x0c, 0xc8, 0x2e, 0x38, 0x7d, 0xf0, 0xf2, 0xec, 0xf8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x8c, 0x0e, 0xf3, 0x81, 0x33, 0x3a, 0x54, 0x1c, 0xbc, 0x3a, 0x0c, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xe8, 0x90, 0x1d, 0xbc, 0x5b, 0x44, 0x7e, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1d, 0x1d, 0xe2, 0x81, 0x3b, 0x3a, 0x34, 0x6c, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x77, 0x74, 0x58, 0x0c, 0xdc, 0xd1, 0x61, 0xb8, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x8e, 0x0e, 0x93, 0x81, 0x3b, 0x3a, 0xac, 0x0e, 0xce, 0xe3, 0xad, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1d, 0x1d, 0x66, 0x03, 0x77, 0x74, 0xd8, 0x1d, 0x84, 0xe9, 0x58, 0x83, 0xa7, 0x07, 0x2f, 0xcf, 0x8e, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xe8, 0x50, 0x31, 0x70, 0x47, 0x87, 0x96, 0x83, 0x87, 0x41, 0x81, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1d, 0x1d, 0x6a, 0x06, 0xee, 0xe8, 0x50, 0x75, 0xf0, 0x38, 0x1e, 0xf0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0xa4, 0x43, 0x72, 0xf0, 0xa6, 0x0d, 0xf9, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x74, 0x88, 0x06, 0x0e, 0xe9, 0xb0, 0xd8, 0xf0, 0xa0, 0xe4, 0x06, 0xcf, 0x50, 0x0f, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x3a, 0xa4, 0x07, 0x4f, 0x90, 0x92, 0x3f, 0x58, 0x15, 0x46, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xd2, 0x61, 0x32, 0x70, 0x48, 0x87, 0xd5, 0x41, 0xc3, 0xe8, 0xa7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x21, 0x1d, 0x66, 0x03, 0x87, 0x74, 0x58, 0x1e, 0xb4, 0xc8, 0x9c, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xd2, 0x61, 0x3a, 0x70, 0x48, 0x87, 0x86, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x68, 0x6f, 0xf0, 0xc1, 0x13, 0x49, 0xe3, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x3a, 0x54, 0x0c, 0x1c, 0xd2, 0xa1, 0x78, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x21, 0x1d, 0x3a, 0x06, 0x0e, 0xe9, 0x50, 0x73, 0x50, 0xf2, 0xfb, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x87, 0x74, 0xe8, 0x19, 0x38, 0xa4, 0x43, 0xef, 0x86, 0x07, 0x25, 0x37, 0x38, 0x5d, 0x64, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x21, 0x1d, 0x9a, 0x0e, 0x1e, 0x71, 0x26, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x90, 0x0e, 0x55, 0x03, 0x87, 0x74, 0xa8, 0xdc, 0xf0, 0xa0, 0xe4, 0x06, 0x0f, 0xcf, 0x1b, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x3a, 0xd4, 0x1d, 0xbc, 0xa0, 0x4d, 0xfe, 0xe0, 0x15, 0x74, 0xd8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x21, 0x1d, 0x3a, 0x07, 0x0e, 0xe9, 0x50, 0xbb, 0xe1, 0x6d, 0x9d, 0x01, 0x4f, 0xec, 0x8d, 0xac, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x4b, 0x3a, 0xfe, 0xe0, 0xc1, 0x91, 0xf1, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2e, 0xe9, 0x10, 0x0c, 0x5c, 0xd2, 0x21, 0x3b, 0x58, 0xf8, 0x4e, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x5c, 0xd2, 0x21, 0x1c, 0xb8, 0xa4, 0x43, 0x7e, 0xf0, 0xda, 0x39, 0xf9, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x0d, 0x9e, 0x25, 0xca, 0xbd, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x2c, 0x51, 0xee, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x27, 0xc3, 0x6c, 0xe0, 0x9e, 0x0c, 0x1d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xc9, 0xb0, 0x1b, 0xb8, 0x27, 0xc3, 0x78, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x42, 0x27, 0x64, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xc9, 0x30, 0x3c, 0x78, 0x0c, 0xa1, 0xfc, 0xc1, 0x33, 0x73, 0x42, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x7b, 0x32, 0xac, 0x07, 0xee, 0xc9, 0x50, 0xb1, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0x4b, 0x61, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xf7, 0x64, 0x98, 0x1f, 0x3c, 0x49, 0x51, 0x7e, 0xc3, 0xbf, 0xf3, 0x6b, 0xf0, 0x5e, 0x0a, 0xf3, 0x6a, 0x35, 0x78, 0xdf, 0x4d, 0xf3, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xfb, 0x6e, 0x9a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xa8, 0xc7, 0x0d, 0x94, 0xf7, 0xf8, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x45, 0x3d, 0x24, 0x03, 0x45, 0x3d, 0x34, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x3d, 0x57, 0xe6, 0x46, 0x96, 0xe6, 0x76, 0x06, 0x02, 0x17, 0x36, 0xb6, 0x56, 0x46, 0x37, 0xb7, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0xce, 0x8d, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xa2, 0x1e, 0xd2, 0x81, 0xa2, 0x1e, 0x46, 0x1b, 0x04, 0xd0, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0xf5, 0x10, 0x1f, 0x3c, 0x78, 0x53, 0x7e, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x51, 0x0f, 0xf9, 0x40, 0x51, 0x0f, 0x83, 0xc3, 0x07, 0xab, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xd4, 0xc3, 0xe2, 0xe0, 0xc1, 0x9b, 0xf2, 0x07, 0xcb, 0x9c, 0x64, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xaa, 0x1e, 0x92, 0x81, 0xaa, 0x1e, 0xba, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x41, 0xae, 0x6c, 0xac, 0x2c, 0xcd, 0x2e, 0xcd, 0xed, 0x0c, 0x04, 0x2e, 0x6c, 0x6c, 0xad, 0x8c, 0x6e, 0x6e, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0xdc, 0x98, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x55, 0x3d, 0xa4, 0x03, 0x55, 0x3d, 0x8c, 0x36, 0x08, 0xa0, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xea, 0x21, 0x3e, 0x78, 0x41, 0xab, 0xfc, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xaa, 0x1e, 0xf2, 0x81, 0xaa, 0x1e, 0x06, 0x87, 0x0f, 0x56, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xaa, 0x87, 0xc5, 0xc1, 0x0b, 0x5a, 0xe5, 0x0f, 0x96, 0x39, 0xc9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x65, 0x3d, 0x24, 0x03, 0x65, 0x3d, 0x14, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x5b, 0xe7, 0x56, 0x37, 0x57, 0x17, 0xc6, 0x06, 0x52, 0x66, 0x57, 0xe6, 0x46, 0x37, 0xb7, 0xe1, 0xcf, 0xa5, 0x01, 0xef, 0x8d, 0x8c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xb2, 0x1e, 0xd2, 0x81, 0xb2, 0x1e, 0x46, 0x1b, 0x04, 0xd0, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x94, 0xf5, 0x10, 0x1f, 0x3c, 0xbc, 0x57, 0x7e, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x59, 0x0f, 0xf9, 0x40, 0x59, 0x0f, 0x83, 0xc3, 0x07, 0xab, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xd6, 0xc3, 0xe2, 0xe0, 0xe1, 0xbd, 0xf2, 0x07, 0xcb, 0x9c, 0x64, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xba, 0x1e, 0x92, 0x81, 0xba, 0x1e, 0xea, 0x36, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xa7, 0xad, 0x6c, 0x6e, 0x2e, 0xec, 0xac, 0xac, 0x85, 0xad, 0xcc, 0xae, 0x8c, 0x0d, 0xa4, 0xcc, 0xae, 0xcc, 0x8d, 0x6e, 0x6e, 0xc3, 0x9f, 0x4b, 0x03, 0x5e, 0xdb, 0xdc, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x75, 0x3d, 0xa4, 0x03, 0x75, 0x3d, 0x8c, 0x36, 0x08, 0xa0, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xeb, 0x21, 0x3e, 0x78, 0xe1, 0xb3, 0xfc, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xba, 0x1e, 0xf2, 0x81, 0xba, 0x1e, 0x06, 0x87, 0x0f, 0x56, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xae, 0x87, 0xc5, 0xc1, 0x0b, 0x9f, 0xe5, 0x0f, 0x96, 0x39, 0xc9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x85, 0x3d, 0x24, 0x03, 0x85, 0x3d, 0x94, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xc7, 0xd8, 0x9b, 0xdb, 0x59, 0xd9, 0x1c, 0x5d, 0xda, 0x9b, 0x1b, 0xc8, 0xd8, 0x9b, 0x1b, 0x9d, 0xdc, 0x1b, 0xdb, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb3, 0xb2, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0a, 0x7b, 0x48, 0x07, 0x0a, 0x7b, 0x18, 0x6d, 0x10, 0x40, 0x67, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xd8, 0x43, 0x7c, 0xf0, 0x74, 0x70, 0xf9, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x85, 0x3d, 0xe4, 0x03, 0x85, 0x3d, 0x0c, 0x0e, 0x1f, 0xac, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x61, 0x0f, 0x8b, 0x83, 0xa7, 0x83, 0xcb, 0x1f, 0x2c, 0x73, 0x92, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x7b, 0x48, 0x06, 0x2a, 0x7b, 0xe8, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x07, 0xb8, 0xb0, 0xb1, 0xb5, 0x32, 0x3a, 0x10, 0xb3, 0x37, 0xb9, 0xbb, 0x30, 0x39, 0xb2, 0x34, 0xb7, 0xb3, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x90, 0x1b, 0x7e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x2a, 0x7b, 0x48, 0x07, 0x2a, 0x7b, 0x18, 0x6d, 0x10, 0x40, 0x67, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xd9, 0x43, 0x7c, 0xf0, 0x14, 0x79, 0xf9, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x95, 0x3d, 0xe4, 0x03, 0x95, 0x3d, 0x0c, 0x0e, 0x1f, 0xac, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x65, 0x0f, 0x8b, 0x83, 0xa7, 0xc8, 0xcb, 0x1f, 0x2c, 0x73, 0x92, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x4a, 0x7b, 0x48, 0x06, 0x4a, 0x7b, 0xa8, 0xda, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x5f, 0xee, 0xad, 0x8e, 0x2e, 0xcd, 0xed, 0x0c, 0x24, 0x8c, 0x8e, 0xae, 0xac, 0x0d, 0x8e, 0x6e, 0x6e, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0x79, 0x28, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa5, 0x3d, 0xa4, 0x03, 0xa5, 0x3d, 0x8c, 0x36, 0x08, 0xa0, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xed, 0x21, 0x3e, 0x78, 0xd1, 0xc0, 0xfc, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xd2, 0x1e, 0xf2, 0x81, 0xd2, 0x1e, 0x06, 0x87, 0x0f, 0x56, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xb4, 0x87, 0xc5, 0xc1, 0x8b, 0x06, 0xe6, 0x0f, 0x96, 0x39, 0xc9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x3d, 0x24, 0x03, 0xb5, 0x3d, 0xd4, 0x6d, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0x4f, 0xda, 0x1c, 0xc8, 0xdb, 0xda, 0x8b, 0xdb, 0x1b, 0x1d, 0x88, 0x5c, 0xd9, 0x1c, 0xdc, 0x9b, 0x1b, 0x59, 0x9a, 0xdb, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb5, 0xb0, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x6a, 0x7b, 0x48, 0x07, 0x6a, 0x7b, 0x18, 0x6d, 0x10, 0x40, 0x67, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0xdb, 0x43, 0x7c, 0xf0, 0x74, 0x8a, 0xf9, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xb5, 0x3d, 0xe4, 0x03, 0xb5, 0x3d, 0x0c, 0x0e, 0x1f, 0xac, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x6d, 0x0f, 0x8b, 0x83, 0xa7, 0x53, 0xcc, 0x1f, 0x2c, 0x73, 0x92, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x8a, 0x7b, 0x48, 0x06, 0x8a, 0x7b, 0x68, 0xd9, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0xc0, 0x4b, 0xae, 0xac, 0xed, 0x8d, 0xae, 0xac, 0x65, 0x6e, 0x4c, 0x2e, 0x6f, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0xb4, 0x59, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xc5, 0x3d, 0xa4, 0x03, 0xc5, 0x3d, 0x8c, 0x36, 0x08, 0xa0, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0xee, 0x21, 0x3e, 0x78, 0x59, 0xc9, 0xfc, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xe2, 0x1e, 0xf2, 0x81, 0xe2, 0x1e, 0x06, 0x87, 0x0f, 0x56, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xb8, 0x87, 0xc5, 0xc1, 0xcb, 0x4a, 0xe6, 0x0f, 0x96, 0x39, 0xc9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd5, 0x3d, 0x24, 0x03, 0xd5, 0x3d, 0xcc, 0x37, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xfc, 0x29, 0xaa, 0x2a, 0xa7, 0x0d, 0x7f, 0x2e, 0x6d, 0x90, 0x42, 0x7c, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xd5, 0x3d, 0xa4, 0x03, 0xd5, 0x3d, 0x8c, 0x36, 0x08, 0xa0, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0xee, 0x21, 0x3e, 0x78, 0x39, 0xcd, 0xfc, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0xea, 0x1e, 0xf2, 0x81, 0xea, 0x1e, 0x06, 0x87, 0x0f, 0x56, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0xba, 0x87, 0xc5, 0xc1, 0xcb, 0x69, 0xe6, 0x0f, 0x96, 0x39, 0xc9, 0x76, 0x38, 0xc5, 0xd6, 0xe0, 0x41, 0x7e, 0xdc, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x0f, 0xf2, 0xe3, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x32, 0xcc, 0x06, 0x0e, 0xca, 0xf0, 0x65, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x41, 0x19, 0x76, 0x03, 0x07, 0x65, 0x68, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0x8f, 0x6c, 0x03, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x32, 0x0c, 0x0f, 0x5e, 0x4c, 0x34, 0x7f, 0xf0, 0xbc, 0xa6, 0xe1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0xa0, 0x0c, 0x35, 0x03, 0x07, 0x65, 0xe8, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x8f, 0xb1, 0xb1, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x32, 0xf4, 0x1c, 0xbc, 0x5c, 0x69, 0xfe, 0xe0, 0x6d, 0xba, 0x8e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x41, 0x19, 0xca, 0x06, 0x0e, 0xca, 0xd0, 0xb8, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0x44, 0xeb, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x65, 0x68, 0x3b, 0x78, 0x42, 0xd4, 0xfc, 0xc1, 0x1b, 0x6c, 0x1d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x83, 0x32, 0x54, 0x0e, 0x1c, 0x94, 0xa1, 0x7d, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0xad, 0x6b, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xca, 0xd0, 0x79, 0xf0, 0x96, 0xab, 0xf9, 0x83, 0x87, 0x84, 0x0d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x07, 0x65, 0xa8, 0x1f, 0x38, 0x28, 0xc3, 0x95, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x60, 0x3a, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x28, 0xc3, 0x8d, 0x83, 0x47, 0x75, 0xcd, 0x1f, 0xb4, 0x6d, 0x3d, 0xde, 0xe1, 0x14, 0x5b, 0x83, 0xa7, 0xb3, 0x35, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xe9, 0x19, 0x37, 0x70, 0x89, 0xc6, 0x6f, 0x50, 0x4a, 0x88, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0xa7, 0x67, 0x48, 0x06, 0xce, 0xd0, 0x90, 0x6d, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0x78, 0x6c, 0x73, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0x9f, 0x21, 0x1b, 0xb8, 0x42, 0x43, 0xba, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0x2c, 0xc0, 0x6f, 0x57, 0x26, 0x97, 0x66, 0x96, 0x56, 0x26, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0xf9, 0x19, 0xd2, 0x81, 0x23, 0x34, 0xe4, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0x84, 0x71, 0xc6, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0x41, 0x18, 0x67, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x01, 0x1a, 0xf2, 0x81, 0x1b, 0x34, 0x2c, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x1c, 0xa0, 0x61, 0x33, 0x70, 0x80, 0x86, 0xf5, 0x86, 0x3f, 0x97, 0x06, 0xf8, 0xd8, 0xca, 0xc2, 0xec, 0xca, 0xe6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x38, 0x40, 0xc3, 0xf4, 0xe0, 0x35, 0x76, 0xf3, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x81, 0x86, 0xcd, 0xc0, 0x05, 0x1a, 0xe6, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0x39, 0xa8, 0xee, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x81, 0x86, 0xed, 0xc1, 0x3b, 0xf9, 0xe6, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xe0, 0x04, 0x0d, 0x9b, 0x81, 0x13, 0x34, 0x14, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0x47, 0x44, 0xce, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x09, 0x1a, 0x96, 0x07, 0x0f, 0x15, 0x9c, 0xdf, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x34, 0x4c, 0x07, 0x4e, 0xd0, 0xb0, 0x3e, 0x28, 0x11, 0xeb, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x34, 0xcc, 0x07, 0x4e, 0xd0, 0xd0, 0x70, 0x50, 0x66, 0xe9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x27, 0x68, 0xa8, 0x18, 0x38, 0x41, 0x43, 0xdf, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x34, 0x74, 0x0c, 0x9c, 0xa0, 0xa1, 0x68, 0xc3, 0x9f, 0x4b, 0x83, 0xb3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x82, 0x86, 0x96, 0x83, 0xb7, 0x43, 0xce, 0x1f, 0x1c, 0x5b, 0x4a, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x13, 0x34, 0x34, 0x0d, 0x9c, 0xa0, 0xa1, 0x6e, 0xc3, 0x9f, 0x4b, 0x83, 0xcb, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x82, 0x86, 0xae, 0x83, 0xb7, 0x5a, 0xce, 0x1f, 0x1c, 0x5b, 0x4a, 0xab, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0xee, 0xd0, 0xb8, 0x83, 0x57, 0x91, 0xcd, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0xc0, 0x1d, 0x1a, 0x92, 0x81, 0x3b, 0x34, 0xec, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0xf2, 0xc8, 0xd8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xb8, 0x43, 0x43, 0x7a, 0xf0, 0xc0, 0xd0, 0xf9, 0x0d, 0xff, 0xce, 0x6f, 0x10, 0xc2, 0x19, 0x6b, 0xf0, 0xee, 0xb5, 0xf9, 0x16, 0xf0, 0xd8, 0xe6, 0xe6, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0x22, 0x46, 0x9b, 0x05, 0x0e, 0xd1, 0x90, 0x0c, 0x1c, 0xa2, 0x61, 0xb6, 0xe1, 0xcf, 0xa5, 0x01, 0xdf, 0x2c, 0xec, 0x6c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x34, 0xc4, 0x07, 0x6f, 0x49, 0x9d, 0xdf, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x43, 0x34, 0xe4, 0x03, 0x87, 0x68, 0xd8, 0x1c, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x70, 0x88, 0x86, 0xd1, 0xc0, 0x21, 0x1a, 0x56, 0x87, 0x1f, 0x6a, 0xea, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x90, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x17, 0xd1, 0x3a, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x25, 0xf2, 0x6c, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x3d, 0x87, 0x96, 0x06, 0x07, 0x32, 0xf6, 0xe6, 0x46, 0x97, 0xe6, 0x56, 0x97, 0x46, 0x97, 0x77, 0x50, 0x66, 0xe9, 0x1e, 0x4e, 0xb1, 0x05, 0x96, 0xf7, 0x37, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0x5e, 0xbd, 0x55, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x75, 0x20, 0x64, 0x03, 0x85, 0x20, 0x34, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x40, 0x1d, 0x08, 0xf9, 0x40, 0x1d, 0x08, 0x9b, 0x83, 0xd2, 0x9b, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x03, 0x61, 0x35, 0x50, 0x07, 0xc2, 0x99, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0xc7, 0xc2, 0xe6, 0xc6, 0xc2, 0xc8, 0xd2, 0xdc, 0xce, 0x40, 0xe6, 0xe8, 0xf2, 0xd8, 0xca, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x0e, 0x84, 0xd9, 0x40, 0x1d, 0x08, 0xd3, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0xa8, 0x03, 0x61, 0x3b, 0x50, 0x07, 0xc2, 0xfe, 0xe0, 0xbd, 0x79, 0x77, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x85, 0x20, 0x64, 0x07, 0x2f, 0xf0, 0x9d, 0xdf, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0x88, 0xd1, 0x66, 0x81, 0x42, 0x10, 0xc2, 0x81, 0x42, 0x10, 0x06, 0x07, 0xa5, 0x37, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x08, 0xc2, 0x62, 0xa0, 0x10, 0x84, 0xf1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x45, 0x8c, 0x36, 0x0b, 0x14, 0x82, 0x30, 0x19, 0x28, 0x04, 0x61, 0x76, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x11, 0xa3, 0xcd, 0x02, 0x85, 0x20, 0xec, 0x06, 0x0a, 0x41, 0xd8, 0x1e, 0xbc, 0x53, 0xf0, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0xa0, 0x10, 0x84, 0xf5, 0x40, 0x21, 0x08, 0x45, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x17, 0x31, 0xda, 0x2c, 0x50, 0x08, 0xc2, 0x7c, 0xa0, 0x10, 0x84, 0x8a, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x8b, 0x18, 0x6d, 0x16, 0x28, 0x04, 0xa1, 0x63, 0xa0, 0x10, 0x84, 0x9e, 0x83, 0x77, 0x0a, 0xde, 0x55, 0x87, 0x53, 0x6c, 0x83, 0xc6, 0xb5, 0x45, 0x36, 0x68, 0x26, 0x5b, 0x64, 0xd9, 0x70, 0x28, 0x2c, 0xb3, 0x06, 0x2f, 0xa2, 0x75, 0x3c, 0x78, 0x08, 0xed, 0xfc, 0x6a, 0xf0, 0x2a, 0x89, 0xb7, 0x83, 0x57, 0xf9, 0xc0, 0xce, 0x1a, 0xbc, 0xfe, 0x00, 0xf1, 0xe0, 0x91, 0x06, 0x88, 0xb3, 0x06, 0x8f, 0x5d, 0x88, 0x39, 0x78, 0x4c, 0x19, 0xe2, 0xac, 0xc1, 0x33, 0x35, 0x34, 0x0f, 0x9e, 0x93, 0xa1, 0x79, 0x38, 0xc5, 0xd6, 0xa0, 0x6d, 0xc7, 0xa6, 0x83, 0xd7, 0xa5, 0x8b, 0xae, 0x00, 0x5e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x2d, 0x6d, 0x61, 0xf0, 0xc1, 0x63, 0xfe, 0x26, 0x57, 0x83, 0xe7, 0x86, 0x55, 0x1e, 0xbc, 0x0a, 0xac, 0xf2, 0x70, 0x8a, 0xad, 0xc1, 0xf3, 0x8b, 0x48, 0x0e, 0xde, 0x6f, 0x2e, 0xba, 0x1a, 0x3c, 0x4e, 0x20, 0xe6, 0xe0, 0x71, 0x87, 0x77, 0x87, 0x53, 0x6c, 0x0d, 0x1e, 0x71, 0x10, 0x73, 0xf0, 0x56, 0xc7, 0xc4, 0x59, 0x83, 0x67, 0x0c, 0xde, 0x1d, 0xbc, 0x0d, 0xaf, 0x72, 0x35, 0x78, 0x19, 0xba, 0xdc, 0xc1, 0xcb, 0x05, 0x32, 0x0f, 0xa7, 0xd8, 0x1a, 0xbc, 0x8f, 0x20, 0xe6, 0xe0, 0x55, 0x97, 0xb8, 0xab, 0xc1, 0x63, 0x4e, 0xec, 0x0e, 0x1e, 0x65, 0x62, 0xb7, 0x1a, 0x3c, 0x7c, 0x0d, 0xf4, 0xe0, 0x35, 0x0e, 0x99, 0x87, 0x53, 0x6c, 0x0d, 0x9e, 0x63, 0x88, 0x78, 0xf0, 0xd6, 0x74, 0xb9, 0x59, 0x83, 0x17, 0xf2, 0xd6, 0x1d, 0x3c, 0x64, 0xb7, 0xee, 0x70, 0x8a, 0xad, 0xc1, 0xc3, 0xde, 0x27, 0x0f, 0xde, 0xdf, 0x3e, 0xb9, 0x1a, 0x3c, 0xc6, 0xc6, 0xee, 0xe0, 0x51, 0x35, 0x76, 0x87, 0x53, 0xac, 0x35, 0x78, 0x66, 0xb2, 0xdd, 0xc1, 0x53, 0x3e, 0x2b, 0x57, 0x83, 0x27, 0xf9, 0xc3, 0x1c, 0xbc, 0xac, 0x82, 0x77, 0x35, 0x78, 0x09, 0x7b, 0xd0, 0xc1, 0x73, 0xb3, 0x45, 0x0f, 0xa7, 0xd8, 0x1a, 0xbc, 0x34, 0x21, 0xe6, 0xe0, 0xb1, 0x50, 0xb0, 0xab, 0xc1, 0xcb, 0xe9, 0x29, 0x0f, 0x5e, 0x38, 0x4f, 0xb9, 0x1a, 0xbc, 0x7a, 0xab, 0xf2, 0xe0, 0xe9, 0xba, 0xf3, 0xab, 0xc1, 0x93, 0x71, 0x34, 0x0f, 0x5e, 0x76, 0xa3, 0xb9, 0x1a, 0x3c, 0x50, 0xe0, 0xee, 0xe0, 0x11, 0x88, 0xa2, 0xab, 0xc1, 0xe3, 0x63, 0x0e, 0x0f, 0x1e, 0x11, 0x73, 0x78, 0x38, 0xc5, 0x6a, 0x0d, 0x5e, 0x8a, 0x81, 0x71, 0xf0, 0xae, 0xf9, 0xdd, 0xc3, 0x29, 0xb6, 0x80, 0xd7, 0xf6, 0x06, 0x1f, 0xbc, 0x33, 0x70, 0x72, 0x05, 0xfe, 0xcd, 0x3d, 0x78, 0x9f, 0x1b, 0xe9, 0x6a, 0xf0, 0x04, 0x67, 0xb0, 0x83, 0x87, 0x7a, 0x6b, 0xae, 0x06, 0xaf, 0xac, 0x13, 0x3d, 0x78, 0x2d, 0x9d, 0xe8, 0xe1, 0x14, 0x5b, 0x83, 0xd7, 0xa5, 0xdd, 0x1d, 0xbc, 0x12, 0xed, 0xee, 0x70, 0x8a, 0x55, 0x6b, 0xf0, 0x2e, 0x80, 0x98, 0x83, 0x17, 0x06, 0x1d, 0xae, 0x06, 0x6f, 0x93, 0x88, 0x39, 0x78, 0x0a, 0x04, 0xe5, 0x6a, 0xf0, 0x2c, 0x88, 0x98, 0x83, 0x97, 0xf0, 0xd8, 0x1d, 0x4e, 0xb1, 0xd6, 0xe0, 0xad, 0x45, 0x95, 0x07, 0x6f, 0x26, 0xaa, 0x5c, 0x0d, 0x5e, 0xe4, 0x10, 0x73, 0xf0, 0x86, 0x9d, 0xcd, 0xd5, 0xe0, 0xe9, 0xd9, 0x72, 0x07, 0x4f, 0xc8, 0x96, 0x3b, 0x9c, 0x62, 0x75, 0x38, 0xc5, 0xd6, 0x60, 0x8d, 0xc7, 0xfe, 0x06, 0xeb, 0x97, 0xf8, 0x37, 0x68, 0x61, 0x11, 0x60, 0x0d, 0x1a, 0x57, 0x05, 0x58, 0x41, 0xb0, 0x41, 0x93, 0x88, 0x02, 0x8b, 0x83, 0x60, 0x71, 0x83, 0x46, 0x19, 0x05, 0x36, 0x68, 0x6a, 0x58, 0x60, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xec, 0x86, 0x5d, 0x83, 0x0d, 0xe3, 0x32, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0x01, 0x30, 0x30, 0x08, 0x36, 0x68, 0x9a, 0x60, 0x60, 0x90, 0x6d, 0xd0, 0x60, 0xc2, 0xc0, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x6c, 0xd0, 0x80, 0xcf, 0xc0, 0x86, 0xdc, 0xf7, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x06, 0xab, 0xba, 0x17, 0x36, 0x18, 0x0d, 0xbe, 0x1b, 0xac, 0xd1, 0x56, 0xd8, 0x60, 0x8d, 0xb6, 0xc2, 0x06, 0xa3, 0xc1, 0x77, 0x83, 0x21, 0xf5, 0xbb, 0x41, 0x1b, 0x5c, 0x03, 0x1b, 0xa4, 0xbd, 0x54, 0x0f, 0x82, 0x15, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xd1, 0xaf, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0d, 0x92, 0x0d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0xb0, 0xa0, 0x61, 0x6a, 0x83, 0xc6, 0xd8, 0x06, 0x66, 0x0d, 0x73, 0x3f, 0x78, 0xb8, 0x61, 0xe2, 0x36, 0x68, 0x2c, 0x6e, 0x60, 0xc3, 0xc4, 0xad, 0xc1, 0x82, 0x86, 0xa9, 0x0d, 0xda, 0xb0, 0x1b, 0x58, 0x0d, 0x73, 0x3f, 0x38, 0xbb, 0x61, 0xe2, 0x36, 0x68, 0x2c, 0x6e, 0x60, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0x67, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0x60, 0x6f, 0xdb, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0xb9, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x28, 0xa6, 0x1b, 0xb4, 0x75, 0x38, 0xb0, 0xc1, 0x82, 0x86, 0xa9, 0x0d, 0x1a, 0x63, 0x1b, 0x58, 0x0d, 0x73, 0x3f, 0x78, 0xb8, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x83, 0xbb, 0x1b, 0x26, 0x6e, 0x83, 0xb6, 0x1e, 0x07, 0x36, 0x14, 0xd3, 0xd5, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0xb9, 0x61, 0x86, 0x36, 0x94, 0xd2, 0x0d, 0x27, 0xc2, 0x86, 0x52, 0xba, 0x86, 0x73, 0x64, 0x83, 0x44, 0x07, 0xe6, 0x15, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x2e, 0xe0, 0xfb, 0x99, 0xe5, 0xc9, 0x1b, 0xbe, 0xa8, 0x19, 0x80, 0x56, 0x3f, 0x19, 0x18, 0x19, 0x1a, 0x97, 0x18, 0x18, 0x97, 0x99, 0x18, 0x17, 0x17, 0x98, 0x1c, 0x97, 0x99, 0x1a, 0x97, 0x1a, 0x1b, 0x17, 0x97, 0x18, 0x33, 0xb1, 0x7c, 0xf0, 0xb2, 0x6e, 0x92, 0x83, 0x14, 0x38, 0xef, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x74, 0x42, 0xef, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd4, 0x4c, 0xef, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0xbb, 0x7a, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa2, 0xb0, 0xf7, 0x41, 0xca, 0xb2, 0xf7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0x86, 0x7b, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xd9, 0x7b, 0x2f, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xe9, 0x0a, 0xdf, 0x83, 0x60, 0x83, 0x84, 0x8a, 0xef, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x44, 0xf9, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x09, 0x41, 0xdf, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x46, 0xf5, 0x3d, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x94, 0xf6, 0x3d, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0xf0, 0xf7, 0x3d, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x4c, 0xf9, 0x7d, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xac, 0x7e, 0x1f, 0x52, 0x07, 0x0b, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0x0f, 0x7f, 0x0f, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x67, 0x7f, 0x1f, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x69, 0xf0, 0xdf, 0x07, 0x23, 0xcb, 0xea, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x82, 0x03, 0xf8, 0xc1, 0x78, 0xd3, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb4, 0x12, 0xf0, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xea, 0x80, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x21, 0x0a, 0xfc, 0x20, 0x49, 0x0b, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xd5, 0x0e, 0xfc, 0x90, 0x3a, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x45, 0x82, 0x1f, 0x8c, 0x09, 0xab, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xad, 0x82, 0x0f, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xfd, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x2b, 0x06, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xea, 0x36, 0xf8, 0x21, 0x31, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0xc2, 0x0f, 0x3e, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x20, 0x11, 0x7e, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xa2, 0x84, 0x1f, 0x84, 0x14, 0xf8, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x14, 0xa2, 0xf0, 0x83, 0x10, 0x00, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0x7d, 0x85, 0x1f, 0x0c, 0xde, 0xc9, 0xe3, 0xd0, 0x20, 0x5a, 0xf0, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x92, 0xfa, 0xc2, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x52, 0x26, 0xc3, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd2, 0x51, 0xc3, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc4, 0xdf, 0xf0, 0x83, 0xb1, 0xd8, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x5f, 0x87, 0x1f, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x69, 0xee, 0xe1, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x26, 0x10, 0x3f, 0x38, 0x6a, 0x0f, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x49, 0x26, 0xe2, 0x07, 0x63, 0xb1, 0xf3, 0x38, 0x34, 0x88, 0x16, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd2, 0x86, 0xc4, 0x0f, 0x42, 0x0a, 0xfc, 0x78, 0x7e, 0x3c, 0x3e, 0x1e, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xe9, 0x60, 0xe2, 0x83, 0x60, 0x83, 0xd4, 0x35, 0xf1, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xf7, 0x13, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x0a, 0xa5, 0xf8, 0xc1, 0x39, 0xf8, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xb5, 0x56, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x4e, 0x16, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xfa, 0xb7, 0xf8, 0x41, 0x3a, 0xba, 0xf8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x72, 0xc1, 0xf8, 0xc1, 0xf8, 0xe9, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x84, 0x8c, 0x1f, 0x0c, 0xcd, 0xae, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xeb, 0x8c, 0x1f, 0x62, 0x38, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xa7, 0x1a, 0x1f, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x76, 0x1b, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x02, 0xe1, 0xf8, 0x41, 0x3a, 0x48, 0xf7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x6a, 0xe9, 0xf8, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xc2, 0xee, 0xf8, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x6a, 0xf4, 0xf8, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x80, 0x3e, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x69, 0xfc, 0xe3, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x22, 0x04, 0xf9, 0x41, 0xda, 0x4b, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xa3, 0x90, 0x1f, 0x62, 0x38, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x17, 0x22, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x0a, 0x16, 0xf9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd2, 0xda, 0xc8, 0x07, 0xc9, 0x30, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xf5, 0x90, 0xfc, 0x20, 0x28, 0xbd, 0x0f, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe4, 0x55, 0xf2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xfd, 0x97, 0xfc, 0x60, 0x4c, 0x58, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xea, 0x35, 0xf9, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x5a, 0x3b, 0xf9, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x0a, 0x41, 0xf9, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0xac, 0x51, 0x7e, 0x30, 0xb2, 0xac, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x29, 0x36, 0xe5, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x09, 0x50, 0xe5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x32, 0x59, 0xf9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x12, 0xf6, 0xca, 0x0f, 0x42, 0xc4, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xe1, 0x2c, 0x3f, 0x34, 0x12, 0x3c, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x5a, 0x6d, 0xf9, 0x41, 0x50, 0x7a, 0x1f, 0x8f, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa2, 0x76, 0xf9, 0xa1, 0x91, 0xe0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x1d, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa4, 0xfd, 0xf2, 0x41, 0xb0, 0x41, 0x82, 0x81, 0xf9, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0x68, 0x98, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x54, 0x19, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x30, 0x32, 0x1f, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xd7, 0x32, 0x1f, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x85, 0x33, 0x3f, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x12, 0x0e, 0xcd, 0x0f, 0x52, 0x20, 0xcd, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x14, 0x4f, 0xf3, 0x83, 0xf1, 0xa6, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x89, 0xb5, 0xe6, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x4a, 0xb2, 0xf9, 0x41, 0xda, 0x4b, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x85, 0x9b, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xd1, 0xde, 0x7c, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xa9, 0x0c, 0xe7, 0x07, 0x47, 0xf9, 0xdd, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xc1, 0xe5, 0xfc, 0x20, 0x05, 0xd2, 0xfc, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x49, 0x48, 0xe7, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xec, 0x3a, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb2, 0xdc, 0xf9, 0x20, 0x19, 0x66, 0x10, 0x2d, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x34, 0x9e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x81, 0x98, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x1a, 0xea, 0xf9, 0x71, 0xe8, 0x78, 0x7e, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x89, 0xcd, 0xe7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x62, 0xf8, 0xf9, 0x41, 0x02, 0xb6, 0xc0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xe6, 0x9f, 0x1f, 0x8e, 0xf6, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf2, 0x04, 0xfa, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x6a, 0x0b, 0xfa, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x26, 0x84, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x54, 0x2c, 0xf4, 0x83, 0x61, 0x0c, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xe7, 0xa1, 0x1f, 0x1a, 0x09, 0x1e, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x65, 0x12, 0xfd, 0x20, 0x28, 0xbd, 0x8f, 0xc7, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x09, 0x17, 0x7d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x69, 0xce, 0xe8, 0x07, 0x69, 0xd7, 0xe8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xe9, 0xf3, 0xe8, 0x07, 0x25, 0x8c, 0xc4, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc4, 0x87, 0xf4, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x85, 0x24, 0xfd, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x69, 0x3a, 0xe9, 0x87, 0xa3, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x4c, 0x95, 0x7e, 0x48, 0xd5, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xcd, 0xa5, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x68, 0x4c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x74, 0xd0, 0xf4, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xd8, 0xa6, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xe9, 0xca, 0xe9, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xe9, 0xe0, 0xe9, 0x87, 0x56, 0xe2, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x84, 0x9f, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x64, 0x07, 0xf5, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x74, 0x12, 0xf5, 0x83, 0x53, 0x80, 0xef, 0xc1, 0x51, 0x4b, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x45, 0x49, 0xfd, 0x10, 0xcd, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x1a, 0x99, 0xfa, 0x21, 0x86, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xe9, 0x53, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xea, 0xa4, 0xfa, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x72, 0xaa, 0xfa, 0xc1, 0x29, 0xc0, 0xf7, 0xe0, 0xb0, 0xa9, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x3b, 0xab, 0x1f, 0xa2, 0x79, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc4, 0x73, 0xf5, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x34, 0x7e, 0xf5, 0x83, 0x90, 0x02, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x92, 0x28, 0xd6, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x98, 0xb2, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd4, 0x9f, 0xf5, 0x83, 0x64, 0xa4, 0xf5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xc9, 0x6c, 0xfd, 0x90, 0xaf, 0x3d, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xd2, 0xdf, 0xfa, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x0a, 0xe5, 0xfa, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x92, 0x54, 0xd7, 0x0f, 0x8e, 0x9b, 0xd7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xc9, 0xcb, 0xeb, 0x87, 0x71, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x97, 0xaf, 0x1f, 0x87, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x8a, 0xff, 0xfa, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x12, 0x29, 0xd8, 0x0f, 0x92, 0x3b, 0xd8, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x52, 0x77, 0xd8, 0x0f, 0x6b, 0xbf, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x52, 0xad, 0xd8, 0x0f, 0xe3, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x88, 0x63, 0x3f, 0x48, 0x7b, 0xa9, 0x3e, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe2, 0x22, 0xfb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x92, 0x41, 0xd9, 0x0f, 0xd2, 0x41, 0xba, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x12, 0x84, 0xd9, 0x0f, 0x6b, 0xbf, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x34, 0x6e, 0xf6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xca, 0xb3, 0x1f, 0xa4, 0xef, 0xb3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x67, 0xb4, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x05, 0xa6, 0xfd, 0xe0, 0x78, 0x05, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x1e, 0xd5, 0x7e, 0x18, 0x97, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x02, 0x5b, 0xfb, 0x71, 0xe8, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x3d, 0x6c, 0x3f, 0x48, 0xdb, 0x78, 0x3e, 0x0e, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x81, 0xb4, 0x7d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xe9, 0xb9, 0xed, 0x07, 0xe9, 0xc2, 0xed, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xc9, 0xe0, 0xed, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xb8, 0x6f, 0x3f, 0x48, 0x01, 0x70, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xf0, 0x70, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x1a, 0x8d, 0xfb, 0x41, 0x6a, 0x8f, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe2, 0x96, 0xfb, 0x30, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x12, 0xe7, 0x7e, 0x10, 0x02, 0xe0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x34, 0x46, 0xf7, 0x83, 0xb4, 0x8d, 0xe7, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x49, 0xd5, 0xfd, 0x90, 0xaf, 0x3d, 0x0e, 0x2d, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x39, 0x76, 0x3f, 0x1c, 0xed, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe4, 0x70, 0xf7, 0x83, 0xb4, 0x97, 0xea, 0xe3, 0xd0, 0xf1, 0xf8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x09, 0x00, 0xef, 0x8b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x42, 0xc5, 0xfb, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x74, 0x79, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x34, 0xa1, 0xf7, 0x61, 0x37, 0xac, 0xef, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xc9, 0x5a, 0xef, 0x07, 0x81, 0x89, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xa9, 0x72, 0xef, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xaa, 0xe1, 0xfb, 0x41, 0xda, 0x4b, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x7b, 0xbe, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xd2, 0xbe, 0x0f, 0xa2, 0x05, 0xf5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0xce, 0xfc, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa4, 0xf3, 0xf7, 0xc3, 0xb8, 0x1c, 0x8f, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x1e, 0x00, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x34, 0x0c, 0xf8, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xbb, 0xc0, 0x1f, 0xa4, 0xe1, 0xc0, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xa9, 0x53, 0xf0, 0x07, 0x65, 0xdc, 0xce, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xb9, 0x83, 0x3f, 0x44, 0xf3, 0x38, 0x74, 0x3c, 0x5e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x92, 0x84, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x09, 0xac, 0xf0, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x14, 0x86, 0x3f, 0x18, 0xdc, 0x95, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x29, 0xe4, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x42, 0x3e, 0xfc, 0x41, 0x42, 0xd9, 0xc9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0x46, 0xc4, 0x1f, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x34, 0x96, 0xf8, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd4, 0xa3, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x95, 0x2b, 0x7e, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x49, 0x73, 0xf1, 0x07, 0x09, 0x7d, 0xf1, 0x83, 0x64, 0xd0, 0x36, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x9e, 0x19, 0x7f, 0x68, 0x24, 0x78, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd4, 0xd9, 0xf8, 0x83, 0xa0, 0xf4, 0x3e, 0x1e, 0x1f, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x1a, 0x1d, 0x3f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd2, 0xd6, 0xe3, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x1e, 0x20, 0x7f, 0x30, 0xb8, 0x2b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x12, 0x47, 0xe4, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x34, 0x1c, 0xf9, 0x83, 0x23, 0x4f, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0x43, 0xc9, 0x1f, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd4, 0x35, 0xf9, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x74, 0x43, 0xf9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x7d, 0x53, 0x7e, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x89, 0xb2, 0xf2, 0x07, 0x09, 0x7d, 0xf1, 0x83, 0x64, 0x50, 0x36, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x56, 0x2d, 0x7f, 0x68, 0x24, 0x78, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x94, 0x77, 0xf9, 0x83, 0xa0, 0xf4, 0x3e, 0x1e, 0x1f, 0x87, 0x8e, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x5a, 0xc3, 0xfc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x39, 0x99, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x6a, 0xcf, 0xfc, 0xc1, 0xe0, 0xae, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xfa, 0x9a, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x52, 0xe8, 0xe6, 0x0f, 0xd2, 0xa1, 0x3c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x99, 0x71, 0xfe, 0x90, 0x3a, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x9e, 0xce, 0x0f, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x0b, 0xcf, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xc9, 0xd7, 0xf3, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x73, 0x9f, 0x3f, 0x48, 0xe8, 0x8b, 0x1f, 0x24, 0x83, 0x68, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x21, 0x82, 0xfe, 0xd0, 0x48, 0xf0, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xc9, 0x2a, 0xf4, 0x07, 0x41, 0xe9, 0x7d, 0x3c, 0x3e, 0x0e, 0x1d, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x84, 0x24, 0xfa, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x2a, 0x46, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x84, 0x3c, 0xfa, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0x3d, 0xd2, 0x1f, 0x24, 0x63, 0xd2, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x49, 0xb3, 0xf4, 0x87, 0x56, 0xe2, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xc1, 0x9a, 0xfe, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb4, 0x78, 0xfa, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0xb0, 0x50, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb4, 0x90, 0xfa, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0xdf, 0xd4, 0x1f, 0x24, 0x63, 0xd2, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x89, 0x59, 0xf5, 0x87, 0xa3, 0xfd, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xef, 0xd5, 0x1f, 0x52, 0x07, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe2, 0x65, 0xfd, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x8a, 0xad, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf2, 0x71, 0xfd, 0xc1, 0xe0, 0xae, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x4b, 0xaf, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x92, 0xfc, 0xeb, 0x0f, 0x12, 0xe5, 0x3e, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xdd, 0xc2, 0xfe, 0x90, 0x3a, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0xc6, 0xd8, 0x0f, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0x33, 0xd9, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xe9, 0x61, 0xf6, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xc4, 0xb3, 0x3f, 0x48, 0xe8, 0x8b, 0x1f, 0x24, 0xc3, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x6b, 0xda, 0x1f, 0x1a, 0x09, 0x1e, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x91, 0xd6, 0xfe, 0x20, 0x28, 0xbd, 0x8f, 0xc7, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x2c, 0x6d, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa4, 0x74, 0xfb, 0x83, 0xc4, 0x96, 0x93, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x94, 0x85, 0xfb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xf9, 0xe3, 0xfe, 0x20, 0x21, 0xe5, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x12, 0x6d, 0xee, 0x0f, 0x47, 0xfb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x1d, 0xea, 0x7e, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x7d, 0xed, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x06, 0xbc, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xd2, 0xe5, 0xfd, 0x41, 0x32, 0xe8, 0xfd, 0x20, 0x19, 0xec, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd2, 0x7a, 0xef, 0x0f, 0x8d, 0x04, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x6e, 0x7d, 0x7f, 0x10, 0x94, 0xde, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0xcb, 0xdf, 0x0f, 0x82, 0x0d, 0x06, 0xdc, 0xee, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x36, 0xe0, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x8b, 0xe0, 0x1f, 0x9c, 0x85, 0xd2, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x94, 0x1d, 0xfc, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x46, 0xe1, 0x1f, 0xa4, 0x00, 0xb8, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0xce, 0xe1, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0x26, 0xe2, 0x1f, 0xc6, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x07, 0xc5, 0x3f, 0x48, 0x53, 0xc5, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd4, 0x62, 0xfc, 0x83, 0x94, 0x67, 0xfc, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x0a, 0x3b, 0xfe, 0x41, 0x60, 0x62, 0x1f, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xc5, 0x20, 0x7f, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x6d, 0x23, 0xff, 0xe0, 0x1c, 0x92, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0xcf, 0xe4, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x45, 0x29, 0xff, 0x20, 0x05, 0xc0, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x85, 0x2d, 0xff, 0x20, 0xb5, 0x2e, 0x7f, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x46, 0x99, 0x7f, 0x10, 0x98, 0xd8, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x73, 0xcd, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x02, 0x71, 0xfe, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x52, 0xb3, 0xf3, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0xfe, 0x9e, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x14, 0x03, 0xfd, 0x83, 0x64, 0x4c, 0xfa, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xf9, 0x44, 0xff, 0x70, 0xb4, 0x1f, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf4, 0x24, 0xfd, 0x83, 0x91, 0xd9, 0x7b, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe4, 0x31, 0xfd, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x29, 0x80, 0xfa, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xb3, 0xd4, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x32, 0xab, 0xfe, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xaa, 0xb0, 0xfe, 0xc1, 0x89, 0xf7, 0xf9, 0x60, 0xdc, 0x41, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x49, 0xe7, 0xfa, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xed, 0xd7, 0x3f, 0x48, 0x38, 0xd8, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x12, 0x49, 0xf6, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0xfb, 0xec, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x8d, 0x6a, 0x7f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xc9, 0x6a, 0xfb, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xa9, 0x80, 0xfb, 0x07, 0x27, 0x42, 0xe8, 0x83, 0x92, 0xa1, 0x69, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x32, 0xeb, 0xfe, 0xa1, 0xe9, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x61, 0xef, 0x1f, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xac, 0xdf, 0x3f, 0x1c, 0xed, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x42, 0xf0, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0x97, 0xf0, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x81, 0x87, 0x7f, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x3d, 0x8a, 0xff, 0xe0, 0x1c, 0x0e, 0x7d, 0x70, 0x62, 0xf6, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x92, 0xed, 0xf8, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0xd2, 0xc8, 0x3f, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x30, 0xca, 0x7f, 0x70, 0x0e, 0x87, 0x3e, 0x38, 0x41, 0xf8, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0x20, 0xf3, 0x1f, 0x14, 0xb9, 0x0a, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe4, 0x71, 0xfe, 0x83, 0xd1, 0x7c, 0x7e, 0x1c, 0x3a, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x09, 0x00, 0xfd, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x3a, 0x45, 0xff, 0xa1, 0x95, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x24, 0xb2, 0xf4, 0x1f, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x61, 0xa8, 0x7f, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x09, 0xab, 0x7f, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0xc5, 0xad, 0x7f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xe9, 0x83, 0xfd, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xc9, 0x99, 0xfd, 0x07, 0xe7, 0x70, 0xe8, 0x83, 0x13, 0xb3, 0xef, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0xea, 0xdb, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x84, 0xea, 0xfe, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x74, 0xf5, 0xfe, 0x83, 0x73, 0x38, 0xf4, 0xc1, 0x09, 0xc2, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x01, 0xc2, 0xff, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x4f, 0xf1, 0x3f, 0xf4, 0x27, 0x3f, 0x0e, 0x1d, 0x87, 0x0e, 0xeb, 0x9b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x1a, 0x92, 0xff, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0xd4, 0xe5, 0x7f, 0x68, 0x25, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xe9, 0x74, 0xfe, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x5b, 0xf4, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd2, 0x3e, 0xfd, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0x58, 0xeb, 0x3f, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0x90, 0xb4, 0xec, 0x7f, 0x70, 0x0e, 0x87, 0x3e, 0x28, 0x19, 0x9a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x92, 0xe0, 0xfd, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf4, 0x84, 0xff, 0x43, 0x2b, 0xf1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xa4, 0x8c, 0xfc, 0x1f, 0x62, 0x38, 0xfc, 0x06, 0x49, 0x30, 0xff, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x20, 0x45, 0xe9, 0x7f, 0xf8, 0x05, 0xd1, 0x02, 0xe1, 0x1f, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x29, 0xfb, 0x1f, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0xd8, 0xfb, 0x1f, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x48, 0x83, 0xfc, 0x3f, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x12, 0x4e, 0xff, 0x0f, 0x4d, 0x87, 0x0e, 0xeb, 0x9b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x62, 0xf0, 0xff, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd2, 0xaf, 0xff, 0x0f, 0x12, 0xa3, 0xa5, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x03, 0x00, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xb6, 0x00, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x95, 0x16, 0x00, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0x43, 0x00, 0x0e, 0x4e, 0x84, 0xd0, 0x07, 0x27, 0x66, 0xdf, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x01, 0x0d, 0xc0, 0xa1, 0xe9, 0xd0, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x0d, 0x04, 0x70, 0xb0, 0xb2, 0x08, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x45, 0x01, 0x1c, 0xac, 0xb0, 0x02, 0x18, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x59, 0x19, 0xc0, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0xc2, 0x01, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xfd, 0x1e, 0xc0, 0xc1, 0x5a, 0x40, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x7d, 0x23, 0xc0, 0xe1, 0x68, 0x3f, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0x3e, 0x01, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x4e, 0x15, 0x60, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x61, 0x2d, 0xc0, 0xc1, 0x89, 0x10, 0xfa, 0xe0, 0xb0, 0xa9, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x40, 0x06, 0x38, 0x34, 0x1d, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x07, 0x83, 0x77, 0xf2, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0xb3, 0x01, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x8a, 0x1c, 0xe0, 0x20, 0x31, 0x5a, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x49, 0x3d, 0xc0, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x00, 0x04, 0x1c, 0xac, 0x26, 0x08, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x29, 0x11, 0x70, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xfb, 0x08, 0x38, 0xa4, 0x0e, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x95, 0x2d, 0x01, 0x07, 0x83, 0x77, 0xf2, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0x75, 0x02, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x16, 0x05, 0x1c, 0x7a, 0x08, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xab, 0xa2, 0x02, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x8e, 0x2b, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x6d, 0x16, 0x70, 0x90, 0xfe, 0xf4, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0xe6, 0x02, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xf4, 0x17, 0x30, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x30, 0x06, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x2a, 0xcb, 0x80, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x21, 0x68, 0xc0, 0x41, 0xda, 0xc6, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x9e, 0x35, 0xe0, 0x20, 0x41, 0x12, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xe5, 0x06, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x21, 0x71, 0xc0, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x3f, 0x07, 0x1c, 0xa4, 0xe1, 0xc0, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0xc1, 0x03, 0x0e, 0x47, 0xfb, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x1e, 0x1f, 0x70, 0x48, 0x1d, 0x1c, 0x87, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x06, 0x20, 0x30, 0x08, 0x36, 0x48, 0x8f, 0xf2, 0x59, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x37, 0x08, 0x0c, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa5, 0x1a, 0x02, 0x83, 0x64, 0x90, 0x0d, 0xa2, 0x05, 0xf5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x0c, 0x45, 0xe0, 0x90, 0x3a, 0x38, 0x24, 0x97, 0x8e, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x42, 0x1b, 0x81, 0x41, 0xb6, 0x21, 0x2e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x5a, 0x48, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x33, 0x09, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xf1, 0x95, 0xc0, 0xc1, 0x32, 0x2e, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x85, 0x6a, 0x02, 0x87, 0xfe, 0xe4, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf5, 0x77, 0x02, 0x07, 0x6b, 0xf9, 0x04, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xb8, 0x50, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x3f, 0x0a, 0x0c, 0xb2, 0x0d, 0x71, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd5, 0x9b, 0x02, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0x4d, 0x05, 0x0e, 0xd2, 0xe3, 0x7c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc5, 0xb2, 0x02, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x8a, 0x5e, 0x81, 0x83, 0xe4, 0x21, 0xe6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x51, 0xb2, 0xc0, 0x41, 0xda, 0xc6, 0xf3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xab, 0x16, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x52, 0x70, 0x81, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x5e, 0x17, 0x38, 0x58, 0x06, 0x2f, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xed, 0x17, 0x38, 0x1c, 0xed, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xad, 0xc3, 0xc0, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x67, 0x0c, 0x1c, 0xac, 0xf4, 0x18, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0xb3, 0x0c, 0x1c, 0xc6, 0xe5, 0x38, 0x74, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x45, 0x3a, 0x03, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0x89, 0x06, 0x0e, 0x16, 0x26, 0x0d, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0xa6, 0x06, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x75, 0x5d, 0x03, 0x07, 0x69, 0x2f, 0xd5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x32, 0x6d, 0x60, 0x10, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x6a, 0xba, 0x81, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xec, 0x37, 0x30, 0xec, 0x86, 0x15, 0xd4, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xc1, 0xe2, 0xc0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xa8, 0x72, 0xe0, 0x20, 0xa5, 0xcf, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x18, 0x3a, 0x70, 0x90, 0xd2, 0x67, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0x5b, 0x07, 0x0e, 0xc6, 0x9b, 0xce, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xcd, 0x1d, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x0f, 0x0f, 0x1c, 0xa4, 0xf4, 0x59, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xea, 0xe7, 0x81, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xd8, 0x1e, 0x38, 0x48, 0x07, 0xe9, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xc0, 0x3e, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x35, 0xf7, 0x03, 0x07, 0xab, 0xf7, 0x07, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x05, 0x0a, 0x04, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x53, 0x41, 0x70, 0xb0, 0x3c, 0x83, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x82, 0x42, 0x30, 0x48, 0x06, 0xd1, 0x20, 0x5a, 0xd8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x5a, 0x43, 0x70, 0xe8, 0x21, 0x74, 0x3c, 0x3f, 0x0e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0x8b, 0x08, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0xa7, 0x08, 0x0e, 0x1d, 0xc3, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x11, 0x23, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x8a, 0x36, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xd9, 0x1d, 0xc1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x0c, 0x24, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x42, 0x46, 0x82, 0x83, 0x03, 0xcf, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xb2, 0x4e, 0x82, 0x43, 0x7f, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x62, 0x55, 0x82, 0x43, 0x23, 0xc1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xbb, 0x25, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc5, 0xc1, 0x04, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xcc, 0x4c, 0x70, 0x90, 0x16, 0xf3, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xba, 0x9b, 0xe0, 0xd0, 0x9f, 0x7c, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xba, 0x75, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x79, 0x3d, 0xc1, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x85, 0x01, 0x05, 0x87, 0xa3, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xda, 0xa1, 0xe0, 0xd0, 0x48, 0xf0, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0x37, 0x0a, 0x06, 0xc1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x36, 0x29, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc5, 0x30, 0x05, 0xc3, 0x6e, 0xb0, 0xbc, 0xa6, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xeb, 0x53, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x49, 0x2a, 0x38, 0x48, 0x1e, 0x62, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x55, 0x15, 0x1c, 0xa4, 0x3f, 0x3d, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xd2, 0xb0, 0x82, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x67, 0x2b, 0x38, 0x48, 0x8c, 0x96, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xde, 0x57, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0x89, 0x05, 0x07, 0xcb, 0x1b, 0x0b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x70, 0x16, 0x1c, 0xfa, 0x93, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0xa6, 0x16, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x35, 0x6d, 0xc1, 0xc1, 0xca, 0xdc, 0x82, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xed, 0x71, 0xc1, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x4b, 0x17, 0x1c, 0x8c, 0xac, 0xd7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xed, 0x78, 0xc1, 0xa1, 0xe1, 0xd7, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xa0, 0x2f, 0x38, 0x18, 0xbc, 0x93, 0xc7, 0xa1, 0x61, 0x37, 0x18, 0xec, 0xc6, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xea, 0x01, 0x83, 0x61, 0x37, 0x58, 0x91, 0x60, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x95, 0x30, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xda, 0x0e, 0x83, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x7f, 0x62, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe5, 0x32, 0x06, 0x07, 0x0b, 0x6f, 0x0c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa5, 0x45, 0x06, 0x87, 0x86, 0x5f, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x25, 0x65, 0x30, 0xfc, 0x82, 0x68, 0x81, 0xf1, 0x1f, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xff, 0x65, 0x70, 0xb0, 0x94, 0xcc, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xc3, 0x66, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xb5, 0x33, 0x38, 0x48, 0x7b, 0xa9, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf5, 0x82, 0x06, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xe3, 0x68, 0x70, 0x70, 0xf2, 0x81, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x7c, 0x1a, 0x1c, 0xac, 0x29, 0x33, 0x38, 0x0e, 0x1d, 0x0c, 0x44, 0xea, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x79, 0x35, 0x18, 0x7e, 0x41, 0xb4, 0xc0, 0xf8, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xe6, 0x35, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x7c, 0x6c, 0x30, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x50, 0xda, 0xe0, 0x60, 0xb0, 0xc6, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xf9, 0x36, 0x38, 0x58, 0x3d, 0x6e, 0xb0, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xc2, 0x76, 0x83, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x95, 0xf8, 0x06, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x02, 0x82, 0x83, 0x43, 0xea, 0x60, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x95, 0x10, 0x07, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0x37, 0x0e, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x15, 0x27, 0x07, 0x87, 0x54, 0xcd, 0xc2, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0x67, 0x0e, 0x86, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0xfa, 0x1c, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0x94, 0x0e, 0x0e, 0x7b, 0x85, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0xb0, 0xbe, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xe6, 0x3a, 0x18, 0x7e, 0x41, 0xb4, 0xc0, 0xf8, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xf2, 0xb4, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x11, 0xdd, 0xc1, 0x41, 0xda, 0x4b, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x03, 0x3c, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xd2, 0xc5, 0x83, 0x83, 0x55, 0x90, 0x07, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x02, 0xcf, 0x83, 0x83, 0xc5, 0xa2, 0x07, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x5c, 0x3d, 0x18, 0x7e, 0x41, 0xb4, 0xc0, 0xf8, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x32, 0xdc, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xb1, 0xf0, 0xc1, 0x41, 0xda, 0x4b, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x77, 0x3e, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x12, 0xed, 0x83, 0x83, 0x55, 0x90, 0x07, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x8a, 0xf5, 0x83, 0x83, 0xd5, 0xef, 0x07, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xc3, 0x3f, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x09, 0x20, 0x1c, 0xa4, 0xbd, 0x54, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0x1d, 0x10, 0x0e, 0xd2, 0x5e, 0xaa, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xbd, 0x06, 0xc2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x98, 0x20, 0x1c, 0xac, 0x82, 0x3c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xdc, 0x20, 0x1c, 0xac, 0xdd, 0x41, 0x38, 0x0e, 0x1d, 0x0c, 0x44, 0xea, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x30, 0x42, 0x18, 0x7e, 0x41, 0xb4, 0xc0, 0xf8, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x72, 0x29, 0x84, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x51, 0x17, 0xc2, 0x41, 0xda, 0x4b, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x4b, 0x43, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x52, 0x3a, 0x84, 0x83, 0x55, 0x79, 0x08, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x8a, 0x43, 0x84, 0x83, 0xc0, 0x8d, 0x3f, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x41, 0x25, 0xc2, 0xf0, 0x0b, 0xa2, 0x05, 0xc6, 0x7f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x87, 0x22, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0x58, 0x11, 0x0e, 0xd2, 0x5e, 0xaa, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x1d, 0x2e, 0xc2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x0e, 0x23, 0x1c, 0xac, 0xca, 0x43, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x52, 0x23, 0x1c, 0x04, 0x59, 0xfc, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0xc5, 0x11, 0x86, 0x5f, 0x10, 0x2d, 0x30, 0xfe, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0xe0, 0x11, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0xec, 0x23, 0x1c, 0x14, 0x14, 0x45, 0x87, 0xf5, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x21, 0x42, 0xc2, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x5c, 0x22, 0xe1, 0x20, 0xfd, 0xe9, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x7c, 0x24, 0x1c, 0x0c, 0x44, 0xea, 0x83, 0x81, 0x48, 0x7d, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x05, 0x2e, 0x09, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x0a, 0x9c, 0x84, 0x83, 0xe4, 0x21, 0xe6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x43, 0x94, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x55, 0x4f, 0x09, 0x07, 0xab, 0xf2, 0x10, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x35, 0x60, 0x09, 0x07, 0x67, 0xd3, 0xf0, 0xe3, 0xd0, 0xb0, 0x1b, 0xac, 0x43, 0x4b, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0xc5, 0x25, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x19, 0x5f, 0xc2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x35, 0x4c, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xca, 0xc8, 0x84, 0x83, 0x35, 0x96, 0x09, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xfa, 0xd1, 0x84, 0x43, 0xc3, 0xaf, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x85, 0x4d, 0x18, 0x7e, 0x41, 0xb4, 0xc0, 0xf8, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xf2, 0x4d, 0x38, 0x58, 0x2f, 0x9c, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x52, 0x4e, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x52, 0x27, 0x1c, 0xa4, 0xbd, 0x54, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x82, 0xf0, 0x84, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x62, 0x4f, 0x38, 0x38, 0xf9, 0x40, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0xfa, 0x13, 0x0e, 0x16, 0x0e, 0x27, 0x1c, 0x87, 0x0e, 0x06, 0x22, 0xf5, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x34, 0x28, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0x2e, 0x14, 0x0e, 0x92, 0x87, 0x98, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xdd, 0x88, 0xc2, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x12, 0x17, 0x85, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0x39, 0x0a, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0x88, 0x14, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x65, 0x4f, 0x0a, 0x07, 0x21, 0x05, 0xbe, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x1a, 0x2e, 0x85, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x35, 0x67, 0x0a, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x52, 0x39, 0x85, 0x83, 0xc0, 0x8d, 0x5f, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xe5, 0x9f, 0xc2, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x52, 0x45, 0x85, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x85, 0xa5, 0xc2, 0x41, 0x90, 0xc5, 0x2f, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x60, 0x54, 0x61, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x85, 0xab, 0xc2, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x30, 0x57, 0xe1, 0x60, 0xed, 0x0e, 0xc2, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x2d, 0x2b, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0xab, 0x15, 0x0e, 0xd6, 0x68, 0x2b, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0xc2, 0x15, 0x0e, 0xd2, 0x36, 0x9e, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x55, 0xbb, 0xc2, 0xc1, 0x40, 0xa4, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x55, 0xf9, 0x0a, 0xc3, 0x2f, 0x88, 0x16, 0x18, 0xff, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf5, 0x06, 0x0b, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0x23, 0x16, 0x86, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x72, 0x2c, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0x50, 0x16, 0x0e, 0xd6, 0xee, 0x20, 0x1c, 0xd6, 0x37, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe5, 0x35, 0x0b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x2a, 0xa0, 0x85, 0x83, 0xb4, 0x97, 0xea, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x31, 0xd3, 0xc2, 0xc1, 0x1a, 0x6d, 0x85, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x92, 0xb5, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x65, 0x64, 0x0b, 0x07, 0xab, 0xf2, 0x10, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x65, 0x75, 0x0b, 0x07, 0x6b, 0x77, 0x10, 0x8e, 0x43, 0x07, 0x03, 0x91, 0xfa, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0x0a, 0x17, 0x86, 0x5f, 0x10, 0x2d, 0x30, 0xfe, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0x26, 0x17, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x78, 0x2e, 0x0c, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x46, 0x5d, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0xd0, 0x2e, 0x1c, 0x04, 0x6e, 0xfc, 0x61, 0x7d, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x1b, 0xbc, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x61, 0x5e, 0x38, 0x48, 0x7b, 0xa9, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x62, 0x2f, 0x1c, 0xac, 0xea, 0x5e, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0xe4, 0x0b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xf6, 0xbe, 0x70, 0xb0, 0x2a, 0x0f, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x06, 0xc0, 0x70, 0x10, 0xb8, 0xf1, 0xc7, 0xa1, 0x83, 0x81, 0x48, 0x7d, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0x10, 0x0c, 0xc3, 0x2f, 0x88, 0x16, 0x18, 0xff, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc5, 0x1d, 0x0c, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0x51, 0x18, 0x86, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xce, 0x30, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xab, 0x7d, 0x18, 0x0e, 0x82, 0x2c, 0xfe, 0xb0, 0xbe, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x63, 0x62, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x5b, 0x31, 0x1c, 0xa4, 0xbd, 0x54, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0xc6, 0x18, 0x0e, 0x16, 0xa0, 0x31, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x6a, 0x37, 0x86, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xd0, 0x63, 0x38, 0x58, 0x95, 0x87, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x58, 0x64, 0x38, 0x08, 0xb2, 0xf8, 0xe3, 0xd0, 0xc1, 0x40, 0xa4, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x6a, 0x4d, 0x86, 0xe1, 0x17, 0x44, 0x0b, 0x8c, 0xff, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x3a, 0x54, 0x86, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x75, 0xb3, 0x0c, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0x7c, 0x19, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x85, 0xc9, 0x0c, 0x07, 0x21, 0x05, 0x7e, 0x58, 0xdf, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x5c, 0x33, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0xc3, 0x19, 0x0e, 0xd2, 0x5e, 0xaa, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf5, 0xed, 0x0c, 0x07, 0x03, 0xdf, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0xe8, 0x33, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x55, 0x41, 0xc3, 0xc1, 0xaa, 0x3c, 0x84, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x95, 0x45, 0xc3, 0x41, 0x48, 0x81, 0x1f, 0x87, 0x0e, 0x06, 0x22, 0xf5, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x98, 0x34, 0x1c, 0xac, 0x53, 0x69, 0x18, 0x64, 0x1b, 0x9a, 0xaf, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xf2, 0x99, 0x86, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xf8, 0x69, 0x38, 0x58, 0x3b, 0xd4, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x8a, 0x6a, 0x38, 0x34, 0xfc, 0x3a, 0x0e, 0x0d, 0xbb, 0xc1, 0x58, 0xdd, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x82, 0x35, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x5c, 0x6b, 0x18, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x67, 0xd7, 0x70, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x0e, 0x6c, 0x38, 0x34, 0xfc, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x36, 0x36, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xab, 0x2f, 0x1b, 0x0e, 0xd2, 0x5e, 0xaa, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x15, 0xa4, 0x0d, 0x07, 0x6b, 0x51, 0x1b, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xe1, 0x6b, 0xc3, 0xc1, 0xe0, 0x9d, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x85, 0xbb, 0x0d, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0x8c, 0x1b, 0x86, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x44, 0x37, 0x1c, 0x8e, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xc9, 0xdd, 0x70, 0x68, 0xf8, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x43, 0x6f, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xcb, 0x37, 0x1c, 0xa4, 0xbd, 0x54, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0xfe, 0x1b, 0x0e, 0x86, 0xd4, 0xef, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x59, 0x70, 0x38, 0x18, 0xbc, 0x93, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xea, 0xc2, 0x61, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0x45, 0x1c, 0x0e, 0xd6, 0x0e, 0x35, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0x67, 0x1c, 0x0e, 0x0d, 0xbf, 0x8e, 0x43, 0xc3, 0x6e, 0x50, 0x82, 0x40, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0x86, 0x1c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x65, 0x4d, 0x0e, 0x07, 0xc9, 0x43, 0xcc, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x32, 0xcb, 0xe1, 0x60, 0xf0, 0x4e, 0x0e, 0xbb, 0xc1, 0x08, 0xf0, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xa1, 0x39, 0x0c, 0xbb, 0xc1, 0xc2, 0x36, 0x87, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xbd, 0x9d, 0xc3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x08, 0x3a, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x55, 0xa3, 0xc3, 0xc1, 0xfa, 0x48, 0x87, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb5, 0x9f, 0x0e, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x0a, 0x55, 0x87, 0x43, 0x7f, 0xf2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x79, 0xad, 0xc3, 0xc1, 0x91, 0xa7, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x08, 0x3b, 0x1c, 0x94, 0x71, 0x3b, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd5, 0xcf, 0x0e, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x2d, 0xb7, 0xc3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x9f, 0x3b, 0x1c, 0xac, 0x65, 0x77, 0x18, 0x24, 0x83, 0xb2, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0xfb, 0x0e, 0x87, 0xd4, 0xc1, 0x71, 0xe8, 0x78, 0x7c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x39, 0x3c, 0x1c, 0x1a, 0x7e, 0x1d, 0x87, 0x86, 0xdd, 0x60, 0x8d, 0xc5, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xfc, 0xe3, 0x61, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0x56, 0x1e, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xc8, 0xe6, 0xe1, 0x60, 0x7d, 0xa4, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xa2, 0xa3, 0x87, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x69, 0xd4, 0xc3, 0x41, 0x19, 0xb7, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xee, 0x7a, 0x38, 0x48, 0x94, 0xfb, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x05, 0x6a, 0x0f, 0x07, 0x05, 0x00, 0xd4, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xf5, 0xdd, 0xc3, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x4b, 0xf8, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf5, 0x8f, 0x0f, 0x07, 0x6b, 0xd9, 0x1d, 0x06, 0xc9, 0x30, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0x42, 0x1f, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xa1, 0x7d, 0x38, 0x34, 0xfc, 0x3a, 0x0e, 0x0d, 0xb2, 0x0d, 0xcd, 0xd7, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xd5, 0xf0, 0xc3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x3a, 0x3f, 0x1c, 0xac, 0x1d, 0x6a, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x7d, 0x3f, 0x1c, 0x1a, 0x7e, 0x1d, 0x87, 0x86, 0xdd, 0xa0, 0xe4, 0x90, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0xbb, 0x3f, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x79, 0xfe, 0xc3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x20, 0x80, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x82, 0x07, 0x88, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf5, 0x19, 0x10, 0x07, 0xcb, 0x3c, 0x20, 0x0e, 0xd2, 0x7f, 0x1b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x15, 0x2e, 0x10, 0x87, 0x86, 0x5f, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xac, 0x03, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa5, 0x45, 0x10, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xf8, 0x09, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0xb5, 0x20, 0x0e, 0x56, 0x7d, 0x41, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x6e, 0x83, 0x38, 0xf4, 0x27, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xd9, 0x83, 0x38, 0x0e, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xd1, 0x21, 0xc4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x2a, 0x12, 0xe2, 0x20, 0x79, 0x88, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x75, 0x42, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x41, 0x85, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x9a, 0x59, 0x88, 0x83, 0x14, 0xe1, 0xea, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0xc4, 0x10, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x7a, 0x68, 0x88, 0xc3, 0xd1, 0x7e, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x76, 0x43, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x29, 0x3a, 0xc4, 0xc1, 0x9a, 0x76, 0x88, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x45, 0xfc, 0x10, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x77, 0x10, 0x71, 0xb0, 0x82, 0x21, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xa5, 0x11, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x85, 0x25, 0x11, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0x61, 0x22, 0x0e, 0xd6, 0xd3, 0x44, 0x1c, 0x8c, 0x3b, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x39, 0x51, 0xc4, 0x21, 0x75, 0x70, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x50, 0x45, 0x1c, 0x14, 0x6e, 0x49, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x14, 0x16, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0x6c, 0x11, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xc8, 0x2e, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0x02, 0x23, 0x0e, 0x56, 0x17, 0x46, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xa3, 0x8c, 0x38, 0x28, 0xe3, 0x76, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0x44, 0x23, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x75, 0x8d, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xca, 0xdc, 0x88, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x3b, 0x1c, 0x71, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x76, 0x8e, 0x18, 0x04, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x42, 0x3b, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x90, 0x47, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x75, 0x8f, 0x18, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x99, 0x1f, 0x71, 0x48, 0x1d, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x92, 0x02, 0x89, 0x43, 0xaa, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x0d, 0x21, 0x71, 0x70, 0xce, 0x4c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe5, 0x1c, 0x12, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x60, 0xfd, 0x7f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0xaa, 0x48, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x6d, 0x8d, 0xc4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x03, 0x49, 0x1c, 0x24, 0xcf, 0xa4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x8e, 0x92, 0x38, 0x28, 0xe3, 0x76, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xfe, 0x92, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xa9, 0x49, 0x1c, 0x52, 0x07, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xbe, 0x4e, 0xe2, 0x70, 0xb4, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x0d, 0x4a, 0x1c, 0x04, 0x26, 0xf6, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x41, 0x4a, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xcd, 0xa6, 0xc4, 0xc1, 0xea, 0x4f, 0x89, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0x64, 0x25, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xb4, 0x57, 0xe2, 0x60, 0x91, 0xb0, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x14, 0x5a, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xab, 0xb7, 0x25, 0x86, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x9b, 0x4b, 0x1c, 0x2c, 0x5a, 0x97, 0x38, 0x48, 0xb7, 0x94, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xee, 0x4b, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xb1, 0xc1, 0xc4, 0xc1, 0xc2, 0x85, 0x89, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x35, 0x1a, 0x13, 0x87, 0xfe, 0xe4, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb5, 0x27, 0x13, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0x7f, 0x26, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x5e, 0x69, 0xe2, 0x60, 0x91, 0xb0, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x7a, 0x6b, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0xce, 0x26, 0x86, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xc8, 0x4d, 0x1c, 0x2c, 0x5a, 0x97, 0x38, 0x18, 0x77, 0x50, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x42, 0xc2, 0x89, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x7e, 0x9c, 0x38, 0x58, 0x48, 0x39, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x64, 0x74, 0xe2, 0xd0, 0x9f, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x14, 0x76, 0xe2, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x2d, 0xf2, 0xc4, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xe2, 0xe9, 0x89, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc5, 0xde, 0x13, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x9f, 0x3e, 0x71, 0xb0, 0xd2, 0x7d, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x35, 0xff, 0xc4, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xa2, 0x40, 0x71, 0x50, 0xc6, 0xed, 0x1c, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xd1, 0x05, 0xc5, 0x21, 0x86, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x6a, 0x11, 0x8a, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe5, 0x2d, 0x14, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0x71, 0x28, 0x0e, 0xa9, 0x9a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x4a, 0x44, 0x71, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x06, 0x8a, 0xe2, 0x20, 0x45, 0xfb, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x72, 0x51, 0x1c, 0x2c, 0x0a, 0xa3, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0x6e, 0x14, 0x07, 0xeb, 0xe5, 0x28, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x24, 0x48, 0x71, 0x50, 0x2e, 0xf6, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb4, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x56, 0x92, 0x62, 0x98, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xd8, 0x49, 0x71, 0x48, 0x1d, 0x1c, 0x8f, 0x8f, 0x6f, 0xc3, 0x6e, 0x50, 0x2c, 0x4a, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0x5b, 0x29, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x05, 0xb8, 0x14, 0x07, 0x69, 0x2f, 0xd5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x22, 0x62, 0x8a, 0x83, 0xe4, 0x21, 0xe6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x07, 0x4d, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x55, 0xdb, 0x14, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x63, 0x4e, 0x71, 0xb0, 0x58, 0x9d, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x79, 0x3e, 0xc5, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x71, 0x41, 0xc5, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x3a, 0x88, 0x8a, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x65, 0x1b, 0x15, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x5a, 0x93, 0x8a, 0x43, 0xc3, 0xaf, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xa1, 0x4c, 0xc5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x9a, 0xa7, 0xe2, 0x10, 0xc3, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x51, 0x52, 0xc5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x51, 0x55, 0x1c, 0x2c, 0x6f, 0x2c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x58, 0x56, 0x71, 0xe8, 0x4f, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x30, 0x57, 0x71, 0x68, 0xf8, 0x75, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x0b, 0xac, 0x18, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xea, 0x58, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xc5, 0xac, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x39, 0x5a, 0x71, 0x68, 0x24, 0x78, 0x58, 0xdf, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x85, 0xb0, 0x15, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xb6, 0x5b, 0x71, 0xb0, 0xa6, 0x1d, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x15, 0x73, 0xc5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x5d, 0x57, 0x1c, 0xac, 0x60, 0x88, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xa1, 0x57, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xdd, 0x7c, 0xc5, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x3a, 0xff, 0x8a, 0x43, 0x23, 0xc1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x91, 0x82, 0xc5, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x9a, 0x0a, 0x8b, 0x83, 0xf5, 0x34, 0x11, 0x07, 0xe3, 0x0e, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x8c, 0x58, 0x0c, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x70, 0xb1, 0x38, 0x58, 0x4f, 0x13, 0x71, 0x90, 0x6e, 0x29, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x06, 0xb2, 0x38, 0x44, 0xf3, 0x38, 0x74, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x7e, 0xb2, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xa8, 0x65, 0x31, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xac, 0xcc, 0xe2, 0xd0, 0x48, 0x70, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf5, 0x71, 0x16, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcb, 0xf9, 0x2c, 0x86, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x1e, 0x5a, 0x1c, 0x04, 0xa5, 0xf7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x9c, 0xb4, 0x38, 0x48, 0xd1, 0xbe, 0x3e, 0xac, 0x6f, 0x1e, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x40, 0x6a, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x73, 0xb5, 0x38, 0x48, 0x7f, 0x7a, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa5, 0xba, 0x16, 0x07, 0x41, 0xe9, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0x8d, 0x2d, 0x0e, 0x82, 0xd2, 0xfb, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xba, 0x6a, 0x8b, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x04, 0xb7, 0x38, 0x58, 0x51, 0x6e, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x80, 0xde, 0xe2, 0x20, 0x04, 0xc0, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0x03, 0x2e, 0x0e, 0x06, 0x22, 0xf5, 0x71, 0x68, 0xd8, 0x0d, 0x16, 0x27, 0x5c, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcb, 0x26, 0x2e, 0x86, 0xdd, 0x60, 0x29, 0xc6, 0xc5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x42, 0xe4, 0x62, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xc7, 0x72, 0x71, 0x90, 0xf6, 0x52, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xc6, 0xb9, 0x38, 0x48, 0x1e, 0x62, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf5, 0x44, 0x17, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x02, 0x75, 0x71, 0xb0, 0x98, 0xea, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x27, 0x76, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb5, 0x6d, 0x17, 0x07, 0xeb, 0xe4, 0x2e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x95, 0x80, 0x17, 0x87, 0x86, 0x5f, 0xc7, 0xa1, 0xe3, 0xd0, 0xb0, 0x1b, 0xac, 0x4b, 0xbc, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x4c, 0x5e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0x3b, 0x2f, 0x0e, 0xd2, 0x5e, 0xaa, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd5, 0xa9, 0x17, 0x07, 0xc9, 0x43, 0xcc, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x12, 0xdb, 0x8b, 0x83, 0xe4, 0x21, 0xe6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x25, 0x7c, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x85, 0xcd, 0x17, 0x07, 0x8b, 0xa9, 0x2e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x75, 0xde, 0x17, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x9b, 0x7e, 0x71, 0x30, 0x62, 0x5b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x75, 0xfa, 0x17, 0x87, 0x86, 0x5f, 0xc7, 0xa1, 0xe3, 0xd0, 0xb0, 0x1b, 0xac, 0x1a, 0xc0, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x33, 0x60, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0x2e, 0x30, 0x0e, 0xd2, 0x5e, 0xaa, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x85, 0x23, 0x18, 0x07, 0xc9, 0x43, 0xcc, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xea, 0x17, 0x8c, 0x83, 0xe4, 0x21, 0xe6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x09, 0x0f, 0xc6, 0x41, 0xf2, 0x10, 0xf3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x43, 0xc2, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xd2, 0x29, 0x8c, 0x83, 0xc5, 0x54, 0x17, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x52, 0x32, 0x8c, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x7f, 0xc3, 0x38, 0x58, 0x4a, 0x87, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x17, 0xc4, 0x38, 0x34, 0xfc, 0x3a, 0x0e, 0x1d, 0x87, 0x86, 0xdd, 0x60, 0x8d, 0xc5, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x70, 0x12, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xde, 0x89, 0x71, 0x90, 0xf6, 0x52, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0x54, 0x31, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xa8, 0x16, 0xe3, 0x60, 0x31, 0xd5, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xc4, 0x18, 0x63, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xab, 0xa2, 0x31, 0x0e, 0x16, 0x58, 0x63, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0xc8, 0x31, 0x0e, 0x0d, 0xbf, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb6, 0xa1, 0xf9, 0xfa, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xa3, 0xc7, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xca, 0x7f, 0x8c, 0x83, 0xb5, 0x43, 0x0d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x3a, 0x88, 0x8c, 0x43, 0xc3, 0xaf, 0xe3, 0xd0, 0xb0, 0x1b, 0xac, 0xc2, 0xc8, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x87, 0x64, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x65, 0xc9, 0x38, 0x58, 0x13, 0x93, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xd7, 0xc9, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x02, 0xa3, 0x8c, 0x83, 0xa5, 0x4a, 0x19, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0xb3, 0x32, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe5, 0x63, 0x19, 0x07, 0x69, 0x1b, 0xcf, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x1a, 0xb8, 0x8c, 0x83, 0xa5, 0x36, 0x05, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x8e, 0x2f, 0x63, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0x0f, 0x33, 0x0e, 0xd6, 0x31, 0x66, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xdb, 0xcc, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x52, 0xd3, 0x8c, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb5, 0xb1, 0x19, 0x07, 0x6b, 0x6c, 0x33, 0x0e, 0x46, 0x48, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xc4, 0x38, 0xe3, 0xd0, 0xf0, 0xeb, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x49, 0x9d, 0x71, 0xb0, 0x2a, 0x3b, 0xe3, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x2b, 0x9e, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x95, 0xed, 0x19, 0x07, 0x4b, 0xe4, 0x33, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd5, 0xff, 0x19, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xb0, 0xa0, 0x31, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xbe, 0x42, 0xe3, 0x60, 0x8d, 0x6d, 0xc6, 0x41, 0xc9, 0xd0, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x44, 0xd1, 0x38, 0x34, 0xfc, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xe2, 0x46, 0x63, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0x83, 0x34, 0x86, 0xdd, 0x60, 0xc5, 0x91, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x16, 0x4a, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xb2, 0xa5, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x2b, 0xd3, 0x38, 0x48, 0xdb, 0x78, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xc7, 0x69, 0x1c, 0xa4, 0x2d, 0x50, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xfa, 0x3e, 0x8d, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x51, 0xa2, 0xc6, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x52, 0x6a, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xed, 0xa7, 0xc6, 0xc1, 0x3a, 0x52, 0x8d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0xb2, 0x1a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x4a, 0x5e, 0x8d, 0x43, 0x2b, 0xf1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x86, 0xac, 0x71, 0x50, 0xc6, 0xed, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x59, 0x6b, 0x0c, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0xe3, 0x1a, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xe6, 0xae, 0x71, 0xb0, 0x96, 0xdd, 0x61, 0x90, 0x0c, 0xca, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xff, 0x6b, 0x1c, 0x52, 0x07, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x2e, 0xb1, 0x71, 0x68, 0xf8, 0x75, 0x1c, 0x1a, 0x76, 0x83, 0xe5, 0x1a, 0x1b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x92, 0x91, 0x8d, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x61, 0xcb, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xfa, 0x66, 0xe3, 0x20, 0x6d, 0xe3, 0x79, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x42, 0xb4, 0x71, 0x30, 0x1a, 0x7c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x09, 0xd4, 0xc6, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x6e, 0x6b, 0x63, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0xcd, 0x36, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x3a, 0x6e, 0xe3, 0x60, 0x2d, 0x20, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x5a, 0x70, 0xe3, 0x70, 0xb4, 0x1f, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x05, 0x94, 0x1b, 0x87, 0x86, 0x5f, 0xc7, 0xa1, 0x61, 0x37, 0x58, 0xbf, 0xb9, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x2c, 0xdd, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xc0, 0x6e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xab, 0x74, 0x37, 0x0e, 0xd2, 0x36, 0x9e, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa5, 0xc6, 0x1b, 0x07, 0x09, 0x92, 0xd0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x5a, 0x7a, 0xe3, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xe2, 0xbd, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x65, 0xe9, 0x1b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x49, 0xbf, 0x71, 0xb0, 0x8e, 0x54, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x6d, 0x01, 0xc7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x04, 0x82, 0xe3, 0x20, 0x51, 0xee, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x71, 0x70, 0x1c, 0x94, 0x71, 0x3b, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x55, 0x2a, 0x1c, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xcd, 0x0d, 0xc7, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x09, 0x71, 0x1c, 0xac, 0x65, 0x77, 0x18, 0x24, 0xc3, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x9c, 0xe2, 0x38, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xd4, 0x8c, 0xe3, 0xd0, 0xf0, 0xeb, 0x38, 0x34, 0xec, 0x06, 0x6b, 0xdd, 0x38, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x55, 0x78, 0x1c, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x62, 0x41, 0x8e, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x45, 0x23, 0xc7, 0x41, 0xda, 0xc6, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x2c, 0x93, 0xe3, 0x20, 0xc1, 0xe3, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x96, 0x72, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcb, 0x61, 0x39, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x84, 0x97, 0x63, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xab, 0x8e, 0x39, 0x0e, 0xd6, 0x91, 0x6a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xc3, 0xe6, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x8b, 0x73, 0x1c, 0x24, 0x94, 0x9d, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x9a, 0x77, 0x8e, 0x83, 0xc2, 0x0e, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xa2, 0x9f, 0x63, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x4f, 0xe8, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x9a, 0x8a, 0x8e, 0x83, 0xb5, 0xec, 0x0e, 0x83, 0x64, 0x98, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x45, 0x26, 0x1d, 0x87, 0xd4, 0xc1, 0x71, 0xe8, 0x78, 0x7c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0xe5, 0x74, 0x1c, 0x1a, 0x7e, 0x1d, 0x87, 0x86, 0xdd, 0x60, 0x5d, 0x50, 0xc7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x4a, 0xa9, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x4c, 0xd5, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xf8, 0xea, 0x38, 0x48, 0xdb, 0x78, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0xad, 0x75, 0x1c, 0xac, 0x11, 0xea, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa5, 0x77, 0x1d, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x7a, 0xc1, 0x8e, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x71, 0xec, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xb2, 0xcc, 0x8e, 0x83, 0x75, 0xa4, 0x1a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0x55, 0x3b, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf5, 0xb4, 0x1d, 0x07, 0xe9, 0x50, 0x1e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x28, 0xb8, 0xe3, 0xa0, 0xb0, 0xc3, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x79, 0xee, 0x18, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0xb8, 0x3b, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xe8, 0xbc, 0xe3, 0x60, 0x2d, 0xbb, 0xc3, 0x20, 0x19, 0x44, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0xf1, 0x3b, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x5d, 0xf0, 0x38, 0x34, 0xfc, 0x3a, 0x0e, 0x0d, 0xb2, 0x0d, 0xcd, 0xd7, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xbd, 0x86, 0xc7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xac, 0xc4, 0xe3, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x0b, 0xe3, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf5, 0x3b, 0x1e, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x72, 0xe4, 0x71, 0xb0, 0x8e, 0x54, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x09, 0x96, 0xc7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x50, 0xcc, 0xe3, 0xe0, 0xc8, 0x53, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0xdd, 0x3c, 0x0e, 0xfd, 0xc9, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0xf8, 0x3c, 0x06, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x92, 0x44, 0x8f, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xa3, 0xf4, 0x38, 0x58, 0xcb, 0xee, 0x30, 0x48, 0x06, 0x65, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0x4b, 0x3d, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xc7, 0xf5, 0x38, 0x34, 0xfc, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xda, 0x62, 0x8f, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x86, 0xf6, 0x38, 0x58, 0x51, 0x6e, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x38, 0xdc, 0xe3, 0x20, 0xa4, 0xc0, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcb, 0xde, 0x3d, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0xe9, 0x7b, 0x0c, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x2b, 0xf8, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x42, 0x7c, 0x1c, 0x04, 0x0f, 0xf7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x9c, 0xe3, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x9c, 0x7c, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcb, 0x62, 0x3e, 0x0e, 0xd2, 0x36, 0x9e, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x6d, 0xcf, 0xc7, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x24, 0xe9, 0xe3, 0x20, 0x04, 0xc0, 0x8f, 0x43, 0xc3, 0x6e, 0xb0, 0x2a, 0xea, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xaf, 0xf5, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x15, 0x66, 0x1f, 0x07, 0x89, 0xd1, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0xed, 0x3e, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x07, 0x7e, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x45, 0xe3, 0xc7, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x02, 0xcc, 0x8f, 0x83, 0x13, 0x21, 0xf4, 0xc1, 0x89, 0xd9, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xa8, 0xfa, 0x71, 0x68, 0xf8, 0x75, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xdd, 0x7e, 0x1c, 0x2c, 0x0a, 0xa3, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa5, 0xc3, 0x1f, 0x07, 0xeb, 0xe5, 0x28, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0xa3, 0x3f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xf7, 0xfe, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x12, 0xf5, 0x8f, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0xf5, 0x1f, 0x07, 0x27, 0x42, 0xe8, 0x83, 0xc3, 0xa6, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xf6, 0x00, 0xe4, 0xd0, 0xf0, 0xeb, 0x38, 0x34, 0x88, 0x16, 0x84, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xc6, 0x02, 0xe4, 0xe0, 0xa4, 0xb7, 0x7b, 0x3c, 0x3e, 0x0e, 0x0d, 0xbb, 0x41, 0xa9, 0x13, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x37, 0x01, 0x19, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x1e, 0x03, 0x32, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x98, 0x07, 0xe4, 0xe0, 0x1c, 0xb9, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcb, 0x91, 0x40, 0x0e, 0xe3, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xa3, 0x02, 0x19, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xf5, 0x05, 0x32, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x4a, 0x0d, 0xe4, 0x60, 0x8d, 0xb6, 0xc2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xb4, 0x03, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xe2, 0x40, 0x90, 0x83, 0xb4, 0x6b, 0xf4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb5, 0x92, 0x20, 0x87, 0xfe, 0xe4, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x80, 0x82, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0x55, 0x41, 0x0e, 0xad, 0xc4, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x95, 0x2d, 0xc8, 0xe1, 0x68, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x1d, 0x06, 0x39, 0xb4, 0x00, 0x3a, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0xa1, 0x41, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x74, 0x1b, 0xe4, 0x20, 0x31, 0x5a, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x25, 0x3b, 0xc8, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xdf, 0x83, 0x1c, 0x2c, 0x6f, 0x2c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x8c, 0x10, 0x72, 0xe8, 0x4f, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x62, 0x11, 0x72, 0x68, 0xf8, 0x75, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x24, 0x09, 0x39, 0x18, 0xbc, 0x93, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x19, 0x13, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xdd, 0x09, 0x39, 0x48, 0x1e, 0x62, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x1f, 0x85, 0x1c, 0xa4, 0xbd, 0x54, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x0a, 0xaa, 0x90, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xfa, 0x0a, 0x39, 0x48, 0x8c, 0x96, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x03, 0x17, 0x32, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x65, 0x7b, 0x21, 0x07, 0xcb, 0x1b, 0x0b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x31, 0x86, 0x1c, 0xfa, 0x93, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x67, 0x86, 0x1c, 0x1a, 0x7e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcb, 0x50, 0x43, 0x0e, 0x06, 0xef, 0xe4, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0xd5, 0x86, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0x7f, 0x43, 0x0e, 0x92, 0x87, 0x98, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb5, 0xcb, 0x21, 0x07, 0xc9, 0x43, 0xcc, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xfc, 0x3a, 0x64, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0xc6, 0x43, 0x0e, 0x12, 0xa3, 0xa5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xd0, 0x87, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xcd, 0x7f, 0xc8, 0xc1, 0xf2, 0xc6, 0x82, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x35, 0x10, 0x22, 0x87, 0xfe, 0xe4, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa5, 0x1d, 0x22, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x8e, 0x22, 0x72, 0xb0, 0x32, 0xb7, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x9e, 0x23, 0x72, 0x68, 0xf8, 0x75, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x25, 0x89, 0x1c, 0x0c, 0xde, 0xc9, 0xe3, 0xd0, 0x20, 0xdb, 0xd0, 0x7c, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x63, 0x89, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xfd, 0x98, 0xc8, 0xc1, 0xda, 0xa1, 0x86, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x35, 0x9d, 0xc8, 0xa1, 0xe1, 0xd7, 0x71, 0xe8, 0xf8, 0x76, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x3f, 0xf6, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0x0f, 0x45, 0x0e, 0x82, 0x9c, 0xbf, 0xe3, 0xf1, 0xc1, 0xaa, 0x47, 0x91, 0x83, 0xe5, 0x99, 0x44, 0x1b, 0x2c, 0xbe, 0x66, 0x5b, 0x0d, 0xd6, 0x91, 0xe2, 0x6d, 0xb0, 0x7e, 0x15, 0x6f, 0x81, 0x1f, 0x7b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x8a, 0xe8, 0x37, 0x28, 0xbb, 0x64, 0x07, 0x7e, 0xec, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x46, 0xd3, 0xff, 0x60, 0x09, 0x31, 0xde, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x31, 0xd1, 0x6f, 0x78, 0x50, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6e, 0x07, 0xfc, 0x0d, 0xca, 0x32, 0xec, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x9f, 0x8d, 0xb7, 0xe1, 0xcf, 0xa5, 0x0d, 0x56, 0x81, 0xe3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xdc, 0x1c, 0xef, 0x20, 0xfd, 0x38, 0x78, 0x96, 0x59, 0x83, 0x82, 0xef, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x36, 0x02, 0x7f, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x5c, 0x1f, 0x6f, 0xc3, 0x9f, 0x4b, 0x1b, 0xac, 0x0a, 0xc8, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xf9, 0x41, 0xde, 0xc1, 0x49, 0x4f, 0x74, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x89, 0x02, 0x7f, 0xc3, 0x25, 0xb5, 0xc1, 0x1a, 0x8a, 0xbc, 0x35, 0x28, 0xd1, 0x95, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x2e, 0xf0, 0x0f, 0x56, 0x76, 0xe4, 0xb5, 0x1a, 0xac, 0x10, 0xc9, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xd0, 0xc0, 0xdf, 0x60, 0x39, 0x24, 0xd3, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x72, 0xe0, 0x6f, 0xf8, 0xfa, 0x65, 0x83, 0xb5, 0x31, 0x79, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x21, 0xcc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x9d, 0x07, 0xfe, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x05, 0xc1, 0x3f, 0x58, 0xeb, 0xd8, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x13, 0x09, 0xfe, 0x41, 0x51, 0x29, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc3, 0x09, 0xfe, 0xc1, 0x02, 0xa8, 0xbc, 0x0e, 0xa7, 0xd8, 0x1a, 0xac, 0xa2, 0xc8, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x4e, 0xc1, 0xdf, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x11, 0xcb, 0x3b, 0x38, 0xe9, 0x89, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xae, 0xe0, 0x6f, 0xb0, 0x1c, 0x92, 0x69, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x5c, 0xf0, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x14, 0x0c, 0xfe, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x04, 0xcc, 0x3b, 0x48, 0xec, 0x0c, 0x3e, 0x58, 0x73, 0x98, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb3, 0x0c, 0xfe, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xa6, 0xc1, 0x3f, 0x58, 0xb7, 0x0e, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd1, 0x0d, 0xfe, 0xc1, 0x22, 0x78, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x73, 0xf0, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfa, 0x0e, 0xfe, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xf0, 0xc1, 0x3f, 0x58, 0xec, 0x9a, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6e, 0x10, 0xfe, 0xe1, 0x31, 0x99, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x2b, 0xc2, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x95, 0x47, 0xf8, 0x07, 0xe9, 0x4d, 0xb3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x2c, 0xe1, 0x1f, 0xac, 0x55, 0xce, 0xab, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x9b, 0xf0, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x04, 0x14, 0xfe, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x07, 0xcf, 0x3b, 0x48, 0x81, 0x0d, 0x3e, 0x58, 0x73, 0x98, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa4, 0x14, 0xfe, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x8d, 0x54, 0xf8, 0x07, 0x8b, 0xf0, 0xe4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0xae, 0xf0, 0x37, 0x7c, 0x85, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x94, 0x85, 0xbf, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x76, 0xa0, 0x77, 0x70, 0xd2, 0x13, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xd9, 0xc2, 0xdf, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0x19, 0x73, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc5, 0x5d, 0xf8, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf8, 0x0b, 0xff, 0x60, 0x49, 0xd9, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x3d, 0x62, 0xf8, 0x07, 0x4b, 0xca, 0xe6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x25, 0xc3, 0x3f, 0x28, 0xb6, 0x95, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x38, 0xc3, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x15, 0x69, 0xf8, 0x07, 0x4b, 0xca, 0xe6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x5c, 0xc3, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb9, 0x6d, 0xf8, 0x07, 0x27, 0x82, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xe2, 0xf0, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe3, 0x1c, 0xfe, 0xc1, 0x32, 0xec, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0xee, 0xf0, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x57, 0x1e, 0xfe, 0xc1, 0x82, 0x30, 0xbd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0xf9, 0xf0, 0x37, 0x5c, 0x52, 0x1b, 0xac, 0x58, 0xd3, 0x5b, 0x83, 0x45, 0x88, 0x79, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0x7f, 0xf8, 0x07, 0x2b, 0xe8, 0xf4, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0x06, 0xf1, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0xc6, 0x9c, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x5f, 0x88, 0x7f, 0xb0, 0xe8, 0x50, 0xaf, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x47, 0xc4, 0xdf, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x29, 0x8b, 0xf8, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xa4, 0x11, 0x7f, 0xc3, 0xe7, 0x2e, 0x1b, 0xac, 0xf7, 0xd4, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x78, 0xc4, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x49, 0x91, 0xf8, 0x07, 0x45, 0x26, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe9, 0x94, 0xf8, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa9, 0x97, 0xf8, 0x07, 0xcb, 0x70, 0xf5, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x47, 0x13, 0x7f, 0xc3, 0xe7, 0x2e, 0x1b, 0xac, 0x1c, 0xd6, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xe1, 0xc4, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0x9e, 0xf8, 0x07, 0x25, 0xd1, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x01, 0xa2, 0xf8, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc9, 0xa4, 0xf8, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd8, 0x14, 0xff, 0xf0, 0x98, 0xcc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x0d, 0xa9, 0xf8, 0x87, 0xc7, 0x64, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x78, 0x15, 0xff, 0x60, 0x19, 0xae, 0x5e, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xb9, 0xe2, 0x6f, 0xf8, 0x0a, 0x67, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x13, 0x16, 0x7f, 0xc3, 0x5f, 0x34, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x4e, 0x60, 0xef, 0xe0, 0xa4, 0x27, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x28, 0x8b, 0xbf, 0xc1, 0xc9, 0x41, 0x6e, 0x83, 0x95, 0x0f, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x40, 0xfa, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x32, 0x49, 0xff, 0x83, 0x95, 0x1c, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x58, 0xfa, 0x1f, 0x2c, 0x2d, 0xd9, 0x6b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xf3, 0xb2, 0x77, 0xb0, 0x76, 0x66, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xa7, 0x16, 0x7f, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xdc, 0xe2, 0x1f, 0xac, 0x5b, 0x87, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x36, 0x17, 0xff, 0x60, 0xcd, 0xc6, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x29, 0xbc, 0xf8, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xcb, 0x17, 0xff, 0xe0, 0x44, 0xd0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7f, 0x30, 0xfe, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x21, 0xc6, 0x3f, 0x28, 0x88, 0x96, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x3e, 0xc6, 0x3f, 0x28, 0x2a, 0xc5, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x54, 0xc6, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc5, 0xcc, 0xf8, 0x07, 0x6b, 0xea, 0xf6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x83, 0xc6, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x95, 0xd2, 0xf8, 0x07, 0xab, 0x9c, 0xe8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xb1, 0xc6, 0x3f, 0x58, 0x5a, 0xb2, 0x57, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x99, 0x8d, 0x7f, 0x50, 0x6c, 0x2b, 0xd7, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x06, 0x73, 0xef, 0xe0, 0x9c, 0x9b, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xce, 0x8d, 0xbf, 0xc1, 0xc9, 0x41, 0x6e, 0x83, 0x35, 0xa5, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x44, 0xe9, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9c, 0x29, 0xfd, 0x83, 0x95, 0x1c, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x5b, 0xe9, 0x1f, 0x2c, 0x2d, 0xd9, 0x6b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xfa, 0xbb, 0x77, 0x90, 0xb2, 0xc5, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xf9, 0x8d, 0xbf, 0xe1, 0x13, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0xc3, 0xf1, 0x37, 0x7c, 0xee, 0xb2, 0xc1, 0x4a, 0xe9, 0xbd, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xde, 0x71, 0xfc, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x5e, 0x8e, 0x7f, 0xb0, 0xe8, 0x7b, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc6, 0x74, 0xfc, 0x83, 0xa5, 0x25, 0x7b, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xb0, 0xe3, 0x6f, 0x70, 0x1c, 0x9b, 0xd8, 0xa0, 0x44, 0x57, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xdf, 0x1d, 0x7f, 0x83, 0x62, 0x12, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0xf5, 0xef, 0x1d, 0x14, 0xa9, 0x98, 0x07, 0xcb, 0x07, 0xf8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x8b, 0xc7, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x79, 0xf3, 0xf8, 0x07, 0x8b, 0xf0, 0xe4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xaf, 0xc7, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0xf8, 0xf8, 0x07, 0x4b, 0x3f, 0xf8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xdd, 0xc7, 0x3f, 0x58, 0x8b, 0xc2, 0x57, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x19, 0xff, 0xf8, 0x1b, 0x1c, 0xc7, 0x26, 0x36, 0x28, 0xd1, 0x95, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x0f, 0xc8, 0xdf, 0xf0, 0x36, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x07, 0x41, 0xfe, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0x08, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd9, 0x08, 0xf9, 0x1b, 0x14, 0x93, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xc8, 0x89, 0xef, 0x20, 0x04, 0x1f, 0x0e, 0x02, 0x3c, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc4, 0x85, 0xfc, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xda, 0x90, 0x7f, 0x78, 0xf0, 0x66, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xfd, 0x21, 0xff, 0xe0, 0xa0, 0x4c, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x9b, 0x44, 0xfe, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xa4, 0xc8, 0x3f, 0x3c, 0x78, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x6c, 0x91, 0x7f, 0x70, 0x08, 0x9d, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x2a, 0x23, 0x7f, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x6d, 0xe4, 0x1f, 0x1e, 0xbc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xed, 0xc8, 0x3f, 0x38, 0x9c, 0xf3, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x64, 0x90, 0x7f, 0xb0, 0x52, 0x92, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xdc, 0x90, 0xfc, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x4a, 0x74, 0xe5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x48, 0xf2, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x99, 0x49, 0xfe, 0xc1, 0x22, 0x3c, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0x51, 0xf2, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc2, 0x4a, 0xfe, 0xc1, 0x22, 0x5b, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x5d, 0xf2, 0x0f, 0x56, 0xfd, 0xf2, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x66, 0x4c, 0xfe, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x25, 0xba, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x49, 0x34, 0xf9, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xc8, 0x26, 0xff, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb9, 0x38, 0xf9, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x5d, 0x27, 0xff, 0x60, 0x91, 0x2d, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x89, 0x3e, 0xf9, 0x07, 0x6b, 0xd5, 0xf9, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x2f, 0x28, 0x7f, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x0d, 0xe5, 0x1f, 0x2c, 0xc2, 0x93, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xbe, 0x28, 0xff, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x65, 0x48, 0xf9, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x52, 0x29, 0xff, 0x60, 0x91, 0x2d, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x35, 0x4e, 0xf9, 0x07, 0x4b, 0x28, 0xfa, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x33, 0x2a, 0x7f, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x12, 0x5d, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x24, 0xaa, 0xfc, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x64, 0x95, 0x7f, 0xb0, 0x08, 0x4f, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5c, 0xac, 0xfc, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xae, 0x95, 0x7f, 0xb0, 0x1e, 0xa7, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x44, 0xaf, 0xfc, 0x83, 0x05, 0x42, 0x7d, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x16, 0x96, 0xbf, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x89, 0xae, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x05, 0x59, 0xfe, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x30, 0xcb, 0x3f, 0x58, 0x84, 0x27, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x21, 0x5a, 0xfe, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x55, 0xcb, 0x3f, 0x58, 0x8f, 0xd3, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x95, 0x5b, 0xfe, 0xc1, 0xb2, 0xb6, 0xbe, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x89, 0xcb, 0xdf, 0xe0, 0x38, 0x36, 0xb1, 0x41, 0x89, 0xae, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x04, 0x5d, 0xfe, 0x86, 0xb7, 0x59, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0xec, 0xf2, 0x0f, 0x96, 0x15, 0xf6, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x90, 0x97, 0xbf, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0xf6, 0xf2, 0x0f, 0xd6, 0x6c, 0xbc, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xd7, 0x97, 0x7f, 0x50, 0x6c, 0x2b, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x08, 0x98, 0xbf, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0x05, 0xf3, 0x0f, 0xd6, 0xad, 0xc3, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x4f, 0x98, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x0e, 0xf3, 0x0f, 0xd6, 0xe3, 0xf4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xac, 0x98, 0x7f, 0xb0, 0x68, 0xb7, 0xaf, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf5, 0xc4, 0x7d, 0x07, 0x0b, 0x93, 0xfb, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0x1c, 0xf3, 0x37, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x19, 0x64, 0xfe, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0x9f, 0xdd, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x25, 0x99, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0x29, 0xf3, 0x0f, 0x52, 0xc4, 0x44, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xc1, 0xcc, 0x3f, 0x58, 0x5a, 0xb2, 0xd7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xae, 0x66, 0xfe, 0x06, 0xc7, 0xb1, 0x89, 0x0d, 0x4a, 0x74, 0xe5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x3b, 0xf3, 0x37, 0x28, 0x26, 0x31, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xb5, 0x80, 0xdf, 0x41, 0x91, 0x8a, 0x79, 0xb0, 0x2a, 0xc1, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0c, 0xd0, 0xfc, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x21, 0x9a, 0x7f, 0xb0, 0x08, 0x4f, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x44, 0xd2, 0xfc, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x6b, 0x9a, 0x7f, 0xb0, 0xf4, 0x83, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x28, 0xd5, 0xfc, 0x83, 0xa5, 0x2a, 0x7e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xdb, 0x9a, 0xbf, 0x41, 0x61, 0xa8, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xec, 0x6b, 0xfe, 0xc1, 0xba, 0x75, 0xb8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x12, 0xd9, 0xfc, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x44, 0x9b, 0xbf, 0xe1, 0x11, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x6c, 0xf3, 0x37, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x24, 0x6e, 0xfe, 0xe1, 0xc1, 0x9b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x66, 0xdd, 0xfc, 0x83, 0x75, 0x58, 0x7e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xf5, 0xe6, 0x6f, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc6, 0xdf, 0xfc, 0xc3, 0x83, 0x37, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc9, 0xc1, 0xf9, 0x07, 0xab, 0xdb, 0xfc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x23, 0xce, 0xdf, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x89, 0xc6, 0xf9, 0x87, 0x07, 0x6f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x91, 0xf3, 0x0f, 0xd6, 0x0c, 0xfa, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xb6, 0x9c, 0xbf, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0b, 0x9b, 0xf3, 0x0f, 0x0f, 0xde, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x3f, 0xe7, 0x1f, 0xac, 0xc4, 0xf4, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xca, 0xe9, 0xfc, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x59, 0x9d, 0x7f, 0xb0, 0x04, 0xd5, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x08, 0xec, 0xfc, 0x83, 0x45, 0xf0, 0x6e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x6a, 0xe7, 0x1f, 0x14, 0xdb, 0xca, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x73, 0xe7, 0x6f, 0x70, 0x1c, 0x9b, 0xd8, 0xa0, 0x44, 0x57, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf9, 0x3b, 0x7f, 0xc3, 0xdb, 0xac, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf1, 0xe1, 0xf9, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x82, 0x3c, 0xff, 0xf0, 0xe0, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x94, 0x79, 0xfe, 0xc1, 0x4a, 0x4c, 0xbf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0xd2, 0xf3, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xca, 0x7a, 0xfe, 0xc1, 0x22, 0x3c, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0xdb, 0xf3, 0x0f, 0x96, 0xa0, 0xfa, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x01, 0x9f, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0xe4, 0xf3, 0x0f, 0xd6, 0xe3, 0xf4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x5e, 0x9f, 0x7f, 0xb0, 0x12, 0xd3, 0xaf, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0xf2, 0xf3, 0x37, 0x38, 0x8e, 0x4d, 0x6c, 0x50, 0xa2, 0x2b, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xc3, 0x9f, 0xbf, 0xe1, 0x6d, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2a, 0xff, 0xfc, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x07, 0xa0, 0x7f, 0x78, 0xf0, 0x66, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x56, 0x40, 0xff, 0x60, 0x75, 0x9b, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0x05, 0xfa, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xef, 0x40, 0xff, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf5, 0x09, 0xfa, 0x07, 0x8b, 0x66, 0xfe, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x63, 0xd0, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x9d, 0x0e, 0xfa, 0x07, 0xeb, 0x71, 0xfa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x91, 0xd0, 0x3f, 0x58, 0xdd, 0xe6, 0x57, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x8d, 0x15, 0xfa, 0x1b, 0x1c, 0xc7, 0x26, 0x36, 0x28, 0xd1, 0x95, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xc3, 0xd0, 0xdf, 0xf0, 0x36, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa4, 0x86, 0xfe, 0x86, 0x7f, 0x73, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xe5, 0xd0, 0x3f, 0x3c, 0x78, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xef, 0xa1, 0x7f, 0xb0, 0x66, 0xd0, 0x6f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xdc, 0x10, 0xfd, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x3b, 0xa2, 0x7f, 0xb0, 0x08, 0x4f, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x18, 0x13, 0xfd, 0x83, 0xd5, 0x7c, 0x7f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xa2, 0xe8, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6c, 0x15, 0xfd, 0x83, 0xf5, 0x38, 0x7d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xb9, 0xe8, 0x1f, 0xac, 0x19, 0xf4, 0xab, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe4, 0x18, 0xfd, 0x0d, 0x8e, 0x63, 0x13, 0x1b, 0x94, 0xe8, 0xca, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xd2, 0xe8, 0x6f, 0x78, 0x9b, 0x75, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd9, 0x46, 0x7f, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xe3, 0xe8, 0x1f, 0x1e, 0xbc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xd9, 0xd1, 0x3f, 0x58, 0x87, 0xe5, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7d, 0x8f, 0xfe, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xff, 0xd1, 0x3f, 0x58, 0x84, 0x27, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x9b, 0x90, 0xfe, 0xc1, 0x32, 0xe3, 0xbf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0x89, 0xf4, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc1, 0x91, 0xfe, 0xc1, 0x7a, 0x9c, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x95, 0xf4, 0x0f, 0xd6, 0x61, 0xf9, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7d, 0x93, 0xfe, 0xc1, 0xf2, 0xf0, 0xbf, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x55, 0xeb, 0x7f, 0x07, 0x47, 0x7d, 0x93, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0a, 0x2d, 0xfd, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xc3, 0xa5, 0xbf, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xbc, 0xf4, 0x0f, 0x8a, 0x9c, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4c, 0x30, 0xfd, 0x83, 0xa5, 0x25, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x8b, 0xe9, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x78, 0x32, 0xfd, 0x83, 0x45, 0x78, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x9d, 0xe9, 0x1f, 0xac, 0xe0, 0x00, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x3c, 0x4d, 0xff, 0xa0, 0xd8, 0x56, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x89, 0x4d, 0x7f, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xb9, 0xe9, 0x6f, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4a, 0x38, 0xfd, 0x83, 0x02, 0x36, 0x7f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x5b, 0x4e, 0xff, 0x60, 0x69, 0xc9, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0x75, 0xfa, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xe6, 0x4e, 0xff, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb1, 0x79, 0xfa, 0x07, 0xeb, 0xa0, 0x00, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xe0, 0xd3, 0x3f, 0x28, 0xb6, 0x95, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xf4, 0xd3, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb1, 0x80, 0xfa, 0x07, 0x2b, 0x39, 0xf6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x22, 0xd4, 0x3f, 0x58, 0x5a, 0xb2, 0xd7, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x50, 0x0e, 0xf0, 0xe0, 0xb4, 0x77, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x79, 0xa8, 0xbf, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x13, 0xf5, 0x0f, 0xd6, 0xad, 0xc3, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xc0, 0xa8, 0x7f, 0x50, 0x6c, 0x2b, 0xb7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x86, 0x04, 0x3c, 0x38, 0x6a, 0x9d, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x3c, 0xea, 0x6f, 0x70, 0x72, 0x90, 0xdb, 0x60, 0x4d, 0xe9, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe5, 0xd4, 0xfa, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xe2, 0x5a, 0xff, 0x60, 0x25, 0xc7, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0xda, 0xfa, 0x07, 0x4b, 0x4b, 0xf6, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0xdf, 0x02, 0x1e, 0x1c, 0xf5, 0x4d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x23, 0xf5, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfd, 0xa4, 0xfe, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xb1, 0xd4, 0x3f, 0x58, 0xf2, 0x0c, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x73, 0xa6, 0xfe, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xde, 0xd4, 0x3f, 0x28, 0x2a, 0xc5, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xf1, 0xd4, 0x3f, 0x48, 0x79, 0xad, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x12, 0x54, 0xff, 0xe0, 0xd4, 0xdc, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0xa3, 0xfa, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb5, 0xf8, 0x80, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x25, 0x41, 0xe0, 0xe1, 0x87, 0x9a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x02, 0x53, 0xfd, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x8a, 0x7c, 0xd9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0x50, 0xf5, 0x0f, 0x16, 0x5e, 0x04, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xbe, 0xaa, 0x7f, 0x78, 0x5a, 0xa7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x80, 0xd5, 0x3f, 0x58, 0x5a, 0xb2, 0xd7, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x94, 0x25, 0xf0, 0x60, 0x49, 0x4c, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd8, 0xac, 0xfe, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xac, 0xd5, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc1, 0xb7, 0xfa, 0x07, 0x4b, 0x9e, 0x01, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xdb, 0xd5, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x65, 0xbd, 0xfa, 0x07, 0xa7, 0xe6, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0x7f, 0xf5, 0x0f, 0x0e, 0xaf, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x09, 0xeb, 0x1f, 0x1c, 0x56, 0xe6, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xa4, 0x58, 0x7f, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x8c, 0x2d, 0x70, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xc2, 0x0b, 0x3c, 0xfc, 0x50, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x7b, 0xac, 0xbf, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x0a, 0xa6, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0xc9, 0xfa, 0x07, 0x0b, 0x2f, 0x02, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x6c, 0xd6, 0x3f, 0x3c, 0xad, 0x53, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x46, 0xeb, 0x1f, 0x2c, 0x2d, 0xd9, 0xab, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xcd, 0x67, 0xe0, 0xc1, 0x99, 0xd3, 0x75, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xbe, 0x5b, 0x7f, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x80, 0xeb, 0x6f, 0xf8, 0xdc, 0x65, 0x83, 0x05, 0xb2, 0x81, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x19, 0xe2, 0xfa, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x89, 0x5c, 0x7f, 0xc3, 0x83, 0x92, 0x1b, 0xa4, 0xe2, 0x2c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x99, 0xeb, 0x1f, 0x2c, 0x37, 0x0e, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x51, 0x5d, 0xff, 0x60, 0x69, 0xc9, 0x5e, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0xed, 0xfa, 0x1b, 0x3e, 0xb1, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xe9, 0x5d, 0x7f, 0xc3, 0xe7, 0x2e, 0x1b, 0x2c, 0xed, 0x0e, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x8a, 0xd7, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x71, 0xf3, 0xfa, 0x07, 0x45, 0xf1, 0xef, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x19, 0xf7, 0xfa, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd9, 0xf9, 0xfa, 0x07, 0x2b, 0xee, 0x03, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xe2, 0xd7, 0xdf, 0xa0, 0x30, 0x54, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xc8, 0x5f, 0xff, 0x60, 0xdd, 0x3a, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2d, 0xc0, 0xfe, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x16, 0xd8, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x09, 0x05, 0xfb, 0x87, 0x2f, 0x7e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x45, 0xd8, 0x3f, 0x58, 0xef, 0x21, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd2, 0xc2, 0xfe, 0xe1, 0x31, 0x99, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x6e, 0xd8, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x05, 0x10, 0xfb, 0x07, 0x27, 0x82, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x27, 0xf6, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x77, 0xc5, 0xfe, 0xc1, 0x32, 0xec, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x32, 0xf6, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xeb, 0xc6, 0xfe, 0x86, 0x07, 0x25, 0x37, 0x58, 0xd9, 0x12, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xdd, 0xb1, 0x7f, 0xb0, 0x76, 0x20, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf2, 0x90, 0xfd, 0x83, 0x15, 0xf7, 0x81, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x45, 0xc9, 0xfe, 0x41, 0xb1, 0xad, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xef, 0xc9, 0xfe, 0x86, 0x4f, 0x6c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x4f, 0xd9, 0xdf, 0xf0, 0xb9, 0xcb, 0x06, 0x6b, 0xe2, 0x04, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0x57, 0xf6, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x84, 0xcb, 0xfe, 0x41, 0x51, 0xfc, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6e, 0xcc, 0xfe, 0xc1, 0xa9, 0xb9, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x48, 0x9a, 0xfd, 0x83, 0x15, 0xf7, 0x81, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xdc, 0xec, 0x6f, 0x50, 0xda, 0x5b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x94, 0xb3, 0xbf, 0xe1, 0xcf, 0xa5, 0x0d, 0x56, 0x66, 0x0a, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xec, 0xec, 0x1f, 0x94, 0x59, 0xba, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x79, 0x3d, 0xfb, 0x1b, 0xbe, 0xc2, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xfe, 0xd9, 0xdf, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x95, 0x15, 0x3c, 0x38, 0xe9, 0x89, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x06, 0xed, 0x6f, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xec, 0xa1, 0xfd, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x5f, 0xb4, 0x7f, 0xb0, 0x3e, 0x59, 0x70, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x09, 0x69, 0xff, 0x60, 0x95, 0xb4, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x9d, 0x4a, 0xfb, 0x07, 0xc5, 0xb6, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x43, 0xd3, 0xfe, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x4b, 0x97, 0x05, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x94, 0xf7, 0x37, 0x7c, 0x1c, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xc1, 0xbc, 0x7f, 0xb0, 0x3e, 0x59, 0x70, 0x0d, 0x4a, 0x74, 0xe5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfa, 0xa7, 0xfd, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x96, 0xed, 0x0b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x22, 0xb5, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0xa8, 0xf6, 0x0f, 0x4a, 0xa2, 0xd9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xaf, 0xf6, 0x0f, 0x4e, 0xcd, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x6b, 0xed, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6a, 0xae, 0xfd, 0x83, 0xf5, 0xc9, 0x82, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x7c, 0xed, 0x1f, 0x1e, 0x93, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xea, 0xb0, 0xfd, 0x83, 0x15, 0xf7, 0x81, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x91, 0xed, 0x6f, 0x90, 0x64, 0x40, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa9, 0xd9, 0xfe, 0xc1, 0x89, 0xa0, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x98, 0xb5, 0xfd, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xd6, 0xb6, 0x7f, 0xb0, 0x0c, 0xfb, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x80, 0xb8, 0xfd, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x33, 0xb7, 0xbf, 0xe1, 0x41, 0xc9, 0x0d, 0x16, 0xff, 0xc3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xd5, 0xed, 0x1f, 0xac, 0x1d, 0x88, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x2e, 0x6f, 0x7f, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xee, 0xed, 0x1f, 0x94, 0xf8, 0xb8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0xfd, 0xed, 0x1f, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x08, 0xee, 0x1f, 0x2c, 0x82, 0x1b, 0xac, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x3b, 0xdc, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa1, 0x89, 0xfb, 0x07, 0xcb, 0xb0, 0xdf, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x6a, 0xdc, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x71, 0x8f, 0xfb, 0x1b, 0x1e, 0x94, 0xdc, 0x60, 0x65, 0x4b, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x65, 0xe4, 0xfe, 0xc1, 0xda, 0x81, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x2b, 0xf7, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf6, 0xe5, 0xfe, 0x41, 0x91, 0x89, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe0, 0xe6, 0xfe, 0x41, 0x51, 0x29, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x90, 0xe7, 0xfe, 0xc1, 0x22, 0xb8, 0xc1, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd2, 0xd1, 0xfd, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x5c, 0xba, 0xbf, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x4f, 0xf7, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x87, 0xea, 0xfe, 0x41, 0xd8, 0xdd, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xdc, 0xba, 0x7f, 0xb0, 0x3e, 0x59, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3e, 0xd8, 0xfd, 0x83, 0x53, 0x73, 0x5b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x25, 0xb3, 0xfb, 0x87, 0x07, 0x6f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xab, 0xdd, 0xdf, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x8d, 0xb7, 0xfb, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x36, 0x77, 0xff, 0x60, 0x7d, 0xb2, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xff, 0xee, 0xfe, 0xe1, 0xc1, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0x7c, 0xf7, 0x0f, 0x16, 0x04, 0xd1, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x02, 0xef, 0x1f, 0xac, 0xff, 0x1f, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x19, 0xde, 0x3f, 0x58, 0x81, 0x40, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x9f, 0xf1, 0xfe, 0x41, 0xb1, 0xad, 0x5c, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x92, 0x0b, 0xc2, 0x83, 0x63, 0xb1, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe4, 0xf3, 0xfe, 0x06, 0xe7, 0xfc, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0xa3, 0xf7, 0x0f, 0x16, 0xe1, 0xc9, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x40, 0xbd, 0x7f, 0xb0, 0x6e, 0x1d, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xcf, 0x7a, 0x7f, 0x83, 0x05, 0x98, 0x4d, 0x6b, 0xf8, 0xbe, 0x7d, 0x83, 0x63, 0x86, 0xe7, 0x06, 0x25, 0x74, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x11, 0x22, 0xdc, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x51, 0x13, 0xe1, 0x41, 0xe9, 0x4d, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xab, 0xb0, 0x08, 0x0f, 0x1f, 0xac, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x8a, 0x31, 0xc2, 0x83, 0x93, 0x9e, 0x68, 0x07, 0x61, 0x3a, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xca, 0x0f, 0xff, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x0a, 0xe2, 0x3f, 0x38, 0x11, 0xb4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x50, 0xc4, 0x7f, 0xb0, 0x94, 0x8f, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe8, 0x23, 0xfe, 0x83, 0x62, 0x5b, 0xb9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x56, 0xec, 0xfd, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xb5, 0xf7, 0x0f, 0x96, 0x4a, 0x12, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xe8, 0xbd, 0xbf, 0xc1, 0x4a, 0x17, 0xa7, 0x0d, 0x16, 0x75, 0x12, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x02, 0x52, 0xc2, 0x83, 0xa5, 0x25, 0x7b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe5, 0xe0, 0xfb, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x61, 0x7c, 0x7f, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x94, 0xef, 0x1f, 0x1e, 0xbc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x3b, 0xdf, 0x3f, 0x58, 0x16, 0x4c, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x71, 0xfa, 0xfe, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x83, 0xd7, 0xf7, 0x0f, 0x0f, 0xde, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xe4, 0xbe, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0xe0, 0xf7, 0x0f, 0x0a, 0xa2, 0xe5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0xe8, 0xf7, 0x0f, 0x8a, 0x4a, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xed, 0xf7, 0x0f, 0x96, 0x05, 0x13, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x9d, 0xbf, 0xbf, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x60, 0x4f, 0xb8, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x0d, 0x50, 0xb8, 0xe1, 0xcf, 0xa5, 0xc1, 0xe3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x32, 0x14, 0x1e, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0x17, 0x85, 0x1b, 0xfe, 0x5c, 0x1a, 0x7c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xb9, 0x48, 0xe1, 0xe1, 0x83, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xd7, 0x52, 0xb8, 0xe1, 0xcf, 0xa5, 0xc1, 0xe5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0xe4, 0x14, 0x1e, 0x9c, 0xf4, 0x44, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xe4, 0xdf, 0xdf, 0xa0, 0x30, 0x54, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd3, 0x7f, 0x7f, 0xc3, 0xdb, 0xac, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0x00, 0xfc, 0x07, 0x87, 0x73, 0xbe, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb6, 0x01, 0xfe, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x0b, 0xf8, 0x0f, 0x4e, 0x04, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x25, 0xf0, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xba, 0x05, 0xfe, 0x83, 0x65, 0xd8, 0x6f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0x3c, 0xf0, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa2, 0x08, 0xfe, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x36, 0xc1, 0x7f, 0x70, 0x38, 0xe7, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb8, 0x82, 0x7f, 0xc3, 0x83, 0x92, 0x1b, 0xac, 0x6c, 0x89, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xbf, 0xe0, 0x3f, 0x58, 0x3b, 0x10, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xad, 0xc1, 0xbf, 0xe1, 0x41, 0xc9, 0x0d, 0x16, 0xff, 0xc3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x73, 0xf0, 0x1f, 0xac, 0x1d, 0x88, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x23, 0x84, 0xff, 0xe0, 0x74, 0x24, 0x52, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0x24, 0xfc, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x99, 0xf0, 0x6f, 0x78, 0x84, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x40, 0x14, 0xfe, 0x83, 0xc3, 0x39, 0xdf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x0d, 0x2b, 0xfc, 0x1b, 0xde, 0x66, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x69, 0xe1, 0xdf, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x55, 0x2f, 0xfc, 0x07, 0xc7, 0x4f, 0xbe, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xdc, 0x18, 0xfe, 0x83, 0x05, 0x41, 0x74, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xc1, 0xc3, 0x7f, 0x70, 0xfc, 0xe4, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xa9, 0xe1, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0x37, 0xfc, 0x07, 0x6b, 0x36, 0xde, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xcd, 0xe1, 0x3f, 0x38, 0x7e, 0xf2, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x6d, 0x2f, 0x3c, 0x58, 0x98, 0xdc, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xb3, 0xc4, 0xbf, 0xc1, 0xc9, 0x41, 0x6e, 0x83, 0x35, 0xa5, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0xab, 0xf2, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x94, 0x56, 0xfe, 0x83, 0x95, 0x1c, 0x7b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xc3, 0xf2, 0x1f, 0x2c, 0x2d, 0xd9, 0x6b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x50, 0x61, 0x78, 0x70, 0xce, 0x4d, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x6f, 0xe2, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0x4f, 0xfc, 0x07, 0x8b, 0xf0, 0xe4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x92, 0xe2, 0x3f, 0x58, 0xb7, 0x0e, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x33, 0x15, 0xff, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xb7, 0xe2, 0x3f, 0x58, 0x95, 0x63, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa7, 0x16, 0xff, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xe6, 0xe2, 0x3f, 0x58, 0x89, 0x64, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1b, 0x18, 0xff, 0xc1, 0xd2, 0x92, 0xbd, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x82, 0x65, 0x78, 0xb0, 0x94, 0xcb, 0x70, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x7e, 0x8c, 0x7f, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x97, 0xf1, 0x1f, 0x2c, 0xc2, 0x93, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x0d, 0x8d, 0xff, 0x60, 0xdd, 0x3a, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe9, 0x6a, 0xfc, 0x07, 0xeb, 0xd6, 0xe1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x6a, 0xe3, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x8d, 0x6f, 0xfc, 0x07, 0xab, 0x72, 0x0c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x99, 0xe3, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0x75, 0xfc, 0x07, 0xcb, 0x23, 0x0d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xc7, 0xe3, 0x3f, 0x58, 0x5a, 0xb2, 0x57, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0x42, 0x0d, 0x0f, 0x8e, 0xc5, 0xae, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x75, 0x7c, 0xfc, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xce, 0x8f, 0xff, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0x80, 0xfc, 0x07, 0xeb, 0xd6, 0xe1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x1b, 0xe4, 0x3f, 0x58, 0xb7, 0x0e, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x79, 0x21, 0xff, 0xc1, 0xba, 0x75, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0x10, 0xf9, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa2, 0x22, 0xff, 0xc1, 0xaa, 0x1c, 0xc3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x1c, 0xf9, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x16, 0x24, 0xff, 0xc1, 0xd2, 0x6f, 0xc3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0x27, 0xf9, 0x0f, 0x96, 0x96, 0xec, 0x55, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x9a, 0x77, 0xc3, 0x83, 0x25, 0x31, 0x81, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x81, 0x97, 0xfc, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x2f, 0x93, 0xff, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf1, 0x9b, 0xfc, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xc4, 0x93, 0xff, 0x60, 0x55, 0x8e, 0xe1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc1, 0xa1, 0xfc, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x7e, 0x94, 0xff, 0x60, 0x75, 0xc6, 0xe1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x91, 0xa7, 0xfc, 0x07, 0x4b, 0x4b, 0xf6, 0xaa, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x85, 0x29, 0x87, 0x07, 0x09, 0x61, 0x46, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x15, 0xb4, 0xfc, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xc7, 0x96, 0x7f, 0x83, 0x62, 0x12, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x04, 0x1d, 0x1e, 0xac, 0x9d, 0xd9, 0x3b, 0x58, 0x53, 0xba, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2e, 0x2e, 0xff, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe9, 0xba, 0xfc, 0x07, 0x87, 0xac, 0xc5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x7d, 0xf9, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x23, 0x30, 0xff, 0xc1, 0x22, 0x78, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0x86, 0xf9, 0x0f, 0x56, 0xa0, 0x1d, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x58, 0xcc, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0x8f, 0xf9, 0x0f, 0x4e, 0x32, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x2d, 0xf3, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc4, 0x66, 0xfe, 0x0d, 0x0f, 0x4a, 0x6e, 0x70, 0x10, 0x6a, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x7d, 0xe6, 0x3f, 0x58, 0xb1, 0x78, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf0, 0x34, 0xff, 0xc1, 0xd2, 0x92, 0xbd, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xb5, 0xe6, 0x3f, 0x58, 0x9b, 0x79, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0xd9, 0xfc, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x81, 0x9b, 0xff, 0x60, 0x01, 0xea, 0xe1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xad, 0xdf, 0xfc, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x3b, 0x9c, 0x7f, 0xc3, 0x83, 0x92, 0x1b, 0xac, 0xc8, 0x3d, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x20, 0xe7, 0x3f, 0x58, 0xb1, 0x78, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x06, 0x3a, 0xff, 0xc1, 0xd2, 0x92, 0xbd, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x59, 0xe7, 0xdf, 0x60, 0x01, 0x66, 0xd3, 0x1a, 0xbe, 0x6f, 0xdf, 0x60, 0xb9, 0xf4, 0xe1, 0x06, 0x25, 0x74, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xdc, 0x3e, 0xdc, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xad, 0xf9, 0xe1, 0x41, 0xe9, 0x4d, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0xe3, 0x0f, 0x0f, 0x4e, 0x7a, 0xa2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x9c, 0xff, 0xf0, 0xe0, 0xa4, 0x27, 0xda, 0x41, 0x98, 0x8e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x5e, 0xdd, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0xb0, 0xfb, 0x0f, 0x4e, 0x04, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x6f, 0xf7, 0x1f, 0x2c, 0xb4, 0x40, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd2, 0xbb, 0x7f, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x82, 0xf7, 0x6f, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6c, 0xf1, 0xfe, 0xc3, 0x83, 0x37, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x15, 0xe5, 0xfd, 0x07, 0x4b, 0x4b, 0xf6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x3c, 0xef, 0xdf, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xf9, 0x41, 0x3c, 0x38, 0xe9, 0x89, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xa5, 0xf7, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb8, 0xf5, 0xfe, 0x83, 0x45, 0xf0, 0x6e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xb7, 0xf7, 0x1f, 0x14, 0x14, 0x99, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xc0, 0xf7, 0x1f, 0xac, 0xea, 0x42, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xaa, 0x9d, 0x7f, 0x83, 0x93, 0x83, 0xdc, 0x06, 0x6b, 0x4a, 0xf7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x9a, 0xed, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x41, 0xb5, 0xfd, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0xb7, 0xfd, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x35, 0xb7, 0x7f, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0xef, 0xf6, 0x1f, 0x2c, 0x42, 0x44, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf0, 0xb7, 0x7f, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x06, 0xf7, 0x1f, 0xa4, 0xbc, 0x56, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x3f, 0xdc, 0x7f, 0x50, 0x54, 0x8a, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xac, 0x71, 0xff, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xd9, 0x2a, 0xe2, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x74, 0x8b, 0x78, 0xf8, 0xa1, 0x66, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x29, 0xb9, 0x7f, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x22, 0x5f, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xbc, 0xe5, 0xfe, 0x83, 0x85, 0x17, 0x81, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x3c, 0xf7, 0x1f, 0x9e, 0xd6, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0xa6, 0xfb, 0x0f, 0x96, 0x96, 0xec, 0xd5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xc2, 0x1b, 0xf1, 0x60, 0xa5, 0x38, 0xe2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x00, 0x3c, 0xff, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x8f, 0xe7, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf9, 0xf3, 0xfc, 0x07, 0x8b, 0xe0, 0xdd, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xb3, 0xe7, 0x3f, 0x58, 0x8e, 0x1b, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3a, 0x3e, 0xff, 0x41, 0x41, 0x91, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x25, 0xfb, 0xfc, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xaa, 0x9f, 0x7f, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0xfe, 0xf3, 0x1f, 0x2c, 0x42, 0x44, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x65, 0xa0, 0x7f, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0x14, 0xf4, 0x1f, 0x04, 0x2c, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0x07, 0xfd, 0x07, 0xa7, 0xe6, 0xb6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x52, 0xe8, 0xdf, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xb9, 0x49, 0xdc, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0x86, 0x12, 0x0f, 0x3f, 0xd4, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x33, 0xf4, 0x6f, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xe4, 0xcb, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xf1, 0xd0, 0x7f, 0xb0, 0xf0, 0x22, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6a, 0x89, 0xfe, 0xc3, 0xd3, 0x3a, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xbf, 0x45, 0xff, 0xc1, 0xd2, 0x92, 0xbd, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0xa7, 0x25, 0x1e, 0x1c, 0xb5, 0x4e, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x34, 0xfa, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x11, 0x47, 0xff, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xf2, 0xe8, 0x3f, 0x58, 0x04, 0xef, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2f, 0x48, 0xff, 0xc1, 0xd2, 0xc3, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x46, 0xfa, 0x0f, 0x0a, 0x8a, 0xcc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x2b, 0xe9, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x91, 0x27, 0xfd, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x38, 0xa5, 0xff, 0x60, 0xa5, 0x68, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x61, 0x2d, 0xfd, 0x87, 0xc7, 0x64, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x21, 0xa6, 0xff, 0x60, 0x69, 0xc9, 0x5e, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xab, 0x71, 0x13, 0x0f, 0x56, 0xf5, 0x26, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0xd1, 0xf4, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x2a, 0x9b, 0xfe, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x85, 0xd3, 0x7f, 0xb0, 0x08, 0xde, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x66, 0x9d, 0xfe, 0x83, 0x35, 0xe8, 0x6f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xf5, 0xf4, 0x1f, 0x14, 0x14, 0x99, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xf7, 0xd3, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x83, 0xfa, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf7, 0x50, 0xff, 0xc1, 0x22, 0x44, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0b, 0x8f, 0xfa, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x60, 0x52, 0xff, 0xc1, 0xe1, 0x55, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfa, 0xa5, 0xfe, 0x83, 0x53, 0x73, 0x5b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x3b, 0xf5, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x48, 0x28, 0x6e, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x05, 0x1e, 0x8a, 0x87, 0x1f, 0x6a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0xa2, 0xfa, 0x37, 0x28, 0x4b, 0xde, 0x37, 0x48, 0xc1, 0x74, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x72, 0xaa, 0xff, 0x60, 0xe1, 0x45, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0x57, 0xfd, 0x87, 0xa7, 0x75, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb0, 0xad, 0xfe, 0x83, 0xa5, 0x25, 0x7b, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x27, 0x52, 0x3c, 0x58, 0x97, 0xa4, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xea, 0xd5, 0xbf, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0xc1, 0xfa, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa9, 0x58, 0xff, 0xc1, 0x22, 0x78, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0xca, 0xfa, 0x0f, 0x96, 0xcf, 0xbb, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x79, 0xd6, 0x7f, 0x50, 0x50, 0x64, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x74, 0x5a, 0xff, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x60, 0xeb, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x31, 0x6e, 0xfd, 0x07, 0x8b, 0x10, 0x11, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x8e, 0xeb, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd5, 0x73, 0xfd, 0x07, 0xa9, 0xa7, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xd9, 0xf5, 0x1f, 0x1c, 0x16, 0xd8, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x24, 0xaf, 0x7f, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xca, 0x53, 0x71, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x51, 0x55, 0x3c, 0xfc, 0x50, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xbb, 0xd7, 0xbf, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x0a, 0xa6, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe9, 0x7d, 0xfd, 0x07, 0x0b, 0x2f, 0x02, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x0c, 0xec, 0x3f, 0x3c, 0xad, 0x53, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x16, 0xf6, 0x1f, 0x2c, 0x2d, 0xd9, 0xab, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x49, 0xb4, 0xe2, 0xc1, 0xd2, 0x6a, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x80, 0xc4, 0xfe, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xaf, 0xd8, 0xbf, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0x19, 0xfb, 0x0f, 0x16, 0xc1, 0xbb, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xf7, 0xd8, 0x7f, 0xb0, 0x20, 0x5e, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf6, 0xc8, 0xfe, 0x83, 0x82, 0x22, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0x28, 0xfb, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x96, 0x65, 0xff, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xc4, 0xec, 0x3f, 0x58, 0x84, 0x88, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0c, 0x67, 0xff, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xf1, 0xec, 0x3f, 0x48, 0x81, 0x4e, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x14, 0xb4, 0xff, 0xe0, 0xb0, 0xc0, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x79, 0xa3, 0xfd, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x05, 0x2c, 0x8b, 0x1b, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xf9, 0xcd, 0xe2, 0xe1, 0x87, 0x9a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x08, 0xd3, 0xfe, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x2b, 0x78, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0xa1, 0xf6, 0x1f, 0x2c, 0xbc, 0x08, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x7e, 0xb5, 0xff, 0xf0, 0xb4, 0x4e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x01, 0xdb, 0x7f, 0xb0, 0xb4, 0x64, 0xaf, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x79, 0x2d, 0x1e, 0x2c, 0x89, 0x09, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x9b, 0xef, 0xdf, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb5, 0xbe, 0xff, 0xe0, 0x44, 0xd0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x54, 0x7e, 0xff, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xdb, 0xef, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa5, 0xfd, 0xfd, 0x1b, 0x1e, 0x94, 0xdc, 0x20, 0xd1, 0x26, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf9, 0xbf, 0xff, 0xa0, 0x14, 0x52, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x7b, 0xc0, 0xff, 0x60, 0x69, 0xc9, 0x5e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x19, 0xf8, 0x1f, 0xac, 0xff, 0x1f, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x47, 0xf0, 0x3f, 0x58, 0x81, 0x40, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xbd, 0xe0, 0xbf, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xca, 0x87, 0xbd, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x00, 0x0d, 0xff, 0x83, 0x55, 0xae, 0x8b, 0x6b, 0xb0, 0xea, 0x64, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xd3, 0xc1, 0x7f, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x43, 0xf8, 0x6f, 0x78, 0x50, 0x72, 0x83, 0x64, 0x36, 0xa7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x76, 0x09, 0xff, 0x83, 0x52, 0x48, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x80, 0x0b, 0xff, 0x83, 0xa5, 0x25, 0x7b, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xa2, 0x5e, 0x3c, 0x38, 0xfd, 0xb8, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x76, 0xf8, 0x6f, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xde, 0x0f, 0xff, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x1e, 0xe2, 0x7f, 0xb0, 0xae, 0x0b, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x8a, 0xc4, 0xff, 0x60, 0x7d, 0xfc, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x26, 0xfe, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x17, 0xc5, 0x7f, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xab, 0xf8, 0x1f, 0x2c, 0x41, 0xf5, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x6a, 0xf1, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x89, 0x2f, 0xfe, 0x07, 0x25, 0xd1, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0x33, 0xfe, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf5, 0x35, 0xfe, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xfe, 0xc6, 0xff, 0x20, 0x60, 0x59, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xd2, 0xf1, 0x3f, 0x3c, 0x26, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf9, 0x3c, 0xfe, 0x07, 0xcb, 0x70, 0xf5, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf2, 0xc7, 0x7f, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x07, 0x07, 0xf9, 0x1f, 0x9c, 0x08, 0xda, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x2b, 0xf2, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x95, 0x47, 0xfe, 0x07, 0x05, 0xd1, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x3d, 0x4b, 0xfe, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xfd, 0x4d, 0xfe, 0x07, 0x4b, 0x4b, 0xf6, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x1f, 0xca, 0xff, 0xa0, 0xd8, 0x56, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x73, 0xca, 0x7f, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x56, 0xf9, 0x1f, 0xac, 0x5b, 0x87, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x02, 0xcb, 0xff, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x89, 0x5a, 0xfe, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x97, 0xcb, 0xff, 0xe0, 0x44, 0xd0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x17, 0x98, 0xff, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x14, 0xf3, 0x3f, 0x28, 0x88, 0x96, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x31, 0xf3, 0x3f, 0x28, 0x2a, 0xc5, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x47, 0xf3, 0x3f, 0x58, 0x5a, 0xb2, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf1, 0x6b, 0xfe, 0x07, 0xc5, 0xb6, 0x72, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xba, 0xf9, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x48, 0x38, 0xff, 0x83, 0x75, 0xeb, 0x70, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0xcc, 0xf9, 0x1f, 0xac, 0x5b, 0x87, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb0, 0xce, 0x7f, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0xde, 0xf9, 0x1f, 0x9c, 0x08, 0xda, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0xda, 0xf3, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x85, 0x7d, 0xfe, 0x07, 0x05, 0xd1, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0x81, 0xfe, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0x83, 0xfe, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xc3, 0xd0, 0xff, 0x60, 0x4d, 0xdd, 0xde, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0x89, 0xfe, 0x07, 0x4b, 0x4b, 0xf6, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x7a, 0x46, 0xff, 0x83, 0x62, 0x5b, 0xb9, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xcd, 0x89, 0x7e, 0x83, 0xd2, 0xde, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4c, 0x28, 0xfa, 0x0d, 0x7f, 0x2e, 0x6d, 0x30, 0xe6, 0x9f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0xa5, 0xe8, 0x0f, 0x4e, 0x7a, 0xa2, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf9, 0x54, 0xf4, 0x1b, 0x1e, 0x94, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xa6, 0xbe, 0x7e, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x75, 0x21, 0x7c, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xd5, 0x45, 0xe3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd2, 0x7d, 0xfd, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xc9, 0x4f, 0xe3, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x58, 0xd4, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x0a, 0xa6, 0xc6, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x5b, 0x35, 0x1e, 0x84, 0x94, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x0f, 0x6b, 0x3c, 0xfc, 0x50, 0xd3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x77, 0x7e, 0xfd, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xb1, 0x5c, 0xe3, 0xc1, 0x49, 0x4f, 0x74, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x79, 0xbf, 0x7e, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xd5, 0x7f, 0x8d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xf9, 0xd7, 0x1f, 0x14, 0xdb, 0xca, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb1, 0x00, 0xf6, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x55, 0xc0, 0xfe, 0x60, 0x11, 0x9e, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x19, 0x05, 0xf6, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x1c, 0xd8, 0x6f, 0xb8, 0xa4, 0x36, 0x28, 0x6a, 0xc4, 0xd7, 0xa0, 0x44, 0x57, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x4d, 0xb0, 0xdf, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0xf5, 0x5f, 0xe3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x13, 0x83, 0xfd, 0xc1, 0x9a, 0xd9, 0xc6, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x78, 0xb0, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0x11, 0xf6, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6b, 0xc2, 0xfe, 0x60, 0x31, 0x72, 0xe3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf1, 0x16, 0xf6, 0x07, 0xa7, 0xe6, 0xb6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xd5, 0xb0, 0x3f, 0x58, 0x84, 0xdd, 0x58, 0xab, 0xc1, 0x4a, 0xd8, 0xbc, 0x0d, 0xcf, 0x93, 0x6c, 0xb0, 0x30, 0xbc, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xaf, 0xc3, 0x7e, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x9a, 0xc0, 0x71, 0xc3, 0x9f, 0x4b, 0x1b, 0xba, 0x01, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x26, 0xc2, 0xf1, 0xf0, 0x43, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x04, 0x88, 0xfd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x11, 0xb1, 0x3f, 0x58, 0x1a, 0xe2, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x74, 0x89, 0xfd, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x3e, 0xb1, 0x3f, 0x48, 0x3d, 0x8d, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x47, 0xc5, 0xfe, 0x20, 0x5d, 0x62, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x59, 0xec, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0x89, 0x1c, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0x9f, 0x1c, 0x0f, 0x1f, 0xac, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x42, 0x2d, 0xc7, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xcc, 0xcc, 0xf1, 0xf0, 0x43, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x88, 0x73, 0xdc, 0xf0, 0xe7, 0xd2, 0xe0, 0xe3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcb, 0xf9, 0x1c, 0x0f, 0x4e, 0x7a, 0xa2, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0xbe, 0xd8, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xd2, 0x18, 0xfb, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x0e, 0xad, 0x2d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xcf, 0xd8, 0x1f, 0x2c, 0xbc, 0x08, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf0, 0xc6, 0xfe, 0xf0, 0x5e, 0x50, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0xe8, 0xd8, 0x1f, 0x9e, 0xde, 0xa9, 0xd5, 0x60, 0x19, 0x69, 0xe2, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x91, 0xea, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xd2, 0x63, 0xbf, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xce, 0xec, 0xb8, 0xe1, 0xcf, 0xa5, 0x0d, 0xdd, 0x00, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x94, 0xed, 0x78, 0xf8, 0xa1, 0x66, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf6, 0xc7, 0x7e, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x07, 0xd9, 0x1f, 0x2c, 0x0d, 0x71, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xae, 0xc8, 0x7e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x1d, 0xd9, 0x1f, 0xa4, 0xbc, 0x56, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x9d, 0x64, 0x7f, 0x90, 0x2e, 0x31, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x8d, 0x4c, 0xf6, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x95, 0x09, 0x8f, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x95, 0x14, 0x8f, 0x87, 0x0f, 0x56, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xdd, 0xc7, 0xe3, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xb5, 0xf2, 0x78, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0xd7, 0x3c, 0x6e, 0xf8, 0x73, 0x69, 0xf0, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd5, 0x41, 0x8f, 0x07, 0x27, 0x3d, 0xd1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x9b, 0x9e, 0xec, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x51, 0x94, 0xfd, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x45, 0xbe, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x71, 0x53, 0xf6, 0x07, 0x0b, 0x2f, 0x02, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xb9, 0xb2, 0x3f, 0xbc, 0x17, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xad, 0x59, 0xf6, 0x87, 0xa7, 0x77, 0xea, 0x70, 0x8a, 0xb5, 0x06, 0xcb, 0xd6, 0x1e, 0x37, 0x3c, 0x4f, 0xb2, 0xc1, 0xea, 0xb7, 0xc7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x64, 0x2e, 0xfb, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x92, 0xc9, 0xc7, 0x0d, 0x7f, 0x2e, 0x6d, 0xe8, 0x06, 0xb0, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xc2, 0xcf, 0xc7, 0xc3, 0x0f, 0x35, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x5d, 0x5f, 0xf6, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x31, 0xcc, 0xfe, 0x60, 0x69, 0x88, 0xe3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0x65, 0xf6, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xe2, 0xcc, 0xfe, 0x20, 0x05, 0x3a, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xc2, 0x34, 0xfb, 0x83, 0x74, 0x89, 0xb1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x61, 0xb3, 0xdf, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x7e, 0x7e, 0xdc, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xd6, 0x7e, 0x3c, 0x7c, 0xb0, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0xcb, 0x1f, 0x37, 0xfc, 0xb9, 0x34, 0xb8, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xca, 0xf8, 0xc7, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x86, 0xff, 0x71, 0xc3, 0x9f, 0x4b, 0x83, 0x8f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x40, 0x80, 0x3c, 0x38, 0xe9, 0x89, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xef, 0x66, 0xbf, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0xe1, 0xec, 0x37, 0x28, 0x4b, 0xde, 0x37, 0xac, 0xe0, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x31, 0x67, 0x7f, 0xb0, 0xf0, 0x22, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x62, 0x3b, 0xfb, 0xc3, 0x7b, 0x41, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x95, 0x67, 0x7f, 0x78, 0x7a, 0xa7, 0x56, 0x83, 0x15, 0xb8, 0x7c, 0x1b, 0x9e, 0x27, 0xd9, 0x60, 0xf1, 0x0c, 0xe4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1b, 0x9f, 0xfd, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x5d, 0x14, 0xe4, 0x86, 0x3f, 0x97, 0x36, 0x28, 0x6a, 0x8b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xe3, 0x05, 0x79, 0xf8, 0xa1, 0x66, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xe0, 0xcf, 0x7e, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x04, 0xda, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xac, 0x41, 0xfb, 0x83, 0x95, 0xa2, 0x89, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x1b, 0xda, 0x1f, 0x04, 0x2c, 0x6b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x2a, 0xda, 0x1f, 0x94, 0x7e, 0xc6, 0x1d, 0x4e, 0xb1, 0x35, 0x58, 0xac, 0xd3, 0xb7, 0xe1, 0x79, 0x92, 0x0d, 0x16, 0x24, 0x42, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x35, 0xda, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x77, 0x42, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0xa2, 0xb6, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb5, 0xaa, 0x90, 0x87, 0x1f, 0x6a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x20, 0xed, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8b, 0xa4, 0xfd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xa2, 0xb4, 0x3f, 0x58, 0x29, 0x9a, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfc, 0xa5, 0xfd, 0xe1, 0x31, 0x99, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xdc, 0xb4, 0x3f, 0x28, 0xfd, 0x8c, 0x5b, 0x0d, 0x56, 0x2a, 0x37, 0x6e, 0x78, 0x9e, 0x64, 0x83, 0x25, 0xd4, 0x90, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x9e, 0xf6, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x75, 0xf7, 0x90, 0x1b, 0xfe, 0x5c, 0xda, 0xd0, 0x0d, 0x60, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd5, 0x03, 0x91, 0x87, 0x1f, 0x6a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0x41, 0xed, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xca, 0xa8, 0xfd, 0xc1, 0xd2, 0x10, 0xc7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x7b, 0x4d, 0xed, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2d, 0xaa, 0xfd, 0xc1, 0xe1, 0x55, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x92, 0x55, 0xfb, 0x83, 0x74, 0x89, 0xb1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x6e, 0xb5, 0xdf, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xa0, 0x89, 0xdc, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xf8, 0x89, 0x3c, 0x7c, 0xb0, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0x93, 0x22, 0x37, 0xfc, 0xb9, 0x34, 0xb8, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xea, 0xaa, 0xc8, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x0e, 0x2c, 0x72, 0xc3, 0x9f, 0x4b, 0x83, 0x8f, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x62, 0x8b, 0x3c, 0x38, 0xe9, 0x89, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x09, 0x6b, 0xbf, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x65, 0xed, 0x37, 0x28, 0x4b, 0xde, 0x37, 0x48, 0xc1, 0x74, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x97, 0xd6, 0xfe, 0x60, 0xe1, 0x45, 0xe0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x59, 0xb8, 0xf6, 0x87, 0xf7, 0x82, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x5c, 0xd7, 0xfe, 0xf0, 0xf4, 0x4e, 0xad, 0x06, 0xab, 0x53, 0x0f, 0x37, 0x3c, 0x4f, 0xb2, 0xc1, 0x4a, 0xcc, 0xc8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x00, 0x5f, 0xfb, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x02, 0x6c, 0x7f, 0xb0, 0x34, 0xc4, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe6, 0x61, 0xfb, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x5c, 0x6c, 0x7f, 0xb0, 0x84, 0x37, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x1a, 0x64, 0xfb, 0xc3, 0x63, 0x32, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xae, 0x6c, 0xbf, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x0d, 0x1d, 0xb9, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xbd, 0x1d, 0x79, 0xf8, 0x60, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x9a, 0x47, 0x6e, 0xf8, 0x73, 0x69, 0x70, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x95, 0xf2, 0x91, 0x87, 0x1f, 0x6a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x4d, 0x7f, 0xe4, 0x86, 0x3f, 0x97, 0x06, 0x1f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x91, 0x20, 0x79, 0x70, 0xd2, 0x13, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xb4, 0xd9, 0x7e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x3e, 0xdb, 0x6f, 0x50, 0x96, 0xbc, 0x6f, 0xf8, 0x87, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe4, 0x68, 0xfb, 0x83, 0x85, 0x17, 0x81, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x55, 0xdb, 0x1f, 0xde, 0x0b, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x00, 0x6c, 0xfb, 0xc3, 0xd3, 0x3b, 0x35, 0x6b, 0xb0, 0x64, 0xc7, 0x70, 0xc3, 0xf3, 0x24, 0x1b, 0x2c, 0xa8, 0x91, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xd6, 0xb6, 0xdf, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x6c, 0x92, 0xdc, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0xb2, 0x24, 0x0f, 0x52, 0xaf, 0x8d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0xbb, 0xed, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xee, 0xb7, 0xfd, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x85, 0x93, 0xdc, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0xdc, 0x93, 0x3c, 0x38, 0x6a, 0x9d, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x52, 0x43, 0xc9, 0x83, 0x30, 0x1d, 0xeb, 0xf0, 0xe0, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x2d, 0xe2, 0xf6, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x8b, 0xdc, 0xfe, 0xe0, 0x44, 0xd0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfe, 0xb9, 0xfd, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x50, 0xb7, 0x3f, 0x48, 0x59, 0x6e, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x8b, 0xdd, 0xfe, 0x60, 0x0d, 0xab, 0xe4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb3, 0xbb, 0xfd, 0xc1, 0x1a, 0x5a, 0xc9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0xe3, 0xed, 0x0f, 0x8a, 0x6d, 0xe5, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0xe8, 0xed, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x99, 0xbd, 0xfd, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x7a, 0x96, 0xdc, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0xd1, 0x96, 0x3c, 0x38, 0xed, 0x9d, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xaa, 0x72, 0xc9, 0x83, 0x30, 0x1d, 0xeb, 0xf0, 0xe0, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd9, 0xf8, 0xf6, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x60, 0xdf, 0xfe, 0xe0, 0x44, 0xd0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa9, 0xbf, 0xfd, 0xc1, 0x2a, 0x7f, 0xc9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x03, 0xee, 0x0f, 0x8a, 0x6d, 0xe5, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x08, 0xee, 0x37, 0x58, 0x80, 0xd9, 0xb4, 0xc1, 0x98, 0x7f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xe6, 0xfc, 0x7e, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x57, 0xa5, 0xdf, 0x1f, 0xa4, 0x2c, 0x37, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xbb, 0x7e, 0x7f, 0x50, 0x6c, 0x2b, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0xb7, 0xdf, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xee, 0xf7, 0xfb, 0x83, 0x35, 0x1b, 0x6f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x47, 0xc9, 0xdf, 0x1f, 0x14, 0xdb, 0xca, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x19, 0xdc, 0x6f, 0x50, 0x90, 0xc6, 0x0e, 0x6e, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x87, 0x70, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0x15, 0xee, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x33, 0xc3, 0xfd, 0xc1, 0x4a, 0xd1, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0x20, 0xee, 0x0f, 0x8f, 0xc9, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x03, 0xc5, 0xfd, 0x41, 0xba, 0xa6, 0x53, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xad, 0x16, 0xf7, 0x1b, 0x14, 0x1d, 0xb4, 0x83, 0x97, 0x1b, 0xa4, 0xda, 0x38, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x9b, 0x71, 0xbf, 0x41, 0x41, 0x1a, 0xbb, 0x86, 0xef, 0xdb, 0x07, 0x2f, 0x37, 0x28, 0xa1, 0x63, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xc5, 0xdd, 0xe4, 0xc1, 0xf1, 0xe4, 0xe4, 0x20, 0x4c, 0xc7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xde, 0xb8, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x09, 0x1e, 0xf7, 0x1b, 0x1e, 0x94, 0xdc, 0x20, 0xb1, 0xff, 0x68, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x05, 0xe4, 0xfe, 0xa0, 0x14, 0x52, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x86, 0xe4, 0x7e, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x99, 0xdc, 0x1f, 0x2c, 0xf4, 0x9c, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x3e, 0xe5, 0xfe, 0xa0, 0x18, 0xa9, 0xad, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4c, 0x96, 0xfb, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x56, 0xbd, 0x4e, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xec, 0x72, 0xbf, 0x41, 0x92, 0x01, 0xe1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf1, 0x30, 0xf7, 0x1b, 0x1e, 0x94, 0xdc, 0xe0, 0xb0, 0x0d, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x31, 0x73, 0x7f, 0x50, 0x0a, 0xa9, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x80, 0x73, 0x7f, 0x90, 0x34, 0xe3, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x36, 0xcf, 0xfd, 0x41, 0x39, 0x01, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf7, 0xcf, 0xfd, 0x41, 0xca, 0x90, 0x53, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x42, 0xf7, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x97, 0xe8, 0x7e, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x1b, 0xdd, 0x6f, 0x78, 0x50, 0x72, 0x83, 0x44, 0x9b, 0xa8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x82, 0xa4, 0xfb, 0x83, 0x52, 0x48, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8a, 0xa6, 0xfb, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xf4, 0x74, 0xbf, 0xe1, 0x41, 0xc9, 0x0d, 0xd2, 0xd1, 0xa1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xc3, 0xa2, 0xee, 0x0f, 0x4a, 0x21, 0xf5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xaa, 0xee, 0x0f, 0x92, 0x66, 0x9c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xc2, 0xba, 0x3f, 0x58, 0x3b, 0x41, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x6c, 0xdd, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x94, 0xae, 0xfb, 0x83, 0x54, 0x54, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xf3, 0xbe, 0xee, 0x0f, 0x16, 0xa3, 0x50, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x1a, 0x76, 0xbf, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0xc7, 0xee, 0x37, 0xbc, 0xcd, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x5e, 0x76, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0xd0, 0xee, 0x37, 0x3c, 0x28, 0xb9, 0x41, 0xa2, 0x4d, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8c, 0xda, 0xfd, 0x41, 0x29, 0xa4, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x90, 0xdb, 0xfd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x83, 0xbb, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0xe9, 0xe8, 0x50, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x8d, 0x72, 0xf7, 0x07, 0xa5, 0x90, 0xfa, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa5, 0x76, 0xf7, 0x07, 0x8b, 0x51, 0x28, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xc9, 0xbb, 0x3f, 0x58, 0xcf, 0x46, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xf1, 0xdd, 0x6f, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x30, 0xbf, 0xfb, 0x83, 0x54, 0x54, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0x01, 0xef, 0x0f, 0x16, 0xa3, 0x50, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x2d, 0x78, 0xbf, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0x09, 0xef, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc0, 0xe1, 0xfd, 0x86, 0x07, 0x25, 0x37, 0x38, 0x6c, 0xc3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x24, 0xde, 0x1f, 0x94, 0x42, 0xea, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x34, 0xde, 0x1f, 0x2c, 0x46, 0xa1, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf9, 0xf1, 0xfe, 0x20, 0x15, 0x55, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0x24, 0xef, 0x0f, 0x12, 0x78, 0x9c, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xaf, 0xbc, 0xdf, 0xe0, 0x38, 0x36, 0xb1, 0x41, 0x89, 0xae, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2f, 0xe6, 0xfd, 0x86, 0xb7, 0x59, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x35, 0xef, 0x37, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x3f, 0xe7, 0xfd, 0x41, 0x02, 0x8f, 0xd3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xcd, 0xe7, 0xfd, 0x41, 0xd2, 0x8c, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xe9, 0xa1, 0xf7, 0x1b, 0x24, 0x19, 0x10, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x41, 0x7a, 0x7f, 0x70, 0x22, 0x68, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x13, 0xf5, 0x7e, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xaa, 0xde, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x76, 0xd6, 0xfb, 0x0d, 0x0f, 0x4a, 0x6e, 0x90, 0x68, 0x13, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xf1, 0x7a, 0x7f, 0x50, 0x0a, 0xa9, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x32, 0x7b, 0x7f, 0x90, 0x34, 0xe3, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0xb5, 0xf7, 0x07, 0xeb, 0x0c, 0x2a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0x70, 0xef, 0x0f, 0x96, 0x39, 0x54, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xb8, 0x7b, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0x7b, 0xef, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf9, 0xef, 0xfd, 0xc1, 0x4a, 0xd1, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0b, 0x87, 0xef, 0x0f, 0x8f, 0xc9, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xcc, 0xf1, 0xfd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x4b, 0xbe, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0xc9, 0x6c, 0x4e, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x85, 0xcb, 0xf7, 0x07, 0xa5, 0x90, 0xfa, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0xcf, 0xf7, 0x07, 0x49, 0x33, 0x4e, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xd4, 0xf4, 0xfd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0xac, 0xbe, 0x3f, 0x38, 0x11, 0xb4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x92, 0x7d, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0xb6, 0xef, 0x0f, 0x56, 0x78, 0x55, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xef, 0x7d, 0x7f, 0x50, 0x4e, 0x40, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x19, 0x7e, 0x7f, 0x50, 0x8c, 0xd4, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x23, 0xf9, 0xfd, 0x41, 0xb1, 0xad, 0xdc, 0xe1, 0x14, 0x6b, 0x0d, 0x96, 0x79, 0xec, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x35, 0x7c, 0x95, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xbd, 0xf4, 0xf7, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe5, 0x97, 0x95, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xa8, 0x2d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x29, 0x69, 0xe5, 0xe1, 0x87, 0x9a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xaa, 0xfb, 0xfb, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xa2, 0xda, 0xca, 0x83, 0x93, 0x9e, 0xe8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x52, 0xfe, 0xfd, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xda, 0xbf, 0x3f, 0x58, 0x04, 0xef, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x70, 0xff, 0xfd, 0xc1, 0x1a, 0xf4, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0x00, 0xf0, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x99, 0x00, 0xfe, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x24, 0xc0, 0x3f, 0x58, 0x8c, 0xdc, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0c, 0x02, 0xfe, 0xe1, 0x31, 0x99, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x5e, 0xc0, 0x3f, 0x28, 0xfd, 0x8c, 0xeb, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x8c, 0x2b, 0xfa, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0xd6, 0x8d, 0x38, 0x6e, 0x78, 0x9e, 0x64, 0x83, 0xb5, 0xfc, 0x95, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x31, 0x59, 0xf4, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x05, 0xe7, 0x96, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe5, 0xf1, 0x96, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb5, 0xfc, 0x96, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0xc5, 0xc0, 0xe5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0x13, 0x2e, 0x0f, 0x3f, 0xd4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x12, 0x8a, 0xcb, 0x0d, 0x7f, 0x2e, 0x6d, 0xe8, 0x06, 0xb0, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x42, 0x90, 0xcb, 0xc3, 0x0f, 0x35, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x9a, 0x95, 0xcb, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x36, 0xe6, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x45, 0x38, 0x97, 0x1b, 0x84, 0xd3, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x19, 0xba, 0xdc, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x70, 0xba, 0x3c, 0x7c, 0xb0, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0xb1, 0x2e, 0x0f, 0x3f, 0xd4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xea, 0xb1, 0xcb, 0x83, 0x93, 0x9e, 0x68, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x78, 0xbb, 0x3c, 0x38, 0xe9, 0x89, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xbf, 0x45, 0xbf, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x07, 0x78, 0xb9, 0xe1, 0xcf, 0xa5, 0x0d, 0x16, 0x1b, 0x5e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xaa, 0xf1, 0xf2, 0xf0, 0x43, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xa4, 0x17, 0xfd, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x75, 0xe7, 0xe5, 0xc1, 0x49, 0x4f, 0x74, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x10, 0x8c, 0x7e, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x8a, 0xd1, 0x6f, 0x78, 0x84, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x60, 0x32, 0xfa, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x6e, 0x46, 0x7f, 0x78, 0xf0, 0x66, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x23, 0x8d, 0xfe, 0x60, 0x35, 0xf0, 0xe5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x99, 0x6b, 0xf4, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb7, 0x8d, 0xfe, 0xf0, 0xe0, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfc, 0x1b, 0xfd, 0x41, 0xba, 0xc4, 0x58, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xcc, 0xd1, 0x1f, 0x14, 0xdb, 0xca, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0x75, 0xf4, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0x50, 0x42, 0xc7, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x5a, 0xf5, 0xcb, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xc2, 0xfa, 0xcb, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x7a, 0xff, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x65, 0x02, 0x98, 0x87, 0x1f, 0x6a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x39, 0x03, 0xe6, 0x86, 0x3f, 0x97, 0x36, 0x48, 0xf2, 0xf2, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x71, 0x06, 0xe6, 0xe1, 0x87, 0x9a, 0x0e, 0xc2, 0x74, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xcc, 0x3b, 0xfa, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x9c, 0x47, 0x7f, 0xf8, 0x8b, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb2, 0x3e, 0xfa, 0x83, 0xd5, 0xc0, 0x97, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x00, 0xd2, 0x1f, 0xac, 0xc5, 0xc1, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x57, 0x90, 0x7e, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x24, 0x8b, 0xb1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x1a, 0x4c, 0xfa, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xa5, 0x49, 0xbf, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0x38, 0xe9, 0x0f, 0x0f, 0xde, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x7a, 0xd2, 0x1f, 0xa4, 0x4b, 0x8c, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x11, 0x4a, 0x7f, 0x78, 0xf0, 0x66, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6a, 0x94, 0x7e, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0x95, 0xd2, 0x1f, 0x5e, 0xf3, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x22, 0x95, 0xfe, 0x20, 0x5d, 0x62, 0xac, 0x35, 0x58, 0x28, 0x7c, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xc1, 0x4a, 0x7f, 0xb0, 0xbc, 0x0f, 0x73, 0x0d, 0x4a, 0x74, 0xe5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xbe, 0x42, 0xfa, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x7a, 0x48, 0x7f, 0xb0, 0xce, 0x11, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x90, 0x45, 0xfa, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xd4, 0x48, 0x7f, 0x78, 0xf0, 0x66, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xef, 0x91, 0xfe, 0x60, 0x79, 0x1f, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x4d, 0x92, 0xf4, 0x07, 0x49, 0x13, 0xbf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x54, 0xd2, 0x1f, 0x14, 0xdb, 0xca, 0xb5, 0x1a, 0xac, 0x50, 0x44, 0xdc, 0xf0, 0x3c, 0xc9, 0x06, 0x6b, 0x6c, 0x31, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0x5e, 0xe9, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2b, 0x90, 0x32, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0xa5, 0x32, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8b, 0xbb, 0x32, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x8a, 0x81, 0xcb, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0xaa, 0x65, 0x1e, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0x75, 0x99, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0xe5, 0x5e, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4b, 0x04, 0x33, 0x0f, 0x3f, 0xd4, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xab, 0x19, 0x33, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0xaa, 0xc9, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x67, 0x66, 0x6e, 0x10, 0x4e, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x98, 0x34, 0xf3, 0xf0, 0x43, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xeb, 0x5e, 0x33, 0x0f, 0x3f, 0xd4, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x1f, 0x4b, 0xbf, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0a, 0x2d, 0xfd, 0xc1, 0xd2, 0x10, 0xc7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x8b, 0x6f, 0xe9, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6f, 0x2e, 0xfd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xdf, 0xa5, 0x3f, 0x48, 0xc1, 0x4d, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xf1, 0x97, 0xfe, 0x60, 0x2d, 0x0e, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x59, 0xc2, 0xf4, 0x07, 0xab, 0xc0, 0x33, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x9f, 0x98, 0xfe, 0xf0, 0xe0, 0x4d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x9d, 0xc7, 0xf4, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x25, 0xf5, 0x99, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf5, 0xff, 0x99, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xbc, 0xbc, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x25, 0x83, 0xe6, 0xe1, 0x83, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x71, 0xa1, 0xb9, 0xe1, 0xcf, 0xa5, 0x0d, 0x16, 0x76, 0x68, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x82, 0x44, 0xf3, 0xf0, 0x43, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x75, 0xd1, 0xdc, 0xf0, 0xe7, 0xd2, 0x06, 0xc7, 0x0c, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0xed, 0x68, 0x1e, 0x9c, 0xf4, 0x44, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x52, 0xa6, 0xdf, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x91, 0x99, 0xfe, 0xe0, 0x44, 0xd0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0a, 0x34, 0xfd, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x92, 0xa6, 0x3f, 0x58, 0x93, 0xa5, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x22, 0x35, 0xfd, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x6c, 0x4d, 0xbf, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xde, 0xa6, 0x79, 0x70, 0xd2, 0x13, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xc5, 0xa6, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa9, 0xda, 0xf4, 0x07, 0x8b, 0xf0, 0xe4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xe8, 0xa6, 0x3f, 0x28, 0x28, 0x32, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xfd, 0xa6, 0xdf, 0xe0, 0xd4, 0x70, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x5a, 0x42, 0xfd, 0xc1, 0x1a, 0x49, 0xcd, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf4, 0x70, 0xfa, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0xc8, 0xe9, 0x37, 0x5c, 0x52, 0x1b, 0xac, 0x1a, 0x71, 0x5c, 0x83, 0x12, 0x5d, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xd8, 0x9c, 0xfe, 0xe0, 0xa0, 0xe5, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xad, 0xea, 0xf4, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x94, 0x9d, 0xfe, 0x60, 0x2d, 0x0e, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x09, 0xef, 0xf4, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x25, 0x9e, 0xfe, 0x60, 0x4d, 0x96, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0xf3, 0xf4, 0x87, 0x07, 0x6f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x43, 0xeb, 0xe9, 0x0f, 0x56, 0x81, 0x67, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x87, 0x4f, 0xbf, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0xd6, 0xad, 0xb9, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x83, 0xae, 0x79, 0xf8, 0x60, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0xcb, 0x6b, 0x6e, 0xf8, 0x73, 0x69, 0x70, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x75, 0xfe, 0x9a, 0x87, 0x1f, 0x6a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x3d, 0xc2, 0xe6, 0x86, 0x3f, 0x97, 0x06, 0x1f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x4a, 0xb1, 0x79, 0x70, 0xd2, 0x13, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x66, 0x9f, 0x7e, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xf4, 0xd3, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xaa, 0x7f, 0xfa, 0x83, 0xb5, 0x2b, 0x9b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x0b, 0xd4, 0x1f, 0xde, 0x0b, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xb4, 0x82, 0xfa, 0xc3, 0xd3, 0x3b, 0x1d, 0x4e, 0xb1, 0x35, 0x58, 0x0f, 0x0d, 0xb8, 0xe1, 0x79, 0x92, 0x0d, 0x96, 0x05, 0x6d, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x33, 0xd4, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x96, 0x97, 0x6e, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0xc3, 0x6e, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0xee, 0x6e, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0xf5, 0xc1, 0x9b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x2c, 0x44, 0xde, 0x3c, 0xfc, 0x50, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0xa6, 0x37, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0x8a, 0x81, 0xcb, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x7f, 0x6f, 0x1e, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x85, 0xea, 0x9b, 0x1b, 0xfe, 0x5c, 0xda, 0x60, 0x3d, 0xfc, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0b, 0xef, 0x37, 0x0f, 0x3f, 0xd4, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6b, 0x04, 0x38, 0x37, 0xfc, 0xb9, 0xb4, 0xc1, 0xaa, 0xc9, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xd6, 0x3c, 0x70, 0x6e, 0x10, 0x4e, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x44, 0x83, 0xf3, 0xf0, 0x43, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcb, 0x49, 0x38, 0x0f, 0x3f, 0xd4, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xfb, 0x50, 0xbf, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x5e, 0xc3, 0xb9, 0xe1, 0xcf, 0xa5, 0x0d, 0x16, 0x1b, 0x5e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0x56, 0x88, 0xf3, 0xf0, 0x43, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x93, 0x44, 0xfd, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0xcd, 0x14, 0xe7, 0xc1, 0x49, 0x4f, 0x74, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x87, 0xa2, 0x7e, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x77, 0x59, 0xd4, 0x6f, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x3e, 0x8c, 0xfa, 0xc3, 0x83, 0x37, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0x1a, 0xf5, 0x07, 0x2b, 0xe0, 0x38, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xe9, 0xa8, 0x3f, 0x28, 0xb6, 0x95, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0x3f, 0xea, 0x37, 0x28, 0x0c, 0x55, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x0c, 0xa9, 0x3f, 0x58, 0x84, 0x27, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x3f, 0x52, 0xbf, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0xd2, 0x46, 0xce, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x4c, 0xea, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x14, 0x4a, 0xfd, 0xe1, 0x35, 0x9f, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0x57, 0xea, 0x0f, 0x56, 0xc0, 0x71, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xe9, 0x52, 0xbf, 0xc1, 0xa9, 0xe1, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x42, 0xaa, 0xfa, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x6b, 0x55, 0x7f, 0x50, 0x12, 0xcd, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xa5, 0x55, 0x7f, 0xb0, 0x38, 0x97, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x96, 0xae, 0xfa, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xf2, 0x55, 0x7f, 0xb0, 0x0a, 0x99, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa8, 0xb0, 0xfa, 0xc3, 0x63, 0x32, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x40, 0x56, 0x7f, 0xb0, 0x1a, 0xf8, 0xb2, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x5e, 0x98, 0xfa, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x65, 0xea, 0x37, 0x5c, 0x52, 0x1b, 0xac, 0x1a, 0x71, 0x5c, 0x83, 0x12, 0x5d, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb3, 0xa6, 0x7e, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xc5, 0x71, 0x9c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x38, 0xf5, 0x07, 0xab, 0x90, 0x39, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x38, 0x9e, 0xfa, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xe6, 0x53, 0x7f, 0xb0, 0x16, 0x07, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6c, 0xa0, 0xfa, 0xc3, 0x63, 0x32, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x0e, 0xd5, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x5c, 0x74, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x56, 0x87, 0x74, 0x1e, 0x3e, 0x58, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x75, 0x2c, 0x9d, 0x1b, 0xfe, 0x5c, 0x1a, 0x5c, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x05, 0x4e, 0xe7, 0xe1, 0x87, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x58, 0x29, 0xd4, 0xb9, 0xe1, 0xcf, 0xa5, 0xc1, 0xc7, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x16, 0x39, 0x75, 0x1e, 0x9c, 0xf4, 0x44, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x32, 0xaa, 0xdf, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x41, 0x48, 0xf5, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x4d, 0xa9, 0xfe, 0x60, 0xed, 0xca, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xf9, 0x4d, 0xf5, 0x87, 0xf7, 0x82, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x10, 0xaa, 0xfe, 0xf0, 0xf4, 0x4e, 0xb3, 0x06, 0xcb, 0xbf, 0x2a, 0x37, 0x3c, 0x4f, 0xb2, 0xc1, 0x02, 0xbc, 0xce, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x9c, 0xb3, 0xfa, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xca, 0xf5, 0xce, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x32, 0xfb, 0xce, 0x0d, 0x7f, 0x2e, 0x6d, 0x90, 0x56, 0x93, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x9a, 0x01, 0xcf, 0x83, 0xe3, 0xc9, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xac, 0x70, 0xf0, 0xdc, 0xf0, 0xe7, 0xd2, 0x06, 0x03, 0xad, 0x7e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc5, 0x1a, 0x9e, 0x07, 0x27, 0x3d, 0xd1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xd3, 0xea, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xab, 0x57, 0x3c, 0x0f, 0x4e, 0x7a, 0xa2, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xcd, 0x6b, 0xf5, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0x50, 0x42, 0xc7, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0xc2, 0x1f, 0xcf, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0xc1, 0x2a, 0x25, 0xcf, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x14, 0xca, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x35, 0x57, 0x9e, 0x87, 0x0f, 0x56, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0x60, 0x6d, 0x98, 0xe7, 0x86, 0x3f, 0x97, 0x36, 0x38, 0xc3, 0xc9, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xb0, 0xd0, 0xcd, 0xf3, 0xe0, 0x28, 0x74, 0xd2, 0x41, 0x98, 0x8e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xdf, 0x56, 0xbf, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xe3, 0xdf, 0xea, 0x37, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x84, 0x5c, 0xfd, 0x41, 0x2a, 0xaa, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x18, 0x5d, 0xfd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xb4, 0xab, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0x29, 0x27, 0x4e, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xad, 0x78, 0xf5, 0x07, 0xa5, 0x90, 0xfa, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xc5, 0x7c, 0xf5, 0x07, 0x49, 0x65, 0x49, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xfd, 0xd5, 0x1f, 0x24, 0xf0, 0x38, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x77, 0x60, 0xfd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x20, 0xac, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0xc9, 0x6c, 0x4e, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x29, 0x86, 0xf5, 0x07, 0xa5, 0x90, 0xfa, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0x8a, 0xf5, 0x07, 0x49, 0x65, 0x49, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xca, 0x58, 0xbf, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb3, 0x63, 0xfd, 0xc1, 0x72, 0x68, 0xcf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0b, 0xa6, 0xeb, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4c, 0x75, 0xfd, 0xc1, 0xba, 0x6f, 0xcf, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0xb1, 0xeb, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xbf, 0x76, 0xfd, 0xc1, 0x89, 0xa0, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x4e, 0xef, 0xfa, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x0c, 0x5e, 0x7f, 0x70, 0x92, 0x69, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x8d, 0xbc, 0x7e, 0xc3, 0xc7, 0x51, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x81, 0xe6, 0xf5, 0x07, 0x6b, 0x0d, 0x3e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x4a, 0xaf, 0x3f, 0x58, 0x04, 0xef, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x65, 0xec, 0xf5, 0x07, 0x4b, 0x2b, 0x3e, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xeb, 0xbd, 0xfe, 0xf0, 0x98, 0xcc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x0d, 0xf2, 0xf5, 0x07, 0x8b, 0xf0, 0xe4, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x89, 0xac, 0xdf, 0xa0, 0x20, 0x8d, 0xdd, 0xa0, 0x2c, 0x2c, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x6c, 0xb2, 0x7e, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0x56, 0xd6, 0x1f, 0x2c, 0xf4, 0x9c, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x24, 0xb3, 0xfe, 0x60, 0x69, 0xc5, 0x67, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa9, 0x9b, 0xf5, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xb9, 0xb3, 0x7e, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0x7f, 0xd6, 0x1f, 0xbe, 0x38, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x72, 0xb4, 0xfe, 0x60, 0xad, 0xc1, 0xe7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0xa6, 0xf5, 0x07, 0x85, 0x97, 0x71, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa7, 0xa2, 0xd6, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6a, 0xd5, 0xfa, 0x83, 0x75, 0xdf, 0x9e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xb9, 0xd6, 0x1f, 0x2c, 0xad, 0xf8, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x26, 0xb6, 0xfe, 0x60, 0xad, 0xc1, 0xe7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0xb3, 0xf5, 0x07, 0x8b, 0xf0, 0xe4, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xb4, 0xad, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xb5, 0xb8, 0xf5, 0x07, 0x27, 0x82, 0xb6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0x78, 0xeb, 0x0f, 0x96, 0x56, 0x7c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xf0, 0x5b, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x82, 0xeb, 0x0f, 0x4e, 0x32, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x67, 0x13, 0xd7, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x82, 0xe3, 0xfa, 0xc3, 0xa7, 0x80, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x2a, 0xd7, 0x1f, 0xac, 0x35, 0xf8, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xa9, 0xb9, 0xfe, 0xa0, 0xf0, 0x32, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0e, 0xe8, 0xfa, 0x83, 0x45, 0xf0, 0x6e, 0x75, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x58, 0x42, 0xfc, 0x79, 0xb0, 0x40, 0x3b, 0x79, 0xc3, 0x89, 0xb0, 0xc1, 0x1b, 0x83, 0xe8, 0x0f, 0xda, 0x90, 0x1d, 0x38, 0x68, 0xb0, 0x76, 0x60, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0x34, 0x88, 0x3b, 0xb0, 0xc1, 0x82, 0x86, 0xa9, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x2a, 0x37, 0xeb, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0x2c, 0x39, 0x63, 0x43, 0x31, 0xdd, 0x20, 0x8a, 0x25, 0x07, 0x36, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x70, 0x78, 0x43, 0x1d, 0xd9, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0xcd, 0xce, 0x0e, 0x6c, 0x28, 0xa6, 0x1b, 0x44, 0xb1, 0xe4, 0xc0, 0x86, 0xb9, 0x1f, 0x3c, 0x3e, 0x88, 0x7e, 0xca, 0x81, 0xd5, 0x50, 0x4c, 0xd7, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0x0b, 0x44, 0xa4, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xa0, 0xc9, 0x75, 0x8f, 0x0d, 0xc5, 0x74, 0x83, 0xc8, 0xb7, 0x1c, 0xd8, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0xc1, 0xe1, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0xc1, 0x1b, 0x83, 0xe8, 0x37, 0x9c, 0x08, 0x1b, 0xbc, 0x31, 0x88, 0xfe, 0xa0, 0xa1, 0x3b, 0x8a, 0x83, 0xb6, 0xf1, 0x28, 0x36, 0x14, 0xd3, 0x0d, 0x22, 0xdf, 0x72, 0x60, 0xc3, 0xc4, 0x6d, 0x10, 0x2f, 0x96, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0x91, 0x6f, 0x39, 0xb0, 0x61, 0xee, 0x07, 0x97, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0x70, 0x45, 0xd8, 0x50, 0x4c, 0xd7, 0xe0, 0x35, 0x42, 0xf4, 0x07, 0x4b, 0x7b, 0x9c, 0x0f, 0x1e, 0x13, 0x44, 0x7f, 0x38, 0x8f, 0x0f, 0x9a, 0xbd, 0x84, 0xd8, 0x70, 0x22, 0x6c, 0x10, 0xe3, 0x9c, 0x03, 0x07, 0xad, 0xba, 0x42, 0x1c, 0x34, 0x04, 0x0b, 0xb1, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0x99, 0xc3, 0xf3, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0x34, 0x9c, 0x4e, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0xa3, 0xa0, 0x03, 0x1b, 0x26, 0x6e, 0x83, 0x98, 0xa5, 0x1c, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x51, 0xd0, 0x81, 0x0d, 0x73, 0x3f, 0x78, 0x7c, 0x10, 0x31, 0x99, 0x03, 0xab, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0x96, 0x2e, 0x53, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0xeb, 0xab, 0x1f, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0x41, 0x3a, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x59, 0xca, 0x81, 0x0d, 0xc5, 0x74, 0x83, 0xd8, 0x20, 0x1d, 0xd8, 0x30, 0xf7, 0x83, 0xc7, 0x07, 0x51, 0xc8, 0x39, 0xb0, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0xa1, 0x05, 0xf6, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0x36, 0x88, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x93, 0xa7, 0x03, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0x3f, 0x38, 0xbc, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0x73, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0x84, 0x2b, 0xc2, 0x41, 0x84, 0x65, 0x0e, 0x1c, 0xce, 0xe3, 0x83, 0x66, 0x2f, 0x21, 0x36, 0x9c, 0x08, 0x1b, 0x44, 0x8a, 0xea, 0xc0, 0x41, 0xab, 0xae, 0x10, 0x07, 0x0d, 0xc1, 0x42, 0x6c, 0x28, 0xa6, 0x1b, 0xc4, 0xe4, 0xe9, 0xc0, 0x86, 0x89, 0xdb, 0x20, 0x5e, 0x2c, 0x07, 0x36, 0x14, 0xd3, 0x0d, 0x62, 0xf2, 0x74, 0x60, 0xc3, 0xdc, 0x0f, 0x2e, 0x1f, 0x44, 0x3f, 0xe5, 0xc0, 0x6a, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0x55, 0x64, 0xd1, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0xb0, 0x16, 0xc5, 0x86, 0x62, 0xba, 0x41, 0x9c, 0xbc, 0x0e, 0x6c, 0x98, 0xb8, 0x0d, 0x62, 0x96, 0x72, 0x60, 0x43, 0x31, 0xdd, 0x20, 0x4e, 0x5e, 0x07, 0x36, 0x4c, 0xdc, 0x06, 0xf1, 0x62, 0x39, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0x27, 0xaf, 0x03, 0x07, 0xd1, 0xe5, 0x3a, 0x30, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0x25, 0x51, 0xd3, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0x3c, 0x34, 0xc4, 0x86, 0x62, 0xba, 0x41, 0x1c, 0xcd, 0x0e, 0x6c, 0x98, 0xfb, 0xc1, 0xe1, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0xc1, 0x1b, 0x83, 0xe8, 0x37, 0x9c, 0x08, 0x1b, 0xbc, 0x31, 0x88, 0xfe, 0xa0, 0x01, 0x6d, 0x88, 0x83, 0x36, 0xb7, 0x21, 0x66, 0x0d, 0xc5, 0x74, 0x0d, 0x1e, 0x13, 0x44, 0x7f, 0xb0, 0x0a, 0x1d, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0x1a, 0x7b, 0xb5, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x98, 0xdb, 0x81, 0x0d, 0x13, 0xb7, 0x41, 0x1c, 0xd4, 0x0e, 0x6c, 0x28, 0xa6, 0x1b, 0x44, 0xcc, 0xed, 0xc0, 0x41, 0xbc, 0x58, 0x0e, 0x1c, 0x4e, 0xb1, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0xba, 0xdc, 0xeb, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0xaf, 0x74, 0x63, 0x43, 0x31, 0xdd, 0x20, 0x0a, 0x75, 0x07, 0x0e, 0x62, 0x96, 0x72, 0x60, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x62, 0xa9, 0xe8, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0xf8, 0x69, 0x63, 0x43, 0x31, 0xdd, 0x20, 0x8a, 0x79, 0x07, 0x36, 0x4c, 0xdc, 0x06, 0x31, 0x4b, 0x39, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0xc5, 0xbc, 0x03, 0x07, 0xf1, 0x62, 0x39, 0x30, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0x65, 0xa4, 0xcf, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0xfa, 0xf9, 0xc7, 0x86, 0x62, 0xba, 0x41, 0xdc, 0xff, 0x0e, 0x6c, 0x98, 0xb8, 0x0d, 0x9a, 0xec, 0xaa, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0xfb, 0xdf, 0x81, 0x83, 0xc6, 0x25, 0x35, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0x2c, 0x3e, 0xae, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0x66, 0x67, 0x36, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0x63, 0x78, 0x60, 0xc3, 0xc4, 0x6d, 0x10, 0xb3, 0x94, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0xd1, 0x31, 0x3c, 0x70, 0x10, 0x2f, 0x96, 0x03, 0x87, 0x53, 0xac, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x42, 0xee, 0xe8, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0xea, 0xec, 0x63, 0x43, 0x31, 0xdd, 0x20, 0xea, 0x8c, 0x07, 0x36, 0x4c, 0xdc, 0x06, 0x31, 0x4b, 0x39, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0x75, 0xc6, 0x03, 0x07, 0x91, 0x6c, 0x3a, 0xb0, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0x9d, 0x19, 0xf5, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0xd7, 0x83, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0xa3, 0xc9, 0x03, 0x1b, 0x26, 0x6e, 0x83, 0x98, 0xa5, 0x1c, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0xd1, 0xe4, 0x81, 0x83, 0x78, 0xb1, 0x1c, 0x38, 0x9c, 0x62, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0x05, 0x63, 0xcf, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0x84, 0xab, 0xc6, 0x86, 0x62, 0xba, 0x41, 0xdc, 0x33, 0x0f, 0x1c, 0x34, 0xd9, 0x55, 0xb1, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0x55, 0xf5, 0xf3, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0xb9, 0xf3, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x33, 0xcf, 0x03, 0x1b, 0xe6, 0x7e, 0x70, 0x78, 0x83, 0x05, 0x0d, 0x53, 0x1b, 0xb4, 0xeb, 0x55, 0xb1, 0x1a, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x83, 0x37, 0x06, 0xd1, 0x6f, 0x38, 0x11, 0x36, 0x78, 0x63, 0x10, 0xfd, 0x41, 0xd3, 0x45, 0x1f, 0x07, 0xad, 0x1d, 0x7d, 0x1c, 0x4e, 0xb1, 0x0e, 0xa7, 0x58, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0xe5, 0x38, 0xd5, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0xcc, 0x36, 0xc5, 0x86, 0x62, 0xba, 0x41, 0x1c, 0x50, 0x0f, 0x6c, 0x98, 0xb8, 0x0d, 0xe2, 0xa0, 0x76, 0x60, 0x43, 0x31, 0xdd, 0x20, 0x0e, 0xa8, 0x07, 0x0e, 0xe2, 0xc5, 0x72, 0x60, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x42, 0x92, 0xea, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0xf2, 0x26, 0x63, 0x43, 0x31, 0xdd, 0x20, 0x6a, 0xae, 0x07, 0x36, 0x4c, 0xdc, 0x06, 0x71, 0x50, 0x3b, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0x35, 0xd7, 0x03, 0x07, 0xf1, 0x62, 0x39, 0xb0, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0x75, 0x0e, 0xf4, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0xc4, 0xb6, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x63, 0xda, 0x03, 0x1b, 0x26, 0x6e, 0x83, 0xd6, 0xe2, 0x36, 0x36, 0x14, 0xd3, 0x0d, 0x62, 0x4c, 0x7b, 0x60, 0xc3, 0xdc, 0x6f, 0xb0, 0x6c, 0x0a, 0xfa, 0x20, 0xa2, 0x6a, 0x07, 0x66, 0x0d, 0xc5, 0x74, 0x0d, 0x1e, 0x13, 0x44, 0x7f, 0xb0, 0x0a, 0xef, 0x79, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0xda, 0x30, 0xb9, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x00, 0xef, 0x81, 0x83, 0x98, 0xa5, 0x1c, 0x38, 0x9c, 0x62, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0xf5, 0x6a, 0xd2, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0x9e, 0x52, 0xc5, 0x86, 0x62, 0xba, 0x41, 0x9c, 0x81, 0x0f, 0x6c, 0x98, 0xb8, 0x0d, 0x62, 0x96, 0x72, 0x60, 0x43, 0x31, 0xdd, 0x20, 0xce, 0xc0, 0x07, 0x0e, 0xe2, 0xc5, 0x72, 0x60, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x32, 0x80, 0xeb, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0x26, 0xc5, 0x63, 0x43, 0x31, 0xdd, 0x20, 0x2a, 0xc7, 0x07, 0x36, 0x4c, 0xdc, 0x06, 0x31, 0x4b, 0x39, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0x95, 0xe3, 0x03, 0x07, 0xf1, 0x62, 0x39, 0xb0, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0x3d, 0x5a, 0xf5, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0x26, 0x6e, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0xc3, 0xe6, 0x03, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0x3f, 0x38, 0xbc, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0x36, 0x78, 0x63, 0x10, 0xfd, 0x86, 0x13, 0x61, 0x83, 0x37, 0x06, 0xd1, 0x1f, 0xb4, 0x32, 0x57, 0x71, 0xd0, 0x30, 0x5d, 0xc5, 0x86, 0x62, 0xba, 0x41, 0x0c, 0x9b, 0x0f, 0x6c, 0x98, 0xb8, 0x0d, 0xe2, 0xc5, 0x72, 0x60, 0x43, 0x31, 0xdd, 0x20, 0x86, 0xcd, 0x07, 0x0e, 0xa2, 0xcb, 0x75, 0xe0, 0x70, 0x8a, 0xd5, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0x55, 0x91, 0xf4, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0xe9, 0xbb, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0xb3, 0xec, 0x03, 0x1b, 0x26, 0x6e, 0x83, 0x38, 0xa8, 0x1d, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x59, 0xf6, 0x81, 0x83, 0x78, 0xb1, 0x1c, 0x58, 0x0d, 0xc5, 0x74, 0x0d, 0x1e, 0x13, 0x44, 0x7f, 0xb0, 0xf2, 0x3d, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0xda, 0x6b, 0xa3, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0xf0, 0xf7, 0x81, 0x0d, 0x13, 0xb7, 0x41, 0x9c, 0x63, 0x0e, 0x6c, 0x28, 0xa6, 0x1b, 0x44, 0xf8, 0xfb, 0xc0, 0x86, 0x89, 0xdb, 0x20, 0x5e, 0x2c, 0x07, 0x36, 0x14, 0xd3, 0x0d, 0x22, 0xfc, 0x7d, 0x60, 0xc3, 0xdc, 0x0f, 0x2e, 0x6f, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x86, 0xe9, 0xdc, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xe1, 0x8a, 0xb0, 0xa1, 0x98, 0xae, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0x04, 0xcb, 0xd2, 0x41, 0x84, 0x65, 0x0e, 0x6c, 0x98, 0xfb, 0x0d, 0x82, 0x70, 0xe9, 0x20, 0xf2, 0x3b, 0x07, 0x0e, 0xe7, 0xf1, 0x41, 0x2b, 0x9c, 0x14, 0x07, 0x61, 0xc1, 0xb4, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0xf3, 0x20, 0xde, 0xea, 0x07, 0x36, 0x9c, 0x08, 0x1b, 0x44, 0x0a, 0xfe, 0xc0, 0x41, 0xfb, 0xb0, 0x14, 0x87, 0xf3, 0xf8, 0xa0, 0xd9, 0x4b, 0x88, 0x0d, 0x27, 0xc2, 0x06, 0x51, 0x42, 0x3f, 0x70, 0xd0, 0xaa, 0x2b, 0xc4, 0x41, 0x43, 0xb0, 0x10, 0x87, 0x53, 0xac, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x4a, 0x7b, 0xe8, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0xa8, 0xee, 0x62, 0x43, 0x31, 0xdd, 0x20, 0xaa, 0xf6, 0x07, 0x36, 0x4c, 0xdc, 0x06, 0x71, 0x50, 0x3b, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0x55, 0xfb, 0x03, 0x07, 0xf1, 0x62, 0x39, 0xb0, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0xa5, 0x38, 0xf5, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0x34, 0x9e, 0xfb, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x83, 0xfe, 0x03, 0x07, 0x31, 0x4b, 0x39, 0x70, 0x38, 0xc5, 0xd6, 0x50, 0x4c, 0xd7, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0x6b, 0xf7, 0xa2, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xa0, 0x95, 0x5d, 0x8c, 0x0d, 0xc5, 0x74, 0x83, 0x48, 0x07, 0x20, 0xd8, 0x30, 0xf7, 0x83, 0xc3, 0x07, 0x51, 0xc8, 0x39, 0xb0, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0x35, 0x13, 0xf5, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0x3a, 0x99, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x73, 0x03, 0x04, 0x1b, 0x26, 0x6e, 0x83, 0x06, 0xfc, 0x29, 0x36, 0x14, 0xd3, 0x0d, 0x62, 0x6e, 0x80, 0x60, 0xc3, 0xc4, 0x6d, 0x10, 0x2f, 0x96, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0x31, 0x37, 0x40, 0x70, 0x10, 0x5d, 0xae, 0x03, 0xab, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0x56, 0x20, 0x3d, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0x9b, 0x20, 0x15, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0x78, 0x40, 0xb0, 0x61, 0xee, 0x07, 0x87, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0x26, 0x6e, 0x83, 0x36, 0x56, 0x2a, 0x36, 0xcc, 0xfd, 0x06, 0x41, 0xb8, 0xb4, 0x61, 0x86, 0x36, 0x78, 0x63, 0x10, 0xfd, 0x86, 0x13, 0x61, 0x83, 0x37, 0x06, 0xd1, 0x1f, 0xb4, 0x21, 0x53, 0x71, 0x38, 0x8f, 0x0f, 0x5a, 0xe1, 0xa4, 0xd8, 0x70, 0x22, 0x6c, 0x10, 0xf3, 0x09, 0x04, 0x07, 0xed, 0xc3, 0x52, 0x1c, 0x34, 0x29, 0x4b, 0xb1, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0x75, 0xa1, 0xf5, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0x34, 0x05, 0x9b, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x53, 0x0e, 0x04, 0x07, 0x91, 0x2a, 0x40, 0xb0, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0xcd, 0xfa, 0xf5, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0xce, 0xa7, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x93, 0x10, 0x04, 0x1b, 0x26, 0x6e, 0x83, 0x38, 0xa8, 0x1d, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x49, 0x08, 0x82, 0x83, 0x78, 0xb1, 0x1c, 0x98, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x6a, 0x9e, 0xe9, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0x01, 0x23, 0x63, 0x43, 0x31, 0xdd, 0x20, 0x8a, 0x27, 0x08, 0x0e, 0x62, 0x96, 0x72, 0x60, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x3a, 0xd0, 0xeb, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0x3e, 0xfb, 0x63, 0x43, 0x31, 0xdd, 0x20, 0x0a, 0x2c, 0x08, 0x36, 0x4c, 0xdc, 0x06, 0x71, 0x50, 0x3b, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0x05, 0x16, 0x04, 0x07, 0x11, 0x35, 0x3a, 0x30, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0x05, 0x09, 0xd4, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0x24, 0xec, 0xc6, 0x86, 0x62, 0xba, 0x41, 0xdc, 0x64, 0x10, 0x6c, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0xe0, 0xf0, 0x06, 0x0b, 0x1a, 0xa6, 0xd6, 0x30, 0x71, 0x1b, 0x34, 0xd9, 0x55, 0x71, 0x10, 0x2f, 0x96, 0x03, 0x1b, 0x34, 0x34, 0x83, 0xd1, 0x86, 0x62, 0xba, 0x41, 0xdc, 0x64, 0x10, 0x1c, 0xc4, 0x8b, 0xe5, 0xc0, 0xe1, 0x14, 0x6b, 0x0d, 0xc5, 0x74, 0x0d, 0x1e, 0x13, 0x44, 0x7f, 0xb0, 0x96, 0xe2, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0xda, 0xda, 0xcd, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0xf0, 0x0e, 0x82, 0x0d, 0x13, 0xb7, 0x41, 0xcc, 0x52, 0x0e, 0x6c, 0x28, 0xa6, 0x1b, 0x44, 0x78, 0x07, 0xc1, 0x41, 0xbc, 0x58, 0x0e, 0xcc, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0x05, 0x02, 0xf6, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0x53, 0x9a, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x13, 0x21, 0x04, 0x07, 0x31, 0x4b, 0x39, 0x30, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0x15, 0x04, 0xd6, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0x80, 0xb2, 0xc6, 0x86, 0x62, 0xba, 0x41, 0x5c, 0x8d, 0x10, 0x6c, 0x98, 0xb8, 0x0d, 0x22, 0x16, 0x7d, 0x60, 0x43, 0x31, 0xdd, 0x20, 0xae, 0x46, 0x08, 0x36, 0x4c, 0xdc, 0x06, 0x11, 0x35, 0x3a, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0x57, 0x23, 0x04, 0x1b, 0x26, 0x6e, 0x83, 0xe8, 0x72, 0x1d, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0xab, 0x11, 0x82, 0x0d, 0x73, 0x3f, 0xf8, 0x7c, 0x10, 0xfd, 0x94, 0x03, 0x87, 0x53, 0xac, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0xf2, 0xf2, 0xe9, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0x1b, 0x05, 0x63, 0x43, 0x31, 0xdd, 0x20, 0xaa, 0x51, 0x08, 0x36, 0x4c, 0xdc, 0x06, 0x51, 0xb2, 0x41, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0xd5, 0x28, 0x04, 0x07, 0xf1, 0x62, 0x39, 0xb0, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0x21, 0x41, 0xf4, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0x40, 0x6f, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x03, 0x2c, 0x04, 0x1b, 0x26, 0x6e, 0x83, 0x56, 0xf2, 0x2d, 0x36, 0x14, 0xd3, 0x0d, 0x62, 0x80, 0x85, 0x60, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x86, 0xe9, 0xdc, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x35, 0x4c, 0xdc, 0x06, 0xad, 0x66, 0x50, 0x6c, 0x98, 0xfb, 0x0d, 0x4e, 0xb4, 0x1e, 0x1b, 0x66, 0x68, 0x83, 0x37, 0x06, 0xd1, 0x6f, 0x38, 0x11, 0x36, 0x78, 0x63, 0x10, 0xfd, 0x41, 0xd3, 0x20, 0x14, 0x07, 0x21, 0xa5, 0x7c, 0xd0, 0x8e, 0x0c, 0xc5, 0x86, 0x13, 0x61, 0x83, 0xa8, 0x7a, 0x21, 0x38, 0x68, 0x38, 0x88, 0xe2, 0xa0, 0xad, 0x21, 0x8a, 0x59, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0xac, 0xd0, 0xa7, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0x56, 0xbe, 0x35, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0x79, 0x86, 0x60, 0xc3, 0xc4, 0x6d, 0x10, 0x07, 0xb5, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0xd1, 0x3c, 0x43, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x17, 0xcb, 0x81, 0x0d, 0xc5, 0x74, 0x83, 0x68, 0x9e, 0x21, 0xd8, 0x30, 0x71, 0x1b, 0x44, 0x97, 0xeb, 0xc0, 0x86, 0x62, 0xba, 0x41, 0x34, 0xcf, 0x10, 0x1c, 0x44, 0xf8, 0x09, 0xc1, 0xac, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0x56, 0x92, 0x4d, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0x4b, 0x89, 0x19, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0x8d, 0x43, 0x70, 0x10, 0x07, 0xb5, 0x03, 0xab, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0xd6, 0xdb, 0x4d, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0xa3, 0xa1, 0x18, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0xb1, 0x43, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x59, 0xca, 0x81, 0x0d, 0xc5, 0x74, 0x83, 0xd8, 0xd8, 0x21, 0x38, 0x88, 0x17, 0xcb, 0x81, 0xd5, 0x50, 0x4c, 0xd7, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0x0b, 0x53, 0x9e, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xa0, 0x2d, 0x7f, 0x8f, 0x0d, 0xc5, 0x74, 0x83, 0x48, 0xf2, 0x21, 0xd8, 0x30, 0xf7, 0x83, 0xc3, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x61, 0x3a, 0x37, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0x0d, 0x73, 0xbf, 0x41, 0xb8, 0x22, 0x6c, 0x98, 0xa1, 0x0d, 0xde, 0x18, 0x44, 0xbf, 0xe1, 0x44, 0xd8, 0xe0, 0x8d, 0x41, 0xf4, 0x07, 0xed, 0x31, 0x7c, 0x1c, 0xce, 0xe3, 0x83, 0x66, 0x2f, 0x21, 0x36, 0x9c, 0x08, 0x1b, 0x44, 0x2c, 0x10, 0xc1, 0x41, 0xab, 0xae, 0x10, 0x07, 0x0d, 0xc1, 0x42, 0xcc, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0xb1, 0x6b, 0xf5, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0x07, 0x73, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0xa3, 0x44, 0x04, 0x1b, 0x26, 0x6e, 0x83, 0x38, 0xc7, 0x1c, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x51, 0x22, 0x82, 0x0d, 0x13, 0xb7, 0x41, 0xbc, 0x58, 0x0e, 0x6c, 0x28, 0xa6, 0x1b, 0xc4, 0x28, 0x11, 0xc1, 0x86, 0x89, 0xdb, 0x20, 0xba, 0x5c, 0x07, 0x36, 0x14, 0xd3, 0x0d, 0x62, 0x94, 0x88, 0xe0, 0x20, 0xc2, 0x4f, 0x08, 0x0e, 0xa7, 0x58, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0xb5, 0xcc, 0xd3, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0xce, 0x8d, 0xc7, 0x86, 0x62, 0xba, 0x41, 0x5c, 0x27, 0x11, 0x6c, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0xe0, 0xf0, 0x86, 0x3a, 0xb2, 0x86, 0x19, 0xda, 0xe0, 0x8d, 0x41, 0xf4, 0x1b, 0x4e, 0x84, 0x0d, 0xde, 0x18, 0x44, 0x7f, 0xd0, 0x40, 0x90, 0xc7, 0x41, 0x9b, 0x42, 0x1e, 0x1b, 0x8a, 0xe9, 0x06, 0x71, 0x9d, 0x44, 0x70, 0x10, 0x2f, 0x96, 0x03, 0x87, 0x53, 0x6c, 0x0d, 0xc5, 0x74, 0x0d, 0x1e, 0x13, 0x44, 0x7f, 0xb0, 0xbc, 0x05, 0x7b, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0xda, 0x26, 0xfe, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x68, 0x27, 0x82, 0x0d, 0x13, 0xb7, 0x41, 0xfb, 0xc9, 0x1f, 0x1b, 0x8a, 0xe9, 0x06, 0x11, 0xed, 0x44, 0x70, 0x10, 0x2f, 0x96, 0x03, 0xb3, 0x86, 0x62, 0xba, 0x06, 0x8f, 0x09, 0xa2, 0x3f, 0x58, 0xd9, 0x2c, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x06, 0x0d, 0xdb, 0x7a, 0x6c, 0x28, 0xa6, 0x1b, 0xc4, 0x7f, 0x14, 0xc1, 0x86, 0x89, 0xdb, 0x20, 0x66, 0x29, 0x07, 0x36, 0x14, 0xd3, 0x0d, 0xe2, 0x3f, 0x8a, 0xe0, 0x20, 0x5e, 0x2c, 0x07, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0xac, 0x24, 0x97, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0xa6, 0x27, 0x41, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0xa5, 0x8a, 0x60, 0xc3, 0xc4, 0x6d, 0x10, 0x07, 0xb5, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0xd1, 0x52, 0x45, 0x70, 0x10, 0x2f, 0x96, 0x03, 0xab, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0x56, 0x8d, 0x4c, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0xfb, 0xe5, 0x19, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0x85, 0x45, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x58, 0xf4, 0x81, 0x0d, 0xc5, 0x74, 0x83, 0xd8, 0xc2, 0x22, 0x38, 0x88, 0x17, 0xcb, 0x81, 0xc3, 0x29, 0xb6, 0x86, 0x62, 0xba, 0x06, 0x8f, 0x09, 0xa2, 0x3f, 0x58, 0x69, 0xef, 0xbc, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x06, 0x8d, 0xa4, 0x68, 0x6c, 0x28, 0xa6, 0x1b, 0xc4, 0xeb, 0x16, 0xc1, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x0f, 0x0e, 0x6f, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x0d, 0xde, 0x18, 0x44, 0xbf, 0xe1, 0x44, 0xd8, 0xe0, 0x8d, 0x41, 0xf4, 0x07, 0xad, 0xcb, 0x68, 0x1c, 0x34, 0x48, 0xa3, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0xaf, 0x5b, 0x04, 0x07, 0xf1, 0x62, 0x39, 0x70, 0x38, 0xc5, 0xd6, 0x50, 0x4c, 0xd7, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0x2b, 0x2d, 0xa9, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xa0, 0x59, 0xb6, 0x8c, 0x0d, 0xc5, 0x74, 0x83, 0x48, 0x05, 0x23, 0xd8, 0x30, 0x71, 0x1b, 0xc4, 0x2c, 0xe5, 0xc0, 0x86, 0x62, 0xba, 0x41, 0xa4, 0x82, 0x11, 0x1c, 0xc4, 0x8b, 0xe5, 0xc0, 0xe1, 0x14, 0x5b, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0xac, 0x4c, 0xb7, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0xf6, 0x58, 0x40, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0x7f, 0x8c, 0x60, 0xc3, 0xc4, 0x6d, 0x10, 0xe7, 0x98, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0xd1, 0x3f, 0x46, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x17, 0xcb, 0x81, 0x0d, 0xc5, 0x74, 0x83, 0xe8, 0x1f, 0x23, 0x38, 0x88, 0x2e, 0xd7, 0x81, 0xd5, 0x50, 0x4c, 0xd7, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0x8b, 0x90, 0x9d, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xa0, 0xc1, 0x3a, 0x90, 0x0d, 0xc5, 0x74, 0x83, 0xc8, 0x40, 0x23, 0x38, 0x68, 0x3d, 0x0f, 0xe4, 0x70, 0x8a, 0xb5, 0x86, 0x62, 0xba, 0x06, 0x8f, 0x09, 0xa2, 0x3f, 0x58, 0xe5, 0x7c, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x06, 0x4d, 0x79, 0x6d, 0x6c, 0x28, 0xa6, 0x1b, 0xc4, 0x9f, 0x1a, 0xc1, 0x86, 0x89, 0xdb, 0x20, 0x66, 0x29, 0x07, 0x36, 0x14, 0xd3, 0x0d, 0xe2, 0x4f, 0x8d, 0xe0, 0x20, 0x5e, 0x2c, 0x07, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0x2c, 0xb2, 0xac, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0xe6, 0x70, 0x35, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0xb5, 0x8d, 0x60, 0xc3, 0xc4, 0x6d, 0x10, 0xe7, 0x98, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0xd1, 0xda, 0x46, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x17, 0xcb, 0x81, 0x0d, 0xc5, 0x74, 0x83, 0x68, 0x6d, 0x23, 0x38, 0x88, 0x2e, 0xd7, 0x81, 0xd5, 0x50, 0x4c, 0xd7, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0x0b, 0x8e, 0xae, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xa0, 0x11, 0x44, 0x88, 0x0d, 0xc5, 0x74, 0x83, 0x48, 0x8e, 0x23, 0x38, 0x88, 0x54, 0x01, 0x82, 0xd5, 0x50, 0x4c, 0xd7, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0x4b, 0x95, 0xac, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xa0, 0x25, 0xa3, 0x8b, 0x0d, 0xc5, 0x74, 0x83, 0x48, 0xa0, 0x23, 0xd8, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0xc1, 0xe1, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x30, 0x9d, 0x1b, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x86, 0x89, 0xdb, 0xa0, 0x8d, 0x95, 0x8a, 0x0d, 0x73, 0xbf, 0x41, 0x10, 0x2e, 0x6d, 0x28, 0xa6, 0xab, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0x0d, 0xc2, 0x15, 0x61, 0x43, 0x31, 0x5d, 0x83, 0xd7, 0x08, 0xd1, 0x1f, 0xac, 0xce, 0xf1, 0x3e, 0x88, 0xc0, 0xda, 0x81, 0xc3, 0x79, 0x7c, 0xd0, 0x76, 0xc0, 0xc5, 0x41, 0x00, 0x25, 0x6c, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x86, 0xe9, 0x3c, 0x88, 0x2d, 0x3c, 0x82, 0x0d, 0x27, 0xc2, 0x06, 0x51, 0xaf, 0x47, 0x70, 0xd0, 0x16, 0xc3, 0xc5, 0xe1, 0x3c, 0x3e, 0x68, 0x85, 0x93, 0x62, 0xc3, 0x89, 0xb0, 0x41, 0x7c, 0xda, 0x11, 0x1c, 0xb4, 0x0f, 0x4b, 0x71, 0xd0, 0xa4, 0x2c, 0xc5, 0x86, 0x62, 0xba, 0x41, 0x24, 0xd0, 0x11, 0x6c, 0x98, 0xb8, 0x0d, 0xe2, 0xc5, 0x72, 0x60, 0x43, 0x31, 0xdd, 0x20, 0x12, 0xe8, 0x08, 0x0e, 0xa2, 0xcb, 0x75, 0x60, 0xd6, 0x50, 0x4c, 0xd7, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0x4b, 0xb1, 0xa4, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xa0, 0x19, 0x58, 0x8c, 0x0d, 0xc5, 0x74, 0x83, 0x48, 0xfd, 0x23, 0x38, 0x88, 0x59, 0xca, 0x81, 0xc3, 0x29, 0xd6, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0x41, 0xb7, 0xf3, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0x34, 0xc9, 0xbc, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x13, 0x82, 0x04, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0x3f, 0x38, 0xbc, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0x36, 0x78, 0x63, 0x10, 0xfd, 0x86, 0x13, 0x61, 0x83, 0x37, 0x06, 0xd1, 0x1f, 0xb4, 0x65, 0xbd, 0x71, 0xd0, 0xfc, 0xf5, 0xc6, 0x86, 0x62, 0xba, 0x41, 0x4c, 0x08, 0x12, 0x6c, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0xc1, 0x1b, 0x83, 0xe8, 0x37, 0x9c, 0x08, 0x1b, 0xbc, 0x31, 0x88, 0xfe, 0xa0, 0xa5, 0x62, 0x8e, 0x83, 0xc6, 0x8d, 0x39, 0x56, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0x62, 0x96, 0x72, 0xe0, 0x20, 0x5e, 0x2c, 0x07, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0xac, 0x0f, 0xac, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0x86, 0x8c, 0x32, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0x33, 0x91, 0x60, 0xc3, 0xc4, 0x6d, 0x10, 0xb1, 0xe8, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0xd1, 0x99, 0x48, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x17, 0xcb, 0x81, 0x0d, 0xc5, 0x74, 0x83, 0xe8, 0x4c, 0x24, 0x38, 0x88, 0x2e, 0xd7, 0x81, 0xd5, 0x50, 0x4c, 0xd7, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0x8b, 0xb9, 0xaf, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xa0, 0xad, 0x5e, 0x8b, 0x0d, 0xc5, 0x74, 0x83, 0xc8, 0x6d, 0x24, 0x38, 0x88, 0x59, 0xca, 0x81, 0xc3, 0x29, 0xd6, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0xf9, 0xaa, 0xf3, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0x58, 0x8c, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x23, 0x90, 0x04, 0x1b, 0x26, 0x6e, 0x83, 0x56, 0x95, 0x31, 0x36, 0x14, 0xd3, 0x0d, 0x62, 0x04, 0x92, 0xe0, 0x20, 0x5e, 0x2c, 0x07, 0x0e, 0xa7, 0x58, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0x05, 0x0e, 0xd5, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0x14, 0xb2, 0xc5, 0x86, 0x62, 0xba, 0x41, 0xdc, 0x4d, 0x12, 0x6c, 0x98, 0xb8, 0x0d, 0x62, 0x96, 0x72, 0x60, 0x43, 0x31, 0xdd, 0x20, 0xee, 0x26, 0x09, 0x0e, 0x22, 0xd9, 0x74, 0x60, 0xd6, 0x50, 0x4c, 0xd7, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0x8b, 0x27, 0xa4, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xa0, 0x21, 0x0d, 0x90, 0x0d, 0xc5, 0x74, 0x83, 0x48, 0xb5, 0x24, 0xd8, 0x30, 0x71, 0x1b, 0xc4, 0x2c, 0xe5, 0xc0, 0x86, 0x62, 0xba, 0x41, 0xa4, 0x5a, 0x12, 0x6c, 0x98, 0xb8, 0x0d, 0xe2, 0xc5, 0x72, 0x60, 0x43, 0x31, 0xdd, 0x20, 0x52, 0x2d, 0x09, 0x0e, 0xa2, 0xcb, 0x75, 0xe0, 0x70, 0x8a, 0xad, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0x16, 0x1d, 0x5e, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0x63, 0x69, 0x15, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0xae, 0x49, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x58, 0xf4, 0x81, 0x0d, 0xc5, 0x74, 0x83, 0x58, 0xd7, 0x24, 0x38, 0x88, 0xa8, 0xd1, 0x81, 0x59, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0xac, 0x95, 0x89, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0x36, 0x0a, 0x40, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0xc3, 0x93, 0x60, 0xc3, 0xc4, 0x6d, 0x10, 0xb3, 0x94, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0xd1, 0xe1, 0x49, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x17, 0xcb, 0x81, 0x0d, 0xc5, 0x74, 0x83, 0xe8, 0xf0, 0x24, 0xd8, 0x30, 0x71, 0x1b, 0x44, 0x97, 0xeb, 0xc0, 0x86, 0x62, 0xba, 0x41, 0x74, 0x78, 0x12, 0x1c, 0x44, 0xf8, 0x09, 0xc1, 0x6a, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0xe5, 0xbf, 0xd1, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0x62, 0xfa, 0xc5, 0x86, 0x62, 0xba, 0x41, 0x9c, 0x8c, 0x12, 0x6c, 0x98, 0xb8, 0x0d, 0x62, 0x96, 0x72, 0x60, 0x43, 0x31, 0xdd, 0x20, 0x4e, 0x46, 0x09, 0x0e, 0xe2, 0xc5, 0x72, 0x60, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0xda, 0x4c, 0xe7, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0x7a, 0xf0, 0x62, 0x43, 0x31, 0xdd, 0x20, 0xaa, 0x4c, 0x09, 0x36, 0xcc, 0xfd, 0xe0, 0xf0, 0x86, 0x3a, 0xb2, 0x86, 0x19, 0xda, 0xe0, 0x8d, 0x41, 0xf4, 0x1b, 0x4e, 0x84, 0x0d, 0xde, 0x18, 0x44, 0x7f, 0xd0, 0x38, 0xe3, 0xc5, 0x41, 0x7b, 0x8e, 0x17, 0xab, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0xd6, 0x0b, 0x42, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0x5b, 0xd7, 0x19, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0xa3, 0x4a, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x59, 0xca, 0x81, 0x0d, 0xc5, 0x74, 0x83, 0xd8, 0x51, 0x25, 0x38, 0x88, 0x17, 0xcb, 0x81, 0x59, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0x2c, 0x17, 0x95, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0x16, 0xea, 0x35, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0xad, 0x95, 0xe0, 0x20, 0x66, 0x29, 0x07, 0x66, 0x0d, 0xc5, 0x74, 0x0d, 0x1e, 0x13, 0x44, 0x7f, 0xb0, 0xae, 0xda, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0x5a, 0xfb, 0xd7, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0xd8, 0x57, 0x82, 0x0d, 0x13, 0xb7, 0x41, 0xcc, 0x52, 0x0e, 0x6c, 0x28, 0xa6, 0x1b, 0x44, 0xec, 0x2b, 0xc1, 0x86, 0x89, 0xdb, 0x20, 0x5e, 0x2c, 0x07, 0x36, 0x14, 0xd3, 0x0d, 0x22, 0xf6, 0x95, 0xe0, 0x20, 0xba, 0x5c, 0x07, 0x0e, 0xa7, 0x58, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0x35, 0x9a, 0xd6, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0xdc, 0x12, 0xc6, 0x86, 0x62, 0xba, 0x41, 0xdc, 0xcf, 0x12, 0x6c, 0x98, 0xb8, 0x0d, 0xe2, 0x1c, 0x73, 0x60, 0x43, 0x31, 0xdd, 0x20, 0xee, 0x67, 0x09, 0x36, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x3a, 0xb2, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x6f, 0x10, 0xae, 0x08, 0x1b, 0x8a, 0xe9, 0x6a, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0x26, 0x6e, 0x0d, 0x73, 0xbf, 0x41, 0xb0, 0x2c, 0x1d, 0x44, 0x47, 0x1e, 0xc1, 0x41, 0x9c, 0xda, 0x0f, 0x1c, 0xce, 0xe3, 0x83, 0x56, 0x38, 0x29, 0x0e, 0xc2, 0x82, 0x69, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x4c, 0xe7, 0x41, 0x5c, 0xe2, 0x12, 0x6c, 0x38, 0x11, 0x36, 0x88, 0x75, 0x5d, 0x82, 0x83, 0xf6, 0x61, 0x29, 0x0e, 0xe7, 0xf1, 0x41, 0xb3, 0x97, 0x10, 0x1b, 0x4e, 0x84, 0x0d, 0xa2, 0xe9, 0x96, 0xe0, 0xa0, 0x55, 0x57, 0x88, 0x83, 0x86, 0x60, 0x21, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0xac, 0x6f, 0x7c, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0xc6, 0x15, 0x35, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0xbd, 0x97, 0x60, 0xc3, 0xc4, 0x6d, 0xd0, 0x64, 0x57, 0xc5, 0x86, 0x62, 0xba, 0x41, 0xb4, 0xf7, 0x12, 0x1c, 0x34, 0x2e, 0xa9, 0xb1, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0xe9, 0x8d, 0xf4, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0xab, 0x97, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x13, 0xc1, 0x04, 0x1b, 0x26, 0x6e, 0x83, 0x38, 0xc7, 0x1c, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x89, 0x60, 0x82, 0x0d, 0x73, 0x3f, 0x78, 0x7c, 0x10, 0xc7, 0xf3, 0x03, 0xab, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0x16, 0xd7, 0x58, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0xf3, 0x01, 0x18, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0x48, 0x4c, 0x70, 0x10, 0xa9, 0x02, 0x04, 0xab, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0x56, 0x35, 0x46, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0x0b, 0xd8, 0x16, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0x6c, 0x4c, 0x70, 0x10, 0xa9, 0x02, 0x04, 0xb3, 0x86, 0x62, 0xba, 0x06, 0x8f, 0x09, 0xa2, 0x3f, 0x58, 0x37, 0x3a, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x06, 0x6d, 0xf8, 0x80, 0x6c, 0x28, 0xa6, 0x1b, 0xc4, 0x43, 0x32, 0xc1, 0x86, 0x89, 0xdb, 0x20, 0x8a, 0x97, 0x08, 0x36, 0x14, 0xd3, 0x0d, 0xe2, 0x21, 0x99, 0x60, 0xc3, 0xc4, 0x6d, 0x10, 0x2f, 0x96, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0xf1, 0x90, 0x4c, 0xb0, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x83, 0xcb, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x83, 0x37, 0x06, 0xd1, 0x6f, 0x38, 0x11, 0x36, 0x78, 0x63, 0x10, 0xfd, 0x41, 0x13, 0x4f, 0x20, 0x07, 0xad, 0x42, 0x81, 0x6c, 0x28, 0xa6, 0x1b, 0xc4, 0x43, 0x32, 0xc1, 0x41, 0x84, 0x9f, 0x10, 0x1c, 0x4e, 0xb1, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x0a, 0x48, 0xe9, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0x8d, 0xd4, 0x62, 0x43, 0x31, 0xdd, 0x20, 0xca, 0x9f, 0x09, 0x0e, 0x62, 0x96, 0x72, 0x60, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x5a, 0x37, 0xe7, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0x77, 0xe4, 0x63, 0x43, 0x31, 0xdd, 0x20, 0x4a, 0xa4, 0x09, 0x0e, 0xda, 0x3d, 0xf9, 0x38, 0x9c, 0x62, 0xad, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0xd6, 0x0c, 0x3a, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0xf3, 0x1e, 0x1b, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0x48, 0x4d, 0x70, 0x10, 0x15, 0xa8, 0x04, 0x87, 0x53, 0x6c, 0x0d, 0xc5, 0x74, 0x0d, 0x1e, 0x13, 0x44, 0x7f, 0xb0, 0x82, 0x08, 0x7b, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0x9a, 0x07, 0xfd, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x78, 0x6b, 0x82, 0x83, 0x16, 0xdb, 0x06, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0x2c, 0xce, 0x7d, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0x06, 0x1a, 0x32, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0x25, 0x9b, 0xe0, 0x20, 0x52, 0x05, 0x08, 0x66, 0x0d, 0xc5, 0x74, 0x0d, 0x1e, 0x13, 0x44, 0x7f, 0xb0, 0x32, 0xee, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0x9a, 0x9a, 0xdc, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0xb8, 0x6d, 0x82, 0x0d, 0x13, 0xb7, 0x41, 0x9c, 0x63, 0x0e, 0x6c, 0x28, 0xa6, 0x1b, 0x44, 0xdc, 0x36, 0xc1, 0x86, 0x89, 0xdb, 0x20, 0x5e, 0x2c, 0x07, 0x36, 0x14, 0xd3, 0x0d, 0x22, 0x6e, 0x9b, 0xe0, 0x20, 0xba, 0x5c, 0x07, 0x0e, 0xa7, 0x58, 0xad, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0xd6, 0x38, 0x47, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0xbb, 0x41, 0x1b, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0xfb, 0x4d, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x59, 0xca, 0x81, 0x0d, 0xc5, 0x74, 0x83, 0xd8, 0xfd, 0x26, 0x38, 0x88, 0x17, 0xcb, 0x81, 0xd5, 0x50, 0x4c, 0xd7, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0x4b, 0xb8, 0xa0, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xa0, 0x65, 0xfa, 0x89, 0x0d, 0xc5, 0x74, 0x83, 0x48, 0x17, 0x27, 0xd8, 0x30, 0x71, 0x1b, 0xc4, 0x41, 0xed, 0xc0, 0x86, 0x62, 0xba, 0x41, 0xa4, 0x8b, 0x13, 0x6c, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x3a, 0xb2, 0x86, 0x19, 0xda, 0xe0, 0x8d, 0x41, 0xf4, 0x1b, 0x4e, 0x84, 0x0d, 0xde, 0x18, 0x44, 0x7f, 0xd0, 0x8a, 0x00, 0xc5, 0x41, 0xc3, 0x03, 0x14, 0x1b, 0x8a, 0xe9, 0x06, 0x91, 0x2e, 0x4e, 0xb0, 0x61, 0xee, 0x07, 0x97, 0x0f, 0xe2, 0xde, 0x85, 0x60, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0xa2, 0x02, 0xe9, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0x4d, 0x24, 0x63, 0x43, 0x31, 0xdd, 0x20, 0xea, 0xd1, 0x09, 0x36, 0x4c, 0xdc, 0x06, 0x31, 0x4b, 0x39, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0xf5, 0xe8, 0x04, 0x1b, 0x26, 0x6e, 0x83, 0x78, 0xb1, 0x1c, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x7a, 0x74, 0x82, 0x0d, 0x13, 0xb7, 0x41, 0x74, 0xb9, 0x0e, 0x6c, 0x28, 0xa6, 0x1b, 0x44, 0x3d, 0x3a, 0xc1, 0x41, 0x84, 0x9f, 0x10, 0xac, 0x86, 0x62, 0xba, 0x06, 0x8f, 0x09, 0xa2, 0x3f, 0x58, 0xdf, 0x47, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x06, 0x8d, 0xe3, 0x53, 0x6c, 0x28, 0xa6, 0x1b, 0xc4, 0x7f, 0x3b, 0xc1, 0x86, 0x89, 0xdb, 0xa0, 0x01, 0x7f, 0x8a, 0x0d, 0xc5, 0x74, 0x83, 0xf8, 0x6f, 0x27, 0xd8, 0x30, 0x71, 0x1b, 0xc4, 0x8b, 0xe5, 0xc0, 0x86, 0x62, 0xba, 0x41, 0xfc, 0xb7, 0x13, 0x6c, 0x98, 0xb8, 0x0d, 0xa2, 0xcb, 0x75, 0x60, 0x43, 0x31, 0xdd, 0x20, 0xfe, 0xdb, 0x09, 0x0e, 0x22, 0xfc, 0x84, 0xe0, 0x70, 0x8a, 0xd5, 0x1a, 0x8a, 0xe9, 0x1a, 0x3c, 0x26, 0x88, 0xfe, 0x60, 0x8d, 0x68, 0xf4, 0x86, 0xb9, 0x1f, 0x3c, 0xde, 0x30, 0x71, 0x1b, 0x34, 0x61, 0x68, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x33, 0xf3, 0x04, 0x1b, 0x26, 0x6e, 0x83, 0x38, 0xc7, 0x1c, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x99, 0x79, 0x82, 0x83, 0x08, 0x1e, 0x26, 0x58, 0x0d, 0xc5, 0x74, 0x0d, 0x1e, 0x13, 0x44, 0x7f, 0xb0, 0xd8, 0xc3, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0x5a, 0xae, 0xb4, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x30, 0x7b, 0x82, 0x0d, 0x13, 0xb7, 0x41, 0xcc, 0x52, 0x0e, 0x6c, 0x28, 0xa6, 0x1b, 0x44, 0x98, 0x3d, 0xc1, 0x41, 0xbc, 0x58, 0x0e, 0xac, 0x86, 0x62, 0xba, 0x06, 0x8f, 0x09, 0xa2, 0x3f, 0x58, 0xdc, 0x5e, 0xbd, 0x61, 0xee, 0x07, 0x8f, 0x37, 0x4c, 0xdc, 0x06, 0x2d, 0x9e, 0x81, 0x6c, 0x28, 0xa6, 0x1b, 0xc4, 0x63, 0x3e, 0xc1, 0x86, 0x89, 0xdb, 0x20, 0x66, 0x29, 0x07, 0x36, 0x14, 0xd3, 0x0d, 0xe2, 0x31, 0x9f, 0xe0, 0x20, 0x5e, 0x2c, 0x07, 0x66, 0x0d, 0xc5, 0x74, 0x0d, 0x1e, 0x13, 0x44, 0x7f, 0xb0, 0xee, 0x61, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0x9a, 0xbe, 0xca, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x60, 0x7e, 0x82, 0x83, 0x98, 0xa5, 0x1c, 0x38, 0x9c, 0x62, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0xa5, 0xd7, 0xd0, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0x9c, 0x28, 0xc8, 0x86, 0x62, 0xba, 0x41, 0x9c, 0xfc, 0x13, 0x6c, 0x98, 0xb8, 0x0d, 0xe2, 0xa0, 0x76, 0x60, 0x43, 0x31, 0xdd, 0x20, 0x4e, 0xfe, 0x09, 0x0e, 0xe2, 0xc5, 0x72, 0x60, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x8a, 0x7d, 0xe9, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0xbc, 0xee, 0x63, 0x43, 0x31, 0xdd, 0x20, 0xaa, 0x04, 0x0a, 0x0e, 0x62, 0x96, 0x72, 0x60, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0xf2, 0xad, 0xeb, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0xd6, 0x02, 0x63, 0x43, 0x31, 0xdd, 0x20, 0x2a, 0x09, 0x0a, 0x36, 0x4c, 0xdc, 0x06, 0x71, 0x8e, 0x39, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0x95, 0x04, 0x05, 0x1b, 0x26, 0x6e, 0x83, 0x78, 0xb1, 0x1c, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x4a, 0x82, 0x82, 0x83, 0xe8, 0x72, 0x1d, 0x38, 0x9c, 0x62, 0xad, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0x56, 0xa5, 0x5c, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0x43, 0x80, 0x1f, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0x8d, 0x50, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x73, 0xcc, 0x81, 0x0d, 0xc5, 0x74, 0x83, 0xd8, 0x46, 0x28, 0xd8, 0x30, 0x71, 0x1b, 0xc4, 0x8b, 0xe5, 0xc0, 0x86, 0x62, 0xba, 0x41, 0x6c, 0x23, 0x14, 0x6c, 0x98, 0xfb, 0xc1, 0xe5, 0x83, 0x78, 0xb7, 0x25, 0x38, 0x9c, 0x62, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0xd5, 0xaa, 0xd0, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0x54, 0xca, 0xc6, 0x86, 0x62, 0xba, 0x41, 0x9c, 0x35, 0x14, 0x1c, 0xc4, 0x2c, 0xe5, 0xc0, 0x6a, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0x75, 0x8d, 0xd3, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0xac, 0xf8, 0xc4, 0x86, 0x62, 0xba, 0x41, 0x9c, 0x3e, 0x14, 0x6c, 0x98, 0xb8, 0x0d, 0x62, 0x96, 0x72, 0x60, 0x43, 0x31, 0xdd, 0x20, 0x4e, 0x1f, 0x0a, 0x0e, 0xe2, 0xc5, 0x72, 0x60, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x8a, 0xa6, 0xea, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0x89, 0x0e, 0x63, 0x43, 0x31, 0xdd, 0x20, 0xaa, 0x25, 0x0a, 0x36, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x70, 0xf8, 0x20, 0x8e, 0xe7, 0x07, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0x5a, 0xa2, 0xe0, 0x20, 0x5e, 0x2c, 0x07, 0x0e, 0xa7, 0x58, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0xa5, 0xf9, 0xd7, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0xbe, 0xe4, 0xc7, 0x86, 0x62, 0xba, 0x41, 0xdc, 0x59, 0x14, 0x6c, 0x98, 0xb8, 0x0d, 0x62, 0x96, 0x72, 0x60, 0x43, 0x31, 0xdd, 0x20, 0xee, 0x2c, 0x0a, 0x0e, 0xe2, 0xc5, 0x72, 0x60, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0xda, 0x64, 0xe8, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0x48, 0x2c, 0x63, 0x43, 0x31, 0xdd, 0x20, 0x4a, 0x33, 0x0a, 0x0e, 0x62, 0x96, 0x72, 0x60, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0x92, 0x5c, 0xe8, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0x1a, 0xa2, 0x62, 0x43, 0x31, 0xdd, 0x20, 0xca, 0x37, 0x0a, 0x36, 0x4c, 0xdc, 0x06, 0x31, 0x4b, 0x39, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0xe5, 0x1b, 0x05, 0x07, 0xd1, 0xea, 0x42, 0x30, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0xa5, 0x34, 0xd4, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0x90, 0xa6, 0xc6, 0x86, 0x62, 0xba, 0x41, 0x5c, 0x7c, 0x14, 0x6c, 0x98, 0xb8, 0x0d, 0x1a, 0xfb, 0xd4, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x8b, 0x8f, 0x82, 0x83, 0x78, 0xb1, 0x1c, 0x58, 0x0d, 0xc5, 0x74, 0x0d, 0x1e, 0x13, 0x44, 0x7f, 0xb0, 0x46, 0xfe, 0x79, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0x1a, 0xbc, 0xbf, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x20, 0x91, 0x82, 0x83, 0x38, 0xc7, 0x1c, 0x38, 0x9c, 0x62, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0x15, 0xc0, 0xd6, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0xe0, 0x85, 0xc6, 0x86, 0x62, 0xba, 0x41, 0x9c, 0x92, 0x14, 0x6c, 0x98, 0xb8, 0x0d, 0x62, 0x96, 0x72, 0x60, 0x43, 0x31, 0xdd, 0x20, 0x4e, 0x49, 0x0a, 0x36, 0x4c, 0xdc, 0x06, 0xf1, 0x62, 0x39, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0xa7, 0x24, 0x05, 0x07, 0xd1, 0xe5, 0x3a, 0x30, 0x6b, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0xd5, 0x12, 0xd1, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0xec, 0x9e, 0xc5, 0x86, 0x62, 0xba, 0x41, 0x1c, 0xa3, 0x14, 0x1c, 0xc4, 0x2c, 0xe5, 0xc0, 0xe1, 0x14, 0x5b, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0x2c, 0xf6, 0xa0, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0xe6, 0xb0, 0x2a, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0x65, 0xa5, 0x60, 0xc3, 0xc4, 0x6d, 0xd0, 0x64, 0x57, 0xc5, 0x86, 0x62, 0xba, 0x41, 0xb4, 0xac, 0x14, 0x1c, 0xc4, 0x8b, 0xe5, 0xc0, 0x6a, 0x28, 0xa6, 0x6b, 0xf0, 0x98, 0x20, 0xfa, 0x83, 0x15, 0xad, 0xd4, 0x1b, 0xe6, 0x7e, 0xf0, 0x78, 0xc3, 0xc4, 0x6d, 0xd0, 0xfc, 0x7c, 0xc6, 0x86, 0x62, 0xba, 0x41, 0x5c, 0xb9, 0x14, 0x6c, 0x98, 0xfb, 0xc1, 0xe1, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x30, 0x9d, 0x1b, 0x66, 0x68, 0x83, 0xd7, 0x08, 0xd1, 0x6f, 0x38, 0x11, 0x36, 0x78, 0x8d, 0x10, 0xfd, 0x41, 0x0b, 0xff, 0x19, 0x1b, 0x4e, 0x84, 0x0d, 0xe2, 0x17, 0xa6, 0xe0, 0xa0, 0x81, 0x01, 0x8d, 0x83, 0x36, 0x09, 0x34, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0xac, 0xca, 0x95, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0x16, 0xfe, 0x31, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0x6f, 0xa6, 0x60, 0xc3, 0xc4, 0x6d, 0x10, 0xb3, 0x94, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0xd1, 0x37, 0x53, 0x70, 0x10, 0x2f, 0x96, 0x03, 0x87, 0x53, 0x6c, 0x0d, 0xc5, 0x74, 0x0d, 0x1e, 0x13, 0x44, 0x7f, 0xb0, 0x1c, 0x12, 0x7a, 0xc3, 0xdc, 0x0f, 0x1e, 0x6f, 0x98, 0xb8, 0x0d, 0x9a, 0x88, 0xc7, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0x68, 0x9b, 0x82, 0x0d, 0x13, 0xb7, 0x41, 0x2b, 0xf9, 0x16, 0x1b, 0x8a, 0xe9, 0x06, 0x11, 0x6d, 0x53, 0x70, 0x10, 0xad, 0x2e, 0x04, 0xab, 0xa1, 0x98, 0xae, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0x56, 0x6f, 0x40, 0x6f, 0x98, 0xfb, 0xc1, 0xe3, 0x0d, 0x13, 0xb7, 0x41, 0xbb, 0xc4, 0x1e, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0x9f, 0x53, 0xb0, 0x61, 0xee, 0x07, 0x87, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x06, 0xf1, 0x0b, 0x53, 0xb0, 0xe1, 0x44, 0xd8, 0x20, 0x7e, 0x61, 0x0a, 0x0e, 0x5a, 0x75, 0xf6, 0x38, 0x68, 0x08, 0xda, 0x63, 0x35, 0x14, 0xd3, 0x35, 0x78, 0x4c, 0x10, 0xfd, 0xc1, 0xe2, 0x3e, 0xe9, 0x0d, 0x73, 0x3f, 0x78, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0xa5, 0x99, 0x62, 0x43, 0x31, 0xdd, 0x20, 0xca, 0x7b, 0x0a, 0x36, 0x4c, 0xdc, 0x06, 0x31, 0x4b, 0x39, 0xb0, 0xa1, 0x98, 0x6e, 0x10, 0xe5, 0x3d, 0x05, 0x07, 0xf1, 0x62, 0x39, 0x70, 0x38, 0xc5, 0x5a, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0x2c, 0x38, 0x80, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0xa6, 0x18, 0x30, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0x27, 0xa8, 0xe0, 0x20, 0x52, 0x05, 0x08, 0x56, 0x43, 0x31, 0x5d, 0x83, 0xc7, 0x04, 0xd1, 0x1f, 0xac, 0xd4, 0xae, 0xde, 0x30, 0xf7, 0x83, 0xc7, 0x1b, 0x26, 0x6e, 0x83, 0xf6, 0x21, 0x36, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0x6f, 0xa8, 0x60, 0xc3, 0xc4, 0x6d, 0x10, 0xb3, 0x94, 0x03, 0x1b, 0x8a, 0xe9, 0x06, 0xd1, 0x37, 0x54, 0x70, 0x10, 0x2f, 0x96, 0x03, 0x87, 0x53, 0xac, 0xd6, 0x50, 0x4c, 0xd7, 0xe0, 0x31, 0x41, 0xf4, 0x07, 0xeb, 0x41, 0xa2, 0x37, 0xcc, 0xfd, 0xe0, 0xf1, 0x86, 0x89, 0xdb, 0xa0, 0x45, 0xfb, 0x8f, 0x0d, 0xc5, 0x74, 0x83, 0xc8, 0x36, 0x2a, 0xd8, 0x30, 0x71, 0x1b, 0xc4, 0x2c, 0xe5, 0xc0, 0x86, 0x62, 0xba, 0x41, 0x64, 0x1b, 0x15, 0x1c, 0xc4, 0x8b, 0xe5, 0xc0, 0xe1, 0x14, 0xdb, 0x30, 0x71, 0x6b, 0xb0, 0xa0, 0x61, 0x6a, 0x83, 0x36, 0xec, 0x06, 0x66, 0x0d, 0x73, 0x3f, 0x38, 0xbb, 0x61, 0xe2, 0x36, 0x78, 0xd4, 0x0f, 0xfd, 0x86, 0x89, 0x5b, 0x83, 0x05, 0x0d, 0x53, 0x6b, 0x98, 0xfb, 0xc1, 0xd9, 0x0d, 0x13, 0xb7, 0xc1, 0xa3, 0x7e, 0xe8, 0x37, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x70, 0x76, 0x43, 0x1d, 0x59, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x4c, 0xe7, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x37, 0x08, 0xf6, 0xb6, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x30, 0x9d, 0x1b, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x86, 0x89, 0xdb, 0xa0, 0x8d, 0x95, 0x8a, 0x0d, 0xc5, 0x74, 0x83, 0x48, 0xf1, 0x1c, 0xd8, 0x30, 0xf7, 0x1b, 0x04, 0xe1, 0xd2, 0xc1, 0x63, 0x82, 0xe8, 0x0f, 0xe7, 0xf1, 0x41, 0x2b, 0x9c, 0x14, 0x1b, 0x4e, 0x84, 0x0d, 0xe2, 0xd9, 0xa9, 0xe0, 0xa0, 0x7d, 0x58, 0x8a, 0xc3, 0x79, 0x7c, 0xd0, 0xba, 0x33, 0xc8, 0x86, 0x13, 0x61, 0x83, 0x58, 0x6c, 0x2a, 0x38, 0x68, 0x8c, 0x1b, 0xe4, 0xa0, 0xfd, 0x6e, 0x90, 0x0d, 0x73, 0x3f, 0xb8, 0x7c, 0x10, 0x2d, 0x4d, 0x05, 0xb3, 0x41, 0x1b, 0x76, 0x03, 0x87, 0x53, 0x6c, 0x83, 0x05, 0x0d, 0x53, 0x1b, 0xb4, 0xe0, 0x0f, 0x32, 0x6b, 0x98, 0xfb, 0xc1, 0xe5, 0x83, 0x08, 0x62, 0x2a, 0x38, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x83, 0x05, 0x0d, 0x53, 0x1b, 0xb4, 0xe0, 0x0f, 0x32, 0x6b, 0x98, 0xfb, 0xc1, 0xe5, 0x83, 0x58, 0x58, 0x2a, 0x38, 0x9c, 0x62, 0x87, 0x53, 0xac, 0x83, 0x90, 0x52, 0x3e, 0x68, 0x5d, 0x21, 0x64, 0xc3, 0x89, 0xb0, 0xc1, 0xdb, 0x75, 0xe8, 0x0f, 0xda, 0x54, 0x09, 0x39, 0x9c, 0xc7, 0x07, 0xad, 0x3b, 0x83, 0x6c, 0x38, 0x11, 0x36, 0x78, 0x19, 0x0e, 0xfd, 0x41, 0x63, 0xdc, 0x20, 0x07, 0xed, 0x77, 0x83, 0x6c, 0x98, 0xfb, 0xc1, 0xe5, 0x83, 0xa7, 0xde, 0xd0, 0x1f, 0x4e, 0xb1, 0x36, 0x58, 0xd0, 0x30, 0xb5, 0x41, 0x0b, 0xfe, 0x20, 0xb3, 0x86, 0xb9, 0x1f, 0x5c, 0x3e, 0x78, 0x75, 0x0d, 0xfd, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0x21, 0xa5, 0x7c, 0xd0, 0x7c, 0x50, 0xc8, 0xc1, 0x81, 0xe3, 0xe7, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x62, 0x78, 0xb0, 0x9a, 0x01, 0xe8, 0xf8, 0x76, 0x3c, 0x1e, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x0e, 0x82, 0x0d, 0x1a, 0xc3, 0x0a, 0xd9, 0x90, 0xfb, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xdc, 0x60, 0xfd, 0xe3, 0xcb, 0x06, 0x09, 0x92, 0xd0, 0x1b, 0x94, 0x40, 0x91, 0x1b, 0xac, 0x49, 0x4b, 0xd8, 0xe0, 0x1c, 0xb9, 0x7b, 0xf0, 0x62, 0x15, 0xfa, 0xe3, 0xdb, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0x38, 0x08, 0x36, 0x68, 0xc9, 0x2d, 0x64, 0x43, 0xee, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x83, 0x05, 0x68, 0x0c, 0x1b, 0x9c, 0x23, 0x77, 0x37, 0x48, 0xf0, 0x78, 0xde, 0x60, 0xfd, 0xe3, 0xcb, 0x06, 0x69, 0x2f, 0xd5, 0x83, 0x60, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xf4, 0x6b, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x83, 0x64, 0x03, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0x8a, 0xe9, 0x1a, 0xbc, 0x72, 0x87, 0xfe, 0xe0, 0x18, 0xb7, 0xb5, 0xc1, 0x82, 0x86, 0xa9, 0x35, 0xcc, 0xfd, 0xe0, 0xe1, 0xc1, 0xab, 0x6b, 0xe8, 0x0f, 0x9a, 0x59, 0x0c, 0x39, 0x08, 0x29, 0xe5, 0x83, 0xe6, 0x83, 0x42, 0x0e, 0x0e, 0x1c, 0x3f, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x10, 0xc3, 0x83, 0xd5, 0x0c, 0x40, 0xc7, 0xb7, 0xe3, 0xf1, 0x41, 0xf3, 0x93, 0x21, 0xc7, 0xa1, 0xe3, 0xf1, 0x41, 0x6b, 0x9b, 0x21, 0x07, 0x63, 0x19, 0xea, 0x78, 0x7c, 0xd0, 0xca, 0xb5, 0xc8, 0x41, 0xdb, 0x63, 0x24, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0xd5, 0x57, 0x65, 0x0d, 0x5a, 0x44, 0x56, 0x59, 0x83, 0x26, 0x99, 0x55, 0x86, 0x5f, 0x10, 0x6c, 0xb0, 0xd0, 0xc4, 0x68, 0x71, 0x10, 0x6c, 0xd0, 0xb6, 0xc0, 0xca, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x0c, 0x82, 0x0d, 0x9a, 0x68, 0x58, 0x19, 0x04, 0x8b, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0xe3, 0x0e, 0x6a, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x82, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0xc3, 0x22, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x3c, 0x59, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0xc3, 0xc4, 0x6d, 0xd0, 0x30, 0xcb, 0xca, 0x86, 0x3a, 0xb2, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x6f, 0x10, 0xae, 0x08, 0x1b, 0x8a, 0xe9, 0x6a, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0x70, 0x45, 0xd8, 0x30, 0x43, 0x1b, 0xbc, 0x31, 0x88, 0x7e, 0xc3, 0x89, 0xb0, 0xc1, 0x1b, 0x83, 0xe8, 0x0f, 0x1a, 0xdf, 0x59, 0x39, 0x9c, 0xc7, 0x07, 0xcd, 0x5e, 0x42, 0x1c, 0x84, 0x92, 0xe5, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x83, 0x38, 0xa4, 0x2b, 0xd8, 0x70, 0x22, 0x6c, 0x10, 0x4d, 0x77, 0x05, 0x07, 0xad, 0xba, 0x42, 0x1c, 0x84, 0x94, 0xf2, 0x41, 0x2b, 0x52, 0x2b, 0x1b, 0x4e, 0x84, 0x0d, 0xa2, 0x67, 0xae, 0xe0, 0xa0, 0x49, 0xae, 0x95, 0x83, 0x56, 0xbc, 0x56, 0x0e, 0x5a, 0x7e, 0x5b, 0x39, 0x0e, 0x1d, 0x87, 0x0e, 0xa7, 0xd8, 0x41, 0x6b, 0x73, 0x2b, 0x07, 0x6d, 0xdb, 0xad, 0x2c, 0xec, 0x06, 0xc1, 0xc7, 0xbc, 0x21, 0x31, 0x35, 0xec, 0x06, 0x8d, 0x16, 0xae, 0x6c, 0xd0, 0x2c, 0xe3, 0xca, 0x20, 0x5b, 0x83, 0xb6, 0x40, 0x56, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0xd0, 0xc8, 0xf5, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe6, 0xb7, 0x57, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0xdc, 0x30, 0x71, 0x1b, 0x34, 0x12, 0xbe, 0xb2, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x83, 0xbb, 0x1b, 0xea, 0xc8, 0x06, 0xf1, 0x71, 0x57, 0x70, 0xd0, 0x10, 0x2c, 0xc4, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x0f, 0xce, 0x6e, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x86, 0xe9, 0xdc, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xc1, 0xde, 0x76, 0x10, 0x1f, 0x77, 0x05, 0x87, 0xf3, 0xf8, 0xa0, 0x75, 0x67, 0x90, 0x0d, 0x27, 0xc2, 0x06, 0x51, 0x18, 0x58, 0x70, 0xd0, 0x18, 0x37, 0xc8, 0x41, 0xfb, 0xdd, 0x20, 0x1b, 0xe6, 0x7e, 0x70, 0xf9, 0x20, 0x4e, 0x02, 0x0b, 0x0e, 0x1a, 0xd7, 0x5f, 0x39, 0x0e, 0x1d, 0x87, 0x0e, 0x31, 0x3c, 0x68, 0xcc, 0x7f, 0xe5, 0xa0, 0x65, 0x7b, 0x96, 0xe3, 0xf1, 0x41, 0xbb, 0x09, 0x2d, 0x07, 0xad, 0x36, 0xb4, 0x1c, 0x34, 0xb1, 0xd6, 0xb2, 0x41, 0x13, 0x82, 0x2d, 0x6b, 0xd0, 0x5a, 0x6c, 0xcb, 0x06, 0xcd, 0x0c, 0xb9, 0x6c, 0xd0, 0xe0, 0x93, 0xcb, 0x1a, 0xb4, 0xba, 0xe5, 0xb2, 0x41, 0x23, 0x7b, 0x2e, 0xc3, 0x2f, 0x08, 0x36, 0x68, 0xc7, 0x54, 0x65, 0x71, 0x10, 0x2c, 0x2e, 0xec, 0x06, 0xcd, 0x46, 0xba, 0x6c, 0xd0, 0x96, 0xa6, 0xcb, 0xb0, 0x1b, 0xb4, 0xf7, 0xea, 0xb2, 0x41, 0xab, 0xb2, 0x2e, 0xc3, 0x6e, 0xd0, 0x88, 0xb0, 0xcb, 0x06, 0xed, 0x19, 0xbb, 0x0c, 0xbb, 0x41, 0xf3, 0xce, 0x2e, 0x1b, 0xb4, 0x34, 0xed, 0x32, 0xec, 0x06, 0x6d, 0x6c, 0xbb, 0x6c, 0xd0, 0xdc, 0xb7, 0xcb, 0xb0, 0x1b, 0xb4, 0x62, 0xee, 0xb2, 0x41, 0x83, 0xea, 0x2e, 0xc3, 0x6e, 0xd0, 0x5c, 0xbe, 0xcb, 0x06, 0x2d, 0xf7, 0xbb, 0x0c, 0xbb, 0x41, 0x83, 0x06, 0x2f, 0x1b, 0xb4, 0xad, 0xf0, 0x32, 0xec, 0x06, 0x2d, 0x4d, 0xbc, 0x6c, 0xd0, 0xb6, 0xc2, 0xcb, 0xb0, 0x1b, 0x34, 0x91, 0xf1, 0xb2, 0x41, 0x6b, 0x1d, 0x2f, 0xc3, 0x6e, 0xd0, 0xb2, 0xca, 0xcb, 0x06, 0x8d, 0xbc, 0xbc, 0x0c, 0xbb, 0x41, 0xfb, 0x36, 0x2f, 0x1b, 0x34, 0xb5, 0xf3, 0x32, 0xec, 0x06, 0x8d, 0x09, 0xbd, 0x6c, 0x90, 0x80, 0x07, 0x32, 0xec, 0x06, 0x6d, 0x20, 0xbd, 0x6c, 0xd0, 0x1c, 0xd3, 0xcb, 0xb0, 0x1b, 0xb4, 0x66, 0xf5, 0xb2, 0x41, 0xc3, 0x5a, 0x2f, 0xc3, 0x6e, 0xd0, 0xc6, 0xd9, 0xcb, 0x06, 0xcd, 0xad, 0xbd, 0x0c, 0xbb, 0x41, 0xa3, 0x73, 0x2f, 0x1b, 0xb4, 0x7f, 0xf7, 0x32, 0xec, 0x06, 0x6d, 0xee, 0xbd, 0x6c, 0xd0, 0xfc, 0xdf, 0xcb, 0xb0, 0x1b, 0xb4, 0x67, 0xf8, 0xb2, 0x41, 0xd3, 0x8a, 0x2f, 0xc3, 0x6e, 0xd0, 0xc0, 0xe4, 0xcb, 0x06, 0x6d, 0x5d, 0xbe, 0x0c, 0xbb, 0x41, 0xa3, 0xa2, 0x2f, 0x1b, 0xb4, 0x6f, 0xfa, 0x32, 0xec, 0x06, 0x4d, 0xc5, 0xbe, 0x6c, 0xd0, 0x6a, 0xed, 0xcb, 0xb0, 0x1b, 0x34, 0x61, 0xfc, 0xb2, 0x41, 0x6b, 0xca, 0x2f, 0xc3, 0x6e, 0xd0, 0x58, 0xf5, 0xcb, 0x06, 0xed, 0x66, 0xbf, 0x0c, 0xbb, 0x41, 0x53, 0xdf, 0x2f, 0x1b, 0xb4, 0x3a, 0xfe, 0x32, 0xec, 0x06, 0x4d, 0x75, 0xc0, 0x6c, 0xd0, 0x6a, 0x08, 0xcc, 0xb0, 0x1b, 0xb4, 0x22, 0x03, 0xb3, 0x06, 0xcd, 0xbc, 0xbc, 0x0c, 0x82, 0x0d, 0x5a, 0xf8, 0x7a, 0x19, 0x04, 0x1b, 0x34, 0x9a, 0x03, 0x33, 0xc8, 0xd6, 0x90, 0xc7, 0x5e, 0x1c, 0x04, 0x1b, 0x34, 0x72, 0xbd, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xf9, 0xed, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x37, 0x4c, 0xdc, 0x06, 0x2d, 0x25, 0xc1, 0x1c, 0x44, 0x4c, 0xe6, 0xc0, 0x41, 0xfb, 0x4c, 0x30, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0xf8, 0xa0, 0xb1, 0x28, 0x98, 0x83, 0x86, 0xdb, 0x60, 0x0e, 0xda, 0x83, 0x88, 0x39, 0x28, 0x19, 0x9a, 0x8e, 0xc7, 0x07, 0xcd, 0xce, 0xc4, 0x1c, 0x34, 0x7a, 0x13, 0xb3, 0x41, 0xeb, 0x26, 0x32, 0x6b, 0xd0, 0x86, 0x8c, 0xcc, 0x0a, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xfb, 0x68, 0x32, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0xb9, 0xc9, 0x0c, 0x82, 0x0d, 0x56, 0x73, 0x1c, 0x2d, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0xd4, 0xc9, 0x0c, 0x82, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x55, 0x4f, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xfd, 0x93, 0x19, 0x76, 0x83, 0xa5, 0x82, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x1b, 0x86, 0x32, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xb0, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0x19, 0x65, 0x36, 0x58, 0xca, 0xac, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x4c, 0xca, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x61, 0xca, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x76, 0xca, 0x1c, 0xac, 0x32, 0xa5, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x1e, 0x95, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x48, 0x95, 0x39, 0xe4, 0x6b, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0x5f, 0x65, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x6a, 0x65, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0x75, 0x65, 0x0e, 0x56, 0x34, 0x1d, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0xc0, 0x32, 0x07, 0x0b, 0x4d, 0x8c, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xe6, 0xb1, 0xcc, 0xb0, 0x1b, 0x34, 0xa2, 0x2c, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xf2, 0x2c, 0x33, 0xec, 0x06, 0x4d, 0x47, 0xcb, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x5b, 0xcb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0xc1, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xed, 0x96, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x17, 0x97, 0x39, 0x58, 0x38, 0x63, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x93, 0x2e, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xe8, 0x2e, 0x73, 0xb0, 0xa2, 0xe9, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xa6, 0x97, 0x39, 0x58, 0x68, 0x62, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0xec, 0xcb, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x01, 0xcc, 0x1c, 0xac, 0x68, 0x3a, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0x0d, 0x66, 0x0e, 0x16, 0x9a, 0x18, 0x1d, 0x8f, 0x87, 0xdd, 0xa0, 0x75, 0x85, 0x99, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xf5, 0x87, 0x99, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x59, 0x31, 0x73, 0xd0, 0x8c, 0x87, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0x1e, 0x33, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xb0, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0x49, 0x66, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0x54, 0x66, 0x0e, 0xb9, 0xef, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x1d, 0x98, 0x99, 0x83, 0x71, 0xbb, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xd9, 0xcc, 0x1c, 0x62, 0x78, 0x3c, 0x5e, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x60, 0xcf, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x2d, 0xa2, 0x99, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd5, 0xa4, 0x99, 0x43, 0xee, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xf5, 0x69, 0xe6, 0x60, 0xdc, 0xee, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xdb, 0x55, 0x33, 0x87, 0xa3, 0xfd, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa3, 0x6b, 0xe6, 0x10, 0xc3, 0xe3, 0xd0, 0xb0, 0x1b, 0x34, 0x10, 0x36, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x60, 0x36, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xeb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x99, 0x6d, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x41, 0x6e, 0xe6, 0x90, 0xfb, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xc0, 0x9b, 0x39, 0x18, 0x52, 0xbf, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x88, 0xdf, 0xcc, 0x21, 0x86, 0xc7, 0xe3, 0x61, 0x37, 0x68, 0x3f, 0x70, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xdf, 0x70, 0xe6, 0x60, 0x7d, 0x83, 0xd1, 0xb0, 0x1b, 0x34, 0xac, 0x38, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xef, 0x38, 0x33, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x22, 0xe5, 0xcc, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xd1, 0x9c, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xdb, 0x9f, 0x33, 0x07, 0x2d, 0x89, 0xce, 0x0c, 0x92, 0xc1, 0xb9, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0x52, 0x67, 0x0e, 0xd6, 0x37, 0x18, 0x1d, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x94, 0x9d, 0x39, 0x1c, 0xed, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0x72, 0x67, 0x0e, 0x59, 0xbb, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xee, 0xef, 0xcc, 0xc1, 0xfa, 0x06, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xbf, 0x78, 0xe6, 0x90, 0xb5, 0x1b, 0x64, 0x1b, 0x34, 0x99, 0x3c, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x45, 0xcf, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x81, 0xeb, 0x99, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x84, 0x7b, 0x66, 0xf8, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x82, 0xf8, 0xcc, 0x41, 0xc3, 0xdb, 0x02, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x93, 0xea, 0x33, 0x07, 0xcd, 0x2b, 0x0b, 0x1c, 0x87, 0x8e, 0x6f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x6e, 0xfc, 0xcc, 0x20, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0xee, 0x67, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x39, 0xfe, 0x99, 0x61, 0x37, 0x68, 0xe2, 0x7f, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x80, 0x80, 0xe6, 0x60, 0x7d, 0x83, 0xd1, 0xb0, 0x1b, 0xb4, 0x7c, 0x40, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xcb, 0x40, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x1f, 0x41, 0x73, 0xb0, 0xf0, 0xc2, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x07, 0x83, 0xe6, 0xa0, 0x94, 0xd9, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x3c, 0x68, 0x0e, 0x31, 0x1c, 0x76, 0x83, 0x76, 0x43, 0x68, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0x51, 0x68, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x74, 0xa1, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0x34, 0x34, 0x07, 0x2d, 0x00, 0x05, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xcc, 0x43, 0x73, 0x50, 0xca, 0xec, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x1e, 0xa2, 0x39, 0x48, 0xc0, 0x16, 0x38, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x2a, 0xd1, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x3e, 0xd1, 0x1c, 0x2c, 0xbc, 0x30, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xaf, 0xa2, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x9b, 0x5b, 0x34, 0x07, 0xed, 0x77, 0xd1, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x52, 0x46, 0x73, 0x50, 0xca, 0xec, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x61, 0xa3, 0x39, 0x48, 0xc0, 0x16, 0x38, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xd3, 0x72, 0x34, 0x07, 0x23, 0xc8, 0x73, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xc6, 0xa3, 0x19, 0x64, 0x6b, 0xc8, 0x63, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0x7f, 0x34, 0x07, 0x8d, 0x06, 0xd2, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x4b, 0x88, 0x34, 0x87, 0x53, 0x6c, 0xd8, 0x0d, 0x1a, 0x5e, 0xa4, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x98, 0xa4, 0x39, 0x58, 0xdf, 0x60, 0x34, 0xec, 0x06, 0x8d, 0x5b, 0xd2, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x78, 0xd2, 0x1c, 0xac, 0x6f, 0x30, 0x1a, 0x76, 0x83, 0x06, 0x44, 0x69, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x52, 0x69, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x03, 0x4b, 0x73, 0x30, 0x82, 0x3c, 0x8f, 0xc7, 0xc3, 0x6e, 0xd0, 0x16, 0x2d, 0xcd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xec, 0x2e, 0xcd, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x0b, 0xa6, 0x39, 0x68, 0xae, 0xc2, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x3d, 0x99, 0x66, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x3e, 0xd3, 0x1c, 0xb4, 0xa3, 0xe1, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x0e, 0x36, 0xcd, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xef, 0xa6, 0x39, 0x58, 0x50, 0xbb, 0x3f, 0x48, 0x06, 0x42, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xb2, 0x39, 0xcd, 0xc1, 0x58, 0xec, 0x3c, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x71, 0xa7, 0x19, 0x04, 0x1b, 0x2c, 0x34, 0x31, 0x5a, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0xea, 0x69, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xc2, 0x4f, 0x73, 0x48, 0x1d, 0x1c, 0x92, 0x4b, 0xc7, 0xe3, 0xe3, 0xd0, 0x71, 0x68, 0xd8, 0x0d, 0x5a, 0x0e, 0xa8, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x49, 0xa8, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xcb, 0x0e, 0x35, 0x07, 0xad, 0x44, 0xd4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x85, 0x51, 0x73, 0x90, 0x80, 0x2d, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xeb, 0xa3, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xce, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x3b, 0x26, 0x35, 0x07, 0x23, 0xc8, 0xf3, 0x78, 0x7c, 0x1c, 0x1a, 0x64, 0x1b, 0xb4, 0xaf, 0x52, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xcc, 0xd4, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x8a, 0x53, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x7c, 0x6a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xfe, 0x50, 0xcd, 0xc1, 0x82, 0xda, 0xfd, 0x41, 0x32, 0x30, 0x7d, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x33, 0xd5, 0x1c, 0x52, 0x07, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc9, 0xaa, 0x9a, 0x43, 0xb2, 0xe3, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xc0, 0x55, 0x73, 0xb0, 0xbe, 0xc1, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x12, 0xab, 0x19, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x3e, 0x5a, 0xcd, 0x20, 0x19, 0xcc, 0x06, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xdb, 0x6f, 0x35, 0x87, 0x64, 0xc7, 0x41, 0x90, 0xf3, 0x0f, 0xa2, 0x85, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0xee, 0x6a, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x48, 0x5f, 0xcd, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x16, 0xac, 0x39, 0x58, 0x50, 0xbb, 0x3f, 0x48, 0x06, 0xa7, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x5c, 0xac, 0x39, 0xa4, 0x0e, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x43, 0x94, 0x35, 0x87, 0x64, 0xc7, 0x71, 0xe8, 0x78, 0x7c, 0x7c, 0x1b, 0x76, 0x83, 0x56, 0x32, 0x6b, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0x3c, 0x6b, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xee, 0x68, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x8d, 0x5a, 0x33, 0xfc, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd8, 0xb5, 0xe6, 0xa0, 0xe1, 0x6d, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xa5, 0xdb, 0x9a, 0x83, 0xe6, 0x95, 0x05, 0x8e, 0x43, 0xc7, 0xb7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xce, 0xb7, 0x66, 0x10, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x23, 0xc4, 0x35, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x4a, 0x72, 0xcd, 0xb0, 0x1b, 0x34, 0xf1, 0x3f, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xfb, 0x5c, 0x73, 0xb0, 0xbe, 0xc1, 0x68, 0xd8, 0x0d, 0x5a, 0x3e, 0xa0, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xbb, 0xae, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x0b, 0xdd, 0x35, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xb0, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0xc7, 0x6b, 0x0e, 0x8a, 0x5c, 0x85, 0x43, 0x72, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x55, 0xaf, 0x19, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x03, 0xbe, 0x66, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd5, 0xfa, 0x9a, 0x83, 0xf5, 0x0d, 0x46, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xf8, 0x7e, 0xcd, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x34, 0xc0, 0xe6, 0x60, 0x7d, 0x83, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x7e, 0x60, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0x1a, 0x6c, 0x0e, 0xda, 0x19, 0x8c, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xc0, 0xc2, 0xe6, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x8f, 0xc3, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xd2, 0x88, 0xcd, 0x41, 0xc3, 0x3e, 0x23, 0x87, 0x15, 0xda, 0xe3, 0xd0, 0xb0, 0x1b, 0xb4, 0x1b, 0x42, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xc4, 0x62, 0x73, 0xb0, 0xbe, 0xc1, 0x68, 0xd8, 0x0d, 0x1a, 0x5e, 0xa4, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x9f, 0xb1, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x9b, 0x39, 0x36, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x10, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x01, 0xd9, 0x1c, 0x24, 0x60, 0x0b, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa3, 0x46, 0x36, 0x07, 0x45, 0xae, 0xc2, 0x21, 0xb9, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x35, 0xd9, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x2e, 0x65, 0x33, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x1e, 0x96, 0xcd, 0xc1, 0xfa, 0x06, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd6, 0xcb, 0xe6, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x47, 0x66, 0x73, 0xb0, 0xbe, 0xc1, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x55, 0xb3, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x3b, 0x70, 0x36, 0x07, 0xed, 0x0c, 0xc6, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x8d, 0x67, 0x73, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xf4, 0x67, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x88, 0xa1, 0xcd, 0x41, 0x93, 0x88, 0x36, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x04, 0xa3, 0xcd, 0x41, 0xc3, 0x3e, 0x23, 0x87, 0x15, 0xda, 0xe3, 0xd0, 0xb0, 0x1b, 0x34, 0x6e, 0x49, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x50, 0x69, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x35, 0x6d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x20, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x0c, 0xb5, 0x39, 0x48, 0xc0, 0x16, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0x4f, 0x6d, 0x0e, 0x8a, 0x5c, 0x85, 0x43, 0x72, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x74, 0xb5, 0x19, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x80, 0xd6, 0x66, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc9, 0x5c, 0x9b, 0x83, 0xf5, 0x0d, 0x46, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xf2, 0xaf, 0xcd, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xb1, 0xd8, 0xe6, 0x60, 0x7d, 0x83, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xbc, 0x6c, 0x33, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x4e, 0xb4, 0xcd, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xcb, 0xd6, 0x36, 0x07, 0x0b, 0x4d, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x81, 0x6e, 0x9b, 0x83, 0x86, 0x7d, 0x46, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0xc6, 0x6d, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0xd0, 0x6d, 0x0e, 0xd6, 0x74, 0x4b, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0xba, 0xdb, 0x1c, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x31, 0x7a, 0x9b, 0x83, 0x26, 0x11, 0x6d, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x55, 0x7d, 0x9b, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x05, 0x70, 0x73, 0xd0, 0xce, 0x60, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0x08, 0x37, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x7b, 0x0f, 0x37, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x10, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x59, 0xdc, 0x1c, 0x2c, 0x34, 0x31, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0x39, 0x6e, 0x0e, 0x1a, 0xf6, 0x19, 0x39, 0xac, 0xd0, 0x1e, 0x87, 0x86, 0xdd, 0xa0, 0x01, 0x51, 0x9a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc9, 0x92, 0x9b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x38, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0xb1, 0xdc, 0x1c, 0x8c, 0x20, 0xcf, 0xe3, 0xf1, 0xb0, 0x1b, 0xb4, 0x45, 0x4b, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x47, 0x73, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0x74, 0x6e, 0x0e, 0x9a, 0xab, 0x70, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x15, 0xba, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x63, 0x48, 0x37, 0x07, 0xed, 0x68, 0xb8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x10, 0x75, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0xad, 0x6e, 0x0e, 0x16, 0xd4, 0xee, 0x0f, 0x92, 0x81, 0xd0, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xf9, 0x75, 0x73, 0x30, 0x16, 0x3b, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xce, 0x6e, 0x06, 0xc1, 0x06, 0x0b, 0x4d, 0x8c, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x01, 0xb7, 0x9b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x38, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0xd3, 0xdd, 0x1c, 0x52, 0x07, 0x87, 0xe4, 0xd2, 0xf1, 0xf8, 0x38, 0x74, 0x1c, 0x1a, 0x76, 0x83, 0x96, 0x03, 0x6a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0xfc, 0x6e, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x08, 0xe1, 0xcd, 0x41, 0x2b, 0x11, 0x35, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x32, 0xde, 0x1c, 0x24, 0x60, 0x0b, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x9e, 0xbc, 0x19, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xa8, 0xe6, 0xcd, 0xc1, 0x08, 0xf2, 0x3c, 0x1e, 0x1f, 0x87, 0x06, 0xd9, 0x06, 0xed, 0xab, 0xd4, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x3b, 0xa3, 0x37, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xa3, 0xde, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x3d, 0xd7, 0x9b, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x42, 0x7b, 0x73, 0xb0, 0xa0, 0x76, 0x7f, 0x90, 0x0c, 0x4c, 0xdf, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x0b, 0xbd, 0x37, 0x87, 0xd4, 0xc1, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xb7, 0xf8, 0xe6, 0x90, 0xec, 0x38, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x30, 0xdf, 0x1c, 0xac, 0x6f, 0x30, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0xa4, 0x6f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x92, 0x7d, 0x33, 0x48, 0x06, 0xb3, 0x41, 0xb4, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x00, 0xf8, 0xcd, 0x21, 0xd9, 0x71, 0x10, 0xe4, 0xfc, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd1, 0xf3, 0x9b, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xd4, 0x7e, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe6, 0xe5, 0x6f, 0x0e, 0x16, 0xd4, 0xee, 0x0f, 0x92, 0xc1, 0xa9, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0xf7, 0x6f, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x1a, 0x01, 0xce, 0x21, 0xd9, 0x71, 0x1c, 0x3a, 0x1e, 0x1f, 0xdf, 0x86, 0xdd, 0xa0, 0xa9, 0x04, 0x9c, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xfd, 0x06, 0x9c, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x38, 0x81, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x62, 0xe0, 0x0c, 0xbf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xf4, 0xc0, 0x39, 0x68, 0x78, 0x5b, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe3, 0x04, 0xe7, 0xa0, 0x79, 0x65, 0x81, 0xe3, 0xd0, 0xf1, 0x6d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x72, 0xc1, 0x19, 0x04, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xfc, 0x0c, 0xce, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x8f, 0x83, 0x33, 0xec, 0x06, 0x4d, 0xfc, 0xcf, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0xfe, 0xe0, 0x1c, 0xac, 0x6f, 0x30, 0x1a, 0x76, 0x83, 0x96, 0x0f, 0x68, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x8e, 0x70, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe6, 0x98, 0x70, 0x0e, 0x16, 0x5e, 0x18, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x4a, 0xe1, 0x1c, 0x14, 0xb9, 0x0a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x34, 0x16, 0xce, 0x86, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xab, 0x5e, 0x38, 0x07, 0xa5, 0xcc, 0xce, 0xb0, 0x1b, 0xb4, 0x1b, 0x42, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x63, 0x86, 0x33, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xf0, 0x1a, 0xce, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x53, 0x71, 0x38, 0x07, 0xed, 0xce, 0xe1, 0x2c, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x08, 0x1e, 0xce, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xbb, 0x7d, 0x38, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x0c, 0xe2, 0x1c, 0x94, 0x32, 0x3b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x56, 0x22, 0xce, 0xc1, 0x72, 0x26, 0xa1, 0xc3, 0xfa, 0xe6, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0x23, 0x71, 0x0e, 0xd6, 0x37, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xeb, 0x97, 0x38, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x75, 0xe2, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x81, 0x51, 0x9c, 0x83, 0x16, 0x80, 0x02, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x5c, 0xc5, 0x39, 0x28, 0x72, 0x15, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xca, 0xe2, 0x1c, 0x24, 0x60, 0x0b, 0x1c, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x72, 0x71, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0x7c, 0x71, 0x0e, 0x16, 0x5e, 0x18, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x12, 0xe3, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x31, 0x65, 0x9c, 0x83, 0xf6, 0xbb, 0x68, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x97, 0xc6, 0x39, 0x28, 0x72, 0x15, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x67, 0xe3, 0x1c, 0x24, 0x60, 0x0b, 0x1c, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x51, 0x70, 0x9c, 0x0d, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0xcc, 0x71, 0x0e, 0x4a, 0x99, 0x9d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x8a, 0x1d, 0x67, 0x90, 0xad, 0x21, 0x8f, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0xca, 0xe3, 0x1c, 0x34, 0x1a, 0x48, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0xe4, 0xe3, 0x1c, 0x4e, 0xb1, 0x61, 0x37, 0x68, 0x78, 0x91, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x0c, 0x20, 0xe7, 0x60, 0x7d, 0x83, 0xd1, 0xb0, 0x1b, 0x34, 0x6e, 0x49, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x81, 0x90, 0x73, 0xb0, 0xbe, 0xc1, 0x68, 0xd8, 0x0d, 0x1a, 0x10, 0xa5, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x7e, 0xc8, 0x19, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xa6, 0x45, 0xce, 0xc1, 0x08, 0xf2, 0x3c, 0x1e, 0x0f, 0xbb, 0x41, 0x5b, 0xb4, 0x34, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xab, 0x1e, 0x39, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x8b, 0x24, 0xe7, 0xa0, 0xb9, 0x0a, 0x97, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x71, 0x96, 0x9c, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x29, 0x93, 0x73, 0xd0, 0x8e, 0x86, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0x3b, 0x39, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x1c, 0x28, 0xe7, 0x60, 0x41, 0xed, 0xfe, 0x20, 0x19, 0x08, 0xdd, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xc3, 0x49, 0x39, 0x07, 0x63, 0xb1, 0xf3, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x26, 0x2a, 0x67, 0x10, 0x6c, 0xb0, 0xd0, 0xc4, 0x68, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xc1, 0xca, 0x19, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xc6, 0x57, 0xce, 0x21, 0x75, 0x70, 0x48, 0x2e, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0x61, 0x37, 0x68, 0x39, 0xa0, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x15, 0x2d, 0x67, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xb9, 0xe5, 0x1c, 0xb4, 0x12, 0x51, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xba, 0x5d, 0xce, 0x41, 0x02, 0xb6, 0xc0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xf9, 0xbe, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x38, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x13, 0xe6, 0x1c, 0x8c, 0x20, 0xcf, 0xe3, 0xf1, 0x71, 0x68, 0x90, 0x6d, 0xd0, 0xbe, 0x4a, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xd6, 0x98, 0x33, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xc0, 0x64, 0xce, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xc5, 0xcc, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x53, 0x9e, 0x39, 0x07, 0x0b, 0x6a, 0xf7, 0x07, 0xc9, 0xc0, 0xf4, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x73, 0x9a, 0x73, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0x5f, 0x73, 0x0e, 0xc9, 0x8e, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x96, 0x6d, 0xce, 0xc1, 0xfa, 0x06, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x93, 0x37, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xce, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x53, 0xc3, 0x39, 0x83, 0x64, 0x30, 0x1b, 0x44, 0x0b, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x28, 0xe7, 0x1c, 0x92, 0x1d, 0x07, 0x41, 0xce, 0x3f, 0x88, 0x16, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x8e, 0xce, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x73, 0xd7, 0x39, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa3, 0x3b, 0xe7, 0x60, 0x41, 0xed, 0xfe, 0x20, 0x19, 0x9c, 0x1a, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xbc, 0x3c, 0xe7, 0x90, 0x3a, 0x38, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xba, 0xe7, 0x1c, 0x92, 0x1d, 0xc7, 0xa1, 0xe3, 0xf1, 0xf1, 0x6d, 0xd8, 0x0d, 0x5a, 0xab, 0x74, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xbb, 0xcf, 0x19, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xe2, 0x9f, 0x73, 0x68, 0x96, 0x74, 0x3c, 0x1e, 0x76, 0x83, 0x56, 0x04, 0x74, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0x0e, 0x74, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x36, 0x83, 0xce, 0x41, 0x3b, 0x0f, 0x3a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x59, 0xe8, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x6e, 0xe8, 0x1c, 0x04, 0x26, 0xf6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x6c, 0x88, 0xce, 0xc1, 0xea, 0x46, 0xaa, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xfd, 0x44, 0xe7, 0xd0, 0xb8, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xae, 0x8b, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc5, 0x1a, 0x9d, 0x43, 0xb3, 0xa4, 0xe3, 0xf1, 0x71, 0x68, 0xd8, 0x0d, 0x5a, 0xd0, 0xd1, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xf8, 0xd1, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb3, 0x44, 0x3a, 0x07, 0x6d, 0x20, 0x99, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xd4, 0xa4, 0x73, 0x68, 0x5c, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x82, 0x4a, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xb8, 0x96, 0xce, 0xa1, 0x59, 0xd2, 0xf1, 0xf8, 0x38, 0x34, 0xec, 0x06, 0x8d, 0x7d, 0xe9, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x91, 0xe9, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x41, 0xfd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xb3, 0xa6, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe6, 0xe1, 0x74, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xa8, 0x9d, 0xce, 0x41, 0x4b, 0xa2, 0x33, 0x83, 0x64, 0x20, 0x7d, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xea, 0x9f, 0xce, 0x41, 0x60, 0x62, 0x1f, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x44, 0xd4, 0x39, 0x58, 0xc6, 0x89, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xf6, 0x51, 0xe7, 0xd0, 0xb8, 0xe8, 0x38, 0x34, 0x88, 0x16, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x89, 0x4b, 0x9d, 0x43, 0xb3, 0xa4, 0xe3, 0xf1, 0xb0, 0x1b, 0x34, 0xb1, 0xa9, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x01, 0xaa, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0x4b, 0x75, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xda, 0xaa, 0xce, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x88, 0xd5, 0x39, 0x68, 0x49, 0x74, 0x66, 0x90, 0x0c, 0xa4, 0xef, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xd0, 0xd5, 0x39, 0x08, 0x4c, 0xec, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xbe, 0xb0, 0xce, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x45, 0xd6, 0x39, 0x68, 0x64, 0x59, 0x67, 0x90, 0x0c, 0x6e, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x23, 0xad, 0x73, 0x68, 0x5c, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0xd9, 0x3a, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x7a, 0xeb, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x21, 0x72, 0x9d, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x9e, 0xae, 0x73, 0xd0, 0x14, 0xbb, 0xce, 0x20, 0x19, 0x9c, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x71, 0x5e, 0xe7, 0x38, 0x74, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x82, 0x5f, 0xe7, 0x10, 0xc3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb3, 0x02, 0x3b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xb0, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0x13, 0x76, 0x0e, 0x8d, 0x8e, 0x8e, 0xe7, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x3d, 0x88, 0x9d, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x60, 0xb1, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0x37, 0x76, 0x0e, 0x9a, 0x62, 0xd7, 0x19, 0x24, 0x03, 0x5f, 0xdd, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x4b, 0xb2, 0x73, 0x88, 0xff, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa8, 0x65, 0xe7, 0x38, 0x74, 0x1c, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x86, 0x63, 0x76, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc1, 0x9b, 0x9d, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xd2, 0xb3, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x24, 0xb4, 0x73, 0xb0, 0x8c, 0x13, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x43, 0xda, 0x19, 0x04, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x8c, 0xd3, 0xce, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x34, 0xb5, 0x33, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x2c, 0xd6, 0xce, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x43, 0x5e, 0x3b, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xfb, 0x63, 0x3b, 0x87, 0x86, 0x5f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xfb, 0x69, 0x3b, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xc3, 0x6f, 0x3b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0x74, 0x3b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x1b, 0x7a, 0x3b, 0x87, 0xa3, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xff, 0x6f, 0xe7, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xb6, 0x70, 0xe7, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x6d, 0x71, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbe, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x43, 0x92, 0x3b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xfe, 0x72, 0xe7, 0x20, 0x79, 0xb0, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x0f, 0x74, 0xe7, 0xd0, 0xf0, 0xeb, 0x38, 0x74, 0x3c, 0x3e, 0xbe, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xdb, 0xa7, 0x3b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x30, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0x5d, 0x77, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x12, 0xed, 0xce, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xcf, 0xdd, 0x39, 0x68, 0x8a, 0x5d, 0x67, 0x90, 0x0c, 0xa4, 0xef, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x17, 0xde, 0x39, 0xc4, 0xff, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xb8, 0xbc, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0xcf, 0x8f, 0x6f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb3, 0xd2, 0x3b, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x7d, 0xec, 0x9d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xbd, 0x7b, 0x67, 0xd8, 0x0d, 0xd6, 0x07, 0x89, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x91, 0xef, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x41, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xb2, 0xbe, 0xb3, 0xc1, 0x52, 0x66, 0xad, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x2d, 0x7e, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd1, 0x7e, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x79, 0x7f, 0xe7, 0x60, 0x95, 0x29, 0xd5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x84, 0x00, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xd6, 0x01, 0xcf, 0x61, 0xed, 0xf7, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xbb, 0x81, 0xe7, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x74, 0x82, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x1d, 0x83, 0xe7, 0x60, 0x45, 0xd3, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xf2, 0xc1, 0x73, 0xb0, 0xd0, 0xc4, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x97, 0xf0, 0x0c, 0xbb, 0x41, 0x6b, 0x28, 0x3c, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x6b, 0x2d, 0x3c, 0xc3, 0x6e, 0xd0, 0x06, 0x0c, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x46, 0x0d, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0x3b, 0x3c, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x3b, 0x41, 0x3c, 0x07, 0x0b, 0x67, 0x8c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0x8f, 0x78, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0x99, 0x78, 0x0e, 0x56, 0x34, 0x1d, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x0b, 0x53, 0x3c, 0x07, 0x0b, 0x4d, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xa5, 0x2c, 0x9e, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x49, 0x2f, 0x9e, 0x83, 0x15, 0x4d, 0x47, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x34, 0x19, 0xcf, 0xc1, 0x42, 0x13, 0xa3, 0xe3, 0xf1, 0xb0, 0x1b, 0x34, 0x92, 0xc6, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xe2, 0xc6, 0x33, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xec, 0x1c, 0xcf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xca, 0xe3, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x03, 0x7f, 0x3c, 0x07, 0x4d, 0xb1, 0xeb, 0x0c, 0x92, 0xc1, 0xb9, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x0f, 0x79, 0x0e, 0x56, 0x7a, 0x0c, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x87, 0xe4, 0x39, 0x1c, 0xed, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0x2f, 0x79, 0x0e, 0xf1, 0x3f, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x77, 0xf2, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x8c, 0xf2, 0x1c, 0x8e, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x1f, 0x95, 0xe7, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd6, 0x95, 0x67, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0xd0, 0xf2, 0x1c, 0xb4, 0xf2, 0x8b, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x34, 0x2f, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa3, 0xc3, 0x3c, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0xc8, 0x3c, 0x07, 0x2b, 0x9a, 0x8e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x9e, 0x79, 0x0e, 0x16, 0x5e, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x73, 0xd5, 0x3c, 0x87, 0x18, 0x1e, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x72, 0xf3, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x09, 0x71, 0x9e, 0x83, 0xe6, 0xc8, 0x79, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x5d, 0xe7, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x87, 0xe7, 0x39, 0x28, 0xec, 0x70, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0xee, 0x79, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0xf8, 0x79, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0x04, 0x7a, 0x0e, 0xa9, 0x83, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x00, 0xa1, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa9, 0xa1, 0xe7, 0x70, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0x13, 0x3d, 0x87, 0x18, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xce, 0xe8, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xf7, 0xe8, 0x39, 0x28, 0xec, 0x70, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0x4a, 0x7a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x54, 0x7a, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x60, 0x7a, 0x0e, 0xa9, 0x83, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xbd, 0xa6, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x66, 0xa7, 0xe7, 0x70, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x13, 0x41, 0x3d, 0x87, 0xa3, 0xfd, 0x38, 0x74, 0x1c, 0x1a, 0x76, 0x83, 0xf6, 0x8a, 0x7a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x93, 0x7a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0x9d, 0x7a, 0x0e, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x4b, 0xd5, 0x73, 0x88, 0xe1, 0xb0, 0x1b, 0xb4, 0x80, 0xd5, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xd0, 0xd5, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xf6, 0x58, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x46, 0x5a, 0xcf, 0x21, 0xf7, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xf0, 0xd6, 0x73, 0x30, 0xa4, 0x7e, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x95, 0xba, 0x9e, 0x43, 0x0c, 0x8f, 0xc7, 0xc3, 0x6e, 0xd0, 0x40, 0x5e, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x80, 0x5f, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xce, 0x60, 0xcf, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x12, 0x7b, 0x0e, 0x47, 0xfb, 0x20, 0xdb, 0xa0, 0x45, 0xc6, 0x9e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x8d, 0xb2, 0x67, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xfd, 0xcc, 0x9e, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xfa, 0xd9, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0x4a, 0x7b, 0x0e, 0x9a, 0x62, 0xd7, 0x19, 0x24, 0x83, 0x73, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xb8, 0xf6, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0xcd, 0xf6, 0x1c, 0x2c, 0xbc, 0x30, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xcd, 0xed, 0x39, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xfb, 0xed, 0x39, 0xc4, 0xf0, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x06, 0x72, 0xcf, 0xe1, 0x68, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xed, 0xdc, 0x73, 0x88, 0xff, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa4, 0xba, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x4b, 0xbb, 0xe7, 0x70, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0xe0, 0x3d, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0xe5, 0x3d, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xad, 0xf7, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x81, 0xf8, 0x9e, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x6a, 0xdf, 0x73, 0xd0, 0x14, 0xbb, 0xce, 0x20, 0x19, 0x9c, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xef, 0xbf, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x98, 0xc0, 0xe7, 0x60, 0xe1, 0x8c, 0xd1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xc4, 0x82, 0xcf, 0xc1, 0x42, 0x13, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x2a, 0xc2, 0xe7, 0x60, 0xa1, 0x89, 0xd1, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x35, 0x0d, 0x9f, 0xc3, 0xd1, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x24, 0xc4, 0xe7, 0x10, 0xff, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xdc, 0x89, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x2a, 0x8b, 0xcf, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0x64, 0x7c, 0x0e, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x84, 0xe3, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x7b, 0x7c, 0x0e, 0x9a, 0x95, 0x45, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x32, 0xf2, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x5c, 0xf2, 0x39, 0xf4, 0x27, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x8c, 0xf2, 0x39, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xba, 0xf2, 0x39, 0xa4, 0x0e, 0x8e, 0x43, 0xc3, 0x6e, 0xd0, 0xf6, 0x8a, 0xc0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xce, 0x97, 0xcf, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xcb, 0x64, 0x3e, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x4d, 0xcd, 0x67, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0xc0, 0xf9, 0x1c, 0x34, 0xc5, 0xae, 0x33, 0x48, 0x06, 0xe7, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xc6, 0xf3, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xf0, 0xf3, 0x39, 0x58, 0x78, 0x61, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x44, 0xe8, 0x73, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xa0, 0xe8, 0x73, 0x88, 0xe1, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x55, 0x49, 0x9f, 0xc3, 0xd1, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x2c, 0xd3, 0xe7, 0x10, 0xff, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xec, 0xa7, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x3e, 0xa9, 0xcf, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x55, 0x7d, 0x0e, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x0b, 0xeb, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0x6c, 0x7d, 0x0e, 0x5a, 0xf9, 0x45, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd9, 0xd7, 0x67, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x25, 0x62, 0x9f, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x9e, 0xec, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0x9f, 0x7d, 0x0e, 0x9a, 0x62, 0xd7, 0x19, 0x24, 0x83, 0x73, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x61, 0xfb, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x76, 0xfb, 0x1c, 0x2c, 0x9c, 0x31, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x1e, 0xf7, 0x39, 0x58, 0x68, 0x62, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xa8, 0xfb, 0x1c, 0x2c, 0x34, 0x31, 0x3a, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x33, 0xef, 0x73, 0x38, 0xda, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0xe7, 0xfb, 0x1c, 0xe2, 0x7f, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x01, 0xf8, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x2b, 0xf8, 0x39, 0x1c, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xcc, 0xc2, 0xcf, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x3a, 0xc4, 0xcf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x80, 0xc5, 0xcf, 0xa1, 0x3f, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xfa, 0xc6, 0xcf, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x66, 0xc8, 0xcf, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x09, 0xe5, 0x67, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0xb7, 0xfc, 0x1c, 0xb4, 0xf2, 0x8b, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x96, 0xcd, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0xcc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x7a, 0x7e, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xb6, 0xd0, 0xcf, 0x20, 0x19, 0x38, 0xfe, 0x06, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0x49, 0x3f, 0x87, 0xf8, 0x1f, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x4a, 0xfd, 0x1c, 0xac, 0x16, 0x36, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x9c, 0xf5, 0x73, 0x68, 0x25, 0x7e, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0xc0, 0x7e, 0x0e, 0x4d, 0x87, 0x06, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x03, 0x67, 0x3f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x96, 0xed, 0xe7, 0xa0, 0xfd, 0x65, 0x94, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0xea, 0x7e, 0x0e, 0xa9, 0x83, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x1b, 0x7c, 0x3f, 0x87, 0x56, 0xe2, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xed, 0xc1, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x98, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x2a, 0xfe, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x15, 0xc8, 0x9f, 0x41, 0x32, 0x70, 0xfc, 0x0d, 0xa2, 0x85, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x2e, 0x7f, 0x0e, 0xf1, 0x3f, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xff, 0xfc, 0x39, 0x58, 0x2d, 0x6c, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe1, 0xf4, 0xe7, 0xd0, 0x9f, 0xfc, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0xb5, 0xfe, 0x1c, 0x1a, 0x1d, 0x0d, 0xa2, 0x85, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0x68, 0x7f, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x7e, 0xee, 0xcf, 0x41, 0xfb, 0xcb, 0x28, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x0a, 0xff, 0x1c, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0x92, 0x7f, 0x0e, 0xfd, 0xc9, 0x8f, 0x43, 0xc7, 0xe3, 0xe3, 0xd0, 0x71, 0x68, 0xd8, 0x0d, 0x9a, 0x76, 0xfe, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x9b, 0xfe, 0x19, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x20, 0xfb, 0x67, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x7a, 0xff, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x21, 0xf2, 0x9f, 0x83, 0xa6, 0xd8, 0x75, 0x06, 0xc9, 0xe0, 0xdc, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x03, 0xed, 0x3f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x43, 0xf2, 0x3f, 0x07, 0x0b, 0x2f, 0x8c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xf1, 0x7f, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0xfc, 0x7f, 0x36, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x20, 0x00, 0x3a, 0x34, 0x3a, 0x3a, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xcc, 0x00, 0x74, 0x38, 0xda, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x4e, 0x00, 0x1d, 0xe2, 0x7f, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xce, 0x00, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xf8, 0x00, 0x3a, 0x1c, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x30, 0x09, 0xd0, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x9c, 0x0a, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xe2, 0x0b, 0xd0, 0x41, 0x61, 0x87, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x5a, 0x03, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xad, 0x03, 0x74, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x4d, 0x20, 0xa0, 0x43, 0xa3, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd0, 0x08, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x78, 0x09, 0xe8, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x2f, 0x0a, 0xe8, 0x90, 0x3a, 0x18, 0x76, 0x83, 0xf6, 0xa9, 0x80, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0xb3, 0x80, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x06, 0x03, 0x3a, 0x34, 0x3a, 0x3a, 0x1e, 0x0f, 0xbb, 0x41, 0xcb, 0x64, 0x40, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xcb, 0x69, 0x40, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd0, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xc2, 0x01, 0x1d, 0x1a, 0x1d, 0x1d, 0x8f, 0x87, 0xdd, 0xa0, 0x4d, 0x3a, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xcd, 0x3c, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0x00, 0x81, 0x0e, 0x8d, 0x8e, 0x8e, 0xc7, 0xc3, 0x6e, 0xd0, 0x1a, 0x21, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x5a, 0x22, 0xd0, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x78, 0x04, 0x1a, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x0e, 0x82, 0x0d, 0x9a, 0x9b, 0x04, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x10, 0x26, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x1b, 0xb4, 0xc8, 0x09, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x72, 0x15, 0xe8, 0xa0, 0xfd, 0x56, 0xa0, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0xcd, 0x02, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x7b, 0xb8, 0x40, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xc0, 0x17, 0xe8, 0xa0, 0x31, 0x60, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0x8e, 0x81, 0x0e, 0x16, 0x23, 0x1b, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x74, 0x06, 0x3a, 0x34, 0x1d, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0xd4, 0x40, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x70, 0x7f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xdd, 0x06, 0x3a, 0x08, 0x29, 0xf0, 0x41, 0xb4, 0xa0, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x15, 0x07, 0x3a, 0x28, 0x65, 0x76, 0x06, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x9b, 0xe9, 0x40, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe9, 0x1d, 0xe8, 0xa0, 0xdd, 0x78, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0xf1, 0x81, 0x0e, 0xa9, 0x9a, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x7b, 0xff, 0x40, 0x07, 0x21, 0x00, 0x7e, 0x1c, 0x3a, 0x9e, 0x0f, 0xbb, 0x41, 0x1b, 0x04, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x1b, 0x09, 0x41, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd8, 0x21, 0x68, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x51, 0x04, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x0d, 0x8d, 0xa0, 0x83, 0xa6, 0xd8, 0x75, 0x06, 0xc9, 0x40, 0xfa, 0x6e, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x91, 0x91, 0xa0, 0x83, 0xf1, 0xa6, 0x73, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x60, 0x09, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xc3, 0x31, 0x41, 0x07, 0xcd, 0xd0, 0x04, 0x0d, 0x92, 0xc1, 0xad, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x76, 0x82, 0x0e, 0x4d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x48, 0x28, 0x68, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd9, 0xa3, 0xa0, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xd5, 0x14, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xa6, 0x82, 0x0e, 0x5a, 0xab, 0x0a, 0x1a, 0x24, 0x83, 0x73, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x72, 0x05, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x94, 0x05, 0x1d, 0x62, 0x38, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x79, 0x2d, 0xe8, 0x90, 0xec, 0x38, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0xc8, 0x05, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x41, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x8e, 0x17, 0x74, 0x50, 0xca, 0xec, 0x1c, 0xcf, 0x0f, 0xa7, 0xd8, 0x20, 0xdb, 0xa0, 0xed, 0xbe, 0xa0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x73, 0x30, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x1a, 0x31, 0xe8, 0x70, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa3, 0x8e, 0x41, 0x87, 0x18, 0x1e, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x69, 0xca, 0xa0, 0x41, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x69, 0x06, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x83, 0x9f, 0x41, 0xc3, 0x6e, 0xb0, 0x54, 0x30, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xbd, 0x34, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xd6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x2c, 0x6b, 0xd0, 0x06, 0x4b, 0x99, 0xb5, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x7d, 0xd9, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x0d, 0xdc, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xad, 0xde, 0xa0, 0x83, 0x55, 0xa6, 0x54, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa3, 0xc3, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xeb, 0xc8, 0x41, 0x87, 0x7c, 0xed, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xd8, 0x73, 0xd0, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x4a, 0x75, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x9c, 0x76, 0xd0, 0xc1, 0x8a, 0xa6, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x16, 0x3c, 0xe8, 0x60, 0xa1, 0x89, 0xd1, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x3b, 0x0f, 0x1a, 0x76, 0x83, 0x46, 0x94, 0x65, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0xdb, 0x83, 0x86, 0xdd, 0xa0, 0xe9, 0x68, 0x99, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x39, 0xfa, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x58, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x43, 0xfb, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x8b, 0x00, 0x42, 0x07, 0x0b, 0x67, 0x8c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x0d, 0x84, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0x18, 0x84, 0x0e, 0x56, 0x34, 0x1d, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x63, 0x12, 0x42, 0x07, 0x0b, 0x4d, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x51, 0x0c, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xf9, 0x0e, 0xa1, 0x83, 0x15, 0x4d, 0x47, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x0c, 0x89, 0xd0, 0xc1, 0x42, 0x13, 0xa3, 0xe3, 0xf1, 0xb0, 0x1b, 0xb4, 0xae, 0x30, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xc7, 0x22, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xd2, 0x8c, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x09, 0x1d, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xad, 0x1f, 0xa1, 0x43, 0xee, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xaa, 0x48, 0xe8, 0x60, 0xdc, 0xee, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x73, 0x4b, 0x42, 0x87, 0x18, 0x1e, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd9, 0x28, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x81, 0x2b, 0xa1, 0x43, 0xee, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x9f, 0x4b, 0xe8, 0x60, 0xdc, 0xee, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0x63, 0x42, 0x87, 0xa3, 0xfd, 0x78, 0x3c, 0xec, 0x06, 0x0d, 0x84, 0xcd, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xac, 0x09, 0x0d, 0x92, 0x21, 0x83, 0x68, 0xc1, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x8e, 0x13, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xb8, 0x13, 0x3a, 0xe4, 0xbe, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0xfa, 0x84, 0x0e, 0x86, 0xd4, 0xef, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x33, 0x28, 0x74, 0x88, 0xe1, 0xf1, 0x78, 0xd8, 0x0d, 0xda, 0x0f, 0x9c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x57, 0x14, 0x3a, 0x64, 0xed, 0x86, 0xdd, 0xa0, 0x61, 0xc5, 0x99, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x25, 0x49, 0xa1, 0x83, 0xf5, 0x0d, 0x46, 0x83, 0x6c, 0x83, 0x26, 0x93, 0x67, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x01, 0x4d, 0xa1, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xf9, 0x29, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x92, 0x0a, 0x0d, 0xbf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x54, 0x15, 0x3a, 0x68, 0x78, 0x5b, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x64, 0x56, 0xe8, 0xa0, 0x79, 0x65, 0x81, 0xe3, 0xd0, 0xf1, 0x6d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xd2, 0x15, 0x1a, 0x04, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xfe, 0xaf, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x50, 0x2c, 0x34, 0xec, 0x06, 0x4d, 0xfc, 0xcf, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x2e, 0x0b, 0x1d, 0xac, 0x6f, 0x30, 0x1a, 0x76, 0x83, 0x96, 0x0f, 0x68, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0xa6, 0x85, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0xb0, 0x85, 0x0e, 0x16, 0xce, 0x18, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x7a, 0x0b, 0x1d, 0x2c, 0x34, 0x31, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe6, 0xc9, 0x85, 0x0e, 0x16, 0x9a, 0x18, 0x0d, 0xbb, 0x41, 0xbb, 0x21, 0x34, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb3, 0xec, 0x42, 0x07, 0xeb, 0x1b, 0x8c, 0x86, 0xdd, 0xa0, 0xe1, 0x45, 0x9a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x31, 0x7a, 0xa1, 0x43, 0xb2, 0x63, 0xd8, 0x0d, 0x1a, 0xb7, 0xa4, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xdd, 0x17, 0x3a, 0x24, 0x3b, 0x86, 0xdd, 0xa0, 0x01, 0x51, 0x9a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x89, 0x81, 0xa1, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x8b, 0x30, 0x74, 0xd0, 0xc6, 0xc2, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x63, 0x12, 0x43, 0x07, 0x09, 0xd8, 0x02, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0x32, 0x86, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x04, 0x32, 0x74, 0x30, 0x82, 0x3c, 0x8f, 0xc7, 0xc7, 0xa1, 0x61, 0x37, 0x68, 0x8b, 0x96, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x1b, 0x65, 0x68, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0xba, 0x0c, 0x1d, 0x34, 0x57, 0xe1, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x71, 0x33, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0x79, 0x86, 0x0e, 0xda, 0xd1, 0x70, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xac, 0x68, 0x68, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x2c, 0x0d, 0x1d, 0x2c, 0xa8, 0xdd, 0x1f, 0x24, 0x03, 0xa1, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x7e, 0x6a, 0xe8, 0x60, 0x2c, 0x76, 0x1e, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x6d, 0x0d, 0x0d, 0x82, 0x0d, 0x16, 0x9a, 0x18, 0x2d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x63, 0x62, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x70, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x4a, 0x1b, 0x3a, 0xa4, 0x0e, 0x0e, 0xc9, 0xa5, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x34, 0xec, 0x06, 0x2d, 0x07, 0xd4, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xcb, 0x0d, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x41, 0xbc, 0xa1, 0x83, 0x56, 0x22, 0x6a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x08, 0x1c, 0x3a, 0x48, 0xc0, 0x16, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x82, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe7, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x81, 0xc7, 0xa1, 0x83, 0x11, 0xe4, 0x79, 0x3c, 0x3e, 0x0e, 0x0d, 0xb2, 0x0d, 0xda, 0x57, 0xa9, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0x2f, 0x87, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xe9, 0x1c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xdb, 0xa2, 0x43, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x10, 0x75, 0xe8, 0x60, 0x41, 0xed, 0xfe, 0x20, 0x19, 0x98, 0xbe, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0x62, 0x87, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x86, 0xee, 0xd0, 0x21, 0xd9, 0x71, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x04, 0x1e, 0x3a, 0x58, 0xdf, 0x60, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x1b, 0x0f, 0x0d, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xb0, 0x79, 0x68, 0x90, 0x0c, 0x66, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x31, 0xea, 0xa1, 0x43, 0xb2, 0xe3, 0x20, 0xc8, 0xf9, 0x07, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x03, 0xdc, 0x43, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x35, 0x7c, 0x68, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x9d, 0x0f, 0x1d, 0x2c, 0xa8, 0xdd, 0x1f, 0x24, 0x83, 0x53, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xc0, 0x0f, 0x1d, 0x52, 0x07, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x65, 0xfc, 0xa1, 0x43, 0xb2, 0xe3, 0x38, 0x74, 0x3c, 0x3e, 0xbe, 0x0d, 0xbb, 0x41, 0x2b, 0x99, 0x35, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x9b, 0x01, 0x44, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe5, 0x80, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x62, 0x20, 0x1a, 0x7e, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x23, 0x41, 0x74, 0xd0, 0xf0, 0xb6, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xae, 0x06, 0xd1, 0x41, 0xf3, 0xca, 0x02, 0xc7, 0xa1, 0xe3, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x1e, 0x42, 0x34, 0x08, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc9, 0x13, 0xa2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x93, 0x85, 0x68, 0xd8, 0x0d, 0x9a, 0xf8, 0x9f, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x99, 0x21, 0x3a, 0x58, 0xdf, 0x60, 0x34, 0xec, 0x06, 0x2d, 0x1f, 0xd0, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xeb, 0x10, 0x0d, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x06, 0x44, 0x34, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x7e, 0x11, 0xd1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xd0, 0x12, 0xd1, 0xc1, 0xc2, 0x19, 0xa3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc5, 0x28, 0xa2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x69, 0x2b, 0xa2, 0x83, 0x15, 0x4d, 0x47, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x44, 0x17, 0xd1, 0xc1, 0x42, 0x13, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x6a, 0x8c, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x14, 0x8d, 0xe8, 0x60, 0x45, 0xd3, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xee, 0x46, 0x74, 0xb0, 0xd0, 0xc4, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xa9, 0x23, 0x3a, 0x24, 0x66, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0xf6, 0x88, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0x00, 0x89, 0x0e, 0x16, 0x5e, 0x18, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x1a, 0x12, 0x1d, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x31, 0x12, 0x1d, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x48, 0x12, 0x1d, 0x92, 0x1d, 0xc3, 0x6e, 0xd0, 0x6e, 0x08, 0xcd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x5a, 0x26, 0xd1, 0x21, 0xd9, 0x31, 0xec, 0x06, 0x0d, 0x2f, 0xd2, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x83, 0x12, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x39, 0x53, 0xa2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x88, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0x5a, 0x89, 0x0e, 0x12, 0xb0, 0x05, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc1, 0x59, 0xa2, 0x83, 0x22, 0x57, 0xe1, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x74, 0x89, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xf8, 0x2f, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xc4, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xbb, 0xc6, 0x44, 0x07, 0x4d, 0x22, 0xda, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x03, 0xcd, 0x44, 0x07, 0x0d, 0xfb, 0x8c, 0x1c, 0x56, 0x68, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x01, 0x6a, 0xa2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x98, 0x4d, 0x74, 0xd0, 0xfa, 0x36, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x13, 0xe3, 0x44, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x17, 0x9d, 0xe8, 0xa0, 0xe1, 0xfd, 0x96, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0xe2, 0x89, 0x0e, 0xa9, 0x83, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x1b, 0xf8, 0x44, 0xc7, 0xa1, 0xe3, 0xd0, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0xfe, 0x89, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x36, 0x41, 0xd1, 0x41, 0xc3, 0xfb, 0x2d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x36, 0x14, 0x1d, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0x28, 0x8a, 0x0e, 0x9a, 0xb5, 0x28, 0x3a, 0x0e, 0x2d, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x73, 0xa3, 0x68, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x85, 0x14, 0x1d, 0x34, 0xbc, 0xdf, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x80, 0x4a, 0xd1, 0x41, 0x83, 0x2c, 0x45, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0x61, 0x8a, 0x8e, 0x43, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0x37, 0x45, 0x87, 0x18, 0x1e, 0x87, 0x86, 0xdd, 0xa0, 0x71, 0x4b, 0x9a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe1, 0x9f, 0xa2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x56, 0x54, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x0e, 0x53, 0xd1, 0x41, 0x02, 0xb6, 0xc0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x27, 0x55, 0x74, 0x50, 0xe4, 0x2a, 0x1c, 0x92, 0x4b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x52, 0x56, 0xd1, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xbb, 0x5e, 0x45, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x91, 0x15, 0x1d, 0xac, 0x6f, 0x30, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xd5, 0x8a, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x43, 0x70, 0x45, 0x07, 0xeb, 0x1b, 0x8c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x41, 0xbb, 0xa2, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe6, 0xf7, 0x8a, 0x86, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x0c, 0x2c, 0x3a, 0x58, 0x68, 0x62, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x1e, 0x16, 0x1d, 0x34, 0xec, 0x33, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xe1, 0x58, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x33, 0x59, 0x74, 0xb0, 0xa6, 0x5b, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x2e, 0xb3, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x7c, 0x16, 0x1d, 0x34, 0x89, 0x68, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x95, 0x16, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x89, 0xd5, 0xa2, 0x83, 0x76, 0x06, 0x63, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x9d, 0x2d, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xd1, 0x2d, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x22, 0xb8, 0xe8, 0x60, 0xa1, 0x89, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x75, 0x5c, 0x74, 0xd0, 0xb0, 0xcf, 0xc8, 0x61, 0x85, 0xf6, 0x38, 0x34, 0xec, 0x06, 0x0d, 0x88, 0xd2, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x41, 0x17, 0x0d, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe4, 0xba, 0xe8, 0x60, 0x04, 0x79, 0x1e, 0x8f, 0x87, 0xdd, 0xa0, 0x2d, 0x5a, 0x9a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x99, 0xef, 0xa2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x4e, 0x5e, 0x74, 0xd0, 0x5c, 0x85, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x5a, 0x7b, 0xd1, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x98, 0x2f, 0x3a, 0x68, 0x47, 0xc3, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xdd, 0xfd, 0xa2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x16, 0x60, 0x74, 0xb0, 0xa0, 0x76, 0x7f, 0x90, 0x0c, 0x84, 0x6e, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x25, 0x05, 0xa3, 0x83, 0xb1, 0xd8, 0x79, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x1b, 0x61, 0x34, 0x08, 0x36, 0x58, 0x68, 0x62, 0xb4, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x62, 0x18, 0x0d, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xf4, 0xc3, 0xe8, 0x90, 0x3a, 0x38, 0x24, 0x97, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0xb0, 0x1b, 0xb4, 0x1c, 0x50, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x93, 0x62, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x5d, 0x8c, 0x0e, 0x5a, 0x89, 0xa8, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xee, 0xc6, 0xe8, 0x20, 0x01, 0x5b, 0x60, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x9e, 0x8f, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x9c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x8a, 0x8c, 0x0e, 0x46, 0x90, 0xe7, 0xf1, 0xf8, 0x38, 0x34, 0xc8, 0x36, 0x68, 0x5f, 0xa5, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x6f, 0x32, 0x1a, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x71, 0xca, 0x68, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x64, 0x19, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x6d, 0x2f, 0xa3, 0x83, 0x05, 0xb5, 0xfb, 0x83, 0x64, 0x60, 0xfa, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x3e, 0x33, 0x3a, 0xa4, 0x0e, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x73, 0x70, 0x46, 0x87, 0x64, 0xc7, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xdc, 0xce, 0xe8, 0x60, 0x7d, 0x83, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xd2, 0x67, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe7, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xed, 0x41, 0xa3, 0x41, 0x32, 0x98, 0x0d, 0xa2, 0x85, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0x15, 0x8d, 0x0e, 0xc9, 0x8e, 0x83, 0x20, 0xe7, 0x1f, 0x44, 0x0b, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x49, 0x1a, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x01, 0x4c, 0xa3, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xda, 0x69, 0x74, 0xb0, 0xa0, 0x76, 0x7f, 0x90, 0x0c, 0x4e, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x67, 0x6a, 0x74, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0x5e, 0x8d, 0x0e, 0xc9, 0x8e, 0xe3, 0xd0, 0xf1, 0xf8, 0xf8, 0x36, 0xec, 0x06, 0x4d, 0x25, 0xe0, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xdf, 0x1a, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc1, 0x5e, 0xa3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x54, 0xd8, 0x68, 0xf8, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x22, 0xb2, 0xd1, 0x41, 0xc3, 0xdb, 0x02, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x13, 0xd1, 0x46, 0x07, 0xcd, 0x2b, 0x0b, 0x1c, 0x87, 0x8e, 0x6f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x0e, 0xb6, 0xd1, 0x20, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0xbb, 0x8d, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x79, 0x71, 0xa3, 0x61, 0x37, 0x68, 0xe2, 0x7f, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x2f, 0xdd, 0xe8, 0x60, 0x7d, 0x83, 0xd1, 0xb0, 0x1b, 0xb4, 0x7c, 0x40, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x12, 0x6f, 0x74, 0xb0, 0xd0, 0xc4, 0x68, 0xd8, 0x0d, 0xda, 0x0d, 0xa1, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xc6, 0x37, 0x1a, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xcc, 0xdf, 0x68, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xf9, 0x81, 0xa3, 0x83, 0x11, 0xe4, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x28, 0x1c, 0x6d, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xfe, 0x70, 0x74, 0x50, 0xca, 0xec, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x57, 0x1c, 0x1d, 0xac, 0x6f, 0x30, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0x38, 0x8e, 0x0e, 0xc9, 0x8e, 0x61, 0x37, 0x68, 0x78, 0x91, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x6d, 0xe4, 0xe8, 0x90, 0xec, 0x18, 0x76, 0x83, 0xc6, 0x2d, 0x69, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0x55, 0x8e, 0x0e, 0xc9, 0x8e, 0x61, 0x37, 0x68, 0x40, 0x94, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x43, 0xe6, 0x68, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0xdf, 0x1c, 0x1d, 0xb4, 0xb1, 0x30, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x16, 0xd0, 0xd1, 0x41, 0x02, 0xb6, 0xc0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb1, 0xa3, 0xa3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x38, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x39, 0x1d, 0x1d, 0x8c, 0x20, 0xcf, 0xe3, 0xf1, 0x71, 0x68, 0xd8, 0x0d, 0xda, 0xa2, 0xa5, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xb6, 0x3a, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x83, 0x5c, 0x47, 0x07, 0xcd, 0x55, 0xb8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x94, 0x1d, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x5d, 0xb5, 0xa3, 0x83, 0x76, 0x34, 0x5c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x9a, 0x3b, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x0b, 0x79, 0x47, 0x07, 0x0b, 0x6a, 0xf7, 0x07, 0xc9, 0x40, 0xe8, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x0f, 0x3c, 0x3a, 0x18, 0x8b, 0x9d, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x5b, 0x89, 0x47, 0x83, 0x60, 0x83, 0x85, 0x26, 0x46, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x16, 0xe4, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x9c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0x2e, 0x8f, 0x0e, 0xa9, 0x83, 0x43, 0x72, 0xe9, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0x0d, 0xbb, 0x41, 0xcb, 0x01, 0x35, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xd3, 0xa0, 0x47, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xcf, 0xf4, 0xe8, 0xa0, 0x95, 0x88, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0x5e, 0x8f, 0x0e, 0x12, 0xb0, 0x05, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xd8, 0x1e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x9f, 0xf7, 0xe8, 0x60, 0x04, 0x79, 0x1e, 0x8f, 0x8f, 0x43, 0x83, 0x6c, 0x83, 0xf6, 0x55, 0x6a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc9, 0xe2, 0xa3, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0x96, 0x8f, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x34, 0xf4, 0xd1, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xb3, 0x3e, 0x3a, 0x58, 0x50, 0xbb, 0x3f, 0x48, 0x06, 0xa6, 0x6f, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb1, 0xef, 0xa3, 0x43, 0xea, 0xe0, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x81, 0x7e, 0x74, 0x48, 0x76, 0x1c, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xdd, 0x8f, 0x0e, 0xd6, 0x37, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xc3, 0xf4, 0x47, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x70, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xdb, 0x3f, 0x1a, 0x24, 0x83, 0xd9, 0x20, 0x5a, 0xd8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x4b, 0x00, 0xe9, 0x90, 0xec, 0x38, 0x08, 0x72, 0xfe, 0x41, 0xb4, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x7c, 0x02, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x7c, 0x40, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x43, 0x15, 0x48, 0x07, 0x0b, 0x6a, 0xf7, 0x07, 0xc9, 0xe0, 0xd4, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x0b, 0x1e, 0x48, 0x87, 0xd4, 0xc1, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd7, 0x04, 0xe9, 0x90, 0xec, 0x38, 0x0e, 0x1d, 0x8f, 0x8f, 0x6f, 0xc3, 0x6e, 0xd0, 0x5a, 0xa5, 0xcb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xe2, 0x0b, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x29, 0x1b, 0xa4, 0x43, 0xb3, 0xa4, 0xe3, 0xf1, 0xb0, 0x1b, 0xb4, 0x22, 0xa0, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xe3, 0x83, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xeb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa0, 0x08, 0xe9, 0xd0, 0x2c, 0xe9, 0x78, 0x3c, 0xec, 0x06, 0x2d, 0xe8, 0xe8, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x33, 0x21, 0x0d, 0x92, 0x21, 0x83, 0x68, 0xc1, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x9d, 0x42, 0x3a, 0x34, 0x4b, 0x3a, 0x1e, 0x0f, 0xbb, 0x41, 0x63, 0x5f, 0x3a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x9b, 0x5b, 0x48, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x50, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x89, 0x21, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x15, 0x34, 0xa4, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xdd, 0x86, 0x74, 0xd0, 0x92, 0xe8, 0xcc, 0x20, 0x19, 0x48, 0xdf, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x6e, 0x87, 0x74, 0x10, 0x98, 0xd8, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0xff, 0x90, 0x0e, 0x96, 0x71, 0x22, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x37, 0x44, 0x3a, 0x34, 0x2e, 0x3a, 0x0e, 0x0d, 0xa2, 0x05, 0xeb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xc9, 0x11, 0xe9, 0xd0, 0x2c, 0xe9, 0x78, 0x3c, 0xec, 0x06, 0x4d, 0x6c, 0xea, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x58, 0x22, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xed, 0x4d, 0xa4, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x18, 0x8a, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x4e, 0x91, 0x0e, 0x5a, 0x12, 0x9d, 0x19, 0x24, 0x03, 0xe9, 0xbb, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0x60, 0x91, 0x0e, 0x02, 0x13, 0xfb, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x91, 0x8b, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x7d, 0x91, 0x0e, 0x1a, 0x59, 0xd6, 0x19, 0x24, 0x83, 0x5b, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x1e, 0x23, 0x1d, 0x1a, 0x17, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xa4, 0x33, 0xd2, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x03, 0xd4, 0x48, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x35, 0x1b, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x7d, 0x23, 0x1d, 0x34, 0xc5, 0xae, 0x33, 0x48, 0x06, 0xe7, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x40, 0x47, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x85, 0x47, 0x3a, 0xc4, 0x70, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xd0, 0x3d, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x09, 0x7f, 0xa4, 0x43, 0xa3, 0xa3, 0xe3, 0xf9, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa1, 0x20, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x2a, 0x24, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x1d, 0x88, 0xa4, 0x83, 0xa6, 0xd8, 0x75, 0x06, 0xc9, 0xc0, 0x59, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x4a, 0x46, 0xd2, 0x21, 0xfe, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd9, 0x90, 0xa4, 0xe3, 0xd0, 0x71, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x1a, 0x8e, 0xd9, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x54, 0x92, 0x0e, 0x59, 0xbb, 0xe3, 0xdb, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x7c, 0x98, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x31, 0x93, 0x74, 0x48, 0x2e, 0xad, 0x41, 0x23, 0x02, 0x29, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x84, 0x4e, 0xd2, 0xc1, 0xb8, 0x83, 0x5a, 0x83, 0xe6, 0x8b, 0x55, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xa9, 0xa0, 0xa4, 0x83, 0x92, 0xa1, 0x69, 0x0d, 0x16, 0xfb, 0xfb, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x93, 0x48, 0x49, 0x07, 0x6b, 0xf9, 0x04, 0x3a, 0x1e, 0x1f, 0x34, 0xc8, 0x94, 0x74, 0xd0, 0xbe, 0xd5, 0xd2, 0x41, 0xa3, 0x6a, 0x4b, 0x1b, 0xbc, 0x6c, 0x03, 0x63, 0x83, 0x00, 0xb8, 0x5f, 0x0d, 0x16, 0x43, 0xea, 0xaf, 0xc1, 0xfa, 0x69, 0xfd, 0x0d, 0x16, 0xce, 0xeb, 0x2f, 0xfc, 0x82, 0x60, 0x83, 0x91, 0xff, 0x30, 0x08, 0x36, 0x58, 0x68, 0x62, 0xb4, 0x78, 0xf0, 0xd8, 0x0d, 0xfa, 0xe3, 0xf1, 0x41, 0xbb, 0xcf, 0x4b, 0x07, 0x4d, 0x00, 0x31, 0x6d, 0xd0, 0xb0, 0x2c, 0xd3, 0x06, 0xed, 0xd4, 0x32, 0x6d, 0xd0, 0x00, 0x2f, 0xd3, 0x1a, 0xb4, 0xda, 0xcb, 0xb4, 0x41, 0x23, 0xc0, 0x4c, 0x1b, 0x34, 0x44, 0xd0, 0xb4, 0x41, 0x1b, 0x06, 0x4d, 0x2b, 0x08, 0x16, 0xd7, 0xd0, 0xaf, 0x76, 0x43, 0x37, 0xd9, 0x35, 0x58, 0xf2, 0x71, 0xb4, 0xc1, 0x9a, 0x8e, 0xa3, 0x0d, 0x9e, 0x3f, 0x44, 0x7f, 0xb0, 0x6a, 0x95, 0xe4, 0x60, 0xdc, 0x9a, 0x1d, 0x84, 0xa7, 0xea, 0x41, 0x5b, 0x2d, 0x4d, 0x07, 0xed, 0xe1, 0x34, 0x1d, 0xb4, 0xda, 0xcb, 0xb4, 0x20, 0xd8, 0xa0, 0xcd, 0xa6, 0xa6, 0x41, 0xb0, 0xc1, 0x42, 0x13, 0xa3, 0xc5, 0x0d, 0x5a, 0x90, 0x6f, 0x5a, 0x83, 0xc6, 0x19, 0x9e, 0x06, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x89, 0xa9, 0xe1, 0x17, 0x04, 0x8b, 0x83, 0x60, 0x61, 0x17, 0x04, 0x1b, 0x34, 0x15, 0x02, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x0b, 0x82, 0x0d, 0x9a, 0x40, 0x81, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xdc, 0x20, 0x96, 0x08, 0x09, 0x0e, 0xd3, 0x79, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x0e, 0x9a, 0x7c, 0x81, 0x3a, 0x68, 0x77, 0x2a, 0xea, 0xf8, 0x76, 0xd0, 0x84, 0x56, 0xd4, 0x06, 0x2d, 0x6e, 0x45, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x3f, 0x46, 0x0d, 0x82, 0x0d, 0xda, 0x92, 0x8c, 0x5a, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0x2d, 0xa3, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe9, 0xcd, 0xa8, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0xd8, 0xa0, 0xf5, 0xcf, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x4d, 0xa0, 0x40, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0x61, 0xe2, 0x36, 0x68, 0x21, 0x35, 0x6a, 0x83, 0x05, 0x0d, 0x53, 0x1b, 0xb4, 0xdb, 0x1a, 0xb5, 0x06, 0xcd, 0xc1, 0x46, 0x6d, 0xd0, 0xee, 0x4b, 0xf9, 0x06, 0x6d, 0xcc, 0x94, 0xcf, 0x06, 0x8d, 0xd7, 0x94, 0x6f, 0xd0, 0x22, 0x4e, 0xf9, 0x06, 0xad, 0xef, 0x94, 0xcf, 0x06, 0xcd, 0xfa, 0x94, 0xaf, 0x41, 0x6b, 0x41, 0xe5, 0xb3, 0x41, 0x33, 0x44, 0xe5, 0xab, 0xa1, 0x98, 0xae, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x0d, 0x33, 0xb4, 0x86, 0x19, 0x5a, 0x43, 0x31, 0xdd, 0x60, 0xa5, 0xa0, 0xfe, 0xc1, 0x6b, 0x84, 0xe8, 0x37, 0x9c, 0x08, 0x1b, 0x44, 0x87, 0x94, 0xc2, 0x06, 0x8b, 0xd9, 0xa0, 0xd6, 0xa0, 0xc1, 0xdd, 0xa8, 0x0d, 0x1a, 0x25, 0x8e, 0xda, 0xa0, 0x81, 0xe7, 0xa8, 0x35, 0x68, 0xf7, 0x41, 0x6a, 0x83, 0x66, 0x63, 0xa4, 0x16, 0xf8, 0x3a, 0x7a, 0x83, 0xb2, 0x4b, 0x76, 0xe0, 0xeb, 0xe8, 0x0d, 0x8a, 0x41, 0xd9, 0x0d, 0xda, 0x88, 0x92, 0xda, 0xf0, 0x89, 0xcd, 0x06, 0xcd, 0x4a, 0x4b, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0x56, 0xd2, 0xa5, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x0d, 0xda, 0x7c, 0x97, 0xda, 0xa0, 0x11, 0xbe, 0xa9, 0x0d, 0x9a, 0x2a, 0xb3, 0xda, 0xa0, 0x7d, 0x44, 0xab, 0x0d, 0x5a, 0xcc, 0x1f, 0xdb, 0xa0, 0xcd, 0xfd, 0xb1, 0x0d, 0xda, 0x45, 0x35, 0xdb, 0xa0, 0xe9, 0x6a, 0xb3, 0x0d, 0xda, 0xe8, 0x58, 0x5b, 0x83, 0xb6, 0x56, 0xd6, 0x56, 0xe0, 0xc3, 0xe4, 0x0d, 0xcf, 0x93, 0x6c, 0xd0, 0xd4, 0xd5, 0xda, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xf2, 0xd0, 0x82, 0x0d, 0xca, 0x2e, 0xd9, 0x81, 0x0f, 0x93, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x2b, 0xa3, 0x70, 0x90, 0x46, 0x60, 0xb4, 0x1a, 0x34, 0x22, 0x90, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x86, 0x46, 0xe1, 0xa0, 0xbd, 0x46, 0xa9, 0x35, 0x68, 0xbe, 0x58, 0x65, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x6c, 0x8d, 0xc2, 0x41, 0x33, 0x9d, 0x52, 0x6b, 0xb0, 0xd8, 0xdf, 0x67, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xcd, 0x8d, 0xc2, 0x41, 0x63, 0xa0, 0x52, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0x17, 0x2d, 0xd8, 0xa0, 0x2c, 0xc3, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0xf0, 0xd6, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xf7, 0xad, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x35, 0xf7, 0xc7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x45, 0xb8, 0x76, 0xb0, 0x6c, 0xc6, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x4f, 0x5c, 0xdb, 0xf0, 0xe7, 0xd2, 0x06, 0xeb, 0x6b, 0xa6, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x0d, 0x72, 0xed, 0x60, 0x01, 0xcd, 0x74, 0xb3, 0xcc, 0x1a, 0x34, 0x5f, 0xac, 0xb2, 0xe1, 0x79, 0x92, 0x0d, 0x9a, 0xb2, 0x5c, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x46, 0x5a, 0xb0, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x8f, 0xa5, 0x05, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0x59, 0xd7, 0x0e, 0x96, 0xcd, 0x38, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x34, 0x2d, 0xd8, 0xa0, 0x20, 0x98, 0xdd, 0x60, 0x75, 0xcd, 0xf4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xca, 0x4f, 0x0b, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0x5d, 0x33, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x28, 0xb5, 0x60, 0x83, 0x86, 0x77, 0x2c, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x24, 0xaa, 0x16, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x89, 0xab, 0x05, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x22, 0x6b, 0xc1, 0x41, 0xbb, 0x55, 0x11, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x6e, 0x2d, 0xd8, 0xe0, 0xe8, 0x3a, 0xb8, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0xec, 0x5a, 0x70, 0xd0, 0x6e, 0x8c, 0x42, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x02, 0xb6, 0xe0, 0xa0, 0xa0, 0xc8, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x37, 0xb1, 0x05, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x8d, 0x6c, 0xc1, 0xc1, 0x02, 0x2a, 0xef, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd4, 0xcd, 0x16, 0x1c, 0x2c, 0xb1, 0xdf, 0xae, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x44, 0xd3, 0x16, 0x6c, 0x10, 0xa4, 0xa7, 0x1b, 0x34, 0xe3, 0xbd, 0xb6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x21, 0xbe, 0x76, 0xb0, 0x8a, 0xd1, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x8b, 0x6d, 0xc1, 0x06, 0x41, 0x7a, 0xba, 0x41, 0xb3, 0xe8, 0x6b, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xeb, 0xec, 0x6b, 0x07, 0xeb, 0xf7, 0x99, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x24, 0xde, 0x16, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x3a, 0x6e, 0xc1, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x9e, 0x5b, 0x70, 0xd0, 0x8a, 0x64, 0xc5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x5a, 0x76, 0x0b, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x16, 0xde, 0x82, 0x83, 0x05, 0x54, 0xde, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0xeb, 0x2d, 0x38, 0x58, 0x62, 0xbf, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x52, 0x7d, 0x0b, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xd4, 0xdf, 0x82, 0x83, 0x05, 0x54, 0xde, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x38, 0x07, 0x2e, 0x38, 0x58, 0x62, 0xbf, 0x5d, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x46, 0xb0, 0x1d, 0xac, 0x43, 0x68, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0x2a, 0x5c, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf4, 0x0e, 0x17, 0x1c, 0x34, 0x73, 0x30, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xca, 0xe2, 0x82, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb8, 0x37, 0x2e, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xee, 0x8f, 0x0b, 0x0e, 0x4f, 0xdc, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x24, 0xb9, 0xe0, 0x20, 0xc5, 0xc9, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x59, 0xca, 0x05, 0x07, 0x45, 0x4e, 0x6b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x7a, 0xb9, 0x60, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xd5, 0x35, 0xd3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x66, 0x9a, 0x0b, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x19, 0xe7, 0x82, 0xc3, 0x13, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf8, 0x7a, 0x2e, 0x38, 0x48, 0x71, 0x72, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x25, 0x74, 0xc1, 0x41, 0x01, 0x9b, 0x5f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x78, 0x90, 0x2e, 0x38, 0x28, 0x28, 0x32, 0x5b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x22, 0x62, 0x3b, 0x58, 0x4c, 0xd1, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x75, 0xba, 0x60, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xd5, 0x35, 0xd3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x1e, 0xaa, 0x0b, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x07, 0xeb, 0x82, 0xc3, 0x13, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd8, 0xb9, 0x2e, 0x38, 0x38, 0x32, 0xab, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x0e, 0xbb, 0xe0, 0xa0, 0xa0, 0xc8, 0xac, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc1, 0x2d, 0xb6, 0x83, 0xf5, 0x22, 0xcd, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x1e, 0xb4, 0x0b, 0x0e, 0xda, 0xfa, 0xbe, 0x58, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x24, 0x63, 0x3b, 0x58, 0xef, 0xce, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x75, 0xbb, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x08, 0xe6, 0x2e, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xb6, 0xbb, 0x0b, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x68, 0x8c, 0x56, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xf5, 0xde, 0x05, 0x07, 0x8d, 0xa3, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x1a, 0xbc, 0xe0, 0xa0, 0xad, 0xef, 0x8b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x2c, 0x5e, 0x70, 0x50, 0xc0, 0xe6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x84, 0xbc, 0xe0, 0x60, 0x79, 0x06, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x88, 0x2b, 0x2f, 0x38, 0x68, 0xeb, 0xfb, 0x62, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xab, 0x79, 0xc1, 0xc1, 0xf2, 0x0c, 0xe4, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x61, 0x44, 0xb6, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x3b, 0x8e, 0x6c, 0x07, 0x6b, 0x5e, 0x9a, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xf1, 0x49, 0xb6, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x0e, 0x7a, 0xc1, 0x06, 0xa5, 0xbd, 0xe5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xa6, 0xd2, 0x0b, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xbb, 0x1b, 0x55, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x9e, 0xd4, 0x0b, 0x36, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x04, 0xae, 0x17, 0x1c, 0x94, 0x88, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x6a, 0x2f, 0x38, 0x58, 0x36, 0xe3, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x68, 0xf7, 0x82, 0x0d, 0x5f, 0xe1, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb8, 0x7f, 0x2f, 0xd8, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x0d, 0xcb, 0x76, 0xb0, 0x6c, 0xc6, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x3c, 0x7c, 0xc1, 0x06, 0x41, 0x7a, 0xba, 0xc1, 0xba, 0x0b, 0xe4, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x69, 0x5d, 0xb6, 0x83, 0xf5, 0x22, 0xcd, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x9e, 0xe4, 0x0b, 0x0e, 0xda, 0xfa, 0xbe, 0x58, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x1e, 0x66, 0x3b, 0x58, 0xef, 0xce, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x7d, 0xbe, 0x60, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x68, 0xa7, 0x2f, 0x38, 0x68, 0x52, 0xf3, 0x62, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x2f, 0xf6, 0x05, 0x07, 0x8d, 0x3f, 0xb3, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xec, 0xbe, 0xe0, 0xa0, 0xa0, 0xc8, 0x6c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xfd, 0x9a, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x58, 0x37, 0xdb, 0xc1, 0x9a, 0x97, 0xe6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x61, 0x9c, 0xed, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0x8e, 0x5f, 0xb0, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xfd, 0xfc, 0x82, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x62, 0xbf, 0xe0, 0xa0, 0xe1, 0xcb, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xb4, 0xf3, 0x17, 0x1c, 0x34, 0xfe, 0xcc, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x2d, 0xff, 0x82, 0x83, 0xd6, 0x45, 0xab, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x3a, 0x82, 0xc1, 0x06, 0xe7, 0xc2, 0x85, 0x35, 0xe4, 0xb1, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd4, 0x28, 0x18, 0x1c, 0x34, 0xd2, 0xcf, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x6e, 0xc1, 0xe0, 0x20, 0x3c, 0x55, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe4, 0xfe, 0x17, 0x6c, 0x70, 0xce, 0x5f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x2e, 0x80, 0xc1, 0x41, 0x93, 0x9a, 0x17, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd8, 0x0f, 0x30, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x2a, 0x06, 0x0c, 0x0e, 0x8a, 0x2c, 0xd3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xb4, 0x13, 0x18, 0x1c, 0x34, 0xfe, 0xcc, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x2d, 0x03, 0x83, 0x83, 0xd6, 0x45, 0xab, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0x7b, 0x60, 0x70, 0xd0, 0x1a, 0x65, 0xd5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xfc, 0x46, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb5, 0x90, 0xb6, 0x83, 0xf5, 0xfb, 0xcc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xc4, 0x49, 0xdb, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x9f, 0xc1, 0xe0, 0xa0, 0xad, 0xef, 0x8b, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x01, 0x98, 0xb6, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x7b, 0x35, 0x6d, 0x07, 0xab, 0x91, 0xb8, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x91, 0x9d, 0xb6, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xa6, 0x83, 0xc1, 0x41, 0x5b, 0xdf, 0x17, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x13, 0x44, 0x6d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x93, 0xda, 0x0e, 0x96, 0x86, 0x71, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0x4f, 0x6d, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x1b, 0x08, 0x83, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0x8c, 0x30, 0x38, 0x68, 0x8d, 0xb2, 0xaa, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x81, 0xae, 0xb6, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x7b, 0x62, 0x6d, 0x07, 0x4b, 0xe3, 0xb8, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x11, 0xb4, 0xb6, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xd4, 0x84, 0xc1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x46, 0x61, 0x70, 0xd0, 0xcc, 0xc1, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x7e, 0x2c, 0x0c, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xac, 0x0b, 0x83, 0x83, 0x12, 0xa9, 0x7a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x31, 0x19, 0x06, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x2c, 0x02, 0x19, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x92, 0x86, 0xc1, 0x41, 0xd9, 0xf4, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x18, 0x0e, 0x83, 0x83, 0xd6, 0x45, 0xab, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x6e, 0x87, 0xc1, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x4d, 0xc4, 0xb6, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0xf2, 0x41, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x91, 0xc7, 0xb6, 0x83, 0x65, 0x33, 0xce, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x4e, 0x3e, 0x0c, 0x36, 0x5c, 0x52, 0x1b, 0x1c, 0xf6, 0x3b, 0xd6, 0x60, 0xdd, 0x05, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x46, 0x10, 0x83, 0x83, 0xb6, 0xdd, 0x08, 0xaa, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb5, 0xce, 0xb6, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0xa2, 0x6d, 0x07, 0x2b, 0x17, 0xb9, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x45, 0xd4, 0xb6, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xa6, 0x88, 0xc1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0x3b, 0x62, 0x70, 0xd0, 0x16, 0x2a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x1a, 0x4b, 0x0c, 0x0e, 0x5a, 0x17, 0xad, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xbf, 0x89, 0xc1, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x94, 0xa1, 0x18, 0x1c, 0xb4, 0x46, 0x59, 0x55, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x3b, 0xc0, 0x6d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x8b, 0xdb, 0x0e, 0x56, 0xad, 0x72, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x5b, 0xcb, 0x6d, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x1c, 0x15, 0x83, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x69, 0xc5, 0x60, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x38, 0x63, 0x31, 0xd8, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0x68, 0xad, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xc0, 0x16, 0x83, 0x83, 0xb2, 0xe9, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x69, 0x2f, 0x06, 0x07, 0xcd, 0xb5, 0x55, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xa1, 0x18, 0x83, 0x83, 0xe5, 0x19, 0xc8, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x51, 0xc6, 0xe0, 0xa0, 0xad, 0xef, 0x8b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xcb, 0x33, 0x06, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xb4, 0xe4, 0x56, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x04, 0xc7, 0x60, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x08, 0xca, 0x31, 0xd8, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x6c, 0x41, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x96, 0x8e, 0xc1, 0x41, 0xd9, 0xf4, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x1d, 0x1e, 0x83, 0x83, 0xe6, 0xda, 0xaa, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x85, 0x8f, 0xc1, 0xc1, 0xf2, 0x0c, 0xe4, 0xd6, 0x60, 0xdd, 0x05, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x98, 0x1a, 0x83, 0x0d, 0x97, 0xd4, 0x06, 0x8d, 0x04, 0x4b, 0xad, 0x41, 0x03, 0x23, 0x53, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x2a, 0x6d, 0x0c, 0x0e, 0x96, 0x67, 0x20, 0x57, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x23, 0xb8, 0x1d, 0xac, 0xdf, 0x67, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0xff, 0x63, 0xb0, 0x41, 0x69, 0x6f, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x88, 0x20, 0x83, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xee, 0x46, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x06, 0x21, 0x83, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x3f, 0x43, 0x06, 0x07, 0x25, 0xe2, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x26, 0x8a, 0x0c, 0x0e, 0x96, 0xcd, 0x38, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xd1, 0xc8, 0x60, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x6a, 0x8f, 0x0c, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x97, 0xb8, 0x1d, 0x2c, 0x9b, 0x71, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0x8b, 0x64, 0xb0, 0x41, 0x90, 0x9e, 0x6e, 0xb0, 0xee, 0x02, 0x79, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xfe, 0xc5, 0xed, 0x60, 0xbd, 0x48, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x06, 0x25, 0x83, 0x83, 0xb6, 0xbe, 0x2f, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe6, 0x71, 0xdc, 0x0e, 0xd6, 0xbb, 0x33, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x5d, 0x32, 0xd8, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x8a, 0x99, 0x0c, 0x36, 0x5c, 0x52, 0x1b, 0x1c, 0xf6, 0x3b, 0xd6, 0x60, 0x75, 0xcd, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x13, 0x27, 0x83, 0x83, 0x96, 0x8d, 0xdc, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0xf8, 0x64, 0xb0, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7c, 0x42, 0x19, 0x6c, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xb3, 0x51, 0x06, 0x07, 0x6d, 0x7d, 0x5f, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x88, 0x97, 0x32, 0x38, 0x3c, 0x33, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x07, 0x2a, 0x83, 0x83, 0xb6, 0xbe, 0x2f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x34, 0x55, 0x19, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x67, 0x56, 0x06, 0x07, 0x8d, 0xfb, 0x70, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x07, 0xcb, 0xe0, 0xf0, 0xcc, 0xe4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x1e, 0xb3, 0x0c, 0x36, 0x5c, 0x52, 0x1b, 0x1c, 0xf6, 0x3b, 0xd6, 0x60, 0x75, 0xcd, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x78, 0x2d, 0x83, 0x83, 0x26, 0xd5, 0xdc, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x10, 0xce, 0x6d, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x7e, 0x9d, 0xdb, 0xc1, 0x9a, 0x97, 0xe6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x74, 0xcf, 0xed, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0xcd, 0x65, 0x70, 0xd0, 0xd6, 0xf7, 0xc5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x24, 0xa1, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x05, 0x45, 0xb7, 0x83, 0xf5, 0xfb, 0xcc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xec, 0xa3, 0xdb, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xcf, 0xcb, 0x60, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0xfc, 0x32, 0xd8, 0x70, 0x49, 0x6d, 0x70, 0xd8, 0xef, 0x58, 0x83, 0xd5, 0x35, 0xd3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x6a, 0xc4, 0x0c, 0x0e, 0x5a, 0x36, 0x72, 0x5b, 0x83, 0x75, 0x17, 0xc8, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xf2, 0xc1, 0x0c, 0x0e, 0x5a, 0x17, 0xad, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xe6, 0x98, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x4a, 0x66, 0xb0, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x04, 0x97, 0x19, 0x1c, 0xb4, 0xf5, 0x7d, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xdf, 0xcc, 0xe0, 0xf0, 0xcc, 0xe4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x3a, 0xd0, 0x0c, 0x0e, 0xda, 0xfa, 0xbe, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x95, 0x66, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd4, 0xa9, 0x19, 0x1c, 0x34, 0xee, 0xc3, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x26, 0x36, 0x83, 0xc3, 0x33, 0x93, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0x6c, 0x33, 0xd8, 0x70, 0x49, 0x6d, 0x70, 0xd8, 0xef, 0x58, 0x83, 0xd5, 0x35, 0xd3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x82, 0xe0, 0x0c, 0x0e, 0x9a, 0x54, 0x73, 0x5b, 0x83, 0x75, 0x17, 0xc8, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x02, 0xde, 0x0c, 0x0e, 0x5a, 0xa3, 0xac, 0xaa, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe1, 0x65, 0xb7, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x3b, 0xd1, 0x6e, 0x07, 0xab, 0x91, 0xb8, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x71, 0x6b, 0xb7, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x8b, 0x9c, 0xc1, 0x86, 0x4f, 0x6c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0x34, 0x67, 0xb0, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xab, 0x6b, 0xa6, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x9c, 0xd7, 0x19, 0x1c, 0xb4, 0x6c, 0xe4, 0xb6, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xac, 0xd2, 0x19, 0x1c, 0xb4, 0x2e, 0x5a, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xa5, 0x3b, 0x83, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x0b, 0xcf, 0x60, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x98, 0xcb, 0x33, 0x38, 0x68, 0xeb, 0xfb, 0x62, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xac, 0x9e, 0xc1, 0xe1, 0x99, 0xc9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x3c, 0xef, 0x19, 0x1c, 0xb4, 0xf5, 0x7d, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0xa1, 0xcf, 0x60, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x21, 0x7e, 0x06, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xcd, 0x9f, 0xc1, 0xc1, 0x12, 0xfb, 0xed, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x73, 0x80, 0x06, 0x07, 0x4d, 0xaa, 0xb9, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xca, 0xd0, 0x60, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x68, 0x3b, 0x34, 0x38, 0x68, 0xdc, 0x87, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x45, 0x89, 0x06, 0x87, 0x67, 0x26, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0xa9, 0x68, 0xb0, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xab, 0x6b, 0xa6, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xdc, 0x34, 0x1a, 0x1c, 0x34, 0xa9, 0xe6, 0xb6, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe4, 0x2f, 0x1a, 0x1c, 0x2c, 0xb1, 0xdf, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xb7, 0x81, 0x06, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xad, 0xa0, 0xc1, 0x41, 0x4b, 0x1d, 0x1c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0x1f, 0x34, 0x38, 0x3c, 0x33, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x89, 0x42, 0x83, 0x83, 0xd6, 0x28, 0xab, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x66, 0x79, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x24, 0xf3, 0x76, 0xb0, 0x34, 0x8c, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xbf, 0x79, 0x3b, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8c, 0x3c, 0x1a, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x22, 0xa4, 0xc1, 0x41, 0x6b, 0x94, 0x55, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x16, 0xbd, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x59, 0x7a, 0x3b, 0x58, 0x1a, 0xc7, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x43, 0xbd, 0x1d, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x7a, 0x24, 0x0d, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xab, 0x49, 0x83, 0x83, 0x66, 0x0e, 0xa6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x52, 0x69, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x14, 0x59, 0x1a, 0x1c, 0x94, 0x48, 0xd5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0xc0, 0x34, 0xd8, 0xa0, 0x2c, 0x79, 0xdf, 0x60, 0x11, 0xc8, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x6e, 0x32, 0x0d, 0x0e, 0xca, 0xa6, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x74, 0x6c, 0x1a, 0x1c, 0xb4, 0x2e, 0x5a, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x4e, 0x39, 0x0d, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xc5, 0xbd, 0x6d, 0xf8, 0x73, 0x69, 0x83, 0x93, 0x0f, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xdf, 0xbd, 0x1d, 0x2c, 0x9b, 0x71, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0xe1, 0x69, 0xb0, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe4, 0x7d, 0x1a, 0x1c, 0xb4, 0xed, 0x46, 0x50, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x18, 0xbe, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x5c, 0x7c, 0x3b, 0x58, 0xb9, 0xc8, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x45, 0xbe, 0x1d, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x0e, 0x43, 0x0d, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x50, 0x51, 0x83, 0x83, 0xb6, 0x50, 0xa9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x47, 0x6a, 0x70, 0xd0, 0xba, 0x68, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xd6, 0x4b, 0x0d, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0x77, 0x81, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xea, 0xd4, 0xe0, 0xa0, 0x35, 0xca, 0xaa, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x47, 0x7d, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xe6, 0xfa, 0x76, 0xb0, 0x6a, 0x95, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xa0, 0x7d, 0x3b, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x94, 0xa4, 0x1a, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x39, 0xaa, 0x06, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xd4, 0xaa, 0xc1, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x47, 0x6b, 0x8d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xb4, 0xb1, 0x1a, 0x1c, 0x94, 0x4d, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x72, 0x35, 0x38, 0x68, 0xae, 0xad, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xbc, 0xc0, 0x1a, 0x1c, 0x2c, 0xcf, 0x40, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x79, 0xb1, 0x06, 0x07, 0x6d, 0x7d, 0x5f, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb8, 0x95, 0x35, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0x25, 0xb7, 0xaa, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x13, 0xb7, 0x06, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x0b, 0xae, 0xc1, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x65, 0x0b, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x8e, 0x72, 0x0d, 0x0e, 0xca, 0xa6, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x9c, 0xec, 0x1a, 0x1c, 0x34, 0xd7, 0x56, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x02, 0x7a, 0x0d, 0x0e, 0x96, 0x67, 0x20, 0xb7, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x74, 0xd0, 0x1a, 0x6c, 0xb8, 0xa4, 0x36, 0x68, 0x24, 0x58, 0x6a, 0x0d, 0x1a, 0x18, 0x99, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0x58, 0x6b, 0x70, 0xb0, 0x3c, 0x03, 0xb9, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x8c, 0x7f, 0x3b, 0x38, 0x8b, 0x89, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x18, 0xf7, 0x35, 0xd8, 0xa0, 0xb4, 0xb7, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xff, 0xaf, 0xc1, 0x86, 0x3f, 0x97, 0x36, 0x68, 0x77, 0xa3, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x3e, 0xb0, 0xc1, 0x06, 0xa1, 0x5f, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x15, 0x61, 0x83, 0x83, 0x12, 0xf1, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xff, 0xc3, 0x06, 0x07, 0xcb, 0x66, 0x9c, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x57, 0x6c, 0xb0, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xa1, 0xc6, 0x06, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x1d, 0xe0, 0x0e, 0x96, 0xcd, 0x38, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0x3c, 0x36, 0xd8, 0x20, 0x48, 0x4f, 0x37, 0x58, 0x77, 0x81, 0xbc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x88, 0x01, 0x77, 0xb0, 0x5e, 0xa4, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x3e, 0xb2, 0xc1, 0x41, 0x5b, 0xdf, 0x17, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x8b, 0x21, 0x70, 0x07, 0xeb, 0xdd, 0x99, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x5c, 0x2a, 0x1b, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x97, 0xcb, 0x06, 0x07, 0x4d, 0x6a, 0x5e, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x9b, 0xd9, 0xe0, 0xa0, 0xcd, 0x16, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x44, 0x38, 0x1b, 0x6c, 0x70, 0x0c, 0x37, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0xf3, 0x6c, 0x70, 0xd0, 0x86, 0x0d, 0x5c, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x13, 0x3b, 0x70, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x81, 0xe0, 0x0e, 0xd6, 0xbc, 0x34, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0x46, 0x70, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x66, 0x68, 0x83, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x3c, 0xda, 0x60, 0xc3, 0x23, 0xac, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x97, 0x36, 0xd8, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0xaa, 0xe0, 0x0e, 0x8a, 0x54, 0xcc, 0x83, 0xe6, 0x1b, 0xab, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0x45, 0x6d, 0xb0, 0xe1, 0x6d, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x65, 0xd5, 0x06, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x9e, 0xb5, 0xc1, 0x41, 0x1b, 0x36, 0x70, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x62, 0xaf, 0x0d, 0x0e, 0x5a, 0x2b, 0x83, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x77, 0xd9, 0x06, 0x07, 0x6d, 0x7d, 0x5f, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0xd5, 0x36, 0xd8, 0xa0, 0xd8, 0xd1, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xf2, 0xb6, 0xc1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0xce, 0x6d, 0x70, 0xd0, 0xf0, 0xe5, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x76, 0xbd, 0x0d, 0x0e, 0xda, 0x6c, 0x81, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x0a, 0xb8, 0xc1, 0x41, 0xeb, 0xa2, 0x55, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x7b, 0xdd, 0x60, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xf2, 0xd8, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x52, 0xda, 0x0d, 0x0e, 0x1a, 0xe9, 0x67, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0xe6, 0x6e, 0x70, 0x10, 0x9e, 0xaa, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x0e, 0xc3, 0x0d, 0x36, 0x38, 0xe7, 0x2f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x50, 0xdc, 0xe0, 0xa0, 0x49, 0xcd, 0x8b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x24, 0x8f, 0x1b, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xe3, 0xe4, 0x06, 0x07, 0x45, 0x96, 0xe9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x76, 0xcd, 0x0d, 0x0e, 0xda, 0x6c, 0x81, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x0a, 0xba, 0xc1, 0x41, 0xeb, 0xa2, 0x55, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x18, 0x4c, 0x37, 0xd8, 0xe0, 0x18, 0x6e, 0xb0, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x54, 0xdd, 0xe0, 0xa0, 0x0d, 0x1b, 0xb8, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x5d, 0x51, 0xb8, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0xa8, 0x70, 0x07, 0xeb, 0xf7, 0x99, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xed, 0x56, 0xb8, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xfb, 0xbb, 0xc1, 0x41, 0x5b, 0xdf, 0x17, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xcb, 0xb6, 0x70, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0x78, 0xe1, 0x0e, 0x56, 0x23, 0x71, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xeb, 0xc1, 0x70, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xc6, 0x78, 0x83, 0x83, 0xb6, 0xbe, 0x2f, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x95, 0xe1, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x41, 0xc3, 0x1d, 0x2c, 0x0d, 0xe3, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0xab, 0xe1, 0x0e, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x2b, 0xf3, 0x06, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0xbb, 0x40, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0x49, 0x6f, 0x70, 0xd0, 0x1a, 0x65, 0x55, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xcb, 0xe3, 0x70, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0xd2, 0xe1, 0x0e, 0x96, 0xc6, 0x71, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xeb, 0xee, 0x70, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x22, 0x7b, 0x83, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xeb, 0xde, 0xe0, 0xa0, 0x99, 0x83, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xcc, 0xe4, 0x1b, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x4d, 0xfa, 0x06, 0x07, 0x25, 0x52, 0xf5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x4a, 0xf8, 0x0d, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x58, 0x04, 0x32, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x9f, 0x7e, 0x83, 0x83, 0xb2, 0xe9, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x25, 0xff, 0x06, 0x07, 0xad, 0x8b, 0x56, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x57, 0x80, 0x83, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x63, 0x0f, 0x71, 0x1b, 0xfe, 0x5c, 0xda, 0xe0, 0xe4, 0x83, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xeb, 0x15, 0x71, 0x07, 0xcb, 0x66, 0x9c, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x6c, 0x08, 0x1c, 0x6c, 0xb8, 0xa4, 0x36, 0x38, 0xec, 0x77, 0xac, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x81, 0x03, 0x07, 0x07, 0x6d, 0xbb, 0x11, 0x54, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0x24, 0x71, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0x53, 0xe2, 0x0e, 0x56, 0x2e, 0x72, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x53, 0x2f, 0x71, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xc7, 0x82, 0x83, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xd5, 0xe0, 0xe0, 0xa0, 0x2d, 0x54, 0xaa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x04, 0x22, 0x1c, 0x1c, 0xb4, 0x2e, 0x5a, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xf9, 0x84, 0x83, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0x5a, 0x38, 0x38, 0x68, 0x8d, 0xb2, 0xaa, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0x8e, 0xe2, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x31, 0xc5, 0x1d, 0xac, 0x5a, 0xe5, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0xa4, 0xe2, 0x0e, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x2d, 0x0d, 0x07, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x90, 0xc3, 0xc1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0xf5, 0x70, 0xb0, 0x41, 0x59, 0xf2, 0xbe, 0xc1, 0xd1, 0x5a, 0x63, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x75, 0x10, 0x07, 0x07, 0x65, 0xd3, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xba, 0x24, 0x0e, 0x0e, 0x9a, 0x6b, 0xab, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x37, 0x14, 0x07, 0x07, 0xcb, 0x33, 0x90, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x60, 0xc5, 0xc1, 0x41, 0x5b, 0xdf, 0x17, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x7e, 0x2d, 0x0e, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0xc9, 0xad, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xc6, 0xc6, 0xc1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0xc3, 0x71, 0xb0, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xa7, 0x8e, 0x83, 0x83, 0xb2, 0xe9, 0x7d, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x2f, 0x1f, 0x07, 0x07, 0xcd, 0xb5, 0x55, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x84, 0x90, 0x83, 0x83, 0xe5, 0x19, 0xc8, 0xad, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x25, 0x18, 0x07, 0x1b, 0x2e, 0xa9, 0x0d, 0x1a, 0x09, 0x96, 0x5a, 0x83, 0x06, 0x46, 0xa6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x24, 0x66, 0x1c, 0x1c, 0x2c, 0xcf, 0x40, 0xae, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0x1f, 0xe3, 0x0e, 0x96, 0xe8, 0x3a, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x17, 0x39, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x75, 0xcd, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x26, 0x92, 0x83, 0x83, 0x96, 0x8d, 0xdc, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xec, 0x8c, 0x3b, 0x58, 0x43, 0xe9, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xbe, 0xe4, 0x60, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x88, 0x38, 0x39, 0x38, 0x68, 0x0b, 0x95, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xe9, 0x28, 0x07, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x7a, 0xca, 0xc1, 0x41, 0x03, 0x67, 0x53, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x08, 0x59, 0x39, 0x38, 0x68, 0x6c, 0x21, 0x62, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x5f, 0x2c, 0x07, 0x07, 0xad, 0xcd, 0xc6, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xe0, 0x96, 0x83, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x18, 0x79, 0x39, 0x38, 0x68, 0xd9, 0xc8, 0xad, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x81, 0xe3, 0x0e, 0x96, 0xcb, 0x7c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x87, 0x39, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x0a, 0x64, 0x0e, 0x0e, 0xda, 0x75, 0xe2, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xf7, 0xcc, 0xc1, 0x41, 0xc3, 0xcc, 0x71, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf8, 0xa9, 0x39, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x75, 0xcd, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x50, 0x9b, 0x83, 0x83, 0x96, 0x8d, 0xdc, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x49, 0x3b, 0xee, 0x60, 0x05, 0xd3, 0xf7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x34, 0x9c, 0x83, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x98, 0x16, 0x3a, 0x38, 0x68, 0xd9, 0xc8, 0x6d, 0x0d, 0x1a, 0x18, 0x99, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x9c, 0x73, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x9c, 0xeb, 0x1c, 0x6c, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0xc6, 0x7d, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x02, 0x78, 0x0e, 0x0e, 0x1a, 0x47, 0x8f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x7c, 0xcf, 0xc1, 0x41, 0x03, 0x67, 0x53, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xfb, 0xe7, 0xe0, 0xa0, 0x8d, 0xf4, 0x82, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x3c, 0x05, 0x1d, 0x1c, 0xb4, 0xac, 0x1f, 0x57, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0xff, 0x71, 0x07, 0x6b, 0x82, 0xce, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf4, 0x11, 0x1d, 0x6c, 0x50, 0x90, 0xc6, 0x6e, 0xb0, 0xbc, 0x37, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x97, 0x45, 0x07, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xac, 0xd1, 0xc1, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x6d, 0xdc, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xf9, 0xe8, 0xe0, 0xa0, 0x71, 0xf4, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xec, 0x26, 0x1d, 0x1c, 0x34, 0x70, 0x36, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x42, 0x97, 0x0e, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x68, 0xde, 0xb4, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xbb, 0x4c, 0x07, 0x07, 0x0d, 0xa5, 0x76, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0xd3, 0xe9, 0xe0, 0xa0, 0x95, 0x0f, 0xb9, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0x00, 0x75, 0xb0, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x8c, 0xa8, 0x83, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x46, 0xea, 0x60, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xc6, 0x68, 0xa5, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x34, 0x75, 0x70, 0xd0, 0x38, 0x7a, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x5e, 0xaa, 0x0e, 0x0e, 0x56, 0xf0, 0x86, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x7f, 0xab, 0x83, 0x83, 0x22, 0xa7, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x55, 0x58, 0x07, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0xae, 0x99, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0x9b, 0x75, 0x70, 0xd0, 0xb2, 0x91, 0x5b, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x18, 0xd9, 0x3a, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x7a, 0xb8, 0x0e, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x68, 0xf4, 0x3c, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x57, 0x5d, 0x07, 0x07, 0x8d, 0xa3, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0xe9, 0xeb, 0xe0, 0x60, 0x79, 0x06, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf8, 0x08, 0x3b, 0x38, 0x58, 0xc1, 0x1b, 0xda, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xc2, 0x94, 0xdc, 0xc1, 0x22, 0xad, 0xf3, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xe3, 0x62, 0x07, 0x1b, 0x1c, 0x6d, 0xf8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0x93, 0x77, 0xb0, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x97, 0x7a, 0x07, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xec, 0xde, 0xc1, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x6d, 0xdc, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x99, 0xef, 0xe0, 0xa0, 0x71, 0xf4, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xec, 0xfa, 0x1d, 0x1c, 0x2c, 0xcf, 0x40, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x8d, 0x80, 0x07, 0x87, 0x67, 0x26, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xff, 0xd8, 0xc1, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xfa, 0xc9, 0x0e, 0x0e, 0xda, 0x48, 0x2f, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x63, 0x76, 0xb0, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x61, 0x67, 0x07, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0xfd, 0xe4, 0x0e, 0xd6, 0x8e, 0x3c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0x42, 0x3b, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xe2, 0xd2, 0x0e, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x42, 0xb5, 0x83, 0xc3, 0x83, 0x37, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x4a, 0xd7, 0x0e, 0x0e, 0x1a, 0x6e, 0x94, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x35, 0xdb, 0xc1, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0xbe, 0xed, 0x60, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x77, 0x3b, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xea, 0xdf, 0x0e, 0x0e, 0x96, 0x39, 0xc9, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x23, 0xee, 0xe0, 0xf0, 0xe0, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x7e, 0xe4, 0x0e, 0x0e, 0x0a, 0x8a, 0xcc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x35, 0x77, 0xb0, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x9b, 0x8e, 0x72, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x8a, 0xe9, 0x0e, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xef, 0xba, 0x83, 0xc3, 0x6b, 0x3e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x78, 0xbd, 0x3b, 0x38, 0x68, 0xb8, 0x51, 0xae, 0x6a, 0x35, 0x68, 0x44, 0x20, 0x65, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x81, 0xe0, 0xc1, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x81, 0x5c, 0xb9, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0xa6, 0x4f, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb9, 0x5f, 0xb9, 0x83, 0x25, 0x7d, 0xce, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xa6, 0x06, 0x0f, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x20, 0xcb, 0x1d, 0xac, 0x7d, 0x77, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x44, 0x78, 0xb0, 0x41, 0x41, 0x30, 0xbb, 0xc1, 0xea, 0x9a, 0xe9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa4, 0x16, 0x1e, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xc3, 0xe1, 0xc1, 0x06, 0x0d, 0xef, 0x58, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x78, 0x42, 0x3c, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x9e, 0x12, 0x0f, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x27, 0xc5, 0x83, 0x83, 0x76, 0xab, 0x22, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0xb9, 0x78, 0xb0, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x92, 0xf1, 0xe0, 0xa0, 0xdd, 0x18, 0x85, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x77, 0xe3, 0xc1, 0x41, 0x41, 0x91, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xfe, 0x1d, 0x0f, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xff, 0xc7, 0x83, 0x83, 0x05, 0x54, 0xde, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0x89, 0x3c, 0x38, 0x58, 0x62, 0xbf, 0x5d, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0x94, 0x3c, 0xd8, 0x20, 0x48, 0x4f, 0x37, 0x68, 0xc6, 0x7b, 0x6d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa0, 0x5f, 0xee, 0x60, 0x15, 0xa3, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xfa, 0xc9, 0x83, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0x66, 0xd1, 0xd7, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0x0e, 0xe6, 0x0e, 0xd6, 0xef, 0x33, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x88, 0xaa, 0x3c, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x75, 0xcd, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x5a, 0xcb, 0x83, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0xf6, 0xf2, 0xe0, 0xa0, 0x15, 0xc9, 0x8a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xdc, 0x63, 0x1e, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xf7, 0x99, 0x07, 0x07, 0x0b, 0xa8, 0xbc, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0xb3, 0x79, 0x70, 0xb0, 0xc4, 0x7e, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xcc, 0x71, 0x1e, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x73, 0x9d, 0x07, 0x07, 0x0b, 0xa8, 0xbc, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0xeb, 0x79, 0x70, 0xb0, 0xc4, 0x7e, 0xbb, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x5d, 0x99, 0x3b, 0x58, 0x87, 0xd0, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x0d, 0xf4, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x08, 0x0c, 0x3d, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x36, 0x45, 0x0f, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x68, 0x8c, 0x56, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xb5, 0xa3, 0x07, 0x07, 0x8d, 0xa3, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xb2, 0xf4, 0xe0, 0xa0, 0x3d, 0x49, 0xaf, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x78, 0x7a, 0x70, 0x50, 0xc0, 0xe6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x1c, 0xf5, 0xe0, 0x60, 0x79, 0x06, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x48, 0x51, 0x3d, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x52, 0x56, 0x0f, 0x0e, 0x96, 0x4f, 0x21, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x89, 0xf5, 0xe0, 0xa0, 0xc8, 0x69, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x5b, 0xeb, 0xc1, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x12, 0x5d, 0x0f, 0x0e, 0x1a, 0x9e, 0x10, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x18, 0xec, 0xc1, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xab, 0x6b, 0xa6, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x14, 0xc7, 0x1e, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xc5, 0xb2, 0x07, 0x07, 0x0b, 0xa8, 0xbc, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0x40, 0x7b, 0x70, 0xd0, 0xa4, 0xe6, 0xc5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x8a, 0x6a, 0x0f, 0x0e, 0x92, 0xd2, 0x82, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xae, 0xed, 0xc1, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xa6, 0x6f, 0x0f, 0x0e, 0x1a, 0xaa, 0x11, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x6a, 0xee, 0xc1, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0xaa, 0x7b, 0x70, 0xd0, 0x52, 0x4d, 0xc7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xce, 0x77, 0x0f, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x73, 0xde, 0x83, 0x83, 0x65, 0x01, 0xc0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x38, 0xf0, 0x3d, 0x38, 0x58, 0xb7, 0x88, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x5e, 0x7e, 0x0f, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x17, 0xe0, 0x83, 0x83, 0xe5, 0x53, 0xc8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x0a, 0x3e, 0x38, 0x28, 0x72, 0x5a, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xaa, 0xf0, 0xc1, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x3a, 0x7c, 0x70, 0xd0, 0x52, 0x4d, 0xc7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xce, 0x89, 0x0f, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xf3, 0xe2, 0x83, 0x83, 0x65, 0x01, 0xc0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x38, 0x38, 0x3e, 0x38, 0x58, 0xb7, 0x88, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x5e, 0x90, 0x0f, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x97, 0xe4, 0x83, 0x83, 0xe5, 0x53, 0xc8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x52, 0x3e, 0x38, 0x28, 0x60, 0xf3, 0x6b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xc8, 0x74, 0xee, 0x60, 0xbd, 0x3b, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x0b, 0xe6, 0x83, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xa2, 0xf9, 0xe0, 0x60, 0xf9, 0x14, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x7a, 0x9c, 0x0f, 0x0e, 0x8a, 0x9c, 0xd6, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0x6b, 0xe7, 0x0e, 0x16, 0x53, 0x34, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0x7d, 0x3e, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x75, 0xcd, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x90, 0xe8, 0x83, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x44, 0xfa, 0xe0, 0xf0, 0xc4, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x9a, 0xa6, 0x0f, 0x0e, 0x8e, 0xcc, 0xaa, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x18, 0xa4, 0x3e, 0x38, 0x28, 0x28, 0x32, 0x6b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x9c, 0x79, 0xee, 0x60, 0xbd, 0x48, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x10, 0xeb, 0x83, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xe4, 0xfa, 0xe0, 0x60, 0xf9, 0x14, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x8e, 0xb0, 0x0f, 0x0e, 0x0a, 0xd8, 0xfc, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0xb8, 0xe7, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x86, 0xcf, 0x1d, 0xac, 0x79, 0x69, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0xce, 0xe7, 0x0e, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xcf, 0xd9, 0x07, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xb8, 0xf6, 0xc1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0xbf, 0x7d, 0xb0, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x63, 0xb4, 0x52, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb8, 0xe8, 0x3e, 0x38, 0x68, 0x1c, 0x3d, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xf9, 0xde, 0x07, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xfe, 0xf7, 0xc1, 0x41, 0x93, 0x9a, 0x17, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd8, 0x09, 0x3f, 0x38, 0x48, 0x4a, 0x0b, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x96, 0xf8, 0xc1, 0x41, 0x41, 0x91, 0x59, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x88, 0x21, 0x3f, 0x38, 0x28, 0x60, 0xf3, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x58, 0x7e, 0x70, 0xb0, 0x3c, 0x03, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x3c, 0x9b, 0x1f, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xcf, 0xe7, 0x07, 0x07, 0xcb, 0xa7, 0x90, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0x8f, 0x7e, 0x70, 0x50, 0xe4, 0xb4, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x42, 0xfd, 0x60, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x48, 0x59, 0x3f, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x86, 0xd8, 0x0f, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x68, 0x8c, 0x56, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x5d, 0xed, 0x07, 0x07, 0x8d, 0xa3, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xe7, 0xfd, 0x60, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf8, 0x81, 0x3f, 0x38, 0x68, 0x45, 0xb2, 0x62, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x81, 0xf1, 0x07, 0x07, 0x4b, 0xec, 0xb7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x2b, 0x7f, 0x70, 0xb0, 0xc4, 0x7e, 0xbb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0x4b, 0x7f, 0x70, 0x50, 0xc0, 0xe6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xc1, 0xfe, 0xe0, 0x60, 0x79, 0x06, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x88, 0xba, 0x3f, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xa2, 0xf0, 0x0f, 0x0e, 0x96, 0x4f, 0x21, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x2e, 0xff, 0xe0, 0xa0, 0x80, 0xcd, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xa7, 0xfe, 0xc1, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0xbb, 0x7f, 0x70, 0x90, 0xf8, 0x19, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xc5, 0xfe, 0x83, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xd1, 0xff, 0xe0, 0x20, 0x38, 0x52, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0xfb, 0x7f, 0x70, 0xb0, 0x2c, 0x00, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xdb, 0x00, 0x08, 0x07, 0xeb, 0x16, 0x91, 0xab, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xa5, 0x2b, 0xba, 0x83, 0xf5, 0xfb, 0xcc, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x02, 0x05, 0x10, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xca, 0x01, 0x84, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x95, 0x00, 0x61, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xc6, 0x68, 0xa5, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x5c, 0x80, 0x70, 0xd0, 0x38, 0x7a, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x56, 0x0f, 0x10, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x55, 0x04, 0x84, 0x83, 0x26, 0x35, 0x2f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x9e, 0x80, 0x70, 0x90, 0x94, 0x16, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x86, 0x05, 0x84, 0x83, 0x82, 0x22, 0xb3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0xce, 0x80, 0x70, 0x50, 0xc0, 0xe6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xc7, 0x01, 0xe1, 0x60, 0x79, 0x06, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x08, 0x7c, 0x40, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x02, 0x21, 0x10, 0x0e, 0x96, 0x4f, 0x21, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x34, 0x02, 0xe1, 0xa0, 0x80, 0xcd, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xb3, 0x04, 0xc2, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xce, 0x27, 0x10, 0x0e, 0x1a, 0x9e, 0x10, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x6f, 0x05, 0xc2, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0x6d, 0x81, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xb4, 0x5f, 0x20, 0x6c, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0x18, 0xad, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x0e, 0x32, 0x10, 0x0e, 0x1a, 0x47, 0x8f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xba, 0x06, 0xc2, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0xbe, 0x81, 0x70, 0xd0, 0x8a, 0x64, 0xc5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x56, 0x3a, 0x10, 0x0e, 0x96, 0xd8, 0x6f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xcd, 0x03, 0xe1, 0x60, 0x89, 0xfd, 0x76, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x0b, 0x04, 0xe1, 0xa0, 0x80, 0xcd, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x6e, 0x08, 0xc2, 0xc1, 0xf2, 0x0c, 0xe4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x2f, 0x82, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xec, 0x8f, 0x20, 0x1c, 0x2c, 0x9f, 0x42, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x48, 0x09, 0xc2, 0x41, 0x91, 0xd3, 0xda, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x20, 0x13, 0x84, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xe8, 0x04, 0xe1, 0x20, 0x38, 0x52, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0x87, 0x82, 0x70, 0xb0, 0x2c, 0x00, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x91, 0x29, 0x08, 0x07, 0xeb, 0x16, 0x91, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0xae, 0x82, 0xb0, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x04, 0x16, 0x84, 0x83, 0x86, 0x27, 0xc4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0xde, 0x82, 0xb0, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x47, 0x2f, 0x08, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x18, 0x0c, 0xc2, 0x86, 0x4b, 0x6a, 0x83, 0xd6, 0x7b, 0xa5, 0xd6, 0xa0, 0x81, 0x91, 0xa9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xd5, 0x31, 0x08, 0x07, 0xcb, 0x33, 0x90, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xee, 0x0c, 0xc2, 0x41, 0x6b, 0x9b, 0x62, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x68, 0xa9, 0x41, 0x38, 0x08, 0x58, 0xd6, 0xd6, 0x60, 0x49, 0x23, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xea, 0x1b, 0x84, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x1d, 0x07, 0xe1, 0xe0, 0x8c, 0x35, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x63, 0x1d, 0x84, 0x83, 0x75, 0x8b, 0xc8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x28, 0xe1, 0x41, 0x38, 0x08, 0x58, 0xd6, 0xd6, 0x60, 0x75, 0xcd, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x3b, 0x1b, 0x84, 0x83, 0x96, 0x8d, 0xdc, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0xdc, 0x83, 0xb0, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x29, 0x3f, 0x08, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x10, 0x10, 0xc2, 0x86, 0x4b, 0x6a, 0x83, 0xd6, 0x7b, 0xa5, 0xd6, 0xa0, 0x81, 0x91, 0xa9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xb7, 0x41, 0x08, 0x07, 0xcb, 0x33, 0x90, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xe6, 0x10, 0xc2, 0x41, 0x6b, 0x9b, 0x62, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x78, 0x28, 0x42, 0x38, 0x28, 0x2a, 0xc5, 0x5b, 0x83, 0x25, 0x8d, 0xc8, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x6e, 0x8f, 0x10, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x68, 0x24, 0x84, 0x83, 0x33, 0xd6, 0xcc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x52, 0x95, 0x10, 0x0e, 0xd6, 0x2d, 0x22, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x80, 0x09, 0xe1, 0xa0, 0xa8, 0x14, 0x6f, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0x32, 0x42, 0x38, 0x68, 0x52, 0xcd, 0xad, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x9d, 0x90, 0xba, 0x83, 0xb3, 0x98, 0xe8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x05, 0x27, 0x84, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xe3, 0x09, 0x61, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0x81, 0x42, 0xd8, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x31, 0x5a, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x4c, 0x45, 0x21, 0x1c, 0x34, 0x8e, 0x1e, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x9a, 0x29, 0x84, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x86, 0x0a, 0xe1, 0xa0, 0x49, 0xcd, 0x8b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xdc, 0x55, 0x21, 0x1c, 0x24, 0xa5, 0x05, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xd2, 0x0a, 0x61, 0x83, 0x63, 0xb8, 0xc1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xdd, 0x2b, 0x84, 0x83, 0x36, 0x6c, 0xe0, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x9d, 0x59, 0x08, 0x07, 0x05, 0x6c, 0xfe, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xf2, 0xb5, 0x10, 0x0e, 0x96, 0x67, 0x20, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x1d, 0x2e, 0x84, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xa7, 0x0b, 0xe1, 0x60, 0xf9, 0x14, 0xf2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xc2, 0xbc, 0x10, 0x0e, 0x8a, 0x9c, 0xd6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x04, 0x7e, 0x21, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x81, 0x60, 0x08, 0x07, 0x2d, 0xd5, 0x74, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x37, 0x0c, 0x61, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0x15, 0x43, 0x38, 0x58, 0x3e, 0x85, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xf1, 0x31, 0x84, 0x83, 0x36, 0x6c, 0xe0, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x43, 0x19, 0xc2, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x60, 0x86, 0x70, 0xb0, 0x2c, 0x00, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x2f, 0x67, 0x08, 0x07, 0xeb, 0x16, 0x91, 0x6b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xf7, 0xad, 0xee, 0x60, 0x89, 0xae, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x5b, 0x34, 0x84, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x56, 0xd7, 0x4c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd8, 0x50, 0x43, 0x38, 0x68, 0xd9, 0xc8, 0xad, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xcd, 0xbe, 0xba, 0x83, 0x35, 0x94, 0xde, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x8a, 0xd7, 0x10, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0x5d, 0x33, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xa5, 0x0d, 0xe1, 0xa0, 0x65, 0x23, 0xb7, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0x16, 0xeb, 0x0e, 0x96, 0xcb, 0x7c, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x98, 0x76, 0x43, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x75, 0xcd, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x1b, 0x38, 0x84, 0x83, 0x96, 0x8d, 0xdc, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xca, 0xac, 0x3b, 0x58, 0xc1, 0xf4, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x3c, 0x0e, 0x61, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd8, 0x97, 0x43, 0xd8, 0x60, 0x49, 0xfd, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x7e, 0xed, 0x10, 0x0e, 0x9a, 0x2b, 0xad, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x85, 0x87, 0xb0, 0xe1, 0x73, 0x97, 0x0d, 0x1a, 0x50, 0xa1, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0x95, 0x87, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xbc, 0xe9, 0x21, 0x1c, 0xb4, 0x58, 0x04, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x23, 0x3e, 0x84, 0x83, 0x26, 0xaa, 0xab, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0xdb, 0x87, 0x70, 0xd0, 0xb2, 0x7e, 0x5c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x0a, 0xfe, 0x10, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0x60, 0x64, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x1a, 0x20, 0xc2, 0x41, 0xab, 0xe7, 0x68, 0x6b, 0xb0, 0xa4, 0x11, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xd1, 0x20, 0xc2, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x45, 0x88, 0x70, 0x70, 0xc6, 0x9a, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x8d, 0x21, 0xc2, 0xc1, 0xba, 0x45, 0xe4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x54, 0x1e, 0x22, 0x1c, 0x34, 0x14, 0x8f, 0xd6, 0x1a, 0xac, 0xae, 0x99, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x1d, 0x88, 0x70, 0xd0, 0xb2, 0x91, 0x5b, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb3, 0xd6, 0x75, 0x07, 0x6b, 0x82, 0xce, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x94, 0x25, 0x22, 0x6c, 0x50, 0x90, 0xc6, 0x6e, 0xb0, 0xbc, 0x37, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x7f, 0x8a, 0x08, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xe6, 0x22, 0xc2, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x6d, 0xdc, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x96, 0x11, 0xe1, 0xa0, 0x71, 0xf4, 0xa8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8c, 0x3a, 0x22, 0x1c, 0x34, 0x70, 0x36, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x16, 0x21, 0x11, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x68, 0xde, 0xb4, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xa5, 0x91, 0x08, 0x07, 0x0d, 0xa5, 0x76, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x70, 0x12, 0xe1, 0xa0, 0x95, 0x0f, 0xb9, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x4e, 0x89, 0xb0, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x01, 0x4b, 0x84, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0xe3, 0x12, 0x61, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xc6, 0x68, 0xa5, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0x83, 0x89, 0x70, 0xd0, 0x38, 0x7a, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x32, 0x34, 0x11, 0x0e, 0x56, 0xf0, 0x86, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xf4, 0x4d, 0x84, 0x83, 0x22, 0xa7, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x3f, 0x9d, 0x08, 0x07, 0xcb, 0x33, 0x90, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0xe8, 0x89, 0xb0, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xea, 0x9a, 0xe9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xed, 0x9f, 0x08, 0x07, 0x2d, 0x1b, 0xb9, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xa7, 0x61, 0x77, 0xb0, 0x48, 0xeb, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x73, 0x28, 0xc2, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x2c, 0x8a, 0x70, 0xb0, 0x7c, 0x0a, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xf5, 0xa3, 0x08, 0x07, 0x45, 0x4e, 0x6b, 0x1d, 0x4e, 0xb1, 0x35, 0x58, 0xec, 0xef, 0xb3, 0xe1, 0x79, 0x92, 0x0d, 0x1a, 0x52, 0xb1, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0x53, 0x8a, 0xb0, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x59, 0xa6, 0x08, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x85, 0xec, 0x0e, 0x96, 0xcd, 0x38, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x3a, 0x45, 0xd8, 0xa0, 0x20, 0x98, 0xdd, 0x60, 0x75, 0xcd, 0xf4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x5e, 0x51, 0x11, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x58, 0x5d, 0x33, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x42, 0x15, 0x61, 0x83, 0x86, 0x77, 0x2c, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x4c, 0xad, 0x22, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x53, 0xac, 0x08, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x54, 0x2b, 0xc2, 0x41, 0xbb, 0x55, 0x11, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x74, 0x45, 0xd8, 0xe0, 0xe8, 0x3a, 0xb8, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0xf9, 0x8a, 0x70, 0xd0, 0x6e, 0x8c, 0x42, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x1c, 0x16, 0xe1, 0xa0, 0xa0, 0xc8, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x01, 0xb2, 0x08, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xc0, 0x2c, 0xc2, 0xc1, 0x02, 0x2a, 0xef, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xfc, 0xd0, 0x22, 0x1c, 0x2c, 0xb1, 0xdf, 0xae, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x6c, 0xd6, 0x22, 0x6c, 0x10, 0xa4, 0xa7, 0x1b, 0x34, 0xe3, 0xbd, 0xb6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x78, 0x67, 0x77, 0xb0, 0x8a, 0xd1, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xbd, 0x2d, 0xc2, 0x06, 0x41, 0x7a, 0xba, 0x41, 0xb3, 0xe8, 0x6b, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x83, 0x81, 0x76, 0x07, 0xeb, 0xf7, 0x99, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x4c, 0xe1, 0x22, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x6d, 0x2e, 0xc2, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0xab, 0x8b, 0x70, 0xd0, 0x8a, 0x64, 0xc5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xee, 0x77, 0x11, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x7b, 0x5e, 0x84, 0x83, 0x05, 0x54, 0xde, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0xf1, 0x45, 0x38, 0x58, 0x62, 0xbf, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xe6, 0x7e, 0x11, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x39, 0x60, 0x84, 0x83, 0x05, 0x54, 0xde, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x88, 0x0d, 0x46, 0x38, 0x58, 0x62, 0xbf, 0x5d, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x98, 0xda, 0x1d, 0xac, 0x43, 0x68, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x36, 0x8c, 0xb0, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xd1, 0xc4, 0x08, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0xae, 0x99, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0x63, 0x8c, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xcc, 0x1c, 0x23, 0x1c, 0x9e, 0xb8, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x17, 0x32, 0xc2, 0x41, 0x8a, 0x93, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x2a, 0x93, 0x11, 0x0e, 0x8a, 0x9c, 0xd6, 0x5a, 0x83, 0xd5, 0x35, 0xd3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xa6, 0x95, 0x11, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xe9, 0x65, 0x84, 0xc3, 0x13, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf8, 0x67, 0x46, 0x38, 0x48, 0x71, 0x72, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x8d, 0x33, 0xc2, 0x41, 0x01, 0x9b, 0x5f, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0xd0, 0x76, 0x07, 0x8b, 0x29, 0x9a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x64, 0x3f, 0x23, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x4e, 0x34, 0xc2, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x23, 0x8d, 0x70, 0x78, 0xe2, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x67, 0xd3, 0x08, 0x07, 0x47, 0x66, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x74, 0x52, 0x23, 0x1c, 0x14, 0x14, 0x99, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x77, 0x6e, 0x77, 0xb0, 0x5e, 0xa4, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x8e, 0x35, 0xc2, 0xc1, 0xf2, 0x0c, 0xe4, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x35, 0x78, 0xbb, 0x83, 0xf5, 0xee, 0xcc, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x86, 0xaf, 0x11, 0x0e, 0xda, 0xfa, 0xbe, 0x58, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xcb, 0xb7, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xee, 0x6f, 0x77, 0xb0, 0xe6, 0xa5, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x24, 0xb8, 0x3b, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8c, 0x65, 0x23, 0x6c, 0x50, 0xda, 0x5b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x4f, 0x1b, 0x61, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0xbb, 0x51, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x6f, 0x1b, 0x61, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x2a, 0x37, 0xc2, 0x41, 0x89, 0xf8, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x3f, 0x6f, 0x84, 0x83, 0x65, 0x33, 0xce, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd8, 0xff, 0x46, 0xd8, 0xf0, 0x15, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x90, 0x70, 0x84, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x7b, 0x21, 0x77, 0x07, 0xcb, 0x66, 0x9c, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x74, 0x88, 0x23, 0x6c, 0x10, 0xa4, 0xa7, 0x1b, 0xac, 0xbb, 0x40, 0x5e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x5b, 0xb9, 0x3b, 0x58, 0x2f, 0xd2, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x6f, 0x1c, 0xe1, 0xa0, 0xad, 0xef, 0x8b, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x3d, 0x9a, 0xbb, 0x83, 0xf5, 0xee, 0xcc, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x2e, 0xca, 0x11, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x0b, 0x73, 0x84, 0x83, 0x56, 0x24, 0x2b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x75, 0x8e, 0x70, 0xb0, 0xc4, 0x7e, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x97, 0xe8, 0x08, 0x07, 0x4b, 0xec, 0xb7, 0x5b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x3a, 0xba, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xcc, 0x74, 0x77, 0xb0, 0xe6, 0xa5, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x93, 0xba, 0x3b, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd4, 0xa8, 0x23, 0x1c, 0xb4, 0xf5, 0x7d, 0xb1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xb5, 0x75, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x1a, 0xec, 0xee, 0x60, 0xfd, 0x3e, 0xf3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x67, 0x76, 0x77, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x98, 0x5e, 0x47, 0x38, 0x58, 0x9e, 0x81, 0xbc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xf6, 0x76, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x9b, 0xee, 0xee, 0x60, 0x35, 0x12, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xa8, 0x77, 0x77, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd8, 0x6a, 0x47, 0x38, 0x58, 0x9e, 0x81, 0xbc, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x36, 0x78, 0xb7, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x1c, 0xf1, 0xee, 0x60, 0x69, 0x18, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xe8, 0x78, 0x77, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x18, 0x77, 0x47, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xfa, 0xdf, 0x11, 0x0e, 0xda, 0x75, 0xe2, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x75, 0x3c, 0xc2, 0x41, 0xeb, 0xa2, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x38, 0x9a, 0x47, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0xdd, 0x05, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x56, 0x7a, 0x84, 0x83, 0xd6, 0x28, 0xab, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xc7, 0xf4, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xec, 0xea, 0xdd, 0xc1, 0xd2, 0x38, 0xee, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x2b, 0xf6, 0xee, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x67, 0x8f, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x64, 0xde, 0x23, 0x1c, 0x34, 0x73, 0x30, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xb6, 0x7c, 0x84, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x50, 0x1f, 0xe1, 0xa0, 0x44, 0xaa, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x17, 0x3f, 0xc2, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8b, 0x40, 0x46, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0xd7, 0x8f, 0x70, 0x50, 0x36, 0xbd, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xeb, 0x1f, 0xe1, 0xa0, 0x75, 0xd1, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x0e, 0x90, 0xb0, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x3a, 0xfa, 0x6e, 0xc3, 0x9f, 0x4b, 0x1b, 0x9c, 0x7c, 0x50, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x0b, 0xfb, 0xee, 0x60, 0xd9, 0x8c, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x2a, 0x81, 0x84, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x35, 0x58, 0x77, 0x81, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x77, 0x20, 0xe1, 0xa0, 0x6d, 0x37, 0x82, 0x6a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd4, 0xfc, 0x6e, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x06, 0xfb, 0xdd, 0xc1, 0xca, 0x45, 0xee, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x38, 0xfe, 0xee, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x5c, 0x90, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8c, 0x1b, 0x24, 0x1c, 0xb4, 0x85, 0x4a, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x5d, 0x84, 0x84, 0x83, 0xd6, 0x45, 0xab, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0xa2, 0x90, 0xb0, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xba, 0x0b, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x93, 0x0b, 0x09, 0x07, 0xad, 0x51, 0x56, 0xd5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x5c, 0x02, 0xde, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x75, 0x07, 0xbc, 0x83, 0x55, 0xab, 0xdc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x24, 0x05, 0xde, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xac, 0x21, 0x61, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd8, 0x73, 0x48, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x2a, 0x1f, 0x12, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x38, 0x5a, 0x6b, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x15, 0x22, 0xe1, 0xa0, 0x6c, 0x7a, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xa5, 0x44, 0xc2, 0x41, 0x73, 0x6d, 0x55, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x8e, 0x22, 0xe1, 0x60, 0x79, 0x06, 0x72, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd8, 0xad, 0x48, 0x38, 0x68, 0xeb, 0xfb, 0x62, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xbe, 0x45, 0xc2, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x2d, 0xb9, 0x55, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0xda, 0x48, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xde, 0x38, 0x12, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x28, 0x5b, 0x50, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0xd8, 0x91, 0x70, 0x50, 0x36, 0xbd, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xed, 0x23, 0xe1, 0xa0, 0xb9, 0xb6, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0x14, 0x92, 0x70, 0xb0, 0x3c, 0x03, 0xb9, 0x35, 0x58, 0x77, 0x81, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x0b, 0x23, 0x61, 0xc3, 0x25, 0xb5, 0x41, 0x23, 0xc1, 0x52, 0x6b, 0xd0, 0xc0, 0xc8, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xe1, 0x8c, 0x84, 0x83, 0xe5, 0x19, 0xc8, 0x55, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0x52, 0x78, 0x07, 0xeb, 0xf7, 0x99, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x94, 0x8c, 0x24, 0x6c, 0x50, 0xda, 0x5b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x87, 0x24, 0x61, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0xbb, 0x51, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xa7, 0x24, 0x61, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x9b, 0x49, 0xc2, 0x41, 0x89, 0xf8, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x20, 0x94, 0x84, 0x83, 0x65, 0x33, 0xce, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0x4d, 0x49, 0xd8, 0xf0, 0x15, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x71, 0x95, 0x84, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0x6f, 0x78, 0x07, 0xcb, 0x66, 0x9c, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7c, 0xaf, 0x24, 0x6c, 0x10, 0xa4, 0xa7, 0x1b, 0xac, 0xbb, 0x40, 0x5e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xc9, 0xc3, 0x3b, 0x58, 0x2f, 0xd2, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xa7, 0x25, 0xe1, 0xa0, 0xad, 0xef, 0x8b, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x15, 0x41, 0xbc, 0x83, 0xf5, 0xee, 0xcc, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xb2, 0x5d, 0x12, 0x36, 0x28, 0x76, 0x34, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0xfe, 0x92, 0xb0, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x04, 0xc4, 0x24, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x01, 0x32, 0x09, 0x07, 0xad, 0x48, 0x56, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x68, 0x26, 0x61, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x18, 0xa2, 0x49, 0x38, 0x58, 0x40, 0xe5, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xc0, 0x9a, 0x84, 0x83, 0x25, 0xf6, 0xdb, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xd7, 0x26, 0x61, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf8, 0xbd, 0x49, 0x38, 0x58, 0x40, 0xe5, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x7e, 0x9c, 0x84, 0x83, 0x25, 0xf6, 0xdb, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x47, 0x27, 0xe1, 0xa0, 0xdd, 0x18, 0x85, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa4, 0xff, 0x24, 0x1c, 0x2c, 0xcf, 0x40, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0xb6, 0x93, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x9c, 0xf1, 0x24, 0x1c, 0x34, 0xa9, 0x79, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xd4, 0x9e, 0x84, 0x83, 0xa4, 0xb4, 0xe0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x24, 0xfb, 0x24, 0x1c, 0x14, 0x14, 0x99, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xef, 0xe2, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x0b, 0xc6, 0x3b, 0x58, 0xf3, 0xd2, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x1c, 0xe3, 0x1d, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xe2, 0x82, 0x12, 0x0e, 0x96, 0x67, 0x20, 0xaf, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x3f, 0xe3, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xab, 0xc6, 0x3b, 0x58, 0xbf, 0xcf, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x6c, 0xe3, 0x1d, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xf2, 0x85, 0x12, 0x36, 0x28, 0x48, 0x63, 0x37, 0x58, 0xb5, 0xae, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x09, 0xa2, 0x84, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x35, 0x58, 0x5d, 0x33, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xd6, 0x28, 0xe1, 0xa0, 0x65, 0x23, 0xb7, 0x35, 0x58, 0x77, 0x81, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xae, 0x28, 0xe1, 0xa0, 0x75, 0xd1, 0xaa, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x5c, 0x20, 0x25, 0x6c, 0x50, 0x90, 0xc6, 0x6e, 0x30, 0x78, 0x50, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0x93, 0x94, 0xb0, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0xab, 0x6b, 0xa6, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x54, 0x2f, 0x25, 0x1c, 0x34, 0xa9, 0xe6, 0xb6, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x54, 0x2a, 0x25, 0x1c, 0xb4, 0x46, 0x59, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xa1, 0xa6, 0x84, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0xcb, 0x29, 0xe1, 0xa0, 0x99, 0x83, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd4, 0x40, 0x25, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x4f, 0x51, 0x09, 0x07, 0x8d, 0xfb, 0x70, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x64, 0x2a, 0xe1, 0x60, 0x21, 0xc2, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x0a, 0xa9, 0x12, 0x0e, 0x16, 0x70, 0xc2, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xfb, 0xaa, 0x84, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xe2, 0x2a, 0xe1, 0xa0, 0x71, 0x1f, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa4, 0x63, 0x25, 0x1c, 0x2c, 0x44, 0xd8, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x91, 0x56, 0xc2, 0x41, 0x6b, 0x94, 0x55, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x7b, 0x2b, 0x61, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0xe7, 0x4a, 0x38, 0x68, 0xdc, 0x87, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xd1, 0x5e, 0x09, 0x07, 0xad, 0x8b, 0x56, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x08, 0x2c, 0xe1, 0x60, 0x01, 0x27, 0x7c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x0d, 0x4b, 0x38, 0x28, 0x28, 0x32, 0x5b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xa3, 0xc9, 0xdb, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x9e, 0x93, 0x77, 0xb0, 0x1a, 0x89, 0x7b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xfc, 0xc9, 0x3b, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x4c, 0x8d, 0x25, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x6d, 0x64, 0x09, 0x1b, 0x2e, 0xa9, 0x0d, 0x0e, 0xfb, 0x1d, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xc3, 0x59, 0xc2, 0x41, 0xcb, 0x46, 0x6e, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x74, 0x59, 0xc2, 0x41, 0xeb, 0xa2, 0x55, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x88, 0x43, 0x4b, 0xd8, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x0a, 0xd3, 0x12, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x4c, 0xb5, 0x84, 0x83, 0xb6, 0xbe, 0x2f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x5c, 0xaf, 0x25, 0x1c, 0x9e, 0x99, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x3d, 0x5b, 0xc2, 0x41, 0x5b, 0xdf, 0x17, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x66, 0xdc, 0x12, 0x36, 0x28, 0x76, 0x34, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0xf4, 0x96, 0xb0, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x6c, 0xc1, 0x25, 0x1c, 0x2c, 0xb1, 0xdf, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x19, 0x97, 0x70, 0xd0, 0xa4, 0x9a, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xf2, 0xee, 0x12, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x49, 0xbc, 0x84, 0x83, 0xc6, 0x7d, 0xb8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0xa6, 0x97, 0x70, 0x78, 0x66, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xbb, 0x7b, 0x09, 0x1b, 0x2e, 0xa9, 0x0d, 0x0e, 0xfb, 0x1d, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x97, 0x5f, 0xc2, 0x41, 0x93, 0x6a, 0x6e, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x47, 0x5f, 0xc2, 0xc1, 0x12, 0xfb, 0xed, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x2d, 0x97, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x74, 0xcf, 0x25, 0x1c, 0xb4, 0xd4, 0xc1, 0xb1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x8f, 0xba, 0x84, 0xc3, 0x33, 0x93, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0xb1, 0x4b, 0x38, 0x68, 0x8d, 0xb2, 0xaa, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb9, 0xca, 0xbc, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xeb, 0x9a, 0x79, 0x07, 0x4b, 0xc3, 0xb8, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x49, 0xd0, 0xbc, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x12, 0x60, 0xc2, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xeb, 0x2e, 0x90, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xbc, 0x06, 0x26, 0x1c, 0xb4, 0x46, 0x59, 0xd5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x98, 0x6b, 0xde, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xed, 0xd9, 0xbc, 0x83, 0xa5, 0x71, 0xdc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x60, 0x6e, 0xde, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x6c, 0x30, 0x61, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0x23, 0x4c, 0x38, 0x68, 0xe6, 0x60, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x51, 0x86, 0x09, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xda, 0x61, 0xc2, 0x41, 0x89, 0x54, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xa1, 0xc4, 0x84, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x16, 0x81, 0x8c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x4b, 0x31, 0xe1, 0xa0, 0x6c, 0x7a, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x10, 0x63, 0xc2, 0x41, 0xeb, 0xa2, 0x55, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0xb9, 0x31, 0x61, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x7e, 0x76, 0xde, 0x86, 0x3f, 0x97, 0x36, 0x38, 0xf9, 0xa0, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x20, 0x78, 0xde, 0xc1, 0xb2, 0x19, 0xe7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x39, 0x8f, 0x09, 0x1b, 0x2e, 0xa9, 0x0d, 0x0e, 0xfb, 0x1d, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x27, 0x64, 0xc2, 0x41, 0xdb, 0x6e, 0x04, 0xd5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xb2, 0x7b, 0xde, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x21, 0xfa, 0xbc, 0x83, 0x95, 0x8b, 0xdc, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x7a, 0x7e, 0xde, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x55, 0x32, 0x61, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x38, 0x9e, 0x4c, 0x38, 0x68, 0x0b, 0x95, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x9f, 0x95, 0x09, 0x07, 0xad, 0x8b, 0x56, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xe2, 0x32, 0x61, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x75, 0x17, 0xc8, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xee, 0x30, 0x13, 0x0e, 0x5a, 0xa3, 0xac, 0xaa, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xcd, 0x08, 0xbd, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x13, 0x17, 0x7a, 0x07, 0xab, 0x56, 0xb9, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x5d, 0x0e, 0xbd, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x92, 0x66, 0xc2, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0xb5, 0x99, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe4, 0x71, 0x26, 0x6c, 0x50, 0x96, 0xbc, 0x6f, 0x70, 0xb4, 0xd6, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x64, 0x67, 0xc2, 0x41, 0xd9, 0xf4, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xbd, 0xcf, 0x84, 0x83, 0xe6, 0xda, 0xaa, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x55, 0x68, 0xc2, 0xc1, 0xf2, 0x0c, 0xe4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x29, 0x9a, 0x70, 0xd0, 0xd6, 0xf7, 0xc5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xee, 0xd1, 0x84, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x5a, 0x72, 0xab, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x83, 0x9a, 0xb0, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x4c, 0xa5, 0x26, 0x6c, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xb6, 0xa0, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x4d, 0x35, 0xe1, 0xa0, 0x6c, 0x7a, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x13, 0x6b, 0xc2, 0x41, 0x73, 0x6d, 0x55, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xc4, 0x35, 0xe1, 0x60, 0x79, 0x06, 0x72, 0x6b, 0xb0, 0xee, 0x02, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x50, 0x69, 0xc2, 0x86, 0x4b, 0x6a, 0x83, 0x46, 0x82, 0xa5, 0xd6, 0xa0, 0x81, 0x91, 0xa9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xa7, 0xa6, 0x09, 0x07, 0xcb, 0x33, 0x90, 0xab, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x21, 0x2d, 0xbd, 0x83, 0xb3, 0x98, 0xe8, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x04, 0xd8, 0x84, 0x0d, 0x4a, 0x7b, 0xcb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8c, 0xc4, 0x26, 0x6c, 0xf8, 0x73, 0x69, 0x83, 0x76, 0x37, 0xaa, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7c, 0xc8, 0x26, 0x6c, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x88, 0x9a, 0x4d, 0x38, 0x28, 0x11, 0xdf, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0x52, 0x9b, 0x70, 0xb0, 0x6c, 0xc6, 0xb9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xa1, 0xb6, 0x09, 0x1b, 0xbe, 0xc2, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0x7c, 0x9b, 0xb0, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe6, 0x4e, 0xef, 0x60, 0xd9, 0x8c, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x61, 0xdc, 0x84, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0x75, 0x17, 0xc8, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0x81, 0x7a, 0x07, 0xeb, 0x45, 0x9a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7c, 0xe8, 0x26, 0x1c, 0xb4, 0xf5, 0x7d, 0xb1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xa3, 0xa8, 0x77, 0xb0, 0xde, 0x9d, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xef, 0x6e, 0xc2, 0xc1, 0x12, 0xfb, 0xed, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x95, 0x49, 0xbd, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa3, 0x98, 0x7a, 0x07, 0x6b, 0x5e, 0x9a, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x25, 0x4f, 0xbd, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x56, 0x6f, 0xc2, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0xe6, 0x9b, 0xb0, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x0c, 0xfe, 0x26, 0x1c, 0xb4, 0x46, 0x59, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x17, 0x38, 0x61, 0x83, 0x63, 0xb8, 0xc1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xee, 0xe0, 0x84, 0x83, 0x36, 0x6c, 0xe0, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x31, 0x9c, 0x70, 0xd0, 0xd6, 0xf7, 0xc5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x2b, 0xe2, 0x84, 0x83, 0xe5, 0x19, 0xc8, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x9b, 0xba, 0x7a, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0x80, 0xf5, 0x0e, 0xd6, 0xef, 0x33, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xbb, 0xc5, 0x7a, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xef, 0xe2, 0x84, 0x83, 0xe5, 0x19, 0xc8, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa3, 0xce, 0x7a, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0xa8, 0xf5, 0x0e, 0x56, 0x23, 0x71, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xc3, 0xd9, 0x7a, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xb3, 0xe3, 0x84, 0x83, 0xe5, 0x19, 0xc8, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xab, 0xe2, 0x7a, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0xd0, 0xf5, 0x0e, 0x96, 0x86, 0x71, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xcb, 0xed, 0x7a, 0x07, 0x61, 0x3a, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x77, 0xe4, 0x84, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x41, 0x39, 0xe1, 0xa0, 0x5d, 0x27, 0xae, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x84, 0x2f, 0x27, 0x1c, 0xb4, 0x2e, 0x5a, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xa9, 0xe6, 0x84, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xd6, 0x5d, 0x20, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0x75, 0x4e, 0x38, 0x68, 0x8d, 0xb2, 0xaa, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0x0a, 0xf6, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x2b, 0xec, 0x1d, 0x2c, 0x8d, 0xe3, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0x21, 0xf6, 0x0e, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x8b, 0xd0, 0x09, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x69, 0x74, 0xc2, 0x41, 0x33, 0x07, 0x53, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0x9b, 0x4e, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x26, 0xa9, 0x13, 0x0e, 0x4a, 0xa4, 0xea, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xac, 0x59, 0x27, 0x6c, 0x50, 0x96, 0xbc, 0x6f, 0xb0, 0x08, 0x64, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x85, 0xd7, 0x09, 0x07, 0x65, 0xd3, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xd6, 0xb2, 0x13, 0x0e, 0x5a, 0x17, 0xad, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xf5, 0xda, 0x09, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0x62, 0xf6, 0x36, 0xfc, 0xb9, 0xb4, 0xc1, 0xc9, 0x07, 0x75, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0x6f, 0xf6, 0x0e, 0x96, 0xcd, 0x38, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x08, 0xe3, 0x4e, 0xd8, 0x70, 0x49, 0x6d, 0x70, 0xd8, 0xef, 0x58, 0x83, 0x75, 0x17, 0xc8, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x8e, 0xbb, 0x13, 0x0e, 0xda, 0x76, 0x23, 0xa8, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0x8b, 0xf6, 0x36, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x2d, 0xed, 0x1d, 0xac, 0x5c, 0xe4, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xa2, 0xf6, 0x0e, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xd5, 0xdf, 0x09, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x3b, 0x78, 0xc2, 0x41, 0x5b, 0xa8, 0x54, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x38, 0x16, 0x4f, 0x38, 0x68, 0x5d, 0xb4, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x39, 0xe4, 0x09, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0xbb, 0x40, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x59, 0x9e, 0x70, 0xd0, 0x1a, 0x65, 0x55, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xa2, 0xed, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x71, 0xdb, 0x3b, 0x58, 0xb5, 0xca, 0xbd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xcf, 0xed, 0x1d, 0x84, 0xe9, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xe6, 0xce, 0x13, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x43, 0xf4, 0x84, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x34, 0x3d, 0x61, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xa3, 0xb5, 0xc6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x76, 0xd5, 0x13, 0x0e, 0xca, 0xa6, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8c, 0xb2, 0x27, 0x1c, 0x34, 0xd7, 0x56, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xfa, 0xdc, 0x13, 0x0e, 0x96, 0x67, 0x20, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xe3, 0xf7, 0x84, 0x83, 0xb6, 0xbe, 0x2f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x14, 0xc4, 0x27, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0x92, 0x5b, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xb0, 0xfa, 0x84, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xcf, 0x3e, 0x61, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xb2, 0x05, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x95, 0xf7, 0x09, 0x07, 0x65, 0xd3, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xea, 0xf2, 0x13, 0x0e, 0x9a, 0x6b, 0xab, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x4f, 0xfb, 0x09, 0x07, 0xcb, 0x33, 0x90, 0x5b, 0x83, 0x75, 0x17, 0xc8, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xd6, 0xe4, 0x13, 0x36, 0x5c, 0x52, 0x1b, 0x34, 0x12, 0x2c, 0xb5, 0x06, 0x0d, 0x8c, 0x4c, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x78, 0x9e, 0x4f, 0x38, 0x58, 0x9e, 0x81, 0x5c, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xc5, 0xee, 0x1d, 0x2c, 0xd1, 0x75, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0xd3, 0x9f, 0xb0, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0xea, 0x9a, 0xe9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x93, 0xfe, 0x09, 0x07, 0x2d, 0x1b, 0xb9, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xf3, 0xbb, 0x77, 0xb0, 0x86, 0xd2, 0x7b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x0f, 0x80, 0xc2, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xab, 0x6b, 0xa6, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7c, 0x06, 0x28, 0x1c, 0xb4, 0x6c, 0xe4, 0xd6, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x46, 0xf3, 0xde, 0xc1, 0x72, 0x99, 0xef, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x49, 0x03, 0x0a, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0xae, 0x99, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x4a, 0xa0, 0x70, 0xd0, 0xb2, 0x91, 0x5b, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xfb, 0xda, 0x7b, 0x07, 0x2b, 0x98, 0xbe, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x54, 0x19, 0x28, 0x6c, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xba, 0x66, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x2f, 0x84, 0xc2, 0x41, 0xcb, 0x46, 0x6e, 0x6b, 0xd0, 0xc0, 0xc8, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xdc, 0x03, 0x85, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x1a, 0x41, 0x61, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x36, 0xee, 0xa3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x9e, 0xa0, 0x70, 0xd0, 0x38, 0x7a, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xba, 0x17, 0x14, 0x0e, 0x1a, 0x38, 0x9b, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xc7, 0x0d, 0x0a, 0x07, 0x6d, 0xa4, 0x17, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xe7, 0x41, 0xe1, 0xa0, 0x65, 0xfd, 0xb8, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xf8, 0xdf, 0x3b, 0x58, 0x13, 0x74, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x4d, 0x42, 0x61, 0x83, 0x82, 0x34, 0x76, 0x83, 0xe5, 0xbd, 0xa1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x18, 0x9c, 0x50, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x3a, 0x29, 0x14, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x68, 0xe3, 0x3e, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xb7, 0x15, 0x0a, 0x07, 0x8d, 0xa3, 0x47, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xf4, 0x42, 0xe1, 0xa0, 0x81, 0xb3, 0xa9, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x98, 0xa1, 0xb0, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xf3, 0xa6, 0x5d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x38, 0xd5, 0x50, 0x38, 0x68, 0x28, 0xb5, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x89, 0x1c, 0x0a, 0x07, 0xad, 0x7c, 0xc8, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xf8, 0x0e, 0x85, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x14, 0x7c, 0x28, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x1f, 0x20, 0x0a, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x34, 0x46, 0x2b, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x9c, 0x10, 0x85, 0x83, 0xc6, 0xd1, 0xa3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x31, 0xa2, 0x70, 0xb0, 0x82, 0x37, 0xb4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xac, 0x93, 0x28, 0x1c, 0x14, 0x39, 0xad, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x08, 0x32, 0x51, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x75, 0xcd, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xd1, 0x13, 0x85, 0x83, 0x96, 0x8d, 0xdc, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x43, 0x8a, 0xc2, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0xa2, 0xa2, 0xb0, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xeb, 0x6a, 0x52, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x18, 0x5a, 0x51, 0x38, 0x68, 0x1c, 0x3d, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x31, 0x2d, 0x0a, 0x07, 0xcb, 0x33, 0x90, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xc0, 0x8b, 0xc2, 0xc1, 0x0a, 0xde, 0xd0, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0xa2, 0xf8, 0x0e, 0x16, 0x69, 0x9d, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x38, 0x86, 0x51, 0x38, 0x58, 0x9e, 0x81, 0xdc, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0x4d, 0x64, 0xf1, 0x1d, 0xb4, 0x44, 0xf1, 0x77, 0xd0, 0x70, 0xcc, 0xdf, 0xe1, 0x14, 0x3b, 0x68, 0xaf, 0xf4, 0x6f, 0x83, 0xa6, 0x4f, 0x01, 0xd7, 0xa0, 0x41, 0x5b, 0xc0, 0x35, 0x68, 0x92, 0x19, 0x70, 0x83, 0xa6, 0xab, 0x01, 0x17, 0xf8, 0xba, 0x79, 0xc3, 0xf3, 0x24, 0x1b, 0x34, 0x8a, 0x22, 0xb8, 0x41, 0x29, 0x21, 0xbe, 0x41, 0x2b, 0x30, 0x82, 0x1b, 0x94, 0x65, 0xd8, 0x1b, 0xb4, 0xe6, 0x28, 0x38, 0xcb, 0x6c, 0xd0, 0x7a, 0xa4, 0xe0, 0x06, 0xad, 0xd6, 0x0d, 0x6e, 0xd0, 0x58, 0xa0, 0xe1, 0xac, 0x41, 0xdb, 0xd6, 0x86, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x12, 0x90, 0x14, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x76, 0x1b, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x17, 0x37, 0xdc, 0xf0, 0xe7, 0xd2, 0x06, 0x43, 0x61, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0xd2, 0x0d, 0x0f, 0x1a, 0xb0, 0x14, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe6, 0xdd, 0x0d, 0x37, 0xfc, 0xb9, 0xb4, 0x41, 0x3b, 0xf2, 0x86, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x58, 0x6f, 0x78, 0x10, 0xa6, 0x63, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb8, 0x4b, 0x52, 0xd8, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xe1, 0x6f, 0x78, 0x70, 0x26, 0x18, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0xa7, 0xa4, 0xb0, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe1, 0xe0, 0x70, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x22, 0xc3, 0xe1, 0x41, 0xe3, 0x0e, 0x87, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xfa, 0xc4, 0xe1, 0x06, 0x05, 0xc1, 0xec, 0x06, 0xed, 0x1e, 0x0b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xbb, 0x1a, 0x87, 0x07, 0xcd, 0xa9, 0x0b, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x1a, 0xc8, 0xe1, 0x41, 0xdb, 0x22, 0x87, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xe4, 0xc9, 0xe1, 0x06, 0x4b, 0xea, 0x97, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x8d, 0x96, 0xc3, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x93, 0x32, 0x87, 0x07, 0x8d, 0xd3, 0x1c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0x3a, 0x87, 0x07, 0x2d, 0xf2, 0x1c, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xdb, 0x40, 0x87, 0x1b, 0x2c, 0xa9, 0x5f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0x8c, 0x0e, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x2f, 0x1d, 0x1e, 0xb4, 0xe2, 0x74, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x4c, 0x1d, 0x1e, 0x1c, 0x59, 0xf2, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x51, 0xac, 0xc3, 0x0d, 0x4e, 0xec, 0x37, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x86, 0xd7, 0xe1, 0xc1, 0xd9, 0xd0, 0x65, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0xc7, 0x0e, 0x37, 0x28, 0xed, 0x2d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x85, 0xb4, 0xc3, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xee, 0x46, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xbe, 0x1d, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x42, 0xdd, 0xe1, 0x41, 0x89, 0xf8, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xea, 0x1d, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x00, 0x3c, 0x3c, 0x28, 0xb3, 0x74, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd9, 0xc2, 0xc3, 0x83, 0x30, 0x1d, 0xab, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x5a, 0x3c, 0xdc, 0xf0, 0x15, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x42, 0x1e, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xaf, 0x3c, 0xdc, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb9, 0xcd, 0xc3, 0x83, 0xb2, 0x09, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x08, 0x3d, 0x3c, 0x38, 0x13, 0x8c, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa3, 0xa6, 0x87, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0xed, 0x1e, 0x0b, 0xae, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xb4, 0x1e, 0x1e, 0xac, 0x77, 0x67, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x61, 0xd9, 0xc3, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xda, 0x3d, 0x16, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe9, 0xdc, 0xc3, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x53, 0xbf, 0x87, 0x1b, 0x14, 0x93, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x3c, 0xf1, 0xe1, 0xe1, 0x87, 0x9a, 0x83, 0xc6, 0x7a, 0x0e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb9, 0xe5, 0xc3, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xeb, 0xd0, 0x87, 0x07, 0x8d, 0xbe, 0x14, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x9b, 0xd6, 0x87, 0x07, 0x49, 0x69, 0xc1, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x10, 0xf7, 0xe1, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x1c, 0x7e, 0x78, 0xd0, 0x6a, 0x52, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x9d, 0x1f, 0x6e, 0xf8, 0x0a, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0xd9, 0x0f, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xc8, 0x1f, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xec, 0xfd, 0xe1, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x3b, 0xfd, 0x87, 0x07, 0x8d, 0x4e, 0x09, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0x02, 0x88, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x10, 0x10, 0x0f, 0x96, 0xd8, 0x6f, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0x0d, 0x88, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0x26, 0x10, 0x37, 0x28, 0x26, 0x31, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x91, 0x0c, 0xc4, 0xc3, 0x0f, 0x35, 0x07, 0x2d, 0x71, 0x20, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0x20, 0x88, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x4b, 0x10, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0xad, 0x20, 0x1e, 0x34, 0xfa, 0x52, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0xc4, 0x20, 0x1e, 0x24, 0xa5, 0x05, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xdb, 0x20, 0x1e, 0x14, 0x14, 0x99, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x1e, 0x0f, 0xe2, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x8d, 0xf5, 0x1c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xf0, 0x10, 0xe2, 0x41, 0x33, 0x46, 0x88, 0xd5, 0x6a, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xa8, 0x12, 0xe2, 0x41, 0xdb, 0x38, 0x82, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x03, 0x85, 0xb8, 0x41, 0x61, 0xa8, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x57, 0x21, 0x1e, 0x14, 0x14, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xb4, 0x85, 0xb8, 0xc1, 0x39, 0x7f, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x05, 0x43, 0x3c, 0x58, 0xd5, 0x20, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x99, 0x21, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x5e, 0x43, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x15, 0x87, 0x78, 0xb0, 0x3a, 0xac, 0x6d, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xb7, 0x43, 0x3c, 0x28, 0x28, 0x32, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0xf9, 0x10, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x08, 0x22, 0x1e, 0xac, 0x0e, 0x6b, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0x0f, 0x11, 0x0f, 0x0a, 0x8a, 0xcc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb5, 0x46, 0xc4, 0x83, 0x82, 0x22, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x98, 0x44, 0xdc, 0xf0, 0x15, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x60, 0x22, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xec, 0x44, 0xdc, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x95, 0x51, 0xc4, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x51, 0x11, 0x0f, 0xce, 0x04, 0xa3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x94, 0x2b, 0xe2, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x8d, 0xf5, 0x1c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0xb4, 0x88, 0x07, 0x05, 0x45, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0xe9, 0x22, 0x6e, 0x50, 0x10, 0xcc, 0x6e, 0xd0, 0x58, 0xcf, 0xe1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x0f, 0x8c, 0x78, 0x10, 0x9e, 0xaa, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x67, 0x8c, 0xb8, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x2f, 0x23, 0x6e, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x83, 0xd1, 0x88, 0x87, 0x1f, 0x6a, 0x0e, 0xda, 0xa4, 0x46, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x35, 0x6c, 0xc4, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb3, 0xdd, 0x88, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0xc6, 0x11, 0x0f, 0x4f, 0xdc, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x8b, 0xe8, 0x88, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xdc, 0x11, 0x0f, 0x0a, 0xa2, 0xe5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x73, 0x1e, 0xf1, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0xf2, 0x11, 0x0f, 0x9a, 0xdc, 0x47, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xfc, 0x1f, 0x71, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xc6, 0x7a, 0x0e, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe4, 0x20, 0xf1, 0xa0, 0x19, 0x23, 0xc4, 0x5a, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x68, 0x48, 0x3c, 0x68, 0x6f, 0x47, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x25, 0x12, 0x37, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x60, 0x24, 0x6e, 0xf8, 0xdc, 0x65, 0x83, 0xf6, 0xa7, 0xfc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd4, 0x23, 0x71, 0x83, 0xf3, 0x60, 0xc7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x90, 0x24, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x4d, 0x49, 0x3c, 0x68, 0x80, 0x25, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x82, 0x49, 0x3c, 0x68, 0x56, 0x26, 0xb1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xb8, 0x49, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xc4, 0x93, 0xb8, 0xe1, 0x73, 0x97, 0x0d, 0x5a, 0xfc, 0x49, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x69, 0xa1, 0xc4, 0x0d, 0x97, 0xd4, 0x06, 0xed, 0x76, 0xf9, 0xad, 0x41, 0x03, 0x23, 0x53, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xa5, 0x94, 0x78, 0xd0, 0x22, 0xcf, 0x61, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x00, 0x95, 0xb8, 0xe1, 0x13, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xaa, 0x2a, 0x71, 0xc3, 0xe7, 0x2e, 0x1b, 0xb4, 0x89, 0x95, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0x5b, 0x89, 0x1b, 0xac, 0x91, 0x6a, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xc3, 0x12, 0x0f, 0xce, 0x04, 0xa3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x71, 0x96, 0xb8, 0xc1, 0x82, 0x90, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x9b, 0x2d, 0xf1, 0xa0, 0x9d, 0xb7, 0xc4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x9b, 0x4b, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x90, 0x97, 0x78, 0xb0, 0x80, 0xfe, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xf5, 0x4b, 0x3c, 0x08, 0x58, 0xd6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x8a, 0x30, 0xf1, 0x60, 0x59, 0x00, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xa1, 0x98, 0x78, 0x78, 0x4c, 0xa6, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x7c, 0x4c, 0xdc, 0x60, 0x51, 0x79, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x51, 0x99, 0x78, 0x50, 0x50, 0x64, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa3, 0x9a, 0x89, 0x07, 0x0b, 0xda, 0xd7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x25, 0xd0, 0xc4, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xc3, 0xa5, 0x89, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xb4, 0x9a, 0x78, 0x50, 0x50, 0x64, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xd3, 0xb0, 0x89, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x65, 0x9b, 0x78, 0x50, 0x50, 0x64, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0xbb, 0x89, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0x82, 0x13, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x1a, 0x27, 0x1e, 0x9e, 0xb8, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0x98, 0x13, 0x0f, 0x96, 0x45, 0xd2, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xbb, 0xd1, 0x89, 0x07, 0x2d, 0x13, 0x0f, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x73, 0xd7, 0x89, 0x07, 0xab, 0xc3, 0xda, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x91, 0xee, 0xc4, 0x83, 0x82, 0x22, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x59, 0x3c, 0xf1, 0xa0, 0x99, 0xf2, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x30, 0x3d, 0xf1, 0xa0, 0xa0, 0xc8, 0x6c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe9, 0x3d, 0xf1, 0xa0, 0x99, 0x1f, 0xc1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xa7, 0x4f, 0xdc, 0xa0, 0x30, 0x54, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe6, 0xf4, 0x13, 0x0f, 0x0a, 0x8a, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xff, 0x4f, 0xdc, 0xe0, 0x9c, 0xbf, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x15, 0x28, 0x1e, 0xac, 0x6a, 0x10, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x16, 0x14, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x42, 0x28, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xb0, 0x50, 0x3c, 0x58, 0xec, 0x73, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x6e, 0x28, 0x1e, 0x14, 0x14, 0x99, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x43, 0x21, 0x8a, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0x4d, 0x14, 0x0f, 0x16, 0x45, 0xd3, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x73, 0x2c, 0x8a, 0x07, 0xcb, 0x2e, 0xe1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x11, 0x19, 0xc5, 0x83, 0x82, 0x22, 0xb3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xf9, 0x46, 0x71, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x54, 0x8f, 0xe2, 0xc1, 0xb2, 0x4b, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x61, 0x48, 0xf1, 0x60, 0x8d, 0x0f, 0xed, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x8c, 0xa4, 0x78, 0x50, 0x50, 0x64, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x3a, 0x29, 0x6e, 0xf8, 0x0a, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0xa7, 0x14, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x64, 0x29, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xaa, 0x97, 0xe2, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0x64, 0x8a, 0x07, 0x67, 0x82, 0xd1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x3a, 0x4d, 0x71, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xc6, 0x7a, 0x0e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x31, 0x38, 0xc5, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0xeb, 0x14, 0x37, 0x28, 0x08, 0x66, 0x37, 0x68, 0xac, 0xe7, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xe3, 0x53, 0x3c, 0x08, 0x4f, 0xd5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x0f, 0x54, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x73, 0xa8, 0xb8, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x97, 0x51, 0xf1, 0xf0, 0xc4, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x21, 0xa9, 0xb8, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xf3, 0x52, 0xf1, 0x60, 0x19, 0xf6, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xd4, 0xa9, 0xb8, 0xc1, 0x1a, 0xa9, 0xa6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x62, 0x54, 0xf1, 0xf0, 0x43, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xa1, 0x2a, 0x1e, 0x34, 0xb9, 0x8f, 0x58, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x92, 0xab, 0xe2, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x8d, 0xf5, 0x1c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x64, 0xad, 0xe2, 0x41, 0x33, 0x46, 0x88, 0xb5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xb8, 0xab, 0x78, 0xd0, 0x74, 0x90, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x04, 0x2b, 0x6e, 0x50, 0x18, 0xaa, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb3, 0xc6, 0x8a, 0x07, 0x05, 0x45, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x30, 0x2b, 0x6e, 0x70, 0xce, 0x5f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0xa3, 0x15, 0x0f, 0x56, 0x35, 0x08, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x4b, 0xd7, 0x8a, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0xb9, 0x15, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x89, 0x2b, 0x1e, 0x2c, 0xf6, 0xb9, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0xcf, 0x15, 0x0f, 0x0a, 0x8a, 0xcc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc1, 0x76, 0xc5, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x03, 0xf3, 0x8a, 0x07, 0x8b, 0xa2, 0x69, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x59, 0x7c, 0xc5, 0x83, 0x45, 0xd1, 0xb4, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x98, 0xbf, 0xe2, 0x41, 0x41, 0x91, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x40, 0xb0, 0xb8, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x32, 0x61, 0xf1, 0x60, 0x8d, 0x0f, 0xed, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xf4, 0xb0, 0x78, 0xb0, 0xc6, 0x87, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xa8, 0x58, 0x3c, 0x28, 0x28, 0x32, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0x35, 0x16, 0x37, 0x7c, 0x85, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xfb, 0x1f, 0x8b, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x4a, 0x16, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x5d, 0x65, 0xf1, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x39, 0x98, 0xc5, 0x83, 0x33, 0xc1, 0x68, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x61, 0xb3, 0xb8, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x63, 0x3d, 0x87, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x28, 0xcf, 0xe2, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0x42, 0x8b, 0x1b, 0x14, 0x04, 0xb3, 0x1b, 0x34, 0xd6, 0x73, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x22, 0x2d, 0x1e, 0x84, 0xa7, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x38, 0x2d, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x9b, 0x5a, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x8f, 0xb5, 0x78, 0x70, 0x36, 0x74, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0xbd, 0x16, 0x37, 0x5c, 0x52, 0x1b, 0x1c, 0xf6, 0x3b, 0xd6, 0xa0, 0xdd, 0x63, 0xc1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x30, 0x5b, 0x3c, 0x68, 0xd8, 0x56, 0x70, 0x0d, 0x1a, 0xeb, 0x39, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x75, 0xb6, 0xc5, 0x83, 0x26, 0xf7, 0x11, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x96, 0x5b, 0xdc, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xb1, 0x9e, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xd0, 0x5b, 0x3c, 0x68, 0xc6, 0x08, 0xb1, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0x00, 0x17, 0x0f, 0x5a, 0x24, 0x12, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd5, 0xc2, 0xc5, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x13, 0x8b, 0x8b, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x09, 0xb9, 0x78, 0x78, 0xe2, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xaf, 0x5c, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xb8, 0xb9, 0x78, 0xd0, 0x78, 0xe7, 0xe2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x23, 0xba, 0xb8, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xf7, 0x74, 0xf1, 0x20, 0x01, 0x76, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x6b, 0x5d, 0x3c, 0x68, 0x91, 0xe7, 0xb0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x65, 0x76, 0xf1, 0x60, 0x41, 0xdc, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x8e, 0xbb, 0x78, 0xd0, 0xd6, 0xee, 0x62, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0xfc, 0x2e, 0x1e, 0xac, 0x17, 0x69, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x65, 0xe2, 0xc5, 0x83, 0x82, 0x22, 0x73, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x49, 0x79, 0x71, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xf0, 0xf3, 0xe2, 0x41, 0x2b, 0x49, 0x82, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x5a, 0xf5, 0xe2, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0xda, 0x8b, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x1c, 0xf8, 0xe2, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x61, 0xbe, 0x78, 0xf8, 0xa1, 0xe6, 0xa0, 0xb1, 0x9e, 0xc3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x90, 0x7d, 0xf1, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xfd, 0xf8, 0xc5, 0x0d, 0xce, 0xf9, 0x4b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xdc, 0xfd, 0xe2, 0x41, 0x41, 0x91, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0xf3, 0x2f, 0x1e, 0x9e, 0xb8, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x25, 0x01, 0xc6, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x93, 0x07, 0x8c, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0x1a, 0x18, 0x0f, 0x16, 0xec, 0xa0, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xc3, 0x12, 0x8c, 0x07, 0x8d, 0xd6, 0x0b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x7b, 0x18, 0x8c, 0x1b, 0xac, 0x10, 0x6a, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0x3c, 0x18, 0x0f, 0xd6, 0x15, 0x8c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x03, 0x24, 0x8c, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0x53, 0x18, 0x0f, 0x96, 0x55, 0x82, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x53, 0x2f, 0x8c, 0x07, 0xcb, 0x91, 0x85, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x89, 0x1a, 0xc6, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa3, 0x3a, 0x8c, 0x07, 0x0b, 0x15, 0x43, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x31, 0x20, 0xc6, 0x83, 0x85, 0x84, 0xa1, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x19, 0x31, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x5e, 0x62, 0x3c, 0x58, 0xa8, 0x18, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x46, 0x31, 0x1e, 0xac, 0x7a, 0x0f, 0xad, 0x36, 0x38, 0x39, 0xc8, 0x6d, 0xf8, 0x72, 0x72, 0x0d, 0x4a, 0x09, 0xf1, 0x8d, 0xe7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xb0, 0xc5, 0xb8, 0x41, 0x59, 0xf2, 0xbe, 0xc1, 0x1a, 0x8a, 0xbc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x38, 0x8c, 0xf1, 0x60, 0xe1, 0xe9, 0xf9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x77, 0xc6, 0xb8, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x9f, 0x8d, 0xf1, 0x20, 0x29, 0x2d, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x95, 0x63, 0x3c, 0x68, 0xb4, 0x5e, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xc3, 0x63, 0x3c, 0x68, 0x91, 0xe7, 0xb0, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0xfc, 0x18, 0x0f, 0x52, 0x06, 0x83, 0x37, 0x28, 0x25, 0xc4, 0x37, 0x9e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x5a, 0x21, 0xe3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x6b, 0x28, 0xf2, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x15, 0x46, 0xc6, 0x83, 0x85, 0xa7, 0xe7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x76, 0x24, 0xe3, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb1, 0x4b, 0xc6, 0x83, 0xa4, 0xb4, 0xe0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa1, 0x93, 0xf1, 0x20, 0x11, 0x2e, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x15, 0x65, 0x3c, 0x68, 0x91, 0xe7, 0xb0, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0x51, 0x19, 0x0f, 0x4e, 0x3f, 0xae, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0xcf, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xf7, 0x95, 0x71, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x4e, 0x2d, 0xe3, 0x41, 0xe3, 0x9d, 0x8b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xbc, 0x2e, 0xe3, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x3d, 0x60, 0xc6, 0x83, 0x82, 0x68, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x30, 0x66, 0x3c, 0x28, 0x2a, 0xc5, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd5, 0x65, 0xc6, 0x83, 0x16, 0x79, 0x0e, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe6, 0xa2, 0x19, 0x0f, 0x16, 0x55, 0xc0, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0xd7, 0x8c, 0x07, 0x05, 0x45, 0x66, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xfb, 0xdc, 0x8c, 0x07, 0xeb, 0x23, 0xd2, 0x37, 0x28, 0x25, 0xc4, 0x37, 0x9e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x04, 0x39, 0xe3, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc9, 0x74, 0xc6, 0x83, 0xf5, 0xd2, 0x6f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xd0, 0x3b, 0xe3, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x4f, 0xcf, 0xb8, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x4e, 0x9f, 0xf1, 0xf0, 0xe0, 0xcd, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0xff, 0x33, 0x1e, 0xb4, 0xc8, 0x73, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x16, 0x34, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x58, 0x68, 0x3c, 0x28, 0x88, 0x96, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x61, 0x88, 0xc6, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xb3, 0x68, 0x3c, 0x68, 0x91, 0xe7, 0xb0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xe1, 0x68, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x1c, 0xd2, 0x78, 0xb0, 0xf6, 0x9c, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x3c, 0x69, 0x3c, 0x28, 0x28, 0x32, 0xab, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb5, 0x96, 0xc6, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0x32, 0x8d, 0x07, 0xab, 0x91, 0xb8, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x41, 0x9c, 0xc6, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x7c, 0x1a, 0x37, 0x3c, 0x4f, 0xb2, 0x41, 0x33, 0x41, 0x8d, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0x96, 0x1a, 0x0f, 0x0a, 0x8a, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x11, 0xaa, 0x71, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x80, 0x55, 0xe3, 0x41, 0x03, 0x2c, 0x89, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xea, 0x56, 0xe3, 0xc1, 0x91, 0x25, 0xaf, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0xc2, 0x1a, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x9b, 0x35, 0x1e, 0x2c, 0x0d, 0xe3, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0xd9, 0x1a, 0x0f, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x90, 0x6b, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x78, 0xd7, 0xb8, 0xe1, 0x73, 0x97, 0x0d, 0x5a, 0x4c, 0xec, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x05, 0xbf, 0xc6, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xda, 0x3d, 0x16, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x91, 0xc2, 0xc6, 0x83, 0xd6, 0xf3, 0x07, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x6d, 0xc5, 0xc6, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x9a, 0xd6, 0xec, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0x22, 0x1b, 0x0f, 0x0a, 0x8a, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xb7, 0x6c, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xc2, 0xd9, 0x78, 0x50, 0x50, 0x64, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb3, 0xa1, 0x8d, 0x07, 0x0b, 0xda, 0xd7, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xa9, 0xd3, 0xc6, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xd3, 0xac, 0x8d, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x64, 0x1b, 0x0f, 0x56, 0x9e, 0xd2, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x03, 0xb8, 0x8d, 0x07, 0x05, 0x45, 0x66, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x6a, 0x6f, 0xe3, 0x41, 0x41, 0x91, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x0d, 0x37, 0x1e, 0x14, 0x14, 0x99, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x36, 0x72, 0xe3, 0x41, 0x41, 0x91, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xe8, 0xdc, 0xb8, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x82, 0xba, 0xf1, 0xf0, 0xc4, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x99, 0xdd, 0xb8, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe4, 0xbb, 0xf1, 0x60, 0x19, 0xf6, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x4e, 0xde, 0x78, 0xd0, 0x68, 0xbd, 0x60, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xcb, 0xea, 0x8d, 0x07, 0xed, 0xb4, 0x37, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xeb, 0xf1, 0x8d, 0x07, 0x05, 0x45, 0x66, 0xab, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb3, 0xf7, 0x8d, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0xfa, 0x1b, 0x0f, 0xda, 0xd7, 0x12, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x05, 0x1c, 0x0f, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x42, 0x70, 0xdc, 0xf0, 0x41, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xdb, 0xe0, 0xb8, 0xe1, 0xdf, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x66, 0xc2, 0xf1, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x55, 0x0c, 0xc7, 0x83, 0x16, 0x79, 0x0e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x2d, 0x0f, 0xc7, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xd3, 0x23, 0x8e, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x95, 0xe2, 0x78, 0x78, 0xe2, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x76, 0x71, 0x3c, 0x58, 0xb7, 0x0e, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xd1, 0x38, 0x1e, 0x14, 0x14, 0x99, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x82, 0x8e, 0xe3, 0x06, 0x47, 0x1b, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xf0, 0xc7, 0x71, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x55, 0xcc, 0xa8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x90, 0x91, 0xe3, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xbb, 0x4b, 0x8e, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0xa2, 0x1c, 0x0f, 0x0a, 0x8a, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd4, 0xca, 0xf1, 0x60, 0x55, 0x83, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xc4, 0xe5, 0xb8, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x3a, 0xcc, 0x71, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xd4, 0x99, 0xe3, 0xc1, 0x62, 0x9f, 0xbb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa0, 0xcd, 0xf1, 0xa0, 0xa0, 0xc8, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x95, 0x73, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x83, 0xe7, 0x78, 0xb0, 0x6e, 0x1d, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xef, 0x73, 0x3c, 0x58, 0x3a, 0x41, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x0e, 0x3a, 0x1e, 0x14, 0x14, 0x99, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x63, 0x89, 0x8e, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe6, 0x1d, 0x1d, 0x0f, 0x16, 0x69, 0xce, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb3, 0x94, 0x8e, 0x07, 0x05, 0x45, 0x66, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x7b, 0x9a, 0x8e, 0x07, 0xad, 0x73, 0x3a, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x93, 0xa1, 0x8e, 0x1b, 0x3e, 0x77, 0xd9, 0x60, 0x1d, 0x33, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x9f, 0x3a, 0x6e, 0xf8, 0x0a, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0x5a, 0x1d, 0x37, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0xc9, 0x3a, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x04, 0xae, 0xe3, 0x41, 0xd9, 0x84, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0xf6, 0x3a, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xd2, 0xb0, 0xe3, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xd3, 0xc8, 0x8e, 0x07, 0x67, 0x82, 0xd1, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x41, 0x67, 0xc7, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xcb, 0xd3, 0x8e, 0x1b, 0x14, 0x93, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x5a, 0xb6, 0xe3, 0xe1, 0x87, 0x9a, 0x83, 0xc6, 0x7a, 0x0e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xed, 0x6f, 0xc7, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xaf, 0xdc, 0x71, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xbc, 0xba, 0xe3, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x6b, 0xf0, 0x8e, 0x07, 0x2d, 0xf2, 0x1c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x23, 0xf6, 0x8e, 0x07, 0x05, 0x45, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0xee, 0x3b, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x09, 0x78, 0x3c, 0x28, 0x28, 0x32, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x61, 0x83, 0xc7, 0x83, 0x82, 0x22, 0xb3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x62, 0x78, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x1a, 0xf1, 0xb8, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe4, 0xe2, 0x71, 0xc3, 0xe7, 0x2e, 0x1b, 0x2c, 0xe4, 0x86, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd5, 0x8e, 0xc7, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x35, 0x68, 0xf7, 0x58, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0x4a, 0x1e, 0x0f, 0x5a, 0xcf, 0x1f, 0x5c, 0x83, 0xc6, 0x7a, 0x0e, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x7f, 0xe5, 0xf1, 0xa0, 0xc9, 0x7d, 0xc4, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe9, 0x98, 0xc7, 0x0d, 0x9f, 0xbb, 0x6c, 0xd0, 0x4a, 0xcd, 0xe3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xe1, 0x3c, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0x58, 0xcf, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xfe, 0x3c, 0x1e, 0x34, 0x63, 0x84, 0x58, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x57, 0xf4, 0xb8, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x2b, 0x3d, 0x6e, 0x78, 0x84, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x83, 0x7a, 0xdc, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xac, 0x1e, 0x0f, 0x8a, 0x54, 0xcc, 0x83, 0x65, 0xdc, 0xf0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x28, 0xd7, 0xe3, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x25, 0xf6, 0x78, 0x50, 0xa4, 0x62, 0x1e, 0x34, 0x5a, 0xf6, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x92, 0xf6, 0x78, 0x50, 0x50, 0x64, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xa8, 0xdb, 0xe3, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xf5, 0xb9, 0xc7, 0x83, 0x82, 0x22, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xcb, 0x7b, 0x3c, 0x68, 0x78, 0xef, 0x71, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x03, 0x7c, 0x3c, 0x68, 0x59, 0xf0, 0xb1, 0xd5, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xcd, 0xc3, 0xc7, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x13, 0x8d, 0x8f, 0x07, 0x4b, 0xf2, 0xc1, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x59, 0xc9, 0xc7, 0x83, 0x30, 0x1d, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0x30, 0x1f, 0x37, 0x7c, 0x85, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x83, 0x9d, 0x8f, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0x45, 0x1f, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x0e, 0xf5, 0xf1, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x5c, 0x1f, 0x0f, 0xce, 0x04, 0xa3, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xea, 0xec, 0xe3, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xad, 0x87, 0x0b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x3b, 0xba, 0x8f, 0x07, 0x05, 0x45, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xfe, 0x3e, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x27, 0x7e, 0xdc, 0xf0, 0xb9, 0xcb, 0x06, 0x2d, 0x26, 0xf6, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xe2, 0xf2, 0xe3, 0x86, 0x4b, 0x6a, 0x83, 0xc3, 0x7e, 0xc7, 0x1a, 0xb4, 0x7b, 0x2c, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0xd2, 0x8f, 0x07, 0x0d, 0x5c, 0x10, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb3, 0xd8, 0x8f, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x34, 0xad, 0xd9, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x7d, 0x3f, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0x7a, 0xb8, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x99, 0x3f, 0x1e, 0xb4, 0xc3, 0x41, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0xb0, 0x3f, 0x1e, 0xb4, 0x9f, 0xd9, 0xb7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x1b, 0xff, 0xb8, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe6, 0xfe, 0xf1, 0xa0, 0x55, 0x35, 0xc1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x9b, 0xff, 0xf1, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x31, 0x01, 0xc8, 0x0d, 0x8e, 0x36, 0x7c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xfc, 0x01, 0xe4, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xab, 0x98, 0x51, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x59, 0x07, 0xc8, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0x28, 0x20, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x66, 0x40, 0x1e, 0x14, 0x14, 0x99, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xc4, 0x07, 0xe4, 0xc1, 0xaa, 0x06, 0xe1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x97, 0x04, 0x72, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x90, 0x0a, 0xe4, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe1, 0x17, 0xc8, 0x83, 0xc5, 0x3e, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x5c, 0x0d, 0xe4, 0x41, 0x41, 0x91, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xb1, 0x03, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x14, 0x08, 0xf2, 0x60, 0xe9, 0x04, 0xed, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x65, 0x04, 0x79, 0x50, 0x50, 0x64, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x4d, 0x30, 0x41, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x8d, 0x82, 0x3c, 0x58, 0xa4, 0x39, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x5d, 0x41, 0x1e, 0x14, 0x14, 0x99, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x74, 0x41, 0x1e, 0xb4, 0xce, 0xe9, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x8b, 0x41, 0x6e, 0xf8, 0xdc, 0x65, 0x83, 0x75, 0xcc, 0xa8, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x94, 0x06, 0xb9, 0xe1, 0x2b, 0x9c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x73, 0x83, 0xdc, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x3d, 0x07, 0xb9, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x73, 0x79, 0x90, 0x07, 0x65, 0x13, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xf0, 0x07, 0xb9, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xab, 0x84, 0x90, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x28, 0x42, 0x1e, 0x9c, 0x09, 0x46, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0x1f, 0x21, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x3d, 0x5c, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xb3, 0x84, 0x3c, 0x28, 0x28, 0x32, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x7d, 0x13, 0x72, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x4c, 0x28, 0xe4, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x6d, 0x0a, 0xb9, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x89, 0x15, 0xf2, 0x20, 0x4c, 0xc7, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe5, 0x58, 0xc8, 0x83, 0x10, 0x7c, 0xe8, 0xa0, 0xf5, 0x70, 0xc1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x0e, 0x17, 0x72, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x7c, 0x2f, 0xe4, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0x31, 0xb1, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0x89, 0x21, 0x37, 0x5c, 0x52, 0x1b, 0x1c, 0xf6, 0x3b, 0xd6, 0xa0, 0xdd, 0x63, 0xc1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x5f, 0x86, 0x3c, 0x68, 0xe0, 0x82, 0xb0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x8d, 0x86, 0xdc, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0x69, 0xcd, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x0b, 0x1b, 0xf2, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xf1, 0x6e, 0xc8, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x63, 0xe3, 0x90, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x8f, 0x0e, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xcf, 0x1d, 0xf2, 0xa0, 0x9d, 0xf6, 0xc6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x86, 0x1e, 0xf2, 0xa0, 0xa0, 0xc8, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xce, 0x87, 0xdc, 0xa0, 0x20, 0x98, 0xdd, 0xa0, 0xb1, 0x9e, 0xc3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x0d, 0x20, 0xf2, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xf1, 0x82, 0xc8, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0x0b, 0x91, 0x1b, 0x3e, 0x77, 0xd9, 0xa0, 0x39, 0x87, 0xc8, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x8d, 0x88, 0xdc, 0x70, 0x49, 0x6d, 0x70, 0xd8, 0xef, 0x58, 0x83, 0x76, 0x8f, 0x05, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x24, 0x23, 0xf2, 0xa0, 0x81, 0x0b, 0xc2, 0x35, 0x68, 0xac, 0xe7, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0x40, 0x22, 0x0f, 0x9a, 0xdc, 0x47, 0x6c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0x4b, 0x22, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x20, 0x25, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x63, 0x89, 0x3c, 0x28, 0x28, 0x32, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x3e, 0x26, 0x72, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xce, 0x4d, 0xe4, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0x50, 0x27, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0x7b, 0x22, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0x3d, 0x5c, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0x89, 0x22, 0x0f, 0xda, 0xe1, 0x20, 0x5c, 0x83, 0xc6, 0x7a, 0x0e, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x78, 0x29, 0xf2, 0xa0, 0x19, 0x23, 0xc4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x31, 0x2a, 0x72, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x86, 0xa9, 0x22, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x1d, 0xac, 0xc8, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x66, 0xbb, 0x22, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x8b, 0x45, 0x1e, 0x14, 0x14, 0x99, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x20, 0x5a, 0xe4, 0x41, 0xd3, 0x6a, 0x91, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xe0, 0x5b, 0xe4, 0x41, 0xe3, 0x71, 0x91, 0xad, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xda, 0x45, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xe1, 0x8b, 0x3c, 0x68, 0xef, 0x4b, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x0e, 0x8c, 0x3c, 0x08, 0xd3, 0xb1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xeb, 0x30, 0x72, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x67, 0x8c, 0xdc, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x25, 0x19, 0x79, 0xd0, 0x22, 0xcf, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x5f, 0x46, 0x1e, 0xb4, 0x9e, 0x3f, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x76, 0x46, 0x1e, 0x14, 0x14, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x32, 0x1a, 0xb9, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0xeb, 0xe1, 0x82, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x6e, 0x6a, 0xe4, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xa1, 0xd7, 0xc8, 0x83, 0x05, 0x3b, 0xe8, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x38, 0x6d, 0xe4, 0x41, 0xa3, 0xf5, 0x82, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xa4, 0x6e, 0xe4, 0x06, 0x2b, 0x84, 0x9a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x31, 0xe0, 0xc8, 0x83, 0x75, 0x05, 0xa3, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x84, 0x71, 0xe4, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xcd, 0xe5, 0xc8, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x56, 0x74, 0xe4, 0xc1, 0x72, 0x64, 0xe1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe3, 0x3a, 0x72, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x2a, 0x77, 0xe4, 0xc1, 0x42, 0xc5, 0xd0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x4d, 0x3c, 0xf2, 0x60, 0x21, 0x61, 0x68, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x4b, 0xe8, 0x91, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0xdb, 0x23, 0x0f, 0x16, 0x2a, 0x86, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa3, 0xf3, 0x91, 0x07, 0xab, 0xde, 0x43, 0xab, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xcc, 0x8f, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xec, 0x1f, 0xb9, 0xe1, 0x73, 0x97, 0x0d, 0x9a, 0x10, 0x90, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xad, 0x02, 0xc9, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xda, 0x3d, 0x16, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x39, 0x06, 0xc9, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xfb, 0x11, 0x92, 0x07, 0x8d, 0xbe, 0x14, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xb3, 0x17, 0x92, 0x07, 0x8d, 0xd6, 0x0b, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x76, 0x48, 0x6e, 0x50, 0xf0, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0x22, 0x92, 0x1b, 0x14, 0x93, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x24, 0x8a, 0xe4, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x05, 0x17, 0xc9, 0x83, 0x10, 0x7c, 0x58, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x67, 0x24, 0x0f, 0xce, 0x62, 0xa2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x4a, 0x8e, 0xe4, 0x41, 0x91, 0x8a, 0xd9, 0x41, 0x8b, 0x3c, 0x92, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xff, 0x23, 0xb9, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa7, 0x48, 0x72, 0x83, 0x62, 0x12, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x57, 0x92, 0xdc, 0x20, 0xd8, 0x4c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x39, 0x28, 0xc9, 0x83, 0xd3, 0xde, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x61, 0x25, 0x79, 0xb0, 0x3e, 0x22, 0xbd, 0x83, 0xd6, 0xc3, 0x05, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x71, 0x2e, 0xc9, 0x83, 0x66, 0xbe, 0x24, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x6a, 0x4c, 0x72, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x26, 0x9a, 0xe4, 0x41, 0x41, 0x91, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0xb8, 0x49, 0x1e, 0x9e, 0xb8, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xe7, 0x24, 0x0f, 0xd6, 0x4b, 0xbf, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0x79, 0x92, 0x07, 0x4d, 0xee, 0x49, 0xb6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x0e, 0x28, 0xb9, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xcb, 0x50, 0xf2, 0xa0, 0xad, 0x37, 0xc1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x80, 0x51, 0xf2, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc5, 0x48, 0xc9, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0x96, 0x92, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe6, 0x38, 0x25, 0x37, 0x28, 0x4b, 0xde, 0x37, 0x38, 0x5a, 0x6b, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x1b, 0xa3, 0x92, 0x07, 0x65, 0xd3, 0xfb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x8b, 0x2a, 0x79, 0xd0, 0x5c, 0x5b, 0x55, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x9e, 0xab, 0xe4, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x01, 0x5a, 0xc9, 0x83, 0x46, 0xeb, 0x05, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe1, 0x5c, 0xc9, 0x83, 0x16, 0x79, 0x0e, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xfd, 0x95, 0x3c, 0x28, 0x28, 0x32, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa8, 0x58, 0x72, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xa2, 0xb2, 0xe4, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0xba, 0x59, 0x72, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0xa2, 0x25, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x59, 0x4b, 0x6e, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xb8, 0x89, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x23, 0xdd, 0x92, 0x07, 0x65, 0x53, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x2b, 0x2e, 0x79, 0xd0, 0xcc, 0xbc, 0x60, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x20, 0xba, 0xe4, 0x41, 0xa3, 0xf5, 0x82, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x92, 0xbb, 0xe4, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x0d, 0xc6, 0x4b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xfb, 0xf4, 0x92, 0x1b, 0x2c, 0xa9, 0x5f, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0xf5, 0x25, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x00, 0x4c, 0x1e, 0x34, 0x29, 0x30, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x24, 0x4c, 0x1e, 0x34, 0x5a, 0x2f, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x3b, 0x4c, 0x1e, 0x84, 0xa7, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x51, 0x4c, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0x92, 0x5b, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x6d, 0x4c, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x07, 0x99, 0xdc, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x6c, 0x41, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0x4f, 0x26, 0x0f, 0xca, 0xa6, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa6, 0x65, 0xf2, 0xa0, 0xb9, 0xb6, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x7d, 0x99, 0xc9, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x83, 0x38, 0x93, 0x07, 0x8d, 0xd6, 0x0b, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x43, 0x3e, 0x93, 0x07, 0x2d, 0xf2, 0x1c, 0xd6, 0x1a, 0xb4, 0x7b, 0x2c, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x4b, 0x45, 0x93, 0x07, 0xed, 0x1e, 0x4d, 0xb6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xc8, 0x34, 0xb9, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x40, 0x6a, 0xf2, 0xa0, 0x0d, 0x3a, 0xc1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xf5, 0x6a, 0xf2, 0x20, 0x4c, 0xc7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x99, 0xae, 0xc9, 0x0d, 0x8e, 0x36, 0x7c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xb2, 0xd8, 0xe4, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xab, 0x98, 0x51, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc5, 0xb4, 0xc9, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xde, 0x26, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0xd1, 0x4d, 0x1e, 0x14, 0x14, 0x99, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x7a, 0xde, 0xe4, 0xc1, 0xaa, 0x06, 0xe1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xf2, 0x6f, 0x72, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x46, 0xe1, 0xe4, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x4d, 0xc5, 0xc9, 0x83, 0xc5, 0x3e, 0x77, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x12, 0xe4, 0xe4, 0x41, 0x41, 0x91, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x5f, 0x39, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x6f, 0x73, 0xf2, 0x60, 0x01, 0x43, 0xed, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x13, 0x3a, 0x79, 0x50, 0x50, 0x64, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x9b, 0x4e, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x63, 0x9d, 0x3c, 0x58, 0x8a, 0x33, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0xc8, 0x4e, 0x1e, 0x14, 0x14, 0x99, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0xe0, 0x4e, 0x1e, 0xb4, 0xce, 0xe9, 0xd8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0xf7, 0x4e, 0x6e, 0xf8, 0xdc, 0x65, 0x83, 0x75, 0xcc, 0xa8, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x41, 0x3c, 0xb9, 0xe1, 0x13, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x2c, 0x79, 0x72, 0xc3, 0xe7, 0x2e, 0x1b, 0x34, 0xca, 0x3c, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xeb, 0xcf, 0x93, 0x1b, 0x14, 0x82, 0xa9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x56, 0x3d, 0xb9, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0xda, 0x93, 0x07, 0x21, 0x65, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x81, 0x4f, 0x1e, 0x9c, 0x09, 0x46, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x05, 0xf3, 0xc9, 0x0d, 0x5f, 0xe1, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xd0, 0xfa, 0xe4, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x51, 0xf8, 0xc9, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xb1, 0x9f, 0x3c, 0x28, 0x9b, 0x30, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe9, 0xfd, 0xc9, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x0b, 0xa0, 0x3c, 0x08, 0x29, 0x93, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xdf, 0x80, 0xf2, 0xe0, 0x4c, 0x30, 0x5a, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xca, 0x40, 0xb9, 0xe1, 0x83, 0x9c, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x3e, 0x82, 0x72, 0xc3, 0xbf, 0x39, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xda, 0x05, 0xe5, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0x1c, 0x94, 0x07, 0x2d, 0xf2, 0x1c, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x93, 0x22, 0x94, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x50, 0x28, 0x0f, 0x0a, 0x8a, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xb2, 0x85, 0xf2, 0xa0, 0xf1, 0x17, 0xca, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x86, 0x86, 0x72, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xcd, 0xa1, 0xdc, 0xa0, 0x98, 0xc4, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0x7e, 0x28, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x13, 0x51, 0x6e, 0xf8, 0x73, 0x69, 0x70, 0x77, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0x95, 0x28, 0x0f, 0xc2, 0x74, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x80, 0xa2, 0xdc, 0xf0, 0xe7, 0xd2, 0xe0, 0xec, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x58, 0x51, 0x1e, 0x84, 0xe9, 0xd8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xb7, 0x45, 0xb9, 0xe1, 0xcf, 0xa5, 0xc1, 0xe5, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x0b, 0xa3, 0x3c, 0x08, 0xd3, 0xb1, 0x0e, 0x1a, 0xeb, 0x39, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0xcf, 0x28, 0x0f, 0x0a, 0x8a, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x6b, 0xa3, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x2b, 0x47, 0xb9, 0xe1, 0x73, 0x97, 0x0d, 0x8a, 0x42, 0xef, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xc9, 0xa3, 0xdc, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xb1, 0x9e, 0xc3, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x01, 0xa4, 0x3c, 0x68, 0x53, 0x90, 0xb2, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x3a, 0xa4, 0xdc, 0xa0, 0x84, 0xc7, 0xdc, 0xe0, 0x78, 0xfe, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x37, 0x52, 0x1e, 0x14, 0x14, 0x99, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x33, 0x49, 0xb9, 0xe1, 0x13, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x10, 0x93, 0x72, 0xc3, 0xe7, 0x2e, 0x1b, 0xb4, 0xbc, 0x49, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x13, 0x9f, 0x94, 0x1b, 0x2e, 0xa9, 0x0d, 0x0e, 0xfb, 0x1d, 0x6b, 0xd0, 0xee, 0xb1, 0xe0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x99, 0x52, 0x1e, 0xb4, 0x9e, 0x3f, 0xb8, 0x06, 0x8d, 0xf5, 0x1c, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x54, 0x2b, 0xe5, 0x41, 0xc3, 0xaf, 0x94, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x1c, 0x2d, 0xe5, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xad, 0xde, 0x52, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x23, 0xbb, 0x94, 0x07, 0x05, 0x45, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x02, 0x53, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xd0, 0x58, 0xcf, 0xe1, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x1e, 0x53, 0x1e, 0x34, 0x9f, 0x4c, 0xb9, 0x06, 0xed, 0xc2, 0x50, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xf0, 0x33, 0xe5, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xa5, 0x6a, 0xca, 0x83, 0x56, 0xaf, 0x29, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x2d, 0x6e, 0xca, 0x83, 0x86, 0xbd, 0x29, 0x6b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x71, 0x9c, 0x72, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x40, 0x3a, 0xe5, 0x41, 0x9b, 0x78, 0x82, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xaa, 0x3b, 0xe5, 0x41, 0x98, 0x8e, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0xf4, 0x94, 0x1b, 0x14, 0x04, 0xb3, 0x1b, 0x34, 0xd6, 0x73, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0xeb, 0x53, 0x6e, 0x50, 0xec, 0x68, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x93, 0x00, 0x95, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x0c, 0x2a, 0x0f, 0x0a, 0x8a, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x5c, 0xa8, 0x3c, 0x68, 0x91, 0xe7, 0x70, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x89, 0xa8, 0x3c, 0x28, 0x28, 0x32, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd8, 0xa2, 0x72, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x12, 0x47, 0xe5, 0x41, 0x41, 0x91, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x87, 0x54, 0x1e, 0x9e, 0xb8, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x4e, 0x2a, 0x0f, 0xd6, 0xad, 0xc3, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x13, 0x2d, 0x95, 0x07, 0x05, 0x45, 0x66, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x2b, 0x53, 0xb9, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0xe0, 0x54, 0x6e, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xed, 0xa9, 0x3c, 0x28, 0x28, 0x32, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x63, 0xa8, 0xf2, 0xa0, 0xc9, 0x7d, 0xc4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x19, 0xa9, 0xf2, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x21, 0xa7, 0xca, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x8b, 0x53, 0x95, 0x1b, 0x3e, 0x77, 0xd9, 0xa0, 0xc5, 0xc4, 0xbe, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xd0, 0xaa, 0xdc, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xdd, 0x63, 0xc1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x09, 0xab, 0x3c, 0x68, 0x3d, 0x7f, 0x70, 0x0d, 0x1a, 0xeb, 0x39, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x05, 0xb4, 0xca, 0x83, 0x66, 0x8c, 0x10, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe9, 0xb6, 0xca, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x9a, 0xd6, 0xec, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0xe8, 0x2a, 0x0f, 0x0a, 0x8a, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xce, 0xab, 0xdc, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xf2, 0x57, 0x79, 0x50, 0x50, 0x64, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xab, 0x84, 0x95, 0x07, 0xab, 0x1a, 0x84, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x25, 0xc5, 0xca, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xd3, 0x8f, 0x95, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x2a, 0x2b, 0x0f, 0x16, 0xfb, 0xdc, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x03, 0x9b, 0x95, 0x07, 0x05, 0x45, 0x66, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x2a, 0x68, 0xe5, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x19, 0xd3, 0xca, 0x83, 0xa5, 0x13, 0xb4, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xf8, 0x6a, 0xe5, 0x41, 0x41, 0x91, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x18, 0x5b, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xe3, 0xb6, 0xf2, 0x60, 0x91, 0xe6, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xcd, 0x5b, 0x79, 0x50, 0x50, 0x64, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x2a, 0x5c, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x06, 0xb9, 0xf2, 0xf0, 0xc4, 0xdd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xdb, 0x5c, 0x79, 0xb0, 0x6e, 0x1d, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x9b, 0xae, 0x3c, 0x28, 0x28, 0x32, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0xb2, 0x2b, 0x0f, 0xda, 0x69, 0x6f, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xe6, 0xbd, 0x2b, 0x0f, 0x0a, 0x8a, 0xcc, 0x56, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0xc9, 0x2b, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xa8, 0x57, 0x1e, 0x2c, 0x97, 0xf9, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0xdf, 0x2b, 0x0f, 0xc2, 0x74, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xaa, 0xaf, 0xdc, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xdd, 0x63, 0xc1, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xe3, 0xaf, 0x3c, 0x68, 0x3d, 0x7f, 0xb0, 0x0e, 0xda, 0xff, 0xaf, 0x3c, 0x9c, 0x62, 0x07, 0x4d, 0x40, 0x58, 0xd6, 0xac, 0x41, 0x73, 0x6f, 0x96, 0x1b, 0x34, 0x16, 0x67, 0xb9, 0x06, 0xcd, 0xd2, 0x59, 0x6e, 0x78, 0x9e, 0x64, 0x83, 0xd6, 0xed, 0x2c, 0x37, 0x7c, 0x62, 0xb3, 0x41, 0xab, 0x7f, 0x96, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x06, 0xed, 0x30, 0x5a, 0xae, 0x41, 0x9b, 0x96, 0x96, 0x1b, 0x34, 0x27, 0x6c, 0xb9, 0x41, 0x53, 0x01, 0xb1, 0x1b, 0xb4, 0x7e, 0x11, 0xbb, 0x41, 0x2b, 0x58, 0xb1, 0x6b, 0xd0, 0xf6, 0x66, 0xec, 0x1a, 0xb4, 0x62, 0x1b, 0xbb, 0x06, 0xad, 0x43, 0xc8, 0xae, 0x41, 0x93, 0x4e, 0xb2, 0xab, 0x41, 0x63, 0x31, 0x98, 0x1b, 0x9e, 0x27, 0xd9, 0xa0, 0xed, 0x41, 0xd9, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0x26, 0xa3, 0xec, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x41, 0xdb, 0x90, 0xb2, 0x6b, 0xd0, 0x22, 0xa8, 0xec, 0x1a, 0xb4, 0xe5, 0x2a, 0xbb, 0x06, 0xad, 0x24, 0xcb, 0x6e, 0xd0, 0x02, 0xb7, 0xec, 0x06, 0x4d, 0x96, 0xcf, 0xae, 0x41, 0x8b, 0xf1, 0xb3, 0x6b, 0xd0, 0x56, 0x00, 0xed, 0x06, 0xcd, 0x25, 0xd0, 0x6e, 0xd0, 0x60, 0x16, 0xed, 0x06, 0x6d, 0x9c, 0xd1, 0xae, 0x41, 0xe3, 0x80, 0xb4, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x46, 0x48, 0xbb, 0x41, 0xd1, 0x69, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x27, 0xd2, 0x1e, 0x2c, 0xab, 0x04, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0x1f, 0x69, 0x37, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x54, 0xd2, 0x6e, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0x35, 0x69, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x0e, 0x94, 0xf6, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xfd, 0x52, 0xda, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x5c, 0xa5, 0x3d, 0x38, 0xea, 0x8a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x3b, 0xb1, 0xb4, 0x07, 0xcd, 0x78, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0xb6, 0xb4, 0x07, 0xeb, 0xb5, 0x9e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x59, 0x5e, 0xda, 0x83, 0x85, 0x9b, 0xde, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x9c, 0x30, 0xed, 0xc1, 0x02, 0x0b, 0xe7, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x21, 0x64, 0xda, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x28, 0xa1, 0x63, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x6d, 0x67, 0xda, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x5b, 0xd4, 0xb4, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0xcd, 0x6b, 0xda, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xd9, 0xa6, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x51, 0x70, 0xda, 0x83, 0x90, 0x32, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0xcc, 0x69, 0x0f, 0x16, 0x6e, 0x7a, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0xaf, 0xd3, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0x76, 0xde, 0x69, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x58, 0x9e, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0xf0, 0x69, 0x0f, 0x42, 0xca, 0x64, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xef, 0xa7, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc5, 0x81, 0xda, 0x83, 0xd2, 0x9b, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x49, 0xa8, 0x3d, 0x58, 0xaf, 0xf5, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x3b, 0xd4, 0x1e, 0x2c, 0xb0, 0x70, 0xae, 0x0e, 0xc2, 0x74, 0x6c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xae, 0xa8, 0xdd, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0x36, 0x6a, 0x0f, 0x96, 0x4a, 0x12, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x0b, 0x21, 0xb5, 0x87, 0xa7, 0x75, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xcd, 0xa4, 0x76, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xf2, 0x4a, 0xed, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xa1, 0x98, 0xda, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x24, 0x4d, 0xed, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xdf, 0xd4, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x56, 0x4f, 0xed, 0xc1, 0x51, 0x57, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x17, 0xaa, 0x3d, 0x68, 0xc6, 0x0b, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x45, 0xaa, 0x3d, 0x58, 0xaf, 0xf5, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x39, 0xd5, 0x1e, 0x2c, 0xdc, 0xf4, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0xa8, 0x6a, 0x0f, 0x16, 0x58, 0x38, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x67, 0xd5, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0x45, 0x04, 0xb7, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x09, 0x56, 0xbb, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xbf, 0xac, 0x76, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0x79, 0x4d, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x93, 0x6c, 0xb5, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x21, 0x57, 0x7b, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xe6, 0x5d, 0xed, 0xc1, 0xc2, 0x4d, 0xef, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb1, 0xbe, 0xda, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xce, 0x3b, 0xed, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x10, 0xd6, 0x6e, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x64, 0x62, 0xed, 0x41, 0x48, 0x99, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0x8f, 0xb5, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x4d, 0x59, 0x7b, 0x50, 0x7a, 0xd3, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x83, 0x9a, 0xb5, 0x07, 0xeb, 0xb5, 0x9e, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x21, 0xd0, 0xda, 0x83, 0x05, 0x16, 0xce, 0x55, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x63, 0x5a, 0xbb, 0x41, 0x41, 0x1a, 0xbb, 0x06, 0x25, 0x74, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xcc, 0x5a, 0xbb, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x49, 0xb6, 0x76, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0x59, 0x5b, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xdb, 0xb8, 0xb5, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xe5, 0x5b, 0x7b, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xf8, 0x70, 0xed, 0xc1, 0xc2, 0x4d, 0xef, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd1, 0xe4, 0xda, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x6a, 0x20, 0x78, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0xa0, 0x6b, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xb8, 0xba, 0xf6, 0x20, 0xa4, 0x4c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xad, 0xed, 0xda, 0x83, 0x85, 0x9b, 0xde, 0x75, 0x10, 0xa6, 0x63, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x86, 0x78, 0xed, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x7c, 0x5e, 0x7b, 0x70, 0x4a, 0xc7, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0xda, 0x6b, 0x37, 0x28, 0x4b, 0xde, 0x37, 0x58, 0x04, 0x32, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xd0, 0xd7, 0x1e, 0x94, 0x4d, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x72, 0x7e, 0xed, 0x41, 0x3b, 0xfc, 0xb5, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x88, 0x80, 0xed, 0x86, 0x5f, 0x94, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc9, 0x03, 0xdb, 0x0d, 0x7f, 0x2e, 0x6d, 0xb8, 0xd3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xb9, 0xc1, 0xf6, 0x60, 0xe1, 0xa6, 0xf7, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x4d, 0xd8, 0x6e, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xc7, 0xb0, 0x3d, 0x28, 0x28, 0x32, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd1, 0xc3, 0xf6, 0xa0, 0x81, 0x10, 0xdb, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x31, 0xb1, 0xdd, 0xa0, 0x30, 0x54, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x76, 0x57, 0x6c, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0xc4, 0xd8, 0x6e, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xb6, 0xb1, 0xdd, 0xa0, 0x10, 0x4c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x2d, 0x1e, 0xdb, 0x83, 0x85, 0x9b, 0xde, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x1e, 0x64, 0x7b, 0xd0, 0x12, 0x91, 0xed, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x8f, 0x64, 0xbb, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd0, 0xc9, 0xf6, 0xe0, 0x44, 0xd0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x50, 0xd9, 0x1e, 0x2c, 0x2e, 0x09, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0xb3, 0x6c, 0x0f, 0xda, 0xe1, 0xb2, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xc3, 0x6c, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x9b, 0xd9, 0x1e, 0xb4, 0x44, 0x64, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xb2, 0xd9, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x91, 0xb3, 0x3d, 0x38, 0x11, 0xb4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xc3, 0x77, 0xb6, 0x07, 0x8b, 0x4b, 0x82, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb9, 0x3e, 0xdb, 0x83, 0x76, 0xb8, 0x6c, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0x06, 0x6d, 0x37, 0x7c, 0x85, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x9b, 0x88, 0xb6, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xb4, 0xbe, 0x68, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x3d, 0xda, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0xa7, 0xb4, 0xdd, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xa7, 0x69, 0x7b, 0xd0, 0x34, 0xa7, 0xed, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x18, 0x6a, 0x7b, 0xd0, 0xfa, 0xa8, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x2a, 0xaa, 0xed, 0x41, 0x1b, 0xab, 0xb6, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x18, 0xac, 0xed, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x0d, 0x93, 0xda, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x0b, 0xb7, 0xb6, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x26, 0x79, 0x6d, 0x0f, 0x5a, 0xb7, 0x24, 0x58, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x96, 0x84, 0x6d, 0x37, 0x68, 0x6c, 0x21, 0x62, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x90, 0x6d, 0x0f, 0xda, 0x52, 0xb6, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x16, 0x9e, 0x6d, 0x0f, 0x5a, 0x1f, 0xb5, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0xa9, 0x6d, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0x7d, 0xd1, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xd6, 0xb7, 0x6d, 0x0f, 0x5a, 0xf2, 0xb6, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0xc5, 0x6d, 0x37, 0x28, 0x3a, 0x8d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x41, 0x74, 0xdb, 0x83, 0xb6, 0xd5, 0x6d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb5, 0x77, 0xdb, 0x83, 0x96, 0xe3, 0x6d, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xc1, 0xde, 0x76, 0xc3, 0x57, 0x38, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xb5, 0x6f, 0xbb, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x17, 0xe0, 0x76, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x0c, 0x6e, 0x0f, 0x4a, 0xc4, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x7e, 0xe1, 0xf6, 0x60, 0xbd, 0xd6, 0xf3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x1a, 0x71, 0x7b, 0xb0, 0xc0, 0xc2, 0xb9, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xba, 0xb8, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0x51, 0x8d, 0xdb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xc3, 0xe3, 0xf6, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd1, 0x91, 0xdb, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x03, 0x29, 0xb7, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x34, 0xaa, 0x71, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x33, 0x30, 0xb7, 0x07, 0x4d, 0xca, 0xdc, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x43, 0x37, 0xb7, 0x1b, 0x14, 0x9d, 0xc6, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x32, 0xcf, 0xed, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x65, 0x0b, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x36, 0x74, 0x7b, 0x50, 0x36, 0xd5, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x03, 0x49, 0xb7, 0x87, 0x67, 0x26, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0x9d, 0x6e, 0x0f, 0xda, 0x86, 0xba, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xfd, 0xaa, 0xdb, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x5b, 0x5b, 0xb7, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0xc1, 0x6e, 0x37, 0x28, 0x4b, 0xde, 0x37, 0x38, 0x5a, 0x6b, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x83, 0x67, 0xb7, 0x07, 0x65, 0x53, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xd1, 0x76, 0x7b, 0x78, 0x66, 0xb2, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x53, 0xee, 0xf6, 0xa0, 0x6d, 0xa8, 0xdb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x35, 0xbc, 0xdb, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xeb, 0x7d, 0xb7, 0x07, 0xed, 0x23, 0x11, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x9b, 0x83, 0xb7, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0x12, 0x6f, 0x0f, 0x4e, 0x04, 0x6d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xb0, 0xe3, 0xed, 0x41, 0x2b, 0x91, 0xb7, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x0e, 0xe7, 0xed, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe5, 0xd0, 0xdb, 0x83, 0x65, 0xd8, 0x6f, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xe2, 0xe9, 0xed, 0x41, 0xdb, 0x50, 0xb7, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xb5, 0xde, 0x1e, 0x34, 0xfb, 0x7a, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x53, 0xb4, 0xb7, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0x73, 0x6f, 0x0f, 0xd6, 0xcc, 0x86, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x3b, 0xbf, 0xb7, 0x07, 0x4d, 0x06, 0xdf, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x23, 0xc6, 0xb7, 0x07, 0x0d, 0x22, 0xdf, 0x76, 0x38, 0xc5, 0xda, 0xa0, 0xd1, 0xe5, 0xdb, 0x35, 0x68, 0xd2, 0xfa, 0x76, 0x0d, 0xda, 0x61, 0xbf, 0x5d, 0x0d, 0x5a, 0x4b, 0xbe, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe5, 0x0e, 0xdc, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x6b, 0x04, 0xf7, 0x60, 0x75, 0x2f, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x8f, 0x82, 0xbb, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xd0, 0x05, 0x77, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x47, 0x83, 0xbb, 0x41, 0x21, 0x98, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xf3, 0x39, 0xb8, 0x07, 0xcd, 0x78, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x93, 0x3f, 0xb8, 0x1b, 0x3e, 0x77, 0x19, 0x3c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc5, 0x22, 0xdc, 0x0d, 0x0a, 0xc1, 0xd4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x58, 0xc2, 0x3d, 0x58, 0xaf, 0xf5, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x42, 0xe1, 0x6e, 0xf8, 0xdc, 0x65, 0x70, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0xad, 0x70, 0x37, 0x28, 0x04, 0x53, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x85, 0x0b, 0xf7, 0x60, 0xe1, 0xa6, 0xf7, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x1c, 0x86, 0xbb, 0xe1, 0x73, 0x97, 0xc1, 0xe7, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x3e, 0xc3, 0xdd, 0xa0, 0x10, 0x4c, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xa9, 0x36, 0xdc, 0x83, 0x05, 0x16, 0xce, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xbc, 0x1c, 0xee, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xc2, 0xc3, 0xdd, 0x60, 0x39, 0x24, 0xd3, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x8a, 0x1f, 0xee, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xd5, 0x41, 0xdc, 0x83, 0x06, 0x64, 0x62, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xad, 0x44, 0xdc, 0x0d, 0x56, 0x08, 0x35, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x23, 0x8f, 0xb8, 0x07, 0xeb, 0x81, 0x41, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x69, 0x4a, 0xdc, 0x83, 0x66, 0x2e, 0x71, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc1, 0x4d, 0xdc, 0x83, 0xe6, 0x3b, 0x71, 0xeb, 0x70, 0x8a, 0xd5, 0x1a, 0xb4, 0x37, 0x3e, 0xbb, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x4b, 0xa4, 0xb8, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x72, 0x2a, 0xee, 0x41, 0x73, 0xd4, 0xb2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xdc, 0x2b, 0xee, 0xc1, 0xb2, 0xcf, 0xda, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xa8, 0xc5, 0xdd, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0x75, 0x71, 0x0f, 0x96, 0x55, 0x82, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x23, 0xc0, 0xb8, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0x8b, 0x71, 0x37, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xa3, 0xcb, 0xb8, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x11, 0x8d, 0x7b, 0x10, 0x52, 0x26, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xa8, 0x35, 0xee, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x15, 0x6e, 0xdc, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0xdc, 0x37, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x8a, 0xe3, 0x1e, 0x34, 0xe3, 0x85, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xa1, 0xe3, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0x56, 0xd7, 0x71, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xde, 0x1d, 0x77, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xf6, 0xe8, 0x71, 0x0f, 0x4a, 0x6f, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x44, 0x1f, 0xf7, 0x60, 0xbd, 0xd6, 0xf3, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xfe, 0x8f, 0xbb, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x8b, 0x05, 0xb9, 0x07, 0x25, 0x62, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xb3, 0x90, 0x7b, 0xb0, 0x5e, 0xeb, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x87, 0xc8, 0x3d, 0x58, 0x60, 0xe1, 0x5c, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0x16, 0xb9, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x86, 0x38, 0x72, 0x37, 0x08, 0xfd, 0x92, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x3a, 0x24, 0xf7, 0xa0, 0x44, 0xac, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0x4e, 0x72, 0x0f, 0xd6, 0x6b, 0x3d, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x13, 0x2d, 0xb9, 0x07, 0xeb, 0xf7, 0xa0, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x61, 0x99, 0xdc, 0x0d, 0x0f, 0x4a, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x23, 0x38, 0xb9, 0x07, 0xa7, 0x8b, 0x8c, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xed, 0xc9, 0xdd, 0xf0, 0x15, 0xce, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x0b, 0xe5, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x42, 0xca, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xf9, 0xa6, 0xdc, 0x83, 0xd2, 0x9b, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x9c, 0xca, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x95, 0xac, 0xdc, 0x83, 0x12, 0xb1, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xf6, 0xca, 0x3d, 0x58, 0xaf, 0xf5, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x91, 0xe5, 0x1e, 0xac, 0xdf, 0x83, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x52, 0xcb, 0xdd, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xf9, 0xb7, 0xdc, 0x83, 0x12, 0xb1, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xac, 0xcb, 0x3d, 0x58, 0xaf, 0xf5, 0xbc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xed, 0xe5, 0x1e, 0x2c, 0xb0, 0x70, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x09, 0xcc, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x78, 0x98, 0xbb, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xa1, 0x31, 0xf7, 0xa0, 0xa0, 0xc8, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0x25, 0x73, 0x0f, 0x0a, 0x8a, 0xcc, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x07, 0x33, 0x77, 0x83, 0x82, 0x34, 0x76, 0x83, 0xb1, 0x20, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xed, 0x7a, 0xe6, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x78, 0x70, 0x67, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0x4b, 0x73, 0x0f, 0xca, 0x0a, 0xf9, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x68, 0x35, 0x77, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x26, 0x5d, 0x73, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xb5, 0xd9, 0xdc, 0x0d, 0x4e, 0xec, 0x37, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x46, 0x6e, 0xee, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x2d, 0xf2, 0xe6, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0xbf, 0xb9, 0x07, 0x65, 0x53, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x57, 0x9c, 0x7b, 0xd0, 0xf8, 0x71, 0x6e, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xc1, 0x9c, 0xbb, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x2e, 0x3a, 0x77, 0xc3, 0x9f, 0x4b, 0x83, 0x8b, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x76, 0x9d, 0xbb, 0x41, 0xe8, 0x97, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xe3, 0xdc, 0xb9, 0x07, 0xa5, 0x37, 0xfd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x27, 0x9e, 0x7b, 0xb0, 0x5e, 0xeb, 0x79, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x41, 0xcf, 0x3d, 0x58, 0x60, 0xe1, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0xb7, 0xe7, 0x6e, 0xf8, 0xfa, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x9a, 0xcf, 0x3d, 0x28, 0xc5, 0x69, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x1d, 0x3f, 0x77, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xf3, 0xcf, 0xdd, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x3f, 0xa0, 0xbb, 0x41, 0x59, 0xf2, 0xbe, 0xc1, 0xd1, 0x5a, 0x63, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x55, 0xd0, 0x3d, 0x28, 0x9b, 0xea, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x1d, 0x08, 0xdd, 0x83, 0x76, 0x1b, 0xcc, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0x2c, 0x74, 0x0f, 0x4a, 0x5d, 0xd1, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xdd, 0x0d, 0xdd, 0x83, 0x52, 0x9c, 0x76, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x42, 0x74, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x9a, 0xe8, 0x1e, 0xb4, 0x8f, 0x44, 0xb0, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0xb1, 0xe8, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x8f, 0xd1, 0x3d, 0x38, 0x11, 0xb4, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x8b, 0x37, 0xba, 0x07, 0xad, 0x44, 0xde, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x4b, 0x3d, 0xba, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0x85, 0x74, 0x0f, 0x96, 0x61, 0xbf, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x9b, 0x48, 0xba, 0x07, 0xa5, 0xae, 0x68, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x63, 0x4e, 0xba, 0x1b, 0x2c, 0xa9, 0x4e, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x06, 0xa8, 0x74, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x66, 0xe9, 0x6e, 0x50, 0x96, 0xbc, 0x6f, 0x70, 0xec, 0xbf, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x56, 0xc0, 0x74, 0x0f, 0xca, 0xa6, 0xfa, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xb8, 0x4c, 0xf7, 0xa0, 0xdd, 0x06, 0xb3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc5, 0x35, 0xdd, 0x83, 0xc6, 0x8f, 0x73, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xa5, 0x38, 0xdd, 0x0d, 0x8a, 0x4e, 0xe3, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xda, 0x4e, 0x77, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xb2, 0x05, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0xeb, 0xd3, 0x3d, 0x28, 0x9b, 0xea, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x85, 0x41, 0xdd, 0x83, 0xc6, 0x08, 0xcc, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xa6, 0x11, 0x75, 0x0f, 0x5a, 0x59, 0xd4, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xe5, 0x47, 0xdd, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0xaa, 0x52, 0x77, 0x83, 0x13, 0xfb, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xaf, 0xa9, 0xbb, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xe1, 0x26, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0x86, 0xea, 0x1e, 0x94, 0x4d, 0xf5, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xce, 0xa9, 0xee, 0x41, 0xa3, 0xa9, 0xba, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0xfa, 0xab, 0xee, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xa5, 0x5a, 0xdd, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xd3, 0xba, 0xba, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x1c, 0xad, 0x35, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xc5, 0x60, 0xdd, 0x83, 0xb2, 0xa9, 0x7e, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x39, 0xd6, 0x3d, 0x68, 0x34, 0x55, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x9e, 0x59, 0x77, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x36, 0xa7, 0x75, 0x0f, 0xda, 0xfa, 0x7e, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xc6, 0xb2, 0x75, 0x0f, 0x5a, 0x59, 0xd4, 0xad, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0xad, 0x6f, 0xdd, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x9a, 0x2f, 0xd7, 0x3d, 0x68, 0xeb, 0xfb, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x5d, 0xd7, 0x3d, 0x68, 0x65, 0x51, 0xb7, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x2e, 0x5e, 0xf7, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xae, 0x88, 0xfe, 0xa0, 0x6d, 0x7b, 0xdd, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x8c, 0x5f, 0x77, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x78, 0xc0, 0xee, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x47, 0x6b, 0x8d, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x11, 0x61, 0xf7, 0xa0, 0x6c, 0xaa, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0x46, 0x1c, 0x76, 0x0f, 0x1a, 0x23, 0x30, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x9f, 0xd8, 0x3d, 0x68, 0x65, 0x51, 0xb7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x37, 0x63, 0xf7, 0xa0, 0xf1, 0xe3, 0xdc, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xfa, 0xd8, 0xdd, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x4b, 0xb2, 0xbb, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x48, 0x65, 0xf7, 0x20, 0x29, 0x2d, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x7e, 0xd9, 0xdd, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x56, 0xb3, 0x7b, 0xd0, 0x3e, 0x12, 0xc1, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xb1, 0xb3, 0xbb, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x14, 0x68, 0xf7, 0xe0, 0x44, 0xd0, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x19, 0xed, 0x1e, 0xb4, 0x8a, 0xb4, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0x57, 0xed, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0xda, 0xda, 0x3d, 0x58, 0x86, 0xfd, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x84, 0xed, 0x1e, 0xb4, 0xb2, 0xa8, 0x5b, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x9c, 0xed, 0x1e, 0x14, 0x14, 0x99, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x38, 0xdb, 0xee, 0x41, 0x41, 0x91, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0xca, 0xed, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xc1, 0xdb, 0x3d, 0x58, 0x0f, 0x0c, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0xf7, 0xed, 0x1e, 0x34, 0x01, 0xb8, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x6d, 0x11, 0xee, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x5a, 0x50, 0xdc, 0x3d, 0x58, 0x57, 0x30, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0x3e, 0xee, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0xab, 0xdc, 0x3d, 0x58, 0x0f, 0x0c, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x2d, 0x6c, 0xee, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x04, 0xdd, 0x3d, 0x58, 0x33, 0x1b, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xad, 0x98, 0xee, 0x1e, 0x34, 0x19, 0x7c, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x8d, 0xaf, 0xee, 0x1e, 0x34, 0xe4, 0xba, 0xdb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0x2e, 0xbb, 0xbb, 0xc1, 0x0a, 0xa1, 0xa6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x14, 0x77, 0xf7, 0x60, 0x45, 0x45, 0xe8, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0x34, 0xe5, 0xbb, 0xbb, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0x2b, 0xa2, 0x3f, 0x68, 0x7b, 0x78, 0xf7, 0x60, 0x05, 0xda, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0x98, 0xbc, 0xbb, 0x41, 0x21, 0x98, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x2b, 0xcf, 0xbb, 0x07, 0xcd, 0x78, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0xcb, 0xd4, 0xbb, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xba, 0x22, 0xfa, 0x83, 0xb6, 0xb4, 0x77, 0x0f, 0x56, 0xa0, 0xad, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x5d, 0x11, 0xfd, 0x41, 0x1b, 0xe0, 0xbb, 0x07, 0x49, 0x69, 0xc1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x57, 0x44, 0x7f, 0xd0, 0x74, 0xf9, 0xee, 0x41, 0x43, 0xe8, 0xbb, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0xcd, 0xb2, 0xef, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0x1a, 0x92, 0xdf, 0x3d, 0x58, 0x81, 0x52, 0xba, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x75, 0x45, 0xf4, 0x07, 0x0d, 0xe0, 0xef, 0x1e, 0x14, 0x14, 0x99, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0xd7, 0x15, 0xd1, 0x1f, 0xb4, 0xdd, 0xbf, 0x7b, 0xb0, 0x42, 0xa4, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0xeb, 0x8a, 0xe8, 0x0f, 0xda, 0x1b, 0xe0, 0x3d, 0x68, 0x02, 0x70, 0xb7, 0x0e, 0xda, 0x37, 0xe0, 0x3d, 0x68, 0x27, 0x82, 0xf7, 0xa0, 0x31, 0x35, 0xde, 0x83, 0xc6, 0xf2, 0x7a, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x68, 0x9c, 0xc9, 0xb8, 0x83, 0x46, 0x0f, 0x8d, 0x0f, 0xda, 0x6f, 0x35, 0xae, 0xc3, 0x29, 0x76, 0xd0, 0x92, 0xe4, 0xf1, 0x41, 0x93, 0x9d, 0xc8, 0x1b, 0x4e, 0x84, 0x0d, 0xe2, 0x3d, 0x4a, 0xe1, 0xa0, 0x25, 0x15, 0xf2, 0x0d, 0x27, 0xc2, 0x06, 0xd1, 0x16, 0xa5, 0x70, 0xd0, 0xc2, 0x0b, 0xf9, 0x41, 0x73, 0x32, 0xe4, 0x07, 0x4d, 0x68, 0x94, 0x1f, 0xb4, 0x6c, 0x54, 0x5e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x7f, 0x68, 0x0e, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x32, 0xcd, 0xe1, 0xa0, 0x69, 0xa8, 0xf2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xc4, 0xaa, 0x39, 0x0c, 0xbb, 0x41, 0x59, 0x77, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x2a, 0xd8, 0x1c, 0x0e, 0x86, 0x66, 0xd7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x62, 0xda, 0x1c, 0x0e, 0x0d, 0x75, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xa2, 0xdc, 0x1c, 0x06, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x83, 0xd6, 0x3f, 0xa3, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x81, 0x02, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x06, 0x6d, 0xab, 0x95, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x73, 0x6f, 0x0e, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x10, 0xce, 0xe1, 0xa0, 0xc5, 0xba, 0xf2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x94, 0xc6, 0x39, 0x1c, 0xc6, 0xe5, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x58, 0xce, 0x61, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0x38, 0x08, 0x36, 0x68, 0xfd, 0x33, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x13, 0x28, 0x50, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0x98, 0xb8, 0x0d, 0xda, 0x43, 0x2c, 0xdf, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x1b, 0x44, 0x5b, 0x94, 0xc2, 0x86, 0x13, 0x61, 0x83, 0x68, 0x8b, 0x52, 0x38, 0x68, 0xed, 0xb1, 0xfc, 0xa0, 0x81, 0xc8, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x7c, 0xce, 0x61, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xe4, 0xd3, 0x39, 0x1c, 0xb4, 0xf3, 0x5a, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x0c, 0x3b, 0x87, 0x43, 0x34, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x66, 0xee, 0x1c, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x88, 0xc2, 0x73, 0x38, 0x68, 0x63, 0xb7, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x9c, 0xe5, 0x39, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x31, 0xa8, 0xe7, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xec, 0x3d, 0x87, 0xe1, 0x17, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x9e, 0xcf, 0xe1, 0x60, 0xe1, 0xbd, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x04, 0x3f, 0x87, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xb1, 0xf1, 0xe7, 0x70, 0xd0, 0xac, 0x75, 0xf9, 0x20, 0xdb, 0x20, 0xf2, 0xcd, 0x25, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x31, 0x03, 0xe8, 0x70, 0x18, 0x97, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xf8, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xa5, 0x40, 0x87, 0x41, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x2c, 0x41, 0x87, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xd4, 0x1a, 0x3a, 0x0c, 0xbb, 0x41, 0xdb, 0xea, 0xe5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x26, 0xd1, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x56, 0xd1, 0x61, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0xbc, 0xe8, 0x70, 0xb0, 0x3e, 0x48, 0x6c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xcc, 0x38, 0x3a, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xa2, 0x47, 0x87, 0x83, 0xf6, 0xa4, 0x9a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0x06, 0xe9, 0x70, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x02, 0x23, 0x1d, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xa7, 0xa4, 0xc3, 0x41, 0xab, 0x8e, 0x4d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc8, 0x9d, 0x74, 0x18, 0x04, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x38, 0xa6, 0x74, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x49, 0xa6, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb8, 0xd1, 0x74, 0x38, 0x58, 0x68, 0x62, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xaa, 0x4d, 0x87, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x19, 0xa7, 0xc3, 0x41, 0x63, 0x22, 0x28, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0xda, 0xd3, 0x61, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x9c, 0x7f, 0x3a, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x7c, 0x50, 0x87, 0x83, 0xf6, 0xa4, 0x9a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x91, 0x21, 0xea, 0x70, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x72, 0x46, 0x1d, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x14, 0xa9, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0xbc, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x74, 0xa9, 0xc3, 0x41, 0xf0, 0x70, 0x1f, 0x8f, 0x8f, 0x6f, 0xc7, 0xe3, 0x61, 0x37, 0x68, 0xee, 0xc6, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x74, 0xa0, 0x3a, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x9c, 0x54, 0x87, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xd1, 0xa4, 0xea, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xd6, 0x56, 0x1d, 0x0e, 0xca, 0x7d, 0xc0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x91, 0xc8, 0xea, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x36, 0x5b, 0x1d, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xab, 0xab, 0xc3, 0x41, 0x8a, 0x26, 0xf3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x96, 0x5f, 0x1d, 0x0e, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xe7, 0xb0, 0x0e, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x3f, 0xd6, 0xe1, 0x20, 0x45, 0x93, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x17, 0xb3, 0x0e, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x86, 0xd6, 0xe1, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x2c, 0xd5, 0x3a, 0x0c, 0x82, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x64, 0xd9, 0x3a, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x56, 0xd7, 0x61, 0xd8, 0x0d, 0xc6, 0x21, 0xd3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa8, 0xe0, 0x75, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x29, 0xbd, 0x0e, 0xc3, 0x6e, 0xd0, 0x6c, 0x9c, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x68, 0xf4, 0x75, 0x38, 0x9c, 0x62, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe8, 0xfc, 0x75, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xe4, 0x02, 0x3b, 0x1c, 0xb4, 0xd4, 0x67, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x46, 0x86, 0x1d, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x0d, 0xb1, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x38, 0x2a, 0x76, 0x38, 0xe4, 0xbe, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0x65, 0xec, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xd9, 0xb1, 0xc3, 0x41, 0xcb, 0x8e, 0xe6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x3f, 0x64, 0x87, 0x43, 0x7f, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x32, 0xd9, 0xe1, 0x20, 0xe4, 0xb3, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf8, 0x55, 0x76, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf8, 0x61, 0x76, 0x38, 0x08, 0x1e, 0xee, 0xe3, 0xf1, 0xe1, 0x14, 0x3b, 0xbe, 0x0d, 0xbb, 0x41, 0xbb, 0xa5, 0xe6, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0xd0, 0xd9, 0x61, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xcc, 0x67, 0x87, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xbc, 0x43, 0x3b, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x41, 0xda, 0x61, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x8d, 0x69, 0x87, 0x83, 0x76, 0x6e, 0xcd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x0e, 0xb5, 0xc3, 0x41, 0x0b, 0xbe, 0xe6, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xb6, 0xaa, 0x1d, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x68, 0xb3, 0x76, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xf0, 0xb5, 0xc3, 0x20, 0x5a, 0x20, 0xfc, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe8, 0xca, 0x76, 0x38, 0x24, 0x66, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe8, 0xd3, 0x76, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x71, 0xdb, 0x61, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xe5, 0xdc, 0x0e, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x1c, 0x78, 0x3b, 0x1c, 0x34, 0xa9, 0x6d, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x3a, 0xbe, 0x1d, 0x86, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x1f, 0x70, 0x87, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xb6, 0xc2, 0x1d, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x9b, 0xb8, 0xc3, 0xc1, 0xb9, 0xa5, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x2c, 0x8e, 0x3b, 0x1c, 0x5a, 0x89, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x4f, 0x72, 0x87, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xd1, 0x5b, 0xee, 0x70, 0x38, 0xda, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x58, 0x36, 0x77, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xed, 0xe7, 0x0e, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x82, 0x74, 0x87, 0x83, 0x42, 0xea, 0x6f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x8c, 0xa8, 0x3b, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x9a, 0x75, 0x87, 0x43, 0x0c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x13, 0xbb, 0xc3, 0x21, 0x86, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0xac, 0xdd, 0xe1, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xf4, 0xb9, 0x3b, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xca, 0x77, 0x87, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x71, 0x0a, 0xef, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x72, 0xe3, 0x1d, 0x0e, 0xb9, 0xef, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x71, 0x2c, 0xef, 0x70, 0xb0, 0xb0, 0x1e, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x94, 0xcf, 0x3b, 0x1c, 0x94, 0x40, 0x91, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0xa0, 0xde, 0xe1, 0x20, 0x45, 0x93, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x23, 0xf6, 0x0e, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x9f, 0x7b, 0x87, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xbe, 0xf0, 0x1d, 0x0e, 0x31, 0x1c, 0x76, 0x83, 0xe6, 0x60, 0xce, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xa6, 0xbe, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb8, 0xdd, 0x77, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xcb, 0xfc, 0x0e, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0xbd, 0xdf, 0xe1, 0xa0, 0xdc, 0x07, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x07, 0xff, 0x0e, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x03, 0xe0, 0x61, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xac, 0x04, 0x3c, 0x1c, 0x24, 0x94, 0x9d, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x49, 0xe0, 0xe1, 0x10, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0x36, 0xf0, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xee, 0x08, 0x1e, 0x0e, 0xd2, 0x4f, 0x2d, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x65, 0xc1, 0xc3, 0x41, 0x5a, 0x75, 0xf4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x66, 0x0d, 0x1e, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xf3, 0xc1, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x08, 0x47, 0x78, 0x38, 0x48, 0xab, 0x8e, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xff, 0x09, 0x0f, 0x07, 0x89, 0x4a, 0xcf, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe8, 0x58, 0x78, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x39, 0x0c, 0x0f, 0x83, 0x60, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x47, 0x0d, 0x0f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf8, 0x8c, 0x78, 0x18, 0x76, 0x83, 0x71, 0xc8, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x06, 0x26, 0x1e, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x05, 0xc5, 0xc3, 0xb0, 0x1b, 0x34, 0x1b, 0x67, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xf6, 0x2a, 0x1e, 0x0e, 0xa7, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x16, 0x2d, 0x1e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xe7, 0xc5, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x78, 0xc5, 0x78, 0x38, 0xe4, 0xbe, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xd1, 0x9b, 0xf1, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xb3, 0xc6, 0xc3, 0xc1, 0x0a, 0x86, 0x88, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xd1, 0xbe, 0xf1, 0x30, 0x08, 0x16, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x43, 0xc7, 0xc3, 0x41, 0xe3, 0x97, 0xe7, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x91, 0xe1, 0xf1, 0x70, 0x10, 0xf2, 0xd9, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x82, 0x3e, 0x1e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x82, 0x41, 0x1e, 0x0e, 0x82, 0x87, 0xfb, 0x78, 0x7c, 0x7c, 0x1b, 0x76, 0x83, 0x26, 0x5a, 0xcf, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xc2, 0xc8, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x28, 0x21, 0x79, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x39, 0x25, 0x0f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0xca, 0xe4, 0xe1, 0xa0, 0xdc, 0x07, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x75, 0x27, 0x0f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x10, 0xe5, 0x61, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x64, 0xa6, 0x3c, 0x1c, 0x24, 0x94, 0x9d, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x56, 0xe5, 0xe1, 0x10, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x31, 0xbd, 0xf2, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xca, 0x59, 0x1e, 0x0e, 0xd2, 0x4f, 0x2d, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x80, 0xcb, 0xc3, 0x41, 0xfa, 0xa9, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x42, 0x5e, 0x1e, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x0f, 0xcc, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x78, 0x8a, 0x79, 0x38, 0x48, 0x54, 0x7a, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x6d, 0x32, 0x0f, 0x07, 0x89, 0x4a, 0xcf, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x58, 0x9c, 0x79, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xa7, 0x34, 0x0f, 0x83, 0x60, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xb5, 0x35, 0x0f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x68, 0xd0, 0x79, 0x18, 0x76, 0x83, 0x71, 0xc8, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xe2, 0x76, 0x1e, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x21, 0xcf, 0xc3, 0xb0, 0x1b, 0x34, 0x1b, 0x67, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xd2, 0x7b, 0x1e, 0x0e, 0xa7, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xf2, 0x7d, 0x1e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x02, 0xd0, 0xc3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x1d, 0x41, 0x0f, 0x07, 0x4d, 0x0c, 0xa0, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x1b, 0xa1, 0x87, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xe5, 0xa1, 0x87, 0x83, 0xa6, 0x9c, 0x9a, 0x06, 0xd1, 0x82, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xcc, 0x14, 0x3d, 0x1c, 0x84, 0x7c, 0xf6, 0xf1, 0xfc, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x2d, 0xa3, 0x87, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x78, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xed, 0xa3, 0x87, 0x83, 0xe0, 0xe1, 0x3e, 0x1e, 0x1f, 0xdf, 0x86, 0xdd, 0xa0, 0x55, 0x0f, 0xf4, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x31, 0xa2, 0xf4, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x6a, 0x96, 0x1e, 0x0e, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x4d, 0x4c, 0x0f, 0x87, 0xdc, 0xf7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xb6, 0x9a, 0x1e, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x68, 0x73, 0x7a, 0x38, 0x68, 0xaf, 0x4c, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xd1, 0xf8, 0xf4, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x27, 0xd4, 0xc3, 0x41, 0x4b, 0x3a, 0xe8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x37, 0xea, 0xe1, 0xb0, 0xf6, 0x7b, 0x1c, 0x5a, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf8, 0x96, 0x7a, 0x38, 0x48, 0x8b, 0xa2, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xfa, 0xa7, 0x1e, 0x0e, 0xda, 0x58, 0x42, 0x3f, 0x0e, 0x0d, 0xbb, 0x41, 0x2b, 0x4f, 0xe8, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0xc8, 0xea, 0xe1, 0x10, 0xc3, 0x61, 0x37, 0x68, 0xa8, 0x0a, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x94, 0x6a, 0x3d, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x82, 0xb7, 0x1e, 0x0e, 0xd6, 0x07, 0x89, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xa1, 0xaf, 0x87, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0x06, 0xf6, 0x70, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc8, 0x0b, 0x7b, 0x38, 0xe4, 0xbe, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x31, 0x28, 0xf6, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xe5, 0xd8, 0xc3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xa7, 0x64, 0x0f, 0x07, 0xad, 0xcf, 0xa1, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x8a, 0xcb, 0x1e, 0x0e, 0x52, 0x20, 0xcd, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x72, 0xb3, 0x87, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xe4, 0xb7, 0x87, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xb6, 0xe1, 0x1e, 0x0e, 0x16, 0x16, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xfc, 0xb8, 0x87, 0x83, 0x06, 0x1c, 0xd1, 0x8f, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x24, 0xed, 0x61, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x1b, 0xb5, 0x87, 0x83, 0x76, 0x30, 0xd1, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x55, 0x6b, 0x0f, 0x07, 0x2d, 0x7f, 0xa2, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x73, 0x6c, 0x0f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x14, 0xb6, 0x3d, 0x1c, 0x2c, 0x2c, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xa3, 0x6e, 0x0f, 0x07, 0x0d, 0xbc, 0xa2, 0x1f, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x03, 0xb4, 0x87, 0x83, 0xe5, 0x29, 0x25, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0xc7, 0xa1, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x71, 0x7c, 0x0f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x4c, 0xf7, 0x3d, 0x1c, 0x2c, 0xf3, 0x80, 0x18, 0x24, 0x83, 0x6c, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0xef, 0xf7, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x06, 0x00, 0x1f, 0x0e, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x1f, 0x81, 0x0f, 0x07, 0x05, 0x69, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x76, 0x04, 0x1f, 0x0e, 0x6b, 0xbf, 0xc7, 0xa1, 0x61, 0x37, 0x68, 0xa8, 0x1a, 0x7d, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x9b, 0xf0, 0x61, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xf8, 0xc2, 0x87, 0x83, 0xf6, 0xca, 0x44, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x11, 0x87, 0x0f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x8c, 0x20, 0x3e, 0x1c, 0x34, 0x77, 0x8e, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd8, 0x49, 0x7c, 0x38, 0xf4, 0x27, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xa6, 0x14, 0x1f, 0x0e, 0x6b, 0xbf, 0xc7, 0xa1, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xbb, 0xc5, 0x87, 0x83, 0x24, 0x22, 0x92, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x92, 0xf1, 0xe1, 0x10, 0xc3, 0xe3, 0xd0, 0xb0, 0x1b, 0x34, 0xdd, 0x8f, 0xbe, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0xf3, 0xf8, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x86, 0x20, 0x1f, 0x0e, 0x12, 0xfd, 0xa0, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0x16, 0xf9, 0x30, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe8, 0x93, 0x7c, 0x18, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x3c, 0x4e, 0x3e, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x4c, 0xca, 0x87, 0xc3, 0xda, 0xef, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd8, 0xd0, 0x7c, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x2d, 0x9b, 0x0f, 0x07, 0x0b, 0x38, 0x72, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xb1, 0xc4, 0xf9, 0x70, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x72, 0x2b, 0x1f, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x58, 0xb6, 0x7c, 0x38, 0x68, 0xee, 0x1c, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x31, 0x7e, 0xf9, 0x70, 0xe8, 0x4f, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xec, 0x63, 0x3e, 0x1c, 0xd6, 0x7e, 0x8f, 0x43, 0x83, 0x6c, 0x43, 0xf3, 0xf5, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x7f, 0xee, 0x61, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xaf, 0xba, 0x87, 0x83, 0x65, 0x1e, 0x10, 0x83, 0x64, 0x90, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xfa, 0xec, 0x1e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xe3, 0xdd, 0xc3, 0x21, 0x86, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x15, 0xef, 0xe1, 0x20, 0x05, 0xd2, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xcb, 0x79, 0x0f, 0x87, 0xb5, 0xdf, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x5e, 0xbc, 0x1e, 0x0e, 0x31, 0x1c, 0x76, 0x83, 0x06, 0x9b, 0xd2, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x2d, 0xe8, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x38, 0x12, 0x7d, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x5f, 0xa3, 0x0f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xc4, 0x91, 0x3e, 0x1c, 0x1c, 0xbd, 0xcd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x64, 0xe9, 0xc3, 0x21, 0xfe, 0xc7, 0xa1, 0x61, 0x37, 0x68, 0xb9, 0x2c, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xec, 0xa7, 0x3e, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xd1, 0xb0, 0xfa, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x31, 0xd6, 0x87, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xf1, 0xd6, 0x87, 0x83, 0xe5, 0xb8, 0x42, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x0c, 0xbc, 0x3e, 0x0c, 0xbb, 0xc1, 0xa8, 0x97, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x67, 0xb0, 0x0f, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x2f, 0xf6, 0x61, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x34, 0xca, 0x3e, 0x1c, 0x62, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x4a, 0x67, 0x1f, 0x0e, 0x0a, 0xa9, 0xbf, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x31, 0x4c, 0xfb, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xaa, 0x6b, 0x1f, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xb9, 0xed, 0xc3, 0x41, 0x62, 0x88, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x0a, 0x70, 0x1f, 0x0e, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x21, 0xb9, 0x0f, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x1c, 0xdd, 0x87, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0xb5, 0xfb, 0x70, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x68, 0xe3, 0x7d, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x7f, 0xbd, 0x0f, 0x87, 0xdc, 0xf7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x1a, 0x7d, 0x1f, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf8, 0xfc, 0x7d, 0x38, 0x58, 0xc1, 0x10, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x7a, 0x81, 0x1f, 0x0e, 0x16, 0x95, 0x0e, 0x1d, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x79, 0xf0, 0xc3, 0x41, 0x08, 0x80, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x60, 0xf8, 0xe1, 0x10, 0xc3, 0x61, 0x37, 0x68, 0xa2, 0x37, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xac, 0x1d, 0x3f, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xfa, 0x90, 0x1f, 0x86, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x8f, 0xc9, 0x0f, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x54, 0xf9, 0xe1, 0xb0, 0xf6, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x86, 0x97, 0x1f, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x35, 0xf3, 0xc3, 0x21, 0x86, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0xbd, 0xf9, 0xe1, 0x90, 0xfb, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xfb, 0xce, 0x0f, 0x07, 0xc9, 0x43, 0xcc, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc8, 0x80, 0x7e, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x31, 0xd1, 0x0f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x14, 0x95, 0x3f, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0xd3, 0xfc, 0x61, 0x10, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0xf4, 0xfc, 0x61, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x33, 0xee, 0x0f, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xa2, 0xf7, 0x87, 0x83, 0x66, 0xe3, 0xcc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x6c, 0xfc, 0xc3, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x59, 0xfe, 0x61, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0x3e, 0xff, 0x70, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xea, 0xe9, 0x1f, 0x0e, 0x89, 0x99, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x91, 0x72, 0xff, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x76, 0xf0, 0x1f, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x54, 0xfe, 0xc3, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa8, 0xb0, 0x7f, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x6b, 0xfa, 0x0f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xf4, 0xed, 0x3f, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x47, 0xfe, 0x87, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x8c, 0xf7, 0x3f, 0x0c, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xdc, 0xfd, 0x3f, 0x1c, 0x2c, 0x67, 0x12, 0x1a, 0x44, 0x0b, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0x0d, 0x00, 0x71, 0x10, 0xf2, 0xd9, 0xc7, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x0c, 0x08, 0x40, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x6b, 0x00, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xde, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x9b, 0x00, 0xe2, 0x20, 0x78, 0xb8, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe8, 0x2f, 0x80, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x64, 0x1c, 0x40, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x56, 0x10, 0x20, 0x0e, 0x52, 0x5b, 0xad, 0x17, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x84, 0x2a, 0x40, 0x1c, 0xac, 0x19, 0x4a, 0x39, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x88, 0x71, 0x80, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x43, 0x0f, 0x10, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x2d, 0x08, 0x88, 0x83, 0xb3, 0x69, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xf6, 0x22, 0x20, 0x0e, 0x06, 0x6b, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x3a, 0x1a, 0x20, 0x0e, 0x31, 0x3c, 0xbe, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x49, 0xfa, 0x61, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x88, 0x9d, 0x7e, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xc5, 0xd4, 0x0f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0xba, 0xfa, 0xe1, 0x10, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0x6e, 0xfd, 0x70, 0x50, 0xee, 0x03, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x06, 0xec, 0x87, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0x91, 0xfd, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x62, 0xb4, 0x1f, 0x0e, 0x12, 0xca, 0x4e, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0xb4, 0xfd, 0x70, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x58, 0xe3, 0x7e, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x7d, 0xdd, 0x0f, 0x07, 0xc9, 0x43, 0xcc, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0xd3, 0xfb, 0xe1, 0x60, 0xc9, 0x2e, 0xce, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x72, 0xbf, 0x1f, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x35, 0xf8, 0xc3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x38, 0x0f, 0x7f, 0x38, 0x58, 0x03, 0x88, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x82, 0xf1, 0x87, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0x42, 0xfe, 0x70, 0x10, 0x02, 0xe0, 0xc3, 0x6e, 0xd0, 0x8e, 0xa2, 0xfa, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x38, 0xaf, 0x80, 0x18, 0x04, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa8, 0xb7, 0x80, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xd4, 0x06, 0xc4, 0xb0, 0x1b, 0x34, 0x83, 0xa9, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x6a, 0x39, 0x20, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x72, 0x07, 0xc4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xdb, 0x1e, 0x10, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x88, 0x01, 0x81, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x28, 0x0e, 0x81, 0x38, 0x58, 0x54, 0x3a, 0x74, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xb9, 0x08, 0xc4, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x91, 0x44, 0x02, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0x66, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xc9, 0x25, 0x10, 0x07, 0xad, 0xde, 0xaa, 0x1f, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x91, 0x6e, 0x02, 0x71, 0x1c, 0x3a, 0xbe, 0x0d, 0xbb, 0x41, 0xfb, 0xbc, 0xea, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x6a, 0x05, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x24, 0x1f, 0x88, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x74, 0xfe, 0x40, 0x0c, 0x82, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xac, 0x02, 0x41, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0xe6, 0x08, 0x62, 0xd8, 0x0d, 0x9a, 0xc1, 0x54, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x9b, 0x48, 0x10, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x35, 0x09, 0x62, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0xac, 0x04, 0x71, 0xd0, 0xda, 0xb6, 0xfa, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf8, 0x7a, 0x82, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x0e, 0x0a, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xc7, 0x51, 0x10, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xf0, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x5b, 0x53, 0x10, 0x07, 0x8b, 0x4a, 0x87, 0x8e, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd8, 0xa3, 0x82, 0x18, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xbe, 0xab, 0x20, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xbc, 0x15, 0xc4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x28, 0xc0, 0x82, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x1d, 0x59, 0x10, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x45, 0x0b, 0xe2, 0x20, 0x04, 0xc0, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0xb4, 0x05, 0x71, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xd6, 0xb8, 0x20, 0x86, 0xdd, 0xa0, 0xd9, 0x38, 0xf3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0xdc, 0x05, 0x71, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xc6, 0xbd, 0x20, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa8, 0xff, 0x82, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x52, 0x18, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xb7, 0x18, 0xc4, 0xc1, 0xa2, 0xd2, 0xa1, 0x41, 0xb4, 0xa0, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x47, 0x64, 0x10, 0x07, 0x21, 0x9f, 0x7d, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x59, 0x19, 0xc4, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xb1, 0x6c, 0x06, 0x71, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xbe, 0xcf, 0x20, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x88, 0x47, 0x83, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x91, 0x1a, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x98, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x1c, 0xaf, 0x41, 0x1c, 0xb4, 0x7a, 0xab, 0x3e, 0x88, 0x16, 0xbc, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x4b, 0x1b, 0xc4, 0xc1, 0x18, 0x58, 0x38, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0xc9, 0x0d, 0x62, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x98, 0x7d, 0x83, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xc7, 0x70, 0x10, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x3b, 0x0e, 0xe2, 0x10, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0x2f, 0x07, 0x71, 0x18, 0x97, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x44, 0xd0, 0x41, 0x1c, 0x84, 0x00, 0xf8, 0xf1, 0x6d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x71, 0x2c, 0x10, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x74, 0x0b, 0xc4, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x38, 0x77, 0x81, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xf9, 0x2f, 0x10, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x88, 0x18, 0x88, 0x83, 0x72, 0x1f, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xbc, 0xc8, 0x40, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xa0, 0x19, 0x88, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x31, 0x45, 0x03, 0x71, 0x90, 0x50, 0x76, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xb8, 0x1a, 0x88, 0x43, 0x0c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xa3, 0x0d, 0xc4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf8, 0xbc, 0x81, 0x38, 0x58, 0xb2, 0x8b, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x5e, 0x1c, 0x88, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x91, 0x9d, 0x03, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xd6, 0x75, 0x20, 0x0e, 0xd6, 0x00, 0xe2, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x81, 0x07, 0xe2, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xa4, 0xf4, 0x40, 0x1c, 0x84, 0x00, 0xf8, 0xb0, 0x1b, 0xb4, 0x77, 0xb8, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xfe, 0xf0, 0x20, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x9b, 0x79, 0x10, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x56, 0x3d, 0x88, 0xc3, 0xda, 0xef, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x92, 0xf7, 0x20, 0x0e, 0x96, 0xe3, 0x0a, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xfe, 0x3e, 0x88, 0xe1, 0x17, 0x44, 0x0b, 0x8c, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xc2, 0xfe, 0x20, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x98, 0x03, 0x84, 0x38, 0x68, 0x7d, 0x0e, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0x19, 0x08, 0x71, 0xb0, 0x64, 0x48, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x88, 0x15, 0x84, 0x18, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa8, 0x5c, 0x84, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x94, 0x11, 0xe2, 0x60, 0x61, 0x41, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x28, 0x6e, 0x84, 0x38, 0x68, 0xc0, 0x11, 0xfd, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xe2, 0x09, 0x21, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x18, 0x30, 0x84, 0x38, 0x68, 0x07, 0x13, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0x72, 0x08, 0x71, 0xd0, 0xf2, 0x27, 0xfa, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0x83, 0x08, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x54, 0x22, 0xc4, 0xc1, 0xc2, 0x82, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0xa6, 0x08, 0x71, 0xd0, 0xc0, 0x2b, 0xfa, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x98, 0x1e, 0x84, 0x38, 0x58, 0x9e, 0x52, 0x72, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0x7c, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0xdd, 0x11, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xfe, 0x47, 0x88, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x4c, 0x45, 0x42, 0x0c, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x4c, 0x4b, 0x42, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xf2, 0x49, 0x88, 0x83, 0xf6, 0xa4, 0x9a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0x50, 0x09, 0x71, 0xb0, 0x64, 0x48, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x14, 0x4b, 0x88, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xd1, 0x25, 0xc4, 0x41, 0x2b, 0x01, 0xec, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x9f, 0x13, 0x62, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0xe0, 0x09, 0x71, 0xd0, 0x5e, 0x04, 0xfb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x18, 0x16, 0x85, 0x38, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x7b, 0x14, 0x62, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xc4, 0x93, 0x42, 0x1c, 0x62, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x12, 0x4c, 0x21, 0x0e, 0xb9, 0xef, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x71, 0x71, 0x0a, 0x71, 0x90, 0xe8, 0x07, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x1a, 0x54, 0x88, 0x83, 0xc1, 0x1a, 0x7b, 0x38, 0xc5, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x91, 0xce, 0x07, 0x71, 0x88, 0xe1, 0xb0, 0x1b, 0x34, 0x02, 0xc3, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x46, 0x59, 0x21, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xb5, 0xad, 0x10, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x1c, 0xbb, 0x42, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0x02, 0x0b, 0x71, 0xb0, 0xca, 0xee, 0x7f, 0x90, 0x0c, 0x4c, 0xdf, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x27, 0x16, 0xe2, 0x90, 0x3a, 0x38, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x30, 0x59, 0x88, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x31, 0x37, 0x0b, 0x71, 0x90, 0x02, 0x69, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x49, 0x5a, 0x88, 0xc3, 0xda, 0xef, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xec, 0xd6, 0x42, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x67, 0x5b, 0x88, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xc2, 0x6f, 0x21, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x71, 0x93, 0x0b, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x92, 0x2e, 0xc4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xa5, 0xbb, 0x10, 0x07, 0x2d, 0xae, 0x44, 0x0d, 0x92, 0x81, 0xe2, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe8, 0xe5, 0x85, 0x38, 0x18, 0x13, 0x56, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0xde, 0x0b, 0x71, 0x90, 0x02, 0x69, 0x7e, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xc0, 0x2f, 0xc4, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0x06, 0x0c, 0x31, 0xc8, 0xd6, 0x90, 0xc7, 0x5e, 0x1c, 0x04, 0x1b, 0x34, 0x72, 0xbd, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xf9, 0xed, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x37, 0x68, 0xe1, 0x90, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x38, 0x0c, 0x86, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x99, 0xc2, 0x10, 0x07, 0xcd, 0x48, 0xb2, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x77, 0x18, 0xe2, 0x60, 0x04, 0x79, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x64, 0x13, 0x43, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xa4, 0x17, 0x43, 0x0c, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xd4, 0x3e, 0x43, 0x1c, 0x84, 0x00, 0xf8, 0x20, 0x5a, 0xd8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xa4, 0x1d, 0x43, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xb1, 0x87, 0x0c, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x75, 0x32, 0xc4, 0xc1, 0x82, 0xda, 0xfd, 0x41, 0x32, 0x38, 0x35, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x78, 0x57, 0x86, 0x38, 0xa4, 0x6a, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x82, 0x19, 0x62, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x94, 0x34, 0x43, 0x1c, 0x8c, 0x20, 0xcf, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x14, 0x39, 0x43, 0x1c, 0x12, 0x33, 0xc7, 0xa1, 0xe3, 0xf9, 0xb0, 0x1b, 0x34, 0x34, 0xcc, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x46, 0xa8, 0x21, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc8, 0x38, 0x87, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x1b, 0x3a, 0xc4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x7f, 0xe9, 0x10, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa8, 0x56, 0x87, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x33, 0xef, 0x10, 0x83, 0x60, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x41, 0xf0, 0x10, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x68, 0xb6, 0x87, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x7c, 0xdf, 0x43, 0x0c, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xe2, 0xf1, 0x21, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x81, 0x3e, 0xc4, 0x41, 0x88, 0xf8, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x92, 0x7d, 0x88, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x71, 0xc3, 0x0f, 0x71, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x9e, 0xfa, 0x21, 0x0e, 0xa9, 0x83, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xbc, 0xf9, 0x43, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x16, 0xff, 0x21, 0x0e, 0xda, 0xd3, 0x67, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xdb, 0x09, 0x11, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xb4, 0x2b, 0x44, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x87, 0x21, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x44, 0x7f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xbb, 0x0d, 0x11, 0x07, 0x0d, 0xfb, 0x8c, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xb1, 0xed, 0x10, 0x31, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xe4, 0x40, 0x44, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xa6, 0x88, 0x88, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xbe, 0x24, 0x22, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0x3b, 0x11, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x91, 0x54, 0x11, 0x71, 0xd0, 0x5a, 0x48, 0xfb, 0x20, 0x5a, 0xd0, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x58, 0x8b, 0x88, 0x83, 0x92, 0xa6, 0xe1, 0xb0, 0x42, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xe8, 0x8b, 0x88, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x26, 0x23, 0xe2, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x24, 0x69, 0x44, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x81, 0xe8, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x79, 0x23, 0xe2, 0x20, 0x1d, 0xaf, 0x61, 0x10, 0x2d, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x62, 0x3a, 0x22, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x90, 0x47, 0xc4, 0x41, 0x08, 0x80, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0xec, 0x23, 0xe2, 0x30, 0x2e, 0x87, 0xe4, 0xd2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x8e, 0x11, 0x22, 0x0e, 0x31, 0x3c, 0xbe, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0xa8, 0x1a, 0x62, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x18, 0xb5, 0x86, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xb7, 0xd7, 0x10, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x19, 0x1b, 0xe2, 0x10, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0x9e, 0x0d, 0x71, 0x50, 0xee, 0x03, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x7f, 0x6d, 0x88, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0xc1, 0x0d, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x46, 0xba, 0x21, 0x0e, 0x12, 0xca, 0x4e, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0xe4, 0x0d, 0x71, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe8, 0xfa, 0x86, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x6f, 0xe0, 0x10, 0x07, 0xcb, 0x55, 0x72, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xd1, 0x18, 0x0e, 0x71, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x52, 0xc5, 0x21, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xee, 0x38, 0xc4, 0xc1, 0x52, 0x27, 0x9c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x64, 0x93, 0x43, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xfc, 0x72, 0x88, 0x83, 0x10, 0x00, 0x1f, 0x76, 0x83, 0xd6, 0xf9, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xf5, 0x48, 0xc4, 0xb0, 0x1b, 0xac, 0x0f, 0x12, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x39, 0x25, 0x11, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x2a, 0x93, 0x88, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xd9, 0x49, 0xc4, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd8, 0x43, 0x89, 0x38, 0xac, 0xfd, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x57, 0x95, 0x88, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0xbc, 0x12, 0x71, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc8, 0x66, 0x89, 0x38, 0xe4, 0xbe, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x79, 0x4b, 0xc4, 0x41, 0xf2, 0x10, 0xf3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x0a, 0x5e, 0x22, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x66, 0x4a, 0xc4, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe8, 0x80, 0x89, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xe4, 0xc4, 0x44, 0x0c, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x96, 0x64, 0x22, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xd7, 0x4c, 0xc4, 0xa1, 0x05, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x98, 0xac, 0x89, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0xd4, 0x26, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xfb, 0x37, 0x11, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xf0, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x7b, 0x39, 0x11, 0x07, 0xcb, 0x71, 0x85, 0x06, 0xd1, 0x82, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x8c, 0xeb, 0x44, 0x1c, 0x1a, 0x7e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x31, 0xc0, 0x13, 0x31, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x9c, 0xf5, 0x44, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x3d, 0x9f, 0x88, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xd1, 0xf8, 0x13, 0x71, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x28, 0x05, 0x8a, 0x38, 0x28, 0xf7, 0x01, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x70, 0x50, 0xc4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa8, 0x16, 0x8a, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xe7, 0x43, 0x11, 0x07, 0x09, 0x65, 0x27, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x28, 0x28, 0x8a, 0x38, 0xc4, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x84, 0x18, 0x45, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x99, 0xa3, 0x88, 0x83, 0x25, 0xbb, 0x38, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x88, 0x42, 0x8a, 0x38, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x6d, 0x49, 0x11, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x4f, 0x29, 0xe2, 0x60, 0x0d, 0x20, 0xce, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x3a, 0x97, 0x22, 0x0e, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xbd, 0x4c, 0x11, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0xb9, 0x29, 0xe2, 0x90, 0xfb, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xdd, 0x4e, 0x11, 0x07, 0xc9, 0x43, 0xcc, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd8, 0x7f, 0x8a, 0x38, 0xc4, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x5c, 0x44, 0x45, 0x1c, 0x84, 0x00, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x6e, 0xa4, 0x22, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x1f, 0x4d, 0xc4, 0x21, 0x86, 0x83, 0x6c, 0x83, 0x16, 0x25, 0xdc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xb1, 0x69, 0x15, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xb1, 0x81, 0x15, 0x71, 0xb0, 0x1c, 0x57, 0xe8, 0x78, 0x7c, 0x7c, 0x3b, 0x0e, 0x1d, 0x8f, 0x0f, 0x1a, 0x10, 0x71, 0x3f, 0x1e, 0x1f, 0x34, 0xf7, 0xe2, 0xbe, 0x82, 0x60, 0x83, 0xe3, 0x7e, 0xc7, 0xe2, 0x06, 0xad, 0x58, 0xb9, 0x6f, 0xd0, 0x34, 0x98, 0xfb, 0x1a, 0x34, 0xfc, 0xe8, 0xbe, 0x06, 0x2d, 0x0d, 0xbe, 0xaf, 0x41, 0x43, 0x9c, 0xef, 0x1b, 0x34, 0x88, 0xfc, 0xbe, 0x41, 0x0b, 0x61, 0xf0, 0x6b, 0xd0, 0x1e, 0x22, 0xfc, 0x06, 0x4d, 0xa8, 0xc2, 0x6f, 0xd0, 0xde, 0x1f, 0xfd, 0x06, 0xed, 0x0c, 0xd3, 0x0f, 0x82, 0x0d, 0x5a, 0x43, 0xb2, 0x1f, 0x04, 0x8b, 0x1b, 0x34, 0xae, 0x74, 0x3f, 0x08, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0xd0, 0xc0, 0x42, 0xff, 0x20, 0xd8, 0x90, 0x98, 0x1a, 0x04, 0x1b, 0x34, 0x39, 0xd1, 0x3f, 0x08, 0x36, 0x68, 0x4a, 0xa3, 0x7f, 0x10, 0x6c, 0xd0, 0x02, 0x47, 0xff, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0xdc, 0xa0, 0x39, 0x97, 0xfe, 0x0d, 0x5a, 0x2a, 0xea, 0x5f, 0xd8, 0x0d, 0x1a, 0x37, 0xf3, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x38, 0x79, 0xe2, 0x0e, 0x82, 0x0d, 0x31, 0x1c, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0xf0, 0x1b, 0xcf, 0x87, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0xd0, 0xdc, 0x9b, 0xff, 0xf0, 0x1b, 0x34, 0xc4, 0xe7, 0x3f, 0xec, 0x06, 0xed, 0xfa, 0xf9, 0x6f, 0xd0, 0x46, 0xa0, 0xff, 0xf0, 0x1b, 0xb4, 0x3b, 0xe8, 0x3f, 0xec, 0x06, 0x8d, 0x2a, 0xfa, 0x2f, 0xfc, 0x06, 0x4d, 0x8c, 0xfa, 0x0f, 0xbf, 0x41, 0x33, 0xa6, 0xfe, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0xb2, 0xea, 0x3f, 0xfc, 0x06, 0x0d, 0xec, 0xfa, 0x0f, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x76, 0xe3, 0xd0, 0x06, 0xad, 0xfd, 0xfa, 0x0f, 0x82, 0x0d, 0x5a, 0x4e, 0xf7, 0x1f, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x41, 0x1b, 0xf0, 0xfe, 0x83, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0x5b, 0x56, 0xfd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xda, 0xd9, 0xea, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0xc3, 0xc4, 0x6d, 0xd0, 0xce, 0xbf, 0xff, 0x86, 0x89, 0x5b, 0x43, 0x31, 0x5d, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x30, 0x9d, 0x1b, 0x66, 0x68, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0xa0, 0xd5, 0x83, 0xff, 0x83, 0x78, 0x8f, 0x52, 0xd8, 0x70, 0x22, 0x6c, 0x10, 0x8f, 0xff, 0x14, 0x1b, 0x2c, 0x66, 0x83, 0x3a, 0x88, 0xed, 0xad, 0x88, 0x0d, 0x27, 0xc2, 0x06, 0x11, 0xf6, 0x4f, 0x71, 0xd0, 0xf0, 0xcb, 0xff, 0x86, 0x13, 0x61, 0x83, 0xf8, 0xf6, 0xa7, 0x38, 0x68, 0x90, 0xe6, 0xff, 0xa0, 0xa1, 0xe0, 0xce, 0x83, 0x56, 0xfe, 0x29, 0x0e, 0x5a, 0xf9, 0xa7, 0x38, 0x08, 0x01, 0xf0, 0xe3, 0xd0, 0x71, 0xe8, 0xa0, 0x0d, 0x78, 0xff, 0x61, 0x17, 0x76, 0x83, 0xa2, 0x4a, 0x61, 0x43, 0x0c, 0x87, 0xdd, 0xa0, 0x79, 0xa8, 0xff, 0x05, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x83, 0x66, 0xb0, 0xfe, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xd1, 0xf5, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x89, 0xdb, 0xa0, 0x29, 0xb1, 0xff, 0x0d, 0x16, 0x34, 0x4c, 0xad, 0xa1, 0x98, 0xae, 0x86, 0x19, 0xda, 0x20, 0xbe, 0xfd, 0x29, 0x36, 0x9c, 0x08, 0x1b, 0xc4, 0xb7, 0x3f, 0xc5, 0x41, 0xa3, 0x6a, 0xff, 0x07, 0xcd, 0xe1, 0x72, 0x1e, 0x34, 0xb2, 0xfc, 0xbf, 0x1a, 0x8a, 0xe9, 0x1a, 0xc4, 0x23, 0x42, 0xc5, 0x41, 0xc3, 0xc8, 0x9c, 0x07, 0x6d, 0x43, 0xff, 0x1f, 0x4e, 0xb1, 0x0e, 0xda, 0xa0, 0xfe, 0x3f, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x87, 0x53, 0xec, 0xa0, 0x81, 0xec, 0xff, 0x0d, 0xda, 0x72, 0xff, 0x1f, 0x04, 0x1b, 0xb4, 0xc8, 0xff, 0x3f, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x83, 0xb7, 0x08, 0x00, 0x0c, 0xb2, 0x35, 0x68, 0x0b, 0x64, 0x65, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0xcd, 0x60, 0xfd, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xa2, 0xeb, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x13, 0xb7, 0xc1, 0x1b, 0x14, 0x00, 0x36, 0x4c, 0xdc, 0x1a, 0xea, 0xc8, 0x06, 0xf1, 0x88, 0x50, 0x71, 0xd0, 0x0e, 0xdb, 0xff, 0x86, 0x89, 0xdb, 0xa0, 0x95, 0x7f, 0x8a, 0x83, 0xe8, 0xf3, 0xa7, 0x38, 0x08, 0x01, 0xf0, 0xe3, 0xd0, 0x71, 0xe8, 0xe0, 0x2d, 0x02, 0x00, 0x83, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0x33, 0x58, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0xe8, 0xfa, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0xc3, 0xc4, 0x6d, 0xf0, 0xc2, 0x0a, 0x80, 0x0d, 0x13, 0xb7, 0xc1, 0x7b, 0x2e, 0x00, 0x36, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0xc6, 0x44, 0x49, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0x83, 0x67, 0x76, 0x00, 0x6c, 0x98, 0xb8, 0x0d, 0x5e, 0x12, 0x02, 0xb0, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0x2c, 0xa2, 0xaf, 0xdb, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0xb9, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x06, 0xc1, 0xb2, 0xb4, 0xa1, 0x98, 0xae, 0x41, 0xcc, 0xfc, 0x53, 0x1c, 0xb4, 0x9a, 0xca, 0x79, 0x10, 0x8f, 0x08, 0x15, 0x1b, 0xe6, 0x7e, 0x83, 0x20, 0x5c, 0x3a, 0x88, 0x48, 0x98, 0x82, 0xc3, 0x79, 0x7c, 0xd0, 0x0a, 0x27, 0xc5, 0x86, 0x13, 0x61, 0x83, 0x38, 0xcc, 0xa8, 0x38, 0x68, 0x1f, 0x96, 0xe2, 0xa0, 0x49, 0x59, 0x8a, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0xdf, 0xa0, 0xf1, 0xfa, 0xd1, 0x0d, 0x75, 0x64, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x30, 0x9d, 0x1b, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0xdf, 0x20, 0x5c, 0x11, 0x36, 0x14, 0xd3, 0x35, 0x88, 0x99, 0x7f, 0x8a, 0x83, 0xd6, 0x38, 0x39, 0x37, 0xd4, 0x91, 0x0d, 0x62, 0x3b, 0xa3, 0xe2, 0xa0, 0x2d, 0x53, 0x8a, 0xc3, 0x79, 0x7c, 0xd0, 0xec, 0x25, 0xc4, 0x86, 0x13, 0x61, 0x83, 0x78, 0xf7, 0xa8, 0x38, 0x68, 0xd5, 0x15, 0xe2, 0xa0, 0x21, 0x58, 0x88, 0x0d, 0x13, 0xb7, 0xc1, 0x7b, 0x2e, 0x00, 0x36, 0x4c, 0xdc, 0x06, 0x0f, 0x75, 0x02, 0xd8, 0x30, 0x71, 0x1b, 0xbc, 0xc5, 0x0a, 0x60, 0xc3, 0x0c, 0x6d, 0x10, 0x33, 0xff, 0x14, 0x1b, 0x4e, 0x84, 0x0d, 0x62, 0xe6, 0x9f, 0xe2, 0xe0, 0x69, 0x59, 0x00, 0x1b, 0x4e, 0x84, 0x0d, 0x62, 0xf4, 0xa2, 0xe2, 0xe0, 0x6d, 0x5b, 0x00, 0x07, 0x2d, 0xd6, 0x9c, 0x1e, 0x3c, 0xec, 0x03, 0xe0, 0x20, 0x04, 0xc0, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0x78, 0xaa, 0xa7, 0xd8, 0xe0, 0x0d, 0x5f, 0x00, 0x1b, 0x3c, 0xb5, 0x13, 0x60, 0x83, 0xa7, 0xb0, 0x02, 0x2c, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0x9e, 0xe3, 0x0b, 0xb0, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x38, 0x07, 0x7f, 0x0f, 0xbb, 0xc1, 0x13, 0x85, 0x01, 0x16, 0x04, 0x1b, 0x3c, 0x07, 0x19, 0x60, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x06, 0x0f, 0x64, 0x06, 0x18, 0x64, 0x6b, 0xd0, 0x16, 0xc8, 0xca, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x9e, 0xaa, 0x07, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x19, 0x7d, 0x00, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0x98, 0xb8, 0x0d, 0x1e, 0x55, 0x0d, 0xb0, 0x61, 0xe2, 0x36, 0x88, 0x81, 0x88, 0x8a, 0x83, 0x57, 0x5e, 0x03, 0x1c, 0x84, 0x00, 0xf8, 0x71, 0xe8, 0x38, 0x74, 0xf0, 0x40, 0x66, 0x80, 0x83, 0x67, 0x6d, 0x03, 0x1c, 0x8f, 0x17, 0x76, 0x83, 0xe0, 0x63, 0xde, 0x78, 0x3c, 0xec, 0x06, 0xcd, 0xf8, 0xf4, 0x6f, 0xf0, 0x32, 0x71, 0x80, 0x41, 0xb0, 0xc1, 0xc3, 0xec, 0x01, 0x06, 0xc1, 0x06, 0xef, 0x20, 0x08, 0x18, 0x76, 0x83, 0xd0, 0x72, 0x5f, 0x10, 0x6c, 0xf0, 0xfe, 0x87, 0x80, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0xbc, 0x6d, 0x22, 0x60, 0x90, 0xad, 0x41, 0x5b, 0x20, 0x2b, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x68, 0xcb, 0xaa, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x3b, 0x5b, 0xfd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0x98, 0xb8, 0x0d, 0x9e, 0xa6, 0x11, 0xb0, 0x61, 0xe2, 0xd6, 0x60, 0x41, 0xc3, 0xd4, 0x1a, 0x8a, 0xe9, 0x1a, 0xc4, 0x23, 0x42, 0xc5, 0x41, 0x83, 0xd7, 0x9c, 0x07, 0xcf, 0x2a, 0x09, 0x58, 0x0d, 0xc5, 0x74, 0x0d, 0xe2, 0x11, 0xa1, 0xe2, 0xa0, 0xa5, 0x6f, 0xce, 0x83, 0x17, 0x7b, 0x04, 0x1c, 0x4e, 0xb1, 0x0d, 0x62, 0x0b, 0xa1, 0x62, 0x35, 0x14, 0xd3, 0x35, 0x88, 0x47, 0x84, 0x8a, 0x83, 0xd6, 0x60, 0x39, 0x0f, 0x9e, 0x87, 0x12, 0x70, 0x10, 0x4b, 0x0a, 0x15, 0x6b, 0x28, 0xa6, 0x6b, 0x10, 0x8f, 0x08, 0x15, 0x07, 0xed, 0x04, 0x73, 0x1e, 0x3c, 0x34, 0x24, 0xe0, 0x70, 0x8a, 0x1d, 0x34, 0xb1, 0x07, 0x72, 0x10, 0x02, 0xe0, 0xc7, 0xa1, 0xe3, 0xd0, 0xc1, 0xdb, 0x26, 0x02, 0x0e, 0x5e, 0xc1, 0x12, 0x70, 0xf0, 0x4e, 0x99, 0x80, 0xe3, 0xf1, 0xc1, 0xab, 0x71, 0x02, 0x0e, 0x1e, 0xe5, 0x13, 0x70, 0xf0, 0x02, 0xac, 0x80, 0x83, 0xf7, 0xcb, 0x0d, 0x6c, 0xf0, 0xea, 0x6b, 0x82, 0x0d, 0x9e, 0x98, 0x4e, 0xb0, 0xc1, 0x63, 0x10, 0x0a, 0x36, 0x78, 0xfc, 0x4c, 0xc1, 0x1a, 0x3c, 0xfe, 0xa7, 0x60, 0x0d, 0x1e, 0x9c, 0x54, 0xb0, 0xc1, 0x2b, 0x11, 0x0b, 0x16, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0xb8, 0xc1, 0x73, 0x62, 0x0b, 0xd6, 0xe0, 0xad, 0xb8, 0x05, 0x6b, 0xf0, 0x32, 0xde, 0x82, 0x35, 0x78, 0xe4, 0x72, 0xc1, 0x06, 0x8f, 0x96, 0x2e, 0xd8, 0xe0, 0x39, 0x40, 0x06, 0x6b, 0xf0, 0x24, 0x21, 0x83, 0x0d, 0x1e, 0x73, 0x64, 0xb0, 0xc1, 0x63, 0x92, 0x0c, 0x36, 0x78, 0x2c, 0x9b, 0xc1, 0x06, 0x2f, 0x8b, 0x33, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x0f, 0x59, 0xc4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x59, 0x65, 0x11, 0x07, 0xad, 0x2e, 0xdd, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xee, 0xcc, 0x22, 0x06, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x32, 0x2e, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x6d, 0xc0, 0x88, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xee, 0x03, 0x23, 0x0e, 0x9e, 0x95, 0x68, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa8, 0x18, 0x8c, 0x38, 0xa4, 0x0e, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x0f, 0xc2, 0x88, 0x41, 0xb0, 0xc1, 0x0b, 0x1f, 0x0d, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xd1, 0xd4, 0x19, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x50, 0x6a, 0xc4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x5d, 0xaa, 0x11, 0x07, 0xcf, 0xaa, 0x34, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xdc, 0xad, 0x46, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x91, 0xcd, 0x1a, 0x71, 0xd0, 0x52, 0xc1, 0xc0, 0x20, 0x19, 0x08, 0xd7, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0xbe, 0x35, 0xe2, 0x60, 0xfc, 0x74, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x88, 0xd7, 0x88, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x9e, 0x6c, 0xc4, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x71, 0x36, 0xe2, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x7c, 0xd2, 0x46, 0x1c, 0xa2, 0x79, 0x3c, 0x3e, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0xb7, 0x36, 0x62, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x5c, 0xdb, 0x46, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xd2, 0x6f, 0x23, 0x86, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xfb, 0xb8, 0x11, 0x07, 0x23, 0xff, 0x61, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x2d, 0xbb, 0x11, 0x07, 0xc7, 0xc8, 0xe9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xd1, 0xc4, 0x1b, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x57, 0x6f, 0xc4, 0xc1, 0x0b, 0x64, 0x0d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x79, 0xbe, 0x11, 0x07, 0x21, 0x00, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x5c, 0xfe, 0x46, 0x1c, 0x7a, 0x08, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x71, 0x0b, 0x1c, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x92, 0x83, 0x23, 0x0e, 0x8e, 0x91, 0xd3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x48, 0x17, 0x8e, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x7f, 0x38, 0xe2, 0xe0, 0x05, 0xb2, 0x06, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x8a, 0xe2, 0x88, 0x83, 0x10, 0x00, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x66, 0x8c, 0x23, 0x0e, 0x3d, 0x84, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb8, 0x3a, 0x8e, 0x18, 0x04, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x28, 0x43, 0x8e, 0x18, 0x76, 0x43, 0x1e, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x24, 0x27, 0x47, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x6d, 0xe5, 0x88, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xd1, 0xbe, 0x1c, 0x71, 0x90, 0x32, 0x18, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x86, 0xe6, 0x88, 0x83, 0xe5, 0xb8, 0x42, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x88, 0x71, 0x8e, 0x38, 0x34, 0xfc, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xd4, 0x73, 0xc4, 0xf0, 0x0b, 0xa2, 0x05, 0xe6, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xb5, 0xd0, 0x11, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x38, 0x3a, 0xe2, 0x60, 0x09, 0xee, 0xd1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x38, 0x97, 0x8e, 0xd8, 0x60, 0x75, 0x23, 0xd5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x0e, 0xa8, 0x23, 0x0e, 0xc6, 0x4f, 0xd7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x4e, 0xaa, 0x23, 0x0e, 0x96, 0xe3, 0x0a, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x71, 0x64, 0x1d, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x8e, 0xaf, 0x23, 0x0e, 0x86, 0x66, 0xd7, 0xf1, 0xf8, 0xf8, 0x76, 0x3c, 0x3e, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x1c, 0x3b, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x01, 0xed, 0x88, 0x83, 0x13, 0x26, 0xfa, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x64, 0x3b, 0xe2, 0x20, 0xa4, 0xc0, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x1f, 0xee, 0x88, 0x41, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xa6, 0xee, 0x88, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x2c, 0x8b, 0x47, 0x0c, 0xbb, 0x61, 0xd7, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xbc, 0x90, 0x47, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xa1, 0xf2, 0x88, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xaa, 0xcc, 0x23, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x20, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xf5, 0x79, 0xc4, 0x41, 0x50, 0x7a, 0x1f, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0x8f, 0x1e, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x84, 0x7a, 0xc4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x6d, 0xeb, 0x11, 0x07, 0x6d, 0xd8, 0x0a, 0x0c, 0x92, 0x81, 0xa1, 0x1a, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x14, 0xb2, 0x47, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xcb, 0xf6, 0x88, 0x83, 0x41, 0xb4, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xcc, 0xba, 0x47, 0x0c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x8a, 0xdf, 0x23, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb8, 0x86, 0x8f, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x46, 0x3e, 0xe2, 0xa0, 0x0d, 0x5b, 0x81, 0x41, 0x32, 0x90, 0xf5, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x34, 0xcd, 0x47, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x8b, 0x3e, 0xe2, 0x60, 0x10, 0xad, 0x1c, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x60, 0x7d, 0xc4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa8, 0xb4, 0x8f, 0x38, 0x58, 0xb8, 0x78, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xda, 0xfb, 0x88, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x8e, 0xf1, 0x23, 0x0e, 0x5e, 0x20, 0x6b, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x08, 0xcf, 0x8f, 0x38, 0x78, 0xdd, 0xc5, 0xc1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0xb0, 0x1f, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x04, 0x7f, 0xc4, 0xc1, 0x03, 0x39, 0x0e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x4c, 0x7f, 0xc4, 0xc1, 0x20, 0x5a, 0x39, 0x0e, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x91, 0xe5, 0x1f, 0x71, 0x30, 0xf8, 0x63, 0x8e, 0x43, 0xc7, 0xb7, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa8, 0xfb, 0x8f, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x10, 0x40, 0xe2, 0xe0, 0x01, 0x31, 0x06, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xd2, 0x00, 0x89, 0x83, 0xf6, 0xe7, 0x97, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x62, 0x01, 0x89, 0x83, 0xd7, 0xb2, 0x1c, 0x1c, 0x87, 0x8e, 0x43, 0x1b, 0x3c, 0xc3, 0xe5, 0x60, 0x0d, 0x1e, 0x17, 0x73, 0xb0, 0xc1, 0x73, 0x76, 0x0e, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x31, 0x54, 0x20, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x97, 0x81, 0xc4, 0x41, 0xcb, 0x0c, 0xf8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xbe, 0x03, 0x89, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0x88, 0x20, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xde, 0x04, 0x89, 0x43, 0x0c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0xfd, 0x82, 0xc4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x46, 0x1a, 0x24, 0x0e, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x59, 0x0f, 0x12, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x38, 0x84, 0x90, 0x38, 0x18, 0xf9, 0x0f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe8, 0x95, 0x90, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xfa, 0x84, 0xc4, 0xc1, 0x9a, 0x96, 0xa3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0xc4, 0x42, 0x62, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x3b, 0x17, 0x12, 0x83, 0x6c, 0x43, 0x5c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x11, 0x86, 0x21, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x5c, 0x86, 0xc4, 0xc1, 0xb3, 0xe3, 0x0e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xa4, 0x86, 0xc4, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x7c, 0x87, 0xc4, 0xc1, 0x9b, 0xef, 0x0e, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x34, 0x87, 0xc4, 0xc1, 0x7b, 0xf5, 0x0e, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xb5, 0x1b, 0x12, 0x07, 0x4d, 0x5c, 0xeb, 0x1f, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x1f, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0xf9, 0x21, 0x31, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x88, 0x05, 0x91, 0x38, 0xa4, 0x6a, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xba, 0x88, 0xc4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x07, 0x24, 0x12, 0x07, 0xad, 0x2e, 0xdd, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x4a, 0x4a, 0x24, 0x06, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0xc6, 0x46, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xb3, 0x3b, 0x12, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xed, 0x1e, 0x89, 0x41, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x74, 0x1f, 0x89, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x2c, 0x2c, 0x49, 0x0c, 0xbb, 0x41, 0xf0, 0x31, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x2e, 0x26, 0x89, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0xd6, 0x24, 0x71, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x0e, 0x9d, 0x24, 0x0e, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xe7, 0x93, 0xc4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xf9, 0x50, 0x12, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x10, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x4c, 0x4a, 0xe2, 0x90, 0xaf, 0x3d, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x6f, 0x4a, 0x62, 0xf8, 0x05, 0xd1, 0x02, 0x31, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x38, 0x95, 0xc4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x01, 0x56, 0x12, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x94, 0x5d, 0x49, 0x1c, 0xb4, 0x54, 0x30, 0x30, 0x48, 0x06, 0xb3, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x1f, 0x96, 0xc4, 0x41, 0x0a, 0xa4, 0xf9, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x74, 0x66, 0x49, 0x0c, 0x82, 0x0d, 0x16, 0x5a, 0x5b, 0x2d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x09, 0x4c, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x6f, 0x62, 0x12, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xc5, 0x31, 0x89, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x3a, 0xc9, 0x24, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd8, 0x2f, 0x93, 0x38, 0x68, 0x0a, 0x69, 0x60, 0x90, 0x0c, 0x64, 0xfd, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x13, 0x67, 0x12, 0x87, 0x7c, 0xed, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xdc, 0xa0, 0x49, 0x1c, 0xa2, 0x79, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x67, 0x6a, 0x12, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x6f, 0x4d, 0xe2, 0x60, 0xe1, 0xe2, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x32, 0xd9, 0x24, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x58, 0x6d, 0x93, 0x38, 0x68, 0x39, 0x07, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0xec, 0x26, 0x71, 0xf0, 0xba, 0x8b, 0x83, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0xfc, 0x4d, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x7b, 0x38, 0x89, 0x83, 0x85, 0xaa, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x42, 0x4e, 0xe2, 0x10, 0xcd, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x53, 0x69, 0x12, 0x87, 0x71, 0x39, 0x1e, 0x1f, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa8, 0x99, 0x93, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x23, 0x7a, 0x12, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xfc, 0xec, 0x49, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xb1, 0xc9, 0x27, 0x71, 0xd0, 0x52, 0xc1, 0xc0, 0x20, 0x19, 0x18, 0xaa, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x6c, 0x9f, 0xc4, 0x41, 0x48, 0x81, 0x1f, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xd7, 0x7e, 0x12, 0x07, 0x29, 0x83, 0x01, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xfc, 0x9f, 0xc4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x78, 0x08, 0x94, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x45, 0x50, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xc4, 0x41, 0x89, 0x83, 0x96, 0x0a, 0x06, 0x06, 0xc9, 0x40, 0xf1, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x84, 0x12, 0x4a, 0x1c, 0x8c, 0x09, 0xab, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x08, 0x2e, 0x94, 0x18, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x4c, 0x1b, 0x4a, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x51, 0x7e, 0x28, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0x50, 0xa2, 0xc4, 0x41, 0x4b, 0x05, 0x03, 0x83, 0x64, 0x20, 0xeb, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd8, 0x52, 0x94, 0x38, 0x18, 0x13, 0x56, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0xb7, 0x28, 0xb1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb8, 0x66, 0x94, 0x38, 0x58, 0xc9, 0x96, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xfb, 0x46, 0x89, 0x83, 0x94, 0xc1, 0x80, 0x43, 0x0c, 0x8f, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0xe4, 0x51, 0x62, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xb1, 0x07, 0x29, 0x71, 0xb0, 0x92, 0x2d, 0x6b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x9b, 0x91, 0x12, 0x07, 0x29, 0x83, 0x01, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0x57, 0x52, 0xe2, 0x10, 0xc3, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xa6, 0x27, 0x25, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xef, 0x94, 0x12, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x04, 0x58, 0x4a, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xf1, 0x75, 0x29, 0x71, 0xd0, 0x52, 0xc1, 0xc0, 0x20, 0x19, 0xc8, 0xfa, 0x0d, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xee, 0x30, 0x25, 0x0e, 0x42, 0x0a, 0xfc, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x36, 0x33, 0x25, 0x0e, 0x52, 0x06, 0x03, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x62, 0x7b, 0x53, 0x62, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xb4, 0x73, 0x4a, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xff, 0x4e, 0x89, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xb1, 0xf1, 0x29, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x5a, 0x40, 0x25, 0x0e, 0x16, 0x2e, 0x1e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xa2, 0x29, 0x54, 0x62, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x2f, 0x51, 0x89, 0x83, 0x85, 0xaf, 0x5e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xbc, 0x51, 0x89, 0x83, 0x77, 0x69, 0x20, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x99, 0xa4, 0x12, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xac, 0x96, 0x4a, 0x1c, 0xbc, 0x70, 0x49, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x24, 0x9b, 0x4a, 0x1c, 0xa4, 0x0c, 0x06, 0x1c, 0x87, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0xff, 0x54, 0xe2, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x44, 0xa4, 0x4a, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x5f, 0x4d, 0x89, 0x83, 0x14, 0x48, 0xf3, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xae, 0xe8, 0x24, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x48, 0xab, 0x93, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0xd8, 0x4e, 0xe2, 0xa0, 0xa5, 0x82, 0x81, 0x41, 0x32, 0x50, 0xae, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xdf, 0x77, 0x12, 0x07, 0x21, 0x00, 0x7e, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x03, 0x79, 0x12, 0x07, 0x29, 0x90, 0xe6, 0xc7, 0xa1, 0xe3, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x8a, 0x79, 0x24, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0x45, 0x55, 0x62, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x22, 0xb1, 0x55, 0x62, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xb1, 0x60, 0x2c, 0x71, 0xf0, 0xf4, 0x1e, 0x84, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xd1, 0x4e, 0x2c, 0x71, 0xf0, 0x54, 0x05, 0x83, 0x41, 0xb0, 0x41, 0x90, 0xc5, 0x2f, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0xad, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xaa, 0xab, 0xc4, 0xc1, 0x20, 0x31, 0x3f, 0x58, 0x89, 0x2f, 0x72, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0xc9, 0xaf, 0x12, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x7d, 0xb6, 0x12, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x99, 0xc1, 0x12, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xac, 0x0a, 0x4b, 0x1c, 0x34, 0x76, 0x8c, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x92, 0x87, 0x25, 0x0e, 0x31, 0x3c, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x5e, 0x5c, 0x89, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0x9e, 0x73, 0x25, 0x0e, 0x1e, 0x59, 0x85, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x68, 0xd7, 0x95, 0x38, 0xc4, 0x70, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x28, 0xe9, 0x95, 0x18, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xe2, 0xc6, 0x57, 0xe2, 0xe0, 0x91, 0x55, 0x08, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xaa, 0x5f, 0x89, 0x43, 0x0c, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0x38, 0x60, 0x89, 0x83, 0xb7, 0x88, 0x21, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x88, 0xcf, 0x5b, 0x89, 0x83, 0xc6, 0xc5, 0xee, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x44, 0x82, 0xac, 0xc4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0x10, 0x1b, 0xb3, 0x12, 0x07, 0x0f, 0x88, 0x31, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0xe4, 0xd0, 0x4a, 0x1c, 0xb4, 0x3f, 0xbf, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x64, 0xd5, 0x4a, 0x1c, 0xac, 0xee, 0x85, 0x39, 0x0e, 0x0d, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0x20, 0xd6, 0x61, 0x25, 0x0e, 0x1a, 0x1b, 0xc7, 0x3f, 0x58, 0x89, 0x2f, 0x72, 0x3c, 0x3e, 0x88, 0xa0, 0x08, 0x8b, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x91, 0xc6, 0x2a, 0x71, 0xf0, 0xf4, 0x1e, 0x84, 0x41, 0xb0, 0x41, 0x90, 0xc5, 0x2f, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0xad, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xc4, 0xd2, 0xaa, 0xc4, 0x41, 0x63, 0xe3, 0xf8, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x41, 0x44, 0x87, 0x48, 0x1c, 0x2c, 0x95, 0xd3, 0x39, 0x78, 0xdb, 0x1f, 0xc2, 0xc1, 0xa3, 0x04, 0x11, 0x0e, 0x5e, 0x1a, 0x8a, 0x70, 0xf0, 0x88, 0x94, 0x84, 0xe3, 0xf1, 0xf1, 0xf8, 0xe0, 0x01, 0x51, 0x0d, 0x07, 0x2f, 0x17, 0x6b, 0x38, 0x78, 0xf5, 0x5b, 0xc3, 0xf1, 0xf8, 0xe0, 0x95, 0xdd, 0x0d, 0x07, 0x8f, 0x68, 0x71, 0x38, 0x88, 0xa8, 0x1f, 0x85, 0x0e, 0xde, 0x50, 0x3e, 0xbf, 0xe1, 0x44, 0xd8, 0xe0, 0x75, 0xd5, 0x72, 0x1b, 0x2c, 0x66, 0x83, 0x3a, 0x78, 0xb2, 0xe2, 0xdd, 0x86, 0x13, 0x61, 0x83, 0xc7, 0x51, 0xcb, 0x6d, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x16, 0x2a, 0x53, 0x1d, 0xbc, 0x14, 0x5c, 0x6f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x49, 0xaa, 0x68, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x07, 0x2f, 0xef, 0xce, 0x3b, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x41, 0x74, 0xd5, 0x58, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x08, 0x0f, 0xe6, 0x18, 0xfc, 0x98, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xed, 0x0f, 0xe6, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x86, 0x30, 0x07, 0xc9, 0x40, 0xe8, 0x0e, 0x4e, 0x42, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7a, 0x11, 0xe6, 0x41, 0x29, 0x22, 0x39, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x91, 0x30, 0x0f, 0x9d, 0xd4, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xcb, 0x84, 0x39, 0xc1, 0xfb, 0xbf, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x8a, 0xc2, 0x3c, 0x88, 0x8a, 0x1d, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x86, 0x0a, 0xf3, 0xa0, 0x60, 0x78, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0x57, 0x98, 0x13, 0xac, 0xff, 0x1e, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x60, 0x0b, 0xf3, 0xd0, 0x48, 0xf0, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0xbc, 0x30, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x86, 0x61, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x24, 0xc3, 0x1c, 0x24, 0x03, 0xe9, 0xaf, 0x83, 0x63, 0x56, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x9d, 0x61, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xa3, 0x86, 0x39, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xa0, 0x0d, 0x73, 0x90, 0x0c, 0xea, 0x0e, 0xa9, 0x83, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x87, 0xc3, 0x3c, 0xc4, 0xff, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x3c, 0x87, 0x39, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0xda, 0x61, 0x1e, 0x2c, 0xf2, 0x08, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x54, 0x3e, 0xcc, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0xd8, 0xe0, 0xc1, 0xec, 0x33, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1e, 0xf3, 0x3e, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x39, 0x78, 0x88, 0x20, 0xe6, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xfc, 0xc3, 0x1c, 0x0f, 0x1e, 0x22, 0x88, 0x79, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x27, 0xc4, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x7a, 0x88, 0x39, 0x48, 0x06, 0x9a, 0xff, 0x1c, 0x1c, 0xb3, 0x8a, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x42, 0x45, 0xcc, 0x0d, 0xb9, 0xef, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x1a, 0x31, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x37, 0x58, 0xa3, 0xad, 0xb0, 0x41, 0x29, 0x22, 0xb9, 0xc1, 0x68, 0xf0, 0xdd, 0x60, 0xe0, 0x1b, 0x6f, 0xb0, 0xfe, 0xf1, 0x65, 0x83, 0x35, 0x69, 0x09, 0x1b, 0x24, 0xa4, 0xdc, 0x6f, 0x90, 0x50, 0x76, 0xb2, 0xc1, 0x39, 0x72, 0x77, 0x83, 0x55, 0xdd, 0x0b, 0x1b, 0xac, 0x7f, 0x7c, 0xd9, 0x60, 0x8d, 0xb6, 0xc2, 0x06, 0x09, 0x65, 0x27, 0x1b, 0x24, 0x78, 0x3c, 0x6f, 0x70, 0x8e, 0xdc, 0xdd, 0x60, 0x1d, 0x33, 0xd8, 0x06, 0xeb, 0x1f, 0x5f, 0x36, 0x48, 0x28, 0x3b, 0xd9, 0x60, 0xdc, 0xee, 0x6e, 0x70, 0x8e, 0xdc, 0xdd, 0x60, 0x34, 0xf8, 0x6e, 0xb0, 0x8e, 0x19, 0x6c, 0x83, 0x84, 0xb2, 0x93, 0x41, 0xb0, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc6, 0x12, 0x73, 0x10, 0x6c, 0xd0, 0xe8, 0xd7, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x06, 0xc9, 0x06, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0x3c, 0x78, 0x86, 0x11, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0x99, 0x98, 0x87, 0x16, 0x40, 0xc7, 0xa1, 0xe3, 0xd0, 0x21, 0x86, 0x07, 0xab, 0x19, 0x80, 0x8e, 0x6f, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x84, 0x13, 0xf3, 0x20, 0x04, 0xc0, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x7c, 0x62, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x72, 0x28, 0xe6, 0xa1, 0x05, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa5, 0xa4, 0x98, 0x07, 0x21, 0x00, 0x7e, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x1e, 0x15, 0x73, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xeb, 0x2a, 0xe6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0xae, 0x98, 0xc3, 0x6f, 0xd0, 0x66, 0x9c, 0xff, 0xf1, 0x6d, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe6, 0x58, 0xcc, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x6e, 0x31, 0x0f, 0xa9, 0x83, 0xe3, 0xf1, 0xf1, 0xf8, 0x78, 0x7c, 0x3c, 0x1e, 0x04, 0x8b, 0x1b, 0x3c, 0x5c, 0x1f, 0xb3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0xc1, 0x98, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xf8, 0x62, 0x0e, 0xbb, 0x70, 0x8b, 0x07, 0xaf, 0x41, 0x55, 0x39, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0x88, 0x31, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xda, 0x18, 0x73, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x38, 0x6e, 0xb3, 0xd8, 0x20, 0x8e, 0xdb, 0x2c, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0xbe, 0xdc, 0x2c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x6e, 0xc6, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x4f, 0x19, 0xf3, 0xe0, 0x6d, 0x22, 0x46, 0xc3, 0x2e, 0xdc, 0xe2, 0xc1, 0xab, 0xd2, 0x14, 0x0f, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5a, 0x68, 0xcc, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x9b, 0xc6, 0x1c, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x20, 0x06, 0xe6, 0x2c, 0x36, 0x88, 0x81, 0x39, 0x8b, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0xcd, 0x39, 0x8b, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xd3, 0xc6, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xe4, 0x1a, 0x73, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x48, 0xde, 0x1d, 0x56, 0x68, 0x0f, 0x4d, 0x81, 0x06, 0xd9, 0x06, 0xb1, 0x39, 0x67, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x29, 0x38, 0xe6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0xdd, 0x98, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x80, 0x72, 0xff, 0xee, 0x78, 0x7e, 0x68, 0x01, 0x36, 0xec, 0xc2, 0x6d, 0xf0, 0xe8, 0x03, 0xb9, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x71, 0x1c, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0xcc, 0x31, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0xf4, 0x81, 0xdc, 0x06, 0x8f, 0x3e, 0x90, 0x3b, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x38, 0xe3, 0xb3, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x40, 0x76, 0xcc, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0xd2, 0x31, 0x0f, 0xa2, 0xf9, 0xce, 0x62, 0x90, 0x6d, 0x10, 0x67, 0x7c, 0x16, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xca, 0x63, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xf6, 0x8e, 0x39, 0x08, 0x36, 0x78, 0x0e, 0xc4, 0xd5, 0xa1, 0x05, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0xf5, 0x98, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x85, 0x8f, 0x39, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x78, 0xf0, 0x70, 0x7d, 0xcc, 0x0d, 0xe2, 0x9f, 0xd0, 0xe2, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0xa2, 0x6b, 0xd0, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc6, 0x7f, 0xcc, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0xf8, 0x31, 0x0f, 0x9e, 0x89, 0x2f, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x1e, 0xaf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0x15, 0xbc, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x62, 0xf0, 0x2e, 0x2e, 0x08, 0x16, 0x37, 0x78, 0x98, 0x58, 0xd0, 0xe1, 0x14, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xdd, 0xc1, 0x3b, 0xec, 0xc2, 0x2d, 0x1e, 0xbc, 0xb3, 0x84, 0xf7, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x03, 0xe1, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x96, 0x11, 0xde, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x62, 0x6f, 0xd1, 0x62, 0x83, 0xd8, 0x5b, 0xb4, 0x38, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x98, 0x60, 0xb4, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x44, 0x85, 0x77, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x70, 0x13, 0xde, 0x41, 0xb0, 0xc1, 0xd3, 0xd1, 0xb9, 0x0e, 0x1d, 0x34, 0x86, 0xdd, 0xe0, 0x39, 0x12, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xd0, 0xc2, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb5, 0x2f, 0xbc, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0x4d, 0x22, 0x68, 0x83, 0xa7, 0x49, 0x04, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x54, 0x45, 0x5a, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xca, 0x0d, 0xef, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x45, 0x33, 0xbc, 0x83, 0x60, 0x83, 0xa7, 0xa3, 0x73, 0x1d, 0x9a, 0x02, 0x0d, 0xb2, 0x0d, 0xa2, 0x2a, 0xd2, 0x62, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x7a, 0x78, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xd0, 0xe1, 0x3d, 0x78, 0x6d, 0x83, 0xd4, 0x20, 0xdb, 0x20, 0xaa, 0x22, 0x2d, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x80, 0x88, 0x77, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0a, 0x20, 0xde, 0x83, 0xb7, 0xa2, 0x73, 0x0d, 0xb2, 0x0d, 0xa2, 0x2a, 0xd2, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x08, 0x25, 0xde, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0x8d, 0x78, 0x07, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0x4a, 0xec, 0xc1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xcd, 0x4c, 0xbc, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xf7, 0xc4, 0x7b, 0xf0, 0xc6, 0xc5, 0xb3, 0x41, 0xb6, 0x41, 0x34, 0x76, 0x5a, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x61, 0x15, 0xef, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x52, 0xbc, 0x83, 0x60, 0x83, 0x87, 0xed, 0xf5, 0x1c, 0xac, 0x01, 0x65, 0x1a, 0x64, 0x1b, 0x44, 0x63, 0xa7, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x61, 0x5b, 0xbc, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x60, 0xf1, 0x0e, 0x82, 0x0d, 0x1e, 0xb6, 0xd7, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x63, 0xe0, 0xd5, 0xe1, 0x25, 0x87, 0x8e, 0x61, 0xc7, 0xa1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x0a, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x81, 0xc6, 0x3b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9e, 0x38, 0xde, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0xee, 0x78, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x83, 0x97, 0x14, 0xe4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xa0, 0x30, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x73, 0xf0, 0x3e, 0x3e, 0xde, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x9f, 0xc7, 0x3b, 0x1e, 0xbc, 0x8f, 0x8f, 0xf7, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xf0, 0xc7, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x4b, 0x90, 0x77, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x43, 0x21, 0xef, 0x41, 0x49, 0x17, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x1f, 0xf2, 0x1e, 0x14, 0x76, 0x38, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x52, 0x91, 0xf7, 0x90, 0x3a, 0x38, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xdd, 0xc8, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x23, 0x92, 0x77, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf3, 0x24, 0xef, 0x41, 0x32, 0x65, 0xf5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x68, 0xc9, 0x7b, 0x50, 0xd8, 0xe1, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa8, 0x4c, 0xde, 0x43, 0xaa, 0xe6, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x09, 0x27, 0xef, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb8, 0x4f, 0xde, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x44, 0x94, 0xf7, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0x49, 0x79, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x9e, 0xf2, 0x1e, 0xac, 0xd4, 0xf4, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x54, 0x79, 0x0f, 0x31, 0x5c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xb4, 0xf2, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xed, 0x2b, 0xef, 0xa1, 0x95, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x6d, 0xb2, 0xbc, 0x87, 0xa3, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xd4, 0xf2, 0x1e, 0x52, 0x07, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x6f, 0x79, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xed, 0xf2, 0x0e, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf5, 0xbd, 0xbc, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x0a, 0xcc, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x6c, 0x98, 0xf7, 0x20, 0x45, 0xe2, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x31, 0xe6, 0x3d, 0xc4, 0x70, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x8d, 0xcc, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0xcb, 0xbc, 0x87, 0xfe, 0xe4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x39, 0xf3, 0x1e, 0x8e, 0xf6, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x0f, 0xcd, 0x7b, 0x48, 0xd5, 0x1c, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x9e, 0xe6, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x7a, 0xcd, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x4b, 0x9b, 0x77, 0x90, 0x0c, 0x14, 0xa7, 0x83, 0xb3, 0x97, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xd1, 0xcd, 0x7b, 0x88, 0xe1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xf9, 0x9b, 0x77, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0xc4, 0x79, 0x0f, 0xca, 0xb8, 0x9d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0xca, 0x79, 0x0f, 0xfd, 0xc9, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x02, 0x3a, 0xef, 0x61, 0xaf, 0xf0, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb8, 0x3a, 0xef, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xd9, 0xce, 0x3b, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xc1, 0xf3, 0x0e, 0x92, 0x01, 0xeb, 0xfe, 0xab, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x41, 0xf5, 0xbc, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xa8, 0xe8, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x91, 0xd1, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x7a, 0xa3, 0xf7, 0xe0, 0x7d, 0x3f, 0x1c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x09, 0xd2, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x6a, 0xa4, 0xf7, 0x20, 0x79, 0x26, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x30, 0xe9, 0x3d, 0xc4, 0x70, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x8c, 0xd2, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x89, 0x2b, 0xbd, 0x07, 0x43, 0x1e, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2a, 0x97, 0xde, 0x43, 0x2b, 0xf1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x11, 0xd3, 0x7b, 0x10, 0x98, 0xd8, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0x34, 0xbd, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x70, 0x7a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xeb, 0xf4, 0x1e, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x7b, 0x7a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x01, 0xf5, 0x0e, 0x92, 0x81, 0xe2, 0x74, 0x70, 0xce, 0x3b, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0x86, 0x7a, 0x0f, 0x31, 0x5c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x17, 0xf5, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x28, 0x52, 0xef, 0xc1, 0xb9, 0xa5, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb8, 0xa5, 0xde, 0x43, 0x2b, 0xf1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xe3, 0xd4, 0x7b, 0x30, 0xde, 0x74, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0xa2, 0x7a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x54, 0xf5, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xbe, 0xea, 0x1d, 0x24, 0x03, 0xc5, 0xe9, 0xe0, 0x5c, 0x7f, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x6a, 0xf5, 0x1e, 0x62, 0xb8, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xe9, 0xea, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf6, 0xaf, 0xde, 0x83, 0x63, 0x60, 0xfe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb5, 0x62, 0xbd, 0x07, 0x69, 0x2b, 0x24, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb1, 0xac, 0xf7, 0x60, 0xf0, 0x4e, 0x1e, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x43, 0xeb, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xc3, 0xd6, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xde, 0xad, 0x77, 0x90, 0x0c, 0x14, 0xa7, 0x83, 0x03, 0x45, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x1b, 0xd7, 0x7b, 0x88, 0xe1, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x8b, 0xae, 0x77, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0xee, 0x7a, 0x0f, 0x1e, 0x18, 0xf3, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x76, 0x5e, 0xef, 0xe1, 0x68, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x7c, 0xbd, 0x07, 0x03, 0x91, 0xfa, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdb, 0x5f, 0xef, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x9d, 0xb1, 0x77, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x7c, 0xec, 0x1d, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x24, 0x7b, 0x0f, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0x94, 0xbd, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xc1, 0xec, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x76, 0xcd, 0xde, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xed, 0xec, 0x3d, 0x18, 0x88, 0xd4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x83, 0xf6, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x20, 0xed, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x6d, 0xda, 0x7b, 0x90, 0x7c, 0x9a, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xa6, 0xf6, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x61, 0xed, 0x1d, 0x24, 0x03, 0x6d, 0x9d, 0x0e, 0x4e, 0x1b, 0xca, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbe, 0x6b, 0xef, 0xa1, 0x3f, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x8d, 0xed, 0x3d, 0x18, 0x88, 0xd4, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x49, 0xdb, 0x7b, 0x30, 0x9a, 0xcf, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0xdd, 0xf6, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x83, 0x6e, 0xef, 0x86, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xcc, 0xdb, 0x3b, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xf0, 0xb7, 0x77, 0x90, 0x0c, 0xf4, 0x75, 0x3a, 0x38, 0x66, 0x2c, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0xc2, 0xbd, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x4e, 0xdc, 0x7b, 0xe8, 0x4f, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe9, 0x71, 0xef, 0xc1, 0x68, 0x3e, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x71, 0xca, 0xbd, 0x07, 0x85, 0x5b, 0xd2, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa6, 0xe6, 0xde, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0xd0, 0xbd, 0x83, 0x64, 0xe0, 0x7d, 0xa7, 0x83, 0x63, 0xc6, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x2c, 0xdd, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x7d, 0xd5, 0xbd, 0x87, 0xfe, 0xe4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x61, 0xf7, 0x1e, 0x8c, 0xe6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb1, 0xdd, 0x7b, 0x50, 0xb8, 0x25, 0x1d, 0x87, 0x86, 0x5f, 0x10, 0x2d, 0x50, 0xfe, 0x0f, 0x42, 0x00, 0xfc, 0x78, 0x3c, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfe, 0xee, 0xde, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x17, 0xbc, 0x77, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x1b, 0xef, 0x3d, 0xa4, 0x6a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x35, 0xef, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x96, 0xde, 0x7b, 0x10, 0xad, 0x0f, 0x17, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0a, 0x7b, 0xef, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xbb, 0xf7, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x62, 0x7c, 0xef, 0x41, 0xda, 0x0a, 0xc9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xa2, 0xef, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x71, 0xdf, 0x3b, 0x48, 0x06, 0x3a, 0xf7, 0x1d, 0x1c, 0x33, 0x96, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x3b, 0xbf, 0xf7, 0xa0, 0x70, 0x4b, 0x3a, 0x0e, 0x1d, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x9c, 0xc1, 0x77, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x43, 0x85, 0xef, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe2, 0x0b, 0xdf, 0x41, 0x32, 0x50, 0x9c, 0x0e, 0x8e, 0x19, 0xcb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa1, 0x86, 0xef, 0x21, 0x86, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x98, 0x0e, 0xdf, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xff, 0xf0, 0x3d, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4a, 0x11, 0xdf, 0x83, 0x32, 0x6e, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x95, 0xf8, 0x1e, 0x14, 0x6e, 0x49, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x50, 0x7c, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xb1, 0xf8, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x78, 0xf1, 0x1d, 0x24, 0x03, 0xc5, 0xe9, 0x20, 0x2d, 0x68, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x8e, 0xf1, 0x3d, 0xc4, 0x70, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x47, 0xe3, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x37, 0xbe, 0x07, 0x65, 0xdc, 0xce, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0x39, 0xbe, 0x07, 0x65, 0xdc, 0xce, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xe6, 0xf1, 0x3d, 0x38, 0xcb, 0x1e, 0x1f, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xfd, 0xf1, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x2e, 0xe4, 0x7b, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x2c, 0xf2, 0x1d, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x26, 0xf9, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x15, 0x93, 0xef, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x86, 0x27, 0xdf, 0x41, 0x32, 0x50, 0x9c, 0x0e, 0x92, 0x95, 0x56, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe6, 0x28, 0xdf, 0x43, 0x7f, 0xf2, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x23, 0x95, 0xef, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x5d, 0xf9, 0x1e, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xd4, 0xf2, 0x3d, 0x18, 0x88, 0xd4, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xbd, 0xcb, 0xf7, 0xe0, 0x9c, 0x99, 0x7c, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x19, 0xcc, 0x77, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe3, 0x98, 0xef, 0x20, 0x19, 0x94, 0x4c, 0x20, 0xfe, 0xff, 0xff, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x20, 0x33, 0xdf, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x48, 0xf3, 0x3d, 0x18, 0x88, 0xd4, 0xc7, 0xa1, 0xe1, 0x37, 0x78, 0xe9, 0xfe, 0xcd, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0xd8, 0x7c, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x60, 0x37, 0xdf, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0x71, 0xbe, 0x83, 0x64, 0xe0, 0xa8, 0x3a, 0x38, 0xd7, 0x1f, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0x76, 0xbe, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x95, 0xe7, 0x7b, 0x50, 0xb8, 0x25, 0x1d, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2a, 0xd4, 0x77, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x55, 0xea, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0xa8, 0xbe, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x55, 0x7d, 0x07, 0xc9, 0x40, 0x71, 0x3a, 0x88, 0x8b, 0xa2, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb0, 0xd5, 0xf7, 0xd0, 0x9f, 0x7c, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x04, 0xeb, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0xb2, 0xbe, 0x87, 0xd4, 0xc1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0xb5, 0xbe, 0x07, 0x03, 0x91, 0x7a, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xe4, 0xfa, 0x1e, 0x94, 0x8b, 0x3d, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x78, 0x7d, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xfb, 0xfa, 0x0e, 0x92, 0x41, 0xc9, 0x04, 0xe6, 0xff, 0xff, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x18, 0xec, 0x7b, 0x48, 0x1d, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x34, 0x62, 0xdf, 0x83, 0x81, 0x48, 0x7d, 0x1c, 0x1a, 0x7e, 0x83, 0x46, 0xb2, 0x9e, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x75, 0xec, 0x3b, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x28, 0xfb, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x66, 0xf6, 0x1d, 0x24, 0x03, 0x47, 0xd5, 0xc1, 0x81, 0x22, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x7c, 0xf6, 0x3d, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x70, 0x69, 0xdf, 0x83, 0xc2, 0x2d, 0xe9, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x55, 0xfb, 0xbe, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xfe, 0x7d, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x07, 0xfc, 0x0e, 0x92, 0x81, 0xe2, 0x74, 0x10, 0x8f, 0x59, 0x17, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x28, 0xc1, 0xef, 0xa1, 0x3f, 0xf9, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xec, 0xe0, 0x77, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x14, 0x7e, 0x0f, 0xa9, 0x9a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x19, 0x7e, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x3e, 0xfc, 0x0e, 0x92, 0xc1, 0x9f, 0x09, 0xd4, 0xff, 0xff, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x95, 0xc4, 0xef, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x88, 0x8a, 0xdf, 0x41, 0x32, 0xd0, 0xd6, 0xe9, 0x20, 0x1e, 0xb3, 0x2e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xec, 0x8b, 0xdf, 0x43, 0x7f, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xaa, 0xf1, 0x7b, 0x90, 0x68, 0x62, 0x73, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0x1d, 0xbf, 0x87, 0x54, 0xcd, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x81, 0xfc, 0x1e, 0x24, 0x9a, 0xd8, 0x1c, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x1a, 0xf9, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfa, 0x92, 0xdf, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x44, 0xf9, 0x3d, 0xa4, 0x6a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x5a, 0xf9, 0x3d, 0xa4, 0x0e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc6, 0xe5, 0xf7, 0x20, 0xd1, 0xc4, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0x62, 0x7e, 0x0f, 0xca, 0xc5, 0x9e, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xa2, 0xf9, 0x3d, 0x18, 0x6f, 0x3a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x79, 0xf3, 0x7b, 0x10, 0x98, 0xd8, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xaf, 0xf3, 0x7b, 0x30, 0x78, 0x27, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xf1, 0xf9, 0x3d, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x5c, 0xed, 0x3b, 0xc8, 0xd6, 0xa0, 0x2d, 0x90, 0x95, 0x0d, 0xfd, 0xc9, 0x07, 0xc1, 0x82, 0x64, 0x20, 0xfd, 0x73, 0xd0, 0x9a, 0x83, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x10, 0x9e, 0x83, 0xd6, 0x1c, 0xfc, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0xdc, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x9b, 0x83, 0xb7, 0x77, 0xfb, 0x6e, 0x98, 0xb8, 0x35, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0x1f, 0x3c, 0xdc, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0x79, 0x38, 0x8f, 0x37, 0x9c, 0x08, 0x1b, 0xc4, 0x81, 0xe0, 0xc5, 0x06, 0x8b, 0xd9, 0xa0, 0x96, 0x59, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xe7, 0x49, 0x36, 0x08, 0x12, 0xa2, 0x83, 0x36, 0x69, 0x2a, 0x0e, 0x56, 0xd2, 0xe9, 0x1f, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x10, 0x65, 0x83, 0x17, 0x1b, 0x26, 0x6e, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0x1f, 0x5c, 0xdc, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x1b, 0xc4, 0x81, 0xe0, 0xc5, 0x86, 0x13, 0x61, 0x83, 0x38, 0x10, 0xbc, 0xd8, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x86, 0x4f, 0x6c, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x41, 0x50, 0x9e, 0x1d, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0x20, 0xbe, 0x0e, 0x2f, 0x36, 0xcc, 0xfd, 0xe0, 0xe3, 0x41, 0x64, 0x17, 0x5e, 0x6c, 0x98, 0xfb, 0xc1, 0xc9, 0x83, 0xd5, 0xa3, 0xfa, 0x07, 0x21, 0xa5, 0xbc, 0xe1, 0x44, 0xd8, 0x20, 0x06, 0x02, 0x2f, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0x72, 0x50, 0x88, 0x04, 0x1f, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x50, 0x88, 0x04, 0x6f, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0xe7, 0xc1, 0xfd, 0x6e, 0xa8, 0xe3, 0x03, 0x5e, 0x9d, 0xd8, 0xd0, 0x86, 0x19, 0x5a, 0xc3, 0x0c, 0x6d, 0xf0, 0xb2, 0x0d, 0x8c, 0x0d, 0x27, 0xc2, 0x06, 0x2f, 0xdb, 0xc0, 0xd8, 0x60, 0x31, 0x1b, 0xd4, 0xc1, 0x1b, 0xca, 0xe7, 0x37, 0x9c, 0x08, 0x1b, 0x44, 0x77, 0xe3, 0xc5, 0x06, 0x8b, 0xd9, 0xa0, 0x0e, 0x5e, 0xad, 0xc1, 0xbb, 0xe1, 0x44, 0xd8, 0x20, 0x2a, 0x19, 0x2f, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0x72, 0xf0, 0x56, 0xba, 0xdf, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xde, 0x4a, 0xf7, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2b, 0xb6, 0xef, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x6d, 0xfb, 0x8e, 0x07, 0x6f, 0xef, 0xf6, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc4, 0x70, 0xdf, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x65, 0xe4, 0xbe, 0x07, 0x85, 0x5b, 0xd2, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd0, 0xb9, 0xef, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x2c, 0x48, 0x06, 0xd2, 0x3f, 0x07, 0xc9, 0x4a, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x78, 0x0e, 0x92, 0x95, 0x56, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0xdc, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x9b, 0x83, 0x57, 0xb2, 0xfb, 0x1e, 0xc4, 0x1d, 0xe0, 0xc5, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x50, 0xf7, 0x5d, 0x3c, 0x78, 0x25, 0xbb, 0xef, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xf0, 0xbe, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x2e, 0xef, 0x7b, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb8, 0xde, 0xf7, 0xa0, 0x70, 0x4b, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xe2, 0xfb, 0x1e, 0x4e, 0xb1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0xf8, 0x7c, 0x07, 0xd9, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0xa1, 0x3f, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x7f, 0x0e, 0xd2, 0x82, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xf0, 0x1c, 0xa4, 0x05, 0x8d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x37, 0x07, 0x4f, 0x23, 0xf4, 0x3d, 0x88, 0x3b, 0xc0, 0x8b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xfe, 0x7c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x3c, 0xd0, 0x77, 0x3c, 0x78, 0x1a, 0xa1, 0xef, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x1f, 0xfa, 0x1e, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x55, 0xf4, 0x3d, 0x28, 0xdc, 0x92, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0x1a, 0x7d, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x83, 0x98, 0xe9, 0xbb, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x71, 0x7e, 0x17, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0xcd, 0xc1, 0xa3, 0x25, 0x7d, 0x0f, 0xe2, 0x0e, 0xf0, 0x62, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x41, 0xfa, 0x2e, 0x1e, 0x3c, 0x5a, 0xd2, 0x77, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x12, 0x4b, 0xdf, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xc7, 0xf4, 0x3d, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xbb, 0xe9, 0x7b, 0x50, 0xb8, 0x25, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x3d, 0x7d, 0x0f, 0xa7, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc9, 0xfc, 0xbd, 0x83, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0xd0, 0x9f, 0x7c, 0x10, 0x6c, 0xf0, 0x54, 0x3d, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcf, 0xe8, 0x03, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x1c, 0xbc, 0x46, 0xc0, 0x77, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd8, 0xff, 0xde, 0xf1, 0xe0, 0x35, 0x02, 0xbe, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0x04, 0xbe, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x48, 0xff, 0x1c, 0x1c, 0x28, 0x92, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xf0, 0x1c, 0x1c, 0x28, 0x92, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0xdf, 0x20, 0x42, 0x69, 0x2f, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xda, 0x81, 0xef, 0x41, 0x44, 0xd8, 0x5e, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0x14, 0x7c, 0x0f, 0xa7, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x95, 0xf8, 0xbc, 0x83, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0x10, 0xc3, 0x41, 0xb0, 0xc1, 0x4b, 0x91, 0x48, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xbc, 0x62, 0x89, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x39, 0x78, 0x29, 0x40, 0xef, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xd9, 0x20, 0x5e, 0x1b, 0x2f, 0x0e, 0x1e, 0x17, 0xea, 0x7c, 0x10, 0xa5, 0x80, 0x17, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xed, 0xf3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x88, 0x3f, 0xef, 0x78, 0xf0, 0x52, 0x80, 0xde, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x21, 0xe8, 0x3d, 0x88, 0x63, 0x6a, 0x8b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0x0d, 0x7a, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd9, 0x09, 0xbd, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0xc1, 0x03, 0x69, 0x01, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x48, 0x36, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x89, 0xdb, 0x20, 0x7e, 0x80, 0x2f, 0x0e, 0xa2, 0x14, 0xf0, 0x62, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x32, 0xf4, 0x6e, 0x10, 0x8f, 0xc3, 0x17, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x3d, 0xf4, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x12, 0xbd, 0x87, 0x53, 0xec, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x2f, 0xfd, 0x0e, 0x82, 0x0d, 0x1e, 0xb6, 0xd7, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xe3, 0xc1, 0x7b, 0x9c, 0x7e, 0x0f, 0xa9, 0x9a, 0xe3, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x5e, 0xfb, 0x1d, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x50, 0xdd, 0xef, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0x7a, 0xbf, 0xc3, 0x6e, 0x58, 0xdf, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd0, 0xc1, 0xdf, 0x43, 0x2b, 0xf1, 0x61, 0x37, 0x34, 0x3d, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xae, 0xc4, 0xdf, 0x83, 0x32, 0x6e, 0x67, 0xd8, 0x0d, 0xed, 0xc3, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xe6, 0xf1, 0xf7, 0xa0, 0x00, 0x80, 0x1a, 0x76, 0x43, 0x4f, 0xf2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xa8, 0xfc, 0x3d, 0x48, 0x94, 0xfb, 0x18, 0x64, 0x1b, 0x9a, 0xaf, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xde, 0xf7, 0x7b, 0x38, 0xc5, 0x8e, 0xc7, 0x2b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbc, 0xe7, 0xef, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x0c, 0xf6, 0x77, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd2, 0xda, 0xdf, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x09, 0xf7, 0xf7, 0x30, 0x2e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xee, 0xfe, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xf6, 0xfd, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x17, 0xfc, 0x7b, 0x70, 0x96, 0xcc, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x88, 0x7f, 0x0f, 0xfd, 0xc9, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbe, 0xf1, 0xef, 0x21, 0x9a, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x93, 0x7f, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3a, 0xe6, 0xdf, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x25, 0xcf, 0xbf, 0x07, 0xad, 0xc2, 0x45, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc9, 0xd1, 0xbf, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x48, 0xfd, 0x7b, 0x38, 0xda, 0x8f, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x74, 0xfd, 0x7b, 0x68, 0x25, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7c, 0xf6, 0xef, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xc9, 0xfd, 0x3b, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x7d, 0xff, 0x1e, 0x5a, 0x89, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x1f, 0xfe, 0x7b, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5a, 0xf2, 0xdf, 0x43, 0x2b, 0xf1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0xce, 0x7f, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x06, 0xf5, 0xdf, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0xec, 0xbf, 0x07, 0xad, 0xc2, 0x45, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x61, 0xef, 0xbf, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x22, 0xff, 0x7b, 0x50, 0xc6, 0xed, 0x1c, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x9e, 0xfe, 0xf7, 0xa0, 0x8c, 0xdb, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xf5, 0xfe, 0x77, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xd2, 0xff, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xd0, 0xff, 0x7b, 0xd0, 0x2a, 0x5c, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xfa, 0xff, 0x7b, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x6d, 0x02, 0xc0, 0x07, 0x05, 0x00, 0xd4, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x0a, 0x80, 0x0f, 0x0a, 0x00, 0xa8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x0f, 0x80, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x58, 0x05, 0xe0, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x61, 0x0d, 0xc0, 0x07, 0xad, 0xc2, 0x45, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0x10, 0xc0, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x2c, 0x01, 0x7c, 0x90, 0x28, 0xf7, 0x71, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc6, 0x0a, 0xe0, 0x83, 0x44, 0xb9, 0x8f, 0xc3, 0x29, 0x76, 0x3c, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xfa, 0x00, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9a, 0x12, 0xe0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x43, 0x80, 0x07, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x39, 0x48, 0x7f, 0x26, 0x1a, 0x64, 0x1b, 0xc4, 0xd8, 0xff, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0x2b, 0xc0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x9f, 0x00, 0x1f, 0xbc, 0x31, 0xcd, 0xeb, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0x58, 0xdc, 0x20, 0x0d, 0x20, 0xe3, 0x70, 0x8a, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x8a, 0x01, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf6, 0x1b, 0xe0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x67, 0x80, 0x0f, 0xde, 0x7e, 0xb7, 0x35, 0xc8, 0x36, 0x88, 0xa9, 0x02, 0x8c, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xf1, 0x01, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x56, 0x07, 0x78, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x81, 0x80, 0x0f, 0x47, 0xfb, 0x20, 0xdb, 0x20, 0xa6, 0x0a, 0x30, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x38, 0x02, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x73, 0x08, 0xf8, 0xe0, 0x71, 0xd6, 0x64, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x86, 0x09, 0x78, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x78, 0x27, 0xe0, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa5, 0x51, 0xc0, 0x07, 0x29, 0x32, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1e, 0x15, 0xf0, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x25, 0x57, 0xc0, 0x07, 0x6f, 0x1f, 0xf8, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xea, 0x2c, 0xe0, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x90, 0x0b, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0xc4, 0x80, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xf9, 0x02, 0x3e, 0x88, 0xb2, 0x00, 0x8c, 0x41, 0xb6, 0x41, 0x9c, 0x53, 0x60, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x84, 0x06, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x46, 0x19, 0xf0, 0xc1, 0x33, 0xf1, 0x85, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x59, 0x03, 0x3e, 0x48, 0xd8, 0x67, 0x3e, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x8b, 0x03, 0x1e, 0x04, 0x1b, 0x3c, 0x6c, 0xaf, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x83, 0x77, 0xcf, 0x01, 0x1f, 0x52, 0x35, 0xc7, 0xa1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xdd, 0x01, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0x7a, 0xc0, 0x8b, 0x0b, 0x82, 0x0d, 0x0a, 0x6a, 0xb1, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0x7f, 0xc0, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x07, 0x02, 0x1f, 0xbc, 0x4c, 0x4d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4c, 0x42, 0xe0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x54, 0x04, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xea, 0x10, 0x78, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x68, 0xbe, 0x74, 0xc8, 0x56, 0x1c, 0xd2, 0x70, 0x83, 0x6c, 0x83, 0xd8, 0x22, 0xc1, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x13, 0x12, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb0, 0x46, 0xe0, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0x6f, 0x64, 0xd3, 0x39, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb6, 0x49, 0xe0, 0x83, 0xb5, 0x7c, 0x02, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3a, 0x26, 0xf0, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xad, 0x9b, 0xc0, 0x83, 0x64, 0x60, 0xae, 0x0e, 0x86, 0x7f, 0xec, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xe7, 0x09, 0x3c, 0x08, 0x36, 0x68, 0xe5, 0xba, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0xc0, 0xab, 0xc3, 0x53, 0x0e, 0xa9, 0x9a, 0xe3, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x88, 0x02, 0x0f, 0x82, 0x0d, 0x5a, 0xb9, 0x2e, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x31, 0xf0, 0xea, 0xf0, 0x90, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x3d, 0x05, 0x1e, 0x76, 0x43, 0xc7, 0x91, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x69, 0x05, 0x1e, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0x4e, 0xa5, 0x43, 0xb6, 0xe2, 0xd0, 0xa8, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x38, 0x55, 0xe0, 0x43, 0x7f, 0xaa, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4a, 0x58, 0xe0, 0x41, 0xb0, 0xb8, 0xc1, 0x6b, 0x50, 0x55, 0x0e, 0x06, 0x13, 0xda, 0xe2, 0x20, 0x58, 0xd8, 0x85, 0x5b, 0x3c, 0x78, 0xdd, 0x52, 0xc8, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x3b, 0x0b, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x69, 0xb6, 0xc0, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x44, 0x2b, 0x0f, 0xc6, 0x06, 0xd1, 0xca, 0x83, 0x71, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x51, 0xd4, 0x83, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x80, 0x2e, 0xf0, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc5, 0xbc, 0xc0, 0x83, 0x64, 0xa0, 0x54, 0x1d, 0x0c, 0xff, 0xd8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0x7f, 0x81, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xaf, 0x18, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x20, 0x61, 0xe0, 0x83, 0xe8, 0x32, 0xc1, 0x18, 0x64, 0x1b, 0xc4, 0xe7, 0x10, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0xcb, 0xc0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x21, 0x03, 0x1f, 0x44, 0x4c, 0x0a, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xe5, 0x0c, 0x7c, 0x30, 0xee, 0xa0, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6b, 0x34, 0xf0, 0x20, 0xd8, 0xa0, 0x95, 0xeb, 0xf2, 0x83, 0x71, 0x1c, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x3a, 0x68, 0x0c, 0xbb, 0x70, 0x8b, 0x07, 0xad, 0x02, 0xb9, 0x1c, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x71, 0xd4, 0xc0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x72, 0x0d, 0x3c, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0xdc, 0x30, 0x61, 0x6c, 0x10, 0x37, 0x4c, 0x18, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0xcd, 0x4c, 0x18, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x76, 0x03, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xab, 0x0d, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x99, 0xe3, 0xc0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x81, 0x03, 0x0f, 0x82, 0x0d, 0x62, 0xcf, 0x04, 0xe3, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0x10, 0xb1, 0x4f, 0x18, 0x83, 0x6c, 0x83, 0x28, 0x83, 0xc2, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x33, 0x1d, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x36, 0x73, 0xe0, 0x41, 0xb0, 0x41, 0x3c, 0xa5, 0x60, 0x1c, 0x5a, 0x80, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xc7, 0x0e, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xef, 0xc0, 0x07, 0xd1, 0xfa, 0x66, 0x31, 0xc8, 0x36, 0x88, 0xf2, 0x2a, 0x8c, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xa7, 0x07, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x3e, 0x1e, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0xf5, 0x81, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xbc, 0x07, 0x1e, 0x04, 0x1b, 0xc4, 0x9e, 0x09, 0xc6, 0xc1, 0x62, 0x2d, 0xa6, 0x41, 0xb6, 0x41, 0x0c, 0x60, 0x61, 0x0c, 0xb2, 0x0d, 0xe2, 0x16, 0x0b, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6c, 0x80, 0xe0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xfb, 0x81, 0x07, 0xc1, 0x06, 0xf1, 0x94, 0x82, 0x71, 0xb0, 0x6e, 0x8c, 0x69, 0x90, 0x6d, 0x10, 0xe5, 0x55, 0x18, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x1a, 0x04, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x3a, 0x10, 0x7c, 0xd0, 0xfe, 0x5a, 0xd3, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x34, 0x82, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x30, 0x12, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x38, 0x4d, 0xf0, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1c, 0x9e, 0xe0, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0x3e, 0xc1, 0x07, 0x67, 0xc9, 0xec, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x35, 0x28, 0xf8, 0xd0, 0x9f, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x11, 0x05, 0x1f, 0x52, 0x07, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x8e, 0x82, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf4, 0xa4, 0xe0, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x99, 0x4c, 0xc1, 0x07, 0xad, 0xc2, 0x45, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x3d, 0x4f, 0xc1, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x20, 0x15, 0x7c, 0x68, 0x25, 0x7e, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x66, 0xaa, 0xe0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xbc, 0x0a, 0x3e, 0xb4, 0x12, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x47, 0x2b, 0xf8, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0xba, 0x82, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x10, 0xb0, 0xe0, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd1, 0x62, 0xc1, 0x07, 0xad, 0xc2, 0x45, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0x65, 0xc1, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x84, 0x16, 0x7c, 0x50, 0xc6, 0xed, 0x1c, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x62, 0x2d, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xdb, 0x82, 0x0f, 0xca, 0xb8, 0x9d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0xe1, 0x82, 0x0f, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc9, 0x73, 0xc1, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9c, 0x5d, 0xf0, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x90, 0xbc, 0xe0, 0x83, 0x56, 0xe1, 0xa2, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe2, 0xbd, 0xe0, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xf4, 0x0b, 0x3e, 0x28, 0x00, 0xa0, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x16, 0x18, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x19, 0x84, 0xc1, 0x07, 0x05, 0x00, 0xd4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xdd, 0x86, 0xc1, 0x87, 0x56, 0xe2, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x28, 0x06, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x31, 0x63, 0xf0, 0x41, 0xa2, 0xdc, 0xc7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0x8f, 0xc1, 0x87, 0xfe, 0xe4, 0xc7, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x9a, 0x0c, 0x1e, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x58, 0x1a, 0x3c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x08, 0x35, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9a, 0xd5, 0xe0, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x6f, 0x0d, 0x1e, 0x04, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xc2, 0x06, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x5f, 0x1b, 0x3c, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xe2, 0x06, 0x0f, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0xbb, 0xc1, 0x87, 0xd4, 0xc1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0xbe, 0xc1, 0x87, 0xb5, 0xdf, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x06, 0x0e, 0x3e, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xca, 0xe1, 0xe0, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xdd, 0xc6, 0xc1, 0x87, 0xf8, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x9b, 0x1c, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x6c, 0x0e, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x05, 0x1d, 0x3c, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x51, 0x07, 0x0f, 0x92, 0x81, 0xd2, 0x75, 0x10, 0xe4, 0xfc, 0x07, 0xa7, 0x5d, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xbd, 0x0e, 0x3e, 0x24, 0x3b, 0x8e, 0x43, 0xc3, 0x6f, 0x50, 0xe0, 0x8e, 0x0c, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x51, 0x3b, 0x78, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8d, 0x77, 0xf0, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x78, 0xf0, 0xe0, 0x41, 0x32, 0x50, 0xbb, 0x0e, 0x02, 0xde, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x28, 0x0f, 0x3e, 0x0e, 0x2d, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0xcf, 0x83, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc4, 0xf5, 0xe0, 0x41, 0x32, 0xb8, 0x77, 0x10, 0xf0, 0xfe, 0x07, 0xe5, 0x50, 0xd2, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x77, 0x0f, 0x1e, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0xe4, 0x83, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xda, 0xfa, 0xe0, 0x83, 0x08, 0xc8, 0xc4, 0x38, 0x28, 0x19, 0x9a, 0x8e, 0x6f, 0xc7, 0xa1, 0x61, 0x37, 0x68, 0x9d, 0x0f, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0x28, 0x84, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x5e, 0x08, 0x0f, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x95, 0x86, 0xf0, 0x41, 0x60, 0x62, 0x1f, 0x56, 0x68, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xcc, 0x0f, 0x1e, 0x64, 0x6b, 0xd0, 0x16, 0xc8, 0xca, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x5e, 0x8a, 0x44, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x15, 0x4b, 0x24, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0xe0, 0xe9, 0x41, 0x2b, 0xff, 0x14, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0x3f, 0xe0, 0x95, 0xb9, 0xe5, 0x1b, 0xea, 0xf8, 0x80, 0x57, 0x67, 0xa7, 0xb4, 0x61, 0xe2, 0xd6, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0xb9, 0x61, 0x86, 0x36, 0x88, 0xd7, 0xc6, 0x8b, 0x0d, 0x27, 0xc2, 0x06, 0xf1, 0xda, 0x78, 0xb1, 0xc1, 0x62, 0x36, 0xa8, 0x83, 0xa7, 0x64, 0xbc, 0x6f, 0x38, 0x11, 0x36, 0x88, 0xf3, 0x52, 0x8c, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0xcf, 0x93, 0xac, 0xc1, 0x42, 0x65, 0xaa, 0x83, 0xb7, 0xb6, 0x07, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0x78, 0xbf, 0xaf, 0xe1, 0x73, 0x97, 0x01, 0x0f, 0xed, 0x0d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x1f, 0x7f, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x05, 0x7f, 0x3f, 0x68, 0x61, 0xb8, 0x7f, 0xc3, 0xf3, 0x24, 0x1b, 0xc4, 0x42, 0x2a, 0xc6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x82, 0xf7, 0xfb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xaf, 0xf9, 0xfb, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x97, 0xfe, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x0d, 0xfb, 0xfb, 0xc1, 0xcb, 0x98, 0xa8, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x78, 0x7f, 0xdf, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x80, 0xfc, 0xfb, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0x3c, 0x28, 0xb9, 0xc1, 0xf2, 0xe3, 0xed, 0x83, 0x96, 0x30, 0x38, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xa6, 0x7f, 0xdf, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf4, 0xfd, 0xfb, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0x3c, 0x28, 0xb9, 0xc1, 0xf2, 0xe3, 0xed, 0x83, 0xb3, 0x67, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc6, 0xfe, 0xfb, 0x86, 0xcf, 0x5d, 0x06, 0x97, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0xfc, 0xdf, 0x37, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0x41, 0xc9, 0x0d, 0x96, 0x1f, 0x6f, 0x1f, 0x2c, 0x11, 0xae, 0x3d, 0x68, 0x8d, 0x87, 0x60, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xbe, 0xf4, 0xf7, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0xd8, 0xdf, 0x37, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x46, 0x82, 0x1b, 0xde, 0xb8, 0x3b, 0x78, 0xb2, 0x1c, 0xde, 0xc1, 0xcb, 0x98, 0xa8, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xfb, 0xd2, 0xdf, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x80, 0xfc, 0xfb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc3, 0xfb, 0xfb, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x41, 0x4b, 0x18, 0x9c, 0x07, 0xed, 0x5a, 0x1a, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf7, 0xa5, 0xbf, 0xaf, 0xe1, 0x73, 0x97, 0xc1, 0xe3, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xe8, 0xfb, 0xf7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6e, 0xfa, 0xf7, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x83, 0xb3, 0x67, 0xdc, 0x41, 0xc3, 0xce, 0x07, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x7d, 0xe9, 0xef, 0x1b, 0x3e, 0x77, 0x19, 0x5c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xf0, 0x7f, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xd8, 0x7f, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x58, 0x22, 0x5c, 0x7b, 0xd0, 0x38, 0xf5, 0xc1, 0x86, 0x0f, 0x72, 0xd6, 0x60, 0x01, 0xf4, 0xd1, 0x1a, 0x1e, 0x94, 0xdc, 0x38, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x16, 0x00, 0xbf, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x07, 0x01, 0xfc, 0xc1, 0xab, 0xe9, 0xa8, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x37, 0x80, 0xdf, 0xf0, 0xb9, 0xcb, 0xe0, 0xf0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x7a, 0x02, 0xfc, 0x41, 0xbc, 0xc5, 0x62, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xcc, 0x00, 0xbf, 0xe1, 0x73, 0x97, 0xc1, 0xe3, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xdc, 0x07, 0xf8, 0x83, 0x78, 0x8b, 0xc5, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x94, 0x80, 0xdf, 0xf0, 0xb9, 0xcb, 0xe0, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x62, 0x05, 0xfc, 0x41, 0xbc, 0xd0, 0x62, 0x1c, 0xb4, 0xc6, 0x43, 0xb0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x59, 0x00, 0xfc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0x04, 0xf0, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x43, 0x23, 0xc1, 0x0d, 0x6f, 0xdc, 0xcd, 0xc1, 0x6b, 0x50, 0x55, 0x0e, 0x5e, 0x4d, 0x47, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x16, 0x00, 0xbf, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xd3, 0x13, 0xe0, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xeb, 0x0d, 0xe0, 0x0f, 0xe2, 0xa1, 0x17, 0x63, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x2c, 0x00, 0x7e, 0x0d, 0x9f, 0xbb, 0x0c, 0x1e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x3e, 0xc0, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x33, 0xc0, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x48, 0xea, 0xc5, 0x38, 0x68, 0xd8, 0xf9, 0x60, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x2c, 0x00, 0x7e, 0xc3, 0xe7, 0x2e, 0x83, 0xcb, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x89, 0x15, 0xf0, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x95, 0x12, 0xf0, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x36, 0x81, 0x31, 0x0e, 0x1a, 0xa7, 0x3e, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xc3, 0x80, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x64, 0x03, 0x7e, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x68, 0x24, 0xb8, 0xe1, 0x8d, 0xbb, 0x39, 0x68, 0x15, 0xc8, 0xe5, 0xe0, 0x15, 0x38, 0xd4, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x6d, 0x18, 0xf0, 0x1b, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x07, 0x81, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xef, 0x80, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0x91, 0xd4, 0x8b, 0x71, 0xd0, 0xa2, 0x10, 0xc1, 0xc1, 0x4a, 0x3a, 0xfd, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xe2, 0x12, 0x15, 0x63, 0x43, 0x1d, 0x59, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x4c, 0xe7, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0x14, 0xb5, 0xc5, 0x1b, 0x8a, 0xe9, 0x1a, 0x44, 0x6e, 0x29, 0xc6, 0x41, 0x2c, 0xa4, 0x62, 0x6c, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x80, 0x87, 0xf6, 0x06, 0x1f, 0xb4, 0xf2, 0x4f, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x63, 0xdf, 0x18, 0x1b, 0x2c, 0x68, 0x98, 0x5a, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0x20, 0xa2, 0xb2, 0x31, 0x36, 0xcc, 0xfd, 0xe0, 0xf0, 0x86, 0x3a, 0xb2, 0x86, 0x19, 0xda, 0x20, 0xce, 0x4b, 0x31, 0x36, 0x9c, 0x08, 0x1b, 0xc4, 0x79, 0x29, 0xc6, 0x06, 0x8b, 0xd9, 0xa0, 0x96, 0x59, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xe7, 0x49, 0xd6, 0x60, 0xa1, 0x32, 0xd5, 0x41, 0xbb, 0x07, 0x9c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0x9d, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0x7f, 0xbe, 0xaf, 0xe1, 0x73, 0x97, 0x01, 0x0f, 0xad, 0x4c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xaf, 0x2e, 0x7d, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x14, 0x7d, 0x3f, 0x78, 0xa5, 0xe1, 0xcc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xf9, 0xe7, 0xfb, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb9, 0x34, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x7d, 0xf5, 0x7d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x15, 0xf5, 0x7d, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0xff, 0xe0, 0xdd, 0x28, 0xd7, 0x07, 0xc7, 0xef, 0xbf, 0x0d, 0xcf, 0x93, 0x6c, 0x10, 0xb9, 0xe4, 0x18, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x39, 0x9d, 0xef, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xbb, 0xbe, 0xaf, 0xe1, 0x73, 0x97, 0x01, 0x4f, 0xec, 0x2d, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xa5, 0x7d, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x8c, 0x7d, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x28, 0x6a, 0x7c, 0x0f, 0x1a, 0x85, 0x59, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x76, 0x7d, 0xdf, 0xf0, 0xb9, 0xcb, 0x06, 0x2b, 0x83, 0x72, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x5b, 0x75, 0xdf, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x6e, 0xdf, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0x6b, 0x80, 0x96, 0x0e, 0x86, 0xe9, 0xc4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0xc0, 0xef, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xc6, 0xe7, 0xa3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x3b, 0x8c, 0xdf, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xb3, 0x85, 0xdf, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x47, 0x7e, 0x3f, 0x78, 0x00, 0xdb, 0xf5, 0x86, 0x1e, 0x3b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x8e, 0xfc, 0xbe, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0xf4, 0xd8, 0xd9, 0xf0, 0xc6, 0xdd, 0x1c, 0x9c, 0xeb, 0x4f, 0x0f, 0x1e, 0xc0, 0x76, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xbc, 0xfc, 0xbe, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0xf4, 0xd8, 0xd9, 0xf0, 0xc6, 0xdd, 0xc1, 0x2b, 0xc6, 0x84, 0x0f, 0x5e, 0x55, 0x77, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x01, 0xfc, 0xbe, 0xe1, 0x73, 0x97, 0x01, 0xcf, 0x2c, 0xec, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x92, 0x7e, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x78, 0x7e, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x58, 0xcb, 0x49, 0xbc, 0xc1, 0x58, 0x53, 0x69, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xac, 0xf7, 0x7d, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0xd0, 0xb8, 0x6e, 0xc1, 0xc1, 0x30, 0x9d, 0x38, 0x38, 0x86, 0x1b, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xc8, 0x25, 0xc7, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0xe9, 0x7c, 0xdf, 0xf0, 0xb9, 0xcb, 0x06, 0x8b, 0x84, 0x67, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xb1, 0xdf, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x53, 0xab, 0xdf, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x23, 0xd8, 0x18, 0x07, 0x2d, 0x0a, 0x11, 0x1c, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0x20, 0x8a, 0xc8, 0x31, 0x56, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0xee, 0x20, 0x8e, 0x9d, 0x31, 0x36, 0x4c, 0xdc, 0x06, 0x51, 0x27, 0x8e, 0xb1, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x83, 0xc7, 0x07, 0xf1, 0x2b, 0x8e, 0xb1, 0x61, 0xee, 0x07, 0x97, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x06, 0x71, 0x5e, 0x8a, 0xb1, 0xe1, 0x44, 0xd8, 0x20, 0xce, 0x4b, 0x31, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0x06, 0x0b, 0x95, 0xa9, 0x0e, 0x8e, 0xa5, 0x71, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x25, 0x7c, 0xef, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0xa3, 0x7b, 0x13, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x04, 0xdf, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0xfd, 0xde, 0x0f, 0x5a, 0x18, 0xee, 0xdf, 0xf0, 0x3c, 0xc9, 0x06, 0xf1, 0x8d, 0x90, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xc2, 0xf7, 0xbe, 0x86, 0xcf, 0x5d, 0x06, 0xbc, 0xb0, 0x3a, 0x7a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x03, 0xf1, 0x7d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x9b, 0xf0, 0x7d, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0x83, 0x92, 0x1b, 0x3c, 0x11, 0xc9, 0xfa, 0xe0, 0x41, 0xed, 0xc1, 0x07, 0xad, 0xf1, 0x10, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0xf8, 0x46, 0xc8, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0xe1, 0x7b, 0xdf, 0xf0, 0xb9, 0xcb, 0x06, 0x45, 0x6d, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8b, 0xe3, 0xfb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xbe, 0xe2, 0xfb, 0x41, 0x4b, 0x44, 0x11, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x88, 0x35, 0x84, 0x8c, 0xc3, 0x29, 0xb6, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x93, 0xe5, 0xf0, 0x36, 0x4c, 0xdc, 0x06, 0x51, 0x27, 0x8e, 0xb1, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x83, 0xc7, 0x07, 0x51, 0x6e, 0x90, 0xb1, 0x61, 0xee, 0x07, 0x97, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x06, 0x71, 0x5e, 0x8a, 0xb1, 0xe1, 0x44, 0xd8, 0x20, 0xce, 0x4b, 0x31, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0x06, 0x0b, 0x95, 0xa9, 0x0e, 0x56, 0x0f, 0xd7, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x87, 0x4b, 0xbe, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x37, 0x54, 0xbe, 0xaf, 0xe1, 0xa3, 0xf6, 0x83, 0x17, 0x5f, 0xbe, 0x77, 0x70, 0x8c, 0x39, 0x3b, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x41, 0xac, 0x60, 0x64, 0x1c, 0x4e, 0xb1, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0x1f, 0xf8, 0x32, 0x77, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x03, 0x1e, 0x5c, 0xd8, 0x7a, 0x10, 0x89, 0xa5, 0x18, 0x1b, 0x66, 0x68, 0x83, 0xd8, 0x31, 0xc5, 0xd8, 0x70, 0x22, 0x6c, 0x10, 0x3b, 0xa6, 0x18, 0x1b, 0x2c, 0x66, 0x83, 0x3a, 0x78, 0xad, 0x09, 0xfc, 0x86, 0x13, 0x61, 0x83, 0xd8, 0xeb, 0xc8, 0xd8, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0xc1, 0x83, 0x31, 0xe3, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0x30, 0xf7, 0x03, 0x4f, 0x56, 0x6e, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0xa2, 0xb6, 0xf8, 0x60, 0xf5, 0xa8, 0xfe, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0x0f, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x06, 0x71, 0x20, 0x78, 0xb1, 0xe1, 0x44, 0xd8, 0x20, 0x0e, 0x04, 0x2f, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0xe1, 0xe1, 0xf7, 0x0d, 0x1f, 0xe4, 0x6c, 0xd0, 0x84, 0x2c, 0xc4, 0x6a, 0xf8, 0xdc, 0x65, 0xc3, 0x77, 0xf4, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x86, 0xde, 0x31, 0x0e, 0xce, 0xf5, 0x06, 0x1b, 0x3e, 0x77, 0xd9, 0xf0, 0xd6, 0xfd, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x41, 0x11, 0xe5, 0x7b, 0x70, 0x00, 0x4d, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x31, 0xf4, 0x8e, 0x71, 0x70, 0x8c, 0x39, 0x3b, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x41, 0xac, 0x93, 0x64, 0x1c, 0xc4, 0x98, 0x47, 0xc6, 0x86, 0x13, 0x61, 0x83, 0x68, 0x17, 0xc9, 0xd8, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0xc1, 0x1b, 0x5f, 0xe0, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0x70, 0x22, 0x6c, 0x10, 0xe5, 0x21, 0x19, 0x1b, 0x2c, 0x66, 0x83, 0x5a, 0x66, 0x39, 0x78, 0x00, 0x0e, 0xfc, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0xf1, 0xda, 0x78, 0xb1, 0x41, 0xc3, 0x97, 0x10, 0x6b, 0x98, 0xb8, 0x35, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0x83, 0xa2, 0xb6, 0xf8, 0x30, 0x9d, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0x3f, 0xf0, 0x65, 0xee, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x0d, 0x13, 0xb7, 0x61, 0x3a, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x35, 0xcc, 0xd0, 0x06, 0xd1, 0xdd, 0x78, 0xb1, 0xe1, 0x44, 0xd8, 0x20, 0xba, 0x1b, 0x2f, 0x36, 0x58, 0xcc, 0x06, 0x75, 0xf0, 0x08, 0x79, 0xd1, 0x0d, 0x27, 0xc2, 0x06, 0x51, 0x18, 0x93, 0xb1, 0xc1, 0x62, 0x36, 0xa8, 0x83, 0x67, 0x11, 0x8d, 0x6e, 0x38, 0x11, 0x36, 0x88, 0x81, 0x98, 0x8c, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0x1f, 0xe4, 0x6c, 0xd0, 0xe0, 0xee, 0xc0, 0x1a, 0x9e, 0x27, 0xd9, 0xe0, 0x4d, 0x48, 0xa3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x65, 0x3f, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x76, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xf8, 0xec, 0x67, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x46, 0xed, 0x67, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0xff, 0x20, 0x00, 0xd9, 0x0e, 0xce, 0xf5, 0x06, 0x1b, 0x9e, 0x27, 0xd9, 0xe0, 0x4d, 0x48, 0xa3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x65, 0x3f, 0x1b, 0x3e, 0x77, 0x19, 0x5c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x73, 0xfb, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x88, 0xfb, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x71, 0x86, 0x93, 0x71, 0x70, 0x00, 0x4d, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xcf, 0x91, 0x1a, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x9f, 0xfb, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x65, 0x76, 0x3f, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0x78, 0x3f, 0x07, 0x31, 0x68, 0x92, 0xb1, 0xe1, 0x79, 0x92, 0x0d, 0x9e, 0x23, 0x35, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x3f, 0xf7, 0xb3, 0xe1, 0x73, 0x97, 0xc1, 0xc5, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfe, 0xbe, 0x9f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x24, 0xc0, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0xef, 0xf6, 0x6c, 0xf0, 0xa2, 0xad, 0xd1, 0x35, 0x7c, 0xd4, 0x7e, 0xf0, 0x6e, 0xae, 0xd1, 0x0e, 0x0e, 0xa0, 0x49, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x88, 0x73, 0x9a, 0x8c, 0x0d, 0x1a, 0xf9, 0x84, 0xd8, 0x20, 0xfa, 0x5f, 0x32, 0x0e, 0x1a, 0x11, 0x85, 0xd8, 0x30, 0xf7, 0x03, 0x4f, 0x56, 0x6e, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x06, 0xab, 0x47, 0xf5, 0x37, 0x4c, 0xdc, 0x06, 0xab, 0x47, 0xf5, 0x37, 0x4c, 0xdc, 0x86, 0xe9, 0xdc, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0x01, 0x4f, 0xec, 0x2d, 0x3e, 0x58, 0x3d, 0xaa, 0xbf, 0x61, 0xee, 0x37, 0x38, 0xc0, 0x4b, 0x1e, 0xac, 0x1e, 0xd5, 0xdf, 0xa0, 0x91, 0x4f, 0x88, 0x0d, 0xa2, 0xc8, 0x28, 0xe3, 0xa0, 0x11, 0x51, 0x88, 0x83, 0x78, 0x6d, 0xbc, 0xd8, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0xc1, 0x53, 0x9e, 0xb0, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0x70, 0x22, 0x6c, 0x10, 0xeb, 0xdd, 0x18, 0x1b, 0x2c, 0x66, 0x83, 0x5a, 0x66, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0x57, 0xd8, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x78, 0x85, 0x16, 0xf6, 0xc1, 0x4a, 0x3a, 0xfd, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0x22, 0x81, 0x29, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3a, 0xfe, 0xe0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xf9, 0x0f, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x44, 0x40, 0xf8, 0x20, 0x30, 0xb1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x9c, 0x40, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x14, 0x04, 0xe1, 0x43, 0xaa, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x15, 0x84, 0x0f, 0xa9, 0x83, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x1b, 0x84, 0x0f, 0x42, 0x00, 0xfc, 0x38, 0x74, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2d, 0x42, 0xf8, 0x70, 0xb4, 0x1f, 0xdf, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb5, 0x43, 0x78, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1a, 0x88, 0xf0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0x23, 0xc2, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x61, 0x22, 0x3c, 0x08, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x45, 0x11, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc3, 0x45, 0x78, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x86, 0x11, 0x1e, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0x66, 0x84, 0x0f, 0xa9, 0x83, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x6c, 0x84, 0x0f, 0x6b, 0xbf, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x8f, 0x23, 0x7c, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb9, 0x3b, 0xc2, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0x7e, 0x84, 0x0f, 0xf1, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x3a, 0x48, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x5a, 0x24, 0x3c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x0d, 0x49, 0x78, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x5d, 0x12, 0x3e, 0x88, 0x0b, 0x48, 0x8c, 0x41, 0x32, 0x50, 0xbf, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xe8, 0x24, 0x7c, 0x48, 0x76, 0x1c, 0x87, 0x86, 0xdf, 0xa0, 0xc0, 0x1d, 0x19, 0x7e, 0x83, 0xc1, 0x0e, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x59, 0x94, 0xf0, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x86, 0x2a, 0xe1, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc9, 0x57, 0xc2, 0x07, 0x11, 0x56, 0x89, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x6a, 0x09, 0x1f, 0x87, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x6d, 0x5d, 0xc2, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2e, 0x98, 0xf0, 0x20, 0x19, 0xd0, 0xa8, 0xdd, 0xd7, 0x41, 0xc0, 0xfb, 0x1f, 0x94, 0x43, 0x49, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x88, 0x4c, 0x78, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x3b, 0x13, 0x1e, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xd5, 0x84, 0x0f, 0xe2, 0x6f, 0x2d, 0xe3, 0xa0, 0x64, 0x68, 0x3a, 0xbe, 0x1d, 0x87, 0x86, 0xdd, 0xa0, 0x75, 0x3e, 0x80, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x43, 0x14, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xbf, 0x28, 0x3c, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0x8e, 0xc2, 0x07, 0x81, 0x89, 0x7d, 0x58, 0xa1, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd3, 0x4d, 0x78, 0x90, 0xad, 0x41, 0x5b, 0x20, 0x2b, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x78, 0x29, 0x12, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x57, 0x2c, 0x91, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0x61, 0xe2, 0x36, 0x88, 0xda, 0x51, 0x8c, 0x0d, 0x13, 0xb7, 0x41, 0xc4, 0x91, 0x62, 0x6c, 0x98, 0xb8, 0x0d, 0xa2, 0xdc, 0x20, 0x63, 0x43, 0x1d, 0x59, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x4c, 0xe7, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0x61, 0xe2, 0xd6, 0x30, 0xf7, 0x1b, 0x14, 0xb5, 0xc5, 0x1b, 0x8a, 0xe9, 0x1a, 0x44, 0xc5, 0x41, 0xc6, 0x41, 0x7c, 0x23, 0x64, 0x6c, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x80, 0x47, 0xf7, 0x26, 0x1e, 0xb4, 0xf2, 0x4f, 0xb1, 0xa1, 0x98, 0x6e, 0x10, 0x63, 0x79, 0x19, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0x3f, 0xe0, 0x85, 0xd5, 0xd1, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x83, 0x38, 0x2f, 0xc5, 0xd8, 0x70, 0x22, 0x6c, 0x10, 0xe7, 0xa5, 0x18, 0x1b, 0x2c, 0x66, 0x83, 0x5a, 0x66, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x9e, 0x27, 0x59, 0x83, 0x85, 0xca, 0x54, 0x07, 0xef, 0x83, 0x06, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x5b, 0x79, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0x4f, 0x6d, 0x79, 0x5f, 0xc3, 0x47, 0xed, 0x07, 0x8f, 0x83, 0x79, 0x5f, 0xc3, 0x47, 0xed, 0x07, 0x2f, 0xa2, 0x79, 0xef, 0xe0, 0x18, 0x73, 0x76, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0xc8, 0xeb, 0xcb, 0xd8, 0x50, 0x4c, 0x37, 0x88, 0xb1, 0xbc, 0x8c, 0x83, 0x98, 0x10, 0xc9, 0xd8, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0x81, 0x2f, 0x73, 0x37, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0x0d, 0x13, 0xb7, 0x41, 0x94, 0xe8, 0x65, 0x6c, 0x98, 0xb8, 0x0d, 0x22, 0x70, 0x2f, 0xe3, 0x20, 0x26, 0x44, 0x32, 0x36, 0xcc, 0xd0, 0x06, 0xf1, 0xda, 0x78, 0xb1, 0xe1, 0x44, 0xd8, 0x20, 0x5e, 0x1b, 0x2f, 0x36, 0x58, 0xcc, 0x06, 0x75, 0xf0, 0xac, 0xf3, 0xee, 0x0d, 0x27, 0xc2, 0x06, 0x31, 0x3e, 0x98, 0xb1, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x83, 0x67, 0x36, 0x7f, 0x1f, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x61, 0xee, 0x07, 0x9e, 0xac, 0xdc, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0x62, 0x42, 0x24, 0x63, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0x17, 0x37, 0x4c, 0xdc, 0x1a, 0xe6, 0x7e, 0xc0, 0x13, 0x7b, 0x8b, 0x0f, 0x22, 0x35, 0xf0, 0x62, 0xc3, 0xdc, 0x6f, 0x70, 0x80, 0x97, 0x3c, 0x88, 0xec, 0xc2, 0x8b, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0xdb, 0x20, 0x36, 0x46, 0x32, 0x0e, 0xa2, 0xa8, 0x30, 0x63, 0xc3, 0x89, 0xb0, 0x41, 0xfc, 0x2d, 0x66, 0x6c, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0xe5, 0xe0, 0x49, 0xf0, 0xdd, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x6d, 0x38, 0x11, 0x36, 0x88, 0x63, 0xc4, 0x8c, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x1c, 0xbc, 0x8e, 0xc3, 0xfb, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0x78, 0x6d, 0xbc, 0x38, 0x88, 0x05, 0x97, 0x8c, 0x0d, 0x27, 0xc2, 0x06, 0xb1, 0x7e, 0x97, 0x71, 0x10, 0xa3, 0x4b, 0x19, 0x07, 0x91, 0xc0, 0x94, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x61, 0x9c, 0xf0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xd1, 0x09, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x73, 0x27, 0x7c, 0x10, 0x98, 0xd8, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x9f, 0x27, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4e, 0x9f, 0xf0, 0x21, 0x55, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x09, 0x80, 0xc2, 0x87, 0xd4, 0xc1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd1, 0x82, 0xc2, 0x07, 0x21, 0x00, 0x7e, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x5b, 0x28, 0x7c, 0x38, 0xda, 0x8f, 0x6f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x47, 0x0a, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xa5, 0x14, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xf2, 0x52, 0xf8, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x34, 0x85, 0x07, 0xc1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0x9c, 0xc2, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x89, 0x0a, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0xa4, 0xc2, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xed, 0xa9, 0xf0, 0x21, 0x75, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9b, 0xaa, 0xf0, 0x61, 0xed, 0x77, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0x5a, 0x85, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfe, 0x55, 0x78, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xce, 0xac, 0xf0, 0x21, 0xfe, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xd8, 0x0a, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x73, 0x85, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xf2, 0x0a, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0xbf, 0xc2, 0x07, 0x71, 0x01, 0x89, 0x71, 0x90, 0xcc, 0x60, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0xc2, 0xc2, 0x87, 0x64, 0xc7, 0x71, 0x68, 0xf8, 0x0d, 0x0a, 0xdc, 0x91, 0xe1, 0x37, 0x18, 0xec, 0x00, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x16, 0x0b, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x4b, 0x16, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xc1, 0x2c, 0x7c, 0x10, 0x61, 0x95, 0x18, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbe, 0xb3, 0xf0, 0x71, 0x68, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x1d, 0x2d, 0x3c, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x54, 0x0b, 0x0f, 0x92, 0x81, 0xfd, 0xaf, 0x83, 0x80, 0xf7, 0x3f, 0x28, 0x87, 0x92, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x29, 0xb6, 0xf0, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xbd, 0x2d, 0x3c, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x7c, 0x0b, 0x1f, 0xc4, 0x69, 0x6b, 0xc6, 0x41, 0xc9, 0xd0, 0x74, 0x7c, 0x3b, 0x0e, 0x0d, 0xbb, 0x41, 0xeb, 0x7c, 0x00, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xce, 0x2f, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x0c, 0x60, 0x78, 0x98, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x06, 0x86, 0x0f, 0x02, 0x13, 0xfb, 0xb0, 0x42, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbe, 0xb8, 0xf0, 0x20, 0x5b, 0x83, 0xb6, 0x40, 0x56, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0xf0, 0x52, 0x24, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xaf, 0x58, 0x22, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0xc3, 0xc4, 0x6d, 0x10, 0xb5, 0xa3, 0x18, 0x1b, 0x26, 0x6e, 0x83, 0x88, 0x23, 0xc5, 0xd8, 0x30, 0x71, 0x1b, 0xc4, 0xaf, 0x38, 0xc6, 0x86, 0x3a, 0xb2, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x0d, 0x33, 0xb4, 0x86, 0x89, 0x5b, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x37, 0x28, 0x6a, 0x8b, 0x37, 0x14, 0xd3, 0x35, 0x88, 0x77, 0x71, 0x8c, 0x83, 0xc8, 0x25, 0xc7, 0xd8, 0x30, 0x71, 0x6b, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x80, 0x87, 0x56, 0x26, 0x6f, 0xa8, 0x23, 0x6b, 0x98, 0xa1, 0x0d, 0xe2, 0xbc, 0x14, 0x63, 0xc3, 0x89, 0xb0, 0x41, 0x9c, 0x97, 0x62, 0x6c, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x16, 0x2a, 0x53, 0x1d, 0x34, 0x7c, 0x3d, 0xbe, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x7c, 0xf4, 0xbe, 0xe1, 0xeb, 0x97, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x70, 0x48, 0x1b, 0x2c, 0x94, 0x7d, 0xda, 0xa0, 0x99, 0xce, 0x81, 0x35, 0x28, 0x3a, 0x8d, 0x37, 0x68, 0x01, 0x74, 0x60, 0x0d, 0x3f, 0xc2, 0x0c, 0x3c, 0x5d, 0x18, 0x3c, 0x1c, 0x72, 0x48, 0x1d, 0x1c, 0xb4, 0x55, 0x3a, 0x70, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0xe8, 0xf2, 0xcd, 0xd8, 0x30, 0xf7, 0x03, 0x9e, 0x5c, 0x9a, 0xb9, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0x36, 0x88, 0xf3, 0x52, 0x8c, 0x0d, 0x27, 0xc2, 0x06, 0x71, 0x5e, 0x8a, 0xb1, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0x58, 0xa8, 0x4c, 0x75, 0xf0, 0x40, 0x5b, 0xc7, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xbc, 0x90, 0xf7, 0x0d, 0x5f, 0xbf, 0xac, 0xe1, 0x47, 0x98, 0x01, 0xaf, 0x8e, 0xcc, 0x68, 0x83, 0x85, 0xb2, 0x4f, 0x1b, 0x34, 0xd3, 0x39, 0xb0, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x2d, 0x80, 0x0e, 0xac, 0xe1, 0x47, 0x98, 0x81, 0xa7, 0x0b, 0x03, 0xaf, 0x8e, 0xcc, 0x38, 0xa4, 0x0e, 0x0e, 0xda, 0x2a, 0x1d, 0x38, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x41, 0x44, 0x16, 0x67, 0x6c, 0x28, 0xa6, 0x1b, 0x44, 0xdd, 0x6e, 0xc6, 0x86, 0x89, 0x5b, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0x3c, 0xb1, 0xb7, 0x78, 0x43, 0x1d, 0x59, 0xc3, 0x0c, 0x6d, 0x10, 0xe7, 0xa5, 0x18, 0x1b, 0x4e, 0x84, 0x0d, 0xe2, 0xbc, 0x14, 0x63, 0x83, 0xc5, 0x6c, 0x50, 0xcb, 0x2c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xf3, 0x24, 0x6b, 0xb0, 0x50, 0x99, 0xea, 0xf0, 0x1b, 0xfd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xb3, 0xc9, 0xfb, 0x86, 0xaf, 0x5f, 0xd6, 0xf0, 0x23, 0xcc, 0xe0, 0x44, 0x1b, 0x2c, 0x94, 0x7d, 0xda, 0xa0, 0x99, 0xce, 0x81, 0x35, 0x28, 0x3a, 0x8d, 0x37, 0x68, 0x01, 0x74, 0x60, 0x0d, 0x3f, 0xc2, 0x0c, 0x3c, 0x5d, 0x18, 0x4e, 0x1c, 0x52, 0x07, 0x07, 0x6d, 0x95, 0x0e, 0x1c, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0x20, 0x86, 0x9b, 0x33, 0x36, 0xcc, 0xfd, 0x06, 0x2b, 0x83, 0x72, 0x37, 0x58, 0xd0, 0x30, 0xb5, 0x41, 0x8b, 0x6d, 0x03, 0xb3, 0x86, 0x89, 0x5b, 0xc3, 0xdc, 0x6f, 0xd0, 0xf8, 0x7c, 0xd4, 0x06, 0x0b, 0x1a, 0xa6, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0x10, 0x6f, 0xf8, 0x18, 0xb3, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x57, 0x8c, 0x09, 0x1f, 0x4e, 0xb1, 0x0d, 0x73, 0x3f, 0xe0, 0x99, 0x85, 0x9d, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x83, 0x38, 0x2f, 0xc5, 0xd8, 0x70, 0x22, 0x6c, 0x10, 0xe7, 0xa5, 0x18, 0x1b, 0x2c, 0x66, 0x83, 0x5a, 0x66, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x9e, 0x27, 0x59, 0x83, 0x85, 0xca, 0x54, 0x07, 0xcb, 0x3c, 0x89, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x37, 0xde, 0x37, 0x7c, 0xfd, 0xb2, 0x86, 0x1f, 0x61, 0x06, 0xbc, 0x3a, 0xb2, 0xa3, 0x0d, 0x16, 0xca, 0x3e, 0x6d, 0xd0, 0x4c, 0xe7, 0xc0, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0xb4, 0x00, 0x3a, 0xb0, 0x86, 0x1f, 0x61, 0x06, 0x9e, 0x2e, 0x0c, 0xbc, 0x3a, 0xb2, 0xe3, 0x90, 0x3a, 0x38, 0x68, 0xab, 0x74, 0xe0, 0x60, 0x25, 0x9d, 0xfe, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x07, 0x91, 0x83, 0x9d, 0x71, 0x38, 0xc5, 0x36, 0x14, 0xd3, 0x0d, 0xa2, 0x6e, 0x37, 0x63, 0xc3, 0xdc, 0x6f, 0xb0, 0x48, 0x78, 0xf6, 0xa0, 0x15, 0x89, 0xff, 0x0d, 0x13, 0xb7, 0x86, 0xb9, 0x1f, 0xf8, 0x32, 0x77, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x88, 0x5f, 0x71, 0x8c, 0x0d, 0x33, 0xb4, 0x41, 0xbc, 0x36, 0x5e, 0x6c, 0x38, 0x11, 0x36, 0x88, 0xd7, 0xc6, 0x8b, 0x0d, 0x16, 0xb3, 0x41, 0x1d, 0x3c, 0xff, 0x3a, 0x7d, 0xc3, 0x89, 0xb0, 0x41, 0xac, 0x7e, 0x67, 0x6c, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0xe5, 0xe0, 0x91, 0x63, 0xeb, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x6d, 0x98, 0xfb, 0x81, 0x27, 0x2b, 0x37, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0x0d, 0x73, 0xbf, 0xc1, 0x22, 0xe1, 0xd9, 0x83, 0xd5, 0xa3, 0xfa, 0x1b, 0x26, 0x6e, 0x83, 0x58, 0x4b, 0xcc, 0xd8, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0x62, 0x63, 0x24, 0xe3, 0x20, 0x42, 0xc0, 0x33, 0x36, 0x9c, 0x08, 0x1b, 0xc4, 0x49, 0x79, 0xc6, 0x06, 0x8b, 0xd9, 0xa0, 0x96, 0x59, 0x0e, 0x9e, 0x0d, 0x9e, 0x7e, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x86, 0x13, 0x61, 0x83, 0x18, 0x1d, 0xcf, 0xd8, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0xc1, 0x5b, 0x19, 0xd4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x88, 0xd7, 0xc6, 0x8b, 0x83, 0x58, 0x70, 0xc9, 0xd8, 0x70, 0x22, 0x6c, 0x10, 0xfd, 0xb9, 0x19, 0x07, 0x31, 0xba, 0x94, 0x71, 0x10, 0x09, 0x4c, 0x19, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x97, 0x0b, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x28, 0xba, 0xf0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0xeb, 0xc2, 0x07, 0x81, 0x89, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x55, 0xee, 0xc2, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xc6, 0x0b, 0x1f, 0x52, 0x35, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x46, 0x2f, 0x7c, 0x48, 0x1d, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x74, 0x2f, 0x7c, 0x10, 0x02, 0xe0, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0xfa, 0xc2, 0x87, 0xa3, 0xfd, 0xf8, 0x76, 0x3c, 0x1e, 0x04, 0x8b, 0x1b, 0x14, 0xd3, 0x82, 0xb3, 0x06, 0x0f, 0xb9, 0x79, 0x3e, 0x48, 0x03, 0xc8, 0xd8, 0x20, 0x00, 0xee, 0x0f, 0x96, 0x62, 0x50, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x19, 0x1a, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x00, 0x68, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x8b, 0x86, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x79, 0x69, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x48, 0xa4, 0xe1, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0xe0, 0xbb, 0xaa, 0xe3, 0xf1, 0x41, 0xb2, 0xa1, 0xc1, 0x20, 0xdb, 0x20, 0x7e, 0xe9, 0x33, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x4d, 0x6a, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x96, 0xa7, 0xe1, 0x41, 0xb0, 0xc1, 0xd3, 0xd1, 0xb9, 0x0e, 0x92, 0xcb, 0x07, 0x06, 0xd9, 0x06, 0xf1, 0x4b, 0x9f, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x79, 0x58, 0xc3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x54, 0x0d, 0x0f, 0x82, 0x0d, 0x1e, 0x16, 0xce, 0x75, 0xf0, 0x34, 0xaa, 0xb4, 0x41, 0xb6, 0x41, 0xfc, 0xd2, 0x67, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdd, 0xd7, 0xf0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x4d, 0x5b, 0xc3, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x80, 0xf2, 0xef, 0xeb, 0x78, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0x96, 0x15, 0xee, 0x1f, 0x87, 0x06, 0xd9, 0x06, 0xf1, 0x4b, 0x9f, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x84, 0xd9, 0xf0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x62, 0xc3, 0x83, 0x60, 0x83, 0x37, 0x85, 0x0b, 0x0d, 0x92, 0x21, 0x07, 0x2d, 0xa9, 0x92, 0x0c, 0xb2, 0x0d, 0x62, 0x6a, 0x3e, 0x63, 0x90, 0x6d, 0x10, 0x07, 0xf4, 0x19, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xeb, 0x36, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3b, 0xda, 0xf0, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0x71, 0xc3, 0x07, 0xef, 0x47, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xd0, 0x0d, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa4, 0xde, 0xf0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0x76, 0xc3, 0x07, 0x4f, 0xfd, 0xc7, 0x1a, 0x64, 0x1b, 0x44, 0xe8, 0x81, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0x80, 0xc3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xf5, 0x0d, 0x1f, 0x3c, 0x75, 0xd4, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0xc4, 0xd4, 0x7c, 0xc6, 0x20, 0xdb, 0x20, 0x0e, 0xe8, 0x33, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe9, 0x70, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0c, 0xc2, 0xe1, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0xcb, 0x5a, 0xd8, 0x0e, 0x9d, 0x88, 0x06, 0xd9, 0x06, 0x31, 0x35, 0x9f, 0x31, 0xc8, 0x36, 0x88, 0x03, 0xfa, 0x8c, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x73, 0x1c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x55, 0x71, 0x78, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x10, 0xad, 0x76, 0x5f, 0xc7, 0xe3, 0x83, 0x25, 0xfc, 0x3f, 0x83, 0x6c, 0x83, 0x98, 0x9a, 0xcf, 0x18, 0x64, 0x1b, 0xc4, 0x01, 0x7d, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x54, 0x0e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x1c, 0x39, 0x3c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf1, 0xe5, 0xf0, 0xc1, 0xab, 0x9a, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x40, 0xcd, 0xe1, 0x83, 0x83, 0x47, 0xed, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xea, 0x1c, 0x1e, 0x24, 0x03, 0xca, 0xea, 0xaa, 0xe3, 0xf1, 0x71, 0xe8, 0xe0, 0x3d, 0x87, 0x19, 0x83, 0x6c, 0x83, 0x98, 0x9a, 0xcf, 0x18, 0x64, 0x1b, 0xc4, 0x01, 0x7d, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x97, 0x0e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x2b, 0x3a, 0x3c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2c, 0xea, 0xf0, 0xc1, 0xab, 0x9a, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb6, 0xd5, 0xe1, 0x83, 0x83, 0x47, 0xed, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x72, 0x1d, 0x1e, 0x24, 0x03, 0xd6, 0xdf, 0x57, 0x1d, 0x8f, 0x8f, 0x43, 0x07, 0x0f, 0xf1, 0xcc, 0x18, 0x64, 0x1b, 0xc4, 0xd4, 0x7c, 0xc6, 0x20, 0xdb, 0x20, 0x0e, 0xe8, 0x33, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xdb, 0x76, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd0, 0xd9, 0xe1, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x73, 0x87, 0x0f, 0x5e, 0x14, 0x42, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xc5, 0x3b, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0xc2, 0xc3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xfc, 0x0e, 0x0f, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x38, 0x78, 0xd4, 0x1e, 0xd2, 0x70, 0x83, 0x6c, 0x83, 0x28, 0x2f, 0xd1, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2f, 0x79, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x94, 0xe2, 0xe1, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0xc7, 0xbd, 0xde, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xe0, 0xa1, 0xb4, 0x19, 0x83, 0x6c, 0x83, 0x98, 0x9a, 0xcf, 0x18, 0x64, 0x1b, 0xc4, 0x01, 0x7d, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x42, 0x0f, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xce, 0x3c, 0x3c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdc, 0xf4, 0xf0, 0xc1, 0x8b, 0x42, 0x88, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc6, 0x7a, 0xf8, 0xe0, 0xe0, 0x51, 0x7b, 0x1c, 0x3a, 0x78, 0x77, 0x21, 0xd3, 0x20, 0xdb, 0x20, 0xa6, 0xe6, 0x33, 0x06, 0xd9, 0x06, 0x71, 0x40, 0x9f, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xad, 0xdc, 0xc3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x64, 0x0f, 0x0f, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xf7, 0x3d, 0x7c, 0xf0, 0xa2, 0x10, 0xa2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x11, 0x1f, 0x3e, 0x38, 0x78, 0xd4, 0x1e, 0x87, 0x0e, 0x5e, 0xee, 0xc8, 0x34, 0xc8, 0x36, 0x88, 0xa9, 0xf9, 0x8c, 0x41, 0xb6, 0x41, 0x1c, 0xd0, 0x67, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x24, 0xfa, 0xf0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0xe5, 0xc3, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xad, 0x0f, 0x1f, 0xbc, 0xaa, 0x49, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x70, 0x1f, 0x3e, 0x58, 0xaa, 0xee, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0xe1, 0x87, 0x07, 0xc9, 0x80, 0xb9, 0x6a, 0xf7, 0x75, 0x3c, 0x3e, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x27, 0x68, 0xff, 0x7d, 0x1c, 0x1a, 0x64, 0x1b, 0xc4, 0xd4, 0x7c, 0xc6, 0x20, 0xdb, 0x20, 0x0e, 0xe8, 0x33, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xc3, 0x1f, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xa5, 0x7e, 0x78, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x78, 0xae, 0xea, 0x78, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0xa0, 0xff, 0xf7, 0x71, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0x03, 0xc4, 0x83, 0x60, 0x83, 0x87, 0xed, 0xf5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x78, 0xf0, 0xc8, 0x02, 0xe2, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb0, 0x81, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x26, 0x88, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x80, 0x20, 0x3e, 0x78, 0x20, 0x07, 0xd2, 0x20, 0xdb, 0x20, 0xce, 0x8c, 0x34, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xc9, 0x20, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc0, 0x82, 0xf8, 0xe0, 0xdd, 0x95, 0x3d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x1b, 0x2c, 0xbc, 0x41, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc8, 0x18, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0x5b, 0xc4, 0xc3, 0x6e, 0xf0, 0xa0, 0xad, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x2e, 0x23, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3c, 0x34, 0xe2, 0x83, 0x97, 0x86, 0x0d, 0x0d, 0xb2, 0x0d, 0x62, 0xb4, 0x49, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x38, 0x37, 0xe2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0xd6, 0x88, 0x0f, 0xe3, 0x32, 0xec, 0x06, 0x6f, 0xb7, 0x78, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x98, 0x38, 0xe2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x9e, 0x23, 0x1e, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x1d, 0x17, 0x6f, 0x1b, 0xbc, 0xe3, 0xe2, 0xed, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x62, 0x35, 0x4a, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xf3, 0x88, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xb4, 0x23, 0x3e, 0x34, 0x12, 0x1c, 0x64, 0x1b, 0xc4, 0x6a, 0x94, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x95, 0x7f, 0xc4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xf1, 0x11, 0x1f, 0x04, 0xa5, 0xf7, 0xb0, 0x1b, 0x2c, 0xb1, 0xb4, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2a, 0x41, 0xe2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x28, 0x24, 0x3e, 0x58, 0xb4, 0x69, 0x35, 0xc8, 0x36, 0x88, 0x45, 0x2c, 0x8d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x15, 0x89, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x3d, 0x24, 0x1e, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb7, 0x91, 0xf8, 0xe0, 0xfd, 0x08, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x07, 0x49, 0x7c, 0xf0, 0x0e, 0x03, 0xa2, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xb0, 0x1b, 0x2c, 0xb3, 0x41, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa8, 0x49, 0xe2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xaf, 0x24, 0x3e, 0x58, 0xb8, 0x83, 0x34, 0xc8, 0x36, 0x88, 0xdd, 0x2f, 0x8d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x31, 0x89, 0x0f, 0x86, 0xe6, 0xef, 0xb0, 0x1b, 0xbc, 0x14, 0xe3, 0x6d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x36, 0x89, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc2, 0x93, 0x78, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x57, 0x63, 0xbc, 0x6d, 0xf0, 0x6a, 0x8c, 0xb7, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0x8f, 0x31, 0x8d, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x26, 0x25, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x34, 0x94, 0xf8, 0xe0, 0xf1, 0x66, 0x1b, 0x83, 0x6c, 0x83, 0xf8, 0x18, 0xd3, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x5b, 0x95, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd8, 0x53, 0xe2, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x40, 0x79, 0x5d, 0x75, 0x3c, 0x3e, 0xb4, 0x00, 0x1b, 0x76, 0x83, 0x17, 0x4f, 0xbc, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6e, 0x2b, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0xc1, 0x12, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0xfa, 0x89, 0xb7, 0x0d, 0x5e, 0x3f, 0xf1, 0x76, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x91, 0xae, 0xa6, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x1d, 0xb7, 0xc4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xcf, 0x12, 0x1f, 0x3c, 0x7e, 0xd9, 0x68, 0x90, 0x6d, 0x10, 0xe9, 0x6a, 0x1a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xf5, 0x12, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x9e, 0x4b, 0x3c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0b, 0x30, 0xf1, 0xc1, 0x1b, 0x01, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x5c, 0x98, 0xf8, 0x20, 0xe5, 0xe3, 0xe2, 0x38, 0x74, 0x68, 0x01, 0x36, 0xec, 0x06, 0x6f, 0x90, 0x78, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe2, 0x62, 0xe2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x43, 0x26, 0x1e, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x3d, 0x12, 0x6f, 0x1b, 0xbc, 0x47, 0xe2, 0xed, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x62, 0x9f, 0x4e, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0x9e, 0x89, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x5f, 0x26, 0x3e, 0x78, 0xc9, 0x5e, 0xcf, 0x20, 0xdb, 0x20, 0xf6, 0xe9, 0x34, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xa8, 0x26, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x3e, 0x9a, 0xf8, 0xe0, 0x79, 0x50, 0x65, 0xc3, 0x6e, 0xf0, 0xa6, 0x84, 0xb7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xbe, 0x26, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3a, 0x6d, 0xe2, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xde, 0x97, 0xf0, 0xb6, 0xc1, 0xfb, 0x12, 0xde, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0x06, 0xf8, 0x34, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc0, 0x9b, 0x78, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x58, 0xfa, 0x3a, 0x1e, 0x1f, 0x9a, 0x02, 0x0d, 0xb2, 0x0d, 0x62, 0x80, 0x4f, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3a, 0x72, 0xe2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0xc2, 0x89, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x39, 0x27, 0x3e, 0x78, 0x3f, 0x42, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xa7, 0x13, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x65, 0x27, 0x3e, 0x78, 0x3f, 0x42, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xbd, 0x13, 0x1f, 0xbc, 0xbb, 0x67, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0xb4, 0x00, 0x1b, 0x76, 0x83, 0x65, 0x80, 0x48, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x25, 0x4f, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0xf5, 0xc4, 0x07, 0x0b, 0x0b, 0x91, 0x06, 0xd9, 0x06, 0x51, 0x89, 0xa8, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0xf7, 0xc4, 0x07, 0xd1, 0xf7, 0xa7, 0x31, 0xc8, 0x36, 0x88, 0x4a, 0x44, 0x8d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0xfb, 0x89, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xd4, 0x27, 0x1e, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x14, 0xa0, 0xf8, 0xe0, 0xfd, 0x08, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x35, 0x50, 0x3c, 0x48, 0x06, 0x2c, 0xbf, 0xaf, 0x3a, 0x1e, 0x1f, 0x87, 0x0e, 0x2d, 0xc0, 0x86, 0xdd, 0xe0, 0xdd, 0xeb, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x6c, 0x50, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0x09, 0xc5, 0x07, 0x0f, 0x33, 0xd5, 0x1a, 0x64, 0x1b, 0x44, 0x59, 0xa4, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb9, 0x0f, 0xc5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x30, 0x14, 0x0f, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x27, 0x51, 0x7c, 0xf0, 0x46, 0x80, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xa9, 0x28, 0x3e, 0x78, 0xd4, 0xaf, 0xd6, 0x71, 0xe8, 0xd0, 0x41, 0x63, 0xd8, 0x0d, 0x1e, 0x69, 0xf0, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x09, 0x18, 0xc5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xab, 0x51, 0x3c, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x83, 0x0d, 0xde, 0x36, 0x78, 0xb0, 0xc1, 0xdb, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x44, 0x27, 0xa6, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x25, 0x22, 0xc5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x79, 0x14, 0x0f, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x4e, 0x52, 0x7c, 0xf0, 0x46, 0x80, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x3c, 0x29, 0x3e, 0x78, 0x75, 0xb8, 0xd0, 0x71, 0xe8, 0xd0, 0x41, 0x63, 0xd8, 0x0d, 0x5e, 0x55, 0xf1, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x71, 0x2a, 0xc5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xd1, 0x52, 0x3c, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x0b, 0x2b, 0xde, 0x36, 0x78, 0x61, 0xc5, 0xdb, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x44, 0x27, 0xa8, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xce, 0x14, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x0a, 0x53, 0x3c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x94, 0x4d, 0xf1, 0xc1, 0x1b, 0x01, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x20, 0xa7, 0x78, 0xf8, 0x0d, 0x56, 0xf7, 0xc2, 0x0c, 0x92, 0x81, 0x70, 0x1d, 0xcf, 0x8f, 0x43, 0x87, 0xa6, 0x40, 0x83, 0x6c, 0x83, 0xe8, 0x04, 0xd5, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xfa, 0xa7, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x74, 0x9e, 0xe2, 0x83, 0xe7, 0x41, 0x95, 0x0d, 0xbb, 0xc1, 0x3b, 0x1a, 0xde, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x51, 0xa8, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x8a, 0x8a, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x53, 0xc3, 0xdb, 0x06, 0x6f, 0x6a, 0x78, 0x3b, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x38, 0x59, 0xd5, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x81, 0xa9, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x66, 0xa4, 0xe2, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0xc3, 0x2f, 0x48, 0x06, 0xde, 0xab, 0x3a, 0x1e, 0x1f, 0x9c, 0x83, 0xbf, 0x0f, 0x1d, 0x34, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x7f, 0x2a, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x48, 0xa9, 0xe2, 0x83, 0x37, 0x80, 0x60, 0x0d, 0xb2, 0x0d, 0x62, 0x18, 0x56, 0x63, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8c, 0x57, 0xf1, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0x58, 0x7e, 0xd5, 0x38, 0x74, 0xd0, 0x18, 0x76, 0xe1, 0x36, 0x88, 0x56, 0x1e, 0x8c, 0x83, 0x90, 0x02, 0x3f, 0x18, 0x0b, 0xa3, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x42, 0xac, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0x6a, 0xc5, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0xda, 0x8a, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x7f, 0x2b, 0x1e, 0x7e, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb5, 0x72, 0xc5, 0x07, 0x4d, 0x90, 0x8b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xd5, 0x15, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd6, 0x5e, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x1d, 0x78, 0xc5, 0x83, 0x60, 0x83, 0xc6, 0xde, 0x45, 0x0e, 0xd2, 0x9f, 0x89, 0x06, 0xd9, 0x06, 0x11, 0xb4, 0xab, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3d, 0x60, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x09, 0x7e, 0xc5, 0x87, 0x71, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x8e, 0x6f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x0e, 0x16, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x35, 0x2c, 0x3e, 0x1c, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x25, 0x16, 0x0f, 0x82, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x17, 0x8b, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x8a, 0x2c, 0x1e, 0x76, 0x61, 0x37, 0x68, 0x1f, 0x50, 0xe4, 0xb0, 0xbe, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x95, 0x94, 0xc5, 0xc3, 0x6e, 0x10, 0x7c, 0xcc, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x7d, 0x59, 0x7c, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0x9a, 0xc5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x50, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7e, 0x67, 0xf1, 0xc1, 0xb8, 0x30, 0x1b, 0x44, 0x0b, 0xe2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x4c, 0x8b, 0x0f, 0xf9, 0xda, 0x41, 0xb4, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x87, 0x16, 0x1f, 0x14, 0x87, 0x1a, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x52, 0x8b, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x79, 0xb5, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x5c, 0x8b, 0x0f, 0xa9, 0x83, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x62, 0x8b, 0x0f, 0x02, 0x13, 0x7b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe8, 0xd9, 0xe2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xa8, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe8, 0xb6, 0xf8, 0x90, 0xec, 0x18, 0x44, 0x0b, 0xe2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x8b, 0x8b, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x11, 0xb9, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x96, 0x8b, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x37, 0x17, 0x1f, 0xb4, 0x39, 0x35, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x43, 0x17, 0x1f, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x6f, 0xba, 0xf8, 0xd0, 0x9f, 0xfc, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x93, 0x75, 0xf1, 0x21, 0x31, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x48, 0x76, 0xf1, 0x21, 0x55, 0x33, 0x88, 0x16, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x36, 0xdd, 0xe2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0xbd, 0xc5, 0x07, 0x6d, 0x4e, 0x8d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe5, 0xbf, 0xc5, 0x87, 0xd4, 0xc1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x14, 0x2e, 0x3e, 0xb4, 0x12, 0x3f, 0x0e, 0x1d, 0x8f, 0x8f, 0x6f, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x06, 0x6f, 0x5d, 0x30, 0x3e, 0x88, 0xd9, 0xf8, 0x8c, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0xf8, 0xc5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xd5, 0x17, 0x0f, 0xbb, 0x70, 0x8b, 0x07, 0x4f, 0x04, 0x30, 0x3e, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0xf6, 0x8b, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc2, 0xbf, 0x78, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x38, 0xff, 0xd6, 0xd8, 0x20, 0xce, 0xbf, 0x35, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0xfe, 0xc0, 0x35, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x0f, 0x30, 0x1e, 0x04, 0x1b, 0x3c, 0xd7, 0x21, 0xe9, 0xd0, 0x41, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x44, 0x03, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x49, 0x30, 0x1e, 0x76, 0xe1, 0x36, 0x44, 0x73, 0x3c, 0x78, 0xeb, 0x82, 0xf1, 0x06, 0xd1, 0x64, 0xae, 0x71, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0xb1, 0x4a, 0xae, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x46, 0x83, 0xf1, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0x60, 0xfc, 0x55, 0x1d, 0x8f, 0x0f, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x71, 0x66, 0x66, 0x0e, 0x1e, 0x2f, 0x51, 0xb1, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xdd, 0xe5, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xda, 0x95, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xaa, 0x39, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x32, 0xe6, 0x78, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0x70, 0x8e, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xec, 0x39, 0x3e, 0x1c, 0xed, 0x83, 0x6c, 0x83, 0x38, 0x53, 0xd7, 0x18, 0x64, 0x1b, 0xc4, 0xc6, 0xba, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x0d, 0x1d, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x04, 0x74, 0x3c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x46, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x2e, 0x1d, 0x1f, 0x8e, 0xf6, 0x41, 0xb6, 0x41, 0x9c, 0xa9, 0x6b, 0x0c, 0xb2, 0x0d, 0x62, 0x63, 0x5d, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0xa6, 0x8e, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x73, 0x3a, 0x1e, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xbe, 0xea, 0xf8, 0xe0, 0x2d, 0x4a, 0x59, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x8c, 0x75, 0x7c, 0xf0, 0x52, 0xb1, 0x85, 0xe3, 0xd0, 0xa1, 0x13, 0xd1, 0x20, 0xdb, 0x20, 0xce, 0xd4, 0x35, 0x06, 0xd9, 0x06, 0xb1, 0xb1, 0xae, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa5, 0x61, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x72, 0x1d, 0x0f, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x46, 0x76, 0x7c, 0xf0, 0x46, 0x80, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x39, 0x3b, 0x3e, 0x78, 0x48, 0xcc, 0xd4, 0x71, 0xe8, 0x60, 0x09, 0xff, 0xcf, 0x20, 0xdb, 0x20, 0xce, 0xd4, 0x35, 0x06, 0xd9, 0x06, 0xb1, 0xb1, 0xae, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x71, 0x71, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xb0, 0x1d, 0x0f, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x43, 0x77, 0x7c, 0xf0, 0xaa, 0x26, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xdf, 0xee, 0xf8, 0xe0, 0xb8, 0xd7, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0xf3, 0x8e, 0x07, 0xc9, 0x80, 0x48, 0xb5, 0xfb, 0x3a, 0x1e, 0x1f, 0x87, 0x0e, 0xde, 0x73, 0x98, 0x31, 0xc8, 0x36, 0x88, 0x33, 0x75, 0x8d, 0x41, 0xb6, 0x41, 0x6c, 0xac, 0x6b, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x25, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x50, 0xdf, 0xf1, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0x20, 0xe8, 0xab, 0x8e, 0xc7, 0x07, 0x8d, 0x4e, 0x28, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x8b, 0x1b, 0x3c, 0x11, 0xc0, 0xf8, 0x20, 0x00, 0xee, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x30, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x8f, 0x78, 0x3c, 0xec, 0xc2, 0x6d, 0x10, 0x4d, 0xe6, 0x1a, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb9, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x46, 0x1e, 0x1f, 0x44, 0x7e, 0xb9, 0xc6, 0x20, 0xdb, 0x20, 0xb2, 0x17, 0x36, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xa3, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0xd6, 0xbe, 0x8e, 0xc7, 0x87, 0x0e, 0x1a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x62, 0x1e, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xda, 0xe6, 0xf1, 0x41, 0x34, 0x87, 0x6b, 0x0c, 0xb2, 0x0d, 0x22, 0xf4, 0x61, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1c, 0xcf, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0xe0, 0xbd, 0xaf, 0xe3, 0xf1, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x9e, 0x7a, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x20, 0xeb, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xbc, 0x1e, 0x1f, 0x9a, 0x45, 0x0e, 0xb2, 0x0d, 0x22, 0x9f, 0x62, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf0, 0xd8, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0xcf, 0xf0, 0x0e, 0x38, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xfa, 0x7b, 0x3c, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x07, 0x8f, 0x10, 0x3e, 0x3e, 0xa4, 0x6a, 0x8e, 0x43, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0xa3, 0x17, 0x96, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x1b, 0x1f, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x35, 0xf3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x95, 0xc9, 0xc7, 0x07, 0x0f, 0x05, 0xb6, 0x1a, 0x64, 0x1b, 0x44, 0x1c, 0xc7, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x4b, 0x1f, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xfa, 0x7c, 0x7c, 0x10, 0xcd, 0x77, 0x16, 0x83, 0x6c, 0x83, 0x88, 0xe3, 0xd8, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x1f, 0xfb, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe2, 0xea, 0xe3, 0x41, 0xb0, 0xc1, 0xc3, 0xf6, 0x7a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0x4c, 0xfd, 0xe2, 0xd0, 0x31, 0xec, 0x38, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0a, 0xef, 0xe3, 0x41, 0xb0, 0xc1, 0xc3, 0xf6, 0x7a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x3c, 0x78, 0x22, 0xf8, 0xf1, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0xaf, 0x20, 0x58, 0xdc, 0xe0, 0x71, 0x00, 0xc8, 0x07, 0x01, 0x70, 0xbf, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x94, 0xfc, 0x78, 0xd8, 0x0d, 0xde, 0x9b, 0x0e, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x3d, 0xe7, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x9e, 0x7e, 0x3c, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xdb, 0xd3, 0x81, 0x36, 0x78, 0x7b, 0x3a, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x44, 0x5b, 0xca, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0xec, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x80, 0xf9, 0x6a, 0xf7, 0x75, 0x3c, 0x3e, 0x74, 0xd0, 0x18, 0x76, 0x83, 0x07, 0x6d, 0x0d, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfe, 0xfb, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xca, 0x1f, 0x1f, 0xbc, 0x34, 0x6c, 0x68, 0x90, 0x6d, 0x10, 0x79, 0x2e, 0x1b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xe2, 0x1f, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x56, 0x7f, 0x7c, 0x18, 0x97, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xf6, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc0, 0xff, 0x78, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0xf1, 0xe0, 0x71, 0x00, 0xc8, 0x1b, 0x44, 0xf0, 0xcc, 0xc6, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xc4, 0x87, 0xcc, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x18, 0x20, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x2c, 0x80, 0x3c, 0x08, 0x36, 0x88, 0x4f, 0x15, 0x8d, 0x43, 0x53, 0xa0, 0x41, 0xb6, 0x41, 0x7c, 0xc8, 0x6c, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xc1, 0x80, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x35, 0x02, 0xf2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0x77, 0x18, 0x10, 0x1d, 0x5a, 0x80, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x3c, 0x5b, 0xa2, 0x62, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe7, 0x0a, 0xf2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x65, 0x28, 0xc8, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x24, 0x83, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x91, 0x0b, 0xf2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0x35, 0xc8, 0x07, 0xef, 0x47, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0xfa, 0x8f, 0xb1, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfa, 0x06, 0xf9, 0xe0, 0xb5, 0x6a, 0x57, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x88, 0x4c, 0x9d, 0x8d, 0x41, 0xb6, 0x41, 0x34, 0xed, 0x6c, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x77, 0x0f, 0xf2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0x3a, 0xc8, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x02, 0x21, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x1a, 0x42, 0x3e, 0x48, 0x91, 0xf1, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x8c, 0x90, 0x07, 0xc9, 0xc0, 0xfb, 0x55, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xb0, 0x84, 0x3c, 0x48, 0x06, 0x8c, 0xfe, 0xaa, 0xe3, 0xf1, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x9f, 0x90, 0x07, 0xc9, 0x80, 0xe2, 0xee, 0xeb, 0x78, 0x7c, 0x1c, 0x3a, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0x44, 0xa6, 0xce, 0xc6, 0x20, 0xdb, 0x20, 0x9a, 0x76, 0x36, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xc1, 0x42, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8e, 0x0a, 0x79, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x98, 0xba, 0xe3, 0xf1, 0xa1, 0x05, 0xd8, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0xbb, 0x90, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x5e, 0x86, 0x3c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x15, 0x0d, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc6, 0x35, 0xe4, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x72, 0x43, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x10, 0x87, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfa, 0x1c, 0xf2, 0xf0, 0x0b, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0x76, 0xc8, 0x07, 0xad, 0x51, 0xf4, 0x1f, 0xdf, 0x8e, 0x6f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xe5, 0x21, 0x0f, 0x82, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0xf7, 0x90, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x0a, 0x44, 0x1e, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0x08, 0x91, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x56, 0x43, 0xe4, 0x43, 0xaa, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xae, 0x44, 0xe4, 0x83, 0xc0, 0xc4, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0a, 0x46, 0xe4, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe5, 0x23, 0xf2, 0x21, 0x75, 0x30, 0xfc, 0x06, 0x8d, 0x64, 0x3d, 0x0d, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x4a, 0x12, 0x79, 0x10, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x4f, 0x89, 0x3c, 0xec, 0x06, 0x63, 0x93, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x30, 0x91, 0x0f, 0xa9, 0x83, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x35, 0x91, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd2, 0x29, 0xf2, 0x61, 0xed, 0x77, 0x10, 0x2d, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0x9e, 0xc8, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x12, 0x8a, 0x7c, 0x88, 0xff, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0xa3, 0xc8, 0x87, 0xd4, 0xc1, 0xf1, 0xf8, 0xf8, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x89, 0x2a, 0xf2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9a, 0x58, 0xe4, 0x43, 0xaa, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf2, 0x59, 0xe4, 0xe1, 0x17, 0x44, 0x0b, 0xe6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xdc, 0x22, 0x0f, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x72, 0x2e, 0xf2, 0x61, 0xaf, 0xf0, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1e, 0x2f, 0xf2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xba, 0x5f, 0xe4, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x25, 0xc2, 0xc8, 0x83, 0x64, 0x20, 0xbf, 0x77, 0x70, 0xf6, 0x32, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xac, 0x62, 0xe4, 0xc3, 0x5e, 0xe1, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0c, 0x64, 0xe4, 0x41, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xae, 0x32, 0xf2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0xd0, 0xc8, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xaf, 0x34, 0xf2, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x56, 0x8d, 0x7c, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0xd8, 0xc8, 0x87, 0xd4, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x6b, 0x23, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xf3, 0x46, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x88, 0x70, 0xe4, 0x43, 0xaa, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe4, 0x71, 0xe4, 0x83, 0xc0, 0xc4, 0x3e, 0xac, 0xd0, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x69, 0x8e, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x50, 0x47, 0x3e, 0x08, 0x4c, 0xec, 0xe1, 0x37, 0x68, 0xc8, 0xe3, 0x69, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc9, 0xec, 0xc8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x10, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x03, 0x8f, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe9, 0xf2, 0xc8, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xeb, 0x91, 0x0f, 0x7b, 0x85, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xc7, 0x47, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xb9, 0x8f, 0x3c, 0x48, 0x06, 0xd2, 0x2b, 0x07, 0x07, 0x8a, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xf2, 0x47, 0x3e, 0xa4, 0x6a, 0x8e, 0x43, 0xc7, 0xf3, 0xe3, 0xdb, 0xf1, 0xed, 0x78, 0xbc, 0x20, 0x58, 0x9c, 0x99, 0x59, 0x83, 0x28, 0x4e, 0xd7, 0x68, 0x0d, 0x5e, 0x3d, 0x94, 0xdc, 0x86, 0x53, 0x6c, 0x35, 0x78, 0xa4, 0x02, 0x5f, 0x1b, 0x2c, 0xdf, 0x9d, 0x3e, 0x48, 0x38, 0x8c, 0x3d, 0x28, 0xaa, 0x05, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x0d, 0x24, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x59, 0x42, 0xf2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe1, 0x05, 0xc9, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x30, 0x24, 0x1f, 0xbc, 0xaa, 0x49, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x77, 0x48, 0x3e, 0x78, 0x75, 0xb8, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x8d, 0x48, 0x1e, 0x24, 0x03, 0x8a, 0xea, 0xaa, 0xe3, 0xf1, 0x71, 0xe8, 0x90, 0x86, 0x1b, 0x64, 0x1b, 0x44, 0xf8, 0xe0, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x70, 0x24, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x52, 0x91, 0x3c, 0x08, 0x36, 0x78, 0x37, 0xb0, 0xd5, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0x20, 0xc2, 0x07, 0x37, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x43, 0x24, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x72, 0x8f, 0xe4, 0x41, 0xb0, 0xc1, 0xd3, 0xd1, 0xb9, 0x0e, 0x9d, 0x88, 0x06, 0xd9, 0x06, 0x11, 0x3e, 0xb8, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0x28, 0xc9, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x93, 0x24, 0x0f, 0x82, 0x0d, 0x1e, 0x16, 0xce, 0x75, 0xb0, 0x84, 0xff, 0x67, 0x90, 0x6d, 0x10, 0xe1, 0x83, 0x1b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xe3, 0x92, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbf, 0x4a, 0xf2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0xe0, 0xf0, 0x5f, 0x75, 0x3c, 0x3e, 0x78, 0xcf, 0x61, 0xc6, 0x20, 0xdb, 0x20, 0xc2, 0x07, 0x37, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x97, 0x26, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xbe, 0x98, 0xe4, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xd5, 0x49, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xee, 0x26, 0x79, 0xd8, 0x85, 0x5b, 0x3c, 0x78, 0xfb, 0x4f, 0xf2, 0x04, 0xc5, 0x77, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x7a, 0x92, 0x87, 0x5d, 0xb8, 0x0d, 0xe2, 0x11, 0x73, 0xe3, 0x20, 0x7a, 0x30, 0x37, 0x36, 0x88, 0x1e, 0xcc, 0x8d, 0xc3, 0x29, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x56, 0x50, 0xf2, 0xb0, 0x0b, 0xb7, 0x41, 0x3c, 0x62, 0x6e, 0x8c, 0x07, 0xaf, 0x1e, 0x4a, 0xde, 0x20, 0xae, 0x37, 0x37, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0xae, 0x2a, 0x37, 0x06, 0xd9, 0x06, 0xb1, 0x60, 0xb9, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1a, 0x52, 0xf2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0x45, 0xc9, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x2c, 0x25, 0x1f, 0xbc, 0x28, 0x84, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x9b, 0x92, 0x0f, 0x5e, 0x1d, 0x2e, 0x74, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x4e, 0x70, 0x7d, 0x1f, 0x87, 0x06, 0xd9, 0x06, 0x11, 0x3e, 0xb8, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0x54, 0xc9, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x43, 0x25, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x83, 0x56, 0xf2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x56, 0xc9, 0xc3, 0x6f, 0x48, 0x2e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xcc, 0x95, 0x7c, 0x50, 0xd8, 0xe1, 0x0c, 0xb2, 0x0d, 0xa2, 0x65, 0x74, 0x63, 0x90, 0x6d, 0x10, 0xe1, 0xa3, 0x1b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x8b, 0x25, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xf9, 0x95, 0x3c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x8d, 0x65, 0xc9, 0x63, 0x60, 0x80, 0x1a, 0x0e, 0xb2, 0x0d, 0x22, 0x7c, 0x70, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0xd8, 0x92, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x48, 0x4b, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x84, 0xba, 0xe4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0xde, 0x92, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xf8, 0x2e, 0x79, 0xd8, 0x85, 0x5b, 0x82, 0xc5, 0xdf, 0xf1, 0xe0, 0x91, 0x0a, 0x7c, 0x1b, 0x44, 0xb8, 0xeb, 0xc6, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xc4, 0x1e, 0xeb, 0xc6, 0x20, 0xdb, 0x20, 0x5e, 0x5a, 0x37, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xdb, 0x4b, 0x1e, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc4, 0x2f, 0xf9, 0xe0, 0xfd, 0x08, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x0e, 0x98, 0x3c, 0x48, 0x06, 0x7a, 0x57, 0x1d, 0x8f, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x09, 0x3a, 0x7f, 0x1f, 0x87, 0x06, 0xd9, 0x06, 0xf1, 0xb0, 0xba, 0x31, 0xc8, 0x36, 0x88, 0xe1, 0xd5, 0x8d, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x52, 0x4c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8b, 0x30, 0x79, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x1a, 0x93, 0x87, 0x5d, 0xb8, 0x25, 0x68, 0xfa, 0x7b, 0xf0, 0x34, 0x89, 0xa0, 0x83, 0xe8, 0x99, 0xb4, 0x18, 0x64, 0x1b, 0xc4, 0x84, 0xed, 0xc6, 0x20, 0xdb, 0x20, 0x8e, 0x6d, 0x37, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x7f, 0x4c, 0x1e, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x55, 0x32, 0xf9, 0xe0, 0xfd, 0x08, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x56, 0x99, 0x7c, 0x10, 0xeb, 0xb3, 0x1b, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x04, 0x5f, 0x7f, 0x1f, 0x87, 0x06, 0xd9, 0x06, 0xf1, 0xb0, 0xba, 0x31, 0xc8, 0x36, 0x88, 0xe1, 0xd5, 0x8d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x3e, 0x93, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xc2, 0x4c, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x06, 0xd1, 0xe4, 0x61, 0x17, 0x6e, 0x09, 0xda, 0xfe, 0x1e, 0x3c, 0x4a, 0x1f, 0x68, 0x83, 0x47, 0xe9, 0x03, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x3c, 0xfd, 0x6e, 0x0c, 0xb2, 0x0d, 0x62, 0x00, 0x78, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xce, 0xd2, 0xe4, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x50, 0x93, 0x0f, 0xde, 0x8f, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0xab, 0xc9, 0x07, 0xb1, 0x3e, 0xbb, 0x71, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x4e, 0xf0, 0xf7, 0xf7, 0x71, 0x68, 0x90, 0x6d, 0x10, 0xe1, 0x83, 0x1b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x6f, 0x9b, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x84, 0x6b, 0xf2, 0x20, 0xd8, 0x20, 0x16, 0x82, 0x34, 0x0e, 0x5e, 0xee, 0xc8, 0x34, 0xc8, 0x36, 0x88, 0xf0, 0xc1, 0x8d, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xe8, 0x4d, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x38, 0x37, 0x79, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0x9a, 0x72, 0xb4, 0x83, 0x38, 0xf0, 0xd1, 0x18, 0x64, 0x1b, 0x44, 0xf8, 0xe0, 0xc6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x21, 0x27, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x18, 0x9c, 0x3c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc8, 0x72, 0xf2, 0xc1, 0xab, 0x9a, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf0, 0xe6, 0xe4, 0x83, 0x57, 0x87, 0x0b, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x58, 0xe8, 0xe4, 0x41, 0x32, 0x60, 0x58, 0x57, 0x1d, 0x8f, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x09, 0xde, 0xff, 0x3e, 0x0e, 0x0d, 0xb2, 0x0d, 0x22, 0x7c, 0x70, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x18, 0xee, 0xe4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0xa8, 0x93, 0x87, 0xdf, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xdd, 0x3b, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x76, 0xf5, 0xe4, 0x83, 0xf7, 0x09, 0xe8, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x11, 0xca, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x8b, 0xa1, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x09, 0x85, 0xf2, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0x20, 0xd1, 0xee, 0xeb, 0x78, 0x7c, 0x48, 0xc3, 0x0d, 0xb2, 0x0d, 0xa2, 0x19, 0x7b, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x43, 0x94, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xea, 0x50, 0x1e, 0x04, 0x1b, 0x44, 0xbb, 0xf6, 0xc6, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0x20, 0x9a, 0xb1, 0x37, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x44, 0x51, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x90, 0x44, 0x79, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xaa, 0x15, 0xe5, 0x83, 0x57, 0x35, 0x09, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0x2e, 0xca, 0x07, 0x11, 0xb3, 0xbd, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x61, 0x94, 0x0f, 0x5e, 0xbd, 0x28, 0x70, 0x1c, 0x3a, 0xb4, 0x00, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x44, 0x8d, 0xf2, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xe0, 0x28, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xae, 0xa3, 0xbc, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0x3e, 0xca, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x03, 0x29, 0x2f, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1a, 0x91, 0xf2, 0x21, 0x86, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb8, 0xa4, 0x7c, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x4a, 0x29, 0x1f, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2f, 0x97, 0xf2, 0x21, 0x86, 0xc7, 0xe3, 0x15, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xbd, 0x4c, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x52, 0x34, 0xe5, 0xc5, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x61, 0x53, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbb, 0x9d, 0xf2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0x79, 0xca, 0x87, 0x15, 0xda, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xf6, 0x29, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x0f, 0x51, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa0, 0x45, 0xe5, 0xc3, 0x0a, 0xed, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x60, 0x47, 0xe5, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xad, 0xa8, 0xf2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x7d, 0xa5, 0xca, 0x87, 0x15, 0xda, 0xe3, 0xf1, 0xf1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x52, 0x95, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0xbd, 0xca, 0x87, 0x18, 0x1e, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x46, 0x56, 0x1e, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x70, 0x2b, 0x1f, 0x62, 0x78, 0x3c, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x22, 0x71, 0xe5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0xc9, 0x95, 0x17, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x13, 0x5d, 0x79, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0xf4, 0xca, 0x87, 0x18, 0x1e, 0x8f, 0x57, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x26, 0x80, 0xe5, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf3, 0xc4, 0xf2, 0x21, 0x86, 0xc7, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xce, 0x58, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3f, 0xc9, 0xf2, 0x21, 0x86, 0xc7, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x59, 0x59, 0x1e, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xfb, 0x2c, 0x1f, 0x62, 0x78, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x4e, 0x69, 0x79, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x3d, 0x56, 0xcb, 0x87, 0x18, 0x1e, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xe5, 0x5a, 0x1e, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xc3, 0x2d, 0x1f, 0x62, 0x78, 0x3c, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x77, 0xb7, 0x3c, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x5c, 0x5c, 0x3e, 0xc4, 0xf0, 0x78, 0x7c, 0x3c, 0x3e, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0x28, 0xa8, 0xc5, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x5f, 0x2e, 0x0f, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xa9, 0xb9, 0x3c, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x78, 0x2e, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe9, 0xa1, 0xcb, 0x83, 0x64, 0x20, 0xfd, 0x77, 0x3c, 0x3f, 0x38, 0xfc, 0xda, 0x1e, 0x24, 0xff, 0x46, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4a, 0xe9, 0xf2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf6, 0xd3, 0xe5, 0x83, 0x97, 0x68, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xad, 0xaa, 0xcb, 0x07, 0x4b, 0xd5, 0x7d, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5c, 0xeb, 0xf2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1a, 0xd8, 0xe5, 0x83, 0xf7, 0x23, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbf, 0xec, 0xf2, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x5c, 0xbb, 0x7c, 0x50, 0x22, 0x39, 0x1d, 0xdf, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0x50, 0x40, 0x0b, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x13, 0x5f, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe6, 0x7b, 0x79, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0xd0, 0x97, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x28, 0x5f, 0x1e, 0x04, 0x1b, 0xc4, 0xa7, 0x8a, 0xc6, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x88, 0xd1, 0x0c, 0x8e, 0x41, 0xb6, 0x41, 0x5c, 0x69, 0x70, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd4, 0xfb, 0xf2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xeb, 0xcb, 0x07, 0xb1, 0x65, 0xb3, 0x31, 0xc8, 0x36, 0x88, 0xd1, 0x0c, 0x8e, 0x41, 0xb6, 0x41, 0x5c, 0x69, 0x70, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc5, 0xfd, 0xf2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xf2, 0xcb, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xe7, 0x2f, 0x1f, 0xbc, 0x45, 0x29, 0x6b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x95, 0x7f, 0x79, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x05, 0x98, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xfb, 0x5f, 0x3e, 0x88, 0x2c, 0x0e, 0x8e, 0x41, 0xb6, 0x41, 0x1c, 0x91, 0x70, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x8d, 0xc0, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x62, 0x01, 0xf3, 0x61, 0x5c, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x27, 0xa2, 0x41, 0xb6, 0x41, 0x8c, 0x66, 0x70, 0x0c, 0xb2, 0x0d, 0xe2, 0x4a, 0x83, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x20, 0x98, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x5d, 0x60, 0x1e, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x5e, 0x82, 0xf9, 0xe0, 0x55, 0x4d, 0x42, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6c, 0x05, 0xf3, 0xc1, 0x71, 0xaf, 0x77, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x62, 0x30, 0x0f, 0x92, 0x01, 0xc7, 0xfb, 0xaa, 0xe3, 0xf1, 0x71, 0xe8, 0x60, 0x09, 0xff, 0xcf, 0x20, 0xdb, 0x20, 0x46, 0x33, 0x38, 0x06, 0xd9, 0x06, 0x71, 0xa5, 0xc1, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xcc, 0x07, 0xf3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0x1b, 0xcc, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x87, 0x30, 0x1f, 0xbc, 0x28, 0x84, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x49, 0x98, 0x0f, 0x8e, 0x7b, 0xbd, 0xc7, 0xa1, 0x83, 0x22, 0x78, 0xf0, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x9e, 0xc2, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x2f, 0xcc, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xb2, 0x30, 0x1f, 0x44, 0x16, 0x07, 0xc7, 0x20, 0xdb, 0x20, 0x2a, 0x6d, 0x38, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xae, 0x61, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x52, 0x86, 0x79, 0x10, 0x6c, 0x10, 0xed, 0xda, 0x1b, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x4e, 0x87, 0x79, 0x10, 0x6c, 0x70, 0x6e, 0x73, 0x5e, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x1b, 0x88, 0x79, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x28, 0x23, 0xe6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x47, 0x62, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xda, 0x25, 0xe6, 0x83, 0xf1, 0xd3, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0x4f, 0xcc, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x1c, 0xc5, 0xbc, 0x41, 0x41, 0x9a, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x27, 0x15, 0xf3, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xac, 0x2b, 0xe6, 0x83, 0xb7, 0x37, 0x04, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc1, 0x16, 0xf3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe0, 0x2e, 0xe6, 0x83, 0x85, 0x6b, 0xfd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x25, 0x18, 0xf3, 0x41, 0x41, 0x9a, 0x38, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0xc6, 0x98, 0x0f, 0x86, 0x66, 0xd7, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0xcd, 0x98, 0xc7, 0x83, 0x87, 0xf9, 0xdf, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9b, 0x1a, 0xf3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x94, 0x36, 0xe6, 0x83, 0x85, 0x6b, 0xfd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xff, 0x1b, 0xf3, 0x41, 0x41, 0x9a, 0x38, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0xe5, 0x98, 0x0f, 0x86, 0x17, 0xc5, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xec, 0x98, 0xc7, 0x83, 0xf7, 0xe2, 0x31, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xa0, 0xc7, 0x3c, 0xec, 0x06, 0x6f, 0xad, 0x7d, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xae, 0x3e, 0xe6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x00, 0x64, 0x3e, 0x78, 0xe4, 0x3d, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x61, 0x83, 0xcc, 0x07, 0x41, 0xe9, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8e, 0x21, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x23, 0x32, 0x1f, 0x7a, 0xec, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2f, 0x23, 0xf3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xbe, 0x47, 0xe6, 0x83, 0x85, 0x6b, 0xfd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x94, 0x24, 0xf3, 0x41, 0x41, 0x9a, 0x38, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0x2a, 0x99, 0x0f, 0xc6, 0x9a, 0xca, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7e, 0x4c, 0xe6, 0x83, 0xa0, 0xf4, 0x3e, 0x1e, 0x0f, 0x82, 0xc5, 0x0d, 0x22, 0x93, 0x00, 0xe3, 0x70, 0x8a, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xef, 0x64, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x44, 0x50, 0xe6, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x60, 0xad, 0xea, 0x78, 0x7c, 0x48, 0xc3, 0x0d, 0xb2, 0x0d, 0x62, 0x52, 0x8b, 0x63, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x4e, 0x99, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x1f, 0x65, 0x3e, 0x88, 0xd4, 0xee, 0x8d, 0x41, 0xb6, 0x41, 0x4c, 0x6a, 0x71, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xd3, 0xca, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7f, 0x2a, 0xf3, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0x57, 0x2f, 0x0a, 0x1c, 0x5a, 0x80, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x14, 0xe4, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0xdb, 0x99, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x09, 0x9e, 0x79, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x90, 0x6e, 0xf7, 0x75, 0x3c, 0x3e, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0xf1, 0x28, 0xc6, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0xf6, 0xcc, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xce, 0x33, 0x1f, 0x0c, 0x2f, 0xde, 0x41, 0xb6, 0x41, 0x3c, 0x8a, 0x71, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x33, 0x3f, 0xf3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0xf9, 0xcc, 0x07, 0xef, 0xf1, 0xca, 0x18, 0x64, 0x1b, 0xc4, 0xa3, 0x18, 0xc7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x0a, 0x34, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xf7, 0xcf, 0x3c, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x81, 0x57, 0x27, 0x36, 0x1c, 0x84, 0x3d, 0xf5, 0x71, 0x68, 0x90, 0x6d, 0x10, 0x8f, 0x62, 0x1c, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x8c, 0xd0, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x63, 0x41, 0xf3, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x22, 0x74, 0x8d, 0xe3, 0x20, 0x69, 0x00, 0xe1, 0x38, 0x34, 0xc8, 0x36, 0x88, 0x47, 0x31, 0x8e, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x77, 0x68, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x74, 0xa1, 0x79, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd2, 0x88, 0xe6, 0x83, 0xf7, 0x23, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x19, 0x45, 0xf3, 0x41, 0x1c, 0x39, 0x5f, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0x07, 0x0f, 0xf1, 0xcc, 0x18, 0x64, 0x1b, 0xc4, 0xa3, 0x18, 0xc7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x81, 0x1a, 0xcd, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x5d, 0x34, 0x0f, 0x82, 0x0d, 0x1e, 0xb6, 0xd7, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xe3, 0xc1, 0xeb, 0x39, 0x9a, 0x0f, 0x56, 0xf8, 0x64, 0x1d, 0x87, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x16, 0x0f, 0xa2, 0x35, 0x70, 0x63, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe7, 0x4b, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xd5, 0x34, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x22, 0xd3, 0x3c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0xe0, 0xed, 0x28, 0x0a, 0x87, 0x34, 0xdc, 0x20, 0xdb, 0x20, 0x92, 0xf4, 0x38, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xe7, 0x69, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x38, 0xa7, 0x79, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd8, 0x9f, 0xe6, 0x83, 0x17, 0x85, 0x10, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9a, 0x50, 0xf3, 0xc1, 0xab, 0xc3, 0x85, 0x8e, 0x43, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x25, 0x52, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x39, 0x35, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb2, 0xd4, 0x3c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x47, 0x54, 0xf3, 0xc1, 0x8b, 0x42, 0x88, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7b, 0xaa, 0xf9, 0xe0, 0x71, 0xa5, 0x56, 0xc7, 0xa1, 0x43, 0x1a, 0x6e, 0x90, 0x6d, 0x10, 0x39, 0x83, 0x1c, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x9e, 0xd5, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xad, 0x55, 0xf3, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xad, 0x5c, 0xcd, 0x07, 0xef, 0x47, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb4, 0xaf, 0xe6, 0x83, 0xa5, 0xea, 0x3e, 0xc7, 0xa1, 0x43, 0x53, 0xa0, 0x41, 0xb6, 0x41, 0xe4, 0x0c, 0x72, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x54, 0xd6, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8d, 0x58, 0xf3, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0x68, 0xcd, 0x07, 0xef, 0x47, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x60, 0xb5, 0xe6, 0x83, 0xa3, 0x96, 0xee, 0x71, 0xe8, 0xd0, 0x02, 0xec, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0x77, 0xcd, 0x83, 0x60, 0x83, 0x82, 0xdc, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x82, 0xbe, 0xe6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x04, 0x9b, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x1a, 0x36, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x4a, 0x6c, 0x1e, 0x24, 0x03, 0x82, 0xaf, 0xea, 0x90, 0x5c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4a, 0xc6, 0xe6, 0x83, 0xf1, 0xd3, 0x75, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xed, 0xb1, 0x79, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe2, 0x64, 0xf3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x20, 0xcb, 0xe6, 0x41, 0x32, 0x20, 0xf8, 0xaa, 0x0e, 0x2b, 0xb4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x91, 0xd9, 0x7c, 0x30, 0x2e, 0xcc, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x6f, 0x36, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x19, 0x6d, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x5f, 0xda, 0x7c, 0xd0, 0x82, 0x49, 0xff, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x16, 0xb5, 0xf9, 0x20, 0x59, 0x03, 0x61, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc2, 0xd5, 0xe6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0xae, 0xcd, 0x83, 0x64, 0xa0, 0x2e, 0x1d, 0x9c, 0x84, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x76, 0xd8, 0xe6, 0x43, 0x2b, 0xf1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x39, 0xdb, 0x7c, 0x90, 0x90, 0x83, 0x70, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcf, 0xb6, 0x79, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4a, 0x6e, 0xf3, 0x41, 0x0c, 0x95, 0x72, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe1, 0xbb, 0xcd, 0x87, 0xfe, 0xe4, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd3, 0xb7, 0xf9, 0x60, 0x4c, 0x58, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x0b, 0x6e, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x42, 0xdc, 0x7c, 0x10, 0x43, 0xa5, 0x1c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb8, 0x71, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x26, 0x37, 0x1f, 0xfa, 0x93, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xc5, 0xdc, 0x3c, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0xcf, 0xcd, 0x87, 0x68, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x78, 0xe9, 0xe6, 0x83, 0x91, 0x65, 0x75, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xae, 0x6e, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x88, 0xdd, 0x7c, 0x10, 0x43, 0xa5, 0x1c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd1, 0x76, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x77, 0x37, 0x1f, 0xfa, 0x93, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x0b, 0xde, 0x3c, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x65, 0xe3, 0xcd, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0xcc, 0x9b, 0x0f, 0xd2, 0x68, 0x17, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x64, 0xf4, 0xe6, 0x43, 0x34, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe8, 0x7a, 0xf3, 0x41, 0x48, 0x81, 0x1f, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe7, 0x7b, 0xf3, 0xc1, 0x23, 0x68, 0x2a, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa1, 0x7c, 0xf3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xea, 0xfa, 0xe6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x8d, 0xf8, 0xcd, 0x07, 0x2f, 0x7b, 0xa0, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0xf6, 0x9b, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc0, 0xbf, 0xf9, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x01, 0x9c, 0x0f, 0xd2, 0x56, 0x48, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdf, 0x80, 0xf3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1a, 0x03, 0xe7, 0x41, 0x32, 0xd0, 0xb9, 0xef, 0xe0, 0x98, 0x55, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0x08, 0xce, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf0, 0x05, 0xe7, 0xe1, 0x17, 0x44, 0x0b, 0x3b, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x3c, 0x38, 0x0f, 0x3d, 0x78, 0x03, 0xf9, 0xcc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x55, 0x38, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xbf, 0x70, 0x1e, 0x24, 0x03, 0xc1, 0x3b, 0x38, 0x7b, 0x19, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc5, 0x1a, 0xce, 0x13, 0x74, 0xdf, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x4d, 0x1e, 0xce, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0x42, 0x9c, 0x0f, 0xde, 0xc4, 0x0b, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x8f, 0x38, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa3, 0x89, 0xf3, 0xa1, 0x3f, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x55, 0x29, 0xce, 0x07, 0xa3, 0xf9, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xb0, 0x38, 0x1f, 0x52, 0x07, 0xc7, 0xa1, 0xe3, 0xd0, 0x21, 0x75, 0x70, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe1, 0xc5, 0x79, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9b, 0x8d, 0xf3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x90, 0x1c, 0xe7, 0x41, 0x32, 0x20, 0xfc, 0x9d, 0x0e, 0xce, 0x5e, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf6, 0x8e, 0xf3, 0x21, 0x86, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xcf, 0xc7, 0x79, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x82, 0x9c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x7d, 0xc8, 0xf9, 0xd0, 0x4a, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4e, 0x23, 0xe7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0x93, 0x9c, 0x0f, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x48, 0x26, 0xe7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x7a, 0x72, 0x3e, 0x1c, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x47, 0x39, 0x1f, 0x8c, 0xb1, 0xa7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xa5, 0x72, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb6, 0x2b, 0xe7, 0xc3, 0xd1, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x84, 0x96, 0xf3, 0x41, 0xb2, 0x7c, 0xc9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x73, 0x39, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe4, 0x97, 0xf3, 0xa1, 0x3f, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x62, 0xce, 0x83, 0x64, 0xc0, 0xba, 0xff, 0xaa, 0x83, 0x80, 0xf7, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x90, 0x32, 0xe7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x3e, 0x73, 0x3e, 0xb4, 0x12, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x50, 0xcd, 0xf9, 0xb0, 0xf6, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0x6e, 0xce, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x10, 0xe7, 0x7c, 0x68, 0x25, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xee, 0x9c, 0xf3, 0x21, 0x5f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x77, 0xce, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xa4, 0xe7, 0x7c, 0x90, 0xb6, 0x42, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x40, 0x9f, 0xf3, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xff, 0x9c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x51, 0xd0, 0xf9, 0x70, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x53, 0xe8, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1c, 0xa2, 0xf3, 0xd0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x16, 0x9d, 0x0f, 0xde, 0x40, 0x3e, 0x73, 0x88, 0xe1, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0e, 0x47, 0xe7, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc5, 0x90, 0xce, 0x83, 0x64, 0x20, 0x78, 0x07, 0xa7, 0x33, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x6e, 0xd2, 0xf9, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x2c, 0x9d, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x63, 0x3a, 0x0f, 0x92, 0x81, 0xba, 0x74, 0x70, 0x3a, 0x43, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x37, 0x9d, 0x0f, 0x0a, 0x3b, 0x9c, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe7, 0xe9, 0x7c, 0x48, 0xd5, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x52, 0x9d, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x27, 0x76, 0x3e, 0xc4, 0x70, 0x10, 0x6c, 0xb0, 0x2c, 0x0c, 0x66, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x81, 0xb2, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x3f, 0x3b, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xc9, 0xec, 0x7c, 0x10, 0x59, 0x1c, 0x1c, 0x83, 0x6c, 0x83, 0xc8, 0xf8, 0xe7, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf4, 0x6a, 0xe7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xa5, 0x9d, 0x0f, 0x22, 0xb5, 0x7b, 0x63, 0x90, 0x6d, 0x10, 0x19, 0xff, 0x1c, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xbf, 0xed, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x30, 0xb6, 0xf3, 0x20, 0xd8, 0x20, 0xda, 0xb5, 0x37, 0x0e, 0x9d, 0x88, 0x06, 0xd9, 0x06, 0x91, 0xf1, 0xcf, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x81, 0xb8, 0xf3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd1, 0xde, 0xce, 0x83, 0x60, 0x83, 0xe8, 0x06, 0xe3, 0x38, 0x74, 0x3f, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x16, 0x0f, 0x52, 0x88, 0x8f, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xb1, 0x3b, 0x0f, 0xbb, 0x70, 0x8b, 0x81, 0x37, 0xe7, 0x46, 0x1e, 0x52, 0x07, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xf1, 0xee, 0x3c, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0xc4, 0x85, 0x42, 0xc7, 0x06, 0x71, 0xa1, 0xd0, 0x71, 0x38, 0xc5, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0x93, 0x1b, 0xb3, 0x0f, 0xa9, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x95, 0x77, 0x1e, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0xa2, 0x92, 0xa1, 0x63, 0x83, 0xa8, 0x64, 0xe8, 0x38, 0x9c, 0x62, 0xc3, 0x2e, 0xdc, 0x62, 0xe0, 0xbd, 0x91, 0x91, 0x87, 0xd4, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xd8, 0x3b, 0x0f, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0x31, 0xf1, 0xd0, 0xb1, 0x41, 0x4c, 0x3c, 0x74, 0x1c, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0x31, 0xf0, 0xda, 0xe6, 0xce, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0xf2, 0x9d, 0x87, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0x88, 0x8c, 0xe8, 0xd8, 0x20, 0x22, 0x23, 0x3a, 0x0e, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x18, 0x78, 0x67, 0x65, 0xf3, 0x21, 0x75, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0xfc, 0xce, 0xc3, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0x41, 0x3c, 0x50, 0x74, 0x6c, 0x10, 0x0f, 0x14, 0x1d, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0x5b, 0x3c, 0x58, 0xc8, 0x0d, 0x7f, 0x48, 0x1d, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0f, 0xc0, 0xf3, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0x10, 0x8d, 0x16, 0x1d, 0x1b, 0x44, 0xa3, 0x45, 0xc7, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x16, 0x0f, 0x9a, 0x3c, 0x14, 0x3b, 0xa4, 0x0e, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x7a, 0xe0, 0x79, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x88, 0x84, 0x8c, 0x8e, 0x0d, 0x22, 0x21, 0xa3, 0xe3, 0x70, 0x8a, 0x0d, 0xbb, 0x70, 0x8b, 0x81, 0xb7, 0x16, 0x96, 0x1f, 0x52, 0x07, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x77, 0xf0, 0x3c, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0xc4, 0xe1, 0x46, 0xc7, 0x06, 0x71, 0xb8, 0xd1, 0x71, 0x38, 0xc5, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x96, 0x36, 0x4b, 0x0f, 0xa9, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x58, 0x78, 0x1e, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0xa2, 0xc0, 0xa3, 0x63, 0x83, 0x28, 0xf0, 0xe8, 0x38, 0x9c, 0x62, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x3a, 0x3c, 0x0f, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0x91, 0x8b, 0xd0, 0xb1, 0x41, 0xe4, 0x22, 0x74, 0x1c, 0x4e, 0xb1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x51, 0x3c, 0x1f, 0x3c, 0x2e, 0x9f, 0xeb, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x16, 0x0f, 0xe2, 0x3f, 0x3e, 0x63, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8d, 0xcf, 0xf3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x3d, 0x2f, 0xcf, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x0d, 0xf4, 0x3c, 0xec, 0x06, 0xcf, 0x3d, 0x0d, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc6, 0xa1, 0xe7, 0x83, 0x67, 0xdf, 0x75, 0x0d, 0xbb, 0x70, 0x1b, 0xbc, 0x43, 0x93, 0xe9, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x32, 0x7a, 0x1e, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x1d, 0x9a, 0x4c, 0x07, 0x2f, 0x2b, 0x65, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x25, 0xe9, 0x79, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0xf1, 0xe0, 0x21, 0x37, 0xcf, 0x1b, 0x44, 0xe0, 0x4a, 0xc7, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x44, 0x3a, 0x49, 0xc7, 0x20, 0xdb, 0x20, 0x3a, 0x4b, 0x3a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x86, 0x7a, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x8c, 0xe9, 0xf9, 0xe0, 0x55, 0xff, 0x4b, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x8f, 0xd2, 0x07, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xc7, 0xf5, 0x3c, 0xec, 0xc2, 0x6d, 0xf0, 0xf6, 0x74, 0xa0, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0xbe, 0x9e, 0x87, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0xb7, 0xa7, 0x03, 0x1d, 0x44, 0xd5, 0xca, 0xc6, 0xb0, 0x0b, 0xb7, 0xc1, 0xe3, 0xb6, 0x86, 0x0e, 0xa9, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x10, 0x7b, 0x1e, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0x1e, 0xb7, 0x35, 0x74, 0xf0, 0x6c, 0xb1, 0xa1, 0x61, 0x17, 0x6e, 0xf1, 0xe0, 0x65, 0x67, 0xcf, 0x87, 0xd4, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x93, 0x3d, 0x0f, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0x11, 0x51, 0xd3, 0xb1, 0x41, 0x44, 0xd4, 0x74, 0x1c, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0xf1, 0xe0, 0xb1, 0x6b, 0xcf, 0x87, 0xd4, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xa4, 0x3d, 0x0f, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0x11, 0x79, 0xd3, 0xb1, 0x41, 0x44, 0xde, 0x74, 0x1c, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0xf1, 0xa0, 0xe9, 0xc3, 0xee, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0xda, 0x9e, 0x87, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0x88, 0xd0, 0xe9, 0xd8, 0x20, 0x22, 0x74, 0x3a, 0x0e, 0xa7, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0x71, 0xcf, 0xc3, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0xc1, 0xa3, 0xf4, 0x81, 0x0e, 0xa2, 0x3f, 0x78, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xe1, 0x3d, 0x0f, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0x9c, 0xcf, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x9c, 0x3e, 0x0f, 0xbb, 0x41, 0x90, 0x78, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8d, 0xea, 0xf3, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0xb3, 0x3e, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe3, 0xeb, 0xf3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x18, 0xd9, 0xe7, 0x83, 0xb4, 0x6b, 0xf4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x9b, 0xf6, 0xf9, 0x10, 0xcd, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe0, 0xed, 0xf3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x31, 0xba, 0xcf, 0x07, 0xc3, 0x8b, 0x62, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xf3, 0x3e, 0x1f, 0x04, 0xa5, 0xf7, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd4, 0xdf, 0xe7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x98, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x31, 0xfc, 0x7c, 0x30, 0x4c, 0x27, 0x8e, 0xc7, 0xc7, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x34, 0x7e, 0x5e, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf8, 0xe4, 0xe7, 0x41, 0xb0, 0xb8, 0xe1, 0x14, 0xdb, 0xb0, 0x42, 0x7b, 0x50, 0x54, 0x0b, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x48, 0xfe, 0x3c, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa2, 0xf6, 0xe7, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x36, 0xfc, 0xf3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xcc, 0xf9, 0xe7, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x55, 0xf6, 0xcf, 0x07, 0xed, 0x95, 0x89, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4c, 0xfe, 0xf3, 0xc1, 0xc8, 0xb2, 0x3a, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x00, 0xff, 0xf3, 0x21, 0x75, 0x70, 0x1c, 0x1a, 0x7e, 0x83, 0x46, 0xb2, 0x9e, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xee, 0xff, 0x3c, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x06, 0x40, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x22, 0x80, 0x1e, 0x24, 0x03, 0xf9, 0x95, 0x83, 0xd3, 0x19, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x6f, 0x00, 0x7d, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa5, 0x09, 0xd0, 0x07, 0x25, 0x8c, 0xc4, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0x18, 0xa0, 0x0f, 0x96, 0x71, 0x79, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xf3, 0x00, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x3e, 0x02, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0x29, 0xa0, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xbd, 0x80, 0x3e, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x32, 0x0d, 0xe8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0x3b, 0xa0, 0x87, 0x5f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1a, 0x08, 0xf4, 0x20, 0x19, 0xb8, 0xbf, 0x0e, 0x4e, 0x67, 0xc8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x32, 0x02, 0x3d, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0x25, 0xd0, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x43, 0x0a, 0xf4, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xc3, 0x02, 0x7d, 0x48, 0xcc, 0x1c, 0xdf, 0x8e, 0x43, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xf1, 0x6d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x8e, 0x17, 0xe8, 0x41, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x70, 0x0c, 0xf4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe1, 0x3c, 0xd0, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe3, 0x0f, 0xf4, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x24, 0x04, 0x7d, 0x88, 0xe6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0x44, 0xd0, 0x87, 0x54, 0xcd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x1e, 0x41, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9a, 0x12, 0xf4, 0x61, 0x5c, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x69, 0x82, 0x3e, 0x08, 0x4c, 0xec, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0xa0, 0xa0, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xad, 0x53, 0xd0, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0xac, 0xa0, 0x0f, 0x86, 0x31, 0xec, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x65, 0x41, 0x1f, 0x04, 0x26, 0xf6, 0x71, 0x68, 0xf8, 0x0d, 0x1a, 0xf2, 0x78, 0x1a, 0x7e, 0x83, 0xc1, 0x0e, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x07, 0x17, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xd0, 0xa0, 0x87, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x61, 0x0d, 0xfa, 0x90, 0xb5, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xf3, 0x0b, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0xc4, 0xa0, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x93, 0x41, 0x1f, 0xf2, 0xb5, 0xc7, 0xf3, 0xe3, 0xdb, 0xf1, 0xf8, 0x78, 0xbc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xb9, 0x41, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x89, 0x83, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x8c, 0x0e, 0xfa, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0xee, 0xa0, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xfb, 0x07, 0x3d, 0xc8, 0x36, 0xc4, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x46, 0x41, 0xe8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x26, 0xa1, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x95, 0x42, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x46, 0x85, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb8, 0x0a, 0x7d, 0xb0, 0xba, 0x30, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x72, 0x85, 0x3e, 0xf4, 0x27, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x19, 0xb1, 0xd0, 0x87, 0xd4, 0xc1, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf8, 0x59, 0xe8, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd5, 0x16, 0x7a, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xcb, 0x85, 0x3e, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x04, 0x5e, 0xe8, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xfb, 0x42, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x62, 0x30, 0xf4, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x10, 0x43, 0x1f, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc0, 0x31, 0xf4, 0xf0, 0x0b, 0xa2, 0x85, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xa4, 0x0c, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xa1, 0x19, 0xfa, 0x60, 0x19, 0x61, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x3e, 0x43, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0xa5, 0xa1, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x57, 0x43, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xc5, 0x86, 0x3e, 0x78, 0x50, 0x04, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb6, 0x0d, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x25, 0xde, 0xd0, 0x87, 0xfe, 0xe4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x83, 0x43, 0x1f, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xef, 0x38, 0xf4, 0x21, 0x55, 0x73, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd3, 0x1c, 0x7a, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x4b, 0x87, 0x1e, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xd8, 0xa1, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xbb, 0x43, 0x1f, 0xb4, 0x27, 0x7d, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xc6, 0x43, 0x1f, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x20, 0x3d, 0xf4, 0x41, 0xb2, 0xb5, 0xf3, 0x71, 0x68, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xeb, 0x1e, 0x7a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x87, 0x3e, 0xf4, 0x41, 0x3b, 0xd6, 0xf7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x35, 0x3f, 0xf4, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xfe, 0x43, 0x1f, 0xa4, 0xba, 0x3b, 0x1f, 0x87, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd9, 0x0a, 0xd1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xd9, 0x10, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x09, 0x22, 0x7a, 0x90, 0x0c, 0xfe, 0x1c, 0x9c, 0xce, 0x90, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7a, 0x89, 0xe8, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xae, 0x88, 0x3e, 0x48, 0xb6, 0x76, 0x3e, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x8a, 0x11, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x6c, 0x23, 0x7a, 0x90, 0x0c, 0xf4, 0x75, 0x3a, 0x38, 0x7b, 0x19, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x2d, 0x1e, 0xd1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x0e, 0x12, 0x7d, 0xe8, 0x4f, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xed, 0x48, 0xf4, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x4d, 0xa2, 0x0f, 0x7b, 0x85, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0x05, 0xa2, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xab, 0x20, 0xfa, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0x10, 0xa2, 0x0f, 0x7b, 0x85, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xa5, 0x44, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x13, 0x8b, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x52, 0x16, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x19, 0x5a, 0xf4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x8e, 0xb5, 0xe8, 0x83, 0x14, 0x79, 0x8f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xbc, 0x2d, 0xfa, 0xd0, 0x9f, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xc2, 0x45, 0x1f, 0x84, 0x00, 0xf8, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x00, 0xba, 0xe8, 0x61, 0x17, 0x76, 0x83, 0xd1, 0xb1, 0xbe, 0x70, 0x1b, 0x2c, 0xb5, 0x29, 0x38, 0x08, 0x29, 0xf0, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x85, 0xd1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x80, 0x18, 0x7d, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x56, 0x8c, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xda, 0x18, 0x3d, 0x48, 0x06, 0x62, 0x77, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x20, 0x64, 0xf4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa2, 0xc9, 0xe8, 0x41, 0x32, 0x20, 0x58, 0xfb, 0x0e, 0xce, 0x5e, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x87, 0x65, 0xf4, 0x41, 0x5a, 0xcc, 0xc7, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xc7, 0x8c, 0x3e, 0x28, 0xec, 0x70, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x78, 0x33, 0x7a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9f, 0x67, 0xf4, 0xc1, 0xc9, 0x07, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x0a, 0x8d, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0a, 0xd2, 0xe8, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x36, 0x8d, 0x3e, 0x48, 0x4a, 0xeb, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0xa9, 0xd1, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x58, 0xa3, 0x0f, 0xd6, 0x47, 0x3a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd6, 0x6b, 0xf4, 0x18, 0x58, 0x00, 0x00, 0x71, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x46, 0xc7, 0xfa, 0xc2, 0x2e, 0xdc, 0x06, 0x03, 0xdf, 0xf8, 0x20, 0xa4, 0xc0, 0x17, 0x76, 0x83, 0x35, 0x43, 0x29, 0x0b, 0xbb, 0x70, 0x1b, 0xac, 0x49, 0x4b, 0x38, 0x08, 0xb2, 0xf8, 0x0d, 0x31, 0x1c, 0x6e, 0x83, 0x73, 0xe4, 0xee, 0x41, 0x90, 0xc5, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x78, 0x38, 0x7a, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x34, 0x8e, 0x3e, 0x48, 0x73, 0x6b, 0x19, 0x76, 0x83, 0x43, 0x3f, 0xf7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x46, 0x47, 0x6f, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0xd4, 0xd1, 0x87, 0xa3, 0x7d, 0xd8, 0x85, 0xdd, 0x60, 0x74, 0xac, 0x2f, 0xdc, 0x06, 0x43, 0xea, 0xf7, 0x20, 0xa4, 0xc0, 0x0f, 0x47, 0xfb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x7d, 0x47, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x35, 0x1e, 0x7d, 0x88, 0xe1, 0xb0, 0x0b, 0xbb, 0xc1, 0xe8, 0x58, 0x5f, 0xd8, 0x85, 0xdb, 0x60, 0x34, 0xf8, 0x1e, 0x84, 0x14, 0xf8, 0xc2, 0x6e, 0xb0, 0x66, 0x28, 0x65, 0xe1, 0x36, 0x18, 0xb7, 0xbb, 0x07, 0x41, 0x16, 0x7f, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x8a, 0xf8, 0xe8, 0x0d, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7d, 0x3e, 0xfa, 0x20, 0xa1, 0xec, 0x64, 0xd8, 0x85, 0xdd, 0x60, 0x74, 0xac, 0x2f, 0xec, 0x06, 0x51, 0x4f, 0xdd, 0xb1, 0xb0, 0x1b, 0xac, 0x19, 0x4a, 0x59, 0xb8, 0x0d, 0xd6, 0x68, 0x2b, 0x1c, 0x04, 0x59, 0xfc, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0x03, 0xa4, 0x37, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4e, 0x02, 0xe9, 0x83, 0x34, 0xb7, 0x96, 0x61, 0x17, 0x76, 0x83, 0xd1, 0xb1, 0xbe, 0xb0, 0x0b, 0xb7, 0x41, 0x29, 0x22, 0x79, 0x10, 0x52, 0xe0, 0x1b, 0x62, 0x38, 0xdc, 0x06, 0x45, 0xa4, 0xe4, 0x41, 0x48, 0x81, 0x1f, 0x8e, 0xf6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xaa, 0x90, 0xde, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x30, 0xa4, 0x0f, 0xd2, 0xdc, 0x5a, 0x86, 0x5d, 0xd8, 0x0d, 0x46, 0xc7, 0xfa, 0xc2, 0x2e, 0xdc, 0x06, 0x6b, 0xd2, 0x12, 0x0e, 0x42, 0x0a, 0x7c, 0x61, 0x37, 0x58, 0x33, 0x94, 0xb2, 0x70, 0x1b, 0x2c, 0x40, 0x63, 0x38, 0x08, 0xb2, 0xf8, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x98, 0x48, 0x6f, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x28, 0xd2, 0x07, 0x89, 0x72, 0x1f, 0xc3, 0x2e, 0xec, 0x06, 0xa3, 0x63, 0x7d, 0x61, 0x37, 0x88, 0x8d, 0xf0, 0x8e, 0x83, 0x58, 0xcc, 0xee, 0x38, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x6b, 0x23, 0xbd, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xe6, 0x48, 0x1f, 0x24, 0x94, 0x9d, 0x0c, 0xbb, 0xb0, 0x1b, 0x8c, 0x8e, 0xf5, 0x85, 0xdd, 0x20, 0x36, 0xc2, 0x3b, 0x16, 0x76, 0x83, 0x35, 0x43, 0x29, 0x0b, 0xb7, 0xc1, 0xc0, 0x37, 0x3e, 0x08, 0xb2, 0xf8, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x1d, 0x49, 0x6f, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x41, 0x4a, 0xd2, 0x07, 0xe9, 0x50, 0x1e, 0xc3, 0x2e, 0xec, 0x06, 0xa3, 0x63, 0x7d, 0x61, 0x37, 0x88, 0x8d, 0xf0, 0x8e, 0x85, 0xdd, 0x60, 0xcd, 0x50, 0xca, 0xc2, 0x6d, 0x50, 0x44, 0x4a, 0x1e, 0x04, 0x59, 0xfc, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xb0, 0xa4, 0x37, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7a, 0x2d, 0xe9, 0x83, 0x34, 0xb7, 0x96, 0x61, 0x17, 0x76, 0x83, 0xd1, 0xb1, 0xbe, 0xb0, 0x0b, 0xb7, 0xc1, 0x49, 0x6f, 0xf7, 0x20, 0xa4, 0xc0, 0x17, 0x76, 0x83, 0x35, 0x43, 0x29, 0x0b, 0xb7, 0xc1, 0x52, 0x9b, 0x82, 0x83, 0x20, 0x8b, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x36, 0x9a, 0xf4, 0x86, 0xa3, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd8, 0x35, 0xe9, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x6d, 0x6e, 0xd2, 0x07, 0xb1, 0xb8, 0xdb, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0xc5, 0x49, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x8d, 0x74, 0xd2, 0x83, 0x64, 0xa0, 0x54, 0x1d, 0x9c, 0x84, 0x8e, 0x0f, 0x4a, 0x86, 0xa6, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x76, 0x27, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x45, 0x4f, 0x7a, 0x90, 0x0c, 0x4e, 0x1d, 0x04, 0x39, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xd0, 0x27, 0x7d, 0x88, 0xe1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xfe, 0x93, 0x3e, 0x48, 0x4a, 0xeb, 0x39, 0x0e, 0x1d, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x46, 0xc7, 0xfa, 0xc2, 0x2e, 0xdc, 0x06, 0x25, 0x50, 0xe4, 0x41, 0x48, 0x81, 0x2f, 0xec, 0x06, 0x6b, 0x86, 0x52, 0x16, 0x76, 0x83, 0x48, 0x66, 0xee, 0x58, 0xd8, 0x0d, 0x16, 0x7c, 0x71, 0x2d, 0xdc, 0x06, 0x6b, 0xb4, 0x15, 0x0e, 0x02, 0x37, 0xfe, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x42, 0x4a, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdf, 0xa4, 0xf4, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc9, 0x52, 0x7a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x47, 0xa6, 0xf4, 0x41, 0x2c, 0xee, 0x76, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf5, 0x9b, 0xd2, 0x83, 0x64, 0x40, 0xf0, 0xee, 0x1c, 0x9c, 0x84, 0x8e, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb2, 0xa7, 0xf4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xcc, 0x50, 0xe9, 0x41, 0x32, 0x10, 0xae, 0x83, 0x20, 0xe7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x48, 0xa5, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x9c, 0x4a, 0x1f, 0x9c, 0x7b, 0xad, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3c, 0x55, 0xe9, 0x43, 0x7f, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xd4, 0x2a, 0x3d, 0x06, 0xf0, 0x19, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, 0xe6, 0xf6, 0x06, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0x1f, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x68, 0xb0, 0xf4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x38, 0x62, 0xe9, 0x83, 0x93, 0x0f, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x74, 0x2c, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0xca, 0xd2, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xcc, 0x2c, 0x7d, 0x90, 0x50, 0x76, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x9f, 0xa5, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x49, 0x4b, 0x1f, 0x9c, 0x7b, 0xad, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xaa, 0x6a, 0xe9, 0x43, 0x7f, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x81, 0x2d, 0x3d, 0x06, 0xe0, 0x09, 0x4c, 0x8c, 0xcc, 0x0c, 0x4d, 0x8d, 0xcd, 0x0d, 0x4e, 0x4e, 0x4b, 0x98, 0xd8, 0x18, 0x59, 0x99, 0xd9, 0x19, 0x5a, 0x9a, 0xda, 0x1a, 0x5b, 0x9b, 0xdb, 0x1b, 0x5c, 0x9c, 0xdc, 0x1c, 0x5d, 0x9d, 0xdd, 0x1d, 0x5e, 0x9e, 0x7e, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0xa3, 0x63, 0x7d, 0x61, 0x37, 0x88, 0xdd, 0xfe, 0x8e, 0x85, 0xdd, 0x60, 0xcd, 0x50, 0xca, 0x06, 0x91, 0xcc, 0xdc, 0x71, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xec, 0x86, 0xe9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x85, 0x98, 0x3e, 0x1c, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x4e, 0x4c, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xb2, 0x98, 0x3e, 0x88, 0xc5, 0xdd, 0x8e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x25, 0x63, 0xfa, 0x20, 0x06, 0x0b, 0x3c, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xff, 0xc6, 0xf4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x66, 0x8f, 0xe9, 0x83, 0x93, 0x0f, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x1a, 0x32, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x6d, 0x24, 0xd3, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x72, 0x32, 0x7d, 0x90, 0x0e, 0xe5, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0x54, 0xa6, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xb3, 0x4c, 0x1f, 0x9c, 0x7b, 0xad, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd8, 0x97, 0xe9, 0x43, 0x7f, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x27, 0x33, 0x3d, 0x06, 0xe0, 0x4f, 0x8b, 0xdf, 0x97, 0x0b, 0x4c, 0x8c, 0xcc, 0x0c, 0x4d, 0x8d, 0xcd, 0x0d, 0x4e, 0x4e, 0x98, 0xd8, 0x18, 0x59, 0x99, 0xd9, 0x19, 0x5a, 0x9a, 0xda, 0x1a, 0x5b, 0x9b, 0xdb, 0x1b, 0x5c, 0x9c, 0xdc, 0x1c, 0x5d, 0x9d, 0xdd, 0x1d, 0x5e, 0x9e, 0x7e, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0x46, 0xc7, 0xfa, 0x06, 0xb1, 0xdb, 0xdf, 0x71, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7b, 0x6c, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0xcd, 0xa6, 0x0f, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x7d, 0x69, 0xd3, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0xd8, 0xa6, 0x0f, 0x62, 0x71, 0xb7, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x79, 0x9b, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x1e, 0x37, 0x3d, 0x48, 0x06, 0xda, 0xf6, 0x1d, 0x9c, 0xbd, 0x8c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5e, 0xba, 0xe9, 0x83, 0xc3, 0x95, 0xf4, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xbc, 0x9b, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xa5, 0x37, 0x7d, 0x10, 0x21, 0xbe, 0x1d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4d, 0xdf, 0xf4, 0x41, 0x5a, 0xcc, 0xc7, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x00, 0x9c, 0x3e, 0x28, 0xec, 0x70, 0x8e, 0x43, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x2e, 0x38, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb3, 0x70, 0xfa, 0xe0, 0xe4, 0x03, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x21, 0x4e, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xcd, 0xe2, 0xf4, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x37, 0x4e, 0x1f, 0x24, 0xa5, 0xf5, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x68, 0xc8, 0xe9, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x95, 0x93, 0xd3, 0x07, 0xeb, 0x23, 0x1d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcf, 0x72, 0xfa, 0x20, 0xbe, 0x93, 0x3b, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0xdb, 0xd0, 0x7c, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa8, 0xbb, 0xe8, 0x0d, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x44, 0x2f, 0xfa, 0x20, 0x29, 0xad, 0x67, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1c, 0x96, 0xe8, 0x61, 0x37, 0x68, 0x9d, 0x0f, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x5e, 0xa2, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xc8, 0x44, 0x0f, 0x92, 0x41, 0xdf, 0x41, 0x90, 0xf3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x41, 0x4d, 0xf4, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xee, 0x4d, 0xf4, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xa7, 0x13, 0x7d, 0xb0, 0xc8, 0x23, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0x80, 0xa2, 0x0f, 0x42, 0x00, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa6, 0xa1, 0xe8, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0x46, 0xd1, 0x07, 0xd1, 0x9e, 0xdf, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x25, 0x45, 0x1f, 0x04, 0x26, 0xf6, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x62, 0x8a, 0x1e, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0x9e, 0xa2, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe2, 0xa8, 0xe8, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xa3, 0x8a, 0x3e, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0xae, 0xa2, 0x0f, 0x42, 0x00, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x08, 0xad, 0xe8, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x5c, 0xd1, 0x83, 0x64, 0x20, 0xe9, 0x74, 0x70, 0xf6, 0x32, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd2, 0xaf, 0xe8, 0x43, 0x34, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xa1, 0x39, 0x3d, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x5a, 0x9d, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x05, 0xed, 0xf4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0xbe, 0xd3, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x48, 0xe1, 0xe9, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0xc5, 0xd3, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x90, 0xa7, 0x0f, 0xda, 0x2b, 0x13, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x74, 0xe5, 0xe9, 0xc3, 0xda, 0xef, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x9b, 0xa7, 0x0f, 0xa9, 0x83, 0xe3, 0xd0, 0xf0, 0x1b, 0x34, 0x92, 0xf5, 0x34, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x52, 0xe8, 0xe9, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0xd3, 0xd3, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0xae, 0xa7, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x66, 0x4f, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xe9, 0x9e, 0x1e, 0x24, 0x03, 0xfd, 0xef, 0x0e, 0x8e, 0x59, 0xc5, 0x83, 0x64, 0x98, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xff, 0x7b, 0xfa, 0x90, 0xaa, 0x39, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb8, 0xf8, 0xf4, 0x71, 0xe8, 0x38, 0x74, 0x30, 0xd2, 0xb4, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x2c, 0x9f, 0x1e, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0xd0, 0xa7, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x80, 0xf5, 0xe9, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb6, 0x7d, 0xfa, 0x20, 0x48, 0xf1, 0x0f, 0xeb, 0x9b, 0x0b, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x7d, 0xf0, 0xd3, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xce, 0xfc, 0xf4, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0xd7, 0x4f, 0x1f, 0x84, 0x14, 0xf8, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x14, 0x7f, 0x7a, 0x90, 0x0c, 0x39, 0x24, 0x97, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xda, 0x9f, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x02, 0xff, 0xe9, 0x83, 0x90, 0x02, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x16, 0x80, 0xfa, 0x20, 0x70, 0xe3, 0x8f, 0xc7, 0xc7, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x26, 0xa0, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xd0, 0x82, 0x7a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x75, 0x06, 0xf5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x48, 0x0e, 0xea, 0x83, 0xd3, 0x0a, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x7d, 0x50, 0x1f, 0x0c, 0x79, 0xf4, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0x22, 0xd4, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0x4a, 0xa8, 0x0f, 0x96, 0x3e, 0x76, 0x0d, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x4f, 0xa8, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xaa, 0x50, 0x1f, 0xc4, 0xf9, 0xa9, 0xc6, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xaf, 0x85, 0xfa, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x33, 0x0c, 0xf5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc6, 0x19, 0xea, 0x83, 0x76, 0x61, 0x02, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcc, 0x86, 0xfa, 0x20, 0x6e, 0x98, 0x30, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0x39, 0xd4, 0x07, 0x0f, 0xce, 0x1a, 0x38, 0x0e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xe4, 0xa1, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xf7, 0x43, 0x7d, 0x10, 0xe7, 0xa7, 0x1a, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x20, 0x21, 0xea, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x1d, 0x45, 0xd4, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0x8f, 0xa8, 0x0f, 0xda, 0x85, 0x09, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x58, 0x25, 0xea, 0x83, 0x68, 0xe5, 0xc1, 0x38, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xe0, 0x44, 0x7d, 0xf0, 0xe0, 0xac, 0x81, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0xa1, 0xa8, 0x07, 0xc9, 0x40, 0xfd, 0x3a, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x4e, 0x51, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xb3, 0xa2, 0x3e, 0x48, 0x6c, 0x39, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xb2, 0xa8, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x83, 0x8b, 0xfa, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xbd, 0xa8, 0x0f, 0xad, 0xc4, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6a, 0x18, 0xf5, 0xc1, 0xd3, 0xb0, 0x06, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x50, 0x46, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfc, 0x8c, 0xfa, 0x20, 0xce, 0x4f, 0x35, 0x06, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0x6a, 0xd4, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0xdb, 0xa8, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xc1, 0x51, 0x1f, 0xb4, 0x0b, 0x13, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0x73, 0xd4, 0x07, 0x71, 0xdc, 0x66, 0x71, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xce, 0x8e, 0xfa, 0xe0, 0xc1, 0x59, 0x03, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xe5, 0x51, 0x1f, 0x3c, 0x38, 0x6b, 0x60, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x86, 0x8f, 0xfa, 0x20, 0xea, 0x2c, 0x3d, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xfe, 0x8f, 0x7a, 0x10, 0x2c, 0x6e, 0x10, 0x29, 0x4d, 0x1d, 0x07, 0x91, 0xd2, 0xd4, 0xb1, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x41, 0x24, 0xf5, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x33, 0xa9, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x55, 0x9d, 0xd4, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x40, 0xa9, 0x07, 0xc9, 0x40, 0xf9, 0x3a, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x68, 0x94, 0xfa, 0x90, 0x3a, 0x38, 0x0e, 0x0d, 0xbf, 0x41, 0x23, 0x59, 0x4f, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x30, 0xa5, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x8c, 0x4a, 0x3d, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xae, 0x52, 0x1f, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc5, 0x95, 0xfa, 0x90, 0xec, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x1d, 0x96, 0xfa, 0x90, 0x98, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xda, 0x59, 0xea, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x3c, 0x3e, 0x1e, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdc, 0x2d, 0xf5, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x18, 0x99, 0x7a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x02, 0x33, 0xf5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x62, 0x67, 0xea, 0x83, 0x55, 0x5f, 0x10, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x63, 0x34, 0xf5, 0x21, 0x9a, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8d, 0x9a, 0xfa, 0x30, 0x2e, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xae, 0xa9, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x00, 0x4e, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xba, 0x3a, 0xf5, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xcf, 0x9d, 0x7a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4f, 0x3c, 0xf5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfc, 0x79, 0xea, 0x83, 0xf5, 0x91, 0x0e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x6d, 0x4f, 0x7d, 0x48, 0xd5, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x35, 0x9f, 0xfa, 0x90, 0x3a, 0x38, 0x0e, 0x0d, 0xbf, 0x41, 0x23, 0x59, 0x4f, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xe4, 0xa7, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9a, 0x7f, 0xea, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0x01, 0xd5, 0x07, 0xc9, 0x33, 0x29, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2b, 0x41, 0xf5, 0x41, 0x90, 0xe2, 0x2f, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0x0f, 0xaa, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x48, 0xa1, 0xfa, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3d, 0x43, 0xf5, 0xe1, 0x68, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0x0f, 0xd5, 0x07, 0x21, 0xe2, 0x7f, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x52, 0xa2, 0xfa, 0x90, 0xaa, 0x39, 0x1e, 0x1f, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc0, 0xa2, 0x7a, 0x10, 0x6c, 0x10, 0x0b, 0xae, 0x1e, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x9c, 0x54, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfa, 0xa5, 0x7a, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x36, 0x53, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc4, 0xa6, 0xfa, 0x10, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xc7, 0xa9, 0x3e, 0xa4, 0x0e, 0x8e, 0x43, 0xc3, 0x6f, 0xd0, 0x48, 0xd6, 0xd3, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x77, 0xaa, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x61, 0x3f, 0xd5, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x84, 0xaa, 0x0f, 0x89, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x27, 0xaa, 0x3e, 0xa4, 0x6a, 0x8e, 0x43, 0xc3, 0x6f, 0x30, 0x30, 0x01, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x7c, 0x54, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x71, 0x4a, 0xd5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xd2, 0x54, 0x7d, 0x48, 0x1d, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xfd, 0x54, 0x7d, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x50, 0xaa, 0xfa, 0xb0, 0x57, 0x78, 0x3c, 0x3e, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd9, 0x55, 0xf5, 0xf0, 0x2b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8a, 0x56, 0xf5, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x73, 0x55, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xee, 0x57, 0xf5, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x89, 0x55, 0x1f, 0x62, 0x78, 0xe8, 0x89, 0x7a, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0e, 0xb3, 0xea, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xbb, 0x55, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x8c, 0xab, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x4c, 0x57, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xf1, 0xae, 0x7a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbc, 0x5e, 0xf5, 0x20, 0x19, 0xe8, 0x7f, 0x77, 0x30, 0xfc, 0x63, 0x07, 0xc9, 0x30, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x70, 0x5f, 0xf5, 0x21, 0x75, 0x70, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x54, 0xc0, 0xea, 0xc3, 0xd1, 0x7e, 0x1c, 0x3a, 0x18, 0x69, 0x5a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x0d, 0x56, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x84, 0x61, 0xf5, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x8c, 0x58, 0x7d, 0x10, 0x52, 0xe0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x2d, 0x56, 0x1f, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x85, 0x63, 0xf5, 0x41, 0xe0, 0xc6, 0x1f, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x8c, 0xac, 0x1e, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x28, 0xab, 0x17, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfc, 0xb2, 0x7a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa8, 0x66, 0xf5, 0x41, 0x9b, 0x71, 0xfe, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xd7, 0x59, 0x7d, 0x10, 0x63, 0xa4, 0x16, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x0d, 0xad, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x46, 0x5a, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe4, 0xb4, 0xfa, 0xa0, 0xcd, 0x38, 0xff, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x53, 0xab, 0x07, 0xd1, 0x82, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xcc, 0xd6, 0xea, 0xc3, 0xd1, 0x7e, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x38, 0xd8, 0xea, 0x31, 0xf0, 0xea, 0xc8, 0x8c, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xd2, 0x56, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xbb, 0xad, 0x3e, 0x58, 0xfa, 0xd8, 0x35, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xd1, 0xad, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xd1, 0x5b, 0x7d, 0x10, 0xe7, 0xa7, 0x1a, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf6, 0xdf, 0xea, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0xc2, 0xd5, 0x07, 0xed, 0xc2, 0x04, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5f, 0x71, 0xf5, 0xe1, 0x68, 0x3f, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x21, 0x57, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x59, 0xae, 0x3e, 0x58, 0xfa, 0xd8, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x38, 0x57, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x86, 0xae, 0x3e, 0x68, 0x17, 0x26, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xa7, 0xab, 0x0f, 0x31, 0x3c, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3c, 0xeb, 0xea, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x5d, 0xd9, 0xd5, 0x07, 0x71, 0x7e, 0xaa, 0x31, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xe1, 0xae, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xf0, 0x5d, 0x7d, 0xd0, 0x2e, 0x4c, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x87, 0x57, 0x1f, 0x62, 0x78, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x96, 0xbc, 0xfa, 0xa0, 0x64, 0x68, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x40, 0xaf, 0x3e, 0x28, 0x19, 0x9a, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x61, 0xbd, 0x7a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x79, 0x7b, 0xf5, 0x41, 0x9c, 0x9f, 0x6a, 0x0c, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0xe1, 0xab, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xcd, 0x57, 0x1f, 0xb4, 0x0b, 0x13, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x4d, 0xf6, 0xd5, 0x87, 0x18, 0x1e, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xf2, 0xab, 0x0f, 0xd2, 0x2d, 0xa5, 0x8f, 0x43, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0xfc, 0xab, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x03, 0x58, 0x1f, 0x2c, 0x7d, 0xec, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x07, 0xac, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x19, 0x58, 0x1f, 0xc4, 0xf9, 0xa9, 0xc6, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x93, 0x60, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x7e, 0xc1, 0xfa, 0xa0, 0x5d, 0x98, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x76, 0xb0, 0x3e, 0xc4, 0xf0, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0x23, 0xac, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x51, 0x58, 0x1f, 0xb4, 0x19, 0xe7, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x4d, 0x17, 0xd6, 0x07, 0x51, 0x1b, 0x83, 0x71, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x74, 0x0d, 0xeb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0x1d, 0xd6, 0x07, 0x71, 0x7e, 0xaa, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x82, 0x58, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x1a, 0xb1, 0x3e, 0x68, 0x17, 0x26, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x4c, 0xac, 0x0f, 0x47, 0xfb, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xa4, 0x58, 0x1f, 0x94, 0x0c, 0x4d, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5e, 0x16, 0xeb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x7c, 0xac, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x04, 0x59, 0x1f, 0xc4, 0xf9, 0xa9, 0xc6, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x80, 0xc8, 0xfa, 0x60, 0xdc, 0x41, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x6d, 0x64, 0x7d, 0x70, 0x5a, 0xc1, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x50, 0xb2, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xcd, 0x64, 0x7d, 0x50, 0x52, 0xff, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb9, 0x4f, 0xd6, 0x87, 0x18, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x40, 0x29, 0xeb, 0x83, 0xd4, 0x30, 0x84, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xcd, 0x5e, 0xd6, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x3b, 0xb3, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0a, 0x9c, 0xf5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa8, 0x39, 0xeb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0x76, 0xd6, 0x83, 0x64, 0xa0, 0xff, 0xdd, 0xc1, 0x49, 0xe8, 0x78, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xcb, 0xb3, 0x3e, 0xa4, 0x0e, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0xf1, 0x59, 0x0f, 0x82, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0xfd, 0xac, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x4f, 0xb4, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x35, 0x5a, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x81, 0xb4, 0x1e, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x27, 0xad, 0x0f, 0xa9, 0x83, 0x83, 0xd3, 0x0a, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x5a, 0x5a, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xcb, 0xb4, 0x1e, 0x24, 0x03, 0x6d, 0x9d, 0x0e, 0x4e, 0x67, 0xc8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x11, 0xa7, 0xf5, 0x21, 0x86, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xe0, 0xd3, 0xfa, 0x60, 0xbc, 0xe9, 0x1c, 0x87, 0x8e, 0x43, 0xc3, 0x6f, 0xd0, 0x48, 0xd6, 0xd3, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x43, 0xad, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x6d, 0xa5, 0xd6, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0x50, 0xad, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xee, 0x55, 0xeb, 0x43, 0xaa, 0xe6, 0xa0, 0x64, 0x68, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x56, 0x57, 0xeb, 0xe3, 0xd0, 0x71, 0x68, 0xf8, 0x0d, 0x06, 0x26, 0xc0, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x62, 0xad, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x06, 0x5a, 0xeb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc5, 0xb6, 0xd6, 0x07, 0x0d, 0x7d, 0xff, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x8d, 0xb9, 0xd6, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xc3, 0x6b, 0x7d, 0x30, 0x10, 0xa9, 0x8f, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xf1, 0x6b, 0x7d, 0x10, 0xbd, 0x73, 0x1e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x07, 0x5b, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x24, 0xb1, 0xf5, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa2, 0x63, 0xeb, 0x43, 0x0b, 0xa0, 0xe3, 0xdb, 0xf1, 0xf8, 0x78, 0xbc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x2b, 0x5b, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x81, 0xcd, 0xd6, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x44, 0x5b, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x9e, 0xb6, 0x3e, 0x68, 0x33, 0xce, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xad, 0xad, 0xc7, 0xc0, 0xab, 0x23, 0x2b, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0xb5, 0xad, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x76, 0x5b, 0x1f, 0x2c, 0x7d, 0xec, 0x1a, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x81, 0x5b, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x19, 0xb7, 0x3e, 0x28, 0xa9, 0xff, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfc, 0x72, 0xeb, 0x43, 0x0c, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2f, 0xba, 0xf5, 0x41, 0x52, 0x5a, 0xcf, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xca, 0x75, 0xeb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x6d, 0xee, 0xd6, 0x07, 0x71, 0x7e, 0xaa, 0x31, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x89, 0xb7, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x3f, 0x6f, 0x7d, 0xd0, 0x2e, 0x4c, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xdb, 0x5b, 0x1f, 0x94, 0x59, 0x90, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xf3, 0xad, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xf1, 0x5b, 0x1f, 0xb4, 0x19, 0xe7, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x45, 0xff, 0xd6, 0x63, 0xe0, 0xa5, 0x99, 0x19, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6c, 0x81, 0xeb, 0xe3, 0xdb, 0x71, 0xe8, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x62, 0x70, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x20, 0xe1, 0xfa, 0x20, 0xce, 0x4f, 0x35, 0x06, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x0b, 0xd7, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x1d, 0xae, 0x0f, 0xda, 0x85, 0x09, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb2, 0x88, 0xeb, 0x83, 0xa2, 0x19, 0xf2, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x10, 0xc5, 0xf5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x80, 0x8b, 0xeb, 0x83, 0x36, 0xe3, 0xfc, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x3b, 0xe3, 0x7a, 0x0c, 0xbc, 0xb4, 0x39, 0xe4, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xd7, 0x71, 0x7d, 0x7c, 0x3b, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x06, 0xb9, 0x1e, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x47, 0xae, 0x17, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xe5, 0xe4, 0xfa, 0x60, 0xdc, 0x41, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc3, 0xca, 0xf5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe6, 0x96, 0xeb, 0x83, 0x36, 0xe3, 0xfc, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x14, 0xe6, 0xfa, 0x20, 0x82, 0x03, 0x3e, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x42, 0x73, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xdc, 0xe6, 0xfa, 0x20, 0xb1, 0xe5, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xcd, 0xb9, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3c, 0x9e, 0xeb, 0xc3, 0xd1, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xcb, 0xcf, 0xf5, 0xc1, 0x91, 0xa7, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x08, 0x5d, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x26, 0xba, 0x3e, 0x68, 0x33, 0xce, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x8f, 0xae, 0x0f, 0x8a, 0xd7, 0xc8, 0xe3, 0xd0, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0x96, 0xae, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x38, 0x5d, 0x1f, 0x2c, 0x7d, 0xec, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0xa2, 0xae, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x4f, 0x5d, 0x1f, 0xb4, 0x0b, 0x13, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa5, 0x56, 0xd7, 0x87, 0x18, 0x1e, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5d, 0xd6, 0xf5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x18, 0xae, 0xeb, 0x83, 0x38, 0x3f, 0xd5, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0xbe, 0xae, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x87, 0x5d, 0x1f, 0x2c, 0x7d, 0xec, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xc9, 0xae, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x9d, 0x5d, 0x1f, 0xb4, 0x0b, 0x13, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x45, 0x6a, 0xd7, 0xe3, 0xc1, 0xb9, 0xfe, 0xf4, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0xdb, 0xae, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xc2, 0x5d, 0x1f, 0xb4, 0x0b, 0x13, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x99, 0x73, 0xd7, 0xe3, 0xc1, 0x41, 0x9e, 0xed, 0x38, 0x74, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x55, 0x77, 0xd7, 0x07, 0x25, 0x43, 0xd3, 0x71, 0xe8, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0x7a, 0xd7, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0xfa, 0xae, 0x0f, 0xda, 0x8c, 0xf3, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x24, 0xc0, 0xeb, 0x31, 0xf0, 0xea, 0xc8, 0x88, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x71, 0x84, 0xd7, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0x0e, 0xaf, 0x0f, 0xda, 0x8c, 0xf3, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x04, 0xc5, 0xeb, 0x31, 0x78, 0x38, 0xe4, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc4, 0xf1, 0x7a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x72, 0xcf, 0xeb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa5, 0xa1, 0xd7, 0x07, 0x71, 0x7e, 0xaa, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x91, 0x5e, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x39, 0xbd, 0x3e, 0x88, 0xf3, 0x53, 0x8d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x41, 0xf5, 0xfa, 0xe0, 0xbd, 0x69, 0x01, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x9d, 0xf5, 0xfa, 0x60, 0xdc, 0x41, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf2, 0xeb, 0xf5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3a, 0xd9, 0xeb, 0x83, 0x38, 0x3f, 0xd5, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x6a, 0xaf, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xdf, 0x5e, 0x1f, 0xc4, 0xf9, 0xa9, 0xc6, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xad, 0x7b, 0x7d, 0xb0, 0xba, 0x17, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xf6, 0x5e, 0x1f, 0x8c, 0x90, 0xa8, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x07, 0xbe, 0x3e, 0x38, 0xad, 0xe0, 0x1e, 0x87, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x11, 0x5f, 0x0f, 0x82, 0xc5, 0x0d, 0xc2, 0xd9, 0xfe, 0x20, 0x52, 0x9a, 0x3a, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xd7, 0xbe, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe9, 0xf8, 0xf5, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xe7, 0xfc, 0x7a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7d, 0xfa, 0xf5, 0x61, 0xed, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xd9, 0xaf, 0x0f, 0xa9, 0x83, 0xe3, 0xd0, 0xf0, 0x1b, 0x34, 0x92, 0xf5, 0x34, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc2, 0xf7, 0xeb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x91, 0xbf, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x4e, 0x7f, 0x7d, 0x48, 0x76, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe4, 0xfd, 0xf5, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x91, 0xfe, 0xf5, 0x21, 0x55, 0x73, 0x3c, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe0, 0x7f, 0x3d, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x44, 0x03, 0xec, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x3d, 0x60, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8a, 0x04, 0xf6, 0x61, 0xaf, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x72, 0x0a, 0xec, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0x17, 0xd8, 0x07, 0xed, 0xa8, 0xb9, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa0, 0x06, 0xf6, 0x21, 0x75, 0x70, 0x1c, 0x3a, 0x1e, 0x1f, 0x8f, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x7b, 0x60, 0x0f, 0x82, 0xc5, 0xd9, 0x20, 0x52, 0x9a, 0x3a, 0x36, 0xac, 0xd0, 0x1e, 0x14, 0xd3, 0x82, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x3e, 0x61, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xd7, 0x85, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x18, 0x0c, 0x7b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xde, 0x18, 0xf6, 0xa1, 0x91, 0xe0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x99, 0x61, 0x1f, 0xa2, 0x79, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x23, 0x0d, 0x7b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x19, 0x1b, 0xf6, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x8e, 0x37, 0xec, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x4c, 0x0e, 0xfb, 0xa0, 0xbd, 0x32, 0x91, 0x83, 0x75, 0x6d, 0x63, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x5a, 0x87, 0x7d, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x88, 0x87, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7a, 0x0f, 0x7b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa2, 0x1f, 0xf6, 0xa1, 0xe1, 0xd7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x05, 0x62, 0x1f, 0x84, 0x14, 0xf8, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x72, 0x42, 0xec, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xf4, 0x10, 0x7b, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x52, 0xc4, 0x3e, 0x24, 0x3b, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x68, 0xc4, 0x3e, 0x08, 0x29, 0xf0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xf2, 0xc4, 0x1e, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0x42, 0xb1, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe6, 0x51, 0xec, 0x43, 0x23, 0xc1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x4e, 0xb1, 0x0f, 0x82, 0x2c, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0x82, 0xb1, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0e, 0x62, 0xec, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xda, 0x18, 0xfb, 0x20, 0x28, 0xbd, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x52, 0xc6, 0x3e, 0x18, 0xac, 0xb1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x45, 0x8e, 0x7d, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x19, 0xce, 0xd8, 0x83, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0x23, 0xd7, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0xdf, 0x5e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x0e, 0x5e, 0x63, 0x8d, 0xbd, 0x61, 0xe2, 0x36, 0x88, 0xec, 0xc2, 0x8b, 0x83, 0xd5, 0xa3, 0xfa, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x43, 0x63, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xeb, 0x34, 0xf6, 0x78, 0xf0, 0x1a, 0x6b, 0xec, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xc8, 0xc6, 0x3e, 0x08, 0x4a, 0xef, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0xb7, 0xb1, 0x0f, 0x06, 0x6b, 0xec, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb3, 0x37, 0xf6, 0x86, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x18, 0x8e, 0x7d, 0x10, 0x52, 0xe0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xac, 0x62, 0x0f, 0xb2, 0x35, 0x68, 0x0b, 0x64, 0x65, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0x8d, 0x5c, 0xaf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x7e, 0x7b, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x39, 0x78, 0xce, 0x2c, 0xf6, 0x86, 0x89, 0xdb, 0x20, 0x52, 0x03, 0x2f, 0x0e, 0x56, 0x8f, 0xea, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xdf, 0x8a, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0xb0, 0xd8, 0xe3, 0xc1, 0x73, 0x66, 0xb1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc1, 0x16, 0xfb, 0xd0, 0x48, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x76, 0x5c, 0xec, 0x83, 0x20, 0x8b, 0x3f, 0x0e, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xde, 0xc5, 0xde, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x7d, 0xb1, 0x0f, 0x42, 0x0a, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4e, 0x48, 0xec, 0x41, 0xb6, 0x06, 0x6d, 0x81, 0xac, 0x6c, 0x88, 0xe1, 0x20, 0xd8, 0xa0, 0x91, 0xeb, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcd, 0x6f, 0xaf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x0e, 0xde, 0x5f, 0x89, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdd, 0x24, 0xf6, 0x78, 0xf0, 0xfe, 0x4a, 0xec, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x64, 0x4c, 0xec, 0x0d, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x70, 0x13, 0xfb, 0x20, 0xa4, 0xc0, 0x8f, 0xc7, 0x0b, 0x82, 0xc5, 0x99, 0x83, 0xc8, 0x24, 0xc0, 0x58, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x96, 0x8e, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x31, 0xef, 0xd8, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xb0, 0x63, 0x1f, 0xbc, 0x5c, 0xb9, 0x68, 0x90, 0x6d, 0x10, 0xe5, 0x10, 0x20, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x52, 0x8f, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7c, 0x3c, 0xf6, 0x20, 0xd8, 0xe0, 0xd5, 0x86, 0x44, 0x87, 0xa6, 0x40, 0x83, 0x6c, 0x83, 0x28, 0x87, 0x00, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x0b, 0x1f, 0x7b, 0x10, 0x6c, 0x10, 0xff, 0x5b, 0x1c, 0x87, 0x16, 0x60, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x1b, 0x4e, 0xb1, 0x83, 0x00, 0xb8, 0x5f, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x27, 0x90, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0x05, 0xd9, 0x83, 0x60, 0x83, 0x78, 0xbd, 0xd8, 0x38, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0x51, 0x87, 0x01, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf7, 0x41, 0xf6, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0x60, 0xba, 0xda, 0x7d, 0x1d, 0x8f, 0x0f, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x77, 0x64, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf5, 0x48, 0xf6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0x20, 0xd9, 0x07, 0xcf, 0x28, 0x18, 0x1a, 0x64, 0x1b, 0x44, 0x5c, 0x07, 0xc8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x29, 0xd9, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x9a, 0x64, 0x1f, 0x3c, 0x13, 0x5f, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf5, 0x4c, 0xf6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xe6, 0x64, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x67, 0x93, 0x7d, 0xf0, 0x22, 0x93, 0xb3, 0x41, 0xb6, 0x41, 0xe4, 0x8a, 0x80, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xf9, 0x93, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1b, 0x4f, 0xf6, 0x20, 0xd8, 0xe0, 0x49, 0xd3, 0x66, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0x86, 0xb2, 0x17, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xca, 0x28, 0x7b, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x77, 0x95, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7d, 0x2c, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xcd, 0xb2, 0x0f, 0xfd, 0xc9, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x4b, 0xcb, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xc1, 0x96, 0x3d, 0x48, 0x06, 0xba, 0x3b, 0x1d, 0x0c, 0x47, 0xe9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xdd, 0x2d, 0xfb, 0x10, 0xcd, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x19, 0x97, 0x7d, 0xe8, 0x4f, 0x7e, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x8d, 0x2e, 0x7b, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe1, 0x7c, 0xd9, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x2d, 0x66, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x33, 0xda, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xdd, 0x68, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xa7, 0xa4, 0x3d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x71, 0xd2, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x0e, 0xa5, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x74, 0x4a, 0x7b, 0x90, 0x0c, 0x8a, 0x0e, 0x4e, 0x67, 0xc8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9e, 0x95, 0xf6, 0x61, 0xaf, 0x70, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x64, 0x69, 0x1f, 0x52, 0x35, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7e, 0x4b, 0xfb, 0x70, 0xb4, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x52, 0x2f, 0xed, 0xc3, 0xd1, 0x7e, 0x1c, 0x1a, 0x7e, 0x83, 0x61, 0x1b, 0x30, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xac, 0x30, 0xed, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x81, 0x4c, 0x7b, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x35, 0xd3, 0x3e, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xae, 0x34, 0xed, 0x83, 0x90, 0x02, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6a, 0x36, 0xed, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x7c, 0xd3, 0x1e, 0x76, 0x83, 0xd0, 0x72, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2a, 0x3c, 0xed, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x63, 0x4f, 0x7b, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xee, 0xd3, 0x3e, 0x18, 0xf2, 0xe8, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x02, 0x6a, 0x1f, 0x84, 0x14, 0xf8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x0d, 0x6a, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x20, 0xb5, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x4c, 0x6a, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xaf, 0xd4, 0x1e, 0x24, 0x83, 0xa2, 0x83, 0x73, 0xde, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x8b, 0xa9, 0x7d, 0x10, 0x98, 0xd8, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x6e, 0x53, 0xfb, 0xb0, 0x57, 0x78, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x3c, 0xb5, 0x0f, 0xca, 0xb8, 0x9d, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x10, 0xaa, 0x7d, 0x68, 0x25, 0x7e, 0x1c, 0x1a, 0x7e, 0x83, 0x86, 0x3c, 0x9e, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x3c, 0xaa, 0xbd, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x9a, 0x6a, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x52, 0xaa, 0xf6, 0x06, 0x65, 0x16, 0xe4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0xac, 0xda, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x5d, 0xb5, 0x0f, 0xc6, 0x9b, 0xce, 0xe1, 0x14, 0x1b, 0x76, 0x83, 0xa5, 0xcd, 0x42, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x45, 0xab, 0x3d, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xdc, 0x6a, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xce, 0xd5, 0x1e, 0x24, 0x83, 0x9a, 0x83, 0x73, 0xfd, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xc9, 0xab, 0x7d, 0x10, 0x52, 0xe0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xed, 0x57, 0xfb, 0xd0, 0x9f, 0xfc, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xc2, 0xda, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9e, 0x67, 0xed, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0xd1, 0xda, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0xa9, 0xb5, 0x0f, 0x22, 0x5f, 0x09, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xbc, 0xd6, 0x3e, 0x08, 0x4c, 0xec, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xa4, 0xad, 0x7d, 0xd8, 0x2b, 0x3c, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0xdd, 0xda, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0xbf, 0xb5, 0x07, 0xc9, 0xe0, 0xcf, 0xc1, 0xb9, 0xfe, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x14, 0xd7, 0x3e, 0x08, 0x29, 0xf0, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x56, 0xae, 0x7d, 0xe8, 0x4f, 0x7e, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x31, 0xe8, 0xda, 0x87, 0x56, 0xe2, 0xc7, 0xa1, 0xe1, 0x37, 0x68, 0xc8, 0xe3, 0x69, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0xea, 0xda, 0x1b, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6d, 0xbb, 0xf6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xc1, 0x6b, 0x6f, 0x50, 0x34, 0x43, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x33, 0xaf, 0x7d, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcc, 0x5e, 0xfb, 0x60, 0xbc, 0xe9, 0x1c, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0x43, 0x2b, 0xf1, 0x83, 0x10, 0x00, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe2, 0x7d, 0xed, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd7, 0xbf, 0xf6, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0a, 0x81, 0xed, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xcd, 0x04, 0xdb, 0x07, 0x91, 0xaf, 0x04, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x1e, 0x6c, 0x1f, 0x04, 0x26, 0xf6, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x52, 0xd8, 0x3e, 0xec, 0x15, 0x1e, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xa4, 0x61, 0x7b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf8, 0xc3, 0xf6, 0x20, 0x19, 0x48, 0xaf, 0x1c, 0x9c, 0xeb, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x52, 0x62, 0xfb, 0x20, 0xa4, 0xc0, 0x8f, 0x43, 0xc7, 0xa1, 0xe1, 0x37, 0x68, 0xc8, 0xe3, 0x69, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x79, 0x15, 0xdb, 0x1b, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0f, 0xc6, 0xf6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x6b, 0x6c, 0x1f, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xee, 0xd8, 0x3e, 0x18, 0x6f, 0x3a, 0x83, 0x6c, 0x43, 0xf3, 0xf5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0xe5, 0xb4, 0x0f, 0xa7, 0xd8, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x02, 0xc7, 0xec, 0x61, 0x37, 0x68, 0xfb, 0x74, 0x69, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x2d, 0xb3, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2e, 0x33, 0xfb, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0x38, 0xb3, 0x0f, 0x7b, 0x85, 0xc3, 0x2e, 0xdc, 0x86, 0xa3, 0xfd, 0x20, 0x44, 0xfc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x36, 0x34, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xed, 0x9a, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x31, 0x36, 0x7b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x12, 0x6d, 0xf6, 0x41, 0xf4, 0xe0, 0x80, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x89, 0xb7, 0xd9, 0x87, 0xbd, 0xc2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xa3, 0x9b, 0x7d, 0x48, 0xd5, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x86, 0xde, 0xec, 0x83, 0x32, 0x6e, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xff, 0x66, 0x1f, 0x5a, 0x89, 0x1f, 0x87, 0x86, 0xdf, 0x60, 0xd8, 0x06, 0x0c, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x53, 0x38, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x8a, 0xb3, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x00, 0x39, 0x7b, 0x83, 0x32, 0x0b, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x68, 0xe5, 0xec, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0xce, 0xd9, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x0d, 0x9d, 0x7d, 0x10, 0x98, 0xd8, 0xc3, 0x2e, 0xdc, 0x86, 0x56, 0xe2, 0x07, 0x21, 0xe2, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x61, 0xd6, 0xd9, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfe, 0xec, 0xec, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb5, 0xdc, 0xd9, 0x07, 0x2f, 0xb7, 0x23, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc0, 0xef, 0xec, 0xe3, 0xdb, 0x71, 0x68, 0xf8, 0x0d, 0x86, 0x6d, 0xc0, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xc4, 0xb3, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xa2, 0x3c, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xcf, 0xb3, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xab, 0x67, 0x1f, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6c, 0x7b, 0xf6, 0x41, 0x60, 0x62, 0x0f, 0xbb, 0x70, 0x1b, 0xfa, 0x93, 0x1f, 0x84, 0x88, 0xff, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xcc, 0x67, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xb0, 0xcf, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x28, 0x3f, 0x7b, 0xf8, 0x85, 0xdf, 0xe0, 0xe5, 0x25, 0x14, 0x83, 0x64, 0xa0, 0x7c, 0x1d, 0xcf, 0x8f, 0x6f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xf0, 0x67, 0x0f, 0x82, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0xfd, 0xb3, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x63, 0xd0, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xf7, 0xa0, 0x7d, 0x10, 0xbd, 0x73, 0x1e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x49, 0x68, 0x0f, 0xbb, 0xc1, 0xa8, 0x97, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xbe, 0x0a, 0xed, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xc1, 0xd0, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xae, 0xa1, 0x3d, 0x48, 0x36, 0x18, 0xe2, 0x1f, 0x07, 0x07, 0x8a, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xed, 0xd0, 0x3e, 0xa4, 0x6a, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x82, 0x68, 0x1f, 0x0c, 0xde, 0xc9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x46, 0xb4, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xe0, 0xfe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0x30, 0xda, 0x07, 0x83, 0x35, 0x76, 0x10, 0x2d, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd9, 0x26, 0xda, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x99, 0xa2, 0x7d, 0x10, 0x64, 0xf1, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0xb4, 0x68, 0x1f, 0x52, 0x35, 0xc7, 0xf3, 0xe3, 0xdb, 0x20, 0xdb, 0xd0, 0x7c, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9a, 0xc8, 0xec, 0xc3, 0x29, 0x76, 0x3c, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x1a, 0xb2, 0x3d, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x24, 0x95, 0xed, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x5f, 0xb6, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x4e, 0x66, 0x7b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc2, 0x9a, 0xed, 0x43, 0x7f, 0xf2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x70, 0xb6, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x8d, 0x3b, 0xdb, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xe4, 0xb3, 0x3d, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x03, 0x6d, 0x0f, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x2e, 0xec, 0x06, 0xc1, 0xb0, 0xbf, 0x70, 0x1b, 0x94, 0x59, 0x90, 0x07, 0xe3, 0xa7, 0xeb, 0x70, 0xb4, 0x1f, 0x2c, 0xcf, 0xef, 0x3a, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x1d, 0xb5, 0x3d, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0xa0, 0x6d, 0x1f, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0x55, 0xdb, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x7a, 0xb5, 0x7d, 0x50, 0xc6, 0xed, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xa6, 0xb5, 0x7d, 0x48, 0x1d, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4b, 0xd7, 0xf6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x7f, 0x6d, 0x1f, 0x5a, 0x89, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x29, 0xb6, 0x7d, 0x48, 0x2e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x56, 0xb6, 0x7d, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0x6b, 0xdb, 0x83, 0x60, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1e, 0xb7, 0xed, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0xf4, 0xb6, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x73, 0x6e, 0x0f, 0xbb, 0xc1, 0x02, 0x2c, 0xaf, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x16, 0xdd, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x5d, 0xba, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x11, 0x75, 0xfb, 0x60, 0x75, 0x61, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb4, 0xba, 0x7d, 0xe8, 0x4f, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0x5c, 0xb7, 0x0f, 0x59, 0xbb, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe5, 0xb0, 0xdb, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xec, 0xec, 0xf6, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x34, 0xdb, 0xed, 0x41, 0x32, 0x90, 0x5f, 0x39, 0x38, 0x7b, 0x19, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0xb9, 0xdb, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xbd, 0xbb, 0x7d, 0x90, 0xa4, 0xe0, 0x70, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x52, 0xdf, 0xed, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x0a, 0xde, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x08, 0xe2, 0xed, 0xc3, 0xd1, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xaf, 0xf1, 0xf6, 0x30, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x25, 0x6f, 0x1f, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x87, 0x79, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x9d, 0xb7, 0x0f, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0xd1, 0xdb, 0x87, 0x56, 0xe2, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x45, 0xbd, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x19, 0xd7, 0xdb, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0xb3, 0xb7, 0x0f, 0xf1, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x99, 0x7b, 0xfb, 0x10, 0xc3, 0xc3, 0x29, 0x36, 0xec, 0xc2, 0x6e, 0xb0, 0x18, 0xcb, 0x6b, 0xe1, 0x36, 0x28, 0xb3, 0x20, 0x0f, 0x8a, 0x43, 0x8d, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc1, 0xe7, 0xdb, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa7, 0x03, 0xf7, 0x21, 0x6b, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0xea, 0xdb, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xda, 0xbe, 0x7d, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x82, 0xdf, 0x3e, 0x18, 0xf2, 0xe8, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x31, 0xbf, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xcd, 0xf5, 0xdb, 0x87, 0xa3, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3c, 0xfc, 0xed, 0x43, 0x0c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x65, 0x7f, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0xfb, 0xb7, 0x0f, 0xca, 0xb8, 0x9d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0x01, 0xb8, 0x0f, 0xa9, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x1c, 0xe0, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x20, 0x03, 0xee, 0x43, 0x2b, 0xf1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0x12, 0xb8, 0x0f, 0xc9, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x17, 0xb8, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xec, 0x06, 0x8b, 0xb1, 0xbc, 0x16, 0x6e, 0x83, 0xa2, 0x19, 0xf2, 0xa0, 0x38, 0xd4, 0x38, 0x1c, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x66, 0x70, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xe5, 0xe0, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xf6, 0xc1, 0x7d, 0xb0, 0xba, 0x30, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x11, 0xe1, 0x3e, 0xf4, 0x27, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe5, 0x24, 0xdc, 0x07, 0xa9, 0xeb, 0x03, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x50, 0xb8, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9c, 0x15, 0xee, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0x2d, 0xdc, 0x07, 0x11, 0xbb, 0x0c, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xc2, 0x70, 0x1f, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd9, 0x0c, 0xf7, 0x18, 0x44, 0xff, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb5, 0x36, 0xdc, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x96, 0xc3, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0x3c, 0xdc, 0x87, 0xa3, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x66, 0x1f, 0xee, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x81, 0x41, 0xdc, 0x07, 0x27, 0x3e, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x85, 0x88, 0xfb, 0xd0, 0x9f, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x1b, 0x71, 0x1f, 0x87, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x9c, 0xc4, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x81, 0x4c, 0xdc, 0x87, 0xa3, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9a, 0x27, 0xee, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0x51, 0xdc, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x4a, 0xc5, 0x7d, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xef, 0x8a, 0xfb, 0x20, 0x65, 0x30, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0xb4, 0xb8, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xa3, 0x8b, 0xfb, 0xd0, 0x4a, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xee, 0x2f, 0xee, 0x83, 0x14, 0x48, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0xc6, 0xb8, 0x0f, 0x31, 0x3c, 0x9c, 0x62, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x1d, 0x6e, 0x0f, 0xbb, 0xc1, 0x20, 0xe0, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6e, 0xc5, 0xed, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa5, 0x8d, 0xdb, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0x20, 0xb7, 0x0f, 0x16, 0xbe, 0x7a, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0x93, 0xdb, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x5f, 0xb9, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x89, 0x99, 0xdb, 0x87, 0xb5, 0xdf, 0xe3, 0xf9, 0x71, 0xe8, 0xf8, 0x76, 0x3c, 0x3e, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xfe, 0xc6, 0x3d, 0x08, 0x36, 0x78, 0xd8, 0x5e, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x07, 0xef, 0x92, 0xe3, 0x3e, 0xa4, 0x6a, 0x8e, 0x43, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x06, 0xc5, 0xb4, 0xe0, 0x6c, 0x10, 0xff, 0xf1, 0x19, 0xb3, 0x41, 0x00, 0xdc, 0x1f, 0x14, 0xd5, 0x82, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0xf2, 0xb8, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xb1, 0xe3, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0e, 0x3e, 0xee, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0x0d, 0xa6, 0x30, 0x1d, 0xd2, 0x70, 0x83, 0x6c, 0x83, 0x78, 0x71, 0x08, 0x19, 0x64, 0x1b, 0xc4, 0xb8, 0x43, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x10, 0x72, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x0c, 0xc8, 0x3d, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb0, 0x21, 0xf7, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x2f, 0x91, 0xfb, 0x20, 0x1a, 0x4f, 0x35, 0x8e, 0x43, 0x87, 0xa6, 0x40, 0x83, 0x6c, 0x83, 0x78, 0x71, 0x08, 0x19, 0x64, 0x1b, 0xc4, 0xb8, 0x43, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x3e, 0x72, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xc5, 0xc8, 0x7d, 0x10, 0xd1, 0x0e, 0x1a, 0x83, 0x6c, 0x83, 0x78, 0x71, 0x08, 0x19, 0x64, 0x1b, 0xc4, 0xb8, 0x43, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x6a, 0x72, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x26, 0xc9, 0x3d, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5c, 0x27, 0xf7, 0xc1, 0x8b, 0x42, 0x88, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x06, 0x94, 0xfb, 0xa0, 0x7d, 0x09, 0xa6, 0xe3, 0xd0, 0xc1, 0x12, 0xfe, 0x9f, 0x41, 0xb6, 0x41, 0xbc, 0x38, 0x84, 0x0c, 0xb2, 0x0d, 0x62, 0xdc, 0x21, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x5a, 0xb9, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x1d, 0xe5, 0x1e, 0x04, 0x1b, 0xc4, 0x7e, 0x84, 0xc6, 0xc1, 0x7b, 0x0e, 0x33, 0x06, 0xd9, 0x06, 0xf1, 0xe2, 0x10, 0x32, 0xc8, 0x36, 0x88, 0x71, 0x87, 0x90, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x9d, 0xe5, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x04, 0x96, 0x7b, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x32, 0x5b, 0xee, 0x83, 0x57, 0x35, 0x09, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x25, 0xb9, 0xdc, 0x07, 0xed, 0x4b, 0x30, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfc, 0x5d, 0xee, 0x83, 0x25, 0x54, 0x6c, 0xc7, 0xa1, 0x83, 0x87, 0x78, 0x66, 0x0c, 0xb2, 0x0d, 0xe2, 0xc5, 0x21, 0x64, 0x90, 0x6d, 0x10, 0xe3, 0x0e, 0x21, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x35, 0xcc, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x14, 0x30, 0xf7, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0xc6, 0xdc, 0x07, 0xaf, 0x6a, 0x12, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x91, 0xb9, 0x0f, 0x96, 0xaa, 0xfb, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xca, 0x65, 0xee, 0x41, 0x32, 0x20, 0xe9, 0xbf, 0xea, 0x78, 0x7c, 0x1c, 0x3a, 0x78, 0x28, 0x6d, 0xc6, 0x20, 0xdb, 0x20, 0x5e, 0x1c, 0x42, 0x06, 0xd9, 0x06, 0x31, 0xee, 0x10, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe1, 0xdc, 0xdc, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x3c, 0x73, 0x0f, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xf9, 0xcd, 0x7d, 0xf0, 0x2c, 0xbd, 0xb1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x4d, 0x9c, 0xfb, 0x20, 0x5e, 0xf0, 0x2c, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x50, 0x39, 0xf7, 0xc1, 0x52, 0x75, 0x9f, 0xe3, 0xd0, 0xc1, 0xbb, 0x0b, 0x99, 0x06, 0xd9, 0x06, 0xf1, 0xe2, 0x10, 0x32, 0xc8, 0x36, 0x88, 0x71, 0x87, 0x90, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0xe2, 0xb9, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x40, 0xe7, 0x1e, 0x04, 0x1b, 0xc4, 0x42, 0x90, 0xc6, 0xc1, 0x43, 0xf5, 0xc2, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x04, 0x3e, 0xf7, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe4, 0xd0, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe7, 0x44, 0xf7, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x8e, 0xd1, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x4f, 0xa5, 0x7b, 0xd8, 0x0d, 0x82, 0x5e, 0x7f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0x60, 0xba, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x63, 0xa6, 0xfb, 0x10, 0xcd, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x6b, 0xba, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb6, 0xa5, 0xfb, 0x10, 0xcd, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0x71, 0xba, 0x07, 0xc1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0x3b, 0xdd, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x22, 0x75, 0x0f, 0xbb, 0x41, 0xab, 0xb2, 0x49, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xbd, 0xd4, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x81, 0x4e, 0xdd, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0xa2, 0xba, 0x0f, 0x56, 0x6a, 0x7a, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe9, 0x53, 0xdd, 0x87, 0x68, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xad, 0xba, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2a, 0xab, 0xfb, 0x30, 0x2e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x70, 0x75, 0x1f, 0x5a, 0x00, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x62, 0xaf, 0xee, 0x43, 0xc3, 0xaf, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x79, 0x61, 0xdd, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0xc8, 0xba, 0x0f, 0xd2, 0x68, 0x17, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6e, 0xb3, 0xee, 0xc3, 0xb8, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xce, 0xb4, 0xee, 0x43, 0x0b, 0xa0, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x55, 0x6c, 0xdd, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe8, 0xb7, 0xee, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xb8, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xce, 0x5c, 0xf7, 0x41, 0x90, 0x44, 0x1f, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x58, 0x1f, 0x84, 0x00, 0xf8, 0xf1, 0x78, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0x75, 0xdd, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xba, 0xbc, 0xee, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xb8, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x37, 0x5f, 0xf7, 0xc1, 0xd9, 0xe8, 0xf9, 0x78, 0x3e, 0xfc, 0x82, 0x68, 0x41, 0xfb, 0x41, 0x08, 0x80, 0x1f, 0x8f, 0x87, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xf9, 0xd7, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x45, 0x82, 0xdd, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x4e, 0xd8, 0x7d, 0x48, 0x1d, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x79, 0xd8, 0x7d, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x4a, 0xb1, 0xfb, 0xb0, 0xf6, 0x7b, 0x7c, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc8, 0xa2, 0xfb, 0x38, 0x74, 0x3c, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x40, 0xc7, 0xee, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x5c, 0x76, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xd1, 0xd9, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xf8, 0xb3, 0x7b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf7, 0x68, 0xf7, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4a, 0xd3, 0xee, 0x41, 0x32, 0x20, 0xf1, 0xee, 0xeb, 0x90, 0x5c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x58, 0xd5, 0xee, 0x43, 0xea, 0xe0, 0x38, 0x74, 0x30, 0xd2, 0xb4, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x6c, 0xed, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x16, 0xd8, 0xee, 0x83, 0x10, 0x00, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x6b, 0xb6, 0x7b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x83, 0x6d, 0xf7, 0xc1, 0x71, 0x3a, 0x7e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x74, 0xbb, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xf3, 0x76, 0x1f, 0x24, 0x53, 0x56, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0xbf, 0xdd, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x25, 0xdc, 0x7d, 0xe8, 0x4f, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x45, 0x71, 0xf7, 0x41, 0x48, 0x81, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf4, 0xe3, 0xee, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0xaf, 0x20, 0xd8, 0x60, 0x59, 0x18, 0xcc, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6c, 0xe6, 0xee, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x94, 0xee, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xed, 0xb9, 0xfb, 0xe0, 0xe5, 0xca, 0x45, 0x83, 0x6c, 0x83, 0xd8, 0x81, 0x0b, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xab, 0xba, 0xfb, 0x20, 0xde, 0x36, 0x40, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8e, 0x76, 0xf7, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x1e, 0xbc, 0x95, 0xbb, 0xfb, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x57, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9a, 0xf2, 0xee, 0xc5, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x44, 0xef, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x37, 0x7c, 0xf7, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf2, 0x01, 0xef, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x35, 0xf0, 0x3e, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb2, 0x04, 0xef, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0x0c, 0xde, 0x07, 0xb1, 0xd7, 0x02, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x3c, 0x78, 0x1f, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x38, 0xc2, 0xfb, 0x10, 0xc3, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0x14, 0xde, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xe8, 0xf0, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x26, 0xc6, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x4a, 0xe3, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xeb, 0xc6, 0x7b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x85, 0x8e, 0xf7, 0x20, 0x19, 0x14, 0x1d, 0x9c, 0xbd, 0x8c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x74, 0x1e, 0xef, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xfe, 0x78, 0x1f, 0x52, 0x07, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x13, 0xf2, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x94, 0x22, 0xef, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x90, 0xbc, 0x0f, 0xad, 0xc4, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x65, 0xc9, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x9b, 0xbc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x89, 0xf2, 0x3e, 0xb4, 0x12, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x7e, 0xca, 0x7b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa0, 0x2b, 0xef, 0x43, 0x2b, 0xf1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0xb4, 0xbc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xea, 0xf2, 0x3e, 0xb4, 0x12, 0x3f, 0x0e, 0x0d, 0xbf, 0xc1, 0xc0, 0x04, 0x18, 0x7e, 0x83, 0xc1, 0x0e, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x09, 0x98, 0xf7, 0xf0, 0x0b, 0xa2, 0x05, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0xc6, 0xbc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc1, 0xcc, 0xfb, 0xd0, 0x9f, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x66, 0x34, 0xef, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x89, 0x6b, 0xde, 0x83, 0x64, 0xa0, 0xbb, 0xd3, 0xc1, 0xe9, 0x0c, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x72, 0xf3, 0x3e, 0xec, 0x15, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x88, 0x38, 0xef, 0x43, 0x7f, 0xf2, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf0, 0x39, 0xef, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd3, 0x9d, 0xf7, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0e, 0x3d, 0xef, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x7c, 0xde, 0x07, 0xd1, 0x83, 0x03, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xfe, 0x79, 0x1f, 0xf6, 0x0a, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x98, 0xa0, 0xf7, 0x21, 0x55, 0x73, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x94, 0x42, 0xef, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x3f, 0xf4, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x67, 0xd1, 0x7b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7d, 0xa3, 0xf7, 0x20, 0x19, 0x48, 0x3a, 0x1d, 0x9c, 0xce, 0x90, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x17, 0xd2, 0xfb, 0x20, 0xa4, 0xc0, 0x8f, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x47, 0xe9, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xeb, 0xa5, 0xf7, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x07, 0x6d, 0x8f, 0x38, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x44, 0xa8, 0xf7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x09, 0xa5, 0xde, 0x07, 0xe9, 0x50, 0x1e, 0xc3, 0x2e, 0xdc, 0x86, 0x56, 0xe2, 0x07, 0x6d, 0x8f, 0x38, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xac, 0xaa, 0xf7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0xae, 0xde, 0x07, 0x89, 0x72, 0x1f, 0xc3, 0x2e, 0xdc, 0x86, 0xa3, 0xfd, 0xa0, 0xed, 0x11, 0xa7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xa2, 0xf5, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x08, 0xd7, 0xfb, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x43, 0x7f, 0xf2, 0x83, 0xb6, 0x47, 0x9c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xba, 0xd7, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x81, 0xbd, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x24, 0xf6, 0x3e, 0x48, 0x28, 0x3b, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xeb, 0xd8, 0x7b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xaa, 0x65, 0xef, 0x83, 0x84, 0xb2, 0x93, 0x41, 0xb6, 0xa1, 0xf9, 0xfa, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x79, 0x9b, 0xde, 0x87, 0x53, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x16, 0x67, 0xef, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0xa2, 0xbd, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1c, 0x6a, 0xef, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xde, 0xda, 0xfb, 0xd0, 0x9f, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xda, 0x6c, 0xef, 0x83, 0xc1, 0x1a, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0xe0, 0xde, 0x87, 0xa3, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb2, 0x6e, 0xef, 0x43, 0x0c, 0x8f, 0x43, 0xc3, 0x6f, 0x30, 0x6c, 0x03, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x2b, 0xee, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x69, 0xdd, 0x7b, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x83, 0xe1, 0x45, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x3d, 0xf4, 0xde, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x6f, 0xef, 0x7d, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xe7, 0x7b, 0x1f, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x29, 0xbf, 0xf7, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xf7, 0xef, 0x7d, 0xd0, 0xd8, 0x5f, 0xff, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x18, 0x7c, 0x1f, 0x04, 0x59, 0xfc, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x36, 0xb4, 0x12, 0x3f, 0x18, 0x5e, 0x14, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xc3, 0xf0, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf5, 0x0e, 0xdf, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x72, 0xc4, 0xf7, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x93, 0xe2, 0x7b, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xbb, 0xf8, 0x3e, 0x68, 0xec, 0xaf, 0x7f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0x3b, 0xbe, 0x0f, 0x82, 0x2c, 0xfe, 0x70, 0x8a, 0x0d, 0xbb, 0x70, 0x1b, 0x8e, 0xf6, 0x83, 0xe1, 0x45, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x41, 0x23, 0xdf, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x5f, 0xf2, 0x7d, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x46, 0xf9, 0x3e, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0xd0, 0x9f, 0xfc, 0x60, 0x78, 0x51, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9e, 0xcb, 0xf7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xc4, 0x7c, 0x1f, 0x8e, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x68, 0xbe, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x70, 0x9b, 0xef, 0x83, 0x76, 0x42, 0x9c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xa0, 0xe7, 0x7b, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xfe, 0xf9, 0x3e, 0x08, 0xb2, 0xf8, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x34, 0x5f, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd5, 0xdd, 0xfb, 0x70, 0x8a, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x2b, 0xf4, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc1, 0xe8, 0x7b, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x47, 0xfa, 0x1e, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x97, 0xbe, 0x0f, 0xfd, 0xc9, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x72, 0xfa, 0x3e, 0x74, 0x0c, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x08, 0xaa, 0xef, 0x83, 0xa0, 0xf4, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x27, 0xea, 0xfb, 0xd0, 0x31, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xea, 0xab, 0xef, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x01, 0xd7, 0xf7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x7b, 0x7d, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x0c, 0xfb, 0x3e, 0x88, 0x26, 0x7b, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8a, 0xec, 0xfb, 0xd0, 0x9f, 0x7c, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x71, 0xf6, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd9, 0x69, 0xdf, 0x07, 0xc3, 0x18, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x94, 0xb6, 0xef, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x84, 0xfb, 0x3e, 0x18, 0x6f, 0x3a, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0xe6, 0xbe, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xd8, 0x7d, 0x1f, 0x9c, 0x28, 0x94, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x72, 0xbc, 0xef, 0x83, 0x61, 0x0c, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0xf7, 0xbe, 0x8f, 0x43, 0xc7, 0xa1, 0xe1, 0x17, 0x44, 0x0b, 0x54, 0xff, 0x83, 0x10, 0x00, 0x3f, 0x1e, 0x0f, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xd6, 0xef, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x28, 0xf8, 0xbd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x4d, 0x85, 0xdf, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x10, 0xbf, 0x07, 0xc9, 0x40, 0x71, 0x3a, 0x38, 0x6d, 0x28, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x8a, 0xdf, 0x87, 0xfe, 0xe4, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xce, 0xc6, 0xef, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x82, 0xfc, 0x3e, 0x58, 0xa7, 0xd2, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd0, 0xe4, 0xf7, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x58, 0x7e, 0x1f, 0x0c, 0xde, 0xc9, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0x98, 0xdf, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x37, 0xbf, 0x0f, 0x8e, 0x12, 0xcb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9c, 0xe7, 0xf7, 0xc1, 0x3a, 0x95, 0x86, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x15, 0xfa, 0x7d, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0x20, 0x5a, 0xe0, 0xfa, 0x3f, 0x08, 0x01, 0xf0, 0xe3, 0xf1, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x48, 0xbf, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xdb, 0xf4, 0x7b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x53, 0xbf, 0x0f, 0xc9, 0x8e, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x6a, 0xfd, 0x3e, 0xec, 0x15, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x09, 0xfb, 0x7d, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x6d, 0xf6, 0xfb, 0xa0, 0x70, 0x4b, 0x3a, 0x1e, 0x1f, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xb5, 0xfd, 0x1e, 0x04, 0x8b, 0x73, 0x50, 0xfa, 0x46, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe2, 0xfc, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe9, 0xf4, 0xf7, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x78, 0xeb, 0xef, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0xd9, 0xdf, 0x07, 0xc9, 0x83, 0xd5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xc6, 0xfd, 0x3d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe4, 0xfb, 0xfb, 0x60, 0xd5, 0x17, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x1e, 0xfe, 0x7d, 0xe8, 0x4f, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0xc9, 0xbf, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x9d, 0x7f, 0x0f, 0x92, 0x81, 0xb2, 0x72, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0xd4, 0xbf, 0x0f, 0x47, 0xfb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x67, 0xff, 0x3e, 0x44, 0xf3, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x06, 0xff, 0x3d, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xcc, 0x7f, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xaf, 0xff, 0x3e, 0x48, 0x11, 0xae, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0xf1, 0xbf, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x79, 0xff, 0xfb, 0xd0, 0x9f, 0xfc, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x95, 0xfe, 0xdf, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x24, 0xc0, 0x87, 0x5d, 0xd8, 0x0d, 0xd2, 0x15, 0xad, 0x17, 0x76, 0x83, 0xc7, 0xc9, 0x42, 0x2c, 0xec, 0x06, 0x0f, 0xc2, 0xa1, 0x58, 0xb8, 0x0d, 0x31, 0x3c, 0x18, 0x56, 0x2b, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x02, 0x01, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x8c, 0x11, 0xf0, 0x43, 0x0c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcc, 0x04, 0xfc, 0x20, 0x1d, 0xca, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x98, 0x14, 0xf0, 0x83, 0x20, 0xb7, 0x1e, 0x76, 0x61, 0x37, 0x48, 0x57, 0xb4, 0x5e, 0xd8, 0x0d, 0x1e, 0x27, 0x0b, 0xb1, 0xb0, 0x1b, 0x3c, 0x08, 0x87, 0x62, 0xe1, 0x36, 0x1c, 0xed, 0x07, 0xc3, 0x6a, 0xe5, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0x37, 0xe0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xab, 0x03, 0x7e, 0x68, 0x25, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0x3e, 0xe0, 0x07, 0x89, 0x72, 0x1f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x03, 0x81, 0x1f, 0x04, 0xb9, 0xf5, 0xb0, 0x0b, 0xbb, 0x41, 0xba, 0xa2, 0xf5, 0xc2, 0x2e, 0xdc, 0x86, 0xa3, 0xfd, 0x60, 0x10, 0xad, 0x1c, 0xbc, 0x52, 0x1a, 0xe2, 0x70, 0xb4, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfc, 0x12, 0xf8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x3a, 0x81, 0x1f, 0x8e, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0xa3, 0xc0, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xec, 0x06, 0xe9, 0x8a, 0xd6, 0x0b, 0xbb, 0x41, 0x2c, 0x69, 0x88, 0x6c, 0xf0, 0x20, 0x1c, 0x8a, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xe7, 0x02, 0x1f, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0xfe, 0xc0, 0x0f, 0x82, 0xdc, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xc0, 0xc0, 0x0f, 0xfd, 0xc9, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x6d, 0x0c, 0x7c, 0x83, 0x35, 0xda, 0x0a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x99, 0x81, 0x1f, 0x62, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x09, 0x69, 0xe0, 0x07, 0x05, 0x00, 0xd4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xaf, 0x81, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa8, 0x1b, 0xf8, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x2b, 0x0e, 0xfc, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0x74, 0xe0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x6f, 0x07, 0x7e, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xcd, 0x03, 0x3f, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xc9, 0x07, 0x7e, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0x82, 0xe0, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0x0c, 0xc1, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x23, 0x82, 0x1f, 0x3c, 0x86, 0x81, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x5d, 0x04, 0x3f, 0xf4, 0x27, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x7d, 0x8e, 0xe0, 0x87, 0x86, 0x5f, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x22, 0xc1, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x52, 0x82, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xba, 0x04, 0x1f, 0x24, 0x03, 0x6d, 0x9d, 0x0e, 0xce, 0x5e, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x86, 0x26, 0xf8, 0xa1, 0x3f, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xe7, 0x04, 0x3f, 0x0e, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xfd, 0x04, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x01, 0x0b, 0x3e, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xcb, 0x82, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xac, 0x05, 0x1f, 0x24, 0x03, 0xf9, 0x95, 0x83, 0x73, 0xde, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x83, 0x0b, 0x7e, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x19, 0xbb, 0xe0, 0x87, 0xfe, 0xe4, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xef, 0x05, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x52, 0x60, 0xf0, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x81, 0xc3, 0xe0, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x63, 0x0c, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0xc8, 0xe0, 0x87, 0xfe, 0xe4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x2f, 0x83, 0x1f, 0x8e, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x9d, 0xc1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x2b, 0x1a, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3c, 0x6a, 0xf0, 0x43, 0x7f, 0xf2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xba, 0x06, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfe, 0x6c, 0xf0, 0x0d, 0xd6, 0x68, 0x2b, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xcc, 0x0d, 0x7e, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x7e, 0x83, 0x1f, 0x62, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0xe2, 0xe0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x4f, 0x0e, 0x7e, 0x68, 0x25, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xed, 0x39, 0xf8, 0x41, 0x60, 0x62, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa6, 0x3a, 0xf8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xb5, 0x83, 0x1f, 0x5a, 0x89, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x01, 0x0f, 0x7e, 0x88, 0xff, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xcd, 0x83, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8d, 0x3d, 0xf8, 0xa1, 0x95, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0xf8, 0xe0, 0x87, 0x18, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf0, 0x3e, 0xf8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0xfa, 0x83, 0x1f, 0x5a, 0x89, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x14, 0x10, 0x7e, 0x10, 0x52, 0xe0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x13, 0x84, 0x1f, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xec, 0x41, 0xf8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x29, 0x84, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x45, 0x43, 0xf8, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe6, 0x87, 0xf0, 0x41, 0x32, 0x90, 0x74, 0x3a, 0x38, 0xe7, 0x1d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa3, 0x44, 0xf8, 0x41, 0x60, 0x62, 0x1f, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xab, 0x08, 0x3f, 0x18, 0xad, 0xe6, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x85, 0x11, 0x7e, 0x58, 0xfb, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd2, 0x8d, 0xf0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xf3, 0x08, 0x3f, 0x08, 0x01, 0xf0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x43, 0xc2, 0x0f, 0xa9, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x26, 0x09, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xce, 0x93, 0xf0, 0x43, 0xea, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x40, 0x95, 0xf0, 0x43, 0xaa, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0x5a, 0xc2, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x03, 0x26, 0xfc, 0x90, 0xaa, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x5d, 0x26, 0xfc, 0xa0, 0x1c, 0x6b, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb8, 0x26, 0xfc, 0x10, 0xc3, 0xc3, 0x29, 0x76, 0x3c, 0x3e, 0x1e, 0xaf, 0x20, 0x58, 0xdc, 0xe0, 0x71, 0x00, 0xc8, 0x87, 0x53, 0x6c, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa4, 0x50, 0xf8, 0xb0, 0x0b, 0xb7, 0x18, 0xfc, 0xdb, 0x7a, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x14, 0x85, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf8, 0x51, 0xf8, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xf1, 0x27, 0x26, 0xb2, 0x41, 0xfc, 0x89, 0x89, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x04, 0x8c, 0x89, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xb4, 0x14, 0x7e, 0x30, 0x34, 0x7f, 0x87, 0x5d, 0xb8, 0xc5, 0x83, 0x97, 0x4c, 0x85, 0x1f, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0x4e, 0xe1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x0b, 0x15, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0x94, 0x9b, 0x89, 0x6c, 0x10, 0xe5, 0x66, 0x22, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0x7d, 0x67, 0x22, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x51, 0x85, 0x1f, 0x0c, 0xcd, 0xdf, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xae, 0xc2, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x3b, 0x2b, 0xfc, 0x20, 0xda, 0x66, 0x36, 0x06, 0xd9, 0x06, 0xf1, 0xb4, 0x26, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfa, 0x57, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0x5c, 0xe1, 0x83, 0x60, 0x83, 0xe8, 0xc6, 0xd9, 0x38, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0xa9, 0x85, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0f, 0x5c, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0x6d, 0xe1, 0x07, 0x51, 0x16, 0x80, 0x31, 0xc8, 0x36, 0x88, 0x18, 0x38, 0x91, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0xec, 0xc2, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x97, 0x0b, 0x3f, 0x78, 0x63, 0x9a, 0xd7, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0x10, 0xa1, 0xe9, 0x1a, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xfc, 0xc2, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xd7, 0x0b, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe8, 0xc3, 0xf0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0x01, 0xc3, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x54, 0x0c, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xd4, 0x18, 0x7e, 0x90, 0x22, 0xe3, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x40, 0x86, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x3c, 0x4d, 0xbf, 0xe7, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x25, 0xc3, 0x0f, 0x0e, 0x34, 0xb7, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xad, 0x0c, 0x3f, 0x48, 0xd8, 0x67, 0x3e, 0x0e, 0x1d, 0xd2, 0x70, 0x83, 0x6c, 0x83, 0x78, 0xac, 0x13, 0x19, 0x64, 0x1b, 0xc4, 0x90, 0x9d, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x7f, 0x86, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x88, 0x19, 0x3e, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa5, 0x68, 0xf8, 0xc1, 0x1b, 0x01, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xa9, 0x34, 0xfc, 0xe0, 0x40, 0x73, 0x7b, 0x1c, 0x3a, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0xc4, 0x63, 0x9d, 0xc8, 0x20, 0xdb, 0x20, 0x86, 0xec, 0x44, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x0a, 0x36, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x50, 0xd4, 0xf0, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x66, 0xc3, 0x0f, 0xde, 0x08, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc1, 0xb5, 0xe1, 0x83, 0x64, 0x40, 0x61, 0xf7, 0x75, 0x3c, 0x3e, 0x0e, 0x1d, 0x3a, 0x11, 0x0d, 0xb2, 0x0d, 0xe2, 0xb1, 0x4e, 0x64, 0x90, 0x6d, 0x10, 0x43, 0x76, 0x22, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xc5, 0x1b, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x45, 0x6e, 0xf8, 0xc1, 0x93, 0xef, 0xc1, 0x06, 0xd9, 0x06, 0xf1, 0x58, 0x27, 0x32, 0xc8, 0x36, 0x88, 0x21, 0x3b, 0x91, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x12, 0x0e, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe2, 0x37, 0x7c, 0x10, 0x6c, 0xf0, 0xb0, 0xbd, 0x9e, 0x83, 0xb5, 0x22, 0x59, 0x83, 0x6c, 0x83, 0x78, 0xac, 0x13, 0x19, 0x64, 0x1b, 0xc4, 0x90, 0x9d, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x21, 0x87, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x51, 0x1c, 0x3e, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc5, 0x72, 0xf8, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0xfe, 0x63, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x6e, 0x0e, 0x3f, 0x78, 0xad, 0xda, 0xd5, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0xf0, 0x10, 0xcf, 0x8c, 0x41, 0xb6, 0x41, 0x3c, 0xd6, 0x89, 0x0c, 0xb2, 0x0d, 0x62, 0xc8, 0x4e, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xa9, 0xc3, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x85, 0x0e, 0x1f, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xed, 0x3a, 0xfc, 0xe0, 0x45, 0x21, 0x44, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xa2, 0x1d, 0x7e, 0xf0, 0xb8, 0x52, 0xab, 0xe3, 0xd0, 0xc1, 0x43, 0x69, 0x33, 0x06, 0xd9, 0x06, 0xf1, 0x58, 0x27, 0x32, 0xc8, 0x36, 0x88, 0x21, 0x3b, 0x91, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xc0, 0xc3, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xe8, 0x0e, 0x1f, 0x04, 0x1b, 0xc4, 0x62, 0xd3, 0xc6, 0xc1, 0x0b, 0x9d, 0x33, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6c, 0x1b, 0xf1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xeb, 0x11, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x2d, 0x47, 0xfc, 0x20, 0xce, 0x4f, 0x34, 0x06, 0xd9, 0x06, 0xb1, 0x08, 0x2a, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0x44, 0xe2, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x01, 0x89, 0x0f, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x6d, 0x24, 0x7e, 0xf0, 0xaa, 0x26, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x32, 0x49, 0xfc, 0xe0, 0x71, 0xa5, 0x56, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x8c, 0x49, 0xfc, 0xe0, 0xe0, 0x51, 0x7b, 0x1c, 0x3a, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0xc4, 0x22, 0xa8, 0xc8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0x53, 0xe2, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x3d, 0x89, 0x0f, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x5c, 0x25, 0x7e, 0xf0, 0xaa, 0x26, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x11, 0x4b, 0xfc, 0xe0, 0xe0, 0x51, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0xb6, 0xc4, 0x0f, 0x1e, 0x57, 0x6a, 0x75, 0x1c, 0x3a, 0xb4, 0x00, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0xc9, 0xc4, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x6f, 0x4d, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa6, 0x33, 0xf1, 0x41, 0xb0, 0xc1, 0xc3, 0xf6, 0x7a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0xc9, 0x97, 0x39, 0x64, 0xed, 0x8e, 0x43, 0x83, 0x6c, 0x83, 0x78, 0x83, 0x15, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x84, 0x3a, 0xf1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0xdc, 0xc4, 0x0f, 0x5e, 0xb2, 0xd7, 0x33, 0xc8, 0x36, 0x88, 0x37, 0x58, 0x91, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0xfa, 0xc4, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xbe, 0x13, 0x1f, 0x04, 0x1b, 0x3c, 0x6c, 0xaf, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x92, 0x7c, 0x99, 0x43, 0xc7, 0xb0, 0xe3, 0xd0, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x60, 0x8a, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7f, 0xa7, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc9, 0x9a, 0xe2, 0x07, 0x2f, 0x32, 0x39, 0x1b, 0x64, 0x1b, 0x44, 0x7c, 0xae, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x8f, 0x8a, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x0c, 0x2a, 0x7e, 0xf0, 0x84, 0xa1, 0xa3, 0x41, 0xb6, 0x41, 0xc4, 0xe7, 0x8a, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x9e, 0x2a, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xab, 0xa9, 0xf8, 0x41, 0x50, 0x7a, 0x1f, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x6b, 0x15, 0x5f, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x62, 0x58, 0xf1, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xe4, 0x8a, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x2b, 0x16, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x18, 0x64, 0xf1, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x56, 0x16, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xd9, 0x2c, 0x7e, 0x10, 0x7b, 0x2d, 0x20, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x19, 0xb4, 0xf8, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0xa6, 0xc5, 0x0f, 0x31, 0x3c, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x5d, 0x2d, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x24, 0x6f, 0xf1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0x19, 0xc6, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0x0f, 0xe3, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x25, 0xc6, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x55, 0x8c, 0x1f, 0xc4, 0x4f, 0x61, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x82, 0x31, 0x7e, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x64, 0x8d, 0xf1, 0x43, 0xea, 0xe0, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x1d, 0xe3, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x04, 0x32, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdf, 0xc8, 0xf8, 0xa1, 0x95, 0xf8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x98, 0x8c, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x97, 0x32, 0x7e, 0x68, 0x25, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0x2c, 0xe3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xbd, 0x8c, 0x1f, 0xfa, 0x93, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x90, 0xcc, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x81, 0x35, 0xe3, 0x87, 0x56, 0xe2, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x84, 0x33, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe1, 0xce, 0xf8, 0xa1, 0x3f, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xf9, 0x8c, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x19, 0x34, 0x7e, 0x90, 0xb6, 0x42, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x18, 0xd1, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa5, 0x47, 0xe3, 0x07, 0x09, 0x65, 0x27, 0xc7, 0xa1, 0xe1, 0x37, 0x18, 0x98, 0x00, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x54, 0x1a, 0x1f, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x9a, 0xc6, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf6, 0xa7, 0xf1, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x94, 0x1a, 0x3f, 0x08, 0x29, 0xf0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xb0, 0x1a, 0x1f, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0xb1, 0xc6, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc2, 0xad, 0xf1, 0xc3, 0xd1, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x88, 0xd7, 0xf8, 0x41, 0xe0, 0xc6, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6e, 0xd8, 0xf8, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x47, 0x36, 0x3e, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x9c, 0x8d, 0x8f, 0x07, 0x0f, 0x4d, 0x1b, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x5b, 0x6d, 0xfc, 0x60, 0x4d, 0x99, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xb9, 0x8d, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x8e, 0x1b, 0x1f, 0x76, 0xe1, 0x36, 0x1c, 0xed, 0x07, 0x6b, 0x77, 0x10, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x64, 0x6f, 0xfc, 0x20, 0x5a, 0x79, 0x30, 0x86, 0x5d, 0xb8, 0x0d, 0xad, 0xc4, 0x0f, 0xd6, 0xee, 0x20, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x36, 0xe0, 0xf8, 0x41, 0xdc, 0x30, 0x61, 0x0c, 0xbb, 0x70, 0x1b, 0xfa, 0x93, 0x1f, 0xac, 0xdd, 0x41, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x48, 0xc3, 0xf1, 0x83, 0x38, 0x6e, 0xb3, 0x18, 0x64, 0x1b, 0x9a, 0xaf, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x59, 0x37, 0x7e, 0x38, 0xc5, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x4b, 0x1c, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0c, 0xc6, 0xf1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x76, 0x1c, 0x3f, 0x34, 0x12, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x34, 0xc9, 0xf1, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x54, 0x8e, 0x1f, 0x9a, 0xf1, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x8d, 0x39, 0x7e, 0xf0, 0xcc, 0x8f, 0x8a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x39, 0xc7, 0x0f, 0x02, 0x13, 0xfb, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x3c, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xfc, 0x39, 0x3e, 0x08, 0x16, 0x67, 0x83, 0xd7, 0xa0, 0xaa, 0x1c, 0x4e, 0xb1, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0x8b, 0xc7, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x59, 0x1e, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe7, 0x3c, 0x3e, 0xec, 0xc2, 0x6d, 0x10, 0xad, 0x3c, 0x18, 0x87, 0x46, 0x82, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x4a, 0x3d, 0x7e, 0x38, 0xda, 0x87, 0x5d, 0xb8, 0x0d, 0xe2, 0x86, 0x09, 0xe3, 0xd0, 0x48, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xb4, 0xc7, 0x0f, 0xad, 0xc4, 0x07, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0xb7, 0x41, 0x1c, 0xb7, 0x59, 0x1c, 0x1a, 0x09, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x01, 0x3e, 0x7e, 0xe8, 0x4f, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbb, 0xf8, 0xf8, 0xf0, 0x0b, 0xa2, 0x05, 0xb7, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x31, 0x1f, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x8f, 0x3e, 0x3e, 0x48, 0x06, 0x82, 0x73, 0x70, 0xcc, 0x2a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0xd7, 0xc7, 0x0f, 0x86, 0x3c, 0xfa, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x73, 0x1f, 0x3f, 0x34, 0x2e, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x8a, 0x1f, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0xfc, 0xe3, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xfb, 0x3f, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb2, 0x00, 0xf9, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x15, 0x90, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x06, 0x02, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x2b, 0x90, 0x1f, 0x5a, 0x89, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xd7, 0x40, 0x7e, 0x88, 0xe1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x40, 0x90, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb4, 0x04, 0xf9, 0xa1, 0x95, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0x15, 0xe4, 0x87, 0xac, 0xdd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x61, 0x90, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc4, 0x06, 0xf9, 0xa1, 0x3f, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd1, 0x1d, 0xe4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x84, 0x90, 0x1f, 0x8e, 0xf6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x1e, 0x21, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3e, 0x13, 0xf2, 0x43, 0x2b, 0xf1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x52, 0xc8, 0x8f, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xc1, 0x42, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x2e, 0xe4, 0x87, 0xfe, 0xe4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xc6, 0x90, 0x1f, 0x1a, 0x17, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x20, 0x0d, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xdc, 0x90, 0x1f, 0xa4, 0xad, 0x90, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xa0, 0x43, 0x7e, 0x68, 0x96, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0x3c, 0xe4, 0xc3, 0x6f, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x94, 0x7e, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0xee, 0xc7, 0x0f, 0x12, 0xca, 0x4e, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xd1, 0x1f, 0x3f, 0x88, 0x03, 0x74, 0x91, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x7f, 0xc8, 0x0f, 0x31, 0x3c, 0x1e, 0x1f, 0x8f, 0x17, 0x04, 0x8b, 0x1b, 0xbc, 0x40, 0x1d, 0xe8, 0x20, 0x00, 0xee, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0xc0, 0xc8, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x1d, 0xbc, 0x54, 0x6c, 0xe1, 0xd0, 0xa8, 0x65, 0xd8, 0x85, 0xdd, 0xe0, 0xcd, 0x60, 0x52, 0x07, 0x2f, 0x60, 0xbf, 0x3a, 0x18, 0x0b, 0xa3, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x6b, 0x8d, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0xe2, 0xc8, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x70, 0x23, 0x3f, 0x78, 0x46, 0xc1, 0xd0, 0x20, 0xdb, 0x20, 0x4e, 0x45, 0x46, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xbb, 0x23, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x83, 0x8e, 0x7c, 0x10, 0x6c, 0xf0, 0xa6, 0x70, 0xa1, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xff, 0x91, 0x0f, 0x82, 0x0d, 0xce, 0x91, 0xbd, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x45, 0x92, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x69, 0x49, 0x3e, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x64, 0x92, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xdf, 0x24, 0x3f, 0x38, 0xfc, 0xf1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x9e, 0xe4, 0x07, 0xe3, 0xa7, 0x6b, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x88, 0x92, 0x1f, 0x1a, 0x09, 0x1e, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xbe, 0x94, 0xfc, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0x51, 0xc9, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa4, 0x55, 0xf2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0xad, 0xe4, 0x83, 0x64, 0xf0, 0xe5, 0x60, 0x38, 0x4a, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0xb0, 0xe4, 0x07, 0xe3, 0xa7, 0x6b, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xcd, 0x92, 0x1f, 0x1a, 0x09, 0x1e, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xca, 0x96, 0xfc, 0x70, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x90, 0x4b, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x75, 0x97, 0xfc, 0xe0, 0xcc, 0x96, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xf9, 0x92, 0x1f, 0x0c, 0xcd, 0xae, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x1e, 0x4c, 0x7e, 0x10, 0x94, 0xde, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x63, 0x4c, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x72, 0x67, 0xf2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xc0, 0xc9, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x8b, 0x93, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x60, 0x4e, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x17, 0x9d, 0xfc, 0x20, 0xed, 0x1a, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x5b, 0x27, 0x3f, 0xf4, 0x27, 0x5f, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xb8, 0x93, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3b, 0x3c, 0xf9, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xce, 0x93, 0x1f, 0x94, 0x71, 0x3b, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xcc, 0x9e, 0xfc, 0x90, 0x3a, 0x38, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x93, 0x4f, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x7b, 0x9f, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x82, 0x7f, 0xf2, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb9, 0x01, 0xe5, 0x07, 0x6b, 0x0d, 0xbd, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3a, 0x82, 0xf2, 0x43, 0x7f, 0xf2, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xcd, 0x41, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x27, 0x94, 0x1f, 0x94, 0x71, 0x3b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x32, 0x94, 0x1f, 0x5a, 0x89, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb6, 0x87, 0xf2, 0x43, 0xaa, 0xe6, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8f, 0x44, 0xf9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x72, 0x8a, 0xf2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x30, 0xca, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x6b, 0x94, 0x1f, 0xac, 0xd4, 0xf4, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x3b, 0xca, 0x0f, 0xfd, 0xc9, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x4d, 0x20, 0xe5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x30, 0x52, 0x7e, 0x30, 0x9a, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x2e, 0x29, 0x3f, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x46, 0x94, 0xf2, 0xc3, 0x5e, 0xe1, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb0, 0x95, 0xf2, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0xd8, 0xa0, 0x61, 0x91, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x4d, 0x9e, 0xac, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0x61, 0xee, 0x37, 0x58, 0x24, 0x3c, 0x7b, 0x10, 0xa5, 0x80, 0x17, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc5, 0xa5, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xae, 0x98, 0xf2, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x84, 0xa6, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x6d, 0xca, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xe6, 0x94, 0x1f, 0x9c, 0xf8, 0x8c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1a, 0x9e, 0xf2, 0x83, 0xd1, 0x7c, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x7d, 0xca, 0x0f, 0xa9, 0x83, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0x41, 0xe5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x73, 0x54, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x3c, 0xa9, 0x7c, 0x90, 0x0c, 0xdc, 0x5a, 0x07, 0xc3, 0x51, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x64, 0x2a, 0x3f, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb0, 0xa7, 0xf2, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf4, 0x55, 0xf9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x46, 0xad, 0xf2, 0x41, 0x32, 0x20, 0xd8, 0xbb, 0x0e, 0x86, 0xa3, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xd5, 0x55, 0x3e, 0x48, 0x06, 0x04, 0x2e, 0xd7, 0xc1, 0x70, 0x94, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x31, 0x60, 0xe5, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0xc5, 0xca, 0x0f, 0x1a, 0xe2, 0xcf, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xcb, 0xca, 0x07, 0xc9, 0x80, 0xe0, 0xdd, 0x39, 0x18, 0x8e, 0xd2, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x13, 0xad, 0x7c, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd6, 0x5a, 0xf9, 0x41, 0x8b, 0x12, 0xfa, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe2, 0x56, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xb5, 0x2b, 0x3f, 0x68, 0x1d, 0x4a, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0xe7, 0xca, 0x0f, 0x62, 0x55, 0x6d, 0x64, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x88, 0x2b, 0x3f, 0x68, 0x23, 0x4b, 0xff, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0xf8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x41, 0x55, 0xf9, 0x41, 0xac, 0xaa, 0x8d, 0x0c, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0x52, 0xe5, 0x83, 0x64, 0x20, 0x68, 0x07, 0xc3, 0x51, 0xfa, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0xf8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1e, 0x51, 0xf9, 0x21, 0x55, 0x73, 0x3c, 0x1e, 0x04, 0x8b, 0x1b, 0x3c, 0xee, 0xc0, 0xfc, 0x70, 0x8a, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x28, 0x2c, 0x1f, 0x76, 0x83, 0x68, 0x36, 0x13, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd8, 0xc3, 0xf2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x53, 0x2c, 0x3f, 0x88, 0x65, 0x34, 0x91, 0x41, 0xb6, 0x41, 0xac, 0xf9, 0x8d, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1b, 0x64, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x31, 0x8d, 0xe5, 0x07, 0x8f, 0x5f, 0x36, 0x1a, 0x64, 0x1b, 0xc4, 0x9a, 0xdf, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x5d, 0x96, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x34, 0x59, 0x3e, 0x08, 0x36, 0x88, 0x02, 0x14, 0x8d, 0x43, 0x27, 0xa2, 0x41, 0xb6, 0x41, 0xac, 0xf9, 0x8d, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xd7, 0x59, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8a, 0x66, 0xf9, 0x20, 0xd8, 0x20, 0x26, 0x40, 0x46, 0x0e, 0xdd, 0x8f, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x55, 0x83, 0xfd, 0x87, 0x68, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x15, 0x68, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x8c, 0x96, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0x10, 0x15, 0x87, 0x23, 0x1b, 0x44, 0xc5, 0xe1, 0xc8, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x44, 0xea, 0xe1, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xa7, 0x96, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x69, 0x5a, 0x7e, 0xf0, 0xf8, 0x65, 0xa3, 0x41, 0xb6, 0x41, 0xa4, 0x1e, 0x8e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3f, 0x6c, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xad, 0xac, 0xe5, 0x07, 0xb1, 0x3e, 0x38, 0x32, 0xc8, 0x36, 0x88, 0xd4, 0xc3, 0x91, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0x6e, 0xcb, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x9e, 0x2d, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x92, 0xde, 0xf2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0x73, 0xcb, 0x07, 0xc1, 0x06, 0xf1, 0xa9, 0xa2, 0x71, 0xb0, 0x84, 0xff, 0x67, 0x90, 0x6d, 0x10, 0xbf, 0x8e, 0x23, 0x83, 0x6c, 0x83, 0x98, 0x7b, 0x1c, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x69, 0xb8, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x00, 0xe0, 0xf2, 0x41, 0xb0, 0x41, 0x74, 0xe3, 0x6c, 0x1c, 0x14, 0xc1, 0x83, 0xc3, 0x6e, 0xf0, 0x0a, 0x9c, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x31, 0x2e, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x76, 0xe4, 0xf2, 0x83, 0xa7, 0x6a, 0x41, 0x0d, 0xb2, 0x0d, 0x62, 0xae, 0x72, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x9d, 0xcb, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x5d, 0x2e, 0x3f, 0x78, 0xfc, 0xb2, 0xd1, 0x20, 0xdb, 0x20, 0xe6, 0x2a, 0x47, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xa1, 0xba, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe4, 0xe8, 0xf2, 0x83, 0x58, 0x1f, 0x1c, 0x19, 0x64, 0x1b, 0xc4, 0x5c, 0xe5, 0xc8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x2d, 0xdb, 0xe5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x5f, 0x97, 0x0f, 0x82, 0x0d, 0xe2, 0x53, 0x45, 0xe3, 0xd0, 0xfd, 0x68, 0xd8, 0x0d, 0x1e, 0xa2, 0x0f, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0xde, 0xe5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x0c, 0x5e, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xa3, 0xf4, 0x81, 0x0e, 0xa2, 0x3f, 0x78, 0x63, 0x90, 0x6d, 0x10, 0x1d, 0x9e, 0x23, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x6c, 0x5e, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe3, 0x78, 0xf9, 0xc1, 0xe3, 0x97, 0x8d, 0x06, 0xd9, 0x06, 0xd1, 0xe1, 0x39, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x37, 0x7b, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0xe9, 0xe5, 0x83, 0x60, 0x83, 0x28, 0x40, 0xd1, 0x38, 0xb4, 0x00, 0x1b, 0x76, 0xe1, 0x16, 0x0f, 0xde, 0x4d, 0x5f, 0x7e, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xbe, 0x97, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9b, 0x7c, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x91, 0x4f, 0x3a, 0xb2, 0x41, 0xe4, 0x93, 0x8e, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x44, 0x96, 0x8e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x57, 0x7e, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0xf6, 0xe5, 0x07, 0x8f, 0x5f, 0x36, 0x1a, 0x64, 0x1b, 0x44, 0x64, 0xe9, 0xc8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x71, 0xff, 0xe5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xf0, 0x97, 0x1f, 0xc4, 0x0c, 0xe9, 0xc8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0x02, 0xe6, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x50, 0x60, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x78, 0xf0, 0xb8, 0x03, 0xf3, 0x0d, 0xe2, 0xbb, 0x75, 0xe4, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0xa2, 0x87, 0x75, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x17, 0xcc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x45, 0x30, 0x3f, 0x78, 0xfc, 0xb2, 0xd1, 0x20, 0xdb, 0x20, 0x7a, 0x58, 0x47, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x90, 0x30, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xd8, 0xc1, 0xfc, 0x20, 0x66, 0x48, 0x47, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x68, 0xb4, 0xe8, 0x58, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x0c, 0x62, 0x3e, 0xec, 0xc2, 0x2d, 0x06, 0x9e, 0x58, 0xd8, 0x7a, 0x48, 0x1d, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe4, 0x88, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0x10, 0x9b, 0xb4, 0x23, 0x1b, 0xc4, 0x26, 0xed, 0xc8, 0xe1, 0x14, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe5, 0xc4, 0xfc, 0x20, 0x7e, 0x2f, 0x3a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xcc, 0x17, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x58, 0xcc, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb8, 0xc6, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x20, 0x19, 0xf3, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0x71, 0xcc, 0x0f, 0xde, 0x08, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x9c, 0x83, 0x98, 0xf3, 0x18, 0x59, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xb3, 0x63, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x41, 0xe6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xf7, 0x98, 0x1f, 0x3c, 0x14, 0xd8, 0x6a, 0x90, 0x6d, 0x10, 0x65, 0xbe, 0x23, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x1d, 0x99, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x40, 0x64, 0x3e, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x48, 0xb6, 0xfb, 0x3a, 0x1e, 0x1f, 0x3a, 0x68, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0x87, 0x34, 0xdc, 0x20, 0xdb, 0x20, 0xb6, 0x71, 0x47, 0x06, 0xd9, 0x06, 0xf1, 0x98, 0x3b, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x4e, 0xe6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x2b, 0x99, 0x0f, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x10, 0x65, 0x7e, 0xf0, 0x2c, 0xbd, 0xb1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x7b, 0xca, 0xfc, 0x60, 0xa9, 0xba, 0xcf, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xb5, 0x32, 0x3f, 0x78, 0x5c, 0xa9, 0xd5, 0x71, 0xe8, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0x10, 0xdb, 0xb8, 0x23, 0x83, 0x6c, 0x83, 0x78, 0xcc, 0x1d, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x97, 0xcb, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xbe, 0x2c, 0xf3, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0xbe, 0xcc, 0x0f, 0x9e, 0xa5, 0x37, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x89, 0x99, 0x1f, 0x2c, 0x55, 0xf7, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0x65, 0xe6, 0x07, 0x8f, 0x2b, 0xb5, 0x3a, 0x0e, 0x1d, 0x5a, 0x80, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x66, 0xcd, 0x7c, 0x10, 0x6c, 0xf0, 0xb0, 0xbd, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x0f, 0x5e, 0xda, 0x66, 0x7e, 0x48, 0xd5, 0x1c, 0x87, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0x0d, 0xa7, 0xd8, 0x41, 0x44, 0x67, 0x71, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x99, 0x33, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x78, 0x3c, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0xeb, 0xcc, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x1d, 0x44, 0xd1, 0xd1, 0xc6, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x88, 0xf1, 0xea, 0x91, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0xfd, 0xcc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xde, 0x33, 0x1f, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0x10, 0x9b, 0x48, 0x1b, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x06, 0x4d, 0x7b, 0x76, 0x6e, 0x10, 0xf5, 0x89, 0x16, 0x87, 0x53, 0x6c, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x71, 0xbe, 0xf9, 0xb0, 0x1b, 0xbc, 0xac, 0x22, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0xf8, 0xcd, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe0, 0xdf, 0x7c, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x57, 0x56, 0x04, 0x6d, 0xf0, 0xca, 0x8a, 0xa0, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0xff, 0xee, 0x91, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x28, 0x38, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x39, 0xe0, 0xfc, 0xe0, 0xf1, 0x66, 0x1b, 0x83, 0x6c, 0x83, 0xf8, 0xef, 0x1e, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x60, 0xe1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xea, 0x83, 0xf3, 0x83, 0x08, 0x4b, 0xd3, 0x18, 0x76, 0x83, 0x37, 0x4f, 0x04, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x77, 0xc3, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x42, 0x9c, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0xfe, 0x89, 0xa0, 0x0d, 0xde, 0x3f, 0x11, 0x74, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x91, 0x50, 0x3e, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x17, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x50, 0x9c, 0x1f, 0x3c, 0x7e, 0xd9, 0x68, 0x90, 0x6d, 0x10, 0x09, 0xe5, 0x23, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x75, 0x9c, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xa1, 0x71, 0x3e, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0x20, 0x1a, 0x4f, 0x35, 0x0e, 0x2d, 0xc0, 0x86, 0xdd, 0xe0, 0x21, 0xfa, 0x40, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x03, 0x72, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd9, 0x22, 0xe7, 0x07, 0xb1, 0xf6, 0x39, 0x32, 0xc8, 0x36, 0x88, 0x52, 0xf6, 0x91, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x51, 0xce, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x2c, 0x39, 0x3f, 0x88, 0x5e, 0x93, 0x91, 0x61, 0x37, 0x78, 0xc7, 0x45, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xae, 0x9c, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x94, 0xcb, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x6f, 0xba, 0x08, 0xda, 0xe0, 0x4d, 0x17, 0x41, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0xd1, 0xf0, 0x23, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xd4, 0x9c, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x1e, 0x73, 0x7e, 0x10, 0xbd, 0x26, 0x23, 0xc3, 0x6e, 0xf0, 0x40, 0x88, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xbf, 0x39, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4c, 0x9d, 0xf3, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x1e, 0x0b, 0x11, 0xb4, 0xc1, 0x63, 0x21, 0x82, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0x86, 0xeb, 0x47, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x0d, 0x3a, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc5, 0xe7, 0x7c, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x34, 0xa2, 0xf3, 0x83, 0x37, 0x02, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x1c, 0x9d, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x72, 0xd2, 0xf9, 0xc1, 0x33, 0x0a, 0x86, 0x06, 0xd9, 0x06, 0x11, 0xc9, 0x3f, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x25, 0xd3, 0xf9, 0x20, 0xd8, 0x20, 0x0a, 0x50, 0x34, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x61, 0x37, 0x78, 0x6f, 0x3a, 0xd0, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0xaa, 0xce, 0x0f, 0x9e, 0x0e, 0xe4, 0x73, 0xf0, 0x4e, 0x30, 0xa9, 0x61, 0x37, 0x78, 0x35, 0x40, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x5f, 0x9d, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9f, 0xd6, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x2f, 0x08, 0x08, 0xda, 0xe0, 0x05, 0x01, 0x41, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0xb1, 0x02, 0x24, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x84, 0x9d, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xe0, 0x75, 0x3e, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x48, 0xbd, 0xfb, 0x3a, 0x1e, 0x1f, 0x3a, 0x68, 0x0c, 0xbb, 0xc1, 0xa3, 0xe2, 0x81, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x92, 0xec, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0xce, 0xce, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x60, 0x3c, 0xd0, 0x06, 0x0f, 0x8c, 0x07, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x38, 0x43, 0x20, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xbe, 0xed, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x60, 0xb5, 0xf3, 0x41, 0xb0, 0xc1, 0xdb, 0xc9, 0x7c, 0x0e, 0x1d, 0x34, 0x86, 0xdd, 0xe0, 0x25, 0x07, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x14, 0x77, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0x73, 0xe7, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0xea, 0x20, 0x68, 0x83, 0x57, 0x1d, 0x04, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x94, 0x36, 0x90, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x78, 0xde, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0x76, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xf2, 0x9d, 0x1f, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xeb, 0xef, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x0a, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x10, 0x3c, 0x3f, 0x88, 0xb2, 0x00, 0x8c, 0x41, 0xb6, 0x41, 0xdc, 0x51, 0x90, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb1, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfb, 0xe1, 0xf9, 0xc1, 0x1b, 0xd3, 0xbc, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x53, 0xa0, 0x41, 0xb6, 0x41, 0x94, 0x36, 0x90, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xdd, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xcd, 0x3f, 0x8d, 0x43, 0x0b, 0xb0, 0x61, 0x37, 0x78, 0x8e, 0x44, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x42, 0x9e, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd7, 0xe4, 0xf9, 0x41, 0x8c, 0x4a, 0x5a, 0x0c, 0xb2, 0x0d, 0x22, 0x74, 0x83, 0x64, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x10, 0xcb, 0xf3, 0x41, 0xb0, 0x41, 0x6c, 0xfe, 0x69, 0x1c, 0x3a, 0x68, 0x0c, 0xbb, 0xc1, 0xeb, 0x14, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x1e, 0xf3, 0x7c, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x37, 0xcf, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0xa9, 0x42, 0xd0, 0x06, 0x2f, 0x55, 0x08, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x38, 0xfb, 0x20, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xe4, 0xf3, 0xfc, 0x20, 0xa2, 0x3c, 0x48, 0x86, 0xdd, 0xe0, 0x6d, 0x02, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x1f, 0x7a, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0xa4, 0xe7, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0x53, 0x20, 0x68, 0x83, 0x77, 0x0a, 0x04, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x94, 0x8e, 0x90, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x82, 0x7a, 0x7e, 0x10, 0x51, 0x1e, 0x24, 0xc3, 0x6e, 0xf0, 0x12, 0x82, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x58, 0x3d, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd4, 0xd6, 0xf3, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x5e, 0x45, 0x10, 0xb4, 0xc1, 0xab, 0x08, 0x82, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0xc6, 0x4f, 0x48, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xa2, 0x3d, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x26, 0xf6, 0xfc, 0xe0, 0x99, 0xf8, 0x42, 0xc3, 0x6e, 0xf0, 0xde, 0x77, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xb9, 0x3d, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe6, 0xdc, 0xf3, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xde, 0xfe, 0x0e, 0xb4, 0xc1, 0xdb, 0xdf, 0x81, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0xa6, 0x59, 0x48, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x11, 0xf8, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xaa, 0xde, 0xf3, 0x83, 0x97, 0xec, 0xf5, 0x0c, 0xb2, 0x0d, 0x62, 0x9a, 0x85, 0x64, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa4, 0xe1, 0xf3, 0x83, 0x58, 0xd4, 0x20, 0x19, 0x76, 0x83, 0x77, 0xf3, 0xf8, 0x2c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x74, 0xf9, 0xfc, 0xe0, 0xe9, 0x40, 0x3e, 0x07, 0xaf, 0x17, 0xf2, 0x19, 0x76, 0x83, 0x87, 0xdd, 0x03, 0x2d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7f, 0xfa, 0xfc, 0xe0, 0xe9, 0x40, 0x3e, 0x07, 0x4f, 0xe7, 0x83, 0x1a, 0x76, 0x83, 0x97, 0xf5, 0x03, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb1, 0xf5, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x65, 0x9f, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0xca, 0x7e, 0xa0, 0x0d, 0x5e, 0xd9, 0x0f, 0x74, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x91, 0x6a, 0x43, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0f, 0xf8, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0xdd, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x8b, 0x9f, 0x1f, 0xbc, 0x11, 0xa0, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0xcb, 0xcf, 0x0f, 0x5e, 0x1d, 0x2e, 0x74, 0x1c, 0x3a, 0x74, 0xd0, 0x18, 0x76, 0x83, 0x17, 0x30, 0x04, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x22, 0xfa, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xac, 0x9f, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0x1a, 0x86, 0xa0, 0x0d, 0x5e, 0xc3, 0x10, 0x74, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x91, 0xea, 0x43, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4d, 0xfc, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0xed, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xcf, 0x9f, 0x1f, 0xbc, 0x11, 0xa0, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xed, 0xcf, 0x0f, 0x5e, 0x1d, 0x2e, 0x74, 0x1c, 0x3a, 0x74, 0xd0, 0x18, 0x76, 0x83, 0x97, 0xcb, 0x03, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x60, 0xfe, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xf0, 0x9f, 0x0f, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0x8a, 0x79, 0xa0, 0x0d, 0x5e, 0x31, 0x0f, 0x74, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x91, 0x6a, 0x44, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0x02, 0xe8, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xfe, 0x9f, 0x0f, 0xbb, 0x70, 0x1b, 0x44, 0x0f, 0xe6, 0xc6, 0xa1, 0x91, 0xe0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x16, 0xa0, 0x0f, 0xbb, 0x70, 0x1b, 0x1a, 0x09, 0x1e, 0x44, 0x0f, 0xe6, 0xc6, 0x41, 0xd4, 0x68, 0x6e, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x88, 0x80, 0x3e, 0xec, 0xc2, 0x6d, 0x68, 0x24, 0x78, 0x10, 0xd7, 0x9b, 0x1b, 0x07, 0x91, 0xc2, 0xb9, 0x31, 0xc8, 0x36, 0x88, 0x54, 0x23, 0x92, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x1d, 0xd0, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x5a, 0x40, 0x1f, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2c, 0x02, 0xfd, 0xe0, 0x8d, 0x00, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x41, 0x81, 0x7e, 0xf0, 0xea, 0x70, 0xa1, 0xe3, 0xd0, 0xa1, 0x05, 0xd8, 0xb0, 0x1b, 0x3c, 0x47, 0x23, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x2d, 0xd0, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x34, 0x03, 0xfd, 0xe0, 0x89, 0x61, 0x5e, 0x83, 0x6c, 0x83, 0x78, 0xa3, 0x22, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xf3, 0x03, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x34, 0x0e, 0xf4, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0x44, 0xd0, 0x0f, 0xde, 0x08, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0x25, 0xe8, 0x07, 0x87, 0x77, 0xda, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xb0, 0x1b, 0xbc, 0xe3, 0x1f, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x4f, 0xd0, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x52, 0x05, 0x7d, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x37, 0xfd, 0x03, 0x6d, 0xf0, 0xa6, 0x7f, 0xa0, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0xcf, 0x2d, 0x92, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x8a, 0x41, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc4, 0x05, 0xfd, 0xe0, 0x25, 0x7b, 0x3d, 0x83, 0x6c, 0x83, 0xf8, 0xdc, 0x22, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe9, 0x06, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0c, 0x1a, 0xf4, 0x83, 0xc7, 0x59, 0x93, 0x0d, 0xbb, 0xc1, 0xab, 0x31, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x42, 0x07, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x79, 0xd0, 0x0f, 0x5e, 0xaf, 0x1a, 0x35, 0xc8, 0x36, 0x88, 0x53, 0x31, 0x92, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0x85, 0xd0, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xfc, 0x41, 0x3f, 0x78, 0x1d, 0xe1, 0xd5, 0xb0, 0x1b, 0xbc, 0x77, 0x07, 0x63, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0x4a, 0xe8, 0x07, 0x4f, 0x07, 0xf2, 0x39, 0x78, 0x38, 0x92, 0xcf, 0xb0, 0x1b, 0x3c, 0x5c, 0xc9, 0x67, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0x53, 0xe8, 0x07, 0x4f, 0x07, 0xf2, 0x39, 0x78, 0xd7, 0x93, 0xcf, 0xb0, 0x1b, 0x3c, 0xb7, 0x20, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0xac, 0xd0, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x87, 0x0b, 0x7d, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xf1, 0x34, 0x77, 0xf0, 0x7a, 0xe0, 0xa5, 0x41, 0xb6, 0x41, 0x3c, 0xa9, 0x91, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xef, 0x85, 0x3e, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6d, 0x18, 0xfa, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x8d, 0x0c, 0xfd, 0xe0, 0xd5, 0xe1, 0x42, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x61, 0x37, 0x78, 0x8e, 0x3b, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x9d, 0xa1, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x92, 0x1c, 0xfa, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x8f, 0x0e, 0xdf, 0xd9, 0xe0, 0xd1, 0xe1, 0x3b, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0x61, 0x71, 0x24, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xd4, 0xa1, 0x0f, 0xbb, 0x70, 0x8b, 0x07, 0x4f, 0x4d, 0x4f, 0x3e, 0x8c, 0xcb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0xdf, 0xa1, 0x0f, 0xbb, 0x70, 0x1b, 0xc6, 0xe5, 0x20, 0x0e, 0xea, 0x48, 0x36, 0x88, 0x83, 0x3a, 0x92, 0xc3, 0x29, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa4, 0x1e, 0xfa, 0xb0, 0x0b, 0xb7, 0x61, 0x5c, 0x0e, 0xde, 0x27, 0xa0, 0x73, 0xf0, 0xf4, 0x2b, 0xb7, 0x61, 0x37, 0x78, 0x37, 0x42, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xf5, 0xa1, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xeb, 0x20, 0xfa, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x6f, 0x48, 0x08, 0xda, 0xe0, 0x0d, 0x09, 0x41, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0x61, 0x79, 0x24, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x1c, 0xa2, 0x0f, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x9f, 0x88, 0x7e, 0xf0, 0x7e, 0x84, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x65, 0x44, 0x3f, 0x78, 0x75, 0xb8, 0xd0, 0x71, 0xe8, 0xd0, 0x41, 0x63, 0xd8, 0x0d, 0x5e, 0xb7, 0x0e, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x81, 0x8f, 0xe8, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x22, 0x89, 0x3e, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x4b, 0xd7, 0x81, 0x36, 0x78, 0xe9, 0x3a, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x44, 0x2b, 0x20, 0xc9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x63, 0xa2, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x5b, 0x89, 0x3e, 0x08, 0x36, 0x88, 0xb4, 0xf5, 0x91, 0x43, 0x53, 0xa0, 0x41, 0xb6, 0x41, 0xb4, 0x02, 0x92, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xea, 0x89, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf1, 0x26, 0xfa, 0xc1, 0xf3, 0xa0, 0xca, 0x86, 0xdd, 0xe0, 0xbd, 0x0d, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x15, 0x8a, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0xa4, 0xe8, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0xbd, 0x21, 0x68, 0x83, 0xb7, 0x37, 0x04, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x14, 0x20, 0x92, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xa6, 0x8a, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xca, 0x29, 0xfa, 0x41, 0x3c, 0xce, 0x6a, 0x0c, 0xbb, 0xc1, 0x53, 0xeb, 0x81, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xa7, 0x15, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x5f, 0xd1, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x76, 0x3d, 0xd0, 0x06, 0xcf, 0xae, 0x07, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0xb8, 0x67, 0x24, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x58, 0x5b, 0xf4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x66, 0xd1, 0x07, 0xc1, 0x06, 0x2b, 0x6b, 0xa3, 0x0e, 0x4d, 0x81, 0x06, 0xd9, 0x06, 0x71, 0xcf, 0x48, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0xbd, 0xe8, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xe8, 0xa2, 0x0f, 0x82, 0x0d, 0x62, 0xf3, 0x4f, 0xe3, 0xd0, 0x89, 0x68, 0x90, 0x6d, 0x10, 0xf7, 0x8c, 0x24, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x0d, 0xa3, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x01, 0x8c, 0x7e, 0xf0, 0xfe, 0x15, 0xa1, 0x61, 0x37, 0x78, 0xeb, 0x3e, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x18, 0xa3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2f, 0x32, 0xfa, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xef, 0xde, 0x07, 0xda, 0xe0, 0xdd, 0xfb, 0x40, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0xb1, 0x96, 0x24, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xf8, 0x8c, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x13, 0x33, 0xfa, 0x41, 0x94, 0x44, 0x92, 0x0c, 0xb2, 0x0d, 0x22, 0xd6, 0x92, 0x64, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc8, 0x6a, 0xf4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xa4, 0xd1, 0x0f, 0x62, 0x51, 0x83, 0x64, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x36, 0x6c, 0xf4, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xd8, 0x46, 0x3f, 0x68, 0xff, 0xe1, 0x7e, 0x90, 0x6d, 0x10, 0x5b, 0x9d, 0x24, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x10, 0x8e, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x75, 0x37, 0xfa, 0x41, 0x94, 0x44, 0x92, 0x0c, 0xb2, 0x0d, 0x62, 0xab, 0x93, 0x64, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x8c, 0x73, 0xf4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0xc7, 0xd1, 0x0f, 0x62, 0x51, 0x83, 0xe4, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x01, 0x3b, 0xfa, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x1e, 0x3c, 0xcf, 0x1d, 0xfd, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0xfa, 0x93, 0x2f, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x59, 0x48, 0x1f, 0x76, 0xc3, 0xfa, 0xde, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x37, 0xa4, 0x1f, 0x2c, 0x3d, 0x35, 0x1a, 0x76, 0x43, 0xd3, 0xf3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x85, 0x48, 0x3f, 0x58, 0xc6, 0x6a, 0x34, 0xec, 0x86, 0xf6, 0xe1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x38, 0x91, 0x3e, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x5a, 0x89, 0x1f, 0x24, 0xa6, 0xfb, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x66, 0x91, 0x3e, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0xfa, 0x93, 0x1f, 0x2c, 0x81, 0xb9, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x16, 0xc7, 0x59, 0x83, 0xb7, 0x59, 0xa5, 0x1f, 0x14, 0xd5, 0x82, 0x1b, 0x3c, 0xac, 0x32, 0xfd, 0x20, 0x00, 0xee, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x6d, 0xa4, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf7, 0x4f, 0xfa, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe9, 0x1d, 0xe9, 0xc3, 0x6e, 0xc8, 0x63, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa8, 0x50, 0xfa, 0xa1, 0x59, 0xe4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0x45, 0xe9, 0x87, 0x3e, 0x8d, 0x83, 0x6c, 0x83, 0x08, 0x7b, 0x25, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa8, 0xa5, 0xf4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x90, 0xd2, 0x0f, 0x5e, 0xb2, 0xd7, 0x33, 0xc8, 0x36, 0x88, 0xb0, 0x57, 0x92, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x8a, 0x4a, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc2, 0x29, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0xa7, 0xd2, 0x87, 0x5d, 0xb8, 0x0d, 0x5a, 0xcd, 0x74, 0x1a, 0x0f, 0xde, 0x66, 0x95, 0xbe, 0x41, 0x24, 0xe2, 0x92, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x4c, 0xd8, 0x92, 0x0c, 0xb2, 0x0d, 0xe2, 0xd8, 0x96, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0xb7, 0xd2, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xc1, 0x4a, 0x1f, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd0, 0x2b, 0x7d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4e, 0x58, 0xfa, 0x41, 0x8a, 0x8c, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x40, 0x96, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xae, 0x59, 0xfa, 0xc1, 0xd3, 0xf4, 0x7b, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x2f, 0x2d, 0xfd, 0x20, 0xba, 0x85, 0x47, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xcc, 0x96, 0x7e, 0x90, 0xb0, 0xcf, 0x7c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0xac, 0x58, 0xea, 0x3f, 0x0e, 0x0d, 0xb2, 0x0d, 0x62, 0xc2, 0x96, 0x64, 0x90, 0x6d, 0x10, 0xc7, 0xb6, 0x24, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x3b, 0x97, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xeb, 0x5b, 0xfa, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xd9, 0xa5, 0x1f, 0x8e, 0xf6, 0x41, 0xb6, 0x41, 0x4c, 0xd8, 0x92, 0x0c, 0xb2, 0x0d, 0xe2, 0xd8, 0x96, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0xfb, 0xd2, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xc9, 0x4b, 0x1f, 0x7e, 0x43, 0x72, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x52, 0xc0, 0xf4, 0xc3, 0xd1, 0x3e, 0xc8, 0x36, 0x88, 0x09, 0x5b, 0x92, 0x41, 0xb6, 0x41, 0x1c, 0xdb, 0x92, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x79, 0x98, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd5, 0x60, 0xfa, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x29, 0xa6, 0x1f, 0x8e, 0xf6, 0x41, 0xb6, 0x41, 0x84, 0xbd, 0x92, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x03, 0x99, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x44, 0x63, 0xfa, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x4b, 0xa6, 0x0f, 0xbb, 0x70, 0x1b, 0x9a, 0x70, 0x8d, 0x07, 0x0f, 0xab, 0x4c, 0xdf, 0x20, 0xee, 0xa2, 0x49, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0x2a, 0x9e, 0x49, 0x06, 0xd9, 0x06, 0x91, 0xfc, 0x4c, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa5, 0xa5, 0xe9, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x5c, 0xa6, 0x1f, 0x44, 0xfb, 0xa3, 0xc8, 0x20, 0xdb, 0x20, 0x2a, 0x9e, 0x49, 0x06, 0xd9, 0x06, 0x91, 0xfc, 0x4c, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0xac, 0xe9, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xa1, 0xa6, 0x0f, 0xbf, 0x21, 0xb9, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdb, 0x6b, 0xfa, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc9, 0xb4, 0xe9, 0x87, 0xa3, 0x7d, 0x90, 0x6d, 0x10, 0x15, 0xcf, 0x24, 0x83, 0x6c, 0x83, 0x48, 0x7e, 0x26, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x5a, 0x37, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xcc, 0xdb, 0xf4, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0x7b, 0xd3, 0x0f, 0x5e, 0xd5, 0x24, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x0e, 0xa7, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x05, 0x9c, 0x7e, 0xf0, 0x34, 0xfd, 0x9e, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x32, 0x4e, 0x3f, 0x78, 0x87, 0x01, 0xd1, 0x71, 0xe8, 0xe0, 0x75, 0xab, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x5c, 0x4e, 0x1f, 0x04, 0x1b, 0x3c, 0x6c, 0xaf, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x83, 0x37, 0x38, 0xa7, 0x1f, 0x52, 0x35, 0xc7, 0xa1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xdd, 0xd5, 0xe9, 0x8b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x92, 0x9d, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb6, 0xf0, 0xf4, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0xf4, 0xe9, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x70, 0x9f, 0x7e, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc1, 0xf9, 0xe9, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0xf8, 0xd3, 0x0f, 0x62, 0xaf, 0x05, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xfa, 0x4f, 0x3f, 0xa4, 0x0e, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x81, 0x80, 0xfa, 0x21, 0x86, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x09, 0xd4, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xd4, 0xa0, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb4, 0x86, 0xfa, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc7, 0x43, 0x7d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3b, 0x88, 0xfa, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xce, 0x11, 0xf5, 0x83, 0xf8, 0x29, 0x0c, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x4c, 0xd4, 0x0f, 0xa9, 0x9a, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x91, 0xa2, 0x7e, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7d, 0x45, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0x5d, 0xd4, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x8e, 0x51, 0x3f, 0xb4, 0x12, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4c, 0x1a, 0xf5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0x6f, 0xd4, 0x0f, 0xad, 0xc4, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x53, 0x47, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xee, 0x1e, 0xf5, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x40, 0xea, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x0f, 0xa9, 0x1f, 0x8e, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0x8d, 0xd4, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x4e, 0x52, 0x3f, 0xb4, 0x12, 0x3f, 0x0e, 0x0d, 0xbf, 0xc1, 0xc0, 0x04, 0x18, 0x7e, 0x83, 0xc1, 0x0e, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x25, 0x93, 0xfa, 0xf0, 0x0b, 0xa2, 0x05, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x9f, 0xd4, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x4d, 0x4a, 0xfd, 0xd0, 0x9f, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x94, 0x2a, 0xf5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xdd, 0x57, 0xea, 0x07, 0x31, 0x5b, 0x19, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x6a, 0xa9, 0x1f, 0xf6, 0x0a, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x55, 0x97, 0xfa, 0xa1, 0x3f, 0xf9, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x07, 0x98, 0xfa, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x70, 0x4c, 0x7d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x92, 0x99, 0xfa, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7c, 0x34, 0xf5, 0x83, 0xe8, 0xc1, 0x01, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0xd7, 0xd4, 0x0f, 0x7b, 0x85, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xce, 0x4d, 0xfd, 0x90, 0xaa, 0x39, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x51, 0x9c, 0xfa, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xd0, 0xa9, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x75, 0xa7, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0x7a, 0xea, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xf5, 0xa9, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x00, 0x54, 0x3f, 0x88, 0x8f, 0xd1, 0x90, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x16, 0x54, 0x1f, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xba, 0x42, 0xf5, 0x83, 0x90, 0x02, 0x3f, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x92, 0xa8, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1b, 0xa3, 0xfa, 0x30, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x3c, 0xaa, 0x1f, 0x04, 0x59, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x4b, 0xaa, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x61, 0xa9, 0x7e, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x18, 0x53, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfe, 0x4d, 0xf5, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd6, 0x53, 0x7d, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x0b, 0x55, 0x3f, 0x1c, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x90, 0xaa, 0x1f, 0x04, 0x6e, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x9f, 0xaa, 0x1f, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa0, 0xaa, 0xfa, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9e, 0x56, 0xf5, 0x83, 0xf8, 0x18, 0x0d, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x02, 0x58, 0xf5, 0x83, 0x85, 0xc3, 0x09, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x67, 0xd5, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xb7, 0x55, 0x3f, 0xb4, 0x12, 0x3f, 0x0e, 0x0d, 0xbf, 0xc1, 0xb0, 0x0d, 0x18, 0x7e, 0x83, 0xc1, 0x0e, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x64, 0xae, 0xfa, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6c, 0x5e, 0xf5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0xbf, 0xea, 0x83, 0x64, 0xe0, 0xd6, 0x3a, 0x38, 0x7b, 0x19, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x69, 0xc2, 0xea, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0x8a, 0xd5, 0x0f, 0xe2, 0xae, 0xdc, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x3f, 0x56, 0x3f, 0x24, 0x3b, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x89, 0xcb, 0xea, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xe4, 0xac, 0x7e, 0x48, 0xcc, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x11, 0xad, 0x7e, 0x10, 0x06, 0xf2, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x9a, 0x5a, 0xfd, 0xb0, 0x57, 0x78, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xad, 0xd7, 0xea, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0xb4, 0xd5, 0x07, 0xc9, 0x80, 0x72, 0xbd, 0xeb, 0xe0, 0xec, 0x65, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x74, 0xab, 0x0f, 0x92, 0x01, 0x81, 0xcb, 0x75, 0x70, 0xf6, 0x32, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0xdf, 0xea, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xc5, 0xd5, 0x07, 0xc9, 0x06, 0x8b, 0x6d, 0x45, 0x0e, 0xce, 0x5e, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5c, 0xb9, 0xfa, 0x20, 0x19, 0x10, 0xbc, 0x3b, 0x07, 0x67, 0x2f, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x83, 0xae, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x5e, 0x5d, 0x7d, 0x90, 0x0c, 0x08, 0xf4, 0xae, 0x83, 0xb3, 0x97, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0xb7, 0xab, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0xec, 0xd5, 0x07, 0xc9, 0x80, 0xe3, 0x3a, 0xd5, 0xc1, 0xd9, 0xcb, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0xe6, 0xd5, 0x0f, 0xe2, 0x3a, 0xa6, 0x64, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x85, 0x57, 0x1f, 0x24, 0x03, 0x45, 0xed, 0xe0, 0xec, 0x65, 0x7c, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xe4, 0xab, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xe3, 0x57, 0x1f, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xfe, 0xd5, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfa, 0x80, 0xf5, 0xc3, 0xd1, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2f, 0xc1, 0xfa, 0xa1, 0x71, 0xd1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x7d, 0xac, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0x22, 0xeb, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x37, 0xc9, 0xfa, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x78, 0xb2, 0x7e, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x31, 0x2a, 0xeb, 0x07, 0x61, 0x4f, 0xbd, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xd0, 0xb2, 0x3e, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xbe, 0xac, 0x1f, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x98, 0xcc, 0xfa, 0xa1, 0x93, 0xda, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xa7, 0x66, 0xfd, 0x10, 0xc3, 0xc3, 0x29, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe4, 0xc1, 0xfa, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x29, 0xac, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0x0c, 0xeb, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xea, 0xc3, 0xfa, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x49, 0x62, 0xfd, 0x20, 0xec, 0xa9, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xbe, 0x62, 0xfd, 0x20, 0x46, 0x50, 0x3f, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xc6, 0x58, 0x3f, 0x88, 0xe9, 0xd5, 0x8f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x37, 0xd6, 0x0f, 0x9d, 0xd4, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xbf, 0x59, 0x1f, 0x7e, 0x41, 0xb4, 0xc0, 0xf4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb4, 0xb3, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc0, 0x67, 0xfd, 0xe0, 0x44, 0xa1, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x02, 0xad, 0x1f, 0x0c, 0x63, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x38, 0xb4, 0x7e, 0x68, 0x96, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x65, 0xb4, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0x49, 0xeb, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xbb, 0xb4, 0x7e, 0xc8, 0xda, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd9, 0xd3, 0xfa, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x48, 0xad, 0x1f, 0x7a, 0x08, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x5d, 0xb5, 0x7e, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x14, 0x6b, 0xfd, 0x90, 0x3a, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x6f, 0x6b, 0xfd, 0x60, 0xf0, 0x4e, 0x1e, 0x8f, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x7a, 0xad, 0x0f, 0x82, 0x0d, 0xce, 0x6d, 0xce, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x90, 0xad, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x99, 0xb6, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x9b, 0x6d, 0x7d, 0xd8, 0x0d, 0x8a, 0x8b, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x81, 0x5b, 0x3f, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x70, 0xb9, 0xf5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x99, 0x75, 0xeb, 0x83, 0x64, 0xa0, 0xb9, 0xd3, 0xc1, 0x70, 0x94, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2e, 0xbc, 0xf5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0x7b, 0xeb, 0x07, 0xc9, 0x83, 0xd5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xdc, 0xb7, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x10, 0x70, 0xfd, 0x60, 0xd5, 0x17, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x34, 0xb8, 0x7e, 0x50, 0xc6, 0xed, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0a, 0xc3, 0xf5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd1, 0x88, 0xeb, 0x07, 0xcd, 0x1d, 0x46, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x99, 0x8b, 0xeb, 0x07, 0x43, 0x1e, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x39, 0xae, 0x1f, 0x8c, 0x9f, 0xae, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2b, 0x72, 0x7d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x29, 0xe5, 0xfa, 0xb0, 0x1b, 0xb4, 0xba, 0x7a, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0x98, 0xeb, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xaa, 0xb9, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xac, 0x73, 0xfd, 0x60, 0xbd, 0x59, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x80, 0xae, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x16, 0x5d, 0x3f, 0x58, 0x5d, 0x18, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x96, 0xae, 0x1f, 0xfa, 0x93, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x28, 0xd4, 0xf5, 0x83, 0x71, 0x61, 0x76, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xb3, 0xba, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xea, 0x79, 0x7d, 0xd8, 0x0d, 0x9e, 0x27, 0x5b, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0xd2, 0xeb, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x55, 0xbd, 0x7e, 0x38, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x04, 0x7b, 0xfd, 0x10, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xd7, 0x5e, 0x3f, 0xc4, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0xbb, 0xd7, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x0f, 0x7c, 0xfd, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xc6, 0xd7, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x99, 0xaf, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x49, 0x5f, 0x3f, 0x58, 0x46, 0x58, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe1, 0xeb, 0xeb, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0xdd, 0xd7, 0x07, 0xc9, 0x40, 0x73, 0xa7, 0x83, 0x63, 0x56, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xc5, 0xaf, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xa0, 0x5f, 0x3f, 0x78, 0x0c, 0x03, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x6d, 0xbf, 0x7e, 0xe8, 0x4f, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xf3, 0xd7, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xf1, 0xaf, 0x0f, 0x92, 0x81, 0xb2, 0x72, 0x70, 0xf6, 0x32, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xfe, 0xd7, 0x0f, 0x47, 0xfb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x0e, 0x60, 0x9f, 0x60, 0xd6, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x66, 0x02, 0xf6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x3c, 0x60, 0x3f, 0xc4, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x14, 0xd8, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x80, 0x06, 0xf6, 0xe1, 0x36, 0x88, 0x11, 0xd4, 0x8f, 0x83, 0xb7, 0x1b, 0x44, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe3, 0x04, 0xfb, 0xe1, 0x68, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcc, 0x82, 0xfd, 0x10, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xc9, 0x60, 0x3f, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x20, 0x07, 0xfb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9e, 0x0f, 0xf6, 0x83, 0x18, 0xbf, 0xf2, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x02, 0x11, 0xf6, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x74, 0x12, 0xf6, 0x83, 0x07, 0x20, 0x44, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x7c, 0xc2, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x60, 0x85, 0x7d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x04, 0x11, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0x48, 0xec, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x95, 0xd8, 0x07, 0xc9, 0x40, 0x90, 0x0e, 0xce, 0x5e, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6e, 0x13, 0xfb, 0xa1, 0x3f, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x84, 0x62, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x33, 0xc5, 0x3e, 0x48, 0x06, 0x64, 0xaf, 0xbf, 0xf7, 0x1d, 0x9c, 0xbd, 0x8c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x42, 0x2b, 0xf6, 0x83, 0x14, 0x4d, 0xe6, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x95, 0xc5, 0x7e, 0x10, 0x3c, 0xdc, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd9, 0x2d, 0xec, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x09, 0xc3, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdf, 0x0c, 0xfb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1a, 0x1b, 0xf6, 0x83, 0xc8, 0x88, 0xfa, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x71, 0xd8, 0x0f, 0xfd, 0xc9, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xed, 0x0e, 0xfb, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9a, 0x0f, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x5d, 0x41, 0xec, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0xb8, 0xd8, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7a, 0x2f, 0xf6, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x35, 0x8c, 0xfd, 0x60, 0x95, 0xfb, 0xff, 0xc2, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xed, 0x19, 0xfb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x36, 0x35, 0xf6, 0x83, 0x48, 0xc3, 0x11, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0xda, 0xd8, 0x0f, 0x42, 0x0a, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xc2, 0xb1, 0x1f, 0xa4, 0x86, 0x21, 0x1c, 0x87, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc9, 0x7b, 0xec, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xe8, 0xc7, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x67, 0x20, 0xfb, 0xa1, 0x3f, 0xf9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x11, 0xb2, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc5, 0x21, 0xfb, 0x06, 0x6b, 0xb4, 0x15, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x4e, 0x64, 0x3f, 0xc4, 0x70, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x19, 0xd9, 0x0f, 0x31, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9e, 0x47, 0xf6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x8f, 0x64, 0x3f, 0xb4, 0x12, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x95, 0x92, 0xfd, 0xb0, 0x57, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0x97, 0xec, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xaa, 0xc9, 0x7e, 0x68, 0x25, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x56, 0x27, 0xfb, 0x21, 0x55, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x31, 0xa0, 0xec, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x2e, 0xca, 0x7e, 0x38, 0xda, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x2d, 0x65, 0x3f, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0x51, 0xd9, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x77, 0x95, 0xfd, 0x70, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe6, 0xca, 0x7e, 0x68, 0x24, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc9, 0xb1, 0xec, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x48, 0xcb, 0x7e, 0x68, 0x25, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd1, 0x2d, 0xfb, 0xa1, 0x93, 0xda, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xba, 0xec, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xcf, 0xcb, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x99, 0xbf, 0xec, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x24, 0xcc, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x9f, 0x98, 0xfd, 0x20, 0x3e, 0x46, 0x43, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xf6, 0x98, 0x7d, 0x98, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0x94, 0xd9, 0x0f, 0x7b, 0x85, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x9a, 0xd9, 0x0f, 0x8a, 0xb0, 0x89, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x80, 0x66, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x64, 0x69, 0xf6, 0x61, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xab, 0x66, 0x3f, 0xa4, 0x6a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xc2, 0x66, 0x3f, 0x28, 0x39, 0x25, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x66, 0x9b, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0xbb, 0xd9, 0x0f, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0xe0, 0xec, 0x07, 0x47, 0x07, 0xee, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x1c, 0x67, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x20, 0x73, 0xf6, 0x43, 0x13, 0xae, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0xd3, 0xd9, 0x0f, 0xce, 0xea, 0xe7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xcf, 0xce, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0xef, 0xec, 0x87, 0x56, 0xe2, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xc9, 0xb3, 0x1f, 0x84, 0x14, 0xf8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xd5, 0xb3, 0x1f, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xc1, 0x67, 0x3f, 0xc4, 0xf0, 0x70, 0x8a, 0x1d, 0x8f, 0x8f, 0xc7, 0x0b, 0x82, 0xc5, 0x0d, 0xde, 0x86, 0xd3, 0x7e, 0x10, 0x00, 0xf7, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0x1a, 0xda, 0x87, 0xdd, 0xa0, 0x39, 0xcb, 0xa6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x7f, 0x68, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x54, 0x89, 0xf6, 0x83, 0x06, 0x32, 0x9b, 0x06, 0xd9, 0x06, 0x31, 0xe7, 0x5d, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xad, 0x18, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x55, 0xb4, 0x1f, 0x3c, 0x7e, 0xd9, 0x68, 0x90, 0x6d, 0x10, 0x73, 0xde, 0x25, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x7b, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xb8, 0xd1, 0x7e, 0xf0, 0xb0, 0x37, 0xa5, 0x61, 0x37, 0x78, 0x8e, 0x67, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x86, 0xb4, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x14, 0x49, 0xfb, 0xc1, 0xf3, 0x48, 0xe3, 0x06, 0xd9, 0x06, 0x11, 0x4b, 0x5e, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0x2a, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x9c, 0xb4, 0x1f, 0x3c, 0x7e, 0xd9, 0x68, 0x90, 0x6d, 0x10, 0xb1, 0xe4, 0x25, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xc1, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xd2, 0xd2, 0x7e, 0xf0, 0xb0, 0x37, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x66, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xbf, 0xa6, 0x7d, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0xf1, 0xe0, 0x6d, 0x38, 0xed, 0x1b, 0x44, 0x0c, 0x7b, 0xc9, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0xc4, 0xa3, 0x7a, 0xc9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xf3, 0xb4, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x9b, 0xd3, 0x7e, 0xf0, 0xf8, 0x65, 0xa3, 0x41, 0xb6, 0x41, 0x3c, 0xaa, 0x97, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x30, 0xd4, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf0, 0x4f, 0xfb, 0xc1, 0xc3, 0xde, 0x94, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa1, 0x51, 0xfb, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0x9f, 0xda, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x4a, 0xaa, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc2, 0xaa, 0xf6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0x58, 0xed, 0x07, 0x69, 0xd7, 0xe8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbd, 0x56, 0xfb, 0xa1, 0x3f, 0xf9, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb6, 0xab, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0xc0, 0xda, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x62, 0xac, 0xfd, 0x20, 0x1d, 0xca, 0x63, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x97, 0xb5, 0x1f, 0x52, 0x07, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x49, 0x6b, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8d, 0xad, 0x7d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc7, 0x5b, 0xfb, 0x41, 0xda, 0x35, 0xfa, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x1d, 0xd7, 0x7e, 0xe8, 0x4f, 0xbe, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xa4, 0x6b, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa6, 0xbb, 0xf6, 0x83, 0x74, 0x28, 0x8f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0xf4, 0xda, 0x0f, 0xca, 0xb8, 0x9d, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xce, 0xd7, 0x7e, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xfd, 0x6b, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x5c, 0xb0, 0x7d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x66, 0x61, 0xfb, 0x41, 0x71, 0x0f, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x21, 0xb6, 0x6f, 0xe8, 0x4f, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc5, 0x62, 0xfb, 0x18, 0x4e, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2e, 0xc7, 0xf6, 0x43, 0xea, 0xe0, 0x38, 0x74, 0x3c, 0x5e, 0x41, 0xb0, 0xc1, 0xb2, 0x30, 0x98, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0xaa, 0xed, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x9b, 0xb6, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2b, 0x6c, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc9, 0xac, 0xed, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xcd, 0xb6, 0x1f, 0xbc, 0x11, 0xa0, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xb2, 0x30, 0x98, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xb6, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xc2, 0xdb, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x38, 0x6e, 0xfb, 0xc1, 0x43, 0x81, 0xad, 0x06, 0xd9, 0x06, 0xd1, 0xf6, 0x60, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8f, 0x70, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0xbe, 0xed, 0x07, 0x31, 0xce, 0xb2, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0xd2, 0x70, 0x83, 0x6c, 0x83, 0xe8, 0x4f, 0x30, 0x19, 0x64, 0x1b, 0x44, 0xac, 0x82, 0xc9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x23, 0xb7, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x52, 0xdc, 0x3e, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xeb, 0x72, 0xfb, 0xc1, 0x8b, 0x42, 0x88, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x34, 0xba, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x36, 0xe7, 0xf6, 0x41, 0xb0, 0x41, 0xfc, 0xa5, 0x69, 0x1c, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0x87, 0xa6, 0x40, 0x83, 0x6c, 0x83, 0xe8, 0x4f, 0x30, 0x19, 0x64, 0x1b, 0x44, 0xac, 0x82, 0xc9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x5e, 0xb7, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x48, 0xdd, 0x3e, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9f, 0x76, 0xfb, 0xc1, 0xb3, 0xf4, 0xc6, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa8, 0xee, 0xf6, 0x83, 0xa5, 0xea, 0x3e, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x02, 0xbc, 0xfd, 0xe0, 0x71, 0xa5, 0x56, 0xc7, 0xa1, 0x43, 0x27, 0xa2, 0x41, 0xb6, 0x41, 0xf4, 0x27, 0x98, 0x0c, 0xb2, 0x0d, 0x22, 0x56, 0xc1, 0x64, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x16, 0xf3, 0xf6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0xc5, 0xdb, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x47, 0x6f, 0x3f, 0x78, 0x96, 0xde, 0xd8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xbc, 0xde, 0x7e, 0xb0, 0x54, 0xdd, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0xba, 0xb7, 0x1f, 0x3c, 0xae, 0xd4, 0xea, 0x38, 0x74, 0xe8, 0x7e, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x8b, 0x07, 0xa5, 0xbc, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9e, 0x3a, 0xf7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xd8, 0x73, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfa, 0xce, 0x7d, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0xfb, 0xdc, 0x0f, 0x96, 0xed, 0x97, 0x0d, 0xb2, 0x0d, 0x62, 0x45, 0xc5, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x09, 0xdd, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x0b, 0x74, 0x1f, 0x7e, 0x43, 0x72, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa8, 0x43, 0xf7, 0x83, 0x65, 0xfb, 0x65, 0x83, 0x6c, 0x83, 0x58, 0x51, 0x31, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe2, 0x46, 0xf7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x14, 0xdd, 0x87, 0xdf, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x10, 0xd2, 0xfd, 0x60, 0xd9, 0x7e, 0xd9, 0x20, 0xdb, 0x20, 0x56, 0x54, 0x4c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xe7, 0xd2, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xac, 0x49, 0xf7, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xcf, 0x74, 0x1f, 0x83, 0x86, 0x38, 0x83, 0x6c, 0x83, 0x58, 0x51, 0x31, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5c, 0x50, 0xf7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x3a, 0xdd, 0x87, 0xdf, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x6e, 0xd4, 0xfd, 0x70, 0xb4, 0x0f, 0xb2, 0x0d, 0x62, 0x45, 0xc5, 0x64, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xee, 0x54, 0xf7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x4c, 0xdd, 0x07, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xf0, 0x50, 0xe6, 0x20, 0xc1, 0x00, 0xe1, 0x38, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x25, 0x76, 0x1f, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xed, 0xd8, 0xfd, 0xe0, 0xbd, 0x19, 0x44, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8b, 0xb2, 0xfb, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x06, 0x0f, 0x37, 0x1c, 0x52, 0x35, 0xc7, 0xa1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x6c, 0x76, 0x3f, 0x38, 0xf7, 0xd1, 0x1e, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x26, 0xed, 0x7e, 0xf0, 0x84, 0x86, 0xae, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0xd6, 0xee, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xfc, 0x76, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb2, 0xdc, 0x7d, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x42, 0x77, 0x1f, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0xd6, 0xdd, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb3, 0xdd, 0x7d, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x13, 0xbc, 0xfb, 0x41, 0x49, 0x17, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0xcc, 0xbb, 0x1f, 0xfa, 0x93, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe4, 0x7a, 0xf7, 0x43, 0xea, 0xe0, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x99, 0xf8, 0xee, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xb4, 0xef, 0x7e, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0xfd, 0xee, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x40, 0xc0, 0xfb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xda, 0x81, 0xf7, 0x83, 0x08, 0x17, 0x0b, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x42, 0x83, 0xf7, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x3d, 0x09, 0xef, 0x07, 0xc5, 0x3d, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xbf, 0xf0, 0x7e, 0xe8, 0x4f, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x1d, 0xde, 0x0f, 0xa9, 0x83, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x7e, 0x38, 0xc5, 0x8e, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x44, 0xf1, 0x3e, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x5b, 0xbc, 0x2f, 0x2e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf7, 0xc6, 0xfb, 0x20, 0xd8, 0xa0, 0x95, 0xeb, 0xf2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x03, 0xaf, 0x8e, 0xec, 0x38, 0xa4, 0x6a, 0x8e, 0x43, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2f, 0xe4, 0x7d, 0x10, 0x6c, 0xd0, 0xca, 0x75, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x44, 0x70, 0xc0, 0xc7, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb3, 0xc9, 0xfb, 0x20, 0xd8, 0xa0, 0x95, 0xeb, 0xf2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x88, 0xe7, 0x03, 0x93, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xb7, 0xf2, 0x3e, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8f, 0xcb, 0xfb, 0x41, 0x0c, 0xba, 0x60, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0x31, 0xef, 0xc3, 0x2f, 0x48, 0x06, 0xde, 0xab, 0x3a, 0x9e, 0x1f, 0x8c, 0x04, 0x9c, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x4d, 0xf3, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xf3, 0xe6, 0xfd, 0xa0, 0xed, 0x85, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xd3, 0x79, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xd2, 0xf3, 0x7e, 0xf0, 0x32, 0x35, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfe, 0xe7, 0x7d, 0x10, 0x6c, 0xd0, 0xca, 0x75, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x68, 0x21, 0xb5, 0x38, 0xa4, 0x6a, 0x8e, 0x43, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x2c, 0xf4, 0x7e, 0x10, 0x8d, 0x6e, 0x26, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xf9, 0xe8, 0x7d, 0x10, 0x6c, 0xd0, 0xca, 0x75, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x44, 0x14, 0xed, 0xc7, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x62, 0xd3, 0xfb, 0xb0, 0x1b, 0x3a, 0x8e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbe, 0xd4, 0xfb, 0xb0, 0x1b, 0x94, 0x53, 0x90, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x5b, 0xf5, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0x58, 0xef, 0x07, 0xe5, 0x1c, 0xe4, 0x20, 0xdb, 0x20, 0x2a, 0xf1, 0x4c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc5, 0xeb, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9c, 0xad, 0xf7, 0x41, 0xb0, 0x41, 0x2b, 0xd7, 0xe5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0x10, 0xa3, 0x7c, 0x1f, 0x87, 0x1e, 0x42, 0xc7, 0xa1, 0x41, 0xb6, 0x41, 0x54, 0xe2, 0x99, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x4b, 0xf6, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x70, 0xd8, 0xfb, 0x20, 0xd8, 0xa0, 0x95, 0xeb, 0xf2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x88, 0x7a, 0xb4, 0x8f, 0x43, 0xc7, 0xb0, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0x68, 0xef, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xb1, 0xf6, 0x7e, 0x50, 0x9c, 0x43, 0x0e, 0xb2, 0x0d, 0xa2, 0x1f, 0xd0, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xe1, 0xde, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x6e, 0x7b, 0x1f, 0x04, 0x1b, 0xb4, 0x72, 0x5d, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xd1, 0x98, 0xf8, 0x71, 0xe8, 0x21, 0x74, 0x1c, 0x1a, 0x64, 0x1b, 0x44, 0x3f, 0xa0, 0xc9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0x77, 0xef, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xd1, 0xbd, 0x1f, 0xc4, 0xd3, 0x9f, 0xc9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x3d, 0x50, 0xef, 0x83, 0x60, 0x83, 0x56, 0xae, 0xcb, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0xc9, 0x97, 0x39, 0xa4, 0x6a, 0x8e, 0x43, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x71, 0xb0, 0x1f, 0xb2, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x84, 0xef, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x04, 0xdf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xf6, 0x7b, 0x3f, 0x68, 0xd6, 0xba, 0x7c, 0x90, 0x6d, 0x10, 0x07, 0x8b, 0x26, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x81, 0xf8, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x37, 0xe1, 0xfb, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0xe1, 0x37, 0x58, 0xcb, 0x27, 0x70, 0xb0, 0x76, 0xf8, 0xe6, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0x10, 0x07, 0x8b, 0x26, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x38, 0xbe, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xaf, 0xf8, 0x3e, 0x08, 0x36, 0x68, 0xe5, 0xba, 0xfc, 0xe0, 0x98, 0xdd, 0x7b, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x70, 0xc9, 0xf7, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0x2b, 0xdf, 0x0f, 0x9a, 0x1d, 0x58, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2c, 0xcc, 0xf7, 0x83, 0xc3, 0xaf, 0xed, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x36, 0x38, 0xb7, 0x39, 0x2f, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xe9, 0x7c, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf2, 0xcf, 0xf7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x2e, 0x7d, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x53, 0xf4, 0x7d, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0x88, 0xd6, 0xf1, 0xf8, 0x20, 0xd9, 0xd0, 0x60, 0x90, 0x6d, 0x10, 0x2b, 0x99, 0x26, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xaf, 0xbe, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x8a, 0xfa, 0x3e, 0x08, 0x36, 0x78, 0x0e, 0xb5, 0xd2, 0xc1, 0x40, 0x2f, 0x1b, 0x64, 0x1b, 0xc4, 0x1c, 0xa6, 0xc9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0xbb, 0xbe, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2f, 0xed, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x81, 0xb1, 0xef, 0x83, 0x60, 0x83, 0x25, 0xaf, 0x51, 0x07, 0x8b, 0xb5, 0x98, 0x06, 0xd9, 0x06, 0x11, 0xf2, 0x69, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xab, 0xee, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x6d, 0xb7, 0xef, 0xc3, 0x2e, 0xf4, 0x60, 0x98, 0x4e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x07, 0xf0, 0xfb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x18, 0xbf, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x2d, 0xfc, 0x3e, 0xec, 0xc2, 0x6d, 0x10, 0x23, 0xa8, 0x1f, 0x87, 0x1e, 0x3b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x8e, 0xfc, 0x3e, 0xec, 0xc2, 0x6d, 0xe8, 0xb1, 0x73, 0x10, 0x23, 0xa8, 0x1f, 0x1b, 0xc4, 0x08, 0xea, 0xc7, 0xe1, 0x14, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x78, 0xf9, 0x7d, 0xd8, 0x85, 0xdb, 0xd0, 0x63, 0xe7, 0x20, 0xa6, 0x57, 0x3f, 0x36, 0x88, 0xe9, 0xd5, 0x8f, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0x0c, 0x52, 0x93, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0xa4, 0xdf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x78, 0x7e, 0x1f, 0x04, 0x1b, 0xac, 0xac, 0x8d, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x06, 0x01, 0x6d, 0x7d, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xac, 0xf7, 0x7d, 0xd8, 0x0d, 0xde, 0x5a, 0xfb, 0x70, 0x68, 0x1c, 0x35, 0xc8, 0x36, 0x88, 0x39, 0x4c, 0x93, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0xb1, 0xdf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xad, 0x7e, 0x3f, 0x88, 0x98, 0x2a, 0x8c, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0x58, 0x9c, 0x0d, 0x5a, 0x05, 0x72, 0x39, 0x18, 0x4c, 0x68, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0xbc, 0xdf, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7f, 0xfc, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5e, 0xf0, 0xf7, 0x83, 0x66, 0xad, 0xcb, 0x07, 0xd9, 0x06, 0xf1, 0x1d, 0x6b, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xaf, 0xf9, 0xfb, 0xb0, 0x1b, 0xc4, 0xd4, 0xbe, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xa5, 0xbf, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0d, 0xfb, 0xfb, 0xb0, 0x0b, 0xb7, 0xa1, 0x91, 0xe0, 0x41, 0xb4, 0xf2, 0x60, 0x1c, 0xc4, 0xcb, 0x0f, 0xc6, 0x20, 0xdb, 0x20, 0x82, 0x6b, 0x4d, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x40, 0xfe, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x86, 0xf7, 0xf7, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0x11, 0x32, 0x96, 0x71, 0xe8, 0x44, 0x34, 0xc8, 0x36, 0x88, 0xe0, 0x5a, 0x93, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xbe, 0x7f, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x9b, 0xfe, 0x7d, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0x81, 0xe6, 0xf6, 0x60, 0x09, 0xff, 0xcf, 0x20, 0xdb, 0x20, 0x82, 0x6b, 0x4d, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xf0, 0x7f, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x63, 0xff, 0x7d, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0xaa, 0x93, 0xb4, 0x83, 0x22, 0x78, 0x70, 0xd8, 0x0d, 0xe2, 0xd4, 0x5f, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x02, 0xe0, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x83, 0x00, 0x7e, 0xd8, 0x85, 0xdb, 0xd0, 0x48, 0xf0, 0x20, 0x8e, 0xdb, 0x2c, 0x0e, 0x22, 0x09, 0xce, 0x62, 0x90, 0x6d, 0x10, 0x8f, 0xc0, 0x26, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x9e, 0x00, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbd, 0x01, 0xfc, 0x41, 0x44, 0xe7, 0x9a, 0x0c, 0xb2, 0x0d, 0xe2, 0x11, 0xd8, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x1f, 0xe0, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x66, 0x80, 0x1f, 0x04, 0x1b, 0xc4, 0x7b, 0xae, 0xc9, 0xc1, 0x12, 0xfe, 0x9f, 0x41, 0xb6, 0x41, 0x3c, 0x02, 0x9b, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x58, 0x01, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa5, 0x04, 0xfc, 0x20, 0xd8, 0x20, 0x36, 0x79, 0x4d, 0x0e, 0x8a, 0xe0, 0xc1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x30, 0xe0, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x64, 0x03, 0x7e, 0xd8, 0x85, 0xdb, 0xd0, 0x48, 0xf0, 0x20, 0x6e, 0x98, 0x30, 0x0e, 0xe2, 0xd6, 0x09, 0x63, 0x90, 0x6d, 0x10, 0xef, 0xc9, 0x26, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x83, 0xc0, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xdf, 0x01, 0x3f, 0x08, 0x36, 0x88, 0xf7, 0x5c, 0x93, 0x43, 0x0b, 0xb0, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x42, 0x12, 0xf8, 0xc5, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x3f, 0x81, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x08, 0x0c, 0xfc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0x71, 0xe0, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x67, 0x82, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xfa, 0x04, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x6e, 0x0a, 0x7e, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8a, 0x15, 0xfc, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x70, 0x2c, 0xf8, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x84, 0x0b, 0x7e, 0x90, 0x0c, 0x58, 0x6b, 0xf7, 0x75, 0x10, 0xf0, 0xfe, 0x07, 0x25, 0x43, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x7b, 0xc1, 0x1f, 0xf6, 0x0a, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x1b, 0x06, 0x7f, 0x48, 0x1d, 0x1c, 0x87, 0x0e, 0x46, 0x9a, 0xd6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x79, 0x64, 0xf0, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xce, 0xe0, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xab, 0xc1, 0x0f, 0xbb, 0x70, 0x1b, 0x44, 0x2b, 0x0f, 0xc6, 0x41, 0x23, 0x2c, 0x00, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x19, 0x07, 0x3f, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xaa, 0x83, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x81, 0x07, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x59, 0x0f, 0x7e, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xf0, 0x83, 0x1f, 0x24, 0x03, 0xfb, 0x5f, 0x07, 0xe3, 0x5d, 0xe7, 0xa0, 0x64, 0x68, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x78, 0x40, 0xf8, 0x83, 0x10, 0x00, 0x3f, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xeb, 0x20, 0xfc, 0x21, 0x55, 0x73, 0x1c, 0x1a, 0x7e, 0x83, 0x06, 0x76, 0xfd, 0x87, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x67, 0x08, 0x3f, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x51, 0x84, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xce, 0x08, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xf3, 0x11, 0x7e, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x97, 0x84, 0x1f, 0x24, 0x03, 0x1a, 0xb5, 0xfb, 0x3a, 0x18, 0x86, 0x3e, 0x07, 0x25, 0x43, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x57, 0xc2, 0x1f, 0xc6, 0xe5, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x7d, 0x98, 0xf0, 0x87, 0xbd, 0xc2, 0xe3, 0xd0, 0xf0, 0x1b, 0x44, 0xe7, 0x54, 0xc8, 0xf0, 0x1b, 0x0c, 0x76, 0x80, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x36, 0xe1, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0x9f, 0xf0, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x43, 0xe1, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x91, 0xc2, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc5, 0xa7, 0xf0, 0x83, 0x64, 0xe0, 0xab, 0xaf, 0x83, 0xe1, 0x1f, 0x7b, 0x50, 0x32, 0x34, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x55, 0xab, 0xf0, 0x87, 0x7c, 0xed, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x70, 0x85, 0x3f, 0x28, 0x0e, 0x35, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x1e, 0x0b, 0x7f, 0x10, 0x98, 0xd8, 0xc7, 0xa1, 0xe1, 0x37, 0x88, 0x01, 0xac, 0x90, 0xe1, 0x37, 0x18, 0xec, 0x00, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0xd5, 0xc2, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x07, 0x2e, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xeb, 0xc2, 0x1f, 0x2c, 0x19, 0x12, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xd3, 0x17, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x82, 0xe1, 0x0f, 0x52, 0x06, 0x03, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x93, 0x18, 0xfe, 0x90, 0xaa, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb8, 0x63, 0xf8, 0x43, 0xea, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1c, 0x65, 0xf8, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0xcd, 0xf0, 0x87, 0xb5, 0xdf, 0x61, 0x17, 0x6e, 0x83, 0xb8, 0x61, 0xc2, 0x38, 0x68, 0x84, 0x05, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0xa5, 0xe1, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0xd6, 0xf0, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0xb2, 0xe1, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x6f, 0xc3, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x2d, 0xdf, 0xf0, 0x07, 0x91, 0x2f, 0x6e, 0x72, 0x50, 0x32, 0x34, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x82, 0x38, 0xfc, 0x41, 0x08, 0x80, 0x1f, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x98, 0x1c, 0xfe, 0x90, 0xaa, 0x39, 0x0e, 0x0d, 0xbf, 0x41, 0x03, 0xbb, 0xfe, 0xc3, 0x6f, 0x30, 0xd8, 0x01, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x3c, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x22, 0x75, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x67, 0x87, 0x3f, 0x38, 0xb1, 0xdc, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xfd, 0x0e, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x89, 0xf2, 0xf0, 0x87, 0x86, 0x3a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xd5, 0xc3, 0x1f, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xc2, 0x87, 0x3f, 0x8c, 0xcb, 0x20, 0x5b, 0x43, 0xfb, 0xf5, 0xe1, 0x36, 0x88, 0xe3, 0x36, 0x8b, 0x83, 0x46, 0x58, 0x00, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xee, 0x87, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x06, 0xc4, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x22, 0x88, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x70, 0x10, 0x3f, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x29, 0xc4, 0x1f, 0x44, 0xbe, 0xb8, 0xc9, 0x41, 0xc9, 0xd0, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x31, 0x0d, 0xf1, 0x07, 0x21, 0x00, 0x7e, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf6, 0x87, 0xf8, 0x43, 0xaa, 0xe6, 0x38, 0x34, 0xfc, 0x06, 0x0d, 0xec, 0xfa, 0x0f, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x56, 0x22, 0x7e, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x67, 0x11, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x26, 0x23, 0x7e, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfb, 0x46, 0xfc, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xf3, 0x11, 0x3f, 0x48, 0x06, 0xf6, 0xbf, 0x0e, 0x86, 0xa1, 0xcf, 0x41, 0xc9, 0xd0, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0x22, 0xf1, 0x87, 0x71, 0x39, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x33, 0x49, 0xfc, 0x61, 0xaf, 0xf0, 0x38, 0x34, 0xfc, 0x06, 0xd1, 0x39, 0x15, 0x32, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xca, 0x93, 0xf8, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd3, 0x4a, 0xfc, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x02, 0x97, 0xf8, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x30, 0xf1, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x01, 0x4d, 0xfc, 0x20, 0x19, 0xd0, 0xa8, 0xdd, 0xd7, 0xc1, 0xf0, 0x8f, 0x3d, 0x28, 0x19, 0x9a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xdc, 0x26, 0xfe, 0x90, 0xaf, 0x3d, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x67, 0x4e, 0xfc, 0x41, 0x60, 0x62, 0x1f, 0x87, 0x86, 0xdf, 0x20, 0x06, 0xb0, 0x42, 0x86, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xc6, 0x13, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x1d, 0x3f, 0xf1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x1d, 0x14, 0x7f, 0xb0, 0x64, 0x48, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x54, 0xa2, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x3b, 0x8a, 0x3f, 0x48, 0x19, 0x0c, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1c, 0xa5, 0xf8, 0x43, 0xaa, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x9a, 0xe2, 0x0f, 0xa9, 0x83, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0xa0, 0xe2, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x4c, 0xc5, 0x1f, 0xd6, 0x7e, 0x0f, 0x46, 0x9a, 0xd6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0x55, 0xf1, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xb2, 0xe2, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x6f, 0xc5, 0x1f, 0x2c, 0xa4, 0x9c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0xbd, 0xe2, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2c, 0x2c, 0xfe, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0xc8, 0xe2, 0x0f, 0xd2, 0x56, 0x48, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb6, 0x59, 0xfc, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc8, 0xb4, 0xf8, 0x41, 0x32, 0xd0, 0xb9, 0xef, 0xe0, 0x9c, 0x77, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0x6c, 0xf1, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0xde, 0xe2, 0x0f, 0xe2, 0xae, 0xdc, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x8e, 0x8b, 0x3f, 0x08, 0xb2, 0xf8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x25, 0x5d, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xdd, 0xc5, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xd0, 0x8b, 0x1f, 0x24, 0x03, 0xdd, 0x9d, 0x0e, 0xce, 0x79, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x38, 0x5f, 0xfc, 0x61, 0x5c, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe5, 0x5f, 0xfc, 0x41, 0x90, 0xc5, 0x1f, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x13, 0x8c, 0x3f, 0x18, 0xac, 0xb1, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xa8, 0x30, 0xfe, 0xb0, 0x57, 0x78, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x40, 0x8c, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x60, 0xc5, 0xf8, 0x43, 0x34, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x6c, 0x8c, 0x3f, 0x8c, 0xcb, 0xf1, 0xf8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2b, 0x64, 0xfc, 0x20, 0xd8, 0x20, 0xfa, 0x61, 0x4d, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xca, 0x8c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd8, 0x33, 0x7e, 0xf8, 0x8d, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x96, 0xc6, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x69, 0x8d, 0x1f, 0x76, 0x83, 0x98, 0xda, 0x17, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xaa, 0xd9, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xb0, 0x8d, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x8c, 0x1b, 0x3f, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0xf0, 0xc6, 0x0f, 0x92, 0x81, 0xfd, 0xaf, 0x43, 0xb6, 0xe2, 0xa0, 0x1c, 0x4a, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x70, 0xdf, 0xf8, 0x43, 0x27, 0xb5, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x09, 0xc7, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x29, 0x8e, 0x1f, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x90, 0xe3, 0x07, 0xc9, 0x80, 0x46, 0xed, 0xbe, 0x0e, 0xd9, 0x8a, 0x83, 0x72, 0x28, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x96, 0xe3, 0x0f, 0x4d, 0xb8, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x3b, 0xc7, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x8c, 0x8e, 0x1f, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0xa9, 0xe3, 0x07, 0xc9, 0xc0, 0x57, 0x5f, 0x87, 0x6c, 0xc5, 0x41, 0x39, 0x94, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc1, 0xd7, 0xf1, 0x07, 0x67, 0xf5, 0xf3, 0xe3, 0xd0, 0xb0, 0x1b, 0x44, 0x37, 0xbf, 0xc8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x78, 0xc7, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x07, 0x8f, 0x1f, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xc8, 0xe3, 0x0f, 0xe2, 0x6e, 0xea, 0xe4, 0xa0, 0x1c, 0x4a, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7e, 0xf3, 0xf8, 0x83, 0xa0, 0xf4, 0x3e, 0x0e, 0x0d, 0xb2, 0x0d, 0x62, 0xce, 0x5f, 0x64, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x56, 0xf6, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x7b, 0x8f, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x22, 0x1f, 0x3f, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xd5, 0xc7, 0x1f, 0xc4, 0xdd, 0xd4, 0xc9, 0x41, 0x39, 0x94, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0xf8, 0xf1, 0x87, 0x4e, 0x6a, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xd8, 0x8f, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xdd, 0x1f, 0x3f, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x04, 0xc8, 0x1f, 0xc4, 0xdd, 0xd4, 0xc9, 0x41, 0x39, 0x94, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0x03, 0xf2, 0x87, 0x26, 0x5c, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0x0d, 0xe4, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x26, 0xc8, 0x0f, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe5, 0x0c, 0xf2, 0x07, 0x51, 0x81, 0x75, 0x72, 0x50, 0x0e, 0x25, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf0, 0x83, 0xfc, 0xc1, 0x59, 0xfd, 0xfc, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xac, 0x84, 0xfc, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x16, 0x0d, 0xf9, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x21, 0xf2, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x21, 0x89, 0xfc, 0x70, 0x1b, 0x44, 0x2b, 0x0f, 0xc6, 0xa1, 0x87, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xb5, 0xc8, 0x0f, 0xbb, 0xc1, 0x02, 0x51, 0xff, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x86, 0x91, 0x3f, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd0, 0x19, 0xf9, 0x61, 0x37, 0x78, 0xe1, 0x59, 0xc4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xe8, 0xc8, 0x0f, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc1, 0x3c, 0xf2, 0xc3, 0x2e, 0xf4, 0x20, 0x69, 0x00, 0x61, 0xe1, 0x36, 0x28, 0xb3, 0x20, 0x27, 0x28, 0xde, 0x87, 0xa3, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x91, 0xe4, 0x0f, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x61, 0x4b, 0xf2, 0x87, 0x56, 0xe2, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xdc, 0xc8, 0x1f, 0xfa, 0x93, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xaa, 0x22, 0x7f, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x4e, 0xf2, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0xa1, 0xe4, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x12, 0x2a, 0xf9, 0x83, 0x68, 0xba, 0x36, 0x39, 0x28, 0x87, 0x92, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x78, 0x2b, 0xf9, 0xe3, 0xd0, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x38, 0x4b, 0xfe, 0xd0, 0x02, 0x68, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xc9, 0x25, 0x7f, 0x88, 0xff, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x03, 0x93, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x32, 0x26, 0x3f, 0x48, 0x06, 0x3a, 0xf7, 0x1d, 0x9c, 0xbd, 0x8c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xbd, 0x4c, 0x7e, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x49, 0x93, 0x1f, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xbd, 0x26, 0x3f, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0xbc, 0xc9, 0x1f, 0x3c, 0xe9, 0x85, 0xe2, 0x60, 0x5d, 0xdb, 0xd8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xc8, 0xc9, 0x1f, 0x52, 0x07, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x59, 0x9d, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xe0, 0xc9, 0x1f, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xd6, 0x93, 0x3f, 0xa4, 0x0e, 0x8e, 0xc7, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x73, 0xb0, 0x90, 0x1b, 0x7e, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x15, 0xa0, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x19, 0xca, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x30, 0x28, 0x7f, 0x10, 0xe7, 0x27, 0x1a, 0x83, 0x6c, 0x83, 0x48, 0x8c, 0x3c, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8d, 0x51, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x92, 0x44, 0xf9, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0xc0, 0xf9, 0xee, 0xeb, 0x78, 0x7c, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x2c, 0x1e, 0x44, 0x71, 0xba, 0xc6, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xee, 0x48, 0xf9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xd5, 0x94, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8d, 0x52, 0x7e, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x3a, 0xe5, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x14, 0x95, 0x3f, 0x1c, 0xed, 0x83, 0x6c, 0x83, 0xd8, 0xbd, 0x3c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf4, 0x55, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x4a, 0xe5, 0x87, 0xdf, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xd2, 0x55, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xee, 0x59, 0xf9, 0xc3, 0xd1, 0x3e, 0xc8, 0x36, 0x88, 0xdd, 0xcb, 0x93, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xe6, 0x95, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd5, 0x56, 0x7e, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x7e, 0xe5, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x25, 0x96, 0x3f, 0x1c, 0xed, 0x83, 0x6c, 0x83, 0xd8, 0xbd, 0x3c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x34, 0x67, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0x8f, 0xe5, 0x87, 0xdf, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x22, 0x5a, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2e, 0x6b, 0xf9, 0xc3, 0xd1, 0x3e, 0xc8, 0x36, 0x88, 0xdd, 0xcb, 0x93, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xfe, 0x96, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x25, 0x5b, 0x7e, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0xc4, 0xe5, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x3e, 0x97, 0x3f, 0x1c, 0xed, 0x83, 0x6c, 0x83, 0xd8, 0xbd, 0x3c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x86, 0x78, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0xd5, 0xe5, 0x87, 0xdf, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x77, 0x5e, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x80, 0x7c, 0xf9, 0xc3, 0xd1, 0x3e, 0xc8, 0x36, 0x88, 0xdd, 0xcb, 0x93, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x11, 0x98, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x79, 0x5f, 0x7e, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x09, 0xe6, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x50, 0x98, 0x3f, 0x1c, 0xed, 0x83, 0x6c, 0x83, 0xd8, 0xbd, 0x3c, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe6, 0x89, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x19, 0xe6, 0x87, 0xdf, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcf, 0x62, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe0, 0x8d, 0xf9, 0xc3, 0xd1, 0x3e, 0xc8, 0x36, 0x88, 0xdd, 0xcb, 0x93, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x22, 0x99, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xd1, 0x63, 0x7e, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x4d, 0xe6, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x61, 0x99, 0x3f, 0x1c, 0xed, 0x83, 0x6c, 0x83, 0xd8, 0xbd, 0x3c, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x79, 0x66, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x84, 0x97, 0xf9, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xb3, 0x99, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x77, 0x67, 0xfe, 0x70, 0xb4, 0x1f, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0x06, 0x05, 0xb4, 0xe0, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x72, 0xa0, 0xf9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x37, 0x9a, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x74, 0x68, 0x7e, 0x10, 0x6c, 0x10, 0xdf, 0xf6, 0x19, 0x87, 0x34, 0xdc, 0x20, 0xdb, 0x20, 0xd6, 0x7a, 0x4f, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xa0, 0x69, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xde, 0xa4, 0xf9, 0x83, 0x18, 0xac, 0xb4, 0x18, 0x64, 0x1b, 0xc4, 0x5a, 0xef, 0xc9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x4c, 0xcd, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xfe, 0x34, 0x7f, 0xf0, 0x92, 0x70, 0xae, 0x41, 0xb6, 0x41, 0xac, 0xf5, 0x9e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x53, 0xd6, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0x56, 0xf3, 0x83, 0x60, 0x83, 0x88, 0xf5, 0xcf, 0x38, 0x58, 0xc2, 0xff, 0x33, 0xc8, 0x36, 0x88, 0xb5, 0xde, 0x93, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0xbe, 0xe6, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xe1, 0x9a, 0x1f, 0x04, 0x1b, 0xbc, 0x29, 0x5c, 0xe8, 0xa0, 0x08, 0x1e, 0x3c, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x34, 0x36, 0x3f, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x97, 0xcd, 0x2f, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x97, 0x36, 0xbf, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x68, 0xdb, 0xfc, 0xe2, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x93, 0x9b, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5a, 0xbc, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0xea, 0xe6, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xf8, 0xee, 0x1c, 0x0c, 0x47, 0xe9, 0x83, 0x55, 0x00, 0x59, 0x83, 0x6c, 0x83, 0x18, 0x69, 0x3e, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5c, 0xbf, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0xf6, 0xe6, 0x07, 0xc1, 0x06, 0x31, 0xf4, 0x7c, 0x72, 0xb0, 0x58, 0x97, 0x69, 0x90, 0x6d, 0x10, 0x23, 0xcd, 0x27, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x13, 0xce, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x17, 0x38, 0x3f, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe1, 0xe1, 0xfc, 0x20, 0x19, 0x68, 0xd3, 0x77, 0x30, 0x1c, 0xa5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x22, 0xc5, 0xf9, 0x41, 0xb0, 0x41, 0x0c, 0x3d, 0x9f, 0x1c, 0x2c, 0x4c, 0xfe, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x68, 0x9c, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5c, 0xc9, 0xf9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x1f, 0xe7, 0x07, 0xc1, 0x06, 0x31, 0xf4, 0x7c, 0x72, 0x10, 0xd5, 0xb2, 0x22, 0x83, 0x6c, 0x83, 0x98, 0xcc, 0x3e, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x0f, 0x73, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc2, 0xca, 0xf9, 0x41, 0xb0, 0x41, 0x0c, 0x3d, 0x9f, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x92, 0x2f, 0x73, 0xc8, 0xd7, 0x1e, 0x87, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x0b, 0xb0, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf1, 0xf8, 0x78, 0x7c, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xa9, 0x73, 0x7e, 0x10, 0x6c, 0xf0, 0x40, 0xed, 0x85, 0xc5, 0x41, 0xb0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x8e, 0xce, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x06, 0x3a, 0x3f, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0xf8, 0x85, 0xdf, 0xf8, 0x76, 0x7c, 0x3b, 0xbe, 0x1d, 0xd2, 0x70, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0xad, 0xce, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x80, 0x3a, 0x3f, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x89, 0xeb, 0xfc, 0x41, 0xb3, 0x03, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x0d, 0x3b, 0x7f, 0x10, 0xcf, 0x4a, 0x18, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb9, 0xdb, 0xa2, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x87, 0x8b, 0x1e, 0xac, 0xe2, 0xdf, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x38, 0x72, 0xd1, 0x41, 0xb0, 0x41, 0x3b, 0x23, 0xf7, 0x07, 0xef, 0x0a, 0xb7, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x14, 0x05, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x00, 0x15, 0xec, 0xe2, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3b, 0x16, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x7b, 0xc1, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb8, 0x05, 0x3b, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x63, 0x18, 0xec, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8a, 0x0c, 0xf6, 0xe0, 0x69, 0xfa, 0x3d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x88, 0x2c, 0xf9, 0x93, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xd4, 0x60, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x39, 0x83, 0x3d, 0x78, 0x32, 0x89, 0xc7, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0xe2, 0x06, 0x45, 0xb5, 0xe0, 0x06, 0x01, 0x70, 0x7f, 0xf0, 0xea, 0xbd, 0xb7, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x79, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xd1, 0xc1, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfd, 0x1e, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x0d, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xea, 0x07, 0x7b, 0xf0, 0x88, 0x70, 0xa1, 0x41, 0xb6, 0x41, 0xe4, 0xf5, 0x9f, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xcf, 0x22, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x86, 0xb0, 0x83, 0x60, 0x83, 0x37, 0x85, 0x0b, 0x1d, 0x24, 0x97, 0x0f, 0x0c, 0xb2, 0x0d, 0x22, 0xaf, 0xff, 0x64, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0x25, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x70, 0x84, 0x1d, 0x04, 0x1b, 0xbc, 0xea, 0x54, 0xe9, 0xe0, 0x69, 0x54, 0x69, 0x83, 0x6c, 0x83, 0xc8, 0xeb, 0x3f, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x3c, 0x13, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xce, 0x4a, 0xd8, 0x41, 0xb0, 0xc1, 0x73, 0x58, 0x84, 0x0e, 0x96, 0xaf, 0x12, 0x0d, 0xb2, 0x0d, 0xa2, 0x81, 0xff, 0x64, 0x90, 0x6d, 0x10, 0xc1, 0xfc, 0x27, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xcb, 0x09, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x7d, 0xa5, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x7d, 0xc2, 0x0e, 0x82, 0x0d, 0x1e, 0xa9, 0x66, 0x76, 0xb0, 0x58, 0x8b, 0x69, 0x90, 0x6d, 0x10, 0x15, 0x08, 0x28, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xee, 0x0a, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x35, 0x2a, 0xec, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0x25, 0x39, 0x34, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x61, 0xb5, 0x72, 0x1c, 0x1a, 0x64, 0x1b, 0x44, 0x05, 0x02, 0xca, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x4d, 0xb8, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xc8, 0xc2, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb1, 0x0b, 0x7b, 0xf0, 0xaa, 0x26, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xbc, 0x17, 0xf6, 0x60, 0xa9, 0xba, 0xcf, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x05, 0x86, 0x3d, 0x68, 0x87, 0x85, 0xe9, 0x38, 0x74, 0x10, 0x99, 0xac, 0x26, 0x83, 0x6c, 0x83, 0x68, 0xe0, 0x3f, 0x19, 0x64, 0x1b, 0x44, 0x30, 0xff, 0xc9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x99, 0xc3, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xc5, 0x0c, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x90, 0x31, 0xec, 0xc1, 0xdb, 0xd4, 0x7b, 0x06, 0xd9, 0x06, 0xd1, 0x53, 0x81, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x61, 0xd4, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x3c, 0xc3, 0x0e, 0x82, 0x0d, 0x1e, 0xb6, 0xd7, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x0d, 0x7f, 0x1b, 0x07, 0x61, 0x4f, 0x7d, 0x1c, 0x1a, 0x64, 0x1b, 0x44, 0x4f, 0x05, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x74, 0xc3, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x73, 0x0d, 0x7b, 0xf0, 0x80, 0x7f, 0xb0, 0x41, 0xb6, 0x41, 0xf4, 0x54, 0xa0, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x5c, 0x0e, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfc, 0x37, 0xec, 0x20, 0xd8, 0xe0, 0xbd, 0xd3, 0x6f, 0x07, 0x8d, 0x4e, 0x28, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x57, 0x10, 0x2c, 0x6e, 0xd0, 0xb6, 0x63, 0xd3, 0xe1, 0x14, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xbe, 0x0f, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x84, 0x3b, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd1, 0xea, 0xb0, 0xc3, 0x2e, 0xdc, 0xe2, 0xc1, 0x9b, 0x07, 0x62, 0x0f, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4c, 0x7f, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x0a, 0x88, 0x1d, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x20, 0x66, 0x45, 0x50, 0x36, 0x88, 0x59, 0x11, 0x94, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0xa5, 0x11, 0x94, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x40, 0x88, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xa2, 0x20, 0x76, 0x10, 0x6c, 0xd0, 0x58, 0xcb, 0xfd, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0x20, 0x96, 0x46, 0x50, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x75, 0x88, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x76, 0x21, 0x76, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb8, 0x88, 0xd8, 0x83, 0x57, 0x35, 0x09, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0x14, 0xb1, 0x07, 0x4b, 0xd5, 0x7d, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc2, 0x45, 0xec, 0x41, 0xc9, 0xd0, 0x74, 0x1c, 0x3a, 0xb4, 0x00, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x3f, 0x23, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x39, 0x62, 0x0f, 0xda, 0x86, 0x6c, 0x1a, 0x64, 0x1b, 0xc4, 0x9d, 0x0b, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x89, 0xc4, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xf8, 0x11, 0x3b, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x51, 0x49, 0xec, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x01, 0x25, 0xf6, 0xa0, 0x64, 0x68, 0x3a, 0x0e, 0x1d, 0x9a, 0x02, 0x0d, 0xb2, 0x0d, 0xe2, 0xce, 0x05, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf4, 0x96, 0xd8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x55, 0x62, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x85, 0x89, 0x3d, 0x78, 0x55, 0x93, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x38, 0x13, 0x7b, 0xf0, 0xae, 0xd5, 0xa1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xb2, 0x89, 0x3d, 0x38, 0xf7, 0xd1, 0x1e, 0x87, 0x0e, 0x2d, 0xc0, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0xf0, 0xc4, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xec, 0x13, 0x7b, 0xf0, 0x12, 0x8d, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x31, 0x28, 0xf6, 0xe0, 0xfd, 0xe9, 0x42, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8d, 0x28, 0xf6, 0xe0, 0xf5, 0x30, 0x44, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x0a, 0x82, 0xc5, 0x0d, 0x9e, 0x26, 0xa6, 0xb2, 0xc1, 0x43, 0x39, 0xae, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xcd, 0x14, 0x3b, 0xec, 0x06, 0x0f, 0xda, 0x1a, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc0, 0xa7, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x9a, 0x8a, 0x3d, 0x78, 0x69, 0xd8, 0xd0, 0x20, 0xdb, 0x20, 0x76, 0x89, 0x50, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xca, 0x8a, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc2, 0x2a, 0xf6, 0x30, 0x2e, 0xc3, 0x6e, 0xf0, 0x76, 0x8b, 0xb7, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xe1, 0x8a, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6c, 0xaf, 0xd8, 0x83, 0xc8, 0x97, 0xd2, 0x18, 0x64, 0x1b, 0xc4, 0x30, 0x12, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x96, 0xc5, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x27, 0x16, 0x7b, 0x68, 0x24, 0x38, 0xc8, 0x36, 0x88, 0x61, 0x24, 0x94, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0xd7, 0x62, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x42, 0x8b, 0x3d, 0x08, 0x4a, 0xef, 0x61, 0x37, 0x58, 0x62, 0x69, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x61, 0x6e, 0xb1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x22, 0x17, 0x7b, 0xb0, 0x68, 0xd3, 0x6a, 0x90, 0x6d, 0x10, 0xdd, 0x4e, 0x28, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xe0, 0xc5, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x4e, 0x17, 0x3b, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc0, 0x5e, 0xec, 0xc1, 0xfb, 0x11, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb9, 0x2f, 0xf6, 0xe0, 0x2d, 0x05, 0x44, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x61, 0x37, 0x78, 0xf3, 0xd4, 0xdb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x02, 0xc6, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xea, 0x61, 0xec, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xef, 0x9f, 0x7a, 0xdb, 0xe0, 0xfd, 0x53, 0x6f, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0x11, 0x56, 0x28, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x2d, 0xc6, 0x1e, 0x0c, 0xcd, 0xdf, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x1c, 0x63, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x19, 0x32, 0x76, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x87, 0x81, 0xcf, 0x6c, 0xf0, 0x30, 0xf0, 0x99, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0xef, 0x2c, 0x94, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x2d, 0x63, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x9c, 0x8c, 0x3d, 0x88, 0x48, 0x06, 0x92, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x71, 0x30, 0xd8, 0xa0, 0x05, 0x19, 0xe6, 0x99, 0xd9, 0xe0, 0x45, 0x4c, 0x47, 0x33, 0x33, 0x1b, 0xac, 0xe6, 0x38, 0xda, 0xe0, 0x41, 0xe9, 0x1b, 0xb3, 0x41, 0x1c, 0x7f, 0xa0, 0x1c, 0x04, 0xc0, 0xfd, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4a, 0xce, 0xd8, 0x61, 0x17, 0x6e, 0x83, 0x22, 0xd3, 0xe7, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xfb, 0x8c, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0e, 0xd1, 0xd8, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x8a, 0x4c, 0x9f, 0x0d, 0x8a, 0x4c, 0x9f, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0x31, 0x31, 0x94, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0x4a, 0x63, 0x0f, 0x22, 0x50, 0x45, 0x63, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x8c, 0xd4, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x5e, 0x8d, 0x1d, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x20, 0x51, 0xee, 0x63, 0x83, 0x44, 0xb9, 0x8f, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0x15, 0x33, 0x94, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x5e, 0x63, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x1d, 0x34, 0xa1, 0xc0, 0x74, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd5, 0x36, 0x76, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xe0, 0x8d, 0x5d, 0x5c, 0x10, 0x2c, 0x1e, 0x3c, 0xdb, 0xfb, 0x6d, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x78, 0x71, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x09, 0xc1, 0xb1, 0xc3, 0x2e, 0xdc, 0x06, 0x6f, 0x44, 0xb9, 0x3a, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x91, 0x63, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x6a, 0x39, 0xf6, 0xe0, 0xe5, 0x27, 0x57, 0x83, 0x6c, 0x83, 0x78, 0x78, 0x43, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xbc, 0xe8, 0xd8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x9c, 0x63, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xa2, 0x8e, 0x3d, 0x68, 0x76, 0x60, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0xae, 0x63, 0x0f, 0xde, 0xc8, 0xa6, 0x73, 0x1c, 0x3a, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0xc4, 0xc3, 0x1b, 0xca, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xdd, 0xb1, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x67, 0xc7, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x03, 0x65, 0xe9, 0x90, 0xad, 0x38, 0xb4, 0x00, 0x1b, 0x76, 0x83, 0x67, 0x71, 0x5c, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x04, 0x78, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x8b, 0xc7, 0x0e, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0xf0, 0x44, 0x8e, 0xab, 0x0d, 0x9e, 0xc8, 0x71, 0x75, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x91, 0x91, 0x87, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0xe8, 0xb1, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x96, 0xc7, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xbb, 0x1e, 0x7b, 0xd0, 0xec, 0xc0, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xb9, 0xc7, 0x1e, 0xbc, 0x91, 0x4d, 0xe7, 0x38, 0x74, 0x68, 0x0a, 0x34, 0xc8, 0x36, 0x88, 0x8c, 0x3c, 0x94, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0xe9, 0x63, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x8a, 0x8f, 0x1d, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xed, 0x3e, 0xf6, 0xa0, 0xed, 0x85, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xd1, 0x8f, 0x3d, 0x88, 0x5f, 0x13, 0x8c, 0xe3, 0xd0, 0xa1, 0x05, 0xd8, 0xb0, 0x1b, 0xbc, 0xa1, 0xe2, 0x6a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xfa, 0x63, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xfc, 0x3f, 0x76, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xf7, 0x54, 0x5c, 0x6d, 0xf0, 0x9e, 0x8a, 0xab, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0x1f, 0x43, 0x94, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x0b, 0x64, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x15, 0x90, 0x1d, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x0f, 0x41, 0xf6, 0xa0, 0xed, 0x85, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x5a, 0x90, 0x1d, 0x24, 0x1b, 0xbc, 0x54, 0xc2, 0xe3, 0x60, 0x18, 0xfa, 0x1c, 0x87, 0x0e, 0x1d, 0x34, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x71, 0x90, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x76, 0x08, 0xd9, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x5e, 0xb9, 0x70, 0xb5, 0xc1, 0x2b, 0x17, 0xae, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0x66, 0x1c, 0x51, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xb5, 0x90, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x78, 0x42, 0x76, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc2, 0x0c, 0xd9, 0x83, 0xb6, 0x17, 0xfa, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x89, 0x43, 0xf6, 0x20, 0x52, 0x1a, 0x51, 0x8e, 0x43, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x41, 0x2c, 0x0c, 0xa1, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x31, 0x91, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x29, 0x44, 0x76, 0xd8, 0x0d, 0x5e, 0xb6, 0x70, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd9, 0x28, 0xb2, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xb9, 0x22, 0x7b, 0x10, 0x81, 0x8f, 0x28, 0x83, 0x6c, 0x83, 0x68, 0xc4, 0x44, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x2c, 0x46, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x36, 0x17, 0xd9, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x68, 0x64, 0x0f, 0xda, 0x5e, 0xe8, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7a, 0x1b, 0xd9, 0x83, 0x48, 0x69, 0x44, 0x39, 0x0e, 0x1d, 0x3a, 0x68, 0x0c, 0xbb, 0xc1, 0x1b, 0x2a, 0xae, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x3c, 0x47, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x79, 0x64, 0x0f, 0xa2, 0xf1, 0x10, 0x65, 0x90, 0x6d, 0x10, 0xc7, 0x9f, 0x28, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x09, 0xc9, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xf7, 0x23, 0x3b, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4d, 0x91, 0xec, 0x41, 0xdb, 0x0b, 0xfd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x7f, 0x24, 0x7b, 0x10, 0x29, 0x8d, 0x28, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x61, 0x37, 0x88, 0x35, 0x37, 0x94, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x57, 0x92, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd0, 0x26, 0xd9, 0x83, 0x97, 0x9f, 0x5c, 0x0d, 0xb2, 0x0d, 0x62, 0xe0, 0x14, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe0, 0x29, 0xd9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0xa0, 0x64, 0x07, 0xc1, 0x06, 0x51, 0x7b, 0x87, 0x72, 0xe8, 0xa0, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa9, 0x95, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x65, 0xc9, 0x1e, 0xc4, 0x99, 0x1e, 0xca, 0x20, 0xdb, 0x20, 0x32, 0x56, 0x51, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xe1, 0x92, 0x3d, 0x18, 0x9a, 0xbf, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x6f, 0xf1, 0x7e, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x63, 0x26, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x56, 0x98, 0xec, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0x68, 0xb2, 0x07, 0xc7, 0x85, 0xf3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x87, 0x4d, 0xf6, 0x60, 0x84, 0x44, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x86, 0x37, 0xd9, 0x83, 0x92, 0xa1, 0xe9, 0x38, 0x74, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x2c, 0x6e, 0xf0, 0xb6, 0x83, 0xa0, 0x83, 0x00, 0xb8, 0x5f, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x88, 0x27, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xec, 0x9c, 0xec, 0xb0, 0x1b, 0xc4, 0xf0, 0x9e, 0xc5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xed, 0xc9, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7f, 0x9f, 0xec, 0x41, 0xd4, 0xf6, 0x59, 0x0c, 0xb2, 0x0d, 0x22, 0xfa, 0x16, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x01, 0x65, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xdb, 0x50, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xca, 0x41, 0xd9, 0x83, 0xc8, 0xd5, 0xc2, 0x18, 0x64, 0x1b, 0xc4, 0x7b, 0x2e, 0xca, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x8c, 0xb2, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x26, 0xca, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x24, 0x1b, 0xac, 0xb9, 0x40, 0x3a, 0x18, 0x86, 0x3e, 0x07, 0xeb, 0xc6, 0x98, 0x06, 0xd9, 0x06, 0x11, 0x7d, 0x8b, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc0, 0xa4, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0x8f, 0xb2, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0xde, 0x9b, 0x16, 0x70, 0x68, 0x01, 0x36, 0xec, 0xc2, 0x6d, 0xf0, 0x40, 0xb7, 0x92, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xcc, 0x52, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x32, 0x65, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0xa0, 0x5b, 0xc9, 0x06, 0x0f, 0x74, 0x2b, 0x39, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x38, 0x15, 0x46, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x7e, 0x53, 0x76, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0x83, 0xd7, 0xe0, 0x0e, 0x1d, 0x34, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0x67, 0x92, 0xca, 0x1e, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x65, 0x9f, 0xb2, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x21, 0x2a, 0x3b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0x94, 0x1c, 0xa3, 0x6c, 0x10, 0x25, 0xc7, 0x28, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0xbd, 0xc7, 0x28, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xa4, 0xca, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x5d, 0x2a, 0x3b, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0x20, 0x52, 0x1a, 0x51, 0x0e, 0x1d, 0x34, 0x86, 0xdd, 0xe0, 0x29, 0x48, 0x6f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xbf, 0x2a, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xad, 0xae, 0xb2, 0x07, 0x4f, 0x29, 0xc2, 0x1a, 0x64, 0x1b, 0x44, 0x51, 0x33, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0xd3, 0xca, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x18, 0x2b, 0x3b, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x6c, 0xff, 0x1d, 0x04, 0x39, 0xff, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0x20, 0x8a, 0x9a, 0x51, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xdb, 0x95, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x04, 0x57, 0x76, 0x10, 0x6c, 0x10, 0xb7, 0x38, 0x18, 0x87, 0x16, 0x60, 0xc3, 0x6e, 0xf0, 0x88, 0x9e, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xf2, 0x95, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x82, 0x60, 0xd9, 0x83, 0x57, 0x3f, 0x47, 0x0d, 0xb2, 0x0d, 0x62, 0x94, 0x1a, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x8e, 0x65, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x1e, 0x96, 0x1d, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x48, 0x06, 0x45, 0x87, 0x6c, 0xc5, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0x20, 0x46, 0xa9, 0x51, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x6a, 0x96, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x40, 0x59, 0x76, 0x10, 0x6c, 0x10, 0xc9, 0xd0, 0x28, 0x87, 0x16, 0x60, 0xc3, 0x2e, 0xdc, 0xe2, 0xc1, 0xbb, 0xaa, 0x65, 0x0f, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x14, 0x68, 0xd9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x97, 0x96, 0x1d, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x20, 0x26, 0xb7, 0x51, 0x36, 0x88, 0xc9, 0x6d, 0x94, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0x15, 0x6e, 0x94, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xcf, 0x96, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd4, 0x5a, 0xf6, 0x20, 0x12, 0xb0, 0x51, 0x06, 0xd9, 0x06, 0xb1, 0xc2, 0x8d, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x02, 0xb8, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc5, 0xdc, 0xb2, 0x07, 0xd1, 0xac, 0x8d, 0x32, 0xec, 0xc2, 0x2d, 0x1e, 0xb4, 0x60, 0xca, 0x75, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x8b, 0xcb, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6a, 0xb9, 0xec, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xb1, 0x2e, 0x8e, 0xb2, 0x41, 0xac, 0x8b, 0xa3, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x04, 0x8e, 0xa3, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x24, 0xbb, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0xe9, 0xb2, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x40, 0xad, 0x3a, 0x9e, 0x1f, 0x9a, 0x02, 0x0d, 0xb2, 0x0d, 0x22, 0x70, 0x1c, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0xe6, 0x65, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x7f, 0x97, 0x1d, 0x04, 0x1b, 0xc4, 0x53, 0x0a, 0xc6, 0xa1, 0x13, 0xd1, 0x20, 0xdb, 0x20, 0x02, 0xc7, 0x51, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xca, 0x97, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xbf, 0x5e, 0x76, 0x10, 0x6c, 0x10, 0xb7, 0x38, 0x18, 0x87, 0xee, 0x47, 0xc3, 0x2e, 0xdc, 0x06, 0x4f, 0x58, 0x7a, 0x38, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0xf8, 0x65, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xdc, 0x5f, 0x76, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x27, 0x2c, 0x3d, 0x6c, 0xf0, 0x84, 0xa5, 0x87, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0x17, 0x77, 0x94, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x0a, 0x66, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x10, 0x98, 0x1d, 0x04, 0x1b, 0x44, 0xf4, 0x39, 0xca, 0xa1, 0x83, 0xc6, 0xb0, 0x0b, 0xb7, 0x78, 0x50, 0x4c, 0xf4, 0x1d, 0xa2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x45, 0x08, 0xb3, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xaf, 0x30, 0x3b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0x7c, 0xcc, 0xa3, 0x6c, 0x10, 0x1f, 0xf3, 0x28, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0xad, 0xf3, 0x28, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x47, 0xcc, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe8, 0x30, 0x7b, 0x10, 0x59, 0xf2, 0x28, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x52, 0xcc, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdd, 0xc5, 0xec, 0x41, 0xcc, 0x3b, 0x90, 0x0c, 0xb2, 0x0d, 0x22, 0x08, 0x1f, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x3d, 0x66, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xd8, 0x98, 0x3d, 0x18, 0x5e, 0xbc, 0x83, 0x6c, 0x83, 0x08, 0xc2, 0x47, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2f, 0x64, 0x76, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xf0, 0x1b, 0xa4, 0xe1, 0xc0, 0x1f, 0xc4, 0xf7, 0x9f, 0xc6, 0xa1, 0x05, 0xd8, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x31, 0x99, 0x1d, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa4, 0x94, 0xd9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0x58, 0x66, 0x07, 0xc1, 0x06, 0x31, 0xaf, 0x7f, 0xb2, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x19, 0x33, 0xb3, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xc5, 0x99, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x6f, 0x67, 0x76, 0xf8, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xf8, 0xcc, 0x0e, 0x92, 0x81, 0xb3, 0xea, 0xe0, 0xec, 0x65, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x05, 0xcd, 0x1e, 0xb4, 0x57, 0x26, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x88, 0x66, 0x87, 0xdf, 0x90, 0x5c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xe2, 0x68, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf0, 0xa4, 0xd9, 0x43, 0x72, 0xe9, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0xbe, 0x1d, 0x8f, 0x57, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x96, 0xa7, 0xd9, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9a, 0xd6, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x2d, 0x5d, 0xb3, 0xc3, 0x2f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfe, 0x6b, 0xf6, 0x20, 0x4e, 0x0a, 0x52, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x62, 0xb1, 0xd9, 0x83, 0xf6, 0xca, 0x44, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x68, 0xd9, 0xec, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0xa1, 0xcd, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xb3, 0x36, 0x7b, 0x48, 0x2e, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0xc7, 0xb7, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xbc, 0xcd, 0x0e, 0x82, 0xc5, 0x39, 0x78, 0xf5, 0x92, 0xdb, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0x7a, 0xb3, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0xf5, 0xcd, 0x0e, 0xbf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x06, 0xc0, 0xd9, 0x83, 0x38, 0x29, 0x48, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x05, 0x67, 0x0f, 0xda, 0x2b, 0x13, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x85, 0xb3, 0xc3, 0x6f, 0x48, 0x2e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x88, 0x38, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd4, 0xe2, 0xec, 0x21, 0xb9, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0xdf, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x3c, 0xce, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x1e, 0x39, 0x3b, 0xfc, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x29, 0x67, 0x07, 0xc9, 0xc0, 0x59, 0x75, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0x2f, 0x67, 0x0f, 0xd2, 0xbf, 0x14, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x97, 0xe6, 0xec, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x74, 0xce, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xff, 0x39, 0x7b, 0x3c, 0x3e, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x8e, 0x6f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x44, 0x3a, 0x3b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xee, 0xd4, 0xd9, 0x43, 0x0c, 0x8f, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xbe, 0x3b, 0x3b, 0x08, 0x16, 0xe7, 0x20, 0x16, 0x86, 0x50, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x3d, 0x9e, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x4d, 0x79, 0x76, 0xf8, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x34, 0xcf, 0x1e, 0xc4, 0x49, 0x41, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x00, 0x3d, 0x7b, 0xd0, 0x5e, 0x99, 0xc8, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x96, 0x9e, 0x1d, 0x7e, 0x43, 0x72, 0x69, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd0, 0xea, 0xd9, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0xb0, 0x67, 0x0f, 0xc9, 0xa5, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xf8, 0x76, 0x3c, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3c, 0xee, 0xd9, 0x41, 0xb0, 0x41, 0x83, 0x5c, 0x2e, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x9e, 0xcf, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xa8, 0x3e, 0x3b, 0xfc, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xda, 0x67, 0x0f, 0xe2, 0xa4, 0x20, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x80, 0x9f, 0x3d, 0x68, 0xaf, 0x4c, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xcb, 0xcf, 0x0e, 0xbf, 0x21, 0xb9, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6e, 0xfd, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x89, 0xf8, 0xb3, 0x87, 0xe4, 0xd2, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x7c, 0x3b, 0x1e, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x37, 0xff, 0xec, 0x20, 0xd8, 0x60, 0x35, 0xc7, 0xd1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x99, 0x06, 0xb4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x25, 0xd0, 0x0e, 0xbf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x10, 0x06, 0xda, 0x83, 0x38, 0x29, 0x48, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x1d, 0x68, 0x0f, 0xda, 0x2b, 0x13, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd1, 0x11, 0xb4, 0xc3, 0x6f, 0x48, 0x2e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x49, 0x41, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd9, 0x05, 0xed, 0x21, 0xb9, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0xdf, 0x8e, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xb8, 0x41, 0x3b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x94, 0x10, 0xda, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x47, 0x68, 0x87, 0x5f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xac, 0x09, 0xed, 0x41, 0x9c, 0x14, 0xa4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0x29, 0xb4, 0x07, 0xed, 0x95, 0x89, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x30, 0x16, 0xda, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x79, 0xa1, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x3e, 0x86, 0xf6, 0x90, 0x5c, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x8e, 0x6f, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0x6c, 0x68, 0x0f, 0x56, 0x73, 0x1c, 0x1d, 0x8f, 0x0f, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x93, 0x0f, 0xed, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0x41, 0xb4, 0x83, 0x64, 0xe0, 0xac, 0x3a, 0x18, 0xfe, 0xb1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfb, 0x10, 0xed, 0xc1, 0x69, 0x05, 0x77, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x1b, 0xd1, 0x1e, 0x9c, 0x98, 0x7d, 0x8f, 0x43, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb0, 0xb8, 0xc1, 0x63, 0x19, 0x69, 0x0f, 0x1e, 0x01, 0xe6, 0xb1, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x1b, 0x8a, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x00, 0x26, 0xda, 0x61, 0x17, 0x6e, 0x83, 0xf8, 0x27, 0xb4, 0x38, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0xa7, 0x68, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc9, 0x8a, 0xf6, 0x20, 0x56, 0x09, 0x2d, 0x06, 0xd9, 0x06, 0xf1, 0x6c, 0x95, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x16, 0x17, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0x59, 0xb4, 0x07, 0x11, 0x93, 0x82, 0x31, 0xec, 0xc2, 0x2d, 0x1e, 0xbc, 0x8c, 0x8c, 0xf6, 0x10, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xf9, 0xa2, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf4, 0x30, 0xda, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x62, 0x55, 0x2b, 0x65, 0x83, 0x58, 0xd5, 0x4a, 0x39, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x18, 0xda, 0x4a, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb4, 0x34, 0xda, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0xcc, 0x68, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x01, 0x81, 0xbe, 0x74, 0xc8, 0x56, 0x1c, 0x9a, 0x02, 0x0d, 0xb2, 0x0d, 0x62, 0x68, 0x2b, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc0, 0x37, 0xda, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xd8, 0x68, 0x0f, 0x22, 0xa6, 0x0a, 0x63, 0xd8, 0x85, 0x5b, 0x3c, 0x78, 0xe2, 0x1d, 0xed, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x25, 0x47, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0x75, 0xb4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x44, 0xb3, 0x58, 0xca, 0x06, 0xd1, 0x2c, 0x96, 0x72, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x51, 0x36, 0x96, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3d, 0x1e, 0xed, 0xc1, 0xd0, 0xfc, 0x1d, 0x76, 0x83, 0x78, 0x6d, 0xb3, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xde, 0x3d, 0xda, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xf3, 0xa3, 0x3d, 0x88, 0xd6, 0x37, 0x8b, 0x41, 0xb6, 0x41, 0x6c, 0x9e, 0xa5, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x49, 0x48, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x53, 0x20, 0xed, 0x41, 0x94, 0xa9, 0xa2, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x77, 0x48, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x8a, 0xb4, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x8e, 0x07, 0x8f, 0x65, 0xa4, 0xdd, 0x20, 0x0e, 0xda, 0x52, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0xca, 0xd6, 0x52, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x32, 0x92, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2e, 0x47, 0xda, 0x83, 0xa8, 0xfb, 0x4a, 0x19, 0x64, 0x1b, 0x44, 0xd9, 0x5a, 0xca, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x97, 0xb4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x51, 0xd2, 0x1e, 0xc4, 0xe5, 0x1d, 0xca, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x51, 0x6e, 0xec, 0xc1, 0x89, 0xd9, 0x77, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd2, 0x4e, 0xda, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x60, 0xfb, 0xef, 0x90, 0xad, 0x38, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x2d, 0x4a, 0x3b, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa7, 0x29, 0xed, 0xc1, 0xab, 0x9a, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb0, 0x54, 0xda, 0x83, 0xc7, 0x95, 0x5a, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1e, 0x56, 0xda, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x09, 0xaf, 0xb4, 0x07, 0x2f, 0xd1, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x63, 0x69, 0x0f, 0x5e, 0x1d, 0x2e, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x69, 0x69, 0x0f, 0x96, 0xaa, 0xfb, 0x1c, 0x87, 0x8e, 0x43, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xcf, 0xa5, 0x1d, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd6, 0x97, 0xf6, 0xe0, 0x8d, 0x00, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5e, 0x69, 0xc7, 0xb1, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x2d, 0x98, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x8e, 0x69, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x21, 0xa6, 0x1d, 0x04, 0x1b, 0x3c, 0x79, 0x04, 0xe9, 0x90, 0x86, 0x1b, 0x64, 0x1b, 0xc4, 0xd9, 0x60, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x38, 0xd3, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xac, 0x4c, 0x3b, 0x08, 0x36, 0x78, 0xef, 0xf4, 0xdb, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0x20, 0xce, 0x06, 0x53, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xa2, 0xa6, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x1e, 0x9a, 0x76, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0x2b, 0xb4, 0x12, 0x0e, 0x2d, 0xc0, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x62, 0xe2, 0xa1, 0x63, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6d, 0x36, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x79, 0xdc, 0xb4, 0x07, 0x71, 0x04, 0xd1, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe5, 0xe5, 0xb4, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xe4, 0x4e, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x20, 0x3a, 0xed, 0xc1, 0xcb, 0x95, 0x8b, 0x06, 0xd9, 0x06, 0xd1, 0xf2, 0x98, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0xf5, 0xb4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xc4, 0xd3, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x8b, 0x4f, 0x7b, 0xf0, 0xaa, 0x26, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x6f, 0x9f, 0xf6, 0xe0, 0x71, 0xa5, 0x56, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcb, 0x9f, 0x76, 0x90, 0x0c, 0x18, 0xef, 0x4b, 0x87, 0x15, 0xda, 0xe3, 0xd0, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0x20, 0x5a, 0x1e, 0x53, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x31, 0xa8, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x27, 0xa0, 0x76, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7c, 0x84, 0xda, 0x83, 0x57, 0x35, 0x09, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb9, 0x0b, 0xb5, 0x07, 0xd1, 0x73, 0x99, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0x1d, 0x6a, 0x0f, 0x1e, 0x57, 0x6a, 0x75, 0x1c, 0x3a, 0xb4, 0x00, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x3d, 0x51, 0x3b, 0x08, 0x36, 0x78, 0xd5, 0xa9, 0xd2, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x41, 0x8c, 0x58, 0xa2, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xe0, 0xa8, 0x1d, 0x76, 0xe1, 0x16, 0x0f, 0x1e, 0x3f, 0x52, 0x7b, 0x88, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x7a, 0xd4, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5d, 0x48, 0xed, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x91, 0x23, 0x9a, 0xb2, 0x41, 0xe4, 0x88, 0xa6, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x44, 0x8b, 0xa6, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3d, 0x4a, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x25, 0xb5, 0x07, 0x2f, 0x1a, 0x79, 0x1a, 0x64, 0x1b, 0x44, 0xb4, 0x68, 0xca, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd9, 0x2e, 0xb5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xaf, 0xd4, 0x0e, 0x82, 0x0d, 0x5e, 0xdd, 0x73, 0x75, 0x68, 0x01, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6d, 0x4c, 0xed, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0xe1, 0x37, 0x78, 0x85, 0x56, 0xc2, 0xc1, 0x48, 0xc0, 0x39, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0xaf, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xbc, 0xa9, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc2, 0x9e, 0xda, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0x74, 0x6a, 0x0f, 0x5e, 0xae, 0x5c, 0x34, 0xc8, 0x36, 0x88, 0x41, 0xd6, 0x94, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x1c, 0xaa, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x09, 0xa8, 0xf6, 0xe0, 0x25, 0x7b, 0x3d, 0x83, 0x6c, 0x83, 0x18, 0x64, 0x4d, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x32, 0xa9, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2c, 0xa3, 0xda, 0x83, 0xe7, 0x41, 0x95, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x3c, 0x7a, 0x61, 0x69, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9d, 0x53, 0xed, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x09, 0x54, 0xb5, 0x83, 0x64, 0xa0, 0x54, 0x1d, 0x0c, 0x43, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xda, 0xaa, 0xf6, 0x60, 0x20, 0x41, 0x2d, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0xb3, 0x6a, 0x0f, 0x1e, 0xe8, 0x3e, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xf5, 0x1f, 0x63, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1e, 0x57, 0xed, 0xc1, 0x6b, 0xd5, 0xae, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x87, 0xd5, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x7b, 0x56, 0x7b, 0xf0, 0xaa, 0x26, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x79, 0x6a, 0xb5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x08, 0x57, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4e, 0x5b, 0xed, 0x20, 0xd8, 0x20, 0xd6, 0xef, 0x2c, 0x0e, 0x69, 0xb8, 0x41, 0xb6, 0x41, 0xf4, 0x00, 0xa7, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa8, 0x5d, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x5d, 0x73, 0xb5, 0x07, 0x8f, 0x5f, 0x36, 0x1a, 0x64, 0x1b, 0x44, 0x0f, 0x70, 0xca, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb5, 0x7c, 0xb5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xe5, 0xd5, 0x1e, 0xbc, 0x7e, 0xc1, 0xeb, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x05, 0x6b, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xfc, 0xab, 0x3d, 0x78, 0xfb, 0xc0, 0xcf, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x2c, 0x6e, 0xd0, 0x82, 0x0c, 0xf3, 0xcc, 0x6c, 0xf0, 0x22, 0xa6, 0xa3, 0x99, 0x99, 0x0d, 0x56, 0x73, 0x1c, 0x6d, 0xf0, 0xa0, 0xf4, 0x8d, 0x83, 0x00, 0xb8, 0x5f, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x7a, 0x58, 0x3b, 0xec, 0x06, 0x0f, 0x1c, 0x0e, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x30, 0xc5, 0xda, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x68, 0xac, 0x1d, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xb1, 0xc3, 0x41, 0x1b, 0x3c, 0x76, 0x38, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x62, 0xb5, 0x39, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9c, 0xc9, 0xda, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x1f, 0x6b, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xb0, 0xac, 0x3d, 0x78, 0x55, 0x93, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x8c, 0x59, 0x7b, 0x10, 0xe3, 0x74, 0x29, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x74, 0xb3, 0xf6, 0xe0, 0x69, 0xfa, 0x3d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x81, 0x9e, 0xb5, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x11, 0x5a, 0x7b, 0xf0, 0xec, 0xbb, 0xae, 0x41, 0xb6, 0x41, 0xf4, 0x5c, 0xa7, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x18, 0x6a, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0xa3, 0xb5, 0x07, 0xb1, 0xc6, 0xb8, 0x31, 0xc8, 0x36, 0x88, 0x9e, 0xeb, 0x94, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x7a, 0xad, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x67, 0xb5, 0x76, 0x10, 0x6c, 0xf0, 0xb0, 0xbd, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x4b, 0x03, 0x68, 0x0e, 0x8d, 0x8b, 0x8e, 0x43, 0x83, 0x6c, 0x83, 0xe8, 0xb9, 0x4e, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x14, 0xdb, 0xda, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x64, 0x6b, 0x07, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0xc2, 0x9e, 0xfa, 0x38, 0x34, 0xc8, 0x36, 0x88, 0x9e, 0xeb, 0x94, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xe3, 0xad, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x1b, 0xb7, 0x76, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x19, 0xd8, 0xbd, 0x3b, 0x1e, 0x1f, 0xbc, 0xe7, 0x30, 0x63, 0x90, 0x6d, 0x10, 0x3d, 0xd7, 0x29, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x30, 0x5c, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf1, 0x6f, 0xed, 0x20, 0xd8, 0x20, 0x5a, 0x19, 0x50, 0x0e, 0x1e, 0xe2, 0x99, 0x31, 0xc8, 0x36, 0x88, 0x9e, 0xeb, 0x94, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x48, 0xae, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xbb, 0xb8, 0x76, 0x10, 0x6c, 0xf0, 0x48, 0x35, 0xb3, 0x83, 0x87, 0xd2, 0x66, 0x0c, 0xb2, 0x0d, 0xa2, 0xe7, 0x3a, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x9e, 0x6b, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x5f, 0xae, 0x1d, 0x04, 0x1b, 0xbc, 0xe5, 0x6c, 0xe3, 0xe0, 0xdd, 0x85, 0x4c, 0x83, 0x6c, 0x83, 0xe8, 0xb9, 0x4e, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xea, 0xea, 0xda, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0xa5, 0x6b, 0x87, 0x5d, 0xb8, 0x0d, 0x31, 0x9c, 0x20, 0xfd, 0x7b, 0x68, 0x1c, 0x35, 0xc8, 0x36, 0x88, 0x9e, 0xeb, 0x94, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xde, 0xae, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x12, 0xbb, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0xbd, 0x6b, 0x87, 0x5d, 0xb8, 0x25, 0x68, 0xfe, 0x7b, 0x38, 0xda, 0x0f, 0x6d, 0x1e, 0x07, 0xd9, 0x06, 0x31, 0xea, 0x9e, 0x32, 0xc8, 0x36, 0x88, 0xab, 0xf7, 0x94, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0xc2, 0x6b, 0x07, 0xc1, 0x06, 0xaf, 0x95, 0x31, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x4e, 0xf0, 0xfd, 0xf7, 0x71, 0x68, 0x90, 0x6d, 0x10, 0x3d, 0xd7, 0x29, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x77, 0x5e, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0c, 0x79, 0xed, 0x20, 0xd8, 0xe0, 0xbd, 0xd3, 0x6f, 0x07, 0x31, 0x36, 0xbd, 0x31, 0xc8, 0x36, 0x88, 0x9e, 0xeb, 0x94, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x6e, 0xaf, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x49, 0xbd, 0x76, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4a, 0xf8, 0xda, 0x83, 0x57, 0x35, 0x09, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x5d, 0xf3, 0xb5, 0x07, 0x8f, 0x2b, 0xb5, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0xf6, 0xb5, 0x07, 0xef, 0x81, 0x45, 0x3a, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x27, 0x10, 0xfc, 0xdf, 0xc7, 0xa1, 0x41, 0xb6, 0x41, 0xf4, 0x5c, 0xa7, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x17, 0x7f, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x1d, 0xf9, 0xb5, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xfc, 0xd7, 0x1e, 0xbc, 0xaa, 0x49, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x0f, 0xb0, 0x3d, 0x88, 0x71, 0xba, 0x94, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x4c, 0x60, 0x7b, 0x50, 0x32, 0x34, 0x1d, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x13, 0x18, 0xfe, 0xdf, 0xc7, 0xa1, 0x41, 0xb6, 0x41, 0xf4, 0x5c, 0xa7, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xae, 0x60, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe9, 0x81, 0xed, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xad, 0x0d, 0xb6, 0x07, 0xcf, 0xd2, 0x1b, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0x21, 0x6c, 0x87, 0xdf, 0xe0, 0x5d, 0x05, 0x44, 0x07, 0xf1, 0xfd, 0xa7, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x26, 0x6c, 0x0f, 0xe2, 0x05, 0xcf, 0xe2, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0xc0, 0xf8, 0xff, 0x3e, 0x0e, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x57, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xc3, 0xb0, 0x1d, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xca, 0xc3, 0xf6, 0xe0, 0x25, 0x1a, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x45, 0x88, 0xed, 0xc1, 0xab, 0xc3, 0x85, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfb, 0x88, 0xed, 0xc1, 0xeb, 0x61, 0x88, 0x8e, 0x43, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0xf1, 0x3d, 0x95, 0xb2, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x19, 0xc5, 0x76, 0xd8, 0x85, 0x5b, 0x3c, 0x78, 0x2a, 0x8c, 0xed, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xb7, 0x62, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x2d, 0x2e, 0xb6, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x44, 0xd7, 0x84, 0xca, 0x06, 0xd1, 0x35, 0xa1, 0x72, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x51, 0x3f, 0xa1, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xad, 0x35, 0xb6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xc9, 0xd8, 0x1e, 0xbc, 0x68, 0xe4, 0x69, 0x90, 0x6d, 0x10, 0xf5, 0x13, 0x2a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xee, 0xd8, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x88, 0x63, 0x7b, 0x10, 0x17, 0xa9, 0x29, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xf9, 0xd8, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x7e, 0x83, 0x57, 0x68, 0x25, 0x1c, 0x24, 0xb5, 0x1f, 0x1c, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0x06, 0x8f, 0x5e, 0x58, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x7d, 0x64, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd1, 0x51, 0xb6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x29, 0xd9, 0x1e, 0xbc, 0x5c, 0xb9, 0x68, 0x90, 0x6d, 0x10, 0x65, 0x1d, 0x2a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x8e, 0x65, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x26, 0x95, 0xed, 0x20, 0xd8, 0xe0, 0x61, 0x7b, 0x3d, 0x07, 0x4f, 0x22, 0xbe, 0x19, 0x64, 0x1b, 0x44, 0x59, 0x87, 0xca, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x71, 0x62, 0xb6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x6e, 0xd9, 0x1e, 0x44, 0xa8, 0xc8, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xcf, 0x6c, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x53, 0xb3, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xd2, 0x66, 0x7b, 0x90, 0x22, 0xe3, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xc1, 0xd9, 0x1e, 0xc4, 0xf5, 0x9e, 0xc8, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x9a, 0xb3, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x60, 0x67, 0x7b, 0xf0, 0x12, 0x8d, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x19, 0xcf, 0x76, 0x10, 0x6c, 0x90, 0xfa, 0x8f, 0xb1, 0x38, 0x08, 0x36, 0x78, 0xad, 0xda, 0xd5, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xee, 0xd9, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xf2, 0xb3, 0x3d, 0x78, 0x6f, 0x06, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x13, 0x68, 0x7b, 0xf0, 0xee, 0x9e, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x48, 0x68, 0x3b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0xf0, 0x0a, 0xfb, 0xa3, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc2, 0x43, 0xdb, 0x83, 0x84, 0x7d, 0xe6, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x78, 0x10, 0xe9, 0x5e, 0x28, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0x23, 0x6d, 0x87, 0xdd, 0xe0, 0x81, 0xc3, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x46, 0x69, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb5, 0x9a, 0xb6, 0x07, 0x91, 0xef, 0x9c, 0x32, 0xc8, 0x36, 0x88, 0xea, 0x1b, 0x95, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x06, 0xb5, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb1, 0xd3, 0x76, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xcc, 0x51, 0xdb, 0x83, 0x57, 0x35, 0x09, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x61, 0xa6, 0xb6, 0x07, 0x31, 0x4e, 0x97, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x52, 0x6d, 0x0f, 0x9e, 0xa6, 0xdf, 0x73, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x9a, 0x02, 0x0d, 0xb2, 0x0d, 0xa2, 0xfa, 0x46, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xae, 0x57, 0xdb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x58, 0x6d, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x91, 0xb5, 0x3d, 0x78, 0x55, 0x93, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x4f, 0x6b, 0x3b, 0x48, 0x06, 0x6a, 0xd5, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xdf, 0xda, 0x1e, 0x9c, 0xc2, 0x70, 0x8f, 0x43, 0x87, 0x16, 0x60, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xeb, 0xda, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5e, 0xaf, 0xed, 0xc1, 0xb3, 0xef, 0xba, 0x06, 0xd9, 0x06, 0x11, 0x71, 0xa4, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x95, 0xc3, 0xb6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x01, 0xdb, 0x1e, 0xc4, 0x1a, 0xe3, 0xc6, 0x20, 0xdb, 0x20, 0x22, 0x8e, 0x54, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x36, 0xd9, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x38, 0x63, 0xdb, 0x83, 0xe8, 0xe5, 0x4e, 0x19, 0x64, 0x1b, 0x44, 0xc4, 0x91, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x3f, 0xdb, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xc8, 0x6c, 0x7b, 0x10, 0xe5, 0xdf, 0x29, 0x83, 0x6c, 0x83, 0x88, 0x38, 0x52, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xde, 0x6a, 0xdb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0xa4, 0x6d, 0x0f, 0xa2, 0x61, 0x3c, 0x65, 0x90, 0x6d, 0x10, 0x11, 0x47, 0x2a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xbd, 0x6d, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x25, 0xb6, 0xed, 0x41, 0xbc, 0x97, 0xa7, 0x0c, 0xb2, 0x0d, 0x22, 0xe2, 0x48, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0xc3, 0x6d, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xf5, 0xb6, 0x3d, 0x88, 0x36, 0xf4, 0x94, 0x41, 0xb6, 0x41, 0x44, 0x1c, 0xa9, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x04, 0xba, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xcd, 0xe4, 0xb6, 0x07, 0x91, 0xae, 0x9e, 0x32, 0xc8, 0x36, 0x88, 0x88, 0x23, 0x95, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x71, 0xb7, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x5d, 0xdd, 0xf6, 0x20, 0xca, 0xda, 0x53, 0x06, 0xd9, 0x06, 0x11, 0x71, 0xa4, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x31, 0xf4, 0xb6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xc3, 0xdb, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbb, 0xbd, 0xed, 0x41, 0x94, 0xc2, 0xa7, 0x0c, 0xb2, 0x0d, 0xa2, 0x3f, 0x4b, 0x65, 0x90, 0x6d, 0x10, 0xb1, 0x5a, 0x2a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xe6, 0xdb, 0x1e, 0x44, 0xb9, 0x7c, 0xca, 0x20, 0xdb, 0x20, 0x22, 0x8e, 0x54, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfa, 0xdf, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x46, 0x7e, 0xdb, 0x83, 0x78, 0xae, 0x4f, 0x19, 0x64, 0x1b, 0x44, 0xc4, 0x91, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x17, 0xdc, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x2a, 0x70, 0x3b, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2e, 0xc2, 0xed, 0xc1, 0xab, 0x9a, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc0, 0x85, 0xdb, 0x83, 0xc7, 0x95, 0x5a, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2e, 0x87, 0xdb, 0x83, 0xf7, 0xc0, 0x22, 0x1d, 0x87, 0x0e, 0xe2, 0x94, 0x3f, 0x65, 0x90, 0x6d, 0x10, 0x11, 0x47, 0x2a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x48, 0x71, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x51, 0xc4, 0xed, 0x20, 0xd8, 0xe0, 0x55, 0x8a, 0x43, 0x07, 0x51, 0x38, 0xa0, 0x32, 0xc8, 0x36, 0x88, 0x88, 0x23, 0x95, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xd5, 0xb8, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xec, 0xe2, 0x76, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb6, 0x8e, 0xdb, 0x83, 0x67, 0xe9, 0x8d, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x20, 0xb7, 0x07, 0x51, 0x8d, 0xa0, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x46, 0x6e, 0x0f, 0xe2, 0x05, 0xcf, 0xe2, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0x40, 0xf1, 0xff, 0x7d, 0x1c, 0x1a, 0x64, 0x1b, 0x44, 0xc4, 0x91, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xa5, 0xdc, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x61, 0x72, 0x3b, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x07, 0xcb, 0xed, 0xc1, 0xb3, 0xf4, 0xc6, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7c, 0x97, 0xdb, 0x83, 0xa8, 0x46, 0x50, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x31, 0xb7, 0x07, 0xf1, 0x82, 0x67, 0x71, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x4e, 0xe0, 0xf8, 0xff, 0x7d, 0x1c, 0x1a, 0x64, 0x1b, 0x44, 0xc4, 0x91, 0xca, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0x38, 0xb7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xd3, 0xdc, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xac, 0x73, 0x7b, 0xf0, 0x2c, 0xbd, 0xb1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb5, 0xe7, 0xf6, 0x20, 0x36, 0x8a, 0x54, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0x81, 0x6e, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x68, 0xe8, 0xf6, 0xe0, 0x81, 0x1c, 0x48, 0x83, 0x6c, 0x83, 0x78, 0xe5, 0x53, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc2, 0xe8, 0x76, 0x10, 0x6c, 0xf0, 0xaa, 0x9e, 0xa1, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0x81, 0xf3, 0xff, 0xf7, 0x71, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x08, 0x36, 0x78, 0xaf, 0x8d, 0xcf, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe4, 0xac, 0xdb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x9d, 0x6e, 0x87, 0xdd, 0xe0, 0x05, 0xbf, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xc8, 0x75, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x62, 0xb7, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0xe6, 0x37, 0x68, 0x83, 0xd7, 0xfc, 0x06, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x94, 0x0f, 0xaa, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x94, 0x76, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8c, 0xd9, 0xed, 0x61, 0x5c, 0x86, 0xdd, 0xe0, 0x25, 0xb9, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xc1, 0x76, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x25, 0x72, 0xb7, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0x37, 0xc1, 0x64, 0x83, 0xf7, 0x26, 0x98, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0xd4, 0x22, 0xaa, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfb, 0xdd, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0x74, 0xb7, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0x80, 0xe1, 0xdf, 0x77, 0x3c, 0x3f, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0x44, 0x2d, 0xa2, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0xf9, 0xdd, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xb5, 0x77, 0x3b, 0x08, 0x36, 0x78, 0xd5, 0xa9, 0xd2, 0xa1, 0x13, 0xd1, 0x20, 0xdb, 0x20, 0x6a, 0x11, 0x55, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x20, 0xbc, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x23, 0xf0, 0x76, 0x10, 0x6c, 0xf0, 0x4a, 0xb7, 0x8d, 0x43, 0xf7, 0xa3, 0x61, 0x37, 0x78, 0xa1, 0x6d, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x1d, 0xde, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x79, 0xe3, 0xed, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xaf, 0xb5, 0x0d, 0xda, 0xe0, 0xb5, 0xb6, 0x41, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0x31, 0x93, 0x2a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x53, 0xde, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x17, 0x79, 0x7b, 0x10, 0xbd, 0x26, 0x23, 0xc3, 0x6e, 0xf0, 0xe0, 0xd9, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xbd, 0xbc, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb4, 0xce, 0xdb, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x1e, 0x3f, 0x1b, 0xb4, 0xc1, 0xe3, 0x67, 0x83, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0x46, 0x30, 0x55, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8a, 0xf4, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x84, 0xd0, 0xdb, 0x83, 0xc7, 0x1e, 0x15, 0x0d, 0xb2, 0x0d, 0x62, 0x04, 0x53, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3a, 0xd5, 0xdb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x4e, 0x6f, 0x0f, 0x9e, 0x0d, 0x0c, 0x36, 0xec, 0x06, 0xaf, 0xdd, 0x0d, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xac, 0xd6, 0xdb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x97, 0xbd, 0x1d, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xe5, 0xbb, 0x41, 0x1b, 0xbc, 0x7c, 0x37, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x62, 0xe5, 0x53, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe4, 0xdc, 0xdb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0x6d, 0x6f, 0x0f, 0xde, 0x38, 0x82, 0x34, 0xec, 0x06, 0xcf, 0x71, 0x07, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x56, 0xde, 0xdb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x0e, 0xbe, 0x3d, 0x88, 0x57, 0x39, 0x92, 0x41, 0xb6, 0x41, 0x6c, 0x90, 0xaa, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x85, 0x7c, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x42, 0xf1, 0xed, 0xc1, 0x03, 0x98, 0x94, 0x86, 0xdd, 0xe0, 0x81, 0xc3, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xbc, 0x7c, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xd1, 0xb7, 0x07, 0x91, 0xef, 0x9c, 0x32, 0xc8, 0x36, 0x88, 0x22, 0x54, 0x95, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xae, 0x6f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x9f, 0xbe, 0x3d, 0x78, 0xe3, 0x08, 0xd2, 0xb0, 0x1b, 0x3c, 0x39, 0x38, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xb4, 0x6f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x0b, 0xfc, 0x76, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xe7, 0x07, 0x07, 0x6d, 0xf0, 0xfc, 0xe0, 0xa0, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0x37, 0x56, 0x95, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x3a, 0xbf, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7f, 0xfc, 0x76, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x06, 0xf5, 0xdb, 0x83, 0xf7, 0x23, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x35, 0xfb, 0xed, 0xc1, 0x40, 0x82, 0x3a, 0x0e, 0x1d, 0x9a, 0x02, 0x0d, 0xb2, 0x0d, 0xe2, 0x8d, 0x55, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x82, 0xf9, 0xdb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0xdf, 0x6f, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xae, 0xbf, 0x3d, 0x78, 0x3f, 0x42, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xe2, 0xdf, 0x1e, 0xbc, 0x3a, 0x5c, 0xe8, 0x38, 0x74, 0x68, 0x01, 0x36, 0xec, 0x06, 0x6f, 0xeb, 0x0d, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc8, 0xfd, 0xdb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x0b, 0xc0, 0x1d, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x9d, 0xbd, 0x41, 0x1b, 0xbc, 0xb3, 0x37, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x62, 0x31, 0x57, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x10, 0x70, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x28, 0xc0, 0x1d, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x65, 0x01, 0xf7, 0xe0, 0xfd, 0x08, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xdf, 0x80, 0x7b, 0x30, 0x90, 0xa0, 0x8e, 0x43, 0x87, 0xa6, 0x40, 0x83, 0x6c, 0x83, 0x58, 0xcc, 0x55, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x82, 0x02, 0x77, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6a, 0x08, 0xdc, 0x83, 0xa7, 0xfb, 0xb8, 0x0d, 0xbb, 0xc1, 0xc3, 0xee, 0x81, 0x16, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xec, 0x81, 0x7b, 0xf0, 0x74, 0x20, 0x9f, 0x83, 0xa7, 0xf3, 0x41, 0x0d, 0xbb, 0xc1, 0x7b, 0x77, 0x30, 0x16, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x85, 0x82, 0x7b, 0xf0, 0x74, 0x20, 0x9f, 0x83, 0x87, 0x23, 0xf9, 0x0c, 0xbb, 0xc1, 0xc3, 0x95, 0x7c, 0x16, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x1e, 0x83, 0x7b, 0xf0, 0x74, 0x20, 0x9f, 0x83, 0x77, 0x3d, 0xf9, 0x0c, 0xbb, 0xc1, 0x7b, 0xd3, 0x81, 0x16, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xd7, 0x83, 0x7b, 0xf0, 0x74, 0x20, 0x9f, 0x83, 0x77, 0x82, 0x49, 0x0d, 0xbb, 0xc1, 0x73, 0x34, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x0a, 0x08, 0x77, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0x8b, 0x70, 0x0f, 0x9e, 0x18, 0xe6, 0x35, 0xc8, 0x36, 0x88, 0x4b, 0x65, 0x95, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x97, 0x70, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x45, 0xc2, 0x1d, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd7, 0x09, 0xf7, 0xe0, 0x8d, 0x00, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x17, 0x85, 0x7b, 0xb0, 0xb0, 0xc2, 0xec, 0x38, 0x74, 0xe8, 0xa0, 0x31, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x38, 0x15, 0xee, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x67, 0xe1, 0x1e, 0xc4, 0xfd, 0x0f, 0xc9, 0x20, 0xdb, 0x20, 0xd2, 0xa2, 0x55, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x08, 0xc3, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb1, 0x0b, 0x77, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf0, 0x31, 0xdc, 0x83, 0x37, 0x02, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa8, 0x19, 0xee, 0xc1, 0x40, 0x82, 0x3a, 0x0e, 0x1d, 0x3a, 0x68, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x5f, 0xc3, 0x1d, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xf9, 0x0d, 0xf7, 0xe0, 0x55, 0x4d, 0x42, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0xe5, 0x70, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x12, 0x0f, 0x77, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa6, 0x3a, 0xdc, 0x83, 0xf8, 0x11, 0x4e, 0x19, 0x64, 0x1b, 0xc4, 0x0f, 0xb7, 0xca, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xfa, 0xe1, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xb7, 0x87, 0x7b, 0xf0, 0xf8, 0x65, 0xa3, 0x41, 0xb6, 0x41, 0xfc, 0x70, 0xab, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x4c, 0x88, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x63, 0x20, 0xee, 0xc1, 0xeb, 0x17, 0xbc, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0x0f, 0x71, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc0, 0x11, 0x77, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x36, 0x45, 0xdc, 0x83, 0xa7, 0xfe, 0x63, 0x0d, 0xb2, 0x0d, 0xe2, 0x79, 0x5c, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfc, 0x49, 0xdc, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x21, 0x71, 0x0f, 0x9e, 0x89, 0x2f, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xf1, 0x4f, 0x39, 0x08, 0x36, 0x74, 0xc1, 0x59, 0x1c, 0x04, 0x1b, 0x14, 0xd0, 0x82, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0x08, 0x2a, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x46, 0xa1, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x68, 0x83, 0xca, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x19, 0x2a, 0x0f, 0x1e, 0xca, 0x33, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x3e, 0x54, 0x1e, 0xa2, 0x39, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe5, 0x12, 0x95, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x58, 0x51, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x28, 0x46, 0xe5, 0xa1, 0x93, 0xda, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0x1b, 0x95, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x7d, 0x54, 0x1e, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x1b, 0x44, 0x13, 0xbc, 0xca, 0x82, 0x6c, 0x83, 0xc8, 0x8d, 0x57, 0x19, 0x64, 0x1b, 0x44, 0x41, 0xbc, 0xca, 0x20, 0xd8, 0xb0, 0xf6, 0x7b, 0x48, 0xc3, 0x0d, 0xb2, 0x0d, 0xa2, 0x09, 0x5e, 0x65, 0x90, 0x6d, 0x10, 0x51, 0xf3, 0x2a, 0x83, 0x6c, 0x83, 0xe8, 0x94, 0x57, 0x19, 0x04, 0x1b, 0xb4, 0x72, 0x5d, 0x7e, 0xb0, 0x1e, 0x5d, 0xeb, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0xf1, 0xae, 0xae, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x45, 0x25, 0x95, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x88, 0x54, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x7e, 0x52, 0x79, 0xf0, 0x3e, 0x5b, 0x9f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x54, 0xa9, 0x3c, 0x44, 0xf3, 0x38, 0x74, 0x68, 0x0a, 0x34, 0xc8, 0x36, 0x88, 0x77, 0x75, 0x95, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x81, 0xa9, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xa4, 0xa5, 0x72, 0x10, 0x6c, 0xd0, 0xca, 0x75, 0xf9, 0xc1, 0x8a, 0x86, 0xac, 0x41, 0xb6, 0x41, 0xbc, 0xab, 0xab, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa6, 0x4d, 0xe5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0x32, 0x95, 0xc3, 0x6f, 0x48, 0x2e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x95, 0x53, 0x39, 0x06, 0x09, 0x80, 0x41, 0xb6, 0x41, 0xbc, 0xab, 0xab, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xfa, 0x53, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x30, 0x4f, 0xe5, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x09, 0x55, 0x1e, 0x8e, 0xf6, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf1, 0x78, 0x05, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3a, 0xef, 0xfc, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0xbf, 0xf3, 0x07, 0x8d, 0x24, 0xd9, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x55, 0xc2, 0xf3, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x20, 0xcf, 0x1f, 0xbc, 0xef, 0x87, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x95, 0xe7, 0x07, 0xc9, 0x80, 0xc0, 0xbf, 0x3b, 0x1e, 0x1f, 0x87, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb5, 0x79, 0x7e, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x19, 0xf4, 0xfc, 0x41, 0x23, 0x49, 0xf6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc6, 0xf4, 0xfc, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe8, 0xea, 0xf9, 0x83, 0xf7, 0xfd, 0x70, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x22, 0xf6, 0xfc, 0x41, 0x3b, 0x2c, 0x4c, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xb5, 0x3d, 0x3f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc3, 0x7b, 0xfe, 0xe0, 0x7d, 0x3f, 0x1c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x0d, 0x3e, 0x7f, 0xd0, 0x0e, 0x0b, 0xd3, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0xaf, 0x20, 0x58, 0x3c, 0x78, 0xe0, 0x2b, 0xcf, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2a, 0x25, 0xcd, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x7e, 0x34, 0x87, 0xdd, 0xe0, 0x65, 0x86, 0x41, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x9c, 0xd2, 0x3c, 0x78, 0x8b, 0x62, 0xd0, 0xb0, 0x0b, 0xb7, 0xc1, 0x2b, 0x0d, 0x83, 0x0e, 0x42, 0x0a, 0xfc, 0x60, 0x2c, 0x8c, 0x0e, 0xbb, 0xc1, 0x3b, 0xe5, 0x82, 0x16, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xcd, 0xa5, 0x79, 0xf0, 0x16, 0xc5, 0xa0, 0x61, 0x17, 0x6e, 0x83, 0x37, 0xcb, 0x05, 0x1d, 0x84, 0x14, 0xf8, 0xc1, 0x58, 0x18, 0x1d, 0x76, 0x83, 0xe7, 0xa8, 0x04, 0x2d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xac, 0x4c, 0xf3, 0xe0, 0x45, 0x4f, 0x41, 0xc3, 0x2e, 0xdc, 0x06, 0x4f, 0x53, 0x09, 0x3a, 0x08, 0x29, 0xf0, 0x83, 0xb1, 0x30, 0x3a, 0xec, 0x06, 0xef, 0xe6, 0xf1, 0x59, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7c, 0x9b, 0xe6, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0x32, 0x60, 0xa8, 0xf7, 0x1d, 0x8f, 0x0f, 0x8d, 0x5a, 0x0e, 0x5e, 0x2f, 0xe4, 0x33, 0xec, 0x06, 0x0f, 0x31, 0xec, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6a, 0x38, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x9c, 0xd3, 0x3c, 0x78, 0x75, 0x63, 0xcf, 0x20, 0xdb, 0x20, 0x36, 0x4a, 0x56, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xb3, 0xd3, 0x3c, 0x18, 0x9a, 0xbf, 0xc3, 0x6e, 0xf0, 0xa0, 0xc1, 0xa0, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xfe, 0x69, 0x1e, 0xbc, 0x45, 0x31, 0x68, 0xd8, 0x85, 0xdb, 0xe0, 0x71, 0x83, 0x41, 0x07, 0x21, 0x05, 0x7e, 0x30, 0x16, 0x46, 0x87, 0xdd, 0xe0, 0x65, 0x15, 0x41, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x48, 0xd4, 0x3c, 0x78, 0x80, 0x47, 0xd0, 0xb0, 0x0b, 0xb7, 0xc1, 0x2b, 0x2b, 0x82, 0x0e, 0x42, 0x0a, 0xfc, 0x60, 0x2c, 0x8c, 0x0e, 0xbb, 0xc1, 0x33, 0x92, 0x82, 0x16, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x19, 0xa9, 0x79, 0xf0, 0xa2, 0xa7, 0xa0, 0x61, 0x17, 0x6e, 0x83, 0x27, 0x25, 0x05, 0x1d, 0x84, 0x14, 0xf8, 0xc1, 0x58, 0x18, 0x1d, 0x76, 0x83, 0x07, 0x02, 0x05, 0x2d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfe, 0x53, 0xf3, 0xe0, 0x45, 0x4f, 0x41, 0xc3, 0x2e, 0xdc, 0x06, 0x8f, 0x05, 0x0a, 0x3a, 0x08, 0x29, 0xf0, 0x83, 0xb1, 0x30, 0x3a, 0xec, 0x06, 0x2f, 0xa5, 0x09, 0x5a, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1f, 0xaa, 0xe6, 0xc1, 0x8b, 0x9e, 0x82, 0x86, 0x5d, 0xb8, 0x0d, 0x5e, 0x4d, 0x13, 0x74, 0x10, 0x52, 0xe0, 0x07, 0x63, 0x61, 0x74, 0xd8, 0x0d, 0x9e, 0x7b, 0x1a, 0xb4, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x84, 0x58, 0xcd, 0x83, 0x87, 0xc0, 0x06, 0x0d, 0xbb, 0x70, 0x1b, 0x3c, 0x9a, 0xe7, 0xe1, 0x20, 0xa4, 0xc0, 0x0f, 0xc6, 0xc2, 0xe8, 0xb0, 0x1b, 0xbc, 0xb1, 0x39, 0x68, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x99, 0xb9, 0x9a, 0x07, 0xef, 0x8f, 0x0e, 0x1a, 0x76, 0xe1, 0x36, 0x78, 0x96, 0x9d, 0xcf, 0x41, 0x48, 0x81, 0x1f, 0x8c, 0x85, 0xd1, 0x61, 0x37, 0x78, 0x13, 0x5b, 0xcf, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0x84, 0x35, 0x0f, 0x1e, 0x02, 0x1b, 0x34, 0xec, 0xc2, 0x6d, 0xf0, 0x3e, 0xb6, 0x9e, 0x83, 0x90, 0x02, 0x3f, 0x18, 0x0b, 0xa3, 0xc3, 0x6e, 0xf0, 0x20, 0xcc, 0xa0, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x2a, 0x6b, 0x1e, 0x3c, 0x04, 0x36, 0x68, 0xd8, 0x85, 0xdb, 0xe0, 0x71, 0x98, 0x41, 0x07, 0x21, 0x05, 0x7e, 0x30, 0x16, 0x46, 0x87, 0xdd, 0xe0, 0x19, 0x62, 0x41, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x9a, 0xd6, 0x3c, 0x78, 0x8b, 0x62, 0xd0, 0xb0, 0x0b, 0xb7, 0xc1, 0x93, 0xc4, 0x82, 0x0e, 0x42, 0x0a, 0xfc, 0x60, 0x2c, 0x8c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xde, 0xd6, 0x3c, 0x78, 0x7c, 0x57, 0xd0, 0xb0, 0x0b, 0xb7, 0xc1, 0x2b, 0xa6, 0x82, 0x0e, 0x42, 0x0a, 0xfc, 0x60, 0x2c, 0x8c, 0x1e, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x8b, 0x1b, 0xbc, 0xa4, 0xc7, 0xa7, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x8d, 0x9b, 0xa2, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x41, 0x8a, 0x0e, 0xbb, 0xc1, 0xbb, 0x79, 0x7c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc7, 0x53, 0x74, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x41, 0x45, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x43, 0x8f, 0xcf, 0x06, 0x6f, 0xe8, 0xf1, 0x39, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0xb8, 0x25, 0x5a, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x73, 0x54, 0xf4, 0x60, 0x68, 0xfe, 0x0e, 0xbb, 0xc1, 0xc3, 0xee, 0x81, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc9, 0x54, 0x74, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x51, 0x45, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0xe4, 0x3d, 0xd0, 0xc1, 0xdb, 0x5d, 0x97, 0x06, 0xd9, 0x06, 0x71, 0x8e, 0xb4, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xea, 0xaa, 0xe8, 0xc1, 0xd0, 0xfc, 0x1d, 0x76, 0x83, 0xf7, 0xee, 0x60, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x96, 0xab, 0xe8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xc3, 0x8a, 0x1e, 0x3c, 0x37, 0x08, 0x63, 0x90, 0x6d, 0x10, 0xe9, 0x4c, 0x2b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xda, 0x8a, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x3b, 0x2b, 0x3a, 0x08, 0x36, 0x68, 0x67, 0xe4, 0xfe, 0x60, 0x3d, 0xba, 0xd6, 0xb0, 0x1b, 0x3c, 0x5c, 0xc9, 0x67, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x72, 0x45, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x7f, 0x57, 0x74, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x47, 0x2c, 0xf9, 0x6c, 0xf0, 0x88, 0x25, 0x9f, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0xb7, 0xa8, 0x95, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x7d, 0x45, 0x0f, 0x86, 0xe6, 0xef, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x71, 0xc1, 0xa2, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x9a, 0x2c, 0x7a, 0x10, 0xbb, 0x2a, 0x1b, 0x83, 0x6c, 0x83, 0xe8, 0xa9, 0x5a, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xcc, 0x67, 0xd1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x98, 0x45, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x81, 0xe6, 0x4b, 0x87, 0xe4, 0xd2, 0xa1, 0x29, 0xd0, 0x20, 0xdb, 0x20, 0x7a, 0xaa, 0x56, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xac, 0x16, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x4c, 0x5a, 0x74, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xf0, 0x1b, 0xb4, 0x2f, 0xc1, 0x74, 0x10, 0x45, 0x2d, 0x1b, 0x87, 0x16, 0x60, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x65, 0xe6, 0x70, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xbc, 0x9c, 0xc3, 0x83, 0x46, 0x92, 0xec, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x16, 0x9e, 0xc3, 0x83, 0x38, 0xc8, 0x5a, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf5, 0x3e, 0x87, 0x07, 0x71, 0x90, 0xb5, 0x72, 0x1c, 0x3a, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x3f, 0xbf, 0xbb, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0xf7, 0xbb, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x87, 0xed, 0xf5, 0x1c, 0x44, 0x45, 0xa2, 0xc9, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x98, 0x7f, 0x77, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x05, 0x78, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xfb, 0xdf, 0x3d, 0x78, 0xb9, 0x72, 0xd1, 0x20, 0xdb, 0x20, 0x0e, 0xcd, 0x56, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x44, 0xe0, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xab, 0x80, 0xf7, 0xe0, 0xdd, 0x95, 0x3d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x18, 0x78, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x3b, 0xf0, 0x1e, 0xbc, 0x28, 0x84, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x23, 0x78, 0x0f, 0xc6, 0x1d, 0xd4, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb5, 0x8b, 0x93, 0x83, 0x60, 0x71, 0x83, 0xf1, 0x65, 0x76, 0x30, 0xbe, 0xcc, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xdb, 0x9c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xe0, 0x39, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3c, 0xe8, 0xe4, 0xf0, 0x2b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xee, 0xe8, 0xe4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x98, 0x4e, 0x1e, 0xb4, 0x35, 0xd3, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x32, 0xea, 0xe4, 0x41, 0x5b, 0x33, 0x4d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xad, 0x4e, 0x1e, 0x62, 0x78, 0xe8, 0x89, 0xba, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x74, 0xeb, 0xe4, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x6b, 0x27, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xe1, 0x4e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xd9, 0x9d, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xdb, 0x3b, 0x39, 0x48, 0x06, 0x8e, 0xaf, 0x83, 0xb3, 0x97, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x80, 0x27, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x57, 0x78, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xdc, 0xe2, 0xc9, 0x83, 0xd4, 0x92, 0x82, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x90, 0x27, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x5b, 0x9e, 0x3c, 0x48, 0x96, 0x2f, 0x59, 0x1c, 0x04, 0x0b, 0xb2, 0x0d, 0xe2, 0x77, 0x6f, 0x65, 0x41, 0xb6, 0x41, 0xac, 0xf4, 0xad, 0x0c, 0xb2, 0x0d, 0xe2, 0x8e, 0x6f, 0x65, 0x10, 0x6c, 0x50, 0x12, 0x34, 0x1c, 0xd2, 0x70, 0x83, 0x6c, 0x83, 0xf8, 0xdd, 0x5b, 0x19, 0x64, 0x1b, 0xc4, 0xb4, 0xdf, 0xca, 0x20, 0xdb, 0x20, 0x3e, 0xfc, 0x56, 0x06, 0xc1, 0x06, 0xeb, 0x54, 0x1a, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x71, 0x9e, 0x3c, 0xa4, 0x0e, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x42, 0x4f, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0xd3, 0x93, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0xab, 0x27, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xac, 0xec, 0xc9, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf5, 0xdb, 0x93, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0xbc, 0x27, 0x07, 0xc9, 0xc0, 0xfb, 0x7d, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x08, 0x9f, 0x3c, 0x18, 0xad, 0xe6, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x75, 0x7c, 0xf2, 0x60, 0x18, 0xc3, 0x1e, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc9, 0x7c, 0xf2, 0x20, 0x30, 0xb1, 0x8f, 0x43, 0x07, 0x8d, 0x74, 0xdb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3a, 0xfa, 0xe4, 0x71, 0xe8, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x6d, 0xeb, 0x93, 0xc7, 0xa1, 0xc3, 0x29, 0x76, 0x3c, 0x3e, 0x1e, 0x1f, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x02, 0x8f, 0x74, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xee, 0x23, 0x1d, 0x04, 0x1b, 0x44, 0xe4, 0xdb, 0xca, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0x8e, 0xa4, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2b, 0x24, 0xe9, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x98, 0x4a, 0xd2, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xbd, 0x24, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x56, 0x93, 0xf4, 0x20, 0x75, 0x7d, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb2, 0x4e, 0xd2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x40, 0x49, 0x0f, 0x8d, 0x8b, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x83, 0x58, 0xaf, 0x5c, 0x59, 0x90, 0x6d, 0x10, 0x57, 0x97, 0x2b, 0x83, 0x6c, 0x83, 0x18, 0xb5, 0x5c, 0x19, 0x04, 0x1b, 0x92, 0x1d, 0x87, 0x34, 0xdc, 0x20, 0xdb, 0x20, 0xd6, 0x2b, 0x57, 0x06, 0xd9, 0x06, 0xf1, 0x8f, 0xb9, 0x32, 0xc8, 0x36, 0x88, 0x25, 0xcc, 0x95, 0x41, 0xb0, 0x21, 0x31, 0x73, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x44, 0x4a, 0x3a, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xc3, 0x92, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x9c, 0x25, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xce, 0x96, 0x74, 0xf8, 0x15, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x23, 0x97, 0x74, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0x77, 0x49, 0x0f, 0x1e, 0xe8, 0x26, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8d, 0x2f, 0xe9, 0xc1, 0x03, 0xdd, 0x84, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x06, 0x26, 0x3d, 0xc4, 0xf0, 0xd0, 0x13, 0x75, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9e, 0x61, 0xd2, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x1a, 0x99, 0x74, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0xe1, 0x49, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xce, 0x79, 0xd2, 0x41, 0xb0, 0xc1, 0xc8, 0x32, 0x5b, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x80, 0x9f, 0x74, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa8, 0x3f, 0xe9, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x04, 0x94, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x40, 0x50, 0x3a, 0xfc, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x0d, 0x4a, 0x07, 0xc9, 0xc0, 0xf1, 0x75, 0x70, 0xce, 0x3b, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb4, 0x84, 0xd2, 0x83, 0x97, 0x4b, 0x91, 0x1c, 0x87, 0x8e, 0x6f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xc1, 0x50, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc6, 0x43, 0xe9, 0x41, 0x0b, 0x12, 0x4d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x47, 0x94, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x49, 0x51, 0x3a, 0xfc, 0x0a, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x76, 0x51, 0xba, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0x19, 0xa5, 0x07, 0x2d, 0x48, 0x34, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xc9, 0x51, 0x3a, 0xfc, 0x06, 0x2f, 0x97, 0x22, 0x39, 0xbe, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xf3, 0x51, 0xba, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0x21, 0xa5, 0xc3, 0x2f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x95, 0xa4, 0xf4, 0xa0, 0x79, 0xcb, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x3b, 0x29, 0x3d, 0x58, 0xa7, 0xd2, 0x70, 0x1c, 0x3a, 0xbe, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8c, 0x4a, 0xe9, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xb3, 0x94, 0x1e, 0xb4, 0x20, 0xd1, 0x74, 0xe8, 0x89, 0xba, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdf, 0x4b, 0xe9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x3a, 0xa5, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x9a, 0x4a, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfd, 0xa9, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x84, 0xa9, 0xd2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0xb0, 0x4a, 0x0f, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x5b, 0xa5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x79, 0x95, 0x1e, 0x1a, 0x09, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x13, 0x56, 0x3a, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x99, 0x95, 0x0e, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xcd, 0x6b, 0xa5, 0x8b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x8a, 0x57, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x80, 0x5f, 0xe9, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x09, 0x58, 0x3a, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x0d, 0x96, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x78, 0x61, 0xe9, 0x21, 0xfe, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x80, 0x58, 0x7a, 0x30, 0x42, 0xa2, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x55, 0x2c, 0x1d, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x1a, 0x4b, 0x0f, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7a, 0xc8, 0xd2, 0x83, 0x11, 0x12, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xea, 0x64, 0xe9, 0xf0, 0x0b, 0xa2, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x2d, 0x4b, 0x0f, 0xce, 0x4f, 0xb4, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x33, 0x4b, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4a, 0xce, 0xd2, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe9, 0xb3, 0xf4, 0x60, 0x84, 0x44, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x20, 0x5a, 0x3a, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x2d, 0x2d, 0x3d, 0x18, 0xcb, 0x50, 0xc3, 0x2f, 0x88, 0x36, 0x58, 0x33, 0x94, 0x72, 0x3c, 0x1e, 0x7e, 0x83, 0xc1, 0x0e, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x16, 0x6a, 0xe9, 0xf0, 0x0b, 0xa2, 0x85, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0xab, 0xa5, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8a, 0x6b, 0xe9, 0x21, 0x6b, 0x77, 0x58, 0xdf, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7a, 0xd8, 0xd2, 0x83, 0xc6, 0x51, 0x4f, 0x0e, 0x1e, 0x21, 0x3e, 0x70, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x8d, 0xb6, 0x74, 0xf8, 0x05, 0xd1, 0x82, 0xf3, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe3, 0x6d, 0xe9, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x74, 0x4b, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xf3, 0x96, 0x0e, 0x92, 0x81, 0xa3, 0xeb, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfd, 0x6f, 0xe9, 0x21, 0xd9, 0x71, 0x1c, 0x3a, 0x24, 0x3b, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x0a, 0x97, 0x1e, 0x3c, 0x42, 0x7c, 0x60, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x77, 0x2e, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7d, 0xba, 0x74, 0xd8, 0x0d, 0x89, 0x80, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xb9, 0x2e, 0x3d, 0x18, 0x21, 0x51, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x67, 0x97, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xe9, 0x2e, 0x1d, 0x24, 0xc3, 0x0c, 0xa2, 0x05, 0xe5, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x82, 0x97, 0x1e, 0xa4, 0x0c, 0x06, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x1b, 0x2f, 0x1d, 0x44, 0x0b, 0xca, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x38, 0x2f, 0x1d, 0x44, 0x0b, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9d, 0x7a, 0xe9, 0x41, 0x33, 0x61, 0x4e, 0x87, 0x64, 0xc7, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd6, 0xfb, 0xd2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0xf9, 0x4b, 0x87, 0xdd, 0x90, 0x08, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0a, 0x00, 0xd3, 0x83, 0x11, 0x12, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb3, 0x80, 0xe9, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfe, 0x02, 0xd3, 0x41, 0x32, 0xcc, 0x20, 0x5a, 0x50, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x63, 0x82, 0xe9, 0x41, 0x0a, 0xa4, 0xf9, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1e, 0x06, 0xd3, 0x41, 0xb4, 0xa0, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe2, 0x07, 0xd3, 0x41, 0xb4, 0xf0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x4d, 0x98, 0x1e, 0x34, 0x13, 0xe6, 0x74, 0x48, 0x76, 0x1c, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xf4, 0xc2, 0x74, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x34, 0x4c, 0x0f, 0xe3, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x73, 0x87, 0xe9, 0x21, 0xfe, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x0f, 0x62, 0x7a, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x82, 0xc5, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x32, 0x1e, 0xd3, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe2, 0xc7, 0xf4, 0xe0, 0x41, 0xbe, 0x02, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x4e, 0x64, 0x3a, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x44, 0x32, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xb3, 0x64, 0x7a, 0x68, 0xf8, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x37, 0x99, 0x1e, 0xc6, 0x65, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x42, 0x99, 0x1e, 0x8c, 0x09, 0xab, 0xe3, 0xd0, 0xf0, 0x1b, 0x34, 0x92, 0xf5, 0x34, 0xfc, 0x06, 0x83, 0x1d, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xaa, 0x29, 0xd3, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x68, 0x65, 0xba, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x59, 0xa6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x71, 0x99, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbd, 0x97, 0xe9, 0xc1, 0x23, 0xc4, 0x07, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x0d, 0x33, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x26, 0x32, 0xd3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xce, 0x4c, 0x0f, 0x47, 0xfb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0x6a, 0xa6, 0x83, 0x64, 0x50, 0x37, 0x88, 0x16, 0x88, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x15, 0x6e, 0xa6, 0x07, 0x21, 0x00, 0x7e, 0x3c, 0x3f, 0x9c, 0x62, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0xd2, 0x4a, 0x0f, 0x4a, 0x86, 0xa6, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0xc7, 0x4a, 0x0f, 0x4e, 0x2b, 0xb8, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0xdc, 0x60, 0xb1, 0xf7, 0xea, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0xf3, 0x4c, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5e, 0x3e, 0xd3, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0x7f, 0xa6, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x1f, 0x68, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x31, 0xa1, 0xe9, 0xf0, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x3b, 0x34, 0x3d, 0x88, 0x35, 0xbd, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x50, 0x34, 0x1d, 0x24, 0x43, 0x0e, 0x2b, 0xb4, 0xc7, 0xa1, 0xe3, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x8c, 0xa6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x3e, 0x9a, 0x0e, 0xbf, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x49, 0x9a, 0x0e, 0xbf, 0x41, 0x24, 0x36, 0xb0, 0x1c, 0xdf, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xa7, 0x34, 0x3d, 0xc4, 0xf0, 0xd0, 0x13, 0x75, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc2, 0x4b, 0xd3, 0x41, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x86, 0xa6, 0xe9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x45, 0x9f, 0xa6, 0xc3, 0x6e, 0x58, 0x0b, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x30, 0x51, 0xd3, 0xc3, 0xd1, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x48, 0xa9, 0xe9, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x7b, 0x6a, 0x3a, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x4c, 0xd5, 0xf4, 0x90, 0xaf, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x78, 0x56, 0xd3, 0x83, 0xe2, 0x50, 0xe3, 0x38, 0xb4, 0x21, 0x86, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xeb, 0xab, 0xe9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x8c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x98, 0x35, 0x3d, 0x48, 0x5d, 0x1f, 0x38, 0x1e, 0x6f, 0x88, 0xe1, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x5c, 0x6b, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x72, 0x4d, 0x0f, 0x0e, 0xe2, 0xdd, 0xc7, 0xe3, 0x43, 0x3a, 0xf7, 0xf8, 0x76, 0x3c, 0x3e, 0x18, 0x11, 0xe4, 0x2b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x75, 0xb1, 0xe9, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x8f, 0x6c, 0x3a, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x36, 0x6b, 0xd3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0xd9, 0x4d, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd9, 0xef, 0xa6, 0x87, 0x53, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3a, 0x79, 0xd3, 0x61, 0x37, 0x08, 0x12, 0xef, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xad, 0x37, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x24, 0x7c, 0xd3, 0x43, 0x34, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xd7, 0x37, 0x3d, 0x08, 0x4a, 0xef, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xfb, 0x4d, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x02, 0x9c, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x1f, 0x38, 0x3d, 0x34, 0x12, 0x3c, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x6a, 0x70, 0xba, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x55, 0x09, 0xa7, 0x07, 0x21, 0x05, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x35, 0xc3, 0xe9, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xf7, 0x70, 0x3a, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x48, 0x9c, 0x1e, 0x84, 0x96, 0xfb, 0x86, 0x18, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x71, 0x18, 0xa7, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x36, 0x4e, 0x07, 0xc9, 0xe0, 0xda, 0xc1, 0x39, 0xef, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xee, 0x38, 0x3d, 0x28, 0x0e, 0x35, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5a, 0xc8, 0xe9, 0x41, 0xdb, 0x23, 0x4e, 0xc7, 0xa1, 0x43, 0x3a, 0x77, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x4a, 0x4e, 0x07, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x8d, 0x72, 0x7a, 0x10, 0x02, 0xe0, 0x87, 0x54, 0xcd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x09, 0x2c, 0xa7, 0x83, 0x68, 0xe1, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x7d, 0x39, 0x1d, 0x44, 0x0b, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xca, 0xcc, 0xe9, 0x41, 0x18, 0xc8, 0x1f, 0x52, 0x35, 0x07, 0x21, 0x00, 0x7e, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x1e, 0xdc, 0x1b, 0x7c, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x65, 0xe7, 0x74, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xf1, 0x39, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x0d, 0x74, 0xba, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x79, 0x43, 0xa7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x19, 0x9d, 0x0e, 0xbf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x84, 0xa4, 0xd3, 0x83, 0x58, 0xd3, 0x5b, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd6, 0xa5, 0xd3, 0x83, 0x48, 0x6c, 0x60, 0x39, 0x0e, 0x1d, 0xdf, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xcb, 0xe9, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xbc, 0xa8, 0xd3, 0xe1, 0x37, 0x08, 0x52, 0xfc, 0xe3, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0x54, 0xa7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x5d, 0x9d, 0x0e, 0xbf, 0x41, 0x88, 0xf8, 0x1f, 0xdf, 0x16, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xd1, 0x3a, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x97, 0xec, 0x74, 0xd8, 0x0d, 0x79, 0xac, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x3e, 0x3b, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x40, 0xb5, 0xd3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xda, 0x4e, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x00, 0xee, 0xf4, 0xd0, 0x48, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5c, 0xb9, 0xd3, 0x83, 0xa0, 0xf4, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xbe, 0xba, 0xd3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xf0, 0x4e, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x62, 0xef, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfa, 0xbe, 0xd3, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x05, 0x3c, 0x1d, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x06, 0x4f, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf8, 0xc2, 0xd3, 0x83, 0x36, 0x01, 0x02, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x45, 0x3c, 0x3d, 0x34, 0x12, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xae, 0xc5, 0xd3, 0x41, 0xb4, 0x70, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x3d, 0x9e, 0x1e, 0x04, 0xa5, 0xf7, 0x21, 0x9a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x48, 0x9e, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc5, 0x94, 0xa7, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x2e, 0x4f, 0x0f, 0x02, 0x13, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xd4, 0x3c, 0x3d, 0x34, 0x12, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0x9d, 0xa7, 0x07, 0x6d, 0x02, 0x04, 0x1c, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x00, 0xf4, 0x74, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbb, 0xe8, 0xe9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x84, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x99, 0x9e, 0x1e, 0x1a, 0xea, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x47, 0x3d, 0x1d, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0x57, 0x4f, 0x0f, 0x46, 0xc7, 0xfa, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xc5, 0x9e, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0xb4, 0xa7, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x6d, 0x4f, 0x0f, 0xa2, 0xf6, 0x85, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xca, 0x3d, 0x3d, 0x68, 0x0f, 0xf4, 0x7e, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xf0, 0x9e, 0x1e, 0x14, 0x14, 0x45, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x00, 0x3e, 0x1d, 0x44, 0x0b, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdd, 0xf0, 0xe9, 0x71, 0xe8, 0x90, 0xb5, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc4, 0xf8, 0x74, 0x10, 0x2d, 0xfc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0xc9, 0xa7, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x69, 0x3e, 0x3d, 0x18, 0xac, 0xb1, 0x87, 0xac, 0xdd, 0x71, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x08, 0x7d, 0x3a, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x6f, 0xfa, 0x74, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xc2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0xad, 0x4f, 0x0f, 0x16, 0xc2, 0xec, 0x1f, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xcc, 0x3e, 0x1d, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0xb8, 0x4f, 0x0f, 0x46, 0xc7, 0xfa, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x88, 0x9f, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0xe4, 0xa7, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0xce, 0x4f, 0x0f, 0xa2, 0xf6, 0x85, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x4f, 0x3f, 0x3d, 0x68, 0x0f, 0xf4, 0x7e, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xb2, 0x9f, 0x1e, 0x14, 0x14, 0x45, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x84, 0x3f, 0x1d, 0x44, 0x0b, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfe, 0xfc, 0xe9, 0x71, 0xe8, 0x90, 0xb5, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xd4, 0xfe, 0x74, 0x10, 0x2d, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x31, 0xfa, 0xa7, 0x83, 0x68, 0xe1, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xed, 0x3f, 0x3d, 0x08, 0xb2, 0xf8, 0x43, 0xd6, 0xee, 0x38, 0x74, 0x38, 0xc5, 0x8e, 0xc7, 0x07, 0x43, 0xc7, 0x7d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf8, 0x05, 0xd4, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xdf, 0x01, 0x75, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xa2, 0x82, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2c, 0x0d, 0xea, 0xb0, 0x1b, 0x76, 0x0d, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfa, 0x06, 0xf5, 0x10, 0xcd, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0x74, 0x50, 0x87, 0xdd, 0x90, 0xc7, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xbe, 0x1e, 0xd4, 0xc3, 0xb8, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x00, 0x84, 0x3a, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x0a, 0xa1, 0x0e, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x45, 0xa8, 0x07, 0x6d, 0x02, 0x04, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x80, 0x84, 0x7a, 0x30, 0xbc, 0x28, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x74, 0x09, 0x75, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x9c, 0x50, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x88, 0x42, 0x3d, 0x34, 0x12, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe4, 0x29, 0xd4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xad, 0x50, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xa0, 0x85, 0x7a, 0x68, 0xa8, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x49, 0x17, 0xea, 0xa1, 0x93, 0xda, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf0, 0x2f, 0xd4, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xc5, 0x50, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x63, 0x86, 0x7a, 0xb0, 0x10, 0x66, 0x7f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xaa, 0x34, 0xd4, 0x83, 0x91, 0xd9, 0x7b, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x83, 0x0d, 0x75, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x75, 0x43, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x15, 0x87, 0x3a, 0x48, 0x06, 0xd7, 0x0e, 0x4e, 0x67, 0xc8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x00, 0x1d, 0xea, 0x41, 0x9b, 0x00, 0x01, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd8, 0x0e, 0xf5, 0x60, 0x78, 0x51, 0x1c, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x31, 0x0f, 0x75, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xe1, 0x43, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xec, 0x87, 0x7a, 0x10, 0x98, 0xd8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x62, 0x20, 0xea, 0xc1, 0xf0, 0xa2, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x4d, 0x84, 0xa8, 0x07, 0x6d, 0x02, 0x04, 0x1c, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe3, 0x10, 0x75, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x2a, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x54, 0x44, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xde, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x22, 0x51, 0x0f, 0x31, 0x1c, 0x44, 0x0b, 0xc2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x1b, 0x51, 0x0f, 0x0d, 0x75, 0x8e, 0xc7, 0x83, 0x68, 0x41, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0f, 0x25, 0xea, 0xc1, 0xc8, 0xec, 0x3d, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x6f, 0x89, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0x9d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x69, 0xa2, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x41, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0xa0, 0xa8, 0x87, 0x18, 0x0e, 0xa2, 0x05, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x9d, 0xa8, 0x07, 0x0b, 0x61, 0xf6, 0x8f, 0xc7, 0x83, 0x68, 0x41, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x05, 0x29, 0xea, 0xa1, 0x93, 0xda, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x68, 0x53, 0xd4, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2e, 0x15, 0x75, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x05, 0x2b, 0xea, 0x41, 0x60, 0x62, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0xae, 0xa8, 0x07, 0x6d, 0x02, 0x04, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xcc, 0x58, 0xd4, 0x83, 0xe1, 0x45, 0x71, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x34, 0x5a, 0xd4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xa8, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfa, 0x16, 0x75, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3a, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xf2, 0x45, 0x3d, 0xc4, 0x70, 0x10, 0x2d, 0x48, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xd9, 0x45, 0x3d, 0x74, 0x52, 0x3b, 0x1e, 0x0f, 0xa2, 0x05, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x81, 0xc1, 0xa8, 0x07, 0x0b, 0x61, 0xf6, 0x8f, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x10, 0xa3, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x41, 0xef, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0xc7, 0xa8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x50, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8c, 0x33, 0xea, 0x21, 0x86, 0x83, 0x68, 0x41, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc0, 0x32, 0xea, 0xc1, 0xc8, 0xec, 0x3d, 0x1e, 0x0f, 0xa2, 0x05, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x55, 0xd1, 0xa8, 0x87, 0x86, 0x3a, 0xc7, 0xe3, 0xe3, 0xf1, 0xc1, 0x40, 0xeb, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0c, 0x6e, 0xd4, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe2, 0x1b, 0x75, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x69, 0x38, 0xea, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x91, 0xa3, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x72, 0x8e, 0x3a, 0xfc, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0xd3, 0x51, 0x0f, 0x62, 0x4d, 0x6f, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0xd8, 0x51, 0x0f, 0x22, 0xb1, 0x81, 0xe5, 0x38, 0x74, 0x7c, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xdb, 0x1d, 0x75, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xce, 0x78, 0xd4, 0xe1, 0x57, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x24, 0x7a, 0xd4, 0x83, 0xb8, 0x82, 0x60, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xd9, 0x1e, 0xf5, 0x10, 0xc3, 0x43, 0x4f, 0xd4, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0xf2, 0x51, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xf2, 0x47, 0x1d, 0x04, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x03, 0xa4, 0x0e, 0xbb, 0x61, 0x2d, 0x74, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x07, 0x52, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcb, 0x20, 0x75, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x47, 0x48, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb8, 0x90, 0x7a, 0xc8, 0xd7, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x85, 0x43, 0xea, 0x41, 0x71, 0xa8, 0x71, 0x1c, 0x5a, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x85, 0x48, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0x14, 0xa9, 0x07, 0xa9, 0xeb, 0x03, 0xc7, 0xe3, 0x85, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x60, 0x8b, 0xd4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x18, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xa1, 0x91, 0x7a, 0x70, 0x10, 0xef, 0x3e, 0x1e, 0x1f, 0xd2, 0xb9, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0xdf, 0x8e, 0xc7, 0x07, 0xa5, 0x80, 0xc0, 0x0a, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x43, 0x92, 0x3a, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x9d, 0xa4, 0x0e, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x99, 0x26, 0x75, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb0, 0x9f, 0xd4, 0x61, 0x37, 0xac, 0xef, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa0, 0x50, 0xea, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x14, 0xa5, 0x0e, 0x82, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x8f, 0x52, 0x87, 0xdd, 0x20, 0xd8, 0x9e, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x5d, 0x29, 0x75, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x6c, 0x4a, 0x3d, 0x64, 0xed, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x82, 0x4a, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd2, 0xa9, 0xd4, 0x43, 0x0f, 0xa1, 0xe3, 0xf1, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x3c, 0x38, 0xb9, 0xfc, 0x90, 0x5a, 0x3a, 0x1e, 0xaf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x1d, 0x5c, 0xa9, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xca, 0x57, 0xea, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xd9, 0x52, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xb9, 0x4b, 0x1d, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0xf3, 0x52, 0x0f, 0x1d, 0x47, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xf4, 0x2f, 0x75, 0x10, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x23, 0x98, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x37, 0x63, 0xea, 0xb0, 0x1b, 0x04, 0xdb, 0xf3, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x40, 0xa6, 0x1e, 0x3a, 0x86, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x2b, 0x99, 0x3a, 0xec, 0x06, 0x41, 0xd2, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe9, 0x95, 0xa9, 0x87, 0x1e, 0x42, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x62, 0xa6, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x2d, 0x9b, 0xa9, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x3b, 0x53, 0x0f, 0xa2, 0xf6, 0x85, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x03, 0x4d, 0x3d, 0x78, 0x66, 0x7b, 0xc4, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x20, 0x4d, 0x3d, 0x58, 0x24, 0xfe, 0x73, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xdc, 0xd3, 0xd4, 0x41, 0xb4, 0xf0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0xac, 0xa6, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x41, 0xf5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0xae, 0xa9, 0x07, 0x41, 0x6e, 0x7d, 0x3c, 0x3e, 0xf4, 0x10, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2c, 0x36, 0x75, 0x10, 0x2d, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xed, 0xb4, 0xa9, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd0, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x16, 0x6e, 0xea, 0x41, 0xd8, 0x53, 0x1f, 0x8f, 0x0f, 0x1d, 0xc3, 0x8e, 0x6f, 0x87, 0x53, 0xec, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x37, 0x28, 0x3c, 0x46, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x14, 0xa7, 0x0e, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0xc8, 0xa9, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x40, 0x7a, 0xea, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0xf3, 0xa9, 0x83, 0x60, 0x71, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x2e, 0x54, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x32, 0xaa, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xf3, 0xa8, 0x0e, 0xbb, 0x21, 0x8f, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0x40, 0xaa, 0x87, 0x68, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x28, 0xa4, 0x3a, 0xec, 0x86, 0x5d, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x2d, 0x52, 0x3d, 0x44, 0x73, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1c, 0x24, 0xd5, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x5b, 0x49, 0x75, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x6b, 0x52, 0x3d, 0x68, 0x13, 0x20, 0x60, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x18, 0x28, 0xd5, 0x83, 0xa0, 0xf4, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x72, 0x29, 0xd5, 0x83, 0x85, 0x30, 0xfb, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x56, 0xa9, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x25, 0x58, 0xaa, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x93, 0xb5, 0x54, 0x0f, 0x06, 0x22, 0xf5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xd8, 0xa5, 0x7a, 0xd0, 0x26, 0x40, 0xc0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x02, 0x53, 0x3d, 0x08, 0x4a, 0xef, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x8c, 0xa9, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x41, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x98, 0x99, 0xea, 0xc1, 0x42, 0x98, 0xfd, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0x69, 0xaa, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x64, 0x53, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xee, 0x37, 0xd5, 0x43, 0x43, 0x9d, 0xe3, 0xf1, 0x21, 0x9a, 0xc7, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x99, 0x53, 0x1d, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x27, 0x55, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x4c, 0x55, 0x1d, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x58, 0x55, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6e, 0x57, 0xd5, 0x83, 0x20, 0xf1, 0x5e, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xa4, 0x55, 0x1d, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x6e, 0x55, 0x0f, 0x82, 0xd2, 0x7b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xea, 0x5c, 0xd5, 0x43, 0x0c, 0x0f, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x79, 0xbc, 0xaa, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xf1, 0xab, 0x7a, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0xc1, 0xaa, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x45, 0xac, 0x3a, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe0, 0x58, 0x75, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf0, 0x64, 0xd5, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x64, 0x56, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xec, 0x59, 0xf5, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0xa4, 0x55, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xa7, 0x56, 0x1d, 0x7e, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa5, 0xd7, 0xaa, 0x83, 0x64, 0xe0, 0xfe, 0x3a, 0x38, 0x6d, 0x28, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x93, 0xb6, 0xea, 0x20, 0x19, 0x72, 0x30, 0x0c, 0x7d, 0x8e, 0x43, 0xc7, 0xb7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0xb9, 0x55, 0x07, 0xc1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x95, 0xdf, 0xaa, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x93, 0xab, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0xe7, 0xaa, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x89, 0xba, 0xea, 0x21, 0x11, 0xb0, 0x21, 0x86, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf9, 0xbb, 0xea, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x28, 0xaf, 0x7a, 0x88, 0xe6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0xf5, 0xaa, 0x87, 0x86, 0x5f, 0x87, 0x74, 0xee, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xe1, 0xab, 0x1e, 0x52, 0x07, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xec, 0xab, 0x0e, 0xbf, 0x20, 0x5a, 0xd8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0xfc, 0x55, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd6, 0x80, 0xd5, 0x83, 0x94, 0xc1, 0x80, 0xe3, 0xf1, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2e, 0x82, 0xd5, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xdf, 0x60, 0x75, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x4c, 0x58, 0x3d, 0x44, 0x73, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2a, 0x86, 0xd5, 0x43, 0xc3, 0xaf, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x77, 0x58, 0x3d, 0xa4, 0x0e, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x8c, 0x58, 0x1d, 0x7e, 0x41, 0xb4, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x53, 0xac, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xda, 0xc5, 0xea, 0x30, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x68, 0xac, 0x1e, 0xa2, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x31, 0xc7, 0xea, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x7d, 0xac, 0x1e, 0x8c, 0x09, 0xab, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x44, 0x56, 0x0f, 0xe3, 0x72, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xae, 0x64, 0x75, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x40, 0x59, 0x1d, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x55, 0x56, 0x0f, 0xd1, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xad, 0x65, 0xf5, 0xd0, 0xf0, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0x60, 0x56, 0x0f, 0xa9, 0x83, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x65, 0x56, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x04, 0x9b, 0xd5, 0x83, 0x14, 0x48, 0xf3, 0xe3, 0xf1, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x92, 0x7d, 0xea, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x70, 0xfc, 0xd4, 0x83, 0xb7, 0x84, 0x02, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdf, 0x7e, 0xea, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xe9, 0x9f, 0x3a, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x28, 0x40, 0xf5, 0x60, 0xdc, 0x41, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x25, 0x05, 0xaa, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x0f, 0x54, 0x0f, 0x4a, 0x86, 0xa6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x76, 0x41, 0xf5, 0x90, 0xb5, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0x0e, 0xaa, 0x87, 0x1e, 0x42, 0xc7, 0xa1, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x41, 0x84, 0xea, 0xa1, 0x87, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x9d, 0x50, 0x3d, 0x74, 0x0c, 0x3b, 0x0e, 0x1d, 0xcf, 0x8f, 0x43, 0x07, 0x6b, 0xf9, 0x04, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0x83, 0x25, 0x05, 0xf0, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xfa, 0x59, 0x1d, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x84, 0x56, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xfe, 0xb4, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9c, 0xd6, 0xea, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x92, 0xae, 0xd5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0xbf, 0x56, 0x87, 0x5f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xad, 0xd8, 0xea, 0xc1, 0x2b, 0xc4, 0x4a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xab, 0x6c, 0xf5, 0xe0, 0xe5, 0x52, 0x24, 0xc7, 0xa1, 0xe3, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0x68, 0xab, 0x83, 0x60, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4c, 0xb5, 0xd5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0xdf, 0x56, 0x87, 0xdd, 0x60, 0x6c, 0x72, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbc, 0xdc, 0xea, 0x21, 0x75, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5f, 0xdd, 0xea, 0x20, 0x19, 0x32, 0x88, 0x16, 0xcc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xc6, 0x5b, 0x3d, 0xb4, 0x00, 0x1a, 0x44, 0x0b, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfa, 0xde, 0xea, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xfa, 0xad, 0x1e, 0xe2, 0x3f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4f, 0xe0, 0xea, 0x20, 0x19, 0x32, 0x88, 0x16, 0xcc, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x24, 0x5c, 0x3d, 0x34, 0xfc, 0x3a, 0x1e, 0x1f, 0x8f, 0x8f, 0x6f, 0xc7, 0xe3, 0x83, 0x62, 0x71, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x1b, 0x57, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x86, 0xc8, 0xd5, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x79, 0xae, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x8d, 0xba, 0x3a, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x71, 0x75, 0x75, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2e, 0xd7, 0xd5, 0xe1, 0x17, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x11, 0xbb, 0x7a, 0xf0, 0x0a, 0xb1, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x9d, 0x5d, 0x3d, 0x78, 0xb9, 0x14, 0xc9, 0x71, 0xe8, 0xf8, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x93, 0xed, 0xea, 0x20, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x1c, 0x77, 0x75, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x06, 0xdf, 0xd5, 0x61, 0x37, 0x18, 0x9b, 0x9c, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x12, 0xbc, 0x7a, 0x48, 0x1d, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x3a, 0xbc, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0x8e, 0x57, 0x0f, 0x0d, 0xbf, 0x06, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xa0, 0xbc, 0xba, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0xcc, 0xab, 0x87, 0xf8, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xf5, 0xbc, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xa5, 0x57, 0x0f, 0x2d, 0x80, 0x8e, 0xc7, 0xc7, 0xe3, 0xe3, 0xdb, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0x78, 0x62, 0x61, 0xf0, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6e, 0xee, 0xd5, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfe, 0x7b, 0x75, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x6d, 0xed, 0xab, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0xe0, 0xaf, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xf6, 0x57, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb8, 0x7f, 0x75, 0x10, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x05, 0xc0, 0x3a, 0xec, 0x06, 0x41, 0xd2, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x03, 0xac, 0x1b, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x90, 0x01, 0xeb, 0x21, 0x6b, 0x37, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x3c, 0x02, 0xeb, 0x20, 0x19, 0x32, 0x88, 0x16, 0xc4, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x31, 0xb0, 0x1e, 0x3a, 0x86, 0x1d, 0x8f, 0x8f, 0x6f, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0xb8, 0xc1, 0x2a, 0xed, 0xf4, 0x43, 0x6a, 0xe9, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd2, 0x04, 0xeb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfc, 0x0a, 0xd6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xc4, 0x60, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x6e, 0x83, 0x75, 0xf8, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x78, 0xb0, 0x1e, 0xc4, 0x9a, 0xde, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x83, 0xb0, 0x1e, 0x44, 0x62, 0x03, 0xcb, 0x71, 0xe8, 0xf8, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdf, 0x08, 0xeb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0x26, 0xac, 0x07, 0x11, 0x18, 0xc4, 0xb2, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x46, 0x0a, 0xeb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x6d, 0x2e, 0xac, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x62, 0x58, 0x0f, 0x5e, 0x6e, 0x47, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x33, 0xac, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0x6c, 0x58, 0x0f, 0x12, 0x62, 0x00, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x8c, 0x1c, 0xd6, 0x43, 0x34, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf0, 0x0e, 0xeb, 0x61, 0x5c, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x0a, 0xb1, 0x0e, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x45, 0xac, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x98, 0x62, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x09, 0x8b, 0x75, 0xd8, 0x0d, 0xeb, 0x7b, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xb6, 0xc5, 0x7a, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0x5d, 0xac, 0xc3, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x09, 0xc6, 0x3a, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x67, 0x8c, 0x75, 0x90, 0x0c, 0x4a, 0x0e, 0xce, 0x79, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x74, 0x19, 0xeb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x96, 0x34, 0xd6, 0x43, 0x23, 0xc1, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x5f, 0x63, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xf4, 0xc6, 0x7a, 0x10, 0x94, 0xde, 0xc7, 0xe3, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x6e, 0x50, 0xac, 0x0a, 0x1c, 0x52, 0x4b, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0xf9, 0x58, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xea, 0x3f, 0xd6, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xdb, 0x94, 0x75, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb6, 0x58, 0xd6, 0x41, 0xb0, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0x19, 0xad, 0x83, 0x60, 0x71, 0x0e, 0x4a, 0x53, 0xdc, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x7e, 0x5a, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x50, 0x6a, 0x1d, 0x76, 0x43, 0x1e, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0x9a, 0x5a, 0x0f, 0xd1, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xf6, 0xa9, 0x75, 0xd8, 0x0d, 0xc6, 0x3a, 0xda, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x4b, 0xb5, 0x1e, 0xa2, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x58, 0x55, 0xeb, 0xb0, 0x0b, 0xb7, 0xc1, 0x2b, 0xfa, 0xdb, 0x0e, 0x8d, 0x04, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x67, 0xab, 0x75, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xee, 0x6a, 0x1d, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0xc0, 0x5a, 0x0f, 0xda, 0x04, 0x08, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x66, 0xac, 0xf5, 0x60, 0x64, 0xf6, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x79, 0x59, 0xeb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x42, 0xb4, 0xd6, 0x41, 0x32, 0x70, 0x74, 0x1d, 0x04, 0x39, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xad, 0xb5, 0x0e, 0xa2, 0x85, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xd7, 0xad, 0xf5, 0x10, 0xc3, 0x43, 0x34, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xc5, 0xb5, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x21, 0x74, 0xad, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xed, 0x5a, 0x0f, 0x06, 0x22, 0xf5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x98, 0xd7, 0x7a, 0xd0, 0x26, 0x40, 0xc0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xe2, 0x6b, 0x3d, 0x18, 0x99, 0xbd, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xf8, 0x6b, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x30, 0xc1, 0xd6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0x85, 0xad, 0x07, 0x11, 0xa0, 0xd9, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc5, 0x87, 0xad, 0x83, 0x68, 0x61, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x5a, 0x6c, 0x3d, 0xc4, 0xf0, 0x10, 0xcd, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x00, 0xc7, 0xd6, 0x41, 0xb4, 0xb0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x46, 0xb6, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x41, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x37, 0x65, 0xeb, 0xa1, 0xa1, 0xce, 0xf1, 0xf8, 0x10, 0xcd, 0x41, 0xb6, 0x86, 0xf6, 0xeb, 0x07, 0x8f, 0xb1, 0x04, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x4a, 0xb3, 0x75, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xe7, 0x6c, 0x1d, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0x3f, 0x5b, 0x0f, 0x46, 0x66, 0xef, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x3d, 0xa2, 0xad, 0x07, 0x6d, 0x02, 0x04, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x40, 0x69, 0xeb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd0, 0xd3, 0xd6, 0x83, 0x08, 0xd0, 0x6c, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2e, 0xd5, 0xd6, 0x41, 0xb4, 0xf0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xb7, 0xb6, 0x1e, 0x62, 0x78, 0x88, 0xe6, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4a, 0xd8, 0xd6, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x68, 0xb6, 0x75, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x79, 0x6d, 0xeb, 0xc1, 0x40, 0xa4, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x71, 0x5b, 0x0f, 0xda, 0x04, 0x08, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x69, 0xbb, 0xad, 0x07, 0x23, 0xb3, 0xf7, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xbe, 0xad, 0x83, 0x68, 0xe1, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x0d, 0x6e, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7e, 0xe2, 0xd6, 0x83, 0x85, 0x30, 0xfb, 0xc7, 0xe3, 0x43, 0x34, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x3d, 0x6e, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x8c, 0xe5, 0xd6, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb9, 0xcd, 0xad, 0x07, 0x11, 0xa0, 0xd9, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x79, 0xd0, 0xad, 0x83, 0x68, 0xe1, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x9f, 0x6e, 0x3d, 0xc4, 0xf0, 0x10, 0xcd, 0xe3, 0xd0, 0xf1, 0xf8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x09, 0x2d, 0xeb, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x6b, 0xcb, 0x3a, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xe5, 0xb2, 0x1e, 0x04, 0xdb, 0xf3, 0xc2, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd4, 0x2f, 0xeb, 0x41, 0x90, 0x34, 0x1f, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x8a, 0x59, 0x0f, 0x59, 0xbb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x90, 0x59, 0x87, 0xdd, 0x20, 0xd8, 0x9e, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x73, 0x99, 0x75, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8c, 0x33, 0xeb, 0x41, 0xc9, 0xd0, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0x43, 0xb3, 0x1e, 0xb2, 0x76, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xda, 0x69, 0xd6, 0x83, 0x86, 0x13, 0xed, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9d, 0x35, 0xeb, 0xa1, 0x63, 0xd8, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x92, 0x6c, 0xd6, 0x61, 0x37, 0x08, 0x92, 0xe6, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xe2, 0x66, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xef, 0xcd, 0x7a, 0x50, 0x32, 0x34, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0xe1, 0xac, 0x87, 0xac, 0xdd, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x8e, 0x9c, 0xf5, 0xe0, 0x15, 0xfd, 0x6d, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xf4, 0x9c, 0xf5, 0xd0, 0x43, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb6, 0x3a, 0xeb, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xd8, 0xce, 0x3a, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x06, 0x9e, 0xf5, 0x60, 0xbc, 0xe9, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0xf2, 0xac, 0x07, 0x83, 0x3f, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xd9, 0xb3, 0x1e, 0x9a, 0x25, 0x1d, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x37, 0x9f, 0x75, 0xf8, 0x05, 0xd1, 0x82, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0xfd, 0xac, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xff, 0x59, 0x0f, 0x4a, 0x86, 0xa6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x4d, 0xa0, 0xf5, 0x90, 0xb5, 0x5b, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x14, 0xb4, 0x1e, 0xbc, 0xa2, 0xbf, 0x6d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x1f, 0xb4, 0x1e, 0x7a, 0x08, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x2b, 0xb4, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x6b, 0x68, 0x3d, 0x28, 0x19, 0x9a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x08, 0x88, 0xd6, 0x43, 0xd6, 0x6e, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x2d, 0xd1, 0x7a, 0xd0, 0x70, 0xa2, 0xfd, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xac, 0x68, 0x3d, 0x74, 0x0c, 0x3b, 0x0e, 0x1d, 0x4e, 0xb1, 0x83, 0x72, 0x28, 0xe9, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x37, 0x58, 0x05, 0x8e, 0x77, 0x48, 0x2d, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xe2, 0x6e, 0x1d, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xbe, 0x5b, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0xfa, 0xad, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x15, 0xb8, 0x0e, 0xbb, 0x61, 0xd7, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0x11, 0x5c, 0x0f, 0xd1, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x66, 0xc1, 0x75, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0x11, 0xae, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0x28, 0x5c, 0x0f, 0x9a, 0xda, 0x26, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x2d, 0x5c, 0x0f, 0xd1, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x19, 0xae, 0x87, 0x46, 0x82, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x1d, 0x5c, 0x0f, 0x82, 0xd2, 0xfb, 0x78, 0x7c, 0x3c, 0x3e, 0x28, 0xf3, 0x08, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x0d, 0x71, 0x1d, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x49, 0x5c, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x9d, 0xb8, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7d, 0x8a, 0xeb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xcd, 0x2c, 0xae, 0xc3, 0x2f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xf0, 0xc5, 0xf5, 0x20, 0xd6, 0xf4, 0x56, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x45, 0xc6, 0xf5, 0x20, 0x12, 0x1b, 0x58, 0x8e, 0x43, 0xc7, 0xb7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0x69, 0x5c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xbd, 0x71, 0x3d, 0x88, 0xc0, 0x20, 0x96, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x74, 0x5c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xfd, 0x71, 0x1d, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x84, 0x5c, 0x87, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6c, 0x22, 0xd7, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x3b, 0x72, 0x1d, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xa1, 0xe4, 0x7a, 0x90, 0x10, 0x03, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x33, 0xb9, 0x1e, 0xa2, 0x39, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0x9e, 0x5c, 0x0f, 0xe3, 0x72, 0x1c, 0x3a, 0xac, 0x6f, 0x1e, 0x8f, 0x0f, 0x8a, 0xe2, 0x86, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xe1, 0x72, 0x1d, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xbe, 0x5c, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x87, 0xb9, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x16, 0x99, 0xeb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0x67, 0xae, 0xc3, 0x2f, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x3b, 0xcd, 0xf5, 0x20, 0xd6, 0xf4, 0x56, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8f, 0xcd, 0xf5, 0x20, 0x12, 0x1b, 0x58, 0x8e, 0x43, 0xc7, 0xb7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xde, 0x5c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x91, 0x73, 0x3d, 0x88, 0xc0, 0x20, 0x96, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0xe9, 0x5c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x51, 0x74, 0x1d, 0x76, 0x43, 0x1e, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x1a, 0x5d, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xfb, 0xd1, 0xf5, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x24, 0x5d, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xa3, 0xd2, 0x75, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xbd, 0x74, 0x1d, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x34, 0x5d, 0x0f, 0xe3, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x44, 0xa7, 0xeb, 0x41, 0x9b, 0x00, 0x01, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xfd, 0xe9, 0xba, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0xa2, 0xae, 0x1b, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4f, 0xa9, 0xeb, 0xc1, 0xf2, 0x9a, 0xa0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x50, 0x5d, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xac, 0xba, 0x0e, 0x92, 0x81, 0xa3, 0xeb, 0x90, 0x5c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf4, 0x56, 0xd7, 0x43, 0x34, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0xc2, 0xba, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x41, 0xb3, 0xae, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0x6b, 0x5d, 0x0f, 0x02, 0x13, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xc4, 0x75, 0x3d, 0x8c, 0xcb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xd9, 0x75, 0x3d, 0x68, 0x13, 0x20, 0xe0, 0x38, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0xbe, 0xae, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x81, 0x5d, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x13, 0xbb, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x41, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0e, 0xb2, 0xeb, 0xa1, 0xa1, 0xce, 0xf1, 0xf8, 0x60, 0xa4, 0x69, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xae, 0xec, 0xba, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x7d, 0xcd, 0xae, 0x07, 0x21, 0x05, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2b, 0xb4, 0xeb, 0x20, 0x5a, 0xd8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0xa8, 0x5d, 0x0f, 0x42, 0x00, 0xfc, 0x90, 0xb5, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xdb, 0xda, 0x75, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5d, 0xb6, 0xeb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb4, 0x6e, 0xd7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x08, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x06, 0x77, 0x3d, 0x58, 0x08, 0xb3, 0x7f, 0x3c, 0x3e, 0x18, 0x69, 0x5a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x8d, 0xbb, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x84, 0xb9, 0xeb, 0x41, 0x48, 0x81, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x8b, 0xee, 0x3a, 0x88, 0x16, 0x7e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x16, 0x76, 0xd7, 0x83, 0x10, 0x00, 0x3f, 0x64, 0xed, 0x8e, 0xc7, 0x07, 0xa5, 0xb9, 0xc1, 0x0a, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x45, 0xef, 0x3a, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xdd, 0xbb, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xd0, 0x77, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x50, 0x7e, 0xd7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0xfe, 0x5d, 0x87, 0x5f, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8c, 0xc0, 0xeb, 0x41, 0xac, 0xe9, 0xad, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x39, 0xc1, 0xeb, 0x41, 0x24, 0x36, 0xb0, 0x1c, 0x87, 0x8e, 0x6f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x1e, 0xbc, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xa7, 0xf0, 0x7a, 0x10, 0x81, 0x41, 0x2c, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x34, 0xbc, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x80, 0xf1, 0x3a, 0xec, 0x86, 0x3c, 0xd6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x6c, 0xbc, 0x1e, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x74, 0xc7, 0xeb, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x08, 0xf2, 0x3a, 0xdc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x8c, 0xbc, 0x1e, 0xc6, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xdc, 0x92, 0xd7, 0x83, 0x36, 0x01, 0x02, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x0f, 0xe5, 0x75, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x58, 0x79, 0x3d, 0x58, 0x5e, 0x13, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x77, 0xcb, 0xeb, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x07, 0xf3, 0x3a, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x63, 0xe6, 0xf5, 0x20, 0x30, 0xb1, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xee, 0x9a, 0xd7, 0xc3, 0xb8, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3c, 0x9c, 0xd7, 0x83, 0x36, 0x01, 0x02, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xb4, 0xf3, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x8d, 0x3e, 0xaf, 0x87, 0x86, 0x3a, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x6b, 0x82, 0x5e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x20, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x91, 0xe8, 0xf5, 0x60, 0x21, 0xcc, 0xfe, 0xf1, 0xf8, 0x78, 0x7c, 0x50, 0xc4, 0xb3, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe6, 0xf4, 0x3a, 0xfc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x45, 0xbd, 0x0e, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xd7, 0xeb, 0x75, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5b, 0xd8, 0xeb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x90, 0xbd, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x6d, 0xf6, 0x3a, 0xfc, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0xd3, 0x5e, 0x0f, 0x9a, 0xb7, 0x5c, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x18, 0xb6, 0xd7, 0x83, 0x92, 0xa0, 0xe1, 0x38, 0x74, 0x7c, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xdc, 0xed, 0x75, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xde, 0xb8, 0xd7, 0xe1, 0x17, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x47, 0xf7, 0x7a, 0xd0, 0xbc, 0xe5, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xdc, 0xbd, 0x1e, 0x94, 0x04, 0x0d, 0xc7, 0xa1, 0xe3, 0xdb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x79, 0xaf, 0x83, 0x60, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x34, 0xbe, 0xd7, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0x03, 0x5f, 0x87, 0xdd, 0x60, 0x6c, 0x72, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2c, 0xe1, 0xeb, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x1d, 0xbe, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0x89, 0xaf, 0xc3, 0x6e, 0xc8, 0x63, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x47, 0xe3, 0xeb, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x3f, 0xbe, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x93, 0x7c, 0x3d, 0x18, 0xbc, 0x93, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x48, 0xe5, 0xeb, 0xc1, 0x98, 0xb0, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe1, 0x97, 0xaf, 0x07, 0x43, 0xb3, 0xeb, 0x38, 0xb4, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xa9, 0xf9, 0x3a, 0xec, 0x86, 0x5d, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xee, 0x7c, 0x3d, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x44, 0xd0, 0xd7, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xa3, 0xaf, 0x07, 0x83, 0x77, 0x72, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x30, 0x7d, 0x3d, 0x08, 0x4a, 0xef, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x8b, 0xfa, 0x7a, 0x30, 0x26, 0xac, 0x8e, 0x43, 0x0b, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x79, 0xab, 0xaf, 0xc3, 0x6e, 0x50, 0xf4, 0x24, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xab, 0xeb, 0xeb, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xc5, 0xbe, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0xb3, 0xaf, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x6d, 0x5f, 0x07, 0xc9, 0xe0, 0xda, 0xc1, 0xb9, 0xfe, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xca, 0x7d, 0x3d, 0x18, 0x13, 0x56, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x80, 0xf7, 0xf5, 0xa0, 0x38, 0x7d, 0x39, 0x0e, 0x2d, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xfb, 0xbe, 0x0e, 0x92, 0x21, 0x83, 0x68, 0xc1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x18, 0xe1, 0xd7, 0x43, 0x0b, 0xa0, 0x41, 0xb4, 0x20, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xab, 0xf8, 0x75, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x40, 0x7e, 0x3d, 0x18, 0x13, 0x56, 0xc7, 0xe3, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x2f, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x2b, 0xbf, 0x0e, 0xbb, 0x41, 0x51, 0xa5, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xce, 0xaf, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x0d, 0xfd, 0x3a, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x4d, 0xbf, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xb0, 0x7e, 0x3d, 0x88, 0xe2, 0x34, 0x97, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x18, 0xfb, 0xf5, 0x60, 0x4c, 0x58, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc0, 0xed, 0xd7, 0x83, 0x32, 0x1a, 0xe6, 0x38, 0xb4, 0xb0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe4, 0xfd, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0xc3, 0x5f, 0x0f, 0x0d, 0xbf, 0x06, 0xd1, 0x82, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6e, 0xf2, 0xd7, 0x0d, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xf2, 0xfc, 0xf5, 0x60, 0x4c, 0x58, 0x1d, 0x8f, 0x0f, 0xe9, 0xdc, 0xc3, 0xd1, 0x7e, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x8f, 0x6f, 0xc7, 0xe3, 0x83, 0x32, 0x72, 0x61, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x2e, 0xf9, 0xd7, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xad, 0xfe, 0x75, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x07, 0xfe, 0xeb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xeb, 0xbf, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xd9, 0xff, 0x3a, 0xfc, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x00, 0x60, 0x0f, 0x62, 0x4d, 0x6f, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x05, 0x60, 0x0f, 0x22, 0xb1, 0x81, 0xe5, 0x38, 0x74, 0x7c, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb4, 0x00, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x42, 0x04, 0xd8, 0xe1, 0x57, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa0, 0x05, 0xd8, 0x83, 0xb8, 0x1a, 0x62, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc0, 0x01, 0xf6, 0x10, 0xc3, 0x43, 0x4f, 0xd4, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0x21, 0x60, 0x07, 0xc1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x13, 0xb0, 0xc3, 0x6e, 0x58, 0x0b, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x34, 0x0b, 0xd8, 0x43, 0xd6, 0x6e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7a, 0x0c, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xdc, 0x80, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcc, 0x03, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x42, 0x60, 0x0f, 0xda, 0x03, 0xbd, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x79, 0x04, 0x76, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9c, 0x09, 0xec, 0x21, 0x5f, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0x29, 0xb0, 0x07, 0xcd, 0x6c, 0x04, 0x1c, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7c, 0x05, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x60, 0x17, 0xd8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x18, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x22, 0x03, 0x7b, 0x90, 0xba, 0x3e, 0x70, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x9d, 0x06, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe8, 0x1b, 0xd8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x18, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xb3, 0x03, 0x7b, 0x70, 0x10, 0xef, 0x3e, 0x1e, 0x1f, 0xdf, 0x8e, 0xc7, 0x07, 0x43, 0x6d, 0xe9, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x37, 0xcc, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x19, 0x93, 0x1e, 0xcf, 0x3b, 0x1e, 0x1f, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x06, 0x8b, 0xb0, 0x89, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcc, 0x95, 0xf4, 0xb0, 0x42, 0xdb, 0xf1, 0xf8, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xfe, 0xcd, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7e, 0x3d, 0xd2, 0xc3, 0x0a, 0x6d, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x28, 0xd7, 0x1c, 0x76, 0x43, 0xc7, 0x91, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x5c, 0xd7, 0x1c, 0x76, 0x83, 0xe7, 0xd6, 0xf2, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8a, 0xbb, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0xca, 0x6b, 0x1e, 0xbc, 0x7a, 0x97, 0x67, 0x90, 0x6d, 0x10, 0x29, 0xa0, 0x2e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xe0, 0x6b, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x53, 0xaf, 0x39, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb1, 0xbe, 0xe6, 0xc1, 0x2a, 0xfe, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xeb, 0xd7, 0x3c, 0x28, 0x6b, 0x01, 0x8f, 0x43, 0x87, 0x0e, 0x1a, 0xc3, 0x6e, 0xf0, 0x12, 0x62, 0x9e, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x06, 0xd8, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb2, 0x82, 0xcd, 0x83, 0x17, 0x29, 0xf3, 0x0c, 0xb2, 0x0d, 0x62, 0xea, 0xd4, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x76, 0x85, 0xcd, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x10, 0x36, 0x0f, 0x86, 0xac, 0xef, 0xb0, 0x0b, 0xb7, 0xc1, 0x1a, 0x14, 0xa0, 0x43, 0x34, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb3, 0x61, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x22, 0x36, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x58, 0x83, 0x02, 0xb4, 0xc1, 0x1a, 0x14, 0xa0, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0xd3, 0x55, 0x97, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x2d, 0x36, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x9f, 0xd8, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2e, 0x63, 0xf3, 0xe0, 0xb1, 0x4d, 0x1c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x07, 0xc7, 0xe6, 0x41, 0xc4, 0xba, 0x9f, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb4, 0xc7, 0xe6, 0x41, 0x59, 0x0b, 0x78, 0x1c, 0x3a, 0x74, 0xd0, 0x18, 0x76, 0x83, 0x12, 0x04, 0x72, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x43, 0x36, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc4, 0x64, 0xf3, 0x60, 0xa0, 0xfc, 0x0e, 0xb2, 0x0d, 0xe2, 0xaf, 0xd6, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd2, 0x95, 0xcd, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x51, 0x36, 0x07, 0xc1, 0x06, 0xed, 0x8c, 0xdc, 0x1f, 0xbc, 0x5c, 0x0a, 0x6a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x34, 0x97, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x97, 0xd9, 0x1c, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x60, 0x8d, 0xb6, 0xc2, 0xc1, 0x3b, 0x73, 0x7e, 0x06, 0xd9, 0x06, 0xb1, 0x99, 0xeb, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1b, 0xce, 0xe6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x99, 0x35, 0x9b, 0x83, 0x60, 0x83, 0x76, 0x46, 0xee, 0x0f, 0xde, 0x53, 0x78, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe2, 0xb9, 0xe6, 0xa1, 0x3f, 0xd5, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x6d, 0x27, 0x3a, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x47, 0x9f, 0xe8, 0xc1, 0x1a, 0xdb, 0x8c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xfa, 0x4f, 0xf4, 0x20, 0x0e, 0xb2, 0x56, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0x82, 0xa2, 0x07, 0x71, 0x90, 0xb5, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xcb, 0x0a, 0x45, 0x0f, 0xde, 0x88, 0xea, 0x71, 0x1c, 0x3a, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x58, 0xb5, 0xbb, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0xdf, 0xee, 0x0e, 0x1a, 0x49, 0xb2, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0xe5, 0xee, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xd5, 0xdd, 0x0d, 0x92, 0x81, 0x95, 0xbe, 0x83, 0x80, 0xf7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0c, 0xbc, 0xbb, 0x83, 0x28, 0x6b, 0x58, 0x39, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xbc, 0xbd, 0xbb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x7e, 0x77, 0x07, 0x8d, 0x24, 0xd9, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf1, 0x80, 0x77, 0x07, 0xed, 0xb0, 0x30, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x36, 0xc2, 0xbb, 0x83, 0x76, 0x58, 0x98, 0x8e, 0x43, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x08, 0x1d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x4d, 0x74, 0xb8, 0xb8, 0x20, 0x58, 0xdc, 0xe0, 0x45, 0x6e, 0x6e, 0x07, 0xaf, 0x5e, 0x72, 0x5b, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xac, 0x74, 0x38, 0xec, 0x06, 0xaf, 0x15, 0x79, 0x5b, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb8, 0xa6, 0xc3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x94, 0x3a, 0x1c, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xcd, 0x6f, 0x6e, 0x1b, 0xbc, 0xf9, 0xcd, 0xed, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x62, 0xd9, 0xda, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x96, 0xac, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0xac, 0x0e, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xdf, 0x3a, 0x3c, 0x78, 0x3f, 0x42, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd4, 0x7f, 0x8c, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x5e, 0x87, 0x07, 0xaf, 0x55, 0xbb, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x1d, 0x34, 0x86, 0xdd, 0xe0, 0xe5, 0x52, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x19, 0x76, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x81, 0x67, 0x87, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0x62, 0x2a, 0x68, 0x83, 0x57, 0x4c, 0x05, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x94, 0x7e, 0xbb, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe6, 0x76, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc8, 0xda, 0xe1, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x71, 0x87, 0x07, 0xef, 0x47, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfe, 0xb9, 0xc3, 0x83, 0xb7, 0xd4, 0x10, 0x1d, 0x87, 0x0e, 0x1d, 0x34, 0x86, 0xdd, 0xe0, 0xdd, 0x1f, 0x6f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x6e, 0x77, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0x79, 0x87, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0xb7, 0xe3, 0xe6, 0xe0, 0xfd, 0x59, 0x3d, 0x83, 0x6c, 0x83, 0x28, 0x3d, 0x77, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xed, 0xef, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x3a, 0xbe, 0xc3, 0x83, 0xe7, 0xc9, 0x18, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x24, 0x78, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0x88, 0x87, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0xc5, 0xcd, 0x6d, 0x83, 0xb7, 0xb8, 0xb9, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x14, 0xb0, 0xbb, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xf3, 0x78, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xfe, 0xe2, 0xe1, 0x20, 0xd8, 0x20, 0x82, 0xf5, 0x2c, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0xf7, 0xda, 0xf8, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x05, 0x3d, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb7, 0xf2, 0x70, 0xd8, 0x0d, 0xde, 0xcd, 0xe3, 0xb3, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x10, 0xd5, 0xc3, 0x83, 0xa7, 0x03, 0xf9, 0x1c, 0xbc, 0x5e, 0xc8, 0x67, 0xd8, 0x0d, 0x9e, 0xa4, 0x15, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0xac, 0x87, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x26, 0x7b, 0x38, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xf3, 0xb4, 0x82, 0x36, 0x78, 0x9e, 0x56, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x44, 0x53, 0xbd, 0xcb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf5, 0xb8, 0x87, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xd8, 0x1e, 0x1e, 0xbc, 0xea, 0x7f, 0x69, 0xd8, 0x0d, 0x1e, 0x48, 0x15, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc9, 0xbb, 0x87, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x1f, 0x7c, 0x38, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x63, 0xa9, 0x82, 0x36, 0x78, 0x2c, 0x55, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x44, 0x8f, 0xbe, 0xcb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x8d, 0xc8, 0x87, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x16, 0x1f, 0x1e, 0x3c, 0x4f, 0xc6, 0x68, 0xd8, 0x0d, 0x5e, 0x74, 0x15, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x6d, 0xcb, 0x87, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x07, 0x7d, 0x38, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0xeb, 0xae, 0x82, 0x36, 0x78, 0xdd, 0x55, 0xd0, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x44, 0xcb, 0xbf, 0xcb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0xd7, 0x87, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x50, 0x1f, 0x1e, 0xc4, 0x0b, 0xbc, 0xcb, 0xb0, 0x1b, 0xbc, 0x77, 0x07, 0x63, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe5, 0xe0, 0x87, 0x07, 0x4f, 0x07, 0xf2, 0x39, 0x78, 0x38, 0x92, 0xcf, 0xb0, 0x1b, 0x3c, 0x5c, 0xc9, 0x67, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x71, 0xea, 0x87, 0x07, 0x4f, 0x07, 0xf2, 0x39, 0x78, 0xd7, 0x93, 0xcf, 0xb0, 0x1b, 0xbc, 0x1f, 0x2b, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0xda, 0x0f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x4a, 0xfe, 0xf0, 0x60, 0x69, 0xa9, 0xd5, 0x20, 0xdb, 0x20, 0x3e, 0x0f, 0x5e, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xc0, 0x3f, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xa4, 0xfe, 0xf0, 0xe0, 0x55, 0xff, 0x4b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xeb, 0x1f, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x24, 0x00, 0xe2, 0x41, 0xcc, 0x83, 0xbb, 0x0c, 0xb2, 0x0d, 0x22, 0x6c, 0xe1, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb2, 0x01, 0xc4, 0x83, 0xa1, 0xf9, 0x7b, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x1e, 0xaf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x10, 0x94, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x4e, 0x50, 0x2e, 0x2e, 0x08, 0x16, 0x0f, 0x9e, 0xc6, 0xe4, 0xb6, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x2f, 0x83, 0x72, 0xd8, 0x85, 0x5b, 0x3c, 0x28, 0xd8, 0xf8, 0x0e, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x14, 0x0e, 0xca, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x10, 0xa1, 0x1c, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x20, 0x7a, 0x23, 0x5e, 0x36, 0x88, 0xde, 0x88, 0x97, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0x25, 0x89, 0x97, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x51, 0x28, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x2d, 0xa1, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0x30, 0xee, 0xa0, 0x0e, 0x1d, 0x34, 0x86, 0xdd, 0xe0, 0x19, 0x62, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xc3, 0x42, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x4d, 0x32, 0x94, 0x07, 0x6f, 0x5c, 0x3c, 0x1b, 0x64, 0x1b, 0x44, 0xf1, 0xc5, 0xcb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x51, 0x38, 0x94, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xd4, 0x50, 0x1e, 0x44, 0x9e, 0xc5, 0xcb, 0xb0, 0x0b, 0xb7, 0x78, 0xd0, 0x9a, 0xbf, 0xe5, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb3, 0x43, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x42, 0x94, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xc4, 0xe7, 0xc6, 0xcb, 0x06, 0xf1, 0xb9, 0xf1, 0x72, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0x51, 0xc3, 0xf1, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x5d, 0x49, 0x94, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x18, 0x51, 0x0e, 0x82, 0x0d, 0xe2, 0xd2, 0xe2, 0xe5, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0x10, 0x35, 0x1c, 0x2f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xf7, 0x44, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0f, 0x13, 0xe5, 0xc1, 0x0b, 0x6d, 0xae, 0x06, 0xd9, 0x06, 0x51, 0xc3, 0xf1, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5c, 0x15, 0xe5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x5d, 0x52, 0x94, 0x07, 0xcf, 0xec, 0xb9, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x0a, 0x8b, 0x72, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0xbf, 0x28, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x1c, 0x0f, 0x1e, 0xc7, 0xe4, 0xb6, 0x41, 0xa4, 0x9b, 0xbc, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x1c, 0x95, 0xbc, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xae, 0x19, 0xe5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x63, 0x94, 0x07, 0x71, 0x06, 0xf2, 0x32, 0xc8, 0x36, 0x88, 0xa3, 0x92, 0x97, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x66, 0xa3, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x33, 0x8d, 0xf2, 0xe0, 0x85, 0x36, 0x57, 0x83, 0x6c, 0x83, 0x38, 0x2a, 0x79, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x59, 0x8e, 0x72, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xdc, 0x37, 0xca, 0x83, 0x67, 0xf6, 0x5c, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xee, 0x8e, 0x72, 0x10, 0x6c, 0xf0, 0x1c, 0x16, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0xd8, 0xe0, 0xbd, 0x36, 0x3e, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x10, 0x29, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xea, 0xa3, 0x1c, 0x76, 0x83, 0x77, 0xf3, 0xf8, 0x2c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x3c, 0x92, 0xf2, 0xe0, 0xe9, 0x40, 0x3e, 0x07, 0xaf, 0x17, 0xf2, 0x19, 0x76, 0x83, 0xf7, 0xee, 0x60, 0x2c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x71, 0x93, 0xf2, 0xe0, 0xe9, 0x40, 0x3e, 0x07, 0x0f, 0x47, 0xf2, 0x19, 0x76, 0x83, 0x87, 0x2b, 0xf9, 0x2c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xa5, 0x94, 0xf2, 0xe0, 0xe9, 0x40, 0x3e, 0x07, 0xef, 0x7a, 0xf2, 0x19, 0x76, 0x83, 0x28, 0x8d, 0x78, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x08, 0x54, 0xca, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x5e, 0xa5, 0x3c, 0x88, 0xcc, 0x89, 0x97, 0x41, 0xb6, 0x41, 0x2c, 0xe0, 0xbc, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x1d, 0x4b, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xad, 0x2b, 0xe5, 0x41, 0xe4, 0x59, 0xbc, 0x0c, 0xbb, 0xc1, 0x33, 0xc4, 0x82, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x98, 0x96, 0x72, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x71, 0x29, 0x0f, 0xde, 0xb8, 0x78, 0x36, 0xc8, 0x36, 0x88, 0x1b, 0x9e, 0x97, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x7d, 0x29, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xdb, 0xa5, 0x3c, 0x88, 0x3c, 0x8b, 0x97, 0x61, 0x37, 0x88, 0xc3, 0x8d, 0x97, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x0b, 0xa6, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xa0, 0x62, 0xca, 0x83, 0x18, 0xec, 0x78, 0x19, 0x64, 0x1b, 0xc4, 0x18, 0xd0, 0xcb, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x2d, 0x53, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x81, 0x4c, 0x79, 0x10, 0x67, 0x20, 0x2f, 0x83, 0x6c, 0x83, 0x18, 0x03, 0x7a, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb2, 0x68, 0xca, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x9c, 0x29, 0x0f, 0x5e, 0x68, 0x73, 0x35, 0xc8, 0x36, 0x88, 0x31, 0xa0, 0x97, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xae, 0x29, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0xa2, 0xa6, 0x3c, 0x78, 0x66, 0xcf, 0xd5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x39, 0xda, 0x94, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xe0, 0x4d, 0x79, 0x10, 0x95, 0x26, 0x2f, 0x83, 0x6c, 0x83, 0xe8, 0x42, 0x7a, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x02, 0x72, 0xca, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xbb, 0xc1, 0x29, 0x0f, 0xe2, 0x0c, 0xe4, 0x65, 0x90, 0x6d, 0x10, 0x5d, 0x48, 0x2f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xa2, 0x4e, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb9, 0x39, 0xe5, 0xc1, 0x0b, 0x6d, 0xae, 0x06, 0xd9, 0x06, 0xd1, 0x85, 0xf4, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x06, 0x3c, 0xe5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0xed, 0x94, 0x07, 0xcf, 0xec, 0xb9, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xe5, 0xb1, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xef, 0xc7, 0x6e, 0x71, 0x41, 0xb0, 0xb8, 0xc1, 0x33, 0xd6, 0xde, 0x0e, 0x02, 0xe0, 0x7e, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1c, 0x92, 0xdd, 0xb0, 0x1b, 0x3c, 0x29, 0xed, 0x6d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0x96, 0xec, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x1a, 0xca, 0x6e, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xe7, 0xa5, 0xbd, 0x6d, 0xf0, 0xbc, 0xb4, 0xb7, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0x17, 0xaa, 0x97, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0xae, 0xec, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xa3, 0xb2, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x48, 0xcb, 0xee, 0xe0, 0xfc, 0x13, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0x5d, 0x76, 0x07, 0xa7, 0xd6, 0xe6, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x95, 0x60, 0x76, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x66, 0x66, 0x37, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x03, 0xd6, 0xde, 0x36, 0x78, 0xc0, 0xda, 0xdb, 0xe1, 0x14, 0x1b, 0x64, 0x1b, 0x44, 0xef, 0xd6, 0xcb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x09, 0x6d, 0x76, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0xa8, 0xd9, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xfd, 0x66, 0x77, 0x70, 0xfe, 0x09, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5c, 0x39, 0xbb, 0x83, 0x77, 0xf7, 0x0c, 0x1d, 0x87, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x86, 0x67, 0x37, 0xec, 0x86, 0x8e, 0x23, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x0d, 0x68, 0x37, 0x08, 0x36, 0x78, 0xef, 0xf4, 0xdb, 0xa1, 0x51, 0xcb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf5, 0x7d, 0x76, 0x83, 0x60, 0x83, 0xd7, 0xa5, 0x0b, 0x1d, 0x1a, 0xb5, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x93, 0xd0, 0x6e, 0x10, 0x6c, 0x68, 0x3b, 0xb3, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xf9, 0xd0, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x1b, 0xed, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x8a, 0xb4, 0x1b, 0x7e, 0x83, 0x91, 0x80, 0x73, 0x48, 0x1d, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x2d, 0xa5, 0xdd, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe1, 0x97, 0x76, 0xc3, 0x2f, 0x48, 0x36, 0x58, 0x73, 0x81, 0x74, 0x30, 0xfc, 0x63, 0x0f, 0xa9, 0x83, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0x35, 0xed, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xf1, 0xb4, 0x3b, 0x34, 0x12, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x0d, 0xe2, 0x24, 0xed, 0x65, 0x41, 0xb6, 0x41, 0x4c, 0xaa, 0xbd, 0x0c, 0xb2, 0x0d, 0xe2, 0x3b, 0xed, 0x65, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0x48, 0xc0, 0x39, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0x71, 0x92, 0xf6, 0xb2, 0x20, 0xdb, 0x20, 0xfa, 0xd8, 0x5e, 0x06, 0xd9, 0x06, 0x91, 0xbc, 0xf6, 0x32, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0x20, 0x56, 0xda, 0x5e, 0x0e, 0x4d, 0x81, 0x06, 0xd9, 0x06, 0x71, 0x92, 0xf6, 0x32, 0xc8, 0x36, 0x88, 0x61, 0xb7, 0x97, 0x41, 0xb6, 0x41, 0x3c, 0xb8, 0xbd, 0x1c, 0x3c, 0x23, 0x18, 0xee, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x3c, 0x5e, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x8c, 0xda, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x98, 0x6a, 0x77, 0xf0, 0x12, 0x8d, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x89, 0xd5, 0xee, 0xe0, 0x3d, 0xb0, 0x48, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xe6, 0xd5, 0xee, 0xe0, 0xdd, 0x3d, 0x43, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xd1, 0xda, 0x0d, 0xbf, 0x21, 0xb9, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6d, 0xae, 0xdd, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x07, 0x6c, 0x37, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x67, 0xd8, 0x6e, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x3b, 0xb6, 0x3b, 0x78, 0xde, 0x2b, 0xc0, 0xc1, 0xea, 0x5e, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x57, 0xb6, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb5, 0xd9, 0xee, 0xe0, 0xdd, 0x29, 0x43, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x79, 0xed, 0x86, 0xdf, 0xe0, 0xfc, 0x44, 0x7b, 0x7c, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x5e, 0xb4, 0xdd, 0x20, 0xd8, 0xd0, 0x76, 0x66, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x29, 0xb5, 0xdd, 0xf0, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xd0, 0xb6, 0x3b, 0x68, 0x88, 0x2a, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xe7, 0xb6, 0x3b, 0xa4, 0x0e, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf2, 0xb7, 0xdd, 0xc1, 0x01, 0x01, 0xfb, 0x38, 0x74, 0x48, 0x1d, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x06, 0x91, 0x5f, 0xf8, 0x32, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0x20, 0x4e, 0x0d, 0x5f, 0x0e, 0x8d, 0x5a, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0x7b, 0x6d, 0x7c, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0xcf, 0xdb, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x8b, 0x6e, 0x37, 0xec, 0x06, 0xef, 0xe6, 0xf1, 0x59, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x12, 0xc0, 0xdd, 0xc1, 0xd3, 0x81, 0x7c, 0x0e, 0x5e, 0x2f, 0xe4, 0x33, 0xec, 0x06, 0x4b, 0x2c, 0xad, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x90, 0xe0, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0x14, 0xee, 0x0e, 0x16, 0x6d, 0x5a, 0x0d, 0xb2, 0x0d, 0xe2, 0x16, 0xf2, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x74, 0x86, 0xbb, 0x83, 0xa1, 0xf9, 0x3b, 0xec, 0x06, 0xef, 0xb6, 0x0f, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xdc, 0x87, 0xbb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xab, 0xb8, 0x1b, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x0d, 0xf7, 0x41, 0x1b, 0xbc, 0xe1, 0x3e, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x62, 0x83, 0xf2, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x06, 0x8e, 0xbb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x32, 0xee, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xf6, 0xb8, 0x3b, 0x38, 0xad, 0xe0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8e, 0xc8, 0xdd, 0xc1, 0xa9, 0xb5, 0xf9, 0x38, 0x74, 0xe8, 0xa0, 0x31, 0xec, 0x06, 0xaf, 0xc4, 0x0f, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x96, 0x92, 0xbb, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x57, 0xb9, 0x1b, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0xc5, 0xf8, 0x41, 0x1b, 0xbc, 0x18, 0x3f, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x62, 0x81, 0xf3, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd0, 0x98, 0xbb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0x5d, 0xee, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xa3, 0xb9, 0x3b, 0x38, 0xad, 0xe0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd4, 0xcd, 0xdd, 0xc1, 0x08, 0x89, 0x3a, 0x0e, 0x1d, 0x3a, 0x68, 0x0c, 0xbb, 0xc1, 0x33, 0xe8, 0x83, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x5a, 0xe7, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x80, 0xee, 0x86, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x12, 0x7d, 0xd0, 0x06, 0x4f, 0xa2, 0x0f, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0xb8, 0x1f, 0x7d, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xac, 0xa3, 0xbb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x13, 0x88, 0xee, 0x0e, 0xe2, 0x0c, 0xe4, 0x65, 0x90, 0x6d, 0x10, 0xf7, 0xa3, 0x2f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x36, 0xdd, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xa3, 0x74, 0x37, 0x08, 0x36, 0x78, 0xa6, 0x31, 0xd4, 0xa1, 0x05, 0xd8, 0xb0, 0x1b, 0xbc, 0x77, 0x07, 0x63, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x25, 0x59, 0x77, 0x07, 0x4f, 0x07, 0xf2, 0x39, 0x78, 0x38, 0x92, 0xcf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x88, 0xb2, 0xbb, 0x83, 0xa7, 0x03, 0xf9, 0x1c, 0xbc, 0xeb, 0xc9, 0xe7, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x74, 0xa3, 0xca, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x5b, 0x98, 0x2a, 0x0f, 0x56, 0xf1, 0xef, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb6, 0x53, 0xe5, 0xb0, 0x1b, 0x3a, 0x8e, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0f, 0x55, 0xe5, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xf9, 0x56, 0x95, 0x07, 0x8d, 0x24, 0xd9, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0x59, 0x95, 0x83, 0x64, 0xa0, 0x79, 0xdf, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x74, 0x55, 0x1e, 0xb4, 0x3f, 0xbf, 0x74, 0x1c, 0x3a, 0x34, 0x6a, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x31, 0xaa, 0xf2, 0x20, 0x62, 0xdd, 0x4f, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0xa3, 0x96, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xee, 0x6c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe6, 0xb3, 0xb9, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x61, 0x43, 0x9b, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4e, 0xd2, 0xe6, 0xe2, 0x82, 0x60, 0x71, 0x83, 0x97, 0xef, 0x6d, 0x1e, 0x4e, 0xb1, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x31, 0x4e, 0x9b, 0xc3, 0x2e, 0xdc, 0xe2, 0xc1, 0x8b, 0x68, 0x1d, 0x0f, 0xd1, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x72, 0xa8, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x9d, 0xda, 0x1c, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x20, 0x06, 0x7e, 0x5f, 0x36, 0x88, 0x81, 0xdf, 0x97, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0xcd, 0xdf, 0x97, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0xd4, 0xda, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xe8, 0x6a, 0x73, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0xc1, 0x39, 0xf8, 0xfb, 0xd0, 0x14, 0x68, 0x90, 0x6d, 0x10, 0x9b, 0xbf, 0x2f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x82, 0x6d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xd6, 0xb5, 0x39, 0x08, 0x36, 0x88, 0xf5, 0xe1, 0x97, 0x43, 0x0b, 0xb0, 0x61, 0x37, 0x78, 0x37, 0x8f, 0xda, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x8d, 0x6d, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8a, 0xd9, 0xe6, 0xc1, 0x43, 0x86, 0xd4, 0x06, 0xd9, 0x06, 0x11, 0x78, 0xfc, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x4d, 0x6c, 0x9b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xa4, 0x6d, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x48, 0x66, 0xb0, 0x38, 0x34, 0x05, 0x1a, 0x64, 0x1b, 0x44, 0xe0, 0xf1, 0xcb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc5, 0x73, 0x9b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0xc2, 0x6d, 0x0e, 0x82, 0x0d, 0xa2, 0x60, 0xf9, 0xe5, 0xd0, 0x02, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x56, 0xbb, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xcb, 0xdb, 0x1c, 0x76, 0xe1, 0x36, 0x44, 0x73, 0x3c, 0x78, 0xf9, 0xde, 0xe6, 0x06, 0xd1, 0xfd, 0xfc, 0x72, 0x38, 0xc5, 0x06, 0xd9, 0x06, 0xb1, 0xe3, 0xfc, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0x80, 0x9b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xf4, 0x6d, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x33, 0xb8, 0x79, 0xd0, 0xf6, 0x42, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x18, 0x6e, 0x0e, 0x82, 0x0d, 0x5a, 0xb9, 0x2e, 0x3f, 0x78, 0x48, 0xfe, 0xc5, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x68, 0x0a, 0x34, 0xc8, 0x36, 0x88, 0x1d, 0xe7, 0x97, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0x17, 0x37, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x46, 0xdc, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd9, 0x71, 0xf3, 0xa0, 0xed, 0x85, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x8c, 0xdc, 0x3c, 0x88, 0xd3, 0xea, 0x97, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0x02, 0xec, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd1, 0x96, 0x9b, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x66, 0x6e, 0x1e, 0x34, 0x3b, 0xb0, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0x9c, 0x9b, 0x07, 0x25, 0x43, 0xd3, 0x71, 0xe8, 0xd0, 0xa8, 0xe5, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x60, 0x59, 0x18, 0xcc, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x06, 0xd1, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x3f, 0xdd, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x96, 0x74, 0x73, 0x10, 0x6c, 0x10, 0xeb, 0xc3, 0x2f, 0x87, 0x34, 0xdc, 0x20, 0xdb, 0x20, 0x16, 0xc5, 0x5f, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xc2, 0x75, 0x73, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x68, 0xd5, 0xcd, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x64, 0x40, 0xf8, 0xdf, 0x1d, 0x92, 0x4b, 0x87, 0xa6, 0x40, 0x83, 0x6c, 0x83, 0x58, 0x14, 0x7f, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1a, 0xda, 0xcd, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x61, 0x37, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xb7, 0xdd, 0x3c, 0x78, 0x28, 0xcf, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x9c, 0xbb, 0x79, 0x10, 0x53, 0xe7, 0x2f, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0x79, 0x37, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x7b, 0x78, 0x73, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb0, 0xdf, 0xcd, 0x83, 0x66, 0xad, 0xcb, 0x07, 0xd9, 0x06, 0xf1, 0xda, 0xfe, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7c, 0xf2, 0xe6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa5, 0xc6, 0x9b, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc9, 0xc0, 0xf1, 0x77, 0x10, 0xe4, 0xfc, 0x87, 0x0e, 0x1a, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x13, 0xd1, 0x20, 0xdb, 0x20, 0x16, 0xc5, 0x5f, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x81, 0xde, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x9c, 0x79, 0x73, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x76, 0xe9, 0xcd, 0x83, 0xb6, 0x17, 0xfa, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb6, 0x7a, 0xf3, 0x20, 0x4e, 0xab, 0x5f, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0xf7, 0xa3, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x0a, 0x82, 0xc5, 0x0d, 0xa7, 0xd8, 0x06, 0xcf, 0xee, 0xe0, 0x6c, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xb7, 0xf6, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x82, 0x6f, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xd8, 0xbd, 0x39, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0xf8, 0x0d, 0x5a, 0x36, 0x12, 0x39, 0x48, 0x77, 0xdf, 0x39, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0x91, 0xa9, 0xff, 0x32, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1a, 0xf9, 0xe6, 0xb0, 0x0b, 0xb7, 0x41, 0x0c, 0xfc, 0xbe, 0x1c, 0x1a, 0x09, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc7, 0xf9, 0xe6, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xa7, 0x6f, 0x0e, 0xbb, 0x70, 0x1b, 0x1a, 0x09, 0x1e, 0xc4, 0xc0, 0xef, 0xcb, 0x41, 0x14, 0x06, 0xbf, 0x0c, 0xb2, 0x0d, 0x22, 0xf5, 0xff, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0xdf, 0x37, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x65, 0xdf, 0x1c, 0x04, 0x1b, 0xc4, 0xfa, 0xf0, 0xcb, 0xa1, 0x13, 0xd1, 0x20, 0xdb, 0x20, 0x52, 0xff, 0x5f, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xb0, 0xdf, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x5a, 0x7e, 0xf3, 0xe0, 0x25, 0xf3, 0x58, 0xc3, 0x2e, 0xdc, 0x06, 0x6f, 0xe8, 0x51, 0x3b, 0x34, 0x12, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6a, 0xfc, 0xcd, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xdc, 0xdf, 0x1c, 0x76, 0xe1, 0x36, 0x34, 0x12, 0x3c, 0x78, 0x43, 0x8f, 0xda, 0xc1, 0xab, 0x88, 0xd4, 0x06, 0xd9, 0x06, 0xb1, 0x72, 0x00, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x69, 0xfe, 0x9b, 0x83, 0x60, 0x83, 0x28, 0x58, 0x7e, 0x39, 0x74, 0x22, 0x1a, 0x64, 0x1b, 0xc4, 0xca, 0x01, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x91, 0x04, 0x9c, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x05, 0x70, 0x1e, 0xbc, 0x64, 0x1e, 0x6b, 0xd8, 0x85, 0xdb, 0x20, 0xba, 0x9f, 0x5f, 0x0e, 0x8d, 0x04, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xea, 0x80, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x14, 0x38, 0x87, 0x5d, 0xb8, 0x0d, 0x8d, 0x04, 0x0f, 0xa2, 0xfb, 0xf9, 0xe5, 0x20, 0x5e, 0xa0, 0x5f, 0x06, 0xd9, 0x06, 0x71, 0xdf, 0x00, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0c, 0x04, 0xe7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe5, 0x0c, 0x9c, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x4b, 0x70, 0x1e, 0xb4, 0xbd, 0xd0, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc1, 0x15, 0x9c, 0x07, 0x71, 0x5a, 0xfd, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x5a, 0x80, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x8a, 0xc1, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x5d, 0x1b, 0x9c, 0xc3, 0x2e, 0xdc, 0x86, 0x46, 0x82, 0xe3, 0xc1, 0xb3, 0x3b, 0x38, 0x37, 0x88, 0xf1, 0x0b, 0x98, 0xc3, 0x29, 0x36, 0xc8, 0x36, 0x88, 0x1a, 0x0b, 0x98, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0x3f, 0x38, 0x0f, 0x1e, 0xde, 0xd4, 0x73, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x91, 0x70, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9b, 0x0a, 0xe7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x25, 0x27, 0x9c, 0x83, 0x60, 0x83, 0x78, 0x38, 0x7f, 0x39, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0x11, 0xb0, 0x01, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x95, 0x30, 0x9c, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0xb5, 0x70, 0x1e, 0xbc, 0x2a, 0xd8, 0x67, 0x90, 0x6d, 0x10, 0x01, 0x1b, 0x30, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xda, 0x70, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x36, 0xc3, 0x39, 0x08, 0x36, 0x88, 0xf0, 0xf8, 0x97, 0x43, 0x0b, 0xb0, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xed, 0x70, 0x0e, 0x82, 0x0d, 0x96, 0x85, 0xc1, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x3e, 0xc4, 0x39, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xd2, 0x88, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x92, 0x38, 0x0f, 0x22, 0xae, 0xf7, 0x65, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x22, 0x29, 0xce, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0xac, 0x38, 0x0f, 0xa9, 0x83, 0xc5, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0xb1, 0x38, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xf2, 0xe2, 0x1c, 0x76, 0xe1, 0x36, 0x88, 0x81, 0xdf, 0x97, 0x83, 0xf1, 0xd3, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xcd, 0x64, 0x9c, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe8, 0x19, 0xe7, 0x70, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xa6, 0xc6, 0x79, 0x68, 0x24, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x93, 0x1b, 0xe7, 0xa1, 0xa1, 0xce, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xc8, 0x71, 0x0e, 0xa2, 0x85, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x60, 0xc7, 0x79, 0xb0, 0x10, 0x66, 0xff, 0x30, 0x2e, 0x87, 0x53, 0x6c, 0xd8, 0x85, 0xdb, 0xe0, 0x0d, 0x3d, 0x6a, 0x07, 0xe3, 0xa7, 0x6b, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0xf9, 0x38, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb8, 0x3f, 0xce, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x46, 0x90, 0xf3, 0xd0, 0x49, 0x6d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x06, 0x43, 0xce, 0x83, 0x72, 0xc3, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0x13, 0x39, 0x87, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5e, 0x46, 0xce, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xf0, 0x91, 0x73, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x92, 0x24, 0xe7, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd2, 0x4a, 0xce, 0x83, 0x96, 0x0a, 0x06, 0x06, 0xc9, 0x40, 0xf1, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x30, 0x39, 0x0f, 0x4d, 0xb8, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xc6, 0xc9, 0x79, 0xe8, 0xa4, 0x76, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xea, 0x93, 0x73, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x11, 0xe5, 0x3c, 0x28, 0xb5, 0x69, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xb7, 0x94, 0x73, 0x10, 0x2d, 0x88, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x72, 0xe5, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x11, 0xcb, 0x39, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8e, 0x96, 0xf3, 0xa0, 0xa5, 0x82, 0x81, 0x41, 0x32, 0x30, 0x54, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd0, 0x2d, 0xe7, 0xa1, 0x09, 0xd7, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xd1, 0xe5, 0x3c, 0x38, 0xb1, 0xdc, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x8e, 0x5e, 0xce, 0x83, 0x33, 0x09, 0xfa, 0x71, 0x68, 0x10, 0x2d, 0xec, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc1, 0xa9, 0x9c, 0x07, 0x27, 0x96, 0xfb, 0xc3, 0xb8, 0x1c, 0x4e, 0xb1, 0xc3, 0x29, 0x36, 0xc8, 0xd6, 0xd0, 0x7e, 0x7d, 0xb8, 0x0d, 0xa2, 0xfb, 0xf9, 0xe5, 0x60, 0xfc, 0x74, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x3a, 0xcc, 0x39, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x1a, 0x73, 0x0e, 0xb7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x45, 0xc9, 0x9c, 0x07, 0x67, 0xf5, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x3b, 0x9a, 0x39, 0x0f, 0x0d, 0x75, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xff, 0x99, 0x73, 0x10, 0x2d, 0xc8, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x9f, 0xe6, 0x3c, 0x58, 0x08, 0xb3, 0x7f, 0x18, 0x97, 0xc3, 0x29, 0x76, 0x3c, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x76, 0xcd, 0x39, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xda, 0x72, 0xce, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0xe1, 0x39, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xce, 0x73, 0x1e, 0xbc, 0x3c, 0x95, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0xec, 0x39, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xe3, 0x73, 0x1e, 0x34, 0x8f, 0x3f, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xee, 0x73, 0x1e, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xe1, 0x9f, 0x73, 0x10, 0x6c, 0x10, 0x71, 0xbd, 0x2f, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x1f, 0x74, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xe1, 0xd0, 0x39, 0xec, 0x06, 0xb1, 0xee, 0xfb, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x14, 0x9d, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x23, 0x48, 0xe7, 0x21, 0x75, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x85, 0x17, 0x9d, 0x07, 0x31, 0xf0, 0xfb, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x1a, 0x9d, 0x87, 0xe4, 0xd2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa9, 0x1d, 0x9d, 0x87, 0xd4, 0xc1, 0xb0, 0x1b, 0xbc, 0x9b, 0x47, 0x6d, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x4d, 0x3a, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x7e, 0x99, 0xce, 0x43, 0xea, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x53, 0x3a, 0x0f, 0xde, 0xd0, 0xa3, 0xb6, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x45, 0x2d, 0x9d, 0x87, 0xe4, 0xd2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x19, 0x30, 0x9d, 0x87, 0xd4, 0xc1, 0x20, 0x5b, 0x43, 0xfb, 0xf5, 0xe1, 0x36, 0x88, 0xee, 0xe7, 0x97, 0x43, 0x34, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xc5, 0xe9, 0x1c, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0x8a, 0x3a, 0x0f, 0xa9, 0x83, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xdf, 0xe9, 0x3c, 0x88, 0xee, 0xe7, 0x97, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xfa, 0xe9, 0x3c, 0x24, 0x97, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x10, 0xea, 0x3c, 0xa4, 0x0e, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x9b, 0x91, 0x3a, 0x07, 0xc1, 0x06, 0x05, 0xb4, 0xe0, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x4d, 0x60, 0x9d, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xfb, 0xc5, 0x3a, 0x0f, 0x9e, 0x95, 0x68, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0x97, 0x75, 0x1e, 0xa2, 0x39, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x63, 0xd1, 0x3a, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0xad, 0x75, 0x1e, 0x1c, 0x9a, 0x84, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xdb, 0xad, 0xf3, 0x30, 0x2e, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xa5, 0xeb, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xee, 0xae, 0xf3, 0xa0, 0xd9, 0x81, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xe2, 0x1c, 0x44, 0x74, 0xfe, 0xcb, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1a, 0xbd, 0xce, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x01, 0xec, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x9e, 0xaf, 0xf3, 0x20, 0xba, 0x4c, 0x30, 0x06, 0xd9, 0x06, 0xb1, 0x2d, 0x07, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x97, 0x61, 0xe7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0x83, 0x9d, 0x07, 0xad, 0xb3, 0xdc, 0x1f, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0x43, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x14, 0x3b, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x34, 0x76, 0x0e, 0x92, 0x01, 0xf1, 0xfe, 0xde, 0x77, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfc, 0xc7, 0xce, 0x83, 0x74, 0x90, 0xee, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x2c, 0xd9, 0x39, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x56, 0x76, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x12, 0x66, 0xe7, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x19, 0x9b, 0x9d, 0x07, 0xcd, 0x0e, 0xac, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x78, 0x67, 0xe7, 0x41, 0xc9, 0xd0, 0x74, 0x1c, 0x3a, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0x11, 0xd5, 0x07, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x33, 0x68, 0xe7, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa5, 0xa3, 0x9d, 0x07, 0xcd, 0x0e, 0xac, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x9d, 0x69, 0xe7, 0x41, 0xc9, 0xd0, 0x74, 0x1c, 0x3a, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x5d, 0xed, 0x1c, 0x04, 0x8b, 0x1b, 0x44, 0x74, 0xfe, 0xcb, 0x41, 0x51, 0x2d, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x74, 0x6f, 0xe7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe1, 0xc8, 0x9d, 0xc3, 0x2e, 0xdc, 0x06, 0x31, 0x7e, 0x01, 0x73, 0x68, 0xa8, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0xcf, 0x9d, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0x41, 0x73, 0x93, 0x40, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0xc2, 0x04, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x1c, 0xbc, 0x9c, 0xba, 0x73, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x49, 0x77, 0x8e, 0x07, 0x2f, 0xa7, 0xee, 0x3c, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x61, 0x77, 0x1e, 0x4e, 0xb1, 0x61, 0x17, 0x6e, 0x83, 0xe8, 0x7e, 0x7e, 0x39, 0x34, 0xd4, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xfc, 0xee, 0xce, 0x0d, 0x31, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x19, 0xbc, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0xc7, 0x3b, 0x0f, 0xa2, 0xfb, 0xf9, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0xcc, 0x3b, 0x0f, 0xce, 0xea, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0xa5, 0x77, 0x1e, 0x2c, 0x84, 0xd9, 0x1f, 0x76, 0xe1, 0x36, 0x88, 0x81, 0xdf, 0x97, 0x43, 0x43, 0x9d, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x80, 0xef, 0x1c, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0xe5, 0x3b, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xd6, 0x77, 0x1e, 0x3c, 0x0c, 0xef, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xc2, 0xef, 0x3c, 0x38, 0xb1, 0xdc, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x0e, 0xfe, 0xce, 0x43, 0x23, 0xc1, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x06, 0x78, 0x0e, 0x82, 0x85, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x52, 0x02, 0xcf, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xec, 0xc0, 0x73, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x50, 0xf0, 0x1c, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x19, 0x3c, 0x0f, 0x4e, 0x2c, 0xf7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x3e, 0x78, 0x0e, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x97, 0x84, 0xe7, 0xa1, 0x91, 0xe0, 0x61, 0x7d, 0x73, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xa8, 0xc2, 0x73, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xbf, 0xf0, 0x3c, 0x38, 0x93, 0xa0, 0x1f, 0xd6, 0x37, 0x0f, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x86, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xbe, 0xe1, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0x1e, 0x9e, 0xe3, 0xc1, 0x5b, 0x42, 0x3c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xa9, 0xc4, 0xf3, 0x10, 0xcd, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x33, 0x51, 0x3c, 0x0f, 0xe3, 0x72, 0x88, 0xe1, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xdf, 0x8a, 0xe7, 0x86, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xe4, 0xe2, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0x30, 0x9e, 0x07, 0x31, 0xf0, 0xfb, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xd5, 0x33, 0x9e, 0x87, 0x46, 0x82, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xc7, 0xda, 0x78, 0x1e, 0x9c, 0x58, 0xee, 0x07, 0xd9, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0x21, 0x86, 0x83, 0x60, 0x83, 0xe6, 0x26, 0x81, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x84, 0x09, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x1c, 0xbc, 0x25, 0xc4, 0x73, 0xc3, 0xc4, 0xad, 0xa1, 0x98, 0xae, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0x6d, 0x98, 0xce, 0x0d, 0x33, 0xb4, 0x86, 0x19, 0xda, 0x20, 0xba, 0x1b, 0x2f, 0x36, 0x9c, 0x08, 0x1b, 0x44, 0x77, 0xe3, 0xc5, 0x06, 0x8b, 0xd9, 0xa0, 0x0e, 0x9e, 0x20, 0xb4, 0xb9, 0xe1, 0x44, 0xd8, 0x20, 0x9e, 0x62, 0x61, 0x36, 0x58, 0xcc, 0x06, 0x75, 0xf0, 0xb6, 0xa5, 0xcd, 0x0d, 0x27, 0xc2, 0x06, 0xd1, 0x0c, 0x0b, 0xb3, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0x58, 0xa8, 0x4c, 0x75, 0xf0, 0x42, 0xc4, 0xce, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6e, 0xed, 0xcd, 0x35, 0x7c, 0xee, 0x32, 0xf0, 0x69, 0xe4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x27, 0xf8, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x61, 0xf7, 0xe6, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x07, 0x25, 0x37, 0x68, 0x0a, 0x27, 0xf4, 0xe0, 0xe1, 0x1c, 0x9f, 0x07, 0xe7, 0x7a, 0x83, 0x0d, 0xcf, 0x93, 0x6c, 0x10, 0x25, 0xb5, 0x30, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xdd, 0xda, 0x9b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0xe4, 0x9b, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc7, 0xf9, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd5, 0xe9, 0x9b, 0x07, 0x0f, 0xca, 0xe8, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x95, 0x7d, 0x73, 0xc3, 0xe7, 0x2e, 0x1b, 0xbc, 0x88, 0xd6, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xfe, 0x7d, 0x73, 0x83, 0x52, 0x42, 0x7c, 0x83, 0x15, 0x64, 0xfa, 0x1b, 0x1e, 0x94, 0xdc, 0x60, 0xf9, 0xf1, 0xf6, 0xc1, 0xbb, 0x51, 0xae, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0xe5, 0x37, 0x37, 0x7c, 0xee, 0xb2, 0xc1, 0x8b, 0xad, 0x57, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0xec, 0x37, 0x37, 0x7c, 0xfd, 0xb2, 0x86, 0x7f, 0x73, 0x36, 0x68, 0x64, 0x7b, 0xe0, 0xa0, 0x91, 0xed, 0x81, 0x83, 0x46, 0xb6, 0x07, 0x0e, 0x5a, 0xe3, 0x21, 0x58, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xe3, 0x7c, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xea, 0xf4, 0xcd, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0xa1, 0x91, 0xe0, 0x86, 0x37, 0xee, 0xe6, 0xe0, 0x45, 0xb4, 0x8e, 0x07, 0x0f, 0xca, 0xe8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0x38, 0xdf, 0x5c, 0xc3, 0xe7, 0x2e, 0x1b, 0xbc, 0x88, 0xd6, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xfe, 0x7d, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x95, 0x7d, 0x73, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0xad, 0x3a, 0xc6, 0x41, 0xbb, 0x96, 0x06, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x1d, 0xe7, 0x9b, 0x1b, 0x3e, 0x77, 0xd9, 0xe0, 0xc5, 0xd6, 0x2b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x19, 0xf6, 0x9b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xd1, 0xf2, 0x9b, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x34, 0xb2, 0x3d, 0x70, 0x30, 0x32, 0x7b, 0x37, 0x58, 0x05, 0x26, 0xbb, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x68, 0x5d, 0xac, 0xe0, 0x60, 0x64, 0xf6, 0x1e, 0x2c, 0x73, 0x92, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0x2c, 0x80, 0x3e, 0x5a, 0xc3, 0x83, 0x92, 0x1b, 0x87, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xab, 0xf1, 0x37, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0xdc, 0xdf, 0x3c, 0x78, 0xec, 0x4a, 0xe7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0xfe, 0x9b, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0xa0, 0xe4, 0x06, 0xcb, 0x8f, 0xb7, 0x37, 0xbc, 0xad, 0x73, 0xf0, 0x3a, 0xb7, 0xcd, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa2, 0x00, 0xce, 0x0d, 0x9f, 0xbb, 0x6c, 0xf0, 0x62, 0xeb, 0x95, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x48, 0x02, 0xce, 0x83, 0x28, 0x10, 0x86, 0x39, 0x68, 0x8d, 0x87, 0x60, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x6a, 0xfc, 0xcd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x23, 0xf7, 0x37, 0x37, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x46, 0x82, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x97, 0xf4, 0xa8, 0x1d, 0x3c, 0x76, 0xa5, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x1a, 0x7f, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x34, 0xff, 0xcd, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x83, 0x28, 0x8d, 0x86, 0x39, 0x68, 0xd7, 0xd2, 0x60, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x1a, 0x7f, 0x73, 0xc3, 0xe7, 0x2e, 0x1b, 0xbc, 0xd8, 0x7a, 0x65, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x92, 0x80, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x28, 0x80, 0xf3, 0x20, 0xa6, 0x96, 0x61, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0x0b, 0xa0, 0x8f, 0xd6, 0xf0, 0xa0, 0xe4, 0xc6, 0xa1, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xa8, 0x03, 0xce, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x1b, 0x14, 0x38, 0x0f, 0x5e, 0xdb, 0xd3, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0xce, 0xc0, 0xb9, 0xe1, 0x73, 0x97, 0x0d, 0x1e, 0x4c, 0xc7, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x03, 0xc1, 0xb9, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0x0f, 0x4a, 0x6e, 0xb0, 0xfc, 0x78, 0x7b, 0xc3, 0xbb, 0x3d, 0x1b, 0xbc, 0x4c, 0x82, 0x73, 0x0d, 0x1f, 0xb5, 0x1f, 0xbc, 0xa5, 0x82, 0xb3, 0x83, 0xd6, 0x78, 0x08, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x8f, 0x3a, 0xe0, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x41, 0x81, 0x73, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x68, 0x24, 0xb8, 0xe1, 0x8d, 0xbb, 0x39, 0x78, 0xf9, 0xde, 0xe6, 0xc1, 0x6b, 0x7b, 0x3a, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0x0e, 0x38, 0x37, 0x7c, 0xee, 0xb2, 0xc1, 0x83, 0xe9, 0xb8, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x63, 0x20, 0x38, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0x19, 0x38, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x0f, 0xa2, 0x17, 0x1c, 0xe6, 0xa0, 0x45, 0x21, 0x82, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x52, 0x0c, 0xce, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xbb, 0x36, 0x38, 0x37, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x46, 0x82, 0x1b, 0xde, 0xb8, 0x9b, 0x83, 0x67, 0x77, 0x70, 0x6e, 0x78, 0xe3, 0xee, 0xe0, 0x6d, 0x1d, 0x9c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa5, 0x18, 0x9c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x85, 0x1f, 0x9c, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0xc6, 0x75, 0x0b, 0x0e, 0x82, 0xd2, 0xfb, 0xe0, 0x18, 0x6e, 0x70, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0x28, 0xa9, 0x85, 0xd9, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0x81, 0x4f, 0x23, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x0d, 0xe2, 0x29, 0x16, 0x66, 0xc3, 0x89, 0xb0, 0x41, 0x3c, 0xc5, 0xc2, 0x6c, 0xb0, 0x98, 0x0d, 0xea, 0xe0, 0x95, 0x20, 0x9f, 0x1b, 0x4e, 0x84, 0x0d, 0x62, 0xe2, 0x1d, 0x66, 0x83, 0xc5, 0x6c, 0x50, 0xcb, 0x2c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xf3, 0x24, 0x6b, 0xb0, 0x50, 0x99, 0xea, 0xa0, 0x95, 0x9c, 0xd0, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xfc, 0xa1, 0xcf, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x9b, 0x41, 0x3e, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x03, 0x94, 0x3e, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x73, 0x8d, 0x3e, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x0f, 0x5e, 0x67, 0x5e, 0x7d, 0x70, 0xae, 0x37, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0x71, 0x23, 0x0f, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x3f, 0xf4, 0xb9, 0xe1, 0x73, 0x97, 0x0d, 0x1e, 0x42, 0xb2, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x02, 0xf5, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0xcd, 0xf4, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0x6d, 0x9d, 0x83, 0x67, 0x90, 0x6c, 0x1e, 0x1c, 0x40, 0x93, 0x0e, 0x56, 0xd2, 0xe9, 0x1f, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x10, 0xc3, 0xf1, 0x30, 0x1b, 0x8a, 0xe9, 0x06, 0xb1, 0x09, 0x0b, 0xb3, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0x10, 0x95, 0xc5, 0x30, 0x1b, 0x26, 0x6e, 0x0d, 0x73, 0xbf, 0xc1, 0x8b, 0x68, 0x1d, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x1e, 0x44, 0x77, 0xe3, 0xc5, 0x86, 0x13, 0x61, 0x83, 0x98, 0xec, 0x87, 0xd9, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x0f, 0xb9, 0x9d, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x4b, 0xe4, 0x39, 0x78, 0xab, 0x0e, 0xcf, 0xc1, 0x4a, 0x3a, 0xfd, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xe2, 0xe1, 0x1f, 0x66, 0xc3, 0xdc, 0x6f, 0xf0, 0x62, 0xeb, 0x95, 0x83, 0x56, 0x14, 0xfe, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x06, 0xd1, 0x0c, 0x0b, 0xb3, 0xe1, 0x44, 0xd8, 0x20, 0x9a, 0x61, 0x61, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0x06, 0x0b, 0x95, 0xa9, 0x0e, 0x5e, 0x2e, 0x98, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xde, 0x20, 0xba, 0xb9, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0x11, 0xad, 0xe3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xfe, 0xe9, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x2d, 0xe9, 0xe6, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x5b, 0x75, 0x8c, 0x83, 0x73, 0xbd, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x88, 0x17, 0x82, 0x98, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x06, 0xd1, 0xcd, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x63, 0x6c, 0xec, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0x5c, 0x37, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xa3, 0x55, 0x37, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x0f, 0x5e, 0x39, 0xea, 0x79, 0xd0, 0x1a, 0x0f, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x88, 0x17, 0x82, 0x98, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x06, 0xd1, 0xcd, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x4b, 0x7a, 0xd4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x6b, 0x68, 0x37, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x61, 0x37, 0x37, 0xbc, 0xdb, 0xb3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x2b, 0xc8, 0xf4, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0xd3, 0x6c, 0x37, 0xd7, 0xf0, 0x51, 0xfb, 0xc1, 0x63, 0x72, 0x37, 0xd7, 0xf0, 0x51, 0xfb, 0xc1, 0x1b, 0x78, 0x37, 0x3b, 0x68, 0xd7, 0xd2, 0x60, 0xc3, 0xf3, 0x24, 0x1b, 0xc4, 0x0b, 0x41, 0xcc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x83, 0xe8, 0xe6, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0x30, 0x1d, 0xd7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x09, 0xf4, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x38, 0xf3, 0xe6, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x77, 0x7b, 0x36, 0x78, 0x96, 0xf4, 0xe6, 0x1a, 0x3e, 0x6a, 0x3f, 0x78, 0x48, 0xf5, 0x66, 0x07, 0xcd, 0x7b, 0x1a, 0x1c, 0xac, 0xa4, 0xd3, 0x3f, 0x9c, 0x62, 0x87, 0x53, 0xec, 0x20, 0x76, 0x07, 0x62, 0x0e, 0x42, 0x00, 0xfc, 0x38, 0x74, 0x1c, 0x3a, 0x88, 0x1a, 0x54, 0x98, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0xfe, 0x3b, 0x0f, 0x31, 0x1c, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xdc, 0x06, 0x6f, 0xe8, 0x51, 0x3b, 0x34, 0xd4, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x8e, 0xc7, 0x73, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xfa, 0xf1, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x1f, 0xe4, 0x79, 0xf0, 0x30, 0xbc, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x95, 0xc8, 0x73, 0x82, 0x60, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x44, 0x24, 0xcf, 0x43, 0x27, 0xb5, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x38, 0x79, 0x0e, 0x82, 0x85, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x88, 0x28, 0xcf, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x79, 0xca, 0x73, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xb4, 0xf2, 0x1c, 0x6e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0xb2, 0x3c, 0x0f, 0xa2, 0x9b, 0x23, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x08, 0x2e, 0xcf, 0x61, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xf6, 0xf2, 0x3c, 0x74, 0x52, 0x3b, 0xac, 0x6f, 0x2e, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x86, 0x79, 0x0e, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x69, 0x64, 0x9e, 0x07, 0x67, 0x12, 0xf4, 0xc3, 0xfa, 0xe6, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0xd7, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0xce, 0x3c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x41, 0xcd, 0x73, 0x3c, 0x78, 0x26, 0x9b, 0xe7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xc2, 0x79, 0x1e, 0xa2, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe6, 0x9c, 0xe7, 0x61, 0x5c, 0x0e, 0x31, 0x1c, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xb3, 0xf3, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xaa, 0x3c, 0xcf, 0x43, 0x0c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x82, 0xcf, 0xf3, 0xe0, 0x0d, 0x3d, 0x6a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xef, 0xe7, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0x81, 0x9e, 0x87, 0x4e, 0x6a, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x12, 0x7a, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x3a, 0xf4, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xab, 0xe8, 0x79, 0xd0, 0xe2, 0x4a, 0xd4, 0x20, 0x19, 0xb8, 0xfd, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc2, 0x46, 0xcf, 0x43, 0x13, 0xae, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x07, 0xe9, 0x79, 0xe8, 0xa4, 0x36, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0x26, 0x3d, 0x0f, 0x89, 0xa9, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x9e, 0x9e, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf2, 0xaa, 0xe7, 0x21, 0x9a, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x1e, 0xea, 0x79, 0xc8, 0xda, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4a, 0xa9, 0xe7, 0xa1, 0x87, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x7d, 0xa8, 0x9e, 0x87, 0x8e, 0x61, 0x83, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0x73, 0x93, 0x40, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0xc2, 0x04, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x0e, 0x9e, 0xc9, 0xe6, 0xb9, 0x61, 0xe2, 0xd6, 0x50, 0x4c, 0x37, 0x88, 0x4d, 0x58, 0x98, 0x0d, 0x13, 0xb7, 0x41, 0x5c, 0xb9, 0xc3, 0x6c, 0x28, 0xa6, 0x1b, 0xc4, 0x26, 0x2c, 0xcc, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x64, 0x59, 0xc3, 0x6c, 0x98, 0xb8, 0x35, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x06, 0xd1, 0x0c, 0x0b, 0xb3, 0xe1, 0x44, 0xd8, 0x20, 0x9a, 0x61, 0x61, 0x36, 0x58, 0xcc, 0x06, 0xb5, 0xcc, 0xb2, 0xe1, 0x13, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0x06, 0x0b, 0x95, 0xa9, 0x0e, 0x5e, 0xe7, 0xb6, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x46, 0xc2, 0xb9, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0x8c, 0x8d, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x9b, 0x0a, 0xe7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xc9, 0x09, 0xe7, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x4f, 0x85, 0x98, 0x83, 0x73, 0xbd, 0xc1, 0x86, 0xe7, 0x49, 0x36, 0x88, 0x47, 0xa1, 0x98, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x32, 0x12, 0xce, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x1b, 0x83, 0x37, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x2b, 0x61, 0x38, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x93, 0x5a, 0x38, 0x0f, 0x9a, 0x28, 0x5d, 0xd8, 0xf0, 0x3c, 0xc9, 0x06, 0xf1, 0x28, 0x14, 0xb3, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x46, 0xc2, 0xb9, 0xe1, 0x73, 0x97, 0x0d, 0x5a, 0x38, 0x1d, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xb5, 0xe1, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x9b, 0xe1, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0x3f, 0x78, 0x8d, 0xaa, 0xe7, 0x41, 0x8b, 0x42, 0x04, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x88, 0x0d, 0xa1, 0x98, 0x83, 0xe8, 0x0b, 0x88, 0x39, 0x88, 0x1a, 0x81, 0x98, 0x83, 0x10, 0x00, 0x3f, 0x0e, 0x1d, 0x87, 0x0e, 0xe2, 0x5b, 0x25, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb8, 0x25, 0xcf, 0x43, 0x0c, 0x8f, 0xc7, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x03, 0x8c, 0x36, 0x0f, 0x4e, 0x2b, 0xb8, 0x2b, 0x08, 0x16, 0x0f, 0x9e, 0x95, 0xd2, 0xb8, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x4c, 0xd6, 0x73, 0xd8, 0x0d, 0x96, 0x58, 0x5a, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x42, 0xad, 0xe7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0xe3, 0x7a, 0x1e, 0x2c, 0xda, 0xb4, 0x1a, 0x64, 0x1b, 0x44, 0xc2, 0x54, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe1, 0xbe, 0x9e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xee, 0x7a, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x1a, 0xec, 0x79, 0xf0, 0x7e, 0x84, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x23, 0xf6, 0x3c, 0x78, 0x4b, 0x01, 0xd1, 0x71, 0xe8, 0xd0, 0x41, 0x63, 0xd8, 0x0d, 0x1e, 0xb4, 0x35, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x61, 0xc7, 0x9e, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xb2, 0xec, 0x79, 0xf0, 0xd2, 0xb0, 0xa1, 0x41, 0xb6, 0x41, 0xf4, 0x68, 0xc5, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x13, 0xed, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x7d, 0xb3, 0xe7, 0x61, 0x5c, 0x86, 0xdd, 0xe0, 0x85, 0xd3, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x40, 0xed, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x69, 0xd9, 0x9e, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xbc, 0x76, 0x3a, 0x68, 0x83, 0xd7, 0x4e, 0x07, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x14, 0x79, 0xc5, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x15, 0xb8, 0xe7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x0d, 0xdd, 0x9e, 0x07, 0x31, 0x58, 0x69, 0x31, 0xc8, 0x36, 0x88, 0x22, 0xaf, 0x98, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0xcc, 0x3d, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x19, 0xf7, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x28, 0xdd, 0xf3, 0xe0, 0x55, 0x4d, 0x42, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x04, 0xbb, 0xe7, 0xc1, 0xe3, 0xd2, 0xb9, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbd, 0xbb, 0xe7, 0x20, 0x19, 0xe8, 0xff, 0x77, 0xc8, 0x56, 0x1c, 0x87, 0x0e, 0x2d, 0xc0, 0x86, 0xdd, 0xe0, 0x99, 0xde, 0x41, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x27, 0xef, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x59, 0xf8, 0x9e, 0xc3, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x3c, 0xd9, 0x3b, 0x68, 0x83, 0x27, 0x7b, 0x07, 0x1d, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0x14, 0xa7, 0xc5, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x13, 0xf0, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xff, 0xbe, 0xe7, 0xc1, 0x1b, 0x7e, 0xce, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x25, 0xf8, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb6, 0x84, 0xcf, 0x83, 0x87, 0x99, 0x6a, 0x0d, 0xb2, 0x0d, 0x62, 0xca, 0x2d, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xc6, 0x87, 0xcf, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x18, 0x3e, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x92, 0xf8, 0x3c, 0x78, 0x23, 0x40, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0x54, 0x7c, 0x1e, 0x3c, 0xea, 0x57, 0xeb, 0x38, 0x74, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x4c, 0x8c, 0xcf, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcc, 0xe3, 0x73, 0x71, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xeb, 0x46, 0x3e, 0x07, 0xc1, 0x06, 0xad, 0x5c, 0x97, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x78, 0xf0, 0xf6, 0x92, 0xcf, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0x50, 0x50, 0x8b, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x50, 0xf9, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf6, 0x97, 0xcf, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xa3, 0x59, 0x3e, 0x07, 0xc1, 0x06, 0x2f, 0xcc, 0x4f, 0x3b, 0xa4, 0xe1, 0x06, 0xd9, 0x06, 0x31, 0xaa, 0x17, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xe6, 0xcd, 0xe7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x41, 0x33, 0x9f, 0x07, 0x4b, 0x69, 0xa3, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xd5, 0xf3, 0x39, 0x08, 0x36, 0x68, 0xe5, 0xba, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x83, 0x57, 0xff, 0x7c, 0x1e, 0x52, 0x35, 0xc7, 0xa1, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x3f, 0xf4, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x01, 0x4a, 0x9f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xe7, 0x1a, 0x7d, 0x1e, 0x3c, 0x78, 0xed, 0x67, 0x90, 0x6d, 0x10, 0x35, 0x83, 0x31, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x40, 0x7d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xcd, 0xf4, 0x79, 0x10, 0x91, 0x0c, 0x24, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x1b, 0x9f, 0x07, 0xe3, 0x0e, 0x6a, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0xae, 0x3e, 0x07, 0xc1, 0x06, 0x0f, 0xdb, 0xeb, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xf1, 0xe0, 0xd5, 0x59, 0x9f, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x89, 0x5c, 0x9f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0x7d, 0x7d, 0x2e, 0x2e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x97, 0x7d, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xba, 0xdb, 0xe7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x9d, 0x6b, 0x9f, 0x07, 0xd1, 0x65, 0x82, 0x31, 0xc8, 0x36, 0x88, 0x08, 0xc7, 0x98, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x2b, 0xea, 0x3e, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x2f, 0x8e, 0xfb, 0x1c, 0x04, 0x1b, 0xc4, 0xc3, 0xf9, 0xcb, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xd1, 0xfb, 0x3c, 0x88, 0x67, 0x25, 0x8c, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x04, 0x7e, 0x0e, 0x82, 0x0d, 0x5a, 0xb9, 0x2e, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xf1, 0x20, 0xa1, 0x60, 0xf6, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x5a, 0xfc, 0x1c, 0x04, 0x1b, 0xda, 0xce, 0x2c, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x74, 0xfc, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x98, 0xc8, 0xcf, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x2a, 0x3f, 0x0f, 0x8d, 0x04, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xc2, 0xfc, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc1, 0xf3, 0x73, 0xf8, 0x05, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x83, 0x7e, 0x1e, 0xc4, 0x63, 0xf5, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x3a, 0xfa, 0x79, 0xf0, 0x1a, 0x44, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x68, 0xfa, 0x39, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x2b, 0xf5, 0xf3, 0xa0, 0x61, 0x89, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x85, 0xf5, 0x73, 0x90, 0x0c, 0x08, 0xff, 0xbb, 0x43, 0xb6, 0x62, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x57, 0xbc, 0x7e, 0x1e, 0x2c, 0x83, 0x17, 0x38, 0x0e, 0x1d, 0x87, 0x0e, 0xa9, 0x83, 0xc5, 0x41, 0xb0, 0x20, 0xdb, 0x20, 0x46, 0x32, 0x63, 0x16, 0x64, 0x1b, 0xc4, 0xa3, 0x66, 0xcc, 0x20, 0xdb, 0x20, 0xb6, 0x33, 0x63, 0x0e, 0x5d, 0xed, 0x06, 0xd9, 0x06, 0x31, 0x92, 0x19, 0x33, 0xc8, 0x36, 0x88, 0x13, 0xce, 0x98, 0x41, 0xb6, 0x41, 0xcc, 0x6d, 0xc6, 0x0c, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x88, 0x6a, 0xce, 0x98, 0x43, 0x07, 0x8d, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf1, 0x78, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xa5, 0xfd, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x50, 0xf7, 0xf3, 0xe0, 0x65, 0x6a, 0x3a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x55, 0xef, 0xe7, 0x20, 0xd8, 0xa0, 0x95, 0xeb, 0xf2, 0x83, 0xa5, 0x7b, 0x53, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x02, 0xfc, 0x39, 0x08, 0x36, 0x68, 0xe5, 0xba, 0xfc, 0xe0, 0x5d, 0xe1, 0x56, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x16, 0x06, 0xb3, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x67, 0xf9, 0x73, 0xd8, 0x0d, 0x82, 0x61, 0x7f, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x1b, 0x9c, 0x3f, 0x87, 0x5d, 0xd8, 0x0d, 0x82, 0x61, 0x7f, 0x61, 0x37, 0x28, 0x89, 0x0e, 0x0f, 0x5a, 0x5f, 0x73, 0x3f, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x0c, 0xfd, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x89, 0xd3, 0x9f, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x64, 0xfd, 0x79, 0xf0, 0xd8, 0x1d, 0xa7, 0x41, 0xb6, 0x41, 0x74, 0xd6, 0xc6, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x8f, 0xfd, 0x79, 0xf0, 0xca, 0x74, 0x9f, 0x41, 0xb6, 0x41, 0x94, 0xd3, 0xc6, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc2, 0xf7, 0xe7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc5, 0xdb, 0x9f, 0x07, 0x8f, 0x5f, 0x36, 0x1a, 0x64, 0x1b, 0x44, 0x39, 0x6d, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x29, 0xe5, 0x9f, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x87, 0x7f, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x7f, 0xfe, 0x79, 0xf0, 0x46, 0x80, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x5e, 0xf5, 0xcf, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x86, 0xff, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb0, 0xfd, 0x73, 0x10, 0x6c, 0xf0, 0x74, 0x74, 0xae, 0x43, 0x1a, 0x6e, 0x90, 0x6d, 0x10, 0x1b, 0xbf, 0x31, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0xdb, 0x7f, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x3a, 0xff, 0x39, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0x20, 0xfe, 0xd0, 0x62, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x0b, 0xb0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0xf3, 0x3f, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x94, 0xff, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xb3, 0xfe, 0x3f, 0x87, 0x5d, 0xb8, 0x0d, 0xc6, 0x4f, 0xd7, 0xa1, 0x95, 0xf8, 0x41, 0x62, 0xba, 0xcf, 0x20, 0xdb, 0x20, 0x8e, 0x8b, 0x63, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x10, 0x00, 0x3d, 0x78, 0x65, 0xba, 0xcf, 0x20, 0xdb, 0x20, 0x1e, 0x8a, 0x63, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x04, 0x01, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6e, 0x02, 0xd0, 0x83, 0xc7, 0x2f, 0x1b, 0x0d, 0xb2, 0x0d, 0xe2, 0xa1, 0x38, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0x1c, 0x40, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x57, 0x00, 0x3d, 0x78, 0x49, 0x38, 0xd7, 0x20, 0xdb, 0x20, 0x1e, 0x8a, 0x63, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xa3, 0x00, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x24, 0x02, 0x74, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x9e, 0x0b, 0xd0, 0x83, 0x37, 0x02, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x68, 0x80, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x06, 0x08, 0xe8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xcd, 0x1c, 0xa0, 0x07, 0xd1, 0x11, 0x1c, 0x33, 0xc8, 0x36, 0x88, 0xf8, 0xe8, 0x98, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x73, 0x4c, 0x40, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0x17, 0x01, 0x3d, 0x88, 0xbd, 0xe1, 0x98, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0xfd, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x98, 0x14, 0xd0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x78, 0x01, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x7b, 0x05, 0xf4, 0xe0, 0x19, 0x05, 0x43, 0x83, 0x6c, 0x83, 0x58, 0xb8, 0x8e, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x90, 0x1a, 0xd0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0x63, 0x40, 0x0f, 0x62, 0xb0, 0xd2, 0x62, 0x90, 0x6d, 0x10, 0x0b, 0xd7, 0x31, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xb3, 0x03, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xff, 0x0d, 0xe8, 0x20, 0xd8, 0x20, 0x32, 0x87, 0x63, 0x0e, 0x9d, 0x88, 0x06, 0xd9, 0x06, 0xb1, 0x70, 0x1d, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x55, 0x10, 0xe8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0x3e, 0xa0, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x87, 0x10, 0x81, 0x1e, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xe3, 0x8d, 0x40, 0x87, 0xdf, 0xe0, 0xf0, 0x6b, 0x7b, 0x70, 0x7e, 0xa2, 0x3d, 0x0e, 0x1d, 0xba, 0x1f, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x8b, 0x1b, 0x14, 0xd5, 0x82, 0x07, 0xc5, 0xb4, 0xe0, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1a, 0x27, 0xd0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0xa0, 0x02, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x1a, 0x0a, 0xf4, 0x20, 0xd2, 0x0a, 0x53, 0x06, 0xd9, 0x06, 0xb1, 0x48, 0x1e, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0x5a, 0xa0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x5d, 0x81, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0xd8, 0x05, 0x7a, 0xf0, 0x46, 0x80, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xe2, 0x1c, 0x3c, 0x87, 0x26, 0x6d, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x0f, 0x18, 0xe8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x99, 0x81, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x2f, 0x06, 0x7a, 0xf0, 0x8c, 0x82, 0xa1, 0x41, 0xb6, 0x41, 0xe4, 0xad, 0xc7, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x91, 0x06, 0x3a, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0xf8, 0x05, 0xc9, 0x80, 0xa1, 0x7f, 0x77, 0x3c, 0x3f, 0x28, 0x19, 0x9a, 0x0e, 0x1d, 0x34, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0x43, 0x53, 0xa0, 0x41, 0xb6, 0x41, 0x2c, 0x92, 0xc7, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x76, 0x1c, 0xe8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x75, 0x6e, 0xa0, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x77, 0xd2, 0x81, 0x1e, 0xbc, 0xaa, 0x49, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0xbb, 0x03, 0x3d, 0x78, 0x75, 0xb8, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x8e, 0x1e, 0xe8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x01, 0x82, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xcf, 0x07, 0x3a, 0x08, 0x36, 0x78, 0x58, 0x38, 0xd7, 0x21, 0x0d, 0x37, 0xc8, 0x36, 0x88, 0x44, 0xfb, 0x98, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x33, 0x04, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x63, 0x10, 0xf4, 0x20, 0x06, 0x2b, 0x2d, 0x06, 0xd9, 0x06, 0x91, 0x68, 0x1f, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x25, 0x23, 0xe8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x49, 0x89, 0xa0, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x0e, 0x9a, 0x01, 0x4e, 0x3a, 0xb4, 0x00, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x9d, 0x88, 0x06, 0xd9, 0x06, 0xb1, 0x48, 0x1e, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc9, 0x92, 0xa0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x3e, 0x82, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0x58, 0x09, 0x7a, 0xf0, 0x46, 0x80, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xc2, 0x04, 0x3d, 0x78, 0xd4, 0xaf, 0xd6, 0x71, 0xe8, 0x60, 0x09, 0xff, 0xcf, 0x20, 0xdb, 0x20, 0x16, 0xc9, 0x63, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc9, 0x13, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x96, 0x4d, 0xd0, 0x83, 0x68, 0x7f, 0x14, 0x19, 0x64, 0x1b, 0xc4, 0x22, 0x79, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0xa4, 0xa0, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x37, 0x84, 0x82, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x6f, 0x0a, 0x7a, 0xf0, 0x7e, 0x84, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0x4d, 0x05, 0x1d, 0x7e, 0x41, 0x32, 0x70, 0xde, 0x1d, 0xcf, 0x0f, 0x9a, 0xe2, 0x5e, 0x3a, 0x0e, 0x1d, 0x34, 0x3a, 0xa1, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x41, 0xb0, 0xc1, 0x7b, 0x6d, 0x7c, 0x16, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xee, 0x82, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x0b, 0x0b, 0x3a, 0xec, 0x06, 0x0f, 0xe7, 0x0e, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x32, 0x5f, 0xd0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x6f, 0x20, 0x06, 0x1d, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xe0, 0x11, 0xdd, 0x41, 0x1b, 0x3c, 0xa2, 0x3b, 0xe8, 0x70, 0x8a, 0x0d, 0xb2, 0x0d, 0x62, 0xc9, 0x41, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd6, 0x63, 0xd0, 0x83, 0x88, 0x64, 0x20, 0x19, 0x76, 0x83, 0xd7, 0x8a, 0x07, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xc7, 0x32, 0xe8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x40, 0x83, 0x1e, 0xbc, 0xd0, 0x34, 0x6b, 0x90, 0x6d, 0x10, 0x89, 0x12, 0x32, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xf7, 0x58, 0x83, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x2f, 0x0d, 0x7a, 0x10, 0xbd, 0x26, 0x23, 0xc3, 0x6e, 0xf0, 0x36, 0xf2, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xc8, 0x06, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb6, 0x6f, 0xd0, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0xde, 0x49, 0x1e, 0xb4, 0xc1, 0x3b, 0xc9, 0x83, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0x66, 0x2d, 0x64, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xcf, 0x1c, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x88, 0x71, 0xd0, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x83, 0xd2, 0x41, 0x0f, 0x5e, 0x14, 0x42, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x09, 0xec, 0xa0, 0x07, 0xaf, 0x0e, 0x17, 0x3a, 0x0e, 0x1d, 0x9a, 0x02, 0x0d, 0xb2, 0x0d, 0x62, 0xd6, 0x42, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x1e, 0x79, 0xd0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xdb, 0xdd, 0x41, 0x0f, 0xe2, 0xb0, 0xf9, 0x65, 0xd8, 0x0d, 0x5e, 0x86, 0x1d, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0xf5, 0xa0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xb8, 0x0f, 0x3a, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0xc1, 0x2b, 0xb1, 0x83, 0x0e, 0x9e, 0xb1, 0xbb, 0x34, 0xc8, 0x36, 0x88, 0x66, 0x10, 0x99, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x0f, 0x0d, 0x08, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xcb, 0x1f, 0xf4, 0xe0, 0xf1, 0xcb, 0x46, 0x83, 0x6c, 0x83, 0x68, 0x06, 0x91, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xe0, 0x83, 0xd0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xf3, 0x08, 0x42, 0x0f, 0x22, 0xda, 0x71, 0x63, 0x90, 0x6d, 0x10, 0xcd, 0x20, 0x32, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0x37, 0x84, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xa9, 0x10, 0x3a, 0x08, 0x36, 0x88, 0x90, 0xfe, 0x98, 0x43, 0xf7, 0xa3, 0x61, 0x37, 0x78, 0x9b, 0x79, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0x43, 0x84, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xbe, 0x45, 0xe8, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xef, 0x34, 0x0f, 0xda, 0xe0, 0x9d, 0xe6, 0x41, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0x11, 0x2a, 0x32, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xdd, 0x11, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xa6, 0x46, 0xe8, 0xc1, 0xe3, 0x97, 0x8d, 0x06, 0xd9, 0x06, 0x11, 0xa1, 0x22, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x00, 0x49, 0xe8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb5, 0x20, 0xa1, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x86, 0xdf, 0xa0, 0x64, 0x68, 0x3a, 0x48, 0x88, 0x01, 0x38, 0xb4, 0x00, 0x1b, 0x76, 0x83, 0x07, 0x0e, 0x07, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf9, 0x49, 0xe8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0xb8, 0x84, 0x1e, 0x44, 0xbe, 0x73, 0xca, 0x20, 0xdb, 0x20, 0xf2, 0x63, 0x64, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xef, 0xa8, 0x09, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x3a, 0x26, 0x74, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xf2, 0x9b, 0xd0, 0x83, 0x17, 0x85, 0x10, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xab, 0x4e, 0xe8, 0xc1, 0xab, 0xc3, 0x85, 0x8e, 0x43, 0x87, 0x0e, 0x1a, 0xc3, 0x6e, 0xf0, 0xc2, 0xe9, 0xa0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0xec, 0x09, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xae, 0xa1, 0xd0, 0x83, 0x98, 0xfc, 0x8a, 0x19, 0x64, 0x1b, 0xc4, 0x4c, 0x8e, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x35, 0x46, 0xa1, 0x07, 0x43, 0xf3, 0x77, 0xd8, 0x0d, 0x9e, 0xe9, 0x1d, 0xb4, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xfd, 0x48, 0xa1, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0xea, 0x14, 0x7a, 0x10, 0x13, 0x6b, 0x31, 0x83, 0x6c, 0x83, 0xe8, 0xe4, 0x91, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xa1, 0x2a, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xbe, 0xa8, 0xd0, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xab, 0xaf, 0x42, 0x0f, 0x5e, 0x14, 0x42, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xa1, 0x5a, 0xa1, 0x07, 0xaf, 0x0e, 0x17, 0x3a, 0x0e, 0x1d, 0x3a, 0x68, 0x0c, 0xbb, 0xc1, 0xeb, 0xb3, 0x83, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xb2, 0x2b, 0x74, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xc3, 0xc7, 0x42, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x89, 0x76, 0xd0, 0x06, 0x2f, 0xd1, 0x0e, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0xb8, 0x1e, 0x92, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x66, 0xb5, 0xd0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x0b, 0xcf, 0x42, 0x0f, 0x62, 0xb0, 0xd2, 0x62, 0x90, 0x6d, 0x10, 0xd7, 0x43, 0x32, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0xc3, 0x85, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0xda, 0x16, 0x3a, 0x08, 0x36, 0x88, 0xcc, 0xe1, 0x98, 0x43, 0x0b, 0xb0, 0x61, 0x37, 0x78, 0x09, 0x7a, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x47, 0xcf, 0x85, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x80, 0x5e, 0xe8, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xaf, 0x42, 0x0f, 0xda, 0xe0, 0x55, 0xe8, 0x41, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0x31, 0x4b, 0x32, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x97, 0xf6, 0x85, 0x1e, 0x0c, 0xcd, 0xdf, 0x61, 0x37, 0x78, 0x89, 0x7a, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xb7, 0x01, 0x86, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x85, 0x61, 0xe8, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xaf, 0x52, 0x0f, 0xda, 0xe0, 0x55, 0xea, 0x41, 0x87, 0x53, 0x6c, 0x90, 0x6d, 0x10, 0x61, 0x4f, 0x32, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x07, 0x34, 0x86, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x5e, 0x9b, 0x18, 0x3a, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xf2, 0x63, 0xe8, 0xc1, 0x8b, 0x42, 0x88, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x52, 0x32, 0xf4, 0xe0, 0xd5, 0xe1, 0x42, 0xc7, 0xa1, 0x43, 0x07, 0x8d, 0x61, 0x37, 0x78, 0xef, 0x0e, 0xc6, 0x82, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x53, 0x38, 0x43, 0x0f, 0x9e, 0x0e, 0xe4, 0x73, 0xf0, 0x70, 0x24, 0x9f, 0x61, 0x37, 0x78, 0xf7, 0x7a, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x17, 0x7c, 0x86, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x1b, 0x69, 0xe8, 0xc1, 0xc3, 0x4c, 0xb5, 0x06, 0xd9, 0x06, 0x11, 0x92, 0x25, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xd0, 0x69, 0xe8, 0xc1, 0xd0, 0xfc, 0x1d, 0x76, 0x83, 0x87, 0x2b, 0xf9, 0x2c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x17, 0x36, 0xf4, 0xe0, 0xe9, 0x40, 0x3e, 0x07, 0xef, 0x7a, 0xf2, 0x19, 0x76, 0x83, 0xf7, 0xa6, 0x03, 0x2d, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x48, 0x37, 0xf4, 0xe0, 0xe9, 0x40, 0x3e, 0x07, 0xef, 0x04, 0x93, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xa4, 0x37, 0x74, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x23, 0x87, 0x43, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x78, 0x5c, 0x78, 0xd0, 0x06, 0x8f, 0x0b, 0x0f, 0x3a, 0x9c, 0x62, 0x83, 0x6c, 0x83, 0x38, 0xfd, 0x92, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xe1, 0x38, 0xf4, 0x60, 0x68, 0xfe, 0x1e, 0x9a, 0xbf, 0x1c, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0xd3, 0x97, 0x43, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xaf, 0x75, 0x0e, 0x3d, 0x78, 0x6f, 0x06, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x19, 0x1d, 0x7a, 0xf0, 0xea, 0x70, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x47, 0x1d, 0x7a, 0xf0, 0x7a, 0x18, 0xa2, 0xe3, 0xd0, 0xa1, 0x51, 0xcb, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0x10, 0x97, 0x29, 0x26, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0xcd, 0x43, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xbf, 0x3d, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xb0, 0xf4, 0xd0, 0x43, 0x53, 0x92, 0x41, 0xb6, 0x41, 0x7c, 0xa9, 0xc9, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x4f, 0x7d, 0xe8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x69, 0xf1, 0xa1, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x27, 0xe0, 0x87, 0x1e, 0xbc, 0xaa, 0x49, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0xcf, 0xd6, 0x0f, 0x3d, 0x74, 0x31, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xbd, 0xfd, 0xa1, 0x07, 0xc9, 0x0c, 0x16, 0xc7, 0xa1, 0x43, 0x53, 0xa0, 0x41, 0xb6, 0x41, 0x7c, 0xa9, 0xc9, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x63, 0x81, 0xe8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xb1, 0x00, 0xa2, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0x67, 0x21, 0x88, 0x1e, 0xbc, 0xaa, 0x49, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0x59, 0x10, 0x3d, 0x48, 0x66, 0xb0, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x11, 0x0e, 0xa2, 0x87, 0x2e, 0x26, 0xc7, 0xa1, 0x43, 0x27, 0xa2, 0x41, 0xb6, 0x41, 0x7c, 0xa9, 0xc9, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x70, 0x85, 0xe8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0x05, 0x11, 0xa2, 0x83, 0x60, 0x43, 0x8f, 0x92, 0x83, 0x25, 0xfc, 0x3f, 0x83, 0x6c, 0x83, 0xf8, 0x52, 0x93, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x8e, 0x0e, 0xd1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x43, 0x31, 0x44, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x4f, 0xff, 0x10, 0x3d, 0x78, 0x55, 0x93, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x2b, 0x22, 0x7a, 0xf0, 0xea, 0x70, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x9e, 0x59, 0x22, 0x7a, 0xe8, 0x62, 0x72, 0x1c, 0x3a, 0x78, 0xcf, 0x61, 0xc6, 0x20, 0xdb, 0x20, 0xbe, 0xd4, 0x64, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x07, 0x8f, 0x70, 0x11, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x11, 0x45, 0x74, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x6e, 0x18, 0xd1, 0x83, 0x67, 0xe9, 0x8d, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xc5, 0x33, 0xa2, 0x87, 0x2e, 0x26, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xd6, 0x46, 0xf4, 0xe0, 0xd5, 0xe1, 0x42, 0xc7, 0xa1, 0x83, 0x46, 0x27, 0x94, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x60, 0x71, 0x83, 0x87, 0xb0, 0x89, 0xb6, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x80, 0x47, 0x74, 0xd8, 0x0d, 0x96, 0xa0, 0x4e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0xab, 0x8f, 0xe8, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xa7, 0x05, 0x89, 0x1e, 0xac, 0x5f, 0x9d, 0x1a, 0x64, 0x1b, 0x44, 0x92, 0xa2, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0xf1, 0xe0, 0xe5, 0x47, 0xa2, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x83, 0xd7, 0x10, 0x89, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0xde, 0xaa, 0x24, 0x7a, 0xf0, 0xaa, 0x26, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xae, 0x49, 0xf4, 0xe0, 0xd5, 0xe1, 0x42, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0x0a, 0x4a, 0xf4, 0xa0, 0x64, 0x68, 0x3a, 0x0e, 0x1d, 0x3a, 0x68, 0x0c, 0xbb, 0x70, 0x8b, 0x07, 0x6f, 0x52, 0xbe, 0x3b, 0x44, 0x73, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x8b, 0xa6, 0x44, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0x3c, 0xc0, 0x4a, 0x74, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xb8, 0x92, 0x94, 0xd9, 0x20, 0xae, 0x24, 0x65, 0x0e, 0xa7, 0xd8, 0x20, 0xdb, 0x20, 0xde, 0x25, 0x65, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x9c, 0x4b, 0x74, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xd0, 0x2c, 0xd1, 0x83, 0xc7, 0x2f, 0x1b, 0x0d, 0xb2, 0x0d, 0xe2, 0x5d, 0x52, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x84, 0x31, 0xd1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x7b, 0xbf, 0x44, 0x07, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0xbf, 0x41, 0xc9, 0xd0, 0x74, 0x70, 0x0e, 0xfe, 0x3e, 0xb4, 0x00, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0xdd, 0x4c, 0x74, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0xc1, 0x4b, 0xd3, 0x44, 0x87, 0x5d, 0xb8, 0x0d, 0xd1, 0x1c, 0x0f, 0x1e, 0xc2, 0x26, 0xba, 0x41, 0x64, 0x70, 0xca, 0x1c, 0x4e, 0xb1, 0x41, 0xb6, 0x41, 0xdc, 0x69, 0xca, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x0f, 0x1e, 0x0f, 0x27, 0x3a, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0x3c, 0x78, 0x6b, 0x9b, 0xe8, 0x41, 0xf4, 0x9a, 0x8c, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x8f, 0xc7, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x1e, 0xbc, 0x64, 0x5b, 0x6e, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x64, 0x70, 0xb9, 0x83, 0x46, 0x92, 0xec, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0xbe, 0x71, 0xb9, 0x41, 0x32, 0x90, 0xfa, 0x3b, 0xac, 0xd0, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0x78, 0xf0, 0x22, 0x73, 0xb9, 0x83, 0x26, 0x14, 0x98, 0x8e, 0x43, 0x87, 0x46, 0x2d, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x83, 0x37, 0x94, 0xcf, 0x6f, 0x38, 0x11, 0x36, 0x78, 0xc2, 0x06, 0xc6, 0x1a, 0xce, 0x91, 0x05, 0xc1, 0xe2, 0x20, 0x58, 0xdc, 0xe0, 0x3d, 0xb7, 0x1d, 0x73, 0xf0, 0xfc, 0x23, 0x8d, 0xc5, 0x41, 0xb0, 0xc1, 0x6b, 0x10, 0x85, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xef, 0x0e, 0x86, 0xa3, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xf8, 0x45, 0x95, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe6, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa5, 0x6a, 0x2f, 0x1b, 0x7a, 0x08, 0x2d, 0xfc, 0xc6, 0xf3, 0x83, 0x47, 0x3b, 0xe8, 0x0c, 0xbf, 0xf1, 0x7c, 0x0d, 0x9d, 0xd4, 0x16, 0x03, 0x7f, 0xae, 0x2c, 0xcd, 0xdd, 0xa0, 0x60, 0x78, 0x3c, 0x34, 0xe1, 0x5a, 0x10, 0x2c, 0x48, 0x06, 0x42, 0x77, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1c, 0xea, 0x6d, 0x0f, 0x4a, 0xec, 0xc1, 0xe3, 0xd0, 0x21, 0x86, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x90, 0x5c, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0xe2, 0x82, 0x60, 0x31, 0xf0, 0xe1, 0xc2, 0xee, 0xdc, 0xc5, 0x41, 0xb0, 0xb0, 0x0b, 0xb7, 0x78, 0xf0, 0x4e, 0x38, 0xd0, 0x43, 0xea, 0x60, 0x61, 0x17, 0x6e, 0x43, 0xea, 0xe0, 0x20, 0x5e, 0x62, 0x65, 0x36, 0x88, 0x97, 0x58, 0x99, 0xc3, 0x29, 0x36, 0xec, 0xc2, 0x2d, 0x06, 0xfe, 0x5a, 0x9a, 0xdb, 0x79, 0x48, 0x1d, 0x2c, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0xc4, 0xbe, 0xac, 0xcc, 0x06, 0xb1, 0x2f, 0x2b, 0x73, 0x38, 0xc5, 0x86, 0x5d, 0xb8, 0xc5, 0xc0, 0x27, 0xab, 0x5b, 0x2b, 0x0f, 0xa9, 0x83, 0x85, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0xa8, 0xa6, 0x95, 0xd9, 0x20, 0xaa, 0x69, 0x65, 0x0e, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x18, 0xf8, 0x65, 0x61, 0x72, 0xec, 0x21, 0x75, 0xb0, 0xb0, 0x0b, 0xb7, 0x21, 0x75, 0x70, 0x10, 0xaf, 0xb6, 0x32, 0x1b, 0xc4, 0xab, 0xad, 0xcc, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0x22, 0x0e, 0x56, 0x66, 0x83, 0x88, 0x83, 0x95, 0x39, 0x9c, 0x62, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x1b, 0xac, 0x2e, 0x8c, 0x38, 0x48, 0xf1, 0x73, 0x18, 0x76, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xca, 0xc1, 0xd9, 0xcb, 0xf8, 0xe0, 0x78, 0x03, 0xbe, 0x41, 0xbc, 0xc4, 0xca, 0x0c, 0xbb, 0x41, 0xc9, 0x83, 0xb4, 0x41, 0xec, 0xcb, 0xca, 0x0c, 0xbb, 0x20, 0xd8, 0x20, 0x1e, 0x76, 0x65, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0x07, 0x05, 0xd9, 0xce, 0x71, 0x68, 0x83, 0xa8, 0xa6, 0x95, 0x19, 0x76, 0x41, 0xb0, 0x41, 0x3c, 0xec, 0xca, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x0e, 0x0e, 0x44, 0xfc, 0xc7, 0xa1, 0x0d, 0xe2, 0xd5, 0x56, 0x66, 0xd8, 0x05, 0xc1, 0x06, 0xf1, 0xb0, 0x2b, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x38, 0x48, 0xed, 0x00, 0x39, 0x0e, 0x1d, 0x44, 0x3f, 0xae, 0xcc, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0x76, 0x4b, 0xfc, 0x87, 0x5d, 0xb8, 0x0d, 0xe2, 0x25, 0x56, 0xe6, 0x38, 0xb4, 0x21, 0x55, 0x33, 0xec, 0xc2, 0x6d, 0x10, 0xfb, 0xb2, 0x32, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0x2f, 0x7b, 0xa0, 0x39, 0x48, 0x87, 0x83, 0x18, 0x76, 0xe1, 0x36, 0x88, 0x6a, 0x5a, 0x99, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0x97, 0x3d, 0xd0, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0xc8, 0x76, 0x0e, 0x7b, 0x85, 0xc7, 0xa1, 0x61, 0x17, 0x6e, 0x83, 0x78, 0xb5, 0x95, 0x39, 0x0e, 0x2d, 0x08, 0x36, 0x78, 0xd9, 0x03, 0xcd, 0x41, 0x8a, 0xbe, 0xc7, 0x20, 0x5b, 0x43, 0xfb, 0xf5, 0xe1, 0x36, 0x88, 0x38, 0x58, 0x99, 0xe3, 0xd0, 0x41, 0x0c, 0x15, 0xcb, 0x1c, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x0f, 0x5e, 0x83, 0x3b, 0x34, 0x6a, 0xd9, 0x90, 0xaa, 0x19, 0x76, 0x43, 0x2f, 0x98, 0x0d, 0x31, 0x3c, 0x48, 0x18, 0x7d, 0x38, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x41, 0xb0, 0x41, 0xbb, 0x25, 0xfe, 0x07, 0x91, 0x6a, 0x2c, 0xb3, 0x41, 0xd4, 0x25, 0xcb, 0x1c, 0x52, 0x07, 0xc7, 0xe3, 0xc5, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x8f, 0x61, 0xa0, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0x90, 0xed, 0x1c, 0x52, 0x35, 0xc7, 0xa1, 0x61, 0x17, 0x04, 0x1b, 0xb4, 0x63, 0x7d, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x38, 0x34, 0x9e, 0x3f, 0x0e, 0x2d, 0x08, 0x16, 0x24, 0x03, 0xa7, 0xdd, 0xc1, 0x49, 0xe8, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xa1, 0xde, 0xf6, 0xb0, 0x57, 0x78, 0x1c, 0x1a, 0x76, 0x41, 0xb0, 0x41, 0x3b, 0xd6, 0xf7, 0x07, 0x51, 0xd3, 0x2b, 0xb3, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xf9, 0xcf, 0x32, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x0e, 0xf5, 0xb6, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x1b, 0x6a, 0xc7, 0x41, 0x8a, 0xbe, 0xc7, 0x71, 0x68, 0x10, 0x6c, 0xd0, 0x72, 0x0e, 0xfe, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x0d, 0x8a, 0xe8, 0xae, 0x83, 0xd3, 0x19, 0xf2, 0x41, 0x9a, 0x9c, 0xc9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x38, 0xb8, 0xd7, 0xf1, 0x6d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x0d, 0x0a, 0xff, 0xa0, 0x83, 0xd3, 0x19, 0xf2, 0x41, 0xda, 0x8b, 0xc7, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x36, 0x78, 0x20, 0xc7, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xa8, 0xfb, 0x2c, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x86, 0xdf, 0x78, 0xbe, 0x41, 0xf2, 0x10, 0xf3, 0x82, 0x60, 0xe1, 0x17, 0x24, 0x03, 0xb5, 0xea, 0xe0, 0x24, 0x74, 0x7c, 0x90, 0x6e, 0x29, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x1a, 0x99, 0x2d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x85, 0xdf, 0x78, 0xbe, 0x20, 0xd8, 0x60, 0xe9, 0xff, 0xd8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x08, 0x0e, 0x4e, 0x67, 0xc8, 0x07, 0xb1, 0xef, 0x2c, 0x73, 0x1c, 0x3a, 0x1c, 0xed, 0x87, 0xbd, 0xc2, 0xe3, 0xd0, 0x71, 0x68, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0x3a, 0xb7, 0xcc, 0xc1, 0xb8, 0x83, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x8d, 0xcc, 0x16, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xc2, 0x6f, 0x3c, 0x5f, 0x10, 0x6c, 0x10, 0x91, 0xe0, 0x32, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0xfa, 0x3f, 0x76, 0x30, 0xb0, 0x45, 0x0f, 0x8d, 0xe7, 0x8f, 0x43, 0x87, 0xa3, 0xfd, 0xb0, 0x57, 0x78, 0x1c, 0x3a, 0x0e, 0x6d, 0x90, 0xd2, 0x67, 0xbd, 0x20, 0xd8, 0x20, 0xa2, 0xb9, 0x65, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x23, 0xb3, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x74, 0x30, 0x96, 0x93, 0x8e, 0x43, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xf1, 0x21, 0x2e, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xda, 0x50, 0x3b, 0x0e, 0xd2, 0xe1, 0x20, 0x8e, 0x43, 0x87, 0x18, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x8f, 0x57, 0xe6, 0x58, 0x1c, 0x84, 0x8b, 0x03, 0x91, 0xd8, 0x50, 0x47, 0xd6, 0x30, 0x43, 0x6b, 0x98, 0xb8, 0x0d, 0xd3, 0xb9, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xfb, 0x0d, 0xc2, 0x15, 0x61, 0x43, 0x31, 0x5d, 0x83, 0x07, 0x6f, 0x60, 0x1c, 0x3c, 0xa6, 0x32, 0x64, 0xc3, 0x0c, 0x6d, 0xf0, 0x72, 0xd0, 0x92, 0x0d, 0x27, 0xc2, 0x06, 0x2f, 0x07, 0x2d, 0xd9, 0x60, 0x31, 0x1b, 0xd4, 0x32, 0xcb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x11, 0xed, 0x9b, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xce, 0xc5, 0xb1, 0xe1, 0xeb, 0x97, 0x35, 0xfc, 0x08, 0x73, 0x70, 0xf0, 0xc8, 0xd8, 0x60, 0xa1, 0xec, 0xd3, 0x06, 0xcd, 0x74, 0x0e, 0xac, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x0b, 0xa0, 0x03, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xe9, 0xc2, 0x70, 0xf8, 0x90, 0x3a, 0x38, 0x68, 0xab, 0x74, 0xe0, 0x60, 0x25, 0x9d, 0xfe, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x87, 0xf3, 0xf8, 0xa0, 0xd9, 0x4b, 0x88, 0x0d, 0x27, 0xc2, 0x06, 0x71, 0xd2, 0x2e, 0x73, 0xd0, 0xaa, 0x2b, 0xc4, 0x41, 0x43, 0xb0, 0x10, 0x1b, 0x3c, 0xda, 0x41, 0x67, 0x41, 0xb0, 0xc1, 0x43, 0x72, 0xa5, 0x0e, 0xde, 0x73, 0x9c, 0xb3, 0xc1, 0x83, 0x0d, 0xde, 0x16, 0x04, 0x1b, 0x3c, 0x24, 0x57, 0xea, 0xe0, 0x75, 0xda, 0x1c, 0x0b, 0x82, 0x0d, 0x1e, 0x92, 0x2b, 0x75, 0xf0, 0x66, 0x3e, 0xb5, 0x43, 0x0c, 0x8f, 0xc7, 0x1b, 0x14, 0x8a, 0x34, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x61, 0x17, 0x6e, 0x83, 0x78, 0xb5, 0x95, 0x39, 0x38, 0x82, 0xde, 0x2f, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x20, 0xd8, 0x20, 0xcc, 0xd5, 0x0f, 0x1d, 0x34, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0x7e, 0x3c, 0x1e, 0x04, 0x1b, 0x3c, 0x5e, 0x99, 0x63, 0x71, 0x10, 0x2e, 0x0e, 0x44, 0x62, 0x43, 0x1d, 0xd9, 0x20, 0xfa, 0xdd, 0x65, 0x0e, 0xe2, 0x09, 0x5e, 0x66, 0x83, 0x47, 0x3b, 0xe8, 0x6c, 0x10, 0xb1, 0xf6, 0x32, 0x1b, 0x44, 0x36, 0xab, 0xcc, 0x41, 0x94, 0xde, 0xcb, 0x1c, 0x8f, 0x8f, 0xc7, 0x2b, 0x08, 0x36, 0x48, 0xfd, 0xc7, 0x58, 0x5c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xd6, 0xf7, 0x16, 0x83, 0x77, 0x7b, 0x07, 0xc1, 0x06, 0xeb, 0xda, 0xc6, 0x0e, 0x1d, 0x34, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x44, 0xfa, 0xbf, 0xcc, 0x20, 0x58, 0x90, 0x0c, 0xba, 0x0e, 0xc9, 0xa5, 0x43, 0x07, 0x8d, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0x5c, 0x39, 0x38, 0x66, 0x15, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x81, 0x81, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x6b, 0xf3, 0xcb, 0x0e, 0xd6, 0x25, 0x9c, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0x5b, 0x0c, 0x3c, 0x98, 0xb6, 0x79, 0x10, 0x6c, 0xd0, 0xd4, 0x92, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x74, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc2, 0x43, 0x99, 0xe1, 0x37, 0x9e, 0x1f, 0x44, 0x5d, 0xb2, 0xcc, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x63, 0xf0, 0x6d, 0xf3, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x36, 0x48, 0xfd, 0xc7, 0x58, 0x1c, 0x76, 0xe1, 0x0e, 0x4a, 0xdb, 0x9b, 0xc5, 0x83, 0x04, 0xc2, 0xcd, 0x61, 0x17, 0x04, 0x1b, 0xbc, 0x1f, 0xc7, 0xe2, 0x60, 0x20, 0x9e, 0x2d, 0x08, 0x36, 0x68, 0x6a, 0xc9, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x5a, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x98, 0x41, 0x98, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xf0, 0x50, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x07, 0xaf, 0xc1, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x0c, 0x5d, 0x38, 0x18, 0x88, 0x67, 0xc7, 0xa1, 0xe3, 0xd0, 0x41, 0xb4, 0x27, 0xcc, 0x1c, 0x87, 0x06, 0xc1, 0x06, 0x4d, 0x2d, 0x39, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x1b, 0x2c, 0x4d, 0x3d, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x36, 0x48, 0x2e, 0x9c, 0x1e, 0x44, 0x1b, 0x0c, 0xfd, 0xd5, 0xe3, 0xf1, 0x71, 0xe8, 0x78, 0x7c, 0x3c, 0x5e, 0xc5, 0x85, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x90, 0x98, 0x1a, 0x04, 0x8b, 0xc3, 0x6e, 0x30, 0x0e, 0x99, 0x36, 0x8c, 0xcb, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x36, 0x68, 0xc3, 0x56, 0x60, 0x90, 0x0c, 0x14, 0xbf, 0x43, 0x5f, 0x8d, 0x83, 0xd3, 0x05, 0xf6, 0x20, 0x19, 0x32, 0x88, 0x16, 0xbc, 0x3f, 0x18, 0x03, 0x0b, 0x83, 0x68, 0x61, 0x37, 0x28, 0x30, 0xde, 0x06, 0xc1, 0x82, 0x60, 0x83, 0xa6, 0x90, 0x06, 0x0e, 0x9e, 0xbd, 0x43, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0xa4, 0x69, 0x18, 0x7e, 0xe3, 0xf9, 0x86, 0xac, 0xdd, 0xc1, 0x40, 0xbd, 0x3c, 0x0e, 0x1d, 0xcf, 0x8f, 0x6f, 0x83, 0x60, 0x0d, 0x31, 0x1c, 0x7e, 0x41, 0xb0, 0x20, 0x19, 0x68, 0xd3, 0x77, 0x70, 0xcc, 0x2a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xbe, 0x3b, 0x07, 0xc7, 0xac, 0xe2, 0x83, 0x85, 0xc9, 0x3f, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x82, 0x60, 0x83, 0x78, 0xe5, 0x98, 0x39, 0x58, 0x05, 0x90, 0x75, 0x10, 0x22, 0xfe, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xf1, 0x6d, 0xf8, 0x05, 0xc1, 0xe2, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x10, 0x2c, 0x0e, 0xbb, 0xb0, 0x1b, 0x8c, 0x4d, 0xce, 0x0d, 0x31, 0x1c, 0x76, 0x41, 0xb0, 0xc1, 0x8b, 0x85, 0x01, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb2, 0x76, 0x07, 0xa3, 0xd5, 0xfc, 0x38, 0x74, 0x48, 0xe7, 0x6e, 0x18, 0x97, 0x61, 0x17, 0x04, 0x1b, 0x24, 0xc7, 0x3b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x06, 0x14, 0xfc, 0x71, 0x68, 0x61, 0x17, 0x04, 0x1b, 0xb4, 0x57, 0x26, 0x72, 0x10, 0xd7, 0x23, 0x33, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x83, 0x52, 0x79, 0x6b, 0x10, 0x2d, 0xec, 0x06, 0x23, 0xda, 0x6e, 0x83, 0xa6, 0x78, 0x49, 0x0e, 0xe3, 0x72, 0x3c, 0x3e, 0x18, 0xf5, 0xda, 0x83, 0x64, 0xc8, 0x20, 0xda, 0xa0, 0x54, 0xde, 0x3a, 0x1e, 0x1f, 0xdf, 0x06, 0xc1, 0xe2, 0xb0, 0x1b, 0xd6, 0xf7, 0x36, 0x64, 0x2b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x3f, 0x08, 0x16, 0x24, 0x83, 0xbe, 0x43, 0xb6, 0xe2, 0x90, 0x86, 0x3b, 0x28, 0x6a, 0xce, 0x8e, 0x6f, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xb0, 0x1b, 0xf2, 0x58, 0x1b, 0x62, 0x38, 0xec, 0x82, 0x60, 0x83, 0x03, 0x58, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xbe, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x2f, 0x08, 0x16, 0x24, 0x03, 0xe7, 0xdd, 0xc1, 0xb9, 0xfe, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0x81, 0xcf, 0x24, 0x07, 0xaf, 0x05, 0xd2, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xcb, 0x7e, 0x1b, 0x87, 0x34, 0xdc, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0xd2, 0xb9, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xb0, 0x0b, 0x77, 0xf0, 0x46, 0x60, 0x81, 0x0d, 0x31, 0x1c, 0x76, 0x41, 0xb0, 0xc1, 0x61, 0x21, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x5f, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x17, 0x04, 0x1b, 0x44, 0x0e, 0xcb, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x78, 0x6b, 0x99, 0x39, 0xa4, 0xe1, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x21, 0x9d, 0x7b, 0x3c, 0x5e, 0x41, 0xb0, 0x41, 0x90, 0xe2, 0x0f, 0x82, 0xc5, 0x61, 0x37, 0xac, 0xef, 0x6d, 0x48, 0x2e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x07, 0x3e, 0x93, 0x0c, 0x92, 0x81, 0xe2, 0x77, 0x30, 0xc8, 0x20, 0x0f, 0x69, 0xb8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x74, 0x43, 0xbe, 0x76, 0x10, 0x6c, 0x30, 0xb8, 0x2b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0x96, 0x29, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0x03, 0xf5, 0xf2, 0x38, 0x74, 0x1c, 0x3a, 0x9e, 0x1f, 0xdf, 0x86, 0xdd, 0x90, 0xc7, 0xda, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0x7a, 0x42, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x2f, 0x08, 0x36, 0x78, 0xb9, 0x1d, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x53, 0x48, 0x03, 0x07, 0xd1, 0x65, 0x31, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x55, 0x75, 0xa5, 0x43, 0x1a, 0xee, 0x38, 0x74, 0x1c, 0x3a, 0x9e, 0x1f, 0x87, 0x06, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x5a, 0xd8, 0x85, 0x5d, 0xb8, 0x83, 0xa6, 0x78, 0x49, 0x16, 0xe6, 0x10, 0xff, 0x43, 0xfc, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x07, 0x3e, 0x93, 0x1c, 0xbc, 0x74, 0xee, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x6b, 0x37, 0xfc, 0xc6, 0xf3, 0x0d, 0xe3, 0xb2, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xf4, 0xbe, 0x83, 0x73, 0xfd, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xbe, 0xf6, 0xa0, 0x51, 0x3a, 0x96, 0xe3, 0xd0, 0xb0, 0x1b, 0xf2, 0x58, 0x1b, 0x62, 0x38, 0xfc, 0x06, 0xb1, 0xc1, 0x32, 0x73, 0x3c, 0x3f, 0x0e, 0x1d, 0x92, 0x4b, 0xc7, 0xe3, 0x83, 0x53, 0x18, 0xee, 0x41, 0x23, 0xdd, 0xf6, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xd9, 0xde, 0xe6, 0xe6, 0x0d, 0x82, 0x9c, 0xbf, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0x08, 0x36, 0x24, 0xa6, 0x86, 0x5f, 0x10, 0x2d, 0xe4, 0xe0, 0x5c, 0x88, 0x7d, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0xb8, 0x20, 0xd8, 0x10, 0xcd, 0xc5, 0x61, 0x17, 0x6e, 0xc3, 0xd1, 0x7e, 0x30, 0x26, 0xac, 0x16, 0x76, 0x43, 0xc3, 0xc5, 0xd5, 0x70, 0xb4, 0x2f, 0x08, 0x36, 0x68, 0x39, 0x07, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0x87, 0xd0, 0x41, 0x02, 0xb6, 0xc0, 0x71, 0x68, 0x10, 0x6c, 0xd0, 0x72, 0x0e, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xc7, 0xb0, 0x83, 0x11, 0xe4, 0x79, 0x1c, 0x3a, 0xac, 0xfd, 0x0e, 0xb2, 0x0d, 0x1a, 0xfa, 0x8e, 0xd9, 0x90, 0x3a, 0x38, 0x18, 0x50, 0x61, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x87, 0x3b, 0x28, 0xe8, 0x5f, 0x86, 0xdd, 0xd0, 0x70, 0x71, 0x0d, 0xa9, 0x83, 0x61, 0x37, 0x58, 0x99, 0xd7, 0xb3, 0x61, 0xed, 0xf7, 0x60, 0x40, 0x85, 0x0d, 0xb2, 0x0d, 0x1a, 0xfa, 0x8e, 0x59, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0xd1, 0x3e, 0xd8, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x2c, 0x76, 0x1e, 0xf2, 0xb5, 0xc7, 0xa1, 0xc3, 0xda, 0xef, 0xf1, 0x78, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xaf, 0x82, 0x25, 0x58, 0xd8, 0x0d, 0x9a, 0x20, 0x14, 0x59, 0xd8, 0x0d, 0x5a, 0x2b, 0x14, 0xd9, 0x78, 0x7e, 0x38, 0xc5, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x40, 0xe8, 0x0f, 0xce, 0x46, 0xcf, 0x83, 0x68, 0x41, 0x3c, 0x08, 0x36, 0x48, 0x6c, 0x39, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x36, 0x5c, 0x37, 0x18, 0xf8, 0x21, 0xc3, 0x6f, 0x3c, 0xdf, 0xa0, 0x08, 0x4d, 0x38, 0xc4, 0xf0, 0x38, 0x74, 0x3c, 0x1e, 0x76, 0x83, 0x26, 0x08, 0x45, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x06, 0x2f, 0x9d, 0x25, 0x18, 0x44, 0x0b, 0xe2, 0x41, 0xb0, 0x41, 0x62, 0xcb, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb1, 0xe1, 0xba, 0xf0, 0x1b, 0xcf, 0x37, 0x28, 0x61, 0x24, 0x0e, 0x31, 0x3c, 0x18, 0xf8, 0x21, 0xc7, 0xa1, 0xe3, 0xf1, 0xb0, 0x1b, 0xb4, 0x56, 0x28, 0xb2, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0x41, 0x62, 0xcb, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb1, 0xe1, 0xba, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0f, 0xdc, 0x15, 0x38, 0x08, 0x23, 0xfc, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1e, 0xb8, 0x2b, 0x70, 0x70, 0xba, 0xc0, 0x3e, 0x0e, 0x1d, 0xcf, 0x87, 0x5d, 0xb8, 0x0d, 0x4a, 0x18, 0x89, 0x83, 0x22, 0x57, 0x61, 0x61, 0x17, 0x6e, 0x83, 0x22, 0x34, 0xe1, 0xa0, 0xc8, 0x55, 0x58, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xea, 0x37, 0x18, 0x8b, 0x9d, 0x1b, 0x9c, 0x8d, 0x9e, 0x0f, 0x4a, 0x99, 0x9d, 0x41, 0xb4, 0x20, 0x1e, 0x04, 0x1b, 0x24, 0xb6, 0x9c, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x07, 0x63, 0xc3, 0xf5, 0x38, 0x74, 0x3c, 0x3e, 0x88, 0x6a, 0xa9, 0x99, 0x61, 0x37, 0x88, 0x9c, 0xae, 0x99, 0x0d, 0x22, 0xc5, 0x6a, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0xc4, 0xc7, 0xd4, 0xcc, 0x20, 0xda, 0xe0, 0xa5, 0xb3, 0x04, 0x83, 0x68, 0x41, 0x3c, 0x08, 0x36, 0x48, 0x6c, 0x39, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x36, 0x5c, 0x37, 0x88, 0xf7, 0xab, 0x99, 0x83, 0x98, 0xa7, 0x9a, 0x39, 0x0e, 0x1d, 0x8f, 0x8f, 0x6f, 0xc3, 0x2f, 0x88, 0x16, 0xa4, 0xc3, 0x2e, 0xec, 0x06, 0xcf, 0x56, 0xbd, 0x38, 0xac, 0x6f, 0x6e, 0x48, 0x6c, 0x1e, 0xc6, 0xe5, 0x78, 0x3c, 0x08, 0x36, 0x48, 0xed, 0xf6, 0x38, 0x74, 0xd0, 0x38, 0x18, 0x77, 0x50, 0x07, 0x6b, 0xf9, 0x04, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x8b, 0xc3, 0x6e, 0x10, 0x7c, 0xcc, 0x1b, 0x62, 0xb8, 0xb0, 0x1b, 0xac, 0xfd, 0xf8, 0xda, 0x90, 0xb5, 0x1b, 0x64, 0x6b, 0x68, 0xbf, 0x7e, 0xb0, 0xfe, 0xe9, 0x6b, 0xc3, 0xd1, 0xbe, 0xc1, 0x41, 0xbc, 0xfb, 0x20, 0x75, 0x7d, 0xe0, 0x60, 0xc5, 0x82, 0xce, 0xf1, 0xed, 0x78, 0x3c, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0xc5, 0x61, 0x37, 0x18, 0x04, 0x1c, 0x0b, 0x82, 0x0d, 0x52, 0xbb, 0x3d, 0x0e, 0x8d, 0x5a, 0x86, 0x5d, 0xb8, 0x83, 0x57, 0x37, 0x57, 0x2c, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf3, 0x05, 0xc1, 0x82, 0x64, 0x83, 0xc2, 0x3f, 0xe8, 0xe0, 0x98, 0x55, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x6c, 0xf4, 0x7c, 0x48, 0x76, 0x1c, 0x87, 0x0e, 0x0d, 0xbf, 0x06, 0xd1, 0xc2, 0x0e, 0x82, 0x0d, 0x16, 0xbe, 0x7a, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xb5, 0xdb, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd9, 0xa0, 0x88, 0xee, 0x3a, 0x38, 0x66, 0x15, 0x1f, 0xc4, 0x6e, 0xdb, 0xcc, 0x71, 0xe8, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xda, 0xaf, 0x0f, 0xb7, 0xe1, 0x68, 0x3f, 0x08, 0x92, 0xe8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x98, 0x2f, 0x08, 0x16, 0x04, 0x1b, 0xa4, 0x76, 0x7b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xde, 0x6e, 0x10, 0x71, 0x1c, 0x1a, 0x04, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x20, 0x48, 0xf1, 0x87, 0x5d, 0xd8, 0x85, 0x1e, 0x04, 0x29, 0xfe, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x14, 0x61, 0x13, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x5f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x04, 0xff, 0xa0, 0xe4, 0x94, 0x38, 0x28, 0x6a, 0xce, 0x0e, 0xa7, 0xd8, 0xf1, 0xed, 0xd0, 0xf0, 0x6b, 0x10, 0x2d, 0xec, 0x20, 0xd8, 0x60, 0xe1, 0xab, 0xd7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x07, 0x20, 0x44, 0x1c, 0x52, 0x35, 0xc7, 0xa1, 0xe3, 0xf1, 0xf1, 0xed, 0x78, 0x7c, 0x3c, 0x1e, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x19, 0x30, 0x3a, 0xb0, 0x48, 0x18, 0xb7, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x34, 0x18, 0x37, 0xb0, 0x3d, 0x18, 0x3f, 0x08, 0x16, 0x37, 0x08, 0x80, 0xfb, 0x83, 0xe7, 0xa4, 0x6f, 0x2c, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x5b, 0x83, 0x71, 0x07, 0xb1, 0xcb, 0x37, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xac, 0x0d, 0xc6, 0x1d, 0xc4, 0x2e, 0xdf, 0xcc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xda, 0x60, 0x48, 0x06, 0xd6, 0x06, 0xc3, 0x76, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xac, 0x0d, 0x86, 0x68, 0x60, 0x6d, 0x30, 0xc4, 0x07, 0xb1, 0xdc, 0x2a, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xda, 0x60, 0xc8, 0x07, 0xd6, 0x06, 0xc3, 0xe2, 0xa0, 0x14, 0x91, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x36, 0x18, 0x26, 0x03, 0x6b, 0x83, 0x61, 0x7a, 0x30, 0x7e, 0xba, 0x8e, 0x43, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x7b, 0x83, 0x21, 0x19, 0xd8, 0x1b, 0x0c, 0xe3, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x37, 0x18, 0xa2, 0x81, 0xbd, 0xc1, 0x10, 0x1f, 0xc4, 0x72, 0xab, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x7b, 0x83, 0x21, 0x1f, 0xd8, 0x1b, 0x0c, 0x93, 0x83, 0x82, 0x34, 0x71, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xde, 0x60, 0xd8, 0x0c, 0xec, 0x0d, 0x86, 0xed, 0xa1, 0xa1, 0xce, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x71, 0x30, 0x24, 0x03, 0x8b, 0x83, 0x61, 0x3c, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x16, 0x07, 0x43, 0x34, 0xb0, 0x38, 0x18, 0xe2, 0x83, 0x58, 0x6e, 0x95, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x71, 0x30, 0xe4, 0x03, 0x8b, 0x83, 0x61, 0x72, 0x50, 0x90, 0x26, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x1c, 0x0c, 0x9b, 0x81, 0xc5, 0xc1, 0xb0, 0x3d, 0x58, 0x08, 0xb3, 0x7f, 0x1c, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xd8, 0x1c, 0x0c, 0xc9, 0xc0, 0xe6, 0x60, 0x58, 0x1c, 0x0c, 0x2f, 0x8a, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xd5, 0xc1, 0x90, 0x0c, 0xac, 0x0e, 0x86, 0xc5, 0xa1, 0xc7, 0xce, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xee, 0x60, 0x48, 0x06, 0x76, 0x07, 0xc3, 0x70, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xec, 0x0e, 0x86, 0x68, 0x60, 0x77, 0x30, 0xc4, 0x07, 0xb1, 0xdc, 0x2a, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x3b, 0x18, 0xf2, 0x81, 0xdd, 0xc1, 0xb0, 0x3b, 0x18, 0x6b, 0x2a, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x79, 0x30, 0x24, 0x03, 0xcb, 0x83, 0x61, 0x71, 0x10, 0x94, 0xde, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x44, 0x46, 0xdf, 0xcc, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x07, 0x8c, 0x1b, 0xd8, 0x08, 0x8c, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x07, 0x0c, 0xc9, 0xc0, 0x3a, 0x60, 0x68, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x07, 0x0c, 0xf1, 0xc0, 0x3a, 0x60, 0x98, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xeb, 0x80, 0x21, 0x3a, 0x88, 0x8f, 0xd1, 0x99, 0x41, 0xb0, 0x41, 0xec, 0x99, 0x60, 0x1c, 0x24, 0x1b, 0x1a, 0x0c, 0xb2, 0x0d, 0x62, 0x1d, 0x74, 0x66, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x1d, 0x30, 0xec, 0x06, 0xd6, 0x01, 0xc3, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x07, 0x0c, 0x9b, 0x83, 0x28, 0x36, 0x9d, 0x19, 0x04, 0x1b, 0xc4, 0xfa, 0xf0, 0xcb, 0x41, 0x72, 0xf9, 0xc0, 0x20, 0xdb, 0x20, 0xd6, 0x41, 0x67, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x75, 0xc0, 0x50, 0x30, 0xb0, 0x0e, 0x18, 0x4a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x75, 0xc0, 0x30, 0x3e, 0x88, 0x35, 0xd5, 0x99, 0x41, 0xb0, 0x41, 0x3c, 0x9c, 0xbf, 0x1c, 0x9c, 0xac, 0xbb, 0x07, 0xd9, 0x06, 0xb1, 0xfa, 0x39, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x0f, 0x18, 0x92, 0x81, 0x7d, 0xc0, 0xd0, 0xb1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x0f, 0x18, 0xe2, 0x81, 0x7d, 0xc0, 0xb0, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xf6, 0x01, 0x43, 0x74, 0x10, 0x61, 0xaf, 0x33, 0x83, 0x60, 0x83, 0x56, 0xae, 0xcb, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0xca, 0xa0, 0x39, 0x18, 0x44, 0x2b, 0xc7, 0xa1, 0x41, 0xb6, 0x41, 0xb4, 0xb4, 0xce, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xec, 0x03, 0x86, 0xd9, 0xc0, 0x3e, 0x60, 0x58, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xfb, 0x80, 0x61, 0x72, 0x10, 0xbf, 0xb3, 0x33, 0x83, 0x60, 0x83, 0x56, 0xae, 0xcb, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0xca, 0xa0, 0x39, 0x18, 0x56, 0x2b, 0xc7, 0xa1, 0x41, 0xb6, 0x41, 0xb4, 0xb4, 0xce, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xfb, 0x80, 0x61, 0x3e, 0xb0, 0x0f, 0x18, 0x2a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x7d, 0xc0, 0x30, 0x3d, 0x88, 0x0d, 0xdc, 0x99, 0x41, 0xb0, 0x41, 0x9c, 0x60, 0xa3, 0x1c, 0x44, 0x26, 0xab, 0xc9, 0x20, 0xdb, 0x20, 0x56, 0x3f, 0x67, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x85, 0xc0, 0x90, 0x0e, 0x2c, 0x04, 0x86, 0xc5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x10, 0x18, 0x92, 0x83, 0x38, 0xde, 0x9d, 0x39, 0x88, 0x66, 0x6d, 0x94, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x02, 0x61, 0xdc, 0xc0, 0x1e, 0x61, 0x88, 0x07, 0xc1, 0x06, 0x91, 0xd1, 0x37, 0xb3, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x6c, 0x10, 0xc6, 0x1d, 0xc4, 0xbb, 0xef, 0xcc, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x42, 0x18, 0x77, 0x10, 0xef, 0xbe, 0x33, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x87, 0x30, 0x7e, 0x60, 0x89, 0x30, 0xa4, 0xc3, 0x6e, 0x90, 0xc0, 0xf5, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x44, 0x18, 0x7f, 0x10, 0x4d, 0xc3, 0x33, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x4b, 0x84, 0x21, 0x18, 0x58, 0x22, 0x0c, 0xd1, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x12, 0x61, 0xc8, 0x06, 0x96, 0x08, 0x43, 0x78, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x43, 0x18, 0x56, 0x03, 0x3b, 0x84, 0x61, 0x7d, 0x10, 0x94, 0xde, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x16, 0x61, 0xdc, 0x41, 0xbc, 0xfb, 0xce, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x2d, 0xc2, 0xb0, 0x19, 0xd8, 0x22, 0x0c, 0x7d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x16, 0x61, 0xd8, 0x0e, 0x6c, 0x11, 0x86, 0xba, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x2d, 0xc2, 0x30, 0x1e, 0xd8, 0x22, 0x0c, 0x4d, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x5b, 0x84, 0x61, 0x3d, 0xb0, 0x45, 0x18, 0x0a, 0x86, 0x5f, 0xf8, 0x8d, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x16, 0x61, 0x98, 0x0d, 0x6c, 0x11, 0x86, 0xe9, 0x21, 0x55, 0x73, 0x10, 0x52, 0xe0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x5b, 0x84, 0xa1, 0x61, 0x60, 0x8b, 0x30, 0x94, 0x1c, 0x84, 0x14, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x45, 0x18, 0x5a, 0x06, 0xb6, 0x08, 0x43, 0xd1, 0xf0, 0x1b, 0x44, 0x13, 0xf4, 0xcc, 0x41, 0x50, 0x7a, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x5b, 0x84, 0xa1, 0x6a, 0x60, 0x8b, 0x30, 0xb4, 0x1d, 0x84, 0x00, 0xf8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x46, 0x18, 0x77, 0x10, 0xef, 0xbe, 0x33, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x8d, 0x30, 0x24, 0x03, 0x6b, 0x84, 0xa1, 0x66, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x23, 0x0c, 0xe9, 0x41, 0x4c, 0x66, 0xcf, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x35, 0xc2, 0x10, 0x0f, 0xac, 0x11, 0x86, 0xc5, 0x20, 0x19, 0x08, 0xd3, 0xc1, 0x31, 0xab, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x35, 0xc2, 0x30, 0x19, 0x58, 0x23, 0x0c, 0x9b, 0x43, 0x7f, 0xf2, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xac, 0x11, 0x86, 0xd1, 0xc0, 0x1a, 0x61, 0x18, 0x1f, 0x04, 0x49, 0xf4, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x35, 0xc2, 0xb0, 0x1e, 0x58, 0x23, 0x0c, 0x2d, 0x07, 0x6f, 0xaa, 0xa1, 0x38, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x7b, 0x84, 0x71, 0x07, 0xf1, 0xee, 0x3b, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x47, 0x18, 0x3b, 0xb0, 0x47, 0x18, 0x92, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x47, 0x18, 0xa2, 0x81, 0x3d, 0xc2, 0x90, 0x1e, 0x52, 0x07, 0xc7, 0xe3, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xfd, 0xc0, 0xb8, 0x81, 0x65, 0xc1, 0xf8, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x82, 0x60, 0xdc, 0x41, 0x04, 0xa0, 0xcf, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x2b, 0x82, 0x71, 0x07, 0x11, 0x80, 0x3e, 0x33, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x8a, 0x60, 0x48, 0x06, 0x56, 0x04, 0x43, 0xfb, 0xb0, 0x1b, 0x3a, 0x8e, 0x2c, 0xec, 0x06, 0x41, 0xaf, 0xbf, 0xb0, 0x1b, 0x8c, 0x5e, 0xac, 0x85, 0xdd, 0xa0, 0x08, 0x19, 0x5c, 0xd8, 0x0d, 0x12, 0xbb, 0x7e, 0x16, 0x76, 0x83, 0x51, 0xd0, 0xbb, 0xb0, 0x1b, 0x0c, 0xc8, 0xde, 0x85, 0xdd, 0xa0, 0x88, 0x1b, 0x5c, 0xd8, 0x0d, 0x1e, 0xc8, 0x4f, 0xb3, 0xb0, 0x1b, 0x3c, 0x7b, 0xe9, 0x66, 0x61, 0x37, 0x18, 0x9e, 0xca, 0x0b, 0xbb, 0xd0, 0x83, 0x67, 0x7e, 0x54, 0x1c, 0xd6, 0x37, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x4b, 0x82, 0x71, 0x07, 0x11, 0x80, 0x3e, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x96, 0x04, 0x43, 0x3a, 0xb0, 0x24, 0x18, 0xf6, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x49, 0x30, 0xc4, 0x03, 0x4b, 0x82, 0x61, 0x72, 0xf0, 0x42, 0x51, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x96, 0x04, 0xc3, 0x66, 0x60, 0x49, 0x30, 0xac, 0x0e, 0x4a, 0x11, 0xc9, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x4b, 0x82, 0x61, 0x36, 0xb0, 0x24, 0x18, 0xe6, 0x87, 0x68, 0x1e, 0x87, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x2c, 0x09, 0x86, 0x8a, 0x81, 0x25, 0xc1, 0xd0, 0x71, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x25, 0x18, 0x77, 0x10, 0x01, 0xe8, 0x33, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x4b, 0x30, 0xa4, 0x03, 0x5b, 0x82, 0xa1, 0x60, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x6c, 0x09, 0x86, 0x78, 0x60, 0x4b, 0x30, 0x4c, 0x06, 0xc9, 0xc0, 0xba, 0xdd, 0xc1, 0xf0, 0x8f, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x4b, 0x30, 0x6c, 0x06, 0xb6, 0x04, 0xc3, 0xec, 0xa0, 0x20, 0x4d, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x25, 0x18, 0x76, 0x03, 0x5b, 0x82, 0x61, 0x7f, 0xe8, 0x21, 0x74, 0x1c, 0x1a, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x25, 0x18, 0x2a, 0x06, 0xb6, 0x04, 0x43, 0xc7, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x9a, 0x60, 0xdc, 0x41, 0x04, 0xa0, 0xcf, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x35, 0xc1, 0x90, 0x0e, 0xac, 0x09, 0x86, 0x82, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x26, 0x18, 0xe2, 0x81, 0x35, 0xc1, 0x30, 0x19, 0x24, 0x03, 0xeb, 0x76, 0x07, 0xc3, 0x51, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x35, 0xc1, 0xb0, 0x19, 0x58, 0x13, 0x0c, 0xb3, 0x83, 0x82, 0x34, 0x71, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x9a, 0x60, 0xd8, 0x0d, 0xac, 0x09, 0x86, 0xfd, 0xa1, 0xe9, 0xd0, 0x71, 0x68, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x9a, 0x60, 0xa8, 0x18, 0x58, 0x13, 0x0c, 0x1d, 0x87, 0x18, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x7b, 0x82, 0x71, 0x07, 0x11, 0x80, 0x3e, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xf6, 0x04, 0x43, 0x3a, 0xb0, 0x27, 0x18, 0xf6, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x4f, 0x30, 0xc4, 0x03, 0x7b, 0x82, 0x61, 0x35, 0x48, 0x06, 0xc6, 0xed, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xec, 0x09, 0x86, 0xd9, 0xc0, 0x9e, 0x60, 0x98, 0x1f, 0x24, 0xd3, 0x67, 0x1c, 0x87, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xec, 0x09, 0x86, 0x8a, 0x81, 0x3d, 0xc1, 0xd0, 0x71, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x28, 0x18, 0x77, 0x10, 0x01, 0xe8, 0x33, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x8b, 0x82, 0x21, 0x19, 0x58, 0x14, 0x0c, 0xd1, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xa6, 0x60, 0xdc, 0x41, 0x04, 0xa0, 0xcf, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x6c, 0x0a, 0x86, 0x64, 0x60, 0x53, 0x30, 0x8c, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x36, 0x05, 0x43, 0x34, 0xb0, 0x29, 0x18, 0xf2, 0xc3, 0xda, 0xef, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xa6, 0x60, 0x18, 0x0c, 0x6c, 0x0a, 0x86, 0xd5, 0x21, 0x5f, 0x3b, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x6c, 0x0a, 0x86, 0xd9, 0xc0, 0xa6, 0x60, 0xd8, 0x1e, 0xc6, 0x65, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x55, 0x30, 0x24, 0x03, 0xab, 0x82, 0xa1, 0x62, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x55, 0x30, 0x44, 0x03, 0xab, 0x82, 0x61, 0x72, 0x50, 0x1e, 0x19, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xac, 0x0a, 0x86, 0xcd, 0xc0, 0xaa, 0x60, 0xd8, 0x1e, 0x24, 0x88, 0x74, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xab, 0x82, 0x61, 0x3c, 0xb0, 0x2a, 0x18, 0x1a, 0x0e, 0x42, 0x00, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xd8, 0x15, 0x0c, 0xc9, 0xc0, 0xae, 0x60, 0x58, 0x1c, 0x3c, 0x16, 0x6b, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xd8, 0x11, 0x8c, 0x1f, 0xd8, 0x11, 0x0c, 0xc1, 0x21, 0x86, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x5f, 0x30, 0x6e, 0x60, 0x63, 0x30, 0xac, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x0b, 0x83, 0x71, 0x07, 0xd1, 0xda, 0x42, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x6c, 0x0c, 0xc6, 0x1d, 0x44, 0x6b, 0x0b, 0xcd, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xd8, 0x18, 0x8c, 0x1d, 0xd8, 0x18, 0x0c, 0xd1, 0x41, 0xfc, 0xa2, 0xca, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x6c, 0x0c, 0x86, 0x6c, 0x60, 0x63, 0x30, 0x8c, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xc6, 0x60, 0x08, 0x07, 0x36, 0x06, 0xc3, 0xf0, 0xe0, 0x90, 0xaa, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x31, 0x18, 0x96, 0x03, 0x1b, 0x83, 0x61, 0x7b, 0x48, 0x1d, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x29, 0x30, 0x6e, 0x60, 0x39, 0x30, 0x7e, 0x10, 0x6c, 0xb0, 0x2c, 0x0c, 0x66, 0x71, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xd8, 0x0a, 0x8c, 0x3b, 0x88, 0xae, 0x1c, 0x9a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x2d, 0x30, 0xee, 0x20, 0xba, 0x72, 0x68, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x0b, 0x0c, 0xc9, 0xc0, 0x5a, 0x60, 0xe8, 0x3a, 0x88, 0x3f, 0xf7, 0x99, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xbd, 0xc0, 0xb8, 0x83, 0xe8, 0xca, 0xa1, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x7b, 0x81, 0x21, 0x1d, 0xd8, 0x0b, 0x0c, 0xfb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x17, 0x18, 0xe2, 0x81, 0xbd, 0xc0, 0xb0, 0x1a, 0x24, 0x03, 0xe3, 0x76, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x7b, 0x81, 0x61, 0x36, 0xb0, 0x17, 0x18, 0xe6, 0x07, 0xcf, 0xfc, 0xa8, 0x38, 0x0e, 0x0d, 0xbb, 0xc1, 0xa8, 0x97, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xd8, 0x0b, 0x0c, 0x15, 0x03, 0x7b, 0x81, 0xa1, 0xe3, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x31, 0x30, 0xee, 0x20, 0xba, 0x72, 0x68, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x16, 0x03, 0x43, 0x32, 0xb0, 0x18, 0x18, 0xa2, 0x43, 0x0c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xcd, 0xc0, 0xb8, 0x83, 0xe8, 0xca, 0xa1, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xd8, 0x0c, 0x0c, 0xc9, 0xc0, 0x66, 0x60, 0x58, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x6c, 0x06, 0x86, 0x68, 0x60, 0x33, 0x30, 0xc4, 0x87, 0xac, 0xdd, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x66, 0x60, 0xc8, 0x07, 0x36, 0x03, 0xc3, 0xe6, 0xd0, 0x43, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xd8, 0x0c, 0x0c, 0xa3, 0x81, 0xcd, 0xc0, 0x30, 0x3c, 0x34, 0x2e, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x0d, 0x0c, 0xc9, 0xc0, 0x6a, 0x60, 0xa8, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x0d, 0x0c, 0xd1, 0xc0, 0x6a, 0x60, 0x98, 0x1c, 0x84, 0x3d, 0xf5, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x6a, 0x60, 0xd8, 0x0c, 0xac, 0x06, 0x86, 0xed, 0x41, 0xd2, 0x00, 0xc2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x1a, 0x18, 0xc6, 0x03, 0xab, 0x81, 0xa1, 0xe1, 0x20, 0x04, 0xc0, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xdd, 0xc0, 0x90, 0x0c, 0xec, 0x06, 0x86, 0xc5, 0xc1, 0x0a, 0x9f, 0xac, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x2d, 0x30, 0xb4, 0x0d, 0xac, 0x05, 0x86, 0xba, 0x43, 0x0c, 0x8f, 0xc7, 0xc7, 0xe3, 0x83, 0xf3, 0x13, 0xed, 0x8a, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0xb0, 0x1b, 0xb4, 0xf3, 0xdd, 0xb2, 0x21, 0x86, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x98, 0xbf, 0x83, 0xe1, 0x1f, 0x3b, 0x48, 0x06, 0xc2, 0x76, 0x48, 0xce, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x04, 0x1b, 0xc4, 0xd3, 0x16, 0xcd, 0x20, 0x19, 0x94, 0x1d, 0x92, 0x73, 0x87, 0x0e, 0x1a, 0xc7, 0xa1, 0xc5, 0x05, 0xc1, 0x06, 0xe7, 0xc8, 0xde, 0xc5, 0x05, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x30, 0x7f, 0x07, 0x67, 0x2f, 0xe3, 0x41, 0x32, 0xcc, 0x41, 0x99, 0xee, 0x70, 0x70, 0x54, 0x71, 0x1e, 0x04, 0x0b, 0x82, 0x0d, 0x22, 0xd8, 0x8b, 0x66, 0x90, 0x0c, 0x73, 0xb0, 0xe8, 0x53, 0xec, 0xe0, 0x24, 0xbf, 0x7c, 0x3c, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0xa2, 0x7d, 0xb0, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x5f, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x09, 0xf3, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x30, 0x86, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xc1, 0x5e, 0x34, 0x83, 0x64, 0x10, 0x1d, 0x94, 0xe9, 0x0e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x02, 0x13, 0x7b, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x04, 0x7b, 0xd1, 0x0c, 0x92, 0x81, 0xb8, 0x1d, 0x94, 0xe9, 0x0e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x59, 0xbb, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x11, 0xec, 0x45, 0x33, 0x48, 0x06, 0x65, 0x07, 0x65, 0xba, 0xc3, 0xa1, 0x83, 0xc6, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0x20, 0x58, 0x90, 0x0c, 0x44, 0xe7, 0xe0, 0x9c, 0x77, 0x7c, 0x50, 0x0a, 0x1a, 0x0d, 0x82, 0x0d, 0xa2, 0x35, 0x8d, 0xe6, 0xa0, 0xf0, 0x3c, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0x38, 0x47, 0xf6, 0x2e, 0x2e, 0x08, 0x36, 0x88, 0x06, 0x32, 0x9a, 0x83, 0xa3, 0x8a, 0xf3, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xc1, 0x5e, 0x34, 0x83, 0x64, 0x10, 0x1d, 0x2c, 0xfa, 0x14, 0x3b, 0x38, 0xc9, 0x2f, 0x1f, 0x8f, 0x17, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x08, 0xf6, 0xa2, 0x19, 0x24, 0x83, 0x6b, 0x07, 0x65, 0xba, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0x35, 0x8d, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x6b, 0x37, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xab, 0xea, 0x4a, 0x07, 0xa5, 0xb7, 0xc3, 0x71, 0xe8, 0xd0, 0x43, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x04, 0x1b, 0x44, 0xb0, 0x17, 0xcd, 0x20, 0x19, 0x5c, 0x3b, 0x58, 0xf4, 0x29, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x68, 0x4d, 0xa3, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xc8, 0xda, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xaa, 0xba, 0xd2, 0xc1, 0xf2, 0x4e, 0xb1, 0xe3, 0xd0, 0xa1, 0x63, 0xd8, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x36, 0x38, 0x47, 0xf6, 0x2e, 0x2e, 0x08, 0x36, 0x88, 0xe8, 0x32, 0x9a, 0x83, 0xa3, 0x8a, 0xf3, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xc1, 0x5e, 0x34, 0x83, 0x64, 0x20, 0x6e, 0x07, 0x8b, 0x3e, 0xc5, 0x0e, 0x4e, 0xf2, 0xcb, 0xc7, 0xe3, 0xe3, 0xf1, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x2e, 0xec, 0xc2, 0x6d, 0x88, 0xe1, 0x20, 0xd8, 0xa0, 0xb9, 0xc3, 0xa8, 0x83, 0x71, 0x1c, 0xb2, 0x21, 0x86, 0xc3, 0x6e, 0x68, 0x7a, 0xbe, 0x21, 0x86, 0xc3, 0x2e, 0x08, 0x36, 0x1c, 0xed, 0x83, 0x60, 0x71, 0xd8, 0x85, 0xdb, 0x20, 0x2d, 0xc8, 0xe3, 0x90, 0x3a, 0xd8, 0x70, 0xb4, 0x0f, 0xbb, 0x20, 0x58, 0x98, 0x41, 0xb0, 0xc1, 0x39, 0xd4, 0xf8, 0x20, 0xf1, 0x26, 0x68, 0xd8, 0x85, 0x5d, 0xb8, 0x0d, 0x02, 0x13, 0xfb, 0x38, 0x74, 0x58, 0xdf, 0x5c, 0xd8, 0x85, 0xdb, 0x20, 0x30, 0xb1, 0x07, 0xc1, 0x06, 0x11, 0x09, 0x2e, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x2b, 0x07, 0xa7, 0x33, 0xe4, 0x83, 0xe4, 0x11, 0x9e, 0xe3, 0xd0, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x37, 0xc4, 0xf0, 0x20, 0x19, 0x6c, 0xfb, 0xf8, 0x76, 0x48, 0xe7, 0x6e, 0x38, 0xda, 0x07, 0xc1, 0x82, 0x60, 0x0d, 0xd2, 0x03, 0xab, 0x0f, 0x31, 0x1c, 0x04, 0x8b, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x5e, 0xf6, 0x40, 0x73, 0x90, 0xfe, 0x4c, 0xb4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x41, 0xb0, 0xc1, 0x83, 0x22, 0x68, 0x0e, 0xd2, 0x9f, 0x89, 0x0e, 0x49, 0xbd, 0xe3, 0xf1, 0x21, 0xb1, 0x79, 0x7c, 0x1b, 0x76, 0xe1, 0x16, 0x04, 0x1b, 0x9c, 0x1c, 0x8b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa2, 0x39, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x48, 0x3a, 0x1d, 0x9c, 0x84, 0x8e, 0x0f, 0x46, 0x14, 0xee, 0x71, 0x68, 0x10, 0x6c, 0xb0, 0xde, 0xac, 0xe4, 0x60, 0x98, 0x85, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x10, 0x2c, 0x0e, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0xe9, 0x50, 0x1e, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x22, 0x15, 0xcd, 0x63, 0x90, 0x0c, 0x76, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x2c, 0x11, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x73, 0x30, 0xde, 0x74, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x91, 0x21, 0x23, 0x72, 0x90, 0x50, 0x0d, 0x72, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x11, 0xec, 0x45, 0x33, 0x48, 0x06, 0xd7, 0x0e, 0xc6, 0xe8, 0xe4, 0xc1, 0x78, 0xa3, 0x1c, 0x76, 0x61, 0x37, 0x28, 0xd8, 0x90, 0x36, 0xc4, 0x70, 0xd8, 0x05, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0xc5, 0x61, 0x17, 0x6e, 0x43, 0xaa, 0x66, 0x10, 0x6c, 0xf0, 0xf0, 0x7f, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc1, 0x59, 0xf6, 0xf8, 0x38, 0xb4, 0x21, 0x86, 0xc3, 0x2e, 0xdc, 0x86, 0xd4, 0xc1, 0x20, 0xd8, 0xe0, 0xe1, 0xff, 0x00, 0x83, 0x64, 0xc8, 0x41, 0x3b, 0xd5, 0x01, 0x1b, 0x8e, 0xf6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x88, 0x07, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x30, 0x7f, 0x07, 0xe7, 0xfa, 0xe3, 0x41, 0x32, 0x88, 0x0e, 0xa2, 0xff, 0x91, 0xe6, 0x60, 0x08, 0x7e, 0x1f, 0x76, 0x4c, 0x8e, 0x6f, 0x87, 0x74, 0xee, 0xc2, 0x2e, 0x48, 0x86, 0x1c, 0x14, 0xf0, 0x51, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x3f, 0xbe, 0x1d, 0x4e, 0xb1, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xa4, 0xd3, 0xc1, 0x70, 0x94, 0x3e, 0xa4, 0xe1, 0x06, 0xc1, 0x82, 0x60, 0x83, 0xf5, 0x66, 0x25, 0x07, 0x03, 0x5b, 0x74, 0x10, 0x2c, 0x2e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x87, 0xdd, 0x90, 0xc7, 0xda, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0xc3, 0xd1, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xe7, 0xde, 0xc1, 0x39, 0xef, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xd8, 0x70, 0x3d, 0x64, 0xed, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0x92, 0x31, 0xe9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf2, 0xb5, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0x08, 0x36, 0x58, 0xb8, 0x30, 0x71, 0x90, 0xfe, 0x4c, 0x34, 0x08, 0x36, 0x48, 0xff, 0x52, 0x38, 0x74, 0xd0, 0x38, 0x1e, 0x1f, 0x87, 0x0e, 0x22, 0x75, 0x93, 0xe6, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0x2b, 0xdd, 0x27, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x00, 0x95, 0xc8, 0x20, 0x19, 0x72, 0xd0, 0x96, 0x46, 0xcb, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x83, 0x07, 0xb3, 0xcf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0xcc, 0xfb, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x13, 0xf0, 0x91, 0xa5, 0x99, 0xb5, 0x9c, 0x85, 0x1b, 0x26, 0x6e, 0x83, 0xc6, 0x3e, 0x35, 0x36, 0x4c, 0xdc, 0x06, 0x4d, 0x38, 0x7f, 0x6c, 0x98, 0xfb, 0xc1, 0xe5, 0x83, 0xd5, 0xa3, 0xfa, 0xc3, 0x6f, 0x3c, 0x5f, 0x3c, 0x88, 0xdd, 0x51, 0x9a, 0x83, 0xc1, 0x3b, 0x79, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0x5d, 0xd8, 0x05, 0xc1, 0x06, 0xe7, 0x54, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xac, 0xdd, 0xc1, 0x78, 0xd3, 0x39, 0x0e, 0x2d, 0xec, 0x82, 0x60, 0x83, 0x73, 0x2a, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xbe, 0xf6, 0x60, 0xbc, 0xe9, 0x1c, 0x87, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x20, 0x58, 0x90, 0x0c, 0x04, 0xef, 0xe0, 0x9c, 0x77, 0x7c, 0x48, 0xb4, 0x1e, 0x4e, 0xb1, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x83, 0x07, 0xb3, 0xcf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0xcc, 0xfb, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x13, 0xf0, 0x91, 0xd5, 0x89, 0xb5, 0x9c, 0x85, 0x07, 0x31, 0x43, 0x4a, 0x33, 0xfc, 0xc6, 0xf3, 0xc5, 0x83, 0x58, 0x72, 0xa5, 0x39, 0x18, 0xbc, 0x93, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xd8, 0x05, 0xc1, 0x06, 0xe7, 0x54, 0xe4, 0x83, 0x68, 0x52, 0xa4, 0x59, 0xd8, 0x85, 0xdb, 0x70, 0xb4, 0x0f, 0x82, 0x0d, 0xe2, 0xae, 0xdc, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x59, 0xf8, 0x8d, 0xe7, 0x0b, 0x82, 0x0d, 0xe2, 0xef, 0x0e, 0xe4, 0x20, 0x7e, 0x3f, 0x69, 0x0e, 0x47, 0xfb, 0x21, 0x55, 0x73, 0x1c, 0x5a, 0x10, 0x6c, 0x90, 0x8c, 0x49, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x65, 0xf0, 0x02, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0xf4, 0xc6, 0x86, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcb, 0xe0, 0x05, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xba, 0x74, 0x70, 0xce, 0x3b, 0x3e, 0x18, 0xc7, 0x21, 0xc7, 0xa1, 0xe3, 0xd0, 0x41, 0xa4, 0xdb, 0xd2, 0x1c, 0x4e, 0xb1, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0x31, 0x1c, 0x04, 0x8b, 0xc3, 0x6e, 0x30, 0x08, 0x38, 0x36, 0xa4, 0x0e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0x7d, 0x10, 0x6c, 0xf0, 0xf0, 0x7f, 0x80, 0x83, 0x86, 0xc8, 0x04, 0x06, 0xd1, 0xc2, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x60, 0xaf, 0xef, 0xe0, 0x40, 0x91, 0x7c, 0xb0, 0x0a, 0x33, 0x6c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x31, 0x73, 0x48, 0x76, 0x1c, 0x87, 0x8e, 0xc7, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0x58, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x3e, 0x46, 0x43, 0x0e, 0x4a, 0x6f, 0x87, 0xe3, 0xd0, 0x20, 0xd8, 0x38, 0x74, 0x30, 0x04, 0xbf, 0x07, 0xc1, 0x06, 0x83, 0x15, 0x65, 0x10, 0x2c, 0x0e, 0xbb, 0x70, 0x1b, 0x8c, 0x37, 0x9d, 0xc3, 0xb8, 0xac, 0x20, 0x58, 0x10, 0x6c, 0x10, 0x73, 0xbb, 0x34, 0x07, 0x2f, 0xc6, 0x21, 0x39, 0x28, 0x97, 0x68, 0x0e, 0xf9, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x88, 0x37, 0x88, 0x77, 0x60, 0x9a, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0xe6, 0x76, 0x69, 0x0e, 0x9e, 0xbd, 0x43, 0x72, 0x48, 0xb4, 0x0e, 0xa2, 0x85, 0x5d, 0x10, 0x6c, 0x70, 0x0e, 0xf8, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0x36, 0x08, 0x1d, 0xb2, 0x76, 0xc7, 0xa1, 0x43, 0x52, 0xef, 0x78, 0x7c, 0x7c, 0x1b, 0x04, 0x1b, 0xa4, 0x5b, 0x4a, 0x2f, 0x2e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x83, 0xb6, 0xac, 0xfa, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0xb3, 0xd5, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x04, 0x7c, 0x70, 0x72, 0x6f, 0x2d, 0x67, 0xe1, 0x41, 0xcc, 0x90, 0xd2, 0x0c, 0xbf, 0xf1, 0x7c, 0xf1, 0x20, 0xce, 0x92, 0x69, 0x0e, 0x0a, 0xb7, 0xa4, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x62, 0x6e, 0x97, 0xe6, 0xe0, 0xb5, 0x40, 0x3a, 0x87, 0x34, 0xdc, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0x31, 0x1c, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x60, 0xaf, 0xef, 0xe0, 0xb4, 0xa1, 0x7c, 0xf0, 0x26, 0x2d, 0x9d, 0xc3, 0x1e, 0xef, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0x31, 0x1c, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0xaf, 0xe5, 0xb5, 0x19, 0x24, 0x03, 0xc5, 0xef, 0xa0, 0x4c, 0x77, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xa2, 0x73, 0x90, 0x16, 0x34, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x28, 0x39, 0x48, 0x0b, 0x1a, 0x39, 0x58, 0x6d, 0x41, 0x74, 0x50, 0xb8, 0x25, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0x32, 0x70, 0xde, 0x1d, 0xa4, 0x05, 0x8d, 0x1c, 0x0c, 0x6c, 0xd1, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x83, 0xb6, 0xac, 0xfa, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0xb3, 0xd5, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x04, 0x7c, 0x69, 0x6e, 0x76, 0x2d, 0x67, 0xe1, 0x41, 0xcc, 0x90, 0xd2, 0x0c, 0xbf, 0xf1, 0x7c, 0xf1, 0x20, 0x4e, 0xae, 0x69, 0x0e, 0x0a, 0xb7, 0xa4, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x1b, 0xc4, 0xe1, 0x32, 0xcd, 0xa1, 0x51, 0xcb, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0xa7, 0xd8, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x36, 0x88, 0x99, 0x66, 0x9a, 0x41, 0x32, 0x50, 0xfc, 0x0e, 0x42, 0x0e, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xf2, 0x69, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x48, 0x7d, 0x18, 0x97, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x06, 0xce, 0xbb, 0x83, 0x63, 0xc6, 0xf2, 0xc1, 0xc0, 0x16, 0x3d, 0x1e, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x06, 0xe7, 0xe0, 0xef, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xac, 0xdd, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x23, 0x01, 0xe7, 0xd0, 0x41, 0xe3, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x0d, 0x47, 0xfb, 0xc1, 0x98, 0x85, 0x1b, 0x04, 0x8b, 0xc3, 0x2e, 0xdc, 0x12, 0x2c, 0xff, 0x1f, 0x04, 0xa5, 0xf7, 0x86, 0x68, 0x0e, 0xbb, 0x70, 0x1b, 0x8e, 0xf6, 0x41, 0xb0, 0x41, 0x84, 0xa7, 0x5c, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x0b, 0xbf, 0xf1, 0x7c, 0x83, 0xa0, 0xf4, 0x3e, 0x1c, 0xed, 0x87, 0x64, 0xc7, 0x71, 0x68, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x82, 0x60, 0x83, 0x73, 0xc0, 0xf7, 0xc1, 0x18, 0x8d, 0x58, 0x10, 0x6c, 0x70, 0x0e, 0xf8, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xe8, 0x21, 0x74, 0xe8, 0x21, 0x74, 0x1c, 0x3a, 0x58, 0xc9, 0x29, 0x72, 0x3c, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf4, 0x20, 0x32, 0xcb, 0x69, 0x8e, 0xc7, 0xc7, 0xb7, 0xe3, 0xf1, 0xf1, 0xf8, 0x78, 0xbc, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0xbf, 0x20, 0x5a, 0xb0, 0x1d, 0x04, 0x0b, 0x92, 0x81, 0xdf, 0xef, 0x0e, 0x86, 0x7f, 0xec, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x81, 0x2f, 0x17, 0xd6, 0x06, 0x1f, 0x3a, 0x86, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0xe2, 0xb0, 0x0b, 0xb7, 0x20, 0xd8, 0xe0, 0x1c, 0x6a, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x59, 0xd3, 0xe0, 0x90, 0xec, 0x38, 0x0e, 0x1d, 0x52, 0x07, 0x0b, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x07, 0xc1, 0x06, 0x0d, 0x8b, 0xac, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xf2, 0x64, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x13, 0xf0, 0x86, 0xc9, 0xb5, 0xc8, 0x85, 0xb5, 0xc1, 0xc3, 0x6f, 0x3c, 0x1f, 0x0f, 0x62, 0x03, 0x9e, 0xe6, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x1f, 0x4e, 0xb1, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x6c, 0x10, 0x83, 0x47, 0x1f, 0x83, 0x64, 0xb0, 0x3b, 0x68, 0x7e, 0x49, 0xe0, 0x90, 0xbd, 0x18, 0x76, 0x61, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xe6, 0x7d, 0x07, 0x67, 0x2f, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xec, 0x69, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x87, 0x5d, 0xb8, 0x0d, 0x47, 0xfb, 0x20, 0xd8, 0x60, 0xa5, 0xfb, 0xc4, 0xc1, 0x9b, 0xab, 0x17, 0x0e, 0xeb, 0x9b, 0xc7, 0xe3, 0xe3, 0xd0, 0xc2, 0x6e, 0xf0, 0x90, 0xbd, 0x9b, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x6f, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xef, 0xc3, 0x1c, 0x04, 0x0f, 0xf7, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0x20, 0x19, 0x68, 0x7f, 0x77, 0x70, 0xcc, 0x2a, 0x3e, 0x18, 0x66, 0xe1, 0xc7, 0xf3, 0xe3, 0xdb, 0xf1, 0x78, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbf, 0x20, 0x5a, 0xe8, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x60, 0xc5, 0xc0, 0x31, 0x68, 0x7b, 0x10, 0x6c, 0x90, 0xea, 0xc8, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x03, 0xed, 0xf0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0xdd, 0xc0, 0xe1, 0x38, 0x74, 0x90, 0xa8, 0x36, 0x72, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0xe2, 0x69, 0x8b, 0xe6, 0x60, 0x9c, 0xe1, 0x6e, 0x88, 0xe6, 0x86, 0x71, 0x39, 0x0e, 0x2d, 0x2e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x88, 0x04, 0x97, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x48, 0xc0, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x82, 0x64, 0x20, 0x7c, 0x07, 0xc7, 0xac, 0xe2, 0x83, 0xc3, 0xa6, 0xee, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x88, 0x81, 0x80, 0x9a, 0x83, 0x13, 0x84, 0xef, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0x06, 0x02, 0x6a, 0x0e, 0xc6, 0x1d, 0xd4, 0x21, 0x0d, 0x37, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x14, 0x0f, 0xd4, 0x1c, 0x3a, 0x68, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x46, 0x02, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xc6, 0x12, 0xa1, 0x0e, 0x89, 0xd6, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x38, 0x61, 0x1e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0x50, 0x90, 0xed, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x76, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xcc, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x68, 0x1f, 0x6c, 0x19, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xf4, 0x71, 0xa2, 0xc3, 0x46, 0xed, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x84, 0x79, 0x3c, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xad, 0xe6, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x0e, 0xeb, 0x13, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x3e, 0x4e, 0x74, 0xd8, 0xe3, 0x3d, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x82, 0x60, 0x41, 0x32, 0x28, 0x3b, 0x18, 0x03, 0x0b, 0x87, 0x46, 0x2d, 0x83, 0x60, 0x83, 0x88, 0x93, 0xa8, 0x39, 0x18, 0xd8, 0xa2, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x22, 0x12, 0x5c, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x73, 0x48, 0xd5, 0x1c, 0x87, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0xfc, 0x1d, 0x1c, 0xb3, 0x8a, 0x07, 0xc9, 0xe0, 0xda, 0x41, 0x2a, 0xd2, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0x77, 0xb4, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xc8, 0x67, 0x1f, 0x1a, 0xcf, 0x1f, 0x87, 0x0e, 0xa9, 0x9a, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xf7, 0x0e, 0xce, 0x5e, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x06, 0x81, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x1a, 0x99, 0x2d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x0d, 0xc6, 0x1b, 0xd2, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0xe8, 0x1d, 0x9c, 0xce, 0x90, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0xdc, 0x9e, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xce, 0xbd, 0x83, 0xd3, 0x19, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc4, 0x85, 0xe6, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x92, 0x67, 0x52, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x85, 0xdf, 0x78, 0x3e, 0x0e, 0xf6, 0x79, 0xd8, 0x2b, 0x3c, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xdc, 0x95, 0x5b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x0b, 0xbf, 0xf1, 0x7c, 0x3c, 0x48, 0xd5, 0x00, 0x38, 0x08, 0x4c, 0xec, 0xe3, 0xd0, 0x20, 0x58, 0x90, 0x0c, 0x08, 0x7f, 0xa7, 0x83, 0x73, 0xfd, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x34, 0xfc, 0xc6, 0xf3, 0x0d, 0xd6, 0xce, 0xa4, 0xac, 0x41, 0xaa, 0x06, 0xc0, 0x71, 0x68, 0x43, 0xfb, 0xf3, 0x43, 0x0c, 0x8f, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0x83, 0x4d, 0x2f, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x88, 0x04, 0x97, 0x19, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x44, 0x2d, 0x42, 0xcd, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x46, 0x47, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x24, 0xe0, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x75, 0x80, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x11, 0x27, 0x50, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x28, 0x1e, 0xa8, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x91, 0xe0, 0x32, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0xd1, 0xca, 0x41, 0x71, 0xa8, 0x71, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xc5, 0x03, 0x35, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x22, 0x12, 0x5c, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xe0, 0x8f, 0x39, 0x18, 0x17, 0x66, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x13, 0xe6, 0xf1, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x6a, 0x11, 0x6a, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0x72, 0x15, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xfa, 0x38, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x17, 0x24, 0x03, 0xe1, 0x3b, 0x38, 0x7b, 0x19, 0x1f, 0x1c, 0x36, 0x75, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0xe4, 0xda, 0xd4, 0x1c, 0x9c, 0x20, 0x7c, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0x91, 0x6b, 0x53, 0x73, 0x30, 0xee, 0xa0, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0x30, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x04, 0x49, 0xf4, 0xc1, 0xc8, 0xb2, 0x3a, 0x0e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xbd, 0x9c, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x27, 0xcc, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xc5, 0x1e, 0xc4, 0xc1, 0x98, 0xb0, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x10, 0x4f, 0x12, 0x35, 0xc7, 0xe3, 0xe3, 0xf1, 0xf1, 0x78, 0x10, 0xac, 0x61, 0xed, 0xf7, 0x70, 0xb4, 0x0f, 0x82, 0x0d, 0xe2, 0x45, 0x1e, 0x64, 0x10, 0x6c, 0x48, 0x1d, 0x0c, 0x82, 0x05, 0xc1, 0x06, 0xe7, 0x80, 0xef, 0x83, 0x61, 0x16, 0x3e, 0x08, 0x16, 0x87, 0x5d, 0xb8, 0x83, 0x25, 0xbe, 0xff, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x23, 0xf8, 0xf4, 0x60, 0x98, 0x85, 0x0f, 0x82, 0x05, 0xc9, 0xa0, 0xec, 0x60, 0xd1, 0xc6, 0xd8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x43, 0xce, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x34, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0xd2, 0x0b, 0xc5, 0xc1, 0x88, 0xc2, 0x3d, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0xd4, 0xd3, 0x98, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x18, 0xa5, 0x9c, 0x07, 0x8d, 0xa7, 0xb0, 0x1c, 0x87, 0x86, 0x5d, 0xb8, 0x0d, 0x31, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0xe8, 0x1c, 0x1c, 0x33, 0x96, 0x0f, 0x62, 0xdf, 0x59, 0x66, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x98, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x7a, 0xe5, 0xe0, 0x98, 0xb1, 0x7c, 0x30, 0x12, 0x56, 0x07, 0xd1, 0x82, 0x78, 0x10, 0x6c, 0xf0, 0xd2, 0x39, 0x9b, 0x83, 0xf1, 0x61, 0x34, 0x88, 0x16, 0x76, 0x10, 0x6c, 0xf0, 0x5e, 0x18, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x81, 0x89, 0x7d, 0xd0, 0xc2, 0xf0, 0xca, 0x71, 0xe8, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0x62, 0x2d, 0xa9, 0x66, 0x10, 0x2d, 0x88, 0x0f, 0xa2, 0x6d, 0xa9, 0x66, 0x10, 0x2d, 0xec, 0x20, 0xd8, 0xe0, 0xa5, 0x73, 0x36, 0x07, 0xc3, 0x2c, 0xfc, 0x78, 0x7e, 0x7c, 0x3b, 0x1e, 0x1f, 0x8f, 0x57, 0x5c, 0x71, 0x41, 0xb0, 0xc1, 0xf3, 0xbf, 0x3c, 0x16, 0x07, 0xc1, 0x82, 0x70, 0x71, 0x20, 0x12, 0x07, 0xaf, 0x11, 0x95, 0xda, 0xe0, 0xb1, 0xb0, 0x52, 0x87, 0x68, 0x0e, 0xbb, 0xc1, 0x02, 0x58, 0x9f, 0x35, 0x78, 0xfc, 0x4a, 0xd2, 0x21, 0x5f, 0xbb, 0xc1, 0x93, 0x9e, 0x92, 0x0e, 0xf9, 0xda, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x9e, 0xff, 0xe5, 0xb1, 0x38, 0xec, 0xc2, 0x6e, 0x10, 0x0c, 0xfb, 0x0b, 0xbb, 0x41, 0xb9, 0x77, 0xb8, 0xc1, 0xfa, 0x97, 0xfd, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0xd7, 0xd0, 0x50, 0x67, 0x43, 0x0c, 0xd7, 0xe0, 0x4c, 0x82, 0x3e, 0x08, 0x36, 0x38, 0x07, 0x7f, 0x1f, 0x12, 0xad, 0x87, 0x18, 0x1e, 0x4e, 0xb1, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0xdc, 0x20, 0x42, 0xa0, 0x6a, 0x36, 0x78, 0x2c, 0xac, 0xd4, 0x21, 0x75, 0x30, 0xec, 0x06, 0x0b, 0x60, 0x7d, 0x36, 0xc4, 0x70, 0x43, 0x0c, 0x07, 0xe1, 0xe2, 0x40, 0x24, 0x0e, 0xd3, 0xb9, 0xc1, 0x0b, 0x52, 0x1c, 0x0e, 0xa9, 0x9a, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x16, 0x76, 0x83, 0xd1, 0x8b, 0xb5, 0x41, 0x62, 0xd7, 0xcf, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x6b, 0x68, 0x24, 0xb8, 0x21, 0x86, 0x6b, 0x30, 0x32, 0x7b, 0xc7, 0x83, 0xc3, 0xe9, 0xc5, 0x21, 0x86, 0x87, 0x53, 0xec, 0x78, 0x3c, 0x08, 0x16, 0x0f, 0x1a, 0x7f, 0x23, 0x59, 0x1c, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x0e, 0x82, 0x0d, 0x1a, 0xb9, 0x5e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xfc, 0xf6, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x26, 0xf0, 0xcd, 0xea, 0xe4, 0xd8, 0xe1, 0x37, 0x9e, 0x8f, 0x07, 0xd1, 0xf1, 0x55, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0x5d, 0xd8, 0x0d, 0xc6, 0x4c, 0xd7, 0xc2, 0x2e, 0xec, 0x06, 0x0d, 0x3c, 0xab, 0x2c, 0xec, 0x06, 0x2d, 0x4e, 0xc1, 0x1c, 0xd2, 0xb9, 0x87, 0xa3, 0xfd, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x6b, 0x30, 0x7e, 0xba, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0xb0, 0xa6, 0x1d, 0xe2, 0xe0, 0x4c, 0x8a, 0x7e, 0x38, 0xc5, 0x8e, 0xc7, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xfd, 0xae, 0x83, 0xe1, 0x1f, 0x7b, 0x90, 0xa2, 0xfc, 0x3c, 0xec, 0x06, 0x25, 0xd1, 0xe1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xac, 0xc2, 0xef, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x94, 0xbf, 0x5d, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xbc, 0x3b, 0x07, 0xc3, 0x3f, 0xf6, 0x60, 0xa0, 0x97, 0x1d, 0x87, 0x0e, 0x9e, 0xbb, 0x8c, 0x30, 0x08, 0x36, 0x78, 0x41, 0x42, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x21, 0x75, 0x70, 0x30, 0xd2, 0xb4, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x15, 0x7e, 0xcf, 0x20, 0xd8, 0x60, 0x5c, 0x98, 0x1d, 0x34, 0x53, 0x9f, 0x7f, 0x1c, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x62, 0x38, 0xec, 0x86, 0x5d, 0x83, 0x0d, 0xd1, 0x3c, 0x28, 0x40, 0xce, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0xb2, 0xc1, 0x62, 0x5b, 0x91, 0x09, 0xf6, 0xff, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x61, 0x0e, 0x16, 0x0e, 0x27, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x83, 0xec, 0x60, 0xe1, 0x70, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x36, 0x58, 0x60, 0xe0, 0x7f, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0x21, 0x86, 0xc3, 0x6f, 0x30, 0xc2, 0xaa, 0x16, 0x04, 0x4b, 0x10, 0xc5, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x14, 0x71, 0x48, 0xc3, 0x6e, 0x10, 0x5a, 0xee, 0x1b, 0x14, 0x71, 0x48, 0xc3, 0x6e, 0xd0, 0xd8, 0x5f, 0xff, 0x1a, 0x8e, 0xf6, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xf8, 0x7d, 0x07, 0xc7, 0xac, 0xe2, 0x83, 0x81, 0x2d, 0x7a, 0x30, 0xfe, 0x25, 0x0f, 0x0a, 0x95, 0xb3, 0xe3, 0xf1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x7e, 0x41, 0xb4, 0xb0, 0x07, 0x11, 0xa9, 0x56, 0x73, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x81, 0xa2, 0x75, 0x30, 0xfc, 0x63, 0x0f, 0x22, 0xe0, 0x9b, 0xe6, 0x78, 0xbc, 0xe2, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0x69, 0xb4, 0x0b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x06, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xe0, 0xe9, 0xcc, 0x00, 0x00, 0x00, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xe4, 0x58, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x39, 0x58, 0x9b, 0x5f, 0x76, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0xa4, 0xfe, 0x63, 0x2c, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x89, 0xa1, 0x0b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0xa3, 0x5d, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x03, 0x03, 0x33, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xd6, 0xe6, 0x97, 0x0d, 0xbf, 0xf1, 0x7c, 0x0c, 0x0e, 0xfa, 0xe3, 0xd0, 0x71, 0xe8, 0x20, 0x8a, 0xf5, 0x6a, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x76, 0x8b, 0xa1, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0x0e, 0x35, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x1c, 0xac, 0x4b, 0x38, 0x3b, 0x0e, 0x1d, 0xac, 0xcd, 0x2f, 0x3b, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x14, 0xe4, 0x86, 0x8b, 0x83, 0x60, 0x83, 0x04, 0xc1, 0x85, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x04, 0x1b, 0xa4, 0xd1, 0x2e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x45, 0x95, 0xe0, 0x60, 0xa0, 0x97, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x18, 0xba, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x30, 0x6a, 0x07, 0xc3, 0x51, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x0d, 0x86, 0x66, 0xd7, 0xc1, 0x03, 0x80, 0x1f, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x68, 0x62, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x71, 0x61, 0xb6, 0xc1, 0xd8, 0x70, 0x3d, 0x18, 0x1b, 0xae, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x60, 0xc8, 0xa3, 0x1f, 0x87, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x28, 0xc8, 0x0d, 0x17, 0x07, 0xc1, 0x06, 0x8b, 0x6b, 0x54, 0x06, 0xc1, 0x82, 0x60, 0xe1, 0x17, 0x24, 0x83, 0xd1, 0xc1, 0x70, 0x94, 0x3e, 0x48, 0xc6, 0xa4, 0x3f, 0x48, 0x17, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0xd9, 0xa0, 0x88, 0xee, 0x3a, 0x38, 0xe7, 0x1d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x01, 0x81, 0xde, 0x77, 0x70, 0xce, 0x3b, 0x3e, 0x24, 0x5a, 0x8f, 0x43, 0xc7, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0x41, 0xb0, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf6, 0x0a, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0x82, 0x64, 0xa0, 0xfc, 0x1d, 0x04, 0x39, 0xff, 0xc1, 0xb8, 0x83, 0x3a, 0x0e, 0x6d, 0x90, 0x40, 0x06, 0xbd, 0x41, 0x42, 0xd9, 0xc9, 0x20, 0x58, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa9, 0x83, 0x83, 0xb6, 0xf4, 0x9e, 0x36, 0x48, 0x28, 0x3b, 0x19, 0x04, 0x2b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xad, 0xaa, 0x2b, 0x1d, 0x9c, 0x2e, 0xb0, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0x06, 0x31, 0x4d, 0x59, 0x73, 0x90, 0x6e, 0x29, 0x7d, 0x1c, 0xda, 0x20, 0xa1, 0xec, 0x64, 0x10, 0xac, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xd4, 0xc1, 0x41, 0x71, 0x62, 0xb1, 0x41, 0x42, 0xd9, 0xc9, 0x20, 0x58, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa9, 0x83, 0x83, 0x76, 0xc7, 0x4d, 0x36, 0x48, 0x48, 0xb9, 0x1f, 0x04, 0x2b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x75, 0x70, 0xd0, 0x28, 0xb4, 0xc9, 0x06, 0x09, 0x29, 0xf7, 0x83, 0x60, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xa4, 0x0e, 0x0e, 0x1e, 0x35, 0x3e, 0x33, 0x0e, 0x0a, 0x06, 0x5d, 0x83, 0xc2, 0x41, 0xe1, 0xa0, 0x70, 0x50, 0xd8, 0xc1, 0x6a, 0x06, 0xa0, 0x83, 0xd5, 0x0c, 0x40, 0x07, 0xab, 0x19, 0x80, 0x0e, 0x56, 0x33, 0x00, 0x1d, 0xac, 0x66, 0x00, 0x3a, 0x58, 0xcd, 0x00, 0x74, 0xb0, 0x9a, 0x01, 0xe8, 0xf8, 0x76, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0x90, 0x18, 0xba, 0x70, 0x90, 0xb8, 0x26, 0x3d, 0x08, 0x36, 0x68, 0xb4, 0x16, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x05, 0xc1, 0x06, 0x27, 0x3e, 0xe3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x6a, 0x90, 0xc0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x1c, 0x6a, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x44, 0xc3, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xd1, 0x5a, 0xa8, 0x83, 0xa8, 0xe9, 0x95, 0x39, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xce, 0xa1, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x0a, 0xb2, 0x9d, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0xad, 0x85, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x1c, 0x24, 0x6b, 0x1a, 0x1c, 0x87, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x1c, 0x6a, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xc8, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x68, 0x2d, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0xe0, 0x20, 0xdd, 0xfb, 0xe2, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x07, 0x43, 0x1e, 0xfd, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x14, 0xe4, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xd7, 0x0e, 0x86, 0xa3, 0xf4, 0xa1, 0x51, 0xcb, 0x20, 0xd8, 0x10, 0xc3, 0x41, 0xb0, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x92, 0xc1, 0x9f, 0x83, 0x73, 0xde, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xc3, 0x5e, 0xe1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x27, 0xcc, 0xe3, 0x83, 0xd8, 0xe5, 0xab, 0x39, 0x0e, 0x0d, 0xbb, 0x20, 0xd8, 0x20, 0x72, 0xb1, 0x40, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x04, 0x26, 0xf6, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x50, 0x72, 0x70, 0xae, 0x3f, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x1c, 0x48, 0xd6, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x05, 0xc9, 0x40, 0xf9, 0x3b, 0x08, 0x78, 0xff, 0x83, 0xd3, 0x0a, 0xee, 0x71, 0xe8, 0x60, 0x6d, 0x7e, 0xd9, 0x71, 0xe8, 0x38, 0xb4, 0x71, 0x68, 0xd8, 0x85, 0x5d, 0x10, 0x6c, 0x10, 0xb9, 0x58, 0x20, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x02, 0x13, 0xfb, 0x20, 0xf6, 0x6b, 0x6b, 0x8e, 0x43, 0x0b, 0xbb, 0x20, 0xd8, 0xe0, 0x9c, 0x8a, 0x7c, 0x10, 0x35, 0xb4, 0x35, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x5f, 0xd8, 0x85, 0xdb, 0xe0, 0x0d, 0xe4, 0x33, 0x07, 0xe9, 0xa7, 0x16, 0x0b, 0x82, 0x0d, 0xa2, 0x94, 0x0c, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x70, 0xb0, 0x36, 0xbf, 0xec, 0x38, 0x74, 0x1c, 0x1a, 0x76, 0xe1, 0x36, 0x18, 0x6e, 0x0a, 0x83, 0x60, 0x83, 0xf7, 0x6b, 0xcf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xe2, 0xe4, 0xb6, 0xe6, 0x38, 0xb4, 0x41, 0x5c, 0xf1, 0xd6, 0x1c, 0xac, 0xcc, 0xf7, 0x3a, 0xbe, 0x1d, 0x8f, 0x17, 0x04, 0x8b, 0x0b, 0x82, 0x05, 0xc9, 0x80, 0xc0, 0xef, 0x3a, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xce, 0x35, 0xc5, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0x64, 0x9e, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x89, 0x59, 0xda, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x40, 0x7b, 0xaa, 0x83, 0x61, 0xe8, 0x73, 0x1c, 0x3a, 0x0e, 0xad, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0xbb, 0x0e, 0x86, 0xa1, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x4e, 0x2b, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x41, 0xd3, 0xa3, 0xfe, 0x07, 0xe3, 0x0e, 0xea, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xa3, 0x90, 0x03, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x86, 0x3a, 0xd5, 0xc1, 0x30, 0xf4, 0x39, 0x0e, 0x1d, 0x87, 0x16, 0x04, 0x1b, 0x44, 0x1d, 0x70, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x73, 0x4d, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2d, 0x99, 0xe7, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x78, 0x68, 0x25, 0x7e, 0x10, 0xdf, 0xc2, 0x35, 0xc7, 0xa1, 0xe3, 0xd0, 0x0a, 0x82, 0x0d, 0xa2, 0x7f, 0xb8, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa7, 0x15, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0xa0, 0xe9, 0x51, 0xff, 0x83, 0x74, 0x4b, 0xe9, 0xe3, 0xd0, 0x41, 0xec, 0x1a, 0xd7, 0x1c, 0x87, 0x06, 0xc1, 0x06, 0xcf, 0x46, 0x0c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x3a, 0xe0, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xe7, 0x9a, 0xe2, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5a, 0x32, 0xcf, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xd4, 0x45, 0xe5, 0x20, 0xbe, 0x85, 0x6b, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0x50, 0x32, 0x34, 0x0d, 0x82, 0x0d, 0xce, 0x26, 0xbd, 0x07, 0xed, 0xd9, 0xe9, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xc9, 0xae, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x38, 0x68, 0x3b, 0x68, 0x2d, 0xf3, 0xf6, 0xf8, 0x76, 0x1c, 0x3a, 0x68, 0xcf, 0x4e, 0x7f, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x67, 0x23, 0x06, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0xf7, 0x8b, 0x1e, 0x7e, 0xe3, 0xf9, 0xc1, 0xe1, 0xd7, 0xf6, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xd9, 0x88, 0x01, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x96, 0xf9, 0xca, 0x1c, 0xac, 0xf2, 0x90, 0x3a, 0x0e, 0x1d, 0xac, 0x85, 0x29, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x6c, 0xc4, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xc9, 0x9a, 0x06, 0xc3, 0x6f, 0x3c, 0x3f, 0x48, 0xff, 0x6d, 0x38, 0x0e, 0x1d, 0xac, 0x85, 0x29, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x6c, 0xc4, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xcb, 0xfd, 0x69, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x82, 0x75, 0x3c, 0x3e, 0x0e, 0x1d, 0xac, 0x85, 0x29, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x6c, 0xc4, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xcb, 0x8e, 0x6d, 0x86, 0xdf, 0x78, 0x7e, 0x10, 0x8f, 0x9b, 0x26, 0xc7, 0xa1, 0x83, 0xb5, 0x30, 0x25, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9e, 0x8d, 0x18, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x69, 0x00, 0xcd, 0xf0, 0x1b, 0xcf, 0x0f, 0xd2, 0x2d, 0xa5, 0x8f, 0x43, 0x07, 0x6b, 0x61, 0x4a, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xc1, 0x2b, 0x90, 0x03, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x85, 0x05, 0x25, 0x07, 0xef, 0x4b, 0x0e, 0x18, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x28, 0x74, 0xb9, 0x0e, 0x86, 0xa1, 0xcf, 0x41, 0x7b, 0x76, 0xfa, 0x07, 0x6b, 0x61, 0x4a, 0x16, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0xac, 0xe1, 0x68, 0x1f, 0x04, 0x0b, 0x92, 0x01, 0xa5, 0x7a, 0xdf, 0xc1, 0xe9, 0x0c, 0xf9, 0xd0, 0xa8, 0x65, 0x10, 0x2c, 0x0e, 0xbb, 0xc1, 0xc8, 0x27, 0xdf, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0xc3, 0x5e, 0xe1, 0x20, 0x58, 0x90, 0x6c, 0x50, 0x44, 0x77, 0x1d, 0x9c, 0xeb, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf2, 0xb5, 0x07, 0xa3, 0xd5, 0xfc, 0x38, 0xb4, 0x21, 0xa3, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf7, 0x0f, 0x42, 0xc4, 0xff, 0x60, 0x2c, 0x6c, 0x1f, 0xdf, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb0, 0x41, 0x3b, 0x98, 0xe8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x28, 0xa0, 0x05, 0x17, 0x37, 0x44, 0x73, 0x43, 0x27, 0xb5, 0x83, 0x93, 0xfa, 0xf9, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x17, 0x6d, 0x12, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xac, 0xdd, 0xe5, 0x3a, 0x18, 0x86, 0x3e, 0x07, 0xed, 0xd9, 0xe9, 0x0f, 0x82, 0x0d, 0x62, 0xa6, 0xbb, 0xe6, 0xa0, 0x3d, 0x3b, 0xfd, 0x83, 0x38, 0x8d, 0xaf, 0x39, 0x88, 0x6b, 0xf9, 0x9a, 0xe3, 0xd0, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x9c, 0x3b, 0x38, 0x66, 0x15, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x5a, 0x07, 0xc3, 0x51, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xae, 0x77, 0x1d, 0x0c, 0x47, 0xe9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xf3, 0x75, 0x48, 0x2e, 0x0d, 0xbf, 0xf1, 0xfc, 0xe0, 0x2d, 0x46, 0x09, 0xc7, 0xa1, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x15, 0x04, 0x8b, 0xc3, 0x6e, 0x10, 0x7c, 0xcc, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0xb0, 0x16, 0xb5, 0xe1, 0xa0, 0x38, 0xd4, 0xd8, 0xa0, 0xfd, 0xd5, 0xfb, 0x83, 0x15, 0x0b, 0x3a, 0xc7, 0xb7, 0x05, 0xc1, 0xe2, 0xb0, 0x1b, 0x04, 0x1f, 0xf3, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0x7a, 0xd2, 0xb0, 0x83, 0xc8, 0xdb, 0xaf, 0x39, 0xbe, 0x2d, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xf8, 0x98, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0x60, 0xe0, 0x1b, 0x1f, 0x14, 0x87, 0x1a, 0x07, 0x91, 0xb7, 0x5f, 0x73, 0x7c, 0x5b, 0x10, 0x2c, 0x0e, 0xbb, 0x41, 0xf0, 0x31, 0x6f, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0x41, 0x09, 0x14, 0x79, 0x50, 0x1c, 0x6a, 0x1c, 0x44, 0xde, 0x7e, 0xcd, 0xf1, 0xed, 0x10, 0xc3, 0x61, 0x17, 0x04, 0x0b, 0xbf, 0xf0, 0x0b, 0x92, 0x81, 0xbc, 0xd7, 0xc1, 0x30, 0xf4, 0x39, 0x78, 0x6f, 0x5a, 0xc0, 0x41, 0xcb, 0xf9, 0x4b, 0x07, 0x03, 0x5b, 0x74, 0x41, 0xb0, 0x20, 0x19, 0x58, 0xaf, 0x3b, 0x38, 0xe7, 0x1d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0x83, 0xf8, 0x0a, 0xb0, 0x19, 0x24, 0x03, 0xed, 0xae, 0x8e, 0xc7, 0x07, 0x03, 0x5b, 0xf4, 0x38, 0x74, 0x88, 0xe1, 0xf1, 0xf8, 0x38, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x90, 0xfa, 0x8f, 0xb1, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x65, 0xed, 0xe0, 0x24, 0x74, 0x7c, 0x30, 0xcc, 0xc2, 0x07, 0xc1, 0xe2, 0xb0, 0x0b, 0x82, 0x05, 0xc9, 0xa0, 0xe6, 0xe0, 0x9c, 0x77, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xbc, 0xe9, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xed, 0x83, 0x2d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x02, 0xbd, 0xef, 0xe0, 0x74, 0x86, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xb0, 0x57, 0x38, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x88, 0x69, 0xca, 0x9a, 0x83, 0x92, 0xa1, 0xe9, 0x38, 0x74, 0xb0, 0x36, 0xbf, 0xec, 0x38, 0x74, 0x1c, 0x5a, 0x10, 0x2c, 0x48, 0x06, 0xca, 0xda, 0xc1, 0xd9, 0xcb, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xd7, 0x0e, 0xce, 0x5e, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xa2, 0x05, 0xf7, 0x07, 0xc1, 0x06, 0xd1, 0x3e, 0xd8, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xb0, 0x57, 0x78, 0x90, 0xb8, 0x37, 0x73, 0x1c, 0x3a, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xa1, 0x61, 0x17, 0x76, 0x41, 0xb0, 0x41, 0x14, 0x1f, 0xd8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x6f, 0x3a, 0x07, 0x51, 0x9d, 0x60, 0x73, 0x1c, 0x5a, 0xd8, 0x05, 0xc1, 0x06, 0x91, 0x86, 0x23, 0x72, 0x10, 0x3b, 0x08, 0x36, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x5f, 0x10, 0x2d, 0xb8, 0x3f, 0x08, 0x36, 0x88, 0xf6, 0xc1, 0x96, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa3, 0xb2, 0xf9, 0x20, 0x71, 0x6f, 0xe6, 0x38, 0x74, 0x48, 0x1d, 0x0c, 0xbb, 0x70, 0x1b, 0x0c, 0x37, 0x85, 0x41, 0xb0, 0x41, 0x5c, 0xa6, 0xd7, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x62, 0x69, 0xc1, 0xe6, 0x38, 0xb4, 0x20, 0xd8, 0x20, 0xb6, 0x19, 0x6c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0x83, 0x83, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0xd1, 0x3d, 0x61, 0x73, 0x1c, 0x3a, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x83, 0x11, 0xa6, 0x70, 0x3c, 0x3e, 0xbe, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0xa4, 0xfe, 0x63, 0x2c, 0x0e, 0x82, 0x0d, 0x62, 0x60, 0x60, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x89, 0xa1, 0x0b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0x83, 0x28, 0xd6, 0xab, 0x39, 0x0e, 0x1d, 0xac, 0xcd, 0x2f, 0x3b, 0x0e, 0x1d, 0x8f, 0x57, 0x5c, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x29, 0x83, 0x93, 0x06, 0x00, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xeb, 0xc4, 0x90, 0x34, 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0xb4, 0xd1, 0xa3, 0x01, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x14, 0xfa, 0x17, 0x0d, 0x00, 0x00, 0x80, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x47, 0xa9, 0x92, 0x68, 0x00, 0x00, 0x00, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x87, 0x4a, 0x41, 0x03, 0x00, 0x00, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xab, 0xac, 0x04, 0x1a, 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x17, 0x53, 0xf8, 0xcf, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xfc, 0xb4, 0x58, 0x7e, 0x06, 0x00, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xd9, 0x40, 0xeb, 0x33, 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x5e, 0xe0, 0x1d, 0x9f, 0x01, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xde, 0x1d, 0xf6, 0x0c, 0x00, 0x00, 0x80, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x57, 0xe5, 0xa1, 0x67, 0x00, 0x00, 0x00, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x3c, 0x1e, 0x3c, 0x03, 0x00, 0x00, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xee, 0x87, 0xd7, 0x19, 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xef, 0x03, 0x80, 0xce, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xb8, 0x85, 0x0f, 0x73, 0x06, 0x00, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x5f, 0xf7, 0x90, 0x33, 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x6d, 0x96, 0x2d, 0x9c, 0x01, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x7f, 0x8b, 0xdf, 0x0c, 0x00, 0x00, 0x80, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x63, 0x52, 0xed, 0x66, 0x00, 0x00, 0x00, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x46, 0xf2, 0x36, 0x03, 0x00, 0x00, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x27, 0xcd, 0xb3, 0x19, 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x06, 0x56, 0x80, 0xcd, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x74, 0x16, 0x12, 0x6b, 0x06, 0x00, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xe5, 0x0b, 0x51, 0x33, 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xac, 0x0c, 0x6a, 0x9a, 0x01, 0x00, 0x00, 0xd0, 0x0a, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x83, 0x4f, 0x83, 0xd7, 0x83, 0xbb, 0x83, 0x93, 0x83, 0x87, 0x07, 0x89, 0xd9, 0x4e, 0xc7, 0xb7, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0xc1, 0x9b, 0xc1, 0xdf, 0x83, 0x98, 0xed, 0xb1, 0x39, 0xbe, 0x2d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x0e, 0x4e, 0x0d, 0x5e, 0x0f, 0x5e, 0x0e, 0x3e, 0x1f, 0xc4, 0x74, 0x8f, 0xcd, 0xf1, 0x6d, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0x71, 0xf0, 0x6b, 0xf0, 0x72, 0x70, 0x72, 0x70, 0xf7, 0x20, 0x6e, 0x80, 0x6c, 0x8e, 0x6f, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x83, 0x53, 0x83, 0xa3, 0x83, 0xd7, 0x83, 0xcb, 0x07, 0x71, 0x05, 0x64, 0x73, 0x7c, 0x5b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x1c, 0xdc, 0x18, 0x5c, 0x1e, 0x3c, 0x3d, 0x88, 0xe9, 0x1e, 0x9b, 0xe3, 0xdb, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xe0, 0xd3, 0xe0, 0xe1, 0xe0, 0xf4, 0xe0, 0xf5, 0xe0, 0xf2, 0x41, 0x4c, 0xf7, 0xd8, 0x1c, 0xdf, 0x0e, 0x31, 0x5c, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x83, 0x93, 0x06, 0x00, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xc4, 0x90, 0x34, 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb4, 0xd1, 0xa3, 0x01, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xfa, 0x17, 0x0d, 0x00, 0x00, 0x80, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xa9, 0x92, 0x68, 0x00, 0x00, 0x00, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x87, 0x4a, 0x41, 0x03, 0x00, 0x00, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xac, 0x04, 0x1a, 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x53, 0xf8, 0xcf, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x58, 0x7e, 0x06, 0x00, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xda, 0x40, 0xeb, 0x33, 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0x1d, 0x9f, 0x01, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xde, 0x1d, 0xf6, 0x0c, 0x00, 0x00, 0x80, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xe5, 0xa1, 0x67, 0x00, 0x00, 0x00, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x3c, 0x1e, 0x3c, 0x03, 0x00, 0x00, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x87, 0xd7, 0x19, 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x80, 0xce, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x85, 0x0f, 0x73, 0x06, 0x00, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xf7, 0x90, 0x33, 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x96, 0x2d, 0x9c, 0x01, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x8b, 0xdf, 0x0c, 0x00, 0x00, 0x80, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x52, 0xed, 0x66, 0x00, 0x00, 0x00, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x46, 0xf2, 0x36, 0x03, 0x00, 0x00, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xcd, 0xb3, 0x19, 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x56, 0x80, 0xcd, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x16, 0x12, 0x6b, 0x06, 0x00, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x0b, 0x51, 0x33, 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x0c, 0x6a, 0x9a, 0x01, 0x00, 0x00, 0xd0, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xe0, 0xca, 0xe0, 0xe1, 0xe0, 0xee, 0xe0, 0xf5, 0xe0, 0xe1, 0xe0, 0xf2, 0x41, 0x62, 0xb6, 0xd3, 0xf1, 0x6d, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0x71, 0x70, 0x63, 0xf0, 0x72, 0x70, 0x71, 0x70, 0xf9, 0x20, 0x7e, 0xcc, 0x6c, 0x8e, 0x6f, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x83, 0x37, 0x83, 0x87, 0x83, 0xcb, 0x83, 0x8f, 0x07, 0xc7, 0x5a, 0xba, 0xe3, 0xdb, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xe0, 0xc1, 0xe0, 0xf0, 0xe0, 0xf2, 0xc1, 0xa0, 0x94, 0x3a, 0xbe, 0x2d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x0e, 0xde, 0x1c, 0xc4, 0x7c, 0x8f, 0xcd, 0xf1, 0x6d, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0x71, 0x70, 0x65, 0xf0, 0xfa, 0xe0, 0xa0, 0xd4, 0x73, 0x7c, 0x5b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x1c, 0x5c, 0x19, 0xbc, 0x1e, 0x9c, 0x3d, 0x48, 0xcc, 0x76, 0x3a, 0xbe, 0x2d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x0e, 0x1e, 0x0c, 0x5e, 0x0f, 0x7e, 0x0e, 0x5e, 0x1f, 0xbc, 0xcd, 0x1e, 0xe6, 0xf8, 0xb6, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x38, 0xf8, 0x34, 0x78, 0x39, 0x38, 0x3c, 0x38, 0x3d, 0x78, 0x39, 0x78, 0x3b, 0xb8, 0x38, 0x78, 0x79, 0x50, 0xf0, 0x6c, 0x1e, 0xdf, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x07, 0x7f, 0x06, 0x1f, 0x07, 0xa7, 0x07, 0x7f, 0x0f, 0x62, 0x0f, 0xce, 0xe6, 0xf8, 0xb6, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x38, 0xb8, 0x33, 0xf8, 0x3b, 0xb8, 0x7d, 0x10, 0x3b, 0x70, 0x36, 0xc7, 0xb7, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0xc1, 0x89, 0xc1, 0xcb, 0xc1, 0xc7, 0x83, 0xd8, 0x81, 0xb3, 0x39, 0xbe, 0x1d, 0x62, 0x78, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x48, 0xa3, 0x5d, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xc5, 0x7a, 0x35, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0xc0, 0xc0, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x4e, 0x8e, 0xc5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xd6, 0xe6, 0x97, 0x1d, 0x52, 0x35, 0xc7, 0xa1, 0x83, 0x75, 0x09, 0x67, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0xf8, 0x78, 0xbc, 0xb8, 0xf0, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0xc3, 0xfa, 0xde, 0x86, 0x18, 0x0e, 0x82, 0x15, 0x04, 0x1b, 0xb4, 0xec, 0x68, 0x7e, 0x90, 0xe2, 0xe7, 0x70, 0x10, 0x39, 0xba, 0x32, 0x83, 0x60, 0x85, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0xee, 0xaf, 0x83, 0xb3, 0x97, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x78, 0xe5, 0x98, 0x39, 0x78, 0x57, 0xb8, 0xd5, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x7c, 0x3b, 0xc4, 0x70, 0x10, 0x6c, 0xf0, 0xc0, 0x5d, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xe2, 0xb0, 0x0b, 0x77, 0xd0, 0x34, 0x49, 0xcc, 0x82, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0xc1, 0x03, 0x69, 0x01, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x48, 0x36, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x09, 0x78, 0xdc, 0xde, 0xca, 0xde, 0xd8, 0xe1, 0x37, 0x9e, 0x8f, 0x07, 0x91, 0x33, 0x68, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x0f, 0xa7, 0xd8, 0xb0, 0x0b, 0xb7, 0x20, 0xd8, 0x20, 0x52, 0x14, 0x6c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf2, 0xb5, 0x87, 0xf8, 0x1f, 0x87, 0x0e, 0x8e, 0x3c, 0xc5, 0x0b, 0xbb, 0x70, 0x1b, 0x92, 0x7a, 0x87, 0x7c, 0xed, 0x0a, 0x82, 0x0d, 0x12, 0xe5, 0x51, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xe2, 0xba, 0x5a, 0xe6, 0x20, 0x8a, 0x0a, 0x6d, 0x8e, 0x43, 0x87, 0x68, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x41, 0xbc, 0x20, 0xd8, 0x20, 0x4e, 0xb2, 0x65, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9c, 0x0a, 0xc9, 0x0f, 0xf1, 0x3f, 0x0e, 0x0d, 0x82, 0x0d, 0xe2, 0x36, 0xb6, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0xed, 0xf7, 0xe0, 0x54, 0x48, 0x7e, 0x1c, 0x1a, 0x44, 0x0b, 0xbb, 0x41, 0x8c, 0x1b, 0xda, 0x1c, 0x62, 0x78, 0x3c, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf4, 0x90, 0xd4, 0x3b, 0x1e, 0x1f, 0xdf, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xb3, 0xd5, 0xb9, 0x95, 0x1b, 0x04, 0xbc, 0x7f, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x24, 0x03, 0xc2, 0xdf, 0xe9, 0xe0, 0x24, 0x74, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x8e, 0x86, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x17, 0x66, 0x10, 0x6c, 0x10, 0x19, 0x32, 0x22, 0x07, 0x29, 0x7e, 0x0e, 0x83, 0x60, 0x41, 0x32, 0x10, 0xa6, 0x83, 0xb3, 0x97, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x74, 0x90, 0xfa, 0x0c, 0x7d, 0x1c, 0x3a, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xbb, 0xd5, 0xb1, 0x95, 0x07, 0x31, 0xe8, 0x68, 0x73, 0x3c, 0x3e, 0x1e, 0x1f, 0x8f, 0x57, 0x71, 0x41, 0xb0, 0xb8, 0xf0, 0x0b, 0x82, 0x0d, 0x9e, 0x2d, 0x51, 0xb1, 0x38, 0x08, 0x16, 0x7e, 0x41, 0xb0, 0xc1, 0xab, 0x57, 0x05, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x78, 0xe6, 0xaa, 0xc0, 0x71, 0xe8, 0xf8, 0x36, 0xfc, 0x82, 0x68, 0xc1, 0xed, 0x41, 0xb0, 0xc1, 0xcb, 0x1e, 0x68, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x43, 0x7f, 0xf2, 0x83, 0xb0, 0xa7, 0x3e, 0x34, 0x1d, 0x3a, 0x0e, 0x0d, 0xa2, 0x05, 0xe3, 0x41, 0xb0, 0xc1, 0xcb, 0x1e, 0x68, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xe0, 0x21, 0x8e, 0x14, 0x87, 0xf8, 0x1f, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x39, 0xd4, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe7, 0x50, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x49, 0x6e, 0xcd, 0x07, 0x8f, 0x9d, 0xa9, 0x38, 0x0e, 0x4d, 0x90, 0x7e, 0x3f, 0x0e, 0x0d, 0xbb, 0xb0, 0x0b, 0xb7, 0x41, 0x42, 0x0e, 0xc2, 0x20, 0xd8, 0x20, 0xc6, 0xaf, 0x3c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0xfd, 0x1f, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x9a, 0x3b, 0x1d, 0x9c, 0xbd, 0x8c, 0x0f, 0x9e, 0xb1, 0x3c, 0x73, 0x1c, 0x3a, 0x0e, 0x2d, 0xec, 0xc2, 0x2e, 0xdc, 0x06, 0x8f, 0x9d, 0xa9, 0x38, 0xc4, 0xf0, 0xb0, 0xbe, 0xb9, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0xc4, 0xd1, 0xa7, 0xcd, 0x21, 0x86, 0x87, 0xf5, 0xcd, 0x85, 0x5d, 0x10, 0x6c, 0xd0, 0x8e, 0xf5, 0xfd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x22, 0x12, 0x5c, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x11, 0x09, 0x2e, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xc9, 0xad, 0xf9, 0x20, 0x99, 0x3e, 0xe3, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xd2, 0xff, 0xb1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x8d, 0x25, 0x42, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x8c, 0xcf, 0x98, 0x60, 0xfd, 0xfe, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xe3, 0x57, 0x1e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0xa4, 0x0b, 0x80, 0xe3, 0xd0, 0x71, 0x68, 0x61, 0x17, 0x04, 0x1b, 0x44, 0x2e, 0x56, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x90, 0xcf, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xc6, 0xaf, 0x3c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x78, 0x60, 0xcc, 0xd7, 0x71, 0xe8, 0x38, 0xb4, 0xb0, 0x0b, 0x82, 0x0d, 0x22, 0x17, 0xab, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x9a, 0x7b, 0xc6, 0x41, 0x24, 0xb7, 0xda, 0x1c, 0x87, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x30, 0x54, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0xa8, 0x57, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xb2, 0x63, 0x83, 0x90, 0xcf, 0xde, 0xa0, 0xc8, 0x55, 0xd8, 0x20, 0xcd, 0x3d, 0x63, 0x83, 0xb1, 0xe1, 0x7a, 0x48, 0x1d, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb2, 0xc1, 0x20, 0x79, 0x39, 0x38, 0x9d, 0x21, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x9d, 0x5b, 0xf3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0x30, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0xb9, 0x35, 0x1f, 0xbc, 0x81, 0x7c, 0xe6, 0x38, 0x74, 0x48, 0x1d, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0xf0, 0xbe, 0x1f, 0x8e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x87, 0x93, 0xe2, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0xcc, 0x24, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x34, 0x9e, 0x3f, 0x48, 0x69, 0xb4, 0x39, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x22, 0x14, 0x72, 0x90, 0xe2, 0xe7, 0x70, 0x1c, 0x3a, 0x1e, 0x1f, 0x87, 0x86, 0x5d, 0xb8, 0x05, 0xc1, 0x06, 0x71, 0x99, 0x5e, 0x73, 0x30, 0xb0, 0x45, 0x0f, 0x22, 0x55, 0xd5, 0x66, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0x41, 0xb0, 0xc1, 0x5b, 0x42, 0x01, 0x0e, 0xc6, 0x87, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xcc, 0x17, 0x04, 0x1b, 0x3c, 0x41, 0x85, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xf2, 0x66, 0xcd, 0x86, 0xac, 0xdd, 0x41, 0x22, 0x66, 0xcd, 0x71, 0xe8, 0xb0, 0x57, 0x78, 0x50, 0xd4, 0x9c, 0x1d, 0xdf, 0x06, 0xc1, 0x06, 0x09, 0x5b, 0x29, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x83, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x5a, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xa3, 0x8e, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x24, 0xb7, 0xe6, 0x83, 0x37, 0x52, 0xda, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xf7, 0xd3, 0xc1, 0x81, 0x22, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xe1, 0xa4, 0xf8, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x19, 0xa8, 0x57, 0x07, 0x01, 0xef, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xb4, 0x9a, 0x6f, 0x50, 0xd2, 0x34, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xea, 0x50, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x74, 0x1d, 0x04, 0xbc, 0xff, 0xc1, 0xc0, 0x16, 0x3d, 0x0e, 0x6d, 0xd8, 0x2b, 0xdc, 0x60, 0x6c, 0xb8, 0x4e, 0xf0, 0x7f, 0xff, 0x71, 0xe8, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xd0, 0xe6, 0xd8, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0xd8, 0x85, 0x5b, 0x10, 0x6c, 0x90, 0x20, 0xb8, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xa0, 0x54, 0xef, 0x3b, 0x38, 0x09, 0x1d, 0x1f, 0x3a, 0x68, 0x1c, 0xb2, 0x76, 0xc7, 0xa1, 0x43, 0x0c, 0x17, 0x04, 0x8b, 0xc3, 0x6e, 0x58, 0x41, 0xdd, 0x10, 0xc3, 0x05, 0xc1, 0x06, 0xf1, 0x10, 0x37, 0x73, 0x30, 0x42, 0xc2, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x3d, 0x08, 0x36, 0x88, 0x91, 0xb6, 0x99, 0x83, 0x11, 0x12, 0x76, 0x3c, 0x3e, 0xbe, 0x1d, 0x4e, 0xb1, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0xc1, 0x61, 0xf5, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x5f, 0xbb, 0x21, 0x6b, 0xb7, 0xf0, 0x1b, 0xcf, 0xc7, 0xe0, 0x01, 0x80, 0x0d, 0x0e, 0x44, 0xfc, 0x1b, 0x8c, 0x0d, 0xd7, 0x83, 0xf4, 0xb2, 0x9e, 0xe3, 0xd0, 0xf1, 0x78, 0x05, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x10, 0x2c, 0x08, 0x36, 0x68, 0xd9, 0xd1, 0xfc, 0x60, 0xd4, 0x67, 0x0c, 0x82, 0x05, 0xc1, 0x06, 0xcf, 0x1d, 0x30, 0x39, 0x18, 0xd8, 0xa2, 0xc3, 0x2e, 0xdc, 0xc6, 0xa1, 0x43, 0x0b, 0xa0, 0x0d, 0xa9, 0x83, 0x61, 0x17, 0x04, 0x1b, 0x44, 0x2e, 0x56, 0xc7, 0xc1, 0x33, 0x2a, 0x28, 0x16, 0x04, 0x1b, 0xbc, 0x40, 0xd6, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd9, 0xa0, 0x9c, 0xd5, 0x39, 0x38, 0x7b, 0x19, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x7a, 0x47, 0x3b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x84, 0x7c, 0xf6, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xed, 0x3d, 0xae, 0x1c, 0x1a, 0xb5, 0x1c, 0x87, 0x0e, 0x06, 0x7e, 0xc8, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x24, 0x1b, 0x14, 0xfe, 0x41, 0x07, 0x67, 0x2f, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0xef, 0x68, 0xc7, 0xc1, 0x33, 0x2a, 0x28, 0x0e, 0xa9, 0x9a, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x24, 0x03, 0x63, 0x75, 0x48, 0x2e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x64, 0xed, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x75, 0x61, 0xc4, 0x41, 0xea, 0xd8, 0xce, 0x86, 0x7c, 0xed, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xab, 0x0b, 0x23, 0x0e, 0x96, 0x2e, 0xfc, 0x1c, 0x87, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x87, 0x5d, 0xb8, 0x0d, 0x62, 0x22, 0xda, 0x66, 0x10, 0x6c, 0x70, 0x72, 0x2c, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0xa4, 0xfe, 0xe8, 0x1c, 0x87, 0x16, 0x04, 0x2b, 0x08, 0x16, 0x24, 0x03, 0x02, 0xbd, 0xef, 0xe0, 0x24, 0x74, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xf5, 0x66, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0x44, 0xc7, 0xb9, 0xcd, 0x71, 0xe8, 0x90, 0xaf, 0x3d, 0x0e, 0x1d, 0x62, 0x38, 0x08, 0x56, 0xf8, 0x05, 0xc1, 0x06, 0xb1, 0xbf, 0x67, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x5e, 0x39, 0x66, 0x0e, 0xc6, 0x71, 0xc8, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x7c, 0x3b, 0x88, 0xc6, 0x75, 0x9b, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xe3, 0x90, 0x69, 0x41, 0xb0, 0x41, 0x7a, 0x42, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x96, 0x73, 0xf0, 0x0f, 0xca, 0x25, 0x9a, 0xe3, 0xd0, 0xf0, 0x0b, 0xa2, 0x05, 0xe3, 0x41, 0xb0, 0x20, 0x19, 0xc8, 0x56, 0x1d, 0x04, 0x39, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x62, 0xb8, 0x9e, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0xfe, 0x07, 0x63, 0xec, 0xe9, 0x38, 0x74, 0x70, 0x20, 0xe2, 0x3f, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x68, 0x4d, 0xa3, 0x39, 0x28, 0x5f, 0xa6, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x30, 0xd6, 0x9a, 0x06, 0xd1, 0x82, 0xf5, 0x41, 0x89, 0xed, 0x36, 0x88, 0x16, 0x84, 0x07, 0x83, 0x5a, 0xf6, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x30, 0xd6, 0x9a, 0x06, 0xd1, 0x06, 0x31, 0x5e, 0x6f, 0x33, 0x88, 0x16, 0xa4, 0x1b, 0xb2, 0x76, 0x87, 0x71, 0x39, 0x1e, 0x1f, 0xdf, 0x0e, 0xa7, 0xd8, 0xf1, 0x78, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbb, 0x70, 0x0b, 0x82, 0x0d, 0x12, 0x04, 0x17, 0x0e, 0x3f, 0x2a, 0x1c, 0x62, 0xb8, 0x20, 0x58, 0xf8, 0x05, 0xc9, 0x40, 0x79, 0x3a, 0x38, 0x09, 0x1d, 0x1f, 0xa4, 0xa6, 0x75, 0x0c, 0x82, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xd8, 0x20, 0x86, 0xeb, 0x39, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xfa, 0x3a, 0x1d, 0x9c, 0xce, 0x90, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x94, 0x68, 0x38, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0x59, 0x3e, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0xe9, 0x96, 0xe5, 0x38, 0x74, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xbc, 0xef, 0x74, 0x70, 0x3a, 0x43, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x31, 0x1c, 0x04, 0x1b, 0xc4, 0x6d, 0x6c, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xd4, 0xb0, 0x93, 0x43, 0xd6, 0xee, 0x38, 0x74, 0xc8, 0xd7, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xbf, 0x61, 0xaf, 0xf0, 0xe0, 0xbd, 0x69, 0x01, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0xb0, 0x57, 0x78, 0x50, 0x32, 0x34, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xee, 0x06, 0x6e, 0x0e, 0x69, 0xb8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xe2, 0x6e, 0xe0, 0xe6, 0xd0, 0x41, 0xe3, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0xc5, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x1c, 0x76, 0xc3, 0x5a, 0xe8, 0x86, 0x18, 0x0e, 0xbb, 0x61, 0x05, 0x75, 0x43, 0x0c, 0x17, 0x04, 0x0b, 0xbf, 0xc1, 0xe0, 0x9d, 0x3c, 0x28, 0x19, 0x9a, 0x0e, 0xce, 0xaa, 0xcc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x10, 0x1f, 0x1c, 0xfc, 0x97, 0x8f, 0xc7, 0xc7, 0xb7, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0xd2, 0xdd, 0x77, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0xdf, 0x10, 0xcd, 0x0d, 0x8d, 0x04, 0x37, 0x74, 0x52, 0xdb, 0xd0, 0x84, 0xeb, 0x10, 0xc3, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xbb, 0xc3, 0x0a, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x1b, 0x24, 0xee, 0xcd, 0x6c, 0x90, 0x52, 0x3a, 0xb3, 0x41, 0xa3, 0xe2, 0x4c, 0x1b, 0x24, 0x0d, 0x20, 0x1c, 0x62, 0x78, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0x56, 0x32, 0xb9, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x04, 0x82, 0xff, 0x7d, 0x09, 0x0c, 0xff, 0xf7, 0x25, 0x68, 0xff, 0xbe, 0x04, 0xef, 0xbf, 0x1f, 0x62, 0x78, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0x56, 0x13, 0x04, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x04, 0x9a, 0xff, 0xbf, 0x5f, 0x02, 0xc7, 0xff, 0xfb, 0x25, 0x90, 0xfc, 0x7f, 0xbf, 0x04, 0x96, 0xff, 0xdf, 0x1f, 0x62, 0x78, 0x1c, 0xda, 0x10, 0xff, 0x0d, 0x2d, 0x80, 0x36, 0x34, 0x1d, 0xda, 0x20, 0x59, 0x03, 0x61, 0x83, 0xb0, 0xa7, 0xde, 0x90, 0xb5, 0xdb, 0xd0, 0x43, 0x68, 0x43, 0xe3, 0xa2, 0x0d, 0x9d, 0xd4, 0x36, 0x34, 0xe1, 0xda, 0x10, 0xcd, 0x0d, 0x8d, 0x04, 0x37, 0x08, 0xb2, 0xf8, 0x0d, 0x02, 0x37, 0x7e, 0x83, 0xb5, 0x3b, 0x08, 0x07, 0xeb, 0xd4, 0x7a, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0xcb, 0xe0, 0x05, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0x2b, 0x68, 0x54, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xe9, 0xee, 0x3b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x6f, 0x88, 0xe6, 0x86, 0x66, 0x3c, 0x1b, 0x44, 0x6e, 0x7b, 0xca, 0x12, 0x08, 0xfe, 0xdf, 0x43, 0x0c, 0x8f, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xac, 0x36, 0xdc, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x41, 0xe2, 0xde, 0xcc, 0x06, 0x51, 0xe6, 0xa3, 0xb1, 0x41, 0xa4, 0xbe, 0xa9, 0x6c, 0xe8, 0x21, 0x74, 0x88, 0xe1, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x58, 0xc9, 0xe4, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x06, 0xf1, 0x10, 0x71, 0xb3, 0x04, 0x92, 0xff, 0xdf, 0x37, 0x34, 0x1d, 0x3a, 0x88, 0x31, 0x52, 0x9b, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x6c, 0xb0, 0x9a, 0x20, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x0d, 0xe2, 0x6b, 0xe2, 0x66, 0x83, 0x34, 0xf7, 0x8c, 0x25, 0x68, 0x7f, 0xbf, 0x04, 0x8a, 0xff, 0xfb, 0x43, 0x0c, 0x8f, 0x43, 0x1b, 0xe2, 0xbf, 0x41, 0xd8, 0x53, 0x6f, 0xe8, 0xa4, 0xb6, 0x41, 0x90, 0xc5, 0x6f, 0x68, 0x01, 0xb4, 0x21, 0x6b, 0xb7, 0xa1, 0x09, 0xd7, 0x06, 0x81, 0x1b, 0xbf, 0xa1, 0xe9, 0xd0, 0x86, 0x1e, 0x42, 0x1b, 0xa2, 0xb9, 0xc1, 0xda, 0x1d, 0x84, 0x0d, 0x92, 0x35, 0x10, 0x36, 0x34, 0x2e, 0xda, 0xd0, 0x48, 0xf0, 0x60, 0x9d, 0x5a, 0xcf, 0xf1, 0x78, 0x10, 0x6c, 0x50, 0x40, 0x0b, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x49, 0x46, 0x20, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x3d, 0x84, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x08, 0x4c, 0xec, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xe3, 0x1a, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x18, 0x6f, 0x3a, 0x07, 0x25, 0x43, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xd6, 0xee, 0x20, 0xec, 0xa9, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x6c, 0x90, 0x90, 0x1c, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x74, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xf1, 0xa6, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x70, 0x52, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xdc, 0x24, 0xdc, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xcb, 0x1a, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x48, 0x69, 0x51, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0xe6, 0x9e, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xe0, 0x9d, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xaa, 0x00, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0x03, 0x91, 0xfa, 0xa0, 0x64, 0x68, 0x3a, 0x78, 0xb3, 0x09, 0xc5, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x04, 0x1b, 0x24, 0xec, 0xd5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x52, 0xfc, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x06, 0x22, 0xf5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xe4, 0xa2, 0x9a, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0xa0, 0x70, 0x4b, 0x3a, 0x28, 0x19, 0x9a, 0x0e, 0xde, 0x6c, 0x42, 0x71, 0x1c, 0x3a, 0x0e, 0x6d, 0x1c, 0xda, 0xb0, 0x57, 0xb8, 0x21, 0x55, 0x73, 0x50, 0x2c, 0x92, 0x1d, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x47, 0xa1, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0xd1, 0x70, 0x36, 0x48, 0xed, 0x00, 0x39, 0x18, 0xad, 0xe6, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x58, 0x1c, 0x76, 0xe1, 0x36, 0xc4, 0xf0, 0x60, 0x9d, 0x4a, 0xc3, 0x86, 0xd4, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xa8, 0xfe, 0x83, 0x60, 0x83, 0x26, 0x6f, 0x57, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x34, 0x4a, 0xc7, 0x72, 0x68, 0x3c, 0x7f, 0x1c, 0x1a, 0x44, 0x0b, 0x7b, 0xd0, 0xde, 0x4d, 0xc9, 0xf1, 0xf8, 0xf8, 0x36, 0x08, 0x36, 0x88, 0xec, 0x63, 0x9b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x25, 0x1a, 0xce, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe7, 0xe0, 0xef, 0x83, 0xc1, 0xe9, 0x73, 0x1c, 0x3a, 0x9c, 0x62, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x2c, 0x0b, 0x83, 0x59, 0x1c, 0x04, 0x1b, 0x34, 0x0e, 0xa1, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0xdb, 0x20, 0x52, 0xc8, 0x6d, 0x36, 0xf4, 0x10, 0x5a, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd5, 0x85, 0x11, 0x07, 0x2b, 0x1e, 0x6c, 0x0e, 0x12, 0xf0, 0x40, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xc1, 0x89, 0xad, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0xb2, 0x30, 0x98, 0xc5, 0xe1, 0x17, 0x44, 0x0b, 0x6a, 0x07, 0xc1, 0x06, 0x89, 0xe9, 0xd5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0xa1, 0x3f, 0xf9, 0xc1, 0xc8, 0xec, 0x3d, 0x34, 0x2e, 0x3a, 0x0e, 0x0d, 0xa2, 0x05, 0xe1, 0x20, 0xd8, 0x20, 0x31, 0xbd, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x37, 0xf4, 0x27, 0x3f, 0x34, 0x12, 0x3c, 0x64, 0xed, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x41, 0x3a, 0x94, 0xc7, 0xf0, 0x0b, 0xa2, 0x05, 0xe3, 0x61, 0x17, 0x04, 0x0b, 0x92, 0xc1, 0x97, 0x83, 0xb3, 0x97, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x36, 0x68, 0xa0, 0xc0, 0xff, 0x38, 0xb4, 0x20, 0x58, 0x90, 0x0c, 0xbc, 0x7e, 0x77, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x01, 0x74, 0x88, 0xff, 0x71, 0xe8, 0x90, 0xb5, 0x3b, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0xd1, 0x9f, 0x74, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x13, 0x9f, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0xe0, 0xd0, 0xe8, 0xe8, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x89, 0xcf, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2f, 0x6a, 0x03, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x22, 0x47, 0x7d, 0x68, 0x3a, 0x74, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x04, 0xef, 0xe0, 0x98, 0x55, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x59, 0x3a, 0x38, 0x66, 0x15, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x1b, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x43, 0xed, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x05, 0xc9, 0xc0, 0xeb, 0x77, 0x07, 0xc7, 0xac, 0xe2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x96, 0x08, 0x75, 0x90, 0x8a, 0x75, 0x3d, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x63, 0x89, 0x50, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x13, 0x2f, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x24, 0x4a, 0xea, 0x43, 0xea, 0xe0, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xe4, 0x3c, 0x73, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x24, 0x3b, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x65, 0xe9, 0xe0, 0xec, 0x65, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x6d, 0x48, 0xd5, 0x1c, 0xac, 0xaa, 0xc6, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x88, 0xcb, 0x14, 0x93, 0xc5, 0x41, 0xb0, 0xc1, 0x39, 0xf8, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x6b, 0xb7, 0x41, 0xa4, 0x90, 0xdb, 0x6c, 0xe8, 0x21, 0xb4, 0x41, 0x74, 0x04, 0xdd, 0x6c, 0x68, 0x5c, 0xb4, 0x41, 0xd8, 0x53, 0x1f, 0x24, 0x0c, 0x20, 0x1c, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x43, 0x9b, 0x43, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xf0, 0x0b, 0x82, 0x0d, 0xe2, 0x32, 0xc5, 0x64, 0x71, 0xf8, 0x05, 0xd1, 0x82, 0xda, 0x41, 0xb0, 0x41, 0x62, 0x7a, 0xf5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x6f, 0xe8, 0x4f, 0x7e, 0x68, 0xc2, 0x75, 0x68, 0x5c, 0x74, 0x1c, 0x3a, 0x88, 0xeb, 0xa2, 0x9b, 0x41, 0xb0, 0x41, 0x42, 0xd9, 0xc9, 0xb0, 0x0b, 0xbb, 0x20, 0xd8, 0x20, 0x1e, 0x76, 0x65, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb4, 0x6b, 0x1c, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x48, 0x3a, 0x1d, 0x1c, 0xb3, 0x8a, 0x0f, 0x62, 0x7a, 0xd5, 0xe6, 0x38, 0xb4, 0xb0, 0x0b, 0x82, 0x0d, 0xe2, 0x61, 0x57, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x42, 0x0e, 0xc2, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xf1, 0x52, 0x76, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x48, 0x01, 0xa1, 0x39, 0x0e, 0x1d, 0x87, 0x16, 0x76, 0x61, 0x17, 0xee, 0x20, 0xe6, 0x1e, 0x6e, 0x0e, 0xeb, 0x9b, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x46, 0x6b, 0xa1, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb4, 0x6b, 0x1c, 0x72, 0x48, 0x1d, 0x1c, 0x87, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xbb, 0xc5, 0x50, 0x07, 0x51, 0xa9, 0x76, 0x33, 0xfc, 0xc6, 0xf3, 0x61, 0x0e, 0x22, 0x82, 0xed, 0x66, 0x10, 0x2c, 0x08, 0x36, 0x88, 0xde, 0xd1, 0x8e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa9, 0x31, 0x1d, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x24, 0xb8, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0xe6, 0x20, 0xaa, 0xca, 0x65, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0xd3, 0xf9, 0x2f, 0xc3, 0x2f, 0x88, 0x16, 0x66, 0x10, 0x2c, 0x0e, 0xbb, 0x20, 0xd8, 0xe0, 0x00, 0x96, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x43, 0xe8, 0x20, 0x30, 0xb1, 0x8f, 0x43, 0x1b, 0xa2, 0x39, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x41, 0xc9, 0xc1, 0x81, 0x22, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x3a, 0x5e, 0xc3, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xa0, 0x2e, 0x1d, 0x9c, 0xeb, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x43, 0x7f, 0xf2, 0x83, 0xc6, 0xfa, 0x02, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x11, 0x0a, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x89, 0x2a, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xf7, 0xfd, 0x70, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x1b, 0x14, 0x64, 0x3b, 0x87, 0x1e, 0x42, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0x62, 0x38, 0xfc, 0x82, 0x68, 0x21, 0x83, 0x60, 0x71, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0xf0, 0xe5, 0x20, 0x2d, 0x68, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x18, 0x58, 0x98, 0xc0, 0xf0, 0xfe, 0x3f, 0x0e, 0x6d, 0x48, 0x1d, 0x0c, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x60, 0xac, 0x0e, 0x86, 0xa3, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x18, 0x0e, 0xa7, 0x59, 0x82, 0xd6, 0xff, 0x1b, 0xf6, 0x0a, 0x87, 0xdf, 0x78, 0x3e, 0xec, 0xc2, 0x6d, 0x10, 0x3c, 0xdc, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x41, 0xc4, 0x46, 0xd3, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0xa4, 0x4f, 0xe4, 0xa0, 0x20, 0xdb, 0x39, 0x0e, 0x1d, 0x0c, 0x44, 0xea, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x88, 0xfd, 0x30, 0x07, 0x63, 0x60, 0x61, 0x10, 0x6d, 0x30, 0xfe, 0xa1, 0x07, 0xd1, 0xc2, 0x0e, 0x82, 0x0d, 0x12, 0xf6, 0x6a, 0x0e, 0x8a, 0xd1, 0x9f, 0xe3, 0xf9, 0xf1, 0xed, 0x78, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xd3, 0x61, 0x0e, 0x2d, 0x80, 0x06, 0xd1, 0x82, 0x70, 0x10, 0x6c, 0x70, 0x94, 0x58, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x76, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x16, 0x0a, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0xfa, 0x93, 0x0f, 0x82, 0x0d, 0x0e, 0x39, 0xcb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xd2, 0xa4, 0x9a, 0x83, 0xf4, 0xa2, 0x8b, 0x83, 0x81, 0x48, 0x7d, 0x1c, 0x3a, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xa1, 0x43, 0x72, 0xe9, 0xf8, 0x76, 0x3c, 0x1e, 0x04, 0x1b, 0x2c, 0xa4, 0x9c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0xfd, 0xc9, 0x0f, 0x9a, 0x2a, 0x38, 0x39, 0x44, 0xf3, 0x38, 0x74, 0x38, 0xc5, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x83, 0x13, 0x63, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xc1, 0xc7, 0xbc, 0x21, 0x86, 0x83, 0x60, 0x83, 0x85, 0xaf, 0x5e, 0x07, 0x8d, 0xae, 0xc9, 0x1f, 0xdf, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0xec, 0xc2, 0x2e, 0xdc, 0x82, 0x60, 0x83, 0x88, 0x89, 0xb6, 0x39, 0x34, 0x05, 0x3a, 0x88, 0x8e, 0x73, 0x9b, 0x85, 0x5d, 0xb8, 0x0d, 0x82, 0xd2, 0x7b, 0x10, 0x6c, 0x10, 0xff, 0x85, 0x34, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x9b, 0x95, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xcd, 0x9d, 0x0e, 0x4e, 0x42, 0xc7, 0x87, 0x16, 0x60, 0xc7, 0xa1, 0xe3, 0xd0, 0xc2, 0x2e, 0x08, 0x36, 0x38, 0x42, 0x15, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x74, 0x0c, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xfe, 0x0b, 0x69, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0x1c, 0x8b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb2, 0x76, 0x07, 0xa9, 0x1d, 0x20, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x21, 0x31, 0x35, 0xfc, 0x82, 0x68, 0x61, 0x06, 0xc1, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x92, 0x55, 0x87, 0x6c, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xb2, 0xe3, 0x20, 0xe4, 0xb3, 0x8f, 0x43, 0xc3, 0x2e, 0xdc, 0x86, 0x7c, 0xed, 0x41, 0xf0, 0x70, 0x2f, 0x08, 0x36, 0x48, 0x4f, 0x48, 0x39, 0x6c, 0xd4, 0x0e, 0x92, 0x21, 0x83, 0x68, 0xc1, 0xf5, 0xe3, 0xd0, 0x20, 0x5a, 0xd8, 0x35, 0x08, 0xf9, 0xec, 0x43, 0xd6, 0xee, 0xa0, 0xc4, 0x76, 0x3b, 0x9e, 0x1f, 0xdf, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x48, 0x56, 0x1d, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xe2, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xe8, 0x7d, 0x07, 0xc7, 0xac, 0xe2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0x23, 0x2c, 0x39, 0x58, 0x87, 0xca, 0x7f, 0x88, 0xe6, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x87, 0xdd, 0x20, 0x16, 0x33, 0x6f, 0x36, 0xa4, 0x0e, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x48, 0x51, 0xb0, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xab, 0xea, 0x4a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x4e, 0x98, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x82, 0x14, 0xff, 0xd0, 0x78, 0xfe, 0x38, 0x74, 0x1c, 0x3a, 0xa4, 0x6a, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x1c, 0x48, 0xd6, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xa5, 0xfb, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0xe0, 0xa0, 0x1c, 0x6b, 0x38, 0x0e, 0x1d, 0x92, 0x1d, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x58, 0x1c, 0x76, 0x83, 0xe0, 0xc2, 0xde, 0x10, 0xc3, 0x61, 0x37, 0xac, 0xef, 0x6d, 0x88, 0xe1, 0x82, 0x60, 0x83, 0x24, 0x23, 0x90, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x41, 0x8a, 0x7f, 0xc8, 0xda, 0x1d, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xc1, 0x4a, 0x9e, 0x9d, 0x83, 0xa2, 0xe6, 0xec, 0xf8, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xeb, 0x61, 0x0e, 0x42, 0xc4, 0x7f, 0x10, 0x2d, 0xec, 0x20, 0x58, 0x90, 0x0c, 0x24, 0xab, 0x0e, 0x86, 0xa1, 0xcf, 0xc1, 0x1a, 0x97, 0xb1, 0xc3, 0x0a, 0xed, 0xf1, 0xed, 0x70, 0x8a, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x37, 0x37, 0x26, 0x1f, 0xac, 0x09, 0xdf, 0x39, 0x1e, 0xaf, 0x20, 0x58, 0x5c, 0x10, 0x6c, 0x50, 0x50, 0x8b, 0x2d, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x0f, 0x5e, 0x83, 0x3b, 0x58, 0xeb, 0x0f, 0x34, 0xec, 0x82, 0x60, 0xe1, 0x17, 0x7e, 0xc3, 0x0a, 0xed, 0x41, 0xa2, 0xd5, 0xc9, 0xc1, 0x99, 0x2d, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0xed, 0xf7, 0x20, 0xe1, 0xf6, 0xe4, 0x38, 0xb4, 0x20, 0x58, 0xf8, 0x0d, 0x22, 0xf3, 0xf5, 0xe6, 0xa0, 0x1c, 0x4a, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x6c, 0xb0, 0x54, 0xed, 0xe5, 0xb0, 0xf6, 0x7b, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0xa2, 0x2d, 0xf6, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0xb0, 0xc1, 0x52, 0xb5, 0x97, 0x83, 0x84, 0xdb, 0x93, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc2, 0x6f, 0xc8, 0x56, 0x1c, 0x24, 0x5a, 0x9d, 0x1c, 0x14, 0xf7, 0x50, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x0e, 0x0d, 0x05, 0x87, 0xd4, 0xc1, 0x71, 0x68, 0xf8, 0x05, 0xd1, 0x82, 0xf7, 0x83, 0x60, 0xe1, 0x17, 0x7e, 0x83, 0x20, 0xe7, 0x3f, 0x48, 0xb4, 0x3a, 0x39, 0x48, 0x75, 0xe4, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x22, 0xfe, 0x07, 0xa9, 0x61, 0x27, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x76, 0x41, 0xb0, 0xf0, 0x0b, 0xbf, 0x41, 0xc0, 0xfb, 0x1f, 0x24, 0x5a, 0x9d, 0x1c, 0xc4, 0x7c, 0xcc, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x61, 0x0c, 0x7b, 0x90, 0x70, 0x7b, 0x72, 0x1c, 0x5a, 0xf8, 0x05, 0xd1, 0x82, 0x78, 0x10, 0x2c, 0xfc, 0x06, 0x71, 0x9f, 0x7b, 0x73, 0x50, 0x0e, 0x25, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0x32, 0x7c, 0xce, 0x41, 0xec, 0xd0, 0xde, 0x1c, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0x76, 0x10, 0x2c, 0xfc, 0x06, 0x71, 0x9f, 0x7b, 0x73, 0x30, 0xe4, 0xa4, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0x71, 0x9f, 0x7b, 0x73, 0x70, 0x94, 0x23, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x55, 0xb6, 0x37, 0x87, 0x54, 0xcd, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x88, 0xfb, 0xdc, 0x9b, 0x83, 0xe2, 0x1e, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x54, 0xd9, 0xde, 0x1c, 0xf6, 0x0a, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x88, 0xfe, 0x20, 0x58, 0xf8, 0x0d, 0xe2, 0x3e, 0xf7, 0xe6, 0x20, 0xd5, 0x91, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x30, 0x86, 0x3d, 0x48, 0x0d, 0x3b, 0x39, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0xb1, 0xe9, 0x7b, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x58, 0xff, 0xbd, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0x98, 0xe0, 0x04, 0x39, 0xa4, 0x6a, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0x0e, 0xef, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc8, 0xe9, 0xbd, 0xd9, 0x60, 0xa9, 0xda, 0xcb, 0xc1, 0x30, 0x86, 0x3d, 0x0e, 0x1d, 0x87, 0x8e, 0x6f, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x83, 0x07, 0xaf, 0xc1, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x0e, 0x59, 0xbb, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x41, 0x41, 0x2d, 0xb6, 0xb8, 0x20, 0xd8, 0x20, 0x8d, 0x76, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x71, 0xa8, 0x71, 0x50, 0x90, 0xed, 0x1c, 0x87, 0x06, 0xc1, 0x06, 0x91, 0xf6, 0x68, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x0d, 0xbf, 0xf1, 0x7c, 0x83, 0x75, 0x03, 0x41, 0x6b, 0x50, 0xc6, 0xed, 0x0c, 0x82, 0x05, 0xc9, 0xc0, 0xaa, 0xd3, 0xc1, 0x49, 0xe8, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0xda, 0xa0, 0x20, 0xdb, 0x39, 0xe4, 0x6b, 0x8f, 0x43, 0x87, 0x18, 0x1e, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x71, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x20, 0x08, 0xd0, 0x16, 0x07, 0xc1, 0xe2, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0x82, 0x0d, 0x5a, 0xce, 0xc1, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x5c, 0x57, 0xcb, 0x1c, 0x94, 0xee, 0x5d, 0xc3, 0x6f, 0x3c, 0xdf, 0x20, 0x28, 0xbd, 0x07, 0xc1, 0x06, 0x71, 0x92, 0x2d, 0x73, 0x50, 0x66, 0xe7, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x7c, 0x77, 0xde, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0xc8, 0x41, 0x38, 0xc4, 0xff, 0x38, 0x34, 0x08, 0x16, 0x76, 0xe1, 0x36, 0x18, 0x0d, 0xbe, 0x07, 0xf1, 0x10, 0x71, 0xb3, 0x21, 0x86, 0xc3, 0x2e, 0xec, 0xc2, 0x6d, 0xd0, 0x4a, 0x69, 0xfe, 0x41, 0x3c, 0x44, 0xdc, 0x2c, 0xec, 0x06, 0xaf, 0x6a, 0xb5, 0x58, 0xd8, 0x05, 0xc1, 0x06, 0xed, 0x58, 0xdf, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x73, 0xcf, 0x38, 0x18, 0x1b, 0xae, 0xc7, 0xa1, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x0d, 0x31, 0x1c, 0x76, 0x61, 0x17, 0x6e, 0x83, 0x93, 0xde, 0xee, 0x41, 0x3c, 0x44, 0xdc, 0x2c, 0xec, 0x06, 0xaf, 0x6a, 0xb5, 0x58, 0xd8, 0x05, 0xc1, 0x06, 0xed, 0x58, 0xdf, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x73, 0xcf, 0x38, 0x34, 0x9e, 0x3f, 0x0e, 0x1d, 0xd2, 0xb9, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0xd2, 0xb9, 0x83, 0x60, 0x61, 0x37, 0x0e, 0x2d, 0x08, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0x38, 0xda, 0x07, 0xc1, 0xe2, 0xb0, 0x0b, 0x82, 0x0d, 0x5e, 0xe7, 0x0b, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xb0, 0x57, 0x38, 0x81, 0xe2, 0xef, 0xff, 0x38, 0xb4, 0x21, 0x86, 0x83, 0x60, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x45, 0x53, 0x96, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x16, 0x4d, 0x59, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x5d, 0x3a, 0x38, 0x50, 0x24, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x38, 0x34, 0x28, 0xe4, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0xf6, 0xb1, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x21, 0x7b, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xd6, 0xbe, 0x83, 0x03, 0x45, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0xf9, 0xfc, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0xc0, 0xaa, 0xd3, 0xc1, 0x81, 0x22, 0xf9, 0x60, 0x28, 0x16, 0x1d, 0x87, 0x0e, 0x0e, 0x44, 0xfc, 0xc7, 0xa1, 0x05, 0xc1, 0xc6, 0xa1, 0x83, 0x61, 0x16, 0xbe, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x94, 0xbb, 0x83, 0xe1, 0x1f, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0x40, 0xf3, 0xbf, 0xff, 0xc7, 0xa1, 0xe3, 0xd0, 0x82, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x02, 0xcb, 0x7f, 0xff, 0x8f, 0x43, 0x0b, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x09, 0x0c, 0xdf, 0xff, 0xe3, 0xd0, 0x82, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0x2d, 0xed, 0xe3, 0x38, 0xb4, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0x40, 0xf0, 0xfe, 0x1f, 0x87, 0x16, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xc9, 0xc4, 0x0b, 0xc7, 0xa1, 0x43, 0x0c, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x36, 0x18, 0x24, 0x2f, 0x07, 0xa7, 0x0d, 0xe5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0xf9, 0xd6, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x8c, 0xd2, 0xc1, 0x69, 0x43, 0xf9, 0xe0, 0x69, 0x33, 0x39, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x5c, 0x10, 0x2c, 0x48, 0x06, 0x56, 0x9d, 0x0e, 0xd2, 0x82, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x0d, 0x0a, 0xb2, 0x9d, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0xfb, 0x4e, 0x07, 0x69, 0x41, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x4a, 0x34, 0x9c, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0xc4, 0xde, 0xfd, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0x41, 0x41, 0xb6, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0xe8, 0xeb, 0x74, 0x90, 0x16, 0x34, 0x72, 0x10, 0xc3, 0xf9, 0x37, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x36, 0x28, 0xea, 0x73, 0x0e, 0x4e, 0x1b, 0xca, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x83, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x41, 0x3c, 0x08, 0x36, 0x38, 0x4a, 0x2c, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x4c, 0xec, 0x83, 0x24, 0xb7, 0xe6, 0xe3, 0xd0, 0x41, 0x5a, 0x1c, 0xf4, 0x71, 0xe8, 0xf8, 0x76, 0x88, 0xe1, 0x20, 0xd8, 0x10, 0xc3, 0x41, 0xb0, 0x38, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x4c, 0x60, 0xf8, 0xfb, 0x2f, 0x08, 0x36, 0x78, 0x3e, 0x4b, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x06, 0x45, 0x74, 0xd7, 0xc1, 0x81, 0x22, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x04, 0xef, 0xfd, 0x1f, 0x9c, 0x19, 0x97, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0xdf, 0x20, 0x30, 0xb1, 0x07, 0xc1, 0x06, 0x6d, 0xc9, 0xae, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x30, 0x07, 0x89, 0x89, 0x36, 0x07, 0x67, 0xc6, 0xe5, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x38, 0x51, 0x28, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xa8, 0xa3, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x29, 0xd0, 0xe6, 0x20, 0xf6, 0xc2, 0x6f, 0x8e, 0x43, 0x87, 0x54, 0xcd, 0x71, 0x68, 0xd8, 0x85, 0x5d, 0xb8, 0x0d, 0x31, 0x3c, 0x48, 0x8c, 0x84, 0x59, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0x20, 0xbf, 0x72, 0x70, 0xcc, 0x58, 0x3e, 0x88, 0x7d, 0x67, 0x99, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xdb, 0xee, 0x60, 0xf8, 0xc7, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xae, 0x18, 0x70, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x83, 0x74, 0x28, 0x8f, 0x83, 0x13, 0x45, 0xf4, 0x21, 0x75, 0x70, 0x1c, 0x3a, 0x88, 0xcc, 0xf8, 0x9b, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x6c, 0xf0, 0xaa, 0x31, 0x80, 0x83, 0x15, 0x45, 0x40, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x50, 0x3f, 0x08, 0x36, 0x88, 0x0f, 0x8a, 0x96, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x85, 0x5b, 0xd2, 0xc1, 0x18, 0xc6, 0x3f, 0x0e, 0x0d, 0xa2, 0x85, 0x3d, 0x28, 0xc3, 0xe9, 0x0e, 0x2b, 0xb4, 0x83, 0x60, 0x61, 0x37, 0x08, 0x4c, 0xec, 0x05, 0xc1, 0x82, 0x64, 0x40, 0xa0, 0xf7, 0x1d, 0x9c, 0x36, 0x94, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf6, 0x0a, 0x0f, 0x02, 0x13, 0xfb, 0x38, 0x34, 0x08, 0x16, 0x04, 0x0b, 0xbb, 0xc1, 0xa8, 0x97, 0x5c, 0x10, 0x6c, 0x10, 0xa5, 0x49, 0x35, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x09, 0x14, 0xbf, 0xff, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0x5c, 0x21, 0xd5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x4a, 0x93, 0x6a, 0x0e, 0x06, 0xb6, 0xe8, 0x41, 0x84, 0x58, 0xe0, 0x1c, 0x87, 0x06, 0xc1, 0x82, 0x64, 0x40, 0xa0, 0xf7, 0x1d, 0x1c, 0x33, 0x96, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0x07, 0x03, 0x91, 0xfa, 0x38, 0xb4, 0x20, 0x58, 0x90, 0x0c, 0xac, 0x3a, 0x1d, 0x1c, 0x33, 0x96, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x0d, 0x0a, 0xb2, 0x9d, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x22, 0x3c, 0xe5, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x5a, 0xf8, 0x8d, 0xe7, 0xe3, 0x40, 0xf1, 0x8f, 0x39, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0xf4, 0x68, 0xe0, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x1b, 0x14, 0x64, 0x3b, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x78, 0xca, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0xf0, 0x1b, 0xcf, 0xc7, 0x81, 0xc2, 0x1f, 0x73, 0x48, 0x1d, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x61, 0x17, 0x76, 0xe1, 0x36, 0xc4, 0xf0, 0x20, 0x99, 0x78, 0x61, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0xd2, 0xd2, 0x3e, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x41, 0x64, 0xc6, 0xdf, 0x0c, 0x82, 0x0d, 0x62, 0x0f, 0x9a, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0x5c, 0x26, 0xb0, 0xfc, 0xfb, 0xff, 0x38, 0x34, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0x6c, 0xf0, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x61, 0x17, 0x76, 0xe1, 0x36, 0xc4, 0x70, 0x82, 0xb7, 0xff, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0xd0, 0x9f, 0xfc, 0xa0, 0x91, 0x3e, 0x91, 0x43, 0x3a, 0x77, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x64, 0x10, 0x1c, 0xb4, 0xe6, 0xe0, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x1c, 0x34, 0xd2, 0x27, 0x32, 0x81, 0xe5, 0xef, 0xff, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdd, 0x20, 0xc2, 0x4b, 0x70, 0x16, 0x76, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0x1a, 0xe9, 0x13, 0xd9, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x83, 0xc8, 0xe0, 0xbb, 0x39, 0x0e, 0x1d, 0xd2, 0xb9, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0x7a, 0xe5, 0xa0, 0x35, 0x07, 0xff, 0x83, 0x61, 0x16, 0x3e, 0xec, 0x06, 0xc1, 0x85, 0xbd, 0x20, 0xd8, 0x20, 0xaa, 0x57, 0x70, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0xe4, 0x09, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x09, 0x0c, 0xf7, 0xff, 0x83, 0xd8, 0x47, 0xc1, 0x39, 0x0e, 0x1d, 0x87, 0x0e, 0x22, 0xbd, 0x05, 0x67, 0x10, 0x2c, 0x08, 0x36, 0x68, 0x5a, 0xc3, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x04, 0x92, 0xdf, 0xff, 0x0f, 0x62, 0x1f, 0x05, 0xe7, 0x38, 0x34, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x4c, 0xa0, 0x78, 0xff, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0xd2, 0x2b, 0x07, 0xc9, 0x4a, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xa0, 0xe4, 0x20, 0x59, 0x69, 0xe5, 0x60, 0x9c, 0x54, 0x1f, 0x87, 0x86, 0xdd, 0x60, 0xe4, 0x93, 0x2f, 0x08, 0x36, 0x88, 0x05, 0x19, 0x9c, 0x83, 0x81, 0x2d, 0x7a, 0x1c, 0x1a, 0x04, 0x0b, 0x92, 0xc1, 0x9f, 0x83, 0x64, 0xa5, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x88, 0x35, 0x1a, 0x9c, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xc0, 0xfb, 0x4e, 0x07, 0xad, 0x39, 0xf8, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x38, 0xa1, 0x60, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x08, 0x0e, 0x92, 0x95, 0x56, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0xbd, 0x0d, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x48, 0xbf, 0xc1, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x42, 0x71, 0x70, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xe2, 0x7f, 0x88, 0xff, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0x32, 0x10, 0x9d, 0x83, 0x64, 0xa5, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0x04, 0x96, 0xdf, 0xff, 0x1f, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0xf6, 0xd7, 0x62, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xec, 0x06, 0x63, 0x93, 0x73, 0x41, 0xb0, 0x41, 0x2c, 0xc8, 0xe0, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xe2, 0xc1, 0x07, 0xe7, 0x38, 0x34, 0x08, 0x36, 0x88, 0x80, 0x1e, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0x82, 0x0c, 0xce, 0xc1, 0xf8, 0x30, 0x3a, 0x88, 0x07, 0x1f, 0x9c, 0xe3, 0xd0, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xf4, 0xbe, 0x83, 0x64, 0xa5, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0xc1, 0xa9, 0x1c, 0xf9, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xe8, 0x7d, 0x07, 0xad, 0x39, 0xf8, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x86, 0xdf, 0x78, 0x3e, 0xec, 0x06, 0x31, 0x16, 0x83, 0xb3, 0x41, 0xe1, 0x96, 0x34, 0x08, 0x36, 0x88, 0x8f, 0x22, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0x04, 0xcf, 0xff, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe1, 0x17, 0x44, 0x0b, 0x19, 0x76, 0x61, 0x17, 0x76, 0xe1, 0x36, 0xc4, 0xf0, 0x20, 0xed, 0x05, 0xe4, 0xb0, 0xbe, 0xb9, 0xb0, 0x0b, 0xb7, 0x41, 0x7a, 0xdb, 0xc8, 0x04, 0xe6, 0xff, 0xfd, 0xff, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xe0, 0x1d, 0x24, 0x2b, 0xad, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xa6, 0x21, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xe3, 0x4d, 0xe7, 0xe0, 0x54, 0x8e, 0x7c, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x50, 0x3f, 0x08, 0x16, 0x24, 0x43, 0x0e, 0x86, 0xa3, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x53, 0x39, 0xf2, 0x41, 0x6a, 0x0a, 0xcf, 0x71, 0x68, 0x10, 0x2d, 0xec, 0x41, 0xa2, 0x72, 0xc9, 0x41, 0x90, 0xf3, 0x1f, 0xdf, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x05, 0x93, 0xfe, 0x43, 0xa2, 0x75, 0x10, 0x6c, 0x10, 0x8d, 0xeb, 0x36, 0x83, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0xe2, 0xb0, 0x0b, 0x82, 0x0d, 0xce, 0xa9, 0xc8, 0x07, 0xe9, 0xc1, 0x1f, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0xef, 0x90, 0xaf, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x08, 0x36, 0x78, 0x4b, 0x28, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe4, 0xb7, 0x94, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xe3, 0x1a, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xb8, 0x2b, 0xb7, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x70, 0xae, 0x29, 0x5e, 0xf8, 0x8d, 0xe7, 0x0b, 0x82, 0x0d, 0xa2, 0x94, 0x0c, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xb8, 0x46, 0x3f, 0xa4, 0x6a, 0x8e, 0x43, 0x87, 0xa3, 0xfd, 0x20, 0x30, 0xb1, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0xd8, 0xe0, 0x39, 0xf2, 0x00, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x1b, 0x94, 0xb3, 0x3a, 0x07, 0xe7, 0xfa, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x1c, 0x69, 0x93, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1c, 0x88, 0xf8, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x4a, 0xf5, 0xbe, 0x83, 0x73, 0xfd, 0xf1, 0xc1, 0xc0, 0x16, 0x3d, 0x0e, 0x1d, 0x0c, 0xfc, 0x90, 0xe3, 0xd0, 0x21, 0x75, 0x70, 0x1c, 0x3a, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x41, 0x3c, 0x08, 0x36, 0x78, 0x8e, 0x3c, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc0, 0xc4, 0x3e, 0xa4, 0x0e, 0x8e, 0x43, 0x07, 0x69, 0x71, 0xd0, 0x83, 0x60, 0x41, 0xb0, 0x20, 0xd9, 0xa0, 0x9c, 0xd5, 0x39, 0x38, 0xe7, 0x1d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0xb8, 0x3d, 0x39, 0x18, 0xf8, 0x21, 0xc7, 0xa1, 0xe1, 0x17, 0x44, 0x1b, 0xbc, 0xad, 0x1e, 0xe0, 0x78, 0x3c, 0x08, 0x16, 0x87, 0x5d, 0x10, 0x6c, 0xf0, 0x0a, 0x4c, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x81, 0x89, 0x7d, 0x70, 0x20, 0xe2, 0x3f, 0x0e, 0x2d, 0x08, 0x16, 0x04, 0x1b, 0x2c, 0x2c, 0xfe, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xe8, 0x7d, 0x07, 0x07, 0x8a, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc1, 0x53, 0x38, 0x4c, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0xe2, 0xd1, 0x0c, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x27, 0x0a, 0xe5, 0x83, 0x08, 0x23, 0xc3, 0x39, 0x18, 0x6f, 0x3a, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xf1, 0x68, 0x86, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x13, 0x85, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc0, 0xc4, 0x3e, 0x48, 0xed, 0x00, 0x39, 0x0e, 0x1d, 0x8c, 0x37, 0x9d, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0x78, 0x34, 0xc3, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x89, 0x42, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x60, 0x62, 0x0f, 0xbf, 0xf1, 0x7c, 0x0c, 0xc3, 0xe3, 0xd0, 0xc1, 0x78, 0xd3, 0x39, 0x0e, 0x2d, 0x08, 0x36, 0x88, 0x47, 0x33, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0x28, 0x94, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x04, 0x26, 0xf6, 0x41, 0x6a, 0xd8, 0xc9, 0x71, 0xe8, 0x60, 0xbc, 0xe9, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0xc4, 0xa3, 0x19, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x4e, 0x14, 0xca, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x02, 0x13, 0xfb, 0x20, 0x59, 0x99, 0xe4, 0x38, 0x74, 0x30, 0xde, 0x74, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0xe2, 0xd1, 0x0c, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x27, 0x0a, 0xe5, 0x83, 0xe4, 0x55, 0xee, 0x83, 0xf1, 0xa6, 0x73, 0x1c, 0x5a, 0x10, 0x6c, 0x10, 0x8f, 0x66, 0x38, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0x51, 0x28, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x4c, 0xec, 0xe1, 0x37, 0x9e, 0x8f, 0xa1, 0xf8, 0x38, 0x74, 0x30, 0xde, 0x74, 0x8e, 0x43, 0x87, 0x18, 0x1e, 0x87, 0x06, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0xc5, 0x61, 0x37, 0x28, 0xf4, 0x9f, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf9, 0x41, 0xa2, 0x72, 0xc9, 0x61, 0x85, 0x76, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0xd8, 0xe0, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x20, 0x52, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x93, 0x27, 0x38, 0x07, 0xe9, 0xc1, 0x1f, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd9, 0xa0, 0xa8, 0xcf, 0x39, 0x68, 0xcd, 0xc1, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x83, 0x22, 0xba, 0xeb, 0xa0, 0x35, 0x07, 0xff, 0x83, 0x71, 0x52, 0x3d, 0xfc, 0xc6, 0xf3, 0x05, 0xc1, 0x06, 0xf1, 0x51, 0x84, 0x73, 0x10, 0xe5, 0x13, 0x38, 0x83, 0x60, 0x41, 0xb2, 0x41, 0xe1, 0x1f, 0x74, 0xd0, 0x9a, 0x83, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x31, 0xc3, 0x7d, 0x30, 0x78, 0x27, 0x8f, 0x43, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x6d, 0xf0, 0xa0, 0x28, 0x9d, 0x83, 0xb4, 0x38, 0xe8, 0xe3, 0xdb, 0x20, 0xd8, 0x20, 0xc9, 0x08, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x91, 0x7d, 0x6c, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x5c, 0xa3, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x5b, 0xa6, 0x20, 0x87, 0x46, 0x2d, 0xc7, 0xa1, 0x83, 0xc1, 0x3b, 0x79, 0x1c, 0x3a, 0xbe, 0x1d, 0xdf, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0xb0, 0x56, 0x89, 0x6b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0xb3, 0xc1, 0x1b, 0xe6, 0x91, 0x36, 0x48, 0x54, 0x1b, 0xd9, 0xa0, 0x20, 0xdb, 0x59, 0xf8, 0x8d, 0xe7, 0x63, 0xe0, 0x00, 0x40, 0xbf, 0xc1, 0xd8, 0x70, 0xdd, 0x60, 0xa9, 0xda, 0xcb, 0xc1, 0x52, 0xb5, 0x97, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0x49, 0x6f, 0x77, 0x71, 0x10, 0x2c, 0xec, 0x06, 0xef, 0x38, 0xd0, 0xd9, 0xe0, 0x0d, 0xa8, 0x47, 0xc3, 0x6e, 0xf0, 0x64, 0x06, 0x9d, 0x85, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0xd1, 0xe0, 0x7b, 0x30, 0xfc, 0x7c, 0x87, 0x5d, 0xb8, 0x0d, 0x5a, 0x29, 0xcd, 0x3f, 0xa4, 0x0e, 0x16, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0x5a, 0x29, 0xcd, 0xdf, 0xa0, 0x95, 0xd2, 0xfc, 0xc3, 0x29, 0x76, 0xf0, 0xe2, 0xe9, 0xa3, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x0a, 0x82, 0xc5, 0x19, 0xbc, 0x9e, 0x99, 0x83, 0x44, 0x12, 0x9f, 0xc5, 0x61, 0x37, 0x68, 0x70, 0x3f, 0x69, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0xd8, 0xa0, 0x91, 0xeb, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcd, 0x6f, 0xaf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x02, 0xf8, 0x86, 0x0b, 0x93, 0x0b, 0x63, 0x63, 0x2b, 0x63, 0x4b, 0x9b, 0x6b, 0x6b, 0x69, 0xab, 0x9b, 0xa3, 0x6b, 0x11, 0x2b, 0x6b, 0x09, 0x13, 0x7b, 0xb3, 0x2b, 0x6b, 0xd1, 0x2b, 0x93, 0x7b, 0x87, 0xdf, 0x78, 0x3e, 0x1e, 0x44, 0xcd, 0x24, 0xce, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0x9c, 0x62, 0xc3, 0x2e, 0xdc, 0x86, 0x18, 0x1e, 0x3c, 0xf3, 0xa3, 0x62, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0xd8, 0xa0, 0x91, 0xeb, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcd, 0x6f, 0xaf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x02, 0xf8, 0xa5, 0x4b, 0x6b, 0x2b, 0x6b, 0x19, 0x7b, 0x9b, 0xa3, 0x6b, 0x69, 0xab, 0x9b, 0xa3, 0x6b, 0x11, 0x2b, 0x6b, 0x09, 0x13, 0x7b, 0xb3, 0x2b, 0x6b, 0xd1, 0x2b, 0x93, 0x7b, 0x87, 0xdf, 0x78, 0x3e, 0x1e, 0x44, 0x69, 0x26, 0xce, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0x9c, 0x62, 0xc3, 0x2e, 0x08, 0x36, 0x38, 0x42, 0x15, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x1a, 0x40, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xe4, 0x58, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x40, 0xc4, 0x7f, 0x10, 0xf6, 0xd4, 0xc7, 0xa1, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0x41, 0x23, 0xd7, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0xdf, 0x5e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x02, 0xf0, 0xa3, 0xad, 0xac, 0xed, 0x4d, 0x2e, 0xaf, 0x65, 0xec, 0x6d, 0x8e, 0xae, 0xa5, 0xad, 0x6e, 0x8e, 0xae, 0x45, 0xac, 0xac, 0x25, 0x8c, 0xae, 0x85, 0xad, 0x2c, 0x6c, 0x8e, 0xae, 0x85, 0x0e, 0x4d, 0xae, 0x2c, 0x8c, 0x6c, 0xde, 0x30, 0x71, 0x1b, 0xb4, 0xf2, 0x4f, 0xb1, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x37, 0x01, 0x0f, 0x5d, 0x5a, 0x5b, 0xd9, 0xbc, 0x61, 0xe2, 0x36, 0x68, 0xe5, 0x9f, 0x62, 0x43, 0x1d, 0x59, 0xc3, 0x0c, 0xad, 0x61, 0xe2, 0x36, 0x78, 0x12, 0x8b, 0xc9, 0xe1, 0x3c, 0xde, 0x70, 0x22, 0x6c, 0x10, 0xeb, 0xa6, 0x38, 0x1b, 0x2c, 0x66, 0x83, 0x5a, 0x66, 0x39, 0x7c, 0x45, 0x73, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x2b, 0x9a, 0xe1, 0x37, 0x9e, 0x2f, 0x1e, 0x44, 0x91, 0x28, 0xce, 0x86, 0x26, 0x5c, 0x8b, 0x07, 0x31, 0x5b, 0x8a, 0xb3, 0x41, 0x01, 0x00, 0x75, 0x10, 0xdf, 0x9d, 0x38, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0xf8, 0x70, 0x8a, 0x0d, 0xbb, 0xb0, 0x0b, 0xb7, 0x41, 0xa2, 0xdc, 0xc7, 0xa1, 0x93, 0xda, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x1b, 0xa4, 0xb7, 0x8d, 0x1c, 0x3a, 0xa9, 0x1d, 0xd2, 0xb9, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x93, 0x63, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x82, 0x6c, 0xe7, 0x20, 0xec, 0xa9, 0x8f, 0x43, 0x83, 0x60, 0x83, 0x73, 0xa8, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xda, 0x2d, 0x86, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x24, 0xe3, 0x20, 0x1c, 0x87, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x6e, 0x31, 0xd4, 0x41, 0x7a, 0x04, 0xc2, 0x20, 0x58, 0x10, 0x6c, 0x10, 0x1d, 0x7f, 0x34, 0x07, 0x51, 0xd3, 0x2b, 0x33, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x0d, 0xca, 0x59, 0x9d, 0x83, 0xd3, 0x19, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf2, 0xc8, 0x60, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x38, 0x95, 0xc5, 0x39, 0x38, 0x68, 0xf5, 0x1e, 0x87, 0x86, 0x5f, 0x10, 0x6c, 0x70, 0x8e, 0xec, 0x5d, 0x1c, 0x76, 0x41, 0xb0, 0xc1, 0x2b, 0x30, 0x01, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x7a, 0x08, 0x1d, 0x1c, 0x88, 0xf8, 0x8f, 0x43, 0x0b, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x07, 0xc1, 0x06, 0x6d, 0x59, 0xf5, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x67, 0xab, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x09, 0xa0, 0xa7, 0x2d, 0xcd, 0xad, 0x65, 0x2e, 0x8c, 0x8d, 0xae, 0x85, 0xad, 0xcc, 0xed, 0x8c, 0x0e, 0xad, 0x25, 0x6d, 0xae, 0x05, 0x1f, 0xb4, 0xf2, 0x4f, 0x31, 0xfc, 0xc6, 0xf3, 0xc5, 0x83, 0xc8, 0xcd, 0xc5, 0x39, 0x34, 0x12, 0x3c, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x87, 0x53, 0x6c, 0x10, 0x2c, 0x08, 0x56, 0x10, 0x6c, 0x70, 0xa2, 0x50, 0x1e, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x20, 0x59, 0x99, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x31, 0x61, 0x35, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0x05, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x12, 0x38, 0xfc, 0xfe, 0x4f, 0xe0, 0xf8, 0xfb, 0x7f, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0x32, 0x20, 0xfc, 0x9d, 0x0e, 0x0e, 0x14, 0xc9, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x68, 0x3e, 0xbf, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xc1, 0xe8, 0x37, 0x07, 0x05, 0xd9, 0xce, 0x71, 0x68, 0x41, 0xb0, 0xc1, 0xa1, 0xce, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0x81, 0xf2, 0xf7, 0xff, 0x38, 0xb4, 0x20, 0xd8, 0xe0, 0x50, 0x67, 0x7e, 0x10, 0xc3, 0x15, 0x38, 0x0b, 0x82, 0x0d, 0x0e, 0x75, 0xe6, 0x87, 0x3d, 0xde, 0x05, 0xc1, 0x06, 0x87, 0x3a, 0xf3, 0xc3, 0x46, 0xed, 0x1a, 0x94, 0x71, 0x3b, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe8, 0x64, 0xbf, 0x19, 0x24, 0x43, 0x06, 0xd1, 0x06, 0x6d, 0xfd, 0x29, 0x1d, 0x87, 0x8e, 0x43, 0x6b, 0x50, 0xc6, 0xed, 0x1c, 0x44, 0x7e, 0xfc, 0xcd, 0x1a, 0x94, 0x71, 0x3b, 0x07, 0x71, 0xf0, 0x7e, 0xb3, 0x06, 0x65, 0xdc, 0xce, 0x41, 0xfc, 0xc3, 0xdf, 0xac, 0x41, 0x19, 0xb7, 0x33, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x1a, 0x4f, 0x61, 0x39, 0x0e, 0xad, 0x41, 0x19, 0xb7, 0x73, 0x10, 0x03, 0xf0, 0x37, 0x87, 0x18, 0x1e, 0x87, 0x06, 0xc1, 0xc2, 0x2f, 0x48, 0x06, 0xbb, 0x83, 0xe1, 0x28, 0x7d, 0x50, 0x0e, 0x25, 0x1d, 0x44, 0xeb, 0xec, 0xcd, 0x20, 0xd8, 0x10, 0xc3, 0x41, 0xb0, 0x38, 0xec, 0x82, 0x60, 0x41, 0x32, 0x90, 0x5f, 0x39, 0x68, 0xcd, 0xc1, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0x81, 0xe3, 0xfb, 0xff, 0x71, 0x68, 0x41, 0xb0, 0x21, 0x86, 0x83, 0x60, 0x71, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0x20, 0xbf, 0x72, 0x10, 0x17, 0x45, 0x17, 0x07, 0xa9, 0x0e, 0x1a, 0x0b, 0x82, 0x0d, 0x31, 0x1c, 0x04, 0x8b, 0xc3, 0x2e, 0x08, 0x16, 0x24, 0x03, 0xf9, 0x95, 0x83, 0x08, 0x56, 0xbb, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x4c, 0x60, 0xb9, 0xff, 0xff, 0x71, 0x68, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xba, 0x0e, 0xce, 0x79, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x6f, 0x70, 0x96, 0x3d, 0xde, 0x60, 0xf0, 0x4e, 0x6e, 0x30, 0xde, 0x74, 0x36, 0xec, 0x15, 0x6e, 0x48, 0x1d, 0x6c, 0x50, 0x2e, 0xf6, 0x6c, 0x70, 0xce, 0x4c, 0xde, 0xe0, 0x54, 0x8e, 0xbc, 0x04, 0x92, 0xfb, 0xff, 0x97, 0x40, 0xf3, 0xfd, 0xff, 0x1b, 0xa4, 0x27, 0xd4, 0x1c, 0x24, 0x40, 0x8e, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xc0, 0xf9, 0x7f, 0x1c, 0x3a, 0x48, 0x8b, 0x83, 0x3e, 0x88, 0x3d, 0x4a, 0x9a, 0xe3, 0xdb, 0x41, 0xec, 0x51, 0xd2, 0x1c, 0xdf, 0x06, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x31, 0x1c, 0x04, 0x8b, 0xc3, 0x2e, 0xdc, 0x86, 0x54, 0xcd, 0x04, 0x8e, 0xfb, 0xff, 0x0b, 0x82, 0x05, 0xc9, 0x30, 0x07, 0xa7, 0x33, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0x20, 0xd9, 0xab, 0xe5, 0x90, 0x3a, 0x38, 0x48, 0xcc, 0x1b, 0x39, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x78, 0x07, 0x71, 0x51, 0x74, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xf4, 0xbe, 0x83, 0xb8, 0x28, 0xba, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x48, 0xaf, 0x1c, 0xc4, 0x63, 0xd6, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xe0, 0x9c, 0x99, 0x7c, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xda, 0xbf, 0x71, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf6, 0x0a, 0x0f, 0xce, 0xb2, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe2, 0x83, 0x71, 0x06, 0x7d, 0x90, 0x5c, 0xfa, 0x70, 0x7c, 0x3b, 0xbe, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x00, 0x5d, 0x98, 0xdc, 0xd9, 0x9b, 0x9b, 0xdc, 0x60, 0x18, 0xfa, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x0e, 0x82, 0x0d, 0x1a, 0xb9, 0x5e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xfc, 0xf6, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x13, 0xc0, 0x4b, 0x9d, 0xdb, 0x5c, 0x1d, 0x1c, 0xdc, 0x9b, 0x1c, 0x5d, 0x19, 0x59, 0x8b, 0x5d, 0x99, 0xdc, 0x5c, 0xda, 0x9b, 0xbb, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x0f, 0x56, 0xb5, 0xa1, 0x6e, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0xcd, 0xc1, 0x3b, 0x94, 0xae, 0x37, 0x4c, 0xdc, 0x06, 0x91, 0xb2, 0x8e, 0x73, 0x10, 0x29, 0xeb, 0x38, 0xc3, 0x6f, 0x3c, 0x5f, 0x3c, 0x88, 0xd5, 0x74, 0x9c, 0x0d, 0x9d, 0xd4, 0xc6, 0x0d, 0xde, 0xa1, 0x74, 0x3d, 0x18, 0x84, 0xcd, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0x9c, 0x62, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x70, 0x1b, 0x14, 0x00, 0x50, 0x83, 0x60, 0x83, 0x88, 0x89, 0xb6, 0x39, 0x34, 0x6a, 0x59, 0x10, 0x2c, 0x08, 0x36, 0x78, 0x21, 0xb5, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x76, 0x34, 0x5c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x24, 0x76, 0x7d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xb2, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0x55, 0xa7, 0x83, 0xb3, 0x97, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x74, 0x90, 0x08, 0xc8, 0x7d, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x0d, 0x5a, 0xce, 0xc1, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xa7, 0xb2, 0x38, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xdb, 0xd8, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xc6, 0xf3, 0xc3, 0x6f, 0x3c, 0x3f, 0x88, 0x5a, 0x5f, 0x9b, 0xe3, 0xd0, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0xf0, 0x0b, 0xa2, 0x85, 0x0c, 0x82, 0x05, 0xc9, 0xa0, 0xef, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0xd8, 0x60, 0xe0, 0x87, 0x6c, 0x50, 0x90, 0xed, 0x6c, 0x70, 0x20, 0xe2, 0x1f, 0x7e, 0xe3, 0xf9, 0xc1, 0x62, 0x00, 0xa2, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x42, 0x06, 0xc1, 0x06, 0x51, 0xb0, 0x8f, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0xd8, 0x60, 0x6c, 0xb8, 0x6e, 0x50, 0xa2, 0xe1, 0x6c, 0x70, 0x38, 0x29, 0x3e, 0x28, 0x55, 0x80, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0x19, 0x04, 0x1b, 0x44, 0xc1, 0x3e, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0x60, 0x43, 0xe3, 0xf9, 0x0d, 0x86, 0xec, 0xf9, 0x06, 0xe7, 0x9a, 0xe2, 0x83, 0xc4, 0xf9, 0x8f, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x42, 0x06, 0xc1, 0x06, 0x51, 0xb0, 0x8f, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0xd8, 0x60, 0x28, 0x16, 0x6d, 0x30, 0xae, 0xd1, 0x37, 0x38, 0xeb, 0xe5, 0x1f, 0x94, 0x8b, 0x3e, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x85, 0x0c, 0x82, 0x0d, 0xa2, 0x60, 0x1f, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0xb0, 0xc1, 0xc0, 0x0f, 0xd9, 0xa0, 0x44, 0xc3, 0xd9, 0xe0, 0x5c, 0x53, 0x7c, 0x50, 0x2e, 0xfa, 0x1c, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0x32, 0x08, 0x36, 0x88, 0x82, 0x7d, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0x06, 0x63, 0xc3, 0x75, 0x83, 0x21, 0x7b, 0xbe, 0xc1, 0x59, 0x2f, 0xff, 0x20, 0x72, 0xf9, 0x71, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0x19, 0x04, 0x1b, 0x44, 0xc1, 0x3e, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0x60, 0x43, 0xe3, 0xf9, 0x0d, 0xc6, 0x35, 0xfa, 0x06, 0x07, 0x22, 0xfe, 0x83, 0x52, 0x05, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb4, 0x90, 0x41, 0xb0, 0x41, 0x14, 0xec, 0xe3, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x36, 0x18, 0x8a, 0x45, 0x1b, 0x14, 0x64, 0x3b, 0x1b, 0x1c, 0x4e, 0x8a, 0x0f, 0x12, 0xe7, 0x3f, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0x19, 0x04, 0x1b, 0xb4, 0xc9, 0xc6, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xd6, 0xbe, 0x83, 0x63, 0x56, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0x03, 0x22, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0xc0, 0xaa, 0xd3, 0xc1, 0x31, 0xab, 0xf8, 0x60, 0x28, 0x16, 0x1d, 0x87, 0x0e, 0x0e, 0x44, 0xfc, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0x26, 0x1b, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0xdc, 0xf5, 0xf7, 0xbe, 0x83, 0x63, 0x56, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x72, 0x30, 0xae, 0xd1, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x9c, 0x30, 0x8f, 0x0f, 0x12, 0x6f, 0x82, 0x06, 0xc1, 0x82, 0x64, 0x20, 0x4c, 0x07, 0xe7, 0xbc, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xf6, 0x7c, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xe2, 0x40, 0xb2, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x98, 0xe1, 0x3e, 0x08, 0x4c, 0xec, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x71, 0x20, 0x59, 0x73, 0x90, 0xaa, 0xd6, 0x70, 0x1c, 0x3a, 0x1e, 0x1f, 0x87, 0x0e, 0xa7, 0xd8, 0xf1, 0x78, 0x10, 0x6c, 0x50, 0x50, 0x8b, 0x2d, 0x6e, 0x10, 0xdf, 0xcc, 0x37, 0x83, 0x60, 0x83, 0x48, 0x7b, 0xb4, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x86, 0xdf, 0x78, 0xbe, 0x41, 0xdc, 0x3e, 0xdf, 0x6c, 0xb0, 0x6e, 0x20, 0xe8, 0x10, 0xc3, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0x49, 0x6f, 0x77, 0x71, 0xd8, 0x0d, 0xde, 0x71, 0xa0, 0xb3, 0x21, 0x86, 0xc3, 0x6e, 0xf0, 0x64, 0x06, 0x9d, 0x0d, 0x47, 0xfb, 0xb0, 0x1b, 0x44, 0x47, 0x23, 0xce, 0x86, 0x56, 0xe2, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x0f, 0x9e, 0x02, 0x7d, 0x74, 0x70, 0xe4, 0x29, 0x3e, 0x1e, 0x0f, 0x82, 0x0d, 0x96, 0x85, 0xc1, 0x2c, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x51, 0xa7, 0x6f, 0x73, 0x90, 0x28, 0xe6, 0x31, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0xd1, 0x01, 0x91, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x2f, 0x7b, 0xa0, 0x39, 0x28, 0xd1, 0x70, 0x8e, 0x43, 0xc3, 0x2f, 0x88, 0x16, 0x94, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xa1, 0x83, 0x92, 0xa1, 0x69, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xa4, 0xf8, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x8c, 0xb1, 0xa7, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x91, 0xe0, 0x32, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x1a, 0xcf, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x87, 0xec, 0xc5, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x1d, 0xa4, 0x17, 0x5d, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x02, 0x71, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0x43, 0x07, 0x23, 0x24, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0xd9, 0x20, 0x35, 0xec, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xc8, 0x79, 0xe6, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xca, 0xec, 0x1c, 0x92, 0x1d, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x02, 0x61, 0x1f, 0x04, 0x1b, 0x44, 0x6d, 0x49, 0xce, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x59, 0xbe, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x86, 0x7d, 0x46, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x44, 0x82, 0xcb, 0x0c, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x22, 0x36, 0x25, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x3a, 0x68, 0x7b, 0xf5, 0x65, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xa5, 0xcc, 0xce, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0x5c, 0x1f, 0x04, 0x1b, 0xc4, 0x6d, 0x4b, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0x41, 0x1c, 0xba, 0xe1, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x39, 0xcf, 0x1c, 0x07, 0x29, 0xea, 0x22, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x1b, 0xc4, 0x56, 0x49, 0xce, 0xf0, 0x0b, 0xa2, 0x05, 0xe2, 0x3e, 0x08, 0x36, 0x88, 0xdb, 0x96, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0x83, 0xd4, 0x0e, 0x90, 0x83, 0xe8, 0x79, 0xc9, 0x39, 0x0e, 0x1d, 0x8f, 0x87, 0xdf, 0x20, 0x2a, 0x62, 0x72, 0x86, 0x5f, 0x10, 0x2d, 0xb8, 0x3e, 0x08, 0x36, 0x88, 0xdb, 0x96, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0x83, 0xc5, 0x84, 0x27, 0x07, 0x71, 0xac, 0x93, 0x73, 0x1c, 0x3a, 0x1e, 0x6f, 0x88, 0xff, 0x86, 0x16, 0x40, 0x07, 0x2d, 0x8c, 0xbb, 0x1c, 0x8f, 0x07, 0xc1, 0x06, 0x05, 0xb4, 0xe0, 0xe2, 0x20, 0x58, 0x5c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0x5a, 0xce, 0xc1, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x5c, 0x57, 0xcb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x64, 0xed, 0x0e, 0x82, 0x14, 0xff, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x0d, 0xe3, 0x32, 0x08, 0x36, 0x88, 0x93, 0x6c, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x18, 0xd1, 0x76, 0x07, 0x41, 0x8a, 0x7f, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x22, 0x45, 0xc1, 0xe6, 0xe0, 0xf5, 0x5f, 0x11, 0xc7, 0xe3, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0xa4, 0x66, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x06, 0x0b, 0x33, 0xf9, 0x17, 0x04, 0x1b, 0x94, 0x43, 0x49, 0x07, 0x07, 0xd0, 0xf4, 0x0d, 0x56, 0x49, 0xf5, 0x0f, 0x82, 0x0d, 0xca, 0xa1, 0xa4, 0x41, 0x32, 0xe4, 0xa0, 0xd9, 0xf8, 0x98, 0xe3, 0xd0, 0xf0, 0x0b, 0xa2, 0x05, 0xe5, 0x83, 0x60, 0x83, 0xc4, 0x96, 0x93, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x21, 0x9f, 0x7d, 0x88, 0xe6, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0x82, 0x68, 0x41, 0xf9, 0x20, 0xd8, 0x20, 0xb1, 0xe5, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x91, 0xab, 0x70, 0x68, 0x24, 0x78, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0x20, 0x5a, 0x50, 0x3e, 0x08, 0x36, 0x48, 0x6c, 0x39, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0xe6, 0x9e, 0x71, 0xe8, 0xa4, 0x76, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x12, 0x5b, 0x4e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0x7a, 0x2b, 0x1c, 0x8c, 0xcc, 0xde, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf0, 0x84, 0xc9, 0x9d, 0xbd, 0xb9, 0x07, 0x6b, 0xc2, 0x77, 0x8e, 0xc7, 0x6b, 0x38, 0xc5, 0x56, 0x10, 0x2c, 0x2e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x96, 0x1d, 0xcd, 0x0f, 0x89, 0xd6, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x8e, 0xf6, 0x41, 0xb0, 0x41, 0x92, 0xb1, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xfc, 0x87, 0xdf, 0x78, 0xbe, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xca, 0xd3, 0xc1, 0x31, 0xab, 0x78, 0x90, 0x0c, 0x73, 0xd8, 0xb3, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x88, 0xe6, 0xc1, 0xd8, 0x70, 0x3d, 0x0e, 0x1d, 0x84, 0x00, 0xf8, 0x71, 0xe8, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0xa8, 0xd3, 0xb7, 0x19, 0x24, 0x83, 0xb2, 0x83, 0x54, 0xbe, 0x96, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0x5d, 0xb8, 0x05, 0xc1, 0x06, 0x91, 0x1e, 0x79, 0x73, 0x68, 0xd4, 0x72, 0x90, 0xe6, 0xd6, 0xb2, 0x20, 0xd8, 0xa0, 0x05, 0x93, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x83, 0x38, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x43, 0xa5, 0x1c, 0x07, 0xe3, 0x38, 0xe4, 0x38, 0x74, 0x10, 0xcd, 0x5c, 0x39, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0xbf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x85, 0x5f, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xce, 0xaa, 0x43, 0xb6, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x81, 0x88, 0x7f, 0x83, 0x82, 0x6c, 0xe7, 0x20, 0x71, 0xfe, 0xe3, 0x38, 0x34, 0xfc, 0x82, 0x68, 0x41, 0xfd, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xca, 0xd3, 0x04, 0xc6, 0xff, 0xdf, 0x20, 0x19, 0xfc, 0x1b, 0x44, 0x0b, 0x7b, 0x70, 0x20, 0xe2, 0x3f, 0x0e, 0x1d, 0x8c, 0x84, 0xd5, 0x41, 0xb4, 0x20, 0x1e, 0x04, 0x0b, 0x82, 0x0d, 0x62, 0x2d, 0x2c, 0xe7, 0x20, 0x21, 0xaf, 0xe5, 0x60, 0x98, 0x85, 0x1f, 0x8f, 0x07, 0xc1, 0x06, 0x71, 0x34, 0x96, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xb2, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb1, 0xe1, 0xba, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe9, 0x67, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0xc1, 0x28, 0x3f, 0x39, 0x18, 0x09, 0xab, 0xc7, 0xa1, 0xc3, 0x5e, 0xe1, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x4f, 0x56, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x88, 0x86, 0xaf, 0x9c, 0xe1, 0x37, 0x88, 0x79, 0xb0, 0x9c, 0x41, 0xb0, 0x41, 0x1c, 0x8d, 0xe5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xae, 0xb2, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0x83, 0x08, 0x3a, 0xcb, 0x39, 0xec, 0x15, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xf0, 0x65, 0xee, 0x21, 0xb5, 0x74, 0x3c, 0x3e, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xbf, 0x6c, 0x4c, 0x6c, 0x3c, 0xa4, 0x96, 0x8e, 0xc7, 0x2b, 0xfc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0xd8, 0x0d, 0xbb, 0x06, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0xfe, 0xef, 0x90, 0x5c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xc8, 0xda, 0x6d, 0x50, 0x10, 0x10, 0x1d, 0x8c, 0x0d, 0xd7, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x6c, 0x10, 0x75, 0x70, 0x39, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x59, 0xbb, 0x0d, 0x0a, 0x02, 0xa2, 0x83, 0x81, 0x1f, 0x72, 0x1c, 0x1a, 0x04, 0x0b, 0x92, 0x81, 0xfc, 0xdf, 0x61, 0x85, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0xfe, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0xc3, 0x6e, 0x50, 0x54, 0x29, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0x44, 0x86, 0x8c, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x74, 0x10, 0xf2, 0xd9, 0xc7, 0xa1, 0x61, 0x17, 0x04, 0x1b, 0x44, 0xf1, 0x81, 0xcd, 0x41, 0x6c, 0x02, 0xcb, 0xac, 0xc1, 0xf8, 0x97, 0x1c, 0x04, 0x1b, 0xc4, 0x70, 0x3d, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x31, 0xf6, 0x74, 0xd8, 0x2b, 0x3c, 0x0e, 0x6d, 0x50, 0x46, 0x10, 0x0d, 0x82, 0x0d, 0x62, 0xb8, 0x9e, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xed, 0xdc, 0x9a, 0x1f, 0x0c, 0xb3, 0xf0, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0x47, 0x3a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x92, 0x05, 0x16, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x50, 0x1e, 0xc4, 0x0d, 0xa2, 0x85, 0x1d, 0x04, 0x1b, 0x44, 0xce, 0x33, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x8e, 0xde, 0xe6, 0x87, 0x46, 0x2d, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xfc, 0xdf, 0x21, 0x5b, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xec, 0xd8, 0x60, 0xe0, 0x87, 0x1c, 0x84, 0x7c, 0xf6, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0xbe, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x9f, 0x93, 0xb1, 0x1b, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0x05, 0xc1, 0x06, 0x91, 0x85, 0x5f, 0x73, 0x48, 0xc3, 0x0d, 0xbb, 0x41, 0x90, 0x78, 0x2f, 0x08, 0x36, 0x58, 0x5d, 0x18, 0x71, 0x50, 0x72, 0xe6, 0x1c, 0x0c, 0xd3, 0x89, 0x41, 0xb0, 0xb0, 0x0b, 0xbb, 0x70, 0x0b, 0x82, 0x0d, 0x1a, 0xad, 0x85, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x18, 0x97, 0x83, 0xd4, 0x0e, 0x90, 0xe3, 0xd0, 0x21, 0x86, 0x0b, 0xbb, 0xb0, 0x0b, 0x77, 0xd0, 0xae, 0x15, 0xd4, 0x61, 0x7d, 0xf3, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x1b, 0x04, 0x4e, 0xf3, 0x86, 0xa3, 0x7d, 0x10, 0x6c, 0x70, 0xc2, 0x44, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x18, 0x97, 0x43, 0xc3, 0xaf, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x36, 0x48, 0x97, 0x29, 0x1a, 0x24, 0xc3, 0x0d, 0xa2, 0x85, 0xdd, 0x90, 0xec, 0x38, 0x18, 0xf8, 0x21, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x91, 0xf3, 0xcc, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x30, 0x2e, 0xc3, 0x6f, 0x3c, 0x1f, 0x76, 0x83, 0x05, 0xb0, 0x3e, 0x1b, 0x8c, 0x9f, 0xae, 0x41, 0xb6, 0xc1, 0x52, 0x8e, 0xa0, 0x83, 0xa1, 0xd9, 0x75, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0x3c, 0x1d, 0x9c, 0xce, 0x90, 0x0f, 0x22, 0x2b, 0x2b, 0xe7, 0x60, 0x60, 0x8b, 0x1e, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0xdf, 0x16, 0x36, 0x16, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0xf8, 0x05, 0xc1, 0xc2, 0xaf, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0x90, 0xad, 0x38, 0x74, 0x31, 0x39, 0x38, 0xad, 0xe0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0x10, 0xf1, 0x2f, 0xfc, 0xc6, 0xf3, 0x31, 0x98, 0x8d, 0x83, 0xa1, 0x58, 0x74, 0x1c, 0x3a, 0x88, 0x2e, 0x7d, 0x9b, 0x0d, 0xa2, 0xf2, 0x2c, 0x67, 0x41, 0x32, 0x58, 0x1d, 0x0c, 0xd6, 0xd8, 0x05, 0xc9, 0x60, 0x77, 0x1c, 0x3a, 0x78, 0x84, 0xf8, 0xc0, 0x20, 0x58, 0x1c, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x71, 0x43, 0x0c, 0x37, 0x58, 0x16, 0x06, 0xb3, 0xc1, 0xb2, 0x30, 0x98, 0x83, 0xd6, 0x16, 0xe9, 0x8f, 0xc7, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xc5, 0x15, 0x17, 0x03, 0xc0, 0xfe, 0xc7, 0xf8, 0xee, 0xf6, 0xe4, 0xd7, 0xde, 0x8a, 0x61, 0x02, 0xce, 0x56, 0xfc, 0xaf, 0x57, 0xed, 0x94, 0x05, 0x93, 0xfb, 0xf4, 0xb3, 0x8e, 0xe0, 0x5b, 0xa9, 0x45, 0x5f, 0x39, 0x49, 0xe5, 0x80, 0x6f, 0xfb, 0x27, 0x4d, 0x6c, 0x7e, 0xee, 0x99, 0x69, 0x4a, 0xcb, 0xe3, 0xe3, 0xb0, 0x63, 0x2a, 0x08, 0x8e, 0x47, 0x86, 0x31, 0x2c, 0x0b, 0x34, 0x0f, 0x24, 0x00, 0xc5, 0xd7, 0x4f, 0x64, 0xeb, 0x12, 0x06, 0x59, 0x34, 0x36, 0xdc, 0xb4, 0x40, 0xa5, 0x76, 0xac, 0x67, 0x53, 0xc6, 0x5f, 0x08, 0xa7, 0xa2, 0x01, 0xda, 0x41, 0xf8, 0x63, 0xb7, 0xd4, 0x96, 0x7d, 0x73, 0x94, 0x98, 0xb0, 0x9e, 0xa1, 0xdf, 0x55, 0xf7, 0x87, 0x9a, 0x66, 0x0a, 0x8b, 0xf2, 0x05, 0xfe, 0xa0, 0x78, 0x3e, 0x51, 0xa3, 0x46, 0x81, 0x1e, 0x25, 0x3b, 0x71, 0xea, 0x79, 0x6d, 0xb5, 0x43, 0x20, 0xfe, 0xe7, 0xa5, 0x9b, 0x19, 0x26, 0xd8, 0xbf, 0x2e, 0x89, 0x2e, 0x88, 0x4f, 0xfd, 0x7a, 0xc8, 0xba, 0x32, 0xe6, 0xc0, 0x02, 0x9f, 0xb8, 0x45, 0x54, 0x20, 0x11, 0x8d, 0xdc, 0x71, 0x29, 0xbc, 0xbd, 0x16, 0xb6, 0xc1, 0x65, 0x74, 0x14, 0x92, 0x0c, 0x48, 0xb8, 0x84, 0xa7, 0x59, 0xc5, 0x22, 0x2b, 0xc9, 0xf3, 0xce, 0x91, 0x6f, 0xda, 0x1a, 0xab, 0x9d, 0x52, 0xd9, 0xac, 0xe8, 0xd5, 0xcb, 0xf4, 0x5c, 0x11, 0x74, 0xf1, 0x4a, 0x5c, 0x38, 0x4c, 0x69, 0x8d, 0xd1, 0xbb, 0xe9, 0x3e, 0x96, 0x7a, 0x17, 0x15, 0xe1, 0x7c, 0x6a, 0xcd, 0x90, 0x06, 0xec, 0x1d, 0xc2, 0x6a, 0xae, 0x72, 0x0d, 0x83, 0x3b, 0x3c, 0xc3, 0xf1, 0x31, 0x23, 0xd2, 0xb2, 0x1d, 0x29, 0x37, 0x3d, 0x0e, 0xd3, 0x9d, 0xab, 0x50, 0xbe, 0x19, 0x43, 0x13, 0x1b, 0x7e, 0xcd, 0x85, 0xd0, 0x82, 0x32, 0x5b, 0x1e, 0x60, 0xa9, 0x76, 0x6d, 0x71, 0xc6, 0x21, 0xd1, 0xc5, 0x21, 0x07, 0xeb, 0xac, 0x4a, 0x0e, 0x86, 0xa6, 0xd5, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xd8, 0x20, 0x45, 0x28, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x6c, 0x30, 0x48, 0x5e, 0x0e, 0xce, 0xf5, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0xff, 0x52, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x0e, 0x16, 0x1b, 0xa1, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x10, 0x85, 0xe9, 0x21, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x06, 0xa3, 0x24, 0xf1, 0x90, 0x98, 0x39, 0x0e, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xe2, 0x62, 0x00, 0xf8, 0xbf, 0x54, 0x82, 0x5a, 0x35, 0x8c, 0x4d, 0x29, 0xce, 0x2f, 0xd0, 0xa8, 0x67, 0xe0, 0xfc, 0xf5, 0x3e, 0xdf, 0x78, 0x8e, 0xe0, 0xe6, 0xcb, 0xff, 0x21, 0x8d, 0xe3, 0x10, 0x11, 0xb1, 0x77, 0xfa, 0x32, 0xd5, 0x1e, 0xa5, 0x8c, 0xa9, 0xf0, 0x48, 0x8f, 0x3b, 0x53, 0xe5, 0x82, 0x90, 0xfe, 0xb0, 0x13, 0x82, 0x4b, 0xa8, 0x19, 0x4a, 0x36, 0x89, 0xac, 0xdd, 0x96, 0x68, 0x52, 0xdb, 0x62, 0x74, 0x89, 0x1c, 0xbe, 0x3d, 0x99, 0x21, 0x1a, 0xa6, 0x05, 0x35, 0x29, 0x17, 0x73, 0x57, 0x99, 0xad, 0x24, 0x1b, 0x1c, 0x12, 0x54, 0x7f, 0x7b, 0xae, 0xb6, 0x57, 0x85, 0xd1, 0xd5, 0x69, 0x63, 0x27, 0x21, 0x24, 0xf6, 0x2a, 0x00, 0x23, 0xef, 0xb4, 0xc2, 0x3d, 0x39, 0x56, 0x01, 0xee, 0x6c, 0x91, 0x01, 0x34, 0x8b, 0xc7, 0xa3, 0xf2, 0xcf, 0x83, 0x40, 0xf0, 0x6b, 0xef, 0x40, 0xc0, 0x84, 0xe2, 0x9a, 0x4e, 0x64, 0x44, 0xd0, 0xd3, 0x19, 0xb7, 0xfa, 0xa5, 0xfc, 0xb3, 0x33, 0x3c, 0xad, 0xf9, 0x9c, 0x25, 0x2b, 0x9d, 0xc8, 0x79, 0x6b, 0x4d, 0xa1, 0x78, 0xfe, 0x0d, 0x3a, 0x47, 0xdd, 0xb7, 0xdb, 0x51, 0xbc, 0x46, 0x5c, 0x47, 0x4a, 0x71, 0xe2, 0xdb, 0xad, 0x98, 0x83, 0x2a, 0x86, 0xef, 0x06, 0xbf, 0x95, 0xcf, 0x92, 0xb1, 0x74, 0x1e, 0x88, 0xe6, 0x36, 0xb0, 0x3f, 0x5e, 0xb3, 0x16, 0xfd, 0x47, 0x37, 0xea, 0x0c, 0xe2, 0xc1, 0x71, 0x4c, 0xac, 0x04, 0x44, 0xd6, 0x09, 0x20, 0xfb, 0x17, 0x58, 0xd4, 0x5f, 0x6a, 0x46, 0xad, 0x52, 0x43, 0x4b, 0xb9, 0xde, 0xe7, 0x64, 0x32, 0xe7, 0x3b, 0x28, 0xf8, 0x4e, 0x93, 0xab, 0x4a, 0x3d, 0x2c, 0xf2, 0xfa, 0x2e, 0xcf, 0xe0, 0x54, 0x66, 0xd8, 0xc5, 0x0a, 0x81, 0x9f, 0xee, 0x9d, 0xb5, 0x49, 0x78, 0x1a, 0xc5, 0x58, 0x55, 0x08, 0x43, 0xbf, 0x38, 0x43, 0x87, 0xe4, 0xe2, 0x20, 0x1e, 0x64, 0x83, 0x34, 0x24, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0x4d, 0xde, 0xae, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0xb4, 0x31, 0x76, 0x48, 0xd5, 0x1c, 0x87, 0x8e, 0xc7, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xa3, 0x74, 0x70, 0xae, 0x3f, 0x3e, 0x18, 0xf5, 0x19, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x68, 0xeb, 0x74, 0x70, 0xa0, 0x48, 0x3e, 0x18, 0x77, 0x08, 0x83, 0x60, 0x71, 0xd8, 0x85, 0x3b, 0x78, 0x75, 0x05, 0xc5, 0x86, 0x54, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0xc4, 0x83, 0x60, 0x83, 0x27, 0x19, 0x02, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x5c, 0xfd, 0xdf, 0xfb, 0x0e, 0x8e, 0x19, 0xcb, 0x07, 0x6b, 0xcf, 0x5e, 0x8e, 0x43, 0x87, 0x1d, 0x93, 0xe3, 0xdb, 0xf1, 0x78, 0x10, 0x6c, 0x50, 0x40, 0x0b, 0x2e, 0x0e, 0x82, 0x0d, 0x96, 0x85, 0xc1, 0x0c, 0x82, 0xc5, 0x61, 0x37, 0x24, 0x02, 0x36, 0xc4, 0x70, 0xf8, 0x05, 0xd1, 0x82, 0x70, 0x10, 0x6c, 0x10, 0x85, 0xe9, 0x21, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x06, 0xe3, 0x0d, 0xe9, 0xa0, 0x84, 0x91, 0x38, 0x0e, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x98, 0x0e, 0x82, 0x0d, 0xa2, 0x30, 0x3d, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0xda, 0x60, 0x34, 0x27, 0x1d, 0x94, 0x30, 0x12, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0xb5, 0x83, 0x60, 0x83, 0x28, 0x4c, 0x0f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x16, 0x7e, 0xe3, 0xf9, 0x78, 0x10, 0xd5, 0xbf, 0x39, 0x07, 0x25, 0x8c, 0xc4, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0x82, 0x68, 0x41, 0xef, 0x20, 0xd8, 0x20, 0x0a, 0xd3, 0x43, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x85, 0xdf, 0x78, 0x3e, 0x0e, 0xcd, 0x83, 0x12, 0x46, 0xe2, 0x38, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x90, 0x88, 0xa8, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xab, 0xf3, 0x37, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x1b, 0x44, 0xce, 0x71, 0xce, 0xc1, 0x69, 0x43, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xd5, 0x10, 0xcd, 0x43, 0x0b, 0xa0, 0x35, 0x34, 0x12, 0x3c, 0x34, 0x1d, 0x5a, 0x43, 0x27, 0xb5, 0x83, 0x64, 0x0d, 0x84, 0x0d, 0x46, 0x66, 0xef, 0x41, 0xa2, 0xa7, 0xc2, 0x6a, 0x88, 0xe6, 0x41, 0xa2, 0xa7, 0xc2, 0x1a, 0x1a, 0x09, 0x1e, 0x5a, 0x00, 0xad, 0xa1, 0x93, 0xda, 0xa1, 0xe9, 0xd0, 0x06, 0x23, 0xb3, 0xf7, 0x20, 0x59, 0x03, 0x61, 0x35, 0x44, 0xf3, 0x20, 0x59, 0x03, 0x61, 0x0d, 0x8d, 0x04, 0x0f, 0x12, 0x3d, 0x15, 0xd6, 0xd0, 0x49, 0xed, 0xd0, 0x02, 0x68, 0x83, 0x91, 0xd9, 0x7b, 0x68, 0x3a, 0xb4, 0x1a, 0xa2, 0x79, 0x68, 0x3a, 0xb4, 0x86, 0x46, 0x82, 0x07, 0xc9, 0x1a, 0x08, 0x6b, 0xe8, 0xa4, 0x76, 0x90, 0xe8, 0xa9, 0xb0, 0xc1, 0xc8, 0xec, 0x3d, 0xb4, 0x00, 0x3a, 0xc4, 0xf0, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xb8, 0xe1, 0x14, 0x3b, 0x78, 0xb6, 0xe9, 0xc5, 0xe2, 0x20, 0xd8, 0xe0, 0x44, 0x11, 0x3d, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x67, 0xc6, 0xe5, 0x43, 0x1a, 0x6e, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0x66, 0x5c, 0x3e, 0x34, 0x05, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0x19, 0x97, 0x0f, 0x9d, 0x88, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x99, 0x71, 0xf9, 0xd0, 0xfd, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0x51, 0x62, 0x75, 0x7c, 0x3b, 0x1e, 0x1f, 0x8f, 0x17, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0xd6, 0x90, 0x3a, 0xd8, 0x10, 0xc3, 0x85, 0xdf, 0x60, 0x70, 0x57, 0x1e, 0x94, 0x0c, 0x4d, 0x07, 0x25, 0x41, 0xc3, 0x20, 0x58, 0x1c, 0x76, 0xe1, 0x36, 0x18, 0x99, 0xbd, 0x83, 0x60, 0x41, 0x32, 0x08, 0x0e, 0xd2, 0x82, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x44, 0x83, 0xdf, 0xcd, 0xf0, 0x1b, 0xcf, 0x87, 0x39, 0x28, 0x1b, 0x84, 0x8e, 0x43, 0x1b, 0xa2, 0x39, 0xfc, 0x82, 0x68, 0xc1, 0x74, 0x10, 0x6c, 0x10, 0xe1, 0x29, 0x17, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x4a, 0x34, 0x9c, 0x85, 0xdf, 0x78, 0xbe, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x57, 0x0e, 0xd2, 0x82, 0x46, 0x0e, 0xdd, 0x8f, 0x0e, 0x47, 0xfb, 0x21, 0x6b, 0x77, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x83, 0x60, 0x83, 0xd8, 0x83, 0xa6, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x96, 0x74, 0x10, 0xc3, 0xe1, 0x34, 0xc7, 0xa1, 0x85, 0x5f, 0x10, 0x2d, 0x98, 0x0e, 0x82, 0x0d, 0x16, 0xbf, 0x8e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x07, 0xc9, 0x89, 0x22, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0xd3, 0x41, 0xb0, 0x41, 0x3b, 0xb7, 0xe6, 0x07, 0x29, 0x55, 0x22, 0xc7, 0xe3, 0x41, 0xb4, 0x60, 0x3a, 0x08, 0x36, 0x48, 0x69, 0x51, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xe8, 0x21, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x3a, 0x5e, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0x7d, 0x3d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x38, 0x57, 0x0e, 0xd2, 0x82, 0x46, 0x0e, 0x22, 0xc1, 0x3d, 0xe7, 0x38, 0x74, 0x68, 0x3c, 0x7f, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0x5d, 0xd8, 0x05, 0xc1, 0x06, 0x31, 0xb0, 0x77, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x86, 0xc3, 0x69, 0x0e, 0x86, 0xec, 0xf9, 0x71, 0x68, 0x61, 0x17, 0x6e, 0x83, 0x32, 0x6e, 0xe7, 0x20, 0x46, 0xdb, 0x73, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x41, 0x9c, 0xc3, 0xe7, 0x1c, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x98, 0x0e, 0x82, 0x0d, 0x52, 0x5a, 0x54, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x7a, 0x08, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xe1, 0x29, 0x17, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x4a, 0x34, 0x9c, 0x85, 0xdf, 0x78, 0xbe, 0x20, 0x58, 0x90, 0x0c, 0xfe, 0x1c, 0xa4, 0x05, 0x8d, 0x1c, 0x44, 0x82, 0x7b, 0xce, 0xe1, 0x68, 0x3f, 0x64, 0xed, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0xe1, 0x20, 0x58, 0x90, 0x0c, 0x08, 0x7f, 0xa7, 0x83, 0x63, 0xc6, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x12, 0x0d, 0x67, 0xe1, 0x37, 0x9e, 0x6f, 0x30, 0x32, 0x7b, 0x0f, 0xd1, 0x5c, 0xf8, 0x8d, 0xe7, 0x07, 0x03, 0x96, 0xf7, 0x60, 0xe0, 0x87, 0x1c, 0x87, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd0, 0x3b, 0xcc, 0xc1, 0xc8, 0xec, 0x3d, 0x1e, 0x1f, 0xdf, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x6b, 0x38, 0xda, 0x37, 0xc4, 0x70, 0x43, 0x0c, 0x87, 0xdf, 0xa0, 0xad, 0x83, 0x93, 0x83, 0xd3, 0x0a, 0xee, 0x20, 0x58, 0x1c, 0x76, 0xe1, 0x36, 0x28, 0x1b, 0x84, 0x0e, 0xd1, 0xdc, 0xb0, 0x57, 0x38, 0xfc, 0x82, 0x68, 0x41, 0xed, 0x20, 0xd8, 0x20, 0xc2, 0x53, 0x2e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x8c, 0x6b, 0xf4, 0x83, 0xe4, 0xe3, 0xec, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x82, 0xda, 0x41, 0xb0, 0x20, 0x19, 0xb8, 0x9f, 0x0e, 0x8e, 0x19, 0xcb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x4a, 0x34, 0x9c, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x56, 0x13, 0x04, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0x7d, 0xa4, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x12, 0x0d, 0x67, 0x83, 0x82, 0x6c, 0xe7, 0xd0, 0xb8, 0xe8, 0x38, 0x74, 0x68, 0x96, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x98, 0x0e, 0x82, 0x0d, 0xa2, 0x95, 0x3f, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x04, 0xbd, 0xff, 0x0f, 0x59, 0xbb, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe6, 0x83, 0x60, 0x83, 0x68, 0xf4, 0xcf, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xae, 0xd1, 0x87, 0xdf, 0x78, 0xbe, 0x86, 0x68, 0x0e, 0x82, 0x0d, 0x22, 0x3c, 0xe5, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xb8, 0x46, 0xdf, 0x60, 0xcc, 0xdf, 0x1d, 0x04, 0x26, 0xf6, 0x71, 0x68, 0x83, 0x86, 0xbe, 0x60, 0xd6, 0xd0, 0x48, 0x70, 0x10, 0x6c, 0x10, 0xe1, 0x29, 0x17, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x35, 0xfa, 0xc2, 0x6f, 0x3c, 0xdf, 0x60, 0x44, 0xdb, 0x1d, 0x1a, 0x09, 0x1e, 0x04, 0x26, 0xf6, 0x71, 0xe8, 0x10, 0xc3, 0xe3, 0xd0, 0xc1, 0x58, 0xd8, 0x3e, 0xbe, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0x38, 0x08, 0x36, 0x68, 0xcb, 0xaa, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x3b, 0x5b, 0xfd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x9b, 0x80, 0x57, 0xac, 0xac, 0x25, 0xac, 0x6c, 0x6e, 0x1c, 0x7e, 0xe3, 0xf9, 0x78, 0x10, 0xf1, 0x16, 0x3a, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x42, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x76, 0x43, 0x1e, 0x6b, 0x43, 0x0c, 0x87, 0xdd, 0xb0, 0x6b, 0xb0, 0xe1, 0x14, 0x5b, 0x10, 0x6c, 0x90, 0xd2, 0xa2, 0x72, 0x70, 0x54, 0x71, 0x3e, 0x18, 0x69, 0x5d, 0xc7, 0xe3, 0x05, 0xc1, 0x0a, 0xbf, 0xc1, 0x03, 0xb8, 0x70, 0x8e, 0x6f, 0xc3, 0x2f, 0x08, 0x36, 0x88, 0x29, 0x89, 0x96, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x40, 0xf8, 0xee, 0x1c, 0x1c, 0x28, 0x92, 0x0f, 0xc6, 0x71, 0xc8, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x7c, 0x5b, 0x1c, 0x76, 0xc3, 0xae, 0xc1, 0x86, 0x18, 0x2e, 0x08, 0x36, 0x68, 0xe7, 0xd6, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0x87, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0xc1, 0x88, 0xb6, 0x3b, 0x0e, 0x1d, 0x8c, 0x58, 0x82, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x18, 0xda, 0xd0, 0x59, 0x1c, 0x04, 0x6b, 0x88, 0xe1, 0x86, 0x18, 0x0e, 0x92, 0x41, 0x74, 0x88, 0xe6, 0x20, 0x58, 0x1c, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0xa0, 0x74, 0x18, 0xda, 0xd0, 0x48, 0x70, 0x41, 0xb0, 0x20, 0x19, 0xb8, 0x9f, 0x0e, 0x5a, 0x73, 0xf0, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x1b, 0x0c, 0x92, 0x97, 0x83, 0xd6, 0x1c, 0xfc, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x36, 0x88, 0x9c, 0xe3, 0x9c, 0x83, 0xd6, 0x1c, 0xfc, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x60, 0xa1, 0xfd, 0xcd, 0xc2, 0x6f, 0x3c, 0x3f, 0x68, 0x34, 0x41, 0x69, 0xe1, 0x37, 0x9e, 0x6f, 0x68, 0x25, 0x7e, 0x68, 0xc6, 0xb3, 0xf0, 0x1b, 0xcf, 0x37, 0xf4, 0x27, 0x3f, 0x18, 0xa7, 0xca, 0x07, 0x03, 0x3f, 0xe4, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x36, 0x88, 0xe2, 0xa8, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0x83, 0x44, 0xbd, 0x8a, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0xfd, 0x1b, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x3a, 0x07, 0xf1, 0x98, 0x75, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xb8, 0xca, 0xba, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xc8, 0xd7, 0x1e, 0x92, 0x1d, 0xc7, 0xa1, 0x83, 0xf4, 0x84, 0x9a, 0xe3, 0xd0, 0xc1, 0x30, 0x86, 0x3d, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0xc1, 0xa8, 0xd7, 0x3e, 0xbe, 0x1d, 0x8f, 0x07, 0xc1, 0x1a, 0xc4, 0xd1, 0x86, 0xce, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x36, 0x58, 0x1f, 0xe9, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x44, 0xc3, 0xd9, 0x20, 0x1a, 0xfc, 0x6e, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xf0, 0x94, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x25, 0x1a, 0xce, 0xc2, 0x6f, 0x3c, 0x5f, 0x10, 0x6c, 0x10, 0x51, 0xe8, 0x39, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x83, 0xdd, 0x21, 0x9a, 0x87, 0xa6, 0x40, 0x07, 0xd1, 0xe0, 0x77, 0x73, 0x1c, 0x3a, 0x48, 0xbb, 0x60, 0x38, 0x74, 0x0c, 0x3b, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0x58, 0x61, 0x37, 0x64, 0xed, 0x36, 0x38, 0x07, 0x7c, 0x1f, 0xac, 0x05, 0x04, 0x58, 0x10, 0x6c, 0xd0, 0x5e, 0x99, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x12, 0x0d, 0x67, 0x83, 0xb4, 0x0b, 0x86, 0x43, 0xc3, 0xaf, 0xe3, 0xd0, 0xe1, 0x68, 0x1f, 0x7e, 0x41, 0xb4, 0x20, 0x1a, 0x04, 0x1b, 0x9c, 0x83, 0xbf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1a, 0x09, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0xee, 0xbe, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xcd, 0x83, 0xc8, 0x01, 0xcc, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x71, 0xd8, 0x85, 0xdb, 0x20, 0x1e, 0x19, 0x74, 0x0e, 0x82, 0xd2, 0x7b, 0xe1, 0x17, 0x44, 0x0b, 0xa6, 0x83, 0x60, 0x83, 0xf4, 0x71, 0xa2, 0x83, 0x31, 0x1a, 0x71, 0x3c, 0x1e, 0x7e, 0x41, 0xb4, 0x60, 0x3a, 0x08, 0x36, 0x38, 0x61, 0xa2, 0x1f, 0x8c, 0xd1, 0x88, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0xd3, 0x41, 0xb0, 0xc1, 0xe0, 0xae, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xe8, 0x21, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xac, 0x36, 0xdc, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x64, 0xed, 0x36, 0x28, 0x76, 0x79, 0x0e, 0xc6, 0xd8, 0xd3, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x81, 0xfb, 0xe9, 0x20, 0x2d, 0x68, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x89, 0x86, 0x73, 0xe8, 0x21, 0x74, 0x1c, 0x1a, 0x7e, 0x83, 0x48, 0xf1, 0xd1, 0x19, 0x7e, 0x83, 0x88, 0xf9, 0xd1, 0x19, 0x7e, 0x41, 0xb4, 0x60, 0x3a, 0x08, 0x16, 0x24, 0x83, 0xdd, 0x41, 0xc0, 0xfb, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xf4, 0x10, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0xcc, 0x0e, 0xd1, 0x3c, 0x0e, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x98, 0x0e, 0x82, 0x0d, 0x06, 0x77, 0xe5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x0f, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x62, 0xb5, 0xe1, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x6b, 0xb7, 0xa1, 0x63, 0xd8, 0xc1, 0x18, 0x7b, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xb0, 0x3d, 0x58, 0xc9, 0x29, 0x72, 0x3c, 0x3e, 0xbe, 0x1d, 0x8f, 0x8f, 0xc7, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0xc3, 0x6e, 0xd8, 0x35, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xef, 0x0e, 0xc9, 0xa5, 0x83, 0x48, 0x87, 0xcb, 0x19, 0x04, 0x0b, 0x82, 0x0d, 0x62, 0xa5, 0x49, 0xe7, 0x20, 0x26, 0xe5, 0x72, 0x06, 0xc1, 0x82, 0x64, 0xf0, 0xee, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0xc5, 0x61, 0x37, 0x28, 0xaa, 0x14, 0x36, 0x88, 0xc5, 0xba, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x50, 0x1e, 0xc4, 0x0d, 0xa2, 0x85, 0x1d, 0x04, 0x1b, 0x44, 0xce, 0x33, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x08, 0xf1, 0xcb, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xde, 0x1d, 0xb2, 0x15, 0x07, 0xb1, 0xfa, 0x97, 0x73, 0x1c, 0x3a, 0x1e, 0x1f, 0xdf, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xcf, 0xc9, 0xd8, 0x89, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x0b, 0xbf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xb0, 0x1b, 0x2c, 0x43, 0x35, 0xda, 0x90, 0x98, 0x1a, 0x04, 0x1b, 0x3c, 0x70, 0x57, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x62, 0xd7, 0xc7, 0x41, 0xf4, 0x61, 0xe1, 0x1c, 0x87, 0x06, 0xc1, 0xc2, 0x2f, 0x08, 0x36, 0x78, 0x85, 0x58, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0xf6, 0x3a, 0x57, 0x0e, 0xc6, 0x71, 0xc8, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x7c, 0x1b, 0x04, 0x1b, 0xa4, 0x0e, 0xa5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xd7, 0xe8, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0xc3, 0x6e, 0x10, 0x7c, 0xcc, 0x1b, 0x52, 0x07, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x02, 0xfe, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x75, 0x2a, 0x0d, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x82, 0x0d, 0x1a, 0xba, 0x76, 0x1f, 0x24, 0xc3, 0x1c, 0xb4, 0xa5, 0xd1, 0x72, 0xd8, 0xa8, 0x3d, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x81, 0xe9, 0x3f, 0xc4, 0x7f, 0x10, 0x6d, 0xd0, 0xaa, 0x4e, 0xca, 0x41, 0xe1, 0xc1, 0x77, 0x7c, 0x3b, 0x0e, 0x1d, 0x8f, 0x0f, 0x22, 0x19, 0x2d, 0x67, 0xf8, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0xe2, 0xc1, 0x4a, 0x67, 0x10, 0x6c, 0x10, 0x73, 0x58, 0x3a, 0x83, 0x60, 0x83, 0xd4, 0xa1, 0x94, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xe3, 0x1a, 0x7d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x82, 0x8f, 0x79, 0x43, 0xea, 0x60, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0x34, 0x74, 0xed, 0x3e, 0x48, 0x86, 0x3b, 0x68, 0x4b, 0xa3, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x02, 0xfe, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x75, 0x2a, 0x0d, 0x87, 0xf8, 0x1f, 0x87, 0x8e, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x60, 0xfa, 0x8f, 0x43, 0x07, 0xd1, 0x01, 0xa6, 0x73, 0x7c, 0x3b, 0x0e, 0x1d, 0x8f, 0x0f, 0x22, 0xb4, 0x2d, 0xe7, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xfc, 0x31, 0xb1, 0x31, 0xf1, 0x90, 0x5a, 0x3a, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0xe1, 0x17, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb0, 0x82, 0x60, 0x41, 0x32, 0xf0, 0xbe, 0xd3, 0xc1, 0xd9, 0xcb, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x81, 0x88, 0xff, 0x90, 0xec, 0x38, 0x0e, 0x0d, 0x82, 0x0d, 0xa2, 0x0d, 0xb5, 0xe3, 0x20, 0x9a, 0xd7, 0x74, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x22, 0xfa, 0xc0, 0x63, 0x90, 0x0c, 0x33, 0x88, 0x16, 0x76, 0xc3, 0xb8, 0x6c, 0x30, 0xae, 0xd1, 0x37, 0xb4, 0x00, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xb1, 0xec, 0x51, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0xe1, 0x37, 0x9e, 0x8f, 0x01, 0x04, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0x75, 0xa8, 0xfc, 0xc3, 0x2e, 0xdc, 0x82, 0x60, 0x83, 0x47, 0xa1, 0x56, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x64, 0xed, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0xfd, 0x29, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x18, 0xc3, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x36, 0x88, 0x9c, 0xe3, 0x9c, 0x83, 0x73, 0xde, 0xf1, 0xc1, 0x32, 0x78, 0xaf, 0xe3, 0xd0, 0x71, 0xe8, 0x10, 0xff, 0x83, 0x05, 0xe8, 0x2a, 0xc7, 0xe3, 0x83, 0x48, 0x46, 0xcb, 0x19, 0x7e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0xf8, 0x58, 0xd3, 0x19, 0x04, 0x0b, 0x82, 0x0d, 0xde, 0xcb, 0x88, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xcd, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5a, 0xce, 0xc1, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x22, 0xfe, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x0d, 0x22, 0xe7, 0x38, 0xe7, 0xe0, 0x74, 0x86, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x41, 0xb2, 0x91, 0xf5, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xda, 0x3a, 0x1d, 0x9c, 0xf3, 0x8e, 0x0f, 0x92, 0xf9, 0x1e, 0x36, 0xa4, 0x0e, 0x36, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x5c, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x37, 0x88, 0x16, 0x76, 0xc3, 0xda, 0xef, 0x06, 0xe3, 0x1a, 0x7d, 0x43, 0xea, 0x60, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x46, 0x26, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0xe0, 0x20, 0x22, 0xe1, 0x74, 0x8e, 0x43, 0xc7, 0xa1, 0x83, 0x91, 0xb0, 0x7a, 0x3c, 0x3e, 0x88, 0xd0, 0xb6, 0x9c, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xe7, 0xd2, 0xec, 0xc6, 0x43, 0x6a, 0xe9, 0x78, 0x3c, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xac, 0x7c, 0xe5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0xc8, 0x76, 0x36, 0x28, 0xc8, 0x76, 0x0e, 0xce, 0x35, 0xc5, 0xc7, 0xa1, 0xe1, 0x17, 0x44, 0x0b, 0xea, 0x07, 0xc1, 0x06, 0x71, 0x34, 0x96, 0x73, 0x30, 0x12, 0x56, 0x0f, 0x22, 0x5e, 0x2c, 0xe7, 0x20, 0x8a, 0xc8, 0x72, 0x8e, 0xc7, 0x07, 0x91, 0x8c, 0x96, 0x33, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0x11, 0x41, 0xa8, 0x33, 0xfc, 0x06, 0x91, 0x5c, 0xa8, 0x73, 0x10, 0xd1, 0x6a, 0x39, 0xc7, 0xe3, 0x83, 0x08, 0x6d, 0xcb, 0x39, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xbf, 0x6c, 0x4c, 0x2c, 0x3c, 0xa4, 0x96, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x47, 0xc5, 0xff, 0x41, 0x32, 0xdc, 0xa1, 0x7d, 0xcb, 0x41, 0x8a, 0xf2, 0xf3, 0x20, 0x58, 0x10, 0x6c, 0x70, 0x14, 0x47, 0x3f, 0x18, 0xd8, 0xa2, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0xd1, 0xdb, 0xfc, 0x60, 0x60, 0x8b, 0x1e, 0x0c, 0x15, 0x81, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x58, 0x16, 0x06, 0xb3, 0xb8, 0x41, 0x39, 0x94, 0x34, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x67, 0xf3, 0xe4, 0x0c, 0x92, 0xe1, 0x0e, 0x39, 0x8d, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0xda, 0x07, 0x5b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xce, 0x95, 0x83, 0x73, 0xde, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x64, 0xf9, 0x92, 0x83, 0xd4, 0x0e, 0x90, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x87, 0x5d, 0xb8, 0x05, 0xc1, 0x06, 0xd1, 0x9a, 0x46, 0x73, 0x10, 0xaf, 0x91, 0x3a, 0x87, 0x18, 0x1e, 0xd2, 0xb9, 0xc7, 0xa1, 0x61, 0x17, 0x04, 0x1b, 0x44, 0x2e, 0x16, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xe2, 0xb7, 0x60, 0xf8, 0x8d, 0xe7, 0x07, 0xd1, 0xc8, 0xa7, 0x73, 0x1c, 0x5a, 0x10, 0x6c, 0x10, 0x0d, 0xaa, 0x34, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x02, 0x13, 0x7b, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x85, 0x0b, 0x13, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0xa1, 0x3f, 0xf9, 0x20, 0xd8, 0x20, 0x4a, 0xc9, 0x40, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0x7a, 0x3f, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0xda, 0x01, 0x72, 0x48, 0x1d, 0x1c, 0x87, 0x0e, 0x8a, 0xdf, 0x82, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa9, 0x43, 0x29, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x35, 0xfa, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x2f, 0x08, 0x16, 0x24, 0x03, 0xf7, 0xd7, 0xc1, 0xb9, 0xfe, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xbe, 0x3b, 0x07, 0xe7, 0xbc, 0xe3, 0x83, 0xa8, 0x48, 0x34, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x8e, 0x6f, 0x83, 0x60, 0x71, 0xd8, 0x85, 0x3b, 0x48, 0x36, 0xb2, 0xde, 0x90, 0x3a, 0x18, 0x24, 0x43, 0x06, 0xd1, 0x02, 0x79, 0xff, 0x41, 0xb0, 0xc1, 0x0b, 0x25, 0x01, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9c, 0x28, 0xa2, 0x27, 0xd8, 0xfb, 0x3f, 0x0e, 0x0d, 0xa2, 0x05, 0xf1, 0x20, 0xd8, 0xe0, 0xe1, 0xff, 0x00, 0x07, 0xc3, 0x2c, 0x7c, 0x10, 0x2d, 0xec, 0x82, 0x60, 0xc3, 0x5e, 0xe1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0xea, 0x43, 0x75, 0x8e, 0x43, 0x87, 0xd4, 0xc1, 0xf1, 0xf8, 0xf8, 0x76, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x0e, 0xa7, 0xd8, 0xf1, 0xf8, 0x20, 0x42, 0xdb, 0x72, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x1f, 0xa3, 0x93, 0x1b, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xe1, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x1b, 0xc4, 0xca, 0x57, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x21, 0x7b, 0xbe, 0x41, 0x41, 0xb6, 0x73, 0x10, 0xb9, 0xfc, 0x38, 0xc7, 0xa1, 0xe1, 0x17, 0x44, 0x0b, 0xea, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0x7d, 0xa7, 0x83, 0x78, 0x0d, 0xcb, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x64, 0xcf, 0x87, 0xdf, 0x78, 0x7e, 0x10, 0x2f, 0x61, 0x39, 0xc7, 0xa1, 0x83, 0x88, 0x17, 0xcb, 0x39, 0x88, 0x22, 0xb2, 0x9c, 0xe3, 0xf1, 0x41, 0x24, 0xa3, 0xe5, 0x0c, 0xbf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0x24, 0x9f, 0xea, 0x0c, 0xbf, 0x41, 0x24, 0xa6, 0xea, 0x1c, 0x44, 0xb4, 0x5a, 0xce, 0xf1, 0xf8, 0x20, 0x42, 0xdb, 0x72, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x2f, 0x1b, 0x13, 0x13, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x38, 0x84, 0xca, 0x41, 0x04, 0x2e, 0xea, 0x1c, 0xa4, 0x28, 0x3f, 0x1f, 0xc4, 0x07, 0xa3, 0xce, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x24, 0x08, 0x2e, 0x1c, 0x44, 0x5d, 0xe5, 0xcd, 0xb0, 0x1b, 0x9c, 0x06, 0xb1, 0x17, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x82, 0x0d, 0x5e, 0xd4, 0x06, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0xfa, 0x93, 0x0f, 0x82, 0x0d, 0xce, 0xdf, 0xe5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x52, 0xd1, 0xe7, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x34, 0x43, 0xdd, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x72, 0x6b, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x45, 0x6d, 0x40, 0x07, 0xe3, 0x3b, 0xeb, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0xaf, 0xf0, 0x0b, 0x82, 0x0d, 0x96, 0x85, 0xc1, 0x2c, 0x6e, 0x50, 0x0e, 0x25, 0x0d, 0xbf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x89, 0xbd, 0xfe, 0x41, 0x5c, 0x3e, 0xea, 0x1c, 0x44, 0xfc, 0xa3, 0xce, 0xf1, 0xf8, 0x20, 0x42, 0xdb, 0x72, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x1f, 0xa3, 0x93, 0x13, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xf0, 0x0b, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x58, 0x41, 0xb0, 0x41, 0x81, 0x4e, 0x79, 0x48, 0xc3, 0x1d, 0xc4, 0xe5, 0x60, 0xce, 0x20, 0xd8, 0x20, 0xbe, 0x09, 0x73, 0x06, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x18, 0xab, 0x43, 0xb6, 0xe2, 0x20, 0xb2, 0x13, 0x73, 0x0e, 0x22, 0x58, 0x31, 0xe7, 0x20, 0xce, 0x1b, 0x73, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x6f, 0x0b, 0x1b, 0x13, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x87, 0xdd, 0xb0, 0x6b, 0xb0, 0x20, 0xd8, 0x60, 0xf1, 0x0b, 0xda, 0x41, 0xa4, 0xc3, 0xe5, 0x0c, 0x82, 0x05, 0xc1, 0x06, 0x8b, 0x5f, 0xd0, 0x0e, 0x62, 0x52, 0x2e, 0x67, 0x10, 0x6c, 0xb0, 0x26, 0x04, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0xfe, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0xc3, 0x6e, 0x50, 0x54, 0x29, 0x6c, 0x10, 0x8b, 0x75, 0x39, 0x83, 0x64, 0xc8, 0x20, 0xda, 0xa0, 0x3c, 0x88, 0x1b, 0x44, 0x0b, 0x3b, 0x08, 0x36, 0x88, 0x9c, 0x67, 0x8e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x11, 0xe2, 0x97, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x28, 0x55, 0x87, 0x6c, 0xc5, 0x41, 0xac, 0xfe, 0xe5, 0x1c, 0x87, 0x8e, 0xc7, 0xc7, 0xb7, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x73, 0x32, 0x76, 0xe1, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x0b, 0xbf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0x3c, 0x58, 0xe9, 0x0c, 0x82, 0x0d, 0x62, 0x0e, 0x4b, 0x67, 0x10, 0x6c, 0x90, 0x3a, 0x94, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x5c, 0xa3, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x0e, 0xbb, 0x41, 0xf0, 0x31, 0x6f, 0x48, 0x1d, 0x0c, 0x82, 0x05, 0xc1, 0x06, 0x09, 0xf8, 0x33, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xd6, 0xa9, 0x34, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x83, 0x53, 0x07, 0xe3, 0x5d, 0xe7, 0x20, 0x92, 0xbd, 0x74, 0x0e, 0x1b, 0xb5, 0xc7, 0xa1, 0x83, 0x38, 0xfc, 0xd2, 0x39, 0xbe, 0x1d, 0x87, 0x8e, 0xc7, 0x07, 0x91, 0x8c, 0x96, 0x33, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0xf1, 0x60, 0xa5, 0x33, 0x08, 0x36, 0x88, 0x39, 0x2c, 0x9d, 0x41, 0xb0, 0x41, 0xea, 0x50, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x71, 0x8d, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xc1, 0xc7, 0xbc, 0x21, 0x75, 0x30, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x22, 0xd9, 0x59, 0xe7, 0x20, 0x16, 0xca, 0x74, 0x0e, 0xa2, 0xaf, 0x4c, 0xe7, 0x20, 0xe6, 0xce, 0x74, 0x8e, 0x6f, 0xc7, 0xa1, 0xe3, 0xf1, 0x41, 0x84, 0xb6, 0xe5, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x3f, 0x26, 0x36, 0x36, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x0b, 0xbf, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0x82, 0x15, 0x04, 0x1b, 0x44, 0xd0, 0x9a, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0xc3, 0x46, 0x0f, 0xc9, 0x8e, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0xda, 0x50, 0x3b, 0x0e, 0xe2, 0x0f, 0x5b, 0x67, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xce, 0x1d, 0x04, 0x39, 0xff, 0x41, 0xf4, 0xb8, 0xe9, 0x1c, 0xac, 0x43, 0xe5, 0x1f, 0x76, 0xe1, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xbb, 0xea, 0x20, 0xe0, 0xfd, 0x0f, 0xe2, 0x60, 0x4e, 0xe7, 0x10, 0xff, 0x83, 0x05, 0xe8, 0x2a, 0xc7, 0xe3, 0x83, 0x48, 0x46, 0xcb, 0x19, 0x7e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0xa8, 0xc0, 0xd6, 0x19, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0x5d, 0x75, 0x10, 0xe4, 0xfc, 0x07, 0xb1, 0x85, 0xa7, 0x33, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x34, 0xf2, 0xe9, 0x6c, 0x48, 0x1d, 0x6c, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xe0, 0xdc, 0xc1, 0x78, 0xd7, 0x39, 0x88, 0x3e, 0x3f, 0x9d, 0x83, 0x91, 0xb0, 0x7a, 0x3c, 0x3e, 0x88, 0xd0, 0xb6, 0x9c, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xe7, 0xd2, 0xec, 0xc4, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x85, 0x5f, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x20, 0x1e, 0xac, 0x74, 0x06, 0xc1, 0x06, 0x31, 0x87, 0xa5, 0x33, 0x08, 0x36, 0x48, 0x1d, 0x4a, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xae, 0xd1, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xf8, 0x98, 0x37, 0xa4, 0x0e, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x04, 0xfc, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xeb, 0x54, 0x1a, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0x7a, 0x75, 0x30, 0xde, 0x75, 0x0e, 0x22, 0xd9, 0x4b, 0xe7, 0xb0, 0x51, 0x7b, 0x1c, 0x3a, 0x88, 0xc3, 0x2f, 0x9d, 0xe3, 0xdb, 0x71, 0xe8, 0x78, 0x7c, 0x10, 0xc9, 0x68, 0x39, 0xc3, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x10, 0x0f, 0x56, 0x3a, 0x83, 0x60, 0x83, 0x98, 0xc3, 0xd2, 0x19, 0x04, 0x1b, 0xa4, 0x0e, 0xa5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xd7, 0xe8, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0xc3, 0x6e, 0x10, 0x7c, 0xcc, 0x1b, 0x52, 0x07, 0x83, 0x60, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x6e, 0xd0, 0x75, 0x0e, 0x62, 0xa1, 0x4c, 0xe7, 0x20, 0xfa, 0xca, 0x74, 0x0e, 0x62, 0xee, 0x4c, 0xe7, 0xf8, 0x76, 0x1c, 0x3a, 0x1e, 0x1f, 0x44, 0x68, 0x5b, 0xce, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x63, 0x62, 0x63, 0xe1, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x36, 0x78, 0x8b, 0x51, 0xc2, 0x41, 0x04, 0x2e, 0xea, 0x1c, 0xa4, 0x28, 0x3f, 0x1f, 0xc4, 0x07, 0xa3, 0xce, 0xf1, 0x78, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x0b, 0xbf, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0x82, 0x15, 0x04, 0x1b, 0x44, 0xd0, 0x9a, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x71, 0x8d, 0x7e, 0x48, 0x76, 0x1c, 0x87, 0x06, 0xc1, 0x06, 0xd1, 0x86, 0xda, 0x71, 0x10, 0xdf, 0xf3, 0x3a, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x20, 0xfd, 0x77, 0x10, 0xe4, 0xfc, 0x07, 0xd1, 0xe3, 0xa6, 0x73, 0xb0, 0x0e, 0x95, 0x7f, 0xd8, 0x85, 0x5b, 0x10, 0x6c, 0x10, 0x01, 0x99, 0x18, 0x07, 0x71, 0x30, 0xa7, 0x73, 0x88, 0xff, 0xc1, 0x02, 0x74, 0x95, 0xe3, 0xf1, 0x41, 0x24, 0xa3, 0xe5, 0x0c, 0xbf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0xd4, 0xcd, 0xeb, 0x0c, 0x82, 0x05, 0xc1, 0x06, 0xab, 0xf2, 0x10, 0x0e, 0x62, 0x0b, 0x4f, 0x67, 0x10, 0x6c, 0x10, 0x8d, 0x7c, 0x3a, 0xc3, 0x6f, 0x3c, 0xde, 0x90, 0x3a, 0xd8, 0x38, 0x34, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xf4, 0xdf, 0xc1, 0x78, 0xd7, 0x19, 0x24, 0xc3, 0x0d, 0xa2, 0x85, 0xdd, 0xb0, 0xf6, 0xbb, 0xc1, 0xb8, 0x46, 0xdf, 0x90, 0x3a, 0x18, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xe9, 0x4c, 0x22, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0x83, 0x88, 0x84, 0xd3, 0x39, 0x0e, 0x1d, 0x87, 0x0e, 0x46, 0xc2, 0xea, 0xf1, 0xf8, 0x20, 0x42, 0xdb, 0x72, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x9f, 0x4b, 0xb3, 0x0b, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x36, 0x58, 0x16, 0x06, 0xb3, 0xb8, 0x41, 0x39, 0x94, 0x34, 0xfc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x78, 0x9f, 0xb5, 0x39, 0x88, 0xcb, 0x47, 0x9d, 0x83, 0x88, 0x7f, 0xd4, 0x39, 0x1e, 0x1f, 0x44, 0x68, 0x5b, 0xce, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x63, 0x74, 0x72, 0xe1, 0x21, 0xb5, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x2b, 0x08, 0x36, 0x38, 0xa4, 0xaa, 0x1f, 0xd2, 0x70, 0x07, 0x71, 0x39, 0x98, 0x33, 0x08, 0x36, 0x88, 0x6f, 0xc2, 0x9c, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x04, 0xaf, 0xc9, 0x41, 0x64, 0x27, 0xe6, 0x1c, 0x44, 0xb0, 0x62, 0xce, 0x41, 0x9c, 0x37, 0xe6, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0xdf, 0x16, 0x36, 0x36, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0x85, 0x95, 0xcd, 0x07, 0x6b, 0xc2, 0x77, 0x8e, 0xc7, 0x8b, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x17, 0x7e, 0x83, 0x51, 0x49, 0x7a, 0x70, 0x7e, 0xa2, 0x3d, 0x58, 0xcb, 0x27, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xc1, 0xc7, 0x63, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x90, 0xbe, 0x3b, 0x18, 0x8e, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x8f, 0x01, 0x4f, 0x10, 0x5b, 0xda, 0x58, 0x79, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0xc2, 0x2f, 0xfc, 0x82, 0x64, 0x60, 0xb8, 0x0e, 0xd9, 0x8a, 0x83, 0xf3, 0x13, 0xed, 0x41, 0xc9, 0xd0, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x44, 0xe5, 0x59, 0xce, 0xc1, 0xb8, 0x83, 0x3a, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0xc2, 0x2f, 0xfc, 0x06, 0x25, 0xef, 0xcc, 0xc1, 0xf9, 0x89, 0xf6, 0x60, 0x2d, 0x9f, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x04, 0x1f, 0x8f, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xfa, 0xee, 0xe0, 0x98, 0x55, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x18, 0xf0, 0x49, 0xbd, 0x89, 0x95, 0xc9, 0xd1, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc2, 0x6f, 0xf0, 0xf0, 0xca, 0x86, 0x83, 0xf3, 0x13, 0xed, 0x41, 0xc9, 0xd0, 0x74, 0x10, 0x5b, 0x0f, 0x3b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x48, 0xdf, 0x1d, 0x9c, 0xce, 0x90, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x03, 0xd0, 0x99, 0xa9, 0x8c, 0x0e, 0x84, 0x0e, 0xad, 0x4c, 0xae, 0x0c, 0x44, 0xac, 0x0c, 0xc4, 0xed, 0x0d, 0x84, 0xac, 0x0e, 0x8e, 0x2d, 0x6d, 0x2c, 0x8d, 0x2e, 0x0f, 0xe4, 0x0e, 0xad, 0xcc, 0x0d, 0x84, 0x2e, 0x6c, 0x2d, 0xcd, 0xed, 0x0c, 0x24, 0x0c, 0x64, 0x8e, 0x2e, 0xcc, 0x8d, 0x0c, 0x24, 0xec, 0x2c, 0x2c, 0xcd, 0x6d, 0x8e, 0x0e, 0x04, 0x2d, 0xad, 0xcd, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0xe1, 0x17, 0x24, 0x83, 0xd9, 0x41, 0x60, 0x62, 0x1f, 0xa4, 0xff, 0x36, 0x1c, 0x0c, 0x6c, 0xd1, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x05, 0xc9, 0x60, 0x76, 0x30, 0xde, 0x74, 0x0e, 0xce, 0x4f, 0xb4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0x82, 0xe4, 0x60, 0xb8, 0x29, 0x1c, 0x8c, 0x3b, 0xa8, 0x43, 0xea, 0xe0, 0x38, 0x34, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x41, 0xa4, 0x6e, 0xec, 0x1c, 0xba, 0x98, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x0b, 0x92, 0x83, 0x94, 0xcc, 0x86, 0x83, 0x71, 0x07, 0x75, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0x41, 0x3c, 0xdf, 0x5e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x83, 0xdc, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x37, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x4d, 0x80, 0x1f, 0x59, 0xd9, 0x98, 0x5c, 0x1e, 0x1c, 0x5d, 0x8b, 0x59, 0x58, 0x1a, 0x3b, 0xfc, 0xc6, 0xf3, 0xf1, 0x20, 0xbe, 0x48, 0x76, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x41, 0x34, 0x75, 0xd3, 0x0c, 0x82, 0x05, 0xc1, 0xc2, 0x2f, 0x48, 0x06, 0xb3, 0x83, 0x81, 0x48, 0x7d, 0x50, 0x32, 0x34, 0x1d, 0x0c, 0x6c, 0xd1, 0x41, 0xb0, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x2c, 0x48, 0x06, 0xd2, 0x3f, 0x07, 0xc7, 0x8c, 0xe5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x3c, 0x07, 0xc7, 0x8c, 0xe5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x37, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x4d, 0x80, 0x97, 0x5d, 0x99, 0x5c, 0x9a, 0x59, 0x5e, 0x8b, 0x59, 0x58, 0x1a, 0x3b, 0xfc, 0xc6, 0xf3, 0xf1, 0x20, 0xfe, 0x55, 0x76, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x77, 0x07, 0xad, 0x39, 0xf8, 0x1f, 0x0c, 0x6c, 0xd1, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xba, 0x0e, 0x0a, 0xb7, 0xa4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0x41, 0xa2, 0x89, 0xcd, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x06, 0xbb, 0x83, 0x73, 0x66, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc2, 0x2d, 0xe9, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x8f, 0x8f, 0xc7, 0x0b, 0xbf, 0x20, 0x58, 0x5c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0xae, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0xb0, 0x42, 0x3b, 0x48, 0x06, 0xc6, 0xee, 0x60, 0xbc, 0xeb, 0x1c, 0x8c, 0xa8, 0xc0, 0x83, 0xd4, 0xb1, 0x9d, 0x43, 0x34, 0x17, 0x04, 0x1b, 0x44, 0x6b, 0xcc, 0xce, 0xc1, 0xd2, 0x85, 0x9f, 0xc3, 0xb8, 0x1c, 0x8f, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x82, 0x60, 0xe1, 0x37, 0x88, 0xe2, 0x98, 0x9d, 0x41, 0x32, 0x90, 0x76, 0x3a, 0xac, 0xd0, 0x1e, 0xa4, 0x8e, 0xed, 0x0c, 0x82, 0x0d, 0x22, 0x92, 0x66, 0xe7, 0x60, 0xe9, 0xc2, 0xcf, 0xf1, 0x78, 0x71, 0x41, 0xb0, 0xf0, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0x10, 0x0b, 0x32, 0x3b, 0x83, 0x64, 0x40, 0xb0, 0xf6, 0x1d, 0x56, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xac, 0xf2, 0x90, 0x5a, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x10, 0xb7, 0x36, 0x3b, 0x07, 0x69, 0xdc, 0x27, 0x1b, 0x24, 0xdc, 0x9e, 0x1c, 0x24, 0xa0, 0x90, 0x1c, 0x87, 0x56, 0xf8, 0x05, 0xc1, 0xe2, 0x06, 0x23, 0x06, 0xed, 0xe0, 0x34, 0xd9, 0xbb, 0x38, 0xfc, 0x82, 0x68, 0x41, 0xeb, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0x90, 0xad, 0x38, 0x88, 0x05, 0x99, 0x9d, 0x83, 0xa1, 0x83, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x91, 0xa6, 0x1c, 0x72, 0x30, 0xf8, 0x63, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0x7a, 0x07, 0xc1, 0x06, 0xd1, 0xb2, 0xb3, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0xfa, 0x93, 0x1f, 0x3a, 0xa9, 0x1d, 0x9a, 0x25, 0x1d, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0xb4, 0x0e, 0xbb, 0x20, 0x58, 0xf8, 0x0d, 0xa2, 0x68, 0x67, 0xe7, 0x60, 0xa0, 0x8f, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x44, 0x2b, 0x07, 0xa9, 0xeb, 0x03, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xe3, 0xa7, 0x6b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x20, 0x5a, 0x39, 0x18, 0xfc, 0x31, 0xc7, 0xa1, 0x83, 0x61, 0x3a, 0x71, 0x3c, 0x1e, 0x7e, 0x41, 0xb4, 0xa0, 0x74, 0xd8, 0x0d, 0xe2, 0xfd, 0x67, 0x67, 0x83, 0x85, 0x30, 0xfb, 0x07, 0xc3, 0x8b, 0xe2, 0x78, 0x3c, 0xfc, 0x82, 0x68, 0x41, 0xeb, 0xb0, 0x0b, 0x82, 0x85, 0xdf, 0x20, 0x8a, 0x76, 0x76, 0x0e, 0x4b, 0x10, 0x07, 0x71, 0x0a, 0xb4, 0xb3, 0x20, 0x58, 0xf8, 0x0d, 0xa2, 0x68, 0x67, 0xe7, 0x60, 0x54, 0x92, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x86, 0xfe, 0xe4, 0x83, 0x60, 0xe1, 0x37, 0x88, 0xa2, 0x9d, 0x9d, 0xc3, 0x66, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xd4, 0xf5, 0x81, 0x83, 0x41, 0xb4, 0x72, 0x1c, 0x3a, 0x18, 0xfc, 0x31, 0xc7, 0xa1, 0x83, 0x61, 0x3a, 0x71, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x20, 0x8a, 0x76, 0x76, 0x0e, 0x52, 0x88, 0x13, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfe, 0x98, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0x8a, 0x76, 0x76, 0x0e, 0x4e, 0xad, 0xcd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x06, 0xa9, 0xeb, 0x03, 0x07, 0x31, 0x37, 0x75, 0x73, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0xc2, 0x2f, 0xfc, 0x06, 0x41, 0xce, 0x7f, 0x10, 0x0b, 0x32, 0x3b, 0x07, 0x29, 0xc4, 0x09, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8a, 0x3d, 0x88, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0xf6, 0x9b, 0x76, 0x0e, 0x4e, 0xad, 0xcd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x06, 0x29, 0x83, 0x01, 0x07, 0xab, 0xaa, 0x71, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x4c, 0x58, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0x20, 0xe0, 0xfd, 0x0f, 0x62, 0x41, 0x66, 0xe7, 0x90, 0x35, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xe4, 0x2a, 0x1c, 0x24, 0x60, 0x0b, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x76, 0xa9, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0x14, 0x4c, 0xed, 0x1c, 0x8c, 0x4a, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0xd0, 0x9f, 0xfc, 0xd0, 0x74, 0xe8, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x94, 0x32, 0x3b, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0xd8, 0xa0, 0x84, 0x91, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x0b, 0xbf, 0xc1, 0x78, 0xd7, 0x39, 0x88, 0x05, 0x99, 0x9d, 0x43, 0xd6, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x93, 0x88, 0x36, 0x07, 0xa9, 0x25, 0x05, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xe2, 0x2f, 0x6b, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0x10, 0x97, 0x59, 0x3b, 0x07, 0xa3, 0x92, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x37, 0xf4, 0x27, 0x3f, 0x18, 0x41, 0x9e, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x47, 0x6b, 0x0b, 0x1b, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x0a, 0x82, 0x85, 0xdf, 0x20, 0x6e, 0x6d, 0x76, 0x0e, 0x92, 0x2a, 0x4e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0xa8, 0x9c, 0x1c, 0x9c, 0x4d, 0x7a, 0x8f, 0x43, 0x83, 0x60, 0x83, 0xf8, 0xb4, 0xd9, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xca, 0x43, 0x6a, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x41, 0xdc, 0xda, 0xec, 0x1c, 0x94, 0x0c, 0x4d, 0x1b, 0x24, 0xdc, 0x9e, 0x1c, 0xa4, 0x86, 0x9d, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0x44, 0x11, 0xd8, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x14, 0xfc, 0x4e, 0x07, 0x6b, 0x9f, 0xd2, 0x8e, 0x43, 0x83, 0x60, 0x83, 0xf8, 0xb4, 0xd9, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xca, 0x43, 0x6a, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x41, 0xdc, 0xda, 0xec, 0x1c, 0x24, 0xff, 0x46, 0x6f, 0x90, 0xe4, 0xd6, 0x7c, 0x90, 0x70, 0x7b, 0x72, 0x1c, 0x5a, 0x10, 0x6c, 0x10, 0x45, 0x60, 0x3b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x52, 0x54, 0x4e, 0x0e, 0x12, 0xb2, 0x4f, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0xa2, 0x08, 0x6c, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xc4, 0x94, 0xed, 0x1c, 0x3c, 0x2a, 0x2d, 0xe0, 0x38, 0xb4, 0x20, 0xd8, 0x20, 0x8a, 0xc0, 0x76, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x44, 0x4c, 0xd9, 0xce, 0xc1, 0x9a, 0xb9, 0x9a, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0x8a, 0xc0, 0x76, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0xa8, 0x9c, 0x1c, 0xac, 0x88, 0x92, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x06, 0x11, 0xf8, 0xb5, 0x73, 0x10, 0x31, 0x46, 0x33, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x82, 0x60, 0x71, 0x0d, 0x2b, 0xb4, 0x07, 0x43, 0xdb, 0x65, 0x0d, 0x2b, 0xb4, 0x1b, 0x8c, 0x31, 0xb4, 0x0d, 0xc6, 0x18, 0xda, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x0c, 0x0c, 0xcc, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x34, 0x2e, 0x3a, 0x38, 0x10, 0xf1, 0x1f, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x13, 0x9f, 0xf1, 0xc1, 0x33, 0xe5, 0x6f, 0x06, 0xc1, 0x82, 0x60, 0x43, 0xfc, 0x0f, 0x06, 0xb6, 0xe8, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0x1c, 0x04, 0x8b, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0xf3, 0xe9, 0xe0, 0x98, 0xb1, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xc8, 0x9e, 0x6f, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0xd4, 0xa5, 0x83, 0xd6, 0x1c, 0xfc, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x43, 0x7f, 0xf2, 0x41, 0xb0, 0x41, 0x1c, 0xd5, 0xe0, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0x10, 0xf1, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xda, 0x3a, 0x1d, 0xb4, 0xe6, 0xe0, 0x7f, 0x90, 0xe2, 0xe7, 0x70, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x9d, 0x0e, 0x5a, 0x73, 0xf0, 0x3f, 0x48, 0xf1, 0x73, 0x38, 0x0e, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0xa2, 0xd1, 0x3f, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x90, 0x3d, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x1d, 0x04, 0x55, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0x51, 0x3a, 0x38, 0x66, 0x2c, 0x1f, 0x24, 0x73, 0x54, 0x0c, 0x82, 0x05, 0xc9, 0x06, 0x45, 0x7d, 0xce, 0x41, 0x5a, 0xd0, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0x60, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0xb2, 0x41, 0x39, 0xab, 0x73, 0x90, 0x16, 0x34, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xa6, 0x35, 0xfc, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0x66, 0xec, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x94, 0xea, 0x7d, 0x07, 0x69, 0x41, 0x23, 0x07, 0x03, 0x5b, 0xf4, 0x38, 0x74, 0x30, 0xf0, 0x43, 0x8e, 0x43, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0xdc, 0x70, 0xb4, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0xf0, 0x77, 0x3a, 0x68, 0xcd, 0xc1, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x1b, 0x0c, 0xf1, 0x8f, 0x83, 0xd6, 0x1c, 0xfc, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0x51, 0x3a, 0x68, 0xcd, 0xc1, 0xff, 0x20, 0xc5, 0xcf, 0xe1, 0x38, 0x34, 0x08, 0x16, 0x24, 0x1b, 0x14, 0xf5, 0x39, 0x07, 0xc9, 0x4a, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x1b, 0x94, 0xb3, 0x3a, 0x07, 0xc9, 0x4a, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x83, 0x3f, 0x07, 0x71, 0x51, 0x74, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x40, 0xc4, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xaa, 0xf7, 0x1d, 0x24, 0x2b, 0xad, 0x1c, 0x0c, 0x6c, 0xd1, 0xe3, 0xd0, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x1d, 0x52, 0x07, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd9, 0x60, 0x90, 0xbc, 0x1c, 0x24, 0x2b, 0xad, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0xf1, 0xd0, 0xfe, 0xfc, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0xe3, 0x41, 0xb0, 0x41, 0x7a, 0x63, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xfc, 0x0f, 0x12, 0x23, 0x61, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x83, 0x60, 0x41, 0x32, 0x10, 0x9d, 0x83, 0xd3, 0x86, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x31, 0x61, 0x75, 0x30, 0x78, 0x27, 0x8f, 0x43, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xe0, 0x5c, 0x39, 0x38, 0x6d, 0x28, 0x1f, 0xc4, 0x5f, 0xe5, 0xce, 0x20, 0x58, 0x1c, 0x76, 0x83, 0x65, 0xa8, 0x46, 0x1b, 0x62, 0xb8, 0x20, 0x58, 0x10, 0x6c, 0x10, 0x51, 0xe8, 0x39, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xf6, 0xf5, 0x9c, 0x43, 0xa3, 0x96, 0x83, 0xc2, 0x2d, 0xe9, 0x38, 0x34, 0x08, 0x36, 0x88, 0x14, 0x99, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0xe1, 0x37, 0x9e, 0x6f, 0x1c, 0x3a, 0x28, 0xdc, 0x92, 0x0e, 0x16, 0x2e, 0x96, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xb1, 0x94, 0xb9, 0x73, 0x3c, 0x3e, 0xbe, 0x1d, 0x4e, 0xb1, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x6c, 0xb0, 0x76, 0x9d, 0xe2, 0xe0, 0xb4, 0xa1, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x7e, 0x41, 0xb4, 0x20, 0x1c, 0x04, 0x1b, 0xa4, 0x5a, 0xa9, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x86, 0x18, 0x4e, 0xf0, 0xf7, 0xff, 0x21, 0x6b, 0x77, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x06, 0xef, 0xe4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x84, 0xbd, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x7c, 0xed, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x83, 0xbb, 0xf2, 0x90, 0x86, 0x3b, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0x41, 0xb0, 0x21, 0x86, 0x83, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0xe2, 0xf0, 0x0b, 0xa2, 0x05, 0xf1, 0x20, 0x58, 0x90, 0x0c, 0x14, 0xbd, 0x83, 0x64, 0xa5, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xba, 0x74, 0x90, 0xac, 0xb4, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x51, 0x94, 0x84, 0x73, 0xd8, 0x2b, 0x3c, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xde, 0x77, 0x3a, 0x48, 0x56, 0x5a, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x31, 0x3c, 0x28, 0xa5, 0x7b, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x47, 0xaa, 0x71, 0x30, 0x3e, 0x8c, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x85, 0x1d, 0x04, 0x1b, 0xc4, 0x37, 0xd1, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0x02, 0xc5, 0xfe, 0xff, 0x71, 0xe8, 0x78, 0x3c, 0xec, 0x82, 0x60, 0x41, 0x32, 0xa8, 0x39, 0x88, 0x8b, 0xa2, 0x8b, 0x83, 0x87, 0xfd, 0x02, 0x2c, 0x08, 0x36, 0x88, 0x55, 0xd4, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0xa4, 0x33, 0xee, 0x1c, 0x3c, 0xec, 0x17, 0xe0, 0xb0, 0x57, 0x78, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf9, 0x20, 0xd8, 0xa0, 0x70, 0x4b, 0x3a, 0x18, 0x1f, 0x46, 0x83, 0x68, 0x41, 0x7c, 0x48, 0xd5, 0x1c, 0x8f, 0x8f, 0x6f, 0x07, 0x6b, 0xf9, 0x04, 0x8e, 0xc7, 0xc7, 0xe3, 0x15, 0x04, 0x8b, 0x1b, 0x44, 0xf4, 0xdb, 0xce, 0x06, 0x11, 0x04, 0xb7, 0x73, 0x50, 0x4c, 0x0b, 0x2e, 0x0e, 0xbf, 0x20, 0x5a, 0x60, 0x7e, 0x07, 0xc1, 0x06, 0x51, 0x01, 0x7d, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x1d, 0x24, 0x18, 0x20, 0x1c, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x39, 0xf8, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x6b, 0xb7, 0xa1, 0x87, 0xd0, 0x86, 0xc6, 0x45, 0x07, 0x61, 0x4f, 0x7d, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x83, 0x71, 0xaa, 0x7c, 0x68, 0xc6, 0x73, 0x1c, 0x3a, 0x1e, 0xaf, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x98, 0xab, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0xe0, 0x00, 0x59, 0xf8, 0x8d, 0xe7, 0x63, 0x30, 0xc0, 0x1b, 0x24, 0xce, 0x36, 0x1f, 0x52, 0x35, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xd0, 0xd7, 0x64, 0x64, 0xe8, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0xbe, 0x3b, 0x24, 0x97, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x0c, 0x0e, 0xa8, 0x0d, 0xd2, 0xcb, 0x7a, 0x0e, 0x79, 0xd9, 0xe3, 0xd0, 0xf1, 0x78, 0x05, 0xc1, 0x06, 0x23, 0xff, 0x61, 0x71, 0x10, 0x6c, 0xb0, 0x46, 0xb4, 0xff, 0x20, 0x4a, 0x7a, 0x77, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0x08, 0x36, 0x58, 0x23, 0xda, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x63, 0x70, 0x40, 0x6c, 0x90, 0xe0, 0xe3, 0x71, 0xc8, 0xcb, 0x1e, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0x32, 0x20, 0x58, 0xfb, 0x0e, 0x86, 0x7f, 0xec, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x22, 0x46, 0x78, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x2a, 0x0f, 0xa9, 0x83, 0xe7, 0xda, 0x04, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x7e, 0xd0, 0x72, 0xfe, 0xd2, 0x71, 0x68, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x1b, 0xc4, 0x2c, 0xef, 0xce, 0x41, 0x6c, 0x02, 0xef, 0x1c, 0x8f, 0x57, 0x10, 0x6c, 0x10, 0x31, 0xc2, 0x3b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x22, 0x64, 0x78, 0x67, 0xf8, 0x8d, 0xe7, 0x07, 0xa7, 0x30, 0xdc, 0xe3, 0xd0, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x6c, 0xf0, 0x3c, 0x95, 0x89, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x83, 0x02, 0xb2, 0x41, 0xda, 0x56, 0xcb, 0x06, 0x09, 0x3e, 0x1e, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x6c, 0x10, 0xdf, 0xb8, 0x3b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x06, 0x05, 0x74, 0xe1, 0x37, 0x9e, 0x8f, 0x41, 0x01, 0x5c, 0xf8, 0x8d, 0xe7, 0x63, 0x30, 0x80, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xf4, 0xb5, 0x19, 0x1c, 0x7a, 0x48, 0x2d, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0x11, 0x23, 0xbc, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x42, 0x86, 0x77, 0x0e, 0x8e, 0xb5, 0xdd, 0xc7, 0xa1, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xd8, 0xe0, 0x79, 0x2a, 0x13, 0x07, 0x31, 0xb9, 0xbc, 0x73, 0x3c, 0x5e, 0x41, 0xb0, 0xc1, 0x52, 0xa3, 0xb2, 0x41, 0x32, 0xe4, 0x20, 0x51, 0xcc, 0x63, 0x85, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0xe2, 0x1b, 0x77, 0xe7, 0x20, 0x02, 0x92, 0x77, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0x40, 0x5f, 0xab, 0x89, 0x91, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0x9e, 0xa7, 0x32, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xfa, 0x81, 0x77, 0x36, 0x48, 0xf0, 0xf1, 0xd8, 0x20, 0xbd, 0xac, 0xe7, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x83, 0xe7, 0xa9, 0x4c, 0x1c, 0x44, 0x53, 0xee, 0xce, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0x52, 0xa3, 0xb2, 0x83, 0x07, 0x14, 0x50, 0x2c, 0x08, 0x36, 0x58, 0x6a, 0x54, 0x76, 0x90, 0x2e, 0x38, 0x34, 0x08, 0x36, 0x88, 0x18, 0xe1, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x11, 0x32, 0xbc, 0x73, 0xb0, 0x1a, 0x29, 0xe6, 0x38, 0xb4, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x17, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xa0, 0xea, 0xe0, 0x24, 0x74, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x35, 0x63, 0x67, 0x83, 0x25, 0x76, 0x65, 0x1b, 0x24, 0x6b, 0x1a, 0x2c, 0xfc, 0xc6, 0xf3, 0x31, 0x08, 0xe4, 0x06, 0xe9, 0xde, 0x17, 0x0b, 0xbf, 0xf1, 0x7c, 0x0c, 0x0a, 0xe4, 0xc2, 0x6f, 0x3c, 0x1f, 0x83, 0x03, 0xf2, 0x60, 0xe0, 0x87, 0x1c, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x46, 0x97, 0x43, 0x06, 0xc9, 0xc0, 0xf4, 0x1d, 0x8c, 0xc1, 0xc8, 0x83, 0x61, 0x16, 0xbe, 0x20, 0xd8, 0xa0, 0xb0, 0xc3, 0x19, 0x04, 0x0b, 0x82, 0x0d, 0xce, 0xa1, 0xc6, 0x07, 0xa3, 0x3d, 0x78, 0x10, 0x2c, 0x08, 0x36, 0x58, 0xfa, 0x3f, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x56, 0x44, 0x6d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0xc7, 0x1f, 0xcd, 0x41, 0xbc, 0x80, 0xe1, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x7c, 0x8c, 0x86, 0x1c, 0x0c, 0x6c, 0xd1, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x46, 0x6a, 0x6b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x44, 0x2e, 0x3f, 0xce, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa7, 0xf7, 0xe3, 0x83, 0xc4, 0x9b, 0xa0, 0xe3, 0xd0, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x1c, 0x04, 0x8b, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x8b, 0x33, 0x0e, 0xea, 0x07, 0xe3, 0xc1, 0x76, 0x50, 0x32, 0x28, 0x1b, 0x76, 0xd0, 0x3b, 0x18, 0x0d, 0x1d, 0x44, 0x83, 0xae, 0xc1, 0x72, 0xd0, 0x33, 0x68, 0x1a, 0xb4, 0x0d, 0xf2, 0xc1, 0x6a, 0x10, 0x0c, 0x26, 0x43, 0x06, 0xed, 0x83, 0xe2, 0x41, 0xdc, 0x20, 0xd8, 0x20, 0xda, 0xbf, 0x71, 0x0e, 0x8a, 0xd1, 0x9f, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0x08, 0x16, 0x04, 0x1b, 0xc4, 0x37, 0xd1, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xd6, 0x6e, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x08, 0x0e, 0xe2, 0xa2, 0xe8, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x39, 0x33, 0xf9, 0xd0, 0x43, 0xe8, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0x3c, 0x55, 0x89, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0xb0, 0xc1, 0x39, 0x33, 0xf9, 0xd0, 0xf0, 0xeb, 0x38, 0x74, 0x3c, 0x5e, 0xd8, 0x0d, 0xd2, 0x7d, 0x3d, 0x36, 0xec, 0x15, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x83, 0xb5, 0xeb, 0x14, 0x07, 0x69, 0x41, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x1b, 0xc4, 0x3c, 0x45, 0xce, 0x41, 0x5a, 0xd0, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x54, 0xaf, 0xe0, 0x1c, 0x44, 0xf4, 0x23, 0xcd, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x6c, 0x10, 0x6d, 0xa5, 0x3b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x53, 0xd3, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0xa0, 0x70, 0x4b, 0x3a, 0x1c, 0xed, 0x87, 0x7c, 0xed, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0xb2, 0xc1, 0xda, 0x75, 0x8a, 0x83, 0x64, 0xa5, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x0d, 0x62, 0x9e, 0x22, 0xe7, 0x20, 0x59, 0x69, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x57, 0x0e, 0xe2, 0xa2, 0xe8, 0xe2, 0x20, 0x9e, 0xc3, 0x71, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x10, 0xbc, 0x83, 0x78, 0xcc, 0xba, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xc8, 0xd7, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x1c, 0xef, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xec, 0xd8, 0x90, 0xb5, 0x3b, 0x28, 0xdc, 0x92, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x83, 0xb5, 0xeb, 0x14, 0x07, 0xad, 0x39, 0xf8, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x6c, 0x10, 0xf3, 0x14, 0x39, 0x07, 0xad, 0x39, 0xf8, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0x82, 0x0c, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xe0, 0x54, 0x8e, 0x7c, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xc9, 0x40, 0xd1, 0x3b, 0x88, 0x8b, 0xa2, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xba, 0x74, 0x10, 0x17, 0x45, 0x17, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0xc1, 0x59, 0xf6, 0xf8, 0x70, 0xb4, 0x1f, 0xf2, 0xb5, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x62, 0xd0, 0x1b, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6e, 0x68, 0x1c, 0xb9, 0x20, 0xd8, 0x20, 0x7e, 0xc2, 0x71, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xe5, 0x62, 0xcf, 0x71, 0x68, 0x10, 0x6c, 0x10, 0x3f, 0xe1, 0x38, 0x87, 0x34, 0xdc, 0x20, 0xd8, 0xe0, 0x15, 0x34, 0x72, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x83, 0x0d, 0x12, 0x4d, 0x6c, 0x0e, 0x02, 0x13, 0xfb, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x94, 0xa7, 0x83, 0xb8, 0x28, 0xba, 0x18, 0x24, 0x03, 0xc1, 0x3b, 0x88, 0x0d, 0x02, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0x83, 0xb1, 0xe1, 0x3a, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x53, 0x95, 0x28, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x13, 0x2d, 0x3a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x62, 0xc0, 0x28, 0xe7, 0xa0, 0x5c, 0xec, 0x39, 0x0e, 0x6d, 0x50, 0x2e, 0xf6, 0x1c, 0xf6, 0x0a, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x7c, 0x1c, 0x1a, 0x7e, 0x41, 0xb4, 0xe0, 0xfe, 0x20, 0xd8, 0x20, 0xe2, 0xf0, 0x77, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xc7, 0xf9, 0x3b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xd1, 0xb5, 0xbf, 0x73, 0x10, 0xef, 0x03, 0x3c, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xc6, 0x40, 0xf9, 0xe2, 0x20, 0xd8, 0x20, 0x02, 0xfa, 0x77, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf2, 0xb5, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xba, 0x74, 0x10, 0x8f, 0x59, 0x17, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0xc1, 0xa9, 0x1c, 0x79, 0x10, 0x6c, 0x10, 0x87, 0x6a, 0x17, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xca, 0xc5, 0x9e, 0x83, 0x18, 0x30, 0xca, 0x39, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x0a, 0x1a, 0xb9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xac, 0xdd, 0x06, 0x89, 0x26, 0x36, 0x87, 0xbd, 0xc2, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x88, 0xc3, 0xdf, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xa7, 0x14, 0x3c, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x88, 0xce, 0x41, 0x04, 0xab, 0x5d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x64, 0xed, 0x0e, 0x4a, 0x34, 0x9c, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xce, 0x95, 0x09, 0xdc, 0xff, 0xff, 0xff, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xe2, 0x7f, 0x50, 0xa2, 0xe1, 0x1c, 0x87, 0x06, 0xc1, 0x82, 0x64, 0xa0, 0xe8, 0x1d, 0x44, 0x74, 0x08, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x62, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x50, 0x97, 0x0e, 0x22, 0x3a, 0x84, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x37, 0x28, 0x17, 0x7b, 0x06, 0xc1, 0x82, 0x64, 0xf0, 0x67, 0x02, 0xf9, 0xff, 0xff, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x25, 0x10, 0xfc, 0xff, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x41, 0xc9, 0x41, 0x34, 0x99, 0xf0, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x33, 0xdc, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x41, 0x70, 0x10, 0x4d, 0x26, 0x3c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x4a, 0x4e, 0xa5, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x74, 0x0e, 0xa2, 0xc9, 0x84, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x71, 0x79, 0xc2, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x38, 0x48, 0xe1, 0x39, 0x48, 0xbc, 0x09, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x0e, 0x52, 0x78, 0x0e, 0xd2, 0xcc, 0xb7, 0x8f, 0x43, 0x07, 0x25, 0xa7, 0xd2, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xe5, 0xe9, 0x20, 0xa2, 0x43, 0x78, 0x06, 0xc9, 0x40, 0xf0, 0x06, 0xd1, 0xc2, 0x1e, 0x24, 0x9a, 0xd8, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xc1, 0xa7, 0x87, 0xec, 0xc5, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xad, 0xb2, 0xaa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x24, 0x3b, 0x36, 0x88, 0x82, 0x13, 0x9e, 0x83, 0x53, 0x39, 0xf2, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x8f, 0x43, 0xc3, 0x2f, 0x88, 0x16, 0x08, 0xff, 0x20, 0x58, 0x90, 0x6c, 0xb0, 0x76, 0x9d, 0xe2, 0x20, 0x2e, 0x8a, 0x2e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x36, 0x88, 0x79, 0x8a, 0x9c, 0x83, 0xb8, 0x28, 0xba, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0x62, 0x1d, 0x1c, 0xe7, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x24, 0x03, 0x45, 0xef, 0x20, 0x82, 0xd5, 0x2e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xea, 0xd2, 0x41, 0x04, 0xab, 0x5d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0x17, 0x7b, 0x0e, 0xf9, 0xda, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x10, 0x9d, 0x83, 0x88, 0x0e, 0xe1, 0x39, 0x88, 0x33, 0x10, 0x9e, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x9c, 0x2b, 0x07, 0xd1, 0x64, 0xc2, 0x73, 0x10, 0x25, 0x22, 0x3c, 0x83, 0x60, 0x41, 0x32, 0x10, 0xbc, 0x83, 0x68, 0x32, 0xe1, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x44, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0xb3, 0x21, 0x75, 0x70, 0x30, 0xde, 0x74, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0x73, 0xef, 0x20, 0x9a, 0x4c, 0x78, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xd1, 0x99, 0xc0, 0xfe, 0xff, 0xff, 0xff, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x41, 0xc9, 0x41, 0x24, 0x0a, 0xf1, 0x1c, 0x3a, 0xc6, 0x4f, 0xa0, 0xf8, 0xff, 0x3f, 0x0e, 0x0d, 0x82, 0x05, 0xc9, 0x20, 0x3a, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x83, 0x0d, 0xa9, 0x9a, 0x83, 0xc1, 0x3b, 0x79, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x54, 0xbd, 0x83, 0x68, 0x32, 0xe1, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x05, 0x27, 0x3c, 0x1b, 0x8c, 0x0d, 0xd7, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xe2, 0xe1, 0x87, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x91, 0x24, 0xc4, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0xc9, 0xfe, 0xf7, 0x83, 0x38, 0x22, 0xe2, 0x39, 0x0e, 0x1d, 0xc4, 0x02, 0x10, 0xcf, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0xc2, 0x3f, 0x08, 0x16, 0x04, 0x1b, 0x44, 0xc1, 0x3e, 0xce, 0xc1, 0x48, 0x58, 0x1d, 0x04, 0x1b, 0x44, 0x40, 0xff, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc2, 0x2d, 0x69, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x38, 0xc6, 0xe0, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x4e, 0xe5, 0xc8, 0x83, 0x60, 0x41, 0x32, 0x90, 0x5e, 0x39, 0x88, 0x60, 0xb5, 0x8b, 0x83, 0xa8, 0x54, 0xe0, 0x39, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x19, 0xcc, 0x0e, 0xe2, 0x44, 0x02, 0x67, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x1b, 0x44, 0x58, 0xcf, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb3, 0xec, 0xf1, 0xc2, 0x6f, 0x3c, 0x5f, 0x10, 0x6c, 0x10, 0xe9, 0x8c, 0x3b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x3d, 0x84, 0x86, 0xdf, 0x78, 0x3e, 0xcc, 0x20, 0x58, 0x90, 0x0c, 0x44, 0xe7, 0x20, 0x2e, 0x8a, 0x2e, 0x0e, 0xc6, 0x68, 0xc4, 0x71, 0xe8, 0x70, 0xb4, 0x1f, 0x3a, 0x86, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0xe2, 0x38, 0x20, 0x08, 0x02, 0x06, 0x10, 0x50, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x20, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x10, 0x16, 0x01, 0x03, 0x04, 0x01, 0x00, 0x00, 0x80, 0x01, 0x04, 0x02, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x08, 0x24, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x42, 0x31, 0x10, 0x88, 0x01, 0x82, 0x04, 0x40, 0x00, 0xc0, 0x00, 0x81, 0x02, 0x00, 0x00, 0x60, 0x80, 0x60, 0x11, 0x10, 0x00, 0x30, 0x80, 0xc0, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x81, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x02, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x04, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x05, 0xc0, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x0d, 0xa2, 0x14, 0x8b, 0x67, 0x00, 0x01, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x06, 0x71, 0x84, 0xc5, 0x33, 0x80, 0x00, 0x02, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0xa0, 0x41, 0xb0, 0x41, 0xb4, 0x7f, 0xe3, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x26, 0x5a, 0x74, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf6, 0x0a, 0x0f, 0xe2, 0xd0, 0x0d, 0xe7, 0x38, 0x74, 0x48, 0x1d, 0x1c, 0x87, 0x8e, 0xc7, 0x07, 0xa7, 0x15, 0xdc, 0xe3, 0xf1, 0xe1, 0x14, 0x3b, 0x1e, 0x2f, 0x08, 0x36, 0x58, 0x6a, 0x54, 0x76, 0x10, 0x65, 0xae, 0x36, 0x0b, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x1b, 0xc4, 0x37, 0xee, 0xce, 0x41, 0xec, 0x53, 0xef, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0xbe, 0x26, 0x53, 0x63, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x17, 0x04, 0x1b, 0xa4, 0x08, 0x57, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x0e, 0xd2, 0x0d, 0x1c, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0x0a, 0x6a, 0xb1, 0xc5, 0xe1, 0x17, 0x44, 0x0b, 0xd2, 0x41, 0xb0, 0x41, 0x74, 0xfc, 0xd1, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xe4, 0x6b, 0x0f, 0x0e, 0x44, 0xfc, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xbd, 0xa3, 0x1d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xf9, 0xda, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x74, 0x0e, 0x4e, 0x67, 0xc8, 0x07, 0x25, 0xcf, 0xd8, 0x71, 0x68, 0xf8, 0x05, 0xd1, 0x42, 0x86, 0xdd, 0xe0, 0x34, 0x88, 0x7d, 0x30, 0xd4, 0x37, 0x8f, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0x32, 0x08, 0x36, 0x68, 0x55, 0x5d, 0xe9, 0x60, 0x60, 0x8b, 0x1e, 0x8f, 0x17, 0x04, 0x1b, 0x44, 0xfb, 0x60, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x31, 0x61, 0x75, 0x30, 0x66, 0xb8, 0x8f, 0x43, 0x83, 0x60, 0x83, 0x37, 0xfd, 0xd8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x53, 0x1d, 0x35, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xb3, 0x7c, 0x8e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x29, 0x72, 0xd4, 0x07, 0xe3, 0x4d, 0xe7, 0x38, 0x74, 0x90, 0xe4, 0xd6, 0x7c, 0x1c, 0x3a, 0x18, 0x59, 0x56, 0xc7, 0xa1, 0xe3, 0xf1, 0xe1, 0x14, 0x3b, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x7f, 0xad, 0x6c, 0x6c, 0x3c, 0x58, 0x13, 0xbe, 0x73, 0x3c, 0x1e, 0x04, 0x8b, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x31, 0x74, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x60, 0xfe, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x10, 0x5c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x1a, 0xed, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xd6, 0xee, 0x20, 0xe1, 0xf6, 0xe4, 0x38, 0x74, 0x90, 0xe0, 0xe3, 0x71, 0x1c, 0x3a, 0x0e, 0x2d, 0x08, 0x36, 0x38, 0xf1, 0x19, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0x90, 0x70, 0x7b, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0xc6, 0x0c, 0xf7, 0x21, 0xd9, 0x71, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x0d, 0x1a, 0x50, 0x85, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0xbe, 0x06, 0xe9, 0x50, 0x1e, 0x83, 0x60, 0x83, 0x28, 0x92, 0xc8, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x36, 0x38, 0x10, 0xf1, 0x1f, 0xe2, 0x7f, 0x1c, 0x5a, 0x83, 0x51, 0x7e, 0x32, 0x08, 0x36, 0x78, 0x51, 0x1b, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x63, 0xb4, 0xee, 0xc1, 0xd8, 0x70, 0x3d, 0x0e, 0x6d, 0xc8, 0xcb, 0x1e, 0x62, 0x78, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x7e, 0x41, 0xb4, 0x20, 0x1c, 0x04, 0x1b, 0x9c, 0x1c, 0x8b, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb2, 0x76, 0x07, 0x07, 0x22, 0xfe, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x10, 0xeb, 0x54, 0x35, 0xc3, 0x2f, 0x88, 0x16, 0x6e, 0x10, 0x6c, 0x90, 0xc6, 0x07, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x44, 0xc3, 0xd9, 0x30, 0x2e, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x24, 0x03, 0xab, 0x4e, 0x07, 0xa7, 0x33, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0xe8, 0x20, 0xee, 0x9b, 0x65, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xbb, 0xc5, 0x50, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xd1, 0x3c, 0x48, 0xf0, 0xf1, 0x38, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0x3c, 0x1d, 0x9c, 0xbd, 0x8c, 0x0f, 0x0a, 0x2e, 0x9c, 0x41, 0xb0, 0x18, 0xf8, 0x01, 0x23, 0x45, 0xe7, 0x20, 0x58, 0x0c, 0x08, 0x12, 0x57, 0x9b, 0xdf, 0x83, 0x60, 0x31, 0x20, 0xf0, 0xe7, 0xd6, 0xc5, 0x0c, 0x82, 0xc5, 0xc0, 0xb6, 0xa3, 0x92, 0x81, 0x41, 0xb0, 0x18, 0x10, 0xc0, 0x87, 0x4b, 0x0f, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0x20, 0xd8, 0xa0, 0x80, 0x16, 0x1c, 0x04, 0x1b, 0x14, 0xd0, 0x82, 0x83, 0x60, 0x71, 0x41, 0xb0, 0x78, 0x10, 0xcd, 0xe9, 0x1a, 0x8b, 0x83, 0x60, 0xe1, 0x17, 0x44, 0x0b, 0xc2, 0x41, 0xb0, 0x41, 0x2c, 0x86, 0xf0, 0x1c, 0x44, 0x5d, 0xe5, 0xcd, 0xf1, 0x78, 0xd8, 0x0d, 0x79, 0xac, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x78, 0x07, 0x11, 0xac, 0x76, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x98, 0x95, 0xe4, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0xc4, 0x9f, 0xed, 0xce, 0x71, 0xe8, 0x20, 0x69, 0x00, 0xe1, 0x38, 0x34, 0xec, 0x86, 0x86, 0x8b, 0x0b, 0x82, 0x0d, 0x22, 0x15, 0x87, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xe0, 0xdc, 0x3b, 0x88, 0x60, 0xb5, 0x8b, 0x83, 0xc8, 0xa1, 0xe4, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x86, 0x2d, 0x79, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xaa, 0xde, 0x41, 0x04, 0xab, 0x5d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x1b, 0xa4, 0x86, 0x9d, 0x1c, 0x1a, 0x17, 0x1d, 0x87, 0x0e, 0x92, 0x06, 0x10, 0x8e, 0x43, 0xc7, 0xa1, 0x61, 0x37, 0x58, 0xe2, 0xeb, 0xb3, 0x20, 0xd8, 0x20, 0x66, 0x25, 0x79, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xa9, 0x38, 0x3c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8d, 0x8b, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x75, 0x4c, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0x83, 0xd4, 0xb0, 0x93, 0x83, 0xb0, 0xa7, 0x3e, 0x0e, 0x1d, 0x87, 0x0e, 0x92, 0x06, 0x10, 0x8e, 0x43, 0xc3, 0x6e, 0xb0, 0x22, 0xe5, 0x6a, 0x41, 0xb0, 0x41, 0xa4, 0xe2, 0xf0, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x86, 0x2d, 0x79, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1a, 0x17, 0x1d, 0x24, 0x0d, 0x20, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x61, 0x4b, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x61, 0x4f, 0x3d, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xac, 0x63, 0xf2, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x1b, 0xa4, 0x86, 0x9d, 0x1c, 0x24, 0x0d, 0x20, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x61, 0x37, 0x58, 0x5e, 0x73, 0xb5, 0x20, 0xd8, 0x20, 0x66, 0x25, 0x79, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1a, 0x17, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xa9, 0x38, 0x3c, 0x07, 0x11, 0x31, 0xca, 0x73, 0x1c, 0x3a, 0x9c, 0x62, 0x83, 0x60, 0xe1, 0x37, 0x28, 0x17, 0x7b, 0x0e, 0x4a, 0x86, 0xa6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x1c, 0xa7, 0xe3, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x4b, 0xb0, 0xff, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x84, 0xa1, 0xf2, 0x0c, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x42, 0x3e, 0x7b, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x48, 0x55, 0xb5, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x8a, 0x45, 0x6e, 0x0e, 0xa9, 0x9a, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x78, 0xec, 0x4c, 0xc5, 0x71, 0xe8, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0x5f, 0x10, 0x2d, 0xec, 0x20, 0xd8, 0x20, 0x16, 0x43, 0x78, 0x0e, 0x92, 0x29, 0x40, 0x8e, 0xc7, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x10, 0xc3, 0x61, 0x37, 0x34, 0x3d, 0x5f, 0x0c, 0xfc, 0xcc, 0x3c, 0x41, 0x6d, 0xd8, 0x0d, 0xed, 0xc3, 0x17, 0x03, 0x3f, 0x74, 0x3d, 0xdb, 0x1d, 0x76, 0x43, 0x4f, 0xf2, 0xc5, 0x80, 0x80, 0x9b, 0x77, 0xe3, 0x31, 0xec, 0xc2, 0x1d, 0x24, 0x6d, 0x74, 0x2c, 0x06, 0x04, 0x4e, 0xfd, 0x53, 0xa9, 0xc3, 0x29, 0x76, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xf4, 0xbe, 0x83, 0x08, 0x56, 0xbb, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x1c, 0x6e, 0x10, 0x0f, 0x3f, 0x83, 0x64, 0xc8, 0x20, 0x1b, 0x66, 0x90, 0x0e, 0x3b, 0xc8, 0x07, 0xc1, 0x38, 0x88, 0x86, 0x0e, 0xc2, 0x61, 0x07, 0xd9, 0xd0, 0xe1, 0x67, 0x90, 0x0e, 0x37, 0x88, 0x06, 0xf1, 0x20, 0x1f, 0x04, 0x83, 0x70, 0x98, 0x41, 0x32, 0x0e, 0x19, 0xe4, 0xc3, 0x8d, 0x43, 0x87, 0x1f, 0xc4, 0xc3, 0x0e, 0x92, 0x41, 0x36, 0x08, 0x06, 0xe1, 0x90, 0x41, 0x34, 0xc3, 0x0c, 0xd2, 0x41, 0x30, 0xec, 0x30, 0xe3, 0xd0, 0x41, 0x36, 0xc8, 0x67, 0xb8, 0x41, 0x38, 0x64, 0x90, 0x0e, 0x92, 0xe1, 0x07, 0xd1, 0x20, 0x1e, 0x84, 0x83, 0x7c, 0x10, 0x0d, 0x33, 0x0e, 0x37, 0x08, 0x86, 0x1f, 0x76, 0xc8, 0x20, 0x1d, 0xc4, 0x33, 0x74, 0x90, 0x0c, 0xb2, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0xa2, 0x97, 0x96, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0x71, 0x10, 0x0c, 0x92, 0x41, 0x32, 0xc8, 0x06, 0xe9, 0x20, 0x1f, 0xe4, 0xc3, 0x0d, 0x3f, 0xfc, 0x20, 0x18, 0x64, 0x83, 0x78, 0x10, 0x0f, 0xc2, 0x61, 0x07, 0xc9, 0x20, 0x1d, 0xe4, 0xc3, 0x0f, 0xc2, 0x41, 0x30, 0x48, 0x06, 0xd9, 0xf0, 0xc3, 0x0f, 0xc2, 0xe1, 0x87, 0x1d, 0xe4, 0x83, 0x74, 0x90, 0x0d, 0x92, 0xe1, 0x07, 0xf9, 0x20, 0x1b, 0x04, 0xc3, 0x0e, 0x3b, 0x88, 0x07, 0xe1, 0x20, 0x1d, 0x6e, 0x10, 0x0f, 0xd2, 0x41, 0x3a, 0xfc, 0x70, 0x83, 0x7c, 0xb8, 0x41, 0x30, 0xc8, 0x06, 0xf1, 0x20, 0x1e, 0x76, 0x10, 0x0f, 0x3b, 0x48, 0x06, 0xe1, 0x20, 0x19, 0x84, 0xc3, 0x0d, 0xf2, 0x41, 0x30, 0x08, 0x86, 0x1b, 0x84, 0x83, 0x64, 0x10, 0x0e, 0x37, 0x88, 0x87, 0x1d, 0x04, 0x83, 0x74, 0xd8, 0xe1, 0x06, 0xf9, 0x20, 0x1d, 0x64, 0x07, 0x71, 0xcc, 0xcb, 0x73, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x44, 0x2f, 0x2d, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0xe3, 0x8c, 0x43, 0x86, 0x0e, 0x33, 0xdc, 0xb0, 0xc3, 0x0f, 0x82, 0x41, 0x32, 0x88, 0x06, 0xd9, 0x20, 0x1c, 0xa4, 0x83, 0x78, 0x90, 0x0f, 0x3f, 0xcc, 0x20, 0x1d, 0x07, 0xd1, 0xb0, 0x83, 0x7c, 0xe8, 0x20, 0x9c, 0x41, 0x32, 0xdc, 0x90, 0x41, 0x3c, 0xc8, 0x06, 0xc1, 0xd0, 0x41, 0x34, 0x88, 0x87, 0x19, 0x24, 0x83, 0x7c, 0x10, 0x8c, 0x43, 0x86, 0x9f, 0x61, 0x07, 0xe9, 0x20, 0x1b, 0x6e, 0x10, 0x8e, 0x83, 0x64, 0x90, 0x0d, 0xa2, 0x19, 0x04, 0x83, 0x70, 0x98, 0x41, 0x3a, 0x74, 0xf8, 0x41, 0x3e, 0x88, 0x87, 0x1b, 0x76, 0xc8, 0x30, 0x33, 0xdc, 0x20, 0x19, 0x7e, 0x10, 0x0e, 0x19, 0x44, 0x83, 0x78, 0x1c, 0x3a, 0x08, 0x06, 0xd9, 0xb0, 0x83, 0x7c, 0x90, 0x76, 0x1c, 0x3a, 0x1e, 0x2f, 0xec, 0xc2, 0x6d, 0x88, 0xff, 0xc1, 0xa9, 0x1c, 0x79, 0x41, 0xb0, 0x20, 0x19, 0xb8, 0x9f, 0x0e, 0xe2, 0xa2, 0xe8, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x89, 0x86, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd9, 0x60, 0x90, 0xbc, 0x1c, 0xc4, 0x45, 0xd1, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x6f, 0x10, 0x98, 0xd8, 0x1b, 0x8c, 0x37, 0x9d, 0x0d, 0x06, 0xef, 0xe4, 0x06, 0x03, 0x91, 0x7a, 0x83, 0xc2, 0x2d, 0xe9, 0x10, 0xc3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0x55, 0xa7, 0x83, 0x08, 0x56, 0xbb, 0x38, 0x88, 0x78, 0x44, 0x9e, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x34, 0xfc, 0x82, 0x68, 0x41, 0xbc, 0x41, 0xe1, 0x96, 0xb4, 0xc1, 0x40, 0xa4, 0xde, 0x60, 0xf0, 0x4e, 0x6e, 0x30, 0xde, 0x74, 0x0e, 0x02, 0x13, 0x7b, 0x10, 0x2d, 0xec, 0x41, 0x6c, 0x58, 0xf3, 0x1c, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0xc5, 0x61, 0x17, 0x6e, 0x43, 0xea, 0xe0, 0x20, 0x4d, 0xef, 0x63, 0x41, 0x32, 0x98, 0x0d, 0xa2, 0x05, 0xca, 0xff, 0x20, 0x58, 0xf8, 0x0d, 0xce, 0x99, 0xc9, 0x07, 0x25, 0x43, 0xd3, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x9c, 0x99, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xf1, 0x5b, 0x70, 0x50, 0x1e, 0x19, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x68, 0x81, 0xf1, 0x1f, 0x04, 0x1b, 0x44, 0x63, 0x36, 0xcf, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x54, 0x8e, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x63, 0x7d, 0x01, 0x07, 0x8d, 0x6f, 0x89, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x68, 0x81, 0xf0, 0x0f, 0x82, 0x0d, 0xa2, 0x31, 0x9b, 0x67, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x70, 0x96, 0x3d, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xad, 0x78, 0xe4, 0x20, 0x48, 0xf1, 0x8f, 0x43, 0xc7, 0xa1, 0x41, 0xb4, 0xe0, 0xfe, 0x20, 0xd8, 0x20, 0x1a, 0xb3, 0x79, 0x06, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x85, 0x5b, 0xd2, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa3, 0xd5, 0xfc, 0x60, 0x8c, 0x3d, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x68, 0x41, 0xfd, 0x20, 0xd8, 0x20, 0x1a, 0xb3, 0x79, 0x06, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xe5, 0x62, 0xcf, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x25, 0x4d, 0xc3, 0x41, 0xb2, 0x7c, 0xc9, 0x71, 0xe8, 0x38, 0x34, 0x88, 0x16, 0x94, 0x1f, 0x9c, 0xe8, 0x96, 0x0f, 0xc9, 0xa5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xa8, 0xdf, 0x20, 0xd1, 0x5b, 0x61, 0x41, 0xb0, 0xc1, 0x39, 0xf8, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0xb3, 0x41, 0x90, 0xe2, 0x6f, 0x30, 0xc6, 0x9e, 0x36, 0x48, 0x96, 0x2f, 0xd9, 0xa0, 0x3c, 0x32, 0xd8, 0xa0, 0xf1, 0x2d, 0x91, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x97, 0x48, 0xc4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x04, 0x4f, 0x84, 0x43, 0xa3, 0x96, 0xe3, 0xd0, 0xc2, 0x6f, 0x3c, 0x3f, 0x68, 0xb7, 0xc4, 0x7f, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x58, 0x69, 0xd2, 0x39, 0x34, 0x6a, 0x39, 0x0e, 0x6d, 0x10, 0xf2, 0xd9, 0x0b, 0x82, 0x0d, 0x12, 0x62, 0x00, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9c, 0x6b, 0x8a, 0x0f, 0x92, 0xe5, 0x4b, 0x8e, 0x43, 0x07, 0x69, 0xee, 0x19, 0x83, 0x68, 0xc1, 0x7c, 0x83, 0x44, 0x4f, 0x85, 0x05, 0xc1, 0x06, 0xe7, 0xe0, 0xef, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0xc1, 0x9f, 0x83, 0x88, 0x0e, 0xe1, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x31, 0xfc, 0x39, 0xa4, 0x6a, 0x8e, 0x43, 0x1b, 0x92, 0x1d, 0x1b, 0x84, 0x7c, 0xf6, 0x06, 0x45, 0xae, 0xc2, 0x06, 0x69, 0xee, 0x19, 0x1b, 0x24, 0x7a, 0x2b, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xbb, 0x44, 0x22, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0x11, 0x95, 0x30, 0x73, 0x1c, 0x5a, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xa4, 0xf6, 0x83, 0x43, 0xa3, 0x96, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x0e, 0xa9, 0xea, 0x87, 0x46, 0x2d, 0xc7, 0xa1, 0x0d, 0x2d, 0x80, 0x16, 0x04, 0x1b, 0x24, 0xc4, 0x00, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0xd7, 0x14, 0x1f, 0x14, 0xb9, 0x0a, 0xc7, 0xa1, 0x83, 0x64, 0x0d, 0x84, 0xc3, 0x8e, 0xc9, 0xf1, 0x6d, 0x05, 0xc1, 0x82, 0x64, 0x40, 0xb0, 0xf6, 0x1d, 0xc4, 0x45, 0xd1, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xc1, 0x59, 0xf6, 0xf8, 0xe0, 0xc4, 0xec, 0x7b, 0x30, 0xf0, 0x43, 0x8e, 0x43, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0xd1, 0x4b, 0xcb, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x19, 0x7e, 0xe3, 0xf9, 0x38, 0xc8, 0x06, 0xf1, 0x20, 0x1f, 0x84, 0xc3, 0x0d, 0x82, 0xe1, 0x07, 0xc9, 0x20, 0x1b, 0xa4, 0x83, 0x78, 0x90, 0x0f, 0x3b, 0xfc, 0x20, 0x19, 0x04, 0xc3, 0x0f, 0x3b, 0x08, 0x06, 0xe9, 0x20, 0x1b, 0x24, 0xc3, 0x0f, 0xf2, 0xe1, 0x07, 0xe1, 0x20, 0x1f, 0x24, 0x83, 0x6c, 0xf8, 0x41, 0x3a, 0x08, 0x07, 0xd9, 0x20, 0x1d, 0x76, 0xf8, 0x41, 0x3c, 0x48, 0x06, 0xe9, 0x20, 0x1f, 0xc4, 0x83, 0x60, 0x90, 0x0e, 0x3b, 0xdc, 0x20, 0x1c, 0x7e, 0xb8, 0x41, 0x36, 0x08, 0x07, 0xf1, 0x20, 0x1f, 0xc4, 0x83, 0x7c, 0x90, 0x0c, 0x82, 0x41, 0x32, 0x88, 0x87, 0x1b, 0x76, 0x10, 0x0c, 0x3b, 0xdc, 0x20, 0x1c, 0x24, 0x83, 0x7c, 0xb8, 0x41, 0x36, 0xec, 0x20, 0x18, 0xa4, 0x83, 0x70, 0xb8, 0x41, 0x38, 0x48, 0x07, 0xf1, 0x20, 0x1b, 0x04, 0xc3, 0x0d, 0xdb, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x4a, 0x0e, 0x22, 0x3a, 0x84, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x10, 0x1c, 0x44, 0x74, 0x08, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xd1, 0x6a, 0x7e, 0x90, 0xda, 0x01, 0x72, 0x1c, 0x3a, 0x68, 0xb2, 0xff, 0xfd, 0x38, 0x34, 0x08, 0x16, 0x24, 0x03, 0xc5, 0xe9, 0x20, 0xa2, 0x43, 0x78, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x94, 0x68, 0x38, 0x0b, 0xbf, 0xf1, 0x7c, 0x41, 0xb0, 0x41, 0x4c, 0x98, 0xf0, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x0e, 0x52, 0x78, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x44, 0xc1, 0x09, 0xcf, 0x41, 0x6a, 0x07, 0xc8, 0x71, 0xe8, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x8e, 0xf6, 0x83, 0x34, 0xef, 0x91, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xf0, 0x1b, 0x44, 0xef, 0x2b, 0xcf, 0xb0, 0x1b, 0xd6, 0xf7, 0x16, 0x03, 0xdf, 0x7c, 0x51, 0x14, 0x1a, 0x76, 0x43, 0xd3, 0xf3, 0xc5, 0xc0, 0x27, 0x89, 0x6e, 0xe2, 0x86, 0xdd, 0xd0, 0x3e, 0x7c, 0x31, 0xf0, 0xe7, 0x7d, 0xe0, 0xda, 0x61, 0x37, 0xf4, 0x24, 0x5f, 0x0c, 0xfc, 0x74, 0xbb, 0x36, 0x7d, 0xd8, 0x0d, 0x62, 0x68, 0x96, 0xe7, 0xd0, 0x38, 0xea, 0x78, 0x7c, 0x70, 0x5a, 0xc1, 0x3d, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x34, 0xe4, 0xd2, 0xe0, 0xca, 0xda, 0xc8, 0x62, 0x6c, 0xe0, 0x21, 0xb5, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x7c, 0x72, 0x69, 0x70, 0x65, 0x6d, 0xe4, 0xc1, 0x9a, 0xf0, 0x9d, 0xe3, 0xf1, 0xc2, 0xaf, 0x61, 0x85, 0x76, 0xe1, 0x17, 0x7e, 0x41, 0x32, 0x50, 0xbc, 0x8e, 0xe7, 0x07, 0x87, 0x77, 0xda, 0x83, 0x34, 0xee, 0x93, 0xe1, 0x17, 0x7e, 0x83, 0xe7, 0xbd, 0x02, 0x1c, 0x1c, 0x68, 0x6e, 0x0f, 0xd6, 0xf2, 0x09, 0x0c, 0x82, 0xc5, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xbe, 0x3b, 0x87, 0x46, 0x47, 0x07, 0xe9, 0xcf, 0x44, 0x83, 0x60, 0x83, 0x78, 0xc8, 0xe8, 0x39, 0x18, 0x55, 0xd8, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x82, 0x60, 0x83, 0x47, 0x88, 0x0f, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x35, 0xec, 0xe4, 0xe0, 0xb9, 0x36, 0x01, 0xc7, 0xa1, 0x15, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x7e, 0x83, 0x73, 0xf0, 0xf7, 0x41, 0xfa, 0x6f, 0xc3, 0xa1, 0x51, 0xcb, 0xf1, 0x78, 0x85, 0xdf, 0xa0, 0x64, 0x68, 0x3a, 0x88, 0xcd, 0xef, 0x9a, 0x15, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x7e, 0x83, 0x73, 0xf0, 0xf7, 0x20, 0x19, 0x18, 0xad, 0xe3, 0xf1, 0x21, 0xd1, 0x7a, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x1b, 0x84, 0x7e, 0xc9, 0x21, 0xb5, 0x74, 0x3c, 0x1e, 0x7e, 0x83, 0x92, 0xa1, 0x69, 0x90, 0x0c, 0xcc, 0xd6, 0xf1, 0x78, 0xf8, 0x05, 0xc1, 0x06, 0xcb, 0xc2, 0x60, 0x16, 0x87, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0x82, 0x72, 0x90, 0x7e, 0x9f, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x43, 0xe8, 0x60, 0x28, 0x16, 0x1d, 0x87, 0x16, 0x04, 0x1b, 0x9c, 0x83, 0xbf, 0x87, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0xa3, 0xe3, 0xd0, 0x61, 0xa3, 0x76, 0x61, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xe8, 0x1d, 0x87, 0x0e, 0x0e, 0xa0, 0xe9, 0x0b, 0xbb, 0x20, 0xd8, 0x20, 0xae, 0x49, 0x7a, 0x06, 0xc9, 0x90, 0x83, 0x17, 0x56, 0x59, 0x2c, 0x08, 0x16, 0x76, 0x41, 0xb0, 0x20, 0x19, 0xd4, 0x1c, 0x3c, 0x16, 0x6b, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0x05, 0xd0, 0xa1, 0xf1, 0xfc, 0x71, 0x68, 0x41, 0xb0, 0x20, 0x19, 0x94, 0x1c, 0x3c, 0x16, 0x6b, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0xe9, 0xd0, 0x04, 0xf5, 0xf5, 0x38, 0x74, 0x68, 0x5c, 0x34, 0x08, 0x16, 0x24, 0x83, 0xd9, 0x21, 0x75, 0x30, 0x08, 0xd6, 0x20, 0x2a, 0xcf, 0x72, 0x36, 0x48, 0x3f, 0x1b, 0x1a, 0x24, 0x83, 0x6b, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0xa4, 0xc0, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x30, 0x58, 0x63, 0x0f, 0xd2, 0xe1, 0x20, 0x26, 0x48, 0xd7, 0x1f, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0xa0, 0xf4, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x78, 0xdf, 0x69, 0x02, 0xe1, 0xfb, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x48, 0xd1, 0x0e, 0xbf, 0xf1, 0x7c, 0x98, 0x83, 0xb7, 0x1b, 0x44, 0x1c, 0x87, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x20, 0x58, 0xd8, 0x85, 0x5b, 0x10, 0x2c, 0x48, 0x06, 0xfa, 0x3a, 0x4d, 0x60, 0x7c, 0xff, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x07, 0x27, 0x8a, 0xe8, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0xf6, 0x61, 0x7a, 0x0e, 0x06, 0x35, 0xf0, 0xc6, 0xa1, 0x41, 0xb0, 0x20, 0x19, 0xfc, 0x99, 0x40, 0xf9, 0xfd, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x09, 0xee, 0xd8, 0x21, 0x75, 0x70, 0x1c, 0x1a, 0x76, 0xe1, 0x36, 0xc4, 0x70, 0x10, 0x2c, 0x48, 0x06, 0xe2, 0x76, 0x10, 0x98, 0xd8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x7b, 0x85, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x5a, 0x00, 0x1d, 0x8c, 0xf6, 0xe0, 0xe3, 0xd0, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x19, 0xfc, 0x99, 0xc0, 0xf9, 0xfd, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x04, 0xc2, 0xd7, 0xff, 0xa0, 0xf1, 0x14, 0x96, 0xe3, 0xd0, 0x20, 0x58, 0x90, 0x0c, 0xea, 0x0e, 0x06, 0x22, 0xf5, 0x20, 0x58, 0x10, 0x6c, 0x10, 0x95, 0x67, 0x39, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x83, 0xd5, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0x81, 0xe2, 0xf5, 0xff, 0x38, 0x74, 0x48, 0xd5, 0x1c, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x72, 0x58, 0x3e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0xac, 0x0e, 0xa9, 0x83, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x67, 0xd9, 0xe3, 0x83, 0xc0, 0xc4, 0x3e, 0x0e, 0x1d, 0x94, 0xd2, 0x3d, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x46, 0x87, 0x54, 0xcd, 0xc1, 0xe0, 0xf4, 0x19, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xc1, 0x38, 0x83, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x82, 0x64, 0x20, 0x78, 0x07, 0xe7, 0xcc, 0xe4, 0x83, 0x17, 0x9f, 0x13, 0x1c, 0xc4, 0x73, 0x38, 0xce, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x88, 0xd4, 0x8d, 0x9d, 0x83, 0x81, 0x2d, 0x3a, 0xec, 0xc2, 0x6d, 0x48, 0x4c, 0x1d, 0x87, 0x36, 0x9c, 0x62, 0xc7, 0xa1, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0xe0, 0xcb, 0x95, 0x8d, 0xbd, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0xe1, 0x37, 0x28, 0x19, 0x9a, 0x0e, 0x0e, 0xbf, 0xb6, 0xc3, 0x2f, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x06, 0xe7, 0xe0, 0xef, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xc4, 0xeb, 0x38, 0x74, 0x30, 0x42, 0xc2, 0x06, 0xc1, 0x1a, 0x84, 0x14, 0xf8, 0xc1, 0x60, 0x8d, 0x1d, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0xa0, 0x66, 0x82, 0xff, 0xfd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xc1, 0x41, 0xb4, 0x24, 0xf5, 0x1c, 0x34, 0xd3, 0xa9, 0x34, 0x41, 0x7e, 0xfd, 0x38, 0x34, 0xfc, 0x82, 0x68, 0x41, 0xf5, 0xb0, 0x1b, 0x87, 0x16, 0x04, 0x0b, 0x92, 0xc1, 0x9f, 0x09, 0x84, 0xdf, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x09, 0xf6, 0xeb, 0x0f, 0x2d, 0x80, 0x8e, 0x43, 0x87, 0x1e, 0x42, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0x3b, 0xec, 0xc6, 0xa1, 0x35, 0x44, 0x73, 0x10, 0x6c, 0x10, 0xd7, 0x4b, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xde, 0x6e, 0x10, 0x71, 0xc8, 0xd7, 0x1e, 0x87, 0x0e, 0xa9, 0x83, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xfa, 0x3a, 0x1d, 0xb4, 0x8b, 0xa5, 0x74, 0x30, 0xaa, 0xb0, 0x87, 0x5f, 0x10, 0x2d, 0x64, 0xd8, 0x05, 0xc1, 0x82, 0x64, 0x50, 0x33, 0x81, 0xf1, 0xfb, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0x09, 0xfa, 0xeb, 0x1f, 0x87, 0x16, 0x04, 0x0b, 0x92, 0x41, 0xc9, 0x41, 0x2c, 0x46, 0xf5, 0x1c, 0xc4, 0xbe, 0xb3, 0xcc, 0x71, 0xe8, 0x78, 0xbc, 0x71, 0x68, 0x43, 0xd6, 0xee, 0xd0, 0x02, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x37, 0x78, 0x55, 0x9a, 0xe2, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0xf8, 0x0d, 0x4a, 0x86, 0xa6, 0x83, 0x92, 0xa1, 0x69, 0xe1, 0x17, 0x04, 0x8b, 0x0b, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x82, 0x64, 0x60, 0xec, 0x0e, 0x1a, 0xdf, 0x12, 0x39, 0x58, 0xcb, 0x27, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xa4, 0x9d, 0x0e, 0x9a, 0x2a, 0x38, 0x39, 0x48, 0x1d, 0xdb, 0x39, 0x0e, 0x0d, 0x82, 0x85, 0x5f, 0x90, 0x0c, 0x8c, 0xdd, 0x41, 0x5a, 0xf1, 0xc8, 0x41, 0xc9, 0xd0, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x82, 0x60, 0x41, 0x32, 0x28, 0x39, 0x68, 0x2a, 0x55, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xc2, 0xed, 0xc9, 0xa1, 0x05, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x06, 0x84, 0xbf, 0xd3, 0x41, 0xe3, 0x91, 0x01, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xf0, 0x1b, 0xcf, 0x37, 0x38, 0xf3, 0xd5, 0xae, 0x41, 0x42, 0xd9, 0xc9, 0x71, 0x68, 0x83, 0xd8, 0xf1, 0xea, 0x39, 0xc4, 0xf0, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x0c, 0xee, 0xca, 0x61, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xfc, 0xca, 0x41, 0x53, 0xa9, 0x22, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x7b, 0x85, 0x87, 0x1e, 0x3b, 0xc7, 0xa1, 0x05, 0xc1, 0x82, 0x64, 0x30, 0x3b, 0x0e, 0x0d, 0x82, 0x35, 0x88, 0xca, 0xb3, 0x9c, 0x83, 0xc8, 0x57, 0xe9, 0x19, 0x04, 0x0b, 0x82, 0x0d, 0x42, 0x0a, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x21, 0x00, 0x7e, 0x90, 0x48, 0x11, 0x72, 0x30, 0xae, 0xd1, 0x8f, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x61, 0x5c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x6f, 0x2e, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x14, 0xed, 0xf0, 0x1b, 0xcf, 0x87, 0x39, 0x78, 0x53, 0x0d, 0xc5, 0x71, 0xe8, 0x90, 0x3a, 0x38, 0x0e, 0x0d, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x83, 0x60, 0x43, 0xbe, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0xf1, 0xfc, 0x21, 0x75, 0x70, 0x1c, 0x5a, 0x10, 0x2c, 0x48, 0x06, 0xd6, 0xeb, 0x0e, 0xe2, 0x28, 0xa6, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x0d, 0x06, 0xef, 0xe4, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x83, 0x60, 0x41, 0x32, 0x10, 0x9d, 0x83, 0xc8, 0x9c, 0xe9, 0x39, 0x88, 0x7d, 0x67, 0x99, 0x8d, 0x43, 0x83, 0x60, 0x83, 0xf8, 0x9a, 0xe9, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0xe6, 0x39, 0xd4, 0x21, 0x75, 0x70, 0x1c, 0x3a, 0x0e, 0x1d, 0x62, 0x78, 0x88, 0xe1, 0xf1, 0x78, 0x71, 0xe1, 0x17, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x61, 0x17, 0x04, 0x0b, 0x92, 0x41, 0xcd, 0x41, 0x53, 0xa9, 0x22, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x52, 0xc3, 0x4e, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x6d, 0x9d, 0x0e, 0x1a, 0x8f, 0x0c, 0x38, 0x48, 0x1d, 0xdb, 0x39, 0x0e, 0x2d, 0xec, 0x82, 0x60, 0x83, 0xb8, 0x76, 0xeb, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x1a, 0x76, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x24, 0xc1, 0xf5, 0x1c, 0xac, 0x78, 0xb0, 0x39, 0x0e, 0x2d, 0xec, 0x82, 0x60, 0x83, 0xb8, 0x76, 0xeb, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x70, 0x7b, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x24, 0xc1, 0xf5, 0x1c, 0x94, 0x9c, 0x39, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xe7, 0x80, 0xef, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x71, 0xaa, 0xd8, 0x61, 0xa3, 0x76, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x86, 0xa3, 0x7d, 0x10, 0x6c, 0x10, 0x02, 0xe0, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x28, 0x4e, 0x07, 0xd1, 0xeb, 0xd2, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x40, 0xc4, 0xbf, 0xc1, 0x68, 0x4e, 0x3a, 0x18, 0x03, 0x0b, 0xc7, 0xa1, 0x61, 0x17, 0x04, 0x0b, 0x92, 0x41, 0xcd, 0x41, 0x64, 0xce, 0xf4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x0e, 0xde, 0x6e, 0x10, 0x71, 0x1c, 0xda, 0x70, 0xb4, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0xb1, 0x0f, 0xd3, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x40, 0xc4, 0x7f, 0x50, 0x8e, 0x35, 0x1c, 0x87, 0x86, 0x5d, 0x10, 0x2c, 0x48, 0x06, 0x35, 0x07, 0x91, 0x79, 0xd3, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x38, 0x88, 0x28, 0xa9, 0x9e, 0xe3, 0xd0, 0x86, 0xa3, 0x7d, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xd1, 0x39, 0x88, 0xcc, 0x9b, 0x9e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x04, 0x1b, 0xbc, 0x50, 0x12, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x00, 0x1e, 0x84, 0x92, 0xa0, 0x60, 0x66, 0x68, 0x60, 0x5e, 0xc6, 0xd0, 0xc2, 0xd8, 0xd8, 0xca, 0xdc, 0xce, 0xca, 0xe1, 0x37, 0x9e, 0x6f, 0xb0, 0xe4, 0x15, 0x67, 0x10, 0x2c, 0x48, 0x06, 0xee, 0xa7, 0x09, 0x94, 0xef, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x0e, 0x44, 0xfc, 0xc3, 0x6f, 0x3c, 0xdf, 0xa0, 0xa4, 0x69, 0xd8, 0x90, 0xb5, 0x3b, 0x28, 0x16, 0xc9, 0x8e, 0x43, 0xc7, 0xa1, 0x83, 0x88, 0x65, 0xea, 0x39, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0xcb, 0x13, 0x83, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x4b, 0xf0, 0x5e, 0xff, 0x21, 0x55, 0x73, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0xde, 0x0c, 0x42, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xbc, 0xe9, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x7f, 0x26, 0xb0, 0x7e, 0xff, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xfc, 0xe0, 0xf4, 0x1c, 0x52, 0x35, 0xc7, 0xa1, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0x10, 0x52, 0xe0, 0x0b, 0xbb, 0xb0, 0x1b, 0x2c, 0x3f, 0x15, 0x3a, 0xac, 0x6f, 0x1e, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0xc3, 0xd1, 0x3e, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xa9, 0x3a, 0x38, 0x66, 0x15, 0x1f, 0x0c, 0x4e, 0x9f, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x3a, 0x13, 0x78, 0xbf, 0xff, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xc3, 0xb8, 0x1c, 0x1a, 0xcf, 0x1f, 0x87, 0x16, 0x6e, 0x83, 0xf1, 0xa6, 0x73, 0x10, 0x52, 0xe0, 0x87, 0xa3, 0xfd, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xfe, 0xdc, 0x9b, 0x5d, 0x79, 0x48, 0x2d, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x87, 0xdd, 0x20, 0xa6, 0xe2, 0x7a, 0x16, 0x76, 0x41, 0xb0, 0x41, 0x5c, 0xbb, 0xf5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x0d, 0x3b, 0x39, 0x88, 0x3d, 0xba, 0x9e, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0x73, 0xc0, 0xf7, 0xb0, 0x0b, 0xbb, 0x61, 0x2d, 0x74, 0x43, 0x0c, 0x87, 0x5d, 0x10, 0x6c, 0x10, 0xf5, 0x48, 0x3d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xf1, 0x3f, 0x88, 0xa7, 0x94, 0x9e, 0xe3, 0xd0, 0x21, 0x9d, 0xbb, 0xe1, 0x14, 0x1b, 0x04, 0x0b, 0x82, 0x0d, 0xd6, 0x47, 0x3a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x97, 0xa0, 0xbc, 0x1e, 0xe2, 0x7f, 0x1c, 0x1a, 0x04, 0x0b, 0xbb, 0x70, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x24, 0x03, 0xd1, 0x39, 0x88, 0x08, 0xa6, 0x9e, 0x83, 0xf8, 0x6b, 0xec, 0xd9, 0x10, 0xff, 0x41, 0xb0, 0x41, 0x5c, 0x2f, 0xf5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x97, 0xe0, 0xbe, 0x3e, 0x24, 0x3b, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xde, 0x41, 0xf4, 0xba, 0xf4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0xc1, 0xa7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x06, 0x78, 0x09, 0x25, 0x41, 0xc1, 0xcc, 0xd0, 0xc0, 0xbc, 0x84, 0xd5, 0xe1, 0xc3, 0x6f, 0x3c, 0xdf, 0x20, 0xa1, 0xec, 0xe4, 0x20, 0x78, 0xb8, 0x8f, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0xa5, 0x73, 0x36, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x06, 0x78, 0x0a, 0x25, 0x41, 0xc1, 0xcc, 0xd0, 0xc0, 0xbc, 0xb8, 0xbd, 0xb9, 0x8d, 0x95, 0xc3, 0x6f, 0x3c, 0xdf, 0x60, 0xc9, 0x2b, 0xce, 0x20, 0x58, 0x90, 0x0c, 0xdc, 0x4f, 0x07, 0x71, 0x14, 0xd3, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x40, 0xc4, 0x3f, 0xfc, 0xc6, 0xf3, 0x0d, 0xc6, 0xd8, 0xd3, 0x86, 0xac, 0xdd, 0xc1, 0xb9, 0x10, 0xfb, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0x22, 0xd7, 0xaf, 0xe7, 0x20, 0xb6, 0xfa, 0x7a, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x38, 0xc5, 0x06, 0xc1, 0x82, 0x60, 0x83, 0xe5, 0x89, 0x41, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xe2, 0xc6, 0xb0, 0xe7, 0x90, 0x3a, 0x38, 0x0e, 0x0d, 0x82, 0x85, 0x5d, 0xb8, 0x0d, 0x31, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0xe8, 0x1c, 0x44, 0x19, 0x62, 0xcf, 0x41, 0xfc, 0x35, 0xf6, 0x6c, 0x48, 0x1d, 0x1c, 0x44, 0x03, 0x62, 0xcf, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xa2, 0x33, 0x81, 0xf6, 0xfb, 0xff, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0x10, 0x2c, 0x48, 0x86, 0x39, 0x38, 0x09, 0x1d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x88, 0x4f, 0xc0, 0x9e, 0xe1, 0x37, 0x9e, 0x6f, 0xb0, 0xe4, 0x15, 0x67, 0x10, 0x2c, 0x48, 0x06, 0xee, 0xa7, 0x09, 0xac, 0xef, 0xff, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x70, 0x20, 0xe2, 0x1f, 0x7e, 0xe3, 0xf9, 0x06, 0x69, 0x17, 0x0c, 0x1b, 0x8c, 0x56, 0xf3, 0x43, 0x0b, 0xc9, 0xe3, 0xd0, 0x71, 0xe8, 0x20, 0x7e, 0x70, 0x7a, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xd3, 0x04, 0xda, 0xf7, 0xff, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x70, 0x20, 0xe2, 0x5f, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x98, 0x67, 0xec, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x94, 0x1c, 0xc4, 0x4c, 0x63, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x08, 0x0e, 0x62, 0xa6, 0xb1, 0xe7, 0x20, 0x6a, 0x32, 0x70, 0x8e, 0x43, 0x13, 0x28, 0x5f, 0xff, 0x8f, 0x43, 0x87, 0xf8, 0x1f, 0x87, 0x86, 0x5d, 0x10, 0x2c, 0x48, 0x86, 0x39, 0x38, 0x66, 0x15, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x68, 0x3c, 0x85, 0x65, 0x83, 0x42, 0x22, 0xe9, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x8c, 0x85, 0xd1, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xc0, 0x9f, 0x7b, 0x9b, 0x4b, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf0, 0xce, 0x8d, 0xa1, 0xb9, 0xbd, 0xc9, 0xc9, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x71, 0x00, 0x04, 0x78, 0xe1, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf0, 0x0b, 0xc0, 0x3f, 0xe6, 0x05, 0xbe, 0xc5, 0x56, 0xa0, 0x7c, 0x56, 0x36, 0x8a, 0x73, 0xcb, 0x36, 0xff, 0xa6, 0xc0, 0xc1, 0xc2, 0xa1, 0x73, 0xa5, 0x18, 0x68, 0x15, 0xeb, 0x2e, 0x77, 0xbe, 0x9f, 0x99, 0x6f, 0x1e, 0xc0, 0x3f, 0x2e, 0x35, 0xc4, 0xfe, 0x23, 0xf4, 0x11, 0x67, 0x06, 0x55, 0xa1, 0x29, 0x12, 0xed, 0x45, 0x3f, 0x2a, 0x42, 0x84, 0x03, 0xff, 0x3e, 0x69, 0x57, 0x19, 0xf1, 0xa8, 0xc9, 0x9d, 0xb6, 0x0e, 0x12, 0x80, 0x00, 0x41, 0x41, 0x36, 0xd0, 0x8c, 0x5e, 0xd2, 0xbf, 0x3b, 0xa0, 0x48, 0xaf, 0xe6, 0xdc, 0xae, 0xba, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0x37, 0x28, 0x19, 0x9a, 0x0e, 0xde, 0x9b, 0x16, 0x30, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xd0, 0x98, 0x2b, 0x1b, 0x83, 0x93, 0xa9, 0xb1, 0x59, 0x8b, 0x87, 0xab, 0xeb, 0x78, 0xbc, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0x82, 0x35, 0x88, 0x78, 0x8c, 0x9e, 0x05, 0xc1, 0x06, 0xf1, 0x90, 0xd1, 0x73, 0xb0, 0x06, 0x94, 0x69, 0x10, 0x6c, 0x10, 0x0f, 0x19, 0x3d, 0x07, 0xc7, 0xec, 0xde, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x71, 0x0e, 0x5e, 0x65, 0xb4, 0xb5, 0xb8, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0x1c, 0x04, 0x1b, 0x0c, 0xce, 0xc7, 0x41, 0xb0, 0x41, 0x4c, 0x87, 0xf5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xca, 0xb3, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0xaa, 0x4e, 0xcf, 0x61, 0xa3, 0xf6, 0xb0, 0xf6, 0x7b, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0x04, 0xe5, 0xe0, 0xb1, 0x58, 0x13, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x6d, 0x9d, 0x0e, 0x9a, 0x2a, 0x38, 0x39, 0x48, 0xf1, 0x73, 0x38, 0x24, 0x3b, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x20, 0xd8, 0x20, 0xbd, 0x30, 0xe1, 0xd0, 0xa8, 0x65, 0x41, 0xb0, 0xc1, 0x39, 0xf8, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x62, 0x7c, 0xc6, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x9c, 0x62, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x20, 0xfc, 0x9d, 0x0e, 0x9a, 0x2a, 0x38, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x86, 0xdf, 0x78, 0xbe, 0xc1, 0x1b, 0x81, 0x05, 0xd6, 0x70, 0xb4, 0x0f, 0x82, 0x0d, 0xe2, 0x07, 0xa5, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0xf1, 0xfc, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0xa0, 0x38, 0x1d, 0x34, 0x55, 0x70, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x6c, 0x30, 0xde, 0x90, 0x0e, 0xf9, 0xda, 0xe3, 0xd0, 0x71, 0xe8, 0x10, 0xc3, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xec, 0x82, 0x60, 0x83, 0xf4, 0xc2, 0x84, 0x43, 0x07, 0x8d, 0x85, 0x5d, 0x10, 0x6c, 0xb0, 0x0c, 0x5e, 0xe0, 0x90, 0x86, 0x5b, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x65, 0xe9, 0xa0, 0xa9, 0x82, 0x93, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0x43, 0xb2, 0xe3, 0x60, 0x6c, 0xb8, 0x1e, 0x87, 0x06, 0xc1, 0x86, 0x18, 0x0e, 0xbf, 0x20, 0x5a, 0xc8, 0x20, 0xd8, 0xa0, 0x70, 0x4b, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x82, 0x14, 0xff, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xf0, 0x8f, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x84, 0xbf, 0xd3, 0x41, 0x53, 0x7b, 0x50, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xf0, 0x1b, 0xcf, 0x37, 0x18, 0xf9, 0xef, 0x6b, 0x10, 0xa4, 0xf8, 0x87, 0xb5, 0xdf, 0x0d, 0x06, 0x2b, 0xca, 0x06, 0x4f, 0x8d, 0x08, 0x38, 0xc4, 0xf0, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0xec, 0x20, 0xd8, 0xa0, 0x70, 0x4b, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xab, 0xd9, 0x3d, 0xc3, 0x6f, 0x3c, 0x3f, 0x78, 0x6a, 0x44, 0xc0, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0x82, 0x68, 0x21, 0x83, 0x60, 0x83, 0xc2, 0x2d, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xac, 0x66, 0xf7, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x30, 0xfc, 0x63, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0xde, 0x76, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x34, 0xfc, 0xc6, 0xf3, 0x0d, 0x46, 0xfe, 0xfb, 0x06, 0x71, 0xd2, 0xdd, 0xb3, 0xe1, 0x5c, 0x3f, 0x88, 0xe7, 0xee, 0x9e, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x7e, 0x83, 0x68, 0xf6, 0xee, 0x39, 0x88, 0x7f, 0xef, 0x9e, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x73, 0x64, 0xef, 0xe2, 0x20, 0xd8, 0x60, 0x70, 0x3e, 0x0e, 0x82, 0x0d, 0x62, 0x3a, 0xac, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x6c, 0x90, 0xf4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x88, 0x11, 0xe4, 0x9e, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x22, 0x55, 0xa7, 0xe7, 0xb0, 0xc7, 0x7b, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x83, 0x88, 0x7b, 0xee, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x86, 0xdf, 0x78, 0xbe, 0x41, 0xab, 0x9f, 0x2a, 0x1b, 0xbc, 0x11, 0x58, 0x60, 0xdc, 0xa0, 0x8c, 0xdb, 0xe9, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x18, 0xad, 0x43, 0x72, 0xe9, 0x90, 0x68, 0x1d, 0x04, 0x0b, 0x82, 0x0d, 0xc2, 0x5c, 0xfd, 0x60, 0x60, 0x8b, 0x0e, 0xbf, 0xf1, 0x78, 0xd8, 0x0d, 0x16, 0xc0, 0xfa, 0x6c, 0x38, 0xc5, 0x06, 0xc1, 0x06, 0xc3, 0x77, 0x78, 0x10, 0xac, 0x41, 0x54, 0x9e, 0xe5, 0x6c, 0x90, 0x7e, 0x36, 0x34, 0x48, 0x06, 0xc2, 0x76, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x83, 0x35, 0xf6, 0x60, 0x7c, 0x18, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x52, 0xe0, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x46, 0xab, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x41, 0x16, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0x83, 0x61, 0x0c, 0x7b, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x38, 0xc5, 0x36, 0xc4, 0xff, 0xa0, 0x75, 0x7f, 0x98, 0xe3, 0xf1, 0x82, 0x60, 0x41, 0x32, 0x30, 0x7f, 0x07, 0x89, 0x9e, 0x0a, 0x87, 0x56, 0x41, 0x2b, 0x2e, 0x08, 0x36, 0x78, 0xa0, 0xf6, 0xc2, 0xe2, 0xb0, 0x1b, 0x34, 0xf0, 0xac, 0xb2, 0x78, 0x70, 0x8c, 0x7e, 0x1f, 0x76, 0xc3, 0xae, 0xc1, 0x06, 0xf1, 0x8c, 0xdf, 0x33, 0xec, 0x86, 0x47, 0x00, 0x36, 0x44, 0x73, 0xd8, 0x05, 0xc1, 0x06, 0x71, 0xed, 0xd6, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaf, 0x3d, 0x68, 0xaa, 0xe0, 0xe4, 0x38, 0xb4, 0x20, 0x19, 0x32, 0x88, 0x16, 0xa4, 0x83, 0x60, 0x41, 0x32, 0x10, 0x9d, 0x83, 0xa6, 0x52, 0x45, 0x0e, 0x62, 0x53, 0xbf, 0xe7, 0x78, 0x3c, 0xec, 0xc2, 0x6d, 0x88, 0xe1, 0x20, 0xd8, 0x20, 0x22, 0xf8, 0x7b, 0x0e, 0x3f, 0x2a, 0x2c, 0x08, 0x36, 0x48, 0x77, 0xdf, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xd2, 0x41, 0xb0, 0x20, 0x19, 0x78, 0xdf, 0xe9, 0xa0, 0xf1, 0xc8, 0x80, 0x83, 0x51, 0x85, 0x7d, 0x3c, 0x3e, 0x0e, 0x0d, 0x82, 0x0d, 0x96, 0xc1, 0x0b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x64, 0xed, 0x86, 0xdf, 0x78, 0x7e, 0x10, 0xeb, 0xfd, 0x3d, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0x82, 0xc5, 0x0d, 0x02, 0xe0, 0xfe, 0x20, 0x00, 0xee, 0x17, 0x87, 0xdd, 0xa0, 0x81, 0x67, 0x95, 0x0d, 0xe3, 0x32, 0xec, 0x06, 0x2d, 0x4e, 0xc1, 0x6c, 0x88, 0xe6, 0x20, 0xd8, 0xe0, 0x84, 0x89, 0x3e, 0x08, 0xd6, 0x20, 0x2a, 0xcf, 0x72, 0x16, 0x24, 0x03, 0x71, 0x3b, 0x0e, 0x1d, 0x44, 0xad, 0x4a, 0xcf, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xb8, 0xf1, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x22, 0x6c, 0x62, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x86, 0x7d, 0x46, 0x0e, 0x1a, 0xf6, 0x19, 0x39, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x43, 0x27, 0xb5, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x49, 0xd3, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xb3, 0x16, 0x45, 0x07, 0xcd, 0x5a, 0x14, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0xa1, 0x71, 0xd1, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x65, 0x4d, 0x60, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc5, 0xaf, 0x63, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x7e, 0x1d, 0x3b, 0x58, 0xfc, 0x3a, 0x76, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x43, 0xd3, 0xa1, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x62, 0x24, 0xcc, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x12, 0xec, 0xfc, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x33, 0x11, 0x3e, 0x07, 0x31, 0x13, 0xe1, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x86, 0x5d, 0xb8, 0x83, 0x27, 0x5a, 0x2f, 0x2c, 0xec, 0x06, 0xe7, 0x09, 0xde, 0x05, 0xc1, 0x82, 0x64, 0xb0, 0x3b, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0xc1, 0x6b, 0x63, 0x6e, 0x0e, 0xe2, 0x19, 0xbf, 0x67, 0x10, 0x2c, 0x08, 0x36, 0x08, 0xf9, 0xec, 0x83, 0x28, 0x9f, 0xc0, 0x19, 0x04, 0x0b, 0x82, 0x0d, 0xc6, 0xd8, 0xd3, 0xc1, 0x62, 0x3e, 0xaf, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0xf8, 0x2d, 0x38, 0x88, 0x46, 0x8a, 0x9a, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x1d, 0xaf, 0xe1, 0x20, 0x9d, 0x90, 0x67, 0x10, 0x2c, 0x08, 0x36, 0x48, 0x8c, 0x84, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xb8, 0x25, 0x1d, 0x52, 0x35, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0xed, 0x82, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xc9, 0xc4, 0x0b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x02, 0x13, 0xfb, 0x20, 0x30, 0xb1, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x9e, 0xc2, 0x32, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x3a, 0x88, 0x46, 0x8a, 0x9a, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x88, 0x06, 0xbf, 0x9b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x87, 0x09, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf1, 0xa6, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x34, 0xf8, 0xdd, 0x1c, 0x0c, 0x4e, 0x9f, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xd1, 0x61, 0x82, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x70, 0x4b, 0x3a, 0xec, 0x15, 0x1e, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x04, 0x82, 0xfd, 0x7f, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0xb8, 0x25, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0x81, 0x35, 0xff, 0xff, 0x13, 0x58, 0xf7, 0xff, 0x7f, 0x1c, 0x3a, 0x0e, 0x1d, 0xa4, 0xd7, 0x09, 0x1c, 0x8f, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x86, 0x68, 0x6e, 0x18, 0x97, 0xc3, 0xd1, 0x7e, 0x3c, 0x5e, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xc1, 0x06, 0x27, 0x4c, 0xf4, 0x41, 0xb0, 0x06, 0xe9, 0x67, 0x43, 0x1b, 0x44, 0xbe, 0x4a, 0xcf, 0x41, 0xec, 0xc4, 0xf7, 0x0c, 0x82, 0x05, 0xc1, 0x06, 0x83, 0x35, 0xf6, 0xa0, 0x05, 0x5d, 0x81, 0x05, 0xc1, 0x86, 0x68, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x52, 0xfc, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x8d, 0x04, 0x0f, 0xa2, 0x0d, 0xad, 0xe7, 0x38, 0x34, 0x08, 0x36, 0x44, 0x73, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x18, 0x7b, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xd0, 0x48, 0xf0, 0x20, 0xcd, 0x7c, 0xfb, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x61, 0x37, 0x08, 0x12, 0xef, 0x0d, 0x46, 0xfe, 0xc3, 0x20, 0xd8, 0xe0, 0x84, 0x89, 0x3e, 0x08, 0x36, 0x88, 0x24, 0x02, 0x9f, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x70, 0xe3, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x51, 0x8b, 0x50, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x90, 0xe2, 0x0f, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x30, 0x90, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x3c, 0x7f, 0x10, 0xf2, 0xd9, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x44, 0x73, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x4e, 0x6a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x23, 0xb3, 0xf7, 0x60, 0x3d, 0xba, 0xd8, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x27, 0xb5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x89, 0x91, 0x30, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x8c, 0xcc, 0xde, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x05, 0xd9, 0xce, 0xc1, 0x18, 0x58, 0x38, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0xa1, 0x87, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xcd, 0x92, 0x0e, 0xa2, 0x0d, 0xad, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0xe3, 0xa2, 0x83, 0xc4, 0x9b, 0xa0, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x6c, 0x68, 0x01, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0xd3, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x16, 0x40, 0x07, 0xc5, 0xe8, 0xcf, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0xd3, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x07, 0x22, 0xfe, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x8d, 0x8e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x14, 0x64, 0x3b, 0x07, 0xe9, 0x8d, 0x0d, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x28, 0x72, 0x15, 0x06, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x11, 0x9b, 0x92, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0xd0, 0xb4, 0x24, 0xcb, 0x71, 0xe8, 0x38, 0x74, 0x90, 0x5e, 0x27, 0x70, 0x3c, 0x3e, 0x1e, 0xaf, 0x20, 0xd8, 0x20, 0x62, 0xee, 0x7b, 0x0e, 0x9a, 0xa2, 0x50, 0x1a, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x82, 0x60, 0x41, 0x32, 0xf8, 0x72, 0xf0, 0x58, 0xac, 0x89, 0x83, 0x83, 0x56, 0xef, 0xc2, 0x2e, 0x08, 0x16, 0x24, 0x03, 0xf9, 0x95, 0x83, 0xc7, 0x62, 0x4d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x0e, 0x52, 0x63, 0x3a, 0x8e, 0x43, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x3f, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0x5f, 0xa7, 0x83, 0xa6, 0x0a, 0x4e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x43, 0x7f, 0xf2, 0x43, 0xfc, 0x0f, 0xa9, 0x9a, 0xe3, 0xd0, 0xb0, 0x0b, 0xb7, 0xa1, 0x3f, 0xf9, 0x20, 0xd8, 0x20, 0x22, 0xf8, 0x7b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x8c, 0xb1, 0xa7, 0x83, 0x82, 0x6c, 0xe7, 0x38, 0xb4, 0x20, 0xd8, 0xe0, 0x84, 0x89, 0x3e, 0x08, 0x36, 0x88, 0x34, 0x95, 0x9e, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0xb0, 0xc6, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xbc, 0xef, 0x74, 0xd0, 0x2e, 0x96, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x21, 0x45, 0x3b, 0xfc, 0xc6, 0xf3, 0x61, 0x0e, 0x4a, 0x9a, 0x86, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x21, 0x05, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x8d, 0x6b, 0x61, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x90, 0x02, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x27, 0x2c, 0x3d, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x04, 0x59, 0xfc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x74, 0xbc, 0x86, 0xc3, 0x5e, 0xe1, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0xf1, 0xe6, 0xd2, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0xfa, 0x93, 0x1f, 0x94, 0x04, 0x0d, 0x07, 0x83, 0x77, 0xf2, 0x38, 0x34, 0xc8, 0xd6, 0x90, 0xc7, 0x5e, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0xf4, 0xcf, 0x41, 0xb1, 0xcb, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x84, 0xe7, 0xa0, 0xd8, 0xe5, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf1, 0x20, 0xea, 0xd8, 0x71, 0x86, 0xdf, 0x78, 0xbe, 0x71, 0xe8, 0x60, 0xf0, 0x4e, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x61, 0x17, 0x76, 0x83, 0x92, 0x07, 0x69, 0x43, 0x0c, 0x87, 0xdd, 0xa0, 0x7c, 0x1a, 0x3a, 0xa4, 0x73, 0x17, 0x7e, 0x41, 0xb4, 0xb0, 0xc3, 0x2e, 0xec, 0xc2, 0x2d, 0x08, 0x36, 0x88, 0xaf, 0x99, 0x9e, 0x83, 0xd8, 0x77, 0x96, 0x19, 0x04, 0x1b, 0x44, 0xd0, 0x5a, 0xcf, 0xa1, 0x63, 0xfc, 0x61, 0x7d, 0x73, 0x41, 0xb0, 0x41, 0x7c, 0xcd, 0xf4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0xbb, 0x60, 0x38, 0xa4, 0x6a, 0x8e, 0x43, 0x87, 0xd4, 0xc1, 0xf1, 0xf8, 0x20, 0x1a, 0xc1, 0x70, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x1e, 0x1f, 0x8f, 0x07, 0xc1, 0x06, 0x6f, 0x47, 0x4b, 0x5b, 0x1c, 0x04, 0x6b, 0x10, 0xf1, 0x18, 0x3d, 0x1b, 0x44, 0xdd, 0x70, 0xcf, 0x82, 0x60, 0x83, 0x78, 0xc8, 0xe8, 0x39, 0x58, 0xd5, 0x0e, 0xb5, 0x20, 0xd8, 0x60, 0x65, 0x6d, 0xd4, 0xc1, 0x12, 0xfe, 0x9f, 0x41, 0xb0, 0x41, 0x3c, 0x64, 0xf4, 0x1c, 0x44, 0x1e, 0xa7, 0xc5, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf8, 0x73, 0x65, 0x63, 0xf0, 0xc1, 0x31, 0xe6, 0xec, 0x78, 0xbc, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc1, 0x4b, 0xff, 0x78, 0x07, 0x0e, 0xc3, 0xf8, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0xd9, 0xe0, 0x6d, 0x8e, 0xbc, 0x07, 0x51, 0x5a, 0xe6, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xae, 0xb4, 0x90, 0x0c, 0x5c, 0x69, 0xa1, 0x75, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x4a, 0x0b, 0xd1, 0xc0, 0x95, 0x16, 0xb6, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x95, 0x16, 0xe2, 0x83, 0x78, 0x4c, 0xf3, 0x59, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xd2, 0x42, 0x3e, 0x70, 0xa5, 0x85, 0xd1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xa5, 0x85, 0xcd, 0x41, 0x6c, 0xb0, 0xf9, 0x1c, 0x62, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x1b, 0x3c, 0x9e, 0x92, 0x77, 0xe0, 0x4a, 0x0b, 0xd3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x4a, 0x0b, 0xcb, 0x83, 0x68, 0x76, 0xf3, 0x39, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x36, 0x78, 0x9d, 0x26, 0xef, 0xc0, 0x95, 0x16, 0x4a, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x2b, 0x2d, 0x14, 0x1c, 0xc4, 0x5f, 0x9c, 0xcf, 0xf0, 0x0b, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x2b, 0x2d, 0x34, 0x0c, 0x5c, 0x69, 0xa1, 0xe5, 0xa0, 0xed, 0x85, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xd2, 0x42, 0xcd, 0xc0, 0x95, 0x16, 0x3a, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xae, 0xb4, 0xd0, 0x35, 0x70, 0xa5, 0x85, 0xb2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x4a, 0x0b, 0x3d, 0x07, 0xb1, 0x82, 0xe7, 0x33, 0x08, 0x36, 0x68, 0xe5, 0xba, 0xfc, 0x20, 0xfd, 0x99, 0x68, 0x90, 0x6d, 0x10, 0xfb, 0x75, 0x3e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x95, 0x16, 0x1a, 0x07, 0xae, 0xb4, 0x50, 0x39, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x5c, 0x69, 0xa1, 0xed, 0x20, 0x8a, 0xf7, 0x7c, 0x06, 0xc1, 0x06, 0xad, 0x5c, 0x97, 0x1f, 0x8c, 0x2a, 0xec, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xf8, 0x36, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x69, 0x71, 0x07, 0x51, 0x5a, 0xe6, 0xb3, 0xb8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xec, 0xc5, 0x0f, 0xdc, 0x7f, 0x21, 0x59, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xfe, 0x42, 0x32, 0x70, 0xfe, 0x85, 0xc2, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xfa, 0x0b, 0xc9, 0x41, 0x6c, 0x08, 0xfa, 0x0c, 0xbb, 0x61, 0x05, 0x75, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xfa, 0x0b, 0x93, 0x81, 0xeb, 0x2f, 0xd4, 0x0c, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x07, 0xc1, 0x06, 0x8d, 0x5c, 0xaf, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x7e, 0x7b, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x13, 0xe0, 0x05, 0x57, 0x27, 0xb6, 0x56, 0x96, 0xd7, 0xf2, 0xe6, 0xc6, 0x96, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xfe, 0xc2, 0x6c, 0xe0, 0xfa, 0x0b, 0x15, 0xe3, 0x41, 0xec, 0x1f, 0xfa, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0xd9, 0xe0, 0xad, 0x94, 0xcd, 0x07, 0x11, 0x4f, 0xe8, 0x73, 0x38, 0xc5, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xf3, 0x2f, 0x24, 0x07, 0xb1, 0x21, 0xe8, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xce, 0xbf, 0x10, 0x0d, 0x9c, 0x7f, 0x21, 0x3d, 0x68, 0x6a, 0xc9, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xf3, 0x2f, 0xc4, 0x03, 0xe7, 0x5f, 0xc8, 0x0f, 0xfd, 0xc9, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xfe, 0x85, 0xc1, 0xc0, 0xf9, 0x17, 0x36, 0x63, 0xb8, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xfc, 0x0b, 0xa3, 0x81, 0xf3, 0x2f, 0xf4, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xf3, 0x2f, 0xac, 0x06, 0xce, 0xbf, 0x30, 0x3c, 0x68, 0x6a, 0xc9, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xf3, 0x2f, 0x2c, 0x07, 0xce, 0xbf, 0x30, 0x3d, 0x28, 0x00, 0xa0, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xfe, 0x85, 0xed, 0xc0, 0xf9, 0x17, 0x4a, 0x0e, 0xcd, 0x92, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x7f, 0xa1, 0x65, 0xe0, 0xfc, 0x0b, 0x75, 0x87, 0xc6, 0x45, 0xc7, 0xa1, 0xe3, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xe1, 0x17, 0x92, 0x81, 0xcb, 0x2f, 0xd4, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0xef, 0xd6, 0x6b, 0x3e, 0x88, 0x68, 0x4e, 0x9f, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xf9, 0x85, 0xe8, 0xe0, 0x61, 0x7b, 0xcd, 0x07, 0x4d, 0x2d, 0x39, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xf9, 0x85, 0x78, 0xe0, 0xf2, 0x0b, 0xf9, 0xa1, 0x3f, 0xf9, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x2e, 0xbf, 0x30, 0x18, 0xb8, 0xfc, 0xc2, 0xe6, 0x20, 0x6d, 0x81, 0x7a, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xe5, 0x17, 0x46, 0x03, 0x97, 0x5f, 0x68, 0x1b, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x97, 0x5f, 0x58, 0x0d, 0x5c, 0x7e, 0x61, 0x78, 0xd0, 0xd4, 0x92, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x97, 0x5f, 0x58, 0x0e, 0x5c, 0x7e, 0x61, 0x7a, 0x50, 0x00, 0x40, 0x2d, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xf2, 0x0b, 0xdb, 0x81, 0xcb, 0x2f, 0x74, 0x1c, 0x8c, 0x0b, 0xb3, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x97, 0x5f, 0x28, 0x19, 0xb8, 0xfc, 0x42, 0xd9, 0x41, 0x71, 0xa8, 0x71, 0x1c, 0x3a, 0x0e, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x1b, 0x3c, 0x39, 0xad, 0x7d, 0xe0, 0xea, 0x0b, 0x0d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc1, 0xb3, 0x00, 0xdb, 0x0f, 0xa2, 0xb7, 0xd5, 0x67, 0xd8, 0x0d, 0x2b, 0xa8, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0x8f, 0x47, 0x6c, 0x1f, 0x38, 0xfa, 0x42, 0xcd, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x6c, 0xd0, 0xc8, 0xf5, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe6, 0xb7, 0x57, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0xdf, 0x20, 0x0a, 0x0f, 0x7d, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x1b, 0x3c, 0x2f, 0xb1, 0x7d, 0xe0, 0xe8, 0x0b, 0x15, 0x07, 0x31, 0xa4, 0xe8, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xa3, 0x2f, 0x94, 0x1c, 0x44, 0x26, 0xac, 0xcf, 0xe1, 0x14, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xae, 0xbe, 0x90, 0x1c, 0x44, 0x6f, 0xab, 0xcf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xfa, 0x42, 0x34, 0x70, 0xf5, 0x85, 0xf4, 0x20, 0x31, 0xbd, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xab, 0x2f, 0xc4, 0x03, 0x57, 0x5f, 0xc8, 0x0f, 0x46, 0xf3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xab, 0x2f, 0x0c, 0x06, 0xae, 0xbe, 0x50, 0x30, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xae, 0xbe, 0xb0, 0x18, 0xb8, 0xfa, 0xc2, 0x6a, 0x90, 0x0c, 0x4c, 0xdd, 0xc1, 0x70, 0x94, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xea, 0x0b, 0xb3, 0x81, 0xab, 0x2f, 0x6c, 0xc7, 0xc0, 0x17, 0x1b, 0x7b, 0x23, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x5c, 0x7d, 0x61, 0x3c, 0x70, 0xf5, 0x85, 0xfd, 0x41, 0xc9, 0xd0, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xf7, 0x5e, 0x48, 0x06, 0x0e, 0xbe, 0xb0, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x0e, 0xbe, 0x90, 0x1c, 0x44, 0x21, 0xb1, 0xcf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xf8, 0x42, 0x34, 0x70, 0xf0, 0x85, 0xf8, 0x20, 0xba, 0x7d, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xf8, 0x42, 0x3e, 0x70, 0xf0, 0x85, 0xd1, 0x18, 0xf8, 0x62, 0x66, 0x69, 0xe7, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x83, 0x2f, 0xac, 0x06, 0x0e, 0xbe, 0x30, 0x3c, 0x18, 0x77, 0x50, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x27, 0x60, 0xfc, 0xc0, 0x5d, 0x18, 0x92, 0xc5, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x9b, 0x30, 0x24, 0x03, 0x67, 0x61, 0xe8, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x1b, 0x3c, 0xf0, 0xc6, 0xf9, 0x20, 0x66, 0x9c, 0x7d, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x51, 0x18, 0xd2, 0x81, 0xa3, 0x30, 0x54, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x85, 0x21, 0x1e, 0x38, 0x0a, 0xc3, 0x76, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0x0a, 0xc3, 0xe4, 0x20, 0xf2, 0xa4, 0x7d, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x51, 0x18, 0x36, 0x03, 0x47, 0x61, 0x98, 0x1d, 0x44, 0x1b, 0x6a, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x47, 0x61, 0xd8, 0x0d, 0x1c, 0x85, 0x61, 0x78, 0xe8, 0x4f, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x28, 0x0c, 0xcb, 0x81, 0xa3, 0x30, 0x4c, 0x0f, 0xa9, 0x83, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0x14, 0x86, 0xf1, 0xc0, 0x51, 0x18, 0x9a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xa3, 0x30, 0x14, 0x1c, 0xc4, 0x9f, 0xb6, 0xcf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0x0a, 0x43, 0xc3, 0xc0, 0x51, 0x18, 0x4a, 0x0e, 0x22, 0x68, 0x4d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xa3, 0x30, 0xb4, 0x0c, 0x1c, 0x85, 0xa1, 0xe6, 0xd0, 0x9f, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x51, 0x18, 0x7a, 0x06, 0x8e, 0xc2, 0x50, 0x74, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x83, 0x67, 0x47, 0x3a, 0x1f, 0xc4, 0x8c, 0xb3, 0xcf, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x6c, 0xf0, 0x40, 0x5a, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0d, 0x92, 0x0d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x02, 0xbc, 0xdd, 0xde, 0xe8, 0x5a, 0xc6, 0xe4, 0xea, 0xc4, 0x5a, 0xe0, 0xea, 0xc4, 0xd6, 0xca, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x57, 0x61, 0x48, 0x0f, 0x9e, 0x76, 0xe9, 0x3c, 0x1e, 0x44, 0x69, 0xb9, 0xcf, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xae, 0xc2, 0xb0, 0x3f, 0x88, 0x19, 0x67, 0x9f, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xae, 0xc2, 0xd0, 0x31, 0x70, 0x15, 0x86, 0xb6, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xae, 0xc2, 0xd0, 0x32, 0x70, 0x15, 0x86, 0xa2, 0x83, 0xb4, 0x05, 0xea, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x2a, 0x0c, 0x4d, 0x03, 0x57, 0x61, 0x28, 0x3b, 0x08, 0x29, 0xf0, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xb3, 0x30, 0x24, 0x07, 0x31, 0xe3, 0xec, 0x33, 0x88, 0x16, 0x76, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x2c, 0x0c, 0x93, 0x81, 0xb3, 0x30, 0x74, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x85, 0x61, 0x33, 0x70, 0x16, 0x86, 0x8a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x2c, 0x0c, 0xbb, 0x83, 0x58, 0x93, 0xf7, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x67, 0x61, 0x18, 0x0e, 0x9c, 0x85, 0x61, 0x7b, 0x10, 0xbd, 0xff, 0x36, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x85, 0x61, 0x3c, 0x70, 0x16, 0x86, 0xf5, 0x41, 0x01, 0x00, 0x35, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x2c, 0x0c, 0xf3, 0x81, 0xb3, 0x30, 0x34, 0x1c, 0x84, 0x00, 0xf8, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0x0b, 0x43, 0xc7, 0xc0, 0x59, 0x18, 0x2a, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xb3, 0x30, 0xf4, 0x1c, 0xc4, 0xa3, 0xbe, 0xcf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0x0b, 0x43, 0xd1, 0xc0, 0x59, 0x18, 0xba, 0x0e, 0x62, 0x99, 0xdf, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xb3, 0x30, 0x94, 0x0d, 0x9c, 0x85, 0xa1, 0xed, 0xa0, 0x00, 0x80, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0x16, 0x86, 0xba, 0x81, 0xb3, 0x30, 0x34, 0x1e, 0x84, 0x00, 0xf8, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0x0b, 0x43, 0xf3, 0xc0, 0x59, 0x18, 0xaa, 0x0f, 0x31, 0x3c, 0x64, 0x2b, 0x0e, 0xa7, 0xd8, 0xf1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x18, 0x0c, 0xc9, 0xc0, 0x41, 0x18, 0x8e, 0x0c, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xae, 0xc1, 0x90, 0x1c, 0xc4, 0x27, 0xc1, 0xcf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x36, 0x78, 0x18, 0x94, 0xf3, 0xc0, 0x35, 0x18, 0xaa, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x0d, 0x1e, 0x28, 0xe5, 0x3c, 0x70, 0x0d, 0x86, 0xed, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x6c, 0xf0, 0xd8, 0x26, 0xe7, 0x83, 0x58, 0x47, 0xf8, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xd7, 0x60, 0xd8, 0x0c, 0x5c, 0x83, 0x61, 0x76, 0x10, 0x6d, 0xa8, 0x1d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x5c, 0x83, 0x61, 0x37, 0x70, 0x0d, 0x86, 0xe1, 0xa1, 0x3f, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x6b, 0x30, 0x2c, 0x07, 0xae, 0xc1, 0x30, 0x3d, 0xa4, 0x0e, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x35, 0x18, 0xc6, 0x03, 0xd7, 0x60, 0x68, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xae, 0xc1, 0x50, 0x70, 0x10, 0xf3, 0x10, 0x3f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x1a, 0x0c, 0x0d, 0x03, 0xd7, 0x60, 0x28, 0x39, 0x88, 0xa0, 0x35, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xae, 0xc1, 0xd0, 0x32, 0x70, 0x0d, 0x86, 0x9a, 0x43, 0x7f, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xd7, 0x60, 0xe8, 0x19, 0xb8, 0x06, 0x43, 0xd1, 0x21, 0x75, 0x70, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xce, 0xc1, 0x90, 0x1c, 0xc4, 0x27, 0xc1, 0xcf, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x6c, 0xf0, 0x40, 0x5a, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x0d, 0x92, 0x0d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x02, 0xbc, 0xdd, 0xde, 0xe8, 0x5a, 0xc6, 0xe4, 0xea, 0xc4, 0x5a, 0xe6, 0xca, 0xc6, 0xd6, 0xca, 0xf2, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0x6f, 0xc4, 0x72, 0x1e, 0x38, 0x07, 0xc3, 0x7a, 0x3c, 0x88, 0x0a, 0x8e, 0x9f, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x83, 0x61, 0x7f, 0x10, 0x9f, 0x04, 0x3f, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x83, 0xa1, 0x63, 0xe0, 0x1c, 0x0c, 0x6d, 0xc3, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x83, 0xa1, 0x65, 0xe0, 0x1c, 0x0c, 0x45, 0x07, 0x31, 0x2d, 0xe9, 0x33, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x83, 0xa1, 0x69, 0xe0, 0x1c, 0x0c, 0x65, 0x07, 0x21, 0x05, 0xbe, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0x0f, 0x86, 0xe4, 0x20, 0x3e, 0x09, 0x7e, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc1, 0x63, 0xc1, 0x9c, 0x07, 0xee, 0xc1, 0x50, 0xb5, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x6c, 0xf0, 0x72, 0x31, 0xe7, 0x81, 0x7b, 0x30, 0x6c, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x7b, 0x30, 0x0c, 0x0e, 0x22, 0x1a, 0xe5, 0x67, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xdc, 0x83, 0x61, 0x31, 0x70, 0x0f, 0x86, 0xd1, 0x41, 0xf4, 0xfe, 0xdb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0x0f, 0x86, 0xd5, 0xc0, 0x3d, 0x18, 0x66, 0x07, 0x05, 0x00, 0xd4, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x7b, 0x30, 0xec, 0x06, 0xee, 0xc1, 0x30, 0x3d, 0x08, 0x01, 0xf0, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0x0f, 0x86, 0xf1, 0xc0, 0x3d, 0x18, 0x9a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x83, 0xa7, 0x8d, 0x39, 0x1f, 0xc4, 0x3b, 0xcc, 0xcf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x36, 0x78, 0x80, 0x97, 0xf3, 0xc0, 0x3d, 0x18, 0x2a, 0x0e, 0x62, 0x99, 0xdf, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x7b, 0x30, 0x74, 0x0c, 0xdc, 0x83, 0xa1, 0xe4, 0xa0, 0x00, 0x80, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0x0f, 0x86, 0x96, 0x81, 0x7b, 0x30, 0x14, 0x1d, 0x84, 0x00, 0xf8, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0x08, 0x43, 0x72, 0x10, 0x9f, 0x04, 0x3f, 0x83, 0x68, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x0e, 0xc2, 0x30, 0x19, 0x38, 0x08, 0x43, 0xe7, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x41, 0x18, 0x36, 0x03, 0x07, 0x61, 0xa8, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x0e, 0xc2, 0xb0, 0x3b, 0x88, 0xf1, 0x9d, 0x9f, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0x10, 0x86, 0xe1, 0xc0, 0x41, 0x18, 0xf6, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x1b, 0x3c, 0xc8, 0xcc, 0xf9, 0x20, 0x1e, 0x7d, 0x7e, 0x0e, 0x9e, 0xf4, 0x42, 0x71, 0x70, 0xf8, 0xb5, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0x08, 0x43, 0xc1, 0xc0, 0x41, 0x18, 0x1a, 0x0e, 0x42, 0x0a, 0xfc, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x84, 0xa1, 0x63, 0xe0, 0x20, 0x0c, 0x95, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x41, 0x18, 0x7a, 0x0e, 0xa2, 0x7d, 0xe8, 0x67, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x84, 0xa1, 0x68, 0xe0, 0x20, 0x0c, 0x7d, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x84, 0xa1, 0xed, 0x20, 0x3a, 0x8d, 0x7e, 0x0e, 0x9e, 0xf4, 0x42, 0x71, 0x70, 0xf8, 0xb5, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0x08, 0x43, 0xe1, 0xc0, 0x41, 0x18, 0x1a, 0x0f, 0x42, 0x00, 0xfc, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x84, 0xa1, 0x79, 0xe0, 0x20, 0x0c, 0x3f, 0x36, 0xc4, 0x70, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0x08, 0x43, 0xf5, 0x41, 0xf4, 0x2f, 0xfd, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x84, 0xa1, 0x7b, 0xe0, 0x20, 0x0c, 0x07, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x83, 0x30, 0xf4, 0x1f, 0x44, 0xaf, 0xd3, 0xcf, 0x41, 0x48, 0x81, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x07, 0x61, 0x78, 0x30, 0x70, 0x10, 0x86, 0x1b, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x41, 0x18, 0x5e, 0x1c, 0xc4, 0x62, 0xd4, 0xcf, 0x41, 0x08, 0x80, 0x1f, 0x04, 0x39, 0xff, 0xe1, 0x14, 0x3b, 0x1e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0x8f, 0xb3, 0x6e, 0x1e, 0xb8, 0x04, 0xc3, 0x91, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x1b, 0x3c, 0x8a, 0xb4, 0xf9, 0x20, 0xb2, 0xa9, 0x7e, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x19, 0x18, 0xd2, 0x81, 0x33, 0x30, 0xf4, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x67, 0x60, 0x58, 0x1c, 0x44, 0xf8, 0xd5, 0xcf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0x03, 0xc3, 0x64, 0xe0, 0x0c, 0x0c, 0xab, 0x83, 0xc6, 0x12, 0xa1, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0x03, 0xc3, 0x6c, 0xe0, 0x0c, 0x0c, 0xfb, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0x06, 0x86, 0xdd, 0xc0, 0x19, 0x18, 0xa6, 0x07, 0xd1, 0xf1, 0x47, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x19, 0x18, 0xb6, 0x03, 0x67, 0x60, 0x18, 0x1f, 0xa2, 0x39, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x0c, 0x0c, 0xeb, 0x81, 0x33, 0x30, 0xcc, 0x0f, 0x0a, 0x00, 0xa8, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x33, 0x30, 0x14, 0x0c, 0x9c, 0x81, 0xa1, 0x76, 0xd8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x33, 0x30, 0x74, 0x0c, 0x9c, 0x81, 0xa1, 0x71, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x33, 0x30, 0xb4, 0x0c, 0x9c, 0x81, 0xa1, 0x6e, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x81, 0xa1, 0x66, 0xe0, 0x0c, 0x0c, 0x4d, 0x07, 0x51, 0xcc, 0xc6, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x19, 0x18, 0xaa, 0x06, 0xce, 0xc0, 0xd0, 0x75, 0x88, 0xe6, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x33, 0x30, 0x94, 0x0d, 0x9c, 0x81, 0xa1, 0xed, 0xa0, 0x00, 0x80, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x67, 0x60, 0xe8, 0x1b, 0x38, 0x03, 0x43, 0xe1, 0x21, 0x86, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x67, 0x60, 0xa8, 0x1c, 0x38, 0x03, 0x43, 0xe7, 0x21, 0x86, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x19, 0x18, 0x4a, 0x07, 0xce, 0xc0, 0xd0, 0x7a, 0x38, 0xda, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x1d, 0x18, 0x92, 0x83, 0xc8, 0xa6, 0xfa, 0x19, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x77, 0x60, 0x48, 0x07, 0xee, 0xc0, 0xd0, 0x30, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xdc, 0x81, 0x61, 0x72, 0x10, 0x05, 0x73, 0x3f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0xd9, 0xe0, 0x71, 0xf6, 0xcd, 0x07, 0x8f, 0xcd, 0x6f, 0x3e, 0x68, 0x7c, 0x6e, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x83, 0xa7, 0xef, 0x37, 0x1f, 0x3c, 0x29, 0xc0, 0xf9, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x0e, 0x0c, 0xe3, 0x83, 0x47, 0x1b, 0x38, 0x1f, 0xf2, 0xb5, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x10, 0x0c, 0xc9, 0x41, 0x64, 0x53, 0xfd, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x43, 0x30, 0xa4, 0x07, 0x2f, 0x0d, 0x71, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0x04, 0x43, 0x3c, 0x70, 0x08, 0x86, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0x08, 0x86, 0xc1, 0x41, 0xac, 0xf6, 0xfd, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x43, 0x30, 0x2c, 0x06, 0x0e, 0xc1, 0x30, 0x3a, 0x58, 0xb8, 0x30, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x21, 0x18, 0x56, 0x03, 0x87, 0x60, 0x98, 0x1d, 0x14, 0x00, 0x50, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x0e, 0xc1, 0xb0, 0x3b, 0x78, 0x15, 0x84, 0xf3, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x1b, 0x3c, 0xbc, 0xc2, 0xf9, 0xe0, 0xe9, 0x1e, 0xce, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x21, 0x18, 0xf6, 0x07, 0x4f, 0xf7, 0x70, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x87, 0x60, 0x28, 0x18, 0x38, 0x04, 0x43, 0xc7, 0xc1, 0x42, 0xca, 0x89, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x0e, 0xc1, 0x50, 0x32, 0x70, 0x08, 0x86, 0x96, 0x83, 0x02, 0x00, 0x6a, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x21, 0x18, 0x6a, 0x0e, 0xde, 0xbe, 0xe1, 0x7c, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x97, 0x60, 0x48, 0x0e, 0x22, 0x9b, 0xea, 0x67, 0x10, 0x2d, 0xec, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x25, 0x18, 0x26, 0x03, 0x97, 0x60, 0xe8, 0x5c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0x04, 0xc3, 0x66, 0xe0, 0x12, 0x0c, 0x15, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x25, 0x18, 0x76, 0x07, 0xd1, 0x07, 0xf9, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x2e, 0xc1, 0x30, 0x1c, 0xb8, 0x04, 0xc3, 0x7e, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x4b, 0x30, 0xac, 0x0f, 0x22, 0x65, 0xf2, 0xe7, 0xa0, 0x45, 0x53, 0x96, 0x83, 0xc3, 0xaf, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x25, 0x18, 0x0a, 0x06, 0x2e, 0xc1, 0xd0, 0x70, 0x10, 0x52, 0xe0, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x12, 0x0c, 0x1d, 0x03, 0x97, 0x60, 0xa8, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x2e, 0xc1, 0xd0, 0x73, 0x10, 0x83, 0x98, 0x3f, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x12, 0x0c, 0x45, 0x03, 0x97, 0x60, 0xe8, 0x1b, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x12, 0x0c, 0x6d, 0x07, 0x31, 0xb3, 0xf9, 0x73, 0xd0, 0xa2, 0x29, 0xcb, 0xc1, 0xe1, 0xd7, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x12, 0x0c, 0x85, 0x03, 0x97, 0x60, 0x68, 0x3c, 0x08, 0x01, 0xf0, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0x09, 0x86, 0xe6, 0x81, 0x4b, 0x30, 0xfc, 0xd8, 0x10, 0xc3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x12, 0x0c, 0xd5, 0x07, 0x11, 0x09, 0xfa, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0x09, 0x86, 0xee, 0x81, 0x4b, 0x30, 0x1c, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x2e, 0xc1, 0xd0, 0x7f, 0x10, 0x51, 0xa3, 0x3f, 0x07, 0x21, 0x05, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x5c, 0x82, 0xe1, 0xc1, 0xc0, 0x25, 0x18, 0x6e, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x97, 0x60, 0x78, 0x71, 0x10, 0x1f, 0xa6, 0x3f, 0x07, 0x21, 0x00, 0x7e, 0x10, 0xf0, 0xfe, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x69, 0x17, 0x7f, 0xf0, 0x7a, 0xca, 0xee, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xdc, 0x76, 0xf1, 0x07, 0xaf, 0xa7, 0xec, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x8e, 0xbb, 0xf8, 0x83, 0xd7, 0x53, 0x76, 0x0f, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x83, 0x77, 0xae, 0xbb, 0x0f, 0x1c, 0x77, 0xa1, 0x6b, 0x10, 0x2c, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0xd9, 0xe0, 0xe9, 0xf0, 0xee, 0x03, 0xc7, 0x5d, 0x28, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x0e, 0xde, 0x39, 0xef, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x77, 0x21, 0x3f, 0x78, 0x0b, 0xbd, 0xfb, 0x20, 0xd8, 0x20, 0x5e, 0x39, 0x66, 0x0e, 0xd2, 0x9f, 0x89, 0x06, 0xd9, 0x06, 0xf1, 0xe9, 0xfa, 0xb3, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x6c, 0xf0, 0x76, 0x7b, 0xf7, 0x83, 0xf7, 0xba, 0xbb, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0x2f, 0xb3, 0x77, 0x3f, 0x78, 0xaf, 0xbb, 0xfb, 0x20, 0xd8, 0x20, 0x5e, 0x39, 0x66, 0x0e, 0xd6, 0x80, 0x32, 0x0d, 0xb2, 0x0d, 0xe2, 0xd3, 0xf5, 0x67, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xee, 0xc2, 0x7c, 0xe0, 0xb8, 0x0b, 0xfb, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0xd9, 0xe0, 0x71, 0xe9, 0xee, 0x07, 0xd1, 0x7b, 0xfb, 0x33, 0x08, 0x36, 0x88, 0x57, 0x8e, 0x99, 0x83, 0x63, 0x76, 0xef, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xb8, 0x0b, 0x0d, 0x03, 0xc7, 0x5d, 0xa8, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xc7, 0x5d, 0xa8, 0x18, 0x38, 0xee, 0x42, 0xcb, 0x20, 0x19, 0x10, 0x5c, 0x7d, 0x07, 0xc7, 0xac, 0xe2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xe3, 0x2e, 0xd4, 0x0c, 0x1c, 0x77, 0xa1, 0xe9, 0x30, 0x2e, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xdd, 0xc5, 0x1f, 0xbc, 0x9e, 0xb2, 0x7b, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x5c, 0x77, 0x21, 0x1d, 0xb8, 0xee, 0x42, 0xd1, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xee, 0xc2, 0xe4, 0xe0, 0x61, 0x0a, 0xef, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x07, 0x8f, 0x4e, 0x78, 0x3f, 0x78, 0x2f, 0x23, 0xc6, 0xc1, 0xc1, 0xa3, 0x76, 0x90, 0x0c, 0x33, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0xcf, 0x64, 0x78, 0x1f, 0xb8, 0xee, 0x42, 0xcb, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x36, 0x78, 0x48, 0xc3, 0xfb, 0xc0, 0x75, 0x17, 0x0a, 0x0e, 0xa2, 0x58, 0x62, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0xd9, 0xe0, 0xe1, 0x0f, 0xef, 0x07, 0x6f, 0xc0, 0x76, 0x3f, 0x64, 0xed, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xae, 0xbb, 0x50, 0x33, 0x70, 0xdd, 0x85, 0x9e, 0x43, 0x0c, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x77, 0x21, 0x1b, 0x38, 0xef, 0x42, 0x7a, 0x10, 0x52, 0xe0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xef, 0x42, 0x32, 0x70, 0xdf, 0x85, 0xf0, 0x20, 0xc8, 0xe2, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x78, 0xf1, 0x07, 0xaf, 0xa7, 0xec, 0x3e, 0x18, 0xac, 0xb1, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xe7, 0xc5, 0x0f, 0x5c, 0x7a, 0xa1, 0x6e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x87, 0x5e, 0xfc, 0x41, 0x1c, 0x50, 0xff, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x97, 0x5e, 0xfc, 0x41, 0x1c, 0x50, 0xff, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x4b, 0x2f, 0x04, 0x03, 0x97, 0x5e, 0xc8, 0x06, 0xc9, 0xc0, 0x52, 0xdf, 0xc1, 0x31, 0xab, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xd2, 0x0b, 0xe1, 0xc0, 0xa5, 0x17, 0xda, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc1, 0x43, 0xff, 0xc9, 0x07, 0x2e, 0xbd, 0x50, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x0d, 0x1e, 0x51, 0x50, 0x7e, 0xf0, 0x04, 0x88, 0xf2, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x0d, 0x9e, 0xd4, 0x50, 0x7e, 0xf0, 0x04, 0x88, 0xf2, 0x83, 0x08, 0x93, 0xb5, 0x39, 0x38, 0x78, 0xd4, 0x0e, 0x92, 0xe1, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xd2, 0x0b, 0xdb, 0x81, 0x4b, 0x2f, 0xb4, 0x0c, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x4b, 0x2f, 0x8c, 0x07, 0x2e, 0xbd, 0x50, 0x70, 0xd0, 0x8e, 0x9a, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xa5, 0x17, 0x1a, 0x06, 0x2e, 0xbd, 0x50, 0x72, 0x88, 0xe6, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xa5, 0x17, 0x6a, 0x06, 0x2e, 0xbd, 0xd0, 0x73, 0x88, 0xe1, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xd2, 0x0b, 0x4d, 0x03, 0x97, 0x5e, 0x28, 0x3b, 0x8c, 0xcb, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x5e, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xd4, 0xe2, 0x07, 0xee, 0xba, 0x90, 0x2c, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xdc, 0x6d, 0x21, 0x19, 0xb8, 0xdd, 0xc2, 0x66, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x6c, 0xf0, 0x6c, 0xcc, 0xde, 0x83, 0x48, 0x5d, 0xff, 0x19, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x2e, 0xb7, 0x90, 0x1c, 0x44, 0xea, 0xfa, 0xcf, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xdc, 0x42, 0x3a, 0x70, 0xb9, 0x85, 0xa2, 0x41, 0xb0, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0xcf, 0x25, 0xed, 0x1d, 0xb8, 0xdc, 0xc2, 0x7a, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0xd9, 0xe0, 0x1d, 0xaa, 0xbd, 0x07, 0xaf, 0x66, 0xed, 0x1d, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x0d, 0x1e, 0x77, 0xda, 0x7b, 0xf0, 0x6a, 0xd6, 0xde, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xbe, 0x3b, 0x07, 0x67, 0x2f, 0xe3, 0x83, 0xf4, 0x67, 0xa2, 0x41, 0xb6, 0x41, 0x94, 0xc3, 0xff, 0x0c, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0xef, 0x80, 0xed, 0x3d, 0x78, 0x95, 0x6c, 0xef, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xb9, 0x85, 0xdd, 0xc1, 0xab, 0x64, 0x7b, 0x07, 0xc1, 0x06, 0xf1, 0x4b, 0xff, 0x73, 0x30, 0xaa, 0xb0, 0x0f, 0xcd, 0x5f, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x97, 0x5b, 0x98, 0x0f, 0x5c, 0x6e, 0xa1, 0x67, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x5c, 0x6e, 0x61, 0x7f, 0xf0, 0x9a, 0xda, 0xde, 0x41, 0x32, 0x20, 0xb8, 0xfa, 0x0e, 0xce, 0x5e, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0x0f, 0xae, 0xed, 0x1d, 0xb8, 0xdc, 0x42, 0xcd, 0x21, 0x75, 0x70, 0x1c, 0x3a, 0x0e, 0x0d, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0x4f, 0xeb, 0xed, 0x3d, 0x88, 0xd4, 0xf5, 0x9f, 0x61, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x0d, 0x1e, 0x0a, 0xdc, 0x7b, 0xf0, 0x50, 0xe8, 0xde, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x6c, 0xf0, 0x6a, 0xe1, 0xde, 0x83, 0x27, 0x23, 0xf7, 0x1e, 0xac, 0x95, 0x21, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0xd9, 0xe0, 0x59, 0xc3, 0xbd, 0x03, 0xa7, 0x5b, 0x98, 0x1d, 0x84, 0x14, 0xf8, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xd3, 0x2d, 0xec, 0x0e, 0x9e, 0xde, 0xdc, 0x7b, 0x10, 0x02, 0xe0, 0xc7, 0xa1, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xdb, 0x2d, 0x24, 0x07, 0x91, 0xba, 0xfe, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x6e, 0xb7, 0x10, 0x0d, 0xdc, 0x6e, 0x21, 0x1e, 0x24, 0x03, 0xeb, 0x75, 0x07, 0xa7, 0x33, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xdb, 0x2d, 0xe4, 0x03, 0xb7, 0x5b, 0x98, 0x1c, 0x84, 0x00, 0xf8, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xdd, 0xc2, 0xfa, 0xe0, 0x29, 0xd1, 0xbd, 0x87, 0x18, 0x1e, 0x8f, 0x57, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xe1, 0x42, 0x32, 0x70, 0xca, 0x85, 0xae, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x71, 0x21, 0x39, 0x88, 0xd5, 0x07, 0xa0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x8a, 0x0b, 0xc9, 0x41, 0xac, 0x3e, 0x00, 0x0d, 0xbb, 0xc1, 0x38, 0x64, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xe2, 0xc2, 0x64, 0xe0, 0x8a, 0x0b, 0x35, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0xc1, 0x4b, 0x91, 0x48, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xbc, 0x62, 0x89, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x0d, 0xa2, 0xf0, 0xd0, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x15, 0x17, 0x66, 0x03, 0x57, 0x5c, 0xa8, 0x38, 0x88, 0x21, 0x45, 0x9f, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x5c, 0x71, 0xa1, 0xe4, 0x20, 0x5a, 0x28, 0x80, 0x0e, 0xa7, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xc6, 0x85, 0xe4, 0x20, 0x56, 0x1f, 0x80, 0x86, 0x5d, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xe3, 0x42, 0x7a, 0xf0, 0xdc, 0x11, 0xdf, 0xe1, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xce, 0xb8, 0x90, 0x0f, 0x9c, 0x71, 0x61, 0x72, 0x90, 0xb6, 0x40, 0x3d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x71, 0x61, 0x73, 0xf0, 0x98, 0x11, 0xdf, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x6c, 0xf0, 0xd4, 0x0a, 0xdf, 0x81, 0x33, 0x2e, 0xec, 0x0e, 0xa2, 0x0d, 0xb5, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x83, 0xa7, 0x63, 0xf8, 0x1e, 0x3c, 0x64, 0xc3, 0xf7, 0xd0, 0x9f, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc1, 0x53, 0x37, 0x7c, 0x0f, 0xde, 0x10, 0xe2, 0x7b, 0x88, 0xe6, 0x71, 0x68, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x8e, 0x0b, 0xc9, 0x41, 0xac, 0x3e, 0x00, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x3b, 0x2e, 0xa4, 0x03, 0x77, 0x5c, 0xe8, 0x18, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xee, 0xb8, 0x30, 0x38, 0x88, 0x01, 0x14, 0xa0, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xc7, 0x85, 0xc5, 0xc1, 0xeb, 0x59, 0x7c, 0x0f, 0x22, 0x68, 0x4d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x83, 0xb7, 0xbe, 0xf8, 0x0e, 0xdc, 0x71, 0x61, 0x76, 0x50, 0x00, 0x40, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xe3, 0xc2, 0x6e, 0xe0, 0x8e, 0x0b, 0x15, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0xd9, 0xe0, 0x35, 0x30, 0xbe, 0x07, 0xcf, 0xa8, 0xf1, 0x3d, 0x88, 0xa0, 0x35, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x83, 0x27, 0xdf, 0xf8, 0x1e, 0xfa, 0x93, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x36, 0x78, 0xa5, 0x8e, 0xef, 0xc1, 0xc3, 0x7a, 0x7c, 0x0f, 0xd1, 0x3c, 0x0e, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x43, 0x2e, 0x24, 0x07, 0xb1, 0xfa, 0x00, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x0e, 0xb9, 0x90, 0x0e, 0x1c, 0x72, 0xa1, 0x6f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xe4, 0xc2, 0xe4, 0x20, 0x0e, 0x6d, 0x80, 0x06, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x21, 0x17, 0x36, 0x03, 0x87, 0x5c, 0xd8, 0x0d, 0x92, 0x81, 0xf6, 0x77, 0x07, 0x67, 0x2f, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x43, 0x2e, 0x0c, 0x07, 0x0e, 0xb9, 0x50, 0x37, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x0e, 0xb9, 0xb0, 0x1c, 0x38, 0xe4, 0x42, 0xc1, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x87, 0x5c, 0x98, 0x1f, 0x44, 0x3e, 0x0f, 0xd0, 0x41, 0x3b, 0x9f, 0x31, 0x07, 0xa7, 0x15, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x0e, 0xb9, 0xd0, 0x30, 0x70, 0xc8, 0x85, 0x8e, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x43, 0x2e, 0x94, 0x0c, 0x1c, 0x72, 0xa1, 0xed, 0x20, 0x59, 0xbe, 0xe4, 0x38, 0x74, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x2e, 0xb9, 0x90, 0x1c, 0xc4, 0xea, 0x03, 0xd0, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xe4, 0x42, 0x3a, 0x70, 0xc9, 0x85, 0xf1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xc9, 0x85, 0xc9, 0x41, 0xec, 0x15, 0x01, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x4b, 0x2e, 0x6c, 0x06, 0x2e, 0xb9, 0xb0, 0x3b, 0x78, 0xa2, 0x76, 0xdc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x25, 0x17, 0x86, 0x03, 0x97, 0x5c, 0xd8, 0x1e, 0xd6, 0x7e, 0x8f, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x29, 0x17, 0x92, 0x83, 0x58, 0x7d, 0x00, 0x1a, 0x04, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xa7, 0x5c, 0x88, 0x06, 0x4e, 0xb9, 0x90, 0x0e, 0x92, 0x81, 0xa5, 0xbe, 0x83, 0x73, 0xfd, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x29, 0x17, 0xe2, 0x81, 0x53, 0x2e, 0x54, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x83, 0x27, 0x0e, 0xf9, 0x0e, 0x9c, 0x72, 0xa1, 0x64, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x72, 0x61, 0x34, 0x70, 0xca, 0x85, 0xf1, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xa7, 0x5c, 0x58, 0x1e, 0xc4, 0x96, 0x14, 0xd0, 0xc1, 0xfb, 0x11, 0x4a, 0x0e, 0xda, 0x9f, 0x5f, 0x1a, 0x24, 0xc3, 0x0d, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x29, 0x17, 0xd6, 0x03, 0xa7, 0x5c, 0x68, 0x38, 0xa4, 0x0e, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x72, 0xa1, 0x62, 0xe0, 0x94, 0x0b, 0x1d, 0x87, 0x18, 0x1e, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x4e, 0xb9, 0xd0, 0x32, 0x70, 0xca, 0x85, 0xa6, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x38, 0xc5, 0x8e, 0xc7, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0xcf, 0x71, 0xe7, 0x1d, 0x38, 0xd7, 0xc2, 0x7e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xad, 0x85, 0xe4, 0x20, 0xb2, 0xb7, 0x80, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x73, 0x2d, 0x24, 0x07, 0x91, 0xbd, 0x05, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xce, 0xb5, 0x10, 0x0d, 0x9c, 0x6b, 0x21, 0x1d, 0x24, 0x03, 0x4b, 0x7d, 0x07, 0x67, 0x2f, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x73, 0x2d, 0xc4, 0x03, 0xe7, 0x5a, 0x98, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x6b, 0x21, 0x1f, 0x38, 0xd7, 0xc2, 0x72, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x6b, 0x61, 0x30, 0x70, 0xae, 0x85, 0xd1, 0x41, 0x82, 0x27, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xb9, 0x16, 0x56, 0x03, 0xe7, 0x5a, 0x18, 0x1e, 0x52, 0x07, 0xc7, 0xa1, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x5c, 0x0b, 0xd3, 0x81, 0x73, 0x2d, 0xac, 0x0f, 0xa9, 0x83, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x9a, 0x0b, 0xc9, 0xc1, 0x7b, 0x36, 0x7e, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xce, 0x85, 0xe4, 0xe0, 0x3d, 0x1b, 0xbf, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x3d, 0x17, 0x92, 0x83, 0xf7, 0x6c, 0xfc, 0x0e, 0xbb, 0xc1, 0x38, 0x64, 0x5a, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xe7, 0xc2, 0x64, 0xe0, 0x9e, 0x0b, 0x35, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0xc1, 0x4b, 0x91, 0x48, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xbc, 0x62, 0x89, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x0d, 0xa2, 0xf0, 0xd0, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x3d, 0x17, 0x66, 0x03, 0xf7, 0x5c, 0xa8, 0x38, 0x88, 0x21, 0x45, 0x9f, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xdc, 0x73, 0xa1, 0xe4, 0x20, 0xda, 0xdd, 0x80, 0x0e, 0xa7, 0xd8, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xd0, 0x85, 0xe4, 0xe0, 0x3d, 0x1b, 0xbf, 0xc3, 0x2e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x74, 0x21, 0x1d, 0x38, 0xe8, 0xc2, 0x7e, 0xb8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x83, 0x2e, 0xe4, 0x03, 0x07, 0x5d, 0x98, 0x1c, 0xa4, 0x2d, 0x50, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x07, 0x5d, 0xd8, 0x0c, 0x1c, 0x74, 0x61, 0x3e, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x0d, 0xde, 0x5e, 0xea, 0x3b, 0x70, 0xd0, 0x85, 0xdd, 0x41, 0xb4, 0xa1, 0x76, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xd0, 0x85, 0xe1, 0xc1, 0xd3, 0x57, 0x7d, 0x0f, 0xfd, 0xc9, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x1b, 0x3c, 0xc4, 0xd5, 0xf7, 0xe0, 0x99, 0xb3, 0xbe, 0x87, 0x68, 0x1e, 0x87, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x0d, 0x9e, 0xaa, 0xec, 0x7b, 0xf0, 0x9e, 0x8d, 0xdf, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xd1, 0x85, 0x74, 0xe0, 0xa2, 0x0b, 0x1d, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x45, 0x17, 0x06, 0x07, 0xd1, 0x2b, 0x08, 0x34, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x2e, 0xba, 0xb0, 0x18, 0xb8, 0xe8, 0xc2, 0xe8, 0x20, 0x82, 0xd6, 0x74, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xe8, 0xc2, 0x6a, 0xe0, 0xa2, 0x0b, 0xb3, 0x83, 0x02, 0x00, 0x6a, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc1, 0xc3, 0x9b, 0x7d, 0x07, 0x2e, 0xba, 0x50, 0x31, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x0d, 0xde, 0x02, 0xed, 0x3b, 0x70, 0xd1, 0x85, 0xed, 0x41, 0x04, 0xad, 0xe9, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x6c, 0xf0, 0x5a, 0x68, 0xdf, 0x83, 0xf7, 0x4d, 0xfb, 0x1e, 0xfa, 0x93, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xe8, 0xc2, 0x7c, 0xe0, 0xa2, 0x0b, 0x0d, 0x87, 0x68, 0x1e, 0x87, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x49, 0x17, 0x92, 0x83, 0xf7, 0x6c, 0xfc, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x93, 0x2e, 0xa4, 0x03, 0x27, 0x5d, 0xe8, 0x1b, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x4e, 0xba, 0x30, 0x39, 0x88, 0xc1, 0x48, 0xa0, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xd2, 0x85, 0xcd, 0xc0, 0x49, 0x17, 0x76, 0x07, 0x71, 0x97, 0x03, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xd2, 0x85, 0xe1, 0xc1, 0x03, 0xca, 0x7d, 0x07, 0xc1, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x49, 0x17, 0x96, 0x03, 0x27, 0x5d, 0x28, 0x18, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xa4, 0x0b, 0xf3, 0x83, 0x98, 0xbd, 0x04, 0x3a, 0x68, 0xe7, 0x33, 0xe6, 0xe0, 0xb4, 0x82, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x49, 0x17, 0x1a, 0x06, 0x4e, 0xba, 0xd0, 0x71, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xd2, 0x85, 0x92, 0x83, 0xc7, 0x8a, 0xfb, 0x1e, 0x24, 0xcb, 0x97, 0x1c, 0x87, 0x8e, 0x43, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x4d, 0x17, 0x92, 0x83, 0xf7, 0x6c, 0xfc, 0x0e, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x9b, 0x2e, 0xa4, 0x03, 0x37, 0x5d, 0x68, 0x1b, 0x04, 0x0b, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xe9, 0xc2, 0xe0, 0xe0, 0xc5, 0xf0, 0xbe, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x37, 0x5d, 0x18, 0x0d, 0xdc, 0x74, 0x61, 0x35, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xdc, 0x74, 0x61, 0x71, 0x10, 0x67, 0xa3, 0x40, 0x83, 0x60, 0x83, 0x78, 0xf2, 0xd4, 0x39, 0x48, 0x7f, 0x26, 0x1a, 0x64, 0x1b, 0xc4, 0x4e, 0x28, 0xd0, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x4d, 0x17, 0xa6, 0x03, 0x37, 0x5d, 0xd8, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x37, 0x5d, 0x98, 0x1d, 0xc4, 0xc0, 0x29, 0xd0, 0x20, 0xd8, 0x20, 0x9e, 0x3c, 0x75, 0x0e, 0xd6, 0x80, 0x32, 0x0d, 0xb2, 0x0d, 0x62, 0x27, 0x14, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xe9, 0x42, 0xc1, 0xc0, 0x4d, 0x17, 0x1a, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x9b, 0x2e, 0x8c, 0x0f, 0xe2, 0x53, 0x15, 0x68, 0x10, 0x6c, 0x10, 0x4f, 0x9e, 0x3a, 0x07, 0xc7, 0xec, 0xde, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc1, 0x03, 0xe7, 0x7d, 0x07, 0x6e, 0xba, 0x50, 0x36, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x6e, 0xba, 0x50, 0x72, 0xf0, 0x06, 0x7a, 0xdf, 0x41, 0x32, 0x20, 0xb8, 0xfa, 0x0e, 0xce, 0x79, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0xef, 0xb2, 0xf7, 0x1d, 0xb8, 0xe9, 0x42, 0xd7, 0x61, 0xed, 0xf7, 0x38, 0x74, 0x1c, 0x1a, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x8e, 0xba, 0x90, 0x1c, 0xbc, 0x67, 0xe3, 0x77, 0x10, 0x2c, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x75, 0x21, 0x1d, 0x38, 0xea, 0x42, 0xe7, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xd4, 0x85, 0xc5, 0x41, 0x64, 0xd6, 0x02, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xa3, 0x2e, 0x4c, 0x06, 0x8e, 0xba, 0xd0, 0x33, 0x08, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x8e, 0xba, 0xb0, 0x1b, 0x38, 0xea, 0xc2, 0x7e, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xa3, 0x2e, 0x8c, 0x0f, 0x22, 0x35, 0x17, 0xe8, 0xe0, 0xfd, 0x08, 0x25, 0x07, 0xed, 0xcf, 0x2f, 0x0d, 0x92, 0x61, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xa8, 0x0b, 0x05, 0x03, 0x47, 0x5d, 0x28, 0x39, 0xa4, 0x0e, 0x86, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x75, 0xa1, 0x65, 0xe0, 0xa8, 0x0b, 0x35, 0x87, 0x18, 0x1e, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xea, 0x42, 0xd1, 0xc0, 0x51, 0x17, 0xaa, 0x0e, 0x42, 0x0a, 0x7c, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x47, 0x5d, 0xe8, 0x1a, 0x38, 0xea, 0x42, 0xdd, 0x41, 0x90, 0xc5, 0x0f, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xea, 0x42, 0xdf, 0xc0, 0x51, 0x17, 0x2a, 0x0f, 0x06, 0x6b, 0xec, 0x71, 0x68, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xea, 0x42, 0x72, 0xf0, 0x9e, 0x8d, 0xdf, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x57, 0x5d, 0x98, 0x0c, 0x5c, 0x75, 0x61, 0x73, 0x88, 0xe1, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xd6, 0x85, 0xe4, 0xe0, 0x3d, 0x1b, 0xbf, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xac, 0x0b, 0xd1, 0xc1, 0xe3, 0x25, 0x7e, 0x87, 0x5f, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xeb, 0x42, 0x7e, 0xf0, 0x78, 0x89, 0xdf, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x0d, 0x5e, 0xfc, 0xef, 0x7b, 0xf0, 0x78, 0x89, 0xdf, 0x41, 0xb0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x6c, 0xf0, 0x3e, 0x81, 0xdf, 0x83, 0x27, 0x36, 0xfc, 0x0e, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x6c, 0xf0, 0x9e, 0x82, 0xdf, 0x83, 0x27, 0x36, 0xfc, 0x0e, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x6c, 0xf0, 0x5a, 0x85, 0xdf, 0x83, 0x27, 0x36, 0xfc, 0x1e, 0xbc, 0x4c, 0x4d, 0xe7, 0xe0, 0xfc, 0x44, 0x7b, 0x50, 0x32, 0x34, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x07, 0xcf, 0x81, 0xf8, 0x3d, 0x08, 0x52, 0xfc, 0xe3, 0xd0, 0xc1, 0x69, 0x05, 0xf7, 0xa0, 0x64, 0x68, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x36, 0x78, 0x6b, 0xc5, 0xef, 0xc1, 0x03, 0x32, 0x7e, 0x0f, 0x42, 0x00, 0xfc, 0x38, 0x74, 0x38, 0xc5, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xc5, 0x16, 0x92, 0x81, 0xa3, 0x2d, 0x14, 0x0c, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x4e, 0xb6, 0x90, 0x1c, 0x44, 0x1c, 0x36, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xb3, 0x85, 0xe4, 0x20, 0xe2, 0xb0, 0x81, 0x86, 0xdd, 0x60, 0x1c, 0x32, 0x2d, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xdc, 0x6c, 0x61, 0x32, 0x70, 0xb3, 0x85, 0x9a, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0xd8, 0xe0, 0xa5, 0x48, 0x24, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5e, 0xb1, 0x44, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x06, 0x51, 0x78, 0xe8, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x66, 0x0b, 0xb3, 0x83, 0xb7, 0xf4, 0xf5, 0x1e, 0xc4, 0x90, 0xa2, 0xcf, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x6e, 0xb6, 0x50, 0x72, 0x10, 0xeb, 0xdc, 0x40, 0x87, 0x53, 0x6c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xda, 0x42, 0x72, 0x10, 0x71, 0xd8, 0x40, 0x83, 0x60, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x68, 0x0b, 0xd1, 0xc0, 0xd1, 0x16, 0x16, 0xc3, 0x2f, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x6d, 0x21, 0x3f, 0x88, 0xdf, 0x72, 0xa0, 0x83, 0xf5, 0x91, 0x0e, 0x07, 0xe9, 0xbf, 0x0d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x6d, 0x61, 0x32, 0x70, 0xb4, 0x85, 0xd5, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x68, 0x0b, 0xb3, 0x81, 0xa3, 0x2d, 0xec, 0x0f, 0x4a, 0x99, 0x9d, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xdf, 0x42, 0x32, 0x70, 0xc0, 0x85, 0x8a, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xdc, 0x6f, 0x21, 0x39, 0x88, 0x6d, 0x76, 0xa0, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x80, 0x0b, 0xc9, 0x41, 0x6c, 0xb3, 0x03, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x03, 0x2e, 0x44, 0x03, 0x07, 0x5c, 0x58, 0x0c, 0xbf, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xc0, 0x85, 0xfc, 0x20, 0x46, 0xe2, 0x81, 0x0e, 0xd6, 0x47, 0x3a, 0x1c, 0xbc, 0x37, 0x2d, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x03, 0x2e, 0x4c, 0x06, 0x0e, 0xb8, 0xb0, 0x3a, 0x44, 0x73, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x07, 0x5c, 0x98, 0x0d, 0x1c, 0x70, 0x61, 0x79, 0x18, 0x97, 0xe1, 0x37, 0x9e, 0x0f, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x07, 0x5c, 0x98, 0x0e, 0x1c, 0x70, 0xa1, 0xe1, 0x60, 0x2c, 0x76, 0x1e, 0x87, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xc6, 0x8b, 0x1f, 0x38, 0xf2, 0xc2, 0x74, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x47, 0x5e, 0xfc, 0x41, 0xe4, 0xe7, 0x03, 0x0d, 0x82, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x23, 0x2f, 0x04, 0x03, 0x47, 0x5e, 0x08, 0x07, 0xc9, 0xc0, 0x79, 0x77, 0x70, 0xcc, 0x2a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xf2, 0x42, 0x3a, 0x70, 0xe4, 0x85, 0xe5, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xf2, 0x42, 0x3c, 0x70, 0xe4, 0x85, 0xc1, 0xc1, 0x83, 0xd7, 0xe0, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xf2, 0xc2, 0x62, 0xe0, 0xc8, 0x0b, 0xa3, 0x43, 0x34, 0x87, 0xdf, 0x78, 0x3e, 0xc8, 0xd6, 0x20, 0x11, 0x1f, 0x78, 0xdc, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x79, 0x61, 0x35, 0x70, 0xe4, 0x85, 0xe1, 0x61, 0x5c, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf1, 0x78, 0x10, 0x2c, 0x2e, 0x08, 0x16, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x7a, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xec, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xf5, 0x91, 0x0e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x47, 0xaa, 0x71, 0xd0, 0x5c, 0xee, 0xca, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xeb, 0x48, 0x35, 0x0e, 0x79, 0x96, 0xe3, 0xd0, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x1e, 0x1f, 0x8f, 0x57, 0x10, 0x2c, 0x48, 0x06, 0x9a, 0xf6, 0x1d, 0x0c, 0x47, 0xe9, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0xad, 0xe0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x22, 0x7f, 0x1f, 0xe7, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0xad, 0xe0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x22, 0xd5, 0x1f, 0xe7, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0xad, 0xe0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xa2, 0x23, 0x20, 0xe7, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0xad, 0xe0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x22, 0x71, 0x20, 0xe7, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0xad, 0xe0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x62, 0xbf, 0x20, 0xe7, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0xad, 0xe0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xe2, 0x0d, 0x21, 0xe7, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0xad, 0xe0, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xa2, 0x5d, 0x21, 0xe7, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x4e, 0x2b, 0xb8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0xa8, 0x6a, 0xc8, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x5a, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0xc4, 0x9c, 0x41, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xb2, 0x63, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xfc, 0x0e, 0x82, 0x9c, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x31, 0x73, 0x10, 0x75, 0x08, 0x41, 0xc7, 0xa1, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x3c, 0x3e, 0x1e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0x98, 0x33, 0x08, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x76, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x0c, 0xd7, 0x73, 0x1c, 0xc4, 0x04, 0x42, 0xd0, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x1e, 0x1f, 0x8f, 0x17, 0x04, 0x1b, 0x2c, 0x0b, 0x83, 0x59, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0xa6, 0x7d, 0x07, 0xc7, 0xac, 0xe2, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0x07, 0x7f, 0x1f, 0x8c, 0xd1, 0x88, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x74, 0x07, 0xcc, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x34, 0x4b, 0x3a, 0x64, 0xed, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x07, 0xaf, 0xc1, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x34, 0x4b, 0x3a, 0x48, 0xed, 0x00, 0x39, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xce, 0xc1, 0xdf, 0x07, 0x29, 0x72, 0x20, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe8, 0x0e, 0x98, 0x39, 0x48, 0xa9, 0x12, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x3c, 0x78, 0x0d, 0x6e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0x87, 0xd0, 0x41, 0xe4, 0xf2, 0xe3, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x88, 0x6f, 0x93, 0xa0, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa2, 0x16, 0x25, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0xe0, 0x35, 0xb8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x66, 0x49, 0x07, 0x07, 0x22, 0xfe, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xb1, 0xdc, 0x12, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x9c, 0xbe, 0x04, 0x0d, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x07, 0xaf, 0xc1, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xf4, 0x10, 0x3a, 0x18, 0xd7, 0xe8, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0xc3, 0x6e, 0xc8, 0x63, 0x6d, 0x18, 0x97, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x82, 0x60, 0x83, 0xf3, 0x77, 0xf9, 0xe1, 0xa9, 0x81, 0x41, 0xb0, 0xc1, 0x32, 0x78, 0x81, 0x43, 0x07, 0x8d, 0xe3, 0xf1, 0xf1, 0xf8, 0x20, 0xdd, 0x52, 0x7a, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x36, 0x58, 0xa9, 0xe9, 0x75, 0x90, 0xd6, 0xd7, 0x71, 0x3c, 0x5e, 0x10, 0x6c, 0xb0, 0x1e, 0x51, 0x65, 0x90, 0x0c, 0x73, 0x50, 0x70, 0xe1, 0x2c, 0x08, 0x36, 0x88, 0x18, 0xe1, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xc2, 0xdf, 0xe9, 0x60, 0xf8, 0xc7, 0x1e, 0x94, 0x68, 0x38, 0xc7, 0xa1, 0x15, 0x03, 0xfc, 0xcb, 0xf0, 0xe0, 0xc2, 0xdc, 0xc8, 0x40, 0x66, 0x64, 0x5a, 0xc4, 0xf2, 0xe8, 0xca, 0x40, 0xd6, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0xf6, 0x4e, 0x07, 0x27, 0xa1, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x25, 0x1a, 0xce, 0xc2, 0x6f, 0x3c, 0xdf, 0x10, 0xcd, 0x83, 0x01, 0xcb, 0x7b, 0xe8, 0x18, 0x76, 0x1c, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x24, 0x1b, 0xc4, 0x3c, 0x45, 0xce, 0xc1, 0x49, 0xe8, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xbd, 0x59, 0xc9, 0xa1, 0x51, 0xcb, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x36, 0x88, 0x18, 0xe1, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xac, 0x47, 0x54, 0x19, 0x24, 0x03, 0xc1, 0x3b, 0x28, 0xb8, 0x70, 0x0e, 0x06, 0x7e, 0xc8, 0x71, 0x68, 0xf8, 0x05, 0xc1, 0xe2, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x17, 0x04, 0x1b, 0x3c, 0x28, 0x82, 0xe6, 0x20, 0x86, 0xf3, 0x6f, 0x06, 0xc1, 0x06, 0x2f, 0x6a, 0x03, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x71, 0xb8, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x65, 0x0f, 0x34, 0x07, 0x31, 0x9c, 0x7f, 0x73, 0x1c, 0x3a, 0x1e, 0x2f, 0xfc, 0x82, 0x60, 0x83, 0xb8, 0x4c, 0x31, 0x59, 0xdc, 0xd0, 0x8c, 0x67, 0x10, 0x6c, 0xf0, 0xb2, 0x07, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0xd0, 0x9f, 0xfc, 0xd0, 0x8c, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x68, 0x86, 0xba, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x60, 0x80, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x92, 0xb1, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc3, 0x49, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6d, 0xb2, 0xb1, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x8d, 0x32, 0x39, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xda, 0x2d, 0x86, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x89, 0xcf, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xd2, 0x00, 0xc2, 0xc1, 0x62, 0xc2, 0x93, 0xe3, 0xd0, 0x41, 0xc2, 0xed, 0xc9, 0x71, 0xe8, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x2a, 0xc8, 0x83, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0xa0, 0x8c, 0xdb, 0x39, 0x48, 0xa4, 0xe7, 0x59, 0xf8, 0x8d, 0xe7, 0x1b, 0x14, 0x00, 0x50, 0x87, 0x16, 0x40, 0x0b, 0xbf, 0xf1, 0x7c, 0x43, 0x2b, 0xf1, 0x41, 0xb0, 0x41, 0xb4, 0x0f, 0xb6, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x73, 0xcf, 0x38, 0xa4, 0x6a, 0x8e, 0x43, 0x0b, 0xbf, 0xf1, 0x7c, 0x43, 0x2b, 0xf1, 0x43, 0xd3, 0xa1, 0x83, 0x81, 0x1f, 0x72, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0x46, 0xf0, 0xe9, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xe0, 0xa9, 0x11, 0x01, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0x8a, 0x50, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x12, 0x0d, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x68, 0x52, 0xcd, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x89, 0xf7, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x90, 0xda, 0x01, 0x72, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xc1, 0x32, 0xd9, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x41, 0x74, 0x30, 0xfc, 0x63, 0x0f, 0x06, 0xe2, 0xd9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x71, 0x60, 0x16, 0x74, 0xb0, 0x98, 0xcf, 0xeb, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x3c, 0x63, 0x72, 0x79, 0x70, 0xf4, 0x21, 0xb5, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x5c, 0x10, 0x2c, 0x08, 0x36, 0x18, 0xdc, 0x95, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x59, 0xbb, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9e, 0xaa, 0x44, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0x94, 0x71, 0x3b, 0x07, 0x29, 0xc4, 0x09, 0x0b, 0xbf, 0xf1, 0x7c, 0x83, 0x02, 0x00, 0xea, 0xd0, 0x48, 0x70, 0xe1, 0x37, 0x9e, 0x6f, 0x50, 0xc6, 0xed, 0x1c, 0x04, 0xa5, 0xf7, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0x11, 0x32, 0x69, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x5c, 0xa3, 0x2f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xb4, 0xa1, 0x76, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x38, 0x5c, 0xcc, 0x21, 0x75, 0x70, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x82, 0xd6, 0x74, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x1c, 0x2e, 0x84, 0x87, 0xd4, 0xc1, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x36, 0x78, 0x50, 0x04, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc8, 0x86, 0x0b, 0x3a, 0x74, 0x0c, 0x3b, 0x0e, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x00, 0x2f, 0xde, 0x18, 0x5a, 0xd8, 0x18, 0x5a, 0x78, 0x48, 0x2d, 0x1d, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x00, 0xdf, 0x18, 0x5a, 0xd8, 0x18, 0x5a, 0x78, 0x10, 0x31, 0x46, 0x33, 0xc7, 0xe3, 0x83, 0x71, 0x07, 0x35, 0x08, 0x16, 0x17, 0x04, 0x1b, 0x2c, 0x0b, 0x83, 0x59, 0x5c, 0x83, 0xf8, 0x22, 0xb7, 0x39, 0x44, 0x73, 0x0d, 0x62, 0x2a, 0xe8, 0xe6, 0xd0, 0x48, 0xf0, 0xe0, 0x8c, 0x00, 0x7f, 0x3c, 0x1e, 0x04, 0x1b, 0x3c, 0xd8, 0xf4, 0x62, 0x71, 0x0d, 0xc6, 0x4f, 0xd7, 0x20, 0xd8, 0x20, 0x2a, 0xa0, 0x6f, 0x0e, 0x52, 0xc7, 0x76, 0xd6, 0x60, 0x78, 0x51, 0x0c, 0x82, 0x0d, 0xa2, 0x02, 0xfa, 0xe6, 0x60, 0xc5, 0x83, 0xcd, 0xc1, 0x19, 0x01, 0xfe, 0x78, 0xbc, 0xb8, 0x20, 0xd8, 0x20, 0xb6, 0x15, 0x82, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x44, 0x4c, 0xd9, 0xce, 0xc1, 0xc3, 0xce, 0x16, 0x8e, 0x43, 0x2b, 0x08, 0x36, 0x88, 0x6d, 0x85, 0xa0, 0x83, 0x28, 0x07, 0xdb, 0x59, 0x10, 0x2c, 0x48, 0x06, 0x04, 0x6b, 0xdf, 0xc1, 0x70, 0x94, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xb4, 0x24, 0x6d, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x41, 0xa4, 0x8c, 0xdb, 0x1c, 0xa4, 0x71, 0x9f, 0x1c, 0xa4, 0x86, 0x9d, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0xc4, 0x9a, 0x5f, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa5, 0x25, 0x69, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0x22, 0x65, 0xdc, 0xe6, 0xa0, 0x64, 0x68, 0x3a, 0x48, 0x40, 0x21, 0x39, 0x0e, 0x2d, 0x08, 0x36, 0x88, 0x6d, 0x85, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x11, 0x53, 0xb6, 0x73, 0x10, 0x33, 0xdd, 0x35, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xb1, 0xad, 0x10, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x45, 0xe5, 0xe4, 0xe0, 0x61, 0x67, 0x0b, 0xc7, 0xa1, 0x05, 0xc1, 0xe2, 0x6a, 0x58, 0xa1, 0xdd, 0xe0, 0x34, 0xd9, 0x7b, 0xb0, 0xe2, 0x95, 0xa7, 0x83, 0x67, 0x9b, 0x5e, 0x2c, 0x0e, 0xbf, 0x20, 0x5a, 0xf0, 0x76, 0x10, 0x6c, 0xf0, 0xb2, 0x07, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0xd0, 0x9f, 0xfc, 0xa0, 0xd5, 0x4c, 0xa7, 0x83, 0xe2, 0x9c, 0xeb, 0x38, 0x34, 0x88, 0x16, 0xb4, 0x0e, 0x82, 0x0d, 0x5e, 0xf6, 0x40, 0x73, 0x10, 0x0b, 0x3c, 0x3b, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0xd8, 0xa0, 0x61, 0x91, 0x95, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x4d, 0x9e, 0xac, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x37, 0x01, 0xfc, 0xa4, 0xb9, 0xd9, 0x85, 0xb1, 0xa5, 0x91, 0xb5, 0xc0, 0x89, 0xad, 0x91, 0x99, 0xb5, 0xc0, 0x85, 0xc9, 0x85, 0xb5, 0xcd, 0x1b, 0x26, 0x6e, 0x83, 0xd5, 0xa3, 0xfa, 0x07, 0xab, 0x47, 0xf5, 0x87, 0xdf, 0x78, 0xbe, 0x78, 0x10, 0x63, 0x8d, 0x41, 0x07, 0x29, 0x79, 0x19, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xd8, 0x85, 0x5d, 0x10, 0x6c, 0x10, 0x0f, 0xbb, 0x32, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x4a, 0xec, 0xc1, 0x83, 0xd8, 0x26, 0xbb, 0x39, 0x0e, 0x2d, 0xec, 0x82, 0x60, 0x83, 0x78, 0xd8, 0x95, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xf6, 0xd4, 0x07, 0xf1, 0x73, 0x76, 0x73, 0x1c, 0x5a, 0xd8, 0x85, 0x5d, 0xb8, 0x83, 0xc8, 0x67, 0xb8, 0x39, 0xac, 0x6f, 0x1e, 0xd2, 0xb9, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x0d, 0x1a, 0xad, 0x85, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0x62, 0x0f, 0x1e, 0x8c, 0x0b, 0xb3, 0xe3, 0xd0, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xb7, 0x18, 0xea, 0x20, 0x32, 0x2b, 0x83, 0x86, 0xdf, 0x78, 0x3e, 0xcc, 0x41, 0x6c, 0x5c, 0x06, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0xd1, 0x3b, 0xda, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xd1, 0x53, 0x61, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x88, 0x04, 0x97, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xb2, 0xac, 0x0e, 0xa2, 0xaa, 0x5c, 0xe6, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0x34, 0x9d, 0xff, 0x32, 0xfc, 0x82, 0x68, 0x61, 0x06, 0xc1, 0xe2, 0xb0, 0x1b, 0xc4, 0x43, 0xdc, 0xcd, 0x86, 0x68, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x71, 0x2b, 0x77, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0x82, 0x6c, 0xff, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x31, 0x42, 0x77, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0xfa, 0x93, 0x1f, 0x34, 0xb9, 0x4b, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x8a, 0x50, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x4b, 0x54, 0x01, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0xc1, 0x0b, 0x25, 0x01, 0x0e, 0x12, 0x3e, 0x05, 0x0e, 0xe2, 0x0e, 0xef, 0xe6, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x86, 0x18, 0x0e, 0xbf, 0x20, 0x5a, 0xc8, 0x20, 0x58, 0x1c, 0x76, 0x41, 0xb0, 0x41, 0x0c, 0xec, 0xdd, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x03, 0x0b, 0x07, 0x69, 0x69, 0x1f, 0xc7, 0xa1, 0x0d, 0xa9, 0x83, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x7a, 0x34, 0x70, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0x25, 0xd8, 0xfc, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xd8, 0x0d, 0x62, 0xd8, 0xef, 0x66, 0x41, 0xb0, 0x41, 0xc4, 0x46, 0xd3, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x97, 0xe0, 0xd9, 0xff, 0x83, 0x82, 0x6c, 0xe7, 0x38, 0x34, 0x41, 0xe6, 0x7f, 0x10, 0x2c, 0xc1, 0xe2, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x6f, 0x70, 0xae, 0x31, 0x1f, 0x04, 0x1b, 0xc4, 0xde, 0xfd, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x74, 0x10, 0x0d, 0x7e, 0x37, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x6f, 0x1c, 0x1a, 0x04, 0x1b, 0xc4, 0xde, 0xfd, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x74, 0x90, 0x08, 0xd7, 0x70, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x0e, 0xe2, 0x1f, 0xf0, 0xe6, 0xf8, 0x76, 0x3c, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0x06, 0x51, 0x38, 0x78, 0x33, 0x88, 0x16, 0x84, 0x83, 0x60, 0x83, 0xa3, 0xc4, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xb2, 0x63, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xb4, 0x50, 0x90, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0xd0, 0x9f, 0x7c, 0x10, 0x6c, 0x70, 0xc8, 0x59, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x25, 0x87, 0x37, 0x07, 0xb1, 0x8f, 0x1a, 0x74, 0x1c, 0x3a, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xa1, 0x43, 0x72, 0xe9, 0xf8, 0x76, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x81, 0x55, 0xa7, 0x83, 0x73, 0xde, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0x41, 0xe3, 0x5b, 0x22, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x2c, 0xa4, 0x9c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0xfd, 0xc9, 0x0f, 0x12, 0xbd, 0x15, 0x0e, 0xd1, 0x3c, 0x0e, 0x1d, 0x87, 0x0e, 0xa7, 0xd8, 0xf1, 0x78, 0x10, 0x6c, 0x10, 0xdb, 0x0a, 0x41, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x22, 0xa6, 0x6c, 0xe7, 0xe0, 0xb9, 0x36, 0x01, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xb1, 0xad, 0x10, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x45, 0xe5, 0xe4, 0x20, 0x92, 0xb2, 0x6b, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0x62, 0x5b, 0x21, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x8a, 0xca, 0xc9, 0xc1, 0x73, 0x6d, 0x02, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0x62, 0xcd, 0x2f, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xd2, 0x92, 0xb4, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0x06, 0x91, 0x32, 0x6e, 0x73, 0xb0, 0x2a, 0x1a, 0xe9, 0x20, 0xe1, 0xf6, 0xe4, 0x38, 0xb4, 0x20, 0xd8, 0x20, 0xb6, 0x15, 0x82, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0xa8, 0x9c, 0x1c, 0xc4, 0x4c, 0x77, 0xcd, 0x71, 0x68, 0x10, 0x6c, 0x10, 0xdb, 0x0a, 0x41, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x52, 0x54, 0x4e, 0x86, 0xdf, 0x78, 0x7e, 0x10, 0x21, 0x63, 0x19, 0xc7, 0xa1, 0xe3, 0xf1, 0xc2, 0x2f, 0x08, 0x16, 0x04, 0x6b, 0x90, 0x94, 0xd6, 0x33, 0x08, 0x36, 0x38, 0x5e, 0x41, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xc0, 0xbc, 0x7b, 0x10, 0x0f, 0xfc, 0x34, 0x07, 0x89, 0x6a, 0x23, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xcc, 0xdf, 0xc1, 0x30, 0xf4, 0x39, 0x18, 0x67, 0xb8, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0xe1, 0x4a, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x71, 0x64, 0x49, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x18, 0x04, 0xff, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x31, 0xc0, 0xbe, 0x7d, 0xba, 0x9e, 0x4b, 0x63, 0x4c, 0x02, 0xcb, 0x9a, 0xf3, 0x5e, 0xd4, 0x3b, 0xdf, 0x9b, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x88, 0xdb, 0x21, 0x75, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xbb, 0x43, 0xea, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0xc0, 0x08, 0xda, 0x1e, 0x7e, 0xe3, 0xf9, 0x18, 0x18, 0x42, 0xdb, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0xd7, 0x0e, 0xa9, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0x5b, 0x0c, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x65, 0x84, 0x25, 0x07, 0x0d, 0x91, 0x09, 0x1c, 0x14, 0x64, 0x3b, 0xc7, 0xa1, 0x43, 0xe3, 0xf9, 0xe3, 0xd0, 0x86, 0x64, 0xc7, 0x86, 0xc4, 0xcc, 0x86, 0xbd, 0xc2, 0x83, 0xf4, 0x3a, 0x81, 0x41, 0xb0, 0xb8, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x6e, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x64, 0x20, 0x6e, 0x87, 0xa6, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0xc3, 0x1c, 0x9a, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0xa2, 0x43, 0xd3, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0xbf, 0xcb, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x84, 0x7c, 0xf6, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x50, 0x76, 0x68, 0x3a, 0x74, 0x48, 0xc3, 0x1d, 0x87, 0x0e, 0x59, 0xbb, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xd1, 0x37, 0x1d, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaf, 0x3d, 0xe4, 0x6b, 0x8f, 0x43, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x22, 0x4d, 0x3a, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xd8, 0x70, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xfa, 0xa6, 0x83, 0x06, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x09, 0x22, 0x1d, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xe2, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0xfe, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xd6, 0x7e, 0x0f, 0x6b, 0xbf, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0x70, 0x8e, 0xec, 0x5d, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0xa2, 0x6f, 0x3a, 0x68, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x20, 0xd2, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x98, 0xb0, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x02, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x91, 0x65, 0x75, 0x68, 0xf8, 0x75, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x44, 0x07, 0x45, 0xae, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x30, 0x07, 0x45, 0xae, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xe2, 0x99, 0x3c, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x98, 0xb0, 0x3a, 0x34, 0xfc, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xcf, 0xe4, 0x41, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x2d, 0x80, 0x0e, 0x46, 0x96, 0xd5, 0x71, 0xe8, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xdb, 0x41, 0x91, 0xab, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xea, 0xcb, 0x83, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0xd1, 0x5a, 0x6b, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x88, 0x0e, 0x92, 0xe5, 0x4b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x86, 0x39, 0x48, 0x96, 0x2f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xc4, 0xb3, 0x07, 0x1d, 0x1c, 0x4c, 0x7f, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x78, 0xf6, 0xa0, 0x83, 0xf2, 0x6e, 0xef, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xdb, 0x41, 0xb2, 0x7c, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x10, 0xb7, 0x83, 0x64, 0xf9, 0x92, 0x83, 0xe4, 0xc0, 0x8b, 0xe3, 0xd0, 0x71, 0xe8, 0x60, 0xa8, 0x08, 0x1c, 0x8f, 0x57, 0x10, 0x6c, 0x50, 0x50, 0x8b, 0x2d, 0x0e, 0xbb, 0x61, 0xd7, 0x60, 0x83, 0xa1, 0x88, 0x34, 0x08, 0x16, 0x24, 0x43, 0x06, 0xd1, 0x82, 0x74, 0x10, 0x6c, 0xd0, 0x6e, 0x31, 0xd4, 0xe1, 0x47, 0x85, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x85, 0x0c, 0x82, 0x0d, 0x8e, 0xe2, 0xe8, 0x07, 0xa3, 0x3d, 0xf8, 0x78, 0x3c, 0xec, 0xc2, 0x6d, 0x38, 0xda, 0x07, 0xc1, 0x06, 0xf1, 0x9e, 0x51, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x6c, 0xb8, 0x1e, 0xd6, 0x7e, 0x8f, 0x43, 0x0b, 0x82, 0x0d, 0x8e, 0xe2, 0xe8, 0x07, 0x71, 0xe8, 0x72, 0x73, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0xce, 0xa1, 0xc6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xa1, 0xe8, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0x43, 0x8d, 0x0f, 0xa2, 0x91, 0xa2, 0xe6, 0x60, 0x6c, 0xb8, 0x1e, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x61, 0x3b, 0x34, 0x1d, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x98, 0x41, 0xb0, 0xc1, 0x39, 0xd4, 0x78, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x20, 0xd2, 0x31, 0xfc, 0xc6, 0xf3, 0x83, 0xf8, 0xfa, 0xa5, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x5c, 0x3b, 0x28, 0x72, 0x15, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x1d, 0x7f, 0x34, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x2c, 0x11, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x3a, 0x18, 0x63, 0x4f, 0xc7, 0xa1, 0x83, 0x03, 0x11, 0xff, 0x71, 0xe8, 0x90, 0x3a, 0x38, 0x0e, 0x0d, 0xbb, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x83, 0x60, 0x83, 0x08, 0x92, 0x0f, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x09, 0xf3, 0xf8, 0x60, 0xb4, 0x07, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x65, 0x07, 0xc9, 0xf2, 0x25, 0x87, 0x46, 0x2d, 0xc7, 0xa1, 0xc3, 0xfa, 0xe6, 0x82, 0x60, 0x83, 0xd6, 0x32, 0x00, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x3c, 0x7b, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0xe0, 0xa0, 0xf1, 0xc8, 0x80, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x6c, 0xd0, 0x5a, 0x06, 0xc0, 0xc1, 0xc0, 0x16, 0x3d, 0x1e, 0x2f, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x41, 0x74, 0xe8, 0xa4, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x20, 0xdb, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x84, 0xed, 0xd0, 0x49, 0x6d, 0x90, 0x0c, 0x39, 0x28, 0xb8, 0x70, 0x8e, 0x43, 0x0b, 0x82, 0x05, 0xc9, 0xe0, 0xd5, 0xf1, 0xfc, 0x60, 0x60, 0x8b, 0x1e, 0x87, 0x16, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x1b, 0xa4, 0x48, 0x7c, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x0b, 0xbf, 0xf1, 0x7c, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0xcb, 0x08, 0x4b, 0x0e, 0xd9, 0x8b, 0x43, 0xaa, 0xe6, 0x38, 0x34, 0x08, 0x16, 0x04, 0x1b, 0x44, 0x23, 0xb3, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0xf0, 0x1b, 0xcf, 0x17, 0x04, 0x1b, 0x2c, 0xfd, 0x1f, 0x3b, 0x08, 0x23, 0xfc, 0xc3, 0xd1, 0x7e, 0xd8, 0x2b, 0x3c, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xf0, 0xea, 0x90, 0xad, 0x38, 0x34, 0x6a, 0x19, 0x7e, 0x41, 0xb4, 0x90, 0x61, 0x17, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x06, 0xc1, 0x06, 0x91, 0x91, 0x49, 0x73, 0x10, 0xb5, 0xeb, 0x41, 0x87, 0xf5, 0xcd, 0x05, 0xc1, 0x06, 0x51, 0x4a, 0x06, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xbd, 0xb1, 0xe1, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x52, 0x85, 0x6f, 0xd8, 0x05, 0xc1, 0x06, 0x23, 0xf8, 0xf4, 0x60, 0x60, 0x8b, 0x1e, 0x2c, 0x40, 0x57, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0xe1, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0xd0, 0x68, 0x2d, 0xd4, 0xa1, 0x63, 0xfc, 0x86, 0xd4, 0xc1, 0x20, 0xd8, 0xe0, 0xfc, 0x5d, 0x7e, 0xf0, 0x34, 0x4a, 0x88, 0xe3, 0xf1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x1b, 0x34, 0xa0, 0x0a, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x0c, 0xbf, 0xf1, 0x7c, 0x05, 0xc1, 0x06, 0xe7, 0xef, 0xf2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x41, 0x74, 0x5f, 0xf7, 0x1c, 0x87, 0x0e, 0xe3, 0xb2, 0x86, 0xa3, 0x7d, 0x10, 0x2c, 0x48, 0x06, 0xce, 0xbd, 0x83, 0x63, 0x56, 0xf1, 0x41, 0x74, 0x66, 0xd2, 0x1c, 0x62, 0x78, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x7f, 0xec, 0xad, 0x8c, 0x3c, 0x88, 0x18, 0xa3, 0x99, 0xe3, 0xf1, 0x20, 0x58, 0x5c, 0xf8, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0xf8, 0xdc, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xf6, 0x5e, 0x4b, 0x0e, 0x1d, 0x34, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x86, 0x3c, 0x62, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x3c, 0x9b, 0x27, 0xe7, 0x20, 0x0e, 0x5d, 0x6e, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0x80, 0xcf, 0xdc, 0x58, 0x18, 0x5b, 0x98, 0x5c, 0x5b, 0x1d, 0x1b, 0x7d, 0x48, 0x2d, 0x1d, 0x8f, 0x57, 0xf8, 0x05, 0xc1, 0x06, 0xcb, 0xc2, 0x60, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x83, 0xc6, 0xe7, 0x56, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0xf7, 0x5a, 0x72, 0x68, 0x0a, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0x5e, 0x6e, 0x47, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x84, 0xeb, 0x90, 0xad, 0x38, 0x88, 0xfa, 0x92, 0x9e, 0xe3, 0xd0, 0x20, 0xd8, 0xe0, 0xd9, 0x6a, 0x38, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xda, 0xb9, 0x35, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xb4, 0xe7, 0x77, 0x1c, 0x34, 0x6d, 0xba, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xb4, 0xe7, 0x77, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x0e, 0x8a, 0x5c, 0x85, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xf0, 0x14, 0x46, 0x46, 0xd6, 0x42, 0xf6, 0x56, 0x27, 0xc6, 0x56, 0xd6, 0x32, 0x37, 0x16, 0xc6, 0x16, 0x26, 0xd7, 0x56, 0xc7, 0x46, 0x1f, 0x52, 0x4b, 0xc7, 0xe3, 0x85, 0x5f, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x0d, 0x0e, 0xa9, 0xea, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x20, 0xd8, 0x20, 0x32, 0x64, 0x44, 0x0e, 0x52, 0xc7, 0x76, 0x0e, 0xd1, 0x3c, 0xe4, 0x6b, 0x8f, 0x43, 0xc7, 0xe3, 0x83, 0x58, 0xa3, 0xea, 0x59, 0xf8, 0x05, 0xc1, 0x06, 0x05, 0xb5, 0xd8, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0xf0, 0xe8, 0x05, 0xb8, 0x43, 0x07, 0x8d, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x79, 0x26, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x59, 0xf8, 0x8d, 0xe7, 0x1b, 0x04, 0x29, 0xfe, 0x41, 0x90, 0xe2, 0x1f, 0x52, 0x07, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0xe5, 0x76, 0x24, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0xb8, 0x30, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x29, 0xb8, 0xe3, 0xa0, 0x24, 0x68, 0x38, 0x0e, 0x1d, 0x52, 0x35, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x6e, 0xe5, 0x6e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x92, 0x4e, 0x07, 0xe7, 0xfa, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x47, 0xda, 0xe4, 0x83, 0x26, 0x03, 0x95, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0x08, 0xdd, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa4, 0xe0, 0x8e, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x22, 0xbd, 0xdd, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x59, 0xf8, 0x8d, 0xe7, 0x1b, 0xfa, 0x93, 0x0f, 0x82, 0x0d, 0x8e, 0xb4, 0xc9, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xce, 0x8c, 0xcb, 0x07, 0x25, 0x1a, 0xce, 0x71, 0xe8, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x9a, 0xec, 0x2d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x85, 0xdf, 0x78, 0xbe, 0xc1, 0x99, 0x71, 0xf9, 0xe0, 0xcc, 0xb8, 0x7c, 0x48, 0xd5, 0x1c, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x20, 0xfc, 0x9d, 0x0e, 0x4e, 0x1b, 0xca, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xc2, 0x6f, 0x3c, 0x3f, 0x88, 0x1d, 0xaf, 0x9e, 0x83, 0xa3, 0x50, 0xf4, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x06, 0xce, 0xbb, 0x83, 0xd3, 0x86, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x22, 0x36, 0x9a, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x6a, 0xd8, 0xc9, 0xc1, 0xab, 0x16, 0x6d, 0x8e, 0x43, 0x87, 0xd4, 0xc1, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x83, 0x53, 0x07, 0xc3, 0xd0, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0x1e, 0x1b, 0x7f, 0x73, 0x48, 0x1d, 0x1c, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x64, 0x07, 0xc3, 0x3f, 0xf6, 0x60, 0x60, 0x8b, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x40, 0xf8, 0x3b, 0x1d, 0xa4, 0x05, 0x8d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x1b, 0xc4, 0x50, 0x91, 0xd0, 0xc2, 0x6f, 0x3c, 0xdf, 0x20, 0xa1, 0xec, 0xe4, 0x60, 0xbc, 0xe9, 0x6c, 0xd0, 0x78, 0x0a, 0xcb, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x60, 0xfe, 0x0e, 0xd2, 0x82, 0x46, 0x06, 0xc9, 0xa0, 0x6c, 0x10, 0x2d, 0xec, 0x41, 0x3c, 0x70, 0xe3, 0x1c, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0xd1, 0x0c, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc0, 0xc4, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x42, 0x71, 0x70, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x01, 0xd3, 0x34, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xa2, 0x19, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x09, 0xb7, 0x27, 0x13, 0x34, 0xfe, 0x3f, 0x0e, 0x1d, 0x52, 0x07, 0xc7, 0xa1, 0x83, 0xf1, 0xa6, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0x31, 0xc2, 0x24, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x0c, 0xbf, 0xf1, 0x7c, 0x0d, 0x92, 0xb3, 0x42, 0x06, 0xc1, 0x82, 0x64, 0x90, 0x1d, 0x0c, 0x47, 0xe9, 0x43, 0xa3, 0x96, 0x35, 0x48, 0xce, 0x0a, 0x39, 0x0e, 0x1d, 0x62, 0x78, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x3c, 0xe6, 0xd2, 0xce, 0xdc, 0x5a, 0xde, 0xc6, 0xe8, 0xe6, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x41, 0xb0, 0x20, 0x19, 0x7c, 0x39, 0x38, 0x9d, 0x21, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0x74, 0x49, 0xda, 0x1c, 0xa4, 0x86, 0x9d, 0x1c, 0x87, 0x36, 0x9c, 0x62, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xd4, 0xf4, 0x03, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x82, 0xd6, 0x74, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0x05, 0x77, 0x1c, 0x04, 0x29, 0xfe, 0x71, 0xe8, 0x90, 0xaa, 0x39, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0xd1, 0x3e, 0xd8, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xf8, 0x18, 0x0d, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xb7, 0xb1, 0x35, 0x07, 0x07, 0x3b, 0xe4, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x71, 0x96, 0xcf, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x29, 0xb8, 0x63, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe4, 0x99, 0x94, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xe1, 0x37, 0x9e, 0x6f, 0xe8, 0x4f, 0x3e, 0x08, 0x36, 0x88, 0xdb, 0xd8, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa3, 0xd5, 0xfc, 0xa0, 0x44, 0xc3, 0x39, 0x0e, 0x1d, 0x52, 0x07, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x88, 0xf6, 0xfc, 0x8e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x38, 0xf7, 0x5a, 0x1f, 0x52, 0x07, 0xc7, 0xa1, 0x83, 0x87, 0x32, 0xe2, 0x1c, 0x8f, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x80, 0x0f, 0x57, 0x37, 0xb6, 0x1e, 0x52, 0x4b, 0xc7, 0xe3, 0xe1, 0x17, 0x04, 0x1b, 0x24, 0xee, 0xf7, 0x2c, 0x0e, 0xbb, 0x20, 0xd8, 0x20, 0xfe, 0xb6, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x1d, 0x7f, 0x34, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x82, 0x14, 0xff, 0xa0, 0x20, 0xdb, 0x39, 0x0e, 0x0d, 0xbf, 0xf1, 0xfc, 0x20, 0x7e, 0x64, 0x84, 0x8e, 0x43, 0x1b, 0x8e, 0xf6, 0x61, 0x17, 0x04, 0x1b, 0xc4, 0xdf, 0x96, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0xe3, 0x8f, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x90, 0xe2, 0x1f, 0x1c, 0x88, 0xf8, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x86, 0x8c, 0xc8, 0x41, 0xc9, 0x99, 0x73, 0x1c, 0xda, 0x70, 0xb4, 0x0f, 0x82, 0x0d, 0xe2, 0xcf, 0x4b, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x88, 0xb6, 0x14, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xc9, 0x33, 0x29, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0x06, 0x8d, 0x94, 0x2b, 0x1d, 0xe2, 0x7f, 0x1c, 0x3a, 0x0e, 0x0d, 0xbb, 0xc1, 0xa8, 0x97, 0xdc, 0x70, 0xb4, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x11, 0x7d, 0xe0, 0x71, 0xd0, 0x82, 0xae, 0xc0, 0xb0, 0x1b, 0x8c, 0x7a, 0xc9, 0x0d, 0x47, 0xfb, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xe9, 0xed, 0x16, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xc2, 0x6f, 0x3c, 0xdf, 0xa0, 0x24, 0x68, 0x38, 0x28, 0x09, 0x1a, 0x0e, 0x82, 0x14, 0xff, 0x38, 0x34, 0x08, 0x16, 0x04, 0x1b, 0x44, 0x94, 0x30, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x34, 0xfc, 0xc6, 0xf3, 0x35, 0xec, 0x15, 0x0e, 0x82, 0x05, 0xc9, 0x20, 0x3b, 0x18, 0xef, 0x3a, 0x87, 0x3d, 0xde, 0x0d, 0xca, 0x3c, 0xa8, 0x0d, 0xc6, 0xd8, 0xd3, 0x21, 0x86, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0x45, 0x9c, 0x24, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x38, 0x4a, 0x2c, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0xb8, 0x3d, 0x39, 0x68, 0xce, 0x76, 0xe9, 0x38, 0x74, 0x48, 0x1d, 0x1c, 0x87, 0x86, 0x5b, 0x10, 0x2c, 0x48, 0x06, 0xa7, 0x0e, 0x86, 0x7f, 0xec, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x3c, 0x63, 0xef, 0xe7, 0xb0, 0x57, 0x78, 0x1c, 0x1a, 0x04, 0x1b, 0x1c, 0xea, 0xcc, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x84, 0x88, 0xff, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xb1, 0xf2, 0x27, 0x74, 0x90, 0x44, 0x50, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x3c, 0xec, 0xca, 0xe4, 0xd2, 0x5a, 0xde, 0xc6, 0xe8, 0xe6, 0x43, 0x6a, 0xe9, 0x78, 0xbc, 0xf0, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x6a, 0xfa, 0x81, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x44, 0x92, 0x97, 0xd0, 0xf0, 0x1b, 0xcf, 0x0f, 0xa2, 0x8b, 0x46, 0xe8, 0x38, 0x34, 0xfc, 0x82, 0x68, 0x21, 0x83, 0x60, 0x83, 0x58, 0xf6, 0xa8, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x84, 0xbf, 0xd3, 0xc1, 0xe9, 0x0c, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0xe2, 0xd0, 0x56, 0x0c, 0x62, 0x3f, 0x08, 0x16, 0x24, 0x03, 0x65, 0xe9, 0xe0, 0x74, 0x86, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x68, 0x4c, 0x14, 0x3a, 0x18, 0x1b, 0xae, 0xc7, 0xa1, 0x43, 0x0c, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x85, 0x0c, 0x82, 0x0d, 0x62, 0xaa, 0xa3, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x9c, 0xe5, 0x73, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x38, 0x34, 0xec, 0x0f, 0x12, 0x6e, 0x4f, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xcb, 0xfc, 0x36, 0x07, 0x69, 0x2f, 0x1e, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0xec, 0x0e, 0x8a, 0xdf, 0x82, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x61, 0x0e, 0x8a, 0xdf, 0x82, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xc3, 0xf5, 0x90, 0xec, 0x38, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xe2, 0x76, 0x50, 0xfc, 0x16, 0x1c, 0x44, 0x88, 0xa4, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc2, 0x6f, 0x30, 0xfc, 0x63, 0x0f, 0x5d, 0x4c, 0x0e, 0xc6, 0x32, 0xd4, 0xc1, 0xe0, 0xf4, 0x39, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x7f, 0x0e, 0x2d, 0x4c, 0x3e, 0xa4, 0x96, 0x8e, 0xc7, 0x2b, 0xfc, 0x82, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0x08, 0x36, 0x88, 0x49, 0x13, 0xa1, 0x41, 0xb0, 0x41, 0x43, 0x1e, 0x31, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x8e, 0xde, 0xe6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x36, 0x4f, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0xbc, 0x8e, 0x53, 0xe2, 0xd0, 0xf0, 0xeb, 0x38, 0x74, 0x10, 0x63, 0x23, 0x42, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xc0, 0x77, 0x18, 0x19, 0x59, 0xcb, 0xdc, 0x58, 0x18, 0x5b, 0x98, 0x5c, 0x5b, 0x1d, 0x1b, 0x5d, 0xcb, 0xdc, 0x58, 0x18, 0x5b, 0x98, 0x5c, 0x5b, 0x1d, 0x1b, 0x5d, 0x8b, 0x58, 0xd8, 0x5c, 0x79, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0xb5, 0x32, 0x64, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x8a, 0x1b, 0x82, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x18, 0x90, 0xfe, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x78, 0xcf, 0x8d, 0x85, 0xb1, 0x85, 0xc9, 0xb5, 0xd5, 0xb1, 0xd1, 0xb5, 0x88, 0x85, 0xcd, 0x95, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0xe0, 0x59, 0xe2, 0x0d, 0x83, 0x60, 0x83, 0xd8, 0x3f, 0x14, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0xbe, 0xc1, 0xc8, 0x4f, 0xd8, 0x20, 0xc2, 0xb3, 0x7b, 0x0e, 0x31, 0x3c, 0x0e, 0x1d, 0x8f, 0x17, 0x7e, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x34, 0x3e, 0xb7, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xbd, 0xd7, 0x92, 0x43, 0x1a, 0xee, 0x38, 0x34, 0x08, 0x16, 0x04, 0x1b, 0xbc, 0xdc, 0x8e, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xb4, 0xa5, 0x08, 0x1d, 0xf6, 0x78, 0x8f, 0x43, 0x83, 0x60, 0x83, 0x67, 0xab, 0xe1, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xe7, 0xd6, 0xfc, 0x60, 0x70, 0xfa, 0x1c, 0x87, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0x00, 0x0f, 0xb8, 0xb7, 0x34, 0x37, 0xba, 0x96, 0x30, 0x32, 0xf2, 0x90, 0x5a, 0x3a, 0x1e, 0x0f, 0xbf, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0x82, 0x0d, 0xd6, 0x88, 0xf6, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x64, 0xed, 0x16, 0x7e, 0xe3, 0xf9, 0x82, 0x60, 0x83, 0xc8, 0x90, 0x11, 0x39, 0x58, 0xf1, 0x60, 0x73, 0x68, 0x24, 0x78, 0xe8, 0x18, 0x76, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0xdf, 0xae, 0x4c, 0x2e, 0x3d, 0xa4, 0x96, 0x8e, 0xc7, 0x83, 0x6c, 0x0d, 0x69, 0xa0, 0x71, 0xe0, 0xcb, 0xc8, 0xc3, 0xd5, 0x75, 0x3c, 0x1e, 0x04, 0x8b, 0x0b, 0xbf, 0x20, 0x58, 0x5c, 0xf8, 0x05, 0xc1, 0x06, 0x05, 0xb4, 0xe0, 0xe2, 0x20, 0x58, 0x5c, 0x10, 0x2c, 0x08, 0x36, 0x68, 0xef, 0xb5, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x37, 0x28, 0x00, 0xa0, 0x0e, 0x59, 0xbb, 0x85, 0xdf, 0x78, 0xbe, 0x41, 0x19, 0xb7, 0x33, 0x48, 0x06, 0x52, 0x5f, 0x87, 0x15, 0xda, 0x85, 0xdf, 0x78, 0x7e, 0xf0, 0x28, 0x41, 0x8a, 0x85, 0xdf, 0x78, 0xbe, 0xe1, 0x68, 0x3f, 0x08, 0x7b, 0xea, 0x85, 0xdf, 0x78, 0xbe, 0xe1, 0x68, 0x3f, 0x28, 0xb1, 0x07, 0x0f, 0x06, 0x7e, 0xc8, 0x71, 0x68, 0xf8, 0x05, 0xd1, 0x42, 0x06, 0xc1, 0x06, 0xe9, 0xd3, 0x27, 0x07, 0x71, 0xd7, 0x22, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb4, 0x40, 0xd8, 0x07, 0xc1, 0x06, 0xcb, 0x94, 0xc5, 0x0e, 0xda, 0x5e, 0x7d, 0x39, 0x1e, 0x0f, 0xbf, 0x41, 0x14, 0xde, 0x0a, 0x0d, 0xbf, 0x41, 0x44, 0xe2, 0x0a, 0x0d, 0xbf, 0x41, 0x14, 0xde, 0x0a, 0x0d, 0xbf, 0x41, 0x44, 0xe2, 0x0a, 0x0d, 0xbf, 0x41, 0x14, 0xde, 0x0a, 0x0d, 0xbf, 0x41, 0x44, 0xe2, 0x0a, 0x0d, 0xbf, 0x41, 0x14, 0xde, 0x0a, 0x0d, 0xbf, 0x41, 0x44, 0xe2, 0x0a, 0x0d, 0xbf, 0x41, 0x14, 0xde, 0x0a, 0x0d, 0xbf, 0x41, 0x44, 0xe2, 0x0a, 0x0d, 0xbf, 0x41, 0x14, 0xde, 0x0a, 0x0d, 0x82, 0x0d, 0x62, 0xb8, 0x9e, 0x63, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xa2, 0x3c, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x03, 0x11, 0xff, 0xf0, 0x1b, 0xcf, 0x17, 0x04, 0x1b, 0x44, 0xef, 0xbf, 0xcd, 0x41, 0xda, 0x8b, 0xc7, 0x41, 0x19, 0x6b, 0x75, 0x1c, 0x3a, 0x0e, 0x2d, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0xe2, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0x48, 0x06, 0x8a, 0xd5, 0xc1, 0x30, 0xf4, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xc8, 0xda, 0x6d, 0xc8, 0xd7, 0x1e, 0x04, 0x29, 0xfe, 0x71, 0xe8, 0x78, 0xbc, 0x82, 0x60, 0x83, 0xb8, 0x4c, 0x31, 0x59, 0x1c, 0x7e, 0x41, 0xb4, 0xe0, 0xfc, 0x20, 0xd8, 0xe0, 0x1c, 0xfc, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x51, 0xfc, 0x38, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x0c, 0xa3, 0xd2, 0x21, 0x0d, 0x37, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x86, 0x51, 0xe9, 0xd0, 0x14, 0x68, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x0c, 0xce, 0xc7, 0x83, 0xf7, 0x1c, 0x66, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0xe7, 0x07, 0xc1, 0x06, 0xe7, 0xe0, 0xef, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x61, 0x4f, 0x3d, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x32, 0x26, 0xfd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x61, 0x54, 0x3a, 0x58, 0xc2, 0xff, 0xb3, 0x41, 0x5c, 0x1c, 0x0b, 0x1d, 0xa4, 0x76, 0x80, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0xce, 0x0f, 0x82, 0x0d, 0xce, 0xc1, 0xdf, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8d, 0x8b, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x14, 0x3f, 0xce, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xc3, 0xa8, 0x74, 0xe8, 0x44, 0x34, 0xfc, 0xc6, 0xf3, 0x83, 0x88, 0x6b, 0x16, 0x3a, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0x9c, 0x1f, 0x04, 0x1b, 0x9c, 0x83, 0xbf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x7a, 0x08, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x8c, 0x49, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xca, 0x91, 0x85, 0x36, 0x88, 0xf1, 0x68, 0xa1, 0x83, 0xc8, 0xe5, 0xc7, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0x9c, 0x1f, 0x04, 0x1b, 0x9c, 0x83, 0xbf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb2, 0x76, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x3c, 0x8a, 0x1f, 0x67, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xe1, 0xc6, 0x42, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xc4, 0x2b, 0xb2, 0xd0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x9c, 0x8f, 0x07, 0x8d, 0x4e, 0x28, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0xe7, 0x07, 0xc1, 0x06, 0xe7, 0xe0, 0xef, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x61, 0x4f, 0x3d, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x32, 0x26, 0xfd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x88, 0x6b, 0x16, 0xda, 0x20, 0x2e, 0x8e, 0x85, 0x0e, 0x0e, 0x44, 0xfc, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x0d, 0x22, 0xe9, 0x59, 0x68, 0xf8, 0x05, 0xd1, 0x82, 0xf3, 0x83, 0x60, 0x83, 0x73, 0xf0, 0xf7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x0f, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x92, 0x31, 0xe9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x44, 0x39, 0xb2, 0xd0, 0x06, 0x31, 0x1e, 0x2d, 0x74, 0x30, 0xae, 0xd1, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x21, 0xd9, 0x71, 0x3c, 0x1e, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb0, 0x41, 0x24, 0x25, 0x09, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x74, 0x0c, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x21, 0x39, 0xe6, 0x60, 0x8c, 0x46, 0x1c, 0x87, 0x8e, 0xc7, 0x0b, 0xbf, 0x20, 0x5a, 0x30, 0x1e, 0x04, 0x1b, 0x9c, 0x9f, 0x68, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x0d, 0x0a, 0xb2, 0x9d, 0x0d, 0x0e, 0x44, 0xfc, 0x1b, 0x44, 0x2e, 0x3f, 0xce, 0x41, 0x94, 0x7f, 0xcd, 0x1c, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0x8c, 0x07, 0xc1, 0x06, 0xe7, 0x27, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x63, 0xc3, 0x75, 0x83, 0x12, 0x0d, 0x67, 0x83, 0xc3, 0x49, 0xf1, 0x06, 0xa5, 0x0a, 0xd0, 0x86, 0xc6, 0xf3, 0x07, 0x43, 0xb1, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb4, 0x60, 0x3c, 0x08, 0x36, 0x38, 0x3f, 0xd1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x34, 0x9e, 0xdf, 0x60, 0xc8, 0x9e, 0x6f, 0x70, 0xae, 0x29, 0xde, 0x20, 0x71, 0xfe, 0x63, 0x83, 0x82, 0x6c, 0xe7, 0xa0, 0x44, 0xc3, 0x39, 0x0e, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x18, 0x0f, 0x82, 0x0d, 0xce, 0x4f, 0xb4, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x06, 0xe3, 0x1a, 0x7d, 0x83, 0xb3, 0x5e, 0xfe, 0x06, 0xe5, 0xa2, 0xcf, 0x06, 0x43, 0xf6, 0xfc, 0x60, 0x5c, 0xa3, 0x1f, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0x8c, 0x07, 0xc1, 0x06, 0xe7, 0x27, 0xda, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0x83, 0x12, 0x0d, 0x67, 0x83, 0x73, 0x4d, 0xf1, 0x06, 0xe5, 0xa2, 0xcf, 0x06, 0x07, 0x22, 0xfe, 0x83, 0xc3, 0x49, 0xf1, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0x82, 0x68, 0xc1, 0x78, 0x10, 0x6c, 0x70, 0x7e, 0xa2, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x36, 0x5c, 0x37, 0x18, 0xb2, 0xe7, 0x1b, 0x9c, 0xf5, 0xf2, 0x37, 0x88, 0x5c, 0x7e, 0x9c, 0x0d, 0xce, 0x35, 0xc5, 0x07, 0x67, 0xbd, 0xfc, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x82, 0xf1, 0x20, 0xd8, 0xe0, 0xfc, 0x44, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x78, 0x7e, 0x83, 0x71, 0x8d, 0xbe, 0xc1, 0x81, 0x88, 0x7f, 0x83, 0x52, 0x05, 0x68, 0x83, 0xc8, 0xe5, 0xc7, 0x39, 0x28, 0x55, 0x80, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0xc6, 0x83, 0x60, 0x83, 0xf3, 0x13, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0x41, 0x41, 0xb6, 0xb3, 0xc1, 0xe1, 0xa4, 0x78, 0x83, 0xc4, 0xf9, 0x8f, 0x0d, 0x12, 0xe7, 0x3f, 0x0e, 0xca, 0x45, 0x9f, 0xe3, 0xd0, 0xf1, 0xf8, 0x90, 0xb5, 0x5b, 0x10, 0x2c, 0x48, 0x06, 0xa4, 0xbf, 0xf6, 0x1d, 0x9c, 0xeb, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xa0, 0x55, 0x56, 0x95, 0xc3, 0xda, 0xef, 0x71, 0x68, 0x10, 0x6c, 0x10, 0x7b, 0xfc, 0x42, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xe2, 0xae, 0x5f, 0xe8, 0x10, 0xff, 0xe3, 0xd0, 0xc1, 0x69, 0x05, 0xf7, 0x78, 0x3c, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x90, 0x3a, 0x94, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x44, 0xc3, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x61, 0x2b, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0xc0, 0x69, 0x75, 0x10, 0xe4, 0xfc, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x01, 0xe9, 0xaf, 0x7d, 0x07, 0xe7, 0xbc, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x58, 0x05, 0x79, 0x70, 0x48, 0xd5, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x41, 0xc9, 0xd0, 0x74, 0x3c, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0xfc, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0xf3, 0x21, 0xb5, 0x74, 0x3c, 0x5e, 0x43, 0x2b, 0xf1, 0x15, 0x04, 0x1b, 0xc4, 0x9a, 0x5f, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xc1, 0xea, 0x5e, 0x98, 0x83, 0x11, 0x12, 0x75, 0x30, 0xf0, 0x43, 0x8e, 0x43, 0x1b, 0x8e, 0xf6, 0x15, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x68, 0xef, 0x74, 0x70, 0xcc, 0x2a, 0x3e, 0x88, 0x28, 0xa3, 0xa0, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0xe6, 0xce, 0xd1, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1a, 0xcf, 0x0f, 0xbf, 0xf1, 0x7c, 0x0c, 0x10, 0x10, 0x1b, 0x3d, 0xa0, 0x8e, 0xe5, 0x4a, 0x7f, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0x14, 0xd0, 0x82, 0x8b, 0x83, 0x60, 0x83, 0x24, 0x63, 0x8f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x07, 0x22, 0xfe, 0xe1, 0x37, 0x9e, 0x6f, 0xf0, 0x9e, 0x4a, 0x9d, 0x43, 0x0c, 0x8f, 0x43, 0xc7, 0xe3, 0x83, 0x84, 0xb2, 0x93, 0x83, 0x02, 0x00, 0x6a, 0x41, 0xb0, 0x41, 0x01, 0x2d, 0xb8, 0x38, 0x08, 0xd6, 0x20, 0x2a, 0xb7, 0x4f, 0x36, 0x88, 0xf2, 0xe8, 0x93, 0x05, 0xc1, 0x06, 0x31, 0xf4, 0x7c, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x49, 0xbe, 0xcc, 0xa1, 0x71, 0xd1, 0x71, 0x68, 0x41, 0xb0, 0x41, 0x0c, 0x3d, 0x9f, 0x1c, 0x2c, 0xbe, 0xc8, 0x1a, 0x04, 0x1b, 0xc4, 0xd0, 0xf3, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xd5, 0x6c, 0x33, 0x07, 0x25, 0xf6, 0xe0, 0x71, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x20, 0xd6, 0xfc, 0x82, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x08, 0x7f, 0xa7, 0x83, 0xe1, 0x28, 0x7d, 0x50, 0xa2, 0xe1, 0x1c, 0x87, 0x16, 0x04, 0x1b, 0xc4, 0x65, 0x8a, 0xc9, 0xe2, 0x20, 0x5a, 0xb0, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xa2, 0x77, 0x70, 0xcc, 0x2a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x60, 0x80, 0x70, 0xc8, 0xda, 0x1d, 0x87, 0x0e, 0xe3, 0x72, 0x3c, 0x5e, 0xe1, 0x37, 0x58, 0xdd, 0x0b, 0x73, 0x50, 0x32, 0x34, 0x6d, 0x90, 0xe8, 0x83, 0x73, 0x50, 0xc6, 0xed, 0x1c, 0x24, 0xca, 0x7d, 0x6c, 0x90, 0x0e, 0xe5, 0xb1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x1b, 0xa4, 0x48, 0x7c, 0x1c, 0xa4, 0xf5, 0x75, 0x1c, 0x8f, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xf2, 0x74, 0x30, 0x1c, 0xa5, 0x0f, 0x0a, 0x2e, 0x9c, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x64, 0x6b, 0x68, 0xbf, 0x7e, 0x90, 0xc0, 0xf5, 0x33, 0x08, 0x16, 0x04, 0x1b, 0xc4, 0x4b, 0xd9, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xf3, 0x77, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xd6, 0xee, 0x60, 0x28, 0x16, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x17, 0x04, 0x1b, 0xc4, 0x93, 0x58, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0x08, 0xd6, 0x20, 0x42, 0xe9, 0x7f, 0x06, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x92, 0x81, 0xf5, 0xbb, 0x83, 0xf1, 0xae, 0x73, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0xdf, 0x06, 0xc1, 0x86, 0x18, 0x0e, 0x82, 0xc5, 0x61, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xa0, 0x1c, 0x1c, 0x28, 0x92, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x94, 0x34, 0x0d, 0x07, 0x81, 0x89, 0x7d, 0x1c, 0x5a, 0x83, 0x97, 0xd0, 0x03, 0x1c, 0x52, 0x35, 0x6b, 0x48, 0x1d, 0x6c, 0xd8, 0x2b, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0xbe, 0x4e, 0x07, 0xe7, 0xfa, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa3, 0xd5, 0xfc, 0xa0, 0x1c, 0x6b, 0x38, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x81, 0xe8, 0x2f, 0x08, 0x36, 0x38, 0xd2, 0x26, 0x1f, 0x44, 0x25, 0xc9, 0xd0, 0x20, 0x58, 0x90, 0x0c, 0xbc, 0xef, 0x74, 0x70, 0xae, 0x3f, 0x3e, 0x88, 0x88, 0x93, 0xa1, 0xc3, 0x8e, 0xc9, 0xf1, 0xed, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xf0, 0x12, 0x63, 0x0b, 0x5b, 0x2b, 0x9b, 0x69, 0x49, 0x6b, 0x83, 0x63, 0x0f, 0x57, 0xd7, 0xf1, 0x78, 0xf8, 0x05, 0xc1, 0x0a, 0x92, 0x81, 0xd4, 0xd7, 0xf1, 0xf8, 0x10, 0xc3, 0x41, 0xb0, 0xb8, 0xf0, 0x0b, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0x90, 0xfe, 0xa5, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xe2, 0x6c, 0x6d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xff, 0x0e, 0xd9, 0x8a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa5, 0x0a, 0xd0, 0x21, 0x5f, 0x7b, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x41, 0x52, 0xfb, 0xc1, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x36, 0x58, 0x48, 0x39, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x6d, 0x37, 0xb7, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x3a, 0x94, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x70, 0x52, 0x3c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xc2, 0x56, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x06, 0x31, 0x4f, 0x91, 0x73, 0x70, 0xce, 0x3b, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xe7, 0xca, 0xc1, 0xb9, 0xfe, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0xfe, 0x07, 0x09, 0xb7, 0x27, 0xc7, 0xa1, 0xe3, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x5e, 0x3a, 0x67, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xda, 0x60, 0x44, 0x50, 0x1d, 0x52, 0x35, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x0d, 0xde, 0x0c, 0xf2, 0x79, 0x48, 0x2d, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x64, 0x98, 0x41, 0xb4, 0xb0, 0x1b, 0xc6, 0x65, 0x90, 0x0c, 0xd4, 0xaf, 0x43, 0xb6, 0xe2, 0x90, 0x5c, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0xb0, 0xc4, 0x5e, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0xd6, 0xd0, 0x48, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x91, 0x6d, 0x33, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x08, 0xa0, 0x12, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x9a, 0x3b, 0x1d, 0x9c, 0xf3, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0xdf, 0x1d, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xf7, 0x6b, 0xcf, 0x1c, 0x0c, 0xb3, 0xf0, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x68, 0x3c, 0x7f, 0x1c, 0x1a, 0x04, 0x2b, 0x08, 0x36, 0x88, 0xbe, 0xf5, 0x9a, 0x83, 0x54, 0xb5, 0x86, 0x41, 0xb0, 0x20, 0xd9, 0xa0, 0xf0, 0x0f, 0x3a, 0x38, 0xd7, 0x1f, 0x1f, 0xa4, 0xaa, 0x35, 0x0c, 0xbb, 0x41, 0xfb, 0x80, 0x22, 0x0b, 0xbb, 0xc1, 0x38, 0x64, 0xda, 0x90, 0xec, 0x18, 0x04, 0x1b, 0xac, 0x82, 0x3c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x41, 0xb0, 0xc1, 0x4b, 0xe7, 0x6c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf8, 0x20, 0xa4, 0xc0, 0x0f, 0xc9, 0xa5, 0xe3, 0xd0, 0x20, 0xd8, 0xe0, 0xa5, 0x73, 0x36, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x83, 0xa4, 0xae, 0xee, 0x43, 0x72, 0xe9, 0x38, 0x74, 0x1c, 0x3a, 0x9c, 0x62, 0xc7, 0xb7, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x36, 0x58, 0x62, 0xaf, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0x0b, 0xd7, 0x7c, 0x86, 0xdf, 0x78, 0xbe, 0x21, 0xfe, 0x1b, 0x62, 0xb8, 0x20, 0xd8, 0x20, 0x51, 0x1e, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x81, 0x88, 0x7f, 0xf8, 0x8d, 0xe7, 0x1b, 0xa2, 0x79, 0x30, 0x66, 0xe1, 0x8e, 0x43, 0x1b, 0xa4, 0x43, 0x79, 0x1c, 0xd6, 0x7e, 0x8f, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0xcb, 0xc2, 0x60, 0x16, 0x07, 0xc1, 0x82, 0x60, 0x41, 0x32, 0xcc, 0x20, 0x5a, 0xd8, 0x05, 0xc9, 0x40, 0xea, 0xeb, 0x90, 0xad, 0x18, 0x24, 0x03, 0x79, 0xab, 0x43, 0xb6, 0xe2, 0x90, 0x5c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x1a, 0x76, 0x32, 0xfc, 0xc6, 0xf3, 0x05, 0xc1, 0x06, 0x71, 0x99, 0x5e, 0x73, 0x68, 0x0a, 0x34, 0x08, 0x36, 0x78, 0xe4, 0x89, 0xcd, 0xa1, 0x29, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x86, 0x19, 0x44, 0x0b, 0xbb, 0x71, 0xe8, 0x60, 0x7d, 0xa4, 0xc3, 0x61, 0x85, 0xf6, 0x60, 0xdc, 0x21, 0x1c, 0x8f, 0x87, 0x5f, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x07, 0xc1, 0x06, 0x4b, 0xec, 0xf5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb4, 0x42, 0xa5, 0x3f, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd9, 0x60, 0xed, 0x3a, 0xc5, 0xc1, 0xe9, 0x0c, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xb1, 0xf8, 0x32, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x70, 0x52, 0x7c, 0xc8, 0xd7, 0x1e, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x37, 0x08, 0x80, 0xfb, 0x83, 0x62, 0x5a, 0x70, 0x71, 0xd8, 0x0d, 0x8a, 0x8b, 0xc3, 0x35, 0x08, 0x52, 0xfc, 0x0d, 0xf1, 0xdf, 0x60, 0x21, 0xcc, 0xfe, 0x86, 0x86, 0x3a, 0x83, 0x60, 0x83, 0xb4, 0x1c, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xc3, 0x18, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x20, 0x54, 0x07, 0x01, 0xef, 0x7f, 0x1c, 0x5a, 0x10, 0x2c, 0x48, 0x06, 0xd2, 0x56, 0x07, 0x01, 0xef, 0x7f, 0xe8, 0xa0, 0xb1, 0x21, 0xfe, 0x1b, 0x2c, 0x84, 0xd9, 0xdf, 0xd0, 0x50, 0xe7, 0x20, 0x44, 0xfc, 0x8f, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xe0, 0x37, 0x86, 0x56, 0xe7, 0xb6, 0xd6, 0xf2, 0x56, 0x47, 0x07, 0x57, 0x47, 0x1f, 0x52, 0x4b, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0x38, 0x40, 0x27, 0xc6, 0x16, 0xb6, 0x56, 0x36, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x41, 0xc9, 0xd0, 0x34, 0xfc, 0x82, 0x60, 0x83, 0x73, 0x9b, 0xf3, 0xe2, 0x20, 0x58, 0x0c, 0xc0, 0xff, 0xbc, 0x10, 0xbf, 0x89, 0x8c, 0x66, 0xf0, 0xad, 0xb5, 0xde, 0xa0, 0xfd, 0xd5, 0xec, 0xc1, 0x8f, 0x0f, 0x36, 0x9f, 0x15, 0x46, 0xb4, 0x82, 0xcd, 0x68, 0x41, 0xf3, 0xd6, 0x3f, 0x29, 0x87, 0xa8, 0x78, 0x9b, 0x8e, 0x2f, 0x9d, 0xfa, 0xa7, 0xd2, 0x15, 0x7c, 0x4a, 0x7f, 0xb9, 0x79, 0x37, 0x9e, 0x9d, 0x53, 0x65, 0xc2, 0x42, 0xd7, 0xb3, 0x5d, 0x84, 0x64, 0xde, 0xf9, 0x33, 0xf3, 0x04, 0x75, 0x10, 0x2c, 0x2e, 0xe3, 0x90, 0xa1, 0xc3, 0x0c, 0x37, 0xec, 0xf0, 0x83, 0x60, 0x90, 0x0c, 0xa2, 0x41, 0x36, 0x08, 0x07, 0xe9, 0x20, 0x1e, 0xe4, 0x2d, 0x88, 0x07, 0xd1, 0x30, 0x83, 0x60, 0x90, 0x0c, 0xf2, 0x41, 0x3a, 0xec, 0x38, 0x08, 0x67, 0xc8, 0x20, 0x1b, 0x7e, 0xb8, 0x83, 0x78, 0x4b, 0x14, 0x5a, 0x90, 0x0d, 0x82, 0x41, 0x38, 0xc3, 0x0d, 0x19, 0xe4, 0x83, 0x74, 0x10, 0x0d, 0xe2, 0xa1, 0xc3, 0x0e, 0x3f, 0x0e, 0x92, 0x61, 0x5a, 0xf8, 0x41, 0x32, 0x74, 0x1c, 0xa4, 0x83, 0x70, 0x90, 0x0d, 0xe2, 0x21, 0xc3, 0x0e, 0x37, 0x88, 0x86, 0x99, 0x41, 0x3e, 0x08, 0x5a, 0x90, 0xcc, 0x70, 0xc3, 0x0f, 0x19, 0x66, 0x10, 0x0d, 0xf2, 0x41, 0x3c, 0x0e, 0xb2, 0x41, 0x38, 0xec, 0x20, 0x18, 0x7a, 0x10, 0xcd, 0xce, 0x3c, 0x0b, 0x19, 0x84, 0xc3, 0x0e, 0xa2, 0x19, 0x64, 0x83, 0x60, 0xe8, 0x30, 0x83, 0x74, 0xf8, 0xe1, 0x06, 0xf9, 0x20, 0x1e, 0x07, 0x49, 0x0b, 0xc2, 0xe1, 0xc6, 0x41, 0x3e, 0x88, 0x07, 0xe9, 0x30, 0x83, 0x68, 0x86, 0x1f, 0x76, 0xe8, 0x20, 0x19, 0x32, 0x08, 0x0e, 0xe2, 0x98, 0x97, 0x67, 0x41, 0x3a, 0xc8, 0x86, 0x1f, 0xc4, 0x83, 0x70, 0x1c, 0x3a, 0x48, 0x86, 0x9b, 0x41, 0x3e, 0xcc, 0x20, 0x18, 0x76, 0xc8, 0x41, 0xf3, 0x48, 0xa8, 0x0b, 0x3b, 0xc8, 0x07, 0xf1, 0x20, 0x19, 0x64, 0x43, 0x67, 0x10, 0x0c, 0xc2, 0x21, 0x83, 0x74, 0xf8, 0x71, 0x98, 0x41, 0x34, 0x5c, 0x0b, 0xa2, 0x21, 0x83, 0x60, 0x98, 0xe1, 0x87, 0x1d, 0x87, 0x1b, 0xe4, 0x83, 0x6c, 0x90, 0x0c, 0xe2, 0xa1, 0x83, 0x70, 0x90, 0x1e, 0x4e, 0xb1, 0x0d, 0x62, 0x31, 0x6d, 0x68, 0x83, 0x58, 0x57, 0x1b, 0x6a, 0x10, 0x2c, 0x2e, 0x08, 0x36, 0x58, 0x16, 0x06, 0xb3, 0x38, 0x08, 0x16, 0x04, 0x1b, 0xc4, 0xad, 0xdc, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x62, 0x84, 0xee, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x61, 0x43, 0x70, 0xc8, 0xda, 0x1d, 0x87, 0x0e, 0xc6, 0x9b, 0xce, 0x71, 0x68, 0xf8, 0x05, 0xd1, 0x42, 0x06, 0xc1, 0x06, 0x69, 0x23, 0x08, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x6f, 0x1c, 0xda, 0x60, 0x31, 0x00, 0xd1, 0x06, 0x89, 0x72, 0x1f, 0x83, 0x60, 0x83, 0x68, 0x3e, 0xbf, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x83, 0x24, 0x23, 0x90, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0x5f, 0xa7, 0x83, 0x03, 0x45, 0xf2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x13, 0x0e, 0x1c, 0x9a, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x85, 0x0c, 0x82, 0x0d, 0xd2, 0x46, 0x10, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0xdf, 0x38, 0xb4, 0x41, 0x81, 0x03, 0xb4, 0x41, 0xa2, 0xdc, 0xc7, 0x20, 0xd8, 0x20, 0x9a, 0xcf, 0x6f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xc4, 0xba, 0xdf, 0xd0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa9, 0xa7, 0x31, 0x07, 0xf1, 0x03, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x64, 0xd8, 0x0d, 0xcd, 0x92, 0x16, 0x04, 0x1b, 0xa4, 0x8d, 0x20, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x71, 0x68, 0x83, 0x74, 0xfb, 0x8f, 0x0d, 0x12, 0xe5, 0x3e, 0x06, 0xc1, 0x06, 0xd1, 0x7c, 0x7e, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xd6, 0xfd, 0x86, 0x0e, 0x12, 0xd1, 0x11, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0x20, 0x58, 0xf8, 0x05, 0xc1, 0x82, 0x64, 0xe0, 0xfe, 0x3a, 0x38, 0x66, 0x2c, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0xc2, 0x77, 0xe7, 0xe0, 0xb4, 0xa1, 0x7c, 0x30, 0x8e, 0x43, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xdb, 0x20, 0x58, 0x5c, 0xd8, 0x85, 0xdb, 0x90, 0xaa, 0x39, 0x58, 0x0c, 0x40, 0xb4, 0xf0, 0x0b, 0xa2, 0x05, 0x82, 0x3f, 0x08, 0x36, 0x48, 0xd8, 0xab, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x5a, 0xcd, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x9a, 0xfc, 0x9b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xf1, 0xb2, 0x37, 0x74, 0x10, 0x98, 0xd8, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x90, 0xb0, 0x57, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xb4, 0x9a, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x5f, 0xfc, 0x37, 0x07, 0x11, 0x02, 0x39, 0x74, 0x1c, 0x1a, 0x7e, 0x41, 0xb4, 0xb0, 0x83, 0x60, 0x41, 0x32, 0x20, 0xd0, 0xfb, 0x0e, 0xd2, 0x82, 0x46, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xa2, 0x73, 0xd0, 0x9a, 0x83, 0xff, 0xc1, 0xf1, 0xbf, 0xf8, 0xa0, 0x70, 0x4b, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x98, 0x0f, 0x82, 0x0d, 0xca, 0xa1, 0xa4, 0x83, 0x28, 0x37, 0x17, 0x3a, 0x1e, 0x0f, 0xbf, 0x20, 0x5a, 0x30, 0x1f, 0x04, 0x1b, 0x94, 0x43, 0x49, 0x07, 0x11, 0x98, 0x2e, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb4, 0x60, 0x3e, 0x08, 0x36, 0x28, 0x87, 0x92, 0x0e, 0xe2, 0x86, 0x5d, 0xe8, 0x78, 0x3c, 0xfc, 0x82, 0x68, 0xc1, 0x7c, 0x10, 0x6c, 0x50, 0x0e, 0x25, 0x1d, 0xc4, 0xbc, 0xbb, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x82, 0xf9, 0x20, 0xd8, 0xa0, 0x1c, 0x4a, 0x3a, 0x88, 0xd8, 0x78, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0xf3, 0x41, 0xb0, 0x41, 0x39, 0x94, 0x74, 0x10, 0x79, 0xf4, 0x42, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0xe6, 0x83, 0x60, 0x83, 0x72, 0x28, 0xe9, 0x20, 0x96, 0xee, 0x85, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0xcc, 0x07, 0xc1, 0x06, 0xe5, 0x50, 0xd2, 0x41, 0x3c, 0xe8, 0x0b, 0x1d, 0x8f, 0x07, 0xc9, 0x30, 0x07, 0x31, 0x9e, 0x61, 0x33, 0x08, 0x36, 0x88, 0xcb, 0x14, 0x93, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x75, 0x52, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x0b, 0x82, 0x05, 0xc9, 0xe0, 0xde, 0xc1, 0x30, 0xf4, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x78, 0x27, 0x0f, 0x62, 0xba, 0xf2, 0xe6, 0x38, 0xb4, 0x20, 0xd8, 0x20, 0xea, 0x41, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xde, 0xc9, 0x0d, 0x3d, 0x84, 0x0e, 0x52, 0x3b, 0x40, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0xa2, 0x1e, 0x74, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xe0, 0x9d, 0xdc, 0xd0, 0xb8, 0xe8, 0x20, 0xb5, 0x03, 0xe4, 0x38, 0xb4, 0x20, 0xd8, 0x20, 0xea, 0x41, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xde, 0xc9, 0x0d, 0xc2, 0x9e, 0xfa, 0x20, 0xb5, 0x03, 0xe4, 0x38, 0xb4, 0x20, 0xd8, 0x20, 0xea, 0x41, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x9c, 0x28, 0xa2, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x9a, 0x86, 0x70, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0x0d, 0x20, 0x1c, 0x04, 0x26, 0xf6, 0x71, 0xe8, 0x20, 0xb5, 0x03, 0xe4, 0x38, 0x34, 0x08, 0x36, 0x88, 0x7a, 0xd0, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x27, 0x8a, 0xe8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xa6, 0x21, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x09, 0x06, 0x08, 0x07, 0x81, 0x89, 0x7d, 0x1c, 0x3a, 0x48, 0xed, 0x00, 0x39, 0x0e, 0x1d, 0x87, 0x86, 0x5f, 0x10, 0x2d, 0x10, 0xfe, 0x41, 0xb0, 0x41, 0x1c, 0x98, 0x05, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x88, 0xd4, 0x1b, 0xe2, 0xbf, 0x41, 0x6a, 0x07, 0xc8, 0x21, 0x9a, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0xc2, 0x3f, 0x08, 0x36, 0x88, 0x03, 0xb3, 0xa0, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x91, 0x7a, 0x43, 0x0b, 0xa0, 0x0d, 0x52, 0x3b, 0x40, 0x0e, 0x8d, 0x04, 0x8f, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0x84, 0x7f, 0x10, 0x6c, 0x10, 0x07, 0x66, 0x41, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x22, 0xf5, 0x86, 0xa6, 0x43, 0x1b, 0xa4, 0x76, 0x80, 0x1c, 0x3a, 0xa9, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x38, 0x30, 0x0b, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x10, 0xa9, 0x37, 0x48, 0xd6, 0x40, 0xd8, 0x20, 0xb5, 0x03, 0xe4, 0x60, 0x64, 0xf6, 0x1e, 0x87, 0x8e, 0xc7, 0x07, 0x25, 0x43, 0xd3, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0xb2, 0x30, 0x98, 0xc5, 0x41, 0xb0, 0x41, 0x8a, 0x50, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x21, 0x7b, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x6c, 0xcf, 0x1c, 0xbc, 0xad, 0x29, 0x67, 0x10, 0x6c, 0x10, 0x5b, 0xa6, 0x20, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9e, 0xcf, 0x12, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x28, 0x1c, 0xc0, 0x39, 0x88, 0x97, 0xa4, 0x9b, 0xe1, 0x37, 0x9e, 0x6f, 0x68, 0x96, 0x34, 0x08, 0x36, 0x68, 0x4b, 0x76, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0x39, 0xf4, 0x10, 0x3a, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x6c, 0xf0, 0x12, 0x55, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x48, 0x17, 0xce, 0x39, 0x78, 0x2a, 0x64, 0xce, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x36, 0x28, 0x67, 0x75, 0x0e, 0x0e, 0x14, 0xc9, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xf2, 0x76, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0xed, 0x77, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xa0, 0x54, 0xef, 0x3b, 0x38, 0x50, 0x24, 0x1f, 0x0c, 0x6c, 0xd1, 0xe3, 0xd0, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x0d, 0x82, 0x0d, 0x62, 0xb5, 0xff, 0xe6, 0xe0, 0xcd, 0x26, 0x14, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0xa0, 0x16, 0x5b, 0x1c, 0x04, 0x1b, 0xc4, 0x08, 0xdd, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x6f, 0xe8, 0x4f, 0x3e, 0x08, 0x36, 0x38, 0xd2, 0x26, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xe4, 0x6b, 0x0f, 0x8a, 0x43, 0x8d, 0xe3, 0xd0, 0xc1, 0xb8, 0x30, 0x3b, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0xc4, 0x65, 0x8a, 0xc9, 0xe2, 0xf0, 0x0b, 0xa2, 0x05, 0xc2, 0x3b, 0x08, 0x16, 0x24, 0x03, 0xab, 0x4e, 0x07, 0xe7, 0xfa, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0x83, 0x03, 0x11, 0xff, 0x41, 0xd2, 0x00, 0xc2, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0x82, 0x68, 0x81, 0xf8, 0x0e, 0x82, 0x0d, 0x22, 0x23, 0x79, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0xda, 0xe0, 0x40, 0xc4, 0x7f, 0x90, 0x60, 0x80, 0x70, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0x3c, 0x1d, 0x9c, 0xeb, 0x8f, 0x0f, 0x12, 0xc5, 0x3c, 0x86, 0x5f, 0x10, 0x2d, 0x18, 0x0f, 0x82, 0x0d, 0x62, 0xbd, 0x24, 0x67, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x76, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xf2, 0xd9, 0x07, 0x89, 0xf1, 0x19, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x02, 0xe1, 0x1e, 0x04, 0x1b, 0x44, 0x7b, 0x4b, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0x41, 0x6a, 0xd8, 0xc9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x49, 0x46, 0x20, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x92, 0x35, 0x10, 0x0e, 0xf1, 0x3f, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0xdc, 0x1e, 0x04, 0x1b, 0xc4, 0x7a, 0x49, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xd3, 0xa1, 0x83, 0x64, 0x0d, 0x84, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x05, 0xd1, 0x82, 0xea, 0x41, 0xb0, 0x41, 0xb4, 0xb7, 0xe4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x1b, 0xc4, 0xa1, 0x1b, 0xce, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x49, 0x46, 0x20, 0x07, 0xe9, 0xd4, 0x34, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0xe3, 0x41, 0xb0, 0x41, 0xac, 0x97, 0xe4, 0x0c, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc9, 0x8e, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x42, 0x3e, 0xfb, 0x20, 0x35, 0xa6, 0xe3, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0x20, 0x5a, 0x20, 0xdc, 0x83, 0x60, 0x83, 0x68, 0x6f, 0xc9, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x36, 0x48, 0xed, 0x00, 0x39, 0x88, 0x6f, 0xe9, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x0d, 0x62, 0x95, 0x7a, 0x68, 0xf8, 0x05, 0xd1, 0x82, 0xea, 0x41, 0xb0, 0x41, 0xb4, 0xb7, 0xe4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x1b, 0x2c, 0x26, 0x3c, 0x39, 0x88, 0xff, 0xeb, 0xa1, 0xe3, 0xd0, 0xf1, 0xf8, 0x20, 0x36, 0x6c, 0x77, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x20, 0xd8, 0x20, 0xda, 0x83, 0x66, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x7a, 0x08, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x30, 0xb6, 0x67, 0x0e, 0x46, 0x7d, 0xc6, 0x71, 0xe8, 0x78, 0x3c, 0x08, 0x16, 0xe7, 0x60, 0x68, 0xbb, 0x2c, 0x0e, 0x82, 0x0d, 0x46, 0x02, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xd6, 0x6e, 0x43, 0x0f, 0xa1, 0x0d, 0x8d, 0x8b, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x18, 0x99, 0xbd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xde, 0x25, 0x12, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x3b, 0x48, 0xd8, 0x12, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0xc4, 0x7e, 0x10, 0x2c, 0x48, 0x06, 0xca, 0xca, 0xc1, 0x39, 0xef, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xd8, 0x70, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x04, 0xe7, 0xe0, 0x9c, 0x77, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x0c, 0x2c, 0x1c, 0x24, 0xdc, 0x9e, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0x04, 0x7e, 0x10, 0x6c, 0x10, 0x2d, 0xea, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8a, 0xb0, 0x89, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xe2, 0x63, 0x34, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x90, 0xe4, 0xd6, 0x7c, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x30, 0xf4, 0x83, 0x60, 0x83, 0x68, 0x51, 0x1f, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x70, 0x74, 0xe0, 0x3e, 0x48, 0xb8, 0x3d, 0x39, 0x0e, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x10, 0xf9, 0x41, 0xb0, 0x41, 0x2c, 0xf3, 0xdb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x86, 0xfe, 0xe4, 0x07, 0x25, 0x8c, 0xc4, 0x41, 0xc9, 0x29, 0x71, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0x20, 0x5a, 0x60, 0xea, 0x07, 0xc1, 0x06, 0xb1, 0xcc, 0x6f, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0xfa, 0x93, 0x1f, 0x14, 0xa1, 0x09, 0x07, 0x67, 0x80, 0xec, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x48, 0xd5, 0x0c, 0xbf, 0x20, 0x5a, 0xc8, 0x20, 0xd8, 0xe0, 0x59, 0x91, 0x01, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x6f, 0x1c, 0xda, 0x10, 0xc3, 0x0d, 0x0a, 0x00, 0xa8, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xac, 0x7d, 0x07, 0xe7, 0xbc, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x88, 0x06, 0x55, 0x9a, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x62, 0xa4, 0xb6, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0xc0, 0x04, 0x00, 0x08, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x46, 0x6a, 0x6b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x07, 0xb7, 0x34, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x41, 0x31, 0x5b, 0x70, 0x1c, 0x3a, 0x28, 0xc7, 0x1a, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x83, 0x60, 0x83, 0x62, 0x47, 0x62, 0xf8, 0x05, 0xd1, 0x02, 0x97, 0xff, 0xb0, 0x0b, 0x82, 0x0d, 0x8e, 0x9c, 0xca, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x25, 0x58, 0xfa, 0x3f, 0x18, 0xf8, 0x21, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0x11, 0x25, 0x8c, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x0d, 0xbf, 0xf1, 0x7c, 0x8d, 0x43, 0x07, 0x25, 0xa4, 0xc4, 0x1a, 0xa4, 0xb9, 0xb5, 0x0c, 0x82, 0x05, 0xc9, 0xa0, 0xed, 0xb0, 0x42, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x44, 0x11, 0x7d, 0x90, 0xe4, 0xd6, 0x7c, 0x1c, 0x3a, 0xc4, 0xf0, 0x38, 0x74, 0x50, 0x42, 0x4a, 0x1c, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x64, 0xd8, 0x0d, 0xe2, 0xe2, 0x7f, 0x68, 0x41, 0xb0, 0xc1, 0x89, 0x42, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x70, 0x90, 0xe4, 0xd6, 0x7c, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0xe2, 0xb0, 0x0b, 0x82, 0x0d, 0x5e, 0x2c, 0x0c, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaa, 0x39, 0x48, 0x72, 0x6b, 0x3e, 0x0e, 0x2d, 0x08, 0x16, 0x04, 0x1b, 0x44, 0x61, 0x7a, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0xf0, 0x1b, 0xcf, 0x17, 0x04, 0x1b, 0x24, 0x9f, 0xa6, 0x1c, 0xc4, 0xce, 0x01, 0xd1, 0x41, 0x9a, 0x5b, 0xcb, 0x41, 0xd4, 0x9a, 0x06, 0x1d, 0x87, 0x86, 0x5f, 0x10, 0x2d, 0x98, 0x0f, 0x82, 0x0d, 0x22, 0x36, 0x9a, 0xe6, 0x20, 0x8e, 0xff, 0x6f, 0x8e, 0xc7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x30, 0x1f, 0x04, 0x1b, 0x9c, 0x7c, 0xa0, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x8c, 0x37, 0x9d, 0x0d, 0xa9, 0x83, 0x83, 0x34, 0x94, 0x86, 0xe3, 0xd0, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0x41, 0xb4, 0xf2, 0xe7, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x1e, 0x24, 0xb9, 0x35, 0x1f, 0x87, 0x8e, 0xe7, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x14, 0xa6, 0x87, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x1b, 0x14, 0x9d, 0x0d, 0x07, 0x51, 0x6b, 0x1a, 0x74, 0x1c, 0x1a, 0x7e, 0x41, 0xb4, 0x60, 0x3e, 0x08, 0x36, 0x88, 0xd8, 0x68, 0x9a, 0x83, 0xd7, 0xa4, 0xef, 0x1c, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0x64, 0x10, 0x2c, 0x48, 0x06, 0x6d, 0x07, 0x41, 0xce, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x87, 0xae, 0x30, 0x07, 0x49, 0x6e, 0xcd, 0xc7, 0xa1, 0xe3, 0xf1, 0xf0, 0x0b, 0xa2, 0x05, 0xf5, 0x83, 0x60, 0x83, 0x93, 0x0f, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf1, 0xa6, 0xb3, 0x21, 0x75, 0xb0, 0x41, 0x60, 0x62, 0x1f, 0x0c, 0xfc, 0x90, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x10, 0x23, 0x16, 0x17, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0xa1, 0x3f, 0xf9, 0x20, 0xd8, 0x20, 0x5a, 0xf9, 0x73, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x24, 0xdc, 0x9e, 0x1c, 0xc4, 0x23, 0x83, 0xce, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x78, 0x38, 0xd0, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x64, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x07, 0x41, 0xd5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5e, 0x8e, 0x08, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x6c, 0x10, 0xf3, 0x14, 0x39, 0x07, 0xc7, 0x8c, 0xe5, 0x83, 0xf8, 0xab, 0xc8, 0x39, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x90, 0x0c, 0xac, 0x3a, 0x1d, 0xb4, 0xe6, 0xe0, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x6d, 0x70, 0x20, 0xe2, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0xe5, 0x25, 0x14, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x22, 0xf5, 0x41, 0xf2, 0xf1, 0xc7, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xe0, 0x15, 0x63, 0x0b, 0x5b, 0x2b, 0x93, 0x11, 0x0f, 0xa9, 0xa5, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xe0, 0x11, 0x63, 0x0b, 0x5b, 0x2b, 0x0f, 0xd6, 0x84, 0xef, 0x1c, 0x8f, 0x8f, 0xc7, 0x0b, 0x82, 0x0d, 0x46, 0x96, 0xd9, 0xe2, 0x20, 0x58, 0xf8, 0x05, 0xc1, 0x06, 0xd1, 0xac, 0xad, 0x73, 0x68, 0xd4, 0x72, 0x7c, 0x5b, 0x1c, 0x76, 0x83, 0x07, 0x01, 0x75, 0x6c, 0xe8, 0x30, 0x75, 0x48, 0x1d, 0x1c, 0x8f, 0x8f, 0xc7, 0x2b, 0x2e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0xc2, 0x2f, 0xfc, 0x86, 0x15, 0xda, 0xe1, 0x17, 0x24, 0x03, 0xc5, 0xeb, 0x78, 0x7c, 0x90, 0x6e, 0x29, 0x7d, 0x50, 0x32, 0x34, 0x1d, 0xa4, 0xf8, 0x3b, 0x1f, 0x8f, 0x17, 0x04, 0x8b, 0x0b, 0x82, 0x0d, 0x1e, 0xe8, 0x60, 0xb2, 0x38, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf0, 0x0b, 0xbf, 0x21, 0x5b, 0x71, 0x10, 0x11, 0x28, 0x44, 0x07, 0x25, 0x43, 0xd3, 0x20, 0x19, 0x48, 0x5b, 0x1d, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0xbe, 0x54, 0x88, 0x0e, 0x92, 0xda, 0x0f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0xae, 0x0f, 0x1c, 0xf2, 0xb5, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0xd8, 0xa0, 0xad, 0x83, 0x93, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xf8, 0x6f, 0x30, 0xf0, 0x43, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0x20, 0xc8, 0xf9, 0x0f, 0x22, 0x02, 0x85, 0xe8, 0x20, 0xa1, 0xa7, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xca, 0x60, 0xc0, 0xa1, 0xf1, 0xfc, 0x71, 0xe8, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0xf0, 0x40, 0x07, 0x93, 0xc5, 0x41, 0xb0, 0x30, 0x83, 0x60, 0x83, 0xa7, 0x2a, 0x51, 0x1c, 0x24, 0x97, 0x0f, 0x0c, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x10, 0xa5, 0x2f, 0x44, 0x07, 0xc5, 0x2a, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb1, 0xe1, 0x3a, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0xe9, 0x0b, 0xd1, 0x41, 0xda, 0x35, 0xfa, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0x41, 0x3a, 0xad, 0xc3, 0x41, 0xca, 0x60, 0xc0, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf0, 0x0b, 0xbf, 0x41, 0xc0, 0xfb, 0x1f, 0x44, 0x04, 0x0a, 0xd1, 0x41, 0xc9, 0xd0, 0x74, 0x10, 0x3f, 0x2b, 0x44, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0x7e, 0x6e, 0x88, 0x0e, 0x06, 0xe7, 0xe3, 0x41, 0x43, 0x64, 0x02, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0x0b, 0xbe, 0xe6, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x82, 0x14, 0x7f, 0xc3, 0x5e, 0xe1, 0xc1, 0x58, 0xf6, 0x39, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0x51, 0x23, 0xe0, 0xb3, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x20, 0xee, 0x54, 0x88, 0x0e, 0x06, 0xf7, 0xf4, 0x20, 0x19, 0x28, 0x7e, 0x07, 0xe7, 0xed, 0xee, 0x43, 0x53, 0xa0, 0x61, 0x17, 0x76, 0x83, 0xd1, 0xb1, 0xbe, 0xb0, 0x0b, 0xb7, 0xb0, 0x1b, 0x34, 0x3e, 0x1e, 0x73, 0xf0, 0xd6, 0x45, 0x80, 0x43, 0xb3, 0xa4, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x6f, 0x88, 0xe1, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x06, 0x51, 0xfa, 0x42, 0x74, 0x30, 0xb8, 0xa7, 0x07, 0xc9, 0x60, 0x34, 0x88, 0x36, 0x68, 0x4b, 0x5b, 0xe5, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x6e, 0xc3, 0xb8, 0x1c, 0x94, 0x32, 0x3b, 0xc7, 0xe3, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x2b, 0x08, 0x16, 0x7e, 0x83, 0xb8, 0x53, 0x21, 0x3a, 0x78, 0xd8, 0x5e, 0xcf, 0xc1, 0x2a, 0x80, 0xac, 0x05, 0xc1, 0x06, 0x91, 0x3c, 0x44, 0x74, 0xb0, 0x58, 0x97, 0x69, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x88, 0x08, 0x14, 0xa2, 0x41, 0x32, 0xd0, 0xa6, 0xef, 0x60, 0xf8, 0xc7, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x92, 0x87, 0x88, 0x0e, 0x16, 0x26, 0xff, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x24, 0xa6, 0x16, 0x07, 0xc1, 0x0a, 0x82, 0x0d, 0x22, 0x79, 0x88, 0xe8, 0x20, 0xaa, 0x65, 0x45, 0x06, 0xc1, 0x06, 0x91, 0x3c, 0x44, 0x74, 0x10, 0x77, 0xde, 0x27, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xe3, 0xd0, 0xa1, 0x05, 0xd8, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x87, 0x5d, 0xd8, 0x0d, 0x82, 0xc4, 0xfb, 0xb0, 0xbe, 0xb9, 0xb0, 0x0b, 0x82, 0x85, 0xdf, 0x20, 0xee, 0x54, 0x88, 0x0e, 0x0e, 0x7f, 0xbc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0x83, 0xb8, 0x53, 0x21, 0x3a, 0x18, 0x72, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x3d, 0x84, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0x83, 0xb8, 0x53, 0x21, 0x3a, 0x38, 0xd0, 0x0e, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xcc, 0x20, 0xd8, 0xe0, 0xa9, 0x4a, 0x14, 0x87, 0xa6, 0x40, 0xc7, 0xa1, 0xe3, 0xd0, 0x21, 0x6b, 0x77, 0x1c, 0x3a, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0xf1, 0x78, 0x71, 0x41, 0xb0, 0xb8, 0x41, 0x00, 0xdc, 0x1f, 0x8c, 0x31, 0xb4, 0xc5, 0x61, 0x17, 0x04, 0x0b, 0xbf, 0x41, 0x94, 0xbe, 0x10, 0x1d, 0x9c, 0xd9, 0xb2, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xa2, 0x95, 0x83, 0xb4, 0xad, 0x96, 0xe3, 0xd0, 0xc2, 0x2e, 0xdc, 0x06, 0x89, 0x5d, 0x3f, 0x83, 0x60, 0x83, 0x58, 0x6d, 0xb8, 0x39, 0xa4, 0xe1, 0x16, 0x76, 0x41, 0xb0, 0xc1, 0xe0, 0xae, 0x3c, 0x18, 0xa3, 0x11, 0x0b, 0xbb, 0xc1, 0x58, 0x47, 0x5b, 0x10, 0x2d, 0xec, 0x41, 0x42, 0x98, 0xc1, 0x21, 0x9a, 0xc3, 0x2e, 0x08, 0x36, 0x38, 0x8a, 0xa3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x64, 0xed, 0x0e, 0xcd, 0x92, 0x8e, 0x43, 0x0b, 0xa2, 0x85, 0x6e, 0x90, 0x10, 0x66, 0x30, 0x08, 0x16, 0x04, 0x1b, 0xc4, 0x02, 0x10, 0xd1, 0x20, 0x19, 0x18, 0xaa, 0x83, 0xf3, 0x76, 0xf7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5e, 0x41, 0x23, 0x77, 0x90, 0x5c, 0x3e, 0x70, 0x68, 0x96, 0x74, 0x1c, 0x3a, 0x44, 0xf3, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x46, 0xfe, 0xc3, 0xe2, 0x82, 0x60, 0xe1, 0x17, 0x7e, 0x83, 0x28, 0x7d, 0x21, 0x3a, 0x28, 0x19, 0x9a, 0x0e, 0xe2, 0x67, 0x85, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0x7e, 0x17, 0xd1, 0x41, 0x52, 0xfb, 0xc1, 0xc1, 0xa8, 0xc2, 0x3e, 0x0e, 0x1d, 0xa2, 0x79, 0x3c, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbb, 0x20, 0x58, 0xf8, 0x0d, 0xa2, 0xf4, 0x85, 0xe8, 0x20, 0xf9, 0x3a, 0xfb, 0xf0, 0xd4, 0xc0, 0xc2, 0x6e, 0xf0, 0x6e, 0xe1, 0x9c, 0x05, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x88, 0xd2, 0x17, 0xa2, 0x83, 0x67, 0xec, 0xfd, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x86, 0x18, 0x1e, 0x3c, 0x00, 0xf8, 0xe1, 0x60, 0xe0, 0x87, 0x1c, 0x87, 0x06, 0xc1, 0x86, 0x66, 0x49, 0x83, 0x60, 0xc3, 0xd1, 0x3e, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xf8, 0x98, 0xd7, 0x20, 0x48, 0xf1, 0x0f, 0x46, 0x29, 0xe7, 0x20, 0x19, 0x32, 0x88, 0x16, 0xcc, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x17, 0x7e, 0x83, 0xe1, 0x1f, 0x7b, 0x10, 0x11, 0x28, 0x44, 0x07, 0x83, 0x7b, 0x7a, 0x90, 0x0c, 0x0c, 0xd5, 0xc1, 0xa8, 0x31, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0xfc, 0xb0, 0x20, 0x7a, 0x1c, 0x1a, 0x44, 0x1b, 0x04, 0xe6, 0xfa, 0x61, 0xc7, 0xe4, 0xf8, 0x76, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x6e, 0x10, 0xf4, 0xfa, 0x0b, 0xbb, 0xc1, 0xe8, 0xc5, 0xda, 0xa0, 0x08, 0x19, 0x3c, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x41, 0xe4, 0x77, 0x11, 0x1d, 0x0c, 0xce, 0xc7, 0x83, 0x31, 0x1a, 0x31, 0x08, 0x36, 0x74, 0x0c, 0x1b, 0x04, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0x5b, 0x10, 0x2c, 0xfc, 0xc2, 0x2f, 0xfc, 0x06, 0xc3, 0xd0, 0xe7, 0x20, 0x22, 0x50, 0x88, 0x0e, 0x4a, 0x86, 0xa6, 0x83, 0xf8, 0x59, 0x21, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0x31, 0xeb, 0x46, 0x74, 0xb0, 0xc4, 0x5e, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x20, 0x66, 0xdd, 0x88, 0x0e, 0xd6, 0xd0, 0x48, 0x1d, 0xf6, 0x0a, 0x8f, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0x82, 0x60, 0x83, 0xd8, 0x74, 0x23, 0x3a, 0x18, 0x66, 0xe1, 0x87, 0x68, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x41, 0x3c, 0x08, 0x16, 0x7e, 0xe1, 0x37, 0x88, 0x8c, 0x33, 0xa2, 0x83, 0x92, 0xa1, 0xe9, 0x60, 0x70, 0x3e, 0x1e, 0x8c, 0x3a, 0xae, 0x83, 0x41, 0x17, 0x70, 0x7c, 0x3b, 0x9c, 0x62, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x71, 0x41, 0xb0, 0xb8, 0x41, 0x51, 0x2d, 0xd8, 0xe2, 0x70, 0x1b, 0x8e, 0xf6, 0x41, 0xb0, 0xf0, 0x1b, 0xc4, 0x9d, 0x0a, 0xd1, 0x41, 0xda, 0x35, 0xfa, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0xb2, 0xf0, 0x1b, 0xcf, 0x0f, 0xe2, 0xda, 0xc4, 0xe7, 0x20, 0x75, 0x7d, 0xe0, 0x38, 0x74, 0x3c, 0x5e, 0x10, 0x2c, 0x6e, 0x50, 0x54, 0x0b, 0x1e, 0x04, 0xc0, 0xfd, 0xe2, 0xb0, 0x0b, 0x82, 0x0d, 0xa2, 0xa6, 0x89, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x21, 0x9f, 0x37, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x1b, 0xc4, 0x9d, 0x0a, 0xd1, 0xc1, 0x59, 0x32, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x39, 0x48, 0x5d, 0x1f, 0x38, 0x0e, 0x1d, 0x87, 0x16, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x20, 0xee, 0x54, 0x88, 0x0e, 0x52, 0x1d, 0xb9, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0xae, 0x0f, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x89, 0x4e, 0x44, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0x83, 0xb8, 0x53, 0x21, 0x3a, 0x48, 0xe8, 0x69, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0xba, 0x3e, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x24, 0x40, 0x11, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x0a, 0xf9, 0xbc, 0xe3, 0xd0, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x48, 0x80, 0x22, 0x3a, 0x34, 0x05, 0x3a, 0x0e, 0x1d, 0x87, 0x06, 0xd1, 0x82, 0x7c, 0x10, 0x2c, 0x08, 0x36, 0x88, 0x05, 0x20, 0xa2, 0x41, 0x32, 0x30, 0x54, 0x07, 0xab, 0x60, 0xbf, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x3f, 0x48, 0xc0, 0x03, 0x39, 0x0e, 0x1d, 0xb2, 0x76, 0xc3, 0x6e, 0xb0, 0x4e, 0x66, 0x7f, 0x41, 0xb4, 0x20, 0xde, 0x60, 0x64, 0xf6, 0x1e, 0xbc, 0x5c, 0x82, 0xe6, 0x10, 0xcd, 0x41, 0xb4, 0x20, 0xde, 0x60, 0x64, 0xf6, 0x1e, 0x9c, 0x58, 0xee, 0x0f, 0xd1, 0x3c, 0x1e, 0x0f, 0x82, 0x0d, 0x96, 0x85, 0xc1, 0x2c, 0x0e, 0x82, 0x15, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x88, 0xee, 0x22, 0xa2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x91, 0x76, 0x44, 0x34, 0xfc, 0xc6, 0xf3, 0xe1, 0x17, 0x7e, 0x83, 0xa8, 0x2f, 0x22, 0x3a, 0x28, 0x19, 0x9a, 0x0e, 0x5e, 0xc7, 0x29, 0x71, 0x1c, 0x3a, 0xa4, 0xe1, 0x36, 0x88, 0x5a, 0x22, 0xa2, 0x05, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x85, 0xdf, 0x20, 0xea, 0x8b, 0x88, 0x0e, 0x9a, 0x20, 0x17, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xc9, 0x43, 0x44, 0x07, 0x51, 0x91, 0x68, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x0e, 0x1d, 0x3a, 0x11, 0x0d, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x1b, 0x44, 0x77, 0x11, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x48, 0x3b, 0x22, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0xa2, 0xbe, 0x88, 0xe8, 0xa0, 0x6d, 0x74, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x71, 0xdf, 0x48, 0x74, 0x10, 0xf7, 0x8d, 0x44, 0xc7, 0xa1, 0xe3, 0xd0, 0xa1, 0xfb, 0xd1, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x71, 0x41, 0xb0, 0xc1, 0xb2, 0x30, 0x98, 0xc5, 0x61, 0x37, 0x08, 0x12, 0xef, 0x15, 0x04, 0x1b, 0x44, 0x7e, 0x17, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xd4, 0xb0, 0x93, 0x83, 0xa5, 0x6a, 0x2f, 0xc7, 0xa1, 0x43, 0x62, 0x6a, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0xaf, 0xa0, 0x91, 0x3b, 0x34, 0x05, 0x1a, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x10, 0x57, 0x37, 0x44, 0x07, 0x83, 0x7b, 0x7a, 0x90, 0x0c, 0x54, 0xaf, 0xc3, 0x9e, 0xed, 0xc1, 0xc0, 0x16, 0x1d, 0x7e, 0xc3, 0x8e, 0xc9, 0x20, 0x58, 0x1c, 0x76, 0xe1, 0x36, 0xa4, 0x6a, 0x06, 0xc1, 0xc2, 0x6f, 0x10, 0xcb, 0x6e, 0x44, 0x83, 0x64, 0xa0, 0xb9, 0xd3, 0xc1, 0xf0, 0x8f, 0x3d, 0x38, 0x5d, 0x60, 0xaf, 0x20, 0xd8, 0x20, 0x36, 0xdd, 0x88, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0x26, 0x1c, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xf8, 0x8c, 0x23, 0x3a, 0xa4, 0x6a, 0x8e, 0x43, 0xc7, 0xa1, 0x83, 0xc0, 0xc4, 0x1e, 0x76, 0x41, 0xb0, 0xc1, 0x08, 0x3e, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0xb4, 0xf7, 0x3a, 0x72, 0x1c, 0x5a, 0x10, 0x2c, 0x08, 0x36, 0x88, 0x4d, 0x37, 0xa2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x88, 0x65, 0x37, 0xa2, 0x83, 0xc1, 0x3d, 0x7d, 0xd0, 0xcc, 0xf7, 0xd3, 0xc1, 0x30, 0x0b, 0x3f, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x10, 0x61, 0x74, 0x44, 0x07, 0xf1, 0xb3, 0x42, 0x74, 0x30, 0xcc, 0xc2, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0x7e, 0x10, 0x6c, 0x10, 0xc5, 0x44, 0x3c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x22, 0xf5, 0x06, 0xe3, 0x4d, 0xe7, 0x60, 0x2c, 0xfb, 0x1c, 0x87, 0x06, 0xd1, 0x06, 0xc5, 0x36, 0xdd, 0x20, 0x5a, 0xd8, 0x41, 0xb0, 0xf0, 0x0b, 0xbf, 0xf0, 0x1b, 0x0c, 0x47, 0xe9, 0x83, 0x88, 0x40, 0x21, 0x3a, 0x28, 0x19, 0x9a, 0x0e, 0x06, 0xe7, 0xe3, 0xc1, 0xe0, 0xf4, 0x39, 0x24, 0x97, 0x0e, 0xe2, 0x36, 0xc3, 0xe6, 0xf8, 0x36, 0xfc, 0x06, 0x8d, 0x64, 0x3d, 0x0d, 0xbf, 0xc1, 0x60, 0x07, 0x18, 0x04, 0x0b, 0xbb, 0x41, 0xb0, 0x3d, 0x6f, 0x88, 0xe1, 0x20, 0x58, 0xf8, 0x0d, 0xe2, 0xea, 0x86, 0x68, 0x90, 0x6c, 0x10, 0xf3, 0x14, 0x39, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0xe2, 0xea, 0x86, 0xe8, 0xe0, 0xa8, 0x3d, 0x7c, 0xb0, 0x8a, 0x93, 0xff, 0x38, 0xb4, 0x21, 0x75, 0xb0, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0x60, 0xbc, 0xeb, 0x1c, 0x44, 0x04, 0x0a, 0xd1, 0xc1, 0x4b, 0x30, 0xbd, 0x0e, 0xda, 0x5e, 0x7d, 0x19, 0x04, 0x0b, 0xbf, 0x41, 0x54, 0xb1, 0x12, 0x1d, 0x3c, 0x31, 0xc6, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0x15, 0x2b, 0xd1, 0xc1, 0xe0, 0x9e, 0x1e, 0x24, 0x03, 0xc5, 0xef, 0x20, 0x02, 0x70, 0x72, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0x43, 0x68, 0xd2, 0x16, 0x87, 0x5d, 0x10, 0x6c, 0x10, 0xd7, 0x53, 0x44, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x3d, 0x84, 0x0e, 0xd2, 0xb6, 0x5a, 0x8e, 0x43, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0xf1, 0xf8, 0x45, 0x74, 0x10, 0x05, 0x2d, 0x44, 0x83, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0xe2, 0xb0, 0x0b, 0x82, 0x0d, 0x46, 0xf0, 0xe9, 0xc1, 0x50, 0x4e, 0x58, 0x10, 0x2c, 0x08, 0x36, 0x88, 0x4d, 0x37, 0xa2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x88, 0x04, 0x25, 0x1a, 0x24, 0x03, 0xd5, 0xeb, 0x60, 0x05, 0x67, 0xcf, 0xa1, 0x51, 0xcb, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x36, 0x88, 0x01, 0x51, 0xa2, 0x83, 0xf1, 0x61, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xe7, 0x07, 0xc1, 0x06, 0x51, 0x4c, 0xc4, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xa0, 0x24, 0x68, 0xd8, 0x20, 0x30, 0xb1, 0x0f, 0xc6, 0xb2, 0xcf, 0x71, 0x68, 0x10, 0x2d, 0x88, 0x0f, 0x22, 0xae, 0x94, 0xe8, 0xa0, 0x80, 0x8f, 0x1a, 0x44, 0x0b, 0x7b, 0x90, 0xbe, 0x4c, 0x30, 0x88, 0x16, 0x32, 0x08, 0x16, 0x04, 0x1b, 0x44, 0x24, 0x28, 0xd1, 0x20, 0x19, 0x18, 0xaa, 0x83, 0x15, 0x9c, 0x3d, 0x07, 0x8b, 0xf9, 0xbc, 0x0e, 0xc9, 0x8e, 0xe3, 0xdb, 0xe1, 0x14, 0x3b, 0x1e, 0x1f, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x86, 0xf5, 0xbd, 0x0d, 0xa7, 0xd8, 0x20, 0xd8, 0x10, 0xc3, 0x41, 0xb0, 0x38, 0xec, 0xc2, 0x6d, 0x38, 0xda, 0x07, 0xc1, 0x06, 0xf1, 0x4e, 0x43, 0x74, 0x30, 0xce, 0x18, 0x0f, 0xeb, 0x87, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xbf, 0xf0, 0x1b, 0xa4, 0x7f, 0x29, 0x1c, 0x2c, 0x53, 0x16, 0x3b, 0xbe, 0x0d, 0x82, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0xa2, 0xf4, 0x85, 0xe8, 0x20, 0x79, 0x8e, 0xfb, 0x20, 0xe6, 0x62, 0x89, 0x86, 0x5d, 0x10, 0x2c, 0xfc, 0x06, 0x71, 0x75, 0x43, 0x74, 0x70, 0x66, 0xcb, 0x3e, 0x88, 0x2f, 0xb0, 0xa0, 0x05, 0xc1, 0xc2, 0x6f, 0xb0, 0x3e, 0xd2, 0xe1, 0xa0, 0x64, 0x68, 0x3a, 0x18, 0x66, 0xe1, 0x83, 0x60, 0x05, 0xc1, 0xc2, 0x6f, 0x10, 0x57, 0x37, 0x44, 0x83, 0x64, 0x20, 0x38, 0x07, 0xc3, 0x51, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0xda, 0x56, 0xcb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0x10, 0x57, 0x37, 0x44, 0x07, 0xa9, 0x8e, 0xdc, 0x07, 0xf1, 0x05, 0x16, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0x41, 0x5c, 0xdd, 0x10, 0x1d, 0xa4, 0x5d, 0xa3, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x0b, 0xbf, 0xf1, 0x7c, 0xe3, 0xd0, 0x41, 0xb2, 0x57, 0xcb, 0x41, 0x88, 0xf8, 0x1f, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x83, 0x60, 0xe1, 0x37, 0x68, 0xe7, 0x33, 0xe6, 0xa0, 0x1c, 0x4a, 0x3a, 0x88, 0x17, 0x30, 0x9c, 0x43, 0x72, 0xe9, 0xf8, 0x76, 0x3c, 0x3e, 0x1e, 0x2f, 0x2e, 0x08, 0x16, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xa1, 0x3a, 0x18, 0x8e, 0xd2, 0x07, 0x2b, 0xf3, 0xf5, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x85, 0x5f, 0xe1, 0x37, 0x24, 0x97, 0x86, 0x5f, 0x90, 0x0c, 0x08, 0xfe, 0xbe, 0xc3, 0x0a, 0xed, 0xf1, 0x6d, 0xf8, 0x0d, 0xc9, 0xa5, 0xe1, 0x37, 0x28, 0x19, 0x9a, 0x8e, 0x6f, 0x87, 0x9e, 0xa8, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xc5, 0x05, 0xc1, 0x06, 0xcb, 0x4d, 0x49, 0x16, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0xb0, 0x2a, 0xea, 0xe3, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x24, 0x03, 0xa7, 0xd6, 0xc1, 0x31, 0xab, 0xf8, 0xa0, 0x0d, 0xdc, 0x94, 0x43, 0x0c, 0x8f, 0xc7, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x3c, 0x30, 0x93, 0x6b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0x0a, 0x3f, 0xbf, 0xe1, 0x37, 0x9e, 0x2f, 0x0e, 0xb2, 0x0d, 0x71, 0x19, 0x04, 0x1b, 0xbc, 0xca, 0x6b, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x35, 0xe4, 0xbe, 0x0f, 0x12, 0x08, 0x4f, 0xd6, 0xa0, 0x90, 0xfa, 0x1b, 0x04, 0x0b, 0x92, 0x81, 0x52, 0x77, 0x3c, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x9e, 0xe1, 0x23, 0x30, 0x08, 0x36, 0x88, 0xdb, 0x6a, 0xa2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x5f, 0x3c, 0x58, 0x21, 0x2e, 0x7f, 0x90, 0x40, 0x78, 0xb2, 0xf0, 0x1b, 0xcf, 0x17, 0x0f, 0x7d, 0xf0, 0x0f, 0x12, 0x08, 0x4f, 0x16, 0x7e, 0xe3, 0xf9, 0x06, 0xaf, 0x05, 0x0b, 0x3a, 0x48, 0x20, 0x3c, 0x59, 0xf8, 0x8d, 0xe7, 0x8b, 0x01, 0xcf, 0x18, 0xdb, 0xdb, 0x5c, 0x79, 0x90, 0x40, 0x78, 0x72, 0x30, 0xf0, 0x43, 0x8e, 0x43, 0x0b, 0xbf, 0xf1, 0x7c, 0x31, 0xe0, 0x61, 0x4b, 0x73, 0x2b, 0x9b, 0x07, 0xc1, 0x06, 0xcb, 0x75, 0x61, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x68, 0x33, 0xce, 0xff, 0x38, 0x74, 0x30, 0xf0, 0x43, 0x8e, 0x43, 0x6b, 0x50, 0xee, 0x03, 0x0e, 0x82, 0x0d, 0xe2, 0xb6, 0x9a, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x37, 0x78, 0x86, 0x8f, 0xc0, 0x20, 0xd8, 0x20, 0x6e, 0xab, 0x89, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xc4, 0xf0, 0x35, 0xd1, 0x41, 0x14, 0x65, 0x13, 0x1d, 0x87, 0x0e, 0x62, 0x6a, 0x9b, 0xe8, 0x38, 0x74, 0x88, 0xe1, 0x71, 0xe8, 0x78, 0x7c, 0x1c, 0x5a, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x78, 0x6e, 0x2d, 0xcf, 0xe1, 0x68, 0x5f, 0xd8, 0x85, 0x5b, 0x10, 0x6c, 0x10, 0x97, 0xe9, 0x35, 0x07, 0xe3, 0xc3, 0x68, 0x10, 0x6c, 0x10, 0x97, 0xe9, 0x35, 0x87, 0x0e, 0x1a, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x30, 0x76, 0x87, 0x6c, 0xc5, 0xc1, 0xf8, 0x30, 0x3a, 0x74, 0xd0, 0x18, 0x76, 0x41, 0xb0, 0xc1, 0xb3, 0xd3, 0x20, 0x0e, 0x06, 0xb6, 0xe8, 0x82, 0x60, 0x83, 0xf8, 0x16, 0xb0, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xce, 0xab, 0x83, 0x20, 0xe7, 0x3f, 0x18, 0xd8, 0xa2, 0xc7, 0xa1, 0x43, 0x0c, 0x0f, 0x31, 0x3c, 0xc4, 0xf0, 0x78, 0x7c, 0x3c, 0x5e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x2e, 0x08, 0x16, 0x87, 0xdd, 0x20, 0xf8, 0x98, 0x37, 0xc4, 0x70, 0xd8, 0x0d, 0x6b, 0xa1, 0x1b, 0x8e, 0xf6, 0x83, 0x15, 0x0b, 0x3a, 0xc7, 0xb7, 0x05, 0xc1, 0x82, 0x64, 0x60, 0xbd, 0xee, 0xe0, 0x98, 0x55, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x1c, 0x76, 0x83, 0xe0, 0x63, 0xde, 0x10, 0xc3, 0x0d, 0xc6, 0x85, 0xd9, 0xc1, 0x8a, 0x05, 0x9d, 0xe3, 0xdb, 0x71, 0xe8, 0x10, 0xc3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdd, 0xe0, 0x1c, 0x92, 0xbe, 0x20, 0xd8, 0x20, 0x9a, 0xeb, 0x6b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf2, 0xb5, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0xc4, 0x9f, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x20, 0x2c, 0x07, 0x27, 0xa1, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0xe2, 0xcf, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x38, 0x10, 0x99, 0x1f, 0x9c, 0x7f, 0xc2, 0x87, 0xdf, 0x78, 0x7e, 0xf0, 0x44, 0xed, 0xb8, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x88, 0xe1, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0x9c, 0x43, 0xd2, 0x17, 0x04, 0x1b, 0x44, 0x73, 0x7d, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xbe, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xc0, 0xbb, 0xf7, 0xa9, 0x0e, 0x86, 0xa3, 0xf4, 0x71, 0xe8, 0x10, 0xc3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0x20, 0xd8, 0x20, 0x26, 0xd6, 0x89, 0x0e, 0x52, 0x94, 0x9f, 0x0f, 0x31, 0x3c, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x0b, 0xbb, 0xa1, 0xe3, 0xc8, 0xc2, 0x6e, 0x10, 0x07, 0xab, 0x2e, 0x0b, 0xbb, 0xc1, 0xe8, 0xc5, 0x5a, 0xd8, 0x85, 0xdd, 0xa0, 0x38, 0x19, 0xdc, 0xe0, 0x5d, 0xd2, 0x3f, 0x87, 0xa3, 0x7d, 0x61, 0x37, 0x48, 0xec, 0xfa, 0x59, 0xd8, 0x0d, 0x5a, 0x9c, 0x82, 0x39, 0x78, 0xc8, 0xdd, 0xc3, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0x05, 0xc1, 0xe2, 0xb0, 0x1b, 0x04, 0x17, 0xf6, 0x86, 0x18, 0x0e, 0xbb, 0x70, 0x1b, 0x94, 0x30, 0x12, 0x07, 0x83, 0x68, 0x65, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0xdc, 0x57, 0x07, 0x41, 0xce, 0x7f, 0x50, 0x30, 0x95, 0x1c, 0xb4, 0x4e, 0xad, 0x32, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0x72, 0x75, 0x10, 0xe4, 0xfc, 0x07, 0xad, 0xe7, 0x87, 0x1c, 0x0c, 0xb3, 0xf0, 0xe3, 0xdb, 0x21, 0x86, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0xe1, 0x14, 0x1b, 0x76, 0xc3, 0xae, 0xc1, 0x06, 0x43, 0xb3, 0x6b, 0x83, 0xa1, 0xd9, 0x35, 0x08, 0x16, 0x24, 0x03, 0xe7, 0xd5, 0x21, 0xb9, 0x74, 0xe8, 0xa0, 0x71, 0x3c, 0x1e, 0x04, 0x1b, 0x8c, 0xb2, 0xb2, 0xc5, 0x41, 0xb0, 0x41, 0x73, 0x79, 0x29, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0xf1, 0xa0, 0xd8, 0x12, 0x3b, 0x1e, 0x1f, 0xf2, 0xb5, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x10, 0xb6, 0x5f, 0x1c, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x86, 0xf5, 0xbd, 0x05, 0xc1, 0x06, 0x91, 0xa6, 0x00, 0x74, 0x90, 0xa2, 0xfc, 0x3c, 0x08, 0x16, 0x24, 0x03, 0xfb, 0x75, 0x07, 0xa7, 0x33, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0xf4, 0x1b, 0x1c, 0x7e, 0xe3, 0xf9, 0x41, 0xa4, 0x29, 0x00, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x85, 0x00, 0xcd, 0xe2, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0xe4, 0x1e, 0x14, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0xbe, 0x6d, 0x0e, 0xc9, 0x8e, 0xe3, 0xd0, 0xf1, 0xf8, 0x78, 0x3c, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x83, 0x97, 0x10, 0xf3, 0x1c, 0x8e, 0xf6, 0x35, 0xc4, 0xf0, 0xe0, 0x60, 0xa0, 0x7b, 0x88, 0xe1, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x10, 0x1f, 0xd0, 0x44, 0x0b, 0x82, 0x0d, 0x62, 0x62, 0x9d, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x0b, 0x97, 0x04, 0x0e, 0x1d, 0x34, 0x8e, 0x43, 0x87, 0x18, 0x1e, 0x8f, 0x57, 0x10, 0x2c, 0x6e, 0xb0, 0xe8, 0x94, 0xe4, 0x20, 0x9c, 0xed, 0x17, 0x07, 0xc1, 0x06, 0xcd, 0xe5, 0xa5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xf0, 0x0b, 0x92, 0x81, 0x78, 0x1d, 0x9c, 0xce, 0x90, 0x0f, 0xc6, 0x32, 0xd4, 0xa1, 0x51, 0xcb, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x90, 0xbf, 0x3b, 0x24, 0x97, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x20, 0xc2, 0x64, 0x6d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x9c, 0xad, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x42, 0x1a, 0x38, 0x78, 0x41, 0xa6, 0xc5, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x0a, 0xbf, 0xc1, 0xb3, 0x11, 0x49, 0x8e, 0x6f, 0x83, 0x60, 0x83, 0x97, 0xdb, 0x91, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0xb0, 0x0e, 0x27, 0xe7, 0x38, 0xb4, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0x53, 0xeb, 0xe0, 0x74, 0x86, 0x7c, 0x10, 0x25, 0x22, 0x33, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x37, 0xc4, 0x70, 0x10, 0x2c, 0x48, 0x06, 0xd6, 0xeb, 0x0e, 0x0e, 0x14, 0xc9, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x6f, 0x10, 0x02, 0xe0, 0x87, 0x7c, 0xed, 0x71, 0xe8, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0xef, 0x12, 0x89, 0x38, 0x74, 0xd0, 0x38, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xa2, 0x92, 0xa1, 0xe8, 0xa0, 0x69, 0x15, 0xfc, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0xb0, 0x1b, 0x3a, 0x8e, 0x6c, 0x10, 0x07, 0xab, 0x2e, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x4c, 0xa1, 0xc9, 0xc1, 0xf8, 0x30, 0x3a, 0x74, 0xd0, 0x38, 0x88, 0xdc, 0x72, 0xa2, 0x43, 0x0c, 0x8f, 0xc7, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0xc1, 0x39, 0x24, 0x7d, 0x41, 0xb0, 0x41, 0x4c, 0xac, 0x13, 0x1d, 0x3a, 0x68, 0x1c, 0x62, 0x78, 0x3c, 0x1e, 0x04, 0x6b, 0x88, 0xe1, 0x20, 0x58, 0x3c, 0x58, 0xbd, 0xcc, 0x75, 0x3c, 0x5e, 0x1c, 0x04, 0x1b, 0x62, 0x78, 0xb0, 0xe0, 0x26, 0xe7, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x30, 0x36, 0x39, 0x37, 0xc4, 0x70, 0x61, 0x37, 0xac, 0xef, 0x6d, 0x88, 0xe1, 0xa1, 0x75, 0xcf, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xe1, 0xe4, 0x44, 0x07, 0x0d, 0x91, 0x09, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xec, 0x86, 0xf5, 0xbd, 0xc3, 0xd6, 0xc1, 0x71, 0xe8, 0x78, 0x7c, 0x3c, 0x5e, 0x10, 0x6c, 0x70, 0xf8, 0xb5, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x17, 0x7e, 0x83, 0xf6, 0x5e, 0x4b, 0x0e, 0x4e, 0x2b, 0xb8, 0x07, 0x0b, 0x3c, 0xbc, 0x86, 0xdf, 0x78, 0x7e, 0x10, 0x1b, 0x45, 0x2a, 0xc7, 0xa1, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0x43, 0x0c, 0x87, 0xdd, 0x90, 0xc7, 0xda, 0x70, 0xb4, 0x0f, 0x82, 0x0d, 0x92, 0xe3, 0x57, 0x0e, 0x1d, 0x34, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x06, 0x63, 0x93, 0x73, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x41, 0x53, 0x48, 0x03, 0x07, 0xe3, 0x59, 0xf5, 0xa0, 0x88, 0x3a, 0x59, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0xc6, 0x62, 0xe7, 0xc1, 0x88, 0xc2, 0x1d, 0x04, 0x0b, 0x82, 0x05, 0xc9, 0x40, 0xfa, 0xee, 0x20, 0xc8, 0xf9, 0x0f, 0x5a, 0xcf, 0x0f, 0x39, 0x18, 0x66, 0xe1, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0x10, 0xa0, 0x59, 0x1c, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x24, 0x83, 0x73, 0x07, 0xa7, 0x33, 0xe4, 0x83, 0x38, 0x58, 0x28, 0x3a, 0x1e, 0x1f, 0x8f, 0x17, 0x04, 0x1b, 0x84, 0xb0, 0xfd, 0xe2, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x37, 0x88, 0x7f, 0x90, 0xa2, 0x05, 0xc1, 0x82, 0x64, 0xa0, 0xfe, 0x1d, 0xb2, 0x15, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x4d, 0x21, 0x0d, 0x1c, 0xbc, 0x25, 0xd2, 0xe1, 0x60, 0x7c, 0x18, 0x1d, 0x87, 0x0e, 0x31, 0x3c, 0x1e, 0x1f, 0x8f, 0x17, 0x04, 0x1b, 0x84, 0xb0, 0xfd, 0xe2, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x37, 0x88, 0x2e, 0x71, 0xa2, 0x05, 0xc1, 0x06, 0x11, 0x26, 0x6b, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x1c, 0x76, 0xc3, 0x0a, 0xea, 0x86, 0x18, 0x2e, 0x08, 0x36, 0x08, 0x4c, 0xec, 0x83, 0x55, 0x9c, 0xfc, 0x07, 0x4f, 0xb7, 0x72, 0x38, 0xbe, 0x1d, 0x87, 0x0e, 0x31, 0x3c, 0x1e, 0x1f, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x06, 0xf1, 0x01, 0x4d, 0x74, 0x10, 0x1d, 0x24, 0x45, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x41, 0x7c, 0x40, 0x13, 0x2d, 0x08, 0x36, 0x68, 0x9c, 0x6f, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x2f, 0xfc, 0x06, 0x11, 0x7d, 0xe0, 0x71, 0x70, 0x5a, 0xc1, 0x3d, 0x58, 0xdd, 0x0b, 0x73, 0xe8, 0xa0, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x41, 0x6e, 0xb8, 0x38, 0x08, 0x36, 0x88, 0x07, 0x07, 0x9b, 0x43, 0xa3, 0x96, 0xe3, 0xf1, 0x71, 0xe8, 0x10, 0xc3, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x17, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0x2a, 0x18, 0x18, 0x24, 0x03, 0xf5, 0xef, 0xd0, 0xbe, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xb8, 0xe1, 0x14, 0xcb, 0xc5, 0x61, 0x37, 0x8c, 0xcb, 0x86, 0x18, 0x0e, 0xbb, 0x41, 0xe9, 0x0b, 0x76, 0x48, 0xe7, 0x1e, 0x8f, 0x8f, 0x43, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x88, 0x89, 0x75, 0xa2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x96, 0x0a, 0x06, 0x06, 0xc9, 0x40, 0xf9, 0x3b, 0xb4, 0x6f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0xfc, 0x20, 0x6a, 0xfa, 0x81, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xf1, 0x78, 0x15, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0xc1, 0x90, 0xfa, 0x1d, 0x76, 0xc3, 0xfa, 0xde, 0x06, 0x69, 0x1b, 0xcf, 0x83, 0x60, 0x83, 0x78, 0x40, 0xab, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x6c, 0xd8, 0xa6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xe2, 0xb0, 0x1b, 0x04, 0x1f, 0xf3, 0x86, 0x18, 0x2e, 0x08, 0x36, 0x38, 0xf1, 0x19, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x16, 0x9f, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xd1, 0x5a, 0xa8, 0x83, 0xe3, 0x7f, 0xf1, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xe2, 0x41, 0xb0, 0x41, 0xbb, 0xc5, 0x50, 0x07, 0xc7, 0xff, 0xe2, 0xe3, 0xf1, 0xf1, 0xed, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0xaf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x0d, 0xd6, 0x68, 0x2b, 0x0c, 0x82, 0x0d, 0xa2, 0x93, 0xfd, 0xe6, 0xd0, 0xa8, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x83, 0x35, 0x28, 0x40, 0x1b, 0x12, 0x9b, 0x87, 0xc4, 0xd4, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x1b, 0xac, 0xd1, 0x56, 0x18, 0x04, 0x1b, 0xc4, 0x03, 0x5a, 0xcd, 0xa1, 0x51, 0xcb, 0xf1, 0x78, 0x10, 0x6c, 0x90, 0xfa, 0x8f, 0xb1, 0x38, 0x08, 0x36, 0x38, 0x07, 0x7f, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0xe1, 0x37, 0x88, 0xb6, 0x14, 0xa1, 0x83, 0xd3, 0x0a, 0xee, 0xc1, 0xb8, 0x83, 0x3a, 0x34, 0x6a, 0x39, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x14, 0x7e, 0x7e, 0x8b, 0x1b, 0x9c, 0x23, 0x77, 0x07, 0xc1, 0x06, 0xed, 0x68, 0xb8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x8c, 0xde, 0xc1, 0xf0, 0x8f, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x71, 0xc2, 0xa1, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0xf0, 0x3a, 0x07, 0x87, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x41, 0xea, 0x3f, 0xc6, 0xe2, 0x20, 0xd8, 0xe0, 0x1c, 0xfc, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0x22, 0xd8, 0xaa, 0xe8, 0x60, 0xf5, 0x26, 0xda, 0xa1, 0x51, 0xcb, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x0d, 0xd6, 0xa0, 0x00, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0x4d, 0x02, 0x0c, 0x1c, 0x0c, 0xca, 0xab, 0x43, 0xa3, 0x96, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x0d, 0x86, 0xd4, 0xef, 0x20, 0x58, 0x90, 0x0c, 0x04, 0xe9, 0xe0, 0x24, 0x74, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x6d, 0x90, 0xe0, 0x44, 0xb3, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x6f, 0x0f, 0xbd, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xb5, 0xd1, 0x39, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0x0c, 0xc2, 0xcc, 0xc1, 0x43, 0xf2, 0x2f, 0x8e, 0x43, 0x1b, 0x24, 0x38, 0xd1, 0x1c, 0x0c, 0xfc, 0x90, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0xa0, 0xa9, 0x6d, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x07, 0x67, 0xf4, 0x43, 0xa3, 0x96, 0xe3, 0xd0, 0xf1, 0xf8, 0x78, 0xbc, 0x20, 0xd8, 0xa0, 0x65, 0x06, 0xfc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xab, 0x6b, 0xbb, 0x86, 0xdf, 0x78, 0xbe, 0x38, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xed, 0xdd, 0xeb, 0x1f, 0xac, 0x3d, 0x7b, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0x06, 0x27, 0xde, 0xe7, 0x83, 0x94, 0x8f, 0x8b, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x88, 0x6a, 0xb6, 0xa2, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xe2, 0x7f, 0xd7, 0xc1, 0x78, 0xd7, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0x34, 0x09, 0xb6, 0x7f, 0x1c, 0x3a, 0x68, 0x8a, 0x65, 0xff, 0xa0, 0xf9, 0x69, 0xfd, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0x62, 0xaf, 0x3f, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0xa1, 0x70, 0xfd, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0xe4, 0xa0, 0xcd, 0x64, 0xf7, 0xe3, 0xd0, 0x41, 0xf3, 0xd3, 0xfa, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0x0a, 0xd7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x36, 0x5c, 0x0f, 0x1a, 0x4f, 0xe0, 0x3f, 0x0e, 0x1d, 0x34, 0x3f, 0xad, 0x7f, 0xb0, 0x28, 0x9d, 0x64, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x3b, 0x45, 0x04, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x07, 0x2f, 0x07, 0x2f, 0x3a, 0xbe, 0x1d, 0x87, 0x0e, 0x9a, 0x62, 0xd9, 0x3f, 0x68, 0x7e, 0x5a, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xe2, 0x47, 0xad, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0x4c, 0xda, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x58, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x38, 0x87, 0x43, 0x1f, 0xac, 0xee, 0x85, 0x39, 0x0e, 0x0d, 0xbb, 0xc1, 0xa8, 0x97, 0xdc, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0x4c, 0xac, 0x13, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x20, 0xd8, 0xe0, 0xb9, 0x03, 0x26, 0x07, 0xc3, 0x2c, 0xfc, 0x20, 0x04, 0xc0, 0x8f, 0x43, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x62, 0xe0, 0xad, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xfc, 0x5d, 0x07, 0xe3, 0x5d, 0xe7, 0x60, 0x21, 0xe6, 0xc8, 0x71, 0xe8, 0x38, 0x74, 0xd0, 0x8c, 0xd2, 0xfe, 0x41, 0xf3, 0xd3, 0xfa, 0x07, 0x8b, 0xd2, 0x49, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x3f, 0x88, 0x85, 0xb6, 0xa2, 0x83, 0x45, 0xe9, 0x24, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xd0, 0x8a, 0xbd, 0xfe, 0x41, 0x8c, 0xcf, 0x15, 0x1d, 0x2c, 0x4a, 0x27, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xde, 0xbd, 0xfe, 0xc1, 0x6a, 0xf3, 0x97, 0x83, 0x45, 0xe9, 0x24, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0x9b, 0x0a, 0x50, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x83, 0x48, 0x1a, 0x2d, 0x39, 0x18, 0x8e, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xce, 0x35, 0xc5, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x5e, 0xf8, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x55, 0x5f, 0x10, 0x07, 0x29, 0x7e, 0x0e, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x4a, 0x4d, 0xaf, 0x41, 0xb4, 0xa0, 0xf5, 0x70, 0xb4, 0x0f, 0xa2, 0x05, 0xdb, 0xc3, 0x5e, 0xe1, 0x20, 0x5a, 0x10, 0x1e, 0xfa, 0x93, 0x1f, 0x87, 0x06, 0xc1, 0x06, 0xe7, 0xef, 0xf2, 0x41, 0xb0, 0x86, 0x18, 0x0e, 0xbf, 0x20, 0x19, 0x50, 0xfa, 0xf7, 0x1d, 0x9c, 0xbd, 0x8c, 0x8f, 0x6f, 0x83, 0x60, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x87, 0x5d, 0xd8, 0x85, 0x3b, 0x88, 0xd7, 0x53, 0x9a, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x38, 0xf2, 0x14, 0x0f, 0xbf, 0x20, 0x5a, 0x50, 0x7a, 0xc8, 0xda, 0x1d, 0x04, 0x26, 0xf6, 0xf1, 0xed, 0x90, 0xce, 0x3d, 0x28, 0xe5, 0xdd, 0x8e, 0x6f, 0xc3, 0x2f, 0x88, 0x16, 0xac, 0x17, 0x7e, 0x41, 0xb4, 0x60, 0xba, 0x21, 0x6b, 0x37, 0x08, 0x36, 0xec, 0x15, 0x1e, 0xc4, 0xa1, 0xcb, 0xcd, 0x41, 0x60, 0x62, 0x1f, 0xdf, 0x0e, 0xf9, 0xda, 0xe3, 0xf1, 0xb0, 0x0b, 0x77, 0xf0, 0x74, 0x5f, 0x9c, 0x05, 0xc1, 0x06, 0x2f, 0x51, 0x05, 0x38, 0xec, 0xf1, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x41, 0x78, 0x30, 0xca, 0x4f, 0x8e, 0xe7, 0xc7, 0xb7, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xd9, 0xca, 0xca, 0xe4, 0x83, 0x88, 0x31, 0x9a, 0x39, 0x1e, 0xaf, 0xb8, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0x3b, 0x1a, 0x2e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1e, 0xa8, 0xbd, 0xb0, 0x38, 0x08, 0x36, 0x68, 0xef, 0x71, 0xe5, 0xd0, 0x41, 0xe3, 0x78, 0x7c, 0x1c, 0x3a, 0x1e, 0xaf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xf0, 0x0b, 0x92, 0x01, 0xe3, 0xbf, 0xef, 0x20, 0xc8, 0xf9, 0x8f, 0x6f, 0x83, 0x60, 0x41, 0xb2, 0xc1, 0x3a, 0x62, 0x9d, 0x83, 0x63, 0x56, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0xc5, 0x41, 0xb0, 0xc1, 0x63, 0xe5, 0xa7, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x24, 0x23, 0x7d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x08, 0x4c, 0xec, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x43, 0xd7, 0xcc, 0xd5, 0xb0, 0x57, 0x38, 0x08, 0x16, 0x24, 0x03, 0xeb, 0x3b, 0x07, 0x67, 0x2f, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x8b, 0x84, 0x25, 0x0e, 0x8d, 0x5a, 0x8e, 0x43, 0x87, 0x18, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x83, 0x07, 0x4d, 0x4c, 0x0c, 0xa2, 0x85, 0x1d, 0x04, 0x1b, 0x3c, 0xbc, 0xb2, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x6b, 0x77, 0x10, 0x98, 0xd8, 0xc7, 0xa1, 0x43, 0x72, 0xe9, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0x1d, 0xdf, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x37, 0x28, 0x7d, 0x23, 0x5a, 0x1c, 0x76, 0xc3, 0xae, 0xc1, 0x86, 0x16, 0x92, 0xc3, 0x2e, 0xdc, 0x06, 0xe3, 0xa7, 0xeb, 0x60, 0x78, 0x51, 0xac, 0x06, 0xe3, 0xa7, 0x6b, 0x10, 0x6c, 0xd0, 0x72, 0x0e, 0xfe, 0xc1, 0x40, 0x5f, 0x3b, 0x08, 0x4a, 0xef, 0x43, 0x62, 0xf3, 0x78, 0x7c, 0x1c, 0x3a, 0x1e, 0xaf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x76, 0x43, 0x1e, 0x6b, 0xc3, 0xb8, 0x0c, 0xbb, 0x61, 0xd7, 0x60, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x88, 0x89, 0xb6, 0x39, 0x58, 0x37, 0xc6, 0x34, 0xec, 0xc2, 0x6d, 0x1c, 0x3a, 0x64, 0xed, 0x36, 0x74, 0x0c, 0x1b, 0x76, 0x41, 0xb0, 0x41, 0xdc, 0x22, 0xdd, 0x1c, 0xc4, 0xa1, 0xcb, 0xcd, 0x6a, 0x30, 0x88, 0x56, 0x06, 0xc1, 0x06, 0x31, 0xd2, 0x36, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0x83, 0x62, 0x0f, 0xe2, 0x38, 0x74, 0xe8, 0x18, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0x10, 0x6c, 0x70, 0xfe, 0x2e, 0x3f, 0x78, 0x47, 0x56, 0xce, 0xa1, 0x63, 0xd8, 0xf1, 0xfc, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x16, 0x06, 0xb3, 0x38, 0x08, 0x36, 0x58, 0xd3, 0x0e, 0x31, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x91, 0x85, 0x5f, 0x73, 0x50, 0xba, 0x77, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0x6f, 0x31, 0x4a, 0x38, 0xa4, 0xe1, 0x86, 0x5d, 0x10, 0x6c, 0x10, 0x0f, 0xbb, 0x32, 0x07, 0xf1, 0x92, 0x74, 0xb3, 0x21, 0x86, 0x6b, 0x30, 0xf2, 0x1f, 0x06, 0xc1, 0x06, 0x0f, 0xe0, 0x12, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xf9, 0xbb, 0xfc, 0x20, 0x5e, 0x92, 0x6e, 0x0e, 0x8d, 0x8e, 0x8e, 0x43, 0x87, 0x18, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x3a, 0x34, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x8e, 0x8a, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0xa3, 0x5d, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xe8, 0x21, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x5b, 0x8c, 0x12, 0x0e, 0x9d, 0x88, 0x8e, 0x43, 0x87, 0xac, 0xdd, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x10, 0x2c, 0x0e, 0xbb, 0xc1, 0x20, 0xe0, 0xd8, 0x10, 0xc3, 0xe1, 0x17, 0x44, 0x0b, 0xc2, 0x41, 0xb0, 0x41, 0x63, 0x89, 0x50, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x59, 0xbb, 0x83, 0x90, 0xcf, 0x3e, 0x0e, 0x1d, 0x8f, 0x87, 0x5d, 0x10, 0x6c, 0xd0, 0x9e, 0xf4, 0xfd, 0x41, 0x5c, 0x8f, 0xcc, 0xac, 0x21, 0x86, 0x07, 0x07, 0x04, 0xf0, 0x41, 0x32, 0x64, 0x10, 0x6d, 0x50, 0x1e, 0xc4, 0x1d, 0x44, 0x3d, 0xa3, 0xcd, 0xf1, 0xed, 0x78, 0xbc, 0x82, 0x60, 0x83, 0xa8, 0x11, 0xf0, 0x59, 0x5c, 0xd8, 0x0d, 0x8a, 0x8b, 0xc3, 0x0d, 0x8d, 0x04, 0x87, 0xdd, 0xe0, 0xe9, 0x5f, 0x14, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x04, 0x1b, 0x2c, 0xa8, 0xdd, 0x3f, 0x68, 0xc1, 0x4e, 0xe0, 0xa0, 0xdd, 0x8c, 0x80, 0x05, 0xc1, 0x06, 0x4d, 0x3d, 0x0a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x5d, 0x1f, 0x38, 0x34, 0x2e, 0x3a, 0x0e, 0x0d, 0x82, 0x0d, 0x9a, 0x7a, 0x14, 0x38, 0x38, 0x93, 0xa2, 0x1f, 0x8f, 0x07, 0xc1, 0x06, 0x05, 0xb5, 0xd8, 0xe2, 0x20, 0xd8, 0x20, 0xb2, 0xf0, 0x6b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x8c, 0x0b, 0xb3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x8e, 0x8a, 0xff, 0x07, 0x25, 0xcf, 0xd8, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0xd9, 0x60, 0xed, 0x3a, 0xc5, 0xc1, 0x49, 0xe8, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0xde, 0x53, 0xa9, 0x33, 0xfc, 0xc6, 0xf3, 0x83, 0x34, 0xda, 0x85, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbb, 0x21, 0x8f, 0xb5, 0x21, 0x86, 0xc3, 0x6e, 0xd8, 0x35, 0xd8, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0x8c, 0xa8, 0x16, 0x0d, 0xbb, 0x41, 0x44, 0xae, 0x16, 0xad, 0x06, 0x83, 0x68, 0x65, 0x10, 0x6c, 0x10, 0x0f, 0x71, 0x33, 0x07, 0xb1, 0xce, 0x5a, 0x74, 0x88, 0xe1, 0x86, 0x1e, 0x42, 0x07, 0xb1, 0xdf, 0x5a, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x86, 0xf5, 0xbd, 0x0d, 0x31, 0x1c, 0x76, 0xc3, 0xae, 0xc1, 0x86, 0xd4, 0xc1, 0xb0, 0x1b, 0xc4, 0xa6, 0x69, 0xd1, 0xc2, 0x2f, 0x88, 0x16, 0xb4, 0x0e, 0x82, 0x0d, 0xd6, 0xb4, 0x43, 0x1c, 0x0c, 0xf4, 0xb5, 0xe3, 0xf1, 0x41, 0xa1, 0x72, 0x76, 0x50, 0x80, 0x9c, 0x1d, 0x8f, 0x8f, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0xc3, 0xfa, 0xde, 0x86, 0x18, 0x0e, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x0e, 0x82, 0x35, 0x64, 0xed, 0x36, 0x38, 0xf2, 0x14, 0x0f, 0x82, 0x35, 0x28, 0x51, 0xd0, 0x0e, 0x31, 0x3c, 0x58, 0xcd, 0x00, 0x74, 0xb0, 0x9a, 0x01, 0xe8, 0xf8, 0x76, 0x3c, 0x1e, 0x04, 0x8b, 0x1b, 0xda, 0xce, 0x1c, 0x44, 0x1d, 0x33, 0xd1, 0xe2, 0x82, 0x60, 0x83, 0xe5, 0xa6, 0x24, 0x8b, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdd, 0x20, 0x3e, 0xa0, 0x89, 0x16, 0x04, 0x0b, 0x92, 0x81, 0x5b, 0xeb, 0xe0, 0x98, 0x55, 0x7c, 0xd0, 0x06, 0x6e, 0xca, 0xe1, 0x14, 0x3b, 0x1e, 0x1f, 0x8f, 0x57, 0x10, 0x6c, 0x10, 0xc2, 0xf6, 0x8b, 0x83, 0x60, 0x83, 0x77, 0x89, 0x44, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xb5, 0xee, 0x90, 0x5c, 0x3a, 0x34, 0x6a, 0x39, 0x0e, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x37, 0x88, 0x2e, 0x71, 0xa2, 0x0d, 0xa2, 0x94, 0x9c, 0xe8, 0x70, 0x8a, 0x1d, 0x8f, 0x8f, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xc4, 0x3f, 0x48, 0xd1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xee, 0x0e, 0xd9, 0x8a, 0x83, 0xf1, 0x61, 0x74, 0xe8, 0xa0, 0x71, 0x38, 0xc5, 0x8e, 0xc7, 0xc7, 0xe3, 0x0d, 0x22, 0x22, 0x9d, 0x68, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x83, 0xf8, 0x80, 0x26, 0x5a, 0x10, 0x2c, 0x48, 0x06, 0xee, 0xbb, 0x83, 0x63, 0x56, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xc0, 0xc4, 0x3e, 0xe4, 0x6b, 0x8f, 0x43, 0x87, 0x53, 0xec, 0x78, 0x7c, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x06, 0xe7, 0x90, 0xf4, 0x05, 0xc1, 0x06, 0xd1, 0x3e, 0x36, 0x72, 0x10, 0xe5, 0xee, 0x44, 0x87, 0x53, 0xec, 0x78, 0x3c, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xce, 0x21, 0xe9, 0x0b, 0x82, 0x0d, 0xa2, 0x7d, 0x6c, 0xe4, 0x20, 0x1e, 0xea, 0x89, 0x0e, 0xa7, 0xd8, 0xf1, 0x78, 0x41, 0xb0, 0x41, 0x08, 0xdb, 0x2f, 0x0e, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0xc3, 0xfa, 0xde, 0x86, 0x18, 0x0e, 0x82, 0x0d, 0x22, 0x4d, 0x01, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x10, 0xa3, 0x08, 0x45, 0xc7, 0xa1, 0xe3, 0xf1, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x1e, 0xfa, 0x53, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x8c, 0xb2, 0xb2, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x10, 0xff, 0x43, 0x4b, 0xb7, 0xe3, 0xf1, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdd, 0x20, 0x2e, 0xf2, 0x89, 0x16, 0x04, 0x8b, 0xc3, 0x2e, 0xec, 0x06, 0xed, 0x03, 0x8a, 0x2c, 0xec, 0x06, 0x6d, 0x88, 0xd0, 0x6c, 0xf0, 0xf0, 0x58, 0x82, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x17, 0x7e, 0x41, 0xb4, 0xa0, 0x7e, 0x10, 0x6c, 0x10, 0x98, 0xd8, 0x0b, 0x82, 0x0d, 0x42, 0x0a, 0xfc, 0x60, 0xa4, 0x69, 0x1d, 0x84, 0x00, 0xf8, 0xf1, 0x78, 0xd8, 0x0d, 0xe2, 0xb1, 0x9f, 0x68, 0x0d, 0x4a, 0x18, 0x89, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0xd8, 0xe0, 0xc1, 0xec, 0x33, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1e, 0xf3, 0x3e, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x1c, 0x14, 0xad, 0x27, 0x07, 0x4f, 0x41, 0x71, 0x18, 0x7e, 0xe3, 0xf9, 0xe2, 0x41, 0xd1, 0x7a, 0x72, 0x50, 0xc2, 0x48, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0x58, 0xec, 0x3c, 0x68, 0x9d, 0x5a, 0x65, 0xd8, 0x0d, 0xc6, 0x21, 0xd3, 0x82, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0xc1, 0x83, 0xd9, 0x67, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x3c, 0xe6, 0x7d, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x09, 0x78, 0xc5, 0xc2, 0xc8, 0x5a, 0xd6, 0xca, 0xf2, 0x83, 0xa7, 0xa0, 0x38, 0x0c, 0xbf, 0xf1, 0x7c, 0xf1, 0x20, 0x32, 0xef, 0x8b, 0x0e, 0x06, 0xd1, 0xca, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0x9c, 0x62, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x58, 0xbb, 0x3a, 0x08, 0x72, 0xfe, 0x83, 0xd6, 0xf3, 0x43, 0x0e, 0x86, 0x59, 0xf8, 0xe1, 0x14, 0x3b, 0xbe, 0x1d, 0x4e, 0xb1, 0xe3, 0xf1, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x70, 0x8a, 0x0d, 0xbb, 0x61, 0xd7, 0x60, 0x83, 0xa1, 0xd9, 0xb5, 0xc1, 0xd0, 0xec, 0x1a, 0x04, 0x0b, 0x92, 0x81, 0x76, 0x57, 0x87, 0xe4, 0xd2, 0xa1, 0x83, 0xc6, 0xf1, 0x78, 0x10, 0x6c, 0x30, 0xca, 0xca, 0x16, 0x07, 0xc1, 0x06, 0x8d, 0x43, 0xa8, 0x1c, 0xc4, 0x10, 0x41, 0xd1, 0xf1, 0x78, 0x10, 0x6c, 0x50, 0x08, 0xd0, 0x2c, 0x0e, 0x82, 0x0d, 0x31, 0x3c, 0x28, 0x66, 0x6d, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x83, 0xf8, 0x80, 0x26, 0x5a, 0x10, 0x6c, 0x10, 0xed, 0x63, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xf9, 0xda, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xe6, 0x54, 0x07, 0xc3, 0x51, 0xfa, 0x38, 0x74, 0x38, 0xc5, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x83, 0xa8, 0x64, 0x28, 0xda, 0xe0, 0x60, 0xa0, 0x7b, 0x38, 0xc5, 0x8e, 0xc7, 0x83, 0x60, 0x83, 0x92, 0xa1, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xb0, 0x7b, 0x77, 0x30, 0x0c, 0x7d, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x83, 0xf8, 0x80, 0x26, 0xda, 0x20, 0x62, 0x1f, 0x8a, 0x0e, 0xa7, 0xd8, 0xf1, 0x78, 0x05, 0xc1, 0x06, 0xb1, 0x0c, 0x51, 0xb4, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0x1c, 0x17, 0xce, 0x0f, 0x1a, 0x22, 0x13, 0x38, 0x34, 0x6a, 0x19, 0x04, 0x0b, 0x92, 0x81, 0xf1, 0x3b, 0x38, 0xe7, 0x1d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0xd8, 0x4a, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x6b, 0x6f, 0x48, 0x06, 0xc9, 0x40, 0xb8, 0x0e, 0xc6, 0x60, 0xe4, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xf0, 0x1b, 0x44, 0x00, 0x5e, 0xcd, 0x82, 0x60, 0x41, 0x32, 0x70, 0x6b, 0x1d, 0x9c, 0xf3, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb2, 0x76, 0x07, 0x25, 0x41, 0xc3, 0x71, 0xe8, 0x30, 0x2e, 0xc7, 0xe3, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x7c, 0x3c, 0x5e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x10, 0x95, 0x0c, 0x45, 0x07, 0xc5, 0x0b, 0xc3, 0xf1, 0x78, 0x05, 0xc1, 0x06, 0x21, 0x6c, 0xbf, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0xd8, 0x2b, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x72, 0x3b, 0x92, 0x43, 0xa3, 0x96, 0xe3, 0xd0, 0xf1, 0xf8, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x10, 0xff, 0x20, 0x45, 0x1b, 0xc4, 0x77, 0x48, 0xd1, 0xe1, 0x14, 0x3b, 0x1e, 0x1f, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x06, 0xe7, 0x90, 0xf4, 0x83, 0xe2, 0x85, 0xe1, 0x78, 0x3c, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xce, 0x21, 0xe9, 0x0b, 0x82, 0x0d, 0xa2, 0x7d, 0x6c, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x5f, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x43, 0xfc, 0xf9, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0x06, 0x27, 0x9d, 0xe3, 0x83, 0x73, 0x46, 0xfd, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x41, 0x4c, 0xd7, 0x13, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xad, 0x8d, 0xe2, 0x1f, 0xa4, 0x28, 0x3f, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0xc0, 0x46, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xd8, 0x70, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x28, 0x7f, 0xbb, 0x0e, 0x86, 0xa3, 0xf4, 0xc1, 0x5a, 0xd3, 0x93, 0xe3, 0xd0, 0x41, 0x0b, 0x5d, 0xfa, 0x07, 0xad, 0x66, 0xe8, 0x1f, 0x87, 0x8e, 0x43, 0x87, 0x53, 0xec, 0x78, 0x3c, 0x08, 0x36, 0x08, 0x61, 0xfb, 0xc5, 0x41, 0xb0, 0x41, 0xe3, 0x10, 0x2a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x74, 0x39, 0xe4, 0x60, 0x68, 0x52, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x94, 0xc1, 0xfb, 0xa1, 0x51, 0xcb, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x70, 0x8a, 0x0d, 0xbb, 0xc1, 0x1a, 0xf0, 0xff, 0x85, 0x5f, 0x10, 0x2d, 0x98, 0x0f, 0x82, 0x0d, 0x7b, 0x85, 0x07, 0x23, 0x4d, 0xeb, 0x78, 0x3c, 0xec, 0x06, 0x83, 0x80, 0x63, 0x61, 0x37, 0x18, 0xb1, 0x58, 0x1b, 0x5a, 0xf7, 0x1c, 0x4e, 0xb1, 0x0d, 0xad, 0x7b, 0x06, 0xc1, 0x06, 0xd1, 0x85, 0x52, 0x74, 0xe8, 0xa0, 0x71, 0x38, 0xc5, 0x8e, 0xc7, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x85, 0xdd, 0x60, 0x0d, 0xf8, 0xff, 0xc2, 0x6e, 0xf0, 0x20, 0x5f, 0x81, 0x0d, 0x96, 0x97, 0xee, 0x1c, 0x8e, 0xf6, 0xc3, 0xd1, 0xbe, 0xf0, 0x0b, 0xa2, 0x05, 0xf3, 0x41, 0xb0, 0x61, 0xaf, 0xf0, 0x20, 0x26, 0xdb, 0x8b, 0x8e, 0xc7, 0x83, 0x60, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0xd8, 0xe0, 0x81, 0xb4, 0x00, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1a, 0x24, 0x1b, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x83, 0x98, 0x8b, 0x2f, 0x1a, 0x7e, 0xe3, 0xf9, 0x06, 0x31, 0x2d, 0x5f, 0x74, 0x30, 0x26, 0xac, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x64, 0x59, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x10, 0x13, 0x30, 0x45, 0xc7, 0xa1, 0x61, 0x37, 0x18, 0x87, 0x4c, 0x1b, 0x87, 0x36, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0x6d, 0xc0, 0x00, 0x1c, 0xb4, 0x9e, 0x1f, 0x72, 0x30, 0xcc, 0xc2, 0x0f, 0xa7, 0xd8, 0xf1, 0xf8, 0x78, 0xbc, 0x20, 0xd8, 0x60, 0x59, 0x0b, 0xdb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x41, 0xe4, 0xad, 0x14, 0x1d, 0x94, 0x0c, 0x4d, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x77, 0xd5, 0xf1, 0xf8, 0x38, 0x34, 0x08, 0x36, 0x58, 0xd6, 0xc2, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x56, 0x56, 0x8a, 0x0e, 0x62, 0x56, 0xc6, 0xe8, 0x38, 0xb4, 0x41, 0xd4, 0xb3, 0x14, 0x2d, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0x44, 0xe9, 0x89, 0xd1, 0xc2, 0x6f, 0x10, 0x17, 0x29, 0x46, 0x83, 0x60, 0x41, 0xb6, 0x41, 0xfc, 0xa8, 0x18, 0x0d, 0x82, 0x0d, 0x46, 0x96, 0xd5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x53, 0x48, 0x03, 0x07, 0xed, 0xe0, 0x0a, 0x1c, 0x14, 0x51, 0x27, 0xc7, 0xa1, 0x61, 0x37, 0x18, 0x87, 0x4c, 0x1b, 0x87, 0x36, 0x0e, 0x1d, 0x44, 0x86, 0x4c, 0xd1, 0xe1, 0x14, 0x3b, 0x1e, 0x1f, 0x8f, 0x07, 0xc1, 0x06, 0x85, 0x00, 0xcd, 0xe2, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xc1, 0xcb, 0xed, 0x48, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x28, 0x6e, 0x6d, 0x8e, 0x43, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x10, 0xb6, 0x5f, 0x1c, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x06, 0xf1, 0x0f, 0x52, 0xb4, 0x41, 0x9c, 0xde, 0x14, 0x1d, 0x4e, 0xb1, 0xe3, 0xf1, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0xb0, 0x2a, 0xea, 0x63, 0x41, 0xb0, 0x41, 0xb4, 0x8f, 0x8d, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xe4, 0x6b, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0x06, 0x67, 0x15, 0xe3, 0x83, 0xe3, 0x5e, 0xef, 0x71, 0xe8, 0x70, 0x8a, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x84, 0xb0, 0xfd, 0xe2, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x37, 0x88, 0x2e, 0x71, 0xa2, 0x05, 0xc1, 0x06, 0x11, 0x67, 0x6b, 0x73, 0xd0, 0x06, 0x6e, 0xca, 0xe1, 0x14, 0x3b, 0x1e, 0x1f, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x06, 0xf1, 0x01, 0x4d, 0x74, 0x50, 0xbc, 0x30, 0x1c, 0x8f, 0x0f, 0xe2, 0x63, 0xa8, 0xe8, 0x78, 0x7c, 0x3c, 0x5e, 0x71, 0x10, 0x6c, 0x30, 0xf2, 0x1f, 0x16, 0x37, 0x58, 0x6a, 0x53, 0xb0, 0xc1, 0x63, 0x81, 0x82, 0x36, 0x44, 0x73, 0x0d, 0x31, 0x5c, 0x10, 0x2c, 0x48, 0x06, 0xca, 0xdd, 0xc1, 0x70, 0x94, 0x3e, 0x34, 0x05, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0x5c, 0x89, 0x1a, 0x24, 0x03, 0xe5, 0xef, 0xd0, 0x18, 0x6c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x90, 0xfc, 0xda, 0x77, 0x30, 0x1c, 0xa5, 0x0f, 0x52, 0x94, 0x9f, 0x8f, 0x43, 0x87, 0xc4, 0xd4, 0xf1, 0xf8, 0x78, 0xbc, 0xe2, 0x82, 0x60, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x61, 0x7d, 0x6f, 0x83, 0x75, 0x02, 0x58, 0x83, 0x60, 0x85, 0x5f, 0x10, 0x2c, 0xfc, 0x06, 0xab, 0x97, 0xb9, 0x0e, 0xa9, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xd1, 0xe2, 0x41, 0xf1, 0x1a, 0x79, 0x88, 0xe6, 0x71, 0xe8, 0x90, 0x3a, 0x18, 0x7e, 0x41, 0xb0, 0xf1, 0xf8, 0xd0, 0x41, 0xe3, 0x90, 0x3a, 0x58, 0x1c, 0x04, 0x2b, 0x08, 0x16, 0x7e, 0x43, 0x72, 0xe9, 0x20, 0x3a, 0x97, 0x8c, 0x0e, 0x69, 0xb8, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0x11, 0xdc, 0x64, 0x74, 0xe8, 0xa0, 0x71, 0x68, 0xfe, 0x72, 0x3c, 0x3e, 0x1e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x76, 0x97, 0x8c, 0x0e, 0x69, 0xb8, 0x61, 0x37, 0xac, 0xa0, 0x6e, 0x1c, 0x1a, 0x04, 0x6b, 0x10, 0x64, 0xf1, 0xc3, 0x2f, 0x08, 0x36, 0x9e, 0x1f, 0x34, 0xd5, 0xd5, 0x72, 0x48, 0x1d, 0x2c, 0x0e, 0x82, 0x15, 0x04, 0x1b, 0x52, 0x35, 0x87, 0x34, 0xdc, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x83, 0x58, 0x94, 0x32, 0x3a, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x8f, 0x07, 0xc1, 0x06, 0x05, 0xb5, 0xd8, 0xe2, 0xf0, 0x0b, 0xa2, 0x05, 0xe9, 0x61, 0x5c, 0x8e, 0xc7, 0xc3, 0x6e, 0x50, 0xfa, 0x82, 0xad, 0x20, 0xd8, 0x20, 0x66, 0x10, 0x66, 0x0e, 0x4a, 0x9e, 0xb1, 0x43, 0x0c, 0x17, 0x04, 0x1b, 0xc4, 0x0c, 0xc2, 0xcc, 0xc1, 0x51, 0xc5, 0x79, 0x10, 0x6c, 0x3c, 0x3e, 0x38, 0xc9, 0x2f, 0x1f, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x85, 0x5d, 0xb8, 0x0d, 0x96, 0xda, 0x14, 0x1c, 0xf6, 0x0a, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x1b, 0xc4, 0x2b, 0xc7, 0xcc, 0xc1, 0x7b, 0x55, 0x79, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc3, 0x2e, 0xdc, 0x06, 0x05, 0xc3, 0xe3, 0x61, 0xaf, 0x70, 0x41, 0xb0, 0x41, 0xea, 0x3f, 0xc6, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xaf, 0x1c, 0x33, 0x07, 0xef, 0x4c, 0xbf, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0xbb, 0x70, 0x1b, 0x94, 0x7f, 0x8f, 0x87, 0xbd, 0xc2, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xf1, 0xca, 0x31, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xe5, 0xdf, 0xe3, 0x21, 0x55, 0x73, 0x1c, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0xbb, 0x70, 0x1b, 0x8c, 0xdb, 0xdd, 0xc3, 0x5e, 0xe1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x78, 0xe5, 0x98, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xd8, 0x20, 0xe5, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x87, 0x5d, 0xb8, 0x0d, 0xca, 0x2c, 0xc8, 0xc3, 0x5e, 0xe1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x78, 0xe5, 0x98, 0x39, 0x78, 0xcc, 0xc4, 0xd6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0xd8, 0x85, 0xdb, 0xa0, 0x68, 0x86, 0x3c, 0xec, 0x15, 0x2e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x08, 0x36, 0x88, 0x57, 0x8e, 0x99, 0x83, 0x27, 0xc9, 0x8e, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x87, 0x5d, 0xb8, 0x0d, 0x4a, 0x11, 0xc9, 0xc3, 0x5e, 0xe1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x78, 0xe5, 0x98, 0x39, 0x78, 0x48, 0xfe, 0xc5, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0xd8, 0x85, 0xdb, 0xe0, 0xa4, 0xb7, 0x7b, 0xd8, 0x2b, 0x5c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xaf, 0x1c, 0x33, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xde, 0x30, 0x8f, 0x74, 0x48, 0xd5, 0x1c, 0x87, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc3, 0x2e, 0xdc, 0x06, 0x25, 0x4c, 0xe2, 0x61, 0xaf, 0x70, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xbc, 0x72, 0xcc, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x37, 0x34, 0x73, 0x48, 0xd5, 0x1c, 0x87, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc3, 0x2e, 0xdc, 0x06, 0x45, 0x2f, 0xe2, 0x61, 0xaf, 0x70, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xbc, 0x72, 0xcc, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0xcd, 0x36, 0x73, 0x48, 0xd5, 0x1c, 0x87, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc3, 0x2e, 0xdc, 0x06, 0x65, 0x85, 0xe2, 0x61, 0xaf, 0x70, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xbc, 0x72, 0xcc, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x26, 0x32, 0x73, 0x48, 0xd5, 0x1c, 0x87, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0xc3, 0x2e, 0xdc, 0x06, 0x45, 0xa2, 0xe2, 0x61, 0xaf, 0x70, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xbc, 0x72, 0xcc, 0x1c, 0x44, 0x45, 0xa2, 0xc9, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0xd8, 0x85, 0xdb, 0xa0, 0xe4, 0x57, 0x3c, 0xec, 0x15, 0x2e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x08, 0x36, 0x88, 0x57, 0x8e, 0x99, 0x83, 0x87, 0xf2, 0x5b, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x87, 0x5d, 0xb8, 0x0d, 0x0a, 0xb8, 0xc5, 0xc3, 0x5e, 0xe1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x78, 0xe5, 0x98, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xf0, 0x54, 0xe6, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x87, 0x5d, 0xb8, 0x0d, 0xd6, 0x68, 0x2b, 0x1c, 0xf6, 0x0a, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x1b, 0xc4, 0x2b, 0xc7, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x85, 0xdd, 0x34, 0x87, 0x54, 0xcd, 0x71, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0xec, 0xc2, 0x6d, 0x50, 0x02, 0x45, 0x1e, 0xf6, 0x0a, 0x37, 0x88, 0x89, 0x3e, 0x9b, 0x61, 0x17, 0x6e, 0x83, 0xe2, 0x35, 0xf2, 0xb0, 0x57, 0xb8, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x5e, 0x39, 0x66, 0x0e, 0x96, 0xee, 0x4d, 0x1d, 0x9a, 0xbf, 0x1c, 0x8f, 0x87, 0x5d, 0xb8, 0x0d, 0xd2, 0x42, 0xb3, 0x0f, 0x7b, 0x85, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0xe2, 0x95, 0x63, 0xe6, 0x60, 0xfd, 0x67, 0xd4, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x90, 0x6d, 0x68, 0xbe, 0x7e, 0x10, 0x9f, 0xec, 0x36, 0x83, 0x68, 0x71, 0x10, 0x6c, 0x1c, 0x3a, 0x88, 0xff, 0xb8, 0x9a, 0x83, 0xc5, 0xa2, 0x07, 0xc7, 0xe3, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0xbf, 0xf1, 0x78, 0xd8, 0x0d, 0xc6, 0x3a, 0xda, 0x82, 0x60, 0x41, 0x32, 0x70, 0xdf, 0x1d, 0x0c, 0xff, 0xd8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x1e, 0x42, 0x07, 0xc5, 0xa1, 0xc6, 0x71, 0x68, 0x83, 0x18, 0x29, 0x34, 0x3a, 0x88, 0xf6, 0x2b, 0xa3, 0xe3, 0xf1, 0xf1, 0x78, 0x71, 0x41, 0xb0, 0x41, 0x44, 0xbe, 0xad, 0x2c, 0x0e, 0x82, 0xc5, 0x99, 0x19, 0x48, 0x00, 0xe4, 0xe2, 0xc2, 0x2f, 0x88, 0x16, 0xd4, 0x0e, 0x82, 0x0d, 0x96, 0x11, 0x96, 0x1c, 0x3a, 0x11, 0x1d, 0x8f, 0x07, 0xc1, 0xe2, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x92, 0x61, 0x0e, 0xce, 0x5e, 0xc6, 0x07, 0xcf, 0x80, 0x8f, 0x18, 0x7e, 0x41, 0xb4, 0xe0, 0xfa, 0x41, 0x08, 0x80, 0x1f, 0x8f, 0x87, 0xdf, 0x60, 0xb0, 0x03, 0x0c, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0xa6, 0x90, 0x06, 0x06, 0xc9, 0x40, 0xf5, 0x3a, 0xe4, 0x34, 0x0e, 0x06, 0xb6, 0xe8, 0xb0, 0x1b, 0x84, 0x96, 0xfb, 0x82, 0x68, 0x21, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x6b, 0x6f, 0x48, 0x0e, 0xde, 0x21, 0x72, 0x73, 0x68, 0xd4, 0x72, 0x10, 0x98, 0xd8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0x50, 0x3d, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x61, 0x0e, 0xce, 0x79, 0xc7, 0x83, 0x64, 0x50, 0x75, 0x70, 0xe6, 0xc0, 0x3e, 0x34, 0x6a, 0x19, 0x44, 0x0b, 0xc6, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x6b, 0x6f, 0x48, 0x06, 0xc9, 0xc0, 0x50, 0x1d, 0x84, 0x1c, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x83, 0x68, 0xa1, 0x83, 0x60, 0x83, 0xf8, 0xbb, 0x03, 0x39, 0x18, 0x51, 0xb8, 0xc7, 0xa1, 0xe3, 0xd0, 0x21, 0xb9, 0x74, 0x7c, 0x5b, 0x10, 0xac, 0x21, 0xe6, 0x07, 0xeb, 0x70, 0x72, 0x16, 0x87, 0xdd, 0xa0, 0xb5, 0x2e, 0xa5, 0x0d, 0x7b, 0x85, 0x83, 0x60, 0x41, 0xb0, 0x20, 0xd8, 0xa0, 0x29, 0xa4, 0x81, 0x41, 0x32, 0x50, 0xfc, 0x0e, 0x39, 0x8d, 0x43, 0x1a, 0x6e, 0xd8, 0x0d, 0x5a, 0xe7, 0x03, 0x58, 0xf8, 0x05, 0xd1, 0x82, 0xfa, 0x61, 0x17, 0x6e, 0x83, 0x34, 0xf7, 0x8c, 0x83, 0x22, 0x57, 0x61, 0x83, 0xc1, 0x5d, 0x79, 0x10, 0x98, 0xd8, 0xc7, 0xe3, 0x41, 0xb4, 0x20, 0x3e, 0x88, 0x07, 0xf3, 0xa0, 0x41, 0xb4, 0xb0, 0x83, 0x60, 0x83, 0xc8, 0x7c, 0x34, 0x3a, 0x6c, 0xd4, 0x0e, 0xa2, 0x85, 0x0c, 0x82, 0x0d, 0x22, 0x24, 0xd2, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0xfe, 0xc3, 0x6f, 0x3c, 0x3f, 0x28, 0xac, 0xa5, 0x8e, 0x43, 0x07, 0x81, 0x89, 0x3d, 0xec, 0xc2, 0x6d, 0xc8, 0xd7, 0x1e, 0x04, 0x59, 0xfc, 0x82, 0x60, 0x83, 0x13, 0x26, 0xfa, 0x61, 0xa3, 0xf6, 0x70, 0x8a, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xbe, 0x38, 0x88, 0x16, 0x32, 0x08, 0x16, 0x04, 0x1b, 0x34, 0x85, 0x34, 0x30, 0x48, 0x06, 0x66, 0xef, 0x90, 0xd3, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0xac, 0x41, 0x5c, 0x0d, 0xb1, 0x1c, 0x62, 0xb8, 0x38, 0x88, 0x16, 0x3a, 0x08, 0x16, 0x24, 0x03, 0xc1, 0x39, 0x38, 0x50, 0x24, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0x15, 0x92, 0x1f, 0xa4, 0x15, 0x8f, 0x1c, 0x87, 0x0e, 0xa9, 0x83, 0xe3, 0xf1, 0x71, 0xe8, 0xb0, 0x57, 0x78, 0x3c, 0x5e, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x2f, 0x88, 0x16, 0x18, 0xf7, 0x43, 0xea, 0xe0, 0x78, 0x3c, 0xec, 0x82, 0x60, 0x83, 0x28, 0x3e, 0xb0, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x1c, 0x14, 0xb9, 0x0a, 0xc7, 0xa1, 0x0d, 0x7b, 0x85, 0x83, 0x60, 0x83, 0x58, 0x69, 0xd2, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xb7, 0xb1, 0x35, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x8a, 0x5c, 0x85, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0xc3, 0xfa, 0xde, 0x86, 0xbd, 0xc2, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x98, 0x1f, 0x9c, 0x83, 0xbf, 0x07, 0xd1, 0xc2, 0x0e, 0x82, 0x0d, 0x5a, 0x55, 0x57, 0x3a, 0x34, 0x6a, 0x39, 0x1e, 0x1f, 0x8f, 0x17, 0x44, 0x1b, 0xbc, 0xad, 0x1e, 0x60, 0x10, 0x6d, 0xd0, 0x16, 0xc1, 0xd2, 0x20, 0x5a, 0xc8, 0x21, 0x86, 0x87, 0xd4, 0xc1, 0x20, 0xd8, 0x10, 0xf3, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0xfe, 0x2a, 0x8d, 0x0e, 0x8d, 0x5a, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x10, 0x70, 0xd8, 0xc3, 0x2f, 0x88, 0x16, 0xd4, 0x0f, 0x82, 0x0d, 0x4e, 0x98, 0xe8, 0x07, 0xc3, 0x2c, 0xfc, 0x78, 0xbc, 0xc1, 0x92, 0x2d, 0xae, 0x83, 0xc0, 0xc4, 0x3e, 0x1e, 0x1f, 0x8f, 0x8f, 0xc7, 0x83, 0x60, 0x83, 0x91, 0x65, 0xb6, 0x38, 0x08, 0x16, 0xe7, 0x20, 0xc6, 0x01, 0x87, 0x16, 0x17, 0x04, 0x1b, 0x0c, 0xf7, 0xb7, 0xc5, 0x61, 0x17, 0xee, 0xa0, 0x65, 0xaf, 0x96, 0x85, 0xdd, 0x90, 0x08, 0x58, 0xc3, 0x22, 0xdf, 0x61, 0xaf, 0x70, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xa2, 0x8e, 0x1b, 0xe7, 0xe0, 0x75, 0x9e, 0x37, 0xc3, 0x6f, 0xf0, 0xfe, 0x82, 0x9b, 0xe1, 0x37, 0x18, 0xec, 0x00, 0xc3, 0x2f, 0x88, 0x16, 0x9c, 0x1f, 0x04, 0x0b, 0x82, 0x0d, 0xe2, 0xf6, 0xd1, 0x68, 0x90, 0x0c, 0xaa, 0x0e, 0x42, 0x0e, 0xff, 0x60, 0x98, 0x85, 0x1f, 0x8f, 0x37, 0x18, 0xff, 0x92, 0x07, 0x81, 0x89, 0x3d, 0xfc, 0x82, 0x68, 0x41, 0xf9, 0x20, 0x58, 0x10, 0x6c, 0x10, 0x75, 0xdc, 0x38, 0x83, 0x64, 0x50, 0x75, 0xc8, 0x69, 0x1c, 0x1a, 0xb5, 0x1c, 0x8f, 0x87, 0x5f, 0x10, 0x2d, 0xb8, 0x7e, 0x10, 0xa1, 0x83, 0x37, 0xc7, 0xe3, 0x83, 0x51, 0xca, 0x79, 0x3c, 0x5e, 0xf8, 0x05, 0xd1, 0x82, 0xe9, 0x20, 0xd8, 0x60, 0x19, 0x61, 0xc9, 0xa1, 0x29, 0xd0, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x62, 0x6b, 0xb6, 0x67, 0x90, 0x0c, 0x84, 0xef, 0x90, 0x9c, 0x1b, 0x7e, 0x83, 0xf7, 0x30, 0xd8, 0x0c, 0xbf, 0xc1, 0x60, 0x07, 0x38, 0x28, 0x55, 0xf8, 0x06, 0xc1, 0xc2, 0x2f, 0x08, 0x36, 0x88, 0xfd, 0x3d, 0x9b, 0x83, 0xf1, 0x61, 0x74, 0x7c, 0x1b, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0x82, 0x60, 0x83, 0xc8, 0xc5, 0x02, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x1c, 0x8c, 0xb1, 0xa7, 0xe3, 0xd0, 0x0a, 0x82, 0x0d, 0xde, 0x12, 0x0a, 0x70, 0x30, 0xcc, 0xc2, 0x07, 0xd1, 0xc2, 0x1f, 0x52, 0x07, 0x07, 0x81, 0x89, 0x3d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0xca, 0x12, 0x99, 0xe1, 0x37, 0x68, 0xc8, 0xe3, 0x69, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0xc4, 0x07, 0xef, 0x87, 0x88, 0x38, 0x9e, 0x1f, 0x8f, 0x8f, 0xc7, 0xc7, 0xe3, 0xe3, 0xf1, 0x82, 0x60, 0x71, 0x71, 0x06, 0x7c, 0x4b, 0x98, 0x83, 0x7b, 0x80, 0x80, 0x25, 0xcc, 0xc1, 0x3d, 0x40, 0xa0, 0x1b, 0x95, 0x90, 0x19, 0x70, 0x33, 0x88, 0xdb, 0x1e, 0xf0, 0x1f, 0xe9, 0xd5, 0xe0, 0x01, 0x82, 0x9a, 0xd2, 0xb1, 0xf4, 0x00, 0xc1, 0x68, 0x25, 0x99, 0x67, 0x40, 0x96, 0x41, 0xdc, 0xf6, 0x80, 0x4f, 0x8a, 0xcb, 0x9d, 0x0f, 0x10, 0x78, 0xa4, 0x57, 0x83, 0x07, 0x08, 0x10, 0xb3, 0xa5, 0x2f, 0x03, 0xf2, 0x0a, 0x93, 0x6d, 0x06, 0xfc, 0x5e, 0xbe, 0x58, 0x7f, 0x80, 0xe0, 0xa0, 0x05, 0xf7, 0x3c, 0x40, 0x10, 0xd9, 0xf1, 0x0b, 0x19, 0xb0, 0xc9, 0x20, 0x6e, 0x7b, 0xc0, 0x97, 0x07, 0x81, 0x55, 0x07, 0x08, 0x90, 0xe2, 0x72, 0xe7, 0x03, 0x04, 0xde, 0x41, 0xbe, 0x84, 0x01, 0xbb, 0x8f, 0x5a, 0x5b, 0x07, 0xfc, 0x75, 0xf2, 0xee, 0x76, 0x80, 0x20, 0xaa, 0x96, 0x9a, 0x3e, 0x40, 0x70, 0x5c, 0x38, 0x3d, 0x18, 0xb0, 0xad, 0x30, 0xd9, 0x66, 0xc0, 0x07, 0x46, 0x5d, 0x23, 0x07, 0x08, 0xf4, 0xf2, 0xc5, 0xfa, 0x03, 0x04, 0xec, 0xc9, 0x65, 0x8a, 0x01, 0xfb, 0x89, 0x2b, 0x80, 0x06, 0xfc, 0x6c, 0x36, 0x83, 0x71, 0x80, 0x60, 0xac, 0xe7, 0x41, 0x3f, 0x40, 0x50, 0xdf, 0x80, 0xd0, 0x18, 0xd0, 0x91, 0x41, 0xdc, 0xf6, 0x80, 0xef, 0x05, 0x91, 0xc6, 0x0c, 0x10, 0x90, 0x07, 0x81, 0x55, 0x07, 0x08, 0xe4, 0xe2, 0xce, 0x44, 0x03, 0x7a, 0x34, 0xf9, 0x00, 0x1f, 0xf0, 0x8f, 0xa8, 0x09, 0x96, 0x01, 0x82, 0xfe, 0xc2, 0x06, 0xe9, 0x00, 0xc1, 0x5a, 0xad, 0x42, 0x69, 0x40, 0xd7, 0x47, 0xad, 0xad, 0x03, 0x3e, 0x1b, 0xa6, 0xac, 0x30, 0x40, 0x60, 0x9d, 0xbc, 0xbb, 0x1d, 0x20, 0x00, 0xca, 0xe7, 0x65, 0x0d, 0xe8, 0xe3, 0x6c, 0xd8, 0x72, 0xc0, 0xaf, 0xe3, 0xfa, 0x2e, 0x06, 0x08, 0x9e, 0x1b, 0xac, 0xb9, 0x03, 0x04, 0x59, 0x3d, 0xd1, 0xab, 0x01, 0x9d, 0x15, 0x26, 0xdb, 0x0c, 0xf8, 0x3a, 0x00, 0xde, 0xd1, 0x00, 0x01, 0x60, 0xd4, 0x35, 0x72, 0x80, 0xc0, 0x22, 0x0c, 0xfa, 0x37, 0xa0, 0xd7, 0xd2, 0xd3, 0x86, 0x01, 0x7f, 0x84, 0x78, 0xd6, 0x1a, 0x20, 0xc8, 0xac, 0xd4, 0x7d, 0x0e, 0x10, 0x3c, 0x94, 0xf6, 0xe2, 0x06, 0x74, 0x4f, 0x5c, 0x01, 0x34, 0xe0, 0x23, 0x20, 0x16, 0x7c, 0x03, 0x04, 0xb2, 0xd9, 0x0c, 0xc6, 0x01, 0x02, 0x92, 0xf4, 0x85, 0xd8, 0x80, 0x7e, 0xc8, 0xf7, 0xf6, 0x06, 0xfc, 0x08, 0x26, 0x34, 0x6c, 0x80, 0x60, 0xb5, 0x23, 0x2c, 0x38, 0x40, 0xd0, 0xd3, 0x62, 0x66, 0x1b, 0xf0, 0x21, 0x83, 0xb8, 0xed, 0x01, 0xd3, 0x20, 0x6e, 0x7b, 0x80, 0x80, 0x17, 0x44, 0x1a, 0x33, 0x40, 0xa0, 0x02, 0x51, 0xfd, 0x1e, 0xf0, 0x13, 0x0b, 0x63, 0xe3, 0x01, 0xf7, 0xa3, 0xd6, 0xd6, 0x01, 0x82, 0x52, 0xf2, 0xdf, 0xcf, 0x00, 0xc1, 0x0c, 0x35, 0x2e, 0x7a, 0xc0, 0x17, 0x4d, 0x3e, 0xc0, 0x07, 0x64, 0x9a, 0x7c, 0x80, 0x0f, 0x10, 0x38, 0xa2, 0x26, 0x58, 0x06, 0x08, 0x30, 0x30, 0x1d, 0xc2, 0x03, 0xfe, 0x6e, 0x83, 0xda, 0x3f, 0x20, 0xb7, 0xf4, 0xb4, 0x61, 0x80, 0xe0, 0x92, 0x8d, 0x2c, 0x32, 0x40, 0x10, 0xc0, 0x35, 0x66, 0x1e, 0xf0, 0xe9, 0xa3, 0xd6, 0xd6, 0x01, 0x5b, 0x2c, 0x8c, 0x8d, 0x07, 0x08, 0xb0, 0x61, 0xca, 0x0a, 0x03, 0x04, 0x4e, 0x00, 0x62, 0xf2, 0x01, 0xbf, 0xbd, 0xd2, 0x80, 0x1d, 0xb0, 0xf7, 0x4a, 0x03, 0x76, 0x80, 0x20, 0x98, 0x1e, 0x41, 0x30, 0x40, 0x70, 0x45, 0xfc, 0x50, 0x1f, 0xf0, 0x8d, 0xb3, 0x61, 0xcb, 0x01, 0x1b, 0x2a, 0xfd, 0x56, 0x06, 0x08, 0xd4, 0x71, 0x7d, 0x17, 0x03, 0x04, 0x7c, 0x88, 0xb9, 0xfc, 0x01, 0xff, 0xbb, 0xa3, 0x5b, 0x1c, 0xb0, 0x93, 0x5a, 0xb4, 0x6b, 0x80, 0x60, 0x9e, 0x6f, 0x9a, 0x31, 0x40, 0x50, 0xc6, 0x44, 0xbd, 0x1f, 0xf0, 0xb1, 0xc2, 0x64, 0x9b, 0x01, 0xdd, 0x39, 0xaa, 0x56, 0x0f, 0x10, 0xd0, 0x01, 0xf0, 0x8e, 0x06, 0x08, 0xc4, 0x61, 0x76, 0xa9, 0x03, 0x7e, 0x50, 0xe9, 0xb7, 0x32, 0xa0, 0x5f, 0x57, 0x62, 0xf7, 0x01, 0x82, 0x36, 0xe2, 0x68, 0xd2, 0x00, 0xc1, 0x3e, 0xbd, 0xf5, 0x74, 0xc0, 0x57, 0x4b, 0x4f, 0x1b, 0x06, 0x74, 0xfe, 0x6c, 0x37, 0x3a, 0x40, 0x60, 0x84, 0x78, 0xd6, 0x1a, 0x20, 0x80, 0xc6, 0x05, 0xd3, 0x0e, 0xf8, 0x73, 0x2d, 0x04, 0xc4, 0x80, 0x5e, 0xde, 0x31, 0x30, 0x07, 0x08, 0xbe, 0x98, 0x14, 0x54, 0x03, 0x04, 0xc9, 0x7c, 0x0d, 0xdd, 0x01, 0x9f, 0x27, 0xae, 0x00, 0x1a, 0xd0, 0x55, 0x83, 0x04, 0xce, 0x00, 0x01, 0x04, 0xc4, 0x82, 0x6f, 0x80, 0xc0, 0x10, 0x84, 0x21, 0x39, 0xe0, 0x97, 0xd4, 0xa2, 0x5d, 0x03, 0xfa, 0x6c, 0xe1, 0x1b, 0x18, 0x20, 0x48, 0xa0, 0x36, 0xcb, 0x0d, 0x10, 0x7c, 0x92, 0x87, 0x39, 0x07, 0x7c, 0x87, 0x7c, 0x6f, 0x6f, 0x40, 0xc7, 0x4c, 0xce, 0x4e, 0x03, 0x04, 0x22, 0x98, 0xd0, 0xb0, 0x01, 0x02, 0x5a, 0xd4, 0xeb, 0xe3, 0x80, 0x7f, 0xd1, 0x33, 0x9b, 0x0d, 0xe8, 0x81, 0x0d, 0xb4, 0x6e, 0x80, 0x60, 0x87, 0xab, 0xf7, 0x36, 0x40, 0xd0, 0xca, 0xa6, 0x0b, 0x1c, 0x20, 0x00, 0x19, 0xc4, 0x6d, 0x0f, 0x10, 0xd8, 0xce, 0xfe, 0x6a, 0x06, 0x54, 0x06, 0x71, 0xdb, 0x03, 0xbe, 0xa6, 0x74, 0x2c, 0x3d, 0x40, 0x90, 0x73, 0x54, 0xad, 0x1e, 0x20, 0x78, 0xbd, 0x93, 0xee, 0x0c, 0xb8, 0x15, 0x26, 0xdb, 0x0c, 0xf8, 0x83, 0x16, 0xdc, 0xf3, 0x00, 0x81, 0xc4, 0xc2, 0xd8, 0x78, 0x80, 0x80, 0x70, 0x87, 0x8c, 0x32, 0x20, 0xfb, 0xa8, 0xb5, 0x75, 0xc0, 0x47, 0xd5, 0x52, 0xd3, 0x07, 0x08, 0x16, 0x9e, 0x1d, 0xc8, 0x03, 0x04, 0x9d, 0xff, 0x09, 0x93, 0x01, 0xf9, 0xc4, 0x15, 0x40, 0x03, 0x7e, 0xac, 0xe7, 0x41, 0x3f, 0x40, 0x40, 0x34, 0xf9, 0x00, 0x1f, 0x20, 0x90, 0x1e, 0x45, 0x38, 0x0c, 0xd8, 0x68, 0xf2, 0x01, 0x3e, 0xe0, 0xfb, 0x0b, 0x1b, 0xa4, 0x03, 0x04, 0x5d, 0x57, 0x62, 0xf7, 0x01, 0x82, 0xe5, 0xb3, 0x32, 0xc0, 0x80, 0x1d, 0x67, 0xc3, 0x96, 0x03, 0xfe, 0xb9, 0xc1, 0x9a, 0x3b, 0x40, 0x60, 0xb7, 0x41, 0xed, 0x1f, 0x20, 0x00, 0x5f, 0x99, 0x4e, 0x0c, 0xd8, 0x5a, 0x7a, 0xda, 0x30, 0xe0, 0x33, 0x2b, 0x75, 0x9f, 0x03, 0x04, 0x6f, 0xdf, 0xb9, 0xf9, 0x01, 0x82, 0xfc, 0x77, 0x5f, 0xc7, 0x80, 0x3d, 0xe4, 0x7b, 0x7b, 0x03, 0x7e, 0xb5, 0x23, 0x2c, 0x38, 0x40, 0x80, 0x3e, 0x6a, 0x6d, 0x1d, 0x20, 0xf0, 0x9b, 0x8c, 0x0e, 0x0d, 0xe8, 0xc4, 0xc2, 0xd8, 0x78, 0xc0, 0x97, 0x92, 0xff, 0x7e, 0x06, 0x08, 0xe2, 0xcf, 0x76, 0xa3, 0x03, 0x04, 0x67, 0x57, 0xbc, 0xa6, 0x01, 0xbd, 0xdb, 0xa0, 0xf6, 0x0f, 0xf8, 0x4b, 0x36, 0xb2, 0xc8, 0x00, 0x81, 0xf6, 0x4a, 0x03, 0x76, 0x80, 0x80, 0x69, 0x43, 0xe1, 0x35, 0xa0, 0xdb, 0x2b, 0x0d, 0xd8, 0x01, 0x1f, 0x4c, 0x8f, 0x20, 0x18, 0x20, 0x18, 0x7e, 0x07, 0xfb, 0x0e, 0x10, 0x54, 0x7d, 0x9f, 0xa1, 0x06, 0xf4, 0x77, 0x47, 0xb7, 0x38, 0xe0, 0xe7, 0xf9, 0xa6, 0x19, 0x03, 0x04, 0x8c, 0xb3, 0x61, 0xcb, 0x01, 0x02, 0x8d, 0x41, 0x33, 0xde, 0x80, 0x0e, 0x2a, 0xfd, 0x56, 0x06, 0x7c, 0x1b, 0x71, 0x34, 0x69, 0x80, 0xa0, 0xf2, 0x8e, 0x81, 0x39, 0x40, 0x30, 0x70, 0xb4, 0xb0, 0x1b, 0xd0, 0x73, 0x2d, 0x04, 0xc4, 0x80, 0xff, 0x62, 0x52, 0x50, 0x0d, 0x10, 0xf8, 0xee, 0xe8, 0x16, 0x07, 0x08, 0x50, 0x16, 0x7a, 0x65, 0x03, 0xba, 0xa4, 0x16, 0xed, 0x1a, 0xf0, 0x09, 0xd4, 0x66, 0xb9, 0x01, 0x82, 0xd3, 0xff, 0x6b, 0xe1, 0x00, 0x41, 0xcc, 0x33, 0x74, 0x6d, 0x40, 0x5f, 0xf4, 0xcc, 0x66, 0x03, 0x7e, 0x87, 0xab, 0xf7, 0x36, 0x40, 0x00, 0x2b, 0x4c, 0xb6, 0x19, 0x20, 0x30, 0x91, 0x1f, 0x63, 0x0f, 0xf8, 0x9c, 0xa3, 0x6a, 0xf5, 0x80, 0xaa, 0x30, 0xd9, 0x66, 0x80, 0x20, 0xd5, 0x20, 0x81, 0x33, 0x40, 0xf0, 0x63, 0xe3, 0xb0, 0x1e, 0xf0, 0x0b, 0xcf, 0x0e, 0xe4, 0x01, 0x77, 0xe2, 0x0a, 0xa0, 0x01, 0x02, 0x41, 0xa5, 0xdf, 0xca, 0x00, 0x01, 0x85, 0x1e, 0xae, 0x78, 0xc0, 0x77, 0x5d, 0x89, 0xdd, 0x07, 0x64, 0x9c, 0x0d, 0x5b, 0x0e, 0x10, 0x6c, 0x3a, 0x4a, 0x4b, 0x06, 0x08, 0x1a, 0x7c, 0xab, 0xcb, 0x03, 0xfe, 0xed, 0x3b, 0x37, 0x3f, 0x20, 0x87, 0x7c, 0x6f, 0x6f, 0x80, 0x80, 0x5a, 0x7a, 0xda, 0x30, 0x40, 0x20, 0x24, 0x4e, 0x1d, 0x1f, 0xf0, 0xf1, 0x67, 0xbb, 0xd1, 0x01, 0xdb, 0x6d, 0x50, 0xfb, 0x07, 0x08, 0x9a, 0x2d, 0x7c, 0x03, 0x03, 0x04, 0x5b, 0x26, 0xb9, 0xf6, 0x01, 0x3f, 0xfc, 0x0e, 0xf6, 0x1d, 0xb0, 0xef, 0x8e, 0x6e, 0x71, 0x80, 0xc0, 0x5c, 0x0b, 0x01, 0x31, 0x40, 0x00, 0xa7, 0xf6, 0xf0, 0x1f, 0xf0, 0x95, 0x77, 0x0c, 0xcc, 0x01, 0x9b, 0x6b, 0x21, 0x20, 0x06, 0x08, 0xfe, 0x3d, 0xcb, 0x1e, 0x03, 0x04, 0x69, 0xae, 0x62, 0xf8, 0x01, 0x7f, 0xfa, 0x7f, 0x2d, 0x1c, 0xb0, 0x8b, 0x9e, 0xd9, 0x6c, 0x80, 0x00, 0x4f, 0x5c, 0x01, 0x34, 0x40, 0xe0, 0x2e, 0xdd, 0x70, 0x1d, 0xf0, 0xa9, 0x06, 0x09, 0x9c, 0x01, 0x5d, 0x78, 0x76, 0x20, 0x0f, 0x10, 0x84, 0x99, 0x9c, 0x9d, 0x06, 0x08, 0xee, 0x2d, 0xc0, 0xa0, 0x03, 0x7e, 0xd3, 0x51, 0x5a, 0x32, 0xa0, 0x6f, 0xdf, 0xb9, 0xf9, 0x01, 0x02, 0x25, 0xb5, 0x68, 0xd7, 0x00, 0x01, 0xb7, 0x96, 0x75, 0x76, 0xc0, 0x37, 0x5b, 0xf8, 0x06, 0x06, 0x74, 0xf8, 0x1d, 0xec, 0x3b, 0x40, 0x30, 0xe5, 0xca, 0x9b, 0x1a, 0x20, 0x28, 0xf6, 0xdc, 0xf5, 0x0e, 0xf8, 0x7f, 0xcf, 0xb2, 0xc7, 0x80, 0x9e, 0xfe, 0x5f, 0x0b, 0x07, 0x08, 0x38, 0xe4, 0x7b, 0x7b, 0x03, 0x04, 0x8a, 0xc2, 0xba, 0xca, 0x01, 0x1f, 0x66, 0x72, 0x76, 0x1a, 0xd0, 0x4d, 0x47, 0x69, 0xc9, 0x00, 0x41, 0x81, 0x0d, 0xb4, 0x6e, 0x80, 0x60, 0xd2, 0xe0, 0xba, 0x39, 0xe0, 0xa7, 0x5c, 0x79, 0x53, 0x03, 0xfa, 0xef, 0x59, 0xf6, 0x18, 0x20, 0x70, 0xd1, 0x33, 0x9b, 0x0d, 0x10, 0xe0, 0x2a, 0x85, 0x11, 0x07, 0x7c, 0x81, 0x0d, 0xb4, 0x6e, 0x40, 0xa7, 0x5c, 0x79, 0x53, 0x03, 0x04, 0x37, 0xbe, 0x0b, 0xb4, 0x01, 0x82, 0x50, 0x47, 0x86, 0xe1, 0x80, 0xbf, 0xf1, 0x5d, 0xa0, 0x0d, 0xe8, 0x8d, 0xef, 0x02, 0xad, 0xe1, 0x17, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0xc3, 0x6e, 0x68, 0x1c, 0xb9, 0x21, 0x86, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x8a, 0x72, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x77, 0x8e, 0x7e, 0xb0, 0x74, 0xe1, 0x67, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0xb2, 0x41, 0x39, 0xab, 0x73, 0x30, 0x1c, 0xa5, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0xb0, 0xb6, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x1b, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xd5, 0x17, 0xc4, 0xc1, 0xd2, 0x85, 0x9f, 0xe3, 0xd0, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0x2d, 0x98, 0xf4, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0xbf, 0x43, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xbe, 0x91, 0x8b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x8b, 0x07, 0x49, 0x7b, 0x08, 0x8b, 0x83, 0x60, 0x83, 0xc8, 0x79, 0xe6, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xe8, 0x7d, 0x07, 0x67, 0x2f, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0x7b, 0x46, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x22, 0xe7, 0x99, 0xe3, 0xa0, 0x5c, 0xa2, 0x39, 0x48, 0x37, 0x70, 0x38, 0x0e, 0x1d, 0x1c, 0x6f, 0xa0, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0xd0, 0x9a, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x72, 0xa0, 0xe8, 0x90, 0xaf, 0x3d, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xd0, 0x8c, 0xc9, 0x8d, 0xcd, 0xc8, 0x43, 0x6a, 0xe9, 0x78, 0x3c, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xbc, 0x31, 0xb9, 0xf1, 0x60, 0x34, 0x0b, 0x1c, 0x8f, 0x57, 0x5c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xc4, 0x5e, 0x3a, 0xd1, 0x82, 0x60, 0x83, 0x56, 0x6d, 0x93, 0x0e, 0x62, 0x73, 0x9d, 0xe8, 0x10, 0xc3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0x5d, 0x10, 0x2c, 0x08, 0x36, 0x68, 0x71, 0x25, 0xea, 0x20, 0x12, 0x88, 0x8a, 0x0e, 0xa2, 0x8f, 0xa8, 0x68, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0xad, 0xda, 0x26, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0xb8, 0x12, 0x75, 0x10, 0x45, 0x48, 0x45, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x1f, 0xc4, 0x2f, 0xaa, 0xcc, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x8b, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x83, 0x95, 0xc5, 0x63, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x78, 0x5f, 0x91, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x07, 0xa9, 0xa7, 0x3c, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0xdd, 0xb0, 0xbe, 0xb7, 0xe1, 0x14, 0x1b, 0x76, 0xc3, 0xae, 0xc1, 0x06, 0x43, 0xb3, 0x6b, 0x83, 0xa1, 0xd9, 0x75, 0x10, 0xc5, 0xdf, 0x34, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x10, 0xc3, 0x61, 0x37, 0xe4, 0xb1, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0xdd, 0xb0, 0x6b, 0xb0, 0xe1, 0x68, 0x3f, 0x88, 0x12, 0x80, 0x99, 0x43, 0x3a, 0xf7, 0x78, 0x7c, 0x50, 0x32, 0x34, 0x1d, 0x8f, 0x57, 0x5c, 0xf8, 0x05, 0xc1, 0xe2, 0x02, 0x7e, 0x18, 0xdc, 0xdb, 0x1c, 0x7a, 0x0e, 0xa7, 0xd8, 0xe2, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x64, 0x83, 0xb5, 0x8a, 0x23, 0x07, 0xc3, 0xd0, 0x67, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x7a, 0x8d, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0x40, 0x6b, 0x69, 0xf1, 0xc7, 0xa1, 0x83, 0x16, 0x9a, 0xf3, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x3f, 0x68, 0xcd, 0x55, 0xe5, 0x60, 0x2d, 0x4c, 0xc9, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x34, 0xa0, 0x9c, 0x3f, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x41, 0x0c, 0xf5, 0x1c, 0x1d, 0xb4, 0xd0, 0x9c, 0x7f, 0xb0, 0x16, 0xa6, 0x64, 0x10, 0x2c, 0x48, 0x36, 0x58, 0xac, 0x67, 0x72, 0x30, 0xfc, 0x63, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x41, 0xb0, 0x41, 0x2c, 0x9b, 0xd5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x06, 0x3a, 0x4f, 0x48, 0x4b, 0x3b, 0x0e, 0x0d, 0x82, 0x0d, 0x62, 0xd9, 0xac, 0xe6, 0x20, 0x22, 0x7d, 0x8e, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x02, 0xbd, 0xeb, 0x60, 0xf8, 0xc7, 0x1e, 0x0c, 0x6c, 0xd1, 0xe3, 0xd0, 0x0a, 0x82, 0x05, 0xc9, 0x40, 0xe9, 0x3a, 0x18, 0x86, 0x3e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x06, 0x7e, 0xc8, 0xf0, 0x1b, 0xcf, 0x17, 0x07, 0xd9, 0x86, 0xb8, 0x0c, 0x82, 0x0d, 0x22, 0xd1, 0xe8, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x07, 0xf1, 0x47, 0x56, 0x33, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xb6, 0x85, 0x8e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x48, 0x06, 0x0c, 0x57, 0xae, 0x83, 0xe1, 0x1f, 0x3b, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xb6, 0x85, 0x8e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x05, 0xc1, 0x06, 0x91, 0x68, 0x74, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x41, 0xd3, 0xa3, 0xfe, 0xc7, 0xa1, 0x8d, 0xc7, 0xc7, 0xe3, 0x83, 0x67, 0x71, 0x24, 0x1c, 0x87, 0x0e, 0x9a, 0xa9, 0xcf, 0x3f, 0x88, 0xc5, 0xa6, 0xa3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x22, 0xd1, 0xe8, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0xb0, 0x5c, 0x17, 0x66, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x58, 0x6c, 0x3a, 0x1a, 0x04, 0x1b, 0x04, 0x59, 0xfc, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xd9, 0x8a, 0x41, 0x32, 0x50, 0xd4, 0x0e, 0x86, 0x7f, 0xec, 0xc1, 0x4a, 0x7c, 0x91, 0xe3, 0xf1, 0x71, 0xe8, 0x38, 0x74, 0xf0, 0x7e, 0x67, 0x84, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xb1, 0x2d, 0x74, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0x32, 0xa0, 0xd4, 0xe5, 0x3a, 0x18, 0xfe, 0xb1, 0x07, 0xb1, 0xe1, 0x74, 0x74, 0x10, 0xb1, 0x58, 0x47, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0xa2, 0xd1, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x44, 0xe5, 0xd4, 0xd1, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0x11, 0x8b, 0x75, 0x74, 0x10, 0xa9, 0x54, 0x47, 0xc7, 0xa1, 0xe3, 0xd0, 0xc1, 0xfb, 0x9d, 0x11, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0xf9, 0x81, 0xf8, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x40, 0xe2, 0x7f, 0xd7, 0xc1, 0xf0, 0x8f, 0x3d, 0x88, 0xf5, 0xa7, 0xa3, 0x83, 0xe7, 0x2e, 0x23, 0x1c, 0x34, 0x53, 0x9f, 0x7f, 0x1c, 0x3a, 0x1e, 0x1f, 0x87, 0x56, 0x10, 0x6c, 0xd0, 0x0e, 0x26, 0xfa, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x67, 0x90, 0x0b, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x28, 0xe4, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xc1, 0xf9, 0x27, 0x7c, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0x70, 0xfe, 0xef, 0x3a, 0x18, 0x86, 0x3e, 0x07, 0xeb, 0x9f, 0x46, 0x0e, 0xd6, 0xc2, 0x94, 0x1c, 0x87, 0x8e, 0x43, 0x0b, 0x82, 0x0d, 0x5e, 0xdf, 0x8b, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x0b, 0x82, 0x0d, 0xd6, 0x6b, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x06, 0xcd, 0xf3, 0x8e, 0x43, 0x07, 0x0f, 0x20, 0x0d, 0x38, 0x58, 0xa2, 0x89, 0x76, 0x1c, 0x1a, 0x04, 0x1b, 0xbc, 0xbe, 0x17, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x17, 0x04, 0x1b, 0xac, 0xd7, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x0c, 0x78, 0x78, 0x7e, 0xf0, 0xda, 0xd8, 0xe3, 0xd0, 0x20, 0xd8, 0x60, 0xbd, 0x46, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x63, 0xd0, 0x3f, 0xfe, 0x38, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xc2, 0x82, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0x40, 0x39, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x78, 0x53, 0x3b, 0x3a, 0x68, 0xa1, 0x39, 0xff, 0x38, 0x74, 0x1c, 0x5a, 0x10, 0x6c, 0xd0, 0x0e, 0x26, 0xfa, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x67, 0x90, 0x0b, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0xfa, 0x5e, 0x84, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x5f, 0x10, 0x6c, 0xb0, 0x5e, 0xa3, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x31, 0xc0, 0x83, 0x27, 0x64, 0x6b, 0x88, 0x28, 0x88, 0x2a, 0x68, 0x3b, 0x0e, 0x0d, 0x82, 0x0d, 0xd6, 0x6b, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x06, 0x5a, 0x57, 0x97, 0x3f, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xb0, 0xa0, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x48, 0x06, 0x84, 0x7b, 0xd7, 0xc1, 0x30, 0xf4, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0xfc, 0x20, 0x4e, 0xe5, 0x8e, 0x0e, 0x5a, 0x68, 0xce, 0x3f, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x9e, 0x6c, 0x3b, 0x30, 0x08, 0x36, 0x38, 0x9b, 0xf4, 0x1e, 0xac, 0x85, 0x29, 0x19, 0x04, 0x0b, 0x92, 0x81, 0xd2, 0x75, 0x30, 0xfc, 0x63, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xa0, 0xa0, 0x16, 0x1b, 0x7e, 0xe3, 0xf9, 0xe2, 0x20, 0xdb, 0x10, 0x97, 0x41, 0xb0, 0x41, 0xcb, 0x08, 0xfa, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0x28, 0xa1, 0x7f, 0x68, 0xd4, 0x32, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x5e, 0xee, 0x6b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0xc3, 0x6f, 0x3c, 0x3f, 0x38, 0xd0, 0x37, 0x1f, 0x87, 0x0e, 0x5a, 0xcd, 0xd0, 0x3f, 0x88, 0x2c, 0xbe, 0xa3, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0x77, 0x89, 0x44, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xe9, 0xae, 0x83, 0xe1, 0x28, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x73, 0x64, 0xef, 0xe2, 0xb0, 0x0b, 0xb7, 0x41, 0x50, 0x7a, 0x1f, 0x8c, 0x9f, 0xae, 0x05, 0xc1, 0x06, 0x91, 0xa6, 0x00, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x18, 0x19, 0x18, 0xc7, 0xa1, 0x43, 0x0c, 0x8f, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0xa6, 0xb6, 0x49, 0x06, 0xc1, 0x06, 0x89, 0x5c, 0x0a, 0x07, 0xad, 0x66, 0xe8, 0x0f, 0x82, 0x0d, 0x52, 0x16, 0x14, 0x0e, 0x5a, 0xcd, 0xd0, 0x3f, 0x0e, 0x1d, 0xb4, 0xd0, 0xa5, 0x7f, 0x1c, 0x3a, 0x1e, 0x1f, 0x87, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x85, 0x05, 0x25, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0xc2, 0x82, 0x92, 0x83, 0xc3, 0x46, 0xef, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x0d, 0xda, 0xe6, 0xbf, 0x1f, 0x04, 0x1b, 0xac, 0x7d, 0x4a, 0x3b, 0x58, 0x0b, 0x53, 0x32, 0x08, 0x36, 0x58, 0x11, 0x25, 0x75, 0xb0, 0x16, 0xa6, 0xe4, 0x60, 0xe9, 0x48, 0xc9, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x08, 0x4c, 0x3c, 0x3a, 0x68, 0x4f, 0x3b, 0x7f, 0x41, 0xb0, 0xc1, 0xeb, 0x7b, 0x11, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x41, 0x32, 0xf0, 0x3b, 0xd7, 0xc1, 0x30, 0xf4, 0x39, 0x78, 0x00, 0x69, 0xc0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xc1, 0xf9, 0x89, 0x76, 0x10, 0x6c, 0xb0, 0x44, 0x13, 0xed, 0xa0, 0x3d, 0x3b, 0xfd, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0xd7, 0xf7, 0x22, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x06, 0x11, 0xeb, 0x78, 0x34, 0x08, 0x36, 0x58, 0xaf, 0x51, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x18, 0xf4, 0x8b, 0x3f, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xd3, 0xae, 0x83, 0x61, 0xe8, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xb0, 0xa0, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x10, 0xf3, 0x3f, 0x47, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0xfe, 0x1e, 0x8f, 0x0e, 0xda, 0xb3, 0xd3, 0x3f, 0x0e, 0x2d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0x73, 0x68, 0x08, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x36, 0x68, 0x40, 0x39, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x90, 0xe4, 0x3a, 0x18, 0x86, 0x3e, 0x07, 0x2d, 0x34, 0xe7, 0x0f, 0x82, 0x0d, 0x5e, 0x39, 0x1a, 0x70, 0xd0, 0x42, 0x73, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0x11, 0xeb, 0x78, 0x74, 0xd0, 0x42, 0x73, 0xfe, 0xc1, 0x5a, 0x98, 0x92, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x76, 0x30, 0xd1, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xa0, 0xe5, 0x4f, 0xf4, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0xc2, 0x82, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x90, 0x0c, 0x38, 0xee, 0x53, 0x1d, 0x0c, 0x43, 0x9f, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x40, 0x53, 0xae, 0x83, 0x61, 0xe8, 0x73, 0xb0, 0x16, 0xa6, 0x64, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb2, 0xc1, 0xa2, 0x12, 0x92, 0x83, 0x61, 0xe8, 0x73, 0xb0, 0x16, 0xa6, 0xe4, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x3e, 0x88, 0xf4, 0xe3, 0x9a, 0x83, 0x68, 0x11, 0x3d, 0x3a, 0x68, 0xcf, 0x4e, 0xff, 0x38, 0x34, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0x32, 0x60, 0xed, 0x2e, 0xd7, 0xc1, 0xf0, 0x8f, 0x1d, 0x04, 0x1b, 0x52, 0x07, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x71, 0xf0, 0x00, 0x17, 0x92, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0x83, 0x66, 0xea, 0xf3, 0x0f, 0xde, 0xef, 0x8c, 0xb0, 0x20, 0xd8, 0x20, 0xb2, 0xa9, 0x6b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x07, 0x05, 0x83, 0xe4, 0xa0, 0x79, 0x24, 0xd4, 0xe3, 0xd0, 0x20, 0xd8, 0xe0, 0xf5, 0xbd, 0x08, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x41, 0xc4, 0x68, 0x1e, 0x0d, 0x92, 0x01, 0xe3, 0x95, 0xeb, 0x60, 0x18, 0xfa, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xda, 0xc1, 0x44, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x2e, 0x08, 0x36, 0x88, 0x5b, 0xa4, 0x9b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0xc7, 0xc0, 0xfa, 0xff, 0x87, 0xe3, 0xd0, 0x62, 0x20, 0xbe, 0xff, 0xf6, 0x06, 0xc1, 0x06, 0x43, 0x4e, 0xfa, 0xd0, 0xa8, 0xe5, 0x78, 0x3c, 0xfc, 0xc6, 0xf3, 0xe1, 0x57, 0x10, 0x6c, 0x10, 0x75, 0xc0, 0x35, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xce, 0x35, 0xc5, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0x64, 0x9e, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xe3, 0x41, 0x01, 0x00, 0x75, 0x10, 0xdf, 0xc2, 0x35, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0xea, 0x80, 0x6b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0x76, 0x80, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x5a, 0x32, 0xcf, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xbd, 0xb4, 0x47, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x82, 0x9f, 0xea, 0x60, 0x18, 0xfa, 0x1c, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x36, 0x75, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xe0, 0xf8, 0xe0, 0x58, 0xc7, 0xb7, 0xe3, 0xd0, 0x41, 0x7b, 0xda, 0xf9, 0xc7, 0xa1, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf1, 0x7c, 0x10, 0x6c, 0x48, 0x1d, 0x0c, 0x82, 0x0d, 0x82, 0x2c, 0x7e, 0x71, 0x10, 0x2c, 0xfc, 0x86, 0x6c, 0xc5, 0x20, 0x19, 0x98, 0xb5, 0x83, 0x85, 0xc3, 0x09, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xe6, 0x5c, 0x07, 0x0b, 0x87, 0x13, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0x62, 0x90, 0x0c, 0x04, 0xed, 0x60, 0xe1, 0x70, 0xc2, 0xc1, 0x4a, 0x7c, 0x91, 0xe3, 0xf1, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x05, 0xc9, 0x40, 0xbc, 0x0e, 0x86, 0xa3, 0xf4, 0xc1, 0x58, 0x86, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x71, 0xe0, 0xcf, 0xe8, 0x50, 0xbf, 0xf0, 0x1b, 0xcf, 0xc7, 0x81, 0x67, 0xa3, 0x43, 0xf9, 0xc2, 0x6f, 0x3c, 0x1f, 0x07, 0xbc, 0xb0, 0x36, 0x38, 0xd4, 0x2c, 0xfc, 0xc6, 0xf3, 0x71, 0xc0, 0x8f, 0xab, 0x7b, 0xa3, 0x43, 0xc5, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x0d, 0x82, 0x05, 0xc9, 0x40, 0xba, 0xeb, 0x60, 0xf8, 0xc7, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x49, 0x80, 0x81, 0x41, 0x32, 0x50, 0xfc, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x08, 0x36, 0x68, 0x12, 0x60, 0x60, 0x90, 0x0c, 0x94, 0xab, 0x83, 0x31, 0x18, 0x79, 0x30, 0xcc, 0xc2, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xbc, 0x20, 0x21, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x0f, 0xe2, 0x01, 0xad, 0x66, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x48, 0x06, 0x14, 0xff, 0x5d, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x83, 0x07, 0xc6, 0x7c, 0x0d, 0xbf, 0xf1, 0x7c, 0x90, 0x6c, 0xb0, 0x7a, 0x85, 0xe4, 0x60, 0xf8, 0xc7, 0x1e, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x86, 0x3a, 0xd5, 0xc1, 0xf0, 0x8f, 0x3d, 0x68, 0xa6, 0x3e, 0xff, 0x38, 0x74, 0x1c, 0x3a, 0x58, 0x0b, 0x53, 0x72, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x44, 0x73, 0x7d, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0x66, 0xf8, 0x8d, 0xe7, 0x07, 0x09, 0x9e, 0x08, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0x82, 0xc5, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xb0, 0x1b, 0x76, 0x0d, 0x36, 0xc4, 0x70, 0x10, 0x2c, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x51, 0x28, 0xeb, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x85, 0x4b, 0x02, 0x07, 0xab, 0x38, 0xf9, 0x8f, 0x43, 0xc3, 0x6e, 0x50, 0x54, 0x29, 0x2c, 0xec, 0x86, 0x44, 0xc0, 0xc6, 0xa1, 0x41, 0xb0, 0xc1, 0x23, 0xcf, 0xa7, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x07, 0x1b, 0xac, 0xe1, 0xc0, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x81, 0x1c, 0x07, 0x07, 0xc5, 0x63, 0xca, 0x71, 0x68, 0x10, 0x6c, 0xf0, 0xc8, 0xf3, 0xa9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0x06, 0xc9, 0x96, 0xcc, 0xc3, 0x6f, 0x3c, 0x3f, 0x78, 0x62, 0xdc, 0xc3, 0x71, 0xe8, 0xf8, 0x76, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xd6, 0xf7, 0x36, 0xc4, 0x70, 0x83, 0xe4, 0x9f, 0xe7, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xc1, 0xc7, 0xbc, 0x21, 0x86, 0x83, 0x60, 0x83, 0xb7, 0x23, 0x09, 0x0c, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x14, 0xca, 0x7a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0xe1, 0x92, 0xc0, 0x41, 0x01, 0x01, 0x72, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x76, 0x83, 0x56, 0x57, 0xef, 0x37, 0xc4, 0x70, 0x83, 0xc4, 0x10, 0x99, 0x41, 0xb0, 0x41, 0x14, 0xca, 0x7a, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xde, 0xad, 0x24, 0x70, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x87, 0xdd, 0xb0, 0x82, 0xba, 0x21, 0x86, 0x1b, 0x24, 0x39, 0x47, 0x1f, 0xac, 0x58, 0xd0, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0x6f, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x8f, 0x49, 0xbc, 0x5a, 0x1c, 0x04, 0x1b, 0xac, 0x69, 0x87, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x33, 0x8c, 0x4a, 0x07, 0xe9, 0xcf, 0x44, 0xc3, 0x6f, 0x3c, 0x1f, 0x76, 0xc3, 0xae, 0xc1, 0x06, 0x29, 0xda, 0xd7, 0x1b, 0x2c, 0xac, 0xc7, 0x19, 0x04, 0x1b, 0xac, 0x60, 0x88, 0x38, 0xb4, 0x00, 0x3b, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x2c, 0x0b, 0x83, 0x59, 0x1c, 0x04, 0x1b, 0xac, 0x69, 0x87, 0x18, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xe7, 0xc3, 0x2e, 0xec, 0x86, 0x68, 0x2e, 0xec, 0xc2, 0x2e, 0xec, 0xc2, 0x6e, 0x90, 0xd8, 0xf5, 0xb3, 0xb0, 0x1b, 0x34, 0xef, 0x05, 0xb3, 0xb0, 0x0b, 0xb7, 0xc1, 0xb3, 0xb1, 0xb5, 0x0e, 0x46, 0x66, 0xef, 0x86, 0x18, 0x1e, 0x1c, 0x8f, 0xd7, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0xdf, 0x10, 0xc3, 0x61, 0x37, 0x48, 0xec, 0xfa, 0x59, 0xd8, 0x0d, 0x5a, 0x9c, 0x82, 0x59, 0xd8, 0x0d, 0x06, 0x64, 0xef, 0xc2, 0x2e, 0xdc, 0x06, 0xaf, 0x91, 0xd6, 0x3a, 0x34, 0xe1, 0x3a, 0x68, 0x75, 0xc1, 0xe9, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0x7e, 0x58, 0xdf, 0x3c, 0xa4, 0x73, 0x0f, 0x47, 0xfb, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xe0, 0xe8, 0xe0, 0xf4, 0xe0, 0xf4, 0xe0, 0xf0, 0xe0, 0xf3, 0xa0, 0x7a, 0xd0, 0x77, 0xb0, 0xa2, 0x91, 0xeb, 0xf8, 0x36, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x0e, 0x8e, 0x0e, 0x4e, 0x0f, 0x4e, 0x0f, 0x0e, 0x1f, 0xc4, 0x43, 0xfc, 0xd1, 0xf1, 0x6d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0xd8, 0x0d, 0x9a, 0xf7, 0x82, 0x59, 0x10, 0x6c, 0xb0, 0x82, 0x21, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xdb, 0x43, 0x2f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xc5, 0xa2, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x62, 0x06, 0x61, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xba, 0x70, 0x9b, 0x43, 0xb3, 0xa4, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0xc8, 0xd6, 0xd0, 0x7e, 0xfd, 0xa0, 0xc5, 0x29, 0x98, 0x41, 0xb0, 0x20, 0xd8, 0xe0, 0xd9, 0xb0, 0x4d, 0x87, 0xee, 0x47, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x78, 0x81, 0xac, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x1e, 0xc8, 0x71, 0x70, 0x48, 0xc3, 0x0d, 0xbf, 0xf1, 0x7c, 0xd8, 0x0d, 0xbb, 0x06, 0x1b, 0xa4, 0x68, 0x5f, 0x6f, 0x90, 0xf6, 0x52, 0x7d, 0x50, 0xa8, 0x9c, 0x1d, 0x87, 0x8e, 0x6f, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0xb0, 0x1b, 0x04, 0x89, 0xf7, 0x86, 0x18, 0x6e, 0x90, 0x90, 0x72, 0x3f, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xc1, 0xa1, 0xce, 0xfc, 0x20, 0x19, 0x93, 0xfe, 0x20, 0x5d, 0x70, 0xe8, 0x60, 0xdd, 0x18, 0xd3, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0xbc, 0xf9, 0x22, 0x6b, 0x71, 0xd8, 0x0d, 0x79, 0xac, 0x05, 0xc1, 0x06, 0x6b, 0xda, 0x21, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x30, 0x38, 0x1f, 0x0f, 0x4d, 0x81, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x78, 0x0d, 0x90, 0xdb, 0xf1, 0xf8, 0x38, 0x34, 0xc8, 0x36, 0x68, 0xe9, 0x0c, 0x66, 0x83, 0x14, 0x4d, 0xe6, 0x41, 0xb0, 0xc1, 0x9a, 0x76, 0x88, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x78, 0x61, 0x6c, 0xc9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x23, 0x01, 0xe7, 0xd0, 0x02, 0xec, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x3c, 0x9f, 0x2f, 0x6c, 0x71, 0x10, 0x6c, 0xd0, 0x0c, 0xa3, 0xd2, 0xc1, 0x38, 0x0e, 0x39, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x12, 0x53, 0xc3, 0x2e, 0xdc, 0x06, 0x89, 0x7e, 0xd0, 0x87, 0x68, 0x2e, 0xec, 0x06, 0xef, 0x16, 0xce, 0x59, 0x10, 0x2c, 0x08, 0x36, 0x58, 0x37, 0xec, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x43, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x23, 0x9f, 0xf4, 0xc1, 0x8b, 0x1a, 0x68, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x19, 0x38, 0xb5, 0x0e, 0x86, 0x7f, 0xec, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0x60, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x70, 0x0e, 0x87, 0x3e, 0x38, 0x3f, 0xd1, 0x1e, 0x87, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x88, 0xe1, 0x20, 0x58, 0x90, 0x0c, 0x19, 0x44, 0x1b, 0x3c, 0xb8, 0xca, 0xe2, 0x90, 0x5c, 0x1a, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x21, 0x86, 0x07, 0x0b, 0xfe, 0x83, 0x0e, 0x31, 0x1c, 0x04, 0x1b, 0x14, 0x2a, 0x67, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x37, 0xc4, 0xf0, 0xe0, 0x51, 0x1b, 0x3a, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0xda, 0x54, 0x80, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x79, 0x2a, 0xc1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x18, 0x4a, 0x2c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x86, 0x03, 0xe7, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x06, 0xcf, 0x49, 0xdf, 0x38, 0x9c, 0x62, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x38, 0xec, 0x06, 0x41, 0xd2, 0xbc, 0xa1, 0x63, 0xd8, 0xc2, 0x6f, 0xe8, 0x18, 0x76, 0x30, 0xc4, 0x3b, 0x07, 0xc9, 0x90, 0x83, 0x46, 0xce, 0x4c, 0x8e, 0x6f, 0x0b, 0x82, 0x05, 0xc9, 0xc0, 0xf8, 0x1d, 0x9c, 0x84, 0x8e, 0x0f, 0x06, 0xb6, 0xe8, 0x82, 0x60, 0xe1, 0x17, 0x7e, 0x43, 0xb6, 0xe2, 0x20, 0xe2, 0x14, 0x64, 0x0e, 0x96, 0x1a, 0x95, 0x1d, 0xac, 0xe2, 0xe4, 0x3f, 0x64, 0xed, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x0d, 0xe2, 0x01, 0xad, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xc1, 0xc7, 0xbc, 0x21, 0x86, 0xc3, 0x6e, 0x58, 0x41, 0x5d, 0x10, 0x6c, 0xf0, 0xc2, 0x25, 0x81, 0xc3, 0x46, 0xed, 0x20, 0xd8, 0x60, 0xe1, 0xab, 0xd7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0x44, 0x1f, 0x07, 0xd2, 0xf0, 0x1b, 0xcf, 0x37, 0x48, 0xd1, 0x64, 0x3e, 0x58, 0xb1, 0xa0, 0x73, 0x1c, 0x3a, 0xbe, 0x1d, 0x87, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x82, 0x84, 0x84, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x88, 0xde, 0xd1, 0x8e, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xc1, 0xc2, 0xc5, 0x94, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x20, 0xf8, 0xbb, 0x0e, 0x86, 0x7f, 0xec, 0xc1, 0xda, 0x66, 0xb6, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x17, 0x24, 0x24, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0xf4, 0x8e, 0x76, 0x1c, 0x24, 0x2a, 0x3b, 0x1f, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x08, 0x12, 0xa4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xcb, 0xfd, 0x69, 0x0e, 0xd2, 0xfd, 0xa2, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0xf7, 0x3b, 0x23, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x41, 0x42, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x44, 0xef, 0x68, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xaa, 0xe6, 0x20, 0xe1, 0xf6, 0xe4, 0x38, 0x74, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x22, 0x48, 0x90, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0x96, 0x45, 0x0f, 0xbf, 0xf1, 0xfc, 0x60, 0xf1, 0x0a, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0xf0, 0x7e, 0x67, 0x84, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2f, 0x48, 0x48, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0xe8, 0x1d, 0xed, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x1c, 0xac, 0x96, 0xc4, 0x39, 0x0e, 0x1d, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x08, 0x12, 0xa4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x48, 0xd3, 0xfb, 0x38, 0x48, 0x5a, 0x77, 0x3e, 0x0e, 0x1d, 0x87, 0x0e, 0xde, 0xef, 0x8c, 0x30, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xe0, 0x05, 0x09, 0x09, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x10, 0xbd, 0xa3, 0x1d, 0x07, 0x69, 0xfc, 0xd4, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x22, 0x82, 0x04, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0xc7, 0x70, 0x65, 0xf8, 0x8d, 0xe7, 0x63, 0xb8, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0xbc, 0xdf, 0x19, 0x61, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x0b, 0x12, 0x12, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x20, 0x7a, 0x47, 0x3b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x52, 0x35, 0x07, 0x11, 0x8a, 0x87, 0x73, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x11, 0x24, 0x48, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xd2, 0xa6, 0x9d, 0x87, 0xdf, 0x78, 0x3e, 0x86, 0x23, 0xc7, 0xa1, 0xe3, 0xd0, 0xc1, 0xfb, 0x9d, 0x11, 0x06, 0xc1, 0x82, 0x64, 0xa0, 0x68, 0x1d, 0x0c, 0x47, 0xe9, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xbd, 0xc2, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0xc0, 0xef, 0x3a, 0x18, 0x8e, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x56, 0x4b, 0xe2, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x24, 0xfe, 0x77, 0x1d, 0x0c, 0x47, 0xe9, 0x83, 0x81, 0x2d, 0x7a, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0x60, 0x5d, 0xdb, 0xd8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe8, 0x05, 0x2b, 0x3a, 0x48, 0xf1, 0x73, 0x38, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0xe2, 0x82, 0x60, 0x83, 0x76, 0x30, 0xd1, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x82, 0x60, 0x83, 0x13, 0x9f, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x30, 0x2a, 0x07, 0x67, 0x2f, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x3c, 0x77, 0xc0, 0xe4, 0xd0, 0xa8, 0xe5, 0xd0, 0x78, 0xfe, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0x24, 0x19, 0x7b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x9e, 0xbc, 0x36, 0xfc, 0xc6, 0xf3, 0x83, 0xb8, 0x5c, 0x9b, 0x39, 0x0e, 0x1d, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x58, 0x58, 0x50, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x88, 0x49, 0xdc, 0xa3, 0xe3, 0xd0, 0x71, 0x68, 0xe1, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x88, 0xe6, 0xfa, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x54, 0xcd, 0xf0, 0x1b, 0xcf, 0x0f, 0xce, 0xc1, 0xdf, 0xc7, 0xa1, 0xe3, 0xf1, 0x41, 0x24, 0xa3, 0xe5, 0x0c, 0xbf, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x1b, 0x44, 0xa1, 0xdb, 0xc8, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0xbe, 0x63, 0xcd, 0x41, 0x1a, 0x0e, 0xfc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x73, 0xa8, 0xf1, 0xe1, 0xa9, 0x81, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x97, 0x3d, 0xd0, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0xf9, 0x9e, 0x72, 0xc8, 0xd7, 0x1e, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x41, 0x84, 0xb6, 0xe5, 0x0c, 0xb2, 0x35, 0xa4, 0x81, 0xc6, 0x01, 0x3a, 0xb1, 0xb0, 0xb9, 0xb2, 0x18, 0x7b, 0xb8, 0xba, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x2c, 0x5b, 0x4d, 0x19, 0x04, 0x1b, 0xa4, 0x76, 0x7b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x87, 0xdd, 0x60, 0x6c, 0x72, 0x6e, 0x88, 0xe1, 0x82, 0x60, 0x83, 0x68, 0x64, 0xb6, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x16, 0x7e, 0xe3, 0xf9, 0x82, 0x60, 0x83, 0x28, 0x66, 0xe3, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x98, 0xd8, 0x07, 0xab, 0x25, 0x71, 0x8e, 0x43, 0x87, 0xa3, 0xfd, 0x90, 0xaa, 0x39, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0xc1, 0x7c, 0x10, 0x6c, 0x10, 0x1d, 0x7f, 0x34, 0x07, 0x91, 0x98, 0x85, 0x74, 0x3c, 0x3e, 0xbe, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0x71, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x0c, 0x3d, 0x9f, 0x1c, 0x44, 0x8c, 0x98, 0xc9, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0x1e, 0xc3, 0x40, 0x73, 0x70, 0xcc, 0xee, 0x1d, 0x04, 0x0b, 0x82, 0x0d, 0x22, 0x12, 0x5c, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x81, 0x88, 0xff, 0xd0, 0x02, 0xe8, 0x38, 0x34, 0x08, 0x16, 0x04, 0x1b, 0xbc, 0x82, 0x46, 0xee, 0xa0, 0x69, 0xd3, 0x95, 0x41, 0xb0, 0x20, 0xd8, 0x60, 0x15, 0xe4, 0xc1, 0xc1, 0xeb, 0xbf, 0x22, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x23, 0x6d, 0xf2, 0xc1, 0x9b, 0x4d, 0x28, 0x06, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x30, 0x4a, 0x07, 0x07, 0x8a, 0xe4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x68, 0xaf, 0xd0, 0xff, 0xa0, 0x40, 0xdf, 0x39, 0x0e, 0x0d, 0x82, 0x0d, 0x62, 0xb5, 0xff, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x75, 0x30, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0xd9, 0xa0, 0x9c, 0xd5, 0x39, 0x38, 0x6d, 0x28, 0x1f, 0x1c, 0xb4, 0x7a, 0x8f, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x31, 0xf4, 0x7c, 0x72, 0x30, 0x8e, 0x43, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0x8d, 0xd6, 0x42, 0x1d, 0x12, 0xad, 0x0b, 0x82, 0x0d, 0xda, 0x2d, 0x86, 0x3a, 0x24, 0x5a, 0x87, 0x39, 0x88, 0xfb, 0x34, 0xa4, 0xe3, 0xf1, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0x1e, 0xc3, 0x40, 0x73, 0xb0, 0x74, 0xe1, 0x67, 0x10, 0x2c, 0x08, 0x36, 0x88, 0xde, 0xd1, 0x8e, 0x83, 0x77, 0x64, 0xe5, 0x0c, 0x82, 0x0d, 0x5a, 0xce, 0xc1, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x9c, 0xca, 0xe2, 0x1c, 0x14, 0xd1, 0x3a, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0x79, 0xa4, 0x1c, 0x0c, 0xd2, 0xad, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x30, 0x14, 0x91, 0x16, 0x17, 0x04, 0x8b, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0x08, 0x36, 0x78, 0xbf, 0xf6, 0xcc, 0x21, 0x0d, 0x37, 0x08, 0x16, 0x04, 0x1b, 0x44, 0x6e, 0x17, 0xce, 0x61, 0x8f, 0x77, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0x44, 0xac, 0x24, 0xcd, 0x20, 0x19, 0x88, 0xdb, 0x20, 0x5a, 0xd8, 0x83, 0x82, 0x6c, 0xe7, 0x38, 0x74, 0x30, 0x8e, 0x43, 0x86, 0x5d, 0xd8, 0x0d, 0x4a, 0x82, 0x86, 0x85, 0x5d, 0xd8, 0x0d, 0xda, 0xae, 0x65, 0x39, 0xac, 0x6f, 0x1e, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x41, 0xb6, 0x06, 0x6d, 0x81, 0xac, 0x6c, 0x88, 0xe1, 0x20, 0xd8, 0xa0, 0x2d, 0xab, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xed, 0x6c, 0xf5, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xae, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x02, 0x78, 0x13, 0x0b, 0x9b, 0x2b, 0x6b, 0xb1, 0xa1, 0x69, 0x81, 0x0b, 0x23, 0x23, 0x4b, 0x73, 0x3b, 0x6b, 0x29, 0x93, 0x93, 0x6b, 0x79, 0x73, 0x2b, 0x0f, 0xa2, 0xfc, 0x0e, 0xe9, 0x38, 0x74, 0x1c, 0x3a, 0xc4, 0x70, 0xd8, 0x85, 0x5d, 0xd8, 0x0d, 0x4a, 0x82, 0x86, 0xc3, 0xfa, 0xe6, 0xc2, 0x6e, 0x90, 0x60, 0xfe, 0x7c, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0x05, 0xd9, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0x21, 0x86, 0x83, 0x60, 0x83, 0xb6, 0xac, 0xfa, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0xb3, 0xd5, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xb8, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x09, 0xe0, 0x4d, 0x2c, 0x6c, 0xae, 0xac, 0xc5, 0x86, 0xa6, 0x05, 0x2e, 0x8c, 0x8c, 0x2c, 0xcd, 0xed, 0xac, 0xa5, 0x4c, 0x4e, 0xae, 0x85, 0xee, 0xee, 0x3d, 0x88, 0x3c, 0x3f, 0xa4, 0xe3, 0xd0, 0x71, 0xe8, 0x10, 0xc3, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0xf9, 0x34, 0x65, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x87, 0x9c, 0xe5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x70, 0xae, 0x1c, 0x1c, 0x33, 0x96, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0x94, 0x58, 0x3e, 0x28, 0x46, 0x7f, 0x0e, 0x0a, 0xb2, 0x9d, 0xe3, 0xd0, 0x71, 0xe8, 0x90, 0x3a, 0x38, 0x0e, 0x6d, 0x88, 0xe1, 0xc6, 0xa1, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x46, 0x2c, 0x2e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xd0, 0xfe, 0x7c, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x78, 0x38, 0xd0, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x04, 0x24, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xcb, 0x11, 0x01, 0x0e, 0x4a, 0x6f, 0x87, 0xe3, 0xd0, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x16, 0x24, 0x03, 0x6d, 0x9d, 0x0e, 0xd2, 0x82, 0x46, 0x0e, 0xd2, 0xcc, 0xb7, 0x07, 0xc1, 0xc2, 0x2e, 0x08, 0x16, 0x24, 0x03, 0xf9, 0x95, 0x83, 0x64, 0xa5, 0x95, 0x83, 0x62, 0xf4, 0x67, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0x71, 0x54, 0x83, 0x73, 0x50, 0x8c, 0xfe, 0x0c, 0x82, 0x0d, 0xe2, 0xd4, 0x74, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x8a, 0x1c, 0xf5, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x82, 0x64, 0x20, 0xed, 0x74, 0x90, 0xac, 0xb4, 0x72, 0x90, 0x0e, 0x07, 0x71, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xba, 0xeb, 0xe0, 0x24, 0x74, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc7, 0xb7, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x19, 0x50, 0xfc, 0x77, 0x1d, 0x9c, 0x84, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0x29, 0xda, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x40, 0xd3, 0xae, 0x83, 0x93, 0xd0, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x20, 0xd0, 0xb9, 0x0e, 0x4e, 0x42, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0x20, 0xf1, 0xbf, 0xeb, 0xe0, 0x24, 0x74, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xa8, 0x93, 0x44, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x98, 0xf0, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x41, 0x32, 0xe0, 0xfc, 0xdf, 0x75, 0x70, 0x12, 0x3a, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xd8, 0x0d, 0xf9, 0xda, 0x0d, 0x52, 0xfa, 0xac, 0x0f, 0x52, 0x34, 0x99, 0x8f, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x51, 0x27, 0x89, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x95, 0xe7, 0xc9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x11, 0x88, 0x89, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xb0, 0x1b, 0xf2, 0xb5, 0x1b, 0xa4, 0x3f, 0x3d, 0x1f, 0xa4, 0x14, 0x3d, 0x1f, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x31, 0x48, 0x06, 0x66, 0xed, 0xe0, 0x24, 0x74, 0x7c, 0xb0, 0x12, 0x5f, 0xe4, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x6c, 0xb0, 0xd8, 0x56, 0xe4, 0xe0, 0x24, 0x74, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x06, 0x31, 0x52, 0x5b, 0x73, 0x90, 0xea, 0xa0, 0x71, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x08, 0xfe, 0xae, 0x83, 0x93, 0xd0, 0xf1, 0xc1, 0x42, 0xcc, 0x91, 0xe3, 0xd0, 0x41, 0x0c, 0x79, 0x22, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x2e, 0x50, 0xa4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x88, 0x52, 0x32, 0x90, 0x83, 0xa5, 0xd8, 0x27, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0x5f, 0x14, 0xe9, 0x60, 0xd5, 0xcc, 0xc9, 0x71, 0xe8, 0x20, 0x86, 0x3c, 0x91, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x17, 0x28, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x44, 0x29, 0x19, 0xc8, 0x41, 0xa2, 0xb2, 0xf3, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe8, 0x17, 0x45, 0x3a, 0x58, 0x4c, 0x71, 0x72, 0x1c, 0x3a, 0x88, 0x21, 0x4f, 0xa4, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0x92, 0x81, 0xea, 0x76, 0x70, 0x12, 0x3a, 0x3e, 0x58, 0x89, 0x2f, 0x72, 0x3c, 0x3e, 0x0e, 0x2d, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x10, 0xf9, 0xd0, 0x44, 0x07, 0x11, 0xce, 0x84, 0x74, 0x3c, 0x1e, 0x04, 0x0b, 0xbb, 0x61, 0x5c, 0x16, 0x03, 0xf0, 0x3f, 0x48, 0x68, 0x88, 0xa8, 0xc8, 0xe8, 0x08, 0x29, 0x49, 0x69, 0x89, 0xa9, 0xc9, 0xe9, 0x09, 0x2a, 0x4a, 0x6a, 0x8a, 0xaa, 0xca, 0xea, 0x0a, 0x2b, 0x4b, 0x2b, 0x4c, 0x6c, 0x8c, 0xac, 0xcc, 0xec, 0x0c, 0x2d, 0x4d, 0x6d, 0x8d, 0xad, 0xcd, 0xed, 0x0d, 0x2e, 0x4e, 0x6e, 0x8e, 0xae, 0xce, 0xee, 0x0e, 0x2f, 0x4f, 0x0f, 0x26, 0x46, 0x66, 0x86, 0xa6, 0xc6, 0xe6, 0x06, 0x27, 0xa7, 0xe5, 0x1b, 0x03, 0xd0, 0x3f, 0x48, 0x68, 0x88, 0xa8, 0xc8, 0xe8, 0x08, 0x29, 0x49, 0x69, 0x89, 0xa9, 0xc9, 0xe9, 0x09, 0x2a, 0x4a, 0x6a, 0x8a, 0xaa, 0xca, 0xea, 0x0a, 0x2b, 0x4b, 0x2b, 0x4c, 0x6c, 0x8c, 0xac, 0xcc, 0xec, 0x0c, 0x2d, 0x4d, 0x6d, 0x8d, 0xad, 0xcd, 0xed, 0x0d, 0x2e, 0x4e, 0x6e, 0x8e, 0xae, 0xce, 0xee, 0x0e, 0x2f, 0x4f, 0x0f, 0x26, 0x46, 0x66, 0x86, 0xa6, 0xc6, 0xe6, 0x06, 0x27, 0x67, 0xe5, 0x0d, 0x82, 0xc5, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0x91, 0xde, 0x6e, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x2d, 0xfc, 0xc6, 0xf3, 0x05, 0xc1, 0x06, 0x91, 0xde, 0x6e, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x1c, 0xa4, 0x12, 0x36, 0x1f, 0x87, 0x0e, 0x47, 0xfb, 0x41, 0x60, 0x62, 0x1f, 0x87, 0x06, 0xc1, 0x82, 0x60, 0x83, 0x68, 0xb2, 0xb7, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x16, 0x7e, 0xe3, 0xf9, 0x82, 0x60, 0x83, 0x68, 0xb2, 0xb7, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x36, 0x48, 0xeb, 0x6f, 0x3e, 0xec, 0x15, 0x1e, 0x87, 0x0e, 0x47, 0xfb, 0xc1, 0x78, 0xd3, 0x39, 0x0e, 0x0d, 0x82, 0x05, 0xc1, 0x06, 0x51, 0x98, 0x1e, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x2d, 0xfc, 0xc6, 0xf3, 0x05, 0xc1, 0x06, 0x51, 0x98, 0x1e, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x6c, 0x90, 0x40, 0xe6, 0x7c, 0x10, 0x98, 0xd8, 0xc7, 0xa1, 0xc3, 0xd1, 0x7e, 0x30, 0x78, 0x27, 0x8f, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x84, 0xa7, 0x5c, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x0b, 0xbf, 0xf1, 0x7c, 0x41, 0xb0, 0x41, 0x84, 0xa7, 0x5c, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0xf8, 0x21, 0x0b, 0xbf, 0xf1, 0x7c, 0x1c, 0x4c, 0x62, 0x0f, 0xc6, 0x9b, 0xce, 0x71, 0xe8, 0x70, 0xb4, 0x1f, 0x0c, 0x44, 0xea, 0xe3, 0xd0, 0x86, 0xbd, 0xc2, 0x0d, 0xa9, 0x9a, 0x0d, 0xa9, 0x83, 0x83, 0x73, 0x21, 0xf6, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0x32, 0x60, 0xe9, 0x7b, 0xdf, 0xc1, 0xb9, 0xfe, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x34, 0xa9, 0xe6, 0x1c, 0x44, 0x38, 0x13, 0xd2, 0x71, 0xe8, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xf9, 0x3b, 0x38, 0xe7, 0x1d, 0x0f, 0x92, 0x81, 0xb8, 0x1d, 0xac, 0xda, 0x4f, 0x39, 0x48, 0x7f, 0x26, 0x1a, 0x04, 0x2b, 0x08, 0x36, 0x38, 0x51, 0x28, 0x1f, 0xc4, 0xa1, 0xcb, 0xcd, 0x20, 0xd8, 0x20, 0x8a, 0xc9, 0x6f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xa4, 0xc8, 0x51, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xf5, 0xe9, 0x37, 0x07, 0xe9, 0x70, 0x10, 0xc7, 0xa1, 0x0d, 0xa9, 0x83, 0x41, 0xb0, 0x41, 0x14, 0x13, 0xf1, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x88, 0x43, 0x37, 0x9c, 0x43, 0xea, 0xe0, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x3c, 0x18, 0x0d, 0x1d, 0x12, 0xad, 0xc3, 0x6e, 0x30, 0x5a, 0xcd, 0x17, 0x04, 0x1b, 0x3c, 0x9f, 0x25, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xb1, 0x02, 0x3c, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0x83, 0x14, 0x0f, 0x99, 0xe3, 0xd0, 0x21, 0x75, 0x70, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xd8, 0x60, 0x8c, 0xe1, 0x0c, 0x82, 0x05, 0xc9, 0x80, 0xe0, 0xdd, 0x39, 0x38, 0xe7, 0x1d, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x2d, 0x53, 0x90, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x51, 0x26, 0x40, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xcd, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd2, 0xc7, 0x89, 0x0e, 0x46, 0x14, 0xee, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x1f, 0xa4, 0x5b, 0x4a, 0x1f, 0x8f, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x6e, 0x10, 0x39, 0xba, 0x32, 0x87, 0xd4, 0xc1, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x0e, 0xf0, 0xb4, 0xa5, 0xb5, 0x95, 0xcd, 0x07, 0x6b, 0xc2, 0x77, 0x8e, 0xc7, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x3c, 0xc2, 0x47, 0x6c, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xf3, 0xf8, 0x23, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x76, 0x41, 0xb0, 0x41, 0x14, 0x1f, 0xd8, 0x1c, 0x24, 0x27, 0x43, 0x2f, 0x08, 0x36, 0x88, 0xf6, 0xc1, 0x96, 0x83, 0x65, 0xcc, 0x28, 0x83, 0x60, 0x83, 0x68, 0x1f, 0x6c, 0x39, 0x48, 0x31, 0xa7, 0x3e, 0x1e, 0x0f, 0xbb, 0xb0, 0x0b, 0xbb, 0x20, 0xd8, 0xa0, 0x3d, 0xe9, 0xfb, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xbd, 0xc2, 0x83, 0xd4, 0xb2, 0xe8, 0xe3, 0xd0, 0xc2, 0x2e, 0x08, 0x36, 0x68, 0xc7, 0xfa, 0x7e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x61, 0xaf, 0xf0, 0x20, 0xdd, 0x2f, 0xfa, 0x38, 0x74, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0x0d, 0x31, 0x1c, 0x76, 0x61, 0x17, 0x04, 0x1b, 0xb4, 0x27, 0x7d, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xb0, 0x57, 0x78, 0x90, 0x36, 0xed, 0x7c, 0x1c, 0x5a, 0xd8, 0x05, 0xc1, 0x06, 0xed, 0x58, 0xdf, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x1e, 0x24, 0xad, 0x3b, 0x1f, 0x87, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0xbe, 0x21, 0x86, 0xc3, 0x2e, 0xec, 0x82, 0x60, 0x83, 0xf6, 0xa4, 0xef, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf6, 0x0a, 0x0f, 0x92, 0xc5, 0xa7, 0x8f, 0x43, 0x0b, 0xbb, 0x20, 0xd8, 0xa0, 0x1d, 0xeb, 0xfb, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xbd, 0xc2, 0x83, 0xa4, 0x82, 0xea, 0xe3, 0xd0, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x37, 0xc4, 0x70, 0xd8, 0x85, 0x3b, 0x48, 0xb2, 0xab, 0xde, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x83, 0xf4, 0xa7, 0xe7, 0x43, 0xaa, 0x66, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x92, 0x87, 0x98, 0x0f, 0xa9, 0x9a, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x48, 0xe9, 0xb3, 0x3e, 0xa4, 0x6a, 0x0e, 0xe9, 0xdc, 0x0d, 0x92, 0x8d, 0xac, 0x37, 0x48, 0xf4, 0x83, 0x5e, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x41, 0x6b, 0x3a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x96, 0x27, 0xaf, 0x1d, 0xf6, 0x0a, 0x8f, 0x43, 0xc7, 0xa1, 0x05, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xd1, 0x86, 0xda, 0x71, 0x10, 0xb3, 0xef, 0x48, 0xc7, 0xa1, 0x43, 0x0c, 0x8f, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0xe0, 0x79, 0x9c, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0x7f, 0xb8, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xb0, 0x1b, 0xf2, 0x58, 0x07, 0xd1, 0x41, 0x52, 0x74, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xbc, 0x9d, 0x82, 0xe6, 0xe0, 0x51, 0x84, 0x3c, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0xb8, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xad, 0xd8, 0xeb, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc9, 0x40, 0xf4, 0x8e, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0xa1, 0xce, 0x75, 0x30, 0xde, 0x75, 0x0e, 0x9a, 0x62, 0xd9, 0x3f, 0x68, 0x7e, 0x5a, 0x7f, 0x41, 0xb0, 0x41, 0x43, 0xe1, 0xfa, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x52, 0xc3, 0x4e, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x3c, 0x6c, 0xff, 0x60, 0x49, 0xe3, 0xc9, 0x71, 0x68, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x8d, 0xe9, 0xea, 0x0f, 0x82, 0x0d, 0x1a, 0xb2, 0xe2, 0x3f, 0x68, 0x1f, 0x58, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0xa0, 0xd0, 0xe5, 0x3a, 0x18, 0xef, 0x3a, 0x07, 0xed, 0x03, 0xeb, 0x0f, 0x82, 0x0d, 0xde, 0xc3, 0x15, 0x70, 0xd0, 0x3e, 0xb0, 0xfe, 0xc1, 0x1b, 0x2e, 0x04, 0x56, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0xf1, 0xf8, 0x20, 0x22, 0xfe, 0x91, 0x06, 0xc1, 0x06, 0xaf, 0xa1, 0x14, 0x38, 0x68, 0x7e, 0x5a, 0x7f, 0x10, 0x6c, 0x10, 0xd1, 0xf9, 0x48, 0x07, 0xcd, 0x4f, 0xeb, 0x0f, 0x82, 0x0d, 0x1e, 0x84, 0x32, 0x70, 0xd0, 0xfc, 0xb4, 0xfe, 0x20, 0xd8, 0x60, 0x05, 0x32, 0xd0, 0x41, 0xf3, 0xd3, 0xfa, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0x77, 0xdd, 0x8e, 0xc7, 0x07, 0xcd, 0x4f, 0xeb, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0x84, 0xad, 0xdb, 0xf1, 0xf8, 0xa0, 0xf9, 0x69, 0xfd, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0x7e, 0xd5, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xd8, 0x70, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x10, 0x6c, 0x70, 0x80, 0xdf, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0x1e, 0xda, 0x21, 0x70, 0xb0, 0xa0, 0xda, 0xec, 0x38, 0x34, 0x08, 0x36, 0x88, 0x3a, 0xe0, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xe9, 0x65, 0x3d, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x96, 0xcc, 0xf3, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x6e, 0x37, 0x1b, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc6, 0xa1, 0x41, 0xb0, 0x41, 0xbc, 0x84, 0x1e, 0x1d, 0xb4, 0xa7, 0x9d, 0x7f, 0x1c, 0x1a, 0x04, 0x1b, 0x52, 0x07, 0x07, 0xed, 0xd9, 0xe9, 0x1f, 0x87, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0x5f, 0x75, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x4c, 0xda, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xcf, 0x86, 0x6d, 0x3a, 0x34, 0x6a, 0x19, 0x76, 0x83, 0xd1, 0xb1, 0xbe, 0x20, 0x58, 0x10, 0x6c, 0xf0, 0xb2, 0x07, 0x9a, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0xe8, 0x10, 0xcd, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0x20, 0xd8, 0xa0, 0x3d, 0xe9, 0xfb, 0x83, 0x64, 0xae, 0xe8, 0x85, 0x5d, 0x10, 0x6c, 0xd0, 0x8e, 0xf5, 0xfd, 0x41, 0x82, 0x5d, 0xf4, 0x21, 0x9d, 0x7b, 0x38, 0xda, 0x0f, 0x06, 0xaa, 0xda, 0xe1, 0x14, 0x3b, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x10, 0x16, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xad, 0x2a, 0xed, 0x1f, 0x3c, 0xff, 0x76, 0xe0, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x34, 0x3f, 0xad, 0x3f, 0x08, 0x36, 0x68, 0x5d, 0xd6, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x8f, 0x49, 0xbc, 0x3a, 0x18, 0xbb, 0x56, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x16, 0x9f, 0xf7, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xd6, 0x65, 0xdd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0xe0, 0x7d, 0x59, 0x4d, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0xf6, 0xbf, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x10, 0xb4, 0x6e, 0xc7, 0xe3, 0xe3, 0xd0, 0x71, 0xe8, 0xa0, 0x11, 0xc9, 0xfd, 0xe3, 0xd0, 0x20, 0xd8, 0xe0, 0x59, 0xe7, 0x04, 0x07, 0x8b, 0xd2, 0x49, 0x8e, 0x43, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xa2, 0x6a, 0xba, 0x66, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xe2, 0x47, 0xad, 0x68, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x50, 0xde, 0x8e, 0xc7, 0x07, 0xcd, 0x4f, 0xeb, 0x1f, 0x2c, 0x4a, 0x27, 0x19, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x92, 0x81, 0xb4, 0xdb, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x50, 0xdc, 0x8e, 0xc7, 0x07, 0x8b, 0xd2, 0x49, 0x0e, 0x16, 0xa5, 0x93, 0xac, 0x20, 0xd8, 0xa0, 0x31, 0x69, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x0c, 0xee, 0xe9, 0x41, 0x32, 0x50, 0xfc, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0x96, 0xdd, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x71, 0x0d, 0x9e, 0x63, 0x88, 0x98, 0x0b, 0xf0, 0xa0, 0xd1, 0xd1, 0xc1, 0xcd, 0x75, 0x1c, 0x3a, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xc1, 0x5b, 0x51, 0x06, 0x06, 0xc1, 0x06, 0x0f, 0x42, 0x19, 0x38, 0x58, 0x94, 0x4e, 0x32, 0x08, 0x36, 0x78, 0x0d, 0xa5, 0xc0, 0xc1, 0xa2, 0x74, 0x92, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x40, 0xef, 0xb7, 0xe3, 0xf1, 0xc1, 0xa3, 0x91, 0x17, 0x8e, 0x43, 0x2b, 0x08, 0x36, 0x68, 0x5d, 0xd6, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x5c, 0x79, 0x24, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xda, 0xff, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0x60, 0xf9, 0xed, 0x78, 0x7c, 0x1c, 0x3a, 0x0e, 0x2d, 0x08, 0x36, 0x68, 0x5d, 0xd6, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x5c, 0x79, 0x24, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xda, 0xff, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xe0, 0xc5, 0x57, 0x05, 0xc7, 0xa1, 0xe3, 0xd0, 0x0a, 0x82, 0x0d, 0x5a, 0x97, 0x75, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x57, 0x1e, 0x49, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0xc0, 0x5b, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0xe0, 0xe1, 0xd5, 0x04, 0xc7, 0xa1, 0xe3, 0xd0, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0x10, 0x07, 0xfa, 0x48, 0x07, 0x71, 0x39, 0x90, 0x34, 0x08, 0x36, 0x88, 0xee, 0x98, 0xa4, 0x83, 0xe6, 0xa7, 0xf5, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x41, 0xdb, 0xad, 0xfb, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x1f, 0x34, 0xb7, 0xba, 0x7f, 0xd0, 0xfc, 0xb4, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x64, 0xc0, 0x70, 0xe5, 0x3a, 0x18, 0xef, 0x3a, 0x07, 0xcd, 0x4f, 0xeb, 0x0f, 0x82, 0x0d, 0xda, 0x69, 0xe4, 0x3f, 0x68, 0x7e, 0x5a, 0x7f, 0x10, 0x6c, 0xd0, 0xd2, 0xcf, 0xfe, 0x41, 0xf3, 0xd3, 0xfa, 0x83, 0x60, 0x83, 0x86, 0xae, 0xf7, 0x0f, 0x9a, 0x9f, 0xd6, 0x1f, 0x04, 0x1b, 0xb4, 0xaa, 0xb4, 0x7f, 0xd0, 0xfc, 0xb4, 0xfe, 0x20, 0xd8, 0xa0, 0x35, 0x39, 0xfe, 0x83, 0xe6, 0xa7, 0xf5, 0x0f, 0x5a, 0x4b, 0xe0, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x90, 0x6c, 0xb0, 0x7a, 0x85, 0xe4, 0x60, 0xbc, 0xeb, 0x1c, 0x34, 0x3f, 0xad, 0xbf, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x24, 0x1b, 0x2c, 0x2f, 0x17, 0x39, 0x18, 0xef, 0x3a, 0x07, 0x2d, 0xa4, 0xec, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x9b, 0xa6, 0xfb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x1a, 0x52, 0xe2, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x78, 0xd6, 0xed, 0x78, 0x7c, 0x1c, 0x1a, 0x04, 0x1b, 0x44, 0x4a, 0x51, 0xd2, 0x41, 0xf3, 0xd3, 0xfa, 0x0b, 0x82, 0x0d, 0x5a, 0x97, 0x75, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0xdc, 0x1f, 0x66, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0x10, 0xd5, 0x6c, 0x45, 0x07, 0xcf, 0x9f, 0x14, 0x18, 0x04, 0x0b, 0xbf, 0xf1, 0xfc, 0xa0, 0x81, 0x7b, 0xfd, 0x41, 0xb0, 0x41, 0x90, 0xc5, 0x2f, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0xad, 0x18, 0x7e, 0x41, 0x32, 0x50, 0xdc, 0x0e, 0xc6, 0xbb, 0xce, 0xf1, 0xed, 0x60, 0x25, 0xbe, 0xc8, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x83, 0x77, 0xd1, 0xa2, 0x1d, 0x2c, 0x4a, 0x27, 0x39, 0x0e, 0x0d, 0x82, 0x0d, 0x5a, 0x97, 0x75, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xb8, 0x41, 0x31, 0x2d, 0x78, 0x30, 0xc6, 0xd0, 0x16, 0x37, 0x34, 0xd4, 0x59, 0x83, 0xf1, 0xd3, 0x75, 0xb0, 0x10, 0x66, 0xff, 0x30, 0x2e, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0x10, 0x2b, 0x22, 0x49, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x36, 0x88, 0xe8, 0x92, 0xa4, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2d, 0x3e, 0xef, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x0f, 0x5e, 0x3b, 0x32, 0x30, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x3c, 0xb4, 0x43, 0xe0, 0x60, 0x51, 0x7f, 0xcd, 0xc1, 0xa3, 0x91, 0x17, 0x8e, 0x43, 0x07, 0x8b, 0xd2, 0x49, 0x0e, 0xa2, 0xcd, 0x24, 0xe9, 0x60, 0x51, 0x3a, 0xc9, 0x71, 0x68, 0x41, 0xb0, 0x41, 0xeb, 0xb2, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x56, 0x23, 0xc5, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x9e, 0x5e, 0x1d, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xe0, 0x41, 0x28, 0x03, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x49, 0xb7, 0xe3, 0xf1, 0x71, 0x68, 0x10, 0x6c, 0xf0, 0x20, 0x94, 0x81, 0x83, 0xa6, 0x58, 0xf6, 0x8f, 0x43, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0xf3, 0xab, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x86, 0xeb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x88, 0xaa, 0xe9, 0x9a, 0x41, 0xb0, 0x41, 0x2c, 0x90, 0x24, 0x1d, 0x2c, 0x4a, 0x27, 0x39, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x7e, 0xd5, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x75, 0x59, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x3c, 0x9f, 0x2f, 0xec, 0x60, 0xec, 0x5a, 0x1d, 0x3c, 0xeb, 0x9c, 0xe0, 0x38, 0x74, 0x1c, 0x3a, 0x68, 0x7e, 0x5a, 0x7f, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0xf1, 0x35, 0x95, 0x74, 0x10, 0x45, 0x02, 0x49, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xfd, 0xb7, 0xe3, 0xf1, 0x41, 0xf3, 0xd3, 0xfa, 0x07, 0x31, 0x4e, 0x90, 0x74, 0x10, 0xe7, 0x05, 0x49, 0x0b, 0x82, 0x0d, 0x5a, 0x97, 0x75, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x57, 0x1e, 0x49, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0xc0, 0x5b, 0xd1, 0x41, 0x7c, 0xd1, 0x24, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0xad, 0xcb, 0xba, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0x3c, 0xa0, 0xd5, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x4a, 0xa5, 0x3e, 0x34, 0x6a, 0x39, 0x0e, 0x1d, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xad, 0xfd, 0xef, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0x06, 0x97, 0xf6, 0x0f, 0x5a, 0x4b, 0xe0, 0x3f, 0x68, 0x3a, 0x84, 0xff, 0x20, 0xf2, 0x81, 0x92, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x01, 0x43, 0x9d, 0xea, 0x60, 0xbc, 0xeb, 0x1c, 0x2c, 0x4a, 0x27, 0x39, 0x0e, 0x2d, 0x08, 0x36, 0x78, 0x08, 0x8b, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0xb6, 0x7d, 0xf5, 0x07, 0xc1, 0x06, 0xef, 0xe1, 0x0a, 0x38, 0x58, 0x94, 0x4e, 0x32, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc9, 0xc0, 0xbf, 0x6e, 0xc7, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x0f, 0x9e, 0x13, 0x2d, 0x70, 0xd0, 0x14, 0xcb, 0xfe, 0x20, 0xd8, 0x60, 0x31, 0x6c, 0xcd, 0xc1, 0xa2, 0x74, 0x92, 0xe3, 0xd0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x37, 0x43, 0x0b, 0x0c, 0x82, 0x0d, 0xde, 0xc3, 0x15, 0x70, 0xd0, 0xfc, 0xb4, 0xfe, 0x20, 0xd8, 0x20, 0xb6, 0xfd, 0x91, 0x0e, 0x9a, 0x9f, 0xd6, 0x3f, 0x68, 0x3a, 0x84, 0xff, 0x20, 0xee, 0x7a, 0x92, 0x06, 0xc1, 0x06, 0x0d, 0xd2, 0xee, 0x1f, 0x34, 0x3f, 0xad, 0x7f, 0x10, 0x73, 0x3b, 0x49, 0x07, 0xf1, 0xc4, 0x93, 0x74, 0xd0, 0x64, 0xc7, 0xfe, 0x41, 0xfb, 0x21, 0xfb, 0x07, 0x31, 0xec, 0x93, 0xb4, 0x20, 0xd8, 0xa0, 0x75, 0x59, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x71, 0xe5, 0x91, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x0c, 0xbc, 0x15, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xd6, 0x2e, 0xd6, 0x1c, 0x87, 0x8e, 0x43, 0x2b, 0x08, 0x36, 0x68, 0x4c, 0xda, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0x70, 0x1b, 0xa4, 0x3f, 0x3d, 0x0f, 0x82, 0x0d, 0xde, 0x1e, 0x7a, 0x31, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x1b, 0xfa, 0x93, 0x0f, 0x82, 0x0d, 0xd6, 0x9b, 0x95, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x10, 0x39, 0xba, 0x32, 0xc7, 0xa1, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x70, 0xcc, 0x5c, 0x3f, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xba, 0xac, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x48, 0x39, 0x4b, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0xf6, 0xbf, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x41, 0xcb, 0x5d, 0xfb, 0xc7, 0xa1, 0x41, 0xb0, 0x41, 0x5c, 0x04, 0x25, 0x1d, 0x2c, 0x4a, 0x27, 0x39, 0x0e, 0x1d, 0x87, 0x86, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0xa0, 0x75, 0x59, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0x86, 0x18, 0x1e, 0x44, 0x1e, 0x55, 0xd1, 0x21, 0x86, 0xc7, 0xe3, 0x83, 0x98, 0xf6, 0x48, 0x3a, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x7a, 0x75, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x83, 0xa7, 0x72, 0x05, 0x1c, 0x34, 0xd9, 0xb1, 0x3f, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x2b, 0xf6, 0xfa, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0x32, 0xb0, 0xea, 0x76, 0x3c, 0x3e, 0x88, 0x48, 0xb9, 0xa4, 0x83, 0xe6, 0xa7, 0xf5, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xad, 0xdf, 0x8e, 0xc7, 0x07, 0x8b, 0xd2, 0x49, 0x8e, 0x43, 0x07, 0xcd, 0x4f, 0xeb, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x0e, 0xbb, 0x41, 0xf0, 0x31, 0x6f, 0x48, 0x4c, 0x0d, 0xbb, 0xc1, 0x52, 0xc1, 0xa0, 0x05, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x48, 0x06, 0x9a, 0x72, 0x1d, 0x0c, 0x47, 0xe9, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x91, 0x0c, 0x78, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x41, 0x32, 0x50, 0x76, 0x0e, 0x8e, 0x59, 0xc5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x55, 0x19, 0x34, 0xc7, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x8f, 0x3c, 0xb1, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x90, 0x9e, 0x90, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xa1, 0x6a, 0xc9, 0xa1, 0x51, 0xcb, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0x10, 0x7f, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x92, 0x81, 0x20, 0x1d, 0x9c, 0xce, 0x90, 0x0f, 0x52, 0xfc, 0x1c, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xb4, 0x28, 0xa1, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd9, 0x60, 0xf5, 0x0a, 0xc9, 0xc1, 0x70, 0x94, 0x3e, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x71, 0xf0, 0xb6, 0x49, 0x92, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x37, 0x9c, 0xeb, 0x83, 0x60, 0x83, 0xd4, 0x6e, 0x8f, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x41, 0x44, 0x77, 0x20, 0x1d, 0x87, 0x8e, 0x43, 0xc3, 0x6e, 0x10, 0x5a, 0xee, 0x6b, 0x88, 0xe1, 0x41, 0x19, 0x6b, 0x35, 0x08, 0x36, 0x18, 0xac, 0xb1, 0x1b, 0x2c, 0x85, 0xf5, 0x19, 0x76, 0x83, 0x57, 0xd1, 0xe0, 0x6c, 0x88, 0xe1, 0x82, 0x60, 0x83, 0x47, 0x9e, 0xd8, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x48, 0x4f, 0x48, 0x39, 0x78, 0x73, 0x8e, 0xcd, 0x71, 0xe8, 0x10, 0xc3, 0xe1, 0xd7, 0x60, 0xc5, 0x82, 0xce, 0x21, 0x6b, 0xb7, 0x41, 0x48, 0x81, 0x6f, 0x3c, 0x3f, 0x08, 0x01, 0xf0, 0xe3, 0xdb, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x7c, 0xd0, 0x08, 0xd0, 0xfe, 0x41, 0xeb, 0x18, 0xfb, 0x83, 0x60, 0x83, 0x66, 0x77, 0xf8, 0x0f, 0x9a, 0x9f, 0xd6, 0x3f, 0x88, 0x07, 0xa0, 0xa4, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xf0, 0xe5, 0x3a, 0x18, 0xef, 0x3a, 0x07, 0xcd, 0x4f, 0xeb, 0x1f, 0x44, 0xda, 0x4f, 0xd2, 0x41, 0x6b, 0x09, 0xfc, 0x07, 0x4d, 0x87, 0xf0, 0x1f, 0xc4, 0x5d, 0x4f, 0xd2, 0x41, 0x3c, 0xf1, 0x24, 0x1d, 0x34, 0xd9, 0xb1, 0x3f, 0x08, 0x36, 0x68, 0x30, 0x65, 0xff, 0xa0, 0xf9, 0x69, 0xfd, 0x83, 0xf6, 0x43, 0xf6, 0x07, 0xc1, 0x06, 0x6d, 0x4a, 0xee, 0x1f, 0x34, 0x3f, 0xad, 0x7f, 0x10, 0xc3, 0x3e, 0x49, 0x07, 0x91, 0x0f, 0x94, 0x34, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x10, 0x7f, 0x0b, 0x48, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x9a, 0xe1, 0x37, 0x9e, 0x1f, 0x24, 0x8b, 0x16, 0x1d, 0x87, 0x8e, 0xc7, 0x2b, 0x08, 0x16, 0x17, 0x7e, 0x41, 0xb0, 0xb8, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x64, 0x20, 0xff, 0x75, 0x3c, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x24, 0xbf, 0x8e, 0xc7, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x31, 0x1b, 0x9b, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x78, 0xae, 0x4d, 0xc0, 0x71, 0x68, 0x10, 0x6c, 0x10, 0x64, 0xf1, 0x8b, 0x83, 0x60, 0xe1, 0x37, 0x64, 0x2b, 0x06, 0xc1, 0x06, 0x6b, 0x2c, 0x13, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x58, 0x51, 0x6e, 0x71, 0x1c, 0x3a, 0x58, 0x89, 0x2f, 0x72, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0xc1, 0xc2, 0x82, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0xc0, 0x2e, 0xd5, 0xc1, 0x30, 0xf4, 0x39, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0x82, 0xbf, 0xeb, 0x60, 0x18, 0xfa, 0x1c, 0xac, 0x6d, 0x66, 0x3b, 0x68, 0xcf, 0x4e, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x6c, 0x7e, 0xd7, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xcf, 0xb1, 0xa3, 0x83, 0x95, 0xb8, 0x31, 0xc7, 0xa1, 0x83, 0xb5, 0x30, 0x25, 0x07, 0xd1, 0x4a, 0x9b, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x66, 0x63, 0x93, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0xe6, 0x77, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0x72, 0x83, 0x8e, 0x8e, 0x43, 0xc7, 0xa1, 0x83, 0x68, 0xa5, 0x4d, 0x5a, 0x41, 0xb0, 0x41, 0xf4, 0x0f, 0xd7, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xeb, 0xef, 0x90, 0x5c, 0x3a, 0x34, 0x6a, 0x59, 0x10, 0x6c, 0x10, 0x13, 0xeb, 0x44, 0x87, 0x46, 0x2d, 0x87, 0x18, 0x1e, 0x8f, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x68, 0x07, 0x13, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x9c, 0x76, 0x1e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0xfa, 0x5e, 0x84, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x5f, 0x90, 0x0c, 0x28, 0x75, 0xb9, 0x0e, 0x86, 0xa1, 0xcf, 0x41, 0xb4, 0x1a, 0x27, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xb0, 0xb0, 0xa0, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0x32, 0x50, 0xbd, 0x8e, 0xc7, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0xb4, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x44, 0x2d, 0xe5, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xb1, 0xe1, 0x3a, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x7a, 0x8d, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0x80, 0xc7, 0x2c, 0x8c, 0x6d, 0xae, 0x3c, 0x0e, 0x1d, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x2d, 0xe5, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x81, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x7a, 0x8d, 0x92, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0xc0, 0xa7, 0x93, 0xab, 0x2b, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0xb5, 0x30, 0x25, 0x2b, 0x08, 0x36, 0x58, 0x6e, 0x4a, 0xb2, 0x38, 0x08, 0x36, 0x68, 0x88, 0x3f, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x33, 0x21, 0x24, 0x0e, 0xa9, 0x9a, 0xe3, 0xd0, 0xf1, 0x78, 0x10, 0x6c, 0xf0, 0x6c, 0xc4, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xa9, 0x65, 0xd1, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xbc, 0xbe, 0x17, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x17, 0x24, 0x1b, 0x34, 0x13, 0xf0, 0x7e, 0x30, 0x0c, 0x7d, 0x06, 0xc1, 0x82, 0x64, 0x20, 0xfb, 0x75, 0x3c, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0x48, 0xdc, 0xe5, 0x3a, 0x18, 0x86, 0x3e, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x80, 0x72, 0xbd, 0xeb, 0x60, 0x18, 0xfa, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x66, 0xaa, 0x93, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x07, 0x71, 0x73, 0x5e, 0x73, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0xc1, 0x12, 0x2a, 0xb6, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0xb4, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x2e, 0x08, 0x36, 0x78, 0x41, 0x42, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x41, 0x63, 0x89, 0x50, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0x2b, 0xb4, 0x07, 0xa9, 0x61, 0x08, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xd6, 0x7e, 0x87, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x9b, 0x78, 0x81, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x3c, 0x28, 0xec, 0x70, 0x0e, 0x59, 0xbb, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0x28, 0x33, 0x3e, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x69, 0x05, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x06, 0x02, 0x00, 0x77, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0x0c, 0x04, 0x00, 0xf0, 0xc1, 0xc0, 0x0f, 0x39, 0x0e, 0x0d, 0xbf, 0xf1, 0xfc, 0x60, 0x2c, 0x43, 0x1d, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0xb2, 0x59, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x63, 0xf0, 0x5c, 0xf5, 0x71, 0xe8, 0xe0, 0xb9, 0xcb, 0x08, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0xcc, 0xf8, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa7, 0x15, 0xdc, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x18, 0x08, 0x00, 0xd8, 0x0d, 0xe2, 0xa7, 0x3c, 0xe9, 0x60, 0xe0, 0x87, 0x1c, 0x87, 0x0e, 0xe2, 0xde, 0x3c, 0xe9, 0x38, 0x74, 0xd0, 0x4c, 0x7d, 0xfe, 0x71, 0x68, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x88, 0x32, 0xe3, 0xa3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0x56, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x44, 0x7c, 0x79, 0xd2, 0xc2, 0x6f, 0x3c, 0x3f, 0x48, 0xf2, 0x42, 0x38, 0x18, 0x1b, 0xae, 0xc7, 0xa1, 0x83, 0xb8, 0x37, 0x4f, 0x3a, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x32, 0xe3, 0xa3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x9c, 0x56, 0x70, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x3c, 0x49, 0xcb, 0x62, 0x83, 0x18, 0x5c, 0x4f, 0x3a, 0x18, 0x1b, 0xae, 0xc7, 0xa1, 0x83, 0xb8, 0x37, 0x4f, 0x3a, 0x0e, 0x1d, 0xbc, 0xdf, 0x19, 0x61, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xec, 0xc2, 0x2e, 0x08, 0x36, 0x88, 0x5c, 0x2c, 0x90, 0x83, 0xa6, 0x4d, 0x57, 0x16, 0x76, 0x41, 0xb0, 0xc1, 0x39, 0x15, 0x79, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0x30, 0x84, 0x12, 0x8e, 0x43, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x5f, 0x10, 0x6c, 0x10, 0xdf, 0x02, 0x36, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbb, 0xa1, 0xe1, 0xd7, 0x82, 0x60, 0x83, 0x28, 0x25, 0x03, 0x39, 0x68, 0xda, 0x74, 0xe5, 0x90, 0x3a, 0x38, 0x0e, 0x1d, 0x62, 0x78, 0x3c, 0x3e, 0x1e, 0x2f, 0x08, 0x36, 0x78, 0x41, 0x42, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x1b, 0x1c, 0xae, 0xa4, 0x0f, 0x8d, 0x5a, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0x44, 0xd5, 0x74, 0xcd, 0x20, 0xd8, 0x60, 0x05, 0x32, 0xd0, 0xc1, 0xfb, 0x9d, 0x11, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x01, 0xe7, 0xff, 0xae, 0x83, 0xe1, 0x1f, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x78, 0xc3, 0x3c, 0xd2, 0x71, 0xe8, 0xe0, 0xb9, 0xcb, 0x08, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x19, 0x10, 0xf8, 0x5d, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x6a, 0x07, 0xc8, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xb1, 0xc3, 0x7c, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xbd, 0x25, 0xda, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x80, 0xe0, 0xa7, 0x3a, 0x18, 0xfe, 0xb1, 0xc7, 0xa1, 0xe3, 0xd0, 0xc1, 0x08, 0x89, 0x5a, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0x8f, 0x87, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xb4, 0x83, 0x89, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x6c, 0x10, 0x8f, 0xdc, 0x33, 0x07, 0x69, 0xa7, 0x26, 0xc7, 0xe3, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x41, 0x64, 0xea, 0x26, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x72, 0x6b, 0x1e, 0x7e, 0xe3, 0xf9, 0x18, 0xc4, 0xef, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x32, 0x75, 0x93, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x0c, 0x42, 0x78, 0x90, 0xf4, 0x8b, 0x7d, 0x1c, 0x3a, 0x68, 0xcf, 0x4e, 0xff, 0x38, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0xed, 0x60, 0xa2, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x60, 0xe4, 0x3f, 0x2c, 0x0e, 0x82, 0x05, 0xc9, 0x40, 0x90, 0x0e, 0x8e, 0x59, 0xc5, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x86, 0xac, 0xdd, 0x86, 0x1e, 0x42, 0x1b, 0x3a, 0x86, 0x1d, 0x0c, 0xfc, 0x90, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x16, 0x13, 0x94, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0xa6, 0x6e, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x24, 0xb7, 0xe6, 0xe1, 0x37, 0x9e, 0x8f, 0x41, 0x7c, 0x8e, 0x43, 0x07, 0xed, 0xd9, 0xe9, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xcf, 0xb1, 0xa3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x0f, 0xde, 0x19, 0xaf, 0x71, 0x1c, 0x3a, 0x68, 0xcf, 0x4e, 0x7f, 0x10, 0x2c, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x06, 0xb1, 0x98, 0xa0, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x32, 0x75, 0x93, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x0c, 0x02, 0x74, 0x10, 0xc9, 0x0a, 0x4a, 0xc7, 0xa1, 0x83, 0xf6, 0xec, 0xf4, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0xe7, 0xd8, 0xd1, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0x71, 0xb6, 0xf9, 0x38, 0x74, 0xd0, 0x9e, 0x9d, 0xfe, 0xc1, 0x5a, 0x98, 0x92, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x1b, 0xc4, 0x62, 0x82, 0xd2, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x07, 0x11, 0x9c, 0xa0, 0x74, 0xd0, 0x9e, 0x9d, 0xfe, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x6c, 0x10, 0x99, 0xba, 0x49, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xf0, 0xe8, 0x75, 0x8d, 0x83, 0x74, 0x6d, 0xec, 0xe3, 0xd0, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xc8, 0xd4, 0x4d, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x31, 0x88, 0xf0, 0xf0, 0x1b, 0xcf, 0x0f, 0x5e, 0xa4, 0xaf, 0x71, 0x1c, 0x3a, 0x58, 0x0b, 0x53, 0x72, 0xd0, 0x9e, 0x9d, 0xfe, 0xc1, 0x5a, 0x98, 0x92, 0xe3, 0xd0, 0xc1, 0x5a, 0x98, 0x92, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x68, 0x07, 0x13, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xcb, 0xc2, 0x60, 0x16, 0x07, 0xc1, 0x06, 0x51, 0xf9, 0xa0, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x6d, 0xc8, 0xda, 0x6d, 0xe8, 0x21, 0xb4, 0xa1, 0x71, 0xd1, 0xc1, 0x91, 0x3e, 0xfe, 0x38, 0x74, 0x3c, 0x1e, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x36, 0x88, 0xa4, 0x0e, 0xa5, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x91, 0xa9, 0x9b, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0xc9, 0xad, 0x79, 0xf8, 0x8d, 0xe7, 0x63, 0x10, 0x8f, 0xe3, 0xd0, 0x41, 0x7b, 0x76, 0xfa, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xe2, 0x73, 0xec, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x31, 0x08, 0xfa, 0x71, 0xe8, 0xa0, 0x3d, 0x3b, 0xfd, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x1b, 0x44, 0x52, 0x87, 0xd2, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xc8, 0xd4, 0x4d, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x31, 0x08, 0xc8, 0x41, 0x24, 0x2b, 0x28, 0x1d, 0x87, 0x0e, 0xda, 0xb3, 0xd3, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x9f, 0x63, 0x47, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x14, 0x0d, 0xe7, 0xe3, 0xd0, 0x41, 0x7b, 0x76, 0xfa, 0x07, 0x6b, 0x61, 0x4a, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x10, 0x6c, 0x10, 0x49, 0x1d, 0x4a, 0x07, 0xf1, 0xda, 0xa1, 0x34, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x32, 0x75, 0x93, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x0c, 0x22, 0x3e, 0xfc, 0xc6, 0xf3, 0x31, 0x88, 0xf9, 0x71, 0xe8, 0xa0, 0x3d, 0x3b, 0xfd, 0x83, 0xb5, 0x30, 0x25, 0xc7, 0xa1, 0x83, 0xb5, 0x30, 0x25, 0x83, 0x60, 0x83, 0xd6, 0xae, 0xf3, 0x0f, 0x5a, 0x68, 0xce, 0x1f, 0x04, 0x0b, 0xbf, 0xf1, 0xfc, 0x20, 0x5a, 0x8d, 0x93, 0x0e, 0x5a, 0x68, 0xce, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x64, 0xe0, 0xfe, 0x3b, 0x1e, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x83, 0xc8, 0xd4, 0x4d, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x1a, 0x76, 0x72, 0x90, 0x6e, 0xe0, 0x70, 0x1c, 0x3a, 0x88, 0xb1, 0x1b, 0xa5, 0x83, 0x48, 0xc0, 0x51, 0x3a, 0x58, 0x0b, 0x53, 0xb2, 0x20, 0xd8, 0x60, 0x61, 0x41, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xc8, 0xa6, 0xae, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x1c, 0x24, 0x83, 0x68, 0x90, 0x1e, 0xac, 0x06, 0x20, 0x39, 0x0e, 0x1d, 0x87, 0x56, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x06, 0x8f, 0x42, 0x0e, 0x38, 0x88, 0x78, 0xdc, 0xa4, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x31, 0x1b, 0x9b, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0x36, 0xbf, 0x6b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x36, 0x75, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0xe3, 0xa0, 0xeb, 0x60, 0x9d, 0x16, 0xc0, 0xf1, 0xed, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x44, 0x2b, 0x6d, 0xd2, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd8, 0xfc, 0xae, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xd9, 0xd4, 0x35, 0x07, 0x51, 0x6d, 0x57, 0x74, 0x1c, 0x3a, 0x88, 0x56, 0xda, 0xa4, 0x41, 0xb0, 0xc1, 0x72, 0x53, 0x92, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xa9, 0x83, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x0f, 0x8e, 0xcc, 0xea, 0x83, 0x60, 0x83, 0x20, 0x8b, 0x5f, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0x5b, 0x71, 0x10, 0x73, 0x7a, 0x23, 0x07, 0x2b, 0xf1, 0x45, 0x8e, 0xc7, 0xc7, 0xe3, 0x05, 0xc1, 0x06, 0x51, 0x79, 0x74, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0xe0, 0x87, 0x0c, 0xbf, 0xf1, 0x7c, 0x71, 0x90, 0x6d, 0x88, 0xcb, 0x20, 0xd8, 0x20, 0xb6, 0x85, 0x8e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x83, 0x98, 0xf9, 0x04, 0x39, 0x88, 0x99, 0x4f, 0x90, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0xcd, 0x0f, 0xc4, 0x0f, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xa2, 0x75, 0x3c, 0x3f, 0x78, 0xbf, 0x33, 0xc2, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x17, 0x24, 0x24, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x0d, 0x86, 0xd4, 0xef, 0x20, 0xd8, 0x20, 0xea, 0x3e, 0x4b, 0x0e, 0x52, 0xfc, 0x1c, 0x8e, 0xc7, 0x07, 0x29, 0x2a, 0x27, 0xc7, 0xa1, 0x83, 0xf7, 0x3b, 0x23, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x78, 0x1a, 0x40, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x85, 0xdd, 0x34, 0x07, 0x31, 0xcc, 0x4d, 0x74, 0x1c, 0x3a, 0x78, 0xbf, 0x33, 0xc2, 0x20, 0x58, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xa7, 0x01, 0x24, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x3b, 0x38, 0x33, 0xfc, 0xc6, 0xf3, 0x83, 0x96, 0x8d, 0x44, 0x8e, 0x43, 0x07, 0xef, 0x77, 0x46, 0x18, 0x04, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0x9a, 0x76, 0x1d, 0x0c, 0xff, 0xd8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x58, 0x36, 0xab, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x1e, 0xbc, 0xf8, 0x8e, 0xe1, 0x38, 0x74, 0x1c, 0x3a, 0x78, 0xbf, 0x33, 0xc2, 0x71, 0xe8, 0x78, 0x7c, 0x1c, 0x1a, 0x04, 0x1b, 0x2c, 0x37, 0x25, 0x59, 0x1c, 0x7e, 0xe3, 0xf1, 0x20, 0xd8, 0x20, 0x7e, 0x35, 0x8c, 0x06, 0xc1, 0x86, 0x54, 0xcd, 0x41, 0x0b, 0x5d, 0xfa, 0xc7, 0xe3, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x58, 0x27, 0xc5, 0x36, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xc2, 0x6f, 0x3c, 0x1e, 0x04, 0x1b, 0xc4, 0x4c, 0x75, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0xf6, 0x20, 0x8a, 0xe3, 0x6b, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x62, 0xa6, 0x3a, 0xe9, 0x60, 0xd9, 0x86, 0xd4, 0xc1, 0xd2, 0x91, 0x92, 0x83, 0xf6, 0xec, 0xf4, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x1b, 0xbc, 0xec, 0x81, 0xe6, 0x20, 0xc5, 0xcf, 0x61, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x06, 0xa9, 0x64, 0xd8, 0xc3, 0x2e, 0x08, 0x36, 0x68, 0xc7, 0xfa, 0xfe, 0x20, 0xad, 0x13, 0x7b, 0xc3, 0xd1, 0x3e, 0xec, 0x82, 0x60, 0x83, 0x76, 0xac, 0xef, 0x0f, 0xd2, 0x6c, 0xb1, 0x37, 0xb4, 0x12, 0x1f, 0x76, 0x41, 0xb0, 0x41, 0x3b, 0xd6, 0xf7, 0x07, 0x09, 0xd2, 0xd8, 0x07, 0x09, 0x0e, 0xd0, 0xc7, 0xe3, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x36, 0x88, 0x27, 0x20, 0xa5, 0x41, 0xb0, 0x41, 0xbc, 0x84, 0x1e, 0x1d, 0xb4, 0x67, 0xa7, 0xbf, 0x20, 0xd8, 0xe0, 0xf5, 0xbd, 0x08, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x20, 0xd8, 0x20, 0x66, 0xaa, 0x93, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0xff, 0x73, 0x1d, 0x0c, 0x43, 0x9f, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0x66, 0xaa, 0x93, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x03, 0x6d, 0xb9, 0x0e, 0x86, 0xa1, 0xcf, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xa8, 0xb9, 0x4e, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x29, 0xd8, 0x49, 0x07, 0x6b, 0xe6, 0x6a, 0x8e, 0x43, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xcf, 0x46, 0x0c, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0x0e, 0xe0, 0xc9, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xed, 0x60, 0xa2, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xc1, 0xdb, 0xb3, 0x08, 0x0e, 0x56, 0x23, 0xc5, 0x1c, 0x87, 0x8e, 0x43, 0x2b, 0x08, 0x16, 0x17, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x61, 0x17, 0x04, 0x1b, 0xb4, 0x63, 0x7d, 0x7f, 0x90, 0x98, 0x63, 0xb2, 0xb0, 0x0b, 0x82, 0x0d, 0xda, 0x93, 0xbe, 0x3f, 0x18, 0xa3, 0x11, 0x0b, 0xbb, 0x20, 0xd8, 0xa0, 0x1d, 0xeb, 0xfb, 0x83, 0x51, 0x9f, 0x71, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0xc3, 0x29, 0x76, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x83, 0x78, 0xdb, 0xa8, 0x59, 0x10, 0x6c, 0x10, 0x8d, 0xcc, 0x16, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x06, 0xa3, 0x39, 0xe9, 0x90, 0xaa, 0x39, 0x0e, 0x0d, 0x82, 0x0d, 0xa2, 0x91, 0xd9, 0x62, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0xda, 0x20, 0xb2, 0x9e, 0x73, 0x0e, 0xa9, 0x9a, 0xe3, 0xd0, 0xb0, 0x0b, 0xbb, 0xb0, 0x0b, 0xbb, 0x20, 0xd8, 0x60, 0x70, 0x57, 0x0e, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x44, 0xf3, 0x20, 0x4e, 0x44, 0x94, 0x8e, 0x43, 0x1b, 0x62, 0x38, 0xec, 0x82, 0x60, 0x83, 0xc1, 0x5d, 0x39, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xcd, 0x83, 0x88, 0x01, 0x51, 0x3a, 0x0e, 0x1d, 0xd2, 0xb9, 0x0b, 0xbb, 0x20, 0xd8, 0x20, 0x86, 0x9d, 0x74, 0x0e, 0x56, 0xe2, 0xfe, 0x1c, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0x43, 0x0c, 0x87, 0x5d, 0xd8, 0x85, 0xdb, 0x20, 0xdd, 0xb6, 0xf9, 0x20, 0xa4, 0xc0, 0x17, 0x76, 0x41, 0xb0, 0xc1, 0xe0, 0xae, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x24, 0x78, 0x10, 0x93, 0x19, 0x4a, 0xc7, 0xa1, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x6f, 0x88, 0xe1, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0xbc, 0x33, 0x5e, 0xe3, 0x20, 0xa4, 0xc0, 0x17, 0x76, 0x41, 0xb0, 0xc1, 0xe0, 0xae, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x24, 0x78, 0x10, 0x6d, 0x14, 0x4a, 0xc7, 0xa1, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x1f, 0xd2, 0xb9, 0x0b, 0xbb, 0x20, 0xd8, 0x20, 0x86, 0x9d, 0x74, 0x0e, 0xde, 0x9c, 0x63, 0x73, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0xa7, 0x2a, 0x51, 0x1c, 0x1a, 0xb5, 0x0c, 0xbb, 0x41, 0xa2, 0x7b, 0xf7, 0x82, 0x60, 0x83, 0x28, 0xd8, 0xc7, 0x39, 0x18, 0x66, 0xe1, 0xc3, 0x6e, 0x50, 0x3e, 0x0d, 0x2d, 0x08, 0x36, 0x48, 0x1f, 0x27, 0x3a, 0x18, 0x66, 0xe1, 0xc3, 0x6e, 0x50, 0xf2, 0x20, 0x2d, 0x08, 0x36, 0x38, 0x4e, 0xc7, 0x1f, 0x0c, 0xb3, 0xf0, 0x41, 0xb0, 0x20, 0x19, 0x08, 0xca, 0xc1, 0x39, 0xef, 0x78, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xb1, 0xcc, 0x6f, 0x73, 0x90, 0x0e, 0x07, 0x71, 0x90, 0xb8, 0xd0, 0x7c, 0x1c, 0x3a, 0x1e, 0xaf, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x06, 0xf1, 0xb6, 0x51, 0x73, 0x10, 0xfd, 0x74, 0x4a, 0xc3, 0x2e, 0x08, 0x36, 0x18, 0xdc, 0x95, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xd1, 0x3c, 0x88, 0x31, 0x06, 0xa5, 0xe3, 0xd0, 0xc2, 0x2e, 0x08, 0x36, 0x88, 0x61, 0x27, 0x9d, 0x83, 0x11, 0x85, 0x7b, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xc1, 0x39, 0xf8, 0x7b, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x73, 0x10, 0x85, 0x0a, 0x4a, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x06, 0xf1, 0xb6, 0x51, 0xb3, 0x41, 0xf4, 0xd3, 0x29, 0x6d, 0x10, 0x87, 0x76, 0x4a, 0x83, 0x60, 0x83, 0x68, 0x64, 0xb6, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0x14, 0x8b, 0x36, 0x88, 0xda, 0xe8, 0x9c, 0x43, 0xaa, 0xe6, 0x38, 0x34, 0xec, 0xc2, 0x2e, 0xec, 0x82, 0x60, 0x83, 0xc1, 0x5d, 0x39, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xcd, 0x83, 0x98, 0xac, 0x51, 0x3a, 0x0e, 0x1d, 0xc4, 0xdc, 0x9e, 0xd2, 0x86, 0x18, 0x0e, 0xbb, 0xb0, 0x0b, 0xb7, 0x41, 0x62, 0x87, 0xf3, 0x41, 0x48, 0x81, 0x2f, 0xec, 0x82, 0x60, 0x83, 0xc1, 0x5d, 0x39, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x48, 0xf0, 0x20, 0x2e, 0x60, 0x94, 0x8e, 0x43, 0x87, 0x74, 0xee, 0xe1, 0x68, 0xdf, 0x10, 0xc3, 0x61, 0x17, 0x76, 0xe1, 0x36, 0x88, 0xb0, 0x16, 0xa5, 0x83, 0x90, 0x02, 0x5f, 0xd8, 0x05, 0xc1, 0x06, 0x83, 0xbb, 0x72, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0x91, 0xe0, 0x41, 0x24, 0xac, 0x28, 0x1d, 0x87, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0x7e, 0x48, 0xe7, 0x2e, 0xec, 0x82, 0x60, 0x83, 0x18, 0x76, 0xd2, 0x39, 0x38, 0x9c, 0xd3, 0x2f, 0xec, 0x82, 0x60, 0x83, 0x18, 0x76, 0xd2, 0x19, 0x24, 0x43, 0x06, 0xd1, 0x06, 0x8d, 0xb4, 0xa9, 0x1c, 0x87, 0x0e, 0xe9, 0xdc, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x8f, 0xc7, 0x07, 0xa7, 0x15, 0xdc, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x6e, 0x58, 0xdf, 0xdb, 0x10, 0xc3, 0x61, 0x17, 0x04, 0x0b, 0x92, 0x81, 0xe3, 0xef, 0x90, 0x5c, 0x3a, 0x34, 0x6a, 0x59, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0x08, 0x36, 0x78, 0x50, 0x04, 0xcd, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x6f, 0xe8, 0x4f, 0x7e, 0xb0, 0xa6, 0x4a, 0xe5, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x8f, 0x0f, 0x47, 0xfb, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0x68, 0xae, 0xaf, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0xd5, 0x0c, 0xbf, 0xf1, 0x7c, 0x90, 0x0c, 0xa4, 0xbf, 0x0e, 0xc9, 0xa5, 0xe3, 0xd0, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0xbf, 0xf1, 0x78, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x6c, 0xf0, 0x44, 0xee, 0x80, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0xfc, 0xc6, 0xe3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0xa2, 0x7f, 0xb8, 0x66, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x2d, 0xae, 0x44, 0x0d, 0x92, 0x81, 0xe2, 0x37, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x17, 0x5c, 0x0c, 0xc1, 0x0a, 0x2e, 0x87, 0xf4, 0x70, 0x8a, 0x6d, 0xf0, 0xd2, 0x61, 0x91, 0x15, 0xdc, 0x0d, 0xd1, 0x1a, 0xbc, 0x51, 0xc1, 0xe3, 0x70, 0x8a, 0xd5, 0x71, 0x68, 0xf8, 0x8d, 0xe7, 0x07, 0x0d, 0xbc, 0xa2, 0x1f, 0x87, 0x0e, 0xd6, 0xc2, 0x94, 0x0c, 0x82, 0x0d, 0x5a, 0xbb, 0xce, 0x3f, 0x58, 0x0b, 0x53, 0x32, 0x08, 0x16, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x10, 0xb8, 0x5c, 0x07, 0xc3, 0xd0, 0xe7, 0x60, 0x2d, 0x4c, 0xc9, 0x20, 0xd8, 0x20, 0x4e, 0x70, 0x94, 0x0e, 0xd6, 0xc2, 0x94, 0x1c, 0x34, 0x6f, 0x9d, 0x7f, 0xd0, 0xfe, 0xfc, 0xd2, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0x78, 0xb2, 0xf2, 0x60, 0x34, 0x0b, 0x1c, 0x8f, 0x87, 0x5f, 0x10, 0x2c, 0x2e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x10, 0x95, 0x0f, 0x4a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xa9, 0xdd, 0x1e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xd6, 0xb5, 0x8d, 0x1d, 0x1c, 0xb4, 0x7a, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0xe2, 0x41, 0xab, 0x3b, 0x4f, 0x83, 0x60, 0x41, 0xb0, 0x41, 0x64, 0xc8, 0x88, 0x1c, 0xa4, 0xc3, 0x41, 0x0c, 0x82, 0x0d, 0x89, 0xa9, 0x41, 0xb0, 0x38, 0xec, 0xc2, 0x1d, 0x34, 0xfd, 0xd3, 0xb4, 0x20, 0x58, 0x90, 0x0c, 0x04, 0xe9, 0xe0, 0x5c, 0x7f, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x12, 0x55, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x37, 0x48, 0x8b, 0xa2, 0x59, 0x10, 0x6c, 0x10, 0x3d, 0x29, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0x78, 0xac, 0xe0, 0x60, 0xf0, 0x4e, 0x1e, 0x87, 0x0e, 0x7b, 0x85, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x6c, 0x10, 0xe9, 0xed, 0x16, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x06, 0x89, 0x7a, 0x15, 0x07, 0x83, 0x77, 0xf2, 0x38, 0x34, 0xec, 0xc2, 0x2e, 0x08, 0x36, 0x38, 0x72, 0x2a, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x0e, 0x62, 0xd8, 0xd5, 0xe6, 0x38, 0xb4, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0x87, 0x0e, 0xd2, 0xa2, 0x68, 0x0e, 0xeb, 0x9b, 0x0b, 0xbb, 0xb0, 0x0b, 0xb7, 0x71, 0xe8, 0x20, 0xb9, 0x83, 0xf9, 0xb0, 0xbe, 0xb9, 0xb0, 0x0b, 0xbb, 0x70, 0x1b, 0x87, 0x0e, 0xd2, 0x1d, 0x9a, 0x0f, 0xeb, 0x9b, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x83, 0x24, 0x30, 0xed, 0x41, 0xb0, 0xb0, 0x1b, 0x24, 0x21, 0x62, 0x2f, 0x06, 0xcf, 0xe5, 0x0e, 0xbb, 0x70, 0x1b, 0xa4, 0x45, 0xd1, 0x1c, 0x87, 0x36, 0x78, 0xea, 0xd1, 0xda, 0xb0, 0x0b, 0xb7, 0x41, 0x72, 0x07, 0xf3, 0x71, 0x68, 0x31, 0x78, 0x2e, 0x6e, 0x90, 0x6d, 0x68, 0xbe, 0x3e, 0x08, 0x36, 0x88, 0x4a, 0x6a, 0xa4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xab, 0xaa, 0x71, 0x36, 0x78, 0xc3, 0x3c, 0xd2, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x2f, 0x48, 0x06, 0xa3, 0x83, 0x73, 0xde, 0xf1, 0x20, 0xd8, 0x20, 0x0d, 0x07, 0x7e, 0x90, 0x0c, 0x39, 0x88, 0x5f, 0x39, 0xa4, 0x83, 0x81, 0x2d, 0x7a, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf9, 0xc6, 0xa1, 0x05, 0xc1, 0x06, 0x51, 0x98, 0x1e, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x2d, 0xfc, 0xc6, 0xf3, 0x0d, 0x6b, 0xbf, 0x83, 0x60, 0x83, 0xe4, 0xd3, 0x94, 0xc3, 0xfa, 0xc4, 0x41, 0xe1, 0x96, 0x74, 0x1c, 0x3a, 0x18, 0x6f, 0x3a, 0x83, 0x68, 0x61, 0x37, 0x88, 0xdc, 0x9f, 0x99, 0x83, 0xc8, 0xfd, 0x99, 0x39, 0x24, 0x97, 0x8e, 0x6f, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xec, 0x86, 0x3c, 0xd6, 0x1a, 0x2c, 0x6f, 0x32, 0x3a, 0x8c, 0xcb, 0xb0, 0x0b, 0xb7, 0xc1, 0x39, 0x72, 0xf7, 0x60, 0xfc, 0x74, 0x2d, 0xec, 0x06, 0xa5, 0x2f, 0xd8, 0x8a, 0xc1, 0x6f, 0x75, 0x87, 0x71, 0x19, 0x7e, 0x41, 0xb4, 0x20, 0xdd, 0x60, 0xc9, 0x2e, 0xce, 0x61, 0x5c, 0x8e, 0xc7, 0x83, 0x60, 0x71, 0xf8, 0x05, 0xd1, 0x82, 0xf5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x84, 0x07, 0xa9, 0xeb, 0x03, 0xc7, 0xf3, 0xe3, 0xf1, 0xb0, 0x1b, 0xac, 0xe4, 0xfa, 0x5a, 0x83, 0x35, 0x80, 0x38, 0x87, 0x7c, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x34, 0x1f, 0x1c, 0xc4, 0xbb, 0x07, 0xd1, 0x82, 0xf5, 0x06, 0x09, 0x64, 0xd0, 0x87, 0x7c, 0xed, 0xf1, 0xf8, 0xf8, 0x36, 0xec, 0xc2, 0x6d, 0x90, 0xb6, 0x40, 0x7d, 0x30, 0x7e, 0xba, 0x56, 0xd8, 0x0d, 0x86, 0x66, 0xd7, 0x06, 0x51, 0xf7, 0x9c, 0x74, 0x10, 0x45, 0xcc, 0x49, 0x87, 0x71, 0x19, 0x76, 0x83, 0x13, 0xca, 0xf4, 0x06, 0x4d, 0x5e, 0x45, 0x0d, 0xbb, 0x70, 0x1b, 0xac, 0xd1, 0x56, 0x38, 0x18, 0x3f, 0x5d, 0x2b, 0x08, 0x36, 0x18, 0x09, 0x38, 0x07, 0x03, 0xbd, 0xec, 0x30, 0x2e, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x87, 0xdb, 0x60, 0x0d, 0x0a, 0xd0, 0xc1, 0xf8, 0xe9, 0x1a, 0x04, 0x0b, 0x82, 0x0d, 0x5a, 0x2a, 0x18, 0x18, 0x24, 0x03, 0xe1, 0x3a, 0x18, 0xfe, 0x65, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x57, 0x0c, 0x7e, 0xaf, 0x3f, 0xe4, 0x6b, 0x87, 0x5f, 0x10, 0x2d, 0x58, 0x6f, 0xb0, 0x5c, 0x25, 0xe7, 0x90, 0xaf, 0x3d, 0x1e, 0x0f, 0x82, 0xc5, 0xe1, 0x17, 0x44, 0x0b, 0xda, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xcd, 0xae, 0x0d, 0x12, 0x52, 0xee, 0x17, 0x04, 0x1b, 0x24, 0xc7, 0x3b, 0x1c, 0x24, 0x1b, 0x1a, 0x1c, 0xd6, 0x7e, 0x0f, 0xc9, 0xa5, 0xe3, 0xf1, 0xb0, 0x1b, 0x76, 0x0d, 0xd6, 0x60, 0xa9, 0x13, 0xce, 0x61, 0xed, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xda, 0x37, 0x48, 0x20, 0x83, 0x3e, 0xac, 0xfd, 0x1e, 0x14, 0x35, 0x67, 0xc7, 0xb7, 0xe3, 0xf1, 0x41, 0xc9, 0xd0, 0x34, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0xbe, 0xcc, 0x3d, 0x18, 0xcd, 0x02, 0xc7, 0xe3, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0xb8, 0xc1, 0x13, 0x9c, 0xc1, 0x0e, 0xd6, 0x84, 0xef, 0x1c, 0x8f, 0x07, 0xc1, 0x06, 0x4f, 0xba, 0x00, 0x5b, 0x5c, 0xd8, 0x85, 0xdb, 0xe0, 0x11, 0x37, 0x56, 0x87, 0x46, 0x82, 0x1b, 0xbc, 0x0a, 0xa1, 0x6d, 0xd8, 0x85, 0xdb, 0xe0, 0x51, 0x3d, 0x56, 0x87, 0x46, 0x82, 0x1b, 0xbc, 0xdc, 0xa1, 0x6d, 0xd8, 0x85, 0xdb, 0xe0, 0x91, 0x43, 0x56, 0x87, 0x46, 0x82, 0x1b, 0xbc, 0xaa, 0xa2, 0x6d, 0xd8, 0x85, 0xdb, 0xa0, 0x65, 0x29, 0xfb, 0x43, 0x23, 0xc1, 0x0d, 0x9e, 0xb5, 0xd1, 0x36, 0xec, 0xc2, 0x6d, 0xf0, 0xbe, 0x26, 0xab, 0x43, 0x23, 0xc1, 0x0d, 0x1e, 0x18, 0xd2, 0x36, 0xec, 0xc2, 0x6d, 0xf0, 0xde, 0x29, 0xab, 0x43, 0x23, 0xc1, 0x0d, 0x1e, 0xe6, 0xd2, 0x36, 0xec, 0x06, 0x0f, 0x75, 0xd5, 0xda, 0xe0, 0x89, 0x34, 0x6d, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x87, 0xdb, 0xe0, 0x25, 0x33, 0x56, 0x87, 0x46, 0x82, 0x07, 0xaf, 0x24, 0x68, 0x5b, 0x10, 0x6c, 0xd0, 0xf2, 0x27, 0xfa, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x38, 0x38, 0xa3, 0x1f, 0x9c, 0x9f, 0x68, 0x0f, 0x69, 0xb8, 0xe3, 0xd0, 0x82, 0x60, 0x83, 0xe6, 0xf1, 0x47, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xd0, 0xe2, 0x4a, 0xd4, 0x20, 0x19, 0x08, 0xd7, 0xa1, 0x3f, 0xd1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0xb0, 0x1b, 0x8c, 0x5e, 0xac, 0x0d, 0x06, 0x0d, 0xc6, 0xe1, 0x14, 0x3b, 0x1e, 0x1f, 0x87, 0x0e, 0x46, 0x66, 0xef, 0xf1, 0x78, 0xf8, 0x05, 0xc1, 0x86, 0x73, 0x7d, 0x71, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x87, 0xdd, 0xb0, 0x16, 0xba, 0x21, 0x5f, 0x3b, 0x08, 0x36, 0x68, 0xfc, 0x33, 0xe4, 0xa0, 0x94, 0x6e, 0x3b, 0xbe, 0x1d, 0x8f, 0x57, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0xbb, 0x21, 0x8f, 0xb5, 0x61, 0x5c, 0x86, 0x5f, 0x10, 0x2d, 0x48, 0x0f, 0xca, 0x71, 0xad, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0xe1, 0xab, 0xd7, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xa4, 0xbb, 0xef, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0xda, 0x03, 0xbd, 0x3f, 0x0e, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x8e, 0x83, 0xf6, 0x83, 0x56, 0x77, 0x9e, 0x8e, 0x6f, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x90, 0x0c, 0x66, 0x83, 0x68, 0x41, 0x78, 0x38, 0xda, 0x0f, 0xc9, 0xa5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xcd, 0x6c, 0x04, 0x6c, 0x90, 0xe0, 0x44, 0x33, 0xfc, 0xc6, 0xf3, 0x61, 0x37, 0x28, 0x7d, 0xc1, 0x36, 0x8c, 0xcb, 0x06, 0x09, 0x65, 0x27, 0x87, 0x71, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xd9, 0x86, 0xb8, 0x0c, 0x82, 0x0d, 0x56, 0xd9, 0xfd, 0x0f, 0x92, 0x81, 0xe9, 0x1b, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0xa8, 0x7f, 0x07, 0xc3, 0x51, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x71, 0xc0, 0x0f, 0x93, 0x2b, 0x0b, 0x37, 0x7c, 0x51, 0x33, 0xf0, 0x62, 0xf2, 0x06, 0xab, 0xe4, 0x48, 0x07, 0x78, 0xc7, 0xde, 0xda, 0xda, 0xc2, 0xdc, 0xc8, 0x01, 0x9e, 0xb2, 0x36, 0xb1, 0x32, 0x72, 0xe0, 0xd1, 0xe4, 0x0d, 0x9a, 0xff, 0xfd, 0xdc, 0xe0, 0xc5, 0x27, 0x96, 0x03, 0x7c, 0x6b, 0x65, 0x79, 0x67, 0x65, 0xee, 0x06, 0x0b, 0xd7, 0xb0, 0x37, 0x78, 0x58, 0x88, 0xc8, 0x00, 0x0f, 0x5c, 0x98, 0x5c, 0x58, 0xbb, 0xc1, 0x33, 0x78, 0x05, 0x37, 0x78, 0x7c, 0x89, 0xdf, 0x80, 0x77, 0x27, 0x26, 0x77, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0xc5, 0x83, 0xc7, 0x22, 0x69, 0x2c, 0x0e, 0xbb, 0xb0, 0x1b, 0xa4, 0x1d, 0xfd, 0x2c, 0xec, 0xc2, 0x6d, 0x88, 0xe1, 0x41, 0x9b, 0x00, 0x01, 0x0b, 0xbb, 0xc1, 0xaa, 0x9a, 0xa0, 0x85, 0x5d, 0xd8, 0x85, 0x1e, 0xb4, 0x49, 0x47, 0xb2, 0x70, 0x1b, 0x62, 0x38, 0x41, 0x10, 0x0f, 0x47, 0xfb, 0xc2, 0x6d, 0x88, 0xe1, 0x41, 0x83, 0x0a, 0x01, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x1f, 0x8e, 0xf6, 0xc3, 0xd1, 0xbe, 0x20, 0xd8, 0x20, 0xfd, 0x4b, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x04, 0x53, 0x7c, 0xc8, 0xd7, 0x1e, 0x87, 0x06, 0xc1, 0x06, 0x6d, 0x02, 0x04, 0x0c, 0xbf, 0x20, 0x5a, 0x70, 0x7e, 0xd8, 0x0d, 0xc9, 0x8e, 0x0d, 0x31, 0x1c, 0x76, 0xe1, 0x36, 0x78, 0x63, 0x90, 0xc0, 0x71, 0x68, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x9e, 0xe1, 0x23, 0x70, 0x1c, 0x3a, 0xa4, 0x73, 0x8f, 0xc7, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xac, 0x36, 0xdc, 0x1c, 0x0c, 0x6c, 0xd1, 0x41, 0xb0, 0xc1, 0x8b, 0xe2, 0x77, 0x36, 0x48, 0x3f, 0xb5, 0x18, 0x04, 0x1b, 0xbc, 0x34, 0x4c, 0x6e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xb0, 0x0b, 0xbb, 0xc1, 0x68, 0xeb, 0x5c, 0xd8, 0x85, 0xdd, 0x60, 0x18, 0xc3, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xbb, 0x41, 0x11, 0xd9, 0xb4, 0x20, 0x58, 0x90, 0x0c, 0xaa, 0x0e, 0x82, 0x9c, 0xff, 0x60, 0x98, 0x85, 0x1f, 0x8e, 0xf6, 0x43, 0x3a, 0xf7, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x6b, 0x90, 0x50, 0x76, 0xb2, 0x41, 0x8a, 0x26, 0xf3, 0x06, 0x89, 0x4a, 0xcf, 0x87, 0xc4, 0xcc, 0x06, 0x89, 0x4a, 0xcf, 0x83, 0x60, 0x83, 0x93, 0x0f, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x92, 0x53, 0x62, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xd5, 0x9f, 0x12, 0x83, 0x60, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x7c, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x1c, 0x94, 0x1f, 0xac, 0x68, 0xe4, 0x3a, 0xbe, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x1c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd8, 0x2b, 0x1c, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x0f, 0x16, 0x2f, 0x00, 0x1d, 0xdf, 0x0e, 0x86, 0x31, 0xec, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0xbb, 0x61, 0x7d, 0x6f, 0xe3, 0xd0, 0x06, 0x09, 0x65, 0x27, 0x83, 0x60, 0x83, 0xf7, 0x29, 0x3f, 0x1d, 0x0c, 0x4e, 0x9f, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xec, 0x86, 0xf8, 0x2f, 0x08, 0x36, 0x58, 0xf8, 0xea, 0x75, 0x48, 0xb4, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xa9, 0xdd, 0x1e, 0x87, 0x34, 0xdc, 0x20, 0x58, 0x1c, 0x76, 0xc3, 0xfa, 0xde, 0x86, 0xb5, 0xdf, 0x41, 0x32, 0x64, 0x10, 0x2d, 0x68, 0x1f, 0x76, 0xe1, 0x36, 0x48, 0x8b, 0xa2, 0x39, 0x44, 0x73, 0x0d, 0x92, 0x9c, 0xa3, 0x37, 0x28, 0x22, 0x25, 0x37, 0x38, 0xe9, 0xed, 0x6e, 0xb0, 0x06, 0x05, 0x68, 0x83, 0x12, 0x28, 0x72, 0x83, 0x94, 0x73, 0x92, 0xc3, 0xda, 0xef, 0xb0, 0x0b, 0xb7, 0x41, 0x92, 0x73, 0xf4, 0x21, 0x9a, 0x6b, 0x90, 0xe4, 0x1c, 0xbd, 0xc1, 0x39, 0x72, 0x77, 0x83, 0x55, 0xdd, 0x0b, 0x1b, 0x94, 0x22, 0x92, 0x07, 0xd1, 0xcb, 0xb1, 0x34, 0xec, 0x06, 0x69, 0x64, 0xcc, 0x6b, 0x90, 0xe4, 0x1c, 0xbd, 0xc1, 0xc2, 0x7a, 0x9c, 0x0d, 0x1e, 0x48, 0xfa, 0xb5, 0x41, 0x2a, 0x42, 0xf5, 0x41, 0xf4, 0x72, 0x2c, 0x0d, 0xbb, 0x70, 0x1b, 0xa4, 0x9f, 0x5a, 0x1c, 0xa2, 0xb9, 0x06, 0x49, 0xce, 0xd1, 0x1b, 0xac, 0x63, 0x06, 0x3b, 0x88, 0x3e, 0x8e, 0xa5, 0x61, 0x17, 0x6e, 0x83, 0x44, 0xa5, 0xe7, 0x43, 0x34, 0xd7, 0x20, 0xc9, 0x39, 0x7a, 0x83, 0x36, 0xb8, 0x06, 0x0e, 0xa2, 0x8f, 0x63, 0x69, 0x90, 0x6d, 0x68, 0xbe, 0x7e, 0x30, 0x94, 0x48, 0x0e, 0x8a, 0x9a, 0xb3, 0xe3, 0xdb, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xba, 0x66, 0x2e, 0x08, 0x36, 0x78, 0xe1, 0x92, 0xc0, 0xa1, 0x51, 0xcb, 0x20, 0xd8, 0x60, 0xe1, 0xab, 0xd7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x5e, 0xb8, 0x24, 0x70, 0x48, 0xc3, 0x0d, 0xbf, 0xf1, 0x7c, 0x83, 0x84, 0x94, 0xfb, 0x83, 0x88, 0x7d, 0x28, 0x3a, 0x0e, 0x1d, 0x8f, 0x8f, 0xc7, 0x83, 0x60, 0x83, 0x82, 0x5a, 0x6c, 0x71, 0x10, 0x6c, 0x10, 0xdd, 0x01, 0x33, 0x07, 0x07, 0xad, 0xde, 0xe3, 0xf1, 0xf1, 0x78, 0x0c, 0x46, 0x73, 0x99, 0x05, 0x78, 0xe8, 0xd2, 0xe8, 0xd8, 0xca, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xf0, 0x92, 0xea, 0x89, 0xe8, 0x49, 0x07, 0x44, 0xae, 0xcc, 0x2c, 0x6c, 0x8c, 0xee, 0x4d, 0x0e, 0x84, 0xee, 0x0d, 0x64, 0x0e, 0x2d, 0x4c, 0xae, 0x0c, 0x04, 0x2d, 0xed, 0x0c, 0xad, 0x85, 0xad, 0xcc, 0xae, 0x8c, 0x0d, 0xe4, 0x2c, 0x8c, 0xae, 0x6c, 0x0e, 0x84, 0x2d, 0x6d, 0xad, 0x0c, 0x64, 0x65, 0x2e, 0x0c, 0xef, 0x6d, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0xa2, 0x9c, 0x55, 0x66, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x17, 0xf2, 0xc2, 0x6c, 0xf0, 0x16, 0x3f, 0x95, 0x0d, 0xde, 0xc2, 0xd4, 0xb2, 0x41, 0x12, 0x8f, 0xe8, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xee, 0xd0, 0xde, 0x83, 0xb6, 0xad, 0xc7, 0xdb, 0x60, 0x8d, 0x54, 0xd3, 0x06, 0x6d, 0x5b, 0x8f, 0x6f, 0x78, 0x50, 0x72, 0x83, 0xb4, 0xef, 0xa8, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0x9c, 0x0d, 0x5d, 0x36, 0x38, 0xb1, 0xdf, 0x6c, 0x70, 0x36, 0x74, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x2f, 0x8a, 0x86, 0xd9, 0xe0, 0x2c, 0x2b, 0xb5, 0xc1, 0x23, 0x2d, 0x55, 0xd6, 0xf0, 0xc6, 0xdd, 0xc1, 0x93, 0x19, 0x62, 0xd6, 0xf0, 0x17, 0xcd, 0x06, 0x4f, 0x09, 0x0e, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0xd9, 0xe0, 0xc5, 0x31, 0x29, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x07, 0x51, 0xce, 0x2a, 0x73, 0xf0, 0xc2, 0x94, 0x95, 0x35, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xe4, 0xa6, 0x6f, 0xb0, 0x7c, 0xed, 0x75, 0x0d, 0x6f, 0xeb, 0x1c, 0x3c, 0x3b, 0x15, 0xa6, 0xea, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x78, 0x1e, 0xdc, 0xef, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0xc1, 0xf3, 0xe0, 0x7e, 0x37, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x9f, 0x43, 0x4b, 0x83, 0x03, 0xb9, 0x4b, 0x23, 0xa3, 0x43, 0x03, 0x19, 0x63, 0x0b, 0x9b, 0x9b, 0xdb, 0x20, 0xd8, 0x4c, 0xd7, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0xc1, 0x3b, 0xe1, 0x40, 0xd7, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0xdd, 0x41, 0x1c, 0xcc, 0xca, 0xac, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x08, 0xa7, 0x95, 0x59, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xb1, 0x6b, 0x2b, 0xb3, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xa2, 0x0f, 0x56, 0xa6, 0x15, 0xf0, 0xc7, 0xd8, 0xc2, 0xdc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe8, 0x02, 0x5a, 0x6a, 0x00, 0xbf, 0x39, 0xb4, 0x34, 0x38, 0x10, 0xba, 0x37, 0x10, 0xb9, 0x30, 0xb7, 0xb5, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0xd3, 0x30, 0x4b, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x3d, 0x33, 0xc1, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0x9c, 0x85, 0x4c, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0xf1, 0xef, 0x06, 0x45, 0xa5, 0xf8, 0x41, 0xf4, 0xe1, 0x2c, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0x77, 0x83, 0xd4, 0x4c, 0xd8, 0x83, 0x82, 0x78, 0x7c, 0x0d, 0x6f, 0xdc, 0x1d, 0x44, 0x42, 0xcf, 0xd2, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x01, 0xcb, 0x7a, 0x90, 0x9a, 0x09, 0xbb, 0x86, 0x37, 0xee, 0x0e, 0x22, 0xb7, 0x67, 0x69, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x1b, 0xa4, 0x66, 0xc2, 0x1e, 0x9c, 0x99, 0xdb, 0xd6, 0xf0, 0xc6, 0xdd, 0x41, 0xac, 0xf9, 0x2c, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0x77, 0x83, 0xd4, 0x4c, 0xd8, 0x83, 0xa3, 0xca, 0xdc, 0x1a, 0xde, 0xb8, 0x3b, 0x88, 0x8e, 0x9f, 0xa5, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xdf, 0x0d, 0x52, 0x33, 0x61, 0x0f, 0x8e, 0xae, 0x72, 0x1b, 0xde, 0xb8, 0x3b, 0x88, 0xe7, 0x9f, 0xa5, 0xd5, 0x20, 0xca, 0x59, 0x65, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xa2, 0x9c, 0x55, 0xa6, 0x01, 0xfe, 0xb0, 0x3a, 0xba, 0x37, 0xb1, 0xb7, 0xb9, 0xb9, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0xd3, 0x30, 0x4b, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0x6d, 0xeb, 0xf1, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x56, 0x0f, 0xc9, 0xaf, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x74, 0x01, 0x2d, 0x75, 0x10, 0x7d, 0x38, 0x4b, 0x1b, 0x04, 0xe9, 0xe9, 0x06, 0xab, 0xa3, 0xe4, 0xd7, 0x20, 0xb2, 0x79, 0x96, 0x0e, 0x22, 0x10, 0x67, 0x69, 0x0d, 0x22, 0xb1, 0x67, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x99, 0xb8, 0x07, 0xf1, 0x48, 0xb4, 0xb4, 0x06, 0xb1, 0xe3, 0xb3, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x4c, 0xdc, 0x0d, 0x4e, 0xcd, 0x6d, 0x07, 0xd1, 0x87, 0xb3, 0xb4, 0x06, 0xd1, 0xee, 0xb3, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x4c, 0xdc, 0x0d, 0x0e, 0x0b, 0x6c, 0x07, 0xd1, 0x87, 0xb3, 0xb4, 0x06, 0xf1, 0xf9, 0xb3, 0x74, 0x10, 0x2b, 0x54, 0x4b, 0xad, 0x06, 0xcf, 0x36, 0x78, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x78, 0xb6, 0xc1, 0x5b, 0x03, 0x78, 0x84, 0xd5, 0xd1, 0xbd, 0x8d, 0x85, 0xb9, 0xbd, 0xb9, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x98, 0x86, 0x59, 0xda, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0x21, 0x65, 0xb2, 0x41, 0xdb, 0xd6, 0xe3, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x64, 0x61, 0xe4, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0x39, 0xab, 0x4c, 0x07, 0xd1, 0x87, 0xb3, 0xb4, 0xe1, 0x17, 0x97, 0x0d, 0x22, 0x10, 0x67, 0x69, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x22, 0x10, 0x67, 0x69, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x59, 0x18, 0xd9, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xcf, 0x4e, 0x85, 0x39, 0x88, 0xb6, 0xae, 0xa5, 0x3a, 0x9c, 0x62, 0xb5, 0x86, 0xef, 0xdb, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x83, 0x67, 0x44, 0xa7, 0x1f, 0x9c, 0x0f, 0xce, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x4c, 0xc3, 0x2c, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xb6, 0xad, 0xc7, 0x37, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0x89, 0xcd, 0x06, 0xb1, 0x0a, 0xb5, 0xb4, 0x41, 0x31, 0x89, 0xb9, 0x06, 0x4b, 0x31, 0xaa, 0x36, 0x5c, 0x5d, 0x07, 0xd1, 0xee, 0xb3, 0x74, 0xf8, 0x72, 0x72, 0x83, 0x08, 0xc4, 0x59, 0x3a, 0x88, 0x91, 0xad, 0xa5, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0xfc, 0xb1, 0x34, 0xba, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x92, 0xc9, 0x96, 0x1a, 0xc0, 0x4b, 0xae, 0xcc, 0x8d, 0xac, 0x4c, 0x0e, 0x64, 0x0e, 0x2d, 0x0d, 0x6e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0xbb, 0x43, 0x7b, 0x0f, 0x8e, 0xad, 0xae, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xa4, 0x27, 0xba, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0x59, 0xc8, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x14, 0xff, 0x1e, 0x44, 0x28, 0xd5, 0xd2, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0x48, 0xcd, 0x84, 0x3d, 0x08, 0x56, 0xd6, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x62, 0xc6, 0xe0, 0x83, 0xb8, 0xc1, 0x59, 0xda, 0xf0, 0x41, 0xce, 0x06, 0x71, 0x86, 0xb4, 0xb4, 0x06, 0x05, 0x69, 0xec, 0x06, 0x2d, 0x92, 0xf6, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x33, 0x06, 0x6f, 0xb0, 0x7c, 0xed, 0x75, 0x83, 0xd8, 0xab, 0x5a, 0x6a, 0x83, 0x24, 0x03, 0xc2, 0x0d, 0x4e, 0x04, 0x6d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x83, 0x85, 0xe0, 0x06, 0xe7, 0x05, 0x9a, 0x35, 0xbc, 0xad, 0x73, 0xd0, 0xea, 0x6e, 0x6f, 0x6b, 0x78, 0x16, 0xef, 0x20, 0xb6, 0xb0, 0x65, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa7, 0xb7, 0xb8, 0x0d, 0x0e, 0x2b, 0x73, 0x07, 0x11, 0xef, 0xb6, 0xd4, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x96, 0x61, 0xbf, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xd6, 0xb1, 0x6d, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0xa3, 0xeb, 0xe0, 0x06, 0xeb, 0xd6, 0xe1, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xeb, 0xfb, 0xe1, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x06, 0x45, 0xa5, 0xf8, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x04, 0x4f, 0xed, 0x41, 0x14, 0xa9, 0x2d, 0x75, 0x50, 0x10, 0x8f, 0x1f, 0x44, 0x1f, 0xce, 0x52, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc5, 0x2b, 0x71, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0xcd, 0xe7, 0x20, 0x69, 0x48, 0xf6, 0x20, 0x58, 0x59, 0x0f, 0x0a, 0xe2, 0xf1, 0x83, 0xe8, 0xc3, 0x59, 0x6a, 0x83, 0x25, 0x65, 0x73, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf5, 0xfd, 0x70, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x52, 0x88, 0xfc, 0x20, 0xfa, 0x70, 0x96, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x5e, 0x89, 0xdb, 0x20, 0x3a, 0xa6, 0x96, 0x6a, 0x35, 0x78, 0xb6, 0xc1, 0xdb, 0x86, 0xe7, 0x49, 0x36, 0x88, 0xd1, 0xab, 0xa5, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x83, 0x08, 0x82, 0x59, 0xda, 0x60, 0x75, 0xc0, 0xd2, 0x06, 0x31, 0x9d, 0xb5, 0xb4, 0xe1, 0x17, 0x97, 0x0d, 0x22, 0x97, 0x66, 0x69, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x25, 0xb9, 0xe9, 0x1b, 0x2c, 0x5f, 0x7b, 0x3d, 0x78, 0x8e, 0x57, 0xcb, 0x1a, 0x7e, 0x84, 0x39, 0x78, 0x2c, 0x47, 0xf1, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x49, 0x6e, 0xfa, 0xc1, 0x0b, 0x53, 0x56, 0x0e, 0xe2, 0xf6, 0x66, 0xa9, 0xc3, 0x29, 0xb6, 0x80, 0x4f, 0x57, 0x16, 0xd6, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0x7c, 0xe0, 0x52, 0x07, 0x6f, 0x6e, 0x62, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x00, 0xcf, 0x84, 0x5c, 0x40, 0xee, 0xd0, 0xde, 0xca, 0xec, 0xca, 0xe4, 0x40, 0xe6, 0xd0, 0xde, 0xea, 0xd8, 0xc8, 0x40, 0xc4, 0xca, 0x40, 0xc2, 0xc4, 0xd8, 0xca, 0x40, 0xe8, 0xde, 0x40, 0xc6, 0xde, 0xdc, 0xe8, 0xe4, 0xde, 0xd8, 0x40, 0xd0, 0xca, 0xe4, 0x40, 0xe6, 0xd0, 0xd2, 0xe0, 0x95, 0x00, 0xf4, 0xa3, 0x43, 0x2b, 0x9b, 0x2b, 0x03, 0xa1, 0xbb, 0x7b, 0x03, 0xa1, 0x43, 0x4b, 0x73, 0x3b, 0x9b, 0x03, 0x09, 0x93, 0x2b, 0x73, 0x3b, 0xa1, 0x03, 0x79, 0x13, 0xb3, 0x4b, 0x7b, 0xab, 0x9b, 0x63, 0xcb, 0x03, 0x29, 0x8b, 0xab, 0x0b, 0x63, 0x03, 0x09, 0x73, 0xcb, 0x6b, 0x7b, 0x93, 0x2b, 0x63, 0x4b, 0x00, 0xba, 0x86, 0xb9, 0x91, 0x81, 0xa4, 0xd1, 0x9d, 0xcc, 0x81, 0xb4, 0xbd, 0xc9, 0x95, 0x81, 0xa4, 0xb5, 0xc1, 0xbd, 0xc9, 0xd1, 0x85, 0xb9, 0xd1, 0x81, 0x98, 0xbd, 0xc9, 0x81, 0xac, 0xd0, 0x95, 0x85, 0xb5, 0x81, 0xd0, 0xbd, 0x81, 0xcc, 0x85, 0xd1, 0xa5, 0xcd, 0x99, 0xe5, 0x81, 0x08, 0x81, 0xd0, 0xa1, 0x85, 0xb9, 0x81, 0x04, 0xb1, 0x25, 0x80, 0xee, 0xb9, 0x37, 0x10, 0xb7, 0xb7, 0x3b, 0x90, 0x15, 0xba, 0xb2, 0xb0, 0x36, 0x10, 0xb5, 0xba, 0x39, 0x3a, 0x90, 0xb6, 0xb2, 0x30, 0xb7, 0x39, 0x10, 0x11, 0xb4, 0x32, 0x39, 0x11, 0xd7, 0x4a, 0x00, 0xda, 0xa2, 0xcc, 0xa1, 0xa5, 0xc1, 0xcd, 0x81, 0x8c, 0x85, 0xb9, 0x81, 0x90, 0x95, 0x99, 0xa5, 0xb9, 0xa5, 0xd1, 0x95, 0xb1, 0xe5, 0x81, 0x88, 0x95, 0x81, 0xd0, 0xc9, 0xd5, 0xcd, 0xd1, 0x95, 0x91, 0x81, 0xd0, 0xbd, 0x81, 0x8c, 0xbd, 0xb9, 0xd1, 0xc9, 0xbd, 0xb1, 0x81, 0xd0, 0xa1, 0x95, 0xb5, 0xcd, 0x95, 0xb1, 0xd9, 0x95, 0xcd, 0xa5, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0x5a, 0x99, 0x7c, 0xd0, 0xb6, 0xf5, 0xf8, 0x41, 0x3c, 0xc3, 0x2c, 0x6d, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0xfe, 0xcd, 0xd9, 0xe0, 0x61, 0x4d, 0xcc, 0x07, 0x11, 0x88, 0xb3, 0xb4, 0x1a, 0xbc, 0xd6, 0x3c, 0x68, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0xb5, 0xe6, 0x41, 0x0d, 0xf0, 0xa3, 0x95, 0xc9, 0x81, 0xb4, 0xbd, 0xbd, 0xb9, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x18, 0x9d, 0x5c, 0xda, 0xf0, 0x17, 0xcd, 0x86, 0x0f, 0x56, 0x37, 0x3c, 0xc2, 0xba, 0x86, 0x7f, 0x73, 0x36, 0x88, 0x81, 0xa5, 0xa5, 0x83, 0x58, 0x85, 0x5a, 0x5a, 0xc3, 0xbf, 0x39, 0x1b, 0x3c, 0xac, 0x89, 0x79, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x71, 0x9c, 0x83, 0x28, 0x67, 0x95, 0xe9, 0x20, 0xfa, 0x70, 0x96, 0x3a, 0x9c, 0x62, 0x6b, 0x10, 0xe5, 0xac, 0x32, 0x1b, 0x9e, 0x27, 0xd9, 0x20, 0x7e, 0x9b, 0x96, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x2c, 0xf5, 0x2d, 0x6d, 0xb0, 0x3a, 0x60, 0x69, 0x83, 0xb6, 0xad, 0xc7, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0xe4, 0xd2, 0x2c, 0xad, 0xc1, 0xd1, 0x75, 0x70, 0x83, 0x38, 0xf9, 0x5b, 0x5a, 0xc3, 0x8f, 0x30, 0x07, 0xd1, 0x6a, 0xb3, 0x74, 0x10, 0xaf, 0x80, 0x4b, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x02, 0x3c, 0x6d, 0x69, 0x6c, 0x6c, 0xf9, 0x06, 0x49, 0x0b, 0x46, 0x1b, 0x94, 0x65, 0xd8, 0x1b, 0x24, 0xf1, 0x88, 0xce, 0x32, 0x0b, 0xf0, 0x84, 0x89, 0xbd, 0xd5, 0xd1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xb1, 0x14, 0xba, 0xd4, 0x00, 0x9e, 0x2b, 0x2b, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x3a, 0x6d, 0x69, 0x6c, 0x6c, 0x79, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3e, 0xea, 0xdc, 0xd2, 0xe8, 0x40, 0xe4, 0xca, 0xd8, 0xc2, 0xe8, 0xd2, 0xec, 0xca, 0x40, 0xda, 0xe6, 0xca, 0xc6, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xdd, 0xd5, 0xb9, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x65, 0x13, 0xe6, 0xc1, 0x81, 0xaf, 0x75, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0x37, 0x4f, 0x37, 0x28, 0xe1, 0x31, 0x17, 0xf0, 0xee, 0xea, 0xdc, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x82, 0x77, 0x7b, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xf8, 0xc2, 0xe4, 0xde, 0xea, 0xdc, 0xc8, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf5, 0x41, 0x24, 0x9e, 0x2e, 0xb5, 0x1a, 0xb4, 0x80, 0x80, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xd0, 0x02, 0x02, 0x4a, 0x03, 0xf8, 0xd6, 0xb9, 0xa5, 0xd1, 0x81, 0xb4, 0xcd, 0x95, 0x8d, 0x81, 0x90, 0xa5, 0x99, 0x99, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x75, 0x6e, 0xe5, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xd9, 0x84, 0x79, 0x70, 0x4e, 0x6d, 0xdd, 0xf0, 0x17, 0xcd, 0x06, 0xe7, 0xcd, 0xd3, 0x0d, 0x4a, 0x78, 0xcc, 0x05, 0xbc, 0x3a, 0xb7, 0xb2, 0x0d, 0x22, 0xfb, 0x74, 0x69, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x6f, 0x4b, 0x63, 0x63, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0x51, 0xe8, 0xba, 0xd4, 0x0a, 0xf8, 0x6d, 0x73, 0x65, 0xe3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x6c, 0xc2, 0x2e, 0x35, 0x80, 0x27, 0x10, 0x99, 0x1c, 0x08, 0xdd, 0x1b, 0x08, 0x50, 0x1d, 0x19, 0x48, 0xdb, 0xdc, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0xc1, 0x49, 0xb5, 0x75, 0xc3, 0xd7, 0x2f, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0xf5, 0xcb, 0x86, 0x0f, 0x61, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x28, 0xb0, 0x6e, 0x78, 0x5a, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x0a, 0xac, 0x1b, 0xbc, 0xed, 0xcf, 0x7d, 0x83, 0xc5, 0x6c, 0xf5, 0xb5, 0x1a, 0x44, 0xe4, 0xeb, 0xd2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x44, 0xbe, 0x2e, 0x35, 0x80, 0x47, 0xdb, 0x5c, 0xd9, 0x18, 0x08, 0x59, 0x9a, 0x99, 0xd9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xed, 0x7f, 0x74, 0x1e, 0x9c, 0x54, 0x5b, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x79, 0xf3, 0x74, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0x75, 0x9d, 0x6d, 0x07, 0x8d, 0xb1, 0x09, 0xaf, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0xc0, 0x83, 0x69, 0x9b, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x59, 0x6f, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x92, 0x9b, 0xbe, 0x41, 0x22, 0x5c, 0xf0, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0x26, 0xec, 0x52, 0x07, 0x4d, 0xb1, 0x09, 0xb7, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0x7c, 0xdb, 0xdc, 0xe1, 0x14, 0xab, 0x35, 0x88, 0x74, 0xd4, 0xa5, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x48, 0x47, 0x5d, 0x6a, 0x00, 0x4f, 0xb9, 0x32, 0xb6, 0x30, 0xba, 0x34, 0xbb, 0x32, 0x90, 0xb6, 0xb9, 0xb2, 0xb1, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0xef, 0xae, 0xcc, 0x3d, 0x38, 0xf2, 0xb5, 0x6e, 0xf8, 0x8b, 0x66, 0x83, 0xf3, 0xe6, 0xe9, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x1a, 0xde, 0xd6, 0x39, 0x78, 0x41, 0x75, 0xcc, 0x41, 0xba, 0xeb, 0xe6, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0x41, 0x02, 0xe1, 0xe6, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x6f, 0x14, 0x37, 0x88, 0x61, 0xe1, 0xa5, 0x83, 0x54, 0xd7, 0xcd, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x59, 0x6f, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x92, 0x9b, 0xbe, 0x41, 0x22, 0x5c, 0xf0, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xfa, 0x79, 0x97, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x0f, 0xa2, 0x9a, 0x78, 0xa9, 0x0e, 0x62, 0xb9, 0x77, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf5, 0xb6, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0xac, 0xd9, 0x78, 0x5b, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x24, 0xd9, 0xcd, 0x83, 0x18, 0x16, 0x5e, 0x5a, 0x83, 0x17, 0x54, 0xc7, 0x1c, 0xa4, 0xbb, 0x6e, 0xd6, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x2b, 0xc0, 0x47, 0x96, 0x66, 0x66, 0x56, 0x26, 0x6f, 0x90, 0x7a, 0x51, 0xbc, 0xc1, 0x2a, 0x2c, 0xa7, 0x35, 0xbc, 0xad, 0x73, 0xf0, 0x14, 0xed, 0xba, 0x0d, 0x56, 0x61, 0x39, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0x3e, 0xb3, 0x37, 0xb9, 0xb6, 0x30, 0xba, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0xa2, 0xbb, 0x68, 0x66, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xba, 0x8b, 0x66, 0x1a, 0x80, 0x17, 0xb6, 0x37, 0xb7, 0xb3, 0xb2, 0x39, 0x3a, 0x90, 0xb9, 0x3a, 0xb1, 0xb9, 0xb2, 0xb8, 0xba, 0x32, 0xb7, 0xb1, 0xb2, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0xa2, 0xbb, 0x68, 0x66, 0x83, 0x37, 0x0b, 0x9f, 0xcc, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0x4e, 0xcc, 0x3d, 0x28, 0xe8, 0xd9, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x87, 0x56, 0x66, 0x1f, 0x14, 0xf4, 0xec, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0xd7, 0x2f, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x43, 0x2b, 0xb3, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0x51, 0x73, 0xfe, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xab, 0x8d, 0xeb, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x8b, 0x9a, 0xf3, 0x37, 0x28, 0x04, 0x53, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0xc4, 0xfa, 0x35, 0x08, 0xa0, 0xb3, 0x0d, 0x6f, 0xeb, 0x0c, 0x9e, 0x6e, 0x1c, 0x3a, 0x88, 0x26, 0xea, 0xa5, 0x0d, 0x8e, 0x56, 0x97, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x5f, 0xbf, 0x6c, 0xb0, 0x68, 0x41, 0x7f, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x68, 0xa2, 0x5e, 0xda, 0x60, 0xd1, 0x82, 0xfe, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x77, 0x56, 0x97, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x0a, 0x37, 0xd1, 0x0d, 0xca, 0xa6, 0xfa, 0x0d, 0x16, 0x2d, 0xe8, 0xb7, 0x86, 0xb7, 0x75, 0x06, 0x4f, 0x0f, 0xa2, 0x89, 0x7a, 0xa9, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xa2, 0x89, 0x7a, 0x69, 0xc3, 0xdb, 0x3a, 0x83, 0xd3, 0x07, 0xd1, 0x44, 0xbd, 0xb4, 0xc1, 0x72, 0x25, 0xbb, 0x35, 0x58, 0xcf, 0xa0, 0xbf, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x28, 0x5b, 0x50, 0x0f, 0x22, 0x70, 0x7b, 0x69, 0x83, 0x78, 0xe0, 0x5e, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x46, 0xaf, 0x5b, 0x83, 0x12, 0x1e, 0x73, 0x01, 0xef, 0xac, 0x2e, 0x6f, 0x83, 0x82, 0x22, 0x73, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0x11, 0x0a, 0xbe, 0x54, 0x6d, 0x50, 0xda, 0x5b, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0xef, 0xec, 0x0d, 0xdf, 0xf0, 0xb9, 0xd2, 0x06, 0x49, 0x86, 0xc0, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x78, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0xac, 0xdf, 0xa0, 0xcc, 0xd2, 0x5d, 0xc3, 0xe7, 0x4a, 0x1b, 0x24, 0x19, 0x02, 0xaf, 0xe1, 0xcf, 0xa5, 0xc1, 0xe3, 0x0d, 0x02, 0xe8, 0xec, 0x20, 0x2e, 0xa8, 0x97, 0xaa, 0x0d, 0x0f, 0x4a, 0x6e, 0xd0, 0x80, 0xf5, 0xf6, 0x86, 0x07, 0x25, 0x37, 0x68, 0x69, 0xc9, 0x6f, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0xc7, 0xb7, 0x04, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x3c, 0xbe, 0x25, 0xa8, 0x01, 0x78, 0x68, 0x2b, 0x93, 0x3b, 0x2b, 0x03, 0x09, 0x63, 0x63, 0x03, 0x69, 0x0b, 0xa3, 0x1b, 0x43, 0x2b, 0x9b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0x35, 0x9e, 0xe8, 0xc1, 0xd1, 0xea, 0x72, 0xc3, 0xd7, 0x2f, 0x1b, 0xa4, 0x11, 0x18, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x7a, 0x65, 0xf3, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xab, 0x8d, 0xeb, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0xa7, 0x57, 0x36, 0x6f, 0x50, 0x08, 0xa6, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x06, 0xa9, 0x82, 0xc0, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x5f, 0xbf, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x4f, 0xaf, 0x6c, 0x6e, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x95, 0x6c, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x42, 0xf0, 0xe1, 0x60, 0x2d, 0x9e, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x8d, 0xe2, 0x06, 0x8b, 0xd1, 0xeb, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x80, 0x77, 0xf6, 0x86, 0x57, 0x1b, 0xc4, 0x8e, 0xfb, 0xd2, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x3e, 0xdb, 0x9b, 0xdb, 0xda, 0x06, 0x8b, 0xd1, 0xeb, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0xc1, 0x5a, 0x3c, 0xd1, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x60, 0x2d, 0x9e, 0xe8, 0x86, 0xb7, 0x75, 0x06, 0xa7, 0x0f, 0xd6, 0xe2, 0x89, 0xb6, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x8f, 0x96, 0xe6, 0xb6, 0x76, 0x10, 0xaf, 0xf2, 0x4b, 0x1b, 0x2c, 0x3f, 0xb2, 0xdb, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x58, 0xae, 0x64, 0xb7, 0x41, 0xe4, 0xcf, 0x2f, 0xad, 0x41, 0xc4, 0xb9, 0x2f, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0x1c, 0xc4, 0xab, 0xfc, 0xd2, 0x06, 0xb1, 0xe3, 0xbe, 0x54, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0xf5, 0xcb, 0x1a, 0x2e, 0xa9, 0x35, 0x24, 0x97, 0x0e, 0x0e, 0xfb, 0x1d, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0x10, 0x71, 0xee, 0x4b, 0x1b, 0xc4, 0x4c, 0xfe, 0xd2, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x11, 0xe7, 0xbe, 0xb4, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x83, 0x88, 0x73, 0x5f, 0x5a, 0x83, 0x28, 0xcb, 0x5f, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xd9, 0xea, 0xdc, 0xc2, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0x41, 0xc4, 0xb9, 0x2f, 0xd5, 0x6a, 0x10, 0x57, 0xf2, 0x4b, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x71, 0x25, 0xbf, 0xd4, 0x00, 0x7c, 0x94, 0xe1, 0xd1, 0x95, 0xb9, 0x91, 0x81, 0x98, 0xa5, 0xd1, 0xcd, 0x81, 0x88, 0xbd, 0xd1, 0xd1, 0xbd, 0xb5, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x96, 0x22, 0xd7, 0x1d, 0x94, 0x59, 0xba, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x3b, 0x7b, 0xcb, 0x0f, 0xca, 0x2c, 0xdd, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x83, 0xd5, 0x0d, 0xbf, 0x92, 0x6d, 0xb0, 0x90, 0xc4, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x46, 0x71, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x67, 0x6f, 0x79, 0x6b, 0x78, 0x50, 0x72, 0x83, 0xd3, 0x45, 0xc6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x1b, 0xba, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x28, 0xdc, 0x44, 0x37, 0x28, 0x9b, 0xea, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0xfc, 0xc3, 0x2f, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0xbc, 0xe6, 0x73, 0xb0, 0x34, 0xdd, 0xae, 0xea, 0x70, 0x8a, 0xad, 0x41, 0x4c, 0xd6, 0x2f, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0x64, 0xfd, 0x52, 0x03, 0x78, 0x97, 0xe1, 0xd1, 0x95, 0xb9, 0x91, 0x81, 0x98, 0xa5, 0xd1, 0xcd, 0x81, 0xd0, 0xbd, 0xc1, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x88, 0x04, 0x60, 0xda, 0xf0, 0x17, 0xcd, 0x86, 0x0f, 0x56, 0x37, 0xfc, 0x4a, 0xb6, 0x86, 0x7f, 0x73, 0x36, 0x88, 0x54, 0xf8, 0xa5, 0x83, 0xc5, 0xe8, 0x75, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0x67, 0x1b, 0x44, 0xe8, 0x00, 0xd3, 0x1a, 0x1e, 0x94, 0xdc, 0xe0, 0x74, 0x91, 0xb1, 0xe1, 0xdd, 0x9e, 0x0d, 0xce, 0x86, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa8, 0x2a, 0x60, 0x3a, 0x58, 0x9a, 0x6e, 0x57, 0xad, 0x06, 0xcd, 0x30, 0xf9, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xb0, 0xd8, 0xf0, 0xf2, 0x60, 0xa5, 0x6a, 0xee, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0xfd, 0xb2, 0x41, 0x1a, 0x81, 0xd1, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x0b, 0x85, 0x2f, 0x37, 0x48, 0x23, 0x30, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xce, 0xea, 0xf2, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x01, 0xdb, 0x4b, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0x60, 0xa1, 0xf0, 0x65, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x2c, 0x14, 0xbe, 0xdc, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0xc1, 0x42, 0xe1, 0xcb, 0x35, 0xa4, 0x96, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x78, 0x7c, 0x4b, 0x50, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0x79, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xb4, 0xba, 0x3c, 0x88, 0x2e, 0xf0, 0xa5, 0x6a, 0xd6, 0xa0, 0x49, 0x2c, 0xed, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x26, 0xb1, 0xb4, 0x1b, 0xc0, 0x6b, 0xae, 0x4e, 0x6c, 0xae, 0x2c, 0xae, 0xae, 0xcc, 0x6d, 0xac, 0x6c, 0xc3, 0xd7, 0x2f, 0x1b, 0xc4, 0x05, 0xf5, 0xd2, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x86, 0x07, 0x6f, 0x0e, 0x22, 0x15, 0x7e, 0x69, 0x83, 0x82, 0x22, 0x73, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x16, 0xcb, 0x6b, 0x78, 0x50, 0x72, 0x83, 0xd3, 0x91, 0xc8, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x1b, 0xba, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xa2, 0xaa, 0x80, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0xcd, 0xe7, 0x20, 0x4a, 0xe1, 0x97, 0xaa, 0xc3, 0x29, 0xb6, 0x06, 0xd1, 0xcb, 0xbf, 0xb4, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x10, 0xbd, 0xfc, 0x4b, 0x0d, 0xf0, 0x95, 0xe1, 0xd1, 0x95, 0xb9, 0x91, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x88, 0x04, 0x60, 0xda, 0xf0, 0xf5, 0xcb, 0x06, 0x69, 0x04, 0x46, 0x1b, 0xac, 0x42, 0x52, 0xda, 0x20, 0x3d, 0xc6, 0x77, 0x0d, 0xe2, 0x1f, 0x7e, 0x69, 0x83, 0xc2, 0x50, 0x75, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x16, 0xa3, 0xd7, 0x1d, 0x44, 0x2a, 0xfc, 0xd2, 0x1a, 0x3e, 0x8e, 0x3a, 0x88, 0x54, 0xf8, 0xa5, 0x83, 0x48, 0x85, 0x5f, 0xda, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xb2, 0x05, 0xf5, 0x20, 0xaa, 0x0b, 0x98, 0x36, 0x58, 0x8c, 0x5e, 0xb7, 0xc1, 0x39, 0x7f, 0x69, 0x83, 0x08, 0x1d, 0x60, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x95, 0xf3, 0x1b, 0x44, 0xe8, 0x00, 0xd3, 0x06, 0x71, 0x41, 0xbd, 0xd4, 0x86, 0x0f, 0x72, 0x36, 0x58, 0x48, 0x62, 0xb7, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x41, 0xc9, 0x0d, 0x4e, 0x47, 0x22, 0x07, 0xf1, 0x49, 0xc0, 0xd4, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x2b, 0xe0, 0xb3, 0xd5, 0xcd, 0xad, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xf1, 0x7b, 0xc2, 0xd4, 0x00, 0x3c, 0xb0, 0x8d, 0xcd, 0x81, 0xd0, 0xbd, 0x81, 0xb0, 0xa5, 0xcd, 0xd1, 0x81, 0xc0, 0x85, 0xd1, 0x8d, 0xa1, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0xa2, 0x45, 0x7a, 0x69, 0x83, 0x48, 0x97, 0x5e, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0xdb, 0xd8, 0x7c, 0x50, 0xd0, 0xb3, 0xb7, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xc9, 0x85, 0x9d, 0x1b, 0xfe, 0xa2, 0x59, 0xc3, 0xe7, 0x4a, 0x6b, 0x10, 0xb4, 0x3f, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x80, 0x0d, 0x3a, 0x68, 0x40, 0x4e, 0x70, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0x46, 0x40, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0x78, 0x83, 0x00, 0x3a, 0xdb, 0xf0, 0xb6, 0xce, 0x80, 0xc7, 0x36, 0x36, 0xb7, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x0f, 0xa2, 0xe1, 0x85, 0xa9, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xab, 0xc0, 0x64, 0x0f, 0x0a, 0x27, 0xd9, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x5c, 0x52, 0x1b, 0x14, 0x35, 0xe2, 0x2b, 0xe0, 0xc9, 0x85, 0x9d, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0x78, 0x5b, 0xe7, 0x20, 0xd6, 0x63, 0x98, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x06, 0x85, 0x60, 0xea, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0x41, 0x00, 0x9d, 0x1d, 0xc4, 0xb1, 0x0c, 0x53, 0xb5, 0xe1, 0x41, 0xc9, 0x0d, 0x1a, 0xb0, 0xde, 0xde, 0xf0, 0xa0, 0xe4, 0x06, 0x2d, 0x2d, 0xf9, 0x6d, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x6b, 0xb0, 0xe8, 0xd2, 0x6a, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x84, 0x0a, 0xb9, 0x0d, 0x02, 0xe8, 0x6c, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0xb1, 0x1e, 0xc3, 0xb4, 0xe1, 0xeb, 0x97, 0x0d, 0xe2, 0x58, 0x86, 0x69, 0x83, 0x20, 0x3d, 0x5d, 0xe3, 0xd0, 0x41, 0xcc, 0xde, 0x30, 0xad, 0x41, 0x18, 0x01, 0x6d, 0x10, 0xa4, 0xa7, 0x6b, 0x1c, 0x3a, 0x48, 0xa6, 0x90, 0x5b, 0x83, 0x30, 0x02, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x99, 0x93, 0xec, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x44, 0xd0, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0x92, 0x29, 0xe4, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0xcc, 0xde, 0x30, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x11, 0xb4, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x64, 0x0a, 0xb9, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0x10, 0xb3, 0x37, 0x4c, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x62, 0x3d, 0x86, 0xa9, 0x35, 0x08, 0xd8, 0xa0, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0x16, 0x21, 0xb7, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0xbe, 0x1b, 0xa6, 0x83, 0xd8, 0xf4, 0x61, 0xaa, 0x35, 0x08, 0xd8, 0xa0, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0x38, 0xce, 0x61, 0x5a, 0x83, 0x30, 0x02, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0x69, 0x11, 0x72, 0x6b, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0xf0, 0xe6, 0x20, 0x72, 0x78, 0x98, 0x36, 0x88, 0x4f, 0x1f, 0xa6, 0x83, 0xf8, 0xff, 0x61, 0x6a, 0x0d, 0x02, 0x36, 0x68, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x55, 0x60, 0xb2, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0x44, 0x0e, 0x0f, 0xd3, 0x06, 0xf1, 0xb9, 0xc3, 0x54, 0x07, 0xb1, 0xe9, 0xc3, 0x54, 0xab, 0x41, 0x33, 0x4c, 0x7e, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0xf5, 0xcb, 0x86, 0x3b, 0x6a, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x45, 0xac, 0xb9, 0x6b, 0x50, 0xc2, 0x63, 0x6e, 0x10, 0x4d, 0xd4, 0x4b, 0x6b, 0x50, 0xf0, 0x61, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x08, 0x3e, 0x1c, 0xc4, 0xdf, 0x0b, 0xd3, 0xe1, 0x8e, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x88, 0x88, 0xee, 0xa5, 0x35, 0x88, 0xf5, 0x18, 0xa6, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x60, 0x54, 0xd9, 0x06, 0xcb, 0x9c, 0x64, 0x37, 0x28, 0x28, 0x32, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xf1, 0xc0, 0xbd, 0x74, 0x50, 0xd6, 0x79, 0xd6, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xd1, 0x44, 0xbd, 0xb4, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x8b, 0x58, 0x73, 0x37, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0xb0, 0x88, 0x35, 0x77, 0x0d, 0x62, 0x3d, 0x86, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x18, 0x55, 0xb6, 0xc1, 0x32, 0x27, 0xd9, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x06, 0x4f, 0x0f, 0x16, 0xb1, 0xe6, 0x1e, 0x94, 0x75, 0x9e, 0x07, 0x65, 0x9d, 0x67, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xc4, 0xdf, 0x0b, 0xd3, 0x1a, 0x2e, 0xa9, 0x0d, 0x57, 0xd7, 0x1a, 0xc4, 0x7a, 0x0c, 0xd3, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x30, 0xaa, 0x6c, 0x83, 0x65, 0x4e, 0xb2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0x79, 0x83, 0x95, 0xaa, 0xb9, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0x8b, 0xe5, 0x83, 0x78, 0x2c, 0x61, 0xaa, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0xe2, 0xe9, 0x89, 0x69, 0xc3, 0xdb, 0x3a, 0x83, 0xa7, 0x07, 0xf1, 0xf7, 0xc2, 0xb4, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0xf1, 0xc0, 0xbd, 0x74, 0x10, 0xad, 0x54, 0x4c, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x10, 0x7f, 0x2f, 0x4c, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3e, 0x88, 0xbf, 0x17, 0xa6, 0x0d, 0xe2, 0xa3, 0x89, 0x69, 0x83, 0x88, 0xe8, 0x5e, 0x5a, 0x83, 0x58, 0x8f, 0x61, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x46, 0x95, 0x1d, 0x34, 0xac, 0x04, 0xd6, 0x41, 0xa4, 0x25, 0x31, 0x6d, 0xf8, 0x20, 0x67, 0x83, 0x48, 0xac, 0x62, 0xda, 0x20, 0x7e, 0x99, 0x98, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0xe2, 0xa3, 0x89, 0x69, 0x83, 0x88, 0xe8, 0x5e, 0x5a, 0x83, 0x58, 0x8f, 0x61, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0x46, 0x95, 0x6d, 0xb0, 0xcc, 0x49, 0x76, 0x83, 0xa8, 0x78, 0x62, 0x3a, 0x88, 0xb2, 0x25, 0xa6, 0x66, 0x0d, 0x9a, 0xc4, 0xd2, 0xde, 0xe0, 0x38, 0x36, 0xb1, 0x41, 0x54, 0xfb, 0x30, 0xad, 0xe1, 0x6d, 0xd6, 0x0d, 0xff, 0xe6, 0x6c, 0xb0, 0x30, 0x64, 0xf5, 0x20, 0xfa, 0x6e, 0x98, 0x36, 0x88, 0xff, 0x1f, 0xa6, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x58, 0x2c, 0x1f, 0xc4, 0xa6, 0x0f, 0xd3, 0xe1, 0x14, 0xeb, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x05, 0x7c, 0xb1, 0x32, 0xb9, 0x75, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xf2, 0xc0, 0x98, 0x1a, 0x80, 0x87, 0x34, 0x37, 0xbb, 0x32, 0x39, 0x3a, 0x10, 0xb2, 0x34, 0x33, 0x33, 0x10, 0xb8, 0x30, 0xba, 0x31, 0xb4, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0x89, 0xd5, 0xc9, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0xc1, 0x90, 0x79, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x5f, 0xbf, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x4f, 0xac, 0x4e, 0x6e, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x88, 0x29, 0x63, 0xda, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x49, 0x75, 0xd2, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x44, 0x4c, 0x19, 0xd3, 0x86, 0xb7, 0x75, 0x06, 0xa7, 0x0f, 0x22, 0xa6, 0x8c, 0xa9, 0x0d, 0x82, 0xf4, 0x74, 0x8d, 0x43, 0x83, 0xa7, 0x07, 0x11, 0x53, 0xc6, 0xb4, 0x06, 0x01, 0x1b, 0xb4, 0xe1, 0x6d, 0x9d, 0x83, 0x18, 0x42, 0x63, 0x5a, 0x83, 0x30, 0x02, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x9c, 0x64, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf1, 0x41, 0x0c, 0xa1, 0x31, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x18, 0x42, 0x63, 0xaa, 0x59, 0xc0, 0x67, 0xab, 0x93, 0x5b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x22, 0x70, 0x8d, 0xa9, 0x01, 0xfc, 0xc3, 0xe0, 0xe0, 0xd8, 0xf2, 0x40, 0xd8, 0xd2, 0xe6, 0xe8, 0x40, 0xe0, 0xc2, 0xe8, 0xc6, 0xd0, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0xd1, 0x22, 0xbd, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb9, 0xba, 0xf3, 0x20, 0x86, 0xc7, 0x98, 0xda, 0xf0, 0xf5, 0xcb, 0x06, 0x2b, 0x55, 0x73, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0xbc, 0xbb, 0x30, 0x79, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0x40, 0x67, 0x07, 0x2b, 0x55, 0x73, 0x0f, 0x0a, 0x8a, 0xcc, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0xfa, 0x65, 0x83, 0x95, 0xaa, 0xb9, 0x1b, 0x94, 0xf0, 0x98, 0x0b, 0x78, 0x72, 0x75, 0x67, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0x79, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x77, 0x61, 0x72, 0x6d, 0x10, 0xa4, 0xa7, 0x6b, 0x1c, 0x1a, 0x3c, 0x3d, 0x88, 0x53, 0x39, 0xa6, 0x35, 0x08, 0xd8, 0xa0, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xe2, 0x54, 0x8e, 0x69, 0xc3, 0xdb, 0x3a, 0x83, 0xd3, 0x07, 0x71, 0x2a, 0xc7, 0xb4, 0x06, 0x8b, 0x58, 0x73, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0xe9, 0x2d, 0x6e, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x44, 0x16, 0x1d, 0xd3, 0x41, 0x74, 0x4b, 0x31, 0xad, 0x41, 0x9c, 0xce, 0x31, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x13, 0x41, 0xdb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xb0, 0x58, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x2c, 0x04, 0x0f, 0xa2, 0xe1, 0x8e, 0xa9, 0x83, 0x68, 0x9b, 0x63, 0x6a, 0x0d, 0xc2, 0x08, 0x68, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0x20, 0xc2, 0xea, 0x98, 0xd6, 0x60, 0x11, 0x6b, 0xee, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x77, 0x56, 0x27, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0x79, 0x83, 0x88, 0xb8, 0x63, 0x6a, 0xc3, 0x57, 0x38, 0x1b, 0xbe, 0x7e, 0xd9, 0x60, 0xa5, 0x6a, 0xee, 0x06, 0x25, 0x3c, 0xe6, 0x02, 0xde, 0x59, 0x9d, 0xdc, 0x06, 0x2b, 0x55, 0x73, 0x37, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x08, 0xeb, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x14, 0xa9, 0x98, 0x07, 0x8b, 0x58, 0x73, 0xd7, 0xf0, 0x6f, 0xce, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3d, 0x88, 0xf9, 0x3e, 0xa6, 0x83, 0x78, 0x7a, 0x62, 0x6a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0x20, 0x3e, 0x9a, 0x98, 0xd6, 0x20, 0xe6, 0xfb, 0x98, 0x36, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0x10, 0xf3, 0x7d, 0x4c, 0xad, 0x41, 0x9c, 0xce, 0x31, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x13, 0x41, 0xdb, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3e, 0x88, 0x2c, 0x3a, 0xa6, 0x83, 0x68, 0x9b, 0x63, 0xaa, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x66, 0x0d, 0x1a, 0xcf, 0xa5, 0xda, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xc5, 0xea, 0xd8, 0xd6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7c, 0xeb, 0xcd, 0x6c, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0xf0, 0x96, 0xb9, 0xb5, 0xc0, 0x85, 0xd1, 0xa1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x5a, 0xf8, 0x66, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x2c, 0x0d, 0x86, 0x64, 0x60, 0x69, 0x30, 0xc4, 0x1b, 0xfe, 0x5c, 0xda, 0x20, 0xba, 0x0a, 0x99, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x69, 0x30, 0x44, 0x07, 0xd1, 0x8d, 0xc8, 0xb4, 0xe1, 0xdf, 0xf9, 0x0d, 0x22, 0xab, 0x90, 0xa9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x25, 0x7e, 0x33, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xb6, 0x06, 0x43, 0x32, 0xb0, 0x35, 0x18, 0xd2, 0x83, 0x33, 0x12, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xb4, 0xbf, 0x99, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x16, 0x70, 0x66, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0x10, 0x9c, 0x39, 0x58, 0x92, 0x9b, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x20, 0xc2, 0x99, 0x83, 0xe5, 0x6b, 0xaf, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0x2f, 0x9c, 0xd9, 0xf0, 0xb6, 0xce, 0x80, 0x87, 0x56, 0x26, 0x1f, 0x44, 0x56, 0x21, 0x53, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x28, 0x3d, 0x9c, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x1a, 0x12, 0x67, 0x0e, 0x96, 0xe4, 0xa6, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x66, 0x71, 0xe6, 0x20, 0x11, 0x2e, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xf1, 0x8c, 0x33, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xe4, 0xd2, 0xcc, 0x83, 0xc8, 0x2a, 0x64, 0x6a, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x8f, 0x8e, 0x33, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xfd, 0xe3, 0xcc, 0xc1, 0x92, 0xdc, 0xf4, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7c, 0x48, 0xce, 0x1c, 0x24, 0xc2, 0x05, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x7b, 0x72, 0x66, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x5b, 0x9e, 0x79, 0x10, 0x59, 0x85, 0x4c, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xb1, 0x72, 0x66, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0x5d, 0x98, 0x7b, 0x10, 0x59, 0x85, 0x4c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x98, 0xb8, 0x9c, 0xd9, 0xf0, 0xb6, 0xce, 0x80, 0x37, 0x16, 0x26, 0x1f, 0x44, 0x56, 0x21, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x22, 0x31, 0x67, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xfc, 0xcc, 0x99, 0x83, 0x25, 0xb9, 0xe9, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0xe0, 0x9c, 0xd9, 0xf0, 0xb6, 0xce, 0x80, 0x37, 0x16, 0x36, 0x1f, 0x44, 0x56, 0x21, 0x53, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf8, 0xed, 0x9c, 0xd9, 0xf0, 0xb6, 0xce, 0x80, 0x37, 0x07, 0x27, 0x1f, 0x44, 0x56, 0x21, 0x53, 0xab, 0x41, 0x74, 0x15, 0x32, 0x6d, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0x44, 0x57, 0x21, 0xd3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xfd, 0xcf, 0x99, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x27, 0x74, 0x66, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x1e, 0x9d, 0xd9, 0xf0, 0xe7, 0xd2, 0x80, 0x87, 0x56, 0x26, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x14, 0x9d, 0x39, 0x68, 0xdb, 0x7a, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x7b, 0xa7, 0x33, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xe4, 0xd2, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x2f, 0xa6, 0x33, 0x07, 0x6f, 0xb0, 0x75, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xc8, 0xea, 0xcc, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb6, 0x3c, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x74, 0xea, 0xcc, 0xc1, 0xdb, 0x74, 0x1d, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x5f, 0xeb, 0xcc, 0x86, 0xcf, 0x95, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0x01, 0x3b, 0xb3, 0xe1, 0xcf, 0xa5, 0x01, 0xcf, 0x2e, 0xcc, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0xec, 0x3a, 0x73, 0x70, 0xd4, 0x06, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x1d, 0xed, 0xcc, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb1, 0x30, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xca, 0xec, 0xcc, 0xc1, 0x51, 0x1b, 0x74, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xd3, 0xb8, 0x33, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xc6, 0xc2, 0xe6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x85, 0xb7, 0x33, 0x07, 0x6f, 0xd5, 0x0b, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x7d, 0xbc, 0x33, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xe6, 0xe0, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x33, 0xbb, 0x33, 0x07, 0xef, 0xb3, 0x95, 0x6d, 0x05, 0x78, 0xc3, 0xe6, 0x5a, 0xde, 0xda, 0xca, 0xdc, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x61, 0xbe, 0x33, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x16, 0x08, 0x43, 0x32, 0xb0, 0x40, 0x18, 0xe2, 0x0d, 0x7f, 0x2e, 0x6d, 0x10, 0x5d, 0x85, 0x4c, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x40, 0x18, 0xa2, 0x83, 0x58, 0xa0, 0x65, 0x3a, 0x88, 0x65, 0x45, 0xa6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x19, 0xc0, 0x33, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x36, 0x08, 0x43, 0x32, 0xb0, 0x41, 0x18, 0xd2, 0x83, 0xb7, 0x68, 0x8b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe8, 0x0a, 0x9e, 0xd9, 0xa0, 0x20, 0x8d, 0x5d, 0x83, 0x12, 0x3a, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x21, 0x0c, 0xc9, 0xc0, 0x0a, 0x61, 0x18, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x21, 0x0c, 0xd1, 0xc0, 0x0a, 0x61, 0x98, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0x23, 0x2b, 0x9b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x85, 0x30, 0xc4, 0x07, 0xf1, 0xbc, 0xcb, 0x74, 0xf0, 0x28, 0xbc, 0x90, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x85, 0x30, 0x6c, 0x06, 0x56, 0x08, 0xc3, 0x76, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0xa0, 0x4e, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x15, 0xc2, 0xb0, 0x3b, 0x88, 0x72, 0x5f, 0xa6, 0x83, 0x33, 0x12, 0x6a, 0x07, 0x61, 0x3a, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x5f, 0xe1, 0x99, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0xe2, 0x0b, 0x94, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x7d, 0xc8, 0x33, 0x07, 0x91, 0x02, 0xca, 0xb4, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x8b, 0x78, 0x66, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x28, 0x2d, 0x9e, 0x39, 0x48, 0x4a, 0x0b, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xc4, 0xf1, 0xcc, 0x41, 0x41, 0x91, 0xd9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x00, 0xe5, 0x99, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0x3e, 0xe0, 0x89, 0x95, 0xb5, 0x1b, 0x94, 0xd0, 0xb1, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x16, 0x61, 0x48, 0x07, 0xb6, 0x08, 0xc3, 0xe2, 0xe0, 0x29, 0xc1, 0x21, 0x07, 0x61, 0x3a, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xb1, 0xe5, 0x99, 0x0d, 0x56, 0x61, 0x39, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x1e, 0x7a, 0xe6, 0x20, 0x46, 0x0a, 0x99, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xc4, 0x32, 0xcf, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x03, 0xce, 0x33, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xd5, 0xf3, 0xcc, 0xc1, 0xc3, 0x9a, 0x98, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0x2a, 0x3d, 0xb3, 0xe1, 0x6d, 0x9d, 0x83, 0x97, 0xb0, 0xc2, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x85, 0x7a, 0x66, 0xc3, 0xdb, 0x3a, 0x03, 0xde, 0x58, 0xd8, 0x5c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0xb0, 0x9e, 0x39, 0x58, 0x44, 0x9e, 0xde, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xce, 0xeb, 0x99, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x1f, 0x7b, 0x66, 0xc3, 0xe7, 0x2e, 0x1b, 0x2c, 0x2f, 0x82, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0xa4, 0x3d, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xcc, 0x6e, 0xcf, 0x1c, 0x94, 0xf5, 0xb6, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x98, 0xf0, 0x9e, 0x39, 0x28, 0x2a, 0xc5, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0xfc, 0x3d, 0x73, 0x10, 0x6d, 0x9a, 0x4c, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x18, 0x0c, 0x9f, 0x39, 0x88, 0xe4, 0x4d, 0xa6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd4, 0x8c, 0xcf, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x7d, 0xe4, 0x33, 0x07, 0xcb, 0xa2, 0xe0, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x5d, 0x3e, 0x73, 0xf0, 0xa8, 0xa6, 0x94, 0x0e, 0xa7, 0xd8, 0x02, 0xf8, 0x91, 0x95, 0xb5, 0xc0, 0x85, 0xd1, 0xa1, 0xb5, 0xcc, 0xbd, 0x99, 0xd1, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xe6, 0xce, 0x67, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xec, 0x07, 0x86, 0x64, 0x60, 0x3f, 0x30, 0xac, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xc8, 0x9e, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x7e, 0x60, 0x88, 0x0e, 0xa2, 0x6d, 0x9b, 0x69, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xf6, 0x03, 0x43, 0x36, 0xb0, 0x1f, 0x18, 0xf2, 0x83, 0x50, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xf6, 0x03, 0xc3, 0x60, 0x60, 0x3f, 0x30, 0x8c, 0x0e, 0x4e, 0x04, 0xa0, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x08, 0x48, 0x9f, 0xd9, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x20, 0x18, 0x92, 0x81, 0x05, 0xc1, 0x30, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x05, 0xc1, 0x10, 0x0d, 0x2c, 0x08, 0x86, 0xf8, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x16, 0x04, 0x43, 0x3e, 0xb0, 0x20, 0x18, 0x36, 0x07, 0xb1, 0xac, 0xc8, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x22, 0xf5, 0x99, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x84, 0xae, 0xcf, 0x6c, 0x50, 0x4c, 0x62, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x2b, 0x82, 0x21, 0x1c, 0x58, 0x11, 0x0c, 0xbd, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x56, 0x04, 0x43, 0x3a, 0xb0, 0x22, 0x18, 0x26, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xd0, 0xca, 0xe4, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x11, 0x0c, 0x8b, 0x83, 0x58, 0x4a, 0x67, 0x3a, 0xfc, 0x50, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xac, 0x08, 0x86, 0xcd, 0xc0, 0x8a, 0x60, 0x18, 0x6e, 0xf8, 0x73, 0x69, 0xc0, 0x93, 0x4b, 0x33, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x45, 0x30, 0xec, 0x0e, 0xe2, 0x89, 0x9d, 0xe9, 0xf0, 0x43, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x22, 0x18, 0x96, 0x03, 0x2b, 0x82, 0x61, 0xbe, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0x2d, 0xcf, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x15, 0xc1, 0xb0, 0x3e, 0x88, 0xa9, 0x77, 0xa6, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x8a, 0x60, 0xd8, 0x0f, 0xac, 0x08, 0x86, 0x92, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x76, 0x61, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xac, 0x08, 0x86, 0x8e, 0x83, 0xb8, 0x92, 0x67, 0x3a, 0xfc, 0x50, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xac, 0x08, 0x86, 0x96, 0x81, 0x15, 0xc1, 0x50, 0xb5, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0x2c, 0x4c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x15, 0xc1, 0xd0, 0x74, 0x10, 0x61, 0xf5, 0x4c, 0x87, 0x1f, 0x6a, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x15, 0xc1, 0xd0, 0x35, 0xb0, 0x22, 0x18, 0x0a, 0x37, 0xfc, 0xb9, 0x34, 0xe0, 0x8d, 0x85, 0xcd, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x22, 0x18, 0xfa, 0x0e, 0x62, 0x0d, 0x9f, 0xe9, 0xf0, 0x43, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x22, 0x18, 0x1a, 0x07, 0x56, 0x04, 0x43, 0xed, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0x39, 0x38, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x56, 0x04, 0x43, 0xeb, 0x41, 0xd4, 0xed, 0x33, 0x1d, 0x84, 0xe9, 0x58, 0x07, 0x01, 0xe6, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xcd, 0x15, 0x9a, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xc9, 0xfc, 0xcc, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x87, 0x56, 0x26, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x38, 0xa4, 0x9f, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xde, 0xeb, 0x67, 0x0e, 0x96, 0x74, 0xab, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x02, 0x7f, 0xe6, 0x60, 0xf9, 0xda, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xaa, 0xf3, 0x67, 0x36, 0xbc, 0xad, 0x33, 0xe0, 0xa1, 0x95, 0xc9, 0x07, 0x01, 0xe6, 0xd2, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x2f, 0x27, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0xbb, 0x3f, 0x73, 0x50, 0x50, 0x64, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x68, 0xe9, 0x9f, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xe4, 0xd2, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x8f, 0xfe, 0x33, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xfe, 0xff, 0xcc, 0xc1, 0x92, 0x6e, 0xf5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7c, 0x09, 0xd0, 0x1c, 0x24, 0xc2, 0x05, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x83, 0x80, 0x66, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0x5c, 0x9a, 0x79, 0x10, 0x60, 0x2e, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0xf8, 0x72, 0x72, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x0d, 0x06, 0x34, 0x07, 0x05, 0x45, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xc0, 0x03, 0x9a, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x8f, 0x2d, 0xcf, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0x8e, 0x40, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x34, 0x29, 0xd0, 0x1c, 0x2c, 0xe9, 0x56, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x2c, 0x03, 0xcd, 0x41, 0x22, 0x5c, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xe2, 0x1c, 0x68, 0x36, 0xbc, 0xad, 0x33, 0xe0, 0xb1, 0xe5, 0x99, 0x07, 0x01, 0xe6, 0xd2, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x2f, 0x27, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0x06, 0x41, 0x73, 0x50, 0x50, 0x64, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x8e, 0xa0, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xc6, 0xc2, 0xe6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x37, 0x13, 0x34, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x27, 0x05, 0xcd, 0xc1, 0x63, 0x46, 0x61, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x6f, 0x41, 0xb3, 0xe1, 0x6d, 0x9d, 0x01, 0x6f, 0x2c, 0x6c, 0x3e, 0x08, 0x30, 0x97, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x39, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x7c, 0x0c, 0x9a, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x9b, 0x06, 0xcd, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x6a, 0x37, 0x68, 0x0e, 0x0a, 0x8a, 0xcc, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x21, 0x1d, 0x34, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x9a, 0x07, 0xcd, 0x86, 0x5f, 0x5c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0xfb, 0x41, 0xb3, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0x37, 0x37, 0x31, 0xaf, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x26, 0x84, 0x66, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0x2f, 0x2c, 0x63, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xaa, 0x08, 0xcd, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x07, 0x3c, 0xb6, 0x3c, 0xb3, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x41, 0x42, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xbc, 0x95, 0xd0, 0x6c, 0x78, 0x5b, 0x67, 0xc0, 0xb3, 0x0b, 0x73, 0x0f, 0x02, 0xcc, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xf9, 0x26, 0x34, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xc6, 0xc2, 0xe4, 0x83, 0x00, 0x73, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x21, 0x0a, 0xcd, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x62, 0xe0, 0x99, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x2c, 0xa8, 0xd0, 0x6c, 0x78, 0x5b, 0x67, 0xc0, 0x9b, 0x83, 0x93, 0x0f, 0x02, 0xcc, 0xa5, 0x59, 0x80, 0x97, 0xac, 0xac, 0x05, 0x2e, 0x8c, 0x0e, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0xd1, 0x42, 0xb3, 0xe1, 0x17, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x5f, 0x30, 0x24, 0x03, 0xfb, 0x82, 0x21, 0xde, 0xf0, 0xe7, 0xd2, 0x06, 0x07, 0xd3, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xd8, 0x17, 0x0c, 0xd1, 0x41, 0x0c, 0x99, 0x34, 0x1d, 0x9c, 0x91, 0x50, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd4, 0xba, 0xd0, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x18, 0x0c, 0xc9, 0xc0, 0xc2, 0x60, 0x48, 0x0f, 0x62, 0x59, 0x91, 0x69, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xfe, 0x0b, 0xcd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x15, 0x43, 0x73, 0x70, 0x36, 0x74, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xde, 0x0c, 0xcd, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0x4e, 0x43, 0xb3, 0xe1, 0x6d, 0x9d, 0x0d, 0xe2, 0x1c, 0x9b, 0xa9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf4, 0xdb, 0xd0, 0x1c, 0x9c, 0x56, 0xce, 0xea, 0x70, 0x8a, 0x2d, 0xc0, 0x4b, 0x56, 0xd6, 0x02, 0x17, 0x26, 0x47, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x78, 0xc6, 0xa1, 0xd9, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x14, 0x18, 0x92, 0x81, 0xa5, 0xc0, 0xd0, 0xb4, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x29, 0x30, 0x44, 0x03, 0x4b, 0x81, 0x21, 0xdf, 0xf0, 0xe7, 0xd2, 0x06, 0x4d, 0x5f, 0x8f, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x52, 0x60, 0xc8, 0x0e, 0x62, 0x58, 0xa6, 0xe9, 0xa0, 0x6d, 0xeb, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x29, 0x30, 0x0c, 0x06, 0x96, 0x02, 0xc3, 0x6a, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x88, 0xd6, 0x71, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x96, 0x02, 0xc3, 0xe2, 0x20, 0xaa, 0x6b, 0x9a, 0x0e, 0xde, 0x60, 0xeb, 0xb8, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x2c, 0x05, 0x86, 0xd9, 0xc0, 0x52, 0x60, 0xd8, 0x6e, 0xf8, 0x73, 0x69, 0x83, 0xc7, 0xd8, 0xd8, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x52, 0x60, 0xd8, 0x1d, 0xc4, 0x3b, 0x4e, 0xd3, 0xc1, 0xdb, 0x74, 0x1d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xa5, 0xc0, 0x30, 0x1e, 0x58, 0x0a, 0x0c, 0x45, 0x1b, 0xfe, 0x5c, 0xda, 0x20, 0x64, 0x4f, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x29, 0x30, 0xac, 0x0f, 0x22, 0x81, 0xa7, 0x69, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x96, 0x02, 0xc3, 0x7c, 0x60, 0x29, 0x30, 0x54, 0x1c, 0x84, 0x8a, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x14, 0x18, 0x3a, 0x06, 0x96, 0x02, 0x43, 0xcf, 0xc1, 0x89, 0x00, 0xb4, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xec, 0xe9, 0xd0, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xd8, 0x0a, 0x0c, 0xc9, 0xc0, 0x56, 0x60, 0x18, 0x6d, 0x10, 0xfa, 0x25, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x56, 0x60, 0x88, 0x06, 0xb6, 0x02, 0x43, 0x7c, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x5b, 0x81, 0x21, 0x1f, 0xd8, 0x0a, 0x0c, 0x9b, 0x83, 0x58, 0x56, 0x64, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xef, 0x0e, 0xcd, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x36, 0x7a, 0x68, 0x36, 0x28, 0x26, 0x31, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xb5, 0xc0, 0x10, 0x0e, 0xac, 0x05, 0x86, 0x96, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x6b, 0x81, 0x21, 0x1d, 0x58, 0x0b, 0x0c, 0x93, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x76, 0x61, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xac, 0x05, 0x86, 0xc5, 0x41, 0xe4, 0x27, 0x35, 0x1d, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xd6, 0x02, 0xc3, 0x66, 0x60, 0x2d, 0x30, 0x0c, 0x37, 0xfc, 0xb9, 0x34, 0xe0, 0x8d, 0x85, 0xc9, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0xb0, 0x16, 0x18, 0x76, 0x07, 0xd1, 0xcf, 0xd4, 0x74, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x58, 0x0b, 0x0c, 0xcb, 0x81, 0xb5, 0xc0, 0x30, 0xdf, 0xf0, 0xe7, 0xd2, 0x80, 0x37, 0x16, 0x36, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x5a, 0x60, 0x58, 0x1f, 0x44, 0x00, 0x54, 0xd3, 0xe1, 0x87, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0x60, 0x2d, 0x30, 0xec, 0x07, 0xd6, 0x02, 0x43, 0xc9, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0x39, 0x38, 0x79, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xd6, 0x02, 0x43, 0xc7, 0x41, 0x14, 0x4c, 0x35, 0x1d, 0x84, 0xe9, 0x58, 0x07, 0x01, 0xe6, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x3f, 0x2c, 0x9a, 0x83, 0x82, 0x22, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xac, 0x0f, 0xcd, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x37, 0x16, 0x36, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x00, 0xa2, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xfa, 0x82, 0x68, 0x0e, 0x1e, 0x33, 0x0a, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xea, 0x21, 0x9a, 0x83, 0xd8, 0xa9, 0x68, 0x6a, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x97, 0x93, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd8, 0x2e, 0xa2, 0x39, 0x28, 0x28, 0x32, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x3c, 0x1d, 0xd1, 0x6c, 0x50, 0x18, 0xaa, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x12, 0x89, 0xe6, 0xa0, 0xa0, 0xc8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0xa0, 0x44, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x2c, 0x2d, 0xd1, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x99, 0x4c, 0x34, 0x07, 0xaf, 0x40, 0x9c, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x84, 0x13, 0xcd, 0xc1, 0xbb, 0x51, 0xae, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0xf8, 0x44, 0x73, 0xf0, 0xca, 0x51, 0xcf, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x10, 0x45, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x6c, 0x49, 0xd1, 0x1c, 0xc4, 0xdd, 0x47, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xc2, 0xa7, 0x68, 0x0e, 0x62, 0x18, 0xa4, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x6d, 0x55, 0x34, 0x07, 0xf1, 0x20, 0xd2, 0xd4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xe6, 0xad, 0x68, 0x0e, 0xe2, 0x68, 0xa4, 0xa9, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x1a, 0x3c, 0x84, 0x64, 0x73, 0x83, 0xd4, 0x8b, 0xe2, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x81, 0x37, 0xab, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x37, 0xab, 0x1b, 0x40, 0xbf, 0xed, 0x8d, 0xac, 0x8e, 0xed, 0x0d, 0x04, 0xa5, 0xad, 0x8e, 0x0d, 0x04, 0x0e, 0x24, 0x2e, 0xb5, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x78, 0xf8, 0x75, 0x6e, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x71, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0x43, 0xed, 0xde, 0xe1, 0x69, 0x9d, 0x0d, 0x0f, 0xde, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x92, 0x2d, 0x72, 0xd7, 0xf0, 0xb6, 0xce, 0xc0, 0x9b, 0xbd, 0x1d, 0xb4, 0x4f, 0xca, 0xba, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x04, 0xca, 0x3e, 0x88, 0x22, 0xb6, 0xa6, 0x0d, 0x5a, 0x9c, 0x4b, 0xad, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0xca, 0x49, 0xec, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x72, 0x12, 0xbb, 0xc3, 0x0b, 0x41, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf1, 0x20, 0x35, 0x01, 0x73, 0x0d, 0x7f, 0x2e, 0x0d, 0x4e, 0x1e, 0xa4, 0x26, 0x60, 0xb6, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xe7, 0x70, 0xb8, 0x83, 0x28, 0x62, 0x6b, 0xda, 0x20, 0x59, 0xae, 0x78, 0x83, 0x93, 0x4e, 0x56, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xce, 0xe1, 0x70, 0x1b, 0x44, 0x12, 0x5b, 0xd3, 0x41, 0x04, 0xb8, 0x35, 0x1d, 0x24, 0x58, 0x16, 0x37, 0x6b, 0x50, 0x9a, 0x65, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x94, 0x66, 0xd9, 0x0d, 0xe0, 0x7f, 0x16, 0x26, 0xe7, 0x56, 0x26, 0x77, 0x32, 0x07, 0x62, 0xf6, 0x26, 0xd7, 0x56, 0xc7, 0x16, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0xe2, 0x10, 0xae, 0x69, 0x83, 0xa2, 0xd3, 0x78, 0xc3, 0x9f, 0x40, 0x1b, 0x9c, 0xe8, 0x1f, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x08, 0x9e, 0xda, 0x0d, 0x5a, 0x9c, 0x4b, 0xdd, 0xa0, 0xe8, 0x34, 0x5e, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x74, 0xc4, 0xe3, 0x83, 0x28, 0x62, 0x6b, 0xda, 0xf0, 0x5e, 0xd0, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0x20, 0x89, 0x1d, 0xea, 0x20, 0x8a, 0xd8, 0x9a, 0x36, 0x48, 0x96, 0x2b, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x4e, 0x5b, 0xd3, 0x41, 0xfa, 0x76, 0x71, 0xab, 0x41, 0x19, 0x94, 0xbd, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x50, 0x06, 0x65, 0x37, 0x80, 0x87, 0x5c, 0x19, 0x9c, 0x5c, 0xd9, 0x5c, 0x99, 0x1b, 0xdd, 0x86, 0x5f, 0x94, 0x36, 0x28, 0x00, 0x63, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x0d, 0x4f, 0xef, 0x1c, 0xb4, 0x4f, 0xca, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x0d, 0x4f, 0xef, 0x1c, 0x44, 0x80, 0x5b, 0x53, 0x87, 0x53, 0x6c, 0x0d, 0x52, 0x34, 0x8d, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x52, 0x34, 0x8d, 0x3b, 0x48, 0x44, 0xca, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0xd1, 0x04, 0xd7, 0xb4, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf4, 0xe6, 0x35, 0x1d, 0x44, 0xbe, 0x5c, 0xd3, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x74, 0xc4, 0xe3, 0x83, 0x18, 0xa2, 0x6b, 0x3a, 0x48, 0xb0, 0x2c, 0x6e, 0x35, 0x48, 0xab, 0x49, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0x92, 0x5e, 0x10, 0x07, 0xf8, 0xcb, 0xf0, 0xe0, 0xde, 0xdc, 0xca, 0xdc, 0xe8, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x28, 0x00, 0x63, 0x0f, 0xa2, 0x23, 0xae, 0x69, 0x83, 0xc2, 0x50, 0x75, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x2a, 0x5a, 0xd2, 0x41, 0x14, 0xb1, 0x35, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xc2, 0xee, 0x76, 0xc3, 0xd3, 0x3b, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x6b, 0x3e, 0x07, 0xed, 0x93, 0xb2, 0x76, 0x10, 0x3d, 0x73, 0x4d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x54, 0xb4, 0xa4, 0x83, 0x18, 0xa2, 0x6b, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x86, 0xa7, 0x77, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0x0e, 0x22, 0xc0, 0xad, 0xa9, 0x83, 0x14, 0xcd, 0xe2, 0xd5, 0xa0, 0xcc, 0x09, 0xd8, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0x0a, 0x1b, 0xf0, 0x83, 0x34, 0x09, 0xba, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x4d, 0x70, 0x4d, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0xbe, 0x5e, 0xd3, 0x41, 0xe4, 0xcb, 0x35, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x48, 0x62, 0x87, 0x3a, 0x88, 0x21, 0xba, 0xa6, 0x83, 0x04, 0xcb, 0xe2, 0x0e, 0xa7, 0x58, 0x1d, 0x4e, 0xb1, 0x15, 0xf0, 0xe1, 0xe4, 0xc2, 0xda, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x68, 0x93, 0x6c, 0x6a, 0x00, 0x3f, 0xb9, 0x30, 0xb1, 0x34, 0xb7, 0x96, 0xb6, 0x34, 0x36, 0xb6, 0x32, 0xb9, 0x0d, 0xbf, 0x28, 0x6d, 0xf8, 0x72, 0x69, 0xc3, 0x5f, 0x34, 0x1b, 0x3e, 0x58, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0x7e, 0x25, 0xdb, 0xe0, 0xdc, 0xfa, 0xb0, 0x41, 0x1b, 0x2e, 0xe2, 0x6b, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x2e, 0x1e, 0x1e, 0x93, 0xd9, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x7c, 0xb0, 0xba, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0xe2, 0x6e, 0xea, 0xe1, 0xbd, 0xa0, 0x0d, 0x0a, 0xd8, 0xfc, 0x0d, 0xbf, 0x92, 0xad, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf8, 0xb8, 0xe1, 0xe3, 0xa8, 0x83, 0x64, 0x07, 0xe4, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0x6d, 0xd6, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0x5a, 0xe7, 0xf0, 0xf4, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xb4, 0xce, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0x4f, 0xef, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x42, 0x81, 0xf5, 0xa0, 0xf0, 0xd5, 0xad, 0x0d, 0x1f, 0x8e, 0xd6, 0x06, 0x05, 0x6c, 0xfe, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe2, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x7c, 0x3e, 0x3c, 0xdb, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0xa7, 0x0f, 0x0f, 0xde, 0xb4, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0xac, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xf8, 0x7c, 0xf8, 0xa1, 0x66, 0x0d, 0x7f, 0x2e, 0x0d, 0x4e, 0x1f, 0x7e, 0xa8, 0x69, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0xc3, 0x83, 0x37, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0xc4, 0x3d, 0x48, 0x86, 0xab, 0x5a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x73, 0x3b, 0xdf, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xf1, 0x71, 0x0f, 0x92, 0xe1, 0xaa, 0xd6, 0xe0, 0x40, 0xd3, 0xb7, 0xe1, 0xe3, 0xa8, 0x83, 0x53, 0x4b, 0x5f, 0x07, 0xa7, 0x9f, 0xbe, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x9b, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0x92, 0xf9, 0xd0, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x85, 0x76, 0xef, 0x06, 0x45, 0xf8, 0x69, 0x1d, 0x9e, 0xed, 0xd9, 0xf0, 0x89, 0xcd, 0x86, 0xaf, 0x6d, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0x7a, 0xe7, 0x20, 0x05, 0x3a, 0x75, 0x83, 0x22, 0xa7, 0x75, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x72, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x90, 0x54, 0xc0, 0xb9, 0x41, 0xda, 0xdf, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0xe1, 0x1b, 0xbf, 0x0e, 0x0e, 0x45, 0x13, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x97, 0x1b, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x54, 0xb4, 0xa4, 0x0d, 0x22, 0x89, 0xad, 0xe9, 0xf0, 0xd0, 0xcf, 0x06, 0xc9, 0x7c, 0x68, 0x07, 0xa5, 0xba, 0xec, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x2b, 0xd9, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0x98, 0xcc, 0x41, 0x39, 0x01, 0xbd, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe6, 0xe1, 0xc1, 0x9b, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x94, 0x13, 0xd0, 0x87, 0x67, 0x7b, 0x36, 0x28, 0x72, 0x5a, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x28, 0x46, 0x6a, 0x37, 0xbc, 0xdb, 0xb3, 0xe1, 0x35, 0x9f, 0x83, 0xf8, 0x36, 0x6d, 0xda, 0xa0, 0x80, 0xcd, 0xdf, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0x08, 0x81, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0xa4, 0x23, 0x1e, 0x1f, 0x44, 0x54, 0x6b, 0xd3, 0x06, 0xe5, 0x04, 0xf4, 0x41, 0x99, 0x2d, 0xbd, 0x06, 0x01, 0x1e, 0xb4, 0xe1, 0xe3, 0xa8, 0x83, 0x62, 0xa4, 0xb6, 0x36, 0x38, 0x93, 0xbf, 0x74, 0x38, 0xc5, 0x16, 0xf8, 0xb3, 0x70, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf8, 0xb3, 0xb0, 0x01, 0xf4, 0x8e, 0x8c, 0x40, 0x50, 0xc4, 0xca, 0xf0, 0x40, 0xe0, 0x5c, 0xc2, 0x52, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3f, 0xb2, 0xb4, 0x36, 0x10, 0xb8, 0x37, 0xb6, 0x3c, 0x90, 0xb3, 0x32, 0xb7, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xf8, 0x5c, 0xe9, 0x60, 0xd1, 0x69, 0xfb, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xc0, 0xcf, 0xa5, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xd0, 0xee, 0x3d, 0x68, 0x9f, 0x94, 0x75, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xe0, 0xdb, 0xc2, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0xcd, 0x67, 0x83, 0x52, 0x48, 0xbd, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x48, 0xd1, 0x34, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0x22, 0x46, 0xb0, 0x69, 0x00, 0xcf, 0x39, 0xb6, 0xb7, 0x3b, 0x90, 0xb6, 0x3a, 0x36, 0xba, 0x34, 0x38, 0xb6, 0xbc, 0x0d, 0xbf, 0x28, 0x6d, 0x50, 0x20, 0x64, 0x6f, 0xf8, 0x20, 0x67, 0xc3, 0x6b, 0x7a, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0x98, 0xcc, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x7a, 0xc7, 0x1d, 0xa4, 0x12, 0xb5, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0xd1, 0xa1, 0x36, 0x3c, 0xbd, 0xb3, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0xc1, 0x09, 0xc3, 0x61, 0x0d, 0xff, 0xf0, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x64, 0x75, 0x62, 0x87, 0x5f, 0x84, 0xea, 0x20, 0x5e, 0x87, 0x9b, 0x56, 0x83, 0x32, 0x28, 0x7b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x88, 0xc3, 0xbe, 0xa6, 0x01, 0x3e, 0xb9, 0x32, 0xb2, 0xba, 0xb1, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0x78, 0x9e, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x86, 0xf7, 0x82, 0x36, 0x88, 0xf1, 0xdd, 0xa6, 0x66, 0x0d, 0xca, 0x9c, 0x80, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xa0, 0xb0, 0x01, 0x1f, 0xc0, 0x2b, 0x8c, 0x8c, 0x0c, 0x24, 0xcc, 0x8d, 0x0c, 0x64, 0xae, 0x4e, 0x6c, 0xc3, 0x2f, 0x4a, 0x1b, 0x14, 0x08, 0xd9, 0x1b, 0x2c, 0xa9, 0x5f, 0x5a, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x07, 0xb1, 0x3b, 0x4a, 0x73, 0x78, 0xe8, 0x67, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x5f, 0x9c, 0x6d, 0x78, 0x2f, 0xe8, 0x20, 0x5a, 0x7b, 0x9b, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0xce, 0x36, 0x3c, 0xbd, 0x73, 0x10, 0xad, 0xbd, 0x4d, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0c, 0xc4, 0xe1, 0xb9, 0xa0, 0xc3, 0x29, 0xb6, 0x80, 0x47, 0x56, 0x27, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0x1e, 0x59, 0x9d, 0xd8, 0x00, 0x7f, 0x5b, 0x1d, 0x1b, 0x88, 0x58, 0x1e, 0x08, 0xde, 0x86, 0x5f, 0x94, 0x36, 0x3c, 0xcf, 0xb4, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0x10, 0x4b, 0xae, 0x34, 0x87, 0x87, 0x7e, 0x36, 0x28, 0xf8, 0x30, 0x37, 0x88, 0x65, 0xe6, 0xa6, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x8f, 0xc9, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0xc3, 0x83, 0x37, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xb8, 0x52, 0x6c, 0x3a, 0x28, 0x88, 0xc7, 0x0f, 0x6f, 0xa1, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0xd1, 0xa1, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc5, 0x4c, 0xf6, 0x41, 0x04, 0xb8, 0x35, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x99, 0xec, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x69, 0xc0, 0x7b, 0x70, 0x6e, 0x71, 0xa8, 0x83, 0x28, 0xbe, 0x6e, 0x9a, 0x05, 0x3c, 0xba, 0xb7, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf0, 0xe8, 0xde, 0xca, 0x06, 0xf0, 0x2d, 0xc3, 0x83, 0x5b, 0x61, 0x7b, 0x3b, 0x03, 0xa1, 0x0b, 0x13, 0x63, 0x2b, 0x9b, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x78, 0xb7, 0x7a, 0xc3, 0x2f, 0x4a, 0x1b, 0x14, 0x08, 0xd9, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0xac, 0x3f, 0x48, 0x68, 0xc0, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x9c, 0xdc, 0xa0, 0x10, 0x4c, 0x3d, 0x88, 0x36, 0xee, 0xa6, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x20, 0x67, 0x83, 0x73, 0xff, 0xcb, 0x06, 0xe5, 0xba, 0xec, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0x7f, 0x78, 0x0e, 0x8e, 0xe9, 0x28, 0x6b, 0x50, 0xe4, 0xcb, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xca, 0x16, 0xd4, 0x0d, 0xca, 0xa6, 0xfa, 0x83, 0x52, 0x5d, 0xf6, 0x20, 0xa1, 0xd8, 0xb7, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x73, 0xf0, 0x02, 0x3e, 0xe5, 0x0d, 0x0f, 0xde, 0x1c, 0x44, 0x15, 0x72, 0xd3, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x51, 0x2c, 0xde, 0xb4, 0x41, 0x02, 0xaf, 0xd1, 0x41, 0x0a, 0x3f, 0x54, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x44, 0xac, 0x65, 0xd3, 0x86, 0xaf, 0x6d, 0xda, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x1c, 0x3e, 0x88, 0x36, 0xee, 0xa6, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x7c, 0x10, 0x6d, 0xdc, 0x4d, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x90, 0xc0, 0x6b, 0x74, 0x78, 0x7a, 0x67, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x28, 0x5b, 0x50, 0x37, 0x28, 0x9b, 0xea, 0x0f, 0xd2, 0x93, 0x06, 0x0f, 0x12, 0x8a, 0x7d, 0x0f, 0x0e, 0xbd, 0x7c, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x3e, 0x0f, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x89, 0x85, 0xc7, 0x1b, 0x94, 0xb2, 0x99, 0x87, 0xb7, 0xd0, 0x36, 0xfc, 0x1e, 0xb8, 0x06, 0x07, 0x8f, 0x8c, 0x83, 0x58, 0x49, 0x6f, 0x5a, 0x83, 0x23, 0x4e, 0xc6, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0x6c, 0x41, 0xdd, 0xa0, 0x6c, 0xaa, 0x3f, 0x38, 0xf4, 0xf2, 0x1d, 0x9e, 0x0b, 0xea, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x8f, 0xee, 0xad, 0x6c, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x14, 0x4d, 0xe3, 0x0d, 0xcf, 0x93, 0x6c, 0x10, 0xff, 0x81, 0x4d, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0x40, 0xc8, 0xde, 0x60, 0x49, 0xfd, 0xd2, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x88, 0xb3, 0x64, 0x9a, 0xc3, 0x43, 0x3f, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x93, 0x1b, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xc2, 0x4d, 0xf4, 0x20, 0x52, 0xdc, 0x9b, 0x0e, 0x6f, 0xa1, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0x50, 0xe4, 0xcb, 0x6e, 0x78, 0xf0, 0x66, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x72, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0xef, 0x7c, 0xd3, 0xe1, 0x17, 0xa1, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x8a, 0x10, 0xe8, 0x0d, 0x0f, 0xde, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x6e, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x0a, 0x37, 0xd1, 0x83, 0x28, 0x4f, 0x6f, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x1a, 0xde, 0xd6, 0x19, 0xbc, 0x3e, 0x28, 0xf2, 0x65, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf5, 0x41, 0x11, 0x02, 0xdd, 0x41, 0x0a, 0x3f, 0x54, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x6c, 0xe8, 0x72, 0x50, 0x58, 0x75, 0xaf, 0x06, 0xc5, 0xa9, 0xf6, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0x90, 0x70, 0xe5, 0x36, 0xc0, 0x97, 0xe6, 0x66, 0x57, 0x26, 0x47, 0xb7, 0xe1, 0x17, 0xa5, 0x0d, 0xcf, 0x33, 0x6d, 0xb0, 0xa4, 0x7e, 0x69, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0xc4, 0xc9, 0x35, 0xcd, 0xe1, 0xa1, 0x9f, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc7, 0x83, 0x18, 0x9c, 0x6f, 0xda, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0x0f, 0xcf, 0x06, 0xe1, 0xa9, 0xba, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x22, 0x06, 0xbf, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0x04, 0x5e, 0xa3, 0x83, 0x13, 0x62, 0x49, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x6c, 0xe8, 0x72, 0x50, 0xaa, 0xcb, 0x1e, 0x4e, 0xb1, 0x35, 0x48, 0x54, 0x23, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x48, 0x54, 0x23, 0xeb, 0x20, 0x8d, 0x0f, 0xea, 0x20, 0x95, 0x7b, 0x79, 0xd6, 0xa0, 0xac, 0xa5, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0x4e, 0xe5, 0x79, 0x07, 0x51, 0x6c, 0xd8, 0xb4, 0xe1, 0x17, 0xa5, 0x0d, 0x0a, 0x84, 0xec, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x38, 0x79, 0x78, 0x4c, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x5e, 0x1e, 0x9e, 0xde, 0xd9, 0x20, 0x52, 0x5f, 0x9b, 0xda, 0xf0, 0x15, 0xce, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x8d, 0xbe, 0xa5, 0x1e, 0x14, 0x23, 0xb5, 0x1b, 0x94, 0xeb, 0xb2, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0x93, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xc5, 0x48, 0xed, 0x41, 0x41, 0x3c, 0x7e, 0x78, 0x0b, 0x6d, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0x8a, 0x7c, 0xd9, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x58, 0x78, 0xbc, 0x41, 0xb9, 0x2e, 0x7b, 0x50, 0x66, 0x4b, 0xaf, 0x41, 0x11, 0x02, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x12, 0x0b, 0x8f, 0x0f, 0xe2, 0xa7, 0xb6, 0xe9, 0x20, 0x76, 0x6b, 0x9b, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x83, 0x38, 0x72, 0x70, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x35, 0x88, 0x41, 0x75, 0x9a, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x18, 0x54, 0xa7, 0x69, 0x00, 0xdf, 0xb6, 0xb0, 0xb5, 0x32, 0x10, 0xb9, 0x96, 0x36, 0x10, 0x38, 0xb9, 0xb4, 0xb6, 0xb2, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x5f, 0x2e, 0x6d, 0x50, 0x78, 0xd9, 0x1e, 0x14, 0x7f, 0xb1, 0x1b, 0xfe, 0xa2, 0x59, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xb6, 0xc4, 0xd2, 0xe8, 0xe6, 0x40, 0xe6, 0xdc, 0xc2, 0xce, 0xe6, 0x40, 0xe6, 0xca, 0xca, 0xc8, 0xba, 0x0e, 0x8e, 0x2d, 0xa5, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0xb8, 0xa4, 0x36, 0x28, 0x6a, 0xc4, 0xd7, 0xf0, 0x0f, 0xcf, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x51, 0x7c, 0x5d, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x88, 0x41, 0x75, 0x9a, 0xc3, 0x2f, 0x42, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x4e, 0x1e, 0x2c, 0x12, 0x43, 0xdd, 0xf0, 0x15, 0xce, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0x37, 0x48, 0x33, 0x08, 0x3d, 0x3c, 0xf4, 0x73, 0x50, 0xae, 0xcb, 0xae, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0xd8, 0x80, 0xa7, 0x39, 0x08, 0x4f, 0xd5, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xcb, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0x52, 0x01, 0xe7, 0x06, 0x69, 0x7f, 0xaf, 0x87, 0x5f, 0x84, 0x0e, 0x0f, 0xfd, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x41, 0xaa, 0xda, 0xf0, 0x5e, 0xd0, 0x1a, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x9b, 0x87, 0x1f, 0x6a, 0x36, 0xbc, 0xcd, 0xba, 0xe1, 0xdf, 0x9c, 0x0d, 0x8f, 0xc9, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xb0, 0xbb, 0x3d, 0x48, 0x00, 0xc8, 0x6d, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xa2, 0x4d, 0xb2, 0xa9, 0x83, 0x32, 0x5b, 0xba, 0x0d, 0xca, 0x09, 0xe8, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0xc3, 0xef, 0x81, 0x6b, 0x50, 0xe4, 0xcb, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x54, 0x5a, 0xd9, 0x83, 0x52, 0x5d, 0xb6, 0xc3, 0x29, 0xb6, 0x80, 0x3f, 0x56, 0x27, 0x47, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0x24, 0x89, 0x53, 0x03, 0xe8, 0x8c, 0xd5, 0xc9, 0xd9, 0x95, 0xc9, 0xd4, 0xd4, 0xc4, 0xe4, 0x36, 0xfc, 0xa2, 0xb4, 0xe1, 0x6f, 0xa5, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x5c, 0x52, 0x1b, 0x14, 0x35, 0xe2, 0x6b, 0xb8, 0xba, 0x36, 0x28, 0x25, 0xc4, 0x37, 0xdc, 0x51, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0x1c, 0x83, 0xb6, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xb4, 0x7b, 0x0f, 0x12, 0xf6, 0x2d, 0x0f, 0x12, 0x89, 0x5b, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x78, 0xb3, 0x78, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xa2, 0x46, 0x7c, 0x83, 0x48, 0x62, 0x6b, 0x3a, 0x38, 0xf4, 0xf2, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x23, 0x43, 0xc6, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0x3e, 0x38, 0x1d, 0x89, 0xac, 0xe1, 0x73, 0x97, 0x81, 0x37, 0x8b, 0x37, 0xbc, 0xad, 0x33, 0xf0, 0x66, 0x71, 0x6d, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0x78, 0x63, 0x75, 0xe2, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x1c, 0x3f, 0xfc, 0x50, 0xb3, 0x86, 0x3f, 0x97, 0x06, 0xd7, 0x0f, 0x3f, 0xd4, 0xb4, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf0, 0x78, 0xf8, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xc1, 0x53, 0xbb, 0x06, 0x27, 0xf6, 0x9b, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xcd, 0xc5, 0xc9, 0x6d, 0x70, 0x62, 0xbf, 0xd9, 0x20, 0x25, 0xcd, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x95, 0x43, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x12, 0xe5, 0x9f, 0x0e, 0x12, 0x29, 0x9d, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x89, 0xf2, 0x4f, 0x07, 0xc9, 0x05, 0xac, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x28, 0x98, 0x71, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0x20, 0x99, 0xd2, 0xe9, 0x20, 0xb9, 0x80, 0xb5, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x81, 0xd7, 0xd3, 0x37, 0x48, 0x32, 0x20, 0xdc, 0x20, 0x78, 0x6a, 0x37, 0x38, 0x35, 0xb7, 0x6d, 0x90, 0x4c, 0xe9, 0xb4, 0x41, 0xca, 0xd7, 0xd3, 0x1a, 0x24, 0x19, 0x10, 0x6e, 0xf8, 0x13, 0x68, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x05, 0x33, 0x4e, 0x07, 0x89, 0x94, 0x4e, 0x6b, 0x90, 0x64, 0x40, 0xb8, 0x41, 0xf0, 0xd4, 0x6e, 0x70, 0xba, 0xc8, 0x38, 0x88, 0x7c, 0x1b, 0xa7, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x14, 0xcc, 0x38, 0x1d, 0x24, 0x17, 0xb0, 0xd6, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x0c, 0xca, 0x3e, 0x88, 0x95, 0x17, 0xa7, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x78, 0x78, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0xa0, 0xc7, 0x69, 0x0d, 0x6f, 0xeb, 0x0c, 0xbc, 0x9e, 0x5e, 0xcd, 0x02, 0xde, 0x5c, 0x9c, 0xbc, 0xe1, 0x17, 0xa5, 0x0d, 0x5f, 0x2e, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xe0, 0xa9, 0xdd, 0xf0, 0xb4, 0xce, 0xe1, 0xa1, 0x9f, 0xd5, 0xa0, 0x38, 0xd5, 0xde, 0xf0, 0x8b, 0xd2, 0x86, 0x2f, 0x97, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xa9, 0x68, 0x49, 0x07, 0xd1, 0xce, 0xe2, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0xc1, 0xe9, 0x48, 0xe4, 0x20, 0x58, 0x59, 0x0f, 0x0f, 0xfd, 0x1c, 0x4e, 0xb1, 0x05, 0xbc, 0x31, 0xb6, 0x70, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x14, 0xd9, 0x9e, 0xc3, 0x0f, 0x35, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0xac, 0x32, 0x0c, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x47, 0xef, 0xb8, 0x35, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0x81, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x44, 0xb3, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x14, 0xa9, 0xe3, 0x07, 0xc9, 0x52, 0x9c, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x68, 0x69, 0xe8, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x28, 0xbb, 0x37, 0x48, 0x81, 0x4e, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0xbd, 0xe3, 0x36, 0x58, 0x4a, 0x4d, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x67, 0x6f, 0xbc, 0x83, 0x82, 0x78, 0xfc, 0x20, 0x59, 0x8a, 0xb3, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0x21, 0x2e, 0xbf, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa2, 0xd9, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xfc, 0xe2, 0xb2, 0xe1, 0x31, 0x99, 0x0d, 0x52, 0xb6, 0x3c, 0x3b, 0x48, 0x96, 0xe2, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x65, 0x71, 0xf4, 0x06, 0x45, 0xa5, 0xf8, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0x93, 0x39, 0x58, 0x72, 0x97, 0xbf, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0xd9, 0xf2, 0xdc, 0x60, 0xb1, 0xc2, 0x7c, 0x6b, 0xf8, 0xc5, 0x65, 0xc3, 0x63, 0x32, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x43, 0x4b, 0x43, 0xeb, 0xa0, 0xac, 0xf3, 0x6c, 0x05, 0xbc, 0xb1, 0x30, 0x72, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0xee, 0x1e, 0x44, 0x12, 0x8c, 0xd3, 0x1a, 0xfe, 0x5c, 0x1a, 0xbc, 0x3d, 0x88, 0x24, 0x18, 0xa7, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0x79, 0x10, 0x49, 0x30, 0x4e, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x3c, 0x1e, 0xbe, 0x41, 0x92, 0x01, 0xe1, 0x06, 0xc1, 0x53, 0xbb, 0xc1, 0xa9, 0xb9, 0x6d, 0x0d, 0x6f, 0xeb, 0x0c, 0xae, 0x1f, 0x14, 0xf9, 0xb2, 0x6b, 0x70, 0x62, 0xbf, 0xd9, 0x20, 0x0a, 0x66, 0x9c, 0x36, 0x38, 0xb1, 0xdf, 0x6c, 0x90, 0x92, 0xe6, 0xb4, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x52, 0x39, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x51, 0xfe, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3c, 0xb5, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xfc, 0xe0, 0x7c, 0x3a, 0xb1, 0x86, 0xb7, 0x75, 0x06, 0xc7, 0x0f, 0x86, 0xdd, 0x6e, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x44, 0xf9, 0xa7, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xf5, 0x83, 0xf3, 0xe9, 0xc4, 0x1a, 0xde, 0xd6, 0x19, 0x5c, 0x3f, 0x18, 0x76, 0xbb, 0xd5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xc0, 0xeb, 0xe9, 0x1b, 0x24, 0x19, 0x10, 0x6e, 0x10, 0x3c, 0xb5, 0x1b, 0x9c, 0x9a, 0xdb, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf8, 0x41, 0x91, 0x2f, 0xbb, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0xa2, 0x60, 0xc6, 0x69, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x29, 0x69, 0x4e, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x24, 0x95, 0x43, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x12, 0xe5, 0x9f, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0x41, 0x9c, 0x64, 0x39, 0x1d, 0xc4, 0xf7, 0x96, 0x53, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x51, 0xfe, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3c, 0xb5, 0x1b, 0xc4, 0xd2, 0x96, 0xd3, 0x41, 0xec, 0x66, 0x39, 0xd5, 0x41, 0x3c, 0xf2, 0x38, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0x58, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0xb4, 0xff, 0xd1, 0x79, 0x70, 0x22, 0x5f, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0x3d, 0x78, 0x44, 0x0d, 0xf7, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf2, 0x41, 0x63, 0x6c, 0xc2, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xcf, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xde, 0x58, 0x9d, 0xd8, 0x41, 0x53, 0x6c, 0xc2, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0x8c, 0x3e, 0x3f, 0x3c, 0x78, 0xb3, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf8, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x9e, 0x33, 0xa7, 0x83, 0x43, 0x5f, 0xdf, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x81, 0x1e, 0xa7, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0xae, 0xe1, 0x92, 0x5a, 0xe3, 0xd0, 0x41, 0x0a, 0xa6, 0x53, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb4, 0x89, 0xdc, 0x35, 0x5c, 0x52, 0x6b, 0x3c, 0x3f, 0x48, 0xc1, 0x74, 0xaa, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xbc, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x3e, 0xee, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0xe0, 0xcd, 0x41, 0x69, 0x86, 0x7e, 0x78, 0xe8, 0x67, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0xc3, 0x83, 0x37, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xec, 0x6e, 0x37, 0x38, 0x84, 0x4e, 0x1c, 0x04, 0x2b, 0xeb, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0x47, 0x9d, 0xb8, 0x35, 0x38, 0xb7, 0xf3, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x63, 0x61, 0x64, 0x1b, 0x1c, 0x3f, 0xf9, 0x36, 0x38, 0x9c, 0xf3, 0x1d, 0x34, 0xc5, 0x26, 0xbc, 0x06, 0x05, 0xcf, 0xe6, 0x41, 0xbc, 0xa6, 0x39, 0xb5, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0x70, 0xd4, 0x89, 0x5b, 0x83, 0x82, 0x67, 0xf3, 0x20, 0x0e, 0xe3, 0x9c, 0xd6, 0xe0, 0xdc, 0xce, 0xb7, 0xe1, 0xdd, 0x9e, 0x0d, 0xa2, 0xe7, 0xcc, 0xe9, 0xe0, 0x24, 0xcf, 0xd7, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x2b, 0xc0, 0x5b, 0x37, 0x57, 0x26, 0xc7, 0x96, 0x26, 0x6e, 0x90, 0x7a, 0x51, 0xbc, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0xc1, 0x1b, 0x36, 0x78, 0x37, 0x48, 0xbd, 0x28, 0xde, 0x60, 0x15, 0x96, 0xd3, 0x06, 0x51, 0xc5, 0xbc, 0xb4, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0x41, 0x7b, 0xf8, 0x4b, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0x03, 0x7f, 0x62, 0x03, 0xf0, 0x30, 0x97, 0xd6, 0x06, 0xc7, 0x56, 0x06, 0x62, 0x96, 0xc6, 0x56, 0x06, 0x72, 0x27, 0x97, 0x46, 0x57, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x1a, 0xe9, 0xf4, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0xd9, 0xe4, 0xea, 0xe0, 0xbd, 0x08, 0x24, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xd7, 0xe0, 0xef, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x64, 0x69, 0xf2, 0x06, 0xab, 0x03, 0x96, 0x36, 0x78, 0xfc, 0x0c, 0xe1, 0x86, 0x5f, 0x5c, 0x36, 0x78, 0xa5, 0x0d, 0xe1, 0xc1, 0x12, 0xf2, 0xf4, 0x0d, 0x4a, 0x78, 0xcc, 0x35, 0x18, 0x09, 0x0c, 0x07, 0xcf, 0x4f, 0x42, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xe3, 0xee, 0xe0, 0x6d, 0xf5, 0x7c, 0x07, 0xed, 0xe4, 0xa7, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x1d, 0x3c, 0x57, 0xa1, 0xef, 0xa0, 0x9d, 0xfc, 0xb4, 0x15, 0xf0, 0xcd, 0xde, 0xc2, 0xd8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe8, 0x0e, 0x74, 0x6a, 0x00, 0x7f, 0xb4, 0xb4, 0x33, 0xb4, 0x16, 0xb6, 0x32, 0xbb, 0x32, 0x36, 0x90, 0x3b, 0xb9, 0x34, 0xba, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x45, 0x7b, 0x4e, 0x1b, 0xfe, 0xa2, 0x59, 0xc3, 0xbf, 0xf3, 0x6b, 0xf0, 0x16, 0x51, 0xbe, 0xda, 0xa0, 0xe0, 0xc3, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0xa6, 0x63, 0x07, 0x07, 0xb8, 0xa5, 0x83, 0xf5, 0xe5, 0xe9, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xa7, 0x07, 0xef, 0xe4, 0x88, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0x02, 0x93, 0x5d, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0xc1, 0xe9, 0x83, 0x77, 0x72, 0xc4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xda, 0x04, 0x94, 0xda, 0x60, 0x11, 0x79, 0xfa, 0x41, 0x3b, 0xf9, 0x69, 0x1d, 0x94, 0x75, 0x9e, 0xd5, 0x6a, 0xf0, 0x68, 0x09, 0xa5, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x47, 0x4b, 0x28, 0x35, 0x80, 0xff, 0x5c, 0x5a, 0x1b, 0x1c, 0x5b, 0x19, 0x88, 0x59, 0x1a, 0x5b, 0x19, 0x08, 0xdb, 0x5b, 0x18, 0xd9, 0x86, 0x5f, 0x94, 0x36, 0x58, 0x23, 0x9d, 0xbe, 0xe1, 0x2f, 0x9a, 0x0d, 0x0e, 0xc3, 0x02, 0x1b, 0x3e, 0xb1, 0xd9, 0x20, 0x82, 0xfa, 0x9c, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x88, 0xaa, 0x3f, 0xa7, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0x50, 0x64, 0xae, 0xc1, 0xea, 0x80, 0xa5, 0x0d, 0xc2, 0x74, 0x6c, 0xc3, 0x2f, 0x2e, 0x1b, 0xb4, 0x26, 0x89, 0x7c, 0xb0, 0x84, 0x3c, 0xbd, 0xc3, 0x29, 0xd6, 0x02, 0xbe, 0x99, 0x5c, 0x58, 0xbe, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x10, 0xd7, 0x91, 0x4e, 0x0d, 0xc0, 0x03, 0x5a, 0xda, 0x19, 0x5a, 0x0b, 0x5b, 0x99, 0x5d, 0x19, 0x1b, 0x08, 0x59, 0x19, 0x5b, 0x19, 0x5d, 0xd9, 0x86, 0x5f, 0x94, 0x36, 0x58, 0x23, 0x9d, 0xbe, 0xe1, 0x2f, 0x9a, 0x0d, 0xa2, 0xa1, 0xd0, 0x69, 0x83, 0x82, 0x0f, 0x73, 0x83, 0xe8, 0x2e, 0x74, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xd1, 0x74, 0xe8, 0xb4, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x05, 0x26, 0xbb, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0x36, 0x12, 0x9d, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xb8, 0x3b, 0x78, 0x99, 0x3b, 0xdf, 0x41, 0x59, 0xe7, 0xd9, 0x41, 0x59, 0xe7, 0x59, 0xad, 0x06, 0xd1, 0xf1, 0x55, 0xb3, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x10, 0x1d, 0x5f, 0x35, 0x0d, 0xe0, 0x59, 0xe7, 0x96, 0x66, 0x96, 0x07, 0x32, 0x86, 0x16, 0xe6, 0x76, 0x56, 0x36, 0xb7, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x68, 0xff, 0xa3, 0xf3, 0x20, 0x1a, 0x0a, 0x9d, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x4d, 0x0e, 0x79, 0x1f, 0x44, 0x43, 0xa1, 0x53, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0x1a, 0x0a, 0x9d, 0x36, 0x58, 0x52, 0xbf, 0xb4, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0x10, 0x1d, 0x5f, 0x35, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xe6, 0xc2, 0xda, 0xca, 0x40, 0xe0, 0xc2, 0xe8, 0xd0, 0x36, 0xfc, 0x9b, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0xda, 0x69, 0x13, 0xde, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0xa3, 0x51, 0xde, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x25, 0xf6, 0x46, 0x87, 0x06, 0x42, 0x56, 0xc6, 0x46, 0x17, 0x36, 0xb7, 0xe1, 0x11, 0xd6, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0xd8, 0xa0, 0x8d, 0x43, 0x07, 0xed, 0x2d, 0x79, 0xaf, 0x41, 0x31, 0x89, 0xb9, 0x41, 0xc0, 0x06, 0x6d, 0x1c, 0x3a, 0x68, 0x24, 0xca, 0xbb, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x3c, 0x83, 0x3a, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0x81, 0xc9, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf8, 0xa0, 0xbd, 0x25, 0xef, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xd0, 0x48, 0x94, 0x77, 0x75, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0x2b, 0xc0, 0x33, 0x37, 0x16, 0xe6, 0x66, 0x6e, 0x78, 0x50, 0x72, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0x35, 0x7b, 0x93, 0x6b, 0x0b, 0xa3, 0xa3, 0x2b, 0x23, 0x03, 0x99, 0x1b, 0x0b, 0x73, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0x27, 0x3d, 0xd1, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xc5, 0x65, 0x0d, 0x02, 0xe8, 0x6c, 0x83, 0xa5, 0x1f, 0x4d, 0x1b, 0x14, 0x82, 0xa9, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0xa5, 0xcb, 0x55, 0x1b, 0x2c, 0x4d, 0x15, 0x3d, 0x38, 0xe9, 0x89, 0x56, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0xb8, 0xa4, 0x36, 0x28, 0x6a, 0xc4, 0xd7, 0xe0, 0x18, 0x73, 0xb6, 0xe1, 0x73, 0x97, 0x35, 0x4c, 0xdc, 0xe0, 0x61, 0xb8, 0x78, 0x70, 0x5a, 0x39, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0xce, 0x54, 0xdd, 0xf0, 0xb4, 0xce, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x3c, 0x70, 0x61, 0x72, 0x73, 0x66, 0x87, 0xb7, 0xd0, 0xda, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0x16, 0xf0, 0xc5, 0xde, 0xd2, 0xd8, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x55, 0x90, 0xc9, 0x1b, 0x2c, 0x4d, 0x15, 0x3d, 0x38, 0x85, 0x8b, 0xb6, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x31, 0xe6, 0x6c, 0x83, 0x45, 0x26, 0xa5, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x62, 0x12, 0x73, 0x83, 0x30, 0x02, 0xda, 0x38, 0x74, 0x50, 0xec, 0x9e, 0xaf, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x3e, 0x8c, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x23, 0x0b, 0xaf, 0xe1, 0x6d, 0x9d, 0x83, 0x97, 0xcf, 0xc4, 0xd4, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1c, 0x63, 0xce, 0x0e, 0x4e, 0x2d, 0x7d, 0xb5, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0x28, 0x94, 0x3b, 0x37, 0x38, 0x0f, 0x26, 0x6d, 0xf8, 0xdc, 0x65, 0x0d, 0x13, 0x37, 0x78, 0x1a, 0x4e, 0x1f, 0x9c, 0x56, 0xce, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0x62, 0xe7, 0xd6, 0xe9, 0x20, 0x7e, 0x6f, 0x9d, 0x56, 0x83, 0x38, 0x85, 0x75, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x53, 0x58, 0xa7, 0x06, 0xa0, 0xa1, 0x2d, 0x6c, 0xad, 0x0c, 0x04, 0x2e, 0x4c, 0x6e, 0xae, 0x4c, 0x0e, 0xc4, 0x4c, 0xee, 0xad, 0x4d, 0xb7, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xb4, 0xec, 0x88, 0x8c, 0xa1, 0x85, 0xc9, 0xcd, 0xed, 0xc9, 0xd5, 0xb1, 0x95, 0xf5, 0x8d, 0xa1, 0x85, 0xc9, 0xcd, 0x89, 0x36, 0xfc, 0xb9, 0x34, 0x78, 0x78, 0x10, 0x55, 0xab, 0x4e, 0x1b, 0x1c, 0x6d, 0xf8, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0x37, 0x3c, 0x33, 0xb9, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xd1, 0x1a, 0xeb, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x3d, 0x18, 0xcc, 0xc3, 0x43, 0x3f, 0xb5, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0x41, 0xcf, 0xbe, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x31, 0xe6, 0x6c, 0x83, 0x82, 0x22, 0x73, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x03, 0x4d, 0xdf, 0x06, 0x65, 0xf4, 0xf9, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0xa3, 0xcf, 0x0f, 0xe2, 0xf7, 0xd6, 0x69, 0xd6, 0xa0, 0xb1, 0x18, 0xcc, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0xa2, 0x6a, 0xd5, 0x69, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x63, 0xcc, 0xd9, 0x06, 0x05, 0x45, 0xe6, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x2e, 0xa9, 0x0d, 0x8a, 0x1a, 0xf1, 0x35, 0x38, 0xc6, 0x9c, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x9f, 0xbb, 0x0c, 0x9e, 0x1e, 0x1c, 0xdf, 0x0d, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf4, 0xc1, 0x39, 0x33, 0xa9, 0x36, 0x58, 0x52, 0x9d, 0xb4, 0x86, 0xcf, 0x5d, 0x06, 0xa7, 0x0f, 0x62, 0xf8, 0xd6, 0x69, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x93, 0xab, 0x63, 0x37, 0x5c, 0x52, 0x6b, 0xf0, 0x52, 0x12, 0x9b, 0x83, 0x62, 0xf7, 0xbc, 0x0d, 0x9f, 0xbb, 0x0c, 0x9e, 0x6e, 0x50, 0xc2, 0x63, 0x2e, 0xe0, 0xc9, 0xd5, 0xb1, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x96, 0x39, 0xc9, 0xae, 0xe1, 0x73, 0x97, 0xc1, 0xe1, 0x0d, 0x6f, 0xeb, 0x1c, 0xc4, 0x46, 0xb3, 0x53, 0x1b, 0x94, 0xf0, 0x98, 0x6b, 0x3c, 0x3f, 0x88, 0x8d, 0x66, 0xa7, 0x0d, 0x62, 0xad, 0xd9, 0x69, 0x83, 0x82, 0x60, 0x76, 0x0d, 0xa9, 0x83, 0x83, 0xd8, 0x68, 0x76, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x73, 0x92, 0x5d, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xac, 0x91, 0x6a, 0xda, 0xe0, 0xa4, 0x27, 0x7a, 0x10, 0x41, 0xce, 0x4e, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x55, 0x60, 0xb2, 0x07, 0x71, 0xde, 0xec, 0x74, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0xb3, 0x00, 0xdf, 0x18, 0x9a, 0xdc, 0x9b, 0xdb, 0xbb, 0x41, 0xea, 0x45, 0xf1, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x00, 0x1e, 0x66, 0x72, 0x6f, 0x6d, 0x2d, 0x75, 0x6e, 0x69, 0xf8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xcc, 0x51, 0x3b, 0x35, 0x00, 0x2f, 0x75, 0x6e, 0x69, 0x78, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x40, 0x64, 0x61, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x78, 0xd0, 0xa5, 0xb5, 0x95, 0xcd, 0xd1, 0x85, 0xb5, 0xc1, 0x07, 0x65, 0x96, 0xee, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xf2, 0xb5, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xf8, 0x13, 0x68, 0x0d, 0x3f, 0xc2, 0x0c, 0x3c, 0x59, 0x78, 0x10, 0x07, 0x7b, 0x35, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x71, 0x7e, 0xed, 0xd4, 0x06, 0x6f, 0xfb, 0x73, 0x6f, 0x05, 0xbc, 0x3a, 0xb7, 0x76, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf0, 0xea, 0xdc, 0xda, 0x06, 0xf0, 0xaf, 0x92, 0x13, 0x4b, 0xa3, 0x03, 0xa1, 0x7b, 0x03, 0xa9, 0x72, 0x4b, 0xc3, 0x03, 0x69, 0x9b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3c, 0x38, 0xf2, 0xb5, 0x6e, 0x70, 0xb4, 0xe1, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x02, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0x37, 0x3c, 0x33, 0x79, 0x10, 0xed, 0xb5, 0x4b, 0x07, 0xf1, 0xb6, 0xed, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x78, 0x5a, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x0a, 0xac, 0x1b, 0xbc, 0xed, 0xcf, 0x7d, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0xc1, 0x41, 0x5f, 0x1b, 0x44, 0x70, 0xb6, 0x53, 0x87, 0x53, 0x6c, 0x01, 0x9f, 0x2c, 0xec, 0x6e, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0xea, 0x71, 0xa7, 0x06, 0xf0, 0x23, 0x0b, 0xa3, 0x2b, 0x03, 0xb9, 0x2b, 0x2b, 0x5b, 0x23, 0x0b, 0xcb, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0xbd, 0xa7, 0xde, 0x41, 0xda, 0x92, 0xe8, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0xc2, 0xee, 0x76, 0x83, 0x25, 0xd5, 0x49, 0x1b, 0x9c, 0x17, 0x68, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0xfc, 0x09, 0xb4, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x4f, 0xe9, 0x0e, 0x6a, 0x0d, 0x6f, 0xeb, 0x0c, 0x9e, 0x1f, 0xac, 0x7c, 0xd8, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x02, 0x8f, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x22, 0x28, 0xdd, 0x69, 0x0d, 0x6f, 0xeb, 0x0c, 0xde, 0x1e, 0xac, 0x7c, 0xd8, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0x93, 0x07, 0x6d, 0x3d, 0x72, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x15, 0x78, 0x74, 0x83, 0x08, 0x4a, 0x77, 0x3a, 0x28, 0xa0, 0xc8, 0x5b, 0x01, 0x9f, 0xac, 0x6e, 0x8e, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0xd2, 0x76, 0xa7, 0x06, 0xf0, 0x87, 0x93, 0x4b, 0x73, 0xa3, 0x03, 0xa9, 0xa2, 0x1a, 0x02, 0x31, 0x7b, 0x93, 0x6b, 0x0b, 0xa3, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x31, 0x64, 0xee, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0x4e, 0x7a, 0xa2, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0xde, 0x5d, 0x59, 0xbe, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x54, 0x8f, 0x3b, 0x75, 0xf0, 0x9e, 0x6c, 0x96, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x1a, 0xfd, 0x23, 0x5c, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0x83, 0x95, 0xa2, 0x89, 0x07, 0x0b, 0x4f, 0xcf, 0x0f, 0x0a, 0xe2, 0xf1, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0x0f, 0x2e, 0x6d, 0x5d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0xee, 0x1e, 0x1c, 0x85, 0x4e, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xf4, 0xc1, 0x42, 0x0b, 0xf8, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x49, 0x4f, 0x74, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x2c, 0x04, 0x37, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0xe5, 0xfc, 0x06, 0xc5, 0xd0, 0xee, 0xc1, 0xc9, 0xa9, 0xaf, 0x0d, 0xcf, 0xe2, 0x2d, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x83, 0x4b, 0x5b, 0x5b, 0xc3, 0xdb, 0x3a, 0x03, 0xde, 0x5d, 0x59, 0xde, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0xde, 0x5d, 0xda, 0xda, 0x86, 0xb7, 0x75, 0x06, 0x3e, 0xaf, 0xae, 0x06, 0x65, 0x83, 0x82, 0x65, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x46, 0x28, 0x09, 0x0f, 0x22, 0x7d, 0xdd, 0xa9, 0x41, 0xc1, 0xb2, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x9c, 0xe6, 0x3b, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xaf, 0xf9, 0x6c, 0x10, 0x51, 0xeb, 0x4e, 0xad, 0xe1, 0x41, 0xc9, 0x0d, 0x9a, 0xf5, 0xe1, 0x3e, 0x88, 0xb7, 0x7d, 0xa7, 0x1a, 0x14, 0x2c, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x42, 0x49, 0x78, 0x10, 0x3d, 0xe9, 0x4e, 0x0d, 0x0a, 0x96, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0xa1, 0x24, 0x5c, 0xc3, 0xdb, 0x3a, 0x83, 0xa3, 0x07, 0x6d, 0x3d, 0x72, 0xd5, 0xa0, 0x7a, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x11, 0x4a, 0xc2, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7b, 0xd0, 0xd6, 0x23, 0x57, 0x0d, 0xaa, 0x97, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0xa1, 0x24, 0x5c, 0xc3, 0xdb, 0x3a, 0x83, 0xcf, 0x07, 0x6d, 0x3d, 0x72, 0xd5, 0x41, 0x1c, 0x7b, 0xd6, 0xac, 0x06, 0x4f, 0xe9, 0x0e, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x78, 0x4a, 0x77, 0x50, 0x03, 0x78, 0x2a, 0x85, 0xb9, 0x81, 0xc4, 0x80, 0xdc, 0x95, 0x95, 0xad, 0x91, 0x85, 0xe5, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x64, 0xaf, 0xcf, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x1a, 0xe8, 0x35, 0xdb, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x48, 0x5b, 0xff, 0x3c, 0x28, 0x88, 0xc7, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0x10, 0x76, 0xb7, 0x1b, 0x2c, 0xa9, 0x4e, 0xda, 0xe0, 0xbc, 0x40, 0xb3, 0x41, 0x92, 0x01, 0xe1, 0x86, 0x3f, 0x81, 0x36, 0x3c, 0x26, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0x0e, 0x0b, 0x6c, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb0, 0xbb, 0xdd, 0xa0, 0xad, 0x66, 0xb3, 0x83, 0x33, 0x73, 0x5b, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe0, 0xa9, 0xdd, 0xe0, 0xd4, 0xdc, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x0d, 0xda, 0x6a, 0x36, 0x3b, 0x48, 0x31, 0x08, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3c, 0xb5, 0x1b, 0x1c, 0x97, 0x67, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x61, 0x77, 0xbb, 0x41, 0x5b, 0xcd, 0x66, 0x07, 0x09, 0x7f, 0xa1, 0x35, 0x6b, 0x70, 0xd8, 0x3f, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x38, 0xec, 0x9f, 0x35, 0x00, 0x1f, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x6c, 0x65, 0x61, 0x70, 0x20, 0x73, 0x65, 0x63, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0x5b, 0x59, 0x7e, 0x90, 0xb6, 0x24, 0xba, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xb1, 0x95, 0xc9, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xe9, 0x94, 0xeb, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xd8, 0xca, 0xf2, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xdc, 0x3d, 0x3c, 0x78, 0xb3, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xe4, 0x6b, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xd8, 0xca, 0xc8, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x6c, 0x65, 0x72, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe0, 0xa9, 0xdd, 0xa0, 0x18, 0xda, 0x3d, 0x88, 0xb7, 0x6d, 0xa7, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc3, 0x56, 0xda, 0x20, 0xa2, 0x31, 0x9e, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0xe5, 0xfc, 0x06, 0xc5, 0xd0, 0xee, 0x1a, 0x1e, 0x94, 0xdc, 0x60, 0x65, 0x47, 0xef, 0x41, 0xbc, 0xed, 0x3b, 0x75, 0x10, 0x6f, 0xdb, 0x4e, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0x8f, 0xad, 0x8c, 0x6c, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x86, 0xad, 0xb4, 0x41, 0x44, 0x63, 0x3c, 0x6d, 0x10, 0xc9, 0x1b, 0x4f, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x5f, 0x9c, 0x1d, 0x44, 0xc2, 0xc6, 0x53, 0x6b, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xe7, 0xc1, 0xe9, 0x83, 0x48, 0xaf, 0x78, 0x3a, 0x48, 0xbe, 0xee, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0xdc, 0x20, 0x36, 0x3b, 0x9e, 0x0e, 0xe2, 0x6d, 0xdb, 0xe9, 0x20, 0x36, 0x3b, 0x9e, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x28, 0x8a, 0x78, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x42, 0xcf, 0xc9, 0x83, 0xf8, 0xe3, 0x78, 0xda, 0x20, 0xba, 0x43, 0x9e, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x83, 0x92, 0x86, 0xf7, 0x70, 0x8a, 0xb5, 0x06, 0x87, 0x7f, 0xd3, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xc3, 0xbf, 0x69, 0x03, 0xf8, 0xc3, 0x85, 0xc9, 0xcd, 0x95, 0x81, 0x54, 0x51, 0x0d, 0x81, 0x98, 0xbd, 0xc9, 0xb5, 0x85, 0xd1, 0x6d, 0x78, 0x50, 0x72, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x6f, 0x19, 0x1e, 0xdc, 0xdb, 0x5c, 0x19, 0x08, 0x5c, 0x98, 0xdc, 0x5c, 0x99, 0xdc, 0xdc, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0x4e, 0x40, 0xa2, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x34, 0xfb, 0x72, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x6b, 0x00, 0xbb, 0xe1, 0x69, 0x9d, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xba, 0x56, 0xd2, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xcf, 0x95, 0xc1, 0x85, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0xbf, 0x8c, 0xad, 0xac, 0xad, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x0d, 0x02, 0xe8, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0xc6, 0xc6, 0x5d, 0x83, 0x42, 0x30, 0x75, 0xc3, 0xbf, 0xf3, 0x1b, 0x44, 0x44, 0xcb, 0x53, 0xb5, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x0d, 0xd2, 0x96, 0x44, 0xdb, 0xe0, 0x68, 0xc3, 0xb7, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xf5, 0xc2, 0x36, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x06, 0x7c, 0xb2, 0x32, 0xb5, 0xb9, 0x83, 0xd8, 0x68, 0x5e, 0x3a, 0x48, 0x05, 0x1a, 0xdb, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x67, 0x29, 0xb0, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0xc0, 0xeb, 0xc1, 0x1d, 0x44, 0x9d, 0xcc, 0xd3, 0x41, 0x2a, 0xd0, 0x58, 0x1b, 0xbe, 0x7e, 0x59, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x0a, 0xc1, 0xd4, 0x83, 0xb4, 0x25, 0xd1, 0x35, 0x7c, 0xee, 0x32, 0x78, 0x7d, 0x50, 0x36, 0x61, 0xb6, 0x41, 0x21, 0x98, 0xba, 0xe1, 0x73, 0xa5, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x12, 0x43, 0xaf, 0xd6, 0x20, 0x80, 0xce, 0x36, 0xfc, 0xe2, 0xb2, 0xe1, 0x69, 0x9d, 0x83, 0xf4, 0x6a, 0xa7, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x48, 0x0c, 0xbd, 0x5a, 0x83, 0x00, 0x3a, 0x3b, 0x38, 0x84, 0x4e, 0xb4, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x62, 0xe8, 0xd5, 0x1a, 0x04, 0xd0, 0xd9, 0x86, 0xb7, 0x75, 0x06, 0x27, 0x0f, 0x0e, 0x34, 0x7d, 0xad, 0x41, 0xe8, 0x97, 0x6c, 0x90, 0x18, 0x7a, 0xb5, 0x06, 0x01, 0x74, 0xb6, 0xe1, 0x92, 0x5a, 0xe3, 0xf9, 0xc1, 0x81, 0xa6, 0xaf, 0x0e, 0x8e, 0x8b, 0x27, 0x1b, 0x1c, 0x5d, 0x07, 0xd7, 0xf0, 0x15, 0xce, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0xcf, 0x83, 0x36, 0x28, 0x28, 0x32, 0x37, 0x28, 0x76, 0x34, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0xe0, 0xf1, 0xd4, 0x7b, 0x1b, 0x87, 0x0e, 0x4a, 0x26, 0xd4, 0x0d, 0x0a, 0x99, 0xdb, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0x2e, 0xa9, 0x35, 0x9e, 0x1f, 0x94, 0x4c, 0xa8, 0xad, 0xe1, 0x2b, 0x9c, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x9f, 0x07, 0x6d, 0x50, 0x50, 0x64, 0x6e, 0x50, 0xec, 0x68, 0xae, 0x41, 0x31, 0x89, 0xb9, 0xc1, 0xa2, 0x3c, 0xd7, 0x83, 0x18, 0xfd, 0x79, 0x3a, 0x88, 0x00, 0xa0, 0xa7, 0x35, 0x7c, 0x85, 0xb3, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xf3, 0xa0, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x28, 0x26, 0x31, 0x37, 0x38, 0xe7, 0xa6, 0x1c, 0xc4, 0xe8, 0xcf, 0xd3, 0x41, 0x04, 0x00, 0x3d, 0xad, 0xe1, 0x2b, 0x9c, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x9f, 0x07, 0x6d, 0x50, 0x50, 0x64, 0x6e, 0x50, 0xec, 0x68, 0xae, 0x41, 0x31, 0x89, 0xb9, 0xc1, 0xe9, 0xc7, 0xf5, 0x20, 0x46, 0x7f, 0x9e, 0x0e, 0x22, 0x00, 0xe8, 0xa9, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x81, 0x27, 0x23, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x27, 0x23, 0x1b, 0xc0, 0x87, 0xee, 0xee, 0x0d, 0x84, 0x2c, 0xed, 0x2c, 0x8d, 0x6e, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x55, 0x0d, 0xdd, 0x20, 0xe5, 0xb5, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x8a, 0x86, 0x7e, 0x0d, 0x02, 0x96, 0xf5, 0x20, 0x60, 0x59, 0x0f, 0x16, 0xc2, 0x9a, 0xb6, 0x82, 0xdf, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xe1, 0x77, 0x03, 0x78, 0x91, 0x85, 0xe5, 0x81, 0xbc, 0x99, 0x81, 0xdc, 0x95, 0x95, 0xad, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x25, 0x76, 0xac, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x73, 0x6e, 0x75, 0x67, 0x07, 0xf1, 0xaa, 0xef, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x98, 0x4c, 0xba, 0xc1, 0x6a, 0x65, 0xd3, 0x5a, 0xc1, 0xc9, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x70, 0xb2, 0x83, 0xb4, 0x4d, 0xce, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x54, 0x35, 0x74, 0x83, 0x94, 0xd7, 0xaa, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x2a, 0x1a, 0xfa, 0x35, 0x3c, 0x26, 0x73, 0x10, 0xb0, 0xac, 0x07, 0x0b, 0x61, 0x4d, 0x5b, 0xc1, 0xdb, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xf0, 0xb6, 0x83, 0xa5, 0xbe, 0xab, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x89, 0x1d, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x62, 0x9d, 0x9e, 0x0e, 0xe2, 0xda, 0xdf, 0xe9, 0x20, 0x16, 0x9f, 0x9e, 0x66, 0xc1, 0xf3, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xf0, 0xbc, 0x83, 0x55, 0x55, 0xae, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x05, 0xda, 0xea, 0x06, 0xab, 0xc0, 0x64, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x55, 0x43, 0x37, 0x48, 0x79, 0xad, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0xa2, 0xa1, 0xdf, 0x60, 0x41, 0xe6, 0xdb, 0xc1, 0x42, 0x58, 0xd3, 0x3a, 0x9c, 0x62, 0x0b, 0xae, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x86, 0xeb, 0x0d, 0xe0, 0x41, 0x97, 0xd6, 0x56, 0x06, 0xa2, 0xf7, 0xe6, 0x56, 0xb6, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0x41, 0x87, 0xae, 0xe1, 0x59, 0xbc, 0x83, 0xd8, 0xb2, 0xae, 0x69, 0x0d, 0x6f, 0xeb, 0x0c, 0x3c, 0x19, 0xd9, 0x06, 0x11, 0xd9, 0xf5, 0xd4, 0xac, 0x41, 0x54, 0xb4, 0x3c, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x44, 0x45, 0xcb, 0x53, 0x03, 0xf8, 0x91, 0x85, 0xd1, 0x95, 0x81, 0x94, 0xb1, 0x95, 0xb5, 0x95, 0xb9, 0xd1, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x15, 0x68, 0xab, 0x1b, 0xac, 0xdd, 0xad, 0x3b, 0x38, 0x39, 0xf5, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0xae, 0xe1, 0x8d, 0xbb, 0x83, 0x47, 0x55, 0xef, 0x1d, 0xa4, 0x57, 0x3b, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0xad, 0x6e, 0xb0, 0x58, 0xe9, 0xf5, 0xe0, 0x84, 0x40, 0xb1, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0x3a, 0x29, 0xd3, 0x41, 0xa9, 0x2e, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x86, 0x37, 0xee, 0x0e, 0x96, 0x5c, 0x2b, 0x1e, 0x1c, 0x7f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x48, 0xf1, 0x75, 0x3a, 0x48, 0x2e, 0x60, 0x6d, 0xd6, 0x20, 0xfe, 0x58, 0x9e, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xe2, 0x8f, 0xe5, 0xa9, 0x01, 0x3c, 0xe6, 0xca, 0xe0, 0xc2, 0xe4, 0xc2, 0xe8, 0xde, 0xe4, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0x9a, 0x3e, 0xbe, 0x3c, 0x68, 0xaa, 0xd6, 0x75, 0x83, 0xb5, 0xc7, 0xa4, 0x1d, 0x4e, 0xb1, 0xd6, 0x20, 0xd6, 0x9d, 0x9e, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x62, 0xdd, 0xe9, 0xa9, 0x01, 0xfc, 0xe1, 0xde, 0xe6, 0xd2, 0xe8, 0xd2, 0xde, 0xdc, 0x40, 0xd2, 0xdc, 0x40, 0xd8, 0xd2, 0xe6, 0xe8, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0x8e, 0x8a, 0xa8, 0x1b, 0x7e, 0x51, 0xda, 0x60, 0xbd, 0xc5, 0xdc, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0x29, 0x94, 0xe7, 0xe1, 0x31, 0x99, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x59, 0x58, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x7a, 0x4e, 0x1e, 0xde, 0x42, 0x6b, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0x3c, 0x48, 0xc1, 0x9e, 0xda, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x86, 0xf7, 0x82, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0xc1, 0x42, 0x70, 0x83, 0xc2, 0xcb, 0xf8, 0xe0, 0x10, 0xea, 0xb7, 0x06, 0xc7, 0x70, 0x83, 0x83, 0xe5, 0xd0, 0x9e, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xac, 0x94, 0xf6, 0xdc, 0xf0, 0x71, 0xd4, 0xc1, 0x72, 0x68, 0xcf, 0x83, 0xe2, 0x40, 0x7e, 0x05, 0xa7, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0xc3, 0xe9, 0x06, 0xe0, 0x03, 0xed, 0xad, 0x4e, 0x6e, 0x4e, 0xa7, 0x2d, 0xcd, 0xad, 0x8e, 0xae, 0x6c, 0x4e, 0x67, 0xae, 0x6c, 0x6c, 0x6e, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xd1, 0x83, 0xa3, 0xd0, 0xc9, 0x86, 0x1f, 0x6a, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xed, 0xc1, 0x51, 0xe8, 0x64, 0xc3, 0x0f, 0x35, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf9, 0xe0, 0x28, 0x74, 0xd2, 0x06, 0x47, 0xd7, 0xc1, 0x0d, 0x0e, 0xca, 0x74, 0x1b, 0x1c, 0x42, 0x27, 0x0e, 0x4e, 0xf2, 0x7c, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x06, 0xe5, 0xba, 0xec, 0x06, 0x0b, 0xe1, 0x48, 0x37, 0x28, 0xd7, 0x65, 0x37, 0x58, 0x08, 0x47, 0x7a, 0x50, 0xaa, 0xcb, 0x1e, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0x6a, 0xd0, 0x96, 0x28, 0xe0, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x5b, 0xa2, 0x80, 0x0d, 0xe0, 0x4f, 0xf7, 0x06, 0xc2, 0x56, 0x16, 0x06, 0x07, 0x32, 0x57, 0x36, 0x06, 0x42, 0x97, 0xd6, 0x56, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0xc2, 0x62, 0xe7, 0xc1, 0x91, 0xaf, 0x75, 0xc3, 0x27, 0x36, 0x1b, 0xc4, 0x9c, 0xc5, 0xd3, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x97, 0x57, 0x47, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x45, 0xdf, 0x7b, 0x07, 0x29, 0xeb, 0x9f, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0x69, 0x4b, 0xa2, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0x6d, 0x90, 0xb6, 0xfe, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x2a, 0xe7, 0x37, 0x28, 0x86, 0x76, 0xd7, 0xf0, 0xa0, 0xe4, 0x06, 0x0b, 0x11, 0x76, 0x0f, 0xe2, 0x6d, 0xdf, 0xa9, 0x83, 0x78, 0xdb, 0x76, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xe8, 0x7b, 0x6f, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x74, 0xca, 0x75, 0x0d, 0x97, 0xd4, 0x02, 0x5e, 0x5e, 0x1d, 0xd9, 0x1a, 0xbc, 0xcd, 0x1e, 0x66, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0xa0, 0x18, 0xda, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0xcf, 0x83, 0xd3, 0x07, 0x31, 0xa4, 0xf8, 0x54, 0xb5, 0xe1, 0x83, 0x9c, 0x35, 0x3c, 0xc2, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc3, 0x56, 0xda, 0x20, 0x6d, 0xfd, 0x73, 0x83, 0xf8, 0x39, 0x7c, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0xec, 0x20, 0x0e, 0x0d, 0x9f, 0x5a, 0xc3, 0x25, 0xb5, 0x41, 0x0c, 0x29, 0x3e, 0xad, 0xc1, 0xdb, 0xec, 0x61, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x8a, 0x22, 0xde, 0x83, 0x48, 0x5c, 0x7c, 0x6a, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0xa2, 0x88, 0x77, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xf4, 0x9c, 0x3c, 0x88, 0xfa, 0xc3, 0xa7, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xa2, 0xef, 0xbd, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xd2, 0x29, 0xd7, 0x0d, 0xa2, 0xd3, 0xf1, 0xa9, 0x0e, 0xa2, 0x9c, 0xe4, 0xe9, 0x70, 0x8a, 0xad, 0x41, 0x93, 0xb5, 0xb5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x4d, 0xd6, 0xd6, 0x36, 0x00, 0x1f, 0x55, 0x72, 0x62, 0x69, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x55, 0x6e, 0x69, 0x78, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0xc6, 0xbc, 0x9d, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x28, 0xb0, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x6e, 0x78, 0x5a, 0xe7, 0x20, 0xa6, 0xc6, 0x9d, 0x0e, 0xe2, 0x6d, 0xdb, 0x69, 0x16, 0xf8, 0xbc, 0x7a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf8, 0xbc, 0xba, 0x01, 0xf8, 0xa9, 0xa2, 0x1a, 0x02, 0x31, 0x7b, 0x93, 0x6b, 0x0b, 0xa3, 0x03, 0x19, 0x7b, 0x73, 0x9b, 0xa3, 0x0b, 0x73, 0xa3, 0x9b, 0xdb, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0xd6, 0x60, 0xd5, 0xba, 0xee, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xaa, 0x75, 0xdd, 0x06, 0xf0, 0x67, 0x2b, 0x0b, 0x83, 0x9b, 0x2b, 0x1b, 0x7b, 0x73, 0x23, 0x03, 0x21, 0x0b, 0xa3, 0x2b, 0x9b, 0xdb, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0x21, 0x65, 0x72, 0x70, 0xe0, 0x6b, 0xdd, 0xe0, 0xe8, 0x3a, 0xb8, 0x86, 0x1f, 0x61, 0x06, 0x9e, 0x2c, 0x3c, 0x88, 0xfe, 0x0e, 0x9b, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x64, 0xe1, 0x41, 0x8c, 0x7c, 0xd8, 0xac, 0xe1, 0x47, 0x98, 0x81, 0x27, 0x0b, 0x0f, 0x22, 0x09, 0xc4, 0x66, 0x0d, 0x3f, 0xc2, 0x0c, 0x3c, 0x59, 0x78, 0x10, 0x6f, 0x21, 0x36, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xc9, 0xc2, 0x83, 0xa8, 0x14, 0xb1, 0x59, 0xc3, 0x8f, 0x30, 0x03, 0x4f, 0x16, 0x1e, 0xc4, 0xee, 0x88, 0xcd, 0x1a, 0x7e, 0x84, 0x19, 0x78, 0xb2, 0xf0, 0x20, 0xc2, 0x49, 0x6c, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0x93, 0x85, 0x07, 0x71, 0x60, 0x62, 0xb3, 0x86, 0x1f, 0x61, 0x06, 0x9e, 0x2c, 0x3c, 0x88, 0x96, 0x13, 0x9b, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x64, 0xe1, 0x41, 0x4c, 0xa1, 0xd8, 0xac, 0xe1, 0x47, 0x98, 0x81, 0x27, 0x0b, 0x0f, 0x22, 0x2f, 0xc5, 0x66, 0x0d, 0x3f, 0xc2, 0x0c, 0x3c, 0x59, 0x78, 0x10, 0x9f, 0x2a, 0x36, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xc9, 0xc2, 0x83, 0x28, 0x5e, 0xb1, 0x59, 0xc3, 0x8f, 0x30, 0x03, 0x4f, 0x16, 0x1e, 0xc4, 0x3a, 0x8b, 0xcd, 0x1a, 0x7e, 0x84, 0x19, 0x78, 0xb2, 0xf0, 0x20, 0x22, 0x5c, 0x6c, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0x93, 0x85, 0x07, 0x71, 0xf3, 0x62, 0xb3, 0x86, 0x1f, 0x61, 0x06, 0x9e, 0x2c, 0x3c, 0x88, 0x2e, 0x18, 0x9b, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x64, 0xe1, 0x41, 0x0c, 0xc6, 0xd8, 0xac, 0xe1, 0x47, 0x98, 0x81, 0x27, 0x0b, 0x0f, 0x22, 0x55, 0xc6, 0x66, 0x0d, 0x3f, 0xc2, 0x0c, 0x3c, 0x59, 0x78, 0x10, 0xcf, 0x33, 0x36, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xc9, 0xc2, 0x83, 0xa8, 0xa7, 0xb1, 0x59, 0xc3, 0x8f, 0x30, 0x03, 0x4f, 0x16, 0x1e, 0xc4, 0x86, 0x8d, 0xcd, 0x1a, 0x7e, 0x84, 0x19, 0x78, 0xb2, 0xf0, 0x20, 0x82, 0x6e, 0x6c, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0x93, 0x85, 0x07, 0x71, 0x86, 0x63, 0xb3, 0x86, 0x1f, 0x61, 0x06, 0x9e, 0x2c, 0x3c, 0x88, 0xc6, 0x1c, 0x9b, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x64, 0xe1, 0x41, 0xcc, 0xea, 0xd8, 0xac, 0xe1, 0x47, 0x98, 0x81, 0x27, 0x0b, 0x0f, 0x22, 0x7b, 0xc7, 0xa6, 0x59, 0xc0, 0xbb, 0x4b, 0x5b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x03, 0xef, 0x2e, 0x6d, 0x6d, 0x80, 0xe7, 0xae, 0xac, 0x6c, 0x6d, 0x6e, 0xc3, 0x5f, 0x34, 0x1b, 0x1c, 0x15, 0x51, 0x37, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x59, 0xbc, 0x83, 0x98, 0xeb, 0xb1, 0x59, 0xc3, 0xb3, 0x78, 0x07, 0x11, 0xee, 0x63, 0xb3, 0x86, 0x67, 0xf1, 0x0e, 0xe2, 0xfe, 0xc7, 0x66, 0x0d, 0xcf, 0xe2, 0x1d, 0x44, 0x53, 0x90, 0xcd, 0x1a, 0x9e, 0xc5, 0x3b, 0x88, 0x51, 0x21, 0x9b, 0x35, 0x3c, 0x8b, 0x77, 0x10, 0xf9, 0x43, 0x36, 0x6b, 0x78, 0x16, 0xef, 0x20, 0x5e, 0x8a, 0x6c, 0x5a, 0x0d, 0x56, 0xe1, 0xf3, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x80, 0xa7, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x65, 0x74, 0x66, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6c, 0x65, 0x61, 0x70, 0x2d, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0xa6, 0x3b, 0x9f, 0x36, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x47, 0x98, 0x81, 0x27, 0x0b, 0x0f, 0xa2, 0xcd, 0xc8, 0x66, 0x0d, 0x3f, 0xc2, 0x0c, 0x3c, 0x59, 0x78, 0x10, 0x93, 0x47, 0x36, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xc9, 0xc2, 0x83, 0xc8, 0x45, 0xb2, 0x59, 0xc3, 0x8f, 0x30, 0x03, 0x4f, 0x16, 0x1e, 0xc4, 0x77, 0x92, 0xcd, 0x1a, 0x7e, 0x84, 0x19, 0x78, 0xb2, 0xf0, 0x20, 0x0a, 0x96, 0x6c, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0x93, 0x85, 0x07, 0xb1, 0xc2, 0x64, 0xb3, 0x86, 0x1f, 0x61, 0x06, 0x9e, 0x2c, 0x3c, 0x88, 0xa8, 0x26, 0x9b, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x64, 0xe1, 0x41, 0xdc, 0x39, 0xd9, 0xac, 0xe1, 0x47, 0x98, 0x81, 0x27, 0x0b, 0x0f, 0xa2, 0xf3, 0xc9, 0x66, 0x0d, 0x3f, 0xc2, 0x0c, 0x3c, 0x59, 0x78, 0x10, 0xc3, 0x50, 0x36, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xc9, 0xc2, 0x83, 0x48, 0x8f, 0xb2, 0x59, 0xc3, 0x8f, 0x30, 0x03, 0x4f, 0x16, 0x1e, 0xc4, 0xc3, 0x94, 0xcd, 0x1a, 0x7e, 0x84, 0x19, 0x78, 0xb2, 0xf0, 0x20, 0x6a, 0xa8, 0x6c, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0x93, 0x85, 0x07, 0xb1, 0x55, 0x65, 0xb3, 0x86, 0x1f, 0x61, 0x06, 0x9e, 0x2c, 0x3c, 0x88, 0x40, 0x2b, 0x9b, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x64, 0xe1, 0x41, 0x9c, 0x5e, 0xd9, 0xac, 0xe1, 0x47, 0x98, 0x81, 0x27, 0x0b, 0x0f, 0xa2, 0x19, 0xcb, 0x66, 0x0d, 0x3f, 0xc2, 0x0c, 0x3c, 0x59, 0x78, 0x10, 0xf3, 0x59, 0x36, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xc9, 0xc2, 0x83, 0xc8, 0xd8, 0xb2, 0x59, 0xc3, 0x8f, 0x30, 0x03, 0x4f, 0x16, 0x1e, 0xc4, 0x0f, 0x97, 0xcd, 0x1a, 0x7e, 0x84, 0x19, 0x78, 0xb2, 0xf0, 0x20, 0xca, 0xba, 0x6c, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0x93, 0x85, 0x07, 0xb1, 0xe8, 0x65, 0xb3, 0x86, 0x1f, 0x61, 0x06, 0x9e, 0x2c, 0x3c, 0x88, 0xd8, 0x2f, 0x9b, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x64, 0xe1, 0x41, 0x5c, 0x83, 0xd9, 0xac, 0xe1, 0x47, 0x98, 0x81, 0x27, 0x0b, 0x0f, 0xa2, 0x3f, 0xcc, 0x66, 0x0d, 0x3f, 0xc2, 0x0c, 0x3c, 0x59, 0x78, 0x10, 0x23, 0x63, 0x36, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xc9, 0xc2, 0x83, 0x48, 0x22, 0xb3, 0xe9, 0x70, 0x8a, 0xad, 0xc1, 0x7a, 0xe3, 0xee, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xf5, 0xc6, 0xdd, 0x0d, 0xf0, 0xb5, 0xbd, 0xb9, 0xd1, 0xa1, 0xcd, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xa3, 0x22, 0xea, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0x3c, 0x8b, 0x77, 0x10, 0xdf, 0x65, 0x36, 0x6b, 0x78, 0x16, 0xef, 0x20, 0xda, 0xce, 0x6c, 0xd6, 0xf0, 0x2c, 0xde, 0x41, 0x0c, 0xa3, 0xd9, 0xac, 0xe1, 0x59, 0xbc, 0x83, 0x78, 0x50, 0xb3, 0x59, 0xc3, 0xb3, 0x78, 0x07, 0x71, 0xb3, 0x66, 0xb3, 0x86, 0x67, 0xf1, 0x0e, 0xa2, 0x85, 0xcd, 0x66, 0x0d, 0xcf, 0xe2, 0x1d, 0x44, 0x4e, 0x9b, 0xcd, 0x1a, 0x9e, 0xc5, 0x3b, 0x88, 0x33, 0x37, 0x9b, 0x35, 0x3c, 0x8b, 0x77, 0x10, 0xbb, 0x6f, 0x36, 0x6b, 0x78, 0x16, 0xef, 0x20, 0x0a, 0xe3, 0x6c, 0xd6, 0xf0, 0x2c, 0xde, 0x41, 0x6c, 0xcb, 0xd9, 0xac, 0xe1, 0x59, 0xbc, 0x83, 0x88, 0xa0, 0xb3, 0xe9, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x59, 0x00, 0x3f, 0x33, 0xb9, 0xb7, 0xb6, 0x96, 0x3a, 0xb7, 0x34, 0xbc, 0x96, 0xb6, 0x79, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xc2, 0xb2, 0x9f, 0x1a, 0x80, 0xbf, 0x3a, 0xb7, 0x34, 0x3c, 0x90, 0xb6, 0x34, 0x36, 0xb6, 0xb4, 0xb9, 0xb2, 0xb1, 0x37, 0x37, 0xb2, 0x39, 0x10, 0xba, 0x37, 0x10, 0x20, 0xb2, 0xb0, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0xad, 0xd7, 0x4e, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xc8, 0xd7, 0xba, 0x41, 0xd1, 0x69, 0xbc, 0xe1, 0x4f, 0xa0, 0x0d, 0x22, 0x38, 0xdb, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x02, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0x37, 0x78, 0xdb, 0x9f, 0xfb, 0x06, 0x91, 0xae, 0xed, 0xd4, 0x41, 0xb4, 0xd7, 0x2e, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x36, 0x6b, 0xf0, 0x08, 0x5d, 0x95, 0x0d, 0x52, 0x2f, 0x8a, 0x37, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x88, 0x17, 0x47, 0x9b, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x78, 0x71, 0xb4, 0x69, 0x00, 0x1e, 0xc6, 0xde, 0xe4, 0xc8, 0x40, 0xc4, 0xf2, 0x40, 0xea, 0xdc, 0xd2, 0xf0, 0x40, 0xd8, 0xd2, 0xdc, 0xca, 0x36, 0x28, 0xbb, 0x64, 0x37, 0x88, 0x17, 0x47, 0x9b, 0x0d, 0xde, 0x2c, 0x7c, 0x32, 0x1b, 0x7e, 0x51, 0xda, 0xe0, 0x59, 0x51, 0x2d, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xac, 0x10, 0x3f, 0x5f, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0xc1, 0xf1, 0xc9, 0xf5, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x9e, 0x58, 0x1e, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xa2, 0xe5, 0x0d, 0x8a, 0x4a, 0xf1, 0x83, 0x45, 0xe0, 0xe7, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xb2, 0xb0, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xc5, 0xbf, 0x07, 0x11, 0x8b, 0xfe, 0xd4, 0x06, 0xa5, 0xbd, 0xe5, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0xe6, 0x42, 0x7a, 0x10, 0x57, 0xe6, 0x4f, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x7b, 0x33, 0x33, 0x0f, 0x3f, 0xd4, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0xe2, 0xca, 0xfc, 0x69, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x85, 0xc5, 0xf2, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0xfd, 0xb2, 0x41, 0x03, 0x34, 0xa4, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0xbc, 0x1e, 0xcb, 0xf7, 0xa0, 0xf0, 0x32, 0x5e, 0x83, 0x25, 0xf5, 0x4b, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x07, 0x91, 0x33, 0x68, 0x73, 0x10, 0x9e, 0xaa, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0x72, 0x7e, 0x83, 0xd7, 0x63, 0xf9, 0x6e, 0xf0, 0x96, 0x97, 0xc9, 0x0e, 0x52, 0x5e, 0xab, 0xd6, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0x59, 0xc3, 0xc7, 0x51, 0x07, 0xaf, 0xc7, 0xf2, 0x3d, 0x28, 0xbc, 0x8c, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xd8, 0x56, 0xde, 0xa0, 0xa8, 0x14, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x2c, 0x04, 0x0f, 0xa2, 0x27, 0xfe, 0xa9, 0x83, 0xa6, 0xfb, 0x48, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0x9b, 0x86, 0xf4, 0x20, 0x92, 0xe6, 0x9f, 0xd6, 0xe0, 0x99, 0x2f, 0x93, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xf4, 0x16, 0xb7, 0x41, 0x34, 0xca, 0x3f, 0x1d, 0xc4, 0x61, 0xfc, 0xd3, 0x1a, 0x94, 0x6b, 0xc6, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x06, 0x85, 0x97, 0xf1, 0x06, 0xd1, 0x28, 0xff, 0xd4, 0x1a, 0xbc, 0x0c, 0xc9, 0xf7, 0xf0, 0xe0, 0x4d, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xbc, 0x0c, 0xc9, 0xf7, 0x20, 0x1a, 0xe5, 0x9f, 0x5a, 0x0d, 0xe2, 0xad, 0xd2, 0x66, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xde, 0x2a, 0x6d, 0x1a, 0x80, 0x0f, 0xb6, 0x34, 0xb7, 0xb2, 0x39, 0x10, 0xba, 0x37, 0x90, 0x3a, 0xb7, 0x34, 0x3c, 0x90, 0xb1, 0x37, 0x39, 0xb2, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0xe2, 0xad, 0xd2, 0x66, 0x83, 0x37, 0x0b, 0x9f, 0xcc, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x76, 0xf5, 0xa7, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x9e, 0x1d, 0xdd, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x2c, 0x8e, 0xde, 0xa0, 0xa8, 0x14, 0xdf, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x44, 0xaa, 0xde, 0xa0, 0x01, 0x1a, 0xd2, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xe9, 0x83, 0xf3, 0xec, 0xe8, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x71, 0xd4, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x8a, 0x7f, 0x37, 0x28, 0x2a, 0xc5, 0x0f, 0x4e, 0x4e, 0x7d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb2, 0xde, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x53, 0x4b, 0xdf, 0x41, 0xba, 0x6b, 0x55, 0x87, 0x53, 0xac, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0x2b, 0xc0, 0x37, 0x26, 0x97, 0x07, 0x47, 0xf7, 0x6e, 0x90, 0x7a, 0x51, 0xbc, 0xc1, 0x2a, 0x2c, 0xa7, 0x35, 0xbc, 0xad, 0x73, 0xf0, 0x52, 0xe4, 0xba, 0x0d, 0x56, 0x61, 0x39, 0x6d, 0x10, 0xab, 0xf9, 0x30, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0xde, 0xdc, 0x98, 0xbc, 0x41, 0xd9, 0x25, 0x3b, 0xe0, 0xcd, 0x8d, 0xc9, 0x1b, 0xbc, 0x59, 0xf8, 0x64, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0x3c, 0xb4, 0x39, 0x76, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf0, 0xd0, 0xe6, 0xd8, 0x06, 0xf8, 0xef, 0x56, 0xd8, 0xca, 0xdc, 0xce, 0xe8, 0xd0, 0x36, 0x3c, 0x3e, 0x32, 0xe0, 0xa1, 0xcd, 0xb1, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x1e, 0xa1, 0x5b, 0xc3, 0x9f, 0x4b, 0x03, 0x0f, 0xc7, 0x1e, 0x7e, 0xa8, 0xd9, 0x20, 0xca, 0x40, 0x9b, 0xd6, 0xf0, 0xe7, 0xd2, 0xc0, 0xcf, 0xb1, 0x87, 0x1f, 0x6a, 0x36, 0x58, 0xd1, 0xfb, 0xbe, 0x41, 0x4a, 0x2e, 0xe3, 0x06, 0xf1, 0x10, 0xe3, 0x74, 0x50, 0xf8, 0x03, 0x6f, 0x50, 0xda, 0x5b, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xed, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0xd9, 0xa0, 0x9c, 0xb3, 0x6d, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0x1c, 0x3c, 0x32, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x91, 0x89, 0xbb, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0xb6, 0xce, 0xc0, 0xc3, 0xb1, 0x75, 0x90, 0x9e, 0x34, 0xb8, 0x06, 0xe7, 0x76, 0xbe, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x64, 0xe2, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x73, 0x6c, 0x1d, 0x9c, 0xe4, 0xf9, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xbc, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0x12, 0x02, 0x53, 0x0f, 0x0e, 0x7d, 0x7d, 0x07, 0xc9, 0x05, 0xac, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0xff, 0xe6, 0x6c, 0x50, 0x0c, 0xed, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x42, 0xbb, 0x77, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0xcd, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x3a, 0xe0, 0x3b, 0x48, 0xc3, 0xcb, 0xad, 0x35, 0xbc, 0xcd, 0xba, 0xe1, 0xdf, 0x9c, 0x0d, 0x8e, 0x9f, 0x7c, 0x87, 0x07, 0x6f, 0xd6, 0xf0, 0x36, 0xeb, 0x86, 0x7f, 0x73, 0x36, 0x48, 0xf9, 0x7a, 0x3a, 0x3c, 0x78, 0xb3, 0x06, 0x45, 0xa7, 0xf1, 0x86, 0x2f, 0x7e, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0x41, 0xbc, 0x53, 0x40, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xaf, 0xf9, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x50, 0x0c, 0xed, 0x1e, 0x24, 0x17, 0xb0, 0xd6, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xb4, 0x7b, 0x0f, 0x22, 0xb8, 0xc9, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0x6c, 0x83, 0x48, 0x8a, 0x80, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xda, 0xbd, 0x07, 0x27, 0x6f, 0xbc, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0xce, 0x36, 0x88, 0x9a, 0x09, 0xa8, 0x83, 0x48, 0xf5, 0x80, 0x6a, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x71, 0xc3, 0x27, 0x36, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x72, 0x70, 0x70, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x24, 0x86, 0x5e, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xc1, 0x89, 0xb1, 0x6d, 0x70, 0xba, 0xc8, 0xd8, 0x20, 0x92, 0x22, 0xa0, 0x36, 0x38, 0x9c, 0xf3, 0x6d, 0x10, 0x35, 0x13, 0x50, 0x1b, 0x1e, 0x93, 0x39, 0x48, 0x0a, 0xbd, 0x6a, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x12, 0xa9, 0x7a, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x4f, 0x8c, 0x6d, 0x6e, 0x83, 0x78, 0xa7, 0x80, 0x3a, 0x48, 0x05, 0x1a, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0xeb, 0xf4, 0xe9, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xc4, 0x85, 0x40, 0x6d, 0x90, 0x72, 0x5a, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x83, 0xf4, 0x23, 0xc9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xb1, 0xad, 0x7c, 0x50, 0xf4, 0xec, 0xb7, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x88, 0x8d, 0xb8, 0xa7, 0x83, 0x94, 0xaf, 0xa7, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xe3, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x2b, 0x9c, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x9f, 0x07, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0x8b, 0xe5, 0x83, 0x34, 0xa1, 0xa8, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0xa2, 0x9a, 0x76, 0x0d, 0x0e, 0xad, 0x2d, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xa7, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xde, 0x9c, 0x5c, 0xdb, 0x06, 0xc7, 0x4f, 0xbe, 0x0d, 0x4a, 0x38, 0xda, 0x83, 0x34, 0xbc, 0xdc, 0x35, 0x7c, 0xee, 0x32, 0x38, 0x7d, 0x90, 0x2a, 0x14, 0x55, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x94, 0x48, 0xd5, 0x6b, 0xf8, 0x8b, 0x66, 0x83, 0x08, 0x75, 0x80, 0x3a, 0x3c, 0x33, 0xb9, 0xe1, 0x17, 0xa5, 0x0d, 0xd6, 0xe9, 0xd3, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x88, 0x0b, 0x81, 0xda, 0xa0, 0xa8, 0x14, 0xdf, 0x20, 0xde, 0x29, 0xa0, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc5, 0xb6, 0xf2, 0x06, 0x29, 0xa7, 0x55, 0x87, 0x87, 0x7e, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x51, 0x2b, 0x02, 0xb5, 0xc1, 0xe9, 0x22, 0x63, 0x83, 0x48, 0x8a, 0x80, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xdb, 0xca, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x73, 0x6c, 0x62, 0x07, 0x87, 0x5e, 0xbe, 0x36, 0x48, 0x0c, 0xbd, 0xda, 0xf0, 0x98, 0xcc, 0x41, 0xa9, 0x2e, 0xbb, 0x02, 0x9e, 0x18, 0xdb, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x19, 0x78, 0x62, 0x6c, 0x73, 0x03, 0xf0, 0x30, 0x07, 0xc7, 0x96, 0x46, 0x07, 0x42, 0xf7, 0x06, 0x32, 0x57, 0x27, 0xc6, 0x96, 0x36, 0x47, 0x37, 0xb7, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0xe1, 0xcb, 0xa5, 0x83, 0xa2, 0xcb, 0x76, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xc2, 0xee, 0x76, 0x83, 0xd8, 0x88, 0x7b, 0x3a, 0x3c, 0xf4, 0x73, 0x78, 0xf0, 0x66, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0x42, 0x1d, 0xa0, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x1e, 0xb4, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x16, 0x82, 0x1b, 0x9e, 0xd6, 0x59, 0xc3, 0x5f, 0x34, 0x1b, 0x94, 0x73, 0xb6, 0x87, 0xf7, 0x82, 0x5a, 0xc3, 0xe7, 0x2e, 0x83, 0xd3, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x3e, 0x0f, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xa7, 0xb7, 0xb8, 0x83, 0x18, 0xf6, 0x81, 0xaa, 0x15, 0xf0, 0xf2, 0xe0, 0xe8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xc0, 0xcb, 0x83, 0xa3, 0x1b, 0x80, 0x0f, 0x99, 0x1a, 0x1b, 0xb1, 0x34, 0x3a, 0x90, 0xbd, 0xb9, 0x30, 0x36, 0x3a, 0x10, 0xb8, 0xb0, 0xb9, 0xb9, 0xbe, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0xa2, 0x0c, 0xb4, 0xe9, 0x60, 0xb5, 0xa8, 0xf8, 0x86, 0xbf, 0x68, 0x36, 0xfc, 0x50, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xa1, 0xcd, 0xa1, 0x6d, 0x70, 0xba, 0xc8, 0xd8, 0xe0, 0x70, 0xce, 0xb7, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0xe0, 0x01, 0x80, 0x0d, 0x0e, 0x2b, 0x73, 0x1b, 0x1e, 0x93, 0x39, 0x48, 0xc3, 0xfe, 0x5d, 0x01, 0x4f, 0x0e, 0x0e, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x0c, 0x3c, 0x39, 0x38, 0xb8, 0x01, 0x78, 0x90, 0x4b, 0x83, 0x5b, 0x31, 0x4b, 0x63, 0x63, 0x2b, 0x93, 0x03, 0x11, 0x63, 0x7b, 0x1b, 0x5b, 0x9b, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x85, 0xc9, 0xef, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x88, 0x96, 0x0f, 0x0a, 0x5f, 0xdd, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xef, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xd0, 0x73, 0xf2, 0xe0, 0xd0, 0xcb, 0xb7, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x38, 0xe4, 0xb7, 0x1c, 0xde, 0x0b, 0x5a, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0x6c, 0x83, 0x43, 0x7e, 0xcb, 0xe1, 0x2d, 0xb4, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xe9, 0x2d, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0xf0, 0x20, 0x1a, 0x9e, 0xa0, 0x0e, 0x0e, 0xbd, 0x7c, 0x1b, 0xbe, 0x7e, 0xd9, 0xe0, 0x74, 0x24, 0xb2, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x1b, 0x9c, 0x8e, 0x44, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x27, 0x99, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x0d, 0xef, 0x05, 0x6d, 0x10, 0xb1, 0x4c, 0x50, 0x1d, 0x14, 0x4e, 0xb2, 0x1d, 0x9c, 0x8e, 0x44, 0x56, 0xc0, 0x43, 0x6b, 0x1b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x03, 0x0f, 0xad, 0x6d, 0x6c, 0x00, 0x3d, 0xa4, 0xa6, 0xa0, 0xa1, 0x96, 0x29, 0xa4, 0xa0, 0x16, 0x99, 0x1a, 0xdb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0xa9, 0xc8, 0x8c, 0x07, 0xd1, 0x0e, 0xda, 0xb4, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xa1, 0xb5, 0xb1, 0x6d, 0x90, 0xe6, 0x5d, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x8a, 0x7f, 0x37, 0x28, 0x2a, 0xc5, 0x0f, 0x52, 0x66, 0x1a, 0x37, 0x38, 0xb5, 0xf4, 0x6d, 0x10, 0x7f, 0x01, 0x50, 0xad, 0x80, 0x37, 0x27, 0xd6, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0xde, 0x9c, 0x58, 0xdb, 0x00, 0xbe, 0x73, 0x63, 0x72, 0x79, 0x70, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x69, 0x78, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xa4, 0xe4, 0x32, 0x1e, 0x14, 0x5d, 0xb6, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0xd8, 0x88, 0x7b, 0x3a, 0x88, 0xef, 0x13, 0xa8, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xbe, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xca, 0xf9, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x35, 0x9f, 0x0d, 0xe2, 0xfb, 0x04, 0xaa, 0xc3, 0x5b, 0x68, 0x07, 0xf1, 0x5d, 0xde, 0xb4, 0x41, 0x69, 0x6f, 0xb9, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xc0, 0xe7, 0x85, 0x07, 0xe5, 0x9c, 0xed, 0x1a, 0xfe, 0x5c, 0x1a, 0xf8, 0x3c, 0xf1, 0xa0, 0x9c, 0xb3, 0x6d, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0x9c, 0xb3, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0x79, 0xd0, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xb0, 0x58, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x08, 0xda, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0xe7, 0x89, 0xad, 0xe1, 0x6d, 0x9d, 0x81, 0xcf, 0x0b, 0xab, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x52, 0x30, 0x9d, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x49, 0x92, 0xaf, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0c, 0xc4, 0x06, 0xc9, 0x94, 0x4e, 0x07, 0xc9, 0x5c, 0xc3, 0x07, 0x47, 0x95, 0xb9, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xc2, 0xee, 0xf6, 0xe0, 0x6c, 0x36, 0xb3, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xcb, 0xc9, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x9e, 0x6f, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x7e, 0x0f, 0xdc, 0xa0, 0xa8, 0xa6, 0x5d, 0x83, 0x08, 0x29, 0x83, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0x3d, 0x48, 0xa6, 0x74, 0x5a, 0xc3, 0xe7, 0x2e, 0x83, 0xd3, 0x07, 0xb1, 0x4e, 0x06, 0x55, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0xcf, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x0d, 0xbf, 0x07, 0x6e, 0x50, 0x54, 0xd3, 0xae, 0x41, 0xbc, 0x92, 0x41, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x18, 0x56, 0x83, 0x5a, 0xc3, 0xe7, 0x2e, 0x83, 0xd3, 0x07, 0x91, 0x47, 0x06, 0x55, 0xb3, 0x06, 0x49, 0x63, 0xaf, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x49, 0x63, 0xaf, 0x0d, 0xe0, 0x37, 0x17, 0xc6, 0x36, 0x17, 0x26, 0x03, 0x03, 0x82, 0x16, 0x36, 0x87, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0x3c, 0xf1, 0xbe, 0x86, 0x3b, 0x6d, 0x06, 0xf0, 0xbc, 0x4b, 0xa3, 0x43, 0x03, 0x91, 0x03, 0x91, 0x7b, 0xab, 0x73, 0x23, 0x9b, 0xdb, 0xf0, 0xb9, 0xd2, 0x06, 0x31, 0x08, 0xe3, 0x74, 0x90, 0x96, 0xce, 0xb8, 0x41, 0xc1, 0x87, 0xb9, 0x41, 0xaa, 0xcb, 0xe4, 0x86, 0x4f, 0x6c, 0x36, 0x48, 0xc3, 0x43, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xa0, 0xc9, 0x43, 0xb1, 0x0d, 0xbf, 0x28, 0x6d, 0xf8, 0x5b, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x62, 0x20, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0x06, 0x87, 0x05, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x69, 0xc0, 0xbb, 0x86, 0x5f, 0x5c, 0x0e, 0x8a, 0x3b, 0xe6, 0xc3, 0x5b, 0x68, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7c, 0xdc, 0x35, 0xfc, 0xe2, 0xb2, 0xe1, 0xc1, 0x9b, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x83, 0x75, 0xce, 0x6e, 0x1d, 0xde, 0x42, 0x6b, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x63, 0x2b, 0x0b, 0x37, 0xfc, 0xa2, 0xb4, 0xe1, 0x6f, 0xa5, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x41, 0xc9, 0x0d, 0x12, 0xc9, 0x55, 0x37, 0xbc, 0xad, 0x73, 0x90, 0xba, 0x8c, 0xba, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0x87, 0x6d, 0xb8, 0x83, 0x28, 0xdb, 0x83, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0xba, 0x1e, 0xd4, 0xe1, 0xa1, 0x9f, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xac, 0xeb, 0x41, 0x1d, 0xde, 0x42, 0xab, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0x3e, 0x8c, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x0c, 0x3e, 0x8c, 0x6d, 0x00, 0xcf, 0x30, 0x32, 0x32, 0x10, 0xba, 0xbb, 0x37, 0x10, 0xb6, 0xb4, 0x39, 0xba, 0xb9, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0xe9, 0xd3, 0x1f, 0x14, 0x5d, 0xb6, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0xe5, 0x9c, 0xed, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0x36, 0x28, 0x28, 0x32, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x1e, 0xb4, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x22, 0x83, 0x0f, 0x6a, 0x83, 0x12, 0x3d, 0xff, 0x20, 0x99, 0x6b, 0x78, 0x0d, 0x9f, 0xbb, 0x0c, 0x4e, 0x1f, 0x14, 0x15, 0xfa, 0xad, 0xc0, 0xcb, 0xc9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xc1, 0xcb, 0xc9, 0x0d, 0xf0, 0xcb, 0xbd, 0xdd, 0xc9, 0xbd, 0xd5, 0xb9, 0x91, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xf3, 0x83, 0x72, 0xce, 0xb6, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x81, 0xd7, 0x0b, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x3e, 0x4e, 0x6e, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0xb8, 0xa4, 0xd6, 0x38, 0x74, 0x90, 0x98, 0xed, 0xd4, 0x1a, 0x2e, 0xa9, 0x35, 0xa4, 0x0e, 0x0e, 0x12, 0xb3, 0x9d, 0x5a, 0xc3, 0x25, 0xb5, 0x86, 0x54, 0xcd, 0x41, 0x62, 0xb6, 0x53, 0x6b, 0xb8, 0xa4, 0xd6, 0xb0, 0x57, 0x78, 0x90, 0x98, 0xed, 0x54, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0xbc, 0x9e, 0xb8, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0x3b, 0x11, 0x6a, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0xb8, 0xa4, 0xd6, 0x60, 0xbc, 0xe9, 0x1c, 0x24, 0x66, 0x3b, 0xb5, 0x86, 0x4b, 0x6a, 0x0d, 0x06, 0xef, 0xe4, 0x41, 0x62, 0xb6, 0x53, 0x6b, 0xb8, 0xa4, 0xd6, 0x60, 0x20, 0x52, 0x1f, 0x24, 0x66, 0x3b, 0xb5, 0x86, 0x4b, 0x6a, 0x0d, 0x02, 0x13, 0xfb, 0x20, 0x31, 0xdb, 0xa9, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x78, 0xbd, 0x71, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x77, 0x22, 0xd4, 0x1a, 0x1c, 0x5d, 0x07, 0xd7, 0x70, 0x49, 0xad, 0xc1, 0xa9, 0x1c, 0xf9, 0x20, 0x31, 0xdb, 0xa9, 0x35, 0x5c, 0x52, 0x6b, 0x70, 0xce, 0x4c, 0x3e, 0x48, 0xcc, 0x76, 0x6a, 0x0d, 0x97, 0xd4, 0x1a, 0x14, 0x6e, 0x49, 0x07, 0x89, 0xd9, 0x4e, 0xad, 0xe1, 0x92, 0x5a, 0x83, 0xb3, 0xec, 0xf1, 0x41, 0x62, 0xb6, 0x53, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf0, 0x7a, 0xe4, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xef, 0x44, 0xa8, 0x35, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x92, 0x5a, 0x83, 0x92, 0x53, 0xe9, 0x20, 0x31, 0xdb, 0xa9, 0x35, 0x5c, 0x52, 0x6b, 0x50, 0x2e, 0xf6, 0x1c, 0x24, 0x66, 0x3b, 0xb5, 0x86, 0x4b, 0x6a, 0x0d, 0x12, 0x4d, 0x6c, 0x0e, 0x12, 0xb3, 0x9d, 0x5a, 0xc3, 0x25, 0xb5, 0x06, 0x51, 0x70, 0xc2, 0x73, 0x90, 0x98, 0xed, 0x54, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x72, 0xce, 0x76, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x2e, 0xa9, 0x35, 0x0e, 0x1d, 0x44, 0x8f, 0xcc, 0x53, 0x6b, 0xb8, 0xa4, 0xd6, 0x90, 0x3a, 0x38, 0x88, 0x1e, 0x99, 0xa7, 0xd6, 0x70, 0x49, 0xad, 0x21, 0x55, 0x73, 0x10, 0x3d, 0x32, 0x4f, 0xad, 0xe1, 0x92, 0x5a, 0xc3, 0x5e, 0xe1, 0x41, 0xf4, 0xc8, 0x3c, 0xb5, 0x86, 0x4b, 0x6a, 0x0d, 0x7b, 0x85, 0x03, 0xaf, 0x27, 0xd6, 0x1a, 0x2e, 0xa9, 0x35, 0x0e, 0x1d, 0xc4, 0x8c, 0x27, 0x54, 0x6b, 0xb8, 0xa4, 0xd6, 0x90, 0x3a, 0x38, 0x88, 0x19, 0x4f, 0xa8, 0xd6, 0x70, 0x49, 0xad, 0x21, 0x55, 0x73, 0x10, 0x33, 0x9e, 0x50, 0xad, 0xe1, 0x92, 0x5a, 0x43, 0xaa, 0x66, 0xe0, 0xf5, 0xc6, 0x5a, 0xc3, 0x25, 0xb5, 0x86, 0xbd, 0xc2, 0x83, 0xe8, 0x06, 0x85, 0x6a, 0x0d, 0x97, 0xd4, 0x1a, 0x87, 0x0e, 0xa2, 0x1b, 0x14, 0xaa, 0x35, 0x5c, 0x52, 0x6b, 0x48, 0x1d, 0x1c, 0x44, 0x37, 0x28, 0x54, 0x6b, 0xb8, 0xa4, 0xd6, 0x90, 0x3a, 0x18, 0x78, 0x3d, 0xb2, 0xd6, 0x70, 0x49, 0xad, 0x21, 0x55, 0x73, 0x10, 0x89, 0xa3, 0x50, 0xad, 0xe1, 0x92, 0x5a, 0xc3, 0x5e, 0xe1, 0x41, 0x24, 0x8e, 0x42, 0xb5, 0x86, 0x4b, 0x6a, 0x8d, 0x43, 0x07, 0x91, 0x38, 0x0a, 0x55, 0x2b, 0xf0, 0x64, 0xf2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xf0, 0x64, 0x72, 0x03, 0x78, 0x91, 0xbd, 0xd5, 0x89, 0xb1, 0x95, 0xc9, 0xbd, 0xd5, 0xb9, 0x91, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xf1, 0x83, 0x72, 0xce, 0xb6, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x81, 0x97, 0x93, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xc7, 0xe4, 0x0e, 0x12, 0x29, 0x9d, 0x3a, 0x9c, 0x62, 0x2d, 0xf0, 0x63, 0xf2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xf0, 0x63, 0x72, 0x03, 0x78, 0x8d, 0xbd, 0xb1, 0xd5, 0xb5, 0xb9, 0xc9, 0xbd, 0xd5, 0xb9, 0x91, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x08, 0x40, 0x85, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf8, 0xbc, 0x70, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x77, 0x22, 0xd4, 0x1a, 0x1c, 0x5d, 0x07, 0x37, 0x88, 0xb5, 0x35, 0xa7, 0x35, 0x5c, 0x52, 0x6b, 0x10, 0x98, 0xd8, 0x07, 0x29, 0x98, 0x4e, 0xad, 0xe1, 0x92, 0x5a, 0x83, 0xc2, 0x2d, 0xe9, 0x20, 0x05, 0xd3, 0xa9, 0x35, 0x5c, 0x52, 0x6b, 0x50, 0x2e, 0xf6, 0x1c, 0xa4, 0x60, 0x3a, 0x55, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x9f, 0x27, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xf8, 0x4e, 0x84, 0x5a, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x2e, 0xa9, 0x35, 0x18, 0x6f, 0x3a, 0x07, 0x29, 0x98, 0x4e, 0xad, 0xe1, 0x92, 0x5a, 0x83, 0xb3, 0xec, 0xf1, 0x41, 0x0a, 0xa6, 0x53, 0x6b, 0xb8, 0xa4, 0xd6, 0x20, 0xd1, 0xc4, 0xe6, 0x20, 0x05, 0xd3, 0xa9, 0x35, 0x5c, 0x52, 0x6b, 0x48, 0x1d, 0x1c, 0xa4, 0x60, 0x3a, 0x55, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x9f, 0x37, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xf8, 0x4e, 0x84, 0x5a, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x2e, 0xa9, 0x35, 0x38, 0x95, 0x23, 0x1f, 0xa4, 0x60, 0x3a, 0xb5, 0x86, 0x4b, 0x6a, 0x0d, 0xa2, 0xe0, 0x84, 0xe7, 0x20, 0x05, 0xd3, 0xa9, 0x35, 0x5c, 0x52, 0x6b, 0x48, 0xd5, 0x1c, 0xa4, 0x60, 0x3a, 0xb5, 0x86, 0x4b, 0x6a, 0x0d, 0x06, 0xef, 0xe4, 0x41, 0x0a, 0xa6, 0x53, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf0, 0x79, 0xe4, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xef, 0x44, 0xa8, 0x35, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x92, 0x5a, 0x83, 0x92, 0x53, 0xe9, 0x20, 0x05, 0xd3, 0xa9, 0x35, 0x5c, 0x52, 0x6b, 0xd8, 0x2b, 0x3c, 0x48, 0xc1, 0x74, 0x6a, 0x0d, 0x97, 0xd4, 0x1a, 0x0c, 0x44, 0xea, 0x83, 0x14, 0x4c, 0xa7, 0xd6, 0x70, 0x49, 0xad, 0xc1, 0x39, 0x33, 0xf9, 0x20, 0x05, 0xd3, 0xa9, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xe5, 0x9c, 0xed, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0x5c, 0x52, 0x6b, 0x1c, 0x3a, 0x88, 0x90, 0x32, 0xa8, 0xd6, 0x70, 0x49, 0xad, 0x61, 0xaf, 0xf0, 0x20, 0x5e, 0xc9, 0xa0, 0x5a, 0xc3, 0x25, 0xb5, 0x86, 0x54, 0xcd, 0xc0, 0xe7, 0x8d, 0xb5, 0x86, 0x4b, 0x6a, 0x0d, 0xa9, 0x83, 0x81, 0xcf, 0x23, 0x6b, 0x0d, 0x97, 0xd4, 0x1a, 0x52, 0x07, 0x07, 0x11, 0x52, 0x06, 0xd5, 0x1a, 0x2e, 0xa9, 0x35, 0x0e, 0x1d, 0xc4, 0x2b, 0x19, 0x54, 0x6b, 0xb8, 0xa4, 0xd6, 0xb0, 0x57, 0x78, 0x10, 0x5f, 0xc0, 0x50, 0xad, 0xe1, 0x92, 0x5a, 0x43, 0xaa, 0xe6, 0x20, 0x02, 0x82, 0xa1, 0x5a, 0xc3, 0x25, 0xb5, 0x86, 0x54, 0xcd, 0x41, 0x84, 0x94, 0x41, 0xb5, 0x86, 0x4b, 0x6a, 0x0d, 0xa9, 0x83, 0x83, 0x78, 0x25, 0x83, 0x6a, 0x0d, 0x97, 0xd4, 0x1a, 0x87, 0x0e, 0xe2, 0x0b, 0x18, 0xaa, 0x35, 0x5c, 0x52, 0x6b, 0xd8, 0x2b, 0x3c, 0x88, 0x80, 0x60, 0xa8, 0xd6, 0x70, 0x49, 0xad, 0x61, 0xaf, 0xf0, 0x20, 0x42, 0xca, 0xa0, 0x5a, 0xc3, 0x25, 0xb5, 0x86, 0x54, 0xcd, 0x41, 0xbc, 0x92, 0x41, 0xb5, 0x86, 0x4b, 0x6a, 0x0d, 0xa9, 0x83, 0x83, 0xf8, 0x02, 0x86, 0x6a, 0x0d, 0x97, 0xd4, 0x1a, 0x87, 0x0e, 0x22, 0x20, 0x18, 0xaa, 0x66, 0x81, 0x8f, 0x93, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x8f, 0x93, 0x1b, 0xc0, 0x2f, 0xae, 0x2e, 0x4c, 0x8e, 0xae, 0x4c, 0x4e, 0xee, 0xad, 0xce, 0x8d, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x7c, 0xc3, 0xe7, 0x4a, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x43, 0xcd, 0x86, 0x1f, 0x6a, 0x0e, 0x56, 0xbe, 0xbe, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0xbc, 0x9e, 0xb8, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x31, 0x10, 0x1b, 0xc4, 0xcc, 0x22, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc9, 0x47, 0xb1, 0x0d, 0xce, 0x0b, 0x34, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc8, 0xe0, 0x83, 0xda, 0x20, 0x2e, 0x15, 0xa1, 0x0e, 0x62, 0x90, 0x11, 0xaa, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x5e, 0x6f, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x87, 0x18, 0x88, 0x0d, 0xa2, 0x7b, 0x11, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xe4, 0xa3, 0xd8, 0x06, 0x29, 0xa7, 0x55, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc8, 0xe0, 0x83, 0x5a, 0xc3, 0xdb, 0x3a, 0x07, 0x31, 0xe3, 0x09, 0xb5, 0x41, 0x5c, 0x2a, 0x42, 0x55, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0xaf, 0x47, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0c, 0xc4, 0x06, 0x71, 0xc8, 0x08, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xf2, 0x51, 0x6c, 0x83, 0xd3, 0x2a, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x32, 0xf8, 0xa0, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0x74, 0x83, 0x42, 0x6d, 0x10, 0x2d, 0xd3, 0x50, 0xd5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xc0, 0xeb, 0x85, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x10, 0x03, 0xb1, 0x41, 0x5c, 0x2a, 0x42, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x7c, 0x14, 0xdb, 0x20, 0x55, 0x17, 0x77, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x19, 0x7c, 0x50, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x12, 0x47, 0xa1, 0x36, 0x88, 0x5c, 0x6b, 0xa8, 0x6a, 0x83, 0xa3, 0xeb, 0xe0, 0x06, 0x71, 0x20, 0xf3, 0xb4, 0x41, 0xb4, 0x4c, 0x43, 0x6d, 0x10, 0xb9, 0xd6, 0x50, 0x1b, 0xc4, 0x91, 0x36, 0x54, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x3c, 0xde, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x22, 0x2e, 0x04, 0x6a, 0x83, 0xc3, 0x02, 0xdb, 0x06, 0x87, 0x57, 0xb9, 0x83, 0x44, 0x4a, 0xa7, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x81, 0x7f, 0xbb, 0x37, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0xca, 0x39, 0xdb, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0a, 0x9e, 0xcd, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x78, 0x77, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xc4, 0x36, 0x38, 0xd4, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0x93, 0xc9, 0x6d, 0x10, 0xa5, 0xe0, 0x50, 0xad, 0x41, 0xc1, 0xb3, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x1e, 0x24, 0x27, 0x59, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x6d, 0xe5, 0x0d, 0x0e, 0x0b, 0x6c, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0x7c, 0x18, 0xdb, 0x06, 0x51, 0x0a, 0x0e, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0xfe, 0xed, 0xae, 0x0e, 0xa7, 0xd8, 0x02, 0x1e, 0x9c, 0xd8, 0xba, 0xe1, 0xf1, 0x91, 0x01, 0x0f, 0x4e, 0x6c, 0xdd, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xf0, 0x08, 0xdd, 0x06, 0x51, 0x06, 0xda, 0x74, 0x50, 0x80, 0x6f, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xa8, 0x15, 0x81, 0xda, 0xe0, 0x74, 0x91, 0xb1, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x8a, 0x7f, 0x37, 0x28, 0x2a, 0xc5, 0x0f, 0xd2, 0x93, 0x06, 0x37, 0x38, 0x9c, 0xf3, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xe2, 0xdf, 0x0d, 0x8a, 0x4a, 0xf1, 0x83, 0x93, 0x3c, 0xdf, 0x41, 0x01, 0xc8, 0x7f, 0x38, 0xc5, 0x5a, 0xc0, 0x43, 0x6b, 0x63, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x03, 0x0f, 0xad, 0x8d, 0xed, 0x20, 0x4a, 0x13, 0xa0, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x48, 0x45, 0x66, 0x5c, 0xc3, 0x9f, 0x4b, 0x03, 0xbf, 0xc6, 0x1e, 0x7e, 0xa8, 0xd9, 0x20, 0xe2, 0x41, 0x9b, 0xd6, 0xf0, 0xe7, 0xd2, 0xc0, 0xd3, 0xb1, 0x87, 0x1f, 0x6a, 0xda, 0xa0, 0x94, 0x10, 0x5f, 0xc3, 0x25, 0xb5, 0x41, 0x51, 0x23, 0xbe, 0x06, 0x49, 0xd4, 0x55, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0xc4, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xd7, 0xd8, 0x3a, 0x48, 0x99, 0x69, 0x5c, 0x83, 0x03, 0x4d, 0xdf, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x32, 0x71, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x45, 0xa5, 0xf8, 0x1a, 0xde, 0xd6, 0x19, 0x78, 0x3a, 0xb6, 0x0e, 0x4e, 0x4e, 0x7d, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x2e, 0x1e, 0xa4, 0x40, 0xa7, 0x6e, 0x70, 0x1c, 0x9b, 0xd8, 0x20, 0x89, 0xba, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x46, 0x71, 0x83, 0xb8, 0x88, 0x87, 0x3a, 0xbc, 0x85, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x9e, 0x8c, 0xdd, 0x20, 0x2e, 0xe2, 0xa1, 0x0e, 0x52, 0x66, 0x1a, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x8f, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x48, 0x9e, 0x8c, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0xf0, 0x5e, 0xd0, 0x41, 0xfc, 0xcb, 0x43, 0x6d, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x80, 0x77, 0x83, 0x55, 0x0f, 0x72, 0x07, 0x27, 0xa7, 0xbe, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x06, 0x62, 0x83, 0x34, 0xef, 0xaa, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x62, 0x48, 0xd6, 0x06, 0x45, 0xa5, 0xf8, 0x86, 0xf7, 0x82, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0xa1, 0xb6, 0xda, 0xa0, 0xe8, 0x34, 0xde, 0x20, 0x79, 0x32, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0xe8, 0x60, 0xe9, 0x31, 0xdd, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0x37, 0x58, 0xf5, 0x20, 0x77, 0x70, 0xe8, 0xe5, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x62, 0x20, 0x36, 0x48, 0xf3, 0xae, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x86, 0x64, 0x6d, 0x50, 0x54, 0x8a, 0x6f, 0x78, 0x2f, 0x68, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x1e, 0xce, 0x55, 0x2b, 0xe0, 0xa1, 0xcd, 0xa1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x81, 0x87, 0x36, 0x87, 0x36, 0xc0, 0x37, 0x37, 0x26, 0x97, 0x07, 0x47, 0xb7, 0xe1, 0xf1, 0x91, 0x01, 0x0f, 0x6d, 0x0e, 0xdd, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xf0, 0x08, 0xdd, 0x06, 0x51, 0x06, 0xda, 0x74, 0x10, 0xf5, 0x0c, 0x50, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0xda, 0x1c, 0xdb, 0x06, 0xa7, 0x8b, 0x8c, 0x0d, 0xe2, 0x17, 0x1d, 0x6a, 0x83, 0xc3, 0x39, 0xdf, 0x06, 0xb1, 0x9f, 0x0e, 0xb5, 0x41, 0x31, 0xb4, 0xbb, 0xc1, 0xf1, 0x93, 0x6f, 0x83, 0x94, 0xaf, 0xa7, 0x83, 0x52, 0x5d, 0xf6, 0x70, 0x8a, 0x2d, 0xe0, 0xc1, 0x89, 0xb1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x81, 0x07, 0x27, 0xc6, 0x76, 0x10, 0xa5, 0x09, 0x50, 0x1b, 0x1e, 0x1f, 0x19, 0xf0, 0xe0, 0xc4, 0xd8, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x8f, 0xd0, 0x6d, 0x10, 0x6d, 0x0b, 0x50, 0x1b, 0x44, 0x19, 0x68, 0xd3, 0x06, 0x91, 0xc5, 0x00, 0x75, 0x50, 0x80, 0x6f, 0x6f, 0x50, 0x4a, 0x88, 0x6f, 0x10, 0xa1, 0x0f, 0x50, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xa3, 0x07, 0xa9, 0xa7, 0xb1, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0x77, 0x83, 0x72, 0x5d, 0x76, 0x83, 0x78, 0xe9, 0x80, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0x77, 0xc3, 0xd3, 0x3b, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x42, 0xbb, 0x77, 0x83, 0x94, 0x27, 0xcf, 0x5a, 0xc3, 0xdb, 0xac, 0x1b, 0xfe, 0xcd, 0xd9, 0xf0, 0xf4, 0xce, 0xe1, 0xc1, 0x9b, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x67, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x0d, 0xca, 0x75, 0xd9, 0x83, 0x03, 0x3c, 0xdd, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x2f, 0x27, 0xd7, 0xa0, 0x94, 0x10, 0xdf, 0x78, 0xbe, 0xe1, 0xdd, 0x9e, 0x0d, 0x42, 0x81, 0xf5, 0x20, 0xa2, 0x24, 0xa2, 0x36, 0x28, 0x25, 0xc4, 0x37, 0x9e, 0x6f, 0xf8, 0x38, 0xea, 0x20, 0x56, 0x27, 0xa2, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x97, 0x37, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x0d, 0xca, 0x75, 0xd9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x6e, 0x70, 0x50, 0xa6, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0x39, 0x48, 0x08, 0xb1, 0xad, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0xe2, 0xe5, 0xb3, 0x69, 0x0d, 0x9f, 0xbb, 0x0c, 0xae, 0x1e, 0x1e, 0x93, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xaf, 0x87, 0xc7, 0x64, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0xe0, 0x40, 0xd3, 0xb7, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x87, 0x9a, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xdf, 0x28, 0x6e, 0x90, 0xc2, 0x1c, 0x75, 0x90, 0x10, 0x62, 0xbb, 0xc1, 0xa9, 0xa5, 0x6f, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x7a, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0xe0, 0x70, 0xce, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0x37, 0x88, 0x5d, 0x09, 0xa8, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xb1, 0xad, 0xbc, 0x41, 0x51, 0x29, 0xbe, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x2c, 0x96, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x11, 0x17, 0x02, 0xb5, 0x41, 0x51, 0x29, 0xbe, 0xc1, 0xa9, 0xb9, 0xed, 0x20, 0x29, 0x80, 0xb5, 0x6a, 0xc3, 0x27, 0x36, 0x1b, 0x44, 0xea, 0x6b, 0xd3, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x01, 0x1e, 0xb4, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x87, 0x9a, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xdf, 0x28, 0x6e, 0x90, 0xe6, 0x5d, 0x75, 0xf8, 0x45, 0x68, 0x83, 0x62, 0xa4, 0x76, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0xdd, 0x15, 0xd4, 0x06, 0xa7, 0x8b, 0x8c, 0x0d, 0x22, 0x29, 0x02, 0x6a, 0x83, 0xc4, 0xd0, 0xab, 0x35, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x48, 0xf3, 0xae, 0x3a, 0x3c, 0x26, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x41, 0xd4, 0x4c, 0x40, 0x1d, 0x9c, 0x99, 0xdb, 0x0e, 0x0e, 0xca, 0x74, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x10, 0x04, 0x68, 0x07, 0xa7, 0x23, 0x91, 0x35, 0x08, 0xf0, 0xa0, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x88, 0x81, 0xd8, 0xa0, 0x18, 0xa9, 0x3d, 0x38, 0xf4, 0xf2, 0xad, 0x41, 0x12, 0x75, 0xd5, 0x86, 0x8f, 0xa3, 0x0e, 0xd2, 0xbc, 0xab, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xe0, 0x40, 0xd3, 0xb7, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x70, 0x6a, 0xe9, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x06, 0xbc, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3c, 0xb5, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x6b, 0x3e, 0x07, 0x49, 0x01, 0xac, 0x07, 0x07, 0x78, 0xba, 0x0e, 0x0a, 0xab, 0xee, 0x0e, 0x92, 0x1c, 0x58, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x91, 0x89, 0xbb, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x2a, 0xc5, 0x0f, 0x4a, 0x75, 0xd9, 0x83, 0x93, 0x53, 0xdf, 0xe1, 0x14, 0x5b, 0xc0, 0x9b, 0x63, 0x13, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x41, 0x84, 0x3a, 0x40, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x50, 0xce, 0xd9, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0x83, 0x82, 0x22, 0x73, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x08, 0xda, 0xd6, 0xf0, 0x17, 0xcd, 0x06, 0xe5, 0x9c, 0xed, 0x41, 0x89, 0x9e, 0x7f, 0x70, 0x38, 0xb8, 0x3b, 0x9c, 0x62, 0x0b, 0x78, 0x73, 0x72, 0xed, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xe0, 0xcd, 0xc9, 0xb5, 0x0d, 0xe0, 0x35, 0x37, 0x26, 0x97, 0x07, 0x47, 0x27, 0xf5, 0xd4, 0x94, 0x86, 0xb7, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x4a, 0x2e, 0xe3, 0x06, 0x85, 0x97, 0xed, 0x06, 0x2b, 0x7a, 0xdf, 0xdb, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0x23, 0xac, 0x1b, 0xc4, 0x51, 0x17, 0xd4, 0x06, 0x11, 0x6a, 0x01, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x71, 0xb6, 0x41, 0x31, 0xb4, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xb4, 0x7b, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0xc1, 0xf1, 0x93, 0xef, 0xe0, 0xe8, 0x2a, 0x57, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xed, 0x0d, 0x0a, 0xc1, 0xd4, 0x83, 0x08, 0x75, 0x80, 0x3a, 0x88, 0xef, 0xf2, 0xa6, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x0e, 0xad, 0x2d, 0x6b, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x44, 0xa8, 0x03, 0xd4, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf7, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x37, 0x27, 0xd6, 0xb6, 0xc1, 0xf1, 0x93, 0xef, 0xf0, 0x16, 0xda, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x86, 0xa7, 0x77, 0x0e, 0x8a, 0xa1, 0xdd, 0x0d, 0x62, 0x79, 0x05, 0x6a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0xdb, 0xf0, 0x7b, 0xe0, 0x1a, 0x1c, 0x5a, 0x5b, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0x4f, 0x0f, 0x8e, 0xb9, 0x83, 0x07, 0x11, 0xf7, 0x02, 0xb5, 0x86, 0xcf, 0x83, 0x0e, 0x0e, 0xf9, 0x2d, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x8e, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xc8, 0xf8, 0x89, 0xda, 0xe0, 0xf8, 0xc9, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x2a, 0xe7, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0x0e, 0xd2, 0xf0, 0x72, 0x0f, 0xd2, 0x84, 0xa2, 0xda, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x28, 0xe7, 0x6c, 0x37, 0x7c, 0x90, 0xb3, 0x41, 0x24, 0x01, 0x45, 0x6d, 0x90, 0x4c, 0xe9, 0xb4, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xca, 0xf9, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x35, 0x9f, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x1e, 0x24, 0x27, 0x59, 0x75, 0x90, 0x48, 0xe9, 0xb4, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xb8, 0xbe, 0xe1, 0x2f, 0x9a, 0x0d, 0xca, 0x39, 0xdb, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x54, 0xce, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0xc2, 0xee, 0xf6, 0x20, 0x89, 0x2e, 0xf7, 0x20, 0x4d, 0x28, 0x6a, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x7b, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0x9c, 0xb3, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0x20, 0x05, 0xd3, 0x69, 0x83, 0x82, 0x22, 0x73, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x44, 0x95, 0xa7, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xd3, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x88, 0x81, 0xd8, 0x20, 0xd6, 0xd6, 0x9c, 0xd6, 0x70, 0x49, 0xad, 0x71, 0xe8, 0x20, 0x51, 0xe5, 0xa9, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf4, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x29, 0x98, 0x4e, 0x07, 0x51, 0xc8, 0xe6, 0xb4, 0x06, 0x89, 0x2a, 0x4f, 0x1b, 0x2e, 0xa9, 0x35, 0x9e, 0x1f, 0x24, 0xaa, 0x3c, 0x55, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xa4, 0x60, 0x3a, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xc8, 0xf8, 0x89, 0xda, 0xe0, 0xf8, 0xc9, 0x77, 0x70, 0xfc, 0x71, 0x39, 0x7c, 0x1e, 0x78, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x6a, 0x10, 0xe3, 0xe5, 0x38, 0x1b, 0x94, 0x5d, 0xb2, 0x1b, 0xc4, 0x8e, 0x54, 0xce, 0x06, 0x6f, 0x16, 0x3e, 0x99, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0xde, 0x0c, 0xf2, 0xb9, 0xc1, 0x2a, 0x2c, 0xa7, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x74, 0x8f, 0x10, 0xb5, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x72, 0x23, 0xec, 0x06, 0x6d, 0xb8, 0x8f, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x6d, 0x73, 0xe7, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0x3f, 0x9c, 0x5c, 0x19, 0x5c, 0x8b, 0x5b, 0x5d, 0xdb, 0x1a, 0x7e, 0x71, 0x39, 0x48, 0x86, 0x85, 0x3d, 0x28, 0x94, 0xb6, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xf1, 0xbb, 0x41, 0xb1, 0xb4, 0x7d, 0x90, 0xae, 0x1d, 0xbb, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xd1, 0x2a, 0x42, 0xd4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xda, 0xe6, 0xce, 0xd6, 0xf0, 0xe0, 0xcd, 0xe1, 0xc1, 0x9b, 0x83, 0x42, 0x69, 0x7b, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x74, 0x09, 0xca, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xc9, 0x5d, 0x51, 0x1b, 0xc4, 0x94, 0x57, 0xd4, 0x06, 0x91, 0xed, 0x15, 0x75, 0x90, 0xae, 0x1d, 0xbb, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x31, 0xc3, 0x73, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf8, 0xb8, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa2, 0x52, 0xfc, 0x20, 0xed, 0x34, 0x76, 0x83, 0xd4, 0x4e, 0xca, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x28, 0xb1, 0xb6, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x28, 0x96, 0xb6, 0x0f, 0xd2, 0x4e, 0x63, 0x37, 0x7c, 0x85, 0xb3, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x1b, 0xc5, 0x83, 0x58, 0xe8, 0x8a, 0x5a, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x84, 0x50, 0xca, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x24, 0x77, 0x45, 0xad, 0x41, 0x0a, 0x74, 0xea, 0x41, 0x6a, 0x27, 0xe5, 0x41, 0xfc, 0x83, 0x45, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x70, 0x06, 0xf3, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x06, 0xbc, 0x1b, 0xc4, 0xad, 0x58, 0xd4, 0x41, 0x43, 0x6b, 0xc9, 0x1b, 0x44, 0x8f, 0x58, 0x54, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x94, 0x58, 0xdb, 0x07, 0x91, 0x43, 0x16, 0xd5, 0x06, 0x45, 0xa7, 0xf1, 0x86, 0x3f, 0x81, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x01, 0xef, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xa8, 0x14, 0x3f, 0x28, 0x94, 0xb6, 0x0f, 0x1a, 0x5a, 0x4b, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x91, 0xdc, 0x15, 0xb5, 0x41, 0x6c, 0x9d, 0x45, 0x1d, 0x44, 0xb5, 0x57, 0xd4, 0x0a, 0xf0, 0xc3, 0xc9, 0x95, 0xc1, 0xb5, 0xdc, 0xa5, 0x91, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x07, 0xc9, 0x8d, 0xb0, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xb2, 0xb5, 0xa2, 0x36, 0x3c, 0xad, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x38, 0x0b, 0x99, 0x1e, 0x1e, 0xdc, 0x69, 0x35, 0x88, 0x89, 0xad, 0xa8, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x92, 0x1b, 0x61, 0x0f, 0x1a, 0xf8, 0xf0, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0xc9, 0x8d, 0xb0, 0x1b, 0x14, 0x86, 0xaa, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x07, 0x31, 0x8d, 0xb4, 0xb4, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x59, 0x1c, 0xbd, 0x41, 0x51, 0x29, 0xbe, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0x52, 0x33, 0x61, 0x0f, 0x4a, 0x3f, 0xe3, 0x35, 0x38, 0x35, 0xb7, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xa4, 0x52, 0xd8, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0x4e, 0xcd, 0x6d, 0x07, 0x4d, 0x50, 0x12, 0x76, 0x38, 0xc5, 0x16, 0xc0, 0xcf, 0x2c, 0x8d, 0x8d, 0xad, 0x65, 0xae, 0xec, 0xac, 0xad, 0xcc, 0x8d, 0xde, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x7c, 0x62, 0x75, 0x66, 0x66, 0x65, 0xf2, 0x41, 0x84, 0x3a, 0x40, 0xad, 0xe1, 0xcf, 0xa5, 0x81, 0x46, 0x83, 0x87, 0x1f, 0x6a, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x97, 0x46, 0xe7, 0x1e, 0x94, 0x59, 0xba, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x85, 0x1d, 0x9a, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xe4, 0xde, 0xee, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0x70, 0x72, 0x3b, 0x28, 0xb3, 0x74, 0xd7, 0xf0, 0xe7, 0xd2, 0x00, 0xef, 0xd8, 0x1b, 0x5b, 0x5d, 0x9b, 0xdb, 0x7c, 0x50, 0x66, 0xe9, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0x7c, 0xe6, 0xca, 0xce, 0x5a, 0xd8, 0xca, 0xdc, 0xce, 0xe8, 0xd0, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0xd2, 0xa1, 0xc9, 0x95, 0x85, 0x91, 0xcd, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xfe, 0x5c, 0x1a, 0xc0, 0x83, 0x2e, 0xad, 0xad, 0xac, 0x65, 0xec, 0x6d, 0x8e, 0x3e, 0x28, 0xb3, 0x74, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x8d, 0xcf, 0x47, 0x6d, 0xf8, 0x77, 0x7e, 0x01, 0x7c, 0xc2, 0xe4, 0xce, 0xde, 0xdc, 0x5a, 0xe8, 0xf2, 0xe0, 0xca, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0xbf, 0x9a, 0xf7, 0xe0, 0xd8, 0x52, 0xda, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0xfc, 0x70, 0x75, 0x74, 0x2d, 0x77, 0x6f, 0x72, 0xe4, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xe4, 0xde, 0xc4, 0x83, 0x72, 0xce, 0x76, 0x83, 0x72, 0xe1, 0xfc, 0xa0, 0xf0, 0x07, 0xde, 0xa0, 0xe8, 0x34, 0xde, 0xe0, 0x44, 0xd0, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x58, 0x08, 0x6e, 0x50, 0x46, 0x9f, 0xaf, 0xe1, 0x6d, 0x9d, 0x01, 0x4f, 0xee, 0x4d, 0xac, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0xae, 0xcb, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x6f, 0x71, 0x1b, 0x14, 0xc4, 0xe7, 0x07, 0x71, 0x7e, 0x18, 0xd5, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x1b, 0xbe, 0x7e, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0x31, 0x5e, 0x54, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x9e, 0xdc, 0x9b, 0xb8, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xca, 0xf9, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xc9, 0xbd, 0xdd, 0x6d, 0x10, 0x7d, 0x8a, 0x51, 0x6d, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x01, 0x9f, 0xec, 0xad, 0x25, 0xdd, 0xa0, 0x84, 0x8e, 0xdd, 0xf0, 0xc1, 0xea, 0x41, 0x98, 0x8e, 0xad, 0xe1, 0x57, 0xb2, 0x35, 0x28, 0x26, 0x31, 0x37, 0x38, 0x6a, 0x9d, 0x1c, 0x34, 0xd6, 0x9c, 0xb5, 0x86, 0x47, 0x58, 0xd7, 0xa0, 0x98, 0xc4, 0x5c, 0x43, 0x06, 0xfc, 0xa0, 0x55, 0x9b, 0xd0, 0x83, 0xc6, 0x9a, 0xb3, 0xd6, 0xf0, 0x6f, 0xce, 0x86, 0x07, 0x6f, 0x36, 0xbc, 0xad, 0x33, 0xe0, 0xa5, 0xd1, 0xb9, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x5f, 0xfc, 0x6e, 0xb0, 0x46, 0x52, 0xf3, 0xa0, 0x20, 0x1e, 0x6f, 0x0d, 0x8f, 0xb0, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x42, 0x98, 0xd1, 0x41, 0x63, 0xcd, 0x59, 0x1b, 0x44, 0x32, 0x64, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xef, 0x06, 0x6b, 0x24, 0x35, 0x0f, 0x82, 0x95, 0xb5, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x00, 0x8f, 0x5c, 0x98, 0x1b, 0xd9, 0xbc, 0x41, 0x09, 0x1d, 0xbb, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x7a, 0xd3, 0x1f, 0x24, 0x34, 0x60, 0x76, 0x10, 0xa6, 0x63, 0x6b, 0x50, 0xec, 0x68, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0xa2, 0xb0, 0x31, 0xaa, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xd9, 0xc3, 0x83, 0x37, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x3c, 0x07, 0xd5, 0xfd, 0xf0, 0x98, 0xcc, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x7c, 0x58, 0x46, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x86, 0xad, 0xb4, 0x41, 0xca, 0xdb, 0xd5, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xaa, 0xfc, 0xa2, 0x6a, 0x83, 0x82, 0x22, 0x73, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x44, 0xd0, 0xb6, 0xe1, 0x99, 0xc9, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0xd5, 0xe0, 0x39, 0xa8, 0xee, 0x6d, 0xf8, 0x38, 0x6a, 0xc3, 0xdb, 0x3a, 0x07, 0x91, 0xe2, 0x19, 0xb5, 0x06, 0x83, 0x54, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0x20, 0xe5, 0xed, 0xea, 0x20, 0x19, 0x30, 0xb5, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x00, 0x7e, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x2d, 0x62, 0x6c, 0x6f, 0x63, 0xeb, 0x41, 0x73, 0xae, 0xe2, 0x6b, 0x50, 0x74, 0x1a, 0xaf, 0xe1, 0x6d, 0x9d, 0x0d, 0xe2, 0xc0, 0x60, 0xa8, 0x0d, 0x0f, 0xde, 0x6c, 0x50, 0x74, 0x1a, 0x6f, 0x10, 0x4b, 0xa2, 0x51, 0x1b, 0x1e, 0xbc, 0xd9, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x34, 0xe0, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0x0a, 0x79, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x14, 0xdb, 0xca, 0x1b, 0x1c, 0x97, 0x67, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x73, 0x8a, 0xdd, 0x20, 0xcd, 0x2a, 0xf6, 0xe0, 0xa8, 0x32, 0xb7, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0x66, 0x72, 0x83, 0x68, 0xf5, 0x8c, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0x66, 0x72, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0xbc, 0xe8, 0xf2, 0xe0, 0xca, 0x5a, 0xe8, 0xde, 0x5a, 0xdc, 0xea, 0xda, 0x0e, 0x5a, 0xc1, 0x07, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0x66, 0x72, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x8d, 0x80, 0x51, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x3c, 0x33, 0x79, 0x70, 0x68, 0x7b, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x9e, 0x99, 0x3c, 0x68, 0x28, 0x05, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0x66, 0x72, 0x83, 0xa8, 0x61, 0x8c, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0x66, 0x72, 0x83, 0xa8, 0x89, 0x8c, 0xaa, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x4a, 0xa4, 0xea, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x61, 0xb1, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x88, 0x96, 0x37, 0x38, 0x2e, 0xcf, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x62, 0x1c, 0x34, 0xaa, 0xda, 0xf0, 0x8b, 0xd2, 0x86, 0x2f, 0x97, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x6c, 0x5a, 0x46, 0x6d, 0x50, 0x18, 0xaa, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x92, 0x4a, 0x61, 0x37, 0x28, 0x2a, 0xc5, 0x37, 0x38, 0x35, 0xb7, 0x6d, 0xb0, 0x38, 0xb7, 0xad, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x54, 0x0a, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0xc1, 0xa9, 0xb9, 0x6d, 0x83, 0xe5, 0xaa, 0x6d, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x73, 0x69, 0xee, 0xe1, 0xc1, 0x9b, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x6f, 0x2e, 0xcd, 0xed, 0x20, 0x06, 0x38, 0xa3, 0xd6, 0xa0, 0xe8, 0x34, 0xde, 0xe0, 0x44, 0xd0, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x58, 0x08, 0x1e, 0x44, 0x0c, 0x63, 0xd4, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0xf5, 0xc3, 0xa8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xe9, 0x2d, 0x6e, 0x0d, 0x1f, 0x47, 0x1d, 0x44, 0x0d, 0x63, 0xd4, 0x41, 0xdc, 0x32, 0x46, 0xb5, 0x41, 0x41, 0x1a, 0xbb, 0x86, 0xef, 0xdb, 0x37, 0x58, 0x25, 0x47, 0x7a, 0xd0, 0xc0, 0xf5, 0xe9, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0x37, 0x58, 0x23, 0xa9, 0x79, 0x10, 0xff, 0x9b, 0x51, 0x1b, 0xc4, 0x72, 0x6d, 0x54, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0x23, 0xac, 0x1b, 0x44, 0x32, 0x64, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xd9, 0x06, 0x0b, 0xe1, 0x48, 0x0f, 0x82, 0x95, 0xb5, 0x35, 0x7c, 0x62, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0x6f, 0x18, 0x1c, 0x5c, 0x8b, 0x5b, 0x5d, 0xdb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x32, 0x7d, 0xa3, 0xd6, 0x20, 0x05, 0x3a, 0x75, 0xc3, 0xdb, 0x3a, 0x03, 0x8d, 0x06, 0x3b, 0x68, 0x5f, 0x2e, 0xf4, 0x20, 0x3a, 0x5a, 0xa3, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x78, 0x9d, 0x79, 0xf5, 0x86, 0x67, 0x26, 0x0f, 0x52, 0x05, 0x69, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x88, 0x10, 0xc4, 0xa8, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xe2, 0x8c, 0x30, 0xaa, 0x0d, 0x62, 0xfd, 0x30, 0x6a, 0x83, 0x85, 0x70, 0xa4, 0x07, 0xa9, 0x40, 0x63, 0x6b, 0x10, 0x01, 0xb6, 0x51, 0x1b, 0x3e, 0x8e, 0x3a, 0x88, 0xe5, 0xda, 0xa8, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xa0, 0x84, 0x8e, 0x5d, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xa0, 0xc7, 0xe2, 0xe1, 0x87, 0x9a, 0x35, 0xfc, 0xb9, 0x34, 0xd0, 0x63, 0xf2, 0xf0, 0x43, 0x4d, 0x07, 0x61, 0x3a, 0xb6, 0x86, 0x0f, 0x72, 0x36, 0x88, 0xed, 0xcb, 0xa8, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x51, 0x39, 0xbf, 0x41, 0x2c, 0xd7, 0x46, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x62, 0xae, 0x32, 0xaa, 0x36, 0x7c, 0x62, 0xb3, 0x06, 0x47, 0x1b, 0xbe, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x51, 0x39, 0xbf, 0xe1, 0x99, 0xc9, 0x83, 0x38, 0x3f, 0x8c, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0xc1, 0x42, 0x38, 0xd2, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x35, 0x9f, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x4c, 0xf5, 0x45, 0xd5, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x0d, 0x5a, 0x8a, 0x0b, 0x3d, 0x88, 0x20, 0xe6, 0xa8, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x52, 0x29, 0xec, 0x06, 0x45, 0xa5, 0xf8, 0x06, 0xa7, 0xe6, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x49, 0x34, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0x14, 0xff, 0x83, 0x33, 0x73, 0xdb, 0x41, 0x2a, 0xd0, 0x58, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xa9, 0x14, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x53, 0x73, 0xdb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x24, 0x9a, 0xdd, 0xa0, 0xa8, 0x14, 0x5f, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0x0a, 0xff, 0xc1, 0x99, 0xb9, 0xed, 0x20, 0x15, 0x68, 0xac, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0x3e, 0xc0, 0x2b, 0x57, 0x66, 0xd6, 0x22, 0xf7, 0x76, 0x1f, 0x34, 0x70, 0x7d, 0xba, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x08, 0xeb, 0x06, 0x91, 0x0c, 0x19, 0xb5, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x78, 0x73, 0xb0, 0x46, 0x52, 0xb3, 0x0d, 0xa2, 0x86, 0x31, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x06, 0x07, 0x23, 0xb8, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x2c, 0xfe, 0x45, 0xd5, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0xe0, 0x95, 0x2b, 0x33, 0x6b, 0x19, 0x7b, 0x63, 0x0f, 0x1a, 0xb8, 0x3e, 0x5d, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xec, 0x6e, 0x37, 0x3c, 0x33, 0x79, 0x10, 0x41, 0xcc, 0x51, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0xfe, 0x04, 0x5a, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x95, 0x6c, 0x83, 0x48, 0x86, 0x8c, 0x5a, 0xc3, 0xbf, 0x39, 0x1b, 0x14, 0x95, 0xe2, 0x07, 0x6b, 0x24, 0x35, 0xdb, 0xf0, 0xe0, 0xcd, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x35, 0x7c, 0x1c, 0x75, 0xb0, 0x46, 0x52, 0xf3, 0x20, 0xfe, 0x37, 0xa3, 0x36, 0x38, 0xda, 0xf0, 0xad, 0x41, 0xd1, 0x69, 0xbc, 0xe1, 0x53, 0xc0, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x35, 0x9f, 0x83, 0x54, 0xa0, 0xb1, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x4a, 0x7c, 0xdc, 0x35, 0xfc, 0xe2, 0xb2, 0xe1, 0xc1, 0x9b, 0x83, 0xb4, 0xd3, 0xd8, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x82, 0xa7, 0x76, 0xc3, 0x33, 0x93, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc4, 0xc7, 0xdd, 0x20, 0x6a, 0xc0, 0xa3, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0xc1, 0x49, 0xf7, 0xed, 0xe0, 0x9c, 0xfb, 0xd6, 0x86, 0x0f, 0x72, 0x36, 0x88, 0x64, 0xc8, 0xa8, 0x35, 0x7c, 0x90, 0xb3, 0x86, 0x5f, 0xc9, 0x36, 0x88, 0x0f, 0xeb, 0xa8, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0xd4, 0x30, 0x46, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0x78, 0xa4, 0x8e, 0xaa, 0x0d, 0x5a, 0x8a, 0x0b, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x41, 0x2c, 0xd7, 0x46, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xaf, 0xf9, 0x6c, 0x10, 0x23, 0xbb, 0x51, 0x1d, 0xc4, 0xc8, 0x6e, 0xd4, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x37, 0x57, 0xc7, 0x6e, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x1b, 0x44, 0x11, 0x73, 0xd4, 0x41, 0xfc, 0x6f, 0x46, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x10, 0x17, 0xe5, 0x51, 0x07, 0x51, 0xc3, 0x18, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0xbc, 0xe6, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0xb9, 0x3a, 0xb6, 0x83, 0x18, 0xe1, 0x8d, 0x6a, 0xc3, 0x07, 0x39, 0x1b, 0xc4, 0x88, 0x79, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x9a, 0xcf, 0x06, 0xf1, 0xb7, 0x1e, 0xd5, 0x41, 0xfc, 0xad, 0x47, 0x6d, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0x12, 0x2a, 0xe4, 0x0e, 0x9a, 0x73, 0x15, 0x5f, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x58, 0x12, 0x8d, 0xda, 0x20, 0x5e, 0x93, 0xa3, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0x2a, 0xe7, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xd1, 0x8d, 0x1d, 0xd5, 0x86, 0x0f, 0x72, 0x36, 0x88, 0xe8, 0xf4, 0xa8, 0x0d, 0x62, 0xfd, 0x30, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x95, 0xf3, 0x1b, 0xc4, 0x45, 0x79, 0xd4, 0x41, 0xdc, 0x32, 0x46, 0x6d, 0x70, 0x1c, 0x9b, 0xd8, 0x20, 0x99, 0x42, 0x6e, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0x6d, 0xd6, 0x83, 0x48, 0x86, 0x8c, 0x5a, 0xc3, 0xbf, 0x39, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0xb0, 0x39, 0x78, 0xbc, 0x3d, 0x6f, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0c, 0xc4, 0x06, 0x69, 0x11, 0x72, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0x72, 0x7e, 0x83, 0x85, 0x70, 0xa4, 0x07, 0x71, 0x7e, 0x18, 0xd5, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x11, 0x82, 0x18, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0x67, 0x38, 0x6a, 0x83, 0x58, 0x3f, 0x8c, 0xda, 0x60, 0x21, 0x1c, 0xe9, 0xc1, 0x9b, 0x06, 0x51, 0x0e, 0x62, 0x92, 0x38, 0xea, 0x70, 0x8a, 0xad, 0x41, 0x1c, 0x18, 0x0c, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0x83, 0x30, 0x4e, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xfc, 0xf0, 0x43, 0x4d, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0x43, 0xcd, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf2, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc4, 0x40, 0x6c, 0x90, 0x4c, 0xe9, 0x74, 0x90, 0x5e, 0xed, 0xb4, 0x41, 0x69, 0x6f, 0xb9, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x0f, 0xca, 0x39, 0xdb, 0x0d, 0x9f, 0xd8, 0x6c, 0x90, 0x04, 0xa4, 0xba, 0xe1, 0x2b, 0x9c, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x5f, 0x9c, 0x6d, 0x50, 0x46, 0x9f, 0x1f, 0x1c, 0x55, 0xe6, 0xd6, 0x60, 0x01, 0x66, 0xd3, 0x1a, 0xbe, 0x6f, 0x1f, 0x1c, 0xde, 0xa0, 0x84, 0x8e, 0xdd, 0xa0, 0x9c, 0xb3, 0x3d, 0x08, 0xd3, 0xb1, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x38, 0xe2, 0x64, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x13, 0x41, 0xdb, 0x06, 0xa7, 0x23, 0x91, 0x83, 0xf4, 0xa4, 0xc1, 0x83, 0xc3, 0x3f, 0xc5, 0x06, 0x27, 0xf6, 0x9b, 0x35, 0xbc, 0xad, 0x33, 0xc0, 0x0b, 0x57, 0x26, 0xd7, 0x56, 0x47, 0x57, 0xb6, 0xc1, 0xd1, 0x86, 0x6f, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x22, 0x68, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x64, 0xda, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x38, 0xac, 0xcc, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x7a, 0x4e, 0x1e, 0xa4, 0x02, 0x8d, 0x75, 0x50, 0x38, 0xc9, 0x1e, 0xa4, 0x02, 0x8d, 0x6d, 0x70, 0x62, 0xbf, 0xd9, 0xa0, 0xb0, 0x58, 0xde, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x20, 0x5a, 0xde, 0xe0, 0xbc, 0x40, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa2, 0xd9, 0x0d, 0x52, 0x5e, 0xab, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x06, 0xe7, 0x05, 0x9a, 0x83, 0xd2, 0x0c, 0xfd, 0xa0, 0x20, 0x1e, 0x3f, 0x38, 0xf4, 0xf5, 0x6d, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0xc1, 0xf5, 0x83, 0x48, 0x00, 0x90, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x64, 0xda, 0x36, 0x48, 0x81, 0x4e, 0x3d, 0x28, 0x9c, 0x64, 0x37, 0x28, 0xfa, 0x74, 0x37, 0x28, 0x76, 0xcf, 0x37, 0x3c, 0x78, 0xb3, 0xe1, 0x2b, 0x9c, 0x0d, 0x8a, 0x1d, 0xcd, 0x0d, 0x62, 0xcf, 0x3f, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x88, 0x81, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xdb, 0xca, 0x1b, 0x9c, 0x17, 0x68, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x85, 0xc5, 0xf2, 0x41, 0x72, 0x01, 0x6b, 0x07, 0x87, 0xbe, 0xbe, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0xbe, 0x41, 0x69, 0x96, 0x7d, 0x10, 0x09, 0x00, 0x52, 0x6b, 0x70, 0x62, 0xbf, 0xd9, 0x20, 0xca, 0x05, 0xa4, 0x36, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xca, 0xf9, 0x0d, 0xca, 0xe8, 0xf3, 0x83, 0x43, 0x2f, 0xdf, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xa8, 0x9c, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0x3a, 0x88, 0x73, 0xff, 0xa8, 0x83, 0x43, 0x2f, 0xdf, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xa8, 0x9c, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0xa0, 0x8c, 0x3e, 0x3f, 0x38, 0xba, 0xca, 0x1d, 0x1c, 0x7a, 0xf9, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0xe5, 0xfc, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x06, 0x65, 0xf4, 0xf9, 0x06, 0x8b, 0xde, 0xf0, 0x3a, 0x38, 0xf4, 0xf2, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xca, 0xf9, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0xca, 0xe8, 0xf3, 0x83, 0xb4, 0xd3, 0xd8, 0x83, 0x43, 0x2f, 0xdf, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xa8, 0x9c, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0xa0, 0x8c, 0x3e, 0x3f, 0x48, 0x23, 0x74, 0x3d, 0x38, 0xf4, 0xf2, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xca, 0xf9, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0xca, 0xe8, 0xf3, 0x0d, 0x16, 0x16, 0xc0, 0x75, 0x70, 0xe8, 0xe5, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x95, 0xf3, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0x94, 0xd1, 0xe7, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0xc5, 0x1d, 0x1c, 0x7a, 0xf9, 0xda, 0xf0, 0x89, 0xcd, 0x06, 0x69, 0x16, 0xac, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xe0, 0xb0, 0x32, 0x77, 0x90, 0xc2, 0x1c, 0xb5, 0x86, 0x4b, 0x6a, 0x83, 0xc3, 0x7e, 0xc7, 0xc1, 0xe1, 0x9f, 0x62, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x24, 0xaa, 0x3c, 0x1d, 0x9e, 0x99, 0x3c, 0x48, 0x72, 0x60, 0xdd, 0xf0, 0x89, 0xcd, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x06, 0x65, 0xf4, 0xf9, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0x0f, 0x12, 0xbd, 0x56, 0xdb, 0xa0, 0xe8, 0x34, 0xde, 0xe0, 0x44, 0xd0, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x58, 0x08, 0x6e, 0x78, 0x66, 0xf2, 0x20, 0xb9, 0x80, 0x75, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0x72, 0x7e, 0x83, 0x14, 0xe6, 0xa8, 0x83, 0x42, 0x69, 0x7b, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x7a, 0x8b, 0x5b, 0xc3, 0xc7, 0x51, 0x87, 0x67, 0x26, 0x0f, 0x92, 0x0b, 0x58, 0x5b, 0x01, 0xfc, 0xc2, 0xe4, 0xce, 0xde, 0xdc, 0x64, 0x5a, 0xea, 0xe4, 0xc4, 0xd2, 0xe8, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0x86, 0xfb, 0xe8, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x31, 0x5e, 0x8e, 0xd3, 0x06, 0xc5, 0xd2, 0xf6, 0x06, 0x29, 0xff, 0x4e, 0x1b, 0xc4, 0x05, 0x7d, 0xd4, 0x06, 0xa7, 0xe6, 0xb6, 0x35, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0x0e, 0x00, 0xf4, 0x1b, 0x1e, 0x93, 0x59, 0x83, 0x42, 0x30, 0xf5, 0x20, 0xb9, 0x11, 0x76, 0x83, 0xe8, 0x5d, 0x91, 0x6a, 0x35, 0x88, 0x1a, 0xc1, 0xa8, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0xa8, 0x11, 0x8c, 0xda, 0x20, 0xd8, 0x4c, 0x37, 0x38, 0xe7, 0xa6, 0x6c, 0x70, 0xd4, 0x3a, 0xd9, 0x20, 0x1a, 0x20, 0xa3, 0x36, 0x48, 0x08, 0x33, 0x6a, 0x35, 0x88, 0xf1, 0x72, 0x9c, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0xda, 0x70, 0x1f, 0xdd, 0x20, 0xf2, 0x02, 0xa3, 0x36, 0x88, 0x7e, 0xc1, 0xa8, 0x0d, 0x22, 0xea, 0x2f, 0x6a, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0xb7, 0x95, 0xb5, 0xb5, 0x8c, 0xbd, 0xcd, 0xd1, 0x07, 0x65, 0x96, 0xee, 0x06, 0x31, 0x05, 0x18, 0xb5, 0x86, 0x3f, 0x97, 0x36, 0x28, 0x5a, 0x4f, 0x0e, 0x92, 0x1b, 0x61, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x0d, 0x01, 0x69, 0x1d, 0x24, 0x37, 0xc2, 0xb6, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xa7, 0xb1, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb6, 0xb9, 0xf3, 0x20, 0xb9, 0x11, 0x76, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x73, 0x61, 0xf4, 0x41, 0x72, 0x23, 0x6c, 0x87, 0x1f, 0x6a, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x78, 0x73, 0x10, 0xd5, 0xd7, 0x51, 0x6b, 0xb0, 0xa4, 0x7e, 0x69, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0x6a, 0x26, 0x71, 0x0e, 0xc2, 0x53, 0x75, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0xc3, 0x83, 0x37, 0x07, 0x11, 0xac, 0x1a, 0xb5, 0x06, 0x4b, 0xea, 0x97, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0xa2, 0x34, 0x13, 0xe7, 0x20, 0x3c, 0x55, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x71, 0xb6, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x8d, 0x18, 0xa9, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0xc1, 0x61, 0x65, 0xee, 0x20, 0xa2, 0xaf, 0xa3, 0x5a, 0x83, 0x25, 0xf5, 0x4b, 0x6b, 0x50, 0x18, 0xaa, 0xae, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0x44, 0x91, 0x28, 0xce, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0xea, 0xeb, 0xa8, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0x98, 0x2d, 0xc5, 0xd9, 0xe0, 0xb0, 0x32, 0x77, 0x10, 0xa5, 0x3b, 0x52, 0x07, 0xe1, 0xa9, 0xba, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x5f, 0xc9, 0xd6, 0xf0, 0x6f, 0xce, 0x1a, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0x3c, 0x0c, 0x0e, 0x1e, 0x6f, 0xcf, 0x7b, 0x10, 0xd9, 0xf3, 0x51, 0x6b, 0xb0, 0xa4, 0x7e, 0x69, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0xc4, 0x6a, 0x3a, 0xce, 0x06, 0x8f, 0xb7, 0xe7, 0x5d, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x87, 0xd2, 0xf5, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0x46, 0x81, 0xa4, 0x36, 0x88, 0x0b, 0xfa, 0xa8, 0x3a, 0x08, 0x4f, 0xd5, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0xbe, 0xc1, 0xc1, 0xc9, 0xed, 0xa0, 0x81, 0xeb, 0xd3, 0x35, 0x7c, 0x62, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0x4e, 0xcd, 0x6d, 0x07, 0x11, 0x7d, 0x1d, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x0a, 0xac, 0x1b, 0xc4, 0xc7, 0x8e, 0xd4, 0x41, 0x2a, 0xd0, 0xd8, 0x41, 0x2a, 0xd0, 0xd8, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x31, 0xd5, 0x17, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x42, 0x81, 0x75, 0x83, 0x63, 0xdb, 0xdb, 0x41, 0x44, 0x5f, 0x47, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0x10, 0x55, 0x7e, 0x51, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x14, 0x58, 0x37, 0x88, 0x22, 0xe6, 0xa8, 0x83, 0x33, 0x73, 0xdb, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0xdf, 0x20, 0x8e, 0xf1, 0xa2, 0x36, 0x28, 0xa1, 0x63, 0x37, 0x88, 0x50, 0x07, 0xa8, 0x83, 0x30, 0x1d, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x64, 0xda, 0x36, 0x88, 0xea, 0xeb, 0xa8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x49, 0xa6, 0x6d, 0x83, 0x28, 0x62, 0x8e, 0x3a, 0x28, 0x9c, 0x64, 0xdb, 0xa0, 0xec, 0x92, 0xdd, 0x20, 0xc6, 0xcb, 0x71, 0xd6, 0x70, 0x49, 0xad, 0xf1, 0xf8, 0x20, 0xfe, 0x52, 0xa4, 0x9a, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x35, 0x34, 0x52, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0x43, 0xcd, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0xce, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x67, 0x21, 0xd3, 0x01, 0x6f, 0x2e, 0x8c, 0xee, 0xe0, 0xa8, 0x32, 0xb7, 0x06, 0x4b, 0xea, 0x97, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0x41, 0xe4, 0xe6, 0xe2, 0x6c, 0x10, 0x89, 0x52, 0x52, 0x1d, 0x84, 0xa7, 0xea, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0x68, 0x34, 0x78, 0xd0, 0x9c, 0xab, 0xf8, 0x1a, 0x1c, 0x6d, 0xf8, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0xdc, 0x20, 0x92, 0xbb, 0xa2, 0x0e, 0xa2, 0xfe, 0x2a, 0x6a, 0xc3, 0x33, 0x93, 0x07, 0xf1, 0x0f, 0x16, 0xb5, 0x41, 0x61, 0xa8, 0xba, 0x06, 0x49, 0x06, 0x84, 0x1b, 0xfe, 0x04, 0xda, 0x20, 0x95, 0xd0, 0x75, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x16, 0x32, 0x3d, 0x88, 0x44, 0xaf, 0xa8, 0x0d, 0x22, 0x51, 0x4a, 0x6a, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x16, 0x32, 0x3d, 0x38, 0x0e, 0x7c, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xce, 0x42, 0xa6, 0x07, 0x0d, 0x4c, 0x69, 0xb5, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x59, 0x1c, 0xbd, 0x41, 0x51, 0x29, 0xbe, 0xe1, 0x13, 0x9b, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x9a, 0x53, 0xec, 0x06, 0x69, 0x56, 0xb1, 0x07, 0x67, 0xe6, 0xb6, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x6b, 0x6e, 0x51, 0x1d, 0xb4, 0x21, 0xa5, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x08, 0x2f, 0xa9, 0x83, 0x13, 0x38, 0xdb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x22, 0xbc, 0xa4, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0x04, 0x4c, 0x49, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x08, 0x2f, 0xa9, 0x0d, 0x62, 0xca, 0x2b, 0xaa, 0x35, 0x38, 0x35, 0xb7, 0x1d, 0x44, 0x14, 0x6a, 0xd4, 0x1a, 0x9c, 0x9a, 0xdb, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x99, 0xc9, 0x0d, 0x1e, 0x6f, 0xcf, 0xdb, 0x1a, 0x9c, 0x9a, 0xdb, 0x0e, 0x22, 0x4a, 0x35, 0x6a, 0x0d, 0x4e, 0xcd, 0x6d, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0xcc, 0xe4, 0x06, 0xf1, 0xb1, 0x23, 0xd5, 0x1a, 0x9c, 0x9a, 0xdb, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x99, 0xc9, 0x83, 0x42, 0x69, 0x7b, 0x0d, 0x4e, 0xcd, 0x6d, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0xcc, 0xe4, 0x41, 0x44, 0x5f, 0x47, 0xb5, 0xe1, 0x13, 0x9b, 0x0d, 0xe2, 0xe5, 0xb3, 0x69, 0xc3, 0x57, 0x38, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0x38, 0xdb, 0xe0, 0xd4, 0xd2, 0x77, 0x10, 0xbd, 0xaa, 0x51, 0x6b, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x3e, 0x1f, 0x1e, 0xbc, 0xd9, 0xf0, 0x15, 0xce, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xd9, 0x06, 0x87, 0x73, 0xbe, 0x83, 0x33, 0x73, 0xdb, 0x1a, 0x2e, 0xa9, 0x0d, 0x0e, 0xfb, 0x1d, 0x07, 0x51, 0x43, 0xda, 0xb4, 0xe1, 0x13, 0x9b, 0x0d, 0x8e, 0x24, 0x7c, 0x1b, 0xbe, 0xc2, 0xd9, 0xa0, 0xd8, 0xd1, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0x38, 0xdb, 0xe0, 0xf8, 0xc9, 0x77, 0x10, 0xd1, 0xd7, 0x51, 0x6b, 0xb8, 0xa4, 0x36, 0x38, 0xec, 0x77, 0xac, 0xc1, 0xb9, 0x9d, 0x6f, 0xc3, 0xc7, 0x51, 0x07, 0x87, 0x73, 0xbe, 0x36, 0x58, 0x80, 0xd9, 0xb4, 0x86, 0xef, 0xdb, 0x37, 0x48, 0xa8, 0x90, 0xdb, 0xa0, 0x84, 0x8e, 0x5d, 0x83, 0x00, 0x3a, 0x3b, 0x88, 0x3e, 0xc5, 0xa8, 0x83, 0x30, 0x1d, 0x5b, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x98, 0x55, 0x8c, 0x3a, 0x48, 0x8b, 0x90, 0x5b, 0x83, 0x82, 0x67, 0x73, 0xc3, 0xc7, 0x51, 0x07, 0xc7, 0x4f, 0xbe, 0x36, 0x38, 0xb1, 0xdf, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xa2, 0xe7, 0x2e, 0xaa, 0x0d, 0xbf, 0xb8, 0x6c, 0x10, 0x7d, 0x8a, 0x51, 0x1b, 0x44, 0x0b, 0x70, 0xd4, 0x06, 0xa7, 0x96, 0xbe, 0x0d, 0x0e, 0xe7, 0x7c, 0x1b, 0x1c, 0x3f, 0xf9, 0x36, 0x38, 0xb6, 0xbd, 0x6d, 0x10, 0x45, 0xcc, 0x51, 0x1b, 0xc4, 0x00, 0x67, 0xd4, 0x06, 0x51, 0x7d, 0x1d, 0xb5, 0x41, 0x04, 0xab, 0x46, 0x6d, 0xd0, 0x22, 0x73, 0xd6, 0x41, 0x04, 0x8b, 0x49, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0x23, 0x09, 0xdf, 0x06, 0xa5, 0xbd, 0xe5, 0x1a, 0xfe, 0x5c, 0x1a, 0xe0, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x0f, 0x3f, 0xd4, 0x6c, 0xf8, 0x0a, 0x67, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0xe3, 0x27, 0xdf, 0x41, 0x54, 0x5f, 0x47, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x5e, 0x67, 0x5e, 0xbd, 0x06, 0xe9, 0x82, 0xb4, 0x1b, 0xde, 0xd6, 0xd9, 0x20, 0x7a, 0xee, 0xa4, 0x3a, 0x28, 0x94, 0xb6, 0x37, 0x38, 0xda, 0xf0, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x24, 0xe8, 0x49, 0x1d, 0x9e, 0x99, 0x3c, 0x88, 0x94, 0x38, 0xa9, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x0e, 0x31, 0x10, 0x1b, 0xc4, 0x74, 0x9e, 0xd4, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x2a, 0xe7, 0x37, 0x88, 0xea, 0xe5, 0xa8, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x51, 0x39, 0xbf, 0xc1, 0xf1, 0x93, 0xef, 0x20, 0x6e, 0x19, 0xa3, 0x5a, 0x0d, 0xe2, 0x63, 0x40, 0x6a, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf9, 0xa0, 0x9c, 0xb3, 0xdd, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0x1c, 0x56, 0xe6, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x42, 0xcf, 0xc9, 0x83, 0x93, 0x3c, 0xdf, 0x86, 0xbf, 0x68, 0x36, 0x28, 0xe7, 0x6c, 0x37, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0xe0, 0xf6, 0x41, 0x24, 0x00, 0x48, 0xad, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x46, 0xe5, 0xff, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x84, 0x3a, 0x40, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x22, 0x55, 0x6f, 0x70, 0x38, 0xe7, 0xdb, 0xf0, 0x8b, 0xd2, 0x86, 0x2f, 0x97, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x88, 0x96, 0x37, 0x38, 0x2e, 0xcf, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x92, 0x4a, 0x61, 0x37, 0x28, 0x2a, 0xc5, 0x0f, 0x96, 0x5d, 0x95, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x1b, 0x9e, 0x99, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x64, 0xda, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x08, 0x58, 0xd6, 0x83, 0xb8, 0x2c, 0x90, 0x3a, 0x28, 0x9c, 0x64, 0xdb, 0xa0, 0xe8, 0xd3, 0xdd, 0xe0, 0xd0, 0xda, 0xb2, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0x3f, 0xd9, 0x5b, 0x8b, 0xdc, 0x5b, 0x9d, 0x1b, 0xd9, 0x06, 0xa9, 0x42, 0x51, 0x1b, 0x1e, 0xbc, 0xd9, 0xe0, 0xd4, 0xdc, 0xb6, 0xc1, 0x61, 0x65, 0xee, 0xa0, 0x75, 0x5c, 0xe6, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x0e, 0xad, 0x2d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc8, 0x4e, 0x94, 0xda, 0x20, 0x55, 0x28, 0x6a, 0xc3, 0x63, 0x32, 0x1b, 0x1c, 0x16, 0xd8, 0x36, 0x48, 0x39, 0xad, 0x3a, 0x38, 0x2d, 0xd6, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x70, 0x68, 0x6d, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x76, 0xa2, 0xd4, 0x06, 0xa9, 0x42, 0x51, 0x1b, 0x04, 0x2c, 0xeb, 0x06, 0xc7, 0xe5, 0x99, 0x0d, 0x52, 0x5e, 0xab, 0x0e, 0x52, 0x06, 0x57, 0x37, 0x28, 0xfa, 0x74, 0x37, 0x38, 0xb4, 0xb6, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x22, 0x3b, 0x51, 0x6a, 0x83, 0x54, 0xa1, 0xa8, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0xce, 0x0b, 0x34, 0x1b, 0xa4, 0x33, 0xdb, 0x1d, 0x24, 0xba, 0xd6, 0x6e, 0x50, 0xf4, 0xe9, 0x6e, 0x70, 0x68, 0x6d, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x76, 0xa2, 0xd4, 0x06, 0xa9, 0x42, 0x51, 0x1b, 0x1e, 0xbc, 0xd9, 0xe0, 0xb0, 0xc0, 0xb6, 0x41, 0xca, 0x6b, 0xd5, 0x41, 0xa2, 0x6b, 0xed, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x87, 0xd6, 0x96, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x64, 0x27, 0x4a, 0x6d, 0x90, 0x2a, 0x14, 0xb5, 0xe1, 0x31, 0x99, 0x0d, 0x8e, 0xcb, 0x33, 0x1b, 0xa4, 0x33, 0xdb, 0x1d, 0xb4, 0x8e, 0xcb, 0xbc, 0x41, 0xd1, 0xa7, 0xbb, 0xc1, 0xa1, 0xb5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xd9, 0x89, 0x52, 0x1b, 0xa4, 0x0a, 0x45, 0x6d, 0x10, 0xb0, 0xac, 0x1b, 0x9c, 0x17, 0x68, 0x36, 0x38, 0xac, 0xcc, 0x1d, 0x9c, 0x16, 0xeb, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x38, 0xb4, 0xb6, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x22, 0x3b, 0x51, 0x6a, 0x83, 0x54, 0xa1, 0xa8, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0x4e, 0xcd, 0x6d, 0x1b, 0xa4, 0x9c, 0x56, 0x1d, 0xa4, 0x0c, 0xae, 0x6e, 0x50, 0xf4, 0xe9, 0x6e, 0x70, 0x68, 0x6d, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x48, 0xd5, 0x1b, 0xa4, 0x0a, 0x45, 0x6d, 0x10, 0x4f, 0xa6, 0x51, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x22, 0x55, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x5e, 0xa4, 0x2b, 0x7d, 0x90, 0x42, 0x64, 0xbb, 0xe1, 0x17, 0xa5, 0x0d, 0xce, 0x93, 0x2a, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x04, 0x4f, 0xed, 0xc1, 0x12, 0x8c, 0xf7, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xd6, 0xdb, 0x6e, 0x70, 0x5c, 0x9e, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x95, 0xf3, 0x1b, 0x44, 0xbf, 0x89, 0xd4, 0x41, 0x9a, 0x50, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xa8, 0x9c, 0xdf, 0xf0, 0xcc, 0xe4, 0x41, 0x9a, 0x50, 0x54, 0x87, 0x53, 0x6c, 0x0d, 0x62, 0xda, 0x37, 0x6a, 0xc3, 0x2f, 0x4a, 0x1b, 0xc4, 0x72, 0x5c, 0xd4, 0x86, 0xbf, 0x68, 0x36, 0x48, 0x6e, 0x84, 0xdd, 0xa0, 0x30, 0x54, 0xdd, 0x20, 0x8e, 0xe6, 0xa2, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0x8b, 0xa3, 0x37, 0x28, 0x2a, 0xc5, 0x37, 0x38, 0xba, 0x0e, 0x6e, 0x10, 0x85, 0x75, 0x51, 0x1b, 0x44, 0x40, 0x5d, 0x54, 0x87, 0x53, 0x6c, 0x0d, 0xa2, 0x26, 0x35, 0x6a, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xfa, 0x20, 0xee, 0x03, 0xa3, 0x36, 0x08, 0xd2, 0xd3, 0x0d, 0x0e, 0x34, 0x7d, 0x6b, 0x70, 0xce, 0x4d, 0x39, 0x3c, 0x78, 0xb3, 0x06, 0x47, 0xad, 0x93, 0xc3, 0x63, 0x32, 0x6b, 0x10, 0x0d, 0x90, 0x51, 0x07, 0x01, 0xcb, 0xba, 0x06, 0x09, 0x61, 0x46, 0x07, 0x29, 0xaf, 0x55, 0xcd, 0x1a, 0xa4, 0x75, 0xac, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xf8, 0x72, 0x69, 0xc3, 0xf3, 0x4c, 0x07, 0x05, 0xf8, 0xf6, 0x86, 0xbf, 0x68, 0x36, 0x88, 0x78, 0x55, 0xa9, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x16, 0xcd, 0xbd, 0x6e, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xd4, 0x88, 0x1f, 0xa4, 0x91, 0xa7, 0x6e, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0x73, 0x38, 0xdc, 0x1a, 0x1e, 0x94, 0xdc, 0xe0, 0xb0, 0x0d, 0x77, 0xb0, 0x2e, 0xee, 0x75, 0x83, 0x95, 0x2e, 0x4e, 0x1b, 0x24, 0x58, 0xd8, 0xae, 0xe1, 0x41, 0xc9, 0x0d, 0x52, 0x25, 0x6c, 0x0f, 0xd6, 0xc5, 0xbd, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0x30, 0x30, 0x3d, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x9a, 0x53, 0xec, 0x06, 0x45, 0x26, 0xee, 0xc1, 0x51, 0x81, 0x6d, 0x83, 0xa2, 0x4f, 0x77, 0xc3, 0x83, 0x3b, 0x6b, 0x90, 0x64, 0x40, 0xb8, 0xc1, 0x61, 0x1b, 0x6e, 0xc3, 0xd3, 0x3a, 0x1b, 0xde, 0x0b, 0x5a, 0x83, 0x24, 0x03, 0xc2, 0x0d, 0x82, 0xa7, 0x76, 0x83, 0x80, 0x65, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x99, 0xb8, 0x87, 0x87, 0x7e, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0xe1, 0x2d, 0xb4, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0xa0, 0xc8, 0x97, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x4a, 0xd8, 0x6e, 0x78, 0xf0, 0x66, 0x83, 0xd4, 0xd3, 0xd8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x06, 0xe2, 0xe0, 0xfc, 0xb1, 0xd7, 0x06, 0x45, 0x9f, 0xee, 0x86, 0x7f, 0x78, 0xd6, 0x20, 0xc9, 0x80, 0x70, 0x83, 0xc3, 0x36, 0xdc, 0x86, 0xa7, 0x77, 0x36, 0x28, 0xd7, 0x65, 0xd7, 0x20, 0xc9, 0x80, 0x70, 0x83, 0xe0, 0xa9, 0xdd, 0x20, 0x60, 0x59, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0xe1, 0x17, 0xa1, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x91, 0x89, 0x7b, 0x50, 0xaa, 0xcb, 0xd6, 0x06, 0x45, 0x9f, 0xee, 0x86, 0xcf, 0x83, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa9, 0x12, 0xb6, 0x1b, 0x1e, 0xbc, 0xd9, 0x60, 0xd1, 0x1b, 0xde, 0x06, 0x71, 0xea, 0xdc, 0xd4, 0x06, 0x45, 0x9f, 0xee, 0x86, 0x07, 0x77, 0x36, 0x88, 0x3b, 0x59, 0xa9, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x8a, 0x7c, 0xd9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xaa, 0x84, 0xed, 0x86, 0x07, 0x6f, 0x36, 0x38, 0xbc, 0xca, 0x1d, 0x44, 0xc0, 0xad, 0xd4, 0x06, 0x45, 0x9f, 0xee, 0x86, 0x7f, 0x78, 0x36, 0x88, 0x1c, 0x5c, 0xa9, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x9f, 0x07, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x52, 0x25, 0x6c, 0x37, 0x3c, 0x78, 0xb3, 0xc1, 0x7a, 0x84, 0xb7, 0x83, 0x78, 0xe6, 0x95, 0xda, 0xf0, 0x8b, 0xcb, 0x86, 0xa7, 0x75, 0x0e, 0x92, 0xc3, 0x5a, 0x0f, 0xa7, 0x58, 0x6b, 0x10, 0x13, 0x8a, 0x52, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xfb, 0xa0, 0x9c, 0xb3, 0x5d, 0xc3, 0x9f, 0x4b, 0x03, 0xef, 0x16, 0x1e, 0x7e, 0xa8, 0x59, 0xc3, 0x9f, 0x4b, 0x03, 0xef, 0x26, 0x1e, 0x7e, 0xa8, 0x59, 0xc3, 0x9f, 0x4b, 0x03, 0xef, 0x36, 0x1e, 0x7e, 0xa8, 0x59, 0xc3, 0x9f, 0x4b, 0x03, 0xef, 0x46, 0x1e, 0x7e, 0xa8, 0x69, 0xc3, 0xd7, 0x2f, 0x1b, 0xa4, 0x0a, 0x45, 0x6d, 0x50, 0x4a, 0x88, 0xaf, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0x41, 0x9c, 0x11, 0x46, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x1d, 0x44, 0x8b, 0x61, 0xd4, 0x86, 0xaf, 0x5f, 0x36, 0x48, 0x15, 0x8a, 0xda, 0xa0, 0xe8, 0x34, 0xde, 0xe0, 0x44, 0xd0, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x58, 0x08, 0x6e, 0x50, 0x46, 0x9f, 0x1f, 0xa4, 0x09, 0x45, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x72, 0x5d, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x7a, 0x8b, 0xdb, 0xa0, 0x20, 0x3e, 0x3f, 0x48, 0x13, 0x8a, 0x6a, 0x16, 0xe0, 0x3f, 0x2b, 0xa3, 0x6b, 0xb9, 0x7b, 0x93, 0x23, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0xb9, 0x70, 0xbe, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xca, 0xf9, 0x83, 0x38, 0x53, 0x96, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0x14, 0x7d, 0xba, 0x1b, 0x1c, 0x5a, 0x5b, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0x33, 0x1c, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0xde, 0x2d, 0xec, 0xf0, 0xd0, 0xcf, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x87, 0xd6, 0x96, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xec, 0x0c, 0x47, 0xad, 0xe1, 0x6d, 0x9d, 0x81, 0x77, 0x13, 0x3b, 0xbc, 0x85, 0xb6, 0x41, 0xd1, 0xa7, 0xbb, 0xc1, 0xa1, 0xb5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3b, 0xc3, 0x51, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xdd, 0xc6, 0x0e, 0xbf, 0x08, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xd8, 0x19, 0x8e, 0x5a, 0xc3, 0xdb, 0x3a, 0x03, 0xef, 0x46, 0x76, 0x50, 0xaa, 0xcb, 0x6e, 0x70, 0x62, 0xbf, 0x59, 0xc3, 0xdb, 0x3a, 0x07, 0x29, 0x1d, 0x6b, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x68, 0x63, 0x96, 0x6a, 0x83, 0xf8, 0x7e, 0x96, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x37, 0xd6, 0x52, 0x1b, 0xc4, 0x62, 0xb4, 0x54, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb8, 0xb1, 0x96, 0xda, 0x20, 0x6e, 0xa6, 0xa5, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x8d, 0xb5, 0xd4, 0x06, 0xd1, 0x45, 0x2d, 0x55, 0x87, 0x53, 0xec, 0x70, 0x8a, 0xad, 0x80, 0x3f, 0x26, 0x57, 0x17, 0x1e, 0x84, 0xa7, 0xea, 0x0a, 0x78, 0x61, 0x65, 0xf3, 0x06, 0x65, 0x97, 0xec, 0x80, 0x17, 0x56, 0x36, 0x6f, 0xf0, 0x66, 0xe1, 0x93, 0xd9, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0x16, 0xf0, 0xd2, 0xdc, 0xc6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xc0, 0x4b, 0x73, 0x1b, 0x1b, 0xc0, 0x33, 0xcd, 0x6d, 0xcc, 0x05, 0x84, 0xed, 0xed, 0x0e, 0x44, 0x8c, 0xed, 0x2d, 0x6e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0x68, 0x7e, 0x70, 0xf8, 0x76, 0x7e, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x63, 0x74, 0xf2, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0x70, 0xa4, 0x0d, 0x7f, 0xd1, 0x6c, 0xf0, 0xde, 0x51, 0xe0, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x4f, 0x2c, 0x6e, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x05, 0xd1, 0xf2, 0x06, 0x61, 0x77, 0xbb, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0x31, 0x3a, 0xb9, 0x36, 0x28, 0xe1, 0x31, 0x17, 0xf0, 0xc4, 0xe2, 0xe6, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0xb9, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0xb1, 0xad, 0xbc, 0x41, 0xd8, 0xdd, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0xc1, 0x39, 0x1c, 0x6e, 0x83, 0x33, 0xff, 0xda, 0x41, 0x6b, 0x49, 0xd1, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0x20, 0x12, 0xc6, 0xa5, 0x0e, 0x0a, 0xe2, 0xf1, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0x10, 0x09, 0xe3, 0x52, 0xad, 0x80, 0x4f, 0xf6, 0x56, 0x27, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0xe4, 0xb9, 0x54, 0x03, 0xf8, 0x92, 0xbd, 0xd5, 0x89, 0xb1, 0x95, 0x81, 0xc4, 0xc8, 0xe0, 0xb4, 0x88, 0xa5, 0xd1, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x73, 0x74, 0xf2, 0x41, 0x3c, 0x7f, 0x4b, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xf7, 0x8e, 0x02, 0x6f, 0x70, 0x62, 0xbf, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x12, 0x28, 0xfb, 0x20, 0xf9, 0x94, 0x76, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x07, 0x7c, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x9b, 0xa3, 0x93, 0xeb, 0x20, 0x21, 0x30, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x1a, 0xf0, 0x6e, 0x78, 0xf0, 0xe6, 0x20, 0xc6, 0xda, 0xa5, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x06, 0x62, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x1e, 0xc4, 0x61, 0x83, 0x88, 0x71, 0x97, 0x6a, 0x35, 0x88, 0x7a, 0xb7, 0x9c, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa8, 0x77, 0xcb, 0x69, 0x00, 0xaf, 0xa0, 0xa2, 0xa9, 0x16, 0x99, 0x1a, 0x1b, 0x90, 0xa2, 0x21, 0xa1, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0xa2, 0xde, 0x2d, 0x67, 0x83, 0x34, 0x02, 0xa3, 0xd9, 0xa0, 0x2c, 0xc3, 0x5e, 0xc3, 0x9f, 0x4b, 0x1b, 0x14, 0xad, 0x27, 0x1b, 0xbe, 0xa8, 0xd9, 0x50, 0xc7, 0xc3, 0x93, 0x59, 0x66, 0x81, 0x27, 0x2b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x27, 0x2b, 0x1b, 0xe0, 0x25, 0x2b, 0x1b, 0x93, 0xcb, 0x83, 0xa3, 0xdb, 0xf0, 0xf8, 0xc8, 0xc0, 0x93, 0x95, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x18, 0xdb, 0x7a, 0x10, 0xcf, 0xdf, 0x52, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xbd, 0xa3, 0xc0, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x0f, 0x43, 0x2b, 0x6b, 0xdb, 0xe0, 0xb0, 0x32, 0xb7, 0xc1, 0xa9, 0xb9, 0xed, 0x20, 0x65, 0x70, 0x75, 0x83, 0xb5, 0x71, 0x4d, 0xab, 0xc1, 0x71, 0xe0, 0x63, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x90, 0x02, 0x9e, 0xba, 0xc1, 0x99, 0x7f, 0xed, 0xe0, 0xa8, 0x32, 0x77, 0x70, 0x02, 0x67, 0x5b, 0x01, 0x4f, 0x8c, 0x6d, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0x7e, 0xd2, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0x08, 0xe2, 0x97, 0xaa, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0x24, 0x7e, 0xd2, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xbc, 0x58, 0xd9, 0x06, 0x05, 0x6c, 0xfe, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x9f, 0x86, 0xb7, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0x97, 0xe1, 0x1d, 0x9c, 0xc0, 0xd9, 0x3a, 0x88, 0x83, 0x7e, 0xa9, 0x59, 0xe0, 0xcb, 0xdc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xe0, 0xcb, 0xdc, 0x06, 0x78, 0xcb, 0xdc, 0xc6, 0xe4, 0xf2, 0xe0, 0xe8, 0x36, 0x3c, 0x3e, 0x32, 0xf0, 0x65, 0xee, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x8e, 0x7b, 0xa9, 0x0d, 0x7f, 0xd1, 0x6c, 0xf0, 0xde, 0x51, 0xe0, 0x0d, 0x9f, 0xd8, 0x6c, 0x10, 0x9d, 0xf8, 0x52, 0x1b, 0xac, 0x8d, 0x6b, 0xda, 0x20, 0xee, 0xf4, 0xa5, 0x36, 0x38, 0xb1, 0xdf, 0x6c, 0x90, 0xf8, 0x49, 0xbb, 0xe1, 0xdd, 0x9e, 0x0d, 0x22, 0xca, 0x5f, 0x6a, 0x83, 0x22, 0xa7, 0x75, 0x83, 0x78, 0xfd, 0x97, 0x3a, 0x88, 0x83, 0x7e, 0xa9, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0x83, 0x08, 0x0e, 0xcc, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0xe0, 0xc0, 0x9c, 0x06, 0xf0, 0x0a, 0x2a, 0x9a, 0x6a, 0x91, 0xa9, 0xb1, 0x01, 0x99, 0x92, 0xb1, 0xda, 0xf0, 0xf8, 0xc8, 0x06, 0x11, 0x1c, 0x98, 0xb3, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0xf4, 0xce, 0x4b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x2f, 0x8c, 0x6c, 0x3e, 0x28, 0xe7, 0x6c, 0xdb, 0xa0, 0x84, 0xc7, 0x5c, 0xc0, 0x0b, 0x23, 0x9b, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x18, 0x41, 0xd8, 0x69, 0x83, 0x43, 0x6b, 0xd7, 0x1a, 0x1c, 0xc3, 0x0d, 0x0e, 0x0e, 0xaf, 0x72, 0x1b, 0x44, 0xd6, 0xb8, 0x54, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0x1c, 0x33, 0x3c, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x71, 0xc3, 0x30, 0xb5, 0xc1, 0xa1, 0xb5, 0x6b, 0x83, 0x18, 0x68, 0x98, 0xda, 0x60, 0xe9, 0x1a, 0x6a, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0xc4, 0x0d, 0xc3, 0xd4, 0x06, 0x87, 0xd6, 0xae, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x42, 0xf0, 0xe1, 0xe0, 0x74, 0x48, 0xb8, 0xc1, 0x7b, 0x47, 0x81, 0xdb, 0xa0, 0x84, 0xc7, 0x5c, 0x70, 0xfa, 0x20, 0x5a, 0x17, 0xa6, 0xd6, 0xa0, 0x20, 0x8d, 0xdd, 0xa0, 0x58, 0x15, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xc5, 0xbf, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0x20, 0x5a, 0x17, 0xa6, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x0d, 0x5b, 0x69, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0x1d, 0x9f, 0x75, 0x70, 0x74, 0x95, 0x5b, 0xc3, 0x2f, 0x2e, 0x6b, 0x70, 0x0c, 0x37, 0x38, 0x88, 0xb8, 0x8a, 0xa9, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x06, 0x62, 0x83, 0xb8, 0xa0, 0x98, 0x3a, 0x68, 0x68, 0x2d, 0xb9, 0x0d, 0xbf, 0xb8, 0x6c, 0x10, 0x03, 0x0d, 0x53, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0c, 0xc4, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0xe4, 0xb9, 0x54, 0x07, 0x0d, 0xad, 0x25, 0xaf, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xb7, 0xc1, 0x85, 0x91, 0x6d, 0x10, 0x71, 0x15, 0x53, 0x07, 0x31, 0x41, 0x31, 0x55, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x44, 0xeb, 0xc2, 0xd4, 0x86, 0xb7, 0x75, 0x0e, 0xa2, 0x4d, 0x62, 0x6a, 0x0d, 0xce, 0x60, 0x9e, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x10, 0x03, 0xb1, 0x41, 0x0c, 0x64, 0x4c, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0x86, 0x61, 0x6a, 0x83, 0x43, 0x6b, 0xd7, 0x06, 0x05, 0x45, 0xe6, 0x41, 0x4c, 0x50, 0x4c, 0xd5, 0x6a, 0x10, 0xa3, 0x8f, 0x39, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x31, 0xfa, 0x98, 0xd3, 0x00, 0x7e, 0x41, 0x45, 0x53, 0x2d, 0x31, 0x32, 0x38, 0x20, 0x43, 0x4d, 0x41, 0x43, 0x1b, 0x1e, 0x1f, 0xd9, 0x20, 0x46, 0x1f, 0x73, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x45, 0xeb, 0xc9, 0x41, 0x3c, 0x7f, 0x4b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0xef, 0x6d, 0x8c, 0x3e, 0x38, 0xb4, 0xcb, 0x1c, 0x34, 0xcc, 0x80, 0xbc, 0xe1, 0x2f, 0x9a, 0x0d, 0x8e, 0x2d, 0xa5, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0x43, 0x8b, 0x8f, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0x17, 0xc7, 0x11, 0x1e, 0x9c, 0xc0, 0xd9, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x65, 0x61, 0xf1, 0x06, 0x25, 0x3c, 0xe6, 0x02, 0xde, 0xdb, 0x18, 0xdd, 0x06, 0xd1, 0x9a, 0xfe, 0xb4, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0x98, 0x37, 0x99, 0x6a, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x83, 0x23, 0xa3, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6f, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xec, 0x6e, 0x37, 0x28, 0xbc, 0x8c, 0x0f, 0x8e, 0xae, 0x72, 0x87, 0x07, 0x6f, 0xd6, 0xf0, 0x36, 0xeb, 0x86, 0x7f, 0x73, 0x36, 0x28, 0xbc, 0x8c, 0x0f, 0x0f, 0xde, 0xb4, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x72, 0x5a, 0x0f, 0x16, 0x81, 0x9f, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0x02, 0x36, 0x7f, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x45, 0x1a, 0x53, 0x1b, 0x14, 0x5e, 0xc6, 0x07, 0x8b, 0xc0, 0xcf, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0x79, 0x69, 0xf0, 0x06, 0x27, 0xf6, 0x9b, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x78, 0xa1, 0x7a, 0xf0, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xb6, 0xdf, 0x75, 0xda, 0xe0, 0xd0, 0xda, 0x75, 0x50, 0x38, 0xc9, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0x70, 0x88, 0x81, 0x58, 0xc3, 0x25, 0xb5, 0xc6, 0xf3, 0x01, 0x0f, 0x8e, 0x8c, 0xae, 0x0d, 0x82, 0xf4, 0x74, 0x8d, 0x43, 0x07, 0x11, 0x14, 0x33, 0xb5, 0x06, 0x01, 0x1b, 0xb4, 0xe1, 0x92, 0x5a, 0xe3, 0xd0, 0xe1, 0x89, 0xc0, 0xd6, 0x20, 0x8c, 0x80, 0x36, 0x5c, 0x52, 0x6b, 0x3c, 0x3f, 0x3c, 0x11, 0x58, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x5a, 0xd7, 0xa5, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0xc2, 0xdb, 0xe0, 0x56, 0x83, 0x88, 0xc8, 0x97, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x88, 0x7c, 0xa9, 0x06, 0xf0, 0x5b, 0x2b, 0x93, 0x73, 0x2b, 0x63, 0x03, 0x99, 0xa3, 0x0b, 0xa3, 0x2b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x9b, 0xdb, 0x7a, 0xf8, 0xa1, 0x66, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6e, 0x6e, 0xe2, 0xe1, 0x87, 0x9a, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xb9, 0xb9, 0xc9, 0x87, 0x1f, 0x6a, 0xda, 0xa0, 0x94, 0x10, 0x5f, 0xc3, 0x27, 0x36, 0x6b, 0x50, 0x4a, 0x88, 0xaf, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0xf0, 0x67, 0xf2, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0x9f, 0x85, 0x6d, 0x70, 0x58, 0x99, 0x5b, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x07, 0xb3, 0x71, 0x50, 0x50, 0x8a, 0x6f, 0x90, 0x86, 0x87, 0xda, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x29, 0x9a, 0xc6, 0x1b, 0xde, 0xd6, 0xd9, 0x20, 0x45, 0xd3, 0x78, 0xe0, 0xcf, 0xe4, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x65, 0x4e, 0xc0, 0x86, 0xb7, 0x75, 0x36, 0x28, 0x73, 0x02, 0x0e, 0xa2, 0xc5, 0x67, 0x6a, 0x0d, 0x9f, 0xbb, 0x6c, 0x50, 0xd6, 0x52, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0xb2, 0x96, 0xea, 0x20, 0x5a, 0x7c, 0xa6, 0x36, 0x48, 0x83, 0x46, 0x6d, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x01, 0x7f, 0x2c, 0x0d, 0x2e, 0xdc, 0xf0, 0x51, 0xfb, 0x06, 0x01, 0x74, 0xb6, 0x41, 0xea, 0x45, 0xf1, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0xc0, 0xcf, 0xd5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x3c, 0x73, 0x2d, 0x62, 0x6f, 0x78, 0x07, 0x8b, 0xc4, 0x50, 0x57, 0xe0, 0xe5, 0xde, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xe4, 0xde, 0xee, 0x40, 0xe6, 0xd0, 0xd2, 0xcc, 0xe8, 0xe6, 0x36, 0x28, 0x04, 0x53, 0x37, 0x7c, 0xae, 0xb4, 0xe1, 0x11, 0xba, 0x0d, 0xef, 0xd4, 0x6d, 0x90, 0x92, 0xcb, 0xb8, 0x41, 0x94, 0x81, 0x36, 0x35, 0x0b, 0xfc, 0xd8, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x2f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x20, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x07, 0x51, 0x5f, 0x34, 0x35, 0x0b, 0x7c, 0x1a, 0xbe, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xc7, 0x5a, 0x59, 0x1e, 0x48, 0x9a, 0x1b, 0x59, 0x19, 0xde, 0x06, 0x8b, 0x0b, 0x93, 0x36, 0x7c, 0xb9, 0x74, 0xb0, 0x48, 0x0c, 0xf5, 0x70, 0x8a, 0x75, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0x16, 0xf0, 0xe0, 0xca, 0xdc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xc0, 0x83, 0x2b, 0x73, 0x3b, 0x88, 0x02, 0x81, 0xa9, 0x0d, 0x7f, 0xd1, 0xac, 0xe1, 0xdf, 0xf9, 0x35, 0x88, 0xe2, 0xa0, 0xa9, 0xda, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0x16, 0xf8, 0xb9, 0x7a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf8, 0xb9, 0xba, 0x83, 0x98, 0x1e, 0x9a, 0xda, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x07, 0x51, 0x77, 0x99, 0xb3, 0x02, 0x2f, 0xf7, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0x2f, 0xf7, 0x76, 0x10, 0x31, 0x45, 0x53, 0x1b, 0x7e, 0x71, 0xd9, 0xf0, 0xe0, 0xcd, 0x86, 0xc7, 0x64, 0x36, 0x08, 0x58, 0xd6, 0x83, 0x82, 0x52, 0x7c, 0x16, 0xf8, 0xb1, 0x77, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf8, 0xb1, 0xb7, 0x83, 0xd8, 0x40, 0x9a, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0x3c, 0xb2, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x8f, 0x1e, 0x14, 0x50, 0xe4, 0xb3, 0xc0, 0xa7, 0xe1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xc1, 0xa7, 0xe1, 0x1d, 0xc4, 0x9a, 0xd2, 0xd4, 0x06, 0x8b, 0x0b, 0x93, 0x36, 0x7c, 0xb9, 0x74, 0x78, 0x5a, 0xe7, 0x70, 0x8a, 0x75, 0x38, 0xc5, 0x56, 0xc0, 0x9f, 0xab, 0x13, 0x2b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x22, 0x30, 0x6b, 0xaa, 0x01, 0x7c, 0xe6, 0x5a, 0xc4, 0xde, 0xf0, 0x40, 0xee, 0xde, 0xe4, 0xc8, 0x36, 0xfc, 0xa2, 0xb4, 0xe1, 0x6f, 0xa5, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0xa1, 0x66, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xdb, 0xca, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x12, 0xa9, 0x7a, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x1f, 0xee, 0x8d, 0xac, 0x6c, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x53, 0x73, 0xdb, 0xe1, 0xa1, 0x9f, 0x35, 0xfc, 0xa2, 0xb4, 0x41, 0x01, 0x18, 0xbb, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa2, 0xd9, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xfc, 0xe2, 0xb2, 0xe1, 0xe9, 0x9d, 0x83, 0x82, 0x78, 0xfc, 0xf0, 0x16, 0x5a, 0xad, 0x80, 0x07, 0x97, 0xe6, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0x1e, 0x5c, 0x9a, 0xdb, 0x41, 0xa4, 0xd7, 0x4b, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x58, 0x75, 0x9a, 0xda, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0x16, 0xf8, 0xb9, 0x7a, 0xc3, 0xf3, 0x24, 0x1b, 0xc4, 0x01, 0xd4, 0xd4, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0xbf, 0xd7, 0x9c, 0x15, 0x78, 0xb9, 0x77, 0xc3, 0xf3, 0x24, 0x1b, 0x44, 0x88, 0xd4, 0xd4, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x78, 0xb3, 0x41, 0x51, 0x29, 0xbe, 0x41, 0xc0, 0xb2, 0x1e, 0x14, 0xc4, 0xe3, 0xb3, 0xc0, 0x8f, 0xbd, 0x1b, 0x9e, 0x27, 0xd9, 0x20, 0x4e, 0xa9, 0xa6, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x0f, 0xf1, 0x1a, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0x3c, 0x64, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x90, 0xae, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x43, 0xd2, 0x2c, 0xf0, 0x69, 0xf8, 0x86, 0xe7, 0x49, 0x36, 0x88, 0xbe, 0xab, 0xa9, 0x0d, 0x16, 0x17, 0x26, 0x6d, 0xf8, 0x72, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0x9b, 0x9b, 0xdc, 0xe1, 0xa1, 0x9f, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0xad, 0x41, 0x54, 0x78, 0x4d, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x44, 0x85, 0xd7, 0x54, 0x03, 0xf8, 0x97, 0xe1, 0xc1, 0xb1, 0xbd, 0x91, 0x95, 0x81, 0xd0, 0xbd, 0x81, 0x88, 0xb1, 0xbd, 0x8d, 0xad, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xc2, 0xe4, 0x77, 0xc3, 0x5f, 0x34, 0x1b, 0x94, 0x73, 0xb6, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x93, 0x07, 0xf1, 0xb6, 0x04, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xbb, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xe2, 0xdf, 0x83, 0xc2, 0x57, 0x77, 0xc3, 0x57, 0x38, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x1c, 0x42, 0x27, 0x0e, 0xef, 0x05, 0x6d, 0x50, 0xae, 0xcb, 0x6e, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x70, 0x3e, 0x9d, 0xd8, 0xf0, 0x71, 0xd4, 0xc1, 0x21, 0x74, 0x62, 0x0d, 0x8a, 0x7c, 0xd9, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x22, 0x68, 0xdb, 0xa0, 0x5c, 0x97, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd1, 0x66, 0x5d, 0xc3, 0x2f, 0x2e, 0x07, 0x4b, 0x64, 0x58, 0xab, 0x15, 0xf0, 0xdb, 0xc6, 0xde, 0xd8, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0xe9, 0xd3, 0xaf, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x83, 0xa8, 0x31, 0x9a, 0x6a, 0xc3, 0x5f, 0x34, 0x1b, 0x94, 0x73, 0xb6, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x8f, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x07, 0x8b, 0xc4, 0x50, 0xd7, 0xf0, 0xb9, 0xcb, 0xe0, 0xf1, 0xc1, 0x22, 0x31, 0xd4, 0x35, 0x7c, 0xee, 0x32, 0xb8, 0x7c, 0xb0, 0x48, 0x0c, 0x75, 0x0d, 0x9f, 0xbb, 0x0c, 0x3e, 0x1f, 0x2c, 0x12, 0x43, 0x6d, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0x9c, 0xb3, 0xdd, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0xe0, 0xce, 0x06, 0x05, 0x45, 0xe6, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x2e, 0xa9, 0x0d, 0x8a, 0x1a, 0xf1, 0x35, 0x38, 0x28, 0xb1, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x22, 0x75, 0xfc, 0xe0, 0x10, 0xea, 0xd7, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x2e, 0xa9, 0x0d, 0x8a, 0x1a, 0xf1, 0x35, 0x38, 0x6e, 0xb1, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x52, 0x88, 0xfc, 0xe0, 0x10, 0xea, 0xd7, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x2e, 0xa9, 0x0d, 0x8a, 0x1a, 0xf1, 0x35, 0x38, 0x1d, 0xd6, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xbf, 0xb8, 0x1c, 0xc4, 0x9e, 0xd9, 0xd4, 0xc1, 0x21, 0xd4, 0xaf, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x5c, 0x52, 0x1b, 0x14, 0x35, 0xe2, 0x2b, 0xf8, 0x7c, 0xf8, 0x87, 0x67, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x44, 0xb3, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa2, 0x52, 0xfc, 0xa0, 0x20, 0x1e, 0x3f, 0x38, 0x84, 0xfa, 0xb5, 0xc1, 0x92, 0xea, 0xa4, 0x0d, 0x0a, 0xf8, 0xf8, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x8a, 0x6d, 0xe5, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x4a, 0xa4, 0xea, 0x35, 0x38, 0xb1, 0xdf, 0x6c, 0xb0, 0x44, 0x9b, 0x75, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x9c, 0x86, 0x58, 0x0e, 0x5a, 0x1d, 0xe8, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x9c, 0xa9, 0x58, 0x0e, 0x9a, 0x3c, 0x00, 0x5c, 0xc3, 0x2f, 0x2e, 0x1b, 0x1c, 0x01, 0x6b, 0x0e, 0x9e, 0x8a, 0x0b, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0xac, 0x14, 0x4e, 0x1d, 0xa4, 0x52, 0xbe, 0xb5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xa7, 0x21, 0x96, 0x83, 0x54, 0xca, 0xb7, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x99, 0x8a, 0xe5, 0xa0, 0xd5, 0x81, 0xde, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x11, 0xb0, 0xe6, 0xa0, 0xc9, 0x03, 0xc0, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0xe4, 0x31, 0x4e, 0x1d, 0x3c, 0x15, 0x17, 0xa6, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x38, 0x0d, 0xb1, 0x1c, 0x3c, 0x15, 0x17, 0x66, 0x0d, 0xbf, 0xb8, 0x6c, 0x70, 0xa6, 0x62, 0x39, 0x48, 0xa5, 0x7c, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x1c, 0x01, 0x6b, 0x0e, 0x5a, 0x1d, 0xe8, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x44, 0x1e, 0xe3, 0xd4, 0x41, 0x93, 0x07, 0x80, 0xad, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x69, 0x88, 0xe5, 0xa0, 0xc9, 0x03, 0xc0, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x99, 0x8a, 0xe5, 0xe0, 0xa9, 0xb8, 0x30, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x23, 0x60, 0xcd, 0x41, 0x2a, 0xe5, 0xdb, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0xf2, 0x18, 0xa7, 0x0e, 0x5a, 0x1d, 0xe8, 0xad, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0x78, 0x90, 0x9a, 0x80, 0xb9, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x0f, 0x52, 0x13, 0x30, 0x0f, 0x62, 0x10, 0xae, 0x69, 0x83, 0x24, 0x03, 0xc2, 0x0d, 0xd2, 0xd1, 0xa1, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x89, 0x85, 0xc7, 0x87, 0x87, 0x7e, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x89, 0x85, 0xc7, 0x87, 0xb7, 0xd0, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x89, 0x85, 0xc7, 0x87, 0x5f, 0x84, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x89, 0x85, 0xc7, 0x07, 0xa5, 0xba, 0x6c, 0x87, 0x53, 0xac, 0xc3, 0x29, 0xb6, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0x2c, 0xf0, 0x65, 0xf8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xf0, 0x65, 0x78, 0x03, 0xf8, 0xac, 0x95, 0xe5, 0x81, 0x94, 0xe1, 0xc1, 0x85, 0xb9, 0x91, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1e, 0xc4, 0x0c, 0xbd, 0xd4, 0x86, 0xbf, 0x68, 0x36, 0xfc, 0x50, 0xb3, 0xe1, 0x13, 0x9b, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x06, 0x17, 0x0f, 0x4f, 0xeb, 0x6c, 0xf8, 0xda, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x4e, 0x6e, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x0c, 0xfc, 0x5c, 0xdd, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb8, 0x32, 0xb7, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xba, 0xe1, 0x6d, 0x9d, 0x01, 0xcf, 0xcd, 0x6d, 0xad, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x50, 0x46, 0x9f, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xe0, 0xa9, 0x5d, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0x9b, 0x9b, 0xd8, 0x1a, 0x3e, 0x8e, 0x3a, 0x88, 0xd6, 0xb5, 0xa9, 0x36, 0xbc, 0x17, 0xb4, 0x41, 0x29, 0x21, 0xbe, 0x86, 0x4b, 0x6a, 0x83, 0xa2, 0x46, 0x7c, 0x0d, 0xff, 0xf0, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xc3, 0x02, 0xdb, 0x1a, 0x7e, 0x71, 0xd9, 0xe0, 0x28, 0x14, 0x77, 0x50, 0x10, 0x8f, 0x1f, 0xde, 0x42, 0x6b, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0f, 0xde, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xb0, 0xbb, 0xdd, 0xa0, 0x8c, 0x3e, 0xdf, 0x20, 0x76, 0x46, 0xa7, 0x5a, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0xfe, 0xe1, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0xa9, 0x12, 0xb6, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x1e, 0x93, 0x39, 0xfc, 0x22, 0xd4, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x2e, 0xa9, 0x0d, 0x8a, 0x1a, 0xf1, 0x35, 0xfc, 0xc3, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x04, 0x66, 0x4d, 0x75, 0x50, 0x00, 0xf2, 0xb7, 0xe1, 0x92, 0xda, 0xa0, 0xa8, 0x11, 0x5f, 0xc3, 0x3f, 0x3c, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x10, 0x03, 0xb1, 0xe1, 0xe9, 0x9d, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x0a, 0x6e, 0xda, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x9a, 0xcf, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x14, 0x58, 0x0f, 0x22, 0x49, 0x75, 0xaa, 0x83, 0x60, 0x65, 0xad, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x11, 0xd6, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x1b, 0xc5, 0x0d, 0x62, 0x67, 0x74, 0xea, 0xe0, 0xb0, 0x3c, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x38, 0x35, 0xb7, 0x1d, 0xc4, 0x75, 0xea, 0x54, 0x1b, 0xc4, 0x4c, 0xeb, 0xd4, 0x41, 0x62, 0x4b, 0xd5, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x2e, 0xa9, 0x0d, 0x8a, 0x1a, 0xf1, 0x35, 0xfc, 0xc3, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x31, 0x10, 0x1b, 0x9e, 0xde, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x44, 0xb3, 0x1b, 0x1c, 0x16, 0xd8, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x41, 0x24, 0xa9, 0x4e, 0x1d, 0x14, 0xc4, 0xe3, 0x87, 0xb7, 0xd0, 0x6a, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0x3e, 0x0f, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x65, 0x71, 0xf4, 0x06, 0x87, 0x05, 0xb6, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x19, 0x7d, 0x7e, 0x78, 0x0b, 0x6d, 0x0d, 0xbf, 0xb8, 0x1c, 0xc4, 0x20, 0xeb, 0xd4, 0x41, 0x59, 0xe7, 0xd9, 0xc1, 0x71, 0x9e, 0x62, 0x05, 0x3e, 0x0d, 0xdf, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0xe2, 0xf5, 0x6a, 0x6a, 0x00, 0xef, 0xb5, 0xb2, 0x3c, 0x90, 0x32, 0x3c, 0xb8, 0x30, 0x37, 0x32, 0x16, 0x90, 0x34, 0x37, 0xbb, 0x0d, 0xbf, 0x28, 0x6d, 0xf8, 0x72, 0x69, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x79, 0xb1, 0xdd, 0x1a, 0x3e, 0x77, 0x19, 0x5c, 0x3d, 0x58, 0x24, 0x86, 0xba, 0xc1, 0xca, 0x2f, 0xd4, 0x35, 0x7c, 0xee, 0x32, 0xf8, 0xb8, 0xe1, 0x41, 0xc9, 0x0d, 0x16, 0x9e, 0x9e, 0x6f, 0x78, 0x5b, 0x67, 0xc0, 0x83, 0x4b, 0x73, 0x6b, 0xc3, 0x57, 0x38, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x44, 0xeb, 0xda, 0xd4, 0x41, 0x19, 0x7d, 0xbe, 0xe1, 0x69, 0x9d, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x5c, 0x52, 0x1b, 0x14, 0x35, 0xe2, 0x6b, 0xf8, 0x3c, 0x68, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x44, 0xb3, 0x1b, 0x9c, 0x17, 0x68, 0x0e, 0x8e, 0xce, 0x14, 0x6d, 0x50, 0x4a, 0x88, 0xaf, 0xe1, 0x92, 0xda, 0xa0, 0xa8, 0x11, 0x5f, 0xc3, 0xe7, 0x41, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xd8, 0x56, 0xde, 0xe0, 0xb0, 0xc0, 0xb6, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xd1, 0x6d, 0x37, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xb6, 0xbb, 0xa6, 0x36, 0x38, 0x2c, 0xb0, 0x6d, 0x70, 0x6a, 0x6e, 0x3b, 0xbc, 0x85, 0x76, 0xf8, 0x45, 0xa8, 0x36, 0x28, 0x25, 0xc4, 0xd7, 0x70, 0x49, 0x6d, 0x50, 0xd4, 0x88, 0xaf, 0x41, 0xe2, 0x73, 0xd4, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x41, 0xb4, 0xae, 0x4d, 0x1d, 0x94, 0x66, 0xe8, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x1b, 0x14, 0xba, 0xe7, 0x6b, 0x78, 0x70, 0x67, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xb2, 0x38, 0x7a, 0x83, 0xf3, 0x02, 0xcd, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x19, 0x7d, 0xbe, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x38, 0x2f, 0xd0, 0x1c, 0xc4, 0x8b, 0x9b, 0x53, 0x6b, 0xf8, 0xc5, 0xe5, 0x20, 0x95, 0xa8, 0x75, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0xc2, 0x1c, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x38, 0x2f, 0xd0, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x0a, 0xe2, 0xf3, 0x83, 0xa4, 0x00, 0xd6, 0xc3, 0x43, 0x3f, 0xd5, 0xe1, 0x14, 0x5b, 0xe0, 0xc5, 0xca, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xe0, 0xc5, 0xca, 0x06, 0xf0, 0x13, 0x63, 0x7b, 0x1b, 0x5b, 0x03, 0x19, 0x4b, 0x83, 0x43, 0x2b, 0x93, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0x00, 0xa4, 0xb2, 0xe1, 0x79, 0xa6, 0x35, 0xfc, 0xb9, 0x34, 0xf8, 0x78, 0x10, 0xcf, 0xdf, 0x52, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xf7, 0x8e, 0x02, 0x6f, 0xb0, 0xa4, 0x7e, 0x69, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0xe2, 0x2d, 0x74, 0x36, 0x28, 0x25, 0xc4, 0xd7, 0x70, 0x49, 0x6d, 0x50, 0xd4, 0x88, 0xaf, 0xe1, 0xea, 0xda, 0xa0, 0x94, 0x10, 0xdf, 0x70, 0x47, 0x6d, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0xf8, 0x73, 0x61, 0x72, 0xeb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x7c, 0x3c, 0x28, 0xe7, 0x6c, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe4, 0x41, 0x39, 0x67, 0xdb, 0x86, 0xbf, 0x68, 0x36, 0x28, 0xe7, 0x6c, 0x37, 0x28, 0xe1, 0x31, 0x37, 0xfc, 0xc3, 0xb3, 0x41, 0x41, 0x91, 0xb9, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x91, 0x2f, 0xbb, 0x41, 0x78, 0xaa, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x88, 0x81, 0x58, 0xc3, 0xdb, 0x3a, 0x83, 0xa7, 0x87, 0x7f, 0x78, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0x41, 0x91, 0x2f, 0xdb, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xfe, 0xe1, 0xd9, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0xe1, 0x1f, 0x9e, 0x35, 0x28, 0xf2, 0x65, 0x37, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0x50, 0xe4, 0xcb, 0xd6, 0x2c, 0xe0, 0xcf, 0xd5, 0x89, 0xcd, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf0, 0x20, 0x56, 0x9d, 0xa6, 0x0e, 0x8a, 0x2e, 0xdb, 0x0d, 0x7f, 0xd1, 0x6c, 0x50, 0xce, 0xd9, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0xf8, 0x3c, 0x68, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa8, 0x70, 0x9d, 0xda, 0xa0, 0xf8, 0x41, 0x5d, 0xc3, 0xdb, 0x3a, 0x03, 0x3f, 0x57, 0x1f, 0x1e, 0xdc, 0xe9, 0xa0, 0x88, 0xb9, 0x9d, 0x05, 0xfc, 0x39, 0xb9, 0xb7, 0x7b, 0xc3, 0x2f, 0x4a, 0x1b, 0x44, 0x07, 0xf8, 0xd4, 0x86, 0xbf, 0x68, 0x36, 0x28, 0xe7, 0x6c, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0x5f, 0x5c, 0x36, 0x7c, 0x6d, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x27, 0x0f, 0x0a, 0x8a, 0xcc, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xb9, 0xe1, 0x6d, 0x9d, 0x81, 0x97, 0x7b, 0x0f, 0x0f, 0xee, 0xb4, 0xe1, 0x2b, 0x9c, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x4f, 0xef, 0x1c, 0x44, 0x47, 0xe9, 0xd4, 0x06, 0xe5, 0xba, 0xec, 0x06, 0x4b, 0xaa, 0x93, 0x36, 0x38, 0x93, 0xbf, 0x6c, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x6c, 0x2b, 0x6f, 0x50, 0x54, 0x8a, 0x6f, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x22, 0x55, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x68, 0xb3, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x0f, 0xde, 0x1c, 0x9c, 0x64, 0x49, 0xd6, 0xf0, 0x8b, 0xcb, 0x86, 0xc7, 0x64, 0x0e, 0xce, 0x1e, 0x25, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x80, 0x65, 0x3d, 0x38, 0xcc, 0x94, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xbc, 0xad, 0x73, 0xb0, 0xd4, 0xe3, 0xa7, 0x83, 0xb2, 0xce, 0x73, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x68, 0xfd, 0x70, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x9f, 0x87, 0x1f, 0x6a, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x06, 0x45, 0xa5, 0xf8, 0x06, 0x91, 0xbc, 0xe0, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x2a, 0xe7, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x61, 0x77, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x41, 0xf9, 0x53, 0x7b, 0xf8, 0x45, 0x68, 0x83, 0xe8, 0x28, 0x9d, 0xea, 0xf0, 0x16, 0x5a, 0xb3, 0x80, 0x1f, 0xe6, 0xb6, 0x86, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0x57, 0xe0, 0x53, 0x07, 0xe5, 0xd0, 0xef, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xed, 0xae, 0xa9, 0x0d, 0x0e, 0x0b, 0x6c, 0x1b, 0x44, 0x47, 0xe9, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x24, 0x9a, 0xdd, 0xe0, 0xb0, 0xc0, 0xb6, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0xa7, 0xe1, 0x87, 0x07, 0x77, 0x0e, 0x6f, 0xa1, 0x1d, 0x44, 0xb7, 0xfc, 0xd4, 0x41, 0x74, 0xcb, 0x4f, 0x1d, 0x7e, 0x11, 0xea, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe4, 0x86, 0x0f, 0x72, 0x36, 0x3c, 0xad, 0xb3, 0x41, 0x7c, 0x89, 0x4e, 0x1d, 0xc4, 0x4d, 0xf0, 0xd4, 0x1a, 0x3e, 0x77, 0x19, 0xbc, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0xdd, 0x35, 0xb5, 0xc1, 0x61, 0x81, 0x6d, 0x83, 0xe8, 0x28, 0x9d, 0x3a, 0xfc, 0x22, 0xb4, 0x86, 0xcf, 0x5d, 0x06, 0x37, 0x0f, 0x8f, 0xc9, 0xb4, 0x41, 0x29, 0x21, 0xbe, 0x86, 0x4b, 0x6a, 0x83, 0xa2, 0x46, 0x7c, 0x0d, 0x8a, 0x10, 0xe8, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x62, 0xf9, 0x7a, 0xaa, 0x0d, 0xca, 0x09, 0xe8, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xb9, 0xf9, 0xa9, 0x36, 0x28, 0xd7, 0x65, 0x0f, 0xce, 0x2d, 0x0e, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0xb4, 0xae, 0x4d, 0x1d, 0x14, 0x23, 0xb5, 0x6b, 0x50, 0x4a, 0x88, 0xaf, 0xe1, 0x92, 0xda, 0xa0, 0xa8, 0x11, 0x5f, 0x83, 0x22, 0x04, 0x7a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x78, 0xfc, 0x9e, 0xea, 0x20, 0x96, 0x1b, 0x9c, 0xda, 0xa0, 0x94, 0x10, 0x5f, 0xc3, 0x25, 0xb5, 0x41, 0x51, 0x23, 0xbe, 0x06, 0x45, 0x08, 0xf4, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x91, 0x44, 0x3e, 0xd5, 0x41, 0x2c, 0x37, 0x38, 0xb5, 0x41, 0x29, 0x21, 0xbe, 0x86, 0x4b, 0x6a, 0x83, 0xa2, 0x46, 0x7c, 0x0d, 0x8a, 0x10, 0xe8, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xe9, 0xc6, 0x53, 0x1b, 0x94, 0x13, 0xd0, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xc7, 0xde, 0x83, 0x22, 0x5f, 0xb6, 0x36, 0x28, 0x25, 0xc4, 0xd7, 0x70, 0x49, 0x6d, 0x50, 0xd4, 0x88, 0xaf, 0x41, 0x11, 0x02, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0xd1, 0x7f, 0x6a, 0x83, 0x72, 0x02, 0x7a, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x8f, 0xff, 0x53, 0x1b, 0x94, 0xeb, 0xb2, 0x07, 0x69, 0x80, 0x94, 0xb5, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x1d, 0xc4, 0x6e, 0x6d, 0xd3, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0xb1, 0x21, 0x40, 0xb5, 0x41, 0x29, 0x21, 0xbe, 0x41, 0x74, 0x10, 0x50, 0x6d, 0x50, 0x4a, 0x88, 0xaf, 0xe1, 0x92, 0xda, 0xa0, 0xa8, 0x11, 0x5f, 0x83, 0x22, 0x04, 0x7a, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0xa2, 0xff, 0xd4, 0x06, 0xe5, 0x04, 0xf4, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x1e, 0xff, 0xa7, 0x36, 0x28, 0xd7, 0x65, 0x37, 0x88, 0xd6, 0xb5, 0xa9, 0xc3, 0x5b, 0x68, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x6d, 0xe5, 0x0d, 0x0e, 0x0b, 0x6c, 0x07, 0x65, 0xb6, 0xf4, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0xab, 0x41, 0xbc, 0x51, 0xe9, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0x1b, 0x95, 0x4e, 0x03, 0x78, 0x05, 0x15, 0x4d, 0xb5, 0xc4, 0xe4, 0xc8, 0x80, 0x4c, 0xc9, 0x58, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0x78, 0xa3, 0xd2, 0xd9, 0xf0, 0x8b, 0xd2, 0x06, 0x51, 0xa2, 0x30, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xb4, 0x2e, 0x4c, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x44, 0x02, 0xeb, 0x74, 0x10, 0xbd, 0x0c, 0x53, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0x1c, 0x33, 0x3c, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x51, 0x50, 0x41, 0x75, 0x10, 0xdb, 0x0e, 0x53, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x44, 0x41, 0x05, 0xd5, 0x06, 0x87, 0xd6, 0xae, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x88, 0x87, 0x98, 0xda, 0xa0, 0x84, 0xc7, 0xdc, 0x20, 0xda, 0x24, 0xa6, 0x36, 0x88, 0x6c, 0x89, 0xa9, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0x98, 0xde, 0x98, 0x5a, 0x83, 0x33, 0x98, 0xe7, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc4, 0x40, 0x6c, 0x10, 0x03, 0x19, 0x53, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x28, 0xa8, 0xa0, 0x3a, 0x88, 0x16, 0x8f, 0xa9, 0x3a, 0x9c, 0x62, 0xd5, 0x1a, 0x44, 0x5a, 0x9a, 0xce, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xa4, 0xa5, 0xe9, 0x34, 0x80, 0x57, 0x50, 0xd1, 0x54, 0x4b, 0x4c, 0x8e, 0x0c, 0xc8, 0x90, 0xd0, 0xd0, 0x06, 0x65, 0x97, 0xec, 0x06, 0x91, 0x96, 0xa6, 0xb3, 0x41, 0x1a, 0x81, 0xd1, 0x6c, 0x50, 0x96, 0x61, 0xaf, 0xe1, 0x73, 0xa5, 0x0d, 0xa2, 0x77, 0x5e, 0x6a, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x70, 0x72, 0xf6, 0x41, 0x3c, 0x7f, 0x4b, 0x35, 0xcb, 0x2c, 0xf0, 0x64, 0xe5, 0x86, 0xe7, 0x49, 0x36, 0x88, 0x9f, 0x7a, 0xa9, 0x0d, 0x8f, 0x8f, 0x0c, 0x3c, 0x59, 0xb9, 0xe1, 0x17, 0xa5, 0x0d, 0x9a, 0xec, 0x3c, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0xc7, 0x96, 0xd2, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x6f, 0x8c, 0x6e, 0xde, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0x60, 0x19, 0xf8, 0xf9, 0xe1, 0xc1, 0x9b, 0x35, 0xfc, 0x45, 0xb3, 0x41, 0x39, 0x67, 0xbb, 0xc1, 0xd1, 0x75, 0xf0, 0xa0, 0x70, 0x92, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x85, 0xc5, 0xf2, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x20, 0x5a, 0xde, 0xe0, 0xbc, 0x40, 0x73, 0xb0, 0x08, 0xfc, 0xbc, 0x0d, 0x4a, 0x7b, 0xcb, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xc1, 0xd1, 0xcd, 0x07, 0xe5, 0x9c, 0xed, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xc5, 0xb6, 0xf2, 0x06, 0xe7, 0x05, 0x9a, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x72, 0xce, 0x76, 0x83, 0x12, 0x1e, 0x73, 0x01, 0x6f, 0x8c, 0x6e, 0x6e, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x70, 0x74, 0x73, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x1e, 0x1c, 0x9b, 0xbb, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x31, 0x10, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x83, 0x93, 0xb3, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xf0, 0x58, 0xfa, 0xe0, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x04, 0xbc, 0xea, 0x74, 0x70, 0x02, 0x67, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xa7, 0x07, 0x11, 0x9c, 0x42, 0x55, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0xc4, 0x91, 0x0a, 0xd5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x07, 0xc7, 0xe6, 0xb6, 0x41, 0x44, 0xa8, 0x50, 0xb5, 0x06, 0x11, 0x9c, 0x42, 0xb5, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x83, 0x08, 0x4e, 0xa1, 0x5a, 0x83, 0xe8, 0x5f, 0xa1, 0x3a, 0x88, 0xee, 0x16, 0xaa, 0x66, 0x81, 0x2f, 0x73, 0x37, 0x3c, 0x4f, 0xb2, 0x41, 0x6c, 0x05, 0x4c, 0x6d, 0x78, 0x7c, 0x64, 0xe0, 0xcb, 0xdc, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0x64, 0xe7, 0xf1, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xb6, 0x94, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x70, 0x74, 0xf3, 0x41, 0xe4, 0x8e, 0x50, 0x6d, 0x50, 0xda, 0x5b, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0x8c, 0x6e, 0x3e, 0x28, 0xe7, 0x6c, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0xb6, 0x95, 0x37, 0x38, 0x2f, 0xd0, 0x6c, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x94, 0x73, 0xb6, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xc4, 0x91, 0x0a, 0xd5, 0x1a, 0xde, 0xd6, 0x39, 0x88, 0xe0, 0x14, 0xaa, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x6f, 0x0c, 0x0e, 0xdd, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0xbc, 0x50, 0x3d, 0xf8, 0x20, 0x22, 0x5a, 0xa8, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x87, 0x18, 0x88, 0x0d, 0xe2, 0x78, 0x85, 0x6a, 0x0d, 0x6f, 0xeb, 0x0c, 0x9e, 0x1e, 0xc4, 0x91, 0x0a, 0x55, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x10, 0xc1, 0x29, 0x54, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xde, 0x18, 0x1c, 0xda, 0x06, 0x31, 0x7e, 0x43, 0xd5, 0x1a, 0xc4, 0x91, 0x0a, 0xd5, 0x86, 0xb7, 0x75, 0x06, 0xa7, 0x0f, 0xe2, 0x48, 0x85, 0x6a, 0x0d, 0xa2, 0x7f, 0x85, 0xea, 0x20, 0xfa, 0x78, 0xa8, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x35, 0x88, 0x3e, 0x41, 0x9d, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe8, 0x13, 0xd4, 0x69, 0x00, 0xaf, 0xa0, 0xa2, 0xa9, 0x16, 0x99, 0x1a, 0x1b, 0x90, 0xa9, 0x24, 0xab, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0xa2, 0x4f, 0x50, 0x67, 0x83, 0x34, 0x02, 0xa3, 0xd9, 0xa0, 0x2c, 0xc3, 0x5e, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xa2, 0xf5, 0x64, 0xc3, 0x17, 0x35, 0x1b, 0xea, 0x78, 0xb8, 0xb2, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xbb, 0xb2, 0xf1, 0xa0, 0x9c, 0xb3, 0x6d, 0x96, 0x59, 0xe0, 0xc9, 0xca, 0x0d, 0xcf, 0x93, 0x6c, 0x10, 0x3f, 0xf5, 0x52, 0x1b, 0x1e, 0x1f, 0x19, 0x78, 0xb2, 0x72, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x7c, 0x9a, 0x7d, 0x10, 0xcf, 0xdf, 0x52, 0x1b, 0x9c, 0x7d, 0xd8, 0x0e, 0x1a, 0x66, 0x40, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0xcb, 0xd5, 0x52, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0x40, 0xaf, 0xc5, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xe2, 0xe3, 0x6e, 0x70, 0x58, 0x99, 0x3b, 0x38, 0x81, 0xb3, 0xad, 0xe1, 0x73, 0x97, 0x81, 0x5e, 0x93, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0xc4, 0x3d, 0x88, 0x8b, 0x24, 0xaa, 0x36, 0x58, 0xe9, 0xe2, 0xb4, 0x80, 0x87, 0x96, 0x26, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x7a, 0xc7, 0xad, 0xe1, 0x6d, 0x9d, 0x81, 0x4f, 0xb3, 0x5b, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0xc4, 0x34, 0x9c, 0x4e, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x1e, 0x1c, 0x9b, 0xbb, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x78, 0x2c, 0x7d, 0xf0, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x62, 0x4c, 0x75, 0x5a, 0xc3, 0xdb, 0x3a, 0x03, 0xbd, 0x26, 0xdb, 0xe0, 0xbc, 0x40, 0xb3, 0x41, 0xe1, 0x65, 0xbc, 0x86, 0xb7, 0x75, 0x0e, 0xe2, 0x61, 0x89, 0xaa, 0x83, 0x45, 0xe0, 0xe7, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xf8, 0x37, 0x67, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x22, 0x38, 0x30, 0xa7, 0x0d, 0x4e, 0xab, 0x6f, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x13, 0x41, 0xdb, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xec, 0xca, 0xc6, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0xb4, 0x59, 0xd7, 0xe0, 0xe8, 0x3a, 0xb8, 0x41, 0xa4, 0xbd, 0x50, 0x55, 0x1d, 0xc4, 0xf6, 0x12, 0xd5, 0x06, 0x05, 0x45, 0xe6, 0x06, 0xc7, 0x70, 0x83, 0x83, 0x48, 0x7b, 0xa1, 0x9a, 0x05, 0xbe, 0xcc, 0xdd, 0xf0, 0x3c, 0xc9, 0x06, 0xb1, 0x15, 0x30, 0xb5, 0xe1, 0xf1, 0x91, 0x81, 0x2f, 0x73, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0x93, 0x9d, 0xc7, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xe0, 0x58, 0x34, 0xba, 0xc1, 0x7b, 0x47, 0x81, 0x37, 0x28, 0xb3, 0x74, 0x0f, 0x0e, 0x2d, 0xa5, 0x1b, 0x3e, 0xb1, 0xd9, 0x20, 0xfe, 0x8f, 0xa8, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3e, 0xcd, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0x17, 0x45, 0xb5, 0xc1, 0x69, 0xf5, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x22, 0x68, 0xdb, 0x20, 0x86, 0xa5, 0xa8, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0xb4, 0x59, 0xd7, 0xe0, 0xe8, 0x3a, 0x78, 0xb0, 0x08, 0xfc, 0xbc, 0xda, 0x60, 0xa5, 0x8b, 0xd3, 0x06, 0xf1, 0xb0, 0x44, 0xb5, 0x41, 0x7c, 0x2d, 0x51, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0xb8, 0x49, 0x7f, 0xda, 0xe0, 0x9c, 0xbf, 0xb4, 0x41, 0x6c, 0x2f, 0x51, 0x6d, 0x50, 0x78, 0x19, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x5e, 0xa8, 0x1e, 0x7c, 0x10, 0x7f, 0x4e, 0x54, 0x07, 0x8b, 0xc0, 0xcf, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x6b, 0x10, 0xf5, 0x89, 0x3a, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x51, 0x9f, 0xa8, 0xd3, 0x00, 0x5e, 0x41, 0x45, 0x53, 0x2d, 0x31, 0x32, 0x38, 0x20, 0x45, 0x43, 0x42, 0x1b, 0x94, 0x5d, 0xb2, 0x1b, 0x44, 0x7d, 0xa2, 0xce, 0x06, 0x69, 0x04, 0x46, 0xb3, 0x41, 0x59, 0x86, 0xbd, 0x41, 0xa4, 0x88, 0x4c, 0xcd, 0x32, 0x0b, 0x3c, 0x59, 0xb9, 0xe1, 0x79, 0x92, 0x0d, 0xe2, 0xa7, 0x5e, 0x6a, 0xc3, 0xe3, 0x23, 0x03, 0x4f, 0x56, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0xe8, 0xb8, 0x97, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xef, 0x1d, 0x05, 0xde, 0xf0, 0x89, 0xcd, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xae, 0xf1, 0xa5, 0x36, 0x38, 0x35, 0xb7, 0x6d, 0x70, 0x6a, 0x6e, 0x3b, 0x48, 0x77, 0xad, 0xda, 0x60, 0x6d, 0x5c, 0xd3, 0x6a, 0x70, 0x1c, 0xf8, 0xd8, 0xf0, 0x6e, 0xcf, 0x06, 0x89, 0x9f, 0xb4, 0x07, 0x27, 0x70, 0xb6, 0x83, 0xc8, 0xe1, 0x97, 0x3a, 0x88, 0xc8, 0x7e, 0xa9, 0x59, 0xe0, 0xcb, 0xdc, 0x0d, 0xcf, 0x93, 0x6c, 0x10, 0x5b, 0x01, 0x53, 0x1b, 0x1e, 0x1f, 0x19, 0xf8, 0x32, 0x77, 0xc3, 0x2f, 0x4a, 0x1b, 0x44, 0xc7, 0xbd, 0xd4, 0x86, 0xbf, 0x68, 0x36, 0x78, 0xef, 0x28, 0xf0, 0x86, 0x4f, 0x6c, 0x36, 0x88, 0x31, 0x33, 0xaa, 0x0d, 0xd6, 0xc6, 0x35, 0x6d, 0x10, 0xf3, 0x67, 0x54, 0x07, 0x51, 0x51, 0x30, 0x75, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0xc0, 0x9f, 0xab, 0x13, 0x1b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x22, 0xb2, 0x8d, 0xaa, 0x01, 0xbc, 0x83, 0x8a, 0xa6, 0x5a, 0x64, 0x6a, 0x6c, 0x40, 0xe6, 0xea, 0xc4, 0xd6, 0xca, 0xf2, 0xe6, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xf4, 0xce, 0x4b, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0xce, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x5e, 0xa8, 0x1e, 0xbc, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x7a, 0xb7, 0x9c, 0x0e, 0x4e, 0xe0, 0x6c, 0x07, 0x85, 0x93, 0xec, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x40, 0xaf, 0xc5, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3d, 0x19, 0x53, 0x07, 0x09, 0x21, 0xb6, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0xbd, 0x26, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xf4, 0x64, 0x4c, 0x1d, 0x9c, 0x0c, 0xe0, 0x36, 0xfc, 0x45, 0xb3, 0x86, 0xcf, 0x95, 0x36, 0x38, 0xb6, 0x94, 0x1e, 0x1c, 0x5a, 0x4a, 0x37, 0xfc, 0xe2, 0xb2, 0xc1, 0x69, 0xf5, 0x6d, 0x83, 0x68, 0x78, 0xa2, 0x6a, 0x35, 0x88, 0x18, 0x53, 0x9d, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x88, 0x31, 0xd5, 0x69, 0x00, 0xaf, 0xa0, 0xa2, 0xa9, 0x16, 0x99, 0x1a, 0x1b, 0x90, 0x21, 0x2a, 0xa9, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0x22, 0xc6, 0x54, 0x67, 0x83, 0x34, 0x02, 0xa3, 0xd9, 0xa0, 0x2c, 0xc3, 0x5e, 0xc3, 0xe7, 0x4a, 0x1b, 0x44, 0xef, 0xbc, 0xd4, 0x06, 0x11, 0xeb, 0x2d, 0xb5, 0xc1, 0xd9, 0x87, 0xed, 0x20, 0x9a, 0xbe, 0xa5, 0x66, 0x99, 0x05, 0x9e, 0xac, 0xdc, 0xf0, 0x3c, 0xc9, 0x06, 0xf1, 0x53, 0x2f, 0x75, 0xf0, 0x0c, 0xf5, 0xe0, 0x59, 0xe0, 0xcb, 0xdc, 0x0d, 0xcf, 0x93, 0x6c, 0x10, 0x5b, 0x01, 0x53, 0x1b, 0x1e, 0x1f, 0x19, 0xf8, 0x32, 0x77, 0xc3, 0x2f, 0x4a, 0x1b, 0x34, 0xd9, 0x79, 0xbc, 0xe1, 0x2f, 0x9a, 0x0d, 0x8e, 0x2d, 0xa5, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0x44, 0x82, 0xc0, 0xd4, 0x06, 0x11, 0x14, 0x47, 0xb5, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0xc1, 0xc9, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x0a, 0xac, 0x07, 0x51, 0xa0, 0x32, 0xb5, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x8b, 0xe3, 0x1c, 0x9a, 0x1f, 0x74, 0x10, 0x05, 0x2a, 0x53, 0x87, 0x07, 0x6f, 0x36, 0x3c, 0x78, 0x73, 0x78, 0x4c, 0xa6, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x1a, 0xb6, 0xd2, 0x06, 0x85, 0x97, 0xf1, 0x06, 0xd1, 0x9a, 0xfe, 0xd4, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x87, 0x18, 0x88, 0x0d, 0x96, 0x81, 0x9f, 0x6f, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0xe2, 0xe3, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x6e, 0x70, 0x78, 0x95, 0x3b, 0x38, 0xb4, 0xbd, 0x1d, 0x14, 0x5d, 0xc6, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x6c, 0x2b, 0x6f, 0x70, 0x5e, 0xa0, 0xd9, 0xa0, 0xb4, 0xb7, 0x5c, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0x94, 0xf3, 0xe4, 0xe0, 0xe0, 0x51, 0xba, 0xe1, 0x2b, 0x9c, 0x0d, 0x5f, 0xbf, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0x27, 0x51, 0xa2, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x70, 0x6c, 0x7b, 0x3b, 0x3c, 0x78, 0xb3, 0x41, 0xec, 0x2a, 0x52, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xf0, 0x24, 0x4a, 0x94, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x73, 0x10, 0x05, 0x02, 0x53, 0x07, 0xb1, 0x23, 0x2e, 0xb5, 0x41, 0xec, 0x2a, 0x52, 0xb5, 0x06, 0x51, 0x27, 0x2e, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xa5, 0xb9, 0x8d, 0x1d, 0xc4, 0x7f, 0xb8, 0xd4, 0x1a, 0x9c, 0xe8, 0xde, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x35, 0x9f, 0x83, 0x43, 0xdb, 0x5b, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x35, 0x88, 0x80, 0x57, 0x9d, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x08, 0x78, 0xd5, 0x69, 0x00, 0xaf, 0xa0, 0xa2, 0xa9, 0x96, 0x98, 0x1c, 0x19, 0x90, 0xa2, 0x21, 0xa1, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0x22, 0xe0, 0x55, 0x67, 0x83, 0x34, 0x02, 0xa3, 0xd9, 0xa0, 0x2c, 0xc3, 0xde, 0x20, 0x7a, 0xe7, 0xa5, 0x66, 0x99, 0x05, 0x9e, 0xac, 0xdc, 0xf0, 0x3c, 0xc9, 0x06, 0xf1, 0x53, 0x2f, 0xb5, 0xe1, 0xf1, 0x91, 0x81, 0x27, 0x2b, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0x74, 0xdc, 0x4b, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xf7, 0x8e, 0x02, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xd7, 0xf8, 0x52, 0x1b, 0x1c, 0x97, 0x67, 0x36, 0x38, 0x35, 0xb7, 0x1d, 0xb4, 0x8e, 0xcb, 0xbc, 0xc1, 0xda, 0xb8, 0xa6, 0xd5, 0xe0, 0x38, 0xf0, 0xb1, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7c, 0xdc, 0x0d, 0x8e, 0xcb, 0x33, 0x1b, 0x44, 0xaf, 0xbe, 0x54, 0x07, 0x91, 0xc3, 0x2f, 0x75, 0x10, 0x91, 0xfd, 0x52, 0xb3, 0xc0, 0x97, 0xb9, 0x1b, 0x9e, 0x27, 0xd9, 0x20, 0xb6, 0x02, 0xa6, 0x36, 0x3c, 0x3e, 0x32, 0xf0, 0x65, 0xee, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x8e, 0x7b, 0xa9, 0x0d, 0x7f, 0xd1, 0x6c, 0xf0, 0xde, 0x51, 0xe0, 0x0d, 0x9f, 0xd8, 0x6c, 0x10, 0x61, 0x97, 0x54, 0x1b, 0xac, 0x8d, 0x6b, 0xda, 0x20, 0xea, 0x31, 0xa9, 0x0e, 0xa2, 0xa2, 0x60, 0xea, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xd5, 0xe0, 0x51, 0xb0, 0x7c, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x8f, 0x82, 0xe5, 0x6b, 0x00, 0xef, 0xa0, 0xa2, 0xa9, 0x96, 0x18, 0x19, 0x1c, 0x90, 0xb9, 0x3a, 0xb1, 0xb5, 0xb2, 0xbc, 0xb9, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x29, 0x22, 0x53, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xb3, 0x1b, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x17, 0xaa, 0x07, 0xaf, 0xe1, 0x6d, 0x9d, 0x0d, 0xa2, 0x3e, 0x51, 0xa7, 0x83, 0x13, 0x38, 0xdb, 0x41, 0xe1, 0x24, 0x7b, 0x10, 0xcf, 0x72, 0x54, 0x87, 0x53, 0xac, 0x35, 0x88, 0x3f, 0x8d, 0xa9, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xbd, 0x8d, 0xd1, 0x87, 0x1f, 0x6a, 0x0e, 0x1a, 0x66, 0x40, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0xc7, 0x96, 0xd2, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x8e, 0xaa, 0x6c, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xec, 0x6e, 0xd7, 0xf0, 0xb6, 0xce, 0x41, 0xcc, 0x9b, 0x4c, 0x1d, 0x1c, 0x5d, 0xe5, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x38, 0x08, 0xb5, 0x1d, 0x1e, 0xbc, 0x59, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0x44, 0xc1, 0xac, 0xce, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x45, 0xa5, 0xf8, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x06, 0xa7, 0xfb, 0xb7, 0x0d, 0x0e, 0x42, 0x6d, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc4, 0x40, 0xac, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x83, 0x00, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x03, 0xde, 0x83, 0x88, 0x45, 0x7f, 0xaa, 0xd5, 0x20, 0x02, 0x78, 0x75, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x22, 0x80, 0x57, 0xa7, 0x01, 0xbc, 0x82, 0x8a, 0xa6, 0x5a, 0x62, 0x72, 0x64, 0x40, 0x86, 0xa8, 0xa4, 0x36, 0x28, 0xbb, 0x64, 0x37, 0x88, 0x00, 0x5e, 0x9d, 0x0d, 0xd2, 0x08, 0x8c, 0x66, 0x83, 0xb2, 0x0c, 0x7b, 0x83, 0x68, 0xd4, 0xa3, 0x9a, 0x65, 0x36, 0x88, 0x02, 0x3e, 0xaa, 0x59, 0xe0, 0xcb, 0xdc, 0x0d, 0x8f, 0x8f, 0x0c, 0x7c, 0x99, 0xbb, 0xe1, 0x17, 0xa5, 0x0d, 0x9a, 0xec, 0x3c, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0xc7, 0x96, 0xd2, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x22, 0x41, 0x60, 0x6a, 0x83, 0x98, 0xca, 0xa1, 0x3a, 0x88, 0xfd, 0x3f, 0xaa, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0x83, 0x88, 0x04, 0xd6, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x48, 0x60, 0x9d, 0x06, 0xf0, 0x0b, 0x2a, 0x9a, 0x6a, 0x89, 0xc9, 0x91, 0x01, 0x19, 0x6a, 0x0a, 0x1a, 0xda, 0xf0, 0xf8, 0xc8, 0x06, 0x11, 0x09, 0xac, 0xb3, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0xf4, 0xce, 0x4b, 0x1d, 0xc4, 0xb9, 0xc8, 0xd4, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xb6, 0x94, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x2d, 0x3e, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xfc, 0xb9, 0x3a, 0x31, 0xb1, 0x83, 0x13, 0x38, 0xdb, 0x41, 0xd4, 0x98, 0x4c, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0x38, 0x43, 0x99, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0x79, 0x69, 0xf0, 0x06, 0x27, 0xf6, 0x9b, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x78, 0xa1, 0x7a, 0xf0, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xd2, 0xd2, 0x74, 0x3a, 0x88, 0xf4, 0x97, 0xa9, 0x83, 0x38, 0x83, 0x99, 0x3a, 0x88, 0xe9, 0x99, 0xa9, 0xc3, 0x29, 0xd6, 0x1a, 0xc4, 0x42, 0xb2, 0xce, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x2c, 0x24, 0xeb, 0x34, 0x80, 0x57, 0x50, 0xd1, 0x54, 0x4b, 0x8c, 0x0c, 0x0e, 0xc8, 0x94, 0x8c, 0xd5, 0x86, 0xc7, 0x47, 0x36, 0x88, 0x85, 0x64, 0x9d, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x22, 0x45, 0x64, 0xea, 0x20, 0x4e, 0x15, 0xa6, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x88, 0xd6, 0x85, 0xa9, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xd1, 0xc7, 0x9c, 0x0e, 0xa2, 0x97, 0x61, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x83, 0x63, 0x86, 0xe7, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x7e, 0x86, 0xa9, 0x0e, 0x62, 0xdb, 0x61, 0x6a, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xf8, 0x19, 0xa6, 0xda, 0xe0, 0xd0, 0xda, 0xb5, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x10, 0xf1, 0x10, 0x53, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x44, 0x9b, 0xc4, 0xd4, 0x06, 0x91, 0x2d, 0x31, 0xb5, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0x10, 0xd3, 0x1b, 0x53, 0x6b, 0x70, 0x06, 0xf3, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x87, 0x18, 0x88, 0x0d, 0x62, 0x20, 0x63, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3f, 0xc3, 0x54, 0x07, 0xd1, 0xe2, 0x31, 0x55, 0xab, 0x41, 0x8c, 0x59, 0xeb, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0x98, 0xb5, 0x4e, 0x03, 0x78, 0x05, 0x15, 0x4d, 0xb5, 0xc8, 0xd4, 0xd8, 0x80, 0x0c, 0x09, 0x0d, 0x6d, 0x50, 0x76, 0xc9, 0x6e, 0x10, 0x63, 0xd6, 0x3a, 0x1b, 0xa4, 0x11, 0x18, 0xcd, 0x06, 0x65, 0x19, 0xf6, 0x06, 0xb1, 0xf7, 0x41, 0x35, 0xcb, 0x2c, 0xf0, 0x64, 0xe5, 0x86, 0xe7, 0x49, 0x36, 0x88, 0x9f, 0x7a, 0xa9, 0x0d, 0x8f, 0x8f, 0x0c, 0x3c, 0x59, 0xb9, 0xe1, 0x17, 0xa5, 0x0d, 0x9a, 0xec, 0x3c, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0xc7, 0x96, 0xd2, 0x0d, 0x9f, 0xd8, 0x6c, 0x10, 0x3b, 0x23, 0x54, 0x1b, 0x94, 0xf6, 0x96, 0x1b, 0x44, 0xd5, 0x09, 0xd5, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xc5, 0xb6, 0xf2, 0x06, 0xe7, 0x05, 0x9a, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x72, 0xce, 0x76, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x08, 0x4e, 0xa1, 0xda, 0x20, 0x22, 0x54, 0xa8, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0x38, 0x36, 0x77, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x62, 0x20, 0x36, 0x88, 0xe3, 0x15, 0xaa, 0x35, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8f, 0xa5, 0x0f, 0x3e, 0x88, 0xe5, 0x38, 0xaa, 0x83, 0xc8, 0x6e, 0xa1, 0xea, 0x20, 0x06, 0x5d, 0xa8, 0x66, 0x81, 0x2f, 0x73, 0x37, 0x3c, 0x4f, 0xb2, 0x41, 0x6c, 0x05, 0x4c, 0x6d, 0x78, 0x7c, 0x64, 0xe0, 0xcb, 0xdc, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0x64, 0xe7, 0xf1, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xb6, 0x94, 0x6e, 0xf8, 0xc4, 0x66, 0x83, 0x08, 0xa1, 0xa1, 0xda, 0xa0, 0xb4, 0xb7, 0xdc, 0x20, 0x56, 0x6a, 0xa8, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0xb6, 0x95, 0x37, 0x38, 0x2f, 0xd0, 0x6c, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x1b, 0x94, 0x73, 0xb6, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xc4, 0x91, 0x0a, 0xd5, 0x06, 0x31, 0x7e, 0x43, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0x8d, 0xc1, 0xa1, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x82, 0xe2, 0xa8, 0x0e, 0xa2, 0x44, 0x87, 0xea, 0x20, 0x2e, 0x77, 0xa8, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x9b, 0x35, 0x88, 0x3e, 0x71, 0x9d, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe8, 0x13, 0xd7, 0x69, 0x00, 0xaf, 0xa0, 0xa2, 0xa9, 0x96, 0x98, 0x1c, 0x19, 0x90, 0xa9, 0x24, 0xab, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0xa2, 0x4f, 0x5c, 0x67, 0x83, 0x34, 0x02, 0xa3, 0xd9, 0xa0, 0x2c, 0xc3, 0xde, 0x20, 0xda, 0x84, 0xa8, 0x66, 0x99, 0x05, 0x9e, 0xac, 0xdc, 0xf0, 0x3c, 0xc9, 0x06, 0xf1, 0x53, 0x2f, 0xb5, 0xe1, 0xf1, 0x91, 0x81, 0x27, 0x2b, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0x5c, 0x17, 0x51, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xe5, 0x6a, 0xa9, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0xf8, 0xdc, 0x65, 0xa0, 0xd7, 0xe2, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xf1, 0x71, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xc7, 0xe5, 0x99, 0x83, 0x82, 0x52, 0xfc, 0xe0, 0x04, 0xce, 0xb6, 0x86, 0xcf, 0x5d, 0x06, 0x7a, 0x4d, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x22, 0x13, 0xf7, 0x20, 0x4a, 0xca, 0xa9, 0xda, 0x60, 0xa5, 0x8b, 0xd3, 0x06, 0xf1, 0xb0, 0x44, 0xb5, 0x41, 0x7c, 0x2d, 0x51, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x70, 0x6c, 0xee, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0xb1, 0xf4, 0xc1, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x08, 0xe0, 0xd5, 0xe9, 0x20, 0x12, 0x9e, 0xa8, 0x0e, 0x16, 0x81, 0x9f, 0x6f, 0x50, 0xec, 0x68, 0xae, 0xe1, 0xdf, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x37, 0x2a, 0x9d, 0x0e, 0x22, 0x40, 0x8a, 0xea, 0x20, 0xb6, 0x97, 0xa8, 0x0e, 0xe2, 0x95, 0x8a, 0x6a, 0x16, 0xf8, 0x32, 0x77, 0xc3, 0xf3, 0x24, 0x1b, 0xc4, 0x56, 0xc0, 0xd4, 0x86, 0xc7, 0x47, 0x06, 0xbe, 0xcc, 0xdd, 0xf0, 0x8b, 0xd2, 0x06, 0x4d, 0x76, 0x1e, 0x6f, 0xf8, 0x8b, 0x66, 0x83, 0xe8, 0xba, 0xa2, 0xda, 0xf0, 0x89, 0xcd, 0x06, 0xd1, 0x40, 0x4e, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf0, 0x69, 0xf6, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xb7, 0x75, 0xaa, 0x83, 0x58, 0xd2, 0xa2, 0xda, 0x60, 0xa5, 0x8b, 0xd3, 0x06, 0xf1, 0xb0, 0x44, 0xb5, 0x41, 0x7c, 0x2d, 0x51, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0xb8, 0x49, 0x7f, 0xda, 0xe0, 0x9c, 0xbf, 0xb4, 0x41, 0x6c, 0x2f, 0x51, 0x6d, 0x50, 0x78, 0x19, 0x6f, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x5e, 0xa8, 0x1e, 0x7c, 0x10, 0xa3, 0xe9, 0x54, 0x07, 0x8b, 0xc0, 0xcf, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x6b, 0x10, 0xdb, 0xef, 0x3a, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xb1, 0xfd, 0xae, 0xd3, 0x00, 0x5e, 0x41, 0x45, 0x53, 0x2d, 0x31, 0x32, 0x38, 0x20, 0x43, 0x42, 0x43, 0x1b, 0x94, 0x5d, 0xb2, 0x1b, 0xc4, 0xf6, 0xbb, 0xce, 0x06, 0x69, 0x04, 0x46, 0xb3, 0x41, 0x59, 0x86, 0xbd, 0x86, 0xcf, 0x95, 0x36, 0x88, 0x14, 0x91, 0xa9, 0x83, 0xe8, 0xff, 0xa0, 0x9a, 0x65, 0x16, 0x78, 0xb2, 0x72, 0xc3, 0xf3, 0x24, 0x1b, 0xc4, 0x4f, 0xbd, 0xd4, 0x86, 0xc7, 0x47, 0x06, 0x9e, 0xac, 0xdc, 0xf0, 0x8b, 0xd2, 0x06, 0x4d, 0x76, 0x1e, 0x6f, 0xf8, 0x8b, 0x66, 0x83, 0x63, 0x4b, 0xe9, 0x86, 0x4f, 0x6c, 0x36, 0x88, 0x9d, 0x11, 0xaa, 0x0d, 0x4a, 0x7b, 0xcb, 0x0d, 0xa2, 0xea, 0x84, 0x6a, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x62, 0x5b, 0x79, 0x83, 0xf3, 0x02, 0xcd, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x39, 0x67, 0xbb, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x04, 0xa7, 0x50, 0x6d, 0x10, 0x11, 0x2a, 0x54, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x1e, 0x1c, 0x9b, 0xbb, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x31, 0x10, 0x1b, 0xc4, 0xf1, 0x0a, 0xd5, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xc7, 0xd2, 0x07, 0x1f, 0xc4, 0xb9, 0x28, 0xd5, 0x41, 0x64, 0xb7, 0x50, 0x75, 0x10, 0x83, 0x2e, 0x54, 0xb3, 0xc0, 0x97, 0xb9, 0x1b, 0x9e, 0x27, 0xd9, 0x20, 0xb6, 0x02, 0xa6, 0x36, 0x3c, 0x3e, 0x32, 0xf0, 0x65, 0xee, 0x86, 0x5f, 0x94, 0x36, 0x68, 0xb2, 0xf3, 0x78, 0xc3, 0x5f, 0x34, 0x1b, 0x1c, 0x5b, 0x4a, 0x37, 0x7c, 0x62, 0xb3, 0x41, 0x84, 0xd0, 0x50, 0x6d, 0x50, 0xda, 0x5b, 0x6e, 0x10, 0x2b, 0x35, 0x54, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x14, 0xdb, 0xca, 0x1b, 0x9c, 0x17, 0x68, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0xca, 0x39, 0xdb, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xe2, 0x48, 0x85, 0x6a, 0x83, 0x18, 0xbf, 0xa1, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xc6, 0xe0, 0xd0, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x5d, 0xa2, 0x54, 0x07, 0x51, 0xa2, 0x43, 0x75, 0x10, 0x97, 0x3b, 0x54, 0x87, 0x53, 0xec, 0x70, 0x8a, 0xad, 0x06, 0x91, 0xa5, 0x4b, 0xb5, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x10, 0x59, 0xba, 0x54, 0x0d, 0xe0, 0x1d, 0x54, 0x34, 0xd5, 0x12, 0x93, 0x23, 0x03, 0x32, 0x57, 0x27, 0xb6, 0x56, 0x96, 0x37, 0xb7, 0xe1, 0x17, 0xa5, 0x0d, 0xa2, 0x77, 0x5e, 0x6a, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x76, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x54, 0x0e, 0xd5, 0x41, 0xe1, 0x24, 0x7b, 0x10, 0xcf, 0x72, 0x54, 0x87, 0x53, 0x6c, 0x0d, 0x22, 0xfe, 0x5f, 0x67, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xe2, 0xff, 0x75, 0x1a, 0xc0, 0x2b, 0xa8, 0x68, 0xaa, 0x25, 0x46, 0x06, 0x07, 0x64, 0x2a, 0xc9, 0x6a, 0x83, 0xb2, 0x4b, 0x76, 0x83, 0x88, 0xff, 0xd7, 0xd9, 0x20, 0x8d, 0xc0, 0x68, 0x36, 0x28, 0xcb, 0xb0, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0xd1, 0x3b, 0x2f, 0x75, 0x10, 0x9b, 0x43, 0x54, 0xb3, 0xcc, 0x02, 0x4f, 0x56, 0x6e, 0x78, 0x9e, 0x64, 0x83, 0xf8, 0xa9, 0x97, 0xda, 0xf0, 0xf8, 0xc8, 0xc0, 0x93, 0x95, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0xae, 0x8b, 0xa8, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x72, 0xb5, 0xd4, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0xd0, 0x6b, 0x71, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf8, 0xb8, 0x1b, 0x9c, 0x17, 0x68, 0x0e, 0x4e, 0xe0, 0x6c, 0x6b, 0xf8, 0xdc, 0x65, 0xa0, 0xd7, 0xe4, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x32, 0x71, 0x0f, 0x62, 0xac, 0xa2, 0xaa, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0x10, 0x0f, 0x4b, 0x54, 0x1b, 0xc4, 0xd7, 0x12, 0xd5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x07, 0xc7, 0xe6, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x1e, 0x4b, 0x1f, 0xbc, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xdd, 0x81, 0x9d, 0x0e, 0x22, 0xe1, 0x89, 0xea, 0x60, 0x11, 0xf8, 0xf9, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xfe, 0xcd, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x58, 0x48, 0xd6, 0xe9, 0x20, 0x02, 0xa4, 0xa8, 0x0e, 0x62, 0x7b, 0x89, 0xea, 0x20, 0x5e, 0xa9, 0xa8, 0x66, 0x81, 0x2f, 0x73, 0x37, 0x3c, 0x4f, 0xb2, 0x41, 0x6c, 0x05, 0x4c, 0x6d, 0x78, 0x7c, 0x64, 0xe0, 0xcb, 0xdc, 0x0d, 0xbf, 0x28, 0x6d, 0xd0, 0x64, 0xe7, 0xf1, 0x86, 0xbf, 0x68, 0x36, 0x88, 0xae, 0x2b, 0xaa, 0x0d, 0x9f, 0xd8, 0x6c, 0x10, 0x4b, 0x14, 0x55, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x9f, 0x66, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xb8, 0xd9, 0xa8, 0x3a, 0x88, 0x25, 0x2d, 0xaa, 0x0d, 0x9f, 0xd8, 0x6c, 0x10, 0x37, 0xe9, 0x4f, 0x1b, 0xac, 0x74, 0x71, 0xda, 0x20, 0x1e, 0x96, 0xa8, 0x36, 0x88, 0xaf, 0x25, 0xaa, 0x0d, 0xce, 0xf9, 0x4b, 0x1b, 0xc4, 0xf6, 0x12, 0xd5, 0x06, 0x85, 0x97, 0xf1, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0x85, 0xea, 0xc1, 0x07, 0xb1, 0x96, 0x51, 0x75, 0xb0, 0x08, 0xfc, 0xfc, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x59, 0x83, 0xd8, 0x1d, 0xd8, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0xdd, 0x81, 0x9d, 0x06, 0xf0, 0x0a, 0x2a, 0x9a, 0x6a, 0x89, 0x91, 0xc1, 0x01, 0x19, 0xa2, 0x92, 0xda, 0xa0, 0xec, 0x92, 0xdd, 0x20, 0x76, 0x07, 0x76, 0x36, 0x48, 0x23, 0x30, 0x9a, 0x0d, 0xca, 0x32, 0xec, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0xa4, 0x88, 0x4c, 0x1d, 0xc4, 0xc3, 0x1e, 0xd5, 0x2c, 0xb3, 0x41, 0x14, 0xf0, 0x51, 0xcd, 0x02, 0x5f, 0xe6, 0x6e, 0x78, 0x9e, 0x64, 0x83, 0xd8, 0x0a, 0x98, 0xda, 0xf0, 0xf8, 0xc8, 0xc0, 0x97, 0xb9, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0xc9, 0xce, 0xe3, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x6c, 0x29, 0xdd, 0xa0, 0x20, 0x8d, 0xdd, 0x20, 0x12, 0x04, 0xa6, 0x36, 0x88, 0x2e, 0x51, 0xaa, 0x83, 0xd8, 0xff, 0xa3, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x35, 0x88, 0x11, 0x84, 0x9d, 0x0d, 0x8f, 0x8f, 0x6c, 0x10, 0x23, 0x08, 0x3b, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x8a, 0x6f, 0xa9, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xb1, 0xa5, 0x74, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x9f, 0xbb, 0x6c, 0x68, 0xf1, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x44, 0xb6, 0x51, 0x75, 0x70, 0x02, 0x67, 0x3b, 0x88, 0x1a, 0x93, 0xa9, 0x0d, 0x9f, 0xd8, 0x6c, 0x10, 0x67, 0x28, 0x53, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x2c, 0x2f, 0x0d, 0xde, 0xe0, 0xc4, 0x7e, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x2f, 0x54, 0x0f, 0x5e, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0x98, 0xb5, 0x4e, 0x07, 0x91, 0xfe, 0x32, 0x75, 0x10, 0x67, 0x30, 0x53, 0x07, 0x31, 0x3d, 0x33, 0x75, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0xb3, 0x06, 0x87, 0xea, 0xb2, 0x0d, 0x52, 0x2f, 0x8a, 0x37, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0x7c, 0x3a, 0xb9, 0x3a, 0x71, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x72, 0x6a, 0xaa, 0x1a, 0xc0, 0x83, 0xae, 0x6c, 0x8e, 0x0e, 0x64, 0x4c, 0xae, 0x4e, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x6b, 0x9b, 0x3b, 0x0f, 0xce, 0xb3, 0xa3, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x5e, 0x18, 0x5b, 0xba, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0xef, 0xca, 0x48, 0xd9, 0xf0, 0xa0, 0xe4, 0x06, 0x51, 0x2c, 0xde, 0x74, 0xb0, 0xca, 0x94, 0x75, 0x83, 0xc4, 0xdd, 0xd4, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x7a, 0x72, 0xec, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x88, 0xb1, 0x86, 0x9d, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xe0, 0x0d, 0x63, 0x4b, 0x6b, 0x81, 0xab, 0x13, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0xdc, 0xa0, 0xe9, 0xe3, 0xcb, 0x83, 0xc8, 0xcb, 0xa9, 0x5a, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x83, 0xab, 0x13, 0xdb, 0xf0, 0xb6, 0xce, 0xc0, 0x97, 0xe1, 0x03, 0x5e, 0x18, 0x5b, 0x5a, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x9e, 0xd8, 0x9b, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x7c, 0x9c, 0xaa, 0x0d, 0x12, 0x77, 0x53, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xe9, 0xc9, 0xb1, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0x20, 0xd6, 0x27, 0x76, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x80, 0x57, 0xec, 0x4d, 0xac, 0x05, 0xae, 0x4e, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x2c, 0x4f, 0xd5, 0x1a, 0x1e, 0x94, 0xdc, 0x20, 0x6e, 0x7b, 0xaa, 0x36, 0xbc, 0xad, 0x33, 0xf0, 0x65, 0xf8, 0x80, 0x27, 0xf6, 0x26, 0xd6, 0x06, 0x05, 0x69, 0xec, 0x00, 0x3e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x2d, 0x6b, 0x65, 0xf9, 0x1a, 0x9c, 0xd8, 0x6f, 0x36, 0x48, 0x4f, 0x8e, 0xdd, 0xf0, 0x23, 0xcc, 0xe0, 0xf4, 0x41, 0xd4, 0x5d, 0xec, 0x6c, 0x50, 0x90, 0xc6, 0x0e, 0xe0, 0x33, 0x97, 0x76, 0xe6, 0x56, 0x46, 0xd6, 0xb2, 0x56, 0x96, 0xaf, 0xe1, 0xdd, 0x9e, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x0e, 0xde, 0x94, 0xa6, 0xb8, 0xe1, 0x6d, 0x9d, 0x81, 0x0f, 0x9b, 0x0f, 0x62, 0xd4, 0xa7, 0x6a, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x43, 0x44, 0x55, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0x80, 0xd7, 0x98, 0x5c, 0x1e, 0x1c, 0x5d, 0x19, 0x59, 0xcb, 0x5a, 0x59, 0xbe, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0x11, 0xff, 0xca, 0x1d, 0xc4, 0x06, 0x52, 0xd5, 0x1a, 0x1e, 0x94, 0xdc, 0x20, 0x6e, 0x7b, 0xaa, 0x36, 0xbc, 0xad, 0x33, 0xf0, 0x65, 0xf8, 0x06, 0x11, 0x1b, 0x54, 0xd5, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xd6, 0x8c, 0xaa, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x00, 0x5e, 0xc8, 0xca, 0xc6, 0xe4, 0xf2, 0xe0, 0xe8, 0x5a, 0xd6, 0xca, 0xf2, 0x5a, 0xc2, 0xe8, 0xe8, 0xca, 0xda, 0xe0, 0xe8, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x2f, 0x4f, 0x59, 0x6e, 0xc3, 0xdb, 0x3a, 0x03, 0x1f, 0x36, 0x1f, 0xc4, 0xeb, 0x50, 0xd5, 0x1a, 0x1e, 0x94, 0xdc, 0x20, 0x6e, 0x7b, 0xaa, 0x36, 0xbc, 0xad, 0x33, 0xf0, 0x65, 0xf8, 0x06, 0xd1, 0xbe, 0x53, 0xd5, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x3e, 0x93, 0xaa, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x00, 0x4f, 0xb2, 0xb2, 0x31, 0xb9, 0x3c, 0x38, 0xba, 0x32, 0xb2, 0x96, 0xb5, 0xb2, 0x7c, 0x0d, 0x96, 0xd4, 0x2f, 0xad, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0xc4, 0x17, 0xc9, 0xce, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x1b, 0xba, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x22, 0xb8, 0xa9, 0xaa, 0x36, 0x28, 0x48, 0x63, 0x07, 0xe0, 0xc3, 0xae, 0x4c, 0x2e, 0xcd, 0x2c, 0xaf, 0x65, 0xad, 0x2c, 0xaf, 0x25, 0x8c, 0x8e, 0xae, 0xac, 0x0d, 0x8e, 0x5e, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0xb0, 0x73, 0xe5, 0x36, 0xbc, 0xad, 0x33, 0xf0, 0x61, 0xf3, 0x41, 0xbc, 0x46, 0x55, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x22, 0x5a, 0xaa, 0xaa, 0x36, 0x28, 0x48, 0x63, 0x07, 0xf0, 0xb3, 0x2b, 0x93, 0x4b, 0x33, 0x4b, 0x2b, 0x23, 0x6b, 0x59, 0x2b, 0xcb, 0xd7, 0x60, 0x49, 0xfd, 0xd2, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0x41, 0xfc, 0xab, 0xec, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xb3, 0xa1, 0xcb, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x12, 0xac, 0xaa, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x00, 0xaf, 0x31, 0xb9, 0x3c, 0x38, 0xba, 0x32, 0xb2, 0x96, 0xb6, 0xb9, 0x73, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x81, 0x2f, 0x73, 0x0f, 0xe2, 0x75, 0xa8, 0x6a, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0xc9, 0x59, 0x55, 0x1d, 0x44, 0x4c, 0x98, 0xd4, 0x86, 0xaf, 0x5f, 0x36, 0x58, 0xab, 0x50, 0xb7, 0xe1, 0xeb, 0x97, 0x0d, 0x1f, 0xc2, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0x3c, 0x59, 0x7e, 0x10, 0xa3, 0x3e, 0x55, 0x1b, 0x44, 0x34, 0x52, 0xd5, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xe2, 0xb9, 0xaa, 0xea, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x06, 0x11, 0xf8, 0xb5, 0xb3, 0x41, 0xd9, 0x25, 0xbb, 0x41, 0x04, 0x7e, 0xed, 0x6c, 0xf0, 0x66, 0xe1, 0x93, 0xd9, 0x60, 0x15, 0x96, 0xd3, 0x1a, 0xde, 0xd6, 0x39, 0x48, 0xbd, 0x82, 0xdd, 0xa0, 0x94, 0x10, 0x5f, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0xe4, 0x5c, 0xd8, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x52, 0x91, 0x19, 0x0f, 0x12, 0xe2, 0x19, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0x1f, 0x2c, 0xa8, 0x83, 0x94, 0x99, 0xc6, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x8a, 0x7f, 0x37, 0x28, 0x2a, 0xc5, 0x0f, 0x4e, 0x08, 0x14, 0x07, 0x27, 0x04, 0x8a, 0x66, 0x0d, 0xd2, 0x42, 0x62, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0xec, 0x96, 0x55, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x6a, 0x1d, 0x1f, 0x44, 0x2d, 0x16, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xd4, 0x3a, 0x3e, 0x88, 0x12, 0xb4, 0xaa, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd9, 0x20, 0x02, 0xbf, 0x76, 0xda, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0x16, 0xc0, 0x07, 0xad, 0x2d, 0x6c, 0xac, 0x65, 0x0e, 0x2d, 0x2c, 0x86, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x69, 0x4e, 0xb1, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x72, 0xd8, 0xaa, 0x36, 0x48, 0xb6, 0x8f, 0xdd, 0x20, 0x05, 0x3a, 0xf5, 0x20, 0x45, 0xc5, 0x75, 0x35, 0x88, 0xc0, 0xaf, 0x9d, 0x0d, 0x8f, 0x8f, 0x6c, 0x10, 0x81, 0x5f, 0x3b, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x0f, 0x2d, 0x4c, 0xdd, 0x20, 0x9c, 0xc6, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x47, 0xa1, 0x93, 0x83, 0x32, 0xd2, 0xf6, 0xf0, 0x43, 0xcd, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xc4, 0xde, 0xe2, 0x83, 0xa3, 0xd0, 0xc9, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0x34, 0xcb, 0x3e, 0x38, 0x0a, 0x9d, 0xb4, 0x41, 0xfc, 0xc8, 0x48, 0x6d, 0x10, 0x6f, 0x34, 0x52, 0x6d, 0x50, 0xf4, 0xe9, 0xae, 0x41, 0x51, 0x5b, 0x7c, 0x70, 0x1c, 0xf8, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x99, 0xb8, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x08, 0xd1, 0x92, 0x6a, 0x0d, 0x6f, 0xeb, 0x1c, 0xc4, 0x3e, 0x5d, 0x55, 0x1b, 0x14, 0x7d, 0xba, 0x6b, 0x50, 0xd4, 0x16, 0x1f, 0x44, 0xa2, 0x57, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0xc4, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x44, 0x44, 0x96, 0x54, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x0e, 0xef, 0xaa, 0xda, 0xe0, 0x38, 0x36, 0xb1, 0x41, 0xec, 0xd3, 0x55, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xdf, 0x28, 0x6e, 0x10, 0x21, 0x5a, 0x52, 0x1b, 0x3c, 0x90, 0x8e, 0xb9, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb4, 0x30, 0xb5, 0x0d, 0x22, 0x44, 0x4b, 0xea, 0x20, 0x7a, 0xed, 0xaa, 0x36, 0x38, 0x8e, 0x4d, 0x6c, 0x10, 0x57, 0x5a, 0x52, 0x1b, 0xc4, 0x9a, 0x5e, 0xd5, 0x06, 0xc5, 0xd2, 0xf6, 0x06, 0xc7, 0xb1, 0x89, 0x0d, 0x62, 0x9f, 0xae, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0xe2, 0xec, 0x20, 0xae, 0xf5, 0xaa, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x01, 0xef, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xa8, 0x14, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0xdc, 0xe0, 0x81, 0x74, 0xcc, 0x07, 0xd1, 0x66, 0x57, 0xd5, 0x41, 0xf4, 0xda, 0x55, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x6b, 0x69, 0xf0, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc4, 0x40, 0x6c, 0x10, 0xc1, 0x76, 0x55, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc4, 0x90, 0xac, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0x1e, 0x48, 0xc7, 0x7c, 0x10, 0x25, 0xfc, 0x50, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x6b, 0x6f, 0xf0, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc4, 0x40, 0x6c, 0x10, 0xc1, 0x76, 0x55, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc4, 0x90, 0xac, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0x1e, 0x48, 0xc7, 0x7c, 0x10, 0x0d, 0x01, 0x51, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xaf, 0x7b, 0x55, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0x44, 0x44, 0x96, 0xd4, 0x41, 0x8c, 0xec, 0x55, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x03, 0xde, 0x0d, 0xa2, 0x11, 0xaf, 0x6a, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x6b, 0x69, 0x70, 0x1d, 0xc4, 0x54, 0x5e, 0x55, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x5e, 0xf7, 0xaa, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0x36, 0x28, 0x96, 0xb6, 0x0f, 0x62, 0x64, 0xaf, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x1a, 0xf0, 0x6e, 0x10, 0x53, 0x6c, 0x51, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x5b, 0x7b, 0x83, 0xeb, 0x20, 0x15, 0x68, 0xac, 0x15, 0x40, 0x03, 0xad, 0x2d, 0x6c, 0xac, 0x65, 0x0e, 0x2d, 0x2c, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xd4, 0xc1, 0xd8, 0x0d, 0x52, 0xdd, 0x63, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xd1, 0xce, 0x56, 0x55, 0xb3, 0x00, 0x7e, 0x68, 0x6d, 0x61, 0x63, 0x2d, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0xec, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x73, 0x8a, 0xdd, 0x20, 0x4e, 0xdc, 0xaa, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xa9, 0x75, 0xb1, 0x6d, 0x90, 0x02, 0x9d, 0x7a, 0x90, 0x76, 0x1a, 0x7b, 0x38, 0xc5, 0x16, 0xc0, 0x07, 0xad, 0x2d, 0x6c, 0xac, 0x65, 0x0e, 0x2d, 0x2c, 0x86, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0xa9, 0x83, 0xb1, 0x1b, 0x24, 0x7e, 0xc6, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0xa2, 0xcb, 0xb1, 0xaa, 0x66, 0x01, 0xfc, 0xd0, 0xda, 0xc2, 0xc6, 0x5a, 0xe6, 0xd0, 0xc2, 0x6a, 0x62, 0x64, 0xd8, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0xe6, 0x14, 0xbb, 0x41, 0x9c, 0xb8, 0x55, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x92, 0xf3, 0x64, 0xdb, 0x20, 0x21, 0x30, 0xf5, 0x20, 0x5d, 0x3b, 0xf6, 0x70, 0x8a, 0x2d, 0x80, 0x16, 0x5a, 0x5b, 0xd8, 0x58, 0xcb, 0x1c, 0x5a, 0x98, 0x4c, 0x8d, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0xa9, 0x83, 0xb1, 0x1b, 0xa4, 0xba, 0xc7, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x62, 0x0c, 0xb2, 0xaa, 0x56, 0x00, 0x3f, 0xb4, 0xb6, 0xb0, 0xb1, 0x96, 0x39, 0xb4, 0xb0, 0x9a, 0x18, 0x19, 0x7a, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x0e, 0xc6, 0x6e, 0x90, 0xf8, 0x19, 0xbb, 0x86, 0xb7, 0x75, 0x06, 0xd0, 0x42, 0x6b, 0x0b, 0x1b, 0x6b, 0x99, 0x43, 0x0b, 0xab, 0x89, 0x91, 0x35, 0x0b, 0xe0, 0x87, 0xd6, 0x16, 0x36, 0xd6, 0x32, 0x87, 0x16, 0x26, 0x53, 0x63, 0x43, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xd4, 0xc1, 0xd8, 0x0d, 0x12, 0x3f, 0x63, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xf1, 0x82, 0x59, 0x55, 0xb3, 0x06, 0x91, 0xc2, 0x59, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x52, 0x07, 0x63, 0x37, 0x48, 0x75, 0x8f, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0x55, 0x65, 0x55, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0x0a, 0xf0, 0xad, 0x95, 0x8d, 0x8d, 0x85, 0xad, 0x1b, 0x94, 0x5d, 0xb2, 0x1b, 0x44, 0x81, 0x1d, 0xcf, 0x06, 0x6f, 0x16, 0x3e, 0x99, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x01, 0xbe, 0x39, 0xb8, 0x37, 0xb7, 0xb3, 0x72, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0xc2, 0xc9, 0x95, 0xc1, 0x95, 0xc9, 0xb5, 0x1b, 0x84, 0xd3, 0xd8, 0x06, 0x65, 0x96, 0xee, 0x41, 0xd9, 0x57, 0xbe, 0x86, 0x3f, 0x97, 0x06, 0x78, 0xe1, 0xc2, 0xc8, 0xc8, 0xd2, 0xdc, 0xce, 0x0d, 0xc2, 0x69, 0x6c, 0x0d, 0x9f, 0x2b, 0x6d, 0xf0, 0xf4, 0x73, 0xb9, 0x83, 0xd3, 0x21, 0xe1, 0xc1, 0xd3, 0xcf, 0xe5, 0xd6, 0xf0, 0xe7, 0xd2, 0x00, 0xaf, 0x58, 0x1a, 0x9d, 0x5c, 0x18, 0x5d, 0x79, 0x50, 0x66, 0xe9, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0xfe, 0xb1, 0x30, 0xb8, 0xb0, 0xb1, 0x34, 0xba, 0xfc, 0xa0, 0xcc, 0xd2, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x00, 0x4f, 0xb1, 0x34, 0x3a, 0xb9, 0x30, 0xba, 0xb2, 0x16, 0xb1, 0x3c, 0xba, 0xb2, 0x79, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x02, 0xeb, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x46, 0x4f, 0xab, 0x3a, 0x38, 0xaa, 0xcc, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0xe0, 0x23, 0xc6, 0xf6, 0x36, 0xb6, 0x76, 0x97, 0x46, 0x46, 0x87, 0x6e, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0xc4, 0xd4, 0x6a, 0xd5, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x4a, 0x51, 0xab, 0x6a, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xf8, 0x18, 0x90, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x36, 0x48, 0xab, 0x5a, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0x22, 0x6b, 0x55, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0x7c, 0x62, 0x79, 0xf0, 0xf4, 0x73, 0xb9, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x9a, 0x8b, 0xf0, 0x83, 0x32, 0x4b, 0xb7, 0x0d, 0x0e, 0x58, 0x74, 0x6b, 0xf8, 0x8b, 0x66, 0xc3, 0x0f, 0x35, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0xbc, 0xf7, 0xc4, 0x72, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x22, 0xb3, 0xb4, 0xaa, 0x0d, 0x5e, 0x61, 0x6d, 0xb9, 0x41, 0x4c, 0xad, 0x56, 0xb5, 0x41, 0x41, 0x1a, 0xbb, 0x86, 0xef, 0xdb, 0x37, 0x68, 0x3e, 0x7d, 0xfa, 0x20, 0x12, 0x00, 0xa4, 0xd6, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x61, 0x77, 0xbb, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0xde, 0x7b, 0x62, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xf8, 0xd4, 0xaa, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x3c, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0xa1, 0xc0, 0x7a, 0x10, 0x5b, 0xb7, 0x55, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x41, 0xce, 0x06, 0x31, 0x87, 0xe6, 0xb4, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0x92, 0xea, 0xa4, 0x0d, 0x8e, 0x2e, 0x71, 0x1b, 0x1c, 0x6d, 0xf8, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x06, 0x45, 0xa5, 0xf8, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0xcc, 0xe4, 0x41, 0xec, 0xdf, 0x56, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0xf7, 0x9e, 0x58, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x83, 0xa3, 0x50, 0xdc, 0x41, 0xec, 0xdf, 0x56, 0x6d, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0xc2, 0x38, 0xe3, 0xa0, 0x39, 0x57, 0xf1, 0x35, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x2a, 0x49, 0xb8, 0x41, 0x5b, 0x56, 0xd4, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x1e, 0xa1, 0x3b, 0x88, 0x8d, 0xa3, 0xa9, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x0e, 0x1e, 0x19, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x80, 0x77, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xf0, 0xe6, 0x20, 0xfe, 0x5b, 0xab, 0x0e, 0xd2, 0x93, 0x06, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x94, 0x0b, 0x48, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x31, 0x10, 0x1b, 0x1c, 0xce, 0xf9, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xc0, 0x57, 0x2c, 0x8f, 0xae, 0x6c, 0xae, 0x85, 0xee, 0xad, 0x85, 0x2d, 0xcc, 0xad, 0x6c, 0xee, 0x20, 0x3d, 0x69, 0xb0, 0x36, 0x28, 0xed, 0x2d, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0xc7, 0x0c, 0xcf, 0xc3, 0x0f, 0x35, 0x1b, 0x94, 0xf6, 0x96, 0x1b, 0x14, 0x77, 0xc5, 0x1b, 0xbe, 0xc2, 0xd9, 0xa0, 0xe8, 0xd3, 0xdd, 0xe0, 0x0c, 0xe6, 0xb9, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x05, 0x65, 0xf7, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x34, 0xe0, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0xbc, 0x39, 0x88, 0x6d, 0xda, 0xaa, 0x83, 0x86, 0xd6, 0x92, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x89, 0x8f, 0xbb, 0x41, 0x84, 0x09, 0x57, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0x80, 0x2f, 0x5b, 0x98, 0x5b, 0xd9, 0x5c, 0x0b, 0xdd, 0x5b, 0x8b, 0x58, 0x1e, 0x5d, 0xd9, 0xdc, 0x06, 0xef, 0xb1, 0x29, 0xad, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0xca, 0x35, 0xe3, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x0a, 0x2f, 0xe3, 0x83, 0xd8, 0xa6, 0xad, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x0d, 0x5b, 0x69, 0x83, 0xc2, 0xcb, 0x78, 0x0d, 0x6f, 0xeb, 0x1c, 0x34, 0x5c, 0xa6, 0xdd, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc4, 0xc7, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0x3c, 0x88, 0x96, 0xe7, 0xaa, 0x0e, 0x1a, 0x5a, 0x4b, 0xde, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xe0, 0x0c, 0xe6, 0x79, 0x70, 0xd0, 0xf2, 0x5c, 0x83, 0x10, 0xce, 0xd8, 0xf0, 0x6e, 0xcf, 0x06, 0x51, 0x2e, 0x20, 0x75, 0x10, 0xaf, 0xcc, 0x55, 0x2d, 0xb3, 0x06, 0xd1, 0x50, 0x5c, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0x5f, 0x2e, 0x6d, 0xb0, 0xaa, 0x57, 0x69, 0x83, 0x14, 0x8c, 0xda, 0x0d, 0x8e, 0xcb, 0x33, 0x1b, 0x9e, 0xd6, 0xd9, 0xf0, 0x8b, 0xd2, 0x86, 0xe7, 0x99, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x69, 0xc0, 0xbb, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x38, 0xac, 0xcc, 0x6d, 0xb0, 0x04, 0xba, 0xae, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0xd6, 0xf1, 0x41, 0xd9, 0xb8, 0xdf, 0x6a, 0x10, 0xaf, 0xcb, 0x55, 0x1b, 0x7e, 0x51, 0xda, 0xf0, 0xe5, 0xd2, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x65, 0x71, 0xf4, 0x06, 0xc7, 0xe5, 0x99, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x4a, 0xa4, 0xea, 0x35, 0x7c, 0x62, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x88, 0x96, 0x37, 0x38, 0x2e, 0xcf, 0x1c, 0x1e, 0xfa, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x27, 0x82, 0xb6, 0x0d, 0xcf, 0x4c, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x32, 0x6d, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x1b, 0x24, 0x8f, 0xf3, 0x1e, 0xc4, 0x65, 0x81, 0xd4, 0x41, 0xa4, 0x3d, 0x4c, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0x5f, 0x2e, 0x6d, 0x50, 0x18, 0xaa, 0x6e, 0x78, 0x4c, 0x66, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xb2, 0x38, 0x7a, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x44, 0xaa, 0xde, 0xf0, 0xcc, 0xe4, 0x1a, 0x7e, 0x51, 0xda, 0xf0, 0xe5, 0xd2, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x26, 0x73, 0x78, 0xe8, 0xa7, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0x8b, 0xe5, 0x0d, 0x96, 0xc2, 0xcb, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x93, 0x4c, 0xdb, 0x06, 0x91, 0x4e, 0x20, 0x75, 0x10, 0x69, 0x0f, 0x53, 0x07, 0xa9, 0x40, 0x63, 0x87, 0x53, 0xac, 0xc3, 0x29, 0xb6, 0x1a, 0xbc, 0x19, 0xe4, 0x73, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x70, 0x65, 0xf2, 0x41, 0x8c, 0x92, 0x56, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x8e, 0xaa, 0x6c, 0x07, 0x11, 0x62, 0x5a, 0xb5, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb9, 0x30, 0xfa, 0xa0, 0xcc, 0xd2, 0x5d, 0xc3, 0x9f, 0x4b, 0x1b, 0xfa, 0xe0, 0x1f, 0x94, 0x59, 0xba, 0x1b, 0xb4, 0xe1, 0x3e, 0xba, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0x34, 0x37, 0xf8, 0xe0, 0xe9, 0xe7, 0x72, 0x6d, 0xf8, 0x8b, 0x66, 0xc3, 0x0f, 0x35, 0x1b, 0x14, 0x7d, 0xba, 0x0b, 0x1e, 0x0f, 0x78, 0x69, 0x6e, 0x70, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa4, 0x52, 0xd8, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xbc, 0xad, 0x73, 0x10, 0xa7, 0xea, 0x55, 0x6d, 0x70, 0x6a, 0x38, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x44, 0xed, 0x7a, 0xd5, 0x41, 0xa1, 0xb4, 0xbd, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xd4, 0x8b, 0x56, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb8, 0x32, 0xb9, 0x0d, 0x0e, 0x42, 0x6d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x93, 0x0b, 0xa3, 0x3b, 0x78, 0x54, 0x62, 0xcb, 0x0a, 0xa0, 0xb3, 0x56, 0x36, 0x36, 0x16, 0xb6, 0xd6, 0x22, 0x23, 0x43, 0x37, 0x3c, 0x3e, 0xb2, 0x41, 0x34, 0xee, 0xee, 0x6c, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1e, 0x3c, 0xfd, 0x5c, 0x6e, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xd8, 0x09, 0xad, 0x6a, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0xc1, 0x01, 0xb2, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0x60, 0x80, 0x37, 0x78, 0xca, 0x31, 0xe4, 0xe1, 0xa1, 0x9f, 0x15, 0x40, 0x63, 0x0e, 0x2d, 0x6c, 0xad, 0xac, 0x25, 0x46, 0x06, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xdf, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0x7f, 0x2e, 0x0d, 0x9e, 0x1e, 0x3c, 0xfd, 0x5c, 0xae, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x9e, 0x39, 0xb4, 0xb0, 0xb5, 0xb2, 0x35, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0x07, 0xd4, 0x06, 0xa9, 0xd8, 0xbf, 0x1b, 0x24, 0x5c, 0x5e, 0x1d, 0x94, 0x66, 0xe8, 0x2b, 0x80, 0x9e, 0x5c, 0xd8, 0xdd, 0x1c, 0x5a, 0xd8, 0x5a, 0x59, 0x4b, 0x8c, 0x0c, 0xde, 0xf0, 0x8b, 0xd2, 0x06, 0x11, 0x4f, 0x5f, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xc0, 0x2f, 0x17, 0x76, 0x37, 0x87, 0x16, 0xb6, 0x56, 0x76, 0x10, 0x41, 0xf7, 0x55, 0x2b, 0x80, 0x9e, 0x5c, 0xd8, 0xdd, 0x1c, 0x5a, 0xd8, 0x5a, 0x59, 0x8b, 0x4c, 0x8d, 0xdd, 0xf0, 0x8b, 0xd2, 0x06, 0x11, 0x4f, 0x5f, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0xa2, 0x46, 0xbf, 0x6a, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0xc1, 0x01, 0xb1, 0x41, 0xe2, 0x6e, 0xea, 0x41, 0x4c, 0xe0, 0x57, 0x1d, 0x4e, 0xb1, 0xd6, 0x20, 0x76, 0x42, 0xab, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x9a, 0x53, 0xec, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xcd, 0x29, 0x76, 0x83, 0xd7, 0x99, 0x57, 0xaf, 0xe1, 0x6d, 0x9d, 0x01, 0xfe, 0xb5, 0xb2, 0xb1, 0xb1, 0xb0, 0xb5, 0x16, 0xb3, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0xbe, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x6b, 0x65, 0x63, 0x63, 0x61, 0x6b, 0x1d, 0x4e, 0xb1, 0x16, 0x40, 0x63, 0x0e, 0x2d, 0x6c, 0xad, 0xac, 0x45, 0xa6, 0xc6, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0x88, 0xa7, 0xaf, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0x69, 0x5f, 0x75, 0x10, 0x3d, 0xfd, 0x55, 0x2b, 0xa0, 0xcf, 0xa1, 0x85, 0xcd, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0xe6, 0x14, 0xbb, 0x41, 0x4c, 0xfd, 0x57, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0xf4, 0xe0, 0xc2, 0xc8, 0xc8, 0xd2, 0xdc, 0xce, 0x5a, 0xe6, 0xd0, 0xc2, 0x66, 0xad, 0x00, 0xfd, 0x1c, 0x5a, 0xd8, 0x4c, 0x4b, 0x4d, 0x8c, 0xdc, 0xf0, 0x8b, 0xd2, 0x06, 0x11, 0x11, 0x5f, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xbc, 0x11, 0x58, 0xb5, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0xa0, 0x80, 0x6c, 0x90, 0x2e, 0x48, 0xbb, 0x41, 0xe2, 0x6e, 0xea, 0xe1, 0xa1, 0x9f, 0xc3, 0x29, 0xb6, 0x00, 0x3a, 0x6b, 0x65, 0x63, 0x63, 0x61, 0x6b, 0x2d, 0x33, 0x38, 0x74, 0xc3, 0xe3, 0x23, 0x1b, 0x44, 0x7e, 0xf3, 0xce, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x88, 0xf8, 0xaa, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xe7, 0xf1, 0x55, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0x0a, 0xe8, 0x1a, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x83, 0x02, 0xb8, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0x60, 0x00, 0x0f, 0x0f, 0xfd, 0x1c, 0x4e, 0xb1, 0x35, 0x88, 0x37, 0xfd, 0xaa, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0xe6, 0x14, 0xbb, 0x41, 0x4c, 0xfd, 0x57, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0xfc, 0xe1, 0xc2, 0xc8, 0xc8, 0xd2, 0xdc, 0xce, 0x5a, 0xe4, 0xc2, 0xee, 0xe6, 0xd0, 0xc2, 0xd6, 0xca, 0x3a, 0x9c, 0x62, 0x0b, 0xd0, 0xcf, 0xa1, 0x85, 0xcd, 0xb4, 0xcc, 0xe0, 0xd0, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x11, 0xf1, 0x55, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x0a, 0x10, 0xac, 0x0e, 0x62, 0x88, 0xc1, 0x6a, 0x35, 0x88, 0xe2, 0x02, 0xab, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x78, 0x68, 0xab, 0x63, 0xa3, 0x4b, 0x93, 0x0b, 0xa3, 0x2b, 0x6b, 0x81, 0x0b, 0x23, 0x23, 0x4b, 0x73, 0x3b, 0x5b, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0xc7, 0xb6, 0x02, 0xe8, 0xac, 0x95, 0x8d, 0x8d, 0x85, 0xad, 0xb5, 0xd4, 0xc4, 0xc8, 0x0d, 0x8f, 0x8f, 0x6c, 0x10, 0xa1, 0xd3, 0x3b, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x22, 0xe2, 0xab, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x9c, 0xc7, 0x57, 0x1d, 0xc4, 0x22, 0x82, 0xd5, 0x2c, 0x40, 0x3f, 0x87, 0x16, 0x36, 0xd3, 0x22, 0x53, 0x63, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0x44, 0xc4, 0x57, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x28, 0x40, 0xb0, 0xda, 0x20, 0x82, 0xfa, 0xab, 0x36, 0x48, 0xdc, 0x4d, 0xdd, 0x20, 0x15, 0xfb, 0xf7, 0xf0, 0xd0, 0xcf, 0xe1, 0x14, 0x5b, 0x80, 0x7e, 0x0e, 0x2d, 0x6c, 0xa6, 0x45, 0x46, 0x86, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0x88, 0x88, 0xaf, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x51, 0x80, 0x60, 0x75, 0x10, 0x6d, 0xf2, 0x55, 0xab, 0x41, 0x54, 0x3e, 0x58, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xd8, 0x9a, 0xb0, 0x5a, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0xc7, 0x77, 0x38, 0xc5, 0xd6, 0x20, 0x66, 0x02, 0xac, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x6c, 0x4d, 0x58, 0x1d, 0xc4, 0x60, 0xc3, 0xd4, 0x6a, 0x10, 0xd5, 0xf6, 0x55, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xcd, 0x29, 0x76, 0x83, 0x98, 0xfa, 0xaf, 0x5a, 0xc3, 0xdb, 0x3a, 0x03, 0x78, 0xc2, 0x85, 0x91, 0x91, 0xa5, 0xb9, 0x9d, 0xb5, 0xcc, 0xa1, 0x85, 0xad, 0x95, 0x75, 0x38, 0xc5, 0x5a, 0x83, 0xa8, 0x02, 0xb0, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x3c, 0x77, 0x69, 0x64, 0x74, 0xe8, 0x41, 0x99, 0xa5, 0xdb, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0x1c, 0x6d, 0xf8, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x1c, 0xad, 0x35, 0x36, 0x28, 0x9b, 0xde, 0x0f, 0x52, 0x81, 0xc6, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x71, 0x2b, 0x62, 0x55, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xb5, 0x35, 0x82, 0x1b, 0x24, 0x8f, 0xf3, 0xae, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0x54, 0x6e, 0x90, 0x66, 0x10, 0xba, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0x20, 0x90, 0x1b, 0x24, 0xfd, 0x85, 0xae, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0x28, 0x90, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0x0e, 0xc8, 0x83, 0xb2, 0xce, 0x73, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xe7, 0xbb, 0x54, 0x1e, 0x1c, 0x16, 0xd8, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0x02, 0x2f, 0xf1, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0x1e, 0x9f, 0xfb, 0xbb, 0xc1, 0xe3, 0x73, 0x7f, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xc0, 0x83, 0x2d, 0xcc, 0xad, 0xac, 0x45, 0x8c, 0xed, 0x2d, 0xde, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa7, 0x03, 0xbe, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x28, 0xb0, 0x6e, 0x10, 0x29, 0x25, 0x56, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x27, 0xf0, 0x12, 0x57, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0xe0, 0xc1, 0x16, 0xe6, 0x56, 0xd6, 0x32, 0x97, 0xa6, 0x57, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x42, 0xbb, 0x77, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x8d, 0x2c, 0x56, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xc0, 0x27, 0xf7, 0x56, 0xe7, 0x46, 0x36, 0x6f, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0x2c, 0xe1, 0x70, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x04, 0x4f, 0xed, 0x06, 0x01, 0xcb, 0x7a, 0x10, 0x0d, 0x31, 0x56, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0x7c, 0x62, 0x79, 0xf8, 0xa1, 0xa6, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0xa1, 0x66, 0x83, 0x95, 0x2e, 0x4e, 0x1b, 0x1e, 0xdc, 0xd9, 0xe0, 0x15, 0xd6, 0x96, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0xa4, 0x75, 0xac, 0x1d, 0x1e, 0xbc, 0xd9, 0xe0, 0x80, 0x45, 0xb7, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0xd1, 0x54, 0x2d, 0xb5, 0xe1, 0x6d, 0x9d, 0x0d, 0xe2, 0x41, 0xc6, 0xaa, 0x0d, 0x4f, 0xeb, 0x6c, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0xc1, 0xc7, 0x83, 0xe6, 0x5c, 0xc5, 0xd7, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0xa9, 0x24, 0xe1, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x45, 0xba, 0xd2, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0x39, 0x88, 0xe5, 0x15, 0xab, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xf8, 0x41, 0x99, 0xa5, 0x7b, 0x50, 0xfc, 0xc5, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x50, 0x76, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x03, 0xde, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x44, 0xc4, 0x58, 0x1d, 0x14, 0xc4, 0xe3, 0x87, 0x5f, 0x84, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x2a, 0x49, 0xb8, 0x41, 0x8c, 0xea, 0x58, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x70, 0x12, 0x48, 0x3d, 0x28, 0xfe, 0x62, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x06, 0x62, 0xc3, 0xd3, 0x3b, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf0, 0x9f, 0x95, 0xd1, 0xb5, 0xb0, 0x85, 0xb9, 0x95, 0x6d, 0x90, 0x4c, 0xe9, 0xb4, 0x41, 0x8a, 0xb5, 0xd3, 0xe1, 0xa1, 0x9f, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0xe0, 0xe4, 0x41, 0x73, 0xae, 0xe2, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0x54, 0x92, 0x70, 0x83, 0x18, 0xd5, 0xb1, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x12, 0x79, 0xac, 0x0e, 0x0a, 0x7f, 0xe0, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x0a, 0xca, 0xee, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x69, 0xc0, 0xbb, 0x41, 0x54, 0xf9, 0x58, 0x1d, 0x94, 0xea, 0xb2, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x1c, 0x62, 0x20, 0xd6, 0xe0, 0x68, 0xc3, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x1b, 0x6b, 0xa9, 0x0d, 0xcf, 0x4c, 0x6e, 0xf0, 0xf8, 0xdc, 0xdf, 0xc3, 0x2f, 0x42, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x24, 0x53, 0x3a, 0x1d, 0x1e, 0xbc, 0xd9, 0x20, 0xba, 0x76, 0xac, 0x0e, 0x92, 0x92, 0x9e, 0x36, 0x58, 0xd5, 0xab, 0xb4, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xc7, 0xf3, 0xb7, 0x0d, 0xce, 0xfc, 0x6b, 0x07, 0xd1, 0x10, 0x63, 0xb5, 0xe1, 0xc1, 0x9b, 0x0d, 0x8f, 0xc9, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xb8, 0xb1, 0x96, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x1a, 0x3e, 0x8e, 0x3a, 0x48, 0xa6, 0x74, 0x3a, 0x88, 0xe5, 0x15, 0xab, 0x83, 0xb8, 0x49, 0xb2, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0xf0, 0xe0, 0xce, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0x95, 0x24, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xbc, 0x48, 0x57, 0x7a, 0xc3, 0x83, 0x37, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x6b, 0x3e, 0x07, 0x31, 0xee, 0x62, 0xd5, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0xe5, 0xc2, 0xf9, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3c, 0x38, 0x22, 0xda, 0xb4, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x21, 0x06, 0x62, 0xc3, 0xd3, 0x3a, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x94, 0x06, 0xbc, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x88, 0x88, 0xb1, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0xdc, 0x20, 0xce, 0x5d, 0xac, 0x36, 0x28, 0x88, 0xcf, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x8d, 0xb5, 0xd4, 0x06, 0x65, 0xf4, 0xf9, 0x06, 0x8f, 0xcf, 0xfd, 0x3d, 0x28, 0xd5, 0x65, 0x37, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0xe0, 0xe2, 0x41, 0x73, 0xae, 0xe2, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0x54, 0x92, 0x70, 0x83, 0x68, 0x7f, 0xb2, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0x3c, 0xa9, 0x72, 0x78, 0x9d, 0x69, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x7c, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x06, 0x65, 0xf4, 0xf9, 0xc1, 0x51, 0x81, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x7c, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x02, 0xeb, 0x41, 0x3c, 0x69, 0x59, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x50, 0x76, 0x6f, 0x78, 0x2f, 0x68, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xd2, 0x80, 0x77, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x22, 0x22, 0xc6, 0x6a, 0x83, 0xa2, 0xd3, 0x78, 0xc3, 0xa7, 0x80, 0x1b, 0xc4, 0xb9, 0x8b, 0xd5, 0x06, 0x45, 0xa7, 0xf1, 0x86, 0x3f, 0x81, 0x36, 0x48, 0x88, 0x79, 0xda, 0xa0, 0xe8, 0x34, 0xde, 0x20, 0x78, 0x6a, 0x37, 0x78, 0x7c, 0xee, 0xef, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x6e, 0x10, 0xb0, 0xac, 0x07, 0x89, 0x94, 0x4e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe0, 0xa9, 0xdd, 0xa0, 0xa8, 0x14, 0x3f, 0x48, 0xaf, 0x76, 0xea, 0x20, 0x96, 0x57, 0xac, 0x36, 0x58, 0xd5, 0xab, 0xb4, 0x41, 0xbc, 0x2d, 0x59, 0x6d, 0x78, 0xf0, 0x66, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0xbc, 0xe5, 0xde, 0xe8, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x5a, 0xde, 0xcc, 0xcc, 0xe6, 0xca, 0xe8, 0x0e, 0x4a, 0x33, 0xf4, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x37, 0xd6, 0x52, 0x1b, 0x94, 0xd1, 0xe7, 0x1b, 0xc4, 0xb9, 0x8b, 0xd5, 0xe1, 0xa1, 0x9f, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x0f, 0xee, 0xac, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x52, 0x49, 0xc2, 0x0d, 0xa2, 0xfd, 0xc9, 0x6a, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x72, 0xe1, 0x7c, 0xc3, 0x97, 0x4b, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x50, 0x76, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x03, 0xde, 0x0d, 0x22, 0x22, 0xc6, 0xea, 0xf0, 0xd0, 0xcf, 0x86, 0x4f, 0x6c, 0x36, 0x88, 0xc3, 0x2c, 0xab, 0x0d, 0x9f, 0xd8, 0x6c, 0x10, 0x07, 0x5b, 0x56, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x1c, 0x62, 0x20, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x11, 0x1f, 0x64, 0xb5, 0x41, 0x32, 0xa5, 0xd3, 0x06, 0x29, 0xd6, 0x4e, 0x87, 0xb7, 0xd0, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x38, 0x7a, 0xc7, 0xad, 0xc1, 0xd1, 0x86, 0x6f, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xf1, 0x41, 0x56, 0x1b, 0x9e, 0x99, 0x3c, 0x88, 0x7f, 0x36, 0xab, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x76, 0xb7, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0x24, 0x53, 0x3a, 0x1d, 0x04, 0x2b, 0xeb, 0x41, 0x2c, 0xaf, 0x58, 0x6d, 0xb0, 0xaa, 0x57, 0x69, 0x83, 0x64, 0x9c, 0xd6, 0x0d, 0x22, 0x22, 0xc6, 0x6a, 0xc3, 0x63, 0x32, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xe2, 0x83, 0xac, 0x36, 0x88, 0xb6, 0x26, 0xab, 0x83, 0xf8, 0x67, 0xb3, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0xf0, 0xe0, 0xce, 0x1a, 0x3e, 0xb1, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x00, 0x5f, 0xb9, 0xb7, 0x3a, 0x37, 0xb2, 0x96, 0xb1, 0x37, 0xb7, 0x39, 0xba, 0x30, 0x37, 0xba, 0x0d, 0xa2, 0xa9, 0x5a, 0xaa, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x88, 0x81, 0xd8, 0xf0, 0xb4, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x34, 0xe0, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x44, 0x44, 0x8c, 0xd5, 0x41, 0x8c, 0x42, 0x59, 0x1d, 0xa4, 0x02, 0x8d, 0xb5, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x4a, 0xc7, 0xda, 0x86, 0x8f, 0xa3, 0x0e, 0xa2, 0xa9, 0x5a, 0xaa, 0x65, 0xd6, 0x20, 0xea, 0xc8, 0xac, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x24, 0xf2, 0x58, 0x6d, 0x70, 0xb4, 0xe1, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x95, 0xf3, 0x1b, 0x24, 0x53, 0x3a, 0x1d, 0xa4, 0x02, 0x8d, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0xa3, 0xd5, 0xe5, 0x06, 0x47, 0xd7, 0xc1, 0x0d, 0x0f, 0xde, 0x6c, 0x78, 0x4c, 0x66, 0x83, 0xa5, 0x15, 0x6f, 0x1b, 0xa4, 0x3c, 0x79, 0xae, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0x6c, 0x37, 0x58, 0xdc, 0x65, 0xbf, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0x50, 0xb6, 0xc1, 0x71, 0x79, 0x66, 0x83, 0x85, 0x14, 0xa7, 0x1b, 0xa4, 0xa9, 0xb8, 0x6e, 0x50, 0x54, 0x8a, 0x6f, 0x90, 0xf2, 0x5a, 0xb5, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0xd0, 0xb5, 0x41, 0xf2, 0x38, 0xef, 0x06, 0xc9, 0x3d, 0xae, 0x1b, 0x24, 0x46, 0xe3, 0xae, 0xe1, 0x47, 0x98, 0x0d, 0x35, 0x3f, 0xb4, 0x6d, 0x70, 0xba, 0x7f, 0xdb, 0x60, 0x7d, 0x55, 0xea, 0x06, 0x87, 0x95, 0xb9, 0x0d, 0x52, 0x75, 0x71, 0x37, 0x08, 0x58, 0xd6, 0x0d, 0xd2, 0xff, 0x6c, 0x37, 0x88, 0xe3, 0x0e, 0xa9, 0x83, 0x94, 0xc1, 0xd5, 0xd5, 0x20, 0x56, 0x84, 0xac, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x88, 0x44, 0x1e, 0xab, 0x0d, 0x4e, 0x02, 0xa9, 0x07, 0xd1, 0x8f, 0x66, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x90, 0x4c, 0xe9, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0x1e, 0x9f, 0xfb, 0x7b, 0x90, 0x5e, 0xed, 0xd4, 0x41, 0x04, 0x97, 0x59, 0x1d, 0x4e, 0xb1, 0x35, 0x88, 0x36, 0x66, 0xa9, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x0a, 0x22, 0xdd, 0x0d, 0xce, 0xed, 0xa4, 0x07, 0xd1, 0x8f, 0x66, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa2, 0xd9, 0x0d, 0x22, 0x22, 0xc6, 0x6a, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x6e, 0x70, 0x08, 0x9d, 0x58, 0xc3, 0xc7, 0x51, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xec, 0x6e, 0x37, 0x28, 0x86, 0x76, 0x0f, 0x4e, 0x08, 0x14, 0x1d, 0x14, 0xc4, 0xe3, 0x87, 0x87, 0x7e, 0x66, 0x0d, 0x22, 0x86, 0xce, 0x6a, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf1, 0xa0, 0xcc, 0xd2, 0xdd, 0xe0, 0x68, 0xc3, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x2a, 0xe7, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x61, 0x77, 0xbb, 0xe1, 0xe9, 0x9d, 0x83, 0x78, 0xb8, 0x90, 0x3a, 0x48, 0x05, 0x1a, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x07, 0x8f, 0xd2, 0x0d, 0x8e, 0xae, 0x83, 0x1b, 0x44, 0xd6, 0xb8, 0xd4, 0x1a, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0x3c, 0x10, 0x04, 0x01, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x83, 0x48, 0xb6, 0xe2, 0x59, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0xc4, 0xda, 0x15, 0xcf, 0x1a, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0x3c, 0x10, 0x16, 0x01, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x83, 0x38, 0xc2, 0xe2, 0x59, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0x44, 0x29, 0x16, 0xcf, 0x1a, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0xfc, 0x20, 0x8e, 0xb2, 0x78, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x41, 0x28, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x41, 0x20, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x07, 0x51, 0xa3, 0xc5, 0xb3, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0x49, 0x2d, 0x9e, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0xf8, 0x41, 0xc4, 0x6b, 0xf1, 0xac, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x0f, 0xe2, 0x69, 0x8b, 0x67, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0x10, 0xf1, 0x5b, 0x3c, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x83, 0x98, 0xe4, 0xe2, 0x59, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0x44, 0x4d, 0x17, 0xcf, 0x1a, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0xfc, 0x20, 0xae, 0xbb, 0x78, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x81, 0xa0, 0x00, 0x58, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0xc4, 0xac, 0x17, 0xcf, 0x06, 0xd1, 0x3d, 0x69, 0xb5, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0xd0, 0x2f, 0x9e, 0x0d, 0xe2, 0x64, 0xd2, 0x6a, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0x10, 0x8f, 0x60, 0x3c, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x1a, 0xc4, 0x25, 0x88, 0xd5, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xad, 0x09, 0xab, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0x78, 0xd8, 0x77, 0x38, 0xc5, 0x16, 0x40, 0x67, 0xad, 0x6c, 0x6c, 0x2c, 0x6c, 0xad, 0x45, 0xa6, 0xc6, 0x6e, 0x78, 0x7c, 0x64, 0x83, 0x18, 0x37, 0xe3, 0xd9, 0xf0, 0x8b, 0xd2, 0x06, 0x11, 0x11, 0x5f, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0x3c, 0xbe, 0xea, 0x20, 0x12, 0x33, 0xac, 0x66, 0x0d, 0xa2, 0x72, 0xc2, 0x6a, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x23, 0x9b, 0x13, 0x0f, 0x8e, 0x2d, 0xa5, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x23, 0x9b, 0x13, 0x3b, 0x58, 0xa6, 0x87, 0xba, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x3c, 0xa4, 0x57, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x5a, 0x8d, 0xc8, 0x3e, 0x28, 0xb3, 0x74, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x4f, 0x3f, 0x97, 0xdb, 0xa0, 0xe8, 0xd3, 0xdd, 0xa0, 0xd1, 0x8c, 0xec, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x28, 0xb0, 0x6e, 0xd0, 0x76, 0x47, 0xf6, 0xc1, 0x51, 0x65, 0x6e, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x25, 0x19, 0xb4, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x06, 0x6d, 0x77, 0x64, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0xc2, 0xee, 0x76, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0xc4, 0xa9, 0x7a, 0xd5, 0x41, 0xa3, 0x2e, 0xd9, 0x6d, 0x70, 0x1c, 0x9b, 0xd8, 0xa0, 0x5d, 0x83, 0xcb, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0xe3, 0x05, 0x97, 0x87, 0x07, 0x6f, 0x36, 0x68, 0xbb, 0x23, 0x7b, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x76, 0x0d, 0x2e, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0x36, 0x68, 0xbc, 0xe0, 0xb2, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x22, 0x82, 0xd5, 0x6a, 0x0d, 0x1f, 0x47, 0x1d, 0x34, 0x5e, 0x70, 0xd9, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xeb, 0x6d, 0x37, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x05, 0x65, 0xf7, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x34, 0xe0, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x95, 0xe2, 0x07, 0x51, 0xf7, 0x6a, 0xb5, 0x41, 0x9c, 0x97, 0x5a, 0xb5, 0x41, 0xec, 0xb1, 0x52, 0xb5, 0x86, 0xb7, 0x75, 0x0e, 0xe2, 0x50, 0xbd, 0xaa, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0x83, 0xb8, 0xa8, 0xe8, 0xd9, 0xa0, 0xec, 0x92, 0xdd, 0x20, 0x2e, 0x2a, 0x7a, 0x36, 0x78, 0xb3, 0xf0, 0xc9, 0x6c, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0xf0, 0xb6, 0x91, 0xd5, 0xb4, 0xc0, 0x85, 0x91, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0xb9, 0x11, 0x76, 0xc3, 0x5f, 0x34, 0x1b, 0x24, 0x37, 0xc2, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0xc1, 0xfc, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0xc2, 0xee, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x83, 0xd4, 0x4c, 0xd8, 0x83, 0x74, 0xed, 0xd8, 0x83, 0xa4, 0xdd, 0xd4, 0x36, 0x28, 0x0c, 0x55, 0xd7, 0x20, 0xc9, 0x80, 0x70, 0xc3, 0x9f, 0x40, 0x1b, 0xa4, 0x40, 0xa7, 0x6e, 0x10, 0xfd, 0x26, 0x52, 0x07, 0x49, 0x43, 0xb2, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x94, 0xc5, 0xd1, 0x1b, 0x1e, 0xbc, 0xd9, 0xe0, 0xe8, 0x3a, 0xb8, 0x06, 0x29, 0xd0, 0xa9, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xa9, 0x14, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0xc3, 0xca, 0xdc, 0x41, 0xd2, 0x90, 0xec, 0x1a, 0x44, 0xbf, 0x89, 0xd4, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0x37, 0x48, 0x7e, 0x1a, 0x3b, 0x28, 0x88, 0xc7, 0x0f, 0x62, 0xc8, 0x54, 0x6a, 0x16, 0x40, 0x47, 0x2e, 0x0d, 0xae, 0xac, 0x8d, 0xac, 0x25, 0xc6, 0x06, 0x6e, 0x78, 0x7c, 0x64, 0x83, 0x28, 0x9e, 0xe8, 0xd9, 0xf0, 0x8b, 0xd2, 0x06, 0xc9, 0x8d, 0xb0, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0x43, 0xcd, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x09, 0x9d, 0xb0, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe0, 0xa9, 0x3d, 0x88, 0x3e, 0xa5, 0xa5, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xec, 0xda, 0x5a, 0x75, 0x90, 0x0c, 0x0b, 0xbb, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0xf9, 0x5f, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc1, 0xa8, 0xdd, 0xe0, 0xb0, 0xc0, 0xb6, 0x41, 0xe9, 0x67, 0xbc, 0x86, 0x5f, 0x94, 0x36, 0x7c, 0xb9, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x92, 0x4a, 0x61, 0x0f, 0xa2, 0xcd, 0x6b, 0xaa, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0x90, 0x82, 0xe9, 0xb4, 0x41, 0xe9, 0x67, 0xbc, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0xc1, 0xc9, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x02, 0xeb, 0x06, 0xa9, 0x99, 0xb0, 0x07, 0x49, 0xbb, 0xa9, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x9e, 0x59, 0x99, 0x7d, 0x70, 0x62, 0x5f, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x68, 0x34, 0xb8, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x0f, 0x62, 0xa1, 0x91, 0x67, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xa0, 0xd1, 0xe2, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0xc4, 0x46, 0x9e, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x81, 0x46, 0x93, 0x1b, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0xfc, 0x20, 0x1a, 0x1c, 0x79, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x1a, 0x6d, 0x6e, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x83, 0x88, 0x74, 0xe4, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x68, 0x34, 0xba, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x0f, 0x62, 0xe1, 0x91, 0x67, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x24, 0x20, 0xd5, 0x0d, 0xd2, 0x2c, 0x58, 0xdb, 0xf0, 0x89, 0xcd, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x7e, 0x98, 0x8b, 0x4b, 0xd9, 0x06, 0x85, 0x60, 0xea, 0x86, 0xcf, 0x95, 0x36, 0x7c, 0xb9, 0xb4, 0xe1, 0x79, 0xa6, 0x0d, 0x0a, 0xc0, 0xd8, 0x83, 0x93, 0x9c, 0xca, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0xa0, 0x0b, 0x3b, 0x71, 0x71, 0x29, 0x3b, 0x6d, 0x50, 0x08, 0xa6, 0x6e, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x7c, 0x58, 0x78, 0xf8, 0xa1, 0x66, 0x0d, 0x7f, 0x2e, 0x0d, 0xbc, 0x98, 0x78, 0xf8, 0xa1, 0x66, 0x0d, 0x7f, 0x2e, 0x0d, 0xfc, 0xd8, 0x78, 0xf8, 0xa1, 0x66, 0x0d, 0x7f, 0x2e, 0x0d, 0x3c, 0x19, 0x79, 0xf8, 0xa1, 0x66, 0x0d, 0x7f, 0x2e, 0x0d, 0x7c, 0x59, 0x79, 0xf8, 0xa1, 0xa6, 0x0d, 0x0e, 0x58, 0x74, 0x6b, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x50, 0x46, 0x9f, 0x1f, 0x1c, 0xdb, 0xde, 0xd6, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0xd8, 0x56, 0xde, 0xe0, 0xb0, 0xc0, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x89, 0x54, 0xbd, 0x86, 0xbf, 0x68, 0x36, 0x28, 0xe7, 0x6c, 0x37, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x6d, 0x9d, 0x81, 0x46, 0xa3, 0xad, 0xe1, 0x6d, 0x9d, 0x81, 0x46, 0x9b, 0xad, 0xe1, 0x6d, 0x9d, 0x81, 0x46, 0x93, 0x6d, 0x70, 0xb8, 0x75, 0xdb, 0x20, 0x5a, 0x80, 0xa3, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0x07, 0x4e, 0xba, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x54, 0x0a, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0xc1, 0xa9, 0xb9, 0xed, 0xe0, 0x00, 0x4f, 0xb7, 0xc1, 0xda, 0xb8, 0xa6, 0xd5, 0xf0, 0xe0, 0xce, 0x41, 0xb4, 0x00, 0x47, 0xad, 0xc1, 0x7b, 0x0b, 0x0c, 0x0f, 0xa2, 0x05, 0x38, 0x6a, 0x0d, 0x9f, 0x07, 0x1d, 0x1c, 0x6e, 0xdd, 0xd6, 0xe0, 0x21, 0x03, 0x86, 0x07, 0x87, 0x5b, 0xb7, 0x35, 0xfc, 0xc3, 0x73, 0x10, 0x5b, 0xde, 0x56, 0x2b, 0xf0, 0x63, 0x63, 0x07, 0xb1, 0xe5, 0x6d, 0xb5, 0x06, 0x45, 0xbe, 0xec, 0x41, 0xac, 0x77, 0x5b, 0xad, 0x41, 0x1c, 0x77, 0x3d, 0x1d, 0xc4, 0x7a, 0xb7, 0xd5, 0x1a, 0x14, 0x21, 0xd0, 0x07, 0xb1, 0xd7, 0x6d, 0xb5, 0x02, 0x5f, 0x56, 0x76, 0x10, 0x7b, 0xdd, 0x56, 0x6d, 0xf8, 0xc4, 0x66, 0x83, 0x34, 0x0b, 0xd6, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x90, 0xc2, 0x1c, 0x75, 0x90, 0xaa, 0xb0, 0xba, 0x86, 0x4b, 0x6a, 0x83, 0xc3, 0x7e, 0xc7, 0x06, 0x85, 0xee, 0xf9, 0x1a, 0x9c, 0x41, 0xdd, 0x36, 0x48, 0x32, 0x20, 0x5c, 0xc3, 0x83, 0x92, 0x1b, 0x1c, 0xb6, 0xe1, 0x36, 0xbc, 0xad, 0x33, 0xe0, 0x99, 0x95, 0xd9, 0x6d, 0x10, 0x5b, 0xde, 0x56, 0x1b, 0x94, 0xeb, 0xb2, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x66, 0xcc, 0xad, 0x5a, 0x83, 0x88, 0xf4, 0xb6, 0xda, 0x20, 0xc9, 0x80, 0x70, 0x83, 0xe8, 0x4c, 0xb7, 0xda, 0x20, 0xd6, 0xbb, 0xad, 0x36, 0x28, 0x27, 0xa0, 0xd7, 0xf0, 0xb6, 0xce, 0xc1, 0x7b, 0x0b, 0x0c, 0x5b, 0x83, 0x08, 0xf1, 0xb6, 0xda, 0x20, 0xc9, 0x80, 0x70, 0x83, 0xe8, 0x4c, 0xb7, 0xda, 0x20, 0xf6, 0xba, 0xad, 0x36, 0x3c, 0xad, 0xb3, 0x86, 0xb7, 0x75, 0x0e, 0x1e, 0x32, 0x60, 0xd8, 0x1a, 0x44, 0x6c, 0xb7, 0xd5, 0x06, 0x49, 0x06, 0x84, 0x1b, 0x44, 0x67, 0xba, 0xd5, 0x06, 0xd1, 0x02, 0x1c, 0xb5, 0xe1, 0xbd, 0xa0, 0x35, 0xbc, 0xad, 0x73, 0x10, 0xfb, 0xe3, 0x56, 0xad, 0x41, 0x8c, 0x01, 0x47, 0x6d, 0x90, 0x64, 0x40, 0xb8, 0x41, 0x74, 0xa6, 0x5b, 0x6d, 0x70, 0xb8, 0x75, 0xdb, 0xf0, 0xf4, 0xce, 0x41, 0xfc, 0x77, 0x3d, 0xb5, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0x6d, 0x90, 0x5c, 0x68, 0xb9, 0x86, 0x07, 0x77, 0x0e, 0xca, 0x09, 0xe8, 0x35, 0x7c, 0x1e, 0xb4, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x73, 0x90, 0x60, 0xb1, 0xb4, 0x41, 0x0a, 0x73, 0xd4, 0x86, 0xa7, 0x75, 0x36, 0xbc, 0x17, 0xb4, 0xe1, 0xe9, 0x9d, 0x0d, 0xca, 0x75, 0xd9, 0x0d, 0xca, 0x09, 0xe8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xb9, 0xd3, 0x62, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xfc, 0xe4, 0x3b, 0x48, 0x0a, 0x60, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0xe6, 0x5d, 0x75, 0x90, 0x14, 0xc0, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x9c, 0xf3, 0x1d, 0x24, 0x05, 0xb0, 0xb6, 0x41, 0x42, 0x60, 0xee, 0x1a, 0x14, 0xf9, 0xb2, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x0c, 0xfe, 0xb6, 0x41, 0xca, 0x6b, 0xd5, 0xe1, 0x17, 0xa1, 0x0d, 0xd2, 0x57, 0x5e, 0xd7, 0xe0, 0xbd, 0x05, 0x86, 0x07, 0x71, 0xb2, 0x6e, 0xb5, 0x06, 0x0f, 0x19, 0x30, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x51, 0x49, 0x6f, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0xf0, 0xe7, 0x20, 0x29, 0x80, 0x75, 0x83, 0xc8, 0x68, 0xb7, 0xda, 0x20, 0xfe, 0xdd, 0xad, 0x36, 0x88, 0x72, 0x78, 0xab, 0x0d, 0x22, 0xb2, 0xeb, 0x69, 0x83, 0x38, 0x59, 0xb7, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x3b, 0x2d, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0x90, 0x0a, 0x75, 0x90, 0x14, 0xc0, 0xda, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xbf, 0xb6, 0x76, 0x90, 0x14, 0xc0, 0xba, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0xcf, 0xcd, 0x1d, 0x24, 0x05, 0xb0, 0xb6, 0x06, 0xb1, 0x3f, 0x6e, 0x75, 0x10, 0xff, 0xee, 0x56, 0x6b, 0x10, 0xc7, 0x5d, 0x4f, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x0c, 0xfe, 0xb6, 0x41, 0xca, 0x6b, 0xd5, 0x41, 0x84, 0xc3, 0x5b, 0xad, 0x41, 0xcc, 0x98, 0x5b, 0x1d, 0x44, 0x64, 0xd7, 0x53, 0xcb, 0x2c, 0xf0, 0x66, 0xee, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x5c, 0x3d, 0x28, 0xb3, 0x74, 0x37, 0x7c, 0xb9, 0xb4, 0xe1, 0x79, 0xa6, 0x0d, 0x0a, 0xc0, 0xd8, 0x0d, 0x8a, 0x7f, 0xe0, 0x0d, 0x4a, 0xad, 0xe8, 0x0d, 0x92, 0xe2, 0x19, 0x37, 0x48, 0x45, 0x66, 0x3c, 0x88, 0x8d, 0xa3, 0xa9, 0x0d, 0x8e, 0x36, 0x7c, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe8, 0x4c, 0xb7, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xc1, 0xdf, 0x36, 0x38, 0x9c, 0xf3, 0xad, 0x41, 0x92, 0x01, 0xe1, 0x06, 0xd1, 0x99, 0x6e, 0xb5, 0xe1, 0x69, 0x9d, 0x0d, 0x0e, 0xa1, 0x13, 0x1b, 0xa4, 0x79, 0x57, 0x1d, 0xa4, 0x02, 0x8d, 0x75, 0x50, 0x66, 0x4b, 0x6f, 0x50, 0xf4, 0xe9, 0x6e, 0x90, 0xf8, 0x1c, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x05, 0xd6, 0x83, 0xb4, 0xd1, 0xd5, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0f, 0xde, 0x1c, 0xa4, 0x30, 0x47, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x31, 0x10, 0x1b, 0xc4, 0xa9, 0x73, 0xd3, 0x41, 0xa9, 0x2e, 0xbb, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0x31, 0x99, 0x83, 0x14, 0xe6, 0xa8, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x41, 0xd9, 0xbd, 0x41, 0xa2, 0x48, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0xe8, 0x1d, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc6, 0x69, 0xdd, 0xf0, 0xe0, 0xcd, 0x06, 0xa9, 0xa7, 0xb1, 0x87, 0xb7, 0xd0, 0x0e, 0x4a, 0x75, 0xd9, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x08, 0x58, 0xd6, 0x83, 0x14, 0xe6, 0xa8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x06, 0x62, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x50, 0x76, 0x6f, 0x78, 0x2f, 0x68, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x8c, 0xd3, 0xba, 0xe1, 0xc1, 0x9b, 0x0d, 0x52, 0x4f, 0x63, 0x0f, 0xbf, 0x08, 0x75, 0x50, 0xaa, 0xcb, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x50, 0x54, 0x8a, 0x1f, 0xa4, 0x30, 0x47, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xca, 0xee, 0x0d, 0xd2, 0xff, 0x5a, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x47, 0xef, 0xb8, 0x0d, 0x4f, 0xef, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x92, 0x71, 0x5a, 0x37, 0x3c, 0x78, 0xb3, 0x41, 0xea, 0x69, 0xec, 0x41, 0xa9, 0x2e, 0x5b, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x9c, 0x9a, 0xdb, 0x0e, 0x52, 0x98, 0xa3, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x87, 0x18, 0x88, 0x0d, 0xef, 0x05, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xca, 0xee, 0x83, 0x08, 0xbd, 0xb8, 0xea, 0x20, 0x3c, 0x55, 0x57, 0xf0, 0x75, 0xc3, 0x2f, 0x4a, 0x1b, 0xc4, 0x58, 0xc1, 0xd5, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x89, 0xcf, 0x51, 0x1b, 0xc4, 0xf3, 0xc2, 0xd5, 0x86, 0x0f, 0x72, 0x36, 0x88, 0x5d, 0x86, 0xab, 0x0d, 0x96, 0xae, 0xa1, 0x6e, 0xf8, 0x20, 0x67, 0x83, 0x28, 0x75, 0xb8, 0x5a, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0x44, 0x5e, 0x2c, 0xcf, 0x86, 0x0f, 0x72, 0x36, 0x88, 0x17, 0x89, 0xab, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0xf8, 0x41, 0x94, 0xc8, 0xf2, 0x6c, 0xf8, 0x20, 0x67, 0x83, 0x88, 0xad, 0xb8, 0x5a, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0x44, 0xb4, 0x2c, 0xcf, 0x86, 0x0f, 0x72, 0x36, 0x88, 0xa6, 0x8c, 0xab, 0x35, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0xf8, 0x41, 0x9c, 0xce, 0xf2, 0x1c, 0x84, 0xa7, 0xea, 0x0a, 0xbc, 0x9c, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x1b, 0xc4, 0xb7, 0x21, 0xd4, 0x40, 0xcb, 0x9d, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x8c, 0x15, 0x5c, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x54, 0xce, 0x6f, 0x90, 0xc2, 0x1c, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0xca, 0x39, 0xdb, 0x0d, 0x8e, 0xae, 0x83, 0x1b, 0x1c, 0x16, 0xd8, 0x36, 0x48, 0x1b, 0x5c, 0xdd, 0xe0, 0xbc, 0x40, 0xb3, 0xe1, 0xc1, 0x9b, 0x0d, 0x52, 0x4e, 0xab, 0x36, 0x08, 0x58, 0xd6, 0x0d, 0xd2, 0x99, 0xed, 0x36, 0x38, 0x35, 0xb7, 0x6d, 0x70, 0x5a, 0x85, 0xdb, 0xe0, 0xb8, 0x3c, 0xb3, 0xc1, 0xe9, 0xfe, 0x6d, 0x83, 0xc3, 0xca, 0xdc, 0x86, 0xc7, 0x64, 0x36, 0x48, 0x79, 0xad, 0xda, 0xa0, 0xa8, 0x14, 0xdf, 0x60, 0x09, 0x87, 0xdb, 0x06, 0xc7, 0xe5, 0x99, 0x0d, 0xd2, 0x99, 0xed, 0x36, 0x28, 0x2a, 0xc5, 0x37, 0x38, 0x2f, 0xd0, 0x6c, 0x78, 0xf0, 0x66, 0x83, 0xd3, 0x2a, 0xdc, 0x06, 0x87, 0x05, 0xb6, 0x0d, 0x52, 0x5e, 0xab, 0x36, 0x48, 0x1b, 0x5c, 0xdd, 0xe0, 0x74, 0xff, 0xb6, 0xc1, 0x61, 0x65, 0x6e, 0x83, 0x25, 0x1c, 0x6e, 0x1b, 0x9c, 0x9a, 0xdb, 0x36, 0x48, 0x39, 0xad, 0xda, 0xf0, 0x98, 0xcc, 0x06, 0x01, 0xcb, 0xba, 0xc1, 0xe9, 0xfe, 0x6d, 0x83, 0xc3, 0x02, 0xdb, 0x86, 0xc7, 0x64, 0x36, 0x28, 0x2a, 0xc5, 0x37, 0x38, 0x2f, 0xd0, 0x6c, 0x90, 0x36, 0xb8, 0xba, 0xc1, 0x71, 0x79, 0x66, 0x83, 0x94, 0xd3, 0xaa, 0x0d, 0xd2, 0x99, 0xed, 0x36, 0x38, 0xac, 0xcc, 0x6d, 0xb0, 0x84, 0xc3, 0x6d, 0x83, 0x80, 0x65, 0xdd, 0x20, 0xe5, 0xb5, 0x6a, 0xc3, 0x83, 0x37, 0x1b, 0x9c, 0x9a, 0xdb, 0x36, 0x38, 0xad, 0xc2, 0x6d, 0x70, 0x58, 0x99, 0xdb, 0xe0, 0xb8, 0x3c, 0xb3, 0xc1, 0xa9, 0xb9, 0x6d, 0xc3, 0x63, 0x32, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0xa4, 0x33, 0xdb, 0x6d, 0x70, 0xba, 0x7f, 0xdb, 0xf0, 0xe0, 0xcd, 0x06, 0x87, 0x05, 0xb6, 0x0d, 0x96, 0x70, 0xb8, 0x6d, 0x10, 0xb0, 0xac, 0x1b, 0x9c, 0x56, 0xe1, 0x36, 0x48, 0x39, 0xad, 0xda, 0xe0, 0xbc, 0x40, 0xb3, 0x41, 0xca, 0x6b, 0xd5, 0x06, 0x69, 0x83, 0xab, 0x1b, 0x2c, 0xe1, 0x70, 0xdb, 0xe0, 0x74, 0xff, 0xb6, 0x41, 0xca, 0x6b, 0xd5, 0x06, 0xa7, 0xe6, 0xb6, 0x0d, 0x8f, 0xc9, 0x6c, 0x70, 0x58, 0x60, 0xdb, 0xe0, 0xb0, 0x32, 0xb7, 0xc1, 0x79, 0x81, 0x66, 0x83, 0xe3, 0xf2, 0xcc, 0x06, 0x01, 0xcb, 0xba, 0xc1, 0x69, 0x15, 0x6e, 0x83, 0xb4, 0xc1, 0xd5, 0x0d, 0x0f, 0xde, 0x6c, 0x50, 0x54, 0x8a, 0x6f, 0x90, 0x72, 0x5a, 0xb5, 0x41, 0x3a, 0xb3, 0x5d, 0x2b, 0xf0, 0x73, 0xf3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xf0, 0x73, 0x73, 0x03, 0x3d, 0x77, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0x31, 0x56, 0x70, 0xb5, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x51, 0x39, 0xbf, 0x41, 0x0a, 0x73, 0xd4, 0x86, 0xbf, 0x68, 0x36, 0x28, 0xe7, 0x6c, 0x37, 0x38, 0xba, 0x0e, 0x6e, 0x70, 0x58, 0x99, 0xdb, 0x20, 0xe5, 0xb4, 0x6a, 0x83, 0x94, 0xd3, 0xaa, 0x0d, 0xd2, 0x99, 0xed, 0x36, 0x38, 0xad, 0xc2, 0x6d, 0x70, 0xba, 0x7f, 0xdb, 0xe0, 0x74, 0xff, 0xb6, 0xc1, 0x61, 0x81, 0x6d, 0x83, 0xf3, 0x02, 0xcd, 0x06, 0xe7, 0x05, 0x9a, 0x0d, 0x0e, 0x2b, 0x73, 0x1b, 0xa4, 0x33, 0xdb, 0x6d, 0x90, 0x36, 0xb8, 0xba, 0x41, 0xda, 0xe0, 0xea, 0x06, 0x4b, 0x38, 0xdc, 0x36, 0x38, 0x2e, 0xcf, 0x6c, 0x90, 0x72, 0x5a, 0xb5, 0xc1, 0x69, 0x15, 0x6e, 0x83, 0xd3, 0xfd, 0xdb, 0x06, 0xe7, 0x05, 0x9a, 0x0d, 0x96, 0x70, 0xb8, 0x6d, 0x70, 0x58, 0x99, 0xdb, 0x20, 0xe5, 0xb4, 0x6a, 0x83, 0x74, 0x66, 0xbb, 0x0d, 0xce, 0x0b, 0x34, 0x1b, 0x9c, 0x17, 0x68, 0x36, 0x58, 0xc2, 0xe1, 0xb6, 0xc1, 0x79, 0x81, 0x66, 0x83, 0xe3, 0xf2, 0xcc, 0x06, 0xa7, 0xfb, 0xb7, 0x0d, 0x4e, 0xab, 0x70, 0x1b, 0xa4, 0x33, 0xdb, 0x6d, 0x90, 0x72, 0x5a, 0xb5, 0xc1, 0x79, 0x81, 0x66, 0x83, 0xd3, 0xfd, 0xdb, 0x06, 0xe9, 0xcc, 0x76, 0x1b, 0x1c, 0x56, 0xe6, 0x36, 0x38, 0x2e, 0xcf, 0x6c, 0x70, 0x5c, 0x9e, 0xd9, 0x20, 0x6d, 0x70, 0x75, 0x83, 0x25, 0x1c, 0x6e, 0x1b, 0x9c, 0x56, 0xe1, 0x36, 0x38, 0x2c, 0xb0, 0x6d, 0x90, 0x36, 0xb8, 0xba, 0xc1, 0x69, 0x15, 0x6e, 0x83, 0xd3, 0x2a, 0xdc, 0x06, 0xe7, 0x05, 0x9a, 0x0d, 0x0e, 0x0b, 0x6c, 0x1b, 0x9c, 0xee, 0xdf, 0x36, 0x38, 0x2c, 0xb0, 0x6d, 0x70, 0x58, 0x99, 0xdb, 0x20, 0x9d, 0xd9, 0x6e, 0x83, 0xb4, 0xc1, 0xd5, 0x0d, 0xd2, 0x06, 0x57, 0x37, 0x38, 0x2e, 0xcf, 0x6c, 0x90, 0x36, 0xb8, 0xba, 0xc1, 0x71, 0x79, 0x66, 0x83, 0x94, 0xd3, 0xaa, 0x0d, 0x96, 0x70, 0xb8, 0x6d, 0x90, 0x72, 0x5a, 0xb5, 0xc1, 0x12, 0x0e, 0xb7, 0x0d, 0x0e, 0x0b, 0x6c, 0x1b, 0x9c, 0xee, 0xdf, 0x36, 0x38, 0xac, 0xcc, 0x6d, 0x70, 0x58, 0x99, 0xdb, 0xe0, 0xb0, 0xc0, 0xb6, 0xc1, 0x12, 0x0e, 0xb7, 0x0d, 0x52, 0x4e, 0xab, 0x36, 0x58, 0xc2, 0xe1, 0xb6, 0xc1, 0x61, 0x81, 0x6d, 0x83, 0xb4, 0xc1, 0xd5, 0x0d, 0x8e, 0xcb, 0x33, 0x1b, 0x1c, 0x56, 0xe6, 0x36, 0x38, 0xad, 0xc2, 0x6d, 0x70, 0x5c, 0x9e, 0xd9, 0xe0, 0xb0, 0xc0, 0xb6, 0xc1, 0xe9, 0xfe, 0x6d, 0x83, 0xd3, 0x2a, 0xdc, 0x06, 0xe9, 0xcc, 0x76, 0x07, 0xb1, 0xa2, 0x73, 0xb5, 0x82, 0xcb, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0xc6, 0x0a, 0xae, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0x2a, 0xe7, 0x37, 0x48, 0x61, 0x8e, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xe5, 0x9c, 0xed, 0x06, 0x47, 0xd7, 0xc1, 0x0d, 0x0f, 0xde, 0x6c, 0x78, 0x4c, 0x66, 0x83, 0x80, 0x65, 0xdd, 0xa0, 0xa8, 0x14, 0xdf, 0xe0, 0xd4, 0xdc, 0xb6, 0xc1, 0x61, 0x81, 0x6d, 0x83, 0xe3, 0xf2, 0xcc, 0x06, 0xe7, 0x05, 0x9a, 0x0d, 0x0e, 0x2b, 0x73, 0x1b, 0xa4, 0x9c, 0x56, 0x6d, 0x90, 0xf2, 0x5a, 0xb5, 0x41, 0x3a, 0xb3, 0xdd, 0x06, 0x4b, 0x38, 0xdc, 0x36, 0x38, 0xad, 0xc2, 0x6d, 0x90, 0x36, 0xb8, 0xba, 0xc1, 0xe9, 0xfe, 0x6d, 0x83, 0xf3, 0x02, 0xcd, 0x06, 0xa7, 0xe6, 0xb6, 0x0d, 0x4e, 0xab, 0x70, 0x1b, 0x1e, 0x93, 0xd9, 0x20, 0xe5, 0xb5, 0x6a, 0x83, 0xe3, 0xf2, 0xcc, 0x06, 0xa7, 0xfb, 0xb7, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0x96, 0x70, 0xb8, 0x6d, 0x78, 0xf0, 0x66, 0x83, 0x94, 0xd3, 0xaa, 0x0d, 0x0e, 0x0b, 0x6c, 0x1b, 0x04, 0x2c, 0xeb, 0x06, 0x69, 0x83, 0xab, 0x1b, 0xa4, 0x33, 0xdb, 0x6d, 0x70, 0x58, 0x99, 0xdb, 0xa0, 0xa8, 0x14, 0xdf, 0x20, 0xe5, 0xb5, 0x6a, 0x83, 0xb4, 0xc1, 0xd5, 0x0d, 0x4e, 0xcd, 0x6d, 0x1b, 0xa4, 0x9c, 0x56, 0x6d, 0x70, 0xba, 0x7f, 0xdb, 0xe0, 0xb0, 0x32, 0xb7, 0xe1, 0x31, 0x99, 0x0d, 0x02, 0x96, 0x75, 0x83, 0xf3, 0x02, 0xcd, 0x86, 0x07, 0x6f, 0x36, 0x38, 0x2e, 0xcf, 0x6c, 0x70, 0x5a, 0x85, 0xdb, 0x20, 0x9d, 0xd9, 0x6e, 0x83, 0xc3, 0x02, 0xdb, 0x06, 0x4b, 0x38, 0xdc, 0x36, 0x3c, 0x26, 0xb3, 0x41, 0xca, 0x69, 0xd5, 0x06, 0xe9, 0xcc, 0x76, 0x1b, 0xa4, 0xbc, 0x56, 0x6d, 0x78, 0xf0, 0x66, 0x83, 0xc3, 0xca, 0xdc, 0x06, 0x4b, 0x38, 0xdc, 0x36, 0x38, 0x35, 0xb7, 0x6d, 0x70, 0x5a, 0x85, 0xdb, 0xa0, 0xa8, 0x14, 0xdf, 0xe0, 0xbc, 0x40, 0xb3, 0xc1, 0xe9, 0xfe, 0x6d, 0x83, 0xb4, 0xc1, 0xd5, 0x0d, 0x0e, 0x0b, 0x6c, 0x1b, 0x1c, 0x97, 0x67, 0x36, 0x08, 0x58, 0xd6, 0x0d, 0x4e, 0xcd, 0x6d, 0x1b, 0x1e, 0xbc, 0xd9, 0xe0, 0xb0, 0xc0, 0xb6, 0x41, 0xca, 0x69, 0xd5, 0x06, 0xe7, 0x05, 0x9a, 0x0d, 0x96, 0x70, 0xb8, 0x6d, 0x10, 0xb0, 0xac, 0x1b, 0xa4, 0xbc, 0x56, 0x6d, 0x90, 0x36, 0xb8, 0xba, 0xe1, 0x31, 0x99, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0x0e, 0x2b, 0x73, 0x1b, 0xa4, 0x33, 0xdb, 0x6d, 0x70, 0x5c, 0x9e, 0xd9, 0xe0, 0x74, 0xff, 0x76, 0x70, 0x5a, 0xac, 0x3b, 0x9c, 0x62, 0xd5, 0x1a, 0x14, 0x85, 0xde, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xcd, 0x29, 0x76, 0x0d, 0x0f, 0x4a, 0x6e, 0x70, 0x06, 0x7f, 0x3b, 0x88, 0x0a, 0x75, 0xab, 0x83, 0xc2, 0x49, 0x76, 0xd6, 0xa0, 0x44, 0x68, 0xd9, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0xca, 0x4c, 0xd4, 0x01, 0xf8, 0xba, 0x7b, 0x93, 0x23, 0x03, 0x31, 0x93, 0x7b, 0x6b, 0x03, 0xc1, 0x03, 0x49, 0x73, 0x03, 0x11, 0x63, 0x7b, 0x1b, 0x5b, 0x03, 0x49, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x31, 0x56, 0x70, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x1e, 0x44, 0x4a, 0x85, 0xd4, 0x06, 0x09, 0x8a, 0x96, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xc3, 0x02, 0xdb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x04, 0x4f, 0xed, 0x06, 0xc7, 0xb6, 0xb7, 0x83, 0xa3, 0xab, 0xdc, 0x41, 0x2a, 0xd0, 0xd8, 0x41, 0x41, 0x3c, 0x7e, 0x90, 0x48, 0xe9, 0xb4, 0x82, 0xcf, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0xc6, 0x0a, 0xae, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0x2a, 0xe7, 0x37, 0x48, 0x61, 0x8e, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xe5, 0x9c, 0xed, 0x06, 0x47, 0xd7, 0xc1, 0x0d, 0xd2, 0x99, 0xed, 0x36, 0x48, 0x1b, 0x5c, 0xdd, 0xe0, 0x74, 0xff, 0xb6, 0xc1, 0x12, 0x0e, 0xb7, 0x0d, 0x0e, 0x0b, 0x6c, 0x1b, 0x1c, 0x56, 0xe6, 0x36, 0x38, 0x2f, 0xd0, 0x6c, 0x90, 0x72, 0x5a, 0xb5, 0x41, 0x3a, 0xb3, 0xdd, 0x06, 0xa7, 0x55, 0xb8, 0x0d, 0xd2, 0x06, 0x57, 0x37, 0x38, 0xdd, 0xbf, 0x6d, 0x70, 0x5c, 0x9e, 0xd9, 0xe0, 0xbc, 0x40, 0xb3, 0x41, 0xca, 0x69, 0xd5, 0x06, 0x87, 0x95, 0xb9, 0x0d, 0xce, 0x0b, 0x34, 0x1b, 0x1c, 0x97, 0x67, 0x36, 0x38, 0xac, 0xcc, 0x6d, 0x70, 0x5a, 0x85, 0xdb, 0x20, 0x9d, 0xd9, 0x6e, 0x83, 0x94, 0xd3, 0xaa, 0x0d, 0xce, 0x0b, 0x34, 0x1b, 0x9c, 0xee, 0xdf, 0x36, 0x38, 0x2f, 0xd0, 0x6c, 0xb0, 0x84, 0xc3, 0x6d, 0x83, 0xd3, 0xfd, 0xdb, 0x06, 0x29, 0xa7, 0x55, 0x1b, 0xa4, 0x33, 0xdb, 0x6d, 0x70, 0x5e, 0xa0, 0xd9, 0xe0, 0xb4, 0x0a, 0xb7, 0xc1, 0x12, 0x0e, 0xb7, 0x0d, 0xd2, 0x99, 0xed, 0x36, 0x38, 0xad, 0xc2, 0x6d, 0x70, 0x5c, 0x9e, 0xd9, 0xe0, 0xbc, 0x40, 0xb3, 0x41, 0xda, 0xe0, 0xea, 0x06, 0x29, 0xa7, 0x55, 0x1b, 0x9c, 0x56, 0xe1, 0x36, 0x38, 0xdd, 0xbf, 0x6d, 0x90, 0x36, 0xb8, 0xba, 0xc1, 0x61, 0x65, 0x6e, 0x83, 0xd3, 0x2a, 0xdc, 0x06, 0xc7, 0xe5, 0x99, 0x0d, 0x0e, 0x0b, 0x6c, 0x1b, 0x2c, 0xe1, 0x70, 0xdb, 0xe0, 0xbc, 0x40, 0xb3, 0xc1, 0x61, 0x81, 0x6d, 0x83, 0x74, 0x66, 0xbb, 0x0d, 0x96, 0x70, 0xb8, 0x6d, 0x90, 0x36, 0xb8, 0xba, 0xc1, 0xe9, 0xfe, 0x6d, 0x83, 0xb4, 0xc1, 0xd5, 0x0d, 0x4e, 0xf7, 0x6f, 0x1b, 0xa4, 0x9c, 0x56, 0x6d, 0x70, 0x58, 0x99, 0xdb, 0x20, 0xe5, 0xb4, 0x6a, 0x83, 0xb4, 0xc1, 0xd5, 0x0d, 0x0e, 0x0b, 0x6c, 0x1b, 0x1c, 0x97, 0x67, 0x36, 0x38, 0xac, 0xcc, 0x6d, 0x70, 0x5c, 0x9e, 0xd9, 0xe0, 0xb0, 0xc0, 0xb6, 0xc1, 0x12, 0x0e, 0xb7, 0x0d, 0x52, 0x4e, 0xab, 0x36, 0x38, 0xdd, 0xbf, 0x6d, 0x70, 0x58, 0x60, 0xdb, 0x20, 0x9d, 0xd9, 0x6e, 0x83, 0xe3, 0xf2, 0xcc, 0x06, 0x87, 0x95, 0xb9, 0x0d, 0x4e, 0xab, 0x70, 0x1b, 0x2c, 0xe1, 0x70, 0xdb, 0xe0, 0xb0, 0xc0, 0xb6, 0xc1, 0x12, 0x0e, 0xb7, 0x0d, 0x4e, 0xab, 0x70, 0x1b, 0xa4, 0x0d, 0xae, 0x6e, 0x90, 0xce, 0x6c, 0xb7, 0xc1, 0x61, 0x65, 0x6e, 0x83, 0xc3, 0x02, 0xdb, 0xc1, 0x61, 0x79, 0xe6, 0x70, 0x8a, 0x2d, 0xf0, 0x6b, 0xeb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xf0, 0x6b, 0x6b, 0x03, 0xbd, 0x76, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0x31, 0x56, 0x70, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0xe2, 0x73, 0xd4, 0x06, 0xf1, 0xbc, 0x70, 0xb5, 0xe1, 0x83, 0x9c, 0x0d, 0x62, 0x97, 0xe1, 0x6a, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0x10, 0x05, 0x10, 0x3d, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0x4a, 0x1d, 0xae, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x07, 0x11, 0x0b, 0xd1, 0xb3, 0xe1, 0x83, 0x9c, 0x0d, 0xe2, 0x45, 0xe2, 0x6a, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0x10, 0x5d, 0x11, 0x3d, 0x1b, 0x3e, 0xc8, 0xd9, 0x20, 0x62, 0x2b, 0xae, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x07, 0x91, 0x20, 0xd1, 0xb3, 0xe1, 0x83, 0x9c, 0x0d, 0xa2, 0x29, 0xe3, 0x6a, 0x83, 0xa5, 0x6b, 0xa8, 0x07, 0xe1, 0xa9, 0x7a, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x87, 0x53, 0xac, 0xd6, 0x20, 0xd6, 0xc7, 0x7c, 0x36, 0x28, 0x25, 0xc4, 0xd7, 0xe0, 0x9c, 0xbf, 0xb4, 0xc1, 0x9b, 0x85, 0x4f, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x87, 0xd6, 0x36, 0x6e, 0x78, 0x50, 0x72, 0x83, 0xd8, 0xcd, 0xac, 0xda, 0xf0, 0xa0, 0xe4, 0x06, 0x71, 0xe2, 0x56, 0xb5, 0xe1, 0x6d, 0x9d, 0x0d, 0xe2, 0x8d, 0x00, 0xaa, 0x0d, 0x9f, 0xbb, 0x0c, 0xf0, 0x86, 0xcd, 0xb5, 0xbc, 0x8d, 0xd1, 0xcd, 0x1b, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0xb2, 0xe5, 0x55, 0x1b, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0xa2, 0x36, 0x52, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xd1, 0xe8, 0xda, 0xd8, 0x36, 0x28, 0xbb, 0x64, 0x37, 0x88, 0xf5, 0x31, 0x9f, 0x0d, 0x4e, 0x2b, 0x67, 0xb3, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0xc1, 0x1b, 0xb2, 0xd3, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0xde, 0x90, 0x9d, 0xb6, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xd7, 0x58, 0x9d, 0x9c, 0x5d, 0x19, 0x08, 0xdc, 0x5b, 0x9a, 0x1b, 0xdd, 0x41, 0xc4, 0xe6, 0x47, 0xad, 0x06, 0x91, 0x1a, 0xdc, 0xb3, 0x41, 0xd9, 0x25, 0xbb, 0x41, 0xa4, 0x06, 0xf7, 0x6c, 0xb8, 0xa3, 0x66, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x80, 0x67, 0xac, 0x4e, 0xce, 0xae, 0xdc, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0xa8, 0x11, 0x5f, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0xfa, 0x98, 0x4f, 0x1b, 0xa4, 0x9e, 0xc6, 0x1e, 0x9c, 0x9c, 0xfa, 0x56, 0x00, 0x2f, 0x38, 0xb9, 0x34, 0xbb, 0x16, 0xba, 0xb7, 0x16, 0xb8, 0x3a, 0x71, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x17, 0xfd, 0x26, 0x1f, 0x7e, 0xa8, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0x28, 0xe8, 0x55, 0x1b, 0xde, 0xd6, 0xd9, 0x20, 0x42, 0x3d, 0xaf, 0x5a, 0xc3, 0xdb, 0x3a, 0x07, 0xef, 0xf9, 0x4d, 0x6e, 0x05, 0xf0, 0x1d, 0x7b, 0x6b, 0x83, 0x93, 0x2b, 0x9b, 0x9b, 0x6b, 0x81, 0x7b, 0x4b, 0x73, 0xa3, 0x37, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x34, 0xd2, 0xab, 0x0e, 0x62, 0x6a, 0xf4, 0x6a, 0x05, 0xf8, 0xda, 0xc2, 0xd6, 0xca, 0x5a, 0xd6, 0x0d, 0x8f, 0x8f, 0x6c, 0x10, 0xfa, 0x25, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x37, 0x83, 0x7c, 0x1e, 0xbc, 0xf7, 0x2b, 0x64, 0x83, 0x38, 0x0d, 0xbd, 0x6a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x79, 0xa6, 0x57, 0x1d, 0xc4, 0xd4, 0xe8, 0xd5, 0x06, 0xaf, 0x33, 0xaf, 0x3e, 0x88, 0xec, 0xd1, 0xab, 0x15, 0xc0, 0x27, 0x8c, 0x8c, 0xac, 0x05, 0xee, 0x2d, 0xcd, 0x8d, 0x6e, 0xde, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x9a, 0x55, 0xaf, 0x3a, 0x88, 0xa9, 0xd1, 0xab, 0xc3, 0x29, 0xd6, 0x02, 0xf0, 0x50, 0x36, 0x46, 0x36, 0x17, 0xd6, 0x22, 0x17, 0x76, 0xd7, 0x22, 0x57, 0x36, 0xf6, 0x66, 0x57, 0x26, 0x6f, 0x78, 0x7c, 0x64, 0x83, 0x78, 0x2a, 0xea, 0xd9, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x19, 0xe4, 0xf3, 0xf0, 0x43, 0xcd, 0x1a, 0xfe, 0x5c, 0xda, 0x20, 0x31, 0xf1, 0x68, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xfb, 0xf0, 0x43, 0xcd, 0x41, 0x5c, 0x1b, 0x4d, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x1e, 0x27, 0x98, 0xb9, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xf1, 0xbb, 0x86, 0xb7, 0x75, 0x06, 0xb7, 0x0f, 0x92, 0x6f, 0x8f, 0x0e, 0x0a, 0x4a, 0xf1, 0x0d, 0x0a, 0xd2, 0xd8, 0xc1, 0xc7, 0x0d, 0x62, 0x6a, 0xf4, 0x6a, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x7c, 0xec, 0xc2, 0xd8, 0xd2, 0xc8, 0x5a, 0xd0, 0xc2, 0xe6, 0xd0, 0xc3, 0x3f, 0x3c, 0x1b, 0xbc, 0xce, 0xbc, 0xba, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xf8, 0xd3, 0xdc, 0x5a, 0xde, 0xe4, 0xc8, 0xca, 0xe4, 0xc3, 0x3f, 0x3c, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf9, 0x20, 0xf9, 0xf6, 0xa8, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x3c, 0xd9, 0x5e, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe7, 0x83, 0xe4, 0xdb, 0xa3, 0x36, 0x28, 0x48, 0x63, 0x07, 0xc7, 0xd7, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x0d, 0x5b, 0x69, 0x83, 0xf8, 0x92, 0xbd, 0x3a, 0x08, 0x56, 0xd6, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0xe2, 0xea, 0xf6, 0x6a, 0x0d, 0x6f, 0xeb, 0x0c, 0xee, 0x0e, 0xf0, 0x91, 0xbd, 0xb5, 0x85, 0xa5, 0xb9, 0x87, 0x7f, 0x78, 0x3a, 0x88, 0xab, 0xdb, 0xab, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0xcf, 0xec, 0x0d, 0x5e, 0xc3, 0xdb, 0x3a, 0x03, 0xbc, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2d, 0xf0, 0xe1, 0x1f, 0x9e, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x35, 0x4c, 0xdc, 0x80, 0x6f, 0x16, 0x46, 0x46, 0x6e, 0x98, 0xb8, 0x01, 0xdf, 0xac, 0xad, 0x8e, 0x0d, 0x7c, 0x33, 0xb8, 0xb7, 0x7b, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x72, 0x12, 0x7b, 0xc0, 0x33, 0x7b, 0x83, 0x5b, 0xc3, 0xdb, 0x3a, 0x1b, 0xa4, 0x68, 0x1a, 0x1f, 0x44, 0x3f, 0xf0, 0xd5, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xad, 0x26, 0xe9, 0x20, 0xfa, 0x81, 0xaf, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xf0, 0xf2, 0xe6, 0xe2, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x91, 0xdf, 0xab, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xf2, 0x7f, 0xaf, 0xda, 0xa0, 0xa8, 0x14, 0x3f, 0x48, 0xa4, 0x74, 0x5a, 0xc3, 0xdb, 0x3a, 0x83, 0x8b, 0x07, 0x71, 0xc0, 0x7b, 0xd5, 0x06, 0x05, 0x69, 0xec, 0x80, 0x2f, 0x56, 0x46, 0x17, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0x8c, 0xf8, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xe2, 0xe3, 0x6e, 0x70, 0x60, 0x27, 0x59, 0xc3, 0xc7, 0x51, 0x1b, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x88, 0x03, 0xde, 0xab, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x97, 0x37, 0x17, 0xd7, 0x06, 0x05, 0x69, 0xec, 0xe0, 0xf9, 0x1a, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x22, 0x13, 0x77, 0xc3, 0x83, 0x37, 0x1b, 0xc4, 0x97, 0xec, 0x55, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0xc4, 0xdd, 0xf0, 0xe0, 0xcd, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xa6, 0x8c, 0xaf, 0x6a, 0x83, 0x98, 0x5e, 0xbe, 0xda, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x88, 0x11, 0xe4, 0xab, 0x83, 0x78, 0x5e, 0xbe, 0xda, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xcc, 0x09, 0x38, 0x88, 0x7e, 0xe0, 0xab, 0x0d, 0x22, 0x19, 0xf9, 0x6a, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xa2, 0xf4, 0xf7, 0xaa, 0x0d, 0x52, 0xac, 0x9d, 0x0e, 0xd2, 0xab, 0x9d, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0x78, 0x37, 0x7d, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0x88, 0xdd, 0xbd, 0x3a, 0x88, 0xc1, 0xda, 0xab, 0x0d, 0x0a, 0xd2, 0xd8, 0xc1, 0xd5, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x6a, 0xe3, 0xe1, 0x1f, 0x9e, 0x0d, 0x0a, 0xd2, 0xd8, 0x81, 0x3f, 0xd3, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x90, 0x38, 0x3a, 0x48, 0x7c, 0x8e, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x12, 0xd4, 0xeb, 0x20, 0xf1, 0x39, 0x6a, 0x0d, 0x6f, 0xeb, 0x0c, 0x7e, 0x1e, 0xc4, 0x01, 0xef, 0x55, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xdd, 0xf4, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0x78, 0xbc, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x13, 0xd4, 0x57, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb8, 0xa7, 0xbe, 0x3a, 0x88, 0x1b, 0xfe, 0xa8, 0x83, 0xb8, 0xc5, 0xbd, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xf8, 0x38, 0x79, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xe9, 0xc3, 0x83, 0xc4, 0xe7, 0xa8, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x67, 0x7a, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xf1, 0xf2, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xf8, 0x38, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x13, 0xd4, 0x57, 0x1b, 0xc4, 0x77, 0x22, 0xd4, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x1b, 0xa4, 0x4d, 0xe4, 0x6e, 0x78, 0x5b, 0x67, 0x80, 0xd7, 0x2c, 0xad, 0x8c, 0x8d, 0xac, 0xc5, 0x3d, 0xfc, 0xc3, 0x73, 0x90, 0x48, 0xe9, 0xd4, 0x06, 0x05, 0x69, 0xec, 0x80, 0x07, 0x57, 0x27, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xeb, 0x8c, 0x5c, 0x0e, 0x12, 0x9f, 0xa3, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0xc7, 0xa9, 0xb5, 0xe1, 0xdd, 0xbc, 0x35, 0xfc, 0x9b, 0xb3, 0xc1, 0xa1, 0x76, 0xef, 0x20, 0x6e, 0x7b, 0xaa, 0x0e, 0xe2, 0xb6, 0xa7, 0xea, 0x70, 0x8a, 0x2d, 0x80, 0xf7, 0x5c, 0x99, 0x5c, 0x5a, 0x18, 0x5b, 0x9a, 0x5e, 0x59, 0x0b, 0xdc, 0x5b, 0x9a, 0x1b, 0xbd, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xfc, 0x86, 0x5f, 0x75, 0x10, 0x53, 0xa3, 0x57, 0xb3, 0x00, 0xbe, 0x65, 0x63, 0x64, 0x73, 0x61, 0x2d, 0x72, 0x61, 0x77, 0x2d, 0x73, 0x69, 0x67, 0xee, 0x86, 0xc7, 0x47, 0x36, 0x78, 0x55, 0x9a, 0xe2, 0x86, 0x5f, 0x94, 0x36, 0x88, 0xce, 0xd3, 0xab, 0x0d, 0x7f, 0xd1, 0x6c, 0x10, 0x1d, 0xb0, 0x57, 0x1b, 0x14, 0xa4, 0xb1, 0x83, 0x8f, 0x1b, 0xc4, 0xd4, 0xe8, 0xd5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xc6, 0xc7, 0xaf, 0x0e, 0xff, 0xf0, 0x1c, 0xc4, 0x8b, 0xea, 0xd5, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0x78, 0x39, 0x78, 0x83, 0x12, 0x3a, 0x76, 0x83, 0xc7, 0x09, 0x66, 0x1e, 0x84, 0xe9, 0xd8, 0x1a, 0x7e, 0x71, 0xd9, 0xe0, 0xf8, 0xc9, 0x77, 0x90, 0x5e, 0xed, 0xb4, 0x41, 0x41, 0x1a, 0x3b, 0xc0, 0x37, 0xd7, 0x82, 0x96, 0x76, 0x86, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0xb0, 0x95, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0x41, 0xc0, 0xb2, 0x1e, 0x9c, 0xe4, 0xf9, 0x0e, 0xa2, 0x75, 0xf7, 0x6a, 0x83, 0xe3, 0xd8, 0xc4, 0x06, 0xe7, 0x76, 0xbe, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xbc, 0xab, 0x5f, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x41, 0xc4, 0xee, 0x5e, 0x1d, 0x9c, 0xe4, 0xf9, 0x36, 0x38, 0x8e, 0x4d, 0x2c, 0xf0, 0x72, 0x70, 0x1b, 0x44, 0x69, 0xfb, 0xd5, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xe3, 0x07, 0xb1, 0xf6, 0x7e, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x41, 0x8c, 0x20, 0x5f, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xf3, 0x83, 0x58, 0x7b, 0xbf, 0xaa, 0x0d, 0x0a, 0xd2, 0xd8, 0xc1, 0xed, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x91, 0x89, 0xbb, 0xe1, 0xc1, 0x9b, 0x83, 0x38, 0x8c, 0xbf, 0xda, 0xe0, 0x38, 0x36, 0xb1, 0xc1, 0xa1, 0xb5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x86, 0xad, 0xb4, 0x41, 0xb4, 0xc0, 0x5f, 0x1d, 0x44, 0xeb, 0xee, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x06, 0xa9, 0x42, 0x51, 0x07, 0xc1, 0xca, 0xba, 0xe1, 0x17, 0x97, 0x0d, 0x52, 0x85, 0xa2, 0x36, 0x88, 0x16, 0xf8, 0xab, 0x83, 0x93, 0x3c, 0xdf, 0xe1, 0x14, 0x5b, 0x00, 0xff, 0xb6, 0x3a, 0xb6, 0x16, 0xb8, 0xb7, 0x34, 0x37, 0xba, 0x96, 0xb9, 0xb1, 0x30, 0xb6, 0x30, 0x79, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x08, 0xba, 0xbf, 0xea, 0x20, 0xa6, 0x46, 0xaf, 0x66, 0x0d, 0x62, 0xe3, 0xb6, 0x67, 0x83, 0xb2, 0x4b, 0x76, 0x83, 0xd8, 0xb8, 0xed, 0x59, 0xc3, 0x25, 0xb5, 0xc6, 0xe3, 0x0d, 0x62, 0xe3, 0xb6, 0xa7, 0x66, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x01, 0xbc, 0xe8, 0xc2, 0xce, 0xce, 0xca, 0xc8, 0x5a, 0xd0, 0xc2, 0xe6, 0xd0, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0xd6, 0x17, 0x1d, 0xaf, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0x7b, 0xf8, 0xa1, 0x66, 0x83, 0x18, 0x84, 0x71, 0xaa, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x0f, 0x2d, 0x8c, 0xde, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x07, 0xa9, 0x7a, 0xbd, 0x07, 0x31, 0x42, 0x56, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xb5, 0x8e, 0x0f, 0x96, 0x8e, 0x04, 0xb7, 0xc1, 0x89, 0xfd, 0x66, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0x09, 0x92, 0x55, 0x07, 0x31, 0x42, 0x56, 0xb5, 0x41, 0x61, 0xa8, 0xba, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x41, 0x0a, 0x74, 0xea, 0x41, 0x42, 0x88, 0xed, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x8b, 0xa3, 0x37, 0x28, 0x2a, 0xc5, 0xd7, 0xe0, 0xe8, 0x3a, 0xb8, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0x79, 0xbb, 0x3a, 0x48, 0xa4, 0x74, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0xa4, 0x9e, 0xc6, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x0f, 0x2d, 0x8c, 0xae, 0x0d, 0xa2, 0x9d, 0x00, 0xab, 0x66, 0x01, 0x3e, 0xb6, 0x34, 0x33, 0xba, 0x16, 0x7c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xfc, 0x20, 0x66, 0xe8, 0xa5, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xd9, 0x84, 0xb9, 0xc1, 0xe3, 0x04, 0x33, 0xdb, 0xa0, 0x20, 0x8d, 0x1d, 0x7c, 0xdc, 0x20, 0xa6, 0x46, 0xaf, 0x36, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0xce, 0x36, 0x48, 0xa6, 0x74, 0xda, 0x20, 0x46, 0x90, 0xaf, 0xda, 0xa0, 0xa0, 0xc8, 0xdc, 0xa0, 0x20, 0x8d, 0x1d, 0xf0, 0xcc, 0xde, 0xe0, 0x0d, 0xa2, 0xb1, 0xf7, 0x6a, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x0d, 0x13, 0xb7, 0x41, 0x8c, 0xfc, 0x5e, 0x1d, 0x44, 0xfe, 0xef, 0xd5, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0x43, 0xe0, 0xab, 0x83, 0x78, 0x10, 0xbe, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xf8, 0x31, 0x78, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x9f, 0xc3, 0x57, 0x1b, 0x44, 0x0a, 0xf1, 0xd5, 0xc1, 0x69, 0x81, 0x66, 0x83, 0x82, 0x34, 0x76, 0xf0, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x63, 0xc4, 0x57, 0x1b, 0x44, 0xcc, 0xf1, 0xd5, 0x1a, 0xde, 0xd6, 0x19, 0xf8, 0x31, 0xb8, 0x36, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0x6f, 0xce, 0x06, 0x31, 0x06, 0x81, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0x8c, 0xf8, 0x6a, 0x83, 0x80, 0x65, 0x3d, 0x48, 0xaf, 0x76, 0xda, 0xa0, 0xa0, 0xc8, 0xdc, 0xe0, 0xc4, 0x7e, 0xb3, 0xc1, 0x59, 0x0a, 0x6c, 0x83, 0xc2, 0x50, 0x75, 0x83, 0x64, 0x4a, 0xa7, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0f, 0xde, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xb0, 0xbb, 0xdd, 0x20, 0xc5, 0xda, 0xe9, 0x20, 0x58, 0x59, 0x37, 0x48, 0xb1, 0x76, 0xda, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x88, 0x11, 0xe4, 0xab, 0x83, 0xf4, 0x6a, 0xa7, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0xf8, 0xec, 0xca, 0xe4, 0xd2, 0xcc, 0xf2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x48, 0xbb, 0xc0, 0x6a, 0x00, 0xdf, 0xb9, 0x31, 0x34, 0xb7, 0x37, 0x39, 0x39, 0x10, 0xbb, 0x32, 0xb9, 0x34, 0xb3, 0xbc, 0x0d, 0x8f, 0x8f, 0x6c, 0x10, 0x07, 0x90, 0x3d, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xe0, 0xe1, 0xd6, 0x83, 0x98, 0xa1, 0x97, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0xb7, 0x07, 0x31, 0x43, 0x2f, 0xb5, 0x86, 0x3f, 0x97, 0x36, 0x48, 0x4c, 0x3c, 0x3a, 0x88, 0x8e, 0x21, 0xaa, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x83, 0xd5, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x1a, 0xb6, 0xd2, 0x06, 0xa9, 0xa7, 0xb1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0xf8, 0x77, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0x6f, 0xeb, 0x0c, 0x3c, 0xdc, 0x5a, 0x6d, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0xb0, 0x95, 0x36, 0x48, 0x3d, 0x8d, 0xdd, 0x20, 0x5e, 0xcf, 0xaa, 0xda, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0x6d, 0x90, 0x02, 0x9d, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x8a, 0x7f, 0x37, 0x28, 0x2a, 0xc5, 0x0f, 0x96, 0x3f, 0xb1, 0xb6, 0x41, 0x41, 0x1a, 0x3b, 0xf8, 0xb8, 0x41, 0x4c, 0x8d, 0x5e, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x70, 0x75, 0xf0, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0x95, 0x01, 0x56, 0x07, 0xd1, 0xf1, 0x81, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0x80, 0x07, 0x57, 0x07, 0xb7, 0xc1, 0x32, 0x27, 0xd9, 0x0d, 0x0a, 0xd2, 0xd8, 0x81, 0x87, 0x83, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf5, 0x41, 0xbc, 0x95, 0x60, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x2e, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa2, 0xd9, 0x0d, 0x0e, 0x2b, 0x73, 0x1b, 0x94, 0x42, 0xe4, 0x07, 0xcb, 0x9f, 0x58, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc3, 0x56, 0xda, 0xe0, 0xf8, 0xc9, 0x77, 0x10, 0x49, 0x0a, 0x58, 0x1b, 0x2c, 0x73, 0x92, 0xdd, 0xa0, 0x20, 0x8d, 0x1d, 0x7c, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x99, 0xb8, 0x1b, 0x1c, 0x56, 0xe6, 0x0e, 0x96, 0x3f, 0xb1, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x86, 0xad, 0xb4, 0xc1, 0xe1, 0x9c, 0xef, 0x20, 0x5a, 0x77, 0xaf, 0x36, 0x58, 0xe6, 0x24, 0xbb, 0x41, 0x41, 0x1a, 0x3b, 0x78, 0xb9, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0xc2, 0xee, 0x76, 0x83, 0x25, 0xd5, 0x49, 0x1b, 0x44, 0xec, 0xee, 0xd5, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x4a, 0xf7, 0xaf, 0x5a, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x07, 0x11, 0x0e, 0xd8, 0xb3, 0x41, 0x61, 0xa8, 0xba, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0x70, 0x70, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xdb, 0xca, 0x1b, 0x1c, 0x56, 0xe6, 0xd6, 0xe0, 0xe8, 0x3a, 0xb8, 0xc1, 0x21, 0x74, 0x62, 0x0d, 0x6f, 0xeb, 0x0c, 0x8e, 0x0f, 0x3c, 0x1c, 0xdc, 0xc1, 0xa1, 0xaf, 0xaf, 0x0d, 0x0a, 0xd2, 0xd8, 0x81, 0x0f, 0x0b, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x71, 0x89, 0x7f, 0xb5, 0x41, 0xc4, 0x56, 0x5f, 0x1d, 0x9c, 0xe4, 0xf9, 0x36, 0x28, 0x48, 0x63, 0x07, 0x5e, 0x4c, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x25, 0xfe, 0xd5, 0x1a, 0xde, 0xd6, 0x39, 0x88, 0x2b, 0x19, 0xac, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x0d, 0x22, 0x76, 0xf7, 0xea, 0xa0, 0xcc, 0x96, 0x6e, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xa0, 0x91, 0xe6, 0x66, 0x96, 0xe6, 0x96, 0x46, 0x57, 0xf6, 0xdb, 0xf0, 0x08, 0xeb, 0x1a, 0xfe, 0xcd, 0x59, 0xc3, 0xdb, 0x3a, 0x83, 0xe3, 0x07, 0xef, 0x2d, 0x30, 0xdc, 0xf0, 0xb6, 0xce, 0xe0, 0xf8, 0xc1, 0x43, 0x06, 0x0c, 0xd7, 0xf0, 0x36, 0xeb, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf9, 0xc1, 0x7b, 0x0b, 0x0c, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7e, 0xf0, 0x90, 0x01, 0xc3, 0x36, 0x58, 0xe6, 0x24, 0xbb, 0x41, 0x41, 0x1a, 0x3b, 0xf0, 0x72, 0xf2, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x86, 0x57, 0xaf, 0x36, 0x88, 0x8c, 0x76, 0xab, 0x83, 0xd8, 0x77, 0xb7, 0xda, 0xa0, 0xd8, 0xd1, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x61, 0x77, 0xbb, 0x86, 0xb7, 0x75, 0x06, 0xcf, 0x0f, 0x22, 0x28, 0x15, 0xea, 0x20, 0x58, 0x59, 0x37, 0x58, 0xe6, 0x24, 0xbb, 0xe1, 0xdf, 0x9c, 0x0d, 0x8e, 0x9f, 0x7c, 0x1b, 0xde, 0xd6, 0x19, 0x1c, 0x3f, 0x88, 0xa0, 0x54, 0xa8, 0x59, 0x83, 0x57, 0xa5, 0x29, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xbc, 0x2a, 0x4d, 0xb1, 0x01, 0x78, 0x98, 0x1b, 0x43, 0x73, 0x7b, 0x93, 0x93, 0x03, 0x99, 0x4b, 0x3b, 0x73, 0x0b, 0xa3, 0xab, 0x93, 0x2b, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0x11, 0x60, 0xdb, 0xb3, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x7e, 0x6e, 0x3d, 0x88, 0x19, 0x7a, 0xa9, 0x0d, 0xa2, 0x71, 0x03, 0x6b, 0x83, 0x08, 0xf9, 0x9c, 0x6a, 0xc3, 0x5f, 0x34, 0x1b, 0x44, 0xc7, 0x10, 0xd5, 0x06, 0x05, 0x1f, 0xe6, 0x06, 0xb1, 0xfd, 0x81, 0xb5, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc3, 0x56, 0xda, 0x20, 0xf5, 0x34, 0xf6, 0x60, 0x49, 0x4e, 0xea, 0x06, 0x05, 0x69, 0xec, 0xe0, 0xe3, 0x06, 0x31, 0x35, 0x7a, 0xb5, 0xe1, 0xdd, 0xbc, 0x35, 0xfc, 0x4a, 0xb6, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x78, 0xb3, 0xe1, 0x6d, 0x9d, 0x81, 0x9f, 0x5b, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0x6d, 0x10, 0x5b, 0x49, 0x58, 0x07, 0xd1, 0xba, 0x7b, 0xd5, 0x06, 0x05, 0x69, 0xec, 0xc0, 0xc3, 0xc1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb8, 0xc4, 0xbf, 0xda, 0x20, 0x62, 0xab, 0xaf, 0x36, 0x88, 0xad, 0x24, 0xac, 0x36, 0x28, 0x48, 0x63, 0x07, 0x27, 0xd7, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7e, 0x10, 0x57, 0x32, 0x58, 0x07, 0xc1, 0xca, 0xba, 0x41, 0x6c, 0x25, 0x61, 0x6d, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x1b, 0x44, 0xec, 0xee, 0xd5, 0x41, 0x94, 0x30, 0x61, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x4e, 0xaf, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x21, 0x06, 0x62, 0x83, 0x72, 0x5d, 0x76, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0xb4, 0x0b, 0xd6, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x88, 0x2b, 0xce, 0x9e, 0x35, 0xfc, 0xe2, 0x72, 0xb0, 0xce, 0xd9, 0xad, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x9e, 0x99, 0x6c, 0xb7, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x31, 0xed, 0x82, 0xb5, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0xe2, 0xe6, 0xb3, 0x67, 0x83, 0xc2, 0x50, 0x75, 0x83, 0xf8, 0x81, 0xc1, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xc5, 0xb6, 0xf2, 0x06, 0x87, 0x95, 0xb9, 0x35, 0x38, 0xba, 0x0e, 0x6e, 0x70, 0x08, 0x9d, 0xd8, 0x20, 0x02, 0x64, 0xb0, 0x0e, 0x4e, 0x4e, 0x7d, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0xfc, 0x1a, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x0d, 0x5e, 0x92, 0x6c, 0x77, 0x10, 0xad, 0xbb, 0x57, 0x1b, 0xde, 0xcd, 0x5b, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0xb6, 0xce, 0xc0, 0xaf, 0xc1, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0xbc, 0x9c, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x4b, 0xfc, 0xab, 0x0d, 0x22, 0xb6, 0xfa, 0x6a, 0x83, 0xc8, 0xc8, 0xc2, 0x6a, 0x83, 0x82, 0x34, 0x76, 0xf0, 0x75, 0x0d, 0x1f, 0xe4, 0x6c, 0x10, 0x9d, 0x3d, 0x58, 0x1b, 0x44, 0x46, 0x16, 0xd6, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x41, 0xc4, 0xee, 0x5e, 0x1d, 0x44, 0xb3, 0x16, 0xd6, 0x06, 0x05, 0x69, 0xec, 0xe0, 0xe5, 0x1a, 0x9c, 0xd8, 0x6f, 0x36, 0x08, 0xbb, 0xdb, 0x0d, 0x96, 0x54, 0x27, 0x6d, 0x10, 0xb1, 0xbb, 0x57, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0xc4, 0xb4, 0x0b, 0xd6, 0x06, 0xd1, 0xf5, 0x82, 0xb5, 0x41, 0x61, 0xa8, 0xba, 0x41, 0xfc, 0xc0, 0x60, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x62, 0x5b, 0x79, 0x83, 0xc3, 0xca, 0xdc, 0x1a, 0x1c, 0x5d, 0x07, 0x37, 0x38, 0x84, 0x4e, 0x6c, 0x10, 0x01, 0x32, 0x58, 0x1b, 0xc4, 0x04, 0x10, 0x56, 0x6d, 0x50, 0x90, 0xc6, 0x6e, 0x90, 0x98, 0x78, 0xb4, 0x06, 0xab, 0x7a, 0x95, 0x36, 0x28, 0xeb, 0x6d, 0x37, 0x38, 0xac, 0xcc, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xc2, 0xee, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x13, 0x68, 0x83, 0x34, 0xef, 0xaa, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x6e, 0x50, 0x4e, 0x40, 0x1f, 0x94, 0xea, 0xb2, 0x1d, 0x44, 0xeb, 0xee, 0xd5, 0x41, 0x4c, 0x00, 0x61, 0x6d, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xa4, 0x5d, 0x60, 0xb5, 0x41, 0x04, 0xc8, 0x60, 0x6d, 0x70, 0x08, 0x9d, 0x38, 0x58, 0xfe, 0xc4, 0x7a, 0x90, 0x46, 0x7b, 0x74, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x0a, 0x4e, 0x6f, 0xf8, 0x8b, 0x66, 0x0d, 0xff, 0xce, 0xaf, 0x41, 0x2c, 0xf0, 0x5e, 0xd5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x07, 0x11, 0x80, 0xdb, 0xb3, 0xe1, 0xc1, 0x9b, 0x0d, 0xce, 0x0b, 0x34, 0x6b, 0x50, 0x18, 0xaa, 0xae, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x0f, 0x62, 0x49, 0xb7, 0x67, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0xc4, 0x1a, 0x6f, 0xcf, 0x1a, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0xfc, 0x20, 0x16, 0x7d, 0x7b, 0x3a, 0x9c, 0x62, 0x0b, 0xe0, 0x4f, 0x56, 0x36, 0xf6, 0xd6, 0x06, 0x27, 0x57, 0x36, 0x37, 0xd7, 0x02, 0xf7, 0x96, 0xe6, 0x46, 0x6f, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x5b, 0x6d, 0x58, 0x1d, 0xc4, 0xd4, 0xe8, 0xd5, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x2b, 0xc0, 0xaf, 0x16, 0x36, 0xf6, 0x26, 0x96, 0x16, 0xe6, 0x6e, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xc4, 0xf7, 0x1b, 0xd6, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xbe, 0x6a, 0x61, 0x63, 0x6f, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x1b, 0x3e, 0x57, 0xda, 0x20, 0x06, 0x61, 0x9c, 0x36, 0x88, 0x1b, 0xfd, 0xa8, 0x83, 0x58, 0x88, 0x71, 0x3a, 0x9c, 0x62, 0x6b, 0x10, 0xeb, 0x63, 0x3e, 0x1b, 0x94, 0x65, 0xd8, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0xf0, 0x88, 0xe5, 0xd1, 0x95, 0xcd, 0x87, 0x1f, 0x6a, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xb1, 0xc0, 0x7b, 0x75, 0x10, 0xd1, 0x68, 0x58, 0xcd, 0x32, 0x6b, 0x10, 0x41, 0xf7, 0x57, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xf8, 0xe0, 0x71, 0x82, 0x99, 0x6b, 0xf8, 0x73, 0x69, 0x80, 0x6f, 0x6e, 0x2c, 0x8c, 0x2d, 0x4c, 0x3e, 0xfc, 0x50, 0xd3, 0x86, 0xbf, 0x68, 0x36, 0x78, 0x9c, 0x60, 0xe6, 0x06, 0x05, 0x69, 0xec, 0xe0, 0xea, 0x1a, 0xde, 0xd6, 0x19, 0x78, 0xb5, 0xb1, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0x44, 0xc5, 0xf7, 0xd5, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x31, 0x41, 0x7d, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x7b, 0xea, 0xab, 0x83, 0xf4, 0xa4, 0xc1, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x11, 0x78, 0x58, 0xad, 0x06, 0x51, 0x49, 0x7b, 0xb5, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0xc9, 0xdd, 0x70, 0xf8, 0xa1, 0x66, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0xf8, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xc5, 0xbf, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0xbc, 0x1c, 0xd2, 0xaf, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xac, 0xd3, 0x61, 0xd5, 0x6a, 0x10, 0xa1, 0xa0, 0x57, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x4e, 0x43, 0xaf, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xe3, 0x04, 0x33, 0x37, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x12, 0x6d, 0xaf, 0x3a, 0x88, 0xec, 0xd1, 0xab, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x97, 0xf8, 0x57, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf3, 0x20, 0x16, 0xd2, 0xb0, 0x0e, 0x22, 0x7b, 0xf4, 0x6a, 0x35, 0x88, 0x34, 0xd2, 0xab, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xde, 0x90, 0x9d, 0x76, 0xf0, 0x38, 0xc1, 0xcc, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0xa1, 0x66, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xb2, 0x38, 0x7a, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0x4a, 0xfe, 0xb0, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf8, 0xc1, 0xcb, 0x05, 0x33, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0x93, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0x20, 0x60, 0x59, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x86, 0x07, 0x6f, 0x36, 0x28, 0x52, 0xc7, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf9, 0xc1, 0xcb, 0x05, 0x33, 0xab, 0x56, 0x83, 0xc8, 0x33, 0xbd, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0xda, 0x5d, 0xaf, 0x0e, 0xa2, 0x13, 0xf5, 0x6a, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xa0, 0xe0, 0xc3, 0xdc, 0x20, 0x92, 0x02, 0xb1, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x2a, 0x69, 0xaf, 0x3a, 0x88, 0xc1, 0xda, 0xab, 0x0d, 0x0a, 0xd2, 0xd8, 0xc1, 0xed, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x62, 0x48, 0xd6, 0x06, 0x45, 0xa5, 0xf8, 0x06, 0x51, 0xf2, 0x87, 0x75, 0x50, 0x10, 0x8f, 0x6f, 0x50, 0x90, 0xc6, 0x0e, 0xbe, 0x6e, 0x78, 0xf0, 0x66, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x24, 0xea, 0xaa, 0x35, 0x28, 0x3a, 0x8d, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x87, 0xd6, 0x36, 0xb6, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0x92, 0x3f, 0xac, 0x83, 0x94, 0x99, 0xc6, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0x44, 0xe3, 0xe5, 0xd5, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x65, 0x71, 0xf4, 0x06, 0x45, 0xa5, 0xf8, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x94, 0xfc, 0x61, 0x1d, 0xc4, 0x60, 0xed, 0xd5, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0x4a, 0xfe, 0xb0, 0x0e, 0x22, 0x7b, 0xf4, 0x6a, 0x83, 0x83, 0x04, 0xcc, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0x4a, 0xfe, 0xb0, 0x0e, 0xd2, 0x84, 0xa2, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0xe0, 0xd0, 0xda, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x84, 0x48, 0xac, 0x35, 0x88, 0x92, 0x3f, 0xac, 0x83, 0x34, 0xef, 0xaa, 0x35, 0x88, 0x92, 0x3f, 0xac, 0x83, 0x54, 0xa1, 0xa8, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x48, 0xa2, 0xae, 0x5a, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x48, 0x88, 0xc4, 0xda, 0x20, 0x1e, 0x23, 0xb1, 0x36, 0x38, 0xb1, 0xdf, 0x6c, 0x10, 0x8d, 0x97, 0x57, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x94, 0xc5, 0xd1, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x1c, 0x5d, 0x07, 0x37, 0x88, 0xf2, 0x49, 0xac, 0x0d, 0x62, 0x96, 0x12, 0x6b, 0x83, 0x52, 0x88, 0xfc, 0x20, 0x7e, 0x2b, 0xb1, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x38, 0xb4, 0xb6, 0x6c, 0x10, 0x0f, 0x97, 0x58, 0x07, 0xf1, 0x70, 0x89, 0xb5, 0x1a, 0x44, 0xb3, 0xea, 0xd5, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3c, 0x78, 0x9c, 0x60, 0xe6, 0x1a, 0xfe, 0x5c, 0x1a, 0x5c, 0x3c, 0x78, 0x9c, 0x60, 0x66, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x71, 0x82, 0x99, 0x1b, 0x14, 0xa4, 0xb1, 0x83, 0xab, 0x1b, 0xc4, 0x68, 0x1e, 0xd6, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x8a, 0xef, 0xab, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x2c, 0x66, 0x5f, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0x9e, 0xfa, 0xea, 0xf0, 0xd0, 0xcf, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xee, 0xa9, 0xaf, 0x0e, 0x6f, 0xa1, 0xd5, 0xe1, 0x14, 0xab, 0x35, 0x88, 0xdf, 0xf0, 0xab, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x4b, 0x84, 0x58, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0x43, 0xcd, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x65, 0x71, 0xf4, 0x06, 0x45, 0xa5, 0xf8, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x94, 0xfc, 0x61, 0x1d, 0x44, 0x6d, 0x22, 0xd6, 0x06, 0x31, 0x68, 0x88, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x26, 0x73, 0x70, 0x66, 0x6e, 0x6b, 0xd6, 0x20, 0xc6, 0xc7, 0xaf, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xcc, 0x2b, 0x62, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0x9f, 0x2b, 0x6d, 0x90, 0x92, 0xcb, 0xb8, 0x41, 0x94, 0x81, 0x36, 0x1d, 0xc4, 0x8c, 0x7e, 0xd4, 0x06, 0x05, 0x69, 0xec, 0xe0, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xc2, 0x52, 0xaf, 0x0e, 0xe2, 0x45, 0xf5, 0x6a, 0x83, 0x82, 0x34, 0x76, 0xe0, 0xe5, 0xe0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x34, 0x8b, 0x5e, 0x1d, 0xa4, 0xcc, 0x34, 0x6e, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0x82, 0x67, 0x73, 0x83, 0x68, 0x81, 0xbf, 0xda, 0xf0, 0x6e, 0xde, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0xc1, 0xf1, 0x93, 0x6f, 0x83, 0x82, 0x34, 0x76, 0xc0, 0x33, 0x7b, 0x73, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x11, 0xd5, 0x7d, 0xd5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x1a, 0x26, 0x6e, 0x83, 0x18, 0xf9, 0xbd, 0xda, 0x30, 0x71, 0x1b, 0x44, 0xe9, 0xef, 0x55, 0xe0, 0x9b, 0xa5, 0xb9, 0xd9, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x94, 0x93, 0xd8, 0x03, 0x9e, 0xd9, 0x9b, 0xdb, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x45, 0xd3, 0xf8, 0x20, 0x06, 0x63, 0xb1, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xc5, 0xa9, 0xf6, 0x41, 0x0c, 0xc6, 0x62, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xf8, 0xbc, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xb1, 0xfd, 0x7c, 0xb5, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xf1, 0x07, 0x8b, 0xd5, 0x41, 0xca, 0x4c, 0xe3, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xf1, 0x39, 0x7c, 0xb5, 0xc1, 0xeb, 0xcc, 0xab, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x88, 0xed, 0xe7, 0xab, 0x0d, 0x8e, 0x9f, 0x7c, 0x07, 0xd1, 0x3d, 0x7a, 0xb5, 0xe1, 0xdd, 0xbc, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0xc1, 0x9b, 0x83, 0xc3, 0x39, 0xdf, 0x86, 0x5f, 0x5c, 0x36, 0x38, 0x7e, 0xf2, 0x6d, 0x70, 0x38, 0xe7, 0x3b, 0x88, 0xc3, 0xf8, 0xab, 0xc3, 0x29, 0xd6, 0x1a, 0xc4, 0x71, 0xef, 0xd5, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x45, 0x8d, 0xf8, 0x06, 0x91, 0xc4, 0xd6, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0x62, 0x21, 0x0d, 0xab, 0x59, 0xe0, 0xd5, 0xc6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xe0, 0xd5, 0xc6, 0x06, 0xf0, 0x54, 0x0b, 0x1b, 0x7b, 0x13, 0x4b, 0x0b, 0x73, 0x03, 0x69, 0x0b, 0xa3, 0x43, 0xdb, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0xd6, 0x90, 0x38, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0xf8, 0x7e, 0xc3, 0xaa, 0x83, 0x98, 0xbe, 0xc3, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x31, 0xe8, 0x8b, 0xb5, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0xc1, 0x9b, 0x0d, 0x6f, 0xeb, 0x0c, 0x9e, 0x1f, 0x1e, 0xdc, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0xbc, 0x39, 0x28, 0x6d, 0xc7, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x78, 0x73, 0x10, 0xf1, 0x7b, 0x58, 0x1b, 0x44, 0x43, 0x30, 0xd6, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x86, 0xc7, 0x64, 0x0e, 0x22, 0x7e, 0x0f, 0x6b, 0xc3, 0xd3, 0x3a, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0x6d, 0x10, 0xf1, 0x7b, 0x58, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xf7, 0x20, 0x16, 0xd2, 0xb0, 0x5a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x38, 0xe1, 0xc3, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x61, 0x77, 0x7b, 0x10, 0xc7, 0xc4, 0x58, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0xf0, 0x66, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x06, 0x11, 0xbf, 0x87, 0x75, 0x10, 0xac, 0xac, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf0, 0x91, 0xbd, 0xd5, 0x89, 0xb1, 0x95, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x9c, 0xf0, 0x61, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x12, 0x1f, 0x77, 0xc3, 0x83, 0x37, 0x1b, 0x44, 0xfc, 0x1e, 0x56, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x78, 0x5a, 0x67, 0x83, 0x38, 0x46, 0xc6, 0x6a, 0x35, 0xa4, 0x0f, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x88, 0x16, 0x5f, 0xac, 0x35, 0xfc, 0xb9, 0x34, 0xb8, 0x78, 0x10, 0x83, 0xbe, 0x58, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x18, 0xf4, 0xc5, 0xda, 0xf0, 0x41, 0xce, 0x06, 0x51, 0x01, 0x8c, 0xb5, 0xe1, 0xbd, 0xa0, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0f, 0xde, 0x6c, 0x78, 0x5b, 0x67, 0xf0, 0xfc, 0xf0, 0x79, 0xd0, 0x86, 0xa7, 0x75, 0x36, 0x28, 0x48, 0x63, 0x07, 0x3c, 0xb3, 0x37, 0x78, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0xc7, 0xbd, 0x57, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0xac, 0x61, 0xe2, 0x36, 0x88, 0x91, 0xdf, 0xab, 0x0d, 0x13, 0x37, 0xe0, 0x9b, 0xcd, 0xd5, 0x89, 0x07, 0x71, 0xf7, 0x7b, 0xb5, 0xe1, 0x17, 0x97, 0x0d, 0xe2, 0x10, 0xf8, 0x6a, 0x83, 0x98, 0x74, 0xbe, 0x3a, 0x88, 0xa4, 0xe0, 0xab, 0x0d, 0x0a, 0xd2, 0xd8, 0x81, 0xae, 0x8b, 0x6b, 0x90, 0x64, 0x40, 0xb8, 0x41, 0x6c, 0x3f, 0x5f, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xf1, 0xc3, 0x83, 0x3b, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xfd, 0xf0, 0x79, 0xd0, 0x06, 0x71, 0x60, 0x8d, 0xd5, 0x06, 0x05, 0x69, 0xec, 0x40, 0xd7, 0xc9, 0x35, 0x48, 0x32, 0x20, 0xdc, 0x20, 0xb6, 0x9f, 0xaf, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf8, 0xe1, 0xf3, 0xa0, 0x35, 0xbc, 0xad, 0x33, 0xb8, 0x7e, 0x78, 0x70, 0x67, 0x83, 0xa8, 0xc3, 0xc6, 0x6a, 0x83, 0x82, 0x34, 0x76, 0xa0, 0xe7, 0xe2, 0x1a, 0x24, 0x19, 0x10, 0x6e, 0x10, 0xdb, 0xcf, 0x57, 0x1b, 0x44, 0x20, 0x30, 0xd6, 0x06, 0x71, 0x60, 0x8d, 0x75, 0x10, 0x03, 0xd6, 0x58, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x3d, 0x27, 0xd7, 0x20, 0xc9, 0x80, 0x70, 0x83, 0xd8, 0x7e, 0xbe, 0xda, 0x20, 0xae, 0x9f, 0xb1, 0x36, 0x88, 0x3a, 0x6c, 0xac, 0x83, 0x88, 0xc3, 0xc6, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x5d, 0x17, 0xdb, 0xf0, 0xb6, 0xce, 0x40, 0xd7, 0xc9, 0xd6, 0xa0, 0xd8, 0xd1, 0x5c, 0xc3, 0xbf, 0x39, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x19, 0x94, 0x77, 0xc3, 0xdb, 0x3a, 0x03, 0x3d, 0x27, 0xdb, 0x20, 0x1a, 0x82, 0xb1, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x04, 0x24, 0x63, 0x1d, 0x1e, 0xfa, 0xd9, 0xa0, 0x20, 0x8d, 0x1d, 0x1c, 0x5d, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xf8, 0x95, 0xc6, 0x6a, 0x83, 0xc8, 0xef, 0xc6, 0xda, 0x20, 0x1a, 0xbb, 0xb1, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0x5c, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x59, 0x38, 0xd6, 0x06, 0xd1, 0xf5, 0x8d, 0xb5, 0x41, 0x9c, 0x7b, 0x63, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xd0, 0x68, 0x72, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xdb, 0xcf, 0x57, 0x1b, 0x1c, 0x94, 0xe9, 0x0e, 0x0e, 0xf0, 0x74, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x8d, 0x36, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0xfd, 0x7c, 0xb5, 0x41, 0x6c, 0x79, 0x5b, 0x1d, 0x1c, 0xe0, 0xe9, 0x36, 0x28, 0x48, 0x63, 0x07, 0xf4, 0xba, 0x18, 0x34, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xed, 0xe7, 0xab, 0x0d, 0xa2, 0xb1, 0x1b, 0x6b, 0x83, 0xd8, 0xf2, 0xb6, 0x6a, 0x83, 0x82, 0x34, 0x76, 0xe0, 0xdd, 0xf0, 0x35, 0x28, 0x3a, 0x8d, 0x37, 0x88, 0xb3, 0x70, 0xac, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x6c, 0x3f, 0x5f, 0x1d, 0x9c, 0xe9, 0xfa, 0x36, 0x48, 0x32, 0x20, 0xdc, 0x20, 0x3e, 0x87, 0xaf, 0x36, 0x88, 0xf5, 0x6e, 0xab, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x24, 0x9d, 0x63, 0xb5, 0x41, 0x94, 0xad, 0x63, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xf0, 0x6e, 0xf9, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0xc4, 0x59, 0x38, 0xd6, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xb6, 0x9f, 0xaf, 0x36, 0x38, 0x7e, 0xf2, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0x2c, 0x1c, 0x6b, 0x83, 0x28, 0x5b, 0xc7, 0x5a, 0xc3, 0xdb, 0x3a, 0x03, 0xef, 0x86, 0x57, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xb6, 0x9f, 0xaf, 0x36, 0x88, 0x73, 0x6f, 0xac, 0x0d, 0x62, 0xbd, 0xdb, 0xaa, 0x0d, 0x0a, 0xd2, 0xd8, 0x81, 0x77, 0xd3, 0xd7, 0x20, 0xc9, 0x80, 0x70, 0x83, 0xd8, 0x7e, 0xbe, 0xda, 0xe0, 0xa0, 0x4c, 0xb7, 0x41, 0xd4, 0x61, 0x63, 0x1d, 0xc4, 0xa3, 0x35, 0xd6, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0x6e, 0x77, 0xac, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x6e, 0x79, 0x07, 0x31, 0x65, 0x7d, 0xb5, 0x1a, 0x94, 0xa0, 0x5e, 0x1b, 0x7e, 0x51, 0xda, 0xe0, 0x71, 0x82, 0x99, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0x06, 0x7d, 0xb1, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x32, 0xa5, 0xd3, 0x41, 0x6a, 0xdd, 0xd3, 0xe1, 0x14, 0x6b, 0x0d, 0x5e, 0x67, 0xe4, 0xb2, 0xe1, 0x17, 0xa5, 0x0d, 0xa2, 0xc5, 0x17, 0x6b, 0xc3, 0x5f, 0x34, 0x1b, 0x3c, 0x4e, 0x30, 0x73, 0x83, 0x82, 0x34, 0x76, 0xc0, 0x33, 0x7b, 0x83, 0x37, 0x88, 0x90, 0x68, 0xac, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x35, 0x4c, 0xdc, 0x06, 0x51, 0xfa, 0x7b, 0xb5, 0x61, 0xe2, 0x36, 0x88, 0xfc, 0xdf, 0xab, 0x83, 0xf8, 0x83, 0xc5, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xd1, 0x14, 0x7c, 0xb5, 0x41, 0x4c, 0x08, 0x5f, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x8a, 0x53, 0xed, 0x83, 0xe8, 0x07, 0xbe, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x70, 0x7d, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x89, 0xb4, 0x58, 0x07, 0xd1, 0x8f, 0x8d, 0xb5, 0x41, 0x61, 0xa8, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xed, 0xe7, 0xab, 0x0d, 0x62, 0xaf, 0x1a, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x63, 0xc4, 0x57, 0x1b, 0x04, 0x2c, 0xeb, 0x41, 0x72, 0x01, 0x6b, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xb6, 0x9f, 0xaf, 0x36, 0x88, 0x40, 0x60, 0xac, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x8c, 0x11, 0x5f, 0x6d, 0x50, 0x54, 0x8a, 0x1f, 0x24, 0x17, 0xb0, 0x36, 0x6b, 0x10, 0x3b, 0xc9, 0x58, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x06, 0x7d, 0xb1, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x0c, 0xfa, 0x62, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0xf0, 0xe6, 0x20, 0xc5, 0xda, 0x69, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xf0, 0xe6, 0xe0, 0xbc, 0xbb, 0xb7, 0x41, 0x41, 0x1a, 0x3b, 0xe0, 0x99, 0xbd, 0xc1, 0x1b, 0x44, 0x48, 0x34, 0xd6, 0x86, 0x4f, 0x6c, 0x36, 0x88, 0xf0, 0x68, 0xac, 0x0d, 0x0a, 0xd2, 0xd8, 0xc1, 0xe7, 0x35, 0x48, 0x32, 0x20, 0xdc, 0x20, 0xb6, 0x9f, 0xaf, 0x36, 0x38, 0x35, 0xb7, 0x6d, 0x90, 0x4c, 0xe9, 0xb4, 0x41, 0x6c, 0x46, 0x60, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0x78, 0xbb, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xf1, 0x39, 0x7c, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xed, 0xe7, 0xab, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x8c, 0x11, 0x5f, 0x1d, 0xc4, 0x5d, 0x98, 0x55, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xb6, 0x9f, 0xaf, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xe1, 0x41, 0x2c, 0xa4, 0x61, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0x8c, 0xf8, 0x6a, 0x83, 0x53, 0x73, 0xdb, 0x41, 0x72, 0x01, 0x6b, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0xef, 0x86, 0xaf, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x9c, 0x85, 0x63, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0x8c, 0xf8, 0x6a, 0x83, 0x80, 0x65, 0x3d, 0x38, 0x21, 0x50, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xd8, 0x7e, 0xbe, 0x3a, 0x88, 0x2d, 0xf6, 0xab, 0x0d, 0x0a, 0xd2, 0xd8, 0x81, 0x77, 0xcb, 0xd7, 0xa0, 0xe8, 0x34, 0xde, 0x20, 0xce, 0xc2, 0xb1, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0xfd, 0x7c, 0xb5, 0xc1, 0x21, 0x74, 0x62, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x67, 0xe1, 0x58, 0x1b, 0x1c, 0xce, 0xf9, 0x0e, 0x22, 0xdb, 0x1d, 0xab, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xdb, 0xcf, 0x57, 0x1b, 0x1c, 0x56, 0xe6, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x31, 0x46, 0x7c, 0xb5, 0xc1, 0xa9, 0xb9, 0xed, 0x20, 0xbd, 0xda, 0xa9, 0x0d, 0x0a, 0xd2, 0xd8, 0x81, 0x77, 0xd3, 0xd7, 0x20, 0xc9, 0x80, 0x70, 0x83, 0xd8, 0x7e, 0xbe, 0xda, 0x20, 0x60, 0x59, 0x37, 0x48, 0xb1, 0x76, 0x3a, 0x48, 0x2e, 0x60, 0x3d, 0x88, 0x27, 0x79, 0xac, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0x83, 0x88, 0xea, 0xbe, 0xda, 0xa0, 0x2c, 0x79, 0xdf, 0xa0, 0xa8, 0x11, 0xdf, 0x20, 0x92, 0xd8, 0x9a, 0x0e, 0x62, 0xa2, 0x18, 0x6b, 0xd6, 0x20, 0x12, 0x6d, 0xaf, 0x36, 0xfc, 0xa2, 0xb4, 0xc1, 0x79, 0x52, 0x65, 0xc3, 0x23, 0xac, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x37, 0x8a, 0x1b, 0x94, 0xd1, 0xe7, 0x07, 0x85, 0x93, 0xec, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xd9, 0x06, 0x65, 0xf4, 0xf9, 0x41, 0x4c, 0x14, 0x63, 0x75, 0x38, 0xc5, 0xd6, 0x20, 0xb6, 0xda, 0xb0, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0xf0, 0x19, 0x7b, 0x6b, 0x83, 0x93, 0x2b, 0x9b, 0x9b, 0x2b, 0x23, 0x0f, 0x3f, 0xd4, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0xc7, 0x09, 0x66, 0x6e, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0xc1, 0xf1, 0x83, 0xe6, 0x5c, 0xc5, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0xa8, 0x14, 0x3f, 0x88, 0x90, 0x3f, 0xac, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xa4, 0x68, 0x64, 0xd5, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0xa8, 0x14, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0x61, 0x77, 0xbb, 0x41, 0xbc, 0xe9, 0x62, 0x1d, 0x9c, 0x99, 0xdb, 0x36, 0x28, 0x48, 0x63, 0x07, 0x3c, 0xb3, 0x37, 0x78, 0x83, 0x08, 0x89, 0xc6, 0xda, 0xf0, 0x89, 0xcd, 0x06, 0xb1, 0xeb, 0x7b, 0xb5, 0x41, 0x41, 0x1a, 0xbb, 0x86, 0xef, 0xdb, 0x07, 0xcf, 0x0f, 0x9a, 0x73, 0x15, 0x5f, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x18, 0x23, 0xbe, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf8, 0xb8, 0x1b, 0x1c, 0xd8, 0x49, 0xd6, 0xf0, 0x71, 0xd4, 0x41, 0xbc, 0xe9, 0x62, 0xb5, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x7c, 0x0e, 0x5f, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xc5, 0x83, 0x58, 0x48, 0xc3, 0xda, 0xa0, 0xe8, 0x34, 0xde, 0x20, 0x3e, 0x87, 0xaf, 0x36, 0x88, 0x14, 0xe2, 0xab, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xdb, 0xcf, 0x57, 0x1b, 0x44, 0x56, 0x42, 0xd6, 0x41, 0x22, 0xa5, 0xd3, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0x7c, 0x3e, 0x68, 0xce, 0x55, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xe2, 0xe3, 0x1e, 0xc4, 0x3b, 0x47, 0xd6, 0x06, 0x4b, 0xea, 0x97, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xbe, 0x7e, 0xd9, 0x60, 0xe9, 0x1a, 0xea, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0x73, 0x70, 0x38, 0xe7, 0x5b, 0xc3, 0xd7, 0x2f, 0x1b, 0x2c, 0x5d, 0x43, 0xdd, 0xf0, 0xf5, 0xcb, 0x86, 0x0f, 0x61, 0x0e, 0xa2, 0xb6, 0x23, 0xab, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xfc, 0x4a, 0xb6, 0x86, 0x7f, 0x73, 0x36, 0x08, 0x58, 0xd6, 0x83, 0xc3, 0x39, 0xdf, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0xa8, 0x14, 0x3f, 0x38, 0x9c, 0xf3, 0xb5, 0xc1, 0x71, 0x6c, 0x62, 0x83, 0xc4, 0x6c, 0xa7, 0x35, 0xbc, 0xcd, 0xba, 0xe1, 0xdf, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x83, 0xa4, 0x2e, 0xab, 0x83, 0x38, 0xa4, 0xc0, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0xdc, 0x20, 0xde, 0x74, 0xb1, 0x0e, 0xd2, 0xab, 0x9d, 0x36, 0xfc, 0xe2, 0x72, 0x10, 0x37, 0xfc, 0x51, 0x87, 0x53, 0xec, 0x70, 0x8a, 0xad, 0x06, 0xb1, 0xc0, 0x7b, 0xb5, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0x10, 0x0b, 0xbc, 0x57, 0x1b, 0x3e, 0x57, 0x5a, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x3f, 0x38, 0xb9, 0xb4, 0xb6, 0x32, 0x90, 0xb6, 0x37, 0xb2, 0x3a, 0xb6, 0xb7, 0xc3, 0x23, 0x74, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x97, 0xe7, 0x25, 0xd3, 0x83, 0xe7, 0x35, 0xb3, 0x12, 0x86, 0xb7, 0x22, 0x76, 0xf8, 0x72, 0x69, 0xc3, 0xf3, 0x4c, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x23, 0x16, 0x36, 0x57, 0x06, 0x02, 0xf7, 0x96, 0xe6, 0x46, 0xb7, 0xe1, 0xcf, 0xa5, 0xc1, 0xcf, 0x83, 0xc7, 0x09, 0x66, 0xae, 0xe1, 0x89, 0xf7, 0x35, 0xdc, 0x69, 0x33, 0x80, 0x3f, 0x9c, 0x5c, 0x5a, 0x5b, 0x19, 0xc8, 0x9b, 0x1c, 0x59, 0x99, 0x1c, 0xc8, 0x9b, 0x19, 0xc8, 0xd9, 0xc1, 0x8a, 0xde, 0xf7, 0x0e, 0xa7, 0x58, 0x1d, 0x4e, 0xb1, 0xd5, 0x60, 0x09, 0x2a, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x88, 0x32, 0x9f, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x47, 0x5a, 0x48, 0x06, 0x8e, 0xb4, 0x90, 0x6e, 0xf8, 0x77, 0x7e, 0x0d, 0x5e, 0x3d, 0xa3, 0x5c, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x9e, 0xcc, 0x7c, 0x36, 0x28, 0xed, 0x2d, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0x7b, 0xe6, 0xb3, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xfc, 0xa3, 0xf9, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0x83, 0xab, 0x13, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x04, 0xa9, 0xf9, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x8b, 0x6b, 0x3e, 0x1b, 0xfe, 0x5c, 0xda, 0x20, 0x6d, 0xba, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x33, 0x9b, 0xcf, 0xe1, 0x87, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe4, 0xb8, 0xf9, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0x9b, 0x3b, 0x73, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xfc, 0xbd, 0xf9, 0x1c, 0x7e, 0xa8, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xeb, 0x70, 0x3e, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xe6, 0xca, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x33, 0x72, 0x3e, 0x1b, 0x84, 0x7e, 0xc9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x66, 0xe7, 0x7c, 0x0e, 0xca, 0x26, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x2c, 0xd9, 0xf9, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xdf, 0x78, 0x3e, 0x1b, 0xfe, 0x5c, 0xda, 0x20, 0x6d, 0xba, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xe5, 0x9d, 0xcf, 0xe1, 0x87, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe4, 0xf1, 0xf9, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0x9b, 0x3b, 0x73, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xc4, 0xec, 0xf9, 0x1c, 0x7e, 0xa8, 0xa9, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa4, 0xfb, 0xf9, 0x6c, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0x7c, 0x19, 0xbe, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x1b, 0xc4, 0x6a, 0xe7, 0xd4, 0x00, 0x6f, 0x19, 0x1e, 0x9d, 0x5c, 0xd8, 0x18, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x1e, 0x40, 0x9f, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0xd2, 0x3d, 0x37, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xd2, 0x3d, 0x37, 0x3b, 0x68, 0x61, 0x84, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x62, 0xa0, 0xcf, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xe3, 0x2f, 0xa4, 0x03, 0xc7, 0x5f, 0x58, 0x1c, 0x3c, 0x16, 0xde, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xb3, 0xa0, 0xcf, 0x06, 0x25, 0x3c, 0xe6, 0x02, 0xde, 0x5c, 0xd9, 0xda, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xbe, 0x08, 0x7d, 0x36, 0x58, 0x52, 0xbf, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xb5, 0x44, 0x9f, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0xf6, 0x0f, 0x7d, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7c, 0x2d, 0xfa, 0x1c, 0x84, 0xa7, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x69, 0x46, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xc6, 0xd1, 0xe7, 0xa0, 0xac, 0xb7, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x14, 0xa4, 0xcf, 0x41, 0x51, 0x29, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xfe, 0x48, 0x9f, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x87, 0x0b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf8, 0x9c, 0xf4, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x06, 0x2a, 0x7d, 0x0e, 0xca, 0x7a, 0xdb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8c, 0x5c, 0xfa, 0x1c, 0x1c, 0x56, 0xe6, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x8d, 0xe9, 0xb3, 0xe1, 0x6d, 0x9d, 0x01, 0x6f, 0xee, 0xcc, 0x1d, 0xbc, 0x3e, 0x88, 0x69, 0xa9, 0xac, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x24, 0x6a, 0xfa, 0x6c, 0x78, 0x5b, 0x67, 0x83, 0xb4, 0xe9, 0xc6, 0x83, 0x48, 0xe8, 0xca, 0xaa, 0x15, 0xf0, 0xe0, 0xea, 0xc4, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xc0, 0x83, 0xab, 0x13, 0x3b, 0x68, 0x9d, 0x75, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x10, 0xa7, 0xcf, 0x86, 0xbf, 0x68, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xc3, 0x2f, 0xa4, 0x03, 0x87, 0x5f, 0x58, 0x1c, 0x3c, 0xe0, 0x26, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x61, 0xa7, 0xcf, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0xee, 0xe9, 0x73, 0x50, 0xd6, 0xdb, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x21, 0xd4, 0xe7, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xad, 0xa8, 0xcf, 0xc1, 0x72, 0xdc, 0xb8, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xc4, 0x91, 0xfa, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xd5, 0xa5, 0x3e, 0x07, 0x65, 0xbd, 0xed, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xea, 0x4f, 0x7d, 0x0e, 0x0e, 0x2b, 0x73, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x78, 0x4d, 0xf5, 0xd9, 0xf0, 0xb6, 0xce, 0x80, 0x37, 0x77, 0xe6, 0x2e, 0x8e, 0x13, 0x78, 0x70, 0x75, 0x62, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x28, 0x5b, 0xf5, 0xd9, 0xf0, 0xb6, 0xce, 0x06, 0x69, 0xd3, 0x8d, 0x07, 0x71, 0x95, 0x96, 0x55, 0xb3, 0x06, 0x6d, 0xcc, 0x80, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xb4, 0x31, 0x03, 0xde, 0x00, 0xbc, 0xc0, 0xc9, 0xa5, 0xd9, 0x85, 0xd1, 0x95, 0x81, 0x98, 0xa5, 0xb9, 0x9d, 0x95, 0xc9, 0xc1, 0xc9, 0xa5, 0xb9, 0xd1, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x48, 0x69, 0xf5, 0xd9, 0xf0, 0x17, 0xcd, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x6c, 0xf0, 0x82, 0xb6, 0xf6, 0x83, 0xf7, 0xc0, 0xb5, 0x1f, 0xbc, 0x47, 0x4b, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x9c, 0xab, 0xcf, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x31, 0x2d, 0x95, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x02, 0x58, 0x9f, 0x0d, 0x96, 0xd4, 0x2f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x83, 0xd6, 0xe7, 0x20, 0x22, 0xa9, 0xb2, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x0c, 0xd8, 0xfa, 0x1c, 0x84, 0xa7, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xbb, 0x5b, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x1b, 0xd7, 0xe7, 0xa0, 0xc8, 0xc4, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xbc, 0xae, 0xcf, 0xc1, 0x71, 0x79, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xa3, 0xbc, 0x3e, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x81, 0xaf, 0xcf, 0x41, 0x2a, 0xc7, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xbe, 0x80, 0x7d, 0x36, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0x08, 0x0a, 0xf6, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x8e, 0xb0, 0xcf, 0x41, 0x12, 0x23, 0x67, 0xad, 0x06, 0xad, 0xdd, 0x6b, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xb4, 0x76, 0xaf, 0xdd, 0xc1, 0x93, 0xbe, 0x94, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd4, 0x0f, 0xfb, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xf7, 0x42, 0x3a, 0x70, 0xef, 0x85, 0xc5, 0x41, 0xba, 0xbf, 0xec, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x9b, 0x62, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xd3, 0xd8, 0xe7, 0x20, 0x95, 0x63, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xbb, 0xc8, 0x3e, 0x1b, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0x41, 0x6c, 0x26, 0xfb, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x52, 0xd9, 0xe7, 0x20, 0x6e, 0x7b, 0xaa, 0x3a, 0x9c, 0x62, 0x75, 0x38, 0xc5, 0x56, 0xe0, 0xdd, 0xea, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x55, 0xcc, 0x3e, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0xac, 0x83, 0x9a, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x58, 0x07, 0x35, 0xdb, 0x00, 0xde, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x46, 0x9b, 0x7d, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x1b, 0xbc, 0x75, 0xd0, 0x79, 0xe0, 0x26, 0x0c, 0x9b, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x4d, 0x18, 0xf2, 0x83, 0xe8, 0x36, 0xcc, 0x3a, 0x78, 0xc0, 0x4d, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x9c, 0x67, 0x9f, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x14, 0xda, 0x67, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x48, 0x8f, 0xf6, 0xd9, 0xf0, 0xb9, 0xcb, 0x80, 0xd7, 0x16, 0x76, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x99, 0xf6, 0xd9, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x22, 0xa9, 0x7d, 0x0e, 0x8a, 0x4c, 0xdc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd4, 0x5a, 0xfb, 0x1c, 0x14, 0x95, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf8, 0xc2, 0xf6, 0x39, 0x3c, 0xad, 0xd3, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xda, 0xb3, 0x7d, 0x36, 0x7c, 0xee, 0x32, 0xe0, 0x89, 0xbd, 0x91, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x66, 0xb6, 0x7d, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x4d, 0x6e, 0x9f, 0x83, 0x12, 0x1f, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xc3, 0xde, 0x3e, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xe2, 0xc0, 0x7d, 0x0e, 0x4f, 0xeb, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x01, 0x71, 0x9f, 0x0d, 0x96, 0xd4, 0x2f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0xea, 0xdc, 0x67, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x88, 0xd2, 0x72, 0x9f, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x47, 0xe9, 0x3e, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x38, 0x55, 0xf7, 0xd9, 0xf0, 0x6f, 0xce, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x0e, 0xd8, 0x7d, 0x0e, 0x96, 0xe3, 0xc6, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x78, 0x6c, 0xf7, 0xd9, 0xf0, 0xb6, 0xce, 0x80, 0xd7, 0x16, 0x76, 0xb6, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xe2, 0xdd, 0x67, 0xc3, 0x25, 0xb5, 0xc1, 0x83, 0xf7, 0x94, 0xd7, 0x20, 0xda, 0x7b, 0xaa, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x3c, 0xc2, 0xfb, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xd9, 0xf1, 0x3e, 0x1b, 0x3e, 0x77, 0xd9, 0x20, 0x6d, 0xba, 0x71, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xc7, 0xbc, 0xcf, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0x48, 0xef, 0x73, 0x50, 0xe2, 0xe3, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xd5, 0xde, 0xe7, 0xe0, 0xb0, 0x32, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x2f, 0x7c, 0x9f, 0x83, 0xd7, 0xce, 0xc9, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xfd, 0x7c, 0x9f, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x73, 0x67, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xa1, 0x7d, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x95, 0xdf, 0xe7, 0xa0, 0xc8, 0xc4, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xb4, 0xbf, 0xcf, 0xc1, 0x61, 0x65, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x8d, 0x00, 0x3f, 0x07, 0xaf, 0x9d, 0x93, 0xaf, 0x35, 0x88, 0x69, 0xa9, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x2b, 0x02, 0x3f, 0x07, 0x05, 0x45, 0x66, 0x2b, 0xe0, 0xb9, 0xbd, 0xb1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x81, 0xe7, 0xf6, 0xc6, 0x36, 0x80, 0x77, 0xd8, 0x18, 0x5d, 0x9a, 0x5d, 0x18, 0x5d, 0x19, 0xc8, 0x5c, 0xd9, 0x98, 0x5c, 0x19, 0xdd, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x07, 0x82, 0x9f, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0x6f, 0x28, 0x72, 0x1e, 0x38, 0x06, 0xc3, 0x66, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0x0c, 0x86, 0xfc, 0x20, 0x92, 0x51, 0xb3, 0x0e, 0x1e, 0x0b, 0xef, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xb4, 0xe0, 0x67, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x38, 0xf8, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xae, 0x10, 0x7e, 0x36, 0x7c, 0xee, 0x32, 0xe0, 0xb5, 0x85, 0x9d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x3a, 0x13, 0x7e, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x82, 0x85, 0x9f, 0x83, 0x22, 0x13, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x29, 0x0d, 0x3f, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xa6, 0x1d, 0x7e, 0x0e, 0x4f, 0xeb, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x30, 0x88, 0x9f, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x62, 0x6f, 0xe4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xd3, 0x88, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x61, 0xe2, 0xe7, 0xa0, 0xc4, 0xc7, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x4d, 0xc5, 0xcf, 0x41, 0x51, 0x29, 0xbe, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x72, 0x8b, 0x9f, 0xc3, 0xd3, 0x3a, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x0e, 0xe3, 0x67, 0x83, 0x25, 0xf5, 0x4b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x28, 0xee, 0xf8, 0xd9, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0xa2, 0x82, 0xe3, 0x67, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xee, 0xc7, 0xcf, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x32, 0x42, 0x7e, 0x36, 0xfc, 0x9b, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x3c, 0x91, 0x9f, 0x83, 0x88, 0xc8, 0xca, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x40, 0xf2, 0x73, 0x10, 0x39, 0x98, 0x59, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x1a, 0x4b, 0x7e, 0x36, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x78, 0x93, 0x9f, 0x0d, 0xbf, 0xb8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x07, 0xe5, 0x67, 0xc3, 0xe7, 0x2e, 0x83, 0x8f, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x06, 0x53, 0x7e, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x74, 0x95, 0x9f, 0x83, 0x12, 0x1f, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x0d, 0x2d, 0x3f, 0x07, 0x87, 0x95, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x0c, 0xbb, 0xfc, 0x1c, 0xbc, 0x76, 0x4e, 0xbe, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x74, 0xc1, 0xfc, 0x6c, 0xf8, 0xdc, 0x65, 0xf0, 0x79, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x68, 0xcc, 0xcf, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x30, 0xf3, 0x73, 0x50, 0x64, 0xe2, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xa6, 0xe6, 0xe7, 0xe0, 0xb0, 0x32, 0xb7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x76, 0x9b, 0x9f, 0x83, 0xd7, 0xce, 0xc9, 0xd7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x45, 0x9c, 0x9f, 0x0d, 0x97, 0xd4, 0x06, 0x0f, 0xde, 0x53, 0x5e, 0x83, 0x68, 0xef, 0xa9, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0xa0, 0xf3, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x44, 0xed, 0xfc, 0x6c, 0xf8, 0xdc, 0x65, 0x83, 0xb4, 0xe9, 0xc6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x97, 0x3c, 0x3f, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x7f, 0xcf, 0xcf, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x31, 0xa2, 0x26, 0xd4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xac, 0x9f, 0x9f, 0x0d, 0x6f, 0xeb, 0x0c, 0x7c, 0x19, 0xd9, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x76, 0x83, 0x7e, 0x0e, 0x4f, 0xef, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xac, 0xa1, 0x9f, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x73, 0x67, 0xee, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x50, 0xa2, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xc1, 0xe8, 0x67, 0xc3, 0x83, 0x92, 0x1b, 0x44, 0x52, 0x72, 0xd6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xb4, 0xa3, 0x9f, 0x83, 0x08, 0x53, 0xce, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x72, 0xd2, 0xcf, 0xc1, 0xe1, 0x9c, 0xaf, 0xd6, 0x20, 0xa6, 0xa5, 0xb2, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa4, 0x2d, 0xfd, 0x6c, 0x70, 0x0c, 0x37, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0xcd, 0xf4, 0xb3, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa4, 0x38, 0xfd, 0x6c, 0xf8, 0xdc, 0x65, 0x83, 0xb4, 0xe9, 0xc6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x73, 0x4f, 0x3f, 0x87, 0xa7, 0x77, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0x0f, 0xf5, 0xb3, 0xe1, 0x73, 0x97, 0x01, 0x6f, 0xee, 0xcc, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0x24, 0xf5, 0x73, 0x70, 0x38, 0xe7, 0xab, 0xc3, 0x29, 0xb6, 0x86, 0x1a, 0xb1, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xa8, 0x11, 0x0d, 0xe0, 0x3b, 0x26, 0x57, 0x16, 0x46, 0x57, 0x06, 0xb2, 0x56, 0x96, 0x07, 0x17, 0x96, 0x26, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x88, 0xea, 0x67, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc1, 0x5b, 0xb3, 0x9b, 0x07, 0xae, 0xc0, 0xb0, 0xdc, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x6c, 0xf0, 0xf0, 0xed, 0xe6, 0x83, 0x47, 0x85, 0x37, 0x6f, 0xf8, 0x73, 0x69, 0xf0, 0x7b, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x0d, 0x9e, 0xf1, 0xdd, 0x7c, 0xf0, 0xa8, 0xf0, 0xe6, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x15, 0x18, 0x26, 0x07, 0x2f, 0x4b, 0x6f, 0xde, 0xf0, 0xe7, 0xd2, 0x06, 0x0f, 0xe5, 0x3c, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x83, 0x07, 0x9d, 0x37, 0x1f, 0xbc, 0x2c, 0xbd, 0xf9, 0xf0, 0x43, 0x4d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xd2, 0xab, 0x7e, 0x36, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xa8, 0xab, 0x9f, 0x0d, 0x9f, 0xbb, 0x6c, 0x70, 0x16, 0x32, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0x89, 0xf5, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xec, 0x67, 0xfd, 0x1c, 0xfe, 0x04, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x06, 0xd7, 0xcf, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0xd7, 0xf5, 0x73, 0x10, 0x0a, 0xac, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x08, 0xfd, 0xfa, 0x39, 0x38, 0xe4, 0xb7, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x27, 0xec, 0xe7, 0xe0, 0xb0, 0x32, 0xd7, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x26, 0xc6, 0x7e, 0x36, 0x7c, 0x90, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x39, 0xb2, 0x9f, 0x0d, 0xff, 0xe6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xba, 0xec, 0x67, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0x39, 0xfb, 0x39, 0x08, 0xbb, 0xdb, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x84, 0xa5, 0xfd, 0x1c, 0x1c, 0xf2, 0x5b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0xb0, 0xf6, 0x73, 0x70, 0x58, 0x99, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x29, 0xdb, 0xcf, 0xe1, 0xc1, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x54, 0xb8, 0xfd, 0x1c, 0x1e, 0xbc, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0xf8, 0xf6, 0x73, 0x78, 0x4c, 0xa6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x11, 0x71, 0x3f, 0x1b, 0x3e, 0xb1, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x9d, 0xdc, 0xcf, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0x0a, 0x52, 0xf4, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xdc, 0xb9, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xa3, 0xee, 0xe7, 0x20, 0x09, 0x52, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x43, 0x77, 0x3f, 0x07, 0xa9, 0x99, 0xb0, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf8, 0xc6, 0xfb, 0x39, 0x88, 0x5d, 0x45, 0xaa, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xbc, 0xe9, 0xfd, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xd3, 0x7b, 0x3f, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x46, 0xdf, 0xcf, 0x86, 0xcf, 0x5d, 0x06, 0x1f, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x74, 0xf9, 0xfd, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xc3, 0x7f, 0x3f, 0x07, 0x25, 0x3e, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xc2, 0x03, 0x7f, 0x0e, 0x0e, 0x2b, 0x73, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb8, 0x1c, 0xfc, 0x39, 0x78, 0xed, 0x51, 0x74, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc8, 0x28, 0xfc, 0xd9, 0xf0, 0xb9, 0xcb, 0xe0, 0xf3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x30, 0xc3, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0xf8, 0xf0, 0xe7, 0xa0, 0xc8, 0xc4, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x79, 0xe2, 0xcf, 0xc1, 0x61, 0x65, 0x6e, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xa1, 0x8b, 0x3f, 0x07, 0xaf, 0x3d, 0x8a, 0xae, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x25, 0x8d, 0x3f, 0x1b, 0x2e, 0xa9, 0x0d, 0x1e, 0xbc, 0xa7, 0xbc, 0x06, 0xd1, 0xde, 0x53, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xd4, 0xf1, 0x67, 0xc3, 0x2f, 0x2e, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x7f, 0xfc, 0xd9, 0xf0, 0xb9, 0xcb, 0x06, 0x69, 0xd3, 0x8d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x62, 0x22, 0x7f, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x4b, 0xc9, 0x9f, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0x49, 0xc9, 0x59, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xe6, 0x27, 0x7f, 0x0e, 0x22, 0x4c, 0x39, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x51, 0x96, 0x3f, 0x87, 0xa7, 0x77, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xfb, 0xe5, 0xcf, 0x86, 0xcf, 0x5d, 0x06, 0xbc, 0xb9, 0x33, 0x77, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x4d, 0xe6, 0xcf, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0xa9, 0xf9, 0xb3, 0xe1, 0x41, 0xc9, 0x0d, 0x22, 0x29, 0x39, 0x6b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xff, 0xe6, 0xcf, 0x41, 0x84, 0x29, 0x67, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xcb, 0xf3, 0xe7, 0xe0, 0x70, 0xce, 0x57, 0x6b, 0x10, 0xd3, 0x52, 0x59, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xfa, 0x3f, 0x7f, 0x36, 0x38, 0x86, 0x1b, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x78, 0x0b, 0xfd, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x7a, 0x45, 0x7f, 0x36, 0x7c, 0xee, 0xb2, 0x41, 0xda, 0x74, 0xe3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x03, 0xd2, 0x9f, 0xc3, 0xd3, 0x3b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x48, 0x2c, 0xfd, 0xd9, 0xf0, 0xb9, 0xcb, 0x80, 0x37, 0x77, 0xe6, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x36, 0xfd, 0x39, 0x38, 0x9c, 0xf3, 0xd5, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x2b, 0xf0, 0x64, 0xe5, 0x86, 0xe7, 0x49, 0x36, 0x88, 0x9f, 0x7a, 0xa9, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xd1, 0xa8, 0x3f, 0x1b, 0x7e, 0x51, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x4e, 0xbb, 0x90, 0x0d, 0x9c, 0x76, 0x61, 0xb9, 0xe1, 0x73, 0xa5, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xb4, 0x0b, 0xe1, 0xc0, 0x69, 0x17, 0x26, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0x68, 0x3d, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xd3, 0x2e, 0x0c, 0x0e, 0xe2, 0x4b, 0x42, 0xeb, 0x20, 0x3a, 0x86, 0xa8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xd3, 0x2e, 0x6c, 0x06, 0x4e, 0xbb, 0x30, 0xdc, 0xf0, 0xe7, 0xd2, 0x06, 0x0b, 0x70, 0xcf, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0xb4, 0x0b, 0xbb, 0x83, 0x28, 0xab, 0xd0, 0x3a, 0xfc, 0x50, 0xd3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x34, 0xd5, 0x9f, 0x0d, 0x7f, 0xd1, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xb7, 0x5d, 0xc8, 0x06, 0x6e, 0xbb, 0xb0, 0xda, 0x20, 0xf4, 0x4b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0xdb, 0x2e, 0x84, 0x03, 0xb7, 0x5d, 0x18, 0x1c, 0x94, 0x4d, 0x98, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x6d, 0x17, 0x16, 0x03, 0xb7, 0x5d, 0x18, 0x1d, 0x1c, 0x5b, 0x4a, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0xba, 0xfa, 0xb3, 0xe1, 0x13, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x0c, 0xb4, 0xfe, 0x6c, 0xb0, 0x46, 0xaa, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xef, 0xae, 0x3f, 0x1b, 0x3e, 0x57, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x4e, 0xec, 0xcf, 0x86, 0x3f, 0x97, 0x06, 0x3e, 0xcd, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x03, 0xfb, 0x73, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xd5, 0xb4, 0x3f, 0x1b, 0xfe, 0x5c, 0xda, 0xa0, 0x2c, 0x2c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0x38, 0xfb, 0x73, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x6f, 0xb8, 0x3f, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xc6, 0xe0, 0xd0, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x2b, 0xb7, 0x3f, 0x87, 0x1f, 0x6a, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0xb3, 0xfb, 0xb3, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x94, 0xf2, 0xfe, 0x1c, 0x2c, 0x40, 0x64, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xc4, 0xef, 0xcf, 0xc1, 0x32, 0xf0, 0xf3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf4, 0x02, 0xff, 0x6c, 0xb0, 0xaa, 0x57, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x19, 0xc2, 0x3f, 0x1b, 0x94, 0x25, 0xef, 0x1b, 0x3c, 0x96, 0x3e, 0x78, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x7b, 0xc3, 0x3f, 0x1b, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0x9f, 0xa0, 0x4e, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xb2, 0x89, 0x7f, 0x36, 0xbc, 0xad, 0x33, 0xe0, 0x85, 0x95, 0xcd, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0xde, 0xf8, 0x67, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd8, 0x42, 0xfe, 0x39, 0x48, 0x4f, 0x8e, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x9f, 0xf2, 0xcf, 0xc1, 0xa1, 0xb5, 0xab, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x1c, 0x31, 0xff, 0x1c, 0x14, 0x14, 0x99, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0xcd, 0xf9, 0xe7, 0x20, 0xb6, 0x97, 0xa8, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x01, 0xfd, 0x73, 0x50, 0x78, 0x19, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x48, 0x8e, 0xfe, 0x39, 0x88, 0x3e, 0x1e, 0xaa, 0x59, 0xe0, 0xcb, 0xdc, 0x0d, 0xcf, 0x93, 0x6c, 0x10, 0x5b, 0x01, 0x53, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xfa, 0xa6, 0x7f, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xdc, 0x79, 0x21, 0x1b, 0xb8, 0xf3, 0xc2, 0x72, 0xc3, 0xe7, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x9d, 0x17, 0xc2, 0x81, 0x3b, 0x2f, 0x4c, 0x36, 0xfc, 0xb9, 0xb4, 0x41, 0xd1, 0x7a, 0xb2, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0x6f, 0xd5, 0x26, 0x3f, 0x88, 0x60, 0x1a, 0xad, 0x83, 0xe8, 0x18, 0xa2, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xee, 0xbc, 0xb0, 0x19, 0xb8, 0xf3, 0xc2, 0x70, 0xc3, 0x9f, 0x4b, 0x03, 0x5e, 0xdb, 0xdc, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x77, 0x5e, 0xd8, 0x1d, 0x44, 0xf2, 0x8d, 0xd6, 0xe1, 0x87, 0x9a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x54, 0x54, 0xff, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0x38, 0xf4, 0x42, 0x76, 0xf0, 0xac, 0x74, 0xf2, 0x83, 0x63, 0x4b, 0xe9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x2a, 0xeb, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xf6, 0xfa, 0xe7, 0x20, 0xbd, 0x69, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x0f, 0xda, 0x3f, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xdc, 0xf6, 0xcf, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x2f, 0x54, 0x0f, 0x5e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x35, 0xf7, 0xcf, 0x86, 0x07, 0x25, 0x37, 0x88, 0xc6, 0x14, 0xad, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x37, 0xde, 0x3f, 0x07, 0x51, 0xaa, 0xa2, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x4f, 0xf0, 0x9f, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x40, 0xfc, 0xe7, 0x20, 0x3d, 0x39, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x21, 0xe4, 0x3f, 0x07, 0x87, 0xd6, 0xae, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0x5e, 0xfe, 0x73, 0x50, 0x50, 0x64, 0xb6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xff, 0xf3, 0x9f, 0x83, 0x98, 0xf2, 0x8a, 0xaa, 0xc3, 0x29, 0xd6, 0x02, 0x1f, 0x36, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x4e, 0xff, 0xd9, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0xd6, 0xe0, 0x61, 0xe7, 0xca, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x32, 0xd6, 0x7f, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x1b, 0xbc, 0x5b, 0xb2, 0x77, 0xe0, 0x6e, 0x0b, 0x93, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x00, 0xf7, 0x7c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xee, 0xb6, 0xb0, 0x38, 0x88, 0x86, 0x24, 0xad, 0xc3, 0x0f, 0x35, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x5a, 0xd9, 0x7f, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x1c, 0x6e, 0x21, 0x1d, 0x38, 0xdc, 0xc2, 0x6e, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x0e, 0xb7, 0x10, 0x0f, 0x1c, 0x6e, 0x61, 0x72, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x87, 0x5b, 0xd8, 0x0c, 0x1c, 0x6e, 0x61, 0x76, 0x70, 0x6c, 0x29, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x7d, 0xfb, 0xcf, 0x86, 0x4f, 0x6c, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0xf5, 0xfe, 0xb3, 0xc1, 0x1a, 0xa9, 0xa6, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xd4, 0xc4, 0xff, 0x6c, 0xf8, 0x5c, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xc7, 0xf3, 0x3f, 0x1b, 0xfe, 0x5c, 0xda, 0x20, 0x31, 0xf1, 0x68, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x9f, 0xfc, 0xcf, 0xe1, 0x87, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xb4, 0xde, 0xff, 0x6c, 0xf8, 0x73, 0x69, 0xc0, 0x6b, 0x9b, 0x3b, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x94, 0xd9, 0xff, 0x1c, 0x7e, 0xa8, 0x69, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x9d, 0xfe, 0xcf, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0xbd, 0xff, 0x73, 0xb0, 0x00, 0x91, 0x75, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x45, 0xfe, 0x3f, 0x07, 0xcb, 0xc0, 0xcf, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x51, 0xff, 0xff, 0xb3, 0x41, 0xb1, 0xa3, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xab, 0x00, 0xa0, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x57, 0x00, 0x68, 0xc3, 0xdb, 0x3a, 0x1b, 0x3c, 0x6f, 0x6b, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7c, 0x13, 0x00, 0x1d, 0xa4, 0xd1, 0x1e, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xd2, 0x00, 0xe8, 0x20, 0xa6, 0xbc, 0xa2, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x62, 0x03, 0xd0, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x06, 0x01, 0x68, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb8, 0x4c, 0x00, 0x3a, 0x38, 0x4b, 0x81, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x7e, 0x01, 0xe8, 0x20, 0xa6, 0xbc, 0xa2, 0x5a, 0x0d, 0x1e, 0xf1, 0xaf, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xe3, 0x01, 0x68, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x0d, 0x17, 0xd2, 0x81, 0x1b, 0x2e, 0xac, 0x37, 0x7c, 0xae, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0xdc, 0x70, 0x21, 0x1e, 0xb8, 0xe1, 0xc2, 0x6c, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x18, 0xdc, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0x37, 0x5c, 0x98, 0x1c, 0x44, 0xee, 0x98, 0xd6, 0xc1, 0x03, 0x6e, 0x32, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x1b, 0x2e, 0xec, 0x06, 0x6e, 0xb8, 0x30, 0xde, 0xf0, 0xe7, 0xd2, 0x80, 0xd7, 0x36, 0x77, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0x0d, 0x17, 0xb6, 0x07, 0x51, 0x6c, 0xa6, 0x75, 0xf8, 0xa1, 0xa6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xb9, 0x10, 0x40, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x8e, 0xb8, 0x90, 0x0e, 0x1c, 0x71, 0x61, 0x70, 0x70, 0x6c, 0x29, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x1f, 0x01, 0xb4, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x4c, 0x4b, 0x65, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x73, 0x02, 0x68, 0x83, 0x25, 0xf5, 0x4b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x88, 0xbd, 0x00, 0x3a, 0x88, 0x48, 0xaa, 0xac, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x99, 0x19, 0x40, 0x07, 0xe1, 0xa9, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x61, 0x03, 0x68, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x6b, 0x1c, 0x40, 0x1b, 0xfe, 0xcd, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x71, 0x07, 0xd0, 0xc1, 0x72, 0xdc, 0xb8, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x49, 0x1f, 0x40, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x2b, 0x08, 0xd0, 0x41, 0x91, 0x89, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x69, 0x11, 0xa0, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x81, 0x24, 0x40, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xc4, 0xe0, 0xd6, 0xda, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x60, 0x02, 0xb4, 0xe1, 0x13, 0x9b, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xcc, 0x9d, 0x00, 0x6d, 0xf8, 0xdc, 0x65, 0xe0, 0xe1, 0xd6, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xb7, 0x28, 0x40, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x87, 0x0a, 0xd0, 0x41, 0x89, 0x8f, 0xbb, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x21, 0x16, 0xa0, 0x83, 0xc3, 0xca, 0xdc, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xf6, 0x5b, 0x80, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xaf, 0x17, 0xa0, 0x83, 0x12, 0x1f, 0x77, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x87, 0x31, 0x40, 0x07, 0x45, 0xa5, 0xf8, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xd6, 0x65, 0x80, 0x0e, 0x62, 0x84, 0x4e, 0xab, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x4c, 0xd2, 0x00, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xf7, 0x35, 0x40, 0x1b, 0x3e, 0x77, 0xd9, 0x20, 0xca, 0x2b, 0x85, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xec, 0xdc, 0x00, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xa1, 0x38, 0x40, 0x07, 0xa9, 0xb4, 0xb2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x18, 0xd8, 0x01, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xce, 0x78, 0x80, 0x36, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xf2, 0x4a, 0xa1, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x14, 0xf7, 0x00, 0x1d, 0x44, 0x98, 0x72, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x4e, 0x80, 0x80, 0x0e, 0x22, 0xe4, 0x03, 0x6b, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xc3, 0x41, 0x40, 0x07, 0x71, 0xe0, 0x95, 0x55, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x0e, 0x87, 0x80, 0x36, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x75, 0x22, 0xa0, 0x0d, 0x9f, 0xbb, 0x0c, 0xf8, 0x73, 0x6d, 0x73, 0xe7, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x16, 0x23, 0xa0, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xf2, 0x08, 0xe8, 0x20, 0x3e, 0x8f, 0xaa, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0x9b, 0x04, 0x74, 0x10, 0x53, 0x5e, 0x51, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x08, 0x5a, 0x02, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x4a, 0x99, 0x80, 0x0e, 0xd2, 0x9b, 0x66, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x11, 0xf0, 0x04, 0xb4, 0xe1, 0xdd, 0x9e, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x8c, 0x41, 0x01, 0x6d, 0x50, 0x96, 0xbc, 0x6f, 0xf0, 0x42, 0xf5, 0xe0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x24, 0x47, 0x01, 0x6d, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0xf1, 0xff, 0x3a, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x28, 0x99, 0x02, 0x3a, 0x88, 0x52, 0x15, 0xad, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x44, 0x56, 0x01, 0x1d, 0xc4, 0x53, 0xa0, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x72, 0xae, 0x80, 0x0e, 0x0a, 0x8a, 0xcc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0x95, 0x05, 0xb4, 0xe1, 0x6d, 0x9d, 0x0d, 0x62, 0xc1, 0x50, 0xab, 0x5a, 0x0d, 0x5e, 0x95, 0xa6, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x68, 0x0b, 0x68, 0xc3, 0x2f, 0x4a, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x0d, 0x5e, 0x59, 0x69, 0xb3, 0xc0, 0xb1, 0x16, 0xd2, 0x81, 0x63, 0x2d, 0x4c, 0x36, 0xfc, 0xb9, 0x34, 0xe0, 0xb5, 0xcd, 0x9d, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xac, 0x85, 0xc5, 0x41, 0xc4, 0x4d, 0x6a, 0x1d, 0x7e, 0xa8, 0xd9, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xd1, 0xcd, 0x05, 0xb4, 0xe1, 0x2f, 0x9a, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x06, 0xaf, 0xac, 0xb4, 0x59, 0xe0, 0x5a, 0x0b, 0xe9, 0xc0, 0xb5, 0x16, 0x06, 0x07, 0xc7, 0x96, 0xd2, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x23, 0x5e, 0x40, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xe1, 0x17, 0xd0, 0x41, 0x7a, 0xd3, 0xec, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xc6, 0xc3, 0x80, 0x36, 0xfc, 0xe2, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x94, 0x31, 0xa0, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x91, 0x0c, 0x68, 0xc3, 0xdb, 0x3a, 0x1b, 0xbc, 0x26, 0x69, 0xb9, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x84, 0x9a, 0x01, 0x1d, 0xc4, 0x94, 0x57, 0x54, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x78, 0x41, 0x03, 0x3a, 0x88, 0x29, 0xaf, 0xa8, 0x9a, 0x35, 0x78, 0x79, 0xca, 0xf2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xef, 0x34, 0xa0, 0x0d, 0xbf, 0x28, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xd7, 0x5c, 0x48, 0x07, 0xae, 0xb9, 0xb0, 0xde, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xcd, 0x85, 0x78, 0xe0, 0x9a, 0x0b, 0xb3, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x62, 0x70, 0xeb, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x5c, 0x73, 0x61, 0x72, 0x10, 0x1d, 0xa1, 0x5a, 0x07, 0x0f, 0xb8, 0xc9, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xae, 0xb9, 0xb0, 0x1b, 0xb8, 0xe6, 0xc2, 0x78, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0xc0, 0x3d, 0xdf, 0x60, 0x5d, 0xdc, 0xd1, 0x1a, 0xbc, 0xb2, 0xd2, 0x66, 0x81, 0x6b, 0x2e, 0x6c, 0x0f, 0x22, 0x85, 0x54, 0xeb, 0xf0, 0x43, 0x4d, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xfa, 0xd6, 0x80, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x73, 0x21, 0x1d, 0x38, 0xe7, 0xc2, 0x6e, 0x83, 0xd0, 0x2f, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xce, 0xb9, 0x10, 0x0f, 0x9c, 0x73, 0x61, 0x72, 0x50, 0x36, 0x61, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xe7, 0x5c, 0xd8, 0x0c, 0x9c, 0x73, 0x61, 0x76, 0x70, 0x6c, 0x29, 0x6d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x30, 0x1b, 0xd0, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x31, 0x2d, 0x95, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x2d, 0x37, 0xa0, 0x0d, 0x96, 0xd4, 0x2f, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x4e, 0x0e, 0xe8, 0x20, 0x22, 0xa9, 0xb2, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x64, 0xd1, 0x01, 0x1d, 0x84, 0xa7, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xe6, 0x3a, 0xa0, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa4, 0xdc, 0x01, 0x6d, 0xf8, 0x37, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x83, 0x78, 0x40, 0x07, 0xcb, 0x71, 0xe3, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x14, 0xe8, 0x01, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x67, 0x7b, 0x40, 0x07, 0x45, 0x26, 0xee, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x1a, 0xfb, 0x80, 0x0e, 0x8a, 0x4a, 0xf1, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xe4, 0xfc, 0x01, 0x1d, 0xc4, 0x08, 0x9d, 0x56, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x8e, 0x01, 0x81, 0x36, 0x7c, 0x62, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x16, 0x41, 0xa0, 0x0d, 0x9f, 0xbb, 0x0c, 0x3c, 0xdc, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x6e, 0x10, 0x68, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb8, 0x26, 0x04, 0x3a, 0x28, 0xf1, 0x71, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x6f, 0x08, 0x74, 0x70, 0x58, 0x99, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x2c, 0x22, 0xd0, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x71, 0xa1, 0x08, 0x74, 0x50, 0xe2, 0xe3, 0xae, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x87, 0x11, 0xe8, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0x7a, 0x23, 0xd0, 0x41, 0x8c, 0xd0, 0x69, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xc8, 0x47, 0xa0, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x1e, 0x12, 0x68, 0xc3, 0xe7, 0x2e, 0x1b, 0x44, 0x79, 0xa5, 0xd0, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x1b, 0x49, 0xa0, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x73, 0x12, 0xe8, 0x20, 0x95, 0x56, 0x76, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xbd, 0x95, 0x40, 0x1b, 0xde, 0xed, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xc8, 0x25, 0xd0, 0x86, 0x07, 0x25, 0x37, 0x88, 0xa7, 0x40, 0xad, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x7f, 0x98, 0x40, 0x07, 0x11, 0xa6, 0x9c, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x70, 0x4d, 0xa0, 0x83, 0x08, 0xf9, 0xc0, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x1f, 0x27, 0xd0, 0x41, 0x1c, 0x78, 0x65, 0xd5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x20, 0x4f, 0xa0, 0x0d, 0x9f, 0xd8, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0xf4, 0x13, 0x68, 0x83, 0x35, 0x52, 0x4d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x0c, 0x05, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x32, 0x48, 0x81, 0x36, 0xfc, 0xb9, 0x34, 0xf0, 0x69, 0xf6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x6a, 0x51, 0xa0, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xa8, 0x3d, 0x05, 0xda, 0xf0, 0xe7, 0xd2, 0x06, 0x65, 0x61, 0xf1, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x38, 0x53, 0xa0, 0xc3, 0x0f, 0x35, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x98, 0x5a, 0x05, 0xda, 0xf0, 0xe7, 0xd2, 0x80, 0x37, 0x06, 0x87, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x50, 0x05, 0x3a, 0xfc, 0x50, 0xd3, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x10, 0x57, 0xa0, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0xf0, 0x15, 0xe8, 0x60, 0x01, 0x22, 0xeb, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xea, 0x63, 0x81, 0x0e, 0x96, 0x81, 0x9f, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xe2, 0x74, 0x16, 0x68, 0xc3, 0x27, 0x36, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x48, 0xa8, 0x05, 0xda, 0xf0, 0xb9, 0xcb, 0x80, 0x47, 0x27, 0x97, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x68, 0xb2, 0x05, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x66, 0x6f, 0x81, 0x36, 0x28, 0x4b, 0xde, 0x37, 0x78, 0x2c, 0x7d, 0xf0, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x2e, 0x72, 0x81, 0x36, 0x3c, 0x28, 0xb9, 0x41, 0x04, 0x35, 0x6a, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x98, 0xd3, 0x05, 0x3a, 0x88, 0x52, 0x15, 0xad, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x7c, 0xf3, 0x02, 0x1d, 0xc4, 0x53, 0xa0, 0xd6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0x12, 0x7d, 0x81, 0x0e, 0x0a, 0x8a, 0xcc, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x0a, 0x0c, 0x74, 0x10, 0xdb, 0x4b, 0x54, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x28, 0x13, 0x06, 0x3a, 0x28, 0xbc, 0x8c, 0xd7, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x41, 0x0c, 0x74, 0x10, 0x7d, 0x3c, 0x54, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd8, 0x2d, 0x06, 0xda, 0xa0, 0x84, 0xc7, 0x5c, 0xc0, 0xa3, 0x93, 0xcb, 0x5b, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xd5, 0x31, 0xd0, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x17, 0x19, 0x68, 0xc3, 0xbb, 0x3d, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xf8, 0x50, 0x06, 0xda, 0xf0, 0xa0, 0xe4, 0x06, 0x11, 0x7c, 0x55, 0xb5, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x6f, 0x19, 0x68, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xc3, 0xe6, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x5c, 0x33, 0x03, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x3d, 0xce, 0x40, 0x1b, 0x1e, 0x94, 0xdc, 0xa0, 0xe9, 0xe3, 0xcb, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x9d, 0xcf, 0x40, 0x1b, 0x1e, 0x94, 0xdc, 0x20, 0x8a, 0xc5, 0x9b, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xf4, 0x43, 0x03, 0x1d, 0xac, 0x32, 0x65, 0x5d, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xe6, 0x34, 0xd0, 0x41, 0x8c, 0xd0, 0x69, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xfd, 0x6a, 0xa0, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1f, 0x44, 0x53, 0xb6, 0x56, 0xab, 0xc1, 0x6b, 0x92, 0x96, 0x37, 0x58, 0x17, 0x77, 0xb4, 0x41, 0x84, 0x5f, 0x03, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xd8, 0x42, 0x3a, 0x70, 0xb1, 0x85, 0xc9, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb6, 0xb9, 0x73, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0x2e, 0xb6, 0xb0, 0x38, 0x88, 0xad, 0x72, 0xad, 0xc3, 0x0f, 0x35, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xee, 0xb2, 0x81, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x0b, 0x9c, 0x6c, 0x21, 0x1d, 0x38, 0xd9, 0xc2, 0xe0, 0xe0, 0xd8, 0x52, 0xba, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0xa2, 0x57, 0x1b, 0x68, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x98, 0x96, 0xca, 0x5a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x16, 0x37, 0xd0, 0x06, 0x4b, 0xea, 0x97, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x06, 0x0e, 0x74, 0x10, 0x91, 0x54, 0x59, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xae, 0xc4, 0x81, 0x0e, 0xc2, 0x53, 0x75, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xf2, 0x38, 0xd0, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0x52, 0x0e, 0xb4, 0xe1, 0x41, 0xc9, 0x0d, 0xe2, 0xf3, 0xa8, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xa2, 0x39, 0xd0, 0x41, 0x84, 0x29, 0x67, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x22, 0x1d, 0x1d, 0xe8, 0x20, 0xa6, 0xbc, 0xa2, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xf1, 0xa8, 0x0e, 0x74, 0x10, 0x8b, 0x5c, 0x59, 0x1d, 0x4e, 0xb1, 0x5a, 0x83, 0xe7, 0x6d, 0x2d, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x58, 0x62, 0x07, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xbe, 0x85, 0x74, 0xe0, 0x7c, 0x0b, 0xd3, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xe7, 0x5b, 0x88, 0x07, 0xce, 0xb7, 0xb0, 0xd9, 0xf0, 0xe7, 0xd2, 0x06, 0x89, 0x89, 0x47, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xbe, 0x85, 0xc9, 0x41, 0xd4, 0xd4, 0x6b, 0x1d, 0x7e, 0xa8, 0x59, 0x83, 0x75, 0x71, 0x47, 0x6b, 0xf0, 0xca, 0x4a, 0x9b, 0x05, 0xce, 0xb7, 0x30, 0x1a, 0x38, 0xdf, 0xc2, 0x72, 0xc3, 0x9f, 0x4b, 0x03, 0x5e, 0xdb, 0xdc, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x02, 0xe7, 0x5b, 0x18, 0x1e, 0x44, 0x0a, 0xbe, 0xd6, 0xe1, 0x87, 0x9a, 0x36, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xa4, 0xb7, 0x03, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x2b, 0x2b, 0x6d, 0x16, 0xb8, 0xdf, 0x42, 0x3a, 0x70, 0xbf, 0x85, 0xf8, 0xf0, 0xc1, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x97, 0x77, 0xa0, 0x0d, 0xef, 0xf6, 0xac, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x12, 0x1e, 0x68, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x28, 0x82, 0x15, 0x6a, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0x7b, 0x3c, 0xd0, 0x41, 0x84, 0x29, 0x67, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x62, 0x8a, 0x1e, 0xe8, 0x20, 0x8d, 0xf6, 0x68, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0xf5, 0xf5, 0x40, 0x07, 0x31, 0xe5, 0x15, 0xb5, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xca, 0x7b, 0xa0, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x73, 0x67, 0xee, 0x41, 0xb4, 0xf7, 0x54, 0x75, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x0a, 0x3c, 0x59, 0xbe, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x19, 0x3c, 0x59, 0xde, 0x00, 0x7e, 0x6e, 0x65, 0x65, 0x64, 0x20, 0x64, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0x20, 0xde, 0xf2, 0x81, 0x36, 0xfc, 0xa2, 0xb4, 0x06, 0xeb, 0xe2, 0x8e, 0xd6, 0xe0, 0x95, 0x95, 0x36, 0x1b, 0xbc, 0x7e, 0xb6, 0x7b, 0xe0, 0xc6, 0x0b, 0xcb, 0x0d, 0x9f, 0x2b, 0xad, 0xc1, 0xba, 0xb8, 0xa3, 0x35, 0x78, 0x65, 0xa5, 0xcd, 0x06, 0x4f, 0xb5, 0xed, 0x1e, 0xb8, 0xf1, 0xc2, 0x64, 0xc3, 0x9f, 0x4b, 0x1b, 0x14, 0xad, 0x27, 0x1b, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xe3, 0x85, 0xc1, 0x41, 0x24, 0x1f, 0x6c, 0x1d, 0x44, 0xc7, 0x10, 0xd5, 0x1a, 0xac, 0x8b, 0x3b, 0x5a, 0x83, 0x57, 0x56, 0xda, 0x2c, 0x70, 0xe3, 0x85, 0xcd, 0xc0, 0x8d, 0x17, 0x86, 0x1b, 0xfe, 0x5c, 0x1a, 0xf0, 0xc6, 0xe0, 0xd0, 0x0d, 0xd6, 0xc5, 0x1d, 0xad, 0xc1, 0x2b, 0x2b, 0x6d, 0x36, 0x78, 0x5e, 0x6f, 0xf7, 0x41, 0x3c, 0x2b, 0x6c, 0x1d, 0x7e, 0xa8, 0x69, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x44, 0xc1, 0x3e, 0xd0, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x31, 0xc6, 0x0f, 0x74, 0x70, 0x36, 0x74, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xc4, 0xae, 0x3f, 0xd0, 0x86, 0x77, 0x7b, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xb1, 0x01, 0x10, 0x74, 0xf0, 0x22, 0xfa, 0xe0, 0x35, 0x58, 0x17, 0x77, 0xb4, 0x41, 0xec, 0x08, 0x04, 0x1d, 0x1c, 0x5a, 0xbb, 0xd6, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x91, 0x3d, 0x10, 0x74, 0x10, 0x7d, 0x3c, 0x54, 0x75, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0xb3, 0x06, 0x31, 0x66, 0x17, 0xb4, 0xe1, 0x41, 0xc9, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x8b, 0xb4, 0xa0, 0x36, 0x28, 0xbb, 0x64, 0x37, 0x88, 0x31, 0xbb, 0xa0, 0x0d, 0xde, 0x2c, 0x7c, 0x32, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0x7e, 0x5a, 0x19, 0x9d, 0xb9, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x4a, 0xbd, 0xe2, 0xc1, 0xb1, 0xa5, 0xb4, 0x0d, 0x7f, 0xd1, 0xac, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x53, 0xea, 0x15, 0x37, 0x7c, 0x51, 0xb3, 0xa1, 0x8e, 0x07, 0x5e, 0x1d, 0xde, 0xb1, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x0e, 0xaa, 0xfb, 0x41, 0x99, 0xa5, 0xdb, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x3e, 0xee, 0x06, 0x87, 0x05, 0xb6, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x53, 0xea, 0x15, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x1a, 0xf0, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x0e, 0x0b, 0x6c, 0x07, 0x05, 0xf1, 0xf8, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0xc4, 0x3d, 0x88, 0xb7, 0x8c, 0xad, 0x5a, 0x0d, 0xe2, 0x22, 0x2d, 0x68, 0xc3, 0xe3, 0x23, 0x1b, 0xc4, 0x45, 0x5a, 0xd0, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x20, 0x1e, 0x64, 0xac, 0x0e, 0xca, 0x2c, 0xdd, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0xd1, 0x7a, 0x72, 0xf0, 0x88, 0x2e, 0xde, 0x0d, 0xa2, 0xda, 0x62, 0x6b, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x1c, 0x54, 0xf7, 0x83, 0x27, 0x76, 0xbc, 0xaf, 0xe1, 0xcf, 0xa5, 0x01, 0xaf, 0x6d, 0xee, 0x3c, 0x78, 0xfa, 0xb9, 0x5c, 0x1b, 0xbe, 0x7e, 0xd9, 0x20, 0xa6, 0xbc, 0xa2, 0x36, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0x41, 0x24, 0x7a, 0x45, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x64, 0xe2, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0x22, 0x35, 0x64, 0xab, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x0e, 0x31, 0x10, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0x20, 0x12, 0xbd, 0xa2, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0xb6, 0x95, 0x37, 0x48, 0x39, 0xad, 0xda, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x44, 0xaa, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x72, 0x52, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x02, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x06, 0x91, 0x1a, 0xb2, 0xb5, 0xc1, 0x7a, 0x84, 0xb7, 0x0e, 0xd2, 0xb5, 0x63, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0xe7, 0x49, 0x95, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xc2, 0x38, 0x63, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x9a, 0xb1, 0x30, 0xb7, 0x19, 0xd9, 0x1a, 0x7e, 0x71, 0xd9, 0xe0, 0xd4, 0xdc, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0x78, 0xe6, 0xd2, 0xce, 0xda, 0xc2, 0x5a, 0xc3, 0x2f, 0x2e, 0x07, 0x71, 0x91, 0x44, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x08, 0x58, 0xd6, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0xa2, 0xd5, 0x33, 0xea, 0xa0, 0x34, 0x43, 0x6f, 0x0d, 0xbf, 0xb8, 0x6c, 0x10, 0xb0, 0xac, 0x07, 0x11, 0x9b, 0xb1, 0x75, 0x50, 0xd6, 0x79, 0x6e, 0x50, 0x90, 0xc6, 0x6e, 0x10, 0x3d, 0x77, 0x52, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xe0, 0x41, 0xf6, 0xd6, 0x22, 0xf7, 0x56, 0xe7, 0x46, 0x36, 0xb7, 0x41, 0xec, 0xe1, 0x58, 0x1d, 0xc4, 0x2b, 0x73, 0xd5, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xc5, 0xb6, 0xf2, 0x06, 0x87, 0x05, 0xb6, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x4a, 0xa4, 0xea, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x2a, 0x27, 0xf5, 0x83, 0xa3, 0xab, 0xdc, 0x86, 0x5f, 0x94, 0x36, 0x38, 0x4f, 0xaa, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xd0, 0x84, 0x91, 0x91, 0xcd, 0xc8, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xa0, 0x39, 0x2b, 0xa3, 0x9b, 0x91, 0x6d, 0x50, 0x46, 0x9f, 0x1f, 0xc4, 0x2b, 0x73, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x06, 0x68, 0xb6, 0x36, 0x28, 0xa3, 0xcf, 0x37, 0x88, 0xe9, 0x3c, 0xa9, 0x3a, 0x9c, 0x62, 0x6b, 0x10, 0x33, 0x75, 0x41, 0x1b, 0x1e, 0x1f, 0xd9, 0x20, 0x66, 0xea, 0x82, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x88, 0xc1, 0x8e, 0xad, 0x0d, 0xa2, 0xc8, 0x63, 0xeb, 0x20, 0x36, 0x2b, 0xb6, 0x36, 0xfc, 0x45, 0xb3, 0x86, 0xcf, 0x95, 0x36, 0x88, 0x22, 0x8f, 0xad, 0x0d, 0xa2, 0xda, 0x62, 0xab, 0x0d, 0x96, 0x54, 0x27, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7c, 0xdc, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x61, 0x81, 0xed, 0xe0, 0xcc, 0xdc, 0x76, 0x10, 0xb1, 0x19, 0x5b, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0x84, 0x71, 0xc6, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xe2, 0x5d, 0xb6, 0x36, 0x88, 0x3d, 0x1c, 0xab, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xac, 0xa5, 0x6c, 0x6d, 0x10, 0x13, 0x2a, 0x5b, 0x1b, 0x44, 0xcf, 0xca, 0xd6, 0x1a, 0x7e, 0x71, 0xd9, 0xe0, 0xd4, 0xdc, 0x76, 0x10, 0xb1, 0x19, 0x5b, 0x07, 0x65, 0x9d, 0x67, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xac, 0xb7, 0xdd, 0xe0, 0xbc, 0x40, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x32, 0x71, 0x37, 0x88, 0x32, 0x9d, 0xad, 0x83, 0x78, 0x65, 0xae, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf8, 0xb8, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xc3, 0x02, 0xdb, 0x41, 0xeb, 0xb8, 0xcc, 0x07, 0xf1, 0xca, 0x5c, 0xd5, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0xc4, 0xca, 0xcb, 0xd6, 0x06, 0x07, 0x2c, 0xba, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x88, 0xc1, 0x8e, 0xad, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x18, 0x67, 0x1c, 0xbc, 0x04, 0x14, 0xb8, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0f, 0xde, 0x1c, 0xc4, 0x1e, 0x8e, 0xd5, 0x06, 0xef, 0xb1, 0x29, 0xdd, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x20, 0x62, 0x71, 0xac, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x0d, 0x62, 0x0f, 0xc7, 0xea, 0x20, 0x58, 0x59, 0xd7, 0x20, 0x84, 0x33, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xf0, 0x23, 0x7b, 0xab, 0x13, 0x63, 0x2b, 0x6b, 0x91, 0x7b, 0xab, 0x73, 0x23, 0x3b, 0x88, 0x57, 0xe6, 0xaa, 0x96, 0x59, 0x43, 0xfa, 0x70, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0xf3, 0xa4, 0xca, 0x06, 0xe9, 0xe0, 0x8c, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x3e, 0x1f, 0xbc, 0x04, 0x14, 0x78, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x80, 0x66, 0xae, 0x8c, 0x6e, 0x46, 0xb6, 0x41, 0x19, 0x7d, 0xbe, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x90, 0x99, 0xad, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x0c, 0xd0, 0x6c, 0x6d, 0x50, 0x46, 0x9f, 0x1f, 0x9c, 0xe4, 0xf9, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x31, 0x40, 0xb3, 0xb5, 0x41, 0x0a, 0x73, 0xd4, 0xc1, 0x49, 0x9e, 0xaf, 0x83, 0x93, 0x3c, 0xdf, 0x6a, 0x10, 0x69, 0x48, 0x5b, 0x1b, 0x24, 0x19, 0x10, 0x6e, 0x90, 0x3a, 0x18, 0xbb, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0x9e, 0x71, 0x75, 0x61, 0x72, 0x74, 0x65, 0x72, 0x2d, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x1b, 0x2c, 0x5d, 0x43, 0x5d, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0xc7, 0xac, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x43, 0xb0, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x0f, 0x61, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc8, 0x85, 0xda, 0xda, 0x20, 0xb2, 0xc6, 0xa5, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x71, 0x1b, 0xc4, 0x5e, 0xda, 0xd4, 0x06, 0x71, 0x8f, 0x36, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x72, 0xa1, 0xb6, 0x36, 0x88, 0xe9, 0xaa, 0xa9, 0x0d, 0xa2, 0x99, 0xc2, 0x6a, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x1e, 0xa2, 0x0d, 0xe2, 0xfd, 0x6c, 0xaa, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xe4, 0x42, 0x6d, 0x6d, 0x10, 0x4f, 0x56, 0x53, 0x1b, 0x44, 0x5f, 0x87, 0xd5, 0x06, 0x31, 0x87, 0x36, 0xb5, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x0f, 0x79, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc8, 0x85, 0xda, 0xda, 0x60, 0xe9, 0x1a, 0xea, 0x06, 0x91, 0x48, 0xb5, 0xb5, 0x41, 0x04, 0x5b, 0x6d, 0x1d, 0xc4, 0x3e, 0xd6, 0xd6, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x72, 0xa1, 0xb6, 0x36, 0x88, 0xac, 0x71, 0xa9, 0x0d, 0xa2, 0x99, 0xc2, 0x6a, 0x83, 0x98, 0x43, 0x9b, 0x3a, 0x88, 0x95, 0xa9, 0xad, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xe4, 0x42, 0x6d, 0x6d, 0x10, 0xd3, 0x55, 0x53, 0x1b, 0x44, 0x5f, 0x87, 0xd5, 0x06, 0xb1, 0x2a, 0xb5, 0x75, 0x10, 0x4f, 0x55, 0x5b, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc8, 0x85, 0xda, 0xda, 0x20, 0x9e, 0xac, 0xa6, 0x36, 0x88, 0x16, 0xa9, 0xad, 0x0d, 0x62, 0x2f, 0x6d, 0xea, 0x20, 0x82, 0xae, 0xb6, 0x9a, 0x35, 0x28, 0x0a, 0xbd, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x38, 0x4f, 0xaa, 0x1c, 0xc4, 0xfb, 0x4d, 0xd4, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x88, 0xa5, 0xad, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xe7, 0x4b, 0x5b, 0x1b, 0x94, 0xd1, 0xe7, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xd0, 0xc8, 0xbd, 0xb1, 0xcd, 0xc8, 0x36, 0x28, 0x86, 0x76, 0x37, 0x88, 0xaa, 0xa6, 0xad, 0x0e, 0x4e, 0xf2, 0x7c, 0x2b, 0xe0, 0xe1, 0xbd, 0xc9, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x2e, 0x94, 0xb6, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x44, 0x2c, 0x6d, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x38, 0x5f, 0xda, 0xda, 0xa0, 0x8c, 0x3e, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x62, 0x20, 0x0e, 0x22, 0xaa, 0x69, 0xeb, 0xe0, 0x24, 0xcf, 0x77, 0x38, 0xc5, 0x5a, 0x83, 0x98, 0x87, 0xda, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0x11, 0xaf, 0x2a, 0xb5, 0x41, 0x92, 0x01, 0xe1, 0x06, 0xa9, 0x83, 0xb1, 0x1b, 0xa4, 0x1d, 0x2f, 0xaf, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xe1, 0xbd, 0xc9, 0x1d, 0x9c, 0x3f, 0xf6, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x67, 0xf0, 0xb7, 0x0d, 0xca, 0x75, 0xd9, 0x83, 0xa3, 0xab, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x41, 0x01, 0xc8, 0xbf, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xd2, 0xb4, 0xad, 0xc3, 0x73, 0x41, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x33, 0xf8, 0xdb, 0x86, 0xf7, 0x82, 0x0e, 0x5a, 0xc7, 0x65, 0xde, 0x20, 0xed, 0x78, 0x79, 0x83, 0x58, 0x4b, 0xdb, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xc1, 0xdf, 0x36, 0x28, 0xd7, 0x65, 0x0f, 0x8e, 0x2a, 0x73, 0x1b, 0xc4, 0xd8, 0xda, 0xd6, 0x06, 0xf1, 0xc0, 0xb6, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x83, 0xbf, 0x6d, 0x78, 0x2f, 0xe8, 0xe0, 0xb4, 0x40, 0xd3, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0xb3, 0x06, 0xd1, 0x43, 0xb3, 0xb5, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x79, 0x52, 0xe5, 0x20, 0xfa, 0xd1, 0xac, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x49, 0x34, 0xbb, 0xc1, 0x61, 0x81, 0xed, 0xe0, 0xe8, 0x4c, 0xb1, 0x1a, 0xc4, 0xd6, 0xcc, 0xd6, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0xe7, 0x70, 0xb8, 0x83, 0x13, 0xff, 0xda, 0x6a, 0x10, 0xa5, 0x29, 0x5b, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xcd, 0x29, 0x76, 0x83, 0xb2, 0x38, 0xfa, 0xe0, 0xa8, 0xc0, 0xb6, 0x1a, 0x44, 0xb2, 0xca, 0xd6, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0x12, 0xa2, 0xa0, 0xd5, 0x20, 0x42, 0x98, 0xb6, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x38, 0x4f, 0xaa, 0xac, 0xe1, 0xcf, 0xa5, 0xc1, 0xef, 0xc3, 0x0f, 0x35, 0x07, 0xd1, 0x8f, 0x66, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x70, 0xe5, 0x6f, 0x70, 0x58, 0x60, 0x5b, 0xc3, 0x2f, 0x2e, 0x1b, 0x94, 0xd1, 0xe7, 0x1b, 0x1e, 0x93, 0x39, 0x38, 0xfe, 0xb8, 0x1c, 0x1e, 0xfa, 0x39, 0x9c, 0x62, 0xad, 0xc1, 0x31, 0xde, 0x74, 0xc3, 0x2f, 0x4a, 0x1b, 0xac, 0xe8, 0x7d, 0xdf, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x41, 0x31, 0xb4, 0xbb, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x5e, 0xa4, 0x2b, 0xbd, 0xe1, 0xc1, 0x9b, 0x0d, 0x22, 0xaf, 0x28, 0xaa, 0xd5, 0x20, 0x96, 0xc6, 0xb6, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x9a, 0x53, 0xec, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x1c, 0xcf, 0xdf, 0x0e, 0x4e, 0xfc, 0x6b, 0x07, 0x85, 0x93, 0xec, 0xe1, 0x14, 0xab, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x80, 0x07, 0x4e, 0x6c, 0x8d, 0xcc, 0xdc, 0xa0, 0x94, 0x10, 0x5f, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0xe4, 0x5c, 0xd8, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x03, 0xe7, 0x50, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0xc4, 0x2f, 0x3a, 0xd4, 0x41, 0x7a, 0xd2, 0xe0, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0xf6, 0xd3, 0xa1, 0x0e, 0x4e, 0xf2, 0x7c, 0x07, 0x05, 0x20, 0xff, 0xac, 0x41, 0x5a, 0x48, 0xec, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x1c, 0x3e, 0x48, 0x6e, 0x84, 0x5d, 0xc3, 0x9f, 0x4b, 0x83, 0xcf, 0x07, 0xc9, 0x8d, 0xb0, 0x07, 0x05, 0xf8, 0xf6, 0x86, 0x5f, 0x5c, 0x56, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0x85, 0x4c, 0x0f, 0x0e, 0x1e, 0x19, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xa9, 0x14, 0xf6, 0x20, 0x6a, 0xd2, 0xa1, 0x56, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0x85, 0x4c, 0x0f, 0xce, 0xed, 0x7c, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xa9, 0x14, 0xf6, 0x20, 0xe2, 0xd4, 0xa1, 0x0e, 0x0a, 0x40, 0xfe, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x88, 0x76, 0xb6, 0xaa, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x3a, 0x18, 0xbb, 0x41, 0xe2, 0x67, 0xec, 0x1a, 0xde, 0xd6, 0x19, 0xc0, 0x07, 0xad, 0x2d, 0x6c, 0xac, 0x65, 0x0e, 0x2d, 0x2c, 0x86, 0xac, 0x35, 0x88, 0x2c, 0xc7, 0xaa, 0x15, 0xc0, 0x0f, 0xad, 0x2d, 0x6c, 0xac, 0x65, 0x0e, 0x2d, 0x4c, 0xa6, 0xc6, 0x86, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x69, 0x4e, 0xb1, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x08, 0x00, 0xdc, 0x6a, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0xbb, 0x99, 0x55, 0x07, 0x71, 0xe2, 0x56, 0x75, 0x90, 0x76, 0x1a, 0x7b, 0x38, 0xc5, 0xd6, 0x20, 0xda, 0x16, 0xb7, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x9a, 0x53, 0xec, 0x06, 0x71, 0xde, 0xb8, 0xb5, 0x86, 0x07, 0x25, 0x37, 0x88, 0xe4, 0xc7, 0xaa, 0x83, 0x38, 0x71, 0xab, 0x3a, 0x48, 0x51, 0x71, 0x5d, 0x0d, 0x62, 0x0c, 0xb2, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x0e, 0xc6, 0x6e, 0x90, 0xf8, 0x19, 0xbb, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x46, 0xc6, 0xad, 0x3a, 0x9c, 0x62, 0x6b, 0x10, 0x3d, 0x93, 0x55, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x75, 0x30, 0x76, 0x83, 0x54, 0xf7, 0xd8, 0x83, 0x78, 0x59, 0xdc, 0x9a, 0x35, 0x88, 0x00, 0xc0, 0xad, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x09, 0xd5, 0x8c, 0x1b, 0x84, 0xd3, 0xd8, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0xb9, 0x11, 0x76, 0x83, 0xe4, 0x46, 0xd8, 0x0e, 0x3f, 0xd4, 0x1c, 0xc4, 0xd7, 0x5c, 0xd5, 0x41, 0x3c, 0x12, 0x6e, 0x6d, 0x50, 0x4a, 0x88, 0xaf, 0xe1, 0x92, 0xda, 0xa0, 0xa8, 0x11, 0x5f, 0x0d, 0x8a, 0xda, 0xe2, 0x83, 0x83, 0x47, 0xc6, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x32, 0x71, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x45, 0xa5, 0xf8, 0x06, 0xd1, 0x63, 0xb8, 0xd5, 0x1a, 0xde, 0xd6, 0x39, 0x88, 0x78, 0xcc, 0xad, 0x56, 0x83, 0xa2, 0xb6, 0xf8, 0xe0, 0xdc, 0xce, 0xb7, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x4c, 0xdc, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x51, 0x29, 0xbe, 0x41, 0xf4, 0x1e, 0x6e, 0xb5, 0x86, 0xb7, 0x75, 0x0e, 0xa2, 0x67, 0x73, 0xab, 0x36, 0x58, 0x52, 0xbf, 0xb4, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x62, 0xac, 0x31, 0xe8, 0xa0, 0x00, 0xe4, 0xdf, 0xa0, 0xe0, 0xc3, 0xdc, 0x20, 0x2e, 0x1b, 0xa2, 0x36, 0x28, 0x48, 0x63, 0x07, 0x67, 0xd7, 0xf0, 0x89, 0xcd, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xec, 0x6e, 0x37, 0x28, 0xd7, 0x65, 0x0f, 0x0a, 0xa5, 0xed, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x5f, 0x4e, 0xae, 0x41, 0x29, 0x21, 0xbe, 0xf1, 0x7c, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x02, 0xeb, 0x41, 0x54, 0x82, 0x6e, 0x6d, 0x50, 0x4a, 0x88, 0x6f, 0x3c, 0xdf, 0xf0, 0x71, 0xd4, 0x41, 0xb4, 0x87, 0x6e, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x2e, 0x6f, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x1b, 0x94, 0xeb, 0xb2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe0, 0xa9, 0xdd, 0xa0, 0x58, 0xda, 0x3e, 0x88, 0x9c, 0x8b, 0xa8, 0x36, 0x7c, 0x62, 0xb3, 0x41, 0xac, 0x60, 0x44, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x70, 0xa0, 0xe9, 0x5b, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0x43, 0xcd, 0x86, 0x0f, 0x72, 0x36, 0x88, 0x95, 0x8d, 0xa8, 0x0d, 0x4e, 0x2d, 0x7d, 0x1b, 0x14, 0xa4, 0xb1, 0x83, 0xd7, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xf8, 0x13, 0x68, 0x83, 0xf8, 0xe7, 0xdc, 0xda, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x34, 0xe0, 0xdd, 0x20, 0x6a, 0x38, 0xb7, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0xb6, 0x95, 0x37, 0x28, 0x2a, 0xc5, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x61, 0xb1, 0xbc, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0x11, 0x17, 0x02, 0xb5, 0xe1, 0x6d, 0x9d, 0x01, 0x6f, 0x6e, 0x4c, 0xee, 0x20, 0x36, 0x40, 0xa2, 0xda, 0xf0, 0x89, 0xcd, 0x06, 0x91, 0xfa, 0xda, 0xb4, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x80, 0x07, 0xad, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0xa1, 0x66, 0xc3, 0x07, 0x39, 0x1b, 0xc4, 0xb2, 0x48, 0xd4, 0x06, 0xc5, 0x48, 0xed, 0x06, 0x05, 0x69, 0xec, 0xe0, 0xf1, 0x1a, 0xac, 0xea, 0x55, 0xda, 0x20, 0xa9, 0x14, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x62, 0x69, 0x7b, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0x20, 0x67, 0x83, 0x78, 0x30, 0x89, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0x20, 0x7a, 0x0f, 0xb7, 0x0e, 0xce, 0xcc, 0x6d, 0x07, 0xc5, 0xd2, 0xf6, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xcd, 0x68, 0x5c, 0xc3, 0x2f, 0x2e, 0x1b, 0x44, 0x8f, 0xe1, 0xd6, 0x06, 0x31, 0x6f, 0xb8, 0xd5, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0xcc, 0xe4, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xa9, 0x14, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0xc3, 0x33, 0x93, 0x07, 0x49, 0xa1, 0x57, 0x75, 0x10, 0xf7, 0x27, 0x51, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x1c, 0x68, 0xfa, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x4e, 0x2d, 0x7d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x80, 0x77, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0x54, 0x8a, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x83, 0x38, 0x6c, 0x89, 0x3a, 0x28, 0x94, 0xb6, 0x3b, 0x28, 0xac, 0xba, 0x3b, 0x48, 0x72, 0x60, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x49, 0xa5, 0xb0, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x94, 0xeb, 0xb2, 0x1b, 0x44, 0xbd, 0x4b, 0x54, 0xab, 0x41, 0x54, 0x55, 0x56, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xd4, 0xc1, 0xd8, 0x0d, 0x12, 0x3f, 0x63, 0xd7, 0xf0, 0xb6, 0xce, 0x00, 0x7e, 0x68, 0x6d, 0x61, 0x63, 0x2d, 0x73, 0x68, 0x61, 0x35, 0x31, 0x32, 0x64, 0x1d, 0x4e, 0xb1, 0x36, 0x88, 0x15, 0xcc, 0xaa, 0xd5, 0x20, 0xa2, 0x34, 0xab, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xea, 0x60, 0xec, 0x06, 0xa9, 0xee, 0xb1, 0x07, 0x51, 0xc1, 0xbb, 0xb5, 0x1a, 0xc4, 0x14, 0xef, 0xd6, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x73, 0x8a, 0xdd, 0x20, 0xce, 0x1b, 0xb7, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0xd1, 0x04, 0x5a, 0x75, 0x10, 0x27, 0x6e, 0x55, 0x07, 0xe9, 0xda, 0xb1, 0x87, 0x53, 0x6c, 0x0d, 0x62, 0xa1, 0xb3, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x0e, 0xc6, 0x6e, 0x90, 0xea, 0x1e, 0x7b, 0x10, 0xdb, 0x92, 0x5b, 0x07, 0x31, 0xf3, 0x59, 0xd5, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x0b, 0x7c, 0x19, 0xb9, 0x41, 0x29, 0x21, 0xbe, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x89, 0xcd, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x8b, 0x07, 0xa9, 0xd8, 0xbf, 0x07, 0x51, 0xa0, 0xe2, 0xb4, 0xe1, 0x13, 0x9b, 0x0d, 0x62, 0x80, 0xc5, 0x69, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x76, 0x83, 0xa2, 0xd3, 0x78, 0xc3, 0x9f, 0x40, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x42, 0xbb, 0x77, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0x41, 0xf0, 0xdb, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x7f, 0x10, 0x4d, 0xc7, 0x41, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x93, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x94, 0x39, 0x01, 0x07, 0xb1, 0xf2, 0xe2, 0xb4, 0xe1, 0xc1, 0x9b, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x48, 0x54, 0x23, 0x3b, 0x88, 0x95, 0x17, 0xa7, 0x35, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0x46, 0xd0, 0xf6, 0x1a, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x03, 0x43, 0x68, 0xbb, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3e, 0x2d, 0xdd, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xad, 0x26, 0xe9, 0x20, 0x56, 0x5e, 0x9c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa1, 0xc0, 0xba, 0xc1, 0x49, 0xb7, 0xef, 0xe0, 0xcc, 0xdc, 0x76, 0x10, 0xac, 0xac, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x8b, 0x87, 0xf7, 0x82, 0x36, 0x88, 0xf9, 0x16, 0xa7, 0x0d, 0x62, 0xd1, 0xc5, 0x69, 0x0d, 0x9f, 0xbb, 0x0c, 0xce, 0x1e, 0xa4, 0xbc, 0x5d, 0xad, 0xe1, 0x73, 0x97, 0xc1, 0xc9, 0x83, 0x72, 0x5d, 0x76, 0x0d, 0x9f, 0xbb, 0x0c, 0x7c, 0x5a, 0xba, 0xe1, 0x6d, 0x9d, 0x81, 0x4f, 0x4b, 0x6b, 0x83, 0xb2, 0x4b, 0x76, 0x83, 0x28, 0xfc, 0x10, 0xda, 0xe0, 0xcd, 0xc2, 0x27, 0xb3, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0x2c, 0xe0, 0x8f, 0xd5, 0xc9, 0xd9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xf1, 0x40, 0xbd, 0xd5, 0x00, 0xda, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x6e, 0x20, 0x63, 0x75, 0x72, 0x76, 0x65, 0xbf, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0xb1, 0xf9, 0x51, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0xc1, 0xea, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x78, 0xb3, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x74, 0x25, 0x6f, 0xad, 0x41, 0xd1, 0x69, 0xbc, 0x86, 0xb7, 0x75, 0x36, 0x28, 0x27, 0xb1, 0x0f, 0x62, 0xe5, 0xc5, 0x69, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x52, 0x34, 0x8d, 0x0f, 0x62, 0xe5, 0xc5, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0xd3, 0x91, 0xc8, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x06, 0x7a, 0x9c, 0x0e, 0x12, 0x29, 0x9d, 0x3a, 0x48, 0xa4, 0x74, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0x99, 0xbd, 0x75, 0x10, 0x61, 0xd0, 0x57, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x3e, 0xb1, 0xb7, 0x36, 0x3c, 0x26, 0xb3, 0x06, 0x49, 0x06, 0x84, 0x1b, 0xc4, 0x66, 0xf6, 0xd6, 0x06, 0xe5, 0xba, 0xec, 0x06, 0xc9, 0x94, 0x4e, 0x1b, 0x24, 0x53, 0x3a, 0x1d, 0x44, 0x18, 0xf4, 0x55, 0x2b, 0xe0, 0xdf, 0x85, 0xc9, 0x91, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xf1, 0xf4, 0xbd, 0xd5, 0x00, 0xfe, 0x65, 0x64, 0x77, 0x61, 0x72, 0x64, 0x73, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x79, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xe0, 0xe1, 0xe0, 0x83, 0xd4, 0x04, 0xcc, 0x35, 0xfc, 0xb9, 0x34, 0xf0, 0x71, 0xf1, 0x41, 0x6a, 0x02, 0x66, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0x35, 0x01, 0x73, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xe0, 0xc9, 0xe0, 0x0d, 0x92, 0x0c, 0x08, 0x37, 0x88, 0xcd, 0xec, 0xad, 0x0d, 0xca, 0x75, 0xd9, 0x35, 0x5c, 0x52, 0x6b, 0x1c, 0x3a, 0x88, 0x2b, 0x19, 0xac, 0xd6, 0x70, 0x49, 0xad, 0x71, 0x68, 0xe0, 0xe3, 0xe2, 0x5a, 0xc3, 0x25, 0xb5, 0xc6, 0xf3, 0x83, 0xb8, 0x92, 0xc1, 0x6a, 0x0d, 0x97, 0xd4, 0x1a, 0xcf, 0x0f, 0xa2, 0xcf, 0x7c, 0xab, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x1e, 0x8f, 0xde, 0xa0, 0xe8, 0x34, 0xde, 0x20, 0x36, 0xb3, 0xb7, 0xd6, 0xa0, 0xe8, 0x34, 0xde, 0x20, 0x3e, 0xb1, 0xb7, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0x99, 0xbd, 0xb5, 0x41, 0x14, 0x96, 0x6f, 0x1d, 0x44, 0xd7, 0xf9, 0xd6, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xcd, 0xec, 0xad, 0x0d, 0x22, 0xc5, 0x7c, 0x6b, 0x83, 0xe8, 0x35, 0xdf, 0x6a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe2, 0x54, 0xfb, 0x20, 0x56, 0x5e, 0x9c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xf1, 0x89, 0xbd, 0xb5, 0xe1, 0x31, 0x99, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x64, 0x70, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf0, 0x79, 0xf4, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xb1, 0x99, 0xbd, 0xb5, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xf1, 0x89, 0xbd, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xcd, 0xec, 0xad, 0x83, 0xc8, 0x35, 0xdf, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0x99, 0xbd, 0xb5, 0x41, 0x14, 0x96, 0x6f, 0x6d, 0x10, 0x29, 0xe6, 0x5b, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xb8, 0x61, 0xdf, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x57, 0xf2, 0xd6, 0x41, 0xec, 0xb5, 0x6f, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x78, 0x74, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xf3, 0xe8, 0x5a, 0x01, 0x7f, 0x6e, 0x2c, 0xac, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x2a, 0xfa, 0xad, 0x06, 0xf0, 0x9e, 0x1b, 0x0b, 0x63, 0x0b, 0x93, 0x03, 0x69, 0xab, 0x63, 0xa3, 0x4b, 0x83, 0x63, 0xcb, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x6e, 0xc4, 0xb7, 0x0e, 0xca, 0xac, 0xe8, 0x0d, 0x7f, 0xd1, 0x6c, 0x90, 0x9a, 0x80, 0xb9, 0xe1, 0x83, 0x9c, 0x0d, 0x96, 0x0d, 0xbe, 0x6d, 0x50, 0xa4, 0x8e, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x7c, 0x5c, 0xbc, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x11, 0x02, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x42, 0x81, 0x75, 0x83, 0x72, 0x02, 0xfa, 0x20, 0x58, 0x59, 0xdb, 0xa0, 0x94, 0x10, 0x5f, 0xc3, 0x25, 0xb5, 0x41, 0x51, 0x23, 0xbe, 0x06, 0xd1, 0x67, 0xbe, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x3c, 0x7d, 0x6f, 0xb5, 0x86, 0xb7, 0x75, 0x0e, 0xa2, 0xcf, 0x7c, 0x6b, 0x83, 0xf8, 0xe6, 0xdf, 0xaa, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x8f, 0xc9, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xa3, 0x77, 0xdc, 0x86, 0xc7, 0x64, 0x0e, 0xca, 0x6c, 0xe9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x54, 0xf1, 0x6f, 0x6d, 0x10, 0xdf, 0xfc, 0x5b, 0x1b, 0xc4, 0x54, 0x0d, 0x56, 0x07, 0xf1, 0xcd, 0xbf, 0xb5, 0x02, 0x3e, 0x9e, 0x5c, 0xd9, 0xb8, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x10, 0xb7, 0x00, 0x5c, 0x0d, 0xe0, 0x2d, 0x57, 0x36, 0xf6, 0x66, 0x57, 0x26, 0x07, 0x82, 0xd7, 0x32, 0xf6, 0xf6, 0x26, 0x47, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0xe2, 0x46, 0x3f, 0x6a, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x78, 0x3c, 0x7c, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xe0, 0xa9, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x57, 0xf2, 0xd6, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0x0f, 0x22, 0x0c, 0xfa, 0xea, 0xa0, 0x20, 0x1e, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0x71, 0xc3, 0xbe, 0xb5, 0x86, 0x8f, 0xa3, 0x36, 0x48, 0x32, 0x20, 0xdc, 0x20, 0x78, 0x6a, 0x37, 0x28, 0xd7, 0x65, 0x0f, 0x22, 0x0c, 0xfa, 0xaa, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xf1, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x73, 0xcd, 0x5b, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x50, 0x60, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0xa0, 0xa8, 0x14, 0x3f, 0x38, 0xf4, 0xf2, 0x1d, 0x1c, 0x55, 0xe6, 0x0e, 0x22, 0xb8, 0xc7, 0x69, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0x9b, 0x75, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0xd1, 0x95, 0xbc, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0x92, 0x29, 0x9d, 0x0e, 0x12, 0x29, 0x9d, 0x36, 0x88, 0x64, 0x1e, 0xa7, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xed, 0xc1, 0x60, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0x33, 0x7b, 0x6b, 0x83, 0x64, 0x4a, 0xa7, 0x0d, 0x62, 0x4b, 0x7a, 0xab, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x7b, 0x30, 0x98, 0x07, 0x89, 0x94, 0x4e, 0x87, 0x53, 0xac, 0x05, 0x5e, 0x4c, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xc4, 0xc4, 0xf2, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x9b, 0xd9, 0x5b, 0x1b, 0x9c, 0x9a, 0xdb, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x71, 0xc3, 0xbe, 0x75, 0x70, 0x54, 0x60, 0x6b, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0xb7, 0x00, 0x5c, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0x4f, 0x4c, 0x2c, 0xaf, 0x83, 0xb8, 0xa0, 0xe0, 0x5a, 0x0d, 0x1e, 0x73, 0x62, 0xb7, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0xf0, 0x98, 0x13, 0xbb, 0x06, 0xf0, 0x23, 0x2b, 0x1b, 0x7b, 0x23, 0x2b, 0x03, 0x81, 0x7b, 0x4b, 0x73, 0xa3, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x51, 0x06, 0xda, 0xb4, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x83, 0xb4, 0x04, 0xcc, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xf3, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x12, 0xcd, 0x6e, 0x78, 0xf0, 0x66, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xf0, 0xe6, 0x20, 0x45, 0x06, 0xf9, 0xe0, 0x24, 0xcf, 0xb7, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf0, 0x73, 0xe9, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x3c, 0x78, 0xb3, 0x86, 0x5f, 0x5c, 0x36, 0xfc, 0x21, 0x7b, 0x50, 0x10, 0x8f, 0x1f, 0x9c, 0xe4, 0xf9, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0xc7, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x44, 0x4e, 0x70, 0x1d, 0xa4, 0x57, 0x3b, 0x6d, 0x50, 0x4a, 0x88, 0xaf, 0xe1, 0x92, 0xda, 0xa0, 0xa8, 0x11, 0x5f, 0x83, 0x14, 0x4c, 0xa7, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x6d, 0xd6, 0x0d, 0xff, 0xe6, 0x6c, 0x50, 0x0a, 0xa9, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xa3, 0x77, 0xdc, 0x86, 0xc7, 0x64, 0x0e, 0x12, 0x29, 0x9d, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x38, 0x1d, 0x89, 0x1c, 0x24, 0x52, 0x3a, 0x1d, 0x24, 0x53, 0x3a, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xf0, 0x70, 0xf0, 0x41, 0x94, 0xc1, 0x64, 0x6d, 0x50, 0xec, 0x68, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x3c, 0x50, 0x6f, 0x75, 0x10, 0x13, 0x00, 0x5c, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x7e, 0x71, 0xd9, 0xa0, 0xa0, 0xc8, 0x3c, 0x88, 0x09, 0x00, 0xae, 0x59, 0x83, 0xc6, 0x62, 0x30, 0x37, 0xfc, 0xa2, 0xb4, 0x41, 0x0c, 0xc2, 0x38, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0xf0, 0x66, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x41, 0x8c, 0xc0, 0x59, 0x6d, 0x90, 0x4c, 0xe9, 0x74, 0x10, 0x19, 0x21, 0x5c, 0x87, 0x53, 0xac, 0x35, 0x78, 0x2f, 0x1e, 0xf3, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x7b, 0xf1, 0x98, 0x1b, 0xc0, 0xaf, 0xcc, 0x6d, 0xec, 0x8d, 0xac, 0x0c, 0x04, 0xee, 0x2d, 0xcd, 0x8d, 0x6e, 0xc3, 0x2f, 0x4a, 0x1b, 0xc4, 0x8d, 0xf8, 0xd6, 0x86, 0xbf, 0x68, 0x36, 0xfc, 0x50, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0xca, 0xe2, 0xe8, 0x0d, 0x0f, 0xde, 0xac, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x1e, 0x1c, 0xd6, 0x57, 0x0e, 0xa2, 0x75, 0x7d, 0x6b, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0x4c, 0x66, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xf4, 0x8e, 0xdb, 0xf0, 0x98, 0xcc, 0x06, 0x51, 0x58, 0xbe, 0x55, 0x75, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x06, 0x65, 0x97, 0xec, 0xc0, 0x97, 0x91, 0x1b, 0xee, 0xa8, 0xd9, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0xd6, 0x20, 0xbe, 0x49, 0x84, 0x36, 0x3c, 0x3e, 0xb2, 0x41, 0x7c, 0x93, 0x08, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0x5f, 0xd4, 0x6c, 0xa8, 0xe3, 0x01, 0x7f, 0x1d, 0xd9, 0xdc, 0x58, 0x18, 0x5b, 0x98, 0xbc, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x1d, 0x15, 0xe7, 0x86, 0x2f, 0x6a, 0x36, 0xd4, 0xf1, 0x80, 0xb7, 0x8e, 0x0c, 0xee, 0x2d, 0xcd, 0x8d, 0x6e, 0xc3, 0x5f, 0x34, 0x1b, 0xc4, 0xe7, 0x0c, 0xd7, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0xc0, 0x3b, 0xac, 0x05, 0xee, 0x2d, 0xcd, 0x8d, 0xae, 0x85, 0xac, 0x6c, 0xec, 0x8d, 0xac, 0x8c, 0xdc, 0xa0, 0x84, 0x8e, 0xdd, 0x20, 0x35, 0x01, 0xf3, 0x20, 0x4c, 0xc7, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x67, 0x43, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x0e, 0x1e, 0xa3, 0x77, 0xb7, 0xc1, 0x33, 0xe1, 0x3a, 0x6b, 0x83, 0x13, 0xfb, 0xcd, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0xbd, 0x78, 0xcc, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x55, 0xf4, 0x5b, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0xa2, 0xb1, 0x86, 0xab, 0xc3, 0x43, 0x3f, 0xab, 0x41, 0x5c, 0xbc, 0x08, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0xb8, 0x78, 0x11, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x96, 0x63, 0xb8, 0x36, 0x88, 0x8f, 0x19, 0xae, 0x35, 0xfc, 0xb9, 0x34, 0xb8, 0x78, 0x10, 0x21, 0x32, 0x5c, 0x6b, 0xf8, 0x73, 0x69, 0x80, 0x57, 0xac, 0x05, 0xee, 0x2d, 0xcd, 0x8d, 0x3e, 0x88, 0xcf, 0x19, 0xae, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x7c, 0xce, 0x70, 0x6d, 0x50, 0x90, 0xc6, 0x6e, 0x10, 0x53, 0x35, 0x5c, 0x1b, 0x44, 0xd6, 0x0d, 0xd7, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0xc0, 0x5b, 0xac, 0x05, 0xee, 0x2d, 0xcd, 0x8d, 0xae, 0x85, 0xac, 0x6c, 0xec, 0x8d, 0xac, 0x8c, 0x3c, 0x88, 0x4c, 0x1b, 0xae, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xd9, 0xd0, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x0f, 0x38, 0x5c, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x08, 0xef, 0xe1, 0xaa, 0x36, 0x38, 0xb1, 0xdf, 0x6c, 0x10, 0x23, 0x39, 0x5c, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x44, 0x15, 0xff, 0xd6, 0x06, 0x71, 0x9a, 0xc3, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0x22, 0x3c, 0x87, 0x6b, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x8d, 0x40, 0x5c, 0x1d, 0xde, 0x42, 0x9b, 0x35, 0x78, 0x55, 0x9a, 0xe2, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0x10, 0x73, 0x41, 0x58, 0x03, 0xbc, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x79, 0x1b, 0x1e, 0x1f, 0xd9, 0xe0, 0x55, 0x69, 0x8a, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x24, 0xc5, 0x33, 0xae, 0xe1, 0xcf, 0xa5, 0x81, 0x9f, 0x2b, 0x0f, 0x3f, 0xd4, 0xb4, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0xe5, 0x59, 0x42, 0xad, 0x41, 0xbc, 0x9e, 0x55, 0x1d, 0x1c, 0x42, 0x27, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0xcf, 0x95, 0x35, 0x6b, 0x10, 0xe5, 0x59, 0x42, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x51, 0x9e, 0x25, 0xd4, 0x00, 0x7e, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x79, 0x20, 0x6f, 0x63, 0x74, 0x73, 0x1b, 0x1e, 0x1f, 0xd9, 0x20, 0xca, 0xb3, 0x84, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xed, 0xc1, 0xd3, 0xcf, 0xe5, 0x0e, 0xe2, 0x1c, 0x89, 0x6b, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf8, 0xb9, 0x75, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x9f, 0xab, 0x1b, 0x5b, 0x3b, 0x88, 0xa2, 0x25, 0xae, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x81, 0x87, 0x5b, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x49, 0x34, 0xbb, 0xe1, 0xc1, 0x9b, 0x35, 0xfc, 0xe2, 0xb2, 0xe1, 0xbd, 0xa0, 0xc3, 0x5b, 0x68, 0x07, 0x51, 0xc2, 0x84, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x38, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x92, 0x20, 0x65, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x3e, 0xee, 0x06, 0x89, 0x2f, 0xa9, 0x87, 0xb7, 0xd0, 0x0e, 0xa2, 0x84, 0x09, 0x6b, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x70, 0x83, 0xa2, 0xd3, 0x78, 0xc3, 0x9f, 0x40, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x42, 0xbb, 0x77, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0xf0, 0x20, 0xc8, 0x6f, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x01, 0xef, 0x06, 0x89, 0x2f, 0xa9, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0xc3, 0x83, 0x37, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0xc3, 0x7b, 0x41, 0x07, 0x47, 0x05, 0xb6, 0x0e, 0x0e, 0xf0, 0x74, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x2e, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x3c, 0x5a, 0xbb, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa2, 0xd9, 0x0d, 0x0f, 0xde, 0x6c, 0x10, 0x45, 0x53, 0x5c, 0x07, 0x07, 0x78, 0xba, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xd3, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x16, 0x47, 0x6f, 0x50, 0x54, 0x8a, 0xaf, 0xe1, 0x17, 0x97, 0x0d, 0x52, 0x4f, 0x63, 0xd7, 0xf0, 0xb6, 0xce, 0xc0, 0xa3, 0xb5, 0xb5, 0xc1, 0x21, 0x74, 0xe2, 0xa0, 0xac, 0xf3, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x49, 0x90, 0xb2, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x1b, 0xa4, 0x9e, 0xc6, 0xae, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0xf3, 0xe9, 0x44, 0x07, 0xa5, 0x19, 0xfa, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xc0, 0xcb, 0xc9, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xc2, 0x73, 0xb8, 0x36, 0x88, 0x7f, 0x77, 0xab, 0x83, 0x43, 0x5f, 0xdf, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xc0, 0xcf, 0xcd, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x5f, 0x26, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x18, 0xc9, 0xe1, 0xda, 0x20, 0x16, 0x52, 0xa1, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x78, 0xb4, 0x70, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xc5, 0xd1, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xd4, 0xd3, 0xd8, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x65, 0x72, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x52, 0x4f, 0x63, 0x0f, 0xa2, 0xe3, 0x03, 0xeb, 0x20, 0x96, 0xc0, 0xb8, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x25, 0x50, 0xf6, 0x06, 0x91, 0xc4, 0xd6, 0x74, 0x90, 0x10, 0x62, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0xc1, 0xf1, 0x93, 0x6f, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3c, 0xb5, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x24, 0x48, 0xd9, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x52, 0xa0, 0x53, 0x0f, 0xe2, 0x3e, 0x8c, 0x6b, 0x0d, 0x6f, 0xeb, 0x0c, 0x3c, 0x5a, 0x58, 0x87, 0x87, 0x7e, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xc5, 0xd1, 0x1b, 0x1e, 0xbc, 0x59, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0x5e, 0xd0, 0x06, 0x71, 0x5c, 0xc6, 0xd5, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0x5e, 0xd0, 0x06, 0x91, 0x16, 0x70, 0x55, 0xad, 0x06, 0x31, 0xa2, 0x26, 0xb4, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x10, 0x23, 0x6a, 0x42, 0x1d, 0xb4, 0xce, 0x3a, 0xbe, 0xe1, 0xf1, 0x91, 0x0d, 0x62, 0x44, 0x4d, 0x68, 0xc3, 0x2f, 0x4a, 0x1b, 0xc4, 0x0b, 0x11, 0xd6, 0x86, 0xbf, 0x68, 0x36, 0xfc, 0x50, 0xb3, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x1b, 0xc5, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x51, 0xfc, 0xbb, 0x41, 0x51, 0x29, 0x7e, 0x10, 0x25, 0x4c, 0x58, 0x07, 0x69, 0xa7, 0xb1, 0x1b, 0x84, 0xa7, 0xea, 0x86, 0x4f, 0x6c, 0x36, 0x88, 0x32, 0x2a, 0xae, 0x0d, 0x9f, 0xd8, 0x6c, 0x10, 0xa7, 0x56, 0x5c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x1f, 0x16, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x08, 0xcf, 0xe1, 0xda, 0x20, 0xfe, 0xdd, 0xad, 0x0e, 0x0f, 0xfd, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x18, 0xc9, 0xe1, 0x3a, 0x88, 0x8a, 0x76, 0xab, 0x59, 0x83, 0xa8, 0x19, 0x14, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x9a, 0x41, 0xa1, 0x06, 0xf0, 0xb4, 0x0b, 0x63, 0x4b, 0x23, 0x0b, 0xa3, 0x2b, 0x03, 0x79, 0x1b, 0xa3, 0x9b, 0xdb, 0xf0, 0xf8, 0xc8, 0x06, 0x51, 0x33, 0x28, 0xb4, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x94, 0x81, 0x36, 0x6d, 0x10, 0xe9, 0x4e, 0x5c, 0x6b, 0xf8, 0x73, 0x69, 0xe0, 0xe1, 0xd6, 0xc3, 0x0f, 0x35, 0x6d, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0x51, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x02, 0xeb, 0xc1, 0x32, 0xa4, 0xb7, 0x0d, 0x62, 0x3f, 0x1d, 0xaa, 0x0d, 0x0a, 0xd8, 0xfc, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xdf, 0x28, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x42, 0x81, 0x75, 0xc3, 0x7b, 0x41, 0x07, 0x47, 0x95, 0xb9, 0x83, 0x18, 0xf3, 0xc0, 0xda, 0xa0, 0x80, 0xcd, 0xdf, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf8, 0x31, 0xf1, 0x20, 0x72, 0xaa, 0xb8, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x5e, 0x4e, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0xf1, 0x80, 0xc3, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x3c, 0x78, 0xb3, 0x41, 0xf2, 0xfc, 0xef, 0xc1, 0x49, 0x9e, 0xaf, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x22, 0x28, 0x15, 0x6a, 0x83, 0x02, 0x36, 0x7f, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xe0, 0xc3, 0xc2, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x0f, 0x38, 0x5c, 0x07, 0xd1, 0xf1, 0x81, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x7b, 0x0b, 0x0c, 0x37, 0x28, 0x60, 0xf3, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x7e, 0x6e, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x86, 0x07, 0x6f, 0x36, 0x88, 0xa2, 0x29, 0xae, 0x83, 0x93, 0x3c, 0xdf, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xc0, 0xa3, 0x85, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x2c, 0x8e, 0xde, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x3f, 0x26, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x91, 0x1c, 0xae, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7d, 0x10, 0x41, 0xa9, 0x50, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0x46, 0x46, 0xae, 0x83, 0xe8, 0xf8, 0xc0, 0x3a, 0x38, 0x21, 0x50, 0xb4, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x38, 0x7a, 0x10, 0x67, 0x6c, 0x5c, 0x1b, 0xfe, 0xcd, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x78, 0x0e, 0xd7, 0x06, 0xf1, 0xef, 0x6e, 0x75, 0x10, 0xaf, 0x70, 0x5c, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xaa, 0xf8, 0xb7, 0x36, 0x88, 0xc2, 0x46, 0xae, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x84, 0xe7, 0x70, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0xf7, 0x16, 0x18, 0x1e, 0x1c, 0xe0, 0xe9, 0x3a, 0x9c, 0x62, 0xad, 0x41, 0x94, 0x57, 0x0a, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x44, 0x79, 0xa5, 0x50, 0x03, 0xf0, 0x30, 0x56, 0x27, 0x67, 0x57, 0x26, 0x53, 0x53, 0x13, 0x93, 0x03, 0x32, 0x57, 0x36, 0x26, 0x57, 0x46, 0xb7, 0xe1, 0xf1, 0x91, 0x0d, 0xa2, 0xbc, 0x52, 0x68, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x70, 0x75, 0xe2, 0xe1, 0x87, 0x9a, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xcd, 0x95, 0xad, 0x87, 0x1f, 0x6a, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xc7, 0x96, 0xd2, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0xd2, 0x6a, 0x92, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x12, 0xa4, 0xec, 0x06, 0x91, 0x53, 0xc5, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x8b, 0x28, 0xae, 0x35, 0xbc, 0xad, 0x73, 0x10, 0xd3, 0x52, 0x59, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x2a, 0x5a, 0xd2, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0xe8, 0x1d, 0xb7, 0x41, 0x52, 0x59, 0xd2, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x2c, 0x8e, 0xde, 0xf0, 0xe0, 0xcd, 0x1a, 0x1c, 0x5d, 0x07, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x45, 0xa5, 0xf8, 0x41, 0xe1, 0x24, 0xbb, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0xc4, 0x7e, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x18, 0x92, 0xb5, 0xe1, 0xc1, 0x9b, 0x0d, 0x22, 0xdb, 0x93, 0xeb, 0xa0, 0x20, 0x1e, 0xaf, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0x20, 0x15, 0x2d, 0x69, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x50, 0x76, 0x6f, 0x90, 0x54, 0x96, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x45, 0xa5, 0xf8, 0xc1, 0xc9, 0x1b, 0x6f, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x9d, 0x18, 0x0e, 0xd4, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0x07, 0x27, 0x67, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x22, 0x13, 0x77, 0x83, 0xc3, 0xca, 0xdc, 0x41, 0x43, 0x03, 0x5a, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0xde, 0x98, 0x9c, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0x51, 0x79, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x9f, 0xd8, 0x5b, 0x1b, 0x1e, 0x93, 0xd9, 0x20, 0x6e, 0x7b, 0xaa, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x57, 0xf2, 0xd6, 0x41, 0x8c, 0x9c, 0x72, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x4c, 0x92, 0x38, 0xb5, 0x41, 0x1c, 0xaf, 0x50, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0x6f, 0x4c, 0xce, 0xae, 0xd5, 0x20, 0xd6, 0x37, 0x85, 0x36, 0x3c, 0x3e, 0xb2, 0x41, 0xac, 0x6f, 0x0a, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0xcb, 0x31, 0x5c, 0x1b, 0xc4, 0xc7, 0x0c, 0xd7, 0x06, 0x51, 0xd0, 0xc3, 0xd5, 0x86, 0xbf, 0x68, 0x36, 0x88, 0xcf, 0x19, 0xae, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x62, 0xaa, 0x86, 0x6b, 0x83, 0xc8, 0xba, 0xe1, 0xda, 0xe0, 0xc4, 0x7e, 0xb3, 0x41, 0x8c, 0xe4, 0x70, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0x10, 0x55, 0xfc, 0x5b, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x08, 0xcf, 0xe1, 0xda, 0x20, 0xfe, 0xdd, 0xad, 0x0e, 0x6f, 0xa1, 0x1d, 0xc4, 0x69, 0x0e, 0xd7, 0xac, 0x41, 0x9c, 0x86, 0x0a, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0x38, 0x0d, 0x15, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x20, 0x22, 0xf0, 0xb0, 0x0e, 0x22, 0x44, 0x86, 0x6b, 0xc3, 0x5f, 0x34, 0x1b, 0xc4, 0xe7, 0x0c, 0xd7, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x62, 0x24, 0x87, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x78, 0x0e, 0xd7, 0x06, 0xf1, 0xef, 0x6e, 0x75, 0x10, 0x13, 0xcb, 0x58, 0xab, 0x41, 0x44, 0x45, 0x71, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x44, 0x54, 0x14, 0x57, 0x03, 0xf0, 0xb0, 0x56, 0x96, 0x07, 0x17, 0x96, 0x26, 0x07, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0x32, 0x57, 0x56, 0x46, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xf0, 0x73, 0xe5, 0x41, 0xcc, 0xd0, 0x4b, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0x5f, 0xd4, 0x6c, 0xa8, 0xe3, 0xc1, 0xd7, 0x29, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x0f, 0x57, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x48, 0x4a, 0xce, 0x3a, 0x88, 0xa2, 0x25, 0xae, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x16, 0x47, 0x6f, 0x78, 0xf0, 0x66, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0xf8, 0xc5, 0x65, 0xc3, 0x7b, 0x41, 0x07, 0x51, 0xb4, 0xc4, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0xbc, 0x17, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0x1e, 0xae, 0xae, 0x3a, 0x9c, 0x62, 0xad, 0x41, 0x04, 0xb0, 0x0a, 0x6d, 0x78, 0x7c, 0x64, 0x83, 0x08, 0x60, 0x15, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x3e, 0x66, 0xb8, 0x0e, 0x62, 0xb4, 0x87, 0x6b, 0xc3, 0x5f, 0x34, 0x1b, 0xc4, 0xe7, 0x0c, 0xd7, 0x06, 0x05, 0x69, 0xec, 0x06, 0x31, 0x55, 0xc3, 0xb5, 0x41, 0x64, 0xdd, 0x70, 0x6d, 0x50, 0x90, 0xc6, 0x6e, 0x10, 0x53, 0x40, 0x5c, 0x1b, 0x44, 0x79, 0x10, 0xd7, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x62, 0x24, 0x87, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x15, 0xff, 0xd6, 0x06, 0xb1, 0xa6, 0xc3, 0xb5, 0x41, 0x84, 0x15, 0x71, 0x35, 0x6b, 0x10, 0x45, 0xb0, 0x42, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x51, 0x04, 0x2b, 0xd4, 0x00, 0xbf, 0x5d, 0x18, 0x5b, 0x1a, 0x59, 0x18, 0x5d, 0xd9, 0x86, 0xc7, 0x47, 0x36, 0x88, 0x22, 0x58, 0xa1, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0xa2, 0x0c, 0xb4, 0x69, 0x83, 0xa4, 0x78, 0xc6, 0x83, 0x98, 0xeb, 0xe3, 0xda, 0xf0, 0x17, 0xcd, 0x86, 0x0f, 0x56, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x9a, 0x41, 0xa1, 0x36, 0x38, 0x9c, 0xf3, 0x6d, 0x10, 0xbb, 0x4a, 0x5c, 0x07, 0xd1, 0xf1, 0x81, 0x75, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x6a, 0x10, 0xdd, 0x23, 0x44, 0x1b, 0x94, 0x5d, 0xb2, 0x1b, 0x44, 0xf7, 0x08, 0xd1, 0x06, 0x6f, 0x16, 0x3e, 0x99, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0xe2, 0x71, 0x6c, 0x68, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0x50, 0x72, 0x83, 0xd7, 0x99, 0x57, 0x6f, 0xf8, 0xc4, 0x66, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x73, 0x97, 0x81, 0x1f, 0xb3, 0x0f, 0x62, 0x7b, 0x89, 0x6a, 0x0d, 0x9f, 0xbb, 0x0c, 0xf0, 0x98, 0xb1, 0x85, 0x9d, 0xcd, 0x07, 0x6f, 0x26, 0x01, 0x6f, 0x83, 0xd4, 0x8b, 0xe2, 0x0d, 0x8f, 0x8f, 0x6c, 0x10, 0x8f, 0x63, 0x43, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0xbc, 0x19, 0xe4, 0x73, 0xc3, 0xe3, 0x23, 0x1b, 0xbc, 0x19, 0xe4, 0x73, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x36, 0xdc, 0x47, 0x0f, 0xe2, 0x02, 0x64, 0x6b, 0xc3, 0x5f, 0x34, 0x1b, 0x1c, 0x5b, 0x4a, 0x37, 0x28, 0x48, 0x63, 0x37, 0x78, 0x34, 0x92, 0xc8, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x78, 0xc9, 0xbd, 0xbd, 0xd1, 0xb5, 0xbc, 0xd5, 0xd1, 0xc1, 0xd5, 0xd1, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa4, 0xea, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xf0, 0x99, 0x83, 0x63, 0x4b, 0xa3, 0x6b, 0x79, 0x1b, 0xa3, 0x9b, 0xdb, 0xe0, 0xb4, 0x0a, 0x77, 0x10, 0x31, 0x61, 0x52, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x58, 0x10, 0x1b, 0xaa, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0x32, 0x71, 0x37, 0x88, 0x29, 0xb6, 0xa8, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x8a, 0x6d, 0xe5, 0x0d, 0x52, 0x4e, 0xab, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0x91, 0xaa, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x2f, 0xd2, 0x95, 0xde, 0xf0, 0xe0, 0xcd, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x14, 0x58, 0x0f, 0x62, 0xa1, 0x2b, 0xaa, 0x0d, 0xbf, 0x28, 0x6d, 0x70, 0x9e, 0x54, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0x24, 0x1a, 0xb5, 0x86, 0x4b, 0x6a, 0x83, 0xc7, 0x02, 0xc3, 0xac, 0x41, 0xa4, 0x78, 0x46, 0x1d, 0x94, 0xd1, 0xe7, 0xb5, 0x02, 0x3c, 0x6b, 0x65, 0x79, 0x65, 0xe4, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x45, 0xeb, 0xc9, 0xc1, 0xd3, 0xcf, 0xe5, 0x36, 0x5c, 0x52, 0x1b, 0x3c, 0x38, 0xe7, 0x73, 0x05, 0x7e, 0xcc, 0x6e, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0xc7, 0x81, 0x8f, 0xd5, 0x20, 0x76, 0x98, 0xb9, 0xda, 0xf0, 0xb6, 0xce, 0x00, 0x5e, 0x66, 0x2d, 0x6b, 0x65, 0x79, 0x65, 0x64, 0x68, 0x61, 0x73, 0x68, 0x1d, 0x4e, 0xb1, 0x35, 0x88, 0xab, 0x68, 0xae, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0xde, 0xb7, 0x3a, 0x3a, 0xb8, 0x3a, 0xba, 0x79, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0x36, 0x68, 0x9b, 0x4c, 0xbb, 0x0d, 0x7f, 0xd1, 0x6c, 0xd0, 0x36, 0x99, 0xf6, 0x06, 0x45, 0xa7, 0xf1, 0x1a, 0xde, 0xd6, 0x19, 0xe0, 0x9f, 0x2b, 0xa3, 0x6b, 0x31, 0x63, 0x0b, 0x3b, 0x5b, 0xc3, 0xdb, 0x3a, 0x03, 0x7c, 0x66, 0x2d, 0x72, 0x6f, 0x6f, 0x74, 0x1b, 0xbe, 0xc2, 0xd9, 0xa0, 0x20, 0x8d, 0xdd, 0x60, 0x85, 0xb8, 0xfc, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x14, 0x58, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x85, 0x76, 0xef, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x74, 0xc0, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0xbc, 0xe6, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xe8, 0x39, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xca, 0x6f, 0xae, 0xaa, 0x0e, 0x82, 0x95, 0x75, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x9f, 0xbb, 0x0c, 0xce, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x83, 0x85, 0xe0, 0x06, 0x8b, 0x15, 0xe6, 0x0f, 0x62, 0xc9, 0x9c, 0x6b, 0x0d, 0x9f, 0xbb, 0x0c, 0x2e, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xd3, 0x5b, 0xdc, 0x41, 0x7c, 0xa1, 0x73, 0xb5, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x45, 0x2a, 0xe6, 0x41, 0x14, 0x9a, 0x73, 0x6d, 0x50, 0xc2, 0x63, 0x2e, 0x38, 0x7d, 0x10, 0x85, 0xe6, 0x5c, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0x20, 0x0a, 0xcd, 0xb9, 0x36, 0x38, 0xb1, 0xdf, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x3c, 0xe1, 0xc2, 0xe4, 0xca, 0xdc, 0xe8, 0x5a, 0xde, 0xea, 0xe8, 0xe0, 0xea, 0xe8, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x25, 0xd1, 0xa8, 0x35, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x88, 0x42, 0x73, 0xae, 0x83, 0x94, 0xb7, 0xab, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x92, 0x68, 0xd4, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x44, 0xa1, 0x39, 0xd7, 0xc1, 0xf1, 0x93, 0xaf, 0x5a, 0x0d, 0xa2, 0x9c, 0x9d, 0x6b, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0xce, 0x1e, 0x1c, 0x5b, 0x4a, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xf2, 0xc1, 0xb1, 0xa5, 0xb4, 0x0d, 0x7f, 0xd1, 0x6c, 0xd0, 0x36, 0x99, 0xf6, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x31, 0x1a, 0xce, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0xf8, 0xcd, 0x5a, 0xe0, 0xc2, 0xe4, 0xca, 0xdc, 0xe8, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x0e, 0xa2, 0x8e, 0x9b, 0x6b, 0xc3, 0x83, 0x37, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x62, 0x5b, 0x79, 0x83, 0xc3, 0xca, 0xdc, 0x1a, 0x1c, 0x5d, 0x07, 0x37, 0x48, 0x79, 0xbb, 0x3a, 0x38, 0xf4, 0xf5, 0xb5, 0x41, 0x0a, 0x74, 0xea, 0x1a, 0xde, 0xd6, 0x39, 0x88, 0xa4, 0x6e, 0xae, 0x56, 0xc0, 0x5b, 0x23, 0x33, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x68, 0xc3, 0x7d, 0x74, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x63, 0x74, 0xf8, 0xc1, 0x49, 0x4f, 0x74, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x50, 0xce, 0x93, 0x83, 0xa7, 0x9f, 0xcb, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x8e, 0x2d, 0xa5, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0xb4, 0xc9, 0xfb, 0xbd, 0x86, 0x77, 0x7b, 0xd6, 0x70, 0x49, 0x6d, 0xf0, 0xe0, 0x9c, 0xcf, 0x35, 0x88, 0x3a, 0x6e, 0xae, 0x83, 0xd8, 0x5e, 0xa2, 0x5a, 0x83, 0x48, 0xea, 0xe6, 0xda, 0xf0, 0xb6, 0xce, 0x00, 0xbe, 0x66, 0x2d, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x6b, 0x65, 0x79, 0x63, 0x74, 0x78, 0x6d, 0x90, 0x7a, 0x1a, 0xbb, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0xe7, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xc6, 0xe8, 0xf0, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x91, 0x85, 0x0f, 0xe2, 0xeb, 0x9f, 0xab, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x92, 0xda, 0xe0, 0xc1, 0x39, 0x9f, 0x6b, 0x10, 0x75, 0xdc, 0x5c, 0x07, 0x4d, 0x0e, 0x7f, 0xaf, 0x41, 0x24, 0x75, 0x73, 0x6d, 0x78, 0x5b, 0x67, 0x00, 0x5f, 0xb3, 0x16, 0xb2, 0x32, 0xb9, 0x34, 0xbb, 0xb2, 0xb5, 0xb2, 0xbc, 0xb6, 0x30, 0xba, 0x36, 0x28, 0x96, 0xb6, 0x0f, 0x62, 0xc9, 0x91, 0x6a, 0x35, 0x88, 0x05, 0xb1, 0xa1, 0x0d, 0x8f, 0x8f, 0x6c, 0x10, 0x0b, 0x62, 0x43, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xe7, 0xa0, 0xba, 0x1f, 0x7e, 0xa8, 0x59, 0xc3, 0x9f, 0x4b, 0x03, 0x3c, 0x63, 0x68, 0x75, 0x6e, 0xeb, 0xc1, 0xd3, 0xcf, 0xe5, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x6d, 0x93, 0x69, 0x6f, 0x50, 0x74, 0x1a, 0x6f, 0x10, 0xa3, 0xe1, 0x5c, 0x6b, 0x78, 0x5b, 0x67, 0x00, 0x1f, 0xb3, 0x96, 0x31, 0xb4, 0x3a, 0xb7, 0xb5, 0x32, 0x37, 0xb2, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0x4a, 0x12, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0x5b, 0x9a, 0x6b, 0x83, 0x94, 0xd3, 0xaa, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x1c, 0x19, 0x74, 0xd5, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0x3c, 0xa9, 0xb2, 0x86, 0x3f, 0x97, 0x36, 0x48, 0x5a, 0x10, 0x3e, 0x78, 0xfa, 0xb9, 0x5c, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x87, 0x93, 0x2b, 0xb3, 0x0f, 0xda, 0x26, 0xd3, 0x6e, 0xc3, 0x07, 0x39, 0x1b, 0x1c, 0xa7, 0xdd, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xf1, 0x51, 0xcf, 0xb5, 0x41, 0xb4, 0x7a, 0x46, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe3, 0x83, 0x84, 0x05, 0xe1, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0x90, 0xb0, 0x20, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x28, 0xbb, 0x37, 0x88, 0xd1, 0x7b, 0xae, 0x35, 0xbc, 0xad, 0x33, 0x80, 0x9f, 0x59, 0xcb, 0x18, 0x5a, 0x9d, 0xdb, 0xda, 0x1c, 0x5d, 0x98, 0x1c, 0x5d, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x3c, 0xde, 0xea, 0xe8, 0xe0, 0xea, 0xe8, 0x5a, 0xc6, 0xec, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x11, 0xcd, 0xd0, 0x55, 0x1b, 0x44, 0xab, 0x67, 0xd4, 0x06, 0xb1, 0xeb, 0xd0, 0xb5, 0x41, 0x54, 0x3d, 0x74, 0x1d, 0xc4, 0xe7, 0x3d, 0xd7, 0xe1, 0x14, 0xab, 0x0e, 0xa7, 0xd8, 0x06, 0x65, 0x97, 0xec, 0x06, 0x91, 0xad, 0x32, 0xb4, 0x86, 0x4b, 0x6a, 0x8d, 0xc7, 0x1b, 0xc4, 0xe3, 0xd8, 0x50, 0xcd, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x06, 0x71, 0x60, 0x30, 0xb4, 0xe1, 0xf1, 0x91, 0x0d, 0xe2, 0xc0, 0x60, 0x68, 0xc3, 0x2f, 0x4a, 0x1b, 0xb4, 0x4d, 0xa6, 0xbd, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0x70, 0xc0, 0xa2, 0x5b, 0x83, 0x82, 0x34, 0x76, 0x83, 0x30, 0xce, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x5a, 0xca, 0xd6, 0x1a, 0x7e, 0x71, 0xd9, 0xe0, 0xb0, 0x32, 0xb7, 0x41, 0x7c, 0xd4, 0x73, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x38, 0x35, 0xb7, 0x6d, 0x10, 0xdb, 0x4b, 0x54, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0x02, 0x96, 0xf5, 0x20, 0xfa, 0x4f, 0xa3, 0xd6, 0xf0, 0x8b, 0xcb, 0x86, 0xc7, 0x64, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0xbf, 0x18, 0xdb, 0xdb, 0xd8, 0x1a, 0x5b, 0x99, 0x5b, 0x6b, 0xf8, 0xc5, 0x65, 0xc3, 0x63, 0x32, 0x07, 0xf1, 0x79, 0xcf, 0x75, 0x50, 0xd6, 0x79, 0x6e, 0x50, 0xf4, 0xe9, 0x6e, 0x10, 0xc2, 0x19, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x68, 0xaa, 0x96, 0xda, 0xe0, 0x3d, 0x36, 0xa5, 0x1b, 0x3c, 0x9c, 0xe3, 0xb3, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x12, 0x16, 0x84, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x51, 0x2e, 0x20, 0x75, 0x10, 0xd3, 0x1f, 0x5d, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x84, 0x70, 0xc6, 0x06, 0x71, 0xf0, 0xd1, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0xc2, 0x82, 0xf0, 0x06, 0x91, 0x0a, 0xd2, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x08, 0x67, 0x6c, 0x10, 0x07, 0x1f, 0x5d, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x24, 0x2c, 0x08, 0x6f, 0x10, 0xa9, 0x20, 0x5d, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x84, 0x70, 0xc6, 0x06, 0x71, 0xf0, 0xd1, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0xc2, 0x82, 0xf0, 0x06, 0x91, 0x0a, 0xd2, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x08, 0x67, 0x6c, 0x10, 0x07, 0x1f, 0x5d, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x24, 0x2c, 0x08, 0x6f, 0x10, 0xa9, 0x20, 0x5d, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x84, 0x70, 0xc6, 0x06, 0x71, 0xf0, 0xd1, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0xc2, 0x82, 0xf0, 0x06, 0x91, 0x0a, 0xd2, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x08, 0x67, 0x6c, 0x10, 0x07, 0x1f, 0x5d, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x10, 0x03, 0xb1, 0xc1, 0x7b, 0x6c, 0x4a, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xc5, 0xb6, 0xf2, 0x06, 0x87, 0x95, 0xb9, 0x35, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7c, 0xdc, 0x0d, 0x0e, 0x2b, 0x73, 0x07, 0xf1, 0xca, 0x5c, 0x75, 0x10, 0x6b, 0x1a, 0x5d, 0xb5, 0xcc, 0x1a, 0xa4, 0x75, 0xac, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xc2, 0x38, 0xe3, 0xf0, 0x43, 0xcd, 0x1a, 0xfe, 0x5c, 0xda, 0x20, 0x69, 0x41, 0xf8, 0xf0, 0x43, 0x4d, 0x1b, 0xbe, 0x7e, 0xd9, 0xe0, 0x3d, 0x36, 0xa5, 0x1b, 0x1c, 0xb0, 0xe8, 0xd6, 0xa0, 0xe8, 0xd3, 0xdd, 0x20, 0x84, 0x33, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xe5, 0x4f, 0xed, 0x06, 0x4b, 0xd7, 0x50, 0x37, 0x88, 0x16, 0xa9, 0xad, 0x0d, 0x62, 0x55, 0x6a, 0x6b, 0x83, 0x78, 0x99, 0xda, 0xda, 0x60, 0xe9, 0x1a, 0xea, 0x41, 0x0c, 0x36, 0x4c, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x10, 0xc2, 0x19, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf2, 0xa7, 0x76, 0x83, 0xc8, 0x1a, 0x97, 0xda, 0x20, 0x12, 0xa9, 0xb6, 0x36, 0x88, 0xbd, 0xb4, 0xa9, 0x0d, 0xe2, 0x1e, 0x6d, 0x6a, 0x83, 0x98, 0xae, 0x9a, 0xda, 0x20, 0x9e, 0xac, 0xa6, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0x20, 0x84, 0x33, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xe5, 0x4f, 0xed, 0x06, 0x31, 0x5d, 0x35, 0xb5, 0x41, 0x34, 0x53, 0x58, 0x6d, 0x10, 0xc1, 0x56, 0x5b, 0x1b, 0xc4, 0xfb, 0xd9, 0xd4, 0x06, 0xd1, 0x22, 0xb5, 0xb5, 0x41, 0x24, 0x52, 0x6d, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x08, 0x67, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xca, 0x9f, 0xda, 0x0d, 0xe2, 0xc9, 0x6a, 0x6a, 0x83, 0xe8, 0xeb, 0xb0, 0xda, 0x20, 0xe6, 0xd0, 0xa6, 0x36, 0x88, 0x7f, 0xac, 0xad, 0x0d, 0xa2, 0x99, 0xc2, 0xea, 0x20, 0xf2, 0x3a, 0xac, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x08, 0xe1, 0x8c, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf9, 0x53, 0xbb, 0xc1, 0xd2, 0x35, 0xd4, 0x0d, 0x22, 0x91, 0x6a, 0x6b, 0x83, 0x08, 0xb6, 0xda, 0xda, 0x20, 0xfe, 0xb1, 0xb6, 0x36, 0x88, 0x55, 0xa9, 0xad, 0x83, 0xb8, 0x4b, 0x9b, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0x20, 0x84, 0x33, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xe5, 0x4f, 0xed, 0x06, 0x91, 0x35, 0x2e, 0xb5, 0x41, 0x34, 0x53, 0x58, 0x6d, 0x10, 0x73, 0x68, 0x53, 0x1b, 0xc4, 0xcb, 0xd4, 0xd6, 0x06, 0x11, 0x6c, 0xb5, 0xb5, 0x41, 0xcc, 0xa1, 0x4d, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x08, 0x67, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xca, 0x9f, 0xda, 0x0d, 0x62, 0xba, 0x6a, 0x6a, 0x83, 0xe8, 0xeb, 0xb0, 0xda, 0x20, 0x56, 0xa5, 0xb6, 0x36, 0x88, 0x7b, 0xb4, 0xa9, 0x0d, 0xe2, 0x65, 0x6a, 0xeb, 0x20, 0x9e, 0xaa, 0xb6, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x08, 0xe1, 0x8c, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf9, 0x53, 0xbb, 0x41, 0x3c, 0x59, 0x4d, 0x6d, 0x10, 0x2d, 0x52, 0x5b, 0x1b, 0xc4, 0x5e, 0xda, 0xd4, 0x06, 0xf1, 0x7e, 0x36, 0xb5, 0x41, 0xbc, 0x9f, 0x4d, 0x1d, 0xc4, 0x3e, 0xd6, 0xd6, 0xc1, 0x7b, 0x6c, 0x4a, 0x97, 0x59, 0x83, 0xe2, 0xf2, 0x7d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0xf3, 0xa4, 0xca, 0x06, 0xb1, 0x7d, 0xb7, 0xd5, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xf3, 0xa5, 0xad, 0x0d, 0xca, 0xe8, 0xf3, 0x0d, 0x0e, 0xf9, 0x2d, 0x07, 0xf1, 0xca, 0x5c, 0xb5, 0x82, 0x9f, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xbe, 0x5c, 0xda, 0xf0, 0x3c, 0xd3, 0x06, 0x05, 0x60, 0xec, 0x06, 0xc5, 0x3f, 0xf0, 0x1a, 0xfe, 0x5c, 0x1a, 0xf8, 0x36, 0xfc, 0xf0, 0x43, 0xcd, 0x1a, 0xfe, 0x5c, 0x1a, 0xf8, 0xb6, 0xfc, 0xf0, 0x43, 0x4d, 0x1b, 0xbe, 0x7e, 0xd9, 0xe0, 0x3d, 0x36, 0xa5, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x84, 0x70, 0xc6, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x44, 0x7c, 0xdf, 0xf0, 0xb4, 0xce, 0x1a, 0x24, 0x19, 0x10, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x9a, 0xb9, 0xba, 0xb6, 0x19, 0xd9, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0xdc, 0x69, 0x71, 0x78, 0xe8, 0x67, 0x83, 0xa3, 0xa5, 0xc5, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xfe, 0x59, 0x19, 0x9d, 0xd8, 0x1a, 0xde, 0xd6, 0x19, 0xf8, 0x36, 0xbc, 0x6a, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x10, 0xce, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x88, 0xef, 0x1b, 0x94, 0xeb, 0xb2, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x72, 0x6f, 0x78, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x73, 0xa7, 0xc5, 0x41, 0xa9, 0x2e, 0xbb, 0x41, 0x8c, 0x39, 0x75, 0x1d, 0x1c, 0x5d, 0xe5, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0x20, 0x84, 0x33, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xe2, 0xfb, 0x86, 0xa7, 0x77, 0xd6, 0x20, 0xc9, 0x80, 0x70, 0x83, 0xd8, 0x6d, 0xea, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x3b, 0x2d, 0x0e, 0xbf, 0x08, 0x6d, 0x10, 0x97, 0x52, 0x5d, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x08, 0x67, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xc4, 0xf7, 0x0d, 0xef, 0x05, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x22, 0x42, 0xaa, 0x6b, 0x83, 0xa3, 0xa5, 0xc5, 0x06, 0xd1, 0x59, 0xd5, 0x75, 0xd0, 0x3a, 0x2e, 0x73, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x84, 0x70, 0xc6, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x44, 0x7c, 0xdf, 0xf0, 0xb4, 0xce, 0x1a, 0x24, 0x19, 0x10, 0x6e, 0x10, 0xbb, 0x4d, 0x5d, 0x1b, 0xc4, 0x98, 0x53, 0xd7, 0x06, 0x47, 0x4b, 0x8b, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x34, 0x3e, 0x75, 0x6d, 0x50, 0x7c, 0xac, 0x57, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x84, 0x70, 0xc6, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x44, 0x7c, 0xdf, 0xa0, 0x5c, 0x97, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x84, 0x54, 0xd7, 0x06, 0x71, 0x29, 0xd5, 0xb5, 0x41, 0x8c, 0x39, 0x75, 0x1d, 0x1c, 0x55, 0xe6, 0xda, 0xa0, 0xe8, 0xd3, 0xdd, 0x20, 0x84, 0x33, 0x36, 0x88, 0x2c, 0xaa, 0xae, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x42, 0x38, 0x63, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x22, 0xbe, 0x6f, 0x78, 0x2f, 0x68, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x11, 0x52, 0x5d, 0x1b, 0x1c, 0x2d, 0x2d, 0x36, 0x88, 0xce, 0xaa, 0xae, 0x83, 0xd3, 0x02, 0x4d, 0x07, 0xef, 0xb1, 0x29, 0x5d, 0x01, 0x4f, 0xee, 0x0d, 0xdf, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xf0, 0xe5, 0xd2, 0x86, 0xe7, 0x99, 0x0e, 0xe2, 0xfd, 0x26, 0x6a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x80, 0x46, 0xee, 0x4d, 0x6e, 0x46, 0xb6, 0x41, 0x31, 0xb4, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc4, 0x40, 0x1c, 0x7e, 0x3f, 0xeb, 0x70, 0x8a, 0xb5, 0x06, 0x25, 0x42, 0xcb, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xc7, 0x32, 0xb4, 0x36, 0x88, 0x01, 0x9a, 0xad, 0x83, 0x78, 0x65, 0xae, 0x5a, 0x0d, 0xe2, 0xf8, 0xa9, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x96, 0x59, 0xd7, 0x06, 0x31, 0x40, 0xb3, 0x75, 0x10, 0xd3, 0x1f, 0x5d, 0x87, 0x53, 0xac, 0xc3, 0x29, 0xb6, 0x1a, 0xc4, 0xc7, 0x80, 0xd4, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x61, 0x97, 0xae, 0x0d, 0x5f, 0xbf, 0x6c, 0xf0, 0x70, 0x8e, 0xcf, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x6c, 0x2b, 0x6f, 0x70, 0x58, 0x60, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x48, 0xd5, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x87, 0x8e, 0x04, 0xb5, 0x41, 0xf4, 0x9e, 0x75, 0xd5, 0xe1, 0x14, 0xeb, 0x70, 0x8a, 0xad, 0x06, 0x11, 0x84, 0xd0, 0xb5, 0xc1, 0xc2, 0xce, 0xa5, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x68, 0xf7, 0x1e, 0x14, 0xc4, 0xe3, 0xab, 0x41, 0x44, 0x91, 0x75, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x34, 0xa7, 0xd8, 0x35, 0x3c, 0x28, 0xb9, 0x41, 0xaa, 0x84, 0xed, 0x86, 0xb7, 0x75, 0x06, 0x74, 0xb3, 0xb2, 0x19, 0xd9, 0x41, 0xe1, 0x24, 0xbb, 0x1a, 0xc4, 0x3b, 0x44, 0xd7, 0x06, 0x0b, 0x3b, 0x97, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xa1, 0xdd, 0x7b, 0x50, 0x38, 0xc9, 0xae, 0x41, 0x64, 0xdb, 0x6d, 0xad, 0x06, 0x0f, 0x1d, 0x09, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x05, 0xd1, 0xf2, 0x06, 0x01, 0xcb, 0xba, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0xfc, 0x85, 0xa1, 0x0e, 0xa7, 0xd8, 0x1a, 0x44, 0xa1, 0x44, 0xd7, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xef, 0x41, 0xdb, 0x64, 0xda, 0x1b, 0xbe, 0x7e, 0xd9, 0x60, 0xe9, 0x1a, 0xea, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x6d, 0xe5, 0x0d, 0x0e, 0x2b, 0x73, 0x6b, 0x70, 0x74, 0x1d, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x92, 0x68, 0xd4, 0x41, 0xda, 0xff, 0x55, 0xcd, 0x1a, 0xc4, 0x64, 0x3f, 0xd7, 0x06, 0x0b, 0x3b, 0x97, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xa1, 0xdd, 0x7b, 0x70, 0x54, 0x60, 0x3b, 0x9c, 0x62, 0x6b, 0x10, 0xb7, 0xe2, 0x5c, 0x1b, 0x2c, 0xec, 0x5c, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x85, 0x76, 0xef, 0x41, 0x41, 0x29, 0x7e, 0x38, 0xc5, 0x5a, 0x83, 0x35, 0x17, 0xe1, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x6b, 0x2e, 0xc2, 0x37, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x7e, 0xcc, 0x3e, 0x38, 0xb6, 0x94, 0x6e, 0x10, 0xff, 0x17, 0x5b, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xa4, 0x05, 0xe1, 0x83, 0x63, 0x4b, 0xe9, 0x1a, 0xfe, 0x5c, 0xda, 0x20, 0xe6, 0x39, 0xba, 0x0e, 0xca, 0x2c, 0xdd, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0xec, 0x30, 0x73, 0x1d, 0x1c, 0x28, 0x56, 0x5b, 0x83, 0x38, 0xa4, 0xdb, 0x3a, 0x9c, 0x62, 0x6b, 0x10, 0xdd, 0xe1, 0x5c, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x44, 0xeb, 0x87, 0xd3, 0x06, 0x91, 0x45, 0xd7, 0xd5, 0x86, 0x4b, 0x6a, 0xc3, 0xbe, 0xc0, 0x1a, 0x44, 0x52, 0x37, 0xd7, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x28, 0xbb, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xb1, 0xc3, 0xcc, 0x75, 0xd8, 0x17, 0x38, 0x28, 0xac, 0xba, 0x5b, 0x0d, 0xa2, 0xbe, 0xa9, 0x6b, 0xc3, 0x83, 0x92, 0x1b, 0x1c, 0xb6, 0xe1, 0x0e, 0xe2, 0xef, 0xad, 0x6b, 0x16, 0xf8, 0x34, 0xfb, 0x20, 0x19, 0x59, 0x77, 0x35, 0x88, 0x24, 0x7a, 0xae, 0x0d, 0x16, 0x76, 0x2e, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x42, 0xbb, 0xf7, 0x20, 0x58, 0x59, 0x0f, 0xa7, 0x58, 0x6b, 0x10, 0xd3, 0xdd, 0x5c, 0x1b, 0x2c, 0xec, 0x5c, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x85, 0x76, 0xef, 0xc1, 0x99, 0xb9, 0xed, 0x70, 0x8a, 0xad, 0x41, 0x04, 0x0a, 0x74, 0x6d, 0xb0, 0xb0, 0x73, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xda, 0xbd, 0x07, 0x87, 0xe5, 0x99, 0x35, 0x88, 0x97, 0xb8, 0xad, 0xc3, 0x29, 0xb6, 0x06, 0x91, 0xfb, 0xd6, 0x75, 0x70, 0x62, 0x5f, 0x5b, 0x0d, 0x22, 0x63, 0x9a, 0x6b, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x62, 0xc7, 0xf6, 0x20, 0x2e, 0x40, 0xb6, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0xe1, 0x73, 0xa5, 0x0d, 0xce, 0x93, 0x2a, 0x1b, 0x3c, 0xfd, 0x5c, 0xae, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0xf0, 0x43, 0xcd, 0x41, 0x34, 0x91, 0x6c, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x70, 0x65, 0xf2, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xd0, 0xee, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0x3c, 0x28, 0x0d, 0xc5, 0xdb, 0xa0, 0xb4, 0xb7, 0x5c, 0xc3, 0x9f, 0x4b, 0x03, 0xf8, 0x8c, 0xa1, 0xd5, 0xb9, 0xad, 0xb5, 0xbc, 0x8d, 0xd1, 0xcd, 0x07, 0xf1, 0xb4, 0xd8, 0xb5, 0x41, 0x69, 0x6f, 0xb9, 0xc1, 0x79, 0x52, 0x65, 0xc3, 0x57, 0x38, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0xf8, 0xdd, 0x20, 0x52, 0x43, 0xb6, 0x36, 0x88, 0xff, 0xf6, 0xaa, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x8c, 0x3e, 0x3f, 0x88, 0x98, 0x30, 0xa9, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x1c, 0x3f, 0x76, 0xd5, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0x7e, 0x71, 0xd9, 0xa0, 0x8c, 0x3e, 0x5f, 0x83, 0xf8, 0x6f, 0xaf, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0x26, 0xee, 0x86, 0xa7, 0x75, 0x36, 0x88, 0x0b, 0x92, 0xad, 0xda, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0x36, 0x28, 0x74, 0xcf, 0xd7, 0x20, 0x12, 0xbd, 0xa2, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x0f, 0x22, 0x45, 0xb2, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf8, 0xb8, 0x07, 0xf1, 0x5c, 0xd9, 0xd5, 0xe1, 0x14, 0xeb, 0x70, 0x8a, 0xad, 0x06, 0xd1, 0x2a, 0x42, 0xb4, 0xe1, 0xf1, 0x91, 0x0d, 0xa2, 0x55, 0x84, 0x68, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x78, 0xa3, 0x91, 0xda, 0x20, 0x7e, 0x64, 0xa4, 0x0e, 0xe2, 0x25, 0x2b, 0x6a, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xa0, 0x20, 0x8d, 0x5d, 0xc3, 0xf7, 0xed, 0x03, 0x9f, 0x66, 0x1f, 0x34, 0xe7, 0x2a, 0xbe, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0x9c, 0xb2, 0xa1, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0xbe, 0x41, 0x24, 0xab, 0x6c, 0x6d, 0x50, 0x42, 0xc7, 0xae, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x07, 0x11, 0x84, 0xbd, 0x74, 0x10, 0xa6, 0x63, 0x6b, 0x70, 0x74, 0x1d, 0x5c, 0x83, 0xa3, 0xeb, 0xe0, 0x86, 0x07, 0x6f, 0x36, 0x3c, 0x26, 0xb3, 0x41, 0xc0, 0xb2, 0x6e, 0x50, 0x54, 0x8a, 0x6f, 0x70, 0x6a, 0x6e, 0xdb, 0xe0, 0xb0, 0xc0, 0xb6, 0xc1, 0x71, 0x79, 0x66, 0x83, 0xf3, 0x02, 0xcd, 0x06, 0x87, 0x95, 0xb9, 0x0d, 0x52, 0x4e, 0xab, 0x36, 0x48, 0x79, 0xad, 0xda, 0x20, 0x9d, 0xd9, 0x6e, 0x83, 0x25, 0x1c, 0x6e, 0x1b, 0x9c, 0x56, 0xe1, 0x36, 0x48, 0x1b, 0x5c, 0x3d, 0x48, 0x74, 0xad, 0x5d, 0x83, 0xa3, 0xeb, 0xe0, 0x06, 0x69, 0x83, 0xab, 0x1b, 0xa4, 0xbc, 0x56, 0x6d, 0x70, 0x6a, 0x6e, 0xdb, 0xe0, 0xb0, 0x32, 0xb7, 0x41, 0xca, 0x69, 0xd5, 0x06, 0xa7, 0xfb, 0xb7, 0x0d, 0x4e, 0xab, 0x70, 0x1b, 0x1c, 0x97, 0x67, 0x36, 0x3c, 0x26, 0xb3, 0xc1, 0x12, 0x0e, 0xb7, 0x0d, 0x0f, 0xde, 0x6c, 0x10, 0xb0, 0xac, 0x1b, 0xa4, 0x33, 0xdb, 0x6d, 0x70, 0x5e, 0xa0, 0xd9, 0xe0, 0xb0, 0xc0, 0x76, 0x50, 0x50, 0x8a, 0xaf, 0xc1, 0xd1, 0x75, 0x70, 0x83, 0x74, 0x66, 0xbb, 0x0d, 0x0e, 0x2b, 0x73, 0x1b, 0x2c, 0xe1, 0x70, 0xdb, 0xf0, 0xe0, 0xcd, 0x06, 0x87, 0x05, 0xb6, 0x0d, 0x02, 0x96, 0x75, 0x83, 0xd3, 0xfd, 0xdb, 0x06, 0xa7, 0x55, 0xb8, 0x0d, 0x52, 0x5e, 0xab, 0x36, 0x48, 0x1b, 0x5c, 0xdd, 0xa0, 0xa8, 0x14, 0xdf, 0xe0, 0xb8, 0x3c, 0xb3, 0xc1, 0x79, 0x81, 0x66, 0xc3, 0x63, 0x32, 0x1b, 0xa4, 0x9c, 0x56, 0x1d, 0x9c, 0x99, 0xdb, 0xd6, 0xe0, 0xe8, 0x3a, 0xb8, 0xc1, 0x79, 0x81, 0x66, 0x83, 0x94, 0xd3, 0xaa, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0x8f, 0xc9, 0x6c, 0x70, 0x5a, 0x85, 0xdb, 0x60, 0x09, 0x87, 0xdb, 0x06, 0xe9, 0xcc, 0x76, 0x1b, 0xa4, 0x0d, 0xae, 0x6e, 0x10, 0xb0, 0xac, 0x1b, 0x1c, 0x97, 0x67, 0x36, 0x38, 0x2c, 0xb0, 0x6d, 0x90, 0xf2, 0x5a, 0xb5, 0xc1, 0xa9, 0xb9, 0x6d, 0xc3, 0x83, 0x37, 0x1b, 0x9c, 0xee, 0xdf, 0x0e, 0x8e, 0x2a, 0x73, 0x6b, 0x70, 0x74, 0x1d, 0xdc, 0x20, 0xe5, 0xb4, 0x6a, 0xc3, 0x83, 0x37, 0x1b, 0x1c, 0x16, 0xd8, 0x36, 0x38, 0x2f, 0xd0, 0x6c, 0x10, 0xb0, 0xac, 0x1b, 0x9c, 0x9a, 0xdb, 0x36, 0x48, 0x79, 0xad, 0xda, 0xe0, 0x74, 0xff, 0xb6, 0x41, 0xda, 0xe0, 0xea, 0x86, 0xc7, 0x64, 0x36, 0x48, 0x67, 0xb6, 0xdb, 0x60, 0x09, 0x87, 0xdb, 0x06, 0xc7, 0xe5, 0x99, 0x0d, 0x0e, 0x2b, 0x73, 0x1b, 0x14, 0x95, 0xe2, 0x07, 0xa7, 0xc5, 0xba, 0x35, 0x38, 0xba, 0x0e, 0x6e, 0x10, 0xb0, 0xac, 0x1b, 0x2c, 0xe1, 0x70, 0xdb, 0xe0, 0xb8, 0x3c, 0xb3, 0x41, 0xca, 0x6b, 0xd5, 0x86, 0x07, 0x6f, 0x36, 0x48, 0x67, 0xb6, 0xdb, 0xe0, 0xb0, 0x32, 0xb7, 0x41, 0x51, 0x29, 0xbe, 0xc1, 0xa9, 0xb9, 0x6d, 0x83, 0xd3, 0x2a, 0xdc, 0x06, 0xe7, 0x05, 0x9a, 0x0d, 0x0e, 0x0b, 0x6c, 0x1b, 0x9c, 0xee, 0xdf, 0x36, 0x48, 0x1b, 0x5c, 0xdd, 0xf0, 0x98, 0xcc, 0x41, 0xba, 0x69, 0xd5, 0x1a, 0x1c, 0x5d, 0x07, 0x37, 0x58, 0xc2, 0xe1, 0xb6, 0xc1, 0x61, 0x81, 0x6d, 0xc3, 0x63, 0x32, 0x1b, 0x9c, 0xee, 0xdf, 0x36, 0x48, 0x1b, 0x5c, 0xdd, 0xe0, 0xb4, 0x0a, 0xb7, 0xc1, 0xa9, 0xb9, 0x6d, 0x83, 0x94, 0xd7, 0xaa, 0x0d, 0x0f, 0xde, 0x6c, 0x70, 0x5e, 0xa0, 0xd9, 0xe0, 0xb8, 0x3c, 0xb3, 0x41, 0x51, 0x29, 0xbe, 0x41, 0xca, 0x69, 0xd5, 0x06, 0x01, 0xcb, 0xba, 0xc1, 0x61, 0x65, 0xee, 0x20, 0x56, 0x74, 0xae, 0xd6, 0xe0, 0xe8, 0x3a, 0xb8, 0xc1, 0x69, 0x15, 0x6e, 0x83, 0x74, 0x66, 0xbb, 0x0d, 0xce, 0x0b, 0x34, 0x1b, 0xa4, 0x0d, 0xae, 0x6e, 0xb0, 0x84, 0xc3, 0x6d, 0xc3, 0x63, 0x32, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0xa4, 0x9c, 0x56, 0x6d, 0x70, 0x58, 0x60, 0xdb, 0xf0, 0xe0, 0xcd, 0x06, 0xa7, 0xfb, 0xb7, 0x0d, 0x4e, 0xcd, 0x6d, 0x1b, 0x1c, 0x56, 0xe6, 0x36, 0x38, 0x2e, 0xcf, 0x6c, 0x10, 0xb0, 0xac, 0x07, 0xe9, 0xae, 0x55, 0x6b, 0x70, 0x74, 0x1d, 0xdc, 0xe0, 0xb8, 0x3c, 0xb3, 0xc1, 0xe9, 0xfe, 0x6d, 0x83, 0xb4, 0xc1, 0xd5, 0x0d, 0x52, 0x4e, 0xab, 0x36, 0x48, 0x67, 0xb6, 0xdb, 0xa0, 0xa8, 0x14, 0xdf, 0xf0, 0xe0, 0xcd, 0x06, 0x87, 0x95, 0xb9, 0x0d, 0x96, 0x70, 0xb8, 0x6d, 0x10, 0xb0, 0xac, 0x1b, 0x9c, 0x56, 0xe1, 0x36, 0x38, 0x2f, 0xd0, 0x6c, 0x78, 0x4c, 0x66, 0x83, 0x53, 0x73, 0xdb, 0x06, 0x29, 0xaf, 0x55, 0x07, 0x47, 0x05, 0xb6, 0x35, 0x38, 0xba, 0x0e, 0x6e, 0x90, 0xf2, 0x5a, 0xb5, 0x41, 0xc0, 0xb2, 0x6e, 0x70, 0x58, 0x99, 0xdb, 0xe0, 0xd4, 0xdc, 0xb6, 0xc1, 0x79, 0x81, 0x66, 0x83, 0xe3, 0xf2, 0xcc, 0x86, 0xc7, 0x64, 0x36, 0x38, 0x2c, 0xb0, 0x6d, 0x70, 0xba, 0x7f, 0xdb, 0x20, 0x9d, 0xd9, 0x6e, 0x83, 0x94, 0xd3, 0xaa, 0x0d, 0xd2, 0x06, 0x57, 0x37, 0x28, 0x2a, 0xc5, 0x37, 0x58, 0xc2, 0xe1, 0xb6, 0xc1, 0x69, 0x15, 0xee, 0xa0, 0x70, 0x92, 0xdd, 0x20, 0x3a, 0x3f, 0xbb, 0x36, 0x88, 0xf6, 0xd1, 0xae, 0x36, 0x28, 0x25, 0xc4, 0xd7, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0xd6, 0x20, 0x0e, 0x0c, 0x86, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x38, 0x70, 0xd2, 0x6d, 0x50, 0x00, 0xc6, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xe9, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0x7f, 0x2e, 0x0d, 0xce, 0x1e, 0x3e, 0x58, 0x6d, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xdc, 0xde, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x01, 0xef, 0x1a, 0x7e, 0x71, 0xd9, 0xe0, 0xb8, 0x3c, 0x73, 0x70, 0x54, 0x99, 0x3b, 0x38, 0xc0, 0xd3, 0x1d, 0xc4, 0xcd, 0x46, 0xd7, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x87, 0xd6, 0x96, 0x35, 0x38, 0xb1, 0xdf, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0xfe, 0xb6, 0x37, 0xb2, 0x96, 0xbb, 0x37, 0x39, 0xb2, 0x0d, 0x16, 0x95, 0x27, 0x6d, 0x90, 0x2a, 0x14, 0xb5, 0xc1, 0x12, 0x0e, 0xb7, 0x0d, 0x0e, 0xaf, 0x72, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xcd, 0x29, 0x76, 0x83, 0x43, 0x0c, 0xc4, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xc8, 0xc4, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0xbc, 0x39, 0x48, 0xd7, 0x8e, 0x3d, 0x38, 0x39, 0xf5, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0xc1, 0xa1, 0xb5, 0x65, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0xc4, 0x92, 0x74, 0xd7, 0x06, 0x8b, 0xca, 0x93, 0x36, 0x48, 0x15, 0x8a, 0xda, 0xe0, 0xb4, 0x0a, 0xb7, 0xc1, 0xe1, 0x55, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x39, 0xc5, 0x6e, 0x70, 0x88, 0x81, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf8, 0xb8, 0x07, 0x91, 0x56, 0xdd, 0xd5, 0x06, 0xc7, 0xb1, 0x89, 0x0d, 0x0e, 0xad, 0x2d, 0x1b, 0xa4, 0xbc, 0x5d, 0xad, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x58, 0x92, 0xee, 0xda, 0x60, 0x51, 0x79, 0xd2, 0x06, 0xa9, 0x42, 0x51, 0x1b, 0xa4, 0x0d, 0xae, 0x6e, 0x70, 0x78, 0x95, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x69, 0x4e, 0xb1, 0x1b, 0x1c, 0x62, 0x20, 0x0e, 0x92, 0xc3, 0x1c, 0x37, 0x7c, 0x62, 0xb3, 0x41, 0x12, 0x90, 0xea, 0x06, 0xa5, 0xbd, 0xe5, 0x06, 0x71, 0xf2, 0x27, 0xb5, 0xc1, 0x01, 0x8b, 0x6e, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0xca, 0xe8, 0xf3, 0x83, 0x25, 0x1c, 0x6e, 0x6b, 0x50, 0xf4, 0xe9, 0x6e, 0x70, 0xac, 0xa5, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0x62, 0x20, 0x36, 0x38, 0x28, 0xd3, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7c, 0xdc, 0x0d, 0x62, 0x08, 0xba, 0xeb, 0x20, 0x4d, 0x28, 0xaa, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x88, 0x81, 0xd8, 0xe0, 0xa0, 0x4c, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x32, 0x71, 0x0f, 0x22, 0x2c, 0xbc, 0xab, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0xce, 0xed, 0x7c, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0x72, 0x7e, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x76, 0xb7, 0x1b, 0x94, 0xd1, 0xe7, 0x07, 0xe9, 0xae, 0x55, 0x07, 0xb1, 0xa8, 0xb2, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0xc1, 0xa1, 0xb5, 0x65, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x3e, 0xb2, 0xb7, 0x96, 0xb6, 0x34, 0xbc, 0x0d, 0x0f, 0xde, 0x6c, 0x70, 0x6a, 0x6e, 0xdb, 0xe0, 0xb0, 0x32, 0xb7, 0xc1, 0x12, 0x0e, 0xb7, 0x83, 0xd2, 0x76, 0x7c, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x43, 0x6b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xd6, 0xcc, 0xbb, 0x36, 0x3c, 0x26, 0xb3, 0xc1, 0x61, 0x81, 0x6d, 0x83, 0x94, 0xd3, 0xaa, 0x0d, 0x4e, 0xab, 0x70, 0x07, 0x51, 0x3b, 0x35, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0xc1, 0xa1, 0xb5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x6b, 0xe6, 0x5d, 0x1b, 0x04, 0x2c, 0xeb, 0x06, 0xc7, 0xe5, 0x99, 0x0d, 0x52, 0x5e, 0xab, 0x36, 0x48, 0x1b, 0x5c, 0xdd, 0xe0, 0xd4, 0xdc, 0x76, 0x70, 0x54, 0x60, 0xdb, 0xa0, 0xe8, 0xd3, 0xdd, 0xe0, 0xd0, 0xda, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x35, 0xf3, 0xae, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0xce, 0x0b, 0x34, 0x1b, 0xa4, 0x33, 0xdb, 0x6d, 0x70, 0xba, 0x7f, 0xdb, 0xe0, 0xb8, 0x3c, 0x73, 0x70, 0x5a, 0xa0, 0xd9, 0xa0, 0xe8, 0xd3, 0xdd, 0xe0, 0xd0, 0xda, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x35, 0xf3, 0xae, 0x0d, 0x0f, 0xde, 0x6c, 0x70, 0x58, 0x60, 0xdb, 0x20, 0xe5, 0xb5, 0x6a, 0x83, 0xd3, 0xfd, 0xdb, 0x06, 0x87, 0x95, 0xb9, 0x83, 0x74, 0xd3, 0xaa, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x0e, 0xad, 0x2d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x58, 0x33, 0xef, 0xda, 0xf0, 0x98, 0xcc, 0x06, 0xc7, 0xe5, 0x99, 0x0d, 0xd2, 0x99, 0xed, 0x36, 0x58, 0xc2, 0xe1, 0xb6, 0x41, 0xca, 0x6b, 0xd5, 0x41, 0xac, 0xe8, 0x5c, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x70, 0x68, 0x6d, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x9a, 0x79, 0xd7, 0x06, 0x01, 0xcb, 0xba, 0xc1, 0x79, 0x81, 0x66, 0x83, 0xc3, 0xca, 0xdc, 0x06, 0xa7, 0x55, 0xb8, 0x0d, 0x96, 0x70, 0xb8, 0x1d, 0x9c, 0x16, 0xeb, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x38, 0xb4, 0xb6, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0xcd, 0xbc, 0x6b, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x53, 0x73, 0xdb, 0x06, 0x29, 0xa7, 0x55, 0x1b, 0xa4, 0x0d, 0xae, 0x1e, 0x44, 0xd9, 0x68, 0xd7, 0xc1, 0x71, 0x9e, 0x62, 0x99, 0x35, 0x88, 0x52, 0xf3, 0xae, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0xa2, 0x89, 0x58, 0x6a, 0x83, 0x68, 0x27, 0x96, 0xda, 0x20, 0x1a, 0x8b, 0xa5, 0x36, 0x88, 0x16, 0x63, 0xa9, 0x35, 0xfc, 0xb9, 0x34, 0xf0, 0x6e, 0xf8, 0xe1, 0x87, 0x9a, 0x35, 0xfc, 0xb9, 0x34, 0xf0, 0x6e, 0xf9, 0xe1, 0x87, 0x9a, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x87, 0x9a, 0x0d, 0x8e, 0x36, 0x7c, 0x6b, 0x50, 0xf4, 0xe9, 0x6e, 0x70, 0x68, 0x6d, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0xce, 0x70, 0xd4, 0x06, 0xa9, 0x42, 0x51, 0x1b, 0xc4, 0xf7, 0xb3, 0xd4, 0xc1, 0xb2, 0xab, 0xd2, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x0e, 0xad, 0x2d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd8, 0x19, 0x8e, 0xda, 0x20, 0x55, 0x28, 0x6a, 0x83, 0x58, 0x8c, 0x96, 0xda, 0xe0, 0xf0, 0x2a, 0x77, 0x78, 0x0b, 0x6d, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x43, 0x6b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x76, 0x86, 0xa3, 0x36, 0x48, 0x15, 0x8a, 0xda, 0x20, 0x6e, 0xa6, 0xa5, 0x36, 0x38, 0xbc, 0xca, 0x1d, 0x7e, 0x11, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0x33, 0x1c, 0xb5, 0x41, 0xaa, 0x50, 0xd4, 0x06, 0xd1, 0x45, 0x2d, 0x75, 0xb0, 0xbe, 0xf5, 0x6e, 0x83, 0x13, 0xfb, 0xcd, 0x1a, 0xde, 0xd6, 0x19, 0xe0, 0x11, 0x93, 0x69, 0x4b, 0xc3, 0xdb, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x6e, 0xac, 0xa5, 0x36, 0x48, 0x15, 0x8a, 0xda, 0x20, 0xbe, 0x9f, 0xa5, 0x0e, 0x8e, 0xae, 0x72, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb8, 0xb1, 0x96, 0xda, 0x20, 0x55, 0x28, 0x6a, 0x83, 0x58, 0x8c, 0x96, 0x3a, 0x38, 0xba, 0xca, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0xc6, 0x5a, 0x6a, 0x83, 0x54, 0xa1, 0xa8, 0x0d, 0xe2, 0x66, 0x5a, 0xea, 0xe0, 0xe8, 0x2a, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x1b, 0x6b, 0xa9, 0x0d, 0x52, 0x85, 0xa2, 0x36, 0x88, 0x2e, 0x6a, 0xa9, 0x83, 0xa3, 0xab, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x6e, 0xac, 0xa5, 0x36, 0x3c, 0xbd, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x2a, 0xe7, 0x37, 0x88, 0x6e, 0x77, 0xac, 0x83, 0x93, 0x3c, 0xdf, 0xc1, 0xd1, 0x55, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x37, 0xd6, 0x52, 0x1b, 0x9e, 0xde, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x95, 0xf3, 0x1b, 0x44, 0xb5, 0x3c, 0xd6, 0xc1, 0x49, 0x9e, 0xef, 0xe0, 0xe8, 0x2a, 0xd7, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0xab, 0x41, 0x9c, 0x11, 0x46, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x70, 0xe0, 0xa4, 0xdb, 0xa0, 0x5c, 0x38, 0x5f, 0xc3, 0x9f, 0x4b, 0x83, 0xdf, 0x07, 0x65, 0x96, 0xee, 0x41, 0xe1, 0x0f, 0xbc, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0x50, 0x74, 0x1a, 0x6f, 0x50, 0x6c, 0x2b, 0x6f, 0x70, 0x5c, 0x9e, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0x9c, 0xdd, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xc0, 0xf3, 0xac, 0x8c, 0xae, 0xe5, 0xee, 0x4d, 0x8e, 0xac, 0x85, 0x2d, 0x6d, 0x8e, 0x6e, 0x83, 0x83, 0x32, 0xdd, 0xc1, 0xf1, 0xc7, 0x65, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x85, 0xc5, 0xf2, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x27, 0x82, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xc1, 0x42, 0xf0, 0x60, 0x01, 0xb1, 0xfb, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0xd7, 0x65, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xa7, 0xb7, 0xb8, 0x0d, 0x0a, 0xe2, 0xf3, 0x83, 0x84, 0x10, 0xdb, 0x56, 0x83, 0xe8, 0xa2, 0xf0, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0xc0, 0x49, 0xb7, 0x41, 0x74, 0x45, 0x78, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0xca, 0x39, 0xdb, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0x14, 0x16, 0xcb, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0xb3, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x20, 0x5a, 0xde, 0xe0, 0xb8, 0x3c, 0x73, 0x70, 0x80, 0xa7, 0xdb, 0xe0, 0x68, 0xc3, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x11, 0xb4, 0x6d, 0x78, 0x66, 0xf2, 0x20, 0x21, 0xc4, 0x76, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x64, 0xda, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x37, 0x38, 0xe4, 0xb7, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x7a, 0x4e, 0x1e, 0x24, 0x84, 0xd8, 0x76, 0x50, 0x38, 0xc9, 0xce, 0x1a, 0x1c, 0x55, 0xd9, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x48, 0x6e, 0x84, 0xdd, 0xa0, 0xb8, 0x2b, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x06, 0xbc, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0xc2, 0xcb, 0xf8, 0x20, 0x69, 0x48, 0xb6, 0x83, 0xb2, 0xcf, 0xf8, 0x70, 0x8a, 0xad, 0x41, 0x34, 0x17, 0x78, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xf8, 0x72, 0x69, 0xc3, 0xf3, 0x4c, 0x1b, 0x14, 0x80, 0xb1, 0x1b, 0x14, 0xff, 0xc0, 0x07, 0x71, 0x9e, 0x1f, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x22, 0x5e, 0x55, 0x6a, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x14, 0x4c, 0xa7, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x52, 0x29, 0xec, 0x06, 0x45, 0xa5, 0xf8, 0x06, 0x87, 0x95, 0xb9, 0x83, 0x44, 0x4a, 0xa7, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x12, 0xb3, 0x9d, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x49, 0xa5, 0xb0, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x1c, 0x56, 0xe6, 0x0e, 0xd2, 0xab, 0x9d, 0x36, 0x7c, 0x62, 0xb3, 0x41, 0x2c, 0xb2, 0x4a, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x78, 0x70, 0x67, 0x0d, 0x92, 0x0c, 0x08, 0x37, 0x88, 0x29, 0x57, 0xa9, 0x0d, 0x4f, 0xeb, 0x6c, 0x78, 0x2f, 0xe8, 0x20, 0x91, 0xd2, 0x69, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x22, 0x5f, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x9b, 0xaf, 0x52, 0x07, 0x71, 0x68, 0x2b, 0xb5, 0x41, 0xd1, 0xa7, 0xbb, 0xe1, 0x1f, 0x9e, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x4c, 0xb9, 0x4a, 0x1d, 0x14, 0x80, 0xfc, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x3e, 0x0f, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0xe6, 0xab, 0xd4, 0x41, 0x4c, 0xf1, 0x4a, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x78, 0x70, 0x67, 0x0d, 0x92, 0x0c, 0x08, 0x37, 0x88, 0x29, 0x57, 0xa9, 0x0d, 0x4f, 0xeb, 0x1c, 0xa4, 0x35, 0x84, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x50, 0xe4, 0xcb, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0xf3, 0x55, 0xea, 0x20, 0xbe, 0x7d, 0xa5, 0x36, 0x28, 0xfa, 0x74, 0x37, 0xfc, 0xc3, 0xb3, 0x41, 0x14, 0xb7, 0x78, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0xf8, 0x3c, 0x68, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x9b, 0xaf, 0x52, 0x07, 0x51, 0x15, 0x2c, 0x75, 0x10, 0x19, 0xc2, 0x52, 0xab, 0x41, 0xb4, 0x31, 0x4b, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x70, 0xe0, 0xa4, 0xdb, 0xa0, 0x5c, 0x38, 0x3f, 0x88, 0x05, 0x0d, 0xaf, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0xa1, 0x66, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xa2, 0x72, 0x7e, 0x83, 0x32, 0xfa, 0xfc, 0x20, 0xd2, 0x27, 0xbc, 0x0e, 0xa7, 0xd8, 0x1a, 0x44, 0xa1, 0x74, 0xd7, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0xc0, 0x49, 0xb7, 0x41, 0xb9, 0x70, 0xbe, 0x41, 0x74, 0x45, 0x78, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xcf, 0x83, 0xb2, 0xaf, 0xbc, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x3b, 0xc3, 0x51, 0x1b, 0x1c, 0x94, 0xe9, 0x36, 0x28, 0xa3, 0xcf, 0x37, 0x38, 0xe4, 0xb7, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xca, 0x9f, 0xda, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xdc, 0x58, 0x4b, 0x6d, 0x70, 0x50, 0xa6, 0xdb, 0xa0, 0x8c, 0x3e, 0x3f, 0x38, 0xfe, 0xb8, 0xd4, 0xe1, 0x14, 0xeb, 0x70, 0x8a, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x50, 0x62, 0x6d, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x2c, 0xd3, 0x0d, 0x8f, 0xc9, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xd2, 0x25, 0xc6, 0x0e, 0x62, 0xa1, 0x2b, 0xaa, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0xe2, 0x28, 0x4b, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x2e, 0x31, 0xb6, 0x41, 0x44, 0x64, 0x49, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xed, 0xde, 0x83, 0x64, 0xc0, 0xd4, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x88, 0x2b, 0x2d, 0xa9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xba, 0xc4, 0xd8, 0x06, 0x11, 0xa2, 0x25, 0x75, 0x90, 0xae, 0x1d, 0xbb, 0x41, 0xd1, 0xa7, 0xbb, 0x41, 0x1c, 0xde, 0x55, 0x6d, 0x10, 0x13, 0x78, 0x55, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0xc4, 0x3e, 0x5d, 0xd5, 0x06, 0xd1, 0x57, 0x57, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0x38, 0x7a, 0x10, 0xdb, 0x4b, 0x54, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0x1c, 0x6b, 0xe9, 0xd6, 0xe0, 0xc4, 0x7e, 0xb3, 0x41, 0x2c, 0x49, 0x77, 0x6d, 0xb0, 0xa8, 0x3c, 0x69, 0x83, 0x83, 0x32, 0xdd, 0x86, 0x07, 0x6f, 0x36, 0x38, 0xac, 0xcc, 0x6d, 0x50, 0x74, 0x1a, 0x6f, 0x90, 0xe6, 0x14, 0xbb, 0xc1, 0x21, 0x06, 0x62, 0x83, 0xa2, 0xd3, 0x78, 0xc3, 0x9f, 0x40, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x83, 0x08, 0xd1, 0x1f, 0xda, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x01, 0xef, 0x41, 0xb4, 0xd8, 0x55, 0x1d, 0x14, 0x4a, 0xdb, 0x1b, 0xac, 0x74, 0x71, 0xda, 0x60, 0x25, 0x3d, 0xe8, 0x06, 0x71, 0x95, 0x57, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x3a, 0xa8, 0xd9, 0xc3, 0x83, 0x37, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0x24, 0x62, 0x1d, 0x1f, 0x44, 0x44, 0x96, 0xd4, 0x06, 0xc7, 0xb1, 0x89, 0x0d, 0x56, 0xd2, 0x83, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xdf, 0x28, 0x6e, 0x10, 0x21, 0x5a, 0x52, 0x07, 0x85, 0x93, 0xec, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x2c, 0x8e, 0xde, 0xa0, 0xa8, 0x14, 0x5f, 0x83, 0xa3, 0xeb, 0xe0, 0x6a, 0x78, 0x5b, 0x67, 0x83, 0x44, 0xac, 0xe3, 0x0e, 0x96, 0xcb, 0x83, 0xae, 0x41, 0x42, 0x60, 0xea, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x08, 0xb5, 0x6d, 0x70, 0x68, 0xed, 0x3a, 0x48, 0x06, 0x4c, 0xad, 0x0d, 0x8e, 0x63, 0x13, 0x1b, 0x44, 0x2f, 0x94, 0xd7, 0x06, 0xb1, 0xe8, 0xe4, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x41, 0x1c, 0x42, 0x79, 0x1d, 0x24, 0x03, 0xa6, 0x6e, 0xf8, 0x0a, 0x67, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x37, 0x8a, 0x07, 0xb1, 0x3d, 0xe5, 0xb5, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xe3, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x41, 0x6c, 0x4f, 0x79, 0x1d, 0x24, 0x03, 0xa6, 0x1e, 0x2c, 0x96, 0x07, 0xdd, 0xa0, 0xe8, 0xd3, 0xdd, 0xa0, 0x55, 0xe4, 0xcb, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x9a, 0x3e, 0xbe, 0x3c, 0x48, 0x06, 0x4c, 0xdd, 0x60, 0x15, 0x92, 0xd2, 0x86, 0x53, 0x6c, 0x0d, 0xa2, 0x17, 0xca, 0xeb, 0x20, 0x26, 0xae, 0xbc, 0xd6, 0xe0, 0x58, 0x4b, 0xb7, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0x49, 0x34, 0x6a, 0x83, 0x83, 0x32, 0xdd, 0x86, 0xa7, 0x77, 0x36, 0x68, 0xfa, 0xf8, 0xf2, 0x20, 0xd5, 0x16, 0xae, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc7, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x12, 0xcd, 0x6e, 0x50, 0x54, 0x8a, 0xaf, 0xe1, 0x17, 0x97, 0x0d, 0x0f, 0xde, 0x6c, 0x10, 0x87, 0x50, 0x5e, 0x1d, 0x2c, 0x96, 0x07, 0xdd, 0xa0, 0xe8, 0xd3, 0xdd, 0xa0, 0x55, 0xe4, 0xcb, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x9a, 0x3e, 0xbe, 0x3c, 0x88, 0x2b, 0x2f, 0xaf, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0xff, 0xf0, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x42, 0x6d, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x38, 0x84, 0xf2, 0x3a, 0xfc, 0x22, 0x74, 0x90, 0x0c, 0x98, 0xba, 0x41, 0xd1, 0xa7, 0xbb, 0xc1, 0xb1, 0x96, 0x6e, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x4b, 0xa2, 0x51, 0x1b, 0x1c, 0x94, 0xe9, 0x36, 0x3c, 0xbd, 0xb3, 0x41, 0xd3, 0xc7, 0x97, 0x07, 0xe9, 0x29, 0x50, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x94, 0xf8, 0xb8, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0x14, 0xe8, 0xd4, 0x83, 0x42, 0x69, 0xbb, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x8a, 0x6d, 0xe5, 0x0d, 0x8e, 0xcb, 0x33, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x94, 0x48, 0xd5, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0x79, 0x83, 0xd8, 0xf0, 0x94, 0x6a, 0xc3, 0x2f, 0x4a, 0x1b, 0xbe, 0x5c, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x49, 0xa5, 0xb0, 0x1b, 0x14, 0x95, 0xe2, 0x1b, 0x1c, 0x56, 0xe6, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x71, 0x63, 0x2d, 0xb5, 0xc1, 0x41, 0x99, 0x6e, 0xc3, 0xd3, 0x3a, 0x07, 0x47, 0x95, 0xb9, 0x0e, 0xa7, 0x58, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x75, 0x38, 0xc5, 0x56, 0x80, 0x0f, 0x2d, 0x4c, 0x8e, 0xac, 0xcc, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0xe0, 0x35, 0xaf, 0x06, 0xc0, 0x87, 0xb1, 0xb7, 0x32, 0xb9, 0xb1, 0x32, 0x90, 0x92, 0xb9, 0x37, 0x33, 0x3a, 0x10, 0x12, 0xb4, 0x37, 0xb1, 0x37, 0x90, 0x37, 0x39, 0x10, 0xb8, 0xb0, 0xb9, 0xb9, 0x16, 0x3a, 0x34, 0xb9, 0xb7, 0xba, 0x33, 0xb4, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x9b, 0x22, 0x47, 0x0e, 0x8e, 0xad, 0x03, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0xbc, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0xe4, 0x06, 0xa1, 0x5f, 0xb2, 0x86, 0xb7, 0x75, 0x36, 0x78, 0x27, 0x96, 0x48, 0x1b, 0x3c, 0x97, 0x52, 0xb6, 0x0d, 0x7f, 0xd1, 0x6c, 0xf0, 0x5c, 0x4a, 0xd9, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x28, 0x26, 0x31, 0x37, 0x78, 0x6d, 0x99, 0xc8, 0xc6, 0xa1, 0x0d, 0xe2, 0x1e, 0xce, 0xab, 0x35, 0xbc, 0xad, 0x73, 0x10, 0x01, 0x74, 0x5e, 0x1b, 0xac, 0x91, 0x6a, 0xda, 0xe0, 0xb9, 0x94, 0xb2, 0x1b, 0x2e, 0xa9, 0x35, 0x9e, 0x1f, 0x44, 0x00, 0x9d, 0x57, 0x87, 0x53, 0x6c, 0x01, 0x8f, 0x6d, 0x6e, 0xde, 0x60, 0x15, 0x96, 0xd3, 0x1a, 0x1e, 0x94, 0xdc, 0x20, 0xea, 0xaf, 0xa2, 0x0e, 0x62, 0xc1, 0xf2, 0x6a, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x47, 0x23, 0x89, 0x6c, 0xf8, 0x45, 0x69, 0x83, 0xd8, 0x00, 0xd9, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xc7, 0x96, 0xd2, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0x98, 0xb1, 0xe8, 0xda, 0x20, 0xf5, 0x34, 0xf6, 0x20, 0x62, 0xc2, 0xa4, 0x56, 0x83, 0x77, 0xaf, 0xcd, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xbc, 0x7b, 0x6d, 0xbe, 0x01, 0xf0, 0x70, 0x8e, 0x2e, 0x8c, 0xae, 0xcc, 0xac, 0x8e, 0x0d, 0x64, 0xec, 0x4d, 0xae, 0x0c, 0xc4, 0xec, 0x4d, 0x0e, 0x64, 0xae, 0x2c, 0xae, 0xae, 0xcc, 0x8d, 0x2e, 0x2d, 0x8c, 0x8d, 0x2d, 0x0f, 0xc4, 0xae, 0x4c, 0x2e, 0xcd, 0x2c, 0x2f, 0xcd, 0xed, 0x0c, 0xa4, 0xad, 0x6c, 0x6e, 0x2e, 0xec, 0xac, 0x6c, 0x6e, 0xc3, 0x83, 0x92, 0x6b, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0xe0, 0x63, 0x57, 0x26, 0x97, 0x66, 0x96, 0xd7, 0xd2, 0x36, 0x77, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xc2, 0x38, 0xe3, 0x20, 0x50, 0x4e, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x90, 0x01, 0x3f, 0x78, 0xfa, 0xb9, 0xdc, 0x1a, 0xfe, 0x5c, 0xda, 0x20, 0x34, 0x95, 0x36, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x0d, 0xe2, 0x32, 0x9e, 0xab, 0xda, 0xf0, 0xf5, 0xcb, 0x06, 0xef, 0xb1, 0x29, 0xdd, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0xf8, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x07, 0x45, 0xa0, 0xdf, 0x41, 0xaa, 0x20, 0xed, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0x59, 0x83, 0x62, 0x12, 0x73, 0x83, 0x22, 0x15, 0xf3, 0xa0, 0x60, 0xa7, 0xdf, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xc0, 0xab, 0x0c, 0x0f, 0xae, 0x6c, 0x8c, 0xae, 0x05, 0x2e, 0x2c, 0x4d, 0xee, 0x20, 0x5e, 0x99, 0xab, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xc0, 0xcb, 0xae, 0x4c, 0x2e, 0xcd, 0x2c, 0xaf, 0x85, 0xad, 0x2c, 0xcc, 0x6c, 0x83, 0xf7, 0xd8, 0x94, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0x22, 0xd0, 0xaf, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x0a, 0x76, 0xfa, 0x35, 0x5c, 0x52, 0x1b, 0x84, 0x70, 0xc6, 0x1a, 0x44, 0x8a, 0x67, 0xd4, 0x86, 0x8f, 0xa3, 0x36, 0xbc, 0xad, 0xb3, 0xc1, 0x73, 0x50, 0xdd, 0x0f, 0x42, 0x38, 0xa3, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xf0, 0xb2, 0x2b, 0x93, 0x4b, 0x33, 0xcb, 0x6b, 0x81, 0x0b, 0x4b, 0x93, 0xdb, 0xe0, 0x3d, 0x36, 0xa5, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xfa, 0xa0, 0x60, 0xa7, 0x6f, 0xc3, 0x25, 0xb5, 0x41, 0x08, 0x67, 0x6c, 0x10, 0xb3, 0x8b, 0x5e, 0x6b, 0xf0, 0x12, 0x0a, 0xba, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x41, 0xd9, 0x54, 0xbf, 0x86, 0xb7, 0x75, 0x36, 0x78, 0x44, 0xe4, 0xdc, 0x41, 0x08, 0x67, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x78, 0xf3, 0x30, 0xf2, 0x06, 0x51, 0xc3, 0xe8, 0xd5, 0x41, 0x0c, 0x3b, 0x7a, 0x35, 0x0b, 0xc0, 0xd3, 0xd8, 0x5b, 0x1b, 0x1c, 0x5b, 0x19, 0x5d, 0x59, 0x4b, 0x9a, 0x1b, 0x5b, 0x9a, 0x5b, 0x59, 0x0b, 0x9c, 0xdc, 0xdb, 0x9b, 0xb9, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x78, 0xe0, 0xe4, 0xde, 0xde, 0xcc, 0x83, 0x83, 0x47, 0xe9, 0x06, 0x31, 0x1b, 0xe8, 0xd5, 0x86, 0xaf, 0x5f, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x91, 0x56, 0xe9, 0xd5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0xdc, 0x20, 0x96, 0x24, 0xba, 0x0e, 0x62, 0x2d, 0xcf, 0x6b, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x41, 0xc9, 0x0d, 0xe2, 0x8c, 0x9a, 0xeb, 0x20, 0xd6, 0xf2, 0xbc, 0x36, 0x3c, 0x78, 0x73, 0x10, 0x47, 0x8a, 0x5e, 0x6d, 0x10, 0x99, 0x96, 0x5e, 0xad, 0x06, 0x4f, 0xbd, 0x07, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0xe6, 0x6e, 0xfe, 0xa0, 0xcc, 0xd2, 0xdd, 0x20, 0x5e, 0x2a, 0xbd, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x81, 0x72, 0xb2, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x48, 0xc3, 0x56, 0x5a, 0xc3, 0xdb, 0x3a, 0x1b, 0x3c, 0xe6, 0x6e, 0xbe, 0x83, 0x60, 0x65, 0xdd, 0xa0, 0xe0, 0xc3, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x0d, 0x9f, 0x2b, 0x1d, 0x3c, 0x33, 0x12, 0xe6, 0x20, 0x9e, 0x2d, 0xbd, 0x36, 0x28, 0x48, 0x63, 0x37, 0x78, 0x44, 0xe4, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xf8, 0x58, 0x5f, 0xc3, 0x2f, 0x2e, 0x1b, 0x1e, 0xbc, 0x59, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0x20, 0x9e, 0x2d, 0xbd, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0xe0, 0xf4, 0x41, 0x3c, 0x5b, 0x7a, 0xd5, 0x41, 0x59, 0xe7, 0xb9, 0x41, 0x41, 0x1a, 0xbb, 0x41, 0xa4, 0x55, 0x7a, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x83, 0x78, 0x0f, 0xf5, 0xda, 0xa0, 0x20, 0x8d, 0x1d, 0xe0, 0x43, 0x2b, 0x4b, 0x3b, 0x43, 0xa3, 0x37, 0x3c, 0x26, 0xb3, 0xe1, 0x2b, 0x9c, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xe2, 0xd9, 0xd2, 0x6b, 0x0d, 0xbf, 0xb8, 0x6c, 0x10, 0x3d, 0x9d, 0x5e, 0x1b, 0x1e, 0xbc, 0xd9, 0xe0, 0xb9, 0x13, 0x74, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xf0, 0x12, 0x0a, 0xba, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x41, 0xd9, 0x54, 0x7f, 0x10, 0x39, 0xa6, 0x5e, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x68, 0x20, 0xf5, 0x6a, 0x0d, 0xbf, 0xb8, 0xac, 0x41, 0x21, 0x98, 0x7a, 0x70, 0x6c, 0x29, 0xdd, 0x20, 0xee, 0x41, 0xbd, 0x6a, 0x0d, 0xe2, 0xd9, 0xd2, 0x6b, 0xc3, 0xdb, 0x3a, 0x07, 0xf1, 0x1e, 0xea, 0xb5, 0x06, 0xd1, 0x8a, 0xea, 0xb5, 0xe1, 0xe3, 0xa8, 0x83, 0xb8, 0x43, 0xf5, 0xea, 0x70, 0x8a, 0x2d, 0x80, 0x9f, 0x5c, 0xd9, 0xd8, 0x9b, 0x5d, 0x99, 0x5c, 0x8b, 0xdc, 0xdb, 0x1b, 0xbd, 0xe1, 0x17, 0xa5, 0x0d, 0xe2, 0xa5, 0xd2, 0x6b, 0xc3, 0x5f, 0x34, 0x1b, 0x1c, 0x5b, 0x4a, 0x37, 0x28, 0xf8, 0x30, 0x37, 0x88, 0x1e, 0x4f, 0xaf, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0xbe, 0xc1, 0x9a, 0x8b, 0xf0, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0xfc, 0x3b, 0xbf, 0x41, 0xc3, 0x65, 0xda, 0x1b, 0xc4, 0x8c, 0x45, 0x57, 0x07, 0x61, 0x3a, 0xb6, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0xb1, 0xca, 0xce, 0x75, 0x10, 0x6b, 0x79, 0x5e, 0x07, 0x31, 0x0f, 0xea, 0xb5, 0x41, 0x41, 0x1a, 0xbb, 0x41, 0xa4, 0x55, 0x7a, 0x6d, 0x10, 0x2b, 0xa3, 0x5e, 0x1b, 0xbe, 0xc2, 0xd9, 0xa0, 0x84, 0xc7, 0xdc, 0x20, 0x9e, 0x2d, 0xbd, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x31, 0x79, 0xe9, 0xb5, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0x31, 0x1a, 0xce, 0x75, 0x10, 0x6b, 0x79, 0x5e, 0x6b, 0x78, 0x50, 0x72, 0x83, 0xe8, 0x13, 0xe7, 0x3a, 0x88, 0xb5, 0x3c, 0xaf, 0x83, 0x68, 0x7b, 0xae, 0x6a, 0x83, 0x82, 0x34, 0x76, 0x0d, 0x4a, 0xe8, 0xd8, 0x0d, 0xe2, 0x32, 0x9e, 0xeb, 0x20, 0x4c, 0xc7, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x26, 0x2f, 0xbd, 0x0e, 0xa2, 0xed, 0xb9, 0xea, 0x20, 0x72, 0x53, 0xbd, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x68, 0xb8, 0x4c, 0x7b, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x22, 0xac, 0xd7, 0x41, 0x54, 0xdb, 0x73, 0x6d, 0x10, 0x11, 0xaa, 0x5e, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0x41, 0xb4, 0x24, 0x7a, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0xcb, 0x80, 0x5e, 0x07, 0xf1, 0x60, 0xe9, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0x50, 0x90, 0xc6, 0x0e, 0xfc, 0x98, 0xbd, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xc9, 0x4b, 0xaf, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x6c, 0x62, 0x7a, 0x6d, 0x10, 0x35, 0x8c, 0x5e, 0x07, 0x71, 0xa4, 0xe8, 0xd5, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0x2f, 0x5a, 0x98, 0x5d, 0x59, 0xcb, 0x98, 0xdd, 0x06, 0xef, 0xb1, 0x29, 0xdd, 0xf0, 0xe0, 0xcd, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xec, 0x6e, 0x37, 0x88, 0x1a, 0x46, 0xaf, 0x83, 0x60, 0x65, 0x3d, 0x88, 0x35, 0x8d, 0xae, 0xd5, 0x20, 0x52, 0x1b, 0xbd, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x88, 0x65, 0x40, 0xaf, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x68, 0x2a, 0x1d, 0xc4, 0x65, 0x3c, 0x57, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0xc1, 0xea, 0x06, 0x05, 0x69, 0xec, 0x06, 0xd1, 0x40, 0xea, 0xb5, 0x86, 0x8f, 0xa3, 0x0e, 0xe2, 0x43, 0xd2, 0x6b, 0x83, 0x82, 0x34, 0x76, 0x83, 0x65, 0x03, 0xb4, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0c, 0xc4, 0x86, 0xc7, 0x64, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x86, 0x07, 0x6f, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x71, 0x87, 0xea, 0x75, 0x50, 0x10, 0x8f, 0x1f, 0xc4, 0xa7, 0xa4, 0x57, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x3f, 0x66, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0xf2, 0xd2, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x89, 0xb0, 0x5e, 0x07, 0x65, 0x37, 0x7d, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x72, 0x7d, 0xbd, 0x36, 0x78, 0x8f, 0x4d, 0xe9, 0x06, 0x71, 0x87, 0xea, 0xb5, 0x41, 0xbb, 0x13, 0x97, 0x07, 0xb1, 0xa6, 0xd1, 0xb5, 0x1a, 0xc4, 0xbc, 0xaf, 0xd7, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0xb1, 0x0c, 0xe8, 0xb5, 0x86, 0x3f, 0x97, 0x36, 0x88, 0x06, 0x52, 0xaf, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x6c, 0x80, 0xf6, 0xa0, 0xcc, 0xd2, 0xdd, 0x20, 0x9e, 0xf7, 0xba, 0xda, 0xf0, 0x17, 0xcd, 0x86, 0x0f, 0x56, 0x37, 0x28, 0x48, 0x63, 0x07, 0x87, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x14, 0x6e, 0xa2, 0x07, 0xb1, 0x11, 0xe9, 0xb5, 0x41, 0xdc, 0xa1, 0x7a, 0xb5, 0xe1, 0x83, 0x9c, 0x35, 0x3c, 0xc2, 0xba, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x45, 0x2a, 0xe6, 0xc1, 0xc1, 0x23, 0x63, 0x0d, 0xff, 0xe6, 0xac, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x93, 0x14, 0x97, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0x76, 0xf0, 0xfa, 0xe0, 0xe0, 0x91, 0xb1, 0xe1, 0x6d, 0x9d, 0xc1, 0xe5, 0x83, 0xe8, 0x91, 0xf6, 0x3a, 0x88, 0x8f, 0x7a, 0xae, 0x36, 0x58, 0x05, 0x26, 0xbb, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0xd7, 0x60, 0x00, 0x91, 0x77, 0x10, 0x1b, 0x91, 0x5e, 0x6b, 0xf8, 0x45, 0x69, 0x83, 0xb8, 0x8c, 0xe7, 0xda, 0xf0, 0x6f, 0xce, 0x06, 0xc7, 0x4f, 0xbe, 0x83, 0xf8, 0xa8, 0xe7, 0xea, 0x70, 0x8a, 0xb5, 0x06, 0x61, 0x9c, 0xb1, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0x10, 0xc6, 0x19, 0x1b, 0x3e, 0x57, 0xda, 0x20, 0xfa, 0x35, 0xbd, 0x36, 0x88, 0xff, 0x8b, 0xad, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x23, 0x22, 0xe7, 0x36, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0xc4, 0xfa, 0x0d, 0xca, 0x2c, 0xdd, 0x83, 0x88, 0x1a, 0xf4, 0x6a, 0x35, 0x88, 0xae, 0x43, 0xaf, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x28, 0x27, 0x1b, 0x1e, 0x61, 0x5d, 0xc3, 0xdb, 0xac, 0x1b, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x41, 0xb4, 0x7a, 0x46, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x5f, 0x9c, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x10, 0xad, 0x9e, 0x51, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x42, 0xbb, 0x77, 0x0d, 0x1f, 0x47, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x37, 0x0f, 0x23, 0x1f, 0x44, 0xff, 0x69, 0x54, 0x6d, 0x10, 0x3d, 0x9d, 0x5e, 0x75, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x01, 0x5e, 0xb1, 0xba, 0x34, 0x36, 0xb2, 0x32, 0x79, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x0a, 0xbe, 0xbd, 0x1a, 0x00, 0x5f, 0xe6, 0xe8, 0xc2, 0xe8, 0xca, 0xcc, 0xea, 0xd8, 0x40, 0xc6, 0xde, 0xe4, 0xca, 0x40, 0xcc, 0xde, 0xe4, 0x40, 0xc6, 0xde, 0xda, 0xe0, 0xea, 0xe8, 0xd2, 0xdc, 0xce, 0x40, 0xe0, 0xe4, 0xde, 0xde, 0xcc, 0x40, 0xc8, 0xc2, 0xe8, 0xc2, 0x36, 0x3c, 0x28, 0xb9, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x00, 0xbf, 0x59, 0x9a, 0x5b, 0x18, 0x5b, 0x9a, 0x5e, 0xb9, 0xe1, 0x17, 0xa5, 0x0d, 0x62, 0x19, 0xd0, 0x6b, 0xc3, 0x5f, 0x34, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x68, 0x24, 0x91, 0x83, 0x63, 0x4b, 0xe9, 0x06, 0xf1, 0x52, 0xe9, 0xb5, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x44, 0xe4, 0xdc, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0xae, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x7a, 0xd3, 0x1f, 0x44, 0x81, 0x1d, 0x55, 0xb5, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0xc1, 0x9b, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x98, 0xbb, 0xf9, 0x83, 0x10, 0xce, 0x58, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x58, 0xcb, 0xf3, 0xda, 0x20, 0xf5, 0x34, 0x76, 0x83, 0xc8, 0xf6, 0x8a, 0xea, 0xa0, 0x2c, 0xf3, 0xdc, 0xa0, 0xe8, 0xa0, 0xdd, 0xe0, 0xd1, 0x48, 0x22, 0x1b, 0x84, 0x70, 0xc6, 0x1a, 0x14, 0xa4, 0xb1, 0x1b, 0x44, 0x03, 0xa9, 0xd7, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0xcd, 0xc3, 0xc8, 0x1b, 0x44, 0x50, 0xba, 0x57, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0x44, 0xa1, 0xab, 0xd7, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xf6, 0xd6, 0xb2, 0x36, 0x28, 0x9b, 0xea, 0xd7, 0xf0, 0xb6, 0xce, 0x00, 0x0f, 0x9d, 0x5c, 0x59, 0xd9, 0x7c, 0x10, 0xc2, 0x19, 0x1d, 0xc4, 0xe6, 0xb3, 0xd7, 0x06, 0x45, 0x9f, 0xee, 0x06, 0xd1, 0x8a, 0xea, 0xb5, 0x41, 0xac, 0xac, 0x7a, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0x83, 0xb8, 0x43, 0xf5, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0xa7, 0x03, 0xbe, 0x83, 0x18, 0x6b, 0xf7, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x44, 0xce, 0xac, 0xd7, 0x41, 0xbc, 0x32, 0x57, 0x6d, 0x50, 0xec, 0x68, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xc0, 0x8f, 0x16, 0x36, 0xd7, 0x42, 0x27, 0x57, 0x56, 0xb6, 0xc1, 0x7b, 0x6c, 0x4a, 0x0f, 0x62, 0xf3, 0xd9, 0x6b, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0xec, 0x20, 0xb6, 0x55, 0xbd, 0x36, 0x28, 0x48, 0x63, 0x07, 0x67, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x31, 0x79, 0xe9, 0xb5, 0x41, 0x0c, 0xb9, 0x7b, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xb8, 0xbc, 0x41, 0x8c, 0xdc, 0x7a, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x10, 0xc2, 0x19, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xfc, 0x61, 0x64, 0x64, 0x2d, 0x70, 0x61, 0x69, 0x72, 0x1b, 0xbc, 0xc7, 0xa6, 0x74, 0x83, 0xb8, 0x43, 0xf5, 0x3a, 0x88, 0x6a, 0x7b, 0xae, 0x0d, 0xa2, 0x12, 0xd7, 0xeb, 0x20, 0xb6, 0x55, 0xbd, 0x36, 0x28, 0x48, 0x63, 0x07, 0x78, 0xd3, 0xdc, 0xc8, 0xd2, 0xc6, 0xca, 0xe6, 0x35, 0x7c, 0x90, 0xb3, 0x41, 0x54, 0xa3, 0x7b, 0x6d, 0x50, 0x50, 0x64, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x17, 0xe9, 0x4a, 0x6f, 0x78, 0xf0, 0x66, 0x0d, 0xef, 0xf6, 0x6c, 0x78, 0xcd, 0xe7, 0x20, 0xc6, 0xda, 0xbd, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xd6, 0x39, 0x78, 0x2c, 0x30, 0xcc, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xb0, 0x58, 0x5e, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0x5a, 0xa5, 0xd7, 0x41, 0x08, 0x67, 0xb4, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x91, 0xaa, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x91, 0xb9, 0xef, 0xd5, 0x06, 0x31, 0xed, 0xec, 0x55, 0x2b, 0xc0, 0x1f, 0x46, 0x46, 0xd6, 0xc2, 0x56, 0x16, 0x66, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0x88, 0xd9, 0xf5, 0xda, 0xf0, 0xf5, 0xcb, 0x06, 0xef, 0xb1, 0x29, 0xdd, 0xa0, 0xe0, 0xc3, 0xdc, 0x20, 0xda, 0x08, 0xbd, 0x36, 0x28, 0x48, 0x63, 0x37, 0x88, 0x42, 0x57, 0xaf, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x6c, 0x62, 0x7a, 0x6d, 0x10, 0x41, 0xe9, 0x5e, 0x07, 0x71, 0xa4, 0xe8, 0xb5, 0x41, 0x69, 0x6f, 0xb9, 0x41, 0xfc, 0x2f, 0x7b, 0x6d, 0xf8, 0x0a, 0x67, 0x83, 0x62, 0x47, 0x73, 0x83, 0x58, 0xa0, 0xf7, 0x5a, 0xc3, 0x25, 0xb5, 0x41, 0x08, 0x67, 0xac, 0x41, 0xcc, 0x75, 0x7a, 0x6d, 0xf8, 0x38, 0xea, 0x20, 0x82, 0xd2, 0xbd, 0x56, 0x83, 0x18, 0x7c, 0xf7, 0x6a, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xb6, 0xa0, 0x1e, 0x44, 0xc1, 0xbb, 0xd7, 0x06, 0x71, 0x87, 0xea, 0x75, 0x10, 0x6d, 0xcf, 0x55, 0x1d, 0x44, 0x95, 0xbd, 0xd7, 0xe1, 0x14, 0xeb, 0x70, 0x8a, 0x6d, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x6b, 0x10, 0x7f, 0xf4, 0x5e, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xc4, 0x32, 0xa0, 0xd7, 0x06, 0xf1, 0xbf, 0xec, 0xd5, 0x86, 0xbf, 0x68, 0x36, 0x7c, 0xb0, 0xba, 0xe1, 0xdf, 0x9c, 0x0d, 0x8f, 0xc9, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0xc3, 0x83, 0x37, 0x1b, 0x44, 0x9e, 0xb1, 0xd7, 0x41, 0x8c, 0xb5, 0x7b, 0xad, 0x06, 0x71, 0x94, 0xef, 0xb5, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x2c, 0x03, 0x7a, 0x6d, 0x10, 0xff, 0xcb, 0x5e, 0x07, 0xd1, 0x1c, 0xcf, 0xb5, 0xe1, 0xeb, 0x97, 0x0d, 0xde, 0x63, 0x53, 0xba, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xb3, 0x0d, 0x62, 0x65, 0xd5, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x14, 0xff, 0x6e, 0x78, 0xf0, 0xe6, 0x20, 0xc6, 0xda, 0xbd, 0x5a, 0x83, 0x82, 0x34, 0x76, 0xf0, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0x08, 0x4a, 0xf7, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x06, 0x11, 0x94, 0xee, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xb4, 0x7b, 0x37, 0x88, 0x95, 0x55, 0xaf, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0xda, 0xbd, 0x07, 0xb1, 0xf9, 0xec, 0x55, 0x1b, 0x2e, 0xa9, 0x0d, 0x42, 0x38, 0x63, 0x0d, 0x5e, 0x42, 0x41, 0xb7, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0x13, 0xd2, 0x6b, 0x83, 0x32, 0xfa, 0x7c, 0x0d, 0xbf, 0xb8, 0x1c, 0x44, 0xb5, 0x3d, 0x57, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0x10, 0xc3, 0xff, 0x5e, 0x6b, 0xb8, 0xa4, 0x36, 0x08, 0xe1, 0x8c, 0x35, 0x88, 0x67, 0x4b, 0xaf, 0x0d, 0x8e, 0xae, 0x83, 0x1b, 0x1c, 0x3f, 0xf9, 0x0e, 0x12, 0x42, 0x6c, 0xdb, 0x70, 0x49, 0x6d, 0x10, 0xc2, 0x19, 0x6b, 0x10, 0xcf, 0x96, 0x5e, 0x1b, 0x7e, 0x71, 0xd9, 0xe0, 0xf8, 0xc9, 0x77, 0x10, 0x89, 0xff, 0x5e, 0x1d, 0x4e, 0xb1, 0x35, 0x08, 0xe3, 0x8c, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x30, 0xce, 0xd8, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x20, 0x06, 0xdf, 0xbd, 0x36, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0xc4, 0xfa, 0x0d, 0xca, 0x2c, 0xdd, 0x0d, 0xa2, 0xe8, 0xd5, 0xab, 0x0d, 0xa2, 0x5f, 0xd3, 0x6b, 0x83, 0x78, 0xa9, 0xf4, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0x22, 0x72, 0x6e, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0xac, 0xdf, 0xa0, 0xcc, 0xd2, 0x3d, 0x88, 0xe3, 0x73, 0xaf, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x0d, 0xc6, 0x58, 0xe3, 0x86, 0x5f, 0x94, 0x36, 0x7c, 0xb9, 0xb4, 0xe1, 0xdd, 0xbc, 0x0d, 0xdf, 0xe6, 0x1c, 0x1c, 0x1b, 0x29, 0x56, 0x80, 0x47, 0xac, 0x2e, 0x8d, 0x8d, 0xdc, 0xf0, 0x8b, 0xd2, 0x06, 0xb1, 0x01, 0xb2, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0xe2, 0xa0, 0xdc, 0x6b, 0x83, 0xd2, 0xde, 0x72, 0x0d, 0x7f, 0x2e, 0x6d, 0x10, 0xc6, 0x19, 0x1b, 0xfe, 0x9d, 0xdf, 0x20, 0x84, 0x33, 0xd6, 0x20, 0x0a, 0xbe, 0xbd, 0x6a, 0xc3, 0x57, 0x38, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0xde, 0x9b, 0x99, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x08, 0x9e, 0xda, 0x0d, 0x22, 0x28, 0xdd, 0xeb, 0x20, 0x55, 0x90, 0x76, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x1b, 0x44, 0x6a, 0xc8, 0xd6, 0x06, 0xaf, 0xc7, 0xf2, 0x6d, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xcc, 0x8e, 0x7b, 0xb5, 0xe1, 0x6d, 0x9d, 0x83, 0x48, 0x2a, 0xf9, 0x3a, 0x88, 0x57, 0xe6, 0xaa, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x19, 0xf0, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x97, 0x18, 0xdb, 0x20, 0x5d, 0x90, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0xf0, 0x20, 0x06, 0x50, 0xbe, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x44, 0xb3, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xd7, 0x63, 0xf9, 0x1e, 0xa4, 0x0a, 0xd2, 0x1e, 0x44, 0x81, 0x65, 0x57, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x84, 0x70, 0xc6, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x5e, 0x03, 0xbe, 0x3a, 0x88, 0xcd, 0x94, 0xaf, 0x83, 0xe8, 0x4f, 0xf4, 0xea, 0x70, 0x8a, 0xd5, 0xe1, 0x14, 0x9b, 0x35, 0x88, 0xaa, 0xe6, 0xa5, 0x0d, 0x52, 0x2f, 0x8a, 0x37, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0xf0, 0x20, 0x2b, 0x53, 0x9b, 0x6b, 0x99, 0x7b, 0x33, 0xa3, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x22, 0x3b, 0xe6, 0xab, 0x01, 0xf8, 0x51, 0x9b, 0x7b, 0x73, 0x03, 0x91, 0x2b, 0x83, 0x0b, 0x93, 0x9b, 0x2b, 0x03, 0xa1, 0x7b, 0x03, 0xa9, 0x73, 0x4b, 0xa3, 0xdb, 0x60, 0x15, 0x96, 0xd3, 0x1a, 0xde, 0xd6, 0x19, 0xe0, 0xa9, 0x73, 0x4b, 0xa3, 0xcb, 0xdb, 0xa0, 0x94, 0x10, 0x5f, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x27, 0x3f, 0x6b, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x1c, 0x2c, 0x4e, 0x2f, 0xde, 0xf0, 0x6e, 0xcf, 0xc1, 0x29, 0xca, 0x6a, 0x16, 0xf0, 0xcd, 0xd2, 0xe6, 0xe8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x78, 0x90, 0x2b, 0x83, 0x0b, 0x93, 0x9b, 0x2b, 0x93, 0x03, 0x49, 0x73, 0x9b, 0xa3, 0x0b, 0x73, 0x1b, 0x2b, 0xdb, 0xf0, 0x51, 0xfb, 0x06, 0xe1, 0x34, 0xb6, 0xc1, 0x0b, 0xfe, 0x35, 0x0f, 0xde, 0x58, 0x0a, 0x72, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0xc0, 0xcf, 0xd5, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0xe4, 0x40, 0x4d, 0x0d, 0xe0, 0x07, 0x17, 0x26, 0x37, 0x57, 0x06, 0x32, 0x47, 0x27, 0x97, 0xe6, 0x76, 0xb6, 0x41, 0xa1, 0xdc, 0xb9, 0xc1, 0x0a, 0xcb, 0xd8, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x9a, 0xd5, 0x1e, 0x3b, 0x78, 0xc1, 0xbf, 0xe6, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0x14, 0x93, 0x98, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x25, 0x31, 0x81, 0x07, 0x87, 0x98, 0x8e, 0x83, 0x76, 0xd2, 0xc7, 0x36, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x5a, 0x03, 0xd8, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xd0, 0x4e, 0xfa, 0xd8, 0xc1, 0x42, 0xd4, 0xd8, 0x15, 0xf0, 0xc9, 0xc2, 0xdc, 0xd6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x68, 0x11, 0xfa, 0xea, 0xe0, 0xc0, 0x30, 0xba, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xa7, 0xb1, 0x0d, 0x5e, 0xf0, 0xaf, 0xb9, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0x1e, 0x9c, 0x08, 0x46, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0xcb, 0x9d, 0xbe, 0x06, 0x85, 0x60, 0xea, 0xc1, 0x99, 0x60, 0x74, 0x83, 0xf3, 0x60, 0xc7, 0x06, 0xcb, 0x21, 0x99, 0x66, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0xaf, 0x22, 0x3f, 0xd9, 0xe0, 0xe8, 0x3a, 0xb8, 0x86, 0x27, 0xee, 0x36, 0xbc, 0xad, 0x33, 0xf0, 0x73, 0x61, 0x6b, 0xb0, 0xa0, 0x7d, 0x7d, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xdf, 0xe8, 0xd6, 0xa0, 0x89, 0x75, 0xd5, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xc7, 0x48, 0x5f, 0xab, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0xac, 0x10, 0x97, 0x3f, 0x88, 0xea, 0xa3, 0xaf, 0xd5, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x7d, 0xf0, 0x0f, 0xa2, 0xfa, 0xe8, 0x6b, 0x35, 0xbc, 0x71, 0x77, 0xf0, 0x4e, 0x79, 0xc5, 0x83, 0xa8, 0x3e, 0xfa, 0x5a, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0xa6, 0xb4, 0x89, 0x0e, 0xa2, 0xfa, 0xe8, 0xeb, 0xa0, 0xac, 0xf3, 0x5c, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0x3a, 0xb7, 0x89, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xfb, 0x51, 0x52, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x68, 0x11, 0xfa, 0xaa, 0x83, 0xb2, 0xce, 0x73, 0x0d, 0x56, 0x35, 0x08, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x38, 0x46, 0xfa, 0x5a, 0x83, 0x26, 0xd6, 0x55, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x1c, 0x23, 0x7d, 0x6d, 0x10, 0x07, 0x4a, 0x5f, 0x07, 0xd1, 0xbe, 0xf4, 0x75, 0x10, 0xf9, 0x4d, 0x5f, 0xad, 0xc0, 0x87, 0xd1, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0xc1, 0xc2, 0x6b, 0xb7, 0x01, 0x7c, 0xc3, 0xe4, 0xe4, 0xc2, 0xf2, 0x40, 0xc2, 0xe6, 0x40, 0xe8, 0xea, 0xe0, 0xd8, 0xca, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x77, 0x97, 0xc6, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x8a, 0xcb, 0x1a, 0xfe, 0x9d, 0x5f, 0x83, 0xe8, 0xbf, 0xf9, 0xaa, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xec, 0xf8, 0x7c, 0x6d, 0x50, 0xec, 0x68, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x48, 0xd9, 0x62, 0x3a, 0x38, 0xc4, 0x74, 0x1c, 0xb4, 0x93, 0x3e, 0xb6, 0x41, 0x41, 0x91, 0xb9, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x3d, 0x27, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x77, 0x97, 0xc6, 0xd6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xe8, 0x39, 0xb9, 0x41, 0x14, 0x05, 0x7d, 0xb5, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x8a, 0x6c, 0xcf, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xe0, 0x0b, 0xa3, 0x6b, 0x91, 0x0b, 0xbb, 0x3b, 0x88, 0xba, 0xac, 0xaf, 0x83, 0xd8, 0xd3, 0xfa, 0xda, 0xa0, 0xd8, 0xd1, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x81, 0xcc, 0xd3, 0x41, 0xb2, 0x14, 0xe7, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x4b, 0x81, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x22, 0x9f, 0xe6, 0xe9, 0x20, 0x59, 0x8a, 0xb3, 0x15, 0x78, 0x3d, 0x76, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0x78, 0x3d, 0xb6, 0x01, 0xf8, 0x18, 0x7b, 0x63, 0x63, 0x0b, 0x83, 0x9b, 0x2b, 0x03, 0xa9, 0x73, 0x4b, 0xa3, 0x03, 0x61, 0x4b, 0x9b, 0xa3, 0xdb, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0x5b, 0x1d, 0xbd, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x07, 0x8b, 0xba, 0x86, 0x37, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x7c, 0xb0, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0x80, 0xc7, 0x56, 0x47, 0xb7, 0x41, 0x91, 0xd3, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0xe0, 0xe9, 0x41, 0x3c, 0x94, 0x7d, 0x6d, 0x50, 0xc0, 0xe6, 0x6f, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x10, 0x0f, 0x65, 0x5f, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3e, 0x88, 0x87, 0xb2, 0xaf, 0x36, 0x28, 0x28, 0x32, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0x70, 0x96, 0x02, 0xdb, 0xf0, 0x15, 0xce, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xf1, 0x50, 0xf6, 0xb5, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xba, 0xe1, 0x41, 0xc9, 0x0d, 0x12, 0x43, 0xaf, 0x36, 0x5c, 0x52, 0x6b, 0x3c, 0x3f, 0x88, 0xef, 0xb2, 0xaf, 0xd6, 0xf0, 0xb9, 0xcb, 0xe0, 0xf4, 0x41, 0x1c, 0x9a, 0x7d, 0xb5, 0x02, 0xef, 0x56, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0xef, 0x56, 0x36, 0x80, 0xaf, 0x5b, 0x5d, 0x9b, 0x58, 0x99, 0x1c, 0x48, 0xd8, 0x1c, 0x88, 0x5c, 0x59, 0x18, 0xdb, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x1d, 0x9f, 0xaf, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0x1e, 0x9c, 0x5d, 0x5e, 0x37, 0x28, 0x76, 0x34, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0x45, 0x7d, 0xeb, 0xa0, 0x9d, 0xf4, 0xb1, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xd6, 0x00, 0x76, 0x83, 0x28, 0x0a, 0xfa, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xab, 0x04, 0xdd, 0x60, 0x99, 0x8a, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x1e, 0x94, 0xdc, 0x60, 0x91, 0x15, 0xeb, 0x86, 0xb7, 0x75, 0x16, 0xc7, 0x09, 0x7e, 0xee, 0x6d, 0x0d, 0x6f, 0xeb, 0x0c, 0xf0, 0xaa, 0xcd, 0xbd, 0xb9, 0xb5, 0xc8, 0xb9, 0x55, 0x87, 0x53, 0x6c, 0x81, 0x77, 0x4b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x77, 0x4b, 0x1b, 0x80, 0x07, 0xb7, 0xba, 0x36, 0xb1, 0x32, 0x39, 0x90, 0xb0, 0x39, 0x90, 0x34, 0x37, 0xba, 0xb2, 0xb3, 0x32, 0xb9, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x3b, 0x3e, 0x5f, 0x1b, 0x14, 0x3b, 0x9a, 0x1b, 0x44, 0xf2, 0xdb, 0xd7, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x6b, 0x00, 0xbb, 0x41, 0x14, 0x05, 0x7d, 0x1d, 0x34, 0xde, 0x2e, 0x7b, 0x38, 0xc5, 0x16, 0xf8, 0x3a, 0x76, 0xc3, 0xf3, 0x24, 0x1b, 0x3c, 0x32, 0x5d, 0x73, 0xc3, 0x2f, 0x4a, 0x1b, 0xc4, 0x8e, 0xcf, 0xd7, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xed, 0xa4, 0x8f, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xce, 0x52, 0x60, 0x07, 0x65, 0x9d, 0xe7, 0x41, 0x41, 0x91, 0x39, 0x0b, 0xfc, 0x9b, 0xb9, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x19, 0xfc, 0x9b, 0xd9, 0x00, 0xde, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x61, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6e, 0x64, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x16, 0x09, 0x2d, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xc5, 0x65, 0x0d, 0x9f, 0x2b, 0x6d, 0x70, 0x02, 0x12, 0x3d, 0x88, 0xcf, 0xaa, 0xaf, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xec, 0xf8, 0x7c, 0x6d, 0x50, 0xec, 0x68, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xa6, 0xc8, 0xbe, 0x41, 0x4b, 0x1a, 0x9f, 0x07, 0x2b, 0x0f, 0xd6, 0x0f, 0xda, 0x49, 0x1f, 0xdb, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x15, 0xce, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xcd, 0x3c, 0xc5, 0x6e, 0x50, 0x50, 0x64, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x92, 0x5a, 0xe3, 0xd0, 0xc6, 0xa1, 0x83, 0x66, 0x9e, 0x62, 0xdb, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xe0, 0xee, 0x41, 0xec, 0x05, 0x7d, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x1e, 0xae, 0x6c, 0x83, 0xd8, 0x25, 0xfc, 0x5a, 0xc3, 0x25, 0xb5, 0xc6, 0xf3, 0x83, 0x78, 0x28, 0xfc, 0xaa, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0x10, 0xcf, 0x85, 0x5f, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0xf0, 0x2a, 0xf2, 0x93, 0x35, 0x5c, 0x52, 0x6b, 0x3c, 0x3f, 0x68, 0xe6, 0x29, 0xb6, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0x3b, 0xe9, 0x63, 0xcd, 0x02, 0xaf, 0x07, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0xaf, 0x07, 0x37, 0x80, 0x4f, 0x9d, 0x5b, 0x1a, 0x1d, 0x08, 0x5d, 0x1d, 0x1c, 0x5b, 0xd9, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0x81, 0x88, 0xe9, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xa8, 0xb8, 0x1c, 0x2c, 0xea, 0x1a, 0xde, 0xa0, 0x84, 0xc7, 0xdc, 0x60, 0x79, 0x88, 0xe9, 0x06, 0xe1, 0xa9, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0xc6, 0xf3, 0x83, 0xe5, 0x21, 0xa6, 0x6b, 0x78, 0x50, 0x72, 0x83, 0xc4, 0xd0, 0xab, 0x0d, 0x97, 0xd4, 0x1a, 0x84, 0x00, 0xf8, 0xc1, 0xf2, 0x10, 0xd3, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x9c, 0x3d, 0x7e, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x22, 0x9f, 0xe6, 0x69, 0x0d, 0x97, 0xd4, 0x06, 0xf1, 0xef, 0xf8, 0x55, 0xad, 0xc0, 0xc3, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xc1, 0xc3, 0x95, 0x1d, 0x1c, 0x72, 0x20, 0x37, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0x5d, 0x93, 0xef, 0x41, 0x98, 0x8e, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x9a, 0xfb, 0xc6, 0x3d, 0x88, 0xd1, 0xaa, 0xaf, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x7e, 0xac, 0x6e, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0xc2, 0x74, 0x6c, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x0c, 0xf3, 0x3d, 0x38, 0x6d, 0xa1, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x9a, 0xfb, 0xc6, 0xad, 0xc3, 0x29, 0xd6, 0x02, 0xdf, 0x56, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0xdf, 0x56, 0x37, 0x80, 0x07, 0x9d, 0x5c, 0x5d, 0x19, 0x48, 0x9d, 0x5b, 0x1a, 0xdd, 0x06, 0x85, 0x72, 0xe7, 0x06, 0xb1, 0x4b, 0xf9, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0x62, 0xc7, 0xe7, 0x6b, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x76, 0xd2, 0xc7, 0x36, 0x88, 0xc5, 0xbd, 0xaf, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xc8, 0x20, 0x58, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0xda, 0xe5, 0xd7, 0x41, 0x54, 0x28, 0x7e, 0x6d, 0x70, 0x96, 0x02, 0x6b, 0x16, 0xf8, 0xb1, 0x7a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf8, 0xb1, 0xba, 0x01, 0x3c, 0xe8, 0xe4, 0xc2, 0xdc, 0xe6, 0xcc, 0xde, 0xe4, 0xda, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0xcb, 0x72, 0x7d, 0x0f, 0xe2, 0x96, 0xf2, 0x6b, 0xc3, 0x2f, 0x4a, 0x1b, 0xc4, 0x8e, 0xcf, 0xd7, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x64, 0x10, 0x6c, 0x10, 0x4d, 0x9c, 0x5f, 0x1b, 0x2c, 0x34, 0xf7, 0x6d, 0x16, 0x78, 0xb1, 0x7a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0x78, 0xb1, 0xba, 0x01, 0xbc, 0xc4, 0xde, 0xde, 0xd8, 0xca, 0xc2, 0xdc, 0x40, 0xdc, 0xde, 0xe8, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xec, 0xf8, 0x7c, 0x6d, 0x50, 0xec, 0x68, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x29, 0x8e, 0x78, 0x70, 0x88, 0xe9, 0x38, 0x68, 0x27, 0x7d, 0x6c, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x14, 0x99, 0x6b, 0xf8, 0xdc, 0x65, 0xf0, 0x7a, 0xc3, 0xdb, 0xac, 0x07, 0x51, 0x14, 0xf4, 0xd5, 0xe1, 0x14, 0x5b, 0xe0, 0xe7, 0xc2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xe0, 0xe7, 0xc2, 0x06, 0xf0, 0x9d, 0xa3, 0x93, 0x4b, 0x73, 0x3b, 0x03, 0x09, 0x9b, 0x03, 0xa1, 0x0b, 0x83, 0x2b, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0xb1, 0xe3, 0xf3, 0xb5, 0x41, 0xb1, 0xa3, 0xb9, 0x41, 0x0c, 0xfd, 0x7c, 0x6d, 0x50, 0x50, 0x64, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xb3, 0x14, 0xd8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x19, 0xf6, 0xdb, 0x41, 0xec, 0x69, 0x7d, 0xb5, 0x02, 0xff, 0x06, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0xff, 0x06, 0x37, 0x00, 0x0f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x61, 0x70, 0x1b, 0x14, 0xca, 0x9d, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x25, 0x45, 0xb6, 0x07, 0x71, 0x4b, 0xf9, 0xb5, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0xfc, 0x56, 0x7e, 0xad, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0x78, 0xb8, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0xde, 0xf4, 0x1b, 0x2c, 0xa9, 0xc6, 0x5d, 0x83, 0x00, 0x3a, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x67, 0x43, 0x97, 0x35, 0x28, 0x04, 0x53, 0x37, 0xfc, 0x3b, 0xbf, 0x41, 0x84, 0x5e, 0x7e, 0x55, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x12, 0x62, 0xfd, 0xf0, 0xd0, 0xcf, 0x06, 0x27, 0xf6, 0x9b, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x63, 0x69, 0x1b, 0x2c, 0xa9, 0x4e, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xe0, 0xdf, 0xda, 0x0e, 0xe2, 0xec, 0xf2, 0x6b, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0xac, 0xdf, 0xe0, 0x04, 0x24, 0x7a, 0x10, 0xf9, 0xb1, 0x5f, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0x20, 0x80, 0xce, 0x36, 0xfc, 0xe2, 0xb2, 0xc1, 0x82, 0x6b, 0xdc, 0x0d, 0x22, 0x47, 0xf6, 0xab, 0xda, 0xe0, 0xc4, 0x7e, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x5e, 0x8f, 0x6d, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x12, 0xa9, 0x7a, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x16, 0x81, 0x8c, 0x1e, 0x1c, 0x93, 0x2d, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x88, 0xf7, 0x94, 0xa7, 0x35, 0xfc, 0xb9, 0x34, 0xb8, 0x78, 0x10, 0xfd, 0xb1, 0x5f, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x6e, 0x69, 0xf4, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x6b, 0x00, 0xbb, 0xe1, 0x69, 0x9d, 0x83, 0xc5, 0x6f, 0xb6, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x3c, 0xf8, 0x94, 0x7d, 0x83, 0x82, 0x22, 0x73, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xa5, 0xc0, 0xd6, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xd6, 0x19, 0xbc, 0x3e, 0x78, 0xf0, 0x29, 0xfb, 0xe1, 0x2d, 0xb4, 0x56, 0xe0, 0xc5, 0xde, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xe0, 0xc5, 0xde, 0x0e, 0xde, 0x33, 0xb0, 0xb9, 0xe1, 0x17, 0xa5, 0x0d, 0x62, 0xc7, 0xe7, 0x6b, 0x83, 0x62, 0x47, 0x73, 0x83, 0x58, 0x24, 0xfd, 0xda, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x8b, 0xcb, 0x06, 0x05, 0x45, 0xe6, 0x1a, 0x3e, 0x77, 0x19, 0xbc, 0x3e, 0x88, 0xa2, 0xa0, 0xaf, 0x56, 0xe0, 0xdf, 0xe8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xe0, 0xdf, 0xe8, 0x06, 0xf0, 0x7e, 0x13, 0x53, 0x2b, 0x1b, 0xa3, 0x03, 0x09, 0x9b, 0x03, 0xa1, 0xab, 0x83, 0x63, 0x2b, 0xdb, 0xa0, 0x50, 0xee, 0xdc, 0x20, 0xee, 0xfd, 0xbe, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xec, 0xf8, 0x7c, 0x6d, 0x50, 0xec, 0x68, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xa6, 0xc8, 0x7e, 0x70, 0x88, 0xe9, 0x38, 0x68, 0x27, 0x7d, 0x6c, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x14, 0xd9, 0x9e, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xc0, 0xf7, 0x46, 0xd7, 0x22, 0x17, 0x76, 0x77, 0xd0, 0x5c, 0xcb, 0xf1, 0x41, 0xec, 0x69, 0x7d, 0x1d, 0x44, 0x5e, 0xd7, 0xd7, 0x2c, 0xf0, 0x6e, 0xef, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xf0, 0x6e, 0x6f, 0x03, 0xf8, 0xba, 0xd5, 0xb5, 0x89, 0x95, 0xc9, 0x81, 0x84, 0xcd, 0x81, 0x8c, 0xbd, 0xc9, 0x91, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xd8, 0xf1, 0xf9, 0xda, 0xa0, 0xd8, 0xd1, 0xdc, 0x20, 0x92, 0xdf, 0xbe, 0x36, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x59, 0x0a, 0xec, 0x20, 0xf6, 0xb4, 0xbe, 0x66, 0x81, 0x97, 0x2b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x83, 0x05, 0x35, 0xf0, 0x03, 0xf0, 0x22, 0x57, 0x36, 0x56, 0x27, 0x37, 0x97, 0x66, 0x57, 0x06, 0x22, 0x57, 0x06, 0x17, 0x26, 0x37, 0x57, 0x26, 0x37, 0xb7, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xfa, 0x53, 0xbb, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x78, 0x2a, 0xba, 0x41, 0x00, 0x9d, 0x6d, 0x70, 0x1e, 0xec, 0xd8, 0xf0, 0xb6, 0xce, 0x41, 0x74, 0x57, 0x7d, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0x62, 0xc7, 0xe7, 0x6b, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x4d, 0x98, 0x07, 0x4b, 0xb6, 0x6a, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0xba, 0x59, 0xd1, 0x83, 0xa8, 0x50, 0xfc, 0x3a, 0x9c, 0x62, 0xad, 0x41, 0xb4, 0x71, 0x7d, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x44, 0x1b, 0xd7, 0x57, 0x07, 0x11, 0x36, 0xf5, 0xb5, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0xa4, 0x52, 0x7d, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6a, 0x6f, 0xec, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0x6c, 0xf0, 0x82, 0x7f, 0xcd, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x88, 0xd7, 0xac, 0xaf, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0x28, 0xe1, 0x31, 0x17, 0xf0, 0xd4, 0xde, 0xd8, 0x36, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0x4b, 0x6a, 0x8d, 0x43, 0x07, 0xf1, 0x9a, 0xf5, 0xd5, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3d, 0x88, 0x7c, 0xee, 0xaf, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x19, 0xae, 0xaf, 0x35, 0x5c, 0x52, 0x6b, 0x3c, 0x3f, 0x88, 0xd7, 0xac, 0xaf, 0x5a, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xc8, 0xe7, 0xfe, 0xda, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0x41, 0xe4, 0x73, 0x7f, 0xb5, 0x02, 0x4f, 0x96, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0x4f, 0x96, 0x36, 0x80, 0x7f, 0x5b, 0x1a, 0x1b, 0x5b, 0xda, 0x5c, 0xd9, 0xd8, 0x9b, 0x1b, 0x19, 0x08, 0x59, 0x18, 0x5d, 0xd9, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xdf, 0xca, 0xaf, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xb0, 0xec, 0xa7, 0x36, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xa9, 0x69, 0xa7, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0xbc, 0xd8, 0x39, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0xde, 0x2d, 0xad, 0xc3, 0x29, 0xb6, 0xc0, 0xeb, 0x85, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xc1, 0xeb, 0x85, 0x0d, 0xe0, 0x6b, 0x56, 0xc7, 0xc6, 0x06, 0x52, 0xe7, 0x96, 0x46, 0x07, 0x02, 0xf7, 0xc6, 0x56, 0xb6, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0x3f, 0x97, 0x36, 0x58, 0xda, 0xc8, 0x79, 0x10, 0x3f, 0x8d, 0x5f, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x2c, 0x50, 0xe6, 0xdc, 0xa0, 0xc8, 0x69, 0xdd, 0xa0, 0x84, 0xc7, 0x5c, 0xe3, 0xd0, 0xc1, 0x02, 0x65, 0xce, 0x0d, 0x0a, 0xd8, 0xfc, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x07, 0x32, 0x4f, 0x6b, 0xb8, 0xa4, 0xd6, 0x78, 0x7e, 0xb0, 0x40, 0x99, 0xb3, 0x66, 0x0d, 0xe2, 0x71, 0xf9, 0x6b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x1e, 0x97, 0xbf, 0x3a, 0x88, 0x22, 0xe3, 0xaf, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0xe2, 0xde, 0xef, 0x6b, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x53, 0x7b, 0x6b, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0xc4, 0xfa, 0x0d, 0xce, 0xb3, 0xa3, 0x07, 0x71, 0xb5, 0xfd, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x33, 0x4f, 0xb1, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x1e, 0x5d, 0x99, 0xbb, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x28, 0xdc, 0x44, 0x37, 0x28, 0x9b, 0xea, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0xa7, 0xf6, 0xd6, 0xd6, 0x06, 0xb1, 0x4b, 0xf8, 0xd5, 0x86, 0x5f, 0x5c, 0xd6, 0xa0, 0x84, 0xc7, 0x5c, 0xc0, 0xa3, 0x2b, 0x73, 0xdb, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0xd1, 0x76, 0xf8, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0xa2, 0x9f, 0xfe, 0xab, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xaa, 0xe5, 0xaf, 0x83, 0x88, 0x4b, 0xfc, 0x3a, 0x88, 0xd2, 0xf9, 0xaf, 0x66, 0x81, 0x1f, 0x4b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x1f, 0x4b, 0x3b, 0x38, 0xf6, 0x3b, 0x6e, 0x50, 0x28, 0x77, 0x6e, 0x10, 0x79, 0x9f, 0x5f, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x76, 0x7c, 0xbe, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xb3, 0x2f, 0xc7, 0x07, 0x71, 0x13, 0xfa, 0x75, 0x38, 0xc5, 0x16, 0xf8, 0xb7, 0x76, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0xf8, 0xb7, 0xb6, 0x01, 0x3c, 0xdf, 0xc4, 0xd4, 0xca, 0xc6, 0xe8, 0x40, 0xc2, 0xe6, 0x40, 0xda, 0xc2, 0xe0, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x88, 0x5d, 0xca, 0xaf, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x3b, 0x3e, 0x5f, 0x1b, 0x14, 0x3b, 0x9a, 0x1b, 0xc4, 0x2a, 0xf2, 0xd7, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0xeb, 0xb5, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x48, 0xdc, 0xa8, 0xdd, 0xa0, 0x6c, 0xaa, 0x3f, 0x88, 0x3d, 0xad, 0xaf, 0x83, 0x38, 0xbb, 0xfc, 0x6a, 0x16, 0xf8, 0x30, 0x79, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x68, 0x03, 0x6b, 0x6d, 0x00, 0xcf, 0x30, 0x39, 0xb9, 0xb0, 0x3c, 0x90, 0xb0, 0x39, 0x10, 0xb6, 0xb4, 0x39, 0xba, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x62, 0x97, 0xf2, 0x6b, 0xc3, 0x2f, 0x4a, 0x1b, 0xc4, 0x8e, 0xcf, 0xd7, 0x06, 0xc5, 0x8e, 0xe6, 0x06, 0xb1, 0x6f, 0xf5, 0xb5, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0xf8, 0xd1, 0xfd, 0xda, 0xf0, 0x15, 0xce, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xb1, 0x17, 0xf4, 0xb5, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0x78, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0xed, 0xf2, 0x6b, 0x0d, 0x6f, 0xeb, 0x0c, 0x9e, 0x1e, 0xc4, 0x5e, 0xd0, 0x57, 0x6b, 0xf8, 0xdc, 0x65, 0x70, 0x7a, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xd8, 0x0b, 0xfa, 0xda, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0x41, 0xec, 0x05, 0x7d, 0xd5, 0x2c, 0xf0, 0x73, 0xef, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xf0, 0x73, 0x6f, 0x03, 0xf8, 0xce, 0xd1, 0xc9, 0xa5, 0xb9, 0x9d, 0x81, 0x84, 0xcd, 0x81, 0x8c, 0xbd, 0xc9, 0x91, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xd8, 0xf1, 0xf9, 0xda, 0xa0, 0xd8, 0xd1, 0xdc, 0x20, 0x86, 0x7e, 0xbe, 0x0e, 0xa2, 0x02, 0xfa, 0x6b, 0x16, 0x78, 0xb2, 0x70, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0x32, 0x78, 0xb2, 0xb0, 0x01, 0xfe, 0x2a, 0xaa, 0x21, 0x10, 0xb2, 0x30, 0xba, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x3b, 0x3e, 0x5f, 0x1b, 0x14, 0x3b, 0x9a, 0x1b, 0xc4, 0xd0, 0xcf, 0xd7, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x64, 0x10, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0x3c, 0x28, 0xb9, 0x41, 0x23, 0x01, 0x13, 0x07, 0x51, 0x56, 0xfe, 0x75, 0x10, 0x7b, 0x5a, 0x5f, 0x6b, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1e, 0xa4, 0x2d, 0x89, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xa5, 0x53, 0xae, 0x87, 0x87, 0x7e, 0x9a, 0x05, 0x5e, 0xaf, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x0c, 0x5e, 0xaf, 0x6d, 0x00, 0x1e, 0xc6, 0xde, 0xd8, 0xd8, 0xc2, 0xe0, 0xe6, 0xca, 0x40, 0xea, 0xdc, 0xd2, 0xe8, 0x40, 0xda, 0xc2, 0xe0, 0x36, 0x28, 0x94, 0x3b, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0xed, 0xc8, 0x1b, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x88, 0xf5, 0x1b, 0xac, 0xd7, 0x7a, 0x3e, 0x58, 0xd4, 0x35, 0xbc, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x25, 0xba, 0xf2, 0x06, 0x65, 0x53, 0xfd, 0x41, 0x73, 0x0d, 0x96, 0x6b, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x3f, 0xd4, 0x6c, 0x70, 0xc2, 0x15, 0x68, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x6e, 0x10, 0x40, 0x67, 0x07, 0x05, 0x6c, 0x7e, 0x1b, 0x7e, 0x25, 0xdb, 0xf0, 0x5e, 0xd0, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x84, 0xe0, 0xc3, 0xe1, 0xc1, 0x9d, 0xda, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x67, 0x29, 0xb0, 0x35, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x89, 0x1b, 0xb5, 0x07, 0xf1, 0x92, 0x01, 0xb6, 0xc1, 0xd9, 0xd0, 0xa5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x01, 0xbf, 0xcc, 0x4d, 0x6d, 0xde, 0x20, 0xf5, 0xa2, 0x78, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0xc0, 0x77, 0xab, 0x6b, 0x13, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x22, 0x08, 0x04, 0xac, 0x01, 0xf8, 0x71, 0xab, 0x6b, 0x13, 0x2b, 0x93, 0x03, 0x31, 0x93, 0x7b, 0x6b, 0x03, 0xa9, 0x73, 0x9b, 0x4b, 0x3b, 0x73, 0x2b, 0x23, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0xe7, 0x9b, 0x93, 0x0d, 0x7f, 0xd1, 0x6c, 0xf0, 0x82, 0x7f, 0xcd, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x8e, 0xcc, 0xaa, 0x1b, 0x3e, 0xc8, 0xd9, 0xf0, 0x6d, 0xce, 0x06, 0x8b, 0xe0, 0xdd, 0x36, 0x38, 0xb1, 0xdf, 0x6c, 0xb0, 0x1c, 0x59, 0x78, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x85, 0xc5, 0xf2, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0x86, 0x7f, 0xe7, 0x57, 0x1c, 0xe7, 0xe0, 0x98, 0x01, 0x5a, 0x1b, 0x3e, 0xc8, 0xd9, 0xf0, 0x6d, 0xce, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x3f, 0x81, 0x36, 0x58, 0x04, 0xef, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x0d, 0x4f, 0xeb, 0x1c, 0xa4, 0xbb, 0x56, 0xb5, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x86, 0x07, 0x77, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x28, 0xb0, 0x1e, 0x44, 0x54, 0x0a, 0x58, 0xad, 0x06, 0x07, 0xd3, 0xcf, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x83, 0xe9, 0x67, 0x03, 0xf8, 0xcf, 0xd1, 0xc9, 0xa5, 0xb9, 0x9d, 0x81, 0x98, 0xc9, 0xbd, 0xb5, 0x81, 0xc0, 0x85, 0xd1, 0xa1, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0xf8, 0x77, 0x7e, 0xc5, 0xf1, 0xa0, 0x11, 0x76, 0xf2, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x2f, 0xf8, 0xd7, 0xdc, 0xf0, 0x8b, 0xcb, 0x06, 0x4b, 0xbf, 0x5e, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x2d, 0x52, 0x13, 0x1e, 0x1e, 0xfa, 0x69, 0x05, 0x78, 0xcc, 0xe4, 0xde, 0xdc, 0xc8, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xc8, 0x83, 0x01, 0x6b, 0x00, 0x7e, 0xde, 0xc4, 0xd4, 0xca, 0xc6, 0xe8, 0x40, 0xcc, 0xe4, 0xde, 0xda, 0x40, 0xd6, 0x5a, 0xec, 0x40, 0xe0, 0xc2, 0xd2, 0xe4, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xf0, 0xc1, 0x79, 0x76, 0x74, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1f, 0xbc, 0xe0, 0x5f, 0xb3, 0x0d, 0x7f, 0xd1, 0x6c, 0xf0, 0x82, 0x7f, 0xcd, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x54, 0x1c, 0xd8, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x91, 0x22, 0xde, 0x41, 0x59, 0xe6, 0xd9, 0xac, 0xc1, 0x31, 0x03, 0x74, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0x98, 0x01, 0xda, 0x00, 0xfe, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x61, 0x70, 0x65, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x87, 0x07, 0xf1, 0x69, 0x02, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x5e, 0xf0, 0xaf, 0xb9, 0xe1, 0x17, 0x97, 0x0d, 0x96, 0x7e, 0xbd, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x23, 0x0b, 0x1f, 0x1e, 0xfa, 0x69, 0x35, 0x68, 0xb3, 0x77, 0x7c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xa0, 0xcd, 0xde, 0xf1, 0x06, 0xf0, 0x6b, 0x9b, 0x03, 0xa1, 0x4b, 0x6b, 0x2b, 0x9b, 0xa3, 0x0b, 0x6b, 0x83, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0xf0, 0xef, 0xfc, 0x8a, 0xe3, 0x1c, 0xb4, 0xd9, 0x3b, 0x5e, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0x10, 0x08, 0x58, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0xaf, 0xce, 0xad, 0xed, 0x20, 0xca, 0xca, 0xbf, 0x0e, 0x0f, 0xfd, 0x74, 0x38, 0xc5, 0x5a, 0x83, 0xe3, 0x3c, 0xe8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x71, 0x1e, 0xb4, 0x01, 0xf8, 0xa0, 0x0b, 0x73, 0x5b, 0x03, 0x09, 0x9b, 0x03, 0x99, 0xa3, 0x93, 0x4b, 0x73, 0x3b, 0x03, 0x09, 0x93, 0x93, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0xf0, 0xef, 0xfc, 0x8a, 0xe3, 0x1c, 0x1c, 0xe7, 0x41, 0x6b, 0xc3, 0x5f, 0x34, 0x1b, 0xbc, 0xe0, 0x5f, 0x73, 0xc3, 0x2f, 0x2e, 0x1b, 0x24, 0x39, 0x3c, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa4, 0xea, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x58, 0xfd, 0xad, 0xd5, 0x1a, 0x7e, 0x71, 0xd9, 0xf0, 0xe0, 0xcd, 0x06, 0xa9, 0x0a, 0xab, 0x1d, 0x1e, 0xfa, 0xd9, 0x20, 0x01, 0x76, 0xb8, 0x66, 0x0d, 0x16, 0x8d, 0x68, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x2c, 0x1a, 0xd1, 0x6e, 0x00, 0xaf, 0x39, 0x10, 0xba, 0xb4, 0xb6, 0xb2, 0x39, 0xba, 0xb0, 0x36, 0xb8, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x03, 0x3e, 0x60, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x7a, 0x7e, 0xc0, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x07, 0xad, 0x2f, 0xda, 0x1e, 0x44, 0x59, 0xf9, 0xd7, 0xe1, 0xa1, 0x9f, 0x56, 0x83, 0x47, 0x44, 0xce, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x3c, 0x22, 0x72, 0xae, 0x01, 0xf8, 0x79, 0x13, 0x53, 0x2b, 0x1b, 0xa3, 0x03, 0x31, 0x93, 0x7b, 0x6b, 0x03, 0x59, 0x6b, 0xb1, 0x03, 0x61, 0x4b, 0x9b, 0xa3, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x0d, 0xe2, 0x6f, 0x06, 0xac, 0x0d, 0x7f, 0xd1, 0x6c, 0xf0, 0x82, 0x7f, 0xcd, 0x0d, 0xbf, 0xb8, 0x6c, 0xd0, 0x54, 0x1c, 0xd8, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x72, 0xe7, 0x7d, 0x83, 0xb2, 0xa9, 0x7e, 0x0d, 0x0a, 0xc1, 0xd4, 0x83, 0x28, 0x81, 0xff, 0xea, 0xf0, 0xd0, 0x4f, 0xab, 0x41, 0xd3, 0xd7, 0xe3, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x4d, 0x5f, 0x8f, 0x37, 0x80, 0xff, 0x1c, 0x9d, 0x5c, 0x9a, 0xdb, 0x19, 0x88, 0x99, 0xdc, 0x5b, 0x1b, 0xc8, 0x1c, 0x5a, 0x1a, 0xdc, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x86, 0x7f, 0xe7, 0x57, 0x1c, 0xe7, 0xa0, 0xe9, 0xeb, 0xf1, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x2f, 0xf8, 0xd7, 0xdc, 0xf0, 0x8b, 0xcb, 0x06, 0x47, 0x66, 0xd5, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x5a, 0xc7, 0xb6, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0x16, 0xc4, 0xcd, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7c, 0xdc, 0x0d, 0xe2, 0xc6, 0x70, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x24, 0x37, 0x7d, 0x83, 0xe5, 0x6b, 0xaf, 0x87, 0x87, 0x7e, 0x3a, 0x68, 0xe3, 0x7a, 0xb0, 0xc3, 0x29, 0x56, 0x6b, 0x70, 0xda, 0x42, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x38, 0x6d, 0xa1, 0x36, 0x80, 0xff, 0x1c, 0x9d, 0x5c, 0x9a, 0xdb, 0x19, 0x88, 0x99, 0xdc, 0x5b, 0x1b, 0xc8, 0x5d, 0x18, 0x1b, 0xdb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x86, 0x7f, 0xe7, 0x57, 0x1c, 0x0f, 0xda, 0x27, 0x28, 0xaf, 0x0d, 0x7f, 0xd1, 0x6c, 0xf0, 0x82, 0x7f, 0xcd, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x00, 0x3b, 0xbc, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0xef, 0x9b, 0x59, 0xcb, 0x5d, 0x18, 0x1b, 0xdb, 0xe1, 0xa1, 0x9f, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x0d, 0x62, 0x85, 0xee, 0x6b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x56, 0xe8, 0xbe, 0x1a, 0x80, 0x07, 0xb5, 0xb9, 0x37, 0x37, 0x10, 0xba, 0x37, 0x10, 0x39, 0x37, 0x10, 0xb8, 0x30, 0xb9, 0xb9, 0x32, 0xb9, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x56, 0xf7, 0xb2, 0xae, 0x41, 0x21, 0x98, 0x7a, 0xb0, 0xb0, 0x21, 0x76, 0x83, 0xf3, 0x60, 0xc7, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0xc1, 0x82, 0x5e, 0xd5, 0x0d, 0x16, 0x0c, 0xab, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0x46, 0x5b, 0x75, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0xb5, 0x2f, 0xa4, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xc4, 0x8e, 0x75, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x88, 0xa0, 0x6e, 0x83, 0x82, 0x34, 0x76, 0x70, 0x71, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xf2, 0x40, 0x76, 0xc3, 0xd3, 0x3a, 0x07, 0xeb, 0x10, 0x58, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x1e, 0xb4, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0xce, 0x52, 0x60, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x95, 0x92, 0xaa, 0x07, 0x47, 0xc4, 0x82, 0x0e, 0xd6, 0xdb, 0xab, 0x76, 0xb0, 0xa4, 0x5f, 0x75, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x0a, 0x3a, 0x74, 0x0d, 0xcf, 0xe2, 0x1d, 0x44, 0xf5, 0x5d, 0x51, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x1b, 0x2c, 0x3c, 0x56, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc1, 0x09, 0xdd, 0xa0, 0xc8, 0x69, 0x3d, 0x58, 0x04, 0x60, 0x7a, 0xb0, 0xee, 0x59, 0x75, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x30, 0x99, 0xf4, 0x60, 0x41, 0xe8, 0xfc, 0xc1, 0x7a, 0x8d, 0xd5, 0x83, 0xf5, 0x1a, 0xab, 0x75, 0xb0, 0xac, 0x63, 0xb5, 0x0e, 0xa7, 0xd8, 0x02, 0xbc, 0x6f, 0x66, 0x2d, 0x77, 0x61, 0x69, 0xee, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x5c, 0xd6, 0x81, 0x35, 0x00, 0x0f, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x72, 0x64, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0x4c, 0x50, 0x78, 0xf0, 0x54, 0xd3, 0xc5, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0x02, 0x12, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x6b, 0x1d, 0xdb, 0x36, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x8f, 0xa7, 0x62, 0xdf, 0x60, 0x25, 0x36, 0xe9, 0x1a, 0xde, 0xd6, 0x39, 0x68, 0x96, 0xa0, 0xb0, 0x0e, 0xa7, 0xd8, 0x02, 0xbc, 0x74, 0x6f, 0x2d, 0x77, 0x61, 0x69, 0xee, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x1c, 0xf0, 0x81, 0x35, 0x00, 0x0f, 0x63, 0x6f, 0x72, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x1b, 0x94, 0x5d, 0xb2, 0x1b, 0x44, 0xcf, 0x65, 0xd1, 0x06, 0x6f, 0x16, 0x3e, 0x99, 0x0d, 0xbf, 0x28, 0x6d, 0xf0, 0x6e, 0x0a, 0x96, 0x0d, 0x7f, 0xd1, 0x6c, 0xf0, 0x54, 0xd3, 0xc5, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x56, 0x88, 0x9f, 0x6f, 0x50, 0x50, 0x64, 0x6e, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0xca, 0xc2, 0xe2, 0x83, 0xe6, 0x5c, 0xc5, 0x37, 0x88, 0xd6, 0xf4, 0xa7, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xc6, 0x38, 0xc5, 0x1a, 0x3e, 0xb1, 0xd9, 0xa0, 0x24, 0x9a, 0xdd, 0x70, 0x49, 0x6d, 0xf8, 0x72, 0x72, 0x0d, 0x0f, 0xee, 0x1c, 0x14, 0x95, 0xe2, 0x6b, 0xf8, 0x87, 0xe7, 0xf0, 0x98, 0xcc, 0x1a, 0x14, 0xf9, 0xb2, 0x07, 0xcb, 0xc0, 0xcf, 0xdb, 0xa0, 0x20, 0x8d, 0xdd, 0xd0, 0xe2, 0x63, 0xc3, 0xa7, 0x80, 0x1b, 0x94, 0xf6, 0x96, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0xf3, 0xa4, 0xca, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0x34, 0xcb, 0x3e, 0x78, 0xaa, 0xe9, 0x62, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0xf5, 0xcb, 0x06, 0xc5, 0xd2, 0xf6, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x48, 0x07, 0x67, 0xdc, 0xf0, 0x41, 0xce, 0x1a, 0x7e, 0x25, 0x5b, 0xc3, 0xbf, 0x39, 0x1b, 0x94, 0xd1, 0xe7, 0x07, 0x85, 0x97, 0xf1, 0x1a, 0xfe, 0xcd, 0xd9, 0x20, 0xe5, 0xb5, 0x6a, 0xc3, 0xbb, 0x3d, 0x6b, 0xb8, 0xa4, 0x36, 0x28, 0xa4, 0x66, 0xd7, 0xf0, 0x79, 0xd0, 0x41, 0x19, 0x7d, 0x5e, 0x1d, 0x1c, 0xd7, 0x29, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x28, 0xb1, 0xb6, 0xd7, 0x60, 0x49, 0x75, 0xd2, 0x06, 0xc5, 0xd2, 0xf6, 0x86, 0x77, 0x7b, 0xd6, 0x70, 0x49, 0x6d, 0x50, 0x48, 0xcd, 0x6e, 0x10, 0x89, 0x8b, 0x60, 0x6b, 0xf8, 0x87, 0x67, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0xdc, 0x20, 0x85, 0x39, 0xea, 0xa0, 0x34, 0x43, 0xaf, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x52, 0x98, 0xa3, 0x0e, 0x0a, 0x2f, 0xe3, 0x0d, 0x1e, 0xb0, 0xac, 0xb2, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0xb1, 0x7b, 0x7e, 0x90, 0xa0, 0x68, 0xd9, 0x2c, 0xe0, 0xad, 0xb1, 0xc9, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x81, 0xb7, 0xc6, 0x26, 0x37, 0x80, 0xff, 0x1c, 0x5d, 0x1e, 0xde, 0xcb, 0x1c, 0x5d, 0x9d, 0x18, 0x48, 0x99, 0xdb, 0x59, 0x9a, 0x5b, 0xd9, 0x06, 0xab, 0xb0, 0x9c, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0x5b, 0xfe, 0xeb, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xbc, 0x35, 0x36, 0xb9, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x01, 0x3c, 0xd8, 0xdc, 0xe8, 0xe6, 0x5a, 0xc6, 0xd0, 0xc2, 0xe4, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x28, 0xaf, 0x04, 0x6b, 0x00, 0x1e, 0xe6, 0xe8, 0xea, 0xc4, 0x40, 0xe8, 0xca, 0xf0, 0xe8, 0x40, 0xd8, 0xca, 0xdc, 0xce, 0xe8, 0xd0, 0xe6, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0x1e, 0x54, 0x92, 0xbb, 0xe1, 0x2f, 0x9a, 0x0d, 0xca, 0x39, 0xdb, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x4a, 0xa4, 0xea, 0x0d, 0x4f, 0xeb, 0x6c, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x6e, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0xde, 0xf4, 0x1b, 0x3c, 0x48, 0x09, 0x76, 0x83, 0x03, 0xfd, 0x6b, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0xe7, 0xe4, 0x41, 0x04, 0xb8, 0x35, 0xad, 0x06, 0xa1, 0x5f, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x1b, 0xb4, 0x50, 0x79, 0x3c, 0x80, 0xef, 0x1c, 0x5d, 0x9d, 0x18, 0x88, 0x99, 0xdc, 0x5b, 0x1b, 0xc8, 0x1c, 0x5d, 0x1e, 0xde, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0xc1, 0xab, 0xbd, 0x2a, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x83, 0x4a, 0x72, 0x37, 0x28, 0xed, 0x2d, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0xc1, 0x83, 0x94, 0x60, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x38, 0x89, 0xbb, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x83, 0x4a, 0x72, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0xd0, 0xa8, 0xfc, 0xdf, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x25, 0x52, 0xf5, 0x86, 0xa7, 0x75, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x37, 0x7c, 0x30, 0xbf, 0xc1, 0x79, 0x76, 0x74, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0xf4, 0xa6, 0xdf, 0xe0, 0x59, 0x5b, 0x95, 0x1b, 0xbc, 0xda, 0xab, 0xb2, 0x0d, 0x0a, 0x82, 0xd9, 0x0d, 0x0f, 0xee, 0xac, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0x2f, 0x68, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xd6, 0xb9, 0xd5, 0x75, 0xb0, 0xce, 0xfa, 0xad, 0x36, 0x5c, 0x52, 0x1b, 0x1c, 0xf6, 0x3b, 0xd6, 0xf0, 0xe0, 0xce, 0x41, 0x8b, 0x73, 0xa9, 0x6b, 0xf8, 0x3c, 0x68, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x9f, 0xa3, 0xcb, 0x23, 0xdb, 0xa0, 0xd1, 0xb7, 0xd4, 0xc3, 0x5b, 0x68, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0x01, 0x9b, 0x60, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xf1, 0xe0, 0x41, 0x25, 0xb9, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0xf8, 0x3c, 0x68, 0x83, 0x36, 0x02, 0x44, 0x37, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0x6f, 0xce, 0x06, 0x8d, 0xbe, 0xa5, 0x1e, 0x94, 0x53, 0xd7, 0x1b, 0x94, 0x7c, 0xc1, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x34, 0xfa, 0x96, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x11, 0xb4, 0x6d, 0xd0, 0xe2, 0x5c, 0xea, 0x41, 0x91, 0x77, 0xdd, 0x41, 0x7c, 0x9b, 0x36, 0xad, 0x06, 0xa5, 0xd7, 0xd7, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0x70, 0x4a, 0x13, 0x1c, 0xc0, 0x63, 0x8e, 0x2d, 0xec, 0x0c, 0x64, 0x8e, 0xae, 0x4e, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0xc3, 0x97, 0x4b, 0x07, 0x31, 0xb5, 0x0a, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x1e, 0x54, 0x92, 0xbb, 0xe1, 0x83, 0x9c, 0x0d, 0xdf, 0xe6, 0x6c, 0x78, 0x2f, 0x68, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0xe7, 0x41, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x83, 0x8f, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0xe7, 0xe4, 0x41, 0x91, 0x77, 0xbd, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0xe9, 0x9d, 0xc3, 0xd3, 0x3a, 0x1b, 0x14, 0xe1, 0xa7, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0x51, 0x3c, 0x7c, 0xe3, 0xb7, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xe5, 0xd4, 0xf5, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x8b, 0xe3, 0x1c, 0x94, 0x5e, 0x5f, 0x6d, 0x78, 0x5a, 0xe7, 0xa0, 0xc8, 0xbb, 0xee, 0x20, 0xbe, 0x4d, 0x9b, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x3c, 0xb8, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x1e, 0x14, 0xbe, 0xba, 0x07, 0x45, 0xd2, 0xed, 0x6a, 0xf0, 0x08, 0xd1, 0xe3, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x47, 0x88, 0x1e, 0x37, 0x80, 0xdf, 0x9b, 0x5d, 0x99, 0x1c, 0x5b, 0x58, 0x1e, 0xc8, 0x1c, 0x5d, 0x9d, 0xd8, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0xf1, 0x8f, 0x09, 0xb6, 0xe1, 0x79, 0xa6, 0x35, 0xfc, 0xb9, 0x34, 0xf8, 0x78, 0xf0, 0xa0, 0x92, 0xdc, 0x35, 0xfc, 0xb9, 0x34, 0x38, 0x79, 0x70, 0x1c, 0x80, 0x6d, 0xc3, 0x5f, 0x34, 0x1b, 0x3c, 0xa8, 0x24, 0x77, 0x83, 0x24, 0x03, 0xc2, 0x0d, 0x4e, 0x04, 0x6d, 0x1b, 0x9c, 0x1d, 0x04, 0xd7, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xbc, 0xdc, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xc0, 0x83, 0xad, 0xcc, 0x8d, 0xae, 0x65, 0x0c, 0x2d, 0x4c, 0xee, 0xf0, 0xd0, 0xcf, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x0f, 0x8e, 0x02, 0x18, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x1c, 0x5d, 0x07, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0x14, 0x82, 0xa9, 0x07, 0x0f, 0x52, 0x82, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x64, 0xda, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x4f, 0x01, 0x0f, 0x8e, 0x02, 0x18, 0x07, 0xa5, 0xba, 0x6c, 0x6d, 0x78, 0x7a, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x7a, 0x8b, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0xf0, 0x5e, 0xd0, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xa6, 0x83, 0xc1, 0x0e, 0xbf, 0x08, 0x75, 0x78, 0xe8, 0xa7, 0xc3, 0x29, 0xd6, 0x02, 0xbe, 0x98, 0x5c, 0xd9, 0xba, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x10, 0x07, 0xc9, 0x60, 0x0d, 0xc0, 0x4b, 0x9a, 0x1b, 0x59, 0x19, 0x1e, 0xc8, 0x0a, 0x48, 0x9a, 0xdb, 0x18, 0x5b, 0x0b, 0x5b, 0x99, 0x1b, 0xc8, 0x9b, 0xd9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xc4, 0xfb, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x8f, 0x39, 0xba, 0x3a, 0x31, 0x10, 0xb8, 0xb0, 0x34, 0x39, 0x90, 0xbb, 0x17, 0x90, 0x34, 0x32, 0x3c, 0x90, 0xb0, 0x83, 0x28, 0xd0, 0x81, 0xda, 0xa0, 0xb4, 0xb7, 0x5c, 0xc3, 0xe7, 0x4a, 0x1b, 0x14, 0x80, 0xb1, 0x07, 0xa7, 0x49, 0x95, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xb2, 0x09, 0xf3, 0x20, 0x2e, 0x2d, 0xa3, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x7c, 0x1e, 0xb4, 0x41, 0x41, 0x91, 0xb9, 0x41, 0xd1, 0xa7, 0xbb, 0xe1, 0x1f, 0x9e, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x4f, 0xa0, 0x0d, 0x4f, 0xef, 0x1c, 0x14, 0x3e, 0xa8, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0x1d, 0xbe, 0xf1, 0x5b, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0xa3, 0xcf, 0x0f, 0xbf, 0x08, 0x1d, 0x14, 0xa2, 0xe7, 0xab, 0x41, 0x04, 0xa7, 0x82, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x44, 0x70, 0x2a, 0x58, 0x03, 0xf8, 0xce, 0xd1, 0xe5, 0x95, 0x81, 0x98, 0xc9, 0xbd, 0xb5, 0x81, 0xcc, 0xd1, 0xe5, 0xb1, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x83, 0x67, 0x6d, 0x55, 0x6e, 0x10, 0xb9, 0xa0, 0x60, 0x6d, 0xf8, 0xfa, 0x65, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xef, 0xd2, 0xe8, 0xd0, 0x40, 0xd2, 0xdc, 0xd0, 0xca, 0xe4, 0xd2, 0xe8, 0xc2, 0xdc, 0xc6, 0xca, 0x0e, 0xef, 0x05, 0x6d, 0x70, 0xce, 0x5f, 0x5a, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x96, 0xeb, 0x40, 0x37, 0x28, 0x75, 0x45, 0x37, 0x28, 0xe1, 0x31, 0x17, 0xbc, 0x3e, 0x68, 0xb9, 0x0e, 0x74, 0x83, 0x82, 0x22, 0x73, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xb6, 0xa0, 0x6e, 0x50, 0x36, 0xbd, 0x1f, 0xb4, 0x3a, 0xd0, 0xbb, 0x86, 0xb7, 0x75, 0x0e, 0x22, 0x67, 0x1b, 0xac, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x31, 0x76, 0x6c, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x34, 0x46, 0x97, 0xba, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0x8a, 0x7d, 0xd1, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x31, 0x76, 0x6c, 0x0d, 0x6f, 0xeb, 0x0c, 0x1e, 0x1f, 0x34, 0x46, 0x97, 0xba, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x8a, 0x7d, 0xd1, 0x66, 0x0d, 0x8e, 0x50, 0x88, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0xc1, 0x11, 0x0d, 0x71, 0x00, 0x8f, 0xb9, 0xbb, 0xb0, 0x33, 0x90, 0x39, 0xba, 0x3a, 0xb1, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x7f, 0x2b, 0x6d, 0x10, 0x85, 0xbe, 0x60, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x83, 0x85, 0xe0, 0x86, 0xf7, 0x82, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa7, 0xb7, 0xb8, 0x83, 0xc2, 0x57, 0xb7, 0xc3, 0x29, 0xb6, 0x06, 0xd1, 0x20, 0x0c, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0xe2, 0x1f, 0x13, 0x6c, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x25, 0x09, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xca, 0x2b, 0xc1, 0x3a, 0x3c, 0xf4, 0xb3, 0xe1, 0x4f, 0xa0, 0x56, 0x83, 0x42, 0xa9, 0x6d, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x38, 0xa2, 0x40, 0x0e, 0xe0, 0x31, 0x37, 0x16, 0x76, 0x06, 0x32, 0x47, 0x57, 0x27, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0xe2, 0x3a, 0x16, 0x6c, 0xc3, 0x5f, 0x34, 0x1b, 0x3c, 0xa8, 0x24, 0x77, 0xc3, 0x07, 0x39, 0x1b, 0xbe, 0xcd, 0xd9, 0xa0, 0xa0, 0xc8, 0xdc, 0xa0, 0x84, 0xc7, 0xdc, 0xf0, 0x79, 0xd0, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x4f, 0x6c, 0x36, 0x88, 0x4e, 0x5a, 0xb0, 0x0d, 0x1f, 0xe4, 0x6c, 0x10, 0xfd, 0xb6, 0x60, 0x6b, 0x70, 0x74, 0x1d, 0x5c, 0xc3, 0x2f, 0x2e, 0x1b, 0x94, 0x53, 0xd7, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x2c, 0x8e, 0x73, 0x50, 0x28, 0xb5, 0x75, 0x10, 0x27, 0xb9, 0x60, 0xb5, 0x41, 0x61, 0xa8, 0xba, 0x41, 0xf1, 0x83, 0x7a, 0x10, 0xe5, 0xb9, 0x60, 0x87, 0x53, 0xac, 0x35, 0x78, 0x98, 0xff, 0xdd, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0xc3, 0xfc, 0xef, 0x1a, 0xc0, 0x73, 0xec, 0xcd, 0x8d, 0xac, 0xcc, 0x6d, 0xae, 0x0c, 0x64, 0x8e, 0xae, 0x4e, 0x6c, 0xc3, 0x2f, 0x4a, 0x1b, 0xc4, 0x3f, 0x26, 0xd8, 0x86, 0xbf, 0x68, 0x36, 0x78, 0x50, 0x49, 0xee, 0x06, 0x25, 0x3c, 0xe6, 0x86, 0x07, 0x77, 0x36, 0x28, 0x28, 0x32, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x28, 0x46, 0xe4, 0x37, 0x3c, 0xad, 0xb3, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x68, 0xd9, 0x61, 0x75, 0xc3, 0xdb, 0x3a, 0x83, 0xc3, 0x83, 0xa7, 0x07, 0xc5, 0x88, 0xfc, 0x06, 0x07, 0xa6, 0xc4, 0x0d, 0x8a, 0x3e, 0xdd, 0x05, 0x8f, 0x0f, 0x62, 0xba, 0x1e, 0x6c, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x22, 0x68, 0xdb, 0x60, 0xcd, 0xaf, 0xeb, 0x1a, 0xde, 0xd6, 0x39, 0x88, 0x5a, 0x7b, 0xb0, 0x0e, 0x0a, 0xf8, 0xf8, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0x83, 0x18, 0x06, 0x03, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x61, 0x30, 0xb0, 0x06, 0xe0, 0x81, 0x2d, 0xcd, 0xad, 0x0c, 0x84, 0x2d, 0x6d, 0x8e, 0x0e, 0x84, 0xee, 0x0d, 0x84, 0x2e, 0x0c, 0xae, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf0, 0x60, 0xa1, 0x05, 0xfc, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xe9, 0x89, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0x78, 0x70, 0x67, 0x83, 0x82, 0x22, 0x73, 0xc3, 0xb3, 0x78, 0xcb, 0x86, 0x5f, 0x5c, 0x0e, 0x0e, 0xa1, 0x7e, 0x83, 0x68, 0xd9, 0xf0, 0x8b, 0xcb, 0xc1, 0x59, 0x2b, 0xb1, 0x59, 0x83, 0x48, 0x97, 0x79, 0xda, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x74, 0x99, 0xa7, 0x06, 0xf0, 0x54, 0x9b, 0x7b, 0x73, 0x03, 0x91, 0x2b, 0x83, 0x0b, 0x93, 0x9b, 0x2b, 0x93, 0xdb, 0xa0, 0x94, 0x10, 0x5f, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x27, 0x3f, 0x6b, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x08, 0xb8, 0xf9, 0x3a, 0x08, 0xd3, 0xb1, 0x83, 0x68, 0xbf, 0xf9, 0x3a, 0x9c, 0x62, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0x3f, 0x57, 0x6f, 0x78, 0x9e, 0x64, 0x83, 0xe8, 0xe0, 0xf9, 0xda, 0xa0, 0x50, 0xee, 0xdc, 0x60, 0x85, 0x65, 0xec, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x1d, 0x9f, 0xaf, 0x0d, 0x5f, 0xbf, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0x63, 0xe3, 0x6e, 0xd0, 0xde, 0x9e, 0x67, 0x1b, 0x14, 0x7c, 0x98, 0x1b, 0xc4, 0xd0, 0xcf, 0xd7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xb0, 0x83, 0x7e, 0x10, 0x41, 0x41, 0x5f, 0x2b, 0xf0, 0x6f, 0xea, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0x65, 0xf0, 0x6f, 0x6a, 0x03, 0x78, 0xbe, 0x89, 0xa9, 0x95, 0x8d, 0xd1, 0x81, 0x84, 0xcd, 0x81, 0xa8, 0xd5, 0x9d, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0xa2, 0xff, 0xe6, 0xeb, 0x20, 0x46, 0xab, 0xbe, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xe1, 0x34, 0xb6, 0xc1, 0x0b, 0xfe, 0x35, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0xde, 0x4d, 0x35, 0xb9, 0xc1, 0x09, 0x48, 0x74, 0x0d, 0x02, 0xe8, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x46, 0xf5, 0xd7, 0x1a, 0x14, 0x82, 0xa9, 0x07, 0x2f, 0xf8, 0xd7, 0xac, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x67, 0xb5, 0x5f, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb8, 0xe8, 0xd6, 0xda, 0x20, 0x32, 0xaa, 0xbf, 0x6a, 0x05, 0x3e, 0x8c, 0xde, 0xf0, 0x3c, 0xc9, 0x06, 0xd1, 0x2e, 0xf5, 0xb5, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0xa4, 0x52, 0x7d, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xd8, 0xf1, 0xf9, 0xda, 0xa0, 0xe0, 0xc3, 0xdc, 0x20, 0xf6, 0xad, 0xbe, 0x0e, 0xe2, 0x77, 0xeb, 0x6b, 0x05, 0xfe, 0xad, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x0c, 0xfe, 0xad, 0x6e, 0x00, 0xef, 0x37, 0x31, 0xb5, 0xb2, 0x31, 0x3a, 0x90, 0x37, 0x33, 0x90, 0x3a, 0xb7, 0x34, 0xba, 0xb9, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0xe2, 0xde, 0xef, 0x6b, 0xc3, 0x2f, 0x4a, 0x1b, 0xc4, 0x8e, 0xcf, 0xd7, 0x06, 0x05, 0x1f, 0xe6, 0x06, 0xb1, 0x8a, 0xfc, 0xb5, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xf8, 0xde, 0xea, 0x5a, 0xe4, 0xc2, 0xee, 0x0e, 0x9a, 0x6b, 0x39, 0x3e, 0x88, 0x3d, 0xad, 0xaf, 0xd9, 0x20, 0x12, 0xc0, 0xbe, 0x56, 0xe0, 0xe7, 0xca, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xe0, 0xe7, 0xca, 0x06, 0xf0, 0x9d, 0xa3, 0x93, 0x4b, 0x73, 0x3b, 0x03, 0x09, 0x9b, 0x03, 0x09, 0xab, 0x93, 0x0b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xc2, 0xea, 0xe4, 0x83, 0xf3, 0xe6, 0xe9, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x1d, 0x9f, 0xaf, 0x0d, 0x0a, 0x3e, 0xcc, 0x0d, 0x62, 0xe8, 0xe7, 0x6b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x55, 0x35, 0xeb, 0x6d, 0xf0, 0x30, 0xb9, 0xe8, 0x83, 0xd8, 0xd3, 0xfa, 0x5a, 0x81, 0x77, 0x2b, 0x37, 0x3c, 0x4f, 0xb2, 0x41, 0x84, 0xb1, 0x7d, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xd8, 0xf1, 0xf9, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xa7, 0x97, 0xd7, 0x0d, 0x0a, 0x3e, 0xcc, 0x0d, 0x22, 0xf9, 0xed, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd8, 0x41, 0x3f, 0x88, 0xa6, 0xb8, 0xaf, 0xc3, 0x29, 0xd6, 0x02, 0xef, 0x96, 0x6e, 0x78, 0x9e, 0x64, 0x83, 0xf8, 0xaa, 0xfb, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0xb1, 0xe3, 0xf3, 0xb5, 0x41, 0xc1, 0x87, 0xb9, 0x41, 0x24, 0xbf, 0x7d, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x05, 0x3b, 0xe8, 0x07, 0xb1, 0x90, 0xf7, 0x75, 0x38, 0xc5, 0x16, 0xf8, 0xb6, 0x7a, 0xc3, 0xf3, 0x24, 0x1b, 0x44, 0x24, 0xe6, 0xd7, 0x06, 0x85, 0x72, 0xe7, 0x06, 0xb1, 0x4b, 0xf9, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0x62, 0xc7, 0xe7, 0x6b, 0x83, 0x12, 0x1e, 0x73, 0x83, 0x76, 0xd2, 0xc7, 0x36, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x59, 0x0a, 0x6c, 0x83, 0x68, 0xe2, 0xfc, 0x6a, 0x05, 0xbe, 0x8e, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x0c, 0xbe, 0x8e, 0xed, 0xe0, 0xfd, 0xe9, 0x9a, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x76, 0x7c, 0xbe, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x27, 0x7d, 0x6c, 0x83, 0x82, 0x22, 0xf3, 0x20, 0x3c, 0x55, 0x57, 0xe0, 0xeb, 0xcc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xe0, 0xeb, 0xcc, 0x06, 0xf0, 0xa8, 0x73, 0x4b, 0xa3, 0x03, 0x31, 0x0b, 0x63, 0x63, 0xdb, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x06, 0xef, 0xa3, 0x0f, 0xc2, 0x74, 0xec, 0x20, 0x6e, 0x29, 0xbf, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x68, 0x56, 0x7b, 0x6c, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0x3c, 0x88, 0xab, 0xed, 0xaf, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xda, 0x49, 0x1f, 0xdb, 0xa0, 0xf5, 0x39, 0xec, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x6b, 0x97, 0x5f, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0x8d, 0xf6, 0xb1, 0x0e, 0xa7, 0xd8, 0x02, 0xff, 0x66, 0x6e, 0x78, 0x9e, 0x64, 0x83, 0xa8, 0xe7, 0xfb, 0xda, 0xa0, 0x50, 0xee, 0xdc, 0x20, 0xee, 0xfd, 0xbe, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xec, 0xf8, 0x7c, 0x6d, 0x50, 0xf0, 0x61, 0x6e, 0x10, 0x7b, 0x81, 0x5f, 0x1b, 0xbe, 0xc2, 0xd9, 0x20, 0x48, 0x4f, 0x37, 0x68, 0xe6, 0x29, 0x76, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x45, 0xeb, 0xc9, 0xc1, 0x79, 0x76, 0xf4, 0xe0, 0x10, 0xd3, 0xb1, 0x86, 0x3f, 0x97, 0x06, 0xa7, 0x0f, 0xc2, 0x74, 0xac, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x5c, 0x52, 0x1b, 0x14, 0x35, 0xe2, 0x6b, 0xd0, 0xcc, 0x53, 0xec, 0x86, 0xcf, 0x5d, 0xd6, 0x30, 0x71, 0x6b, 0x98, 0xb8, 0x0d, 0xc2, 0x74, 0xec, 0xa0, 0xb9, 0x6f, 0xdc, 0x83, 0x30, 0x1d, 0x3b, 0x68, 0xcb, 0x29, 0xb6, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xd1, 0x7a, 0x72, 0xd0, 0xcc, 0x53, 0xec, 0x41, 0xe4, 0x15, 0x7e, 0xad, 0xe1, 0x17, 0x97, 0x0d, 0xa2, 0xfe, 0x26, 0x6c, 0x0d, 0x96, 0xd4, 0x2f, 0xad, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0x50, 0xb4, 0x9e, 0x1c, 0x44, 0xfd, 0x4d, 0xd8, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xcd, 0x7d, 0xe3, 0x1e, 0x34, 0xf3, 0x14, 0x7b, 0x10, 0x11, 0x88, 0x5f, 0x6d, 0x50, 0xc2, 0x63, 0x2e, 0x38, 0x7d, 0xd0, 0xcc, 0x53, 0xec, 0x1a, 0x2c, 0xa9, 0x5f, 0x5a, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0x32, 0xef, 0x8b, 0x0e, 0x22, 0xaf, 0xf0, 0xeb, 0x20, 0x3c, 0x55, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x78, 0x15, 0xf9, 0xc9, 0x1a, 0xde, 0xd6, 0x39, 0x88, 0x25, 0x9e, 0xb0, 0x0e, 0xa2, 0x42, 0xf1, 0xab, 0x83, 0xb8, 0x54, 0xfc, 0x5a, 0xe0, 0xc7, 0xea, 0x0d, 0xcf, 0x93, 0x6c, 0x10, 0xd7, 0x9d, 0x5f, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0x44, 0xde, 0xe7, 0xd7, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x1d, 0x9f, 0xaf, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xd0, 0xdc, 0xf7, 0x20, 0xba, 0x4b, 0xc2, 0x0e, 0xa7, 0xd8, 0x02, 0xef, 0x56, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x06, 0xef, 0x56, 0x37, 0x00, 0x2f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x61, 0x73, 0x20, 0x68, 0x65, 0x78, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x76, 0x7c, 0xbe, 0x36, 0x28, 0xf8, 0x30, 0x37, 0x88, 0xa1, 0x9f, 0xaf, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x60, 0x07, 0x7d, 0x83, 0x28, 0x0a, 0xfa, 0x3a, 0x58, 0x9d, 0x7f, 0xbf, 0x02, 0x2f, 0x56, 0x6f, 0x78, 0x9e, 0x64, 0x83, 0x38, 0x12, 0xfd, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0xb1, 0xe3, 0xf3, 0xb5, 0x41, 0xc1, 0x87, 0xb9, 0x41, 0x2c, 0x92, 0x7e, 0x1d, 0x44, 0xb7, 0xe9, 0xd7, 0xe1, 0x14, 0x5b, 0xe0, 0xe1, 0xc2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0xe0, 0xe1, 0xc2, 0x06, 0xf0, 0x9d, 0xa3, 0x93, 0x4b, 0x73, 0x3b, 0x03, 0x09, 0x9b, 0x03, 0x81, 0x0b, 0xa3, 0x43, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x11, 0x1f, 0x3a, 0x75, 0xb0, 0x64, 0x08, 0xfd, 0x70, 0x8a, 0x2d, 0xf0, 0x73, 0xe1, 0x86, 0xe7, 0x49, 0x36, 0x88, 0xfd, 0xd3, 0xaf, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x3b, 0x3e, 0x5f, 0x1b, 0x14, 0x7c, 0x98, 0x1b, 0xc4, 0xd0, 0xcf, 0xd7, 0x41, 0xcc, 0xad, 0x7e, 0xad, 0xc0, 0xbf, 0xc1, 0x1b, 0x9e, 0x27, 0xd9, 0x20, 0x62, 0x59, 0xbf, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x88, 0x6b, 0xd7, 0xaf, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0x3b, 0x3e, 0x5f, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0xac, 0xdf, 0x60, 0x49, 0x35, 0xee, 0x1a, 0x04, 0xd0, 0xd9, 0x41, 0xd4, 0xca, 0x7e, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xe0, 0xa9, 0xbd, 0xb5, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x68, 0xa9, 0xfd, 0x3a, 0x88, 0x0a, 0xc5, 0xaf, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0x34, 0xd4, 0xfa, 0xba, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x89, 0x54, 0xbd, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x8b, 0x40, 0x46, 0x0f, 0xa2, 0x6c, 0xfe, 0x6b, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0xef, 0x29, 0x4f, 0x07, 0xe5, 0x38, 0xfe, 0x06, 0xa5, 0x84, 0xf8, 0x06, 0x71, 0xde, 0xea, 0xb4, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x82, 0x1d, 0xf4, 0x83, 0x58, 0xf4, 0xfd, 0x3a, 0xbc, 0x85, 0xb6, 0x02, 0x2f, 0xf6, 0x6e, 0x78, 0x9e, 0x64, 0x83, 0x58, 0x0e, 0xfe, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0xb1, 0xe3, 0xf3, 0xb5, 0x41, 0xc1, 0x87, 0xb9, 0x41, 0x2c, 0x92, 0x7e, 0x1d, 0x44, 0x51, 0xd0, 0xd7, 0x0a, 0x7c, 0x9d, 0xbb, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x1b, 0xa4, 0xcb, 0x5a, 0x0e, 0xe0, 0x51, 0xe7, 0x96, 0x46, 0x07, 0xe2, 0x56, 0x56, 0x46, 0xb6, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0xec, 0x52, 0x7e, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0xf8, 0x64, 0x09, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0x76, 0xf9, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x1b, 0xba, 0x1c, 0x44, 0x85, 0xe2, 0x57, 0x2b, 0xf0, 0x6f, 0xf4, 0x86, 0xe7, 0x49, 0x36, 0x88, 0xcd, 0xe2, 0xaf, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0xe2, 0xde, 0xef, 0x6b, 0xc3, 0x2f, 0x4a, 0x1b, 0xc4, 0x8e, 0xcf, 0xd7, 0x06, 0x05, 0x1f, 0xe6, 0x06, 0xb1, 0x8a, 0xfc, 0x75, 0x10, 0xe1, 0xca, 0x5f, 0xb3, 0xc0, 0xbb, 0xbd, 0x1b, 0x9e, 0x27, 0xd9, 0x20, 0xb2, 0x9a, 0xbf, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xec, 0xf8, 0x7c, 0x6d, 0x50, 0xf0, 0x61, 0x6e, 0x10, 0xc9, 0x6f, 0x5f, 0x07, 0x51, 0x14, 0xf4, 0x35, 0x0b, 0xbc, 0xdb, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x19, 0xbc, 0xdb, 0xdc, 0x00, 0xfe, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x61, 0x73, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x76, 0x7c, 0xbe, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xf1, 0xe4, 0x64, 0x83, 0x82, 0x0f, 0x73, 0x83, 0x48, 0x7e, 0xfb, 0xda, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0xc1, 0x0e, 0xfa, 0x06, 0x51, 0x14, 0xf4, 0xb5, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x0d, 0x92, 0x1b, 0xe4, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x0d, 0x96, 0x39, 0xc9, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x3e, 0x8c, 0x1e, 0xac, 0x80, 0x2e, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0xa5, 0x74, 0x83, 0x55, 0x60, 0xb2, 0x75, 0xd0, 0x78, 0xbb, 0xec, 0xe1, 0x14, 0x6b, 0x81, 0x0f, 0x9b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x0f, 0x9b, 0x1b, 0xc0, 0x2f, 0x4c, 0x4e, 0x2e, 0x2c, 0x0f, 0x24, 0x6c, 0x0e, 0x64, 0xae, 0x8c, 0x6e, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x7f, 0x2e, 0x0d, 0x1e, 0x1e, 0xc4, 0x68, 0xd5, 0xd7, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xdf, 0xca, 0xaf, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x28, 0x77, 0xde, 0x37, 0x28, 0x9b, 0xde, 0xd7, 0xa0, 0x10, 0x4c, 0xdd, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x11, 0xdf, 0xd7, 0x20, 0x80, 0xce, 0x0e, 0x8e, 0x71, 0x0a, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x3f, 0x4a, 0xea, 0xf0, 0xd0, 0x4f, 0x87, 0x53, 0x6c, 0x0d, 0xa2, 0x8d, 0xeb, 0x6b, 0xc3, 0xf3, 0x24, 0x1b, 0x44, 0x24, 0xf6, 0xd7, 0x06, 0x85, 0x72, 0xe7, 0x06, 0x91, 0x4a, 0xf5, 0xb5, 0xe1, 0x17, 0xa5, 0x0d, 0x22, 0x4c, 0xfb, 0x6b, 0x83, 0x12, 0x1e, 0x73, 0x83, 0xc8, 0xe7, 0xfe, 0xda, 0x20, 0x3c, 0x55, 0x37, 0x08, 0xd2, 0xd3, 0x0d, 0xe2, 0x35, 0xeb, 0x6b, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x98, 0x8e, 0x1d, 0xc4, 0x16, 0x4d, 0xd8, 0x06, 0xa5, 0x84, 0xf8, 0x1a, 0x2e, 0xa9, 0x0d, 0x8a, 0x1a, 0xf1, 0x35, 0x88, 0xd7, 0xac, 0xaf, 0x0d, 0x9f, 0xbb, 0xac, 0x61, 0xe2, 0x36, 0x68, 0xee, 0x1b, 0xf7, 0x20, 0x4c, 0xc7, 0x0e, 0x22, 0x2f, 0xeb, 0xab, 0x0d, 0x4a, 0x78, 0xcc, 0x05, 0xa7, 0x0f, 0xe2, 0x35, 0xeb, 0x6b, 0x0d, 0x8a, 0x01, 0xd9, 0x0d, 0xe2, 0x2d, 0xfc, 0x6b, 0x83, 0xf0, 0x54, 0xdd, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0xb9, 0x6f, 0xdc, 0x83, 0x78, 0xcd, 0xfa, 0x3a, 0x88, 0x2f, 0xef, 0xaf, 0x0d, 0xbf, 0xb8, 0x6c, 0x10, 0xe9, 0x79, 0x61, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x33, 0x5c, 0x5f, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x6a, 0xf1, 0xc2, 0xda, 0x20, 0x72, 0xc2, 0xbf, 0xaa, 0xd5, 0x20, 0x32, 0x2c, 0xc2, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x22, 0xc3, 0x22, 0xac, 0x83, 0xe8, 0x95, 0x08, 0xdb, 0xa0, 0x50, 0xee, 0xdc, 0x20, 0xee, 0xfd, 0xbe, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0x9c, 0xbe, 0x7f, 0x6d, 0x10, 0xa4, 0xa7, 0x1b, 0x34, 0xf3, 0x14, 0xbb, 0x06, 0x51, 0x2f, 0x13, 0xb6, 0x41, 0x29, 0x21, 0xbe, 0x41, 0xd4, 0xd4, 0x84, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x74, 0x65, 0xee, 0x1a, 0x2c, 0xa9, 0x5f, 0xda, 0x20, 0x96, 0x73, 0xc2, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xe4, 0xeb, 0x84, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xa2, 0x5c, 0xfe, 0x6b, 0x83, 0xa8, 0xbf, 0x09, 0xab, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x62, 0x89, 0x27, 0x6c, 0x0d, 0x6f, 0xeb, 0x1c, 0x44, 0x3f, 0xfd, 0xd7, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0x30, 0xc2, 0xb0, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xef, 0x8a, 0xb0, 0x83, 0x78, 0xf7, 0x09, 0x3b, 0x88, 0xd2, 0xf9, 0xaf, 0x5a, 0x81, 0x27, 0xab, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x83, 0x27, 0xab, 0x1b, 0xc0, 0x6b, 0xae, 0x6c, 0xec, 0xcd, 0x8d, 0x0c, 0x84, 0x2c, 0x8c, 0xae, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x6f, 0xe5, 0xd7, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0x1c, 0xb5, 0x53, 0x07, 0x51, 0x56, 0xfe, 0x75, 0x10, 0xab, 0xe6, 0x5f, 0x87, 0x53, 0xec, 0x20, 0xbe, 0xc3, 0xbf, 0x36, 0x88, 0xa7, 0xf3, 0xaf, 0x59, 0x83, 0x78, 0x5c, 0xfe, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x71, 0xdd, 0xfe, 0xb5, 0x41, 0xa1, 0xdc, 0xb9, 0x41, 0xdc, 0xfb, 0x7d, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x38, 0x7d, 0xff, 0xda, 0x20, 0x48, 0x4f, 0x37, 0x68, 0xe6, 0x29, 0x76, 0x0d, 0xa2, 0x5e, 0x26, 0x6c, 0x83, 0x52, 0x42, 0x7c, 0x83, 0xa8, 0xa9, 0x09, 0xdb, 0xa0, 0x20, 0x8d, 0x1d, 0xf0, 0xe8, 0xca, 0xdc, 0x35, 0x58, 0x52, 0xbf, 0xb4, 0x41, 0x2c, 0xe7, 0x84, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xc8, 0xd7, 0x09, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0xd0, 0xde, 0x5a, 0xd6, 0x41, 0x94, 0xcd, 0x7f, 0x1d, 0x44, 0xdf, 0x60, 0x58, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xc4, 0x12, 0x4f, 0xd8, 0x06, 0x11, 0x46, 0x18, 0xb6, 0xe1, 0x17, 0x97, 0x0d, 0x22, 0x8c, 0x30, 0x6c, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0xa2, 0x6a, 0xf9, 0xeb, 0x20, 0xde, 0x7d, 0xc2, 0x0e, 0xa2, 0x74, 0xfe, 0xab, 0x66, 0x81, 0x1f, 0x4b, 0x37, 0x3c, 0x4f, 0xb2, 0x41, 0xfc, 0xe1, 0x7f, 0x6d, 0x50, 0x28, 0x77, 0x6e, 0x10, 0x79, 0x9f, 0x5f, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x76, 0x7c, 0xbe, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0xd9, 0xd0, 0x65, 0x83, 0x88, 0x0e, 0x0a, 0xeb, 0x70, 0x8a, 0x2d, 0xf0, 0x6f, 0xed, 0x86, 0xe7, 0x49, 0x36, 0x88, 0xeb, 0xfd, 0xaf, 0x0d, 0x0a, 0xe5, 0xce, 0x0d, 0x62, 0x97, 0xf2, 0x6b, 0xc3, 0x2f, 0x4a, 0x1b, 0xc4, 0x8e, 0xcf, 0xd7, 0x06, 0x05, 0x1f, 0xe6, 0x06, 0xb1, 0x8a, 0xfc, 0x75, 0x10, 0xfb, 0xff, 0x5f, 0xb3, 0xc0, 0xcf, 0x91, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0xc1, 0xcf, 0x91, 0x0d, 0xc0, 0xc7, 0x1c, 0x9d, 0x5c, 0x9a, 0xdb, 0x19, 0x08, 0x50, 0x1d, 0x19, 0x48, 0xd8, 0x1c, 0x08, 0x59, 0x18, 0x5d, 0xd9, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x1d, 0x9f, 0xaf, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xe4, 0x6b, 0xdd, 0xa0, 0xe0, 0xc3, 0x5c, 0x83, 0x62, 0x12, 0x73, 0x83, 0x25, 0x31, 0x81, 0x1b, 0x87, 0x0e, 0xda, 0x49, 0x1f, 0xdb, 0xf0, 0xf5, 0xcb, 0x1a, 0x7e, 0x84, 0x39, 0x78, 0xef, 0x13, 0xcd, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0xb3, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0xec, 0xa0, 0x6f, 0x10, 0x45, 0x41, 0x5f, 0x07, 0x0b, 0xfd, 0x5b, 0x57, 0xe0, 0xc3, 0xe4, 0x0d, 0xcf, 0x93, 0x6c, 0x10, 0x07, 0x02, 0x60, 0x1b, 0x14, 0xca, 0x9d, 0x1b, 0xc4, 0x2e, 0xe5, 0xd7, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x1d, 0x9f, 0xaf, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x10, 0x52, 0x26, 0x6b, 0x10, 0x40, 0x67, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xd6, 0x2e, 0xbf, 0x0e, 0xe2, 0xa1, 0x21, 0xac, 0x0d, 0x0a, 0x3e, 0xcc, 0x0d, 0x62, 0xdf, 0xea, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x48, 0xd5, 0x1b, 0x44, 0x51, 0xd0, 0xd7, 0x41, 0x9c, 0x5d, 0x7e, 0xcd, 0x02, 0x3f, 0xf7, 0x6e, 0x78, 0x9e, 0x64, 0x83, 0xc8, 0x55, 0x00, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0xb1, 0xe3, 0xf3, 0xb5, 0x41, 0xc1, 0x87, 0xb9, 0x41, 0x0c, 0xfd, 0x7c, 0x1d, 0x44, 0x51, 0xd0, 0xd7, 0x41, 0x64, 0x50, 0x80, 0x75, 0x38, 0xc5, 0x0e, 0xa7, 0x58, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x2d, 0xe0, 0x8f, 0xb1, 0xbd, 0xe5, 0x1b, 0xac, 0xc2, 0x72, 0xda, 0x20, 0xaa, 0x98, 0x97, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0xf8, 0xdd, 0xca, 0xee, 0x5a, 0xc8, 0xca, 0xe6, 0xd6, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x9b, 0xf1, 0x42, 0x0e, 0x1e, 0x85, 0x17, 0xb2, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x3f, 0xd3, 0xd2, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xd9, 0x84, 0xb9, 0xc1, 0x4b, 0x2f, 0xf5, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x3c, 0x66, 0x69, 0x6c, 0x65, 0xf3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x89, 0x58, 0xbf, 0xc1, 0x19, 0x09, 0x75, 0x83, 0xd7, 0xd1, 0xd9, 0xd5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xcd, 0xfa, 0xba, 0x86, 0x37, 0xee, 0x0e, 0xde, 0xc8, 0x30, 0xb8, 0xc1, 0xa3, 0xba, 0x0a, 0xd7, 0x60, 0x15, 0x98, 0xec, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0xf4, 0xa8, 0xd0, 0x1a, 0xde, 0xd6, 0x39, 0x78, 0x06, 0xa6, 0x5e, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x12, 0x37, 0x6a, 0x37, 0x28, 0x9b, 0xea, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x71, 0xd3, 0x1a, 0x56, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0xd8, 0x3f, 0xeb, 0x20, 0x7a, 0xd6, 0xc2, 0x6a, 0x0d, 0x0a, 0xc1, 0xd4, 0x83, 0xa7, 0x53, 0xf3, 0x75, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x0a, 0xf0, 0xdc, 0xa5, 0xc9, 0x95, 0x91, 0x1b, 0xa4, 0x5e, 0x14, 0x6f, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0xf8, 0x64, 0x72, 0x61, 0xf9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x2c, 0xd9, 0x86, 0x35, 0x00, 0x1f, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x70, 0x61, 0x74, 0x68, 0x1b, 0x1c, 0x6d, 0xf8, 0xd6, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0x70, 0xc3, 0xe7, 0x4a, 0x1b, 0x9c, 0x37, 0x4f, 0x37, 0x58, 0x2f, 0xe8, 0xdb, 0x41, 0x39, 0x8e, 0xbf, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xc1, 0x85, 0x99, 0x6d, 0x70, 0xe8, 0xb4, 0x6c, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x97, 0xd4, 0x06, 0x45, 0x8d, 0xf8, 0x1a, 0x3e, 0x0f, 0xda, 0xf0, 0x17, 0xcd, 0x1a, 0x2c, 0x23, 0xb0, 0xda, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xe8, 0xea, 0xe0, 0x36, 0x28, 0xd1, 0xf3, 0x0f, 0x1a, 0x34, 0xc7, 0x3c, 0xbc, 0x17, 0xd4, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xc5, 0x91, 0xfe, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc9, 0x4d, 0xdf, 0xa0, 0x44, 0xcf, 0x3f, 0xbc, 0x85, 0x76, 0x50, 0xd6, 0x79, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x24, 0x37, 0xfd, 0x20, 0x3a, 0x0a, 0xa1, 0xd6, 0xf0, 0x17, 0xcd, 0x1a, 0x2c, 0x23, 0xb0, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x51, 0xb7, 0x1b, 0x76, 0xd0, 0xa0, 0x39, 0xe6, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x94, 0xd6, 0xea, 0xa0, 0x15, 0x0d, 0xef, 0x36, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0xb9, 0xcb, 0x80, 0x07, 0x17, 0x66, 0x6e, 0x50, 0x28, 0x77, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xc3, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x50, 0x71, 0x69, 0x83, 0x12, 0x1e, 0x73, 0xc3, 0x83, 0x3b, 0x6b, 0xf8, 0xa8, 0xfd, 0x20, 0x04, 0x1f, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0x73, 0xa5, 0x35, 0x08, 0xfd, 0x92, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0x37, 0xb2, 0xb7, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x72, 0x61, 0x69, 0x64, 0x6b, 0xb0, 0x8c, 0xc0, 0x6a, 0xc3, 0x25, 0xb5, 0x41, 0xe9, 0xfc, 0xbe, 0x06, 0x45, 0x8d, 0xf8, 0xc1, 0x5a, 0x2a, 0xbb, 0x5a, 0x83, 0x65, 0x04, 0x56, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x51, 0x5a, 0xab, 0x83, 0x06, 0xcd, 0x31, 0xdb, 0xf0, 0xb9, 0xcb, 0x80, 0x47, 0x57, 0x07, 0x6f, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x16, 0x64, 0xa7, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x83, 0xf5, 0x82, 0xbe, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x3e, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x28, 0x3c, 0x0e, 0x3b, 0x3c, 0xf4, 0xb3, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xf3, 0xa0, 0x0d, 0x4f, 0xef, 0x6c, 0xf8, 0xa8, 0x7d, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x77, 0x7e, 0xc3, 0x3f, 0x3c, 0xad, 0x41, 0xe8, 0x97, 0x6c, 0xd0, 0x28, 0xad, 0xd5, 0x1a, 0x2c, 0x23, 0xb0, 0x3a, 0x28, 0xe1, 0x68, 0xd7, 0x60, 0x19, 0x81, 0xd5, 0x41, 0x29, 0x4e, 0x5b, 0xab, 0x41, 0xec, 0x21, 0x87, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0x1e, 0x72, 0x58, 0x03, 0xf0, 0x40, 0x56, 0xd6, 0x16, 0xe6, 0x46, 0x06, 0x02, 0x17, 0x46, 0x87, 0x06, 0xf2, 0x46, 0xf6, 0x26, 0x37, 0xb7, 0xc1, 0xd1, 0x86, 0x6f, 0x0d, 0x0a, 0xe5, 0xce, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0xce, 0x48, 0xa8, 0x6b, 0xf8, 0x73, 0x69, 0x70, 0xf1, 0x20, 0xfa, 0x73, 0xc3, 0xda, 0x60, 0xa5, 0x8b, 0xd3, 0x02, 0x9e, 0xd9, 0xdb, 0xd9, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x7e, 0x8f, 0xc3, 0x0e, 0x92, 0xb9, 0x86, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x28, 0xde, 0x69, 0xd7, 0xf0, 0x17, 0xcd, 0x1a, 0xfe, 0x9d, 0xdf, 0x20, 0x86, 0xac, 0xc3, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x71, 0xbd, 0x11, 0xb6, 0x41, 0x09, 0x47, 0x7b, 0xb0, 0xa4, 0xd3, 0x77, 0xc3, 0x2f, 0x2e, 0x1b, 0x44, 0xf6, 0x75, 0xd8, 0x06, 0xf1, 0x34, 0x1c, 0xd6, 0x86, 0xcf, 0x5d, 0x06, 0xbc, 0x37, 0xb2, 0x77, 0x83, 0x42, 0xb9, 0x73, 0x83, 0x05, 0xd9, 0xa9, 0x1b, 0x7e, 0x51, 0xda, 0xa0, 0x00, 0xef, 0xdc, 0xe0, 0x68, 0xc3, 0xb7, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0x9e, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x20, 0x66, 0x61, 0x63, 0x65, 0x1b, 0x2e, 0xa9, 0x0d, 0x0f, 0xee, 0xac, 0xc1, 0x59, 0xfd, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0x9e, 0x99, 0x3c, 0xbc, 0x85, 0xd6, 0x06, 0x27, 0x07, 0xb9, 0x0d, 0x0f, 0xee, 0x6c, 0xf8, 0xa1, 0x66, 0x0d, 0xd6, 0xce, 0xec, 0x1d, 0x1c, 0x07, 0x60, 0xd7, 0xe0, 0x94, 0xd6, 0x7a, 0x70, 0xe4, 0x6b, 0x5d, 0x83, 0xc3, 0x65, 0xeb, 0xc1, 0x49, 0xb5, 0x75, 0x0d, 0x8e, 0xfa, 0x26, 0x1b, 0xbe, 0xa8, 0xd9, 0x50, 0xc7, 0xc3, 0xcd, 0x35, 0x38, 0x8f, 0xb7, 0x1e, 0x1c, 0xee, 0x5b, 0xd7, 0xe0, 0x18, 0xe1, 0x7a, 0x70, 0x26, 0x71, 0x5d, 0x83, 0x33, 0xa7, 0xeb, 0xc1, 0xb1, 0xd5, 0x75, 0x0d, 0x12, 0xc2, 0x8c, 0x0e, 0x8e, 0x42, 0x27, 0x6b, 0x70, 0x74, 0x59, 0x3d, 0x38, 0x07, 0xad, 0xae, 0xc1, 0x19, 0x60, 0xf5, 0xe0, 0x40, 0xb1, 0xba, 0x06, 0xc7, 0xbe, 0xd5, 0x83, 0x33, 0xe4, 0xea, 0x1a, 0x9c, 0x56, 0x57, 0x0f, 0x8e, 0x2d, 0xa5, 0x6b, 0x70, 0x6c, 0x5e, 0x3d, 0x38, 0x83, 0xaf, 0xae, 0xc1, 0x69, 0x7f, 0xf5, 0xe0, 0xe8, 0xc0, 0xba, 0x06, 0x4b, 0x62, 0x02, 0x0f, 0x8e, 0x27, 0x27, 0x6b, 0x70, 0xfa, 0x71, 0x3d, 0x38, 0xcf, 0x8e, 0xae, 0xc1, 0x31, 0xcf, 0xf5, 0xe0, 0xa8, 0x0d, 0xba, 0x06, 0xeb, 0x23, 0xd2, 0x0f, 0xce, 0x9b, 0xa7, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x80, 0x77, 0xec, 0xcd, 0x8d, 0x2e, 0x2c, 0xcd, 0xdd, 0x20, 0xf5, 0xa2, 0x78, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x80, 0x5f, 0x2c, 0xaf, 0x65, 0x8c, 0xed, 0x6d, 0x6c, 0xdd, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x70, 0xf5, 0xb0, 0x06, 0xc0, 0xff, 0x34, 0x37, 0xba, 0x32, 0x39, 0xb3, 0xb0, 0xb1, 0x32, 0x90, 0xb1, 0x37, 0xb9, 0x32, 0x10, 0xb3, 0x37, 0x39, 0x90, 0x30, 0x90, 0xb1, 0xb0, 0x31, 0xb4, 0x32, 0x90, 0xba, 0xb9, 0x34, 0xb7, 0x33, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0x31, 0xb6, 0xb7, 0xb1, 0x35, 0x10, 0xb9, 0x32, 0x38, 0xb6, 0xb0, 0xb1, 0xb2, 0xb6, 0x32, 0x37, 0x3a, 0x90, 0x30, 0xb6, 0xb3, 0x37, 0xb9, 0x34, 0x3a, 0xb4, 0x76, 0x25, 0x00, 0xde, 0x80, 0x92, 0x2b, 0x9b, 0x2b, 0x73, 0xa3, 0x9b, 0x03, 0x09, 0x73, 0x03, 0x49, 0x73, 0xa3, 0x2b, 0x93, 0x33, 0x0b, 0x1b, 0x2b, 0x03, 0x31, 0x7b, 0x93, 0x03, 0x09, 0x03, 0x69, 0x0b, 0x83, 0x83, 0x4b, 0x73, 0x3b, 0x63, 0x01, 0x11, 0xab, 0xa3, 0x03, 0x99, 0x7b, 0x6b, 0x2b, 0xbb, 0x43, 0x0b, 0xa3, 0x03, 0x99, 0x83, 0x2b, 0x1b, 0x4b, 0x0b, 0x63, 0x4b, 0xd3, 0x2b, 0x23, 0x63, 0x01, 0x09, 0x73, 0x23, 0x03, 0xb9, 0x4b, 0xa3, 0x43, 0x97, 0x00, 0x78, 0x63, 0x8e, 0x2e, 0x8c, 0xae, 0xcc, 0xac, 0x8e, 0x0d, 0x24, 0x6c, 0x6c, 0xac, 0x6c, 0x6e, 0xee, 0x4d, 0x6e, 0xce, 0x05, 0x84, 0x0a, 0xad, 0x0c, 0x64, 0x8c, 0xed, 0x6d, 0x6c, 0xed, 0x64, 0x0e, 0x44, 0x87, 0xac, 0x0c, 0x8e, 0x0e, 0x0d, 0x04, 0x2e, 0x4c, 0x2e, 0xac, 0xad, 0x8c, 0xae, 0x4c, 0x0e, 0x24, 0x6d, 0x0e, 0xa4, 0x6e, 0xae, 0x8c, 0x0c, 0x24, 0x6c, 0x0e, 0x84, 0x0e, 0xad, 0x0c, 0xa4, 0x2d, 0x0c, 0x2f, 0xad, 0xad, 0xae, 0x5d, 0x02, 0xe0, 0x13, 0x33, 0xb9, 0xb2, 0x39, 0x34, 0xb7, 0xb2, 0xb9, 0x39, 0x10, 0x3a, 0xb4, 0x30, 0x3a, 0x90, 0x30, 0x37, 0x90, 0x32, 0x37, 0x3a, 0xb9, 0x3c, 0x90, 0xb1, 0x30, 0x37, 0x10, 0xb4, 0x30, 0xbb, 0x32, 0x17, 0x10, 0x2a, 0xb4, 0x32, 0x90, 0x39, 0xba, 0x30, 0x37, 0xb2, 0x30, 0x39, 0x32, 0x90, 0x31, 0xb6, 0xb7, 0xb1, 0x35, 0x90, 0x30, 0xb6, 0xb3, 0x37, 0xb9, 0x34, 0x3a, 0xb4, 0x36, 0x10, 0xb4, 0xb0, 0x39, 0x90, 0x30, 0x10, 0xb2, 0x32, 0x38, 0x3a, 0x74, 0x09, 0x80, 0x37, 0xde, 0xcc, 0x40, 0x62, 0x58, 0x40, 0xda, 0xca, 0xc2, 0xdc, 0xd2, 0xdc, 0xce, 0x40, 0xe8, 0xd0, 0xc2, 0xe8, 0x40, 0xc2, 0x40, 0xe6, 0xd2, 0xdc, 0xce, 0xd8, 0xca, 0x40, 0xe6, 0xee, 0xca, 0xca, 0xe0, 0x40, 0xde, 0xcc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xc2, 0xe4, 0xda, 0x40, 0xee, 0xd2, 0xd8, 0xd8, 0x40, 0xc8, 0xca, 0xd8, 0xca, 0xe8, 0xca, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0x5c, 0x40, 0x8c, 0xde, 0xe4, 0x25, 0x00, 0xad, 0xdb, 0xde, 0xe4, 0xca, 0x40, 0xe6, 0xc6, 0xc2, 0xdc, 0x40, 0xe4, 0xca, 0xe6, 0xd2, 0xe6, 0xe8, 0xc2, 0xdc, 0xc6, 0xca, 0x58, 0x40, 0x74, 0xc8, 0xca, 0xe0, 0xe8, 0xd0, 0x40, 0xc6, 0xc2, 0xdc, 0x40, 0xc4, 0xca, 0x40, 0xe6, 0xca, 0xe8, 0x40, 0xe8, 0xde, 0x40, 0xc2, 0x40, 0xd0, 0xd2, 0xce, 0xd0, 0xca, 0xe4, 0x40, 0xdc, 0xea, 0xda, 0xc4, 0xca, 0xe4, 0x5c, 0x2b, 0x01, 0xf8, 0x96, 0xe4, 0x46, 0x57, 0x26, 0xe7, 0x16, 0xc6, 0xc6, 0x96, 0xc7, 0x02, 0xa2, 0x33, 0xc6, 0xf6, 0x36, 0xb6, 0x06, 0xd2, 0x16, 0x96, 0xe6, 0x46, 0x17, 0x96, 0xe6, 0x36, 0x07, 0x12, 0x06, 0xa2, 0xc3, 0xf6, 0xf6, 0xb6, 0x56, 0x07, 0x07, 0xf2, 0x66, 0x06, 0x42, 0x97, 0x07, 0x57, 0x2e, 0x01, 0xf0, 0x03, 0x18, 0x4a, 0x5b, 0x18, 0x1c, 0xc8, 0x5a, 0x59, 0x5e, 0x0b, 0x5d, 0x1e, 0x5c, 0x19, 0xc8, 0x96, 0x5d, 0x18, 0x5b, 0x8f, 0x5d, 0x18, 0x5b, 0x0b, 0x5d, 0x1e, 0x5c, 0x19, 0x88, 0x99, 0x5c, 0xd9, 0x1c, 0x5a, 0x0f, 0x50, 0x1d, 0x59, 0x57, 0x0a, 0x18, 0x0b, 0xc8, 0x1d, 0x5a, 0x99, 0x5c, 0x19, 0x88, 0x0e, 0x59, 0x19, 0x1c, 0x1d, 0x9a, 0xcb, 0x18, 0xdb, 0xdb, 0xd8, 0x1a, 0x48, 0xda, 0x1c, 0x08, 0x1d, 0x5a, 0xb9, 0x04, 0xc0, 0x23, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x3a, 0x66, 0x72, 0x65, 0x73, 0x68, 0x2e, 0x20, 0x4c, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x70, 0x20, 0x61, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x69, 0x74, 0x73, 0x20, 0x66, 0x72, 0x65, 0x73, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0xe1, 0x12, 0x80, 0x7e, 0x73, 0x77, 0x65, 0x65, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x61, 0x72, 0x6d, 0x20, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x69, 0x74, 0x73, 0x20, 0x66, 0x72, 0x65, 0x73, 0x68, 0x6e, 0x65, 0x73, 0x73, 0xae, 0x95, 0x00, 0xf8, 0x83, 0x0a, 0xad, 0x0c, 0x64, 0x8c, 0xed, 0x6d, 0x6c, 0x0d, 0x24, 0x4c, 0xae, 0x0d, 0x24, 0x6d, 0x0e, 0x64, 0x8e, 0xee, 0x4d, 0xae, 0x8c, 0x0c, 0x24, 0x6c, 0x0e, 0x44, 0x27, 0xae, 0xae, 0xac, 0xae, 0x8c, 0x05, 0xe4, 0x0e, 0x2d, 0x6d, 0x0c, 0x0d, 0x24, 0x6d, 0x0e, 0x24, 0x0c, 0x04, 0x0c, 0x25, 0xae, 0xac, 0x0e, 0x64, 0xad, 0x2c, 0xaf, 0x85, 0x2e, 0x0f, 0xae, 0x2c, 0x05, 0xcc, 0x05, 0x84, 0x0a, 0xad, 0x0c, 0x04, 0xad, 0x2c, 0x8c, 0x5c, 0x02, 0xe0, 0x8b, 0x37, 0x33, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0xb8, 0xba, 0xb2, 0xba, 0x32, 0x10, 0xb9, 0x32, 0x38, 0xb9, 0xb2, 0xb9, 0x32, 0x37, 0xba, 0x39, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xb8, 0xb7, 0xb9, 0x34, 0xba, 0xb4, 0x37, 0x37, 0x90, 0x37, 0x33, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0x31, 0xb6, 0xb7, 0xb1, 0x35, 0x90, 0x30, 0xb9, 0x36, 0x17, 0x10, 0xa7, 0xb2, 0x3b, 0x90, 0x32, 0x37, 0x3a, 0xb9, 0xb4, 0xb2, 0x39, 0x90, 0x30, 0xb9, 0x72, 0x09, 0xc0, 0xff, 0x34, 0xb7, 0xb9, 0x32, 0x39, 0xba, 0x32, 0x32, 0x90, 0x30, 0x3a, 0x10, 0x3a, 0xb4, 0x32, 0x10, 0xba, 0xb0, 0x34, 0x36, 0x90, 0x37, 0x33, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0xb8, 0xba, 0xb2, 0xba, 0x32, 0x17, 0x90, 0x2b, 0xb4, 0x32, 0x37, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0x31, 0xb6, 0xb7, 0xb1, 0x35, 0x90, 0x30, 0xb9, 0x36, 0x90, 0xb9, 0xbb, 0xb2, 0x32, 0xb8, 0x39, 0x16, 0x90, 0x34, 0x7a, 0x09, 0x80, 0x47, 0xe0, 0xde, 0xe0, 0xe6, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xd0, 0xca, 0xc2, 0xc8, 0x40, 0xde, 0xcc, 0xcc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xe2, 0xea, 0xca, 0xea, 0xca, 0x5c, 0x40, 0x92, 0xcc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0x74, 0xcc, 0xe4, 0xca, 0xe6, 0xd0, 0x40, 0xde, 0xcc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xd0, 0xca, 0xc2, 0xc8, 0x4e, 0xe6, 0x40, 0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0x40, 0xd2, 0xdc, 0x40, 0x74, 0xd8, 0xde, 0xde, 0xd6, 0xea, 0xe0, 0x25, 0x00, 0x3a, 0x49, 0x9b, 0x03, 0x81, 0x61, 0x01, 0x91, 0x2b, 0x6b, 0x7b, 0xb3, 0x2b, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x03, 0x31, 0x93, 0x7b, 0x6b, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x69, 0x0b, 0x83, 0x83, 0x4b, 0x73, 0x3b, 0x03, 0x09, 0x73, 0x23, 0x03, 0x91, 0x2b, 0x83, 0x63, 0x0b, 0x1b, 0x2b, 0x03, 0x49, 0xa3, 0x03, 0xb9, 0x4b, 0xa3, 0x43, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x71, 0x2b, 0xbb, 0x03, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x73, 0x4b, 0x00, 0x7c, 0xf1, 0x44, 0x87, 0x56, 0x26, 0x77, 0x97, 0x36, 0x57, 0xc6, 0x02, 0x42, 0x56, 0x36, 0x26, 0x57, 0xd6, 0x56, 0xe6, 0x46, 0x07, 0x42, 0x87, 0x56, 0x06, 0x52, 0xe6, 0x46, 0x27, 0x97, 0x77, 0x32, 0x07, 0x62, 0x26, 0x57, 0x36, 0x87, 0xe6, 0x56, 0x36, 0x37, 0xc7, 0x02, 0x02, 0x57, 0x47, 0x07, 0x92, 0x46, 0x07, 0x22, 0x16, 0x36, 0xb6, 0x06, 0x12, 0x46, 0x07, 0x42, 0x87, 0x56, 0x06, 0x42, 0x17, 0x96, 0xc6, 0x06, 0xf2, 0x66, 0x2e, 0x01, 0x68, 0x4e, 0x87, 0x56, 0x06, 0x12, 0x57, 0x57, 0x56, 0x57, 0xc6, 0x02, 0x12, 0xe6, 0x46, 0x06, 0x02, 0xf7, 0x06, 0x07, 0x42, 0x87, 0x56, 0x06, 0xe2, 0x56, 0x86, 0x47, 0x07, 0x82, 0x56, 0x16, 0x46, 0x06, 0xf2, 0x66, 0x66, 0x06, 0x42, 0x87, 0x56, 0x06, 0x12, 0x57, 0x57, 0x56, 0x57, 0x06, 0x12, 0xe6, 0x46, 0x06, 0x42, 0x27, 0x97, 0x07, 0x12, 0x76, 0x16, 0x96, 0xe6, 0xe6, 0x5a, 0x09, 0x80, 0x37, 0x86, 0xc2, 0xc6, 0xd0, 0xca, 0x40, 0xca, 0xdc, 0xe8, 0xe4, 0xd2, 0xca, 0xe6, 0x40, 0xda, 0xea, 0xe6, 0xe8, 0x40, 0xc4, 0xca, 0x40, 0xd2, 0xda, 0xda, 0xea, 0xe8, 0xc2, 0xc4, 0xd8, 0xca, 0x74, 0x40, 0xc2, 0x40, 0xd6, 0xca, 0xf2, 0x40, 0xc6, 0xc2, 0xdc, 0xdc, 0xde, 0xe8, 0x40, 0xc4, 0xca, 0x40, 0xde, 0xec, 0xca, 0xe4, 0xee, 0xe4, 0xd2, 0xe8, 0xe8, 0xca, 0xdc, 0x40, 0xee, 0xd2, 0xe8, 0xd0, 0x40, 0xc2, 0x40, 0xdc, 0xca, 0xee, 0x25, 0x00, 0x7e, 0xb0, 0x0b, 0x63, 0xab, 0x2b, 0x73, 0x01, 0xa1, 0x42, 0x4b, 0x9b, 0x03, 0x81, 0x93, 0x7b, 0x83, 0x2b, 0x93, 0xa3, 0xcb, 0x03, 0x49, 0x9b, 0x03, 0x29, 0x73, 0x33, 0x7b, 0x93, 0x1b, 0x2b, 0x23, 0x03, 0x31, 0x7b, 0x93, 0x03, 0x29, 0x73, 0xa3, 0x93, 0x4b, 0x2b, 0x9b, 0x03, 0x19, 0xab, 0x93, 0x93, 0x2b, 0x73, 0xa3, 0x63, 0xcb, 0x03, 0x99, 0xa3, 0x7b, 0x93, 0x2b, 0x23, 0x03, 0x49, 0x73, 0x03, 0xa1, 0x43, 0x2b, 0x97, 0x00, 0xf8, 0x62, 0x2c, 0x6c, 0x0c, 0xad, 0x8c, 0x05, 0x44, 0xac, 0x8e, 0x0e, 0x24, 0x8d, 0x0e, 0x24, 0x6d, 0x0e, 0xc4, 0xed, 0x8d, 0x0e, 0xa4, 0xcc, 0xcd, 0xec, 0x4d, 0x6e, 0xac, 0x8c, 0x0c, 0xc4, 0xec, 0x4d, 0x0e, 0x04, 0x4e, 0xae, 0xcc, 0x2e, 0xed, 0xad, 0x6e, 0x8e, 0x2d, 0x0f, 0x84, 0xac, 0x8c, 0xad, 0x8c, 0xae, 0x8c, 0x0c, 0xa4, 0xcc, 0x8d, 0x4e, 0x2e, 0xad, 0x6c, 0x8e, 0x05, 0x64, 0x2e, 0xcd, 0x6d, 0xac, 0x0c, 0xe4, 0xae, 0x5c, 0x02, 0xd0, 0xdb, 0xed, 0x0d, 0x84, 0xed, 0xcd, 0xed, 0xac, 0x4c, 0x0e, 0x44, 0xae, 0xac, 0xad, 0xac, 0x4d, 0xac, 0x4c, 0x0e, 0xe4, 0x0e, 0x2d, 0x8c, 0x0e, 0x84, 0x0e, 0x2d, 0x8c, 0x0e, 0x64, 0xad, 0x2c, 0xef, 0x64, 0x0e, 0xc4, 0x2e, 0x8c, 0xad, 0xae, 0x0c, 0xe4, 0x2e, 0x6c, 0x0e, 0x64, 0xae, 0x0e, 0x0e, 0xee, 0x6d, 0xae, 0x8c, 0x0c, 0x84, 0xee, 0x0d, 0x44, 0xac, 0xcc, 0xd5, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0x22, 0xa0, 0xf2, 0xe0, 0xd8, 0x3a, 0xb0, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x92, 0x40, 0xe5, 0xc1, 0xb1, 0x75, 0xa0, 0x0d, 0xca, 0x32, 0xec, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0xcb, 0xe9, 0x29, 0x37, 0x08, 0xfd, 0x92, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0xcb, 0xe9, 0x29, 0xdb, 0xe0, 0x31, 0x11, 0x95, 0x1b, 0xbc, 0x4a, 0xa3, 0xb2, 0x59, 0x66, 0x01, 0x9e, 0x32, 0xbb, 0xb4, 0x31, 0x7a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xaa, 0x98, 0xc4, 0x1a, 0x80, 0x6f, 0xb9, 0xb2, 0xb6, 0x37, 0xbb, 0x32, 0x90, 0x30, 0x37, 0x90, 0x32, 0x37, 0x3a, 0xb9, 0x3c, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x10, 0x3a, 0xb4, 0x32, 0x90, 0xb1, 0xb0, 0x31, 0xb4, 0xb2, 0x0d, 0x5f, 0xbf, 0x6c, 0x10, 0x15, 0x4b, 0x62, 0x1b, 0x14, 0x7d, 0xba, 0x6b, 0xf0, 0x7c, 0x97, 0xca, 0x83, 0x58, 0x5a, 0x12, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0x59, 0xc3, 0xdb, 0x3a, 0x07, 0x71, 0x08, 0x25, 0xd6, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0xfd, 0xb2, 0x41, 0x54, 0x2c, 0x89, 0x6d, 0x50, 0x74, 0xd0, 0x0e, 0xf0, 0xbe, 0xb1, 0x91, 0xb5, 0xac, 0x95, 0xe5, 0x6b, 0xf0, 0xf0, 0x91, 0xca, 0x83, 0x58, 0x5a, 0x12, 0x5b, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xc2, 0x4d, 0x74, 0x83, 0xf3, 0x30, 0xc8, 0x1a, 0xde, 0xd6, 0x39, 0x88, 0xcb, 0x29, 0xb1, 0x36, 0x28, 0x48, 0x63, 0x07, 0xf0, 0x78, 0x63, 0x23, 0x6b, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0xb4, 0xb7, 0x96, 0xb5, 0x41, 0xd9, 0x54, 0xbf, 0x86, 0xb7, 0x75, 0x36, 0x78, 0x2b, 0x42, 0xe5, 0x41, 0x2c, 0x2d, 0x89, 0xb5, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x85, 0x29, 0xb1, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x86, 0xb7, 0x75, 0x36, 0x78, 0x7a, 0x47, 0xe5, 0x06, 0x91, 0x5b, 0x25, 0xd6, 0x1a, 0x2e, 0xa9, 0x0d, 0x62, 0x69, 0x49, 0x6c, 0x35, 0x78, 0x2b, 0x42, 0x65, 0x1b, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xc3, 0xe9, 0xc5, 0x41, 0xac, 0x5c, 0x89, 0x1d, 0xc4, 0x0e, 0x96, 0x58, 0x1b, 0xac, 0x42, 0x52, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x94, 0x5e, 0x89, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xca, 0x16, 0xd4, 0x83, 0x58, 0xb9, 0x12, 0xdb, 0x20, 0x7e, 0xb0, 0xc4, 0xd6, 0x70, 0x49, 0x6d, 0x10, 0xef, 0x59, 0x62, 0xab, 0xc1, 0xd3, 0x3b, 0x2a, 0xdb, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0x36, 0x88, 0xb7, 0x2c, 0xb1, 0x6a, 0x0d, 0xe2, 0x72, 0x4a, 0x6c, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x50, 0xb6, 0xa0, 0x1e, 0x44, 0x2b, 0x95, 0xd8, 0x41, 0xec, 0x60, 0x89, 0xb5, 0x1a, 0x8c, 0x34, 0xf7, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xa0, 0x1c, 0xeb, 0x1c, 0x00, 0x2f, 0xc3, 0xc8, 0xc8, 0x40, 0xc2, 0x40, 0xdc, 0xca, 0xee, 0x40, 0xc6, 0xc2, 0xc6, 0xd0, 0xca, 0x40, 0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0x58, 0x40, 0xe0, 0xde, 0xe6, 0xe6, 0xd2, 0xc4, 0xd8, 0xf2, 0x40, 0xe4, 0xca, 0xda, 0xde, 0xec, 0xd2, 0xdc, 0xce, 0x40, 0xc2, 0xdc, 0x40, 0xde, 0xd8, 0xc8, 0x40, 0xde, 0xdc, 0xca, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x45, 0xeb, 0xc9, 0xc1, 0x63, 0x22, 0x2a, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x67, 0x93, 0xab, 0x83, 0x57, 0x69, 0x54, 0xb6, 0xe1, 0xeb, 0x97, 0x0d, 0xa2, 0x62, 0x49, 0x6c, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0xc3, 0x83, 0x37, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0xd5, 0x34, 0x95, 0x07, 0xb1, 0xb4, 0x24, 0xb6, 0x41, 0x54, 0x2c, 0x89, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0xf0, 0x97, 0xe1, 0xa5, 0xcd, 0xd1, 0xa5, 0xb9, 0x9d, 0x1b, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xc2, 0x4d, 0xf4, 0x20, 0x56, 0xae, 0xc4, 0x0e, 0x4e, 0xe0, 0x6c, 0x1b, 0x14, 0x03, 0xb2, 0x1b, 0xbe, 0x9c, 0x5c, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0xb0, 0x2c, 0x98, 0x70, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0x4d, 0xae, 0x06, 0xaf, 0x37, 0x88, 0x4d, 0x35, 0xb1, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x78, 0xcd, 0xe4, 0xca, 0xe6, 0xd0, 0xca, 0xdc, 0x0e, 0x4e, 0xe0, 0x6c, 0x1b, 0x1c, 0xc7, 0x26, 0x36, 0x88, 0xa5, 0x25, 0xb1, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x4c, 0xa4, 0x89, 0x1d, 0x44, 0x63, 0x94, 0xd8, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xaa, 0x98, 0xc4, 0xda, 0x60, 0x15, 0x92, 0xd2, 0x06, 0xb1, 0xb4, 0x24, 0xb6, 0x06, 0xef, 0xd2, 0xfd, 0xdd, 0xf0, 0x71, 0xd4, 0x41, 0x34, 0x46, 0x89, 0xad, 0x41, 0x14, 0x6b, 0x89, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x08, 0xeb, 0x12, 0xdb, 0xe0, 0xd0, 0xda, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x16, 0x4c, 0x78, 0x50, 0x10, 0x8f, 0xb7, 0x1a, 0x3c, 0x7c, 0xa4, 0xb2, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x97, 0x60, 0x62, 0x07, 0x27, 0x70, 0xb6, 0x0e, 0xa7, 0xd8, 0x1a, 0x44, 0xc2, 0x9b, 0xd8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x24, 0xbc, 0x89, 0x35, 0x00, 0x3e, 0xa5, 0xb9, 0x8d, 0xc9, 0x95, 0xb5, 0x95, 0xb9, 0xd1, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0xc0, 0xc9, 0xbd, 0xd1, 0x95, 0x8d, 0xd1, 0xa5, 0xbd, 0xb9, 0x81, 0xb0, 0x95, 0xd9, 0x95, 0xb1, 0x81, 0xbc, 0xb9, 0x81, 0x84, 0xb9, 0x81, 0x94, 0xb9, 0xd1, 0xc9, 0xe5, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x48, 0x33, 0x13, 0xdb, 0xf0, 0xf5, 0xcb, 0x06, 0x51, 0xb1, 0x24, 0xb6, 0xc1, 0x2a, 0x24, 0xa5, 0x0d, 0x62, 0x69, 0x49, 0x6c, 0x0d, 0xa2, 0x58, 0x4b, 0x6c, 0x83, 0xa2, 0xd3, 0x78, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x5a, 0x4e, 0xee, 0x3d, 0x88, 0x95, 0x2b, 0xb1, 0x0d, 0x0e, 0xad, 0x5d, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x3c, 0x67, 0xfa, 0x71, 0xc3, 0xe7, 0x4a, 0x1b, 0x44, 0xca, 0x99, 0xd8, 0x1a, 0xfe, 0x5c, 0xda, 0xe0, 0xe9, 0x1d, 0x95, 0x07, 0x65, 0x96, 0x6e, 0x1b, 0x2e, 0xa9, 0x35, 0x78, 0xce, 0xf4, 0x63, 0x6b, 0x10, 0xfb, 0x5e, 0x62, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x5d, 0x62, 0x6c, 0x0d, 0x1f, 0x47, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0xa7, 0x77, 0x54, 0x1e, 0x44, 0xed, 0x9f, 0xd8, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x5d, 0xd8, 0xf9, 0x41, 0x2c, 0x2d, 0x89, 0x55, 0x2b, 0xc0, 0x27, 0x57, 0x36, 0x97, 0xa6, 0x57, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0xab, 0xa0, 0x58, 0x03, 0xe0, 0xe7, 0x18, 0x5a, 0x98, 0xdb, 0x59, 0xd9, 0x1c, 0x08, 0x1d, 0x5a, 0x19, 0x48, 0x5b, 0x18, 0x5e, 0x5a, 0x5b, 0x5d, 0x1b, 0xc8, 0x5c, 0x9a, 0x5e, 0x19, 0x0b, 0x88, 0x5c, 0x59, 0xdb, 0x9b, 0x5d, 0x9a, 0xdb, 0x19, 0x48, 0x99, 0x1b, 0x9d, 0x5c, 0x5a, 0xd9, 0x1c, 0x48, 0x9a, 0x19, 0x88, 0x5b, 0x59, 0x19, 0x59, 0x19, 0xd9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x00, 0xaf, 0x5b, 0xd9, 0x5d, 0x4b, 0x5b, 0x18, 0x7e, 0x50, 0x66, 0xe9, 0x6e, 0xf8, 0xfa, 0x65, 0x83, 0xa8, 0x58, 0x12, 0xdb, 0xa0, 0xe8, 0xd3, 0xdd, 0x20, 0x92, 0xd2, 0xc4, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x31, 0x80, 0x28, 0xd6, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x69, 0xd8, 0x4a, 0x1b, 0x44, 0x76, 0xa2, 0xd8, 0x41, 0x24, 0x46, 0x89, 0x6d, 0x10, 0x15, 0x4b, 0x62, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xac, 0xb6, 0xa2, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0x68, 0x8c, 0x12, 0xdb, 0x20, 0xb2, 0x13, 0xc5, 0x6a, 0xd6, 0x60, 0xb5, 0x15, 0xdd, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0xb0, 0x9a, 0x8b, 0x6e, 0x00, 0xfc, 0x90, 0x2b, 0x6b, 0x7b, 0xb3, 0x2b, 0x03, 0xd1, 0x19, 0x7b, 0xab, 0x73, 0xa3, 0x03, 0x29, 0x73, 0xa3, 0x93, 0x4b, 0x2b, 0x9b, 0x03, 0x31, 0x93, 0x7b, 0x6b, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x19, 0x0b, 0x1b, 0x43, 0x2b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xe0, 0x19, 0x7b, 0xab, 0x73, 0xa3, 0x0f, 0xca, 0x2c, 0xdd, 0x0d, 0x5f, 0xbf, 0x6c, 0x10, 0x15, 0x4b, 0x62, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0xb6, 0xce, 0x06, 0xd1, 0x19, 0x29, 0xd6, 0x06, 0x51, 0xb1, 0x24, 0xb6, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x7c, 0x4e, 0x8a, 0x6d, 0x78, 0xb7, 0x67, 0xc3, 0x6b, 0x3e, 0x1b, 0x44, 0xda, 0xa4, 0x58, 0x6b, 0x10, 0x4b, 0x4b, 0x62, 0x07, 0x31, 0x13, 0x27, 0xd6, 0xe1, 0x14, 0x5b, 0x80, 0x07, 0xae, 0x4e, 0xee, 0xac, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x38, 0x4b, 0xb1, 0x06, 0xe0, 0x51, 0xae, 0xac, 0xed, 0xcd, 0xae, 0x6c, 0x0e, 0x24, 0x8c, 0x8d, 0x0d, 0x64, 0x2c, 0x6c, 0x0c, 0xad, 0x0c, 0xa4, 0xcc, 0x8d, 0x4e, 0x2e, 0xad, 0x6c, 0x6e, 0xc3, 0xd7, 0x2f, 0x1b, 0x44, 0xc5, 0x92, 0xd8, 0x06, 0xab, 0x90, 0x94, 0x36, 0x88, 0xa5, 0x25, 0xb1, 0x35, 0x88, 0x62, 0x2d, 0xb1, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x62, 0x9e, 0x4e, 0xec, 0xa0, 0xa0, 0xc8, 0x5c, 0x83, 0x77, 0xe9, 0xfe, 0x1e, 0x1e, 0xbc, 0x69, 0xd6, 0xa0, 0x44, 0x68, 0xd9, 0xf0, 0x8b, 0xd2, 0x06, 0x91, 0x66, 0x26, 0xb6, 0xe1, 0x2f, 0x9a, 0x35, 0x7c, 0xae, 0xb4, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xd9, 0x84, 0x79, 0x10, 0xe3, 0x4b, 0x62, 0x6b, 0x10, 0x40, 0x67, 0x07, 0x51, 0xb1, 0x24, 0xd6, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x00, 0x1e, 0x6d, 0x61, 0x79, 0x62, 0x65, 0x2d, 0x67, 0x6f, 0xf4, 0x41, 0xcc, 0xac, 0x89, 0x6d, 0x50, 0xc2, 0x63, 0xae, 0x41, 0x0c, 0x7d, 0x8a, 0xb5, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x28, 0x32, 0x37, 0x88, 0x8a, 0x25, 0xb1, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x88, 0xa5, 0x25, 0xb1, 0x0d, 0xa2, 0xd2, 0x4d, 0x6c, 0xc3, 0x2f, 0x2e, 0x6b, 0x70, 0x0c, 0x37, 0xd8, 0xf0, 0xb6, 0xce, 0x06, 0x67, 0x93, 0xab, 0xc1, 0xeb, 0x83, 0xd8, 0x03, 0x15, 0x3b, 0x88, 0xa2, 0x50, 0xb1, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x56, 0x00, 0x6f, 0xba, 0xb7, 0x96, 0xb1, 0x30, 0x38, 0xb8, 0x32, 0xb2, 0x96, 0xb8, 0xba, 0xb2, 0xba, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xe2, 0x48, 0xc5, 0x1a, 0x80, 0xff, 0x34, 0x37, 0xba, 0x32, 0x39, 0xb3, 0xb0, 0xb1, 0x32, 0x10, 0xb2, 0xb7, 0x37, 0x39, 0x10, 0xb3, 0x37, 0x39, 0x90, 0x95, 0xb1, 0x30, 0x38, 0xb8, 0x32, 0xb2, 0x96, 0xb8, 0xba, 0xb2, 0xba, 0x72, 0x25, 0x00, 0xbe, 0x80, 0x92, 0x7b, 0xb3, 0x4b, 0x23, 0x2b, 0x9b, 0x03, 0x09, 0x03, 0x89, 0xab, 0x2b, 0xab, 0x2b, 0x03, 0x79, 0x33, 0x03, 0x09, 0x03, 0x61, 0x4b, 0x6b, 0x4b, 0xa3, 0x2b, 0x23, 0x03, 0x99, 0x4b, 0xd3, 0x2b, 0x03, 0xb9, 0x43, 0x2b, 0x93, 0x2b, 0x03, 0x81, 0xab, 0x9b, 0x43, 0x4b, 0x73, 0x3b, 0x03, 0x09, 0x23, 0x23, 0x4b, 0xa3, 0x4b, 0x7b, 0x73, 0x0b, 0x63, 0x03, 0x49, 0xa3, 0x2b, 0x6b, 0x9b, 0x03, 0xb9, 0x4b, 0x63, 0x63, 0x97, 0x00, 0x74, 0x33, 0x7b, 0x93, 0x1b, 0x2b, 0x03, 0x81, 0x7b, 0x83, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x49, 0xa3, 0x2b, 0x6b, 0x9b, 0x03, 0x09, 0xa3, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x31, 0x93, 0x7b, 0x73, 0xa3, 0x03, 0x79, 0x33, 0x03, 0xa1, 0x43, 0x2b, 0x03, 0x89, 0xab, 0x2b, 0xab, 0x2b, 0x73, 0xb5, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xcb, 0x88, 0xe6, 0xc1, 0xb1, 0x75, 0x60, 0x83, 0xb2, 0x0c, 0x7b, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xf0, 0x91, 0xca, 0x0d, 0x42, 0xbf, 0x64, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x4c, 0x0d, 0xcd, 0x36, 0x78, 0x2d, 0x8b, 0x66, 0xb3, 0xcc, 0x1a, 0x8c, 0x34, 0xf7, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xc2, 0x15, 0xe1, 0xe0, 0xb5, 0x2c, 0x9a, 0x1b, 0xfe, 0xa2, 0x59, 0xc3, 0xe7, 0x4a, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x4d, 0x98, 0x07, 0x51, 0x2d, 0x2b, 0xb6, 0x06, 0x01, 0x74, 0xb6, 0xe1, 0x6d, 0x9d, 0x83, 0x98, 0xa7, 0x13, 0x6b, 0x83, 0x62, 0x47, 0x73, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x9e, 0xef, 0x52, 0x79, 0x10, 0xf3, 0x74, 0x62, 0x1b, 0xde, 0xd6, 0xd9, 0xe0, 0xd5, 0x34, 0x95, 0x07, 0x31, 0x4f, 0x27, 0xb6, 0x06, 0x45, 0x9f, 0xee, 0x1a, 0x3c, 0x7c, 0xa4, 0xf2, 0x20, 0xe6, 0xe9, 0xc4, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x2d, 0xa8, 0x1b, 0x9c, 0x87, 0x41, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0x0c, 0xe3, 0x8a, 0xb5, 0x41, 0x53, 0xb8, 0x10, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x10, 0x21, 0xb7, 0x62, 0x6b, 0xf8, 0x38, 0xea, 0x20, 0xd6, 0x6d, 0xc5, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x41, 0x91, 0xb9, 0x41, 0xac, 0xd7, 0x8a, 0xb5, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x41, 0x91, 0x79, 0x10, 0x59, 0xba, 0x62, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x8e, 0xe1, 0x06, 0x07, 0x4d, 0xe1, 0x42, 0x1c, 0xc4, 0x2a, 0xaf, 0xd8, 0x06, 0x45, 0x07, 0xed, 0x00, 0xdf, 0x1b, 0x1b, 0x59, 0xd9, 0x1c, 0xbd, 0x41, 0x0c, 0xe3, 0x8a, 0xad, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xe1, 0x26, 0x7a, 0x10, 0x13, 0xba, 0x62, 0x1b, 0x14, 0x7d, 0xba, 0x1b, 0xc4, 0x30, 0xae, 0xd8, 0x06, 0x91, 0x95, 0x2b, 0xb6, 0xe1, 0x17, 0x97, 0x35, 0x38, 0x86, 0x1b, 0x6c, 0x78, 0x5b, 0x67, 0x83, 0x18, 0xfa, 0x15, 0xeb, 0x20, 0x56, 0x79, 0xc5, 0x66, 0x0d, 0x4a, 0x84, 0x96, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xa0, 0xcc, 0x44, 0x1d, 0x00, 0x8f, 0xe0, 0xde, 0xe0, 0x40, 0xc2, 0xdc, 0x40, 0xd2, 0xe8, 0xca, 0xda, 0x40, 0xde, 0xcc, 0xcc, 0x40, 0xe8, 0xd0, 0xca, 0x40, 0xe2, 0xea, 0xca, 0xea, 0xca, 0x58, 0x40, 0xc2, 0xc8, 0xd4, 0xea, 0xe6, 0xe8, 0xd2, 0xdc, 0xce, 0x40, 0xe6, 0xd2, 0xf4, 0xca, 0x36, 0xfc, 0x45, 0xb3, 0x86, 0xcf, 0x95, 0x36, 0x78, 0x2d, 0x8b, 0xe6, 0x41, 0xac, 0xd6, 0x8a, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x10, 0x21, 0xb7, 0x62, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x6b, 0x3e, 0x1b, 0xc4, 0xba, 0xad, 0x58, 0x1b, 0x14, 0x1d, 0xb4, 0x1b, 0xc4, 0xd0, 0xaf, 0xd8, 0x06, 0x31, 0x8c, 0x2b, 0xb6, 0x41, 0x2c, 0x00, 0x8b, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x38, 0x11, 0x16, 0x3b, 0x88, 0x55, 0x5e, 0xb1, 0xd5, 0x20, 0x5e, 0x05, 0xc5, 0x36, 0x28, 0xed, 0x2d, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x0f, 0xf7, 0x06, 0x37, 0x6f, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x41, 0x54, 0xcb, 0x8a, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x48, 0x3e, 0x14, 0xdb, 0xf0, 0xf5, 0xcb, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0xec, 0xb2, 0x58, 0x07, 0xb1, 0xca, 0x2b, 0xb6, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x1a, 0xb6, 0xd2, 0x06, 0x91, 0x9d, 0x28, 0x76, 0x10, 0xa3, 0xc8, 0x62, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x58, 0x2c, 0x6f, 0x10, 0xbd, 0xcd, 0x62, 0xad, 0xe1, 0x92, 0xda, 0x20, 0xe6, 0xe9, 0xc4, 0x56, 0x83, 0x57, 0xd3, 0x54, 0x76, 0x10, 0xd9, 0x89, 0x62, 0xb5, 0x41, 0xd1, 0x41, 0xbb, 0x41, 0x0c, 0xfd, 0x8a, 0x6d, 0x10, 0xf3, 0x74, 0x62, 0x1b, 0x9c, 0x3b, 0x2d, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x88, 0xf9, 0x66, 0xb1, 0x0d, 0xbf, 0xb8, 0x6c, 0x10, 0x27, 0xc2, 0x62, 0x07, 0x71, 0x08, 0x2d, 0xd6, 0xe1, 0x14, 0xeb, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x6b, 0x01, 0x6f, 0x4c, 0x6e, 0xdc, 0xa0, 0xec, 0x92, 0x1d, 0xf0, 0xc6, 0xe4, 0xc6, 0x0d, 0xde, 0x2c, 0x7c, 0x32, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0x78, 0x8d, 0xc9, 0x8d, 0xcd, 0xc8, 0xb4, 0xd0, 0x85, 0x89, 0xb1, 0x95, 0x1b, 0x2c, 0xec, 0x5c, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x07, 0x8f, 0xd2, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x4a, 0xa4, 0xea, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x8b, 0x74, 0xa5, 0x37, 0x3c, 0x78, 0x73, 0x90, 0xb0, 0x6f, 0xb9, 0xe1, 0x17, 0xa5, 0x0d, 0xce, 0x93, 0x2a, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0x95, 0x24, 0xdc, 0x20, 0x36, 0x3c, 0xa5, 0x36, 0x7c, 0xd7, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x48, 0x0f, 0x83, 0x5a, 0xc3, 0xe7, 0x2e, 0x1b, 0x9c, 0xd0, 0x3a, 0x0f, 0xca, 0xe8, 0xf3, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xa3, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x7a, 0xc7, 0x6d, 0x70, 0x2c, 0xee, 0x3c, 0x28, 0x88, 0xc7, 0x0f, 0x0a, 0x27, 0xd9, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x06, 0x62, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0x10, 0x6d, 0xee, 0x46, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x12, 0x1f, 0x77, 0x83, 0x22, 0x75, 0xfc, 0xe0, 0x20, 0xe0, 0xd9, 0x41, 0x1c, 0x7f, 0x8b, 0xad, 0x06, 0xb1, 0xbd, 0x72, 0xb4, 0xe1, 0xf1, 0x91, 0x0d, 0x62, 0x7b, 0xe5, 0x68, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x83, 0x3c, 0xdb, 0xc1, 0xd3, 0xcf, 0xe5, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xb1, 0xa5, 0x74, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x1c, 0x4b, 0xe3, 0x0e, 0x0f, 0xde, 0x6c, 0xb0, 0x74, 0x0d, 0x75, 0x83, 0x82, 0x34, 0x76, 0x00, 0x9f, 0x34, 0x37, 0xb8, 0x3a, 0xba, 0x16, 0xb6, 0xb4, 0x39, 0x7a, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x22, 0x68, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x44, 0xcb, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0xe0, 0x58, 0x1a, 0xd7, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x24, 0xd3, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x41, 0x04, 0x8f, 0x8b, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xe2, 0xdf, 0x83, 0x18, 0x36, 0x17, 0xeb, 0xa0, 0x70, 0x92, 0x6d, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x43, 0x0c, 0xc4, 0x06, 0xa9, 0x0e, 0x8e, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0x95, 0x24, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0x44, 0xb9, 0x58, 0x1b, 0xbe, 0x6b, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0xa4, 0x87, 0x41, 0xad, 0xe1, 0x73, 0x97, 0x0d, 0x4e, 0x68, 0x9d, 0x07, 0xa9, 0x0e, 0x8e, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x43, 0x0c, 0xc4, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xa8, 0x9c, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0x1c, 0xbd, 0xe3, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x87, 0x18, 0x88, 0x0d, 0x8e, 0xc5, 0x9d, 0x87, 0x87, 0x7e, 0x0e, 0x96, 0xe9, 0xa1, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0xe2, 0xde, 0x5a, 0xac, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x3e, 0xee, 0x06, 0x87, 0x8e, 0xb9, 0x83, 0x83, 0x80, 0x67, 0x87, 0x53, 0xac, 0xc3, 0x29, 0x36, 0x6b, 0x10, 0x6d, 0x35, 0x5f, 0x1b, 0xa4, 0x5e, 0x14, 0x6f, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0xe0, 0x41, 0x26, 0xf7, 0x06, 0xd7, 0xc2, 0x96, 0x36, 0x47, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0xaa, 0xbc, 0x58, 0x07, 0x11, 0x12, 0xf6, 0x75, 0x10, 0x69, 0x62, 0x5f, 0x2b, 0xc0, 0x4f, 0x26, 0xf7, 0x06, 0xd7, 0xd2, 0x16, 0x06, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0x3b, 0xbd, 0x58, 0x07, 0xd1, 0x53, 0x01, 0x76, 0x10, 0x75, 0x16, 0x60, 0x87, 0x53, 0x6c, 0x01, 0x3c, 0xc8, 0xe4, 0xde, 0xe0, 0x5a, 0xe0, 0xde, 0xd8, 0xca, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x28, 0xba, 0x17, 0x6b, 0x00, 0x1e, 0xc6, 0xde, 0xd8, 0xd8, 0xc2, 0xe0, 0xe6, 0xca, 0x40, 0xe8, 0xde, 0x40, 0xe8, 0xea, 0xe0, 0xd8, 0xca, 0x36, 0x38, 0x60, 0xd1, 0xad, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0x3f, 0x97, 0x36, 0x68, 0xe0, 0x43, 0xed, 0x20, 0x7e, 0x1a, 0xbf, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0x1e, 0x74, 0x65, 0x73, 0x74, 0x2d, 0x70, 0x6f, 0x6c, 0x65, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0x41, 0x14, 0xb5, 0x36, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x59, 0x0a, 0x6c, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x3c, 0xdc, 0xca, 0xca, 0xc8, 0x5a, 0xe0, 0xde, 0xd8, 0xca, 0x0e, 0x62, 0x9a, 0x5f, 0xac, 0x65, 0xd6, 0x20, 0x0a, 0xfd, 0xc5, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x88, 0x57, 0x7d, 0xb1, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x1a, 0x44, 0x51, 0xdb, 0x20, 0x3c, 0x55, 0x37, 0x28, 0xe1, 0x31, 0xd7, 0x78, 0x7e, 0xd0, 0x20, 0x8a, 0xda, 0x1a, 0x1e, 0x94, 0xdc, 0x20, 0x31, 0xf4, 0x6a, 0xc3, 0x25, 0xb5, 0x06, 0x21, 0x00, 0x7e, 0xd0, 0x20, 0x8a, 0x5a, 0x1b, 0x7e, 0x71, 0xd9, 0x20, 0xc6, 0x03, 0xc6, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xb1, 0xe4, 0x2f, 0xb6, 0x86, 0x4b, 0x6a, 0x83, 0xc8, 0x0b, 0x18, 0xab, 0x56, 0x83, 0x18, 0xe1, 0x17, 0xdb, 0xa0, 0x50, 0xee, 0xdc, 0x20, 0x5e, 0xf5, 0xc5, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x83, 0xd5, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x1a, 0x44, 0x51, 0xdb, 0xa0, 0xc8, 0x69, 0xdd, 0xf0, 0x2b, 0xd9, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x84, 0xe0, 0xc3, 0xc6, 0xa1, 0x83, 0x06, 0x51, 0xd4, 0xd6, 0xa0, 0x84, 0xc7, 0xdc, 0x20, 0xf2, 0x02, 0xc6, 0x36, 0x28, 0x60, 0xf3, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xa4, 0xef, 0x8b, 0x1d, 0xc4, 0x06, 0xc1, 0x58, 0x87, 0x53, 0xac, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xac, 0x41, 0x34, 0x64, 0x5e, 0x6d, 0x90, 0x7a, 0x51, 0xbc, 0xc1, 0x2a, 0x2c, 0xa7, 0x35, 0xbc, 0xad, 0x73, 0xf0, 0xd8, 0x02, 0xbb, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x83, 0x48, 0xc8, 0xbc, 0xda, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0x16, 0xe0, 0x23, 0x2b, 0x6b, 0xc1, 0x6b, 0x63, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xa2, 0x93, 0x61, 0xac, 0x01, 0x7c, 0xf0, 0xda, 0xd8, 0x40, 0xe0, 0xc2, 0xe4, 0xe6, 0xca, 0xe4, 0x36, 0x3c, 0x28, 0xb9, 0x86, 0x5f, 0x94, 0x36, 0x88, 0xf7, 0x94, 0xa7, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xd6, 0x00, 0x76, 0xc3, 0xd3, 0x3a, 0x1b, 0x34, 0xd9, 0x3d, 0xd6, 0x06, 0x65, 0x19, 0xf6, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xca, 0xdc, 0xe8, 0x0d, 0x02, 0xe8, 0x6c, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x88, 0xf5, 0x1b, 0xac, 0xd7, 0x7a, 0x3e, 0x38, 0x3e, 0xb9, 0x6e, 0xf8, 0xc5, 0x65, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0xc4, 0xd1, 0xce, 0xd1, 0xc1, 0x82, 0x88, 0xd9, 0x83, 0xb2, 0xcc, 0x73, 0x96, 0x59, 0xc0, 0x1f, 0x7b, 0x6b, 0xa3, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x22, 0x92, 0x62, 0xac, 0x83, 0x25, 0x65, 0xa4, 0x1b, 0x1c, 0x6d, 0xf8, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x35, 0x49, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xe1, 0xc3, 0xe8, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x88, 0x8b, 0xa2, 0xa3, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x1f, 0x46, 0xd7, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0xa0, 0xb5, 0xb4, 0xf8, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x54, 0x0c, 0x3d, 0x48, 0x05, 0x1a, 0x6b, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0x2c, 0x3b, 0x06, 0xdd, 0x60, 0xb1, 0x50, 0xe8, 0xc1, 0x2a, 0x69, 0xd0, 0x0d, 0x1a, 0xf5, 0xf9, 0x5c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0x2c, 0x3b, 0x06, 0xdd, 0x20, 0x92, 0x30, 0xc6, 0x0e, 0x56, 0x1b, 0x85, 0xb6, 0x02, 0x7e, 0x18, 0x1d, 0x9d, 0xbc, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x10, 0x47, 0x1d, 0x63, 0x0d, 0xe0, 0x13, 0x46, 0x47, 0x27, 0x97, 0x26, 0x56, 0x47, 0x57, 0x36, 0xb7, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xea, 0x5e, 0xd6, 0x35, 0x28, 0x04, 0x53, 0x0f, 0xd6, 0x77, 0x6a, 0x6f, 0x70, 0x1e, 0xec, 0xd8, 0x60, 0x39, 0x24, 0xd3, 0x6c, 0x70, 0x62, 0xbf, 0xd9, 0x60, 0xa1, 0x62, 0xe8, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x98, 0x4c, 0x7a, 0xd0, 0xa4, 0xcf, 0xe7, 0x06, 0x2d, 0x61, 0x70, 0xb6, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x0b, 0x35, 0x49, 0xd7, 0x60, 0x49, 0x75, 0xd2, 0x06, 0x6d, 0x5f, 0x89, 0x6e, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x9a, 0xa4, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0xd8, 0x52, 0xb5, 0x41, 0x62, 0x4b, 0x55, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0x62, 0xe8, 0x41, 0x93, 0x3e, 0x9f, 0x07, 0xab, 0x01, 0x48, 0x0f, 0xda, 0xce, 0x12, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x15, 0x43, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xcb, 0x8e, 0x41, 0x37, 0x68, 0xfb, 0x4a, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x65, 0x73, 0x63, 0x70, 0xb5, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x0b, 0x35, 0x49, 0xd7, 0x60, 0x49, 0x75, 0xd2, 0x06, 0x8b, 0x9c, 0x41, 0x37, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0xe2, 0xbc, 0x64, 0xec, 0x60, 0xc5, 0x28, 0xe9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x18, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x76, 0x0c, 0xba, 0xc1, 0x22, 0x67, 0xd0, 0x83, 0xe8, 0x4f, 0x19, 0xeb, 0x60, 0x89, 0x49, 0x69, 0x2b, 0xe0, 0x8f, 0xa1, 0xc9, 0x91, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xf1, 0xeb, 0x32, 0xd6, 0x00, 0xbe, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x1b, 0x2c, 0x22, 0xa8, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x8f, 0x57, 0xed, 0x3b, 0x68, 0x52, 0x8c, 0x75, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x4c, 0x26, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0xdd, 0x60, 0x4d, 0x46, 0xe8, 0x41, 0xf4, 0xa7, 0x8c, 0x35, 0x6b, 0x10, 0x84, 0x4b, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0x42, 0x43, 0xe4, 0x00, 0x5e, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x67, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0x26, 0xe9, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x7c, 0x18, 0x5d, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x41, 0xf3, 0xbc, 0x0e, 0x16, 0x6e, 0x89, 0x1e, 0xc4, 0xd7, 0xc8, 0xd8, 0x0a, 0xf8, 0x64, 0x65, 0x63, 0xec, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x6c, 0xe2, 0x8c, 0x35, 0x00, 0x1f, 0x2b, 0x2b, 0x64, 0x65, 0x63, 0x6c, 0x3a, 0x64, 0x65, 0x2d, 0x78, 0x6d, 0x6c, 0x3a, 0x68, 0x74, 0x6d, 0x6c, 0x1b, 0x14, 0x9d, 0xc6, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xe0, 0x8d, 0xd5, 0xc4, 0x04, 0x42, 0x56, 0x36, 0xc6, 0x16, 0x26, 0x17, 0x46, 0x97, 0xf6, 0xe6, 0x76, 0xb0, 0x50, 0x93, 0x74, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x3e, 0x8c, 0xae, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0x48, 0x4f, 0x3b, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xf0, 0x61, 0x74, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0xfd, 0xe3, 0x6b, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x0b, 0x15, 0x43, 0x37, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0xb2, 0x63, 0xd0, 0x0d, 0x22, 0xd4, 0x67, 0xec, 0x60, 0x95, 0x34, 0xe8, 0xe1, 0x14, 0x6b, 0x01, 0x7f, 0x8c, 0x2c, 0x8c, 0xde, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0xc2, 0xa0, 0xb1, 0x06, 0xf0, 0x1c, 0x22, 0x0a, 0xa2, 0x0a, 0x02, 0x99, 0x2b, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0xdb, 0xa0, 0xe8, 0x34, 0xde, 0x60, 0x59, 0x25, 0xe8, 0x06, 0xd1, 0x19, 0x33, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x42, 0x4d, 0xd2, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xf8, 0x30, 0xba, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0xa2, 0x3b, 0xee, 0xa8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xc2, 0x87, 0xd1, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0x68, 0x5d, 0x5d, 0xbe, 0x36, 0x38, 0xb1, 0xdf, 0x6c, 0xb0, 0x50, 0x31, 0x74, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0x2c, 0x3b, 0x06, 0xdd, 0x20, 0x0a, 0x8d, 0xc6, 0x36, 0x58, 0x22, 0x5c, 0xdb, 0x6a, 0xd0, 0x9e, 0xf7, 0xd8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0xd0, 0xb6, 0xd9, 0xea, 0x00, 0x1e, 0x74, 0x6f, 0x70, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0xde, 0x1c, 0x5c, 0xb8, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x22, 0x92, 0x62, 0xac, 0x83, 0x26, 0x7d, 0x3e, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0xdd, 0xcb, 0xba, 0x06, 0x85, 0x60, 0xea, 0xc1, 0xc2, 0x87, 0xed, 0x0d, 0xce, 0x83, 0x1d, 0x1b, 0x2c, 0x87, 0x64, 0x9a, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x16, 0x6a, 0x92, 0xae, 0xe1, 0x17, 0x97, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xba, 0x56, 0xd2, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xcd, 0xc1, 0x85, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x62, 0x13, 0x67, 0xac, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x15, 0x43, 0x37, 0x88, 0x42, 0xa8, 0xb1, 0x3a, 0x88, 0xca, 0xa8, 0xb1, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0xd8, 0xb1, 0xae, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0x16, 0x89, 0x6b, 0xaf, 0xe1, 0xcf, 0xa5, 0xc1, 0xc5, 0x83, 0x55, 0xe9, 0xda, 0x6b, 0xf8, 0x73, 0x69, 0xf0, 0xf1, 0x60, 0x95, 0xa5, 0x76, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xf8, 0x37, 0x67, 0xc3, 0xd3, 0x3b, 0x07, 0x25, 0x33, 0xe6, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x77, 0x7b, 0x36, 0x38, 0x4b, 0x81, 0x6d, 0x50, 0xf2, 0x05, 0xb7, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0x2a, 0x8c, 0x78, 0x83, 0x96, 0x99, 0x08, 0x0f, 0x8e, 0xd5, 0x72, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x2f, 0x6b, 0x83, 0xa3, 0xeb, 0x70, 0x8a, 0xb5, 0x06, 0xe9, 0x94, 0x3e, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xe9, 0x94, 0x3e, 0x1d, 0xbc, 0x49, 0x4f, 0x7c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x54, 0x0c, 0xdd, 0x20, 0x96, 0x98, 0xc6, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x54, 0x0c, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x2b, 0x18, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0xdd, 0xa0, 0xc9, 0xee, 0xb1, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xfc, 0xba, 0x8c, 0xb5, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xc2, 0xa0, 0xb1, 0xda, 0x20, 0x5a, 0xb8, 0xc6, 0xaa, 0xd5, 0x20, 0x58, 0x96, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x83, 0x76, 0x0b, 0x42, 0x07, 0xf0, 0x7a, 0x83, 0x2b, 0x73, 0x4b, 0x73, 0x3b, 0x03, 0xa1, 0x0b, 0x3b, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x35, 0x49, 0x37, 0x68, 0x5b, 0x62, 0x73, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0x96, 0x30, 0x38, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x71, 0xd4, 0x31, 0x56, 0x1d, 0x4e, 0xb1, 0x35, 0x88, 0xc8, 0xac, 0xb1, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x88, 0xcc, 0x1a, 0x6b, 0x00, 0xff, 0xb9, 0x32, 0x36, 0xb3, 0x96, 0x31, 0xb6, 0xb7, 0xb9, 0x34, 0xb7, 0x33, 0x10, 0xba, 0xb0, 0xb3, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x16, 0x6a, 0x92, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0x45, 0x89, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x3e, 0x8c, 0xae, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0xa0, 0x5f, 0x7c, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x1b, 0x44, 0xb8, 0xd8, 0xd8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x09, 0x4e, 0xe8, 0x06, 0x05, 0x45, 0xe6, 0x06, 0x31, 0x76, 0x32, 0x56, 0xb3, 0x06, 0xb1, 0xa3, 0x32, 0xb6, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x96, 0x1d, 0x83, 0x6e, 0xb0, 0x2a, 0x4a, 0x74, 0x83, 0xa5, 0x5b, 0xa2, 0x1b, 0x34, 0x36, 0x7f, 0x79, 0xb0, 0x4a, 0x1a, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x65, 0x6e, 0x74, 0x79, 0xad, 0x86, 0xef, 0xdb, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x83, 0x67, 0x44, 0xa7, 0x0f, 0xf0, 0xd3, 0x85, 0x9d, 0x81, 0xb8, 0x85, 0xb5, 0x95, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x63, 0x68, 0xf8, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0x37, 0x58, 0x8e, 0x2c, 0xbc, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0x6e, 0xb0, 0x90, 0x41, 0xf4, 0x20, 0x16, 0xa0, 0x9e, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x15, 0x43, 0xd7, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0x37, 0x58, 0xc8, 0x20, 0xba, 0xc1, 0xda, 0x17, 0xd2, 0x83, 0xd5, 0xd2, 0xa6, 0xb5, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x15, 0x8c, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x6f, 0x0c, 0x0d, 0xef, 0xa0, 0x7d, 0xb9, 0xd0, 0x0d, 0x62, 0xcb, 0x6e, 0xac, 0x83, 0x08, 0xb9, 0x1b, 0x5b, 0x0d, 0x56, 0x6d, 0x93, 0x6f, 0x78, 0x9e, 0x64, 0x83, 0xc6, 0xa2, 0x43, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x2a, 0xe8, 0xd0, 0x35, 0x38, 0xba, 0x0e, 0x6e, 0xb0, 0xd8, 0xe7, 0x6e, 0x0d, 0x5f, 0xbf, 0x6c, 0xf8, 0x10, 0x66, 0xc3, 0xd7, 0x2f, 0x1b, 0x3e, 0x84, 0x39, 0x88, 0xbd, 0xb4, 0xa9, 0x35, 0x7c, 0xfd, 0xb2, 0xe1, 0x43, 0x98, 0x0d, 0x5f, 0xbf, 0x6c, 0xf8, 0x10, 0xe6, 0x20, 0x82, 0xad, 0xb6, 0xea, 0x70, 0x8a, 0xad, 0x41, 0xac, 0xb6, 0x8d, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0x6a, 0xdb, 0x58, 0x03, 0x7c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xd4, 0x24, 0x5d, 0x83, 0xc6, 0xe6, 0x2f, 0x0f, 0x1a, 0x20, 0x06, 0xdd, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0xd7, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xa0, 0xc1, 0xfb, 0xe8, 0x0d, 0x5f, 0xbf, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0xaf, 0xcc, 0x8d, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x10, 0xeb, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0x2e, 0xf8, 0x33, 0xfa, 0x60, 0x85, 0x0f, 0xed, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x0b, 0x9e, 0x8d, 0x3e, 0x58, 0x12, 0x4d, 0xbb, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x02, 0x2f, 0xac, 0x0d, 0x3e, 0x58, 0x26, 0x2b, 0xbb, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x22, 0xb0, 0xf8, 0xe8, 0x60, 0x39, 0xdc, 0xec, 0x41, 0x59, 0xe7, 0xb9, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x12, 0x3b, 0xd6, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x28, 0xdc, 0x44, 0x37, 0x28, 0x9b, 0xea, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x1c, 0xfb, 0x6f, 0x36, 0x28, 0x9b, 0xea, 0x37, 0x68, 0x7d, 0x0e, 0xbb, 0x0d, 0x62, 0x0d, 0x70, 0xac, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0xb2, 0x4a, 0xd0, 0x0d, 0x96, 0x23, 0x0b, 0xaf, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0x5a, 0xd9, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x8a, 0x86, 0x7e, 0x0d, 0x8f, 0xc9, 0x1c, 0x9c, 0xbd, 0xf1, 0x0e, 0x96, 0x3a, 0xe6, 0xd7, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0xc3, 0x2f, 0x4a, 0x1b, 0xac, 0x21, 0x6c, 0xdb, 0xf0, 0x41, 0xce, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x8d, 0xe2, 0x86, 0xa7, 0x75, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x81, 0xf5, 0xff, 0x0f, 0xad, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x40, 0x7c, 0xff, 0xed, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x55, 0x4e, 0x74, 0x87, 0x87, 0x7e, 0x36, 0x3c, 0x28, 0xb9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x41, 0x9a, 0x9f, 0xea, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x86, 0x67, 0x26, 0x37, 0xdc, 0x51, 0xb5, 0x41, 0x61, 0xa8, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xaa, 0x1a, 0xba, 0x41, 0xca, 0x6b, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x15, 0x0d, 0xfd, 0x1a, 0x1e, 0x93, 0x39, 0x38, 0xac, 0xcc, 0x1d, 0x2c, 0x84, 0x35, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x55, 0x0d, 0xdd, 0xe0, 0xf0, 0x2a, 0xb7, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x05, 0x1d, 0xba, 0x86, 0x67, 0xf1, 0x0e, 0xe2, 0x65, 0xf7, 0xa8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x2a, 0x1a, 0xfa, 0x0d, 0x62, 0x6e, 0x72, 0xec, 0x60, 0xfd, 0x6e, 0x68, 0x75, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0x2b, 0xc0, 0x5b, 0xe6, 0xd6, 0x02, 0x57, 0x27, 0xc7, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0xff, 0xe5, 0x58, 0x03, 0xf8, 0xc0, 0xc9, 0xa5, 0xb9, 0xd1, 0x81, 0xc0, 0xd5, 0xc9, 0xb1, 0x6d, 0x78, 0x50, 0x72, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x1a, 0xf8, 0x50, 0x3b, 0x78, 0x25, 0xb7, 0xe2, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xe9, 0x89, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x26, 0xbb, 0xc7, 0x36, 0x58, 0x05, 0x26, 0x7b, 0x10, 0xd3, 0xfc, 0x62, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0x2c, 0x9b, 0x82, 0xde, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xe0, 0xde, 0xd6, 0x83, 0x07, 0x99, 0x2f, 0x6e, 0xf8, 0x8b, 0x66, 0x83, 0x93, 0x9e, 0xe8, 0x06, 0x25, 0x3c, 0xe6, 0x82, 0xc7, 0x03, 0x1e, 0xdc, 0xdb, 0xda, 0x06, 0x05, 0x45, 0xe6, 0x86, 0xaf, 0x70, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x58, 0xd8, 0xa1, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xc0, 0x5b, 0xe6, 0xd6, 0x52, 0x27, 0xc7, 0x46, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x86, 0xfd, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0x4f, 0x0f, 0x62, 0xec, 0x73, 0xac, 0x36, 0x28, 0xe1, 0x31, 0x17, 0x9c, 0x3e, 0x88, 0xb1, 0xcf, 0xb1, 0x35, 0x28, 0xe1, 0x31, 0x17, 0x1c, 0x3e, 0x88, 0xc1, 0xcf, 0xb1, 0x0d, 0xd6, 0x48, 0x6a, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x43, 0xd6, 0xe2, 0x06, 0x6b, 0x24, 0x35, 0x37, 0x58, 0x84, 0x27, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x86, 0xfd, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x22, 0x83, 0x74, 0xac, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x21, 0x6b, 0x71, 0x83, 0x35, 0x92, 0x9a, 0x1b, 0xac, 0x0e, 0x6b, 0x5b, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x18, 0xfb, 0x1c, 0xdb, 0xf0, 0xb6, 0xce, 0x41, 0xa4, 0x8d, 0x8e, 0xd5, 0x6a, 0x10, 0x84, 0x4b, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0xde, 0x5a, 0x58, 0x7e, 0xf0, 0x26, 0xf5, 0xc5, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0xb6, 0xce, 0x80, 0xb7, 0x16, 0x96, 0xb7, 0x41, 0x41, 0x91, 0xb9, 0x41, 0x61, 0xa8, 0xba, 0xc1, 0xb2, 0x5d, 0xda, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x93, 0x9e, 0xe8, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xf1, 0xbc, 0x3a, 0xb6, 0x41, 0x41, 0x91, 0xb9, 0x41, 0x92, 0x01, 0xe1, 0x06, 0x87, 0xac, 0xc5, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xd4, 0x84, 0x8e, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x61, 0xbf, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0xc1, 0xd3, 0x83, 0x78, 0x5e, 0x1d, 0xab, 0x35, 0x28, 0xe1, 0x31, 0x17, 0x3c, 0x3e, 0x88, 0x20, 0xd8, 0xb1, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xf2, 0x94, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x35, 0xa1, 0x63, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x65, 0xd8, 0x6f, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0xf2, 0x61, 0xc7, 0xaa, 0x35, 0x28, 0xe1, 0x31, 0x17, 0x9c, 0x3e, 0x88, 0xe7, 0xd5, 0xb1, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x23, 0xe1, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x20, 0x9e, 0x57, 0xc7, 0x36, 0xbc, 0xad, 0x73, 0x10, 0xf9, 0xb3, 0x63, 0xd5, 0x0a, 0xf8, 0x61, 0x70, 0x69, 0xf8, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x6c, 0xdb, 0x8e, 0x35, 0x80, 0x1f, 0x5c, 0x9d, 0x9c, 0x19, 0x08, 0xdd, 0x1b, 0x08, 0x5d, 0x18, 0x5c, 0xd9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xef, 0xfc, 0x1a, 0x3c, 0x5a, 0x5a, 0xb1, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x89, 0xa0, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x64, 0xf7, 0xd8, 0x06, 0xab, 0xc0, 0x64, 0x0f, 0xd2, 0x93, 0x06, 0xd7, 0xa0, 0x84, 0xc7, 0xdc, 0xe0, 0x88, 0x93, 0xb1, 0xc1, 0x82, 0x20, 0xba, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x22, 0x69, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0xb0, 0xdf, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0x02, 0xc2, 0xd1, 0xea, 0x70, 0x8a, 0xad, 0x41, 0xb0, 0x2c, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0xce, 0x57, 0xf4, 0xe0, 0xfd, 0xc9, 0x91, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xa4, 0x27, 0xba, 0x41, 0x92, 0x01, 0xe1, 0x06, 0x27, 0x82, 0xb6, 0x35, 0x7c, 0x90, 0xb3, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf0, 0xc1, 0x12, 0x6d, 0xd1, 0x35, 0xbc, 0xcd, 0xba, 0x41, 0x31, 0x89, 0xb9, 0x86, 0x7f, 0xe7, 0xd7, 0xe0, 0x25, 0x2a, 0x8d, 0x35, 0xb8, 0x7c, 0xb0, 0x44, 0x5b, 0xb4, 0x35, 0x3c, 0x8b, 0x77, 0x10, 0x6f, 0xf0, 0x47, 0x1b, 0x9e, 0xc5, 0x3b, 0x88, 0x0b, 0xf9, 0xa3, 0x35, 0x08, 0xd2, 0xd3, 0x35, 0x0e, 0x1d, 0xc4, 0xa6, 0xf0, 0xd8, 0x1a, 0x84, 0x11, 0xd0, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x86, 0xfd, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xf1, 0x71, 0x37, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x72, 0xd3, 0x37, 0x58, 0xd9, 0x0b, 0xbb, 0x86, 0xb7, 0x75, 0x06, 0x87, 0x0f, 0x62, 0x53, 0x78, 0xac, 0x5a, 0x83, 0x80, 0x0d, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xe4, 0xd2, 0xe8, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x58, 0x2c, 0x1f, 0xc4, 0xba, 0xf1, 0xd8, 0x86, 0xaf, 0x70, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x49, 0x4f, 0x74, 0x83, 0x12, 0x1e, 0x73, 0x01, 0x4f, 0x2e, 0x8d, 0x6e, 0x83, 0x82, 0x22, 0x73, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x08, 0xda, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0xb0, 0xdf, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0x41, 0x04, 0x29, 0x8f, 0xb5, 0x06, 0x25, 0x3c, 0xe6, 0x82, 0xd3, 0x07, 0x11, 0xa4, 0x3c, 0xb6, 0xc1, 0x82, 0x20, 0xba, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xf0, 0x8b, 0xcb, 0x06, 0x8b, 0xf0, 0xe4, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x20, 0x82, 0x94, 0xc7, 0x36, 0xbc, 0xad, 0x73, 0x10, 0xb3, 0xcc, 0x63, 0x55, 0x6b, 0x50, 0xc2, 0x63, 0x6e, 0xb0, 0x24, 0x5b, 0x74, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0xf4, 0x44, 0x37, 0xfc, 0xe2, 0xb2, 0xc1, 0x8a, 0xde, 0xd9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x74, 0xcd, 0x3b, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0x25, 0xd9, 0xa2, 0xd5, 0x6a, 0xd0, 0x9e, 0xf7, 0xd8, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x17, 0x57, 0x27, 0x6f, 0xf8, 0x77, 0x7e, 0x0d, 0x9e, 0xe9, 0xbc, 0x58, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xa4, 0x27, 0xba, 0x41, 0x90, 0x9e, 0xae, 0x71, 0x68, 0xc0, 0x8b, 0xab, 0x93, 0x5b, 0x83, 0x80, 0x0d, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x27, 0x82, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xaa, 0x30, 0xe2, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x3c, 0x38, 0x7c, 0x10, 0xed, 0xd4, 0x63, 0xad, 0xe1, 0x2f, 0x9a, 0x0d, 0x4e, 0x7a, 0xa2, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x44, 0x3b, 0xf5, 0xd8, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0xe6, 0x24, 0xbb, 0x86, 0x4b, 0x6a, 0x8d, 0xe7, 0x07, 0xb1, 0x6c, 0x3d, 0x56, 0xb5, 0x06, 0x61, 0x04, 0xb4, 0xe1, 0x17, 0x97, 0x0d, 0x56, 0x87, 0xb5, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x37, 0x7d, 0xf6, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0x58, 0xb6, 0x1e, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0xb0, 0x96, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xc7, 0x07, 0xd1, 0x4e, 0x3d, 0x56, 0x75, 0x38, 0xc5, 0xea, 0x70, 0x8a, 0xcd, 0x02, 0xbc, 0x64, 0x65, 0x2d, 0x75, 0x72, 0x6c, 0xf4, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x9c, 0x75, 0x8f, 0x35, 0x80, 0x4f, 0x9d, 0x1c, 0x1b, 0x08, 0x59, 0xd9, 0xd8, 0x1b, 0x59, 0xd9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xab, 0x21, 0xef, 0x0f, 0x4e, 0x7a, 0xa2, 0x1b, 0xfe, 0xa2, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0x3c, 0x38, 0x85, 0x8b, 0x6e, 0x50, 0xc2, 0x63, 0x6e, 0xb0, 0x16, 0xf2, 0x7e, 0x83, 0xb3, 0xac, 0xd4, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0xeb, 0xa5, 0xdf, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0xb0, 0x16, 0xf2, 0x7e, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x28, 0x26, 0x31, 0x37, 0x88, 0x40, 0x4f, 0xaf, 0xc1, 0xe9, 0x83, 0xb5, 0x90, 0xf7, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x03, 0x9e, 0x5b, 0xd8, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x0e, 0x31, 0x10, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0x20, 0x02, 0xc9, 0xc7, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xa5, 0x01, 0xef, 0x06, 0x45, 0xa5, 0xf8, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x1d, 0x9c, 0x3e, 0x88, 0x40, 0xf2, 0xb1, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xe0, 0x6c, 0x72, 0xb5, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0x1a, 0xc0, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0xcf, 0x2d, 0xec, 0xec, 0x60, 0x89, 0x6e, 0xeb, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0x8b, 0x3a, 0x09, 0x37, 0x28, 0x28, 0x32, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x68, 0xbb, 0xec, 0x73, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xb5, 0x90, 0xf7, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3e, 0x88, 0x04, 0xf4, 0xb1, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x6c, 0xed, 0x73, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x14, 0x99, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x5f, 0xbf, 0x6c, 0xf8, 0x10, 0x66, 0xc3, 0xd7, 0x2f, 0x1b, 0x3e, 0x84, 0xd9, 0xf0, 0xb6, 0xce, 0xe0, 0xf5, 0xc1, 0xa2, 0x4e, 0xc2, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7d, 0xd0, 0xd8, 0xda, 0x67, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xd0, 0x76, 0xd9, 0xe7, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x6b, 0x21, 0xef, 0x37, 0xbc, 0xad, 0x73, 0x10, 0x81, 0xe4, 0x63, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0xd8, 0xda, 0xe7, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x28, 0x32, 0x37, 0x88, 0x8a, 0xf1, 0xb1, 0x83, 0x08, 0x81, 0x1f, 0x9b, 0x05, 0x78, 0xcb, 0xdc, 0x5a, 0xe8, 0xea, 0xe4, 0xcc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x48, 0xa4, 0x1f, 0x6b, 0x00, 0xfc, 0x29, 0x73, 0x1b, 0x7b, 0x23, 0x2b, 0x03, 0x59, 0xa1, 0xab, 0x93, 0x33, 0x03, 0x09, 0x9b, 0x03, 0x09, 0x03, 0xa1, 0x62, 0x22, 0x6a, 0x61, 0x0b, 0x9b, 0xa3, 0x03, 0x21, 0x7b, 0x6b, 0x0b, 0x4b, 0x73, 0x03, 0x99, 0xa3, 0x93, 0x4b, 0x73, 0x3b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0xe0, 0x25, 0xec, 0x41, 0x07, 0x2f, 0x47, 0x69, 0xdc, 0xf0, 0x17, 0xcd, 0x06, 0xe7, 0xd9, 0xd1, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xd6, 0xb1, 0x6d, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x58, 0x2c, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x1e, 0x4f, 0xc5, 0xbe, 0xc1, 0x22, 0x3c, 0xb9, 0x35, 0xbc, 0xad, 0x73, 0xf0, 0xac, 0x94, 0xc6, 0x6a, 0x05, 0x7c, 0xb3, 0xba, 0x32, 0x76, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x92, 0xf9, 0xc7, 0x1a, 0xc0, 0x1f, 0x2e, 0x4c, 0x6e, 0xae, 0x0c, 0xa4, 0x4e, 0x4e, 0x2c, 0x8d, 0x0e, 0xc4, 0x6c, 0xec, 0x2c, 0x6d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0xb7, 0x7b, 0xac, 0xac, 0xe1, 0xcf, 0xa5, 0x01, 0x6f, 0xac, 0x8c, 0xdc, 0xf0, 0xef, 0xfc, 0x06, 0x6b, 0x3a, 0x8e, 0x0e, 0xde, 0x7f, 0xd9, 0xb8, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb8, 0xba, 0x7c, 0xc3, 0xbf, 0xf3, 0x6b, 0xf0, 0xb0, 0x88, 0xc8, 0x6a, 0xc3, 0x5f, 0x34, 0x6b, 0xf8, 0x77, 0x7e, 0x83, 0x47, 0x21, 0xbc, 0xb4, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0xc1, 0x0a, 0x11, 0xd6, 0x0d, 0x5f, 0xe1, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x37, 0xa9, 0x2f, 0x6e, 0x50, 0xc2, 0x63, 0x2e, 0xe0, 0xc5, 0xd5, 0xe5, 0xad, 0xe1, 0x6d, 0x9d, 0x83, 0xd8, 0x25, 0x20, 0xdb, 0xf0, 0x8b, 0xcb, 0x1a, 0x1e, 0x94, 0xdc, 0x60, 0x91, 0x22, 0xde, 0x41, 0x2c, 0x14, 0x90, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0xec, 0x12, 0x90, 0x6d, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0x20, 0x76, 0x09, 0xc8, 0x6a, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x86, 0x5a, 0x5f, 0x37, 0x58, 0x04, 0xc2, 0xda, 0x1a, 0xac, 0x91, 0x6a, 0xda, 0xe0, 0x91, 0x97, 0x8d, 0x1b, 0xde, 0xd6, 0x19, 0xf0, 0xc6, 0xca, 0xc8, 0x0e, 0x9e, 0xd4, 0x94, 0x72, 0x38, 0xc5, 0xd6, 0x20, 0x16, 0xb5, 0x91, 0x36, 0x48, 0xbd, 0x28, 0xde, 0xa0, 0xec, 0x92, 0xdd, 0x20, 0x16, 0xb5, 0x91, 0x36, 0x78, 0xb3, 0xf0, 0xc9, 0x6c, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0xf0, 0x96, 0xb9, 0xb5, 0xb4, 0xa5, 0xd1, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xb1, 0xc3, 0x40, 0xd6, 0x00, 0x3c, 0xb4, 0xa5, 0xb5, 0x95, 0x81, 0xd0, 0xe5, 0xc1, 0x95, 0x81, 0xd0, 0xbd, 0x81, 0xd0, 0x95, 0xe1, 0xd1, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6d, 0x79, 0xee, 0x41, 0x2b, 0xe6, 0xa4, 0x1b, 0x9c, 0xd8, 0x6f, 0x36, 0x58, 0x8e, 0x2c, 0xbc, 0xe1, 0x2b, 0x9c, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xa0, 0x84, 0xc7, 0x5c, 0xc0, 0x6b, 0xcb, 0x73, 0xdb, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0x41, 0xb4, 0x45, 0x90, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x61, 0xbf, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xd3, 0x83, 0x68, 0x8b, 0x20, 0x6b, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x08, 0xda, 0x36, 0x88, 0xa5, 0x09, 0xb2, 0x35, 0xfc, 0x45, 0xb3, 0xc1, 0x49, 0x4f, 0x74, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0x0e, 0x6b, 0x5b, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0x68, 0x8b, 0x20, 0x3b, 0x88, 0x54, 0x09, 0xb2, 0x6a, 0x05, 0xd0, 0x20, 0x2b, 0x6b, 0x11, 0x0b, 0x9b, 0x2b, 0xab, 0xc1, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0xd3, 0x07, 0x27, 0x3d, 0xd1, 0x0d, 0x8e, 0x36, 0x7c, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd5, 0x99, 0xaa, 0x1b, 0x9c, 0x5a, 0xfa, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x55, 0x43, 0x37, 0x58, 0xc2, 0x1b, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x98, 0x4c, 0x7a, 0x90, 0x0a, 0x34, 0x56, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x7e, 0x51, 0xda, 0xf0, 0xe5, 0xd2, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0xe1, 0x69, 0x9d, 0x83, 0x18, 0xee, 0x90, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x2f, 0x05, 0xdd, 0x60, 0x25, 0xaf, 0xdb, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0x47, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0x6d, 0xf8, 0x72, 0x69, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0xdc, 0xf0, 0xb4, 0xce, 0x1a, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x43, 0x73, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf5, 0xa5, 0xa0, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x5c, 0x59, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xe1, 0x4e, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x0d, 0x5f, 0x2e, 0x6d, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x1b, 0x9e, 0xd6, 0xd9, 0x60, 0x09, 0x6f, 0x64, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf5, 0xa5, 0xa0, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x1c, 0x3a, 0x58, 0x57, 0xec, 0xd6, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x59, 0x25, 0xe8, 0x1a, 0x7e, 0x51, 0xda, 0xf0, 0xe5, 0xd2, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0xe1, 0x69, 0x9d, 0x83, 0x74, 0xed, 0xd8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xfa, 0x52, 0xd0, 0x0d, 0xd6, 0x75, 0xc1, 0xad, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0xf0, 0xb5, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0x37, 0x58, 0x71, 0x59, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x5f, 0x0a, 0xba, 0xc1, 0xa2, 0x99, 0xbf, 0x83, 0xd5, 0x66, 0x70, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x0d, 0x5f, 0x2e, 0x6d, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x1b, 0x9e, 0xd6, 0x59, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x68, 0xec, 0x60, 0xf1, 0x90, 0x7e, 0x2b, 0xc0, 0x1b, 0x36, 0xd7, 0xf2, 0x36, 0x46, 0x47, 0x6f, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0x37, 0x0b, 0x59, 0x03, 0xf0, 0x40, 0x17, 0x06, 0x57, 0x06, 0x42, 0xf7, 0x06, 0xf2, 0x36, 0x46, 0x37, 0x47, 0x27, 0x57, 0x16, 0xd6, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0x22, 0xfd, 0x7b, 0x6c, 0xc3, 0x5f, 0x34, 0x1b, 0x3c, 0xfd, 0x5c, 0x6e, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0xe3, 0xe5, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xad, 0x63, 0xdb, 0x06, 0x45, 0xa5, 0xf8, 0x06, 0x0b, 0x1e, 0xef, 0x6b, 0x35, 0x88, 0x6a, 0x2a, 0xa4, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0xa2, 0x9a, 0x0a, 0x69, 0xc3, 0x1d, 0x35, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0x24, 0x0f, 0x09, 0x6f, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x4e, 0x9f, 0x7e, 0xc3, 0x5f, 0x34, 0x1b, 0x3c, 0xfd, 0x5c, 0x6e, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x9f, 0x40, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x5f, 0x94, 0x1b, 0xac, 0x94, 0x54, 0x3d, 0x08, 0x56, 0xd6, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc5, 0xb6, 0xf2, 0x06, 0x8b, 0xc1, 0xf0, 0x0e, 0x16, 0x13, 0xd4, 0xb7, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x2a, 0x86, 0x1e, 0xac, 0xdf, 0x0d, 0x5d, 0x81, 0x27, 0x2b, 0x37, 0x3c, 0x3e, 0x32, 0xf0, 0x64, 0xe5, 0x86, 0x5f, 0x94, 0x36, 0x88, 0xf7, 0x94, 0xa7, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0x1e, 0xc4, 0x10, 0x63, 0xd7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x6b, 0x00, 0xbb, 0xe1, 0x69, 0x9d, 0x35, 0xbc, 0xad, 0x73, 0xb0, 0x6e, 0x55, 0xb4, 0x59, 0xe0, 0xcb, 0xdc, 0x0d, 0x8f, 0x8f, 0x0c, 0x7c, 0x99, 0xbb, 0xe1, 0x17, 0xa5, 0x0d, 0x22, 0x22, 0xbe, 0x6a, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0x80, 0x44, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x72, 0x64, 0xe1, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0x8b, 0x91, 0x1b, 0x0f, 0x16, 0x9e, 0x9e, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x82, 0xa7, 0x76, 0x83, 0x46, 0xdf, 0x52, 0x0f, 0x82, 0x95, 0xb5, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x91, 0x89, 0xbb, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x2a, 0xc5, 0x0f, 0xda, 0x27, 0x65, 0x3d, 0x88, 0x00, 0xb7, 0xa6, 0x3a, 0x9c, 0x62, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xd6, 0x02, 0x68, 0x94, 0xb9, 0xb5, 0x88, 0x85, 0xcd, 0x95, 0xd5, 0xe0, 0x0d, 0xbf, 0x28, 0x6d, 0x50, 0x9a, 0x16, 0x6f, 0x50, 0x90, 0xc6, 0x6e, 0xb0, 0x18, 0x1a, 0x75, 0x83, 0xf5, 0x31, 0xa8, 0x1b, 0x9c, 0xd8, 0x6f, 0x36, 0x28, 0x2c, 0x96, 0x37, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x4e, 0x7a, 0xa2, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0x39, 0x28, 0xfd, 0x8c, 0x37, 0x28, 0x28, 0x32, 0x37, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x06, 0x45, 0xa5, 0xf8, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0xdd, 0xed, 0x06, 0xa5, 0x9f, 0xf1, 0x41, 0x24, 0x90, 0x90, 0x1d, 0x14, 0xc4, 0xe3, 0x1b, 0x2c, 0x38, 0xcc, 0x6f, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xf2, 0xbf, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0x84, 0x02, 0xeb, 0x41, 0xbc, 0x21, 0x91, 0xb5, 0x02, 0x74, 0x62, 0x61, 0x73, 0x65, 0x36, 0x74, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x01, 0x5f, 0x2c, 0x8f, 0xae, 0xdc, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x88, 0x02, 0x26, 0xb2, 0x83, 0x74, 0x0c, 0xcd, 0x15, 0xc0, 0xb3, 0x0c, 0x0f, 0x8e, 0xed, 0x8d, 0xac, 0xac, 0xe5, 0xee, 0x4d, 0x8e, 0x6c, 0xde, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x9c, 0x85, 0x4c, 0x0f, 0x3f, 0xd4, 0xac, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0x86, 0x2e, 0x77, 0xf0, 0xf4, 0x73, 0xb9, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x39, 0x67, 0xbb, 0x41, 0x41, 0x1a, 0x3b, 0x80, 0x6f, 0x18, 0xdd, 0x5b, 0x5b, 0x8b, 0x58, 0x1a, 0x5d, 0xcb, 0x5d, 0x1a, 0x19, 0x1d, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x8a, 0x7f, 0x37, 0x3c, 0x78, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0xde, 0x85, 0x2e, 0xd7, 0x06, 0x05, 0x69, 0xec, 0x00, 0xbe, 0x6f, 0x63, 0x74, 0x73, 0x2d, 0x62, 0x69, 0x74, 0x2d, 0x77, 0x69, 0x64, 0x74, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0x37, 0x38, 0xac, 0xcc, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0x83, 0x77, 0xa1, 0xcb, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0x80, 0x77, 0x18, 0xdd, 0x5b, 0x5b, 0xcb, 0xdd, 0x9b, 0x1c, 0x59, 0xcb, 0x5d, 0x1a, 0x19, 0x1d, 0xba, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0x3f, 0x59, 0x9a, 0x5d, 0xcb, 0x58, 0x59, 0x1a, 0xdb, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xde, 0xa1, 0xc8, 0x3a, 0x48, 0x1a, 0x92, 0xdd, 0xa0, 0x20, 0x8d, 0x1d, 0xc0, 0x5b, 0x6e, 0x8e, 0x8d, 0xae, 0xe5, 0xee, 0x4d, 0x8e, 0xac, 0xe5, 0x2e, 0x8d, 0x8c, 0x0e, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0xda, 0x15, 0xd9, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x06, 0xa7, 0xc8, 0x3a, 0x48, 0x1a, 0x92, 0xdd, 0xa0, 0x20, 0x8d, 0xdd, 0xe0, 0xa8, 0xca, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0x0a, 0xb8, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xa6, 0x2c, 0xb2, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xf1, 0x61, 0x45, 0x56, 0x1b, 0x14, 0xa4, 0xb1, 0x83, 0xe3, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x82, 0x68, 0x79, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0xf0, 0xe6, 0x20, 0x69, 0x48, 0xf6, 0x20, 0x36, 0xa5, 0xc8, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x38, 0x11, 0xb4, 0x6d, 0x90, 0x4c, 0xe9, 0x74, 0x70, 0x58, 0x69, 0x9b, 0x05, 0xe8, 0xee, 0xde, 0xe4, 0xc8, 0x64, 0xe8, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0x41, 0x64, 0x82, 0x91, 0x1d, 0x7e, 0xa8, 0x99, 0x35, 0x88, 0xd1, 0x2b, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0xb1, 0xf9, 0x51, 0x1b, 0xfe, 0xa2, 0xd9, 0xf0, 0x43, 0xcd, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x86, 0x07, 0x6f, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0xd8, 0xdd, 0x1e, 0xc4, 0x0d, 0x7f, 0xd4, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x14, 0x58, 0x0f, 0xe2, 0x86, 0x3f, 0x6a, 0xc3, 0xc7, 0x51, 0x07, 0x31, 0x4a, 0x46, 0x36, 0x0b, 0xe0, 0x59, 0x86, 0x07, 0xc7, 0xf6, 0x46, 0x56, 0xd6, 0x22, 0x96, 0x47, 0x57, 0x36, 0x6f, 0xf8, 0x45, 0x69, 0x83, 0x58, 0x7b, 0x22, 0xdb, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0x21, 0x65, 0xb2, 0x86, 0x7f, 0xe7, 0xd7, 0x20, 0x0a, 0x98, 0xc8, 0xaa, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0xbc, 0xc3, 0xe8, 0xde, 0xda, 0x5a, 0xc4, 0xf2, 0xe8, 0xca, 0x5a, 0xee, 0xd2, 0xc8, 0xe8, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x51, 0xfc, 0xbb, 0x41, 0x51, 0x29, 0x7e, 0x10, 0x9b, 0x52, 0x64, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x78, 0xb2, 0x95, 0x85, 0x91, 0xa5, 0xb9, 0x9d, 0xb5, 0xe8, 0x95, 0xc9, 0xbd, 0xcd, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x1b, 0xc4, 0x4e, 0x15, 0xd9, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xca, 0xd1, 0xc8, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x08, 0xda, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x27, 0x99, 0xb6, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xdc, 0xac, 0x91, 0x75, 0x50, 0x38, 0xc9, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x0a, 0xa2, 0xe5, 0x83, 0x58, 0x53, 0x23, 0xeb, 0x70, 0x8a, 0x75, 0x38, 0xc5, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0x47, 0x55, 0xb6, 0x83, 0x22, 0xa7, 0x75, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x75, 0x72, 0xec, 0x41, 0x01, 0x9b, 0xdf, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x06, 0x0d, 0x01, 0x78, 0x6e, 0x78, 0x50, 0x72, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0x38, 0x8d, 0x6d, 0x90, 0xd6, 0x0e, 0xbc, 0x41, 0xe8, 0x97, 0x6c, 0xb0, 0xa8, 0xeb, 0xf4, 0x20, 0x86, 0x18, 0xbb, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x62, 0xc7, 0xba, 0x86, 0xb7, 0x75, 0x0e, 0x22, 0xd8, 0xb8, 0x69, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0x5d, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x0b, 0x93, 0x49, 0x37, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0xe1, 0xcb, 0xa5, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0xf0, 0x60, 0xb1, 0xae, 0xdb, 0xc1, 0xea, 0xd0, 0xd2, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0xe1, 0xcb, 0xa5, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0xc3, 0xd3, 0x3a, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0xfc, 0xe8, 0x60, 0xc1, 0x6c, 0xe9, 0x06, 0xeb, 0x6a, 0x4b, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x4b, 0x70, 0x42, 0x37, 0x58, 0x5a, 0xf1, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xb0, 0x11, 0xba, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x57, 0x27, 0xc7, 0xb6, 0xc1, 0x9a, 0x8d, 0xb7, 0x83, 0x85, 0x0e, 0x6f, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x82, 0x13, 0xba, 0xc1, 0x7a, 0x84, 0xb7, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x82, 0x8d, 0xd0, 0x35, 0x7c, 0x90, 0xb3, 0x41, 0xe4, 0xf4, 0x91, 0x6d, 0xb0, 0xa4, 0x6c, 0xee, 0x60, 0x75, 0x58, 0x5b, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x45, 0x43, 0xbf, 0x86, 0x07, 0x6f, 0x0e, 0x02, 0x96, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x04, 0x27, 0x74, 0x83, 0x65, 0x01, 0xc0, 0x07, 0xab, 0x01, 0x48, 0x6b, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x28, 0x36, 0x6e, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x14, 0xb5, 0xc5, 0x07, 0xe5, 0x9c, 0xed, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xc8, 0xc2, 0xe0, 0x83, 0x72, 0xce, 0xb6, 0x0d, 0x7f, 0xd1, 0x6c, 0x10, 0x2b, 0x3a, 0x64, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0x34, 0xd6, 0x6e, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xe8, 0x39, 0x79, 0x50, 0xf6, 0x19, 0x6f, 0x50, 0x90, 0xc6, 0x6e, 0xd0, 0xce, 0x47, 0xd9, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0xe7, 0xe4, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xc8, 0xc2, 0xe0, 0xda, 0xa0, 0x20, 0x8d, 0xdd, 0xa0, 0xcc, 0x09, 0x58, 0xc3, 0xbb, 0x3d, 0x6b, 0x50, 0x96, 0xbc, 0x6f, 0x90, 0xc4, 0x0e, 0xb5, 0x41, 0x24, 0xb1, 0x35, 0x1d, 0x9c, 0x99, 0xdb, 0x36, 0x3c, 0x78, 0x73, 0xd0, 0xe4, 0xc7, 0xd9, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x08, 0xeb, 0x06, 0x07, 0xa1, 0xb6, 0x35, 0xbc, 0xcd, 0xba, 0xe1, 0xdf, 0x9c, 0x0d, 0xd2, 0xd1, 0xa1, 0x0e, 0x1a, 0x68, 0x29, 0x6b, 0x0d, 0xd6, 0xad, 0x32, 0xcd, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0x41, 0x94, 0xdf, 0x21, 0x1d, 0x14, 0x14, 0x99, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0x23, 0xac, 0x6b, 0x78, 0x9b, 0xf5, 0xe0, 0x20, 0xd4, 0xb6, 0x86, 0xb7, 0x59, 0x37, 0xfc, 0x9b, 0xb3, 0xe1, 0xc1, 0x9b, 0x83, 0x06, 0x5a, 0xca, 0x5a, 0x83, 0x75, 0xab, 0x4c, 0xb3, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0x10, 0x79, 0x7e, 0x48, 0x07, 0x05, 0x45, 0xe6, 0x06, 0x05, 0x69, 0xec, 0x06, 0x65, 0x61, 0xf1, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x78, 0x6a, 0x37, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xa1, 0xc0, 0xba, 0x86, 0x77, 0x7b, 0x36, 0xfc, 0x09, 0xb4, 0x41, 0x93, 0x03, 0x67, 0x07, 0xcd, 0x47, 0x8b, 0x1f, 0x9c, 0x99, 0xdb, 0x3a, 0x68, 0x3e, 0x5a, 0x7c, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0x05, 0x45, 0xe6, 0x06, 0x85, 0x97, 0xf1, 0x06, 0x05, 0x69, 0xec, 0x06, 0xc7, 0x0c, 0xcf, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x89, 0x8f, 0xbb, 0x86, 0x5f, 0x5c, 0x36, 0x3c, 0x26, 0x73, 0xd0, 0x7c, 0xb4, 0xf8, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xd8, 0x56, 0xde, 0x20, 0x6d, 0xd2, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x58, 0x2c, 0x1f, 0x94, 0x7d, 0xc6, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xe0, 0x85, 0xb5, 0xd1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0xf8, 0x77, 0x83, 0xa2, 0x52, 0xfc, 0xa0, 0xa1, 0xb5, 0xe4, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0x8f, 0x4e, 0x8e, 0x5d, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0x67, 0x1b, 0x14, 0x5e, 0xc6, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x0b, 0x6b, 0xa3, 0x6b, 0xc3, 0x83, 0x37, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x41, 0xcc, 0x6c, 0x92, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x80, 0x77, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0x54, 0x8a, 0xaf, 0xe1, 0x6d, 0x9d, 0x01, 0x8f, 0x4e, 0x8e, 0xad, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xa9, 0x75, 0x7c, 0x10, 0x7d, 0x99, 0x64, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x02, 0x4f, 0x56, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0x78, 0x4f, 0x79, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xb1, 0xa2, 0x43, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0x1a, 0xc0, 0x6e, 0x78, 0x5a, 0x67, 0x83, 0xb6, 0xfe, 0x3b, 0x3b, 0x9c, 0x62, 0x0b, 0x7c, 0x99, 0xbb, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xa7, 0xb1, 0x0d, 0x9e, 0x7e, 0x2e, 0x77, 0x70, 0x02, 0x12, 0xdd, 0xa0, 0x20, 0x8d, 0xdd, 0x60, 0x31, 0x34, 0xea, 0x1a, 0x3e, 0xc8, 0xd9, 0x20, 0x72, 0xfa, 0xc8, 0xd6, 0xf0, 0x23, 0xcc, 0xe0, 0xf4, 0x41, 0x14, 0xbc, 0x22, 0x6d, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0x20, 0x6a, 0x66, 0x91, 0x36, 0x38, 0x60, 0xd1, 0xad, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xf0, 0x62, 0xf3, 0xc1, 0xd3, 0xcf, 0xe5, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x09, 0x48, 0x74, 0x83, 0x82, 0x34, 0x76, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x88, 0xcc, 0xd2, 0xaa, 0xc3, 0x0f, 0x35, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x83, 0x93, 0xdb, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0xe1, 0xdf, 0xf9, 0x35, 0x88, 0x4c, 0x30, 0xb2, 0xaa, 0x83, 0x30, 0x1d, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x00, 0xdf, 0xb7, 0x31, 0xba, 0xb9, 0x16, 0xba, 0xb7, 0x16, 0x31, 0xb6, 0xb7, 0xb1, 0xb5, 0xb9, 0x35, 0xbc, 0xad, 0x33, 0xf0, 0x62, 0x73, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xe5, 0xc8, 0xc2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0x79, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x9e, 0x3a, 0x37, 0xb8, 0x30, 0xb2, 0x0d, 0x62, 0x81, 0xb6, 0x6a, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x3c, 0xcb, 0xdc, 0xc6, 0xde, 0xc8, 0xca, 0x5a, 0xc4, 0xd8, 0xde, 0xc6, 0xd6, 0xe6, 0x0e, 0x0e, 0x6d, 0x6f, 0xd5, 0x32, 0x0b, 0xe0, 0x57, 0xe6, 0x36, 0xf6, 0x46, 0x56, 0xd6, 0x22, 0xc6, 0xf6, 0x36, 0xb6, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x7e, 0x1f, 0xc4, 0x5e, 0x2a, 0xd9, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xe9, 0x89, 0x6e, 0x50, 0x90, 0xc6, 0x0e, 0x1e, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa2, 0xd9, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x3c, 0x78, 0xb3, 0x41, 0xda, 0xa4, 0xed, 0xc1, 0xf1, 0xc7, 0xe5, 0xa0, 0x20, 0x1e, 0x3f, 0x88, 0x99, 0x24, 0xb2, 0x0d, 0x0a, 0xd2, 0xd8, 0xc1, 0xc5, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x49, 0x34, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x86, 0x07, 0x6f, 0x36, 0x58, 0xf3, 0xe2, 0x76, 0x70, 0xfc, 0x71, 0x39, 0x28, 0x88, 0xc7, 0x0f, 0x62, 0x26, 0x89, 0x6c, 0x83, 0x82, 0x34, 0x76, 0xf0, 0x71, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x12, 0xcd, 0x6e, 0x50, 0x54, 0x8a, 0xaf, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x49, 0x34, 0xbb, 0xe1, 0xc1, 0x9b, 0x0d, 0x96, 0x6d, 0xb9, 0x1d, 0x1c, 0x7f, 0x5c, 0x0e, 0x0a, 0xe2, 0xf1, 0x83, 0x98, 0x49, 0x22, 0xdb, 0xa0, 0x20, 0x8d, 0x1d, 0x9c, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0x44, 0xb3, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x12, 0xcd, 0x6e, 0x78, 0xf0, 0x66, 0x0d, 0xbf, 0xb8, 0x6c, 0x90, 0xaa, 0x8b, 0x7b, 0x70, 0x58, 0x9e, 0x39, 0x38, 0xfe, 0xb8, 0x1c, 0x14, 0xc4, 0xe3, 0x07, 0x31, 0x93, 0x44, 0xb6, 0xc1, 0xd1, 0x75, 0xf0, 0x20, 0x9e, 0x84, 0xa5, 0x66, 0x0d, 0xa2, 0xda, 0x95, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xe0, 0xef, 0xe6, 0x83, 0xf8, 0x47, 0x25, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x27, 0x3d, 0xd1, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0xa8, 0xfc, 0xdf, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x44, 0xaa, 0x5e, 0xc3, 0xdb, 0x3a, 0x03, 0x7f, 0x37, 0xb7, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x15, 0x58, 0xb2, 0x6a, 0x35, 0x88, 0x60, 0x55, 0xb2, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0xe5, 0xa5, 0x64, 0x1b, 0xfe, 0xa2, 0x59, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xc8, 0x2c, 0xad, 0x3a, 0x28, 0xb3, 0x74, 0x37, 0x88, 0x7f, 0x54, 0xb2, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x06, 0x91, 0x59, 0x5a, 0x75, 0xd0, 0xc0, 0xf5, 0xe9, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x24, 0x76, 0xa8, 0x0d, 0x22, 0x89, 0xad, 0xe9, 0xa0, 0xa0, 0x14, 0xdf, 0xf0, 0xe0, 0xcd, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x88, 0xfd, 0x55, 0xb2, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x00, 0x1f, 0x5c, 0x18, 0x19, 0x59, 0x19, 0xb9, 0x41, 0x09, 0x1d, 0xbb, 0xc1, 0xd3, 0xcf, 0xe5, 0x0e, 0xc2, 0x74, 0x6c, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0xdd, 0x9e, 0x0d, 0x7f, 0x02, 0x6d, 0x10, 0x0b, 0xb4, 0x55, 0x07, 0xf1, 0x81, 0x4c, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x0d, 0x78, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0x45, 0xa5, 0xf8, 0x06, 0xb1, 0x40, 0x5b, 0xd5, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xa9, 0x14, 0x76, 0x83, 0xa2, 0x52, 0xfc, 0x20, 0x82, 0x57, 0xc9, 0x6a, 0xc3, 0x2f, 0x2e, 0x1b, 0xc4, 0x02, 0x6d, 0xd5, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0x57, 0x13, 0x59, 0x1b, 0x2c, 0x7a, 0xc3, 0x5b, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0x50, 0x32, 0x59, 0x35, 0x6b, 0x10, 0xa5, 0xad, 0x64, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x86, 0x80, 0xb4, 0x0e, 0x3f, 0xd4, 0x6c, 0x10, 0x1d, 0x18, 0x64, 0x6d, 0xf8, 0x8b, 0x66, 0x83, 0x93, 0x9e, 0xe8, 0x06, 0x05, 0x69, 0xec, 0x00, 0xef, 0x5d, 0x1a, 0x1d, 0xda, 0x5b, 0x1d, 0xbd, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xbd, 0xc5, 0x6d, 0xd0, 0x8a, 0x94, 0xd6, 0xc1, 0xc9, 0xa9, 0x6f, 0x83, 0x62, 0x47, 0x73, 0x83, 0x83, 0x50, 0xdb, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x66, 0xa5, 0xc9, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x27, 0x82, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x49, 0xa6, 0x6d, 0x83, 0x56, 0xa4, 0xb4, 0x0e, 0xd6, 0x9d, 0xd2, 0x6e, 0x10, 0xc3, 0xd4, 0x64, 0x1d, 0x4e, 0xb1, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x87, 0x53, 0xac, 0x35, 0x88, 0x65, 0xcb, 0xab, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x58, 0xb6, 0xbc, 0x6a, 0x00, 0x1e, 0xc2, 0xe8, 0xde, 0xda, 0x40, 0xe8, 0xde, 0x40, 0xde, 0xc6, 0xe8, 0xe6, 0xe8, 0xe4, 0xca, 0xc2, 0xda, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xba, 0xb0, 0xf6, 0xf0, 0x43, 0xcd, 0x86, 0xbf, 0x68, 0x36, 0x78, 0xfa, 0xb9, 0xdc, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x45, 0xf1, 0xef, 0x06, 0x45, 0xa5, 0xf8, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xe8, 0xc2, 0xda, 0x3a, 0x88, 0x67, 0x6e, 0xb2, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x66, 0x0d, 0xe2, 0x2d, 0x74, 0x6c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xde, 0x42, 0xc7, 0x1a, 0xc0, 0xa7, 0x4e, 0x8e, 0x0d, 0xa4, 0xcc, 0x6d, 0xec, 0x8d, 0xac, 0x6c, 0xc3, 0x2f, 0x4a, 0x1b, 0x44, 0xfa, 0xf7, 0xd8, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xe9, 0x89, 0x6e, 0x70, 0x62, 0xbf, 0xd9, 0xa0, 0x51, 0xf9, 0xbf, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x4a, 0xa4, 0xea, 0x0d, 0x16, 0x3c, 0xde, 0x6f, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0x50, 0x8a, 0x0e, 0x1c, 0x2c, 0x78, 0xff, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xf0, 0xca, 0xdc, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x7a, 0xc4, 0x7e, 0xc3, 0x07, 0x39, 0x1b, 0x2c, 0x69, 0xb1, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0x60, 0x45, 0x8c, 0xfd, 0xc1, 0x32, 0x8a, 0xd3, 0x83, 0xf5, 0x6c, 0xf6, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xaf, 0x64, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x86, 0xad, 0xb4, 0xc1, 0x4a, 0x8f, 0xd1, 0x83, 0x55, 0x5d, 0x70, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x1b, 0xac, 0xf4, 0x18, 0x3d, 0x58, 0x6d, 0x06, 0xd7, 0x1a, 0x1e, 0x61, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x61, 0x2b, 0x6d, 0xb0, 0xd2, 0x63, 0xf4, 0x60, 0x1d, 0xaf, 0xdb, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xef, 0x06, 0x2b, 0x3d, 0x46, 0x0f, 0xd6, 0x15, 0xbb, 0xb5, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x69, 0xd8, 0x4a, 0x1b, 0xac, 0xf4, 0x18, 0x3d, 0x58, 0xf7, 0x23, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xf1, 0xbb, 0xc1, 0x4a, 0x8f, 0xd1, 0x83, 0xf5, 0x46, 0x72, 0xad, 0xe1, 0xdf, 0x9c, 0x0d, 0x16, 0xe1, 0xc9, 0x1d, 0xac, 0xf4, 0x18, 0x5d, 0xc3, 0xbf, 0x39, 0x1b, 0xac, 0xd9, 0x78, 0x3b, 0x58, 0xe9, 0x31, 0xba, 0x86, 0x7f, 0x73, 0x36, 0x58, 0xb7, 0x0e, 0x77, 0xb0, 0xd2, 0x63, 0x74, 0x0d, 0xff, 0xe6, 0x6c, 0xb0, 0xa4, 0x6c, 0xee, 0x60, 0xa5, 0xc7, 0x68, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x95, 0x1e, 0xa3, 0x07, 0x65, 0x9d, 0xe7, 0x86, 0x5f, 0x5c, 0x36, 0x58, 0x2f, 0xfd, 0xb6, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x87, 0x57, 0xe6, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x28, 0xf1, 0x71, 0x37, 0x58, 0x0c, 0x86, 0x77, 0xb0, 0xce, 0x63, 0xb4, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x64, 0xc7, 0x93, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0x4c, 0xdc, 0x83, 0xa8, 0x96, 0x27, 0xeb, 0xa0, 0xac, 0xf3, 0x5c, 0x01, 0x5e, 0xb2, 0xb2, 0x16, 0xba, 0x3a, 0x39, 0x73, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xea, 0xe9, 0xc9, 0x1a, 0x00, 0x4f, 0xe1, 0xc2, 0xe4, 0xe6, 0xca, 0x40, 0xc2, 0x40, 0xa8, 0x98, 0x88, 0x5a, 0xd8, 0xc2, 0xe6, 0xe8, 0x40, 0xc8, 0xde, 0xda, 0xc2, 0xd2, 0xdc, 0x40, 0xe6, 0xe8, 0xe4, 0xd2, 0xdc, 0xce, 0x40, 0xd2, 0xdc, 0xe8, 0xde, 0x40, 0xc2, 0x40, 0xa8, 0x98, 0x88, 0x40, 0xcc, 0xd2, 0xe4, 0xe6, 0xe8, 0x40, 0x56, 0xe8, 0xea, 0xe4, 0xcc, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x21, 0x17, 0xd7, 0xc1, 0x79, 0x76, 0x74, 0xc3, 0x5f, 0x34, 0x6b, 0x10, 0xfa, 0x25, 0x1b, 0x94, 0x4d, 0x98, 0x1b, 0xbc, 0x1c, 0xa5, 0xb1, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0xd6, 0x1a, 0xc0, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0x27, 0xdc, 0x33, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xc4, 0x8e, 0x75, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0xc8, 0xc5, 0xb5, 0xe1, 0xdf, 0xf9, 0x0d, 0x9e, 0x70, 0xcf, 0x78, 0xf0, 0xd4, 0x02, 0xbb, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0xd8, 0xa0, 0x8d, 0x43, 0x07, 0x4f, 0xb8, 0x67, 0xdc, 0xa0, 0xa0, 0xc8, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x67, 0x29, 0xb0, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xf0, 0x84, 0x7b, 0xc6, 0x36, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x06, 0x7c, 0x3a, 0xb4, 0xb7, 0xb9, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0x5e, 0xb2, 0xb2, 0x16, 0xb8, 0x3a, 0x39, 0xb6, 0x83, 0x98, 0xc6, 0xbc, 0x3a, 0x9c, 0x62, 0xad, 0x41, 0x14, 0x0b, 0x94, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x44, 0xb1, 0x40, 0x59, 0x03, 0xf0, 0x50, 0x27, 0xc7, 0xb6, 0x82, 0x56, 0x16, 0x46, 0x56, 0x26, 0x07, 0x02, 0x17, 0x26, 0x37, 0x57, 0x26, 0xb7, 0xe1, 0x41, 0xc9, 0x35, 0xfc, 0xa2, 0xb4, 0x41, 0xbc, 0xa7, 0x3c, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xb2, 0x09, 0x73, 0x83, 0x57, 0x72, 0x2b, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0x1a, 0xc0, 0x6e, 0x78, 0x5a, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x61, 0x75, 0x72, 0x69, 0x6d, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0xf8, 0x79, 0x71, 0x75, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xec, 0x26, 0x94, 0x35, 0x80, 0x5f, 0x5c, 0x5d, 0x99, 0x5c, 0x1e, 0x48, 0x99, 0x1b, 0x59, 0x9a, 0xdb, 0xd9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x41, 0xdb, 0x47, 0x9a, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0xcf, 0x8b, 0xab, 0xcb, 0xeb, 0x60, 0x89, 0x49, 0xe9, 0x2c, 0xe0, 0xc3, 0xbd, 0xb1, 0x91, 0x1b, 0xde, 0xed, 0xd9, 0x60, 0x09, 0x4e, 0xe8, 0x06, 0x8b, 0x7d, 0xee, 0x0e, 0xd6, 0x62, 0x97, 0xae, 0x80, 0x0f, 0x37, 0xf6, 0xb6, 0x6e, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0xe8, 0x43, 0x59, 0x03, 0x78, 0x8d, 0xbd, 0xbd, 0xad, 0xa5, 0x95, 0x81, 0x8c, 0xa1, 0x85, 0xc9, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x65, 0xc7, 0xa0, 0x1b, 0xac, 0xc5, 0xc1, 0xdc, 0xa0, 0x01, 0x62, 0xd0, 0x0d, 0x9a, 0x3e, 0xbe, 0xdc, 0xa0, 0xed, 0x2b, 0xd1, 0x83, 0x55, 0xd2, 0xa0, 0x2b, 0xe0, 0xc3, 0xc5, 0xd5, 0xbd, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xf1, 0x3b, 0x51, 0xd6, 0x00, 0x3c, 0xb8, 0xbd, 0xc9, 0xb5, 0x85, 0xb1, 0x81, 0xc4, 0xd5, 0x95, 0xc9, 0xe5, 0x81, 0x8c, 0xa1, 0x85, 0xc9, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x57, 0x26, 0x5a, 0xb6, 0x86, 0xb7, 0x75, 0x06, 0x7c, 0xb8, 0xb2, 0xb9, 0xb1, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xfc, 0x38, 0x94, 0xb5, 0xc1, 0x02, 0x3b, 0xd3, 0x0d, 0xda, 0x3e, 0xd2, 0xdc, 0x60, 0x21, 0x1c, 0xe9, 0x41, 0xc3, 0xc7, 0x97, 0xab, 0x41, 0xe4, 0x07, 0x94, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x44, 0x7e, 0x40, 0x59, 0x03, 0xf0, 0x22, 0x33, 0x93, 0x63, 0x03, 0x82, 0xf6, 0x36, 0x47, 0xc7, 0x02, 0xe2, 0xf6, 0x06, 0xc2, 0xf6, 0x36, 0x16, 0xc6, 0xb6, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x56, 0x81, 0xc9, 0x6e, 0x50, 0x74, 0x1a, 0xaf, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x2f, 0x4c, 0x4c, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x77, 0x65, 0x61, 0x6b, 0x20, 0x68, 0x65, 0x72, 0x65, 0x07, 0x4b, 0xec, 0x58, 0xd7, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3c, 0x88, 0x2b, 0xf3, 0xa7, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0xc1, 0xc5, 0x83, 0xe5, 0x04, 0xf5, 0x1b, 0x14, 0x7c, 0x98, 0x1b, 0x1c, 0x1e, 0x0a, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x1f, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x91, 0x89, 0xbb, 0x41, 0x51, 0x29, 0x7e, 0x50, 0xf8, 0xa0, 0x6e, 0x50, 0xec, 0x68, 0x6e, 0xb0, 0xe8, 0x44, 0xee, 0xe0, 0xac, 0x62, 0xb0, 0xe1, 0xdd, 0x9e, 0x0d, 0xd6, 0xcc, 0x86, 0x6e, 0xb0, 0xf6, 0x85, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x64, 0x6c, 0x61, 0x62, 0xad, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x96, 0x39, 0xc9, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0xb0, 0x2c, 0xc7, 0x65, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0x83, 0xa5, 0xa9, 0xf3, 0x07, 0x2b, 0xc0, 0x55, 0x0f, 0x56, 0xe3, 0xd4, 0x6f, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0x54, 0x35, 0x74, 0x83, 0x54, 0xec, 0xdf, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x83, 0x95, 0x2d, 0x71, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x55, 0x34, 0xf4, 0x1b, 0xac, 0x8e, 0xaa, 0x5f, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0xdd, 0x60, 0xed, 0x0b, 0xe9, 0xc1, 0x6a, 0x22, 0xfa, 0xaa, 0x15, 0xf0, 0xc3, 0xea, 0xe4, 0xcc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe8, 0x64, 0x29, 0x6b, 0x00, 0x3e, 0x64, 0x66, 0x72, 0x6c, 0x40, 0xee, 0xd2, 0xe8, 0xd0, 0x40, 0xcc, 0xe4, 0xc2, 0xce, 0xda, 0xca, 0xdc, 0xe8, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x06, 0x8b, 0x0b, 0x93, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x41, 0x24, 0xe5, 0x8e, 0x1d, 0x9e, 0xd6, 0xd9, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x2b, 0x2a, 0x42, 0x37, 0x88, 0x60, 0x84, 0xb2, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xfb, 0xf7, 0x99, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0xa4, 0xf9, 0xa9, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x55, 0x82, 0x6e, 0xb0, 0x1c, 0x59, 0x78, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x50, 0x31, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x70, 0x71, 0x75, 0x65, 0x55, 0x1d, 0x4e, 0xb1, 0x5a, 0x83, 0xd8, 0x47, 0x28, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x7d, 0x84, 0xb2, 0x06, 0xf8, 0x65, 0x66, 0x72, 0x6c, 0x40, 0xaa, 0xa4, 0x98, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xa3, 0xd1, 0xd1, 0xcd, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0x9f, 0x0e, 0xed, 0x4d, 0xae, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0x87, 0xc1, 0x85, 0xd1, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0x94, 0xae, 0x41, 0x21, 0x98, 0x7a, 0xf0, 0x20, 0xf3, 0xc5, 0x5a, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0x6e, 0x42, 0x59, 0xb5, 0x1a, 0xc4, 0x1b, 0x4e, 0xd9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xbc, 0xe1, 0x94, 0x35, 0xc0, 0x37, 0x37, 0x86, 0x56, 0xd6, 0x56, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x12, 0x3b, 0xd6, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x28, 0xdc, 0x44, 0x37, 0x28, 0x9b, 0xea, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x0d, 0xb5, 0xbe, 0xae, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xd2, 0x9b, 0x7e, 0x83, 0xf5, 0x5a, 0xcf, 0x07, 0x47, 0xe6, 0xd6, 0x36, 0xfc, 0xe2, 0xb2, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0xc1, 0x73, 0x0c, 0x11, 0x0f, 0x0a, 0xd8, 0xfc, 0xd5, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x62, 0x61, 0x25, 0xe9, 0xa0, 0xc8, 0x69, 0x3d, 0x28, 0xeb, 0x3c, 0x6b, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x2b, 0x18, 0x5d, 0xc3, 0xdb, 0x3a, 0x03, 0xfe, 0xdc, 0x58, 0x59, 0xdb, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x06, 0x0b, 0xe1, 0x48, 0x37, 0x58, 0x60, 0x67, 0x7a, 0xb0, 0xbc, 0xce, 0xb4, 0x15, 0xf0, 0xe7, 0xda, 0xca, 0xce, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x68, 0x38, 0x2a, 0x6b, 0x00, 0x3f, 0x99, 0x99, 0x1c, 0x1b, 0x90, 0xb9, 0xb2, 0xb3, 0xb6, 0x32, 0x37, 0xba, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xac, 0x12, 0x74, 0x83, 0xe5, 0xc8, 0xc2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x8a, 0xa1, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x87, 0x1b, 0x0b, 0x93, 0xab, 0x59, 0xc0, 0x37, 0x8b, 0xab, 0xab, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x22, 0x66, 0xa9, 0xac, 0x01, 0xf8, 0x79, 0x83, 0xa3, 0x4b, 0x7b, 0x73, 0x0b, 0x63, 0x03, 0x89, 0xab, 0x2b, 0x93, 0xcb, 0x03, 0x31, 0x4b, 0x2b, 0x63, 0x23, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x2a, 0x41, 0x37, 0x58, 0x8e, 0x2c, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xa8, 0x18, 0xba, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xdf, 0x89, 0xb2, 0x6a, 0x05, 0x7c, 0xba, 0xb7, 0xb1, 0x75, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x92, 0x9f, 0xca, 0x1a, 0xc0, 0xd7, 0x46, 0xc6, 0xa6, 0x06, 0x44, 0x2e, 0xec, 0x0e, 0xc4, 0x2e, 0x8c, 0xad, 0xae, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xab, 0x04, 0xdd, 0x60, 0x39, 0xb2, 0xf0, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x61, 0x32, 0xe9, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x46, 0x1f, 0xca, 0xaa, 0xd5, 0x20, 0x16, 0x69, 0xca, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x62, 0x91, 0xa6, 0xac, 0x01, 0xbc, 0x67, 0x72, 0x70, 0x6c, 0x40, 0xe2, 0xea, 0xca, 0xe4, 0xf2, 0x40, 0xc6, 0xd0, 0xc2, 0xe4, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x0d, 0xe2, 0x50, 0xa9, 0x6c, 0x83, 0x05, 0x76, 0xa6, 0x07, 0x0d, 0x5a, 0x69, 0x1e, 0x4e, 0xb1, 0x35, 0x78, 0x65, 0xa2, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0xc1, 0x2b, 0x13, 0x2d, 0x1b, 0xc0, 0x5b, 0x66, 0x26, 0xc7, 0x06, 0xa4, 0xce, 0x4d, 0xae, 0x6c, 0xae, 0x4c, 0xce, 0xae, 0x8c, 0x6c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0xdd, 0x60, 0x15, 0x82, 0xe8, 0x06, 0x8b, 0x85, 0x42, 0x37, 0x58, 0xc8, 0x20, 0xba, 0xc1, 0xda, 0x17, 0xd2, 0x0d, 0x5a, 0x45, 0xc5, 0xdc, 0x20, 0x8d, 0xf6, 0x68, 0x83, 0x06, 0xe0, 0x32, 0x37, 0x58, 0xe4, 0x0c, 0x7a, 0xd0, 0x74, 0xc1, 0xe5, 0xe1, 0x14, 0x5b, 0x83, 0xc8, 0xbc, 0x28, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0xcc, 0x8b, 0xb2, 0x06, 0xf0, 0x93, 0x99, 0xc9, 0xb1, 0x01, 0x29, 0x9b, 0x1b, 0x0b, 0x83, 0x2b, 0x23, 0xdb, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x6b, 0xc7, 0x41, 0x37, 0x68, 0x09, 0x1e, 0xf3, 0x60, 0xb1, 0x3c, 0xe8, 0x2c, 0xe0, 0xd3, 0xbd, 0xcd, 0xad, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xf1, 0x0b, 0x56, 0xd6, 0x00, 0x3c, 0xd8, 0xc8, 0xd8, 0xd4, 0x80, 0xc4, 0xd5, 0xbd, 0xd1, 0x95, 0x91, 0x81, 0xd8, 0x85, 0xb1, 0xd5, 0x95, 0x6d, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x48, 0x7e, 0x2a, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x50, 0x93, 0x74, 0x83, 0xe6, 0xad, 0x44, 0x37, 0x88, 0xeb, 0xb1, 0xb2, 0x3a, 0x9c, 0x62, 0x6b, 0x10, 0x05, 0x39, 0x65, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0x51, 0x90, 0x53, 0xd6, 0x00, 0xbe, 0x32, 0x33, 0x39, 0x36, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x2b, 0x70, 0x6f, 0x72, 0x74, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0xab, 0x04, 0x5d, 0x83, 0x42, 0xb9, 0x73, 0x83, 0xf3, 0x60, 0xd2, 0x86, 0x5f, 0x5c, 0x36, 0x38, 0x67, 0x26, 0x6d, 0x70, 0x7c, 0x37, 0x68, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0xdd, 0x20, 0x7e, 0x03, 0xca, 0xd6, 0x60, 0x85, 0x50, 0xd3, 0x06, 0x0d, 0x68, 0xf1, 0x6e, 0xb0, 0xc8, 0xa4, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x85, 0x70, 0xa4, 0x07, 0xeb, 0x35, 0x56, 0x6b, 0x16, 0xf0, 0xc3, 0xea, 0xe4, 0xea, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xe8, 0x64, 0x2b, 0x6b, 0x00, 0x7e, 0x64, 0x66, 0x72, 0x6c, 0x40, 0xee, 0xd2, 0xe8, 0xd0, 0x40, 0xda, 0xc2, 0xf2, 0xc4, 0xca, 0x40, 0xea, 0xe6, 0xca, 0xe4, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0xdc, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x1c, 0x3e, 0x7c, 0xb0, 0xba, 0x86, 0x3f, 0x97, 0x06, 0x8f, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x35, 0xfc, 0x3b, 0xbf, 0x06, 0x8f, 0x40, 0x5c, 0xac, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xf2, 0x86, 0xcf, 0x95, 0x36, 0x38, 0xdf, 0x11, 0x6e, 0xf0, 0x4a, 0x7b, 0xc6, 0x5a, 0xc3, 0x9f, 0x4b, 0x83, 0x8b, 0x1b, 0x3e, 0x57, 0xda, 0xe0, 0x41, 0xe6, 0x8b, 0x1b, 0xbc, 0x49, 0x7d, 0xb1, 0x36, 0xfc, 0x45, 0xb3, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0xe9, 0x4d, 0xbf, 0x41, 0x14, 0xc7, 0x95, 0x1d, 0x44, 0xef, 0x41, 0xd9, 0x86, 0x5f, 0x5c, 0x36, 0x68, 0x71, 0x2e, 0x75, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x1a, 0x7d, 0x4b, 0xdd, 0xa0, 0x94, 0xcd, 0xec, 0xf0, 0x16, 0x5a, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x06, 0x51, 0x83, 0x53, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xff, 0x3e, 0x73, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xae, 0x60, 0x74, 0x83, 0x75, 0x15, 0xb0, 0x07, 0x8d, 0x64, 0xb4, 0x76, 0x10, 0xc7, 0x38, 0x65, 0x07, 0x11, 0x96, 0x53, 0x76, 0x38, 0xc5, 0xd6, 0x20, 0x7e, 0x75, 0xca, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xe2, 0x57, 0xa7, 0xac, 0x01, 0x3c, 0x65, 0x66, 0x72, 0x6c, 0x40, 0xc2, 0xc4, 0xe6, 0xbe, 0xe0, 0xc2, 0xe8, 0xd0, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0x56, 0x09, 0xba, 0x86, 0xb7, 0x75, 0x06, 0x7c, 0xb2, 0x32, 0x33, 0xba, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x76, 0x1c, 0x74, 0x83, 0x05, 0x76, 0xa6, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x75, 0xad, 0xa4, 0x1b, 0x2c, 0xb0, 0x33, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0xc3, 0x51, 0x59, 0x35, 0x6b, 0xf0, 0xd4, 0xa3, 0xa0, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa7, 0x1e, 0x05, 0x35, 0x80, 0xbf, 0x8c, 0x4d, 0x8c, 0x0d, 0x88, 0x5c, 0x59, 0x5c, 0x5d, 0xd9, 0x1c, 0x5d, 0x4b, 0x9d, 0x5c, 0xda, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0xc1, 0x2a, 0x30, 0xd9, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x0f, 0x0f, 0x5e, 0xc9, 0xad, 0x78, 0x78, 0x5a, 0xe7, 0x20, 0x7a, 0x11, 0xca, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x40, 0x5b, 0xdd, 0x60, 0x99, 0x93, 0xec, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x45, 0x45, 0xe8, 0x06, 0x51, 0xa8, 0x53, 0x76, 0x10, 0x29, 0x3c, 0x65, 0xb5, 0x1a, 0x44, 0xb0, 0x52, 0xd9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x04, 0x2b, 0x95, 0x35, 0x80, 0xaf, 0xcc, 0x4c, 0x8e, 0x0d, 0x08, 0x5c, 0x18, 0x1d, 0x1a, 0xc8, 0x18, 0x5a, 0x98, 0xdc, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x41, 0x5c, 0x5b, 0x94, 0x6d, 0x10, 0x5f, 0x17, 0x65, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x87, 0x9b, 0xab, 0x13, 0xdb, 0x60, 0x21, 0x1c, 0xe9, 0x41, 0x23, 0x19, 0xad, 0x2b, 0xe0, 0x9b, 0xc5, 0xd5, 0x95, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xf1, 0xd9, 0x58, 0xd6, 0x00, 0x7c, 0xb8, 0xbd, 0xc9, 0xb5, 0x85, 0xb1, 0x81, 0xc4, 0xd5, 0x95, 0xc9, 0xe5, 0x81, 0x98, 0xa5, 0x95, 0xb1, 0x91, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x1b, 0x2c, 0x47, 0x16, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x4c, 0x26, 0x3d, 0x88, 0x95, 0xa7, 0xb2, 0x0e, 0xa7, 0xd8, 0x1a, 0xc4, 0x51, 0x51, 0xd9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x1c, 0x15, 0x95, 0x35, 0x80, 0x97, 0xcc, 0x4c, 0x8e, 0x0d, 0xc8, 0xdc, 0x18, 0x5a, 0x59, 0x5b, 0xd9, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0xcb, 0x2a, 0x41, 0xd7, 0xf0, 0x8b, 0xd2, 0x06, 0x8b, 0x08, 0xea, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x72, 0x64, 0xe1, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xf3, 0x60, 0xe6, 0x0e, 0x0f, 0xfd, 0xb4, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0x5a, 0xd9, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x50, 0x31, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x83, 0x55, 0x08, 0xa2, 0x1b, 0x2c, 0x03, 0x30, 0xdd, 0x60, 0xb1, 0x50, 0xe8, 0xc1, 0x72, 0xf9, 0xd5, 0x3a, 0x9c, 0x62, 0x0b, 0xf8, 0x63, 0x6f, 0x63, 0xeb, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xec, 0x65, 0x96, 0x35, 0xc0, 0x37, 0xf6, 0xf6, 0xb6, 0x96, 0x56, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x9a, 0xd9, 0xd0, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x0d, 0x1a, 0x20, 0x06, 0x3d, 0x58, 0xe1, 0x4c, 0xba, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0x9e, 0x6a, 0xa5, 0xd8, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x8b, 0xf9, 0x47, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xf1, 0x0b, 0x56, 0x56, 0xcd, 0x1a, 0x44, 0x2c, 0x63, 0xd9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xc4, 0x32, 0x96, 0x35, 0x80, 0xf7, 0x4c, 0x0e, 0x8e, 0x0d, 0xc8, 0x5c, 0x9d, 0x58, 0x0b, 0x59, 0x19, 0x5b, 0x5a, 0xdb, 0xdc, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0x41, 0xab, 0xa8, 0x98, 0x1b, 0xac, 0xf0, 0x53, 0xdf, 0xa0, 0xb1, 0xf9, 0xcb, 0x0d, 0x16, 0x39, 0x83, 0x6e, 0xd0, 0x78, 0xc1, 0xe5, 0x06, 0xeb, 0x1c, 0x31, 0x37, 0x68, 0x00, 0x2e, 0x73, 0x83, 0x65, 0x00, 0xa6, 0x1b, 0x34, 0x7d, 0x7c, 0xb9, 0x41, 0x03, 0xc4, 0xa0, 0x07, 0xab, 0x01, 0x48, 0x0f, 0xa7, 0xd8, 0x1a, 0x3c, 0xd5, 0x4a, 0x71, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0xe0, 0xa9, 0x56, 0x8a, 0x0d, 0xe0, 0x23, 0x63, 0x13, 0x63, 0x03, 0x42, 0xf7, 0xb6, 0x56, 0xe6, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0x55, 0x82, 0x6e, 0xb0, 0x1c, 0x59, 0x78, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x30, 0x99, 0x74, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x70, 0x74, 0x6f, 0x6b, 0xb5, 0x1a, 0xc4, 0x7a, 0x49, 0xd9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0xac, 0x97, 0x94, 0x35, 0x80, 0xbf, 0xcc, 0x4c, 0x8e, 0x0d, 0x08, 0xd9, 0x5b, 0x5b, 0x58, 0x9a, 0x1b, 0x5b, 0x98, 0x58, 0x19, 0xdb, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x4b, 0xec, 0x58, 0xd7, 0xf0, 0x8b, 0xd2, 0x06, 0x4b, 0x02, 0xe7, 0x36, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0x6f, 0xce, 0x06, 0x6b, 0x36, 0xde, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x89, 0x8f, 0xbb, 0x86, 0x5f, 0x5c, 0x36, 0x28, 0x2a, 0xc5, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0xd7, 0x7c, 0x0e, 0x96, 0xe4, 0xa4, 0x76, 0x78, 0xe8, 0x67, 0x83, 0xb3, 0x4d, 0xc2, 0x41, 0x41, 0x91, 0xb9, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xb2, 0x4a, 0xd0, 0x0d, 0x22, 0x93, 0xb2, 0x6c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0xdd, 0x60, 0x15, 0x82, 0xe8, 0xc1, 0x6a, 0x67, 0xd3, 0x59, 0x83, 0x88, 0x6c, 0x28, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0xc8, 0x86, 0xb2, 0x0e, 0xde, 0x87, 0xd8, 0xb8, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0xba, 0x56, 0xd2, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x7a, 0x60, 0xd0, 0x0d, 0x1a, 0x9b, 0xbf, 0x3c, 0x68, 0x7e, 0x18, 0x74, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0x67, 0x63, 0x59, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xb5, 0xe3, 0xa0, 0x1b, 0x2c, 0xe6, 0x1f, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0xcc, 0x52, 0x59, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x56, 0xa0, 0x94, 0x6e, 0xb0, 0x56, 0xa1, 0xae, 0x5a, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x65, 0x95, 0xa0, 0x6b, 0xf8, 0x45, 0x69, 0x83, 0x45, 0x04, 0x75, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x2f, 0x2e, 0x1b, 0x24, 0xa5, 0x05, 0x1f, 0xc4, 0xb9, 0x0e, 0xd8, 0x41, 0x59, 0xe7, 0x79, 0x10, 0xd1, 0x33, 0x65, 0x1d, 0x4e, 0xb1, 0x35, 0x88, 0x74, 0xbf, 0xb2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x48, 0xf7, 0x2b, 0x6b, 0x00, 0x5e, 0xe0, 0xc2, 0xe4, 0xe6, 0xca, 0x40, 0xea, 0xe4, 0xd8, 0x40, 0xca, 0xf0, 0xe8, 0xca, 0xdc, 0xe6, 0xd2, 0xde, 0xdc, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb9, 0x30, 0xfc, 0x20, 0xae, 0xcc, 0x9f, 0x36, 0x7c, 0x85, 0xb3, 0xe1, 0x2f, 0x9a, 0x0d, 0x1e, 0x64, 0xbe, 0xb8, 0x41, 0x09, 0x8f, 0xb9, 0x80, 0x27, 0x17, 0x86, 0xb7, 0xc1, 0x59, 0x56, 0x6a, 0x83, 0x62, 0x40, 0x76, 0xc1, 0xe9, 0x83, 0x78, 0x07, 0x2e, 0x5b, 0xc3, 0x83, 0x92, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x1c, 0x44, 0x06, 0xe9, 0xd8, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x5e, 0x9a, 0x5c, 0xd9, 0x1a, 0xde, 0xd6, 0x39, 0x88, 0xb1, 0xcf, 0xb1, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xe0, 0xde, 0xd6, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xe2, 0x1d, 0xb8, 0x6c, 0xc3, 0xdb, 0x3a, 0x07, 0x11, 0x1c, 0x5c, 0xd6, 0x1a, 0x3e, 0x77, 0x19, 0xf0, 0xd2, 0xe4, 0xca, 0x0d, 0x6f, 0xeb, 0x0c, 0x9e, 0x1e, 0xc4, 0x3b, 0x70, 0x59, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0xf8, 0xbe, 0x7d, 0xc0, 0x93, 0x0b, 0x33, 0x37, 0x28, 0xa1, 0x63, 0xd7, 0x20, 0xf4, 0x4b, 0x36, 0x58, 0xd4, 0x75, 0x7a, 0xb0, 0xe4, 0x09, 0xfa, 0x20, 0x4c, 0xc7, 0xd6, 0xe0, 0xc4, 0x7e, 0xb3, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x57, 0x30, 0xba, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x4b, 0xec, 0x58, 0xd7, 0xf0, 0x8b, 0xd2, 0x86, 0x2f, 0x97, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x86, 0x1f, 0x61, 0xda, 0x60, 0x2d, 0x95, 0x5d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe5, 0xc8, 0xc2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0xf9, 0x60, 0x9d, 0xf5, 0x5b, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x1b, 0x2c, 0x86, 0x0b, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x54, 0x0c, 0x3d, 0x58, 0xea, 0x98, 0xdf, 0xc1, 0x72, 0xf9, 0xd5, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x31, 0x99, 0xc3, 0x63, 0x32, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0x79, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x0c, 0xfb, 0x6d, 0x83, 0x88, 0x36, 0x2e, 0xab, 0x36, 0x28, 0xe1, 0x31, 0x17, 0x3c, 0x1e, 0xf0, 0xe4, 0xc2, 0xcc, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x05, 0x45, 0xe6, 0x1a, 0x7e, 0x71, 0xd9, 0x20, 0xa2, 0x8d, 0xcb, 0x0e, 0xca, 0x3a, 0xcf, 0x36, 0x7c, 0x62, 0xb3, 0x86, 0xbf, 0x68, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xca, 0xf0, 0xe8, 0x83, 0xf5, 0x5a, 0xcf, 0x1b, 0xa4, 0x26, 0x60, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0xcf, 0x2c, 0x8f, 0x3d, 0x38, 0xe9, 0x89, 0xb6, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0xc8, 0x8d, 0x2e, 0xdb, 0xa0, 0x30, 0x54, 0x5d, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0x32, 0x3c, 0xba, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x66, 0x79, 0x6c, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x47, 0x16, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x16, 0xcb, 0x1b, 0x44, 0x0c, 0x76, 0x59, 0x1d, 0x94, 0x75, 0x9e, 0xb3, 0x06, 0xb1, 0x91, 0x5a, 0xb6, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x10, 0x1b, 0xa9, 0x65, 0x1d, 0xc4, 0xb5, 0x69, 0xd9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x0f, 0x0c, 0xba, 0xc1, 0x2a, 0x04, 0xd1, 0x0d, 0x5a, 0x45, 0xc5, 0xdc, 0x20, 0xcd, 0x4f, 0x75, 0x83, 0x15, 0x7e, 0xea, 0x1b, 0xb4, 0x04, 0x8f, 0xb9, 0x41, 0x63, 0xf3, 0x97, 0x1b, 0x2c, 0x72, 0x06, 0xdd, 0xa0, 0x01, 0xb8, 0xcc, 0x0d, 0x96, 0x01, 0x98, 0x6e, 0xb0, 0x58, 0x28, 0x74, 0x83, 0xb5, 0x2f, 0xa4, 0x1b, 0xb4, 0xc7, 0x7d, 0xb9, 0xc1, 0x42, 0x06, 0xd1, 0x0d, 0x1a, 0x63, 0xd3, 0xdc, 0xa0, 0x0d, 0x01, 0xcc, 0x83, 0xe5, 0x4f, 0xac, 0x87, 0x53, 0xec, 0x70, 0x8a, 0xad, 0x06, 0x4f, 0x70, 0x06, 0xdb, 0x20, 0xf5, 0xa2, 0x78, 0x83, 0xb2, 0x4b, 0x76, 0x83, 0x27, 0x38, 0x83, 0x6d, 0xf0, 0x66, 0xe1, 0x93, 0xd9, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0x16, 0x78, 0xb2, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x88, 0xb8, 0x7a, 0xa9, 0x01, 0xf8, 0x80, 0x0b, 0x93, 0x9b, 0x2b, 0x03, 0x19, 0x7b, 0x93, 0x23, 0x03, 0xa1, 0x7b, 0x03, 0x51, 0x9a, 0x7a, 0x72, 0xda, 0xa0, 0xec, 0x92, 0x1d, 0x78, 0xb2, 0x72, 0x83, 0x62, 0x50, 0x76, 0x36, 0x38, 0x60, 0xd1, 0xad, 0xe1, 0x17, 0xa5, 0x0d, 0xde, 0x4d, 0xc1, 0xb2, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x35, 0xfc, 0x3b, 0xbf, 0xe2, 0x38, 0x07, 0x4f, 0x70, 0x06, 0xab, 0x36, 0xbc, 0xdb, 0xb3, 0xc1, 0x5a, 0x03, 0xd8, 0x0d, 0x96, 0x81, 0x9f, 0x1f, 0xc4, 0x10, 0xc4, 0xd8, 0x32, 0x6b, 0x10, 0x41, 0x20, 0x60, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0x04, 0x84, 0x80, 0x1d, 0x3c, 0x83, 0x64, 0x73, 0x83, 0x15, 0x42, 0x4d, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x35, 0xa7, 0x1b, 0x9c, 0x08, 0xda, 0x5a, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x6f, 0x0b, 0xcb, 0x13, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x87, 0x4b, 0x2b, 0x1b, 0x3b, 0x58, 0x6d, 0x14, 0xda, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x0e, 0xda, 0xcb, 0x0e, 0x16, 0x84, 0xce, 0xaf, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0x56, 0x54, 0x84, 0x6e, 0xb0, 0x7c, 0x48, 0x7f, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x50, 0x31, 0xf4, 0x60, 0xd1, 0xa4, 0x69, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0x86, 0xbd, 0x6c, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x66, 0x72, 0x61, 0x63, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0x86, 0xbd, 0xec, 0xa0, 0x45, 0x8b, 0xe0, 0x56, 0xc0, 0x9f, 0xa3, 0x93, 0x4b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x22, 0x5a, 0xbe, 0xac, 0x83, 0x77, 0xc3, 0x6c, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xc4, 0x8e, 0x75, 0x0d, 0xbf, 0x28, 0x6d, 0x10, 0xef, 0x29, 0x4f, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x0c, 0xf8, 0x73, 0x75, 0x6e, 0x65, 0x87, 0x87, 0x7e, 0x0e, 0x56, 0x8e, 0xdd, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x1b, 0x2c, 0x47, 0x16, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd4, 0x24, 0xdd, 0xa0, 0x79, 0x2b, 0xd1, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x42, 0xc5, 0xd0, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xab, 0x8d, 0xa1, 0x85, 0x55, 0xb3, 0x06, 0x8d, 0x4d, 0x7a, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0xad, 0x5e, 0x7e, 0x1f, 0xbc, 0x67, 0x60, 0x73, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc1, 0x09, 0xdd, 0xa0, 0xc8, 0x69, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x7c, 0x18, 0x5d, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x07, 0x11, 0xf8, 0x9c, 0x54, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x25, 0x38, 0xa1, 0x1b, 0x14, 0xb0, 0xf9, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x0f, 0xa3, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0x20, 0xa2, 0x98, 0x93, 0xaa, 0xd5, 0x20, 0x82, 0xda, 0xcb, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x22, 0xa8, 0xbd, 0xac, 0x83, 0x63, 0xeb, 0xe6, 0x06, 0x85, 0x72, 0xe7, 0x06, 0x0b, 0x7e, 0x6c, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0xe1, 0xcb, 0xa5, 0x83, 0x36, 0x02, 0x44, 0x0f, 0xda, 0x2d, 0xd6, 0x9e, 0x05, 0xfc, 0x30, 0xb1, 0x37, 0x7c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xd2, 0x05, 0xcc, 0x3a, 0x78, 0x27, 0xbc, 0xe6, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x2b, 0xd0, 0x56, 0x37, 0x48, 0x72, 0x78, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x35, 0x49, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xed, 0x4e, 0x5c, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xdf, 0xa5, 0xcd, 0xa1, 0x1d, 0xb4, 0x5b, 0x71, 0xd9, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x5d, 0x2b, 0xe9, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x0a, 0x0d, 0xcc, 0x0e, 0x1a, 0x3e, 0xbe, 0x3c, 0x88, 0x21, 0x88, 0xb1, 0x0e, 0xa7, 0xd8, 0x02, 0x7e, 0x9d, 0x5b, 0xda, 0xb8, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x10, 0x27, 0x09, 0x66, 0x0d, 0xa0, 0x59, 0x36, 0x37, 0x16, 0x06, 0x57, 0x46, 0x06, 0x52, 0x45, 0x65, 0x14, 0x63, 0xdb, 0x60, 0xa5, 0x8b, 0xd3, 0x02, 0x1e, 0xdb, 0x9b, 0xd8, 0x06, 0x4b, 0xd7, 0x50, 0x37, 0x58, 0xe9, 0xe2, 0xb4, 0x80, 0x87, 0x36, 0x27, 0xb6, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x0f, 0x04, 0x00, 0xec, 0x06, 0x2b, 0x5d, 0x9c, 0x16, 0xf0, 0xd8, 0xe6, 0xc4, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x81, 0x00, 0xc0, 0xdd, 0x60, 0xa5, 0x8b, 0xd3, 0x06, 0xf1, 0xb0, 0x44, 0xb5, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x0f, 0x04, 0x00, 0xf0, 0x06, 0x2b, 0x5d, 0x9c, 0x36, 0x68, 0xe4, 0xae, 0x78, 0x83, 0x64, 0xfc, 0xc6, 0x0d, 0x0e, 0x58, 0x74, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0xac, 0x12, 0x74, 0x0d, 0xbf, 0x28, 0x6d, 0xf8, 0x72, 0x69, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0x67, 0x47, 0x0f, 0xe2, 0xe6, 0x71, 0x6c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x1d, 0x07, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd8, 0x08, 0xdd, 0x60, 0x95, 0xeb, 0x62, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0xf5, 0xc0, 0xa0, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x9f, 0x7b, 0x63, 0x7b, 0x3b, 0x28, 0xbb, 0xe9, 0x5b, 0x66, 0x0d, 0x42, 0x53, 0x69, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x34, 0x95, 0x1a, 0x80, 0x9f, 0x2a, 0x2a, 0xa3, 0x18, 0x1b, 0x90, 0xb9, 0x3a, 0x39, 0xb9, 0xb7, 0xb3, 0x30, 0xba, 0x32, 0x10, 0xb8, 0xb0, 0x34, 0xb9, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x12, 0x1f, 0x7a, 0xf8, 0xa1, 0x66, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0xca, 0x30, 0xf4, 0xf0, 0x43, 0x4d, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x3c, 0x3b, 0xba, 0x41, 0x92, 0x01, 0xe1, 0x86, 0x3f, 0x81, 0x36, 0x68, 0xc9, 0xae, 0x78, 0x83, 0x85, 0x84, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xd2, 0x80, 0x77, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0x4c, 0xe6, 0xe0, 0xa8, 0xc0, 0x76, 0xb0, 0xe6, 0x3d, 0xb4, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xc4, 0x8e, 0x75, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0xbf, 0xad, 0x2c, 0x8c, 0x6e, 0x0d, 0x6f, 0xeb, 0x1c, 0xc4, 0x23, 0x83, 0xd9, 0x1a, 0xde, 0xd6, 0x39, 0x88, 0xe4, 0x06, 0xb3, 0x83, 0xf4, 0x14, 0xa8, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xc7, 0xd5, 0x85, 0x91, 0xb5, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xf8, 0x30, 0xba, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x83, 0xe7, 0xaa, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xb1, 0x63, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0xae, 0x87, 0xd9, 0x06, 0x31, 0xfd, 0x61, 0xb6, 0x41, 0xfc, 0x3f, 0x51, 0x1d, 0xa4, 0xa7, 0x40, 0x1d, 0x44, 0x24, 0x88, 0x59, 0xcd, 0x1a, 0x44, 0x38, 0x85, 0xd9, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xad, 0x06, 0xa5, 0xa6, 0xe5, 0x41, 0x84, 0x53, 0x98, 0x35, 0x00, 0x1d, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x55, 0x54, 0x46, 0x31, 0xb6, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0x1e, 0x18, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xc4, 0x8e, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xbb, 0x1e, 0x66, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x66, 0x17, 0xcc, 0x36, 0x88, 0xa8, 0x0f, 0xb3, 0x83, 0x54, 0x5b, 0xb8, 0x83, 0x88, 0x04, 0x31, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xb1, 0x63, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0xae, 0x87, 0xd9, 0x06, 0xf1, 0xff, 0x44, 0xb5, 0x41, 0x4b, 0x76, 0xc5, 0x07, 0xa9, 0xb6, 0x70, 0x07, 0x11, 0x09, 0x62, 0xd6, 0xac, 0x41, 0xd4, 0x7b, 0x98, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0x44, 0xbd, 0x87, 0x59, 0x03, 0xd0, 0x71, 0x56, 0xe6, 0x06, 0x72, 0x16, 0x46, 0x57, 0x06, 0x62, 0xf6, 0x26, 0x07, 0x32, 0x57, 0x16, 0x26, 0xa7, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xd0, 0x13, 0x36, 0x36, 0x56, 0x06, 0x47, 0x07, 0xe2, 0x56, 0xd7, 0x06, 0x92, 0xe6, 0x06, 0x22, 0x17, 0xe6, 0x76, 0x56, 0xc6, 0xda, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0x41, 0xa7, 0xfd, 0xc1, 0xb1, 0xa5, 0x74, 0x0d, 0x7f, 0x2e, 0x6d, 0x50, 0x5e, 0x5e, 0x1e, 0x1c, 0x5b, 0x4a, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x67, 0xc6, 0x06, 0x1f, 0x3e, 0x58, 0x6d, 0xc3, 0x2f, 0x4a, 0x6b, 0x78, 0xe2, 0x7d, 0x0d, 0x77, 0xda, 0x0c, 0xc0, 0xc3, 0x1b, 0x1c, 0x5d, 0xda, 0x9b, 0x5b, 0x18, 0x1b, 0x5b, 0x1e, 0x88, 0x5c, 0x19, 0x59, 0xdd, 0x58, 0xd9, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb9, 0x3a, 0xf9, 0xe0, 0xd8, 0x52, 0xba, 0xe1, 0x2f, 0x9a, 0x0d, 0x0e, 0xed, 0x32, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x86, 0xad, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0xb9, 0x3a, 0xb9, 0x83, 0x05, 0xb0, 0xf6, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0x67, 0x1b, 0xc4, 0xef, 0x8d, 0xd9, 0xc1, 0xda, 0x56, 0xfb, 0x36, 0x28, 0x28, 0x32, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0x70, 0x96, 0x02, 0xdb, 0xa0, 0xd8, 0xd1, 0x5c, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0x19, 0x1b, 0xdc, 0x06, 0xf1, 0x7b, 0x63, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x1e, 0xc4, 0xee, 0x8d, 0xd9, 0xac, 0x41, 0x3c, 0x83, 0x98, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6a, 0x50, 0x6a, 0x5a, 0x1e, 0xc4, 0x33, 0x88, 0x59, 0x03, 0xf0, 0x03, 0x17, 0x26, 0x37, 0x57, 0x06, 0xe2, 0x56, 0xd7, 0x06, 0x62, 0x26, 0xf7, 0xd6, 0x06, 0x42, 0x03, 0x82, 0x56, 0x86, 0xb7, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xaa, 0x86, 0x6e, 0x70, 0x78, 0x95, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0xa2, 0xa1, 0xdf, 0x60, 0x35, 0xc2, 0xfd, 0xc1, 0xfa, 0xdd, 0xd0, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x01, 0xbf, 0x8e, 0xce, 0xac, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x7a, 0x20, 0xb3, 0x06, 0xf0, 0xad, 0xa2, 0x32, 0x6a, 0xc1, 0x01, 0x99, 0x2b, 0x8b, 0xab, 0x2b, 0x73, 0x1b, 0x2b, 0xdb, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xcb, 0x8e, 0x41, 0x37, 0x68, 0xfb, 0x4a, 0x74, 0x83, 0xb5, 0x38, 0x98, 0x6b, 0xb0, 0xd2, 0xc5, 0x69, 0x01, 0x2f, 0xae, 0x2e, 0x6c, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x0d, 0x22, 0x5e, 0x55, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x75, 0x6c, 0xdb, 0xa0, 0xa8, 0x14, 0x3f, 0x68, 0xdd, 0x76, 0x78, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x2f, 0x05, 0x5d, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x10, 0xf1, 0x35, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0x31, 0x6f, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xbe, 0x14, 0x74, 0x83, 0x84, 0xc0, 0xd4, 0x35, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0xf1, 0x6b, 0x83, 0x08, 0x4e, 0x32, 0xdb, 0x20, 0x82, 0x93, 0xcc, 0x5a, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xd8, 0x08, 0x5d, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x41, 0xc0, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x2f, 0x05, 0x5d, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x10, 0x90, 0x83, 0x08, 0x54, 0x32, 0x3b, 0x88, 0x86, 0x25, 0xb3, 0x35, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x82, 0x8d, 0xd0, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0x04, 0xbd, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xfa, 0x52, 0xd0, 0x0d, 0x12, 0x02, 0x53, 0xd7, 0xf0, 0x23, 0xcc, 0x86, 0x9a, 0x1f, 0xc4, 0xa3, 0x83, 0x68, 0x58, 0x32, 0x6b, 0x83, 0x95, 0x2e, 0x4e, 0x1b, 0x3c, 0xe5, 0x98, 0x75, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x35, 0x7c, 0xae, 0xb4, 0xe1, 0xcb, 0xa5, 0x83, 0x72, 0xe8, 0x77, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x75, 0x6c, 0xdb, 0xa0, 0xa8, 0x14, 0x3f, 0x68, 0xca, 0x79, 0x78, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0xa8, 0x08, 0x5d, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x2f, 0x05, 0x5d, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0x10, 0xe1, 0x35, 0xfc, 0x08, 0x73, 0xf0, 0xd0, 0x50, 0x90, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xeb, 0x4b, 0x41, 0xd7, 0xf0, 0x23, 0xcc, 0xc1, 0xb3, 0x3a, 0x41, 0x0e, 0x96, 0xb9, 0xd3, 0x75, 0x10, 0x0d, 0x4b, 0x66, 0x6b, 0xb0, 0x42, 0xa8, 0x69, 0x83, 0x15, 0x15, 0xa1, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x05, 0x1b, 0xa1, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x08, 0x70, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf5, 0xa5, 0xa0, 0x6b, 0xf8, 0x11, 0x66, 0x43, 0xcd, 0x0f, 0x02, 0x74, 0x10, 0x81, 0x4a, 0x66, 0x07, 0x91, 0xb5, 0x64, 0xb6, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xb0, 0x11, 0xba, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x83, 0x68, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x5f, 0x0a, 0xba, 0x41, 0x42, 0x60, 0xea, 0x1a, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x83, 0xf8, 0x74, 0x10, 0x59, 0x4b, 0x66, 0x6d, 0xb0, 0xd2, 0xc5, 0x69, 0x01, 0x8f, 0xec, 0x6d, 0x6e, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x96, 0x55, 0x82, 0xae, 0xe1, 0x17, 0xa5, 0x0d, 0x7f, 0x2b, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xb2, 0xde, 0x76, 0x83, 0xa2, 0x52, 0xfc, 0xf0, 0xfb, 0xd9, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x5f, 0x0a, 0xba, 0x86, 0x1f, 0x61, 0x36, 0xd4, 0xfc, 0x20, 0x84, 0x07, 0x8b, 0xc2, 0xe9, 0x0e, 0x22, 0x6b, 0xc9, 0x6c, 0x83, 0x15, 0x42, 0x4d, 0x1b, 0xac, 0x07, 0x06, 0x5d, 0xc3, 0xdb, 0x3a, 0x07, 0x11, 0x4b, 0x64, 0xb6, 0xc1, 0x7b, 0x8d, 0x59, 0xd7, 0xf0, 0xb6, 0xce, 0x41, 0x84, 0x81, 0x99, 0xd5, 0x6a, 0x10, 0x3f, 0xf9, 0x65, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xf1, 0x93, 0x5f, 0xd6, 0x00, 0xfe, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xd9, 0x31, 0xe8, 0x06, 0x6d, 0x5f, 0x89, 0x6e, 0xb0, 0x16, 0x07, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xbe, 0x14, 0x74, 0x83, 0xd4, 0xd3, 0xd8, 0x83, 0x84, 0x7d, 0xcb, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x5f, 0x36, 0x37, 0x16, 0xd6, 0xe1, 0x14, 0x6b, 0x01, 0x7f, 0x0e, 0x2e, 0x6c, 0xdc, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x42, 0x36, 0xb3, 0x0e, 0x9a, 0xa2, 0x0e, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x15, 0x43, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xab, 0xa0, 0x43, 0xd7, 0xf0, 0x8b, 0xcb, 0x1a, 0xbe, 0x7e, 0xd9, 0xf0, 0x21, 0xcc, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0x73, 0x90, 0x72, 0x5a, 0xb5, 0xc1, 0x62, 0x00, 0xd0, 0x35, 0x7c, 0xfd, 0xb2, 0xe1, 0x43, 0x98, 0x0d, 0x5f, 0xbf, 0x6c, 0xf8, 0x10, 0xe6, 0xe0, 0xb4, 0x0a, 0x77, 0xb0, 0x0a, 0x3b, 0xb4, 0x56, 0x83, 0x56, 0x0e, 0x78, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x5a, 0x39, 0xe0, 0xed, 0x20, 0x8a, 0x0d, 0x9b, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0x41, 0xdc, 0xac, 0x97, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0xa0, 0xbd, 0x6c, 0x83, 0x08, 0x78, 0x03, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x37, 0xec, 0x65, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x38, 0x68, 0x2f, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xac, 0x82, 0x0e, 0x5d, 0xc3, 0xb3, 0x78, 0x07, 0xf1, 0x4d, 0xa4, 0x54, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x26, 0x93, 0x1e, 0x2c, 0x9a, 0x34, 0x6d, 0xd6, 0x20, 0x7e, 0x0d, 0xcc, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xe2, 0xd7, 0xc0, 0xac, 0x01, 0xbc, 0xef, 0xd2, 0xe8, 0xd0, 0x40, 0xee, 0xd0, 0xd2, 0xe8, 0xca, 0xe6, 0xe0, 0xc2, 0xc6, 0xca, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x58, 0x5b, 0x2a, 0xba, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x8e, 0x83, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0xa2, 0x90, 0xcd, 0xac, 0x83, 0x25, 0xb5, 0xa2, 0x87, 0x53, 0x6c, 0x0d, 0xda, 0xf3, 0x1e, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x0d, 0xda, 0x36, 0x5b, 0x1d, 0xc0, 0x23, 0xcc, 0x2d, 0x0f, 0xc4, 0x2e, 0x8c, 0xad, 0xae, 0x6c, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0xd5, 0xbd, 0xac, 0x6b, 0x50, 0x08, 0xa6, 0x1e, 0x44, 0xf5, 0x79, 0xd9, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0x96, 0x43, 0x32, 0xcd, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x0b, 0x35, 0x49, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xb1, 0xb6, 0x67, 0xb6, 0x41, 0xac, 0xed, 0x99, 0xb5, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x96, 0xe0, 0x84, 0x6e, 0x50, 0x50, 0x64, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x3e, 0x8c, 0xae, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0xc0, 0x7d, 0xa8, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x0a, 0xb4, 0xd5, 0x0d, 0x9a, 0xc3, 0xfb, 0x3c, 0x68, 0x4d, 0xd2, 0x6b, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x02, 0x6d, 0x75, 0x83, 0xa5, 0x5f, 0xaf, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x88, 0x96, 0x2f, 0xab, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0xb2, 0x4a, 0xd0, 0x35, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x9f, 0x0f, 0x4e, 0x7a, 0xa2, 0x1b, 0x7e, 0x71, 0xd9, 0xe0, 0xc8, 0xac, 0xba, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x5a, 0xc7, 0xb6, 0x83, 0x88, 0x53, 0x87, 0x6a, 0x83, 0xe8, 0xf9, 0x01, 0x6b, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0xe9, 0x02, 0x66, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0xff, 0x4d, 0xec, 0x0d, 0xaf, 0x59, 0x83, 0x88, 0x63, 0x2f, 0xdb, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0xd5, 0xa0, 0xd4, 0xb4, 0x3c, 0x88, 0x38, 0xf6, 0xb2, 0x06, 0xf8, 0xdf, 0xe0, 0xe8, 0xd2, 0xde, 0xdc, 0xc2, 0xd8, 0x36, 0x28, 0x94, 0x3b, 0x37, 0x58, 0xf0, 0x63, 0xbb, 0xc1, 0x0a, 0xa1, 0xa6, 0x0d, 0xd6, 0x03, 0x83, 0x6e, 0xb0, 0x78, 0xcd, 0xf6, 0x60, 0x89, 0x49, 0xe9, 0xe1, 0x14, 0x5b, 0x83, 0xb6, 0xf9, 0x9a, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xda, 0xe6, 0x6b, 0x6a, 0x00, 0x8f, 0xb5, 0xb2, 0xbc, 0x16, 0xbb, 0x30, 0xb6, 0xba, 0xb2, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xa2, 0x22, 0x74, 0x0d, 0x56, 0x08, 0x35, 0x6d, 0xb0, 0xae, 0x60, 0x74, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x85, 0x06, 0x66, 0x07, 0x31, 0x54, 0x68, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x42, 0x03, 0xb3, 0x83, 0xf6, 0xe5, 0x42, 0x3b, 0x88, 0x21, 0x88, 0xb1, 0xd5, 0x60, 0x0d, 0x7f, 0xdc, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0x6d, 0xb0, 0xc4, 0x93, 0x6e, 0x00, 0xbf, 0x2a, 0x2a, 0xa3, 0x16, 0x1c, 0x10, 0xb6, 0x32, 0xb7, 0x33, 0x3a, 0xb4, 0x0d, 0xbf, 0x28, 0x6d, 0xb0, 0x48, 0x3b, 0x6e, 0xc3, 0x5f, 0x34, 0x1b, 0x7e, 0xa8, 0xd9, 0xf0, 0x89, 0xcd, 0x06, 0x2b, 0x64, 0xe9, 0x36, 0x7c, 0x90, 0xb3, 0xe1, 0x35, 0xbd, 0x0d, 0x96, 0xe8, 0xd2, 0x1d, 0x2c, 0x6d, 0xa6, 0x3b, 0x9c, 0x62, 0x6b, 0x10, 0x9b, 0xf1, 0x65, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xb1, 0x19, 0x5f, 0xd6, 0x00, 0xbf, 0x99, 0x5c, 0xd8, 0x18, 0x5d, 0xda, 0x9b, 0xdb, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x51, 0x11, 0xba, 0xc1, 0xda, 0x17, 0xd2, 0x83, 0x38, 0xb9, 0x33, 0x9b, 0x05, 0xfc, 0x37, 0x31, 0xb5, 0x72, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xb2, 0x34, 0xcd, 0x1a, 0xc0, 0xeb, 0x4d, 0x4c, 0xad, 0x6c, 0x8c, 0x0e, 0x84, 0x2d, 0x6d, 0x8e, 0x6e, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x85, 0x9a, 0xa4, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x85, 0x06, 0x66, 0x07, 0x6f, 0xd7, 0x61, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0xa1, 0x81, 0xd9, 0x41, 0x1b, 0x7b, 0x97, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x75, 0xad, 0xa4, 0x1b, 0xc4, 0xf8, 0x81, 0xd9, 0x1a, 0xde, 0xd6, 0xd9, 0xa0, 0x6d, 0xbe, 0xa6, 0x9a, 0x35, 0x88, 0xea, 0x44, 0xb3, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0xa8, 0x4e, 0x34, 0xeb, 0x60, 0xc1, 0x10, 0xf7, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x81, 0xb6, 0xba, 0x41, 0x53, 0x71, 0x60, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x65, 0x95, 0xa0, 0x1b, 0x34, 0xd4, 0xfa, 0xba, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x2c, 0x4d, 0xb3, 0x6a, 0x05, 0xfc, 0xb9, 0x3a, 0xb7, 0x73, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0xd2, 0x47, 0xcd, 0x1a, 0x80, 0x87, 0x31, 0xb4, 0x30, 0x39, 0x90, 0x2a, 0x2a, 0xa3, 0x16, 0x1c, 0x90, 0xb9, 0x30, 0xb7, 0x34, 0xba, 0xbc, 0x0d, 0x0e, 0x58, 0x74, 0x6b, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x1e, 0x9c, 0x67, 0x47, 0x37, 0xfc, 0x45, 0xb3, 0xe1, 0x83, 0xd5, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0xca, 0xc2, 0xe2, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0x4c, 0x3f, 0xee, 0xf0, 0x16, 0xda, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0xa7, 0xe6, 0xb6, 0x83, 0xc2, 0xcb, 0x78, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x95, 0x20, 0x66, 0x87, 0xb7, 0xd0, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x28, 0x2a, 0xc5, 0x0f, 0x0a, 0x2f, 0xe3, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x7c, 0x3a, 0xb9, 0xb2, 0xb9, 0xc3, 0x5b, 0x68, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x04, 0x2c, 0xeb, 0x41, 0xe1, 0x65, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x04, 0x33, 0xb3, 0xc3, 0x5b, 0x68, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0xc5, 0xef, 0x06, 0x05, 0xdc, 0xfe, 0xc1, 0x42, 0x6a, 0xba, 0x65, 0xd6, 0xe0, 0x65, 0xd5, 0x7c, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xbe, 0x5c, 0xda, 0x60, 0xcd, 0xa6, 0xfd, 0x06, 0xab, 0x2b, 0xed, 0xdb, 0xf0, 0x17, 0xcd, 0x86, 0x0f, 0x56, 0x37, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0x58, 0x02, 0x6b, 0x7f, 0xb0, 0xb6, 0xd5, 0x7e, 0xc3, 0x23, 0xac, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x34, 0x6c, 0xa5, 0x0d, 0x4f, 0xeb, 0x1c, 0x2c, 0x80, 0xb5, 0x5f, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0xf8, 0xdd, 0xf0, 0xb4, 0xce, 0xc1, 0xda, 0x56, 0xfb, 0x56, 0x83, 0xc8, 0x62, 0x35, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x11, 0x6f, 0x6a, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0xce, 0xf9, 0x4b, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xf6, 0x3f, 0x3a, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x49, 0x34, 0xbb, 0x41, 0x51, 0x29, 0x7e, 0x50, 0xa0, 0x8e, 0xaf, 0xe1, 0x73, 0x97, 0x0d, 0x9a, 0x1c, 0xf2, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x06, 0x45, 0xa5, 0xf8, 0x41, 0x19, 0x44, 0xbe, 0xe1, 0x73, 0x97, 0x01, 0x8f, 0x4e, 0xae, 0xdc, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0xd1, 0xec, 0x06, 0x45, 0xa5, 0xf8, 0x06, 0x11, 0x3b, 0x38, 0x75, 0x78, 0x0b, 0x6d, 0xc3, 0x23, 0xac, 0x6b, 0xf8, 0x95, 0x6c, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0x57, 0xb2, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x0e, 0xde, 0x55, 0xcd, 0xb7, 0x41, 0x63, 0x6c, 0xc2, 0x07, 0x91, 0x72, 0x65, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x1f, 0x5e, 0xb3, 0x0d, 0x1a, 0x63, 0x13, 0x3e, 0x88, 0x5a, 0x2c, 0xb3, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0x95, 0x8c, 0x70, 0xad, 0xe1, 0x6d, 0x9d, 0x83, 0x46, 0xa3, 0xbc, 0x6b, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0x9e, 0x72, 0x0c, 0x79, 0xd0, 0x18, 0x9b, 0xf0, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x7e, 0x78, 0xcd, 0x36, 0x88, 0x95, 0x5f, 0xb3, 0x83, 0x98, 0xde, 0x32, 0x6b, 0x0d, 0x8f, 0xb0, 0xae, 0xe1, 0xdf, 0x9c, 0x35, 0xfc, 0x08, 0x73, 0xf0, 0xbe, 0x4f, 0x90, 0x83, 0xc6, 0xd8, 0x84, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xf1, 0xc3, 0x6b, 0xb6, 0x41, 0xac, 0xfc, 0x9a, 0x1d, 0xc4, 0xbe, 0x97, 0x59, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0xd4, 0xd7, 0x6c, 0x83, 0xf7, 0x1a, 0xb3, 0xd6, 0xe1, 0x14, 0x5b, 0x83, 0x78, 0x06, 0x31, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x11, 0x6f, 0x6a, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x1f, 0xac, 0x6e, 0xf8, 0xc4, 0x66, 0x0d, 0x16, 0x95, 0x27, 0x6d, 0x10, 0x87, 0xb6, 0x66, 0x1b, 0xc4, 0xfe, 0xad, 0xd9, 0x06, 0xb1, 0x96, 0x6b, 0xb6, 0xe1, 0x73, 0x97, 0x0d, 0x16, 0x72, 0xc3, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0xb8, 0x31, 0x9c, 0x3a, 0xbc, 0x85, 0xb6, 0xe1, 0x11, 0xd6, 0x35, 0xfc, 0x4a, 0xb6, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xf1, 0xc3, 0x6b, 0xb6, 0x41, 0x63, 0x6c, 0xc2, 0x07, 0x91, 0x8a, 0x64, 0x76, 0x10, 0x65, 0xbe, 0x66, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x47, 0x98, 0x83, 0xa7, 0x64, 0x82, 0x1c, 0x34, 0xc6, 0x26, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x1f, 0x5e, 0xb3, 0x0d, 0x62, 0xe5, 0xd7, 0xec, 0x20, 0x72, 0x9b, 0xcc, 0x5a, 0xc3, 0x23, 0xac, 0x6b, 0xf8, 0x37, 0x67, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0x41, 0xd0, 0x0f, 0x1a, 0x63, 0x13, 0x5e, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x0f, 0xaf, 0xd9, 0x06, 0xb1, 0xf2, 0x6b, 0x76, 0x10, 0xe1, 0x50, 0x66, 0xb5, 0x41, 0xac, 0x10, 0x9b, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0xd4, 0xd7, 0xec, 0x60, 0x35, 0x3d, 0x7c, 0x2b, 0xe0, 0x91, 0xbd, 0xcd, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0xe2, 0x4d, 0xcd, 0x36, 0xfc, 0x45, 0xb3, 0xe1, 0x83, 0xd5, 0x0d, 0x9f, 0xd8, 0xac, 0x41, 0x61, 0xa8, 0xba, 0x41, 0x1c, 0xda, 0x9a, 0x1d, 0xc4, 0xfe, 0xad, 0xd9, 0x86, 0x47, 0x58, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xf1, 0xc3, 0x6b, 0xb6, 0x41, 0x63, 0x6c, 0xc2, 0x07, 0xb1, 0x39, 0x66, 0x76, 0x10, 0x65, 0xbe, 0x66, 0xab, 0xc1, 0x2b, 0x19, 0xe1, 0x36, 0xfc, 0xa2, 0xb4, 0xe1, 0xcb, 0xa5, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0x60, 0x75, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x0f, 0xaf, 0xd9, 0x86, 0xa7, 0x75, 0x0e, 0xa2, 0x47, 0xc9, 0xec, 0x70, 0x8a, 0xd5, 0xe1, 0x14, 0x9b, 0x35, 0x88, 0x15, 0xfb, 0xb2, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x58, 0xb1, 0x2f, 0x6b, 0x00, 0x1e, 0xc6, 0xde, 0xe4, 0xc8, 0x40, 0xaa, 0xa8, 0x8c, 0x5a, 0x70, 0x40, 0xe6, 0xc2, 0xdc, 0xd2, 0xe8, 0xf2, 0x36, 0xfc, 0xa2, 0xb4, 0x41, 0xc4, 0x9b, 0x9a, 0x6d, 0xf8, 0x8b, 0x66, 0xc3, 0x07, 0xab, 0x1b, 0x3e, 0xc8, 0xd9, 0xf0, 0x9a, 0xde, 0x06, 0x45, 0x4e, 0xeb, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0xfa, 0xa8, 0x59, 0x87, 0xb7, 0xd0, 0x36, 0x28, 0x60, 0xf3, 0x37, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x7c, 0x1e, 0xb4, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7c, 0xdc, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x51, 0x29, 0xbe, 0x41, 0x84, 0xa2, 0x9a, 0x75, 0x78, 0x0b, 0xad, 0xc3, 0x29, 0xb6, 0x06, 0x31, 0xbf, 0x66, 0xb6, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0xab, 0x41, 0xa9, 0x69, 0x79, 0x10, 0xf3, 0x6b, 0x66, 0x0d, 0xc0, 0x43, 0xd9, 0xdc, 0x58, 0x18, 0x5c, 0x19, 0x19, 0xc8, 0x18, 0x5a, 0x98, 0x5c, 0xd8, 0x18, 0x5d, 0x99, 0xdc, 0x06, 0x2b, 0x84, 0x9a, 0x36, 0x58, 0x3b, 0x0e, 0xba, 0xc1, 0x5a, 0x1c, 0xcc, 0x35, 0x58, 0xe9, 0xe2, 0xb4, 0x80, 0xc7, 0xf6, 0xf6, 0xb6, 0x06, 0x2b, 0x5d, 0x9c, 0x36, 0x58, 0x4d, 0x0c, 0xbb, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0x4a, 0x6f, 0xfa, 0x0d, 0xce, 0xb3, 0xa3, 0x07, 0x65, 0xa4, 0x6d, 0x1b, 0x7e, 0x71, 0x59, 0x83, 0xe6, 0xf0, 0x3e, 0x0f, 0x0e, 0x2b, 0x73, 0x6b, 0xb0, 0x76, 0xb7, 0xee, 0x20, 0xe5, 0xb4, 0x6a, 0x0d, 0x8e, 0xcc, 0xaa, 0x07, 0x29, 0xaf, 0x55, 0x6b, 0x90, 0xe2, 0xe4, 0x74, 0xb0, 0x84, 0xc3, 0x6d, 0x0d, 0x56, 0x04, 0xb4, 0x1f, 0x9c, 0x56, 0xe1, 0x0e, 0xca, 0x3a, 0xcf, 0x0d, 0x56, 0xba, 0x38, 0x2d, 0xe0, 0xdd, 0xbd, 0xdd, 0xad, 0xc1, 0xc2, 0xce, 0xa5, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x22, 0xd6, 0x1f, 0x44, 0x50, 0xb9, 0xd9, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xa8, 0xf5, 0xf5, 0xa0, 0xf9, 0x8d, 0xb2, 0x0d, 0xef, 0xf6, 0x6c, 0xb0, 0xc4, 0x8e, 0x75, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x0a, 0x37, 0xd1, 0x0d, 0xca, 0xa6, 0xfa, 0x35, 0xbc, 0xad, 0x73, 0x10, 0x2b, 0xe9, 0x66, 0x1d, 0x2c, 0xb9, 0xcb, 0xdf, 0x60, 0x85, 0x50, 0xd3, 0x06, 0xeb, 0x81, 0x41, 0x37, 0x68, 0xfb, 0x4a, 0x74, 0x83, 0x05, 0x76, 0xa6, 0x1b, 0xac, 0xc5, 0xc1, 0x5c, 0xc3, 0xdb, 0x3a, 0x07, 0xf1, 0x32, 0x6e, 0xb6, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x93, 0x04, 0xb3, 0xea, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x59, 0xe0, 0xcb, 0xdc, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0x20, 0x1a, 0x03, 0xa6, 0x06, 0xe0, 0xa5, 0xcc, 0x6d, 0xec, 0x8d, 0xac, 0x0c, 0x44, 0x69, 0xea, 0xc9, 0x09, 0x84, 0xee, 0x0d, 0x64, 0xec, 0x4d, 0x8e, 0x6c, 0x83, 0xb2, 0x4b, 0x76, 0xe0, 0xcb, 0xdc, 0x0d, 0x8a, 0x41, 0xd9, 0xd9, 0xe0, 0x80, 0x45, 0xb7, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xcd, 0x6a, 0x8f, 0x1d, 0x44, 0xf5, 0x79, 0xd9, 0x86, 0xbf, 0x68, 0x36, 0x38, 0x01, 0x89, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xb5, 0x8e, 0x6d, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0x79, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0xff, 0xcd, 0x8d, 0xee, 0x6d, 0x83, 0xc8, 0x50, 0xfc, 0x3a, 0x28, 0xeb, 0x3c, 0x6b, 0x99, 0x05, 0xfc, 0xb9, 0xb1, 0x30, 0x78, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xb3, 0xc9, 0xd5, 0xc1, 0x79, 0x76, 0x74, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0x67, 0x47, 0x37, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x06, 0xa5, 0x59, 0xf6, 0x06, 0x25, 0x74, 0xec, 0x06, 0x71, 0x65, 0xfe, 0x74, 0x10, 0xa6, 0x63, 0x6b, 0xf8, 0xc5, 0xe5, 0xa0, 0x8d, 0xeb, 0xc1, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xca, 0xc2, 0xe2, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x51, 0xfc, 0xbb, 0x41, 0x51, 0x29, 0x7e, 0xd0, 0x4e, 0x7e, 0xda, 0x06, 0xa5, 0xbd, 0xe5, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0x5c, 0x38, 0x5f, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0x85, 0xf2, 0x3c, 0x28, 0xb3, 0x74, 0xdb, 0xf0, 0x15, 0xce, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xcf, 0x8e, 0x6e, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x50, 0x78, 0x19, 0x1f, 0x94, 0xd1, 0xe7, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb5, 0x8e, 0x6d, 0x1b, 0x14, 0x95, 0xe2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0x79, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x20, 0x6e, 0x76, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xe2, 0xe3, 0xae, 0xe1, 0x17, 0x97, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0x96, 0x43, 0x7b, 0x76, 0xd0, 0x4e, 0x7e, 0xda, 0x41, 0xa1, 0xb4, 0x5d, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0xde, 0x58, 0x98, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x89, 0x66, 0x37, 0x28, 0x2a, 0xc5, 0x37, 0x38, 0x3c, 0x53, 0x1c, 0xb4, 0x93, 0x9f, 0xb6, 0xe1, 0x83, 0x9c, 0x35, 0x3c, 0xc2, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xa3, 0xb8, 0xc1, 0x43, 0xce, 0x53, 0x0e, 0x22, 0x14, 0xd4, 0x6a, 0x0d, 0x6f, 0xb3, 0x6e, 0xf8, 0x37, 0x67, 0x83, 0x87, 0x9c, 0xa7, 0x6c, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x50, 0xb1, 0x86, 0xb7, 0x59, 0x37, 0xfc, 0x9b, 0xb3, 0xc1, 0x43, 0xce, 0x53, 0x0e, 0x22, 0x22, 0x20, 0x6a, 0x0d, 0x6f, 0xb3, 0x6e, 0xf8, 0x37, 0x67, 0x83, 0x87, 0x9c, 0xa7, 0x1c, 0xac, 0x34, 0x6e, 0x6b, 0x83, 0xe3, 0x3c, 0xc5, 0x06, 0x05, 0x69, 0xec, 0x86, 0x3e, 0xf8, 0x6b, 0x70, 0x72, 0x90, 0xdb, 0xe0, 0x8d, 0xe7, 0x29, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe5, 0xc8, 0xc2, 0x1b, 0xac, 0xa4, 0x68, 0xdb, 0x60, 0x95, 0xeb, 0xe2, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc5, 0xc8, 0x8d, 0x07, 0x67, 0xe6, 0xb6, 0x83, 0x85, 0xa7, 0xe7, 0x07, 0xcf, 0x38, 0x4f, 0x69, 0x0d, 0xd6, 0xdf, 0x1a, 0x6f, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x78, 0x2e, 0x77, 0x35, 0x64, 0xc0, 0x0f, 0xd6, 0xca, 0xcd, 0x1e, 0x3c, 0xb4, 0x6b, 0x6e, 0x35, 0x64, 0xc0, 0x0f, 0x16, 0x59, 0xb4, 0x6d, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x78, 0x2e, 0xae, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x83, 0x42, 0xf7, 0x7c, 0x0d, 0x56, 0x4a, 0x7b, 0x1e, 0x14, 0xc4, 0xe7, 0x6b, 0x50, 0x62, 0x6d, 0x6f, 0xf8, 0xc5, 0x65, 0x83, 0x45, 0xb0, 0xc8, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x1c, 0xda, 0x73, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0x32, 0xfa, 0xfc, 0x20, 0x82, 0x05, 0xce, 0x3a, 0x68, 0x27, 0x3f, 0xed, 0xa0, 0x50, 0xda, 0x6e, 0xd6, 0x20, 0x8a, 0xed, 0xcd, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x67, 0x93, 0xab, 0x83, 0xa8, 0x3e, 0x2f, 0x5b, 0xc3, 0x9f, 0x4b, 0x1b, 0x94, 0x66, 0xd9, 0x07, 0x71, 0x65, 0xfe, 0xd4, 0x86, 0xaf, 0x5f, 0x36, 0x28, 0x96, 0xb6, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x58, 0xd4, 0x49, 0xb8, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0x6d, 0x41, 0xb3, 0x83, 0x42, 0x69, 0x7b, 0x83, 0x20, 0x3d, 0x5d, 0xe3, 0xd0, 0xc1, 0xa2, 0x4e, 0xc2, 0x35, 0x48, 0xd9, 0x62, 0xda, 0xa0, 0x84, 0xc7, 0x5c, 0x70, 0xf8, 0x60, 0x51, 0x27, 0xe1, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xc1, 0x6f, 0x75, 0x07, 0x85, 0xd2, 0xf6, 0x06, 0x45, 0x9f, 0xee, 0x06, 0x25, 0xd6, 0xf6, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xe9, 0x04, 0xed, 0x41, 0xa1, 0xb4, 0xbd, 0xe1, 0x2b, 0x9c, 0x0d, 0x5f, 0xbf, 0x6c, 0x50, 0x2c, 0x6d, 0x6f, 0x50, 0xf4, 0xe9, 0x6e, 0x50, 0x62, 0x6d, 0xaf, 0xe1, 0x92, 0xda, 0xe0, 0xb0, 0xdf, 0xb1, 0x06, 0x8b, 0x3a, 0x09, 0x37, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0x10, 0x8d, 0x1a, 0x67, 0x6d, 0x50, 0xc2, 0x63, 0x2e, 0x38, 0x7d, 0x10, 0x8d, 0x1a, 0x67, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0x45, 0x9a, 0xb3, 0x07, 0x85, 0xd2, 0xf6, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0xd1, 0xa8, 0x71, 0xb6, 0xe1, 0x6d, 0x9d, 0x83, 0xd8, 0xff, 0x38, 0x5b, 0x83, 0x12, 0x6b, 0x7b, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0xeb, 0x7d, 0x3b, 0x28, 0x94, 0xb6, 0x5b, 0x83, 0x95, 0xe2, 0x88, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x1a, 0x35, 0xce, 0x36, 0x88, 0x5e, 0xfe, 0xb2, 0x83, 0x38, 0xf5, 0x2f, 0x3b, 0x28, 0x94, 0xb6, 0xd7, 0xe0, 0xb4, 0x77, 0xb2, 0xe1, 0x17, 0x97, 0x0d, 0xe2, 0x80, 0xe4, 0xec, 0xa0, 0x50, 0xda, 0x5e, 0x83, 0x25, 0x31, 0x81, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x48, 0xbe, 0x37, 0x6b, 0x83, 0x38, 0x20, 0x39, 0xeb, 0xa0, 0x50, 0xda, 0x5e, 0x83, 0x65, 0x8a, 0xec, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0xac, 0xc5, 0x6e, 0x5d, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x1b, 0x94, 0x4d, 0xf5, 0x07, 0xd1, 0x79, 0x72, 0xb6, 0x41, 0x09, 0x8f, 0xb9, 0xc1, 0x4a, 0xec, 0xd6, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x83, 0xdf, 0xeb, 0x0f, 0x0a, 0xa5, 0xed, 0x0d, 0x8a, 0x3e, 0xdd, 0x0d, 0x4a, 0xac, 0xed, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0x02, 0x86, 0xda, 0x83, 0x42, 0x69, 0x7b, 0xc3, 0x57, 0x38, 0x1b, 0xbe, 0x7e, 0xd9, 0xa0, 0x58, 0xda, 0xde, 0xa0, 0xe8, 0xd3, 0xdd, 0xa0, 0xc4, 0xda, 0x5e, 0xc3, 0x25, 0xb5, 0xc1, 0x61, 0xbf, 0x63, 0x0d, 0x16, 0x75, 0x12, 0x6e, 0x78, 0x5b, 0x67, 0xf0, 0x78, 0xf0, 0xf4, 0x60, 0x25, 0x76, 0xeb, 0x1a, 0x94, 0x58, 0xdb, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x45, 0xef, 0xec, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0xc5, 0xc9, 0xd9, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x88, 0x86, 0x97, 0xb3, 0x0e, 0x0a, 0xa5, 0xed, 0xda, 0xa0, 0x84, 0xc7, 0x5c, 0x70, 0xfa, 0x60, 0x25, 0x76, 0xeb, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0x29, 0xce, 0xec, 0x41, 0xa1, 0xb4, 0xbd, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0x4a, 0xec, 0xd6, 0x0d, 0x6f, 0xeb, 0x1c, 0x44, 0x87, 0xcc, 0xd9, 0x41, 0x24, 0x89, 0x9c, 0x75, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0xb3, 0x00, 0xde, 0x68, 0x69, 0x73, 0x73, 0x2d, 0x74, 0x6f, 0x2d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0xf4, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x6f, 0x45, 0x86, 0xdc, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0x15, 0x19, 0xb2, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x33, 0x0a, 0x11, 0x37, 0xfc, 0xe2, 0xb2, 0x06, 0x41, 0x7a, 0xba, 0xe0, 0xf0, 0xe0, 0xf1, 0x41, 0x8c, 0xdd, 0x9c, 0xad, 0xc1, 0xcb, 0x60, 0x13, 0x37, 0xbc, 0x71, 0x77, 0xf0, 0x9a, 0x1d, 0xba, 0x35, 0x78, 0x18, 0x6d, 0xe2, 0x86, 0x37, 0xee, 0x0e, 0x9e, 0xd8, 0x43, 0xb7, 0x06, 0xcf, 0xc2, 0x4d, 0xdc, 0xf0, 0xc6, 0xdd, 0xc1, 0xbb, 0x7f, 0xe8, 0xd6, 0xa0, 0x31, 0x71, 0xce, 0x0d, 0x6f, 0xdc, 0x1d, 0xbc, 0x45, 0x88, 0x6e, 0x0d, 0xde, 0xf6, 0x9b, 0xb8, 0xe1, 0x8d, 0xbb, 0x83, 0x07, 0x12, 0xd1, 0xad, 0xc1, 0xd3, 0x86, 0x13, 0x37, 0xbc, 0x71, 0x77, 0xf0, 0x94, 0x24, 0xba, 0x35, 0x78, 0xd8, 0x71, 0xe2, 0x86, 0x37, 0xee, 0x0e, 0xde, 0xb7, 0x44, 0xb7, 0x06, 0x2f, 0x5a, 0x4e, 0xdc, 0xf0, 0xc6, 0xdd, 0xc1, 0x9b, 0x9b, 0xe8, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x47, 0x16, 0x5e, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0xff, 0x97, 0x63, 0x1d, 0xc4, 0x34, 0xe6, 0xd5, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x88, 0xb1, 0x9b, 0xb3, 0x5a, 0xc3, 0x5f, 0x34, 0x6b, 0xf8, 0x77, 0x7e, 0x83, 0x07, 0xd0, 0xd1, 0x1d, 0x3c, 0xc5, 0x10, 0x71, 0x83, 0xb5, 0xe8, 0x4c, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf8, 0x20, 0x9e, 0x71, 0xce, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x28, 0x91, 0xaa, 0xd7, 0xa0, 0x2c, 0x79, 0xdf, 0x60, 0x11, 0xc8, 0xe8, 0x06, 0x65, 0x53, 0xfd, 0x06, 0x71, 0x34, 0x74, 0xd6, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x8b, 0xb4, 0xe3, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe2, 0x41, 0x5c, 0x99, 0x3f, 0xb5, 0xe1, 0x2f, 0x9a, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x79, 0x76, 0xf4, 0xe0, 0xf8, 0xe4, 0xba, 0x41, 0xc1, 0x87, 0xb9, 0xc1, 0xe1, 0xa1, 0x60, 0xc3, 0x2f, 0x2e, 0x1b, 0x9e, 0xd6, 0x39, 0x28, 0x7c, 0x50, 0xd7, 0xf0, 0xb6, 0xce, 0xe0, 0xf2, 0x41, 0x3c, 0xe3, 0x9c, 0x75, 0x38, 0xc5, 0x16, 0xe0, 0x2b, 0x73, 0x6b, 0xc1, 0x6b, 0x63, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xa2, 0x39, 0xe9, 0xac, 0x01, 0xbc, 0xf0, 0xda, 0xd8, 0x40, 0xe0, 0xe4, 0xd2, 0xdc, 0xe8, 0xca, 0xe4, 0x36, 0x3c, 0x28, 0xb9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0xc1, 0xc2, 0x87, 0xed, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x4d, 0x76, 0x8f, 0x1d, 0x34, 0x99, 0x94, 0xb9, 0x41, 0x59, 0x86, 0xbd, 0x06, 0x01, 0x74, 0xb6, 0xe1, 0x17, 0x97, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xd5, 0xb9, 0xc5, 0x07, 0xeb, 0x98, 0x4e, 0xd7, 0xf0, 0xb9, 0xcb, 0x80, 0x37, 0xf6, 0x46, 0x1f, 0xac, 0x63, 0x3a, 0x6d, 0x96, 0x59, 0x83, 0x74, 0x4a, 0x9f, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0x20, 0x9e, 0xb5, 0xc6, 0x06, 0xf0, 0x77, 0x7b, 0x23, 0x2b, 0x63, 0x4b, 0x9b, 0xa3, 0x03, 0xa1, 0x7b, 0x03, 0xa1, 0x0b, 0x83, 0x2b, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0x5b, 0x1a, 0x7e, 0xd0, 0xf4, 0xe8, 0xf8, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xe4, 0xca, 0xf4, 0x83, 0x93, 0x9e, 0x68, 0x1b, 0xbe, 0xc2, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0x27, 0x3d, 0xd1, 0x0d, 0x4a, 0x78, 0xcc, 0x05, 0x3c, 0xb6, 0x34, 0xbc, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xc9, 0x95, 0xe9, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x26, 0xbb, 0xc7, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xe9, 0x41, 0x14, 0x57, 0x9d, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0x14, 0x57, 0x9d, 0x6d, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0x20, 0x8a, 0xab, 0xce, 0x6a, 0x35, 0x88, 0xa3, 0x8e, 0xb1, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0x20, 0x0e, 0x3c, 0xc6, 0x06, 0xe0, 0x23, 0x8c, 0x8e, 0x4e, 0x2e, 0x4d, 0xac, 0x8e, 0xae, 0x6c, 0x0e, 0x84, 0xee, 0x0d, 0x84, 0x2e, 0x0c, 0xae, 0x6c, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x74, 0x61, 0xf4, 0xc1, 0xfa, 0x4e, 0xed, 0x83, 0x78, 0xa0, 0x3a, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x27, 0x3d, 0xd1, 0x0d, 0x4a, 0x78, 0xcc, 0x05, 0x3c, 0xba, 0x30, 0xba, 0x0d, 0xa2, 0xc2, 0xea, 0x6c, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0x58, 0xb2, 0x3a, 0x5b, 0xc3, 0x25, 0xb5, 0xe1, 0x14, 0x5b, 0x83, 0xa8, 0xec, 0x3a, 0xdb, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0x41, 0x54, 0x76, 0x9d, 0xb5, 0x41, 0x92, 0x01, 0xe1, 0x06, 0x27, 0x82, 0xb6, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x4b, 0x18, 0x9c, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0x77, 0xf0, 0xf4, 0x20, 0x2a, 0xbb, 0xce, 0x5a, 0xc3, 0xb3, 0x78, 0x07, 0x31, 0x40, 0xaf, 0xb4, 0x86, 0x77, 0x7b, 0xd6, 0x70, 0x49, 0x6d, 0x10, 0x37, 0x2a, 0x63, 0x2b, 0xe0, 0xd5, 0xb9, 0xc5, 0x1d, 0x14, 0xb0, 0xf9, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xed, 0x83, 0x68, 0x0b, 0x3b, 0xdb, 0x60, 0x41, 0xdc, 0xec, 0x1a, 0x94, 0xf0, 0x98, 0x1b, 0xc4, 0xe7, 0xd7, 0xd9, 0x06, 0x51, 0x61, 0x75, 0xb6, 0xe1, 0x17, 0x97, 0x0d, 0x16, 0xfb, 0xdc, 0x6d, 0x10, 0x15, 0x56, 0x67, 0xd5, 0x2c, 0xe0, 0x8f, 0xb1, 0xbd, 0xd1, 0x1b, 0x2c, 0x87, 0x64, 0x9a, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x8e, 0xd6, 0x1a, 0x1b, 0x94, 0x4d, 0xef, 0x6b, 0x70, 0x62, 0xbf, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0x2a, 0x65, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0xcb, 0xff, 0xbd, 0x37, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0x44, 0xb8, 0xbe, 0xd2, 0x06, 0x0b, 0xa8, 0xbc, 0x37, 0x68, 0x32, 0x45, 0x74, 0x83, 0xa6, 0xd2, 0x64, 0xd7, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x22, 0x7d, 0x5f, 0x69, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0xea, 0xf8, 0x95, 0x36, 0x68, 0x06, 0x69, 0x74, 0x83, 0x86, 0x7c, 0x3f, 0xd7, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x5e, 0x7c, 0x62, 0xb9, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0x10, 0xa7, 0xfd, 0x4a, 0x1b, 0xb4, 0x4b, 0x28, 0xba, 0x86, 0x37, 0xee, 0x0e, 0x9e, 0x60, 0xca, 0xb2, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0x10, 0xb3, 0xfe, 0x4a, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x07, 0xcf, 0xe0, 0x15, 0x5c, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x7c, 0x89, 0xdf, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0x5d, 0xe0, 0xdd, 0x89, 0xc9, 0x35, 0x6b, 0xd0, 0x9e, 0xf7, 0xd8, 0x86, 0xe7, 0x49, 0x36, 0x88, 0xec, 0xa4, 0xb1, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xb5, 0x95, 0xe1, 0x07, 0x0b, 0x1f, 0xb6, 0x0f, 0xe2, 0x81, 0xea, 0x6c, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0xf4, 0x44, 0x37, 0x7c, 0x90, 0xb3, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x65, 0x30, 0x78, 0x0d, 0x9f, 0x2b, 0x1d, 0x34, 0x93, 0xef, 0xd9, 0xe0, 0xe7, 0x80, 0xd7, 0x56, 0x86, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x00, 0x95, 0xb1, 0x35, 0xbc, 0xad, 0x33, 0xb8, 0x3d, 0x78, 0x3a, 0x78, 0x78, 0x10, 0x1f, 0x76, 0x67, 0x07, 0x71, 0x5e, 0x76, 0xb6, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xb5, 0x85, 0xb9, 0x1b, 0xfe, 0xa2, 0xd9, 0x60, 0x95, 0xa5, 0xf6, 0x86, 0xb7, 0x75, 0x06, 0x77, 0x0f, 0xe2, 0xc3, 0xee, 0x6c, 0x83, 0xa2, 0x4f, 0x77, 0x83, 0xd8, 0x18, 0x3b, 0x5b, 0xc3, 0xaf, 0x64, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0x36, 0xc6, 0xce, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0x8d, 0x95, 0xab, 0x6e, 0x78, 0x5b, 0x67, 0xc0, 0x6b, 0x0b, 0x73, 0x5b, 0xc3, 0xbf, 0x39, 0x1b, 0x34, 0xb1, 0xae, 0x7a, 0x10, 0xd7, 0x7b, 0x67, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x74, 0x61, 0xed, 0x86, 0x77, 0x7b, 0x36, 0x68, 0x09, 0x83, 0x73, 0x83, 0xb8, 0xde, 0x3b, 0x6b, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0x0b, 0xa3, 0xa3, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0xfa, 0x4e, 0xed, 0x0d, 0x6f, 0xeb, 0x1c, 0xc4, 0xe2, 0xdd, 0xd9, 0x06, 0x85, 0xa1, 0xea, 0x06, 0x8b, 0xa2, 0x69, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x38, 0x64, 0x2d, 0x6e, 0x10, 0xd3, 0xdc, 0x64, 0x1b, 0x1c, 0x6d, 0xf8, 0xd6, 0xa0, 0x84, 0xc7, 0x5c, 0xc0, 0x0b, 0xa3, 0xa3, 0xdb, 0x20, 0x2a, 0xac, 0xce, 0x36, 0xfc, 0xe2, 0xb2, 0xc1, 0x62, 0x9f, 0xbb, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xe4, 0x8e, 0x8d, 0xad, 0xe1, 0x6d, 0x9d, 0x83, 0xe8, 0x11, 0x3c, 0x3b, 0x88, 0xf3, 0xb2, 0xb3, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x4c, 0x50, 0x9d, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0x8f, 0xb0, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x08, 0x3e, 0x0c, 0x3e, 0x1e, 0xc4, 0x8f, 0xdd, 0xd9, 0x1a, 0x7e, 0x25, 0x5b, 0xc3, 0xdb, 0x3a, 0x03, 0xde, 0xd8, 0x1b, 0xdd, 0x1a, 0x14, 0x03, 0xb2, 0x1b, 0x44, 0x03, 0xdf, 0xd9, 0x06, 0x05, 0x6c, 0xfe, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0xf1, 0x64, 0x76, 0xd6, 0x41, 0x74, 0xf9, 0x9d, 0xd5, 0x1a, 0x7e, 0x71, 0xd9, 0x60, 0xb1, 0xcf, 0xdd, 0x06, 0xab, 0xc3, 0xda, 0x36, 0x58, 0xe3, 0x43, 0x7b, 0x10, 0xe7, 0x65, 0x67, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0xac, 0xf1, 0xa1, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0x2d, 0x33, 0x11, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0xb8, 0x30, 0x3c, 0x5b, 0x83, 0x24, 0x03, 0xc2, 0x0d, 0x4e, 0x04, 0x6d, 0x6b, 0x78, 0x16, 0xef, 0x20, 0x72, 0x24, 0x96, 0x36, 0x88, 0x69, 0x6e, 0xb2, 0x35, 0x3c, 0x8b, 0x77, 0xb0, 0x78, 0x01, 0xe8, 0x20, 0xce, 0xcb, 0xce, 0x3a, 0x9c, 0x62, 0x6b, 0x10, 0x3b, 0x2a, 0x63, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x1a, 0x94, 0x9a, 0x96, 0x07, 0xb1, 0xa3, 0x32, 0xd6, 0x00, 0xbe, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x78, 0x6d, 0x6c, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0xa3, 0x2b, 0xc3, 0x0f, 0x4e, 0x7a, 0xa2, 0x07, 0xf1, 0x40, 0x75, 0xb6, 0xe1, 0x83, 0x9c, 0x0d, 0xe2, 0x5a, 0xef, 0x6c, 0x0d, 0xef, 0xf6, 0x6c, 0x70, 0x22, 0x68, 0x5b, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x5d, 0x19, 0xde, 0x41, 0x9c, 0x97, 0x9d, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x78, 0x65, 0xf4, 0x86, 0xbf, 0x68, 0x36, 0x38, 0xe9, 0x89, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0x79, 0x83, 0x68, 0x98, 0x3c, 0x6b, 0xc3, 0x57, 0x38, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xa4, 0x27, 0xba, 0x41, 0x09, 0x8f, 0xb9, 0x80, 0x87, 0x57, 0x46, 0xb7, 0x41, 0x54, 0x58, 0x9d, 0x6d, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0x10, 0xbf, 0x96, 0x67, 0x1b, 0xde, 0xd6, 0x19, 0x9c, 0x3e, 0x88, 0x5f, 0xcb, 0xb3, 0x35, 0x88, 0x25, 0xab, 0xb3, 0x0d, 0x82, 0xf4, 0x74, 0xc1, 0xd3, 0x83, 0xf8, 0xb5, 0x3c, 0x5b, 0x0d, 0x19, 0xf0, 0x83, 0x64, 0x05, 0xdc, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x3c, 0x12, 0x6e, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x87, 0xc7, 0x1b, 0xac, 0x72, 0x5d, 0x5c, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xe1, 0xef, 0x06, 0x2d, 0x13, 0x0f, 0x6e, 0xb0, 0x5e, 0x64, 0xf6, 0x20, 0xce, 0xcb, 0xce, 0x56, 0x43, 0x06, 0x7c, 0x43, 0xcd, 0x0f, 0x35, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x79, 0x24, 0xdc, 0x06, 0xeb, 0xba, 0xe0, 0x36, 0x58, 0x34, 0xf3, 0xb7, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0xc3, 0xe1, 0x83, 0x38, 0xe0, 0x3c, 0x5b, 0x0d, 0x19, 0xf0, 0x83, 0x94, 0x20, 0xd7, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x3c, 0x12, 0x6e, 0x83, 0x65, 0x91, 0xb4, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x74, 0x6e, 0xb0, 0xe2, 0x48, 0xee, 0x20, 0x0e, 0x38, 0xcf, 0x56, 0x43, 0x06, 0xfc, 0x20, 0x65, 0xbb, 0x73, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x8f, 0x84, 0x5b, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0xe1, 0xec, 0x41, 0xfc, 0x6e, 0x9e, 0xad, 0x86, 0x0c, 0xf8, 0xc1, 0xaa, 0x8b, 0xb7, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0x3c, 0x12, 0x6e, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x87, 0x9f, 0x07, 0xf1, 0xbb, 0x79, 0xb6, 0x06, 0x61, 0x3a, 0xb6, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0x73, 0x10, 0x31, 0x99, 0x67, 0x07, 0x71, 0x5e, 0x76, 0x56, 0xab, 0xe1, 0xfb, 0xf6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0xdb, 0xe0, 0x19, 0xd1, 0xe9, 0x03, 0xf8, 0xb9, 0x85, 0xb5, 0x95, 0x81, 0xd0, 0xbd, 0x81, 0xd0, 0x85, 0xc1, 0x95, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x6d, 0x61, 0xee, 0xc1, 0x2a, 0x4b, 0xed, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xa0, 0x20, 0x98, 0xdd, 0x20, 0x1a, 0xf8, 0xce, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0xb0, 0xdf, 0x0e, 0xa2, 0xcb, 0xef, 0x6c, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x08, 0xda, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0xb0, 0xdf, 0xd6, 0x70, 0x49, 0xad, 0x71, 0xe8, 0x20, 0x1a, 0xf8, 0xce, 0x6a, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xf0, 0x8b, 0xcb, 0x06, 0x2b, 0x7a, 0x67, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0xb0, 0xdf, 0xd6, 0x70, 0x49, 0xad, 0xf1, 0xfc, 0x20, 0x1a, 0xf8, 0xce, 0xaa, 0x0e, 0xa7, 0x58, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x59, 0x83, 0xf7, 0xa2, 0x91, 0x6c, 0x78, 0xe3, 0x6e, 0x43, 0xcd, 0x0f, 0x46, 0xf3, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x0d, 0x27, 0xc2, 0x06, 0xef, 0xbd, 0xc0, 0x58, 0xc3, 0x39, 0xb2, 0xe2, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0xe2, 0xc2, 0x6e, 0x50, 0x44, 0x36, 0x2d, 0x48, 0x86, 0x19, 0x44, 0x0b, 0xe2, 0x0d, 0xd2, 0x16, 0xa8, 0x17, 0x04, 0x0b, 0xbf, 0xf0, 0x1b, 0x04, 0x39, 0xff, 0x20, 0x19, 0xf8, 0xbd, 0xef, 0x78, 0x7e, 0x70, 0xc0, 0x7a, 0x3e, 0x48, 0x87, 0x83, 0x38, 0xa4, 0x6a, 0x8e, 0xc7, 0xc3, 0x6e, 0xb0, 0x8a, 0x02, 0x6c, 0x61, 0x17, 0x76, 0x83, 0x77, 0xfb, 0x51, 0x2c, 0xec, 0x82, 0x60, 0xe1, 0x37, 0x88, 0x3f, 0xd9, 0xb3, 0x83, 0x84, 0x7d, 0xe6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x86, 0x5f, 0x07, 0x89, 0x0b, 0xcd, 0xc7, 0xa1, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x6f, 0xe8, 0x18, 0x36, 0x08, 0x16, 0x04, 0x1b, 0x94, 0x43, 0x49, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x2d, 0x80, 0x0e, 0x92, 0xdc, 0x9a, 0x8f, 0x43, 0x83, 0x60, 0xe1, 0x17, 0x7e, 0x83, 0x80, 0xf7, 0x3f, 0x88, 0x67, 0xd9, 0xb3, 0x41, 0x32, 0x20, 0xfc, 0x9d, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x34, 0xfc, 0xc6, 0xf3, 0x0d, 0x6b, 0xbf, 0x2b, 0x08, 0x16, 0x7e, 0x83, 0x48, 0xc6, 0x3d, 0x3b, 0x38, 0x60, 0x3d, 0x1f, 0xa4, 0x99, 0x6f, 0x1f, 0x87, 0x0e, 0x31, 0x3c, 0x0e, 0x0d, 0xb2, 0x35, 0xb4, 0x5f, 0x3f, 0x58, 0x8f, 0x0c, 0x36, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x41, 0xfc, 0xc9, 0x9e, 0x1d, 0xb4, 0x9a, 0xc7, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xb0, 0xf6, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0xc9, 0x07, 0xfa, 0xd0, 0xa8, 0x65, 0x41, 0xb0, 0xf0, 0x0b, 0xbf, 0xc1, 0x30, 0xf4, 0x39, 0x88, 0x67, 0xd9, 0xb3, 0x83, 0x75, 0x72, 0x17, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc6, 0x86, 0xeb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0x10, 0xc7, 0xbf, 0x67, 0x07, 0x07, 0xac, 0xe7, 0x83, 0x34, 0xf3, 0xed, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x7c, 0x1c, 0x1a, 0x04, 0x1b, 0x44, 0x2c, 0xee, 0xd9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x34, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0x32, 0xee, 0xd9, 0x41, 0xb9, 0x44, 0x37, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x10, 0x6c, 0x50, 0xf0, 0x3b, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0x22, 0x19, 0xf7, 0xec, 0x60, 0xc5, 0x0b, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0x92, 0x71, 0xcf, 0x0e, 0x5a, 0xcd, 0x63, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x48, 0x1d, 0x0c, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0x22, 0x19, 0xf7, 0x6c, 0x90, 0x0c, 0x08, 0xdd, 0xbe, 0x83, 0xf1, 0xae, 0x73, 0x1c, 0x1a, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x44, 0x32, 0xee, 0xd9, 0xc1, 0x88, 0x6d, 0x3d, 0x0e, 0x1d, 0x24, 0xf0, 0x34, 0x1f, 0x87, 0x56, 0x10, 0x2c, 0xfc, 0xc2, 0x6f, 0x30, 0xde, 0x75, 0x0e, 0xe2, 0x59, 0xf6, 0xec, 0xe0, 0x80, 0xf5, 0x7c, 0x90, 0x66, 0xbe, 0x7d, 0x1c, 0x3a, 0xa4, 0x0e, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0xec, 0x82, 0x60, 0xe1, 0x37, 0x88, 0xf9, 0xe5, 0xb3, 0x83, 0x74, 0xb7, 0x8d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xac, 0xdd, 0x41, 0x84, 0xe2, 0xe1, 0x1c, 0x87, 0x16, 0x04, 0x0b, 0xbf, 0x41, 0xcc, 0x2f, 0x9f, 0x1d, 0x8c, 0xd8, 0xd6, 0x43, 0xa2, 0x75, 0x10, 0x2c, 0x08, 0x36, 0x88, 0xeb, 0xe7, 0xb3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xed, 0xe5, 0xb3, 0x83, 0xd4, 0xb1, 0x9d, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x6b, 0xbf, 0xc3, 0x6f, 0x3c, 0x3f, 0x58, 0x21, 0x2d, 0x72, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x20, 0x8e, 0x7f, 0xcf, 0x06, 0xc9, 0x40, 0x98, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0x74, 0x50, 0x6c, 0x89, 0x1d, 0x87, 0x8e, 0xc7, 0x07, 0x25, 0x43, 0xd3, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x85, 0xdd, 0xd0, 0x71, 0x64, 0x61, 0x37, 0x78, 0x52, 0x4c, 0xcf, 0x1a, 0xbc, 0xed, 0xa6, 0x67, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x88, 0x67, 0xd9, 0xb3, 0x83, 0x37, 0x02, 0x94, 0x1c, 0x2c, 0xdb, 0x90, 0x3a, 0x74, 0xd0, 0xd8, 0xe0, 0x45, 0xca, 0x3c, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x86, 0xdf, 0x20, 0xea, 0xb1, 0xcf, 0x06, 0xc9, 0x80, 0xe7, 0xfe, 0xf7, 0x1d, 0x8c, 0x77, 0x9d, 0x43, 0x07, 0x8d, 0x41, 0xb0, 0xf0, 0x0b, 0xbf, 0x21, 0x5b, 0x71, 0x10, 0xcf, 0xb2, 0x67, 0x07, 0xeb, 0x52, 0xc1, 0x0e, 0xc6, 0x71, 0xc8, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0x95, 0xc5, 0x63, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0x32, 0xee, 0xd9, 0xc1, 0x43, 0xf1, 0x1b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0x24, 0xe3, 0x9e, 0x1d, 0xbc, 0x5d, 0xbf, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x09, 0xf0, 0xae, 0x73, 0x2b, 0xc3, 0x83, 0x2b, 0x1b, 0xa3, 0x2b, 0x23, 0x6b, 0x21, 0x0b, 0xa3, 0x0b, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x6e, 0x98, 0xa1, 0x35, 0xcc, 0xd0, 0x06, 0xef, 0xbd, 0xc0, 0xd8, 0x70, 0x22, 0x6c, 0xf0, 0xde, 0x0b, 0x8c, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x80, 0x27, 0xc7, 0x06, 0x6f, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x6b, 0xf0, 0x98, 0xbf, 0xd1, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x81, 0x4f, 0x73, 0x0f, 0x02, 0x1b, 0x62, 0x83, 0x03, 0x16, 0xdd, 0x1a, 0xfe, 0xa2, 0xd9, 0xf0, 0x43, 0xcd, 0x06, 0x41, 0x7a, 0xba, 0x41, 0xb1, 0xf5, 0xbe, 0x86, 0x1f, 0x6a, 0x36, 0x5c, 0x52, 0x1b, 0x4e, 0xb1, 0x35, 0x28, 0xb6, 0xde, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0x73, 0x78, 0x9f, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0xf8, 0x77, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0xb2, 0xe9, 0xbd, 0x83, 0x68, 0x52, 0x3f, 0x6b, 0x0d, 0xe2, 0x99, 0xf4, 0x6b, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0xff, 0xe6, 0x6c, 0x78, 0x4c, 0x66, 0xc3, 0xdb, 0x3a, 0x1b, 0x9c, 0x85, 0x4c, 0x07, 0x17, 0x0f, 0x8a, 0xad, 0xf7, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xdf, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x51, 0x5b, 0x7c, 0x10, 0x85, 0xec, 0x67, 0x07, 0xeb, 0x8c, 0xdb, 0xda, 0x20, 0xaa, 0xda, 0xcf, 0x36, 0x38, 0xda, 0xf0, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xca, 0xe2, 0xe8, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0x38, 0xba, 0x0e, 0xae, 0xe1, 0x6d, 0x9d, 0x83, 0x28, 0x64, 0x3f, 0x5b, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0xf8, 0x77, 0x83, 0xa2, 0x52, 0xfc, 0x20, 0x15, 0x68, 0xec, 0x20, 0x15, 0x68, 0xac, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xf0, 0x2c, 0x73, 0x1b, 0x7b, 0x23, 0x2b, 0x6b, 0x61, 0x2b, 0x73, 0x3b, 0xa3, 0x43, 0xdb, 0x20, 0x1a, 0xd8, 0xcf, 0x0e, 0x62, 0x7f, 0xd6, 0x6a, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x9a, 0x3b, 0xf6, 0x83, 0x43, 0x4c, 0xc7, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0x9c, 0xdd, 0xa0, 0x84, 0x8e, 0x5d, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0x0e, 0xa2, 0xe5, 0x72, 0xeb, 0x20, 0x4c, 0xc7, 0xd6, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x44, 0xaa, 0x5e, 0xc3, 0xdb, 0x3a, 0x83, 0xb3, 0x07, 0xc5, 0xd6, 0xfb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xc0, 0xbb, 0xa5, 0x07, 0x81, 0x0d, 0xb1, 0xe1, 0x13, 0x9b, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x0e, 0x9e, 0xf2, 0x37, 0x7a, 0x10, 0xab, 0xe6, 0x5f, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x14, 0x59, 0xa6, 0x1b, 0x1e, 0x93, 0xd9, 0x20, 0x4e, 0xe1, 0xcf, 0x3a, 0x48, 0x05, 0x1a, 0xdb, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x2c, 0x8e, 0xde, 0xa0, 0xa8, 0x14, 0xdf, 0xe0, 0xc4, 0x7e, 0xb3, 0x41, 0x61, 0xb1, 0xbc, 0xc1, 0xd1, 0x86, 0x6f, 0x0d, 0xbf, 0xb8, 0xac, 0x41, 0x9c, 0xc2, 0x9f, 0x1d, 0x9e, 0x99, 0x3c, 0x48, 0x08, 0xb1, 0xdd, 0xf0, 0x6e, 0xcf, 0x06, 0xf1, 0x21, 0x7f, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x2a, 0x49, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0x28, 0x91, 0xaa, 0x37, 0x48, 0x79, 0xbb, 0x3a, 0x68, 0xb3, 0x9b, 0xef, 0x20, 0xd6, 0xcf, 0xc1, 0xd6, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x41, 0x00, 0x6b, 0x99, 0x35, 0x88, 0x2c, 0xf9, 0xb3, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0xce, 0x3e, 0x6c, 0x07, 0x31, 0xbb, 0xfe, 0xb4, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xb3, 0x0d, 0x0a, 0x2f, 0xe3, 0x83, 0x18, 0xee, 0x90, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0xfe, 0x04, 0xda, 0xa0, 0xf0, 0x32, 0x3e, 0x88, 0x27, 0x94, 0xaf, 0x0d, 0x8e, 0x36, 0x7c, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb2, 0xde, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0xc2, 0xcb, 0xf8, 0x20, 0x15, 0x68, 0x6c, 0x83, 0x24, 0x03, 0xc2, 0x0d, 0x7f, 0x02, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xe2, 0xdf, 0x83, 0x24, 0x49, 0xcc, 0x0d, 0x5e, 0x8f, 0xe5, 0x7b, 0xb0, 0x8c, 0xe2, 0xf4, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xd5, 0x20, 0x5c, 0x11, 0x36, 0x7c, 0xd4, 0xbe, 0xe1, 0xfb, 0xf6, 0x0d, 0xc2, 0x15, 0x61, 0xc3, 0x07, 0xf3, 0x1b, 0x7e, 0xa8, 0xd9, 0x20, 0x68, 0x7f, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x6b, 0xee, 0xd8, 0xd7, 0xf0, 0xe7, 0xd2, 0xe0, 0xec, 0x41, 0xd8, 0x97, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x58, 0x29, 0x8e, 0xb8, 0x86, 0x3f, 0x97, 0x06, 0x17, 0x0f, 0x92, 0x1b, 0x61, 0x6b, 0x05, 0xf0, 0x23, 0x2b, 0x1b, 0x7b, 0x23, 0x2b, 0x6b, 0x09, 0xa3, 0x7b, 0x6b, 0x9b, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0x22, 0x6d, 0x01, 0xad, 0x01, 0xf0, 0x98, 0xac, 0x6c, 0xec, 0x8d, 0xac, 0x0c, 0xa4, 0x0c, 0x0f, 0xae, 0x6c, 0x8c, 0x2e, 0xcd, 0xed, 0x0c, 0x24, 0x0c, 0xa4, 0x84, 0x0d, 0xe4, 0xcd, 0x0c, 0xa4, 0x44, 0x0c, 0x24, 0x8d, 0xae, 0xac, 0x6d, 0x8e, 0x05, 0x04, 0x4e, 0xee, 0x8d, 0xac, 0x6e, 0x2c, 0xcd, 0xed, 0x0c, 0x24, 0x8c, 0xee, 0xad, 0x6d, 0x0e, 0xe4, 0x2e, 0x8d, 0x0e, 0x2d, 0xcd, 0x6d, 0xc3, 0x2f, 0x4a, 0x1b, 0x94, 0xa6, 0xc5, 0x1b, 0xfe, 0xa2, 0xd9, 0xa0, 0x9c, 0xb3, 0xdd, 0xa0, 0x20, 0x8d, 0x5d, 0xc3, 0xf7, 0xed, 0x83, 0xa7, 0x07, 0x4d, 0xeb, 0x8f, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0xc0, 0x47, 0x56, 0x36, 0xf6, 0x46, 0x56, 0x76, 0x50, 0xf6, 0x19, 0x6f, 0xb0, 0xa4, 0x7e, 0x69, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0x44, 0x82, 0xf8, 0xd9, 0x41, 0x69, 0x86, 0xbe, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x6b, 0xee, 0xd8, 0x0f, 0x22, 0xa9, 0xd6, 0x69, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x12, 0xa9, 0x7a, 0x0d, 0x6f, 0xeb, 0x0c, 0xce, 0x1e, 0x14, 0xbb, 0xe7, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x64, 0x28, 0x37, 0x58, 0x52, 0xbf, 0xb4, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x02, 0xbc, 0xeb, 0xdc, 0xca, 0xf0, 0xe0, 0xca, 0xc6, 0xe8, 0xca, 0xc8, 0x5a, 0xd8, 0xd2, 0xe6, 0xe8, 0x83, 0xd2, 0x0c, 0x7d, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x56, 0x8a, 0x23, 0x1e, 0x44, 0x52, 0xad, 0xd3, 0x86, 0xb7, 0x75, 0x36, 0x28, 0x6a, 0x8b, 0x07, 0x17, 0x0f, 0x8a, 0xdd, 0xf3, 0x59, 0x00, 0xbf, 0x32, 0xb7, 0xb1, 0x37, 0xb2, 0xb2, 0x96, 0x30, 0xba, 0xb7, 0xb6, 0x79, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x56, 0x83, 0x52, 0xd3, 0xf2, 0x20, 0x62, 0x38, 0xd0, 0x1a, 0x00, 0x7f, 0xca, 0xdc, 0xc6, 0xde, 0xc8, 0xca, 0x40, 0xd8, 0xd2, 0xe6, 0xe8, 0x40, 0xde, 0xcc, 0x40, 0xc2, 0xe8, 0xde, 0xda, 0xe6, 0x40, 0xc2, 0xe6, 0x40, 0xc2, 0x40, 0x4a, 0xd8, 0x40, 0xde, 0xcc, 0x40, 0x4a, 0xc4, 0x40, 0xd2, 0xe8, 0xca, 0xda, 0xe6, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x67, 0x0f, 0xca, 0x39, 0xdb, 0x0d, 0x7f, 0xd1, 0x6c, 0xf8, 0xa1, 0x66, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x37, 0xfe, 0xd9, 0x1a, 0xb4, 0x79, 0x64, 0x75, 0x90, 0xf2, 0x76, 0xd5, 0xe1, 0x14, 0x6b, 0x0d, 0xe2, 0x67, 0x02, 0x6d, 0xc3, 0x2f, 0x4a, 0x1b, 0x94, 0xa6, 0xc5, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0xb0, 0x21, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x06, 0xb1, 0x4e, 0x87, 0x75, 0x10, 0x09, 0x00, 0x52, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xc2, 0x62, 0x79, 0x83, 0x35, 0x7c, 0xc1, 0x6d, 0x70, 0x1c, 0x9b, 0xd8, 0x20, 0xb6, 0xfe, 0xb0, 0xd6, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0x04, 0x1f, 0x0e, 0x62, 0xeb, 0x0f, 0x6b, 0x83, 0xd8, 0x28, 0xa1, 0xda, 0xe0, 0x80, 0x45, 0xb7, 0x86, 0x07, 0x25, 0x37, 0x68, 0x0a, 0x17, 0x62, 0xc3, 0xdb, 0x3a, 0x03, 0x78, 0x91, 0x95, 0x8d, 0xbd, 0x91, 0x95, 0xb5, 0xa0, 0x95, 0x85, 0x91, 0x2d, 0xb3, 0x00, 0x5e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x6c, 0x69, 0x73, 0xf4, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x89, 0x58, 0xc7, 0x07, 0x65, 0x96, 0xee, 0x86, 0xbf, 0x68, 0x36, 0x08, 0xfb, 0x92, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0f, 0xde, 0x1c, 0xc4, 0x21, 0x94, 0xd7, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0x17, 0xcd, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0xd9, 0x9b, 0x7b, 0x50, 0x66, 0xe9, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0xc2, 0x15, 0xe1, 0x20, 0xb0, 0x21, 0x3a, 0x88, 0x4e, 0x14, 0xb4, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0x9a, 0xc2, 0x85, 0xd8, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0x20, 0x7a, 0xa1, 0xbc, 0x36, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x0d, 0xe2, 0x10, 0xca, 0x6b, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x64, 0x6f, 0x6e, 0xad, 0x41, 0x6c, 0xfd, 0x61, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xd3, 0x5b, 0xdc, 0x06, 0x11, 0x17, 0x83, 0x76, 0x10, 0x21, 0x7f, 0x58, 0xcd, 0x02, 0x78, 0x9c, 0x95, 0xd1, 0xb5, 0xd8, 0x85, 0xb1, 0xd5, 0x95, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xe0, 0xc3, 0xe8, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0x7f, 0x2e, 0x0d, 0x3c, 0xdd, 0x7b, 0x50, 0x66, 0xe9, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x3f, 0xd4, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0x62, 0x5b, 0x79, 0x83, 0xa2, 0x52, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x58, 0x2c, 0xaf, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x11, 0x0a, 0xb1, 0x35, 0xfc, 0xe2, 0xb2, 0xc1, 0xfa, 0xad, 0xb6, 0x0d, 0xce, 0xc3, 0x20, 0x1d, 0x44, 0xc8, 0x1f, 0x56, 0xcd, 0x1a, 0xc4, 0x35, 0x0a, 0xda, 0x86, 0xbf, 0x68, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0xd1, 0xa5, 0xd5, 0x41, 0x99, 0xa5, 0x7b, 0x10, 0x87, 0x2e, 0x68, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xc4, 0xd6, 0x1f, 0xd6, 0x1a, 0x2c, 0xa9, 0x5f, 0x5a, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x0b, 0xe0, 0x43, 0x8e, 0x0d, 0xae, 0xa5, 0xce, 0xad, 0x0c, 0x0f, 0xae, 0x6c, 0x8c, 0xae, 0x8c, 0xac, 0xa5, 0xcc, 0x8d, 0x3c, 0x08, 0x4f, 0xd5, 0x0d, 0x56, 0xba, 0x38, 0x6d, 0xf0, 0xcc, 0x97, 0xc9, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0x10, 0x5b, 0x7f, 0x58, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0xf8, 0xdd, 0xe0, 0x2d, 0x2f, 0x93, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0xf0, 0xbc, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x3c, 0x26, 0xb3, 0xe1, 0x17, 0x97, 0x0d, 0x9a, 0xc3, 0xfb, 0x5c, 0xc3, 0x63, 0x32, 0x07, 0x6f, 0x79, 0x99, 0x6c, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0xbf, 0x1b, 0xbc, 0xe5, 0x65, 0x72, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x1e, 0xc4, 0xad, 0x35, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x36, 0x28, 0x0b, 0x8b, 0x37, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x0d, 0xde, 0xf2, 0x32, 0x79, 0x10, 0xfb, 0xb3, 0x56, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0xac, 0x36, 0x92, 0xdd, 0xa0, 0x30, 0x54, 0xdd, 0xa0, 0x39, 0xbc, 0xcf, 0x0d, 0x0a, 0x2f, 0xe3, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xe2, 0x6c, 0x06, 0xad, 0x0d, 0x8f, 0xc9, 0x1c, 0x14, 0x5d, 0xc6, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0xbe, 0xf8, 0xdd, 0xe0, 0x2d, 0x2f, 0x93, 0x6b, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x20, 0x7e, 0xad, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xb1, 0x95, 0x91, 0x1b, 0xde, 0xed, 0xd9, 0xf0, 0x29, 0xe0, 0x41, 0x8c, 0x0a, 0xa1, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0x50, 0x16, 0x16, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xd8, 0x35, 0x42, 0xdb, 0xf0, 0x98, 0xcc, 0x06, 0xb1, 0xd9, 0xf1, 0xd4, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x1a, 0x3e, 0x8e, 0x3a, 0x88, 0xcd, 0x8e, 0xa7, 0x83, 0xa2, 0xcb, 0x78, 0x83, 0xc2, 0x50, 0x75, 0x83, 0xe6, 0xf0, 0x3e, 0x37, 0x28, 0xbc, 0x8c, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0xec, 0x1a, 0xa1, 0x1d, 0xc4, 0x43, 0x13, 0xda, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0x78, 0xcb, 0xcb, 0xe4, 0x1a, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0x3c, 0x88, 0x7b, 0x6b, 0xf8, 0xc4, 0x66, 0x0d, 0x9f, 0xbb, 0x6c, 0x50, 0x16, 0x16, 0x6f, 0x78, 0xb7, 0x67, 0xc3, 0xa7, 0x80, 0x1b, 0xbc, 0xe5, 0x65, 0xf2, 0x20, 0xca, 0xff, 0xcf, 0x36, 0x28, 0x0c, 0x55, 0x37, 0x58, 0x6d, 0x24, 0xbb, 0x41, 0x61, 0xa8, 0xba, 0x41, 0x9b, 0x47, 0x56, 0x1b, 0x9c, 0x1a, 0x8e, 0x36, 0x28, 0xbc, 0x8c, 0x37, 0x5c, 0x52, 0x6b, 0x10, 0xc3, 0x29, 0x68, 0xad, 0x41, 0x6c, 0xfd, 0x61, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xd3, 0x5b, 0xdc, 0x86, 0xc7, 0x64, 0xd6, 0xf0, 0x17, 0xcd, 0x06, 0xe5, 0x9c, 0xed, 0x41, 0x94, 0xfc, 0x61, 0xd5, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0x78, 0xcb, 0xcb, 0xe4, 0xc1, 0x32, 0x3d, 0xd4, 0x35, 0x7c, 0x62, 0xb3, 0x86, 0xcf, 0x5d, 0x06, 0x3c, 0xb6, 0x32, 0x72, 0xc3, 0xbb, 0x3d, 0x1b, 0x3e, 0x05, 0x3c, 0x88, 0x02, 0x28, 0xb4, 0x0d, 0x9f, 0xd8, 0x6c, 0x10, 0xe1, 0x4a, 0x68, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0xc4, 0x28, 0x13, 0xda, 0x06, 0x85, 0xa1, 0xea, 0x06, 0x6d, 0x1e, 0x59, 0x6d, 0x70, 0x6a, 0x38, 0xda, 0xa0, 0xf0, 0x32, 0xde, 0x70, 0x49, 0x6d, 0x10, 0x57, 0x54, 0x68, 0x6b, 0x10, 0x5b, 0x7f, 0x58, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xf4, 0x16, 0xb7, 0x41, 0x4c, 0x34, 0xa1, 0x1d, 0x44, 0x69, 0x15, 0x5a, 0x1b, 0x2c, 0xa9, 0x5f, 0x5a, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x01, 0xba, 0x72, 0x69, 0x70, 0x2d, 0x6e, 0x6f, 0x74, 0x2d, 0x62, 0x6c, 0x6f, 0x71, 0x2d, 0x73, 0x0d, 0x5f, 0xbf, 0x6c, 0xb0, 0x74, 0x0d, 0x75, 0xc3, 0xd7, 0x2f, 0x1b, 0x3e, 0x84, 0x39, 0x78, 0xcb, 0xcb, 0x64, 0x07, 0xe1, 0xa9, 0x7a, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x2b, 0x80, 0xbf, 0x5c, 0x99, 0x1b, 0x59, 0x99, 0x5c, 0x0b, 0x5a, 0x19, 0x5e, 0x8b, 0x58, 0x1e, 0x5d, 0xd9, 0xbc, 0xe1, 0x17, 0xa5, 0x0d, 0x22, 0x22, 0xbe, 0x6a, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0xf4, 0x44, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x5c, 0x1f, 0xb2, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xf0, 0xd4, 0x6e, 0x10, 0xb0, 0xac, 0x07, 0xed, 0x93, 0xb2, 0x76, 0x10, 0x01, 0x6e, 0x4d, 0x2b, 0x00, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2d, 0x74, 0x6f, 0x2d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0xed, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0xc1, 0x8b, 0x08, 0x1e, 0x37, 0xfc, 0x45, 0xb3, 0xc1, 0x49, 0x4f, 0x74, 0x83, 0x82, 0x34, 0x76, 0x80, 0x07, 0xad, 0x0c, 0xaf, 0x8c, 0x5c, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x78, 0x08, 0x43, 0x6b, 0x83, 0x34, 0x15, 0xd7, 0x0d, 0x96, 0xb5, 0xa3, 0xb6, 0x41, 0x41, 0x1a, 0xbb, 0xc1, 0x9b, 0x41, 0x3e, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0x1e, 0x94, 0x5c, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0x57, 0xa8, 0x55, 0x1b, 0x1e, 0x94, 0xdc, 0x20, 0xce, 0xe3, 0xab, 0x0e, 0x62, 0xc1, 0xf2, 0x6a, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x53, 0x97, 0x57, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe5, 0xc8, 0xc2, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x88, 0x40, 0x43, 0xab, 0xda, 0xa0, 0xb4, 0xb7, 0x5c, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x5c, 0x19, 0x7d, 0x70, 0xd2, 0x13, 0xdd, 0xa0, 0x20, 0x8d, 0xdd, 0x60, 0x29, 0x94, 0xe7, 0x06, 0xeb, 0x11, 0xde, 0x36, 0x7c, 0x85, 0xb3, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0x74, 0xb5, 0xa1, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0x33, 0x80, 0x0f, 0x9c, 0x5c, 0x99, 0x59, 0x1a, 0x5e, 0x0b, 0x5a, 0x19, 0xde, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xb0, 0x58, 0x5e, 0xc3, 0xdb, 0x3a, 0x03, 0x9e, 0x5c, 0x19, 0x5d, 0x6d, 0x50, 0x90, 0xc6, 0x6e, 0x70, 0x52, 0x21, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0xa7, 0x07, 0xd1, 0xd5, 0x86, 0xb6, 0xe1, 0x83, 0x9c, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x8b, 0xb3, 0x0d, 0xde, 0x8e, 0x2a, 0x7d, 0x10, 0x09, 0x24, 0x64, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0x52, 0xda, 0x73, 0xc3, 0xbb, 0x3d, 0x1b, 0x5e, 0xf3, 0x39, 0x88, 0x60, 0x81, 0xb3, 0x35, 0x88, 0x19, 0x39, 0xb4, 0x0d, 0xbf, 0xb8, 0x6c, 0xf0, 0x76, 0x54, 0xe9, 0x83, 0xc8, 0x8f, 0x43, 0x5b, 0x83, 0xe8, 0x6a, 0x43, 0xdb, 0xf0, 0xb6, 0xce, 0xe0, 0xf4, 0x41, 0x74, 0xb5, 0xa1, 0xb5, 0x41, 0x41, 0x1a, 0x3b, 0xe0, 0xb9, 0xa5, 0x89, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x92, 0x68, 0x76, 0x83, 0x80, 0x65, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x2c, 0x87, 0xf6, 0x3c, 0x28, 0x88, 0xc7, 0x0f, 0x62, 0xb0, 0xf6, 0x6a, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x17, 0x67, 0x1b, 0x9c, 0x17, 0x68, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0xe7, 0x96, 0x26, 0xd6, 0x1a, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x06, 0x71, 0x54, 0x87, 0xb6, 0x06, 0x31, 0x23, 0x87, 0xb6, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xdb, 0xb3, 0xe1, 0x53, 0xc0, 0x0d, 0xde, 0x8e, 0x2a, 0x7d, 0x90, 0x76, 0x1a, 0x7b, 0x10, 0xf9, 0x71, 0x68, 0x07, 0x91, 0x75, 0x87, 0x76, 0x10, 0xe7, 0x74, 0x68, 0x2b, 0x80, 0x6f, 0x18, 0x19, 0x99, 0x5c, 0xd9, 0xdc, 0x5c, 0x0b, 0xdd, 0x5b, 0x0b, 0x5a, 0x19, 0xbe, 0xe1, 0x17, 0xa5, 0x0d, 0x22, 0xd7, 0x0c, 0x6d, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0xf4, 0x44, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0x10, 0x85, 0x70, 0x68, 0x07, 0xd1, 0x87, 0x86, 0xb6, 0x02, 0x78, 0xc3, 0x85, 0x91, 0xb5, 0xd0, 0xbd, 0xb5, 0xb4, 0xd5, 0xb1, 0xd1, 0xa5, 0xc1, 0xb1, 0x95, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0xbb, 0x0b, 0xa3, 0x0f, 0x4e, 0x7a, 0xa2, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x6b, 0x7b, 0x33, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x8b, 0x84, 0x96, 0x1b, 0x04, 0x9b, 0xe9, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x58, 0xbb, 0xd2, 0xbd, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x1e, 0x30, 0x5b, 0x5a, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xa4, 0x27, 0xba, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0x59, 0x58, 0xbc, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x7a, 0x4e, 0xae, 0xe1, 0x6d, 0x9d, 0x01, 0xef, 0x2e, 0x8c, 0xae, 0x0d, 0x1f, 0xe4, 0x6c, 0x90, 0xbe, 0x79, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x38, 0xc9, 0xb4, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0xaf, 0xed, 0xcd, 0xec, 0x60, 0xdd, 0x8f, 0xdc, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0xd7, 0x16, 0x46, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0xb0, 0xbb, 0xdd, 0xa0, 0xf0, 0x32, 0xde, 0x20, 0x56, 0x14, 0xd1, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0xb6, 0x30, 0xb2, 0x0d, 0x62, 0x15, 0x11, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0xc0, 0xa3, 0x0b, 0x23, 0x37, 0xbc, 0xdb, 0xb3, 0xc1, 0x49, 0xa6, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0xf8, 0x14, 0x70, 0x83, 0x58, 0x51, 0x44, 0xdb, 0x20, 0x9e, 0x1a, 0xd1, 0x3a, 0x58, 0xf7, 0x23, 0xb7, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x13, 0x41, 0xdb, 0x86, 0x0f, 0x72, 0xd6, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0x46, 0x0b, 0xd1, 0x0e, 0x9a, 0x79, 0x8a, 0x5d, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0xa3, 0x0b, 0x23, 0x3b, 0x88, 0x53, 0x44, 0xb4, 0x0d, 0xbf, 0xb8, 0x6c, 0x10, 0xab, 0x88, 0x68, 0x1b, 0xc4, 0x99, 0x24, 0x5a, 0x87, 0x53, 0x6c, 0x01, 0xf8, 0xa0, 0x93, 0x0b, 0x73, 0x9b, 0x0b, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0x6b, 0xa1, 0x7b, 0x6b, 0x41, 0x2b, 0xc3, 0x37, 0xfc, 0xa2, 0xb4, 0xc1, 0x81, 0x93, 0x6e, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0xf4, 0x44, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0x10, 0x85, 0x70, 0x68, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x6e, 0xd1, 0xd0, 0x36, 0x48, 0x3d, 0x8d, 0x3d, 0x38, 0xc0, 0xd3, 0xad, 0x80, 0x17, 0x26, 0x96, 0x6e, 0x50, 0x4a, 0x88, 0xaf, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0xc1, 0x41, 0x9e, 0x6d, 0xc3, 0x47, 0xed, 0x1b, 0x04, 0xed, 0xcf, 0x1a, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xef, 0x91, 0x4c, 0x5c, 0xc3, 0x9f, 0x4b, 0x83, 0xc3, 0x07, 0x2f, 0x22, 0x78, 0x6c, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x97, 0xc3, 0x6c, 0x1e, 0x1c, 0xde, 0x44, 0xd7, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x68, 0x6c, 0xd2, 0x6b, 0x83, 0x18, 0x87, 0x2b, 0x6b, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x81, 0x56, 0xbf, 0x86, 0x3f, 0x97, 0x06, 0x87, 0x0f, 0xce, 0x97, 0xac, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0xf8, 0x75, 0x69, 0x6e, 0xf4, 0x41, 0x03, 0x72, 0x82, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0xe7, 0x6b, 0x31, 0xae, 0xe1, 0xcf, 0xa5, 0xc1, 0xe1, 0x83, 0x63, 0xc0, 0x6b, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x05, 0x3c, 0x75, 0x72, 0x65, 0x61, 0xec, 0x1a, 0xfe, 0x5c, 0x1a, 0x1c, 0xde, 0xf0, 0x45, 0xcd, 0x86, 0x3a, 0x7e, 0xb0, 0x0a, 0xf1, 0xb5, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x02, 0xde, 0x30, 0x39, 0xb9, 0xb0, 0xbc, 0x16, 0x77, 0x0d, 0x7f, 0x2e, 0x0d, 0x0e, 0x6f, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x06, 0x2f, 0xcc, 0x7f, 0xaf, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0x5e, 0x0a, 0xaf, 0x79, 0x10, 0x9d, 0xa4, 0x68, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x05, 0xbc, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2d, 0xee, 0x1a, 0xfe, 0x5c, 0x1a, 0x1c, 0x3e, 0x78, 0xfa, 0xb9, 0x5c, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0xc4, 0x3a, 0x1d, 0xd6, 0x41, 0x7c, 0xa0, 0xa2, 0x35, 0x0b, 0xf8, 0x65, 0x74, 0x79, 0xf0, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0x30, 0xbf, 0x06, 0xc1, 0x66, 0xba, 0x41, 0x74, 0x67, 0xa2, 0x6d, 0x10, 0x93, 0x9c, 0x68, 0x1b, 0xc4, 0x72, 0x27, 0xda, 0x06, 0x51, 0xf4, 0x89, 0xb6, 0xc1, 0xf3, 0xb5, 0x18, 0x37, 0x88, 0xd0, 0x50, 0xb4, 0x0d, 0x22, 0x20, 0x15, 0x6d, 0x83, 0x58, 0xdb, 0x44, 0x6b, 0x83, 0xa0, 0xfd, 0x59, 0xc3, 0xe7, 0x4a, 0x1b, 0x44, 0xcc, 0x29, 0xda, 0x06, 0x05, 0x91, 0x6e, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x78, 0x1d, 0x45, 0x5b, 0xc3, 0x9f, 0x4b, 0x83, 0xd3, 0x1b, 0xfe, 0x9d, 0x5f, 0x83, 0x58, 0x50, 0x45, 0xab, 0x83, 0x78, 0x71, 0x45, 0x5b, 0xc3, 0xe7, 0x4a, 0x1b, 0xc4, 0x7f, 0x29, 0xda, 0x06, 0xd1, 0xef, 0x8a, 0x56, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x6d, 0xb0, 0x0a, 0xcb, 0x69, 0x83, 0x98, 0xc0, 0xbc, 0xda, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0x16, 0xc0, 0x9f, 0xac, 0x6c, 0xec, 0x8d, 0xac, 0xac, 0x25, 0x4c, 0xee, 0xac, 0xae, 0xad, 0xcc, 0x8d, 0x6e, 0xde, 0xa0, 0x50, 0xee, 0x5c, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0xbb, 0x7b, 0x9b, 0x0f, 0xca, 0x39, 0xdb, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x3b, 0x9e, 0x5a, 0x1b, 0x84, 0x7e, 0xc9, 0x06, 0x21, 0x65, 0xb2, 0x41, 0x4c, 0xbd, 0xa2, 0xd5, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0xf0, 0xee, 0xde, 0xe6, 0x83, 0x48, 0x00, 0x90, 0x5a, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xdf, 0xb3, 0x32, 0x3a, 0x10, 0xb9, 0x34, 0x32, 0x90, 0x37, 0x33, 0x10, 0xba, 0xb6, 0xb4, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x77, 0x6f, 0x73, 0x1b, 0x94, 0xf6, 0x96, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xb5, 0x1e, 0xf0, 0x07, 0x65, 0x96, 0xee, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0x19, 0xc0, 0x8b, 0xac, 0x6c, 0xec, 0x8d, 0xac, 0xac, 0xc5, 0x4c, 0xee, 0xad, 0x6d, 0xc3, 0x83, 0x37, 0x6b, 0x78, 0x5b, 0xe7, 0xa0, 0x69, 0x54, 0xad, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0xf0, 0x25, 0x2b, 0x1b, 0x7b, 0x23, 0x2b, 0x6b, 0x09, 0x93, 0x93, 0x0b, 0xcb, 0x6b, 0x71, 0x37, 0x28, 0xed, 0x2d, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0xc7, 0x0c, 0xcf, 0x83, 0x82, 0x9e, 0x7d, 0x83, 0x42, 0xb9, 0x73, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0xa5, 0xb4, 0x68, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x33, 0x93, 0x7b, 0x0f, 0xca, 0x2c, 0xdd, 0x83, 0xc8, 0x09, 0xf1, 0xda, 0xf0, 0x17, 0xcd, 0x1a, 0x3e, 0x57, 0xda, 0xa0, 0xcc, 0xd2, 0x3d, 0x38, 0x50, 0x6e, 0x6c, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0x34, 0xaa, 0xd6, 0x06, 0xe1, 0xa9, 0xba, 0xe1, 0x83, 0x9c, 0x0d, 0xe2, 0x5d, 0x65, 0x6a, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0xcf, 0x4c, 0xee, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x58, 0x2c, 0xaf, 0xe1, 0x2f, 0x9a, 0x0d, 0x0a, 0x7a, 0xf6, 0x83, 0x83, 0x96, 0x67, 0x6d, 0xf8, 0xc4, 0x66, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0xb7, 0xdc, 0xd2, 0xdc, 0x7a, 0x80, 0xea, 0xc8, 0x40, 0xc8, 0xc2, 0xe8, 0x7a, 0x54, 0xba, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0xf0, 0x21, 0x2b, 0x1b, 0x7b, 0x23, 0x2b, 0x6b, 0x79, 0x73, 0x2b, 0xdb, 0x20, 0x76, 0x85, 0xd1, 0xd6, 0xe0, 0xe8, 0x3a, 0xb8, 0x41, 0x93, 0xaf, 0x5a, 0xb5, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0x19, 0xcc, 0x73, 0xc3, 0xd7, 0x2f, 0x1b, 0x1c, 0xb4, 0x3c, 0x37, 0xfc, 0xe2, 0xb2, 0x41, 0xe9, 0x67, 0x7c, 0xd0, 0xd0, 0x5a, 0xf2, 0x1a, 0x44, 0xbc, 0x30, 0xda, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb7, 0x34, 0xb7, 0x83, 0x74, 0xda, 0xcb, 0x59, 0x00, 0x5f, 0xb2, 0xb2, 0xb1, 0x37, 0xb2, 0xb2, 0x16, 0xb1, 0x3c, 0xba, 0xb2, 0xb9, 0x16, 0x77, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x38, 0xfa, 0x45, 0x5b, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x58, 0xde, 0x7c, 0x50, 0x66, 0xe9, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x9e, 0x7e, 0x2e, 0xb7, 0x41, 0x61, 0xa8, 0xba, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb1, 0xbc, 0xb9, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x4a, 0x7c, 0xdc, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x28, 0x2a, 0xc5, 0x37, 0x7c, 0x62, 0xb3, 0x86, 0x77, 0x7b, 0x36, 0x08, 0xbb, 0xdb, 0x0d, 0xe2, 0xcf, 0x19, 0xed, 0x20, 0xed, 0x34, 0x76, 0xc3, 0x07, 0x39, 0x6b, 0xf8, 0x37, 0x67, 0xc3, 0x83, 0x37, 0x87, 0x67, 0x26, 0x37, 0x3c, 0x33, 0xb9, 0xe1, 0xdd, 0x9e, 0x0d, 0x9f, 0x02, 0x1e, 0x2c, 0x5e, 0x49, 0xdd, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0xd8, 0x56, 0xde, 0xe0, 0xb0, 0x32, 0xb7, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0xc2, 0x62, 0x79, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x6a, 0x6f, 0xd0, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xb1, 0x2b, 0x8c, 0x76, 0x90, 0x0a, 0x34, 0xb6, 0x41, 0xc4, 0xe1, 0xa2, 0xb5, 0xe1, 0xe3, 0xa8, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x0a, 0xac, 0x6b, 0x78, 0xb7, 0x67, 0xc3, 0x6b, 0x3e, 0x1b, 0xc4, 0x9f, 0x33, 0x5a, 0x07, 0x69, 0xa7, 0xb1, 0xab, 0x41, 0xa4, 0x1a, 0xa3, 0x6d, 0x50, 0x28, 0x77, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0xe2, 0x26, 0x17, 0xed, 0x20, 0x42, 0x69, 0xd1, 0x36, 0x38, 0xda, 0xf0, 0xad, 0xe1, 0x73, 0x97, 0x35, 0x4c, 0xdc, 0x80, 0xe7, 0x96, 0xe6, 0x1e, 0x14, 0xb5, 0xc5, 0x87, 0x67, 0x26, 0x37, 0x28, 0xe1, 0x31, 0x37, 0x68, 0x1a, 0x55, 0x6b, 0x83, 0xf0, 0x54, 0xdd, 0x60, 0xa5, 0x8b, 0xd3, 0x06, 0x8d, 0x35, 0x67, 0x6d, 0xd0, 0xe4, 0xab, 0xd6, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x06, 0xcb, 0x67, 0x72, 0x37, 0xbc, 0xdb, 0xb3, 0x41, 0x51, 0x39, 0xbf, 0x86, 0xb7, 0x75, 0x0e, 0x56, 0x7a, 0xc0, 0x1f, 0xc4, 0x72, 0x35, 0xda, 0x06, 0x27, 0x07, 0xb9, 0x0d, 0x1a, 0x6b, 0xce, 0x5a, 0x83, 0x25, 0xf5, 0x4b, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0x2e, 0xc0, 0xbf, 0xce, 0x6d, 0xae, 0x0e, 0x0e, 0xee, 0x4d, 0x8e, 0xae, 0x8c, 0xac, 0x85, 0x2e, 0x0f, 0xae, 0x3c, 0x68, 0x05, 0x1f, 0xec, 0x20, 0x3c, 0x55, 0x57, 0xc3, 0x13, 0xef, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0x4a, 0xd2, 0xdc, 0xe8, 0x40, 0x4a, 0xe4, 0xca, 0xc2, 0xd8, 0x40, 0x4a, 0xea, 0xe4, 0xca, 0xc2, 0xd8, 0x36, 0x08, 0x36, 0xd3, 0x0d, 0xa2, 0x3b, 0x13, 0x6d, 0x83, 0x98, 0xe4, 0x44, 0xdb, 0x20, 0x8a, 0x3e, 0xd1, 0xda, 0xa0, 0x30, 0x54, 0x5d, 0xc3, 0xc7, 0x51, 0x07, 0xf1, 0xd4, 0x8d, 0xb6, 0x41, 0x90, 0x9e, 0x6e, 0xd0, 0x58, 0x73, 0xd6, 0x1a, 0x44, 0x77, 0x26, 0xda, 0x86, 0xaf, 0x5f, 0x36, 0x58, 0xba, 0x86, 0xba, 0xe1, 0xeb, 0x97, 0x0d, 0x1f, 0xc2, 0x1c, 0xac, 0x80, 0xce, 0x5d, 0x83, 0x28, 0xfa, 0x44, 0xdb, 0xf0, 0xf5, 0xcb, 0x86, 0x07, 0x6f, 0x0e, 0x62, 0xc1, 0x1c, 0x6d, 0x0d, 0x62, 0x92, 0x13, 0x6d, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0x93, 0x39, 0x58, 0x01, 0x9d, 0xdb, 0x1a, 0xc4, 0xda, 0x26, 0xda, 0x86, 0x4f, 0x6c, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0x69, 0x54, 0xad, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0x78, 0xe3, 0xee, 0x20, 0x62, 0x52, 0xd1, 0x6a, 0xc3, 0x2f, 0x2e, 0x1b, 0xc4, 0x9b, 0x32, 0xda, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x19, 0xf6, 0xdb, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xd4, 0x3a, 0xde, 0xa0, 0xa8, 0x14, 0x5f, 0xc3, 0xdb, 0x3a, 0x07, 0xcf, 0xb9, 0x6f, 0xa9, 0xd6, 0x20, 0x02, 0x52, 0xd1, 0x36, 0x28, 0x0c, 0x55, 0x37, 0x88, 0x1e, 0x72, 0xb4, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0x3e, 0xe0, 0xb1, 0xa5, 0x8d, 0x07, 0x0d, 0x5c, 0x9f, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x42, 0x81, 0x75, 0x83, 0x15, 0xd0, 0xb9, 0x07, 0x69, 0xa7, 0xb1, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0xf8, 0xbe, 0x7d, 0x83, 0xb2, 0xb0, 0xf8, 0xa0, 0x81, 0xeb, 0xd3, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x51, 0x39, 0xbf, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb6, 0xb4, 0xb1, 0x83, 0x58, 0xae, 0x46, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x82, 0x96, 0xd1, 0x5a, 0xc3, 0xc7, 0x51, 0x07, 0xf1, 0x15, 0x8f, 0x76, 0x50, 0x74, 0x19, 0xaf, 0x86, 0xcf, 0x95, 0x36, 0x88, 0x98, 0x53, 0xb4, 0x83, 0x43, 0x4c, 0xc7, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0xde, 0xed, 0xd9, 0xf0, 0x27, 0xd0, 0x06, 0xf1, 0xd4, 0x8d, 0xb6, 0x86, 0x8f, 0xa3, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x28, 0xb0, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0xaf, 0xf9, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xdd, 0x83, 0xc6, 0x9a, 0xb3, 0x3a, 0x48, 0x3b, 0x8d, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x98, 0x3c, 0xda, 0x06, 0xf1, 0xd4, 0x8d, 0x76, 0x10, 0x87, 0xf6, 0x68, 0xab, 0xe1, 0x73, 0xa5, 0x0d, 0xe2, 0xbf, 0x14, 0xed, 0xe0, 0x10, 0xd3, 0xb1, 0x41, 0x61, 0xa8, 0xba, 0x41, 0xf4, 0x90, 0xa3, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0xb0, 0xd2, 0x03, 0x7e, 0x83, 0x58, 0x77, 0x47, 0xdb, 0xe0, 0xc4, 0x7e, 0xb3, 0xc1, 0xc1, 0x5a, 0x6e, 0x83, 0x55, 0xbd, 0x4a, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x48, 0xe4, 0x45, 0x6b, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xa0, 0xb1, 0xe6, 0xac, 0x36, 0x88, 0x1e, 0x72, 0xb4, 0x83, 0xa8, 0xe6, 0x46, 0x5b, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0xaf, 0xa3, 0x68, 0x07, 0x87, 0x98, 0x8e, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x77, 0xfb, 0x68, 0x1b, 0x44, 0x00, 0x3f, 0xda, 0x41, 0xbc, 0xdf, 0xa3, 0xb5, 0x1a, 0x44, 0xa7, 0x2e, 0xda, 0x06, 0x85, 0x72, 0xe7, 0x06, 0xb1, 0x85, 0x8d, 0xb6, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xd3, 0xa8, 0x5a, 0x1b, 0x84, 0xa7, 0xea, 0x06, 0x47, 0x1b, 0xbe, 0x35, 0x28, 0xe1, 0x31, 0x37, 0x68, 0xe2, 0x56, 0x6b, 0x83, 0xd2, 0xcf, 0x78, 0xc3, 0x2f, 0x2e, 0x1b, 0x94, 0x7e, 0xc6, 0x6b, 0xb8, 0xa4, 0x36, 0x9c, 0x62, 0x6b, 0xb0, 0xd2, 0x03, 0xfe, 0x20, 0xde, 0x94, 0xd1, 0x0e, 0x5a, 0xa8, 0xd5, 0x6a, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x9b, 0x31, 0xda, 0x06, 0xf1, 0xd4, 0x8d, 0x76, 0x10, 0xb5, 0xc7, 0x68, 0x87, 0x53, 0xac, 0x0e, 0xa7, 0xd8, 0x2c, 0x80, 0x2f, 0x59, 0xd9, 0xd8, 0x1b, 0x59, 0x59, 0x8b, 0x5c, 0xd9, 0x5c, 0x1d, 0x1b, 0xdd, 0xbc, 0x41, 0xa1, 0xdc, 0xb9, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x27, 0x57, 0x86, 0x1f, 0x9c, 0x67, 0x47, 0x0f, 0x22, 0x94, 0x16, 0x6d, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0x93, 0x2c, 0x5a, 0x1b, 0x9e, 0x99, 0x3c, 0x88, 0xd1, 0x5d, 0xb4, 0x0d, 0x56, 0xf5, 0x2a, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0xc6, 0x14, 0x4c, 0x1b, 0xa4, 0x9c, 0x56, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0x7c, 0xdc, 0x0d, 0x16, 0x2f, 0xc5, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0x4f, 0xae, 0x0c, 0xaf, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x59, 0x66, 0x5d, 0x1b, 0x2c, 0xd8, 0x41, 0x3f, 0x58, 0x9d, 0x7f, 0xbf, 0x02, 0x78, 0x92, 0x95, 0x8d, 0xbd, 0x91, 0x95, 0xb5, 0xd0, 0xbd, 0xc1, 0xa5, 0x8d, 0xcd, 0x07, 0xd1, 0x83, 0x90, 0x76, 0x38, 0xc5, 0x16, 0xc0, 0x3b, 0x6d, 0xae, 0x85, 0x2c, 0xcf, 0x2d, 0xac, 0x2d, 0x6d, 0xac, 0x85, 0x2e, 0x0f, 0xae, 0xdc, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x3c, 0x3c, 0x78, 0x61, 0xfe, 0xfb, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0xc4, 0xeb, 0x28, 0xda, 0x41, 0xe9, 0xfc, 0xbe, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x04, 0x9b, 0xe9, 0x06, 0xb1, 0xb6, 0x89, 0xb6, 0x41, 0x04, 0xa4, 0xa2, 0x6d, 0x10, 0xff, 0xa5, 0x68, 0x1d, 0x94, 0xce, 0xef, 0x1b, 0x1e, 0x61, 0x5d, 0xc3, 0xdb, 0xac, 0x1b, 0xfe, 0xcd, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xf4, 0x9c, 0x3c, 0x68, 0x9f, 0x94, 0xf5, 0xf0, 0xe0, 0xcd, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x7d, 0x6a, 0xed, 0x06, 0x8d, 0xbe, 0xa5, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0xa2, 0xc1, 0x21, 0xad, 0x5a, 0x01, 0xbc, 0xca, 0xdc, 0xc6, 0xde, 0xc8, 0xca, 0x5a, 0xc8, 0xc2, 0xe8, 0xc2, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x8a, 0xda, 0xe2, 0x83, 0x17, 0xe6, 0xbf, 0x6f, 0xf8, 0x8b, 0x66, 0x83, 0x93, 0x9e, 0xe8, 0x06, 0x27, 0x07, 0xb9, 0x0d, 0xd6, 0xc8, 0x06, 0xaf, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x84, 0x7c, 0xa3, 0x1d, 0x2c, 0x84, 0x0d, 0x3e, 0x08, 0x4f, 0xd5, 0x35, 0x88, 0xd7, 0x51, 0xb4, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x16, 0x1b, 0x5e, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x93, 0x4c, 0xdb, 0x06, 0x29, 0xd0, 0xa9, 0x07, 0xab, 0x6f, 0x5b, 0x37, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x80, 0x87, 0x56, 0x36, 0x1f, 0x34, 0x9d, 0xfe, 0xb9, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x25, 0x52, 0xf5, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x28, 0xff, 0x8b, 0x37, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x27, 0x0f, 0x5e, 0x98, 0xff, 0xbe, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x85, 0x8a, 0xb4, 0x83, 0x52, 0x5d, 0x76, 0x0d, 0x97, 0xd4, 0x06, 0x87, 0xfd, 0x8e, 0x35, 0x28, 0xff, 0x8b, 0x0f, 0xca, 0x75, 0xd9, 0x0e, 0x56, 0x03, 0x5f, 0x6e, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0x2f, 0xdf, 0x1d, 0x34, 0x9d, 0xfe, 0xb9, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x25, 0x52, 0xf5, 0x06, 0x31, 0xd4, 0x91, 0xb6, 0xe1, 0x17, 0xa5, 0x0d, 0xe2, 0xc1, 0x23, 0x6d, 0x83, 0x62, 0x47, 0x73, 0x83, 0x78, 0xf7, 0x48, 0xdb, 0x60, 0x41, 0x10, 0xdd, 0x41, 0xc4, 0x7e, 0xa4, 0x6d, 0x70, 0xb4, 0xe1, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0x08, 0xda, 0x36, 0x78, 0xde, 0xda, 0xcb, 0x1a, 0xfe, 0xa2, 0xd9, 0xe0, 0xa4, 0x27, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x1a, 0x95, 0xff, 0x5b, 0xc3, 0xdb, 0x3a, 0x07, 0xa9, 0x6c, 0xc1, 0xb5, 0xe1, 0x2f, 0x9a, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x99, 0xa5, 0xbb, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb7, 0xb2, 0xf9, 0xe0, 0xa4, 0x27, 0xda, 0x86, 0x4f, 0x6c, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0xc7, 0x56, 0x46, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x85, 0x9e, 0x93, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x46, 0xe5, 0xff, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x87, 0x56, 0x36, 0x57, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x2c, 0x95, 0x24, 0xdc, 0x20, 0xf2, 0x53, 0xd2, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x88, 0x0e, 0x0c, 0xb2, 0x0d, 0xca, 0x85, 0xf3, 0x83, 0xd8, 0x3b, 0x49, 0xdb, 0xa0, 0x30, 0x54, 0xdd, 0xa0, 0x20, 0x3e, 0xdf, 0xa0, 0xd8, 0xd1, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0x9c, 0x5a, 0xfa, 0x0e, 0x56, 0x03, 0x5f, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x4e, 0x04, 0x6d, 0x1b, 0x3c, 0x6f, 0xed, 0xe5, 0xe0, 0xe4, 0xd4, 0xb7, 0x41, 0x41, 0x1a, 0xbb, 0x86, 0xef, 0xdb, 0x07, 0xbc, 0x37, 0xb3, 0xf9, 0xa0, 0x81, 0xeb, 0xd3, 0x35, 0x38, 0xda, 0xf0, 0xad, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x00, 0x7d, 0x74, 0x77, 0x6f, 0x20, 0x68, 0x65, 0x78, 0x20, 0x64, 0x69, 0x67, 0x69, 0x74, 0x73, 0x20, 0x70, 0x65, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0xae, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x0a, 0xac, 0x1b, 0x9e, 0x99, 0x3c, 0x08, 0x56, 0xd6, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x7f, 0x02, 0xad, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0x80, 0xf7, 0xd8, 0x5b, 0x9d, 0x1b, 0x1d, 0x08, 0x5a, 0x59, 0x18, 0x19, 0x0b, 0x48, 0x98, 0x1b, 0xd9, 0x41, 0x6c, 0x76, 0x3c, 0x6d, 0x70, 0x62, 0xbf, 0xd9, 0x60, 0xa1, 0xe7, 0xe4, 0x06, 0x27, 0xf6, 0x9b, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0x65, 0xec, 0xad, 0xce, 0x8d, 0x0e, 0x24, 0x8c, 0x8d, 0x0d, 0x84, 0x2e, 0x2c, 0x8d, 0x0d, 0x84, 0x2c, 0x8c, 0x2e, 0xec, 0xa0, 0x51, 0xf9, 0xbf, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xb4, 0xe1, 0xe4, 0xca, 0xc6, 0xca, 0xc8, 0xd2, 0xdc, 0xce, 0x40, 0xde, 0xea, 0xe4, 0xe6, 0x5c, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x60, 0x21, 0xb8, 0x41, 0x19, 0x7d, 0x7e, 0x10, 0x49, 0x26, 0x69, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xe7, 0x2e, 0x1b, 0xac, 0xb9, 0x3f, 0xde, 0x70, 0x49, 0x6d, 0x70, 0xd8, 0xef, 0x58, 0x83, 0xf2, 0xbf, 0x78, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xe3, 0xee, 0x20, 0xea, 0x3e, 0xd1, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0xf7, 0x66, 0x36, 0x57, 0x1b, 0x2c, 0xa9, 0x5f, 0x5a, 0xc3, 0x2f, 0x2e, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x01, 0xbe, 0x77, 0x65, 0x69, 0x72, 0x64, 0x2d, 0x72, 0x65, 0x66, 0x2d, 0x6c, 0x65, 0x6e, 0xf4, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0xa1, 0xe7, 0xe4, 0x41, 0x73, 0x13, 0x54, 0x6d, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0x62, 0xf4, 0x27, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xf4, 0x9c, 0xdc, 0x60, 0x35, 0xf0, 0x65, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x44, 0xd0, 0xb6, 0xc1, 0xf3, 0xd6, 0x5e, 0x0e, 0x9a, 0x9b, 0xa0, 0x5a, 0x0d, 0x4f, 0xbc, 0xaf, 0xe1, 0x4e, 0x9b, 0x01, 0xd0, 0xfb, 0x0e, 0xad, 0x4c, 0xae, 0x0c, 0x04, 0x0b, 0x04, 0x2d, 0x6c, 0x0e, 0x64, 0x0d, 0xa4, 0x8c, 0xad, 0xac, 0xad, 0xcc, 0x8d, 0x6e, 0x0e, 0x04, 0x65, 0x0d, 0x24, 0x6d, 0x0e, 0x24, 0x6c, 0x6e, 0xae, 0xae, 0xad, 0x8c, 0x0c, 0x84, 0xee, 0x0d, 0x44, 0xac, 0x0c, 0xe4, 0xcd, 0x0c, 0x84, 0x2e, 0x0f, 0xae, 0x0c, 0xa4, 0x2e, 0xcd, 0x8d, 0x4e, 0xa6, 0xc6, 0x26, 0x45, 0x77, 0x10, 0xff, 0xa5, 0x68, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x9c, 0x08, 0xda, 0xd6, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xfc, 0x2f, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0x71, 0xca, 0x93, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xe8, 0x39, 0xb9, 0x41, 0x0c, 0x75, 0xa4, 0x55, 0x1b, 0x2e, 0xa9, 0x0d, 0xa7, 0xd8, 0x1a, 0x94, 0xff, 0xc5, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x1b, 0x77, 0x07, 0xf1, 0x3d, 0x8a, 0x76, 0x10, 0xcb, 0x49, 0x69, 0xad, 0x41, 0xc4, 0x9c, 0xa2, 0x6d, 0xb0, 0xa4, 0x7e, 0x69, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x05, 0xf8, 0x8b, 0xe5, 0xd1, 0x95, 0xcd, 0xb5, 0xb8, 0xb5, 0xd0, 0xbd, 0xbd, 0xb5, 0xb0, 0xbd, 0xb9, 0x9d, 0x6b, 0xf8, 0xdc, 0x65, 0xc3, 0xca, 0xd0, 0x41, 0xea, 0x69, 0xec, 0x1a, 0x3e, 0x77, 0x19, 0xe0, 0x0b, 0x1b, 0xa3, 0xab, 0x0b, 0x63, 0x37, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0x10, 0x79, 0x1d, 0x69, 0x6d, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x5f, 0xfc, 0x6e, 0x10, 0x85, 0x4f, 0x69, 0x07, 0x69, 0xa7, 0xb1, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0x79, 0x20, 0x5a, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xb8, 0x45, 0x43, 0x3b, 0x88, 0xe5, 0xa4, 0xb4, 0x0d, 0x52, 0xa0, 0x53, 0xd7, 0xf0, 0xc6, 0xdd, 0x41, 0xfc, 0x19, 0xa2, 0xb5, 0x1a, 0x9e, 0x78, 0x5f, 0xc3, 0x9d, 0x36, 0x03, 0xa0, 0xe7, 0x9b, 0x19, 0x08, 0x5b, 0x99, 0xdb, 0x19, 0x1d, 0x1a, 0xc8, 0x1a, 0x08, 0xca, 0x1d, 0x5a, 0xda, 0x18, 0x1a, 0x48, 0xda, 0x1c, 0x48, 0xd8, 0xdc, 0x5c, 0x5d, 0x5b, 0x19, 0x19, 0x08, 0xdd, 0x1b, 0x88, 0x58, 0x19, 0xc8, 0x9b, 0x19, 0x08, 0x5d, 0x1e, 0x5c, 0x19, 0x48, 0x5d, 0x9a, 0x1b, 0x9d, 0x4c, 0x8d, 0x4d, 0xea, 0x20, 0x02, 0x52, 0xd1, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x38, 0x11, 0xb4, 0xad, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0x41, 0xf9, 0x5f, 0xbc, 0xe1, 0x17, 0x97, 0x0d, 0xe2, 0x94, 0x27, 0x6d, 0x83, 0x28, 0x7c, 0x4a, 0xab, 0x83, 0x18, 0x8b, 0x4a, 0x5b, 0x83, 0x58, 0xdb, 0x44, 0xdb, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xfc, 0x2f, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0x71, 0xa3, 0x8e, 0xb6, 0x41, 0x3c, 0x25, 0xa5, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xad, 0xe3, 0x0d, 0x8a, 0x4a, 0xf1, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x72, 0x64, 0xe1, 0x83, 0x58, 0x4e, 0x4a, 0xab, 0xd6, 0x20, 0x8a, 0x3e, 0xd1, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x74, 0x46, 0xa5, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0x16, 0x0d, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x8d, 0x97, 0x57, 0x07, 0xb1, 0x9c, 0x94, 0xd6, 0x06, 0x29, 0xd0, 0xa9, 0x6b, 0x78, 0xe3, 0xee, 0x20, 0xa6, 0x0b, 0xd1, 0x5a, 0x83, 0x98, 0xe4, 0x44, 0xdb, 0x70, 0x49, 0x6d, 0x38, 0xc5, 0xd6, 0xa0, 0xfc, 0x2f, 0xde, 0xf0, 0x8b, 0xcb, 0x06, 0x71, 0xca, 0x93, 0xb6, 0x86, 0x0f, 0x72, 0x36, 0x88, 0xa1, 0x8e, 0xb4, 0x0d, 0x8f, 0xc9, 0x1c, 0x1e, 0xbc, 0xa9, 0x35, 0x88, 0xee, 0x4c, 0xb4, 0x0d, 0x97, 0xd4, 0x86, 0x53, 0x6c, 0x0d, 0xca, 0xff, 0xe2, 0x0d, 0xbf, 0xb8, 0x6c, 0x10, 0xa7, 0x3c, 0x69, 0x6b, 0xf8, 0xfa, 0x65, 0xc3, 0x83, 0x37, 0x1b, 0xbe, 0x7e, 0xd9, 0xf0, 0x21, 0xcc, 0x41, 0x0c, 0x75, 0xa4, 0x55, 0x87, 0x53, 0x6c, 0x01, 0xbc, 0xca, 0xdc, 0xc6, 0xde, 0xc8, 0xca, 0x5a, 0xc2, 0xe4, 0xce, 0xe6, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0x2c, 0x6c, 0x3e, 0x88, 0x7b, 0x52, 0xb4, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x4a, 0x2b, 0xd2, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0x44, 0xbf, 0x52, 0xda, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xc8, 0xc2, 0xe6, 0xea, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x00, 0x3e, 0x68, 0x65, 0x78, 0x2d, 0x74, 0x6f, 0x2d, 0x6e, 0x75, 0xed, 0x86, 0x5f, 0x94, 0x36, 0x58, 0xa4, 0x1d, 0xb7, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x00, 0x3f, 0xb7, 0x37, 0xb7, 0x16, 0xb4, 0x32, 0xbc, 0x96, 0xb1, 0x37, 0x39, 0x72, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0xb0, 0xe8, 0x2a, 0xee, 0x60, 0x0d, 0x37, 0xfa, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0x6e, 0xde, 0x1a, 0xfe, 0xcd, 0xd9, 0xf0, 0xe0, 0xcd, 0xc1, 0xe9, 0x22, 0xe3, 0xe0, 0x74, 0x24, 0xb2, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0xb3, 0xa1, 0xcb, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0x2f, 0xa2, 0x0f, 0xde, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0xaa, 0xa9, 0x90, 0x3a, 0x88, 0x09, 0xcc, 0xab, 0x0d, 0xd6, 0x1f, 0xc5, 0x35, 0x0b, 0xe0, 0xe3, 0x56, 0xd7, 0xd6, 0x42, 0xf7, 0xd6, 0x82, 0x56, 0x86, 0x6f, 0xf8, 0x45, 0x69, 0x83, 0x15, 0xbd, 0xef, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xa4, 0x27, 0xba, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x28, 0x84, 0x43, 0xdb, 0xf0, 0x41, 0xce, 0x06, 0x31, 0xbb, 0xb7, 0xb5, 0x86, 0x67, 0xf1, 0x0e, 0xa2, 0xeb, 0xb3, 0x66, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x71, 0x8b, 0x86, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x62, 0xea, 0xf2, 0xea, 0x20, 0x0d, 0x2f, 0x77, 0xd6, 0x20, 0x7e, 0xe1, 0xd0, 0x36, 0xfc, 0xa2, 0xb4, 0xc1, 0x22, 0x82, 0xba, 0x0d, 0x7f, 0xd1, 0x6c, 0x70, 0xd2, 0x13, 0xdd, 0xf0, 0x8b, 0xcb, 0x06, 0x8b, 0xe0, 0xdd, 0x36, 0x58, 0x83, 0xfe, 0x76, 0x78, 0xe8, 0x67, 0x16, 0xf0, 0xe4, 0xe0, 0xc6, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0x58, 0x85, 0xe5, 0xb4, 0x86, 0xb7, 0x75, 0x06, 0xbc, 0x30, 0xb1, 0xb4, 0x0d, 0x56, 0x61, 0x39, 0x6d, 0x10, 0x1b, 0xcd, 0x4b, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0x2c, 0xbb, 0x8f, 0xda, 0xf0, 0x51, 0xfb, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xaf, 0x33, 0x72, 0xd9, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0x37, 0x78, 0x11, 0xc1, 0x63, 0x6b, 0xf8, 0x73, 0x69, 0xe0, 0xe9, 0xde, 0x83, 0x17, 0x11, 0x3c, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0x8a, 0x48, 0x82, 0x83, 0xf3, 0x1d, 0xe1, 0x1a, 0xfe, 0x5c, 0x1a, 0xc0, 0xe3, 0x2c, 0x6c, 0xae, 0x05, 0x4e, 0x2e, 0x6d, 0xac, 0x3c, 0x38, 0xdf, 0x11, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0x4e, 0xb4, 0x1e, 0x07, 0xe7, 0x3b, 0xc2, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x41, 0x9e, 0xed, 0xe0, 0xa4, 0x27, 0xda, 0x6a, 0x90, 0xb4, 0x20, 0xbc, 0xe1, 0xa3, 0xf6, 0x0d, 0x82, 0xf6, 0x67, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x87, 0x90, 0x6c, 0x1e, 0xc4, 0x8b, 0x2b, 0xda, 0x1a, 0x3e, 0x57, 0x5a, 0x43, 0x06, 0x7c, 0xc3, 0xcb, 0x77, 0x07, 0xaf, 0xb9, 0xcd, 0x5b, 0xc3, 0x9f, 0x4b, 0x83, 0xb3, 0x1b, 0x04, 0x9b, 0xe9, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0xf8, 0xcb, 0xc2, 0xe4, 0xd8, 0xd2, 0xca, 0xe6, 0xe8, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0xf0, 0xb1, 0x85, 0xd1, 0x95, 0xcd, 0xd1, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xe0, 0x85, 0x2b, 0x73, 0x23, 0x4b, 0x73, 0x3b, 0xab, 0x59, 0x83, 0xa7, 0x65, 0x60, 0x6d, 0xf8, 0xa8, 0x7d, 0x83, 0xa0, 0xfd, 0x59, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xc0, 0xb7, 0x8c, 0x0e, 0xad, 0xc5, 0xad, 0xec, 0xae, 0xc5, 0x2c, 0x8d, 0x8d, 0xae, 0x4c, 0x5e, 0xc3, 0x9f, 0x4b, 0x1b, 0x34, 0xa0, 0x42, 0x75, 0x50, 0x66, 0xe9, 0xb6, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0x00, 0x2f, 0x65, 0x74, 0x68, 0x2d, 0x67, 0x65, 0x74, 0x2d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2d, 0x6c, 0x6f, 0x67, 0xf3, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0x79, 0x64, 0xec, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0xe1, 0xdf, 0xf9, 0x05, 0xf0, 0x28, 0xb3, 0x2b, 0x73, 0xa3, 0x6b, 0x61, 0x7b, 0x3b, 0xab, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0xf0, 0x2b, 0xa3, 0x43, 0x6b, 0x39, 0x2b, 0xa3, 0x6b, 0x61, 0x7b, 0x3b, 0x9b, 0x0f, 0xe2, 0x95, 0x31, 0x6d, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x00, 0x7e, 0xca, 0xe8, 0xd0, 0x5a, 0xce, 0xca, 0xe8, 0x5a, 0xd8, 0xde, 0xce, 0xe6, 0x5a, 0xc4, 0xf2, 0x5a, 0xd0, 0xc2, 0xe6, 0xd0, 0x83, 0x78, 0x65, 0x4c, 0x5b, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0x80, 0xaf, 0x32, 0x3a, 0xb4, 0x96, 0xb3, 0x37, 0xba, 0x16, 0xb3, 0x34, 0x36, 0xba, 0x32, 0xb9, 0x96, 0x31, 0xb4, 0x30, 0xb7, 0xb3, 0xb2, 0xf9, 0x20, 0x5e, 0x19, 0xd3, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0xe0, 0xa7, 0x8c, 0x0e, 0xad, 0x85, 0x4e, 0x2e, 0xcc, 0x6d, 0x2e, 0x6c, 0x8c, 0x2e, 0xed, 0xcd, 0xad, 0x05, 0x2d, 0x6c, 0x0e, 0x5d, 0xc3, 0x9f, 0x4b, 0x1b, 0x9c, 0x79, 0xf0, 0x0e, 0x8e, 0x2d, 0xa5, 0x75, 0x38, 0xc5, 0x16, 0x80, 0x0f, 0x3a, 0xb9, 0x30, 0xb7, 0xb9, 0xb0, 0x31, 0xba, 0xb4, 0x37, 0xb7, 0x16, 0xb9, 0xb2, 0xb9, 0x3a, 0x36, 0x7a, 0xc3, 0x47, 0xed, 0x1b, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0xf8, 0x88, 0xb1, 0xbd, 0x8d, 0xad, 0xb5, 0xa0, 0x85, 0xcd, 0xa1, 0x07, 0xcb, 0xd5, 0x52, 0xd7, 0xf0, 0xe7, 0xd2, 0x00, 0x7e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0xf2, 0xc1, 0xf9, 0x8e, 0x70, 0x0d, 0x7f, 0x2e, 0x0d, 0xc0, 0x03, 0x9d, 0x5c, 0x98, 0xdb, 0x5c, 0xd8, 0x18, 0x5d, 0xda, 0x9b, 0x5b, 0x4b, 0x9a, 0x1b, 0x59, 0x19, 0x7e, 0x70, 0xbe, 0x23, 0x5c, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0xce, 0xc8, 0xe5, 0xe0, 0xd8, 0x52, 0xba, 0x86, 0x3f, 0x97, 0x06, 0x9e, 0xee, 0x3d, 0x58, 0xae, 0x96, 0xba, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xf1, 0x89, 0xe5, 0xc1, 0x79, 0x76, 0xb4, 0x59, 0x00, 0x2f, 0x3a, 0xb9, 0x30, 0xb7, 0xb9, 0xb0, 0x31, 0xba, 0xb4, 0x37, 0x77, 0xc3, 0x47, 0xed, 0x1b, 0xbe, 0x6f, 0xdf, 0x20, 0xa2, 0x40, 0xd3, 0x36, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x4a, 0xbd, 0xe2, 0x41, 0x99, 0xa5, 0xbb, 0x86, 0x3f, 0x97, 0x36, 0x88, 0x6e, 0xbf, 0xb4, 0x83, 0x32, 0x4b, 0x77, 0x0d, 0x7f, 0x2e, 0x6d, 0x50, 0x44, 0x12, 0x1c, 0x94, 0x59, 0xba, 0x1b, 0xc4, 0x4d, 0x5f, 0xda, 0x1a, 0xfe, 0x5c, 0xda, 0xe0, 0x44, 0xeb, 0x71, 0x50, 0x66, 0xe9, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0x0e, 0xf2, 0x6c, 0x07, 0xc7, 0x96, 0xd2, 0x35, 0xfc, 0xb9, 0x34, 0xc0, 0x3f, 0x86, 0x16, 0x96, 0xe6, 0xd6, 0x92, 0x46, 0x1e, 0x1c, 0x5b, 0x4a, 0x5b, 0x01, 0x3c, 0xc6, 0xc2, 0xd8, 0xd8, 0x5a, 0xc8, 0xc2, 0xe8, 0xc2, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0x10, 0x14, 0x58, 0x07, 0xe7, 0xd9, 0xd1, 0x35, 0xfc, 0xb9, 0x34, 0x80, 0x47, 0x98, 0xdc, 0x59, 0x5d, 0x5b, 0x99, 0x1b, 0xdd, 0x7c, 0x10, 0xf7, 0xa4, 0x68, 0xad, 0x00, 0x3c, 0xd0, 0xe5, 0xc1, 0x95, 0x91, 0xb5, 0xd0, 0xc9, 0x85, 0xb9, 0xcd, 0x85, 0x8d, 0xd1, 0xa5, 0xbd, 0xb9, 0x1b, 0x3e, 0x6a, 0xdf, 0xf0, 0x7d, 0xfb, 0x06, 0x31, 0xa3, 0x9a, 0xb6, 0x41, 0xd0, 0xfe, 0xac, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x0f, 0x56, 0xb5, 0xa1, 0xae, 0xe1, 0xdf, 0xf9, 0x35, 0x88, 0x28, 0xd0, 0xb4, 0x6a, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0x7e, 0x10, 0x09, 0x56, 0x53, 0x6b, 0xf8, 0x77, 0x7e, 0x01, 0xf4, 0xe9, 0xe4, 0xc2, 0xdc, 0xe6, 0xc2, 0xc6, 0xe8, 0xd2, 0xde, 0xdc, 0x5a, 0x62, 0x6a, 0x6a, 0x72, 0xd5, 0x2c, 0x00, 0x1f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x72, 0x65, 0x61, 0x64, 0x2d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0xf4, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x3e, 0x8d, 0x3c, 0x78, 0x36, 0x7a, 0xcc, 0x06, 0x71, 0xd3, 0x97, 0xb6, 0x86, 0x7f, 0xe7, 0xd7, 0x20, 0x4a, 0x4e, 0xd3, 0xaa, 0xc3, 0x29, 0xb6, 0x06, 0xaf, 0x64, 0xeb, 0xd9, 0xf0, 0x51, 0xfb, 0x06, 0x41, 0xfb, 0xb3, 0x86, 0xcf, 0x95, 0xd6, 0x90, 0x01, 0xdf, 0xf0, 0xf2, 0x5d, 0x80, 0x7f, 0x19, 0x1d, 0x5a, 0x8b, 0x18, 0xdb, 0xdb, 0xd8, 0x5a, 0x8b, 0x5b, 0x5d, 0x9b, 0x58, 0x99, 0x7c, 0x70, 0x5c, 0x3c, 0x59, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xe0, 0x2f, 0xa3, 0x43, 0x6b, 0x19, 0x0b, 0x63, 0x63, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x37, 0x16, 0xc6, 0x6e, 0xf8, 0x77, 0x7e, 0x83, 0xc7, 0x9d, 0xa5, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb2, 0x32, 0xf1, 0x60, 0xc5, 0x51, 0x77, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0xb8, 0x44, 0x4c, 0x5b, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x99, 0xdc, 0xbb, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0x1e, 0xac, 0x37, 0xea, 0x5e, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0xdd, 0x9b, 0x78, 0x10, 0x0b, 0xba, 0x69, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x0b, 0x23, 0x93, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0xe4, 0x20, 0xca, 0xf9, 0xd2, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xe5, 0xe5, 0xe5, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x48, 0x99, 0xac, 0x41, 0xb0, 0x99, 0x6e, 0x70, 0x6c, 0x29, 0xdd, 0xe0, 0xe0, 0x51, 0x5a, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0x64, 0xc0, 0x37, 0xbc, 0x7c, 0x17, 0xc0, 0x5b, 0x19, 0x1d, 0x5a, 0xcb, 0x59, 0x19, 0x5d, 0x8b, 0x18, 0xdb, 0xdb, 0xd8, 0x5a, 0x8b, 0x58, 0x5e, 0x8b, 0x5b, 0x5d, 0x9b, 0x58, 0x99, 0xbc, 0x86, 0x3f, 0x97, 0x36, 0x58, 0x54, 0x93, 0x7e, 0x50, 0x66, 0xe9, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0x8f, 0x0e, 0x6f, 0x3e, 0x7c, 0xb0, 0xda, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0xf2, 0x15, 0xd3, 0x0e, 0x22, 0x3f, 0x31, 0x6d, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0xe3, 0x8e, 0x69, 0x07, 0x91, 0x98, 0x9b, 0xb6, 0x86, 0xcf, 0x95, 0x36, 0x88, 0x55, 0xc8, 0xb4, 0x0d, 0xa2, 0xa0, 0x0f, 0xeb, 0x20, 0x26, 0x77, 0xd3, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x0b, 0xe0, 0xab, 0x8c, 0x0e, 0xad, 0xe5, 0xac, 0x8c, 0xae, 0xc5, 0x2c, 0x8d, 0x8d, 0xae, 0x4c, 0xae, 0x65, 0x0c, 0x2d, 0xcc, 0xed, 0xac, 0x6c, 0x3e, 0x88, 0xfc, 0xc4, 0xb4, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x02, 0x78, 0x2d, 0xa3, 0x43, 0x6b, 0x39, 0x2b, 0xa3, 0x6b, 0xa1, 0x93, 0x0b, 0x73, 0x9b, 0x0b, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0x6b, 0x11, 0xcb, 0x6b, 0x41, 0x0b, 0x9b, 0x43, 0xd7, 0xf0, 0xe7, 0xd2, 0x80, 0x47, 0x87, 0x87, 0x1e, 0x1c, 0x5b, 0x4a, 0x5b, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0x80, 0xc7, 0x32, 0x3a, 0xb4, 0x96, 0xb3, 0x32, 0xba, 0x16, 0x3a, 0xb9, 0x30, 0xb7, 0xb9, 0xb0, 0x31, 0xba, 0xb4, 0x37, 0xb7, 0x96, 0xb1, 0xb7, 0x3a, 0x37, 0x7a, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x61, 0x64, 0xf2, 0xc1, 0x8b, 0x08, 0x1e, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x49, 0x0b, 0xc2, 0x07, 0x2b, 0x8e, 0xba, 0x5b, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0x2e, 0xc0, 0xbb, 0x8c, 0x0e, 0xad, 0xe5, 0xac, 0x8c, 0xae, 0x45, 0x2c, 0x8c, 0x2d, 0xcc, 0x6d, 0xac, 0x3c, 0x88, 0x76, 0xe6, 0xb4, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x02, 0x78, 0x2d, 0xa3, 0x43, 0x6b, 0x39, 0x2b, 0xa3, 0x6b, 0xa1, 0x93, 0x0b, 0x73, 0x9b, 0x0b, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0x6b, 0x91, 0x2b, 0x1b, 0x2b, 0x4b, 0x83, 0xa3, 0x0f, 0xa2, 0x3a, 0x39, 0x6d, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x00, 0xfe, 0xca, 0xe8, 0xd0, 0x5a, 0xe6, 0xca, 0xdc, 0xc8, 0x5a, 0xe4, 0xc2, 0xee, 0x5a, 0xe8, 0xe4, 0xc2, 0xdc, 0xe6, 0xc2, 0xc6, 0xe8, 0xd2, 0xde, 0xdc, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x51, 0x5b, 0x7c, 0x70, 0x6c, 0x29, 0xad, 0x59, 0x83, 0xa8, 0x74, 0x4d, 0xdb, 0xf0, 0x51, 0xfb, 0x86, 0xef, 0xdb, 0x37, 0x88, 0x4a, 0xd7, 0xb4, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0x05, 0xa6, 0x69, 0x1b, 0xc4, 0x83, 0x68, 0xda, 0x1a, 0xfe, 0x5c, 0x1a, 0x80, 0x9f, 0xb6, 0x30, 0xbc, 0x16, 0x38, 0xb9, 0xb4, 0x37, 0xb9, 0x34, 0xba, 0xbc, 0x96, 0xb3, 0xb0, 0xb9, 0x16, 0xb3, 0xb2, 0xf2, 0xa0, 0xcc, 0xd2, 0x5d, 0xc3, 0x9f, 0x4b, 0x03, 0x78, 0xb5, 0x85, 0xe1, 0xb5, 0x9c, 0x85, 0xcd, 0xb5, 0x98, 0x95, 0x95, 0x07, 0x65, 0x96, 0xee, 0x06, 0x11, 0x39, 0x9a, 0xb6, 0x41, 0xdc, 0xf4, 0xa5, 0x6d, 0x10, 0x93, 0xa4, 0x69, 0x1b, 0xc4, 0x52, 0x69, 0xda, 0x1a, 0xfe, 0x5c, 0x1a, 0xc0, 0x2b, 0x6c, 0x6c, 0xac, 0x6c, 0x6e, 0xae, 0x85, 0x2d, 0x6d, 0x8e, 0xde, 0x20, 0xf4, 0x4b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x07, 0x4e, 0x8f, 0x36, 0x78, 0x11, 0xc1, 0xe3, 0xc1, 0xa1, 0xa5, 0xb4, 0xc3, 0x29, 0xb6, 0x06, 0x91, 0xde, 0x98, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x9e, 0xb6, 0x34, 0xb7, 0x32, 0x72, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0x5c, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x17, 0x9f, 0x58, 0x1e, 0x2c, 0x57, 0x4b, 0x5d, 0xc3, 0x9f, 0x4b, 0x03, 0x78, 0xb0, 0xbd, 0x9d, 0xb5, 0xa4, 0xb9, 0x91, 0x95, 0xe1, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xfe, 0x5c, 0xda, 0x20, 0x36, 0x39, 0xd3, 0x0e, 0xca, 0x2c, 0xdd, 0x35, 0xfc, 0xb9, 0x34, 0x80, 0x3f, 0x9d, 0x5c, 0x98, 0xdb, 0x5c, 0xd8, 0x18, 0x5d, 0xda, 0x9b, 0x5b, 0x0b, 0x5a, 0xd8, 0x1c, 0x7a, 0x70, 0x6c, 0x29, 0x5d, 0xc3, 0x9f, 0x4b, 0x1b, 0xc4, 0xd0, 0x66, 0xda, 0x41, 0x99, 0xa5, 0xbb, 0x86, 0x3f, 0x97, 0x36, 0x88, 0x03, 0xcd, 0xb4, 0x83, 0x63, 0x4b, 0xe9, 0x1a, 0xfe, 0x5c, 0x1a, 0xe0, 0x95, 0x2b, 0x6b, 0x7b, 0xb3, 0x2b, 0x23, 0x0f, 0x1f, 0xac, 0xd6, 0x1a, 0xfe, 0x5c, 0xda, 0xe0, 0x3d, 0x92, 0x89, 0x07, 0xc7, 0x96, 0xd2, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x41, 0x9e, 0xed, 0xe0, 0x3c, 0x3b, 0xba, 0x86, 0x27, 0xde, 0xd7, 0x70, 0xa7, 0xcd, 0x00, 0xe8, 0xb7, 0xc2, 0x56, 0x36, 0x47, 0x07, 0x92, 0xe6, 0x36, 0x47, 0x57, 0x16, 0x46, 0x06, 0xf2, 0x66, 0x06, 0xb2, 0xc2, 0x96, 0x36, 0x47, 0x07, 0x32, 0x17, 0x66, 0x57, 0x36, 0x07, 0x12, 0x06, 0xc2, 0xf6, 0x46, 0x07, 0xf2, 0x66, 0x06, 0xf2, 0xe3, 0x07, 0x32, 0x86, 0x56, 0x36, 0xb6, 0x36, 0xe7, 0xda, 0xf0, 0xe7, 0xd2, 0x00, 0x1f, 0xdd, 0x1b, 0x5c, 0xda, 0xd8, 0xbc, 0x41, 0xe8, 0x97, 0x6c, 0xb0, 0x6e, 0x09, 0xfa, 0xe0, 0xd0, 0x52, 0xda, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x02, 0x78, 0x95, 0xb9, 0x8d, 0xbd, 0x91, 0x95, 0xb5, 0x8c, 0x85, 0xb1, 0xb1, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0xfe, 0x64, 0xd3, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x49, 0x4f, 0x74, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0x24, 0x19, 0x10, 0x6e, 0x70, 0x22, 0x68, 0x5b, 0xc3, 0xb3, 0x78, 0x83, 0xc2, 0x83, 0x14, 0x4c, 0xa7, 0x0d, 0xcf, 0x4c, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x94, 0x96, 0xa5, 0xb5, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x97, 0xd4, 0xb4, 0x6a, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x83, 0x85, 0xe0, 0x06, 0x87, 0x95, 0xb9, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0xe2, 0x16, 0x0d, 0x6d, 0x83, 0xd4, 0xd3, 0xd8, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0xc4, 0xa4, 0x1a, 0xda, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xa9, 0xcb, 0xab, 0x0d, 0x1a, 0x76, 0xa4, 0x6e, 0x05, 0xf0, 0x86, 0x0b, 0x93, 0x9b, 0x2b, 0x6b, 0x29, 0xb3, 0x2b, 0x73, 0xa3, 0x6b, 0x61, 0x7b, 0x3b, 0x37, 0x58, 0x85, 0xe5, 0xb4, 0x41, 0xd4, 0xc9, 0x3c, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xb0, 0x6c, 0x5f, 0xf0, 0xe0, 0x05, 0xff, 0x9a, 0x1b, 0xfe, 0xa2, 0xd9, 0x20, 0x56, 0x1b, 0xd3, 0x36, 0x38, 0xda, 0xf0, 0xad, 0xe1, 0xdd, 0x9e, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x1c, 0x23, 0x7d, 0x1d, 0xa4, 0x02, 0x8d, 0x1d, 0x34, 0x6c, 0x8a, 0xb5, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0x8e, 0x36, 0x7c, 0x6b, 0xf8, 0xc5, 0x65, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xf0, 0xb3, 0xbd, 0x9d, 0x25, 0xb9, 0x91, 0x95, 0xe1, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x7e, 0x2b, 0xbf, 0x36, 0x3c, 0x33, 0xb9, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0xb7, 0xd5, 0x6d, 0xb0, 0x18, 0xfe, 0xbc, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0x78, 0xb6, 0xf4, 0xe0, 0xd9, 0xe8, 0x31, 0x1b, 0x94, 0xf0, 0x98, 0x0b, 0x3c, 0x5b, 0xda, 0x06, 0x05, 0x45, 0xe6, 0x06, 0x47, 0x1b, 0xbe, 0x35, 0x38, 0x86, 0x1b, 0x6c, 0x70, 0x0c, 0x37, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0xff, 0x56, 0x77, 0x90, 0x0a, 0x34, 0x76, 0xd0, 0xb0, 0x29, 0xd6, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0x88, 0x12, 0xfe, 0xb4, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0x56, 0xd5, 0xc4, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xf1, 0x5b, 0xf9, 0xb5, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x21, 0xb5, 0xb4, 0x0e, 0xe2, 0xce, 0x3f, 0xad, 0xd5, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0x80, 0x3f, 0x9d, 0x5c, 0x98, 0xdb, 0x5c, 0xd8, 0x18, 0x5d, 0xda, 0x9b, 0x5b, 0x92, 0x1b, 0x59, 0x19, 0x7e, 0x10, 0x31, 0x03, 0x6a, 0xab, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x00, 0x6f, 0x3a, 0xb9, 0x30, 0xb7, 0xb9, 0xb0, 0x31, 0xba, 0xb4, 0x37, 0x37, 0xa4, 0xb0, 0x39, 0xf4, 0x20, 0x62, 0x06, 0xd4, 0x56, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x01, 0x5e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0xf2, 0x41, 0xc4, 0x0c, 0xa8, 0xad, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x03, 0x3c, 0xc4, 0xd8, 0xde, 0xc6, 0xd6, 0x90, 0xc2, 0xe6, 0xd0, 0x83, 0x88, 0x19, 0x50, 0x5b, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x1f, 0x44, 0xbf, 0x79, 0xda, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0xd7, 0x99, 0x6d, 0x50, 0xc0, 0xe6, 0xaf, 0xe1, 0x6d, 0x9d, 0x81, 0x17, 0x7b, 0xab, 0xd5, 0xf0, 0xc6, 0xdd, 0x41, 0x34, 0x68, 0xa2, 0x1d, 0x44, 0xfa, 0x80, 0xda, 0x1a, 0xbc, 0xaa, 0xee, 0xfa, 0x60, 0x31, 0xfc, 0xf9, 0x1a, 0x1c, 0x6d, 0xf8, 0x56, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x88, 0x89, 0xf6, 0xb4, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xbf, 0x95, 0x5f, 0x1b, 0x9e, 0x99, 0x5c, 0xc3, 0xbb, 0x3d, 0x1b, 0xb4, 0x1f, 0x25, 0x75, 0x10, 0x77, 0xfe, 0x69, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x1f, 0xc4, 0x95, 0xf9, 0xd3, 0x86, 0xbf, 0x68, 0x36, 0x88, 0xc5, 0xf6, 0xb4, 0x0d, 0x0a, 0x3e, 0xcc, 0x35, 0x28, 0x26, 0x31, 0xd7, 0xf0, 0xb9, 0xd2, 0x06, 0xe7, 0xd9, 0xd1, 0x83, 0x43, 0x4c, 0xc7, 0x41, 0xc1, 0xb3, 0xb9, 0x41, 0x61, 0xa8, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x37, 0x02, 0xb5, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7a, 0x50, 0xf0, 0x6c, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x4a, 0xa4, 0xea, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7d, 0x50, 0xf0, 0x6c, 0x6e, 0x10, 0x6f, 0x04, 0x6a, 0xb5, 0x02, 0xf0, 0x07, 0x17, 0x26, 0x37, 0x57, 0xd6, 0x42, 0x27, 0x17, 0xe6, 0x36, 0x17, 0x36, 0x46, 0x97, 0xf6, 0xe6, 0xd6, 0x22, 0x57, 0x36, 0x57, 0xc7, 0x46, 0x6f, 0xb0, 0x0a, 0xcb, 0x69, 0x83, 0xa8, 0x93, 0x79, 0xda, 0xf0, 0x8b, 0xd2, 0x06, 0xb1, 0xe3, 0xf3, 0xb5, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0x7c, 0xee, 0xb2, 0x41, 0xb3, 0xda, 0x63, 0x07, 0x91, 0xa1, 0xf8, 0xb5, 0xe1, 0x2f, 0x9a, 0x35, 0xfc, 0x3b, 0xbf, 0x06, 0xd1, 0x81, 0x99, 0x56, 0x1b, 0x1c, 0x6d, 0xf8, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x51, 0xa5, 0x9f, 0x76, 0x10, 0x15, 0x8a, 0x5f, 0x1b, 0x1c, 0x5d, 0x07, 0xd7, 0x20, 0x5e, 0x14, 0xd4, 0x36, 0x7c, 0xd4, 0xbe, 0x41, 0x00, 0x9d, 0x1d, 0x14, 0x14, 0x99, 0x6b, 0x10, 0xbd, 0x08, 0x6a, 0x1b, 0xde, 0xd6, 0x19, 0xc0, 0xa3, 0x2d, 0x2c, 0x4f, 0xac, 0xac, 0xc5, 0xad, 0xae, 0x6d, 0x0d, 0x22, 0xa9, 0x40, 0xed, 0x20, 0x66, 0x3c, 0xd4, 0x56, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0x9d, 0x91, 0xcb, 0x41, 0xa4, 0x0f, 0xa8, 0xad, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0x3c, 0xdd, 0x7b, 0x10, 0x33, 0x1e, 0x6a, 0x6b, 0x10, 0xc9, 0x6c, 0x67, 0x07, 0x8b, 0xe1, 0xcf, 0x5b, 0x01, 0xf8, 0x60, 0x4b, 0x3b, 0x43, 0xa3, 0x6b, 0x51, 0x9b, 0x7b, 0x73, 0x6b, 0x91, 0x2b, 0x8b, 0xab, 0x2b, 0x9b, 0xa3, 0x37, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x35, 0x28, 0x35, 0x2d, 0x0f, 0xa2, 0x48, 0x44, 0xad, 0x01, 0x78, 0x66, 0x4b, 0x5b, 0x2b, 0x03, 0x51, 0x9b, 0x7b, 0x73, 0x6b, 0x91, 0x2b, 0x8b, 0xab, 0x2b, 0x9b, 0xa3, 0x63, 0x01, 0x11, 0xab, 0xa3, 0x03, 0x31, 0x7b, 0x93, 0x03, 0x29, 0x61, 0x57, 0x02, 0xa0, 0x07, 0xaa, 0x27, 0xa2, 0x27, 0x1d, 0x90, 0x22, 0xbc, 0x37, 0xb9, 0xb1, 0xb4, 0xb9, 0x34, 0xb7, 0x33, 0x90, 0x15, 0xb8, 0x3a, 0x39, 0x36, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x90, 0xb7, 0x3a, 0x39, 0x90, 0xb9, 0xbc, 0x39, 0xba, 0xb2, 0x36, 0x90, 0xb4, 0x39, 0x90, 0x30, 0x90, 0xb6, 0xba, 0x31, 0x34, 0x10, 0xb6, 0x37, 0xb7, 0xb3, 0x32, 0x39, 0x10, 0xba, 0x32, 0xb9, 0x36, 0x90, 0x32, 0x33, 0xb3, 0x37, 0x39, 0xba, 0xbd, 0x04, 0xa0, 0xc9, 0x59, 0x19, 0x1d, 0x08, 0x1d, 0x5a, 0x19, 0xc8, 0x58, 0x9d, 0x9c, 0x5c, 0x99, 0x1b, 0x1d, 0xc8, 0x5b, 0x1d, 0x1d, 0x5c, 0x1d, 0x1d, 0x08, 0x5d, 0x1e, 0x5c, 0xd9, 0x1c, 0x88, 0xd9, 0x9b, 0x1c, 0x88, 0xdb, 0xdb, 0x9d, 0xab, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xd5, 0xc9, 0xb1, 0x07, 0x8f, 0x5b, 0x05, 0xdd, 0x20, 0x76, 0x7c, 0xbe, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0xcf, 0x28, 0x44, 0xdc, 0xf0, 0x8b, 0xcb, 0x06, 0x51, 0xd7, 0x73, 0xb6, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x8e, 0x2c, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x23, 0xa0, 0xb3, 0x0d, 0x22, 0xa7, 0x8f, 0xac, 0xd6, 0xe0, 0xe8, 0x3a, 0xb8, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0x80, 0xdf, 0xd8, 0x9b, 0x1b, 0x5d, 0x99, 0x1b, 0x5d, 0x0b, 0x5d, 0x1e, 0x5c, 0xb9, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x03, 0xfc, 0xc3, 0xe0, 0xe0, 0xd8, 0xd2, 0xc6, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x5e, 0xd4, 0xe6, 0xde, 0xdc, 0x5a, 0xc3, 0xbb, 0x3d, 0x1b, 0x9c, 0xa5, 0xc0, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xd1, 0x78, 0x79, 0xb5, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0xcf, 0x50, 0x0f, 0xde, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x39, 0x78, 0xde, 0xbf, 0xe6, 0x41, 0x4c, 0x63, 0x5e, 0x1d, 0x44, 0x85, 0xe2, 0x57, 0xb5, 0x02, 0xf8, 0xc3, 0x85, 0xc9, 0xcd, 0x95, 0xb5, 0x94, 0xd9, 0x95, 0xb9, 0xd1, 0xb5, 0xb0, 0xbd, 0x9d, 0xcd, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x1b, 0xb4, 0x1f, 0x25, 0x75, 0x10, 0x75, 0x32, 0x4f, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xc8, 0xb5, 0x4f, 0xab, 0xd5, 0x20, 0xda, 0x3c, 0xd4, 0x36, 0x58, 0x85, 0xe5, 0xb4, 0x41, 0xd4, 0xc9, 0x3c, 0x6d, 0x70, 0xb4, 0xe1, 0xdb, 0x20, 0x26, 0xfa, 0xd3, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x97, 0x0f, 0x9e, 0x8d, 0x1e, 0xb3, 0x41, 0x09, 0x8f, 0xb9, 0x41, 0xc1, 0xb3, 0xb9, 0x41, 0x41, 0x91, 0xb9, 0xc1, 0x31, 0xdc, 0x60, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x1b, 0x81, 0xda, 0x06, 0x67, 0x05, 0xa1, 0x0e, 0xa7, 0x58, 0x0b, 0xe0, 0x2d, 0x57, 0x16, 0x57, 0x57, 0x36, 0x47, 0xd7, 0x42, 0xf7, 0xd6, 0xa2, 0x36, 0xf7, 0xe6, 0x6e, 0xb0, 0x0a, 0xcb, 0x69, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x6d, 0x9d, 0x0d, 0xa2, 0xe8, 0x03, 0xac, 0x83, 0xd8, 0x68, 0x5e, 0xda, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x5c, 0x5a, 0x7c, 0xf0, 0x6c, 0xf4, 0x98, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xc9, 0x95, 0xc5, 0x1b, 0xfe, 0x9d, 0xdf, 0xe0, 0x8d, 0x85, 0x88, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x5e, 0xf0, 0xaf, 0xb9, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0xe7, 0x4e, 0xd0, 0x6d, 0xb0, 0x00, 0xb3, 0x69, 0x0d, 0xdf, 0xb7, 0x0f, 0x2e, 0x6f, 0x50, 0x42, 0xc7, 0xae, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x60, 0xea, 0x38, 0x38, 0xcf, 0x8e, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0x0f, 0x2e, 0x6c, 0x3e, 0x88, 0x6f, 0xed, 0xaf, 0x0e, 0xc2, 0x74, 0x6c, 0x0d, 0xbf, 0xb8, 0xac, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x17, 0xf0, 0xaa, 0xcd, 0xbd, 0xb9, 0xc9, 0xc1, 0x8d, 0x1b, 0x2c, 0xfd, 0x7a, 0xdd, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0xa0, 0xc9, 0xb8, 0xc0, 0xd5, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x5e, 0xfd, 0x42, 0xb7, 0xc1, 0xd2, 0xaf, 0xd7, 0x0d, 0x6f, 0xeb, 0x6c, 0x30, 0x98, 0x3a, 0x0e, 0x0a, 0x9e, 0xcd, 0xd5, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x02, 0x3e, 0xb8, 0x30, 0xb9, 0xb0, 0xb6, 0x79, 0x83, 0x24, 0x87, 0xa7, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x70, 0x61, 0xf3, 0x41, 0xc1, 0xb3, 0xb9, 0x06, 0x25, 0x3c, 0xe6, 0x02, 0x9e, 0x5c, 0x5a, 0xdc, 0x06, 0x05, 0x45, 0xe6, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0xfc, 0xe2, 0xb2, 0x06, 0x4d, 0xd7, 0x84, 0x6e, 0xb0, 0xf4, 0xeb, 0x75, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0x31, 0xd1, 0xa4, 0x56, 0x6d, 0x10, 0xa4, 0xa7, 0x6b, 0x1c, 0x3a, 0x78, 0x12, 0xcc, 0xef, 0x1a, 0x44, 0x0e, 0x6d, 0xda, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0x80, 0x77, 0x19, 0x1d, 0xda, 0x97, 0x18, 0xdb, 0xdb, 0xd8, 0x9a, 0x53, 0x5d, 0x9b, 0x58, 0x99, 0x7c, 0x50, 0xd6, 0x79, 0xae, 0x41, 0xdc, 0xd8, 0xa6, 0x6d, 0x50, 0x18, 0xaa, 0xae, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x80, 0xbf, 0x8c, 0x0e, 0xed, 0x6b, 0x2c, 0x8c, 0x8d, 0xdd, 0xe0, 0xe8, 0x3a, 0xb8, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0xfe, 0x65, 0x74, 0x68, 0x2d, 0x63, 0x61, 0x6c, 0x6c, 0x2d, 0x74, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0x1b, 0x0b, 0x63, 0x0f, 0x9e, 0x04, 0xf3, 0xdb, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x78, 0x8a, 0xb1, 0xbd, 0x8d, 0xad, 0xb5, 0xd0, 0xbd, 0xb5, 0xa8, 0xcd, 0xbd, 0xb9, 0xad, 0xe1, 0x6d, 0x9d, 0x01, 0x8f, 0xac, 0x4c, 0x3c, 0x78, 0x12, 0xcc, 0x6f, 0xad, 0x41, 0x5c, 0x22, 0xa6, 0x6d, 0x50, 0x18, 0xaa, 0xae, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x00, 0xcf, 0x32, 0x3a, 0xb4, 0x2f, 0xb7, 0xb2, 0x3b, 0xa3, 0x34, 0x36, 0xba, 0x32, 0x79, 0x83, 0x25, 0xd5, 0x49, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0x34, 0x15, 0x07, 0xb6, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0xe8, 0x92, 0x02, 0xdb, 0xe0, 0x68, 0xc3, 0xb7, 0x86, 0x77, 0x7b, 0x36, 0x68, 0xdf, 0xdf, 0x73, 0xc3, 0x33, 0x93, 0x07, 0x8d, 0xb6, 0xb3, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x90, 0x32, 0x59, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x6c, 0xc2, 0x5c, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0xf4, 0xa6, 0x3f, 0x88, 0x50, 0xf8, 0xaf, 0xda, 0xe0, 0xe8, 0x3a, 0xb8, 0x06, 0x25, 0x3c, 0xe6, 0x02, 0x9e, 0x99, 0xdc, 0x7b, 0xf0, 0x24, 0x98, 0xdf, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x01, 0x1e, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x1a, 0xad, 0xd4, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf5, 0x41, 0x0c, 0x7f, 0xa9, 0xd5, 0x1a, 0x94, 0xf0, 0x98, 0x0b, 0x78, 0x74, 0x6f, 0xe2, 0xc1, 0x93, 0x60, 0x7e, 0x37, 0x28, 0x28, 0x32, 0x37, 0x38, 0x86, 0x1b, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0xbc, 0x74, 0x6f, 0x42, 0x6c, 0x6f, 0x63, 0xeb, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x1a, 0xad, 0xd4, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf5, 0x41, 0x1c, 0x8e, 0xa9, 0xd5, 0x1a, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x3d, 0x27, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x17, 0x46, 0x26, 0x1f, 0x3c, 0x09, 0xe6, 0xb7, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0xce, 0xf9, 0x4b, 0x1b, 0x14, 0x14, 0x99, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0xe0, 0x3d, 0x92, 0x89, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x1e, 0x93, 0x39, 0x88, 0xc4, 0x33, 0xb5, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x02, 0xec, 0xf0, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0xc3, 0x1f, 0x5a, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xa2, 0x72, 0x7e, 0xc3, 0x83, 0x37, 0x07, 0x51, 0x80, 0xa6, 0x56, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0x24, 0x39, 0x3c, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x12, 0xa9, 0x7a, 0x83, 0x48, 0x40, 0x53, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0xa4, 0x0e, 0xc6, 0x6e, 0x10, 0xdd, 0x6b, 0x6a, 0x07, 0x91, 0x83, 0x04, 0xd6, 0x1a, 0x94, 0xf0, 0x98, 0x6b, 0x50, 0x5e, 0x5e, 0x1e, 0x3c, 0x09, 0xe6, 0x77, 0x83, 0x82, 0x22, 0x73, 0x83, 0x73, 0xfe, 0xd2, 0x06, 0x05, 0x45, 0xe6, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x88, 0x89, 0xf6, 0xb4, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x01, 0x7c, 0xe9, 0xde, 0xe0, 0xd2, 0xc6, 0xe6, 0x5a, 0xe8, 0xde, 0x5a, 0xd4, 0xe6, 0xde, 0xdc, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0x1c, 0xc0, 0xa9, 0xd5, 0x1a, 0x44, 0xb5, 0x6f, 0xda, 0x06, 0x85, 0xa1, 0xea, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x0e, 0xe0, 0xa7, 0x8c, 0x0e, 0xed, 0xeb, 0xac, 0x8c, 0x4e, 0x88, 0xed, 0x6d, 0x6c, 0x4d, 0x28, 0xcf, 0xa9, 0xae, 0x4d, 0xac, 0x4c, 0xde, 0xe0, 0xe8, 0x3a, 0xb8, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x80, 0x1d, 0x5e, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x5b, 0x67, 0x00, 0x3e, 0xdc, 0xea, 0xda, 0x5a, 0xe8, 0xde, 0x5a, 0xd0, 0xca, 0xf0, 0x5a, 0xda, 0xd2, 0xdc, 0xd2, 0xda, 0xc2, 0xd8, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x8b, 0x6a, 0xd2, 0x0f, 0x9e, 0x04, 0xf3, 0x5b, 0x6b, 0xd0, 0x1c, 0xde, 0xe7, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0x3a, 0xbc, 0xf9, 0xe0, 0x49, 0x30, 0xbf, 0xad, 0x41, 0xe4, 0x2b, 0xa6, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0xf0, 0x50, 0x46, 0x87, 0xf6, 0x75, 0x56, 0x46, 0x67, 0x94, 0xc6, 0x46, 0x57, 0x26, 0xc7, 0xf4, 0x76, 0x36, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x12, 0x60, 0x87, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x16, 0xe4, 0xd2, 0x5a, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0xa0, 0x42, 0x75, 0xf0, 0x24, 0x98, 0xdf, 0x3a, 0x28, 0xeb, 0x3c, 0xd7, 0x20, 0xc6, 0x1d, 0xd3, 0x36, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0x80, 0x57, 0x19, 0x1d, 0xda, 0xd7, 0x59, 0x19, 0x1d, 0xd3, 0xdb, 0xd9, 0x7c, 0x10, 0x5d, 0x5a, 0x6a, 0x6b, 0x10, 0xab, 0x90, 0x69, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0x44, 0xe2, 0x9f, 0xda, 0x06, 0x4b, 0xaa, 0x93, 0x36, 0x28, 0x28, 0x32, 0x37, 0x28, 0x0c, 0x55, 0x37, 0x68, 0x2a, 0x0e, 0x6c, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0xd1, 0x25, 0x05, 0xb6, 0xc1, 0xd1, 0x86, 0x6f, 0x83, 0xf8, 0xe1, 0x52, 0xdb, 0xf0, 0x17, 0xcd, 0x06, 0x11, 0xd7, 0xa5, 0xb6, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0x7e, 0x71, 0xd9, 0x20, 0x5e, 0x14, 0xd4, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x09, 0xb0, 0xc3, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x35, 0x94, 0x68, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x4a, 0xee, 0x86, 0x83, 0x27, 0xc1, 0xfc, 0x56, 0x07, 0xf1, 0x6d, 0xa6, 0xb6, 0x06, 0x31, 0x53, 0x9c, 0xb6, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xc0, 0x4f, 0x19, 0x1d, 0xda, 0xd7, 0x59, 0x19, 0x9d, 0x51, 0x1a, 0x1b, 0x5d, 0x99, 0xdc, 0x10, 0x5a, 0x98, 0xdb, 0x59, 0xd9, 0x7c, 0x10, 0xa7, 0x7c, 0x6a, 0x6b, 0x10, 0xd7, 0xca, 0x69, 0x1b, 0x14, 0x86, 0xaa, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0x3a, 0x80, 0xb7, 0x32, 0x3a, 0xb4, 0xaf, 0xb3, 0x32, 0x3a, 0x2a, 0xb9, 0x30, 0xb7, 0xb9, 0xb0, 0x31, 0xba, 0xb4, 0x37, 0xb7, 0xa1, 0xb7, 0x3a, 0x37, 0x7a, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x01, 0x76, 0x78, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xdd, 0x6b, 0x6a, 0x07, 0x51, 0x80, 0xa6, 0xd6, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x1a, 0xad, 0xd4, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x49, 0x0b, 0xc2, 0x07, 0x4f, 0x82, 0xf9, 0xad, 0x35, 0x88, 0x5b, 0xe7, 0xb4, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xe0, 0x5b, 0x46, 0x87, 0xf6, 0x75, 0x56, 0x46, 0x27, 0x14, 0xc6, 0x16, 0xe6, 0x36, 0x56, 0x1e, 0x44, 0x37, 0xa3, 0xda, 0x1a, 0xc4, 0xe7, 0x71, 0xda, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0x00, 0x7f, 0x65, 0x74, 0x68, 0x5f, 0x67, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x48, 0x61, 0x73, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x01, 0x76, 0x78, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x41, 0x86, 0x6a, 0x6b, 0x78, 0x5b, 0x67, 0xc0, 0xa3, 0xc3, 0x43, 0x0f, 0x9e, 0x04, 0xf3, 0x5b, 0x07, 0x65, 0x9d, 0xe7, 0x1a, 0xc4, 0x2b, 0x74, 0xda, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x23, 0xcc, 0xe0, 0x74, 0x00, 0x8f, 0x65, 0x74, 0x68, 0x5f, 0x67, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0xf4, 0x41, 0xbc, 0x51, 0xaa, 0xad, 0x41, 0xac, 0x4d, 0xa7, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x07, 0xf0, 0x55, 0x46, 0x87, 0xf6, 0x35, 0x57, 0xe6, 0x46, 0x26, 0x15, 0x76, 0x47, 0x25, 0x17, 0xe6, 0x36, 0x17, 0x36, 0x46, 0x97, 0xf6, 0xe6, 0xae, 0xe1, 0xdd, 0x9e, 0x0d, 0x12, 0x60, 0x87, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x31, 0xd6, 0xa7, 0xb6, 0x86, 0xb7, 0x75, 0x36, 0x28, 0x6a, 0x8b, 0x0f, 0x9e, 0x04, 0xf3, 0x5b, 0x07, 0x65, 0x9d, 0x67, 0xab, 0x41, 0x8c, 0x51, 0xa9, 0x6d, 0xb0, 0x0a, 0xcb, 0x69, 0x83, 0x88, 0xff, 0x51, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x91, 0x73, 0x9b, 0xb6, 0xe1, 0x2f, 0x9a, 0x0d, 0x5e, 0xf0, 0xaf, 0xb9, 0x41, 0x61, 0xa8, 0xba, 0x41, 0x53, 0x71, 0x60, 0x1b, 0x9c, 0xd8, 0x6f, 0x36, 0x88, 0x2e, 0x29, 0xb0, 0x0d, 0x8e, 0x36, 0x7c, 0x1b, 0xc4, 0x0f, 0x97, 0xda, 0x86, 0xbf, 0x68, 0x36, 0x88, 0xb8, 0x2e, 0xb5, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0x50, 0xc2, 0x63, 0xae, 0xc1, 0xeb, 0x8c, 0x5c, 0x06, 0xbc, 0xb1, 0x30, 0xb6, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x07, 0xaf, 0x33, 0x72, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x24, 0xc0, 0x0e, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0xa2, 0x7b, 0x4d, 0x6d, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1f, 0xc4, 0x96, 0xa8, 0x5a, 0xb5, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0xe0, 0xe9, 0xde, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x02, 0xec, 0xf0, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xba, 0xd7, 0xd4, 0xd6, 0xf0, 0xb6, 0xce, 0xc0, 0xd3, 0xbd, 0x07, 0x51, 0x2a, 0xaa, 0x56, 0xad, 0x41, 0x09, 0x8f, 0xb9, 0x06, 0x45, 0x24, 0xc1, 0x41, 0x94, 0x8a, 0xaa, 0x6d, 0x50, 0x50, 0x64, 0x6e, 0x70, 0x0c, 0x37, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x28, 0x22, 0x09, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x09, 0xb0, 0xc3, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x18, 0xeb, 0x53, 0x5b, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0xf1, 0x90, 0xaa, 0x56, 0xad, 0x41, 0x09, 0x8f, 0xb9, 0x06, 0xd1, 0xed, 0x97, 0x76, 0x10, 0xa5, 0xa2, 0x6a, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x1c, 0xc3, 0x0d, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x03, 0xfe, 0xb3, 0xb0, 0x39, 0x28, 0xb9, 0xb4, 0xb1, 0x72, 0x0d, 0xef, 0xf6, 0x6c, 0x90, 0x00, 0x3b, 0xbc, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xb1, 0x3e, 0xb5, 0x35, 0xbc, 0xad, 0x33, 0x78, 0x7d, 0x10, 0xdf, 0xac, 0x6a, 0xd5, 0x1a, 0x94, 0xf0, 0x98, 0x6b, 0x70, 0xa2, 0xf5, 0x38, 0x88, 0x52, 0x51, 0xb5, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x07, 0x27, 0x5a, 0x8f, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x02, 0xec, 0xf0, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xc6, 0xfa, 0xd4, 0xd6, 0xf0, 0xb6, 0xce, 0xe0, 0xf5, 0x41, 0x5c, 0xc4, 0xaa, 0x55, 0x6b, 0x50, 0xc2, 0x63, 0xae, 0xc1, 0x41, 0x9e, 0xed, 0x20, 0x4a, 0x45, 0xd5, 0x36, 0x28, 0x28, 0x32, 0x37, 0x38, 0x86, 0x1b, 0x6c, 0xf8, 0xc5, 0x65, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x1f, 0x1c, 0xe4, 0xd9, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x09, 0xb0, 0xc3, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0xd6, 0x69, 0xd5, 0xaa, 0x15, 0x80, 0x77, 0xb8, 0x30, 0xb9, 0xb9, 0xb2, 0x96, 0x32, 0x3a, 0xb4, 0x96, 0xb3, 0x32, 0xba, 0x16, 0x3a, 0xb9, 0x30, 0xb7, 0xb9, 0xb0, 0x31, 0xba, 0xb4, 0x37, 0xb7, 0x96, 0xb1, 0xb7, 0x3a, 0x37, 0x7a, 0xc3, 0xdb, 0x3a, 0x03, 0xf8, 0xc3, 0x85, 0xc9, 0xcd, 0x95, 0xb5, 0xa0, 0x95, 0xe1, 0xb5, 0xc8, 0x95, 0xcd, 0xd5, 0xb1, 0xd1, 0x1d, 0x4e, 0xb1, 0x35, 0x88, 0x13, 0x5d, 0xb5, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xd5, 0x83, 0x17, 0xfc, 0x6b, 0x6e, 0xf8, 0x8b, 0x66, 0xc3, 0x0f, 0x35, 0x1b, 0x14, 0x7c, 0x98, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xb0, 0x24, 0x26, 0x70, 0xe3, 0xd0, 0x41, 0xe2, 0x73, 0xd4, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x37, 0x02, 0xb5, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0x90, 0xf8, 0x1c, 0xd5, 0xe1, 0x14, 0x5b, 0x00, 0x3f, 0xb9, 0xb2, 0x30, 0xb2, 0x16, 0xb9, 0xb2, 0xb8, 0xba, 0xb2, 0x39, 0x7a, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x77, 0x7e, 0x0d, 0xe2, 0xf9, 0x35, 0xad, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0x0b, 0xfe, 0x35, 0x37, 0x28, 0x3a, 0x8d, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0xb1, 0xe9, 0xa3, 0xd6, 0x06, 0x4d, 0xe1, 0x84, 0x6e, 0x70, 0xce, 0x5f, 0x5a, 0xc3, 0x1b, 0x77, 0x07, 0x71, 0x66, 0x9b, 0xb6, 0x86, 0xbf, 0x68, 0x36, 0x88, 0xdb, 0xdb, 0xb4, 0x0d, 0xbf, 0xb8, 0x6c, 0x50, 0x50, 0x64, 0x6e, 0x70, 0x1e, 0x06, 0xd9, 0xa0, 0xa0, 0xc8, 0xdc, 0xa0, 0xa0, 0xc8, 0xdc, 0xa0, 0xa0, 0xc8, 0x5c, 0xc3, 0x5f, 0x34, 0x1b, 0x9c, 0xf4, 0x44, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x83, 0xf7, 0xb4, 0x36, 0x68, 0xd8, 0x91, 0xfa, 0x20, 0x56, 0xe6, 0xd3, 0xda, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xb8, 0x3b, 0x88, 0xce, 0xc1, 0xb4, 0x35, 0xbc, 0x71, 0x77, 0x10, 0xe5, 0x85, 0x69, 0x1d, 0x4e, 0xb1, 0x16, 0x80, 0x2f, 0xb8, 0x30, 0xb9, 0xb9, 0xb2, 0x96, 0x32, 0x3a, 0xb4, 0x16, 0x31, 0xb6, 0xb7, 0xb1, 0xb5, 0x16, 0xb7, 0xba, 0x36, 0xb1, 0x32, 0xf9, 0x20, 0xda, 0x73, 0xd5, 0x56, 0x00, 0x3f, 0xb5, 0xb9, 0x37, 0xb7, 0x16, 0xb9, 0xb2, 0xb8, 0xba, 0xb2, 0x39, 0x7a, 0x83, 0x55, 0x58, 0x4e, 0x1b, 0x44, 0xc1, 0xc2, 0xd8, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0x1a, 0xf0, 0xea, 0xe4, 0xd8, 0x83, 0x57, 0x72, 0x2b, 0x1e, 0x44, 0xaa, 0x8b, 0xda, 0x86, 0xbf, 0x68, 0x36, 0x88, 0x94, 0x9b, 0xb3, 0x0d, 0x16, 0x95, 0x27, 0x6d, 0x10, 0x39, 0x7d, 0x64, 0x6b, 0x78, 0xe3, 0xee, 0xe0, 0xc9, 0xc3, 0x89, 0x6b, 0x70, 0x62, 0xbf, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x72, 0xe7, 0x7d, 0x83, 0xb2, 0xe9, 0x7d, 0x0d, 0x0a, 0xc1, 0xd4, 0x83, 0x97, 0x85, 0x30, 0xb6, 0xc1, 0xd1, 0x75, 0x70, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0xe0, 0x37, 0xf4, 0xe6, 0x46, 0x57, 0xe6, 0x46, 0xd7, 0x42, 0x95, 0x07, 0x57, 0x6e, 0x70, 0x74, 0x1d, 0x5c, 0xc3, 0x2f, 0x2e, 0x07, 0xb1, 0x30, 0xa3, 0x56, 0x07, 0xd1, 0x48, 0xa3, 0xb6, 0x1a, 0xc4, 0xb1, 0x95, 0xda, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x47, 0xf6, 0x26, 0x1e, 0xac, 0x38, 0xea, 0xde, 0xf0, 0x17, 0xcd, 0x06, 0x2f, 0xf8, 0xd7, 0xdc, 0x20, 0x48, 0x4f, 0xd7, 0x38, 0x34, 0xe0, 0x91, 0xbd, 0x89, 0xad, 0x41, 0xec, 0x08, 0xa6, 0x6d, 0xb0, 0xf4, 0xeb, 0x75, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0x47, 0x16, 0xde, 0x60, 0x11, 0xbc, 0xdb, 0x06, 0x6b, 0xd0, 0xdf, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x72, 0x7d, 0xc8, 0x0e, 0x0a, 0xe2, 0xf1, 0x35, 0xbc, 0xad, 0x33, 0xb8, 0x7b, 0x10, 0x6b, 0xd5, 0x6a, 0xb5, 0x06, 0xd1, 0x36, 0x98, 0xb6, 0xc1, 0xd2, 0xaf, 0xd7, 0x0d, 0x6f, 0xeb, 0x0c, 0xce, 0x1e, 0xc4, 0x5a, 0xb5, 0x5a, 0x87, 0x53, 0x6c, 0x01, 0x78, 0x82, 0x0b, 0x93, 0x9b, 0x2b, 0x6b, 0x29, 0xa3, 0x43, 0x6b, 0x39, 0x2b, 0xa3, 0x6b, 0x11, 0x0b, 0x63, 0x0b, 0x73, 0x1b, 0x2b, 0x0f, 0xa2, 0x3d, 0x57, 0xed, 0x70, 0x8a, 0x2d, 0x00, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x68, 0x61, 0x73, 0xe8, 0x41, 0xb4, 0xe7, 0xaa, 0x1d, 0x4e, 0xb1, 0x05, 0xe0, 0x0f, 0x2e, 0x4c, 0x6e, 0xae, 0xac, 0xa5, 0x8c, 0x0e, 0xad, 0xc5, 0xad, 0xec, 0xae, 0xc5, 0x2c, 0x8d, 0x8d, 0xae, 0x4c, 0xae, 0x45, 0xae, 0x6c, 0x3e, 0x88, 0xf6, 0x5c, 0xb5, 0x15, 0x80, 0x0f, 0xb1, 0x30, 0xba, 0x31, 0xb4, 0x16, 0xb9, 0xb2, 0x30, 0xb2, 0x16, 0xb9, 0xb2, 0xb8, 0xba, 0xb2, 0x39, 0x7a, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0xc0, 0x93, 0x2b, 0x8b, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0x42, 0xca, 0x64, 0x83, 0xb8, 0x04, 0x56, 0x6b, 0xc3, 0x5f, 0x34, 0x1b, 0xbc, 0xe0, 0x5f, 0x73, 0x83, 0x24, 0x87, 0xa7, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x22, 0x55, 0x6f, 0xf0, 0xee, 0x97, 0xdf, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x04, 0xfe, 0xaa, 0xd5, 0xac, 0x41, 0x94, 0xc9, 0xa9, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0x90, 0x2a, 0xe6, 0x77, 0x10, 0x4f, 0xbd, 0x69, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x05, 0xff, 0x9a, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0x24, 0x39, 0x3c, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x74, 0x74, 0xea, 0x1a, 0x24, 0x19, 0x10, 0x6e, 0x90, 0x3a, 0x18, 0xbb, 0x86, 0x77, 0x7b, 0x36, 0x48, 0x73, 0x8a, 0xdd, 0x20, 0x6e, 0xd1, 0xd0, 0x0e, 0xd2, 0x4e, 0x63, 0x37, 0x88, 0x42, 0x38, 0xb4, 0x35, 0x3c, 0x28, 0xb9, 0x41, 0x02, 0xec, 0xf0, 0x41, 0xc4, 0xff, 0xa8, 0xb5, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0x89, 0x54, 0xbd, 0xc1, 0xe2, 0x7f, 0xb8, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xe9, 0x0d, 0x82, 0xcd, 0x74, 0xc3, 0x0f, 0x35, 0x07, 0x91, 0xf1, 0x00, 0xb5, 0x41, 0x41, 0x30, 0xbb, 0xc1, 0x81, 0xa6, 0x6f, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0f, 0xde, 0x1c, 0x9c, 0x5a, 0xfa, 0x36, 0x28, 0x28, 0x32, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0x3a, 0x3a, 0xb5, 0x35, 0x7c, 0xfd, 0xb2, 0xe1, 0x43, 0x98, 0x0d, 0x5f, 0xbf, 0x6c, 0xf8, 0x10, 0xe6, 0xe0, 0xd4, 0xd2, 0xd7, 0x06, 0x49, 0x0e, 0x4f, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x44, 0xaa, 0xde, 0xe0, 0xd4, 0xd2, 0xb7, 0x41, 0x3c, 0xba, 0xab, 0x75, 0x38, 0xc5, 0x3a, 0x9c, 0x62, 0xab, 0x41, 0xc4, 0xdd, 0xa9, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x15, 0xbd, 0xef, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0xa4, 0x27, 0xba, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x28, 0x84, 0x43, 0xdb, 0xf0, 0x6e, 0xcf, 0x06, 0x31, 0x79, 0xad, 0x76, 0x90, 0x86, 0x97, 0x7b, 0x38, 0xc5, 0xaa, 0x35, 0x28, 0x5a, 0x4f, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x05, 0xf0, 0x0f, 0x23, 0x23, 0x93, 0x2b, 0x9b, 0x9b, 0x6b, 0x31, 0x93, 0x7b, 0x6b, 0x6b, 0x81, 0xab, 0x13, 0x37, 0x58, 0x85, 0xe5, 0xb4, 0x41, 0x4c, 0xad, 0xa1, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x08, 0xba, 0xe4, 0xda, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0xc8, 0xc4, 0x5d, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x95, 0xe2, 0x07, 0x29, 0x2a, 0xae, 0x1b, 0x14, 0x9d, 0xc6, 0x1b, 0x44, 0xb3, 0x1a, 0xda, 0x06, 0x29, 0xd0, 0xa9, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0xa9, 0x14, 0x76, 0x83, 0xa2, 0x52, 0x7c, 0x83, 0x14, 0xe8, 0xd4, 0x83, 0xc8, 0x3a, 0xe5, 0x5a, 0x01, 0x68, 0x9a, 0x4b, 0x3b, 0x73, 0x6b, 0xa1, 0x93, 0x0b, 0x73, 0x9b, 0x0b, 0x1b, 0xa3, 0x4b, 0x7b, 0x73, 0x6b, 0x89, 0xa9, 0xa9, 0xc9, 0x1b, 0xac, 0xc2, 0x72, 0xda, 0x20, 0x16, 0x2c, 0xaf, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0xc0, 0xd3, 0xe1, 0x1b, 0xfe, 0x9d, 0xdf, 0x20, 0x22, 0x5d, 0xd3, 0x16, 0xf0, 0xe4, 0xe0, 0xc6, 0x3a, 0x88, 0xb9, 0x3e, 0xae, 0x0d, 0x0e, 0x58, 0x74, 0x6b, 0xf8, 0x8b, 0x66, 0x83, 0x63, 0x4b, 0xe9, 0x06, 0x0b, 0x30, 0x9b, 0xd6, 0xf0, 0x7d, 0xfb, 0x06, 0x6f, 0x06, 0xf9, 0x3c, 0x68, 0xce, 0x55, 0x7c, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0xdd, 0x9e, 0x35, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xf1, 0xf1, 0xab, 0x36, 0x3c, 0x28, 0xb9, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xd4, 0xe0, 0x9e, 0x0e, 0xa2, 0xf1, 0xf3, 0x6a, 0x83, 0xd7, 0x99, 0x57, 0x1f, 0x44, 0xc7, 0x07, 0xd6, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0x5a, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x31, 0x35, 0x35, 0xb9, 0x0d, 0x0a, 0x8a, 0xcc, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x91, 0x89, 0xbb, 0xe1, 0xc1, 0x9b, 0x83, 0x34, 0xa1, 0xa8, 0x0d, 0x8e, 0x9f, 0x7c, 0x07, 0x27, 0x79, 0xbe, 0x0d, 0x4e, 0xec, 0x37, 0x6b, 0x78, 0x50, 0x72, 0x83, 0x68, 0x56, 0x43, 0x3b, 0x88, 0xf3, 0xf8, 0xaa, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x73, 0x97, 0x0d, 0x8a, 0xda, 0xe2, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xd6, 0xdb, 0x6e, 0x50, 0x54, 0x8a, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x22, 0x75, 0x60, 0xed, 0xa0, 0xac, 0xf3, 0xdc, 0x20, 0xa6, 0xab, 0xa6, 0xda, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0xe0, 0x2c, 0x64, 0xba, 0xe1, 0xdd, 0x9e, 0x0d, 0x8a, 0xe2, 0xdf, 0x83, 0xe5, 0x7f, 0xc1, 0x07, 0x09, 0x96, 0xb0, 0xcb, 0xac, 0x41, 0x8c, 0x0f, 0xac, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0x90, 0x98, 0x78, 0xb4, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0xe2, 0x46, 0x3f, 0xea, 0x20, 0xae, 0x8d, 0xa6, 0xda, 0xa0, 0xe8, 0x34, 0x5e, 0xc3, 0x83, 0x92, 0x1b, 0xc4, 0x37, 0xfe, 0xd9, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0x39, 0x36, 0xb8, 0x0d, 0xda, 0x3c, 0xb2, 0xda, 0x60, 0x15, 0x96, 0xd3, 0x1a, 0xde, 0xd6, 0x19, 0x78, 0x3a, 0xbc, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0xe2, 0xc7, 0x34, 0xad, 0x0d, 0xa2, 0x36, 0x63, 0x6b, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x4d, 0xd8, 0x69, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0xe2, 0x44, 0x3b, 0xad, 0x35, 0xbc, 0xad, 0x73, 0x50, 0xee, 0xbc, 0xaf, 0x41, 0x73, 0x78, 0x9f, 0x1b, 0xa4, 0xa9, 0xb8, 0x1e, 0x9c, 0x87, 0x41, 0x36, 0x58, 0xb7, 0x70, 0xbc, 0xc1, 0xd9, 0x33, 0x6e, 0x0d, 0x0a, 0x43, 0xd5, 0x0d, 0xda, 0x3c, 0xb2, 0xda, 0xa0, 0xe8, 0x34, 0xde, 0xa0, 0x44, 0xaa, 0x5e, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x45, 0x20, 0xa3, 0x1b, 0x94, 0x4d, 0xf5, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe8, 0xe4, 0x4e, 0xab, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x22, 0xd7, 0x0c, 0x6d, 0x0d, 0x7f, 0x2e, 0x0d, 0x2e, 0x1e, 0x1c, 0x3c, 0x4a, 0xdb, 0xa0, 0xcd, 0x23, 0xab, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0xd0, 0x1c, 0xde, 0xe7, 0x06, 0x69, 0x2a, 0xae, 0x87, 0xa7, 0x75, 0xd6, 0xa0, 0xcd, 0x23, 0xab, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x22, 0x55, 0x6f, 0x78, 0x2f, 0x68, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0xc1, 0xc7, 0x83, 0x63, 0x4b, 0xe9, 0x06, 0xcd, 0xe1, 0x7d, 0x6e, 0x90, 0x7a, 0x1a, 0x7b, 0x78, 0x7a, 0xa7, 0xd6, 0xa0, 0x84, 0xc7, 0xdc, 0x20, 0xf9, 0xf6, 0x68, 0x83, 0x82, 0x22, 0x73, 0xc3, 0x83, 0x92, 0x6b, 0x70, 0x74, 0x1d, 0xdc, 0x20, 0xc5, 0xda, 0xe9, 0x20, 0xc2, 0x0b, 0xd6, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x7d, 0x90, 0x7c, 0x7b, 0xd4, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0x01, 0xfc, 0xe0, 0xea, 0xc4, 0x5a, 0xcc, 0xe4, 0xde, 0xda, 0x5a, 0xe0, 0xe4, 0xec, 0x0d, 0x56, 0x61, 0x39, 0xad, 0xe1, 0x41, 0xc9, 0x0d, 0xe2, 0x41, 0x60, 0x6d, 0xc3, 0x83, 0x92, 0x1b, 0x44, 0xe3, 0xe7, 0xd5, 0x41, 0x2c, 0x58, 0x5e, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x70, 0x72, 0xf6, 0xe1, 0x87, 0x9a, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0x44, 0xc1, 0xf8, 0xd5, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x66, 0xd1, 0xab, 0x0d, 0xe2, 0x78, 0x85, 0xaa, 0x15, 0x80, 0xaf, 0xb9, 0xb4, 0x33, 0xb7, 0x16, 0xba, 0x3c, 0xb8, 0x32, 0xb2, 0x16, 0x3a, 0xb9, 0x30, 0xb7, 0xb9, 0xb0, 0x31, 0xba, 0xb4, 0x37, 0x77, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x3c, 0x1d, 0xbe, 0xe1, 0xdf, 0xf9, 0x35, 0x88, 0x19, 0xd5, 0xb4, 0x0e, 0xa2, 0xc6, 0x5f, 0xed, 0x20, 0xe6, 0xfa, 0xb8, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xb1, 0xa5, 0x74, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xac, 0xb7, 0xdd, 0xa0, 0xa8, 0x14, 0xdf, 0xf0, 0xcc, 0xe4, 0x1a, 0x2e, 0xa9, 0x35, 0x0e, 0x1d, 0x44, 0x02, 0xc4, 0x5a, 0x6d, 0x10, 0xa4, 0xa7, 0x1b, 0x44, 0x35, 0xca, 0xda, 0x1a, 0x44, 0x25, 0x6b, 0xda, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x00, 0xfe, 0x73, 0x69, 0x67, 0x6e, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x6b, 0xb8, 0xa4, 0xd6, 0x78, 0x7e, 0x10, 0x09, 0x10, 0x6b, 0x1d, 0x44, 0xc7, 0x07, 0xd6, 0x1a, 0xc4, 0x76, 0x6b, 0xda, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x51, 0xad, 0xaf, 0xd6, 0x41, 0xcc, 0xae, 0xac, 0xb5, 0x02, 0xf8, 0x87, 0x91, 0x91, 0xc9, 0x95, 0xcd, 0xcd, 0xb5, 0x98, 0xc9, 0xbd, 0xb5, 0xb5, 0xc0, 0xc9, 0xd9, 0x1b, 0xde, 0xed, 0xd9, 0x20, 0x75, 0x30, 0x76, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0xb5, 0x1e, 0x6b, 0xad, 0xe1, 0x6d, 0x9d, 0x0d, 0x22, 0xa9, 0x5e, 0xad, 0x0e, 0xa7, 0xd8, 0x1a, 0xc4, 0xa4, 0xca, 0xda, 0x06, 0xab, 0xb0, 0x9c, 0x36, 0x88, 0x05, 0xcb, 0xab, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0x34, 0xf0, 0x74, 0xf8, 0x86, 0x7f, 0xe7, 0x37, 0x88, 0xa2, 0xd6, 0xb4, 0x83, 0xa8, 0xf1, 0x57, 0x3b, 0x88, 0xb9, 0x3e, 0xae, 0x0d, 0x0e, 0x58, 0x74, 0x6b, 0xf8, 0x8b, 0x66, 0x83, 0x63, 0x4b, 0xe9, 0x06, 0x05, 0x69, 0xec, 0x06, 0x91, 0xfd, 0xaf, 0xb6, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0xe2, 0xd4, 0x60, 0x6d, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0xa2, 0xb6, 0x78, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x37, 0xfe, 0xd9, 0x1a, 0xde, 0xd6, 0xd9, 0x20, 0x7e, 0x4c, 0xd3, 0x0e, 0x22, 0x01, 0x62, 0xed, 0xe0, 0xbc, 0xbb, 0x77, 0x10, 0xe9, 0x09, 0x6b, 0x1b, 0x3e, 0xb1, 0xd9, 0x20, 0xb6, 0x01, 0xd6, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x7c, 0xe3, 0x9f, 0xad, 0x41, 0x92, 0x01, 0xe1, 0x86, 0x3f, 0x81, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0xc1, 0x53, 0xbb, 0x41, 0x0c, 0xdb, 0xac, 0x1d, 0x04, 0x2b, 0xeb, 0x1a, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x43, 0xc7, 0x41, 0x9a, 0x50, 0xd4, 0x41, 0x84, 0x17, 0xac, 0x2d, 0xb3, 0x06, 0x8f, 0xf9, 0x1b, 0xdd, 0xf0, 0x8b, 0xd2, 0x06, 0xd1, 0x01, 0x7b, 0xb5, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0xf4, 0x38, 0xac, 0x6d, 0xd0, 0xe6, 0x91, 0xd5, 0x86, 0x4b, 0x6a, 0x83, 0x48, 0x80, 0x58, 0x5b, 0x83, 0xa3, 0x32, 0xc8, 0x06, 0xcd, 0xe1, 0x7d, 0x6e, 0x90, 0xa6, 0xe2, 0xba, 0xe1, 0x6d, 0x9d, 0x81, 0xa7, 0x7b, 0x0f, 0x22, 0x01, 0x62, 0x6d, 0x0d, 0x22, 0x16, 0x62, 0x6d, 0xc3, 0x2f, 0x2e, 0x1b, 0xa4, 0x0a, 0x45, 0x6d, 0x70, 0xfc, 0xe4, 0xdb, 0xe0, 0x70, 0xce, 0x77, 0x50, 0xd6, 0x79, 0x76, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0xeb, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0xe1, 0x44, 0xd8, 0x20, 0xea, 0xc7, 0xcf, 0x36, 0x58, 0xcc, 0x06, 0x75, 0x10, 0xcf, 0xe5, 0x67, 0x1b, 0x4e, 0x84, 0x0d, 0x62, 0x6e, 0xfc, 0x6c, 0x83, 0xc5, 0x6c, 0x50, 0xcb, 0x2c, 0x1b, 0x3e, 0xb1, 0x59, 0xc3, 0xf3, 0x24, 0x6b, 0xb0, 0x50, 0x99, 0xea, 0x20, 0x54, 0x11, 0x36, 0x7c, 0x90, 0xb3, 0x41, 0x13, 0xb2, 0x10, 0x6b, 0xf8, 0x20, 0x67, 0x0d, 0x16, 0x40, 0x1f, 0xad, 0xe1, 0x41, 0xc9, 0x8d, 0x43, 0x1b, 0xb4, 0x79, 0x64, 0xb5, 0xe1, 0x73, 0x97, 0xc1, 0xd9, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x6f, 0x78, 0x50, 0x72, 0x83, 0xe5, 0xc7, 0xdb, 0x07, 0x6d, 0xfd, 0x42, 0x1c, 0x9c, 0xeb, 0x0d, 0x56, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0x0e, 0x5a, 0xcd, 0x74, 0x3a, 0x68, 0xf3, 0xc8, 0x6a, 0xc3, 0xe7, 0x2e, 0x83, 0xb3, 0x07, 0x6d, 0xf1, 0x42, 0xac, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x7f, 0x73, 0x36, 0x44, 0x73, 0xc3, 0x1b, 0x77, 0x07, 0x6d, 0xd2, 0x91, 0x1c, 0x34, 0x87, 0xf7, 0xb9, 0xe1, 0x73, 0x97, 0xc1, 0xc5, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x29, 0x21, 0xbe, 0xc1, 0x0a, 0x32, 0xfd, 0x0d, 0x6f, 0xeb, 0x1c, 0xa4, 0x45, 0xc2, 0x1e, 0x1c, 0x40, 0x93, 0x0e, 0xda, 0xa4, 0xa9, 0x38, 0x58, 0x49, 0xa7, 0x7f, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0x41, 0x0c, 0x0f, 0xad, 0x0d, 0xbf, 0xf1, 0x7c, 0xf1, 0x20, 0x12, 0xc4, 0xcf, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xd8, 0x85, 0xdb, 0x60, 0x1d, 0x33, 0xd8, 0x41, 0x48, 0x81, 0x2f, 0x08, 0x36, 0x88, 0x93, 0xde, 0xb3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x71, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb6, 0x86, 0x3c, 0xf6, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xe2, 0xf8, 0xf7, 0xec, 0xe0, 0xa1, 0xf8, 0x0d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0x8e, 0x7f, 0xcf, 0x0e, 0xde, 0xae, 0xdf, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xe2, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x1c, 0x44, 0x3d, 0x06, 0xda, 0x41, 0x54, 0x8c, 0x9f, 0x0d, 0xbf, 0xf1, 0x7c, 0xf1, 0x20, 0xea, 0x31, 0xd0, 0x0e, 0xa9, 0x83, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0x3c, 0xec, 0x06, 0x2f, 0x21, 0xe6, 0x39, 0x48, 0x28, 0xfb, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0xa7, 0xd8, 0xf1, 0x78, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0xd8, 0xe0, 0x1c, 0xfc, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xc1, 0xcb, 0x24, 0x74, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0xc4, 0x11, 0xf7, 0xd9, 0x41, 0xb9, 0x44, 0x37, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0xe2, 0x88, 0xfb, 0xec, 0x60, 0xf1, 0xc1, 0xcf, 0x41, 0x8a, 0x9f, 0xc3, 0x71, 0x68, 0xf8, 0x05, 0xd1, 0x42, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x1e, 0xc4, 0xd9, 0x50, 0xcf, 0xf1, 0x78, 0x10, 0x2c, 0x2e, 0x08, 0x36, 0xc4, 0x70, 0x71, 0xd8, 0x0d, 0xeb, 0x7b, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x48, 0x77, 0xdf, 0xd9, 0x20, 0x04, 0xc0, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x60, 0x3e, 0x08, 0x16, 0x7e, 0xe1, 0x37, 0x18, 0xfe, 0xb1, 0x07, 0xf1, 0x2c, 0x7b, 0x36, 0x48, 0x36, 0x28, 0xfc, 0x83, 0x0e, 0xc6, 0xbb, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x34, 0x0f, 0xc6, 0x9b, 0xce, 0x71, 0x68, 0x10, 0x2d, 0xec, 0x20, 0x58, 0xf8, 0x0d, 0x22, 0xfe, 0x6b, 0xed, 0x60, 0xa4, 0xf9, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xec, 0x15, 0x1e, 0xa2, 0x79, 0x1c, 0x3a, 0x9e, 0x1f, 0x8f, 0x17, 0x7e, 0x83, 0x74, 0x4b, 0xe9, 0xe3, 0xf9, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0x2c, 0xfc, 0x06, 0x71, 0xfc, 0x7b, 0x36, 0x48, 0x06, 0xee, 0xa7, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x28, 0x16, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0x71, 0xfc, 0x7b, 0x76, 0x50, 0x2e, 0xd1, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0x83, 0x38, 0xfe, 0x3d, 0x1b, 0x24, 0x03, 0x8e, 0xee, 0x7d, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x12, 0x89, 0xf7, 0x41, 0x60, 0x62, 0x1f, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xb0, 0x1b, 0xd6, 0xf7, 0x16, 0x64, 0x6b, 0xc8, 0x63, 0x2f, 0x0e, 0x82, 0x85, 0xdf, 0x20, 0xe6, 0x97, 0xcf, 0x0e, 0x1e, 0x8a, 0xdf, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0x62, 0x7e, 0xf9, 0xec, 0xe0, 0xed, 0xfa, 0x0d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x9b, 0x83, 0xc8, 0xe2, 0x41, 0x1b, 0x7e, 0xe3, 0xf9, 0x78, 0x10, 0x59, 0x3c, 0x68, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0xf8, 0x70, 0x8a, 0x0d, 0xbf, 0xf1, 0x78, 0xd8, 0x05, 0xc1, 0xc2, 0x6f, 0x10, 0xc9, 0xb8, 0x67, 0x07, 0x09, 0xfb, 0xcc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x59, 0xbb, 0x83, 0x65, 0xc7, 0x36, 0xc7, 0xa1, 0x35, 0x1c, 0xed, 0x1b, 0xa4, 0x2d, 0x50, 0x1f, 0x5a, 0x2f, 0x0e, 0xbb, 0x20, 0xd8, 0x20, 0xc6, 0xdf, 0xd6, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xb2, 0x76, 0xc3, 0x6f, 0x3c, 0x1f, 0x83, 0xb8, 0x1d, 0x87, 0x16, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0x20, 0x92, 0x71, 0xcf, 0x0e, 0x46, 0x9a, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xd6, 0xee, 0x20, 0xc9, 0xad, 0xf9, 0x38, 0xb4, 0xc1, 0x28, 0x3f, 0xd9, 0x20, 0x6d, 0x81, 0x7a, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0x81, 0xf0, 0xe4, 0x20, 0x6a, 0xd7, 0x83, 0x86, 0x5d, 0x10, 0x6c, 0x10, 0xe3, 0x6f, 0x6b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x59, 0xbb, 0x83, 0x48, 0x56, 0x50, 0x3a, 0x0e, 0x2d, 0x08, 0x16, 0x04, 0x1b, 0x44, 0xf9, 0xdc, 0xda, 0x41, 0x54, 0xca, 0xad, 0x0d, 0x82, 0x0d, 0xe2, 0xc1, 0x6e, 0x6d, 0x41, 0xb0, 0xf0, 0x1b, 0xc4, 0xf1, 0xef, 0xd9, 0xc1, 0x88, 0x6d, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd0, 0x64, 0xff, 0xfb, 0x21, 0x75, 0x70, 0x1c, 0xda, 0x20, 0x6d, 0x81, 0x7a, 0xe3, 0xd0, 0x20, 0xd8, 0x20, 0xfd, 0x4b, 0xe1, 0x20, 0x32, 0xf4, 0xd6, 0x86, 0x5d, 0x10, 0x6c, 0x10, 0xe3, 0x6f, 0x6b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x59, 0xbb, 0xe1, 0x37, 0x9e, 0x8f, 0x41, 0xdc, 0x8f, 0x43, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x51, 0x3e, 0xb7, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x3b, 0x48, 0xe0, 0x69, 0x3e, 0x0e, 0x6d, 0x30, 0xca, 0x4f, 0x36, 0x58, 0xc7, 0x0c, 0x36, 0x08, 0x16, 0x24, 0xc3, 0x0c, 0xa2, 0x85, 0x1d, 0x04, 0x0b, 0xbf, 0x41, 0xcc, 0x2f, 0x9f, 0x1d, 0xc4, 0x22, 0xd8, 0xda, 0x41, 0xf9, 0x53, 0x74, 0x3c, 0x3f, 0x18, 0xd8, 0xa2, 0xc3, 0x2e, 0x08, 0x36, 0x88, 0xf1, 0xb7, 0xb5, 0x83, 0xa4, 0x29, 0x87, 0x05, 0xc1, 0x82, 0x60, 0x83, 0x28, 0x9f, 0x5b, 0x3b, 0x88, 0x49, 0xbe, 0xb5, 0x41, 0xb0, 0x41, 0x3c, 0xd8, 0xad, 0x6d, 0x10, 0x61, 0x79, 0x6b, 0x1b, 0xac, 0x63, 0x06, 0x1b, 0x04, 0x0b, 0x92, 0x61, 0x06, 0xd1, 0xc2, 0x0e, 0x82, 0x85, 0xdf, 0x20, 0x8e, 0x7f, 0xcf, 0x0e, 0x62, 0x11, 0x6c, 0x6d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x93, 0xfd, 0xef, 0x07, 0x81, 0x89, 0x7d, 0x1c, 0x3a, 0x24, 0x97, 0x0e, 0x06, 0xb6, 0xe8, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x6c, 0x10, 0x15, 0x6b, 0x6b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0x8d, 0x6d, 0x6d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x39, 0x88, 0xf9, 0x2e, 0xb4, 0x83, 0x48, 0x59, 0xc7, 0x19, 0x7e, 0xe3, 0xf9, 0xe2, 0x41, 0xcc, 0x77, 0xa1, 0x1d, 0xa2, 0x79, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x0f, 0xa7, 0xd8, 0xc1, 0xb8, 0x83, 0x3a, 0x1e, 0x1f, 0x8f, 0x57, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xc1, 0xc2, 0x2f, 0xfc, 0xc2, 0x6f, 0x58, 0xa1, 0x3d, 0x88, 0x67, 0xd9, 0xb3, 0x83, 0x76, 0x6e, 0xcd, 0x0f, 0xd2, 0x70, 0xe0, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0x8c, 0x32, 0xae, 0x1d, 0x9c, 0x28, 0xe9, 0x0f, 0x22, 0xef, 0xdc, 0xe6, 0x38, 0x74, 0xe8, 0xa0, 0x71, 0x3c, 0x5e, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x6c, 0xb0, 0x0c, 0x5e, 0x60, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x02, 0x0a, 0xc9, 0x21, 0x55, 0x73, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x85, 0x5f, 0xf8, 0x05, 0xc9, 0x40, 0xf1, 0x3a, 0x64, 0x2b, 0x0e, 0x0e, 0x1e, 0xb5, 0x07, 0xab, 0x37, 0xd1, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0xf0, 0x1b, 0x1c, 0x17, 0xce, 0x0f, 0x0e, 0x34, 0xb7, 0x07, 0x6b, 0xf9, 0x04, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0x1c, 0x71, 0x9f, 0x0d, 0x92, 0x01, 0xc1, 0xbb, 0x73, 0x10, 0xe4, 0xfc, 0x07, 0x03, 0x5b, 0xf4, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0xf0, 0x1b, 0xc4, 0x9f, 0xec, 0xd9, 0xc1, 0xfb, 0xef, 0xcd, 0x8e, 0x6f, 0x83, 0x60, 0x83, 0xe4, 0x9f, 0xe7, 0x41, 0xb0, 0x38, 0xec, 0x06, 0xc1, 0x85, 0xbd, 0x20, 0x58, 0x90, 0x0c, 0xac, 0x7f, 0x1d, 0x8c, 0x77, 0x9d, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xb1, 0x6b, 0xb6, 0x76, 0x30, 0xcc, 0xc2, 0x8f, 0x43, 0x83, 0x60, 0x43, 0xb2, 0x63, 0xd8, 0x05, 0xc1, 0xc2, 0x6f, 0x10, 0xf1, 0x5f, 0x6b, 0x07, 0xe9, 0x6e, 0x1b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x83, 0x83, 0xd5, 0x92, 0x38, 0xc7, 0xa1, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0xa0, 0xfe, 0x20, 0x44, 0xfc, 0x07, 0xd1, 0x06, 0x91, 0x07, 0x6c, 0x34, 0x88, 0x16, 0x76, 0x10, 0x2c, 0xfc, 0x06, 0x11, 0xff, 0xb5, 0x76, 0x90, 0x00, 0xf2, 0x70, 0x30, 0xcc, 0xc2, 0x8f, 0xe7, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0xfc, 0xd7, 0xda, 0x41, 0x5a, 0xcc, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xe3, 0xf9, 0x83, 0x81, 0xc8, 0x7c, 0x1c, 0x1a, 0x76, 0x41, 0xb0, 0xf0, 0x0b, 0xbf, 0xc1, 0x70, 0x94, 0x3e, 0x88, 0x67, 0xd9, 0xb3, 0x83, 0x74, 0xb7, 0x8d, 0x83, 0x34, 0x39, 0x93, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0xc1, 0xb8, 0x85, 0x1d, 0x44, 0x0b, 0xe2, 0x05, 0xc1, 0xc2, 0x6f, 0x10, 0xc7, 0xa0, 0x6b, 0x07, 0x23, 0xcd, 0xe7, 0x20, 0x15, 0xeb, 0xfa, 0x20, 0x30, 0xb1, 0x07, 0xd1, 0xc2, 0x0e, 0x82, 0x85, 0xdf, 0x20, 0x8e, 0x41, 0xd7, 0x0e, 0x12, 0x40, 0x1e, 0x0e, 0xc6, 0x87, 0xd1, 0x21, 0xb9, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x0d, 0xc6, 0x2d, 0xec, 0x20, 0x5a, 0x10, 0x1f, 0x24, 0xc2, 0x35, 0x1c, 0x44, 0xf5, 0xe8, 0xda, 0xf1, 0xed, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x19, 0x58, 0xff, 0x3a, 0x24, 0x97, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x3f, 0x88, 0x16, 0xc8, 0xb5, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x38, 0x73, 0xf0, 0x80, 0xd9, 0xd2, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0x62, 0x94, 0x71, 0xed, 0x20, 0x19, 0x69, 0xfd, 0x90, 0x86, 0x1b, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x20, 0x58, 0xf8, 0x0d, 0xe2, 0x88, 0xfb, 0xec, 0x20, 0xb5, 0xc7, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0x05, 0xd0, 0x41, 0xb2, 0xf8, 0xf4, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0x83, 0x38, 0xe2, 0x3e, 0x3b, 0x48, 0xdc, 0xb0, 0x38, 0x48, 0x2e, 0x22, 0x1a, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x21, 0xfe, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0xc4, 0x9f, 0xec, 0xd9, 0x41, 0x6a, 0x8f, 0xfb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0xfe, 0x64, 0xcf, 0x0e, 0x46, 0x9a, 0xcf, 0xc1, 0x20, 0xd8, 0x39, 0x48, 0x16, 0x9f, 0x3e, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x20, 0x92, 0x71, 0xcf, 0x0e, 0x52, 0x00, 0xdc, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x76, 0xe1, 0x16, 0x0f, 0xd6, 0xae, 0x74, 0x1f, 0x04, 0x0f, 0xf7, 0x1a, 0x87, 0x0e, 0xc9, 0x8e, 0x83, 0x01, 0xd4, 0x73, 0x1c, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x6c, 0x10, 0x1f, 0xa7, 0x6b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x96, 0xc1, 0x0b, 0x1c, 0xa4, 0xf8, 0x3b, 0x1f, 0x87, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0x05, 0xc1, 0xe2, 0x06, 0xb1, 0x4e, 0x87, 0x75, 0x38, 0xc5, 0x16, 0x07, 0xc1, 0xc2, 0x2e, 0xdc, 0xe2, 0xc1, 0x7b, 0x24, 0x13, 0x0f, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x62, 0xda, 0x76, 0x6d, 0x83, 0x98, 0xb6, 0x5d, 0x3b, 0x9c, 0x62, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x86, 0xdf, 0x20, 0xea, 0xb1, 0xcf, 0x0e, 0x4a, 0x86, 0xa6, 0x43, 0x07, 0x8d, 0x61, 0x17, 0x6e, 0xf1, 0xe0, 0xe5, 0x30, 0x9b, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0x11, 0x9c, 0xbb, 0xb6, 0x41, 0x04, 0xe7, 0xae, 0x1d, 0x4e, 0xb1, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0xc3, 0x6f, 0x10, 0xf5, 0xd8, 0x67, 0x07, 0xef, 0xbf, 0x37, 0x3b, 0x74, 0xd0, 0x18, 0x76, 0xe1, 0x16, 0x0f, 0x1a, 0x9b, 0xf4, 0x3a, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x88, 0x5c, 0xde, 0xb5, 0x0d, 0x22, 0x97, 0x77, 0xed, 0x70, 0x8a, 0x1d, 0x0c, 0x59, 0xdf, 0x61, 0x17, 0x6e, 0xf1, 0x60, 0xa0, 0xd5, 0x1f, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0x44, 0xac, 0xef, 0xda, 0x06, 0x11, 0xeb, 0xbb, 0x76, 0x38, 0xc5, 0x06, 0xc1, 0x06, 0xf1, 0xc2, 0x7d, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xa5, 0x32, 0xe3, 0x21, 0x5f, 0x7b, 0x1c, 0x1a, 0x76, 0xe1, 0x16, 0x0f, 0x62, 0xf5, 0x13, 0xed, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x20, 0xd2, 0x83, 0xd7, 0x36, 0x88, 0xf4, 0xe0, 0xb5, 0xc3, 0x29, 0x36, 0x08, 0x36, 0x88, 0x17, 0xee, 0xb3, 0x83, 0xf5, 0xe8, 0x5a, 0xc3, 0x2e, 0xdc, 0x06, 0x8f, 0xb7, 0xcd, 0x3a, 0x44, 0x73, 0x0d, 0x9e, 0x64, 0x9b, 0x35, 0x08, 0x36, 0x88, 0x17, 0xee, 0xb3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x4b, 0x10, 0x6b, 0x0e, 0xf9, 0xda, 0xe3, 0xd0, 0xb0, 0x0b, 0xb7, 0x78, 0x10, 0x07, 0xa2, 0x68, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xf1, 0x68, 0xbc, 0xb6, 0x41, 0x3c, 0x1a, 0xaf, 0x1d, 0x4e, 0xb1, 0x41, 0xb0, 0x41, 0xbc, 0x70, 0x9f, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x78, 0xb0, 0x0a, 0xf1, 0xf5, 0x90, 0xaf, 0x3d, 0x0e, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0x51, 0x41, 0x8a, 0x76, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0x10, 0xe7, 0xc9, 0x6b, 0x1b, 0xc4, 0x79, 0xf2, 0xda, 0xe1, 0x14, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x88, 0x6e, 0xec, 0xb3, 0x83, 0xc3, 0x46, 0xef, 0xa1, 0x83, 0xc6, 0xb0, 0x0b, 0xb7, 0x78, 0xf0, 0x52, 0x78, 0xcd, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xf8, 0x66, 0x5e, 0xdb, 0x20, 0xbe, 0x99, 0xd7, 0x0e, 0xa7, 0xd8, 0x41, 0xe4, 0x2d, 0xaf, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0x71, 0x79, 0x8a, 0x76, 0x88, 0xe6, 0x0a, 0xbb, 0x70, 0x1b, 0xa2, 0x79, 0x10, 0xe7, 0xce, 0x6b, 0x1b, 0xc4, 0xb9, 0xf3, 0xda, 0xe1, 0x14, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0xfc, 0x06, 0x51, 0x8f, 0x7d, 0x76, 0xf0, 0xbe, 0xdb, 0x9e, 0x43, 0x07, 0x8d, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x1c, 0x0f, 0x62, 0x9d, 0x0e, 0x6b, 0x83, 0x48, 0x90, 0x5e, 0x3b, 0x9c, 0x62, 0x07, 0x91, 0x07, 0xbd, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0x44, 0x70, 0xee, 0xda, 0xe2, 0x20, 0x58, 0xd8, 0x0d, 0x1d, 0x47, 0x16, 0x76, 0x83, 0x78, 0x76, 0x5e, 0x5b, 0x83, 0x38, 0x7b, 0x5e, 0x3b, 0x88, 0xbd, 0xe1, 0xb5, 0x61, 0x37, 0x88, 0xe7, 0xe4, 0xb5, 0x35, 0x88, 0x33, 0xe5, 0xb5, 0x05, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x1d, 0x94, 0x43, 0x49, 0x87, 0xa6, 0x40, 0x83, 0x60, 0x83, 0x78, 0xe1, 0x3e, 0x3b, 0x78, 0xce, 0x35, 0xd9, 0x06, 0xd1, 0xd5, 0xbc, 0x36, 0x08, 0x36, 0x88, 0x09, 0xeb, 0xb5, 0x43, 0x07, 0x8d, 0x61, 0x17, 0x6e, 0x83, 0x98, 0xb6, 0x5d, 0x3b, 0xa4, 0x0e, 0x16, 0x76, 0xe1, 0x36, 0xa4, 0x0e, 0x0e, 0x62, 0xda, 0x76, 0xed, 0x20, 0xda, 0x6f, 0xd7, 0x86, 0x5d, 0xb8, 0x0d, 0x22, 0x97, 0x77, 0xed, 0x90, 0x3a, 0x58, 0xd8, 0x85, 0xdb, 0x90, 0x3a, 0x38, 0x88, 0x5c, 0xde, 0xb5, 0x83, 0x88, 0xee, 0x5d, 0x1b, 0x76, 0xe1, 0x36, 0x88, 0x58, 0xdf, 0xb5, 0x43, 0xea, 0x60, 0x61, 0x17, 0x6e, 0x43, 0xea, 0xe0, 0x20, 0x62, 0x7d, 0xd7, 0x0e, 0xe2, 0xf7, 0x77, 0x6d, 0xd8, 0x85, 0xdb, 0x20, 0xd2, 0x83, 0xd7, 0x0e, 0xa9, 0x83, 0x85, 0x5d, 0xb8, 0x0d, 0xa9, 0x83, 0x83, 0x48, 0x0f, 0x5e, 0x3b, 0x88, 0x82, 0xe1, 0xb5, 0x61, 0x17, 0x6e, 0x83, 0xc7, 0xdb, 0x66, 0x1d, 0x52, 0x07, 0x0b, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0x8f, 0xb7, 0xcd, 0x3a, 0x78, 0xec, 0x6d, 0xd6, 0xb0, 0x0b, 0xb7, 0x41, 0x3c, 0x1a, 0xaf, 0x1d, 0x52, 0x07, 0x0b, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0xf1, 0x68, 0xbc, 0x76, 0x10, 0xab, 0xc7, 0x6b, 0xc3, 0x2e, 0xdc, 0x06, 0x91, 0x20, 0xbd, 0x76, 0x48, 0x1d, 0x2c, 0xec, 0xc2, 0x6d, 0x48, 0x1d, 0x1c, 0x44, 0x82, 0xf4, 0xda, 0x41, 0x74, 0x49, 0xaf, 0x0d, 0xbb, 0x70, 0x1b, 0x52, 0x07, 0x07, 0x11, 0x9c, 0xbb, 0x76, 0x10, 0xdb, 0xba, 0x6b, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0xc5, 0x05, 0xc1, 0x86, 0xc4, 0xd4, 0xe2, 0x20, 0xd8, 0x10, 0xcd, 0x41, 0xb0, 0x21, 0x86, 0x83, 0x60, 0x71, 0x41, 0xb0, 0xf0, 0x0b, 0xbf, 0xf0, 0x1b, 0xc4, 0xf1, 0xef, 0xd9, 0xc1, 0x1b, 0x01, 0x4a, 0x8e, 0x6f, 0xc7, 0xb7, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x76, 0x43, 0x1e, 0x6b, 0xc3, 0x29, 0x36, 0xec, 0x06, 0x0f, 0xb4, 0x6a, 0x58, 0x43, 0x23, 0xc1, 0x41, 0xb0, 0xf0, 0x0b, 0xbf, 0xc1, 0x49, 0xe8, 0xf8, 0x20, 0x9e, 0x65, 0xcf, 0x0e, 0xca, 0x25, 0xba, 0x83, 0x61, 0x16, 0x3e, 0x08, 0x16, 0x04, 0x1b, 0x9c, 0x30, 0xd1, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x7a, 0x08, 0x1d, 0xbc, 0xae, 0x4f, 0xe7, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x05, 0xf1, 0x06, 0x21, 0x00, 0x7e, 0xd8, 0x2b, 0x1c, 0x44, 0x0b, 0xd2, 0x0d, 0x42, 0x0a, 0x7c, 0x10, 0x2c, 0xfc, 0xc2, 0x6f, 0x70, 0xcc, 0x2a, 0x3e, 0x88, 0x67, 0xd9, 0xb3, 0x83, 0x04, 0x90, 0x87, 0x83, 0x75, 0xa8, 0xfc, 0xc7, 0xf3, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0xc3, 0xb8, 0x0c, 0x82, 0x85, 0xdf, 0x20, 0x8e, 0x41, 0xd7, 0x0e, 0x06, 0x2c, 0xcf, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x6f, 0xe8, 0x4f, 0x3e, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x41, 0x1c, 0x83, 0xae, 0x1d, 0x24, 0x6e, 0x58, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xe4, 0x6b, 0x0f, 0x52, 0xc3, 0x4e, 0x8e, 0x43, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x37, 0x0e, 0x0d, 0x82, 0x85, 0xdf, 0x20, 0x0e, 0xd1, 0xd7, 0x0e, 0x46, 0x9a, 0xcf, 0xc1, 0x02, 0x52, 0x95, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0x8e, 0x41, 0xd7, 0x0e, 0x62, 0xa9, 0x6c, 0x6d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x81, 0x88, 0x7f, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x88, 0x63, 0xd0, 0xb5, 0x83, 0x72, 0x89, 0x6e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x30, 0x83, 0x60, 0xe1, 0x37, 0x88, 0x63, 0xd0, 0xb5, 0x83, 0x54, 0x22, 0x8b, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x09, 0xe9, 0xda, 0xa1, 0x83, 0xc6, 0x41, 0x6a, 0xd8, 0xc9, 0x71, 0x68, 0x10, 0x2c, 0xfc, 0x06, 0x71, 0x88, 0xbe, 0x76, 0x10, 0x69, 0x68, 0x6b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x1e, 0x82, 0x5c, 0x72, 0x30, 0x78, 0x27, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0xbc, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x0b, 0xbb, 0x61, 0xd7, 0x60, 0xc3, 0x29, 0x36, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0xe2, 0x18, 0x74, 0x6d, 0x90, 0x0c, 0x08, 0xf4, 0xbe, 0x83, 0xf1, 0xae, 0x73, 0x10, 0x51, 0xa7, 0x34, 0xc3, 0x2e, 0xec, 0xc2, 0x6d, 0x10, 0xd3, 0xb6, 0x6b, 0x87, 0x1e, 0x42, 0x1b, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0x10, 0xb9, 0xbc, 0x6b, 0x87, 0x1e, 0x42, 0x1b, 0x62, 0x38, 0xdc, 0x06, 0x91, 0x1e, 0xbc, 0x76, 0xe8, 0x21, 0xb4, 0x06, 0x05, 0xc6, 0xdb, 0xb0, 0x1b, 0xc4, 0x70, 0xff, 0xda, 0xc6, 0xa1, 0x61, 0x37, 0x88, 0xa5, 0xff, 0xb5, 0x8d, 0x43, 0x83, 0x6c, 0x0d, 0xed, 0xd7, 0x0f, 0x62, 0xd2, 0x7f, 0xed, 0xa0, 0x60, 0x43, 0x1a, 0x76, 0xe1, 0x36, 0x88, 0xe0, 0xdc, 0xb5, 0x43, 0x0f, 0xa1, 0x05, 0xc1, 0x82, 0x64, 0xc8, 0x20, 0x5a, 0x90, 0x8e, 0x07, 0xb1, 0xf5, 0x87, 0x75, 0x3c, 0xdf, 0x20, 0xa4, 0xc0, 0x07, 0xc1, 0xc2, 0x6f, 0x10, 0x83, 0xec, 0x6b, 0x83, 0x64, 0x20, 0xbd, 0x73, 0x10, 0xe4, 0xfc, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0x06, 0xd9, 0xd7, 0x06, 0xc9, 0x40, 0xda, 0xe9, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x07, 0x41, 0xe9, 0x7d, 0x1c, 0x3a, 0x0e, 0x0d, 0xbb, 0x70, 0x1b, 0x44, 0x82, 0xf4, 0xda, 0xa1, 0x87, 0xd0, 0x1a, 0x14, 0x18, 0x6f, 0x83, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0xc4, 0x21, 0xfa, 0xda, 0x41, 0x2a, 0x91, 0xc5, 0x41, 0x62, 0x1d, 0xf6, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x06, 0x31, 0xc8, 0xbe, 0x76, 0x10, 0xbd, 0xfc, 0x6b, 0x07, 0x51, 0x93, 0x81, 0x33, 0x08, 0x36, 0x58, 0x47, 0xaa, 0x71, 0x10, 0x19, 0x7a, 0x6b, 0xc3, 0x2e, 0xec, 0x06, 0xe9, 0x8a, 0xd6, 0x0b, 0xb7, 0x41, 0x9c, 0x3b, 0xaf, 0x1d, 0x0c, 0xa2, 0x95, 0xc3, 0xd1, 0xbe, 0x82, 0x60, 0xe1, 0x37, 0x88, 0x43, 0xf4, 0xb5, 0x83, 0x11, 0xdb, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0xe1, 0x37, 0x9e, 0x0f, 0x33, 0x08, 0x36, 0x88, 0x4f, 0x04, 0xb6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0x1c, 0xa2, 0xaf, 0x1d, 0x24, 0x80, 0x3c, 0x1c, 0xb4, 0x4e, 0xad, 0x72, 0x90, 0x1a, 0x76, 0x72, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x0d, 0xd2, 0xc7, 0x89, 0x0e, 0x62, 0x9d, 0xb5, 0x68, 0xd8, 0x85, 0xdd, 0x20, 0x5d, 0xd1, 0x7a, 0xe1, 0x36, 0x88, 0x6f, 0xe6, 0xb5, 0x83, 0x41, 0xb4, 0x72, 0x38, 0xda, 0xd7, 0xa0, 0xc0, 0x78, 0x1b, 0x7e, 0x41, 0xb4, 0x60, 0x7c, 0x10, 0x81, 0x08, 0x6c, 0xc7, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0xc4, 0x21, 0xfa, 0xda, 0x20, 0x19, 0x70, 0x7c, 0xed, 0x3b, 0x18, 0xef, 0x3a, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x06, 0x77, 0xe5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x6f, 0x30, 0xf8, 0x63, 0x0e, 0x31, 0x5c, 0xf8, 0x8d, 0xe7, 0x07, 0x05, 0xc6, 0xdb, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0x10, 0x87, 0xe8, 0x6b, 0x07, 0xd1, 0xcb, 0xbf, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x10, 0xff, 0x83, 0xc1, 0x3b, 0x79, 0x1c, 0x3a, 0x0e, 0x1d, 0x87, 0x86, 0x5d, 0xd8, 0x0d, 0xd2, 0x15, 0xad, 0x17, 0x6e, 0x83, 0x38, 0x4f, 0x5e, 0x3b, 0x18, 0x44, 0x2b, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0xc1, 0xe0, 0xae, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x86, 0xd5, 0xca, 0x21, 0x86, 0x1b, 0xe2, 0x7f, 0x10, 0x59, 0x90, 0x25, 0xc7, 0xa1, 0x41, 0xb6, 0xa1, 0xf9, 0xfa, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x2c, 0xfc, 0x06, 0x31, 0xc8, 0xbe, 0x76, 0xf0, 0x50, 0xfc, 0x86, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0x10, 0x83, 0xec, 0x6b, 0x07, 0x6f, 0xd7, 0x6f, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x0e, 0xa2, 0xf1, 0x1b, 0x6d, 0x83, 0x05, 0x0d, 0x53, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x9b, 0x83, 0x27, 0xdc, 0x66, 0xad, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x39, 0x88, 0x03, 0x51, 0xb4, 0xc3, 0x29, 0xb6, 0x86, 0x3a, 0xbe, 0xe1, 0xe5, 0xbb, 0x39, 0x18, 0x68, 0xf5, 0x87, 0x53, 0x6c, 0xf8, 0x8d, 0xe7, 0x8b, 0x07, 0xd1, 0xf8, 0x8d, 0x76, 0xe8, 0x21, 0x74, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x0f, 0xa7, 0xd8, 0x20, 0xd8, 0x38, 0x74, 0x30, 0xd2, 0xb4, 0x8e, 0xc7, 0x83, 0x60, 0x43, 0x62, 0x6a, 0x71, 0xd8, 0x0d, 0xbb, 0x06, 0x1b, 0x4e, 0xb1, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0xfd, 0x4b, 0xe1, 0xa0, 0xfd, 0x46, 0xa6, 0x61, 0x37, 0x08, 0x92, 0xe6, 0x0d, 0x42, 0x00, 0x7c, 0x83, 0x10, 0x00, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x52, 0xe0, 0x87, 0x8e, 0x61, 0xc7, 0xf3, 0xe3, 0xf1, 0x20, 0xd8, 0x20, 0xdd, 0x52, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0xc0, 0x0f, 0x39, 0x08, 0x11, 0xff, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x31, 0xb5, 0x38, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x41, 0xfc, 0xc9, 0x9e, 0x0d, 0x92, 0x01, 0xc1, 0xef, 0x74, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x1c, 0x4e, 0x8a, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0xe2, 0x4f, 0xf6, 0xec, 0x60, 0xc0, 0xf2, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x48, 0x76, 0x9a, 0x3e, 0x64, 0xed, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0xfc, 0xc9, 0x9e, 0x0d, 0x92, 0x01, 0xe9, 0xaf, 0x7d, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x20, 0xfe, 0x64, 0xcf, 0x06, 0xc9, 0xc0, 0xad, 0x75, 0x10, 0xe4, 0xfc, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x83, 0xf8, 0x93, 0x3d, 0x1b, 0x24, 0x03, 0xcd, 0xa9, 0x0e, 0x82, 0x9c, 0xff, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0x0c, 0xee, 0xca, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0x61, 0xed, 0xf7, 0x38, 0x74, 0x3c, 0xde, 0xa0, 0x64, 0x68, 0x5a, 0x10, 0x6c, 0x10, 0xf3, 0xb5, 0x6b, 0x8b, 0xc3, 0x6e, 0x10, 0xcf, 0xc9, 0x6b, 0x0b, 0xbb, 0xb0, 0x0b, 0xb7, 0x20, 0x58, 0xf8, 0x0d, 0xe2, 0x4f, 0xf6, 0xec, 0x20, 0x19, 0x69, 0xfd, 0xd0, 0x41, 0xe3, 0x10, 0xc3, 0xc3, 0xfa, 0xe6, 0xc2, 0x2e, 0x08, 0x16, 0x7e, 0x83, 0xf8, 0x93, 0x3d, 0x1b, 0x24, 0x03, 0x8a, 0xf7, 0xbe, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xaf, 0x3d, 0x48, 0x59, 0x50, 0x38, 0x0e, 0x1d, 0xd2, 0xb9, 0x87, 0xa3, 0x7d, 0xd8, 0x0d, 0xe2, 0x98, 0x79, 0x6d, 0x43, 0x0c, 0x87, 0x5d, 0xb8, 0x0d, 0x22, 0x41, 0x7a, 0xed, 0x10, 0xcd, 0x0d, 0x31, 0x3c, 0x88, 0xd4, 0xdc, 0xb5, 0xe3, 0xf1, 0x82, 0x60, 0x83, 0x98, 0xaf, 0x5d, 0x5b, 0x1c, 0x76, 0x83, 0x78, 0x4e, 0x5e, 0x5b, 0x10, 0x2c, 0x08, 0x36, 0x88, 0x0f, 0xd7, 0xb5, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x09, 0xb7, 0x27, 0x07, 0x0b, 0x20, 0x66, 0x8e, 0x43, 0x83, 0x60, 0x41, 0xb0, 0x41, 0xd4, 0x1f, 0x9f, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xac, 0xfd, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0xf3, 0xb5, 0x6b, 0x8b, 0xc3, 0x2e, 0x08, 0x36, 0x58, 0x05, 0x79, 0x70, 0x68, 0xd4, 0xb2, 0x21, 0x55, 0x73, 0xf0, 0xe0, 0xd3, 0x9b, 0xe3, 0xf1, 0x71, 0x68, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0x83, 0x98, 0x5f, 0x3e, 0x3b, 0x68, 0x35, 0x8f, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x31, 0x33, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xcc, 0xd7, 0xae, 0x2d, 0x0e, 0xbb, 0x20, 0xd8, 0xa0, 0x55, 0x56, 0x95, 0x43, 0xa3, 0x96, 0x05, 0xc9, 0x90, 0x83, 0x36, 0x52, 0x5b, 0x0e, 0x52, 0xb4, 0xaf, 0x8f, 0xc7, 0xc7, 0xa1, 0x41, 0xb0, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x06, 0x71, 0xfc, 0x7b, 0x76, 0x90, 0x8c, 0xb4, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0xe2, 0xf8, 0xf7, 0x6c, 0x90, 0x0c, 0x58, 0xfa, 0xde, 0x77, 0x30, 0xde, 0x75, 0x0e, 0x8d, 0x5a, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x88, 0xf8, 0xaf, 0xb5, 0x83, 0x15, 0x2f, 0x3c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x7b, 0x85, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x0d, 0xca, 0xff, 0xbc, 0x61, 0x17, 0xee, 0x20, 0xfa, 0xc2, 0xd6, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0x11, 0xcb, 0xc0, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xb0, 0x57, 0x38, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x1b, 0xc4, 0x21, 0xfa, 0xda, 0x41, 0x32, 0xd2, 0xfa, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x88, 0x43, 0xf4, 0xb5, 0x83, 0xe8, 0x28, 0x62, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0x71, 0x88, 0xbe, 0x36, 0x48, 0x36, 0x28, 0xa2, 0xbb, 0x0e, 0xc6, 0xbb, 0xce, 0x41, 0xac, 0xc5, 0xdd, 0x1c, 0x87, 0x8e, 0x43, 0xc7, 0xa1, 0x41, 0xb0, 0xf0, 0x1b, 0xc4, 0x20, 0xfb, 0xda, 0x41, 0x2a, 0x91, 0xc5, 0x41, 0xec, 0x3b, 0xcb, 0x0c, 0x82, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x44, 0x7a, 0xf0, 0xda, 0x71, 0xe8, 0x60, 0xbc, 0xeb, 0x0c, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x07, 0xc1, 0xc2, 0x2f, 0xfc, 0x06, 0xa7, 0x33, 0xe4, 0x83, 0x78, 0x96, 0x3d, 0x3b, 0x78, 0x28, 0x7e, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x88, 0x95, 0x28, 0xb6, 0x83, 0xb7, 0xeb, 0x37, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0xb8, 0x61, 0xe2, 0xd6, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x37, 0x07, 0x31, 0xea, 0x93, 0x76, 0xd0, 0x5e, 0x62, 0xfe, 0xf0, 0x1b, 0xcf, 0x17, 0x0f, 0x62, 0xd4, 0x27, 0x6d, 0x10, 0x2c, 0xfc, 0xc2, 0x6f, 0x70, 0xf6, 0x32, 0x3e, 0x88, 0x67, 0xd9, 0xb3, 0x83, 0x64, 0xa4, 0xf5, 0x83, 0x81, 0x2d, 0x7a, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0x5d, 0xb8, 0x0d, 0xa2, 0xb7, 0x8a, 0x6d, 0x10, 0x6c, 0x10, 0xdb, 0x55, 0x6c, 0x07, 0xa5, 0x55, 0xd2, 0x82, 0x60, 0xe1, 0x37, 0x88, 0xf9, 0x2a, 0xb6, 0x83, 0x14, 0x00, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xc1, 0xc3, 0x7d, 0x48, 0x1d, 0x1c, 0x87, 0x0e, 0xa7, 0xd8, 0x20, 0x58, 0xf8, 0x0d, 0xe2, 0x10, 0x7d, 0xed, 0x20, 0x05, 0xc0, 0x7d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xa1, 0x63, 0xd8, 0x21, 0x6b, 0x77, 0x1c, 0x3a, 0x1e, 0x1f, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x10, 0xf1, 0x5f, 0x6b, 0x07, 0x29, 0x00, 0xee, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xe3, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0xfc, 0xd7, 0xda, 0x41, 0x74, 0x14, 0xb1, 0x1d, 0x1a, 0xb5, 0x1c, 0x87, 0x86, 0xdd, 0x20, 0x8e, 0x99, 0xd7, 0x16, 0x04, 0x0b, 0xbf, 0x41, 0xfc, 0xc9, 0x9e, 0x1d, 0xa4, 0x00, 0xb8, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x48, 0x0f, 0x5e, 0x3b, 0x88, 0x3f, 0x1a, 0xb6, 0xe3, 0xf1, 0xf0, 0x1b, 0xcf, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xc4, 0x79, 0xf2, 0xda, 0x61, 0x5c, 0x8e, 0xc7, 0xc7, 0xa1, 0x61, 0x37, 0x88, 0x67, 0xe7, 0xb5, 0x05, 0xd9, 0x1a, 0xf2, 0xd8, 0x8b, 0x83, 0x60, 0x83, 0x78, 0xf6, 0x3e, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x27, 0xe0, 0x67, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0x98, 0xb8, 0x35, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0xcd, 0x41, 0x1c, 0x34, 0xa5, 0x6d, 0x98, 0xb8, 0x35, 0xcc, 0xfd, 0x86, 0x95, 0xa1, 0x83, 0x56, 0xfe, 0x29, 0x36, 0xcc, 0xfd, 0x06, 0xd1, 0xf0, 0x94, 0xb6, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0xd6, 0x30, 0x71, 0x1b, 0xa6, 0xf3, 0xe0, 0x09, 0x1b, 0x18, 0x1b, 0x4e, 0x84, 0x0d, 0x22, 0x01, 0x8d, 0x6d, 0x83, 0xc5, 0x6c, 0x50, 0xcb, 0x2c, 0x1b, 0x3e, 0xb1, 0x59, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xdd, 0x83, 0xec, 0xe0, 0xad, 0x3a, 0x3c, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x88, 0xc1, 0x34, 0xb6, 0xe1, 0x37, 0x9e, 0x2f, 0x1e, 0xc4, 0x41, 0x53, 0xda, 0x06, 0x09, 0x65, 0x27, 0x87, 0x46, 0x82, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0xd8, 0x05, 0xc1, 0x06, 0x11, 0x51, 0x7b, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0xd0, 0x43, 0xe8, 0x20, 0x35, 0xec, 0xe4, 0x38, 0xb4, 0x20, 0xd8, 0x20, 0xda, 0x52, 0x84, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x70, 0xf4, 0x36, 0x3f, 0x74, 0xd0, 0xd8, 0x20, 0xe1, 0xf6, 0x64, 0xf8, 0x8d, 0xe7, 0xe3, 0xc1, 0x03, 0x66, 0x4b, 0x8f, 0x43, 0x87, 0x53, 0x6c, 0xd8, 0x0d, 0xa2, 0x19, 0x87, 0x6d, 0x41, 0xb0, 0x41, 0xdc, 0x7c, 0xb1, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x48, 0x0f, 0x5e, 0x3b, 0x34, 0x12, 0x3c, 0x1e, 0x0f, 0xbf, 0xf1, 0xfc, 0x20, 0x7e, 0xdc, 0xd8, 0x8e, 0x43, 0xc3, 0x6e, 0x10, 0xa9, 0xb9, 0x6b, 0x0b, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x88, 0x04, 0xe9, 0xb5, 0x0d, 0xe2, 0x8f, 0x86, 0x6d, 0x10, 0x2c, 0xfc, 0x06, 0xf1, 0x27, 0x7b, 0x76, 0x10, 0xe5, 0x05, 0x6c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0x10, 0x7f, 0xb2, 0x67, 0x07, 0x71, 0x58, 0xb9, 0x76, 0xe8, 0xa0, 0x71, 0x1c, 0x3a, 0x1e, 0x0f, 0xbb, 0x41, 0x44, 0x07, 0xaf, 0x2d, 0x08, 0x36, 0x88, 0xb6, 0x14, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x1c, 0xbd, 0xcd, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0xf0, 0x1b, 0x56, 0x68, 0x87, 0xdf, 0xe0, 0x5d, 0x22, 0x11, 0x07, 0x07, 0x9a, 0xdb, 0x83, 0xb5, 0x7c, 0x02, 0x87, 0x0e, 0x1a, 0xc7, 0xa1, 0x0d, 0x12, 0x6e, 0x4f, 0x86, 0xdf, 0x78, 0x7e, 0x10, 0x29, 0xb2, 0x6b, 0xc7, 0xa1, 0x61, 0x37, 0x88, 0x50, 0xde, 0xb5, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x44, 0x7a, 0xf0, 0xda, 0xc1, 0xc1, 0x40, 0xf7, 0x78, 0x3c, 0xec, 0x06, 0xb1, 0x6b, 0xbb, 0xb6, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x48, 0x0f, 0x5e, 0x3b, 0x8c, 0xcb, 0xf1, 0x78, 0x90, 0x6d, 0x68, 0xbe, 0x3e, 0xc8, 0xd6, 0x90, 0xc7, 0x5e, 0x1c, 0x04, 0x1b, 0xc4, 0xb3, 0xf7, 0xd9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x38, 0x01, 0x3f, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x83, 0x88, 0xfb, 0x60, 0x1b, 0x7e, 0xe3, 0xf9, 0x06, 0x71, 0x34, 0xc2, 0x76, 0x88, 0xe6, 0x71, 0xe8, 0x38, 0x74, 0x3c, 0x3e, 0x9c, 0x62, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0x77, 0x89, 0x44, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x41, 0x9c, 0x27, 0xaf, 0x1d, 0x52, 0x07, 0xc7, 0xa1, 0xe3, 0xf1, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xc4, 0x11, 0xf7, 0xd9, 0xc1, 0x43, 0xf1, 0x1b, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0x1c, 0x71, 0x9f, 0x1d, 0xbc, 0x5d, 0xbf, 0x61, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xc5, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x73, 0x10, 0x31, 0x6c, 0x69, 0xc3, 0x6f, 0x3c, 0x1f, 0x0f, 0x22, 0x86, 0x2d, 0xed, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xbb, 0x70, 0x0b, 0x82, 0x85, 0xdf, 0x20, 0x46, 0x19, 0xd7, 0x0e, 0x0e, 0x3c, 0xbb, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x92, 0x9d, 0xa6, 0x0f, 0xa9, 0x9a, 0xe3, 0xd0, 0xc1, 0xd2, 0xf0, 0xad, 0x85, 0x5f, 0x10, 0x2c, 0xfc, 0x06, 0x31, 0xca, 0xb8, 0x76, 0x30, 0x94, 0xab, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0xf0, 0x0b, 0xbf, 0xc1, 0xc1, 0x19, 0xfd, 0xe0, 0x40, 0x73, 0x7b, 0x90, 0xc6, 0x7d, 0x72, 0x30, 0xee, 0xa0, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0x8c, 0x32, 0xae, 0x1d, 0x0c, 0x58, 0x9e, 0x83, 0x98, 0x5e, 0x64, 0x3b, 0x0e, 0x1d, 0x87, 0x86, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x38, 0xc5, 0x8e, 0xe7, 0x87, 0x53, 0xec, 0x78, 0xbc, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x41, 0x7c, 0x9c, 0xae, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0xec, 0x86, 0xf5, 0xbd, 0x85, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0xc7, 0x83, 0xe8, 0xfa, 0xac, 0x39, 0xbe, 0x0d, 0x82, 0x0d, 0x96, 0xc1, 0x0b, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0x83, 0xb8, 0x75, 0x64, 0x3b, 0x58, 0xcb, 0x27, 0x70, 0x68, 0xd4, 0x72, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0x41, 0xda, 0xc6, 0xf3, 0xc1, 0xdb, 0xc3, 0x8f, 0x8e, 0xc7, 0x0b, 0x82, 0xc5, 0x05, 0xc1, 0x06, 0x71, 0x99, 0x62, 0xb2, 0x38, 0x08, 0x56, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0xf8, 0x0d, 0x96, 0x96, 0xa4, 0x0d, 0xbf, 0x41, 0x8c, 0x32, 0xae, 0x1d, 0xbc, 0x1f, 0xa1, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x58, 0x5a, 0x92, 0x36, 0xfc, 0x06, 0x31, 0xca, 0xb8, 0x76, 0x50, 0x32, 0x34, 0x1d, 0x87, 0x0e, 0x69, 0xb8, 0x05, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x1d, 0x44, 0xc0, 0x26, 0xdb, 0xa1, 0x29, 0xd0, 0x82, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x06, 0xd1, 0x96, 0xc9, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0xb0, 0x42, 0x7b, 0xb0, 0xea, 0x24, 0x6d, 0xf8, 0x0d, 0x62, 0x94, 0x71, 0xed, 0x60, 0x5d, 0x2a, 0xd8, 0xc1, 0xc2, 0xe4, 0x9f, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0xd0, 0x89, 0x68, 0x41, 0xb0, 0x41, 0x04, 0x75, 0xb2, 0x1d, 0x2c, 0xe1, 0xff, 0x59, 0x10, 0x6c, 0x10, 0x41, 0x9d, 0x6c, 0x07, 0xef, 0x39, 0xcc, 0x18, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0xfc, 0x06, 0x4b, 0x4b, 0xd2, 0x86, 0xdf, 0x20, 0x46, 0x19, 0xd7, 0x0e, 0xde, 0x7f, 0x6f, 0x76, 0xd0, 0xe8, 0x84, 0xd2, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0xe2, 0x06, 0xaf, 0xb9, 0xcd, 0x3b, 0x88, 0x7e, 0xc3, 0xb4, 0xc5, 0x41, 0xb0, 0xb0, 0x0b, 0xb7, 0x78, 0xf0, 0x10, 0x92, 0xcd, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xf8, 0x2c, 0x65, 0xdb, 0x20, 0x3e, 0x4b, 0xd9, 0x0e, 0xa7, 0xd8, 0x20, 0xd8, 0x20, 0x1a, 0x3e, 0xd9, 0x0e, 0xd6, 0xa3, 0x6b, 0x2d, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x78, 0xf0, 0x9a, 0xdb, 0xbc, 0x0d, 0xe2, 0x05, 0x95, 0xed, 0x70, 0x8a, 0x0d, 0xbb, 0x70, 0x8b, 0x07, 0x91, 0x51, 0x98, 0x76, 0x18, 0x97, 0x85, 0x5d, 0xb8, 0x0d, 0xe3, 0x72, 0x10, 0x27, 0xa9, 0x6c, 0x1b, 0xc4, 0x49, 0x2a, 0xdb, 0xe1, 0x14, 0x1b, 0x76, 0xe1, 0x16, 0x0f, 0x62, 0xc3, 0x30, 0xed, 0x30, 0x2e, 0x0b, 0xbb, 0x70, 0x1b, 0xc6, 0xe5, 0x20, 0xd2, 0x55, 0xd9, 0x36, 0x88, 0x74, 0x55, 0xb6, 0xc3, 0x29, 0x36, 0xec, 0xc2, 0x6d, 0x18, 0x97, 0xf1, 0x20, 0xfa, 0x0d, 0xd3, 0x36, 0x88, 0x68, 0x56, 0xb6, 0xc3, 0x29, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x8b, 0x1b, 0x44, 0x72, 0x65, 0x5a, 0x8b, 0x83, 0x60, 0x61, 0x17, 0x6e, 0xf1, 0x20, 0xfa, 0x11, 0xd3, 0x0e, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x22, 0xd8, 0x95, 0x6d, 0x83, 0x08, 0x76, 0x65, 0x3b, 0x9c, 0x62, 0x07, 0xf1, 0x72, 0xca, 0x36, 0xec, 0xc2, 0x2d, 0x1e, 0xc4, 0xd7, 0x62, 0xda, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0x2c, 0xc3, 0xb2, 0x6d, 0x10, 0xcb, 0xb0, 0x6c, 0x87, 0x53, 0x6c, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x20, 0x58, 0xf8, 0x0d, 0x96, 0x96, 0xa4, 0x0d, 0xbf, 0x41, 0x8c, 0x32, 0xae, 0x1d, 0xbc, 0x11, 0xa0, 0x64, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x7b, 0xf0, 0xa8, 0xb4, 0x80, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xb0, 0x0b, 0xb7, 0x78, 0x10, 0x49, 0x8f, 0x69, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xf1, 0x4f, 0xcb, 0xb6, 0x41, 0xfc, 0xd3, 0xb2, 0x1d, 0x4e, 0xb1, 0x83, 0xe8, 0x92, 0x65, 0x1b, 0x76, 0xe1, 0x16, 0x0f, 0x22, 0x22, 0x32, 0xed, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x20, 0x12, 0x6e, 0xd9, 0x36, 0x88, 0x84, 0x5b, 0xb6, 0xc3, 0x29, 0x76, 0x10, 0x5d, 0xb2, 0x6c, 0xc3, 0x2e, 0xdc, 0xe2, 0x41, 0x74, 0x4d, 0xa6, 0x1d, 0xa2, 0xb9, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x1e, 0xc4, 0x44, 0x2e, 0xdb, 0x06, 0x31, 0x91, 0xcb, 0x76, 0x38, 0xc5, 0x0e, 0xa2, 0x4b, 0x96, 0x6d, 0x61, 0x17, 0x6e, 0x43, 0x34, 0xc7, 0x83, 0x48, 0xae, 0x4c, 0xdb, 0x20, 0x8a, 0x76, 0xd9, 0x0e, 0xa7, 0xd8, 0x20, 0xd8, 0x20, 0x1a, 0x3e, 0xd9, 0x0e, 0xe2, 0xce, 0xfb, 0xe4, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x20, 0x2e, 0x53, 0x4c, 0x16, 0x07, 0xc1, 0x0a, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x1b, 0x44, 0x5b, 0x26, 0xdb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x43, 0x0c, 0x17, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x68, 0xf8, 0x64, 0x3b, 0x88, 0x8a, 0x44, 0x93, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0x90, 0x86, 0x5b, 0x10, 0x6c, 0x10, 0x41, 0x9d, 0x6c, 0x87, 0xa6, 0x40, 0x1b, 0xc4, 0x48, 0x27, 0xdb, 0x82, 0x60, 0x83, 0x68, 0xf8, 0x64, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x24, 0x5f, 0xe6, 0x20, 0xec, 0xa9, 0x8f, 0x43, 0x0b, 0x82, 0x0d, 0xa2, 0xb8, 0x97, 0xed, 0xe0, 0x3d, 0x87, 0x19, 0x83, 0x60, 0x83, 0x68, 0xf8, 0x64, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x34, 0x80, 0xe6, 0x20, 0xc1, 0x00, 0xe1, 0x38, 0x74, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x10, 0x6c, 0xb0, 0x2a, 0x1f, 0x6b, 0x71, 0x10, 0xac, 0x20, 0xd8, 0x20, 0x1a, 0x3e, 0xd9, 0x0e, 0x56, 0x01, 0x64, 0x2d, 0x08, 0x36, 0x88, 0x86, 0x4f, 0xb6, 0x83, 0xc5, 0xba, 0x4c, 0x0b, 0x82, 0x0d, 0xa2, 0xe1, 0x93, 0xed, 0x60, 0x45, 0x43, 0xd6, 0x82, 0x60, 0x83, 0x18, 0xe3, 0x64, 0x3b, 0x58, 0xc2, 0xff, 0xb3, 0x20, 0xd8, 0x20, 0x1a, 0x3e, 0xd9, 0x0e, 0xd6, 0x8a, 0x64, 0x2d, 0x08, 0x36, 0x88, 0x86, 0x4f, 0xb6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x4b, 0xf2, 0x65, 0x0e, 0x12, 0xf7, 0x66, 0x8e, 0x43, 0x83, 0x60, 0x83, 0x68, 0xf8, 0x64, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xb0, 0x24, 0x5f, 0xe6, 0x60, 0x85, 0x4f, 0xd6, 0x71, 0xe8, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x82, 0x60, 0x43, 0x62, 0x6a, 0x71, 0x10, 0xac, 0x20, 0xd8, 0x20, 0x1a, 0x3e, 0xd9, 0x0e, 0x9e, 0xef, 0xda, 0x33, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x6c, 0x10, 0xdd, 0xb2, 0x6c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xc1, 0xd2, 0x92, 0xb4, 0x83, 0xc4, 0x96, 0x93, 0xe3, 0xd0, 0xa1, 0x83, 0xc6, 0xa1, 0xf9, 0xcb, 0xf1, 0x78, 0x05, 0xc1, 0xe2, 0x90, 0x83, 0x68, 0x4e, 0xd7, 0x58, 0x1c, 0x04, 0x0b, 0xbb, 0x21, 0x8f, 0xb5, 0x86, 0x66, 0x91, 0x07, 0x0b, 0xeb, 0xa2, 0x36, 0x48, 0x0a, 0xf7, 0x19, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0x70, 0x82, 0xf0, 0x3d, 0x74, 0xd0, 0x38, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x96, 0x85, 0xc1, 0x2c, 0x0e, 0x82, 0x15, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x88, 0xb6, 0x4c, 0xb6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xd1, 0xf0, 0xc9, 0x76, 0xf0, 0xae, 0x70, 0xab, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x71, 0xe8, 0x90, 0x86, 0xdb, 0x20, 0x8a, 0x38, 0xd9, 0x06, 0xc1, 0x06, 0xc9, 0xd9, 0x3d, 0x87, 0x16, 0x60, 0x87, 0xe6, 0x2f, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x06, 0x11, 0x3d, 0x9d, 0xd6, 0xe2, 0x20, 0x58, 0xd8, 0x85, 0x5b, 0x3c, 0x88, 0x4f, 0xda, 0xb4, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0xe8, 0xc5, 0x66, 0xdb, 0x20, 0x7a, 0xb1, 0xd9, 0x0e, 0xa7, 0xd8, 0xc1, 0xd0, 0xfc, 0x1d, 0x76, 0xe1, 0x16, 0x0f, 0xa2, 0xd3, 0x36, 0xed, 0x10, 0xcd, 0x15, 0x76, 0xe1, 0x36, 0x44, 0xf3, 0x20, 0x72, 0xb5, 0xd9, 0x36, 0x88, 0x5c, 0x6d, 0xb6, 0xc3, 0x29, 0xb6, 0x41, 0x94, 0x44, 0x92, 0x0c, 0x82, 0x0d, 0x9e, 0x43, 0xad, 0x74, 0x68, 0x01, 0x36, 0xec, 0x06, 0x91, 0xea, 0xca, 0xb6, 0x06, 0x11, 0xf4, 0xca, 0xb6, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0x41, 0xb0, 0x41, 0xb4, 0x65, 0xb2, 0x1d, 0x2c, 0xdb, 0x90, 0x3a, 0x34, 0x05, 0x5a, 0x10, 0x6c, 0x10, 0xfd, 0xdd, 0x6c, 0x87, 0x4e, 0x44, 0x0b, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x04, 0x1b, 0x44, 0xb7, 0x2c, 0xdb, 0x41, 0xb4, 0x69, 0xb2, 0x1d, 0x2c, 0xe1, 0xff, 0x19, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x88, 0x6e, 0x59, 0xb6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x85, 0xdd, 0xd0, 0x35, 0x73, 0x83, 0x98, 0xfb, 0x65, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x88, 0x6e, 0x59, 0xb6, 0x83, 0x78, 0xf3, 0x65, 0x3b, 0x34, 0x6a, 0x39, 0x34, 0x7f, 0x39, 0x1e, 0x1f, 0x87, 0x0e, 0x8a, 0xe0, 0xc1, 0x61, 0x17, 0x6e, 0xf1, 0x20, 0x76, 0x7e, 0xd3, 0x0e, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x22, 0xb0, 0x9c, 0x6d, 0x83, 0x08, 0x2c, 0x67, 0x3b, 0x9c, 0x62, 0x1b, 0xc4, 0xaa, 0x31, 0xdb, 0xc1, 0xd3, 0x7d, 0xdc, 0x86, 0xdd, 0x20, 0x66, 0x61, 0xd9, 0xd6, 0x20, 0x96, 0x62, 0xd9, 0x0e, 0xe2, 0xe5, 0x94, 0x6d, 0xd8, 0x0d, 0xe2, 0x9c, 0x96, 0x6d, 0x0d, 0xe2, 0xaf, 0x96, 0xed, 0x20, 0xb6, 0xbb, 0xd9, 0x86, 0xdd, 0x20, 0xe2, 0x6d, 0xd9, 0xd6, 0x20, 0x12, 0x6f, 0xd9, 0x16, 0x04, 0x1b, 0x44, 0xc3, 0x27, 0xdb, 0xc1, 0x1a, 0x50, 0xa6, 0x05, 0xc1, 0x06, 0x51, 0xfd, 0xcd, 0x76, 0xe8, 0x44, 0x34, 0x08, 0x36, 0x88, 0x93, 0x70, 0xb6, 0x43, 0xf7, 0xa3, 0x61, 0x17, 0x6e, 0xf1, 0x20, 0x32, 0x8b, 0xd3, 0x0e, 0xd1, 0x5c, 0x61, 0x17, 0x6e, 0x43, 0x34, 0x0f, 0x22, 0x8a, 0x9d, 0x6d, 0x83, 0x88, 0x62, 0x67, 0x3b, 0x9c, 0x62, 0x07, 0xf1, 0x72, 0xca, 0x36, 0xec, 0xc2, 0x2d, 0x1e, 0x44, 0x01, 0x72, 0xda, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0x6c, 0xb9, 0xb3, 0x6d, 0x10, 0x5b, 0xee, 0x6c, 0x87, 0x53, 0xec, 0x20, 0x1e, 0x78, 0xd9, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0xe8, 0x59, 0x4e, 0x3b, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x88, 0x32, 0x78, 0xb6, 0x0d, 0xa2, 0x0c, 0x9e, 0xed, 0x70, 0x8a, 0x6d, 0x10, 0x45, 0x9c, 0x6c, 0x07, 0x71, 0xc9, 0xcd, 0x36, 0xec, 0xc2, 0x2d, 0x1e, 0x44, 0xc7, 0x73, 0xda, 0x21, 0x9a, 0x2b, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x41, 0xec, 0xca, 0xb3, 0x6d, 0x10, 0xbb, 0xf2, 0x6c, 0x87, 0x53, 0xec, 0x20, 0xee, 0xe3, 0xd9, 0x86, 0x5d, 0xb8, 0xc5, 0x83, 0xa8, 0x88, 0x4e, 0x3b, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x88, 0x62, 0x7a, 0xb6, 0x0d, 0xa2, 0x98, 0x9e, 0xed, 0x70, 0x8a, 0x1d, 0xc4, 0x03, 0x2f, 0xdb, 0xc2, 0x2e, 0xdc, 0x86, 0x68, 0x8e, 0x07, 0x11, 0x3d, 0x9d, 0xb6, 0x41, 0xdc, 0xdb, 0xb3, 0x1d, 0x4e, 0xb1, 0x83, 0x78, 0xe0, 0x65, 0x3b, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0xe2, 0x15, 0x92, 0x67, 0x71, 0x10, 0xac, 0x20, 0xd8, 0x20, 0x1a, 0x3e, 0xd9, 0x0e, 0xa2, 0x5a, 0x56, 0x64, 0x83, 0x58, 0x35, 0x66, 0xdb, 0x20, 0xae, 0x8e, 0xd9, 0x16, 0x04, 0x1b, 0x44, 0xc3, 0x27, 0xdb, 0xc1, 0xe2, 0x8b, 0xac, 0x0d, 0xe2, 0x15, 0x99, 0x6d, 0x41, 0xb0, 0x41, 0x8c, 0x71, 0xb2, 0x1d, 0x3c, 0xc4, 0x33, 0x63, 0x41, 0xb0, 0x41, 0x34, 0x7c, 0xb2, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x58, 0x78, 0x28, 0x73, 0x90, 0x52, 0x3a, 0x73, 0x1c, 0x5a, 0x10, 0x6c, 0x10, 0x0d, 0x9f, 0x6c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x96, 0xe4, 0xcb, 0x1c, 0x34, 0x2a, 0xce, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x16, 0x7e, 0x83, 0xa5, 0x25, 0x69, 0xc3, 0x6f, 0x10, 0xa3, 0x8c, 0x6b, 0x83, 0x64, 0x20, 0xd1, 0x77, 0x30, 0xde, 0x75, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xc4, 0xb2, 0x26, 0xdb, 0x41, 0x34, 0xfb, 0xb2, 0x1d, 0x87, 0x0e, 0x1e, 0xaa, 0x17, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x1e, 0x04, 0x1b, 0x14, 0xd0, 0x82, 0x8b, 0x83, 0x60, 0x05, 0xc1, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0x82, 0x0d, 0xa2, 0x2d, 0x93, 0x6d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xaa, 0x7c, 0xac, 0xc5, 0x41, 0xb0, 0x06, 0x71, 0xda, 0xcb, 0xb6, 0x41, 0xac, 0x1a, 0xb3, 0x6d, 0x10, 0x57, 0xc7, 0x6c, 0x1b, 0xc4, 0x68, 0x30, 0xdb, 0x06, 0xf1, 0x8a, 0xcc, 0xb6, 0x41, 0x6c, 0x25, 0xb3, 0x0d, 0xbb, 0xc1, 0xcb, 0x13, 0x6a, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0x70, 0xb4, 0x1f, 0xbc, 0x82, 0xe5, 0xe4, 0xd0, 0xe6, 0xf1, 0xd0, 0xfc, 0xe5, 0x78, 0x7c, 0x1c, 0x3a, 0xa4, 0xe1, 0x16, 0x04, 0x1b, 0x44, 0xc3, 0x27, 0xdb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x25, 0xf9, 0x32, 0x87, 0x1e, 0x42, 0xc7, 0xa1, 0x05, 0xc1, 0x06, 0xd1, 0xf0, 0xc9, 0x76, 0x10, 0x21, 0xdd, 0x29, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0xc2, 0x6f, 0xb0, 0xb4, 0x24, 0x6d, 0xf8, 0x0d, 0x62, 0x94, 0x71, 0x6d, 0x90, 0x0c, 0x9c, 0x5f, 0x07, 0xc3, 0xd0, 0xe7, 0x20, 0xde, 0x7c, 0xd9, 0x0e, 0xdd, 0x8f, 0x0e, 0xcd, 0x5f, 0x8e, 0xc7, 0x8b, 0x0b, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0x90, 0xad, 0x38, 0x58, 0x75, 0x92, 0x36, 0xfc, 0x06, 0x31, 0xca, 0xb8, 0x76, 0x10, 0x3b, 0x4d, 0x6c, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x0e, 0x44, 0xfc, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0x54, 0x36, 0xb4, 0x1d, 0x2c, 0x83, 0x17, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x90, 0x1a, 0x76, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x0b, 0xbf, 0xf0, 0x1b, 0x44, 0x65, 0x43, 0xdb, 0x20, 0x19, 0x28, 0x5e, 0x87, 0x15, 0xda, 0x83, 0x83, 0x47, 0xed, 0xc1, 0xea, 0x4d, 0xb4, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x2f, 0xfc, 0xc2, 0x6f, 0x10, 0x95, 0x0d, 0x6d, 0x07, 0x07, 0x67, 0xf4, 0x83, 0x03, 0xcd, 0xed, 0xc1, 0x5a, 0x3e, 0x81, 0x43, 0x1a, 0xee, 0x38, 0x74, 0x1c, 0x3a, 0x0e, 0x0d, 0x82, 0x85, 0x5f, 0xf8, 0x0d, 0x82, 0x9c, 0xff, 0x60, 0xd5, 0x49, 0xda, 0xf0, 0x1b, 0xc4, 0x28, 0xe3, 0xda, 0x41, 0x0a, 0x80, 0xfb, 0x20, 0xd8, 0x38, 0x34, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf1, 0x20, 0x58, 0x1c, 0x0f, 0x62, 0x3a, 0x3e, 0xed, 0xf8, 0x36, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x33, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0x1a, 0x2b, 0xda, 0x0e, 0xde, 0x9b, 0x16, 0x70, 0xd8, 0xe3, 0x3d, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x2b, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0xac, 0x20, 0x58, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xd6, 0xf7, 0x36, 0xc4, 0x70, 0x10, 0xac, 0xe2, 0x41, 0xec, 0xf1, 0xa7, 0x0d, 0x82, 0x85, 0x5f, 0xf8, 0x0d, 0xd9, 0x8a, 0xe1, 0x17, 0x7e, 0x83, 0x58, 0xfa, 0x35, 0x19, 0x24, 0x03, 0x79, 0xaf, 0xc3, 0x0a, 0xed, 0xc1, 0x7b, 0xd3, 0x02, 0x06, 0xc9, 0xc0, 0x51, 0x77, 0x3c, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0xd1, 0xd5, 0xd1, 0x76, 0xb0, 0xac, 0x85, 0x6d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0x5f, 0xf8, 0x0d, 0x02, 0xde, 0xff, 0x60, 0xd5, 0x49, 0xda, 0xc1, 0xaa, 0x9c, 0xa0, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x41, 0x74, 0x75, 0xb4, 0x1d, 0xb4, 0xe6, 0xaa, 0x72, 0x1c, 0x3a, 0x0e, 0xad, 0x78, 0x10, 0x9f, 0x05, 0x6a, 0x07, 0x71, 0xd2, 0xd1, 0xb6, 0xe2, 0x41, 0x84, 0x1d, 0xa8, 0x1d, 0xc4, 0x49, 0x47, 0xdb, 0x8a, 0x07, 0x31, 0x91, 0xa0, 0x76, 0x10, 0x27, 0x1d, 0x6d, 0x2b, 0x1e, 0x44, 0xa1, 0x82, 0xda, 0x41, 0x9c, 0x74, 0xb4, 0xad, 0x78, 0x10, 0xfd, 0xe6, 0x69, 0x83, 0x60, 0xe1, 0x37, 0x88, 0xae, 0x8e, 0xb6, 0x83, 0xc7, 0x35, 0x28, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x1b, 0xae, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x83, 0xe8, 0xea, 0x68, 0x3b, 0x68, 0x6b, 0x83, 0xe9, 0x38, 0x74, 0x88, 0xe1, 0x86, 0x18, 0x6e, 0x88, 0xe1, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x86, 0x6a, 0x82, 0xf8, 0x1c, 0x0c, 0x6c, 0xd1, 0x83, 0x91, 0xb0, 0x7a, 0x3c, 0xde, 0x20, 0xa6, 0x39, 0xda, 0x06, 0xc1, 0xc2, 0x2f, 0xfc, 0x06, 0x0b, 0x87, 0x13, 0x0e, 0x22, 0xb4, 0xa3, 0xed, 0x60, 0x59, 0x0b, 0xdb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xea, 0x60, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x88, 0x4d, 0x95, 0xb6, 0x83, 0xc3, 0x3b, 0xed, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x10, 0x9b, 0x2a, 0x6d, 0x07, 0xad, 0xb9, 0xaa, 0x1c, 0x87, 0x8e, 0x43, 0x6b, 0x10, 0xd3, 0xb6, 0x6b, 0x83, 0x60, 0xe1, 0x17, 0x7e, 0x43, 0x72, 0xe9, 0x20, 0x42, 0x3b, 0xda, 0x0e, 0x96, 0xb5, 0xb0, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x44, 0x65, 0x43, 0xdb, 0xc1, 0xaa, 0x9c, 0xa0, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x41, 0xe4, 0xbb, 0xb4, 0x1d, 0xb4, 0xe6, 0xaa, 0x72, 0x1c, 0x5a, 0x83, 0x98, 0x5e, 0xfd, 0x38, 0x88, 0x9b, 0x98, 0xb6, 0x05, 0xc1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0x5d, 0xd8, 0x0d, 0x1d, 0x47, 0x36, 0x08, 0x7a, 0xfd, 0xc3, 0xd1, 0xbe, 0x82, 0x60, 0x83, 0x28, 0x09, 0x69, 0x3b, 0xa4, 0xe1, 0x06, 0xc1, 0xc2, 0x6f, 0x10, 0x5d, 0x1d, 0x6d, 0x07, 0xcd, 0xe3, 0x8f, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xe4, 0x6b, 0x0f, 0xe2, 0x1d, 0xa4, 0xed, 0x38, 0x74, 0x38, 0xc5, 0x8e, 0xc7, 0x8b, 0x07, 0x31, 0xd1, 0x9e, 0x36, 0x08, 0x36, 0x88, 0x41, 0x95, 0xb6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xd4, 0xc1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0x10, 0x9b, 0x2a, 0x6d, 0x07, 0xab, 0x37, 0xd1, 0x0e, 0xe2, 0x9f, 0xa5, 0xed, 0x38, 0x74, 0x88, 0xe1, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x06, 0x52, 0x75, 0x07, 0xd1, 0x95, 0xd2, 0x76, 0x30, 0xb0, 0x45, 0x0f, 0x86, 0x59, 0xf8, 0xf1, 0x78, 0x05, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x07, 0xc1, 0xc2, 0x2f, 0xfc, 0x86, 0x15, 0xda, 0x83, 0x08, 0xed, 0x68, 0x3b, 0x78, 0x49, 0x41, 0xce, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x88, 0xbd, 0x9d, 0xb6, 0x83, 0x06, 0x0a, 0xf3, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0xdc, 0x30, 0xf7, 0x1b, 0x34, 0xab, 0x3d, 0xb6, 0xa1, 0x8e, 0xac, 0x61, 0x86, 0x36, 0x88, 0x04, 0x34, 0xb6, 0x0d, 0x27, 0xc2, 0x06, 0x91, 0x80, 0xc6, 0xb6, 0xc1, 0x62, 0x36, 0xa8, 0x65, 0x96, 0x0d, 0x9f, 0xd8, 0xac, 0xe1, 0x79, 0x92, 0x35, 0x58, 0xa8, 0x4c, 0x75, 0xf0, 0xbc, 0x7f, 0xcd, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x84, 0x72, 0xcd, 0x0d, 0x1f, 0xe4, 0x6c, 0xd0, 0x84, 0x2c, 0xc4, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x81, 0xeb, 0x9a, 0x1b, 0x3e, 0xc8, 0x59, 0x83, 0x05, 0xd0, 0x47, 0x6b, 0x78, 0x50, 0x72, 0xe3, 0xd0, 0x86, 0xe7, 0x49, 0x36, 0x78, 0x0c, 0xbc, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x8a, 0xbb, 0xe6, 0x1a, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x85, 0xf2, 0x9a, 0x07, 0x49, 0x0e, 0x4f, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x35, 0xf5, 0x9a, 0x1b, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xc0, 0xd7, 0xdc, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x07, 0x25, 0x37, 0x58, 0x7e, 0xbc, 0xbd, 0xe1, 0xdd, 0x9e, 0x0d, 0x1e, 0xa3, 0xaf, 0xb9, 0x86, 0x8f, 0xda, 0x0f, 0x5e, 0xcd, 0xaf, 0xd9, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xf0, 0x18, 0x78, 0xcd, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x14, 0x77, 0xcd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x0b, 0xe5, 0x35, 0x37, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x6f, 0xce, 0x86, 0x68, 0x6e, 0x78, 0xe3, 0x6e, 0xc2, 0xc3, 0x83, 0x24, 0x87, 0xa7, 0x0d, 0xcf, 0x93, 0x6c, 0xf0, 0x18, 0x78, 0xcd, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x14, 0x77, 0xcd, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x37, 0xe0, 0x6b, 0x6e, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xd7, 0xd4, 0x6b, 0x6e, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x1f, 0xc4, 0x06, 0x52, 0xdb, 0xc1, 0x01, 0x34, 0x69, 0xc3, 0x07, 0x39, 0x6b, 0xb0, 0x00, 0xfa, 0x68, 0x0d, 0x0f, 0x4a, 0x6e, 0x1c, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0x8f, 0x16, 0xd8, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0x06, 0xd8, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0xac, 0x60, 0xf3, 0xa0, 0x39, 0xbc, 0xcf, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x0c, 0x84, 0xcd, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xb7, 0x2b, 0x6c, 0x1e, 0x44, 0x81, 0x30, 0xcc, 0xc1, 0xb9, 0xde, 0x60, 0x0d, 0xcf, 0x93, 0x6c, 0xf0, 0x68, 0x81, 0xcd, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x64, 0x80, 0xcd, 0x35, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xcb, 0x0a, 0x36, 0x0f, 0x62, 0x47, 0x69, 0x6d, 0xc3, 0xf3, 0x24, 0x1b, 0x3c, 0x5a, 0x60, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x19, 0x60, 0x73, 0xc3, 0xe7, 0x2e, 0x83, 0xc3, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xed, 0x0a, 0x9b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x19, 0x08, 0x9b, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0x34, 0xb2, 0x3d, 0x70, 0x18, 0x97, 0x0d, 0x56, 0x81, 0xc9, 0x6e, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0x5a, 0x17, 0x2b, 0x38, 0x8c, 0xcb, 0xc1, 0x32, 0x27, 0xd9, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xac, 0x0a, 0xe2, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xcf, 0x6c, 0xd8, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x25, 0x62, 0xf3, 0xa0, 0xa9, 0x38, 0xb0, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0xf0, 0x89, 0xcd, 0x0d, 0x9f, 0xbb, 0x0c, 0x0e, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xe7, 0x5a, 0x6c, 0x6e, 0x50, 0x4a, 0x88, 0x6f, 0xb0, 0x82, 0x4c, 0x7f, 0xc3, 0x83, 0x92, 0x1b, 0x2c, 0x3f, 0xde, 0xde, 0xf0, 0x6e, 0xcf, 0x06, 0xef, 0xc6, 0xd8, 0x5c, 0xc3, 0x47, 0xed, 0x07, 0x4f, 0xdc, 0xd8, 0x5c, 0xc3, 0x47, 0xed, 0x07, 0xef, 0xf1, 0xd8, 0xec, 0xe0, 0x5c, 0x6f, 0xb0, 0x86, 0xe7, 0x49, 0x36, 0x58, 0x15, 0xc4, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xd9, 0xb0, 0xb9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x4b, 0xc4, 0xe6, 0x06, 0x05, 0x1f, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0x10, 0xcd, 0x0d, 0x6f, 0xdc, 0x1d, 0x9c, 0xd5, 0xcf, 0x0f, 0x9a, 0x8a, 0x03, 0xdb, 0xf0, 0x3c, 0xc9, 0x06, 0xab, 0x82, 0xb8, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x1b, 0x36, 0x37, 0x7c, 0xee, 0x32, 0x38, 0xbc, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x6b, 0xb1, 0xb9, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x3e, 0xb1, 0xb9, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0x7f, 0x10, 0xc9, 0x60, 0x6d, 0x07, 0x07, 0xd0, 0xa4, 0x0d, 0x1f, 0xe4, 0xac, 0xc1, 0x02, 0xe8, 0xa3, 0x35, 0x3c, 0x28, 0xb9, 0x71, 0x68, 0xc3, 0xf3, 0x24, 0x1b, 0xbc, 0x75, 0x64, 0x73, 0x83, 0x75, 0x71, 0x47, 0x1b, 0xbc, 0x34, 0x64, 0x73, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0xf0, 0x10, 0x93, 0xcd, 0x83, 0x23, 0xb3, 0xea, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x33, 0xca, 0xe6, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x4b, 0x57, 0x36, 0x0f, 0xd6, 0xc6, 0xe4, 0x1d, 0x9c, 0xeb, 0x0d, 0xd6, 0xf0, 0x3c, 0xc9, 0x06, 0x6f, 0x1d, 0xd9, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x0d, 0xd9, 0x5c, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0xc4, 0x64, 0x73, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0xff, 0xe6, 0x6c, 0x88, 0xe6, 0x86, 0x37, 0xee, 0x0e, 0x4d, 0xb8, 0x0e, 0x8e, 0xcc, 0xaa, 0x1b, 0x9e, 0x27, 0xd9, 0xe0, 0xad, 0x23, 0x9b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0xa5, 0x21, 0x9b, 0x1b, 0x3e, 0x77, 0x19, 0x1c, 0xde, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x2f, 0x5d, 0xd9, 0xdc, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x46, 0xd9, 0xdc, 0xf0, 0xf5, 0xcb, 0x06, 0x6b, 0x63, 0xf2, 0x36, 0x58, 0x28, 0xfb, 0xb4, 0x41, 0x33, 0x9d, 0x03, 0x6b, 0x50, 0x74, 0x1a, 0x6f, 0xd0, 0x02, 0xe8, 0xc0, 0x06, 0xaf, 0x8c, 0xa9, 0x39, 0x8c, 0xcb, 0x41, 0x33, 0x66, 0x16, 0x1b, 0x9e, 0x27, 0xd9, 0xe0, 0x71, 0x30, 0x9b, 0x1b, 0xac, 0x8b, 0x3b, 0xda, 0xe0, 0x69, 0x2e, 0x9b, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x97, 0xcb, 0x6c, 0x6e, 0x50, 0xf0, 0x61, 0xae, 0xe1, 0xdf, 0x9c, 0x0d, 0xd1, 0xdc, 0xf0, 0xc6, 0xdd, 0xc1, 0x41, 0xbc, 0xfb, 0x60, 0xe9, 0xd7, 0xeb, 0x86, 0xe7, 0x49, 0x36, 0x78, 0x1c, 0xcc, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x9a, 0xcb, 0xe6, 0x86, 0xcf, 0x5d, 0x06, 0x87, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0xdb, 0x70, 0x36, 0x37, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x33, 0x6b, 0x36, 0x37, 0x7c, 0xfd, 0xb2, 0xc1, 0x5a, 0x85, 0xba, 0x0d, 0x16, 0xca, 0x3e, 0x6d, 0xd0, 0x4c, 0xe7, 0xc0, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0xb4, 0x00, 0x3a, 0xb0, 0x86, 0x1f, 0x61, 0x06, 0x9e, 0x2e, 0x0c, 0xa7, 0x0f, 0xe3, 0x72, 0xd0, 0x8c, 0x99, 0xc5, 0x86, 0xe7, 0x49, 0x36, 0x78, 0x64, 0xba, 0xe6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0xe2, 0xb9, 0xe6, 0x41, 0xf3, 0xc3, 0x10, 0x07, 0x2b, 0xe9, 0xf4, 0x0f, 0xa7, 0xd8, 0xe1, 0x14, 0x3b, 0x88, 0x20, 0xa0, 0xb6, 0x43, 0xaa, 0xe6, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0x82, 0xd5, 0x20, 0x36, 0x4a, 0xda, 0x06, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0xc4, 0xf0, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x06, 0x71, 0x47, 0xd2, 0x36, 0x48, 0x06, 0xaa, 0xd5, 0x21, 0xb9, 0xb4, 0x06, 0xf1, 0x32, 0xd2, 0x76, 0x10, 0x6b, 0x82, 0x6d, 0x2b, 0x1e, 0xbc, 0xce, 0xc8, 0xe5, 0x20, 0x86, 0x5d, 0xda, 0x56, 0x0c, 0x9e, 0xee, 0x3d, 0x88, 0x35, 0xc1, 0xb6, 0x15, 0x0f, 0x5e, 0x7c, 0x62, 0x79, 0x10, 0x37, 0x31, 0x6d, 0x87, 0x18, 0x0e, 0x82, 0x05, 0xc1, 0xc2, 0x2f, 0xfc, 0x06, 0xd1, 0x95, 0xd2, 0x76, 0x10, 0xa1, 0x1d, 0x6d, 0x83, 0x64, 0x20, 0x55, 0x77, 0x3c, 0x3e, 0x18, 0xd8, 0xa2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x09, 0xc6, 0xf3, 0x38, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0xf0, 0x98, 0xc4, 0xab, 0xc5, 0x0d, 0x1e, 0xe6, 0xd2, 0xb6, 0x20, 0x58, 0xf8, 0x0d, 0xa2, 0xb2, 0xa1, 0x6d, 0xf8, 0x0d, 0x62, 0x94, 0x71, 0xed, 0x20, 0x0e, 0x2b, 0xd7, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0xcc, 0x4e, 0xb4, 0x1d, 0x9c, 0x9f, 0x68, 0x0f, 0x69, 0xb8, 0xe3, 0xd0, 0xe2, 0x1a, 0xc4, 0x8b, 0x8c, 0xda, 0x41, 0x94, 0xcd, 0xa8, 0x35, 0x08, 0x16, 0x7e, 0x83, 0xa8, 0x6c, 0x68, 0x1b, 0x7e, 0x83, 0x18, 0x65, 0x5c, 0x1b, 0x24, 0x03, 0xeb, 0x75, 0x07, 0xe3, 0x5d, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0x65, 0x43, 0xdb, 0xf0, 0x0b, 0xbf, 0xf1, 0xfc, 0x20, 0x8a, 0xf5, 0xd8, 0x0e, 0xd6, 0xf2, 0x09, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0xe1, 0x37, 0x88, 0xd9, 0x89, 0xb6, 0x83, 0x53, 0x18, 0xee, 0x41, 0x39, 0x94, 0x74, 0xe8, 0xa0, 0x71, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x57, 0x10, 0x2c, 0xfc, 0x06, 0x11, 0xda, 0xd1, 0x76, 0xb0, 0x7a, 0x13, 0xed, 0x60, 0xd9, 0x86, 0xd4, 0x20, 0x58, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0xb0, 0x1b, 0xd6, 0xf7, 0x36, 0xc4, 0x70, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0xf1, 0x05, 0xd3, 0x76, 0xe8, 0xa0, 0x71, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf0, 0x1b, 0x0c, 0xd6, 0xd8, 0x83, 0x08, 0xed, 0x68, 0x3b, 0x58, 0xd6, 0xc2, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0x3a, 0x18, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0xe2, 0x8d, 0xb2, 0xed, 0xe0, 0xf0, 0x4e, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xc4, 0x1b, 0x65, 0xdb, 0x41, 0x6b, 0xae, 0x2a, 0xc7, 0xa1, 0xe3, 0xd0, 0x82, 0x60, 0x71, 0x0e, 0xe2, 0x01, 0x9b, 0x6d, 0x71, 0x10, 0x2c, 0xfc, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0xbf, 0x41, 0xe4, 0x76, 0xb4, 0x1d, 0x9c, 0x9f, 0x68, 0x0f, 0x0e, 0x34, 0xb7, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0x5d, 0xb8, 0x0d, 0xa2, 0x17, 0x9b, 0xed, 0xd0, 0x48, 0x70, 0x71, 0x83, 0xf8, 0x86, 0x52, 0x6b, 0xd8, 0x85, 0xdb, 0x20, 0x72, 0xb5, 0xd9, 0x0e, 0x8d, 0x04, 0x57, 0x3c, 0x88, 0x88, 0x29, 0xb5, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x79, 0x75, 0x48, 0x2e, 0x1d, 0x3a, 0x11, 0x2d, 0x08, 0x16, 0x24, 0x03, 0xa5, 0xeb, 0x90, 0x5c, 0x3a, 0x74, 0x3f, 0x3a, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0x20, 0x82, 0x5d, 0xd9, 0x0e, 0x8d, 0x04, 0x57, 0x3c, 0x88, 0xb8, 0x2c, 0xb5, 0x35, 0x58, 0x83, 0x02, 0x34, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x41, 0x54, 0x36, 0xb4, 0x0d, 0xbf, 0x41, 0x8c, 0x32, 0xae, 0x1d, 0x0c, 0x39, 0xeb, 0x83, 0x41, 0x79, 0x35, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0x61, 0x37, 0x68, 0x71, 0x0a, 0x66, 0x43, 0x0c, 0x37, 0xc4, 0x70, 0xf1, 0x20, 0xc6, 0xc2, 0xd4, 0x06, 0xc1, 0x06, 0x91, 0xdc, 0xd9, 0x76, 0xb0, 0x68, 0xfd, 0x67, 0x61, 0x37, 0x68, 0x70, 0x3f, 0x69, 0x43, 0x0c, 0x37, 0xc4, 0x70, 0xf1, 0x20, 0x4e, 0xca, 0xd4, 0x06, 0xc1, 0x06, 0x91, 0xdc, 0xd9, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x3d, 0x58, 0xde, 0x58, 0x72, 0x1c, 0x5a, 0xd8, 0x85, 0xdb, 0x10, 0xc3, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0x65, 0x43, 0xdb, 0x41, 0xf4, 0xa5, 0xae, 0x1d, 0xbc, 0xe7, 0x30, 0x63, 0x43, 0x0c, 0x37, 0xc4, 0x70, 0x83, 0x98, 0xb6, 0x5d, 0x1b, 0x76, 0xe1, 0x36, 0x1c, 0xed, 0x07, 0x11, 0x63, 0xda, 0xb6, 0x20, 0x58, 0xf8, 0x0d, 0x62, 0x20, 0xb3, 0xed, 0xe0, 0xb4, 0x4b, 0x3b, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0xa2, 0xb2, 0xa1, 0xed, 0xe0, 0x90, 0xaa, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0xa2, 0xb2, 0xa1, 0x6d, 0xf8, 0x0d, 0x62, 0x94, 0x71, 0xed, 0x20, 0x7a, 0xf9, 0xd7, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x0c, 0xfc, 0x90, 0x83, 0xa4, 0x01, 0x84, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0xb4, 0xc1, 0x39, 0x72, 0x77, 0x10, 0x2c, 0xfc, 0x06, 0x51, 0xd9, 0xd0, 0x36, 0xfc, 0x06, 0x31, 0xca, 0xb8, 0x76, 0xd0, 0x6a, 0x1e, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa4, 0x01, 0x84, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0x2a, 0x1b, 0xda, 0x86, 0xdf, 0x20, 0x46, 0x19, 0xd7, 0x06, 0xc9, 0x40, 0xd3, 0xbe, 0x83, 0xf1, 0xae, 0x33, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0x07, 0xd1, 0x9e, 0xda, 0x36, 0xfc, 0xc6, 0xf3, 0x83, 0xe8, 0x44, 0x6d, 0x3b, 0x0e, 0x1d, 0x87, 0x16, 0x76, 0x83, 0xf7, 0xf9, 0xd3, 0x6c, 0x88, 0xe1, 0x86, 0x18, 0x6e, 0x10, 0x67, 0x36, 0x6d, 0x83, 0x60, 0x83, 0x66, 0x18, 0x95, 0x0e, 0x1a, 0x9d, 0x50, 0x3a, 0xc4, 0x70, 0x10, 0x2c, 0xfc, 0x06, 0xd1, 0x58, 0xd1, 0x36, 0xfc, 0x06, 0x31, 0xca, 0xb8, 0x36, 0x48, 0x36, 0x68, 0xfa, 0xf5, 0xfe, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x0e, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0x06, 0xd1, 0x58, 0xd1, 0x36, 0xfc, 0x06, 0x31, 0xca, 0xb8, 0x36, 0x48, 0x06, 0x0c, 0xd7, 0xbe, 0x83, 0xf1, 0xae, 0x73, 0x1c, 0x3a, 0x0e, 0x1d, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0x10, 0x81, 0xe5, 0x6c, 0x87, 0x46, 0x82, 0x2b, 0x1e, 0x44, 0x36, 0x9d, 0xda, 0x82, 0x60, 0x83, 0xe8, 0x44, 0x6d, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0x51, 0xd9, 0xd0, 0x36, 0x48, 0x06, 0xfa, 0x7f, 0x1d, 0x92, 0x4b, 0x87, 0x4e, 0x44, 0xc7, 0xa1, 0x35, 0x48, 0x5b, 0xa0, 0x3e, 0x18, 0x99, 0xbd, 0x87, 0x18, 0x0e, 0xbb, 0x70, 0x1b, 0xc4, 0x32, 0x2c, 0xdb, 0xa1, 0x91, 0xe0, 0x8a, 0x07, 0x71, 0xb7, 0xa7, 0xb6, 0x20, 0xd8, 0x20, 0x3a, 0x51, 0xdb, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0x54, 0x36, 0xb4, 0x1d, 0x44, 0x63, 0xa8, 0xd2, 0xa1, 0x05, 0xd8, 0x71, 0xe8, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x83, 0xf8, 0xa7, 0x65, 0x3b, 0x34, 0x12, 0x5c, 0xf1, 0x20, 0xbe, 0xff, 0xd4, 0x0e, 0x22, 0xf2, 0xb3, 0x6d, 0xd8, 0x85, 0xdb, 0x20, 0x12, 0x6e, 0xd9, 0x0e, 0x8d, 0x04, 0xd7, 0x20, 0x82, 0x80, 0xdb, 0xd6, 0x60, 0x0d, 0x0a, 0xd0, 0x20, 0xd8, 0x20, 0xf2, 0x3f, 0xdb, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0xab, 0x21, 0x86, 0x1b, 0xc4, 0x46, 0x49, 0xdb, 0x20, 0xd8, 0x20, 0x3a, 0x51, 0xdb, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0x54, 0x36, 0xb4, 0x1d, 0xbc, 0xc5, 0x28, 0xe1, 0xd0, 0x89, 0xe8, 0x38, 0xb4, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x83, 0x60, 0x83, 0x78, 0x32, 0x6d, 0x3b, 0x58, 0xc2, 0xff, 0xb3, 0x21, 0x86, 0x1b, 0x62, 0xb8, 0x41, 0x4c, 0xdb, 0xae, 0x0d, 0xbb, 0x70, 0x1b, 0x8e, 0xf6, 0x83, 0x98, 0x30, 0x6e, 0x5b, 0x10, 0x6c, 0x10, 0x9d, 0xa8, 0x6d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0x3d, 0xb5, 0x6d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0xf4, 0xac, 0xb6, 0x1d, 0x44, 0x12, 0x78, 0xca, 0x71, 0xe8, 0x38, 0xb4, 0xc1, 0x39, 0x72, 0x77, 0x10, 0x6c, 0x10, 0xdb, 0xad, 0x6d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xc2, 0x9e, 0xfa, 0x20, 0x02, 0x5f, 0xdb, 0x8e, 0x43, 0x0b, 0xbb, 0x41, 0xbb, 0x0b, 0x4e, 0x1b, 0x62, 0xb8, 0x21, 0x86, 0x1b, 0xc4, 0x99, 0x4d, 0xdb, 0x20, 0xd8, 0xa0, 0x19, 0x46, 0xa5, 0x83, 0x22, 0x78, 0xf0, 0x10, 0xc3, 0x83, 0xe8, 0xa3, 0x6d, 0x3b, 0x0e, 0x1d, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0x10, 0x51, 0xec, 0x6c, 0x87, 0x46, 0x82, 0x2b, 0x1e, 0xc4, 0x2e, 0xa2, 0xda, 0x41, 0x6c, 0xf5, 0xb6, 0x0d, 0xbb, 0x70, 0x1b, 0x44, 0x19, 0x3c, 0xdb, 0xa1, 0x91, 0xe0, 0x8a, 0x07, 0xd1, 0xb4, 0xa8, 0xb6, 0x20, 0xd8, 0x20, 0x3a, 0x51, 0xdb, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x7b, 0x6a, 0xdb, 0xa1, 0x13, 0xd1, 0x71, 0xe8, 0x20, 0x4e, 0x3b, 0xdb, 0x86, 0x5d, 0xb8, 0x0d, 0x62, 0x57, 0x9e, 0xed, 0xd0, 0x48, 0x70, 0xc5, 0x83, 0x58, 0x85, 0x54, 0x3b, 0x88, 0x8d, 0xe8, 0xb6, 0x61, 0x17, 0x6e, 0x83, 0xd8, 0x72, 0x67, 0x3b, 0x34, 0x12, 0x5c, 0xf1, 0x20, 0x9e, 0x25, 0xd5, 0x16, 0x04, 0x1b, 0x44, 0x27, 0x6a, 0xdb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x38, 0x26, 0x6e, 0x3b, 0xb4, 0x00, 0x3b, 0x0e, 0x1d, 0x62, 0x38, 0xec, 0xc2, 0x6d, 0x10, 0xc5, 0xf4, 0x6c, 0x87, 0x46, 0x82, 0x2b, 0x1e, 0xc4, 0xd7, 0xa5, 0xda, 0x41, 0x94, 0x55, 0xb7, 0x0d, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x6e, 0x83, 0xb8, 0xb7, 0x67, 0x3b, 0x34, 0x12, 0x5c, 0x3c, 0x88, 0x1b, 0x4d, 0xb5, 0x83, 0xd8, 0xea, 0x6d, 0x5b, 0xdc, 0x20, 0x96, 0x8f, 0xd4, 0x06, 0x9f, 0x03, 0x4d, 0xc6, 0x05, 0xae, 0x78, 0xf0, 0xea, 0x17, 0xba, 0x0d, 0xd6, 0x68, 0x2b, 0x1c, 0x84, 0x14, 0xf8, 0x8a, 0x07, 0x51, 0xb5, 0xa4, 0xb6, 0xc1, 0x39, 0x72, 0xf7, 0x20, 0x04, 0xc0, 0x87, 0xdd, 0xb0, 0x16, 0xba, 0x21, 0x86, 0x6b, 0xd0, 0x4a, 0x69, 0xfe, 0x06, 0x6b, 0xb4, 0x15, 0x0e, 0xc6, 0x85, 0xd9, 0x21, 0x86, 0xc7, 0xa1, 0xe3, 0xf1, 0x0a, 0x82, 0x0d, 0xe2, 0x32, 0xc5, 0x64, 0x71, 0x83, 0x35, 0x28, 0x40, 0x83, 0x60, 0x83, 0xc8, 0xff, 0x6c, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0xac, 0xb0, 0x1b, 0xf2, 0x58, 0x1b, 0x62, 0xb8, 0x21, 0x86, 0x1b, 0xc4, 0xde, 0x60, 0xdb, 0x20, 0xd8, 0x20, 0x3a, 0x51, 0xdb, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x7b, 0x6a, 0xdb, 0xc1, 0x40, 0x2f, 0x3b, 0x0e, 0xad, 0x21, 0x86, 0x1b, 0x44, 0x07, 0x61, 0xdb, 0x20, 0xd8, 0x20, 0x3a, 0x51, 0xdb, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x7b, 0x6a, 0xdb, 0xa1, 0x29, 0xd0, 0x71, 0x68, 0x61, 0x37, 0x68, 0x71, 0x0a, 0x66, 0x43, 0x0c, 0x37, 0xc4, 0x70, 0xf1, 0xa0, 0x88, 0x24, 0x18, 0x04, 0x1b, 0x44, 0x27, 0x6a, 0xdb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xb8, 0xf3, 0x6d, 0x3b, 0x58, 0xb4, 0xfe, 0x73, 0x1c, 0x5a, 0xd8, 0x0d, 0x1a, 0xdc, 0x4f, 0xda, 0x10, 0xc3, 0x0d, 0x31, 0x5c, 0x3c, 0x88, 0x42, 0x57, 0xb5, 0x41, 0xb0, 0x41, 0x74, 0xa2, 0xb6, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x3b, 0xdf, 0xb6, 0x83, 0xd8, 0x28, 0x6d, 0x3b, 0x0e, 0x2d, 0xec, 0x06, 0xe3, 0x3b, 0x79, 0x43, 0x0c, 0x37, 0xc4, 0x70, 0xf1, 0xe0, 0x44, 0xeb, 0x31, 0x08, 0x36, 0x88, 0x4e, 0xd4, 0xb6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x71, 0xe7, 0xdb, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x9d, 0xa0, 0x7a, 0x1f, 0x87, 0x8e, 0x43, 0x0b, 0xbb, 0xc1, 0xfb, 0xfc, 0x69, 0x36, 0xc4, 0x70, 0x43, 0x0c, 0x37, 0x88, 0xe9, 0xd5, 0x8f, 0x41, 0xb0, 0x41, 0x74, 0xa2, 0xb6, 0x1d, 0x34, 0x3a, 0xa1, 0x74, 0x88, 0xe1, 0x41, 0xf4, 0xd1, 0xb6, 0x1d, 0x87, 0x8e, 0xc7, 0x0b, 0x92, 0x81, 0xdd, 0xab, 0xe3, 0xf1, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x61, 0x37, 0x58, 0x15, 0xf5, 0xb1, 0x41, 0x14, 0x4e, 0xb6, 0x1d, 0x4e, 0xb1, 0xe3, 0xf1, 0x20, 0xd8, 0x60, 0x59, 0x18, 0xcc, 0xe2, 0x20, 0xd8, 0xe0, 0xb0, 0xfa, 0x3e, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x90, 0xb5, 0x1b, 0x7e, 0xe3, 0xf9, 0x06, 0x91, 0xab, 0xcd, 0xb6, 0x86, 0x18, 0x6e, 0x68, 0x24, 0xb8, 0x21, 0x86, 0x1b, 0x62, 0xb8, 0x21, 0x86, 0x07, 0x71, 0xe3, 0x12, 0x34, 0x6e, 0xf0, 0x9a, 0xdb, 0xbc, 0x83, 0xd8, 0x30, 0x4c, 0x3b, 0x0e, 0x1d, 0x8f, 0x37, 0x88, 0xd3, 0xf7, 0xb6, 0x15, 0x04, 0x1b, 0x3c, 0x26, 0xf1, 0x6a, 0x71, 0x43, 0x34, 0x37, 0x78, 0xef, 0x94, 0xd5, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0x65, 0x43, 0xdb, 0xf0, 0x1b, 0xc4, 0x28, 0xe3, 0xda, 0x41, 0x8b, 0x20, 0x27, 0x07, 0x43, 0x93, 0x6a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x71, 0x0d, 0x62, 0x29, 0x5a, 0x6d, 0x83, 0x28, 0x9b, 0x51, 0xab, 0xe3, 0xd0, 0x41, 0xec, 0x2f, 0xb6, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0xc4, 0x28, 0x29, 0xdb, 0xe2, 0xb0, 0x1b, 0xc4, 0x61, 0x29, 0xdb, 0x1a, 0xac, 0xd1, 0x56, 0x18, 0x04, 0x1b, 0x44, 0x2b, 0x62, 0xdb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x64, 0xf1, 0xe9, 0x0d, 0x16, 0x40, 0xcc, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe1, 0x37, 0x88, 0xca, 0x86, 0xb6, 0x83, 0x58, 0x64, 0x5c, 0x3b, 0x48, 0xc3, 0x81, 0x3f, 0x48, 0x17, 0x1c, 0x3a, 0x74, 0xd0, 0x38, 0x0e, 0x0d, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x6e, 0x83, 0x78, 0x41, 0x65, 0x3b, 0x44, 0xf3, 0x60, 0xb5, 0xc5, 0xc3, 0xf1, 0xf8, 0x20, 0x4e, 0xdf, 0xdb, 0x0e, 0xe2, 0xf4, 0xbd, 0x6d, 0x83, 0x38, 0x7d, 0x6f, 0x5b, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x06, 0xe7, 0xc8, 0xdd, 0x41, 0xb0, 0x41, 0x6c, 0xb7, 0xb6, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xa4, 0x6a, 0x86, 0xdf, 0x78, 0x3e, 0x48, 0x06, 0xee, 0xab, 0x43, 0x72, 0xe9, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0xc1, 0x39, 0x72, 0x77, 0x10, 0x2c, 0x08, 0x36, 0x88, 0xea, 0xd7, 0xb6, 0x41, 0xb0, 0x71, 0x68, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0x83, 0xa8, 0x6c, 0x68, 0x1b, 0x7e, 0x83, 0x18, 0x65, 0x5c, 0x1b, 0x24, 0x03, 0x82, 0xb5, 0xef, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x41, 0xdc, 0x3e, 0xb4, 0x1d, 0xa4, 0x86, 0x9d, 0x1c, 0x87, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x20, 0x2a, 0x1b, 0xda, 0x0e, 0xe2, 0xe3, 0x74, 0x6d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe1, 0x17, 0x7e, 0x83, 0xa8, 0x6c, 0x68, 0x3b, 0x88, 0x0c, 0x8f, 0xb6, 0x83, 0xf3, 0x13, 0xed, 0xc1, 0x69, 0x97, 0xf6, 0x38, 0x74, 0x1c, 0x1a, 0x04, 0x0b, 0xbf, 0x41, 0x34, 0x56, 0xb4, 0x1d, 0xc4, 0x8e, 0x6b, 0xdb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xc3, 0x5e, 0xe1, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x86, 0x18, 0x2e, 0x0e, 0xbb, 0xa1, 0x6b, 0xe6, 0xc2, 0x6e, 0x58, 0xdf, 0xdb, 0x10, 0xc3, 0x83, 0x55, 0xfd, 0x22, 0x1b, 0x9c, 0x23, 0x77, 0x07, 0xc1, 0xc2, 0x2f, 0xfc, 0x06, 0xe3, 0x5d, 0xe7, 0x60, 0xd5, 0x49, 0xda, 0x41, 0xec, 0xb8, 0xb6, 0x1d, 0x2c, 0xe6, 0xf3, 0x3a, 0x1e, 0x1f, 0x87, 0x8e, 0xc7, 0xc7, 0xe3, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0x83, 0xf8, 0x38, 0x5d, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x08, 0x36, 0x88, 0x39, 0xc6, 0xb5, 0x83, 0x74, 0xc1, 0xa1, 0x43, 0xa3, 0x96, 0xe3, 0xd0, 0xf1, 0x78, 0x71, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0xe1, 0x17, 0x7e, 0x43, 0x72, 0x69, 0xf8, 0x05, 0xc9, 0x40, 0xf1, 0x3a, 0x24, 0x97, 0x0e, 0x0e, 0x1e, 0xb5, 0x07, 0x25, 0x5d, 0xd4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x8f, 0x43, 0xc3, 0x68, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x88, 0xa4, 0x09, 0xb7, 0x83, 0xd5, 0x9b, 0x68, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x12, 0x6e, 0x4f, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0x83, 0x48, 0x9a, 0x70, 0x1b, 0x24, 0x03, 0xab, 0x4e, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0xda, 0x20, 0xe1, 0xf6, 0xe4, 0x90, 0xaa, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x05, 0xc1, 0xe2, 0x06, 0xd1, 0x9c, 0xae, 0xd1, 0xe2, 0x20, 0x58, 0x5c, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe1, 0x17, 0x7e, 0xc3, 0x0a, 0xed, 0x41, 0x94, 0x4e, 0xb8, 0x1d, 0x1c, 0x3c, 0x6a, 0x0f, 0x56, 0x6f, 0xa2, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x41, 0xfc, 0xc9, 0x9e, 0x1d, 0x44, 0x41, 0xf5, 0xd9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xa1, 0x58, 0xb4, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0xe5, 0x50, 0xd2, 0x41, 0x8a, 0xf2, 0xf3, 0xa1, 0xf1, 0xfc, 0x71, 0x68, 0x10, 0x6c, 0x10, 0xfb, 0xba, 0x67, 0x1b, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x10, 0xf3, 0xcb, 0x67, 0x83, 0x64, 0x60, 0xd5, 0xe9, 0x60, 0xbc, 0xeb, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x18, 0x8a, 0x45, 0x07, 0x69, 0x09, 0x0b, 0xc7, 0xa1, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc2, 0x2f, 0xfc, 0xc2, 0x6f, 0xc8, 0x56, 0x1c, 0x44, 0xe9, 0x84, 0xdb, 0xa1, 0x8b, 0xc9, 0xc1, 0xb8, 0x83, 0x3a, 0x58, 0x15, 0x8d, 0x74, 0xf0, 0x7e, 0x88, 0x9c, 0x41, 0xb0, 0xc1, 0xea, 0x65, 0xae, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x03, 0x3f, 0x64, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0xe6, 0x97, 0xcf, 0x0e, 0x0e, 0x3c, 0xbb, 0x07, 0x6d, 0xf9, 0x00, 0x1c, 0x8c, 0xf0, 0xb4, 0xe3, 0xd0, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0x8c, 0xe0, 0xd3, 0x83, 0x92, 0xa1, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x7b, 0x75, 0x00, 0xc3, 0x6f, 0x3c, 0xdf, 0xa0, 0x84, 0x91, 0xd8, 0x20, 0x01, 0x5b, 0x60, 0x83, 0x45, 0xa5, 0x43, 0x1b, 0xac, 0x53, 0x16, 0x5a, 0x82, 0xf4, 0xfc, 0x1a, 0xa4, 0x2d, 0x50, 0x6f, 0x90, 0xb6, 0x42, 0x32, 0xc1, 0xfa, 0xfc, 0x12, 0xb4, 0x9f, 0x5f, 0x82, 0xf7, 0xe7, 0xd7, 0x60, 0x1d, 0x33, 0xd8, 0x20, 0xd8, 0x20, 0x32, 0x7f, 0xd8, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0x31, 0xbf, 0x7c, 0x76, 0x30, 0xe4, 0xac, 0x07, 0xc9, 0x40, 0xb8, 0x06, 0xd1, 0xc2, 0x4e, 0x20, 0xfc, 0xf3, 0x8f, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x12, 0x53, 0x8b, 0x1b, 0xac, 0x63, 0x06, 0x5b, 0x83, 0xb4, 0x05, 0xea, 0x0d, 0xd2, 0x56, 0x48, 0x0e, 0xd1, 0x5c, 0x83, 0x75, 0xcc, 0x60, 0x83, 0x60, 0xe1, 0x37, 0x88, 0xf8, 0xaf, 0xb5, 0x83, 0x56, 0xf3, 0x98, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xf2, 0xb5, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0xb8, 0x41, 0xda, 0x02, 0xf5, 0x41, 0xfa, 0x49, 0xf5, 0xf1, 0xf8, 0x38, 0x74, 0x88, 0xe1, 0xf1, 0xf8, 0x38, 0x34, 0xec, 0x86, 0xf5, 0xbd, 0x0d, 0x31, 0x1c, 0x7e, 0xc3, 0xb8, 0x6c, 0x1c, 0xda, 0x90, 0x3a, 0x38, 0x88, 0xbc, 0xc0, 0xb6, 0xe3, 0xd0, 0xf1, 0xf8, 0xa0, 0x64, 0x68, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0xfc, 0xc2, 0x6f, 0x48, 0x2e, 0x0d, 0xbf, 0xf0, 0x1b, 0x44, 0xe9, 0x84, 0xdb, 0xa1, 0x8b, 0xc9, 0xc1, 0xb8, 0x83, 0x3a, 0x74, 0x31, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0x31, 0x4a, 0xe3, 0x76, 0x70, 0x7e, 0xa2, 0x3d, 0x34, 0x6a, 0x39, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x8b, 0x1b, 0xc4, 0x1b, 0x34, 0x5b, 0x8b, 0x83, 0x60, 0x61, 0x37, 0x28, 0x2e, 0x0e, 0x17, 0x04, 0x1b, 0x24, 0xb5, 0x1f, 0x1c, 0xac, 0xf7, 0xd8, 0x19, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xdc, 0x86, 0x56, 0xe2, 0x07, 0xe3, 0xa7, 0x6b, 0x10, 0x6c, 0x30, 0x12, 0x70, 0x0e, 0xd6, 0x7b, 0xec, 0x0c, 0x82, 0x0d, 0xe2, 0x96, 0xc3, 0x6d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x50, 0x2c, 0x3a, 0x48, 0xf9, 0x20, 0x3a, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x0b, 0xbf, 0x41, 0xd4, 0x63, 0x9f, 0x1d, 0x44, 0x25, 0x6c, 0xdb, 0xc1, 0xd2, 0x1b, 0xa9, 0x41, 0xb0, 0xb8, 0xc1, 0x52, 0x0c, 0xaa, 0x16, 0x07, 0xc1, 0xe2, 0x82, 0x60, 0x83, 0x91, 0xff, 0xb0, 0x38, 0x08, 0x36, 0x88, 0x5f, 0x13, 0xb7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0xed, 0xd5, 0x01, 0x0c, 0xbf, 0xf1, 0x7c, 0x10, 0x2d, 0xf8, 0xbf, 0x21, 0x9a, 0x07, 0x6f, 0x76, 0x62, 0x18, 0x44, 0x0b, 0xe6, 0x1b, 0xa4, 0x2d, 0x50, 0x6f, 0x90, 0xb6, 0x42, 0x72, 0xb0, 0x4e, 0x59, 0xe8, 0x90, 0xec, 0x38, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0x83, 0x48, 0xd5, 0x70, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x08, 0x36, 0x28, 0x19, 0x9a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x4b, 0x90, 0x3f, 0xdf, 0x60, 0xe0, 0x87, 0x1c, 0x0c, 0xfc, 0x90, 0xe3, 0xd0, 0x41, 0x74, 0x7c, 0xb8, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0xd1, 0x1d, 0xe2, 0x36, 0x08, 0x36, 0x38, 0x07, 0x7f, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xae, 0x9f, 0xcf, 0x06, 0xc1, 0xc6, 0xa1, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x1f, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0x62, 0x7e, 0xf9, 0xec, 0xe0, 0x44, 0x49, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0x82, 0xfe, 0xf9, 0x87, 0xc6, 0xf3, 0xc7, 0xa1, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x8d, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0xb0, 0x7a, 0x1e, 0xe7, 0x90, 0xb5, 0x3b, 0x0e, 0x1d, 0x87, 0x0e, 0x46, 0x78, 0xda, 0x71, 0xe8, 0xa0, 0x1c, 0x4a, 0x3a, 0x1e, 0x1f, 0x8f, 0x0f, 0xe2, 0xa4, 0xfc, 0x6c, 0xc3, 0xc4, 0xad, 0x61, 0xee, 0x07, 0x78, 0xc3, 0xf4, 0xd2, 0xda, 0xea, 0xe8, 0xd0, 0x0d, 0x33, 0xb4, 0x86, 0x19, 0x5a, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6c, 0xf0, 0x84, 0x0d, 0x8c, 0x83, 0xd7, 0x38, 0x64, 0x6e, 0x98, 0xb8, 0x35, 0xd4, 0x91, 0x0d, 0x9e, 0xb0, 0x81, 0x71, 0xf0, 0xae, 0xf9, 0xdd, 0x0d, 0x13, 0xb7, 0xc1, 0xab, 0x2b, 0x30, 0x0e, 0xde, 0xaa, 0x81, 0xb1, 0xe1, 0x44, 0xd8, 0x20, 0xba, 0x9a, 0xdc, 0xd6, 0x70, 0x8e, 0xac, 0x38, 0x08, 0x16, 0x07, 0xf0, 0x22, 0x73, 0x9b, 0x6b, 0x21, 0x7b, 0x6b, 0x0b, 0x4b, 0x73, 0x9b, 0x5b, 0x1c, 0x04, 0x0b, 0xbb, 0x70, 0x8b, 0x07, 0x0f, 0x33, 0x12, 0x3d, 0x44, 0x73, 0x85, 0x5d, 0xb8, 0x0d, 0xd1, 0x3c, 0x88, 0x03, 0x29, 0xb7, 0x0d, 0xe2, 0x40, 0xca, 0xed, 0x70, 0x8a, 0x0d, 0x82, 0x85, 0x5f, 0xf8, 0x0d, 0x89, 0x99, 0x83, 0x67, 0x03, 0xa5, 0x1d, 0xac, 0x4b, 0x05, 0x3b, 0x78, 0xd4, 0x6b, 0xd6, 0xb0, 0x0b, 0xb7, 0x18, 0xf0, 0xc9, 0xa5, 0x9d, 0xa1, 0xd1, 0xcd, 0x87, 0x68, 0xae, 0xb0, 0x0b, 0xb7, 0x21, 0x9a, 0x07, 0xf1, 0x50, 0xe5, 0xb6, 0x41, 0x3c, 0x54, 0xb9, 0x1d, 0x4e, 0xb1, 0x83, 0xb8, 0x9c, 0x72, 0x1b, 0x76, 0xe1, 0x16, 0x03, 0xbc, 0xce, 0xca, 0xe8, 0x5a, 0xe6, 0xe0, 0xc2, 0xee, 0xdc, 0xca, 0xc8, 0x43, 0x34, 0x57, 0xd8, 0x85, 0xdb, 0x10, 0xcd, 0x83, 0x48, 0xba, 0x72, 0xdb, 0x20, 0x92, 0xae, 0xdc, 0x0e, 0xa7, 0xd8, 0x41, 0x5c, 0x4e, 0xb9, 0x2d, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x78, 0x10, 0xd9, 0x50, 0x6e, 0x1b, 0xc4, 0x7f, 0x96, 0xdb, 0xe1, 0x14, 0x1b, 0x04, 0x1b, 0x44, 0xed, 0x94, 0xdb, 0xc1, 0x7a, 0x74, 0xad, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0xf1, 0x78, 0xc5, 0xc5, 0x00, 0x82, 0xa4, 0xbe, 0x69, 0xc4, 0x26, 0x15, 0x87, 0x42, 0x01, 0xf6, 0xc4, 0x31, 0x08, 0x22, 0x97, 0x7c, 0xd0, 0xf4, 0xc3, 0x76, 0x2b, 0x06, 0x9e, 0x1d, 0xe3, 0xbd, 0x06, 0x85, 0x1d, 0xce, 0x18, 0xc0, 0x0f, 0x84, 0xf4, 0x42, 0xb5, 0x87, 0x58, 0x33, 0x10, 0x3a, 0xba, 0xcc, 0xa9, 0x09, 0xf0, 0x6b, 0xf3, 0x4d, 0xdc, 0xb8, 0x75, 0x88, 0xe1, 0x86, 0x18, 0x2e, 0x06, 0x10, 0xf4, 0xc8, 0xd0, 0x56, 0x68, 0x90, 0x16, 0x66, 0xef, 0xc1, 0x8e, 0x6a, 0x3e, 0xe6, 0x45, 0x01, 0x29, 0xa3, 0x90, 0x12, 0x5e, 0x0c, 0x3c, 0x58, 0xc6, 0xfb, 0x10, 0xc3, 0xe3, 0xf1, 0x8a, 0x8b, 0x6b, 0x10, 0x97, 0xa7, 0x68, 0xa1, 0x60, 0x83, 0x38, 0x0f, 0x73, 0xdb, 0xa0, 0xb1, 0x49, 0xaf, 0x0d, 0x1a, 0x9b, 0xf4, 0xda, 0xa0, 0xb1, 0x49, 0xaf, 0x0d, 0x62, 0xf5, 0x13, 0x6d, 0x83, 0x58, 0xfd, 0x44, 0xdb, 0x20, 0x56, 0x3f, 0xd1, 0x36, 0x88, 0xd5, 0x4f, 0xb4, 0x0d, 0x62, 0xf5, 0x13, 0xad, 0x71, 0x83, 0xf7, 0x48, 0x26, 0x6e, 0xf0, 0x1e, 0xc9, 0xc4, 0x0d, 0xde, 0x23, 0x99, 0xb8, 0xc1, 0x7b, 0x24, 0x13, 0x0f, 0x9e, 0x4b, 0xf0, 0x78, 0x3c, 0x5e, 0x10, 0xac, 0xf0, 0x1b, 0x44, 0x10, 0x4f, 0xcf, 0x21, 0x75, 0xb0, 0xf0, 0x0b, 0x82, 0x85, 0x5f, 0xf8, 0x0d, 0xe3, 0x72, 0xf0, 0x6c, 0xa0, 0xb4, 0x83, 0x37, 0x02, 0x94, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x7e, 0x10, 0xe9, 0x29, 0x3d, 0xc7, 0xa1, 0x43, 0xea, 0x60, 0xf8, 0x05, 0xc1, 0xc2, 0x6f, 0x10, 0x8d, 0x67, 0x6e, 0x07, 0xaf, 0x6a, 0x12, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x88, 0xc6, 0x33, 0xb7, 0x83, 0xc7, 0xa5, 0x73, 0x0d, 0xbf, 0xf1, 0x7c, 0xf8, 0x0d, 0xa2, 0xf1, 0xcc, 0xed, 0xa0, 0x19, 0xe0, 0xa4, 0xe3, 0xd0, 0x21, 0x75, 0xb0, 0x38, 0x08, 0x56, 0x10, 0x2c, 0xfc, 0x86, 0xe4, 0xd2, 0x41, 0x04, 0xf1, 0xf4, 0x1c, 0xd2, 0x70, 0x0b, 0x82, 0x85, 0xdf, 0x90, 0x5c, 0x3a, 0x88, 0xab, 0x33, 0xb7, 0x43, 0x53, 0xa0, 0x41, 0xb0, 0xf0, 0x1b, 0x92, 0x4b, 0x07, 0x51, 0x99, 0xe6, 0x76, 0x68, 0x01, 0x76, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x71, 0x41, 0xb0, 0xb8, 0xe1, 0x14, 0xdb, 0x70, 0x8a, 0x1d, 0x3c, 0x5e, 0xa2, 0x62, 0x71, 0x10, 0xac, 0x20, 0x58, 0xf8, 0x0d, 0xc9, 0xa5, 0xe1, 0x17, 0x7e, 0x43, 0xbe, 0xf6, 0xe0, 0xd9, 0x40, 0x69, 0x07, 0xef, 0xbb, 0xed, 0x39, 0xa4, 0xe1, 0x16, 0x04, 0x1b, 0x44, 0x3f, 0x9c, 0xdb, 0xa1, 0x29, 0xd0, 0x06, 0xef, 0xf1, 0xca, 0x58, 0xd8, 0x0d, 0x1a, 0xdc, 0x4f, 0xda, 0x10, 0xc3, 0x61, 0x37, 0x68, 0x2a, 0x41, 0xe9, 0xd0, 0xe6, 0x71, 0x83, 0x31, 0x9d, 0xbc, 0x20, 0xd8, 0x20, 0x6a, 0xa7, 0xdc, 0x0e, 0x96, 0xb7, 0x64, 0x2d, 0x08, 0x36, 0x88, 0xda, 0x29, 0xb7, 0x83, 0x38, 0xe2, 0x67, 0x5b, 0x10, 0x6c, 0x10, 0xb5, 0x53, 0x6e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x16, 0x1e, 0xca, 0x1c, 0x34, 0x2a, 0xce, 0x74, 0x1c, 0x5a, 0x10, 0x6c, 0x10, 0xb5, 0x53, 0x6e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x16, 0x1e, 0xca, 0x1c, 0x3c, 0xf4, 0x91, 0xe9, 0x38, 0x34, 0x08, 0x36, 0x88, 0xda, 0x29, 0xb7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x0b, 0x0f, 0x65, 0x0e, 0x1e, 0x89, 0xc9, 0x74, 0x1c, 0x3a, 0x34, 0x7f, 0x39, 0x1e, 0x0f, 0x82, 0x0d, 0x0a, 0x68, 0xc1, 0xc5, 0x41, 0xb0, 0x82, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x86, 0xdf, 0x20, 0xb2, 0xe2, 0xdc, 0x0e, 0x4a, 0x86, 0xa6, 0x43, 0x1a, 0x6e, 0x41, 0xb0, 0x41, 0xc4, 0xec, 0xb9, 0x1d, 0x9a, 0x02, 0x2d, 0x08, 0x36, 0x88, 0x98, 0x3d, 0xb7, 0x43, 0x27, 0xa2, 0x05, 0xc1, 0x06, 0x11, 0xb3, 0xe7, 0x76, 0xb0, 0x84, 0xff, 0x67, 0x10, 0x6c, 0x10, 0x31, 0x7b, 0x6e, 0x07, 0x45, 0xf0, 0xe0, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x78, 0xbc, 0x41, 0xfb, 0xf3, 0x4b, 0x0b, 0x82, 0xc5, 0x01, 0x9f, 0x2c, 0xcd, 0x6c, 0x6e, 0x71, 0x10, 0x2c, 0xec, 0x06, 0x4b, 0x50, 0xa7, 0xd6, 0x60, 0xfd, 0xea, 0xd4, 0x82, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x06, 0xc1, 0x06, 0x31, 0x9b, 0xe6, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x10, 0x8d, 0x67, 0x6e, 0x07, 0xaf, 0x0e, 0x17, 0x1a, 0x7e, 0xe3, 0xf9, 0x41, 0x04, 0xf1, 0xf4, 0x1c, 0x87, 0x0e, 0x4d, 0x81, 0x16, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0x10, 0x1b, 0xca, 0x41, 0x87, 0x4e, 0x44, 0x83, 0x60, 0xe1, 0x37, 0x24, 0x97, 0x86, 0xdf, 0x20, 0x1a, 0xcf, 0xdc, 0x0e, 0xd6, 0xf2, 0x09, 0x1c, 0xba, 0x1f, 0x2d, 0xec, 0xc2, 0x6d, 0x88, 0xe6, 0x78, 0x10, 0xa5, 0x7f, 0x6e, 0x1b, 0xc4, 0x83, 0xa1, 0xdb, 0xe1, 0x14, 0x1b, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0x34, 0x08, 0x36, 0x88, 0xba, 0x33, 0xb7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x6f, 0x10, 0x8d, 0x67, 0x6e, 0x07, 0x2f, 0xd1, 0x28, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x88, 0xc6, 0x33, 0xb7, 0x83, 0x71, 0x07, 0x35, 0xfc, 0xc6, 0xf3, 0x83, 0x74, 0xbe, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0xd0, 0x41, 0xe3, 0xd0, 0xfc, 0xe5, 0x78, 0xbc, 0x20, 0xd8, 0x20, 0x66, 0xd3, 0xdc, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x88, 0xe1, 0xe2, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0xc2, 0x6f, 0x58, 0xfb, 0x3d, 0x78, 0x36, 0x50, 0xda, 0xc1, 0xba, 0x54, 0xb0, 0x83, 0x87, 0xe4, 0x5f, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x0f, 0x16, 0xc3, 0xd6, 0x1c, 0x87, 0x56, 0x5c, 0x0c, 0xa0, 0x67, 0xd9, 0xbf, 0x66, 0x98, 0x48, 0x19, 0x4c, 0xfd, 0x95, 0xcb, 0x7d, 0x2e, 0x5c, 0x51, 0x9e, 0xf1, 0xcf, 0x80, 0x47, 0xac, 0x18, 0x78, 0x20, 0x87, 0xe7, 0x1a, 0x8e, 0xf6, 0x31, 0x80, 0xa0, 0xf4, 0x0f, 0x85, 0x9c, 0x92, 0xf3, 0x46, 0x69, 0x46, 0x7b, 0x75, 0xbc, 0xe3, 0x29, 0x9e, 0x7d, 0x4e, 0x01, 0xb8, 0xf5, 0x18, 0x40, 0x50, 0x00, 0x46, 0x97, 0x3a, 0x3b, 0x17, 0x79, 0x87, 0xdd, 0x78, 0xd4, 0xc5, 0x08, 0xc1, 0x4b, 0x26, 0x34, 0x67, 0xb3, 0x61, 0x31, 0x80, 0x20, 0x75, 0xa5, 0x6b, 0xc3, 0xbc, 0xea, 0x9f, 0xb1, 0x10, 0x0a, 0x93, 0xf0, 0xc7, 0xa4, 0xe9, 0x61, 0x4c, 0x08, 0x12, 0xc6, 0x62, 0x00, 0x3d, 0x73, 0xdd, 0x78, 0x8b, 0xe1, 0xbf, 0x04, 0xd3, 0xa9, 0x26, 0x46, 0x61, 0x10, 0x8c, 0x47, 0x08, 0xf9, 0xcb, 0xee, 0x73, 0x31, 0xf0, 0x4a, 0xa7, 0xd6, 0x31, 0x80, 0xa0, 0xfd, 0x52, 0x57, 0xd7, 0xb2, 0x02, 0x8e, 0x82, 0x3a, 0x5e, 0x2f, 0x1e, 0x7c, 0xa9, 0xf1, 0xf8, 0x58, 0x45, 0xc8, 0xfb, 0xf1, 0x78, 0xc5, 0xc5, 0x00, 0x82, 0x02, 0xc7, 0xf0, 0xa1, 0xe1, 0xab, 0xa4, 0xaa, 0x53, 0x58, 0x9f, 0x2d, 0x6b, 0x26, 0x98, 0xb8, 0x5c, 0x38, 0x7b, 0x0c, 0x6b, 0x88, 0xe1, 0x8a, 0xc1, 0xe5, 0x34, 0x06, 0xf0, 0x23, 0xe1, 0x8f, 0x98, 0x78, 0xec, 0xc6, 0x29, 0x19, 0xb0, 0xfe, 0x97, 0xa9, 0xe7, 0x2b, 0xd8, 0xbb, 0xa9, 0x88, 0xbb, 0x8e, 0x01, 0xd4, 0x90, 0xa3, 0x15, 0x67, 0x02, 0xb1, 0x23, 0xb8, 0x99, 0xe7, 0x5f, 0x47, 0x63, 0x05, 0x96, 0xf9, 0x4a, 0x70, 0x0f, 0x5f, 0x0c, 0xa0, 0x67, 0x7d, 0x9a, 0xa1, 0x30, 0xf3, 0xc2, 0x3f, 0x36, 0x38, 0x8d, 0x82, 0x35, 0x6d, 0x83, 0xb3, 0x05, 0x62, 0x67, 0xbd, 0x2e, 0x06, 0xf0, 0x03, 0x48, 0xa7, 0xb7, 0xcb, 0x4e, 0xa4, 0x04, 0x24, 0xaa, 0x3f, 0x80, 0x4a, 0xf4, 0x3f, 0x20, 0x29, 0x8f, 0xb6, 0x6d, 0x6d, 0x88, 0xe1, 0x18, 0x40, 0xd0, 0x10, 0xbf, 0xfa, 0x75, 0x77, 0x90, 0x4f, 0x67, 0x73, 0xa5, 0x7f, 0x5b, 0xb9, 0xf2, 0x86, 0x3b, 0xdb, 0x02, 0xc7, 0xed, 0x78, 0xbc, 0xb8, 0x18, 0xc0, 0xbe, 0xf6, 0x63, 0x83, 0xd9, 0x31, 0x93, 0xfa, 0x29, 0x48, 0xac, 0xb0, 0xa9, 0xbc, 0xa9, 0xdf, 0x73, 0xec, 0x6f, 0x11, 0xa5, 0x9e, 0xdd, 0x8a, 0x60, 0x2b, 0x1b, 0x27, 0x75, 0x4e, 0x3d, 0xb4, 0xad, 0x18, 0xc0, 0x7f, 0x69, 0xa7, 0x1a, 0x89, 0x39, 0xff, 0xc6, 0x42, 0x52, 0x99, 0xf9, 0xdf, 0x6e, 0xdb, 0xfc, 0x3a, 0xcd, 0xdf, 0x2f, 0x40, 0xb8, 0xe5, 0xc1, 0xd2, 0xc5, 0x92, 0xf6, 0xc6, 0x26, 0x1f, 0x91, 0xbf, 0x62, 0x00, 0x02, 0x14, 0x20, 0x87, 0x31, 0xa0, 0x5d, 0xd4, 0x36, 0xc0, 0x5c, 0x7b, 0xe5, 0x8d, 0xab, 0x8b, 0x16, 0xdb, 0x1b, 0xc9, 0xd3, 0x9d, 0x88, 0xc6, 0x1e, 0xcb, 0x5f, 0x51, 0x1c, 0x7b, 0x9a, 0x58, 0x2f, 0x17, 0x03, 0x10, 0x40, 0x65, 0x32, 0x1b, 0x12, 0x6d, 0x1e, 0x31, 0x13, 0x9a, 0xa1, 0x1d, 0x65, 0x90, 0x05, 0xb2, 0xb4, 0xf9, 0xe2, 0xf7, 0x31, 0x9b, 0xc4, 0x7c, 0x72, 0xd0, 0xf9, 0x76, 0xc1, 0x61, 0x77, 0xca, 0xba, 0x18, 0x80, 0x00, 0xd5, 0x10, 0x82, 0x44, 0x94, 0xc1, 0x46, 0x13, 0xa7, 0x17, 0x88, 0xae, 0x1a, 0x9d, 0xf1, 0xa7, 0xff, 0xff, 0xfe, 0x09, 0xa8, 0xb4, 0x0c, 0x0b, 0xbd, 0x3d, 0x19, 0x25, 0x9a, 0x4f, 0x70, 0xd7, 0xc5, 0x00, 0x04, 0x78, 0xd0, 0x81, 0xd2, 0x85, 0x10, 0x2e, 0x0b, 0xe8, 0x8a, 0x66, 0x10, 0xf0, 0xb7, 0x9d, 0x8f, 0x66, 0x2c, 0xa1, 0x20, 0x64, 0x36, 0xb8, 0x8f, 0x0d, 0x4f, 0x3b, 0xe8, 0x04, 0x1c, 0x60, 0x3a, 0x2f, 0x06, 0x20, 0x00, 0x26, 0x52, 0xee, 0x14, 0xcc, 0x81, 0x9f, 0x39, 0x48, 0x48, 0x72, 0xb5, 0x8f, 0x01, 0x09, 0xf5, 0x67, 0xa2, 0x1a, 0x73, 0xf0, 0xc3, 0xf6, 0x87, 0x8b, 0xab, 0x76, 0x78, 0x2b, 0x41, 0xbf, 0x7e, 0x0c, 0x40, 0x80, 0xdf, 0x74, 0x17, 0x8f, 0x12, 0x8e, 0x28, 0xf0, 0x82, 0xef, 0xb0, 0x63, 0xc2, 0xe5, 0xaa, 0xaf, 0xcf, 0x09, 0x03, 0xdf, 0xf6, 0xd7, 0x47, 0x0b, 0x66, 0x95, 0xfe, 0xe7, 0x93, 0x49, 0xce, 0xd5, 0x62, 0x00, 0x02, 0x28, 0x1d, 0xb6, 0xba, 0x42, 0x08, 0x9c, 0x2f, 0x4d, 0x36, 0x7a, 0xd4, 0x56, 0xc0, 0x6e, 0xfa, 0x94, 0xe7, 0x8d, 0x2e, 0x97, 0x59, 0x71, 0x50, 0x60, 0x08, 0x86, 0x3c, 0x2e, 0x14, 0x52, 0xd3, 0x16, 0x03, 0x10, 0xa0, 0x7a, 0x84, 0xea, 0x3f, 0xc0, 0x0f, 0x33, 0x6a, 0x1c, 0xee, 0x2a, 0xd1, 0x11, 0x53, 0x67, 0xd7, 0x37, 0x2d, 0xd8, 0x61, 0xac, 0x33, 0x3b, 0x7e, 0x64, 0xa8, 0x2f, 0x02, 0xf4, 0x1c, 0x42, 0x35, 0x06, 0xd0, 0xef, 0xe6, 0x14, 0x95, 0x12, 0x8b, 0x96, 0xac, 0x18, 0x1c, 0xcd, 0x63, 0x9d, 0xf9, 0x2d, 0xee, 0xbc, 0x91, 0xdd, 0x79, 0x5f, 0xe1, 0x38, 0xf8, 0x7e, 0xa3, 0x21, 0x1c, 0x9f, 0x79, 0x94, 0x92, 0x16, 0x03, 0x10, 0xc0, 0xa8, 0x02, 0xa1, 0x82, 0xc8, 0x12, 0x12, 0x8e, 0x44, 0x89, 0x6e, 0x1e, 0x0e, 0x82, 0x0a, 0x15, 0x02, 0x74, 0xe0, 0xc5, 0xcb, 0xc4, 0xf2, 0x1f, 0xb9, 0x3e, 0x67, 0xf4, 0xdc, 0x74, 0x5a, 0xb6, 0x18, 0x80, 0x00, 0x6d, 0x00, 0x6f, 0x86, 0xd8, 0xea, 0x20, 0x1a, 0x05, 0x25, 0x2b, 0x12, 0x95, 0x40, 0xc8, 0x35, 0x7e, 0x68, 0x0d, 0xed, 0x0a, 0x84, 0x9e, 0x0d, 0xe1, 0xef, 0x3c, 0x7b, 0xaf, 0x36, 0x27, 0x90, 0x31, 0x00, 0x01, 0xf8, 0x08, 0xd7, 0xf2, 0x20, 0x3e, 0x9a, 0x42, 0xbf, 0xf1, 0x5e, 0xda, 0x97, 0xfd, 0x07, 0x6b, 0x62, 0x53, 0xe5, 0x48, 0x5c, 0x27, 0xcf, 0xe0, 0x19, 0xfe, 0xfc, 0x32, 0x6e, 0xd3, 0xc6, 0x9f, 0xc7, 0xe3, 0x65, 0xd6, 0x20, 0x28, 0xb0, 0x36, 0x28, 0x59, 0xd8, 0x67, 0x99, 0x35, 0x88, 0x3c, 0x26, 0xb7, 0x0d, 0x1f, 0xb5, 0x6f, 0x10, 0xb4, 0x3f, 0x6b, 0xf8, 0x5c, 0x69, 0x0d, 0x19, 0xf0, 0x0d, 0x2f, 0xdf, 0x1d, 0x3c, 0xcc, 0x48, 0x74, 0x83, 0x38, 0x39, 0x5b, 0x6a, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0xd8, 0xa8, 0x72, 0x3b, 0x88, 0x8e, 0x61, 0xb7, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x0c, 0xf8, 0x86, 0x97, 0xef, 0x0e, 0xa2, 0xea, 0xca, 0xed, 0x20, 0x3a, 0x86, 0xdd, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0x32, 0xe0, 0x1b, 0x5e, 0xbe, 0x3b, 0x88, 0x6c, 0x28, 0xb7, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x82, 0x07, 0x97, 0x83, 0x32, 0x4b, 0xb7, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0x5b, 0x01, 0xfc, 0xcf, 0xde, 0xca, 0xe4, 0xd8, 0xd2, 0x5a, 0xc6, 0xde, 0xdc, 0xe8, 0xe4, 0xc2, 0xc6, 0xe8, 0xe6, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0x22, 0x8f, 0xc9, 0x6d, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0x44, 0x00, 0x97, 0xdb, 0x0a, 0xf0, 0xb1, 0x85, 0xd5, 0xb9, 0x8d, 0xa1, 0x1b, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x03, 0xcf, 0x8e, 0xf1, 0x5e, 0x0d, 0xe2, 0xc7, 0x34, 0xed, 0xe0, 0xb0, 0xc0, 0xb6, 0x02, 0x3c, 0x6e, 0x61, 0x69, 0x76, 0xe5, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0x05, 0x2f, 0xb7, 0xc3, 0x29, 0xd6, 0x02, 0xf0, 0xc2, 0x96, 0xe6, 0x56, 0x16, 0x26, 0xd7, 0x32, 0x47, 0x17, 0x26, 0xd7, 0x22, 0x57, 0xc6, 0x56, 0x16, 0x36, 0x57, 0x1e, 0x2c, 0x5d, 0x43, 0x3d, 0x9c, 0x62, 0x0b, 0xc0, 0xdf, 0xd8, 0x9b, 0x1b, 0x59, 0x1a, 0x5d, 0xda, 0x9b, 0x5b, 0x18, 0x5b, 0xcb, 0x1c, 0x5d, 0x98, 0x5c, 0x8b, 0x5c, 0x19, 0x5b, 0x59, 0xd8, 0x5c, 0x79, 0xb0, 0x74, 0x0d, 0x75, 0x05, 0xf8, 0xcb, 0xc6, 0xd8, 0xd2, 0xe0, 0xe8, 0xd2, 0xc6, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0x10, 0xc7, 0x5f, 0x6e, 0x87, 0x53, 0x6c, 0x01, 0x3e, 0xb8, 0x3a, 0x31, 0xb6, 0xb4, 0x71, 0xc3, 0x8f, 0x30, 0x1b, 0x6a, 0x7e, 0xe0, 0xc1, 0x32, 0xde, 0x2b, 0x00, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x2d, 0x73, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0xe7, 0xc1, 0xd2, 0x35, 0xd4, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0x5b, 0x01, 0xfe, 0x32, 0x3a, 0xb4, 0x16, 0xba, 0x3c, 0xb8, 0x72, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x37, 0x64, 0xa7, 0x6d, 0x70, 0x74, 0x1d, 0x5c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0xcf, 0x32, 0xb7, 0x31, 0xb9, 0x3c, 0x38, 0xba, 0xb4, 0x37, 0xb7, 0xa5, 0xb2, 0xbc, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x83, 0x08, 0x3b, 0x45, 0x3b, 0x48, 0x3b, 0x8d, 0x5d, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xc2, 0xea, 0xe8, 0xd0, 0xca, 0xdc, 0xe8, 0xd2, 0xc6, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x96, 0xca, 0xf2, 0x0e, 0x22, 0x12, 0xdb, 0x6d, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xd0, 0xc2, 0xe6, 0xa6, 0xe0, 0xde, 0xdc, 0xe6, 0xde, 0xe4, 0x36, 0xbc, 0x71, 0x77, 0x10, 0xc3, 0x9c, 0x68, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xf0, 0x85, 0x8d, 0xd1, 0xa5, 0xd9, 0x95, 0x1d, 0x44, 0x2d, 0xb7, 0xdb, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0x97, 0xcd, 0x8d, 0x85, 0xc1, 0x95, 0x49, 0x95, 0xc5, 0xd5, 0x95, 0xcd, 0xd1, 0x95, 0x91, 0x1d, 0x44, 0x2d, 0xb7, 0xdb, 0x1a, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x07, 0x8f, 0x95, 0xe6, 0x3c, 0x88, 0x53, 0x9e, 0xb4, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xe0, 0xa1, 0x6c, 0x6e, 0x2c, 0x0c, 0xae, 0x4c, 0xaa, 0x2c, 0xae, 0xae, 0x6c, 0x8e, 0xae, 0x8c, 0x8c, 0xea, 0xed, 0x20, 0x4e, 0x79, 0xd2, 0xd6, 0xf0, 0x3c, 0xc9, 0x1a, 0xee, 0xb4, 0x19, 0x80, 0x8f, 0x31, 0xb9, 0x3c, 0x38, 0xba, 0xb7, 0xa9, 0xba, 0x34, 0xba, 0x32, 0xab, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x83, 0x38, 0xe5, 0x49, 0x5b, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x66, 0x00, 0x1e, 0xd6, 0xca, 0xf2, 0xa4, 0xca, 0xec, 0xd2, 0xe6, 0xd2, 0xde, 0xdc, 0x9c, 0xea, 0xda, 0xc4, 0xca, 0xe4, 0x0e, 0xe2, 0x94, 0x27, 0x6d, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xfc, 0xc7, 0xde, 0xdc, 0xe8, 0xd2, 0xdc, 0xea, 0xd2, 0xe8, 0xf2, 0x9c, 0xea, 0xda, 0xc4, 0xca, 0xe4, 0x0e, 0xe2, 0x94, 0x27, 0xad, 0x15, 0xf0, 0xc9, 0xca, 0xca, 0xc8, 0x0d, 0x8e, 0xae, 0x83, 0x6b, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x6c, 0xf0, 0xd8, 0x06, 0xb5, 0x0e, 0x22, 0xb1, 0x41, 0x6d, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0xdb, 0xc2, 0xdc, 0xc2, 0xce, 0xca, 0xda, 0xca, 0xdc, 0xe8, 0xa0, 0xe4, 0xde, 0xf0, 0xf2, 0x0e, 0x22, 0xb1, 0x41, 0x6d, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x7c, 0xe6, 0xe0, 0xc2, 0xee, 0xdc, 0xa0, 0xe4, 0xde, 0xf0, 0xf2, 0x0e, 0x22, 0xb1, 0x41, 0x6d, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0xbc, 0xec, 0xde, 0xe8, 0xd2, 0xdc, 0xce, 0xa0, 0xe4, 0xde, 0xf0, 0xf2, 0x0e, 0x22, 0xb1, 0x41, 0x6d, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x9b, 0x01, 0x3c, 0xe9, 0xe4, 0xc2, 0xdc, 0xe6, 0xcc, 0xca, 0xe4, 0xa0, 0xe4, 0xde, 0xf0, 0xf2, 0x0e, 0x22, 0xb1, 0x41, 0xad, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0x3b, 0x9c, 0x62, 0x0b, 0xe0, 0x39, 0xf6, 0xd6, 0x06, 0xc7, 0x56, 0x46, 0x57, 0xd6, 0x32, 0x87, 0x96, 0x06, 0x6f, 0xf8, 0xa8, 0x7d, 0xc3, 0xf7, 0xed, 0x1b, 0xc4, 0x76, 0xbc, 0xdb, 0x86, 0xcf, 0x95, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x61, 0x9c, 0x71, 0xf0, 0x38, 0xc1, 0xcc, 0x35, 0xfc, 0xb9, 0x34, 0xc0, 0x8b, 0x96, 0x36, 0x47, 0xf7, 0x26, 0x97, 0x6f, 0x10, 0xfa, 0x25, 0x1b, 0x84, 0x94, 0xc9, 0x06, 0xef, 0x84, 0xcb, 0x6c, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0x92, 0x1e, 0xb5, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x12, 0xb1, 0x7e, 0x83, 0xb7, 0xe9, 0x3a, 0x6e, 0xf0, 0x80, 0x9b, 0xcc, 0x9a, 0x05, 0xf8, 0xcb, 0xe8, 0xd0, 0x5a, 0xdc, 0xde, 0xea, 0xdc, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0xde, 0x90, 0x9d, 0xb6, 0xe1, 0xa3, 0xf6, 0x0d, 0xdf, 0xb7, 0x6f, 0xf0, 0x86, 0xec, 0xb4, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x7c, 0xcb, 0xdc, 0xc6, 0xe4, 0xf2, 0xe0, 0xe8, 0xd2, 0xde, 0xdc, 0x5a, 0xd6, 0xca, 0xf2, 0x83, 0xa7, 0x9f, 0xcb, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0xf8, 0x08, 0xab, 0xa3, 0x43, 0x2b, 0x73, 0xa3, 0x4b, 0x1b, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0x6b, 0x59, 0x2b, 0xcb, 0x0f, 0x9e, 0x7e, 0x2e, 0xb7, 0x86, 0x3f, 0x97, 0x06, 0xf0, 0x42, 0x0b, 0x9b, 0x6b, 0x99, 0x83, 0x7b, 0x73, 0x9b, 0x7b, 0x93, 0x0f, 0x1f, 0xac, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0x62, 0xb5, 0xdb, 0xed, 0xf0, 0xc1, 0xea, 0x1a, 0xfe, 0x5c, 0x1a, 0xc0, 0xbf, 0x6c, 0x6e, 0x2c, 0x0c, 0xae, 0xac, 0x45, 0xae, 0x2c, 0xae, 0xae, 0x6c, 0x8e, 0xae, 0x8c, 0x3c, 0x7c, 0xb0, 0xba, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x30, 0x1d, 0xd7, 0x41, 0x99, 0xa5, 0xbb, 0x86, 0x3f, 0x97, 0x06, 0xf0, 0x28, 0x9b, 0x1b, 0x0b, 0x83, 0x2b, 0x6b, 0xa1, 0x7b, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x1b, 0x83, 0x37, 0x0f, 0xca, 0x2c, 0xdd, 0x35, 0xfc, 0xb9, 0x34, 0x80, 0xdf, 0x5a, 0x59, 0x5e, 0x8b, 0x5c, 0x99, 0x5d, 0xda, 0x5c, 0xda, 0x9b, 0x7b, 0x50, 0x66, 0xe9, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0x1e, 0x9b, 0x93, 0x79, 0x50, 0x66, 0xe9, 0xb6, 0x1a, 0x44, 0x47, 0xba, 0xdb, 0x86, 0x8f, 0xda, 0x37, 0x7c, 0xdf, 0xbe, 0x41, 0x74, 0xa4, 0xbb, 0x6d, 0xf8, 0x5c, 0x69, 0x0d, 0x7f, 0x2e, 0x6d, 0xf0, 0xd8, 0x06, 0xb5, 0x83, 0x17, 0x11, 0x3c, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0x5e, 0x82, 0xa9, 0x76, 0xf0, 0x22, 0x82, 0xc7, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x63, 0x71, 0xd5, 0x0e, 0x5e, 0x44, 0xf0, 0xb8, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x2b, 0xaa, 0xda, 0xc1, 0x8b, 0x08, 0x1e, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x6f, 0xf2, 0x4f, 0x3b, 0x78, 0x11, 0xc1, 0x63, 0x87, 0x53, 0xac, 0xc3, 0x29, 0xb6, 0x02, 0x78, 0x8c, 0xbd, 0xb9, 0xd1, 0xc9, 0x85, 0x8d, 0xd1, 0xcd, 0x1b, 0xde, 0xd6, 0x19, 0x80, 0x87, 0xb6, 0xb0, 0x34, 0x37, 0xb7, 0x32, 0xba, 0x96, 0xb1, 0x37, 0x37, 0x3a, 0xb9, 0xb0, 0x31, 0xba, 0xb9, 0xc3, 0x29, 0xb6, 0x06, 0xaf, 0x5c, 0x61, 0xd9, 0xf0, 0x51, 0xfb, 0x06, 0x41, 0xfb, 0xb3, 0x86, 0xcf, 0x95, 0x36, 0x58, 0xab, 0xd3, 0xbd, 0x86, 0x3f, 0x97, 0x36, 0x78, 0xea, 0x54, 0xe8, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x89, 0x58, 0xbf, 0x41, 0xdb, 0xd6, 0xe3, 0x07, 0xb1, 0x85, 0x80, 0xb5, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0x32, 0xb7, 0xf9, 0xe0, 0xe1, 0x77, 0x99, 0x6b, 0xf8, 0x73, 0x69, 0x80, 0x07, 0xad, 0x2c, 0x4c, 0x8e, 0xdc, 0xf0, 0xef, 0xfc, 0x1a, 0xbc, 0xa1, 0x2e, 0xb2, 0x5a, 0xc3, 0xe7, 0x4a, 0x6b, 0xc8, 0x80, 0x6f, 0x78, 0xf9, 0xee, 0x20, 0x4a, 0xff, 0xdc, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xa3, 0xc7, 0x70, 0x83, 0xd0, 0x2f, 0xd9, 0x20, 0xa4, 0x4c, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0xbd, 0xe9, 0xd7, 0xf0, 0xef, 0xfc, 0x06, 0xaf, 0x9d, 0xe0, 0x6d, 0x0d, 0xff, 0xce, 0xaf, 0xc1, 0xb3, 0xc3, 0x32, 0xab, 0x6a, 0x05, 0x78, 0xcc, 0xd8, 0xca, 0xca, 0xe8, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0x22, 0xd6, 0x6f, 0x70, 0x6c, 0x75, 0x5d, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0x76, 0xbc, 0x5b, 0x1d, 0x4e, 0xb1, 0x35, 0x88, 0xee, 0x85, 0xb7, 0x0d, 0x4a, 0x16, 0xf6, 0x59, 0x66, 0x0d, 0x22, 0x8f, 0xc9, 0x6d, 0xc3, 0x8f, 0x30, 0x03, 0x5f, 0x87, 0x1f, 0x44, 0xba, 0xa3, 0xdb, 0x6a, 0x10, 0x6b, 0xca, 0x6e, 0x1b, 0x7e, 0x84, 0xd9, 0x50, 0xf3, 0x03, 0x0f, 0xe4, 0xf0, 0x5c, 0x0d, 0xe2, 0xc7, 0x34, 0xed, 0xf0, 0x98, 0xcc, 0x6a, 0x10, 0x27, 0xcc, 0x6e, 0x1b, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0xfc, 0x20, 0xba, 0x21, 0xdd, 0x0e, 0xa7, 0x58, 0x6b, 0x10, 0x77, 0xcd, 0x6e, 0x1b, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0xfc, 0x20, 0x96, 0x24, 0xdd, 0x0e, 0xa7, 0xd8, 0x1a, 0xc4, 0xce, 0xb3, 0xdb, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0xde, 0x49, 0xb7, 0xd5, 0x20, 0x52, 0xa2, 0xdd, 0x36, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0xf8, 0x41, 0xbc, 0x54, 0xba, 0x1d, 0x4e, 0xb1, 0x35, 0x88, 0x52, 0x69, 0xb7, 0x0d, 0x3f, 0xc2, 0x6c, 0xa8, 0xf9, 0x81, 0x57, 0x3a, 0xb5, 0xae, 0x06, 0xf1, 0x3c, 0xed, 0xb6, 0xe1, 0x47, 0x98, 0x81, 0xaf, 0xc3, 0x0f, 0xa2, 0xdd, 0xd2, 0xed, 0x70, 0x8a, 0x75, 0x38, 0xc5, 0x56, 0x00, 0x6f, 0xb6, 0xb7, 0xb1, 0x30, 0xb6, 0x96, 0xb1, 0x37, 0x37, 0x3a, 0xb9, 0xb0, 0x31, 0xba, 0x79, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0xc8, 0x63, 0x72, 0xdb, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x07, 0x11, 0x89, 0xe9, 0xb6, 0x1a, 0xc4, 0x9a, 0xb2, 0xdb, 0xe1, 0xc1, 0x9b, 0xd5, 0x20, 0x7e, 0x4c, 0xd3, 0x36, 0xfc, 0x08, 0xb3, 0xa1, 0xe6, 0x07, 0x97, 0xd3, 0x6a, 0x10, 0x27, 0xcc, 0x6e, 0x1b, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0xfc, 0x20, 0xce, 0x34, 0xdd, 0x0e, 0xa7, 0x58, 0x6b, 0x10, 0x77, 0xcd, 0x6e, 0x1b, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0xfc, 0x20, 0xa6, 0x37, 0xdd, 0x0e, 0xa7, 0xd8, 0x1a, 0xc4, 0xce, 0xb3, 0xdb, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0x9c, 0x4e, 0xb7, 0xd5, 0x20, 0x52, 0xa2, 0xdd, 0x36, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0xf8, 0x41, 0x9c, 0x7a, 0xba, 0x1d, 0x4e, 0xb1, 0x35, 0x88, 0x52, 0x69, 0xb7, 0xc3, 0x83, 0x37, 0xab, 0x41, 0x3c, 0x4f, 0xbb, 0x6d, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x83, 0xd8, 0x01, 0x75, 0x3b, 0x9c, 0x62, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0xb6, 0x00, 0xbe, 0x61, 0x7a, 0x69, 0x6d, 0x75, 0x74, 0x68, 0x2d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0xf3, 0x06, 0x25, 0x0b, 0xfb, 0x2c, 0xb3, 0x00, 0x9e, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x2d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0xe4, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0xed, 0x50, 0xb7, 0x15, 0xc0, 0xbb, 0x6c, 0x6e, 0x2c, 0x0c, 0xae, 0xac, 0x25, 0x6c, 0x6c, 0xac, 0x0c, 0x8e, 0xae, 0x8c, 0xdc, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x07, 0xb1, 0x40, 0xea, 0xb6, 0x02, 0xf0, 0x33, 0x86, 0x16, 0xe6, 0x76, 0x56, 0x46, 0xd6, 0x62, 0xf7, 0x46, 0x97, 0xe6, 0x76, 0xd6, 0x02, 0x27, 0xf7, 0x86, 0x97, 0x6f, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x83, 0xf8, 0x31, 0x75, 0x5b, 0x01, 0xbc, 0xcb, 0xe6, 0xc6, 0xc2, 0xe0, 0xca, 0x5a, 0xc6, 0xc2, 0xdc, 0xc6, 0xca, 0xd8, 0xca, 0xc8, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0x10, 0x75, 0xa8, 0x6e, 0x87, 0x53, 0x6c, 0x01, 0xfc, 0xd8, 0xde, 0xe6, 0xe8, 0x5a, 0xe6, 0xe0, 0xde, 0xdc, 0xe6, 0xde, 0xe4, 0x0d, 0x3f, 0xc2, 0x0c, 0x7c, 0x1d, 0x7e, 0x10, 0xab, 0xaa, 0x6e, 0xab, 0xc1, 0xcb, 0x3a, 0xd4, 0x36, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0xf8, 0x41, 0x84, 0xb3, 0xba, 0xcd, 0x02, 0x78, 0x8d, 0xa1, 0x85, 0xb9, 0x9d, 0x95, 0x91, 0xb5, 0x90, 0xb9, 0xcd, 0x1b, 0x7e, 0x84, 0x19, 0xf8, 0x3a, 0xfc, 0x20, 0x2e, 0x5e, 0xdd, 0x66, 0x01, 0xf8, 0x1b, 0x43, 0x0b, 0x73, 0x3b, 0x2b, 0x23, 0x6b, 0x69, 0x0b, 0x73, 0x0b, 0x3b, 0x2b, 0x6b, 0x2b, 0x73, 0xa3, 0x6b, 0x81, 0x93, 0x7b, 0xc3, 0xcb, 0x37, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0xf8, 0x41, 0x24, 0xc5, 0xba, 0x1d, 0x4e, 0xb1, 0xd6, 0x20, 0x9a, 0xfe, 0xdd, 0x36, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0xf8, 0x41, 0xfc, 0xcd, 0xba, 0xad, 0x00, 0x7e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x2d, 0x6b, 0x65, 0x79, 0xf3, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0xda, 0x5a, 0xb7, 0xc3, 0x29, 0xb6, 0x00, 0xfe, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x69, 0x74, 0xf9, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0xf3, 0x5b, 0xb7, 0xc3, 0x29, 0xb6, 0x06, 0x6f, 0x6e, 0x51, 0xdb, 0xf0, 0x23, 0xcc, 0xc0, 0xd7, 0xe1, 0x07, 0x51, 0xa1, 0xeb, 0xb6, 0x02, 0xf0, 0x32, 0x86, 0x16, 0xe6, 0x76, 0x56, 0x46, 0xd6, 0x32, 0x07, 0x17, 0x76, 0xe7, 0xd6, 0x02, 0x27, 0xf7, 0x86, 0x97, 0x6f, 0xf8, 0x11, 0x66, 0xe0, 0xeb, 0xf0, 0x83, 0x58, 0xe2, 0x75, 0x5b, 0x01, 0xf8, 0x1a, 0x43, 0x0b, 0x73, 0x3b, 0x2b, 0x23, 0x6b, 0xa1, 0x93, 0x0b, 0x73, 0x9b, 0x33, 0x2b, 0x93, 0x6b, 0x81, 0x93, 0x7b, 0xc3, 0xcb, 0x37, 0xfc, 0x08, 0x33, 0xf0, 0x75, 0xf8, 0x41, 0xf4, 0xf9, 0xba, 0x1d, 0x4e, 0xb1, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0xac, 0xc3, 0x29, 0xb6, 0xe1, 0x44, 0xd8, 0x20, 0x5e, 0x9a, 0xdc, 0xd6, 0x70, 0x8e, 0x2c, 0x08, 0x36, 0x28, 0xa0, 0x05, 0x17, 0x07, 0xc1, 0xc2, 0x6e, 0xc8, 0x63, 0x2d, 0x4e, 0x00, 0x7f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2d, 0x75, 0x6e, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2d, 0x65, 0x76, 0x65, 0x6e, 0xf4, 0x21, 0x86, 0xc3, 0x6e, 0x30, 0xea, 0x25, 0x17, 0x7e, 0xe3, 0xf9, 0xb0, 0x0b, 0xb7, 0xa1, 0x09, 0xd7, 0xf0, 0x0b, 0xbf, 0x21, 0xb9, 0x74, 0xf0, 0xcc, 0x20, 0xa4, 0x83, 0x92, 0xa1, 0x69, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0x90, 0x5c, 0x1a, 0x7e, 0xe1, 0x17, 0x7e, 0xe3, 0xf1, 0xc1, 0x33, 0x83, 0x90, 0x0e, 0x02, 0x13, 0xfb, 0x60, 0xd5, 0x49, 0xda, 0xc1, 0x69, 0x05, 0x77, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x89, 0x3d, 0x38, 0xfc, 0xc6, 0xf3, 0x71, 0x83, 0x58, 0xfd, 0x44, 0x3b, 0x78, 0x2e, 0xc1, 0xe3, 0x71, 0x68, 0x43, 0x0c, 0x37, 0x08, 0x29, 0xf0, 0x0d, 0x9e, 0xd9, 0xa0, 0x76, 0x10, 0x02, 0xe0, 0xc3, 0x2e, 0xdc, 0x86, 0x26, 0x5c, 0xc3, 0x6f, 0x10, 0xb7, 0x4a, 0x6f, 0x07, 0x07, 0x8f, 0xda, 0x05, 0xc1, 0x82, 0x60, 0x83, 0xe8, 0x5d, 0x7a, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x50, 0x62, 0x0f, 0x0e, 0xbf, 0xf1, 0x7c, 0x3c, 0x88, 0x50, 0x32, 0xb7, 0xe3, 0xd0, 0x86, 0x18, 0x6e, 0x1c, 0xda, 0xe0, 0x4d, 0x1d, 0x6a, 0xc7, 0xa1, 0x61, 0x17, 0x6e, 0x43, 0x13, 0xae, 0xe1, 0x37, 0x88, 0x5b, 0xa5, 0xb7, 0x83, 0xd3, 0x0a, 0xee, 0x82, 0x60, 0x41, 0xb0, 0x41, 0xf4, 0x2e, 0xbd, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x28, 0xb1, 0x07, 0x87, 0xdf, 0x78, 0x3e, 0x1e, 0x44, 0x15, 0x99, 0xdb, 0x71, 0x68, 0x43, 0x0c, 0x37, 0x08, 0x29, 0xf0, 0x0d, 0x5e, 0xdb, 0xa2, 0x76, 0x10, 0x02, 0xe0, 0xc3, 0x2e, 0xdc, 0x86, 0x26, 0x5c, 0xc3, 0x6f, 0x10, 0xb7, 0x4a, 0x6f, 0x87, 0x2e, 0x26, 0x0b, 0x82, 0x0d, 0x22, 0x92, 0xea, 0x6d, 0x43, 0x0c, 0x37, 0x08, 0x29, 0xf0, 0x0d, 0x9e, 0xf0, 0xa7, 0x76, 0x10, 0x6e, 0xee, 0xc3, 0x2e, 0xdc, 0x86, 0x26, 0x5c, 0xc3, 0x6f, 0x10, 0xb7, 0x4a, 0x6f, 0x07, 0xa7, 0x5d, 0xda, 0x05, 0xc1, 0x06, 0x31, 0x11, 0xf5, 0xb6, 0x21, 0x86, 0x1b, 0x87, 0xc6, 0x0d, 0x1e, 0xf2, 0xa7, 0xd6, 0xb0, 0x0b, 0xb7, 0xa1, 0x09, 0xd7, 0xf0, 0x1b, 0xc4, 0xad, 0xd2, 0xdb, 0xc1, 0xf9, 0x89, 0x76, 0x41, 0xb0, 0x41, 0x44, 0x52, 0xbd, 0x6d, 0x88, 0xe1, 0x06, 0x21, 0x05, 0xbe, 0xc1, 0x53, 0xe9, 0xb8, 0x0e, 0xc2, 0xcd, 0x7d, 0xd8, 0x85, 0xdb, 0xd0, 0x84, 0x6b, 0xf8, 0x0d, 0xe2, 0x56, 0xe9, 0xed, 0xe0, 0xf0, 0x4e, 0xbb, 0x20, 0xd8, 0x20, 0x22, 0xa9, 0xde, 0x36, 0xc4, 0x70, 0x83, 0x90, 0x02, 0xdf, 0xe0, 0xa9, 0x74, 0x5c, 0x07, 0x2b, 0x44, 0x82, 0x86, 0x5d, 0xb8, 0x0d, 0x4d, 0xb8, 0x86, 0xdf, 0x20, 0x6e, 0x95, 0xde, 0x0e, 0x0e, 0xbf, 0xb6, 0x0b, 0x82, 0x0d, 0x62, 0x22, 0xea, 0x6d, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0xe1, 0x37, 0xac, 0xd0, 0x1e, 0x44, 0x06, 0xd3, 0xdb, 0xc1, 0xb8, 0x83, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x68, 0x3a, 0x34, 0xfc, 0xc6, 0xf3, 0x71, 0x83, 0x38, 0x0f, 0x73, 0xdb, 0x20, 0xce, 0xc3, 0xdc, 0x0e, 0xa2, 0x8a, 0xcc, 0xed, 0x38, 0xb4, 0x21, 0x86, 0x1b, 0x52, 0x07, 0x1b, 0xbc, 0xa1, 0x47, 0x6d, 0x83, 0x30, 0x90, 0x1f, 0x04, 0x1b, 0xc4, 0xe0, 0x84, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0x34, 0x0f, 0x1e, 0x00, 0xfc, 0x70, 0x1c, 0x1a, 0x76, 0xe1, 0x36, 0x34, 0xe1, 0x1a, 0x7e, 0x83, 0xb8, 0x55, 0x7a, 0x3b, 0x18, 0x48, 0x50, 0x0b, 0x82, 0x0d, 0x62, 0x22, 0xea, 0x6d, 0x10, 0x2c, 0x08, 0x36, 0x88, 0xdc, 0xb0, 0xb7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0xa6, 0x43, 0x07, 0x71, 0x21, 0xf5, 0x76, 0x1c, 0xda, 0x10, 0xc3, 0x0d, 0xa9, 0x83, 0x0d, 0x5e, 0x39, 0xa5, 0x76, 0x1c, 0x1a, 0x76, 0xe1, 0x36, 0x34, 0xe1, 0x1a, 0x7e, 0x83, 0xb8, 0x55, 0x7a, 0x1b, 0x24, 0x03, 0xf7, 0xd5, 0xf1, 0x78, 0x41, 0xb0, 0x41, 0x7c, 0x2e, 0xbd, 0x6d, 0x88, 0xe1, 0x06, 0x21, 0x05, 0xbe, 0xc1, 0x1b, 0x30, 0xd5, 0x0e, 0x42, 0x00, 0x7c, 0xd8, 0x85, 0xdb, 0xd0, 0x84, 0x6b, 0xf8, 0x0d, 0xe2, 0x56, 0xe9, 0xed, 0xe0, 0xdc, 0x47, 0xbb, 0x20, 0xd8, 0x20, 0x3e, 0x97, 0xde, 0x36, 0xc4, 0x70, 0x83, 0x90, 0x02, 0xdf, 0xe0, 0x95, 0xa8, 0x6a, 0x07, 0x21, 0x00, 0x3e, 0xec, 0xc2, 0x6d, 0x68, 0xc2, 0x35, 0xfc, 0x06, 0x71, 0xab, 0xf4, 0x76, 0x30, 0x42, 0xa2, 0x16, 0x04, 0x1b, 0xc4, 0xe7, 0xd2, 0xdb, 0x86, 0x18, 0x6e, 0x10, 0x52, 0xe0, 0x1b, 0x3c, 0x13, 0x57, 0xed, 0x20, 0x04, 0xc0, 0x87, 0x5d, 0xb8, 0x0d, 0x4d, 0xb8, 0x86, 0xdf, 0x20, 0x6e, 0x95, 0xde, 0x0e, 0xc6, 0x32, 0xd4, 0x82, 0x60, 0x83, 0xf8, 0x5c, 0x7a, 0xdb, 0x10, 0xc3, 0x0d, 0x42, 0x0a, 0x7c, 0x83, 0x37, 0x37, 0xab, 0x1d, 0x84, 0x00, 0xf8, 0x20, 0x58, 0xd8, 0x85, 0x5d, 0xb8, 0x0d, 0x4d, 0xb8, 0xc6, 0x00, 0x04, 0x00, 0xbf, 0x22, 0x5b, 0x7b, 0xc3, 0xa0, 0x1d, 0x7f, 0xd5, 0x1e, 0x15, 0xb9, 0xfc, 0x4b, 0xca, 0x20, 0x94, 0x27, 0x85, 0xfe, 0x68, 0x26, 0x9a, 0xa0, 0xc8, 0xb2, 0x98, 0xe2, 0x3c, 0x00, 0x5f, 0x1c, 0xd6, 0x37, 0xd7, 0x10, 0xc3, 0xc5, 0x00, 0x5e, 0xea, 0xdc, 0xd2, 0xda, 0xe0, 0xd8, 0xca, 0xda, 0xca, 0xdc, 0xe8, 0xca, 0xc8, 0x5a, 0xca, 0xec, 0xca, 0xdc, 0xe8, 0x43, 0x13, 0xae, 0x43, 0x0c, 0x87, 0xdd, 0x60, 0xd4, 0x4b, 0x6e, 0x30, 0xf0, 0x43, 0x06, 0xd9, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0x21, 0x86, 0x83, 0x60, 0xe1, 0x37, 0x88, 0xe8, 0xb0, 0xb7, 0xe1, 0x37, 0x88, 0x51, 0xc6, 0xb5, 0x83, 0x87, 0xe2, 0x37, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x7e, 0x83, 0x88, 0x0e, 0x7b, 0x1b, 0x7e, 0x83, 0x18, 0x65, 0x5c, 0x3b, 0x78, 0xbb, 0x7e, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x73, 0x10, 0xc1, 0x76, 0x6f, 0x1b, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x0d, 0x13, 0xb7, 0x61, 0x3a, 0x37, 0xcc, 0xd0, 0x1a, 0xe6, 0x7e, 0xd9, 0x20, 0x36, 0x9a, 0x97, 0xda, 0x30, 0xf7, 0xcb, 0x06, 0xf1, 0x9b, 0x97, 0xd6, 0xc1, 0xc3, 0x2e, 0x30, 0x36, 0x9c, 0x08, 0x1b, 0xc4, 0xb0, 0xdf, 0xdb, 0x06, 0x8b, 0xd9, 0xa0, 0x0e, 0x62, 0x63, 0x2f, 0x6d, 0xc3, 0x89, 0xb0, 0x41, 0x04, 0xf9, 0xbd, 0x6d, 0xb0, 0x98, 0x0d, 0x6a, 0x99, 0x65, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xfa, 0x65, 0x83, 0xa5, 0x6b, 0xa8, 0x1b, 0x2c, 0x94, 0x7d, 0xda, 0xa0, 0x99, 0xce, 0x81, 0x35, 0x28, 0x3a, 0x8d, 0x37, 0x68, 0x01, 0x74, 0x60, 0x0d, 0x3f, 0xc2, 0x0c, 0x3c, 0x5d, 0x18, 0x7c, 0x1d, 0x7e, 0x48, 0x1d, 0x1c, 0xb4, 0x55, 0x3a, 0x70, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0xe8, 0x0f, 0x7c, 0x3b, 0x08, 0x01, 0xf0, 0xe3, 0xd0, 0x71, 0xe8, 0x60, 0xe0, 0x87, 0x0c, 0xb2, 0x35, 0x68, 0x0b, 0x64, 0x65, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0x11, 0x9a, 0xf7, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x20, 0xb2, 0xf6, 0xde, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0xdc, 0x50, 0xc7, 0x37, 0xbc, 0x7c, 0x77, 0x10, 0xe7, 0x47, 0x6f, 0x07, 0x21, 0x00, 0x7e, 0x1c, 0x3a, 0x0e, 0x1d, 0x44, 0x82, 0xd2, 0xdb, 0xf1, 0x78, 0x05, 0xc1, 0x0a, 0xbf, 0x41, 0x0c, 0x79, 0xec, 0x1c, 0xdf, 0x86, 0x5f, 0x90, 0x0c, 0x66, 0x87, 0x54, 0xcd, 0xf1, 0x6d, 0x71, 0xd8, 0x85, 0xdb, 0x60, 0x39, 0xea, 0xd4, 0xa1, 0x91, 0xe0, 0x06, 0x41, 0xe9, 0x3d, 0xec, 0xc2, 0x6d, 0xf0, 0xa6, 0x0e, 0xb5, 0x43, 0x23, 0xc1, 0x05, 0xd1, 0x42, 0xd7, 0x10, 0xc3, 0x0d, 0x31, 0xdc, 0x10, 0xc3, 0x0d, 0x31, 0x5c, 0x43, 0x0c, 0x07, 0xc1, 0xc2, 0x6f, 0xf0, 0xd2, 0x39, 0x9b, 0x83, 0x96, 0x8d, 0x44, 0x0e, 0x2d, 0xc0, 0x0e, 0x31, 0x1c, 0x76, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0x5e, 0x3a, 0x67, 0x73, 0xd0, 0x66, 0x9c, 0xff, 0xa1, 0x05, 0xd8, 0xb0, 0x1b, 0xc4, 0xe0, 0xb0, 0xcc, 0x86, 0x18, 0x1e, 0x44, 0xaf, 0xb0, 0xcc, 0x06, 0x23, 0xff, 0xe1, 0x10, 0xc3, 0x43, 0x34, 0x87, 0x5d, 0xb8, 0x0d, 0x9e, 0xd9, 0xa0, 0x76, 0x68, 0x24, 0xb8, 0x20, 0xda, 0x60, 0x25, 0xa7, 0xc8, 0x21, 0x9a, 0xc3, 0x2e, 0xdc, 0x06, 0x6f, 0x6e, 0x56, 0x3b, 0x34, 0x12, 0x5c, 0x10, 0x2d, 0xd8, 0x1d, 0x04, 0xa5, 0xf7, 0x21, 0x9a, 0xc3, 0x2e, 0xdc, 0x06, 0x6f, 0xc0, 0x54, 0x3b, 0x34, 0x12, 0x5c, 0x10, 0x2d, 0x88, 0x0e, 0x82, 0xd2, 0xfb, 0x10, 0xcd, 0x61, 0x17, 0x6e, 0x83, 0x57, 0xa2, 0xaa, 0x1d, 0x1a, 0x09, 0x2e, 0x88, 0x16, 0xcc, 0x0e, 0x82, 0xd2, 0xfb, 0x10, 0xcd, 0x61, 0x17, 0x76, 0x83, 0xd8, 0x33, 0x80, 0xd9, 0x10, 0xc3, 0x61, 0x17, 0x6e, 0x83, 0x57, 0x4e, 0xa9, 0x1d, 0x1a, 0x09, 0x6e, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0xc1, 0x13, 0xfe, 0xd4, 0x0e, 0x8d, 0x04, 0x37, 0xc4, 0x70, 0xb8, 0x0d, 0x9e, 0x4a, 0xc7, 0x75, 0x68, 0x24, 0xb8, 0xb0, 0x0b, 0x3d, 0x34, 0xd4, 0x59, 0xd8, 0x0d, 0x62, 0xcf, 0x00, 0x66, 0x41, 0xb4, 0xa0, 0xf6, 0x60, 0x64, 0xf6, 0x0e, 0xa2, 0x05, 0xd3, 0x43, 0x27, 0xb5, 0x43, 0x34, 0x87, 0xdd, 0x20, 0x1a, 0x32, 0xdf, 0x16, 0x44, 0x0b, 0xfe, 0x6e, 0x10, 0x94, 0xde, 0xc3, 0x6e, 0xe8, 0xa4, 0xb6, 0x21, 0x86, 0x13, 0xdc, 0x97, 0x87, 0x68, 0x0e, 0xbb, 0x41, 0x24, 0x5e, 0xbe, 0x2d, 0x88, 0x16, 0xdc, 0x3d, 0x08, 0x4a, 0xef, 0x43, 0x34, 0x07, 0xd9, 0x1a, 0xda, 0xaf, 0x1f, 0xc4, 0x15, 0xe6, 0xdb, 0x20, 0x5a, 0x20, 0xbe, 0x07, 0x41, 0xe9, 0x7d, 0x88, 0xe6, 0xe1, 0x14, 0x1b, 0x64, 0x6b, 0x68, 0xbf, 0x3e, 0xec, 0xc2, 0x6d, 0xf0, 0x4c, 0x5c, 0xb5, 0x43, 0x23, 0xc1, 0x0d, 0x31, 0x1c, 0x6e, 0x83, 0xd7, 0xb6, 0xa8, 0x1d, 0x1a, 0x09, 0x0e, 0xbb, 0xc1, 0xfa, 0x97, 0xfd, 0x85, 0xdd, 0x20, 0x12, 0x41, 0xdf, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x10, 0xcd, 0x53, 0x6e, 0x07, 0x2d, 0x82, 0x9c, 0x0c, 0x92, 0xc1, 0xa9, 0x83, 0x96, 0x54, 0x49, 0x0e, 0x2d, 0xc0, 0x06, 0xd1, 0x82, 0xfd, 0x71, 0xe8, 0x90, 0xb5, 0x1b, 0x64, 0x6b, 0x68, 0xbf, 0x7e, 0x10, 0xd3, 0x9f, 0x6f, 0x83, 0x68, 0xc1, 0xfc, 0x20, 0x28, 0xbd, 0x0f, 0xd1, 0x3c, 0x9c, 0x62, 0xc7, 0xe3, 0x15, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x17, 0x04, 0x8b, 0x73, 0xb0, 0x10, 0xed, 0x66, 0x71, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x85, 0x5f, 0xf8, 0x0d, 0xd6, 0xa9, 0x34, 0x1c, 0x3c, 0x1b, 0x28, 0xed, 0xa0, 0xf5, 0x7d, 0xf7, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x5f, 0xf8, 0x0d, 0xa2, 0xe9, 0xf4, 0xed, 0xa0, 0xb5, 0x8f, 0xf7, 0xe1, 0x37, 0x88, 0xa6, 0xd3, 0xb7, 0x83, 0x96, 0x43, 0xde, 0x0f, 0x1d, 0xc3, 0x8e, 0x43, 0x83, 0x60, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0x9a, 0x4e, 0xdf, 0x0e, 0x9a, 0x8c, 0x79, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xc8, 0xda, 0x0d, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0xd1, 0x74, 0xfa, 0x36, 0x48, 0x06, 0x94, 0xbf, 0x5d, 0x07, 0x41, 0xce, 0x7f, 0x68, 0x0a, 0x74, 0x1c, 0x1a, 0x04, 0x1b, 0x04, 0x59, 0xfc, 0xe2, 0x20, 0x58, 0xf8, 0x0d, 0xd9, 0x8a, 0xe1, 0x37, 0x88, 0xa6, 0xd3, 0xb7, 0x83, 0xb6, 0x2a, 0xe1, 0x0f, 0x56, 0xe2, 0x8b, 0x1c, 0x8f, 0x8f, 0xc7, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0xfc, 0xc6, 0xe3, 0xe1, 0x17, 0x7e, 0xe1, 0x37, 0x08, 0x11, 0xff, 0x83, 0x67, 0x03, 0xa5, 0x1d, 0x9c, 0x02, 0x7c, 0x0f, 0x96, 0xe4, 0xd0, 0x0c, 0x82, 0x85, 0xdf, 0x78, 0x3e, 0xfc, 0x06, 0x11, 0x04, 0xfb, 0x76, 0xd0, 0xec, 0xda, 0xfb, 0x20, 0xd8, 0x20, 0xc8, 0xe2, 0x17, 0x07, 0xc1, 0xc2, 0x6f, 0xc8, 0x56, 0x0c, 0xbf, 0x41, 0x04, 0xc1, 0xbe, 0x1d, 0x24, 0x90, 0x57, 0x1c, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x0f, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x07, 0xc1, 0xc2, 0x2f, 0xfc, 0x06, 0xc3, 0x18, 0xf6, 0xe0, 0xd9, 0x40, 0x69, 0x07, 0x0f, 0xc5, 0x6f, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0x06, 0xb1, 0x4a, 0xfb, 0x76, 0xf0, 0x76, 0xfd, 0x86, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x0f, 0x9e, 0x82, 0xe2, 0x70, 0xd8, 0x2b, 0x3c, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0x83, 0x60, 0xe1, 0x37, 0x88, 0x20, 0xd8, 0xb7, 0x83, 0xa8, 0x7f, 0x61, 0x1b, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0xd8, 0x2b, 0x1c, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0x82, 0x60, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x0d, 0x4a, 0x86, 0xa6, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x88, 0xff, 0x2c, 0xb7, 0x85, 0xdf, 0x78, 0x3e, 0x06, 0xf8, 0x90, 0xb9, 0xcd, 0x11, 0xbd, 0xb5, 0x85, 0xa5, 0xb9, 0xcd, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x83, 0x48, 0x81, 0x7d, 0x3b, 0x38, 0xee, 0xf5, 0x1e, 0x87, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x94, 0x0c, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x7e, 0x10, 0x49, 0x57, 0x6e, 0x0b, 0xbf, 0xf1, 0x7c, 0x0c, 0xf0, 0x39, 0x2b, 0xa3, 0x9b, 0x82, 0x0b, 0xbb, 0x73, 0x2b, 0x23, 0x0f, 0x56, 0x20, 0x03, 0x1d, 0x87, 0x06, 0xc1, 0x06, 0x41, 0x16, 0xbf, 0x38, 0x08, 0x16, 0x7e, 0x43, 0xb6, 0x62, 0xf8, 0x0d, 0x22, 0x08, 0xf6, 0xed, 0xa0, 0x0d, 0x86, 0xf7, 0x83, 0x95, 0xf8, 0x22, 0xc7, 0xe3, 0x41, 0xb0, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x25, 0x43, 0xd3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0xc4, 0x81, 0x94, 0xdb, 0x06, 0x11, 0x38, 0xfc, 0x76, 0xb0, 0x02, 0x19, 0xe8, 0x38, 0x74, 0x10, 0xa5, 0xc0, 0x6f, 0xc7, 0xa1, 0x83, 0xb5, 0x7c, 0x02, 0xc7, 0xe3, 0x41, 0xb0, 0xc1, 0xb9, 0xcd, 0x79, 0x71, 0x10, 0x2c, 0xfc, 0x06, 0xd1, 0x3c, 0xe5, 0x76, 0x10, 0x05, 0xd5, 0x67, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x06, 0x6b, 0x07, 0x67, 0x86, 0xdf, 0x78, 0x3e, 0xec, 0xc2, 0x6e, 0xf0, 0x06, 0x20, 0xb7, 0x85, 0x5d, 0xb8, 0x0d, 0xc6, 0x4f, 0xd7, 0x41, 0x42, 0xd9, 0xc9, 0xc2, 0x2e, 0xdc, 0x06, 0xc3, 0x8b, 0xe2, 0x20, 0xa1, 0xec, 0xe4, 0x90, 0xce, 0x3d, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x41, 0xb0, 0x41, 0xec, 0x17, 0xbf, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x38, 0x10, 0xf1, 0x1f, 0xc4, 0x5a, 0x4c, 0xcd, 0x71, 0x68, 0x10, 0x6c, 0x10, 0xfb, 0xc5, 0x6f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x0e, 0x44, 0xfc, 0x07, 0x91, 0x3e, 0xe4, 0x76, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x07, 0xc1, 0xe2, 0x6c, 0x10, 0x0b, 0x70, 0x6e, 0x07, 0xc5, 0xb4, 0xe0, 0xe2, 0x1a, 0x3a, 0xa9, 0x6d, 0x68, 0xc2, 0xb5, 0xc1, 0x33, 0x3f, 0x2a, 0x0e, 0x5e, 0xc1, 0x72, 0xb2, 0xb0, 0x4b, 0x30, 0xae, 0x6b, 0x88, 0xe1, 0x12, 0xb4, 0x7f, 0x5d, 0x10, 0x6c, 0xf0, 0xf2, 0x7d, 0x89, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x83, 0x68, 0x65, 0x83, 0x61, 0xb5, 0x32, 0x41, 0xfb, 0xeb, 0xe3, 0xd0, 0x12, 0xf4, 0x7f, 0x5d, 0x09, 0xc2, 0x3a, 0xc1, 0xf9, 0x3a, 0xec, 0x06, 0x91, 0x69, 0xd9, 0xb3, 0x86, 0x18, 0x4e, 0x90, 0x7e, 0x3d, 0xc4, 0xf0, 0x10, 0xc3, 0x61, 0x17, 0x04, 0x0b, 0x82, 0x0d, 0xa2, 0xf7, 0xf1, 0xed, 0x90, 0x86, 0x3b, 0x88, 0x47, 0xc8, 0xb7, 0x35, 0xc4, 0x70, 0x43, 0x33, 0x9e, 0x43, 0x0c, 0x0f, 0x31, 0x3c, 0x1e, 0x2f, 0x0e, 0x82, 0x0d, 0x22, 0x19, 0xca, 0x6d, 0x71, 0xd8, 0x0d, 0xe2, 0x3d, 0xca, 0x6d, 0x05, 0xc1, 0xc2, 0x6f, 0x10, 0x41, 0xb0, 0x6f, 0x07, 0x71, 0x58, 0xb9, 0x36, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x06, 0xa5, 0x88, 0xe4, 0x06, 0x6b, 0x50, 0x80, 0x36, 0x18, 0x0d, 0xbe, 0x1b, 0x0c, 0xa9, 0xdf, 0x0d, 0x4a, 0xa0, 0xc8, 0x0d, 0xd6, 0x68, 0x2b, 0x6c, 0x90, 0xe2, 0x4c, 0x32, 0x08, 0x56, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x88, 0x20, 0xd8, 0xb7, 0x83, 0xa5, 0x2a, 0x3f, 0x07, 0x8f, 0x7a, 0xcd, 0x3a, 0x68, 0xf5, 0xf2, 0xe9, 0x60, 0x35, 0x03, 0xd0, 0xf1, 0xed, 0x38, 0xb4, 0x18, 0xa0, 0x0b, 0xf7, 0x96, 0xe6, 0x46, 0x37, 0x87, 0x52, 0x97, 0xe6, 0x46, 0x37, 0x23, 0x93, 0x36, 0x88, 0x7e, 0x3f, 0xb6, 0x43, 0x0c, 0x87, 0xdd, 0x20, 0xee, 0xa9, 0xdc, 0x56, 0x10, 0x6c, 0x10, 0xb3, 0xd5, 0x6f, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x6e, 0xb0, 0x26, 0x2d, 0x61, 0x83, 0xd1, 0xe0, 0xbb, 0x41, 0x1b, 0x5c, 0x03, 0x1b, 0x2c, 0x40, 0x63, 0x38, 0x88, 0x28, 0xec, 0xb7, 0xe3, 0xdb, 0x71, 0x68, 0x31, 0x40, 0x57, 0x2e, 0xed, 0x0c, 0x8d, 0x6e, 0x0e, 0xa5, 0x2e, 0xcd, 0x8d, 0x6e, 0x46, 0x26, 0x1d, 0x44, 0x11, 0xf7, 0xdb, 0xb0, 0x1b, 0x44, 0xcc, 0x95, 0xdb, 0x0a, 0x82, 0x0d, 0x62, 0xb6, 0xfa, 0x6d, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0xc5, 0x0d, 0xda, 0xe0, 0x1a, 0xd8, 0x60, 0xfd, 0xe3, 0xcb, 0x06, 0x25, 0x50, 0xe4, 0x62, 0xf8, 0xb4, 0x41, 0x29, 0x22, 0xb9, 0xc1, 0x39, 0x72, 0x77, 0x83, 0x35, 0x42, 0x1d, 0x1b, 0x0c, 0xa9, 0xdf, 0x0d, 0xd6, 0x3f, 0xbe, 0x6c, 0x30, 0xf0, 0x8d, 0x0f, 0xe2, 0x1a, 0xfb, 0xed, 0xf8, 0x76, 0x1c, 0x5a, 0x0c, 0xa0, 0xe3, 0xac, 0x8c, 0x6e, 0x0a, 0x2e, 0xec, 0xce, 0xad, 0x8c, 0x0c, 0xa5, 0x2e, 0xcd, 0x8d, 0x6e, 0x46, 0x26, 0x1d, 0x44, 0x11, 0xf7, 0xdb, 0x20, 0x5b, 0x43, 0xfb, 0xf5, 0xe1, 0x36, 0x88, 0xff, 0x2c, 0xb7, 0x43, 0x34, 0x17, 0x04, 0x1b, 0xc4, 0x6c, 0xf5, 0xdb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x8b, 0x1b, 0x0c, 0x7c, 0xe3, 0x0d, 0x86, 0xd4, 0xef, 0x06, 0x6b, 0xb4, 0x15, 0x36, 0x88, 0xe7, 0x03, 0x93, 0x0d, 0xd6, 0xa0, 0x00, 0x6d, 0xb0, 0xaa, 0x7b, 0x61, 0x83, 0x73, 0xe4, 0xee, 0x06, 0xa3, 0xc1, 0x77, 0x83, 0x21, 0xf5, 0xbb, 0xc1, 0x1a, 0x6d, 0x85, 0x0d, 0x52, 0x9c, 0x49, 0x06, 0xc1, 0x0a, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x91, 0xd9, 0x6f, 0x07, 0xeb, 0xd1, 0xb5, 0x0e, 0x5a, 0xbd, 0x7c, 0x3a, 0x58, 0xcd, 0x00, 0x74, 0x7c, 0x3b, 0x0e, 0x2d, 0x06, 0xd0, 0x42, 0xe6, 0x36, 0x47, 0xf4, 0xd6, 0x16, 0x96, 0xe6, 0x36, 0x87, 0x52, 0x97, 0xe6, 0x46, 0x27, 0x53, 0x63, 0x93, 0x0e, 0xa2, 0x88, 0xfb, 0xed, 0x78, 0x7c, 0x3c, 0x5e, 0x66, 0x01, 0x78, 0x2b, 0xb3, 0x2b, 0x73, 0xa3, 0x6b, 0x61, 0x7b, 0x3b, 0x6b, 0xa1, 0x7b, 0x6b, 0x81, 0x7b, 0x4b, 0x73, 0xa3, 0x6b, 0x21, 0x4b, 0x33, 0x33, 0x37, 0x58, 0x85, 0xe5, 0xb4, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x01, 0x96, 0xb7, 0x36, 0x58, 0x85, 0xe5, 0xb4, 0x86, 0x07, 0x25, 0x37, 0x88, 0xdf, 0xbc, 0xb4, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0x18, 0x0b, 0x8c, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x58, 0xb6, 0x2f, 0xb8, 0xe1, 0xdf, 0xf9, 0x0d, 0xa2, 0xbc, 0x31, 0x6d, 0x83, 0xc8, 0xf1, 0x57, 0xdb, 0x20, 0xee, 0xe7, 0xdf, 0xda, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0x65, 0x13, 0xe6, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0xa5, 0x37, 0xfd, 0x06, 0x6d, 0x5b, 0x8f, 0x1f, 0xc4, 0x6b, 0xbd, 0x5b, 0x1b, 0x2c, 0xb3, 0x66, 0x9a, 0x35, 0x28, 0x26, 0x31, 0x37, 0x08, 0xc1, 0x87, 0x0d, 0xa2, 0xfa, 0x3b, 0xed, 0x60, 0x7d, 0xdc, 0xe0, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0x41, 0xbc, 0x1f, 0xbd, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xd3, 0x0d, 0x62, 0xa2, 0x3d, 0xed, 0x60, 0x7d, 0xdc, 0xe0, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xb1, 0x96, 0xb7, 0xd6, 0xa0, 0x20, 0x8d, 0x5d, 0x83, 0x12, 0x3a, 0x76, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0xef, 0x0e, 0xed, 0x3d, 0xfc, 0x50, 0xb3, 0x86, 0x3f, 0x97, 0x36, 0x68, 0x91, 0xd0, 0xf2, 0xe0, 0x45, 0x04, 0x8f, 0x1d, 0x84, 0xe9, 0xd8, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0x29, 0x43, 0x5a, 0x6b, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0x20, 0x82, 0xf5, 0xdf, 0xd6, 0xe0, 0xe8, 0x3a, 0xb8, 0x41, 0x9c, 0xf2, 0xa4, 0x6d, 0x10, 0x89, 0x0d, 0x6a, 0xb5, 0xc1, 0x31, 0xdc, 0x60, 0xc3, 0x2f, 0x2e, 0x1b, 0x44, 0x20, 0xce, 0xd2, 0x1a, 0xde, 0xb8, 0x3b, 0x78, 0x55, 0x62, 0xe6, 0x41, 0x73, 0x2d, 0xc7, 0x1b, 0x3e, 0xc8, 0x59, 0xc3, 0xbf, 0x39, 0x1b, 0xc4, 0x9a, 0xfe, 0xdb, 0x86, 0xb7, 0x75, 0x36, 0x78, 0x59, 0x87, 0x5a, 0x6b, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x01, 0xef, 0x0e, 0xed, 0x3d, 0x68, 0xce, 0x55, 0x7c, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0x8d, 0xfe, 0x6f, 0x1b, 0xc4, 0xc5, 0xff, 0xdb, 0x1a, 0x1c, 0x5d, 0x07, 0x37, 0x88, 0x53, 0x9e, 0xb4, 0xda, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0x17, 0x97, 0x0d, 0x22, 0x10, 0x67, 0x69, 0x0d, 0x6f, 0xdc, 0x1d, 0x3c, 0x70, 0x32, 0xf3, 0x20, 0xfa, 0x70, 0x96, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x88, 0x35, 0xfd, 0xb7, 0x0d, 0x6f, 0xeb, 0x6c, 0xf0, 0xe6, 0x16, 0xb5, 0xd6, 0xa0, 0x20, 0x8d, 0x5d, 0x83, 0x12, 0x3a, 0x76, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0xd6, 0x35, 0xf9, 0x1e, 0x7e, 0xa8, 0xd9, 0x20, 0x36, 0xf9, 0xdf, 0x3a, 0x08, 0xd3, 0xb1, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x34, 0xfa, 0xbf, 0x6d, 0x10, 0x17, 0xff, 0x6f, 0x6b, 0x70, 0x74, 0x1d, 0xdc, 0x20, 0x4e, 0x79, 0xd2, 0x0e, 0xa2, 0xb0, 0x00, 0xae, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0x61, 0x98, 0xef, 0x1a, 0xde, 0xb8, 0x3b, 0x78, 0x57, 0x67, 0xe6, 0x41, 0xf4, 0xe1, 0x2c, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x10, 0x6b, 0xfa, 0x6f, 0x1b, 0xde, 0xd6, 0xd9, 0x20, 0x9a, 0xfe, 0xdd, 0x5a, 0x83, 0x82, 0x34, 0x76, 0x0d, 0x4a, 0xe8, 0xd8, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x6c, 0xf2, 0xbf, 0xad, 0xe1, 0xcf, 0xa5, 0x0d, 0x5a, 0x24, 0xb4, 0x3c, 0xfc, 0x50, 0xd3, 0x41, 0x98, 0x8e, 0x6d, 0x10, 0xa5, 0x0a, 0x70, 0x1b, 0x1c, 0xc3, 0x0d, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x04, 0xe2, 0x2c, 0xad, 0xe1, 0x8d, 0xbb, 0x83, 0x27, 0x4c, 0x67, 0xae, 0xc1, 0x31, 0xdc, 0xe0, 0xa0, 0x2d, 0xa7, 0xd8, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x88, 0x35, 0xfd, 0xb7, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0xf5, 0x32, 0x6f, 0xad, 0x41, 0x41, 0x1a, 0xbb, 0x41, 0xac, 0x0e, 0xc0, 0x6d, 0x10, 0x71, 0x04, 0x70, 0x1b, 0x1c, 0xc3, 0x0d, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x04, 0xe2, 0x2c, 0x6d, 0x10, 0x2b, 0x12, 0x70, 0x07, 0x65, 0x9d, 0xe7, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0xb1, 0xa6, 0xff, 0xb6, 0xe1, 0x6d, 0x9d, 0x0d, 0xa2, 0xe1, 0xe5, 0xad, 0x35, 0x28, 0x48, 0x63, 0x37, 0x88, 0xb0, 0x07, 0xb8, 0x0d, 0xa2, 0x54, 0x01, 0x6e, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0x40, 0x9c, 0xa5, 0x35, 0xbc, 0x71, 0x77, 0xf0, 0x14, 0x30, 0xc7, 0x0d, 0x8a, 0x9c, 0xd6, 0x83, 0xe6, 0x5a, 0x8e, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x88, 0x35, 0xfd, 0xb7, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0xe5, 0x34, 0x6f, 0xad, 0x41, 0x41, 0x1a, 0xbb, 0x06, 0x25, 0x74, 0xec, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x36, 0xf9, 0xdf, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0x4b, 0xa1, 0x3c, 0x0f, 0x3f, 0xd4, 0x74, 0x10, 0xa6, 0x63, 0x1b, 0x44, 0xa9, 0x02, 0xdc, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0xbf, 0xb8, 0x6c, 0x10, 0x81, 0x38, 0x4b, 0x1b, 0x44, 0x61, 0x06, 0xdc, 0x06, 0x05, 0x6c, 0xfe, 0x41, 0x04, 0x0b, 0x9c, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x10, 0x6b, 0xfa, 0x6f, 0x1b, 0xde, 0xd6, 0xd9, 0x20, 0x46, 0x79, 0xde, 0x5a, 0x83, 0x82, 0x34, 0x76, 0x83, 0x58, 0x1d, 0x80, 0xdb, 0x20, 0xe2, 0x08, 0xe0, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xa0, 0x84, 0x8e, 0x5d, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xe5, 0xba, 0x87, 0x07, 0x4f, 0x3f, 0x97, 0x5b, 0xc3, 0x9f, 0x4b, 0x03, 0x5e, 0x58, 0x1d, 0x7d, 0xf0, 0xf4, 0x73, 0xb9, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x13, 0xea, 0x52, 0x07, 0x65, 0x96, 0xee, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0x00, 0x6d, 0x1c, 0x94, 0x59, 0xba, 0x1d, 0x84, 0xe9, 0xd8, 0x1a, 0x14, 0x9d, 0xc6, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xf8, 0x29, 0x48, 0x6b, 0x0d, 0x6f, 0xeb, 0x6c, 0x70, 0x90, 0x67, 0x3b, 0x58, 0x1f, 0x37, 0xb8, 0xc1, 0xd1, 0x75, 0x70, 0x83, 0x88, 0xc4, 0x76, 0xdb, 0x20, 0x22, 0xb1, 0xdd, 0x0e, 0x22, 0x77, 0x01, 0x6e, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0x40, 0x9c, 0xa5, 0x0d, 0x1e, 0xbb, 0xd2, 0xb9, 0x41, 0x52, 0x29, 0xec, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x78, 0xc2, 0x85, 0xcd, 0xcd, 0xb5, 0x98, 0xc9, 0xbd, 0xb5, 0xb5, 0x94, 0xd1, 0xa1, 0x6d, 0xb0, 0x22, 0xf7, 0x70, 0x83, 0xf7, 0xbb, 0x7e, 0x1f, 0x34, 0xab, 0x41, 0xd5, 0x86, 0x0f, 0x72, 0xd6, 0xf0, 0x6f, 0xce, 0x06, 0xb1, 0xa6, 0xff, 0xb6, 0xe1, 0x6d, 0x9d, 0x0d, 0x62, 0xcc, 0xe7, 0xad, 0x35, 0x28, 0x48, 0x63, 0x37, 0x88, 0xd5, 0x01, 0xb8, 0x0d, 0x22, 0x8e, 0x00, 0x6e, 0x83, 0x82, 0x34, 0x76, 0x0d, 0xdf, 0xb7, 0x6f, 0xd0, 0xe8, 0x1f, 0xe1, 0x41, 0x73, 0xae, 0xe2, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x38, 0x30, 0x81, 0xdb, 0x20, 0x22, 0x4d, 0xe0, 0x0e, 0xe2, 0xa7, 0x00, 0x6e, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0x5f, 0x5c, 0x36, 0x88, 0x40, 0x9c, 0xa5, 0x35, 0xbc, 0x71, 0x77, 0xf0, 0x44, 0xdb, 0xcc, 0x83, 0x26, 0x28, 0x09, 0x37, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x88, 0x35, 0xfd, 0xb7, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x15, 0x39, 0x6f, 0xad, 0x41, 0x41, 0x1a, 0xbb, 0x06, 0x25, 0x74, 0xec, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x36, 0xf9, 0xdf, 0xd6, 0xf0, 0xe7, 0xd2, 0x06, 0xcb, 0xfc, 0xee, 0x0f, 0x5e, 0x44, 0xf0, 0xd8, 0x41, 0x98, 0x8e, 0x6d, 0x10, 0x53, 0xfe, 0x6f, 0x1b, 0x1c, 0xc3, 0x0d, 0x36, 0xfc, 0xe2, 0xb2, 0x41, 0x04, 0xe2, 0x2c, 0xad, 0xe1, 0x8d, 0xbb, 0x83, 0x57, 0x87, 0x67, 0x1e, 0xac, 0xe3, 0xbb, 0xdf, 0xf0, 0x41, 0xce, 0x1a, 0xfe, 0xcd, 0xd9, 0x20, 0xd6, 0xf4, 0xdf, 0x36, 0xbc, 0xad, 0xb3, 0x41, 0x5c, 0xc3, 0xbc, 0xb5, 0x06, 0x05, 0x69, 0xec, 0x1a, 0x94, 0xd0, 0xb1, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0xd8, 0xe4, 0x7f, 0x5b, 0xc3, 0x9f, 0x4b, 0x03, 0x1e, 0xdd, 0x1b, 0x7e, 0xf0, 0x22, 0x82, 0xc7, 0x0e, 0xc2, 0x74, 0x6c, 0x83, 0x98, 0xf2, 0x7f, 0xdb, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0x17, 0x97, 0x0d, 0x22, 0x10, 0x67, 0x69, 0x0d, 0x6f, 0xdc, 0x1d, 0x3c, 0xa5, 0x3d, 0x73, 0x0d, 0x6f, 0xeb, 0x0c, 0x78, 0x74, 0x6f, 0x78, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0xff, 0xe6, 0x6c, 0x10, 0x6b, 0xfa, 0x6f, 0x1b, 0xde, 0xd6, 0xd9, 0x20, 0xce, 0x82, 0xde, 0x5a, 0x83, 0x82, 0x34, 0x76, 0x83, 0x78, 0x9a, 0x81, 0xdb, 0x20, 0xa6, 0xfc, 0xdf, 0x36, 0x38, 0x86, 0x1b, 0x6c, 0xf8, 0xc5, 0x65, 0x83, 0x08, 0xc4, 0x59, 0x5a, 0xc3, 0x1b, 0x77, 0x07, 0xef, 0xc2, 0xcf, 0x3c, 0x58, 0xc7, 0x77, 0xbf, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0xac, 0xe9, 0xbf, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0xa8, 0x1b, 0x7a, 0x6b, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x62, 0x0e, 0x07, 0x6e, 0x83, 0x98, 0xf2, 0x7f, 0xdb, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0x17, 0x97, 0x0d, 0x22, 0x10, 0x67, 0x69, 0x0d, 0x6f, 0xdc, 0x1d, 0x3c, 0x7e, 0x40, 0xf3, 0x20, 0x9a, 0x77, 0xe0, 0x36, 0x58, 0x66, 0xcd, 0x34, 0x6b, 0x78, 0x9b, 0x75, 0xc3, 0xbf, 0x39, 0x1b, 0xc4, 0x9a, 0xfe, 0xdb, 0x86, 0x1f, 0x61, 0x06, 0xbe, 0x0e, 0x3f, 0x88, 0x18, 0xba, 0xb7, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0x10, 0xc1, 0x76, 0x6f, 0x1b, 0xc4, 0x9a, 0xfe, 0x5b, 0x07, 0x05, 0x45, 0xe6, 0x0a, 0xe0, 0x1f, 0x06, 0x07, 0xc7, 0x96, 0xd7, 0x02, 0xf7, 0x96, 0xe6, 0x46, 0xd7, 0x42, 0x96, 0x66, 0x66, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x0f, 0xee, 0x8d, 0x3e, 0x78, 0x9c, 0x60, 0xe6, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0xcc, 0x09, 0x38, 0x78, 0x27, 0x5c, 0x66, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x71, 0x82, 0x99, 0x1b, 0x04, 0xe9, 0xe9, 0x1a, 0x87, 0x0e, 0x92, 0xd8, 0xa1, 0xd6, 0x60, 0xad, 0x4e, 0xf7, 0x86, 0xb7, 0x75, 0x36, 0x48, 0xa8, 0x90, 0x3b, 0x48, 0x62, 0x87, 0x5a, 0x83, 0x87, 0x4c, 0x66, 0x6e, 0xb0, 0x0a, 0x49, 0x69, 0x01, 0x0f, 0xee, 0x8d, 0x6e, 0x0d, 0x52, 0xc0, 0x53, 0x37, 0x38, 0x86, 0x1b, 0x6c, 0xf8, 0xc5, 0x65, 0xc3, 0x83, 0x37, 0x1b, 0x1e, 0xbc, 0xd9, 0xf0, 0xe0, 0xcd, 0x1a, 0x14, 0x39, 0xad, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x1b, 0xc4, 0xad, 0xe6, 0xd2, 0x86, 0xb7, 0x75, 0x36, 0x88, 0x0c, 0x95, 0xa5, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x77, 0x87, 0xf6, 0x1e, 0x24, 0xb1, 0x43, 0x75, 0x50, 0xd6, 0x79, 0xae, 0xc1, 0x43, 0x8c, 0x62, 0x36, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0x89, 0xcd, 0x1a, 0xde, 0xed, 0x59, 0xc3, 0x83, 0x92, 0x1b, 0x44, 0x39, 0xd4, 0xd2, 0x41, 0xbc, 0x3d, 0xc1, 0x1d, 0x44, 0xfd, 0x13, 0xdc, 0x06, 0xc5, 0x24, 0xe6, 0x1a, 0x2c, 0xc5, 0xa8, 0xda, 0x70, 0x75, 0x6d, 0x10, 0x6c, 0xa6, 0x1b, 0x44, 0x36, 0xcf, 0xd2, 0x06, 0x91, 0xd8, 0xb3, 0xd4, 0xe1, 0xcb, 0xc9, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0x7e, 0x71, 0xd9, 0x60, 0xe9, 0x1a, 0xea, 0x41, 0x59, 0xe7, 0xd9, 0x1a, 0xbc, 0x1e, 0x31, 0x73, 0xc3, 0x25, 0xb5, 0x41, 0x04, 0x33, 0xc1, 0xad, 0x06, 0x8f, 0x6d, 0x50, 0x1b, 0xf0, 0xde, 0xee, 0xdc, 0x0e, 0xe2, 0x6d, 0x09, 0xae, 0x35, 0x78, 0xe4, 0x80, 0xe6, 0x86, 0x4b, 0x6a, 0x83, 0x08, 0x66, 0x82, 0x5b, 0x0d, 0xde, 0xe4, 0x9f, 0x76, 0x10, 0x29, 0x57, 0x70, 0x07, 0xf1, 0xb6, 0x04, 0xd7, 0x1a, 0xbc, 0x2e, 0x3c, 0x73, 0xc3, 0x25, 0xb5, 0x41, 0x04, 0x33, 0xc1, 0xad, 0x06, 0x2f, 0xc1, 0x54, 0x3b, 0x88, 0x94, 0x2b, 0xb8, 0x83, 0x78, 0x5b, 0x82, 0x6b, 0x0d, 0x9e, 0xcc, 0x9e, 0xb9, 0xe1, 0x92, 0xda, 0x20, 0x82, 0x99, 0xe0, 0x56, 0x83, 0xb7, 0xa2, 0xaa, 0x1d, 0x44, 0xca, 0x15, 0xdc, 0x41, 0xbc, 0x2d, 0xc1, 0xb5, 0x1a, 0x04, 0x9b, 0xe9, 0x06, 0x0f, 0x3b, 0xcd, 0xdc, 0xe0, 0x29, 0xb6, 0x99, 0x1b, 0x3c, 0xf9, 0xcb, 0x71, 0x83, 0xa7, 0x4a, 0x67, 0xb6, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x45, 0x2a, 0xe6, 0x06, 0x25, 0x55, 0xf8, 0x41, 0x04, 0x33, 0xc1, 0x6d, 0x10, 0xa4, 0xa7, 0x1b, 0xc4, 0xb0, 0x12, 0xdc, 0x1a, 0x3c, 0xec, 0x34, 0x73, 0xc3, 0x25, 0xb5, 0x41, 0x04, 0x33, 0xc1, 0xad, 0x06, 0x8f, 0xb1, 0xb1, 0x1b, 0xbc, 0x3e, 0x48, 0x01, 0x4f, 0xdd, 0xf0, 0xb6, 0xce, 0x06, 0x8f, 0xb1, 0xb1, 0x3b, 0x48, 0x62, 0x87, 0x5a, 0x0d, 0x5a, 0x38, 0x1d, 0x3f, 0x88, 0x94, 0x30, 0xb8, 0x0d, 0x6f, 0xeb, 0x6c, 0xd0, 0xc2, 0xe9, 0xf8, 0x41, 0x12, 0x3b, 0x54, 0x6b, 0xf0, 0xe4, 0x2f, 0xc7, 0x0d, 0x97, 0xd4, 0x06, 0x11, 0xcc, 0x04, 0xb7, 0x1a, 0x3c, 0x98, 0x8e, 0xeb, 0x20, 0x52, 0xc2, 0xe0, 0x0e, 0xe2, 0x6d, 0x09, 0x6e, 0x35, 0x78, 0xc8, 0x9f, 0xda, 0x41, 0xa4, 0x84, 0xc1, 0x6d, 0xf8, 0x20, 0x67, 0x0d, 0x6f, 0xeb, 0x6c, 0x50, 0x72, 0x37, 0x1c, 0x44, 0xe9, 0x12, 0xdc, 0x06, 0x05, 0x45, 0xe6, 0x86, 0xb7, 0x75, 0x36, 0x78, 0xc8, 0x9f, 0xda, 0xe0, 0xf5, 0x41, 0xfc, 0x7b, 0xc1, 0xb5, 0x06, 0x4f, 0xb1, 0xcd, 0xdc, 0x70, 0x49, 0x6d, 0x10, 0xc1, 0x4c, 0x70, 0xab, 0xc1, 0x63, 0x73, 0x32, 0x0f, 0x22, 0x25, 0x0c, 0xee, 0x20, 0xde, 0x96, 0xe0, 0x5a, 0x83, 0xa7, 0x4a, 0x67, 0x6e, 0xb8, 0xa4, 0x36, 0x88, 0x60, 0x26, 0xb8, 0x35, 0x88, 0xaa, 0x32, 0xb8, 0x83, 0x78, 0x5b, 0x82, 0xab, 0xd5, 0x20, 0xd8, 0x4c, 0x37, 0x78, 0x3f, 0x67, 0xe6, 0x06, 0xef, 0xbf, 0xcf, 0x6c, 0x83, 0x82, 0x0f, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x8a, 0x54, 0xcc, 0x01, 0x6f, 0x2d, 0x8d, 0x3c, 0x88, 0x60, 0x26, 0xb8, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0x18, 0x56, 0x82, 0x5b, 0x83, 0xf7, 0x73, 0x66, 0x6e, 0x70, 0xb4, 0xe1, 0x5b, 0xc3, 0x25, 0xb5, 0x41, 0x04, 0x33, 0xc1, 0xad, 0x06, 0x6f, 0x6e, 0x51, 0x3b, 0x78, 0x3f, 0x52, 0xcc, 0xe1, 0x99, 0xc9, 0x36, 0xbc, 0xdb, 0xb3, 0x06, 0x65, 0xc9, 0xfb, 0x06, 0x65, 0x0b, 0xea, 0x06, 0x65, 0xd3, 0xfb, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0xcd, 0x2d, 0x6a, 0x83, 0xd7, 0x07, 0x11, 0xcc, 0x06, 0xd7, 0x41, 0xd4, 0x3f, 0xc1, 0xad, 0xc1, 0xfb, 0xef, 0x33, 0x37, 0x5c, 0x52, 0x1b, 0x44, 0x30, 0x13, 0xdc, 0x6a, 0xf0, 0x58, 0x5c, 0xb5, 0x83, 0xf7, 0x23, 0xc5, 0x1c, 0xc4, 0xdb, 0x12, 0x5c, 0xb5, 0x02, 0xfc, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2d, 0x69, 0xe4, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xc0, 0xa7, 0x91, 0x07, 0xe7, 0xd9, 0xd1, 0x0d, 0x7f, 0xd1, 0xac, 0xe1, 0xdf, 0xf9, 0x35, 0x88, 0x3c, 0x26, 0xb7, 0x36, 0x68, 0xf3, 0x91, 0xba, 0x0d, 0x0e, 0x58, 0x74, 0x6b, 0xb0, 0xa4, 0x7e, 0x69, 0x83, 0xa6, 0x70, 0x42, 0x37, 0x28, 0x3a, 0x8d, 0x37, 0x58, 0xb0, 0x83, 0xbe, 0x41, 0x53, 0x38, 0xa1, 0x1b, 0xac, 0x10, 0x6a, 0xda, 0x60, 0x3d, 0x30, 0xe8, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x61, 0x47, 0xea, 0x35, 0xbc, 0x71, 0x77, 0x10, 0xa1, 0xc2, 0x6e, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0xe0, 0x61, 0x46, 0xa2, 0x6b, 0x78, 0x5b, 0x67, 0x80, 0x7f, 0x0e, 0x2d, 0x0d, 0xce, 0x2d, 0xac, 0xad, 0xac, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0xc3, 0x8e, 0xd4, 0x6b, 0x78, 0xe3, 0xee, 0x20, 0x1e, 0x8a, 0xdd, 0xd6, 0xf0, 0x23, 0xcc, 0xe0, 0xf4, 0x41, 0x24, 0xfe, 0xbe, 0x1d, 0xc4, 0x80, 0x1e, 0xdc, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0x61, 0x47, 0xea, 0x35, 0xbc, 0x71, 0x77, 0x10, 0x43, 0xc6, 0x6e, 0x6b, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0x20, 0x0e, 0x78, 0xdf, 0x0e, 0x16, 0xfa, 0xb7, 0xb6, 0xcc, 0x1a, 0x04, 0x05, 0xd6, 0x06, 0x85, 0x72, 0xe7, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xac, 0x1a, 0x08, 0x3e, 0x38, 0x6f, 0x9e, 0xae, 0xe1, 0xcf, 0xa5, 0x0d, 0xc6, 0xaa, 0xc0, 0xc1, 0x79, 0x76, 0x74, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x72, 0x75, 0xec, 0xc1, 0xd2, 0x54, 0xd1, 0x36, 0x58, 0x21, 0xd4, 0xb4, 0xc1, 0x8a, 0x8a, 0xd0, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x12, 0x9c, 0xd0, 0x0d, 0x16, 0x97, 0x04, 0xaf, 0xe1, 0xdd, 0x9e, 0x0d, 0x16, 0x3e, 0x8c, 0x6e, 0x70, 0x1e, 0xef, 0xaa, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x42, 0x4d, 0xd2, 0x0d, 0xda, 0x27, 0xb8, 0xdc, 0x20, 0x82, 0x9c, 0x9d, 0x6a, 0x35, 0x88, 0x20, 0x3d, 0xb8, 0x83, 0x55, 0xb8, 0xe8, 0x87, 0x53, 0xac, 0xc3, 0x29, 0x36, 0x6b, 0x10, 0x37, 0x2a, 0x70, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0xc4, 0xa1, 0x08, 0xdc, 0x06, 0xd1, 0x34, 0x02, 0xb7, 0x41, 0x54, 0x90, 0xc0, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x1e, 0x70, 0x93, 0xb9, 0xc1, 0xaa, 0x5e, 0xa5, 0x0d, 0xca, 0x7a, 0xdb, 0x0d, 0x8a, 0x4a, 0xf1, 0x0d, 0x96, 0xe3, 0xc6, 0x6d, 0x50, 0xec, 0x68, 0xae, 0xe1, 0x11, 0xd6, 0x35, 0xfc, 0x9b, 0xb3, 0xe1, 0x31, 0x99, 0x83, 0x06, 0xce, 0xa6, 0xd6, 0xf0, 0x6f, 0xce, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x58, 0xac, 0x7b, 0x78, 0x90, 0x7a, 0x1a, 0xbb, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0xb6, 0xce, 0xc1, 0x23, 0x57, 0xc0, 0x0f, 0x52, 0x4f, 0x63, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x94, 0xf5, 0xb6, 0x1b, 0x1c, 0x56, 0xe6, 0x0e, 0xce, 0xbb, 0x7b, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0xac, 0xb7, 0xdd, 0xe0, 0xb0, 0x32, 0xb7, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x9e, 0xf6, 0xfa, 0xbd, 0x86, 0xb7, 0x75, 0x06, 0x8f, 0x0f, 0x16, 0xeb, 0x1e, 0x76, 0x38, 0xc5, 0x16, 0xc0, 0x17, 0xee, 0x2d, 0xcd, 0x8d, 0xae, 0xc5, 0x4c, 0xee, 0xad, 0xad, 0xa5, 0x8c, 0x0e, 0xdd, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x4e, 0xce, 0x96, 0xd6, 0xf0, 0xef, 0xfc, 0x06, 0x2f, 0x17, 0xcc, 0x5c, 0x83, 0x48, 0xbd, 0x77, 0xab, 0x35, 0xfc, 0x3b, 0xbf, 0x06, 0xd1, 0x91, 0xee, 0xd6, 0x41, 0x24, 0x47, 0xc2, 0xb5, 0xe1, 0x2f, 0x9a, 0x0d, 0x1e, 0x27, 0x98, 0xb9, 0xc1, 0x39, 0x7f, 0x69, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0x83, 0x38, 0x51, 0x77, 0x5b, 0xc3, 0xdb, 0x3a, 0x1b, 0xbc, 0x04, 0x53, 0xad, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x5b, 0x51, 0xd5, 0x5a, 0xc3, 0xdb, 0x3a, 0x07, 0x2f, 0xf2, 0x4f, 0x6b, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xbc, 0xad, 0x73, 0x10, 0xa7, 0xdd, 0x6e, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0xc4, 0xdf, 0xc0, 0x5b, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xe8, 0x4f, 0x81, 0x5b, 0xc3, 0xdb, 0x3a, 0x1b, 0x44, 0x85, 0xbe, 0x5b, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xa8, 0xdc, 0x77, 0x6b, 0x83, 0x67, 0x9b, 0x7a, 0xb6, 0x86, 0xb7, 0x75, 0x36, 0x78, 0x6c, 0x4e, 0x66, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xeb, 0x6c, 0x10, 0x59, 0xfd, 0x6e, 0xad, 0xe1, 0xeb, 0x97, 0x0d, 0xa2, 0x3a, 0x5e, 0x66, 0xc3, 0xd7, 0x2f, 0x1b, 0x3e, 0x84, 0xd9, 0xf0, 0xb6, 0xce, 0xc1, 0x63, 0xa5, 0x39, 0x5b, 0x83, 0x62, 0x47, 0x73, 0x83, 0x98, 0x74, 0x80, 0xdb, 0xa0, 0xa0, 0xc8, 0xdc, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0xeb, 0x97, 0x0d, 0xa2, 0x3a, 0x5e, 0x66, 0xc3, 0xd7, 0x2f, 0x1b, 0x3e, 0x84, 0xd9, 0xf0, 0xb6, 0xce, 0x06, 0x91, 0x19, 0xf0, 0x56, 0x1b, 0x14, 0x3b, 0x9a, 0x6b, 0xf8, 0xc4, 0x66, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xfd, 0x51, 0x70, 0x07, 0xd1, 0x87, 0xb3, 0x74, 0x10, 0x0f, 0x53, 0x70, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0x14, 0x14, 0x99, 0x1b, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x3c, 0x16, 0x57, 0xad, 0x83, 0xb2, 0xce, 0xf3, 0x70, 0x8a, 0x2d, 0x80, 0xbf, 0x59, 0x9d, 0xdb, 0x18, 0x5d, 0xda, 0x9b, 0x5b, 0x0b, 0xdd, 0x5b, 0xcb, 0x58, 0x18, 0x1b, 0xbb, 0x41, 0xc9, 0xc2, 0x3e, 0xcb, 0xac, 0x41, 0xe4, 0x31, 0xb9, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x7f, 0x2e, 0x0d, 0x78, 0x63, 0x61, 0xec, 0x41, 0x6c, 0xd5, 0xc1, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0x79, 0x74, 0x70, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xa2, 0xb6, 0x78, 0xc3, 0xbf, 0xf3, 0x1b, 0x44, 0xae, 0x6c, 0xda, 0x41, 0xf4, 0xd5, 0xbf, 0xb5, 0x41, 0x90, 0x9e, 0xae, 0x71, 0xe8, 0x20, 0x4a, 0x45, 0xd5, 0xd6, 0x20, 0xe2, 0x84, 0xdd, 0x36, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x91, 0x85, 0xd7, 0xf0, 0x2c, 0xde, 0xe0, 0xf0, 0xe0, 0xef, 0xe0, 0xe9, 0xe0, 0xee, 0xe0, 0xf4, 0xe0, 0xf3, 0xa0, 0x68, 0xd9, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xed, 0xd9, 0x60, 0x31, 0x63, 0xf0, 0x06, 0xcb, 0xd7, 0x5e, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x77, 0x87, 0xf6, 0x1e, 0x44, 0xa9, 0xa8, 0x5a, 0x1d, 0xb4, 0x7d, 0xf9, 0xd4, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0x23, 0xcc, 0xe0, 0xf4, 0x41, 0x2c, 0x6d, 0xbf, 0xad, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0xe2, 0x94, 0x27, 0x6d, 0xc3, 0xd7, 0x2f, 0x1b, 0x3e, 0x84, 0xd9, 0xf0, 0xf5, 0xcb, 0x86, 0x0f, 0x61, 0x0e, 0x22, 0x75, 0x15, 0xae, 0xd6, 0x20, 0x56, 0x87, 0xdd, 0x36, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0xcb, 0x91, 0x85, 0xd7, 0xf0, 0x2c, 0xde, 0xe0, 0xf2, 0xe0, 0xe9, 0xe0, 0xe7, 0xe0, 0xe8, 0x41, 0xfc, 0xa8, 0xc2, 0xb5, 0xe1, 0x17, 0x97, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x7d, 0x10, 0x1d, 0xe0, 0x6f, 0x07, 0x71, 0xd9, 0x0a, 0xb7, 0x06, 0xf1, 0x4d, 0xec, 0xb6, 0x41, 0x61, 0xa8, 0xba, 0x86, 0x77, 0x7b, 0x36, 0x58, 0x8e, 0x2c, 0xbc, 0x86, 0x67, 0xf1, 0x06, 0x3f, 0x07, 0x2f, 0x07, 0xa7, 0x07, 0x9f, 0x06, 0x87, 0x07, 0x0f, 0x07, 0xbf, 0x07, 0x77, 0x07, 0x2f, 0x07, 0x27, 0x0f, 0xe2, 0x4f, 0x15, 0xae, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0xc8, 0x31, 0x7f, 0x3b, 0x88, 0xcb, 0x56, 0xb8, 0x35, 0x88, 0x09, 0x63, 0xb7, 0x0d, 0x0a, 0x43, 0xd5, 0x35, 0xbc, 0xdb, 0xb3, 0xc1, 0x72, 0x64, 0xe1, 0x35, 0x3c, 0x8b, 0x37, 0x38, 0x39, 0xb8, 0x3b, 0xf8, 0x3c, 0x38, 0x31, 0xf8, 0x3b, 0x78, 0x3b, 0x78, 0x38, 0x78, 0x3a, 0xb8, 0x3b, 0xf8, 0x3c, 0x28, 0x5a, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x77, 0x7b, 0x36, 0x58, 0xcc, 0x18, 0xbc, 0x41, 0x22, 0x5c, 0xf0, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0xc1, 0x83, 0xcb, 0x41, 0x94, 0x8a, 0xaa, 0xd5, 0x41, 0xdb, 0x97, 0x4f, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x1f, 0xc4, 0xa9, 0xfb, 0xdb, 0x1a, 0x1c, 0x5d, 0x07, 0xd7, 0x20, 0x4e, 0x79, 0xd2, 0x0e, 0x62, 0x46, 0x17, 0xae, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0xb7, 0x6a, 0x60, 0x6c, 0x38, 0x11, 0x36, 0x78, 0x5e, 0x05, 0xc6, 0x1a, 0xce, 0x91, 0x41, 0xb0, 0x38, 0x08, 0x36, 0xc4, 0x70, 0x71, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x10, 0x2c, 0x48, 0x06, 0x86, 0xea, 0xe0, 0x98, 0x55, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0x90, 0x98, 0x5a, 0x1c, 0x04, 0x2b, 0x08, 0x16, 0x7e, 0x43, 0x72, 0x69, 0x90, 0x0c, 0x08, 0xff, 0xbb, 0x83, 0x20, 0xe7, 0x3f, 0xa4, 0xe1, 0x0e, 0x86, 0xac, 0xef, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0x38, 0x74, 0x68, 0xd4, 0x72, 0x68, 0xfe, 0x72, 0x3c, 0x5e, 0x5c, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x85, 0x5f, 0x10, 0x2c, 0x48, 0x06, 0x56, 0xfa, 0x0e, 0x4e, 0x67, 0xc8, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x92, 0x81, 0xe6, 0x4b, 0x07, 0xc3, 0x51, 0xfa, 0x38, 0x74, 0x7c, 0x1b, 0x7e, 0x41, 0xb4, 0x90, 0x41, 0xb0, 0x38, 0xec, 0x86, 0x44, 0xc0, 0x86, 0xd4, 0xc1, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x6c, 0xd0, 0x0c, 0xd6, 0xff, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x26, 0xba, 0xfe, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0xdc, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x9b, 0x00, 0xcf, 0xb1, 0xb7, 0xb6, 0xb2, 0x16, 0xb7, 0x37, 0xba, 0x96, 0xb5, 0x34, 0xb7, 0xf3, 0x20, 0x5a, 0xf9, 0x65, 0x86, 0xdf, 0x78, 0xbe, 0x78, 0x10, 0x01, 0xca, 0x70, 0x07, 0x63, 0xc2, 0xea, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x0f, 0xbb, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x06, 0xcf, 0x3e, 0x08, 0x38, 0x68, 0x33, 0xce, 0xff, 0xa0, 0x88, 0x3a, 0x39, 0x88, 0xc1, 0x61, 0x99, 0x05, 0xc9, 0x90, 0x41, 0xb4, 0xc1, 0x50, 0xb2, 0x1a, 0x44, 0x0b, 0x3b, 0x08, 0x16, 0x04, 0x1b, 0x34, 0x3a, 0x23, 0x72, 0x50, 0x30, 0x3a, 0x1c, 0x14, 0x51, 0x27, 0xc7, 0xe3, 0xc3, 0x29, 0x76, 0x7c, 0x3b, 0x1e, 0x0f, 0x82, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x85, 0x5f, 0xf8, 0x05, 0xc9, 0x40, 0xf1, 0x3a, 0x18, 0xfe, 0xb1, 0x07, 0x0b, 0x2b, 0xcc, 0x0e, 0xce, 0x4f, 0xb4, 0x07, 0x6b, 0xf9, 0x04, 0x0e, 0x16, 0x67, 0x01, 0x0d, 0x82, 0x85, 0xdf, 0x20, 0xd6, 0x4b, 0x72, 0x0e, 0xd2, 0x2d, 0xa5, 0x87, 0x5d, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0x83, 0xd8, 0x48, 0xed, 0x39, 0x68, 0x33, 0xce, 0xff, 0x60, 0x60, 0x8b, 0x1e, 0x44, 0x08, 0xb2, 0xcc, 0xc2, 0x2e, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0xea, 0xcd, 0x72, 0xd0, 0xe2, 0x26, 0xcb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xe1, 0x37, 0x88, 0x8d, 0xd4, 0x9e, 0x83, 0x96, 0x8d, 0x44, 0x0e, 0x06, 0xb6, 0xe8, 0x71, 0x68, 0x0d, 0x12, 0x8f, 0x7d, 0x36, 0x0e, 0x6d, 0x88, 0xe1, 0x1a, 0x8e, 0xf6, 0xe1, 0x17, 0x7e, 0x43, 0xea, 0xe0, 0xa0, 0x64, 0x68, 0x3a, 0x28, 0x19, 0x9a, 0x0e, 0x31, 0x1c, 0x24, 0x43, 0x06, 0xd1, 0x82, 0xf6, 0x83, 0x88, 0x57, 0xbd, 0x39, 0x24, 0x97, 0x0e, 0x22, 0x17, 0x1b, 0xee, 0xf8, 0x76, 0x3c, 0x5e, 0x71, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0x83, 0x60, 0xe1, 0x17, 0x7e, 0x83, 0xa8, 0x07, 0x1d, 0x3a, 0x38, 0xd0, 0xdc, 0x1e, 0xac, 0xe5, 0x13, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0xfc, 0xc2, 0x6f, 0x10, 0xf5, 0xa0, 0x43, 0x07, 0xa7, 0x30, 0xdc, 0x83, 0x72, 0x28, 0x69, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0x48, 0xc0, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x86, 0xdf, 0x78, 0xbe, 0x18, 0xf0, 0x9f, 0x95, 0xd1, 0x41, 0xbd, 0xa5, 0xb9, 0xd1, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x6b, 0x6f, 0x48, 0x0e, 0x5e, 0xfa, 0xe9, 0x30, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x5d, 0xf8, 0x8d, 0xe7, 0xe3, 0x41, 0xd3, 0xd7, 0xe3, 0xc3, 0x6f, 0x3c, 0xdf, 0x60, 0x8d, 0xb6, 0xc2, 0x20, 0x58, 0x90, 0x0c, 0x84, 0xee, 0xe0, 0xec, 0x65, 0x7c, 0xf0, 0x90, 0xfc, 0x8b, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x74, 0x1c, 0x3a, 0x1e, 0x2f, 0x08, 0x36, 0x18, 0xf9, 0x0f, 0x8b, 0x83, 0x60, 0xe1, 0x17, 0x7e, 0x83, 0xb8, 0x0b, 0xb0, 0x39, 0x38, 0x3f, 0xd1, 0x1e, 0x1c, 0x68, 0x6e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0xdf, 0x20, 0x1a, 0xb4, 0xdb, 0xd6, 0xa0, 0x95, 0xd2, 0xfc, 0x83, 0xf5, 0x51, 0x1f, 0x6b, 0x10, 0xcf, 0xda, 0x6d, 0x1b, 0xac, 0xd1, 0x56, 0x38, 0x34, 0x12, 0x5c, 0x83, 0x38, 0xdd, 0x6e, 0xdb, 0x60, 0x0d, 0x0a, 0xd0, 0x41, 0x50, 0x7a, 0x1f, 0x62, 0x78, 0x1c, 0x3a, 0x1e, 0x2f, 0x08, 0x16, 0x7e, 0xe1, 0x37, 0x88, 0x80, 0x4c, 0x8c, 0x83, 0x03, 0xcd, 0xed, 0xc1, 0x5a, 0x3e, 0x81, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0xc2, 0x2f, 0xfc, 0x06, 0x11, 0x90, 0x89, 0x71, 0x70, 0x0a, 0xc3, 0x3d, 0x28, 0x87, 0x92, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x8c, 0x3b, 0xa8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x3f, 0x78, 0x03, 0x7b, 0xd0, 0xf0, 0x1b, 0xcf, 0xc7, 0x01, 0xbe, 0xb3, 0x32, 0x3a, 0x22, 0xb7, 0xb9, 0xe3, 0xd0, 0x71, 0xe8, 0x38, 0x34, 0x08, 0x36, 0x88, 0x24, 0x74, 0xb8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x31, 0x9f, 0x0e, 0x37, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x06, 0xe7, 0xc8, 0xdd, 0x41, 0xb0, 0x41, 0x32, 0xd2, 0xc7, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc9, 0x06, 0x31, 0x4f, 0x91, 0x73, 0x70, 0xf6, 0x32, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x30, 0xf0, 0x43, 0x0e, 0xd2, 0x0d, 0x1c, 0x8e, 0x43, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x36, 0x18, 0x09, 0x38, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xe9, 0x8b, 0x9c, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x06, 0x43, 0xb1, 0x68, 0xe1, 0x37, 0x9e, 0x8f, 0x81, 0x7e, 0x16, 0xc6, 0xd6, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xf6, 0x70, 0xb8, 0x83, 0x85, 0xc9, 0x3f, 0xc7, 0xa1, 0x83, 0x28, 0xf6, 0x86, 0x3b, 0x0e, 0x1d, 0x8f, 0x8f, 0x43, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0x78, 0x41, 0xb0, 0xc2, 0x6f, 0xf0, 0x4a, 0x08, 0x93, 0xe3, 0xdb, 0xf0, 0x0b, 0xbf, 0x41, 0x60, 0x62, 0x1f, 0xc4, 0x90, 0xc7, 0xce, 0xf1, 0x6d, 0x71, 0x10, 0x6c, 0x10, 0x07, 0xd3, 0x6f, 0xc3, 0x6e, 0x10, 0x21, 0xc8, 0x32, 0x0b, 0xbf, 0xf1, 0x7c, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0x31, 0xe7, 0xf8, 0x76, 0x48, 0xc3, 0x0d, 0xbb, 0x41, 0xa4, 0x1a, 0xcb, 0x6c, 0x10, 0x07, 0xfa, 0x70, 0xc3, 0x6e, 0x10, 0xbd, 0xc2, 0x32, 0x1b, 0xc4, 0x81, 0x3e, 0xdc, 0x20, 0xdb, 0xd0, 0x7c, 0x7d, 0xf8, 0x8d, 0xe7, 0xc3, 0x6e, 0xd0, 0xe2, 0x14, 0xcc, 0xe2, 0x18, 0xe0, 0xe3, 0xf6, 0x46, 0xd7, 0x22, 0xf6, 0xf6, 0x46, 0x57, 0x46, 0x0e, 0xbb, 0x04, 0xc9, 0xdb, 0x35, 0xc4, 0x70, 0x82, 0xec, 0xed, 0x38, 0x06, 0xf8, 0xb8, 0xbd, 0xb5, 0xcc, 0xc1, 0xbd, 0xb9, 0xcd, 0xbd, 0xc9, 0xc7, 0xe3, 0x15, 0x17, 0x04, 0x1b, 0x8c, 0xfc, 0x87, 0xc5, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x85, 0x5f, 0xf8, 0x85, 0xdf, 0xb0, 0x42, 0x3b, 0xfc, 0xc2, 0x6f, 0x10, 0x98, 0xd8, 0x83, 0x64, 0x20, 0xef, 0x75, 0x10, 0xe4, 0xfc, 0x07, 0x25, 0x43, 0xd3, 0xc1, 0xc1, 0x19, 0xfd, 0xe0, 0x14, 0x86, 0x7b, 0x50, 0x32, 0x34, 0x1d, 0x5a, 0x80, 0x0d, 0xbb, 0xc1, 0xa8, 0x97, 0x5c, 0x90, 0xad, 0x41, 0x5b, 0x20, 0x2b, 0x1b, 0x62, 0x38, 0x08, 0x16, 0x7e, 0xe1, 0x37, 0x64, 0x2b, 0x0e, 0x62, 0x1d, 0x20, 0xee, 0xe0, 0x25, 0x05, 0x39, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0x22, 0x08, 0xe2, 0x0e, 0x1a, 0x28, 0xcc, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x5c, 0xc3, 0xc4, 0xad, 0xa1, 0x8e, 0x6f, 0x78, 0xf9, 0x6e, 0x02, 0xbc, 0xe1, 0xde, 0xd2, 0xdc, 0xe8, 0x5a, 0xe8, 0xc2, 0xd6, 0xca, 0x5a, 0xc8, 0xc2, 0xee, 0xdc, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x13, 0xe0, 0x97, 0xe6, 0x66, 0x17, 0xc6, 0x96, 0x46, 0xd6, 0xa2, 0x36, 0xf7, 0xe6, 0x6e, 0x10, 0x75, 0x07, 0x71, 0x07, 0xb1, 0x8e, 0x10, 0x77, 0x1c, 0x3a, 0x0e, 0x1d, 0x62, 0x38, 0x08, 0x16, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0xc2, 0x2f, 0xfc, 0xc6, 0xe3, 0xe1, 0x17, 0x7e, 0x83, 0x88, 0x20, 0x88, 0x3b, 0x88, 0x0c, 0x8f, 0xb6, 0x83, 0x92, 0xa1, 0xe9, 0xe0, 0x8d, 0xfd, 0x1d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0xaf, 0x18, 0xe0, 0xf1, 0x76, 0xe7, 0x56, 0x26, 0x37, 0x87, 0x96, 0x06, 0x0f, 0x82, 0x0d, 0x62, 0x66, 0x21, 0x6e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xb8, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0x78, 0x7e, 0x10, 0x81, 0x0b, 0x71, 0x07, 0x6f, 0xec, 0xef, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0x0d, 0x62, 0xda, 0x76, 0x6d, 0x10, 0x2c, 0xfc, 0x06, 0x51, 0xf7, 0x10, 0x77, 0x70, 0xf8, 0xb5, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x88, 0xcc, 0xf8, 0x9b, 0x83, 0x43, 0xe8, 0xed, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x20, 0xea, 0x1e, 0xe2, 0x0e, 0x56, 0x6f, 0xa2, 0x1d, 0x87, 0x0e, 0x06, 0x7e, 0xc8, 0x71, 0x68, 0xc5, 0x83, 0x28, 0x68, 0x77, 0x3b, 0x28, 0x19, 0x9a, 0xd6, 0xe0, 0x99, 0x0d, 0x6a, 0x07, 0x25, 0x43, 0xd3, 0x8a, 0x07, 0x51, 0xb3, 0xee, 0x76, 0x50, 0x32, 0x34, 0xad, 0x78, 0x10, 0x85, 0xee, 0x6e, 0x07, 0x25, 0x43, 0xd3, 0x8a, 0x07, 0x51, 0x01, 0xef, 0x76, 0x50, 0x32, 0x34, 0x1d, 0x62, 0x78, 0x50, 0x0e, 0x25, 0x1d, 0x87, 0x56, 0x0c, 0x78, 0xdd, 0xca, 0xe8, 0xee, 0xde, 0xe4, 0xd6, 0x41, 0xb0, 0x41, 0xcc, 0x2c, 0xc4, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0xbe, 0x06, 0x31, 0xf0, 0xfb, 0x32, 0x08, 0x16, 0x7e, 0x83, 0x58, 0x5a, 0x88, 0x3b, 0x28, 0x19, 0x9a, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0xe1, 0x37, 0x88, 0xa5, 0x85, 0xb8, 0x83, 0x13, 0x21, 0xf4, 0x41, 0xca, 0xc7, 0xc5, 0x71, 0x68, 0x0d, 0xde, 0xd0, 0xa3, 0x36, 0x08, 0x36, 0x88, 0x99, 0x85, 0xb8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x5f, 0x3c, 0x78, 0x8c, 0x8d, 0xdd, 0x41, 0xac, 0x66, 0xc4, 0x1d, 0x0c, 0xfc, 0x90, 0xe3, 0xd0, 0x1a, 0xbc, 0xa1, 0x47, 0x6d, 0x10, 0x2c, 0xfc, 0x06, 0xb1, 0xb4, 0x10, 0x77, 0x70, 0xf8, 0xb5, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x28, 0xdc, 0x92, 0x0e, 0xd2, 0xb8, 0x4f, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x99, 0x85, 0xb8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x57, 0x3c, 0x88, 0x8b, 0xb4, 0xa0, 0x41, 0xb0, 0x41, 0xec, 0x7a, 0xc4, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0x62, 0x69, 0x21, 0xee, 0x20, 0xde, 0x91, 0x8c, 0x0e, 0x92, 0xb7, 0x4e, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0xe4, 0x8c, 0xb8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x87, 0xdf, 0x78, 0x3c, 0x08, 0x16, 0x7e, 0xe3, 0xf1, 0xf0, 0x1b, 0xc4, 0xd2, 0x42, 0xdc, 0x20, 0x19, 0x68, 0x4e, 0x75, 0x30, 0x0c, 0x7d, 0x06, 0xc1, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x41, 0x2c, 0x2d, 0xc4, 0x1d, 0xac, 0xd7, 0x28, 0x39, 0x58, 0xd0, 0xbd, 0x35, 0x08, 0x36, 0x08, 0xb2, 0xf8, 0xc5, 0x41, 0xb0, 0xf0, 0x1b, 0xb2, 0x15, 0xc3, 0x6f, 0x10, 0x4b, 0x0b, 0x71, 0x07, 0x6d, 0x76, 0xe7, 0x1f, 0xac, 0xc4, 0x17, 0x39, 0x1e, 0x1f, 0x87, 0x8e, 0x43, 0x6b, 0x10, 0x23, 0xa8, 0x1f, 0x07, 0x11, 0x21, 0x12, 0xb7, 0x62, 0xc0, 0x33, 0x57, 0x97, 0x46, 0x57, 0x1e, 0xc4, 0x6a, 0x46, 0xdc, 0x21, 0x86, 0xc7, 0xa1, 0xe3, 0xd0, 0x1a, 0x3c, 0x95, 0x8e, 0x6b, 0x10, 0x6c, 0x10, 0x33, 0x0b, 0x71, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x78, 0x50, 0x72, 0x37, 0x0c, 0xbf, 0x41, 0x2c, 0x2d, 0xc4, 0x1d, 0xb4, 0xb5, 0xc1, 0xb4, 0xf0, 0x1b, 0xcf, 0x17, 0x03, 0xef, 0x0e, 0xed, 0x1d, 0x7e, 0x83, 0x58, 0x5a, 0x88, 0x3b, 0x88, 0x8d, 0x22, 0x95, 0x83, 0x81, 0x1f, 0x72, 0x1c, 0x3a, 0xc4, 0xf0, 0x38, 0x74, 0x88, 0xe1, 0x71, 0x68, 0x10, 0x2c, 0x48, 0x06, 0x4a, 0xdd, 0xc1, 0xc2, 0xe1, 0x84, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0x5f, 0x3c, 0x58, 0x3b, 0x5d, 0x7c, 0x1c, 0x3a, 0x18, 0xf8, 0x21, 0xc7, 0xa1, 0x83, 0x11, 0x85, 0x3b, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x41, 0xb6, 0x06, 0x6d, 0x81, 0xac, 0x6c, 0x88, 0xe1, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0x20, 0xc8, 0xf9, 0x0f, 0x62, 0x1d, 0x20, 0xee, 0xe0, 0x25, 0x05, 0x39, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0xea, 0x66, 0xe2, 0x0e, 0x1a, 0x28, 0xcc, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x5c, 0xc3, 0xc4, 0x6d, 0x10, 0x0b, 0x07, 0x71, 0x1b, 0xea, 0xf8, 0x86, 0x97, 0xef, 0x26, 0xc0, 0x3b, 0xcd, 0x6d, 0xec, 0xad, 0x0d, 0x8e, 0xad, 0x8c, 0xae, 0xac, 0x45, 0x6d, 0xee, 0xcd, 0xdd, 0x20, 0xea, 0x0e, 0xe2, 0x0e, 0xa2, 0xe5, 0x26, 0xee, 0x38, 0x74, 0x1c, 0x3a, 0xc4, 0x70, 0x10, 0x2c, 0xfc, 0x06, 0x51, 0x37, 0x13, 0x77, 0xd0, 0xaa, 0x6d, 0xd2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x1b, 0xbc, 0x94, 0xc4, 0x66, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x0f, 0xd6, 0xee, 0x20, 0x6c, 0x88, 0xe1, 0x86, 0x18, 0x6e, 0xb0, 0x76, 0x07, 0x61, 0x83, 0xd5, 0xef, 0x07, 0x1b, 0x04, 0x6e, 0xfc, 0x06, 0x4b, 0x11, 0x54, 0x0e, 0x31, 0x1c, 0x76, 0x41, 0xb0, 0xf0, 0x1b, 0x44, 0xdd, 0x4c, 0xdc, 0xc1, 0xc3, 0xf0, 0x2e, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x92, 0x1d, 0x07, 0xe9, 0xe5, 0x09, 0xc7, 0xa1, 0x35, 0xc4, 0x70, 0x83, 0xb6, 0x47, 0x9c, 0x0e, 0x31, 0x3c, 0xc4, 0xf0, 0x38, 0x74, 0x3c, 0x5e, 0x10, 0x6c, 0x48, 0x4c, 0x2d, 0x0e, 0x82, 0x05, 0xc1, 0x06, 0xd1, 0x05, 0x10, 0x77, 0xe8, 0xa0, 0x31, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x41, 0xb6, 0x06, 0x6d, 0x81, 0xac, 0x6c, 0x88, 0xe1, 0x20, 0xd8, 0x20, 0xf2, 0x07, 0xe2, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0x65, 0x41, 0xdc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0xe3, 0x1a, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x13, 0xe0, 0x4b, 0x57, 0x27, 0x67, 0xd6, 0x42, 0x17, 0xb6, 0x56, 0xd6, 0x42, 0x16, 0x76, 0xe7, 0x1e, 0x44, 0x20, 0x42, 0xdc, 0x06, 0xb1, 0x43, 0x14, 0x77, 0x10, 0xeb, 0x08, 0x71, 0xc7, 0xa1, 0xe3, 0xd0, 0x21, 0x86, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0x22, 0x82, 0x20, 0xee, 0xe0, 0x8d, 0xfd, 0x1d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x41, 0x74, 0xc5, 0xc4, 0x0d, 0x82, 0x85, 0xdf, 0x20, 0x22, 0x08, 0xe2, 0x0e, 0xce, 0x3f, 0xe1, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x41, 0x44, 0x10, 0xc4, 0x1d, 0xac, 0xde, 0x44, 0x3b, 0x0e, 0x1d, 0x0c, 0xfc, 0x90, 0xe3, 0xd0, 0xc1, 0x88, 0xc2, 0x1d, 0x76, 0x83, 0x51, 0x2f, 0xb9, 0x20, 0x5b, 0x83, 0xb6, 0x40, 0x56, 0x36, 0xc4, 0x70, 0x10, 0x6c, 0x10, 0x5d, 0x33, 0x71, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0xa2, 0xa0, 0x26, 0x6e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x71, 0x0d, 0x13, 0xb7, 0x41, 0x44, 0x0f, 0xc5, 0x6d, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x9b, 0x00, 0xff, 0x34, 0x37, 0xbb, 0x30, 0xb6, 0x34, 0xb2, 0x16, 0xb9, 0xb2, 0x39, 0xb8, 0x37, 0xb7, 0xb9, 0x72, 0x83, 0xd8, 0x21, 0x8a, 0x3b, 0x88, 0x60, 0xa7, 0xb8, 0xe3, 0xd0, 0x71, 0xe8, 0x10, 0xc3, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0xa2, 0x6e, 0x26, 0xee, 0xe0, 0x59, 0x89, 0x06, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xe3, 0x32, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x76, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x85, 0xdf, 0x60, 0xbc, 0xeb, 0x1c, 0xc4, 0x3a, 0x40, 0xdc, 0xc1, 0x2a, 0xbb, 0xff, 0x83, 0xf6, 0xc4, 0x04, 0x0e, 0x69, 0xb8, 0x0d, 0x46, 0x78, 0xda, 0x82, 0x60, 0x41, 0xb0, 0x41, 0xb4, 0x4c, 0xc5, 0x1d, 0xb4, 0x60, 0x27, 0x70, 0x48, 0xc3, 0x0d, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0x10, 0x45, 0x53, 0x71, 0x07, 0xad, 0xcf, 0xa1, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0x64, 0xed, 0x86, 0xdf, 0x78, 0x3e, 0xfc, 0xc2, 0x2f, 0xfc, 0x06, 0x51, 0x34, 0x15, 0x77, 0x70, 0x70, 0x46, 0x3f, 0x38, 0xad, 0xe0, 0x1e, 0x3c, 0x8a, 0x90, 0xe7, 0x38, 0x34, 0xec, 0x06, 0x0b, 0x60, 0x7d, 0x16, 0x04, 0x0b, 0xbf, 0xf0, 0x1b, 0x0c, 0x43, 0x9f, 0x83, 0x58, 0x07, 0x88, 0x3b, 0x78, 0x4c, 0x1c, 0xc3, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x43, 0xc3, 0xaf, 0xc3, 0xb8, 0x1c, 0x87, 0x0e, 0x1d, 0xc3, 0x8e, 0xc7, 0xc7, 0xa1, 0x83, 0x70, 0x73, 0x3f, 0x1e, 0x0f, 0x82, 0x0d, 0x89, 0xa9, 0xc5, 0x41, 0xb0, 0x41, 0x94, 0x00, 0xc5, 0x0d, 0xbb, 0xc1, 0xa8, 0x97, 0x5c, 0x90, 0xad, 0x41, 0x5b, 0x20, 0x2b, 0x1b, 0x62, 0x38, 0x08, 0x36, 0x88, 0xfc, 0x81, 0xb8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x06, 0x51, 0x59, 0x10, 0x37, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xb8, 0x86, 0x89, 0x5b, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x04, 0xf8, 0x8e, 0xe9, 0x85, 0xc9, 0xb5, 0xd0, 0x85, 0xad, 0x95, 0xb5, 0x90, 0x85, 0xdd, 0xb9, 0x07, 0x11, 0x88, 0x10, 0xb7, 0x41, 0x9c, 0x80, 0xc5, 0x1d, 0xc4, 0x3a, 0x42, 0xdc, 0x71, 0xe8, 0x38, 0x74, 0x88, 0xe1, 0x20, 0x58, 0x10, 0x2c, 0x08, 0x16, 0x04, 0x1b, 0xc4, 0xcc, 0x42, 0xdc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x1b, 0xc4, 0x57, 0x46, 0xdc, 0x06, 0x11, 0xc1, 0x11, 0xb7, 0x41, 0x4c, 0x79, 0xc4, 0x1d, 0x62, 0x78, 0x1c, 0x1a, 0x04, 0x0b, 0x92, 0x81, 0xf0, 0x1d, 0x2c, 0x1c, 0x4e, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0x10, 0x3b, 0x30, 0x71, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x41, 0x2b, 0xa5, 0xf9, 0x83, 0x64, 0x60, 0xfc, 0x0e, 0x16, 0x0e, 0x27, 0x2c, 0xfc, 0xc6, 0xf3, 0x0d, 0xa2, 0x2b, 0x26, 0x6e, 0x10, 0x6c, 0x10, 0x3b, 0x30, 0x71, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x85, 0xdf, 0x78, 0xbe, 0x41, 0x34, 0x5f, 0xc4, 0x1d, 0x87, 0x0e, 0x06, 0x7e, 0xc8, 0x71, 0xe8, 0x60, 0xe0, 0x87, 0x1c, 0x87, 0x8e, 0x43, 0x07, 0x23, 0x0a, 0x77, 0xd8, 0x0d, 0x46, 0xbd, 0xe4, 0x82, 0x6c, 0x0d, 0xda, 0x02, 0x59, 0xd9, 0x10, 0xc3, 0x41, 0xb0, 0x41, 0x74, 0xcd, 0xc4, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x87, 0xdf, 0x78, 0x3e, 0x08, 0x36, 0x88, 0x82, 0x9a, 0xb8, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0xc7, 0x35, 0x4c, 0xdc, 0x06, 0xd1, 0xfb, 0x15, 0x77, 0x10, 0xc3, 0x36, 0x71, 0x1b, 0xc4, 0x09, 0x58, 0xdc, 0x41, 0xb4, 0xdc, 0xc4, 0x1d, 0x87, 0x8e, 0x43, 0x87, 0x18, 0x6e, 0x88, 0xe1, 0x20, 0xd8, 0x20, 0x1a, 0xa2, 0xe2, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0xc6, 0x65, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xf8, 0xb3, 0x23, 0x5a, 0x1c, 0x76, 0x83, 0x75, 0x32, 0xfb, 0x1b, 0xc6, 0x65, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0x83, 0x28, 0x9a, 0x8a, 0x3b, 0x68, 0x71, 0x25, 0x6a, 0x90, 0x0c, 0x0c, 0xd5, 0xa1, 0xaf, 0xc6, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x85, 0xdf, 0x20, 0x8a, 0xa6, 0xe2, 0x06, 0xc9, 0xc0, 0x7d, 0x77, 0x30, 0x0c, 0x7d, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x2c, 0x3c, 0x94, 0x19, 0x7e, 0xe3, 0xf9, 0x20, 0x58, 0xf8, 0x0d, 0xa2, 0x68, 0x2a, 0xee, 0x20, 0x99, 0xb2, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0xc1, 0x52, 0x17, 0x95, 0x83, 0xe2, 0x50, 0xe3, 0x38, 0x74, 0x1c, 0x3a, 0x18, 0x17, 0x66, 0xc7, 0xa1, 0xe3, 0xf1, 0x71, 0xe8, 0x78, 0x7c, 0x3c, 0x1e, 0x04, 0x6b, 0x10, 0xe3, 0xf7, 0x70, 0x0b, 0xbf, 0xf0, 0x0b, 0x92, 0x81, 0xf4, 0xdf, 0x41, 0xc0, 0xfb, 0x1f, 0x0c, 0x24, 0xa8, 0xe3, 0xdb, 0x06, 0xf1, 0x85, 0x0f, 0x37, 0xfc, 0x06, 0xcb, 0xb8, 0xbc, 0x8e, 0x6f, 0x8b, 0x83, 0x60, 0x71, 0x61, 0x37, 0x78, 0x5f, 0x34, 0xc4, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0xbc, 0x50, 0x12, 0xe0, 0xa0, 0xcd, 0x38, 0xff, 0x83, 0xd7, 0x6f, 0x40, 0x0c, 0xbb, 0xb0, 0x0b, 0xbb, 0xb0, 0x0b, 0xb7, 0x71, 0xe8, 0x20, 0x5e, 0x6d, 0x65, 0x36, 0xc4, 0x70, 0xd8, 0x85, 0xdb, 0x38, 0x74, 0x10, 0x71, 0xb0, 0x32, 0x87, 0x74, 0xee, 0x61, 0x7d, 0x73, 0x61, 0x17, 0x6e, 0x43, 0x0c, 0x27, 0x28, 0xed, 0x87, 0x74, 0xee, 0xe1, 0x68, 0x5f, 0x1c, 0x07, 0xf0, 0x70, 0x7b, 0xa3, 0x6b, 0x59, 0x2b, 0xcb, 0x2b, 0x23, 0x1b, 0x04, 0x0b, 0xbb, 0x41, 0xdc, 0xf1, 0xc5, 0x6d, 0x38, 0xc5, 0x86, 0xdd, 0x20, 0x6a, 0xfa, 0xe2, 0x36, 0xc4, 0x70, 0xd8, 0x0d, 0x22, 0xc5, 0x2f, 0x6e, 0xc3, 0x29, 0x36, 0x41, 0xbb, 0xf6, 0x41, 0xb0, 0x06, 0x89, 0xc7, 0x3e, 0x1b, 0x14, 0xa1, 0x09, 0x1b, 0x87, 0xd6, 0xe0, 0xed, 0x06, 0x11, 0x07, 0x4f, 0x4a, 0x88, 0x38, 0xc4, 0x70, 0x10, 0x2c, 0x08, 0x16, 0x24, 0xc3, 0x1d, 0x56, 0x68, 0x0f, 0x06, 0xb6, 0xe8, 0xb0, 0x1b, 0xb4, 0xce, 0x07, 0xb0, 0x61, 0x91, 0x6f, 0xc3, 0xd1, 0x7e, 0xd0, 0xae, 0x15, 0xd4, 0x20, 0x58, 0x10, 0x6c, 0x10, 0x2f, 0x7b, 0x71, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x83, 0x37, 0xd5, 0x50, 0x1c, 0x87, 0x06, 0xc1, 0xc2, 0x2e, 0xec, 0x42, 0x0f, 0x82, 0x24, 0x7a, 0x61, 0x17, 0x6e, 0xc3, 0xd1, 0x7e, 0x50, 0x9c, 0xbe, 0x2c, 0xdc, 0x86, 0x18, 0x4e, 0x30, 0xe9, 0x87, 0xa3, 0xfd, 0x70, 0xb4, 0x6f, 0x10, 0xd7, 0x7f, 0x71, 0x13, 0x94, 0xf5, 0x41, 0xb0, 0xb0, 0x0b, 0xbb, 0xd0, 0x83, 0x22, 0x34, 0x61, 0x61, 0x17, 0x6e, 0xc3, 0xd1, 0x7e, 0x50, 0xca, 0xbd, 0x2c, 0xdc, 0x86, 0x18, 0x4e, 0x50, 0xe9, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0xdf, 0xe0, 0x01, 0x08, 0x11, 0x07, 0x2f, 0x53, 0x88, 0x18, 0x04, 0x0b, 0xbf, 0x20, 0xd8, 0x20, 0xc6, 0x14, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x24, 0x1b, 0xac, 0xb9, 0x40, 0x3a, 0x38, 0x6d, 0x28, 0x1f, 0x87, 0x8e, 0x6f, 0x83, 0x60, 0x71, 0xd8, 0x0d, 0x82, 0x8f, 0x79, 0x0d, 0x47, 0xfb, 0xb0, 0x1b, 0xd6, 0xf7, 0x16, 0x07, 0xf8, 0xdc, 0xde, 0x5a, 0xd6, 0xca, 0xf2, 0x0e, 0xa9, 0x83, 0x41, 0xb0, 0x06, 0x89, 0xc7, 0x3e, 0x1b, 0xac, 0xe5, 0x16, 0xdb, 0xb0, 0x57, 0xb8, 0x41, 0xe1, 0x3e, 0x76, 0x88, 0xe1, 0x20, 0x58, 0x10, 0x2c, 0x48, 0x86, 0x3b, 0x08, 0x78, 0xff, 0x83, 0x81, 0x2d, 0x3a, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0xc3, 0x22, 0xdf, 0xf0, 0x0b, 0xa2, 0x05, 0xf3, 0x41, 0xb0, 0x20, 0x19, 0xb0, 0x7c, 0xbd, 0xef, 0x20, 0x59, 0x69, 0xe5, 0x60, 0xac, 0x39, 0x1f, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0x20, 0x3e, 0x24, 0x66, 0x0e, 0xc9, 0xa5, 0xe3, 0xdb, 0x20, 0xd8, 0x60, 0x59, 0x18, 0xcc, 0xe2, 0xb0, 0x0b, 0xbb, 0x41, 0x30, 0xec, 0x2f, 0xec, 0x06, 0xb1, 0x9a, 0xe3, 0x76, 0xd0, 0xfa, 0x9a, 0xfb, 0xe1, 0x68, 0x5f, 0xd8, 0x0d, 0x8e, 0xc7, 0xeb, 0x1b, 0x4e, 0xb1, 0x61, 0x17, 0xee, 0x20, 0xe0, 0xdf, 0x17, 0x04, 0x0b, 0x82, 0x85, 0xdf, 0xe0, 0x55, 0x63, 0x00, 0x07, 0x6d, 0xc6, 0xf9, 0x1f, 0x9a, 0x02, 0x0d, 0x82, 0x05, 0xc1, 0xc2, 0x2f, 0xfc, 0xc2, 0x2f, 0x48, 0x06, 0x8a, 0xd7, 0xc1, 0x49, 0xe8, 0xf8, 0x60, 0x61, 0x85, 0xd9, 0xc1, 0xf9, 0x89, 0xf6, 0x60, 0xdc, 0x41, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x0f, 0x96, 0x2e, 0xdd, 0x1c, 0x87, 0x86, 0x5d, 0xb8, 0x0d, 0x22, 0x0e, 0x56, 0xe6, 0x90, 0x3a, 0x58, 0xd8, 0x85, 0xdb, 0xd0, 0x02, 0xe8, 0x20, 0xaa, 0xa4, 0xe1, 0x16, 0x76, 0x61, 0x17, 0x7a, 0xb0, 0x3c, 0x5c, 0xec, 0xb0, 0xbe, 0xb9, 0xb0, 0x0b, 0xb7, 0xe1, 0x68, 0x3f, 0x58, 0x85, 0x74, 0xb3, 0x21, 0x86, 0xe3, 0x04, 0xf8, 0xa5, 0xb9, 0xd9, 0x85, 0xb1, 0xa5, 0x91, 0xb5, 0xb0, 0xa5, 0x99, 0x95, 0xe3, 0x04, 0xf8, 0x86, 0xb1, 0xc9, 0x95, 0x85, 0x91, 0xe5, 0xb5, 0x88, 0xbd, 0xbd, 0xd1, 0x95, 0x91, 0xe3, 0x04, 0xf8, 0xad, 0x95, 0xe5, 0xb5, 0xb4, 0xa5, 0xcd, 0xb5, 0x85, 0xd1, 0x8d, 0xa1, 0xc3, 0x6e, 0x10, 0x97, 0xb6, 0x32, 0x1b, 0x62, 0x38, 0xc8, 0x36, 0x34, 0x5f, 0x1f, 0x76, 0xe1, 0x36, 0xc4, 0xf0, 0xa0, 0xd5, 0xbc, 0x80, 0xc5, 0x39, 0x88, 0x84, 0xbf, 0xb8, 0xe1, 0x37, 0x1e, 0x0f, 0xb2, 0x35, 0x68, 0x0b, 0x64, 0x65, 0x43, 0x0c, 0x07, 0xc1, 0x06, 0x4f, 0xd5, 0x03, 0x18, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x8c, 0x3e, 0x80, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x37, 0x4c, 0xdc, 0x1a, 0xea, 0xc8, 0x1a, 0x66, 0x68, 0x0d, 0x33, 0xb4, 0x86, 0x19, 0xda, 0xe0, 0x09, 0x1b, 0x18, 0x1b, 0x4e, 0x84, 0x0d, 0x9e, 0xb0, 0x81, 0x71, 0x10, 0xcf, 0x8f, 0x17, 0x1b, 0x4e, 0x84, 0x0d, 0xe2, 0x9f, 0x34, 0x6e, 0x83, 0xc5, 0x6c, 0x50, 0x07, 0x6f, 0xe8, 0x51, 0xde, 0x70, 0x22, 0x6c, 0x10, 0xd1, 0xa4, 0x71, 0x1b, 0x2c, 0x66, 0x83, 0x3a, 0x78, 0xc7, 0x90, 0xf2, 0xc1, 0xeb, 0x95, 0x94, 0x37, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x1a, 0x26, 0x6e, 0xc3, 0x74, 0x1e, 0x2c, 0xfd, 0xd3, 0xdf, 0x70, 0x22, 0x6c, 0x10, 0xe3, 0xa8, 0x71, 0x1b, 0x2c, 0x66, 0x83, 0x5a, 0x66, 0xd9, 0xf0, 0x89, 0xcd, 0x1a, 0x9e, 0x27, 0xd9, 0xa0, 0x09, 0xd6, 0xf1, 0x83, 0x36, 0x69, 0x2a, 0x0e, 0x56, 0xd2, 0xe9, 0x1f, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x10, 0x59, 0xaa, 0x71, 0x0b, 0xbf, 0x41, 0xac, 0x97, 0xe4, 0x1c, 0x8c, 0x3b, 0xa8, 0x09, 0x04, 0x6b, 0xff, 0x71, 0xe8, 0x38, 0x34, 0xec, 0xc2, 0x1d, 0xc4, 0x0c, 0x6b, 0xdc, 0xc2, 0x2e, 0xdc, 0x06, 0xab, 0x90, 0x6e, 0x26, 0x78, 0xb5, 0x7f, 0x61, 0x17, 0x76, 0x83, 0xc8, 0xdb, 0x8c, 0x5b, 0xd8, 0x85, 0x5d, 0xb8, 0x0d, 0x47, 0xfb, 0x41, 0xe3, 0x91, 0x01, 0x1b, 0x62, 0x38, 0xec, 0x82, 0x60, 0x83, 0x64, 0xac, 0x91, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x12, 0x08, 0x6a, 0xff, 0x83, 0xc4, 0x44, 0x9b, 0xe3, 0xd0, 0x21, 0x9d, 0x7b, 0x48, 0xe7, 0x1e, 0x8e, 0xf6, 0x0d, 0x62, 0xb6, 0x33, 0x6e, 0x10, 0x2c, 0xec, 0xc2, 0x2e, 0x81, 0xc3, 0x6b, 0xff, 0x61, 0x7d, 0x73, 0x0d, 0x31, 0x5c, 0x0c, 0xe0, 0xdb, 0xed, 0xad, 0x65, 0x0e, 0xee, 0xcd, 0x6d, 0xee, 0x4d, 0x6e, 0x0e, 0x2d, 0x0d, 0xae, 0xe5, 0xac, 0x2e, 0x4c, 0x2e, 0xcc, 0x8d, 0xae, 0xac, 0x6c, 0xae, 0xc5, 0x4c, 0xee, 0xad, 0x9d, 0xc0, 0xe9, 0xb5, 0xff, 0x10, 0xc3, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x0c, 0xfc, 0x90, 0x41, 0xb6, 0x06, 0x6d, 0x81, 0xac, 0x6c, 0x88, 0xe1, 0x20, 0xd8, 0x20, 0x9e, 0x6f, 0x2f, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0xc4, 0x41, 0xee, 0xc5, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x1b, 0x26, 0x6e, 0x0d, 0x75, 0x7c, 0xc3, 0xcb, 0x77, 0x73, 0x10, 0x09, 0xb3, 0x71, 0x1b, 0xea, 0xf8, 0xc1, 0xc1, 0x23, 0xe3, 0x20, 0x04, 0xc0, 0x8f, 0x43, 0xc7, 0xa1, 0x83, 0x81, 0x1f, 0x32, 0x4e, 0x80, 0x27, 0x5b, 0x9a, 0x59, 0x59, 0x4b, 0x5b, 0xda, 0x5c, 0x5b, 0x18, 0xdd, 0x18, 0x7a, 0x10, 0xc3, 0x9e, 0x71, 0xe3, 0x04, 0x78, 0xb9, 0xbd, 0xd1, 0xb5, 0xbc, 0xd5, 0xc9, 0xb5, 0xac, 0x95, 0xe5, 0x87, 0x53, 0xec, 0x78, 0x7c, 0x50, 0x32, 0x34, 0x1d, 0x8f, 0x8f, 0xc7, 0xcb, 0xac, 0xc1, 0x53, 0xba, 0x83, 0x36, 0x28, 0x25, 0xc4, 0xd7, 0xa0, 0x64, 0x61, 0x9f, 0x65, 0xd6, 0xa0, 0x05, 0x19, 0xe6, 0x0d, 0xcf, 0x93, 0xac, 0xe1, 0x4e, 0x5b, 0x0d, 0x4a, 0x4d, 0xcb, 0x83, 0x16, 0x64, 0x98, 0x1b, 0x80, 0x6f, 0xb8, 0x3a, 0x31, 0xb6, 0xb4, 0x31, 0x10, 0xb7, 0x32, 0xba, 0xbb, 0x37, 0xb9, 0x35, 0x90, 0x39, 0xba, 0x30, 0xba, 0x32, 0x90, 0x37, 0x33, 0x90, 0x30, 0x90, 0x39, 0xb4, 0x34, 0xb8, 0x0d, 0x1f, 0xb5, 0x6f, 0xf8, 0xbe, 0x7d, 0x83, 0x16, 0x64, 0x98, 0x37, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x36, 0x78, 0x8c, 0x8d, 0xdd, 0xc1, 0xdb, 0x74, 0x1d, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x0f, 0x61, 0x13, 0x3d, 0x7c, 0xb0, 0x5a, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x6d, 0x50, 0xb2, 0xb0, 0xcf, 0x32, 0x0b, 0xf8, 0x63, 0x6f, 0x6d, 0xe5, 0x86, 0xe7, 0x49, 0xd6, 0x70, 0xa7, 0xcd, 0x00, 0xba, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x72, 0xae, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x2a, 0xcf, 0xd9, 0x83, 0x98, 0xce, 0x5a, 0xda, 0xe0, 0xed, 0x62, 0x2d, 0x6d, 0x50, 0xda, 0x5b, 0xae, 0xe1, 0xcf, 0xa5, 0x01, 0x9e, 0x39, 0xba, 0x30, 0xb9, 0x79, 0x83, 0xd0, 0x2f, 0xd9, 0xa0, 0x44, 0x7c, 0x3f, 0x88, 0x25, 0xad, 0xa5, 0x0d, 0x8a, 0x3e, 0xdd, 0x35, 0x88, 0x9a, 0xe4, 0xb8, 0xd6, 0xf0, 0x15, 0xce, 0x86, 0xaf, 0x5f, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0x94, 0x2a, 0xc7, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0xd0, 0x36, 0x5c, 0xe6, 0x06, 0x91, 0xb6, 0x1c, 0xb7, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0x10, 0x01, 0xca, 0x70, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xf4, 0xa0, 0x6d, 0xb8, 0xcc, 0x36, 0x28, 0xf8, 0x30, 0xd7, 0xf0, 0x89, 0xcd, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xfa, 0xa3, 0xe0, 0x0e, 0x62, 0xbe, 0x39, 0x6e, 0x83, 0x62, 0x12, 0x73, 0x0d, 0x96, 0x62, 0x54, 0x6d, 0xb8, 0xba, 0x0e, 0x22, 0xb1, 0x67, 0xe9, 0xf0, 0xe5, 0xe4, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x6d, 0xc3, 0x65, 0x6e, 0x78, 0x5b, 0x67, 0x70, 0xfa, 0xa0, 0x6d, 0xb8, 0xcc, 0x35, 0x88, 0x52, 0xe5, 0xb8, 0x0d, 0xef, 0xf6, 0xac, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x41, 0xd9, 0xf4, 0xbe, 0x41, 0xa4, 0x2d, 0xc7, 0x75, 0x10, 0xf3, 0xcd, 0x71, 0x6d, 0xf8, 0x0a, 0x67, 0xc3, 0x5f, 0x34, 0x6b, 0xf8, 0x77, 0x7e, 0x83, 0xd7, 0x58, 0x81, 0x1e, 0xbc, 0x02, 0xc3, 0x6e, 0x83, 0x82, 0x34, 0x76, 0x0d, 0xdf, 0xb7, 0x0f, 0x78, 0x63, 0x75, 0xe2, 0x06, 0x25, 0x74, 0xec, 0x1a, 0xfe, 0x9d, 0xdf, 0x20, 0x82, 0x78, 0xb2, 0x0e, 0xde, 0x89, 0x5c, 0x77, 0x10, 0xa6, 0x63, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0x0f, 0x4a, 0x6e, 0xf0, 0xae, 0x8c, 0x94, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0xc5, 0xe2, 0x4d, 0x1b, 0x1e, 0x94, 0xdc, 0x60, 0x95, 0x29, 0xeb, 0x41, 0x2c, 0x58, 0x5e, 0x6d, 0x90, 0xb8, 0x9b, 0xba, 0xc1, 0x33, 0x00, 0x53, 0xda, 0xa0, 0x20, 0x8d, 0x5d, 0xc3, 0xf7, 0xed, 0x03, 0xde, 0x1d, 0xda, 0xbb, 0x41, 0x09, 0x1d, 0xbb, 0x41, 0xdb, 0xd6, 0xe3, 0x07, 0x61, 0x3a, 0xb6, 0x86, 0xaf, 0x5f, 0x36, 0x7c, 0x08, 0xb3, 0xe1, 0xeb, 0x97, 0x0d, 0x1f, 0xc2, 0x6c, 0x78, 0x50, 0x72, 0x83, 0x46, 0xf9, 0xb5, 0x37, 0x3c, 0x28, 0xb9, 0x41, 0xa4, 0xff, 0x4b, 0x1d, 0x44, 0xcf, 0x99, 0xd3, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0x3e, 0xb1, 0xd9, 0x20, 0x02, 0x40, 0xe1, 0x36, 0x28, 0x26, 0x31, 0xd7, 0x60, 0x29, 0x46, 0xd5, 0x86, 0xab, 0xeb, 0x20, 0x3e, 0x7f, 0x96, 0x0e, 0x5f, 0x4e, 0xae, 0xe1, 0x92, 0xda, 0x70, 0x8a, 0xad, 0xc1, 0x0b, 0x01, 0x53, 0x36, 0x7c, 0x1c, 0x75, 0xf0, 0x0c, 0xc0, 0x94, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0x68, 0xad, 0x71, 0x10, 0x5b, 0xd3, 0x71, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x68, 0x77, 0x82, 0x3b, 0x88, 0x3e, 0x9c, 0xa5, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0xbe, 0x87, 0x37, 0x88, 0x40, 0x9c, 0xa5, 0x0d, 0x0f, 0xde, 0xac, 0xc1, 0xd1, 0x75, 0x70, 0x0d, 0xbf, 0xb8, 0x6c, 0x78, 0x4c, 0x66, 0x0d, 0x0f, 0x4a, 0x6e, 0x90, 0xc4, 0xc8, 0x79, 0x10, 0xe5, 0xdc, 0x71, 0xd5, 0x41, 0xac, 0x7e, 0xc7, 0xcd, 0x1a, 0x3c, 0xa9, 0xab, 0x63, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x37, 0x64, 0xa7, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x98, 0x86, 0x59, 0xda, 0xf0, 0x17, 0xcd, 0x06, 0x4f, 0x3f, 0x97, 0xdb, 0xe0, 0xc4, 0x7e, 0xb3, 0x41, 0x4c, 0x5d, 0x5e, 0x6d, 0x70, 0x62, 0xbf, 0xd9, 0x20, 0x92, 0x6b, 0xd4, 0x36, 0x28, 0x3a, 0x8d, 0x37, 0x88, 0xf4, 0x60, 0xb5, 0x0d, 0xd6, 0xc6, 0xe4, 0x6d, 0x50, 0x18, 0xaa, 0xae, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0x58, 0xf8, 0x86, 0xdb, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x2d, 0xa8, 0x07, 0xd1, 0x2d, 0x05, 0xb6, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0x9a, 0xbe, 0x1e, 0x5f, 0x83, 0xa5, 0x5f, 0xaf, 0x07, 0xb1, 0x7b, 0xb3, 0xd4, 0x6a, 0x10, 0x9b, 0x3e, 0x6a, 0x1b, 0x7e, 0x51, 0x5a, 0xc3, 0xe7, 0x4a, 0x1b, 0x44, 0x1e, 0x1d, 0xdc, 0x1a, 0xfe, 0x5c, 0xda, 0xe0, 0xd5, 0x2f, 0x74, 0x07, 0xe7, 0xd9, 0xd1, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x54, 0x2d, 0xa9, 0x1d, 0x44, 0x09, 0xfc, 0x57, 0x1b, 0xfe, 0xa2, 0xd9, 0xe0, 0x05, 0xff, 0x9a, 0x1b, 0x9c, 0xd8, 0x6f, 0xd6, 0xf0, 0xa0, 0xe4, 0x06, 0xcf, 0x9d, 0xa0, 0x3b, 0x88, 0xf8, 0x1f, 0xb5, 0x0d, 0x8e, 0xae, 0x83, 0x1b, 0xc4, 0xd6, 0x91, 0xda, 0x1a, 0x34, 0x5d, 0x13, 0xba, 0xc1, 0xd2, 0xaf, 0xd7, 0x83, 0xa6, 0x70, 0x42, 0xd7, 0x20, 0x72, 0x92, 0xd4, 0x36, 0x58, 0xfa, 0xf5, 0xba, 0xe1, 0x6d, 0x9d, 0x83, 0x17, 0xa7, 0xd2, 0xad, 0x41, 0xa4, 0x2b, 0xa9, 0x6d, 0xd0, 0x54, 0x1c, 0xd8, 0x86, 0xb7, 0x75, 0x36, 0x88, 0xaa, 0x25, 0xb5, 0x9a, 0x35, 0x78, 0x09, 0x7b, 0xd0, 0x86, 0xbf, 0x68, 0x36, 0x78, 0xfa, 0xb9, 0xdc, 0x06, 0x27, 0xf6, 0x9b, 0x0d, 0x62, 0xea, 0xf2, 0x6a, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x91, 0x5c, 0xa3, 0xb6, 0x41, 0xd1, 0x69, 0xbc, 0x41, 0xa4, 0x07, 0xab, 0xad, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0x97, 0xb0, 0x07, 0x6d, 0xf8, 0xc5, 0x65, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x1f, 0x44, 0x3d, 0x3b, 0xdc, 0x41, 0x59, 0xe7, 0xb9, 0x1a, 0xbc, 0x13, 0x0e, 0x74, 0xc3, 0x5f, 0x34, 0x1b, 0x3c, 0xfd, 0x5c, 0x6e, 0x83, 0x13, 0xfb, 0xcd, 0x06, 0x31, 0x75, 0x79, 0xb5, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x48, 0xae, 0x51, 0xdb, 0xa0, 0x30, 0x54, 0xdd, 0x20, 0xc9, 0xe1, 0x69, 0x83, 0xa2, 0xd3, 0x78, 0x83, 0x12, 0xa9, 0x7a, 0x83, 0x28, 0xc8, 0x16, 0xdb, 0xf0, 0x8b, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0xc9, 0x94, 0xe8, 0xe1, 0x87, 0x9a, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x22, 0x3d, 0x58, 0x6d, 0x0d, 0xef, 0xf6, 0x6c, 0x50, 0xd6, 0xdb, 0x6e, 0x50, 0x54, 0x8a, 0xaf, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0x98, 0xab, 0x87, 0x5b, 0xc3, 0xbb, 0x3d, 0x1b, 0x2c, 0xc9, 0x4d, 0xdf, 0x20, 0x11, 0x2e, 0xf8, 0x60, 0x4d, 0x94, 0x68, 0x1b, 0x14, 0x86, 0xaa, 0x1b, 0xc4, 0x7a, 0x7a, 0xdc, 0x86, 0x77, 0x7b, 0x36, 0x88, 0x61, 0xf5, 0xb8, 0x0d, 0xe2, 0x71, 0x3d, 0x6e, 0x0d, 0x96, 0x7e, 0xbd, 0x6e, 0x78, 0xb7, 0x67, 0x83, 0x25, 0xb9, 0xe9, 0x1b, 0x2c, 0x5f, 0x7b, 0x3d, 0x58, 0x13, 0x25, 0xda, 0xe1, 0x14, 0xab, 0xc3, 0x29, 0xb6, 0x1a, 0x3c, 0x98, 0x8e, 0x6b, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x98, 0x86, 0x59, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xbc, 0x21, 0x3b, 0x6d, 0xc3, 0xbf, 0xf3, 0x1b, 0xbc, 0x5c, 0x30, 0x73, 0x83, 0xa8, 0xac, 0x83, 0xab, 0x0d, 0x7f, 0xd1, 0xac, 0x41, 0xe8, 0x97, 0x6c, 0xb0, 0x0a, 0x32, 0x79, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x8f, 0xd2, 0xc7, 0x3b, 0x58, 0xaf, 0xf5, 0xdc, 0x86, 0x4f, 0x6c, 0x36, 0x88, 0x00, 0x50, 0xb8, 0x0d, 0x82, 0xf4, 0x74, 0xc3, 0x97, 0x93, 0x6b, 0x10, 0x9f, 0x3f, 0x4b, 0x1b, 0x94, 0x12, 0xe2, 0x1b, 0xcf, 0x37, 0xfc, 0xe2, 0xb2, 0xc1, 0x2a, 0x30, 0xd9, 0x83, 0x98, 0x10, 0x8f, 0x5b, 0x83, 0x68, 0xf7, 0x59, 0x3a, 0x88, 0x29, 0x04, 0xb9, 0x35, 0x88, 0x6c, 0x9e, 0xa5, 0x83, 0x98, 0x42, 0x90, 0x5b, 0x83, 0x30, 0x1d, 0xdb, 0xa0, 0x94, 0x10, 0xdf, 0x78, 0xbe, 0x41, 0x09, 0x8f, 0xb9, 0x06, 0x25, 0x55, 0xf8, 0xc1, 0xcb, 0x05, 0x33, 0xd7, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0x9c, 0x64, 0xd7, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x62, 0xa9, 0x1f, 0xae, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xc9, 0xdd, 0xb0, 0xc1, 0x83, 0xe9, 0xb8, 0x06, 0xaf, 0x0f, 0xe2, 0x71, 0x41, 0x6e, 0x0d, 0xbf, 0xb8, 0x6c, 0xb0, 0xcc, 0x49, 0x76, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0x8e, 0xfd, 0xe1, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xab, 0xc0, 0x64, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0x77, 0x87, 0xf6, 0x1e, 0xc4, 0x82, 0x83, 0x5c, 0x1d, 0x4e, 0xb1, 0x35, 0x68, 0x73, 0x87, 0x6a, 0x83, 0x55, 0x58, 0x4e, 0x1b, 0xc4, 0xcf, 0xfc, 0xdb, 0x06, 0xab, 0xb0, 0x9c, 0xd6, 0xf0, 0xa0, 0xe4, 0x1a, 0xde, 0xd6, 0x39, 0x88, 0x1c, 0x7f, 0xb5, 0x83, 0x08, 0x9e, 0x7f, 0xdb, 0x60, 0x15, 0x96, 0xd3, 0x1a, 0xde, 0xd6, 0x39, 0x88, 0xca, 0x3a, 0xb8, 0x0d, 0x56, 0x61, 0x39, 0xad, 0xe1, 0x41, 0xc9, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0x64, 0xc7, 0x7c, 0x75, 0x10, 0x1b, 0xcd, 0x4b, 0x1b, 0x94, 0x2c, 0xec, 0xb3, 0xcc, 0x1a, 0xbc, 0x21, 0x3b, 0x6d, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x98, 0x86, 0x59, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0x8c, 0xf9, 0xa7, 0x83, 0xa7, 0x9f, 0xcb, 0xb5, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x0d, 0xa2, 0x8d, 0x40, 0xae, 0x0d, 0xd6, 0xa2, 0x33, 0xad, 0x41, 0x21, 0x98, 0x7a, 0x10, 0x6d, 0x04, 0x72, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0xf8, 0xbe, 0x7d, 0x83, 0x66, 0xb5, 0xc7, 0x36, 0x28, 0xa1, 0x63, 0x37, 0x88, 0x8e, 0x96, 0xb0, 0x83, 0x30, 0x1d, 0x5b, 0xc3, 0xbb, 0x3d, 0x6b, 0x78, 0x50, 0x72, 0x83, 0x17, 0xd1, 0x07, 0x1f, 0x44, 0x92, 0x8d, 0xda, 0x1a, 0xde, 0xd6, 0x19, 0x3c, 0x3e, 0x28, 0xd1, 0x95, 0xdb, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0x9d, 0xf4, 0xb1, 0x35, 0x58, 0xb7, 0xca, 0x34, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0xea, 0x0e, 0xe2, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x62, 0x1d, 0x21, 0xae, 0x83, 0x82, 0x22, 0x73, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0x94, 0xf0, 0x98, 0x1b, 0x9c, 0xc1, 0x3c, 0xd7, 0x60, 0xdd, 0x2a, 0xd3, 0xac, 0xe1, 0x17, 0x97, 0x0d, 0x22, 0xbe, 0x43, 0x6e, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0x5a, 0x6e, 0xe2, 0x3a, 0x28, 0x28, 0x32, 0x37, 0x58, 0x85, 0xe5, 0xb4, 0xc1, 0x5b, 0xdf, 0x4c, 0x37, 0x38, 0xb1, 0xdf, 0x6c, 0x70, 0x96, 0x02, 0xdb, 0xe0, 0x9c, 0xbf, 0xb4, 0x86, 0xb7, 0x75, 0x0e, 0x22, 0xe5, 0x0a, 0x6e, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0xdf, 0x9c, 0x0d, 0x0f, 0xde, 0x1c, 0xbc, 0x72, 0xd4, 0x73, 0x83, 0x82, 0x22, 0x73, 0x83, 0x63, 0xb8, 0xc1, 0x86, 0x5f, 0x5c, 0x36, 0x78, 0xe5, 0xa8, 0xe7, 0x06, 0xaf, 0x51, 0xf5, 0xdc, 0xe0, 0xdd, 0x28, 0xd7, 0x1b, 0x44, 0x1e, 0x27, 0xdc, 0x41, 0x59, 0xe7, 0xb9, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x7c, 0xa3, 0xb8, 0x41, 0x04, 0xe2, 0x2c, 0x1d, 0x2c, 0x42, 0x70, 0xdb, 0xa0, 0xa0, 0xc8, 0xdc, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0x33, 0xc0, 0x33, 0x07, 0x17, 0x76, 0xe7, 0x76, 0x50, 0xd6, 0x79, 0x6e, 0xf8, 0x8b, 0x66, 0x0d, 0x7f, 0x2e, 0x6d, 0x70, 0xcc, 0xf0, 0xdc, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0xd7, 0xf0, 0xb9, 0xd2, 0x1a, 0x3e, 0x57, 0x5a, 0xc3, 0x9f, 0x4b, 0x1b, 0xc4, 0x53, 0x8a, 0xdc, 0xe1, 0x87, 0x9a, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xbd, 0xdd, 0xb9, 0x1b, 0x3e, 0x57, 0xda, 0xf0, 0x43, 0xcd, 0x86, 0x1f, 0x6a, 0x0e, 0x12, 0x1a, 0x30, 0x5b, 0xc3, 0xe7, 0x4a, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0x17, 0xd1, 0x3a, 0x1e, 0xbc, 0xc1, 0xd6, 0x71, 0x83, 0x78, 0x19, 0x8e, 0x5b, 0xc3, 0x9f, 0x4b, 0x1b, 0xb4, 0x70, 0x3a, 0x7e, 0xf0, 0x80, 0x9b, 0xcc, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x83, 0xe9, 0xb8, 0x36, 0x7c, 0xae, 0xb4, 0xe1, 0x83, 0xd5, 0x83, 0x58, 0xd2, 0x5a, 0xaa, 0x36, 0x38, 0x35, 0x1c, 0x6d, 0x10, 0x37, 0x2f, 0x61, 0x1b, 0xac, 0xc2, 0x72, 0xda, 0x20, 0x56, 0x29, 0xe4, 0x36, 0x38, 0xda, 0xf0, 0xad, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0x18, 0xe9, 0x6b, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0xb5, 0xd3, 0xc5, 0x87, 0x67, 0x26, 0x0f, 0xca, 0x3a, 0xcf, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0xc4, 0x31, 0xd2, 0xd7, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0x23, 0xcc, 0xe0, 0xf4, 0x41, 0xac, 0x35, 0xc4, 0x6d, 0x70, 0x62, 0xbf, 0xd9, 0x20, 0x8e, 0x91, 0xbe, 0x36, 0x38, 0x60, 0xd1, 0xad, 0xc1, 0xd1, 0x75, 0x70, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x7d, 0x10, 0x05, 0xed, 0x6e, 0x1b, 0xde, 0xd6, 0x39, 0x78, 0x2e, 0xc1, 0xe3, 0x6a, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0xe0, 0xb1, 0x0d, 0x6a, 0x07, 0x31, 0x79, 0x23, 0xb7, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x88, 0x9a, 0x75, 0xb7, 0x83, 0x98, 0xbc, 0x91, 0x5b, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x1f, 0x44, 0xa1, 0xbb, 0xdb, 0x41, 0x4c, 0xde, 0xc8, 0xad, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0xa2, 0x02, 0xde, 0xed, 0x20, 0x26, 0x6f, 0xe4, 0x5a, 0x66, 0x0d, 0xde, 0x23, 0x99, 0xb8, 0xe1, 0xdd, 0x9e, 0x0d, 0xe2, 0x18, 0xe9, 0x6b, 0x0d, 0xe2, 0x32, 0x4d, 0x6d, 0xc3, 0xbb, 0x3d, 0x1b, 0xc4, 0x6f, 0xe5, 0xd7, 0x1a, 0x1e, 0x94, 0xdc, 0x20, 0xde, 0x08, 0xd4, 0x0e, 0x22, 0x78, 0xfe, 0xed, 0x20, 0xee, 0xfc, 0xd3, 0x0e, 0xca, 0x3a, 0xcf, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0xd6, 0xa0, 0x30, 0x54, 0x5d, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x07, 0x91, 0x7d, 0x11, 0xb7, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x38, 0x46, 0xfa, 0xda, 0xe0, 0xe8, 0x3a, 0xb8, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x78, 0x11, 0xad, 0xe3, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xf8, 0xd0, 0xa9, 0x83, 0xf5, 0x1a, 0xab, 0xab, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0x97, 0xf4, 0xa8, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0x38, 0x46, 0xfa, 0x5a, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x1f, 0x3c, 0xc6, 0xc6, 0xee, 0x20, 0xfe, 0x82, 0xe4, 0x0e, 0xca, 0x3a, 0xcf, 0x35, 0x28, 0x0c, 0x55, 0x37, 0x88, 0x25, 0x21, 0xb9, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0xe2, 0xb7, 0xf2, 0x6b, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0xfd, 0x29, 0x70, 0x07, 0x31, 0x3e, 0x21, 0xb7, 0xc1, 0x89, 0xfd, 0x66, 0x83, 0x38, 0x46, 0xfa, 0xda, 0xe0, 0xe8, 0x3a, 0xb8, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x88, 0x8b, 0xb4, 0xa0, 0x0d, 0xef, 0xf6, 0x6c, 0x10, 0xbf, 0x95, 0x5f, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0x08, 0x9c, 0x0d, 0x3b, 0x48, 0x3b, 0x8d, 0x5d, 0xc3, 0xbb, 0x3d, 0x1b, 0x44, 0x7c, 0xe8, 0xd4, 0x1a, 0xac, 0x10, 0x6a, 0xda, 0x60, 0xed, 0x38, 0xe8, 0x06, 0x6b, 0xb0, 0xd1, 0x0f, 0x56, 0xe7, 0xdf, 0xd7, 0x6a, 0xf8, 0x11, 0x66, 0x70, 0xfa, 0xe0, 0x5c, 0x7f, 0x7a, 0x10, 0xf1, 0x47, 0x72, 0xab, 0xe1, 0x47, 0x98, 0xc1, 0xe9, 0x83, 0xf8, 0x55, 0x89, 0x3b, 0x88, 0xbf, 0x20, 0xb9, 0x56, 0xc3, 0x8f, 0x30, 0x83, 0xd3, 0x07, 0x0f, 0xa6, 0xe3, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x71, 0x8c, 0xf4, 0xb5, 0x1a, 0x7e, 0x84, 0x19, 0x9c, 0x3e, 0x28, 0xb9, 0x1b, 0x0e, 0x62, 0xa1, 0x41, 0x6d, 0x35, 0xfc, 0x08, 0x33, 0x38, 0x1d, 0x78, 0x77, 0x68, 0xef, 0x41, 0xbc, 0x9a, 0x7f, 0x1d, 0x94, 0x75, 0x9e, 0xb5, 0x1a, 0xbc, 0x84, 0x3d, 0x68, 0xc3, 0x2f, 0x4a, 0x1b, 0x44, 0xc7, 0x85, 0xdc, 0x86, 0xbf, 0x68, 0xd6, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0xd7, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x35, 0xfc, 0x3b, 0xbf, 0xe2, 0x38, 0x07, 0x2f, 0x61, 0x0f, 0xaa, 0xda, 0xa0, 0x20, 0x8d, 0xdd, 0x20, 0xee, 0x33, 0xe4, 0x36, 0x88, 0x9e, 0x0d, 0xb9, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xda, 0x49, 0x1f, 0x5b, 0x83, 0x75, 0xab, 0x4c, 0xb3, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0x62, 0x87, 0x28, 0xee, 0x20, 0x4a, 0x3d, 0xe4, 0x0e, 0x0a, 0x8a, 0xcc, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0xbe, 0xc1, 0x31, 0xc3, 0x73, 0x83, 0x12, 0x3a, 0x76, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0xb2, 0x09, 0x73, 0x83, 0xb8, 0x32, 0x7f, 0xea, 0x20, 0x4c, 0xc7, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0x8e, 0x91, 0xbe, 0xd6, 0x20, 0x0a, 0x66, 0xe4, 0x0e, 0xa2, 0x13, 0x42, 0xed, 0xa0, 0xac, 0xf3, 0x3c, 0x88, 0x99, 0x97, 0xb0, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xce, 0x60, 0x9e, 0x6b, 0xb0, 0x6e, 0x95, 0x69, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0x91, 0x49, 0x25, 0xb7, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0x10, 0xc1, 0x4e, 0x71, 0x1d, 0x14, 0x14, 0x99, 0x1b, 0x1c, 0x6d, 0xf8, 0xd6, 0xe0, 0x18, 0x6e, 0x70, 0xd0, 0xaa, 0x36, 0xd8, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x4b, 0x25, 0x09, 0x37, 0x78, 0xeb, 0x9b, 0xe9, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0x05, 0x62, 0xaa, 0x83, 0xf3, 0xec, 0xe8, 0x1a, 0xfe, 0x5c, 0xda, 0x60, 0x1d, 0x98, 0xe8, 0x06, 0xa1, 0x5f, 0xb2, 0x41, 0x89, 0xf8, 0x7e, 0x70, 0x7c, 0x72, 0x5d, 0xc3, 0x9f, 0x4b, 0x1b, 0xac, 0xec, 0x4f, 0x3b, 0x88, 0xbc, 0x28, 0xb9, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0x68, 0xad, 0xb1, 0x41, 0xd9, 0xf4, 0xbe, 0xc1, 0xda, 0x3f, 0xfa, 0x0e, 0x5a, 0xe5, 0xc5, 0x5a, 0xc3, 0x2f, 0x2e, 0x1b, 0xac, 0xfd, 0xa3, 0xdf, 0xa0, 0x55, 0x6d, 0xb0, 0x36, 0x28, 0x0c, 0x55, 0xd7, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0x94, 0x2d, 0xa8, 0x07, 0xb1, 0x1c, 0x26, 0x77, 0xd0, 0x2a, 0x2f, 0xd6, 0x06, 0x05, 0x69, 0xec, 0x1a, 0xbe, 0x6f, 0x1f, 0xf0, 0xd0, 0xde, 0xe8, 0x0d, 0x4a, 0xe8, 0xd8, 0x0d, 0x62, 0xc7, 0x9f, 0xec, 0x20, 0x4c, 0xc7, 0xd6, 0xf0, 0x6e, 0xcf, 0x06, 0x0b, 0x76, 0xd0, 0x37, 0x68, 0x97, 0x17, 0x6b, 0x83, 0x28, 0x0c, 0x28, 0x6b, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x02, 0x36, 0xe8, 0xe0, 0x7d, 0x75, 0x32, 0x1b, 0xb4, 0xaa, 0x0d, 0xb6, 0xe1, 0xdd, 0x9e, 0x0d, 0x9a, 0x22, 0x21, 0xde, 0xa0, 0x55, 0x6d, 0xb0, 0x35, 0xbc, 0xad, 0x33, 0x38, 0x7c, 0xf0, 0x4a, 0x35, 0x99, 0x56, 0x83, 0x77, 0xc2, 0x81, 0x6e, 0xf8, 0x45, 0x69, 0x83, 0xe8, 0xb8, 0x90, 0xdb, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0x65, 0x13, 0xe6, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0x25, 0x62, 0xfd, 0x06, 0x6d, 0x5b, 0x8f, 0xaf, 0xe1, 0x73, 0xa5, 0x0d, 0xe2, 0xbe, 0x45, 0x6e, 0x83, 0x78, 0x19, 0x8e, 0xdb, 0x20, 0x1a, 0x5e, 0xe4, 0xaa, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0xe2, 0x3e, 0x43, 0x6e, 0x83, 0xe8, 0xd9, 0x90, 0xdb, 0xa0, 0x84, 0xc7, 0xdc, 0xa0, 0x9d, 0xf4, 0xb1, 0x35, 0x58, 0xb7, 0xca, 0x34, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0x4e, 0xc0, 0xe2, 0x0e, 0xa2, 0xd4, 0x43, 0xee, 0xa0, 0xa0, 0xc8, 0xdc, 0xa0, 0x20, 0x8d, 0x5d, 0xc3, 0xf7, 0xed, 0x1b, 0x1c, 0x33, 0x3c, 0x37, 0x28, 0xa1, 0x63, 0xd7, 0x20, 0xf4, 0x4b, 0x36, 0x28, 0x9b, 0x30, 0xd7, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x35, 0x7c, 0xae, 0xb4, 0xc1, 0x79, 0x76, 0x74, 0x83, 0x32, 0x4b, 0x77, 0x83, 0x32, 0x4b, 0xf7, 0xa0, 0x8c, 0xb4, 0xad, 0x83, 0x30, 0x1d, 0x5b, 0x83, 0x53, 0xc3, 0xd1, 0x06, 0x71, 0xf3, 0x12, 0xb6, 0xc1, 0x2a, 0x2c, 0xa7, 0x0d, 0x62, 0x95, 0x42, 0x6e, 0x83, 0xa3, 0x0d, 0xdf, 0x1a, 0xde, 0xed, 0xd9, 0xa0, 0xfd, 0x28, 0xa9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x1c, 0x23, 0x7d, 0xad, 0x41, 0xd3, 0x35, 0xa1, 0x07, 0x8b, 0xe1, 0xcf, 0xd7, 0x20, 0x0a, 0x66, 0xe4, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x1c, 0x23, 0x7d, 0xad, 0x86, 0x37, 0xee, 0x36, 0xbc, 0x7c, 0x77, 0x10, 0xd9, 0x17, 0x71, 0x87, 0x67, 0x26, 0x0f, 0xca, 0x3a, 0xcf, 0x83, 0xb2, 0xce, 0xb3, 0x0d, 0x4e, 0xec, 0x37, 0x1b, 0xc4, 0x31, 0xd2, 0xd7, 0x06, 0x47, 0xd7, 0xc1, 0x35, 0x28, 0x0c, 0x55, 0x0f, 0xe2, 0x1b, 0x48, 0x6e, 0x0d, 0x0a, 0x43, 0xd5, 0x83, 0x38, 0x12, 0x92, 0xdb, 0x20, 0x2a, 0x89, 0xe4, 0xda, 0xa0, 0x84, 0xc7, 0xdc, 0xe0, 0x0c, 0xe6, 0xb9, 0x06, 0xeb, 0x56, 0x99, 0x66, 0x0d, 0xbf, 0xb8, 0x6c, 0x10, 0xb1, 0x6f, 0x72, 0x07, 0xd1, 0x13, 0x22, 0x77, 0x50, 0x50, 0x64, 0x6e, 0x50, 0x18, 0xaa, 0x6e, 0x50, 0x50, 0x64, 0x6e, 0x50, 0x74, 0x1a, 0x6f, 0xb0, 0x54, 0x92, 0x70, 0x83, 0xb7, 0xbe, 0x99, 0x6e, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0xad, 0xe1, 0x73, 0xa5, 0x0d, 0x22, 0x8f, 0x0e, 0x6e, 0x0d, 0x7f, 0x2e, 0x0d, 0xf8, 0x64, 0x65, 0x65, 0xf4, 0x41, 0x6c, 0xb2, 0xc9, 0xb5, 0x86, 0x3f, 0x97, 0x06, 0xbc, 0xb5, 0x3c, 0xfd, 0x20, 0xa6, 0xd7, 0xe4, 0xda, 0xf0, 0xf5, 0xcb, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xd6, 0xf2, 0xf4, 0x36, 0x7c, 0x90, 0xb3, 0x86, 0x7f, 0x73, 0x36, 0x3c, 0x78, 0xb3, 0xe1, 0x6d, 0x9d, 0x0d, 0x1e, 0x63, 0x63, 0xb7, 0x41, 0xac, 0x00, 0xca, 0xb5, 0x41, 0x4c, 0x07, 0xca, 0x6d, 0x50, 0x74, 0x1a, 0xaf, 0x41, 0x59, 0xf2, 0xbe, 0x41, 0xd9, 0x82, 0xba, 0x41, 0xd9, 0x54, 0xbf, 0x41, 0x4c, 0x07, 0xca, 0xb5, 0x86, 0x77, 0x7b, 0x36, 0x88, 0xeb, 0x8d, 0xb0, 0x0d, 0x12, 0xe1, 0x82, 0xd7, 0xf0, 0x6e, 0xcf, 0x06, 0x25, 0x3e, 0xee, 0x06, 0x0b, 0x83, 0x51, 0x0f, 0x1a, 0xc2, 0x09, 0x6d, 0xc3, 0xdb, 0x3a, 0x07, 0xb1, 0x37, 0x28, 0x77, 0x38, 0xc5, 0xea, 0x70, 0x8a, 0xcd, 0x1a, 0x44, 0x11, 0xac, 0xd0, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0xe9, 0xeb, 0xf1, 0x83, 0xb6, 0xad, 0xc7, 0xd7, 0xf0, 0xe7, 0xd2, 0x06, 0x8f, 0x19, 0xfe, 0x3c, 0x88, 0x53, 0xea, 0xb8, 0x0d, 0xa2, 0x7d, 0x40, 0x6e, 0x0d, 0x7f, 0x2e, 0x6d, 0xd0, 0x82, 0x0c, 0xf3, 0x86, 0x7f, 0xe7, 0x37, 0x78, 0xfc, 0xf1, 0x60, 0x6d, 0xf8, 0x8b, 0x66, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x55, 0x90, 0xc9, 0x1b, 0xc4, 0x29, 0x75, 0xdc, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0xeb, 0x96, 0xa0, 0x0f, 0xa2, 0xc8, 0x40, 0xae, 0x0d, 0x0e, 0x58, 0x74, 0x6b, 0x50, 0x10, 0xcc, 0xae, 0x71, 0xe8, 0xe0, 0x35, 0x56, 0xa0, 0x6b, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x72, 0x61, 0xe3, 0x1a, 0xde, 0xed, 0xd9, 0x20, 0xfa, 0xa3, 0xe0, 0xd6, 0xf0, 0xb6, 0xce, 0x80, 0x77, 0x87, 0xf6, 0x1e, 0xbc, 0xc6, 0x0a, 0xb4, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x11, 0xd6, 0x35, 0xbc, 0xcd, 0xba, 0xe1, 0x57, 0xb2, 0x35, 0xfc, 0x9b, 0xb3, 0x86, 0xb7, 0x75, 0x06, 0x3c, 0xb9, 0xb0, 0xb1, 0x83, 0x18, 0x58, 0x5a, 0x5a, 0xc3, 0xbf, 0x39, 0x1b, 0xc4, 0x63, 0xa4, 0xdc, 0x41, 0xcc, 0x32, 0x2d, 0xb5, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x21, 0xf8, 0x70, 0x10, 0x8f, 0x0b, 0x72, 0xad, 0xc1, 0x32, 0x27, 0xd9, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0x44, 0xc2, 0x5f, 0xdc, 0x41, 0x59, 0xe7, 0xb9, 0x41, 0x41, 0x1a, 0xbb, 0x41, 0xc3, 0xd9, 0xda, 0x6b, 0x78, 0x37, 0x6f, 0x83, 0xa8, 0x8a, 0x94, 0xdb, 0xf0, 0x41, 0xce, 0x06, 0xd1, 0x25, 0x29, 0xb7, 0xe1, 0xc1, 0x9b, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0xe2, 0x71, 0x41, 0x6e, 0x83, 0xf0, 0x54, 0xdd, 0xf0, 0xb6, 0xce, 0x06, 0x8f, 0xcd, 0xc9, 0x3c, 0x88, 0x2a, 0x07, 0xb9, 0x0d, 0x0a, 0xd2, 0xd8, 0x35, 0x7c, 0xdf, 0xbe, 0xc1, 0xa2, 0xb9, 0xd7, 0x0d, 0x4a, 0xe8, 0xd8, 0x0d, 0xe2, 0x94, 0x3a, 0xee, 0x20, 0x4c, 0xc7, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0xbe, 0x87, 0x37, 0x88, 0xd4, 0x47, 0xb9, 0x0d, 0x5a, 0x47, 0xd7, 0x5e, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x5b, 0x9e, 0x79, 0xf0, 0x1a, 0x2b, 0xd0, 0x35, 0xbc, 0xad, 0xb3, 0x41, 0xd1, 0x7a, 0x72, 0xf0, 0x1a, 0x2b, 0xd0, 0x6a, 0xc3, 0x27, 0x36, 0x6b, 0xf8, 0xdc, 0x65, 0x83, 0x26, 0xcc, 0x47, 0x37, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x36, 0x38, 0x54, 0x97, 0xb5, 0xc1, 0xba, 0xb8, 0xd7, 0x36, 0x28, 0x06, 0x64, 0x37, 0x7c, 0x39, 0xb9, 0x06, 0xcb, 0x9c, 0x64, 0x37, 0xfc, 0xe2, 0xb2, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x1a, 0xd7, 0x21, 0x3d, 0x28, 0xeb, 0x3c, 0x37, 0x58, 0x05, 0x26, 0x7b, 0xb0, 0x2e, 0xee, 0x75, 0x83, 0x82, 0x34, 0x76, 0xc0, 0x93, 0x0b, 0x1b, 0x37, 0x88, 0x91, 0x47, 0xb9, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x1a, 0xce, 0xd6, 0x5e, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0xae, 0xe1, 0x73, 0xa5, 0x0d, 0x02, 0x47, 0xf5, 0xe0, 0xb8, 0x78, 0x72, 0x10, 0x2b, 0x8e, 0x72, 0x1b, 0xc4, 0x7d, 0xa5, 0xdc, 0x86, 0xb7, 0x75, 0x36, 0x68, 0x38, 0x5b, 0xfb, 0xe0, 0x35, 0x56, 0xa0, 0x1b, 0x14, 0xa4, 0xb1, 0x6b, 0xf8, 0xbe, 0x7d, 0xc0, 0x5b, 0xcb, 0xd3, 0x37, 0x28, 0xa1, 0x63, 0xd7, 0x20, 0xf4, 0x4b, 0x36, 0x08, 0x29, 0x93, 0x35, 0x7c, 0xae, 0xb4, 0x86, 0x3f, 0x97, 0x06, 0x3c, 0xb6, 0x3c, 0xf3, 0xe0, 0x6d, 0xba, 0x8e, 0x6b, 0xf8, 0x73, 0x69, 0x83, 0xa2, 0xf5, 0xe4, 0xe0, 0xb1, 0xf0, 0x9e, 0x75, 0x10, 0xa6, 0x63, 0x6b, 0xf8, 0x20, 0x67, 0x83, 0xb8, 0x18, 0x95, 0x5b, 0xc3, 0xdb, 0x3a, 0x03, 0xde, 0x5a, 0x9e, 0x7e, 0xf0, 0x1a, 0x2b, 0xd0, 0x83, 0x68, 0x4b, 0x95, 0xdb, 0xa0, 0xb4, 0xb7, 0x5c, 0xc3, 0x9f, 0x4b, 0x03, 0x7e, 0x99, 0x9c, 0xdc, 0x7c, 0xb0, 0xfc, 0xdf, 0x7b, 0xc3, 0x57, 0x38, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0x44, 0x82, 0xa0, 0xdc, 0x1a, 0x2c, 0x73, 0x92, 0xdd, 0xa0, 0x84, 0xc7, 0x5c, 0x83, 0xb8, 0x57, 0x95, 0x6b, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0x44, 0x92, 0x63, 0xdc, 0x41, 0x59, 0xe7, 0xb9, 0xe1, 0x6d, 0x9d, 0x83, 0xe8, 0x66, 0x95, 0xdb, 0xa0, 0x20, 0x8d, 0xdd, 0x20, 0x0a, 0x32, 0xe5, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xcb, 0xbe, 0x87, 0x37, 0x88, 0xd4, 0x47, 0xb9, 0x0d, 0x5a, 0x47, 0xd7, 0x5e, 0x83, 0xa3, 0xeb, 0xe0, 0x1a, 0x7e, 0x71, 0x59, 0xc3, 0xdb, 0x3a, 0x03, 0x1e, 0x5b, 0x9e, 0x39, 0x78, 0x7a, 0x10, 0x09, 0x82, 0x72, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xa2, 0xf5, 0xe4, 0x20, 0xf6, 0x62, 0xe5, 0xaa, 0x0d, 0x9f, 0xd8, 0x6c, 0x10, 0xa7, 0x9d, 0x72, 0x1b, 0x94, 0xf0, 0x98, 0x1b, 0xbe, 0x9c, 0xdc, 0x20, 0xea, 0x41, 0xe5, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x88, 0x6e, 0x56, 0xb9, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x53, 0x24, 0xc4, 0x1b, 0xc4, 0x96, 0xab, 0xdc, 0x06, 0xf1, 0x01, 0x2a, 0xd7, 0x86, 0x4b, 0x6a, 0xc3, 0x29, 0xb6, 0x06, 0x91, 0x20, 0x28, 0xb7, 0xe1, 0x6d, 0x9d, 0xc1, 0xe9, 0x83, 0x48, 0x10, 0x94, 0x6b, 0x99, 0x35, 0x38, 0x54, 0x97, 0x6d, 0xf8, 0x45, 0x69, 0x83, 0x48, 0x4d, 0x94, 0xdb, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0x65, 0x13, 0xe6, 0x41, 0x14, 0x19, 0xc8, 0x6d, 0x50, 0xf0, 0x61, 0xae, 0x41, 0x31, 0x89, 0xb9, 0x86, 0xcf, 0x95, 0x36, 0x08, 0x62, 0xd3, 0x83, 0xe3, 0xe2, 0xc9, 0x41, 0xac, 0x38, 0xca, 0x6d, 0x50, 0xc2, 0x63, 0x6e, 0x10, 0xa3, 0xa9, 0x72, 0x1b, 0x84, 0xa7, 0xea, 0x06, 0xc5, 0x8e, 0xe6, 0x1a, 0xfe, 0xcd, 0xd9, 0xe0, 0x15, 0x88, 0x33, 0x07, 0x91, 0xfa, 0x28, 0xb7, 0x06, 0xc7, 0x70, 0x83, 0x0d, 0x6f, 0xdc, 0x6d, 0x78, 0xf9, 0xee, 0x20, 0xce, 0x77, 0xe3, 0x36, 0x28, 0x48, 0x63, 0x07, 0x3c, 0xb9, 0xb0, 0x71, 0x83, 0x18, 0x79, 0x94, 0xdb, 0xa0, 0x20, 0x8d, 0x1d, 0xf0, 0xc6, 0xea, 0xc4, 0x35, 0xbc, 0xdb, 0xb3, 0x86, 0x07, 0x25, 0xd7, 0xf0, 0xb6, 0xce, 0x80, 0xe7, 0xf6, 0xc6, 0x76, 0x10, 0x31, 0xd8, 0x71, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xa2, 0xf5, 0x64, 0xf0, 0xf4, 0x20, 0x46, 0x53, 0xe5, 0xda, 0x20, 0x48, 0x4f, 0x37, 0x88, 0xe2, 0x48, 0xb9, 0x35, 0x88, 0xcf, 0x9f, 0xa5, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0xa4, 0x3e, 0xca, 0x1d, 0xc4, 0xe3, 0x76, 0xdc, 0x1a, 0x1c, 0xc3, 0x0d, 0x36, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0xb8, 0xf6, 0x8c, 0xdb, 0xa0, 0x18, 0x90, 0xdd, 0xe0, 0xf1, 0xc7, 0x83, 0x6b, 0x70, 0x0c, 0x37, 0xd8, 0xf0, 0xc6, 0xdd, 0x86, 0x97, 0xef, 0x0e, 0xe2, 0xb8, 0x33, 0x6e, 0x83, 0x62, 0x47, 0x73, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x02, 0x47, 0x75, 0xc0, 0x63, 0xcb, 0x33, 0x0f, 0xa2, 0x05, 0x58, 0x6e, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0x41, 0x5c, 0x73, 0xc6, 0x1d, 0x14, 0x14, 0x99, 0x6b, 0x10, 0xed, 0x3e, 0x4b, 0x07, 0x05, 0x45, 0xe6, 0x1a, 0x84, 0xe9, 0xd8, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xf1, 0xb8, 0x20, 0xb7, 0x06, 0xc7, 0x70, 0x83, 0x83, 0xd8, 0xa3, 0x94, 0xdb, 0x60, 0xa5, 0x8b, 0xd3, 0x06, 0x29, 0xe0, 0xa9, 0x6b, 0x78, 0x5b, 0xe7, 0x20, 0xaa, 0x1c, 0xe4, 0x36, 0x58, 0xb7, 0xca, 0x34, 0x6b, 0xf8, 0xc5, 0x65, 0x0d, 0x0f, 0x4a, 0x6e, 0x10, 0xb7, 0x3d, 0x55, 0x07, 0x51, 0xce, 0x1d, 0xb7, 0x86, 0xb7, 0x75, 0x36, 0x68, 0xe1, 0x74, 0xfc, 0x20, 0x05, 0x3c, 0xb5, 0x0d, 0x8a, 0x1d, 0xcd, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x04, 0x2c, 0xcb, 0x1d, 0xc4, 0xf3, 0xb2, 0xdc, 0x06, 0x31, 0x28, 0x2c, 0xb7, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x7f, 0x73, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0xf4, 0x16, 0xcb, 0x6d, 0x78, 0x5b, 0x67, 0x83, 0xc7, 0xd8, 0xd8, 0x1d, 0xa4, 0x80, 0xa7, 0xae, 0xc1, 0x31, 0xdc, 0x60, 0xc3, 0x1b, 0x77, 0x1b, 0x5e, 0xbe, 0x3b, 0x88, 0x4f, 0xdd, 0xb8, 0x0d, 0x1f, 0xe4, 0xac, 0xe1, 0x11, 0xd6, 0x35, 0x28, 0x26, 0x31, 0x37, 0x28, 0x52, 0x31, 0x0f, 0x1e, 0x7f, 0x3c, 0xb8, 0x86, 0x5f, 0xc9, 0xd6, 0xa0, 0x98, 0xc4, 0xdc, 0x20, 0x8c, 0x80, 0x36, 0x78, 0x08, 0x9b, 0xe8, 0xe0, 0xf5, 0xc1, 0xe3, 0x8f, 0x07, 0xd7, 0xf0, 0x6e, 0xcf, 0x86, 0x2f, 0x7e, 0x37, 0x88, 0x73, 0x67, 0xb9, 0x35, 0xbc, 0xad, 0xb3, 0xc1, 0x63, 0x6c, 0xec, 0x0e, 0xe2, 0x5b, 0x5a, 0xae, 0xda, 0x20, 0x0e, 0x88, 0xe5, 0x36, 0x58, 0x66, 0xcd, 0x34, 0x6b, 0x78, 0x9b, 0x75, 0xc3, 0xdb, 0x3a, 0x1b, 0x94, 0xdc, 0x0d, 0x1b, 0x3c, 0x98, 0x8e, 0xeb, 0x20, 0x05, 0x3c, 0x75, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x8d, 0xbb, 0x0d, 0x2f, 0xdf, 0x1d, 0x44, 0xc2, 0x6c, 0xdc, 0x1a, 0xde, 0xd6, 0x19, 0xf0, 0xee, 0xd0, 0xde, 0x83, 0x18, 0xb1, 0x96, 0xeb, 0xa0, 0xa0, 0xc8, 0xec, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0xc3, 0x29, 0x76, 0x38, 0xc5, 0x0e, 0xa7, 0xd8, 0xe1, 0x14, 0xdb, 0x70, 0x22, 0x6c, 0x18, 0xef, 0x35, 0x9c, 0x23, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0xbf, 0x21, 0xb9, 0xb4, 0x21, 0x86, 0xc7, 0xe3, 0x43, 0xf3, 0x97, 0xe3, 0xf1, 0x82, 0x60, 0x43, 0x0c, 0x17, 0x87, 0x5f, 0x10, 0x6c, 0x70, 0xb8, 0x92, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0x98, 0xd8, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0x70, 0x1d, 0x9c, 0x84, 0x8e, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x82, 0x0d, 0x31, 0x5c, 0x1c, 0x04, 0x0b, 0x82, 0x0d, 0xda, 0xeb, 0x5c, 0x39, 0x78, 0x57, 0xb8, 0xd5, 0xa1, 0xf9, 0xcb, 0xf1, 0xf8, 0xd0, 0xa8, 0xe5, 0x38, 0x74, 0x1c, 0x3a, 0x9e, 0x1f, 0x8f, 0x37, 0x88, 0x7a, 0xc0, 0xb6, 0x83, 0xb8, 0xd1, 0x96, 0x5b, 0x66, 0x0d, 0x9e, 0xd7, 0xd7, 0xb2, 0xe1, 0xa3, 0xf6, 0x0d, 0x02, 0xe8, 0x6c, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x14, 0x99, 0x6b, 0xb8, 0xa4, 0xd6, 0x78, 0x7c, 0xf0, 0x3c, 0xe5, 0xdb, 0x5a, 0x0d, 0xe2, 0xd7, 0xc0, 0x6c, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x88, 0x58, 0x3c, 0xb3, 0x01, 0x6d, 0x25, 0x06, 0xb6, 0xe1, 0x17, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x02, 0xdc, 0xf3, 0x83, 0x30, 0x1d, 0xdb, 0xf0, 0xa0, 0xe4, 0x06, 0xa7, 0x23, 0x91, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x14, 0x99, 0xe5, 0x06, 0xef, 0xca, 0x48, 0x59, 0xc3, 0xbb, 0x3d, 0x1b, 0x34, 0x97, 0x7a, 0xbc, 0x06, 0x6b, 0xa4, 0x9a, 0x36, 0x38, 0xcf, 0x8e, 0x1e, 0x2c, 0x03, 0x3f, 0xaf, 0xc3, 0x29, 0xb6, 0x06, 0xad, 0x02, 0xb9, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0x68, 0x2b, 0x32, 0xb2, 0x83, 0xa8, 0xe9, 0x50, 0x5b, 0x0d, 0x5e, 0x83, 0xaa, 0xb2, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x33, 0xa0, 0xad, 0xc8, 0xcc, 0x36, 0x7c, 0xd4, 0xbe, 0x41, 0x00, 0x9d, 0x6d, 0xf8, 0xc5, 0x65, 0x83, 0x82, 0x22, 0x73, 0x0d, 0x97, 0xd4, 0x1a, 0x8f, 0x0f, 0x5e, 0xff, 0xab, 0x52, 0x87, 0x53, 0xac, 0xc3, 0x29, 0xb6, 0xe1, 0x44, 0xd8, 0x30, 0x6f, 0x6b, 0x38, 0x47, 0x06, 0xd1, 0xc2, 0x0f, 0xbf, 0x41, 0x42, 0xfb, 0xce, 0xf1, 0xfc, 0x78, 0xbc, 0xcc, 0xb2, 0xe1, 0x92, 0xda, 0xa0, 0xa8, 0x11, 0x5f, 0x43, 0x6a, 0x69, 0xc3, 0x83, 0x92, 0x1b, 0xee, 0xa8, 0x0d, 0xef, 0xf6, 0x6c, 0xf0, 0xc4, 0x5f, 0x95, 0x83, 0xd3, 0x16, 0x5a, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x0d, 0xbf, 0x86, 0xd4, 0xc1, 0xc6, 0xa1, 0x43, 0x72, 0x69, 0x10, 0x2c, 0x1e, 0x44, 0xa8, 0x2f, 0xdc, 0x20, 0x58, 0x10, 0x6c, 0xd0, 0x40, 0x61, 0xfe, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x07, 0xef, 0xa8, 0xc0, 0x38, 0x1e, 0x1f, 0x87, 0x06, 0xc1, 0xe2, 0x41, 0xcc, 0x68, 0xcb, 0x0d, 0x82, 0x0d, 0x31, 0x5c, 0x3c, 0x88, 0x62, 0x76, 0xb9, 0xe3, 0xf1, 0x06, 0x6d, 0xb6, 0x34, 0xad, 0x82, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x05, 0x3c, 0xb6, 0x34, 0x71, 0xc0, 0x87, 0x4b, 0x63, 0x63, 0x0f, 0x52, 0xd7, 0xbc, 0x37, 0x78, 0xf8, 0x5b, 0xea, 0xc0, 0x80, 0x85, 0xc2, 0x41, 0xb6, 0x21, 0x2e, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0xa2, 0x8c, 0x5e, 0x6e, 0x83, 0x47, 0xdf, 0xa5, 0x1e, 0xc4, 0x63, 0xbd, 0xdc, 0x20, 0x58, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x94, 0xd1, 0xcb, 0x2d, 0x30, 0x5f, 0x21, 0x1e, 0x98, 0xaf, 0xb0, 0x1a, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x51, 0x46, 0x2f, 0xb7, 0xc1, 0x03, 0xf6, 0x52, 0x0f, 0x22, 0x0f, 0x5f, 0x6e, 0xf8, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x44, 0x19, 0xbd, 0xdc, 0x02, 0xf3, 0x15, 0x26, 0x07, 0x91, 0x87, 0x2f, 0x77, 0x48, 0x1d, 0x1c, 0xdf, 0x8e, 0xe7, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0xa2, 0x8c, 0x5e, 0x6e, 0x81, 0x01, 0x8b, 0x3b, 0x88, 0xc7, 0x7a, 0xb9, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x44, 0x19, 0xbd, 0xdc, 0x02, 0x03, 0x16, 0x3b, 0x30, 0x60, 0x61, 0xbb, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x28, 0xa3, 0x97, 0x5b, 0x60, 0xc0, 0xe2, 0x07, 0x06, 0x2c, 0x84, 0x07, 0x0b, 0x67, 0x8c, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x10, 0x65, 0xf4, 0x72, 0x0b, 0x0c, 0x58, 0x48, 0x07, 0x06, 0x2c, 0x4c, 0x0e, 0x7b, 0x85, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0xa2, 0x8c, 0x5e, 0x6e, 0x81, 0x01, 0x0b, 0x9b, 0x81, 0x01, 0x0b, 0xd3, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x10, 0x65, 0xf4, 0x72, 0x0b, 0x0c, 0x58, 0x58, 0x1d, 0x44, 0x90, 0xc0, 0xdc, 0xf0, 0x0b, 0xb2, 0x35, 0x48, 0xc4, 0x07, 0x1e, 0x37, 0x88, 0x32, 0x7a, 0xb9, 0x05, 0x06, 0x2c, 0xec, 0x0e, 0x22, 0x48, 0x60, 0xee, 0x90, 0xaa, 0x39, 0xbe, 0x1d, 0x87, 0x06, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0x44, 0x19, 0xbd, 0xdc, 0x02, 0x03, 0x16, 0xc6, 0x03, 0x03, 0x16, 0xfa, 0x16, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0x10, 0x65, 0xf4, 0x72, 0x0b, 0x0c, 0x58, 0x58, 0x0f, 0x0c, 0x58, 0xa8, 0x1a, 0xb2, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x28, 0xa3, 0x97, 0x5b, 0x60, 0xc0, 0x42, 0xc1, 0xc0, 0x80, 0x85, 0x8e, 0xe3, 0xd0, 0x20, 0x5b, 0x83, 0x44, 0x7c, 0xe0, 0x71, 0x83, 0x28, 0xa3, 0x97, 0x5b, 0x60, 0xc0, 0x42, 0xc9, 0xc0, 0x80, 0x85, 0xa6, 0x43, 0xb6, 0x62, 0x90, 0xad, 0x41, 0x22, 0x3e, 0xf0, 0xb8, 0x41, 0x94, 0xd1, 0xcb, 0x2d, 0x30, 0x60, 0xa1, 0x6b, 0x60, 0xc0, 0x42, 0xdd, 0x71, 0x68, 0x0d, 0x62, 0x7e, 0x5e, 0x6e, 0x0d, 0x81, 0x58, 0x83, 0xb7, 0x6a, 0x60, 0x0c, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x1e, 0x44, 0xa4, 0xa9, 0xcc, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0xdc, 0xe0, 0xbd, 0x68, 0x24, 0x87, 0xd4, 0xd2, 0xf1, 0x78, 0x83, 0x36, 0x5b, 0x9a, 0x56, 0x43, 0x20, 0xd6, 0xe0, 0x09, 0x1b, 0x18, 0x83, 0x6c, 0x0d, 0x12, 0xf1, 0x81, 0xc7, 0x0d, 0x5e, 0xc4, 0x68, 0xb3, 0x30, 0x39, 0xb0, 0xc1, 0x11, 0x1d, 0x7e, 0x41, 0xb6, 0x06, 0x89, 0xf8, 0xc0, 0xe3, 0x06, 0x2f, 0x62, 0xb4, 0x59, 0x98, 0xb8, 0x61, 0x42, 0x76, 0x30, 0xfc, 0x63, 0x07, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x83, 0xe8, 0x7c, 0x0a, 0x3a, 0x88, 0x35, 0x88, 0xb9, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0x22, 0x46, 0x9b, 0x85, 0xcd, 0x83, 0x58, 0x83, 0x98, 0x5b, 0x3c, 0x78, 0xea, 0x21, 0xcf, 0xf1, 0x78, 0x90, 0xad, 0x21, 0x0d, 0x34, 0x6e, 0xf0, 0xfc, 0x22, 0x92, 0x05, 0xd9, 0x1a, 0x24, 0xe2, 0x03, 0x8f, 0x1b, 0xbc, 0x88, 0xd1, 0x66, 0x83, 0x48, 0x96, 0x0b, 0x1a, 0x2e, 0x4c, 0x8e, 0xe7, 0x1d, 0x8f, 0x37, 0x68, 0xb3, 0xa5, 0x69, 0x35, 0x04, 0x62, 0x35, 0x14, 0xd3, 0xd5, 0x50, 0x4c, 0x57, 0xc3, 0x0c, 0xad, 0x61, 0xee, 0x57, 0x01, 0x6f, 0xee, 0x8d, 0x9d, 0x83, 0x76, 0x86, 0xc1, 0x0e, 0xa7, 0x58, 0x1b, 0x26, 0x6e, 0x0d, 0x13, 0xb7, 0x86, 0x3a, 0xb2, 0xc1, 0x83, 0x37, 0x30, 0x0e, 0x5e, 0xed, 0x21, 0x72, 0xf0, 0xc8, 0x6d, 0x93, 0x0d, 0x13, 0xb7, 0xc1, 0x7b, 0x6e, 0x4d, 0x36, 0x4c, 0xdc, 0x06, 0xcf, 0xa8, 0x35, 0x39, 0x78, 0xd9, 0x06, 0xc6, 0x86, 0x13, 0x61, 0x83, 0x58, 0xc1, 0x98, 0x5b, 0xc3, 0x39, 0xb2, 0x20, 0xd8, 0xe0, 0x8d, 0xc4, 0x3a, 0x8b, 0x83, 0x6c, 0x0d, 0x79, 0xec, 0xc5, 0x41, 0xb0, 0x41, 0x23, 0xd7, 0x2b, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x0d, 0x9a, 0xdf, 0x5e, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x71, 0x43, 0x1d, 0xdf, 0xf0, 0xf2, 0xdd, 0x1c, 0x3c, 0xaf, 0xaf, 0x65, 0xf8, 0x8d, 0xe7, 0x07, 0x8f, 0x0e, 0xdf, 0x39, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0xb4, 0x0f, 0xb2, 0x35, 0xb4, 0x5f, 0x1f, 0x76, 0x83, 0x37, 0x36, 0x6c, 0x6c, 0x88, 0xe1, 0xb0, 0x0b, 0xb7, 0xc1, 0x8b, 0xf4, 0x35, 0x0e, 0xd1, 0xdc, 0x10, 0xc3, 0x61, 0x37, 0x78, 0x10, 0xc2, 0xc6, 0x86, 0x18, 0x0e, 0xbb, 0xc1, 0x93, 0x30, 0x36, 0x36, 0xc4, 0xf0, 0xe0, 0xdd, 0x12, 0x1b, 0x07, 0x41, 0xe9, 0x7d, 0x3c, 0x1e, 0x7e, 0x41, 0xb4, 0x40, 0xfe, 0x7d, 0x10, 0x2c, 0x08, 0x36, 0x68, 0x12, 0x60, 0x60, 0x90, 0x0c, 0x94, 0xbf, 0x83, 0x67, 0xef, 0x94, 0x1c, 0x3c, 0x26, 0x8e, 0xe6, 0x78, 0x3c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x20, 0x19, 0x38, 0xdf, 0x0e, 0x02, 0xde, 0xff, 0xa0, 0x64, 0x68, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0x41, 0xe6, 0x7e, 0xf8, 0x8d, 0xe7, 0x6b, 0xd0, 0x16, 0x13, 0xc0, 0xc1, 0xab, 0x9a, 0x77, 0xd6, 0xe0, 0x81, 0x6e, 0x25, 0x83, 0x64, 0x20, 0x4e, 0x07, 0xe3, 0x5d, 0x67, 0x0d, 0x1e, 0xa7, 0x57, 0x32, 0x08, 0x16, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0x08, 0x16, 0x04, 0x1b, 0xb4, 0x85, 0x79, 0x7e, 0xb0, 0x30, 0xf9, 0xe7, 0xd0, 0xfc, 0xe5, 0x78, 0x3c, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x0b, 0x82, 0x0d, 0x46, 0x6c, 0xeb, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x64, 0xfa, 0x8c, 0x83, 0x77, 0x47, 0xd9, 0x1c, 0x87, 0x8e, 0xe7, 0xc7, 0xa1, 0x35, 0x78, 0xac, 0x5f, 0xc9, 0x20, 0xd8, 0x20, 0x72, 0x53, 0xe6, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x41, 0xb0, 0xc1, 0x88, 0x6d, 0x1d, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x10, 0xa9, 0xaa, 0x36, 0x07, 0x0f, 0xc7, 0xb2, 0x39, 0x0e, 0x1d, 0xcf, 0x8f, 0x43, 0x87, 0x18, 0x1e, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0xbf, 0x20, 0x58, 0x10, 0x2c, 0xfc, 0x06, 0x23, 0xf8, 0xf4, 0x60, 0xdc, 0x41, 0x0d, 0x92, 0xc1, 0xad, 0x41, 0xb4, 0xb0, 0x0b, 0xbf, 0xf1, 0xfc, 0x20, 0xae, 0xad, 0x79, 0x0e, 0x89, 0x99, 0xe3, 0xd0, 0xa1, 0x29, 0xd0, 0xc1, 0x92, 0x1c, 0x9a, 0x61, 0x37, 0x58, 0x00, 0xeb, 0xb3, 0x06, 0x41, 0x16, 0x3f, 0x88, 0x16, 0xa4, 0x07, 0x83, 0x35, 0xf6, 0xb0, 0x42, 0x3b, 0xc8, 0x36, 0x58, 0xca, 0x11, 0x34, 0xfc, 0x06, 0x21, 0x00, 0x7e, 0x7c, 0x3b, 0x0e, 0x1d, 0x8f, 0x17, 0x04, 0x1b, 0x62, 0xb8, 0x38, 0xfc, 0x82, 0x60, 0x83, 0x11, 0xdb, 0x3a, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x20, 0x52, 0x55, 0x6d, 0x86, 0xdf, 0x78, 0x3e, 0x08, 0x16, 0x24, 0x03, 0xe1, 0x3a, 0x18, 0x86, 0x3e, 0x87, 0x46, 0x2d, 0xc7, 0xa1, 0xe3, 0xf9, 0xf1, 0x78, 0x41, 0xb0, 0xc1, 0xc8, 0x7f, 0x58, 0x1c, 0x04, 0x0b, 0xbb, 0x41, 0x23, 0x1b, 0x23, 0x0b, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xe0, 0x5e, 0x3b, 0x08, 0x78, 0xff, 0x43, 0x0b, 0xb0, 0x61, 0x37, 0x18, 0xf5, 0x92, 0x1b, 0x62, 0xb8, 0x21, 0x86, 0x07, 0x2b, 0x44, 0x82, 0x86, 0x5d, 0xd8, 0x0d, 0x46, 0x2f, 0xd6, 0xc2, 0x6e, 0x30, 0x4c, 0x79, 0x17, 0x76, 0x83, 0xc4, 0xae, 0x9f, 0x85, 0x5b, 0x3c, 0x78, 0x90, 0x4f, 0xc8, 0xa1, 0x93, 0xda, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x87, 0xa3, 0x7d, 0x0d, 0x31, 0x1c, 0x7e, 0x83, 0xa0, 0xf4, 0xde, 0x70, 0xb4, 0x1f, 0x34, 0x13, 0xed, 0x34, 0xc8, 0xd6, 0xd0, 0x7e, 0x7d, 0xd8, 0x0d, 0x46, 0x2f, 0xd6, 0xc2, 0x6e, 0x30, 0x4c, 0x79, 0x17, 0x76, 0x83, 0xc4, 0xae, 0x9f, 0x85, 0xdb, 0x20, 0x62, 0xd8, 0x4b, 0x0e, 0x9d, 0xd4, 0x0e, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x1b, 0x62, 0xb8, 0x21, 0x86, 0x1b, 0x9a, 0x70, 0xad, 0x41, 0x90, 0x44, 0x6f, 0x68, 0xc6, 0xb3, 0x41, 0xc1, 0xf0, 0x78, 0xf0, 0xa6, 0x1a, 0x8a, 0x83, 0x71, 0xaa, 0x3c, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x43, 0x0c, 0x07, 0xc1, 0x82, 0x60, 0x41, 0xb0, 0xf0, 0x1b, 0xbc, 0x74, 0xce, 0xe6, 0x60, 0xdc, 0x41, 0x0d, 0x92, 0xc1, 0x6c, 0x10, 0x2d, 0xec, 0xc2, 0x6f, 0x3c, 0xdf, 0x60, 0xf0, 0x4e, 0x1e, 0x8c, 0x37, 0x9d, 0x83, 0x10, 0xf1, 0x3f, 0x0e, 0x0d, 0x92, 0x21, 0x83, 0x68, 0x61, 0x37, 0xc4, 0x7f, 0x83, 0x81, 0x1f, 0x32, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0x08, 0x01, 0xf0, 0x83, 0x66, 0xa2, 0x9d, 0x8e, 0x43, 0xc3, 0x2e, 0xec, 0x06, 0xa3, 0x5e, 0x72, 0x43, 0x0c, 0x87, 0xdd, 0x20, 0xb4, 0xdc, 0x0f, 0xe9, 0xdc, 0x0d, 0x31, 0x1c, 0x04, 0x0b, 0xbf, 0xc1, 0x60, 0x8d, 0x3d, 0x88, 0x07, 0x78, 0xb9, 0x61, 0x37, 0xf4, 0x10, 0x5a, 0x43, 0x0c, 0x17, 0x0f, 0x9e, 0xfc, 0x1a, 0xb2, 0x20, 0x58, 0x90, 0x0c, 0x76, 0x07, 0xc3, 0x3f, 0x76, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x37, 0xe4, 0x6b, 0x0f, 0x9a, 0x89, 0x76, 0x3a, 0x0e, 0x1d, 0x87, 0x0e, 0xc6, 0xbf, 0xe4, 0xf1, 0x78, 0x10, 0x2c, 0x6e, 0x90, 0x06, 0x90, 0x71, 0x10, 0x00, 0xf7, 0x8b, 0xc3, 0x2f, 0x88, 0x16, 0x88, 0xfa, 0x86, 0x68, 0x0e, 0x82, 0x0d, 0x22, 0x88, 0x61, 0x67, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x53, 0x4b, 0x4e, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x86, 0x62, 0xd1, 0x06, 0x0f, 0x40, 0x88, 0x38, 0x64, 0xed, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x71, 0x10, 0x6c, 0xd0, 0xc8, 0xf5, 0xca, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0xe6, 0xb7, 0x57, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x5f, 0xdc, 0x30, 0x71, 0x1b, 0xc4, 0x2e, 0x41, 0xc6, 0xc1, 0x33, 0x8c, 0x68, 0x86, 0xdf, 0x78, 0xbe, 0x41, 0x1c, 0xb7, 0x59, 0x1c, 0x3a, 0xa9, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0x41, 0xb0, 0xf0, 0x0b, 0x82, 0x05, 0xc1, 0x06, 0xb1, 0x1a, 0x33, 0x37, 0x48, 0x06, 0xe7, 0x0e, 0x22, 0x4e, 0x66, 0xee, 0xd0, 0x41, 0xe3, 0x60, 0x49, 0x0e, 0xcd, 0x41, 0x84, 0xcf, 0xcc, 0x1d, 0x8f, 0x97, 0x59, 0x83, 0xe7, 0xf5, 0xb5, 0x6c, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x06, 0xef, 0xa6, 0x7a, 0x1e, 0x80, 0xd7, 0x3a, 0xb8, 0x33, 0xb9, 0x30, 0xb2, 0x32, 0x10, 0x33, 0xb9, 0xb7, 0x36, 0x10, 0x38, 0xb9, 0x32, 0xbb, 0xb4, 0xb7, 0xba, 0x39, 0x90, 0x39, 0xba, 0x30, 0xba, 0xb2, 0x0d, 0xbf, 0x28, 0xad, 0xe1, 0xcf, 0xa5, 0x01, 0x0f, 0x2d, 0x4d, 0xde, 0x60, 0x11, 0x6b, 0xd5, 0x06, 0xaf, 0x8b, 0x04, 0x39, 0x78, 0x48, 0x33, 0xca, 0x86, 0xbf, 0x68, 0x36, 0x28, 0x52, 0x31, 0x37, 0x58, 0x52, 0xbf, 0xb4, 0xc1, 0x43, 0xf9, 0x5a, 0x36, 0x28, 0xfa, 0x74, 0x37, 0x78, 0x36, 0xb3, 0xca, 0x1a, 0x04, 0xe9, 0xe9, 0x1a, 0x87, 0x06, 0x3c, 0xb4, 0x34, 0xb9, 0xd5, 0x20, 0xd8, 0x4c, 0x37, 0x78, 0x32, 0x26, 0xc8, 0x06, 0x6f, 0xd7, 0x04, 0xd9, 0xe0, 0xf9, 0x9c, 0x20, 0x1b, 0xbc, 0xe3, 0x13, 0x64, 0x83, 0x07, 0x85, 0x82, 0xb4, 0xe1, 0x6d, 0x9d, 0x0d, 0x1e, 0x54, 0x03, 0x72, 0x10, 0x15, 0x5d, 0x73, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0xf0, 0xc4, 0x77, 0x94, 0x0d, 0x1e, 0x78, 0xaf, 0xb2, 0xc1, 0x89, 0xfd, 0x66, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x5e, 0x91, 0xba, 0xb2, 0xc1, 0xfb, 0xae, 0x57, 0x0e, 0x5e, 0xb2, 0xba, 0xb2, 0x41, 0x41, 0x1a, 0xbb, 0x86, 0xef, 0xdb, 0x07, 0x3c, 0xbd, 0x32, 0x73, 0x83, 0x12, 0x3a, 0x76, 0x83, 0xe7, 0x0c, 0xab, 0x1c, 0x84, 0xe9, 0xd8, 0x1a, 0x1e, 0x94, 0xdc, 0xe0, 0xa9, 0xc8, 0x29, 0x1b, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0x36, 0xac, 0x66, 0xd7, 0xf0, 0xa0, 0xe4, 0x06, 0x85, 0xfc, 0xfa, 0xc1, 0x5b, 0x30, 0x56, 0xd6, 0xf0, 0x8b, 0xcb, 0x06, 0xef, 0xca, 0x48, 0x39, 0x68, 0xfd, 0x56, 0xed, 0xe0, 0x65, 0xcc, 0x2a, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0x37, 0x0b, 0x80, 0x1c, 0x44, 0x45, 0xd7, 0x5c, 0x1b, 0x04, 0xe9, 0xe9, 0x1a, 0x87, 0x06, 0x3c, 0xbd, 0x32, 0xb3, 0x35, 0x08, 0xd8, 0xa0, 0x0d, 0xbf, 0xb8, 0xac, 0xe1, 0x6d, 0x9d, 0xc1, 0xe1, 0xc1, 0xe1, 0x83, 0x28, 0x3f, 0x9b, 0x5b, 0xc3, 0x25, 0xb5, 0x41, 0x24, 0x8a, 0xcb, 0xad, 0xc1, 0xb3, 0x99, 0x55, 0x36, 0xbc, 0xad, 0x33, 0x78, 0x7c, 0x10, 0x01, 0x69, 0x73, 0xb5, 0x06, 0x61, 0x04, 0xb4, 0xe1, 0x41, 0xc9, 0x0d, 0x02, 0x90, 0x6d, 0xc3, 0xdb, 0x3a, 0x07, 0x11, 0x90, 0x36, 0xd7, 0x6a, 0x10, 0xbf, 0x06, 0x66, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0x41, 0xc4, 0xe2, 0x99, 0x0d, 0xe0, 0x5f, 0x86, 0x47, 0x57, 0x26, 0xe7, 0x16, 0xc6, 0x06, 0x32, 0xf6, 0xd6, 0x06, 0x57, 0x47, 0x57, 0xb6, 0xe1, 0x79, 0x92, 0x0d, 0xe2, 0x70, 0x5c, 0x6e, 0xc3, 0x2f, 0x4a, 0x1b, 0x34, 0xd9, 0x79, 0xbc, 0xe1, 0x41, 0xc9, 0x0d, 0x4e, 0x47, 0x22, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x29, 0x32, 0xcb, 0x0d, 0x1e, 0x60, 0x92, 0x72, 0xd0, 0x1e, 0xea, 0xf1, 0xe1, 0x14, 0x5b, 0x83, 0x56, 0x81, 0x5c, 0x36, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x83, 0x07, 0xd4, 0xa9, 0x0c, 0xe0, 0x5f, 0x86, 0x47, 0x57, 0x26, 0xe7, 0x16, 0xc6, 0x06, 0x92, 0xe6, 0x36, 0x07, 0x57, 0x36, 0x46, 0xb7, 0xe1, 0x79, 0x92, 0x35, 0xdc, 0x69, 0x1b, 0x3c, 0xa0, 0x4e, 0xe5, 0x20, 0x6e, 0xd1, 0xe5, 0x36, 0xfc, 0xa2, 0xb4, 0x86, 0xcf, 0x95, 0x36, 0x78, 0x27, 0x9f, 0xca, 0x1a, 0xfe, 0x5c, 0xda, 0xa0, 0x45, 0xd2, 0xde, 0x0d, 0x42, 0xbf, 0x64, 0x83, 0x55, 0x90, 0xc9, 0x1b, 0x9c, 0x91, 0x50, 0xd7, 0x20, 0x68, 0x7f, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0x0f, 0xbd, 0x69, 0x5f, 0xc3, 0x9f, 0x4b, 0x1b, 0x2c, 0x2f, 0x82, 0x3b, 0x78, 0x2c, 0x6f, 0xc8, 0x1a, 0xfe, 0x5c, 0xda, 0xe0, 0xf8, 0xc2, 0x76, 0xf0, 0x28, 0xbc, 0x90, 0x35, 0xfc, 0xb9, 0xb4, 0x41, 0x43, 0xab, 0xe0, 0x07, 0xef, 0xb3, 0x95, 0x6d, 0x0d, 0x9f, 0x2b, 0xad, 0x21, 0x03, 0xbe, 0xe1, 0xe5, 0xbb, 0x83, 0x07, 0xf9, 0x84, 0x1c, 0xbc, 0xf4, 0x4f, 0xa5, 0xda, 0xf0, 0x17, 0xcd, 0x1a, 0x84, 0x7e, 0xc9, 0x06, 0x65, 0x13, 0xe6, 0xc1, 0xab, 0x7c, 0x4f, 0x36, 0x28, 0x48, 0x63, 0xd7, 0xf0, 0x7d, 0xfb, 0x80, 0x87, 0x16, 0x06, 0x6f, 0x50, 0x42, 0xc7, 0xae, 0x41, 0xe8, 0x97, 0x6c, 0x50, 0x36, 0x61, 0xae, 0xe1, 0x73, 0xa5, 0x35, 0xfc, 0xb9, 0xb4, 0xc1, 0x22, 0xe1, 0xd9, 0xc3, 0x07, 0xab, 0x07, 0x2f, 0xfd, 0x53, 0xe9, 0x20, 0x4c, 0xc7, 0xd6, 0x20, 0x48, 0x4f, 0x37, 0x68, 0x75, 0xb7, 0x77, 0x0d, 0xda, 0x17, 0x04, 0xdc, 0xf0, 0x89, 0xcd, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0xbd, 0x71, 0xf7, 0x86, 0x77, 0x7b, 0x36, 0x78, 0xce, 0x32, 0xcc, 0x1a, 0xde, 0xd6, 0x19, 0x1c, 0x3e, 0x68, 0x75, 0xb7, 0xb7, 0x0d, 0x4a, 0x78, 0xcc, 0x0d, 0x5f, 0x4e, 0x6e, 0x50, 0x50, 0x64, 0x6e, 0x70, 0x0c, 0x37, 0xd8, 0xf0, 0x8b, 0xcb, 0x06, 0x05, 0x6c, 0xfe, 0xc1, 0xe3, 0xa6, 0x61, 0x56, 0xc3, 0xe7, 0x4a, 0x1b, 0x84, 0x11, 0xd0, 0x06, 0xb1, 0x95, 0x37, 0x77, 0x70, 0x88, 0xe9, 0xd8, 0xe0, 0x18, 0x6e, 0xb0, 0xe1, 0x41, 0xc9, 0x35, 0xfc, 0xe2, 0xb2, 0x41, 0x01, 0x9b, 0x7f, 0xf0, 0xd8, 0xf1, 0x96, 0x83, 0x98, 0x02, 0x9c, 0x5b, 0x0d, 0x9f, 0x2b, 0x6d, 0x10, 0x46, 0x40, 0x1b, 0x3c, 0xf4, 0xa6, 0xfd, 0xe0, 0x10, 0xd3, 0xb1, 0xc1, 0x31, 0xdc, 0x60, 0xc3, 0x2f, 0x2e, 0x1b, 0x14, 0x39, 0xad, 0x6b, 0x78, 0x5b, 0x67, 0x83, 0xe5, 0x45, 0x70, 0x07, 0x91, 0x08, 0x38, 0xb7, 0x86, 0x5f, 0x5c, 0x36, 0x78, 0x71, 0x4c, 0xca, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0xf8, 0xc2, 0x76, 0x10, 0x89, 0x80, 0x73, 0x07, 0x8f, 0x9a, 0x49, 0x59, 0xc3, 0xdb, 0x3a, 0x1b, 0x34, 0xb4, 0x0a, 0x7e, 0x10, 0x89, 0x80, 0x73, 0xb5, 0x41, 0x09, 0x8f, 0xb9, 0x80, 0x87, 0x16, 0x06, 0xb7, 0x41, 0x41, 0x91, 0xb9, 0x41, 0x41, 0x1a, 0xbb, 0x41, 0x8a, 0xa6, 0xf1, 0x1a, 0xde, 0xed, 0x59, 0x83, 0xb2, 0xe4, 0x7d, 0x83, 0xd6, 0x7b, 0xa5, 0x0e, 0xa2, 0x9c, 0x6c, 0x6e, 0x83, 0x17, 0x56, 0xaa, 0x6c, 0xb0, 0xb2, 0xc0, 0x7b, 0x0d, 0x0f, 0x4a, 0xae, 0xe1, 0x17, 0x97, 0x83, 0xc7, 0x8e, 0xb7, 0x6c, 0x78, 0x5b, 0x67, 0xf0, 0xfa, 0x20, 0x9e, 0x14, 0xe7, 0xda, 0xf0, 0x41, 0xce, 0x1a, 0x7e, 0x25, 0x5b, 0x83, 0x62, 0x12, 0x73, 0x83, 0x10, 0x7c, 0x38, 0x48, 0x47, 0x3c, 0x5e, 0x83, 0x62, 0x12, 0x73, 0x83, 0x10, 0x7c, 0x18, 0xbc, 0x3e, 0x48, 0x47, 0x3c, 0x6e, 0x83, 0x82, 0x22, 0x73, 0x83, 0x82, 0x34, 0x76, 0x0d, 0xdf, 0xb7, 0x6f, 0x50, 0xd4, 0x16, 0x6f, 0x50, 0x42, 0xc7, 0x6e, 0xf0, 0x2e, 0xdf, 0x93, 0x83, 0x30, 0x1d, 0x5b, 0xc3, 0x83, 0x92, 0x6b, 0xf8, 0xc5, 0x65, 0x83, 0xd3, 0x45, 0xc6, 0x06, 0x69, 0xdf, 0x51, 0x6d, 0x78, 0x5b, 0x67, 0xf0, 0xfa, 0x20, 0x12, 0x20, 0xe7, 0x36, 0x28, 0x76, 0x34, 0xd7, 0xf0, 0xb6, 0xce, 0x06, 0x8b, 0x84, 0x67, 0x0f, 0xa2, 0xbd, 0x71, 0x6e, 0x83, 0xa7, 0x6a, 0xc5, 0x6c, 0x70, 0x0c, 0x37, 0xd8, 0xf0, 0x8b, 0xcb, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0xc1, 0x93, 0x5f, 0x43, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0xde, 0xd6, 0xd9, 0xe0, 0xbd, 0x16, 0x33, 0x1d, 0x44, 0x3f, 0xe3, 0xdc, 0x41, 0xd9, 0x67, 0xbc, 0x1a, 0xbc, 0x06, 0x55, 0x65, 0xc3, 0xf3, 0x24, 0x6b, 0xb8, 0xd3, 0x36, 0x78, 0x6d, 0xaa, 0xca, 0x00, 0xbe, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0xb6, 0xc1, 0x6b, 0x53, 0x55, 0x0e, 0x62, 0x41, 0x5d, 0x6e, 0xc3, 0x2f, 0x4a, 0x6b, 0xf8, 0x5c, 0x69, 0x83, 0x24, 0x1e, 0xd1, 0x35, 0xfc, 0xb9, 0x34, 0xe0, 0xbd, 0xd9, 0xbd, 0x07, 0x4f, 0xc3, 0x00, 0x69, 0xc3, 0x5f, 0x34, 0x1b, 0x14, 0xa9, 0x98, 0x1b, 0xac, 0x8d, 0x6b, 0x5a, 0x05, 0xbc, 0x32, 0xb7, 0xfc, 0xe0, 0xd9, 0xcc, 0x2a, 0x1b, 0x9e, 0x27, 0x59, 0xc3, 0x9d, 0x36, 0x03, 0x78, 0x60, 0x61, 0x81, 0xc8, 0x95, 0xd9, 0xa5, 0x95, 0xdd, 0x6d, 0x78, 0xb7, 0x67, 0x83, 0xf4, 0xe4, 0xd8, 0x35, 0xbc, 0xdb, 0xb3, 0x41, 0x59, 0x6f, 0xbb, 0x41, 0x51, 0x29, 0xbe, 0xc1, 0x33, 0x00, 0x53, 0x0e, 0x52, 0x5d, 0x37, 0x5b, 0x0d, 0x12, 0x08, 0x37, 0x0f, 0x9e, 0xcd, 0xac, 0x72, 0x90, 0xee, 0xba, 0xd9, 0x06, 0x4b, 0xea, 0x97, 0xd6, 0xe0, 0xd5, 0x74, 0xd4, 0x1b, 0xde, 0xd6, 0x19, 0x1c, 0xde, 0xe0, 0xc5, 0xf2, 0x22, 0x03, 0xde, 0x9b, 0xdd, 0xdb, 0x06, 0x05, 0x69, 0xec, 0x06, 0xf1, 0x25, 0x36, 0xb7, 0x86, 0x07, 0x25, 0x37, 0x78, 0x2a, 0x72, 0xca, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x2c, 0x79, 0xdf, 0xe0, 0xf5, 0xbf, 0x2a, 0x07, 0x51, 0x4e, 0x36, 0xb7, 0x86, 0xb7, 0x75, 0x0e, 0x62, 0x4a, 0x74, 0xae, 0x0d, 0x82, 0xf4, 0x74, 0x83, 0x18, 0x3e, 0x9b, 0x5b, 0x83, 0x80, 0x0d, 0xda, 0xf0, 0x8b, 0xcb, 0x06, 0xb1, 0x8a, 0x36, 0xb7, 0x86, 0x4b, 0x6a, 0x83, 0x98, 0x5b, 0x97, 0x3b, 0x88, 0xf3, 0xb4, 0xb9, 0x0e, 0x62, 0x5b, 0x6d, 0xee, 0x70, 0x8a, 0x75, 0x38, 0xc5, 0x36, 0xdc, 0x69, 0x33, 0x00, 0xba, 0xde, 0xa5, 0xd1, 0xa1, 0x81, 0xac, 0xdc, 0xa5, 0xcd, 0xa1, 0x81, 0x84, 0xb9, 0x91, 0x81, 0xd8, 0x85, 0xb9, 0x95, 0x81, 0xa4, 0xb9, 0xcd, 0xd1, 0x85, 0xb1, 0xb1, 0x85, 0xd1, 0xa5, 0xbd, 0xb9, 0x81, 0xdc, 0xa5, 0xd1, 0xa1, 0x81, 0xd0, 0xa1, 0x95, 0x81, 0x94, 0xd8, 0x95, 0x95, 0xc9, 0x81, 0x94, 0xd9, 0x95, 0xb9, 0xd1, 0xb9, 0x36, 0xcc, 0xd0, 0x1a, 0xe6, 0x7e, 0xd5, 0xa0, 0xc5, 0x77, 0xde, 0x39, 0x68, 0x33, 0x14, 0xfa, 0x70, 0x8a, 0xb5, 0x61, 0xe2, 0xd6, 0x30, 0x71, 0x6b, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x3b, 0x78, 0xda, 0xc5, 0xce, 0x86, 0x89, 0xdb, 0x20, 0xfe, 0x32, 0xe6, 0x36, 0xd4, 0x91, 0x35, 0xcc, 0xd0, 0x06, 0x2f, 0x07, 0x2d, 0xd9, 0x70, 0x22, 0x6c, 0xf0, 0x72, 0xd0, 0x92, 0x0d, 0x16, 0xb3, 0x41, 0x2d, 0xb3, 0x6c, 0xf8, 0xc4, 0x66, 0x0d, 0xcf, 0x93, 0xac, 0xc1, 0x42, 0x65, 0xaa, 0x83, 0x07, 0x98, 0x82, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xe4, 0x64, 0xac, 0xe1, 0x73, 0x97, 0x01, 0xef, 0x0e, 0xed, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xda, 0xc9, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xee, 0xc9, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0xaf, 0xe5, 0xfc, 0x58, 0xc3, 0x47, 0xed, 0x07, 0xaf, 0xf2, 0xfc, 0xe8, 0xe0, 0x5c, 0x6f, 0xb0, 0xe1, 0x79, 0x92, 0x0d, 0x62, 0x09, 0x76, 0x6e, 0x83, 0x75, 0x71, 0x47, 0x1b, 0x3c, 0x21, 0x27, 0x63, 0x0d, 0x9f, 0xbb, 0x0c, 0x78, 0x65, 0x6e, 0xf9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x6e, 0x52, 0xc6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x09, 0x53, 0xc6, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x77, 0x7b, 0x36, 0x78, 0xf2, 0xe8, 0xc7, 0x1a, 0x3e, 0x6a, 0x3f, 0x78, 0x5a, 0xe9, 0x47, 0x07, 0xad, 0xf1, 0x10, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x58, 0x82, 0x9d, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xc8, 0xc9, 0x58, 0xc3, 0xe7, 0x2e, 0x03, 0x1e, 0x5b, 0xd8, 0xb8, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0xa4, 0x95, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0xca, 0x95, 0xb1, 0xe1, 0x83, 0x9c, 0x35, 0xfc, 0x9b, 0xb3, 0x41, 0x23, 0xdb, 0x03, 0x87, 0x4e, 0x6a, 0x1b, 0xac, 0x02, 0x93, 0xdd, 0xa0, 0xe0, 0xc3, 0x5c, 0xc3, 0xbf, 0x39, 0x1b, 0xb4, 0x2e, 0x56, 0x70, 0xe8, 0xa4, 0x76, 0xb0, 0xcc, 0x49, 0x76, 0xc3, 0xf3, 0x24, 0x1b, 0xc4, 0x12, 0xec, 0xdc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x42, 0x4e, 0xc6, 0x1a, 0x3e, 0x77, 0xd9, 0x60, 0x71, 0x67, 0xf6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x82, 0x58, 0xc6, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x78, 0x1d, 0x59, 0xc6, 0x86, 0x77, 0x7b, 0xd6, 0xa0, 0x94, 0x10, 0xdf, 0x60, 0x05, 0x99, 0xfe, 0x86, 0x77, 0x7b, 0x36, 0x78, 0x97, 0xeb, 0xc7, 0x1a, 0x3e, 0x6a, 0x3f, 0x78, 0xff, 0xeb, 0x47, 0x07, 0x0d, 0x3b, 0x1f, 0x6c, 0x78, 0x9e, 0x64, 0x83, 0x58, 0x82, 0x9d, 0xdb, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x4f, 0xc8, 0xc9, 0x58, 0xc3, 0xe7, 0x2e, 0x03, 0x9e, 0x59, 0x18, 0xbd, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x5e, 0x0b, 0x97, 0xb1, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x1e, 0x32, 0x97, 0xb1, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x25, 0xc4, 0x37, 0x58, 0x41, 0xa6, 0xbf, 0xe1, 0xdd, 0x9e, 0x0d, 0xde, 0x61, 0xfb, 0xb1, 0x86, 0x8f, 0xda, 0x0f, 0xde, 0x7b, 0xfb, 0xd1, 0xc1, 0xf3, 0x34, 0x4e, 0x36, 0x3c, 0x4f, 0xb2, 0x41, 0x2c, 0xc1, 0xce, 0x6d, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x27, 0xe4, 0x64, 0xac, 0xe1, 0x73, 0x97, 0x01, 0x8f, 0xad, 0x8e, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x0f, 0x53, 0xcc, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0x66, 0xcc, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0x8f, 0x16, 0xfe, 0x58, 0xc3, 0x47, 0xed, 0x07, 0x8f, 0x23, 0xfe, 0xe8, 0xe0, 0x6d, 0x21, 0x27, 0x1b, 0x9e, 0x27, 0xd9, 0x20, 0x96, 0x60, 0xe7, 0x36, 0x58, 0x17, 0x77, 0xb4, 0xc1, 0x13, 0x72, 0x32, 0xd6, 0xf0, 0xb9, 0xcb, 0x80, 0xa7, 0x57, 0x37, 0x6f, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x17, 0x85, 0x66, 0x6c, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0xc7, 0x8e, 0x66, 0x6c, 0x78, 0xb7, 0x67, 0x0d, 0x4a, 0x09, 0xf1, 0x0d, 0x56, 0x90, 0xe9, 0x6f, 0x78, 0xb7, 0x67, 0x83, 0xc7, 0x34, 0x7f, 0xac, 0xe1, 0xa3, 0xf6, 0x83, 0x47, 0x3b, 0x7f, 0xb4, 0xc1, 0x5b, 0x44, 0x2a, 0xda, 0xf0, 0x3c, 0xc9, 0x06, 0xb1, 0x04, 0x3b, 0xb7, 0xc1, 0xba, 0xb8, 0xa3, 0x0d, 0x9e, 0x90, 0x93, 0xb1, 0xe1, 0x73, 0x97, 0x01, 0xcf, 0x2e, 0xcc, 0xdd, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0xef, 0xbd, 0xcd, 0xd8, 0x60, 0x5d, 0xdc, 0xd1, 0x06, 0x6f, 0xd1, 0xcd, 0xd8, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x12, 0xe2, 0x1b, 0xac, 0x20, 0xd3, 0xdf, 0xf0, 0x6e, 0xcf, 0x06, 0x8f, 0xbc, 0xfe, 0x58, 0xc3, 0x47, 0xed, 0x07, 0x8f, 0xc9, 0xfe, 0x58, 0xc3, 0x47, 0xed, 0x07, 0xef, 0xd6, 0xfe, 0x68, 0x83, 0x17, 0x93, 0x54, 0x74, 0xb0, 0x92, 0x4e, 0xff, 0x70, 0x8a, 0x1d, 0x4e, 0xb1, 0x83, 0xb8, 0x7e, 0x9d, 0xdb, 0x30, 0x43, 0x1b, 0x44, 0xff, 0xc5, 0xdc, 0x86, 0x13, 0x61, 0x83, 0xe8, 0xbf, 0x98, 0x5b, 0xc3, 0x39, 0xb2, 0x20, 0x58, 0x1c, 0x04, 0x8b, 0xb3, 0x41, 0x9b, 0x25, 0x4d, 0x87, 0x53, 0x6c, 0x71, 0x90, 0xad, 0x41, 0x5b, 0x20, 0x2b, 0x1b, 0x62, 0xb8, 0x21, 0xf7, 0x3d, 0xfc, 0xc6, 0xe3, 0x41, 0xb0, 0x38, 0x08, 0xd6, 0x90, 0xb5, 0xdb, 0x20, 0x21, 0xe5, 0x7e, 0x83, 0x84, 0xb2, 0x93, 0x41, 0xb0, 0xc2, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x44, 0xfe, 0xb3, 0xcc, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x1b, 0x94, 0xfc, 0x8a, 0x83, 0x60, 0x83, 0x58, 0x3b, 0x3c, 0x39, 0x74, 0x3f, 0x3a, 0x0e, 0x1d, 0x62, 0x78, 0xb0, 0x9a, 0x01, 0xe8, 0x60, 0x35, 0x03, 0xd0, 0xf1, 0x6d, 0x10, 0x2c, 0x48, 0x06, 0x57, 0x0e, 0x86, 0xa3, 0xf4, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x8b, 0x83, 0x6c, 0x83, 0x67, 0xad, 0xdf, 0x0c, 0x82, 0x05, 0xc9, 0xc0, 0xf3, 0x3e, 0x07, 0x27, 0xa1, 0xe3, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0x86, 0x16, 0x40, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x1b, 0x34, 0x6e, 0xcd, 0x72, 0xf0, 0x4c, 0xf9, 0x9b, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x8b, 0x1b, 0x3c, 0x5e, 0xa2, 0xa2, 0xc5, 0xe1, 0x37, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x64, 0x20, 0x7f, 0x77, 0x70, 0xf6, 0x32, 0x1e, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x2e, 0x41, 0x79, 0x3e, 0x58, 0xaa, 0xf6, 0x72, 0x1c, 0x1a, 0x04, 0x0b, 0x82, 0x05, 0xc1, 0xc2, 0x6f, 0xf0, 0xec, 0x83, 0x80, 0x83, 0x92, 0xa1, 0x69, 0x90, 0x0c, 0x73, 0x30, 0x06, 0x23, 0x0f, 0x7b, 0xbc, 0x83, 0x60, 0x41, 0xb0, 0x20, 0x58, 0xf8, 0x0d, 0x5e, 0x35, 0x06, 0x70, 0x50, 0x32, 0x34, 0x0d, 0x92, 0x41, 0x76, 0x68, 0xdf, 0x72, 0x30, 0xb0, 0x45, 0x87, 0x5d, 0xd8, 0x0d, 0x96, 0x0d, 0x06, 0x6d, 0xf0, 0x32, 0x31, 0x92, 0xc3, 0xd1, 0xbe, 0x20, 0x5b, 0x43, 0x1e, 0x7b, 0x0c, 0xe0, 0x25, 0x4c, 0xce, 0xee, 0x4d, 0x07, 0x84, 0x2d, 0x4c, 0xce, 0x2e, 0x8c, 0x0d, 0x44, 0xae, 0x4c, 0xec, 0xed, 0x8d, 0x3e, 0x9c, 0x62, 0xc3, 0x2f, 0x88, 0x16, 0xc4, 0xc3, 0x6e, 0x58, 0x41, 0x5d, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0x38, 0x08, 0x36, 0x68, 0x06, 0xeb, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x13, 0x5d, 0xff, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x9b, 0x00, 0x3e, 0xd8, 0xc2, 0xe4, 0xec, 0xc2, 0xd8, 0x5a, 0xdc, 0xca, 0xca, 0xc8, 0x5a, 0xd6, 0xca, 0xe4, 0xdc, 0xca, 0xd8, 0xe1, 0x37, 0x9e, 0x8f, 0x07, 0x11, 0xed, 0x3e, 0x77, 0x1c, 0x3a, 0x0e, 0x1d, 0x8f, 0x87, 0x5d, 0xd8, 0x0d, 0x46, 0xc7, 0xfa, 0xc2, 0x2e, 0xf4, 0xa0, 0xed, 0x11, 0xa7, 0x43, 0x3a, 0xf7, 0x70, 0xb4, 0x2f, 0x08, 0x16, 0x04, 0x0b, 0x92, 0x81, 0xb0, 0x1d, 0x9c, 0x84, 0x8e, 0x07, 0xc9, 0xe0, 0xd6, 0xc1, 0x58, 0x5f, 0x3d, 0x78, 0x73, 0x8e, 0xcd, 0xe1, 0x14, 0x3b, 0xa4, 0x6a, 0x8e, 0xc7, 0xc3, 0x6f, 0x3c, 0x1e, 0x04, 0x0b, 0xbf, 0xf1, 0x78, 0x10, 0x2c, 0x08, 0x16, 0x7e, 0x83, 0xd8, 0x48, 0xed, 0x39, 0x28, 0x19, 0x9a, 0x0e, 0x5e, 0x95, 0x0b, 0x71, 0x90, 0xb8, 0x26, 0x3d, 0xfc, 0x06, 0x03, 0x13, 0x60, 0xf8, 0x0d, 0x06, 0x3b, 0xc0, 0xf0, 0x0b, 0xa2, 0x05, 0xda, 0xe7, 0x0f, 0xbb, 0x41, 0x6a, 0xab, 0xf5, 0x1a, 0x62, 0x38, 0x08, 0x36, 0x78, 0x2e, 0x1d, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0x07, 0x25, 0xda, 0x2c, 0xfc, 0xc6, 0xf3, 0xc5, 0x83, 0x72, 0xb1, 0xe7, 0x78, 0x7c, 0xf0, 0xdc, 0x45, 0x9b, 0xe3, 0xd0, 0x04, 0xed, 0xf3, 0x8f, 0xc7, 0xc3, 0x2f, 0x88, 0x16, 0x78, 0x3f, 0x7f, 0xd8, 0x0d, 0xda, 0x09, 0x71, 0x5a, 0xd8, 0x85, 0x1e, 0xc4, 0x67, 0xfe, 0xdc, 0x1a, 0x62, 0x38, 0x08, 0x36, 0x78, 0x2e, 0x1d, 0xc9, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0x83, 0xe7, 0x49, 0xda, 0x2c, 0x81, 0xd0, 0xe7, 0x3f, 0x78, 0x42, 0xa5, 0xcd, 0x71, 0x68, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0x38, 0x08, 0x36, 0x68, 0xcb, 0xaa, 0x7f, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x3b, 0x5b, 0xfd, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x2f, 0x6e, 0xa8, 0xe3, 0x1b, 0x5e, 0xbe, 0x9b, 0x00, 0x7f, 0xb6, 0x30, 0x39, 0xbb, 0x30, 0xb6, 0x16, 0xb7, 0xb2, 0x32, 0xb2, 0x16, 0xb6, 0x3a, 0x36, 0x76, 0xf8, 0x8d, 0xe7, 0xe3, 0x41, 0x44, 0xff, 0xcf, 0x1d, 0x87, 0x8e, 0x43, 0xc7, 0xe3, 0xc3, 0x29, 0x36, 0xc1, 0xfb, 0xf9, 0xc7, 0xe3, 0xe1, 0x17, 0x44, 0x0b, 0xfc, 0x9f, 0x3f, 0xec, 0xc2, 0x6e, 0xf0, 0x2a, 0x1a, 0x9c, 0xc3, 0xfa, 0xe6, 0xc2, 0x2e, 0xf4, 0x20, 0xf6, 0x03, 0xe8, 0x16, 0x04, 0x0b, 0x92, 0x0d, 0xd6, 0xae, 0x53, 0x1c, 0x1c, 0x28, 0x92, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x1b, 0x04, 0xa5, 0xf7, 0xf0, 0x1b, 0xcf, 0x07, 0xc1, 0x2a, 0xfc, 0x82, 0x64, 0x83, 0x35, 0x17, 0x48, 0x07, 0x07, 0x8a, 0xe4, 0xe3, 0xdb, 0xf0, 0x0b, 0x92, 0x01, 0x85, 0x7f, 0xdf, 0xc1, 0x81, 0x22, 0xf9, 0xf8, 0x36, 0xc1, 0xff, 0xf9, 0x8b, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0x6b, 0x79, 0x6d, 0x0e, 0xa2, 0x51, 0x2e, 0x6e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x41, 0x71, 0xa8, 0x31, 0xfc, 0xc6, 0xf3, 0x41, 0xb0, 0x41, 0x7c, 0x50, 0xb4, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x1b, 0x8f, 0x07, 0xc1, 0xe2, 0x06, 0x09, 0x1e, 0xcf, 0x1b, 0x9c, 0x23, 0x77, 0x37, 0x18, 0x52, 0xbf, 0x1b, 0xac, 0x7f, 0x7c, 0xd9, 0x20, 0x21, 0xe5, 0x7e, 0x83, 0x84, 0xb2, 0x93, 0x0d, 0x12, 0xfd, 0xa0, 0x07, 0xc1, 0x0a, 0xbf, 0xf1, 0x7c, 0x10, 0x2c, 0x48, 0x06, 0xd2, 0x3b, 0x07, 0x07, 0x8a, 0xe4, 0x83, 0x64, 0x43, 0x83, 0x43, 0x0c, 0x0f, 0x56, 0x33, 0x00, 0x1d, 0xdf, 0x96, 0xc0, 0xe9, 0xe7, 0xff, 0xe0, 0xad, 0xb8, 0x36, 0xc7, 0xa1, 0xe3, 0xd0, 0xf1, 0xf8, 0x38, 0x34, 0xc8, 0xd6, 0x90, 0xc7, 0x5e, 0x1c, 0x04, 0x1b, 0xb4, 0x65, 0xd5, 0x3f, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0x20, 0xd8, 0xa0, 0x9d, 0xad, 0xfe, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x37, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x4d, 0x80, 0x3f, 0x5b, 0x98, 0x9c, 0x5d, 0x18, 0x5b, 0x8b, 0x5b, 0x59, 0x19, 0x59, 0x8b, 0x5e, 0xdd, 0x5c, 0x39, 0xfc, 0xc6, 0xf3, 0xf1, 0x20, 0x9e, 0x23, 0xe8, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xe1, 0x14, 0x3b, 0x88, 0x95, 0x03, 0xba, 0xe3, 0xf1, 0x20, 0x5a, 0x50, 0x7f, 0x30, 0x4a, 0x39, 0x0f, 0x82, 0x14, 0xff, 0x78, 0x3c, 0x08, 0x16, 0x37, 0x48, 0x03, 0xc8, 0x38, 0x78, 0xbc, 0x44, 0xc5, 0xe2, 0xb0, 0x0b, 0xbb, 0x41, 0x71, 0x32, 0xb8, 0xb0, 0x1b, 0x8c, 0x88, 0xde, 0x85, 0xdd, 0x60, 0xad, 0x82, 0xff, 0xc2, 0x6e, 0x10, 0x5f, 0xf0, 0x33, 0x0b, 0xbb, 0xd0, 0x83, 0xb7, 0x88, 0x54, 0x2c, 0xec, 0x42, 0x27, 0x38, 0x7f, 0x0f, 0xe9, 0xdc, 0xc3, 0xd1, 0x7e, 0x38, 0xda, 0x0f, 0x47, 0xfb, 0xe1, 0x68, 0x3f, 0x1c, 0xed, 0x0b, 0x82, 0x85, 0x5f, 0x82, 0xeb, 0xf7, 0xf8, 0x36, 0x08, 0x16, 0x7e, 0x09, 0xb6, 0xbf, 0x8f, 0x6f, 0x83, 0x60, 0x41, 0xb0, 0xc1, 0xb3, 0x8e, 0x6c, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0x4b, 0xb0, 0x7b, 0x3f, 0xfc, 0xc6, 0xf3, 0x0d, 0x5e, 0xa3, 0x64, 0xb3, 0xc1, 0x43, 0x97, 0x6c, 0xd6, 0xe0, 0x71, 0x7a, 0x25, 0x83, 0x60, 0x83, 0x86, 0x36, 0x57, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x41, 0xb0, 0xc1, 0xe1, 0x4a, 0x7a, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0xbb, 0x21, 0x55, 0x73, 0xf0, 0xee, 0x28, 0x9b, 0xe3, 0xd0, 0xf1, 0xfc, 0x38, 0xb4, 0x06, 0x8f, 0xf5, 0x2b, 0x19, 0x04, 0x1b, 0x34, 0xb4, 0xb9, 0x32, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0x1d, 0x7e, 0xe3, 0xf9, 0xf0, 0x0b, 0x82, 0x0d, 0x0e, 0x57, 0xd2, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0xa9, 0x83, 0x83, 0x87, 0x63, 0xd9, 0x1c, 0x87, 0x8e, 0xe7, 0xc7, 0xa1, 0x43, 0x0c, 0x8f, 0x43, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0xe1, 0x37, 0x9e, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x60, 0x83, 0xa6, 0x90, 0x06, 0x06, 0xc9, 0x40, 0xf9, 0x1b, 0x44, 0x0b, 0x3b, 0x41, 0xff, 0xfb, 0xe3, 0xd0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0xf1, 0xa0, 0xcd, 0x92, 0xa6, 0xc5, 0x41, 0xb0, 0xf0, 0x0b, 0xbf, 0x41, 0x6c, 0xa4, 0xf6, 0x1c, 0x8c, 0x90, 0xa8, 0x83, 0x66, 0x18, 0x95, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x04, 0x0b, 0x92, 0x81, 0xfd, 0x9f, 0x83, 0xb3, 0x97, 0xf1, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x1f, 0xb4, 0x20, 0xd1, 0x74, 0x70, 0x60, 0xd0, 0x3e, 0x0e, 0x1d, 0x87, 0x8e, 0xc7, 0xc7, 0xa1, 0x0d, 0x31, 0x5c, 0x90, 0x0c, 0xc4, 0xe9, 0xe0, 0x24, 0x74, 0xbc, 0xc1, 0xb2, 0x30, 0x98, 0x35, 0x38, 0x1b, 0x3d, 0x6f, 0x48, 0x76, 0x1c, 0x34, 0x5c, 0x4b, 0xb2, 0x41, 0x9a, 0x7b, 0xc6, 0x4a, 0x90, 0xbd, 0x3f, 0x1c, 0xed, 0x4b, 0xb0, 0x7d, 0x7f, 0x90, 0x5e, 0x27, 0x70, 0x1c, 0x3a, 0xc4, 0xf0, 0x78, 0xbc, 0xcc, 0x1a, 0xac, 0x1d, 0xed, 0xde, 0xa0, 0x94, 0x10, 0x5f, 0x83, 0x92, 0x85, 0x7d, 0x96, 0x59, 0x83, 0x87, 0xc1, 0xaf, 0x6c, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xf0, 0xde, 0xc0, 0x96, 0x35, 0xfc, 0xb9, 0xb4, 0xa1, 0xc5, 0xc7, 0x41, 0xfb, 0xb3, 0x81, 0x07, 0x2f, 0x86, 0x6a, 0xd9, 0xf0, 0x17, 0xcd, 0x06, 0xed, 0xcf, 0x06, 0x6e, 0x70, 0x2e, 0x5c, 0xd8, 0xe0, 0x85, 0x86, 0x2d, 0x1b, 0x9c, 0xd8, 0x6f, 0x36, 0x78, 0xf1, 0x63, 0xcb, 0x06, 0xe7, 0xc1, 0x8e, 0x0d, 0x6f, 0xd9, 0x6d, 0xf0, 0xe0, 0xc8, 0x96, 0x0d, 0xef, 0xf6, 0xac, 0xe1, 0x6d, 0x9d, 0x0d, 0x9a, 0x38, 0x0d, 0xec, 0xe0, 0x25, 0x97, 0x2d, 0x87, 0x53, 0xec, 0x70, 0x8a, 0x6d, 0xf8, 0x45, 0x69, 0x0d, 0x9f, 0x2b, 0x6d, 0xf0, 0xc6, 0x52, 0x90, 0x83, 0xf7, 0x44, 0xa3, 0x6c, 0xf8, 0x8b, 0x66, 0x83, 0x37, 0x96, 0x82, 0x6c, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0xd6, 0x21, 0x7a, 0x37, 0x38, 0xbe, 0x1b, 0x6c, 0x50, 0x90, 0xc6, 0x6e, 0xd0, 0x70, 0x70, 0xdf, 0x1a, 0xde, 0xed, 0xd9, 0xe0, 0x18, 0x3b, 0xb6, 0xc1, 0x73, 0xca, 0x4f, 0xd6, 0xa0, 0x10, 0x4c, 0x3d, 0x78, 0x39, 0xf4, 0x49, 0x1b, 0x14, 0xa4, 0xb1, 0x1b, 0x14, 0xfe, 0x06, 0x6b, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0x1e, 0x9d, 0xbc, 0xb2, 0x86, 0x07, 0x25, 0x37, 0x78, 0x9d, 0xf2, 0xca, 0xc1, 0x5b, 0x30, 0x56, 0x0e, 0x9e, 0x8d, 0x87, 0x72, 0xf0, 0x6c, 0x2b, 0x94, 0x0d, 0x0a, 0xd2, 0xd8, 0x0d, 0x56, 0x55, 0x9d, 0xae, 0xe1, 0xdd, 0x9e, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x78, 0x06, 0xf4, 0xca, 0x41, 0xec, 0xe1, 0xd0, 0x1d, 0x3c, 0x28, 0x7a, 0x65, 0xc3, 0x07, 0x39, 0x6b, 0x78, 0x84, 0x75, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x8a, 0x54, 0xcc, 0x01, 0x8f, 0x2c, 0x4d, 0x3e, 0x68, 0xf0, 0xb8, 0x6f, 0x0d, 0x8a, 0x49, 0xcc, 0x0d, 0x8a, 0x54, 0xcc, 0x83, 0xf5, 0x73, 0xa7, 0xad, 0xc1, 0xb9, 0x70, 0x61, 0x0d, 0x79, 0xec, 0x0d, 0x3f, 0xc2, 0x0c, 0x4e, 0x1f, 0x44, 0x7e, 0xfa, 0xdc, 0x41, 0x78, 0xaa, 0x6e, 0x70, 0x1c, 0x9b, 0xd8, 0xa0, 0xc1, 0xe3, 0xbe, 0x35, 0x3c, 0x4f, 0xb2, 0x86, 0x3b, 0x6d, 0x06, 0xf8, 0xb0, 0xb0, 0x40, 0xa8, 0x9a, 0x92, 0x36, 0xfc, 0x9b, 0xb3, 0x41, 0x41, 0x91, 0xb9, 0xe1, 0x6d, 0x9d, 0x83, 0x08, 0xe5, 0xa1, 0x5b, 0x83, 0x25, 0xf5, 0x4b, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x07, 0x11, 0xed, 0x3e, 0xb7, 0x41, 0xc1, 0x87, 0xb9, 0x86, 0x47, 0x58, 0x37, 0x88, 0x98, 0x1e, 0xba, 0x35, 0x28, 0x26, 0x31, 0x37, 0x28, 0x52, 0x31, 0x07, 0x3c, 0xb4, 0x3a, 0xf7, 0xe0, 0xe1, 0xdb, 0x2b, 0x6d, 0x78, 0xb7, 0x67, 0x0d, 0xca, 0x92, 0xf7, 0x0d, 0xca, 0x9d, 0xf7, 0x83, 0x17, 0xe1, 0xa1, 0x6c, 0xf0, 0xfc, 0xef, 0x95, 0x36, 0x28, 0x3a, 0x68, 0xd7, 0xf0, 0x7d, 0xfb, 0x80, 0xa7, 0xf6, 0x26, 0x6e, 0x50, 0x42, 0xc7, 0xae, 0xe1, 0xdf, 0xf9, 0x0d, 0x9e, 0x8a, 0x80, 0xb2, 0xc1, 0x82, 0x56, 0xe2, 0x0e, 0xc2, 0x74, 0x6c, 0x83, 0x06, 0x8f, 0xfb, 0xd6, 0xf0, 0x6e, 0xcf, 0x1a, 0x94, 0x25, 0xef, 0x1b, 0xbc, 0x1b, 0x7d, 0xe5, 0x20, 0xf6, 0x70, 0xe8, 0x0e, 0x5e, 0x3c, 0xbd, 0xb2, 0xc1, 0x71, 0x6c, 0x62, 0x83, 0x57, 0x98, 0xa0, 0x6c, 0xf0, 0x6a, 0xf6, 0x95, 0x35, 0x38, 0x86, 0x1b, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xb7, 0xbf, 0xaf, 0x6c, 0xf0, 0xd2, 0xf8, 0x95, 0x35, 0x38, 0x0f, 0x76, 0x1c, 0xbc, 0x2b, 0x23, 0xe5, 0xe0, 0xd9, 0xf3, 0x2b, 0x1b, 0x1c, 0xc7, 0x26, 0x36, 0x78, 0x61, 0x0f, 0xca, 0x06, 0x8f, 0xc8, 0x5f, 0x59, 0x83, 0x62, 0x47, 0x73, 0x83, 0x57, 0x94, 0xa0, 0xac, 0xc1, 0x92, 0xfa, 0xa5, 0x35, 0xbc, 0x71, 0xb7, 0xe1, 0xe5, 0xbb, 0x83, 0x88, 0xfe, 0x9f, 0x3b, 0x08, 0x4f, 0xd5, 0x0d, 0x8e, 0xe1, 0x06, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xed, 0xef, 0x2b, 0x1b, 0xbc, 0x87, 0x7f, 0x65, 0x0d, 0x6f, 0xeb, 0x0c, 0x5e, 0x1f, 0xbc, 0xc2, 0x04, 0xe5, 0xe0, 0xad, 0xfe, 0x2b, 0x1b, 0x1c, 0xc7, 0x26, 0x36, 0x78, 0x9d, 0x1f, 0xca, 0x1a, 0x9e, 0x27, 0xd9, 0x20, 0x1e, 0x80, 0xe8, 0x36, 0xbc, 0xcd, 0xba, 0xe1, 0xdf, 0x9c, 0x0d, 0x0a, 0x8a, 0xcc, 0x83, 0xa7, 0x45, 0xb0, 0xac, 0x41, 0xb1, 0xa3, 0xb9, 0xc1, 0x0b, 0x79, 0x50, 0xd6, 0x60, 0x49, 0xfd, 0xd2, 0x1a, 0xde, 0xb8, 0xdb, 0xf0, 0xf2, 0xdd, 0x41, 0x3c, 0x47, 0xd0, 0x1d, 0x84, 0xa7, 0xea, 0x06, 0x45, 0xa7, 0xf1, 0x06, 0x4b, 0x25, 0x09, 0x37, 0x78, 0x5a, 0x04, 0xcb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xb9, 0xd2, 0x06, 0xcf, 0x9e, 0x60, 0x59, 0xc3, 0x9f, 0x4b, 0x03, 0x9e, 0x5d, 0x98, 0xbb, 0x41, 0x00, 0x9d, 0x1d, 0x3c, 0xc1, 0x0f, 0xa5, 0x0d, 0x5f, 0xbf, 0x6c, 0xf0, 0x04, 0x3f, 0x94, 0x0d, 0x8a, 0x4e, 0xe3, 0x0d, 0x1e, 0xfe, 0xc2, 0xb2, 0x41, 0x4b, 0x67, 0x59, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0xed, 0xef, 0x2b, 0x6b, 0x78, 0x16, 0x6f, 0x70, 0x7b, 0xf0, 0x70, 0x70, 0x77, 0xf0, 0x72, 0x50, 0x3d, 0x28, 0x18, 0xb4, 0x1c, 0x34, 0x43, 0x96, 0xb5, 0x86, 0xb7, 0x75, 0x06, 0xaf, 0x0f, 0x5e, 0xd8, 0x83, 0x72, 0xf0, 0x0a, 0x10, 0x96, 0x0d, 0x97, 0xd4, 0x06, 0xad, 0x43, 0xf4, 0xae, 0xc1, 0x4b, 0xcb, 0x4f, 0x36, 0x38, 0x86, 0x1b, 0x1c, 0x34, 0x34, 0xdd, 0xd7, 0x6a, 0x70, 0xc4, 0x87, 0xdd, 0xf0, 0x8b, 0xd2, 0x1a, 0x3e, 0x57, 0xda, 0x20, 0x89, 0x47, 0x74, 0x83, 0x37, 0x96, 0x82, 0xb4, 0xe1, 0x2f, 0x9a, 0x35, 0x08, 0xfd, 0x92, 0x0d, 0xca, 0x26, 0xcc, 0x35, 0x58, 0xaf, 0x52, 0xb5, 0x06, 0x01, 0x74, 0x76, 0xf0, 0x58, 0x68, 0x95, 0x83, 0x87, 0x34, 0xa3, 0xb4, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x47, 0x58, 0xd7, 0xa0, 0x98, 0xc4, 0xdc, 0xa0, 0x48, 0xc5, 0x3c, 0x78, 0x76, 0x2a, 0xcc, 0x1a, 0x14, 0x93, 0x98, 0x1b, 0x14, 0xa9, 0x98, 0x07, 0x2f, 0x04, 0x4c, 0x59, 0x83, 0x62, 0x12, 0x73, 0x83, 0x22, 0x15, 0x73, 0x83, 0xc5, 0x9d, 0xd9, 0xad, 0x41, 0x31, 0x89, 0xb9, 0x41, 0x91, 0x8a, 0x79, 0xf0, 0xd2, 0xf2, 0x93, 0x0d, 0x5e, 0x51, 0x82, 0x72, 0xf0, 0x3e, 0x1e, 0x94, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x0a, 0xd2, 0xd8, 0x01, 0x8f, 0xad, 0x8e, 0x5d, 0xc3, 0x83, 0x92, 0x1b, 0x04, 0x20, 0xdb, 0x41, 0xc4, 0x3f, 0xd1, 0x6d, 0x50, 0x90, 0xc6, 0x0e, 0x78, 0x7a, 0x75, 0xf3, 0x1a, 0x1e, 0x94, 0xdc, 0x20, 0x00, 0xd9, 0x0e, 0xe2, 0x4b, 0x8b, 0x6e, 0x83, 0x13, 0xfb, 0xcd, 0x1a, 0x14, 0x9d, 0xc6, 0x1b, 0xbc, 0x22, 0x75, 0x65, 0x0d, 0x6f, 0xeb, 0x6c, 0xb0, 0x88, 0x9f, 0x76, 0xf0, 0xfa, 0x20, 0x7a, 0xc4, 0xe8, 0x36, 0xfc, 0x45, 0xb3, 0xc1, 0xa3, 0x0a, 0x41, 0x36, 0x38, 0xba, 0x0e, 0x6e, 0xf0, 0x58, 0xd6, 0x95, 0x0d, 0x1e, 0xdd, 0xba, 0xb2, 0x06, 0xcf, 0xd1, 0x48, 0xd9, 0x60, 0x8d, 0x54, 0xd3, 0x06, 0x65, 0x96, 0xee, 0x86, 0x07, 0x25, 0x37, 0x38, 0x1d, 0x89, 0x6c, 0x78, 0xb7, 0x67, 0x83, 0xa6, 0xc8, 0x2c, 0x37, 0x78, 0x02, 0x1f, 0xca, 0xc1, 0x33, 0x66, 0x57, 0xd6, 0xe0, 0x7d, 0x23, 0x29, 0x1b, 0xac, 0x91, 0x6a, 0xda, 0xa0, 0xcc, 0xd2, 0xdd, 0xf0, 0xa0, 0xe4, 0x06, 0xa7, 0x23, 0x91, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x14, 0x99, 0xe5, 0x06, 0x4f, 0xe8, 0x43, 0x39, 0x78, 0x1b, 0xee, 0x4a, 0x1b, 0x14, 0xa4, 0xb1, 0x03, 0x9e, 0x5b, 0x98, 0xbd, 0x06, 0x27, 0xf6, 0x9b, 0x35, 0x28, 0x4b, 0xde, 0x37, 0x48, 0xdc, 0xa8, 0x3d, 0x78, 0x7d, 0x09, 0xcb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0xe0, 0xe1, 0x41, 0xfb, 0xb3, 0x81, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x4d, 0x15, 0x2b, 0x6b, 0x78, 0xb7, 0x67, 0x83, 0xf7, 0x67, 0xb5, 0x6c, 0x70, 0x8c, 0x53, 0xd8, 0xe0, 0x2d, 0xa9, 0x30, 0xb5, 0xc1, 0xa2, 0xf2, 0xa4, 0x0d, 0x0a, 0x8a, 0xcc, 0x0d, 0x1e, 0x0b, 0xad, 0xb2, 0x06, 0x85, 0x60, 0xea, 0xc1, 0x8b, 0x6b, 0x41, 0x36, 0xfc, 0xe2, 0xb2, 0x86, 0x5f, 0x5c, 0x36, 0x78, 0x4b, 0x2a, 0xcc, 0x06, 0xe9, 0xae, 0x9b, 0x6b, 0x78, 0x5b, 0x67, 0xf0, 0xfa, 0xe0, 0x85, 0x80, 0x29, 0xad, 0xe1, 0x17, 0x97, 0x35, 0xbc, 0xad, 0x33, 0xe0, 0xb1, 0x85, 0x8d, 0xb5, 0x86, 0x5f, 0x5c, 0xd6, 0xf0, 0xb6, 0xce, 0x41, 0xf4, 0x9f, 0xd1, 0x1d, 0xa4, 0xda, 0xc2, 0xad, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0x97, 0x96, 0x9f, 0x6c, 0xf0, 0x04, 0x3e, 0x94, 0x0d, 0x9e, 0xd0, 0x87, 0x72, 0xf0, 0xba, 0x22, 0x94, 0xc3, 0x29, 0xd6, 0xe1, 0x14, 0xdb, 0x70, 0x22, 0x6c, 0x10, 0xe3, 0xab, 0x73, 0x6b, 0x38, 0x47, 0x16, 0x04, 0x1b, 0xbc, 0x91, 0x58, 0x67, 0x71, 0xd8, 0x0d, 0x1e, 0xf8, 0xac, 0xb1, 0x41, 0x7c, 0xa6, 0xcf, 0x1d, 0x44, 0xc0, 0xef, 0xd9, 0xf1, 0x78, 0x41, 0xb0, 0x21, 0x86, 0x8b, 0xc3, 0x2f, 0x08, 0x36, 0x38, 0x5c, 0x49, 0x0f, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x07, 0x51, 0x19, 0x71, 0xb3, 0x41, 0xe1, 0x96, 0x34, 0xfc, 0x12, 0x7c, 0xff, 0x7e, 0x7c, 0x3b, 0x88, 0x71, 0x6e, 0xb9, 0xe3, 0xd0, 0xf1, 0xfc, 0x78, 0xbc, 0x41, 0xd4, 0x03, 0xb6, 0x0d, 0x82, 0x0d, 0x62, 0x91, 0x69, 0x6e, 0x71, 0x90, 0xad, 0x21, 0x8f, 0xbd, 0x38, 0x08, 0x36, 0x78, 0x20, 0x2d, 0xc0, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xf8, 0x8d, 0xe7, 0x83, 0x60, 0x83, 0x06, 0xc9, 0x06, 0x0e, 0xa2, 0x44, 0x6a, 0xee, 0x38, 0x74, 0x3c, 0x1e, 0x04, 0x0b, 0xb2, 0x35, 0xe4, 0xb1, 0xc7, 0x00, 0xdf, 0x30, 0x39, 0xbb, 0x37, 0x1d, 0x10, 0xb1, 0x30, 0x32, 0x90, 0xbb, 0xb4, 0x39, 0x78, 0x10, 0x2c, 0x48, 0x06, 0x42, 0x73, 0x30, 0x1c, 0xa5, 0x0f, 0x2d, 0xc0, 0x86, 0x5f, 0x10, 0x2d, 0xc8, 0x87, 0xdd, 0xe0, 0x11, 0x02, 0x19, 0x0b, 0xa2, 0x05, 0xc2, 0x3b, 0xec, 0x06, 0xa1, 0xe5, 0xbe, 0xb0, 0x1b, 0x24, 0xc6, 0x67, 0x1c, 0xd6, 0x37, 0x0f, 0x06, 0x6b, 0xec, 0x61, 0x85, 0x76, 0xd8, 0x0d, 0x1e, 0xd3, 0x90, 0xb1, 0x20, 0x5a, 0x70, 0xf7, 0x20, 0xdc, 0xdc, 0x0f, 0x2b, 0xb4, 0xc3, 0x6e, 0xf0, 0xc6, 0x81, 0x8c, 0x05, 0xd1, 0x82, 0xed, 0x20, 0xd8, 0xe0, 0xe4, 0x03, 0x3d, 0x48, 0x86, 0x0c, 0xa2, 0x85, 0xdd, 0x60, 0x0c, 0x2c, 0x1c, 0xc6, 0xe5, 0x38, 0x74, 0x58, 0xa1, 0x1d, 0x76, 0xe1, 0x36, 0x78, 0x75, 0x45, 0xc6, 0x41, 0x48, 0x81, 0x2f, 0x88, 0x16, 0xd4, 0x0e, 0xb2, 0x35, 0xe4, 0xb1, 0x17, 0x07, 0xc1, 0x06, 0x0f, 0x66, 0x9f, 0x19, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0x10, 0x6c, 0xf0, 0x98, 0xf7, 0x99, 0x41, 0x32, 0x64, 0x10, 0x2d, 0xec, 0xf0, 0x1b, 0xcf, 0x17, 0x37, 0xd4, 0xf1, 0x0d, 0x2f, 0xdf, 0x4d, 0x80, 0xc7, 0x1d, 0xda, 0x5b, 0x5b, 0xcb, 0x9b, 0xdb, 0x58, 0x39, 0xfc, 0xc6, 0xf3, 0xf1, 0x20, 0x7e, 0x19, 0xe9, 0x8e, 0x43, 0xc7, 0xa1, 0xe3, 0xf1, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x07, 0x45, 0xae, 0xc2, 0x06, 0xe1, 0xe6, 0x7e, 0x38, 0xc5, 0x0e, 0x2b, 0xb4, 0x83, 0x6c, 0x83, 0x17, 0x0d, 0xd9, 0x0c, 0xbb, 0x20, 0x58, 0xf8, 0x05, 0xc9, 0xc0, 0xf9, 0x76, 0x30, 0x1c, 0xa5, 0x0f, 0xca, 0xa1, 0xa4, 0x83, 0x37, 0xe7, 0xd8, 0x2c, 0x08, 0x16, 0x04, 0x0b, 0xbf, 0x41, 0x94, 0x40, 0xd2, 0x1d, 0x94, 0x0c, 0x4d, 0x83, 0x64, 0xc8, 0x20, 0x5a, 0xd8, 0x0d, 0x82, 0xd2, 0x7b, 0xf8, 0x8d, 0xe7, 0x6b, 0xd0, 0x16, 0x13, 0xc0, 0x20, 0x19, 0x72, 0x70, 0xa0, 0x48, 0x5e, 0x83, 0x07, 0xba, 0x95, 0x1c, 0x44, 0x57, 0x0a, 0xdd, 0xb0, 0x0b, 0xb7, 0x21, 0x86, 0x07, 0x51, 0x2c, 0x72, 0xb3, 0x21, 0x86, 0x6b, 0xf0, 0x38, 0xbd, 0x92, 0x41, 0xb0, 0x20, 0xd8, 0x10, 0xc3, 0xc5, 0x41, 0xb0, 0x20, 0xd8, 0x20, 0x9e, 0x3c, 0x75, 0x0e, 0x16, 0x26, 0xff, 0x1c, 0x9a, 0xbf, 0x1c, 0x8f, 0x07, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x7e, 0x41, 0xb0, 0x41, 0x1a, 0xed, 0xc2, 0x20, 0x19, 0x32, 0x88, 0x16, 0x76, 0xe1, 0x37, 0x9e, 0x0f, 0xbf, 0x04, 0xdf, 0xdf, 0x1f, 0xdf, 0x0e, 0xde, 0x1d, 0x65, 0x73, 0x1c, 0x3a, 0x9e, 0x1f, 0x87, 0x86, 0x5d, 0xb8, 0x0d, 0x31, 0x9c, 0xe0, 0xfd, 0xfb, 0x0d, 0x31, 0x5c, 0x83, 0xc7, 0xfa, 0x95, 0x0c, 0x82, 0x0d, 0xe2, 0xa9, 0x92, 0x6e, 0x90, 0x0c, 0x19, 0x44, 0x0b, 0x3b, 0xfc, 0xc6, 0xf3, 0xe1, 0x17, 0x04, 0x1b, 0xa4, 0xd1, 0x2e, 0x0c, 0x92, 0x21, 0x83, 0x68, 0x61, 0x17, 0x7e, 0xe3, 0xf9, 0xf0, 0x4b, 0x20, 0xf4, 0xef, 0x8f, 0x6f, 0x07, 0x0f, 0xc7, 0xb2, 0x39, 0x0e, 0x1d, 0xcf, 0x8f, 0x43, 0x87, 0x18, 0x1e, 0x87, 0x06, 0xc9, 0x90, 0x41, 0xb4, 0xb0, 0xc3, 0x6f, 0x3c, 0x1f, 0x44, 0x0b, 0x8c, 0xef, 0x41, 0xb8, 0xb9, 0x1f, 0x56, 0x68, 0x8f, 0x43, 0x07, 0xcf, 0x4d, 0xb3, 0x39, 0x1e, 0x0f, 0x82, 0x05, 0xc1, 0x82, 0x64, 0xb8, 0x83, 0x20, 0xe7, 0x1f, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x6e, 0x88, 0xff, 0xc1, 0x18, 0x58, 0x38, 0x0e, 0x0d, 0xbb, 0xc1, 0xa8, 0x97, 0xdc, 0x60, 0x1d, 0xb9, 0xc1, 0x20, 0x5b, 0x83, 0xb6, 0x40, 0x56, 0x36, 0xc4, 0x70, 0x43, 0xee, 0x7b, 0xf8, 0x8d, 0xc7, 0x83, 0x60, 0x71, 0x1c, 0x3c, 0x1c, 0x5c, 0x1e, 0xdc, 0x1e, 0xfc, 0x1d, 0x54, 0x0f, 0x0a, 0x06, 0x6f, 0x07, 0x2f, 0x07, 0xa7, 0x07, 0x0f, 0x07, 0x6f, 0x07, 0x7f, 0x07, 0x97, 0x07, 0x87, 0x07, 0x47, 0x07, 0x7f, 0x07, 0x9f, 0x0f, 0x1e, 0x05, 0x0c, 0x78, 0x7c, 0x1b, 0x04, 0x1b, 0x9c, 0x03, 0xbe, 0x0f, 0x46, 0x14, 0xee, 0xf1, 0x78, 0x99, 0x35, 0x78, 0x5e, 0x5f, 0xcb, 0x86, 0x5f, 0x94, 0xd6, 0xf0, 0xe7, 0xd2, 0x80, 0x87, 0x96, 0x26, 0x1f, 0x3c, 0xa4, 0x19, 0x65, 0xc3, 0x07, 0x39, 0x6b, 0x50, 0x4c, 0x62, 0x6e, 0xf0, 0xba, 0x48, 0x90, 0x83, 0x98, 0xe7, 0x9a, 0xdb, 0x20, 0xf6, 0x7b, 0xe8, 0x36, 0xbc, 0xdb, 0xb3, 0x86, 0xb7, 0x75, 0x16, 0xc7, 0x83, 0x78, 0xfc, 0x98, 0x6b, 0x0d, 0x6f, 0xeb, 0x1c, 0x44, 0x45, 0xd7, 0x5c, 0xab, 0x41, 0xfc, 0x1a, 0x98, 0x6d, 0x78, 0x9e, 0x64, 0x83, 0x38, 0x1c, 0x97, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x51, 0x48, 0x2e, 0xb7, 0xe1, 0x41, 0xc9, 0x0d, 0x4e, 0x47, 0x22, 0x1b, 0xde, 0xed, 0xd9, 0xa0, 0x29, 0x32, 0xcb, 0x35, 0x28, 0xe1, 0x31, 0x37, 0x78, 0x61, 0x0f, 0xca, 0x06, 0xef, 0xca, 0x48, 0x39, 0x88, 0xf9, 0x32, 0xba, 0x83, 0xc8, 0x33, 0x97, 0x3b, 0x9c, 0x62, 0x1b, 0xc4, 0xff, 0xb9, 0xdc, 0x6a, 0xf0, 0x1a, 0x54, 0x95, 0x0d, 0xcf, 0x93, 0x6c, 0x10, 0xcd, 0x99, 0x73, 0x1b, 0x7e, 0x51, 0xda, 0x20, 0x8e, 0x35, 0xe7, 0x36, 0xfc, 0x45, 0xb3, 0x41, 0x91, 0x8a, 0xb9, 0xc1, 0x92, 0xfa, 0xa5, 0x0d, 0x22, 0x2d, 0x74, 0x6e, 0x83, 0x82, 0x34, 0x76, 0xc0, 0xbb, 0x4b, 0x83, 0xd7, 0xe0, 0x5c, 0xb8, 0xb0, 0x86, 0x3c, 0xf6, 0x86, 0x1f, 0x61, 0x06, 0xa7, 0x0f, 0x22, 0x40, 0x90, 0x6e, 0x83, 0x35, 0x52, 0x4d, 0x6b, 0xf8, 0x77, 0x7e, 0x83, 0xd6, 0xc6, 0x67, 0xdb, 0xf0, 0xb6, 0xce, 0x41, 0x24, 0x88, 0xce, 0x6d, 0x50, 0xf4, 0xe9, 0x6e, 0x10, 0x73, 0xeb, 0x72, 0x6b, 0x10, 0xa4, 0xa7, 0x6b, 0x1c, 0x1a, 0xf0, 0xee, 0xd2, 0xe0, 0xd6, 0xe0, 0x29, 0x16, 0x1f, 0x1b, 0x2e, 0xa9, 0x0d, 0x62, 0x6e, 0x5d, 0x6e, 0x0d, 0x62, 0xbd, 0x8e, 0x6e, 0x83, 0x12, 0x1e, 0x73, 0xc1, 0xe1, 0x83, 0xc8, 0xa3, 0xa5, 0x5b, 0xc3, 0xdb, 0xac, 0x07, 0x51, 0x5b, 0x47, 0xb7, 0xe1, 0x6d, 0x9d, 0xc1, 0xeb, 0x83, 0x08, 0xb1, 0xa5, 0x6b, 0x0d, 0x1e, 0x07, 0xf7, 0xb1, 0xe1, 0x92, 0xda, 0x20, 0xe6, 0xd6, 0xe5, 0xd6, 0xe0, 0x85, 0x80, 0x29, 0x1b, 0x1c, 0xc3, 0x0d, 0x36, 0xbc, 0xad, 0x73, 0x10, 0x21, 0xb6, 0x74, 0xad, 0xc1, 0xeb, 0xfc, 0x3d, 0x36, 0x5c, 0x52, 0x1b, 0xc4, 0xdc, 0xba, 0xdc, 0x1a, 0xb4, 0x0e, 0xd1, 0xbb, 0xe1, 0xdd, 0x9e, 0x0d, 0x1e, 0x78, 0x9d, 0xb2, 0x41, 0x13, 0x10, 0xbd, 0x1b, 0x44, 0x41, 0x2e, 0x5d, 0xad, 0xc1, 0x73, 0xf4, 0x3e, 0x36, 0x5c, 0x52, 0x1b, 0xc4, 0xdc, 0xba, 0xdc, 0x1a, 0x3c, 0x3b, 0x15, 0x66, 0x83, 0x25, 0xf5, 0x4b, 0x6b, 0x78, 0xe3, 0x6e, 0xc3, 0xcb, 0x77, 0x07, 0xf1, 0xcb, 0x48, 0xb7, 0x41, 0xc1, 0x87, 0xb9, 0x06, 0xc5, 0x24, 0xe6, 0x06, 0x21, 0xf8, 0x70, 0xf0, 0xec, 0x54, 0x98, 0x83, 0x18, 0xc6, 0xa5, 0x6b, 0x0d, 0x9e, 0x3f, 0xf7, 0xb1, 0x41, 0xb1, 0xa3, 0xb9, 0x86, 0x77, 0x7b, 0x36, 0x78, 0x2a, 0xe8, 0xca, 0x1a, 0xde, 0xd6, 0xd9, 0x60, 0x11, 0x3f, 0xed, 0x41, 0x84, 0xd8, 0xd2, 0xb5, 0xc1, 0x83, 0x48, 0x57, 0x36, 0x38, 0xb1, 0xdf, 0xac, 0x41, 0xd1, 0x69, 0xbc, 0xc1, 0x2b, 0x52, 0x57, 0x36, 0x88, 0x19, 0x60, 0xba, 0x0d, 0x7f, 0xd1, 0x6c, 0xf0, 0xa8, 0x42, 0x90, 0x0d, 0xbf, 0xb8, 0x6c, 0xf0, 0x58, 0xd6, 0x95, 0x0d, 0x1e, 0xdd, 0xba, 0xb2, 0x06, 0x25, 0x3c, 0xe6, 0x06, 0xaf, 0x30, 0x41, 0xd9, 0xa0, 0xa0, 0xc8, 0xdc, 0xa0, 0x30, 0x54, 0x5d, 0x83, 0xe7, 0x68, 0xa4, 0x6c, 0xb0, 0x46, 0xaa, 0x69, 0x83, 0x32, 0x4b, 0x77, 0xc3, 0x83, 0x92, 0x1b, 0x9c, 0x8e, 0x44, 0x36, 0xbc, 0xdb, 0xb3, 0x41, 0x53, 0x64, 0x96, 0x1b, 0x44, 0x2b, 0x19, 0xdd, 0xc1, 0x33, 0x66, 0x57, 0x36, 0x28, 0xe1, 0x31, 0x37, 0x78, 0x61, 0x0f, 0xca, 0x06, 0x05, 0x45, 0xe6, 0x86, 0x5f, 0x5c, 0xd6, 0xe0, 0x7d, 0x23, 0x29, 0x1b, 0xac, 0x91, 0x6a, 0xda, 0xa0, 0xcc, 0xd2, 0xdd, 0xf0, 0xa0, 0xe4, 0x06, 0xa7, 0x23, 0x91, 0x0d, 0xef, 0xf6, 0x6c, 0xd0, 0x14, 0x99, 0xe5, 0x06, 0x31, 0x5f, 0x46, 0x77, 0xf0, 0x36, 0xdc, 0x95, 0x83, 0xb2, 0xce, 0xb3, 0x0d, 0x97, 0xd4, 0x06, 0x31, 0xb7, 0x2e, 0xb7, 0x06, 0xd1, 0x23, 0x46, 0x77, 0x10, 0xc3, 0xb8, 0x74, 0xb5, 0xe1, 0x13, 0x9b, 0x35, 0x7c, 0xee, 0x32, 0xe0, 0xa1, 0xa5, 0xc9, 0x1b, 0xde, 0xed, 0xd9, 0xe0, 0x14, 0x0f, 0xbb, 0x41, 0xba, 0xeb, 0xe6, 0x06, 0x4d, 0x40, 0xf4, 0xb6, 0x41, 0x09, 0x8f, 0xb9, 0xe1, 0xcb, 0xc9, 0x0d, 0xe2, 0x58, 0x5d, 0x6e, 0x83, 0x73, 0xe1, 0xc2, 0x1a, 0xb4, 0x05, 0xb2, 0xb2, 0xe1, 0x17, 0x97, 0x0d, 0x0f, 0xde, 0xac, 0xe1, 0x89, 0xbb, 0x0d, 0xcf, 0xe2, 0x1d, 0x44, 0xb2, 0x28, 0x5d, 0x1b, 0xde, 0xed, 0x59, 0xc3, 0xdb, 0x3a, 0x07, 0xcf, 0x53, 0xbe, 0x5d, 0xc3, 0xdb, 0x3a, 0x83, 0xd7, 0x07, 0x51, 0xd1, 0x35, 0xd7, 0xe1, 0x14, 0xeb, 0x70, 0x8a, 0x6d, 0xb8, 0xd3, 0x66, 0x00, 0xb4, 0x0b, 0x03, 0x81, 0x93, 0x0b, 0x1b, 0xa3, 0x4b, 0x1b, 0x0b, 0x63, 0x03, 0x49, 0x73, 0xa3, 0x2b, 0x93, 0x83, 0x93, 0x2b, 0xa3, 0x2b, 0x93, 0x03, 0x19, 0x0b, 0x73, 0x03, 0x09, 0x73, 0x23, 0x03, 0xb9, 0x4b, 0x63, 0x63, 0x03, 0x49, 0x3b, 0x73, 0x7b, 0x93, 0x2b, 0x03, 0x49, 0xa3, 0x73, 0x6d, 0x98, 0xa1, 0x35, 0x4c, 0xdc, 0x1a, 0x26, 0x6e, 0x0d, 0x73, 0xbf, 0x41, 0x02, 0xe1, 0xe6, 0xc1, 0xcb, 0x9e, 0x68, 0x36, 0xcc, 0xfd, 0x80, 0xf7, 0x66, 0xf7, 0x1e, 0xbc, 0x50, 0x87, 0xe6, 0x20, 0x92, 0x2f, 0xe6, 0x36, 0x9c, 0x08, 0x1b, 0x44, 0x4d, 0x35, 0xdd, 0x1a, 0xce, 0x91, 0x41, 0xb4, 0xf0, 0xc3, 0x2f, 0x08, 0x36, 0x48, 0x77, 0xdf, 0x39, 0x24, 0x5a, 0x8f, 0xe7, 0xc7, 0xe3, 0x65, 0x96, 0x0d, 0x7f, 0xd1, 0x6c, 0x10, 0xa6, 0x63, 0x1b, 0x2e, 0xa9, 0x0d, 0x8a, 0x1a, 0xf1, 0x35, 0xa4, 0x96, 0x36, 0x3c, 0x28, 0xb9, 0xe1, 0x8e, 0xda, 0xf0, 0x6e, 0xcf, 0x06, 0x4f, 0xfc, 0x55, 0xd9, 0x20, 0xdd, 0x75, 0xf3, 0x20, 0x76, 0x49, 0xe7, 0x3a, 0x9c, 0x62, 0x87, 0x53, 0x6c, 0xf8, 0x0d, 0xc9, 0xa5, 0xe1, 0x17, 0x64, 0x6b, 0x90, 0x88, 0x0f, 0x3c, 0x6e, 0xf0, 0xe8, 0x0f, 0x8c, 0x0d, 0xe2, 0x3e, 0x3a, 0x67, 0x60, 0x48, 0xa2, 0x8b, 0x07, 0x6f, 0xef, 0xc0, 0x38, 0x1e, 0x0f, 0xbf, 0x20, 0x58, 0x3c, 0x78, 0xf8, 0x02, 0xc9, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0xdc, 0x60, 0x25, 0x67, 0xe8, 0x21, 0xb5, 0x74, 0x3c, 0x1e, 0x7e, 0x41, 0xb0, 0x20, 0x58, 0x90, 0x0c, 0x84, 0xe7, 0x90, 0x5c, 0x1a, 0x24, 0x43, 0x06, 0xd1, 0xc2, 0x0e, 0xbf, 0xf1, 0x7c, 0xf1, 0xe0, 0x65, 0x1b, 0x18, 0xc7, 0xe3, 0xe3, 0xd0, 0x20, 0x58, 0x10, 0x6c, 0x90, 0x3e, 0x7d, 0x72, 0x30, 0x8c, 0x1d, 0x06, 0xc1, 0x0a, 0x92, 0x81, 0x38, 0x1d, 0x56, 0x68, 0x87, 0x5f, 0x90, 0x0c, 0xdc, 0x37, 0x87, 0x15, 0xda, 0xe3, 0xdb, 0xf0, 0x1b, 0x8f, 0x17, 0x0f, 0x62, 0x8b, 0x63, 0xee, 0x78, 0x3c, 0xfc, 0x82, 0x60, 0xf1, 0x20, 0x36, 0xb2, 0xe7, 0x06, 0xc1, 0x1a, 0x3c, 0xf6, 0x59, 0x63, 0x83, 0xa7, 0x5e, 0xd1, 0x0c, 0xbf, 0x20, 0x19, 0xa8, 0x36, 0x07, 0x01, 0xef, 0x7f, 0x7c, 0x1b, 0x7e, 0xe3, 0xf1, 0xe2, 0x41, 0xd4, 0xe6, 0xd1, 0x1d, 0x8f, 0x07, 0xc1, 0x06, 0xb1, 0xc8, 0x34, 0xb7, 0x78, 0x10, 0xf1, 0xd7, 0x74, 0xc7, 0xe3, 0x0d, 0xda, 0x6c, 0x69, 0x5a, 0x0d, 0x81, 0x58, 0x0d, 0x75, 0x64, 0x83, 0xa5, 0x7f, 0xfa, 0x07, 0xcd, 0x16, 0x21, 0x0f, 0xbf, 0xf0, 0x8b, 0x41, 0x24, 0x86, 0x5f, 0x10, 0x6c, 0x90, 0x4a, 0xdc, 0x31, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x17, 0x7c, 0x0d, 0x22, 0xb1, 0x21, 0x86, 0x1d, 0x8f, 0x87, 0x5f, 0x10, 0x2c, 0x1e, 0xee, 0xf1, 0x41, 0xb6, 0x86, 0x34, 0xd0, 0xb8, 0x41, 0xfb, 0x1f, 0x9d, 0x87, 0xab, 0xeb, 0x78, 0x3c, 0xfc, 0x82, 0x60, 0xf1, 0x20, 0x68, 0x96, 0x07, 0xd9, 0x1a, 0xd2, 0x40, 0xe3, 0x06, 0x4d, 0x0e, 0x79, 0x1f, 0xae, 0xae, 0xe3, 0xf1, 0xf0, 0x0b, 0x82, 0xc5, 0x83, 0x43, 0xed, 0xec, 0x20, 0x5b, 0x43, 0x1a, 0x68, 0x1c, 0xf0, 0xe8, 0xe4, 0xd2, 0x8d, 0xe7, 0x6b, 0x90, 0x5e, 0x33, 0x7a, 0xf0, 0xd8, 0x95, 0xb3, 0x35, 0x48, 0xbf, 0x10, 0x3d, 0x78, 0x02, 0xab, 0xdb, 0x02, 0xff, 0x26, 0x1e, 0x9c, 0x9f, 0x68, 0x3b, 0x1e, 0x0f, 0xbf, 0x20, 0x58, 0x3c, 0x48, 0x72, 0x60, 0x1e, 0x64, 0x6b, 0x48, 0x03, 0x8d, 0x03, 0x5e, 0x5c, 0x5d, 0xb8, 0xf1, 0x7c, 0x0d, 0x56, 0x2b, 0x00, 0x1f, 0xc4, 0xf7, 0x9f, 0xc6, 0x1a, 0x2c, 0xab, 0x1c, 0x1e, 0x24, 0x03, 0xff, 0x7f, 0x1d, 0x8f, 0xd7, 0x60, 0x05, 0x76, 0xec, 0xc1, 0x89, 0xd9, 0xb7, 0xe3, 0xf1, 0x20, 0x58, 0x3c, 0x58, 0x08, 0xa9, 0x3f, 0xc8, 0xd6, 0x90, 0x06, 0x1a, 0x07, 0x3c, 0xb8, 0x32, 0x77, 0xe3, 0xf9, 0x02, 0x1f, 0x06, 0x1f, 0x2c, 0x31, 0x4b, 0x59, 0xe0, 0xeb, 0xe8, 0x41, 0x32, 0x10, 0x96, 0xe3, 0x71, 0xc7, 0xe3, 0x83, 0x55, 0x27, 0x69, 0x1b, 0xb4, 0xd9, 0xd2, 0xb4, 0x06, 0x91, 0xe5, 0xa3, 0xb0, 0xe1, 0x41, 0xc9, 0x0d, 0x1e, 0x98, 0x22, 0xb3, 0x41, 0x29, 0x21, 0xbe, 0x86, 0x37, 0xee, 0x36, 0xd4, 0xfc, 0x20, 0x12, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0x50, 0x76, 0xc9, 0x6e, 0x10, 0xd9, 0xe9, 0x74, 0x1b, 0x14, 0x14, 0x99, 0xb3, 0x41, 0xc9, 0xc2, 0x3e, 0x87, 0x5b, 0x66, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0xda, 0xff, 0xe8, 0xdc, 0x70, 0x47, 0xcd, 0x86, 0xe7, 0x49, 0x36, 0x5c, 0x69, 0x1b, 0x94, 0x2c, 0xec, 0x73, 0x78, 0xfe, 0x63, 0x83, 0x52, 0x42, 0x7c, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0x9a, 0x1c, 0xf2, 0xde, 0x70, 0x47, 0xcd, 0x86, 0xe7, 0x49, 0x36, 0x08, 0xc7, 0xe4, 0x0d, 0x4a, 0x16, 0xf6, 0x39, 0x28, 0xe5, 0x2b, 0x37, 0x28, 0x25, 0xc4, 0xd7, 0xa0, 0xec, 0x92, 0x1d, 0xf0, 0xe8, 0xe4, 0xd2, 0x0d, 0x77, 0xd4, 0x6a, 0x90, 0x5e, 0x33, 0x7a, 0xb0, 0x74, 0xca, 0x75, 0x0d, 0xd2, 0x2f, 0x44, 0x0f, 0x16, 0x7d, 0xef, 0x2d, 0xf0, 0x6f, 0xe2, 0xc1, 0x72, 0xe3, 0xc0, 0x36, 0x3c, 0x4f, 0xb2, 0xc1, 0x09, 0x70, 0x76, 0x83, 0x92, 0x85, 0x7d, 0x0e, 0x52, 0x64, 0x8b, 0x36, 0x28, 0x25, 0xc4, 0xd7, 0xa0, 0xec, 0x92, 0x1d, 0xf0, 0xe2, 0xea, 0xc2, 0x0d, 0x77, 0xd4, 0x6a, 0xb0, 0x5a, 0x01, 0xf8, 0x60, 0x5d, 0xc7, 0xf0, 0x1a, 0x2c, 0xab, 0x1c, 0x3e, 0x58, 0x39, 0x39, 0xbc, 0x06, 0x2b, 0xb0, 0x63, 0x0f, 0x16, 0x59, 0xc7, 0xb6, 0xe1, 0x79, 0x92, 0x0d, 0xd6, 0x0f, 0xea, 0x6f, 0x50, 0xb2, 0xb0, 0xcf, 0xc1, 0xd2, 0x6b, 0xb6, 0x0d, 0xca, 0x2e, 0xd9, 0x01, 0x0f, 0xae, 0xcc, 0xdd, 0x70, 0x47, 0xad, 0xc0, 0x87, 0xc1, 0x07, 0x8d, 0xdd, 0x77, 0x2d, 0xf0, 0x75, 0xf4, 0x41, 0xe3, 0xe8, 0x51, 0x6d, 0x78, 0x9e, 0x64, 0x0d, 0x77, 0xda, 0x0c, 0xd0, 0xb2, 0x85, 0xe5, 0x95, 0xc9, 0xb5, 0xd4, 0x36, 0x28, 0x59, 0xd8, 0xe7, 0xa0, 0xb1, 0xdd, 0xa8, 0x83, 0xc8, 0xcb, 0x51, 0xd8, 0xa0, 0x94, 0x10, 0xdf, 0xe0, 0xc5, 0x13, 0x29, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x38, 0xe6, 0xa6, 0xdb, 0xa0, 0x64, 0x61, 0x9f, 0x83, 0x77, 0x4f, 0x7b, 0x6c, 0x50, 0x4a, 0x88, 0xaf, 0x41, 0xd9, 0x25, 0xbb, 0xc1, 0x4a, 0xce, 0xd0, 0x35, 0x5c, 0x52, 0x6b, 0x3c, 0x3e, 0x68, 0x37, 0x3d, 0xaa, 0xd9, 0xa0, 0x64, 0x61, 0x9f, 0x83, 0x57, 0x6a, 0x9e, 0x6c, 0x50, 0x4a, 0x88, 0xaf, 0x41, 0x41, 0x1a, 0xbb, 0x86, 0xef, 0xdb, 0x37, 0xd4, 0x88, 0x83, 0x47, 0x64, 0xad, 0xac, 0xc1, 0x02, 0xb9, 0xa7, 0x83, 0x37, 0x0b, 0x9f, 0x6c, 0x50, 0x90, 0xc6, 0xae, 0xe1, 0xfb, 0xf6, 0x0d, 0xda, 0xcc, 0x53, 0xdb, 0xa0, 0x84, 0x8e, 0xdd, 0xe0, 0x91, 0xd6, 0x28, 0x07, 0x61, 0x3a, 0xb6, 0x86, 0x77, 0x7b, 0xd6, 0xf0, 0xb6, 0xce, 0x06, 0x4f, 0x8c, 0x78, 0x69, 0x0d, 0x6f, 0xeb, 0x0c, 0x0e, 0x1f, 0x3c, 0x39, 0x23, 0xa5, 0x0d, 0x4a, 0x7b, 0xcb, 0x35, 0x7c, 0xae, 0xb4, 0x41, 0x7c, 0x7b, 0xd1, 0x1d, 0x3c, 0xf4, 0x1a, 0x65, 0x83, 0x95, 0x2e, 0x4e, 0x1b, 0x3c, 0x9b, 0x59, 0x65, 0x83, 0x76, 0x86, 0xc1, 0x36, 0x28, 0x59, 0xd8, 0xe7, 0x20, 0x4a, 0xad, 0xe6, 0x36, 0x28, 0x25, 0xc4, 0xd7, 0xf0, 0x3c, 0xc9, 0x06, 0x51, 0x7f, 0x3a, 0xb7, 0x41, 0x29, 0x21, 0xbe, 0x06, 0x25, 0x0b, 0xfb, 0x1c, 0xc4, 0x16, 0x0b, 0xdd, 0x06, 0xa5, 0xbd, 0xe5, 0x1a, 0x3e, 0x57, 0xda, 0xe0, 0x75, 0x91, 0x20, 0x1b, 0xc4, 0xb7, 0x17, 0xdd, 0x41, 0x34, 0x76, 0xd1, 0x6d, 0xb0, 0xd2, 0xc5, 0x69, 0x83, 0xd6, 0x21, 0x7a, 0x37, 0x68, 0x33, 0x14, 0x7a, 0x83, 0x92, 0x85, 0x7d, 0x0e, 0xa2, 0xbf, 0x94, 0x6e, 0xc3, 0xf3, 0x24, 0x1b, 0xc4, 0x6d, 0x34, 0xdd, 0x86, 0x5f, 0x94, 0x36, 0x88, 0x63, 0xcd, 0xb9, 0x83, 0x08, 0xc9, 0xa6, 0x3b, 0x88, 0xbc, 0x1c, 0x85, 0x0d, 0xd6, 0xc5, 0x1d, 0x6d, 0x10, 0x01, 0x10, 0x73, 0x1b, 0x94, 0x12, 0xe2, 0x6b, 0xb0, 0x2e, 0xee, 0x68, 0x83, 0x78, 0x89, 0x98, 0x3b, 0x78, 0xb3, 0xf0, 0xc9, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x39, 0x89, 0xb9, 0x0d, 0xca, 0x2e, 0xd9, 0x0d, 0x9e, 0x5f, 0x44, 0xb2, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0x09, 0x8b, 0xb9, 0x83, 0x37, 0x0b, 0x9f, 0xcc, 0x06, 0xeb, 0xe2, 0x8e, 0x36, 0x88, 0xeb, 0x89, 0xb9, 0x0d, 0x4a, 0x16, 0xf6, 0x39, 0x78, 0x43, 0xf9, 0xfc, 0x41, 0xe4, 0xe5, 0x28, 0x6c, 0x50, 0x4a, 0x88, 0xaf, 0xe1, 0x92, 0x5a, 0xe3, 0xf1, 0xc1, 0xe3, 0x8b, 0x48, 0xda, 0xa0, 0xec, 0x92, 0xdd, 0xe0, 0xbd, 0x68, 0x24, 0x1b, 0xbc, 0x59, 0xf8, 0x64, 0x36, 0x28, 0x59, 0xd8, 0xe7, 0x20, 0xfa, 0x53, 0x96, 0x0e, 0x22, 0x2f, 0x47, 0x61, 0x83, 0x57, 0x57, 0x60, 0x0c, 0x82, 0xc5, 0x83, 0x58, 0x85, 0x3d, 0x3b, 0x1e, 0x6f, 0x10, 0x4b, 0x4c, 0x6e, 0xc3, 0x2f, 0xfc, 0x0a, 0x92, 0x01, 0x43, 0xff, 0xee, 0x90, 0x5c, 0x5a, 0x90, 0x0c, 0xfc, 0xde, 0x77, 0x48, 0x2e, 0x1d, 0x8f, 0x17, 0x0f, 0xe2, 0x12, 0xca, 0xed, 0x78, 0xbc, 0x78, 0x10, 0x07, 0x47, 0x6f, 0xc7, 0xe3, 0x0d, 0x4a, 0x09, 0xf1, 0x35, 0xfc, 0xe2, 0xb2, 0x86, 0xcf, 0x5d, 0x36, 0x78, 0x8c, 0x05, 0xc6, 0x41, 0x04, 0xcf, 0xbf, 0xad, 0xe1, 0x73, 0x97, 0x0d, 0x22, 0x8f, 0xc9, 0xed, 0x20, 0xc6, 0x27, 0xe4, 0xd6, 0x70, 0x49, 0xad, 0xf1, 0xf8, 0xe0, 0xb5, 0x68, 0x24, 0xb5, 0x41, 0x29, 0x21, 0xbe, 0x06, 0x25, 0x0b, 0xfb, 0x1c, 0xc4, 0x5c, 0x6f, 0xdc, 0x06, 0x05, 0x69, 0xec, 0x86, 0x1a, 0xb1, 0x06, 0x0b, 0xe4, 0x9e, 0x0e, 0x12, 0x5b, 0xaa, 0x36, 0x28, 0x25, 0xc4, 0xd7, 0xa0, 0x64, 0x61, 0x9f, 0x83, 0x48, 0x08, 0x97, 0xdb, 0xf0, 0x8b, 0xd2, 0x06, 0x61, 0x3a, 0x76, 0x10, 0xab, 0xed, 0x72, 0x07, 0x91, 0x97, 0xa3, 0x50,}; +unsigned int u3_Ivory_pill_len = 1528486; diff --git a/vere/pkg/vere/ivory/ivory.h b/vere/pkg/vere/ivory/ivory.h new file mode 100644 index 0000000..7d20a0f --- /dev/null +++ b/vere/pkg/vere/ivory/ivory.h @@ -0,0 +1,5 @@ +#ifndef u3_Ivory_pill_H +#define u3_Ivory_pill_H +extern unsigned char u3_Ivory_pill[]; +extern unsigned int u3_Ivory_pill_len; +#endif diff --git a/vere/pkg/vere/ivory/ivory.sh b/vere/pkg/vere/ivory/ivory.sh new file mode 100755 index 0000000..02b96fa --- /dev/null +++ b/vere/pkg/vere/ivory/ivory.sh @@ -0,0 +1,47 @@ +#!/bin/bash +function xxd_i() { + var=$1 + src_file=$2 + dst_h_file=$3 + dst_c_file=$4 + + # Generate `.h` file. + echo "Generating ${dst_h_file}..." + echo "#ifndef ${var}_H" > $dst_h_file + echo "#define ${var}_H" >> $dst_h_file + echo "extern unsigned char $var[];" >> $dst_h_file + echo "extern unsigned int ${var}_len;" >> $dst_h_file + echo '#endif' >> $dst_h_file + + # Generate `.c` file. + echo "Generating ${dst_c_file}..." + printf '#include "%s"\n' $dst_h_file > $dst_c_file + echo "unsigned char $var[] = {" >> $dst_c_file + cnt=0 + while IFS='' read line + do + for byte in $line + do + echo -n " 0x$byte," >> $dst_c_file + cnt=$((cnt+1)) + done + # <() is syntax for Bash process substitution. + done < <(od -An -v -tx1 $src_file) + echo "};" >> $dst_c_file + echo "unsigned int ${var}_len = $cnt;" >> $dst_c_file +} + +version=ac87d8bbb3915d5e7c880b97c102ffe22112335f +src_remote=https://github.com/urbit/urbit/raw/$version/bin/ivory.pill +src_file=ivory.pill +dst_h_file=ivory.h +dst_c_file=ivory.c + +rm $dst_h_file $dst_c_file + +echo "Downloading ivory pill from ${src_remote}" +curl -LJ -o $src_file $src_remote + +xxd_i u3_Ivory_pill $src_file $dst_h_file $dst_c_file + +rm $src_file diff --git a/vere/pkg/vere/king.c b/vere/pkg/vere/king.c new file mode 100644 index 0000000..0a2aef7 --- /dev/null +++ b/vere/pkg/vere/king.c @@ -0,0 +1,1828 @@ +/// @file +/// +/// The main loop of the daemon process. + +#include "vere.h" + +#include "curl/curl.h" +#include "ivory.h" +#include "noun.h" +#include "pace.h" +#include "ur/ur.h" +#include "uv.h" +#include "version.h" + +// It's unclear which file owns this variable, so put it here for now. +u3_host u3_Host; + +u3_king u3_King; + +static const c3_c* ver_hos_c = "https://bootstrap.urbit.org/vere"; + +// stash config flags for worker +// +static c3_w sag_w; + +/* +:: skeleton client->king protocol +:: +|% +:: +doom: daemon command +:: +:: Should require auth to the daemon itself +:: ++$ doom + $% :: boot + :: + :: p: boot procedure + :: q: pill specifier + :: r: path to pier + :: + [%boot p=boot q=pill r=@t] + :: end the daemon + :: + :: XX not implemented + :: + [%exit ~] + :: acquire a pier + :: + :: XX used for restart, may not be right + :: + [%pier p=(unit @t)] + :: admin ship actions + :: + :: XX not implemented + :: + [%root p=ship q=wyrd] + == +:: +boot: boot procedures +:: ++$ boot + $% :: mine a comet + :: + :: p: optionally under a specific star + :: + [%come p=(unit ship)] + :: boot with real keys + :: + :: And perform pre-boot validation, retrieve snapshot, etc. + :: + [%dawn p=seed] + :: boot with fake keys + :: + :: p: identity + :: + [%fake p=ship] + == +:: +pill: boot-sequence ingredients +:: +:: p: jammed pill +:: q: optional %into ovum overriding that of .p +:: ++$ pill [p=@ q=(unit ovum)] +-- +*/ + +void _king_doom(u3_noun doom); + void _king_boot(u3_noun boot); + void _king_come(u3_noun star, u3_noun pill, u3_noun path); + void _king_dawn(u3_noun feed, u3_noun pill, u3_noun path); + void _king_fake(u3_noun ship, u3_noun pill, u3_noun path); + void _king_pier(u3_noun pier); + +static u3_noun _king_get_atom(c3_c* url_c); + +/* _king_defy_fate(): invalid fate +*/ +void +_king_defy_fate() +{ + exit(1); +} + +/* _king_doom(): doom parser +*/ +void +_king_doom(u3_noun doom) +{ + u3_noun load; + void (*next)(u3_noun); + + u3_assert(_(u3a_is_cell(doom))); + u3_assert(_(u3a_is_cat(u3h(doom)))); + + switch ( u3h(doom) ) { + case c3__boot: + next = _king_boot; + break; + case c3__pier: + next = _king_pier; + break; + default: + _king_defy_fate(); + } + + load = u3k(u3t(doom)); + u3z(doom); + next(load); +} + +/* _king_boot(): boot parser +*/ +void +_king_boot(u3_noun bul) +{ + u3_noun boot, pill, path; + void (*next)(u3_noun, u3_noun, u3_noun); + + u3_assert(_(u3a_is_cell(bul))); + u3x_trel(bul, &boot, &pill, &path); + u3_assert(_(u3a_is_cat(u3h(boot)))); + + switch ( u3h(boot) ) { + case c3__fake: { + next = _king_fake; + break; + } + case c3__come: { + next = _king_come; + break; + } + case c3__dawn: { + next = _king_dawn; + break; + } + default: + _king_defy_fate(); + return; + } + + next(u3k(u3t(boot)), u3k(pill), u3k(path)); + u3z(bul); +} + +/* _king_boot_done(): boot done +*/ +static void +_king_boot_done(void* ptr_v, c3_o ret_o) +{ + u3_weak rift = u3_none; + if ( 0 != ptr_v) { + rift = (u3_noun)(c3_p)ptr_v; + } + // XX review requirements + // XX exit code + // + if ( c3n == ret_o ) { + u3l_log("king: boot failed\r\n"); + u3_king_bail(); + return; + } + + // copy binary into pier on boot + // + if ( c3y == u3_Host.ops_u.doc ) { + u3_king_dock(U3_VERE_PACE); + } + + u3K.pir_u = u3_pier_stay(sag_w, u3i_string(u3_Host.dir_c), rift); +} + +/* _king_prop(): events from prop arguments +*/ +u3_noun +_king_prop() +{ + u3_noun mor = u3_nul; + while ( 0 != u3_Host.ops_u.vex_u ) { + u3_even* vex_u = u3_Host.ops_u.vex_u; + switch ( vex_u->kin_i ) { + case 1: { // file + u3_atom jam = u3m_file(vex_u->loc_c); + mor = u3nc(u3ke_cue(jam), mor); + } break; + + case 2: { // url + u3l_log("boot: downloading prop %s", vex_u->loc_c); + u3_atom jam = _king_get_atom(vex_u->loc_c); + mor = u3nc(u3ke_cue(jam), mor); + } break; + + case 3: { // name + //NOTE this implementation limits us to max 213 char prop names + c3_c url_c[256]; + snprintf(url_c, 255, + //TODO should maybe respect ops_u.url_c + "https://bootstrap.urbit.org/props/" URBIT_VERSION "/%s.jam", + vex_u->loc_c); + u3l_log("boot: downloading prop %s", url_c); + u3_atom jam = _king_get_atom(url_c); + mor = u3nc(u3ke_cue(jam), mor); + } break; + + default: { + u3l_log("invalid prop source %d", vex_u->kin_i); + exit(1); + } + } + + u3_Host.ops_u.vex_u = vex_u->pre_u; + } + return mor; +} + +/* _king_fake(): boot with fake keys +*/ +void +_king_fake(u3_noun ship, u3_noun pill, u3_noun path) +{ + u3_noun vent = u3nc(c3__fake, u3k(ship)); + + // XX pass kelvin + // + c3_d key_d[4] = {0}; + u3_noun msg = u3nq(c3__boot, pill, vent, _king_prop()); + + u3_lord_boot(u3_Host.dir_c, sag_w, key_d, msg, + (void*)0, _king_boot_done); + u3z(path); +} + +/* _king_come(): mine a comet under star (unit) +** +** XX revise to exclude star argument +*/ +void +_king_come(u3_noun star, u3_noun pill, u3_noun path) +{ + _king_dawn(u3_dawn_come(), pill, path); +} + +static void +_king_slog(u3_noun hod) +{ + u3_pier_tank(0, 0, u3k(u3t(hod))); + u3z(hod); +} + +/* _king_dawn(): boot from keys, validating +*/ +void +_king_dawn(u3_noun feed, u3_noun pill, u3_noun path) +{ + // enable ivory slog printfs + // + u3C.slog_f = _king_slog; + + // XX pass kelvin + // + u3_noun ship = ( c3y == u3a_is_cell(u3h(feed)) ) + ? u3h(u3t(feed)) + : u3h(feed); + u3_noun rift; + u3_noun vent = u3_dawn_vent(u3k(ship), u3k(feed), &rift); + + // disable ivory slog printfs + // + u3C.slog_f = 0; + + { + c3_d key_d[4] = {0}; + u3_noun msg = u3_nul; + u3_noun mor = _king_prop(); + + // include additional key configuration events if we have multiple keys + // + if ( (u3_none != feed) && (c3y == u3du(u3h(feed))) && (u3h(u3h(feed))) == 1) { + u3_noun wir = u3nt(c3__j, c3__seed, u3_nul); + u3_noun tag = u3i_string("rekey"); + u3_noun kyz = u3t(u3t(feed)); + u3_noun ves = u3_nul; + u3_noun cad; + + while ( u3_nul != kyz ) { + cad = u3nc(u3k(tag), u3k(u3h(kyz))); + ves = u3nc(u3nc(u3k(wir), cad), ves); + kyz = u3t(kyz); + } + + if ( u3_nul != ves ) { + u3_noun pro = u3nq(c3__prop, + c3__dawn, + c3__hind, + ves); + mor = u3nc(pro, mor); + } + + u3z(tag); u3z(wir); + } + + msg = u3nq(c3__boot, pill, vent, mor); + u3_lord_boot(u3_Host.dir_c, sag_w, key_d, msg, + (void*)(c3_p)rift, _king_boot_done); + } + + u3z(path); + u3z(feed); +} + +/* _king_pier(): pier parser +*/ +void +_king_pier(u3_noun pier) +{ + if ( (c3n == u3du(pier)) || + (c3n == u3ud(u3t(pier))) ) { + u3m_p("daemon: invalid pier", pier); + exit(1); + } + + u3K.pir_u = u3_pier_stay(sag_w, u3k(u3t(pier)), u3_none); + u3z(pier); +} + +/* king_curl_alloc(): allocate a response buffer for curl +** XX deduplicate with dawn.c +*/ +size_t +king_curl_alloc(void* dat_v, size_t uni_t, size_t mem_t, void* buf_v) +{ + uv_buf_t* buf_u = buf_v; + + size_t siz_t = uni_t * mem_t; + buf_u->base = c3_realloc(buf_u->base, 1 + siz_t + buf_u->len); + + memcpy(buf_u->base + buf_u->len, dat_v, siz_t); + buf_u->len += siz_t; + buf_u->base[buf_u->len] = 0; + + return siz_t; +} + +/* king_curl_bytes(): HTTP GET url_c, produce response body bytes. +*/ +c3_i +king_curl_bytes(c3_c* url_c, c3_w* len_w, c3_y** hun_y, c3_t veb_t, c3_y tri_y) +{ + c3_i ret_i = 0; + CURL *cul_u; + CURLcode res_i; + long cod_i; + c3_y try_y = 0; + uv_buf_t buf_u = uv_buf_init(c3_malloc(1), 0); + + if ( !(cul_u = curl_easy_init()) ) { + u3l_log("failed to initialize libcurl"); + u3_king_bail(); + exit(1); + } + + u3K.ssl_curl_f(cul_u); + curl_easy_setopt(cul_u, CURLOPT_URL, url_c); + curl_easy_setopt(cul_u, CURLOPT_WRITEFUNCTION, king_curl_alloc); + curl_easy_setopt(cul_u, CURLOPT_WRITEDATA, (void*)&buf_u); + curl_easy_setopt(cul_u, CURLOPT_SERVER_RESPONSE_TIMEOUT, 30); + + while ( tri_y > try_y ) { + sleep(try_y++); + res_i = curl_easy_perform(cul_u); + curl_easy_getinfo(cul_u, CURLINFO_RESPONSE_CODE, &cod_i); + + if ( CURLE_OK != res_i ) { + if ( veb_t ) { + u3l_log("curl: failed to fetch %s: %s", + url_c, curl_easy_strerror(res_i)); + } + ret_i = -1; + } + else if ( 300 <= cod_i ) { + if ( veb_t ) { + u3l_log("curl: error fetching %s: HTTP %ld", url_c, cod_i); + } + ret_i = -2; + break; + } + else { + *len_w = buf_u.len; + *hun_y = (c3_y*)buf_u.base; + ret_i = 0; + break; + } + } + + curl_easy_cleanup(cul_u); + + return ret_i; +} + +/* _king_get_atom(): HTTP GET url_c, produce response body as atom. +*/ +static u3_noun +_king_get_atom(c3_c* url_c) +{ + c3_w len_w; + c3_y* hun_y; + u3_noun pro; + + if ( king_curl_bytes(url_c, &len_w, &hun_y, 1, 5) ) { + u3_king_bail(); + exit(1); + } + + pro = u3i_bytes(len_w, hun_y); + c3_free(hun_y); + return pro; +} + +/* _king_get_pace(): get "pace" (release channel name). +*/ +static c3_c* +_king_get_pace(void) +{ + struct stat buf_u; + c3_c* pat_c; + c3_w red_w, len_w; + c3_i ret_i, fid_i; + + ret_i = asprintf(&pat_c, "%s/.bin/pace", u3_Host.dir_c); + u3_assert( ret_i > 0 ); + + fid_i = c3_open(pat_c, O_RDONLY, 0644); + + if ( (fid_i < 0) || (fstat(fid_i, &buf_u) < 0) ) { + c3_free(pat_c); + return strdup("live"); + } + + c3_free(pat_c); + + len_w = buf_u.st_size; + pat_c = c3_malloc(len_w + 1); + red_w = read(fid_i, pat_c, len_w); + close(fid_i); + + if ( len_w != red_w ) { + c3_free(pat_c); + u3l_log("unable to read pace file, " + "falling back to default (\"live\")\n"); + return strdup("live"); + } + + pat_c[len_w] = 0; + + while ( len_w-- && isspace(pat_c[len_w]) ) { + pat_c[len_w] = 0; + } + + return pat_c; +} + +/* u3_king_next(): get next vere version string, if it exists. +** return: 0 is success, -1 is no-op (same version), -2 is error +*/ +c3_i +u3_king_next(c3_c* pac_c, c3_c** out_c) +{ + c3_c* ver_c; + c3_c* url_c; + c3_w len_w; + c3_y* hun_y; + c3_i ret_i; + + ret_i = asprintf(&url_c, "%s/%s/%s/next", ver_hos_c, pac_c, URBIT_VERSION); + u3_assert( ret_i > 0 ); + + // no-op if pace is set to once + // + if ( 0 == strcmp(pac_c, "once") ) { + c3_free(url_c); + fprintf(stderr, "vere: pace is set to \"once\", skipping upgrade\r\n"); + fprintf(stderr, "vere: set pace to \"live\" and try again\r\n"); + return -1; + } + + // skip printfs on failed requests (/next is usually not present) + //REVIEW new retry logic means this case will take longer. make retries optional? + // + if ( king_curl_bytes(url_c, &len_w, &hun_y, 0, 5) ) { + c3_free(url_c); + + ret_i = asprintf(&url_c, "%s/%s/last", ver_hos_c, pac_c); + u3_assert( ret_i > 0 ); + + // enable printfs on failed requests (/last must be present) + // XX support channel redirections + // + if ( king_curl_bytes(url_c, &len_w, &hun_y, 1, 5) ) + { + c3_free(url_c); + return -2; + } + } + + c3_free(url_c); + + // null-terminate + // + hun_y = c3_realloc(hun_y, 1 + len_w); + hun_y[len_w] = 0; + c3_c* newline_c; + while ( (newline_c = strrchr((c3_c*)hun_y, '\n')) ) { + *newline_c = 0; + } + + ver_c = (c3_c*)hun_y; + + // XX trim ver_c ? + // + if ( 0 == strcmp(ver_c, URBIT_VERSION) ) { + c3_free(ver_c); + return -1; + } + + *out_c = ver_c; + return 0; +} + +/* _get_cmd_output(): Run a shell command and capture its output. + Exits with an error if the command fails or produces no output. + The 'out_c' parameter should be an array of sufficient length to hold + the command's output, up to a max of len_c characters. +*/ +static void +_get_cmd_output(c3_c *cmd_c, c3_c *out_c, c3_w len_c) +{ + FILE *fp = popen(cmd_c, "r"); + if ( NULL == fp ) { + u3l_log("'%s' failed", cmd_c); + exit(1); + } + + if ( NULL == fgets(out_c, len_c, fp) ) { + u3l_log("'%s' produced no output", cmd_c); + exit(1); + } + + pclose(fp); +} + +/* _arvo_hash(): get a shortened hash of the last git commit + that modified the sys/ directory in arvo. + hax_c must be an array with length >= 11. +*/ +static void +_arvo_hash(c3_c *out_c, c3_c *arv_c) +{ + c3_c cmd_c[2048]; + + sprintf(cmd_c, "git -C %s log -1 HEAD --format=%%H -- sys/", arv_c); + _get_cmd_output(cmd_c, out_c, 11); + + out_c[10] = 0; // end with null-byte +} + +/* _git_pill_url(): produce a URL from which to download a pill + based on the location of an arvo git repository. +*/ +static void +_git_pill_url(c3_c *out_c, c3_c *arv_c) +{ + c3_c hax_c[11]; + + assert(NULL != arv_c); + + if ( 0 != system("which git >> /dev/null") ) { + u3l_log("boot: could not find git executable"); + exit(1); + } + + _arvo_hash(hax_c, arv_c); + sprintf(out_c, "https://bootstrap.urbit.org/git-%s.pill", hax_c); +} + +/* _boothack_pill(): parse CLI pill arguments into +pill specifier +*/ +static u3_noun +_boothack_pill(void) +{ + u3_noun arv = u3_nul; + u3_noun pil; + + if ( 0 != u3_Host.ops_u.pil_c ) { + u3l_log("boot: loading pill %s", u3_Host.ops_u.pil_c); + pil = u3m_file(u3_Host.ops_u.pil_c); + } + else { + c3_c url_c[2048]; + + if ( (c3y == u3_Host.ops_u.git) && + (0 != u3_Host.ops_u.arv_c) ) + { + _git_pill_url(url_c, u3_Host.ops_u.arv_c); + } + else { + u3_assert( 0 != u3_Host.ops_u.url_c ); + strcpy(url_c, u3_Host.ops_u.url_c); + } + + u3l_log("boot: downloading pill %s", url_c); + pil = _king_get_atom(url_c); + } + + if ( 0 != u3_Host.ops_u.arv_c ) { + u3l_log("boot: preparing filesystem from %s", + u3_Host.ops_u.arv_c); + arv = u3nc(u3_nul, u3_unix_initial_into_card(u3_Host.ops_u.arv_c)); + } + + return u3nc(pil, arv); +} + +/* _boothack_key(): parse a private key file or value +*/ +static u3_noun +_boothack_key(u3_noun kef) +{ + u3_noun seed; + u3_weak ship = u3_none; + + { + u3_noun des = u3dc("slaw", c3__uw, u3k(kef)); + + if ( u3_nul == des ) { + c3_c* kef_c = u3r_string(kef); + u3l_log("dawn: invalid private keys: %s", kef_c); + c3_free(kef_c); + exit(1); + } + + // +feed:able:jael: keyfile + // + u3_noun pro = u3m_soft(0, u3ke_cue, u3k(u3t(des))); + if ( u3_blip != u3h(pro) ) { + u3l_log("dawn: unable to cue keyfile"); + exit(1); + } + seed = u3k(u3t(pro)); + u3z(pro); + + // if it's a single seed, we can trivially sanity-check early + // + if ( c3y == u3ud(u3h(seed)) ) { + // local reference, not counted + // + ship = u3h(seed); + } + + u3z(des); + u3z(kef); + } + + if ( 0 != u3_Host.ops_u.who_c ) { + u3_noun woh = u3i_string(u3_Host.ops_u.who_c); + u3_noun whu = u3dc("slaw", 'p', u3k(woh)); + + if ( u3_nul == whu ) { + u3l_log("dawn: invalid ship specified with -w %s", + u3_Host.ops_u.who_c); + exit(1); + } + + if ( (u3_none != ship) && + (c3n == u3r_sing(ship, u3t(whu))) ) + { + u3_noun how = u3dc("scot", 'p', u3k(ship)); + c3_c* how_c = u3r_string(u3k(how)); + u3l_log("dawn: mismatch between -w %s and -K %s", + u3_Host.ops_u.who_c, how_c); + + u3z(how); + c3_free(how_c); + exit(1); + } + + u3z(woh); + u3z(whu); + } + + return seed; +} + +/* _boothack_doom(): parse CLI arguments into $doom +*/ +static u3_noun +_boothack_doom(void) +{ + u3_noun pax = u3i_string(u3_Host.dir_c); + u3_noun bot; + + if ( c3n == u3_Host.ops_u.nuu ) { + return u3nt(c3__pier, u3_nul, pax); + } + else if ( 0 != u3_Host.ops_u.fak_c ) { + u3_noun fak = u3i_string(u3_Host.ops_u.fak_c); + u3_noun whu = u3dc("slaw", 'p', u3k(fak)); + + if ( u3_nul == whu ) { + u3l_log("boot: malformed -F ship %s", u3_Host.ops_u.fak_c); + u3_king_bail(); + } + + bot = u3nc(c3__fake, u3k(u3t(whu))); + + u3z(whu); + u3z(fak); + } + else if ( 0 != u3_Host.ops_u.who_c ) { + u3_noun kef; + + if ( 0 != u3_Host.ops_u.key_c ) { + kef = u3m_file(u3_Host.ops_u.key_c); + + // handle trailing newline + // + { + c3_c* key_c = u3r_string(kef); + c3_w len_w = strlen(key_c); + + if (len_w && (key_c[len_w - 1] == '\n')) { + key_c[len_w - 1] = '\0'; + u3z(kef); + kef = u3i_string(key_c); + } + + c3_free(key_c); + } + } + else if ( 0 != u3_Host.ops_u.gen_c ) { + kef = u3i_string(u3_Host.ops_u.gen_c); + } + else { + u3l_log("boot: must specify a key with -k or -G"); + exit(1); + } + + bot = u3nc(c3__dawn, _boothack_key(kef)); + } + else { + // XX allow parent star to be specified? + // + bot = u3nc(c3__come, u3_nul); + } + + return u3nq(c3__boot, bot, _boothack_pill(), pax); +} + +/* _king_sign_init(): initialize daemon signal handlers +*/ +static void +_king_sign_init(void) +{ + // gracefully shutdown on SIGTERM + // + { + u3_usig* sig_u; + + sig_u = c3_malloc(sizeof(u3_usig)); + uv_signal_init(u3L, &sig_u->sil_u); + + sig_u->num_i = SIGTERM; + sig_u->nex_u = u3_Host.sig_u; + u3_Host.sig_u = sig_u; + } + + // forward SIGINT to worker + // + { + u3_usig* sig_u; + + sig_u = c3_malloc(sizeof(u3_usig)); + uv_signal_init(u3L, &sig_u->sil_u); + + sig_u->num_i = SIGINT; + sig_u->nex_u = u3_Host.sig_u; + u3_Host.sig_u = sig_u; + } + + // inject new dimensions after terminal resize + // + { + u3_usig* sig_u; + + sig_u = c3_malloc(sizeof(u3_usig)); + uv_signal_init(u3L, &sig_u->sil_u); + + sig_u->num_i = SIGWINCH; + sig_u->nex_u = u3_Host.sig_u; + u3_Host.sig_u = sig_u; + } + + // handle SIGINFO (if available) + // +#ifdef SIGINFO + { + u3_usig* sig_u; + + sig_u = c3_malloc(sizeof(u3_usig)); + uv_signal_init(u3L, &sig_u->sil_u); + + sig_u->num_i = SIGINFO; + sig_u->nex_u = u3_Host.sig_u; + u3_Host.sig_u = sig_u; + } +#endif + + // handle SIGUSR1 (fallback for SIGINFO) + // + { + u3_usig* sig_u; + + sig_u = c3_malloc(sizeof(u3_usig)); + uv_signal_init(u3L, &sig_u->sil_u); + + sig_u->num_i = SIGUSR1; + sig_u->nex_u = u3_Host.sig_u; + u3_Host.sig_u = sig_u; + } +} + +/* _king_sign_cb: signal callback. +*/ +static void +_king_sign_cb(uv_signal_t* sil_u, c3_i num_i) +{ + switch ( num_i ) { + default: { + u3l_log("\r\nmysterious signal %d", num_i); + break; + } + + case SIGTERM: { + u3_king_exit(); + break; + } + + case SIGINT: { + u3l_log("\r\ninterrupt"); + u3_term_ef_ctlc(); + +#ifdef U3_OS_windows + PulseEvent(u3_Host.cev_u); +#endif + break; + } + + case SIGWINCH: { + u3_term_ef_winc(); + break; + } + + // fallthru if defined + // +#ifdef SIGINFO + case SIGINFO: +#endif + case SIGUSR1: { + u3_king_slog(); + break; + } + } +} + +/* _king_sign_move(): enable daemon signal handlers +*/ +static void +_king_sign_move(void) +{ + u3_usig* sig_u; + + for ( sig_u = u3_Host.sig_u; sig_u; sig_u = sig_u->nex_u ) { + uv_signal_start(&sig_u->sil_u, _king_sign_cb, sig_u->num_i); + } +} + +/* _king_sign_hold(): disable daemon signal handlers +*/ +static void +_king_sign_hold(void) +{ + u3_usig* sig_u; + + for ( sig_u = u3_Host.sig_u; sig_u; sig_u = sig_u->nex_u ) { + uv_signal_stop(&sig_u->sil_u); + } +} + +/* _king_sign_close(): dispose daemon signal handlers +*/ +static void +_king_sign_close(void) +{ + u3_usig* sig_u; + + for ( sig_u = u3_Host.sig_u; sig_u; sig_u = sig_u->nex_u ) { + uv_close((uv_handle_t*)&sig_u->sil_u, (uv_close_cb)free); + } +} +/* _boothack_cb(): setup pier via message as if from client. +*/ +void +_boothack_cb(uv_timer_t* tim_u) +{ + _king_doom(_boothack_doom()); +} + +/* _king_loop_init(): stuff that comes before the event loop +*/ +void +_king_loop_init() +{ + // initialize terminal/logging + // + u3_term_log_init(); + + // start signal handlers + // + _king_sign_init(); + _king_sign_move(); + + // async "boothack" + // / + uv_timer_start(&u3K.tim_u, _boothack_cb, 0, 0); +} + +/* _king_loop_exit(): cleanup after event loop +*/ +void +_king_loop_exit() +{ +} + +static void +_king_boot_ivory(void) +{ + c3_d len_d; + c3_y* byt_y; + + if ( u3_Host.ops_u.lit_c ) { + if ( c3n == u3u_mmap_read("lite", u3_Host.ops_u.lit_c, &len_d, &byt_y) ) { + u3l_log("lite: unable to load ivory pill at %s", + u3_Host.ops_u.lit_c); + exit(1); + } + } + else { + len_d = u3_Ivory_pill_len; + byt_y = u3_Ivory_pill; + } + + { + u3_cue_xeno* sil_u = u3s_cue_xeno_init_with(ur_fib27, ur_fib28); + u3_weak pil; + + if ( u3_none == (pil = u3s_cue_xeno_with(sil_u, len_d, byt_y)) ) { + u3l_log("lite: unable to cue ivory pill"); + exit(1); + } + + u3s_cue_xeno_done(sil_u); + + if ( c3n == u3v_boot_lite(pil)) { + u3l_log("lite: boot failed"); + exit(1); + } + } + + if ( u3_Host.ops_u.lit_c ) { + if ( c3n == u3u_munmap(len_d, byt_y) ) { + u3l_log("lite: unable to unmap ivory pill at %s", + u3_Host.ops_u.lit_c); + exit(1); + } + } +} + +/* u3_king_commence(): start the daemon +*/ +void +u3_king_commence() +{ + u3_Host.lup_u = uv_default_loop(); + + // initialize top-level timer + // + uv_timer_init(u3L, &u3K.tim_u); + + // start up a "fast-compile" arvo for internal use only + // (with hashboard and sample-profiling always disabled) + // + sag_w = u3C.wag_w; + u3C.wag_w |= u3o_hashless; + u3C.wag_w &= ~u3o_debug_cpu; + + // wire up signal controls + // + u3C.sign_hold_f = _king_sign_hold; + u3C.sign_move_f = _king_sign_move; + + // Ignore SIGPIPE signals. + #ifndef U3_OS_windows + { + sigset_t set_s; + sigemptyset(&set_s); + sigaddset(&set_s, SIGPIPE); + pthread_sigmask(SIG_BLOCK, &set_s, NULL); + } + #endif + + // boot the ivory pill + // + _king_boot_ivory(); + + // disable core dumps (due to lmdb size) + // + #ifndef U3_OS_windows + { + struct rlimit rlm; + + getrlimit(RLIMIT_CORE, &rlm); + rlm.rlim_cur = 0; + + if ( 0 != setrlimit(RLIMIT_CORE, &rlm) ) { + u3l_log("king: unable to disable core dumps: %s", strerror(errno)); + exit(1); + } + } + #endif + + // run the loop + // + _king_loop_init(); + uv_run(u3L, UV_RUN_DEFAULT); + _king_loop_exit(); + u3m_stop(); +} + +/* u3_king_stub(): get the One Pier for unreconstructed code. +*/ +u3_pier* +u3_king_stub(void) +{ + if ( !u3K.pir_u ) { + u3_assert(!"king: no pier"); + } + else { + return u3K.pir_u; + } +} + +/* _king_forall(): run on all piers +*/ +static void +_king_forall(void (*pir_f)(u3_pier*)) +{ + u3_pier* pir_u = u3K.pir_u; + + while ( pir_u ) { + pir_f(pir_u); + pir_u = pir_u->nex_u; + } +} + +/* u3_king_slog(): print status info. +*/ +void +u3_king_slog(void) +{ + _king_forall(u3_pier_slog); +} + +/* _king_forall_unlink(): run on all piers, unlinking from king. +*/ +static void +_king_forall_unlink(void (*pir_f)(u3_pier*)) +{ + u3_pier* pir_u = u3K.pir_u; + + while ( u3K.pir_u ) { + u3_pier* pir_u = u3K.pir_u; + u3K.pir_u = pir_u->nex_u; + pir_f(pir_u); + } +} + +/* _king_curl_file(): HTTP GET [url_c], write response body to [fil_u]. +*/ +static c3_i +_king_save_file(c3_c* url_c, FILE* fil_u) +{ + c3_i ret_i = 0; + CURL *cul_u; + CURLcode res_i; + long cod_i; + + if ( !(cul_u = curl_easy_init()) ) { + u3l_log("failed to initialize libcurl"); + exit(1); + } + + u3K.ssl_curl_f(cul_u); + curl_easy_setopt(cul_u, CURLOPT_URL, url_c); + curl_easy_setopt(cul_u, CURLOPT_WRITEDATA, (void*)fil_u); + + res_i = curl_easy_perform(cul_u); + curl_easy_getinfo(cul_u, CURLINFO_RESPONSE_CODE, &cod_i); + + // XX retry? + // + if ( CURLE_OK != res_i ) { + u3l_log("curl: failed %s: %s", url_c, curl_easy_strerror(res_i)); + ret_i = -1; + } + if ( 300 <= cod_i ) { + u3l_log("curl: error %s: HTTP %ld", url_c, cod_i); + ret_i = -2; + } + + curl_easy_cleanup(cul_u); + return ret_i; +} + +/* _king_make_pace(): mkdir -p $pier/.bin/[pace] +*/ +static c3_i +_king_make_pace(c3_c* pac_c) +{ + c3_c* bin_c; + c3_i ret_i; + + ret_i = asprintf(&bin_c, "%s/.bin", u3_Host.dir_c); + u3_assert( ret_i > 0 ); + + ret_i = c3_mkdir(bin_c, 0700); + + if ( ret_i && (EEXIST != errno) ) { + fprintf(stderr, "vere: mkdir %s failed: %s\n", bin_c, strerror(errno)); + c3_free(bin_c); + return -1; + } + + c3_free(bin_c); + + ret_i = asprintf(&bin_c, "%s/.bin/%s/", u3_Host.dir_c, pac_c); + u3_assert( ret_i > 0 ); + + // XX asserting wrapper conflicts here (and is bypassed for .urb) + // + ret_i = mkdir(bin_c, 0700); + + if ( ret_i && (EEXIST != errno) ) { + fprintf(stderr, "vere: mkdir %s failed: %s\n", bin_c, strerror(errno)); + c3_free(bin_c); + return -1; + } + + c3_free(bin_c); + return 0; +} + +static c3_i +_king_write_raw(c3_i fid_i, c3_y* buf_y, size_t len_i); + +/* _king_init_pace(): save pace file if not present +*/ +static c3_i +_king_init_pace(c3_c* pac_c) +{ + c3_c* bin_c; + c3_i fid_i, ret_i = asprintf(&bin_c, "%s/.bin/pace", u3_Host.dir_c); + u3_assert( ret_i > 0 ); + + if ( (-1 == (fid_i = open(bin_c, O_WRONLY | O_CREAT | O_EXCL, 0644))) ) { + if ( EEXIST == errno ) { + c3_free(bin_c); + // XX print something here? + // + return 0; + } + else { + u3l_log("dock: init pace (%s): open %s", pac_c, strerror(errno)); + c3_free(bin_c); + return -1; + } + } + + if ( _king_write_raw(fid_i, (c3_y*)pac_c, strlen(pac_c)) ) { + u3l_log("dock: init pace (%s): write %s", pac_c, strerror(errno)); + close(fid_i); + c3_free(bin_c); + return -1; + } + // XX sync first? + // + else if ( close(fid_i) ) { + u3l_log("dock: init pace (%s): close %s", pac_c, strerror(errno)); + c3_free(bin_c); + return 1; + } + + u3l_log("dock: pace (%s): configured at %s/.bin/pace", + pac_c, u3_Host.dir_c); + + return 0; +} + +/* _king_link_run(): ln [bin_c] $pier/.run +*/ +static c3_i +_king_link_run(c3_c* bin_c) +{ + c3_c* lin_c; + c3_i ret_i; + + ret_i = asprintf(&lin_c, "%s/%s", u3_Host.dir_c, U3_BIN_ALIAS); + u3_assert( ret_i > 0 ); + + ret_i = unlink(lin_c); + + if ( ret_i && (ENOENT != errno) ) { + fprintf(stderr, "vere: unlink %s failed: %s\n", lin_c, strerror(errno)); + c3_free(lin_c); + return -1; + } + + ret_i = link(bin_c, lin_c); + + if ( ret_i ) { + fprintf(stderr, "vere: link %s -> %s failed: %s\n", + lin_c, bin_c, strerror(errno)); + c3_free(lin_c); + return -1; + } + + c3_free(lin_c); + return 0; +} + +/* u3_king_vere(): download binary as specified. +*/ +c3_i +u3_king_vere(c3_c* pac_c, // pace + c3_c* ver_c, // version + c3_c* arc_c, // architecture + c3_c* dir_c, // output directory + c3_t lin_t) // link to $pier/.run +{ + c3_c* bin_c; + c3_c* url_c; + FILE* fil_u; + c3_i fid_i, ret_i; + + ret_i = asprintf(&bin_c, "%s/vere-v%s-%s", dir_c, ver_c, arc_c); + u3_assert( ret_i > 0 ); + + if ( (-1 == (fid_i = open(bin_c, O_WRONLY | O_CREAT | O_EXCL, 0755))) + || !(fil_u = fdopen(fid_i, "wb")) ) + { + if ( EEXIST == errno ) { + u3l_log("already installed"); + c3_free(bin_c); + return 0; + } + else { + u3l_log("unable to open %s: %s", bin_c, strerror(errno)); + c3_free(bin_c); + return -1; + } + } + + ret_i = asprintf(&url_c, "%s/%s/v%s/vere-v%s-%s", + ver_hos_c, pac_c, ver_c, ver_c, arc_c); + u3_assert( ret_i > 0 ); + + if ( (ret_i = _king_save_file(url_c, fil_u)) ) { + u3l_log("unable to save %s to %s: %d", url_c, bin_c, ret_i); + c3_free(url_c); + fclose(fil_u); + unlink(bin_c); + c3_free(bin_c); + return -1; // XX + } + + // XX sync unnecessary here? + // + if ( fflush(fil_u) || c3_sync(fid_i) ) { + fprintf(stderr, "vere: sync %s failed: %s\n", bin_c, strerror(errno)); + c3_free(url_c); + fclose(fil_u); + unlink(bin_c); + c3_free(bin_c); + return -1; + } + + fclose(fil_u); + + // XX if link fails wat do? + // XX set via cli option + // + if ( lin_t ) { + if ( _king_link_run(bin_c) ) { + fprintf(stderr, "vere: link %s/%s failed\n", u3_Host.dir_c, U3_BIN_ALIAS); + c3_free(url_c); + c3_free(bin_c); + return -1; + } + } + + u3l_log("vere: saved to %s", bin_c); + + c3_free(url_c); + c3_free(bin_c); + + return 0; +} + +/* _king_do_upgrade(): get arch-appropriate binary at [ver_c]. +*/ +static void +_king_do_upgrade(c3_c* pac_c, c3_c* ver_c) +{ + c3_c* dir_c; + c3_c* arc_c; + +#ifdef U3_OS_ARCH + arc_c = U3_OS_ARCH; +#else + if ( u3_Host.arc_c ) { + arc_c = u3_Host.arc_c; + } + else { + u3l_log("vere: --arch required"); + return; + } +#endif + + if ( _king_make_pace(pac_c) ) { + u3l_log("vere: unable to make pace (%s) directory in pier", pac_c); + u3_king_bail(); + exit(1); + } + + { + c3_i ret_i = asprintf(&dir_c, "%s/.bin/%s", u3_Host.dir_c, pac_c); + u3_assert( ret_i > 0 ); + } + + // XX get link option + // + if ( u3_king_vere(pac_c, ver_c, arc_c, dir_c, 1) ) { + u3l_log("vere: upgrade failed"); + u3_king_bail(); + exit(1); + } + + c3_free(dir_c); + u3l_log("vere: upgrade succeeded"); + // XX print restart instructions +} + +/* _king_read_raw: read (up to) [len_i] from [fid_i] to [buf_y] +*/ +static ssize_t +_king_read_raw(c3_i fid_i, c3_y* buf_y, size_t len_i) +{ + ssize_t ret_i; + + do { + ret_i = read(fid_i, buf_y, len_i); + } + while ( (ret_i < 0) && (errno == EINTR) ); + + return ret_i; +} + +/* _king_read_raw: write [len_i] from [buf_y] to [fid_i]. +*/ +static c3_i +_king_write_raw(c3_i fid_i, c3_y* buf_y, size_t len_i) +{ + ssize_t ret_i; + + while ( len_i ) { + + do { + ret_i = write(fid_i, buf_y, len_i); + } + while ( (ret_i < 0) && (errno == EINTR) ); + + if ( ret_i < 0 ) { + return -1; + } + else { + len_i -= ret_i; + buf_y += ret_i; + } + } + + return 0; +} + +static c3_i +_king_copy_raw(c3_i src_i, c3_i dst_i, c3_y* buf_y, size_t pag_i) +{ + ssize_t red_i; + + do { + if ( 0 > (red_i = _king_read_raw(src_i, buf_y, pag_i)) ) { + return -1; + } + + if ( _king_write_raw(dst_i, buf_y, (size_t)red_i) ) { + return -1; + } + } + while ( red_i ); + + return 0; +} + +#if defined(U3_OS_windows) +int err_win_to_posix(DWORD winerr); +#endif + +static c3_i +_king_copy_file(c3_c* src_c, c3_c* dst_c) +{ +#if defined(U3_OS_windows) + // XX try FSCTL_DUPLICATE_EXTENTS_TO_FILE + // + if ( CopyFileA(src_c, dst_c, TRUE) ) { + return 0; + } + + // XX fallback on any? + // + errno = err_win_to_posix(GetLastError()); + return -1; +#elif defined(U3_OS_osx) + if ( !clonefile(src_c, dst_c, 0) ) { + return 0; + } + // fallthru to copying bytes on some errors + // + else if ( (ENOTSUP != errno) && (EXDEV != errno) ) { + return -1; + } +#endif + + { + c3_i src_i, dst_i, ret_i = 0, err_i = 0; + + if ( -1 == (src_i = open(src_c, O_RDONLY, 0644)) ) { + err_i = errno; + ret_i = -1; + goto done1; + } + + if ( -1 == (dst_i = open(dst_c, O_RDWR | O_CREAT, 0755)) ) { + err_i = errno; + ret_i = -1; + goto done2; + } + + // XX try clone_file_range ? + // +#if defined(U3_OS_linux) + #if defined(FICLONE) + if ( !ioctl(dst_i, FICLONE, src_i) ) { + ret_i = 0; + goto done3; + } + // fallthru to copying bytes on some errors + // + else if ( (EOPNOTSUPP != errno) && (EXDEV != errno) ) { + err_i = errno; + ret_i = -1; + goto done3; + } + #endif + + { + off_t off_i = 0; + ssize_t sen_i; + size_t len_i; + { + struct stat sat_u; + if ( -1 == fstat(src_i, &sat_u) ) { + err_i = errno; + ret_i = -1; + goto done3; + } + len_i = sat_u.st_size; + } + + do { + // XX fallback on any errors? + // + if ( 0 > (sen_i = sendfile(dst_i, src_i, &off_i, len_i)) ) { + err_i = errno; + ret_i = -1; + goto done3; + } + + len_i -= off_i; + } + while ( len_i ); + + ret_i = 0; + goto done3; + } +#elif defined(U3_OS_osx) + if ( !fcopyfile(src_i, dst_i, NULL, COPYFILE_ALL) ) { + ret_i = 0; + goto done3; + } + + // XX fallback on any errors? + // +#endif + + { + size_t pag_i = 1 << 14;; + c3_y* buf_y = c3_malloc(pag_i); + ret_i = _king_copy_raw(src_i, dst_i, buf_y, pag_i); + err_i = errno; + c3_free(buf_y); + } + +#ifndef U3_OS_windows +done3: + close(dst_i); +#endif +done2: + close(src_i); +done1: + errno = err_i; + return ret_i; + } +} + +/* _king_copy_vere(): copy current binary into $pier/.bin (COW if possible) +*/ +static c3_i +_king_copy_vere(c3_c* pac_c, c3_c* ver_c, c3_c* arc_c, c3_t lin_t) +{ + c3_c* bin_c; + c3_i ret_i; + + if ( _king_make_pace(pac_c) ) { + return -1; // XX + } + + ret_i = asprintf(&bin_c, "%s/.bin/%s/vere-v%s-%s", + u3_Host.dir_c, pac_c, ver_c, arc_c); + u3_assert( ret_i > 0 ); + + ret_i = _king_copy_file(u3_Host.dem_c, bin_c); + + if ( ret_i ) { + fprintf(stderr, "vere: copy %s -> %s failed: %s\r\n", + u3_Host.dem_c, bin_c, strerror(errno)); + c3_free(bin_c); + return -1; + } + + // XX option + // + if ( lin_t ) { + if ( _king_link_run(bin_c) ) { + fprintf(stderr, "vere: link %s/%s failed\n", u3_Host.dir_c, U3_BIN_ALIAS); + c3_free(bin_c); + return -1; + } + } + + c3_free(bin_c); + return 0; +} + +/* u3_king_dock(): copy binary into pier on boot. +*/ +void +u3_king_dock(c3_c* pac_c) +{ + c3_c* arc_c = "unknown"; + +#ifdef U3_OS_ARCH + arc_c = U3_OS_ARCH; +#endif + + // XX get link option + // + if ( _king_copy_vere(pac_c, URBIT_VERSION, arc_c, 1) ) { + u3l_log("vere: binary copy failed"); + u3_king_bail(); + exit(1); + } + else { + // NB: failure ignored + // + _king_init_pace(pac_c); + u3l_log("vere: binary copy succeeded"); + // XX print restart instructions + } +} + +/* _king_done_cb(): +*/ +static void +_king_done_cb(uv_handle_t* han_u) +{ + if( UV_EBUSY == uv_loop_close(u3L) ) { + // XX uncomment to debug + // + // fprintf(stderr, "\r\nking: open libuv handles\r\n"); + // uv_print_all_handles(u3L, stderr); + // fprintf(stderr, "\r\nking: force shutdown\r\n"); + + uv_stop(u3L); + } +} + +/* u3_king_done(): all piers closed. s/b callback +*/ +void +u3_king_done(void) +{ + uv_handle_t* han_u = (uv_handle_t*)&u3K.tim_u; + + if ( u3_Host.xit_i ) { + if ( c3y == u3_Host.nex_o ) { + u3l_log("vere: upgrade failed"); + } + else if ( c3y == u3_Host.pep_o ) { + u3l_log("vere: prep for upgrade failed"); + } + } + else { + // get next binary + // + if ( c3y == u3_Host.nex_o ) { + c3_c* pac_c; + c3_c* ver_c; + + // hack to ensure we only try once + // + u3_Host.nex_o = c3n; + + pac_c = _king_get_pace(); + + switch ( u3_king_next(pac_c, &ver_c) ) { + case -2: { + u3l_log("vere: unable to check for next version"); + } break; + + case -1: { + u3l_log("vere: up to date"); + } break; + + case 0: { + u3l_log("vere: next (%%%s): %s", pac_c, ver_c); + _king_do_upgrade(pac_c, ver_c); + c3_free(ver_c); + } break; + + default: u3_assert(0); + } + + c3_free(pac_c); + } + else if ( c3y == u3_Host.pep_o ) { + u3l_log("vere: ready for upgrade"); + } + } + + // XX hack, if pier's are still linked, we're not actually done + // + if ( !u3K.pir_u && !uv_is_closing(han_u) ) { + uv_close((uv_handle_t*)&u3K.tim_u, _king_done_cb); + _king_sign_close(); + + u3_term_log_exit(); + fflush(stdout); + } + + // XX remove move + // + exit(u3_Host.xit_i); +} + +/* u3_king_exit(): shutdown gracefully +*/ +void +u3_king_exit(void) +{ + _king_forall(u3_pier_exit); +} + +/* u3_king_bail(): immediately shutdown. +*/ +void +u3_king_bail(void) +{ + u3_Host.xit_i = 1; + _king_forall_unlink(u3_pier_bail); + _king_loop_exit(); + u3_king_done(); + exit(u3_Host.xit_i); +} + +/* u3_king_grab(): gc the daemon +*/ +void +u3_king_grab(void* vod_p) +{ + FILE* fil_u; + + u3_assert( u3R == &(u3H->rod_u) ); + +#ifdef U3_MEMORY_LOG + u3_noun now; + + { + struct timeval tim_u; + gettimeofday(&tim_u, 0); + now = u3_time_in_tv(&tim_u); + } + + { + // XX date will not match up with that of the worker + // + u3_noun wen = u3dc("scot", c3__da, now); + c3_c* wen_c = u3r_string(wen); + + c3_c nam_c[2048]; + snprintf(nam_c, 2048, "%s/.urb/put/mass", u3_king_stub()->pax_c); + + struct stat st; + if ( -1 == stat(nam_c, &st) ) { + c3_mkdir(nam_c, 0700); + } + + c3_c man_c[2048]; + snprintf(man_c, 2048, "%s/%s-daemon.txt", nam_c, wen_c); + + fil_u = c3_fopen(man_c, "w"); + fprintf(fil_u, "%s\r\n", wen_c); + + c3_free(wen_c); + u3z(wen); + } +#else + { + fil_u = u3_term_io_hija(); + fprintf(fil_u, "measuring daemon:\r\n"); + } +#endif + + u3m_quac** all_u = c3_malloc(sizeof(*all_u)*6); + + u3a_mark_init(); + + u3m_quac** var_u = u3m_mark(); + all_u[0] = var_u[0]; + all_u[1] = var_u[1]; + all_u[2] = var_u[2]; + all_u[3] = var_u[3]; + c3_free(var_u); + + c3_w tot_w = all_u[0]->siz_w + all_u[1]->siz_w + + all_u[2]->siz_w + all_u[3]->siz_w; + + all_u[4] = c3_calloc(sizeof(*all_u[4])); + all_u[4]->nam_c = "total marked"; + all_u[4]->siz_w = tot_w; + + // XX sweep could be optional, gated on u3o_debug_ram or somesuch + // only u3a_mark_done() is required + all_u[5] = c3_calloc(sizeof(*all_u[5])); + all_u[5]->nam_c = "sweep"; + all_u[5]->siz_w = u3a_sweep(); + + for ( c3_w i_w = 0; i_w < 6; i_w++ ) { + u3a_print_quac(fil_u, 0, all_u[i_w]); + u3a_quac_free(all_u[i_w]); + } + + c3_free(all_u); + +#ifdef U3_MEMORY_LOG + { + fclose(fil_u); + } +#else + { + u3_term_io_loja(0, fil_u); + } +#endif +} diff --git a/vere/pkg/vere/lord.c b/vere/pkg/vere/lord.c new file mode 100644 index 0000000..e714539 --- /dev/null +++ b/vere/pkg/vere/lord.c @@ -0,0 +1,1336 @@ +/// @file + +#include "vere.h" + +#include "noun.h" +#include "ur/ur.h" + +#undef LORD_TRACE_JAM +#undef LORD_TRACE_CUE + +/* +|% +:: peek=[gang (each path $%([%once @tas @tas path] [%beam @tas beam]))] +:: ovum=ovum +:: +|$ [peek ovum] +|% +:: +task: from urth to mars +:: ++$ task + $% [%live ?(%meld %pack) ~] :: XX rename + [%exit ~] + [%peek mil=@ peek] + [%poke mil=@ ovum] + $: %quiz + $% [%quac ~] + [%quic ~] + == == + [%sync %save ~] + == +:: +gift: from mars to urth +:: ++$ gifts + $% [%live ~] + [%flog cord] + [%slog pri=@ tank] + [%peek p=(each (unit (cask)) goof)] + [%poke p=(each (list ovum) (list goof))] + $: %quiz + $% [%quac p=*] + [%quic p=*] + == == + [%ripe [pro=%2 kel=wynn] [who=@p fake=?] eve=@ mug=@] + [%sync eve=@ mug=@] + == +-- +*/ + +/* _lord_stop_cb(): finally all done. +*/ +static void +_lord_stop_cb(void* ptr_v, + ssize_t err_i, + const c3_c* err_c) +{ + u3_lord* god_u = ptr_v; + + void (*exit_f)(void*) = god_u->cb_u.exit_f; + void* exit_v = god_u->cb_u.ptr_v; + + u3s_cue_xeno_done(god_u->sil_u); + c3_free(god_u); + + if ( exit_f ) { + exit_f(exit_v); + } +} + +/* _lord_writ_free(): dispose of pending writ. +*/ +static void +_lord_writ_free(u3_writ* wit_u) +{ + switch ( wit_u->typ_e ) { + default: break; + + case u3_writ_poke: { + // XX confirm + // + u3_ovum* egg_u = wit_u->wok_u.egg_u; + u3_auto_drop(egg_u->car_u, egg_u); + u3z(wit_u->wok_u.job); + } break; + + case u3_writ_peek: { + u3z(wit_u->pek_u->sam); + } break; + } + + c3_free(wit_u); +} + +/* _lord_bail_noop(): ignore subprocess error on shutdown +*/ +static void +_lord_bail_noop(void* ptr_v, + ssize_t err_i, + const c3_c* err_c) +{ +} + +/* _lord_stop(): close and dispose all resources. +*/ +static void +_lord_stop(u3_lord* god_u) +{ + // dispose outstanding writs + // + { + u3_writ* wit_u = god_u->ext_u; + u3_writ* nex_u; + + while ( wit_u ) { + nex_u = wit_u->nex_u; + _lord_writ_free(wit_u); + wit_u = nex_u; + } + + god_u->ent_u = god_u->ext_u = 0; + } + + u3_newt_moat_stop(&god_u->out_u, _lord_stop_cb); + u3_newt_mojo_stop(&god_u->inn_u, _lord_bail_noop); + + uv_read_stop((uv_stream_t*)&(god_u->err_u)); + + uv_close((uv_handle_t*)&god_u->cub_u, 0); + +#if defined(LORD_TRACE_JAM) || defined(LORD_TRACE_CUE) + u3t_trace_close(); +#endif +} + +/* _lord_bail(): serf/lord error. +*/ +static void +_lord_bail(u3_lord* god_u) +{ + void (*bail_f)(void*) = god_u->cb_u.bail_f; + void* bail_v = god_u->cb_u.ptr_v; + + u3_lord_halt(god_u); + bail_f(bail_v); +} + +/* _lord_writ_str(): writ labels for printing. +*/ +static inline const c3_c* +_lord_writ_str(u3_writ_type typ_e) +{ + switch ( typ_e ) { + default: u3_assert(0); + + case u3_writ_poke: return "poke"; + case u3_writ_peek: return "peek"; + case u3_writ_live: return "live"; + case u3_writ_exit: return "exit"; + case u3_writ_quiz: return "quiz"; + } +} + +/* _lord_writ_need(): require writ type. +*/ +static u3_writ* +_lord_writ_need(u3_lord* god_u, u3_writ_type typ_e) +{ + u3_writ* wit_u = god_u->ext_u; + + if ( !wit_u ) { + fprintf(stderr, "lord: missing writ, expected %%%s\r\n", + _lord_writ_str(wit_u->typ_e)); + _lord_bail(god_u); + return 0; + } + + if ( !wit_u->nex_u ) { + god_u->ent_u = god_u->ext_u = 0; + } + else { + god_u->ext_u = wit_u->nex_u; + wit_u->nex_u = 0; + } + + god_u->dep_w--; + + if ( typ_e != wit_u->typ_e ) { + fprintf(stderr, "lord: unexpected %%%s, expected %%%s\r\n", + _lord_writ_str(typ_e), + _lord_writ_str(wit_u->typ_e)); + _lord_bail(god_u); + return 0; + } + + return wit_u; +} + +/* _lord_plea_foul(): +*/ +static void +_lord_plea_foul(u3_lord* god_u, c3_m mot_m, u3_noun dat) +{ + if ( u3_blip == mot_m ) { + fprintf(stderr, "lord: received invalid $plea\r\n"); + } + else { + fprintf(stderr, "lord: received invalid %%%.4s $plea\r\n", (c3_c*)&mot_m); + } + + // XX can't unconditionally print + // + // u3m_p("plea", dat); + + _lord_bail(god_u); +} + +/* _lord_plea_live(): hear serf %live ack +*/ +static void +_lord_plea_live(u3_lord* god_u, u3_noun dat) +{ + u3_writ* wit_u = _lord_writ_need(god_u, u3_writ_live); + + if( u3_nul != dat ) { + return _lord_plea_foul(god_u, c3__live, dat); + } + + // XX wire into cb + // + // u3l_log("pier: meld complete\n"); + // u3l_log("pier: pack complete\n"); + + c3_free(wit_u); +} + +/* _lord_plea_ripe(): hear serf startup state +*/ +static void +_lord_plea_ripe(u3_lord* god_u, u3_noun dat) +{ + if ( c3y == god_u->liv_o ) { + fprintf(stderr, "lord: received unexpected %%ripe\n"); + _lord_bail(god_u); + return; + } + + { + u3_noun a, b, c, pro, wyn, who, fak, eve, mug; + c3_y pro_y; + c3_d eve_d; + c3_l mug_l; + + // XX parse out version values + // + if ( (c3n == u3r_trel(dat, &a, &b, &c)) + || (c3n == u3r_cell(a, &pro, &wyn)) + || (c3n == u3r_safe_byte(pro, &pro_y)) + || (c3n == u3r_cell(b, &who, &fak)) + || (c3n == u3r_cell(c, &eve, &mug)) + || (c3n == u3r_safe_chub(eve, &eve_d)) + || (c3n == u3r_safe_word(mug, &mug_l)) ) + { + return _lord_plea_foul(god_u, c3__ripe, dat); + } + + if ( 2 != pro_y ) { + fprintf(stderr, "pier: unsupported ipc protocol version %u\r\n", pro_y); + _lord_bail(god_u); + return; + } + + // XX save mug_l + // + god_u->eve_d = eve_d; + + god_u->liv_o = c3y; + god_u->cb_u.live_f(god_u->cb_u.ptr_v, who, fak); + } +; + + u3z(dat); +} + +/* _lord_plea_slog(): hear serf debug output +*/ +static void +_lord_plea_slog(u3_lord* god_u, u3_noun dat) +{ + u3_noun pri, tan; + c3_w pri_w; + + if ( (c3y == u3r_cell(dat, &pri, &tan)) + && (c3y == u3r_safe_word(pri, &pri_w)) ) + { + god_u->cb_u.slog_f(god_u->cb_u.ptr_v, pri_w, u3k(tan)); + } + else + { + u3l_log("%%bad-slog"); + } + u3z(dat); +} + +/* _lord_plea_flog(): hear serf debug output +*/ +static void +_lord_plea_flog(u3_lord* god_u, u3_noun dat) +{ + u3_pier* pir_u = god_u->cb_u.ptr_v; + + if ( c3n == u3a_is_atom(dat) ) { + return _lord_plea_foul(god_u, c3__flog, dat); + } + + c3_c* tan_c = u3r_string(dat); + u3C.stderr_log_f(tan_c); + c3_free(tan_c); + + if ( 0 != pir_u->sog_f ) { + pir_u->sog_f(pir_u->sop_p, 0, u3k(dat)); + } + u3z(dat); +} + +/* _lord_plea_peek_bail(): hear serf %peek %bail +*/ +static void +_lord_plea_peek_bail(u3_lord* god_u, u3_peek* pek_u, u3_noun dud) +{ + u3_pier_punt_goof("peek", dud); + + pek_u->fun_f(pek_u->ptr_v, u3_nul); + + u3z(pek_u->sam); + c3_free(pek_u); +} + +/* _lord_plea_peek_done(): hear serf %peek %done +*/ +static void +_lord_plea_peek_done(u3_lord* god_u, u3_peek* pek_u, u3_noun rep) +{ + // XX review + // + if ( (u3_pico_once == pek_u->typ_e) + && (u3_nul != rep) ) + { + u3_noun dat; + + if ( c3y == u3r_pq(u3t(rep), c3__omen, 0, &dat) ) { + u3k(dat); + u3z(rep); + rep = u3nc(u3_nul, dat); + } + } + + // XX cache [dat] (unless last) + // + pek_u->fun_f(pek_u->ptr_v, rep); + + u3z(pek_u->sam); + c3_free(pek_u); +} + +/* _lord_plea_peek(): hear serf %peek response +*/ +static void +_lord_plea_peek(u3_lord* god_u, u3_noun dat) +{ + u3_peek* pek_u; + { + u3_writ* wit_u = _lord_writ_need(god_u, u3_writ_peek); + pek_u = wit_u->pek_u; + c3_free(wit_u); + } + + if ( c3n == u3a_is_cell(dat) ) { + return _lord_plea_foul(god_u, c3__peek, dat); + } + + switch ( u3h(dat) ) { + default: { + return _lord_plea_foul(god_u, c3__peek, dat); + } + + case c3y: { + _lord_plea_peek_done(god_u, pek_u, u3k(u3t(dat))); + } break; + + case c3n: { + _lord_plea_peek_bail(god_u, pek_u, u3k(u3t(dat))); + } break; + } + + u3z(dat); +} + +/* _lord_plea_quiz(): handle quiz (query to serf). + */ +static void +_lord_plea_quiz(u3_lord* god_u, u3_noun dat) +{ + u3_writ* wit_u = _lord_writ_need(god_u, u3_writ_quiz); + wit_u->qiz_u.qiz_f(wit_u->qiz_u.qiz_m, wit_u->qiz_u.ptr_v, dat); +} + +/* _lord_work_spin(): update spinner if more work is in progress. + */ + static void +_lord_work_spin(u3_lord* god_u) +{ + u3_writ* wit_u = god_u->ext_u; + + // complete spinner + // + u3_assert( c3y == god_u->pin_o ); + god_u->cb_u.spun_f(god_u->cb_u.ptr_v); + god_u->pin_o = c3n; + + // restart spinner if more work + // + while ( wit_u ) { + if ( u3_writ_poke != wit_u->typ_e ) { + wit_u = wit_u->nex_u; + } + else { + u3_ovum* egg_u = wit_u->wok_u.egg_u; + + god_u->cb_u.spin_f(god_u->cb_u.ptr_v, + egg_u->pin_u.lab, + egg_u->pin_u.del_o); + god_u->pin_o = c3y; + break; + } + } +} + +/* _lord_plea_work_bail(): hear serf %work %bail +*/ +static void +_lord_plea_work_bail(u3_lord* god_u, u3_ovum* egg_u, u3_noun lud) +{ + _lord_work_spin(god_u); + + god_u->cb_u.work_bail_f(god_u->cb_u.ptr_v, egg_u, lud); +} + +/* _lord_plea_work_done(): hear serf %work %done +*/ +static void +_lord_plea_work_done(u3_lord* god_u, + u3_ovum* egg_u, + u3_noun act) +{ + god_u->eve_d++; + + _lord_work_spin(god_u); + + god_u->cb_u.work_done_f(god_u->cb_u.ptr_v, egg_u, act); +} + +/* _lord_plea_work(): hear serf %work response +*/ +static void +_lord_plea_work(u3_lord* god_u, u3_noun dat) +{ + u3_ovum* egg_u; + u3_noun job; + + { + u3_writ* wit_u = _lord_writ_need(god_u, u3_writ_poke); + egg_u = wit_u->wok_u.egg_u; + job = wit_u->wok_u.job; + c3_free(wit_u); + } + + if ( c3n == u3a_is_cell(dat) ) { + u3z(job); + u3_ovum_free(egg_u); + return _lord_plea_foul(god_u, c3__work, dat); + } + + switch ( u3h(dat) ) { + default: { + u3z(job); + u3_ovum_free(egg_u); + return _lord_plea_foul(god_u, c3__work, dat); + } break; + + case c3y: { + u3z(job); + _lord_plea_work_done(god_u, egg_u, u3k(u3t(dat))); + } break; + + case c3n: { + u3z(job); + _lord_plea_work_bail(god_u, egg_u, u3k(u3t(dat))); + } break; + } + + u3z(dat); +} + +/* _lord_on_plea(): handle plea from serf. +*/ +static c3_o +_lord_on_plea(void* ptr_v, c3_d len_d, c3_y* byt_y) +{ + u3_lord* god_u = ptr_v; + u3_noun tag, dat; + u3_weak jar; + +#ifdef LORD_TRACE_CUE + u3t_event_trace("king ipc cue", 'B'); +#endif + + jar = u3s_cue_xeno_with(god_u->sil_u, len_d, byt_y); + +#ifdef LORD_TRACE_CUE + u3t_event_trace("king ipc cue", 'E'); +#endif + + if ( u3_none == jar ) { + _lord_plea_foul(god_u, 0, u3_blip); + return c3y; + } + else if ( c3n == u3r_cell(jar, &tag, &dat) ) { + _lord_plea_foul(god_u, 0, jar); + u3z(jar); + return c3y; + } + + switch ( tag ) { + default: { + _lord_plea_foul(god_u, 0, jar); + } break; + + case c3__poke: { + // u3m_p("poke resp jar", jar); + _lord_plea_work(god_u, u3k(dat)); + } break; + + case c3__peek: { + _lord_plea_peek(god_u, u3k(dat)); + } break; + + case c3__slog: { + _lord_plea_slog(god_u, u3k(dat)); + } break; + + case c3__flog: { + _lord_plea_flog(god_u, u3k(dat)); + } break; + + // XX track snapshot state, mug_l, notification cb? + // + case c3__sync: { + } break; + + case c3__live: { + _lord_plea_live(god_u, u3k(dat)); + } break; + + case c3__ripe: { + _lord_plea_ripe(god_u, u3k(dat)); + } break; + + case c3__quiz: { + _lord_plea_quiz(god_u, u3k(dat)); + } + } + + u3z(jar); + return c3y; +} + +/* _lord_writ_new(): allocate a new writ. +*/ +static u3_writ* +_lord_writ_new(u3_lord* god_u) +{ + u3_writ* wit_u = c3_calloc(sizeof(*wit_u)); + if ( !god_u->ent_u ) { + u3_assert( !god_u->ext_u ); + u3_assert( !god_u->dep_w ); + god_u->dep_w = 1; + god_u->ent_u = god_u->ext_u = wit_u; + } + else { + god_u->dep_w++; + god_u->ent_u->nex_u = wit_u; + god_u->ent_u = wit_u; + } + + return wit_u; +} + +/* _lord_writ_make(): cons writ. +*/ +static u3_noun +_lord_writ_make(u3_lord* god_u, u3_writ* wit_u) +{ + u3_noun msg; + + switch ( wit_u->typ_e ) { + default: u3_assert(0); + + case u3_writ_poke: { + u3_noun mil = u3i_words(1, &wit_u->wok_u.egg_u->mil_w); + msg = u3nt(c3__poke, mil, u3k(wit_u->wok_u.job)); + } break; + + case u3_writ_peek: { + // XX support timeouts, + // + msg = u3nc(c3__peek, u3nc(0, u3k(wit_u->pek_u->sam))); + } break; + + // XX wat do + // + case u3_writ_live: { + msg = u3_nul; + } break; + + case u3_writ_quiz: { + msg = u3nt(c3__quiz, wit_u->qiz_u.qiz_m, u3_nul); + } + + case u3_writ_exit: { + msg = u3nc(c3__exit, u3_nul); + } break; + } + + return msg; +} + +/* _lord_writ_send(): send writ to serf. +*/ +static void +_lord_writ_send(u3_lord* god_u, u3_writ* wit_u) +{ + // exit expected + // + if ( u3_writ_exit == wit_u->typ_e ) { + god_u->out_u.bal_f = _lord_bail_noop; + god_u->inn_u.bal_f = _lord_bail_noop; + } + + { + u3_noun jar = _lord_writ_make(god_u, wit_u); + c3_d len_d; + c3_y* byt_y; + +#ifdef LORD_TRACE_JAM + u3t_event_trace("king ipc jam", 'B'); +#endif + + u3s_jam_xeno(jar, &len_d, &byt_y); + +#ifdef LORD_TRACE_JAM + u3t_event_trace("king ipc jam", 'E'); +#endif + + u3_newt_send(&god_u->inn_u, len_d, byt_y); + u3z(jar); + } +} + +/* _lord_send(): send writ to serf. +*/ +static void +_lord_send(u3_lord* god_u, u3_noun jar) +{ + c3_d len_d; + c3_y* byt_y; + +#ifdef LORD_TRACE_JAM + u3t_event_trace("king ipc jam", 'B'); +#endif + + u3s_jam_xeno(jar, &len_d, &byt_y); + +#ifdef LORD_TRACE_JAM + u3t_event_trace("king ipc jam", 'E'); +#endif + + u3_newt_send(&god_u->inn_u, len_d, byt_y); + u3z(jar); +} + +/* u3_lord_peek(): read namespace, injecting what's missing. +*/ +void +u3_lord_peek(u3_lord* god_u, u3_pico* pic_u) +{ + u3_writ* wit_u = _lord_writ_new(god_u); + wit_u->typ_e = u3_writ_peek; + wit_u->pek_u = c3_calloc(sizeof(*wit_u->pek_u)); + wit_u->pek_u->ptr_v = pic_u->ptr_v; + wit_u->pek_u->fun_f = pic_u->fun_f; + wit_u->pek_u->typ_e = pic_u->typ_e; + + // construct the full scry path + // + { + u3_noun sam; + switch ( pic_u->typ_e ) { + default: u3_assert(0); + + case u3_pico_full: { + sam = u3k(pic_u->ful); + } break; + + case u3_pico_once: { + sam = u3nc(c3n, u3nq(c3__once, + pic_u->las_u.car_m, + u3k(pic_u->las_u.des), + u3k(pic_u->las_u.pax))); + } break; + } + + wit_u->pek_u->sam = u3nc(u3k(pic_u->gan), sam); + } + + // XX cache check, unless last + // + _lord_send(god_u, _lord_writ_make(god_u, wit_u)); +} + +/* u3_lord_work(): attempt work. +*/ +void +u3_lord_work(u3_lord* god_u, u3_ovum* egg_u, u3_noun job) +{ + u3_writ* wit_u = _lord_writ_new(god_u); + wit_u->typ_e = u3_writ_poke; + wit_u->wok_u.egg_u = egg_u; + wit_u->wok_u.job = job; + + // if not spinning, start + // + if ( c3n == god_u->pin_o ) { + god_u->cb_u.spin_f(god_u->cb_u.ptr_v, + egg_u->pin_u.lab, + egg_u->pin_u.del_o); + god_u->pin_o = c3y; + } + + _lord_send(god_u, _lord_writ_make(god_u, wit_u)); +} + +/* u3_lord_save(): save a snapshot. +*/ +c3_o +u3_lord_save(u3_lord* god_u) +{ + _lord_send(god_u, u3nt(c3__sync, c3__save, u3_nul)); + return c3y; +} + +/* u3_lord_meld(): globally deduplicate persistent state. +*/ +void +u3_lord_meld(u3_lord* god_u) +{ + u3_writ* wit_u = _lord_writ_new(god_u); + wit_u->typ_e = u3_writ_live; + + // XX set callback + // + _lord_send(god_u, u3nt(c3__live, c3__meld, u3_nul)); +} + +/* u3_lord_pack(): defragment persistent state. +*/ +void +u3_lord_pack(u3_lord* god_u) +{ + u3_writ* wit_u = _lord_writ_new(god_u); + wit_u->typ_e = u3_writ_live; + + // XX set callback + // + _lord_send(god_u, u3nt(c3__live, c3__pack, u3_nul)); +} + +/* u3_lord_quiz(): query the serf. +*/ +void +u3_lord_quiz(u3_lord* god_u, + c3_m qiz_m, + void* ptr_v, + void (*qiz_f)(c3_m, void*, u3_noun)) +{ + u3_writ* wit_u = _lord_writ_new(god_u); + wit_u->typ_e = u3_writ_quiz; + wit_u->qiz_u.qiz_m = qiz_m; + wit_u->qiz_u.ptr_v = ptr_v; + wit_u->qiz_u.qiz_f = qiz_f; + + _lord_send(god_u, u3nt(c3__quiz, qiz_m, u3_nul)); +} + +/* u3_lord_exit(): shutdown gracefully. +*/ +void +u3_lord_exit(u3_lord* god_u) +{ + u3_writ* wit_u = _lord_writ_new(god_u); + wit_u->typ_e = u3_writ_exit; + _lord_send(god_u, _lord_writ_make(god_u, wit_u)); + + // exit expected + // + god_u->out_u.bal_f = _lord_bail_noop; + god_u->inn_u.bal_f = _lord_bail_noop; + + // XX set timer, then halt + // +} + +/* u3_lord_stall(): send SIGINT +*/ +void +u3_lord_stall(u3_lord* god_u) +{ + uv_process_kill(&god_u->cub_u, SIGINT); +} + +/* u3_lord_halt(): shutdown immediately +*/ +void +u3_lord_halt(u3_lord* god_u) +{ + // no exit callback on halt + // + god_u->cb_u.exit_f = 0; + + uv_process_kill(&god_u->cub_u, SIGKILL); + _lord_stop(god_u); +} + +/* _lord_serf_err_alloc(): libuv buffer allocator. +*/ +static void +_lord_serf_err_alloc(uv_handle_t* had_u, size_t len_i, uv_buf_t* buf) +{ + // error/info messages as a rule don't exceed one line + // + *buf = uv_buf_init(c3_malloc(80), 80); +} + +/* _lord_on_serf_err_cb(): subprocess stderr callback. +*/ +static void +_lord_on_serf_err_cb(uv_stream_t* pyp_u, + ssize_t siz_i, + const uv_buf_t* buf_u) +{ + if ( siz_i >= 0 ) { + // serf used to write to 2 directly + // this can't be any worse than that + // + u3_write_fd(2, buf_u->base, siz_i); + } else { + uv_read_stop(pyp_u); + + if ( siz_i != UV_EOF ) { + u3l_log("lord: serf stderr: %s", uv_strerror(siz_i)); + } + } + + if ( buf_u->base != NULL ) { + c3_free(buf_u->base); + } +} + + +/* _lord_on_serf_exit(): handle subprocess exit. +*/ +static void +_lord_on_serf_exit(uv_process_t* req_u, + c3_ds sas_i, + c3_i sig_i) +{ + + u3_lord* god_u = (void*)req_u; + + if ( !god_u->ext_u + || !(u3_writ_exit == god_u->ext_u->typ_e) ) + { + fprintf(stderr, "pier: work exit: status %" PRId64 ", signal %d\r\n", + sas_i, sig_i); + _lord_bail(god_u); + } + else { + _lord_stop(god_u); + } +} + +/* _lord_on_serf_bail(): handle subprocess error. +*/ +static void +_lord_on_serf_bail(void* ptr_v, + ssize_t err_i, + const c3_c* err_c) +{ + u3_lord* god_u = ptr_v; + + if ( UV_EOF == err_i ) { + u3l_log("pier: serf unexpectedly shut down\r\n"); + } + else { + u3l_log("pier: serf error: %s", err_c); + } + + _lord_bail(god_u); +} + +/* u3_lord_info(): status info as $mass. +*/ +u3_noun +u3_lord_info(u3_lord* god_u) +{ + return u3_pier_mass( + c3__lord, + u3i_list( + u3_pier_mase("live", god_u->liv_o), + u3_pier_mase("event", u3i_chub(god_u->eve_d)), + u3_pier_mase("queue", u3i_word(god_u->dep_w)), + u3_newt_moat_info(&god_u->out_u), + u3_none)); +} + +/* u3_lord_slog(): print status info. +*/ +void +u3_lord_slog(u3_lord* god_u) +{ + u3l_log(" lord: live=%s, event=%" PRIu64 ", queue=%u", + ( c3y == god_u->liv_o ) ? "&" : "|", + god_u->eve_d, + god_u->dep_w); + u3_newt_moat_slog(&god_u->out_u); +} + +/* u3_lord_init(): instantiate child process. +*/ +u3_lord* +u3_lord_init(c3_c* pax_c, c3_w wag_w, c3_d key_d[4], u3_lord_cb cb_u) +{ + u3_lord* god_u = c3_calloc(sizeof *god_u); + god_u->liv_o = c3n; + god_u->pin_o = c3n; + god_u->wag_w = wag_w; + god_u->bin_c = u3_Host.wrk_c; // XX strcopy + god_u->pax_c = pax_c; // XX strcopy + god_u->cb_u = cb_u; + + // spawn new process and connect to it + // + { + c3_c* arg_c[25] = {0}; // NB: expand as necessary + c3_c wag_c[11]; + c3_c hap_c[11]; + c3_c per_c[11]; + c3_c lom_c[11]; + c3_c tos_c[11]; + c3_c sap_c[11]; + c3_c cev_c[11]; + c3_c siz_c[21]; + c3_i err_i; + + sprintf(wag_c, "%u", god_u->wag_w); + + sprintf(hap_c, "%u", u3_Host.ops_u.hap_w); + + sprintf(per_c, "%u", u3_Host.ops_u.per_w); + + sprintf(lom_c, "%u", u3_Host.ops_u.lom_y); + + sprintf(sap_c, "%u", u3_Host.ops_u.sap_w); + + sprintf(tos_c, "%u", u3C.tos_w); + + sprintf(siz_c, "%" PRIc3_z, u3_Host.ops_u.siz_i); + + c3_w i_w = 0; + arg_c[i_w++] = god_u->bin_c; // executable + arg_c[i_w++] = "work"; // protocol + arg_c[i_w++] = "--snap-dir"; // path to checkpoint directory + arg_c[i_w++] = god_u->pax_c; + arg_c[i_w++] = "--runtime-config"; // runtime config + arg_c[i_w++] = wag_c; + arg_c[i_w++] = "--temporary-cache-size"; // hash table size + arg_c[i_w++] = hap_c; + arg_c[i_w++] = "--loom"; // loom bex + arg_c[i_w++] = lom_c; + arg_c[i_w++] = "--toss"; // toss + arg_c[i_w++] = tos_c; + arg_c[i_w++] = "--persistent-cache-size"; // persistent cache size + arg_c[i_w++] = per_c; + arg_c[i_w++] = "--snap-time"; // snapshot interval + arg_c[i_w++] = sap_c; + arg_c[i_w++] = "--lmdb-map-size"; + arg_c[i_w++] = siz_c; + + if ( u3_Host.ops_u.til_c ) { + arg_c[i_w++] = "--play-until"; // play until + arg_c[i_w++] = u3_Host.ops_u.til_c; // XX validate + } + + if ( u3C.eph_c ) { + arg_c[i_w++] = "--ephemeral-file"; // ephemeral file + arg_c[i_w++] = strdup(u3C.eph_c); + } + +#ifdef U3_OS_windows + sprintf(cev_c, "%"PRIu64, (c3_d)u3_Host.cev_u); + arg_c[i_w++] = "--win-intr-handle"; // windows interrupt handler + arg_c[i_w++] = cev_c; +#endif + + u3_assert( i_w < (sizeof(arg_c) / sizeof(*arg_c)) ); + + uv_pipe_init(u3L, &god_u->inn_u.pyp_u, 0); + uv_timer_init(u3L, &god_u->out_u.tim_u); + uv_pipe_init(u3L, &god_u->out_u.pyp_u, 0); + uv_pipe_init(u3L, &god_u->err_u, 0); + + god_u->cod_u[0].flags = UV_CREATE_PIPE | UV_READABLE_PIPE; + god_u->cod_u[0].data.stream = (uv_stream_t *)&god_u->inn_u; + + god_u->cod_u[1].flags = UV_CREATE_PIPE | UV_WRITABLE_PIPE; + god_u->cod_u[1].data.stream = (uv_stream_t *)&god_u->out_u; + + god_u->cod_u[2].flags = UV_CREATE_PIPE | UV_WRITABLE_PIPE; + god_u->cod_u[2].data.stream = (uv_stream_t *)&god_u->err_u; + + god_u->ops_u.stdio = god_u->cod_u; + god_u->ops_u.stdio_count = 3; + + // if any fds are inherited, libuv ignores UV_PROCESS_WINDOWS_HIDE* + god_u->ops_u.flags = UV_PROCESS_WINDOWS_HIDE; + god_u->ops_u.exit_cb = _lord_on_serf_exit; + god_u->ops_u.file = arg_c[0]; + god_u->ops_u.args = arg_c; + + if ( (err_i = uv_spawn(u3L, &god_u->cub_u, &god_u->ops_u)) ) { + fprintf(stderr, "spawn: %s: %s\r\n", arg_c[0], uv_strerror(err_i)); + + return 0; + } + + uv_read_start((uv_stream_t *)&god_u->err_u, _lord_serf_err_alloc, _lord_on_serf_err_cb); + } + +#if defined(LORD_TRACE_JAM) || defined(LORD_TRACE_CUE) + u3t_trace_open(god_u->pax_c); +#endif + + { + god_u->sil_u = u3s_cue_xeno_init(); + } + + // start reading from proc + // + { + god_u->out_u.ptr_v = god_u; + god_u->out_u.pok_f = _lord_on_plea; + god_u->out_u.bal_f = _lord_on_serf_bail; + + // XX distinguish from out_u.bal_f ? + // + god_u->inn_u.ptr_v = god_u; + god_u->inn_u.bal_f = _lord_on_serf_bail; + + u3_newt_read(&god_u->out_u); + } + return god_u; +} + +typedef struct _lord_boot { + uv_process_t cub_u; // process handle + uv_process_options_t ops_u; // process configuration + uv_stdio_container_t cod_u[3]; // process options + u3_cue_xeno* sil_u; // cue handle + u3_mojo inn_u; // client's stdin + u3_moat out_u; // client's stdout + c3_w wag_w; // config flags + c3_c* bin_c; // binary path + c3_c* pax_c; // directory + c3_d key_d[4]; // image key + void* ptr_v; + c3_o ret_o; + void (*done_f)(void*, c3_o); +} _lord_boot; + +/* _lord_on_serf_boot_exit_cb(): finish handling subprocess exit. +*/ +static void +_lord_on_serf_boot_exit_cb(void* ptr_v, + ssize_t err_i, + const c3_c* err_c) +{ + _lord_boot* bot_u = ptr_v; + c3_o ret_o = bot_u->ret_o; + void (*done_f)(void*, c3_o) = bot_u->done_f; + + ptr_v = bot_u->ptr_v; + + u3s_cue_xeno_done(bot_u->sil_u); + c3_free(bot_u); + + if ( done_f ) { + done_f(ptr_v, ret_o); + } +} + +/* _lord_on_serf_boot_exit(): handle subprocess exit. +*/ +static void +_lord_on_serf_boot_exit(uv_process_t* cub_u, + c3_ds sas_i, + c3_i sig_i) +{ + _lord_boot* bot_u = cub_u->data; + + bot_u->ret_o = ( !sas_i && !sig_i ) ? c3y : c3n; + + u3_newt_moat_stop(&bot_u->out_u, _lord_on_serf_boot_exit_cb); + u3_newt_mojo_stop(&bot_u->inn_u, _lord_bail_noop); + + // XX add stderr? + // + uv_close((uv_handle_t*)cub_u, 0); +} + +/* _lord_on_serf_boot_bail(): handle subprocess error. +*/ +static void +_lord_on_serf_boot_bail(void* ptr_v, + ssize_t err_i, + const c3_c* err_c) +{ + _lord_boot* bot_u = ptr_v; + + // ignore EOF, dispatch on process exit + // + if ( UV_EOF != err_i ) { + u3l_log("boot: error: %s\r\n", err_c); + } +} + +/* _lord_on_plea_boot(): handle plea from serf. +*/ +static c3_o +_lord_on_plea_boot(void* ptr_v, c3_d len_d, c3_y* byt_y) +{ + _lord_boot* bot_u = ptr_v; + + u3_weak jar = u3s_cue_xeno_with(bot_u->sil_u, len_d, byt_y); + u3_noun tag, dat; + + if ( u3_none == jar ) { + // XX fatal error + u3_assert(0); + // return _lord_plea_foul(god_u, 0, u3_blip); + } + else if ( c3n == u3r_cell(jar, &tag, &dat) ) { + // XX fatal error + u3_assert(0); + // return _lord_plea_foul(god_u, 0, jar); + } + else { + switch ( tag ) { + default: { + // XX fatal error + u3_assert(0); + // return _lord_plea_foul(god_u, 0, jar);ss + } + + case c3__slog: { + u3_noun pri, tan; + c3_w pri_w; + + if ( (c3n == u3r_cell(dat, &pri, &tan)) + || (c3n == u3r_safe_word(pri, &pri_w)) ) + { + // XX fatal error + u3_assert(0); + // return _lord_plea_foul(god_u, c3__slog, dat); + } + else { + u3_pier_tank(0, pri_w, u3k(tan)); + } + } break; + + case c3__flog: { + c3_c* tan_c = u3r_string(dat); + u3C.stderr_log_f(tan_c); + c3_free(tan_c); + } break; + } + } + + u3z(jar); + return c3y; +} + +/* u3_lord_boot(): instantiate child process. +*/ +void +u3_lord_boot(c3_c* pax_c, + c3_w wag_w, + c3_d key_d[4], + u3_noun msg, + void* ptr_v, + void (*done_f)(void*, c3_o)) +{ + _lord_boot* bot_u = c3_calloc(sizeof(*bot_u)); + bot_u->wag_w = wag_w; + bot_u->bin_c = u3_Host.wrk_c; // XX strcopy + bot_u->pax_c = pax_c; // XX strcopy + bot_u->done_f = done_f; + bot_u->ptr_v = ptr_v; + + // spawn new process and connect to it + // + { + c3_c* arg_c[19] = {0}; // NB: expand as necessary + c3_c wag_c[11]; + c3_c hap_c[11]; + c3_c lom_c[11]; + c3_c eph_c[11]; + c3_c tos_c[11]; + c3_c per_c[11]; + c3_c siz_c[21]; + c3_i err_i; + + sprintf(wag_c, "%u", bot_u->wag_w); + + sprintf(hap_c, "%u", u3_Host.ops_u.hap_w); + + sprintf(lom_c, "%u", u3_Host.ops_u.lom_y); + + sprintf(tos_c, "%u", u3C.tos_w); + + sprintf(per_c, "%u", u3_Host.ops_u.per_w); + + sprintf(siz_c, "%" PRIc3_z, u3_Host.ops_u.siz_i); + + c3_w i_w = 0; + arg_c[i_w++] = bot_u->bin_c; // executable + arg_c[i_w++] = "boot"; // protocol + arg_c[i_w++] = "--snap-dir"; // path to checkpoint directory + arg_c[i_w++] = bot_u->pax_c; + arg_c[i_w++] = "--runtime-config"; // runtime config + arg_c[i_w++] = wag_c; + arg_c[i_w++] = "--temporary-cache-size"; // hash table size + arg_c[i_w++] = hap_c; + arg_c[i_w++] = "--loom"; // loom bex + arg_c[i_w++] = lom_c; + arg_c[i_w++] = "--toss"; // toss + arg_c[i_w++] = tos_c; + arg_c[i_w++] = "--persistent-cache-size"; // persistent cache size + arg_c[i_w++] = per_c; + arg_c[i_w++] = "--lmdb-map-size"; + arg_c[i_w++] = siz_c; + + if ( 0 != u3C.eph_c) { + arg_c[i_w++] = "--ephemeral-file"; // ephemeral file + arg_c[i_w++] = strdup(u3C.eph_c); + } + + u3_assert( i_w < (sizeof(arg_c) / sizeof(*arg_c)) ); + + uv_pipe_init(u3L, &bot_u->inn_u.pyp_u, 0); + uv_timer_init(u3L, &bot_u->out_u.tim_u); + uv_pipe_init(u3L, &bot_u->out_u.pyp_u, 0); + + // XX add stderr? + // + + bot_u->cod_u[0].flags = UV_CREATE_PIPE | UV_READABLE_PIPE; + bot_u->cod_u[0].data.stream = (uv_stream_t *)&bot_u->inn_u; + + bot_u->cod_u[1].flags = UV_CREATE_PIPE | UV_WRITABLE_PIPE; + bot_u->cod_u[1].data.stream = (uv_stream_t *)&bot_u->out_u; + + bot_u->cod_u[2].flags = UV_INHERIT_FD; + bot_u->cod_u[2].data.fd = 2; + + bot_u->ops_u.stdio = bot_u->cod_u; + bot_u->ops_u.stdio_count = 3; + + bot_u->ops_u.exit_cb = _lord_on_serf_boot_exit; + bot_u->ops_u.file = arg_c[0]; + bot_u->ops_u.args = arg_c; + + if ( (err_i = uv_spawn(u3L, &bot_u->cub_u, &bot_u->ops_u)) ) { + fprintf(stderr, "spawn: %s: %s\r\n", arg_c[0], uv_strerror(err_i)); + // XX return error code, or defer and invoke cb + // + return; + } + } + + bot_u->cub_u.data = bot_u; + + { + bot_u->sil_u = u3s_cue_xeno_init(); + } + + // start reading from proc + // + { + bot_u->out_u.ptr_v = bot_u; + bot_u->out_u.pok_f = _lord_on_plea_boot; + bot_u->out_u.bal_f = _lord_on_serf_boot_bail; + + // XX distinguish from out_u.bal_f ? + // + bot_u->inn_u.ptr_v = bot_u; + bot_u->inn_u.bal_f = _lord_on_serf_boot_bail; + + u3_newt_read(&bot_u->out_u); + } + + { + c3_d len_d; + c3_y* byt_y; + u3s_jam_xeno(msg, &len_d, &byt_y); + u3_newt_send(&bot_u->inn_u, len_d, byt_y); + u3z(msg); + } +} diff --git a/vere/pkg/vere/main.c b/vere/pkg/vere/main.c new file mode 100644 index 0000000..a547e23 --- /dev/null +++ b/vere/pkg/vere/main.c @@ -0,0 +1,3341 @@ +/// @file + +#define U3_GLOBAL +#define C3_GLOBAL +#include "noun.h" +#include "events.h" // XX remove, see full replay in _cw_play() +#include "ivory.h" +#include "ur/ur.h" +#include "platform/rsignal.h" +#include "vere.h" + +#ifndef U3_OS_windows +#include "sigsegv.h" +#endif + +#include "openssl/conf.h" +#include "openssl/engine.h" +#include "openssl/err.h" +#include "openssl/ssl.h" +#include "h2o.h" +#include "curl/curl.h" +#include "db/lmdb.h" +#include "getopt.h" +#include "libgen.h" +#include "pthread.h" + +#include "ca_bundle.h" +#include "pace.h" +#include "version.h" +#include "whereami.h" +#include "mars.h" + +static u3_moat inn_u; // input stream +static u3_mojo out_u; // output stream + +/* Require unsigned char + */ +//STATIC_ASSERT(( 0 == CHAR_MIN && UCHAR_MAX == CHAR_MAX ), + //"unsigned char required"); + +/* _main_self_path(): get binary self-path. +*/ +static void +_main_self_path(void) +{ + c3_c* pat_c; + c3_i len_i, pat_i; + + if ( 0 < (len_i = wai_getExecutablePath(NULL, 0, &pat_i)) ) { + pat_c = c3_malloc( 1 + len_i ); + wai_getExecutablePath(pat_c, len_i, &pat_i); + pat_c[len_i] = 0; + + u3_Host.dem_c = pat_c; + } + else { + fprintf(stderr, "unable to get binary self path\r\n"); + exit(1); + + // XX continue? + // + // u3_Host.dem_c = strdup(bin_c); + } +} + +/* _main_readw(): parse a word from a string. +*/ +static c3_o +_main_readw(const c3_c* str_c, c3_w max_w, c3_w* out_w) +{ + c3_c* end_c; + c3_w par_w = strtoul(str_c, &end_c, 0); + + if ( *str_c != '\0' && *end_c == '\0' && par_w < max_w ) { + *out_w = par_w; + return c3y; + } + else return c3n; +} + +/* _main_read_loom(): parse loom pointer bit size from a string. +*/ +static c3_i +_main_read_loom(const c3_c* nam_c, const c3_c* arg_c, c3_y* out_y) +{ + c3_w lom_w; + c3_o res_o = _main_readw(arg_c, u3a_bits_max + 1, &lom_w); + if ( res_o == c3n || (lom_w < 20) ) { + fprintf(stderr, "error: --%s must be >= 20 and <= %zu\r\n", nam_c, u3a_bits_max); + return -1; + } + *out_y = lom_w; + return 0; +} + +/* _main_presig(): prefix optional sig. +*/ +c3_c* +_main_presig(c3_c* txt_c) +{ + c3_c* new_c = c3_malloc(2 + strlen(txt_c)); + + if ( '~' == *txt_c ) { + strcpy(new_c, txt_c); + } else { + new_c[0] = '~'; + strcpy(new_c + 1, txt_c); + } + return new_c; +} + +/* _main_repath(): canonicalize path, using dirname if needed. +*/ +c3_c* +_main_repath(c3_c* pax_c) +{ + c3_c* rel_c; + c3_c* fas_c; + c3_c* dir_c; + c3_w len_w; + c3_i wit_i; + + u3_assert(pax_c); + if ( 0 != (rel_c = realpath(pax_c, 0)) ) { + return rel_c; + } + fas_c = strrchr(pax_c, '/'); + if ( !fas_c ) { + c3_c rec_c[2048]; + + wit_i = snprintf(rec_c, sizeof(rec_c), "./%s", pax_c); + u3_assert(sizeof(rec_c) > wit_i); + return _main_repath(rec_c); + } + u3_assert(u3_unix_cane(fas_c + 1)); + *fas_c = 0; + dir_c = realpath(pax_c, 0); + *fas_c = '/'; + if ( 0 == dir_c ) { + return 0; + } + len_w = strlen(dir_c) + strlen(fas_c) + 1; + rel_c = c3_malloc(len_w); + wit_i = snprintf(rel_c, len_w, "%s%s", dir_c, fas_c); + u3_assert(len_w == wit_i + 1); + c3_free(dir_c); + return rel_c; +} + +/* _main_init(): initialize globals +*/ +static void +_main_init(void) +{ + u3_Host.nex_o = c3n; + u3_Host.pep_o = c3n; + + u3_Host.ops_u.abo = c3n; + u3_Host.ops_u.dem = c3n; + u3_Host.ops_u.dry = c3n; + u3_Host.ops_u.gab = c3n; + u3_Host.ops_u.git = c3n; + + // always disable hashboard + // XX temporary, remove once hashes are added + // + u3_Host.ops_u.has = c3y; + + u3_Host.ops_u.map = c3y; + u3_Host.ops_u.net = c3y; + u3_Host.ops_u.lit = c3n; + u3_Host.ops_u.nuu = c3n; + u3_Host.ops_u.pro = c3n; + u3_Host.ops_u.qui = c3n; + u3_Host.ops_u.rep = c3n; + u3_Host.ops_u.eph = c3n; + u3_Host.ops_u.tos = c3n; + u3_Host.ops_u.beb = c3n; + u3_Host.ops_u.tem = c3n; + u3_Host.ops_u.tex = c3n; + u3_Host.ops_u.tra = c3n; + u3_Host.ops_u.veb = c3n; + u3_Host.ops_u.puf_c = "jam"; + u3_Host.ops_u.hap_w = 50000; + u3C.hap_w = u3_Host.ops_u.hap_w; + u3_Host.ops_u.per_w = 50000; + u3C.per_w = u3_Host.ops_u.per_w; + u3_Host.ops_u.kno_w = DefaultKernel; + + u3_Host.ops_u.sap_w = 120; /* aka 2 minutes */ + u3_Host.ops_u.lut_y = 31; /* aka 2G */ + u3_Host.ops_u.lom_y = 31; + u3_Host.ops_u.jum_y = 23; /* aka 1MB */ + + u3_Host.ops_u.siz_i = +#if defined(U3_OS_windows) + 0xf00000000; +#elif (defined(U3_CPU_aarch64) && defined(U3_OS_linux)) + // 500 GiB is as large as musl on aarch64 wants to allow + 0x7d00000000; +#else + 0x10000000000; +#endif + + u3C.eph_c = 0; + u3C.tos_w = 0; +} + +/* _main_pier_run(): get pier from binary path (argv[0]), if appropriate +*/ +static c3_c* +_main_pier_run(c3_c* bin_c) +{ + c3_c* dir_c = 0; + c3_w bin_w = strlen(bin_c); + c3_w len_w = strlen(U3_BIN_ALIAS); + + // no args, argv[0] == $pier/.run + // + if ( (len_w <= bin_w) + && (0 == strcmp(bin_c + (bin_w - len_w), U3_BIN_ALIAS)) ) + { + bin_c = strdup(bin_c); // dirname can modify + dir_c = _main_repath(dirname(bin_c)); + c3_free(bin_c); + } + + return dir_c; +} + +/* _main_add_prop(): add a boot prop to u3_Host.ops_u.vex_u. +*/ +u3_even* +_main_add_prop(c3_i kin_i, c3_c* loc_c) +{ + u3_even* nex_u = c3_calloc(sizeof(*nex_u)); + nex_u->kin_i = kin_i; + nex_u->loc_c = loc_c; + nex_u->pre_u = u3_Host.ops_u.vex_u; + u3_Host.ops_u.vex_u = nex_u; + return nex_u; +} + +/* _main_getopt(): extract option map from command line. +*/ +static u3_noun +_main_getopt(c3_i argc, c3_c** argv) +{ + c3_i ch_i, lid_i; + c3_w arg_w; + c3_o want_creat_o = c3n; + + static struct option lop_u[] = { + { "arvo", required_argument, NULL, 'A' }, + { "abort", no_argument, NULL, 'a' }, + { "bootstrap", required_argument, NULL, 'B' }, + { "http-ip", required_argument, NULL, 'b' }, + { "memo-cache-limit", required_argument, NULL, 'C' }, + { "pier", required_argument, NULL, 'c' }, + { "replay", no_argument, NULL, 'D' }, + { "daemon", no_argument, NULL, 'd' }, + { "ethereum", required_argument, NULL, 'e' }, + { "fake", required_argument, NULL, 'F' }, + { "key-string", required_argument, NULL, 'G' }, + { "gc", no_argument, NULL, 'g' }, + { "dns-root", required_argument, NULL, 'H' }, + { "inject", required_argument, NULL, 'I' }, + { "import", required_argument, NULL, 'i' }, + { "ivory-pill", required_argument, NULL, 'J' }, + { "json-trace", no_argument, NULL, 'j' }, + { "jumbo-bloq", required_argument, NULL, c3__bloq }, + { "kernel-stage", required_argument, NULL, 'K' }, + { "key-file", required_argument, NULL, 'k' }, + { "loom", required_argument, NULL, c3__loom }, + { "local", no_argument, NULL, 'L' }, + { "lite-boot", no_argument, NULL, 'l' }, + { "keep-cache-limit", required_argument, NULL, 'M' }, + { "replay-to", required_argument, NULL, 'n' }, + { "profile", no_argument, NULL, 'P' }, + { "ames-port", required_argument, NULL, 'p' }, + { "http-port", required_argument, NULL, c3__http }, + { "https-port", required_argument, NULL, c3__htls }, + { "snap-time", required_argument, NULL, c3__snap }, + { "no-conn", no_argument, NULL, c3__noco }, + { "no-dock", no_argument, NULL, c3__nodo }, + { "quiet", no_argument, NULL, 'q' }, + { "versions", no_argument, NULL, 'R' }, + { "skip-battery-hashes", no_argument, NULL, 'S' }, + { "autoselect-pill", no_argument, NULL, 's' }, + { "no-tty", no_argument, NULL, 't' }, + { "bootstrap-url", required_argument, NULL, 'u' }, + { "verbose", no_argument, NULL, 'v' }, + { "name", required_argument, NULL, 'w' }, + { "scry", required_argument, NULL, 'X' }, + { "exit", no_argument, NULL, 'x' }, + { "scry-into", required_argument, NULL, 'Y' }, + { "scry-format", required_argument, NULL, 'Z' }, + // + { "prop-file", required_argument, NULL, 1 }, + { "prop-url", required_argument, NULL, 2 }, + { "prop-name", required_argument, NULL, 3 }, + // + { "urth-loom", required_argument, NULL, 5 }, + { "no-demand", no_argument, NULL, 6 }, + { "swap", no_argument, NULL, 7 }, + { "swap-to", required_argument, NULL, 8 }, + { "toss", required_argument, NULL, 9 }, + { "behn-allow-blocked", no_argument, NULL, 10 }, + { "serf-bin", required_argument, NULL, 11 }, + { "lmdb-map-size", required_argument, NULL, 12 }, + // + { NULL, 0, NULL, 0 }, + }; + + while ( -1 != (ch_i=getopt_long(argc, argv, + "A:B:C:DF:G:H:I:J:K:LM:PRSX:Y:Z:ab:c:de:gi:jk:ln:p:q:stu:vw:x", + lop_u, &lid_i)) ) + { + switch ( ch_i ) { + case 1: case 2: case 3: { // prop-* + _main_add_prop(ch_i, strdup(optarg)); + break; + } + case 5: { // urth-loom + if (_main_read_loom("urth-loom", optarg, &u3_Host.ops_u.lut_y)) { + return c3n; + } + break; + } + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + break; + } + case 7: { // swap + u3_Host.ops_u.eph = c3y; + break; + } + case 8: { // swap-to + u3_Host.ops_u.eph = c3y; + u3C.eph_c = strdup(optarg); + break; + } + case 9: { // toss + u3_Host.ops_u.tos = c3y; + if ( 1 != sscanf(optarg, "%" SCNu32, &u3C.tos_w) ) { + return c3n; + } + break; + } + case 10: { // behn-allow-blocked + u3_Host.ops_u.beb = c3y; + break; + } + case 11: { // serf-bin + u3_Host.wrk_c = strdup(optarg); + break; + } + case 12: { // lmdb-map-size + if ( 1 != sscanf(optarg, "%" SCNuMAX, &u3_Host.ops_u.siz_i) ) { + return c3n; + } + + break; + } + // special args + // + case c3__bloq: { + if (_main_readw(optarg, 30, &arg_w)) { + return c3n; + } else u3_Host.ops_u.jum_y = arg_w; + if ( 13 > u3_Host.ops_u.jum_y ) { + return c3n; + } + break; + } + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + return c3n; + } + break; + } + case c3__http: { + if ( c3n == _main_readw(optarg, 65536, &arg_w) ) { + return c3n; + } else u3_Host.ops_u.per_s = arg_w; + break; + } + case c3__htls: { + if ( c3n == _main_readw(optarg, 65536, &arg_w) ) { + return c3n; + } else u3_Host.ops_u.pes_s = arg_w; + break; + } + case c3__noco: { + u3_Host.ops_u.con = c3n; + break; + } + case c3__nodo: { + u3_Host.ops_u.doc = c3n; + break; + } + case c3__snap: { + if ( c3n == _main_readw(optarg, 65536, &arg_w) ) { + return c3n; + } else { + u3_Host.ops_u.sap_w = arg_w * 60; + if ( 0 == u3_Host.ops_u.sap_w ) + return c3n; + } + break; + } + // opts with args + // + case 'A': { + u3_Host.ops_u.arv_c = _main_repath(optarg); + break; + } + case 'B': { + u3_Host.ops_u.pil_c = _main_repath(optarg); + break; + } + case 'b': { + u3_Host.ops_u.bin_c = strdup(optarg); + break; + } + case 'C': { + if ( c3n == _main_readw(optarg, 1000000000, &u3_Host.ops_u.hap_w) ) { + return c3n; + } + u3C.hap_w = u3_Host.ops_u.hap_w; + break; + } + case 'c': { + u3_Host.dir_c = _main_repath(optarg); + u3_Host.ops_u.nuu = c3y; + break; + } + case 'e': { + u3_Host.ops_u.eth_c = strdup(optarg); + break; + } + case 'F': { + u3_Host.ops_u.fak_c = _main_presig(optarg); + u3_Host.ops_u.net = c3n; + u3_Host.ops_u.nuu = c3y; + break; + } + case 'G': { + u3_Host.ops_u.gen_c = strdup(optarg); + break; + } + case 'H': { + u3_Host.ops_u.dns_c = strdup(optarg); + break; + } + case 'I': { + u3_Host.ops_u.jin_c = _main_repath(optarg); + break; + } + case 'i': { + u3_Host.ops_u.imp_c = _main_repath(optarg); + break; + } + case 'J': { + u3_Host.ops_u.lit_c = _main_repath(optarg); + break; + } + case 'K': { + if ( c3n == _main_readw(optarg, 256, &u3_Host.ops_u.kno_w) ) { + return c3n; + } + break; + } + case 'k': { + u3_Host.ops_u.key_c = _main_repath(optarg); + break; + } + case 'M': { + if ( c3n == _main_readw(optarg, 1000000000, &u3_Host.ops_u.per_w) ) { + return c3n; + } + u3C.per_w = u3_Host.ops_u.per_w; + break; + } + case 'n': { + u3_Host.ops_u.til_c = strdup(optarg); + break; + } + case 'p': { + if ( c3n == _main_readw(optarg, 65536, &arg_w) ) { + return c3n; + } else u3_Host.ops_u.por_s = arg_w; + break; + } + case 'R': { + u3_Host.ops_u.rep = c3y; + return c3y; + } + case 'u': { + u3_Host.ops_u.url_c = strdup(optarg); + break; + } + case 'w': { + u3_Host.ops_u.who_c = _main_presig(optarg); + u3_Host.ops_u.nuu = c3y; + break; + } + case 'X': { + u3_Host.ops_u.pek_c = strdup(optarg); + break; + } + case 'x': { + u3_Host.ops_u.tex = c3y; + break; + } + case 'Y': { + u3_Host.ops_u.puk_c = strdup(optarg); + break; + } + case 'Z': { + u3_Host.ops_u.puf_c = strdup(optarg); + break; + } + // opts without args + // + case 'a': { u3_Host.ops_u.abo = c3y; break; } + case 'D': { u3_Host.ops_u.dry = c3y; break; } + case 'd': { u3_Host.ops_u.dem = c3y; break; } + case 'g': { u3_Host.ops_u.gab = c3y; break; } + case 'j': { u3_Host.ops_u.tra = c3y; break; } + case 'L': { u3_Host.ops_u.net = c3n; break; } + case 'l': { u3_Host.ops_u.lit = c3y; break; } + case 'P': { u3_Host.ops_u.pro = c3y; break; } + case 'q': { u3_Host.ops_u.qui = c3y; break; } + case 's': { u3_Host.ops_u.git = c3y; break; } + case 'S': { u3_Host.ops_u.has = c3y; break; } + case 't': { u3_Host.ops_u.tem = c3y; break; } + case 'v': { u3_Host.ops_u.veb = c3y; break; } + // unknown opt + // + case '?': default: { + return c3n; + } + } + } + +#if !defined(U3_OS_PROF) + if (u3_Host.ops_u.pro == c3y) { + fprintf(stderr, "profiling isn't yet supported on your OS\r\n"); + return c3n; + } +#endif + + if ( 0 != u3_Host.ops_u.fak_c ) { + if ( 28 < strlen(u3_Host.ops_u.fak_c) ) { + fprintf(stderr, "fake comets are forbidden\r\n"); + return c3n; + } + if ( 0 != u3_Host.ops_u.who_c ) { + fprintf(stderr, "-F and -w cannot be used together\r\n"); + return c3n; + } + + u3_Host.ops_u.who_c = strdup(u3_Host.ops_u.fak_c); + u3_Host.ops_u.has = c3y; /* no battery hashing on fake ships. */ + u3_Host.ops_u.net = c3n; /* no networking on fake ships. */ + } + + if ( argc == optind && u3_Host.ops_u.nuu != c3y ) { + if ( !(u3_Host.dir_c = _main_pier_run(argv[0])) ) { + // no trailing arg, argv[0] != $pier/.run, not making new pier: invalid command + fprintf(stderr, "no pier provided\n"); + return c3n; + } + } + else if ( argc != optind ) { + if ( u3_Host.ops_u.nuu == c3y || argc > (optind + 1) ) { + // path with new pier or multiple paths: invalid command + fprintf(stderr, "too many arguments\n"); + return c3n; + } + u3_Host.dir_c = _main_repath(argv[optind]); + } + + if ( 0 == u3_Host.dir_c ) { + u3_Host.dir_c = strdup(1 + u3_Host.ops_u.who_c); + } + + // daemon mode (-d) implies disabling terminal assumptions (-t) + // + if ( c3y == u3_Host.ops_u.dem ) { + u3_Host.ops_u.tem = c3y; + } + + { + struct stat s; + // catch invalid boot + if ( 0 != stat(u3_Host.dir_c, &s) ) { + if ( u3_Host.ops_u.nuu != c3y ) { + fprintf(stderr, "couldn't find pier %s\n", u3_Host.dir_c); + exit(1); + } + } + // catch invalid boot of existing pier + else { + if ( u3_Host.ops_u.nuu == c3y ) { + fprintf(stderr, "tried to create pier %s but it already exists\n", u3_Host.dir_c); + fprintf(stderr, "normal usage: %s %s\n", argv[0], u3_Host.dir_c); + exit(1); + } + else if ( 0 != access(u3_Host.dir_c, W_OK) ) { + fprintf(stderr, "urbit: write permissions are required for %s\n", u3_Host.dir_c); + exit(1); + } + } + } + + if ( u3_Host.ops_u.nuu != c3y && u3_Host.ops_u.pil_c != 0 ) { + fprintf(stderr, "-B only makes sense when creating a new ship\n"); + return c3n; + } + + if ( u3_Host.ops_u.nuu != c3y && u3_Host.ops_u.gen_c != 0 ) { + fprintf(stderr, "-G only makes sense when creating a new ship\n"); + return c3n; + } + + if ( u3_Host.ops_u.nuu != c3y && u3_Host.ops_u.dns_c != 0 ) { + fprintf(stderr, "-H only makes sense when creating a new ship\n"); + return c3n; + } + + if ( u3_Host.ops_u.nuu != c3y && u3_Host.ops_u.key_c != 0 ) { + fprintf(stderr, "-k only makes sense when creating a new ship\n"); + return c3n; + } + + if ( u3_Host.ops_u.nuu != c3y && u3_Host.ops_u.url_c != 0 ) { + fprintf(stderr, "-u only makes sense when creating a new ship\n"); + return c3n; + } + + if ( u3_Host.ops_u.url_c != 0 && u3_Host.ops_u.pil_c != 0 ) { + fprintf(stderr, "-B and -u cannot be used together\n"); + return c3n; + } + else if ( u3_Host.ops_u.nuu == c3y + && u3_Host.ops_u.url_c == 0 + && u3_Host.ops_u.git == c3n ) { + + c3_c version_c[strlen(URBIT_VERSION) + 1]; + strcpy(version_c, URBIT_VERSION); + c3_c* hyphen_c = strchr(version_c, '-'); + // URBIT_VERSION has the form {version}-{commit_sha} when built on + // non-"live" channels, which means we need to strip off the trailing commit + // SHA in those cases. + if ( hyphen_c ) { + *hyphen_c = '\0'; + } + //TODO use brass pill from b.u.org/props/etc eventually + c3_i res_i = asprintf(&u3_Host.ops_u.url_c, + "https://bootstrap.urbit.org/urbit-v%s.pill", + version_c); + if ( res_i < 0 ) { + fprintf(stderr, "failed to construct pill URL\n"); + return c3n; + } + } + else if ( u3_Host.ops_u.nuu == c3y + && u3_Host.ops_u.url_c == 0 + && u3_Host.ops_u.arv_c == 0 ) { + + // implicitly: u3_Host.ops_u.git == c3y + fprintf(stderr, "-s only makes sense with -A\n"); + return c3n; + } + + if ( u3_Host.ops_u.pil_c != 0 ) { + struct stat s; + if ( stat(u3_Host.ops_u.pil_c, &s) != 0 ) { + fprintf(stderr, "pill %s not found\n", u3_Host.ops_u.pil_c); + return c3n; + } + } + + if ( u3_Host.ops_u.vex_u != 0 ) { + struct stat s; + u3_even* vex_u = u3_Host.ops_u.vex_u; + while ( vex_u != 0 ) { + if ( vex_u->kin_i == 1 && stat(vex_u->loc_c, &s) != 0 ) { + fprintf(stderr, "events file %s not found\n", vex_u->loc_c); + return c3n; + } + vex_u = vex_u->pre_u; + } + } + + struct sockaddr_in t; + if ( u3_Host.ops_u.bin_c != 0 && inet_pton(AF_INET, u3_Host.ops_u.bin_c, &t.sin_addr) == 0 ) { + fprintf(stderr, "-b invalid IP address\n"); + return c3n; + } + + if ( u3_Host.ops_u.key_c != 0 ) { + struct stat s; + if ( stat(u3_Host.ops_u.key_c, &s) != 0 ) { + fprintf(stderr, "keyfile %s not found\n", u3_Host.ops_u.key_c); + return c3n; + } + } + + //TODO split up "default distribution" packages eventually + // // if we're not in lite mode, include the default props + // // + // if ( u3_Host.ops_u.lit == c3n ) { + // _main_add_prop(3, "landscape"); + // _main_add_prop(3, "webterm"); + // _main_add_prop(3, "groups"); + // } + + return c3y; +} + +/* _cert_store: decoded CA certificates + */ +static STACK_OF(X509_INFO)* _cert_store; + +/* _setup_cert_store(): decodes embedded CA certificates + */ +static void +_setup_cert_store() +{ + BIO* cbio = BIO_new_mem_buf(include_ca_bundle_crt, include_ca_bundle_crt_len); + if ( !cbio || !(_cert_store = PEM_X509_INFO_read_bio(cbio, NULL, NULL, NULL)) ) { + u3l_log("boot: failed to decode embedded CA certificates"); + exit(1); + } + + BIO_free(cbio); +} + +/* _setup_ssl_x509(): adds embedded CA certificates to a X509_STORE + */ +static void +_setup_ssl_x509(void* arg) +{ + X509_STORE* cts = arg; + int i; + for ( i = 0; i < sk_X509_INFO_num(_cert_store); i++ ) { + X509_INFO *itmp = sk_X509_INFO_value(_cert_store, i); + if(itmp->x509) { + X509_STORE_add_cert(cts, itmp->x509); + } + if(itmp->crl) { + X509_STORE_add_crl(cts, itmp->crl); + } + } +} + +/* _curl_ssl_ctx_cb(): curl SSL context callback + */ +static CURLcode +_curl_ssl_ctx_cb(CURL* curl, SSL_CTX* sslctx, void* param) +{ + X509_STORE* cts = SSL_CTX_get_cert_store(sslctx); + if (!cts || !_cert_store) + return CURLE_ABORTED_BY_CALLBACK; + + _setup_ssl_x509(cts); + return CURLE_OK; +} + +/* _setup_ssl_curl(): adds embedded CA certificates to a curl context + */ +static void +_setup_ssl_curl(void* arg) +{ + CURL* curl = arg; + curl_easy_setopt(curl, CURLOPT_CAINFO, NULL); + curl_easy_setopt(curl, CURLOPT_CAPATH, NULL); + curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, _curl_ssl_ctx_cb); +} + +/* _cw_usage(): print utility usage. +*/ +static void +_cw_usage(c3_c* bin_c) +{ + c3_c *use_c[] = { + "utilities:\n", + " %s eval evaluate hoon from stdin:\n", + " %s cram %.*s jam state:\n", + " %s dock %.*s copy binary:\n", + " %s grab %.*s measure memory usage:\n", + " %s info %.*s print pier info:\n", + " %s meld %.*s deduplicate and minimize snapshot:\n", + " %s melt %.*s deduplicate snapshot:\n", + " %s pack %.*s defragment snapshot:\n", + " %s play %.*s recompute events:\n", + " %s prep %.*s prepare for upgrade:\n", + " %s next %.*s request upgrade:\n", + " %s queu %.*s cue state:\n", + " %s chop %.*s truncate event log:\n", + " %s roll %.*s rollover to new epoch:\n", + " %s vere ARGS download binary:\n", + "\nmars, ipc:\n", + " boot a pier:\n", + " %s boot \n", + " run a pier:\n", + " %s work " + "\n", + 0 + }; + + c3_c* d = _main_pier_run(bin_c); + c3_i i; + + for ( i=0; use_c[i]; i++ ) { + fprintf(stderr, use_c[i], bin_c, d ? 0 : 7, " "); + } + + c3_free(d); +} + +/* u3_ve_usage(): print usage and exit. +*/ +static void +u3_ve_usage(c3_i argc, c3_c** argv) +{ + c3_c *use_c[] = { + "Urbit: a personal server operating function\n", + "https://urbit.org\n", + "Version " URBIT_VERSION "\n", + "\n", + "Usage: %s [options...] ship_name\n", + "where ship_name is a @p phonetic representation of an urbit address\n", + "without the leading '~', and options is some subset of the following:\n", + "\n", + "-A, --arvo DIR Use dir for initial clay sync\n", + "-a, --abort Abort aggressively\n", + "-B, --bootstrap PILL Bootstrap from this pill\n", + "-b, --http-ip IP Bind HTTP server to this IP address\n", + "-C, --memo-cache-limit LIMIT Set memo cache max size; 0 means uncapped\n", + "-c, --pier PIER Create a new urbit in /\n", + "-D, --replay Recompute from events\n", + "-d, --daemon Daemon mode; implies -t\n", + "-e, --ethereum URL Ethereum gateway\n", + "-F, --fake SHIP Boot fake urbit; also disables networking\n", + "-G, --key-string STRING Private key string (@uw, see also -k)\n" + "-g, --gc Set GC flag\n", + "-I, --inject FILE Inject event from jamfile\n", + "-i, --import FILE Import pier state from jamfile\n", + "-J, --ivory-pill PILL Use custom ivory pill\n", + "-j, --json-trace Create json trace file in .urb/put/trace\n", + " --jumbo-bloq BLOQ Set Ames jumbo frame bloq size\n", + "-K, --kernel-stage STAGE Start at Hoon kernel version stage\n", + "-k, --key-file KEYS Private key file (see also -G)\n", + "-L, --local Local networking only\n", + " --loom EXPO Set loom to binary exponent (31 == 2GB)\n" + "-l, --lite-boot Most-minimal startup\n", + "-M, --keep-cache-limit LIMIT Set persistent memo cache max size; 0 means default\n", + "-n, --replay-to NUMBER Replay up to event\n", + "-P, --profile Profiling\n", + "-p, --ames-port PORT Set the ames port to bind to\n", + " --http-port PORT Set the http port to bind to\n", + " --https-port PORT Set the https port to bind to\n", + " --snap-time TIME Set the snapshotting rate in minutes (> 0)\n", + "-q, --quiet Quiet\n", + "-R, --versions Report urbit build info\n", + "-S, --skip-battery-hashes Disable battery hashing\n", + // XX find a way to re-enable + // "-s, --autoselect-pill Pill URL from arvo git hash\n", + "-t, --no-tty Disable terminal/tty assumptions\n", + "-u, --bootstrap-url URL URL from which to download pill\n", + "-v, --verbose Verbose\n", + "-w, --name NAME Initial boot as ~name (with ticket)\n", + "-X, --scry PATH Scry, write to file, then exit\n", + "-x, --exit Exit immediately\n", + "-Y, --scry-into FILE Optional name of file (for -X)\n", + "-Z, --scry-format FORMAT Optional file format ('jam', or aura, for -X)\n", + " --no-demand Skip demand paging\n" + " --no-conn Do not run control plane\n", + " --no-dock Skip binary \"docking\" on boot\n", + " --swap Use an explicit ephemeral (swap-like) file\n", + " --swap-to FILE Specify ephemeral file location\n", + " --prop-file FILE Add a prop into the boot sequence\n" + " --prop-url URL Download a prop into the boot sequence\n", + " --prop-name NAME Download a prop from bootstrap.urbit.org\n", + "\n", + "Development Usage:\n", + " To create a development ship, use a fakezod:\n", + " %s -F zod -A /path/to/arvo/folder -B /path/to/pill -c zod\n", + "\n", + " For more information about developing on urbit, see:\n", + " https://github.com/urbit/urbit/blob/master/CONTRIBUTING.md\n", + "\n", + "Simple Usage: \n", + " %s -c to create a comet (anonymous urbit)\n", + " %s -w -k if you own a planet\n", + " %s to restart an existing urbit\n", + 0 + }; + + c3_i i; + for ( i=0; use_c[i]; i++ ) { + fprintf(stderr, use_c[i], argv[0]); + } + _cw_usage(argv[0]); + exit(1); +} + +#if 0 +/* u3_ve_panic(): panic and exit. +*/ +static void +u3_ve_panic(c3_i argc, c3_c** argv) +{ + fprintf(stderr, "%s: gross system failure\n", argv[0]); + exit(1); +} +#endif + +static void +report(void) +{ + printf("urbit %s\n", URBIT_VERSION); + printf("gmp: %s\n", gmp_version); + #ifndef U3_OS_windows + printf("sigsegv: %d.%d\n", + (libsigsegv_version >> 8) & 0xff, + libsigsegv_version & 0xff); + #endif + printf("openssl: %s\n", SSLeay_version(SSLEAY_VERSION)); + printf("libuv: %s\n", uv_version_string()); + printf("libh2o: %d.%d.%d\n", + H2O_LIBRARY_VERSION_MAJOR, + H2O_LIBRARY_VERSION_MINOR, + H2O_LIBRARY_VERSION_PATCH); + printf("lmdb: %d.%d.%d\n", + MDB_VERSION_MAJOR, + MDB_VERSION_MINOR, + MDB_VERSION_PATCH); + printf("curl: %d.%d.%d\n", + LIBCURL_VERSION_MAJOR, + LIBCURL_VERSION_MINOR, + LIBCURL_VERSION_PATCH); +} + +/* _stop_exit(): exit immediately. +*/ +static void +_stop_exit(c3_i int_i) +{ + // explicit fprintf to avoid allocation in u3l_log + // + fprintf(stderr, "\r\n[received keyboard stop signal, exiting]\r\n"); + u3_king_bail(); +} + +/* _stop_on_boot_completed_cb(): exit gracefully after boot is complete +*/ +static void +_stop_on_boot_completed_cb() +{ + u3_king_exit(); +} + +/* _cw_io_fail(): failure stub. +*/ +static void +_cw_io_fail(void* ptr_v, ssize_t err_i, const c3_c* err_c) +{ + if ( UV_EOF == err_i ) { + fprintf(stderr, "mars: urth unexpectedly shut down\r\n"); + } + else { + fprintf(stderr, "mars: ipc error: %s\r\n", err_c); + } + + exit(1); +} + +/* _cw_king_fail(): local failure stub. +*/ +static void +_cw_king_fail(void* ptr_v, ssize_t err_i, const c3_c* err_c) +{ + fprintf(stderr, "king: eval error: %s\r\n", err_c); + exit(1); +} + +/* _cw_io_send(): send plea back to daemon. +*/ +static void +_cw_io_send(u3_noun pel) +{ + c3_d len_d; + c3_y* byt_y; + + u3s_jam_xeno(pel, &len_d, &byt_y); + u3_newt_send(&out_u, len_d, byt_y); + u3z(pel); +} + +/* _cw_io_send_slog(): send hint output (hod is [priority tank]). +*/ +static void +_cw_io_send_slog(u3_noun hod) +{ + _cw_io_send(u3nc(c3__slog, hod)); +} + +/* _cw_io_send_stdr(): send stderr output (%flog). +*/ +static void +_cw_io_send_stdr(c3_c* str_c) +{ + _cw_io_send(u3nc(c3__flog, u3i_string(str_c))); +} + +/* _cw_init_io(): initialize i/o streams. +*/ +static void +_cw_init_io(uv_loop_t* lup_u) +{ + // mars is spawned with [FD 0] = events and [FD 1] = effects + // we dup [FD 0 & 1] so we don't accidentally use them for something else + // we replace [FD 0] (stdin) with a fd pointing to /dev/null + // we replace [FD 1] (stdout) with a dup of [FD 2] (stderr) + // + c3_i nul_i = c3_open(c3_dev_null, O_RDWR, 0); + c3_i inn_i = dup(0); + c3_i out_i = dup(1); + + dup2(nul_i, 0); + dup2(2, 1); + + close(nul_i); + + // set stream I/O to unbuffered because it's now a pipe not a console + // + setvbuf(stdout, NULL, _IONBF, 0); + setvbuf(stderr, NULL, _IONBF, 0); + + // Ignore SIGPIPE signals. + // +#ifndef U3_OS_windows + { + sigset_t set_s; + sigemptyset(&set_s); + sigaddset(&set_s, SIGPIPE); + pthread_sigmask(SIG_BLOCK, &set_s, NULL); + } +#endif + + // configure pipe to daemon process + // + { + c3_i err_i; + err_i = uv_timer_init(lup_u, &inn_u.tim_u); + u3_assert(!err_i); + err_i = uv_pipe_init(lup_u, &inn_u.pyp_u, 0); + u3_assert(!err_i); + uv_pipe_open(&inn_u.pyp_u, inn_i); + err_i = uv_pipe_init(lup_u, &out_u.pyp_u, 0); + u3_assert(!err_i); + uv_pipe_open(&out_u.pyp_u, out_i); + + uv_stream_set_blocking((uv_stream_t*)&out_u.pyp_u, 1); + } +} + +#ifdef U3_OS_windows +/* _cw_intr_win_cb(): invoked when urth signals ctrl-c. + */ +static void +_cw_intr_win_cb(PVOID param, BOOLEAN timedOut) +{ + rsignal_raise(SIGINT); +} + +/* _cw_intr_win(): initialize ctrl-c handling. + */ +static void +_cw_intr_win(c3_c* han_c) +{ + HANDLE h; + if ( 1 != sscanf(han_c, "%" PRIu64, (c3_d*)&h) ) { + fprintf(stderr, "mars: ctrl-c event: bad handle %s: %s\r\n", + han_c, strerror(errno)); + } + else { + if ( !RegisterWaitForSingleObject(&h, h, _cw_intr_win_cb, + NULL, INFINITE, 0) ) + { + fprintf(stderr, + "mars: ctrl-c event: RegisterWaitForSingleObject(%llu) failed (%lu)\r\n", + (c3_d)h, GetLastError()); + } + } +} +#endif + +/* _cw_load_pier(): open event log +*/ +static u3_disk* +_cw_load_pier(c3_c* dir_c) +{ + u3_disk* log_u = u3_disk_load(dir_c, u3_dlod_last); + + if ( !log_u ) { + fprintf(stderr, "unable to open event log\n"); + exit(1); + } + + u3_Host.eve_d = u3A->eve_d; + + return log_u; +} + +/* _cw_dock(): copy binary into pier +*/ +static void +_cw_dock(c3_i argc, c3_c* argv[]) +{ + switch ( argc ) { + case 2: { + if ( !(u3_Host.dir_c = _main_pier_run(argv[0])) ) { + fprintf(stderr, "unable to find pier\r\n"); + exit (1); + } + } break; + + case 3: { + u3_Host.dir_c = argv[2]; + } break; + + default: { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } break; + } + + _main_self_path(); + + u3_king_dock(U3_VERE_PACE); +} + +/* _cw_eval_get_string(): read file til EOF and return a malloc'd string +*/ +c3_c* +_cw_eval_get_string(FILE* fil_u, size_t siz_i) +{ + c3_i car_i; + size_t len_i = 0; + c3_c* str_c = c3_malloc(siz_i); // size is start size + + while( EOF != (car_i = fgetc(fil_u)) ){ + str_c[len_i++] = car_i; + if( len_i == siz_i ){ + siz_i += 16; + str_c = c3_realloc(str_c, siz_i); + } + } + + str_c[len_i++]='\0'; + + return c3_realloc(str_c, len_i); +} + +/* _cw_eval_get_newt(): read a newt-encoded jammed noun from file and return a +** malloc'd byte buffer +*/ +c3_y* +_cw_eval_get_newt(FILE* fil_u, c3_d* len_d) +{ + // TODO: can't reuse u3_newt_decode; coupled to reading from pipe + c3_d i; + c3_y hed_y = sizeof(((u3_mess*)NULL)->hed_u.hed_y); + c3_y* byt_y = c3_malloc(hed_y); + + for ( i = 0; i < hed_y; ++i ) { + byt_y[i] = fgetc(fil_u); + } + + if ( 0x0 != byt_y[0] ) { + fprintf(stderr, "corrupted newt passed to cue\n"); + exit(1); + } + + *len_d = (((c3_d)byt_y[1]) << 0) + | (((c3_d)byt_y[2]) << 8) + | (((c3_d)byt_y[3]) << 16) + | (((c3_d)byt_y[4]) << 24); + byt_y = c3_realloc(byt_y, *len_d); + + for ( i = 0; i < *len_d; ++i ) { + byt_y[i] = fgetc(fil_u); + } + + return byt_y; +} + +/* _cw_eval(): initialize and run the hoon evaluator +*/ +static void +_cw_eval(c3_i argc, c3_c* argv[]) +{ + u3_mojo std_u; + c3_i ch_i, lid_i; + c3_w arg_w; + c3_o cue_o = c3n; + c3_o jam_o = c3n; + c3_o kan_o = c3n; + c3_o new_o = c3n; + + static struct option lop_u[] = { + { "loom", required_argument, NULL, c3__loom }, + { "cue", no_argument, NULL, 'c'}, + { "jam", no_argument, NULL, 'j' }, + { "newt", no_argument, NULL, 'n' }, + // + { NULL, 0, NULL, 0 } + }; + + while ( -1 != (ch_i=getopt_long(argc, argv, "cjkn", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 'c': { + cue_o = c3y; + } break; + + case 'j': { + jam_o = c3y; + } break; + + case 'k': { + kan_o = c3y; + } break; + + case 'n': { + new_o = c3y; + } break; + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // cannot have both jam and cue set + // + if ( ( c3y == cue_o ) && ( c3y == jam_o ) ) { + fprintf(stderr, "cannot enable both jam and cue\r\n"); + exit(1); + } + // newt meaningless without jam or cue set + // + if ( ( c3y == new_o ) && ( c3n == cue_o ) && ( c3n == jam_o) ) { + fprintf(stderr, "newt meaningless w/o jam or cue; ignoring\r\n"); + new_o = c3n; + } + // argv[optind] is always "eval" + // + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + // configure stdout as u3_mojo + // + { + c3_i err_i; + err_i = uv_pipe_init(uv_default_loop(), &std_u.pyp_u, 0); + u3_assert(!err_i); + uv_pipe_open(&std_u.pyp_u, 1); + + std_u.ptr_v = NULL; + std_u.bal_f = _cw_king_fail; + } + + // initialize the Loom and load the Ivory Pill + // + { + c3_d len_d = u3_Ivory_pill_len; + c3_y* byt_y = u3_Ivory_pill; + u3_cue_xeno* sil_u; + u3_weak pil; + + u3C.wag_w |= u3o_hashless; + u3m_boot_lite((size_t)1 << u3_Host.ops_u.lom_y); + sil_u = u3s_cue_xeno_init_with(ur_fib27, ur_fib28); + if ( u3_none == (pil = u3s_cue_xeno_with(sil_u, len_d, byt_y)) ) { + fprintf(stderr, "lite: unable to cue ivory pill\r\n"); + exit(1); + } + u3s_cue_xeno_done(sil_u); + if ( c3n == u3v_boot_lite(pil) ) { + u3l_log("lite: boot failed"); + exit(1); + } + } + + fprintf(stderr, "eval ("); + if ( c3y == cue_o ) { + fprintf(stderr, "cue"); + } else if ( c3y == jam_o ) { + fprintf(stderr, "jam"); + } else { + fprintf(stderr, "run"); + } + if ( c3y == new_o ) { + fprintf(stderr, ", newt"); + } + fprintf(stderr,"):\n"); + + // cue input and pretty-print on stdout + // + if ( c3y == cue_o ) { + c3_d len_d; + c3_y* byt_y; + u3_weak som; + if ( c3n == new_o ) { + fprintf(stderr, "cue only supports newt encoding (for now)\n"); + exit(1); + } + byt_y = _cw_eval_get_newt(stdin, &len_d); + som = u3s_cue_xeno(len_d, byt_y); + if ( u3_none == som ) { + fprintf(stderr, "cue failed\n"); + exit(1); + } + c3_c* pre_c; + u3k(som); + // if input is jammed khan output + if ( c3y == kan_o ) { + u3_noun cop, uid, mar, res, tan; + u3x_qual(som, &uid, &mar, &res, &tan); + // and if result is a goof + if ( c3n == res ) { + // pretty-print tang to stderr and output only header + u3_Host.ops_u.dem = c3y; + u3_pier_punt_goof("eval", tan); + cop = som; + som = u3i_trel(uid, mar, res); + u3k(som); + u3z(cop); + } + } + pre_c = u3m_pretty(som); + fprintf(stdout, "%s\n", pre_c); + c3_free(pre_c); + u3z(som); + free(byt_y); + } + // jam input and return on stdout + // + else if ( c3y == jam_o ) { + c3_d len_d = 0; + c3_c* evl_c = _cw_eval_get_string(stdin, 10); + c3_y* byt_y; + u3_noun sam = u3i_string(evl_c); + u3_noun res = u3m_soft(0, u3v_wish_n, sam); + if ( 0 == u3h(res) ) { // successful execution, print output + u3s_jam_xeno(u3t(res), &len_d, &byt_y); + if ( c3y == new_o ) { + u3_newt_send(&std_u, len_d, byt_y); + } else { + for ( size_t p=0; p < len_d; p++ ) { + fprintf(stdout,"\\x%2x", byt_y[p++]); + } + } + } else { // error, print stack trace + u3_pier_punt_goof("eval", u3k(res)); + } + u3z(res); + free(evl_c); + } + // slam eval gate with input + // + else { + c3_c* evl_c = _cw_eval_get_string(stdin, 10); + // +wish for an eval gate (virtualized twice for pretty-printing) + u3_noun gat = u3v_wish("|=(a=@t (sell (slap !>(+>.$) (rain /eval a))))"); + u3_noun res; + { + u3_noun sam = u3i_string(evl_c); + u3_noun cor = u3nc(u3k(u3h(gat)), u3nc(sam, u3k(u3t(u3t(gat))))); + res = u3m_soft(0, u3n_kick_on, cor); + } + if ( 0 == u3h(res) ) { // successful execution, print output + u3_pier_tank(0, 0, u3k(u3t(res))); + } else { // error, print stack trace + u3_pier_punt_goof("eval", u3k(res)); + } + u3z(res); + u3z(gat); + free(evl_c); + } +} + +/* _cw_info(): print pier info +*/ +static void +_cw_info(c3_i argc, c3_c* argv[]) +{ + c3_i lid_i, ch_i; + c3_w arg_w; + + static struct option lop_u[] = { + { "loom", required_argument, NULL, c3__loom }, + { "no-demand", no_argument, NULL, 6 }, + { "swap", no_argument, NULL, 7 }, + { "swap-to", required_argument, NULL, 8 }, + { "lmdb-map-size", required_argument, NULL, 9 }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + u3C.wag_w |= u3o_no_demand; + } break; + + case 7: { // swap + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + } break; + + case 8: { // swap-to + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + u3C.eph_c = strdup(optarg); + break; + } + + case 9: { // lmdb-map-size + if ( 1 != sscanf(optarg, "%" SCNuMAX, &u3_Host.ops_u.siz_i) ) { + exit(1); + } + break; + } + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // argv[optind] is always "info" + // + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + u3_disk* log_u = _cw_load_pier(u3_Host.dir_c); + + fprintf(stderr, "\r\nurbit: %s at event %" PRIu64 "\r\n", + u3_Host.dir_c, u3_Host.eve_d); + + u3_disk_slog(log_u); + printf("\n"); + + + { + c3_z len_z = u3_disk_epoc_list(log_u, 0); + c3_d* sot_d = c3_malloc(len_z * sizeof(c3_d)); + u3_disk_epoc_list(log_u, sot_d); + + fprintf(stderr, "epocs:\r\n"); + + while ( len_z-- ) { + fprintf(stderr, " 0i%" PRIu64 "\r\n", sot_d[len_z]); + } + + c3_free(sot_d); + fprintf(stderr, "\r\n"); + } + + u3_lmdb_stat(log_u->mdb_u, stdout); + u3_disk_exit(log_u); + + u3m_stop(); +} + +/* _cw_grab(): gc pier. +*/ +static void +_cw_grab(c3_i argc, c3_c* argv[]) +{ + c3_i lid_i, ch_i; + c3_w arg_w; + + u3_Host.ops_u.gab = c3n; + + static struct option lop_u[] = { + { "gc", no_argument, NULL, 'g' }, + { "loom", required_argument, NULL, c3__loom }, + { "no-demand", no_argument, NULL, 6 }, + { "swap", no_argument, NULL, 7 }, + { "swap-to", required_argument, NULL, 8 }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "g", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case 'g': { u3_Host.ops_u.gab = c3y; break; } + + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + u3C.wag_w |= u3o_no_demand; + } break; + + case 7: { // swap + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + } break; + + case 8: { // swap-to + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + u3C.eph_c = strdup(optarg); + break; + } + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // argv[optind] is always "grab" + // + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + /* Set GC flag. + */ + if ( _(u3_Host.ops_u.gab) ) { + u3C.wag_w |= u3o_debug_ram; + } + + u3m_boot(u3_Host.dir_c, (size_t)1 << u3_Host.ops_u.lom_y); // NB: readonly + u3C.wag_w |= u3o_hashless; + u3z(u3_mars_grab(c3y)); + u3m_stop(); +} + +/* _cw_cram(): jam persistent state (rock), and exit. +*/ +static void +_cw_cram(c3_i argc, c3_c* argv[]) +{ + c3_i ch_i, lid_i; + c3_w arg_w; + + static struct option lop_u[] = { + { "loom", required_argument, NULL, c3__loom }, + { "no-demand", no_argument, NULL, 6 }, + { "swap", no_argument, NULL, 7 }, + { "swap-to", required_argument, NULL, 8 }, + { "lmdb-map-size", required_argument, NULL, 9 }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + u3C.wag_w |= u3o_no_demand; + } break; + + case 7: { // swap + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + } break; + + case 8: { // swap-to + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + u3C.eph_c = strdup(optarg); + break; + } + + case 9: { // lmdb-map-size + if ( 1 != sscanf(optarg, "%" SCNuMAX, &u3_Host.ops_u.siz_i) ) { + exit(1); + } + break; + } + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // argv[optind] is always "cram" + // + + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + u3_disk* log_u = _cw_load_pier(u3_Host.dir_c); + c3_o ret_o; + + fprintf(stderr, "urbit: cram: preparing\r\n"); + + if ( c3n == (ret_o = u3u_cram(u3_Host.dir_c, u3_Host.eve_d)) ) { + fprintf(stderr, "urbit: cram: unable to jam state\r\n"); + } + else { + fprintf(stderr, "urbit: cram: rock saved at event %" PRIu64 "\r\n", u3_Host.eve_d); + } + + // save even on failure, as we just did all the work of deduplication + // + u3m_save(); + u3_disk_exit(log_u); + + if ( c3n == ret_o ) { + exit(1); + } + + u3m_stop(); +} + +/* _cw_queu(): cue rock, save, and exit. +*/ +static void +_cw_queu(c3_i argc, c3_c* argv[]) +{ + c3_i lid_i, ch_i; + c3_w arg_w; + c3_c* roc_c = 0; + + static struct option lop_u[] = { + { "loom", required_argument, NULL, c3__loom }, + { "no-demand", no_argument, NULL, 6 }, + { "swap", no_argument, NULL, 7 }, + { "swap-to", required_argument, NULL, 8 }, + { "lmdb-map-size", required_argument, NULL, 9 }, + { "replay-from", required_argument, NULL, 'r' }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "r:", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + u3C.wag_w |= u3o_no_demand; + } break; + + case 7: { // swap + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + } break; + + case 8: { // swap-to + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + u3C.eph_c = strdup(optarg); + break; + } + + case 9: { // lmdb-map-size + if ( 1 != sscanf(optarg, "%" SCNuMAX, &u3_Host.ops_u.siz_i) ) { + exit(1); + } + break; + } + + case 'r': { + roc_c = strdup(optarg); + } break; + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + if ( !roc_c ) { + fprintf(stderr, "invalid command, -r $EVENT required\r\n"); + exit(1); + } + + // argv[optind] is always "queu" + // + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + c3_d eve_d; + + if ( 1 != sscanf(roc_c, "%" PRIu64 "", &eve_d) ) { + fprintf(stderr, "urbit: queu: invalid number '%s'\r\n", roc_c); + exit(1); + } + else { + u3_disk* log_u = _cw_load_pier(u3_Host.dir_c); + + fprintf(stderr, "urbit: queu: preparing\r\n"); + + // XX can spuriously fail do to corrupt memory-image checkpoint, + // need a u3m_half_boot equivalent + // workaround is to delete/move the checkpoint in case of corruption + // + if ( c3n == u3u_uncram(u3_Host.dir_c, eve_d) ) { + fprintf(stderr, "urbit: queu: failed\r\n"); + exit(1); + } + + u3m_save(); + u3_disk_exit(log_u); + + fprintf(stderr, "urbit: queu: rock loaded at event %" PRIu64 "\r\n", eve_d); + u3m_stop(); + } +} + +/* _cw_meld(): canonicalize persistent nouns and compact state. +*/ +static void +_cw_meld(c3_i argc, c3_c* argv[]) +{ + c3_i ch_i, lid_i; + c3_w arg_w; + + static struct option lop_u[] = { + { "loom", required_argument, NULL, c3__loom }, + { "no-demand", no_argument, NULL, 6 }, + { "swap", no_argument, NULL, 7 }, + { "swap-to", required_argument, NULL, 8 }, + { "gc-early", no_argument, NULL, 9 }, + { "lmdb-map-size", required_argument, NULL, 10 }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + u3C.wag_w |= u3o_no_demand; + } break; + + case 7: { // swap + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + } break; + + case 8: { // swap-to + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + u3C.eph_c = strdup(optarg); + break; + } + + case 9: { // gc-early + u3C.wag_w |= u3o_check_corrupt; + break; + } + + case 10: { // lmdb-map-size + if ( 1 != sscanf(optarg, "%" SCNuMAX, &u3_Host.ops_u.siz_i) ) { + exit(1); + } + break; + } + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // argv[optind] is always "meld" + // + + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + u3C.wag_w |= u3o_hashless; + + u3_disk* log_u = _cw_load_pier(u3_Host.dir_c); + + u3a_print_memory(stderr, "urbit: meld: gained", u3_meld_all(stderr)); + + u3m_save(); + u3_disk_exit(log_u); + u3m_stop(); +} + +/* _cw_melt(): canonicalize persistent nouns. +*/ +static void +_cw_melt(c3_i argc, c3_c* argv[]) +{ + c3_i ch_i, lid_i; + c3_w arg_w; + + static struct option lop_u[] = { + { "loom", required_argument, NULL, c3__loom }, + { "no-demand", no_argument, NULL, 6 }, + { "swap", no_argument, NULL, 7 }, + { "swap-to", required_argument, NULL, 8 }, + { "gc-early", no_argument, NULL, 9 }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + u3C.wag_w |= u3o_no_demand; + } break; + + case 7: { // swap + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + } break; + + case 8: { // swap-to + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + u3C.eph_c = strdup(optarg); + break; + } + + case 9: { // gc-early + u3C.wag_w |= u3o_check_corrupt; + break; + } + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // argv[optind] is always "melt" + // + + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + u3C.wag_w |= u3o_hashless; + + u3_disk* log_u = _cw_load_pier(u3_Host.dir_c); + + u3a_print_memory(stderr, "urbit: melt: gained", u3_melt_all(stderr)); + + u3m_save(); + u3_disk_exit(log_u); + u3m_stop(); +} + +/* _cw_next(): request upgrade +*/ +static void +_cw_next(c3_i argc, c3_c* argv[]) +{ + c3_i ch_i, lid_i; + c3_w arg_w; + + static struct option lop_u[] = { + { "arch", required_argument, NULL, 'a' }, + { "loom", required_argument, NULL, c3__loom }, + { "no-demand", no_argument, NULL, 6 }, + { "swap", no_argument, NULL, 7 }, + { "swap-to", required_argument, NULL, 8 }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "a:", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case 'a': { + u3_Host.arc_c = strdup(optarg); + } break; + + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + u3C.wag_w |= u3o_no_demand; + } break; + + case 7: { // swap + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + } break; + + case 8: { // swap-to + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + u3C.eph_c = strdup(optarg); + break; + } + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // argv[optind] is always "next" + // + + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + u3_Host.pep_o = c3y; + u3_Host.nex_o = c3y; + u3_Host.ops_u.tem = c3y; +} + +/* _cw_pack(): compact memory, save, and exit. +*/ +static void +_cw_pack(c3_i argc, c3_c* argv[]) +{ + c3_i ch_i, lid_i; + c3_w arg_w; + + static struct option lop_u[] = { + { "loom", required_argument, NULL, c3__loom }, + { "no-demand", no_argument, NULL, 6 }, + { "swap", no_argument, NULL, 7 }, + { "swap-to", required_argument, NULL, 8 }, + { "gc-early", no_argument, NULL, 9 }, + { "lmdb-map-size", required_argument, NULL, 10 }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + u3C.wag_w |= u3o_no_demand; + } break; + + case 7: { // swap + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + } break; + + case 8: { // swap-to + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + u3C.eph_c = strdup(optarg); + break; + } + + case 9: { // gc-early + u3C.wag_w |= u3o_check_corrupt; + break; + } + + case 10: { // lmdb-map-size + if ( 1 != sscanf(optarg, "%" SCNuMAX, &u3_Host.ops_u.siz_i) ) { + exit(1); + } + break; + } + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // argv[optind] is always "pack" + // + + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + u3_disk* log_u = _cw_load_pier(u3_Host.dir_c); + + u3a_print_memory(stderr, "urbit: pack: gained", u3m_pack()); + + u3m_save(); + u3_disk_exit(log_u); + u3m_stop(); +} + +/* _cw_play_slog(): print during replay. +*/ +static void +_cw_play_slog(u3_noun hod) +{ + // XX always 80 columns + // + u3_pier_tank(0, 0, u3k(u3t(hod))); + u3z(hod); +} + +/* _cw_play_exit(): exit immediately. +*/ +static void +_cw_play_exit(c3_i int_i) +{ + kill(getpid(), SIGINT); +} + +/* _cw_play(): replay events, but better. +*/ +static void +_cw_play(c3_i argc, c3_c* argv[]) +{ + c3_i lid_i, ch_i; + c3_w arg_w; + c3_d eve_d = 0; + c3_d sap_d = 0; + u3_disk_load_e lod_e = u3_dlod_last; + + u3_Host.ops_u.gab = c3n; + + static struct option lop_u[] = { + { "gc", no_argument, NULL, 'g' }, + { "loom", required_argument, NULL, c3__loom }, + { "no-demand", no_argument, NULL, 6 }, + { "auto-meld", no_argument, NULL, 7 }, + { "soft-mugs", no_argument, NULL, 8 }, + { "full", no_argument, NULL, 'f' }, + { "replay-to", required_argument, NULL, 'n' }, + { "snap-at", required_argument, NULL, 's' }, + { "yolo", no_argument, NULL, 'y' }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "fgn:s:y", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case 'g': { u3_Host.ops_u.gab = c3y; break; } + + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + u3C.wag_w |= u3o_no_demand; + } break; + + case 7: { // auto-meld + u3C.wag_w |= u3o_auto_meld; + } break; + + case 8: { // soft-mugs + u3C.wag_w |= u3o_soft_mugs; + } break; + + case 'f': { + lod_e = u3_dlod_epoc; + } break; + + case 'n': { + if ( 1 != sscanf(optarg, "%" PRIu64 "", &eve_d) ) { + fprintf(stderr, "mars: replay-to invalid: '%s'\r\n", optarg); + exit(1); + } + } break; + + case 's': { + if ( 1 != sscanf(optarg, "%" PRIu64 "", &sap_d) ) { + fprintf(stderr, "mars: snap-at invalid: '%s'\r\n", optarg); + exit(1); + } + } break; + + case 'y': { + u3C.wag_w |= u3o_yolo; + } break; + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // argv[optind] is always "play" + // + + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + /* Set GC flag. + */ + if ( _(u3_Host.ops_u.gab) ) { + u3C.wag_w |= u3o_debug_ram; + } + + u3C.wag_w |= u3o_hashless; + + // Handle SIGTSTP as if it was SIGINT. + // + // Configured here using signal() so as to be immediately available. + // +#ifndef U3_OS_windows + signal(SIGTSTP, _cw_play_exit); +#endif + + // setup mars + // + { + u3_mars mar_u = { .dir_c = u3_Host.dir_c }; + u3_mars_load(&mar_u, lod_e); + + u3C.slog_f = _cw_play_slog; + + u3_mars_play(&mar_u, eve_d, sap_d); + + u3_disk_exit(mar_u.log_u); + } + + u3m_stop(); +} + +/* _cw_prep(): prepare for upgrade +*/ +static void +_cw_prep(c3_i argc, c3_c* argv[]) +{ + // XX roll with old binary + // check that new epoch is empty, migrate snapshot in-place + c3_i ch_i, lid_i; + c3_w arg_w; + + static struct option lop_u[] = { + { "loom", required_argument, NULL, c3__loom }, + { "no-demand", no_argument, NULL, 6 }, + { "swap", no_argument, NULL, 7 }, + { "swap-to", required_argument, NULL, 8 }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + u3C.wag_w |= u3o_no_demand; + } break; + + case 7: { // swap + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + } break; + + case 8: { // swap-to + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + u3C.eph_c = strdup(optarg); + break; + } + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // argv[optind] is always "prep" + // + + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + u3_Host.pep_o = c3y; + u3_Host.ops_u.tem = c3y; +} + +/* _cw_chop(): truncate event log +*/ +static void +_cw_chop(c3_i argc, c3_c* argv[]) +{ + c3_i ch_i, lid_i; + c3_w arg_w; + + static struct option lop_u[] = { + { "loom", required_argument, NULL, c3__loom }, + { "no-demand", no_argument, NULL, 6 }, + { "swap", no_argument, NULL, 7 }, + { "swap-to", required_argument, NULL, 8 }, + { "lmdb-map-size", required_argument, NULL, 9 }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + u3C.wag_w |= u3o_no_demand; + } break; + + case 7: { // swap + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + } break; + + case 8: { // swap-to + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + u3C.eph_c = strdup(optarg); + break; + } + + case 9: { // lmdb-map-size + if ( 1 != sscanf(optarg, "%" SCNuMAX, &u3_Host.ops_u.siz_i) ) { + exit(1); + } + break; + } + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // argv[optind] is always "chop" + // + + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + u3_disk* log_u = _cw_load_pier(u3_Host.dir_c); + + u3_disk_chop(log_u, u3_Host.eve_d); + + u3_disk_exit(log_u); + u3m_stop(); +} + +/* _cw_roll(): rollover to new epoch + */ +static void +_cw_roll(c3_i argc, c3_c* argv[]) +{ + c3_i ch_i, lid_i; + c3_w arg_w; + + static struct option lop_u[] = { + { "loom", required_argument, NULL, c3__loom }, + { "lmdb-map-size", required_argument, NULL, 6 }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case 6: { // lmdb-map-size + if ( 1 != sscanf(optarg, "%" SCNuMAX, &u3_Host.ops_u.siz_i) ) { + exit(1); + } + break; + } + + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // argv[optind] is always "roll" + // + + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + u3_disk* log_u = _cw_load_pier(u3_Host.dir_c); + + u3_disk_roll(log_u, u3_Host.eve_d); + + u3_disk_exit(log_u); + u3m_stop(); +} + +/* _cw_vere(): download vere +*/ +static void +_cw_vere(c3_i argc, c3_c* argv[]) +{ + c3_c* pac_c = "live"; + c3_c* arc_c = 0; + c3_c* ver_c = 0; + c3_c* dir_c; + + c3_i ch_i, lid_i; + c3_w arg_w; + + static struct option lop_u[] = { + { "arch", required_argument, NULL, 'a' }, + { "pace", required_argument, NULL, 'p' }, + { "version", required_argument, NULL, 'v' }, + { NULL, 0, NULL, 0 } + }; + + while ( -1 != (ch_i=getopt_long(argc, argv, "a:p:v:", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case 'a': { + arc_c = strdup(optarg); + } break; + + case 'p': { + pac_c = strdup(optarg); + } break; + + case 'v': { + ver_c = strdup(optarg); + } break; + + case '?': { + exit(1); + } break; + } + } + + // argv[optind] is always "vere"/"fetch-vere" + // + + if ( optind + 1 < argc ) { + dir_c = argv[optind + 1]; + optind++; + } + else { + fprintf(stderr, "invalid command, output directory required\r\n"); + exit(1); + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + if ( !arc_c ) { +#ifdef U3_OS_ARCH + arc_c = U3_OS_ARCH; +#else + fprintf(stderr, "unknown architecture, --arch required\r\n"); + exit(1); +#endif + } + + // Initialize OpenSSL for client and server + // + { + SSL_library_init(); + SSL_load_error_strings(); + } + + // initialize curl + // + if ( 0 != curl_global_init(CURL_GLOBAL_DEFAULT) ) { + u3l_log("boot: curl initialization failed"); + exit(1); + } + + _setup_cert_store(); + u3K.ssl_curl_f = _setup_ssl_curl; + u3K.ssl_x509_f = _setup_ssl_x509; + + if ( !ver_c ) { + switch ( u3_king_next(pac_c, &ver_c) ) { + case -2: { + fprintf(stderr, "vere: unable to check for next version\n"); + exit(1); + } break; + + case -1: { + fprintf(stderr, "you're already running it!\n"); + exit(0); + } break; + + case 0: { + fprintf(stderr, "vere: next (%%%s): %s\n", pac_c, ver_c); + } break; + + default: u3_assert(0); + } + } + + + if ( u3_king_vere(pac_c, ver_c, arc_c, dir_c, 0) ) { + u3l_log("vere: download failed"); + exit(1); + } + + u3l_log("vere: download succeeded"); +} + +/* _cw_vile(): generate/print keyfile +*/ +static void +_cw_vile(c3_i argc, c3_c* argv[]) +{ + c3_i ch_i, lid_i; + c3_w arg_w; + + static struct option lop_u[] = { + { "loom", required_argument, NULL, c3__loom }, + { "no-demand", no_argument, NULL, 6 }, + { "swap", no_argument, NULL, 7 }, + { "swap-to", required_argument, NULL, 8 }, + { NULL, 0, NULL, 0 } + }; + + u3_Host.dir_c = _main_pier_run(argv[0]); + + while ( -1 != (ch_i=getopt_long(argc, argv, "", lop_u, &lid_i)) ) { + switch ( ch_i ) { + case c3__loom: { + if (_main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y)) { + exit(1); + } + } break; + + case 6: { // no-demand + u3_Host.ops_u.map = c3n; + u3C.wag_w |= u3o_no_demand; + } break; + + case 7: { // swap + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + } break; + + case 8: { // swap-to + u3_Host.ops_u.eph = c3y; + u3C.wag_w |= u3o_swap; + u3C.eph_c = strdup(optarg); + break; + } + + case '?': { + fprintf(stderr, "invalid argument\r\n"); + exit(1); + } break; + } + } + + // argv[optind] is always "vile" + // + + if ( !u3_Host.dir_c ) { + if ( optind + 1 < argc ) { + u3_Host.dir_c = argv[optind + 1]; + } + else { + fprintf(stderr, "invalid command, pier required\r\n"); + exit(1); + } + + optind++; + } + + if ( optind + 1 != argc ) { + fprintf(stderr, "invalid command\r\n"); + exit(1); + } + + // NB: readonly + // + // XX load log and check if snapshot is stale? + // + c3_d eve_d = u3m_boot(u3_Host.dir_c, (size_t)1 << u3_Host.ops_u.lom_y); + u3_noun sam = u3nc(u3nc(u3_nul, u3_nul), + u3nc(c3n, u3nq(c3__once, 'j', c3__vile, u3_nul))); + u3_noun res = u3v_soft_peek(0, sam); + + + switch ( u3h(res) ) { + default: u3_assert(0); + + case c3n: { + fprintf(stderr, "vile: unable to retrieve key file\r\n"); + u3_pier_punt_goof("foo", u3k(u3t(res))); + } + case c3y: { + u3_noun dat, vil, out; + c3_c* out_c; + + if ( (u3_nul != u3h(u3t(res))) + || (c3n == u3r_pq(u3t(u3t(res)), c3__omen, 0, &dat)) + || (c3n == u3r_p(dat, c3__atom, &vil)) + || (c3n == u3a_is_atom(vil)) ) + { + fprintf(stderr, "vile: unable to extract key file\r\n"); + u3m_p("vil", res); + } + else { + out = u3dc("scot", c3__uw, u3k(vil)); + out_c = u3r_string(out); + puts(out_c); + c3_free(out_c); + u3z(out); + } + } + } + + u3z(res); +} + +/* _cw_boot(): initialize, await boot msg. +*/ +static void +_cw_boot(c3_i argc, c3_c* argv[]) +{ + c3_c* dir_c = 0; + + // extract option map and load runtime config + { + c3_i ch_i, lid_i; + + static struct option lop_u[] = { + { "temporary-cache-size", required_argument, NULL, 'c' }, + { "ephemeral-file", required_argument, NULL, 'e' }, + { "loom", required_argument, NULL, 'l' }, + { "persistent-cache-size", required_argument, NULL, 'p' }, + { "runtime-config", required_argument, NULL, 'r' }, + { "snap-dir", required_argument, NULL, 's' }, + { "toss", required_argument, NULL, 't' }, + { "lmdb-map-size", required_argument, NULL, 'z' }, + // + { NULL, 0, NULL, 0 }, + }; + + while ( -1 != (ch_i=getopt_long(argc, argv, + "c:e:k:l:p:r:s:t:z:", + lop_u, &lid_i) )) + { + switch ( ch_i ) { + case 'c': { // temporary-cache-size + sscanf(optarg, "%" SCNu32, &u3_Host.ops_u.hap_w); + break; + } + case 'e': { // ephemeral-file + u3C.eph_c = (strcmp(optarg, "0") == 0 ? 0 : strdup(optarg)); + break; + } + case 'l': { // loom + if ( _main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y) ) { + exit(1); + } + break; + } + case 'p': { // persistent-cache-size + sscanf(optarg, "%" SCNu32, &u3C.per_w); + break; + } + case 'r': { // runtime-config + sscanf(optarg, "%" SCNu32, &u3C.wag_w); + break; + } + case 's': { // snap-dir + dir_c = strdup(optarg); + break; + } + case 't': { // toss + if ( 1 != sscanf(optarg, "%" SCNu32, &u3C.tos_w) ) { + fprintf(stderr, "boot: toss: invalid number '%s'\r\n", optarg); + } + break; + } + case 'z': { // lmdb-map-size + if ( 1 != sscanf(optarg, "%" SCNuMAX, &u3_Host.ops_u.siz_i) ) { + fprintf(stderr, "boot: invalid lmdb-map-size: %s\r\n", optarg); + exit(1); + } + break; + } + // unknown opt + // + case '?': default: { + fprintf(stderr, "boot: unknown option: -%c %s\r\n", ch_i, optarg); + exit(1); + break; + } + } + } + } + uv_loop_t* lup_u = u3_Host.lup_u = uv_default_loop(); + + // XX use _cw_intr_win(han_c); + + _cw_init_io(lup_u); + + // make pier, configure i/o + // + u3_mars mar_u = { .dir_c = dir_c }; + { + u3_mars_make(&mar_u); + + // set up logging + // + u3C.stderr_log_f = _cw_io_send_stdr; + u3C.slog_f = _cw_io_send_slog; + + // set up stdio read/write callbacks + // + inn_u.ptr_v = &mar_u; + inn_u.pok_f = (u3_moor_poke)u3_mars_boot; + inn_u.bal_f = _cw_io_fail; + out_u.ptr_v = &mar_u; + out_u.bal_f = _cw_io_fail; + } + + // XX setup signals, ctrl-c and ctrl-z are busted + + // start reading + // + u3_newt_read(&inn_u); + uv_run(lup_u, UV_RUN_DEFAULT); + u3m_stop(); +} + +/* _cw_work(): resume and run; replay and start event processing +*/ +static void +_cw_work(c3_i argc, c3_c* argv[]) +{ + uv_loop_t* lup_u = u3_Host.lup_u = uv_default_loop(); + c3_c* dir_c = 0; + c3_d eve_d = 0; + + _cw_init_io(lup_u); + + // extract option map and load runtime config + { + c3_i ch_i, lid_i; + + static struct option lop_u[] = { + { "temporary-cache-size", required_argument, NULL, 'c' }, + { "ephemeral-file", required_argument, NULL, 'e' }, + { "loom", required_argument, NULL, 'l' }, + { "snap-time", required_argument, NULL, 'n' }, + { "persistent-cache-size", required_argument, NULL, 'p' }, + { "runtime-config", required_argument, NULL, 'r' }, + { "snap-dir", required_argument, NULL, 's' }, + { "toss", required_argument, NULL, 't' }, + { "play-until", required_argument, NULL, 'u' }, + { "win-intr-handle", required_argument, NULL, 'w' }, + { "lmdb-map-size", required_argument, NULL, 'z' }, + // + { NULL, 0, NULL, 0 }, + }; + + while ( -1 != (ch_i=getopt_long(argc, argv, + "c:e:k:l:n:p:r:s:t:u:w:z:", + lop_u, &lid_i) )) + { + switch ( ch_i ) { + case 'c': { // temporary-cache-size + sscanf(optarg, "%" SCNu32, &u3_Host.ops_u.hap_w); + break; + } + case 'e': { // ephemeral-file + u3C.eph_c = (strcmp(optarg, "0") == 0 ? 0 : strdup(optarg)); + break; + } + case 'l': { // loom + if ( _main_read_loom("loom", optarg, &u3_Host.ops_u.lom_y) ) { + exit(1); + } + break; + } + case 'n': { // snap-time + sscanf(optarg, "%" SCNu32, &u3_Host.ops_u.sap_w); + break; + } + case 'p': { // persistent-cache-size + sscanf(optarg, "%" SCNu32, &u3C.per_w); + break; + } + case 'r': { // runtime-config + sscanf(optarg, "%" SCNu32, &u3C.wag_w); + break; + } + case 's': { // snap-dir + dir_c = strdup(optarg); + break; + } + case 't': { // toss + if ( 1 != sscanf(optarg, "%" SCNu32, &u3C.tos_w) ) { + fprintf(stderr, "mars: toss: invalid number '%s'\r\n", optarg); + } + break; + } + case 'u': { // play-until + if ( 1 != sscanf(optarg, "%" PRIu64, &eve_d) ) { + fprintf(stderr, "mars: -n (--replay-to) invalid number '%s'\r\n", optarg); + } + break; + } + case 'w': { // win-intr-handle +#ifdef U3_OS_windows + _cw_intr_win(optarg); +#else + fprintf(stderr, "boot: -%c is for windows only\r\n", ch_i); + exit(1); +#endif + break; + } + case 'z': { // lmdb-map-size + if ( 1 != sscanf(optarg, "%" SCNuMAX, &u3_Host.ops_u.siz_i) ) { + fprintf(stderr, "boot: invalid lmdb-map-size: %s\r\n", optarg); + exit(1); + } + break; + } + // unknown opt + // + case '?': default: { + fprintf(stderr, "boot: unknown option: -%c %s\r\n", ch_i, optarg); + exit(1); + break; + } + } + } + } + + // setup mars + // + u3_mars mar_u = { .dir_c = dir_c, .inn_u = &inn_u, .out_u = &out_u }; + { + u3_mars_load(&mar_u, u3_dlod_last); + + // set up logging + // + u3C.stderr_log_f = _cw_io_send_stdr; + u3C.slog_f = _cw_io_send_slog; + + // replay if necessary + // + u3_mars_play(&mar_u, eve_d, 0); // XX sap_d from args? + u3_mars_work(&mar_u); + + // set up stdio read/write callbacks + // + inn_u.ptr_v = &mar_u; + inn_u.pok_f = (u3_moor_poke)u3_mars_kick; + inn_u.bal_f = _cw_io_fail; // XX cleanup + out_u.ptr_v = &mar_u; + out_u.bal_f = _cw_io_fail; // XX cleanup + } + + // start reading + // + u3_newt_read(&inn_u); + uv_run(lup_u, UV_RUN_DEFAULT); + u3m_stop(); +} + + +/* _cw_utils(): "worker" utilities and mars-process entrypoints. +*/ +static c3_i +_cw_utils(c3_i argc, c3_c* argv[]) +{ + // utility commands and positional arguments, by analogy + // + // $@ ~ :: usage + // $% [%cram dir=@t] :: jam state + // [%dock dir=@t] :: copy binary + // [?(%grab %mass) dir=@t] :: gc + // [%info dir=@t] :: print + // [%meld dir=@t] :: deduplicate + // [?(%next %upgrade) dir=@t] :: upgrade + // [%pack dir=@t] :: defragment + // [%play dir=@t] :: recompute + // [%prep dir=@t] :: prep upgrade + // [%queu dir=@t eve=@ud] :: cue state + // [?(%vere %fetch-vere) dir=@t] :: download vere + // [%vile dir=@t] :: extract keys + // :: :: ipc: + // XX update with missing subcommand arguments + // [%boot dir=@t key=@t wag=@t hap=@ud] :: boot + // [%work dir=@t key=@t wag=@t hap=@ud eve=@ud] :: run + // == :: + // + // NB: don't print to anything other than stderr; + // other streams may be used for ipc. + // + c3_m mot_m = 0; + + if ( 2 <= argc ) { + if ( 4 == strlen(argv[1]) ) { + c3_c* s = argv[1]; + mot_m = c3_s4(s[0], s[1], s[2], s[3]); + } + else if ( 0 == strcmp(argv[1], "upgrade") ) { + mot_m = c3__next; + } + else if ( 0 == strcmp(argv[1], "fetch-vere") ) { + mot_m = c3__vere; + } + } + + switch ( mot_m ) { + case c3__cram: _cw_cram(argc, argv); return 1; + case c3__dock: _cw_dock(argc, argv); return 1; + case c3__eval: _cw_eval(argc, argv); return 1; + + case c3__mass: + case c3__grab: _cw_grab(argc, argv); return 1; + + case c3__info: _cw_info(argc, argv); return 1; + case c3__meld: _cw_meld(argc, argv); return 1; + case c3__melt: _cw_melt(argc, argv); return 1; + case c3__next: _cw_next(argc, argv); return 2; // continue on + case c3__pack: _cw_pack(argc, argv); return 1; + case c3__play: _cw_play(argc, argv); return 1; + case c3__prep: _cw_prep(argc, argv); return 2; // continue on + case c3__queu: _cw_queu(argc, argv); return 1; + case c3__chop: _cw_chop(argc, argv); return 1; + case c3__roll: _cw_roll(argc, argv); return 1; + case c3__vere: _cw_vere(argc, argv); return 1; + case c3__vile: _cw_vile(argc, argv); return 1; + case c3__work: _cw_work(argc, argv); return 1; + case c3__boot: _cw_boot(argc, argv); return 1; + } + + return 0; +} + +c3_i +main(c3_i argc, + c3_c** argv) +{ + if ( argc <= 0 ) { + fprintf(stderr, "nice try, fbi\r\n"); + exit(1); + } + + _main_init(); + +#if defined(U3_OS_osx) + darwin_register_mach_exception_handler(); +#endif + + c3_c* bin_c = strdup(argv[0]); + + // parse for subcommands + // + switch ( _cw_utils(argc, argv) ) { + default: u3_assert(0); + + // no matching subcommand, parse arguments + // + case 0: { + if ( c3n == _main_getopt(argc, argv) ) { + u3_ve_usage(argc, argv); + return 1; + } + } break; + + // ran subcommand + case 1: { + return 0; + } + + // found subcommand, continue + // + case 2: break; + } + + _main_self_path(); + + if ( !u3_Host.wrk_c ) { + u3_Host.wrk_c = bin_c; + } + else { + c3_free(bin_c); + } + + if ( c3y == u3_Host.ops_u.dem ) { + // In daemon mode, run the urbit as a background process, but don't + // exit from the parent process until the ship is finished booting. + // + u3_daemon_init(); + } + + if ( c3y == u3_Host.ops_u.rep ) { + report(); + return 0; + } + + if ( c3y == u3_Host.ops_u.tex ) { + u3_Host.bot_f = _stop_on_boot_completed_cb; + } + +#if 0 + if ( 0 == getuid() ) { + chroot(u3_Host.dir_c); + u3_Host.dir_c = "/"; + } +#endif + + // Block profiling signal, which should be delivered to exactly one thread. + // + // XX review, may be unnecessary due to similar in u3m_init() + // +#ifndef U3_OS_windows +#if defined(U3_OS_PROF) + if ( _(u3_Host.ops_u.pro) ) { + sigset_t set; + + sigemptyset(&set); + sigaddset(&set, SIGPROF); + if ( 0 != pthread_sigmask(SIG_BLOCK, &set, NULL) ) { + u3l_log("boot: thread mask SIGPROF: %s", strerror(errno)); + exit(1); + } + } +#endif +#endif + // Handle SIGTSTP as if it was SIGTERM. + // + // Configured here using signal() so as to be immediately available. + // +#ifndef U3_OS_windows + signal(SIGTSTP, _stop_exit); +#endif + + printf("~\n"); + // printf("welcome.\n"); + printf("urbit %s\n", URBIT_VERSION); + printf("boot: home is %s\n", u3_Host.dir_c); + // printf("vere: hostname is %s\n", u3_Host.ops_u.nam_c); + + if ( c3y == u3_Host.ops_u.dem ) { + printf("boot: running as daemon\n"); + } + + // Instantiate process globals. + { + /* Boot the image and checkpoint. Set flags. + */ + { + /* Set pier directory. + */ + u3C.dir_c = u3_Host.dir_c; + + /* Logging that doesn't interfere with console output. + */ + u3C.stderr_log_f = u3_term_io_log; + + /* Set GC flag. + */ + if ( _(u3_Host.ops_u.gab) ) { + u3C.wag_w |= u3o_debug_ram; + } + + /* Set no-demand flag. + */ + if ( !_(u3_Host.ops_u.map) ) { + u3C.wag_w |= u3o_no_demand; + } + + /* Set profile flag. + */ + if ( _(u3_Host.ops_u.pro) ) { + u3C.wag_w |= u3o_debug_cpu; + } + + /* Set verbose flag. + */ + if ( _(u3_Host.ops_u.veb) ) { + u3C.wag_w |= u3o_verbose; + } + + /* Set quiet flag. + */ + if ( _(u3_Host.ops_u.qui) ) { + u3C.wag_w |= u3o_quiet; + } + + /* Set dry-run flag. + ** + ** XX also exit immediately? + */ + if ( _(u3_Host.ops_u.dry) ) { + u3C.wag_w |= u3o_dryrun; + } + + /* Set hashboard flag + */ + if ( _(u3_Host.ops_u.has) ) { + u3C.wag_w |= u3o_hashless; + } + + /* Set tracing flag + */ + if ( _(u3_Host.ops_u.tra) ) { + u3C.wag_w |= u3o_trace; + } + + /* Set swap flag + */ + if ( _(u3_Host.ops_u.eph) ) { + u3C.wag_w |= u3o_swap; + } + + /* Set toss flog + */ + if ( _(u3_Host.ops_u.tos) ) { + u3C.wag_w |= u3o_toss; + } + } + +#ifdef U3_OS_windows + // Initialize event used to transmit Ctrl-C to worker process + // + { + SECURITY_ATTRIBUTES sa = {sizeof(sa), NULL, TRUE}; + if ( NULL == (u3_Host.cev_u = CreateEvent(&sa, FALSE, FALSE, NULL)) ) { + u3l_log("boot: failed to create Ctrl-C event: %lu", GetLastError()); + exit(1); + } + } +#endif + + // starting u3m configures OpenSSL memory functions, so we must do it + // before any OpenSSL allocations + // + u3m_boot_lite((size_t)1 << u3_Host.ops_u.lut_y); + + // Initialize OpenSSL for client and server + // + { + SSL_library_init(); + SSL_load_error_strings(); + } + + // initialize curl + // + if ( 0 != curl_global_init(CURL_GLOBAL_DEFAULT) ) { + u3l_log("boot: curl initialization failed"); + exit(1); + } + + _setup_cert_store(); + u3K.ssl_curl_f = _setup_ssl_curl; + u3K.ssl_x509_f = _setup_ssl_x509; + + u3_king_commence(); + + // uninitialize curl + // + curl_global_cleanup(); + + // uninitialize OpenSSL + // + // see https://wiki.openssl.org/index.php/Library_Initialization + // + { + ENGINE_cleanup(); + CONF_modules_unload(1); + EVP_cleanup(); + CRYPTO_cleanup_all_ex_data(); + SSL_COMP_free_compression_methods(); + ERR_free_strings(); + } + } + + return 0; +} diff --git a/vere/pkg/vere/mars.c b/vere/pkg/vere/mars.c new file mode 100644 index 0000000..5f9eb68 --- /dev/null +++ b/vere/pkg/vere/mars.c @@ -0,0 +1,2043 @@ +/* worker/mars.c +** +** the main loop of a mars process. +*/ +#include "c3/c3.h" +#include "version.h" +#include "noun.h" +#include "pace.h" +#include "types.h" +#include "vere.h" +#include "ivory.h" +#include "ur/ur.h" +#include "db/lmdb.h" +#include +#include + +c3_c tac_c[256]; // tracing label + +/* +:: peek=[gang (each path $%([%once @tas @tas path] [%beam @tas beam]))] +:: ovum=ovum +:: +|$ [peek ovum] +|% ++$ task :: urth -> mars + $% [%live ?(%meld %pack) ~] :: XX rename + [%exit ~] + [%peek mil=@ peek] + [%poke mil=@ ovum] + [%sync %save ~] + == ++$ gift :: mars -> urth + $% [%live ~] + [%flog cord] + [%slog pri=@ tank] + [%peek p=(each (unit (cask)) goof)] + [%poke p=(each (list ovum) (list goof))] + [%ripe [pro=%2 kel=wynn] [who=@p fake=?] eve=@ mug=@] + [%sync eve=@ mug=@] + == +-- +*/ + +/* mars memory-threshold levels +*/ +enum { + _mars_mas_init = 0, // initial + _mars_mas_hit1 = 1, // past low threshold + _mars_mas_hit0 = 2 // have high threshold +}; + +/* mars post-op flags +*/ +enum { + _mars_fag_none = 0, // nothing to do + _mars_fag_hit1 = 1 << 0, // hit low threshold + _mars_fag_hit0 = 1 << 1, // hit high threshold + _mars_fag_mute = 1 << 2, // mutated kernel + _mars_fag_much = 1 << 3, // bytecode hack + _mars_fag_vega = 1 << 4, // kernel reset +}; + +/* _mars_quac: convert a quac to a noun. +*/ +u3_noun +_mars_quac(u3m_quac* mas_u) +{ + u3_noun list = u3_nul; + c3_w i_w = 0; + if ( mas_u->qua_u != NULL ) { + while ( mas_u->qua_u[i_w] != NULL ) { + list = u3nc(_mars_quac(mas_u->qua_u[i_w]), list); + i_w++; + } + } + list = u3kb_flop(list); + + u3_noun mas = u3nt(u3i_string(mas_u->nam_c), u3i_word(mas_u->siz_w), list); + + c3_free(mas_u->nam_c); + c3_free(mas_u->qua_u); + c3_free(mas_u); + + return mas; +} + +/* _mars_quacs: convert an array of quacs to a noun list. +*/ +u3_noun +_mars_quacs(u3m_quac** all_u) +{ + u3_noun list = u3_nul; + c3_w i_w = 0; + while ( all_u[i_w] != NULL ) { + list = u3nc(_mars_quac(all_u[i_w]), list); + i_w++; + } + c3_free(all_u); + return u3kb_flop(list); +} + +/* _mars_print_quacs: print an array of quacs. +*/ +void +_mars_print_quacs(FILE* fil_u, u3m_quac** all_u) +{ + fprintf(fil_u, "\r\n"); + c3_w i_w = 0; + while ( all_u[i_w] != NULL ) { + u3a_print_quac(fil_u, 0, all_u[i_w]); + i_w++; + } +} + +/* _mars_grab(): garbage collect, checking for profiling. +*/ +static u3_noun +_mars_grab(u3_noun sac, c3_o pri_o) +{ + if ( u3_nul == sac) { + if ( u3C.wag_w & (u3o_debug_ram | u3o_check_corrupt) ) { + u3m_grab(sac, u3_none); + } + return u3_nul; + } + else { + FILE* fil_u; + +#ifdef U3_MEMORY_LOG + u3_noun now; + + { + struct timeval tim_u; + gettimeofday(&tim_u, 0); + now = u3_time_in_tv(&tim_u); + } + + { + u3_noun wen = u3dc("scot", c3__da, now); + c3_c* wen_c = u3r_string(wen); + + c3_c nam_c[2048]; + snprintf(nam_c, 2048, "%s/.urb/put/mass", u3C.dir_c); + + struct stat st; + if ( -1 == stat(nam_c, &st) ) { + c3_mkdir(nam_c, 0700); + } + + c3_c man_c[2054]; + snprintf(man_c, 2053, "%s/%s-serf.txt", nam_c, wen_c); + + fil_u = c3_fopen(man_c, "w"); + fprintf(fil_u, "%s\r\n", wen_c); + + c3_free(wen_c); + u3z(wen); + } +#else + { + fil_u = stderr; + } +#endif + + u3_assert( u3R == &(u3H->rod_u) ); + + u3a_mark_init(); + + u3m_quac* pro_u = u3a_prof(fil_u, sac); + c3_w sac_w = u3a_mark_noun(sac); + + if ( NULL == pro_u ) { + fflush(fil_u); + u3z(sac); + return u3_nul; + } else { + u3m_quac** all_u = c3_malloc(sizeof(*all_u) * 11); + all_u[0] = pro_u; + + u3m_quac** var_u = u3m_mark(); + all_u[1] = var_u[0]; + all_u[2] = var_u[1]; + all_u[3] = var_u[2]; + all_u[4] = var_u[3]; + c3_free(var_u); + + c3_w tot_w = all_u[0]->siz_w + all_u[1]->siz_w + all_u[2]->siz_w + + all_u[3]->siz_w + all_u[4]->siz_w; + + all_u[5] = c3_calloc(sizeof(*all_u[5])); + all_u[5]->nam_c = strdup("space profile"); + all_u[5]->siz_w = sac_w * 4; + + tot_w += all_u[5]->siz_w; + + all_u[6] = c3_calloc(sizeof(*all_u[6])); + all_u[6]->nam_c = strdup("total marked"); + all_u[6]->siz_w = tot_w; + + all_u[7] = c3_calloc(sizeof(*all_u[7])); + all_u[7]->nam_c = strdup("free lists"); + all_u[7]->siz_w = u3a_idle(u3R) * 4; + + // XX sweep could be optional, gated on u3o_debug_ram or somesuch + // only u3a_mark_done() is required + all_u[8] = c3_calloc(sizeof(*all_u[8])); + all_u[8]->nam_c = strdup("sweep"); + all_u[8]->siz_w = u3a_sweep() * 4; + + all_u[9] = c3_calloc(sizeof(*all_u[9])); + all_u[9]->nam_c = strdup("loom"); + all_u[9]->siz_w = u3C.wor_i * 4; + + all_u[10] = NULL; + + if ( c3y == pri_o ) { + _mars_print_quacs(fil_u, all_u); + } + fflush(fil_u); + +#ifdef U3_MEMORY_LOG + { + fclose(fil_u); + } +#endif + + u3_noun mas = _mars_quacs(all_u); + u3z(sac); + + return mas; + } + } +} + +/* _mars_fact(): commit a fact and enqueue its effects. +*/ +static void +_mars_fact(u3_mars* mar_u, + u3_noun job, + u3_noun pro) +{ + { + u3_fact tac_u = { + .job = job, + .mug_l = mar_u->mug_l, + .eve_d = mar_u->dun_d + }; + + u3_disk_plan(mar_u->log_u, &tac_u); + u3z(job); + } + + { + u3_gift* gif_u = c3_malloc(sizeof(*gif_u)); + gif_u->nex_u = 0; + gif_u->sat_e = u3_gift_fact_e; + gif_u->eve_d = mar_u->dun_d; + + u3s_jam_xeno(pro, &gif_u->len_d, &gif_u->hun_y); + u3z(pro); + + if ( !mar_u->gif_u.ent_u ) { + u3_assert( !mar_u->gif_u.ext_u ); + mar_u->gif_u.ent_u = mar_u->gif_u.ext_u = gif_u; + } + else { + mar_u->gif_u.ent_u->nex_u = gif_u; + mar_u->gif_u.ent_u = gif_u; + } + } +} + +/* _mars_gift(): enqueue response message. +*/ +static void +_mars_gift(u3_mars* mar_u, u3_noun pro) +{ + u3_gift* gif_u = c3_malloc(sizeof(*gif_u)); + gif_u->nex_u = 0; + gif_u->sat_e = u3_gift_rest_e; + gif_u->ptr_v = 0; + + u3s_jam_xeno(pro, &gif_u->len_d, &gif_u->hun_y); + u3z(pro); + + if ( !mar_u->gif_u.ent_u ) { + u3_assert( !mar_u->gif_u.ext_u ); + mar_u->gif_u.ent_u = mar_u->gif_u.ext_u = gif_u; + } + else { + mar_u->gif_u.ent_u->nex_u = gif_u; + mar_u->gif_u.ent_u = gif_u; + } +} + +/* _mars_make_crud(): construct error-notification event. +*/ +static u3_noun +_mars_make_crud(u3_noun job, u3_noun dud) +{ + u3_noun now, ovo, new; + u3x_cell(job, &now, &ovo); + + new = u3nt(u3k(now), + u3nt(u3_blip, c3__arvo, u3_nul), + u3nt(c3__crud, dud, u3k(ovo))); + + u3z(job); + return new; +} + +/* _mars_curb(): check for memory threshold +*/ +static inline c3_t +_mars_curb(c3_w pre_w, c3_w pos_w, c3_w hes_w) +{ + return (pre_w > hes_w) && (pos_w <= hes_w); +} + +/* _mars_sure_feck(): event succeeded, send effects. +*/ +static u3_noun +_mars_sure_feck(u3_mars* mar_u, c3_w pre_w, u3_noun vir) +{ + // intercept |mass, observe |reset + // + { + u3_noun riv = vir; + c3_w i_w = 0; + + while ( u3_nul != riv ) { + u3_noun fec = u3t(u3h(riv)); + + // assumes a max of one %mass effect per event + // + if ( c3__mass == u3h(fec) ) { + // save a copy of the %mass data + // + mar_u->sac = u3k(u3t(fec)); + // replace the %mass data with ~ + // + // For efficient transmission to daemon. + // + riv = u3kb_weld(u3qb_scag(i_w, vir), + u3nc(u3nt(u3k(u3h(u3h(riv))), c3__mass, u3_nul), + u3qb_slag(1 + i_w, vir))); + u3z(vir); + vir = riv; + break; + } + + // reclaim memory from persistent caches on |reset + // + if ( c3__vega == u3h(fec) ) { + mar_u->fag_w |= _mars_fag_vega; + } + + riv = u3t(riv); + i_w++; + } + } + + // after a successful event, we check for memory pressure. + // + // if we've exceeded either of two thresholds, we reclaim + // from our persistent caches, and notify the daemon + // (via a "fake" effect) that arvo should trim state + // (trusting that the daemon will enqueue an appropriate event). + // For future flexibility, the urgency of the notification is represented + // by a *decreasing* number: 0 is maximally urgent, 1 less so, &c. + // + // high-priority: 2^22 contiguous words remaining (~8 MB) + // low-priority: 2^27 contiguous words remaining (~536 MB) + // XX maybe use 2^23 (~16 MB) and 2^26 (~268 MB? + // + // XX these thresholds should trigger notifications sent to the king + // instead of directly triggering these remedial actions. + // + { + u3_noun pri = u3_none; + c3_w pos_w = u3a_open(u3R); + + // if contiguous free space shrunk, check thresholds + // (and track state to avoid thrashing) + // + if ( pos_w < pre_w ) { + if ( (_mars_mas_hit0 != mar_u->mas_w) + && _mars_curb(pre_w, pos_w, 1 << 25) ) + { + mar_u->mas_w = _mars_mas_hit0; + mar_u->fag_w |= _mars_fag_hit0; + pri = 0; + } + else if ( (_mars_mas_init == mar_u->mas_w) + && _mars_curb(pre_w, pos_w, 1 << 27) ) + { + mar_u->mas_w = _mars_mas_hit1; + mar_u->fag_w |= _mars_fag_hit1; + pri = 1; + } + } + else if ( _mars_mas_init != mar_u->mas_w ) { + if ( ((1 << 26) + (1 << 27)) < pos_w ) { + mar_u->mas_w = _mars_mas_init; + } + else if ( (_mars_mas_hit0 == mar_u->mas_w) + && ((1 << 26) < pos_w) ) + { + mar_u->mas_w = _mars_mas_hit1; + } + } + + // reclaim memory from persistent caches periodically + // + // XX this is a hack to work two things + // - bytecode caches grow rapidly and can't be simply capped + // - we don't make very effective use of our free lists + // + if ( !(mar_u->dun_d % 1024ULL) ) { + mar_u->fag_w |= _mars_fag_much; + } + + // notify daemon of memory pressure via "fake" effect + // + if ( u3_none != pri ) { + u3_noun cad = u3nc(u3nt(u3_blip, c3__arvo, u3_nul), + u3nc(c3__trim, pri)); + vir = u3nc(cad, vir); + } + } + + return vir; +} + +/* _mars_peek(): dereference namespace. +*/ +static u3_noun +_mars_peek(c3_w mil_w, u3_noun sam) +{ + c3_t tac_t = !!( u3C.wag_w & u3o_trace ); + c3_c lab_c[2056]; + + // XX refactor tracing + // + if ( tac_t ) { + c3_c* foo_c = u3m_pretty(u3t(sam)); + + { + snprintf(lab_c, 2056, "peek %s", foo_c); + c3_free(foo_c); + } + + u3t_event_trace(lab_c, 'B'); + } + + u3_noun pro = u3v_soft_peek(mil_w, sam); + + if ( tac_t ) { + u3t_event_trace(lab_c, 'E'); + } + + return pro; +} + +/* _mars_poke(): attempt to compute an event. [*eve] is RETAINED. +*/ +static c3_o +_mars_poke(c3_w mil_w, u3_noun* eve, u3_noun* out) +{ + c3_t tac_t = !!( u3C.wag_w & u3o_trace ); + c3_c tag_c[9]; + c3_o ret_o; + + // XX refactor tracing, avoid allocation + // + if ( tac_t ) { + u3_noun wir = u3h(u3t(*eve)); + u3_noun tag = u3h(u3t(u3t(*eve))); + c3_c* wir_c = u3m_pretty_path(wir); + c3_w len_w; + + u3r_bytes(0, 8, (c3_y*)tag_c, tag); + tag_c[8] = 0; + + // ellipses for trunctation + // + if ( sizeof(tac_c) < + snprintf(tac_c, sizeof(tac_c), "poke %%%s on %s", tag_c, wir_c) ) + { + memset(tac_c + (sizeof(tac_c) - 4), '.', 3); + tac_c[255] = 0; + } + + u3t_event_trace(tac_c, 'b'); + c3_free(wir_c); + } + +#ifdef U3_EVENT_TIME_DEBUG + struct timeval b4; + gettimeofday(&b4, 0); + + { + u3_noun tag = u3h(u3t(u3t(*eve))); + u3r_bytes(0, 8, (c3_y*)tag_c, tag); + tag_c[8] = 0; + + if ( c3__belt != tag ) { + u3l_log("mars: (%" PRIu64 ") %%%s\r\n", u3A->eve_d + 1, tag_c); + } + } +#endif + + { + u3_noun pro; + + if ( c3y == (ret_o = u3v_poke_sure(mil_w, u3k(*eve), &pro)) ) { + *out = pro; + } + else if ( c3__evil == u3h(pro) ) { + *out = u3nc(pro, u3_nul); + } + else { + u3_noun dud = pro; + + *eve = _mars_make_crud(*eve, u3k(dud)); + + if ( c3y == (ret_o = u3v_poke_sure(mil_w, u3k(*eve), &pro)) ) { + *out = pro; + u3z(dud); + } + else { + *out = u3nt(dud, pro, u3_nul); + } + } + } + +#ifdef U3_EVENT_TIME_DEBUG + { + c3_w ms_w, clr_w; + struct timeval f2, d0; + gettimeofday(&f2, 0); + timersub(&f2, &b4, &d0); + + ms_w = (d0.tv_sec * 1000) + (d0.tv_usec / 1000); + clr_w = ms_w > 1000 ? 1 : ms_w < 100 ? 2 : 3; // red, green, yellow + + if ( clr_w != 2 ) { + u3l_log("\x1b[3%dm%%%s (%" PRIu64 ") %4d.%02dms\x1b[0m\n", + clr_w, tag_c, u3A->eve_d + 1, ms_w, + (int) (d0.tv_usec % 1000) / 10); + } + } +#endif + + if ( tac_t ) { + u3t_event_trace(tac_c, 'e'); + } + + return ret_o; +} + +/* _mars_work(): perform a task. +*/ +static c3_o +_mars_work(u3_mars* mar_u, u3_noun jar) +{ + u3_noun tag, dat, pro; + + if ( c3n == u3r_cell(jar, &tag, &dat) ) { + fprintf(stderr, "mars: fail a\r\n"); + u3z(jar); + return c3n; + } + + switch ( tag ) { + default: { + fprintf(stderr, "mars: fail b\r\n"); + u3z(jar); + return c3n; + } + + case c3__poke: { + u3_noun tim, job; + c3_w mil_w, pre_w; + + if ( (c3n == u3r_cell(dat, &tim, &job)) || + (c3n == u3r_safe_word(tim, &mil_w)) ) + { + fprintf(stderr, "mars: poke fail\r\n"); + u3z(jar); + return c3n; + } + + // XX better timestamps + // + { + u3_noun now; + struct timeval tim_u; + gettimeofday(&tim_u, 0); + + now = u3_time_in_tv(&tim_u); + job = u3nc(now, u3k(job)); + } + u3z(jar); + + pre_w = u3a_open(u3R); + mar_u->sen_d++; + + if ( c3y == _mars_poke(mil_w, &job, &pro) ) { + mar_u->dun_d = mar_u->sen_d; + mar_u->mug_l = u3r_mug(u3A->roc); + mar_u->fag_w |= _mars_fag_mute; + + pro = _mars_sure_feck(mar_u, pre_w, pro); + + _mars_fact(mar_u, job, u3nt(c3__poke, c3y, pro)); + } + else { + mar_u->sen_d = mar_u->dun_d; + u3z(job); + _mars_gift(mar_u, u3nt(c3__poke, c3n, pro)); + } + + u3_assert( mar_u->dun_d == u3A->eve_d ); + } break; + + case c3__peek: { + u3_noun tim, sam, pro; + c3_w mil_w; + + if ( (c3n == u3r_cell(dat, &tim, &sam)) || + (c3n == u3r_safe_word(tim, &mil_w)) ) + { + u3z(jar); + return c3n; + } + + u3k(sam); u3z(jar); + _mars_gift(mar_u, u3nc(c3__peek, _mars_peek(mil_w, sam))); + } break; + + case c3__sync: { + u3_noun nul; + + if ( (c3n == u3r_p(dat, c3__save, &nul)) + || (u3_nul != nul) ) + { + u3z(jar); + return c3n; + } + + mar_u->sat_e = u3_mars_save_e; + } break; + + // $% [%live ?(%meld %pack) ~] :: XX rename + // + case c3__live: { + u3_noun com, nul; + + if ( (c3n == u3r_cell(dat, &com, &nul)) || + (u3_nul != nul) ) + { + u3z(jar); + return c3n; + } + + switch ( com ) { + default: { + u3z(jar); + return c3n; + } + + case c3__pack: { + u3z(jar); + u3a_print_memory(stderr, "mars: pack: gained", u3m_pack()); + } break; + + case c3__meld: { + u3z(jar); + u3a_print_memory(stderr, "mars: meld: gained", u3_meld_all(stderr)); + } break; + } + + _mars_gift(mar_u, u3nc(c3__live, u3_nul)); + } break; + + // $: %quiz + // $% [%quac ~] + // [%quic ~] + // == == + case c3__quiz: { + switch ( u3h(dat) ) { + case c3__quac: { + u3z(jar); + u3_noun res = u3_mars_grab(c3n); + if ( u3_none == res ) { + return c3n; + } else { + _mars_gift(mar_u, u3nt(c3__quiz, c3__quac, res)); + } + } break; + + case c3__quic: { + u3z(jar); + c3_d pen_d = 4ULL * u3a_open(u3R); + c3_d dil_d = 4ULL * u3a_idle(u3R); + fprintf(stderr, "open: %" PRIu64 "\r\n", pen_d); + fprintf(stderr, "idle: %" PRIu64 "\r\n", dil_d); + + _mars_gift(mar_u, u3nt(c3__quiz, c3__quic, + u3nt(u3nc(c3__open, u3i_chub(pen_d)), + u3nc(c3__idle, u3i_chub(dil_d)), + u3_nul))); + } break; + + default: { + u3z(jar); + return c3n; + } + } + } break; + + case c3__exit: { + u3z(jar); + mar_u->sat_e = u3_mars_exit_e; + } break; + } + + return c3y; +} + +/* _mars_post(): update mars state post-task. +*/ +void +_mars_post(u3_mars* mar_u) +{ + if ( mar_u->fag_w & _mars_fag_hit1 ) { + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("mars: threshold 1: %u", u3h_wyt(u3R->cax.per_p)); + } + u3h_trim_to(u3R->cax.per_p, u3h_wyt(u3R->cax.per_p) / 2); + u3m_reclaim(); + } + + if ( mar_u->fag_w & _mars_fag_much ) { + u3m_reclaim(); + } + + if ( mar_u->fag_w & _mars_fag_vega ) { + u3h_trim_to(u3R->cax.per_p, u3h_wyt(u3R->cax.per_p) / 2); + u3m_reclaim(); + } + + // XX this runs on replay too, |mass s/b elsewhere + // + if ( mar_u->fag_w & _mars_fag_mute ) { + u3z(_mars_grab(mar_u->sac, c3y)); + mar_u->sac = u3_nul; + } + + if ( mar_u->fag_w & _mars_fag_hit0 ) { + if ( u3C.wag_w & u3o_verbose ) { + u3l_log("mars: threshold 0: per_p %u", u3h_wyt(u3R->cax.per_p)); + } + u3h_free(u3R->cax.per_p); + u3R->cax.per_p = u3h_new_cache(u3C.per_w); + u3a_print_memory(stderr, "mars: pack: gained", u3m_pack()); + u3l_log(""); + } + + if ( u3C.wag_w & u3o_toss ) { + u3m_toss(); + } + + mar_u->fag_w = _mars_fag_none; +} + +/* _mars_damp_file(): write sampling-profiler output. +*/ +static void +_mars_damp_file(void) +{ + if ( u3C.wag_w & u3o_debug_cpu ) { + FILE* fil_u; + u3_noun now; + + { + struct timeval tim_u; + gettimeofday(&tim_u, 0); + now = u3_time_in_tv(&tim_u); + } + + { + u3_noun wen = u3dc("scot", c3__da, now); + c3_c* wen_c = u3r_string(wen); + + c3_c nam_c[2048]; + snprintf(nam_c, 2048, "%s/.urb/put/profile", u3C.dir_c); + + struct stat st; + if ( -1 == stat(nam_c, &st) ) { + c3_mkdir(nam_c, 0700); + } + + c3_c man_c[2054]; + snprintf(man_c, 2053, "%s/%s.txt", nam_c, wen_c); + + fil_u = c3_fopen(man_c, "w"); + + c3_free(wen_c); + u3z(wen); + } + + u3t_damp(fil_u); + + { + fclose(fil_u); + } + } +} + +/* _mars_flush(): send pending gifts. +*/ +static void +_mars_flush(u3_mars* mar_u) +{ +top: + { + u3_gift* gif_u = mar_u->gif_u.ext_u; + + // XX gather i/o + // + while ( gif_u + && ( (u3_gift_rest_e == gif_u->sat_e) + || (gif_u->eve_d <= mar_u->log_u->dun_d)) ) + { + u3_newt_send(mar_u->out_u, gif_u->len_d, gif_u->hun_y); + + mar_u->gif_u.ext_u = gif_u->nex_u; + c3_free(gif_u); + gif_u = mar_u->gif_u.ext_u; + } + + if ( !mar_u->gif_u.ext_u ) { + mar_u->gif_u.ent_u = 0; + } + } + + if ( (u3_mars_work_e != mar_u->sat_e) + && (mar_u->log_u->dun_d == mar_u->dun_d) ) + { + if ( u3_mars_save_e == mar_u->sat_e ) { + u3m_save(); + mar_u->sav_u.eve_d = mar_u->dun_d; + _mars_gift(mar_u, + u3nt(c3__sync, u3i_chub(mar_u->dun_d), mar_u->mug_l)); + mar_u->sat_e = u3_mars_work_e; + goto top; + } + else if ( u3_mars_exit_e == mar_u->sat_e ) { + u3m_save(); + u3_disk_exit(mar_u->log_u); + u3s_cue_xeno_done(mar_u->sil_u); + u3t_trace_close(); + _mars_damp_file(); + + // XX dispose [mar_u], exit cb ? + // + exit(0); + } + } +} + +/* _mars_step_trace(): initialize or rotate trace file. +*/ +static void +_mars_step_trace(const c3_c* dir_c) +{ + if ( u3C.wag_w & u3o_trace ) { + c3_w trace_cnt_w = u3t_trace_cnt(); + if ( trace_cnt_w == 0 && u3t_file_cnt() == 0 ) { + u3t_trace_open(dir_c); + } + else if ( trace_cnt_w >= 100000 ) { + u3t_trace_close(); + u3t_trace_open(dir_c); + } + } +} + +/* u3_mars_kick(): maybe perform a task. +*/ +c3_o +u3_mars_kick(u3_mars* mar_u, c3_d len_d, c3_y* hun_y) +{ + c3_o ret_o = c3n; + + _mars_step_trace(mar_u->dir_c); + + // XX optimize for stateless tasks w/ peek-next + // + if ( u3_mars_work_e == mar_u->sat_e ) { + u3_weak jar = u3s_cue_xeno_with(mar_u->sil_u, len_d, hun_y); + + // parse errors are fatal + // + if ( (u3_none == jar) + || (c3n == _mars_work(mar_u, jar)) ) + { + fprintf(stderr, "mars: bad\r\n"); + // XX error cb? + // + exit(1); + } + + _mars_post(mar_u); + + ret_o = c3y; + } + + _mars_flush(mar_u); + + return ret_o; +} + +/* _mars_timer_cb(): mars timer callback. +*/ +static void +_mars_timer_cb(uv_timer_t* tim_u) +{ + u3_mars* mar_u = tim_u->data; + + if ( mar_u->dun_d > mar_u->sav_u.eve_d ) { + mar_u->sat_e = u3_mars_save_e; + } + + _mars_flush(mar_u); +} + +/* _mars_disk_cb(): mars commit result callback. +*/ +static void +_mars_disk_cb(void* ptr_v, c3_d eve_d, c3_o ret_o) +{ + u3_mars* mar_u = ptr_v; + + if ( c3n == ret_o ) { + // XX better + // + fprintf(stderr, "mars: commit fail\r\n"); + exit(1); + } + + _mars_flush(mar_u); +} + +/* _mars_poke_play(): replay an event. +*/ +static u3_weak +_mars_poke_play(u3_mars* mar_u, const u3_fact* tac_u) +{ + u3_noun gon = u3m_soft(0, u3v_poke, tac_u->job); + u3_noun tag, dat; + u3x_cell(gon, &tag, &dat); + + // event failed, produce trace + // + if ( u3_blip != tag ) { + return gon; + } + + // event succeeded, check mug + // + { + u3_noun cor = u3t(dat); + c3_l mug_l; + + if ( tac_u->mug_l && (tac_u->mug_l != (mug_l = u3r_mug(cor))) ) { + fprintf(stderr, "play (%" PRIu64 "): mug mismatch " + "expected %08x, actual %08x\r\n", + tac_u->eve_d, tac_u->mug_l, mug_l); + + if ( !(u3C.wag_w & u3o_soft_mugs) ) { + u3z(gon); + return u3nc(c3__awry, u3_nul); + } + } + + u3z(u3A->roc); + u3A->roc = u3k(cor); + u3A->eve_d++; + } + + u3z(gon); + return u3_none; +} + +/* _mars_show_time(): print date, truncated to seconds. +*/ +static u3_noun +_mars_show_time(u3_noun wen) +{ + return u3dc("scot", c3__da, u3kc_lsh(6, 1, u3kc_rsh(6, 1, wen))); +} + +typedef enum { + _play_yes_e, // success + _play_mem_e, // %meme + _play_int_e, // %intr + _play_log_e, // event log fail + _play_mug_e, // mug mismatch + _play_bad_e // total failure +} _mars_play_e; + +/* _mars_play_batch(): replay a batch of events, return status and batch date. +*/ +static _mars_play_e +_mars_play_batch(u3_mars* mar_u, + c3_o mug_o, + c3_w bat_w, + c3_c** wen_c) +{ + u3_disk* log_u = mar_u->log_u; + u3_disk_walk* wok_u = u3_disk_walk_init(log_u, mar_u->dun_d + 1, bat_w); + u3_fact tac_u; + u3_noun dud; + u3_weak wen = u3_none; + + if ( !wok_u ) { + fprintf(stderr, "play: failed to open event log iterator\r\n"); + return _play_log_e; + } + + while ( c3y == u3_disk_walk_live(wok_u) ) { + if ( c3n == u3_disk_walk_step(wok_u, &tac_u) ) { + u3_disk_walk_done(wok_u); + return _play_log_e; + } + + u3_assert( ++mar_u->sen_d == tac_u.eve_d ); + + if ( u3_none == wen ) { + wen = _mars_show_time(u3k(u3h(tac_u.job))); + } + + if ( u3_none != (dud = _mars_poke_play(mar_u, &tac_u)) ) { + c3_m mot_m; + + mar_u->sen_d = mar_u->dun_d; + u3_disk_walk_done(wok_u); + + u3_assert( c3y == u3r_safe_word(u3h(dud), &mot_m) ); + + switch ( mot_m ) { + case c3__meme: { + fprintf(stderr, "play (%" PRIu64 "): %%meme\r\n", tac_u.eve_d); + u3z(dud); u3z(wen); + return _play_mem_e; + } + + case c3__intr: { + fprintf(stderr, "play (%" PRIu64 "): %%intr\r\n", tac_u.eve_d); + u3z(dud); u3z(wen); + return _play_int_e; + } + + case c3__awry: { + fprintf(stderr, "play (%" PRIu64 "): %%awry\r\n", tac_u.eve_d); + u3z(dud); u3z(wen); + return _play_mug_e; + } + + default: { + fprintf(stderr, "play (%" PRIu64 "): failed\r\n", tac_u.eve_d); + u3_pier_punt_goof("play", dud); + u3z(wen); + // XX say something uplifting + // + return _play_bad_e; + } + } + } + + mar_u->dun_d = mar_u->sen_d; + } + + u3_disk_walk_done(wok_u); + + *wen_c = u3r_string(wen); + u3z(wen); + return _play_yes_e; +} + +static c3_o +_mars_do_boot(u3_disk* log_u, c3_d eve_d, u3_noun cax) +{ + u3_weak eve; + c3_l mug_l; + + // hack to recover structural sharing + // + u3m_hate(1 << 18); + + // XX this function should only ever be called in epoch 0 + // XX read_list reads *up-to* eve_d, should be exact + // + if ( u3_none == (eve = u3_disk_read_list(log_u, 1, eve_d, &mug_l)) ) { + fprintf(stderr, "boot: read failed\r\n"); + u3m_love(u3_nul); + return c3n; + } + + // hack to recover structural sharing + // + u3_noun xev = u3m_love(u3ke_cue(u3ke_jam(u3nc(cax, eve)))); + u3z(cax); + u3x_cell(xev, &cax, &eve); + u3k(eve); u3k(cax); + u3z(xev); + xev = cax; + + // prime memo cache + // + while ( u3_nul != cax ) { + u3z_save_m(u3z_memo_keep, 144 + c3__nock, u3h(u3h(cax)), + u3t(u3h(cax))); + cax = u3t(cax); + } + u3z(xev); + + // install an ivory pill to support stack traces + // + // XX support -J + // + // { + // c3_d len_d = u3_Ivory_pill_len; + // c3_y* byt_y = u3_Ivory_pill; + // u3_cue_xeno* sil_u = u3s_cue_xeno_init_with(ur_fib27, ur_fib28); + // u3_weak pil; + + // if ( u3_none == (pil = u3s_cue_xeno_with(sil_u, len_d, byt_y)) ) { + // u3l_log("lite: unable to cue ivory pill"); + // exit(1); + // } + + // u3s_cue_xeno_done(sil_u); + + // if ( c3n == u3v_boot_lite(pil)) { + // u3l_log("lite: boot failed"); + // exit(1); + // } + // } + + u3l_log("--------------- bootstrap starting ----------------"); + + u3l_log("boot: 1-%u", u3qb_lent(eve)); + + // XX check mug if available + // + if ( c3n == u3v_boot(eve) ) { + return c3n; + } + + u3l_log("--------------- bootstrap complete ----------------"); + return c3y; +} + +/* _mars_sign_init(): initialize daemon signal handlers. +*/ +static void +_mars_sign_init(u3_mars* mar_u) +{ + // handle SIGINFO (if available) + // +#ifdef SIGINFO + { + u3_usig* sig_u; + + sig_u = c3_malloc(sizeof(u3_usig)); + uv_signal_init(u3L, &sig_u->sil_u); + + sig_u->sil_u.data = mar_u; + + sig_u->num_i = SIGINFO; + sig_u->nex_u = u3_Host.sig_u; + u3_Host.sig_u = sig_u; + } +#endif + + // handle SIGUSR1 (fallback for SIGINFO) + // + { + u3_usig* sig_u; + + sig_u = c3_malloc(sizeof(u3_usig)); + uv_signal_init(u3L, &sig_u->sil_u); + + sig_u->sil_u.data = mar_u; + + sig_u->num_i = SIGUSR1; + sig_u->nex_u = u3_Host.sig_u; + u3_Host.sig_u = sig_u; + } +} + +/* _mars_sign_cb: signal callback. +*/ +static void +_mars_sign_cb(uv_signal_t* sil_u, c3_i num_i) +{ + u3_mars* mar_u = sil_u->data; + + switch ( num_i ) { + default: { + u3l_log("\r\nmars: mysterious signal %d\r\n", num_i); + } break; + + // fallthru if defined + // +#ifdef SIGINFO + case SIGINFO: +#endif + case SIGUSR1: { + // XX add u3_mars_slog() + // + u3_disk_slog(mar_u->log_u); + } break; + } +} + +/* _mars_sign_move(): enable daemon signal handlers +*/ +static void +_mars_sign_move(void) +{ + u3_usig* sig_u; + + for ( sig_u = u3_Host.sig_u; sig_u; sig_u = sig_u->nex_u ) { + uv_signal_start(&sig_u->sil_u, _mars_sign_cb, sig_u->num_i); + } +} + +/* _mars_sign_hold(): disable daemon signal handlers +*/ +static void +_mars_sign_hold(void) +{ + u3_usig* sig_u; + + for ( sig_u = u3_Host.sig_u; sig_u; sig_u = sig_u->nex_u ) { + uv_signal_stop(&sig_u->sil_u); + } +} + +/* _mars_sign_close(): dispose daemon signal handlers +*/ +static void +_mars_sign_close(void) +{ + u3_usig* sig_u; + + for ( sig_u = u3_Host.sig_u; sig_u; sig_u = sig_u->nex_u ) { + uv_close((uv_handle_t*)&sig_u->sil_u, (uv_close_cb)free); + } +} + +/* u3_mars_play(): replay up to [eve_d], snapshot every [sap_d]. +*/ +c3_d +u3_mars_play(u3_mars* mar_u, c3_d eve_d, c3_d sap_d) +{ + u3_disk* log_u = mar_u->log_u; + c3_d pay_d = 0; + + if ( !eve_d ) { + eve_d = log_u->dun_d; + } + else if ( eve_d <= mar_u->dun_d ) { + u3l_log("mars: already computed %" PRIu64 "", eve_d); + u3l_log(" state=%" PRIu64 ", log=%" PRIu64 "", + mar_u->dun_d, log_u->dun_d); + return pay_d; + } + else { + eve_d = c3_min(eve_d, log_u->dun_d); + } + + if ( mar_u->dun_d == log_u->dun_d ) { + return pay_d; + } + + pay_d = eve_d - mar_u->dun_d; + + if ( !mar_u->dun_d ) { + u3_meta met_u; + + if ( c3n == u3_disk_read_meta(log_u->mdb_u, &met_u) ) { + fprintf(stderr, "mars: disk read meta fail\r\n"); + // XX exit code, cb + // + exit(1); + } + + if ( c3n == _mars_do_boot(mar_u->log_u, met_u.lif_w, u3_nul) ) { + fprintf(stderr, "mars: boot fail\r\n"); + // XX exit code, cb + // + exit(1); + } + + mar_u->sen_d = mar_u->dun_d = met_u.lif_w; + u3m_save(); + } + + u3l_log("---------------- playback starting ----------------"); + + if ( (1ULL + eve_d) == log_u->dun_d ) { + u3l_log("play: event %" PRIu64 "", log_u->dun_d); + } + else if ( eve_d != log_u->dun_d ) { + u3l_log("play: events %" PRIu64 "-%" PRIu64 " of %" PRIu64 "", + (c3_d)(1ULL + mar_u->dun_d), + eve_d, + log_u->dun_d); + } + else { + u3l_log("play: events %" PRIu64 "-%" PRIu64 "", + (c3_d)(1ULL + mar_u->dun_d), + eve_d); + } + + { + c3_d pas_d = mar_u->dun_d; // last snapshot + c3_d mem_d = 0; // last event to meme + c3_w try_w = 0; // [mem_d] retry count + c3_c* wen_c; + + while ( mar_u->dun_d < eve_d ) { + _mars_step_trace(mar_u->dir_c); + + // XX get batch from args + // + switch ( _mars_play_batch(mar_u, c3y, 1024, &wen_c) ) { + case _play_yes_e: { + c3_c* now_c; + + { + u3_noun now; + struct timeval tim_u; + gettimeofday(&tim_u, 0); + + now = _mars_show_time(u3_time_in_tv(&tim_u)); + now_c = u3r_string(now); + u3z(now); + } + + u3m_reclaim(); + + if ( sap_d && ((mar_u->dun_d - pas_d) >= sap_d) ) { + u3m_save(); + pas_d = mar_u->dun_d; + u3l_log("play (%" PRIu64 "): save (%s, now=%s)", + mar_u->dun_d, wen_c, now_c); + } + else { + u3l_log("play (%" PRIu64 "): done (%s, now=%s)", + mar_u->dun_d, wen_c, now_c); + } + + c3_free(now_c); + c3_free(wen_c); + } break; + + case _play_mem_e: { + if ( mem_d != mar_u->dun_d ) { + mem_d = mar_u->dun_d; + try_w = 0; + } + else if ( 3 == ++try_w ) { + fprintf(stderr, "play (%" PRIu64 "): failed, out of loom\r\n", + mar_u->dun_d + 1); + u3m_save(); + // XX check loom size, suggest --loom X + // XX exit code, cb + // + u3_disk_exit(log_u); + exit(1); + } + + // XX pack before meld? + // + if ( u3C.wag_w & u3o_auto_meld ) { + u3a_print_memory(stderr, "mars: meld: gained", u3_meld_all(stderr)); + } + else { + u3a_print_memory(stderr, "mars: pack: gained", u3m_pack()); + } + } break; + + case _play_int_e: { + fprintf(stderr, "play (%" PRIu64 "): interrupted\r\n", mar_u->dun_d + 1); + u3m_save(); + // XX exit code, cb + // + u3_disk_exit(log_u); + exit(1); + } break; + + // XX handle any specifically? + // + case _play_log_e: + case _play_mug_e: + case _play_bad_e: { + fprintf(stderr, "play (%" PRIu64 "): failed\r\n", mar_u->dun_d + 1); + u3m_save(); + // XX exit code, cb + // + u3_disk_exit(log_u); + exit(1); + } break; + } + } + } + + u3l_log("---------------- playback complete ----------------"); + u3m_save(); + + if ( (mar_u->dun_d == log_u->dun_d) + && !log_u->epo_d + && !(u3C.wag_w & u3o_yolo) ) + { + u3_disk_roll(mar_u->log_u, mar_u->dun_d); + } + + return pay_d; +} + +/* u3_mars_load(): load pier. +*/ +void +u3_mars_load(u3_mars* mar_u, u3_disk_load_e lod_e) +{ + // initialize persistence + // + if ( !(mar_u->log_u = u3_disk_load(mar_u->dir_c, lod_e)) ) { + fprintf(stderr, "mars: disk init fail\r\n"); + exit(1); // XX + } + + mar_u->sen_d = mar_u->dun_d = u3A->eve_d; + mar_u->mug_l = u3r_mug(u3A->roc); + + if ( c3n == u3_disk_read_meta(mar_u->log_u->mdb_u, &(mar_u->met_u)) ) { + fprintf(stderr, "mars: disk meta fail\r\n"); + u3_disk_exit(mar_u->log_u); + exit(1); // XX + } +} + +/* u3_mars_work(): init mars +*/ +void +u3_mars_work(u3_mars* mar_u) +{ + mar_u->sil_u = u3s_cue_xeno_init(); + + // start signal handlers + // + _mars_sign_init(mar_u); + _mars_sign_move(); + + // Initalize the spin stack + u3t_sstack_init(); + + // wire up signal controls + // + u3C.sign_hold_f = _mars_sign_hold; + u3C.sign_move_f = _mars_sign_move; + + // XX do something better + // + if ( mar_u->log_u->dun_d > mar_u->dun_d ) { + u3_disk_exit(mar_u->log_u); + c3_free(mar_u); + exit(0); + } + + // send ready status message + // + // XX version negotiation + // + { + c3_d len_d; + c3_y* hun_y; + u3_noun wyn = u3_nul; + u3_noun msg = u3nq(c3__ripe, + u3nc(2, wyn), + u3nc(u3i_chubs(2, mar_u->met_u.who_d), + mar_u->met_u.fak_o), + u3nc(u3i_chub(mar_u->dun_d), + mar_u->mug_l)); + + u3s_jam_xeno(msg, &len_d, &hun_y); + u3_newt_send(mar_u->out_u, len_d, hun_y); + u3z(msg); + } + + u3_disk_async(mar_u->log_u, mar_u, _mars_disk_cb); + + uv_timer_init(u3L, &(mar_u->sav_u.tim_u)); + uv_timer_start(&(mar_u->sav_u.tim_u), + _mars_timer_cb, + u3_Host.ops_u.sap_w * 1000, + u3_Host.ops_u.sap_w * 1000); + + mar_u->sav_u.eve_d = mar_u->dun_d; + mar_u->sav_u.tim_u.data = mar_u; +} + +#define VERE_NAME "vere" +#define VERE_ZUSE 409 +#define VERE_LULL 321 +#define VERE_ARVO 235 +#define VERE_HOON 136 +#define VERE_NOCK 4 + +/* _mars_wyrd_card(): construct %wyrd. +*/ +static u3_noun +_mars_wyrd_card(c3_m nam_m, c3_w ver_w, c3_l sev_l) +{ + // XX ghetto (scot %ta) + // + u3_noun ver = u3nq(c3__vere, u3i_string(U3_VERE_PACE), u3i_string("~." URBIT_VERSION), u3_nul); + u3_noun sen = u3i_string("0v1s.vu178"); + u3_noun kel; + + // special case versions requiring the full stack + // + if ( ((c3__zuse == nam_m) && (VERE_ZUSE == ver_w)) + || ((c3__lull == nam_m) && (VERE_LULL == ver_w)) + || ((c3__arvo == nam_m) && (VERE_ARVO == ver_w)) ) + { + kel = u3nl(u3nc(c3__zuse, VERE_ZUSE), + u3nc(c3__lull, VERE_LULL), + u3nc(c3__arvo, VERE_ARVO), + u3nc(c3__hoon, VERE_HOON), + u3nc(c3__nock, VERE_NOCK), + u3_none); + } + // XX speculative! + // + else { + kel = u3nc(nam_m, u3i_word(ver_w)); + } + + return u3nt(c3__wyrd, u3nc(sen, ver), kel); +} + +/* _mars_sift_pill(): extract boot formulas and module/userspace ova from pill +*/ +static c3_o +_mars_sift_pill(u3_noun pil, + u3_noun* bot, + u3_noun* mod, + u3_noun* use, + u3_noun* cax) +{ + u3_noun pil_p, pil_q; + *cax = u3_nul; + + if ( c3n == u3r_cell(pil, &pil_p, &pil_q) ) { + return c3n; + } + + { + // XX use faster cue + // + u3_noun pro = u3m_soft(0, u3ke_cue, u3k(pil_p)); + u3_noun mot, tag, dat; + + if ( (c3n == u3r_trel(pro, &mot, &tag, &dat)) + || (u3_blip != mot) ) + { + u3m_p("mot", u3h(pro)); + fprintf(stderr, "boot: failed: unable to parse pill\r\n"); + return c3n; + } + + if ( c3y == u3r_sing_c("ivory", tag) ) { + fprintf(stderr, "boot: failed: unable to boot from ivory pill\r\n"); + return c3n; + } + else if ( (c3__pill != tag) && (c3__cash != tag) ) { + if ( c3y == u3a_is_atom(tag) ) { + u3m_p("pill", tag); + } + fprintf(stderr, "boot: failed: unrecognized pill\r\n"); + return c3n; + } + + { + u3_noun typ; + c3_c* typ_c; + + if ( (c3__cash == tag) && (c3y == u3du(dat)) ) { + *cax = u3t(dat); + dat = u3h(dat); + } + + if ( c3n == u3r_qual(dat, &typ, bot, mod, use) ) { + fprintf(stderr, "boot: failed: unable to extract pill\r\n"); + return c3n; + } + + if ( c3y == u3a_is_atom(typ) ) { + c3_c* typ_c = u3r_string(typ); + fprintf(stderr, "boot: parsing %%%s pill\r\n", typ_c); + c3_free(typ_c); + } + } + + u3k(*bot); u3k(*mod); u3k(*use), u3k(*cax); + u3z(pro); + } + + // optionally replace filesystem in userspace + // + if ( u3_nul != pil_q ) { + c3_w len_w = 0; + u3_noun ova = *use; + u3_noun new = u3_nul; + u3_noun ovo, tag; + + while ( u3_nul != ova ) { + ovo = u3h(ova); + tag = u3h(u3t(ovo)); + + if ( (c3__into == tag) + || ( (c3__park == tag) + && (c3__base == u3h(u3t(u3t(ovo)))) ) ) + { + u3_assert( 0 == len_w ); + len_w++; + ovo = u3t(pil_q); + } + + new = u3nc(u3k(ovo), new); + ova = u3t(ova); + } + + u3_assert( 1 == len_w ); + + u3z(*use); + *use = u3kb_flop(new); + } + + u3z(pil); + + return c3y; +} + +/* _mars_boot_make(): construct boot sequence +*/ +static c3_o +_mars_boot_make(u3_boot_opts* inp_u, + u3_noun com, + u3_noun* ova, + u3_noun* xac, + u3_meta* met_u) +{ + // set the disk version + // + met_u->ver_w = U3D_VERLAT; + + u3_noun pil, ven, mor, who; + + // parse boot command + // + if ( c3n == u3r_trel(com, &pil, &ven, &mor) ) { + fprintf(stderr, "boot: invalid command\r\n"); + return c3n; + } + + // parse boot event + // + { + u3_noun tag, dat; + + if ( c3n == u3r_cell(ven, &tag, &dat) ) { + return c3n; + } + + switch ( tag ) { + default: { + fprintf(stderr, "boot: unknown boot event\r\n"); + u3m_p("tag", tag); + return c3n; + } + + case c3__fake: { + met_u->fak_o = c3y; + who = dat; + } break; + + case c3__dawn: { + met_u->fak_o = c3n; + who = u3h(u3t(u3h(dat))); + } break; + } + } + + // validate and extract identity + // + if ( (c3n == u3a_is_atom(who)) + || (1 < u3r_met(7, who)) ) + { + fprintf(stderr, "boot: invalid identity\r\n"); + u3m_p("who", who); + return c3n; + } + + u3r_chubs(0, 2, met_u->who_d, who); + + { + u3_noun bot, mod, use, cax; + + // parse pill + // + if ( c3n == _mars_sift_pill(u3k(pil), &bot, &mod, &use, &cax) ) { + return c3n; + } + + met_u->lif_w = u3qb_lent(bot); + + // break symmetry in the module sequence + // + // version negotation, verbose, identity, entropy + // + { + u3_noun cad, wir = u3nt(u3_blip, c3__arvo, u3_nul); + + cad = u3nc(c3__wack, u3i_words(16, inp_u->eny_w)); + mod = u3nc(u3nc(u3k(wir), cad), mod); + + cad = u3nc(c3__whom, u3k(who)); + mod = u3nc(u3nc(u3k(wir), cad), mod); + + cad = u3nt(c3__verb, u3_nul, !inp_u->veb_o); + mod = u3nc(u3nc(u3k(wir), cad), mod); + + cad = _mars_wyrd_card(inp_u->ver_u.nam_m, + inp_u->ver_u.ver_w, + inp_u->sev_l); + mod = u3nc(u3nc(wir, cad), mod); // transfer [wir] + } + + // prepend legacy boot event to the userspace sequence + // + // XX do something about this wire + // + { + u3_noun wir = u3nq(c3__d, c3__term, '1', u3_nul); + u3_noun cad = u3nt(c3__boot, inp_u->lit_o, u3k(ven)); + use = u3nc(u3nc(wir, cad), use); + } + + // add props before/after the userspace sequence + // + { + u3_noun pre = u3_nul; + u3_noun aft = u3_nul; + + while ( u3_nul != mor ) { + u3_noun mot = u3h(mor); + + switch ( u3h(mot) ) { + case c3__prop: { + u3_noun ter, met, ves; + + if ( c3n == u3r_trel(u3t(mot), &met, &ter, &ves) ) { + // XX fatal error? + // + u3m_p("invalid prop", u3t(mot)); + break; + } + + if ( c3__fore == ter ) { + u3m_p("prop: fore", met); + pre = u3kb_weld(pre, u3k(ves)); + } + else if ( c3__hind == ter ) { + u3m_p("prop: hind", met); + aft = u3kb_weld(aft, u3k(ves)); + } + else { + // XX fatal error? + // + u3m_p("unrecognized prop tier", ter); + } + } break; + + // XX fatal error? + // + default: u3m_p("unrecognized boot sequence enhancement", u3h(mot)); + } + + mor = u3t(mor); + } + + use = u3kb_weld(pre, u3kb_weld(use, aft)); + } + + // timestamp events, cons list + // + { + u3_noun now = u3_time_in_tv(&inp_u->tim_u); + u3_noun bit = u3qc_bex(48); // 1/2^16 seconds + u3_noun eve = u3kb_flop(bot); + + { + u3_noun lit = u3kb_weld(mod, use); + u3_noun i, t = lit; + + while ( u3_nul != t ) { + u3x_cell(t, &i, &t); + now = u3ka_add(now, u3k(bit)); + eve = u3nc(u3nc(u3k(now), u3k(i)), eve); + } + + u3z(lit); + } + + *ova = u3kb_flop(eve); + u3z(now); u3z(bit); + } + + // cache + // + { + u3_noun tmp = cax; + c3_o gud_o = c3y; + while ( u3_nul != tmp ) { + if ( (c3n == u3a_is_cell(tmp)) || + (c3n == u3a_is_cell(u3h(tmp))) || + (c3n == u3a_is_cell(u3h(u3h(tmp)))) ) + { + gud_o = c3n; + } + tmp = u3t(tmp); + } + + if ( c3n == gud_o ) { + u3l_log("mars: got bad cache"); + u3z(cax); + *xac = u3_nul; + } + else { + *xac = cax; + } + } + } + + u3z(com); + + return c3y; +} + +/* u3_mars_make(): construct a pier. +*/ +void +u3_mars_make(u3_mars* mar_u) +{ + // XX s/b unnecessary + u3_Host.ops_u.nuu = c3y; + + if ( c3n == u3_disk_make(mar_u->dir_c) ) { + fprintf(stderr, "boot: disk make fail\r\n"); + exit(1); + } + + // NB: initializes loom + // + if ( !(mar_u->log_u = u3_disk_load(mar_u->dir_c, u3_dlod_boot)) ) { + fprintf(stderr, "boot: disk init fail\r\n"); + exit(1); + } +} + +/* u3_mars_boot(): boot a ship. +* +* $= com +* $: pill=[p=@ q=(unit ovum)] +* $= vent +* $% [%fake p=ship] +* [%dawn p=dawn-event] +* == +* more=(list prop) +* == +* +*/ +c3_o +u3_mars_boot(u3_mars* mar_u, c3_d len_d, c3_y* hun_y) +{ + u3_disk* log_u = mar_u->log_u; + u3_boot_opts inp_u; + u3_meta met_u; + u3_noun com, ova, cax; + + inp_u.veb_o = __( u3C.wag_w & u3o_verbose ); + inp_u.lit_o = c3n; // unimplemented in arvo + + // XX source kelvin from args? + // + inp_u.ver_u.nam_m = c3__zuse; + inp_u.ver_u.ver_w = 409; + + gettimeofday(&inp_u.tim_u, 0); + c3_rand(inp_u.eny_w); + + { + u3_noun now = u3_time_in_tv(&inp_u.tim_u); + inp_u.sev_l = u3r_mug(now); + u3z(now); + } + + { + u3_weak jar = u3s_cue_xeno(len_d, hun_y); + if ( (u3_none == jar) + || (c3n == u3r_p(jar, c3__boot, &com)) ) + { + fprintf(stderr, "boot: parse fail\r\n"); + exit(1); + } + else { + u3k(com); + u3z(jar); + } + } + + if ( c3n == _mars_boot_make(&inp_u, com, &ova, &cax, &met_u) ) { + fprintf(stderr, "boot: preparation failed\r\n"); + exit(1); // XX cleanup + } + + if ( c3n == u3_disk_save_meta_meta(log_u->com_u->pax_c, &met_u) ) { + fprintf(stderr, "boot: failed to save top-level metadata\r\n"); + exit(1); // XX cleanup + } + + if ( c3n == u3_disk_save_meta(log_u->mdb_u, &met_u) ) { + exit(1); // XX cleanup + } + + u3_disk_plan_list(log_u, ova); + + if ( c3n == u3_disk_sync(log_u) ) { + exit(1); // XX cleanup + } + + _mars_step_trace(mar_u->dir_c); + + if ( c3n == _mars_do_boot(log_u, log_u->dun_d, cax) ) { + exit(1); // XX cleanup + } + + u3m_save(); + + // XX move to caller? close uv handles? + // + u3_disk_exit(log_u); + exit(0); + + return c3y; +} + +/* u3_mars_grab(): garbage collect. +*/ +u3_noun +u3_mars_grab(c3_o pri_o) +{ + u3_noun sac = u3_nul; + u3_noun res = u3_nul; + + u3_assert( u3R == &(u3H->rod_u) ); + + { + u3_noun sam, gon; + + { + u3_noun pax = u3nc(c3__whey, u3_nul); + u3_noun lyc = u3nc(u3_nul, u3_nul); + sam = u3nt(lyc, c3n, u3nq(c3__once, u3_blip, u3_blip, pax)); + } + + gon = u3m_soft(0, u3v_peek, sam); + + { + u3_noun tag, dat, val; + u3x_cell(gon, &tag, &dat); + + if ( (u3_blip == tag) + && (u3_nul != dat) + && (c3y == u3r_pq(u3t(dat), c3__omen, 0, &val)) + && (c3y == u3r_p(val, c3__mass, &sac)) ) + { + u3k(sac); + } + } + + u3z(gon); + } + + if ( u3_nul != sac ) { + res = _mars_grab(sac, pri_o); + } + else { + fprintf(stderr, "sac is empty\r\n"); + + u3a_mark_init(); + u3m_quac** var_u = u3m_mark(); + + c3_w tot_w = 0; + c3_w i_w = 0; + while ( var_u[i_w] != NULL ) { + tot_w += var_u[i_w]->siz_w; + u3a_quac_free(var_u[i_w]); + i_w++; + } + c3_free(var_u); + + u3a_print_memory(stderr, "total marked", tot_w / 4); + u3a_print_memory(stderr, "free lists", u3a_idle(u3R)); + // XX sweep could be optional, gated on u3o_debug_ram or somesuch + // only u3a_mark_done() is required + u3a_print_memory(stderr, "sweep", u3a_sweep()); + fprintf(stderr, "\r\n"); + } + + fflush(stderr); + + return res; +} diff --git a/vere/pkg/vere/mars.h b/vere/pkg/vere/mars.h new file mode 100644 index 0000000..b6720e1 --- /dev/null +++ b/vere/pkg/vere/mars.h @@ -0,0 +1,94 @@ +#ifndef U3_VERE_MARS_H +#define U3_VERE_MARS_H + +#include "types.h" +#include "vere.h" + + /** Data types. + **/ + /* u3_gift: mars pending reponse. + */ + typedef struct _u3_gift { + struct _u3_gift* nex_u; // next response + c3_d len_d; // length + c3_y* hun_y; // bytes + enum { // type + u3_gift_fact_e = 0, // effects + u3_gift_rest_e = 1 // any + } sat_e; // + union { // data + c3_d eve_d; // event number + void* ptr_v; // any + }; + } u3_gift; + + /* u3_mars: the urbit state machine. + */ + typedef struct _u3_mars { + c3_d key_d[4]; // disk key + c3_c* dir_c; // execution directory (pier) + c3_d sen_d; // last event requested + c3_d dun_d; // last event processed + c3_l mug_l; // hash of state + c3_w mas_w; // memory threshold state + c3_w fag_w; // flags + u3_noun sac; // space measurement + u3_disk* log_u; // event log + u3_meta met_u; // metadata + struct { // snapshot + uv_timer_t tim_u; // timer + c3_d eve_d; // last saved + } sav_u; // + u3_moat* inn_u; // input stream + u3_mojo* out_u; // output stream + u3_cue_xeno* sil_u; // cue handle + enum { // state + u3_mars_work_e = 0, // working + u3_mars_save_e = 1, // snapshotting + u3_mars_exit_e = 2 // exiting + } sat_e; // + struct { // response queue + u3_gift* ent_u; // entry + u3_gift* ext_u; // exit + } gif_u; // + void (*xit_f)(void); // exit callback + } u3_mars; + + /** Functions. + **/ + /* u3_mars_make(): construct a pier. + */ + void + u3_mars_make(u3_mars* mar_u); + + /* u3_mars_boot(): boot a new ship. + */ + c3_o + u3_mars_boot(u3_mars* mar_u, c3_d len_d, c3_y* hun_y); + + /* u3_mars_load(): load pier. + */ + void + u3_mars_load(u3_mars* mar_u, u3_disk_load_e lod_e); + + /* u3_mars_work(): init mars + */ + void + u3_mars_work(u3_mars* mar_u); + + /* u3_mars_kick(): try to send a task into mars. + */ + c3_o + u3_mars_kick(u3_mars* mar_u, c3_d len_d, c3_y* hun_y); + + /* u3_mars_grab(): garbage collect. + */ + u3_noun + u3_mars_grab(c3_o pri_o); + + /* u3_mars_play(): replay up to [eve_d], snapshot every [sap_d]. + */ + c3_d + u3_mars_play(u3_mars* mar_u, c3_d eve_d, c3_d sap_d); + +#endif /* ifndef U3_VERE_MARS_H */ diff --git a/vere/pkg/vere/mdns.c b/vere/pkg/vere/mdns.c new file mode 100644 index 0000000..6424360 --- /dev/null +++ b/vere/pkg/vere/mdns.c @@ -0,0 +1,236 @@ +/// @file + +#include "vere.h" +#include "mdns.h" +#include "dns_sd.h" + +typedef struct _mdns_payload { + mdns_cb* cb; + DNSServiceRef sref; + char who[58]; + bool fake; + uint16_t port; + uv_poll_t poll; + void* context; +} mdns_payload; + +static void close_cb(uv_handle_t* poll) { + mdns_payload* payload = (mdns_payload*)poll->data; + DNSServiceRefDeallocate(payload->sref); + c3_free(payload); +} + +static void getaddrinfo_cb(uv_getaddrinfo_t* req, int status, struct addrinfo* res) { + mdns_payload* payload = (mdns_payload*)req->data; + + if (status < 0) { + u3l_log("mdns: getaddrinfo error: %s", uv_strerror(status)); + } else { + struct sockaddr_in* addr = (struct sockaddr_in*)res->ai_addr; + payload->cb(payload->who, payload->fake, addr->sin_addr.s_addr, payload->port, payload->context); + } + + payload->poll.data = payload; + uv_close((uv_handle_t*)&payload->poll, close_cb); + c3_free(req); + uv_freeaddrinfo(res); +} + +static void resolve_cb(DNSServiceRef sref, + DNSServiceFlags f, + uint32_t iface, + DNSServiceErrorType err, + const char *name, + const char *host, + uint16_t port, + uint16_t tl, + const unsigned char *t, + void *context) +{ + mdns_payload* payload = (mdns_payload*)context; + + uv_poll_stop(&payload->poll); + + if (err != kDNSServiceErr_NoError) { + u3l_log("mdns: dns resolve error %d", err); + payload->poll.data = payload; + uv_close((uv_handle_t*)&payload->poll, close_cb); + return; + } + + payload->sref = sref; + payload->port = port; + + const char *start = name; + if (strncmp(name, "fake-", 4) == 0) { + payload->fake = 1; + start = name + 5; + } else { + payload->fake = 0; + } + + payload->who[0] = '~'; + for (int i = 0; start[i] != '\0' && start[i] != '.' && i < 58; ++i) + { + payload->who[i+1] = start[i]; + } + + struct addrinfo hints; + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_INET; // Request only IPv4 addresses + hints.ai_socktype = SOCK_STREAM; // TCP socket + + uv_getaddrinfo_t* req = (uv_getaddrinfo_t*)c3_calloc(sizeof(uv_getaddrinfo_t)); + req->data = (void*)payload; + + uv_loop_t* loop = uv_default_loop(); + + int error = uv_getaddrinfo(loop, req, getaddrinfo_cb, host, NULL, &hints); + + if (error < 0) { + u3l_log("mdns: getaddrinfo error: %s\n", uv_strerror(error)); + payload->poll.data = payload; + uv_close((uv_handle_t*)&payload->poll, close_cb); + c3_free(req); + } +} + +static void poll_cb(uv_poll_t* handle, int status, int events) { + DNSServiceRef sref = (DNSServiceRef) handle->data; + int err = DNSServiceProcessResult(sref); +} + +static void init_sref_poll(DNSServiceRef sref, mdns_payload* payload) { + int fd = DNSServiceRefSockFD(sref); + uv_loop_t* loop = uv_default_loop(); + payload->poll.data = (void*)sref; + uv_poll_init(loop, &payload->poll, fd); + uv_poll_start(&payload->poll, UV_READABLE, poll_cb); +} + +static void browse_cb(DNSServiceRef s, + DNSServiceFlags f, + uint32_t iface, + DNSServiceErrorType err, + const char* name, + const char* type, + const char* domain, + void* context) +{ + if (err != kDNSServiceErr_NoError) { + u3l_log("mdns: service browse error %i", err); + return; + } + + if (f & kDNSServiceFlagsAdd) { // Add + // we are leaking payload because we don't know when we are done + // browsing, luckily we only browse once + mdns_payload* payload = (mdns_payload*)context; + mdns_payload* payload_copy = c3_calloc(sizeof *payload_copy); + + // copy to prevent asynchronous thrashing of payload + memcpy(payload_copy, payload, sizeof(mdns_payload)); + + + DNSServiceErrorType err = + DNSServiceResolve(&payload_copy->sref, 0, iface, + name, type, domain, resolve_cb, + (void*)payload_copy); + + init_sref_poll(payload_copy->sref, payload_copy); + + if (err != kDNSServiceErr_NoError) { + u3l_log("mdns: dns service resolve error %i", err); + payload_copy->poll.data = payload_copy; + uv_close((uv_handle_t*)&payload_copy->poll, close_cb); + } + } +} + +static void register_close_cb(uv_handle_t* poll) { + // not freeing sref with DNSServiceRefDeallocate since that + // deregisters us from mdns + mdns_payload* payload = (mdns_payload*)poll->data; + c3_free(payload); +} + + +static void register_cb(DNSServiceRef sref, + DNSServiceFlags f, + DNSServiceErrorType err, + const char* name, + const char* type, + const char* domain, + void* context) +{ + mdns_payload* payload = (mdns_payload*)context; + + if (err != kDNSServiceErr_NoError) { + u3l_log("mdns: service register error %i", err); + } else { + u3l_log("mdns: %s registered on all interfaces", name); + } + uv_poll_stop(&payload->poll); + uv_close((uv_handle_t*)&payload->poll, register_close_cb); +} + +void mdns_init(uint16_t port, bool fake, char* our, mdns_cb* cb, void* context) +{ + #if defined(U3_OS_linux) + setenv("AVAHI_COMPAT_NOWARN", "1", 0); + setenv("DBUS_SYSTEM_BUS_ADDRESS", "unix:path=/var/run/dbus/system_bus_socket", 0); + # endif + + mdns_payload* register_payload = (mdns_payload*)c3_calloc(sizeof(mdns_payload)); + + DNSServiceRef sref; + DNSServiceErrorType err; + + char* domain; + char s[63] = {0}; + if (fake) { + strcat(s, "fake-"); + strcat(s, our + 1); // certain url parsers don't like the ~ + domain = s; + } else { + domain = our + 1; + } + + err = DNSServiceRegister(&sref, 0, 0, domain, "_ames._udp", + NULL, NULL, htons(port), 0, NULL, register_cb, (void*)register_payload); + + if (err != kDNSServiceErr_NoError) { + if (err == kDNSServiceErr_Unknown) { + #if defined(U3_OS_linux) + u3l_log("mdns: init failed, install avahi on this system for mdns support"); + #else + u3l_log("mdns: service register error %i", err); + # endif + } else { + u3l_log("mdns: service register error %i", err); + } + DNSServiceRefDeallocate(sref); + return; + } + + init_sref_poll(sref, register_payload); + + mdns_payload* browse_payload = (mdns_payload*)c3_calloc(sizeof(mdns_payload)); + + browse_payload->cb = cb; + browse_payload->context = context; + + DNSServiceErrorType dnserr; + DNSServiceRef sref2; + + dnserr = DNSServiceBrowse(&sref2, 0, 0, "_ames._udp", NULL, browse_cb, (void *)browse_payload); + + if (dnserr != kDNSServiceErr_NoError) { + u3l_log("mdns: service browse error %i", dnserr); + DNSServiceRefDeallocate(sref2); + return; + } + + init_sref_poll(sref2, browse_payload); + +} diff --git a/vere/pkg/vere/mdns.h b/vere/pkg/vere/mdns.h new file mode 100644 index 0000000..0c3ce40 --- /dev/null +++ b/vere/pkg/vere/mdns.h @@ -0,0 +1,6 @@ +#include "noun.h" +#include + +typedef void mdns_cb(c3_c* ship, bool fake, c3_w saddr, c3_s port, void* context); + +void mdns_init(uint16_t port, bool fake, char* our, mdns_cb* cb, void* context); diff --git a/vere/pkg/vere/melt.c b/vere/pkg/vere/melt.c new file mode 100644 index 0000000..01b9208 --- /dev/null +++ b/vere/pkg/vere/melt.c @@ -0,0 +1,211 @@ +#include "allocate.h" +#include "hashtable.h" +#include "jets.h" +#include "options.h" +#include "retrieve.h" +#include "vortex.h" + +static c3_d +_melt_hash(u3_noun foo) +{ + return u3r_mug(foo) * 11400714819323198485ULL; +} + +static c3_i +_melt_cmp_atoms(u3_atom a, u3_atom b) +{ + if ( a == b ) return 1; + + // XX assume(c3y == u3a_is_pug(a) && c3y == u3a_is_pug(b)) + u3a_atom *a_u = u3a_to_ptr(a); + u3a_atom *b_u = u3a_to_ptr(b); + + // XX assume( a_u->mug_w && b_u->mug_w ) + if ( a_u->mug_w != b_u->mug_w ) return 0; + + if ( a_u->len_w != b_u->len_w ) return 0; + + return 0 == memcmp(a_u->buf_w, b_u->buf_w, a_u->len_w << 2); +} + +#define NAME _coins +#define KEY_TY u3_atom +#define HASH_FN _melt_hash +#define CMPR_FN _melt_cmp_atoms +#include "verstable.h" + +static c3_i +_melt_cmp_cells(u3_cell a, u3_cell b) +{ + if ( a == b ) return 1; + + u3a_cell *a_u = u3a_to_ptr(a); + u3a_cell *b_u = u3a_to_ptr(b); + + // XX assume( a_u->mug_w && b_u->mug_w ) + if ( a_u->mug_w != b_u->mug_w ) return 0; + + c3_d *a_d = (c3_d*)&(a_u->hed); + c3_d *b_d = (c3_d*)&(b_u->hed); + + return *a_d == *b_d; +} + +#define NAME _cells +#define KEY_TY u3_cell +#define HASH_FN _melt_hash +#define CMPR_FN _melt_cmp_cells +#include "verstable.h" + +typedef struct { + _coins vat_u; + _cells cel_u; + c3_w len_w; + c3_w siz_w; + u3_noun *tac; +} _melt_ctx; + +static u3_noun +_melt_canon_next(_melt_ctx *can_u, u3_noun som) +{ + _coins_itr vit_u; + _cells_itr cit_u; + + while ( 1 ) { + if ( c3y == u3a_is_cat(som) ) return som; + + if ( c3n == u3a_is_cell(som) ) { + vit_u = vt_get_or_insert(&can_u->vat_u, som); + u3_assert( !vt_is_end(vit_u) ); // OOM + return vit_u.data->key; + } + + cit_u = vt_get(&can_u->cel_u, som); + if ( !vt_is_end(cit_u) ) return cit_u.data->key; + + if ( can_u->len_w == can_u->siz_w ) { + can_u->siz_w += c3_min(can_u->siz_w, 1024); + can_u->tac = c3_realloc(can_u->tac, sizeof(*can_u->tac) * can_u->siz_w); + } + + can_u->tac[can_u->len_w++] = u3a_to_off(som) >> u3a_vits; + som = u3h(som); + continue; + } +} + +static inline void __attribute__((always_inline)) +_melt_xchange(u3_noun new, u3_noun *som) +{ + u3_noun old = *som; + + if ( old != new ) { + *som = u3k(new); + u3z(old); + } +} + +static u3_noun +_melt_canon(_melt_ctx *can_u, u3_noun can) +{ + _cells_itr cit_u; + u3a_cell *cel_u; + u3_noun *top; + + can_u->len_w = 0; + + can = _melt_canon_next(can_u, can); + + while ( can_u->len_w ) { + top = &(can_u->tac[can_u->len_w - 1]); + + if ( !(*top >> 31) ) { // head frame + cel_u = u3to(u3a_cell, *top << u3a_vits); + _melt_xchange(can, &cel_u->hed); + *top |= 1U << 31; // tail frame + can = _melt_canon_next(can_u, cel_u->tel); + } + else { + *top &= (1U << 31) - 1; + *top <<= u3a_vits; + cel_u = u3to(u3a_cell, *top); + _melt_xchange(can, &cel_u->tel); + cit_u = vt_get_or_insert(&can_u->cel_u, u3a_to_pom(*top)); + u3_assert( !vt_is_end(cit_u) ); // OOM + can = cit_u.data->key; + + can_u->len_w--; + } + } + + return can; +} + +static void +_melt_canon_ptr(_melt_ctx *can_u, u3_noun *som) +{ + u3_noun can = _melt_canon(can_u, *som); + _melt_xchange(can, som); +} + +static void +_melt_walk_hamt(u3_noun kev, void* ptr_v) +{ + _melt_ctx *can_u = ptr_v; + (void)_melt_canon(can_u, kev); +} + +c3_w +u3_melt_all(FILE *fil_u) +{ + c3_w pre_w = u3a_idle(u3R); + _melt_ctx can_u = {0}; + + // Verify that we're on the main road. + // + u3_assert( &(u3H->rod_u) == u3R ); + + can_u.siz_w = 32; + can_u.tac = c3_malloc(sizeof(*can_u.tac) * can_u.siz_w); + + vt_init(&can_u.vat_u); + vt_init(&can_u.cel_u); + + u3m_reclaim(); + + _melt_canon_ptr(&can_u, &(u3A->roc)); + + u3h_walk_with(u3R->jed.cod_p, _melt_walk_hamt, &can_u); + u3h_walk_with(u3R->cax.per_p, _melt_walk_hamt, &can_u); + + u3j_boot(c3n); + u3j_ream(); + + if ( fil_u ) { + fprintf(fil_u, "atoms (%zu)", vt_size(&can_u.vat_u)); + u3a_print_memory(fil_u, "", (c3_w)vt_bucket_count(&can_u.vat_u)); + fprintf(fil_u, "cells (%zu)", vt_size(&can_u.cel_u)); + u3a_print_memory(fil_u, "", (c3_w)vt_bucket_count(&can_u.cel_u)); + } + + vt_cleanup(&can_u.vat_u); + vt_cleanup(&can_u.cel_u); + + c3_free(can_u.tac); + + return u3a_idle(u3R) - pre_w; +} + +c3_w +u3_meld_all(FILE *fil_u) +{ + c3_w pre_w = u3a_open(u3R); + + u3h_free(u3R->cax.per_p); + u3R->cax.per_p = u3h_new_cache(u3C.per_w); + + (void)u3_melt_all(fil_u); + (void)u3m_pack(); + + return u3a_open(u3R) - pre_w; +} diff --git a/vere/pkg/vere/newt.c b/vere/pkg/vere/newt.c new file mode 100644 index 0000000..40bfcff --- /dev/null +++ b/vere/pkg/vere/newt.c @@ -0,0 +1,416 @@ +/// @file + +/* +** implements noun blob messages with trivial framing. +** +** framing is 5 bytes long. first byte is a version tag; a +** character that should never otherwise appear in a message +** intended for urbit. right now we use 0x0. next 32 bits are +** little-endian byte count. after that is the indicated number +** of bytes, which are the +jam of a noun. +** +** the implementation is relatively inefficient and could +** lose a few copies, mallocs, etc. +*/ + +#include "vere.h" + +#include "noun.h" + +/* _newt_mess_head(): await next msg header. +*/ +static void +_newt_mess_head(u3_mess* mes_u) +{ + mes_u->sat_e = u3_mess_head; + mes_u->hed_u.has_y = 0; +} + +/* _newt_mess_tail(): await msg body. +*/ +static void +_newt_mess_tail(u3_mess* mes_u, c3_d len_d) +{ + u3_meat* met_u = c3_malloc(len_d + sizeof(*met_u)); + met_u->nex_u = 0; + met_u->len_d = len_d; + + mes_u->sat_e = u3_mess_tail; + mes_u->tal_u.has_d = 0; + mes_u->tal_u.met_u = met_u; +} + +/* _newt_meat_plan(): enqueue complete msg. +*/ +static void +_newt_meat_plan(u3_moat* mot_u, u3_meat* met_u) +{ + if ( mot_u->ent_u ) { + mot_u->ent_u->nex_u = met_u; + mot_u->ent_u = met_u; + } + else { + mot_u->ent_u = mot_u->ext_u = met_u; + } +} + +static void +_newt_meat_next_cb(uv_timer_t* tim_u); + +/* _newt_meat_poke(): deliver completed msg. +*/ +static void +_newt_meat_poke(u3_moat* mot_u) +{ + u3_meat* met_u = mot_u->ext_u; + + if ( met_u ) { + uv_timer_start(&mot_u->tim_u, _newt_meat_next_cb, 0, 0); + + if ( c3y == mot_u->pok_f(mot_u->ptr_v, met_u->len_d, met_u->hun_y) ) { + mot_u->ext_u = met_u->nex_u; + + if ( !mot_u->ext_u ) { + mot_u->ent_u = 0; + } + + c3_free(met_u); + } + } +} + +/* _newt_meat_next_cb(): handle next msg after timer. +*/ +static void +_newt_meat_next_cb(uv_timer_t* tim_u) +{ + u3_moat* mot_u = tim_u->data; + _newt_meat_poke(mot_u); +} + +/* u3_newt_decode(): decode a (partial) length-prefixed byte buffer +*/ +c3_o +u3_newt_decode(u3_moat* mot_u, c3_y* buf_y, c3_d len_d) +{ + u3_mess* mes_u = &mot_u->mes_u; + + while ( len_d ) { + switch( mes_u->sat_e ) { + + // read up to 5 bytes as needed + // + case u3_mess_head: { + c3_y* hed_y = mes_u->hed_u.hed_y; + c3_y has_y = mes_u->hed_u.has_y; + c3_y ned_y = sizeof(mes_u->hed_u.hed_y) - has_y; + c3_y cop_y = c3_min(ned_y, len_d); + + memcpy(hed_y + has_y, buf_y, cop_y); + buf_y += cop_y; + len_d -= cop_y; + ned_y -= cop_y; + + // moar bytes needed, yield + // + if ( ned_y ) { + mes_u->hed_u.has_y = (has_y + cop_y); + } + // length known, allocate message + // + else { + c3_d met_d = (((c3_d)hed_y[1]) << 0) + | (((c3_d)hed_y[2]) << 8) + | (((c3_d)hed_y[3]) << 16) + | (((c3_d)hed_y[4]) << 24); + + // check for version tag and nonzero length + // + if ( 0x0 != hed_y[0] || !met_d ) { + return c3n; + } + + // await body + // + _newt_mess_tail(mes_u, met_d); + } + } break; + + case u3_mess_tail: { + u3_meat* met_u = mes_u->tal_u.met_u; + c3_d has_d = mes_u->tal_u.has_d; + c3_d ned_d = met_u->len_d - has_d; + c3_d cop_d = c3_min(ned_d, len_d); + + memcpy(met_u->hun_y + has_d, buf_y, cop_d); + buf_y += cop_d; + len_d -= cop_d; + ned_d -= cop_d; + + // moar bytes needed, yield + // + if ( ned_d ) { + mes_u->tal_u.has_d = (has_d + cop_d); + } + // message completed, enqueue and await next header + // + else { + _newt_meat_plan(mot_u, met_u); + _newt_mess_head(mes_u); + } + } break; + } + } + return c3y; +} + +/* _newt_read_cb(): stream input callback. +*/ +static void +_newt_read_cb(uv_stream_t* str_u, + ssize_t len_i, + const uv_buf_t* buf_u) +{ + u3_moat* mot_u = (void *)str_u; + + if ( 0 > len_i ) { + c3_free(buf_u->base); + uv_read_stop((uv_stream_t*)&mot_u->pyp_u); + + if ( UV_EOF != len_i ) { + fprintf(stderr, "newt: read failed %s\r\n", uv_strerror(len_i)); + } + + mot_u->bal_f(mot_u->ptr_v, len_i, uv_strerror(len_i)); + } + // EAGAIN/EWOULDBLOCK + // + else if ( 0 == len_i ) { + c3_free(buf_u->base); + } + else { + if ( c3n == u3_newt_decode(mot_u, (c3_y*)buf_u->base, (c3_d)len_i) ) { + mot_u->bal_f(mot_u->ptr_v, -1, "newt-decode"); + } + + c3_free(buf_u->base); + _newt_meat_poke(mot_u); + } +} + +/* _newt_alloc(): libuv-style allocator. +*/ +static void +_newt_alloc(uv_handle_t* had_u, + size_t len_i, + uv_buf_t* buf_u) +{ + // XX pick an appropriate size + // + void* ptr_v = c3_malloc(len_i); + + *buf_u = uv_buf_init(ptr_v, len_i); +} + +/* u3_newt_read(): start stream reading. +*/ +void +u3_newt_read(u3_moat* mot_u) +{ + // zero-initialize completed msg queue + // + mot_u->ent_u = mot_u->ext_u = 0; + + // store pointer for libuv handle callback + // + mot_u->pyp_u.data = mot_u; + mot_u->tim_u.data = mot_u; + + // await next msg header + // + _newt_mess_head(&mot_u->mes_u); + + { + c3_i sas_i; + + if ( 0 != (sas_i = uv_read_start((uv_stream_t*)&mot_u->pyp_u, + _newt_alloc, + _newt_read_cb)) ) + { + fprintf(stderr, "newt: read failed %s\r\n", uv_strerror(sas_i)); + mot_u->bal_f(mot_u->ptr_v, sas_i, uv_strerror(sas_i)); + } + } +} + +/* _moat_stop_cb(): finalize stop/close input stream.. +*/ +static void +_moat_stop_cb(uv_handle_t* han_u) +{ + u3_moat* mot_u = han_u->data; + mot_u->bal_f(mot_u->ptr_v, -1, ""); +} + +/* u3_newt_moat_stop(); newt stop/close input stream. +*/ +void +u3_newt_moat_stop(u3_moat* mot_u, u3_moor_bail bal_f) +{ + mot_u->pyp_u.data = mot_u; + + if ( bal_f ) { + mot_u->bal_f = bal_f; + } + + uv_close((uv_handle_t*)&mot_u->pyp_u, _moat_stop_cb); + uv_close((uv_handle_t*)&mot_u->tim_u, 0); + + // dispose in-process message + // + if ( u3_mess_tail == mot_u->mes_u.sat_e ) { + c3_free(mot_u->mes_u.tal_u.met_u); + _newt_mess_head(&mot_u->mes_u); + } + + // dispose pending messages + { + u3_meat* met_u = mot_u->ext_u; + u3_meat* nex_u; + + while ( met_u ) { + nex_u = met_u->nex_u; + c3_free(met_u); + met_u = nex_u; + } + + mot_u->ent_u = mot_u->ext_u = 0; + } +} + +/* u3_newt_moat_info(): status info as $mass. +*/ +u3_noun +u3_newt_moat_info(u3_moat* mot_u) +{ + u3_meat* met_u = mot_u->ext_u; + c3_w len_w = 0; + + while ( met_u ) { + len_w++; + met_u = met_u->nex_u; + } + return u3_pier_mass( + c3__moat, + u3i_list(u3_pier_mase("pending-inbound", u3i_word(len_w)), + u3_none)); +} + +/* u3_newt_moat_slog(); print status info. +*/ +void +u3_newt_moat_slog(u3_moat* mot_u) +{ + u3_meat* met_u = mot_u->ext_u; + c3_w len_w = 0; + + while ( met_u ) { + len_w++; + met_u = met_u->nex_u; + } + + if ( len_w ) { + u3l_log(" newt: %u inbound ipc messages pending", len_w); + } +} + +/* n_req: write request for newt +*/ +typedef struct _n_req { + uv_write_t wri_u; + u3_mojo* moj_u; + c3_y* buf_y; + c3_y hed_y[5]; +} n_req; + +/* _newt_write_cb(): generic write callback. +*/ +static void +_newt_write_cb(uv_write_t* wri_u, c3_i sas_i) +{ + n_req* req_u = (n_req*)wri_u; + u3_mojo* moj_u = req_u->moj_u; + + c3_free(req_u->buf_y); + c3_free(req_u); + + if ( 0 != sas_i ) { + if ( UV_ECANCELED == sas_i ) { + fprintf(stderr, "newt: write canceled\r\n"); + } + else { + fprintf(stderr, "newt: write failed %s\r\n", uv_strerror(sas_i)); + moj_u->bal_f(moj_u->ptr_v, sas_i, uv_strerror(sas_i)); + } + } +} + +/* _mojo_stop_cb(): finalize stop/close output stream.. +*/ +static void +_mojo_stop_cb(uv_handle_t* han_u) +{ + u3_mojo* moj_u = han_u->data; + moj_u->bal_f(moj_u->ptr_v, -1, ""); +} + +/* u3_newt_mojo_stop(); newt stop/close output stream. +*/ +void +u3_newt_mojo_stop(u3_mojo* moj_u, u3_moor_bail bal_f) +{ + moj_u->pyp_u.data = moj_u; + + if ( bal_f ) { + moj_u->bal_f = bal_f; + } + + uv_close((uv_handle_t*)&moj_u->pyp_u, _mojo_stop_cb); +} + +/* u3_newt_send(): write buffer to stream. +*/ +void +u3_newt_send(u3_mojo* moj_u, c3_d len_d, c3_y* byt_y) +{ + n_req* req_u = c3_malloc(sizeof(*req_u)); + req_u->moj_u = moj_u; + req_u->buf_y = byt_y; + + // write header + // + req_u->hed_y[0] = 0x0; + req_u->hed_y[1] = ( len_d & 0xff); + req_u->hed_y[2] = ((len_d >> 8) & 0xff); + req_u->hed_y[3] = ((len_d >> 16) & 0xff); + req_u->hed_y[4] = ((len_d >> 24) & 0xff); + + { + uv_buf_t buf_u[2] = { + uv_buf_init((c3_c*)req_u->hed_y, sizeof(req_u->hed_y)), + uv_buf_init((c3_c*)req_u->buf_y, len_d) + }; + + c3_i sas_i; + + if ( 0 != (sas_i = uv_write(&req_u->wri_u, + (uv_stream_t*)&moj_u->pyp_u, + buf_u, 2, + _newt_write_cb)) ) + { + c3_free(req_u); + fprintf(stderr, "newt: write failed %s\r\n", uv_strerror(sas_i)); + moj_u->bal_f(moj_u->ptr_v, sas_i, uv_strerror(sas_i)); + } + } +} diff --git a/vere/pkg/vere/newt_tests.c b/vere/pkg/vere/newt_tests.c new file mode 100644 index 0000000..f8c5d4d --- /dev/null +++ b/vere/pkg/vere/newt_tests.c @@ -0,0 +1,355 @@ +/// @file + +#include "noun.h" +#include "vere.h" + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + u3m_init(1 << 20); + u3m_pave(c3y); +} + +/* _newt_encode(): synchronous serialization into a single buffer, for test purposes +*/ +static c3_y* +_newt_encode(u3_atom mat, c3_w* len_w) +{ + c3_w met_w = u3r_met(3, mat); + c3_y* buf_y; + + *len_w = 5 + met_w; + buf_y = c3_malloc(*len_w); + + // write header + // + buf_y[0] = 0x0; + buf_y[1] = ( met_w & 0xff); + buf_y[2] = ((met_w >> 8) & 0xff); + buf_y[3] = ((met_w >> 16) & 0xff); + buf_y[4] = ((met_w >> 24) & 0xff); + + u3r_bytes(0, met_w, buf_y + 5, mat); + u3z(mat); + + return buf_y; +} + +static c3_w +_moat_length(u3_moat* mot_u) +{ + u3_meat* met_u = mot_u->ext_u; + c3_w len_w = 0; + + while ( met_u ) { + met_u = met_u->nex_u; + len_w++; + } + + return len_w; +} + +/* _test_newt_smol(): various scenarios with small messages +*/ +static void +_test_newt_smol(void) +{ + // =(2 (jam 0)) + // + u3_atom a = u3ke_jam(0); + u3_moat mot_u; + c3_w len_w; + c3_y* buf_y; + + memset(&mot_u, 0, sizeof(u3_moat)); + + // one message one buffer + // + { + mot_u.ent_u = mot_u.ext_u = 0; + + buf_y = _newt_encode(u3k(a), &len_w); + u3_newt_decode(&mot_u, buf_y, len_w); + + if ( 1 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt smol fail (a)\n"); + exit(1); + } + } + + // two messages one buffer + // + { + mot_u.ent_u = mot_u.ext_u = 0; + + buf_y = _newt_encode(u3k(a), &len_w); + + buf_y = c3_realloc(buf_y, 2 * len_w); + memcpy(buf_y + len_w, buf_y, len_w); + len_w = 2 * len_w; + + u3_newt_decode(&mot_u, buf_y, len_w); + + if ( 2 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt smol fail (b)\n"); + exit(1); + } + } + + // one message two buffers + // + { + c3_y* end_y; + + mot_u.ent_u = mot_u.ext_u = 0; + + buf_y = _newt_encode(u3k(a), &len_w); + + end_y = c3_malloc(1); + end_y[0] = buf_y[len_w - 1]; + + u3_newt_decode(&mot_u, buf_y, len_w - 1); + + if ( 0 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt smol fail (c)\n"); + exit(1); + } + + u3_newt_decode(&mot_u, end_y, 1); + + if ( 1 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt smol fail (d)\n"); + exit(1); + } + } + + // two messages two buffers (overlapping length) + // + { + c3_y* haf_y; + c3_w haf_w, dub_w; + + mot_u.ent_u = mot_u.ext_u = 0; + + buf_y = _newt_encode(u3k(a), &len_w); + + dub_w = 2 * len_w; + haf_w = len_w / 2; + + // buf_y is all of message one, half of message two (not a full length) + // + buf_y = c3_realloc(buf_y, dub_w - haf_w); + memcpy(buf_y + len_w, buf_y, len_w - haf_w); + + // haf_y is the second half of message two + // + haf_y = c3_malloc(haf_w); + memcpy(haf_y, buf_y + (len_w - haf_w), haf_w); + + u3_newt_decode(&mot_u, buf_y, dub_w - haf_w); + + if ( 1 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt smol fail (e)\n"); + exit(1); + } + + u3_newt_decode(&mot_u, haf_y, haf_w); + + if ( 2 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt smol fail (f)\n"); + exit(1); + } + } + + u3z(a); +} + +/* _test_newt_vast(): various scenarios with larger messages +*/ +static void +_test_newt_vast(void) +{ + // =(53 (met 3 (jam "abcdefghijklmnopqrstuvwxyz"))) + // + u3_atom a = u3ke_jam(u3i_tape("abcdefghijklmnopqrstuvwxyz")); + u3_moat mot_u; + c3_w len_w; + c3_y* buf_y; + + memset(&mot_u, 0, sizeof(u3_moat)); + + // one message one buffer + // + { + mot_u.ent_u = mot_u.ext_u = 0; + + buf_y = _newt_encode(u3k(a), &len_w); + u3_newt_decode(&mot_u, buf_y, len_w); + + if ( 1 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt vast fail (a)\n"); + exit(1); + } + } + + // two messages one buffer + // + { + mot_u.ent_u = mot_u.ext_u = 0; + + buf_y = _newt_encode(u3k(a), &len_w); + + buf_y = c3_realloc(buf_y, 2 * len_w); + memcpy(buf_y + len_w, buf_y, len_w); + len_w = 2 * len_w; + + u3_newt_decode(&mot_u, buf_y, len_w); + + if ( 2 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt vast fail (b)\n"); + exit(1); + } + } + + // one message many buffers + // + { + mot_u.ent_u = mot_u.ext_u = 0; + + buf_y = _newt_encode(u3k(a), &len_w); + + { + c3_y* cop_y = c3_malloc(len_w); + c3_w haf_w = len_w / 2; + memcpy(cop_y, buf_y, len_w); + + u3_newt_decode(&mot_u, buf_y, haf_w); + + while ( haf_w < len_w ) { + c3_y* end_y = c3_malloc(1); + end_y[0] = cop_y[haf_w]; + + if ( 0 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt vast fail (c) %u\n", haf_w); + exit(1); + } + + u3_newt_decode(&mot_u, end_y, 1); + haf_w++; + } + + c3_free(cop_y); + } + + if ( 1 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt vast fail (d)\n"); + exit(1); + } + } + + // two messages two buffers + // + { + c3_y* haf_y; + c3_w haf_w, dub_w; + + mot_u.ent_u = mot_u.ext_u = 0; + + buf_y = _newt_encode(u3k(a), &len_w); + + dub_w = 2 * len_w; + haf_w = len_w / 2; + + // buf_y is all of message one, half of message two + // + buf_y = c3_realloc(buf_y, dub_w - haf_w); + memcpy(buf_y + len_w, buf_y, len_w - haf_w); + + // haf_y is the second half of message two + // + haf_y = c3_malloc(haf_w); + memcpy(haf_y, buf_y + (len_w - haf_w), haf_w); + + u3_newt_decode(&mot_u, buf_y, dub_w - haf_w); + + if ( 1 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt vast fail (e)\n"); + exit(1); + } + + u3_newt_decode(&mot_u, haf_y, haf_w); + + if ( 2 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt vast fail (f)\n"); + exit(1); + } + } + + // two messages many buffers + // + { + c3_w dub_w; + + mot_u.ent_u = mot_u.ext_u = 0; + + buf_y = _newt_encode(u3k(a), &len_w); + + dub_w = 2 * len_w; + + // buf_y is two copies of message + // + buf_y = c3_realloc(buf_y, dub_w); + memcpy(buf_y + len_w, buf_y, len_w); + + { + c3_y* cop_y = c3_malloc(dub_w); + c3_w haf_w = len_w + 1; + memcpy(cop_y, buf_y, dub_w); + + u3_newt_decode(&mot_u, buf_y, haf_w); + + while ( haf_w < dub_w ) { + c3_y* end_y = c3_malloc(1); + end_y[0] = cop_y[haf_w]; + + if ( 1 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt vast fail (g) %u\n", haf_w); + exit(1); + } + + u3_newt_decode(&mot_u, end_y, 1); + haf_w++; + } + + c3_free(cop_y); + } + + if ( 2 != _moat_length(&mot_u) ) { + fprintf(stderr, "newt vast fail (h)\n"); + exit(1); + } + } + + u3z(a); +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + _test_newt_smol(); + _test_newt_vast(); + + // GC + // + u3m_grab(u3_none); + + fprintf(stderr, "test_newt: ok\n"); + + return 0; +} diff --git a/vere/pkg/vere/noun_tests.c b/vere/pkg/vere/noun_tests.c new file mode 100644 index 0000000..f898af5 --- /dev/null +++ b/vere/pkg/vere/noun_tests.c @@ -0,0 +1,1789 @@ +/// @file + +#include "noun.h" +#include "ivory.h" +#include "ur/ur.h" +#include "vere.h" + +#define TRUE 1 +#define FALSE 0 + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + u3m_init(1 << 20); + u3m_pave(c3y); +} + +/* _test_u3r_chop: "extract bit slices from atom" +*/ +static c3_i +_test_u3r_chop() +{ + c3_i ret_i = 1; + c3_w dst_w = 0; + u3_atom src = 0b11011; + + // bloq 0 + // + { + // read 1 bit from pos=0 (far right) + // + dst_w = 0; + u3r_chop(0, 0, 1, 0, &dst_w, src); + if ( 0x1 != dst_w ) { + fprintf(stderr, "test: u3r_chop: bloq 0, 0\r\n"); + ret_i = 0; + } + + // read 1 bit from pos=1 + // + dst_w = 0; + u3r_chop(0, 1, 1, 0, &dst_w, src); + if ( 0x1 != dst_w ) { + fprintf(stderr, "test: u3r_chop: bloq 0, 1\r\n"); + ret_i = 0; + } + + // read 1 bit from pos=2 + // + dst_w = 0; + u3r_chop(0, 2, 1, 0, &dst_w, src); + if ( 0x0 != dst_w ) { + fprintf(stderr, "test: u3r_chop: bloq 0, 2\r\n"); + ret_i = 0; + } + + // read 4 x 1 bit bloq from pos=0 + // + dst_w = 0; + u3r_chop(0, 0, 4, 0, &dst_w, src); + if ( 0b1011 != dst_w ) { + fprintf(stderr, "test: u3r_chop: bloq 0, 3\r\n"); + ret_i = 0; + } + + // read 4 x 1 bit bloq from pos=0 into offset 1 + // + dst_w = 0; + u3r_chop(0, 0, 4, 1, &dst_w, src); + if ( 0b10110 != dst_w ) { + fprintf(stderr, "test: u3r_chop: bloq 0, 4\r\n"); + ret_i = 0; + } + } + + // bloq 1 + // + { + // read 2 bit from pos=0 (far right) + // + dst_w = 0; + u3r_chop(1, 0, 1, 0, &dst_w, src); + if ( 0b11 != dst_w ) { + fprintf(stderr, "test: u3r_chop: bloq 1, 0\r\n"); + ret_i = 0; + } + + // read 2 bit from pos=1 + // + dst_w = 0; + u3r_chop(1, 1, 1, 0, &dst_w, src); + if ( 0b10 != dst_w ) { + fprintf(stderr, "test: u3r_chop: bloq 1, 1\r\n"); + ret_i = 0; + } + + // read 2 bit from pos=2 (2 bloq over) + dst_w = 0; + u3r_chop(1, 2, 1, 0, &dst_w, src); + if ( 0b01 != dst_w ) { + fprintf(stderr, "test: u3r_chop: bloq 1, 2\r\n"); + ret_i = 0; + } + } + + // bloq 3 + { + dst_w = 0; + u3r_chop(3, 0, 1, 0, &dst_w, src); + if ( 0b11011 != dst_w ) { + fprintf(stderr, "test: u3r_chop: bloq 3, 0\r\n"); + ret_i = 0; + } + } + + // read 1,8,16 bit bloqs from an indirect atom + // + { + src = u3i_string("abcdefghij"); + + // 1 bit pos=0 (far right) + // + dst_w = 0; + u3r_chop(0, 0, 1, 0, &dst_w, src); + if ( 0b1 != dst_w ) { + fprintf(stderr, "test: u3r_chop: indirect 0\r\n"); + ret_i = 0; + } + + // 8 bits pos=0 + // + dst_w = 0; + u3r_chop(0, 0, 8, 0, &dst_w, src); + if ( 0b1100001 != dst_w ) { + fprintf(stderr, "test: u3r_chop: indirect 1\r\n"); + ret_i = 0; + } + + // 1 byte pos=0 + // + dst_w = 0; + u3r_chop(3, 0, 1, 0, &dst_w, src); + if ( 0b1100001 != dst_w ) { + fprintf(stderr, "test: u3r_chop: indirect 2\r\n"); + ret_i = 0; + } + + // 1 short pos=0 + // + dst_w = 0; + u3r_chop(4, 0, 1, 0, &dst_w, src); + if ( 0b0110001001100001 != dst_w ) { + fprintf(stderr, "test: u3r_chop: indirect 3\r\n"); + ret_i = 0; + } + + u3z(src); + } + + // read lots of bits from a direct noun which holds 64 bits of data + // makes sure that we handle top 32 / bottom 32 correctly + { + c3_y inp_y[8] = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7 }; + src = u3i_bytes(8, inp_y); + + c3_w dst_w[2] = {0}; + u3r_chop(0, 0, 63, 0, dst_w, src); + if ( (0x3020100 != dst_w[0]) || (0x7060504 != dst_w[1]) ) { + fprintf(stderr, "test: u3r_chop: indirect 4\r\n"); + ret_i = 0; + } + + u3z(src); + } + + // as above (read lots of bits from a direct noun which holds 64 bits of data + // makes sure that we handle top 32 / bottom 32 correctly) + // but with a bit more nuance + { + c3_y inp_y[8] = { 0x0, 0x0, 0x0, 0xaa, 0xff, 0x0, 0x0, 0x0 }; + src = u3i_bytes(8, (c3_y*)inp_y); + + dst_w = 0; + u3r_chop(0, 24, 16, 0, &dst_w, src); + if ( 0b1111111110101010 != dst_w ) { + fprintf(stderr, "test: u3r_chop: indirect 5\r\n"); + ret_i = 0; + } + + u3z(src); + } + + return ret_i; +} + +/* _test_chop_slow(): "golden master" for chop tests (formerly u3r_chop()) +*/ +void +_test_chop_slow(c3_g met_g, + c3_w fum_w, + c3_w wid_w, + c3_w tou_w, + c3_w* dst_w, + c3_w len_w, + c3_w* buf_w) +{ + c3_w i_w; + + if ( met_g < 5 ) { + c3_w san_w = (1 << met_g); + c3_w mek_w = ((1 << san_w) - 1); + c3_w baf_w = (fum_w << met_g); + c3_w bat_w = (tou_w << met_g); + + // XX: efficiency: poor. Iterate by words. + // + for ( i_w = 0; i_w < wid_w; i_w++ ) { + c3_w waf_w = (baf_w >> 5); + c3_g raf_g = (baf_w & 31); + c3_w wat_w = (bat_w >> 5); + c3_g rat_g = (bat_w & 31); + c3_w hop_w; + + hop_w = (waf_w >= len_w) ? 0 : buf_w[waf_w]; + hop_w = (hop_w >> raf_g) & mek_w; + + dst_w[wat_w] ^= (hop_w << rat_g); + + baf_w += san_w; + bat_w += san_w; + } + } + else { + c3_g hut_g = (met_g - 5); + c3_w san_w = (1 << hut_g); + c3_w j_w; + + for ( i_w = 0; i_w < wid_w; i_w++ ) { + c3_w wuf_w = (fum_w + i_w) << hut_g; + c3_w wut_w = (tou_w + i_w) << hut_g; + + for ( j_w = 0; j_w < san_w; j_w++ ) { + dst_w[wut_w + j_w] ^= + ((wuf_w + j_w) >= len_w) + ? 0 + : buf_w[wuf_w + j_w]; + } + } + } +} + +/* _test_chop_smol(): test permuations of chop from bloq 0-4 +*/ +static c3_i +_test_chop_smol(c3_c* cap_c, c3_y val_y) +{ + c3_i ret_i = 1; + c3_g met_g; + c3_w fum_w, wid_w, tou_w; + c3_w len_w = 34; // (rsh [0 5] (mul 2 (mul 34 (bex 4)))) + c3_w src_w[len_w]; + c3_w a_w[len_w]; + c3_w b_w[len_w]; + + memset(src_w, val_y, len_w << 2); + + for ( met_g = 0; met_g < 5; met_g++ ) { + for ( fum_w = 0; fum_w <= len_w; fum_w++ ) { + for ( wid_w = 0; wid_w <= len_w; wid_w++ ) { + for ( tou_w = 0; tou_w <= len_w; tou_w++ ) { + memset(a_w, 0, len_w << 2); + memset(b_w, 0, len_w << 2); + u3r_chop_words(met_g, fum_w, wid_w, tou_w, a_w, len_w, src_w); + _test_chop_slow(met_g, fum_w, wid_w, tou_w, b_w, len_w, src_w); + + if ( 0 != memcmp(a_w, b_w, len_w << 2) ) { + c3_g sif_g = 5 - met_g; + c3_w mas_w = (1 << met_g) - 1; + c3_w out_w = tou_w >> sif_g; + c3_w max_w = out_w + !!(fum_w & mas_w) + + (wid_w >> sif_g) + !!(wid_w & mas_w); + + fprintf(stderr, "%s (0x%x): met_g=%u fum_w=%u wid_w=%u tou_w=%u\r\n", + cap_c, val_y, + met_g, fum_w, wid_w, tou_w); + + + fprintf(stderr, "%u-%u: ", out_w, max_w - 1); + for ( ; out_w < max_w; out_w++ ) { + fprintf(stderr, "[0x%x 0x%x] ", a_w[out_w], b_w[out_w]); + } + fprintf(stderr, "\r\n"); + } + } + } + } + } + + return ret_i; +} + +/* _test_chop_huge(): test permuations of chop from bloq 5+ +*/ +static c3_i +_test_chop_huge(c3_c* cap_c, c3_y val_y) +{ + c3_i ret_i = 1; + c3_g met_g; + c3_w fum_w, wid_w, tou_w; + c3_w len_w = 192; // (rsh [0 5] (mul 2 (mul 3 (bex 10)))) + c3_w src_w[len_w]; + c3_w a_w[len_w]; + c3_w b_w[len_w]; + + memset(src_w, val_y, len_w << 2); + + for ( met_g = 5; met_g <= 10; met_g++ ) { + for ( fum_w = 0; fum_w <= 3; fum_w++ ) { + for ( wid_w = 0; wid_w <= 2; wid_w++ ) { + for ( tou_w = 0; tou_w <= 1; tou_w++ ) { + memset(a_w, 0, len_w << 2); + memset(b_w, 0, len_w << 2); + u3r_chop_words(met_g, fum_w, wid_w, tou_w, a_w, len_w, src_w); + _test_chop_slow(met_g, fum_w, wid_w, tou_w, b_w, len_w, src_w); + + if ( 0 != memcmp(a_w, b_w, len_w << 2) ) { + c3_g sif_g = met_g - 5; + c3_w mas_w = (1 << met_g) - 1; + c3_w out_w = tou_w << sif_g; + c3_w max_w = out_w + !!(fum_w & mas_w) + + (wid_w << sif_g) + !!(wid_w & mas_w); + + fprintf(stderr, "%s (0x%x): met_g=%u fum_w=%u wid_w=%u tou_w=%u\r\n", + cap_c, val_y, + met_g, fum_w, wid_w, tou_w); + + + fprintf(stderr, "%u-%u: ", out_w, max_w - 1); + for ( ; out_w < max_w; out_w++ ) { + fprintf(stderr, "[0x%x 0x%x] ", a_w[out_w], b_w[out_w]); + } + fprintf(stderr, "\r\n"); + } + } + } + } + } + + return ret_i; +} + +/* _test_u3r_chop(): bit slice XOR +*/ +static c3_i +_test_chop() +{ + return _test_u3r_chop() + & _test_chop_smol("chop smol zeros", 0x0) + & _test_chop_smol("chop smol ones", 0xff) + & _test_chop_smol("chop smol alt 1", 0xaa) + & _test_chop_smol("chop smol alt 2", 0x55) + & _test_chop_huge("chop huge zeros", 0x0) + & _test_chop_huge("chop huge ones", 0xff) + & _test_chop_huge("chop huge alt 1", 0xaa) + & _test_chop_huge("chop huge alt 2", 0x55); +} + +/* _util_rand_string(): dynamically allocated len_w random string +*/ +static c3_y* +_util_rand_string(c3_w len_w) +{ + c3_c* choice_c = + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + c3_w choice_len_w = strlen(choice_c); + + c3_y* out_y = c3_malloc(len_w + 1); + + c3_w i_w; + for (i_w = 0; i_w < len_w; i_w ++){ + out_y[i_w] = choice_c[ (c3_w) rand() % choice_len_w ]; + } + out_y[i_w] = 0; + + return out_y; +} + +/* _test_noun_bits_helper(): +*/ +static void +_test_noun_bits_helper(u3_noun a, int direct_o, + int indirect_o, + int indirect_atom_o, + int cell_o) +{ +#if 0 + printf("=========== %u\n", a); + printf(" 31 bit %u\n", a & ( ((c3_w)1) << 31)); + printf(" 30 bit %u\n", a & ( ((c3_w)1) << 30)); + printf(" dir %x\n", c3y == u3a_is_cat(a)); + printf(" ind %x\n", c3y == u3a_is_dog(a)); + printf(" i cell %x\n", c3y == u3a_is_cell(a)); + printf(" i atom %x\n", c3y == u3a_is_pug(a)); +#endif + + if ( direct_o != (c3y == u3a_is_cat(a)) ) { + printf("*** _test_noun_bits_one() fail: u3a_is_direct\r\n"); + } + + if ( indirect_o != (c3y == u3a_is_dog(a)) ) { + printf("*** fail-2 u3a_is_indirect %d\r\n", c3n == u3a_is_cat(a)); + } + + if ( cell_o != (c3y == u3a_is_cell(a)) ) { + printf("*** fail-4 u3a_is_cell\r\n"); + } + + if ( indirect_atom_o != (c3y == u3a_is_pug(a)) ) { + printf("*** fail-3 u3a_is_indirect_atom\r\n"); + } +} + +/* _test_noun_bits_set(): allocate.h level 1a +*/ +static void +_test_noun_bits_set() +{ + u3_noun a = 1; + + // flip indirect bit on + a |= (1U << 31); + if ( c3n == u3a_is_dog(a) ) { + printf("*** fail-5a turn indirect bit on\r\n"); + } + + if ( c3y == u3a_is_cell(a) ) { + printf("*** fail-5b turn indirect bit on\r\n"); + } + + if ( c3n == u3a_is_pug(a) ) { + printf("*** fail-5c turn indirect bit on\r\n"); + } + + // flip all bits off + a = u3a_to_off(a); + + if ( c3y == u3a_is_dog(a) ) { + printf("*** fail-5d turn indirect bit off\r\n"); + } + + if ( c3y == u3a_is_cell(a) ) { + printf("*** fail-5e turn indirect bit on\r\n"); + } + + if ( c3y == u3a_is_pug(a)) { + printf("*** fail-5f turn indirect bit on\r\n"); + } + + // flip indirect & cell bit on + a = u3a_to_pom(a); + + if ( c3n == u3a_is_dog(a) ) { + printf("*** fail-5g turn indirect bit on\r\n"); + } + + if ( c3n == u3a_is_cell(a) ) { + printf("*** fail-5h turn indirect bit on\r\n"); + } + + if ( c3y == u3a_is_pug(a) ) { + printf("*** fail-5i turn indirect bit on\r\n"); + } +} + +/* _test_noun_bits_read(): allocate.h level 1 +*/ +static void +_test_noun_bits_read() +{ + + u3_noun a = (u3_noun)0x1; // direct atom + u3_noun b = u3a_to_pug(0x4); // indirect atom + u3_noun c = u3a_to_pom(0x8); // indirect cell + + // direct indirect indirect-atom indirect-cell + //---------------------------------------- + _test_noun_bits_helper(a, TRUE, FALSE, FALSE, FALSE); + _test_noun_bits_helper(b, FALSE, TRUE, TRUE, FALSE); + _test_noun_bits_helper(c, FALSE, TRUE, FALSE, TRUE); +} + +/* _test_imprison(): test basic data into / out of nouns +** insert and retrieve bytes with u3i_bytes()/u3r_bytes() +*/ +static void +_test_imprison() +{ + c3_c* input_c = "abcdefghij"; + c3_w out_len_w = 300; + c3_y * output_y = c3_malloc(out_len_w); + u3_noun a; + + // size 1, direct + a = u3i_bytes(1, (c3_y*)input_c); + memset(output_y, 0, out_len_w); + u3r_bytes(0, 1, output_y, a); + if (0 != memcmp(output_y, "a", 1)) { + printf("*** _test_imprison: fail-1\n"); + } + + // size 2, direct + a = u3i_bytes(2, (c3_y*)input_c); + memset(output_y, 0, out_len_w); + u3r_bytes(0, 2, output_y, a); + if (0 != memcmp(output_y, "ab", 2)) { + printf("*** _test_imprison: fail-2\n"); + } + + // size 6, direct (taken from an actual issue) + { + c3_y data_y[] = { 0x1, 0x1f, 0x8e, 0x2d, 0x2c, 0x2f }; + a = u3i_bytes(6, data_y); + memset(output_y, 0, out_len_w); + u3r_bytes(0, 6, output_y, a); + int ret; + ret = memcmp(output_y, data_y, 6); + if (0 != ret) { + printf("*** _test_imprison: fail-2.5 %x\n", ret); + printf(" %x %x %x %x %x %x\n", output_y[0], + output_y[1], + output_y[2], + output_y[3], + output_y[4], + output_y[5]); + } + } + + // size 8, direct + a = u3i_bytes(8, (c3_y*)input_c); + memset(output_y, 0, out_len_w); + u3r_bytes(0, 8, output_y, a); + if (0 != memcmp(output_y, "abcdefgh", 8)) { + printf("*** _test_imprison: fail-3\n"); + } + + // size 10, indirect + a = u3i_bytes(10, (c3_y*)input_c); + memset(output_y, 0, out_len_w); + u3r_bytes(0, 10, output_y, a); + if (0 != memcmp(output_y, "abcdefghij", 10)) { + printf("*** _test_imprison: fail-4\n"); + } + + // size 200, indirect + c3_y * rand_y = _util_rand_string(200); + a = u3i_bytes(200, rand_y); + memset(output_y, 0, out_len_w); + u3r_bytes(0, 200, output_y, a); + if (0 != memcmp(output_y, rand_y, 200)) { + printf("*** _test_imprison: fail-5\n"); + } + + c3_free(rand_y); + c3_free(output_y); +} + +/* _test_cells(): build and inspect cells: u3i_cell(), u3h(), u3t() +*/ +static void +_test_cells() +{ + // very simple cell + { + u3_noun a = (u3_noun) 0x1; + u3_noun b = (u3_noun) 0x2; + u3_noun c = u3i_cell(a, b); + + u3_noun a2 = u3h(c); + if (a2 != a){ + printf("*** _test_cells: fail-1\n"); + } + + u3_noun b2 = u3t(c); + if (b2 != b){ + printf("*** _test_cells: fail-2\n"); + } + } + + // very simple cell with indirect atoms + { + c3_w out_len_w = 200; + c3_y * rand_a = _util_rand_string(out_len_w); + c3_y * rand_b = _util_rand_string(out_len_w); + + u3_noun a = u3i_bytes(200, rand_a); + u3_noun b = u3i_bytes(200, rand_b); + u3_noun c = u3i_cell(a, b); + +#if 0 + printf("a = %x\n", a); + printf("b = %x\n", b); + printf("c = %x\n", c); + printf("a_rand = %s\n", rand_a); + printf("b_rand = %s\n", rand_b); +#endif + + u3_noun a2 = u3h(c); + c3_y * output_y = c3_malloc(out_len_w + 1); + memset(output_y, 0, out_len_w + 1); + u3r_bytes(0, out_len_w, output_y, a); + + if (0 != memcmp(output_y, rand_a, out_len_w)) { + printf("*** _test_imprison: fail-3\n"); + } + + u3_noun b2 = u3h(c); + memset(output_y, 0, out_len_w + 1); + u3r_bytes(0, out_len_w, output_y, b); + + if (0 != memcmp(output_y, rand_b, out_len_w)) { + printf("*** _test_imprison: fail-4\n"); + } + + c3_free(output_y); + c3_free(rand_a); + c3_free(rand_b); + } + + // medium complicated cell + // q + // / \ + // a1 r + // / \ + // b2 s + // / \ + // c3 d4 + { + u3_noun a = (u3_noun) 0x1; + u3_noun b = (u3_noun) 0x2; + u3_noun c = (u3_noun) 0x3; + u3_noun d = (u3_noun) 0x4; + + u3_noun s = u3i_cell(c, d); + u3_noun r = u3i_cell(b, s); + u3_noun q = u3i_cell(a, r); + + u3_noun a2 = u3h(q); + u3_noun r2 = u3t(q); + if (a2 != a){ + printf("*** _test_cells: complicated a\n"); + } + + u3_noun b2 = u3h(r2); + u3_noun s2 = u3t(r2); + if (b2 != b){ + printf("*** _test_cells: complicated b\n"); + } + + + u3_noun c2 = u3h(s2); + u3_noun d2 = u3t(s2); + if (c2 != c){ + printf("*** _test_cells: complicated c\n"); + } + + if (d2 != d){ + printf("*** _test_cells: complicated d\n"); + } + + a2 = 0; + u3r_mean(q, 2, &a2, 0); + if (a2 != a){ + printf("*** _test_cells: complicated (via u3r_mean) a\n"); + } + } + + // trel + { + // q + // / \ + // a ? + // / \ + // b c + + // Produce the triple `[a b c]`. + u3_noun a = (u3_noun) 0x1; + u3_noun b = (u3_noun) 0x2; + u3_noun c = (u3_noun) 0x3; + + u3_noun trel = u3i_trel(a, b, c); + + u3_noun a2 = u3h(trel); + u3_noun b2 = u3h(u3t(trel)); + u3_noun c2 = u3t(u3t(trel)); + + if (a2 != a){ + printf("*** trel: 1 a\n"); + } + if (b2 != b){ + printf("*** trel: 2 a\n"); + } + if (c2 != c){ + printf("*** trel: 3 a\n"); + } + } + + // qual + { + // q + // / \ + // a ? + // / \ + // b ? + // / \ + // c d + // + + // Produce the triple `[a b c]`. + u3_noun a = (u3_noun) 0x1; + u3_noun b = (u3_noun) 0x2; + u3_noun c = (u3_noun) 0x3; + u3_noun d = (u3_noun) 0x4; + + u3_noun qual = u3i_qual(a, b, c, d); + + u3_noun a2 = u3h(qual); + u3_noun b2 = u3h(u3t(qual)); + u3_noun c2 = u3h(u3t(u3t(qual))); + u3_noun d2 = u3t(u3t(u3t(qual))); + + if (a2 != a){ + printf("*** qual: 1 \n"); + } + if (b2 != b){ + printf("*** qual: 2 \n"); + } + if (c2 != c){ + printf("*** qual: 3 \n"); + } + if (d2 != d){ + printf("*** qual: 4 \n"); + } + } +} + +/* _test_cells_complex(): build cells with more complex methods +*/ +static void +_test_cells_complex() +{ + // trel + { + // q + // / \ + // a ? + // / \ + // b c + + // Produce the triple `[a b c]`. + u3_noun a = (u3_noun) 0x1; + u3_noun b = (u3_noun) 0x2; + u3_noun c = (u3_noun) 0x3; + + u3_noun q = u3i_trel(a, b, c); + + u3_noun a2 = 0; + u3_noun b2 = 0; + u3_noun c2 = 0; + + u3x_trel(q, &a2, &b2, &c2); + + if (a2 != a){ + printf("*** _test_cells_complex: trel() 1 a\n"); + } + if (b2 != b){ + printf("*** _test_cells_complex: trel() 2 a\n"); + } + if (c2 != c){ + printf("*** _test_cells_complex: trel() 3 a\n"); + } + } + + // qual + { + // q + // / \ + // a ? + // / \ + // b z + // / \ + // c d + + // Produce the qual `[a b c d]`. + u3_noun a = (u3_noun) 0x1; + u3_noun b = (u3_noun) 0x2; + u3_noun c = (u3_noun) 0x3; + u3_noun d = (u3_noun) 0x4; + + u3_noun z = u3i_cell(c, d); + u3_noun q = u3i_trel(a, b, z); + + u3_noun a2 = 0; + u3_noun b2 = 0; + u3_noun c2 = 0; + u3_noun d2 = 0; + + u3x_qual(q, &a2, &b2, &c2, &d2); + + if (a2 != a){ + printf("*** _test_cells_complex: qual() a\n"); + } + if (b2 != b){ + printf("*** _test_cells_complex: qual() b\n"); + } + if (c2 != c){ + printf("*** _test_cells_complex: qual() c\n"); + } + if (d2 != d){ + printf("*** _test_cells_complex: qual() d\n"); + } + } + + // quil + { + // q + // / \ + // a ? + // / \ + // b z + // / \ + // c ? + // / \ + // d e + + // Produce `[a b c d e]`. + u3_noun a = (u3_noun) 0x1; + u3_noun b = (u3_noun) 0x2; + u3_noun c = (u3_noun) 0x3; + u3_noun d = (u3_noun) 0x4; + u3_noun e = (u3_noun) 0x5; + + u3_noun z = u3i_trel(c, d, e); + u3_noun q = u3i_trel(a, b, z); + + u3_noun a2 = 0; + u3_noun b2 = 0; + u3_noun c2 = 0; + u3_noun d2 = 0; + u3_noun e2 = 0; + + u3x_quil(q, &a2, &b2, &c2, &d2, &e2); + + if (a2 != a){ + printf("*** _test_cells_complex: quil() a\n"); + } + if (b2 != b){ + printf("*** _test_cells_complex: quil() b\n"); + } + if (c2 != c){ + printf("*** _test_cells_complex: quil() c\n"); + } + if (d2 != d){ + printf("*** _test_cells_complex: quil() d\n"); + } + if (e2 != e){ + printf("*** _test_cells_complex: quil() e\n"); + } + } + + // hext + { + // q + // / \ + // a ? + // / \ + // b z + // / \ + // c ? + // / \ + // d . + // / \ + // e f + // + // Produce `[a b c d e f]`. + u3_noun a = (u3_noun) 0x1; + u3_noun b = (u3_noun) 0x2; + u3_noun c = (u3_noun) 0x3; + u3_noun d = (u3_noun) 0x4; + u3_noun e = (u3_noun) 0x5; + u3_noun f = (u3_noun) 0x6; + + u3_noun z = u3i_trel(d, e, f); + u3_noun q = u3i_qual(a, b, c, z); + + u3_noun a2 = 0; + u3_noun b2 = 0; + u3_noun c2 = 0; + u3_noun d2 = 0; + u3_noun e2 = 0; + u3_noun f2 = 0; + + u3x_hext(q, &a2, &b2, &c2, &d2, &e2, &f2); + + if (a2 != a){ + printf("*** _test_cells_complex: hext() a\n"); + } + if (b2 != b){ + printf("*** _test_cells_complex: hext() b\n"); + } + if (c2 != c){ + printf("*** _test_cells_complex: hext() c\n"); + } + if (d2 != d){ + printf("*** _test_cells_complex: hext() d\n"); + } + if (e2 != e){ + printf("*** _test_cells_complex: hext() e - e2 = %i\n", e2); + } + if (f2 != f){ + printf("*** _test_cells_complex: hext() f - f2 = %i\n", f2); + } + } +} + +/* _test_imprison_complex(): more complicated into/out-of nouns +*/ +static void +_test_imprison_complex() +{ + // vint + { + u3_noun a = 1; + + u3_noun b= u3i_vint(a); + if (2 != b){ + printf("*** vint 1\n"); + } + + u3_noun c = u3i_vint(b); + if (3 != c){ + printf("*** vint 2\n"); + } + + // XX disabled, 64-bit + // +#if 0 + { + c3_d d = 1ULL << 50; + a = u3i_chubs(1, &d); + b = u3i_vint(a); + + if ((a + 1) != b){ + printf("*** vint 3\n"); + } + } +#endif + } + + // bytes + { + c3_y in_y[10] = { 10, 20, 0xff}; + u3_noun a = u3i_bytes(3, in_y); + + c3_w out_a = u3r_byte(0, a); + if (10 != out_a ){ + printf("*** u3r_byte 1\n"); + } + + c3_w out_b = u3r_byte(1, a); + if (20 != out_b ){ + printf("*** u3r_byte 2\n"); + } + + c3_w out_c = u3r_byte(2, a); + if (0xff != out_c ){ + printf("*** u3r_byte 3\n"); + } + + c3_y out_y[10]; + memset(out_y, 0, 10 * sizeof(c3_y)); + u3r_bytes(0, 3, out_y, a); + + if (10 != out_y[0] || + 20 != out_y[1] || + 0xff != out_y[2] || + 0 != out_y[3] + ){ + printf("*** u3r_byte 4\n"); + } + } + + // words + { + c3_w in_w[10] = {10, 20, 0xffffffff}; + u3_noun noun = u3i_words(3, in_w); + + + c3_w out_a = u3r_word(0, noun); + if (10 != out_a ){ + printf("*** u3r_word 1\n"); + } + + c3_w out_b = u3r_word(1, noun); + if (20 != out_b ){ + printf("*** u3r_word 2\n"); + } + + c3_w out_c = u3r_word(2, noun); + if (0xffffffff != out_c ){ + printf("*** u3r_word 3\n"); + } + + c3_w out_w[10]; + memset(out_w, 0, 10 * sizeof(c3_w)); + u3r_words(0, 3, out_w, noun); + + if (10 != out_w[0] || + 20 != out_w[1] || + 0xffffffff != out_w[2] || + 0 != out_w[3] + ){ + printf("*** u3r_word 4\n"); + } + } + + // chubs + { + c3_d in_d[10] = {1, 2, 0xffffffffffffffffULL}; + + c3_d out_d[10]; + + u3_noun a = u3i_chubs(1, & in_d[0]); + memset(out_d, 0, sizeof(c3_d) * 10); + u3r_chubs(0, 1, out_d, a); + if (1 != out_d[0] ){ + printf("*** u3r_chubs 1\n"); + } + + + u3_noun b = u3i_chubs(1, & in_d[1]); + memset(out_d, 0, sizeof(c3_d) * 10); + u3r_chubs(0, 1, out_d, b); + if (2 != out_d[0] ){ + printf("*** u3r_chubs 2\n"); + } + + u3_noun c = u3i_chubs(1, & in_d[2]); + memset(out_d, 0, sizeof(c3_d) * 10); + u3r_chubs(0, 1, out_d, c); + if (0xffffffffffffffffULL != out_d[0] ){ + printf("*** u3r_chubs 3\n"); + } + + u3_noun d = u3i_chubs(3, in_d); + memset(out_d, 0, sizeof(c3_d) * 10); + u3r_chubs(0, 3, out_d, d); + if (1 != out_d[0] ){ + printf("*** u3r_chubs 4-a\n"); + } + if (2 != out_d[1] ){ + printf("*** u3r_chubs 4-b\n"); + } + if (0xffffffffffffffffULL != out_d[2] ){ + printf("*** u3r_chubs 4-c\n"); + } + } + + // string + { + c3_c * in_c = "a"; + u3_noun noun = u3i_string(in_c); + c3_c* out_c = u3r_string(noun); + + if (0 != strcmp(in_c, out_c)){ + printf("*** u3r_string: in '%s'; out '%s'\n", in_c, out_c); + } + + c3_free(out_c); + in_c = "ab"; + noun = u3i_string(in_c); + out_c = u3r_string(noun); + + if (0 != strcmp(in_c, out_c)){ + printf("*** u3r_string: in '%s'; out '%s'\n", in_c, out_c); + } + + c3_free(out_c); + in_c = "abcd"; + noun = u3i_string(in_c); + out_c = u3r_string(noun); + + if (0 != strcmp(in_c, out_c)){ + printf("*** u3r_string: in '%s'; out '%s'\n", in_c, out_c); + } + + c3_free(out_c); + in_c = "this is a test"; + noun = u3i_string(in_c); + out_c = u3r_string(noun); + + if (0 != strcmp(in_c, out_c)){ + printf("*** u3r_string: in '%s'; out '%s'\n", in_c, out_c); + } + + c3_free(out_c); + } + + // tape + { + c3_c* in_c = "this is a test"; + u3_noun noun = u3i_tape(in_c); + + c3_y* out_y = u3r_tape(noun); + + if (0 != memcmp(in_c, out_y, strlen(in_c))){ + printf("*** u3r_tape 1\n"); + } + + c3_free(out_y); + + // tape stores each byte in the string as one atom in the tree + u3_noun lent = u3qb_lent(noun); + if ( (c3_w)lent != strlen(in_c) ){ + printf("*** u3r_tape 2\n"); + } + } + + // edit + { + + // q + // / \ + // a1 r + // / \ + // b2 s + // / \ + // c3 d4 + + u3_noun a = (u3_noun) 0x1; + u3_noun b = (u3_noun) 0x2; + u3_noun c = (u3_noun) 0x3; + u3_noun d = (u3_noun) 0x4; + + u3_noun s = u3i_cell(c, d); + u3_noun r = u3i_cell(b, s); + u3_noun q = u3i_cell(a, r); + + u3_noun axis = 2; + u3_noun newval = 99; + u3_noun hacked = u3i_edit(q, axis, newval); + + u3_noun read_1; + u3r_mean(hacked, axis, &read_1, 0); + + if (newval != read_1){ + printf("*** u3i_edit 1\n"); + } + } + + // molt + { + + // q + // / \ + // a1 r + // / \ + // b2 s + // / \ + // c3 d4 + + u3_noun a = (u3_noun) 0x1; + u3_noun b = (u3_noun) 0x2; + u3_noun c = (u3_noun) 0x3; + u3_noun d = (u3_noun) 0x4; + + u3_noun s = u3i_cell(c, d); + u3_noun r = u3i_cell(b, s); + u3_noun q = u3i_cell(a, r); + + u3_noun axis_1 = 2; + u3_noun newval_1 = 99; + + u3_noun axis_2 = 6; + u3_noun newval_2 = 777; + + u3_noun hacked = u3i_molt(q, axis_1, newval_1, axis_2, newval_2, 0); + + u3_noun read_1; + u3_noun read_2; + u3r_mean(hacked, axis_1, &read_1, axis_2, &read_2, 0); + + if (newval_1 != read_1){ + printf("*** u3i_molt 1\n"); + } + + if (newval_2 != read_2){ + printf("*** u3i_molt 2\n"); + } + } +} + +/* _test_sing(): Yes iff (a) and (b) are the same noun. +*/ +static void +_test_sing() +{ + // direct noun + // + { + u3_noun a = (u3_noun) 0x1; + u3_noun b = (u3_noun) 0x1; + u3_noun c = (u3_noun) 0x2; + + if (c3y != u3r_sing(a, a)) { + printf("*** sing direct: 1 \n"); + } + + if (c3y != u3r_sing(a, b)) { + printf("*** sing direct: 2 \n"); + } + + if (c3n != u3r_sing(a, c)) { + printf("*** sing direct: 3 \n"); + } + } + + // indirect + // + { + c3_c* in_alpha_c = "abcdefghijklmnopqrstuvwxyz"; + c3_c* in_numer_c = "0123456789001234567890"; + + + u3_noun a = u3i_string(in_alpha_c); + u3_noun b = u3i_string(in_alpha_c); + u3_noun c = u3i_string(in_numer_c); + + if (c3y != u3r_sing(a, a)) { + printf("*** sing indirect: 1 \n"); + } + + if (c3y != u3r_sing(a, b)) { + printf("*** sing indirect: 2 \n"); + } + + if (c3n != u3r_sing(a, c)) { + printf("*** sing indirect: \n"); + } + } +} + +/* _test_fing(): yes same copy of the same noun (ie, pointer equality) +*/ +static void +_test_fing() +{ + // direct noun + // + { + u3_noun a = (u3_noun) 0x1; + u3_noun b = (u3_noun) 0x1; + u3_noun c = (u3_noun) 0x2; + + if (c3y != u3r_fing(a, a)) { + printf("*** fing direct: 1 \n"); + } + + if (c3y != u3r_fing(a, b)) { + printf("*** fing direct: 2 \n"); + } + + if (c3n != u3r_fing(a, c)) { + printf("*** fing direct: 3 \n"); + } + } + + // indirect + // + { + c3_c* in_alpha_c = "abcdefghijklmnopqrstuvwxyz"; + c3_c* in_numer_c = "0123456789001234567890"; + + + u3_noun a = u3i_string(in_alpha_c); + u3_noun b = u3i_string(in_alpha_c); + u3_noun c = u3i_string(in_numer_c); + + if (c3y != u3r_fing(a, a)) { + printf("*** fing indirect: 1 \n"); + } + + if (c3n != u3r_fing(a, b)) { + printf("*** fing indirect: 2 \n"); + } + + if (c3n != u3r_fing(a, c)) { + printf("*** fing indirect: \n"); + } + } +} + +/* _test_met(): 'met' = measure / take size +*/ +static void +_test_met() +{ + c3_w ret_w; + u3_atom atom; + + // 1 + { + atom = 1; + + ret_w = u3r_met(0, atom); + if (1 != ret_w){ + printf("*** _test_met bit of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(3, atom); + if (1 != ret_w){ + printf("*** _test_met byte of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(4, atom); + if (1 != ret_w){ + printf("*** _test_met _w of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(5, atom); + if (1 != ret_w){ + printf("*** _test_met _d of 1 = %d \n", ret_w); + } + } + + // 2 = 0b10 + { + atom = 2; + + ret_w = u3r_met(0, atom); + if (2 != ret_w){ + printf("*** _test_met bit of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(3, atom); + if (1 != ret_w){ + printf("*** _test_met byte of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(5, atom); + if (1 != ret_w){ + printf("*** _test_met _w of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(6, atom); + if (1 != ret_w){ + printf("*** _test_met _d of 1 = %d \n", ret_w); + } + } + + // 8=0b1000 + { + atom = 8; + + ret_w = u3r_met(0, atom); + if (4 != ret_w){ + printf("*** _test_met bit of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(3, atom); + if (1 != ret_w){ + printf("*** _test_met byte of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(5, atom); + if (1 != ret_w){ + printf("*** _test_met _w of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(6, atom); + if (1 != ret_w){ + printf("*** _test_met _d of 1 = %d \n", ret_w); + } + } + + // 0xff = 255 =0b 1111 1111 + { + atom = 0xff; + + ret_w = u3r_met(0, atom); + if (8 != ret_w){ + printf("*** _test_met bit of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(3, atom); + if (1 != ret_w){ + printf("*** _test_met byte of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(5, atom); + if (1 != ret_w){ + printf("*** _test_met _w of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(6, atom); + if (1 != ret_w){ + printf("*** _test_met _d of 1 = %d \n", ret_w); + } + } + + // 0x100 = 256 =0b 0001 1111 1111 + { + atom = 0x100; + + ret_w = u3r_met(0, atom); + if (9 != ret_w){ + printf("*** _test_met bit of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(3, atom); + if (2 != ret_w){ + printf("*** _test_met byte of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(5, atom); + if (1 != ret_w){ + printf("*** _test_met _w of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(6, atom); + if (1 != ret_w){ + printf("*** _test_met _d of 1 = %d \n", ret_w); + } + } + + // XX disabled, 64-bit + // +#if 0 + // 32 bit direct + // 0x ff ff ff ff + { + atom = 0xffffffffULL; + + ret_w = u3r_met(0, atom); + if (32 != ret_w){ + printf("*** _test_met bit of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(3, atom); + if (4 != ret_w){ + printf("*** _test_met byte of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(5, atom); + if (1 != ret_w){ + printf("*** _test_met _w of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(6, atom); + if (1 != ret_w){ + printf("*** _test_met _d of 1 = %d \n", ret_w); + } + } +#endif + + // 4 words x 32 bits each = 128 bits = 16 bytes = 4 words = 2 doubles + // + { + c3_w data_w[4] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff }; + atom = u3i_words(4, data_w); + + ret_w = u3r_met(0, atom); + if (128 != ret_w){ + printf("*** _test_met bit of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(3, atom); + if (16 != ret_w){ + printf("*** _test_met byte of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(5, atom); + if (4 != ret_w){ + printf("*** _test_met _w of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(6, atom); + if (2 != ret_w){ + printf("*** _test_met _d of 1 = %d \n", ret_w); + } + } + + // 4 words (top word is '1' ) + // + { + c3_w data_w[4] = { 0xffffffff, 0xffffffff, 0xffffffff, 1 }; + atom = u3i_words(4, data_w); + + ret_w = u3r_met(0, atom); + if (97 != ret_w){ + printf("*** _test_met bit of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(3, atom); + if (13 != ret_w){ + printf("*** _test_met byte of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(5, atom); + if (4 != ret_w){ + printf("*** _test_met _w of 1 = %d \n", ret_w); + } + + ret_w = u3r_met(6, atom); + if (2 != ret_w){ + printf("*** _test_met _d of 1 = %d \n", ret_w); + } + } +} + +/* _test_u3r_at(): inspect cells at arbitrary axis locations +** [ and utility function u3x_dep() ] +*/ +static void +_test_u3r_at() +{ + c3_w a_w = u3x_dep(0); + + if (0xffffffff != a_w) { printf("*** u3x_dep() \n"); } + + a_w = u3x_dep(1); + if (0 != a_w) { printf("*** u3x_dep() \n"); } + + a_w = u3x_dep(0b10); + if (1 != a_w) { printf("*** u3x_dep() \n"); } + + a_w = u3x_dep(0b11); + if (1 != a_w) { printf("*** u3x_dep() \n"); } + + a_w = u3x_dep(0b100); + if (2 != a_w) { printf("*** u3x_dep() \n"); } + + a_w = u3x_dep(0b110); + if (2 != a_w) { printf("*** u3x_dep() \n"); } + + a_w = u3x_dep(0b111); + if (2 != a_w) { printf("*** u3x_dep() \n"); } + + a_w = u3x_dep( ((c3_w) (((c3_d) 1 << 32) - 1)) ); + if (31 != a_w) { printf("*** u3x_dep() \n"); } + + + // XX disabled, 64-bit + // +#if 0 + a_w = u3x_dep_d(0); + a_w = u3x_dep_d(1); + a_w = u3x_dep_d(0b10); + a_w = u3x_dep_d(0b11); + a_w = u3x_dep_d(0b100); + a_w = u3x_dep_d( ((c3_w) (((c3_d) 1 << 32) - 1)) ); + a_w = u3x_dep_d( ((c3_w) (((c3_d) 1 << 33) - 1)) ); + a_w = u3x_dep_d( ((c3_d) (((c3_d) 1 << 64) - 1)) ); +#endif + + u3_weak ret; + + // addr 1 in atom == atom value + u3_noun tree = 1; + ret = u3r_at( 1, tree); + if (1 != ret) { printf("*** u3r_at()\n"); } + + // addr 1 in atom == atom value + tree = 2; + ret = u3r_at( 1, tree); + if (2 != ret) { printf("*** u3r_at \n"); } + + // illegal + ret = u3r_at( 2, tree); + if (u3_none != ret) { printf("*** u3r_at \n"); } + + + // simple tree [ 1 2] + tree = u3i_cell(10, 20); + ret = u3r_at( 1, tree); + if (tree != ret) { printf("*** u3r_at \n"); } + + ret = u3r_at( 2, tree); + if (10 != ret) { printf("*** u3r_at \n"); } + ret = u3r_at( 3, tree); + if (20 != ret) { printf("*** u3r_at \n"); } + + // simple tree [ 1 ] + c3_w in_w[10] = {10, 20, 0xffffffff}; + u3_noun bignum = u3i_words(3, in_w); + + tree = u3i_cell(99, bignum); + ret = u3r_at( 2, tree); + if (99 != ret) { printf("*** u3r_at \n"); } + ret = u3r_at( 3, tree); + if (bignum != ret) { printf("*** u3r_at \n"); } +} + +// XX disabled, static functions +// +#if 0 +void _n_push(c3_ys mov, c3_ys off, u3_noun a); +u3_noun * _n_peek(c3_ys off); +u3_noun* _n_peet(c3_ys mov, c3_ys off); +void _n_pop(c3_ys mov); +u3_noun _n_pep(c3_ys mov, c3_ys off); +void _n_toss(c3_ys mov, c3_ys off); +u3_noun* _n_swap(c3_ys mov, c3_ys off); + +/* _test_nvm_stack_inner(): +*/ +void +_test_nvm_stack_inner(c3_ys mov, c3_ys off) +{ + u3_noun * peek; + + // push 1, peek, pop + if(1) { + _n_push(mov, off, 0x1122334455667788); + peek = _n_peek(off); + if (0x1122334455667788 != *peek) { printf("*** test_nvm_stack 1\n"); } + _n_pop(mov); + } + + // push 2, peek, pop, peek, pop + if(1) { + _n_push(mov, off, 88); + _n_push(mov, off, 99); + peek = _n_peek(off); + if (99 != *peek) { printf("*** test_nvm_stack 2\n"); } + _n_pop(mov); + peek = _n_peek(off); + if (88 != *peek) { printf("*** test_nvm_stack 3\n"); } + _n_pop(mov); + } + + // 100 x (push, peek, pop) + { + int ii; + for (ii=0; ii <= 100; ii++){ + _n_push(mov, off, (u3_noun) ii); + } + for (ii=100; ii >= 0; ii--){ + peek = _n_peek(off); + if (ii != *peek) { printf("*** test_nvm_stack 4\n"); } + _n_pop(mov); + } + } + + // peet() + { + _n_push(mov, off, 333); + _n_push(mov, off, 444); + + peek = _n_peet(mov, off); + if (333 != *peek) { printf("*** test_nvm_stack 5\n"); } + + _n_push(mov, off, 555); + peek = _n_peet(mov, off); + if (444 != *peek) { printf("*** test_nvm_stack 6\n"); } + } + + // pep() + { + _n_push(mov, off, 777); + u3_noun ret = _n_pep(mov, off); + if (777 != ret) { printf("*** test_nvm_stack 7\n"); } + + + _n_push(mov, off, 777); + _n_push(mov, off, 888); + ret = _n_pep(mov, off); + if (888 != ret) { printf("*** test_nvm_stack 8\n"); } + ret = _n_pep(mov, off); + if (777 != ret) { printf("*** test_nvm_stack 9\n"); } + + } + + // toss + { + _n_push(mov, off, 2777); + _n_push(mov, off, 3888); + _n_toss(mov, off); + u3_noun ret = _n_pep(mov, off); + if (2777 != ret) { printf("*** test_nvm_stack 10\n"); } + + } + + // swap + { + _n_push(mov, off, 2002); + _n_push(mov, off, 3003); + _n_swap(mov, off); + u3_noun ret = _n_pep(mov, off); + if (2002 != ret) { printf("*** test_nvm_stack 11\n"); } + ret = _n_pep(mov, off); + if (3003 != ret) { printf("*** test_nvm_stack 12\n"); } + + } +} + +/* _test_nvm_stack_south(): test the stack usage in an inner, south road +*/ +u3_noun +_test_nvm_stack_south(u3_noun arg) +{ + c3_ys mov = 2; + c3_ys off = -2; + + _test_nvm_stack_inner(mov, off); + + return u3_nul; +} +#endif + +/* _test_nvm_stack(): test the stack usage of the bytecode interpreter +** (growing in both directions: N and S) +*/ +static void +_test_nvm_stack() +{ + // XX disabled, static functions + // XX rewrite to use u3a_push/u3a_pop? + // +#if 0 + // north road + c3_ys mov = -2; + c3_ys off = 0; + _test_nvm_stack_inner(mov, off); + + // south road + u3m_soft(100, &_test_nvm_stack_south, 0); +#endif +} + +static c3_i +_test_noun(void) +{ + c3_i ret_i = 1; + + if ( !_test_chop() ) { + fprintf(stderr, "test noun: chop failed\r\n"); + ret_i = 0; + } + + return ret_i; +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + if ( !_test_noun() ) { + fprintf(stderr, "test noun: failed\r\n"); + exit(1); + } + + // GC + // + u3m_grab(u3_none); + + // XX the following tests leak memory + // fix and move to _test_noun() + // + _test_noun_bits_set(); + _test_noun_bits_read(); + _test_imprison(); + _test_imprison_complex(); + _test_sing(); + _test_fing(); + _test_met(); + _test_cells(); + _test_cells_complex(); + _test_u3r_at(); + _test_nvm_stack(); + + fprintf(stderr, "test_noun: ok\n"); + + return 0; +} diff --git a/vere/pkg/vere/pier.c b/vere/pkg/vere/pier.c new file mode 100644 index 0000000..4dee024 --- /dev/null +++ b/vere/pkg/vere/pier.c @@ -0,0 +1,1459 @@ +/// @file + +#include "db/lmdb.h" +#include "ent/ent.h" +#include "noun.h" +#include "pace.h" +#include "vere.h" +#include "version.h" +#include "curl/curl.h" + +#define PIER_WORK_BATCH 10ULL + +#undef VERBOSE_PIER + +/* _pier_peek_plan(): add a u3_pico to the peek queue +*/ +static void +_pier_peek_plan(u3_pier* pir_u, u3_pico* pic_u) +{ + if (!pir_u->pec_u.ent_u) { + u3_assert( !pir_u->pec_u.ext_u ); + pir_u->pec_u.ent_u = pir_u->pec_u.ext_u = pic_u; + } + else { + pir_u->pec_u.ent_u->nex_u = pic_u; + pir_u->pec_u.ent_u = pic_u; + } + + u3_pier_spin(pir_u); +} + +/* _pier_peek_next(): pop u3_pico off of peek queue +*/ +static u3_pico* +_pier_peek_next(u3_pier* pir_u) +{ + u3_pico* pic_u = pir_u->pec_u.ext_u; + + if (pic_u) { + pir_u->pec_u.ext_u = pic_u->nex_u; + if (!pir_u->pec_u.ext_u) { + pir_u->pec_u.ent_u = 0; + } + + pic_u->nex_u = 0; + } + + return pic_u; +} + +/* _pier_work_send(): send new events for processing +*/ +static void +_pier_work_send(u3_work* wok_u) +{ + u3_auto* car_u = wok_u->car_u; + u3_pier* pir_u = wok_u->pir_u; + u3_lord* god_u = pir_u->god_u; + c3_w len_w = 0; + + // calculate work batch size + { + // XX work depth, or full lord send-stack depth? + // + if ( PIER_WORK_BATCH > god_u->dep_w ) { + len_w = PIER_WORK_BATCH - god_u->dep_w; + } + } + + // send batch + // + { + u3_ovum* egg_u; + u3_pico* pic_u; + u3_noun ovo; + + while ( len_w && car_u && (egg_u = u3_auto_next(car_u, &ovo)) ) { + len_w--; + u3_lord_work(god_u, egg_u, ovo); + + // queue events depth first + // + car_u = egg_u->car_u; + + // interleave scry requests + // + if ( len_w && (pic_u = _pier_peek_next(pir_u)) ) + { + len_w--; + u3_lord_peek(god_u, pic_u); + u3_pico_free(pic_u); + } + } + + // if there's room left in the batch, fill it up with remaining scries + // + while ( len_w-- && (pic_u = _pier_peek_next(pir_u)) ) + { + u3_lord_peek(god_u, pic_u); + u3_pico_free(pic_u); + } + } +} + +/* _pier_work(): advance event processing. +*/ +static void +_pier_work(u3_work* wok_u) +{ + u3_pier* pir_u = wok_u->pir_u; + + if ( c3n == pir_u->liv_o ) { + pir_u->liv_o = u3_auto_live(wok_u->car_u); + + // all i/o drivers are fully initialized + // + if ( c3y == pir_u->liv_o ) { + // XX this is when "boot" is actually complete + // XX even better would be after neighboring with our sponsor + // + u3l_log("pier (%" PRIu64 "): live", pir_u->god_u->eve_d); + + // XX move callbacking to king + // + if ( u3_Host.bot_f ) { + u3_Host.bot_f(); + } + } + } + + if ( u3_psat_work == pir_u->sat_e ) { + _pier_work_send(wok_u); + } + else { + u3_assert( u3_psat_done == pir_u->sat_e ); + } +} + +/* _pier_on_lord_work_spin(): start spinner +*/ +static void +_pier_on_lord_work_spin(void* ptr_v, u3_atom pin, c3_o del_o) +{ + u3_pier* pir_u = ptr_v; + + u3_assert( (u3_psat_wyrd == pir_u->sat_e) + || (u3_psat_work == pir_u->sat_e) + || (u3_psat_done == pir_u->sat_e) ); + + u3_term_start_spinner(pin, del_o); +} + +/* _pier_on_lord_work_spun(): stop spinner +*/ +static void +_pier_on_lord_work_spun(void* ptr_v) +{ + u3_pier* pir_u = ptr_v; + + u3_assert( (u3_psat_wyrd == pir_u->sat_e) + || (u3_psat_work == pir_u->sat_e) + || (u3_psat_done == pir_u->sat_e) ); + + u3_term_stop_spinner(); +} + +/* _pier_on_lord_work_done(): event completion from worker. +*/ +static void +_pier_on_lord_work_done(void* ptr_v, + u3_ovum* egg_u, + u3_noun act) +{ + u3_pier* pir_u = ptr_v; + + u3_assert( (u3_psat_work == pir_u->sat_e) + || (u3_psat_done == pir_u->sat_e) ); + +#ifdef VERBOSE_PIER + fprintf(stderr, "pier (%" PRIu64 "): work: done\r\n", tac_u->eve_d); +#endif + + u3_auto_done(egg_u); + + // XX consider async + // + u3_auto_kick(pir_u->wok_u->car_u, act); + + _pier_work(pir_u->wok_u); +} + +/* _pier_on_lord_work_bail(): event failure from worker. +*/ +static void +_pier_on_lord_work_bail(void* ptr_v, u3_ovum* egg_u, u3_noun lud) +{ + u3_pier* pir_u = ptr_v; + +#ifdef VERBOSE_PIER + fprintf(stderr, "pier: work: bail\r\n"); +#endif + + u3_assert( (u3_psat_work == pir_u->sat_e) + || (u3_psat_done == pir_u->sat_e) ); + + u3_auto_bail(egg_u, lud); + + // XX groace + // + if ( pir_u->wok_u ) { + _pier_work(pir_u->wok_u); + } +} + +/* _pier_work_afte_cb(): run on every loop iteration after i/o polling. +*/ +static void +_pier_work_afte_cb(uv_check_t* cek_u) +{ + u3_work* wok_u = cek_u->data; + _pier_work(wok_u); +} + +/* _pier_work_idle_cb(): run on next loop iteration. +*/ +static void +_pier_work_idle_cb(uv_idle_t* idl_u) +{ + u3_work* wok_u = idl_u->data; + _pier_work(wok_u); + uv_idle_stop(idl_u); +} + +/* u3_pier_spin(): (re-)activate idle handler +*/ +void +u3_pier_spin(u3_pier* pir_u) +{ + // XX return c3n instead? + // + if ( u3_psat_work == pir_u->sat_e + || u3_psat_done == pir_u->sat_e ) + { + u3_work* wok_u = pir_u->wok_u; + + if ( !uv_is_active((uv_handle_t*)&wok_u->idl_u) ) { + uv_idle_start(&wok_u->idl_u, _pier_work_idle_cb); + } + } +} + +/* u3_pier_peek(): read namespace. +*/ +void +u3_pier_peek(u3_pier* pir_u, + u3_noun gan, + u3_noun ful, + void* ptr_v, + u3_peek_cb fun_f) +{ + u3_pico* pic_u = u3_pico_init(); + + pic_u->ptr_v = ptr_v; + pic_u->fun_f = fun_f; + pic_u->gan = gan; + // + pic_u->typ_e = u3_pico_full; + pic_u->ful = ful; + + _pier_peek_plan(pir_u, pic_u); +} + +/* u3_pier_peek_last(): read namespace, injecting ship and case. +*/ +void +u3_pier_peek_last(u3_pier* pir_u, + u3_noun gan, + c3_m car_m, + u3_atom des, + u3_noun pax, + void* ptr_v, + u3_peek_cb fun_f) +{ + u3_pico* pic_u = u3_pico_init(); + + pic_u->ptr_v = ptr_v; + pic_u->fun_f = fun_f; + pic_u->gan = gan; + // + pic_u->typ_e = u3_pico_once; + pic_u->las_u.car_m = car_m; + pic_u->las_u.des = des; + pic_u->las_u.pax = pax; + + _pier_peek_plan(pir_u, pic_u); +} + +/* _pier_stab(): parse path +*/ +static u3_noun +_pier_stab(u3_noun pac) +{ + return u3do("stab", pac); +} + +/* _pier_on_scry_done(): scry callback. +*/ +static void +_pier_on_scry_done(void* ptr_v, u3_noun nun) +{ + u3_pier* pir_u = ptr_v; + u3_weak res = u3r_at(7, nun); + + if (u3_none == res) { + u3l_log("pier: scry failed"); + } + else { + u3_weak out; + c3_c *ext_c, *pac_c; + + u3l_log("pier: scry succeeded"); + + if ( u3_Host.ops_u.puk_c ) { + pac_c = u3_Host.ops_u.puk_c; + } + else { + pac_c = u3_Host.ops_u.pek_c + 1; + } + + // try to serialize as requested + // + { + u3_atom puf = u3i_string(u3_Host.ops_u.puf_c); + if ( c3y == u3r_sing(c3__jam, puf) ) { + c3_d len_d; + c3_y* byt_y; + u3s_jam_xeno(res, &len_d, &byt_y); + out = u3i_bytes(len_d, byt_y); + ext_c = "jam"; + free(byt_y); + } + else if ( c3y == u3a_is_atom(res) ) { + out = u3dc("scot", u3k(puf), u3k(res)); + ext_c = "txt"; + } + else { + u3l_log("pier: cannot export cell as %s", u3_Host.ops_u.puf_c); + out = u3_none; + } + u3z(puf); + } + + // if serialization and export path succeeded, write to disk + // + if ( u3_none != out ) { + c3_c fil_c[256]; + snprintf(fil_c, 256, "%s.%s", pac_c, ext_c); + + u3_unix_save(fil_c, out); + u3l_log("pier: scry result in %s/.urb/put/%s", u3_Host.dir_c, fil_c); + } + } + + u3l_log("pier: exit"); + u3_pier_exit(pir_u); + + u3z(nun); +} + +static c3_c* +_resolve_czar(c3_d chu_d, c3_c* who_c) +{ + u3_noun czar = u3dc("scot", 'p', chu_d & ((1 << 8) - 1)); + c3_c* czar_c = u3r_string(czar); + + c3_c url[256]; + c3_w len_w; + c3_y* hun_y; + + sprintf(url, "https://%s.urbit.org/~/sponsor/%s", czar_c+1, who_c); + + c3_i ret_i = king_curl_bytes(url, &len_w, &hun_y, 1, 1); + if (!ret_i) { + c3_free(czar_c); + czar_c = (c3_c*)hun_y; + } + + u3z(czar); + return czar_c; +} + +static c3_o +_czar_boot_data(c3_c* czar_c, + c3_c* who_c, + c3_w* bone_w, + c3_w* czar_glx_w, + c3_w* czar_ryf_w, + c3_w* czar_lyf_w, + c3_w* czar_bon_w, + c3_w* czar_ack_w) +{ + c3_c url[256]; + c3_w len_w; + c3_y* hun_y = 0; + + if ( bone_w != NULL ) { + sprintf(url, "https://%s.urbit.org/~/boot/%s/%d", + czar_c+1, who_c, *bone_w ); + } else { + sprintf(url, "https://%s.urbit.org/~/boot/%s", czar_c+1, who_c); + } + + c3_o ret_o = c3n; + c3_i ret_i = king_curl_bytes(url, &len_w, &hun_y, 1, 1); + if ( !ret_i ) { + u3_noun jamd = u3i_bytes(len_w, hun_y); + u3_noun cued = u3qe_cue(jamd); + + u3_noun czar_glx, czar_ryf, czar_lyf, czar_bon, czar_ack; + + if ( (c3y == u3r_hext(cued, 0, &czar_glx, &czar_ryf, + &czar_lyf, &czar_bon, &czar_ack)) && + (c3y == u3r_safe_word(czar_glx, czar_glx_w)) && + (c3y == u3r_safe_word(czar_ryf, czar_ryf_w)) && + (c3y == u3r_safe_word(czar_lyf, czar_lyf_w)) ) { + if ( c3y == u3du(czar_bon) ) u3r_safe_word(u3t(czar_bon), czar_bon_w); + if ( c3y == u3du(czar_ack) ) u3r_safe_word(u3t(czar_ack), czar_ack_w); + ret_o = c3y; + } + + u3z(jamd); + u3z(cued); + c3_free(hun_y); + } + + return ret_o; +} + +/* _pier_work_init(): begin processing new events +*/ +static void +_pier_work_init(u3_pier* pir_u) +{ + u3_work* wok_u; + + u3_assert( u3_psat_wyrd == pir_u->sat_e ); + + pir_u->sat_e = u3_psat_work; + pir_u->wok_u = wok_u = c3_calloc(sizeof(*wok_u)); + wok_u->pir_u = pir_u; + + // initialize post i/o polling handle + // + uv_check_init(u3L, &wok_u->cek_u); + wok_u->cek_u.data = wok_u; + uv_check_start(&wok_u->cek_u, _pier_work_afte_cb); + + // initialize idle i/o polling handle + // + // NB, not started + // + uv_idle_init(u3L, &wok_u->idl_u); + wok_u->idl_u.data = wok_u; + + // // setup u3_lord work callbacks + // // + // u3_lord_work_cb cb_u = { + // .ptr_v = wok_u, + // .spin_f = _pier_on_lord_work_spin, + // .spun_f = _pier_on_lord_work_spun, + // .done_f = _pier_on_lord_work_done, + // .bail_f = _pier_on_lord_work_bail + // }; + // u3_lord_work_init(pir_u->god_u, cb_u); + + // XX this is messy, revise + // + if ( u3_Host.ops_u.pek_c ) { + u3_noun pex = u3do("stab", u3i_string(u3_Host.ops_u.pek_c)); + u3_noun car; + u3_noun dek; + u3_noun pax; + if ( c3n == u3r_trel(pex, &car, &dek, &pax) + || c3n == u3a_is_cat(car) ) + { + u3m_p("pier: invalid scry", pex); + _pier_on_scry_done(pir_u, u3_nul); + } else { + // run the requested scry, jam to disk, then exit + // + u3l_log("pier: scry"); + u3_pier_peek_last(pir_u, u3nc(u3_nul, u3_nul), u3k(car), u3k(dek), + u3k(pax), pir_u, _pier_on_scry_done); + } + u3z(pex); + } + else { + // initialize i/o drivers + // + wok_u->car_u = u3_auto_init(pir_u); + u3_auto_talk(wok_u->car_u); + _pier_work(wok_u); + } +} + +static void _pier_wyrd_init(u3_pier*); + +static void +_boot_scry_cb(void* vod_p, u3_noun nun) +{ + u3_pier* pir_u = (u3_pier*)vod_p; + + u3_atom who = u3dc("scot", c3__p, u3i_chubs(2, pir_u->who_d)); + c3_c* who_c = u3r_string(who); + + u3_noun rem, glx, ryf, bon, cur, nex; + c3_w glx_w, ryf_w, bon_w, cur_w, nex_w; + + c3_w czar_glx_w, czar_ryf_w, czar_lyf_w, czar_bon_w, czar_ack_w; + czar_glx_w = czar_ryf_w = czar_lyf_w = czar_bon_w = czar_ack_w = u3_none; + + if ( (c3y == u3r_qual(nun, 0, 0, 0, &rem)) && + (c3y == u3r_hext(rem, &glx, &ryf, 0, &bon, &cur, &nex)) ) { + /* + * Boot scry succeeded. Proceed to cross reference networking state against + * sponsoring galaxy. + */ + glx_w = u3r_word(0, glx); ryf_w = u3r_word(0, ryf); + bon_w = u3r_word(0, bon); cur_w = u3r_word(0, cur); + nex_w = u3r_word(0, nex); + + u3_atom czar = u3dc("scot", c3__p, glx_w); + c3_c* czar_c = u3r_string(czar); + + if ( c3n == _czar_boot_data(czar_c, who_c, &bon_w, + &czar_glx_w, &czar_ryf_w, + &czar_lyf_w, &czar_bon_w, + &czar_ack_w) ) { + u3l_log("boot: peer-state unvailable on czar, cannot protect from double-boot"); + + _pier_wyrd_init(pir_u); + } else { + if ( czar_ryf_w == ryf_w ) { + c3_w ack_w = cur_w - 1; + if ( czar_ack_w == u3_none ) { + // This codepath should never be hit + u3l_log("boot: message-sink-state unvailable on czar, cannot protect from double-boot"); + _pier_wyrd_init(pir_u); + } else if ( ( nex_w - cur_w ) >= ( czar_ack_w - ack_w ) ) { + _pier_wyrd_init(pir_u); + } else { + u3l_log("boot: failed: double-boot detected, refusing to boot %s\r\n" + "this is an old version of the ship, resume the latest version or breach\r\n" + "see https://docs.urbit.org/user-manual/id/guide-to-resets", + who_c); + u3_king_bail(); + } + } else { + // Trying to boot old ship after breach + u3l_log("boot: failed: double-boot detected, refusing to boot %s\r\n" + "you are trying to boot an existing ship from a keyfile," + "resume the latest version of the ship or breach\r\n" + "see https://docs.urbit.org/user-manual/id/guide-to-resets", + who_c); + u3_king_bail(); + } + } + + u3z(czar); + c3_free(czar_c); + } else if ( c3y == u3r_trel(nun, 0, 0, &rem) && rem == 0 ) { + /* + * Data not available for boot scry. Check against sponsoring galaxy. + * If peer state exists exit(1) unless ship has breached, + * otherwise continue boot. + */ + c3_c* czar_c = _resolve_czar(pir_u->who_d[0], who_c); + + if ( c3n == _czar_boot_data(czar_c, who_c, 0, + &czar_glx_w, &czar_ryf_w, + &czar_lyf_w, &czar_bon_w, 0) ) { + c3_free(czar_c); + _pier_wyrd_init(pir_u); + } else { + // Peer state found under czar + c3_free(czar_c); + u3_weak kf_ryf = pir_u->ryf; + if ( kf_ryf == u3_none ) { + u3l_log("boot: keyfile rift unavailable, cannot protect from double-boot"); + _pier_wyrd_init(pir_u); + } else if ( kf_ryf > czar_ryf_w ) { + // Ship breached, galaxy has not heard about the breach; continue boot + _pier_wyrd_init(pir_u); + } else if ( ( kf_ryf == czar_ryf_w ) && + ( czar_bon_w == u3_none ) ) { + // Ship has breached, continue boot + _pier_wyrd_init(pir_u); + } else { + u3l_log("boot: failed: double-boot detected, refusing to boot %s\r\n" + "this ship has already been booted elsewhere, " + "boot the existing pier or breach\r\n" + "see https://docs.urbit.org/user-manual/id/guide-to-resets", + who_c); + u3_king_bail(); + } + } + } else { + /* + * Boot scry endpoint doesn't exists. Most likely old arvo. + * Continue boot and hope for the best. + */ + u3l_log("boot: %%boot scry endpoint doesn't exist, cannot protect from double-boot"); + _pier_wyrd_init(pir_u); + } + u3z(nun); u3z(who); + c3_free(who_c); +} + + +/* _pier_double_boot_init(): maybe peek for %ax /boot. +*/ +static void +_pier_double_boot_init(u3_pier* pir_u) +{ + pir_u->sat_e = u3_psat_wyrd; + c3_d pi_d = pir_u->who_d[0]; + c3_d pt_d = pir_u->who_d[1]; + + if ( (pi_d < 256 && pt_d == 0) || (c3n == u3_Host.ops_u.net) ) { + // Skip double boot protection for galaxies and local mode ships + // + _pier_wyrd_init(pir_u); + } else { + // Double boot protection + // + u3_pico* pic_u = u3_pico_init(); + + pic_u->ptr_v = pir_u; + pic_u->fun_f = _boot_scry_cb; + pic_u->gan = u3nc(u3_nul, u3_nul); + // + pic_u->typ_e = u3_pico_once; + pic_u->las_u.car_m = c3__ax; + pic_u->las_u.des = u3_nul; + pic_u->las_u.pax = u3nc(u3i_string("boot"), u3_nul); + + u3_lord_peek(pir_u->god_u, pic_u); + u3_pico_free(pic_u); + } +} + +/* _pier_wyrd_good(): %wyrd version negotation succeeded. +*/ +static void +_pier_wyrd_good(u3_pier* pir_u, u3_ovum* egg_u) +{ + // restore event callbacks + // + { + u3_lord* god_u = pir_u->god_u; + god_u->cb_u.work_done_f = _pier_on_lord_work_done; + god_u->cb_u.work_bail_f = _pier_on_lord_work_bail; + } + + // initialize i/o drivers + // + _pier_work_init(pir_u); + + // free %wyrd driver and ovum + // + { + u3_auto* car_u = egg_u->car_u; + u3_auto_done(egg_u); + c3_free(car_u); + } +} + +/* _pier_wyrd_fail(): %wyrd version negotation failed. +*/ +static void +_pier_wyrd_fail(u3_pier* pir_u, u3_ovum* egg_u, u3_noun lud) +{ + // XX version negotiation failed, print upgrade message + // + u3l_log("pier: version negotation failed\n"); + + // XX only print trace with -v ? + // + if ( u3_nul != lud ) { + u3_auto_bail_slog(egg_u, u3k(u3t(lud))); + } + + u3z(lud); + + // free %wyrd driver and ovum + // + { + u3_auto* car_u = egg_u->car_u; + u3_auto_done(egg_u); + c3_free(car_u); + } + + u3_pier_bail(pir_u); +} + +// XX organizing version constants +// +#define VERE_NAME "vere" +#define VERE_ZUSE 409 +#define VERE_LULL 321 + +/* _pier_wyrd_aver(): check for %wend effect and version downgrade. RETAIN +*/ +static c3_o +_pier_wyrd_aver(u3_noun act) +{ + u3_noun fec, kel, ver; + + // XX review, %wend re: %wyrd optional? + // + while ( u3_nul != act ) { + u3x_cell(act, &fec, &act); + + if ( c3__wend == u3h(fec) ) { + kel = u3t(fec); + + // traverse $wynn, check for downgrades + // + while ( u3_nul != kel ) { + u3x_cell(kel, &ver, &kel); + + // check for %zuse downgrade + // + if ( (c3__zuse == u3h(ver)) + && (VERE_ZUSE != u3t(ver)) ) + { + return c3n; + } + + // XX in the future, send %wend to serf + // to also negotiate downgrade of nock/hoon/&c? + // (we don't want to have to filter effects) + // + } + } + } + + return c3y; +} + +/* _pier_on_lord_wyrd_done(): callback for successful %wyrd event. +*/ +static void +_pier_on_lord_wyrd_done(void* ptr_v, + u3_ovum* egg_u, + u3_noun act) +{ + u3_pier* pir_u = ptr_v; + + u3_assert( u3_psat_wyrd == pir_u->sat_e ); + + // arvo's side of version negotiation succeeded + // traverse [gif_y] and validate + // + if ( c3n == _pier_wyrd_aver(act) ) { + // XX messaging, cli argument to bypass + // + u3l_log("pier: version negotiation failed; downgrade"); + _pier_wyrd_fail(pir_u, egg_u, u3_nul); + } + else { + // finalize %wyrd success + // + _pier_wyrd_good(pir_u, egg_u); + + // XX do something with any %wyrd effects + // + u3z(act); + } +} + +/* _pier_on_lord_wyrd_bail(): callback for failed %wyrd event. +*/ +static void +_pier_on_lord_wyrd_bail(void* ptr_v, u3_ovum* egg_u, u3_noun lud) +{ + u3_pier* pir_u = ptr_v; + + u3_assert( u3_psat_wyrd == pir_u->sat_e ); + + // XX add cli argument to bypass negotiation failure + // +#if 1 + // print %wyrd failure and exit + // + // XX check bail mote, retry on %intr, %meme, &c + // + _pier_wyrd_fail(pir_u, egg_u, lud); +#else + // XX temporary hack to fake %wyrd success + // + { + _pier_wyrd_good(pir_u, egg_u); + u3z(lud); + } +#endif +} + +/* _pier_wyrd_card(): construct %wyrd. +*/ +static u3_noun +_pier_wyrd_card(u3_pier* pir_u) +{ + u3_lord* god_u = pir_u->god_u; + u3_noun sen; + + { + c3_l sev_l; + u3_noun now; + struct timeval tim_u; + gettimeofday(&tim_u, 0); + + now = u3_time_in_tv(&tim_u); + sev_l = u3r_mug(now); + sen = u3dc("scot", c3__uv, sev_l); + + u3z(now); + } + + // XX god_u not necessarily available yet, refactor call sites + // + u3_noun ver = u3nq(u3i_string(VERE_NAME), + u3i_string(U3_VERE_PACE), + u3dc("scot", c3__ta, u3i_string(URBIT_VERSION)), + u3_nul); + u3_noun kel = u3nl(u3nc(c3__zuse, VERE_ZUSE), // XX from both king and serf? + u3nc(c3__lull, VERE_LULL), // XX from both king and serf? + u3nc(c3__arvo, 235), // XX from both king and serf? + u3nc(c3__hoon, 136), // god_u->hon_y + u3nc(c3__nock, 4), // god_u->noc_y + u3_none); + u3_noun wir = u3nc(c3__arvo, u3_nul); + return u3nt(c3__wyrd, u3nc(sen, ver), kel); +} + +/* _pier_wyrd_init(): send %wyrd. +*/ +static void +_pier_wyrd_init(u3_pier* pir_u) +{ + u3_noun cad = _pier_wyrd_card(pir_u); + u3_noun wir = u3nc(c3__arvo, u3_nul); + + u3_assert( u3_psat_wyrd == pir_u->sat_e ); + + u3l_log("vere: checking version compatibility"); + + { + u3_lord* god_u = pir_u->god_u; + u3_auto* car_u = c3_calloc(sizeof(*car_u)); + u3_ovum* egg_u = u3_ovum_init(0, u3_blip, wir, cad); + u3_noun ovo; + + car_u->pir_u = pir_u; + car_u->nam_m = c3__wyrd; + + u3_auto_plan(car_u, egg_u); + + // instead of subscribing with u3_auto_peer(), + // we swizzle the [god_u] callbacks for full control + // + god_u->cb_u.work_done_f = _pier_on_lord_wyrd_done; + god_u->cb_u.work_bail_f = _pier_on_lord_wyrd_bail; + + u3_assert( u3_auto_next(car_u, &ovo) == egg_u ); + + u3_lord_work(god_u, egg_u, ovo); + } +} + +/* _pier_on_lord_slog(): debug printf from worker. +*/ +static void +_pier_on_lord_slog(void* ptr_v, c3_w pri_w, u3_noun tan) +{ + u3_pier* pir_u = ptr_v; + + if ( 0 != pir_u->sog_f ) { + pir_u->sog_f(pir_u->sop_p, pri_w, u3k(tan)); + } + + u3_pier_tank(0, pri_w, tan); +} + +/* _pier_on_lord_save(): worker (non-portable) snapshot complete. +*/ +static void +_pier_on_lord_save(void* ptr_v) +{ + u3_pier* pir_u = ptr_v; + +#ifdef VERBOSE_PIER + fprintf(stderr, "pier: (%" PRIu64 "): lord: save\r\n", pir_u->god_u->eve_d); +#endif + + // _pier_next(pir_u); +} + +static void +_pier_bail_impl(u3_pier* pir_u); + +/* _pier_on_lord_exit(): worker shutdown. +*/ +static void +_pier_on_lord_exit(void* ptr_v) +{ + u3_pier* pir_u = ptr_v; + + // the lord has already gone + // + pir_u->god_u = 0; + + if ( u3_psat_done != pir_u->sat_e ) { + u3l_log("pier: serf shutdown unexpected"); + u3_pier_bail(pir_u); + } + else { + _pier_bail_impl(pir_u); + } +} + +/* _pier_on_lord_bail(): worker error. +*/ +static void +_pier_on_lord_bail(void* ptr_v) +{ + u3_pier* pir_u = ptr_v; + + // the lord has already gone + // + pir_u->god_u = 0; + + u3_pier_bail(pir_u); +} + +/* _pier_on_lord_live(): worker is ready. +*/ +static void +_pier_on_lord_live(void* ptr_v, u3_atom who, c3_o fak_o) +{ + u3_pier* pir_u = ptr_v; + + // XX validate + // + u3r_chubs(0, 2, pir_u->who_d, who); + pir_u->fak_o = fak_o; + + // early exit, preparing for upgrade + // + // XX check kelvins? + // + if ( c3y == u3_Host.pep_o ) { + u3_pier_exit(pir_u); + } + else { + _pier_double_boot_init(pir_u); + } +} + +/* u3_pier_mass(): construct a $mass branch with noun/list. +*/ +u3_noun +u3_pier_mass(u3_atom cod, u3_noun lit) +{ + return u3nt(cod, c3n, lit); +} + +/* u3_pier_mase(): construct a $mass leaf. +*/ +u3_noun +u3_pier_mase(c3_c* cod_c, u3_noun dat) +{ + return u3nt(u3i_string(cod_c), c3y, dat); +} + +/* u3_pier_info(): pier status info as noun. +*/ +u3_noun +u3_pier_info(u3_pier* pir_u) +{ + u3_noun nat; + + switch (pir_u->sat_e) { + default: { + nat = u3_pier_mass(u3i_string("state-unknown"), u3_nul); + } break; + + case u3_psat_init: { + nat = u3_pier_mass(c3__init, u3_nul); + } break; + + case u3_psat_work: { + u3_work* wok_u = pir_u->wok_u; + + nat = u3_pier_mass(c3__work, + wok_u->car_u + ? u3nc(u3_pier_mass(c3__auto, u3_auto_info(wok_u->car_u)), u3_nul) + : u3_nul); + } break; + + case u3_psat_done: { + nat = u3_pier_mass(c3__done, u3_nul); + } break; + } + + return u3_pier_mass( + c3__pier, + u3i_list( + nat, + u3_lord_info(pir_u->god_u), + u3_none)); +} + +/* u3_pier_slog(): print status info. +*/ +void +u3_pier_slog(u3_pier* pir_u) +{ + switch ( pir_u->sat_e ) { + default: { + u3l_log("pier: unknown state: %u", pir_u->sat_e); + } break; + + case u3_psat_init: { + u3l_log("pier: init"); + } break; + + case u3_psat_work: { + u3l_log("pier: work"); + + { + u3_work* wok_u = pir_u->wok_u; + + if ( wok_u->car_u ) { + u3_auto_slog(wok_u->car_u); + } + } + } break; + + case u3_psat_done: { + u3l_log("pier: done"); + } break; + } + + + if ( pir_u->god_u ) { + u3_lord_slog(pir_u->god_u); + } +} + +/* _pier_init(): create a pier, loading existing. +*/ +static u3_pier* +_pier_init(c3_w wag_w, c3_c* pax_c, u3_weak ryf) +{ + // create pier + // + u3_pier* pir_u = c3_calloc(sizeof(*pir_u)); + + pir_u->pax_c = pax_c; + pir_u->sat_e = u3_psat_init; + pir_u->liv_o = c3n; + pir_u->ryf = ryf; + + // XX revise? + // + pir_u->per_s = u3_Host.ops_u.per_s; + pir_u->pes_s = u3_Host.ops_u.pes_s; + pir_u->por_s = u3_Host.ops_u.por_s; + + // initialize compute + // + { + // XX load/set secrets + // + c3_d tic_d[1]; // ticket (unstretched) + c3_d sec_d[1]; // generator (unstretched) + c3_d key_d[4]; // secret (stretched) + + key_d[0] = key_d[1] = key_d[2] = key_d[3] = 0; + + u3_lord_cb cb_u = { + .ptr_v = pir_u, + .live_f = _pier_on_lord_live, + .spin_f = _pier_on_lord_work_spin, + .spun_f = _pier_on_lord_work_spun, + .slog_f = _pier_on_lord_slog, + .work_done_f = _pier_on_lord_work_done, + .work_bail_f = _pier_on_lord_work_bail, + .save_f = _pier_on_lord_save, + .bail_f = _pier_on_lord_bail, + .exit_f = _pier_on_lord_exit + }; + + if ( !(pir_u->god_u = u3_lord_init(pax_c, wag_w, key_d, cb_u)) ) + { + c3_free(pir_u); + return 0; + } + } + + return pir_u; +} + +/* u3_pier_stay(): restart an existing pier. +*/ +u3_pier* +u3_pier_stay(c3_w wag_w, u3_noun pax, u3_weak ryf) +{ + u3_pier* pir_u; + + if ( !(pir_u = _pier_init(wag_w, u3r_string(pax), ryf)) ) { + fprintf(stderr, "pier: stay: init fail\r\n"); + u3_king_bail(); + return 0; + } + + u3z(pax); + + return pir_u; +} + +/* u3_pier_save(): save a non-portable snapshot +*/ +c3_o +u3_pier_save(u3_pier* pir_u) +{ +#ifdef VERBOSE_PIER + fprintf(stderr, "pier: (%" PRIu64 "): save: plan\r\n", pir_u->god_u->eve_d); +#endif + + // XX revise + // + if ( u3_psat_work == pir_u->sat_e ) { + u3_lord_save(pir_u->god_u); + return c3y; + } + + return c3n; +} + +/* u3_pier_meld(): globally deduplicate persistent state. +*/ +void +u3_pier_meld(u3_pier* pir_u) +{ +#ifdef VERBOSE_PIER + fprintf(stderr, "pier: (%" PRIu64 "): meld: plan\r\n", pir_u->god_u->eve_d); +#endif + + u3_lord_meld(pir_u->god_u); +} + +/* u3_pier_pack(): defragment persistent state. +*/ +void +u3_pier_pack(u3_pier* pir_u) +{ +#ifdef VERBOSE_PIER + fprintf(stderr, "pier: (%" PRIu64 "): meld: plan\r\n", pir_u->god_u->eve_d); +#endif + + u3_lord_pack(pir_u->god_u); +} + +/* _pier_work_close_cb(): dispose u3_work after closing handles. +*/ +static void +_pier_work_close_cb(uv_handle_t* idl_u) +{ + u3_work* wok_u = idl_u->data; + c3_free(wok_u); +} + +/* _pier_work_close(): close drivers/handles in the u3_psat_work state. +*/ +static void +_pier_work_close(u3_work* wok_u) +{ + u3_auto_exit(wok_u->car_u); + + uv_close((uv_handle_t*)&wok_u->cek_u, _pier_work_close_cb); + uv_close((uv_handle_t*)&wok_u->idl_u, 0); + wok_u->cek_u.data = wok_u; +} + +/* _pier_bail_impl(): immediately shutdown. +*/ +static void +_pier_bail_impl(u3_pier* pir_u) +{ + pir_u->sat_e = u3_psat_done; + + // halt serf + // + if ( pir_u->god_u ) { + u3_lord_halt(pir_u->god_u); + pir_u->god_u = 0; + } + + // close drivers + // + if ( pir_u->wok_u ) { + _pier_work_close(pir_u->wok_u); + pir_u->wok_u = 0; + } + + // XX unlink properly + // + u3K.pir_u = 0; + + c3_free(pir_u->pax_c); + c3_free(pir_u); + + u3_king_done(); +} + +/* u3_pier_bail(): fatal error. +*/ +void +u3_pier_bail(u3_pier* pir_u) +{ + u3_Host.xit_i = 1; + _pier_bail_impl(pir_u); +} + +/* u3_pier_exit(): graceful shutdown. +*/ +void +u3_pier_exit(u3_pier* pir_u) +{ + if ( u3_psat_done == pir_u->sat_e ) { + return; + } + + pir_u->sat_e = u3_psat_done; + + if ( pir_u->god_u ) { + u3_lord_exit(pir_u->god_u); + pir_u->god_u = 0; + } + else { + _pier_bail_impl(pir_u); + } +} + + +/* c3_rand(): fill a 512-bit (16-word) buffer. +*/ +void +c3_rand(c3_w* rad_w) +{ + if ( 0 != ent_getentropy(rad_w, 64) ) { + fprintf(stderr, "c3_rand getentropy: %s\n", strerror(errno)); + // XX review + // + u3_king_bail(); + } +} + +/* _pier_dump_tape(): dump a tape, old style. Don't do this. +*/ +static void +_pier_dump_tape(FILE* fil_u, u3_noun tep) +{ + u3_noun tap = tep; + + while ( c3y == u3du(tap) ) { + c3_c car_c; + + // XX this utf-8 caution is unwarranted + // + // we already write() utf8 directly to streams in term.c + // + // if ( u3h(tap) >= 127 ) { + // car_c = '?'; + // } else + car_c = u3h(tap); + + putc(car_c, fil_u); + tap = u3t(tap); + } + + u3z(tep); +} + +/* _pier_dump_wall(): dump a wall, old style. Don't do this. +*/ +static void +_pier_dump_wall(FILE* fil_u, u3_noun wol) +{ + u3_noun wal = wol; + + while ( u3_nul != wal ) { + _pier_dump_tape(fil_u, u3k(u3h(wal))); + + wal = u3t(wal); + + if ( u3_nul != wal ) { + putc(13, fil_u); + putc(10, fil_u); + } + } + + u3z(wol); +} + +/* u3_pier_tank(): dump single tank. +*/ +void +u3_pier_tank(c3_l tab_l, c3_w pri_w, u3_noun tac) +{ + u3_noun blu = u3_term_get_blew(0); + c3_l col_l = u3h(blu); + FILE* fil_u = u3_term_io_hija(); + + // XX temporary, for urb.py test runner + // XX eval --cue also using this; + // would be nice to have official way to dump goof to stderr + // + if ( c3y == u3_Host.ops_u.dem ) { + fil_u = stderr; + } + + if ( c3n == u3_Host.ops_u.tem ) { + switch ( pri_w ) { + case 3: fprintf(fil_u, "\033[31m>>> "); break; + case 2: fprintf(fil_u, "\033[33m>> "); break; + case 1: fprintf(fil_u, "\033[32m> "); break; + case 0: fprintf(fil_u, "\033[38;5;244m"); break; + } + } + else { + switch ( pri_w ) { + case 3: fprintf(fil_u, ">>> "); break; + case 2: fprintf(fil_u, ">> "); break; + case 1: fprintf(fil_u, "> "); break; + } + } + + c3_t bad_t = 0; + // if we have no arvo kernel and can't evaluate nock + // only print %leaf tanks + // + if ( 0 == u3A->roc ) { + if ( c3__leaf == u3h(tac) ) { + _pier_dump_tape(fil_u, u3k(u3t(tac))); + } + } + else { + u3_noun low = u3dc("(slum soft wash)", u3nc(tab_l, col_l), u3k(tac)); + u3_noun wol; + if (c3y == u3r_cell(low, NULL, &wol)) { + u3k(wol); u3z(low); + _pier_dump_wall(fil_u, wol); + } + else { + // low == u3_nul, no need to lose it + // + bad_t = 1; + } + } + + if ( c3n == u3_Host.ops_u.tem ) { + fprintf(fil_u, "\033[0m"); + } + + fflush(fil_u); + + u3_term_io_loja(0, fil_u); + u3z(blu); + u3z(tac); + + if ( bad_t ) { + u3l_log("%%slog-bad-tank"); + } +} + +/* u3_pier_punt(): dump tank list. +*/ +void +u3_pier_punt(c3_l tab_l, u3_noun tac) +{ + u3_noun cat = tac; + + while ( c3y == u3du(cat) ) { + u3_pier_tank(tab_l, 0, u3k(u3h(cat))); + cat = u3t(cat); + } + + u3z(tac); +} + +/* u3_pier_punt_goof(): dump a [mote tang] crash report. +*/ +void +u3_pier_punt_goof(const c3_c* cap_c, u3_noun dud) +{ + u3_noun bud = dud; + u3_noun mot, tan; + + u3x_cell(dud, &mot, &tan); + + u3l_log(""); + u3_pier_punt(0, u3qb_flop(tan)); + + { + c3_c* mot_c = u3r_string(mot); + u3l_log("%s: bail: %%%s", cap_c, mot_c); + c3_free(mot_c); + } + + u3z(bud); +} + +/* u3_pier_punt_ovum(): print ovum details. +*/ +void +u3_pier_punt_ovum(const c3_c* cap_c, u3_noun wir, u3_noun tag) +{ + c3_c* tag_c = u3r_string(tag); + u3_noun riw = u3do("spat", wir); + c3_c* wir_c = u3r_string(riw); + + u3l_log("%s: %%%s event on %s failed\n", cap_c, tag_c, wir_c); + + c3_free(tag_c); + c3_free(wir_c); + u3z(riw); +} + +/* u3_pier_sway(): print trace. +*/ +void +u3_pier_sway(c3_l tab_l, u3_noun tax) +{ + u3_noun mok = u3dc("mook", 2, tax); + + u3_pier_punt(tab_l, u3k(u3t(mok))); + u3z(mok); +} + +/* u3_pier_mark(): mark all Loom allocations in all u3_pier structs. +*/ +c3_w +u3_pier_mark(FILE* fil_u) +{ + return 0; +} diff --git a/vere/pkg/vere/platform/darwin/daemon.c b/vere/pkg/vere/platform/darwin/daemon.c new file mode 100644 index 0000000..3310062 --- /dev/null +++ b/vere/pkg/vere/platform/darwin/daemon.c @@ -0,0 +1,93 @@ +/// @file + +#include "noun.h" +#include "vere.h" +#include + +/* + This is set to the the write-end of a pipe when Urbit is started in + daemon mode. It's meant to be used as a signal to the parent process + that the child process has finished booting. +*/ +static c3_i _child_process_booted_signal_fd = -1; + +/* + This should be called whenever the ship has been booted enough to + handle commands from automation code. Specifically, once the Eyre's + `chis` interface is up and running. + + In daemon mode, this signals to the parent process that it can + exit. Otherwise, it does nothing. + + Once we've sent a signal with `write`, we close the file descriptor + and overwrite the global to make it impossible to accidentally do + this twice. +*/ +static void _on_boot_completed_cb() { + c3_c buf[2] = {0,0}; + + if ( -1 == _child_process_booted_signal_fd ) { + return; + } + + if ( 0 == write(_child_process_booted_signal_fd, buf, 1) ) { + u3_assert(!"_on_boot_completed_cb: Can't write to parent FD"); + } + + close(_child_process_booted_signal_fd); + _child_process_booted_signal_fd = -1; +} + +/* u3_daemon_init(): platform-specific daemon mode initialization. + + We use a pipe to communicate between the child and the parent. The + parent waits for the child to write something to the pipe and + then exits. If the pipe is closed with nothing written to it, get + the exit status from the child process and also exit with that status. + + We want the child to write to the pipe once it's booted, so we put + `_on_boot_completed_cb` into `u3_Host.bot_f`, which is NULL in + non-daemon mode. That gets called once the `chis` service is + available. + + In both processes, we are good fork() citizens, and close all unused + file descriptors. Closing `pipefd[1]` in the parent process is + especially important, since the pipe needs to be closed if the child + process dies. When the pipe is closed, the read fails, and that's + how we know that something went wrong. + + There are some edge cases around `WEXITSTATUS` that are not handled + here, but I don't think it matters. +*/ +void +u3_daemon_init() +{ + c3_i pipefd[2]; + + if ( 0 != pipe(pipefd) ) { + u3_assert(!"Failed to create pipe"); + } + + pid_t childpid = fork(); + + if ( 0 == childpid ) { + close(pipefd[0]); + _child_process_booted_signal_fd = pipefd[1]; + u3_Host.bot_f = _on_boot_completed_cb; + return; + } + + close(pipefd[1]); + close(0); + close(1); + close(2); + + c3_c buf[2] = {0,0}; + if ( 1 == read(pipefd[0], buf, 1) ) { + exit(0); + } + + c3_i status; + wait(&status); + exit(WEXITSTATUS(status)); +} diff --git a/vere/pkg/vere/platform/darwin/mach.c b/vere/pkg/vere/platform/darwin/mach.c new file mode 100644 index 0000000..9775882 --- /dev/null +++ b/vere/pkg/vere/platform/darwin/mach.c @@ -0,0 +1,28 @@ +#include "log.h" + +#include +#include +#include +#include + + +// lldb does not listen to BSD signals, it only listens to Mach exceptions. +// The Mach exception EXC_BAD_ACCESS corresponds to SIGSEGV, but lldb has +// problems converting between them because of a longstanding macOS kernel bug. +// This means that without this workaround we cannot debug our binaries with +// lldb. The first segfault we hit causes an infinite loop in lldb no matter +// how many times you try to continue. This workaround is implemented in projects +// such as the Go runtime. +// See https://bugs.llvm.org/show_bug.cgi?id=22868#c1 for more details. + +void darwin_register_mach_exception_handler() { + kern_return_t kr = task_set_exception_ports( + mach_task_self(), + EXC_MASK_BAD_ACCESS, // SIGSEGV + MACH_PORT_NULL, + EXCEPTION_STATE_IDENTITY, + MACHINE_THREAD_STATE); + if ( KERN_SUCCESS != kr) { + u3l_log("mach: unable to register exception handler"); + } +} diff --git a/vere/pkg/vere/platform/darwin/ptty.c b/vere/pkg/vere/platform/darwin/ptty.c new file mode 100644 index 0000000..a1ec334 --- /dev/null +++ b/vere/pkg/vere/platform/darwin/ptty.c @@ -0,0 +1,192 @@ +/// @file + +#include "c3/c3.h" +#include "noun.h" +#include "vere.h" +#include +#include + +/* u3_ptty: POSIX terminal extension to u3_utty. +*/ +typedef struct { + u3_utty tty_u; // common tty structure + c3_i cug_i; // blocking fcntl flags + c3_i nob_i; // nonblocking fcntl flags + struct termios bak_u; // cooked terminal state + struct termios raw_u; // raw terminal state +} u3_ptty; + +/* _term_tcsetattr(): tcsetattr w/retry on EINTR. +*/ +static c3_i +_term_tcsetattr(c3_i fil_i, c3_i act_i, const struct termios* tms_u) +{ + c3_i ret_i = 0; + c3_w len_w = 0; + + do { + // abort pathological retry loop + // + if ( 100 == ++len_w ) { + fprintf(stderr, "term: tcsetattr loop: %s\r\n", strerror(errno)); + return -1; + } + ret_i = tcsetattr(fil_i, act_i, tms_u); + } while ( (-1 == ret_i) && (EINTR == errno) ); + + return ret_i; +} + +/* _ttyf_start_raw_input(): sets the tty to raw input. +*/ +static c3_o +_ttyf_start_raw_input(u3_utty* uty_u) +{ + u3_ptty* pty_u = (u3_ptty*)uty_u; + if ( 0 != _term_tcsetattr(uty_u->fid_i, TCSADRAIN, &pty_u->raw_u) ) { + return c3n; + } + if ( -1 == fcntl(uty_u->fid_i, F_SETFL, pty_u->nob_i) ) { + u3_assert(!"init-fcntl"); + } + return c3y; +} + +/* _ttyf_start_raw_input(): ends raw input on the tty. +*/ +static c3_o +_ttyf_end_raw_input(u3_utty* uty_u) +{ + u3_ptty* pty_u = (u3_ptty*)uty_u; + if ( 0 != _term_tcsetattr(uty_u->fid_i, TCSADRAIN, &pty_u->bak_u) ) { + return c3n; + } + if ( -1 == fcntl(uty_u->fid_i, F_SETFL, pty_u->cug_i) ) { + u3_assert(!"exit-fcntl"); + } + return c3y; +} + +/* _ttyf_hija(): hijacks the tty for cooked output. +*/ +static c3_o +_ttyf_hija(u3_utty* uty_u) +{ + u3_ptty* pty_u = (u3_ptty*)uty_u; + if ( 0 != _term_tcsetattr(1, TCSADRAIN, &pty_u->bak_u) ) { + perror("hija-tcsetattr-1"); + u3_assert(!"hija-tcsetattr"); + } + if ( -1 == fcntl(1, F_SETFL, pty_u->cug_i) ) { + perror("hija-fcntl-1"); + u3_assert(!"hija-fcntl"); + } + if ( 0 != _term_tcsetattr(0, TCSADRAIN, &pty_u->bak_u) ) { + perror("hija-tcsetattr-0"); + u3_assert(!"hija-tcsetattr"); + } + if ( -1 == fcntl(0, F_SETFL, pty_u->cug_i) ) { + perror("hija-fcntl-0"); + u3_assert(!"hija-fcntl"); + } + return c3y; +} + +/* _ttyf_loja(): releases the tty from cooked output. +*/ +static c3_o +_ttyf_loja(u3_utty* uty_u) +{ + u3_ptty* pty_u = (u3_ptty*)uty_u; + if ( 0 != _term_tcsetattr(1, TCSADRAIN, &pty_u->raw_u) ) { + perror("loja-tcsetattr-1"); + u3_assert(!"loja-tcsetattr"); + } + if ( -1 == fcntl(1, F_SETFL, pty_u->nob_i) ) { + perror("hija-fcntl-1"); + u3_assert(!"loja-fcntl"); + } + if ( 0 != _term_tcsetattr(0, TCSADRAIN, &pty_u->raw_u) ) { + perror("loja-tcsetattr-0"); + u3_assert(!"loja-tcsetattr"); + } + if ( -1 == fcntl(0, F_SETFL, pty_u->nob_i) ) { + perror("hija-fcntl-0"); + u3_assert(!"loja-fcntl"); + } + return c3y; +} + +/* _ttyf_get_winsize(): gets the tty window size. +*/ +static c3_o +_ttyf_get_winsize(u3_utty* uty_u, c3_l* col_l, c3_l* row_l) +{ + struct winsize siz_u; + if ( 0 == ioctl(uty_u->fid_i, TIOCGWINSZ, &siz_u) ) + { + *col_l = siz_u.ws_col; + *row_l = siz_u.ws_row; + return c3y; + } else { + return c3n; + } +} + +/* u3_ptty_init(): initialize platform-specific tty. +*/ +u3_utty* +u3_ptty_init(uv_loop_t* lup_u, const c3_c** err_c) +{ + u3_ptty* pty_u = c3_calloc(sizeof(u3_ptty)); + u3_utty* uty_u = &pty_u->tty_u; + + if ( !isatty(0) || !isatty(1) ) { + *err_c = "not a tty"; + c3_free(pty_u); + return NULL; + } + + uv_pipe_init(lup_u, &uty_u->pin_u.pip_u, 0); + uv_pipe_init(lup_u, &uty_u->pop_u.pip_u, 0); + uv_pipe_open(&uty_u->pin_u.pip_u, 0); + uv_pipe_open(&uty_u->pop_u.pip_u, 1); + + // Load old terminal state to restore. + // + { + if ( 0 != tcgetattr(uty_u->fid_i, &pty_u->bak_u) ) { + u3_assert(!"init-tcgetattr"); + } + if ( -1 == fcntl(uty_u->fid_i, F_GETFL, &pty_u->cug_i) ) { + u3_assert(!"init-fcntl"); + } + pty_u->cug_i &= ~O_NONBLOCK; // could fix? + pty_u->nob_i = pty_u->cug_i | O_NONBLOCK; // O_NDELAY on older unix + } + + // Construct raw termios configuration. + // + // makes input available per-character, does not echo input, + // disables special input pre-processing, output post-processing. + // + { + pty_u->raw_u = pty_u->bak_u; + + pty_u->raw_u.c_lflag &= ~(ECHO | ECHONL | ICANON | IEXTEN); + pty_u->raw_u.c_iflag &= ~(ICRNL | INPCK | ISTRIP); + pty_u->raw_u.c_cflag &= ~(CSIZE | PARENB); + pty_u->raw_u.c_cflag |= CS8; + pty_u->raw_u.c_oflag &= ~(OPOST); + pty_u->raw_u.c_cc[VMIN] = 0; + pty_u->raw_u.c_cc[VTIME] = 0; + } + + uty_u->fid_i = 1; + uty_u->sta_f = _ttyf_start_raw_input; + uty_u->sto_f = _ttyf_end_raw_input; + uty_u->hij_f = _ttyf_hija; + uty_u->loj_f = _ttyf_loja; + uty_u->wsz_f = _ttyf_get_winsize; + return uty_u; +} diff --git a/vere/pkg/vere/platform/linux/daemon.c b/vere/pkg/vere/platform/linux/daemon.c new file mode 100644 index 0000000..3310062 --- /dev/null +++ b/vere/pkg/vere/platform/linux/daemon.c @@ -0,0 +1,93 @@ +/// @file + +#include "noun.h" +#include "vere.h" +#include + +/* + This is set to the the write-end of a pipe when Urbit is started in + daemon mode. It's meant to be used as a signal to the parent process + that the child process has finished booting. +*/ +static c3_i _child_process_booted_signal_fd = -1; + +/* + This should be called whenever the ship has been booted enough to + handle commands from automation code. Specifically, once the Eyre's + `chis` interface is up and running. + + In daemon mode, this signals to the parent process that it can + exit. Otherwise, it does nothing. + + Once we've sent a signal with `write`, we close the file descriptor + and overwrite the global to make it impossible to accidentally do + this twice. +*/ +static void _on_boot_completed_cb() { + c3_c buf[2] = {0,0}; + + if ( -1 == _child_process_booted_signal_fd ) { + return; + } + + if ( 0 == write(_child_process_booted_signal_fd, buf, 1) ) { + u3_assert(!"_on_boot_completed_cb: Can't write to parent FD"); + } + + close(_child_process_booted_signal_fd); + _child_process_booted_signal_fd = -1; +} + +/* u3_daemon_init(): platform-specific daemon mode initialization. + + We use a pipe to communicate between the child and the parent. The + parent waits for the child to write something to the pipe and + then exits. If the pipe is closed with nothing written to it, get + the exit status from the child process and also exit with that status. + + We want the child to write to the pipe once it's booted, so we put + `_on_boot_completed_cb` into `u3_Host.bot_f`, which is NULL in + non-daemon mode. That gets called once the `chis` service is + available. + + In both processes, we are good fork() citizens, and close all unused + file descriptors. Closing `pipefd[1]` in the parent process is + especially important, since the pipe needs to be closed if the child + process dies. When the pipe is closed, the read fails, and that's + how we know that something went wrong. + + There are some edge cases around `WEXITSTATUS` that are not handled + here, but I don't think it matters. +*/ +void +u3_daemon_init() +{ + c3_i pipefd[2]; + + if ( 0 != pipe(pipefd) ) { + u3_assert(!"Failed to create pipe"); + } + + pid_t childpid = fork(); + + if ( 0 == childpid ) { + close(pipefd[0]); + _child_process_booted_signal_fd = pipefd[1]; + u3_Host.bot_f = _on_boot_completed_cb; + return; + } + + close(pipefd[1]); + close(0); + close(1); + close(2); + + c3_c buf[2] = {0,0}; + if ( 1 == read(pipefd[0], buf, 1) ) { + exit(0); + } + + c3_i status; + wait(&status); + exit(WEXITSTATUS(status)); +} diff --git a/vere/pkg/vere/platform/linux/ptty.c b/vere/pkg/vere/platform/linux/ptty.c new file mode 100644 index 0000000..a1ec334 --- /dev/null +++ b/vere/pkg/vere/platform/linux/ptty.c @@ -0,0 +1,192 @@ +/// @file + +#include "c3/c3.h" +#include "noun.h" +#include "vere.h" +#include +#include + +/* u3_ptty: POSIX terminal extension to u3_utty. +*/ +typedef struct { + u3_utty tty_u; // common tty structure + c3_i cug_i; // blocking fcntl flags + c3_i nob_i; // nonblocking fcntl flags + struct termios bak_u; // cooked terminal state + struct termios raw_u; // raw terminal state +} u3_ptty; + +/* _term_tcsetattr(): tcsetattr w/retry on EINTR. +*/ +static c3_i +_term_tcsetattr(c3_i fil_i, c3_i act_i, const struct termios* tms_u) +{ + c3_i ret_i = 0; + c3_w len_w = 0; + + do { + // abort pathological retry loop + // + if ( 100 == ++len_w ) { + fprintf(stderr, "term: tcsetattr loop: %s\r\n", strerror(errno)); + return -1; + } + ret_i = tcsetattr(fil_i, act_i, tms_u); + } while ( (-1 == ret_i) && (EINTR == errno) ); + + return ret_i; +} + +/* _ttyf_start_raw_input(): sets the tty to raw input. +*/ +static c3_o +_ttyf_start_raw_input(u3_utty* uty_u) +{ + u3_ptty* pty_u = (u3_ptty*)uty_u; + if ( 0 != _term_tcsetattr(uty_u->fid_i, TCSADRAIN, &pty_u->raw_u) ) { + return c3n; + } + if ( -1 == fcntl(uty_u->fid_i, F_SETFL, pty_u->nob_i) ) { + u3_assert(!"init-fcntl"); + } + return c3y; +} + +/* _ttyf_start_raw_input(): ends raw input on the tty. +*/ +static c3_o +_ttyf_end_raw_input(u3_utty* uty_u) +{ + u3_ptty* pty_u = (u3_ptty*)uty_u; + if ( 0 != _term_tcsetattr(uty_u->fid_i, TCSADRAIN, &pty_u->bak_u) ) { + return c3n; + } + if ( -1 == fcntl(uty_u->fid_i, F_SETFL, pty_u->cug_i) ) { + u3_assert(!"exit-fcntl"); + } + return c3y; +} + +/* _ttyf_hija(): hijacks the tty for cooked output. +*/ +static c3_o +_ttyf_hija(u3_utty* uty_u) +{ + u3_ptty* pty_u = (u3_ptty*)uty_u; + if ( 0 != _term_tcsetattr(1, TCSADRAIN, &pty_u->bak_u) ) { + perror("hija-tcsetattr-1"); + u3_assert(!"hija-tcsetattr"); + } + if ( -1 == fcntl(1, F_SETFL, pty_u->cug_i) ) { + perror("hija-fcntl-1"); + u3_assert(!"hija-fcntl"); + } + if ( 0 != _term_tcsetattr(0, TCSADRAIN, &pty_u->bak_u) ) { + perror("hija-tcsetattr-0"); + u3_assert(!"hija-tcsetattr"); + } + if ( -1 == fcntl(0, F_SETFL, pty_u->cug_i) ) { + perror("hija-fcntl-0"); + u3_assert(!"hija-fcntl"); + } + return c3y; +} + +/* _ttyf_loja(): releases the tty from cooked output. +*/ +static c3_o +_ttyf_loja(u3_utty* uty_u) +{ + u3_ptty* pty_u = (u3_ptty*)uty_u; + if ( 0 != _term_tcsetattr(1, TCSADRAIN, &pty_u->raw_u) ) { + perror("loja-tcsetattr-1"); + u3_assert(!"loja-tcsetattr"); + } + if ( -1 == fcntl(1, F_SETFL, pty_u->nob_i) ) { + perror("hija-fcntl-1"); + u3_assert(!"loja-fcntl"); + } + if ( 0 != _term_tcsetattr(0, TCSADRAIN, &pty_u->raw_u) ) { + perror("loja-tcsetattr-0"); + u3_assert(!"loja-tcsetattr"); + } + if ( -1 == fcntl(0, F_SETFL, pty_u->nob_i) ) { + perror("hija-fcntl-0"); + u3_assert(!"loja-fcntl"); + } + return c3y; +} + +/* _ttyf_get_winsize(): gets the tty window size. +*/ +static c3_o +_ttyf_get_winsize(u3_utty* uty_u, c3_l* col_l, c3_l* row_l) +{ + struct winsize siz_u; + if ( 0 == ioctl(uty_u->fid_i, TIOCGWINSZ, &siz_u) ) + { + *col_l = siz_u.ws_col; + *row_l = siz_u.ws_row; + return c3y; + } else { + return c3n; + } +} + +/* u3_ptty_init(): initialize platform-specific tty. +*/ +u3_utty* +u3_ptty_init(uv_loop_t* lup_u, const c3_c** err_c) +{ + u3_ptty* pty_u = c3_calloc(sizeof(u3_ptty)); + u3_utty* uty_u = &pty_u->tty_u; + + if ( !isatty(0) || !isatty(1) ) { + *err_c = "not a tty"; + c3_free(pty_u); + return NULL; + } + + uv_pipe_init(lup_u, &uty_u->pin_u.pip_u, 0); + uv_pipe_init(lup_u, &uty_u->pop_u.pip_u, 0); + uv_pipe_open(&uty_u->pin_u.pip_u, 0); + uv_pipe_open(&uty_u->pop_u.pip_u, 1); + + // Load old terminal state to restore. + // + { + if ( 0 != tcgetattr(uty_u->fid_i, &pty_u->bak_u) ) { + u3_assert(!"init-tcgetattr"); + } + if ( -1 == fcntl(uty_u->fid_i, F_GETFL, &pty_u->cug_i) ) { + u3_assert(!"init-fcntl"); + } + pty_u->cug_i &= ~O_NONBLOCK; // could fix? + pty_u->nob_i = pty_u->cug_i | O_NONBLOCK; // O_NDELAY on older unix + } + + // Construct raw termios configuration. + // + // makes input available per-character, does not echo input, + // disables special input pre-processing, output post-processing. + // + { + pty_u->raw_u = pty_u->bak_u; + + pty_u->raw_u.c_lflag &= ~(ECHO | ECHONL | ICANON | IEXTEN); + pty_u->raw_u.c_iflag &= ~(ICRNL | INPCK | ISTRIP); + pty_u->raw_u.c_cflag &= ~(CSIZE | PARENB); + pty_u->raw_u.c_cflag |= CS8; + pty_u->raw_u.c_oflag &= ~(OPOST); + pty_u->raw_u.c_cc[VMIN] = 0; + pty_u->raw_u.c_cc[VTIME] = 0; + } + + uty_u->fid_i = 1; + uty_u->sta_f = _ttyf_start_raw_input; + uty_u->sto_f = _ttyf_end_raw_input; + uty_u->hij_f = _ttyf_hija; + uty_u->loj_f = _ttyf_loja; + uty_u->wsz_f = _ttyf_get_winsize; + return uty_u; +} diff --git a/vere/pkg/vere/platform/windows/ctrlc.c b/vere/pkg/vere/platform/windows/ctrlc.c new file mode 100644 index 0000000..5d4eca7 --- /dev/null +++ b/vere/pkg/vere/platform/windows/ctrlc.c @@ -0,0 +1,7 @@ +#include + +// initialize msvcrt signals early, otherwise Ctrl-C does nothing +static void __attribute__ ((constructor)) _init_crt_signals() +{ + signal(SIGINT, SIG_DFL); +} diff --git a/vere/pkg/vere/platform/windows/daemon.c b/vere/pkg/vere/platform/windows/daemon.c new file mode 100644 index 0000000..e08b945 --- /dev/null +++ b/vere/pkg/vere/platform/windows/daemon.c @@ -0,0 +1,116 @@ +#include "noun.h" +#include "vere.h" + +/* _dup_std_handle(): creates an inheritable duplicate of a standard handle. +*/ +static BOOL +_dup_std_handle(HANDLE* new_u, DWORD typ_u) +{ + DWORD dum_u; + HANDLE han_u = GetStdHandle(typ_u); + BOOL con_u = GetConsoleMode(han_u, &dum_u); + if ( con_u ) { + han_u = (HANDLE)_get_osfhandle(c3_open(c3_dev_null, O_RDWR, 0)); + } + + if ( !DuplicateHandle(GetCurrentProcess(), han_u, GetCurrentProcess(), new_u, 0, TRUE, DUPLICATE_SAME_ACCESS) ) { + fprintf(stderr, "vere: DuplicateHandle(%lu): %lu\r\n", typ_u, GetLastError()); + exit(1); + } + + return con_u; +} + +/* _on_boot_completed_cb: invoked when the ship has finished booting. +*/ +static void _on_boot_completed_cb() { + HANDLE hin_u = GetStdHandle(STD_INPUT_HANDLE); + SetEvent(hin_u); + CloseHandle(hin_u); +} + +/* u3_daemon_init(): platform-specific daemon mode initialization. +*/ +void +u3_daemon_init() +{ + // detect if this process is the child daemon process + // + if ( ResetEvent(GetStdHandle(STD_INPUT_HANDLE)) ) { + u3_Host.bot_f = _on_boot_completed_cb; + return; + } + + STARTUPINFOW psi_u; + ZeroMemory(&psi_u, sizeof(psi_u)); + psi_u.cb = sizeof(psi_u); + psi_u.dwFlags = STARTF_USESTDHANDLES; + + // duplicate standard output and error handles for the child process, + // replacing any raw console handles with handles to /dev/null + // print a warning if raw console output detected + // + // On Windows, console handles become invalid once the console is + // detached. This will cause urbit terminal output to fail. libuv + // provides no way of changing the handle of an open uv_pipe_handle, + // and Windows has no equivalent of dup2() for handles, so I cannot + // substitute a /dev/null handle once the terminal is initialized. + // It is possible to create an anonymous pipe and have the child + // process take over its drain end after it signals that the ship + // has booted, but -d is intended for background operation anyway + // and does not seem to warrant the added complexity. + // + if ( _dup_std_handle(&psi_u.hStdOutput, STD_OUTPUT_HANDLE) | + _dup_std_handle(&psi_u.hStdError, STD_ERROR_HANDLE) ) + { + fprintf(stderr, "vere: -d used from a Windows console without redirection\r\n" + " no output from the daemon process will be visible\r\n"); + fflush(stderr); + } + + // create an event for the child process to signal + // the parent that the ship has finished booting + // pass the handle as "stdin" (otherwise unused with -d) + // + SECURITY_ATTRIBUTES sa_u = {sizeof (SECURITY_ATTRIBUTES), NULL, TRUE}; + if ( !(psi_u.hStdInput = CreateEvent(&sa_u, TRUE, FALSE, NULL)) ) { + fprintf(stderr, "vere: CreateEvent: %lu\r\n", GetLastError()); + exit(1); + } + + // create the child process with the same command line as parent + // it will start, re-parse the command line, and call u3_daemon_init + // + PROCESS_INFORMATION ppi_u; + if ( !CreateProcessW(NULL, _wcsdup(GetCommandLineW()), NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &psi_u, &ppi_u) ) { + fprintf(stderr, "vere: CreateProcess: %lu\r\n", GetLastError()); + exit(1); + } + + CloseHandle(ppi_u.hThread); + + // wait for the child process to exit or to signal the event + // + DWORD exi_u; + HANDLE han_u[2] = {ppi_u.hProcess, psi_u.hStdInput}; + switch ( WaitForMultipleObjects(2, han_u, FALSE, INFINITE) ) { + case WAIT_OBJECT_0: + // the child process exited prematurely, propagate its exit code + // + if ( GetExitCodeProcess(ppi_u.hProcess, &exi_u) ) { + exit(exi_u); + } + + fprintf(stderr, "vere: GetExitCodeProcess: %lu\r\n", GetLastError()); + exit(1); + + case WAIT_OBJECT_0 + 1: + // the child process has finished booting, exit normally + // + exit(0); + + default: + fprintf(stderr, "vere: WaitForMultipleObjects: %lu\r\n", GetLastError()); + exit(1); + } +} diff --git a/vere/pkg/vere/platform/windows/ptty.c b/vere/pkg/vere/platform/windows/ptty.c new file mode 100644 index 0000000..ed30dde --- /dev/null +++ b/vere/pkg/vere/platform/windows/ptty.c @@ -0,0 +1,149 @@ +#include "noun.h" +#include "vere.h" +#include + +/* _ptty_get_type(): detects tty type. +*/ +static DWORD +_ptty_get_type(int fd) +{ + HANDLE h = (HANDLE)_get_osfhandle(fd); + if (h == INVALID_HANDLE_VALUE) + return FILE_TYPE_UNKNOWN; + + DWORD t = GetFileType(h); + if (t != FILE_TYPE_PIPE) + return t ; + + // https://github.com/fusesource/jansi-native/commit/461068c67a38647d2890e96250636fc0117074f5 + ULONG result; + BYTE buffer[1024]; + POBJECT_NAME_INFORMATION nameinfo = (POBJECT_NAME_INFORMATION) buffer; + PWSTR name; + + /* get pipe name */ + if (!NT_SUCCESS(NtQueryObject(h, ObjectNameInformation, buffer, sizeof(buffer) - sizeof(WCHAR), &result))) + return FILE_TYPE_UNKNOWN; + + name = nameinfo->Name.Buffer; + name[nameinfo->Name.Length] = 0; + + // check for popular terminal emulators + // that use named pipes to communicate with subprocesses + if (wcsstr(name, L"\\ConEmu") || + ((wcsstr(name, L"msys-") || wcsstr(name, L"cygwin-")) && wcsstr(name, L"-pty"))) + return FILE_TYPE_PIPE; + + return FILE_TYPE_UNKNOWN; +} + +/* _ttyf_nop(): stub function. +*/ +static c3_o +_ttyf_nop(u3_utty* uty_u) +{ + return c3y; +} + +/* _ttyf_start_raw_input(): ends raw input on the tty. +*/ +static c3_o +_ttyf_set_normal(u3_utty* uty_u) +{ + c3_i e; + if ( 0 != (e = uv_tty_set_mode(&uty_u->pin_u.tty_u, UV_TTY_MODE_NORMAL)) ) { + fprintf(stderr, "uv_tty_set_mode(UV_TTY_MODE_NORMAL) -> %d\r\n", e); + return c3n; + } + return c3y; +} + +/* _ttyf_start_raw_input(): sets the tty to raw input. +*/ +static c3_o +_ttyf_set_raw(u3_utty* uty_u) +{ + c3_i e; + if ( 0 != (e = uv_tty_set_mode(&uty_u->pin_u.tty_u, UV_TTY_MODE_RAW)) ) { + fprintf(stderr, "uv_tty_set_mode(UV_TTY_MODE_RAW) -> %d\r\n", e); + return c3n; + } + return c3y; +} + +/* _ttyf_get_winsize(): gets the tty window size. +*/ +static c3_o +_ttyf_get_winsize(u3_utty* uty_u, c3_l* col_l, c3_l* row_l) +{ + c3_i col_i, row_i; + if ( 0 != uv_tty_get_winsize(&uty_u->pop_u.tty_u, &col_i, &row_i) ) { + return c3n; + } + + *col_l = col_i; + *row_l = row_i; + return c3y; +} + +/* _ttyf_get_winsize(): gets the tty window size. +*/ +static c3_o +_ttyf_nop_winsize(u3_utty* uty_u, c3_l* col_l, c3_l* row_l) +{ + return c3n; +} + +/* u3_ptty_init(): initialize platform-specific tty. +*/ +u3_utty* +u3_ptty_init(uv_loop_t* lup_u, const c3_c** err_c) +{ + DWORD pip_l = _ptty_get_type(0); + DWORD pop_l = _ptty_get_type(1); + if ( pip_l == FILE_TYPE_UNKNOWN || pop_l == FILE_TYPE_UNKNOWN) { + *err_c = "not a tty"; + return NULL; + } + + if ( pip_l != pop_l ) { + *err_c = "partly redirected"; + return NULL; + } + + c3_i e; + u3_utty* uty_u = c3_calloc(sizeof(u3_utty)); + if ( pip_l == FILE_TYPE_CHAR ) { + if ( 0 == (e = uv_tty_init(lup_u, &uty_u->pin_u.tty_u, 0, 0)) && + 0 == (e = uv_tty_init(lup_u, &uty_u->pop_u.tty_u, 1, 0)) ) + { + SetConsoleOutputCP(CP_UTF8); + uty_u->sta_f = _ttyf_set_raw; + uty_u->sto_f = _ttyf_set_normal; + uty_u->wsz_f = _ttyf_get_winsize; + } + } else { + if ( 0 == (e = uv_pipe_init(lup_u, &uty_u->pin_u.pip_u, 0)) && + 0 == (e = uv_pipe_init(lup_u, &uty_u->pop_u.pip_u, 0)) && + 0 == (e = uv_pipe_open(&uty_u->pin_u.pip_u, 0)) && + 0 == (e = uv_pipe_open(&uty_u->pop_u.pip_u, 1)) ) + { + fprintf(stderr, "vere: running interactive in a terminal emulator is experimental\r\n" + " use -t to disable interactivity or use native Windows console\r\n") ; + uty_u->sta_f = _ttyf_nop; + uty_u->sto_f = _ttyf_nop; + uty_u->wsz_f = _ttyf_nop_winsize; + } + } + + if ( e ) { + *err_c = uv_strerror(e); + c3_free(uty_u); + return NULL; + } + + uty_u->fid_i = 1; + uty_u->hij_f = _ttyf_nop; + uty_u->loj_f = _ttyf_nop; + return uty_u; +} diff --git a/vere/pkg/vere/time.c b/vere/pkg/vere/time.c new file mode 100644 index 0000000..31465bb --- /dev/null +++ b/vere/pkg/vere/time.c @@ -0,0 +1,169 @@ +/// @file + +#include "noun.h" +#include "vere.h" + +/* u3_time_sec_in(): urbit seconds from unix time. +** +** Adjust for future leap secs! +*/ +c3_d +u3_time_sec_in(c3_w unx_w) +{ + return 0x8000000cce9e0d80ULL + (c3_d)unx_w; +} + +/* u3_time_sec_out(): unix time from urbit seconds. +** +** Adjust for future leap secs! +*/ +c3_w +u3_time_sec_out(c3_d urs_d) +{ + c3_d adj_d = (urs_d - 0x8000000cce9e0d80ULL); + + if ( adj_d > 0xffffffffULL ) { + fprintf(stderr, "Agh! It's 2106! And no one's fixed this shite!\n"); + exit(1); + } + return (c3_w)adj_d; +} + +/* u3_time_fsc_in(): urbit fracto-seconds from unix microseconds. +*/ +c3_d +u3_time_fsc_in(c3_w usc_w) +{ + c3_d usc_d = usc_w; + + return ((usc_d * 65536ULL) / 1000000ULL) << 48ULL; +} + +/* u3_time_fsc_out: unix microseconds from urbit fracto-seconds. +*/ +c3_w +u3_time_fsc_out(c3_d ufc_d) +{ + return (c3_w) (((ufc_d >> 48ULL) * 1000000ULL) / 65536ULL); +} + +/* u3_time_msc_out: unix microseconds from urbit fracto-seconds. +*/ +c3_w +u3_time_msc_out(c3_d ufc_d) +{ + return (c3_w) (((ufc_d >> 48ULL) * 1000ULL) / 65536ULL); +} + +/* u3_time_in_tv(): urbit time from struct timeval. +*/ +u3_atom +u3_time_in_tv(struct timeval* tim_tv) +{ + c3_w unx_w = tim_tv->tv_sec; + c3_w usc_w = tim_tv->tv_usec; + c3_d cub_d[2]; + + cub_d[0] = u3_time_fsc_in(usc_w); + cub_d[1] = u3_time_sec_in(unx_w); + + return u3i_chubs(2, cub_d); +} + +/* u3_time_out_tv(): struct timeval from urbit time. +*/ +void +u3_time_out_tv(struct timeval* tim_tv, u3_noun now) +{ + c3_d ufc_d = u3r_chub(0, now); + c3_d urs_d = u3r_chub(1, now); + + tim_tv->tv_sec = u3_time_sec_out(urs_d); + tim_tv->tv_usec = u3_time_fsc_out(ufc_d); + + u3z(now); +} + +/* u3_time_in_ts(): urbit time from struct timespec. +*/ +u3_atom +u3_time_in_ts(struct timespec* tim_ts) +{ + struct timeval tim_tv; + + tim_tv.tv_sec = tim_ts->tv_sec; + tim_tv.tv_usec = (tim_ts->tv_nsec / 1000); + + return u3_time_in_tv(&tim_tv); +} + +#if defined(U3_OS_linux) || defined(U3_OS_windows) +/* u3_time_t_in_ts(): urbit time from time_t. +*/ +u3_atom +u3_time_t_in_ts(time_t tim) +{ + struct timeval tim_tv; + + tim_tv.tv_sec = tim; + tim_tv.tv_usec = 0; + + return u3_time_in_tv(&tim_tv); +} +#endif /* defined(U3_OS_linux) */ + +/* u3_time_out_ts(): struct timespec from urbit time. +*/ +void +u3_time_out_ts(struct timespec* tim_ts, u3_noun now) +{ + struct timeval tim_tv; + + u3_time_out_tv(&tim_tv, now); + + tim_ts->tv_sec = tim_tv.tv_sec; + tim_ts->tv_nsec = (tim_tv.tv_usec * 1000); +} + +/* u3_time_gap_ms(): (wen - now) in ms. +*/ +c3_d +u3_time_gap_ms(u3_noun now, u3_noun wen) +{ + if ( c3n == u3ka_gth(u3k(wen), u3k(now)) ) { + u3z(wen); u3z(now); + return 0ULL; + } + else { + u3_noun dif = u3ka_sub(wen, now); + c3_d fsc_d = u3r_chub(0, dif); + c3_d sec_d = u3r_chub(1, dif); + + u3z(dif); + return (sec_d * 1000ULL) + u3_time_msc_out(fsc_d); + } +} + +/* u3_time_gap_double(): (wen - now) in libev resolution. +*/ +double +u3_time_gap_double(u3_noun now, u3_noun wen) +{ + mpz_t now_mp, wen_mp, dif_mp; + double sec_g = (((double)(1ULL << 32ULL)) * ((double)(1ULL << 32ULL))); + double gap_g, dif_g; + + u3r_mp(now_mp, now); + u3r_mp(wen_mp, wen); + mpz_init(dif_mp); + mpz_sub(dif_mp, wen_mp, now_mp); + + u3z(now); + u3z(wen); + + dif_g = mpz_get_d(dif_mp) / sec_g; + gap_g = (dif_g > 0.0) ? dif_g : 0.0; + mpz_clear(dif_mp); mpz_clear(wen_mp); mpz_clear(now_mp); + + return gap_g; +} diff --git a/vere/pkg/vere/tracy_test.c b/vere/pkg/vere/tracy_test.c new file mode 100644 index 0000000..ef0f214 --- /dev/null +++ b/vere/pkg/vere/tracy_test.c @@ -0,0 +1,50 @@ +#include +#include + +#ifdef TRACY_ENABLE +#include "tracy/TracyC.h" +#endif + +void test_function() { +#ifdef TRACY_ENABLE + TracyCZone(ctx, 1); + TracyCZoneName(ctx, "test_function", 13); +#endif + + printf("Testing Tracy integration - function called\n"); + +#ifdef TRACY_ENABLE + TracyCMessageL("Test message from urbit"); +#endif + + // Simulate some work + for (int i = 0; i < 1000000; i++) { + // Some CPU work for Tracy to profile + } + +#ifdef TRACY_ENABLE + TracyCZoneEnd(ctx); +#endif +} + +int main() { + printf("Tracy test starting - connect Tracy profiler to localhost:8086\n"); + printf("Application will run for 10 seconds...\n"); + + for (int frame = 0; frame < 100; frame++) { +#ifdef TRACY_ENABLE + TracyCFrameMark; +#endif + test_function(); + + // Sleep for 100ms to make frames visible + usleep(100000); + + if (frame % 10 == 0) { + printf("Frame %d/100\n", frame); + } + } + + printf("Tracy integration test completed\n"); + return 0; +} diff --git a/vere/pkg/vere/unix_tests.c b/vere/pkg/vere/unix_tests.c new file mode 100644 index 0000000..3e2862b --- /dev/null +++ b/vere/pkg/vere/unix_tests.c @@ -0,0 +1,67 @@ +/// @file + +#include "noun.h" +#include "vere.h" + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ +} + +/* _test_safe(): +*/ +static c3_i +_test_safe() +{ + c3_i ret_i = 1; + + if ( !u3_unix_cane("/") || + !u3_unix_cane("~.") || + !u3_unix_cane("a") || + !u3_unix_cane("a/b") || + !u3_unix_cane("a/b/c/defg/h/ijklmnop") ) + { + fprintf(stderr, "_safe fail 1\n"); + ret_i = 0; + } + + if ( u3_unix_cane("") || + u3_unix_cane(".") || + u3_unix_cane("..") || + u3_unix_cane("/.") || + u3_unix_cane("a/b/c//") || + u3_unix_cane("a/b/.") || + u3_unix_cane("/././../.") || + u3_unix_cane("/../etc") ) + { + fprintf(stderr, "_safe fail 2\r\n"); + ret_i = 0; + } + + if ( !u3_unix_cane(".a") || + !u3_unix_cane("/.a.b.c/..c") ) + { + fprintf(stderr, "_safe fail 3\r\n"); + ret_i = 0; + } + + return ret_i; +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + if ( !_test_safe() ) { + fprintf(stderr, "test unix: failed\r\n"); + exit(1); + } + + fprintf(stderr, "test unix: ok\r\n"); + return 0; +} diff --git a/vere/pkg/vere/vere.h b/vere/pkg/vere/vere.h new file mode 100644 index 0000000..bcf39c6 --- /dev/null +++ b/vere/pkg/vere/vere.h @@ -0,0 +1,1524 @@ +/// @file + +#ifndef U3_VERE_H +#define U3_VERE_H + +#ifdef U3_OS_windows +#include "winsock2.h" +#include "windows.h" +#endif + +#include "c3/c3.h" +#include "db/lmdb.h" +#include "noun.h" +#include "uv.h" +#include + + + /** Quasi-tunable parameters. + **/ + /* First kernel this executable can boot. + */ +# define FirstKernel 164 +# define DefaultKernel 164 + + /** Data types. + **/ + + /* u3_hhed: http header. + */ + typedef struct _u3_hhed { + struct _u3_hhed* nex_u; + c3_w nam_w; + c3_c* nam_c; + c3_w val_w; + c3_c* val_c; + } u3_hhed; + + /* u3_hbod: http body block. Also used for responses. + */ + typedef struct _u3_hbod { + struct _u3_hbod* nex_u; + c3_w len_w; + c3_y hun_y[0]; + } u3_hbod; + + /* u3_lane: ames lane (IP address and port) + */ + typedef struct _u3_lane { + c3_w pip_w; // target IPv4 address + c3_s por_s; // target port + } u3_lane; + + /* u3_moor_poke: poke callback function. + */ + typedef c3_o (*u3_moor_poke)(void*, c3_d, c3_y*); + + /* u3_moor_bail: bailout callback function. + */ + typedef void (*u3_moor_bail)(void*, ssize_t err_i, const c3_c* err_c); + + /* u3_meat: blob message block. + */ + typedef struct _u3_meat { + struct _u3_meat* nex_u; + c3_d len_d; + c3_y hun_y[0]; + } u3_meat; + + /* u3_mess_type: in-process message type. + */ + typedef enum { + u3_mess_head = 0, // awaiting header + u3_mess_tail = 1 // awaiting body + } u3_mess_type; + + /* u3_mess: blob message in process. + */ + typedef struct _u3_mess { + u3_mess_type sat_e; // msg type + union { // + struct { // awaiting header: + c3_y hed_y[5]; // header bytes + c3_y has_y; // length + } hed_u; // + struct { // awaiting body + u3_meat* met_u; // partial message + c3_d has_d; // length + } tal_u; // + }; + } u3_mess; + + /* u3_moat: inbound message stream. + */ + typedef struct _u3_moat { + uv_pipe_t pyp_u; // input stream + u3_moor_bail bal_f; // error response function + void* ptr_v; // callback pointer + u3_moor_poke pok_f; // action function + u3_mess mes_u; // message in progress + uv_timer_t tim_u; // queue timer + u3_meat* ent_u; // entry of message queue + u3_meat* ext_u; // exit of message queue + } u3_moat; + + /* u3_mojo: outbound message stream. + */ + typedef struct _u3_mojo { + uv_pipe_t pyp_u; // output stream + u3_moor_bail bal_f; // error response function + void* ptr_v; // callback pointer + } u3_mojo; + + /* u3_moor: two-way message stream, linked list */ + typedef struct _u3_moor { + uv_pipe_t pyp_u; // duplex stream + u3_moor_bail bal_f; // error response function + void* ptr_v; // callback pointer + u3_moor_poke pok_f; // action function + u3_mess mes_u; // message in progress + uv_timer_t tim_u; // queue timer + u3_meat* ent_u; // entry of message queue + u3_meat* ext_u; // exit of message queue + struct _u3_moor* nex_u; // next in list + } u3_moor; + + /* u3_dent: directory entry. + */ + typedef struct _u3_dent { + c3_c* nam_c; + struct _u3_dent* nex_u; + } u3_dent; + + /* u3_dire: simple directory state. + */ + typedef struct _u3_dire { + c3_c* pax_c; // path of directory + uv_file fil_u; // file, opened read-only to fsync + u3_dent* all_u; // file list + u3_dent* dil_u; // directory list + } u3_dire; + + /* u3_utat: unix terminal state. + */ + typedef struct { + struct { + c3_l col_l; // columns + c3_l row_l; // rows + } siz; + + struct { + u3_noun lin; // bottom line (stub) + c3_w rus_w; // cursor position (row) + c3_w cus_w; // cursor position (column) + } mir; + + struct { // escape code control + c3_o ape; // escape received + c3_o bra; // bracket or O received + c3_o mou; // M (for mouse event) received + c3_y ton_y; // mouse button + c3_y col_y; // column coordinate + c3_y seq_y; // vt sequence + } esc; + + struct { // input buffering + c3_y syb_y[5]; // utf8 code buffer + c3_w len_w; // present length + c3_w wid_w; // total width + u3_noun imp; // %txt input buffer + } fut; + + struct { + uv_timer_t tim_u; // spinner timeout + c3_o diz_o; // spinner activated + c3_d eve_d; // spin count + c3_d end_d; // spinner end tick (ms) + c3_c why_c[5]; // spinner label + } sun_u; + } u3_utat; + + /* u3_usig: receive signals. + */ + typedef struct _u3_usig { + uv_signal_t sil_u; + c3_i num_i; + struct _u3_usig* nex_u; + } u3_usig; + + /* u2_utfo: terminal escape sequences + */ + typedef struct { + uv_buf_t reg_u; // restore scroll region + // + uv_buf_t suc_u; // save cursor position + uv_buf_t ruc_u; // restore cursor position + uv_buf_t cub_u; // move cursor left one column + // + uv_buf_t clr_u; // clear screen + uv_buf_t cel_u; // clear to end of line + // + uv_buf_t bel_u; // bel sound bell + } u3_utfo; + +#if 0 + /* u3_uwen: unix alarm. + */ + typedef struct _u3_uwen { + c3_y* pax_y; // printed path + c3_d wen_d[2]; // timer expire + }; + + /* u3_utim: unix timer control. + */ + typedef struct _u3_utim { + uv_timer_t wat_u; // timer control + u3_uwen* wen_u; // timers in ascending order + }; +#endif + + /* u3_utty: unix tty. + */ + struct _u3_utty; + + /* u3_ustm: uv stream. + */ + typedef union _u3_ustm { + uv_pipe_t pip_u; + uv_tty_t tty_u; + } u3_ustm; + + /* u3_ttyf: simple unix tty function. + */ + typedef c3_o (*u3_ttyf)(struct _u3_utty* uty_u); + + /* u3_utty: unix tty. + */ + typedef struct _u3_utty { + u3_ustm pin_u; // input stream + u3_ustm pop_u; // output stream + struct _u3_utty* nex_u; // next in host list + u3_ttyf sta_f; // start tty + u3_ttyf sto_f; // clean up tty + u3_ttyf hij_f; // hijack tty for cooked print + u3_ttyf loj_f; // release tty from cooked print + c3_o (*wsz_f) + (struct _u3_utty* uty_u, + c3_l* col_l, + c3_l* row_l); // return tty window size + c3_i fid_i; // file descriptor + c3_w tid_l; // terminal identity number + u3_utfo ufo_u; // escape sequences + u3_utat tat_u; // control state + struct _u3_auto* car_u; // driver hack + } u3_utty; + + /* u3_even: boot event specifier + */ + typedef struct _u3_even { + c3_i kin_i; + c3_c* loc_c; + struct _u3_even* pre_u; + } u3_even; + + /* u3_opts: command line configuration. + */ + typedef struct _u3_opts { + c3_c* arv_c; // -A, initial sync from + c3_o abo; // -a, abort aggressively + c3_c* pil_c; // -B, bootstrap from + c3_c* bin_c; // -b, http server bind ip + c3_w hap_w; // -C, cap transient memo cache + c3_o dry; // -D, dry compute, no checkpoint + c3_o dem; // -d, daemon + c3_c* eth_c; // -e, ethereum node url + c3_c* fak_c; // -F, fake ship + c3_c* gen_c; // -G, czar generator + c3_o gab; // -g, test garbage collection + c3_c* dns_c; // -H, ames bootstrap domain + c3_c* jin_c; // -I, inject raw event + c3_c* imp_c; // -i, import pier state + c3_c* lit_c; // -J, ivory (fastboot) kernel + c3_o tra; // -j, json trace + c3_w kno_w; // -K, kernel version + c3_c* key_c; // -k, private key file + c3_o net; // -L, local-only networking + c3_o lit; // -l, lite mode + c3_y lom_y; // loom bex + c3_y lut_y; // urth-loom bex + c3_w per_w; // -M, cap persistent memo cache + c3_c* til_c; // -n, play till eve_d + c3_o pro; // -P, profile + c3_s per_s; // http port + c3_s pes_s; // https port + c3_s por_s; // -p, ames port + c3_w sap_w; // Snapshot timer legth (seconds) + c3_o qui; // -q, quiet + c3_o rep; // -R, report build info + c3_o has; // -S, Skip battery hashes + c3_o git; // -s, pill url from arvo git hash + c3_o tem; // -t, Disable terminal/tty assumptions + c3_c* url_c; // -u, pill url + c3_o veb; // -v, verbose (inverse of -q) + c3_c* who_c; // -w, begin with ticket + c3_c* pek_c; // -X, scry path (/vc/desk/path) + c3_o tex; // -x, exit after loading + c3_c* puk_c; // -Y, scry result filename + c3_c* puf_c; // -Z, scry result format + c3_o con; // run conn + c3_o doc; // dock binary in pier + c3_o nuu; // new pier + c3_o map; // --no-demand (reversed) + c3_o eph; // --swap, use ephemeral file + c3_o tos; // --toss, discard ephemeral + u3_even* vex_u; // --prop-*, boot enhancements + + c3_o beb; // --behn-allow-blocked + c3_z siz_i; // --lmdb-map-size + c3_y jum_y; // jumbo frame size, TODO parser + } u3_opts; + + /* u3_host: entire host. + */ + typedef struct _u3_host { + c3_w kno_w; // current executing stage + c3_c* dir_c; // pier path (no trailing /) + c3_d eve_d; // initial current snapshot + c3_c* dem_c; // daemon executable path + c3_c* wrk_c; // worker executable path + c3_d now_d; // event tick + uv_loop_t* lup_u; // libuv event loop + u3_usig* sig_u; // signal list +#if defined(U3_OS_windows) + HANDLE cev_u; // ctrl-C event handle +#endif + u3_utty* uty_u; // linked terminal list + c3_o nex_o; // upgrade requested + c3_c* arc_c; // upgrade to arch + u3_opts ops_u; // commandline options + c3_o pep_o; // prep for upgrade + c3_i xit_i; // exit code for shutdown + void (*bot_f)(); // call when chis is up + void* sam_u; // old ames, "unified driver" hack + uv_udp_t wax_u; // "unified driver" udp send handle + c3_w* imp_u; // "unified driver" galaxy IP:s + } u3_host; // host == computer == process + + /** Pier system. + **/ + /* u3_ovum_news: u3_ovum lifecycle events + */ + typedef enum { + u3_ovum_drop = 0, // unplanned + u3_ovum_work = 1, // begun + u3_ovum_done = 2 // complete + } u3_ovum_news; + + struct _u3_ovum; + + /* u3_ovum_peer: news callback + */ + typedef void (*u3_ovum_peer)(struct _u3_ovum*, u3_ovum_news); + + /* u3_ovum_bail: failure callback + */ + typedef void (*u3_ovum_bail)(struct _u3_ovum*, u3_noun); + + /* u3_ovum: potential event + */ + typedef struct _u3_ovum { + void* ptr_v; // context + c3_w try_w; // retry count + c3_w mil_w; // timeout ms + u3_noun tar; // target (in arvo) + u3_noun wir; // wire + u3_noun cad; // card + struct { // spinner: + u3_atom lab; // label + c3_o del_o; // delay (c3y) + } pin_u; // + struct { // optional callbacks: + u3_ovum_peer news_f; // progress + u3_ovum_bail bail_f; // failure + } cb_u; // + struct _u3_ovum* pre_u; // previous ovum + struct _u3_ovum* nex_u; // next ovum + struct _u3_auto* car_u; // backpointer to i/o driver + } u3_ovum; + + /* u3_fact: completed event + */ + typedef struct _u3_fact { + c3_d eve_d; // event number + c3_l mug_l; // kernel mug after + u3_noun job; // (pair date ovum) + struct _u3_fact* nex_u; // next in queue + } u3_fact; + + /* u3_feat: serialized fact + */ + typedef struct _u3_feat { + c3_d eve_d; + size_t len_i; + c3_y* hun_y; + struct _u3_feat* nex_u; + } u3_feat; + + /* u3_peek_cb: namespace read response callback. + */ + typedef void (*u3_peek_cb)(void*, u3_noun); + + /* u3_pico_type: kinds of proto-peek + */ + typedef enum { + u3_pico_full = 0, + u3_pico_once = 1 + } u3_pico_type; + + /* u3_pico: proto-peek + */ + typedef struct _u3_pico { + struct _u3_pico* nex_u; // next in queue + void* ptr_v; // context + u3_peek_cb fun_f; // callback + u3_noun gan; // leakset + u3_pico_type typ_e; // type-tagged + union { // + u3_noun ful; // (each path [%beam term beam]) + struct { // once: + c3_m car_m; // care + u3_atom des; // desk + u3_noun pax; // /path + } las_u; + }; + } u3_pico; + + /* u3_peek: namespace read request + */ + typedef struct _u3_peek { + void* ptr_v; // context + u3_peek_cb fun_f; // callback + u3_pico_type typ_e; // type + u3_noun sam; // +peek sample + } u3_peek; + + /* u3_writ_type: urth->mars ipc message types + */ + typedef enum { + u3_writ_poke = 0, + u3_writ_peek = 1, + u3_writ_live = 2, + u3_writ_exit = 3, + u3_writ_quiz = 4 + } u3_writ_type; + + /* u3_writ: ipc message from urth to mars + */ + typedef struct _u3_writ { + struct _u3_writ* nex_u; // next in queue + u3_writ_type typ_e; // type-tagged + union { // + struct { // poke: + u3_ovum* egg_u; // origin + u3_noun job; // (pair date ovum) + } wok_u; // + u3_peek* pek_u; // peek + struct { // serf query: + c3_m qiz_m; // %quiz + void* ptr_v; // driver + void (*qiz_f)(c3_m, void*, u3_noun); // callback + } qiz_u; // + }; + } u3_writ; + + /* u3_lord_cb: u3_lord callbacks + */ + typedef struct _u3_lord_cb { + void* ptr_v; + void (*live_f)(void*, u3_atom, c3_o); + void (*slog_f)(void*, c3_w, u3_noun); + void (*spin_f)(void*, u3_atom, c3_o); + void (*spun_f)(void*); + void (*work_done_f)(void*, u3_ovum*, u3_noun act); + void (*work_bail_f)(void*, u3_ovum*, u3_noun lud); + void (*save_f)(void*); + void (*bail_f)(void*); + void (*exit_f)(void*); + } u3_lord_cb; + + /* u3_lord: serf controller. + */ + typedef struct _u3_lord { + uv_process_t cub_u; // process handle + uv_process_options_t ops_u; // process configuration + uv_stdio_container_t cod_u[3]; // process options + u3_cue_xeno* sil_u; // cue handle + time_t wen_t; // process creation time + u3_mojo inn_u; // client's stdin + u3_moat out_u; // client's stdout + uv_pipe_t err_u; // client's stderr + c3_w wag_w; // config flags + c3_c* bin_c; // binary path + c3_c* pax_c; // directory + c3_d key_d[4]; // image key + c3_o liv_o; // live + c3_d eve_d; // last event completed + u3_lord_cb cb_u; // callbacks + c3_o pin_o; // spinning + c3_w dep_w; // queue depth + struct _u3_writ* ent_u; // queue entry + struct _u3_writ* ext_u; // queue exit + } u3_lord; + + + /* u3_disk_news: disk sync callbak. + */ + typedef void (*u3_disk_news)(void*, c3_d, c3_o); + + /* u3_disk_load_e: disk load mode. + */ + typedef enum { + u3_dlod_boot = 0, // load for boot + u3_dlod_epoc = 1, // load for full replay + u3_dlod_last = 2 // load latest + } u3_disk_load_e; + + /* u3_disk: manage event persistence. + */ + typedef struct _u3_disk { + u3_dire* dir_u; // main pier directory + u3_dire* urb_u; // urbit system data + u3_dire* com_u; // log directory + c3_i lok_i; // lockfile + c3_o liv_o; // live + c3_w ver_w; // version (see version.h) + void* mdb_u; // lmdb env of current epoch + c3_d sen_d; // commit requested + c3_d dun_d; // committed + c3_d epo_d; // current epoch number + c3_w hit_w[100]; // batch histogram + struct { // new write queue + u3_feat* ent_u; // queue entry (highest) + u3_feat* ext_u; // queue exit (lowest) + } put_u; + struct { // write control + union { // thread/request + uv_work_t ted_u; // + uv_req_t req_u; // + }; + void* ptr_v; // async context + u3_disk_news don_f; // async write cb + c3_o ted_o; // c3y == active + c3_o ret_o; // result + c3_d eve_d; // first event + c3_d len_w; // number of events + c3_y* byt_y[100]; // array of bytes + size_t siz_i[100]; // array of lengths + } sav_u; + } u3_disk; + + /* u3_disk_walk: opaque event log iterator. + */ + typedef struct _u3_disk_walk u3_disk_walk; + + /* u3_psat: pier state. + */ + typedef enum { + u3_psat_init = 0, // initialized + u3_psat_wyrd = 1, // versioning + u3_psat_work = 2, // working + u3_psat_done = 3 // shutting down + } u3_psat; + + /* u3_meta: pier metadata. + */ + typedef struct _u3_meta { + c3_w ver_w; // version + c3_d who_d[2]; // identity + c3_o fak_o; // fake bit + c3_w lif_w; // lifecycle length + } u3_meta; + + /* u3_boot_opts: bootstrap parameters. + */ + typedef struct _u3_boot_opts { + c3_w eny_w[16]; // entropy + c3_o veb_o; // verbose + c3_o lit_o; // lite + c3_o sev_l; // instance number + struct timeval tim_u; // time + struct { // kelvin + c3_m nam_m; // label + c3_w ver_w; // version + } ver_u; + } u3_boot_opts; + + /* u3_auto_cb: i/o driver callbacks + */ + typedef struct _u3_auto_cb { + void (*talk_f)(struct _u3_auto*); + u3_noun (*info_f)(struct _u3_auto*); + void (*slog_f)(struct _u3_auto*); + c3_o (*kick_f)(struct _u3_auto*, u3_noun, u3_noun); + void (*exit_f)(struct _u3_auto*); // XX close_cb? + } u3_auto_cb; + + /* u3_auto: abstract i/o driver + */ + typedef struct _u3_auto { + c3_m nam_m; + c3_o liv_o; + u3_auto_cb io; // XX io_u; + c3_w dep_w; + struct _u3_ovum* ent_u; + struct _u3_ovum* ext_u; + struct _u3_auto* nex_u; + struct _u3_pier* pir_u; + } u3_auto; + + /* u3_work: normal operation. + */ + typedef struct _u3_work { + u3_auto* car_u; // i/o drivers + uv_check_t cek_u; // post-loop + uv_idle_t idl_u; // catchall XX uv_async_t? + struct _u3_pier* pir_u; // pier backpointer + } u3_work; + + /* u3_pier: ship controller. + */ + typedef struct _u3_pier { + c3_c* pax_c; // pier directory + c3_w lif_w; // lifecycle barrier + c3_d who_d[2]; // identity + c3_o fak_o; // yes iff fake security + c3_o liv_o; // fully live + u3_disk* log_u; // event log + u3_lord* god_u; // computer + u3_psat sat_e; // type-tagged + u3_weak ryf; // rift + u3_work* wok_u; // work + struct { + u3_pico* ent_u; + u3_pico* ext_u; + } pec_u; + void* sop_p; // slog stream data + void (*sog_f) // slog stream callback + (void*, c3_w, u3_noun);// + // XX group ports? + c3_s per_s; // http port + c3_s pes_s; // htls port + c3_s por_s; // ames port + struct _u3_pier* nex_u; // next in list + u3_noun cax; // cache + } u3_pier; + + /* u3_king: all executing piers. + */ + typedef struct _u3_king { + void (*ssl_curl_f)(void*); // setup ssl CAs in CURL* + void (*ssl_x509_f)(void*); // setup ssl CAs in X509_STORE* + u3_pier* pir_u; // pier list + uv_timer_t tim_u; // gc timer + } u3_king; + +# define u3L u3_Host.lup_u // global event loop +# define u3K u3_King + + /** Global variables. + **/ + extern u3_host u3_Host; + extern u3_king u3_King; + + /** Functions. + **/ + /* Urbit time: 128 bits, leap-free. + ** + ** High 64 bits: 0x8000.000c.cea3.5380 + Unix time at leap 25 (Jul 2012) + ** Low 64 bits: 1/2^64 of a second. + ** + ** Seconds per Gregorian 400-block: 12.622.780.800 + ** 400-blocks from 0 to 0AD: 730.692.561 + ** Years from 0 to 0AD: 292.277.024.400 + ** Seconds from 0 to 0AD: 9.223.372.029.693.628.800 + ** Seconds between 0A and Unix epoch: 62.167.219.200 + ** Seconds before Unix epoch: 9.223.372.091.860.848.000 + ** The same, in C hex notation: 0x8000000cce9e0d80ULL + ** + ** XX: needs to be adjusted to implement Google leap-smear time. + */ + /* u3_time_sec_in(): urbit seconds from unix time. + ** + ** Adjust (externally) for future leap secs! + */ + c3_d + u3_time_sec_in(c3_w unx_w); + + /* u3_time_sec_out(): unix time from urbit seconds. + ** + ** Adjust (externally) for future leap secs! + */ + c3_w + u3_time_sec_out(c3_d urs_d); + + /* u3_time_fsc_in(): urbit fracto-seconds from unix microseconds. + */ + c3_d + u3_time_fsc_in(c3_w usc_w); + + /* u3_time_fsc_out: unix microseconds from urbit fracto-seconds. + */ + c3_w + u3_time_fsc_out(c3_d ufc_d); + + /* u3_time_in_tv(): urbit time from struct timeval. + */ + u3_atom + u3_time_in_tv(struct timeval* tim_tv); + + /* u3_time_out_tv(): struct timeval from urbit time. + */ + void + u3_time_out_tv(struct timeval* tim_tv, u3_noun now); + + /* u3_time_in_ts(): urbit time from struct timespec. + */ + u3_atom + u3_time_in_ts(struct timespec* tim_ts); +#if defined(U3_OS_linux) || defined(U3_OS_windows) + /* u3_time_t_in_ts(): urbit time from time_t. + */ + u3_atom + u3_time_t_in_ts(time_t tim); +#endif + + /* u3_time_out_ts(): struct timespec from urbit time. + */ + void + u3_time_out_ts(struct timespec* tim_ts, u3_noun now); + + /* u3_time_gap_ms(): (wen - now) in ms. + */ + c3_d + u3_time_gap_ms(u3_noun now, u3_noun wen); + + /** Common structure lifecycle. + **/ + /* u3_dent_init(): initialize file record. + */ + u3_dent* + u3_dent_init(const c3_c* nam_c); + + /* u3_dent_free(): dispose file record. + */ + void + u3_dent_free(u3_dent *det_u); + + /* u3_dire_init(): initialize directory record. + */ + u3_dire* + u3_dire_init(const c3_c* pax_c); + + /* u3_dire_free(): dispose directory record. + */ + void + u3_dire_free(u3_dire *dir_u); + + /* u3_ovum_init: initialize an unlinked potential event + */ + u3_ovum* + u3_ovum_init(c3_w mil_w, + u3_noun tar, + u3_noun wir, + u3_noun cad); + + /* u3_ovum_free: dispose an unlinked potential event + */ + void + u3_ovum_free(u3_ovum *egg_u); + + /* u3_pico_init(): initialize a scry request struct + */ + u3_pico* + u3_pico_init(); + + /* u3_pico_free(): dispose a scry request struct + */ + void + u3_pico_free(u3_pico* pic_u); + + /* u3_mcut_char(): measure/cut character. + */ + c3_w + u3_mcut_char(c3_c* buf_c, c3_w len_w, c3_c chr_c); + + /* u3_mcut_cord(): measure/cut cord. + */ + c3_w + u3_mcut_cord(c3_c* buf_c, c3_w len_w, u3_noun san); + + /* u3_mcut_path(): measure/cut cord list. + */ + c3_w + u3_mcut_path(c3_c* buf_c, c3_w len_w, c3_c sep_c, u3_noun pax); + + /* u3_mcut_host(): measure/cut host. + */ + c3_w + u3_mcut_host(c3_c* buf_c, c3_w len_w, u3_noun hot); + + /** IO drivers. + **/ + /* u3_auto_init(): initialize all drivers. + */ + u3_auto* + u3_auto_init(u3_pier* pir_u); + + /* u3_auto_info(): status info as a (list mass), all drivers. + */ + u3_noun + u3_auto_info(u3_auto* car_u); + + /* u3_auto_slog(): print status info. + */ + void + u3_auto_slog(u3_auto* car_u); + + /* u3_auto_exit(): close all drivers. + */ + void + u3_auto_exit(u3_auto* car_u); + + /* u3_auto_talk(): start all drivers. + */ + void + u3_auto_talk(u3_auto* car_u); + + /* u3_auto_live(): check if all drivers are live. + */ + c3_o + u3_auto_live(u3_auto* car_u); + + /* u3_auto_kick(): route effects to a linked driver. RETAIN + */ + void + u3_auto_kick(u3_auto* car_u, u3_noun act); + + /* u3_auto_next(): select an ovum, dequeue and construct. + */ + u3_ovum* + u3_auto_next(u3_auto* car_u, u3_noun* ovo); + + /* u3_auto_drop(): dequeue and dispose an ovum. + */ + void + u3_auto_drop(u3_auto* car_u, u3_ovum* egg_u); + + /* u3_auto_work(): notify driver of [egg_u] commencement. + */ + void + u3_auto_work(u3_ovum* egg_u); + + /* u3_auto_done(): notify driver of [egg_u] completion. + */ + void + u3_auto_done(u3_ovum* egg_u); + + /* u3_auto_bail(): notify driver that [egg_u] crashed. + */ + void + u3_auto_bail(u3_ovum* egg_u, u3_noun lud); + + /* u3_auto_bail_slog(): print a bail notification. + */ + void + u3_auto_bail_slog(u3_ovum* egg_u, u3_noun lud); + + /* u3_auto_plan(): enqueue an ovum. + */ + u3_ovum* + u3_auto_plan(u3_auto* car_u, u3_ovum* egg_u); + + /* u3_auto_redo(): retry an ovum. + */ + u3_ovum* + u3_auto_redo(u3_auto* car_u, u3_ovum* egg_u); + + /* u3_auto_peer(): subscribe to updates. + */ + void + u3_auto_peer(u3_ovum* egg_u, + void* ptr_v, + u3_ovum_peer news_f, + u3_ovum_bail bail_f); + + /* u3_disk_make(): make pier directories and event log. + */ + c3_o + u3_disk_make(c3_c* pax_c); + + /* u3_disk_load(): load pier directories, log, and snapshot. + */ + u3_disk* + u3_disk_load(c3_c* pax_c, u3_disk_load_e lod_e); + + /* u3_disk_etch(): serialize an event for persistence. RETAIN [eve] + */ + size_t + u3_disk_etch(u3_disk* log_u, + u3_noun eve, + c3_l mug_l, + c3_y** out_y); + + /* u3_disk_sift(): parse a persisted event buffer. + */ + c3_o + u3_disk_sift(u3_disk* log_u, + size_t len_i, + c3_y* dat_y, + c3_l* mug_l, + u3_noun* job); + + /* u3_disk_info(): status info as $mass. + */ + u3_noun + u3_disk_info(u3_disk* log_u); + + /* u3_disk_slog(): print status info. + */ + void + u3_disk_slog(u3_disk* log_u); + + /* u3_disk_exit(): close [log_u] and dispose. + */ + void + u3_disk_exit(u3_disk* log_u); + + /* u3_disk_read_meta(): read metadata. + */ + c3_o + u3_disk_read_meta(MDB_env* mdb_u, u3_meta* met_u); + + /* u3_disk_save_meta(): save metadata. + */ + c3_o + u3_disk_save_meta(MDB_env* mdb_u, const u3_meta* met_u); + + /* u3_disk_save_meta_meta(): save meta metadata. + */ + c3_o + u3_disk_save_meta_meta(c3_c* log_c, const u3_meta* met_u); + + /* u3_disk_plan_list(): enqueue completed sequence, without autocommit. + */ + void + u3_disk_plan_list(u3_disk* log_u, u3_noun lit); + + /* u3_disk_sync(): commit planned events. + */ + c3_o + u3_disk_sync(u3_disk* log_u); + + /* u3_disk_async(): active autosync with callbacks. + */ + void + u3_disk_async(u3_disk* log_u, + void* ptr_v, + u3_disk_news don_f); + + /* u3_disk_plan(): enqueue completed event for persistence. + */ + void + u3_disk_plan(u3_disk* log_u, u3_fact* tac_u); + + /* u3_disk_epoc_last(): get latest epoch number. + */ + c3_o + u3_disk_epoc_last(u3_disk* log_u, c3_d* lat_d); + + /* u3_disk_epoc_list: get descending epoch numbers, "mcut" pattern. + */ + c3_z + u3_disk_epoc_list(u3_disk* log_u, c3_d* sot_d); + + /* u3_disk_chop(): delete all but the latest 2 epocs. + */ + void + u3_disk_chop(u3_disk* log_u, c3_d epo_d); + + /* u3_disk_roll(): rollover to a new epoc. + */ + void + u3_disk_roll(u3_disk* log_u, c3_d epo_d); + + /* u3_disk_read_list(): synchronously read a cons list of events. + */ + u3_weak + u3_disk_read_list(u3_disk* log_u, c3_d eve_d, c3_d len_d, c3_l* mug_l); + + /* u3_disk_walk_init(): init iterator. + */ + u3_disk_walk* + u3_disk_walk_init(u3_disk* log_u, + c3_d eve_d, + c3_d len_d); + + /* u3_disk_walk_live(): check if live. + */ + c3_o + u3_disk_walk_live(u3_disk_walk* wok_u); + + /* u3_disk_walk_step(): get next fact. + */ + c3_o + u3_disk_walk_step(u3_disk_walk* wok_u, u3_fact* tac_u); + + /* u3_disk_walk_done(): close iterator. + */ + void + u3_disk_walk_done(u3_disk_walk* wok_u); + + /* u3_lord_boot(): instantiate child process. + */ + void + u3_lord_boot(c3_c* pax_c, + c3_w wag_w, + c3_d key_d[4], + u3_noun msg, + void* ptr_v, + void (*done_f)(void*, c3_o)); + + /* u3_lord_init(): start serf. + ** TODO: fix comment and/or name to match mars/urth? + */ + u3_lord* + u3_lord_init(c3_c* pax_c, + c3_w wag_w, + c3_d key_d[4], + u3_lord_cb cb_u); + + /* u3_lord_info(): status info as a $mass. + */ + u3_noun + u3_lord_info(u3_lord* god_u); + + /* u3_lord_slog(): print status info. + */ + void + u3_lord_slog(u3_lord* god_u); + + /* u3_lord_exit(): shutdown gracefully. + */ + void + u3_lord_exit(u3_lord* god_u); + + /* u3_lord_stall(): send SIGINT + */ + void + u3_lord_stall(u3_lord* god_u); + + /* u3_lord_halt(): shutdown immediately + */ + void + u3_lord_halt(u3_lord* god_u); + + /* u3_lord_save(): save a snapshot. + */ + c3_o + u3_lord_save(u3_lord* god_u); + + /* u3_lord_meld(): globally deduplicate persistent state. + */ + void + u3_lord_meld(u3_lord* god_u); + + /* u3_lord_pack(): defragment persistent state. + */ + void + u3_lord_pack(u3_lord* god_u); + + /* u3_lord_quiz(): query the serf. + */ + void + u3_lord_quiz(u3_lord* god_u, + c3_m qiz_m, + void* ptr_v, + void (*qiz_f)(c3_m, void*, u3_noun)); + + /* u3_lord_work(): attempt work. + */ + void + u3_lord_work(u3_lord* god_u, u3_ovum* egg_u, u3_noun job); + + /* u3_lord_peek(): read namespace, injecting what's missing. + */ + void + u3_lord_peek(u3_lord* god_u, u3_pico* pic_u); + + /** Filesystem (async). + **/ + /* u3_foil_folder(): load directory, blockingly. create if nonexistent. + */ + u3_dire* + u3_foil_folder(const c3_c* pax_c); // directory object, or 0 + + /** Terminal. + **/ + /* u3_term_start_spinner(): prepare spinner state. RETAIN. + */ + void + u3_term_start_spinner(u3_noun say, c3_o del_o); + + /* u3_term_stop_spinner(): reset spinner state and restore input line. + */ + void + u3_term_stop_spinner(void); + + /* u3_term_get_blew(): return window size [columns rows]. + */ + u3_noun + u3_term_get_blew(c3_l tid_l); + + /* u3_term_ef_winc(): window change. + */ + void + u3_term_ef_winc(void); + + /* u3_term_ef_ctlc(): send ^C. + */ + void + u3_term_ef_ctlc(void); + + /* u3_term_io_init(): initialize terminal I/O. + */ + u3_auto* + u3_term_io_init(u3_pier* pir_u); + + /* u3_term_io_hija(): hijack console for cooked print. + */ + FILE* + u3_term_io_hija(void); + + /* u3_term_it_log(): writes a log message + */ + void + u3_term_io_log(c3_c* line); + + /* u3_term_io_loja(): release console from cooked print. + */ + void + u3_term_io_loja(int x, FILE* f); + + /* u3_term_log_init(): initialize terminal for logging + */ + void + u3_term_log_init(void); + + /* u3_term_log_exit(): clean up terminal. + */ + void + u3_term_log_exit(void); + + /* u3_ptty_init(): initialize platform-specific tty. + */ + u3_utty* + u3_ptty_init(uv_loop_t* lup_u, const c3_c** err_c); + + + /** Ames, packet networking. + **/ + /* u3_ames_io_init(): initialize ames I/O. + */ + u3_auto* + u3_ames_io_init(u3_pier* pir_u); + + /* u3_ames_decode_lane(): destructure lane from noun + */ + u3_lane + u3_ames_decode_lane(u3_noun); + + /* u3_ames_encode_lane(): encode lane as noun + */ + u3_noun + u3_ames_encode_lane(u3_lane); + + /** mesa + **/ + u3_auto* + u3_mesa_io_init(u3_pier* pir_u); + + + /** Storage. + **/ + /* u3_unix_save(): save file undir .../.urb/put or bail. + */ + void + u3_unix_save(c3_c* pax_c, u3_atom pad); + + /* u3_unix_cane(): true iff (unix) path is canonical. + */ + c3_t + u3_unix_cane(const c3_c* pax_c); + + /* u3_unix_initial_into_card(): create initial filesystem sync card. + */ + u3_noun + u3_unix_initial_into_card(c3_c* arv_c); + + /* u3_unix_io_init(): initialize storage. + */ + u3_auto* + u3_unix_io_init(u3_pier* pir_u); + + /** behn, just a timer. + **/ + /* u3_behn_io_init(): initialize behn timer. + */ + u3_auto* + u3_behn_io_init(u3_pier* pir_u); + + /** lick, IPC communication. + **/ + /* u3_lick_io_init(): initialize loch vane. + */ + u3_auto* + u3_lick_io_init(u3_pier* pir_u); + + /** HTTP server. + **/ + /* u3_http_io_init(): initialize http I/O. + */ + u3_auto* + u3_http_io_init(u3_pier* pir_u); + + /** HTTP client. + **/ + /* u3_cttp_io_init(): initialize cttp I/O. + */ + u3_auto* + u3_cttp_io_init(u3_pier* pir_u); + + /** Control plane. + **/ + /* u3_conn_io_init(): initialize control plane I/O. + */ + u3_auto* + u3_conn_io_init(u3_pier* pir_u); + + /** fore, first events. + **/ + /* u3_hind_io_init(): initialize fore + */ + u3_auto* + u3_fore_io_init(u3_pier* pir_u); + + /** hind, defaults. + **/ + /* u3_hind_io_init(): initialize hint + */ + u3_auto* + u3_hind_io_init(u3_pier* pir_u); + + /** Stream messages. + **/ + /* u3_newt_decode(): decode a (partial) length-prefixed byte buffer + */ + c3_o + u3_newt_decode(u3_moat* mot_u, c3_y* buf_y, c3_d len_d); + + /* u3_newt_send(): write buffer to stream. + */ + void + u3_newt_send(u3_mojo* moj_u, c3_d len_d, c3_y* byt_y); + + /* u3_newt_read(): activate reading on input stream. + */ + void + u3_newt_read(u3_moat* mot_u); + + /* u3_newt_moat_info(): status info as $mass. + */ + u3_noun + u3_newt_moat_info(u3_moat* mot_u); + + /* u3_newt_moat_slog(); print status info. + */ + void + u3_newt_moat_slog(u3_moat* mot_u); + + /* u3_newt_moat_stop(); newt stop/close input stream. + */ + void + u3_newt_moat_stop(u3_moat* mot_u, u3_moor_bail bal_f); + + /* u3_newt_mojo_stop(); newt stop/close output stream. + */ + void + u3_newt_mojo_stop(u3_mojo* moj_u, u3_moor_bail bal_f); + + /** Pier scries. + **/ + /* u3_pier_peek(): read namespace. + */ + void + u3_pier_peek(u3_pier* pir_u, + u3_noun gan, + u3_noun ful, + void* ptr_v, + u3_peek_cb fun_f); + + /* u3_pier_peek_last(): read namespace, injecting ship and case. + */ + void + u3_pier_peek_last(u3_pier* pir_u, + u3_noun gan, + c3_m car_m, + u3_atom des, + u3_noun pax, + void* ptr_v, + u3_peek_cb fun_f); + + /** Pier control. + **/ + /* u3_pier_exit(): trigger a gentle shutdown. + */ + void + u3_pier_exit(u3_pier* pir_u); + + /* u3_pier_bail(): immediately shutdown.. + */ + void + u3_pier_bail(u3_pier* pir_u); + + /* u3_pier_save(): request checkpoint. + */ + c3_o + u3_pier_save(u3_pier* pir_u); + + /* u3_pier_meld(): globally deduplicate persistent state. + */ + void + u3_pier_meld(u3_pier* pir_u); + + /* u3_pier_pack(): defragment persistent state. + */ + void + u3_pier_pack(u3_pier* pir_u); + + /* u3_pier_info(): pier status info as $mass. + */ + u3_noun + u3_pier_info(u3_pier* pir_u); + + /* u3_pier_slog(): print pier status info. + */ + void + u3_pier_slog(u3_pier* pir_u); + + /* u3_pier_boot(): start the pier. + */ + u3_pier* + u3_pier_boot(c3_w wag_w, // config flags + u3_noun who, // identity + u3_noun ven, // boot event + u3_noun pil, // type-of/path-to pill + u3_noun pax, // path to pier + u3_weak fed, // extra private keys + u3_noun mor); // extra boot seq props + + /* u3_pier_spin(): (re-)activate idle handler. + */ + void + u3_pier_spin(u3_pier* pir_u); + + /* u3_pier_stay(): restart the pier. + */ + u3_pier* + u3_pier_stay(c3_w wag_w, u3_noun pax, u3_weak ryf); + + /* u3_pier_tank(): dump single tank. + */ + void + u3_pier_tank(c3_l tab_l, c3_w pri_w, u3_noun tac); + + /* u3_pier_punt(): dump tank list. + */ + void + u3_pier_punt(c3_l tab_l, u3_noun tac); + + /* u3_pier_punt_goof(): dump a [mote tang] crash report. + */ + void + u3_pier_punt_goof(const c3_c* cap_c, u3_noun dud); + + /* u3_pier_punt_ovum(): print ovum details. + */ + void + u3_pier_punt_ovum(const c3_c* cap_c, u3_noun wir, u3_noun tag); + + /* u3_pier_sway(): print trace. + */ + void + u3_pier_sway(c3_l tab_l, u3_noun tax); + + /* u3_pier_mark(): mark all Loom allocations in all u3_pier structs. + */ + c3_w + u3_pier_mark(FILE* fil_u); + + /* u3_pier_mase(): construct a $mass leaf. + */ + u3_noun + u3_pier_mase(c3_c* cod_c, u3_noun dat); + + /* u3_pier_mass(): construct a $mass branch with noun/list. + */ + u3_noun + u3_pier_mass(u3_atom cod, u3_noun lit); + + /* u3_dawn_come(): mine a comet + */ + u3_noun + u3_dawn_come(void); + + /* u3_dawn_vent(): validated boot event + */ + u3_noun + u3_dawn_vent(u3_noun ship, u3_noun seed, u3_noun* rift); + + /* u3_king_commence(): start the daemon + */ + void + u3_king_commence(); + + /* u3_king_stub(): get the One Pier for unreconstructed code. + */ + u3_pier* + u3_king_stub(void); + + /* u3_king_slog(): print status info. + */ + void + u3_king_slog(void); + + /* u3_king_dock(): copy binary into pier on boot. + */ + void + u3_king_dock(c3_c* pac_c); + + /* u3_king_done(): all piers closed + */ + void + u3_king_done(void); + + /* u3_king_exit(): shutdown gracefully + */ + void + u3_king_exit(void); + + /* u3_king_bail(): immediately shutdown. + */ + void + u3_king_bail(void); + + /* u3_king_grab(): gc the daemon + */ + void + u3_king_grab(void* ptr_v); + + /* u3_king_next(): get next vere version string, if it exists. + ** return: 0 is success, -1 is no-op (same version), -2 is error + */ + c3_i + u3_king_next(c3_c* pac_c, c3_c** out_c); + + /* u3_king_vere(): download binary as specified. + */ + c3_i + u3_king_vere(c3_c* pac_c, // pace + c3_c* ver_c, // version + c3_c* arc_c, // architecture + c3_c* dir_c, // output directory + c3_t lin_t); // link to $pier/.run + + /* u3_daemon_init(): platform-specific daemon mode initialization. + */ + void + u3_daemon_init(); + +#if defined(U3_OS_osx) + /* darwin_register_mach_exception_handler(): make lldb work + */ + void + darwin_register_mach_exception_handler(); +#endif + + /* king_curl_alloc(): allocate a response buffer for curl + */ + size_t + king_curl_alloc(void* dat_v, size_t uni_t, size_t mem_t, void* buf_v); + + /* king_curl_bytes(): HTTP GET url_c, produce response body bytes. + */ + c3_i + king_curl_bytes(c3_c* url_c, c3_w* len_w, c3_y** hun_y, c3_t veb_t, c3_y tri_y); + + /* u3_write_fd(): retry interrupts, continue partial writes, assert errors. + */ + void + u3_write_fd(c3_i fid_i, const void* buf_v, size_t len_i); + + c3_w + u3_readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result); + + /* u3_melt_all(): canonicalize persistent state + */ + c3_w + u3_melt_all(FILE*); + + /* u3_meld_all(): canonicalize persistent nouns and compact state. + */ + c3_w + u3_meld_all(FILE*); + +#endif /* ifndef U3_VERE_H */ diff --git a/vere/pkg/vere/ward.c b/vere/pkg/vere/ward.c new file mode 100644 index 0000000..696ab6a --- /dev/null +++ b/vere/pkg/vere/ward.c @@ -0,0 +1,209 @@ +/// @file + +#include "vere.h" + +#include "noun.h" + +// ward: lifecycle management for common structures +// +// should contain anything allocated in multiple modules, +// or allocated in one and freed in another +// + +/* u3_dent_init(): initialize file record. +*/ +u3_dent* +u3_dent_init(const c3_c* nam_c) +{ + u3_dent *det_u = c3_malloc(sizeof(*det_u)); + det_u->nex_u = 0; + det_u->nam_c = c3_malloc(1 + strlen(nam_c)); + strcpy(det_u->nam_c, nam_c); + + return det_u; +} + +/* u3_dent_free(): dispose file record. +*/ +void +u3_dent_free(u3_dent *det_u) +{ + c3_free(det_u->nam_c); + c3_free(det_u); +} + +/* u3_dire_init(): initialize directory record. +*/ +u3_dire* +u3_dire_init(const c3_c* pax_c) +{ + u3_dire *dir_u = c3_malloc(sizeof *dir_u); + dir_u->all_u = 0; + dir_u->dil_u = 0; + dir_u->pax_c = c3_malloc(1 + strlen(pax_c)); + strcpy(dir_u->pax_c, pax_c); + + return dir_u; +} + +/* u3_dire_free(): dispose directory record. +*/ +void +u3_dire_free(u3_dire *dir_u) +{ + { + u3_dent *det_u = dir_u->all_u; + u3_dent *nex_u; + + while ( det_u ) { + nex_u = det_u->nex_u; + u3_dent_free(det_u); + det_u = nex_u; + } + } + + { + u3_dent *det_u = dir_u->dil_u; + u3_dent *nex_u; + + while ( det_u ) { + nex_u = det_u->nex_u; + u3_dent_free(det_u); + det_u = nex_u; + } + } + + c3_free(dir_u->pax_c); + c3_free(dir_u); +} + +/* u3_ovum_init: initialize an unlinked potential event +*/ +u3_ovum* +u3_ovum_init(c3_w mil_w, + u3_noun tar, + u3_noun wir, + u3_noun cad) +{ + u3_ovum* egg_u = c3_malloc(sizeof(*egg_u)); + egg_u->car_u = 0; + egg_u->try_w = 0; + egg_u->ptr_v = 0; + egg_u->mil_w = mil_w; + egg_u->tar = tar; + egg_u->wir = wir; + egg_u->cad = cad; + + egg_u->pre_u = egg_u->nex_u = 0; + + egg_u->cb_u.news_f = 0; + egg_u->cb_u.bail_f = 0; + + // spinner defaults + // + egg_u->pin_u.lab = u3k(u3h(wir)); + egg_u->pin_u.del_o = c3y; + + return egg_u; +} + +/* u3_ovum_free: dispose an unlinked potential event +*/ +void +u3_ovum_free(u3_ovum *egg_u) +{ + u3z(egg_u->pin_u.lab); + u3z(egg_u->tar); + u3z(egg_u->wir); + u3z(egg_u->cad); + + c3_free(egg_u); +} + +/* u3_pico_init(): initialize a scry request struct +*/ +u3_pico* +u3_pico_init() +{ + u3_pico* pic_u = c3_calloc(sizeof(*pic_u)); + return pic_u; +} + +/* u3_pico_free(): dispose a scry request struct +*/ +void +u3_pico_free(u3_pico* pic_u) +{ + u3z(pic_u->gan); + + switch ( pic_u->typ_e ) { + default: u3_assert(0); + + case u3_pico_full: { + u3z(pic_u->ful); + } break; + + case u3_pico_once: { + u3z(pic_u->las_u.des); + u3z(pic_u->las_u.pax); + } break; + } + + c3_free(pic_u); +} + +/* u3_mcut_char(): measure/cut character. +*/ +c3_w +u3_mcut_char(c3_c* buf_c, c3_w len_w, c3_c chr_c) +{ + if ( buf_c ) { + buf_c[len_w] = chr_c; + } + return len_w + 1; +} + +/* u3_mcut_cord(): measure/cut cord. +*/ +c3_w +u3_mcut_cord(c3_c* buf_c, c3_w len_w, u3_noun san) +{ + c3_w ten_w = u3r_met(3, san); + + if ( buf_c ) { + u3r_bytes(0, ten_w, (c3_y *)(buf_c + len_w), san); + } + u3z(san); + return (len_w + ten_w); +} + +/* u3_mcut_path(): measure/cut cord list. +*/ +c3_w +u3_mcut_path(c3_c* buf_c, c3_w len_w, c3_c sep_c, u3_noun pax) +{ + u3_noun axp = pax; + + while ( u3_nul != axp ) { + u3_noun h_axp = u3h(axp); + + len_w = u3_mcut_cord(buf_c, len_w, u3k(h_axp)); + axp = u3t(axp); + + if ( u3_nul != axp ) { + len_w = u3_mcut_char(buf_c, len_w, sep_c); + } + } + u3z(pax); + return len_w; +} + +/* u3_mcut_host(): measure/cut host. +*/ +c3_w +u3_mcut_host(c3_c* buf_c, c3_w len_w, u3_noun hot) +{ + len_w = u3_mcut_path(buf_c, len_w, '.', u3kb_flop(u3k(hot))); + u3z(hot); + return len_w; +} diff --git a/vere/pkg/vere/xmas_tests.c b/vere/pkg/vere/xmas_tests.c new file mode 100644 index 0000000..58417b9 --- /dev/null +++ b/vere/pkg/vere/xmas_tests.c @@ -0,0 +1,59 @@ +/// @file + +#include "./io/xmas.c" + +/* _setup(): prepare for tests. +*/ +static void +_setup(void) +{ + u3m_init(1 << 22); + u3m_pave(c3y); +} + +/* _test_ames(): spot check ames helpers +*/ +static void +_test_xmas(void) +{ + u3_lane lan_u; + lan_u.pip_w = 0x7f000001; + lan_u.por_s = 12345; + + u3_noun lan = u3_ames_encode_lane(lan_u); + u3_lane nal_u = u3_ames_decode_lane(u3k(lan)); + u3_lane nal_u2 = u3_ames_decode_lane(lan); + + if ( !(lan_u.pip_w == nal_u.pip_w && lan_u.por_s == nal_u.por_s) ) { + fprintf(stderr, "ames: lane fail (a)\r\n"); + fprintf(stderr, "pip: %d, por: %d\r\n", nal_u.pip_w, nal_u.por_s); + exit(1); + } + + + + u3_xmas_name pok_u = (u3_xmas_name) { + .her_d = {43, 0}, + .pat_c = "/foo/bar", + .pat_s = 8, + .boq_s = 13, + .fra_s = 1, + }; +} + +/* main(): run all test cases. +*/ +int +main(int argc, char* argv[]) +{ + _setup(); + + _test_xmas(); + + // GC + // + u3m_grab(u3_none); + + fprintf(stderr, "xmas okeedokee\n"); + return 0; +} diff --git a/vere/test-fake-ship.sh b/vere/test-fake-ship.sh new file mode 100755 index 0000000..672196d --- /dev/null +++ b/vere/test-fake-ship.sh @@ -0,0 +1,175 @@ +#!/bin/bash + +set -x + +urbit_binary=$GITHUB_WORKSPACE/$URBIT_BINARY + +$urbit_binary --lite-boot --daemon --gc ./pier 2> urbit-output + +port=$(grep loopback ./pier/.http.ports | awk -F ' ' '{print $1}') + +lensd() { + curl -s \ + --data "{\"source\":{\"dojo\":\"$1\"},\"sink\":{\"stdout\":null}}" \ + "http://localhost:$port" | xargs printf %s | sed 's/\\n/\n/g' +} + +lensa() { + curl -s \ + --data "{\"source\":{\"dojo\":\"$2\"},\"sink\":{\"app\":\"$1\"}}" \ + "http://localhost:$port" | xargs printf %s | sed 's/\\n/\n/g' +} + +tail -F urbit-output >&2 & + +tailproc=$! + +cleanup () { + kill $(cat ./pier/.vere.lock) || true + kill "$tailproc" 2>/dev/null || true + + set +x +} + +trap cleanup EXIT + +# print the arvo version +# +lensd '+vats %base' + +# measure initial memory usage +# +lensd '~& ~ ~& %init-mass-start ~' +lensa hood '+hood/mass' +lensd '~& ~ ~& %init-mass-end ~' + +# run the unit tests +# +lensd '~& ~ ~& %test-unit-start ~' +lensd '-test %/tests ~' +lensd '~& ~ ~& %test-unit-end ~' + +# use the :test app to build all agents, generators, and marks +# +lensa hood '+hood/start %test' + +lensd '~& ~ ~& %test-agents-start ~' +lensa test '%agents' +lensd '~& ~ ~& %test-agents-end ~' + +lensd '~& ~ ~& %test-generators-start ~' +lensa test '%generators' +lensd '~& ~ ~& %test-generators-end ~' + +lensd '~& ~ ~& %test-marks-start ~' +lensa test '%marks' +lensd '~& ~ ~& %test-marks-end ~' + +# measure memory usage post tests +# +lensd '~& ~ ~& %test-mass-start ~' +lensa hood '+hood/mass' +lensd '~& ~ ~& %test-mass-end ~' + +# defragment the loom +# +lensd '~& ~ ~& %pack-start ~' +lensa hood '+hood/pack' +lensd '~& ~ ~& %pack-end ~' + +# reclaim space within arvo +# +lensd '~& ~ ~& %trim-start ~' +lensa hood '+hood/trim' +lensd '~& ~ ~& %trim-end ~' + +# measure memory usage pre |meld +# +lensd '~& ~ ~& %trim-mass-start ~' +lensa hood '+hood/mass' +lensd '~& ~ ~& %trim-mass-end ~' + +# globally deduplicate +# +lensd '~& ~ ~& %meld-start ~' +lensa hood '+hood/meld' +lensd '~& ~ ~& %meld-end ~' + +# measure memory usage post |meld +# +lensd '~& ~ ~& %meld-mass-start ~' +lensa hood '+hood/mass' +lensd '~& ~ ~& %meld-mass-end ~' + +lensa hood '+hood/exit' + +cleanup + +# Collect output +cp urbit-output test-output-unit +cp urbit-output test-output-agents +cp urbit-output test-output-generators +cp urbit-output test-output-marks + +if [[ $URBIT_BINARY == *"macos"* ]]; then + sed -i '' '0,/test-unit-start/d' test-output-unit + sed -i '' '/test-unit-end/,$d' test-output-unit + + sed -i '' '0,/test-agents-start/d' test-output-agents + sed -i '' '/test-agents-end/,$d' test-output-agents + + sed -i '' '0,/test-generators-start/d' test-output-generators + sed -i '' '/test-generators-end/,$d' test-output-generators + + sed -i '' '0,/test-marks-start/d' test-output-marks + sed -i '' '/test-marks-end/,$d' test-output-marks +else + sed -i '0,/test-unit-start/d' test-output-unit + sed -i '/test-unit-end/,$d' test-output-unit + + sed -i '0,/test-agents-start/d' test-output-agents + sed -i '/test-agents-end/,$d' test-output-agents + + sed -i '0,/test-generators-start/d' test-output-generators + sed -i '/test-generators-end/,$d' test-output-generators + + sed -i '0,/test-marks-start/d' test-output-marks + sed -i '/test-marks-end/,$d' test-output-marks +fi + +OUTDIR="$(pwd)/test-fake-ship-output" +mkdir -p $OUTDIR +cp test-output-* $OUTDIR + +set +x + +hdr () { + echo =====$(sed 's/./=/g' <<< "$1")===== + echo ==== $1 ==== + echo =====$(sed 's/./=/g' <<< "$1")===== +} + +for f in $(find "$OUTDIR" -type f); do + hdr "$(basename $f)" + cat "$f" +done + +fail=0 + +for f in $(find "$OUTDIR" -type f); do + if egrep "((FAILED|CRASHED)|warn:) " $f >/dev/null; then + if [[ $fail -eq 0 ]]; then + hdr "Test Failures" + fi + + echo "ERROR Test failure in $(basename $f)" + + ((fail++)) + fi +done + +if [[ $fail -eq 0 ]]; then + hdr "Success" +fi + +exit "$fail" -- cgit v1.2.3